vst3sdk-3.7.10.14+~4.13.3/000077500000000000000000000000001461511344300143505ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/CMakeLists.txt000066400000000000000000000153101461511344300171100ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.5.0) project(smtg_public_sdk VERSION 1.0.0) #--sdk common---------------- add_library(sdk_common STATIC source/common/commoniids.cpp source/common/openurl.cpp source/common/openurl.h source/common/systemclipboard.h source/common/systemclipboard_linux.cpp source/common/systemclipboard_win32.cpp source/common/threadchecker.h source/common/threadchecker_linux.cpp source/common/threadchecker_win32.cpp ) if(VST_SDK) target_sources(sdk_common PRIVATE source/common/readfile.cpp source/common/readfile.h source/vst/vstpresetfile.cpp source/vst/vstpresetfile.h ) else() target_sources(sdk_common PRIVATE source/common/pvaluecontainer.cpp source/common/pvaluecontainer.h source/common/pattributes.cpp source/common/pattributes.h ) endif(VST_SDK) if(SMTG_MAC) target_sources(sdk_common PRIVATE source/common/threadchecker_mac.mm source/common/systemclipboard_mac.mm ) endif(SMTG_MAC) # add dependencies target_link_libraries(sdk_common PUBLIC base pluginterfaces ) target_include_directories(sdk_common PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/.. ) smtg_target_setup_universal_binary(sdk_common) if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) get_target_property(sdk_common_SOURCES sdk_common SOURCES) add_library(sdk_common_ios STATIC ${sdk_common_SOURCES} ) smtg_target_set_platform_ios(sdk_common_ios) set_target_properties(sdk_common_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) target_link_libraries(sdk_common_ios PUBLIC base_ios pluginterfaces_ios ) target_compile_features(sdk_common_ios PUBLIC cxx_std_17) endif() #--sdk plugin---------------- add_library(sdk STATIC source/common/pluginview.cpp source/common/pluginview.h source/main/pluginfactory.cpp source/main/pluginfactory.h source/main/pluginfactory_constexpr.h ) # Additional sources for VST3 SDK usage if(VST_SDK) target_sources(sdk PRIVATE source/main/moduleinit.cpp source/main/moduleinit.h source/vst/utility/alignedalloc.h source/vst/utility/audiobuffers.h source/vst/utility/dataexchange.cpp source/vst/utility/dataexchange.h source/vst/utility/memoryibstream.h source/vst/utility/processcontextrequirements.h source/vst/utility/processdataslicer.h source/vst/utility/ringbuffer.h source/vst/utility/rttransfer.h source/vst/utility/sampleaccurate.h source/vst/utility/stringconvert.cpp source/vst/utility/stringconvert.h source/vst/utility/systemtime.h source/vst/utility/systemtime.cpp source/vst/utility/testing.cpp source/vst/utility/testing.h source/vst/utility/vst2persistence.h source/vst/utility/vst2persistence.cpp source/vst/vstaudioeffect.cpp source/vst/vstaudioeffect.h source/vst/vstbus.cpp source/vst/vstbus.h source/vst/vstbypassprocessor.h source/vst/vstcomponent.cpp source/vst/vstcomponent.h source/vst/vstcomponentbase.cpp source/vst/vstcomponentbase.h source/vst/vsteditcontroller.cpp source/vst/vsteditcontroller.h source/vst/vsteventshelper.h source/vst/vsthelpers.h source/vst/vstinitiids.cpp source/vst/vstnoteexpressiontypes.cpp source/vst/vstnoteexpressiontypes.h source/vst/vstparameters.cpp source/vst/vstparameters.h source/vst/vstrepresentation.cpp source/vst/vstrepresentation.h ) endif(VST_SDK) target_compile_features(sdk PUBLIC cxx_std_17 ) # add dependencies target_link_libraries(sdk PUBLIC sdk_common ) target_include_directories(sdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/.. ) smtg_target_setup_universal_binary(sdk) get_target_property(sdk_SOURCES sdk SOURCES) # iOS target if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) add_library(sdk_ios STATIC ${sdk_SOURCES} ) smtg_target_set_platform_ios(sdk_ios) set_target_properties(sdk_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) target_link_libraries(sdk_ios PUBLIC sdk_common_ios ) target_compile_features(sdk_ios PUBLIC cxx_std_17) endif(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) #--for hosting---------------- if(VST_SDK) add_library(sdk_hosting STATIC source/vst/hosting/connectionproxy.cpp source/vst/hosting/connectionproxy.h source/vst/hosting/eventlist.cpp source/vst/hosting/eventlist.h source/vst/hosting/hostclasses.cpp source/vst/hosting/hostclasses.h source/vst/hosting/module.cpp source/vst/hosting/module.h source/vst/hosting/parameterchanges.cpp source/vst/hosting/parameterchanges.h source/vst/hosting/pluginterfacesupport.cpp source/vst/hosting/pluginterfacesupport.h source/vst/hosting/processdata.cpp source/vst/hosting/processdata.h source/vst/utility/optional.h source/vst/utility/stringconvert.cpp source/vst/utility/stringconvert.h source/vst/utility/uid.h source/vst/utility/versionparser.h source/vst/vstinitiids.cpp ) # add dependencies target_link_libraries(sdk_hosting PUBLIC sdk_common ) target_include_directories(sdk_hosting PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/.. ) smtg_target_setup_universal_binary(sdk_hosting) # iOS target for hosting if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) get_target_property(sdk_hosting_SOURCES sdk_hosting SOURCES) add_library(sdk_hosting_ios STATIC ${sdk_hosting_SOURCES} ) smtg_target_set_platform_ios(sdk_hosting_ios) set_target_properties(sdk_hosting_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) target_link_libraries(sdk_hosting_ios PUBLIC sdk_common_ios ) target_compile_features(sdk_hosting_ios PUBLIC cxx_std_17) target_include_directories(sdk_hosting_ios PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/.. ) endif(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) endif(VST_SDK) vst3sdk-3.7.10.14+~4.13.3/LICENSE.txt000066400000000000000000000035001461511344300161710ustar00rootroot00000000000000//----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- vst3sdk-3.7.10.14+~4.13.3/README.md000066400000000000000000000007351461511344300156340ustar00rootroot00000000000000# Welcome to VST 3 SDK public_sdk Here are located: - helper classes implementing **VST 3** Interfaces - samples of **VST 3** Hosting and **VST 3** plug-ins - **AAX** Wrapper - **AU** Wrapper - **AUv3** Wrapper - **VST 2** Wrapper - InterAppAudio ## License & Usage guidelines More details are found at [VST 3 SDK public_sdk License](https://forums.steinberg.net/t/vst-3-sdk-public-sdk-license/695592) ---- Return to [VST 3 SDK](https://github.com/steinbergmedia/vst3sdk) vst3sdk-3.7.10.14+~4.13.3/samples/000077500000000000000000000000001461511344300160145ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/000077500000000000000000000000001461511344300203015ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/CMakeLists.txt000066400000000000000000000001451461511344300230410ustar00rootroot00000000000000 if(ANDROID) return() endif(ANDROID) include(SMTG_AddSubDirectories) smtg_add_subdirectories() vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/000077500000000000000000000000001461511344300223005ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/CMakeLists.txt000066400000000000000000000104251461511344300250420ustar00rootroot00000000000000 if(SMTG_ENABLE_VST3_HOSTING_EXAMPLES) include(SMTG_FindJack) if(${LIBJACK_FOUND}) set(audiohost_sources "${SDK_ROOT}/public.sdk/samples/vst-hosting/editorhost/source/platform/iapplication.h" "${SDK_ROOT}/public.sdk/source/vst/hosting/connectionproxy.cpp" "${SDK_ROOT}/public.sdk/source/vst/hosting/connectionproxy.h" "${SDK_ROOT}/public.sdk/source/vst/hosting/eventlist.cpp" "${SDK_ROOT}/public.sdk/source/vst/hosting/eventlist.h" "${SDK_ROOT}/public.sdk/source/vst/hosting/hostclasses.cpp" "${SDK_ROOT}/public.sdk/source/vst/hosting/hostclasses.h" "${SDK_ROOT}/public.sdk/source/vst/hosting/module.cpp" "${SDK_ROOT}/public.sdk/source/vst/hosting/module.h" "${SDK_ROOT}/public.sdk/source/vst/hosting/parameterchanges.cpp" "${SDK_ROOT}/public.sdk/source/vst/hosting/parameterchanges.h" "${SDK_ROOT}/public.sdk/source/vst/hosting/pluginterfacesupport.cpp" "${SDK_ROOT}/public.sdk/source/vst/hosting/pluginterfacesupport.h" "${SDK_ROOT}/public.sdk/source/vst/hosting/plugprovider.cpp" "${SDK_ROOT}/public.sdk/source/vst/hosting/plugprovider.h" "${SDK_ROOT}/public.sdk/source/vst/hosting/processdata.cpp" "${SDK_ROOT}/public.sdk/source/vst/hosting/processdata.h" "${SDK_ROOT}/public.sdk/source/vst/utility/optional.h" "${SDK_ROOT}/public.sdk/source/vst/utility/stringconvert.cpp" "${SDK_ROOT}/public.sdk/source/vst/utility/stringconvert.h" "${SDK_ROOT}/public.sdk/source/vst/utility/uid.h" "${SDK_ROOT}/public.sdk/source/vst/vstinitiids.cpp" source/audiohost.cpp source/audiohost.h source/media/audioclient.cpp source/media/audioclient.h source/media/imediaserver.h source/media/iparameterclient.h source/media/jack/jackclient.cpp source/media/miditovst.h source/platform/appinit.h source/usediids.cpp ) if(SMTG_MAC) set(audiohost_sources ${audiohost_sources} "${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm" ) set_source_files_properties( "${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm" PROPERTIES COMPILE_FLAGS "-fobjc-arc" ) set(audiohost_PLATFORM_LIBS "-framework CoreFoundation") get_filename_component(InfoPlistFile "resource/Info.plist" ABSOLUTE) set(APP_PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST ${InfoPlistFile} ) elseif(SMTG_LINUX) set(audiohost_sources ${audiohost_sources} "${SDK_ROOT}/public.sdk/source/vst/hosting/module_linux.cpp" ) set(audiohost_PLATFORM_LIBS) set(APP_PROPERTIES) elseif(SMTG_WIN) set(audiohost_sources ${audiohost_sources} "${SDK_ROOT}/public.sdk/source/vst/hosting/module_win32.cpp" ) set(audiohost_PLATFORM_LIBS) if(MSVC) set(APP_PROPERTIES LINK_FLAGS "/SUBSYSTEM:console" ) endif(MSVC) endif(SMTG_MAC) set(target audiohost) add_executable(${target} ${audiohost_sources}) set_target_properties(${target} PROPERTIES ${SDK_IDE_HOSTING_EXAMPLES_FOLDER} ) target_compile_features(${target} PUBLIC cxx_std_17 ) target_link_libraries(${target} PRIVATE base sdk ${audiohost_PLATFORM_LIBS} ${LIBJACK_LIBRARY} ) target_include_directories(${target} PRIVATE ${LIBJACK_INCLUDE_DIR} ) if (APP_PROPERTIES) set_target_properties(${target} PROPERTIES ${APP_PROPERTIES} ) endif(APP_PROPERTIES) else() message(STATUS "[SMTG] LIBJACK_FOUND is not set.") endif(${LIBJACK_FOUND}) endif(SMTG_ENABLE_VST3_HOSTING_EXAMPLES) vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/resource/000077500000000000000000000000001461511344300241275ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/resource/Info.plist000066400000000000000000000031071461511344300261000ustar00rootroot00000000000000 CFBundleDevelopmentRegion en CFBundleExecutable audiohost CFBundleIdentifier com.steinberg.vstsdk.audiohost CFBundleInfoDictionaryVersion 6.0 CFBundleName audiohost CFBundlePackageType BNDL CFBundleShortVersionString 1.0.0 CFBundleVersion 1 NSHumanReadableCopyright Copyright © 2024 Steinberg. All rights reserved. NSPrincipalClass NSApplication CFBundleDocumentTypes CFBundleTypeExtensions vst3 CFBundleTypeName VST3 Plug-In CFBundleTypeRole Audio UTImportedTypeDeclarations UTTypeConformsTo public.data public.content UTTypeDescription VST3 Plug-In UTTypeIdentifier com.steinberg.vst3.plugin UTTypeTagSpecification public.filename-extension vst3 vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/000077500000000000000000000000001461511344300236005ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/audiohost.cpp000066400000000000000000000135351461511344300263120ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/audiohost.cpp // Created by : Steinberg 09.2016 // Description : Audio Host Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/samples/vst-hosting/audiohost/source/audiohost.h" #include "public.sdk/samples/vst-hosting/audiohost/source/platform/appinit.h" #include "public.sdk/source/vst/hosting/hostclasses.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "base/source/fcommandline.h" #include "pluginterfaces/base/funknown.h" #include "pluginterfaces/base/fstrdefs.h" #include "pluginterfaces/gui/iplugview.h" #include "pluginterfaces/gui/iplugviewcontentscalesupport.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/vsttypes.h" #include #include #if WIN32 #include "windows.h" #include #endif //------------------------------------------------------------------------ namespace Steinberg { FUnknown* gStandardPluginContext = new Vst::HostApplication (); namespace Vst { namespace AudioHost { static AudioHost::AppInit gInit (std::make_unique ()); //------------------------------------------------------------------------ App::~App () noexcept { } //------------------------------------------------------------------------ void App::startAudioClient (const std::string& path, VST3::Optional effectID, uint32 flags) { std::string error; module = VST3::Hosting::Module::create (path, error); if (!module) { std::string reason = "Could not create Module for file:"; reason += path; reason += "\nError: "; reason += error; // EditorHost::IPlatform::instance ().kill (-1, reason); return; } auto factory = module->getFactory (); for (auto& classInfo : factory.classInfos ()) { if (classInfo.category () == kVstAudioEffectClass) { if (effectID) { if (*effectID != classInfo.ID ()) continue; } plugProvider = owned (new PlugProvider (factory, classInfo, true)); break; } } if (!plugProvider) { std::string error; if (effectID) error = "No VST3 Audio Module Class with UID " + effectID->toString () + " found in file "; else error = "No VST3 Audio Module Class found in file "; error += path; // EditorHost::IPlatform::instance ().kill (-1, error); return; } OPtr component = plugProvider->getComponent (); OPtr controller = plugProvider->getController (); FUnknownPtr midiMapping (controller); //! TODO: Query the plugProvider for a proper name which gets displayed in JACK. vst3Processor = AudioClient::create ("VST 3 SDK", component, midiMapping); } //------------------------------------------------------------------------ void App::init (const std::vector& cmdArgs) { if (cmdArgs.empty ()) { /*auto helpText = R"( usage: AudioHost pluginPath )"; */ return; } VST3::Optional uid; uint32 flags {}; startAudioClient (cmdArgs.back (), std::move (uid), flags); } //------------------------------------------------------------------------ void App::terminate () { } //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg //------------------------------------------------------------------------ #if WIN32 int wmain (int argc, wchar_t* argv[]) { std::vector cmdArgs; for (int i = 1; i < argc; ++i) cmdArgs.push_back (VST3::StringConvert::convert (Steinberg::wscast (argv[i]))); Steinberg::Vst::AudioHost::gInit.app->init (cmdArgs); std::cout << "Press to continue . . ."; std::getchar (); return 0; } #else int main (int argc, char* argv[]) { std::vector cmdArgs; for (int i = 1; i < argc; ++i) cmdArgs.push_back (argv[i]); Steinberg::Vst::AudioHost::gInit.app->init (cmdArgs); std::cout << "Press to continue . . ."; std::getchar (); return 0; } #endif vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/audiohost.h000066400000000000000000000063351461511344300257570ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/audiohost.h // Created by : Steinberg 09.2016 // Description : Audio Host Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iapplication.h" #include "public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.h" #include "public.sdk/source/vst/hosting/module.h" #include "public.sdk/source/vst/hosting/plugprovider.h" #include "public.sdk/source/vst/utility/optional.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace AudioHost { //------------------------------------------------------------------------ class App : public EditorHost::IApplication { public: ~App () noexcept override; void init (const std::vector& cmdArgs) override; void terminate () override; private: enum OpenFlags { }; void startAudioClient (const std::string& path, VST3::Optional effectID, uint32 flags); VST3::Hosting::Module::Ptr module {nullptr}; IPtr plugProvider {nullptr}; AudioClientPtr vst3Processor; }; //------------------------------------------------------------------------ } // AudioHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/media/000077500000000000000000000000001461511344300246575ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/media/audioclient.cpp000066400000000000000000000331021461511344300276620ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.cpp // Created by : Steinberg 09.2016 // Description : Audio Host Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "audioclient.h" #include "miditovst.h" #include "public.sdk/source/vst/hosting/eventlist.h" #include "public.sdk/source/vst/hosting/parameterchanges.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // From Vst2Wrapper static MidiCCMapping initMidiCtrlerAssignment (IComponent* component, IMidiMapping* midiMapping) { MidiCCMapping midiCCMapping {}; if (!midiMapping || !component) return midiCCMapping; int32 busses = std::min (component->getBusCount (kEvent, kInput), kMaxMidiMappingBusses); if (midiCCMapping[0][0].empty ()) { for (int32 b = 0; b < busses; b++) for (int32 i = 0; i < kMaxMidiChannels; i++) midiCCMapping[b][i].resize (Vst::kCountCtrlNumber); } ParamID paramID; for (int32 b = 0; b < busses; b++) { for (int16 ch = 0; ch < kMaxMidiChannels; ch++) { for (int32 i = 0; i < Vst::kCountCtrlNumber; i++) { paramID = kNoParamId; if (midiMapping->getMidiControllerAssignment (b, ch, (CtrlNumber)i, paramID) == kResultTrue) { // TODO check if tag is associated to a parameter midiCCMapping[b][ch][i] = paramID; } else midiCCMapping[b][ch][i] = kNoParamId; } } } return midiCCMapping; } //------------------------------------------------------------------------ static void assignBusBuffers (const IAudioClient::Buffers& buffers, HostProcessData& processData, bool unassign = false) { // Set outputs auto bufferIndex = 0; for (auto busIndex = 0; busIndex < processData.numOutputs; busIndex++) { auto channelCount = processData.outputs[busIndex].numChannels; for (auto chanIndex = 0; chanIndex < channelCount; chanIndex++) { if (bufferIndex < buffers.numOutputs) { processData.setChannelBuffer (BusDirections::kOutput, busIndex, chanIndex, unassign ? nullptr : buffers.outputs[bufferIndex]); bufferIndex++; } } } // Set inputs bufferIndex = 0; for (auto busIndex = 0; busIndex < processData.numInputs; busIndex++) { auto channelCount = processData.inputs[busIndex].numChannels; for (auto chanIndex = 0; chanIndex < channelCount; chanIndex++) { if (bufferIndex < buffers.numInputs) { processData.setChannelBuffer (BusDirections::kInput, busIndex, chanIndex, unassign ? nullptr : buffers.inputs[bufferIndex]); bufferIndex++; } } } } //------------------------------------------------------------------------ static void unassignBusBuffers (const IAudioClient::Buffers& buffers, HostProcessData& processData) { assignBusBuffers (buffers, processData, true); } //------------------------------------------------------------------------ // Vst3Processor //------------------------------------------------------------------------ AudioClient::AudioClient () { } //------------------------------------------------------------------------ AudioClient::~AudioClient () { terminate (); } //------------------------------------------------------------------------ AudioClientPtr AudioClient::create (const Name& name, IComponent* component, IMidiMapping* midiMapping) { auto newProcessor = std::make_shared (); newProcessor->initialize (name, component, midiMapping); return newProcessor; } //------------------------------------------------------------------------ void AudioClient::initProcessContext () { processContext = {}; processContext.tempo = 120; } //------------------------------------------------------------------------ void AudioClient::createLocalMediaServer (const Name& name) { mediaServer = createMediaServer (name); mediaServer->registerAudioClient (this); mediaServer->registerMidiClient (this); } //------------------------------------------------------------------------ bool AudioClient::initialize (const Name& name, IComponent* _component, IMidiMapping* midiMapping) { component = _component; if (!component) return false; initProcessData (); paramTransferrer.setMaxParameters (1000); if (midiMapping) midiCCMapping = initMidiCtrlerAssignment (component, midiMapping); createLocalMediaServer (name); return true; } //------------------------------------------------------------------------ void AudioClient::terminate () { mediaServer = nullptr; FUnknownPtr processor = component; if (!processor) return; processor->setProcessing (false); component->setActive (false); } //------------------------------------------------------------------------ void AudioClient::initProcessData () { // processData.prepare will be done in setBlockSize processData.inputEvents = &eventList; processData.inputParameterChanges = &inputParameterChanges; processData.processContext = &processContext; initProcessContext (); } //------------------------------------------------------------------------ IMidiClient::IOSetup AudioClient::getMidiIOSetup () const { IMidiClient::IOSetup iosetup; auto count = component->getBusCount (MediaTypes::kEvent, BusDirections::kInput); for (int32_t i = 0; i < count; i++) { BusInfo info; if (component->getBusInfo (MediaTypes::kEvent, BusDirections::kInput, i, info) != kResultOk) continue; auto busName = VST3::StringConvert::convert (info.name, 128); iosetup.inputs.push_back (busName); } count = component->getBusCount (MediaTypes::kEvent, BusDirections::kOutput); for (int32_t i = 0; i < count; i++) { BusInfo info; if (component->getBusInfo (MediaTypes::kEvent, BusDirections::kOutput, i, info) != kResultOk) continue; auto busName = VST3::StringConvert::convert (info.name, 128); iosetup.outputs.push_back (busName); } return iosetup; } //------------------------------------------------------------------------ IAudioClient::IOSetup AudioClient::getIOSetup () const { IAudioClient::IOSetup iosetup; auto count = component->getBusCount (MediaTypes::kAudio, BusDirections::kOutput); for (int32_t i = 0; i < count; i++) { BusInfo info; if (component->getBusInfo (MediaTypes::kAudio, BusDirections::kOutput, i, info) != kResultOk) continue; for (int32_t j = 0; j < info.channelCount; j++) { auto channelName = VST3::StringConvert::convert (info.name, 128); iosetup.outputs.push_back (channelName + " " + std::to_string (j)); } } count = component->getBusCount (MediaTypes::kAudio, BusDirections::kInput); for (int32_t i = 0; i < count; i++) { BusInfo info; if (component->getBusInfo (MediaTypes::kAudio, BusDirections::kInput, i, info) != kResultOk) continue; for (int32_t j = 0; j < info.channelCount; j++) { auto channelName = VST3::StringConvert::convert (info.name, 128); iosetup.inputs.push_back (channelName + " " + std::to_string (j)); } } return iosetup; } //------------------------------------------------------------------------ void AudioClient::preprocess (Buffers& buffers, int64_t continousFrames) { processData.numSamples = buffers.numSamples; processContext.continousTimeSamples = continousFrames; assignBusBuffers (buffers, processData); paramTransferrer.transferChangesTo (inputParameterChanges); } //------------------------------------------------------------------------ bool AudioClient::process (Buffers& buffers, int64_t continousFrames) { FUnknownPtr processor = component; if (!processor || !isProcessing) return false; preprocess (buffers, continousFrames); if (processor->process (processData) != kResultOk) return false; postprocess (buffers); return true; } //------------------------------------------------------------------------ void AudioClient::postprocess (Buffers& buffers) { eventList.clear (); inputParameterChanges.clearQueue (); unassignBusBuffers (buffers, processData); } //------------------------------------------------------------------------ bool AudioClient::setSamplerate (SampleRate value) { if (sampleRate == value) return true; sampleRate = value; processContext.sampleRate = sampleRate; if (blockSize == 0) return true; return updateProcessSetup (); } //------------------------------------------------------------------------ bool AudioClient::setBlockSize (int32 value) { if (blockSize == value) return true; blockSize = value; if (sampleRate == 0) return true; processData.prepare (*component, blockSize, kSample32); return updateProcessSetup (); } //------------------------------------------------------------------------ bool AudioClient::updateProcessSetup () { FUnknownPtr processor = component; if (!processor) return false; if (isProcessing) { if (processor->setProcessing (false) != kResultOk) return false; if (component->setActive (false) != kResultOk) return false; } ProcessSetup setup {kRealtime, kSample32, blockSize, sampleRate}; if (processor->setupProcessing (setup) != kResultOk) return false; if (component->setActive (true) != kResultOk) return false; processor->setProcessing (true); // != kResultOk /* if (processor->setProcessing(true) != kResultOk) return false;*/ isProcessing = true; return isProcessing; } //------------------------------------------------------------------------ bool AudioClient::isPortInRange (int32 port, int32 channel) const { return port < kMaxMidiMappingBusses && !midiCCMapping[port][channel].empty (); } //------------------------------------------------------------------------ bool AudioClient::processVstEvent (const IMidiClient::Event& event, int32 port) { auto vstEvent = midiToEvent (event.type, event.channel, event.data0, event.data1); if (vstEvent) { vstEvent->busIndex = port; if (eventList.addEvent (*vstEvent) != kResultOk) { assert (false && "Event was not added to EventList!"); } return true; } return false; } //------------------------------------------------------------------------ bool AudioClient::processParamChange (const IMidiClient::Event& event, int32 port) { auto paramMapping = [port, this] (int32 channel, MidiData data1) -> ParamID { if (!isPortInRange (port, channel)) return kNoParamId; return midiCCMapping[port][channel][data1]; }; auto paramChange = midiToParameter (event.type, event.channel, event.data0, event.data1, paramMapping); if (paramChange) { int32 index = 0; IParamValueQueue* queue = inputParameterChanges.addParameterData ((*paramChange).first, index); if (queue) { if (queue->addPoint (event.timestamp, (*paramChange).second, index) != kResultOk) { assert (false && "Parameter point was not added to ParamValueQueue!"); } } return true; } return false; } //------------------------------------------------------------------------ bool AudioClient::onEvent (const IMidiClient::Event& event, int32_t port) { // Try to create Event first. if (processVstEvent (event, port)) return true; // In case this is no event it must be a parameter. if (processParamChange (event, port)) return true; // TODO: Something else??? return true; } //------------------------------------------------------------------------ void AudioClient::setParameter (ParamID id, ParamValue value, int32 sampleOffset) { paramTransferrer.addChange (id, value, sampleOffset); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/media/audioclient.h000066400000000000000000000122201461511344300273250ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/audioclient.h // Created by : Steinberg 09.2016 // Description : Audio Host Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/audiohost/source/media/imediaserver.h" #include "public.sdk/samples/vst-hosting/audiohost/source/media/iparameterclient.h" #include "public.sdk/source/vst/hosting/eventlist.h" #include "public.sdk/source/vst/hosting/parameterchanges.h" #include "public.sdk/source/vst/hosting/processdata.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class IMidiMapping; class IComponent; enum { kMaxMidiMappingBusses = 4, kMaxMidiChannels = 16 }; using Controllers = std::vector; using Channels = std::array; using Busses = std::array; using MidiCCMapping = Busses; //------------------------------------------------------------------------ using AudioClientPtr = std::shared_ptr; //------------------------------------------------------------------------ class AudioClient : public IAudioClient, public IMidiClient, public IParameterClient { public: //-------------------------------------------------------------------- using Name = std::string; AudioClient (); virtual ~AudioClient (); static AudioClientPtr create (const Name& name, IComponent* component, IMidiMapping* midiMapping); // IAudioClient bool process (Buffers& buffers, int64_t continousFrames) override; bool setSamplerate (SampleRate value) override; bool setBlockSize (int32 value) override; IAudioClient::IOSetup getIOSetup () const override; // IMidiClient bool onEvent (const Event& event, int32_t port) override; IMidiClient::IOSetup getMidiIOSetup () const override; // IParameterClient void setParameter (ParamID id, ParamValue value, int32 sampleOffset) override; bool initialize (const Name& name, IComponent* component, IMidiMapping* midiMapping); //-------------------------------------------------------------------- private: void createLocalMediaServer (const Name& name); void terminate (); void updateBusBuffers (Buffers& buffers, HostProcessData& processData); void initProcessData (); void initProcessContext (); bool updateProcessSetup (); void preprocess (Buffers& buffers, int64_t continousFrames); void postprocess (Buffers& buffers); bool isPortInRange (int32 port, int32 channel) const; bool processVstEvent (const IMidiClient::Event& event, int32 port); bool processParamChange (const IMidiClient::Event& event, int32 port); SampleRate sampleRate = 0; int32 blockSize = 0; HostProcessData processData; ProcessContext processContext; EventList eventList; ParameterChanges inputParameterChanges; IComponent* component = nullptr; ParameterChangeTransfer paramTransferrer; MidiCCMapping midiCCMapping; IMediaServerPtr mediaServer; bool isProcessing = false; Name name; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/media/imediaserver.h000066400000000000000000000076441461511344300275220ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/media/imediaserver.h // Created by : Steinberg 09.2016 // Description : Audio Host Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include #include #include //---------------------------------------------------------------------------------- namespace Steinberg { namespace Vst { using IOName = std::string; using IONames = std::vector; using AudioClientName = std::string; struct IAudioClient { struct Buffers { float** inputs; int32_t numInputs; float** outputs; int32_t numOutputs; int32_t numSamples; }; struct IOSetup { IONames inputs; IONames outputs; }; virtual bool process (Buffers& buffers, int64_t continousFrames) = 0; virtual bool setSamplerate (SampleRate value) = 0; virtual bool setBlockSize (int32 value) = 0; virtual IOSetup getIOSetup () const = 0; virtual ~IAudioClient () {} }; //---------------------------------------------------------------------------------- struct IMidiClient { using MidiData = uint8_t; struct Event { MidiData type; MidiData channel; MidiData data0; MidiData data1; int64_t timestamp; }; struct IOSetup { IONames inputs; IONames outputs; }; virtual bool onEvent (const Event& event, int32_t port) = 0; virtual IOSetup getMidiIOSetup () const = 0; virtual ~IMidiClient () {} }; //---------------------------------------------------------------------------------- struct IMediaServer { virtual bool registerAudioClient (IAudioClient* client) = 0; virtual bool registerMidiClient (IMidiClient* client) = 0; virtual ~IMediaServer () {} }; //---------------------------------------------------------------------------------- using IMediaServerPtr = std::shared_ptr; IMediaServerPtr createMediaServer (const AudioClientName& name); //---------------------------------------------------------------------------------- } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/media/iparameterclient.h000066400000000000000000000054711461511344300303670ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/media/iparameterclient.h // Created by : Steinberg 09.2016 // Description : Audio Host Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include //---------------------------------------------------------------------------------- namespace Steinberg { namespace Vst { //---------------------------------------------------------------------------------- struct IParameterClient { virtual void setParameter (ParamID id, ParamValue value, int32 sampleOffset) = 0; virtual ~IParameterClient () {} }; //---------------------------------------------------------------------------------- using IParameterClientPtr = std::weak_ptr; //---------------------------------------------------------------------------------- } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/media/jack/000077500000000000000000000000001461511344300255675ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/media/jack/jackclient.cpp000066400000000000000000000320111461511344300303770ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/media/jack/jackclient.cpp // Created by : Steinberg 09.2016 // Description : Audio Host Example for VST 3 using Jack // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/samples/vst-hosting/audiohost/source/media/imediaserver.h" #include //! Workaround for Jack on Windows #if defined(SMTG_OS_WINDOWS) && defined(_STDINT) #define _STDINT_H #endif #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { static const int kJackSuccess = 0; //------------------------------------------------------------------------ // jack Client //------------------------------------------------------------------------ class JackClient : public IMediaServer { public: //-------------------------------------------------------------------- using JackPorts = std::vector; using JackName = std::string; JackClient () = default; virtual ~JackClient (); // IMediaServer interface bool registerAudioClient (IAudioClient* client) override; bool registerMidiClient (IMidiClient* client) override; bool initialize (JackName name); // jack process callback int process (jack_nframes_t nframes); //-------------------------------------------------------------------- private: jack_client_t* registerClient (JackName name); bool registerAudioPorts (IAudioClient* processor); bool registerMidiPorts (IMidiClient* processor); bool addAudioOutputPort (JackName name); bool addAudioInputPort (JackName name); bool addMidiInputPort (JackName name); int processMidi (jack_nframes_t nframes); bool setupJackProcessCallbacks (jack_client_t* client); bool autoConnectAudioPorts (jack_client_t* client); bool autoConnectMidiPorts (jack_client_t* client); void updateAudioBuffers (jack_nframes_t nframes); // Jack objects jack_client_t* jackClient = nullptr; JackPorts audioOutputPorts; JackPorts audioInputPorts; JackPorts midiInputPorts; IAudioClient* audioClient = nullptr; IMidiClient* midiClient = nullptr; using BufferPointers = std::vector; BufferPointers audioOutputPointers; BufferPointers audioInputPointers; IAudioClient::Buffers buffers {nullptr}; }; //------------------------------------------------------------------------ int jack_on_process (jack_nframes_t nframes, void* arg) { auto client = reinterpret_cast (arg); return client->process (nframes); } //------------------------------------------------------------------------ int jack_on_set_sample_rate (jack_nframes_t nframes, void* arg) { auto client = reinterpret_cast (arg); client->setSamplerate (static_cast (nframes)); return kJackSuccess; } //------------------------------------------------------------------------ int jack_on_set_block_size (jack_nframes_t nframes, void* arg) { auto client = reinterpret_cast (arg); client->setBlockSize (static_cast (nframes)); return kJackSuccess; } //------------------------------------------------------------------------ IMediaServerPtr createMediaServer (const AudioClientName& name) { auto client = std::make_shared (); client->initialize (name); return client; } //------------------------------------------------------------------------ JackClient::~JackClient () { //! We do not need to "unregister" ports. It is done automatically with "jack_client_close" jack_deactivate (jackClient); // Stops calls of process jack_client_close (jackClient); // Remove client from process graph and remove all ports } //------------------------------------------------------------------------ bool JackClient::registerAudioClient (IAudioClient* client) { if (audioClient) return false; audioClient = client; //! First thing to do: register the audio ports. if (!registerAudioPorts (audioClient)) return false; //! Setup all the callbacks like setSampleRate and process etc. if (!setupJackProcessCallbacks (jackClient)) return false; //! Activate after defining the callbacks. It is said in the documentation. if (jack_activate (jackClient) != kJackSuccess) return false; //! AFTER activation, register the ports. if (!autoConnectAudioPorts (jackClient)) return false; return true; } //------------------------------------------------------------------------ bool JackClient::registerMidiClient (IMidiClient* client) { if (midiClient) return false; midiClient = client; //! Register the midi ports. if (!registerMidiPorts (midiClient)) return false; //! Afterwards auto-connect them. if (!autoConnectMidiPorts (jackClient)) return false; return true; } //------------------------------------------------------------------------ bool JackClient::initialize (JackClient::JackName name) { jackClient = registerClient (name); if (!jackClient) return false; return true; } //------------------------------------------------------------------------ void JackClient::updateAudioBuffers (jack_nframes_t nframes) { int outputIndex = 0; for (auto audioOutputPort : audioOutputPorts) { auto* portBuffer = jack_port_get_buffer (audioOutputPort, nframes); if (!portBuffer) continue; buffers.outputs[outputIndex++] = static_cast (portBuffer); } int inputIndex = 0; for (auto audioInputPort : audioInputPorts) { auto* portBuffer = jack_port_get_buffer (audioInputPort, nframes); if (!portBuffer) continue; buffers.inputs[inputIndex++] = static_cast (portBuffer); } } //------------------------------------------------------------------------ int JackClient::process (jack_nframes_t nframes) { processMidi (nframes); buffers.numSamples = nframes; updateAudioBuffers (nframes); if (!audioClient) return 0; if (audioClient->process (buffers, jack_last_frame_time (jackClient)) == false) { assert (false); } return kJackSuccess; } //------------------------------------------------------------------------ bool JackClient::registerAudioPorts (IAudioClient* processor) { auto ioSetup = processor->getIOSetup (); for (const auto& output : ioSetup.outputs) addAudioOutputPort (output); for (const auto& input : ioSetup.inputs) addAudioInputPort (input); buffers.inputs = audioInputPointers.data (); buffers.numInputs = (int32_t)audioInputPointers.size (); buffers.numOutputs = (int32_t)audioOutputPointers.size (); buffers.outputs = audioOutputPointers.data (); return true; } //------------------------------------------------------------------------ bool JackClient::registerMidiPorts (IMidiClient* processor) { const auto ioSetup = processor->getMidiIOSetup (); for (const auto& input : ioSetup.inputs) addMidiInputPort (input); return true; } //------------------------------------------------------------------------ bool JackClient::addAudioOutputPort (JackClient::JackName name) { auto port = jack_port_register (jackClient, name.data (), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); if (!port) return false; audioOutputPorts.push_back (port); audioOutputPointers.resize (audioOutputPorts.size ()); return true; } //------------------------------------------------------------------------ bool JackClient::addAudioInputPort (JackClient::JackName name) { auto port = jack_port_register (jackClient, name.data (), JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); if (!port) return false; audioInputPorts.push_back (port); audioInputPointers.resize (audioOutputPorts.size ()); return true; } //------------------------------------------------------------------------ bool JackClient::addMidiInputPort (JackClient::JackName name) { auto port = jack_port_register (jackClient, name.data (), JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); if (!port) return false; midiInputPorts.push_back (port); return true; } //------------------------------------------------------------------------ int JackClient::processMidi (jack_nframes_t nframes) { static const uint8_t kChannelMask = 0x0F; static const uint8_t kStatusMask = 0xF0; static const uint32_t kDataMask = 0x7F; for (int32_t portIndex = 0, count = static_cast (midiInputPorts.size ()); portIndex < count; ++portIndex) { auto midiInputPort = midiInputPorts.at (portIndex); auto* portBuffer = jack_port_get_buffer (midiInputPort, nframes); if (!portBuffer) continue; jack_midi_event_t in_event; auto event_count = jack_midi_get_event_count (portBuffer); for (uint32_t i = 0; i < event_count; i++) { jack_midi_event_get (&in_event, portBuffer, i); if (in_event.size == 0) continue; auto midiData = in_event.buffer; Steinberg::Vst::IMidiClient::MidiData channel = midiData[0] & kChannelMask; Steinberg::Vst::IMidiClient::MidiData status = midiData[0] & kStatusMask; Steinberg::Vst::IMidiClient::MidiData data0 = midiData[1]; Steinberg::Vst::IMidiClient::MidiData data1 = midiData[2]; midiClient->onEvent ({status, channel, data0, data1, in_event.time}, portIndex); } } return kJackSuccess; } //------------------------------------------------------------------------ jack_client_t* JackClient::registerClient (JackClient::JackName name) { jack_options_t options = JackNullOption; jack_status_t status; jackClient = jack_client_open (name.data (), options, &status, nullptr); return jackClient; /* Use the status to check for errors: if (status & JackServerFailed) { fprintf (stderr, "Unable to connect to JACK server\n"); }*/ } //------------------------------------------------------------------------ bool JackClient::setupJackProcessCallbacks (jack_client_t* client) { if (jack_set_process_callback (client, jack_on_process, this) != kJackSuccess) return false; if (jack_set_sample_rate_callback (client, jack_on_set_sample_rate, audioClient) != kJackSuccess) return false; if (jack_set_buffer_size_callback (client, jack_on_set_block_size, audioClient) != kJackSuccess) return false; return true; } //------------------------------------------------------------------------ bool JackClient::autoConnectAudioPorts (jack_client_t* client) { int portIndex = 0; //! Connect Audio Outputs auto ports = jack_get_ports (client, nullptr, nullptr, JackPortIsPhysical | JackPortIsInput); for (auto& port : audioOutputPorts) { if (!ports[portIndex]) break; auto output__port_name = ports[portIndex++]; auto res = jack_connect (client, jack_port_name (port), output__port_name); if (res != 0) break; } jack_free (ports); return true; } //------------------------------------------------------------------------ bool JackClient::autoConnectMidiPorts (jack_client_t* client) { int portIndex = 1; //! Connect MIDI Inputs auto ports = jack_get_ports (client, nullptr, "midi", JackPortIsPhysical | JackPortIsOutput); if (!ports) return false; for (auto& port : midiInputPorts) { if (!ports[portIndex]) break; auto inputPortName = ports[portIndex++]; auto res = jack_connect (client, inputPortName, jack_port_name (port)); if (res != 0) continue; } jack_free (ports); return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/media/miditovst.h000066400000000000000000000132611461511344300270550ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/media/miditovst.h // Created by : Steinberg 09.2016 // Description : Audio Host Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/utility/optional.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { const uint8_t kNoteOff = 0x80; ///< note, off velocity const uint8_t kNoteOn = 0x90; ///< note, on velocity const uint8_t kPolyPressure = 0xA0; ///< note, pressure const uint8_t kController = 0xB0; ///< controller, value const uint8_t kProgramChangeStatus = 0xC0; ///< program change const uint8_t kAfterTouchStatus = 0xD0; ///< channel pressure const uint8_t kPitchBendStatus = 0xE0; ///< lsb, msb static const uint32 kDataMask = 0x7F; const float kMidiScaler = 1.f / 127.f; using MidiData = uint8_t; float toNormalized (const MidiData& data) { return (float)data * kMidiScaler; } using OptionalEvent = VST3::Optional; using ParameterChange = std::pair; using OptionParamChange = VST3::Optional; OptionalEvent midiToEvent (MidiData status, MidiData channel, MidiData midiData0, MidiData midiData1) { Event new_event = {}; if (status == kNoteOn || status == kNoteOff) { if (status == kNoteOff) // note off { new_event.noteOff.noteId = -1; new_event.type = Event::kNoteOffEvent; new_event.noteOff.channel = channel; new_event.noteOff.pitch = midiData0; new_event.noteOff.velocity = toNormalized (midiData1); return std::move (new_event); } else if (status == kNoteOn) // note on { new_event.noteOn.noteId = -1; new_event.type = Event::kNoteOnEvent; new_event.noteOn.channel = channel; new_event.noteOn.pitch = midiData0; new_event.noteOn.velocity = toNormalized (midiData1); return std::move (new_event); } } //--- ----------------------------- else if (status == kPolyPressure) { new_event.type = Vst::Event::kPolyPressureEvent; new_event.polyPressure.channel = channel; new_event.polyPressure.pitch = midiData0; new_event.polyPressure.pressure = toNormalized (midiData1); return std::move (new_event); } return {}; } //------------------------------------------------------------------------ using ToParameterIdFunc = std::function; OptionParamChange midiToParameter (MidiData status, MidiData channel, MidiData midiData1, MidiData midiData2, const ToParameterIdFunc& toParamID) { if (!toParamID) return {}; ParameterChange paramChange; if (status == kController) // controller { paramChange.first = toParamID (channel, midiData1); if (paramChange.first != kNoParamId) { paramChange.second = (double)midiData2 * kMidiScaler; return std::move (paramChange); } } else if (status == kPitchBendStatus) { paramChange.first = toParamID (channel, Vst::kPitchBend); if (paramChange.first != kNoParamId) { const double kPitchWheelScaler = 1. / (double)0x3FFF; const int32 ctrl = (midiData1 & kDataMask) | (midiData2 & kDataMask) << 7; paramChange.second = kPitchWheelScaler * (double)ctrl; return std::move (paramChange); }; } else if (status == kAfterTouchStatus) { paramChange.first = toParamID (channel, Vst::kAfterTouch); if (paramChange.first != kNoParamId) { paramChange.second = (ParamValue) (midiData1 & kDataMask) * kMidiScaler; return std::move (paramChange); }; } else if (status == kProgramChangeStatus) { // TODO } return {}; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/platform/000077500000000000000000000000001461511344300254245ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/platform/appinit.h000066400000000000000000000052641461511344300272500ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format auto // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/platform/appinit.h // Created by : Steinberg, 04/2005 // Description : Audio Host Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iapplication.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace AudioHost { //------------------------------------------------------------------------ struct AppInit { explicit AppInit (EditorHost::ApplicationPtr&& _app) { app = std::move (_app); } EditorHost::ApplicationPtr app; }; //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/audiohost/source/usediids.cpp000066400000000000000000000047551461511344300261300ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : AudioHost // Filename : public.sdk/samples/vst-hosting/audiohost/source/usediids.cpp // Created by : Steinberg 09.2008 // Description : Audio Host Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- //#define INIT_CLASS_IID // This macro definition modifies the behavior of DECLARE_CLASS_IID (funknown.h) // and produces the actual symbols for all interface identifiers. // It must be defined before including the interface headers and // in only one source file! //------------------------------------------------------------------------ //#define INIT_CLASS_IID vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/000077500000000000000000000000001461511344300224655ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/CMakeLists.txt000066400000000000000000000066311461511344300252330ustar00rootroot00000000000000 if(SMTG_ENABLE_VST3_HOSTING_EXAMPLES) set(editorhost_sources ${SDK_ROOT}/public.sdk/source/vst/hosting/plugprovider.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/plugprovider.h source/editorhost.cpp source/editorhost.h source/platform/appinit.h source/platform/iapplication.h source/platform/iplatform.h source/platform/iwindow.h source/usediids.cpp ) if(SMTG_MAC) set(editorhost_sources ${editorhost_sources} source/platform/mac/platform.mm source/platform/mac/window.h source/platform/mac/window.mm ${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm ) set_source_files_properties( source/platform/mac/window.mm source/platform/mac/platform.mm "${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm" PROPERTIES COMPILE_FLAGS "-fobjc-arc" ) set(editorhost_PLATFORM_LIBS "-framework Cocoa" ) get_filename_component(InfoPlistFile "resource/Info.plist" ABSOLUTE) set(APP_PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST ${InfoPlistFile} ) elseif(SMTG_LINUX) find_package(X11 REQUIRED) find_package(PkgConfig REQUIRED) pkg_check_modules(GTK3 REQUIRED gtk+-3.0) pkg_check_modules(GTKMM3 REQUIRED gtkmm-3.0) include_directories(${X11_INCLUDE_DIR} ${GTKMM3_INCLUDE_DIRS} ${GTK3_INCLUDE_DIRS}) set(editorhost_sources ${editorhost_sources} source/platform/linux/platform.cpp source/platform/linux/runloop.h source/platform/linux/runloop.cpp source/platform/linux/window.h source/platform/linux/window.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/module_linux.cpp ) set(editorhost_PLATFORM_LIBS ${X11_LIBRARIES} ${GTK3_LIBRARIES} ${GTKMM3_LIBRARIES} ) set(APP_PROPERTIES ) elseif(SMTG_WIN) set(editorhost_sources ${editorhost_sources} source/platform/win32/platform.cpp source/platform/win32/window.h source/platform/win32/window.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/module_win32.cpp ) set(editorhost_PLATFORM_LIBS ) if(MSVC) set(APP_PROPERTIES LINK_FLAGS "/SUBSYSTEM:windows" ) endif(MSVC) if(MINGW) # It causes the UNICODE preprocessor macro to be predefined, and chooses Unicode-capable runtime startup code. set(APP_PROPERTIES LINK_FLAGS -municode ) endif(MINGW) endif(SMTG_MAC) set(target editorhost) add_executable(${target} ${editorhost_sources}) set_target_properties(${target} PROPERTIES ${SDK_IDE_HOSTING_EXAMPLES_FOLDER} ) target_compile_features(${target} PUBLIC cxx_std_17 ) target_link_libraries(${target} PRIVATE sdk_hosting ${editorhost_PLATFORM_LIBS} ) smtg_target_setup_universal_binary(${target}) if (APP_PROPERTIES) set_target_properties(${target} PROPERTIES ${APP_PROPERTIES} ) endif(APP_PROPERTIES) endif(SMTG_ENABLE_VST3_HOSTING_EXAMPLES) vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/resource/000077500000000000000000000000001461511344300243145ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/resource/Info.plist000066400000000000000000000041251461511344300262660ustar00rootroot00000000000000 CFBundleDevelopmentRegion en CFBundleExecutable editorhost CFBundleIdentifier com.steinberg.vstsdk.editorhost CFBundleInfoDictionaryVersion 6.0 CFBundleName editorhost CFBundlePackageType BNDL CFBundleShortVersionString 1.0.0 CFBundleVersion 1 NSHumanReadableCopyright Copyright © 2020 Steinberg. All rights reserved. NSPrincipalClass NSApplication CFBundleDocumentTypes CFBundleTypeExtensions vst3 CFBundleTypeName VST3 Plug-In CFBundleTypeRole Editor UTImportedTypeDeclarations UTTypeConformsTo public.data public.content UTTypeDescription VST3 Plug-In UTTypeIdentifier com.steinberg.vst3.plugin UTTypeTagSpecification public.filename-extension vst3 vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/000077500000000000000000000000001461511344300237655ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/editorhost.cpp000066400000000000000000000325461461511344300266670ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/editorhost.cpp // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/samples/vst-hosting/editorhost/source/editorhost.h" #include "public.sdk/samples/vst-hosting/editorhost/source/platform/appinit.h" #include "base/source/fcommandline.h" #include "base/source/fdebug.h" #include "pluginterfaces/base/funknown.h" #include "pluginterfaces/gui/iplugview.h" #include "pluginterfaces/gui/iplugviewcontentscalesupport.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/vsttypes.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { //------------------------------------------------------------------------ inline bool operator== (const ViewRect& r1, const ViewRect& r2) { return memcmp (&r1, &r2, sizeof (ViewRect)) == 0; } //------------------------------------------------------------------------ inline bool operator!= (const ViewRect& r1, const ViewRect& r2) { return !(r1 == r2); } namespace Vst { namespace EditorHost { static AppInit gInit (std::make_unique ()); //------------------------------------------------------------------------ class WindowController : public IWindowController, public IPlugFrame { public: WindowController (const IPtr& plugView); ~WindowController () noexcept override; void onShow (IWindow& w) override; void onClose (IWindow& w) override; void onResize (IWindow& w, Size newSize) override; Size constrainSize (IWindow& w, Size requestedSize) override; void onContentScaleFactorChanged (IWindow& window, float newScaleFactor) override; // IPlugFrame tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* newSize) override; void closePlugView (); private: tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) override { if (FUnknownPrivate::iidEqual (_iid, IPlugFrame::iid) || FUnknownPrivate::iidEqual (_iid, FUnknown::iid)) { *obj = this; addRef (); return kResultTrue; } if (window) return window->queryInterface (_iid, obj); return kNoInterface; } // we do not care here of the ref-counting. A plug-in call of release should not destroy this // class! uint32 PLUGIN_API addRef () override { return 1000; } uint32 PLUGIN_API release () override { return 1000; } IPtr plugView; IWindow* window {nullptr}; bool resizeViewRecursionGard {false}; }; //------------------------------------------------------------------------ class ComponentHandler : public IComponentHandler { public: tresult PLUGIN_API beginEdit (ParamID id) override { SMTG_DBPRT1 ("beginEdit called (%d)\n", id); return kNotImplemented; } tresult PLUGIN_API performEdit (ParamID id, ParamValue valueNormalized) override { SMTG_DBPRT2 ("performEdit called (%d, %f)\n", id, valueNormalized); return kNotImplemented; } tresult PLUGIN_API endEdit (ParamID id) override { SMTG_DBPRT1 ("endEdit called (%d)\n", id); return kNotImplemented; } tresult PLUGIN_API restartComponent (int32 flags) override { SMTG_DBPRT1 ("restartComponent called (%d)\n", flags); return kNotImplemented; } private: tresult PLUGIN_API queryInterface (const TUID /*_iid*/, void** /*obj*/) override { return kNoInterface; } // we do not care here of the ref-counting. A plug-in call of release should not destroy this // class! uint32 PLUGIN_API addRef () override { return 1000; } uint32 PLUGIN_API release () override { return 1000; } }; static ComponentHandler gComponentHandler; //------------------------------------------------------------------------ App::~App () noexcept { terminate (); } //------------------------------------------------------------------------ void App::openEditor (const std::string& path, VST3::Optional effectID, uint32 flags) { std::string error; module = VST3::Hosting::Module::create (path, error); if (!module) { std::string reason = "Could not create Module for file:"; reason += path; reason += "\nError: "; reason += error; IPlatform::instance ().kill (-1, reason); } auto factory = module->getFactory (); if (auto factoryHostContext = IPlatform::instance ().getPluginFactoryContext ()) factory.setHostContext (factoryHostContext); for (auto& classInfo : factory.classInfos ()) { if (classInfo.category () == kVstAudioEffectClass) { if (effectID) { if (*effectID != classInfo.ID ()) continue; } plugProvider = owned (new PlugProvider (factory, classInfo, true)); if (plugProvider->initialize () == false) plugProvider = nullptr; break; } } if (!plugProvider) { if (effectID) error = "No VST3 Audio Module Class with UID " + effectID->toString () + " found in file "; else error = "No VST3 Audio Module Class found in file "; error += path; IPlatform::instance ().kill (-1, error); } auto editController = plugProvider->getController (); if (!editController) { error = "No EditController found (needed for allowing editor) in file " + path; IPlatform::instance ().kill (-1, error); } editController->release (); // plugProvider does an addRef if (flags & kSetComponentHandler) { SMTG_DBPRT0 ("setComponentHandler is used\n"); editController->setComponentHandler (&gComponentHandler); } SMTG_DBPRT1 ("Open Editor for %s...\n", path.c_str ()); createViewAndShow (editController); if (flags & kSecondWindow) { SMTG_DBPRT0 ("Open 2cd Editor...\n"); createViewAndShow (editController); } } //------------------------------------------------------------------------ void App::createViewAndShow (IEditController* controller) { auto view = owned (controller->createView (ViewType::kEditor)); if (!view) { IPlatform::instance ().kill (-1, "EditController does not provide its own editor"); } ViewRect plugViewSize {}; auto result = view->getSize (&plugViewSize); if (result != kResultTrue) { IPlatform::instance ().kill (-1, "Could not get editor view size"); } auto viewRect = ViewRectToRect (plugViewSize); windowController = std::make_shared (view); window = IPlatform::instance ().createWindow ( "Editor", viewRect.size, view->canResize () == kResultTrue, windowController); if (!window) { IPlatform::instance ().kill (-1, "Could not create window"); } window->show (); } //------------------------------------------------------------------------ void App::init (const std::vector& cmdArgs) { VST3::Optional uid; uint32 flags {}; for (auto it = cmdArgs.begin (), end = cmdArgs.end (); it != end; ++it) { if (*it == "--componentHandler") flags |= kSetComponentHandler; else if (*it == "--secondWindow") flags |= kSecondWindow; else if (*it == "--uid") { if (++it != end) uid = VST3::UID::fromString (*it); if (!uid) IPlatform::instance ().kill (-1, "wrong argument to --uid"); } } if (cmdArgs.empty () || cmdArgs.back ().find (".vst3") == std::string::npos) { auto helpText = R"( usage: EditorHost [options] pluginPath options: --componentHandler set optional component handler on edit controller --secondWindow create a second window --uid UID use effect class with unique class ID==UID )"; IPlatform::instance ().kill (0, helpText); } PluginContextFactory::instance ().setPluginContext (&pluginContext); openEditor (cmdArgs.back (), std::move (uid), flags); } //------------------------------------------------------------------------ void App::terminate () { if (windowController) windowController->closePlugView (); windowController.reset (); plugProvider.reset (); module.reset (); PluginContextFactory::instance ().setPluginContext (nullptr); } //------------------------------------------------------------------------ WindowController::WindowController (const IPtr& plugView) : plugView (plugView) { } //------------------------------------------------------------------------ WindowController::~WindowController () noexcept { } //------------------------------------------------------------------------ void WindowController::onShow (IWindow& w) { SMTG_DBPRT1 ("onShow called (%p)\n", (void*)&w); window = &w; if (!plugView) return; auto platformWindow = window->getNativePlatformWindow (); if (plugView->isPlatformTypeSupported (platformWindow.type) != kResultTrue) { IPlatform::instance ().kill (-1, std::string ("PlugView does not support platform type:") + platformWindow.type); } plugView->setFrame (this); if (plugView->attached (platformWindow.ptr, platformWindow.type) != kResultTrue) { IPlatform::instance ().kill (-1, "Attaching PlugView failed"); } } //------------------------------------------------------------------------ void WindowController::closePlugView () { if (plugView) { plugView->setFrame (nullptr); if (plugView->removed () != kResultTrue) { IPlatform::instance ().kill (-1, "Removing PlugView failed"); } plugView = nullptr; } window = nullptr; } //------------------------------------------------------------------------ void WindowController::onClose (IWindow& w) { SMTG_DBPRT1 ("onClose called (%p)\n", (void*)&w); closePlugView (); // TODO maybe quit only when the last window is closed IPlatform::instance ().quit (); } //------------------------------------------------------------------------ void WindowController::onResize (IWindow& w, Size newSize) { SMTG_DBPRT1 ("onResize called (%p)\n", (void*)&w); if (plugView) { ViewRect r {}; r.right = newSize.width; r.bottom = newSize.height; ViewRect r2 {}; if (plugView->getSize (&r2) == kResultTrue && r != r2) plugView->onSize (&r); } } //------------------------------------------------------------------------ Size WindowController::constrainSize (IWindow& w, Size requestedSize) { SMTG_DBPRT1 ("constrainSize called (%p)\n", (void*)&w); ViewRect r {}; r.right = requestedSize.width; r.bottom = requestedSize.height; if (plugView && plugView->checkSizeConstraint (&r) != kResultTrue) { plugView->getSize (&r); } requestedSize.width = r.right - r.left; requestedSize.height = r.bottom - r.top; return requestedSize; } //------------------------------------------------------------------------ void WindowController::onContentScaleFactorChanged (IWindow& w, float newScaleFactor) { SMTG_DBPRT1 ("onContentScaleFactorChanged called (%p)\n", (void*)&w); FUnknownPtr css (plugView); if (css) { css->setContentScaleFactor (newScaleFactor); } } //------------------------------------------------------------------------ tresult PLUGIN_API WindowController::resizeView (IPlugView* view, ViewRect* newSize) { SMTG_DBPRT1 ("resizeView called (%p)\n", (void*)view); if (newSize == nullptr || view == nullptr || view != plugView) return kInvalidArgument; if (!window) return kInternalError; if (resizeViewRecursionGard) return kResultFalse; ViewRect r; if (plugView->getSize (&r) != kResultTrue) return kInternalError; if (r == *newSize) return kResultTrue; resizeViewRecursionGard = true; Size size {newSize->right - newSize->left, newSize->bottom - newSize->top}; window->resize (size); resizeViewRecursionGard = false; if (plugView->getSize (&r) != kResultTrue) return kInternalError; if (r != *newSize) plugView->onSize (newSize); return kResultTrue; } //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/editorhost.h000066400000000000000000000067171461511344300263350ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/editorhost.h // Created by : Steinberg 09.2016 // Description : Example of opening a Plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iapplication.h" #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iwindow.h" #include "public.sdk/source/vst/hosting/hostclasses.h" #include "public.sdk/source/vst/hosting/module.h" #include "public.sdk/source/vst/hosting/plugprovider.h" #include "public.sdk/source/vst/utility/optional.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { class WindowController; //------------------------------------------------------------------------ class App : public IApplication { public: ~App () noexcept override; void init (const std::vector& cmdArgs) override; void terminate () override; private: enum OpenFlags { kSetComponentHandler = 1 << 0, kSecondWindow = 1 << 1, }; void openEditor (const std::string& path, VST3::Optional effectID, uint32 flags); void createViewAndShow (IEditController* controller); VST3::Hosting::Module::Ptr module {nullptr}; IPtr plugProvider {nullptr}; Vst::HostApplication pluginContext; WindowPtr window; std::shared_ptr windowController; }; //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/000077500000000000000000000000001461511344300256115ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/appinit.h000066400000000000000000000054031461511344300274300ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/appinit.h // Created by : Steinberg, 04/2005 // Description : Editor Host Example for VST SDK 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iapplication.h" #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iplatform.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ struct AppInit { explicit AppInit (ApplicationPtr&& app) { IPlatform::instance ().setApplication (std::move (app)); } }; //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/iapplication.h000066400000000000000000000054111461511344300304370ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/iapplication.h // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ class IApplication { public: virtual ~IApplication () noexcept = default; virtual void init (const std::vector& cmdArgs) = 0; virtual void terminate () = 0; }; using ApplicationPtr = std::unique_ptr; //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/iplatform.h000066400000000000000000000062711461511344300277650ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/iplatform.h // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iapplication.h" #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iwindow.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ class IPlatform { public: virtual ~IPlatform () noexcept = default; virtual void setApplication (ApplicationPtr&& app) = 0; virtual WindowPtr createWindow (const std::string& title, Size size, bool resizeable, const WindowControllerPtr& controller) = 0; virtual void quit () = 0; virtual void kill (int resultCode, const std::string& reason) = 0; virtual FUnknown* getPluginFactoryContext () = 0; static IPlatform& instance (); }; //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg extern void ApplicationInit (int argc, const char* argv[]); vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/iwindow.h000066400000000000000000000112131461511344300274400ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/iwindow.h // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/gui/iplugview.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { using Coord = int32_t; //------------------------------------------------------------------------ struct Point { Coord x; Coord y; }; //------------------------------------------------------------------------ struct Size { Coord width; Coord height; }; //------------------------------------------------------------------------ inline bool operator!= (const Size& lhs, const Size& rhs) { return lhs.width != rhs.width || lhs.height != rhs.height; } //------------------------------------------------------------------------ inline bool operator== (const Size& lhs, const Size& rhs) { return lhs.width == rhs.width && lhs.height == rhs.height; } //------------------------------------------------------------------------ struct Rect { Point origin; Size size; }; //------------------------------------------------------------------------ inline Rect ViewRectToRect (ViewRect r) { Rect result {}; result.origin.x = r.left; result.origin.y = r.top; result.size.width = r.right - r.left; result.size.height = r.bottom - r.top; return result; } //------------------------------------------------------------------------ struct NativePlatformWindow { FIDString type; void* ptr; }; class IWindow; //------------------------------------------------------------------------ class IWindowController { public: virtual ~IWindowController () noexcept = default; virtual void onShow (IWindow& window) = 0; virtual void onClose (IWindow& window) = 0; virtual void onResize (IWindow& window, Size newSize) = 0; virtual void onContentScaleFactorChanged (IWindow& window, float newScaleFactor) = 0; virtual Size constrainSize (IWindow& window, Size requestedSize) = 0; }; using WindowControllerPtr = std::shared_ptr; //------------------------------------------------------------------------ class IWindow { public: virtual ~IWindow () noexcept = default; virtual void show () = 0; virtual void close () = 0; virtual void resize (Size newSize) = 0; virtual Size getContentSize () = 0; virtual NativePlatformWindow getNativePlatformWindow () const = 0; virtual tresult queryInterface (const TUID iid, void** obj) = 0; }; using WindowPtr = std::shared_ptr; //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/linux/000077500000000000000000000000001461511344300267505ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/linux/irunloopimpl.h000066400000000000000000000130161461511344300316530ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/linux/irunloopimpl.h // Created by : Steinberg 09.2023 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/editorhost/source/platform/linux/runloop.h" #include "pluginterfaces/base/funknownimpl.h" #include "pluginterfaces/gui/iplugview.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Linux { //------------------------------------------------------------------------ class RunLoopImpl : U::ImplementsNonDestroyable> { public: static IRunLoop& instance () { static RunLoopImpl impl; return impl; } tresult PLUGIN_API registerEventHandler (IEventHandler* handler, FileDescriptor fd) override; tresult PLUGIN_API unregisterEventHandler (IEventHandler* handler) override; tresult PLUGIN_API registerTimer (ITimerHandler* handler, TimerInterval milliseconds) override; tresult PLUGIN_API unregisterTimer (ITimerHandler* handler) override; private: using TimerID = uint64_t; using EventHandler = IPtr; using TimerHandler = IPtr; using EventHandlers = std::unordered_map; using TimerHandlers = std::unordered_map; EventHandlers eventHandlers; TimerHandlers timerHandlers; }; //------------------------------------------------------------------------ inline tresult PLUGIN_API RunLoopImpl::registerEventHandler (IEventHandler* handler, FileDescriptor fd) { if (!handler || eventHandlers.find (fd) != eventHandlers.end ()) return kInvalidArgument; Vst::EditorHost::RunLoop::instance ().registerFileDescriptor ( fd, [handler] (int fd) { handler->onFDIsSet (fd); }); eventHandlers.emplace (fd, handler); return kResultTrue; } //------------------------------------------------------------------------ inline tresult PLUGIN_API RunLoopImpl::unregisterEventHandler (IEventHandler* handler) { if (!handler) return kInvalidArgument; auto it = std::find_if (eventHandlers.begin (), eventHandlers.end (), [&] (const auto& elem) { return elem.second == handler; }); if (it == eventHandlers.end ()) return kResultFalse; Vst::EditorHost::RunLoop::instance ().unregisterFileDescriptor (it->first); eventHandlers.erase (it); return kResultTrue; } //------------------------------------------------------------------------ inline tresult PLUGIN_API RunLoopImpl::registerTimer (ITimerHandler* handler, TimerInterval milliseconds) { if (!handler || milliseconds == 0) return kInvalidArgument; auto id = Vst::EditorHost::RunLoop::instance ().registerTimer ( milliseconds, [handler] (auto) { handler->onTimer (); }); timerHandlers.emplace (id, handler); return kResultTrue; } //------------------------------------------------------------------------ inline tresult PLUGIN_API RunLoopImpl::unregisterTimer (ITimerHandler* handler) { if (!handler) return kInvalidArgument; auto it = std::find_if (timerHandlers.begin (), timerHandlers.end (), [&] (const auto& elem) { return elem.second == handler; }); if (it == timerHandlers.end ()) return kResultFalse; Vst::EditorHost::RunLoop::instance ().unregisterTimer (it->first); timerHandlers.erase (it); return kResultTrue; } //------------------------------------------------------------------------ } // Linux } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/linux/platform.cpp000066400000000000000000000156671461511344300313170ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/linux/platform.cpp // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iplatform.h" #include "public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.h" #include "public.sdk/samples/vst-hosting/editorhost/source/platform/linux/irunloopimpl.h" #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { using namespace std::chrono; using clock = high_resolution_clock; //------------------------------------------------------------------------ static int pause (int milliSeconds) { struct timeval timeOut; if (milliSeconds > 0) { timeOut.tv_usec = (milliSeconds % (unsigned long)1000) * 1000; timeOut.tv_sec = milliSeconds / (unsigned long)1000; select (0, nullptr, nullptr, nullptr, &timeOut); } return (milliSeconds > 0 ? milliSeconds : 0); } //------------------------------------------------------------------------ //------------------------------------------------------------------------ class Platform : public IPlatform { public: static Platform& instance () { static Platform gInstance; return gInstance; } void setApplication (ApplicationPtr&& app) override; WindowPtr createWindow (const std::string& title, Size size, bool resizeable, const WindowControllerPtr& controller) override; void quit () override; void kill (int resultCode, const std::string& reason) override; FUnknown* getPluginFactoryContext () override; void run (const std::vector& cmdArgs); static const int kMinEventLoopRate = 16; // 60Hz private: void onWindowClosed (X11Window* window); void closeAllWindows (); void eventLoop (); ApplicationPtr application; Display* xDisplay {nullptr}; std::vector> windows; }; //------------------------------------------------------------------------ IPlatform& IPlatform::instance () { return Platform::instance (); } //------------------------------------------------------------------------ void Platform::setApplication (ApplicationPtr&& app) { application = std::move (app); } //------------------------------------------------------------------------ WindowPtr Platform::createWindow (const std::string& title, Size size, bool resizeable, const WindowControllerPtr& controller) { auto window = X11Window::make (title, size, resizeable, controller, xDisplay, [this] (X11Window* window) { onWindowClosed (window); }); if (window) windows.push_back (std::static_pointer_cast (window)); return window; } //------------------------------------------------------------------------ void Platform::onWindowClosed (X11Window* window) { for (auto it = windows.begin (); it != windows.end (); ++it) { if (it->get () == window) { windows.erase (it); break; } } } //------------------------------------------------------------------------ void Platform::closeAllWindows () { for (auto& w : windows) { w->close (); } } //------------------------------------------------------------------------ void Platform::quit () { static bool recursiveGuard = false; if (recursiveGuard) return; recursiveGuard = true; closeAllWindows (); if (application) application->terminate (); RunLoop::instance ().stop (); recursiveGuard = false; } //------------------------------------------------------------------------ void Platform::kill (int resultCode, const std::string& reason) { std::cout << reason << "\n"; exit (resultCode); } //------------------------------------------------------------------------ FUnknown* Platform::getPluginFactoryContext () { return &Steinberg::Linux::RunLoopImpl::instance (); } //------------------------------------------------------------------------ void Platform::run (const std::vector& cmdArgs) { // Connect to X server std::string displayName (getenv ("DISPLAY")); if (displayName.empty ()) displayName = ":0.0"; if ((xDisplay = XOpenDisplay (displayName.data ())) == nullptr) { return; } RunLoop::instance ().setDisplay (xDisplay); application->init (cmdArgs); eventLoop (); XCloseDisplay (xDisplay); } //------------------------------------------------------------------------ void Platform::eventLoop () { RunLoop::instance ().start (); } //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg //------------------------------------------------------------------------ //------------------------------------------------------------------------ int main (int argc, char* argv[]) { std::vector cmdArgs; for (int i = 1; i < argc; ++i) cmdArgs.push_back (argv[i]); Steinberg::Vst::EditorHost::Platform::instance ().run (cmdArgs); return 0; } vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/linux/runloop.cpp000066400000000000000000000210531461511344300311530ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/linux/runloop.cpp // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/samples/vst-hosting/editorhost/source/platform/linux/runloop.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { using LockGuard = std::lock_guard; //------------------------------------------------------------------------ RunLoop& RunLoop::instance () { static RunLoop gInstance; return gInstance; } //------------------------------------------------------------------------ void RunLoop::setDisplay (Display* display) { this->display = display; } //------------------------------------------------------------------------ void RunLoop::registerWindow (XID window, const EventCallback& callback) { map.emplace (window, callback); } //------------------------------------------------------------------------ void RunLoop::unregisterWindow (XID window) { auto it = map.find (window); if (it == map.end ()) return; map.erase (it); } //------------------------------------------------------------------------ void RunLoop::registerFileDescriptor (int fd, const FileDescriptorCallback& callback) { fileDescriptors.emplace (fd, callback); } //------------------------------------------------------------------------ void RunLoop::unregisterFileDescriptor (int fd) { auto it = fileDescriptors.find (fd); if (it == fileDescriptors.end ()) return; fileDescriptors.erase (it); } //------------------------------------------------------------------------ void RunLoop::select (timeval* timeout) { int nfds = 0; fd_set readFDs = {}, writeFDs = {}, exceptFDs = {}; for (auto& e : fileDescriptors) { int fd = e.first; FD_SET (fd, &readFDs); FD_SET (fd, &writeFDs); FD_SET (fd, &exceptFDs); nfds = std::max (nfds, fd); } int result = ::select (nfds, &readFDs, &writeFDs, nullptr, timeout); if (result > 0) { for (auto& e : fileDescriptors) { if (FD_ISSET (e.first, &readFDs) || FD_ISSET (e.first, &writeFDs) || FD_ISSET (e.first, &exceptFDs)) e.second (e.first); } } } //------------------------------------------------------------------------ bool RunLoop::handleEvents () { auto count = XPending (display); if (count == 0) return false; for (auto i = 0; i < count; ++i) { XEvent event {}; XNextEvent (display, &event); auto it = map.find (event.xany.window); if (it != map.end ()) { it->second (event); if (event.type == DestroyNotify) { map.erase (it); } } else { XPutBackEvent (display, &event); break; } } return true; } //------------------------------------------------------------------------ TimerID RunLoop::registerTimer (TimerInterval interval, const TimerCallback& callback) { return timerProcessor.registerTimer (interval, callback); } //------------------------------------------------------------------------ void RunLoop::unregisterTimer (TimerID id) { timerProcessor.unregisterTimer (id); } //------------------------------------------------------------------------ bool timeValEmpty (timeval& val) { return val.tv_sec == 0 && val.tv_usec == 0; } //------------------------------------------------------------------------ void RunLoop::start () { using namespace std::chrono; using clock = high_resolution_clock; running = true; auto fd = XConnectionNumber (display); registerFileDescriptor (fd, [this] (int) { handleEvents (); }); XSync (display, false); handleEvents (); timeval selectTimeout {}; while (running && !map.empty ()) { select (timeValEmpty (selectTimeout) ? nullptr : &selectTimeout); auto nextFireTime = timerProcessor.handleTimersAndReturnNextFireTimeInMs (); if (nextFireTime == TimerProcessor::noTimers) { selectTimeout = {}; } else { selectTimeout.tv_sec = nextFireTime / 1000; selectTimeout.tv_usec = (nextFireTime - (selectTimeout.tv_sec * 1000)) * 1000; } } } //------------------------------------------------------------------------ void RunLoop::stop () { running = false; } //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ uint64_t TimerProcessor::handleTimersAndReturnNextFireTimeInMs () { using std::chrono::time_point_cast; if (timers.empty ()) return noTimers; auto current = time_point_cast (Clock::now ()); std::vector timersToFire; for (auto& timer : timers) { if (timer.nextFireTime > current) break; timersToFire.push_back (timer.id); updateTimerNextFireTime (timer, current); } for (auto id : timersToFire) { for (auto& timer : timers) { if (timer.id == id) { timer.callback (timer.id); break; } } } if (timersToFire.empty ()) return noTimers; sortTimers (); auto nextFireTime = timers.front ().nextFireTime; current = now (); if (nextFireTime < current) return 0; return (nextFireTime - current).count (); } //------------------------------------------------------------------------ void TimerProcessor::updateTimerNextFireTime (Timer& timer, TimePoint current) { timer.nextFireTime = current + Millisecond (timer.interval); } //------------------------------------------------------------------------ void TimerProcessor::sortTimers () { std::sort (timers.begin (), timers.end (), [] (const Timer& t1, const Timer& t2) { return t1.nextFireTime < t2.nextFireTime; }); } //------------------------------------------------------------------------ auto TimerProcessor::now () -> TimePoint { using std::chrono::time_point_cast; return time_point_cast (Clock::now ()); } //------------------------------------------------------------------------ auto TimerProcessor::registerTimer (TimerInterval interval, const TimerCallback& callback) -> TimerID { auto timerId = ++timerIdCounter; Timer timer; timer.id = timerId; timer.callback = callback; timer.interval = interval; updateTimerNextFireTime (timer, now ()); timers.emplace_back (std::move (timer)); sortTimers (); return timerId; } //------------------------------------------------------------------------ void TimerProcessor::unregisterTimer (TimerID id) { for (auto it = timers.begin (), end = timers.end (); it != end; ++it) { if (it->id == id) { timers.erase (it); break; } } } //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/linux/runloop.h000066400000000000000000000110511461511344300306150ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/linux/runloop.h // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include #include #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ using TimerID = uint64_t; using TimerInterval = uint64_t; using TimerCallback = std::function; //------------------------------------------------------------------------ class TimerProcessor { public: TimerID registerTimer (TimerInterval interval, const TimerCallback& callback); void unregisterTimer (TimerID id); static constexpr uint64_t noTimers = std::numeric_limits::max (); uint64_t handleTimersAndReturnNextFireTimeInMs (); private: using Clock = std::chrono::steady_clock; using Millisecond = std::chrono::milliseconds; using TimePoint = std::chrono::time_point; struct Timer { TimerID id; TimerInterval interval; TimerCallback callback; TimePoint nextFireTime; }; using Timers = std::vector; Timers timers; TimerID timerIdCounter {0}; void updateTimerNextFireTime (Timer& timer, TimePoint current); void sortTimers (); TimePoint now (); }; //------------------------------------------------------------------------ class RunLoop { public: using EventCallback = std::function; using FileDescriptorCallback = std::function; static RunLoop& instance (); void setDisplay (Display* display); void registerWindow (XID window, const EventCallback& callback); void unregisterWindow (XID window); void registerFileDescriptor (int fd, const FileDescriptorCallback& callback); void unregisterFileDescriptor (int fd); TimerID registerTimer (TimerInterval interval, const TimerCallback& callback); void unregisterTimer (TimerID id); void start (); void stop (); private: void select (timeval* timeout = nullptr); bool handleEvents (); using WindowMap = std::unordered_map; using FileDescriptorCallbacks = std::unordered_map; WindowMap map; FileDescriptorCallbacks fileDescriptors; TimerProcessor timerProcessor; Display* display {nullptr}; bool running {false}; }; //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/linux/window.cpp000066400000000000000000000456001461511344300307700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.cpp // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "window.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "public.sdk/samples/vst-hosting/editorhost/source/platform/linux/irunloopimpl.h" #include #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ struct X11Window::Impl { Impl (X11Window* x11Window); bool init (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller, Display* display, const WindowClosedFunc& windowClosedFunc); void show (); void close (); Size getSize () const; void resize (Size newSize, bool force); //------------------------------------------------------------------------ struct XEmbedInfo { uint32_t version; uint32_t flags; }; ~Impl (); void onClose (); bool handleMainWindowEvent (const XEvent& event); bool handlePlugEvent (const XEvent& event); XEmbedInfo* getXEmbedInfo (); void checkSize (); void callPlugEventHandlers (); WindowControllerPtr controller {nullptr}; WindowClosedFunc windowClosedFunc; Display* xDisplay {nullptr}; XEmbedInfo* xembedInfo {nullptr}; Window xWindow {}; Window plugParentWindow {}; Window plugWindow {}; GC xGraphicContext {}; Atom xEmbedInfoAtom {None}; Atom xEmbedAtom {None}; bool isMapped {false}; using EventHandler = IPtr; using TimerHandler = IPtr; Size mCurrentSize {}; X11Window* x11Window {nullptr}; }; //------------------------------------------------------------------------ auto X11Window::make (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller, Display* display, const WindowClosedFunc& windowClosedFunc) -> Ptr { auto window = std::make_shared (); if (window->init (name, size, resizeable, controller, display, windowClosedFunc)) { return window; } return nullptr; } //------------------------------------------------------------------------ X11Window::X11Window () { impl = std::unique_ptr (new Impl (this)); } //------------------------------------------------------------------------ X11Window::~X11Window () { } //------------------------------------------------------------------------ bool X11Window::init (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller, Display* display, const WindowClosedFunc& windowClosedFunc) { return impl->init (name, size, resizeable, controller, display, windowClosedFunc); } //------------------------------------------------------------------------ Size X11Window::getSize () const { return impl->getSize (); } //------------------------------------------------------------------------ void X11Window::show () { impl->show (); } //------------------------------------------------------------------------ void X11Window::close () { impl->close (); } //------------------------------------------------------------------------ void X11Window::resize (Size newSize) { impl->resize (newSize, false); } //------------------------------------------------------------------------ Size X11Window::getContentSize () { return {}; } //------------------------------------------------------------------------ NativePlatformWindow X11Window::getNativePlatformWindow () const { return {kPlatformTypeX11EmbedWindowID, reinterpret_cast (impl->plugParentWindow)}; } //------------------------------------------------------------------------ tresult X11Window::queryInterface (const TUID iid, void** obj) { if (FUnknownPrivate::iidEqual (iid, Linux::IRunLoop::iid)) { *obj = &(Linux::RunLoopImpl::instance ()); // as the run loop is a singleton it is not necessary to call a retain on that object return kResultTrue; } return kNoInterface; } //------------------------------------------------------------------------ void X11Window::onIdle () { } /* XEMBED messages */ #define XEMBED_EMBEDDED_NOTIFY 0 #define XEMBED_WINDOW_ACTIVATE 1 #define XEMBED_WINDOW_DEACTIVATE 2 #define XEMBED_REQUEST_FOCUS 3 #define XEMBED_FOCUS_IN 4 #define XEMBED_FOCUS_OUT 5 #define XEMBED_FOCUS_NEXT 6 #define XEMBED_FOCUS_PREV 7 /* 8-9 were used for XEMBED_GRAB_KEY/XEMBED_UNGRAB_KEY */ #define XEMBED_MODALITY_ON 10 #define XEMBED_MODALITY_OFF 11 #define XEMBED_REGISTER_ACCELERATOR 12 #define XEMBED_UNREGISTER_ACCELERATOR 13 #define XEMBED_ACTIVATE_ACCELERATOR 14 void send_xembed_message (Display* dpy, /* display */ Window w, /* receiver */ Atom messageType, long message, /* message opcode */ long detail, /* message detail */ long data1, /* message data 1 */ long data2 /* message data 2 */ ) { XEvent ev; memset (&ev, 0, sizeof (ev)); ev.xclient.type = ClientMessage; ev.xclient.window = w; ev.xclient.message_type = messageType; ev.xclient.format = 32; ev.xclient.data.l[0] = CurrentTime; ev.xclient.data.l[1] = message; ev.xclient.data.l[2] = detail; ev.xclient.data.l[3] = data1; ev.xclient.data.l[4] = data2; XSendEvent (dpy, w, False, NoEventMask, &ev); XSync (dpy, False); } #define XEMBED_MAPPED (1 << 0) //------------------------------------------------------------------------ X11Window::Impl::Impl (X11Window* x11Window) : x11Window (x11Window) { } //------------------------------------------------------------------------ X11Window::Impl::~Impl () { } //------------------------------------------------------------------------ bool X11Window::Impl::init (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller, Display* display, const WindowClosedFunc& windowClosedFunc) { this->windowClosedFunc = windowClosedFunc; this->controller = controller; xDisplay = display; xEmbedInfoAtom = XInternAtom (xDisplay, "_XEMBED_INFO", true); if (xEmbedInfoAtom == None) { std::cerr << "_XEMBED_INFO does not exist" << std::endl; return false; } // Get screen size from display auto screen_num = DefaultScreen (xDisplay); auto displayWidth = DisplayWidth (xDisplay, screen_num); auto displayHeight = DisplayHeight (xDisplay, screen_num); unsigned int border_width = 1; XVisualInfo vInfo; if (!XMatchVisualInfo (xDisplay, screen_num, 24, TrueColor, &vInfo)) { exit (-1); } XSetWindowAttributes winAttr {}; winAttr.border_pixel = BlackPixel (xDisplay, screen_num); winAttr.background_pixel = WhitePixel (xDisplay, screen_num); winAttr.colormap = XCreateColormap (xDisplay, XDefaultRootWindow (xDisplay), vInfo.visual, AllocNone); uint32_t winAttrMask = CWBackPixel | CWColormap | CWBorderPixel; xWindow = XCreateWindow (xDisplay, RootWindow (xDisplay, screen_num), 0, 0, displayWidth, displayHeight, border_width, vInfo.depth, InputOutput, vInfo.visual, winAttrMask, &winAttr); XFlush (xDisplay); resize (size, true); XSelectInput (xDisplay, xWindow, /* KeyPressMask | ButtonPressMask |*/ ExposureMask | /*ResizeRedirectMask |*/ StructureNotifyMask | SubstructureNotifyMask | FocusChangeMask); auto sizeHints = XAllocSizeHints (); sizeHints->flags = PMinSize; if (!resizeable) { sizeHints->flags |= PMaxSize; sizeHints->min_width = sizeHints->max_width = size.width; sizeHints->min_height = sizeHints->max_height = size.height; } else { sizeHints->min_width = sizeHints->min_height = 80; } XSetWMNormalHints (xDisplay, xWindow, sizeHints); XFree (sizeHints); // set a title XStoreName (xDisplay, xWindow, name.data ()); XTextProperty iconName; auto icon_name = const_cast (name.data ()); XStringListToTextProperty (&icon_name, 1, &iconName); XSetWMIconName (xDisplay, xWindow, &iconName); Atom wm_delete_window; wm_delete_window = XInternAtom (xDisplay, "WM_DELETE_WINDOW", False); XSetWMProtocols (xDisplay, xWindow, &wm_delete_window, 1); xGraphicContext = XCreateGC (xDisplay, xWindow, 0, 0); XSetForeground (xDisplay, xGraphicContext, WhitePixel (xDisplay, screen_num)); XSetBackground (xDisplay, xGraphicContext, BlackPixel (xDisplay, screen_num)); winAttr = {}; winAttr.override_redirect = true; winAttr.event_mask = ExposureMask | KeyPressMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask; plugParentWindow = XCreateWindow (xDisplay, xWindow, 0, 0, size.width, size.height, border_width, vInfo.depth, InputOutput, CopyFromParent, winAttrMask, &winAttr); XSelectInput (xDisplay, plugParentWindow, SubstructureNotifyMask | PropertyChangeMask); XMapWindow (xDisplay, plugParentWindow); RunLoop::instance ().registerWindow (plugParentWindow, [this] (const XEvent& e) { return handlePlugEvent (e); }); RunLoop::instance ().registerWindow ( xWindow, [this] (const XEvent& e) { return handleMainWindowEvent (e); }); return true; } //------------------------------------------------------------------------ void X11Window::Impl::show () { XMapWindow (xDisplay, xWindow); } //------------------------------------------------------------------------ void X11Window::Impl::close () { XUnmapWindow (xDisplay, xWindow); } //------------------------------------------------------------------------ void X11Window::Impl::onClose () { XFreeGC (xDisplay, xGraphicContext); XDestroyWindow (xDisplay, xWindow); xDisplay = nullptr; xWindow = 0; isMapped = false; if (windowClosedFunc) windowClosedFunc (x11Window); } //------------------------------------------------------------------------ void X11Window::Impl::resize (Size newSize, bool force) { if (!force && mCurrentSize == newSize) return; if (xWindow) XResizeWindow (xDisplay, xWindow, newSize.width, newSize.height); if (plugParentWindow) XResizeWindow (xDisplay, plugParentWindow, newSize.width, newSize.height); mCurrentSize = newSize; } //------------------------------------------------------------------------ Size X11Window::Impl::getSize () const { ::Window root; int x, y; unsigned int width, height; unsigned int border_width; unsigned int depth; XGetGeometry (xDisplay, xWindow, &root, &x, &y, &width, &height, &border_width, &depth); return {static_cast (width), static_cast (height)}; } //------------------------------------------------------------------------ void X11Window::Impl::checkSize () { if (getSize () != mCurrentSize) { resize (mCurrentSize, true); } } //------------------------------------------------------------------------ bool X11Window::Impl::handleMainWindowEvent (const XEvent& event) { #if LOG_EVENTS std::cout << "event " << event.type << "\n"; #endif bool res = false; switch (event.type) { case Expose: if (event.xexpose.count == 0) { XClearWindow (xDisplay, xWindow); XFillRectangle (xDisplay, xWindow, xGraphicContext, 0, 0, mCurrentSize.width, mCurrentSize.height); } res = true; break; //--- StructureNotifyMask ------------------------------ // Window has been resized case ConfigureNotify: { if (event.xconfigure.window != xWindow) break; auto width = event.xconfigure.width; auto height = event.xconfigure.height; Size size {width, height}; if (mCurrentSize != size) { auto constraintSize = controller->constrainSize (*x11Window, size); if (constraintSize != mCurrentSize) { mCurrentSize = size; controller->onResize (*x11Window, size); } if (constraintSize != size) resize (constraintSize, true); else { if (plugParentWindow) XResizeWindow (xDisplay, plugParentWindow, size.width, size.height); } #if LOG_EVENTS std::cout << "new size " << width << " x " << height << "\n"; #endif } res = true; } break; // Window has been map to the screen case MapNotify: { if (event.xany.window == xWindow && !isMapped) { controller->onShow (*x11Window); isMapped = true; res = true; } } break; case UnmapNotify: { if (event.xunmap.window == xWindow) { controller->onClose (*x11Window); onClose (); res = true; } break; } case DestroyNotify: break; case ClientMessage: { if (event.xany.window == xWindow) { controller->onClose (*x11Window); onClose (); res = true; } break; } case FocusIn: { if (xembedInfo) send_xembed_message (xDisplay, plugWindow, xEmbedAtom, XEMBED_WINDOW_ACTIVATE, 0, plugParentWindow, xembedInfo->version); break; } case FocusOut: { if (xembedInfo) send_xembed_message (xDisplay, plugWindow, xEmbedAtom, XEMBED_WINDOW_DEACTIVATE, 0, plugParentWindow, xembedInfo->version); break; } //--- ResizeRedirectMask -------------------------------- case ResizeRequest: { if (event.xany.window == xWindow) { auto width = event.xresizerequest.width; auto height = event.xresizerequest.height; Size request {width, height}; if (mCurrentSize != request) { #if LOG_EVENTS std::cout << "requested Size " << width << " x " << height << "\n"; #endif auto constraintSize = controller->constrainSize (*x11Window, request); if (constraintSize != request) { #if LOG_EVENTS std::cout << "constraint Size " << constraintSize.width << " x " << constraintSize.height << "\n"; #endif } resize (constraintSize, true); } res = true; } } break; } return res; } //------------------------------------------------------------------------ auto X11Window::Impl::getXEmbedInfo () -> XEmbedInfo* { int actualFormat; unsigned long itemsReturned; unsigned long bytesAfterReturn; Atom actualType; XEmbedInfo* xembedInfo = NULL; if (xEmbedInfoAtom == None) xEmbedInfoAtom = XInternAtom (xDisplay, "_XEMBED_INFO", true); auto err = XGetWindowProperty (xDisplay, plugWindow, xEmbedInfoAtom, 0, sizeof (xembedInfo), false, xEmbedInfoAtom, &actualType, &actualFormat, &itemsReturned, &bytesAfterReturn, reinterpret_cast (&xembedInfo)); if (err != Success) return nullptr; return xembedInfo; } //------------------------------------------------------------------------ bool X11Window::Impl::handlePlugEvent (const XEvent& event) { bool res = false; switch (event.type) { // XEMBED specific case ClientMessage: { auto name = XGetAtomName (xDisplay, event.xclient.message_type); std::cout << name << std::endl; if (event.xclient.message_type == xEmbedAtom) { switch (event.xclient.data.l[1]) { case XEMBED_REQUEST_FOCUS: { send_xembed_message (xDisplay, plugWindow, xEmbedAtom, XEMBED_FOCUS_IN, 0, plugParentWindow, xembedInfo->version); break; } } } break; } case PropertyNotify: { auto name = XGetAtomName (xDisplay, event.xproperty.atom); std::cout << name << std::endl; if (event.xany.window == plugWindow) { if (event.xproperty.atom == xEmbedInfoAtom) { if (auto embedInfo = getXEmbedInfo ()) { } } else { } } break; } case CreateNotify: { if (event.xcreatewindow.parent != plugParentWindow) { res = true; break; } plugWindow = event.xcreatewindow.window; xembedInfo = getXEmbedInfo (); if (!xembedInfo) { std::cerr << "XGetWindowProperty for _XEMBED_INFO failed" << std::endl; exit (-1); } if (xembedInfo->flags & XEMBED_MAPPED) { std::cerr << "Window already mapped error" << std::endl; exit (-1); } RunLoop::instance ().registerWindow ( plugWindow, [this] (const XEvent& e) { return handlePlugEvent (e); }); // XSelectInput (xDisplay, plugWindow, PropertyChangeMask); if (xEmbedAtom == None) xEmbedAtom = XInternAtom (xDisplay, "_XEMBED", true); assert (xEmbedAtom != None); send_xembed_message (xDisplay, plugWindow, xEmbedAtom, XEMBED_EMBEDDED_NOTIFY, 0, plugParentWindow, xembedInfo->version); XMapWindow (xDisplay, plugWindow); XResizeWindow (xDisplay, plugWindow, mCurrentSize.width, mCurrentSize.height); // XSetInputFocus (xDisplay, plugWindow, RevertToParent, CurrentTime); send_xembed_message (xDisplay, plugWindow, xEmbedAtom, XEMBED_WINDOW_ACTIVATE, 0, plugParentWindow, xembedInfo->version); send_xembed_message (xDisplay, plugWindow, xEmbedAtom, XEMBED_FOCUS_IN, 0, plugParentWindow, xembedInfo->version); XSync (xDisplay, False); res = true; break; } } return res; } //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/linux/window.h000066400000000000000000000070521461511344300304340ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.h // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iwindow.h" #include struct _XDisplay; typedef struct _XDisplay Display; //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ class X11Window : public IWindow { public: using Ptr = std::shared_ptr; using WindowClosedFunc = std::function; static Ptr make (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller, Display* display, const WindowClosedFunc& windowClosedFunc); X11Window (); ~X11Window () override; bool init (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller, Display* display, const WindowClosedFunc& windowClosedFunc); void show () override; void close () override; void resize (Size newSize) override; Size getContentSize () override; NativePlatformWindow getNativePlatformWindow () const override; tresult queryInterface (const TUID iid, void** obj) override; void onIdle (); private: Size getSize () const; struct Impl; std::unique_ptr impl; }; //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/mac/000077500000000000000000000000001461511344300263515ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/mac/platform.mm000066400000000000000000000204461461511344300305360ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/mac/platform.mm // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "public.sdk/samples/vst-hosting/editorhost/source/platform/iplatform.h" #import "public.sdk/samples/vst-hosting/editorhost/source/platform/mac/window.h" #import #import #if !__has_feature(objc_arc) #error this file needs to be compiled with automatic reference counting enabled #endif //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ class Platform : public IPlatform { public: static Platform& instance () { static Platform gInstance; return gInstance; } Platform (); void setApplication (ApplicationPtr&& app) override; WindowPtr createWindow (const std::string& title, Size size, bool resizeable, const WindowControllerPtr& controller) override; void quit () override; void kill (int resultCode, const std::string& reason) override; FUnknown* getPluginFactoryContext () override; ApplicationPtr application; bool quitRequested {false}; }; //------------------------------------------------------------------------ Platform::Platform () { NSApplicationLoad (); } //------------------------------------------------------------------------ void Platform::setApplication (ApplicationPtr&& app) { application = std::move (app); } //------------------------------------------------------------------------ WindowPtr Platform::createWindow (const std::string& title, Size size, bool resizeable, const WindowControllerPtr& controller) { return Window::make (title, size, resizeable, controller); } //------------------------------------------------------------------------ void Platform::quit () { if (quitRequested) return; quitRequested = true; dispatch_after (dispatch_time (DISPATCH_TIME_NOW, (int64_t) (0.1 * NSEC_PER_SEC)), dispatch_get_main_queue (), ^{ @autoreleasepool { for (NSWindow* window in NSApp.windows) [window close]; } application = nullptr; [NSApp terminate:nil]; }); } //------------------------------------------------------------------------ void Platform::kill (int resultCode, const std::string& reason) { std::cout << reason << "\n"; std::cout.flush (); auto alert = [NSAlert new]; alert.messageText = [NSString stringWithUTF8String:reason.data ()]; alert.alertStyle = NSCriticalAlertStyle; [alert addButtonWithTitle:@"Quit"]; [alert runModal]; exit (resultCode); } //------------------------------------------------------------------------ FUnknown* Platform::getPluginFactoryContext () { return nullptr; } //------------------------------------------------------------------------ IPlatform& IPlatform::instance () { return Platform::instance (); } //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg //------------------------------------------------------------------------ @interface VSTSDK_AppDelegate : NSObject { std::vector cmdArgs; } @end //------------------------------------------------------------------------ @implementation VSTSDK_AppDelegate //------------------------------------------------------------------------ - (void)setCmdArgs:(std::vector&&)args { cmdArgs = std::move (args); } //------------------------------------------------------------------------ - (NSMenu*)createAppMenu { auto appName = static_cast ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]); NSMenu* menu = [[NSMenu alloc] initWithTitle:appName]; [menu addItemWithTitle:[NSString stringWithFormat:@"Hide %@", appName] action:@selector (hide:) keyEquivalent:@"h"]; [menu addItemWithTitle:@"Hide Others" action:@selector (hideOtherApplications:) keyEquivalent:@""]; [menu addItemWithTitle:@"Show All" action:@selector (unhideAllApplications:) keyEquivalent:@""]; [menu addItem:[NSMenuItem separatorItem]]; [menu addItemWithTitle:[NSString stringWithFormat:@"Quit %@", appName] action:@selector (terminate:) keyEquivalent:@"q"]; return menu; } //------------------------------------------------------------------------ - (NSMenu*)createFileMenu { NSMenu* menu = [[NSMenu alloc] initWithTitle:@"File"]; [menu addItemWithTitle:@"Close Window" action:@selector (performClose:) keyEquivalent:@"w"]; return menu; } //------------------------------------------------------------------------ - (void)setupMenubar { auto mainMenu = [NSMenu new]; [NSApp setMainMenu:mainMenu]; auto appMenuItem = [[NSMenuItem alloc] initWithTitle:@"App" action:nil keyEquivalent:@""]; [mainMenu addItem:appMenuItem]; appMenuItem.submenu = [self createAppMenu]; auto fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"File" action:nil keyEquivalent:@""]; [mainMenu addItem:fileMenuItem]; fileMenuItem.submenu = [self createFileMenu]; } //------------------------------------------------------------------------ - (BOOL)application:(NSApplication*)sender openFile:(NSString*)filename { if (cmdArgs.empty ()) cmdArgs.push_back ([filename UTF8String]); return YES; } //------------------------------------------------------------------------ - (void)applicationDidFinishLaunching:(NSNotification*)notification { [self setupMenubar]; Steinberg::Vst::EditorHost::Platform::instance ().application->init (cmdArgs); cmdArgs.clear (); } //------------------------------------------------------------------------ - (void)applicationWillTerminate:(NSNotification*)notification { if (auto& app = Steinberg::Vst::EditorHost::Platform::instance ().application) app->terminate (); } @end //------------------------------------------------------------------------ int main (int argc, const char* argv[]) { auto delegate = [VSTSDK_AppDelegate new]; std::vector cmdArgs; for (int i = 1; i < argc; ++i) cmdArgs.push_back (argv[i]); [delegate setCmdArgs:std::move (cmdArgs)]; [NSApplication sharedApplication].delegate = delegate; return NSApplicationMain (argc, argv); } vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/mac/window.h000066400000000000000000000065151461511344300300400ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/mac/window.h // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iwindow.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ class Window : public IWindow, public std::enable_shared_from_this { public: static WindowPtr make (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller); Window (); ~Window () noexcept override; bool init (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller); void show () override; void close () override; void resize (Size newSize) override; Size getContentSize () override; NativePlatformWindow getNativePlatformWindow () const override; tresult queryInterface (const TUID iid, void** obj) override { return kNoInterface; } WindowControllerPtr getController () const; void windowClosed (); private: struct Impl; std::unique_ptr impl; }; //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/mac/window.mm000066400000000000000000000202221461511344300302110ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/mac/window.mm // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "public.sdk/samples/vst-hosting/editorhost/source/platform/mac/window.h" #import #if !__has_feature(objc_arc) #error this file needs to be compiled with automatic reference counting enabled #endif using namespace Steinberg::Vst; //------------------------------------------------------------------------ @interface VSTSDK_WindowDelegate : NSObject #if __i386__ { std::shared_ptr _window; NSWindow* _nsWindow; } #endif @property (readonly) std::shared_ptr window; @property (strong, readwrite) NSWindow* nsWindow; - (id)initWithWindow:(std::shared_ptr)window; @end //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ struct Window::Impl { WindowControllerPtr controller; VSTSDK_WindowDelegate* nsWindowDelegate {nullptr}; }; //------------------------------------------------------------------------ WindowPtr Window::make (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller) { auto window = std::make_shared (); if (window->init (name, size, resizeable, controller)) return window; return nullptr; } //------------------------------------------------------------------------ Window::Window () { impl = std::unique_ptr (new Impl); } //------------------------------------------------------------------------ bool Window::init (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller) { impl->controller = controller; NSUInteger styleMask = NSTitledWindowMask | NSClosableWindowMask; if (resizeable) styleMask |= NSResizableWindowMask; auto contentRect = NSMakeRect (0., 0., static_cast (size.width), static_cast (size.height)); impl->nsWindowDelegate = [[VSTSDK_WindowDelegate alloc] initWithWindow:shared_from_this ()]; auto nsWindow = [[NSWindow alloc] initWithContentRect:contentRect styleMask:styleMask backing:NSBackingStoreBuffered defer:YES]; [nsWindow setDelegate:impl->nsWindowDelegate]; nsWindow.releasedWhenClosed = NO; impl->nsWindowDelegate.nsWindow = nsWindow; [nsWindow center]; return true; } //------------------------------------------------------------------------ Window::~Window () noexcept { } //------------------------------------------------------------------------ void Window::show () { auto nsWindow = impl->nsWindowDelegate.nsWindow; impl->controller->onShow (*this); [nsWindow makeKeyAndOrderFront:nil]; } //------------------------------------------------------------------------ void Window::close () { auto nsWindow = impl->nsWindowDelegate.nsWindow; [nsWindow close]; } //------------------------------------------------------------------------ void Window::resize (Size newSize) { auto nsWindow = impl->nsWindowDelegate.nsWindow; auto r = [nsWindow contentRectForFrameRect:nsWindow.frame]; auto diff = newSize.height - r.size.height; r.size.width = newSize.width; r.size.height = newSize.height; r.origin.y -= diff; [nsWindow setFrame:[nsWindow frameRectForContentRect:r] display:[nsWindow isVisible] animate:NO]; } //------------------------------------------------------------------------ Size Window::getContentSize () { auto nsWindow = impl->nsWindowDelegate.nsWindow; auto r = [nsWindow contentRectForFrameRect:nsWindow.frame]; return {static_cast (r.size.width), static_cast (r.size.height)}; } //------------------------------------------------------------------------ NativePlatformWindow Window::getNativePlatformWindow () const { auto nsWindow = impl->nsWindowDelegate.nsWindow; return {kPlatformTypeNSView, (__bridge void*)([nsWindow contentView])}; } //------------------------------------------------------------------------ WindowControllerPtr Window::getController () const { return impl->controller; } //------------------------------------------------------------------------ void Window::windowClosed () { impl->controller->onClose (*this); impl->nsWindowDelegate = nullptr; } //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg //------------------------------------------------------------------------ @implementation VSTSDK_WindowDelegate #if __i386__ @synthesize window = _window; #endif //------------------------------------------------------------------------ - (id)initWithWindow:(std::shared_ptr)window { if (self = [super init]) { self->_window = window; } return self; } //------------------------------------------------------------------------ - (NSSize)windowWillResize:(nonnull NSWindow*)sender toSize:(NSSize)frameSize { NSRect r {}; r.size = frameSize; r = [sender contentRectForFrameRect:r]; EditorHost::Size size {static_cast (r.size.width), static_cast (r.size.height)}; size = self.window->getController ()->constrainSize (*self.window, size); r.size.width = size.width; r.size.height = size.height; r = [sender frameRectForContentRect:r]; return r.size; } //------------------------------------------------------------------------ - (void)windowDidResize:(nonnull NSNotification*)notification { NSWindow* window = [notification object]; NSRect r = window.frame; r = [window contentRectForFrameRect:r]; EditorHost::Size size {static_cast (r.size.width), static_cast (r.size.height)}; self.window->getController ()->onResize (*self.window, size); } //------------------------------------------------------------------------ - (void)windowWillClose:(nonnull NSNotification*)notification { self.window->windowClosed (); self->_window = nullptr; self->_nsWindow = nullptr; } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/win32/000077500000000000000000000000001461511344300265535ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/win32/platform.cpp000066400000000000000000000140461461511344300311100ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/win32/platform.cpp // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iplatform.h" #include "public.sdk/samples/vst-hosting/editorhost/source/platform/win32/window.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/base/ftypes.h" #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ class Platform : public IPlatform { public: static Platform& instance () { static Platform gInstance; return gInstance; } void setApplication (ApplicationPtr&& app) override; WindowPtr createWindow (const std::string& title, Size size, bool resizeable, const WindowControllerPtr& controller) override; void quit () override; void kill (int resultCode, const std::string& reason) override; FUnknown* getPluginFactoryContext () override; void run (LPWSTR lpCmdLine, HINSTANCE instance); private: ApplicationPtr application; HINSTANCE hInstance {nullptr}; bool quitRequested {false}; }; //------------------------------------------------------------------------ IPlatform& IPlatform::instance () { return Platform::instance (); } //------------------------------------------------------------------------ void Platform::setApplication (ApplicationPtr&& app) { application = std::move (app); } //------------------------------------------------------------------------ WindowPtr Platform::createWindow (const std::string& title, Size size, bool resizeable, const WindowControllerPtr& controller) { return Window::make (title, size, resizeable, controller, hInstance); } //------------------------------------------------------------------------ void Platform::quit () { if (quitRequested) return; quitRequested = true; for (auto& window : Window::getWindows ()) window->closeImmediately (); if (application) application->terminate (); PostQuitMessage (0); } //------------------------------------------------------------------------ void Platform::kill (int resultCode, const std::string& reason) { auto str = VST3::StringConvert::convert (reason); MessageBox (nullptr, reinterpret_cast (str.data ()), nullptr, MB_OK); exit (resultCode); } //------------------------------------------------------------------------ FUnknown* Platform::getPluginFactoryContext () { return nullptr; } //------------------------------------------------------------------------ void Platform::run (LPWSTR lpCmdLine, HINSTANCE _hInstance) { hInstance = _hInstance; std::vector cmdArgStrings; int numArgs = 0; auto cmdArgsArray = CommandLineToArgvW (lpCmdLine, &numArgs); cmdArgStrings.reserve (numArgs); for (int i = 0; i < numArgs; ++i) { cmdArgStrings.push_back ( VST3::StringConvert::convert (Steinberg::wscast (cmdArgsArray[i]))); } LocalFree (cmdArgsArray); auto noHIDPI = std::find (cmdArgStrings.begin (), cmdArgStrings.end (), "-noHIDPI"); if (noHIDPI == cmdArgStrings.end ()) ShcoreLibrary::instance ().setProcessDpiAwareness (true); application->init (cmdArgStrings); MSG msg; while (GetMessage (&msg, nullptr, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } } //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg #ifndef _In_ #define _In_ #endif #ifndef _In_opt_ #define _In_opt_ #endif //------------------------------------------------------------------------ int APIENTRY wWinMain (_In_ HINSTANCE instance, _In_opt_ HINSTANCE /*prevInstance*/, _In_ LPWSTR lpCmdLine, _In_ int /*nCmdShow*/) { HRESULT hr = CoInitialize (nullptr); if (FAILED (hr)) return FALSE; Steinberg::Vst::EditorHost::Platform::instance ().run (lpCmdLine, instance); CoUninitialize (); return 0; } vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/win32/window.cpp000066400000000000000000000250411461511344300305700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/win32/window.cpp // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "window.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include #ifndef WM_DPICHANGED #define WM_DPICHANGED 0x02E0 #endif #ifndef WM_GETDPISCALEDSIZE #define WM_GETDPISCALEDSIZE 0x02E4 #endif //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ namespace { static Window::WindowList gAllWindows; //------------------------------------------------------------------------ static void addWindow (Window* window) { gAllWindows.push_back (window); } //------------------------------------------------------------------------ static void removeWindow (Window* window) { auto it = std::find (gAllWindows.begin (), gAllWindows.end (), window); if (it != gAllWindows.end ()) gAllWindows.erase (it); } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ static const WCHAR* gWindowClassName = L"VSTSDK WindowClass"; //------------------------------------------------------------------------ WindowPtr Window::make (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller, HINSTANCE instance) { auto window = std::make_shared (); if (window->init (name, size, resizeable, controller, instance)) return window; return nullptr; } //------------------------------------------------------------------------ LRESULT CALLBACK Window::WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { auto* window = reinterpret_cast ((LONG_PTR)GetWindowLongPtr (hWnd, GWLP_USERDATA)); if (window) return window->proc (message, wParam, lParam); return DefWindowProc (hWnd, message, wParam, lParam); } //------------------------------------------------------------------------ void Window::registerWindowClass (HINSTANCE instance) { static bool once = true; if (!once) return; once = true; WNDCLASSEX wcex {}; wcex.cbSize = sizeof (WNDCLASSEX); wcex.style = CS_DBLCLKS; wcex.lpfnWndProc = WndProc; wcex.hInstance = instance; wcex.hCursor = LoadCursor (instance, IDC_ARROW); wcex.hbrBackground = nullptr; wcex.lpszClassName = gWindowClassName; RegisterClassEx (&wcex); } //------------------------------------------------------------------------ auto Window::getWindows () -> WindowList { return gAllWindows; } //------------------------------------------------------------------------ bool Window::init (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& _controller, HINSTANCE instance) { controller = _controller; registerWindowClass (instance); DWORD exStyle = WS_EX_APPWINDOW; DWORD dwStyle = WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; if (resizeable) dwStyle |= WS_SIZEBOX | WS_MAXIMIZEBOX; auto windowTitle = VST3::StringConvert::convert (name); RECT rect {0, 0, size.width, size.height}; AdjustWindowRectEx (&rect, dwStyle, false, exStyle); hwnd = CreateWindowEx (exStyle, gWindowClassName, (const TCHAR*)windowTitle.data (), dwStyle, 0, 0, rect.right - rect.left, rect.bottom - rect.top, nullptr, nullptr, instance, nullptr); if (hwnd) { SetWindowLongPtr (hwnd, GWLP_USERDATA, (__int3264) (LONG_PTR)this); This = shared_from_this (); addWindow (this); } return hwnd != nullptr; } //------------------------------------------------------------------------ LRESULT Window::proc (UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_ERASEBKGND: { return TRUE; // do not draw background } case WM_PAINT: { PAINTSTRUCT ps {}; BeginPaint (hwnd, &ps); EndPaint (hwnd, &ps); return FALSE; } case WM_SIZE: { controller->onResize (*this, getContentSize ()); break; } case WM_SIZING: { auto* newSize = reinterpret_cast (lParam); RECT oldSize; GetWindowRect (hwnd, &oldSize); RECT clientSize; GetClientRect (hwnd, &clientSize); auto diffX = (newSize->right - newSize->left) - (oldSize.right - oldSize.left); auto diffY = (newSize->bottom - newSize->top) - (oldSize.bottom - oldSize.top); Size newClientSize = {(clientSize.right - clientSize.left), (clientSize.bottom - clientSize.top)}; newClientSize.width += diffX; newClientSize.height += diffY; auto constraintSize = controller->constrainSize (*this, newClientSize); if (constraintSize != newClientSize) { auto diffX2 = (oldSize.right - oldSize.left) - (clientSize.right - clientSize.left); auto diffY2 = (oldSize.bottom - oldSize.top) - (clientSize.bottom - clientSize.top); newSize->right = newSize->left + static_cast (constraintSize.width + diffX2); newSize->bottom = newSize->top + static_cast (constraintSize.height + diffY2); } return TRUE; } case WM_CLOSE: { closeImmediately (); return TRUE; } case WM_GETDPISCALEDSIZE: { inDpiChangeState = true; auto* proposedSize = reinterpret_cast (lParam); auto newScaleFactor = static_cast (wParam) / static_cast (USER_DEFAULT_SCREEN_DPI); controller->onContentScaleFactorChanged (*this, newScaleFactor); if (dpiChangedSize.width != 0 && dpiChangedSize.height != 0) { WINDOWINFO windowInfo {0}; GetWindowInfo (hwnd, &windowInfo); RECT clientRect {}; clientRect.right = dpiChangedSize.width; clientRect.bottom = dpiChangedSize.height; User32Library::instance ().adjustWindowRectExForDpi ( &clientRect, windowInfo.dwStyle, false, windowInfo.dwExStyle, wParam); proposedSize->cx = clientRect.right - clientRect.left; proposedSize->cy = clientRect.bottom - clientRect.top; return TRUE; } return FALSE; } case WM_DPICHANGED: { if (inDpiChangeState) { auto* rect = reinterpret_cast (lParam); inDpiChangeState = false; dpiChangedSize = {}; SetWindowPos (hwnd, nullptr, rect->left, rect->top, rect->right - rect->left, rect->bottom - rect->top, SWP_NOZORDER | SWP_NOACTIVATE); return 0; } controller->onContentScaleFactorChanged (*this, getContentScaleFactor ()); return 0; } } return DefWindowProc (hwnd, message, wParam, lParam); } //------------------------------------------------------------------------ void Window::closeImmediately () { close (); removeWindow (this); controller->onClose (*this); SetWindowLongPtr (hwnd, GWLP_USERDATA, (__int3264) (LONG_PTR) nullptr); This = nullptr; } //------------------------------------------------------------------------ Size Window::getContentSize () { RECT r; GetClientRect (hwnd, &r); return {r.right - r.left, r.bottom - r.top}; } //------------------------------------------------------------------------ float Window::getContentScaleFactor () const { if (auto dpiForWindow = ShcoreLibrary::instance ().getDpiForWindow (hwnd)) { return static_cast (dpiForWindow->x) / static_cast (USER_DEFAULT_SCREEN_DPI); } return 1.f; } //------------------------------------------------------------------------ void Window::show () { controller->onContentScaleFactorChanged (*this, getContentScaleFactor ()); controller->onShow (*this); SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOCOPYBITS | SWP_SHOWWINDOW); } //------------------------------------------------------------------------ void Window::close () { ShowWindow (hwnd, false); } //------------------------------------------------------------------------ void Window::resize (Size newSize) { if (inDpiChangeState) { dpiChangedSize = newSize; return; } if (getContentSize () == newSize) return; WINDOWINFO windowInfo {0}; GetWindowInfo (hwnd, &windowInfo); RECT clientRect {}; clientRect.right = newSize.width; clientRect.bottom = newSize.height; AdjustWindowRectEx (&clientRect, windowInfo.dwStyle, false, windowInfo.dwExStyle); SetWindowPos (hwnd, HWND_TOP, 0, 0, clientRect.right - clientRect.left, clientRect.bottom - clientRect.top, SWP_NOMOVE | SWP_NOCOPYBITS | SWP_NOACTIVATE); } //------------------------------------------------------------------------ NativePlatformWindow Window::getNativePlatformWindow () const { return {kPlatformTypeHWND, hwnd}; } //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/platform/win32/window.h000066400000000000000000000174131461511344300302410ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/platform/win32/window.h // Created by : Steinberg 09.2016 // Description : Example of opening a plug-in editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/samples/vst-hosting/editorhost/source/platform/iwindow.h" #include "public.sdk/source/vst/utility/optional.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace EditorHost { //------------------------------------------------------------------------ class Window : public IWindow, public std::enable_shared_from_this { public: static WindowPtr make (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller, HINSTANCE instance); bool init (const std::string& name, Size size, bool resizeable, const WindowControllerPtr& controller, HINSTANCE instance); void show () override; void close () override; void resize (Size newSize) override; Size getContentSize () override; NativePlatformWindow getNativePlatformWindow () const override; tresult queryInterface (const TUID /*iid*/, void** /*obj*/) override { return kNoInterface; } void closeImmediately (); using WindowList = std::vector; static WindowList getWindows (); private: LRESULT CALLBACK proc (UINT message, WPARAM wParam, LPARAM lParam); static LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); float getContentScaleFactor () const; void registerWindowClass (HINSTANCE instance); WindowPtr This; WindowControllerPtr controller {nullptr}; HWND hwnd {nullptr}; bool inDpiChangeState {false}; Size dpiChangedSize {}; }; //------------------------------------------------------------------------ struct DynamicLibrary { DynamicLibrary (const char* name) { module = LoadLibraryA (name); } ~DynamicLibrary () { FreeLibrary (module); } template T getProcAddress (const char* name) { return module ? reinterpret_cast (GetProcAddress (module, name)) : nullptr; } private: HMODULE module {nullptr}; }; #ifndef _DPI_AWARENESS_CONTEXTS_ DECLARE_HANDLE (DPI_AWARENESS_CONTEXT); typedef enum DPI_AWARENESS { DPI_AWARENESS_INVALID = -1, DPI_AWARENESS_UNAWARE = 0, DPI_AWARENESS_SYSTEM_AWARE = 1, DPI_AWARENESS_PER_MONITOR_AWARE = 2 } DPI_AWARENESS; #define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1) #define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2) #define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3) #define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4) #endif struct User32Library : DynamicLibrary { static User32Library& instance () { static User32Library gInstance; return gInstance; } bool setProcessDpiAwarenessContext (DPI_AWARENESS_CONTEXT context) const { if (!setProcessDpiAwarenessContextProc) return false; return setProcessDpiAwarenessContextProc (context); } bool adjustWindowRectExForDpi (LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle, UINT dpi) const { if (!adjustWindowRectExForDpiProc) return false; return adjustWindowRectExForDpiProc (lpRect, dwStyle, bMenu, dwExStyle, dpi); } private: using SetProcessDpiAwarenessContextProc = BOOL (WINAPI*) (DPI_AWARENESS_CONTEXT); using AdjustWindowRectExForDpiProc = BOOL (WINAPI*) (LPRECT, DWORD, BOOL, DWORD, UINT); User32Library () : DynamicLibrary ("User32.dll") { setProcessDpiAwarenessContextProc = getProcAddress ("SetProcessDpiAwarenessContext"); adjustWindowRectExForDpiProc = getProcAddress ("AdjustWindowRectExForDpi"); } SetProcessDpiAwarenessContextProc setProcessDpiAwarenessContextProc {nullptr}; AdjustWindowRectExForDpiProc adjustWindowRectExForDpiProc {nullptr}; }; struct ShcoreLibrary : DynamicLibrary { static ShcoreLibrary& instance () { static ShcoreLibrary gInstance; return gInstance; } struct DPI { UINT x; UINT y; }; VST3::Optional getDpiForWindow (HWND window) const { if (!getDpiForMonitorProc) return {}; auto monitor = MonitorFromWindow (window, MONITOR_DEFAULTTONEAREST); UINT x, y; getDpiForMonitorProc (monitor, MDT_EFFECTIVE_DPI, &x, &y); return DPI {x, y}; } HRESULT setProcessDpiAwareness (bool perMonitor = true) { if (perMonitor) { if (User32Library::instance ().setProcessDpiAwarenessContext ( perMonitor ? DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 : DPI_AWARENESS_CONTEXT_UNAWARE)) return true; } if (!setProcessDpiAwarenessProc) return S_FALSE; return setProcessDpiAwarenessProc (perMonitor ? PROCESS_PER_MONITOR_DPI_AWARE : PROCESS_SYSTEM_DPI_AWARE); } private: enum PROCESS_DPI_AWARENESS { PROCESS_DPI_UNAWARE = 0, PROCESS_SYSTEM_DPI_AWARE = 1, PROCESS_PER_MONITOR_DPI_AWARE = 2 }; enum MONITOR_DPI_TYPE { MDT_EFFECTIVE_DPI = 0, MDT_ANGULAR_DPI = 1, MDT_RAW_DPI = 2, MDT_DEFAULT = MDT_EFFECTIVE_DPI }; using GetDpiForMonitorProc = HRESULT (WINAPI*) (HMONITOR, MONITOR_DPI_TYPE, UINT*, UINT*); using SetProcessDpiAwarenessProc = HRESULT (WINAPI*) (PROCESS_DPI_AWARENESS); ShcoreLibrary () : DynamicLibrary ("Shcore.dll") { getDpiForMonitorProc = getProcAddress ("GetDpiForMonitor"); setProcessDpiAwarenessProc = getProcAddress ("SetProcessDpiAwareness"); } GetDpiForMonitorProc getDpiForMonitorProc {nullptr}; SetProcessDpiAwarenessProc setProcessDpiAwarenessProc {nullptr}; }; #ifndef DPI_ENUMS_DECLARED #define DPI_ENUMS_DECLARED #endif // (DPI_ENUMS_DECLARED) //------------------------------------------------------------------------ } // EditorHost } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/editorhost/source/usediids.cpp000066400000000000000000000047511461511344300263110ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format auto // Project : VST SDK // // Category : EditorHost // Filename : public.sdk/samples/vst-hosting/editorhost/source/usediids.cpp // Created by : Steinberg 09.2008 // Description : Interface symbols file // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- //#define INIT_CLASS_IID // This macro definition modifies the behavior of DECLARE_CLASS_IID (funknown.h) // and produces the actual symbols for all interface identifiers. // It must be defined before including the interface headers and // in only one source file! //------------------------------------------------------------------------ //#define INIT_CLASS_IID vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/inspectorapp/000077500000000000000000000000001461511344300230105ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/inspectorapp/CMakeLists.txt000066400000000000000000000055031461511344300255530ustar00rootroot00000000000000 if(SMTG_ENABLE_VST3_HOSTING_EXAMPLES AND TARGET vstgui AND TARGET vstgui_standalone) ########################################################################################## set(target VST3Inspector) ########################################################################################## set(${target}_sources "source/app.cpp" "source/window.cpp" "source/window.h" "${SDK_ROOT}/pluginterfaces/base/coreiids.cpp" "${SDK_ROOT}/public.sdk/source/vst/hosting/module.h" "${SDK_ROOT}/public.sdk/source/vst/hosting/module.cpp" "${SDK_ROOT}/public.sdk/source/vst/utility/stringconvert.h" "${SDK_ROOT}/public.sdk/source/vst/utility/stringconvert.cpp" "${SDK_ROOT}/public.sdk/source/vst/moduleinfo/moduleinfoparser.cpp" "${SDK_ROOT}/public.sdk/source/vst/moduleinfo/moduleinfocreator.cpp" ) set(${target}_resources "resource/window.uidesc" ) ########################################################################################## if(SMTG_MAC) set(${target}_sources ${${target}_sources} "${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm" ) set_source_files_properties( "${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm" PROPERTIES COMPILE_FLAGS "-fobjc-arc" ) elseif(SMTG_WIN) set(${target}_sources ${${target}_sources} "${SDK_ROOT}/public.sdk/source/vst/hosting/module_win32.cpp" ) elseif(SMTG_LINUX) set(${target}_sources ${${target}_sources} "${SDK_ROOT}/public.sdk/source/vst/hosting/module_linux.cpp" ) endif(SMTG_MAC) ########################################################################################## # 'vstgui_add_executable' links both targets 'vstgui' and 'vstgui_standalone' to 'VST3Inspector' vstgui_add_executable(${target} "${${target}_sources}") vstgui_set_target_bundle_id(${target} "com.steinberg.vstsdk.vst3inspector") if(NOT SMTG_MAC) set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<$:bin/Debug>$<$:bin/Release>$<$:bin/ReleaseLTO>/VST3Inspector ) endif(NOT SMTG_MAC) vstgui_add_resources(${target} "${${target}_resources}") vstgui_set_target_infoplist(${target} "resource/Info.plist") #vstgui_set_cxx_version(${target} 17) target_include_directories(${target} PRIVATE "${SMTG_VSTGUI_SOURCE_DIR}/" "${SDK_ROOT}" ) if(SDK_IDE_HOSTING_EXAMPLES_FOLDER) set_target_properties(${target} PROPERTIES ${SDK_IDE_HOSTING_EXAMPLES_FOLDER} ) endif(SDK_IDE_HOSTING_EXAMPLES_FOLDER) endif() vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/inspectorapp/resource/000077500000000000000000000000001461511344300246375ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/inspectorapp/resource/Info.plist000066400000000000000000000015421461511344300266110ustar00rootroot00000000000000 CFBundleDevelopmentRegion en CFBundleExecutable ${EXECUTABLE} CFBundleIdentifier com.steinberg.vstsdk.vst3inspector CFBundleInfoDictionaryVersion 6.0 CFBundleName VST3Inspector CFBundlePackageType BNDL CFBundleShortVersionString 1.0.0 CFBundleVersion 1 NSHumanReadableCopyright Copyright © 2021 Steinberg Media Technologies. All rights reserved. NSPrincipalClass NSApplication vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/inspectorapp/resource/window.uidesc000066400000000000000000001353671461511344300273630ustar00rootroot00000000000000{ "vstgui-ui-description": { "version": "1", "bitmaps": {}, "fonts": { "list": { "font-name": "Arial", "size": "12" } }, "colors": { "focus": "#698ecbce", "group.background": "#00000020", "group.frame": "#000000ff", "list.background": "#2a2e31ff", "list.background.selected": "#155a8eff", "list.frame": "#151719ff", "list.text": "#ffffffff", "list.text.selected": "#ffffffff", "scrollbar.background": "#ffffff4b", "scrollbar.frame": "#ffffff00", "scrollbar.scroller": "#000000ff", "window.background": "#1f1f24ff" }, "gradients": {}, "control-tags": { "ClassInfo::Cardinality": "14", "ClassInfo::Category": "8", "ClassInfo::ClassFlags": "15", "ClassInfo::ClassID": "7", "ClassInfo::Name": "9", "ClassInfo::SDKVersion": "12", "ClassInfo::SubCategories": "13", "ClassInfo::Vendor": "10", "ClassInfo::Version": "11", "ClassInfoList": "6", "Factory::EMail": "4", "Factory::Flags": "5", "Factory::URL": "3", "Factory::Vendor": "2", "Module::Path": "1", "ModulePathList": "0" }, "custom": { "UIDescFilePath": { "path": "/Volumes/DevPluginSet/DevPluginSet/public.sdk/samples/vst-hosting/inspectorapp/resource/window.uidesc" }, "UIGridController": { "Grids": "1x 1,5x 5,10x 10,12x 12,15x 15", "Size": "5, 5" }, "UITemplateController": { "SelectedTemplate": "MainWindow" }, "UIEditController": { "EditViewScale": "1", "EditorSize": "0, 0, 1403, 1036", "SplitViewSize_0_0": "0.7633663366336633782083254118333570659161", "SplitViewSize_0_1": "0.2168316831683168299793607047831756062806", "SplitViewSize_1_0": "0.4881188118811881082592663005925714969635", "SplitViewSize_1_1": "0.5089108910891089188055502745555713772774", "SplitViewSize_2_0": "0.7954383464005702064625324965163599699736", "SplitViewSize_2_1": "0.2009978617248752708057679683406604453921", "TabSwitchValue": "2", "Version": "1" }, "UIAttributesController": {}, "UIViewCreatorDataSource": { "SelectedRow": "29" }, "UIBitmapsDataSource": { "SelectedRow": "-1" }, "UIGradientsDataSource": { "SelectedRow": "-1" }, "UIColorsDataSource": { "SelectedRow": "0" }, "UIFontsDataSource": { "SelectedRow": "0" }, "UITagsDataSource": { "SelectedRow": "-1" }, "FocusDrawing": { "color": "focus", "enabled": "true", "width": "1.5" } }, "templates": { "MainWindow": { "attributes": { "autosize": "left right top bottom ", "background-color": "window.background", "background-color-draw-style": "filled and stroked", "class": "CViewContainer", "minSize": "755, 605", "mouse-enabled": "true", "opacity": "1", "origin": "0, 0", "size": "755, 605", "transparent": "false", "wants-focus": "false" }, "children": { "CScrollView": { "attributes": { "auto-drag-scrolling": "false", "auto-hide-scrollbars": "true", "autosize": "left top bottom ", "background-color": "list.background", "background-color-draw-style": "filled and stroked", "bordered": "false", "class": "CScrollView", "container-size": "182, 1872", "follow-focus-view": "false", "horizontal-scrollbar": "false", "mouse-enabled": "true", "opacity": "1", "origin": "10, 30", "overlay-scrollbars": "false", "scrollbar-background-color": "scrollbar.background", "scrollbar-frame-color": "scrollbar.frame", "scrollbar-scroller-color": "scrollbar.scroller", "scrollbar-width": "10", "size": "190, 565", "transparent": "false", "vertical-scrollbar": "true", "wants-focus": "false" }, "children": { "CStringListControl": { "attributes": { "autosize": "left right top ", "back-color": "~ TransparentCColor", "back-color-selected": "list.background.selected", "class": "CStringListControl", "control-tag": "ModulePathList", "default-value": "0.5", "font": "list", "font-color": "list.text", "font-color-selected": "list.text.selected", "hover-color": "None", "line-color": "~ BlackCColor", "line-width": "-1", "max-value": "77", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "0, 0", "row-height": "24", "size": "182, 1872", "style-hover": "false", "text-alignment": "left", "text-inset": "5", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } } } }, "CTextLabel": { "attributes": { "back-color": "group.frame", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "-1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 5", "round-rect-radius": "3", "shadow-color": "~ RedCColor", "size": "190, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "true", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Modules", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "group.frame", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "Module::Path", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "-1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "210, 5", "round-rect-radius": "3", "shadow-color": "~ RedCColor", "size": "535, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "true", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "/Users/AScheffler/Library/Audio/Plug-Ins/VST3/adelay.vst3", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CLayeredViewContainer": { "attributes": { "autosize": "left right top ", "background-color": "~ TransparentCColor", "background-color-draw-style": "filled and stroked", "class": "CLayeredViewContainer", "mouse-enabled": "true", "opacity": "1", "origin": "210, 30", "size": "535, 140", "transparent": "false", "wants-focus": "false", "z-index": "0" }, "children": { "CParamDisplay": { "attributes": { "autosize": "left right top bottom ", "back-color": "group.background", "background-offset": "0, 0", "class": "CParamDisplay", "default-value": "0.5", "font": "~ NormalFont", "font-antialias": "true", "font-color": "list.text", "frame-color": "group.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "0, 0", "round-rect-radius": "6", "shadow-color": "~ TransparentCColor", "size": "535, 140", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "true", "style-round-rect": "true", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "3.6", "text-shadow-offset": "1, 1", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 35", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "60, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Vendor:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 60", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "60, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "URL:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 85", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "60, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "E-Mail:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "Factory::Vendor", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "75, 35", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "450, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Steinberg Media Technologies", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "Factory::URL", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "75, 60", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "450, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "http://www.steinberg.net", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "Factory::EMail", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "75, 85", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "450, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "mailto:info@steinberg.de", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 10", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "150, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Factory Info:", "transparent": "true", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 110", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "60, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Flags:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "Factory::Flags", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "75, 110", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "450, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "0b00000000000000000000000000010000", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } } } }, "CLayeredViewContainer": { "attributes": { "autosize": "left right top bottom ", "background-color": "~ TransparentCColor", "background-color-draw-style": "filled and stroked", "class": "CLayeredViewContainer", "mouse-enabled": "true", "opacity": "1", "origin": "210, 180", "size": "535, 415", "transparent": "false", "wants-focus": "false", "z-index": "0" }, "children": { "CParamDisplay": { "attributes": { "autosize": "left right top bottom ", "back-color": "group.background", "background-offset": "0, 0", "class": "CParamDisplay", "default-value": "0.5", "font": "~ NormalFont", "font-antialias": "true", "font-color": "list.text", "frame-color": "group.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "0, 0", "round-rect-radius": "6", "shadow-color": "~ TransparentCColor", "size": "535, 415", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "true", "style-round-rect": "true", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "3.6", "text-shadow-offset": "1, 1", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 10", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "150, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Class Infos:", "transparent": "true", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CScrollView": { "attributes": { "auto-drag-scrolling": "false", "auto-hide-scrollbars": "true", "autosize": "left top bottom ", "background-color": "list.background", "background-color-draw-style": "filled and stroked", "bordered": "false", "class": "CScrollView", "container-size": "160, 72", "follow-focus-view": "false", "horizontal-scrollbar": "false", "mouse-enabled": "true", "opacity": "1", "origin": "10, 35", "overlay-scrollbars": "false", "scrollbar-background-color": "scrollbar.background", "scrollbar-frame-color": "scrollbar.frame", "scrollbar-scroller-color": "scrollbar.scroller", "scrollbar-width": "10", "size": "160, 370", "transparent": "false", "vertical-scrollbar": "true", "wants-focus": "false" }, "children": { "CStringListControl": { "attributes": { "autosize": "left right top ", "back-color": "~ TransparentCColor", "back-color-selected": "list.background.selected", "class": "CStringListControl", "control-tag": "ClassInfoList", "default-value": "0.5", "font": "list", "font-color": "list.text", "font-color-selected": "list.text.selected", "hover-color": "None", "line-color": "~ BlackCColor", "line-width": "-1", "max-value": "2", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "0, 0", "row-height": "24", "size": "160, 72", "style-hover": "false", "text-alignment": "left", "text-inset": "5", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } } } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "175, 60", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "95, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Name:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "ClassInfo::Name", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "275, 60", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "245, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "ADelay", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "175, 85", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "95, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Vendor:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "ClassInfo::Vendor", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "275, 85", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "245, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Steinberg Media Technologies", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "175, 110", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "95, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Version:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "ClassInfo::Version", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "275, 110", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "245, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "1.1.0.1", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "175, 135", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "95, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "SDKVersion:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "ClassInfo::SDKVersion", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "275, 135", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "245, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "VST 3.7.1", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "175, 160", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "95, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "SubCategories:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "ClassInfo::SubCategories", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "275, 160", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "245, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Fx|Delay", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "175, 35", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "95, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Category:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "ClassInfo::Category", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "275, 35", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "245, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Audio Module Class", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "175, 185", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "95, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "UID:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "ClassInfo::ClassID", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "275, 185", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "245, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "0CDBB66985D548A9BFD8371909D24BB3", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "175, 210", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "95, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Cardinality:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "ClassInfo::Cardinality", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "275, 210", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "245, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "175, 235", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "95, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Class Flags:", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left right top ", "back-color": "list.background", "background-offset": "0, 0", "class": "CTextLabel", "control-tag": "ClassInfo::ClassFlags", "default-value": "0.5", "font": "list", "font-antialias": "true", "font-color": "list.text", "frame-color": "list.frame", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "275, 235", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "245, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "left", "text-inset": "5, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "0b00000000000000000000000000000001", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CScrollView": { "attributes": { "auto-drag-scrolling": "false", "auto-hide-scrollbars": "true", "autosize": "left right top bottom ", "background-color": "list.background", "background-color-draw-style": "filled and stroked", "bordered": "false", "class": "CScrollView", "container-size": "50, 50", "follow-focus-view": "false", "horizontal-scrollbar": "true", "mouse-enabled": "true", "opacity": "1", "origin": "175, 260", "overlay-scrollbars": "false", "scrollbar-background-color": "scrollbar.background", "scrollbar-frame-color": "scrollbar.frame", "scrollbar-scroller-color": "scrollbar.scroller", "scrollbar-width": "10", "size": "345, 145", "sub-controller": "SnapshotViewController", "transparent": "false", "vertical-scrollbar": "true", "wants-focus": "false" }, "children": { "CView": { "attributes": { "class": "CView", "custom-view-name": "ImageView", "mouse-enabled": "true", "opacity": "1", "origin": "0, 0", "size": "50, 50", "transparent": "false", "wants-focus": "false" } } } } } } } } } } }vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/inspectorapp/source/000077500000000000000000000000001461511344300243105ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/inspectorapp/source/app.cpp000066400000000000000000000062631461511344300256030ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : VST3Inspector // Filename : public.sdk/samples/vst-hosting/inspectorapp/app.cpp // Created by : Steinberg, 01/2021 // Description : VST3 Inspector Application // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstgui/standalone/include/helpers/appdelegate.h" #include "vstgui/standalone/include/helpers/windowlistener.h" #include "vstgui/standalone/include/iapplication.h" #include "window.h" //------------------------------------------------------------------------ namespace VST3Inspector { using namespace VSTGUI; using namespace VSTGUI::Standalone; //------------------------------------------------------------------------ struct App : Application::DelegateAdapter, WindowListenerAdapter { App () : Application::DelegateAdapter ({"VST3Inspector", "1.0.0", VSTGUI_STANDALONE_APP_URI}) {} void finishLaunching () override { if (auto window = makeWindow ()) { window->registerWindowListener (this); window->show (); } } void onClosed (const IWindow& window) override { IApplication::instance ().quit (); } }; //------------------------------------------------------------------------ static Application::Init gAppDelegate (std::make_unique ()); //------------------------------------------------------------------------ } // VST3Inspector vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/inspectorapp/source/window.cpp000066400000000000000000000427561461511344300263410ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : VST3Inspector // Filename : public.sdk/samples/vst-hosting/inspectorapp/window.cpp // Created by : Steinberg, 01/2021 // Description : VST3 Inspector Application // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "window.h" #include "vstgui/lib/cbitmap.h" #include "vstgui/lib/platform/platformfactory.h" #include "vstgui/standalone/include/helpers/menubuilder.h" #include "vstgui/standalone/include/helpers/uidesc/customization.h" #include "vstgui/standalone/include/helpers/value.h" #include "vstgui/standalone/include/helpers/valuelistener.h" #include "vstgui/standalone/include/helpers/windowcontroller.h" #include "vstgui/standalone/include/ialertbox.h" #include "vstgui/standalone/include/iapplication.h" #include "vstgui/standalone/include/iasync.h" #include "vstgui/standalone/include/iuidescwindow.h" #include "vstgui/uidescription/cstream.h" #include "vstgui/uidescription/delegationcontroller.h" #include "vstgui/uidescription/iuidescription.h" #include "vstgui/uidescription/uiattributes.h" #include "public.sdk/source/vst/hosting/module.h" #include "public.sdk/source/vst/moduleinfo/moduleinfo.h" #include "public.sdk/source/vst/moduleinfo/moduleinfocreator.h" #include "public.sdk/source/vst/moduleinfo/moduleinfoparser.h" #include #include #include //------------------------------------------------------------------------ namespace VST3Inspector { namespace { //------------------------------------------------------------------------ std::string loadFile (const std::string& path) { std::ifstream file (path, std::ios_base::in | std::ios_base::binary); if (!file.is_open ()) return {}; auto size = file.seekg (0, std::ios_base::end).tellg (); file.seekg (0, std::ios_base::beg); std::string data; data.resize (size); file.read (data.data (), data.size ()); if (file.bad ()) return {}; return data; } //------------------------------------------------------------------------ } // anonymous using namespace VSTGUI; using namespace VSTGUI::Standalone; using namespace Steinberg; //------------------------------------------------------------------------ class DummyFactory : public IPluginFactory { public: static DummyFactory* instance () { static DummyFactory gInstance; return &gInstance; } private: tresult PLUGIN_API getFactoryInfo (PFactoryInfo* info) override { *info = {}; return kResultTrue; } int32 PLUGIN_API countClasses () override { return 0; } tresult PLUGIN_API getClassInfo (int32 index, PClassInfo* info) override { return kResultFalse; } tresult PLUGIN_API createInstance (FIDString cid, FIDString _iid, void** obj) override { return kNoInterface; } tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) override { QUERY_INTERFACE (_iid, obj, IPluginFactory::iid, IPluginFactory) QUERY_INTERFACE (_iid, obj, FUnknown::iid, FUnknown) return kNoInterface; } uint32 PLUGIN_API addRef () override { return 1000; } uint32 PLUGIN_API release () override { return 1000; } }; //------------------------------------------------------------------------ class InvalidModule : public VST3::Hosting::Module { public: InvalidModule () { factory = VST3::Hosting::PluginFactory (DummyFactory::instance ()); } private: bool load (const std::string& path, std::string& errorDescription) override { return true; }; }; //------------------------------------------------------------------------ struct ValueMap { ValuePtr addValue (const ValuePtr& value) { auto index = valueList.size (); valueList.push_back (value); valueMap.insert ({value->getID ().getString (), index}); return value; } ValuePtr get (const std::string& ID) { auto it = valueMap.find (ID); if (it != valueMap.end ()) return valueList.at (it->second); return nullptr; } template auto get (const std::string& ID) { if (auto value = get (ID)) { return std::dynamic_pointer_cast (value); } return std::shared_ptr (nullptr); } const UIDesc::IModelBinding::ValueList& getValues () const { return valueList; } private: UIDesc::IModelBinding::ValueList valueList; std::unordered_map valueMap; }; //------------------------------------------------------------------------ static constexpr auto ModulePathListID = "ModulePathList"; static constexpr auto ModulePathID = "Module::Path"; static constexpr auto FactoryVendorID = "Factory::Vendor"; static constexpr auto FactoryUrlID = "Factory::URL"; static constexpr auto FactoryEMailID = "Factory::EMail"; static constexpr auto FactoryFlagsID = "Factory::Flags"; static constexpr auto ClassInfoListID = "ClassInfoList"; static constexpr auto ClassInfoClassID = "ClassInfo::ClassID"; static constexpr auto ClassInfoCategoryID = "ClassInfo::Category"; static constexpr auto ClassInfoNameID = "ClassInfo::Name"; static constexpr auto ClassInfoVendorID = "ClassInfo::Vendor"; static constexpr auto ClassInfoVersionID = "ClassInfo::Version"; static constexpr auto ClassInfoSDKVersionID = "ClassInfo::SDKVersion"; static constexpr auto ClassInfoSubCategoriesID = "ClassInfo::SubCategories"; static constexpr auto ClassInfoCardinalityID = "ClassInfo::Cardinality"; static constexpr auto ClassInfoClassFlagsID = "ClassInfo::ClassFlags"; using namespace VST3::Hosting; //------------------------------------------------------------------------ struct SnapshotController : DelegationController, NonAtomicReferenceCounted { SnapshotController (IController* parent) : DelegationController (parent) {} ~SnapshotController () noexcept {} CView* createView (const UIAttributes& attributes, const IUIDescription* description) override { if (auto viewName = attributes.getAttributeValue (IUIDescription::kCustomViewName)) { if (*viewName == "ImageView") { imageView = VSTGUI::shared (new CView (CRect ())); return imageView; } } return controller->createView (attributes, description); } void setSnapshot (const std::string& moduleBasePath, const ModuleInfo::SnapshotList* newSnapshot) { snapshot = newSnapshot ? *newSnapshot : ModuleInfo::SnapshotList (); if (snapshot.empty ()) { imageView->setBackground (nullptr); imageView->setViewSize ({}); } else { SharedPointer bitmap; const auto& factory = getPlatformFactory (); for (const auto& imageDesc : snapshot) { if (auto pb = factory.createBitmapFromPath ( (moduleBasePath + "/" + imageDesc.path).data ())) { pb->setScaleFactor (imageDesc.scaleFactor); if (bitmap) bitmap->addBitmap (pb); else bitmap = makeOwned (pb); } } imageView->setBackground (bitmap); if (bitmap) { auto viewSize = imageView->getViewSize (); viewSize.setSize (bitmap->getSize ()); imageView->setViewSize (viewSize); } } } SharedPointer imageView; ModuleInfo::SnapshotList snapshot; }; //------------------------------------------------------------------------ struct WindowController : WindowControllerAdapter, UIDesc::CustomizationAdapter, UIDesc::IModelBinding, MenuBuilderAdapter, ValueListenerAdapter { WindowController () { values.addValue (Value::makeStringListValue (ModulePathListID, {"", ""})) ->registerListener (this); // Module Values values.addValue (Value::makeStringValue (ModulePathID, "")); // Factory Values values.addValue (Value::makeStringValue (FactoryVendorID, "")); values.addValue (Value::makeStringValue (FactoryUrlID, "")); values.addValue (Value::makeStringValue (FactoryEMailID, "")); values.addValue (Value::makeStringValue (FactoryFlagsID, "")); values.addValue (Value::makeStringListValue (ClassInfoListID, {"", ""})) ->registerListener (this); // Class Info Values values.addValue (Value::makeStringValue (ClassInfoClassID, "")); values.addValue (Value::makeStringValue (ClassInfoCategoryID, "")); values.addValue (Value::makeStringValue (ClassInfoNameID, "")); values.addValue (Value::makeStringValue (ClassInfoVendorID, "")); values.addValue (Value::makeStringValue (ClassInfoVersionID, "")); values.addValue (Value::makeStringValue (ClassInfoSDKVersionID, "")); values.addValue (Value::makeStringValue (ClassInfoSubCategoriesID, "")); values.addValue (Value::makeStringValue (ClassInfoCardinalityID, "")); values.addValue (Value::makeStringValue (ClassInfoClassFlagsID, "")); Async::schedule (Async::backgroundQueue (), [this] () { auto modulePaths = Module::getModulePaths (); Async::schedule (Async::mainQueue (), [this, paths = std::move (modulePaths)] () mutable { setModulePaths (std::move (paths)); }); }); } static Optional lastPathComponent (const std::string& path) { #if SMTG_WINDOWS static constexpr auto pathSeparator = '\\'; #else static constexpr auto pathSeparator = '/'; #endif size_t sepPos = path.find_last_of (pathSeparator); if (sepPos == std::string::npos) return {}; return {path.substr (sepPos + 1)}; } void setModulePaths (Module::PathList&& pathList) { modulePathList = std::move (pathList); std::sort (modulePathList.begin (), modulePathList.end (), [] (const auto& lhs, const auto& rhs) { auto lhsName = lastPathComponent (lhs); auto rhsName = lastPathComponent (rhs); if (lhsName && rhsName) { std::for_each (lhsName->begin (), lhsName->end (), [] (auto& c) { c = std::tolower (c); }); std::for_each (rhsName->begin (), rhsName->end (), [] (auto& c) { c = std::tolower (c); }); return *lhsName < *rhsName; } return lhs < rhs; }); moduleInfos.clear (); moduleInfos.resize (modulePathList.size ()); IStringListValue::StringList nameList; for (const auto& path : modulePathList) { if (auto name = lastPathComponent (path)) nameList.emplace_back (UTF8String (*name)); else nameList.emplace_back (UTF8String (path)); } if (auto value = values.get (ModulePathListID)) value->updateStringList (nameList); if (auto value = values.get (ModulePathListID)) Value::performSingleEdit (*value, 0.); } void onEndEdit (IValue& value) override { if (value.getID () == ModulePathListID) { onModuleSelection (value.getConverter ().normalizedToPlain (value.getValue ())); } if (value.getID () == ClassInfoListID) { onClassInfoSelection (value.getConverter ().normalizedToPlain (value.getValue ())); } } void setStringValue (const std::string& valueID, const std::string& string) { auto value = values.get (valueID); if (value) Value::performStringValueEdit (*value, UTF8String (string)); } std::string createFlagsString (int32_t flags) const { std::string flagsString = "0b"; for (int32_t i = 31; i >= 0; --i) { if (flags & (1 << i)) flagsString += "1"; else flagsString += "0"; } return flagsString; } std::string createSubCategoryString (const ModuleInfo::ClassInfo& info) const { std::string result; for (const auto& cat : info.subCategories) { if (result.empty () == false) result += "|"; result += cat; } return result; } void onClassInfoSelection (uint32_t index) { if (index >= moduleInfos[currentSelectedModule].classes.size ()) { setStringValue (ClassInfoClassID, ""); setStringValue (ClassInfoCategoryID, ""); setStringValue (ClassInfoNameID, ""); setStringValue (ClassInfoVendorID, ""); setStringValue (ClassInfoVersionID, ""); setStringValue (ClassInfoSDKVersionID, ""); setStringValue (ClassInfoSubCategoriesID, ""); setStringValue (ClassInfoCardinalityID, ""); setStringValue (ClassInfoClassFlagsID, ""); if (snapShotController) snapShotController->setSnapshot ("", nullptr); return; } const auto& cl = moduleInfos[currentSelectedModule].classes[index]; setStringValue (ClassInfoClassID, cl.cid); setStringValue (ClassInfoCategoryID, cl.category); setStringValue (ClassInfoNameID, cl.name); setStringValue (ClassInfoVendorID, cl.vendor); setStringValue (ClassInfoVersionID, cl.version); setStringValue (ClassInfoSDKVersionID, cl.sdkVersion); setStringValue (ClassInfoSubCategoriesID, createSubCategoryString (cl)); if (cl.cardinality == Steinberg::PClassInfo::ClassCardinality::kManyInstances) setStringValue (ClassInfoCardinalityID, ""); else setStringValue (ClassInfoCardinalityID, std::to_string (cl.cardinality)); setStringValue (ClassInfoClassFlagsID, createFlagsString (cl.flags)); if (snapShotController) snapShotController->setSnapshot (modulePathList[currentSelectedModule], &cl.snapshots); } void updateModuleInfo (uint32_t index) { const auto& modulePath = modulePathList[index]; if (auto moduleInfoPath = Module::getModuleInfoPath (modulePath)) { auto moduleJson = loadFile (*moduleInfoPath); if (auto moduleInfo = ModuleInfoLib::parseJson (moduleJson, nullptr)) { moduleInfos[index] = *moduleInfo; } } else { std::string errorDesc; if (auto module = Module::create (modulePath, errorDesc)) { moduleInfos[index] = ModuleInfoLib::createModuleInfo (*module.get (), true); } } } void onModuleSelection (uint32_t index) { if (index >= modulePathList.size ()) return; currentSelectedModule = index; if (moduleInfos[index].name.empty ()) { updateModuleInfo (index); } const auto& moduleInfo = moduleInfos[index]; const auto& modulePath = modulePathList[index]; setStringValue (ModulePathID, modulePath); setStringValue (FactoryVendorID, moduleInfo.factoryInfo.vendor); setStringValue (FactoryUrlID, moduleInfo.factoryInfo.url); setStringValue (FactoryEMailID, moduleInfo.factoryInfo.email); setStringValue (FactoryFlagsID, createFlagsString (moduleInfo.factoryInfo.flags)); IStringListValue::StringList classInfoList; for (const auto& classInfo : moduleInfo.classes) { classInfoList.emplace_back (classInfo.name); } if (auto value = values.get (ClassInfoListID)) { value->updateStringList (classInfoList); } // select first class info if (auto value = values.get (ClassInfoListID)) Value::performSingleEdit (*value, 0.); } const ValueList& getValues () const override { return values.getValues (); } IController* createController (const UTF8StringView& name, IController* parent, const IUIDescription* uiDesc) override { if (name == "SnapshotViewController") { snapShotController = VSTGUI::shared (new SnapshotController (parent)); return snapShotController; } return nullptr; } bool showCommandInMenu (const Interface& context, const Command& cmd) const override { return false; } private: ValueMap values; ValuePtr modulePathListValue; SharedPointer snapShotController; using ModuleInfoList = std::vector; Module::PathList modulePathList; ModuleInfoList moduleInfos; uint32_t currentSelectedModule {0}; }; //------------------------------------------------------------------------ WindowPtr makeWindow () { auto controller = std::make_shared (); UIDesc::Config config; config.uiDescFileName = "window.uidesc"; config.viewName = "MainWindow"; config.windowConfig.autoSaveFrameName = "MainWindow"; config.windowConfig.type = WindowType::Document; config.windowConfig.style = WindowStyle ().border ().close ().centered ().size (); config.windowConfig.title = "VST3 Inspector"; config.customization = controller; config.modelBinding = controller; return UIDesc::makeWindow (config); } //------------------------------------------------------------------------ } // VST3Inspector vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/inspectorapp/source/window.h000066400000000000000000000047621461511344300260010ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : VST3Inspector // Filename : public.sdk/samples/vst-hosting/inspectorapp/window.h // Created by : Steinberg, 01/2021 // Description : VST3 Inspector Application // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstgui/standalone/include/iwindow.h" //------------------------------------------------------------------------ namespace VST3Inspector { //------------------------------------------------------------------------ VSTGUI::Standalone::WindowPtr makeWindow (); //------------------------------------------------------------------------ } // VST3Inspector vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/validator/000077500000000000000000000000001461511344300222665ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/validator/CMakeLists.txt000066400000000000000000000201571461511344300250330ustar00rootroot00000000000000 set(validator_sources ${SDK_ROOT}/public.sdk/source/common/memorystream.cpp ${SDK_ROOT}/public.sdk/source/main/moduleinit.cpp ${SDK_ROOT}/public.sdk/source/main/moduleinit.h ${SDK_ROOT}/public.sdk/source/vst/moduleinfo/moduleinfoparser.cpp ${SDK_ROOT}/public.sdk/source/vst/moduleinfo/moduleinfoparser.h ${SDK_ROOT}/public.sdk/source/vst/hosting/test/connectionproxytest.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/test/eventlisttest.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/test/hostclassestest.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/test/parameterchangestest.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/test/pluginterfacesupporttest.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/test/processdatatest.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/plugprovider.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/plugprovider.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/busactivation.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/busactivation.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/busconsistency.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/busconsistency.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/businvalidindex.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/businvalidindex.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/checkaudiobusarrangement.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/checkaudiobusarrangement.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/scanbusses.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/scanbusses.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/sidechainarrangement.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/bus/sidechainarrangement.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/editorclasses.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/editorclasses.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/midilearn.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/midilearn.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/midimapping.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/midimapping.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/plugcompat.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/plugcompat.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/scanparameters.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/scanparameters.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/suspendresume.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/suspendresume.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/terminit.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/general/terminit.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/noteexpression/keyswitch.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/noteexpression/keyswitch.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/noteexpression/noteexpression.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/noteexpression/noteexpression.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/automation.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/automation.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/process.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/process.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processcontextrequirements.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processcontextrequirements.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processformat.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processformat.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processinputoverwriting.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processinputoverwriting.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processtail.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processtail.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processthreaded.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/processthreaded.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/silenceflags.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/silenceflags.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/silenceprocessing.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/silenceprocessing.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/speakerarrangement.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/speakerarrangement.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/variableblocksize.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/processing/variableblocksize.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/state/bypasspersistence.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/state/bypasspersistence.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/state/invalidstatetransition.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/state/invalidstatetransition.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/state/repeatidenticalstatetransition.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/state/repeatidenticalstatetransition.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/state/validstatetransition.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/state/validstatetransition.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/testbase.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/testbase.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/unit/checkunitstructure.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/unit/checkunitstructure.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/unit/scanprograms.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/unit/scanprograms.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/unit/scanunits.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/unit/scanunits.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/vststructsizecheck.h ${SDK_ROOT}/public.sdk/source/vst/testsuite/vsttestsuite.cpp ${SDK_ROOT}/public.sdk/source/vst/testsuite/vsttestsuite.h ${SDK_ROOT}/public.sdk/source/vst/utility/testing.cpp ${SDK_ROOT}/public.sdk/source/vst/utility/testing.h source/main.cpp source/usediids.cpp source/validator.cpp source/validator.h source/testsuite.h ) if(SMTG_MAC) set(validator_sources ${validator_sources} ${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm ) set_source_files_properties( "${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm" PROPERTIES COMPILE_FLAGS "-fobjc-arc" ) elseif(SMTG_LINUX) set(validator_sources ${validator_sources} ${SDK_ROOT}/public.sdk/source/vst/hosting/module_linux.cpp ) elseif(SMTG_WIN) set(validator_sources ${validator_sources} ${SDK_ROOT}/public.sdk/source/vst/hosting/module_win32.cpp ) endif(SMTG_MAC) set(target validator) add_executable(${target} ${validator_sources}) if(SDK_IDE_HOSTING_EXAMPLES_FOLDER) set_target_properties(${target} PROPERTIES ${SDK_IDE_HOSTING_EXAMPLES_FOLDER} ) endif(SDK_IDE_HOSTING_EXAMPLES_FOLDER) target_compile_features(${target} PUBLIC cxx_std_17 ) target_link_libraries(${target} PRIVATE sdk_hosting ) smtg_target_codesign(${target}) smtg_target_setup_universal_binary(${target}) if(APPLE AND NOT XCODE) find_library(COCOA_FRAMEWORK Cocoa) target_link_libraries(${target} PRIVATE ${COCOA_FRAMEWORK} ) endif(APPLE AND NOT XCODE) ##################################################### if(SMTG_RUN_VST_VALIDATOR) #################### # Workaround for Xcode 15 not allowing to add adhoc_codesign linker setting #################### if(SMTG_MAC AND XCODE_VERSION VERSION_GREATER_EQUAL 15) add_custom_command( TARGET ${target} POST_BUILD COMMENT "[SMTG] Adhoc codesign workaround for Xcode 15" COMMAND codesign --force --verbose --sign - "$" ) endif() add_custom_command(TARGET ${target} POST_BUILD COMMAND $ "-selftest" ) endif(SMTG_RUN_VST_VALIDATOR) vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/validator/source/000077500000000000000000000000001461511344300235665ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/validator/source/main.cpp000066400000000000000000000073271461511344300252270ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Validator // Filename : main.cpp // Created by : Steinberg, 04/2005 // Description : main entry point // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "validator.h" #include "public.sdk/source/vst/utility/stringconvert.h" void* moduleHandle = nullptr; extern bool InitModule (); extern bool DeinitModule (); //------------------------------------------------------------------------ int run (int argc, char* argv[]) { InitModule (); auto result = Steinberg::Vst::Validator (argc, argv).run (); DeinitModule (); return result; } //------------------------------------------------------------------------ #if SMTG_OS_WINDOWS //------------------------------------------------------------------------ using Utf8String = std::string; //------------------------------------------------------------------------ using Utf8Args = std::vector; Utf8Args toUtf8Args (int argc, wchar_t* wargv[]) { Utf8Args utf8Args; for (int i = 0; i < argc; i++) { auto str = reinterpret_cast (wargv[i]); utf8Args.push_back (VST3::StringConvert::convert (str)); } return utf8Args; } //------------------------------------------------------------------------ using Utf8ArgPtrs = std::vector; Utf8ArgPtrs toUtf8ArgPtrs (Utf8Args& utf8Args) { Utf8ArgPtrs utf8ArgPtrs; for (auto& el : utf8Args) { utf8ArgPtrs.push_back (el.data ()); } return utf8ArgPtrs; } //------------------------------------------------------------------------ int wmain (int argc, wchar_t* wargv[]) { Utf8Args utf8Args = toUtf8Args (argc, wargv); Utf8ArgPtrs utf8ArgPtrs = toUtf8ArgPtrs (utf8Args); char** argv = &(utf8ArgPtrs.at (0)); return run (argc, argv); } #else //------------------------------------------------------------------------ int main (int argc, char* argv[]) { return run (argc, argv); } #endif // SMTG_OS_WINDOWS vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/validator/source/testsuite.h000066400000000000000000000105771461511344300260020ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : testsuite.h // Created by : Steinberg, 05/2019 // Description : VST 3 Plug-in Validator test suite class // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "base/source/fobject.h" #include "pluginterfaces/test/itest.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // TestSuite //------------------------------------------------------------------------ class TestSuite : public ITestSuite, public FObject { public: TestSuite (FIDString _name) : name (_name) {} tresult PLUGIN_API addTest (FIDString _name, ITest* test) SMTG_OVERRIDE { tests.push_back (IPtr (NEW Test (_name, test), false)); return kResultTrue; } tresult PLUGIN_API addTestSuite (FIDString _name, ITestSuite* testSuite) SMTG_OVERRIDE { testSuites.push_back (std::make_pair (_name, testSuite)); return kResultTrue; } tresult PLUGIN_API setEnvironment (ITest* /*environment*/) SMTG_OVERRIDE { return kNotImplemented; } int32 getTestCount () const { return static_cast (tests.size ()); } tresult getTest (int32 index, ITest*& _test, std::string& _name) const { if (auto test = tests.at (index)) { _test = test->test; _name = test->name; return kResultTrue; } return kResultFalse; } tresult getTestSuite (int32 index, ITestSuite*& testSuite, std::string& _name) const { if (index < 0 || index >= int32 (testSuites.size ())) return kInvalidArgument; const auto& ts = testSuites[index]; _name = ts.first; testSuite = ts.second; return kResultTrue; } ITestSuite* getTestSuite (FIDString _name) const { for (const auto& testSuite : testSuites) { if (testSuite.first == _name) return testSuite.second; } return nullptr; } const std::string& getName () const { return name; } OBJ_METHODS (TestSuite, FObject) REFCOUNT_METHODS (FObject) DEF_INTERFACES_1 (ITestSuite, FObject) protected: class Test : public FObject { public: Test (FIDString _name, ITest* _test) : name (_name), test (_test) {} std::string name; IPtr test; }; std::string name; std::vector> tests; using TestSuitePair = std::pair>; using TestSuiteVector = std::vector; TestSuiteVector testSuites; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/validator/source/usediids.cpp000066400000000000000000000051311461511344300261030ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Validator // Filename : public.sdk/samples/vst-hosting/validator/source/usediids.cpp // Created by : Steinberg 09.2008 // Description : Interface symbols file // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- //#define INIT_CLASS_IID // This macro definition modifies the behavior of DECLARE_CLASS_IID (funknown.h) // and produces the actual symbols for all interface identifiers. // It must be defined before including the interface headers and // in only one source file! //------------------------------------------------------------------------ //#define INIT_CLASS_IID #include "pluginterfaces/base/ipluginbase.h" #include "pluginterfaces/test/itest.h" namespace Steinberg { DEF_CLASS_IID (ITestResult) } vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/validator/source/validator.cpp000066400000000000000000000661761461511344300262770ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : validator.cpp // Created by : Steinberg, 04/2005 // Description : VST 3 Plug-in Validator class // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "validator.h" #include "testsuite.h" #include "public.sdk/source/vst/hosting/plugprovider.h" #include "public.sdk/source/vst/testsuite/general/plugcompat.h" #include "public.sdk/source/vst/testsuite/vststructsizecheck.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "public.sdk/source/vst/utility/testing.h" #include "base/source/fcommandline.h" #include "pluginterfaces/base/iplugincompatibility.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstcomponent.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivsthostapplication.h" #include "pluginterfaces/vst/ivstunits.h" #include "pluginterfaces/base/funknownimpl.h" #include "pluginterfaces/gui/iplugview.h" #if SMTG_OS_WINDOWS #include #include #endif #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace { constexpr auto SEPARATOR = "-------------------------------------------------------------\n"; constexpr auto VALIDATOR_INFO = kVstVersionString " Plug-in Validator\n" "Program by Steinberg (Built on " __DATE__ ")\n"; //------------------------------------------------------------------------ bool filterClassCategory (FIDString category, FIDString classCategory) { return strcmp (category, classCategory) == 0; } //------------------------------------------------------------------------ void printAllInstalledPlugins (std::ostream* os) { if (!os) return; *os << "Searching installed Plug-ins...\n"; os->flush (); auto paths = VST3::Hosting::Module::getModulePaths (); if (paths.empty ()) { *os << "No Plug-ins found.\n"; return; } for (const auto& path : paths) { *os << path << "\n"; } } //------------------------------------------------------------------------ void printAllSnapshots (std::ostream* os) { if (!os) return; *os << "Searching installed Plug-ins...\n"; auto paths = VST3::Hosting::Module::getModulePaths (); if (paths.empty ()) { *os << "No Plug-ins found.\n"; return; } for (const auto& path : paths) { auto snapshots = VST3::Hosting::Module::getSnapshots (path); if (snapshots.empty ()) { *os << "No snapshots in " << path << "\n"; continue; } for (auto& snapshot : snapshots) { for (auto& desc : snapshot.images) { *os << "Snapshot : " << desc.path << "[" << desc.scaleFactor << "x]\n"; } } } } //------------------------------------------------------------------------ void printFactoryInfo (const VST3::Hosting::PluginFactory& factory, std::ostream* os) { if (os) { *os << "* Scanning classes...\n\n"; auto factoryInfo = factory.info (); *os << " Factory Info:\n\tvendor = " << factoryInfo.vendor () << "\n\turl = " << factoryInfo.url () << "\n\temail = " << factoryInfo.email () << "\n\n"; //---print all included plug-ins--------------- uint32 i = 0; for (auto& classInfo : factory.classInfos ()) { *os << " Class Info " << i << ":\n\tname = " << classInfo.name () << "\n\tcategory = " << classInfo.category () << "\n\tsubCategories = " << classInfo.subCategoriesString () << "\n\tversion = " << classInfo.version () << "\n\tsdkVersion = " << classInfo.sdkVersion () << "\n\tcid = " << classInfo.ID ().toString () << "\n\n"; ++i; } } } //------------------------------------------------------------------------ void checkModuleSnapshots (const VST3::Hosting::Module::Ptr& module, std::ostream* infoStream) { if (infoStream) *infoStream << "* Checking snapshots...\n\n"; auto snapshots = VST3::Hosting::Module::getSnapshots (module->getPath ()); if (snapshots.empty ()) { if (infoStream) *infoStream << "Info: No snapshots in Bundle.\n\n"; } else { for (auto& classInfo : module->getFactory ().classInfos ()) { if (!filterClassCategory (kVstAudioEffectClass, classInfo.category ().data ())) continue; bool found = false; for (auto& snapshot : snapshots) { if (snapshot.uid == classInfo.ID ()) { found = true; if (infoStream) { *infoStream << "Found snapshots for '" << classInfo.name () << "'\n"; for (auto& image : snapshot.images) *infoStream << " - " << image.path << " [" << image.scaleFactor << "x]\n"; *infoStream << "\n"; } break; } } if (!found) { if (infoStream) { *infoStream << "Info: No snapshot for '" << classInfo.name () << "' in Bundle.\n\n"; } } } } } #if SMTG_OS_LINUX //------------------------------------------------------------------------ struct DummyRunLoop : U::ImplementsNonDestroyable> { using IEventHandler = Steinberg::Linux::IEventHandler; using ITimerHandler = Steinberg::Linux::ITimerHandler; using FileDescriptor = Steinberg::Linux::FileDescriptor; using TimerInterval = Steinberg::Linux::TimerInterval; static Steinberg::Linux::IRunLoop& instance () { static DummyRunLoop drl; return drl; } tresult PLUGIN_API registerEventHandler (IEventHandler* handler, FileDescriptor fd) override { return kNotImplemented; } tresult PLUGIN_API unregisterEventHandler (IEventHandler* handler) override { return kNotImplemented; } tresult PLUGIN_API registerTimer (ITimerHandler* handler, TimerInterval milliseconds) override { return kNotImplemented; } tresult PLUGIN_API unregisterTimer (ITimerHandler* handler) override { return kNotImplemented; } }; #endif //------------------------------------------------------------------------ //-- Options constexpr auto optHelp = "help"; constexpr auto optVersion = "version"; constexpr auto optLocalInstance = "l"; constexpr auto optSuiteName = "suite"; constexpr auto optExtensiveTests = "e"; constexpr auto optQuiet = "q"; constexpr auto optTestComponentPath = "test-component"; constexpr auto optListInstalledPlugIns = "list"; constexpr auto optListPlugInSnapshots = "snapshots"; constexpr auto optCID = "cid"; constexpr auto optSelftest = "selftest"; //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ // Validator //------------------------------------------------------------------------ Validator::Validator (int argc, char* argv[]) : argc (argc), argv (argv) { infoStream = &std::cout; errorStream = &std::cout; errorStream->setf (std::ios::unitbuf); mPlugInterfaceSupport = owned (NEW PlugInterfaceSupport); PluginContextFactory::instance ().setPluginContext (this->unknownCast ()); TestingPluginContext::set (this->unknownCast ()); } //------------------------------------------------------------------------ Validator::~Validator () { } //----------------------------------------------------------------------------- tresult PLUGIN_API Validator::queryInterface (const char* _iid, void** obj) { QUERY_INTERFACE (_iid, obj, IHostApplication::iid, IHostApplication) QUERY_INTERFACE (_iid, obj, ITestResult::iid, ITestResult) if (mPlugInterfaceSupport && mPlugInterfaceSupport->queryInterface (_iid, obj) == kResultTrue) return ::Steinberg::kResultOk; return FObject::queryInterface (_iid, obj); } //------------------------------------------------------------------------ void PLUGIN_API Validator::addErrorMessage (const tchar* msg) { if (errorStream) { auto str = VST3::StringConvert::convert (msg); if (addErrorWarningTextToOutput) *errorStream << "ERROR: " << str << "\n"; else *errorStream << str << "\n"; } } //------------------------------------------------------------------------ void PLUGIN_API Validator::addMessage (const tchar* msg) { if (infoStream) { auto str = VST3::StringConvert::convert (msg); if (addErrorWarningTextToOutput) *infoStream << "Info: " << str << "\n"; else *infoStream << str << "\n"; } } //------------------------------------------------------------------------ tresult PLUGIN_API Validator::getName (String128 name) { VST3::StringConvert::convert ("vstvalidator", name, 127); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API Validator::createInstance (TUID cid, TUID iid, void** obj) { FUID classID = FUID::fromTUID (cid); FUID interfaceID = FUID::fromTUID (iid); if (classID == IMessage::iid && interfaceID == IMessage::iid) { *obj = new HostMessage; return kResultTrue; } else if (classID == IAttributeList::iid && interfaceID == IAttributeList::iid) { if (auto al = HostAttributeList::make ()) { *obj = al.take (); return kResultTrue; } return kOutOfMemory; } *obj = nullptr; return kResultFalse; } //------------------------------------------------------------------------ int Validator::run () { // defaults bool useGlobalInstance = true; bool useExtensiveTests = false; std::string testSuiteName; // parse command line CommandLine::Descriptions desc; CommandLine::VariablesMap valueMap; CommandLine::FilesVector files; using Description = CommandLine::Description; desc.addOptions ( kVstVersionString " Plug-in Validator", {{optHelp, "Print help", Description::kBool}, {optVersion, "Print version", Description::kBool}, {optLocalInstance, "Use local instance per test", Description::kBool}, {optSuiteName, "[name] Only run a special test suite", Description::kString}, {optExtensiveTests, "Run extensive tests [may take a long time]", Description::kBool}, {optQuiet, "Only print errors", Description::kBool}, {optCID, "Only test processor with specified class ID", Description::kString}, {optTestComponentPath, "[path] Path to an additional component which includes custom tests", Description::kString}, {optListInstalledPlugIns, "Show all installed Plug-Ins", Description::kBool}, {optSelftest, "Run a selftest", Description::kBool}, {optListPlugInSnapshots, "List snapshots from all installed Plug-Ins", Description::kBool}}); CommandLine::parse (argc, argv, desc, valueMap, &files); if (valueMap.count (optVersion)) { std::cout << VALIDATOR_INFO; return 0; } else if (valueMap.count (optListInstalledPlugIns)) { printAllInstalledPlugins (infoStream); return 0; } else if (valueMap.count (optListPlugInSnapshots)) { printAllSnapshots (infoStream); return 0; } else if (valueMap.count (optSelftest)) { addErrorWarningTextToOutput = false; auto testFactoryInstance = owned (createTestFactoryInstance (nullptr)); FUnknownPtr testFactory (testFactoryInstance); if (testFactory) { std::cout << "Running validator selftest:\n\n"; IPtr testSuite = owned (new TestSuite ("")); if (testFactory->createTests (nullptr, testSuite) == kResultTrue) runTestSuite (testSuite, nullptr); std::cout << "Executed " << (numTestsFailed + numTestsPassed) << " Tests.\n"; std::cout << numTestsFailed << " failed test(s).\n"; return numTestsFailed == 0 ? 0 : 1; } return 1; } else if (valueMap.hasError () || valueMap.count (optHelp) || files.empty ()) { std::cout << "\n" << desc << "\n"; std::cout << "Usage: vstvalidator [options] vst3module\n\n"; return 1; } if (valueMap.count (optLocalInstance)) useGlobalInstance = false; if (valueMap.count (optExtensiveTests)) useExtensiveTests = true; if (valueMap.count (optQuiet)) infoStream = nullptr; if (valueMap.count (optSuiteName)) testSuiteName = valueMap[optSuiteName]; VST3::Optional testProcessor; if (valueMap.count (optCID)) testProcessor = VST3::UID::fromString (valueMap[optCID]); std::string customTestComponentPath; if (valueMap.count (optTestComponentPath)) customTestComponentPath = valueMap[optTestComponentPath]; auto globalFailure = false; for (auto& path : files) { #if SMTG_OS_WINDOWS // TODO: Impl #else // if path is not absolute, create one if (path[0] != '/') { auto realPath = realpath (path.data (), NULL); if (realPath) { path.assign (realPath); free (realPath); } } if (customTestComponentPath.empty () == false && customTestComponentPath[0] != '/') { auto realPath = realpath (customTestComponentPath.data (), NULL); if (realPath) { customTestComponentPath.assign (realPath); free (realPath); } } #endif //---load VST module----------------- if (infoStream) *infoStream << "* Loading module...\n\n\t" << path << "\n\n"; std::string error; auto module = Module::create (path, error); if (!module) { *errorStream << "Invalid Module!\n"; if (!error.empty ()) *errorStream << error << "\n"; return -1; } #if SMTG_OS_LINUX module->getFactory ().setHostContext (&DummyRunLoop::instance ()); #endif testModule (module, {useGlobalInstance, useExtensiveTests, customTestComponentPath, testSuiteName, std::move (testProcessor)}); if (numTestsFailed > 0) globalFailure = true; } return globalFailure ? -1 : 0; } //------------------------------------------------------------------------ void Validator::testModule (Module::Ptr module, const ModuleTestConfig& config) { using TestFactoryMap = std::map>; using PlugProviderVector = std::vector>; numTestsFailed = numTestsPassed = 0; auto factory = module->getFactory (); printFactoryInfo (module->getFactory (), infoStream); //---check for snapshots----------------- checkModuleSnapshots (module, infoStream); Module::Ptr testModule; PlugProviderVector plugProviders; TestFactoryMap testFactories; IPtr plugCompatibility; auto testSuite = owned (new TestSuite ("Tests")); //---create tests--------------- if (infoStream) *infoStream << "* Creating tests...\n\n"; for (auto& classInfo : factory.classInfos ()) { if (filterClassCategory (kVstAudioEffectClass, classInfo.category ().data ())) { if (!config.testProcessor || *config.testProcessor == classInfo.ID ()) { auto plugProvider = owned (new PlugProvider (factory, classInfo, config.useGlobalInstance)); if (plugProvider) { auto tests = createTests (plugProvider, classInfo.name ().data (), config.useExtensiveTests); testSuite->addTestSuite (classInfo.name ().data (), tests); plugProviders.emplace_back (plugProvider); } } } else if (filterClassCategory (kTestClass, classInfo.category ().data ())) { // gather test factories supplied by the plug-in if (auto testFactory = factory.createInstance (classInfo.ID ())) { testFactories.insert (std::make_pair (classInfo.name ().data (), testFactory)); } } else if (filterClassCategory (kPluginCompatibilityClass, classInfo.category ().data ())) { if (plugCompatibility) { if (errorStream) { *errorStream << "Error: Factory contains multiple Plugin Compatibility classes.\n"; } ++numTestsFailed; } plugCompatibility = factory.createInstance (classInfo.ID ()); if (!plugCompatibility) { if (errorStream) { *errorStream << "Error: Failed creating IPluginCompatibility instance.\n"; } } } } // now check testModule if supplied if (config.customTestComponentPath.empty () == false) { std::string error; testModule = Module::create (config.customTestComponentPath, error); if (testModule) { const auto& _factory = testModule->getFactory (); for (const auto& classInfo : _factory.classInfos ()) { if (filterClassCategory (kTestClass, classInfo.category ().data ())) { // gather test factories supplied by the plug-in if (auto testFactory = _factory.createInstance (classInfo.ID ())) { testFactories.insert ( std::make_pair (classInfo.name ().data (), testFactory)); } } } } else if (errorStream) { *errorStream << "Could not create custom test component [" << config.customTestComponentPath << "]\n"; } } if (infoStream && !testFactories.empty ()) *infoStream << "* Creating Plug-in supplied tests...\n\n"; // create plug-in supplied tests for (const auto& item : testFactories) { for (const auto& plugProvider : plugProviders) { IPtr plugTestSuite = owned (new TestSuite (item.first.data ())); if (item.second->createTests (plugProvider->unknownCast (), plugTestSuite) == kResultTrue) { testSuite->addTestSuite (plugTestSuite->getName ().data (), plugTestSuite); } } } testFactories.clear (); //---run tests--------------------------- if (infoStream) *infoStream << "* Running tests...\n\n"; runTestSuite (testSuite, config.testSuiteName.empty () ? nullptr : config.testSuiteName.data ()); if (plugCompatibility) { if (!checkPluginCompatibility (module, plugCompatibility, errorStream)) ++numTestsFailed; } if (infoStream) { *infoStream << SEPARATOR; *infoStream << "Result: " << numTestsPassed << " tests passed, " << numTestsFailed << " tests failed\n"; *infoStream << SEPARATOR; } } //------------------------------------------------------------------------ namespace { // anonymous //------------------------------------------------------------------------ template void createTest (ITestSuite* parent, ITestPlugProvider* plugProvider, Args&&... arguments) { auto test = owned (new T (plugProvider, std::forward (arguments)...)); parent->addTest (test->getName (), test); } //------------------------------------------------------------------------ void createSpeakerArrangementTest (ITestSuite* parent, ITestPlugProvider* plugProvider, SymbolicSampleSizes sampleSize, SpeakerArrangement inSpArr, SpeakerArrangement outSpArr) { createTest (parent, plugProvider, sampleSize, inSpArr, outSpArr); } //------------------------------------------------------------------------ void createPrecisionTests (ITestSuite* parent, ITestPlugProvider* plugProvider, SymbolicSampleSizes sampleSize, bool extensive) { createTest (parent, plugProvider, sampleSize); createTest (parent, plugProvider, sampleSize); createTest (parent, plugProvider, sampleSize); createTest (parent, plugProvider, sampleSize); createTest (parent, plugProvider, sampleSize); createTest (parent, plugProvider, sampleSize); createTest (parent, plugProvider, sampleSize); createTest (parent, plugProvider, sampleSize); createTest (parent, plugProvider, sampleSize); createTest (parent, plugProvider, sampleSize); if (extensive) { constexpr std::array saArray = { {SpeakerArr::kMono, SpeakerArr::kStereo, SpeakerArr::kStereoSurround, SpeakerArr::kStereoCenter, SpeakerArr::kStereoSide, SpeakerArr::kStereoCLfe, SpeakerArr::k30Cine, SpeakerArr::k30Music, SpeakerArr::k31Cine, SpeakerArr::k31Music, SpeakerArr::k40Cine, SpeakerArr::k40Music, SpeakerArr::k41Cine, SpeakerArr::k41Music, SpeakerArr::k50}}; for (auto inArr : saArray) { for (auto outArr : saArray) { createSpeakerArrangementTest (parent, plugProvider, sampleSize, inArr, outArr); } } constexpr std::array autoRates = {{100, 50, 1}}; constexpr std::array numParams = {{1, 2, 10, -1}}; for (auto inp : numParams) { for (auto iar : autoRates) { createTest (parent, plugProvider, sampleSize, iar, inp, false); createTest (parent, plugProvider, sampleSize, iar, inp, true); } } } else { createSpeakerArrangementTest (parent, plugProvider, sampleSize, SpeakerArr::kStereo, SpeakerArr::kStereo); createSpeakerArrangementTest (parent, plugProvider, sampleSize, SpeakerArr::kMono, SpeakerArr::kMono); createTest (parent, plugProvider, sampleSize, 100, 1, false); createTest (parent, plugProvider, sampleSize, 100, 1, true); } } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ IPtr Validator::createTests (ITestPlugProvider* plugProvider, const ConstString& plugName, bool extensive) { IPtr plugTestSuite = owned (new TestSuite (plugName)); IPtr generalTests = owned (new TestSuite ("General Tests")); // todo: add tests here! createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider, kSample32); createTest (generalTests, plugProvider, kSample64); // createTest (generalTests, plugProvider); // createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); // createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider, kSample32); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); createTest (generalTests, plugProvider); plugTestSuite->addTestSuite (generalTests->getName ().data (), generalTests); IPtr singlePrecisionTests = owned (new TestSuite ("Single Precision (32 bit) Tests")); createPrecisionTests (singlePrecisionTests, plugProvider, kSample32, extensive); plugTestSuite->addTestSuite (singlePrecisionTests->getName ().data (), singlePrecisionTests); IPtr doublePrecisionTests = owned (new TestSuite ("Double Precision (64 bit) Tests")); createPrecisionTests (doublePrecisionTests, plugProvider, kSample64, extensive); plugTestSuite->addTestSuite (doublePrecisionTests->getName ().data (), doublePrecisionTests); return plugTestSuite; } //------------------------------------------------------------------------ void Validator::addTest (ITestSuite* _testSuite, TestBase* testItem) { _testSuite->addTest (testItem->getName (), testItem); testItem->release (); } //------------------------------------------------------------------------ void Validator::runTestSuite (TestSuite* suite, FIDString nameFilter) { std::string name; if (nameFilter == nullptr || suite->getName () == nameFilter) { nameFilter = nullptr; // make sure if suiteName is the namefilter that sub suite will run ITest* testItem = nullptr; // first run all tests in the suite for (int32 i = 0; i < suite->getTestCount (); i++) { if (suite->getTest (i, testItem, name) == kResultTrue) { if (infoStream) { *infoStream << "[" << name; if (auto desc = testItem->getDescription ()) { auto descStr = VST3::StringConvert::convert (desc); if (!descStr.empty ()) *infoStream << ": " << descStr; } *infoStream << "]\n"; } if (testItem->setup ()) { bool success = testItem->run (this); if (success) { if (infoStream) *infoStream << "[Succeeded]\n"; numTestsPassed++; } else { if (infoStream) *infoStream << "[XXXXXXX Failed]\n"; if (errorStream && errorStream != infoStream) { *errorStream << "Test [" << name << "] "; *errorStream << "Failed\n"; } numTestsFailed++; } if (!testItem->teardown ()) { if (infoStream) *infoStream << "Failed to teardown test!\n"; if (errorStream && errorStream != infoStream) { *errorStream << "[" << name << "] "; *errorStream << "Failed to teardown test!\n"; } } } else { testItem->teardown (); if (infoStream) *infoStream << "Failed to setup test!\n"; if (errorStream && errorStream != infoStream) { *errorStream << "[" << name << "] "; *errorStream << "Failed to setup test!\n"; } } if (infoStream) *infoStream << "\n"; } } } // next run sub suites int32 subTestSuiteIndex = 0; ITestSuite* subSuite = nullptr; while (suite->getTestSuite (subTestSuiteIndex++, subSuite, name) == kResultTrue) { auto* ts = FCast (subSuite); if (ts) { if (infoStream) { *infoStream << SEPARATOR; *infoStream << "TestSuite : " << ts->getName ().data () << "\n"; *infoStream << SEPARATOR << "\n"; } runTestSuite (ts, nameFilter); } } } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst-hosting/validator/source/validator.h000066400000000000000000000131061461511344300257250ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : validator.h // Created by : Steinberg, 04/2005 // Description : VST 3 Plug-in Validator class // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/hosting/hostclasses.h" #include "public.sdk/source/vst/hosting/module.h" #include "public.sdk/source/vst/hosting/pluginterfacesupport.h" #include "public.sdk/source/vst/testsuite/vsttestsuite.h" #include "base/source/fstring.h" #include "pluginterfaces/base/ipluginbase.h" #include "pluginterfaces/test/itest.h" #include namespace Steinberg { namespace Vst { class IComponent; class IEditController; class VstModule; class TestBase; class TestSuite; //------------------------------------------------------------------------ /** Main Class of Validator. \ingroup Validator */ //------------------------------------------------------------------------ class Validator : public FObject, public ITestResult, public IHostApplication { public: //------------------------------------------------------------------------ Validator (int argc, char* argv[]); ~Validator () override; int run (); //------------------------------------------------------------------------ OBJ_METHODS (Validator, FObject) REFCOUNT_METHODS (FObject) tresult PLUGIN_API queryInterface (const char* _iid, void** obj) override; //------------------------------------------------------------------------ protected: using Module = VST3::Hosting::Module; // ITestResult void PLUGIN_API addErrorMessage (const tchar* msg) override; void PLUGIN_API addMessage (const tchar* msg) override; // IHostApplication tresult PLUGIN_API getName (String128 name) override; tresult PLUGIN_API createInstance (TUID cid, TUID iid, void** obj) override; IPtr createTests (ITestPlugProvider* plugProvider, const ConstString& plugName, bool extensive); void addTest (ITestSuite* testSuite, TestBase* test); void runTestSuite (TestSuite* suite, FIDString nameFilter = nullptr); struct ModuleTestConfig { ModuleTestConfig (bool useGlobalInstance, bool useExtensiveTests, std::string& customTestComponentPath, std::string& testSuiteName, VST3::Optional&& testProcessor) : useGlobalInstance (useGlobalInstance) , useExtensiveTests (useExtensiveTests) , customTestComponentPath (customTestComponentPath) , testSuiteName (testSuiteName) , testProcessor (std::move (testProcessor)) { } bool useGlobalInstance {true}; bool useExtensiveTests {false}; std::string customTestComponentPath; std::string testSuiteName; VST3::Optional testProcessor; }; void testModule (Module::Ptr module, const ModuleTestConfig& config); int argc; char** argv; IPtr mPlugInterfaceSupport; int32 numTestsFailed {0}; int32 numTestsPassed {0}; bool addErrorWarningTextToOutput {true}; std::ostream* infoStream {nullptr}; std::ostream* errorStream {nullptr}; }; //------------------------------------------------------------------------ /** This handles the plug-in factory in its library. \ingroup Validator */ //------------------------------------------------------------------------ class VstModule : public FObject { public: //------------------------------------------------------------------------ VstModule (const char* path); ~VstModule () override; bool isValid () const; IPluginFactory* getFactory () { return factory; } //------------------------------------------------------------------------ OBJ_METHODS (VstModule, FObject) //------------------------------------------------------------------------ protected: void* libHandle; IPluginFactory* factory; }; } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst-utilities/000077500000000000000000000000001461511344300206415ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-utilities/CMakeLists.txt000066400000000000000000000005161461511344300234030ustar00rootroot00000000000000 if(ANDROID) return() endif(ANDROID) # Add VST3 Hosting Samples if(NOT DEFINED SMTG_ADD_VST3_UTILITIES) option(SMTG_ADD_VST3_UTILITIES "Build VST3 Utilities" ON) endif(NOT DEFINED SMTG_ADD_VST3_UTILITIES) if(SMTG_ADD_VST3_UTILITIES) include(SMTG_AddSubDirectories) smtg_add_subdirectories() endif(SMTG_ADD_VST3_UTILITIES) vst3sdk-3.7.10.14+~4.13.3/samples/vst-utilities/moduleinfotool/000077500000000000000000000000001461511344300237005ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-utilities/moduleinfotool/CMakeLists.txt000066400000000000000000000033171461511344300264440ustar00rootroot00000000000000 set(moduleinfotool_sources source/main.cpp ../../../source/vst/moduleinfo/json.h ../../../source/vst/moduleinfo/jsoncxx.h ../../../source/vst/moduleinfo/moduleinfo.h ../../../source/vst/moduleinfo/moduleinfocreator.cpp ../../../source/vst/moduleinfo/moduleinfocreator.h ../../../source/vst/moduleinfo/moduleinfoparser.cpp ../../../source/vst/moduleinfo/moduleinfoparser.h ) if(SMTG_MAC) set(moduleinfotool_sources ${moduleinfotool_sources} ${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm ) set_source_files_properties( "${SDK_ROOT}/public.sdk/source/vst/hosting/module_mac.mm" PROPERTIES COMPILE_FLAGS "-fobjc-arc" ) elseif(SMTG_LINUX) set(moduleinfotool_sources ${moduleinfotool_sources} ${SDK_ROOT}/public.sdk/source/vst/hosting/module_linux.cpp ) elseif(SMTG_WIN) set(moduleinfotool_sources ${moduleinfotool_sources} ${SDK_ROOT}/public.sdk/source/vst/hosting/module_win32.cpp ) endif(SMTG_MAC) set(target moduleinfotool) add_executable(${target} ${moduleinfotool_sources}) if(SDK_IDE_UTILITIES_FOLDER) set_target_properties(${target} PROPERTIES ${SDK_IDE_UTILITIES_FOLDER} ) endif(SDK_IDE_UTILITIES_FOLDER) target_compile_features(${target} PUBLIC cxx_std_17 ) target_link_libraries(${target} PRIVATE sdk_hosting ) smtg_target_codesign(${target}) smtg_target_setup_universal_binary(${target}) if(APPLE AND NOT XCODE) find_library(COCOA_FRAMEWORK Cocoa) target_link_libraries(${target} PRIVATE ${COCOA_FRAMEWORK} ) endif(APPLE AND NOT XCODE) if(MINGW) set_target_properties(${target} PROPERTIES LINK_FLAGS "-municode") endif(MINGW) vst3sdk-3.7.10.14+~4.13.3/samples/vst-utilities/moduleinfotool/source/000077500000000000000000000000001461511344300252005ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst-utilities/moduleinfotool/source/main.cpp000066400000000000000000000343631461511344300266410ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // // Category : moduleinfotool // Filename : public.sdk/samples/vst-utilities/moduleinfotool/main.cpp // Created by : Steinberg, 12/2021 // Description : main entry point // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/common/readfile.h" #include "public.sdk/source/vst/hosting/module.h" #include "public.sdk/source/vst/moduleinfo/moduleinfocreator.h" #include "public.sdk/source/vst/moduleinfo/moduleinfoparser.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "base/source/fcommandline.h" #include "pluginterfaces/base/fplatform.h" #include "pluginterfaces/vst/vsttypes.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace ModuleInfoTool { namespace { //------------------------------------------------------------------------ constexpr auto BUILD_INFO = "moduleinfotool 1.0.0 [Built " __DATE__ "]"; //------------------------------------------------------------------------ //-- Options constexpr auto optHelp = "help"; constexpr auto optCreate = "create"; constexpr auto optValidate = "validate"; constexpr auto optModuleVersion = "version"; constexpr auto optModulePath = "path"; constexpr auto optInfoPath = "infopath"; constexpr auto optModuleCompatPath = "compat"; constexpr auto optOutputPath = "output"; //------------------------------------------------------------------------ void printUsage (std::ostream& s) { s << "Usage:\n"; s << " moduleinfotool -create -version VERSION -path MODULE_PATH [-compat PATH -output PATH]\n"; s << " moduleinfotool -validate -path MODULE_PATH [-infopath PATH]\n"; } //------------------------------------------------------------------------ std::optional openAndParseCompatJSON (const std::string& path) { auto data = readFile (path); if (data.empty ()) { std::cout << "Can not read '" << path << "'\n"; printUsage (std::cout); return {}; } std::stringstream error; auto result = ModuleInfoLib::parseCompatibilityJson (data, &error); if (!result) { std::cout << "Can not parse '" << path << "'\n"; std::cout << error.str (); printUsage (std::cout); return {}; } return result; } //------------------------------------------------------------------------ int createJSON (const std::optional& compat, const std::string& modulePath, const std::string& moduleVersion, std::ostream& outStream) { std::string errorStr; auto module = VST3::Hosting::Module::create (modulePath, errorStr); if (!module) { std::cout << errorStr; return 1; } auto moduleInfo = ModuleInfoLib::createModuleInfo (*module, false); if (compat) moduleInfo.compatibility = *compat; moduleInfo.version = moduleVersion; std::stringstream output; ModuleInfoLib::outputJson (moduleInfo, output); auto str = output.str (); outStream << str; return 0; } //------------------------------------------------------------------------ struct validate_error : std::exception { validate_error (const std::string& str) : str (str) {} const char* what () const noexcept override { return str.data (); } private: std::string str; }; //------------------------------------------------------------------------ void validate (const ModuleInfo& moduleInfo, const VST3::Hosting::Module& module) { auto factory = module.getFactory (); auto factoryInfo = factory.info (); auto classInfoList = factory.classInfos (); auto snapshotList = module.getSnapshots (module.getPath ()); if (factoryInfo.vendor () != moduleInfo.factoryInfo.vendor) throw validate_error ("factoryInfo.vendor different: " + moduleInfo.factoryInfo.vendor); if (factoryInfo.url () != moduleInfo.factoryInfo.url) throw validate_error ("factoryInfo.url different: " + moduleInfo.factoryInfo.url); if (factoryInfo.email () != moduleInfo.factoryInfo.email) throw validate_error ("factoryInfo.email different: " + moduleInfo.factoryInfo.email); if (factoryInfo.flags () != moduleInfo.factoryInfo.flags) throw validate_error ("factoryInfo.flags different: " + std::to_string (moduleInfo.factoryInfo.flags)); for (const auto& ci : moduleInfo.classes) { auto cid = VST3::UID::fromString (ci.cid); if (!cid) throw validate_error ("could not parse class UID: " + ci.cid); auto it = std::find_if (classInfoList.begin (), classInfoList.end (), [&] (const auto& el) { return el.ID () == *cid; }); if (it == classInfoList.end ()) throw validate_error ("cannot find CID in class list: " + ci.cid); if (it->name () != ci.name) throw validate_error ("class name different: " + ci.name); if (it->category () != ci.category) throw validate_error ("class category different: " + ci.category); if (it->vendor () != ci.vendor) throw validate_error ("class vendor different: " + ci.vendor); if (it->version () != ci.version) throw validate_error ("class version different: " + ci.version); if (it->sdkVersion () != ci.sdkVersion) throw validate_error ("class sdkVersion different: " + ci.sdkVersion); if (it->subCategories () != ci.subCategories) throw validate_error ("class subCategories different: " /* + ci.subCategories*/); if (it->cardinality () != ci.cardinality) throw validate_error ("class cardinality different: " + std::to_string (ci.cardinality)); if (it->classFlags () != ci.flags) throw validate_error ("class flags different: " + std::to_string (ci.flags)); classInfoList.erase (it); auto snapshotListIt = std::find_if (snapshotList.begin (), snapshotList.end (), [&] (const auto& el) { return el.uid == *cid; }); if (snapshotListIt == snapshotList.end () && !ci.snapshots.empty ()) throw validate_error ("cannot find snapshots for: " + ci.cid); for (const auto& snapshot : ci.snapshots) { auto snapshotIt = std::find_if ( snapshotListIt->images.begin (), snapshotListIt->images.end (), [&] (const auto& el) { return el.scaleFactor == snapshot.scaleFactor; }); if (snapshotIt == snapshotListIt->images.end ()) throw validate_error ("cannot find snapshots for scale factor: " + std::to_string (snapshot.scaleFactor)); std::string_view path (snapshotIt->path); if (path.find (module.getPath ()) == 0) path.remove_prefix (module.getPath ().size () + 1); if (path != snapshot.path) throw validate_error ("cannot find snapshots with path: " + snapshot.path); snapshotListIt->images.erase (snapshotIt); } if (snapshotListIt != snapshotList.end () && !snapshotListIt->images.empty ()) { std::string errorStr = "Missing Snapshots in moduleinfo:\n"; for (const auto& s : snapshotListIt->images) { errorStr += s.path + '\n'; } throw validate_error (errorStr); } if (snapshotListIt != snapshotList.end ()) snapshotList.erase (snapshotListIt); } if (!classInfoList.empty ()) throw validate_error ("Missing classes in moduleinfo"); if (!snapshotList.empty ()) throw validate_error ("Missing snapshots in moduleinfo"); } //------------------------------------------------------------------------ int validate (const std::string& modulePath, std::string infoJsonPath) { if (infoJsonPath.empty ()) { auto path = VST3::Hosting::Module::getModuleInfoPath (modulePath); if (!path) { std::cerr << "Module does not contain a moduleinfo.json: '" << modulePath << "'" << '\n'; return 1; } infoJsonPath = *path; } auto data = readFile (infoJsonPath); if (data.empty ()) { std::cerr << "Empty or non existing file: '" << infoJsonPath << "'" << '\n'; printUsage (std::cout); return 1; } auto moduleInfo = ModuleInfoLib::parseJson (data, &std::cerr); if (moduleInfo) { std::string errorStr; auto module = VST3::Hosting::Module::create (modulePath, errorStr); if (!module) { std::cerr << errorStr; printUsage (std::cout); return 1; } try { validate (*moduleInfo, *module); } catch (const std::exception& exc) { std::cerr << "Error:\n" << exc.what () << '\n'; printUsage (std::cout); return 1; } return 0; } printUsage (std::cout); return 1; } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ int run (int argc, char* argv[]) { // parse command line CommandLine::Descriptions desc; CommandLine::VariablesMap valueMap; CommandLine::FilesVector files; using Description = CommandLine::Description; desc.addOptions ( BUILD_INFO, { {optCreate, "Create moduleinfo", Description::kBool}, {optValidate, "Validate moduleinfo", Description::kBool}, {optModuleVersion, "Module version", Description::kString}, {optModulePath, "Path to module", Description::kString}, {optInfoPath, "Path to moduleinfo.json", Description::kString}, {optModuleCompatPath, "Path to compatibility.json", Description::kString}, {optOutputPath, "Write json to file instead of stdout", Description::kString}, {optHelp, "Print help", Description::kBool}, }); CommandLine::parse (argc, argv, desc, valueMap, &files); bool isCreate = valueMap.count (optCreate) != 0 && valueMap.count (optModuleVersion) != 0 && valueMap.count (optModulePath) != 0; bool isValidate = valueMap.count (optValidate) && valueMap.count (optModulePath) != 0; if (valueMap.hasError () || valueMap.count (optHelp) || !(isCreate || isValidate)) { std::cout << '\n' << desc << '\n'; printUsage (std::cout); return 1; } int result = 1; const auto& modulePath = valueMap[optModulePath]; if (isCreate) { auto* outputStream = &std::cout; std::optional compat; if (valueMap.count (optModuleCompatPath) != 0) { const auto& compatPath = valueMap[optModuleCompatPath]; compat = openAndParseCompatJSON (compatPath); if (!compat) return 1; } bool writeToFile = false; if (valueMap.count (optOutputPath) != 0) { writeToFile = true; #if SMTG_OS_WINDOWS auto tmp = VST3::StringConvert::convert (valueMap[optOutputPath]); auto outputFile = reinterpret_cast (tmp.data ()); #else auto outputFile = valueMap[optOutputPath]; #endif auto ostream = new std::ofstream (outputFile); if (ostream->is_open ()) outputStream = ostream; else { std::cout << "Cannot create output file: " << valueMap[optOutputPath] << '\n'; return result; } } const auto& moduleVersion = valueMap[optModuleVersion]; result = createJSON (compat, modulePath, moduleVersion, *outputStream); if (writeToFile) delete outputStream; } else if (isValidate) { std::string moduleInfoJsonPath; if (valueMap.count (optInfoPath) != 0) moduleInfoJsonPath = valueMap[optInfoPath]; result = validate (modulePath, moduleInfoJsonPath); } return result; } //------------------------------------------------------------------------ } // ModuleInfoTool } // Steinberg //------------------------------------------------------------------------ #if SMTG_OS_WINDOWS //------------------------------------------------------------------------ using Utf8String = std::string; //------------------------------------------------------------------------ using Utf8Args = std::vector; Utf8Args toUtf8Args (int argc, wchar_t* wargv[]) { Utf8Args utf8Args; for (int i = 0; i < argc; i++) { auto str = reinterpret_cast (wargv[i]); utf8Args.push_back (VST3::StringConvert::convert (str)); } return utf8Args; } //------------------------------------------------------------------------ using Utf8ArgPtrs = std::vector; Utf8ArgPtrs toUtf8ArgPtrs (Utf8Args& utf8Args) { Utf8ArgPtrs utf8ArgPtrs; for (auto& el : utf8Args) { utf8ArgPtrs.push_back (el.data ()); } return utf8ArgPtrs; } //------------------------------------------------------------------------ int wmain (int argc, wchar_t* wargv[]) { Utf8Args utf8Args = toUtf8Args (argc, wargv); Utf8ArgPtrs utf8ArgPtrs = toUtf8ArgPtrs (utf8Args); char** argv = &(utf8ArgPtrs.at (0)); return Steinberg::ModuleInfoTool::run (argc, argv); } #else //------------------------------------------------------------------------ int main (int argc, char* argv[]) { return Steinberg::ModuleInfoTool::run (argc, argv); } //------------------------------------------------------------------------ #endif // SMTG_OS_WINDOWS vst3sdk-3.7.10.14+~4.13.3/samples/vst/000077500000000000000000000000001461511344300166305ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/CMakeLists.txt000066400000000000000000000032261461511344300213730ustar00rootroot00000000000000 function(smtg_target_setup_options target) set(options) set(oneValueArgs BUNDLE_IDENTIFIER COMPANY_NAME ) set(multiValueArgs) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) if(ARG_UNPARSED_ARGUMENTS) message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION}: The following parameters are unrecognized: ${ARG_UNPARSED_ARGUMENTS}") endif() if(NOT ARG_BUNDLE_IDENTIFIER) message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION}: BUNDLE_IDENTIFIER must be specified") endif() if(NOT ARG_COMPANY_NAME) message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION}: ARG_COMPANY_NAME must be specified") endif() smtg_target_configure_version_file(${target}) if(SMTG_MAC) smtg_target_set_bundle(${target} BUNDLE_IDENTIFIER "${ARG_BUNDLE_IDENTIFIER}" COMPANY_NAME "${ARG_COMPANY_NAME}" ) elseif(SMTG_WIN) target_sources(${target} PRIVATE resource/info.rc ) endif() target_link_libraries(${target} PRIVATE sdk ) endfunction() function(smtg_target_setup_as_vst3_example target) set_target_properties(${target} PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER} ) target_compile_features(${target} PUBLIC cxx_std_17 ) smtg_target_setup_options(${target} BUNDLE_IDENTIFIER "com.steinberg.vst3.${target}" COMPANY_NAME "Steinberg Media Technologies" ) endfunction() if(ANDROID) add_subdirectory(adelay) return() endif(ANDROID) include(SMTG_AddSubDirectories) smtg_add_subdirectories() vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/000077500000000000000000000000001461511344300213345ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/.gitignore000066400000000000000000000000241461511344300233200ustar00rootroot00000000000000/DerivedData /build vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/CMakeLists.txt000066400000000000000000000155561461511344300241100ustar00rootroot00000000000000 # iOS target if(SMTG_MAC AND SMTG_BUILD_INTERAPPAUDIO) if(XCODE AND SMTG_ENABLE_IOS_TARGETS) set(target noteexpressionsynth_iaa_ios) set(${target}_xib_resources ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/InterAppAudio/LaunchScreen.storyboard ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/InterAppAudio/noteexpressionsynth_ios.entitlements ${SDK_ROOT}/public.sdk/source/vst/interappaudio/PresetBrowserView.xib ${SDK_ROOT}/public.sdk/source/vst/interappaudio/PresetSaveView.xib ${SDK_ROOT}/public.sdk/source/vst/interappaudio/SettingsView.xib InterAppAudioExample/VSTInterAppAudioHostUIControllerView.xib ) set(${target}_sources ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/brownnoise.h ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/factory.cpp ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/filter.h ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_controller.cpp ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_controller.h ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_processor.cpp ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_processor.h ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_ui.cpp ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_ui.h ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_voice.cpp ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_voice.h ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_touch_controller.cpp ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/note_touch_controller.h ${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/source/version.h ${SDK_ROOT}/public.sdk/source/main/macmain.cpp ${SDK_ROOT}/public.sdk/source/vst/auwrapper/NSDataIBStream.mm ${SDK_ROOT}/public.sdk/source/vst/hosting/eventlist.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/hostclasses.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/parameterchanges.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/pluginterfacesupport.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/processdata.cpp ${SDK_ROOT}/public.sdk/source/vst/vstguieditor.cpp ${VSTGUI_ROOT}/vstgui4/vstgui/contrib/keyboardview.cpp ${VSTGUI_ROOT}/vstgui4/vstgui/contrib/keyboardview.h ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3editor.cpp ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3editor.h ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3groupcontroller.cpp ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3groupcontroller.h ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3padcontroller.cpp ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3padcontroller.h ${VSTGUI_ROOT}/vstgui4/vstgui/vstgui_ios.mm ${VSTGUI_ROOT}/vstgui4/vstgui/vstgui_uidescription.cpp InterAppAudioExample/VSTInterAppAudioAppDelegate.mm InterAppAudioExample/VSTInterAppAudioHostUIControllerViewController.mm InterAppAudioExample/main.m ) set(prefix_header ${SDK_ROOT}/public.sdk/samples/vst/InterAppAudio/InterAppAudioExample/InterAppAudioExample-Prefix.pch) add_executable(${target} ${${target}_sources} ${${target}_xib_resources}) smtg_target_set_platform_ios(${target}) target_compile_options(${target} PUBLIC -DVSTGUI_LIVE_EDITING=0 ) # NO VSTGUI LIVE EDITING SUPPORT FOR iOS set_target_properties(${target} PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER} ) set_target_properties(${target} PROPERTIES BUNDLE TRUE RESOURCE "${${target}_xib_resources}" XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon" XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_LIST_DIR}/../note_expression_synth/resource/InterAppAudio/noteexpressionsynth_ios.entitlements" XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${SMTG_CODE_SIGN_IDENTITY_IOS}" XCODE_ATTRIBUTE_ENABLE_BITCODE "NO" # prevent warning XCODE_ATTRIBUTE_GCC_PREFIX_HEADER ${prefix_header} XCODE_ATTRIBUTE_GENERATE_PKGINFO_FILE "YES" XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${SMTG_IOS_DEVELOPMENT_TEAM} ) target_link_libraries(${target} PRIVATE interappaudio "-framework QuartzCore" "-framework MobileCoreServices" "-framework Accelerate" "-framework ImageIO" "-framework GLKit" "-framework CoreText" ) smtg_target_set_bundle(${target} INFOPLIST "${CMAKE_CURRENT_LIST_DIR}/../note_expression_synth/resource/InterAppAudio/NoteExpressionSynthExample.plist" PREPROCESS) target_include_directories(${target} PUBLIC ${ROOT}/vstgui4 ) smtg_target_add_vst3_resource(${target} "${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/about.png") smtg_target_add_vst3_resource(${target} "${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/background.png") smtg_target_add_vst3_resource(${target} "${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/groupframe.png") smtg_target_add_vst3_resource(${target} "${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/knob big.png") smtg_target_add_vst3_resource(${target} "${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/knob.png") smtg_target_add_vst3_resource(${target} "${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/knob2.png") smtg_target_add_vst3_resource(${target} "${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/note_expression_synth.uidesc") smtg_target_add_vst3_resource(${target} "${SDK_ROOT}/public.sdk/samples/vst/note_expression_synth/resource/vst3_logo_small.png") else() message("[SMTG] * To enable building the InterAppAudio NoteExpressionSynth example for iOS you need to set the SMTG_IOS_DEVELOPMENT_TEAM and use the Xcode generator") endif(XCODE AND SMTG_ENABLE_IOS_TARGETS) endif(SMTG_MAC AND SMTG_BUILD_INTERAPPAUDIO) vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample/000077500000000000000000000000001461511344300253545ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample/ADelayExample.plist000066400000000000000000000033711461511344300311100ustar00rootroot00000000000000 AudioComponents manufacturer SMTG name ADelay VST3 subtype adly type aurx version 1 CFBundleDevelopmentRegion en CFBundleDisplayName ${PRODUCT_NAME} CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier com.steinberg.interappaudioexamples.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1.0 LSRequiresIPhoneOS UIBackgroundModes audio UIRequiredDeviceCapabilities armv7 UIStatusBarHidden UIStatusBarHidden~ipad UISupportedInterfaceOrientations UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight InterAppAudioExample-Prefix.pch000066400000000000000000000044661461511344300332560ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/interappaudio/InterAppAudioExample/InterAppAudioExample-Prefix.pch // Created by : Steinberg, 08/2013 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import #ifndef __IPHONE_3_0 #warning "This project uses features only available in iOS SDK 3.0 and later." #endif #ifdef __OBJC__ #import #import #endif InterAppAudioExample.entitlements000066400000000000000000000003411461511344300337500ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample inter-app-audio VSTInterAppAudioAppDelegate.h000066400000000000000000000047441461511344300326540ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample// clang-format off //----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/interappaudio/InterAppAudioExample/VSTInterAppAudioAppDelegate.h // Created by : Steinberg, 08/2013 // Description : // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- // clang-format on #import "public.sdk/source/vst/interappaudio/VSTInterAppAudioAppDelegateBase.h" //------------------------------------------------------------------------ @interface VSTInterAppAudioAppDelegate : VSTInterAppAudioAppDelegateBase //------------------------------------------------------------------------ @end VSTInterAppAudioAppDelegate.mm000066400000000000000000000131411461511344300330250ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample// clang-format off //----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/interappaudio/InterAppAudioExample/VSTInterAppAudioAppDelegate.mm // Created by : Steinberg, 08/2013 // Description : // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- // clang-format on #import "VSTInterAppAudioAppDelegate.h" #import "VSTInterAppAudioHostUIControllerViewController.h" #import "public.sdk/source/vst/interappaudio/AudioIO.h" using namespace Steinberg::Vst::InterAppAudio; //------------------------------------------------------------------------ @interface VSTInterAppAudioAppDelegate () //------------------------------------------------------------------------ { UIButton* showHostView; } @end //------------------------------------------------------------------------ @implementation VSTInterAppAudioAppDelegate //------------------------------------------------------------------------ //------------------------------------------------------------------------ - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { if ([super application:application didFinishLaunchingWithOptions:launchOptions]) { [self performSelector:@selector (createShowHostViewButton) withObject:nil afterDelay:0.2]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (audioIOConnectionChanged) name:AudioIO::kConnectionStateChange object:nil]; return YES; } return NO; } //------------------------------------------------------------------------ - (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window { return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; } //------------------------------------------------------------------------ - (void)audioIOConnectionChanged { showHostView.hidden = AudioIO::instance ()->getInterAppAudioConnected () == false; if (showHostView.hidden) { for (id childController in [self.window.rootViewController childViewControllers]) { if ([childController isKindOfClass:[VSTInterAppAudioHostUIControllerViewController class]]) { [childController hideView:self]; } } } } //------------------------------------------------------------------------ - (void)createShowHostViewButton { showHostView = [UIButton buttonWithType:UIButtonTypeInfoDark]; [showHostView addTarget:self action:@selector (showHostViewAction:) forControlEvents:UIControlEventTouchDown]; const CGFloat margin = 15; CGRect frame = showHostView.frame; frame.origin.y = [self.window.rootViewController.view bounds].size.height - (frame.size.height + margin); frame.origin.x = margin; showHostView.frame = frame; [self.window.rootViewController.view addSubview:showHostView]; if (AudioIO::instance ()->getInterAppAudioConnected () == false) { showHostView.hidden = YES; } } //------------------------------------------------------------------------ - (void)showHostViewAction:(id)sender { VSTInterAppAudioHostUIControllerViewController* controller = [[VSTInterAppAudioHostUIControllerViewController alloc] init]; [self.window.rootViewController addChildViewController:controller]; CGRect frame = controller.view.frame; frame.origin.y = [self.window.rootViewController.view bounds].size.height; controller.view.frame = frame; [self.window.rootViewController.view addSubview:controller.view]; frame.origin.y = [self.window.rootViewController.view bounds].size.height - frame.size.height; [UIView animateWithDuration:0.3 animations:^{ controller.view.frame = frame; }]; } @end VSTInterAppAudioHostUIControllerView.xib000066400000000000000000000172421461511344300351030ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample VSTInterAppAudioHostUIControllerViewController.h000066400000000000000000000051471461511344300366150ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample// clang-format off //----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/interappaudio/InterAppAudioExample/VSTInterAppAudioHostUIControllerViewController.h // Created by : Steinberg, 08/2013 // Description : // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- // clang-format on #import //------------------------------------------------------------------------ @interface VSTInterAppAudioHostUIControllerViewController : UIViewController //------------------------------------------------------------------------ - (IBAction)hideView:(id)sender; - (IBAction)switchToHost:(id)sender; - (IBAction)play:(id)sender; - (IBAction)rewind:(id)sender; - (IBAction)record:(id)sender; @end VSTInterAppAudioHostUIControllerViewController.mm000066400000000000000000000121551461511344300367740ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample// clang-format off //----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/interappaudio/InterAppAudioExample/VSTInterAppAudioHostUIControllerViewController.mm // Created by : Steinberg, 08/2013 // Description : // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- // clang-format on #import "VSTInterAppAudioHostUIControllerViewController.h" #import "public.sdk/source/vst/interappaudio/AudioIO.h" using namespace Steinberg::Vst::InterAppAudio; //------------------------------------------------------------------------ static UIImage* scaleImageToSize (UIImage* image, CGSize newSize) { UIGraphicsBeginImageContextWithOptions (newSize, NO, 0.0); [image drawInRect:CGRectMake (0, 0, newSize.width, newSize.height)]; UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext (); UIGraphicsEndImageContext (); return newImage; } //------------------------------------------------------------------------ @interface VSTInterAppAudioHostUIControllerViewController () //------------------------------------------------------------------------ @property (assign) IBOutlet UIButton* hostButton; @end //------------------------------------------------------------------------ @implementation VSTInterAppAudioHostUIControllerViewController //------------------------------------------------------------------------ //------------------------------------------------------------------------ - (id)init { self = [super initWithNibName:@"VSTInterAppAudioHostUIControllerView" bundle:nil]; if (self) { } return self; } //------------------------------------------------------------------------ - (void)viewDidLoad { [super viewDidLoad]; UIImage* image = AudioIO::instance ()->getHostIcon (); if (image) { image = scaleImageToSize (image, self.hostButton.bounds.size); [self.hostButton setTitle:@"" forState:UIControlStateNormal]; [self.hostButton setImage:image forState:UIControlStateNormal]; } self.view.layer.shadowColor = [[UIColor blackColor] CGColor]; self.view.layer.shadowOpacity = 0.5; self.view.layer.shadowRadius = 5; self.view.layer.shadowOffset = CGSizeMake (5, -5); } //------------------------------------------------------------------------ - (IBAction)hideView:(id)sender { [UIView animateWithDuration:0.3 animations:^{ CGRect frame = self.view.frame; frame.origin.y += frame.size.height; self.view.frame = frame; } completion:^(BOOL finished) { [self.view removeFromSuperview]; [self removeFromParentViewController]; }]; } //------------------------------------------------------------------------ - (IBAction)switchToHost:(id)sender { AudioIO::instance ()->switchToHost (); } //------------------------------------------------------------------------ - (IBAction)play:(id)sender { AudioIO::instance ()->sendRemoteControlEvent (kAudioUnitRemoteControlEvent_TogglePlayPause); } //------------------------------------------------------------------------ - (IBAction)rewind:(id)sender { AudioIO::instance ()->sendRemoteControlEvent (kAudioUnitRemoteControlEvent_Rewind); } //------------------------------------------------------------------------ - (IBAction)record:(id)sender { AudioIO::instance ()->sendRemoteControlEvent (kAudioUnitRemoteControlEvent_ToggleRecord); } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample/en.lproj/000077500000000000000000000000001461511344300271035ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample/en.lproj/InfoPlist.strings000066400000000000000000000000551461511344300324250ustar00rootroot00000000000000/* Localized versions of Info.plist keys */ vst3sdk-3.7.10.14+~4.13.3/samples/vst/InterAppAudio/InterAppAudioExample/main.m000066400000000000000000000044551461511344300264660ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/interappaudio/InterAppAudioExample/main.m // Created by : Steinberg, 08/2013 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import #import "VSTInterAppAudioAppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain (argc, argv, nil, NSStringFromClass ([VSTInterAppAudioAppDelegate class])); } } vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/000077500000000000000000000000001461511344300200675ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/CMakeLists.txt000066400000000000000000000011111461511344300226210ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-adelay VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 ADelay example" ) smtg_add_vst3plugin(adelay source/adelaycontroller.cpp source/adelaycontroller.h source/adelayids.h source/adelayprocessor.cpp source/adelayprocessor.h source/exampletest.cpp source/factory.cpp source/version.h ${SDK_ROOT}/public.sdk/source/vst/utility/test/ringbuffertest.cpp ${SDK_ROOT}/public.sdk/source/vst/utility/test/versionparsertest.cpp ) smtg_target_setup_as_vst3_example(adelay)vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/resource/000077500000000000000000000000001461511344300217165ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/resource/info.rc000066400000000000000000000026341461511344300232040ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/000077500000000000000000000000001461511344300213675ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/adelaycontroller.cpp000066400000000000000000000101551461511344300254400ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/adelaycontroller.cpp // Created by : Steinberg, 06/2009 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "adelaycontroller.h" #include "adelayids.h" #include "pluginterfaces/base/ibstream.h" #if TARGET_OS_IPHONE #include "interappaudio/iosEditor.h" #endif #include "base/source/fstreamer.h" namespace Steinberg { namespace Vst { DEF_CLASS_IID (IDelayTestController) //----------------------------------------------------------------------------- tresult PLUGIN_API ADelayController::initialize (FUnknown* context) { tresult result = EditController::initialize (context); if (result == kResultTrue) { parameters.addParameter (STR16 ("Bypass"), nullptr, 1, 0, ParameterInfo::kCanAutomate|ParameterInfo::kIsBypass, kBypassId); parameters.addParameter (STR16 ("Delay"), STR16 ("sec"), 0, 1, ParameterInfo::kCanAutomate, kDelayId); } return kResultTrue; } #if TARGET_OS_IPHONE //----------------------------------------------------------------------------- IPlugView* PLUGIN_API ADelayController::createView (FIDString name) { if (FIDStringsEqual (name, ViewType::kEditor)) { return new ADelayEditorForIOS (this); } return 0; } #endif //------------------------------------------------------------------------ tresult PLUGIN_API ADelayController::setComponentState (IBStream* state) { // we receive the current state of the component (processor part) // we read only the gain and bypass value... if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); float savedDelay = 0.f; if (streamer.readFloat (savedDelay) == false) return kResultFalse; setParamNormalized (kDelayId, savedDelay); int32 bypassState = 0; if (streamer.readInt32 (bypassState) == false) { // could be an old version, continue } setParamNormalized (kBypassId, bypassState ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ bool PLUGIN_API ADelayController::doTest () { // this is called when running thru the validator // we can now run our own test cases return true; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/adelaycontroller.h000066400000000000000000000073641461511344300251150ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/adelaycontroller.h // Created by : Steinberg, 06/2009 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" #if SMTG_OS_MACOS #include #endif namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class IDelayTestController : public FUnknown { public: virtual bool PLUGIN_API doTest () = 0; //------------------------------------------------------------------------ static const FUID iid; }; DECLARE_CLASS_IID (IDelayTestController, 0x9FC98F39, 0x27234512, 0x84FBC4AD, 0x618A14FD) //----------------------------------------------------------------------------- class ADelayController : public EditController, public IDelayTestController { public: //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this controller //------------------------------------------------------------------------ static FUnknown* createInstance (void*) { return (IEditController*)new ADelayController (); } //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; //---from EditController----- #if TARGET_OS_IPHONE IPlugView* PLUGIN_API createView (FIDString name) SMTG_OVERRIDE; #endif tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; bool PLUGIN_API doTest () SMTG_OVERRIDE; //---Interface--------- OBJ_METHODS (ADelayController, EditController) DEFINE_INTERFACES DEF_INTERFACE (IDelayTestController) END_DEFINE_INTERFACES (EditController) REFCOUNT_METHODS (EditController) }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/adelayids.h000066400000000000000000000047641461511344300235120ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/adelayids.h // Created by : Steinberg, 06/2009 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { // parameter tags enum { kDelayId = 100, kBypassId = 101 }; // unique class ids static DECLARE_UID (ADelayProcessorUID, 0x0CDBB669, 0x85D548A9, 0xBFD83719, 0x09D24BB3); static DECLARE_UID (ADelayControllerUID, 0x038E7FA9, 0x629A4EAA, 0x8541B889, 0x18E8952C); //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/adelayprocessor.cpp000066400000000000000000000165301461511344300252770ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/adelayprocessor.cpp // Created by : Steinberg, 06/2009 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "adelayprocessor.h" #include "adelayids.h" #include "base/source/fstreamer.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include #include namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- ADelayProcessor::ADelayProcessor () : mDelay (1), mBuffer (nullptr), mBufferPos (0), mBypass (false) { setControllerClass (FUID::fromTUID (ADelayControllerUID)); } //----------------------------------------------------------------------------- tresult PLUGIN_API ADelayProcessor::initialize (FUnknown* context) { tresult result = AudioEffect::initialize (context); if (result == kResultTrue) { addAudioInput (STR16 ("AudioInput"), SpeakerArr::kStereo); addAudioOutput (STR16 ("AudioOutput"), SpeakerArr::kStereo); } return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API ADelayProcessor::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { // we only support one in and output bus and these busses must have the same number of channels if (numIns == 1 && numOuts == 1 && inputs[0] == outputs[0]) return AudioEffect::setBusArrangements (inputs, numIns, outputs, numOuts); return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API ADelayProcessor::setActive (TBool state) { SpeakerArrangement arr; if (getBusArrangement (kOutput, 0, arr) != kResultTrue) return kResultFalse; int32 numChannels = SpeakerArr::getChannelCount (arr); if (numChannels == 0) return kResultFalse; if (state) { mBuffer = (float**)std::malloc (numChannels * sizeof (float*)); size_t size = static_cast (processSetup.sampleRate * sizeof (float) + 0.5); for (int32 channel = 0; channel < numChannels; channel++) { mBuffer[channel] = (float*)std::malloc (size); // 1 second delay max if (mBuffer[channel]) memset (mBuffer[channel], 0, size); } mBufferPos = 0; } else { if (mBuffer) { for (int32 channel = 0; channel < numChannels; channel++) { std::free (mBuffer[channel]); } std::free (mBuffer); mBuffer = nullptr; } } return AudioEffect::setActive (state); } //----------------------------------------------------------------------------- tresult PLUGIN_API ADelayProcessor::process (ProcessData& data) { if (data.inputParameterChanges) { int32 numParamsChanged = data.inputParameterChanges->getParameterCount (); for (int32 index = 0; index < numParamsChanged; index++) { if (IParamValueQueue* paramQueue = data.inputParameterChanges->getParameterData (index)) { ParamValue value; int32 sampleOffset; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case kDelayId: if (paramQueue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) mDelay = value; break; case kBypassId: if (paramQueue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) { mBypass = (value > 0.5f); } break; } } } } if (data.numSamples > 0) { SpeakerArrangement arr; getBusArrangement (kOutput, 0, arr); int32 numChannels = SpeakerArr::getChannelCount (arr); // TODO do something in Bypass : copy input to output if necessary... // apply delay // we have a minimum of 1 sample delay here int32 delayInSamples = std::max (1, (int32) (mDelay * processSetup.sampleRate)); for (int32 channel = 0; channel < numChannels; channel++) { float* inputChannel = data.inputs[0].channelBuffers32[channel]; float* outputChannel = data.outputs[0].channelBuffers32[channel]; int32 tempBufferPos = mBufferPos; for (int32 sample = 0; sample < data.numSamples; sample++) { float tempSample = inputChannel[sample]; outputChannel[sample] = mBuffer[channel][tempBufferPos]; mBuffer[channel][tempBufferPos] = tempSample; tempBufferPos++; if (tempBufferPos >= delayInSamples) tempBufferPos = 0; } } mBufferPos += data.numSamples; while (delayInSamples && mBufferPos >= delayInSamples) mBufferPos -= delayInSamples; } return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayProcessor::setState (IBStream* state) { if (!state) return kResultFalse; // called when we load a preset, the model has to be reloaded IBStreamer streamer (state, kLittleEndian); float savedDelay = 0.f; if (streamer.readFloat (savedDelay) == false) return kResultFalse; int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) { // could be an old version, continue } mDelay = savedDelay; mBypass = savedBypass > 0; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayProcessor::getState (IBStream* state) { // here we need to save the model IBStreamer streamer (state, kLittleEndian); streamer.writeFloat (mDelay); streamer.writeInt32 (mBypass ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/adelayprocessor.h000066400000000000000000000062171461511344300247450ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/adelayprocessor.cpp // Created by : Steinberg, 06/2009 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- class ADelayProcessor : public AudioEffect { public: ADelayProcessor (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; //------------------------------------------------------------------------ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; static FUnknown* createInstance (void*) { return (IAudioProcessor*)new ADelayProcessor (); } protected: ParamValue mDelay; float** mBuffer; int32 mBufferPos; bool mBypass; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/exampletest.cpp000066400000000000000000000061441461511344300244330ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/exampletest.cpp // Created by : Steinberg, 10/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "adelaycontroller.h" #include "adelayprocessor.h" #include "base/source/fstring.h" #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/testsuite/vsttestsuite.h" #include "public.sdk/source/vst/utility/testing.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ static ModuleInitializer InitTests ([] () { registerTest ("ExampleTest", nullptr, [] (FUnknown* context, ITestResult* testResult) { FUnknownPtr plugProvider (context); if (plugProvider) { auto controller = plugProvider->getController (); FUnknownPtr testController (controller); if (!controller) { testResult->addErrorMessage (String ("Unknown IEditController")); return false; } bool result = testController->doTest (); plugProvider->releasePlugIn (nullptr, controller); return (result); } return false; }); }); //------------------------------------------------------------------------ }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/factory.cpp000066400000000000000000000070611461511344300235460ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/factory.cpp // Created by : Steinberg, 06/2009 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "adelaycontroller.h" #include "adelayids.h" #include "adelayprocessor.h" #include "version.h" // for versioning #include "public.sdk/source/main/pluginfactory_constexpr.h" #include "public.sdk/source/vst/utility/testing.h" #define stringPluginName "ADelay" BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail, 3) DEF_CLASS (Steinberg::Vst::ADelayProcessorUID, Steinberg::PClassInfo::kManyInstances, kVstAudioEffectClass, stringPluginName, Steinberg::Vst::kDistributable, "Fx|Delay", FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, Steinberg::Vst::ADelayProcessor::createInstance, nullptr) DEF_CLASS (Steinberg::Vst::ADelayControllerUID, Steinberg::PClassInfo::kManyInstances, kVstComponentControllerClass, stringPluginName "Controller", // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, Steinberg::Vst::ADelayController::createInstance, nullptr) // add Test Factory DEF_CLASS (Steinberg::Vst::TestFactoryUID, Steinberg::PClassInfo::kManyInstances, kTestClass, stringPluginName "Test Factory", 0, "", "", "", Steinberg::Vst::createTestFactoryInstance, nullptr) END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/interappaudio/000077500000000000000000000000001461511344300242335ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/interappaudio/ADelayIPAD.xib000066400000000000000000000041451461511344300265400ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/interappaudio/iosEditor.h000066400000000000000000000070001461511344300263420ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/interappaudio/iosEditor.h // Created by : Steinberg, 08/2013 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #ifndef __iosEditor__ #define __iosEditor__ #include "base/source/fobject.h" #include "pluginterfaces/gui/iplugview.h" #if __OBJC__ @class ADelayViewController; #else struct ADelayViewController; #endif namespace Steinberg { namespace Vst { class EditController; class ADelayEditorForIOS : public FObject, public IPlugView { public: ADelayEditorForIOS (EditController* editController); OBJ_METHODS(ADelayEditorForIOS, FObject) REFCOUNT_METHODS(FObject) DEFINE_INTERFACES DEF_INTERFACE(IPlugView) END_DEFINE_INTERFACES(FObject) protected: tresult PLUGIN_API isPlatformTypeSupported (FIDString type) override; tresult PLUGIN_API attached (void* parent, FIDString type) override; tresult PLUGIN_API removed () override; tresult PLUGIN_API onWheel (float distance) override; tresult PLUGIN_API onKeyDown (char16 key, int16 keyCode, int16 modifiers) override; tresult PLUGIN_API onKeyUp (char16 key, int16 keyCode, int16 modifiers) override; tresult PLUGIN_API getSize (ViewRect* size) override; tresult PLUGIN_API onSize (ViewRect* newSize) override; tresult PLUGIN_API onFocus (TBool state) override; tresult PLUGIN_API setFrame (IPlugFrame* frame) override; tresult PLUGIN_API canResize () override; tresult PLUGIN_API checkSizeConstraint (ViewRect* rect) override; void PLUGIN_API update (FUnknown* changedUnknown, int32 message) override; EditController* editController; ADelayViewController* viewController; }; }} #endif // __iosEditor__ vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/interappaudio/iosEditor.mm000066400000000000000000000147761461511344300265460ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/interappaudio/iosEditor.mm // Created by : Steinberg, 08/2013 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "iosEditor.h" #import "public.sdk/source/vst/vsteditcontroller.h" #import "adelayids.h" using namespace Steinberg::Vst; //------------------------------------------------------------------------ @interface ADelayViewController : UIViewController { EditController* editController; } @property (assign) IBOutlet UISlider* slider; @end //------------------------------------------------------------------------ @implementation ADelayViewController //------------------------------------------------------------------------ - (id)initWithVstEditController:(EditController*)_editController { self = [super initWithNibName:@"ADelayIPAD" bundle:nil]; if (self) { editController = _editController; } return self; } //------------------------------------------------------------------------ - (void)updateSlider { [self.slider setValue:editController->getParamNormalized (kDelayId)]; } //------------------------------------------------------------------------ - (IBAction)sliderChanged:(id)sender { editController->setParamNormalized (kDelayId, self.slider.value); editController->performEdit(kDelayId, self.slider.value); } @end namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ ADelayEditorForIOS::ADelayEditorForIOS (EditController* editController) : editController (editController) , viewController (nil) { } //------------------------------------------------------------------------ void PLUGIN_API ADelayEditorForIOS::update (FUnknown* changedUnknown, int32 message) { Parameter* param = FCast (changedUnknown); if (param && viewController) { [viewController updateSlider]; } } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::isPlatformTypeSupported (FIDString type) { if (strcmp (type, kPlatformTypeUIView) == 0) return kResultTrue; return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::attached (void* parent, FIDString type) { if (strcmp (type, kPlatformTypeUIView) != 0) return kResultFalse; UIView* parentView = (__bridge UIView*)parent; viewController = [[ADelayViewController alloc] initWithVstEditController:editController]; if (viewController && viewController.view) { [parentView addSubview:viewController.view]; [viewController updateSlider]; Parameter* delayParam = editController->getParameterObject (kDelayId); if (delayParam) { delayParam->addDependent (this); } } return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::removed () { [viewController.view removeFromSuperview]; Parameter* delayParam = editController->getParameterObject (kDelayId); if (delayParam) { delayParam->removeDependent (this); } viewController = nil; return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::onWheel (float distance) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::onKeyDown (char16 key, int16 keyCode, int16 modifiers) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::onKeyUp (char16 key, int16 keyCode, int16 modifiers) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::getSize (ViewRect* size) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::onSize (ViewRect* newSize) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::onFocus (TBool state) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::setFrame (IPlugFrame* frame) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::canResize () { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API ADelayEditorForIOS::checkSizeConstraint (ViewRect* rect) { return kNotImplemented; } }} vst3sdk-3.7.10.14+~4.13.3/samples/vst/adelay/source/version.h000066400000000000000000000054651461511344300232370ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/adelay/source/version.h // Created by : Steinberg, 06/2009 // Description : Example of handle the versioning and copyright info of adelay plugin // used for the resources (RC file for example) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "adelay.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "ADelay VST3-SDK (64Bit)" #else #define stringFileDescription "ADelay VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/000077500000000000000000000000001461511344300177075ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/CMakeLists.txt000066400000000000000000000150371461511344300224550ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-again VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 AGain example" ) if(NOT SMTG_ENABLE_VSTGUI_SUPPORT) return() endif() if (SMTG_CREATE_VST2_AGAIN_SAMPLE_VERSION) set(again_vst2_sources ${SDK_ROOT}/public.sdk/source/vst/vst2wrapper/vst2wrapper.sdk.cpp source/againentry_vst2.cpp ) endif(SMTG_CREATE_VST2_AGAIN_SAMPLE_VERSION) set(again_sources source/again.cpp source/again.h source/againcids.h source/againcontroller.cpp source/againcontroller.h source/againentry.cpp source/againparamids.h source/againprocess.h source/againsidechain.cpp source/againsidechain.h source/againuimessagecontroller.h source/version.h resource/again.uidesc ) set(again_simple_sources ${SDK_ROOT}/public.sdk/source/vst/vstsinglecomponenteffect.cpp ${SDK_ROOT}/public.sdk/source/vst/vstsinglecomponenteffect.h source/againparamids.h source/againsimple.cpp source/againsimple.h source/version.h ) # VST2 is only defined for macOS and Windows if(SMTG_MAC OR SMTG_WIN) if (SMTG_CREATE_VST2_AGAIN_SAMPLE_VERSION) set(again_sources ${again_sources} ${again_vst2_sources}) else() set(again_sources ${again_sources}) endif(SMTG_CREATE_VST2_AGAIN_SAMPLE_VERSION) endif(SMTG_MAC OR SMTG_WIN) set(target again) smtg_add_vst3plugin(${target} ${again_sources}) smtg_target_configure_version_file(${target}) #smtg_add_vst3plugin(${target} PACKAGE_NAME "A Gain" SOURCES_LIST ${again_sources}) set_target_properties(${target} PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER} ) target_compile_features(${target} PUBLIC cxx_std_17 ) target_link_libraries(${target} PRIVATE sdk vstgui_support ) smtg_target_add_plugin_resources(${target} RESOURCES resource/again.uidesc resource/background.png resource/slider_background.png resource/slider_handle.png resource/slider_handle_2.0x.png resource/vu_on.png resource/vu_off.png ) smtg_target_add_plugin_snapshots (${target} RESOURCES resource/84E8DE5F92554F5396FAE4133C935A18_snapshot.png resource/84E8DE5F92554F5396FAE4133C935A18_snapshot_2.0x.png resource/41347FD6FED64094AFBB12B7DBA1D441_snapshot.png resource/41347FD6FED64094AFBB12B7DBA1D441_snapshot_2.0x.png ) if(SMTG_MAC) smtg_target_set_bundle(${target} BUNDLE_IDENTIFIER "com.steinberg.vst3.${target}" COMPANY_NAME "Steinberg Media Technologies" ) elseif(SMTG_WIN) target_sources(${target} PRIVATE resource/again.rc ) endif(SMTG_MAC) # Add an AUv2 target if (SMTG_MAC AND XCODE AND SMTG_COREAUDIO_SDK_PATH) include(SMTG_AddVST3AuV2) smtg_target_add_auv2(again-au BUNDLE_NAME again BUNDLE_IDENTIFIER com.steinberg.vst3plugin.again.audiounit INFO_PLIST_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/resource/au-info.plist VST3_PLUGIN_TARGET again) endif(SMTG_MAC AND XCODE AND SMTG_COREAUDIO_SDK_PATH) if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) set(target again_ios) smtg_add_ios_vst3plugin(${target} "${SMTG_CODE_SIGN_IDENTITY_IOS}" "${target}" "${again_sources}") smtg_target_configure_version_file(${target}) set_target_properties(${target} PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER} ) target_include_directories(${target} PUBLIC ${SMTG_VSTGUI_SOURCE_DIR} ) target_link_libraries(${target} PRIVATE base_ios sdk_ios "-framework UIKit" "-framework CoreGraphics" "-framework QuartzCore" "-framework CoreText" "-framework Accelerate" "-framework ImageIO" "-framework MobileCoreServices" ) smtg_target_add_plugin_resources(${target} RESOURCES resource/again.uidesc resource/background.png resource/slider_background.png resource/slider_handle.png resource/slider_handle_2.0x.png resource/vu_on.png resource/vu_off.png ) smtg_target_set_bundle(${target} BUNDLE_IDENTIFIER "com.steinberg.vst3.again" COMPANY_NAME "Steinberg Media Technologies" ) target_sources(${target} PRIVATE ${SMTG_VSTGUI_SOURCE_DIR}/vstgui/vstgui_uidescription.cpp ${SMTG_VSTGUI_SOURCE_DIR}/vstgui/vstgui_ios.mm ${SMTG_VSTGUI_SOURCE_DIR}/vstgui/plugin-bindings/vst3editor.cpp ${SDK_ROOT}/public.sdk/source/vst/vstguieditor.cpp ) target_compile_features(${target} PUBLIC cxx_std_17) endif(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) set(targetsimple againsimple) smtg_add_vst3plugin(${targetsimple} ${again_simple_sources}) smtg_target_configure_version_file(${targetsimple}) set_target_properties(${targetsimple} PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER}) target_link_libraries(${targetsimple} PUBLIC sdk vstgui_support ) smtg_target_add_plugin_resources(${targetsimple} RESOURCES resource/again.uidesc resource/background.png resource/slider_background.png resource/slider_handle.png resource/slider_handle_2.0x.png resource/vu_on.png resource/vu_off.png ) target_compile_features(${targetsimple} PUBLIC cxx_std_17 ) if(SMTG_MAC) smtg_target_set_bundle(${targetsimple} BUNDLE_IDENTIFIER "com.steinberg.vst3.again-simple" COMPANY_NAME "Steinberg Media Technologies" ) elseif(SMTG_WIN) target_sources(${targetsimple} PRIVATE resource/again.rc ) endif(SMTG_MAC) # do not build AGain VST 2 by default option(SMTG_CREATE_VST2_AGAIN_SAMPLE_VERSION "Legacy: Create the VST2 version of the Sample Plug-in AGain, be sure that you have copied the VST2 interfaces into the folder VST_SDK/vst3sdk/pluginterfaces/vst2.x" OFF) if(SMTG_CREATE_VST2_AGAIN_SAMPLE_VERSION) message(STATUS "[SMTG] SMTG_CREATE_VST2_AGAIN_SAMPLE_VERSION is set. A VST 2 version of the plug-in will be created (just rename the generated file from .vst3 to .dll (win) or .vst (mac)).") if(XCODE) # fix missing VSTPluginMain symbol when also building VST 2 version set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_EXPORTED_SYMBOLS_FILE "" ) endif(XCODE) if(SMTG_WIN) if(NOT MINGW) add_definitions(-D_CRT_SECURE_NO_WARNINGS) endif(NOT MINGW) endif(SMTG_WIN) endif(SMTG_CREATE_VST2_AGAIN_SAMPLE_VERSION) vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/mac/000077500000000000000000000000001461511344300204475ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/mac/Info.plist000066400000000000000000000016111461511344300224160ustar00rootroot00000000000000 NSHumanReadableCopyright Copyright © 2018 Steinberg Media Technologies. All rights reserved. CFBundleDevelopmentRegion English CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType BNDL CFBundleSignature ???? CFBundleVersion 1.0 CFBundleShortVersionString 1.0 CSResourcesFileMapped vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resource/000077500000000000000000000000001461511344300215365ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resource/41347FD6FED64094AFBB12B7DBA1D441_snapshot.png000066400000000000000000000400671461511344300277760ustar00rootroot00000000000000PNG  IHDR/1H"~gAMA|Q cHRM Q|o+= F6 )iCCPICC ProfileXíWwT$!!BzWETFH %ĄbGEׂ VtUDѵۢ`e],Pyu9}ܹsof2z,G,A5K‚SRG\+F(CU/&/BΓrs!> K @|1DhK A-8S=8]#6 q,Pr8L优LGmĎ"Pq~\GAnM~23}'9(D%X(pfȆbFH9떝!Tωңc ւYxGkT'8bCD9ёz a(bX{4ANPEyAt4$~s$XrYvb>{gc !YR LX {AVD' 92$qJ"W:-qd !\9(Aŗ(ŠAX8?(n~8'vkfI ɦ%7\;36V`Ky z{/eO( |0g<(AqA^>(Zd(z #SsAȁeQhI  &>#P-n>x$|{^C  SE3ACK1; zuÃp_p]a@vʆ3^A_dG2J%m~ff6E^k>\-py~#~Ė`V$vk;5`cr<<7(P8lGxIk ||bagH|f ܭL;j$ _e(tqỮH&/8\κ+$J.?:\)]60#g|@cA H)`2S f`-[vA=h'Yp\]8WK ރ~AH # b#Έ'⇄ H!!H)RT ېj7(r9#H7b(FP+t4h: DBt9BuI"zD_}T1f9` R LJr ᗾub='q&k8s|^U!ދ#{7MO$L# ; Gg"' 5bq&qqq?N|L#H${/)!哊IH{I'H.GUgPTJJ**TdK79# 7/M5ŗ@ɢ̧RPQުzSS]z@COT-EHQSwQoi4-J˧-UN>Fxjs*:^-'RޣAְ`ip4hTjոѧItҌ\Gs-VOkvSZݜ΢s ;g]Dmkmvv>6^-W$::t:Êf0V02n0>uv~+ۯw]>S?D?[~}`4g zFhQ2;aL톗 ŒFN376M֘0ya2s뙧2mmfffEfS=3טZXDY̲cIXl`emlت깵5ۺк fM5[m&+v=jn/d>0khdțT@"GjѫF񮓖X"F7v\Jk.4P. .]]]oݢ}up׺w{Xxyl+kW'ow|8dy>z ̎1}|9|;~i~[:M9Ux;f |$ :͚jƂÂKBBC*Bfք k'G 6bsޱcg=Axi)lBFm-11cc>8.v\帧qNqZSĿOJXp7&Qؒ41:CrprYrgb"LiH%&L2a턮n'ޘd=i &L>6E} gʡ4BZrڞ/N/12 ߌ百3rA% ڒ!;&{W@Nr\ܴܣ"-QtqvX9{کN)"$m׆K2"ʂӒ9]4 Kg<+ -u&>;em2'}N\ v {>e~?ʊ-H^иhἅ-)V+\x|pIR~+\(u,-//Ne`y+6$2Ͳ²ǫV׭a)Yn픵]˷\aņT*WUhqx:6lbt­m*N^鎤zZ`gίD:w>]Q]pϊFVӽw+5:n_zx[o7Fl9yGGJꐺuΆc44}ﻚL*[qr|'='3O>nrSN;v&̹gO8{>~DK§LU?w~}ń]//{k+WRޮגo뻖ؾs(q'O??eWۯ"s$Q .h)ЯL!>@aM!—jlVG Af8+}Qፅq`FJ7 |yN(tuf]`qBͪ]( pHYs%%IR$&iTXtXML:com.adobe.xmp 2 5 144 1 144 348 1 118 2018:05:31 16:05:93 Pixelmator 3.7 2- /FIDATx^ݜy]UW ֔J%!#B@0 ̂ Bqnlg!m L"m! UTUjs+i?yokkܪ{Fblt,HUUUXTw.Qױ1QÏCPٿ]pjs86QxGbʧ&L vҭ4J F dR YILIuֽ(q_޲+U>!2UY-1{Ru@vUUpZAW 8+1wVeDQ[[~x`+qetO` CWED 0TfF }EEnFTDdm C>Ms+I]\{T͝'r SO^DOU;JWe> 3ʀ*]. CxI#ORe>J3^S6W_ = NCnc#Ê0(Tl $ (2 Ucd8A#T> 8V\R+nM?+EG"E3* ]g@)y塩\.n38=sAßC%p梧 Dm:0 p\ UKuU5G2ZF T BGQb^YIcLsR]|zql}7,7DuI~N1r "jj\_O \TMAŘB&#/$XXFa⊠6ȸK&w[qpP)AY|9^WҨ229X|yBQK  MM&fDTp-[ky“H֥ a30J; *نM _[-*L%jP՘ WZ#7FCQJ0J P>윐Yl`P6EȑH GG?..ƗmtMrѥd"## ]5 T)3D9G˴148"M44Nhk]iClh?νQ DexhDbѽukJQ][ֈf^+&SS7xh8Oq4 cRi# _5յbPX[WrCQ*ի5dͯ 80Sڄ9w504}Cӡt?<>27(_84ej:/yo,~)UGKYԎ3]Pҕ/{ꗜ䄯3DUɵ cedƶѾi4QY{nk6ʵWiNxًX{ y4mn]uB cl/i;{^YVCq;; b0h7.>I5I;8hW_V$%Vɀq{[㭧1RMzőG̏?2v(z|n~5Ȧ͜L ;$!Yz͌85ge;WBV sjNZn:RG4&u\jgz;yN '3*ujprz1'۱R!axDzVt0 ! H {'S=WA= J `aF-xSHܦ%0,@Lj?z16zeSqE%ǧL WϏӊ⒋/>w^zԁ?dE=]]wyՌ]Zljoh+E&~E!aG։HH:RE8Q0ЕD?|\+8s_z"vdS&d>Oஇ)c9ub̜봉?Q2{[u~) o"aTxt@|K@Atn(#)$a #lE~(gdK]Hq)%/ć/:7~njXfMyC2zw,[:>G㏫6ҥKcc`sġڻ|W;0GDGUKtoX#O~UShOŊb9{Ƨ.9'fkbM@̙\o}N=%׭ L)$.nMy{DI]3'袒8px?ՙ6m8u M,ԗ=Ɵ}'Z7wƑ{iFѠMFrb(`an@nnCryʂadz-<%˻X0 $xa'V뀇u?}s/~'ʼn'(i1':5ѱK:=MF"I-D O:2zb[O G_Yo/*"c mk~@^ =>{w1eCַwyg|3_hO?-fL|TKVDiX LdFNHy=k#;RuȧB?Q D8wrf0IԡCG$XGpM}#$p΃Xvl[z˾N۩]6׀5 N<͋^ED{;P26 @(e|u)㦠1-38J2R,yXRWQRD}P88?~ jzsO¿wyr}qCKc,^Zش7#{hZ"iÆh<3L'=qʱo]4:{kiuQH4ij$_JɘN"1W'Yg: :5:,'SKtGǢriPO%/! zhO5}@`kA8?[:(Ԕ t&]wʧDc^]}SwcSҰo>(l #<08. fV0hV,ZaȔTф@vSr+Y҂'hf > mAh#RJ r bFp&S$1d+jU\+rN]ᙁzP\tb5M3hlƁ]H6,vx)e[QΨ~ڹ:D -|WG}Ss}bUî~&Zw}1ӕg; C*%$Z3zuKG;UoIe'@5ȝ`D$3 8FG g@CQx4 }n"㩤̄MH1IEBBi-ZUEoN}!@J۞4. ե32%ORͱaТA3u_ ɴSʿxuSlKS~D91-M& 6Tpy>O( egbJSw?QI4. +4/D^-9ѦsMP26}dBPsjRB7o#k&\30g< О u|ZS(k0,B2>3B2zG򃁽zgG}7#WRY[w$ȰAr!\96@d'd/٠TCBP3XyJ-gnp(]^щݝmuK;{sP5E9f,(V R )Fp3,{*"Q9yD ԯ N}0;jpRKSpZNpBE?c+`UO VS:|#aĈw^3p*̏`}YI?8 :5<"s +׮R46O -Q81;r;?|_YH4Pa< f>rxPZ¨JhEFErɵE_pGWR; JP1k*kŜ.֚88 aJhO=ԍA0*:˺&a׬\VRC'Uc6Dgnp-S |kߎ>ձ|?(dꨍA#+~4{vO5LS(ԆP+WF(@p.aJCTŤ q m[~c8}H"O=#̳ζ^0fۺcue94$_W|6uC9 mmڱ^ -z?H%j 2tT睺 =1gR)w]w9S = hFb`VךGo@(V[.Ӡt2N(N‹>+i֜yq.WQ#_JIorMk'NSfv2}W盀Dx"SnƻFԃfGO]:1p- R]~1ob]Cvci~q{X)tهb Njn>:6k^}h4ub}^W=d;O?xqi3ɡގʵ75]D|xo?:cӏЖyWX x+cF!ұxv/]fo_߉հ+|(nmnqg\W7ʵj~.K<׹+Yɥmt\ήn9wD /=f[W#~h==ۢEǜ9;y iI--"_Ͽs̚3, 454 M.s ȪՋ..IvJ֏@ѶYF FoG5 1й>>6[w;z(OƪX~SMq?csmMor1lB4)UIsi9qLj0u?ٱjJ/M9J%vZ#]-9 ?x6_>RÊ0W|1SbT;!L{o.Zy4><<uP#Lڐ"&eG.u0(@W~1&LӦdw`厇f4Sokdصs}:R%Q./.Ңƌ}+ /'ĭhÖx߿7a9)}Чؼ^sѯ_)Eš` ?`}-o*[Iؙ*GtPFBEK 41#}1p*^,(cu՗s^av |4h97A}m@GFh `W1v8,+J0,ZK>^ Hf#1|?%80毸B6?tȪK?R.?d}ȶC9 .AtB ZR[v~Ms[}@5(A''1Q܊BT`䡢EV1 0|p0k9V(d#( Td"^] :>/da3(IV;י+A?!ZghmY( @ċDf; Z> >22 @e} E\Y\`&UkY؇ <&!3p~#ڣM U~8#Wh( '8yfL57=Μ\ %z 򖘐ۙF"!C,U܂P*(DjjD?8u⒂B@G3 h=Za 8Lf 6֎;WF)o1S%CAʥWLW_ċӞ8Kγk90)['R)X^ ᴝ3lH#D(224|Ky( o1jKmEVOjg0ax| 7UEro:Qر Ih10!Ck3,elI5hD$J~H(\4Frdc)WIOъiֿ#8 *\IC1lpOY0<Z=PO|&Uxz/66z.,vY% r^>~@V[o?4'y_$(2x\JXhDt2ZCю q=ΪAsV3 qG TA%˜.E\ p e-ǨiI9aC VSxWRmnOm\գ +ݷ|TFOA(#3Ӣ۠ыЇTŀjX nf?Og^A. |ӺW8! >țO0l.Hh$*L8BD)7)snuLE(,nƸ“8Fkbϝ'Z/ J{%)R\ϗFWJx+YU|;O}j%^\'^Uȣv,LkO _ TğWVԙK<%Gcz}ΩR,ξr33h[\FѣWN$`&o 3? LƼ&)$/%!<#_ynT8!0#T+WQֈEO. G:%׼_S8vÉNRI#HefѶ/&ěQ^o<&~f6Wǭrulj4t {*n x?(rɋx~A NZdO 8 'm>8 '.6'_f{c_ҧ+KxM\γ⎻~ǿwO ;3z㽒f 1ؓb[ot'[jҲg1Pd/d; ؋kmCF c &?xߦym}p|z<-&56鍱|i(eLf8BsITd-*+1̎ tW&#L:eOˀ8 ] }߼쐨Ù*񓄏{wM%qk2 qmCL>8yGI<e8m?/]5^3/ŷ_Kw<Go|_+mшyԔ&#~"JukXhMU@5|*ذfu Ł{ckV{gNaRa`n%d,L0a闅dp'N4F-̀}=~)3&4Mк8C,[ڎ9Nܪ)S\xuP4&4Ot?d5z[~߿!.=)9[[w/3wuoůav%U]c7>tk| ߌUKjV7tKw_.xs ax7zcN^A|`Vo[g4=\g޻LR7tGϖh)ń8#gi"yKZBD0r#U;W $c۬h]ROS#y޾EXTM/Ͳg3gy.y"'N+GbY~':/i3g9 ֶXre4Ojo˟{.(֬X!E{{?=_nm6Nfkx_cyŮM#xb᧯\kĹ'?WZ'~_痱?V{EgFx>8Л'Ev/ MPH5g<;7jDGLvqS-ey`]} WH>GIh^YPa) v ȶ?F8pI@1#C2qVEi;u?A-cqQ Ɓ{5o?kXȮ^B4h`L1ü467ǒG{?/rsvi i͵qwkRI a0}G7D2¨HO22xSx>VR48yGoԯhcD` {niϮӛ=-$%z)| UX\QW5H&~8($Ym} 6t9glNu╌[5Hjznx%MoSV[v꘽zqeNSn-ͨIV|?[=g}~ӃTͩU%*mh4L[4Pf'/~)i;5]pa<%ɓLF![uF I"@JaDYٿ _}Q>~~ɌB(.qǠ-=-Co^;[\ALظ]hE~ኣ"ƚт5 sjUINCQ6ċw%j"C$ 7(-tuSYtGO(q?+c=n9`澛HMv,ξʨׂtbLE9Fbm>x+6ϔ  g1TwRCT*՜d*|̻𬜚DKP>0N:0q!k:UJd(<EO۪F`8rIGwRI -n9Ui7GDn֧% 38 MO4`]vNޫ[&%#Xev"P4 zE??O_!+4=NtcIQD x3]#u5d%gRO{6e4՘ʉ^PD$itdP2k!t,쇣pLt*ӝ&N3(8M<;F`G6!rcfF h3`ޠCሉTrF sZTIENDB`41347FD6FED64094AFBB12B7DBA1D441_snapshot_2.0x.png000066400000000000000000001201651461511344300304640ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resourcePNG  IHDR^ IgAMA|Q cHRM Q|o+= F6 )iCCPICC ProfileXíWwT$!!BzWETFH %ĄbGEׂ VtUDѵۢ`e],Pyu9}ܹsof2z,G,A5K‚SRG\+F(CU/&/BΓrs!> K @|1DhK A-8S=8]#6 q,Pr8L优LGmĎ"Pq~\GAnM~23}'9(D%X(pfȆbFH9떝!Tωңc ւYxGkT'8bCD9ёz a(bX{4ANPEyAt4$~s$XrYvb>{gc !YR LX {AVD' 92$qJ"W:-qd !\9(Aŗ(ŠAX8?(n~8'vkfI ɦ%7\;36V`Ky z{/eO( |0g<(AqA^>(Zd(z #SsAȁeQhI  &>#P-n>x$|{^C  SE3ACK1; zuÃp_p]a@vʆ3^A_dG2J%m~ff6E^k>\-py~#~Ė`V$vk;5`cr<<7(P8lGxIk ||bagH|f ܭL;j$ _e(tqỮH&/8\κ+$J.?:\)]60#g|@cA H)`2S f`-[vA=h'Yp\]8WK ރ~AH # b#Έ'⇄ H!!H)RT ېj7(r9#H7b(FP+t4h: DBt9BuI"zD_}T1f9` R LJr ᗾub='q&k8s|^U!ދ#{7MO$L# ; Gg"' 5bq&qqq?N|L#H${/)!哊IH{I'H.GUgPTJJ**TdK79# 7/M5ŗ@ɢ̧RPQުzSS]z@COT-EHQSwQoi4-J˧-UN>Fxjs*:^-'RޣAְ`ip4hTjոѧItҌ\Gs-VOkvSZݜ΢s ;g]Dmkmvv>6^-W$::t:Êf0V02n0>uv~+ۯw]>S?D?[~}`4g zFhQ2;aL톗 ŒFN376M֘0ya2s뙧2mmfffEfS=3טZXDY̲cIXl`emlت깵5ۺк fM5[m&+v=jn/d>0khdțT@"GjѫF񮓖X"F7v\Jk.4P. .]]]oݢ}up׺w{Xxyl+kW'ow|8dy>z ̎1}|9|;~i~[:M9Ux;f |$ :͚jƂÂKBBC*Bfք k'G 6bsޱcg=Axi)lBFm-11cc>8.v\帧qNqZSĿOJXp7&Qؒ41:CrprYrgb"LiH%&L2a턮n'ޘd=i &L>6E} gʡ4BZrڞ/N/12 ߌ百3rA% ڒ!;&{W@Nr\ܴܣ"-QtqvX9{کN)"$m׆K2"ʂӒ9]4 Kg<+ -u&>;em2'}N\ v {>e~?ʊ-H^иhἅ-)V+\x|pIR~+\(u,-//Ne`y+6$2Ͳ²ǫV׭a)Yn픵]˷\aņT*WUhqx:6lbt­m*N^鎤zZ`gίD:w>]Q]pϊFVӽw+5:n_zx[o7Fl9yGGJꐺuΆc44}ﻚL*[qr|'='3O>nrSN;v&̹gO8{>~DK§LU?w~}ń]//{k+WRޮגo뻖ؾs(q'O??eWۯ"s$Q .h)ЯL!>@aM!—jlVG Af8+}Qፅq`FJ7 |yN(tuf]`qBͪ]( pHYs+iTXtXML:com.adobe.xmp 696 236 JiDOTv(vv?ӓIDATx^wdE890ar (0( 9PWD1b `@Pr!ayf~9Uf]]~ǞUu:Uun۷;E˖^:Ʋ* |(Бg JL Le@5V -M*vtU(HRb*@^*T(=R-*daR\b~iv2ײhmV3 X%76-NKmK µWGi~MJei*cҺ Tl{i4 ,-Hy|8ڹZmObc9J]oIR5Ul mQ䵜2Dhka]TjZ4=->~O@hV(,_<'uuvFgpOeKԨ*lIj<ˊQ&Ӱ()(7MqۅLӖp\ k* I"|+ r KFhȘ TBDk3fK6 (hSChF{#v ء,mrRsRh1z?[jdE9n9tpA'2J E CX ֗ i&Xa!,/ G!'//(}KX4iL;S[exKJ=OXk\rg[ up`;LU{~J2 {Wa$hH!e,mDE۹X:&# Tآ)ДIutB;yRuKG9:W^ Q< 1yi/Ar,@^7EW ߨx$(%jmfI' @-J9 Ļ ᐄCgF?ڂR ?l[iRhX)1) R$PK,nZ}geW!3`.FG蚠YSA!.jaP0Rm]*TYԠZ6s- fPKfhy.%.L\NY>aS^ʵ8 ݄,ؐ%c2>`CZV0b'{w>cMH@_·[##Asγ?8-[:f2f(A@IrNGAK\GC7u5/<ۥ4(rY*|mV"ev:j'oń%| fMѐV~RVkB9L )ʕgI9}t2`bqĀHES}׮"\6A,)r"JZlJ=MsKDF*7F*Wu榻ˎK]iВ eE60M)!?ui$&`Je]) 9 {tozwOO̺>&Njзxa<;-n9s>"̈ԫɳ2*#s몑X`^,^ FMSoVS$#ڇ -ё3JU'Am|b~)A rh0M (GiEtT-Vf(^PJnYݹ1`,PWrU609W@f|/~+Ekb'z]Ԛ!z67%G >"X )2| ,3O([ SeRiW]D BÜIS U 1POК{ډW4e`w,Y2$I^uJЯ|}|sͶW}c&^QuO͒zRA\E]eGp^lN$qBvآ\JUUn8}},ZP5y <)כ( Q*hv8]nPX;7ϸTX*F,/vp|:yAR+<BfނuD̉ƨ~2Z 9>mTM?Q`c[]6p 3*#ȘzxdK36~hZGw!K4؝rK:izaxځV|*@tp i!}GK8lQumvuGfş;CHKSap`qz1cc)cN_:K$&)eeBpI[e3혓 r~QIBHb1"Z%Umr~@ީ@wݪ6.z_$@j z)s'^%K/8qAQU2('E#GQE51"۩PxY4APvK1 X2! ,=`_3ٱPm<_F 6rTr(xt/0!* ls,S U*P YbV>TIO"78ֲjtE)OP j i(Gw)S[ࠨvhA9f5Qr mbAvP_SK~,&Ш`>SWww<Ѓq/94-1YoҚ ^q7*`PnIWWw<}14ЯX@pt@0`9PHpsCn1@FhGABtenxͯ mAC_Hؼҏ").eg2DdCˏaRBꀿNQ&E9Y[h-(-YŔo:+  IRtr̘^Sv@:&^s2ytƜGTaN璕@ᑡ\SLeFH'nPĶM;\-KG4Z#qni.Z=qbѵt8f[nwޣCbK_:AO$B%6pX٘y-:o/2=~BV+h:y+ɲ\^gkJ qjz A~OswѼ91i 4_gMn+L1sbjkŒC$]ܙ6M%|X0;n|RǝT2<+)| ۂ2+u4ks=ϝ4MG^ *`K-|<`S36^9*N|q=1qX'  Ǝsg//=5qn[\'tFiߊ:'6k^G﫱{^SHK{Վ)Y)ko~+u=/Sc{Vug%W"vdF" ,z8k߉'-1 d?V)/׼MSo?)z&\J#K%1(O\ATY^}1ע}S*a:B{;2FoڐYNÉgf֝(8hV c*JP{9XνUZ'MB` {NBc⎛oo)<-o]|N ޥ]N]D װRN͟.TpV[`@[G4qNTNI2-- Ne͐٨2#@'ݕe%Y*"YtfJju4zfأŞ='f\=p1BcqPw1g NcC^Gm<=s/?]u},[la:q׺Ϗ=@|۝"k7_su[{n5=XX|ĬC;6LzݲTv$6ZkrDtV薯//|}j?8Ɠ}b-6s\~eODÙNkxxDSyHp[ccjg_\0=<8#9N-gfSv L^j ]#~ru`s2( > `㓑ZՔ[J5I~Г!pЪ ݤ>0cfCv}ckk:yiꄮ|b`IAI"UiY@cgWw,tKDi3IrA9ty\mg%2U&Xf͠pA Fuٕ~kunx]~P,;l^{ָEhYsxs.m\vW8֞0'|xp^_̟??X{cÙ3[/nY`ioq~Ƙuqǽn;lf|_f=7^ޱņKK 2 @8Շ=*ט;;9~kb]_܇n*1w˜3w^\qעsc9,M7$TW:v`xYtk3fL:qL<1gal63葭. jL!sd ZXL'NF2@9UN.PYhUNz9 7K FMI܌XE?m܄));wp߂M0n ӸΘ61qjɱ0#sȋ`-b]"9HdA٥V_D,%Ҋ꼐]>(AjcpxQv](KFKɡd)@*&O~yX M @E&`E* Urp:p{-fNxc}}}q ^=%scr۝b5Vގu߃1_=1n&n1zre8m6;n>ӧKn!~ǫbf5c͉ .F;r>fb}c-׍ q<48-|+~Z/EH|+Ln+hJ?7biG6VƎoxG|gO~x^zc_7W,z4 5C3umsՕll8MP9; Dq*q`&[Wh/AK|SH2Zŗ6Θ8YelE>@ƽ^i1scu}t } ѵ.*l#QjkҰl6SK8ӗ.b=О*N͓7\i΄KvZ$:hqEN5g.=Ӳ̹gwqĄ)s}N|{.SSObL3G?i^bE3khz?\.%n}l 6zֳcͱ KK` 2uŗNXyS?>w\7guvsb5V~ bUc 8 uֹPvѓHFV7]KX$`@9riKm˿;d(T*P;gƁr*>+)b#mWFs+SuXS7BS/$9%glƱ WXgU^._1-PQfDB 4YX- (X:/㳩HYD,(j @9`*PSLS'Ǹ29hЧP{)ɋܑdҘI$[Hd[gssI-_CEDE>{s8.PtkK.,>/k^[OS?HȖ v}>* h.S.z2N9—Έ꘸FgKl3?k㹻m}LI104$-Α?ƅ ?%#3<׽/G|#Z+J7szAZ1e,K\<ņ`;=_;AT*s> ٗC~ɔmss0=:0rG'{1I|Cցm0)3a52҆C\2 HqhkkY8LS蟗D&QL@'}>[ 4=tupR=ztP"'vJyq6B:BSӹ\)Du@-SZ2KHF)I_n5|@sJq=d;0nW{"(3*Ҷdrʥ__Js&NdDN!/,)u >K$?%~.~~1nc׋]77&_c0a-Nz^^\kh<mw5WF˙IUjұǕAop;kkgϝퟙÞk1kq[OZ6/?e|[?_bU:?:7>đ,({yCY5?rZ@Ph_zFi#?`{\$zM /<_J_Lk~uUP6 RI<05R͋kvM:5Hu*q&'~w*sR+Y z;9 cNXibG6G;B*rs] YppjwhXm۴ٖN,$ < o+A2TdzGTGv~o˖.S s \pL.EP%ȒTHV|dſT+O\pclo~J3ぅb-/hFbLMs`eن:^L~&l[mubμE񒃞mGf=hGbgL?\|i\|5?^t"wUݷse|?>QAM5ѯ;&m.nj(#nw͟>[bg|ͻdOU L #Lv+4^ЗR5)>-ɃX!G9O~Jg(y@S7c ,OM%r_\'WIŊO>fpOe5CaoӃOệ36!xە'4E i%:A:z epDG؞i{NFA:Sd܂) ϡY6"0ղSO xpW6*9'5 / q,<@(H|6/n-w2H>z+u;s?(\m{tjħM$ī^?_:ï~:i?n|(z SX\pΞՏ dQ{K|oOLӆquWo42-y+o;&O)/{,WO~N3>'ű10?robHIuyg|?z -kբG@7 /yoz[_ici(E(($Exۺ9P&_ \D`sM9rTe~;dѧ$n+)X_ p+3$:`ǖA@#H9G: p6tI8]vrNu<'_,פ:"uTxvnb=!PUDdmD8qtY<^xKxC _|U,@pw?E|?ŸcRJѥEkko=sςťX:\xytϜ_% {˒1}ro|qGm`'CByqj~s\khDCqwE6N=gȂeqeIS:׌~gz/n!3?8ȨBjsLtq$w-ХC}1yo3=ʵCwsf?X2<҄.V[kM-s:I47Ly}wFض (b/$7h+?t߃X- $:|4kT9+el9PG#5ܴVW:牦䩭7˄%ف?-;R?K,1$4 #<ӃCCq|4 ?84kw󙒇xf'jj?x4f c%+wb1*` \7Fn\: ru-v]BVr| .#2 T:)ߔG(󋐉G49Xxr(Hoaes)Qp~ wKp r9b lnyGljcǥ^1v088`#ؘt3-7qlcb , >.!XM G*nd4. \:EQ'H%Pbv)6ҵ聪 0 h؅h! Ȁ lN7^Td^gC=œT/=Js1!bde NM7-pBK+}Vv,;iW!7_mKSBX@{Jاc2[b*,k ɦgqyZ~Ԛpu4 EV2`~A3὜9>D8hAL]cfU|5<|8Ÿl2V qN'a ta'f4V!0&IVڒ S"_4抓1IgSMayX>oR3F'zDՖ4I%&BT. ӃYۥW\` ;,:58+ߍ$r9' =S6eQ.ȯ zZ,dᐷ5$8of-pȠNKRS*zyIW8 J ˢJhͿjɲ:=1zdOOm49FIEXT؊9?Lٷy;$oeJT} zc$^|aqM!4-6"V_;/WgDdj@:~0k6>1 Z!堒&)@4\LJ3-Q*3S.|RTeRsFAC[}jRZWU04iW7mݖjc8Ev ޿L3 ŵU@i]Ƣ]e% ~-!ʅZS[5o8X)h)R iEPkc bb*kx[36;GHc`HHs@pc_*/n0so?k}FLuFӫ ?,h♮ m"bQ@_^@CKLR L]W/ןeN#Pe9o) #D6 歋)4UFH .61 m.Qz]LۗB'o΍n `IYoQ$YgVPh@ͫ䅠@Hs (2A9bqFV9:$qn+dwY|}c𩧕]P8\"YG`Bpn jhRq]cƤikiP.%?.:['[V ܃n/Rz'"](RJ$:u!qhz."m$6R)$0 @A\Z; mPQ:P.)G )TwF k˖\wWeMaޜ#Oj'd`C+Gdm?P<f9XnC8bȄ^QCRkk)U Cڂ]S3 -~ԲWIzx[(׌j" ǾbcyB['i{ %oG7FERs<*N`"׺4=.]V'4[tTax஛oVVUŎ԰ʻO.//tsx20ɱѫ6A2^G~MB 2@hf7G)RJd+e9њTVJiK8К 믔lROrG\7/--<Ҙn2LVx Q9oFO*:f%L^mlOl'WP-gJ iZ'=@ϏMݯ*@~(7bos`Ltrd3NeBf'p"CYjkR QE d-9H)d?XI!3mi 乓yU-_-J鴃E0N`ۮ R]-^)AܶJK oY((sZ.jѥ@7lC&Qf.yY@|UQ֙Z8V˪ 1?͓ggٖ)hP.Ad elS^FeՅdF|RTg+I4aͷ-^ 2;HhCŠv#dgAX9ľTF7/8 7BZf `Y &%ZHB㣕D g !LNv-׬^+3e- rLH EvچDP*7iG'hĵU&A槬˲'QyQ$j(mgCb!mf¤,S F>K eRjվĘ Pe-0 T޶7TU%6Xr!(vwHE&H2alTDW^ E^s[;K/xK$ǁ/M%۫}^}p&Hzz"Űb9^n4>\ɎJRT[HIdEK LJfL/)/H'jf4HupXd >90Ա%Ɂы0rU6eZTʦVDz!ME^נLr) ~hQ~J}2O-zh m~LJg",gfyNv(q:SGBqr|#e_ $ Odh̃M e:8) G~pۮ'8Vzm`r_%>'tW:/03sfh<(aq1!$@B.rUz7S Ax2ځγm/5+HVyHnu'*C F%l ZM{}cY8Op<`9Ue,qNKhƸW9TsA:[25d:&vgݿ&G." ĒT@*8*C#r eY.UlEYA\$0 H9&T6@sesMqPZǗA B >Jfa:w>2@PPmyU@5O̙7RРYuZ3#NO^ut@҉ 7iHp.FVmN`I4(RlCVTU\ѲS<- *-`zC̶Ohx{A&d m_9\7v m^-*P~-vSr(Ƀ4ڳO6hȳc[MtAdl=mjb΀+ʓŇΔI=KS kpy:a92\lJ0(vdraH{֋Ҧs YM Znt䙿A"x졻b]"<=Уb}b>dNM4,$)3s~ & 4DDK g0p畧;q`6/rPML+rȅTuvwGgoOtr=Q'7g)Iy"wh^\GxA1?΃F^,$*up-WѪ_cS)] sϏ.o y[JGss(Cթ-ϨǪEcBN薟w*/ЉDŧDG y dMHɳ  ~_yJLX\`s,P"Bc@JCJ*ә)J7]=o<Kb'V!;r)|_^s!#lZizw+ܬf`'4Wbq{OQqJP ^aRU'DUSs:FJ(8X839IY*x(rn)KK+P!*qin2TF$3s13k _+4i(P{DRVMLHgc|K"jґw.B`/_>2`Q^TY/ THvs,ntsdѣt1;Ԍ?~ ʼKvs 6:OWu-yKRr| U&6TCإmn̠6 Qbϟx\%O{im.)~Msu \h`J*rA1x`jQPe:A PzaP\p^\oz&!Tfbx`šKTIɼPfZYEۜ>BhbN<ȯL\6(2u(r5z$w#9e\:X6Te罴Ԁ'of-KI]hɲҷxa\v91:ԂhV`3^~Fں qoRn9OMf_1)Җ;=;Vdi֜e;^SY.6*1ycvPu!r$as۔ ݋\9`[60 -) ۨ7PUUF -Jґ.RHj zӧ=[??Xc}bapż4(})os4ir%(&-.??O>!^xGbl%89=W"=k`D:_v,Vpf5 n(E,F;ڣC%?`H5иoJ|RW@;hh992rḛ0K16QbWܕ2&q߮M`A'_@rM1anxǍo.L25ŀ٘cxrGoĉGw5z>j!HgWOo*pVMɉ8sY>YIഛS=c̍bX4q``j*b*Sc v0v:IVıݥ6&fR^ h曔Jα&V83 S qYR_/e=ڵ,X'zK_MLg|!>K3iIqs?u+'w7o^=cx#':KK?bƆ[41a7%"ㆎ&Aԓ7ѼL3{ wsDLxmG/?#bFñxH^}4 Kchd0.E} Pgj, ,Zl!-zlXk?8XgOxH( AK&2ALT?'RgI3^Qj|鼸*pk|w;>9'ozYguuqu:-2W7zG%lz;Rm7'z[IJ)%O. d֍^T,_Zv8[cƴ ]_ˁ&L-V׽cz}?~B3$12Q?8Ws~0hCoˑ L~릿F%?rZ:ƅ  2RgtrkO-W@?t"~vq.‽3^s69Ʊo@lvq_oc%n8LN;x+cćqLk6+fK=/>cb։#++&i/Gyآ"[9IDW?0EcZc?wy^9O b91gn|[&#\?K׃^msC|akRiB|sgrY~k mv??^s0_<&zGK~:5(! E_KˢsɼjA)R\蛿0V6%{^M1i¸Xֿ 9{: ;.x뎍}s5e?Q,}7']* ic# \uΰSW C}CwCnZiz9%T(rH>:m<$< JuҪQDzzGg+VؠsVLql9i^0͗u/٧~*6m{nzO~(t·]98}0^ŇpdtgqĚloz!]W/}x8K5nEѥ;z%=CIrY)@m}怿UsΉl/ѵ+?4~S'|=懛,ą>#~3:_;7ֈ'oCpJex{}11f(YD1eَV|&李X<0.m뱠YL41N>8Oǻ8/oc:_DOs[w%7ϋb<ΘE;vU^ Z/, EtP&OzIVY3VJikŘ;,6*+;.+RtDWx/_3vcEb3^~qo]gųcߙ0. >$̪q؋8c~xc~ϚѯhcպkƓ8^O'N?r~4g5h7x䎿+)ӎG&7WDZg3=D̺瞸Yڽ,x[,?XݱkߢD{^'Yo%v>qe?=/zM8'|`zo_^[<˷i6{V|.zb_ѓ>]ͤ)щNv%Ȼ^7^{Eȃ⳧~-CI-%Y}1cg8VYfn[^zng%Vxcpp0F0]d,6&d\@W_4\G> zy|A;/8"7 ʆE`-f񆏜k_⸏\~^nVźD$^힠_].` ,r A9s^ oI] Ƴ_?GǓ^˞5X+&7߶O"?j|䃓4f/U@g'01AgS-8|u"NRC\Y7u;sCD|s/.H|}jԢ滛+\>V+.,fwL3?~sםH ƍ,u&Sx`qύW8mGGSH#mGǽNne-o?ve1icjS^8=v,xM{t}<>b.sdlvq]2^JA[D&&}l?0iXm*1mi1}/}5q7N;3e' &ǚ'?3q??=EJ_CW{%w*ioٿ>V8vv z6ݬZ=ǷNt\_ȩqv&nCXe @kg=-Ρ΋~ɟ?w/AW[szzq_ݚoDt tu 6sx_ǵw?q\Y?]1;mHP4B!9>$X":?k[I;'|TK\XNzL+6ѪgIӵɸY17/g~|=וγ-NJ;i /*^qgO|2[c{A'z׉Y^n7>8g~NzG#7mwώ{o"۫o8*X|/Γ;qߋ~vGCxѯk_vq9fHρ?쏧'-gN83/.ߜ8įеߏ8463vCYNi\xKg}.=£W}k ?xqoSjgyzV-cm*-?zeڗ wL[3s^/~ap>= J7y֊xbU$vk5Ǻb 7S䝹٪1cilǑqܑ+7N-V8|8}/#28HW]k>' BdMޱbzǚ37]i1n*tIo!UU֒} FM9r)^֥|$~Ua/[.ILv/3W/s}{mscW&̌}9,{"xcby7۷I?xXvؑY'Qwx{O>rO̺xbÝ<q}=,Ftv(IC~S.tIg̓va\&A)/N ƷK{(n\gbAGL:?t  `'0i$٠vŐ&Ogq8wPBhv|,} cphvB]*`ӪN=v-;c$A!ϡo矰hQϏAY]=1<]vD'c-`[5;Vy7:ʭ,u'u_#G?G>>|n/6r``(:{?H&>$""2˗}~Ōcn\{  ^p1mӽb&%G iuj'!o$rJ,c@i =rDA#fxp{-#y#d^:i4$^g9wo|ٱkYLOɲ-ۤ`۲$] TQ) hrRՓ,!)%'݌,gٙ6z P&X"c܀FZh6жUDNE.Ζsti~fEƠv~0.{ۍh<+~XsaS]*+έinTAwWy~pZ^OK{͋BU˾Q -ISW 6V"~'ܴR]S -k@MWVP lhP3k Q^e@S"|˞xn; Ovm[` Dٖ ZE#>\sHz O5/@Q^R2P6*+b9E,[wދt9< ߃켳4!/ 9=w cN[)ĔC^e8h7R{ĤegzN$hΠeFFYI"#Ƒ#[9˗V5#*mE']TƹpX` >m mwKJ)&-Jma<_ `@d6 vE^1U~ ̓,s&'LXp>ِwsћ: F_zdX}#' ƢWLPHGk l !9$ΥzU'!W7$d,D,i>J-Ky+|_zIxUֺnh*JQ.RkR2xnXn8Wb)u'yYeM<; H٥sbg*4DLLFMe jF*(K'^(nNa5gβK !+)O:@fYUgTӖM8堫 ;F(rW.f"5+!ҹ?ŗzW3X) @퍣-7Jg-eAp6W Mp bj/ T;SlRy?2* G%@`LvAS,gKMEꝯ^5ѲRĹ%Rk$ `/I>m$*qLhN]>sR/:ڗUjN-Z8'n V2Xg}_~3e)!y)kRr01C'f mNTmt&tSd٬6uh]#BA,KѾ8fĒCN.ipKv _dqJ!.sbrpO>"GͳKYɮ)OǢ]+34PkzZg5f (]3/u fd" BpD kX@=I8ڭg0ǢK?}sAE ")+0z4r䒙vuM9*gfճbh(uH]<|rCW}QsPaށ"()5G3.?o]xQlξ/]D'^/bcD|I혺j\1<{ f)H)tI rYMJʝP;!W9`r%ŖczwP'!3I}ڤW[/S/tZiI%$.%xp*smrK^P_YY 98yd_yp2\\A46%.@:Q5B''x৿տW=֡n22lR?$r~S u.Pk36fv:k׌ SRQ206y;zOeIEIv`x;N`l5yU^5v`r{$_ Ɩӻe?擥?BffnP⴩j!B|9ys{X*F~߻"H􉅕 )Wg/7  XpϲHLZF-UgP lȱ!j·&#C ~{yZO{S^S7m)g8(!uDcsյHO#:tZw7HȔSb1MK8jJIL_ʵ k?ݳ_e+9Kvh)!Pm}щ@)A2#Lh+4 cH~|1 KZ3rxtVLA戴7AY3* RlזתsVHeb}]9mWeLE 1Z [nԤOV "7<}~E[:*u.%xpqRE8 d4`z9ɂWUxf3-;y̥}6Prnю(6>k:~P/,l70ѻD2I mROM)>3:oN,( ( pvpp4~ilc@/M{I||w8uuXoVUŔ [6&we-kQɗ\ H?3M;A,Lr + Rs@.6'Bx=L>TF#UE9u^<Ē ۀ \ Y (Pt7lgP.{/g.^mK| qZ6m6PQM9NaWldffbg` 3w1B7hl/GHSɅ\(zSKD J,\SK@_ m:)?d-\Pӧ U*{$AjɅ>Ќ'7r .5%IC2tN##QU1)ǭ<Y6a[OYTEA:1'[ XQƽ@+)O 'H,ȵJmr펙G3> |w g[tW[$U}qV`t` -YN=ZTFV°v8)vL Ցoܜiw +%PyV|ݳn"P$@MH:a@lH !A85ajשb#Nb0cv*vx~eIgPT|Ib2e+'y]*%( WJnDv:M.CWu,&/!*)MRnERך >S6fB-;|&"KC.Y$f9#%&/?c՞`V۟PђǴYt#% حR]' 17L) T;lc\J=<`L>q,\ȵmyi4=?#ub&Her//??,5˰L,Z 7؃Eb:R t/T 'pyqCh,,wrW('Nq -}2 yG@cg~H]D.H|hNȠr%PC]$PEmE*#p6&- MhfadUP䉥VS,ț|,'E0)Uw1#,B{l]0=q+yUbiO^oܬUj:hV'8fAbrJ$Tߡ/mz5yv" w>r0CW{.XEYF::4BL>%s|bk/JVN͹.͍>H2'l(u,7ܾVk'gi^no>+vm'beܝP煊{H&)Pٞt z^"!$Kr@"dٚ[WəA4ȠR,,v3>R|jAS=HN~SVY;'q\#GvyTVO$j'e0E͕ЂsldH٧YeJPaz3$E: 4q^qTCΊ8STYY8D2zSB3J[y80LAЂSDXЎC.d;UB?HVoWE/pH˱ uS*&q)㨻#KG?#71H$0JaSnSf<Ηi:WKhB R d~v.=:rk27,\D2g Μ$U R5@tB0'3 o`,Çsge} O {`c0~O/^}g$ȱ#ҳtvYY>\:W[|3\3=d.5퐻ȈUE/D9vrMYVr;h[UX\ XkM[o07*TY9m%sy闏⛦\*u֫HÒ}2uGPm}5x]nSxvF*Y6Xh'XT 1ylgl0ӿo`_F3ɘ2uj2}{p -n'g|Zé?7{޸'߈qܾ"M}QmnxIWsZDZH$|l^) L `ڡͲEDyCyU=)y2x2N3old6&Xsz*_tɖ+ا8A9p m: -Wgkm_]^}ߢG>i]M:xJ[[zk8~?G˴uoغOpj`284o}˛7>,ХZSo^<>3&<_ڙp3`U_|?b1=|Dd)g,G^>2 lY [P^֣ ,Jv0{8MKᾑnk'Xވ03f_ZM3—p k:!\o>CA *FEOzӈYW+u7) :4Bϲ MjO]YiG_׸ozuк2a׋3fB6Ni[%?H$Hm8aQA>mn3LA>Ez_;1iv0uQz|,[vZZj~ (Kh/7<{Gmo7/%lUnzriSICP*J+8^ ||,E"=T`]WӒKPL.~M]"ma+XǿV("?ĵsi qJ]Q*Jō818q聇;u` * {%;cWƀIs;Wo1xxkyɚc?8+n6c ^q6k,i6c?.w?RczqɹߋYs{&`]v~I䠼בȞxut@/ 7RZLBR.\, ײ%ZZy/|ef7_uI/~519=`b?[:7\{-A xeRIėlAp#p'DH`գ $ΦA1Uh4EMP oxCW(\]mLrQit{ z(|e%LCS4CZIb|(9@HFѤ1]hp9uxӉ_e] &|v =rwMg͐Svy_{kIn喘8V'q]-*+R8}Incln+Mn8yUY2e= &hO(Z\CN}s%rMl1iM2^1v[jyۭ^fn[|^:ĺwGi}O|KtKw% .#m ؒ${)c0"\tƁH|htfyq{LJ۾[c?-XE߉s7ǿya;c탏34q3WOXIL\"y/5^ )1s-cDℯŏ~W`sbxryR&fHgv-N:~1)~c1yofރ7~qe<9xs>-.5qwψ7SO:~w{_:1v.{2>_~LlJ>Ilĥ}iUN .%LATvfjPXsf*x;oU+J.myG4+RF[ ӷɖgj׹"{a4/pJ̑/x~3#֞Y~&) 0c4?bS;q)u~ƑT|/y?<2?u_>}ta'>'[u䏨Y1Ă 6龻.+xqlN?1J%wi b]A=u7W?X<?{o%L|z׵_xi^wF\0Cv*il)ݽs|m6[g6}o#քxkN&A3$Lbv̙T [n;=Λs7OtoW_JIYļEEH_``fk+&|4ok㥹!sRrb0w$a(Vsm 7;w=:+^.os㱾7Pvyx]~& OL|YoK/|%Z79'-3YJߓiOgQ=q׵럈G;[\~1S3Wol6%&qF8wxIʑ=4^MZ`_RNׂ{ِ,\=D) NRON ^ g=JGTxE[6Yf=q[0?>z [X `Sd똱cƿ_-'h{2 _r]w5N==q7v1QNcQi)qŗyvlW>/7]8+_^?Kӟ=5|broDSۯƚѿw?IZ;& dž`ĨM,R v}Y_Ţ T5Ɋf}.%[`aq`[wubv.ݸcc.tVncma+mRӥg|4tU=wZ1QY VBhЀS C_"4^q9~iiWutӟƺk[milɆ436Xo8:3֎7oal&j[Ou{bM6Lv,NыIֺLٟyU}ȫㆋΉFpswX4Xw}㖛]7߾8Xgoonw#y&`6~vxK>qR5Ɖ[d܄IZXiZu1aTF^Ss;yXYϰ3p+8WsCC,m8lfcEWŬ)kmOP8=̉5bTk(*>mIrcV{*M䑾TBt;0:q 0>D # \kL7E~aR'ɯ&#jwsZ} f_fn /mwU )ԹY'u9smŎ3(бk6uj\_jkO6"w2"lI񽳿{?:mw SǎsOym^{;x2*S鮳ɦ&x^5v :ߘS Y߈DL]e3ATx|q q}ŞKgbo׼㇦/}ʷ؞Θ8Ӑ)~𭃴ϼ']vރ߷uXcLFՓȩb 5_TGX |x _jml^qK^WNFkZmX-XwXwꚸKcҴuc-BهepѢF;ƄMޠEg1{qFLed3B G\Q( ,r(au_,'ǩBРLh1U }^ݶ殉Y R*}Ǽ-Jz_Uw~9K2&AP L<C`Or2hx4G&/=r_$'hH<g^wl*?GoyScpX@߿h~^p)/K(!o+V,!}UBJy?'4[Igg>"w|@Rx!|SMjV}ٲaaJZ@ˁOEOϹF.{ dp~#]$57z'D$Ų,VTt̨a#OH~l2$&KoѦR+1!َg]6z ,+o?g{.=v K5u.+%]Źu`3*)+ x:ccڷ'|!5\lO|#%[?Sz /si+e{Kʬ y {Xzu`lRbW{NXi 7)tO/N̕ %uԋ۠ 7$#LjrYTy];5 Ҫ RRT5ʄWPl[ɔ;ȩcP-|a6Ԅb*yٷG <}I-(5?~_૶։:3/.9':>5('T֊XL2&+RT:]}rkYjz(sPz95@V*;mxWWBM^"e]@+]~(MŏBMR|߬N eeP(rnˬ[ ۔#5홒%d0#ڑyQ4~6ub<D;ցƒ켂 0622:4}ͬ 6w6ב88HS_p22A>h/,;k#*`Fr]oY i/;Y/dj"wD7qIt$Ew9)gڂE(R'5 TW⚃hT'K0X05QF:?1cL;4zYGr{Oԕ9ػRg_ikDsL}Sl6rɗ'IϖPmQMnL|0CwzܑU-r^%%hz \@@7wǎW/oƖ [1fA`lg+,m[\Df:^_<{Ѻ(3Bg#X\7& nCuSSʀCtUPv OBPI'8r&BO]h,qMlEw۠ 0[VYnOm{^M1p9bWi6_*LJOudKvR(!T #ǜp]-\+ꏿ;lV=fl%7A>++/E~ ~J,Q*^UqFF.<hI}N)}N+Up%3 0XSTS4I9h@s78y)7e|Ãv3MF S U{FKti =l s)%YdrmYR峆d> Uvȹ]Xd9i]*f]`pvZ}IBɜG nEb(Z /kR O`E'OlF+4(S`^( G|?AcBP/!2@%q >ͬ:O U2%lRAHH 2~BÔEy陨fz*pߑt/T̋txؖ#T)o+%M2;kBCH}*Q/NZPe_8+J֮- Q'(ZdڒTC%JY"b/LK:L) :=g6䉍Bv8[[u;r?\|䉟_p%KTs$q%$FlņYIc7A :r-:4ҭi)˯ 6~V}OIw5 VJ3tΕ,[v BoJ*'$?KBj|'E=ǀK)/|k^@KEP1Cz/Q}ȥ$^ 货 }\,d(Ζ~pIb'cL(<Mߒ?SėnnKXSnkKh,Sb}Kh)XNk,9x{~G2g'$-5*e?`U*Nj-e2W9' sGIvNKZ?UoJ*Ѕ7H:XM"0SNF.zV]OZv mr/L6-iYbK)h\b̗hFSjv#y2!ʄ|ba(mʓ4PǺձ]KӺJEN#4g6^>hA MYg%g$϶Gb %vGzv )۲THnbkY N,ץZIG5[Wwgr7 ZIENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resource/84E8DE5F92554F5396FAE4133C935A18_snapshot.png000066400000000000000000000400671461511344300277410ustar00rootroot00000000000000PNG  IHDR/1H"~gAMA|Q cHRM Q|o+= F6 )iCCPICC ProfileXíWwT$!!BzWETFH %ĄbGEׂ VtUDѵۢ`e],Pyu9}ܹsof2z,G,A5K‚SRG\+F(CU/&/BΓrs!> K @|1DhK A-8S=8]#6 q,Pr8L优LGmĎ"Pq~\GAnM~23}'9(D%X(pfȆbFH9떝!Tωңc ւYxGkT'8bCD9ёz a(bX{4ANPEyAt4$~s$XrYvb>{gc !YR LX {AVD' 92$qJ"W:-qd !\9(Aŗ(ŠAX8?(n~8'vkfI ɦ%7\;36V`Ky z{/eO( |0g<(AqA^>(Zd(z #SsAȁeQhI  &>#P-n>x$|{^C  SE3ACK1; zuÃp_p]a@vʆ3^A_dG2J%m~ff6E^k>\-py~#~Ė`V$vk;5`cr<<7(P8lGxIk ||bagH|f ܭL;j$ _e(tqỮH&/8\κ+$J.?:\)]60#g|@cA H)`2S f`-[vA=h'Yp\]8WK ރ~AH # b#Έ'⇄ H!!H)RT ېj7(r9#H7b(FP+t4h: DBt9BuI"zD_}T1f9` R LJr ᗾub='q&k8s|^U!ދ#{7MO$L# ; Gg"' 5bq&qqq?N|L#H${/)!哊IH{I'H.GUgPTJJ**TdK79# 7/M5ŗ@ɢ̧RPQުzSS]z@COT-EHQSwQoi4-J˧-UN>Fxjs*:^-'RޣAְ`ip4hTjոѧItҌ\Gs-VOkvSZݜ΢s ;g]Dmkmvv>6^-W$::t:Êf0V02n0>uv~+ۯw]>S?D?[~}`4g zFhQ2;aL톗 ŒFN376M֘0ya2s뙧2mmfffEfS=3טZXDY̲cIXl`emlت깵5ۺк fM5[m&+v=jn/d>0khdțT@"GjѫF񮓖X"F7v\Jk.4P. .]]]oݢ}up׺w{Xxyl+kW'ow|8dy>z ̎1}|9|;~i~[:M9Ux;f |$ :͚jƂÂKBBC*Bfք k'G 6bsޱcg=Axi)lBFm-11cc>8.v\帧qNqZSĿOJXp7&Qؒ41:CrprYrgb"LiH%&L2a턮n'ޘd=i &L>6E} gʡ4BZrڞ/N/12 ߌ百3rA% ڒ!;&{W@Nr\ܴܣ"-QtqvX9{کN)"$m׆K2"ʂӒ9]4 Kg<+ -u&>;em2'}N\ v {>e~?ʊ-H^иhἅ-)V+\x|pIR~+\(u,-//Ne`y+6$2Ͳ²ǫV׭a)Yn픵]˷\aņT*WUhqx:6lbt­m*N^鎤zZ`gίD:w>]Q]pϊFVӽw+5:n_zx[o7Fl9yGGJꐺuΆc44}ﻚL*[qr|'='3O>nrSN;v&̹gO8{>~DK§LU?w~}ń]//{k+WRޮגo뻖ؾs(q'O??eWۯ"s$Q .h)ЯL!>@aM!—jlVG Af8+}Qፅq`FJ7 |yN(tuf]`qBͪ]( pHYs%%IR$&iTXtXML:com.adobe.xmp 2 5 144 1 144 348 1 118 2018:05:31 16:05:93 Pixelmator 3.7 2- /FIDATx^ݜy]UW ֔J%!#B@0 ̂ Bqnlg!m L"m! UTUjs+i?yokkܪ{Fblt,HUUUXTw.Qױ1QÏCPٿ]pjs86QxGbʧ&L vҭ4J F dR YILIuֽ(q_޲+U>!2UY-1{Ru@vUUpZAW 8+1wVeDQ[[~x`+qetO` CWED 0TfF }EEnFTDdm C>Ms+I]\{T͝'r SO^DOU;JWe> 3ʀ*]. CxI#ORe>J3^S6W_ = NCnc#Ê0(Tl $ (2 Ucd8A#T> 8V\R+nM?+EG"E3* ]g@)y塩\.n38=sAßC%p梧 Dm:0 p\ UKuU5G2ZF T BGQb^YIcLsR]|zql}7,7DuI~N1r "jj\_O \TMAŘB&#/$XXFa⊠6ȸK&w[qpP)AY|9^WҨ229X|yBQK  MM&fDTp-[ky“H֥ a30J; *نM _[-*L%jP՘ WZ#7FCQJ0J P>윐Yl`P6EȑH GG?..ƗmtMrѥd"## ]5 T)3D9G˴148"M44Nhk]iClh?νQ DexhDbѽukJQ][ֈf^+&SS7xh8Oq4 cRi# _5յbPX[WrCQ*ի5dͯ 80Sڄ9w504}Cӡt?<>27(_84ej:/yo,~)UGKYԎ3]Pҕ/{ꗜ䄯3DUɵ cedƶѾi4QY{nk6ʵWiNxًX{ y4mn]uB cl/i;{^YVCq;; b0h7.>I5I;8hW_V$%Vɀq{[㭧1RMzőG̏?2v(z|n~5Ȧ͜L ;$!Yz͌85ge;WBV sjNZn:RG4&u\jgz;yN '3*ujprz1'۱R!axDzVt0 ! H {'S=WA= J `aF-xSHܦ%0,@Lj?z16zeSqE%ǧL WϏӊ⒋/>w^zԁ?dE=]]wyՌ]Zljoh+E&~E!aG։HH:RE8Q0ЕD?|\+8s_z"vdS&d>Oஇ)c9ub̜봉?Q2{[u~) o"aTxt@|K@Atn(#)$a #lE~(gdK]Hq)%/ć/:7~njXfMyC2zw,[:>G㏫6ҥKcc`sġڻ|W;0GDGUKtoX#O~UShOŊb9{Ƨ.9'fkbM@̙\o}N=%׭ L)$.nMy{DI]3'袒8px?ՙ6m8u M,ԗ=Ɵ}'Z7wƑ{iFѠMFrb(`an@nnCryʂadz-<%˻X0 $xa'V뀇u?}s/~'ʼn'(i1':5ѱK:=MF"I-D O:2zb[O G_Yo/*"c mk~@^ =>{w1eCַwyg|3_hO?-fL|TKVDiX LdFNHy=k#;RuȧB?Q D8wrf0IԡCG$XGpM}#$p΃Xvl[z˾N۩]6׀5 N<͋^ED{;P26 @(e|u)㦠1-38J2R,yXRWQRD}P88?~ jzsO¿wyr}qCKc,^Zش7#{hZ"iÆh<3L'=qʱo]4:{kiuQH4ij$_JɘN"1W'Yg: :5:,'SKtGǢriPO%/! zhO5}@`kA8?[:(Ԕ t&]wʧDc^]}SwcSҰo>(l #<08. fV0hV,ZaȔTф@vSr+Y҂'hf > mAh#RJ r bFp&S$1d+jU\+rN]ᙁzP\tb5M3hlƁ]H6,vx)e[QΨ~ڹ:D -|WG}Ss}bUî~&Zw}1ӕg; C*%$Z3zuKG;UoIe'@5ȝ`D$3 8FG g@CQx4 }n"㩤̄MH1IEBBi-ZUEoN}!@J۞4. ե32%ORͱaТA3u_ ɴSʿxuSlKS~D91-M& 6Tpy>O( egbJSw?QI4. +4/D^-9ѦsMP26}dBPsjRB7o#k&\30g< О u|ZS(k0,B2>3B2zG򃁽zgG}7#WRY[w$ȰAr!\96@d'd/٠TCBP3XyJ-gnp(]^щݝmuK;{sP5E9f,(V R )Fp3,{*"Q9yD ԯ N}0;jpRKSpZNpBE?c+`UO VS:|#aĈw^3p*̏`}YI?8 :5<"s +׮R46O -Q81;r;?|_YH4Pa< f>rxPZ¨JhEFErɵE_pGWR; JP1k*kŜ.֚88 aJhO=ԍA0*:˺&a׬\VRC'Uc6Dgnp-S |kߎ>ձ|?(dꨍA#+~4{vO5LS(ԆP+WF(@p.aJCTŤ q m[~c8}H"O=#̳ζ^0fۺcue94$_W|6uC9 mmڱ^ -z?H%j 2tT睺 =1gR)w]w9S = hFb`VךGo@(V[.Ӡt2N(N‹>+i֜yq.WQ#_JIorMk'NSfv2}W盀Dx"SnƻFԃfGO]:1p- R]~1ob]Cvci~q{X)tهb Njn>:6k^}h4ub}^W=d;O?xqi3ɡގʵ75]D|xo?:cӏЖyWX x+cF!ұxv/]fo_߉հ+|(nmnqg\W7ʵj~.K<׹+Yɥmt\ήn9wD /=f[W#~h==ۢEǜ9;y iI--"_Ͽs̚3, 454 M.s ȪՋ..IvJ֏@ѶYF FoG5 1й>>6[w;z(OƪX~SMq?csmMor1lB4)UIsi9qLj0u?ٱjJ/M9J%vZ#]-9 ?x6_>RÊ0W|1SbT;!L{o.Zy4><<uP#Lڐ"&eG.u0(@W~1&LӦdw`厇f4Sokdصs}:R%Q./.Ңƌ}+ /'ĭhÖx߿7a9)}Чؼ^sѯ_)Eš` ?`}-o*[Iؙ*GtPFBEK 41#}1p*^,(cu՗s^av |4h97A}m@GFh `W1v8,+J0,ZK>^ Hf#1|?%80毸B6?tȪK?R.?d}ȶC9 .AtB ZR[v~Ms[}@5(A''1Q܊BT`䡢EV1 0|p0k9V(d#( Td"^] :>/da3(IV;י+A?!ZghmY( @ċDf; Z> >22 @e} E\Y\`&UkY؇ <&!3p~#ڣM U~8#Wh( '8yfL57=Μ\ %z 򖘐ۙF"!C,U܂P*(DjjD?8u⒂B@G3 h=Za 8Lf 6֎;WF)o1S%CAʥWLW_ċӞ8Kγk90)['R)X^ ᴝ3lH#D(224|Ky( o1jKmEVOjg0ax| 7UEro:Qر Ih10!Ck3,elI5hD$J~H(\4Frdc)WIOъiֿ#8 *\IC1lpOY0<Z=PO|&Uxz/66z.,vY% r^>~@V[o?4'y_$(2x\JXhDt2ZCю q=ΪAsV3 qG TA%˜.E\ p e-ǨiI9aC VSxWRmnOm\գ +ݷ|TFOA(#3Ӣ۠ыЇTŀjX nf?Og^A. |ӺW8! >țO0l.Hh$*L8BD)7)snuLE(,nƸ“8Fkbϝ'Z/ J{%)R\ϗFWJx+YU|;O}j%^\'^Uȣv,LkO _ TğWVԙK<%Gcz}ΩR,ξr33h[\FѣWN$`&o 3? LƼ&)$/%!<#_ynT8!0#T+WQֈEO. G:%׼_S8vÉNRI#HefѶ/&ěQ^o<&~f6Wǭrulj4t {*n x?(rɋx~A NZdO 8 'm>8 '.6'_f{c_ҧ+KxM\γ⎻~ǿwO ;3z㽒f 1ؓb[ot'[jҲg1Pd/d; ؋kmCF c &?xߦym}p|z<-&56鍱|i(eLf8BsITd-*+1̎ tW&#L:eOˀ8 ] }߼쐨Ù*񓄏{wM%qk2 qmCL>8yGI<e8m?/]5^3/ŷ_Kw<Go|_+mшyԔ&#~"JukXhMU@5|*ذfu Ł{ckV{gNaRa`n%d,L0a闅dp'N4F-̀}=~)3&4Mк8C,[ڎ9Nܪ)S\xuP4&4Ot?d5z[~߿!.=)9[[w/3wuoůav%U]c7>tk| ߌUKjV7tKw_.xs ax7zcN^A|`Vo[g4=\g޻LR7tGϖh)ń8#gi"yKZBD0r#U;W $c۬h]ROS#y޾EXTM/Ͳg3gy.y"'N+GbY~':/i3g9 ֶXre4Ojo˟{.(֬X!E{{?=_nm6Nfkx_cyŮM#xb᧯\kĹ'?WZ'~_痱?V{EgFx>8Л'Ev/ MPH5g<;7jDGLvqS-ey`]} WH>GIh^YPa) v ȶ?F8pI@1#C2qVEi;u?A-cqQ Ɓ{5o?kXȮ^B4h`L1ü467ǒG{?/rsvi i͵qwkRI a0}G7D2¨HO22xSx>VR48yGoԯhcD` {niϮӛ=-$%z)| UX\QW5H&~8($Ym} 6t9glNu╌[5Hjznx%MoSV[v꘽zqeNSn-ͨIV|?[=g}~ӃTͩU%*mh4L[4Pf'/~)i;5]pa<%ɓLF![uF I"@JaDYٿ _}Q>~~ɌB(.qǠ-=-Co^;[\ALظ]hE~ኣ"ƚт5 sjUINCQ6ċw%j"C$ 7(-tuSYtGO(q?+c=n9`澛HMv,ξʨׂtbLE9Fbm>x+6ϔ  g1TwRCT*՜d*|̻𬜚DKP>0N:0q!k:UJd(<EO۪F`8rIGwRI -n9Ui7GDn֧% 38 MO4`]vNޫ[&%#Xev"P4 zE??O_!+4=NtcIQD x3]#u5d%gRO{6e4՘ʉ^PD$itdP2k!t,쇣pLt*ӝ&N3(8M<;F`G6!rcfF h3`ޠCሉTrF sZTIENDB`84E8DE5F92554F5396FAE4133C935A18_snapshot_2.0x.png000066400000000000000000001201651461511344300304270ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resourcePNG  IHDR^ IgAMA|Q cHRM Q|o+= F6 )iCCPICC ProfileXíWwT$!!BzWETFH %ĄbGEׂ VtUDѵۢ`e],Pyu9}ܹsof2z,G,A5K‚SRG\+F(CU/&/BΓrs!> K @|1DhK A-8S=8]#6 q,Pr8L优LGmĎ"Pq~\GAnM~23}'9(D%X(pfȆbFH9떝!Tωңc ւYxGkT'8bCD9ёz a(bX{4ANPEyAt4$~s$XrYvb>{gc !YR LX {AVD' 92$qJ"W:-qd !\9(Aŗ(ŠAX8?(n~8'vkfI ɦ%7\;36V`Ky z{/eO( |0g<(AqA^>(Zd(z #SsAȁeQhI  &>#P-n>x$|{^C  SE3ACK1; zuÃp_p]a@vʆ3^A_dG2J%m~ff6E^k>\-py~#~Ė`V$vk;5`cr<<7(P8lGxIk ||bagH|f ܭL;j$ _e(tqỮH&/8\κ+$J.?:\)]60#g|@cA H)`2S f`-[vA=h'Yp\]8WK ރ~AH # b#Έ'⇄ H!!H)RT ېj7(r9#H7b(FP+t4h: DBt9BuI"zD_}T1f9` R LJr ᗾub='q&k8s|^U!ދ#{7MO$L# ; Gg"' 5bq&qqq?N|L#H${/)!哊IH{I'H.GUgPTJJ**TdK79# 7/M5ŗ@ɢ̧RPQުzSS]z@COT-EHQSwQoi4-J˧-UN>Fxjs*:^-'RޣAְ`ip4hTjոѧItҌ\Gs-VOkvSZݜ΢s ;g]Dmkmvv>6^-W$::t:Êf0V02n0>uv~+ۯw]>S?D?[~}`4g zFhQ2;aL톗 ŒFN376M֘0ya2s뙧2mmfffEfS=3טZXDY̲cIXl`emlت깵5ۺк fM5[m&+v=jn/d>0khdțT@"GjѫF񮓖X"F7v\Jk.4P. .]]]oݢ}up׺w{Xxyl+kW'ow|8dy>z ̎1}|9|;~i~[:M9Ux;f |$ :͚jƂÂKBBC*Bfք k'G 6bsޱcg=Axi)lBFm-11cc>8.v\帧qNqZSĿOJXp7&Qؒ41:CrprYrgb"LiH%&L2a턮n'ޘd=i &L>6E} gʡ4BZrڞ/N/12 ߌ百3rA% ڒ!;&{W@Nr\ܴܣ"-QtqvX9{کN)"$m׆K2"ʂӒ9]4 Kg<+ -u&>;em2'}N\ v {>e~?ʊ-H^иhἅ-)V+\x|pIR~+\(u,-//Ne`y+6$2Ͳ²ǫV׭a)Yn픵]˷\aņT*WUhqx:6lbt­m*N^鎤zZ`gίD:w>]Q]pϊFVӽw+5:n_zx[o7Fl9yGGJꐺuΆc44}ﻚL*[qr|'='3O>nrSN;v&̹gO8{>~DK§LU?w~}ń]//{k+WRޮגo뻖ؾs(q'O??eWۯ"s$Q .h)ЯL!>@aM!—jlVG Af8+}Qፅq`FJ7 |yN(tuf]`qBͪ]( pHYs+iTXtXML:com.adobe.xmp 696 236 JiDOTv(vv?ӓIDATx^wdE890ar (0( 9PWD1b `@Pr!ayf~9Uf]]~ǞUu:Uun۷;E˖^:Ʋ* |(Бg JL Le@5V -M*vtU(HRb*@^*T(=R-*daR\b~iv2ײhmV3 X%76-NKmK µWGi~MJei*cҺ Tl{i4 ,-Hy|8ڹZmObc9J]oIR5Ul mQ䵜2Dhka]TjZ4=->~O@hV(,_<'uuvFgpOeKԨ*lIj<ˊQ&Ӱ()(7MqۅLӖp\ k* I"|+ r KFhȘ TBDk3fK6 (hSChF{#v ء,mrRsRh1z?[jdE9n9tpA'2J E CX ֗ i&Xa!,/ G!'//(}KX4iL;S[exKJ=OXk\rg[ up`;LU{~J2 {Wa$hH!e,mDE۹X:&# Tآ)ДIutB;yRuKG9:W^ Q< 1yi/Ar,@^7EW ߨx$(%jmfI' @-J9 Ļ ᐄCgF?ڂR ?l[iRhX)1) R$PK,nZ}geW!3`.FG蚠YSA!.jaP0Rm]*TYԠZ6s- fPKfhy.%.L\NY>aS^ʵ8 ݄,ؐ%c2>`CZV0b'{w>cMH@_·[##Asγ?8-[:f2f(A@IrNGAK\GC7u5/<ۥ4(rY*|mV"ev:j'oń%| fMѐV~RVkB9L )ʕgI9}t2`bqĀHES}׮"\6A,)r"JZlJ=MsKDF*7F*Wu榻ˎK]iВ eE60M)!?ui$&`Je]) 9 {tozwOO̺>&Njзxa<;-n9s>"̈ԫɳ2*#s몑X`^,^ FMSoVS$#ڇ -ё3JU'Am|b~)A rh0M (GiEtT-Vf(^PJnYݹ1`,PWrU609W@f|/~+Ekb'z]Ԛ!z67%G >"X )2| ,3O([ SeRiW]D BÜIS U 1POК{ډW4e`w,Y2$I^uJЯ|}|sͶW}c&^QuO͒zRA\E]eGp^lN$qBvآ\JUUn8}},ZP5y <)כ( Q*hv8]nPX;7ϸTX*F,/vp|:yAR+<BfނuD̉ƨ~2Z 9>mTM?Q`c[]6p 3*#ȘzxdK36~hZGw!K4؝rK:izaxځV|*@tp i!}GK8lQumvuGfş;CHKSap`qz1cc)cN_:K$&)eeBpI[e3혓 r~QIBHb1"Z%Umr~@ީ@wݪ6.z_$@j z)s'^%K/8qAQU2('E#GQE51"۩PxY4APvK1 X2! ,=`_3ٱPm<_F 6rTr(xt/0!* ls,S U*P YbV>TIO"78ֲjtE)OP j i(Gw)S[ࠨvhA9f5Qr mbAvP_SK~,&Ш`>SWww<Ѓq/94-1YoҚ ^q7*`PnIWWw<}14ЯX@pt@0`9PHpsCn1@FhGABtenxͯ mAC_Hؼҏ").eg2DdCˏaRBꀿNQ&E9Y[h-(-YŔo:+  IRtr̘^Sv@:&^s2ytƜGTaN璕@ᑡ\SLeFH'nPĶM;\-KG4Z#qni.Z=qbѵt8f[nwޣCbK_:AO$B%6pX٘y-:o/2=~BV+h:y+ɲ\^gkJ qjz A~OswѼ91i 4_gMn+L1sbjkŒC$]ܙ6M%|X0;n|RǝT2<+)| ۂ2+u4ks=ϝ4MG^ *`K-|<`S36^9*N|q=1qX'  Ǝsg//=5qn[\'tFiߊ:'6k^G﫱{^SHK{Վ)Y)ko~+u=/Sc{Vug%W"vdF" ,z8k߉'-1 d?V)/׼MSo?)z&\J#K%1(O\ATY^}1ע}S*a:B{;2FoڐYNÉgf֝(8hV c*JP{9XνUZ'MB` {NBc⎛oo)<-o]|N ޥ]N]D װRN͟.TpV[`@[G4qNTNI2-- Ne͐٨2#@'ݕe%Y*"YtfJju4zfأŞ='f\=p1BcqPw1g NcC^Gm<=s/?]u},[la:q׺Ϗ=@|۝"k7_su[{n5=XX|ĬC;6LzݲTv$6ZkrDtV薯//|}j?8Ɠ}b-6s\~eODÙNkxxDSyHp[ccjg_\0=<8#9N-gfSv L^j ]#~ru`s2( > `㓑ZՔ[J5I~Г!pЪ ݤ>0cfCv}ckk:yiꄮ|b`IAI"UiY@cgWw,tKDi3IrA9ty\mg%2U&Xf͠pA Fuٕ~kunx]~P,;l^{ָEhYsxs.m\vW8֞0'|xp^_̟??X{cÙ3[/nY`ioq~Ƙuqǽn;lf|_f=7^ޱņKK 2 @8Շ=*ט;;9~kb]_܇n*1w˜3w^\qעsc9,M7$TW:v`xYtk3fL:qL<1gal63葭. jL!sd ZXL'NF2@9UN.PYhUNz9 7K FMI܌XE?m܄));wp߂M0n ӸΘ61qjɱ0#sȋ`-b]"9HdA٥V_D,%Ҋ꼐]>(AjcpxQv](KFKɡd)@*&O~yX M @E&`E* Urp:p{-fNxc}}}q ^=%scr۝b5Vގu߃1_=1n&n1zre8m6;n>ӧKn!~ǫbf5c͉ .F;r>fb}c-׍ q<48-|+~Z/EH|+Ln+hJ?7biG6VƎoxG|gO~x^zc_7W,z4 5C3umsՕll8MP9; Dq*q`&[Wh/AK|SH2Zŗ6Θ8YelE>@ƽ^i1scu}t } ѵ.*l#QjkҰl6SK8ӗ.b=О*N͓7\i΄KvZ$:hqEN5g.=Ӳ̹gwqĄ)s}N|{.SSObL3G?i^bE3khz?\.%n}l 6zֳcͱ KK` 2uŗNXyS?>w\7guvsb5V~ bUc 8 uֹPvѓHFV7]KX$`@9riKm˿;d(T*P;gƁr*>+)b#mWFs+SuXS7BS/$9%glƱ WXgU^._1-PQfDB 4YX- (X:/㳩HYD,(j @9`*PSLS'Ǹ29hЧP{)ɋܑdҘI$[Hd[gssI-_CEDE>{s8.PtkK.,>/k^[OS?HȖ v}>* h.S.z2N9—Έ꘸FgKl3?k㹻m}LI104$-Α?ƅ ?%#3<׽/G|#Z+J7szAZ1e,K\<ņ`;=_;AT*s> ٗC~ɔmss0=:0rG'{1I|Cցm0)3a52҆C\2 HqhkkY8LS蟗D&QL@'}>[ 4=tupR=ztP"'vJyq6B:BSӹ\)Du@-SZ2KHF)I_n5|@sJq=d;0nW{"(3*Ҷdrʥ__Js&NdDN!/,)u >K$?%~.~~1nc׋]77&_c0a-Nz^^\kh<mw5WF˙IUjұǕAop;kkgϝퟙÞk1kq[OZ6/?e|[?_bU:?:7>đ,({yCY5?rZ@Ph_zFi#?`{\$zM /<_J_Lk~uUP6 RI<05R͋kvM:5Hu*q&'~w*sR+Y z;9 cNXibG6G;B*rs] YppjwhXm۴ٖN,$ < o+A2TdzGTGv~o˖.S s \pL.EP%ȒTHV|dſT+O\pclo~J3ぅb-/hFbLMs`eن:^L~&l[mubμE񒃞mGf=hGbgL?\|i\|5?^t"wUݷse|?>QAM5ѯ;&m.nj(#nw͟>[bg|ͻdOU L #Lv+4^ЗR5)>-ɃX!G9O~Jg(y@S7c ,OM%r_\'WIŊO>fpOe5CaoӃOệ36!xە'4E i%:A:z epDG؞i{NFA:Sd܂) ϡY6"0ղSO xpW6*9'5 / q,<@(H|6/n-w2H>z+u;s?(\m{tjħM$ī^?_:ï~:i?n|(z SX\pΞՏ dQ{K|oOLӆquWo42-y+o;&O)/{,WO~N3>'ű10?robHIuyg|?z -kբG@7 /yoz[_ici(E(($Exۺ9P&_ \D`sM9rTe~;dѧ$n+)X_ p+3$:`ǖA@#H9G: p6tI8]vrNu<'_,פ:"uTxvnb=!PUDdmD8qtY<^xKxC _|U,@pw?E|?ŸcRJѥEkko=sςťX:\xytϜ_% {˒1}ro|qGm`'CByqj~s\khDCqwE6N=gȂeqeIS:׌~gz/n!3?8ȨBjsLtq$w-ХC}1yo3=ʵCwsf?X2<҄.V[kM-s:I47Ly}wFض (b/$7h+?t߃X- $:|4kT9+el9PG#5ܴVW:牦䩭7˄%ف?-;R?K,1$4 #<ӃCCq|4 ?84kw󙒇xf'jj?x4f c%+wb1*` \7Fn\: ru-v]BVr| .#2 T:)ߔG(󋐉G49Xxr(Hoaes)Qp~ wKp r9b lnyGljcǥ^1v088`#ؘt3-7qlcb , >.!XM G*nd4. \:EQ'H%Pbv)6ҵ聪 0 h؅h! Ȁ lN7^Td^gC=œT/=Js1!bde NM7-pBK+}Vv,;iW!7_mKSBX@{Jاc2[b*,k ɦgqyZ~Ԛpu4 EV2`~A3὜9>D8hAL]cfU|5<|8Ÿl2V qN'a ta'f4V!0&IVڒ S"_4抓1IgSMayX>oR3F'zDՖ4I%&BT. ӃYۥW\` ;,:58+ߍ$r9' =S6eQ.ȯ zZ,dᐷ5$8of-pȠNKRS*zyIW8 J ˢJhͿjɲ:=1zdOOm49FIEXT؊9?Lٷy;$oeJT} zc$^|aqM!4-6"V_;/WgDdj@:~0k6>1 Z!堒&)@4\LJ3-Q*3S.|RTeRsFAC[}jRZWU04iW7mݖjc8Ev ޿L3 ŵU@i]Ƣ]e% ~-!ʅZS[5o8X)h)R iEPkc bb*kx[36;GHc`HHs@pc_*/n0so?k}FLuFӫ ?,h♮ m"bQ@_^@CKLR L]W/ןeN#Pe9o) #D6 歋)4UFH .61 m.Qz]LۗB'o΍n `IYoQ$YgVPh@ͫ䅠@Hs (2A9bqFV9:$qn+dwY|}c𩧕]P8\"YG`Bpn jhRq]cƤikiP.%?.:['[V ܃n/Rz'"](RJ$:u!qhz."m$6R)$0 @A\Z; mPQ:P.)G )TwF k˖\wWeMaޜ#Oj'd`C+Gdm?P<f9XnC8bȄ^QCRkk)U Cڂ]S3 -~ԲWIzx[(׌j" ǾbcyB['i{ %oG7FERs<*N`"׺4=.]V'4[tTax஛oVVUŎ԰ʻO.//tsx20ɱѫ6A2^G~MB 2@hf7G)RJd+e9њTVJiK8К 믔lROrG\7/--<Ҙn2LVx Q9oFO*:f%L^mlOl'WP-gJ iZ'=@ϏMݯ*@~(7bos`Ltrd3NeBf'p"CYjkR QE d-9H)d?XI!3mi 乓yU-_-J鴃E0N`ۮ R]-^)AܶJK oY((sZ.jѥ@7lC&Qf.yY@|UQ֙Z8V˪ 1?͓ggٖ)hP.Ad elS^FeՅdF|RTg+I4aͷ-^ 2;HhCŠv#dgAX9ľTF7/8 7BZf `Y &%ZHB㣕D g !LNv-׬^+3e- rLH EvچDP*7iG'hĵU&A槬˲'QyQ$j(mgCb!mf¤,S F>K eRjվĘ Pe-0 T޶7TU%6Xr!(vwHE&H2alTDW^ E^s[;K/xK$ǁ/M%۫}^}p&Hzz"Űb9^n4>\ɎJRT[HIdEK LJfL/)/H'jf4HupXd >90Ա%Ɂы0rU6eZTʦVDz!ME^נLr) ~hQ~J}2O-zh m~LJg",gfyNv(q:SGBqr|#e_ $ Odh̃M e:8) G~pۮ'8Vzm`r_%>'tW:/03sfh<(aq1!$@B.rUz7S Ax2ځγm/5+HVyHnu'*C F%l ZM{}cY8Op<`9Ue,qNKhƸW9TsA:[25d:&vgݿ&G." ĒT@*8*C#r eY.UlEYA\$0 H9&T6@sesMqPZǗA B >Jfa:w>2@PPmyU@5O̙7RРYuZ3#NO^ut@҉ 7iHp.FVmN`I4(RlCVTU\ѲS<- *-`zC̶Ohx{A&d m_9\7v m^-*P~-vSr(Ƀ4ڳO6hȳc[MtAdl=mjb΀+ʓŇΔI=KS kpy:a92\lJ0(vdraH{֋Ҧs YM Znt䙿A"x졻b]"<=Уb}b>dNM4,$)3s~ & 4DDK g0p畧;q`6/rPML+rȅTuvwGgoOtr=Q'7g)Iy"wh^\GxA1?΃F^,$*up-WѪ_cS)] sϏ.o y[JGss(Cթ-ϨǪEcBN薟w*/ЉDŧDG y dMHɳ  ~_yJLX\`s,P"Bc@JCJ*ә)J7]=o<Kb'V!;r)|_^s!#lZizw+ܬf`'4Wbq{OQqJP ^aRU'DUSs:FJ(8X839IY*x(rn)KK+P!*qin2TF$3s13k _+4i(P{DRVMLHgc|K"jґw.B`/_>2`Q^TY/ THvs,ntsdѣt1;Ԍ?~ ʼKvs 6:OWu-yKRr| U&6TCإmn̠6 Qbϟx\%O{im.)~Msu \h`J*rA1x`jQPe:A PzaP\p^\oz&!Tfbx`šKTIɼPfZYEۜ>BhbN<ȯL\6(2u(r5z$w#9e\:X6Te罴Ԁ'of-KI]hɲҷxa\v91:ԂhV`3^~Fں qoRn9OMf_1)Җ;=;Vdi֜e;^SY.6*1ycvPu!r$as۔ ݋\9`[60 -) ۨ7PUUF -Jґ.RHj zӧ=[??Xc}bapż4(})os4ir%(&-.??O>!^xGbl%89=W"=k`D:_v,Vpf5 n(E,F;ڣC%?`H5иoJ|RW@;hh992rḛ0K16QbWܕ2&q߮M`A'_@rM1anxǍo.L25ŀ٘cxrGoĉGw5z>j!HgWOo*pVMɉ8sY>YIഛS=c̍bX4q``j*b*Sc v0v:IVıݥ6&fR^ h曔Jα&V83 S qYR_/e=ڵ,X'zK_MLg|!>K3iIqs?u+'w7o^=cx#':KK?bƆ[41a7%"ㆎ&Aԓ7ѼL3{ wsDLxmG/?#bFñxH^}4 Kchd0.E} Pgj, ,Zl!-zlXk?8XgOxH( AK&2ALT?'RgI3^Qj|鼸*pk|w;>9'ozYguuqu:-2W7zG%lz;Rm7'z[IJ)%O. d֍^T,_Zv8[cƴ ]_ˁ&L-V׽cz}?~B3$12Q?8Ws~0hCoˑ L~릿F%?rZ:ƅ  2RgtrkO-W@?t"~vq.‽3^s69Ʊo@lvq_oc%n8LN;x+cćqLk6+fK=/>cb։#++&i/Gyآ"[9IDW?0EcZc?wy^9O b91gn|[&#\?K׃^msC|akRiB|sgrY~k mv??^s0_<&zGK~:5(! E_KˢsɼjA)R\蛿0V6%{^M1i¸Xֿ 9{: ;.x뎍}s5e?Q,}7']* ic# \uΰSW C}CwCnZiz9%T(rH>:m<$< JuҪQDzzGg+VؠsVLql9i^0͗u/٧~*6m{nzO~(t·]98}0^ŇpdtgqĚloz!]W/}x8K5nEѥ;z%=CIrY)@m}怿UsΉl/ѵ+?4~S'|=懛,ą>#~3:_;7ֈ'oCpJex{}11f(YD1eَV|&李X<0.m뱠YL41N>8Oǻ8/oc:_DOs[w%7ϋb<ΘE;vU^ Z/, EtP&OzIVY3VJikŘ;,6*+;.+RtDWx/_3vcEb3^~qo]gųcߙ0. >$̪q؋8c~xc~ϚѯhcպkƓ8^O'N?r~4g5h7x䎿+)ӎG&7WDZg3=D̺瞸Yڽ,x[,?XݱkߢD{^'Yo%v>qe?=/zM8'|`zo_^[<˷i6{V|.zb_ѓ>]ͤ)щNv%Ȼ^7^{Eȃ⳧~-CI-%Y}1cg8VYfn[^zng%Vxcpp0F0]d,6&d\@W_4\G> zy|A;/8"7 ʆE`-f񆏜k_⸏\~^nVźD$^힠_].` ,r A9s^ oI] Ƴ_?GǓ^˞5X+&7߶O"?j|䃓4f/U@g'01AgS-8|u"NRC\Y7u;sCD|s/.H|}jԢ滛+\>V+.,fwL3?~sםH ƍ,u&Sx`qύW8mGGSH#mGǽNne-o?ve1icjS^8=v,xM{t}<>b.sdlvq]2^JA[D&&}l?0iXm*1mi1}/}5q7N;3e' &ǚ'?3q??=EJ_CW{%w*ioٿ>V8vv z6ݬZ=ǷNt\_ȩqv&nCXe @kg=-Ρ΋~ɟ?w/AW[szzq_ݚoDt tu 6sx_ǵw?q\Y?]1;mHP4B!9>$X":?k[I;'|TK\XNzL+6ѪgIӵɸY17/g~|=וγ-NJ;i /*^qgO|2[c{A'z׉Y^n7>8g~NzG#7mwώ{o"۫o8*X|/Γ;qߋ~vGCxѯk_vq9fHρ?쏧'-gN83/.ߜ8įеߏ8463vCYNi\xKg}.=£W}k ?xqoSjgyzV-cm*-?zeڗ wL[3s^/~ap>= J7y֊xbU$vk5Ǻb 7S䝹٪1cilǑqܑ+7N-V8|8}/#28HW]k>' BdMޱbzǚ37]i1n*tIo!UU֒} FM9r)^֥|$~Ua/[.ILv/3W/s}{mscW&̌}9,{"xcby7۷I?xXvؑY'Qwx{O>rO̺xbÝ<q}=,Ftv(IC~S.tIg̓va\&A)/N ƷK{(n\gbAGL:?t  `'0i$٠vŐ&Ogq8wPBhv|,} cphvB]*`ӪN=v-;c$A!ϡo矰hQϏAY]=1<]vD'c-`[5;Vy7:ʭ,u'u_#G?G>>|n/6r``(:{?H&>$""2˗}~Ōcn\{  ^p1mӽb&%G iuj'!o$rJ,c@i =rDA#fxp{-#y#d^:i4$^g9wo|ٱkYLOɲ-ۤ`۲$] TQ) hrRՓ,!)%'݌,gٙ6z P&X"c܀FZh6жUDNE.Ζsti~fEƠv~0.{ۍh<+~XsaS]*+έinTAwWy~pZ^OK{͋BU˾Q -ISW 6V"~'ܴR]S -k@MWVP lhP3k Q^e@S"|˞xn; Ovm[` Dٖ ZE#>\sHz O5/@Q^R2P6*+b9E,[wދt9< ߃켳4!/ 9=w cN[)ĔC^e8h7R{ĤegzN$hΠeFFYI"#Ƒ#[9˗V5#*mE']TƹpX` >m mwKJ)&-Jma<_ `@d6 vE^1U~ ̓,s&'LXp>ِwsћ: F_zdX}#' ƢWLPHGk l !9$ΥzU'!W7$d,D,i>J-Ky+|_zIxUֺnh*JQ.RkR2xnXn8Wb)u'yYeM<; H٥sbg*4DLLFMe jF*(K'^(nNa5gβK !+)O:@fYUgTӖM8堫 ;F(rW.f"5+!ҹ?ŗzW3X) @퍣-7Jg-eAp6W Mp bj/ T;SlRy?2* G%@`LvAS,gKMEꝯ^5ѲRĹ%Rk$ `/I>m$*qLhN]>sR/:ڗUjN-Z8'n V2Xg}_~3e)!y)kRr01C'f mNTmt&tSd٬6uh]#BA,KѾ8fĒCN.ipKv _dqJ!.sbrpO>"GͳKYɮ)OǢ]+34PkzZg5f (]3/u fd" BpD kX@=I8ڭg0ǢK?}sAE ")+0z4r䒙vuM9*gfճbh(uH]<|rCW}QsPaށ"()5G3.?o]xQlξ/]D'^/bcD|I혺j\1<{ f)H)tI rYMJʝP;!W9`r%ŖczwP'!3I}ڤW[/S/tZiI%$.%xp*smrK^P_YY 98yd_yp2\\A46%.@:Q5B''x৿տW=֡n22lR?$r~S u.Pk36fv:k׌ SRQ206y;zOeIEIv`x;N`l5yU^5v`r{$_ Ɩӻe?擥?BffnP⴩j!B|9ys{X*F~߻"H􉅕 )Wg/7  XpϲHLZF-UgP lȱ!j·&#C ~{yZO{S^S7m)g8(!uDcsյHO#:tZw7HȔSb1MK8jJIL_ʵ k?ݳ_e+9Kvh)!Pm}щ@)A2#Lh+4 cH~|1 KZ3rxtVLA戴7AY3* RlזתsVHeb}]9mWeLE 1Z [nԤOV "7<}~E[:*u.%xpqRE8 d4`z9ɂWUxf3-;y̥}6Prnю(6>k:~P/,l70ѻD2I mROM)>3:oN,( ( pvpp4~ilc@/M{I||w8uuXoVUŔ [6&we-kQɗ\ H?3M;A,Lr + Rs@.6'Bx=L>TF#UE9u^<Ē ۀ \ Y (Pt7lgP.{/g.^mK| qZ6m6PQM9NaWldffbg` 3w1B7hl/GHSɅ\(zSKD J,\SK@_ m:)?d-\Pӧ U*{$AjɅ>Ќ'7r .5%IC2tN##QU1)ǭ<Y6a[OYTEA:1'[ XQƽ@+)O 'H,ȵJmr펙G3> |w g[tW[$U}qV`t` -YN=ZTFV°v8)vL Ցoܜiw +%PyV|ݳn"P$@MH:a@lH !A85ajשb#Nb0cv*vx~eIgPT|Ib2e+'y]*%( WJnDv:M.CWu,&/!*)MRnERך >S6fB-;|&"KC.Y$f9#%&/?c՞`V۟PђǴYt#% حR]' 17L) T;lc\J=<`L>q,\ȵmyi4=?#ub&Her//??,5˰L,Z 7؃Eb:R t/T 'pyqCh,,wrW('Nq -}2 yG@cg~H]D.H|hNȠr%PC]$PEmE*#p6&- MhfadUP䉥VS,ț|,'E0)Uw1#,B{l]0=q+yUbiO^oܬUj:hV'8fAbrJ$Tߡ/mz5yv" w>r0CW{.XEYF::4BL>%s|bk/JVN͹.͍>H2'l(u,7ܾVk'gi^no>+vm'beܝP煊{H&)Pٞt z^"!$Kr@"dٚ[WəA4ȠR,,v3>R|jAS=HN~SVY;'q\#GvyTVO$j'e0E͕ЂsldH٧YeJPaz3$E: 4q^qTCΊ8STYY8D2zSB3J[y80LAЂSDXЎC.d;UB?HVoWE/pH˱ uS*&q)㨻#KG?#71H$0JaSnSf<Ηi:WKhB R d~v.=:rk27,\D2g Μ$U R5@tB0'3 o`,Çsge} O {`c0~O/^}g$ȱ#ҳtvYY>\:W[|3\3=d.5퐻ȈUE/D9vrMYVr;h[UX\ XkM[o07*TY9m%sy闏⛦\*u֫HÒ}2uGPm}5x]nSxvF*Y6Xh'XT 1ylgl0ӿo`_F3ɘ2uj2}{p -n'g|Zé?7{޸'߈qܾ"M}QmnxIWsZDZH$|l^) L `ڡͲEDyCyU=)y2x2N3old6&Xsz*_tɖ+ا8A9p m: -Wgkm_]^}ߢG>i]M:xJ[[zk8~?G˴uoغOpj`284o}˛7>,ХZSo^<>3&<_ڙp3`U_|?b1=|Dd)g,G^>2 lY [P^֣ ,Jv0{8MKᾑnk'Xވ03f_ZM3—p k:!\o>CA *FEOzӈYW+u7) :4Bϲ MjO]YiG_׸ozuк2a׋3fB6Ni[%?H$Hm8aQA>mn3LA>Ez_;1iv0uQz|,[vZZj~ (Kh/7<{Gmo7/%lUnzriSICP*J+8^ ||,E"=T`]WӒKPL.~M]"ma+XǿV("?ĵsi qJ]Q*Jō818q聇;u` * {%;cWƀIs;Wo1xxkyɚc?8+n6c ^q6k,i6c?.w?RczqɹߋYs{&`]v~I䠼בȞxut@/ 7RZLBR.\, ײ%ZZy/|ef7_uI/~519=`b?[:7\{-A xeRIėlAp#p'DH`գ $ΦA1Uh4EMP oxCW(\]mLrQit{ z(|e%LCS4CZIb|(9@HFѤ1]hp9uxӉ_e] &|v =rwMg͐Svy_{kIn喘8V'q]-*+R8}Incln+Mn8yUY2e= &hO(Z\CN}s%rMl1iM2^1v[jyۭ^fn[|^:ĺwGi}O|KtKw% .#m ؒ${)c0"\tƁH|htfyq{LJ۾[c?-XE߉s7ǿya;c탏34q3WOXIL\"y/5^ )1s-cDℯŏ~W`sbxryR&fHgv-N:~1)~c1yofރ7~qe<9xs>-.5qwψ7SO:~w{_:1v.{2>_~LlJ>Ilĥ}iUN .%LATvfjPXsf*x;oU+J.myG4+RF[ ӷɖgj׹"{a4/pJ̑/x~3#֞Y~&) 0c4?bS;q)u~ƑT|/y?<2?u_>}ta'>'[u䏨Y1Ă 6龻.+xqlN?1J%wi b]A=u7W?X<?{o%L|z׵_xi^wF\0Cv*il)ݽs|m6[g6}o#քxkN&A3$Lbv̙T [n;=Λs7OtoW_JIYļEEH_``fk+&|4ok㥹!sRrb0w$a(Vsm 7;w=:+^.os㱾7Pvyx]~& OL|YoK/|%Z79'-3YJߓiOgQ=q׵럈G;[\~1S3Wol6%&qF8wxIʑ=4^MZ`_RNׂ{ِ,\=D) NRON ^ g=JGTxE[6Yf=q[0?>z [X `Sd똱cƿ_-'h{2 _r]w5N==q7v1QNcQi)qŗyvlW>/7]8+_^?Kӟ=5|broDSۯƚѿw?IZ;& dž`ĨM,R v}Y_Ţ T5Ɋf}.%[`aq`[wubv.ݸcc.tVncma+mRӥg|4tU=wZ1QY VBhЀS C_"4^q9~iiWutӟƺk[milɆ436Xo8:3֎7oal&j[Ou{bM6Lv,NыIֺLٟyU}ȫㆋΉFpswX4Xw}㖛]7߾8Xgoonw#y&`6~vxK>qR5Ɖ[d܄IZXiZu1aTF^Ss;yXYϰ3p+8WsCC,m8lfcEWŬ)kmOP8=̉5bTk(*>mIrcV{*M䑾TBt;0:q 0>D # \kL7E~aR'ɯ&#jwsZ} f_fn /mwU )ԹY'u9smŎ3(бk6uj\_jkO6"w2"lI񽳿{?:mw SǎsOym^{;x2*S鮳ɦ&x^5v :ߘS Y߈DL]e3ATx|q q}ŞKgbo׼㇦/}ʷ؞Θ8Ӑ)~𭃴ϼ']vރ߷uXcLFՓȩb 5_TGX |x _jml^qK^WNFkZmX-XwXwꚸKcҴuc-BهepѢF;ƄMޠEg1{qFLed3B G\Q( ,r(au_,'ǩBРLh1U }^ݶ殉Y R*}Ǽ-Jz_Uw~9K2&AP L<C`Or2hx4G&/=r_$'hH<g^wl*?GoyScpX@߿h~^p)/K(!o+V,!}UBJy?'4[Igg>"w|@Rx!|SMjV}ٲaaJZ@ˁOEOϹF.{ dp~#]$57z'D$Ų,VTt̨a#OH~l2$&KoѦR+1!َg]6z ,+o?g{.=v K5u.+%]Źu`3*)+ x:ccڷ'|!5\lO|#%[?Sz /si+e{Kʬ y {Xzu`lRbW{NXi 7)tO/N̕ %uԋ۠ 7$#LjrYTy];5 Ҫ RRT5ʄWPl[ɔ;ȩcP-|a6Ԅb*yٷG <}I-(5?~_૶։:3/.9':>5('T֊XL2&+RT:]}rkYjz(sPz95@V*;mxWWBM^"e]@+]~(MŏBMR|߬N eeP(rnˬ[ ۔#5홒%d0#ڑyQ4~6ub<D;ցƒ켂 0622:4}ͬ 6w6ב88HS_p22A>h/,;k#*`Fr]oY i/;Y/dj"wD7qIt$Ew9)gڂE(R'5 TW⚃hT'K0X05QF:?1cL;4zYGr{Oԕ9ػRg_ikDsL}Sl6rɗ'IϖPmQMnL|0CwzܑU-r^%%hz \@@7wǎW/oƖ [1fA`lg+,m[\Df:^_<{Ѻ(3Bg#X\7& nCuSSʀCtUPv OBPI'8r&BO]h,qMlEw۠ 0[VYnOm{^M1p9bWi6_*LJOudKvR(!T #ǜp]-\+ꏿ;lV=fl%7A>++/E~ ~J,Q*^UqFF.<hI}N)}N+Up%3 0XSTS4I9h@s78y)7e|Ãv3MF S U{FKti =l s)%YdrmYR峆d> Uvȹ]Xd9i]*f]`pvZ}IBɜG nEb(Z /kR O`E'OlF+4(S`^( G|?AcBP/!2@%q >ͬ:O U2%lRAHH 2~BÔEy陨fz*pߑt/T̋txؖ#T)o+%M2;kBCH}*Q/NZPe_8+J֮- Q'(ZdڒTC%JY"b/LK:L) :=g6䉍Bv8[[u;r?\|䉟_p%KTs$q%$FlņYIc7A :r-:4ҭi)˯ 6~V}OIw5 VJ3tΕ,[v BoJ*'$?KBj|'E=ǀK)/|k^@KEP1Cz/Q}ȥ$^ 货 }\,d(Ζ~pIb'cL(<Mߒ?SėnnKXSnkKh,Sb}Kh)XNk,9x{~G2g'$-5*e?`U*Nj-e2W9' sGIvNKZ?UoJ*Ѕ7H:XM"0SNF.zV]OZv mr/L6-iYbK)h\b̗hFSjv#y2!ʄ|ba(mʓ4PǺձ]KӺJEN#4g6^>hA MYg%g$϶Gb %vGzv )۲THnbkY N,ץZIG5[Wwgr7 ZIENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resource/again.rc000066400000000000000000000026341461511344300231500ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resource/again.uidesc000066400000000000000000000174061461511344300240230ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resource/au-info.plist000066400000000000000000000027321461511344300241550ustar00rootroot00000000000000 CFBundleDevelopmentRegion English CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleName $(PRODUCT_NAME) CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType BNDL CFBundleSignature ???? CFBundleVersion 1.0 AudioComponents factoryFunction AUWrapperFactory description AGain manufacturer Stgb name Steinberg: AGain subtype gain type aufx version 0xFFFFFFFF AudioUnit SupportedNumChannels Outputs 2 Inputs 2 Outputs 0 Inputs 1 Outputs 1 Inputs 1 vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resource/background.png000066400000000000000000001323441461511344300243720ustar00rootroot00000000000000PNG  IHDR^x pHYsodiCCPICC ProfilexTkA6n"Zkx"IYhE6bk Ed3In6&*Ezd/JZE(ޫ(b-nL~7}ov r4 Ril|Bj A4%UN$As{z[V{wwҶ@G*q Y<ߡ)t9Nyx+=Y"|@5-MS%@H8qR>׋infObN~N>! ?F?aĆ=5`5_M'Tq. VJp8dasZHOLn}&wVQygE0  HPEaP@<14r?#{2u$jtbDA{6=Q<("qCA*Oy\V;噹sM^|vWGyz?W15s-_̗)UKuZ17ߟl;=..s7VgjHUO^gc)1&v!.K `m)m$``/]?[xF QT*d4o(/lșmSqens}nk~8X<R5 vz)Ӗ9R,bRPCRR%eKUbvؙn9BħJeRRW6IDATx^5q$iC HIxC{%j4Ξm6#"#39k"}֟?W7Ս+#+gܟ?/u+qbFY nwv/h<\OG/G cYYz ݯ91957ǜ÷ch9c}!<%>Z_]QUZZ/'G{5`X2}X\9>a(qNUmV.۟>6??KY|qi N'O|ty)I쎽|aȥX1~3N ]V5v-(ȋϕA?/m>#~'|ߋ|T{ogп]}7'4{c 1=(Ɣϐc4/z6M;ӿ?>Kߟ.'gﳿߚ $>kh0?a~޾^5Q _,/b~"OW_I$4mިWsQ%mZy纟 k147c?12_ޙ|\䵜?kد L+{c_ yics`/&<6 7C0(>ɠb A>1B4>GIod0\e35s &4q @=w1r|ާX9c⻠w0g9o9CS~J67֩Bs66]on3O@IKh'<9 c6& wrSscKB:Ob)x~^_^XKױo[W}|J1yk[IBs8mc3_ eaX`Ҝz|Ne q8qkM)0^X_oDuǞ9¦/ Mn x[ < k7~͘{kYs&0f) .T[z\$x UtZ>_17摖E*NC3bb GHN\xSCS7 #˫U0Ahp VS3 ol,e2ﮆ=M6RBSk+Tg'恀iJU 횦Ɣ{7X% B@o}m/5A=tX+؊yɓy^Nwϴ@la=*<<ՃU47E0\CZS~t?NM7ggkQ{HO/10]6,8aOZ5?75WYAvuI:{(`N<c.x hBarrzsh$Dr-7NhĿA?U+ }MU\#)W~c?W0.}\({?G|7G,b߈׈0 ox^?y(L`( VZ|ڠ8Yޣ`pcM>${fKk{b|$ U~/e{u@<ιLŸϞ)+q]|I 2_>_bǘ= @ݖ ZOh\3hᕿ 06AQ!_BG|%\}*bߋsq rT`ۜ7{R|&^8`C0\ :x`A\r`-R]nhֻqw/$'mb(ZT1&BwXGoލEŘZP{t֜7$6;$~ Ϗ@_磄Dž ۸.搄y0sI~˿||HIN_Z߀@swzf?XW]}gmCU1?K7/4q-3[dGT 4;hYrÚĽ|+7 +Rs-  bk9]~yOV53a bϿw& 3q{J{gPORjRH <3Yݰa 3.yމMBEF<o7`(ꚼnN.^%ok^eb h>o=ގ |I7963AױZ|&z CJ]eRiwTu9d˚:c1pMj+IH p\N|O5D&|?O򩟓ri>C hwq'q4ymӦv*-,|7ξ?kܞX ] <[0P:ghmYJb9:[9׻d |IM7x6MPH&_ ^c( 0(֔Sڒ"\ ̛_ǀAxElZ0fdЀ׼9Izjxqc^ۀKւAw2C;yw1x EMs6HVSĹk \sTB"w߉|N 1o| HF=%A{,36ͮ@~f ZxOc?弔=N3]MH eMl6Mhh7\V+o 2}jGifY[.V[.@ռ gǸ®x2\;ٮ8i ^/`K譿Ǥ?+(d2֥@hE=^)))Tn1bbR a|+- <PE^{cſݐ$x7)+P/=LP JsL-€$ľ /@O!ݘx|Do$JRkle{3혷Ioͩ;yB/LgAvn,7tk-"Qan1;y}c'- ~%>6ߗV<[1X˷x٢Y Oz.s~71 5Y{땼='} >׽眃1G.k 4aMXEJjy\);@ĵ9X 1 L"o9NEXΘ&o 0 + M&z4h AŠ_Oz#n%}OE~Q->&Isc'qjPXbOk[뗀` SRh?^^j?\<Ƶ_%ykzf c&Pf, .g}{9jmD$! q*LaOdCƕob񪵟?3{7+*X{VndP\zҘ @yk1k {cmKU\}aWkj zg`[!-^v9;sRSA(Es6i(!ЄKt=hAƛ4 FLɛ|IEob^? m\ %4`cU/{&q~M@B1F` X 7MkAw_u}GWZ{/ o)o6y16 kЀω<ۍ[ / R+\kUkczD!%h@q''Oٗ=VUP'J"b-y[%`7̣ZxD˘BBgEZ5rK+TR(7/G'Ec91 y\ MqZ;51A E͍j|j)~>?Kz?ؔ"\`hx_џZg\|2^  D`<1=& awIl&6WRb߼Nd|Zhmts1׿IsJߑsM @eRn''~@1bllIMzh[Ÿ§}'M/~Wo'_Iz d*m-!}I`?_' I#Ӄ H1"= |֋ y7^5>oaMp]K|dZVeYyM.xAu&8?z¶pRp4&<':ejM 6H.* {zƅ~Kq a[ꙑ^r#8 ^ \#04&އq |͹h57c z>G )0 s#_ 7`@aaԸsدV TBDuw7xk;T|D~ EkW?rb?9z4%0b̓h`h}==睄pz?9IB+Dʽ<#%&Ue D L %0B>EVZb=I}_,}u6v?x)cJ(y was퓏CG?@*iGCxJaz't{SV[w$Ӛy?'Mݸ&(Y@;&16)3&XhX`.^Ą9}x>hz?nf\3n  kMϓZ('Ơi"g@B0Jxϴ~VB)#_MἊzNSH(4oϕ ߉7<_dz_MQ\#礸. *AcHA|9s״։WϹO pҽLҝv ü{ǸSyN`(Wl){F }֏Bo z_-H Ӻ[~#}Rhp(u! {|}\ +1eQW_{P JXO  z SA^#"E%eb~JP@G@o~|9,np  "E&4Iq-Pl籩cDژA96iHqs'oq<  糠M MM 6/5zs_{dz_NyQ0~_ϣb 37>La~ZJ[|y1G/D}ε?kMgjPr3 v& 4֕4NEk|C`-!A/δD窭dOJyr֍ imM?`n~+a]?ssZU5sﮞ~۫ 6@c_uA uW2{뻿10^܄ۼZ|oά KYӭcypݱ@xA%N$x}B+ ((a%n-噸SNXlq!~IIA^L0mlO{s|sz7WO FA =E1YOoMy00%X>t0)t̥HΦ:Gg>59qcMs1Oųc8//AaB@Ih%@v<;xLkmqB{'6ך"~ͳSo&NTvb&t&a,5? |0o7ޫfݵ[5y-9} "ƼUBLp?^Oo&{xmҞļ0'L6}Wx݊C67υg pCJВg'm|~x6-Jx@76 d2`VJP vFظ'Ig`d,dFt.Ѐ:Koxq Sf~&k޹{[XSBs:(|*CHƘ5+I5cwFn~&5b~{ 'ƚ{<5x7q,yL9 Z{Lp佇@ ~'qP>xD25I b]X{| )_g+ս}g*V0.ĵM쵦6iYV G ZxH1 H(DYvU`JłEx5^[Q0 gM?C,7 AujOXh ̋ތ~N)q-MO3:C z:~:*@Hڅ5|,,bDF-*Xc aފgMzx$}=n&s9 ؏W8dtM;?hq'ioρkME~sB`Jց3( V־dM91V񙸆1o$b~7`y?|fJ׾ca>?({ pm|ؑk,X4z)?,wsjsn<xԓc Q&-MEo`1~\+@EQ:xxq_S!,oz28_(7[ѯ؀ 4٬)lkqP.Tss@X@kem07BHդG߈g՜NPr99Oc&5/hm>'Zxq1SڞkNO{^~ןn@-cYQ= 2]s@F :?kJ(#ZcL?񢟷As.~:<E^߸4y}Dㄢ1__i4/Iо~~`dF +I_ځA…%&d cZ?L 0f7x 4~#5'~qSЫ_ #?_=ϮeLZdO9LkP9N&$|l>U7]3 eQPv̂rN믿˹55iH8Z_3.P8`2H=+Sw\oL>%Z>:)e#R8-N>-Pxj }*97,) .V0? W &Ӧ`y^HpEIb~S4%sME }896?k!o^Q1u+WLߢ y~  τP meM^fmbr0ZX߸7)Z L'%Lxυg3=~I ~ &z 'Ps>VHXGxqO>$om)܀B3\3ǘ*"V5Ng/_ 5@.^xt.ل%Nk=3ߵ53Iu81жC} 6, 9kyJ",w<.$[ܱ6ڳEaU0|e!R7q~/Pk>#P\GQ~gzſI@8&$j6A`fo {r1VЫqkڮǓrhSY8hy!L|D ^L`h9^c`_s\$Qҏ^|~vK^xc iP2?$Ŗ/a l@asP̧kzޒ?4)z>,\s>O93t&w, ER1b=@>ЛD:hby8w(P{> \w _샱Zk+WM <Č]Qk 3trYIs8՘ccMp~84GC7[>ohx maxxBcHhqmn< iXܟa Wb06_4 Ac/# ~(nA$-k v"JRųAx 2n!үH7߫<\pc>y1ԪVBֽA=b$y,^k]Luz7Z 4\OXW?/KIS;M\ =s^syr|c)&7|T$5_bBb_68|ZON:})" xg@\ԽNpb>"LǾGq+e<_~U2! R @29+@k+|u5W|!yR>O-\%уE|^j!O% I`*&#oHu$`1N¤hb.]ǸeRL F(!lS@M=A!?w9x&c Oxal_|Oeg yϊ_z~ܟG/Ix R% /0pnk' \$ [ +~Nҗ^-i!B)Lg\ߌ`0>hZ"sb>Mg]15`i4pڌ65 Rfkr9 469 66Ok)Tn /YN5~tu? ?߁/Rx1 '?*}",[R  @~k`iy S? ˘G=;>_i;?*2>~(XU<(N o?!|Dt!nЏ yg:8xbdj01wޤz?H VTPsc!@f$P(d FdJ9?aR="ۗ` ĦA|/σX&3(eg1nʒhp&O8R:Gj qbczl!Sؾ |l?4њ-67xËJjc  3}#Ŧ$w@nPRf5(< 10I3׈ӽ(ާ5a]|#qkM\|>?k΋->#`k)=DEp#kZ$8m A{}w|16" ON!uu @7Mp#&Ţ;66P 7djj2q2}qs Ђ@ ŵ XcAf$Sx%i5V#Aꚹ2Ih0QLy0Lq@ tl ~g}qM2)7yjɱ.?XH5{I߽56ݤ ֿP z  ?c޻y5_)x&͑2w<x sƵ|<+.Š377S7H'(OmNɖ 9@~ x |wC`a?rcr~L^|kѺ>?x{5<Ƶ&g#dž1r{➄Z {OS= Xcƃ05hnb@ K .Nac(R򽸑X}I k{I^ҽ?K\0kh}&-VҜ52SнI7_-(Y8֟9 %`( `Bpt!,@N0 6-xυ*`':@y2%Riq[Inq%=Hϣ1Hxzx]VXm xl`Ow>&|u܉rښ'k y8 u7V@ A =-KPӼ{X{Z^`kN*F/m9o 11ǜس_Awc%x<;@w^ _Xďzh޾obbDR2f)pF8n~ ~L:0CP0A q_L}x_8063O"5dwM+3E|1:Qz1>wGf1ƟAjcg74?9X@qMBjg,cl{q1&B@OЗfy0HP}=5)^Ơm ͑c3 \ *E{]^ $$Ƃg!I?xp |x:xwDOz<(xB4yP|kÂyJ/gs_ {,㹺y\ {y65 ,RI?gO+9@B Dx+y=^K;\ ֌ b`.MB8Q~e~-`:#q QpEߚ״|!̂nLmSD}71QMzͥр|:5baٓwDäwxзb$6:&&߉powV׬kuyte> f8A f5˸ӠxD}*߉`5v6'3z4Qk!/gxԾ+WRѯ*M*1M s9 Sدtɚ ūh,=k0ߊqFV{SM*E`/[!$c !!$A/eSjJ]j7&qz! AzzE hC p8V 8z7wzX ѷAglz-`xٷ;oz^] ?w6` }ɸoҷ@O㇐XoU[nlZRד`65 ȱlE %q:ZXz÷djCC $9G~r~9ϓ |&ʂݧQa'w H}743V2|{g|QIs Rtrݓ >63TB`04Gxq7sb/|^ت,)i@IytpEiĞ6vhX&#tŀ跣z/ôXP^\ZEָ;5\A2}$5$9pX]"^@ cm^= $ͩ{O\Jz;Ln0ب04#klӕ  &=,x}~"AR FLpfaUsgHMF67Y@`Mp8Xfz>JZX;zxoX6CkjD;zMm|P ܀l 4VB Y%ֶ 9\G\t(#G܃{6x-@ 8| G'|}xFk/k/-M {Vĵ!҄u)39pio oBH .+9$*i R F C /s75`60AȤ{Ms.<H]}$`RݠK] aasSR=_,iS FqYJ՟9Lss`o]{#oA`B1sm oн+~sל|wųKҿ|^#>/Eko?+o3x;}CȤ7ٝx~̃sd֛ʱMA7hn -j[_>XN>-6O?|󥹍9{4$^* v} ~_?ȟov^#hy8Z?ITk^wR=}}bw3-tKa,(?_bl?甂*݆ra4޸'$ŀ9Y0 GLox߼דވצcMpGnl; Ck;8Aw<7K[3𝏾y71yŘ1v t#{76|;rw&*fb  (x{c-ǜA3i/p^ǯm`.|u 7)On]S ~ )y¼!\)_s9$cl~fKPw`PR1@˦@Ogr ZzzBN+x ~ ;~9$IXϢu>g[ڛcFsu-\w+]c.ʥGb7&NG_]{msa_}J (F t<)h\o䍫^z-$-O_'5* }؃ގV/&3E(ǧ1|=c6Ǧ1bYH$x fƈ$cW;?wО##)6;𦠣J2acyf<}[ܓso!q 77WA+ FXF.'_ b qc-b nн5u A[0Ya98%Qx]~:Xh" X;.TQ mЬH"h+sֿ~g%'%p_ 6Lpd /%|0V>,~VK;y';-4^oYe!płn~ ;6ƭ ߈ [77Yj1ɿ%\crMf4L)v~} ?X߼:)E!5s{k?rK|WkJu1IKkMUbcQn|&~<ț|?Nc}I+I(zKxuI7XSk8my[+l:6X k"L+~/t- s:x9H`J%hUm+%*K+}x&Zw[|}Nm NPnks|Og>MYjRdnVOmЍ;`&QbA8I Ԓ 4o$&)ij L:,Ź-tмṈ _[q[o &cR,ׯn;5ֹҼgAF{K0 -n A/^H7嫛A(o s̜SIkfF={ifr jTׯ[I[b_qWwt#Q ,B!|{/`kU5&$0< <4ܡ%R{-k=ov>`H ,-0vIkeM҉ pӯk54аg 58#E{A}(C )_ -,HA7x)2 Y/{ny<_nߐw< )8{$F]cpM._ZY;ƒ3"X#>$ݸ-F07bӁ1n- j A)D߃nŵ.0H"ASY8'4j5bRn2i.84 h`'S\;7oI P`hL¿(o5Lm&=c#SN F!sn&jx/<gm$-73׏, L֋]j1xx@:׫] b]&q-t;v<7@B74[ .&O`&PȂ6H[M17'Gx߼2- |. oJZsMߍ5WDAn kB)Ɵ|{<[]í?O9[Wb  ͭ }K%I2XX9Wjpd*! V!X!(A 9\(0Tz_N85[xhHJ&&=|6s=s'0'55ii ͤvJs1%}; VH)SLŐ`bX 0`YML`ƛZikbZ .)R}1ŭ9Z=s^EgkƠBz@"5 xcsr?oh}[Y*S:TN. 5y哅p, &v2|O7Gܮ \ 3M|XZy{$|.x%|M x|tap?*Llg(y4"?Xﳸ>0HwH*pVHR qW#@w&Œi7hn: Z6  [⦟&M6 Yp?_LIr5jv˴^}\hGƣjil0>4,_Kwy\Gj^؁rW.yScY똛L1%͹ך?&$iZiZfZ/\76 cLԚ&ߦmmAz(Em4f. UAsVV Z6WϽ]c:5qz n%h~///-Ԗ!SJA/Bk7M` uϡ~y`nk9֜]a> ?|i03-msQhP^?5 f]RB]x،k|s@Ç~'hS\}JLEH03~HL)ssC{ 7o)kc$OiY+tM4a敿| 82Ϭ[LKФ}{i䩕̤@up:ri"t-G4u,0_ iSI^%xz@8MbYh3En*ΖEVLñ֝2mNKl P] ^-a [0Nac 6zuʘ2'ʵڂݍvGk!O2v J+P;Lˌ#sx9q{UJ0-qeX[bjvv_~I A7H"Ft:Hg"ѯ9r&_."v phPg[Y?`Vpms8C )Sf=`A63G%3cժ0M><*s$Ax_fhz[jln3 x 7^5%v~C†/*Mbek]܃v(˼s{4LDjl|Ngɷ#eXdxB|N{C}dy([{Gl:j id:fIN 8;gԙY [rc^/n+H77TP%G$^" 0E.ǽ5(\㻅UUj]M~ ItLM*F!p2ȴnD 'Y;8p4b``.XAsإ͵y]6+sFÊ;(Zplu|=VC3C'7BfQP3e8$/J)Hk]qX`l¾XEcoABW\Vs,.~p^ ۜ]rjmOg@׮""y*- PKF- xG:>G &Y1<9כӾV2^Zd[ z?QB)OZ{[KJsXnފt9'i02 ƹ#e\7wܐ=NSF 3^Tkߘ|k Zi.miׯHwQBd_D]f_`UU$~ZsPQ4cb9} 9ΛEs/N204J# d.-&K} >u/W) ^MG:3V}P p@,FnoYOJ܀@Xy:iF*b\HR@XU!:N`7Oj*|!K v6p,iULiSKo}_xK)G&,"2Sf~ɴTnQ`SY%&*Ր5W)MTWL$E `, &[ppX:9Fz ΀B{4]SUQ*Ϳkps$RpT뼺aBO39#2#2?(/<6ṿʣgo )3t|9s5%),ԆS#^"_S6}W2Kbcok6O!ǿfk,LPRj>˩Tio>W@फcϬ%C.(F!P.E{ .\dda&W|k2+ox 7"/tS~'J]Թ}kފSQH8FrY}<*amF,yC1BNe9+&[E.Jf&9QIrè@K)!=8ɓB |L? |1Mr BHר"'DYW'G8U_}R N.KC_]FEf!/_^ ~^ȹgpbq$d\@ԬĢ K63?;|M=Á&ʽYU47 QE9u-% +AM6=zdY(5 gM't7 tE[H;RNk2]&VogmϮl Lr{U1k#K#}kɐE"cSa*ۯ8%BY[(\m!Sbx1Z"+0U1W7Kr_"Ke ^T/W7w?Kb~37|3jZbb#W2w( p{% ؂ALJ_!gM,:D3t6:H:e!MͪGjOtUL\m5jP3U>PQf?#6IG W3y{#rp0O]nWZ3]Qk )d-8 Xq]&.seEn.u>YL@^6.&vYW_+j(˦34fڜ&s>;fx>ea* qr]cuEud ◔ lW{|]n N)()rՋ'9vi 2 ]MTYЍ{=Ѵ>b76ʉީT.zuj.1ክH kUK~DK1-%sҦ ݃@Yٹ j=0B" Wfe&iC31N׽6f`̮L}q,S9džкTiKrt%YR_\@k{, wѪ1[w˚BeNnxdqS |e!{(ȼyEU;HU4Ès-`6՗k42<ҬwJ$w߈V߈b_`׳ͭp,}_33x&jECSW ?;rjm^P2K4`5miLRYQ1Den2uo8j?T[;^hcaVvݝ: |sL$UdkQFb6|iݚ M)6Rt&op)3S`kI=ڧE^Su2*td-ep&ۢy 0 P)taLʞ##D>vl8%w=/4w2Xg7DYt}rT3yESiSca%9'ǫɋ& !tɽ6٪/( "IUΤclA "mۭ\3᛾Wdt7|{Z%܂tnxs$4MoͫP 9ƛ1\:UmqTLp+51Ƃx? Х)JUEb楽A/'̅5Z~;ǩ@78əRCT.儣AOu"fn`Rl+ґ]gaGKC4+$5->}6`vf&2𶫨qg` jQ/>Rja#w*:}͍$̷ m ͘:R?k7%m:-5^GN 5SGy!g޲d³J\hs- eZRP7Usѥ(Ậ^#~Wkh_2|wnH+ B 3K0;8$O;3|TP+DJ0 [elNѽjyqUE@FIdbx-97[N5f(W{ݙz8Xx-f?^ߪJ%f }ws`*H(LaQXl7lknfyKG6ۨZy[\)ڝ3k/WqV4ǜY!zLvRg ũ9+"$gSZRtΫtwlnBfGשּׁ~[OXz[H0ż}A }ŐlSTHg5}.-#&f iLWeJ`x÷B~xy*ьnxu5rt!0(7Z{ܵ7Z[Cuoˠ%_|SkfYX4Rel '+wp×a,>B+)z캜xMwMq9nZ7VTua'Րnl('$!@kEiw)w)sg6RÆ|.BaEg9'>%?%v.*:b]X{w QYw)7~2g0~T}bi*7g'f\bwo6UC+i0LαfU~)^LD$݉hl\NJܱ9NRPרs"KiBTONIF&̾Sʿz/xc48=WӬ<ʆ,h%4Y&g`o㘺$ǣ7qid+7TR)Q"{\rV3Uع+WkϯI骠tU@H]槅֩YV-P[} DZ4IncئCWL7[@5;ݵkN .*uܨ|^cW1y}Pg~~ ZbOwW wr7>=L dEZRV:%lW]>)u^kFJ|y2tT{61B)X[f2ҍWoiPSgfkuуz=f4g$H_T,\C\j؋1Fat)[Bg\ﱊ]7WKOuֹ&KT}r"݋ĦOi[J:f<)g\wO/Y5G\|gWy$s,R_:>7&7k҃z.fUt$kAE.1䓶b 2?Vm07qgc[ڨ}ѾKNL2rH=+*yjYNuҚ46T.8'nl5ߥ \s[bTs-U}RMŰI6]_x Ѕ ॶ/:͍F2\|a/a !ZzW"kaD׬ݥoYMgӬ_w Ccν.>{p3N)8viX<)9 2’p+K) MVY{eU\T磝j+XY'>ή5п3M&Ҏg2 Hxm1ՙkt11xj{fIb˒ȭ*9pԊ&vMPu29 ) aX{1kqJ9ZluWYcW@qBy0&BAzvmuXɴd}^cT8kX̼6gSq汆=u$K(@j}):j)| nkϑ}O[,vpiK $[тd6%c:t}ؕmq~ Nd_D{OmEgoҳ@1Nf%@2:ʕPcI+~Sz 4u>Yzs抻Ws\ ih"›r~-hvŝiK4 fh|jsm%km1o`uV 2h1~V7ef8 7=Ⱥ5Ƌ+`QKLV9"ًH} ^'/- ֑R\FvEpNvRx]|bgWbJ3uU~H翫YKsnZUFItG}n[DW~XlY^̓K? :G)88Ǎ!gWUi 9ɐPsLl\Z]7A5+ʲT iWU5_z)/sM&* ZK{SqDcCfD@M,pMX2ˡW۩ݕr57ӱ-`u0QY+qZ ̦?_G`l&/{-ee3 ]sW/|P62X<ؑaׂRROn>\ 0^ֆ| &)P&^yGa7:S_ Pj[%:x#v8\GisV]TT:fL}(Y]kاr[9 L'[\C4qWx\ `$O'd=qulq1gSRcݥIsFp{q-ԝG6s{;;K+  Muۥ6)\Fă#8M皚r{LL)h%{zAuΨީ蟚G/oKÇ` "  t/﹀X}NK}'B{6 ] ;|bӺ@wtnS|ȠC3gw}lB7-)Td99%S'{Xyqd|ΉUWI?J搓<' \wEG""Y р*tBVǛ"6ҜK]:_`KCgnuqp_L.OM$tu6m͛)Kfn.ov-h/ٹ MlX4A*WVl055kT NR2:>/_6ٞDS:3&']/f-T֌G':΁F0{T6g;*[~tJǁfnN<3(9*nk6{b؍OLfws3Tqƃz@׬t{qj|Vavْ2Ӟ=px=-kJ!z&7h=gvҍ>Qub?6Ok7 O-raF5m53vkz*MtTeRNթ*~S>N!&; -SѨx'@VNNI{ui2yҟ$ZCNR=AY/ եkX]cS_43߭Ei[l2[Y,36QlS^kfJa?@mA;+]2 ={y~(:ni ]E;FPeUlY&r~WRu8o_n9&fY,g uӽ!Ĭސ j'6G$)|h6"K7]΁ϖmmuQ75|6BW0Q[He1|e[4JMgZ~ Ж Ns hp70 --PpA:g+5-z Q@Q[׌.y>tLA;ozec3tLYrP&uf͘棽T:QduW@VERZn@}Wo8`︊ RUTYVCk|6O'79+P"fzf0hm3ˍ#ۇg8ssN+eiW;5PQ}Vh*-΁ɕy]»6wFDW/Է 6e)}eӪ)?%#к5jqr3 ft_v:͂l~F8}xF }%6['VsO^:4r| j'Ufˈ;8ya^`EPT)b[J'*}LҬ{v^ moKY?RX{2`EaJ`^ >A)MN +St[ؕ'),[ѫ5q:j5FtG-Ϭ "n ΢ǴUȚ KwtnԴG!;.D62si=-׋s dD<> MRꭅM}] Vgŵ7K<ٛehbwR-ӖI[ηߪ@4 ɨ$KѬQB$].<^}E@8_*A'QG/Q)ȡ q3*6"؀XXT3 ؚH)]R|tksTfi=tXTzp,8-Ftct-0+Ka 4䒏r9 3 kmgnT>Mug.脄G L tn̄pГzZQ;mjeFU". C7籣\Wkܥv˩!@+;bupib4rc+#bQtlK5ɤ#NЅ4Q`ӶШդ<T]-fTgCHEC_)>OwkXkMGWH#Co}<ԩ۵:g.= t`o9>^O|Jݗv45".u}ʫDkG]ʧTg9`A܂s/A n4sbH43%@;.gLW%grP;γ̂! @Hu${g属n7\>Jjcs=,ʤ[dq0ap*\SGo̹-tgUDp=B rrSsΉ7O8֐J 0- 4:~|nFZ @yqXYUWo xd[DZ"22#@IbV#f.Kt Df4eQ)_g0F+ nT!P |(ނL~h9жNW[*%AlPķDn1>c?G[\+%̻响XY5x[d,=F8aΚVaQxe.0Lxd:E̜JNw*E @7Oz>Y11K&NE?C(> kbˏy˫$FM-ൻa{2B YnJY ygH-WRͧC'#7UqVl̇͠c.»ǯfLV#hA6>D j (&ZSJr)T 8FpZIV78{_o;ˁI0;Y9.Rq*YkSk]ib6s`WReu9+1SRu[n2"|}Q l +}vGPC~w+@T}ʃj3L {ZD(R>hc}nkZ{[.s2c!&p }@Y6(x>o- ܗB[tfwV6 .gG$pe}ѫf[͓T V##ՏxPf׳6m96$1Gt7\]6^Nqʠ0K7SuM*XGk =@n=xiM_ryG|enk% !aQǔt؍XhcM\a1M"=҂iwُQ>{>K'a ,=guӥaU{~'B\%8Tꔯj%d1T=sFxטδҹJڧ[e) }l)כS(V {G,+ª0-Uy4MYixEj|57*n?NN!}DXkV08|o7tGx"ka2Ql2KT罹$4ɹn3ТOҴ:@IkW|h~ YS鉇ҽ:ƚ-rD|\c^5\{_~oN J#6okBGûtٖ %nVGl:-`$}d,-V0J:,n4v4R:sͭ?h?o@A`KKm4?qui;pGK 3(uo*Դ^G9I'΀LY'צYrX UtY{t}n0-yUZvfpM|/4 nGCՙB`V@~Ծg ˤ'+%p1xP3%mUUY! 8lVltNuCUNz3[A5 8P՚M/UKdx sw3CuæL)Ș - Ǜq`2.;WWdք|->x;SԿ~D;FԮ+9O)k,0"l[{ڗ|=gw_됁zFUOI>Zpa ٲ +m:3 f\iwt33]lR >IZ T:\x]F@IM"[uY":x` f'dػulӀM\V@ܩORp;OZ]z{TygDفvh6'#Tv޹YdHo[))B ڴ0>ޏgJ .Yco(ciAH2I4uZkTrl}j=o\3\x8];}0Q+2EPmJɜʪ>/=dA|~+M r& K08k$v۽ծwaS%i%щԊ)0q|j:6ʔGmFc?"e~Q YzU`*mM8/PU!.*7:nk1HVH'+ F%l[ ʴ-?R}Çl!\)Ar@íRg~Zf8==dS?vO9Tb;d=s5{ovG]mf~3d`Sg> (X#Wьuw ڤhMteRdwV~odJ:jJ;mi1^ً:QwR*jlq;ݳ4Wp+NvHx]BX~Q<5wøuhL129ito݂_e [1M,3l`:/7Asf8}'iWVW|6<"XʈSw{A[{) AW.| g@{F(ڬ MJC] I!e qg'_ekp)wNrMWʩ5r\Ž~(Zu쯻F9yMǔ%A#2i0!N0lRZRy"|GIӱzt7ǥM=KF/7믙Ȇ;d V8c Sڍ#S;7sfJyM*8T睑= wݪn:ӎxyK52zV2J2AץR(%w3Yl*O&U*;j@6K 1!NP٣64.%ʥWCnVZmm-vs}ҩ"LB7w5 EЫ~ vyD~>!kӧcS'@جK V7wkδ70=S2 \p_x<]"o,}#%e]< `O:.J,vjs(Pt;N>.O2{: 0 [L5\AT7+83ϳlZ^:ƻ_g:+[ʢv'TC옋5J &VB@ЗE`pZQٙ{Ʌp=hYJL?mU*஀~ԧ{Oo Ii̿v +6g_AoQFTNvr`%l%Ef9l$.VʯoHJUߏq٨k}6%!',DrX̍ ٥l ꔪlzHoN{T5@Rs6^_*i6.WG><bUH SVp>hHc/[kwVk-[g>a|eÅКG 9}g(ԾQxZiIw6\vHRqM\*nyym.eu07Aɾ{]l=sMN]c2!yҍ:ۥ_Ab;2557[ }{{>0ȅkw*aITNY \%K܎Y#c30IںcgNiq0j1S3jXSuSw?Aע@T (xW uݷ"FWnrrn Lj#hTx09(ƺ|ק*Ms2O ?e_Nr`\X>ia!"ruCVk*ך?ԤrqpZɘ%ч rRfqk_Pn)C}:l]8'F@G_[~ZGB9sjnV\9˛6nT`6]\F8`gJxFk锹B⺑\2O׉1-ЫP c 'h&JVְ*┝d^bZZY!r8hx&mG3eaʾZ|->BurYAKBΕZ#q4IBK=h 4v\6vON:+=%n'N8 NQ%rDd[Z>Icq2 BĜ@vliar,#A~cz ;LvYPpI>?VNY -)!3ܒ"6(p!:DZ0{#RFU֕3v -G\3]n xs=M=dUJԆBhr2(&WPn[\XFG򡝀+ %Ǔr|bVmUW,O}Ihi4٭e`}sf%kҮ,^ 1l}Di͎}|GzCVl&9|3nAwJQ`9*`(L /Bn[fF֦hY9+3lBp" |U+J[:9:ii Z\ HgrHytG .tm$QEv׽N|e*yx.S 3ϙ~4j7Di O ثW)(>Xѯ[zq x&xQEj x,h3 >A* 2?5^P ȪBxU٧SDJ|:e8S̬!tܠ|e]K(BqOZkݽke& e\,}ؕK <ڨ}4uqp l!q{d )y~hߘfMLi;>Eu*]ް&M{s>rJnF '.]wKQ]7n&F3Eo /ISeWO{g=v4sײXZth^=Т):TZ-=dN|N)r*HԾIN3LASS5,==Z3~򙐑S[í1`pRJ wBC{-j,2ݏ|2G" .`nr) m\{W-0 Tg߄rgeSstH< $},P0Iː)_%;P 8 @~tO78<ЧtEЮ&T--[L\&J2}ރTz3$73#eՖ7hxuj̣V>n5/C,.=0n]Jk]?7H[Tl}w=T{|a8f6`3F2R]́:$eHM/*.KJG:AeH/g>O6㞼6_+~UzkӉadM]X~GLL9h§0',Ҹ ^-PU;9x_"3uZ|jp ?c?1+tw- [F~!ϝ{^ɔe8b~a6o=/wyk sFȞ0;3t-+D<*]`p. D6mZ=@x4)wcѠ ,ȕP.PXN/0pprFYfRe[ }'Bnl)#ngs&LKGOi?v]`4>vD|ftγ%󓹽3?fǩ2˪!m!FP@E>[w7(x0g]Kp-f.4}*H{:ǹiK6n94eGeo nQWVg=r8nS*n8T%޳%*s^GO5_ =Y=Tc"upm=sMEG "P;1 >N`Р8:A7j s4nI-Vʄ{AAX8q@G`~m3b^T>y0#AF\pXpCY&fU_,*m.;{Fi1ݔ<TJXΓtxn u n2 DȨ3F 'HI𧒰k#XZn\U wjd :];n9 K wëuӊ",uvq̆<>,x3~Aay Œ3l2)@wRu 7DW}ϦN4ۡ.h">{\; җ fTJW*4ȮAR7e93~,k.Dg\p3 Ykkq)65-5v;QSJa*㜎+Q[ve:c,&ЦI>97[>:蓼4CQ%rnߑ3[b9 e]zberRXQO cxj Dp#*)V(ZSSXاSʭ*G!NC7PPxZ\ܫRwsm!YO+~g}'@PD{W@w |8N|`ӹe6uTMk2Y,Pgh1?S#Dt`]F/6͔~9q_Ҍ!vҖ[z枩 $>mB&\ar.ubQ;o7] OЮd?-Y5oVYV=xV=RliI)ĬDBɮ)Eh 4.MqL23K̇{V xCEX̀J n #dwhpI鍼 [^fJhJR[3Fr:,zNɾ.Ϟ tJN]B"YL ٝkkfէ'u)\v;G͒ 2@Eۗi?Ӣi(ȫezזhE4+ԚЙ֖GO ,)˵#u1xx>j&i z%i> E-|9 &†磘ڢ=wEv56.y} -#:QVڲpsV@dqyr.ӽ)ܟ"a6kR:$ V>nfd2l)6ZޣJ%]\8L^{e[Hl:SaA*J|,ɚ|%}^ޟn}iY.;Py!N񌀖4qoA13i3UXtw/2Fl5^j( fԚLN$sai;ظF^ӉiY ?+~xTe;W78d7XUtV~\+x騽\%S],`|[bS.,ꌙ;BΦqװ3'47@7YJv>-a8q0U ,neu:*5[g͟RdGftWk]q85qLx`\I mtc9e8C.yڄMy옺U'Gploq`Z46NΓQ84^Ջt8siq#8$X|뚘D~x1.F,>5;1׊|N˙r* L?rRT|lׄS1OӚ2gxcʵXM%Ml/ '4{^\ ~3CkuR‰ǒ)$nw]j/ аtTb&֝k еt[4U9\flT x9ZȬSki$ӺG5tiBASoS <@r&;>BX=VHjgǾts:X3 @O@g,լALy<ٕ f* (a7Jecf풾޳4L;2O=VEOg1urUٹfv+直b=vB&4Ied b=-M[˅$ZP Ҿ <8}KQN<[@|۪g@ߎhr7$ Jk'~>˳>w&Qۤq!cf}M9ų>iz~ }|Q['9nƩvvE,\S+ LީJ8b32}c; >xTe5̶~o 'r!W3[ 3w Fa;;M+7sdJ;p6O9nnVU=oE=&y2}cw\ڼqt-v횖ǣGjubpԹ]LuO{b(-֝3ğKKe`ldYimpg^1[Β۳ í2[c W4y5^sbΰҝvA]`[xZB;`k wF<'NV5Y8)4vZ Nld͛j#{~\o+75ʵYpIεkM!M+7>%[؈ǔyENҴ_O.HǠ)MǞnn1}Ci fk^pOש:v.|/%X ʱn)5kD\_.-=Ӝ^g`h(< |=2 zC Z^x,GpZNq#HvSph꺧_eCUi`\*vGes9s',S\*0̖ksP6kt1XG2=Ne txb(ROV g ߙp] =ʪ^[uۭ'3t䙎B솙%rXGL٫k ʴ~+-Ա.i`afa&_)3BRNdmkmyru3-ݝZٷ~%ė{,Tȳ5xp̵݂';Y;LWݲ5RSf9nl"c[,Y@0Dzd=;ۨtr&O;s~+6FT̘Û#3Ib;TZ높A"!"r~à^ĪOOzOi-"ne//([_O\55uANi1]|ba9_JqBY]WC6z<gq=wrMYs2c<߀O~wν]p'2UsTϏ fh|es療<ঈ3W{e -ɟF\#+])Wq?݅lEz2M 1 L'Y)IDATX WێEx<{O@?HH9EQBYoSU5:oi=]U-9(zzNk[=&܇C1JDBIԐyT: Dwm{SmS'uaLHpCǚ:&j30ڀ ucvwJL$j:(xkX<32|mpR|9!'>yt[q+&8VI8Pz9jنC"ȝu uʌǕ2rn vĨBRMgmCߊp!v+a0W61_>57gf >S QI8RQpuӬ6vvheB/# r뷑勥?$4+䰉r0 gJNw>1M5*oeKFt2ޛ)̝ iCUU~s/W:_~r(Mg3x?~+00Q߷lZa*K\wq^7;3>5=r$2v.e%'CLbZݵnj ^YU4rf5a8婘")يqò׺Yݛ/d$izVc@$%LHg>9u- ̕K0 @b,j' Fxϯ/7'bM]nz4q׋u z\|l-&xk7W`,ߟ>!\=ct=axGTT3WG?K0 @&7?M\6@ d2S1 9IYKnW`1)=yvQlG&F.>xQa[9`l)\Ь@*mi_ԧ`9S,^B#9şQ3nVL(,ta#$$OۖÔ'x /pѺk~;p,Rx92لzTs$K#eDAL^gMHtj}ǃ3RG[ ꮟ[BCIÅ U)h mm{wƨ474g~3z$qXz 9 ŕƌ 7rL&f)EXV\.ndrtpn3m6,˟F#k+x#47`(@`ʄaDQ$K}>Nzg=mB l^9E}zfGve&G T85ū,6rix#.uqh7_2Z3rqx^ߴp7P,D8Mˍ0Fev Q kZ0c9|[)1sJ{ja=0/,,t^iyc&&mbRICPLSJx1Q| w#B(^"] Sz}_X_d !;YD0p:jN*r%&}Ur#aIߡl|-6IENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resource/vu_off.png000066400000000000000000000010341461511344300235260ustar00rootroot00000000000000PNG  IHDR i.UYsRGB pHYs+YiTXtXML:com.adobe.xmp 1 L'Y\IDATH ct4Wc )<㨛 AN&O4&QR8NDTh4=q!@4NąqFh8ĩMO<e@ IENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/resource/vu_on.png000066400000000000000000000016261461511344300233770ustar00rootroot00000000000000PNG  IHDR i.UYsRGB pHYs+YiTXtXML:com.adobe.xmp 1 L'YIDATH AN0 Ep)Ě=lY3Gh9b Y -[*M:$v3\vl/6j5Ll5<e}:uRL> @$SO_YBxb ЬpH.&2w8HZw u2&j,kN߆@+,4 &Kuidp϶NHRD Yja@" ҖLãB/00vR2$utV_Z5?j"a\J`,tM `B$3!1=/q4J" ,U~=wQ¦m?/cEUQi:O,g*$fΚ~7)bG풇9k(5D괠KMX ~3~&PQjb &\K{2t z׿!s3mQiiJNN[v)k?O uIIENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/000077500000000000000000000000001461511344300212075ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/again.cpp000066400000000000000000000361011461511344300227730ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/again.cpp // Created by : Steinberg, 04/2005 // Description : AGain Example for VST SDK 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "again.h" #include "againcids.h" // for class ids #include "againparamids.h" #include "againprocess.h" #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "public.sdk/source/vst/vsthelpers.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/vstpresetkeys.h" // for use of IStreamAttributes #include "base/source/fstreamer.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // AGain Implementation //------------------------------------------------------------------------ AGain::AGain () : fGain (1.f) , fGainReduction (0.f) , fVuPPMOld (0.f) , currentProcessMode (-1) // -1 means not initialized { // register its editor class (the same than used in againentry.cpp) setControllerClass (AGainControllerUID); } //------------------------------------------------------------------------ AGain::~AGain () { // nothing to do here yet.. } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::initialize (FUnknown* context) { //---always initialize the parent------- tresult result = AudioEffect::initialize (context); // if everything Ok, continue if (result != kResultOk) { return result; } //---create Audio In/Out busses------ // we want a stereo Input and a Stereo Output addAudioInput (STR16 ("Stereo In"), SpeakerArr::kStereo); addAudioOutput (STR16 ("Stereo Out"), SpeakerArr::kStereo); //---create Event In/Out busses (1 bus with only 1 channel)------ addEventInput (STR16 ("Event In"), 1); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::terminate () { // nothing to do here yet...except calling our parent terminate return AudioEffect::terminate (); } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::setActive (TBool state) { if (state) { sendTextMessage ("AGain::setActive (true)"); } else { sendTextMessage ("AGain::setActive (false)"); } // reset the VuMeter value fVuPPMOld = 0.f; // call our parent setActive return AudioEffect::setActive (state); } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::process (ProcessData& data) { // finally the process function // In this example there are 4 steps: // 1) Read inputs parameters coming from host (in order to adapt our model values) // 2) Read inputs events coming from host (we apply a gain reduction depending of the velocity // of pressed key) 3) Process the gain of the input buffer to the output buffer 4) Write the new // VUmeter value to the output Parameters queue //---1) Read inputs parameter changes----------- if (IParameterChanges* paramChanges = data.inputParameterChanges) { int32 numParamsChanged = paramChanges->getParameterCount (); // for each parameter which are some changes in this audio block: for (int32 i = 0; i < numParamsChanged; i++) { if (IParamValueQueue* paramQueue = paramChanges->getParameterData (i)) { ParamValue value; int32 sampleOffset; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case kGainId: // we use in this example only the last point of the queue. // in some wanted case for specific kind of parameter it makes sense to // retrieve all points and process the whole audio block in small blocks. if (paramQueue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) { fGain = (float)value; } break; case kBypassId: if (paramQueue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) { bBypass = (value > 0.5f); } break; } } } } //---2) Read input events------------- if (IEventList* eventList = data.inputEvents) { int32 numEvent = eventList->getEventCount (); for (int32 i = 0; i < numEvent; i++) { Event event {}; if (eventList->getEvent (i, event) == kResultOk) { switch (event.type) { //--- ------------------- case Event::kNoteOnEvent: // use the velocity as gain modifier fGainReduction = event.noteOn.velocity; break; //--- ------------------- case Event::kNoteOffEvent: // noteOff reset the reduction fGainReduction = 0.f; break; } } } } //--- ---------------------------------- //---3) Process Audio--------------------- //--- ---------------------------------- if (data.numInputs == 0 || data.numOutputs == 0) { // nothing to do return kResultOk; } // (simplification) we suppose in this example that we have the same input channel count than // the output int32 numChannels = data.inputs[0].numChannels; //---get audio buffers---------------- uint32 sampleFramesSize = getSampleFramesSizeInBytes (processSetup, data.numSamples); void** in = getChannelBuffersPointer (processSetup, data.inputs[0]); void** out = getChannelBuffersPointer (processSetup, data.outputs[0]); float fVuPPM = 0.f; //---check if silence--------------- // check if all channel are silent then process silent if (data.inputs[0].silenceFlags == getChannelMask (data.inputs[0].numChannels)) { // mark output silence too (it will help the host to propagate the silence) data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; // the plug-in has to be sure that if it sets the flags silence that the output buffer are // clear for (int32 i = 0; i < numChannels; i++) { // do not need to be cleared if the buffers are the same (in this case input buffer are // already cleared by the host) if (in[i] != out[i]) { memset (out[i], 0, sampleFramesSize); } } fVuPPM = 0.f; } else // we have to process (no silence) { // mark our outputs has not silent data.outputs[0].silenceFlags = 0; //---in bypass mode outputs should be like inputs----- if (bBypass) { for (int32 i = 0; i < numChannels; i++) { // do not need to be copied if the buffers are the same if (in[i] != out[i]) { memcpy (out[i], in[i], sampleFramesSize); } } if (data.symbolicSampleSize == kSample32) fVuPPM = processVuPPM ((Sample32**)in, numChannels, data.numSamples); else fVuPPM = processVuPPM ((Sample64**)in, numChannels, data.numSamples); } else { //---apply gain factor---------- float gain = (fGain - fGainReduction); if (bHalfGain) { gain = gain * 0.5f; } // if the applied gain is nearly zero, we could say that the outputs are zeroed and we set // the silence flags. if (gain < 0.0000001) { for (int32 i = 0; i < numChannels; i++) { memset (out[i], 0, sampleFramesSize); } // this will set to 1 all channels data.outputs[0].silenceFlags = getChannelMask (data.outputs[0].numChannels); } else { if (data.symbolicSampleSize == kSample32) fVuPPM = processAudio ((Sample32**)in, (Sample32**)out, numChannels, data.numSamples, gain); else fVuPPM = processAudio ((Sample64**)in, (Sample64**)out, numChannels, data.numSamples, gain); } } } //---3) Write outputs parameter changes----------- IParameterChanges* outParamChanges = data.outputParameterChanges; // a new value of VuMeter will be send to the host // (the host will send it back in sync to our controller for updating our editor) if (outParamChanges && fVuPPMOld != fVuPPM) { int32 index = 0; IParamValueQueue* paramQueue = outParamChanges->addParameterData (kVuPPMId, index); if (paramQueue) { int32 index2 = 0; paramQueue->addPoint (0, fVuPPM, index2); } } fVuPPMOld = fVuPPM; return kResultOk; } //------------------------------------------------------------------------ tresult AGain::receiveText (const char* text) { // received from Controller fprintf (stderr, "[AGain] received: "); fprintf (stderr, "%s", text); fprintf (stderr, "\n"); bHalfGain = !bHalfGain; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::setState (IBStream* state) { // called when we load a preset, the model has to be reloaded IBStreamer streamer (state, kLittleEndian); float savedGain = 0.f; if (streamer.readFloat (savedGain) == false) return kResultFalse; float savedGainReduction = 0.f; if (streamer.readFloat (savedGainReduction) == false) return kResultFalse; int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; fGain = savedGain; fGainReduction = savedGainReduction; bBypass = savedBypass > 0; if (Helpers::isProjectState (state) == kResultTrue) { // we are in project loading context... // Example of using the IStreamAttributes interface FUnknownPtr stream (state); if (stream) { if (IAttributeList* list = stream->getAttributes ()) { // get the full file path of this state TChar fullPath[1024]; memset (fullPath, 0, 1024 * sizeof (TChar)); if (list->getString (PresetAttributes::kFilePathStringType, fullPath, 1024 * sizeof (TChar)) == kResultTrue) { // here we have the full path ... } } } } return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::getState (IBStream* state) { // here we need to save the model IBStreamer streamer (state, kLittleEndian); streamer.writeFloat (fGain); streamer.writeFloat (fGainReduction); streamer.writeInt32 (bBypass ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::setupProcessing (ProcessSetup& newSetup) { // called before the process call, always in a disable state (not active) // here we keep a trace of the processing mode (offline,...) for example. currentProcessMode = newSetup.processMode; return AudioEffect::setupProcessing (newSetup); } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { if (numIns == 1 && numOuts == 1) { // the host wants Mono => Mono (or 1 channel -> 1 channel) if (SpeakerArr::getChannelCount (inputs[0]) == 1 && SpeakerArr::getChannelCount (outputs[0]) == 1) { auto* bus = FCast (audioInputs.at (0)); if (bus) { // check if we are Mono => Mono, if not we need to recreate the busses if (bus->getArrangement () != inputs[0]) { getAudioInput (0)->setArrangement (inputs[0]); getAudioInput (0)->setName (STR16 ("Mono In")); getAudioOutput (0)->setArrangement (outputs[0]); getAudioOutput (0)->setName (STR16 ("Mono Out")); } return kResultOk; } } // the host wants something else than Mono => Mono, // in this case we are always Stereo => Stereo else { auto* bus = FCast (audioInputs.at (0)); if (bus) { tresult result = kResultFalse; // the host wants 2->2 (could be LsRs -> LsRs) if (SpeakerArr::getChannelCount (inputs[0]) == 2 && SpeakerArr::getChannelCount (outputs[0]) == 2) { getAudioInput (0)->setArrangement (inputs[0]); getAudioInput (0)->setName (STR16 ("Stereo In")); getAudioOutput (0)->setArrangement (outputs[0]); getAudioOutput (0)->setName (STR16 ("Stereo Out")); result = kResultTrue; } // the host want something different than 1->1 or 2->2 : in this case we want stereo else if (bus->getArrangement () != SpeakerArr::kStereo) { getAudioInput (0)->setArrangement (SpeakerArr::kStereo); getAudioInput (0)->setName (STR16 ("Stereo In")); getAudioOutput (0)->setArrangement (SpeakerArr::kStereo); getAudioOutput (0)->setName (STR16 ("Stereo Out")); result = kResultFalse; } return result; } } } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::canProcessSampleSize (int32 symbolicSampleSize) { if (symbolicSampleSize == kSample32) return kResultTrue; // we support double processing if (symbolicSampleSize == kSample64) return kResultTrue; return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API AGain::notify (IMessage* message) { if (!message) return kInvalidArgument; if (strcmp (message->getMessageID (), "BinaryMessage") == 0) { const void* data; uint32 size; if (message->getAttributes ()->getBinary ("MyData", data, size) == kResultOk) { // we are in UI thread // size should be 100 if (size == 100 && ((char*)data)[1] == 1) // yeah... { fprintf (stderr, "[AGain] received the binary message!\n"); } return kResultOk; } } return AudioEffect::notify (message); } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/again.h000066400000000000000000000124131461511344300224400ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/again.h // Created by : Steinberg, 04/2005 // Description : AGain Example for VST SDK 3.0 // Simple gain plug-in with gain, bypass values and 1 midi input // and the same plug-in with sidechain // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // AGain: directly derived from the helper class AudioEffect //------------------------------------------------------------------------ class AGain : public AudioEffect { public: AGain (); virtual ~AGain (); // do not forget virtual here //--- --------------------------------------------------------------------- // create function required for plug-in factory, // it will be called to create new instances of this plug-in //--- --------------------------------------------------------------------- static FUnknown* createInstance (void* /*context*/) { return (IAudioProcessor*)new AGain; } //--- --------------------------------------------------------------------- // AudioEffect overrides: //--- --------------------------------------------------------------------- /** Called at first after constructor */ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; /** Called at the end before destructor */ tresult PLUGIN_API terminate () SMTG_OVERRIDE; /** Switch the plug-in on/off */ tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; /** Here we go...the process call */ tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; /** Test of a communication channel between controller and component */ tresult receiveText (const char* text) SMTG_OVERRIDE; /** For persistence */ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; /** Will be called before any process call */ tresult PLUGIN_API setupProcessing (ProcessSetup& newSetup) SMTG_OVERRIDE; /** Bus arrangement managing: in this example the 'again' will be mono for mono input/output and * stereo for other arrangements. */ tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; /** Asks if a given sample size is supported see \ref SymbolicSampleSizes. */ tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; /** We want to receive message. */ tresult PLUGIN_API notify (IMessage* message) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: //============================================================================== template SampleType processAudio (SampleType** input, SampleType** output, int32 numChannels, int32 sampleFrames, float gain); template SampleType processVuPPM (SampleType** input, int32 numChannels, int32 sampleFrames); // our model values float fGain; float fGainReduction; float fVuPPMOld; int32 currentProcessMode; bool bHalfGain {false}; bool bBypass {false}; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againcids.h000066400000000000000000000052441461511344300233070ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againcids.h // Created by : Steinberg, 12/2007 // Description : define the class IDs for AGain // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { // Here are defined the UIDs for the 2 processors (2 plug-ins) and 1 controller (shared by the 2 plug-ins) static const FUID AGainProcessorUID (0x84E8DE5F, 0x92554F53, 0x96FAE413, 0x3C935A18); static const FUID AGainWithSideChainProcessorUID (0x41347FD6, 0xFED64094, 0xAFBB12B7, 0xDBA1D441); static const FUID AGainControllerUID (0xD39D5B65, 0xD7AF42FA, 0x843F4AC8, 0x41EB04F0); #define AGainVST3Category "Fx" //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againcontroller.cpp000066400000000000000000000323041461511344300251000ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againcontroller.cpp // Created by : Steinberg, 04/2005 // Description : AGain Controller Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "againcontroller.h" #include "againparamids.h" #include "againuimessagecontroller.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "base/source/fstreamer.h" #include "base/source/fstring.h" #include "vstgui/uidescription/delegationcontroller.h" #include #include using namespace VSTGUI; namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // GainParameter Declaration // example of custom parameter (overwriting to and fromString) //------------------------------------------------------------------------ class GainParameter : public Parameter { public: GainParameter (int32 flags, int32 id); void toString (ParamValue normValue, String128 string) const SMTG_OVERRIDE; bool fromString (const TChar* string, ParamValue& normValue) const SMTG_OVERRIDE; }; //------------------------------------------------------------------------ // GainParameter Implementation //------------------------------------------------------------------------ GainParameter::GainParameter (int32 flags, int32 id) { Steinberg::UString (info.title, USTRINGSIZE (info.title)).assign (USTRING ("Gain")); Steinberg::UString (info.units, USTRINGSIZE (info.units)).assign (USTRING ("dB")); info.flags = flags; info.id = id; info.stepCount = 0; info.defaultNormalizedValue = 0.5f; info.unitId = kRootUnitId; setNormalized (1.f); } //------------------------------------------------------------------------ void GainParameter::toString (ParamValue normValue, String128 string) const { char text[32]; if (normValue > 0.0001) { snprintf (text, 32, "%.2f", 20 * log10f ((float)normValue)); } else { strcpy (text, "-oo"); } Steinberg::UString (string, 128).fromAscii (text); } //------------------------------------------------------------------------ bool GainParameter::fromString (const TChar* string, ParamValue& normValue) const { String wrapper ((TChar*)string); // don't know buffer size here! double tmp = 0.0; if (wrapper.scanFloat (tmp)) { // allow only values between -oo and 0dB if (tmp > 0.0) { tmp = -tmp; } normValue = expf (logf (10.f) * (float)tmp / 20.f); return true; } return false; } //------------------------------------------------------------------------ // AGainController Implementation //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::initialize (FUnknown* context) { tresult result = EditControllerEx1::initialize (context); if (result != kResultOk) { return result; } //--- Create Units------------- UnitInfo unitInfo; Unit* unit; // create root only if you want to use the programListId /* unitInfo.id = kRootUnitId; // always for Root Unit unitInfo.parentUnitId = kNoParentUnitId; // always for Root Unit Steinberg::UString (unitInfo.name, USTRINGSIZE (unitInfo.name)).assign (USTRING ("Root")); unitInfo.programListId = kNoProgramListId; unit = new Unit (unitInfo); addUnitInfo (unit);*/ // create a unit1 for the gain unitInfo.id = 1; unitInfo.parentUnitId = kRootUnitId; // attached to the root unit Steinberg::UString (unitInfo.name, USTRINGSIZE (unitInfo.name)).assign (USTRING ("Unit1")); unitInfo.programListId = kNoProgramListId; unit = new Unit (unitInfo); addUnit (unit); //---Create Parameters------------ //---Gain parameter-- auto* gainParam = new GainParameter (ParameterInfo::kCanAutomate, kGainId); parameters.addParameter (gainParam); gainParam->setUnitID (1); //---VuMeter parameter--- int32 stepCount = 0; ParamValue defaultVal = 0; int32 flags = ParameterInfo::kIsReadOnly; int32 tag = kVuPPMId; parameters.addParameter (STR16 ("VuPPM"), nullptr, stepCount, defaultVal, flags, tag); //---Bypass parameter--- stepCount = 1; defaultVal = 0; flags = ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass; tag = kBypassId; parameters.addParameter (STR16 ("Bypass"), nullptr, stepCount, defaultVal, flags, tag); //---Custom state init------------ String str ("Hello World!"); str.copyTo16 (defaultMessageText, 0, 127); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::terminate () { return EditControllerEx1::terminate (); } //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::setComponentState (IBStream* state) { // we receive the current state of the component (processor part) // we read only the gain and bypass value... if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); float savedGain = 0.f; if (streamer.readFloat (savedGain) == false) return kResultFalse; setParamNormalized (kGainId, savedGain); // jump the GainReduction streamer.seek (sizeof (float), kSeekCurrent); int32 bypassState = 0; if (streamer.readInt32 (bypassState) == false) return kResultFalse; setParamNormalized (kBypassId, bypassState ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ IPlugView* PLUGIN_API AGainController::createView (const char* _name) { // someone wants my editor ConstString name (_name); if (name == ViewType::kEditor) { auto* view = new VST3Editor (this, "view", "again.uidesc"); return view; } return nullptr; } //------------------------------------------------------------------------ IController* AGainController::createSubController (UTF8StringPtr name, const IUIDescription* /*description*/, VST3Editor* /*editor*/) { if (UTF8StringView (name) == "MessageController") { auto* controller = new UIMessageController (this); addUIMessageController (controller); return controller; } return nullptr; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::setState (IBStream* state) { IBStreamer streamer (state, kLittleEndian); int8 byteOrder; if (streamer.readInt8 (byteOrder) == false) return kResultFalse; if (streamer.readRaw (defaultMessageText, 128 * sizeof (TChar)) == false) return kResultFalse; // if the byteorder doesn't match, byte swap the text array ... if (byteOrder != BYTEORDER) { for (int32 i = 0; i < 128; i++) { SWAP_16 (defaultMessageText[i]) } } // update our editors for (auto& uiMessageController : uiMessageControllers) uiMessageController->setMessageText (defaultMessageText); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::getState (IBStream* state) { // here we can save UI settings for example // as we save a Unicode string, we must know the byteorder when setState is called IBStreamer streamer (state, kLittleEndian); int8 byteOrder = BYTEORDER; if (streamer.writeInt8 (byteOrder) == false) return kResultFalse; if (streamer.writeRaw (defaultMessageText, 128 * sizeof (TChar)) == false) return kResultFalse; return kResultTrue; } //------------------------------------------------------------------------ tresult AGainController::receiveText (const char* text) { // received from Component if (text) { fprintf (stderr, "[AGainController] received: "); fprintf (stderr, "%s", text); fprintf (stderr, "\n"); } return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::setParamNormalized (ParamID tag, ParamValue value) { // called from host to update our parameters state tresult result = EditControllerEx1::setParamNormalized (tag, value); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { /* example, but better to use a custom Parameter as seen in GainParameter switch (tag) { case kGainId: { char text[32]; if (valueNormalized > 0.0001) { sprintf (text, "%.2f", 20 * log10f ((float)valueNormalized)); } else strcpy (text, "-oo"); Steinberg::UString (string, 128).fromAscii (text); return kResultTrue; } }*/ return EditControllerEx1::getParamStringByValue (tag, valueNormalized, string); } //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { /* example, but better to use a custom Parameter as seen in GainParameter switch (tag) { case kGainId: { Steinberg::UString wrapper ((TChar*)string, -1); // don't know buffer size here! double tmp = 0.0; if (wrapper.scanFloat (tmp)) { valueNormalized = expf (logf (10.f) * (float)tmp / 20.f); return kResultTrue; } return kResultFalse; } }*/ return EditControllerEx1::getParamValueByString (tag, string, valueNormalized); } //------------------------------------------------------------------------ void AGainController::addUIMessageController (UIMessageController* controller) { uiMessageControllers.push_back (controller); } //------------------------------------------------------------------------ void AGainController::removeUIMessageController (UIMessageController* controller) { UIMessageControllerList::const_iterator it = std::find (uiMessageControllers.begin (), uiMessageControllers.end (), controller); if (it != uiMessageControllers.end ()) uiMessageControllers.erase (it); } //------------------------------------------------------------------------ void AGainController::setDefaultMessageText (String128 text) { String tmp (text); tmp.copyTo16 (defaultMessageText, 0, 127); } //------------------------------------------------------------------------ TChar* AGainController::getDefaultMessageText () { return defaultMessageText; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::queryInterface (const char* iid, void** obj) { QUERY_INTERFACE (iid, obj, IMidiMapping::iid, IMidiMapping) return EditControllerEx1::queryInterface (iid, obj); } //------------------------------------------------------------------------ tresult PLUGIN_API AGainController::getMidiControllerAssignment (int32 busIndex, int16 /*midiChannel*/, CtrlNumber midiControllerNumber, ParamID& tag) { // we support for the Gain parameter all MIDI Channel but only first bus (there is only one!) if (busIndex == 0 && midiControllerNumber == kCtrlVolume) { tag = kGainId; return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againcontroller.h000066400000000000000000000124451461511344300245510ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againcontroller.h // Created by : Steinberg, 04/2005 // Description : AGain Editor Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "vstgui/plugin-bindings/vst3editor.h" #include "public.sdk/source/vst/vsteditcontroller.h" #include namespace Steinberg { namespace Vst { template class AGainUIMessageController; //------------------------------------------------------------------------ // AGainController //------------------------------------------------------------------------ class AGainController : public EditControllerEx1, public IMidiMapping, public VSTGUI::VST3EditorDelegate { public: using UIMessageController = AGainUIMessageController; using UTF8StringPtr = VSTGUI::UTF8StringPtr; using IUIDescription = VSTGUI::IUIDescription; using IController = VSTGUI::IController; using VST3Editor = VSTGUI::VST3Editor; //--- --------------------------------------------------------------------- // create function required for plug-in factory, // it will be called to create new instances of this controller //--- --------------------------------------------------------------------- static FUnknown* createInstance (void* /*context*/) { return (IEditController*)new AGainController; } //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; //---from EditController----- tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; IPlugView* PLUGIN_API createView (const char* name) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //---from ComponentBase----- tresult receiveText (const char* text) SMTG_OVERRIDE; //---from IMidiMapping----------------- tresult PLUGIN_API getMidiControllerAssignment (int32 busIndex, int16 channel, CtrlNumber midiControllerNumber, ParamID& tag) SMTG_OVERRIDE; //---from VST3EditorDelegate----------- IController* createSubController (UTF8StringPtr name, const IUIDescription* description, VST3Editor* editor) SMTG_OVERRIDE; DELEGATE_REFCOUNT (EditController) tresult PLUGIN_API queryInterface (const char* iid, void** obj) SMTG_OVERRIDE; //---Internal functions------- void addUIMessageController (UIMessageController* controller); void removeUIMessageController (UIMessageController* controller); void setDefaultMessageText (String128 text); TChar* getDefaultMessageText (); //------------------------------------------------------------------------ private: using UIMessageControllerList = std::vector; UIMessageControllerList uiMessageControllers; String128 defaultMessageText; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againentry.cpp000066400000000000000000000125351461511344300240620ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againentry.cpp // Created by : Steinberg, 04/2005 // Description : AGain Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "again.h" // for AGain #include "againsidechain.h" // for AGain SideChain #include "againcontroller.h" // for AGainController #include "againcids.h" // for class ids and categrory #include "version.h" // for versioning #include "public.sdk/source/main/pluginfactory.h" #define stringPluginName "AGain VST3" #define stringPluginSideChainName "AGain SideChain VST3" #if TARGET_OS_IPHONE #include "public.sdk/source/vst/vstguieditor.h" extern void* moduleHandle; #endif using namespace Steinberg::Vst; //------------------------------------------------------------------------ // VST Plug-in Entry //------------------------------------------------------------------------ // Windows: do not forget to include a .def file in your project to export // GetPluginFactory function! //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID(AGainProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) stringPluginName, // here the plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers AGainVST3Category, // Subcategory for this plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::AGain::createInstance) // function pointer called when this component should be instantiated // its kVstComponentControllerClass component DEF_CLASS2 (INLINE_UID_FROM_FUID (AGainControllerUID), PClassInfo::kManyInstances, // cardinality kVstComponentControllerClass,// the Controller category (do not change this) stringPluginName "Controller", // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::AGainController::createInstance)// function pointer called when this component should be instantiated //---Second plug-in (AGain with sidechain (only component, use the same controller) included in this factory------- DEF_CLASS2 (INLINE_UID_FROM_FUID(AGainWithSideChainProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) stringPluginSideChainName, // here the plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers AGainVST3Category, // Subcategory for this plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::AGainWithSideChain::createInstance) // function pointer called when this component should be instantiated //----for others plug-ins contained in this factory, put like for the first plug-in different DEF_CLASS2--- END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againentry_vst2.cpp000066400000000000000000000047421461511344300250410ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/again_vst2_entry.cpp // Created by : Steinberg, 04/2008 // Description : AGain Example for VST 3 to VST 2.4 wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/vst2wrapper/vst2wrapper.h" #include "againcids.h" // for class ids //------------------------------------------------------------------------ ::AudioEffect* createEffectInstance (audioMasterCallback audioMaster) { return Steinberg::Vst::Vst2Wrapper::create (GetPluginFactory (), Steinberg::Vst::AGainProcessorUID, 'GnV2', audioMaster); } vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againparamids.h000066400000000000000000000045551461511344300241710ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againparamids.h // Created by : Steinberg, 12/2007 // Description : define the parameter IDs used by AGain // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once enum { /** parameter ID */ kGainId = 0, ///< for the gain value (is automatable) kVuPPMId, ///< for the Vu value return to host (ReadOnly parameter for our UI) kBypassId ///< Bypass value (we will handle the bypass process) (is automatable) }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againprocess.h000066400000000000000000000070461461511344300240450ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againprocess.h // Created by : Steinberg, 11/2016 // Description : AGain Example for VST SDK 3.0 // Simple gain plug-in with gain, bypass values and 1 midi input // and the same plug-in with sidechain // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ template SampleType AGain::processAudio (SampleType** in, SampleType** out, int32 numChannels, int32 sampleFrames, float gain) { SampleType vuPPM = 0; // in real Plug-in it would be better to do dezippering to avoid jump (click) in gain value for (int32 i = 0; i < numChannels; i++) { int32 samples = sampleFrames; SampleType* ptrIn = (SampleType*)in[i]; SampleType* ptrOut = (SampleType*)out[i]; SampleType tmp; while (--samples >= 0) { // apply gain tmp = (*ptrIn++) * gain; (*ptrOut++) = tmp; // check only positive values if (tmp > vuPPM) { vuPPM = tmp; } } } return vuPPM; } //------------------------------------------------------------------------ template SampleType AGain::processVuPPM (SampleType** in, int32 numChannels, int32 sampleFrames) { SampleType vuPPM = 0; for (int32 i = 0; i < numChannels; i++) { int32 samples = sampleFrames; SampleType* ptrIn = (SampleType*)in[i]; SampleType tmp; while (--samples >= 0) { tmp = (*ptrIn++); // check only positive values if (tmp > vuPPM) { vuPPM = tmp; } } } return vuPPM; } } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againsidechain.cpp000066400000000000000000000306251461511344300246500ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againsidechain.cpp // Created by : Steinberg, 04/2005 // Description : AGain Example for VST SDK 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "againsidechain.h" #include "againcids.h" // for class ids #include "againparamids.h" #include "againprocess.h" #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // AGainWithSideChain Implementation //------------------------------------------------------------------------ //------------------------------------------------------------------------ tresult PLUGIN_API AGainWithSideChain::initialize (FUnknown* context) { //---always initialize the parent------- tresult result = AGain::initialize (context); // if everything Ok, continue if (result != kResultOk) { return result; } // create a Mono SideChain input bus (this will be the 2cd input) addAudioInput (STR16 ("Mono Aux In"), SpeakerArr::kMono, kAux, 0); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainWithSideChain::process (ProcessData& data) { // finally the process function // In this example there are 4 steps: // 1) Read inputs parameters coming from host (in order to adapt our model values) // 2) Read inputs events coming from host (we apply a gain reduction depending of the velocity // of pressed key) 3) Process the gain of the input buffer to the output buffer 4) Write the new // VUmeter value to the output Parameters queue //---1) Read inputs parameter changes----------- if (IParameterChanges* paramChanges = data.inputParameterChanges) { int32 numParamsChanged = paramChanges->getParameterCount (); // for each parameter which are some changes in this audio block: for (int32 i = 0; i < numParamsChanged; i++) { if (IParamValueQueue* paramQueue = paramChanges->getParameterData (i)) { int32 offsetSamples; double value; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case kGainId: // we use in this example only the last point of the queue. // in some wanted case for specific kind of parameter it makes sense to // retrieve all points and process the whole audio block in small blocks. if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { fGain = (float)value; } break; case kBypassId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { bBypass = (value > 0.5f); } break; } } } } //---2) Read input events------------- if (IEventList* eventList = data.inputEvents) { int32 numEvent = eventList->getEventCount (); for (int32 i = 0; i < numEvent; i++) { Event event {}; if (eventList->getEvent (i, event) == kResultOk) { switch (event.type) { //--- ------------------- case Event::kNoteOnEvent: // use the velocity as gain modifier fGainReduction = event.noteOn.velocity; break; //--- ------------------- case Event::kNoteOffEvent: // noteOff reset the reduction fGainReduction = 0.f; break; } } } } //--- ---------------------------------- //---3) Process Audio--------------------- //--- ---------------------------------- if (data.numInputs == 0 || data.numOutputs == 0) { // nothing to do return kResultOk; } // (simplification) we suppose in this example that we have the same input channel count than // the output int32 numChannels = data.inputs[0].numChannels; //---get audio buffers---------------- uint32 sampleFramesSize = getSampleFramesSizeInBytes (processSetup, data.numSamples); void** in = getChannelBuffersPointer (processSetup, data.inputs[0]); void** out = getChannelBuffersPointer (processSetup, data.outputs[0]); void** auxIn = nullptr; bool auxActive = false; // check if our sidechain input is active (here our sidechain is the 2cd input) if (getAudioInput (1)->isActive ()) { auxIn = getChannelBuffersPointer (processSetup, data.inputs[1]); auxActive = true; } float fVuPPM = 0.f; //---check if silence--------------- // check if all channel are silent then process silent if (data.inputs[0].silenceFlags == getChannelMask (data.inputs[0].numChannels)) { // mark output silence too data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; // the plug-in has to be sure that if it sets the flags silence that the output buffer are // clear for (int32 i = 0; i < numChannels; i++) { // do not need to be cleared if the buffers are the same (in this case input buffer are // already cleared by the host) if (in[i] != out[i]) { memset (out[i], 0, sampleFramesSize); } } fVuPPM = 0.f; } else // we have to process (no silence) { // mark our outputs has not silent data.outputs[0].silenceFlags = 0; //---in bypass mode outputs should be like inputs----- if (bBypass) { for (int32 i = 0; i < numChannels; i++) { // do not need to be copied if the buffers are the same if (in[i] != out[i]) { memcpy (out[i], in[i], sampleFramesSize); } } // in this example we do not update the VuMeter in Bypass } else { //---apply gain factor---------- float gain = (fGain - fGainReduction); if (bHalfGain) { gain = gain * 0.5f; } // if the applied gain is nearly zero, we could say that the outputs are zeroed and we set // the silence flags. if (gain < 0.0000001) { for (int32 i = 0; i < numChannels; i++) { memset (out[i], 0, sampleFramesSize); } // this will set to 1 all channels data.outputs[0].silenceFlags = getChannelMask (data.outputs[0].numChannels); fVuPPM = 0.f; } else { if (auxActive) { if (data.symbolicSampleSize == kSample32) fVuPPM = processAudioWithSideChain ((Sample32**)in, (Sample32**)out, (Sample32**)auxIn, numChannels, data.numSamples, gain); else fVuPPM = processAudioWithSideChain ((Sample64**)in, (Sample64**)out, (Sample64**)auxIn, numChannels, data.numSamples, gain); } else { if (data.symbolicSampleSize == kSample32) fVuPPM = processAudio ((Sample32**)in, (Sample32**)out, numChannels, data.numSamples, gain); else fVuPPM = processAudio ((Sample64**)in, (Sample64**)out, numChannels, data.numSamples, gain); } } } } //---3) Write addParameterData (kVuPPMId, index); if (paramQueue) { int32 index2 = 0; paramQueue->addPoint (0, fVuPPM, index2); } } fVuPPMOld = fVuPPM; return kResultOk; } //------------------------------------------------------------------------ template SampleType AGainWithSideChain::processAudioWithSideChain (SampleType** in, SampleType** out, SampleType** aux, int32 numChannels, int32 sampleFrames, float gain) { SampleType vuPPM = 0; // we add the sidechain to the input signal for (int32 i = 0; i < numChannels; i++) { int32 samples = sampleFrames; auto* ptrIn = (SampleType*)in[i]; auto* ptrAuxIn = (SampleType*)aux[0]; auto* ptrOut = (SampleType*)out[i]; SampleType tmp; while (--samples >= 0) { // apply gain tmp = (*ptrIn++ + *ptrAuxIn++) * gain; (*ptrOut++) = tmp; // check only positive values if (tmp > vuPPM) { vuPPM = tmp; } } } return vuPPM; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainWithSideChain::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { // the first input is the Main Input and the second is the SideChain Input if (numIns == 2 && numOuts == 1) { // the host wants Mono => Mono (or 1 channel -> 1 channel) if (SpeakerArr::getChannelCount (inputs[0]) == 1 && SpeakerArr::getChannelCount (outputs[0]) == 1) { auto* bus = FCast (audioInputs.at (0)); if (bus) { // check if we are Mono => Mono, if not we need to recreate the busses if (bus->getArrangement () != inputs[0]) { getAudioInput (0)->setArrangement (inputs[0]); getAudioInput (0)->setName (STR16 ("Mono In")); getAudioOutput (0)->setArrangement (outputs[0]); getAudioOutput (0)->setName (STR16 ("Mono Out")); } // check if sidechain is mono if (SpeakerArr::getChannelCount (inputs[1]) != 1) return kResultFalse; return kResultOk; } } // the host wants something else than Mono => Mono, in this case we are always Stereo => // Stereo else { auto* bus = FCast (audioInputs.at (0)); if (bus) { tresult result = kResultFalse; // the host wants 2->2 (could be LsRs -> LsRs) if (SpeakerArr::getChannelCount (inputs[0]) == 2 && SpeakerArr::getChannelCount (outputs[0]) == 2) { getAudioInput (0)->setArrangement (inputs[0]); getAudioInput (0)->setName (STR16 ("Stereo In")); getAudioOutput (0)->setArrangement (outputs[0]); getAudioOutput (0)->setName (STR16 ("Stereo Out")); // check if sidechain is mono if (SpeakerArr::getChannelCount (inputs[1]) != 1) result = kResultFalse; else result = kResultTrue; } // the host want something different than 1->1 or 2->2 : in this case we want stereo else if (bus->getArrangement () != SpeakerArr::kStereo) { getAudioInput (0)->setArrangement (SpeakerArr::kStereo); getAudioInput (0)->setName (STR16 ("Stereo In")); getAudioOutput (0)->setArrangement (SpeakerArr::kStereo); getAudioOutput (0)->setName (STR16 ("Stereo Out")); result = kResultFalse; } return result; } } } return kResultFalse; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againsidechain.h000066400000000000000000000066601461511344300243170ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againsidechain.h // Created by : Steinberg, 04/2016 // Description : AGain Example for VST SDK 3.0 // Simple gain plug-in with gain, bypass values and 1 midi input // and a sidechain // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "again.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // AGainWithSideChain: directly derived from AGain //------------------------------------------------------------------------ class AGainWithSideChain : public AGain { public: // just overwrite some functions static FUnknown* createInstance (void* /*context*/) { return (IAudioProcessor*)new AGainWithSideChain; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; protected: //============================================================================== template SampleType processAudioWithSideChain (SampleType** in, SampleType** out, SampleType** aux, int32 numChannels, int32 sampleFrames, float gain); }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againsimple.cpp000066400000000000000000000557571461511344300242270ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againsimple.cpp // Created by : Steinberg, 04/2005 // Description : AGain Example for VST SDK 3.0 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "againsimple.h" #include "againparamids.h" #include "againuimessagecontroller.h" #include "version.h" // for versioning #include "public.sdk/source/main/pluginfactory.h" #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" // for UString128 #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/vstpresetkeys.h" // for use of IStreamAttributes #include "base/source/fstreamer.h" #include #include // this allows to enable the communication example between again and its controller #define AGAIN_TEST 1 using namespace VSTGUI; namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // GainParameter Declaration // example of custom parameter (overwriting to and fromString) //------------------------------------------------------------------------ class GainParameter : public Parameter { public: GainParameter (int32 flags, int32 id); void toString (ParamValue normValue, String128 string) const SMTG_OVERRIDE; bool fromString (const TChar* string, ParamValue& normValue) const SMTG_OVERRIDE; }; //------------------------------------------------------------------------ // GainParameter Implementation //------------------------------------------------------------------------ GainParameter::GainParameter (int32 flags, int32 id) { Steinberg::UString (info.title, USTRINGSIZE (info.title)).assign (USTRING ("Gain")); Steinberg::UString (info.units, USTRINGSIZE (info.units)).assign (USTRING ("dB")); info.flags = flags; info.id = id; info.stepCount = 0; info.defaultNormalizedValue = 0.5f; info.unitId = kRootUnitId; setNormalized (1.f); } //------------------------------------------------------------------------ void GainParameter::toString (ParamValue normValue, String128 string) const { char text[32]; if (normValue > 0.0001) snprintf (text, 32, "%.2f", 20 * log10f ((float)normValue)); else strcpy (text, "-oo"); Steinberg::UString (string, 128).fromAscii (text); } //------------------------------------------------------------------------ bool GainParameter::fromString (const TChar* string, ParamValue& normValue) const { Steinberg::UString wrapper ((TChar*)string, -1); // don't know buffer size here! double tmp = 0.0; if (wrapper.scanFloat (tmp)) { // allow only values between -oo and 0dB if (tmp > 0.0) tmp = -tmp; normValue = expf (logf (10.f) * (float)tmp / 20.f); return true; } return false; } //------------------------------------------------------------------------ // AGain Implementation //------------------------------------------------------------------------ AGainSimple::AGainSimple () : fGain (1.f) , fGainReduction (0.f) , fVuPPMOld (0.f) , currentProcessMode (-1) // -1 means not initialized , bHalfGain (false) , bBypass (false) { } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::initialize (FUnknown* context) { tresult result = SingleComponentEffect::initialize (context); if (result != kResultOk) return result; //---create Audio In/Out busses------ // we want a stereo Input and a Stereo Output addAudioInput (STR16 ("Stereo In"), SpeakerArr::kStereo); addAudioOutput (STR16 ("Stereo Out"), SpeakerArr::kStereo); //---create Event In/Out busses (1 bus with only 1 channel)------ addEventInput (STR16 ("Event In"), 1); //---Create Parameters------------ //---Gain parameter-- auto* gainParam = new GainParameter (ParameterInfo::kCanAutomate, kGainId); parameters.addParameter (gainParam); //---VuMeter parameter--- int32 stepCount = 0; ParamValue defaultVal = 0; int32 flags = ParameterInfo::kIsReadOnly; int32 tag = kVuPPMId; parameters.addParameter (USTRING ("VuPPM"), nullptr, stepCount, defaultVal, flags, tag); //---Bypass parameter--- stepCount = 1; defaultVal = 0; flags = ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass; tag = kBypassId; parameters.addParameter (USTRING ("Bypass"), nullptr, stepCount, defaultVal, flags, tag); //---Custom state init------------ UString str (defaultMessageText, 128); str.fromAscii ("Hello World!"); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::terminate () { return SingleComponentEffect::terminate (); } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::setActive (TBool state) { #if AGAIN_TEST if (state) fprintf (stderr, "[AGainSimple] Activated \n"); else fprintf (stderr, "[AGainSimple] Deactivated \n"); #endif // reset the VuMeter value fVuPPMOld = 0.f; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::process (ProcessData& data) { // finally the process function // In this example there are 4 steps: // 1) Read inputs parameters coming from host (in order to adapt our model values) // 2) Read inputs events coming from host (we apply a gain reduction depending of the velocity of pressed key) // 3) Process the gain of the input buffer to the output buffer // 4) Write the new VUmeter value to the output Parameters queue //---1) Read inputs parameter changes----------- if (IParameterChanges* paramChanges = data.inputParameterChanges) { int32 numParamsChanged = paramChanges->getParameterCount (); // for each parameter which are some changes in this audio block: for (int32 i = 0; i < numParamsChanged; i++) { if (IParamValueQueue* paramQueue = paramChanges->getParameterData (i)) { ParamValue value; int32 sampleOffset; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case kGainId: // we use in this example only the last point of the queue. // in some wanted case for specific kind of parameter it makes sense to retrieve all points // and process the whole audio block in small blocks. if (paramQueue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) { fGain = (float)value; } break; case kBypassId: if (paramQueue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) { bBypass = (value > 0.5f); } break; } } } } //---2) Read input events------------- if (IEventList* eventList = data.inputEvents) { int32 numEvent = eventList->getEventCount (); for (int32 i = 0; i < numEvent; i++) { Event event {}; if (eventList->getEvent (i, event) == kResultOk) { switch (event.type) { //--- ------------------- case Event::kNoteOnEvent: // use the velocity as gain modifier fGainReduction = event.noteOn.velocity; break; //--- ------------------- case Event::kNoteOffEvent: // noteOff reset the reduction fGainReduction = 0.f; break; } } } } //--- ---------------------------------- //---3) Process Audio--------------------- //--- ---------------------------------- if (data.numInputs == 0 || data.numOutputs == 0) { // nothing to do return kResultOk; } // (simplification) we suppose in this example that we have the same input channel count than // the output int32 numChannels = data.inputs[0].numChannels; //---get audio buffers---------------- uint32 sampleFramesSize = getSampleFramesSizeInBytes (processSetup, data.numSamples); void** in = getChannelBuffersPointer (processSetup, data.inputs[0]); void** out = getChannelBuffersPointer (processSetup, data.outputs[0]); float fVuPPM = 0.f; //---check if silence--------------- // check if all channel are silent then process silent if (data.inputs[0].silenceFlags == getChannelMask (data.inputs[0].numChannels)) { // mark output silence too data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; // the plug-in has to be sure that if it sets the flags silence that the output buffer are // clear for (int32 i = 0; i < numChannels; i++) { // do not need to be cleared if the buffers are the same (in this case input buffer are // already cleared by the host) if (in[i] != out[i]) { memset (out[i], 0, sampleFramesSize); } } fVuPPM = 0.f; } else { // mark our outputs has not silent data.outputs[0].silenceFlags = 0; //---in bypass mode outputs should be like inputs----- if (bBypass) { for (int32 i = 0; i < numChannels; i++) { // do not need to be copied if the buffers are the same if (in[i] != out[i]) { memcpy (out[i], in[i], sampleFramesSize); } } // in this example we do not update the VuMeter in Bypass } else { //---apply gain factor---------- float gain = (fGain - fGainReduction); if (bHalfGain) { gain = gain * 0.5f; } // if the applied gain is nearly zero, we could say that the outputs are zeroed and we set // the silence flags. if (gain < 0.0000001) { for (int32 i = 0; i < numChannels; i++) { memset (out[i], 0, sampleFramesSize); } // this will set to 1 all channels data.outputs[0].silenceFlags = getChannelMask (data.outputs[0].numChannels); fVuPPM = 0.f; } else { if (data.symbolicSampleSize == kSample32) fVuPPM = processAudio ((Sample32**)in, (Sample32**)out, numChannels, data.numSamples, gain); else fVuPPM = processAudio ((Sample64**)in, (Sample64**)out, numChannels, data.numSamples, gain); } } } //---3) Write outputs parameter changes----------- IParameterChanges* outParamChanges = data.outputParameterChanges; // a new value of VuMeter will be send to the host // (the host will send it back in sync to our controller for updating our editor) if (outParamChanges && fVuPPMOld != fVuPPM) { int32 index = 0; IParamValueQueue* paramQueue = outParamChanges->addParameterData (kVuPPMId, index); if (paramQueue) { int32 index2 = 0; paramQueue->addPoint (0, fVuPPM, index2); } } fVuPPMOld = fVuPPM; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::setState (IBStream* state) { // we receive the current (processor part) // called when we load a preset, the model has to be reloaded IBStreamer streamer (state, kLittleEndian); float savedGain = 0.f; if (streamer.readFloat (savedGain) == false) return kResultFalse; float savedGainReduction = 0.f; if (streamer.readFloat (savedGainReduction) == false) return kResultFalse; int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; fGain = savedGain; fGainReduction = savedGainReduction; bBypass = savedBypass > 0; setParamNormalized (kGainId, savedGain); setParamNormalized (kBypassId, bBypass); // Example of using the IStreamAttributes interface FUnknownPtr stream (state); if (stream) { IAttributeList* list = stream->getAttributes (); if (list) { // get the current type (project/Default..) of this state String128 string = {0}; if (list->getString (PresetAttributes::kStateType, string, 128 * sizeof (TChar)) == kResultTrue) { UString128 tmp (string); char ascii[128]; tmp.toAscii (ascii, 128); if (strncmp (ascii, StateType::kProject, strlen (StateType::kProject)) == 0) { // we are in project loading context... } } // get the full file path of this state TChar fullPath[1024]; memset (fullPath, 0, 1024 * sizeof (TChar)); if (list->getString (PresetAttributes::kFilePathStringType, fullPath, 1024 * sizeof (TChar)) == kResultTrue) { // here we have the full path ... } } } return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::getState (IBStream* state) { // here we need to save the model IBStreamer streamer (state, kLittleEndian); streamer.writeFloat (fGain); streamer.writeFloat (fGainReduction); streamer.writeInt32 (bBypass ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::setupProcessing (ProcessSetup& newSetup) { // called before the process call, always in a disable state (not active) // here we keep a trace of the processing mode (offline,...) for example. currentProcessMode = newSetup.processMode; return SingleComponentEffect::setupProcessing (newSetup); } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { if (numIns == 1 && numOuts == 1) { // the host wants Mono => Mono (or 1 channel -> 1 channel) if (SpeakerArr::getChannelCount (inputs[0]) == 1 && SpeakerArr::getChannelCount (outputs[0]) == 1) { auto* bus = FCast (audioInputs.at (0)); if (bus) { // check if we are Mono => Mono, if not we need to recreate the busses if (bus->getArrangement () != inputs[0]) { bus->setArrangement (inputs[0]); bus->setName (STR16 ("Mono In")); if (auto* busOut = FCast (audioOutputs.at (0))) { busOut->setArrangement (outputs[0]); busOut->setName (STR16 ("Mono Out")); } } return kResultOk; } } // the host wants something else than Mono => Mono, in this case we are always Stereo => // Stereo else { auto* bus = FCast (audioInputs.at (0)); if (bus) { tresult result = kResultFalse; // the host wants 2->2 (could be LsRs -> LsRs) if (SpeakerArr::getChannelCount (inputs[0]) == 2 && SpeakerArr::getChannelCount (outputs[0]) == 2) { bus->setArrangement (inputs[0]); bus->setName (STR16 ("Stereo In")); if (auto* busOut = FCast (audioOutputs.at (0))) { busOut->setArrangement (outputs[0]); busOut->setName (STR16 ("Stereo Out")); } result = kResultTrue; } // the host want something different than 1->1 or 2->2 : in this case we want stereo else if (bus->getArrangement () != SpeakerArr::kStereo) { bus->setArrangement (SpeakerArr::kStereo); bus->setName (STR16 ("Stereo In")); if (auto* busOut = FCast (audioOutputs.at (0))) { busOut->setArrangement (SpeakerArr::kStereo); busOut->setName (STR16 ("Stereo Out")); } result = kResultFalse; } return result; } } } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::canProcessSampleSize (int32 symbolicSampleSize) { if (symbolicSampleSize == kSample32) return kResultTrue; // we support double processing if (symbolicSampleSize == kSample64) return kResultTrue; return kResultFalse; } //------------------------------------------------------------------------ IPlugView* PLUGIN_API AGainSimple::createView (const char* name) { // someone wants my editor if (name && FIDStringsEqual (name, ViewType::kEditor)) { auto* view = new VST3Editor (this, "view", "again.uidesc"); return view; } return nullptr; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::getMidiControllerAssignment (int32 busIndex, int16 /*midiChannel*/, CtrlNumber midiControllerNumber, ParamID& tag) { // we support for the Gain parameter all MIDI Channel but only first bus (there is only one!) if (busIndex == 0 && midiControllerNumber == kCtrlVolume) { tag = kGainId; return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ IController* AGainSimple::createSubController (UTF8StringPtr name, const IUIDescription* /*description*/, VST3Editor* /*editor*/) { if (UTF8StringView (name) == "MessageController") { auto* controller = new UIMessageController (this); addUIMessageController (controller); return controller; } return nullptr; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::setEditorState (IBStream* state) { tresult result = kResultFalse; int8 byteOrder; if ((result = state->read (&byteOrder, sizeof (int8))) != kResultTrue) return result; if ((result = state->read (defaultMessageText, 128 * sizeof (TChar))) != kResultTrue) return result; // if the byteorder doesn't match, byte swap the text array ... if (byteOrder != BYTEORDER) { for (int32 i = 0; i < 128; i++) SWAP_16 (defaultMessageText[i]) } for (auto& uiMessageController : uiMessageControllers) uiMessageController->setMessageText (defaultMessageText); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::getEditorState (IBStream* state) { // here we can save UI settings for example IBStreamer streamer (state, kLittleEndian); // as we save a Unicode string, we must know the byteorder when setState is called int8 byteOrder = BYTEORDER; if (streamer.writeInt8 (byteOrder) == false) return kResultFalse; if (streamer.writeRaw (defaultMessageText, 128 * sizeof (TChar)) == false) return kResultFalse; return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::setParamNormalized (ParamID tag, ParamValue value) { // called from host to update our parameters state tresult result = SingleComponentEffect::setParamNormalized (tag, value); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return SingleComponentEffect::getParamStringByValue (tag, valueNormalized, string); } //------------------------------------------------------------------------ tresult PLUGIN_API AGainSimple::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return SingleComponentEffect::getParamValueByString (tag, string, valueNormalized); } //------------------------------------------------------------------------ void AGainSimple::addUIMessageController (UIMessageController* controller) { uiMessageControllers.push_back (controller); } //------------------------------------------------------------------------ void AGainSimple::removeUIMessageController (UIMessageController* controller) { UIMessageControllerList::const_iterator it = std::find (uiMessageControllers.begin (), uiMessageControllers.end (), controller); if (it != uiMessageControllers.end ()) uiMessageControllers.erase (it); } //------------------------------------------------------------------------ void AGainSimple::setDefaultMessageText (String128 text) { UString str (defaultMessageText, 128); str.assign (text, -1); } //------------------------------------------------------------------------ TChar* AGainSimple::getDefaultMessageText () { return defaultMessageText; } //----------------------------------------------------------------------------- tresult PLUGIN_API AGainSimple::queryInterface (const TUID iid, void** obj) { DEF_INTERFACE (IMidiMapping) return SingleComponentEffect::queryInterface (iid, obj); } //------------------------------------------------------------------------ enum { // UI size kEditorWidth = 350, kEditorHeight = 120 }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID (0xB9F9ADE1, 0xCD9C4B6D, 0xA57E61E3, 0x123535FD), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) "AGainSimple VST3", // here the plug-in name (to be changed) 0, // single component effects cannot be distributed so this is zero "Fx", // Subcategory for this plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::AGainSimple::createInstance)// function pointer called when this component should be instantiated END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againsimple.h000066400000000000000000000154701461511344300236600ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againsimple.h // Created by : Steinberg, 04/2005 // Description : AGain Example for VST SDK 3.0 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once // must always come first #include "public.sdk/source/vst/vstsinglecomponenteffect.h" //------------------------------------------------------------------------ #include "public.sdk/source/vst/vstguieditor.h" #include "pluginterfaces/vst/ivstcontextmenu.h" #include "pluginterfaces/vst/ivstplugview.h" #include "vstgui/plugin-bindings/vst3editor.h" namespace Steinberg { namespace Vst { template class AGainUIMessageController; //------------------------------------------------------------------------ // AGain as combined processor and controller //------------------------------------------------------------------------ class AGainSimple : public SingleComponentEffect, public VSTGUI::VST3EditorDelegate, public IMidiMapping { public: //------------------------------------------------------------------------ using UIMessageController = AGainUIMessageController; using UTF8StringPtr = VSTGUI::UTF8StringPtr; using IUIDescription = VSTGUI::IUIDescription; using IController = VSTGUI::IController; using VST3Editor = VSTGUI::VST3Editor; AGainSimple (); static FUnknown* createInstance (void* /*context*/) { return (IAudioProcessor*)new AGainSimple; } //---from IComponent----------------------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API setupProcessing (ProcessSetup& newSetup) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; //---from IEditController------- IPlugView* PLUGIN_API createView (const char* name) SMTG_OVERRIDE; tresult PLUGIN_API setEditorState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getEditorState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //---from IMidiMapping----------------- tresult PLUGIN_API getMidiControllerAssignment (int32 busIndex, int16 channel, CtrlNumber midiControllerNumber, ParamID& tag) SMTG_OVERRIDE; //---from VST3EditorDelegate----------- IController* createSubController (UTF8StringPtr name, const IUIDescription* description, VST3Editor* editor) SMTG_OVERRIDE; //---Interface--------- OBJ_METHODS (AGainSimple, SingleComponentEffect) tresult PLUGIN_API queryInterface (const TUID iid, void** obj) SMTG_OVERRIDE; REFCOUNT_METHODS (SingleComponentEffect) //---Internal functions------- void addUIMessageController (UIMessageController* controller); void removeUIMessageController (UIMessageController* controller); void setDefaultMessageText (String128 text); TChar* getDefaultMessageText (); //------------------------------------------------------------------------ template SampleType processAudio (SampleType** in, SampleType** out, int32 numChannels, int32 sampleFrames, float gain) { SampleType vuPPM = 0; // in real plug-in it would be better to do dezippering to avoid jump (click) in gain value for (int32 i = 0; i < numChannels; i++) { int32 samples = sampleFrames; auto* ptrIn = (SampleType*)in[i]; auto* ptrOut = (SampleType*)out[i]; SampleType tmp; while (--samples >= 0) { // apply gain tmp = (*ptrIn++) * gain; (*ptrOut++) = tmp; // check only positive values if (tmp > vuPPM) { vuPPM = tmp; } } } return vuPPM; } //------------------------------------------------------------------------ private: // our model values float fGain; float fGainReduction; float fVuPPMOld; int32 currentProcessMode; bool bHalfGain; bool bBypass; using UIMessageControllerList = std::vector; UIMessageControllerList uiMessageControllers; String128 defaultMessageText; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/againuimessagecontroller.h000066400000000000000000000133621461511344300264530ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againuimessagecontroller.h // Created by : Steinberg, 04/2005 // Description : AGain UI Message Controller // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "vstgui/lib/iviewlistener.h" #include "vstgui/uidescription/icontroller.h" #include "public.sdk/source/vst/utility/stringconvert.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // AGainUIMessageController //------------------------------------------------------------------------ template class AGainUIMessageController : public VSTGUI::IController, public VSTGUI::ViewListenerAdapter { public: enum Tags { kSendMessageTag = 1000 }; AGainUIMessageController (ControllerType* againController) : againController (againController), textEdit (nullptr) { } ~AGainUIMessageController () override { if (textEdit) viewWillDelete (textEdit); againController->removeUIMessageController (this); } void setMessageText (String128 msgText) { if (!textEdit) return; textEdit->setText (VST3::StringConvert::convert (msgText)); } private: using CControl = VSTGUI::CControl; using CView = VSTGUI::CView; using CTextEdit = VSTGUI::CTextEdit; using UTF8String = VSTGUI::UTF8String; using UIAttributes = VSTGUI::UIAttributes; using IUIDescription = VSTGUI::IUIDescription; //--- from IControlListener ---------------------- void valueChanged (CControl* /*pControl*/) override {} void controlBeginEdit (CControl* /*pControl*/) override {} void controlEndEdit (CControl* pControl) override { if (pControl->getTag () == kSendMessageTag) { if (pControl->getValueNormalized () > 0.5f) { againController->sendTextMessage (textEdit->getText ().data ()); pControl->setValue (0.f); pControl->invalid (); //---send a binary message if (IPtr message = owned (againController->allocateMessage ())) { message->setMessageID ("BinaryMessage"); uint32 size = 100; char8 data[100]; memset (data, 0, size * sizeof (char)); // fill my data with dummy stuff for (uint32 i = 0; i < size; i++) data[i] = i; message->getAttributes ()->setBinary ("MyData", data, size); againController->sendMessage (message); } } } } //--- from IControlListener ---------------------- //--- is called when a view is created ----- CView* verifyView (CView* view, const UIAttributes& /*attributes*/, const IUIDescription* /*description*/) override { if (CTextEdit* te = dynamic_cast (view)) { // this allows us to keep a pointer of the text edit view textEdit = te; // add this as listener in order to get viewWillDelete and viewLostFocus calls textEdit->registerViewListener (this); // initialize it content textEdit->setText ( VST3::StringConvert::convert (againController->getDefaultMessageText ())); } return view; } //--- from IViewListenerAdapter ---------------------- //--- is called when a view will be deleted: the editor is closed ----- void viewWillDelete (CView* view) override { if (dynamic_cast (view) == textEdit) { textEdit->unregisterViewListener (this); textEdit = nullptr; } } //--- is called when the view is loosing the focus ----------------- void viewLostFocus (CView* view) override { if (dynamic_cast (view) == textEdit) { // save the last content of the text edit view const auto& text = textEdit->getText (); auto utf16Text = VST3::StringConvert::convert (text.getString ()); againController->setDefaultMessageText (utf16Text.data ()); } } ControllerType* againController; CTextEdit* textEdit; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again/source/version.h000066400000000000000000000054601461511344300230520ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/version.h // Created by : Steinberg, 01/2008 // Description : Example of handle the versioning and copyright info of again plug-in // used for the resources (RC file for example) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "again.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "AGain VST3-SDK (64Bit)" #else #define stringFileDescription "AGain VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_aax/000077500000000000000000000000001461511344300205405ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_aax/CMakeLists.txt000066400000000000000000000040011461511344300232730ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-again VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 AGain AAX example" ) if(NOT SMTG_AAX_SDK_PATH OR NOT SMTG_ENABLE_VSTGUI_SUPPORT) return() endif() include(SMTG_AddAAXLibrary) set(again_sources source/againaax.cpp ../again/source/again.cpp ../again/source/again.h ../again/source/againcids.h ../again/source/againcontroller.cpp ../again/source/againcontroller.h ../again/source/againentry.cpp ../again/source/againparamids.h ../again/source/againprocess.h ../again/source/againsidechain.cpp ../again/source/againsidechain.h ../again/source/againuimessagecontroller.h ../again/source/version.h ../again/resource/again.uidesc ) set(target again_aax) smtg_add_aaxplugin(${target} ${again_sources}) smtg_target_configure_version_file(${target}) set_target_properties(${target} PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER} ) target_include_directories(${target} PUBLIC ${SDK_ROOT}/public.sdk/samples/vst/again/source ) target_compile_features(${target} PUBLIC cxx_std_17 ) target_link_libraries(${target} PRIVATE sdk vstgui_support aaxwrapper ) smtg_target_add_plugin_resources(${target} RESOURCES ../again/resource/again.uidesc ../again/resource/background.png ../again/resource/slider_background.png ../again/resource/slider_handle.png ../again/resource/slider_handle_2.0x.png ../again/resource/vu_on.png ../again/resource/vu_off.png ) if(SMTG_MAC) smtg_target_set_bundle(${target} BUNDLE_IDENTIFIER "com.steinberg.vst3.${target}" INFOPLIST "${CMAKE_CURRENT_LIST_DIR}/../again/mac/Info.plist" PREPROCESS ) elseif(SMTG_WIN) target_sources(${target} PRIVATE ../again/resource/again.rc ) # remove warnings from VST2 if(NOT MINGW) add_definitions(-D_CRT_SECURE_NO_WARNINGS) endif(NOT MINGW) endif(SMTG_MAC) vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_aax/readme.txt000066400000000000000000000042421461511344300225400ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/version.h // Created by : Steinberg, 03/2016 // Description : AGainAAX Example for VST SDK 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /* check public.sdk/source/vst/aaxwrapper/docaax.h for more information */vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_aax/source/000077500000000000000000000000001461511344300220405ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_aax/source/againaax.cpp000066400000000000000000000115441461511344300243220ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again/source/againaax.cpp // Created by : Steinberg, 03/2016 // Description : AGain AAX Example for VST SDK 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/aaxwrapper/aaxwrapper_description.h" #include "againcids.h" #include "againparamids.h" #include "pluginterfaces/base/futils.h" //------------------------------------------------------------------------ #if 0 // for additional outputs AAX_Aux_Desc effAux_stereo[] = { // name, channel count { "AGain AUX2", 2 }, { nullptr } }; #endif //------------------------------------------------------------------------ #if 1 // MIDI inputs for instruments or Fx with MIDI input AAX_MIDI_Desc effMIDI[] = { // port name, channel mask { "AGain", 0xffff }, { nullptr } }; #endif //------------------------------------------------------------------------ // Input/Output meters AAX_Meter_Desc effMeters[] = { // not used { "Input", CCONST ('A', 'G', 'I', 'n'), 0 /*AAX_eMeterOrientation_Default*/, 0 /*AAX_eMeterType_Input*/ }, { "Output", kVuPPMId, 0 /*AAX_eMeterOrientation_Default*/, 1 /*AAX_eMeterType_Output*/ }, { nullptr } }; //------------------------------------------------------------------------ AAX_Plugin_Desc effPlugins[] = { // effect-ID, name, // Native ID, AudioSuite ID, // InChannels, OutChannels, InSideChain channels, // MIDI, Aux, // Meters // Latency // note: IDs must be unique across plugins // Mono variant {"com.steinberg.again.mono", "AGain", CCONST ('A', 'G', 'N', '1'), CCONST ('A', 'G', 'A', '1'), 1, /*mInputChannels*/ 1, /*mOutputChannels*/ 0, /*mSideChainInputChannels*/ effMIDI, /*effMIDI*/ nullptr, /*effAux*/ effMeters, /*effMeters*/ 0 /*Latency*/ }, // Stereo variant {"com.steinberg.again.stereo", "AGain", CCONST ('A', 'G', 'N', '2'), CCONST ('A', 'G', 'A', '2'), 2, /*mInputChannels*/ 2, /*mOutputChannels*/ 0, /*mSideChainInputChannels*/ effMIDI, /*effMIDI*/ nullptr, /*effAux*/ effMeters, /*effMeters*/ 0 /*Latency*/ }, {nullptr} }; //------------------------------------------------------------------------ AAX_Effect_Desc effDesc = { "Steinberg", // manufacturer "AGain", // product CCONST ('S', 'M', 'T', 'G'), // manufacturer ID CCONST ('A', 'G', 'S', 'B'), // product ID AGainVST3Category, // VST category (define againcids.h) {0}, // VST3 class ID (set later) 1, // version nullptr, // no pagetable file "again.xml", effPlugins, }; //------------------------------------------------------------------------ // this drag's in all the craft from the AAX library int* forceLinkAAXWrapper = &AAXWrapper_linkAnchor; //------------------------------------------------------------------------ AAX_Effect_Desc* AAXWrapper_GetDescription () { // cannot initialize in global descriptor, and it might be link order dependent memcpy (effDesc.mVST3PluginID, (const char*)Steinberg::Vst::AGainProcessorUID, sizeof (effDesc.mVST3PluginID)); return &effDesc; } vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/000077500000000000000000000000001461511344300206455ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/CMakeLists.txt000066400000000000000000000042411461511344300234060ustar00rootroot00000000000000include(SMTG_AddVST3AuV3) if(SMTG_MAC AND SMTG_ENABLE_VSTGUI_SUPPORT) if(XCODE) set(again_mac_app_sources "macOS/Sources/ViewController.m" "macOS/Sources/ViewController.h" "macOS/Sources/AppDelegate.m" "macOS/Sources/AppDelegate.h" "audiounitconfig.h" ) set(again_ios_app_sources "iOS/Sources/ViewController.m" "iOS/Sources/ViewController.h" "iOS/Sources/AppDelegate.m" "iOS/Sources/AppDelegate.h" "iOS/Sources/main.mm" "audiounitconfig.h" ) set(again_mac_app_ui_resources "macOS/Resources/Base.lproj/Main.storyboard" "macOS/Resources/again.icns" "Shared/drumLoop.wav" ) set(again_ios_app_ui_resources "iOS/Resources/Base.lproj/LaunchScreen.storyboard" "iOS/Resources/Base.lproj/Main.storyboard" "iOS/Resources/Assets.xcassets" "Shared/drumLoop.wav" ) #-------------------------------------------------------------------------------------------------------- # macOS target #-------------------------------------------------------------------------------------------------------- smtg_add_auv3_app(again_auv3_macos "macOS" "AGain AUV3 macOS" "com.steinberg.sdk.auv3.againmac" audiounitconfig.h "macOS/again.entitlements" "${again_mac_app_sources}" "${again_mac_app_ui_resources}" "macOS/Resources/Info.plist" "Shared/Info.plist" again) #-------------------------------------------------------------------------------------------------------- # iOS target #-------------------------------------------------------------------------------------------------------- if(SMTG_ENABLE_IOS_TARGETS) smtg_add_auv3_app(again_auv3_ios "iOS" "AGain AUV3 iOS" "com.steinberg.sdk.auv3.againios" "audiounitconfig.h" "iOS/again.entitlements" "${again_ios_app_sources}" "${again_ios_app_ui_resources}" "iOS/Resources/Info.plist" "Shared/Info.plist" again_ios) endif(SMTG_ENABLE_IOS_TARGETS) endif(XCODE) endif(SMTG_MAC AND SMTG_ENABLE_VSTGUI_SUPPORT) vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/Shared/000077500000000000000000000000001461511344300220535ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/Shared/Info.plist000066400000000000000000000033761461511344300240340ustar00rootroot00000000000000 CFBundleDevelopmentRegion en CFBundleDisplayName AUv3WrapperExtension CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType XPC! CFBundleShortVersionString 1.0 CFBundleVersion 1 NSExtension NSExtensionAttributes NSExtensionServiceRoleType NSExtensionServiceRoleTypeEditor AudioComponents description kAUcomponentDescription manufacturer kAUcomponentManufacturer1 name kAUcomponentName sandboxSafe subtype kAUcomponentSubType1 tags kAUcomponentTag type kAUcomponentType1 version kAUcomponentVersion NSExtensionPointIdentifier com.apple.AudioUnit-UI NSExtensionPrincipalClass AUv3WrapperViewController SupportedNumChannels kSupportedNumChannels vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/Shared/drumLoop.wav000066400000000000000000031714621461511344300244110ustar00rootroot00000000000000RIFF* WAVEJUNKfmt Ddata  !.FX fsz| {r r0:ETckha VLB4 X" 7IZ,p40cE &6GJDDYi]6VSX2L5 tk P2B.& 7uW *?uy|9W |fu 9<ge@u6\r>q_  <\l L D}= MX[G#  $%sK>[ _uI  }Mo2z#/j & H   %(fg4k > c4eJAe3%<voKvz /<C4lIY72#L!߆K':,al`e8B\ 1I,SzNk{s5Si  8&&4F UO 1IVU~(x:Q[p)LI%#3~ Y{h,Z{g $ c *)ٕgnߜ9dj5޷h9fgX@0pN/ARb`q8ACA;<eKdZ0Rn(+ -&,(e&h%\$"h!! Z#-%k$md"!6"-$k%)'&l$+! 1r "}&A++!e/m"N0 _-* V."0V -Mt)e(:+3! 0#-3^$4%6(9B)F9*#0 -|"0#g2"/*)-!/r!/5,))E*;**(%1<#Xp#~$&#K0"=)kSx`fFY u U q'Ht G Af5 / k )5 mZc!u*Q[QF $(^/+~ B&6bW%B%j 2 ډG9Bt'3'ګߤPi*رZr ׶N{мz8ֳ@p$߼e~YaOxQ۝Z ܗ:SnZx]Fw=hV_Jt&T NK^z/ '\:Cuy}dGbB"zAWo/$phWgDsQXyrTGAAy%@W+"6MY#=3~tg%'MGRy#T-Bb eWogDy1nhiZ"c\9U=7QYll;߰6޷,zi>ݵܲNl׫/15*)-#%z=  " -7'-Zf$~ .G!K/<+(3k(&%'*-!1j#3A#3"s3$5$7"4!2b#6(<(K?*E"3mQ8{V3QM'9 c. ):5~M`;U:(Sl8+P9T5{P4Q:Y=6Z4wI% 3*i9:O@[B ^VC`]B[9DQ1E1kD4^J~7N6M3I4GK8~Qh";/6nz +PEE|w/ܽQ#5aNߚ>0SD$i3[9 %Utk2/ J #+ ?u V '!A [)  g% `-t"y e * ] dI6Sv 0  &.},&K  'l 0n^ Pdk l FxW @,W1 2 2^a`6@/Y0M /@.]9? 9['*jg)oF<^e M-U XZ/IYLa `p 2w,_p])ߒ.||N$KΧ޷Ul;JT ]5Фo!dYc`5cz{4H.PwdC}dE30t÷Ԣ'ءƗߡ:kebӇj֤Ӄ/!ЖZU(>r~N >Ïթz%bؘL63Z:%ڻ8Ϭ־؎ݳݪk#ȂO #ޭɿݟi1A܌C$3&E׮% _?Gh8ۗ*ߨ{0k6qlی$ԨE2@B܉sri]rN!0wJ.ޯߗ5lCւxڦ?NN 2;9۱~kLuی6uLu5ڤvL[L aOT l(X< c2$VIא<1B#BZP@W\&?*`zr73-t+b^Jo]k  `2F R .  ` m aS Z4C  w-_b P"5F/N M 0 M(_O +`>  E P<` ( +[$W l|'  {p Jv^ ).g3 h ]J   *} " "+ <5\/A ,7?" +<<~JnjPw.{],H.9k > =6P%a3 +I/> iBcy+| 9gQA uP T (c8Q7w-P*-Rmb vc&sm' {; d 2<&#'P$}.  "@" (G'Ju&!+q 7"; +S! v:)-<(6V7(; +o!U-$2&5#2s!-(5k%t%&(_+'6.f?,=c)9'6J".1''d$/g.*PA97Q7mP7'43#'$c2)t:/->T0A+<'5&k5 '?7#4g (/.;"3*f -5/*"qJ{;9,Z)#5 U m_bo_4QP7RC$fhTuo2*<yES9G1X p Kx / RRgthMD8  iF ' $  ,  ^n 6 z .52", = Zt !u 1x >Dd!7 m',. $"*]H  s- G()!8 s   w  t  St 6ln" J6 c#x, E0#p- T G: I|"/# |J# @n Ki  "p}%0,xXo)'&6R,:=&&% .&a*E;.Z?(%22"&!,4+QZ$$'(*g#5.C /A0% 3%E$M',c$b3%"5#4$54)<+?.'\8 -'Z*$4-'84!k0n-h" 3& :((j=(-@*_=s#41"a2J$K4,#3&"3+5$ 7k#828H9+O/@1#0T$3.C1Gw%#7,%2-a>,< *<2G60MV/{Cy&)5$j2'%5,$5(:-A.A(;'9-BE,T@1#4+.%:.tGp0fC"'l3)!-'b8S+@+\@$04'j"~&#0J#1D!Q0*%>6*=(:u*!n!)D#/%/,s D x$:)&C+$j<&?0.*R #HO_",)70"_,= vH(`(Yv.FM 7!x +  &VPKe%c P?k%   f_a'l~[qQ_v[[|j0eW{/oz00z)5> >!ݍФܶ|%pIGz>ޗXޢvPҪwFQzzGiۨ/[B;׳=Xh* (ލBݾ>%{xۜl=3t.E,0#,[>M߈C6Pibuan@>W w| تe60B I?:nc\a&Q4y=% J[&@u o}?n,8.b~M*5~4(Od/,A aVn&W &jw3q85,xS۴=&,*tڮ 1ZD =GTnVއ4~\u]ߵy){:@S79)T\9Q(JQOcRD_B&+#Ier: [G{+$kjE!O K >J1cH<8Jd(q 9qyP.?  CN YO^  6 4UTi r., G@ /: wYk! F }   /( Lz >E O T <W BRQ&m\ !] j PVGEDL5 %9y A{+ 1/  T| & = z W815I G  ] %wuj#&# i  0&e}e oH !dr #lNRi=|'l OD! Db)` I&; y:V v9`z r K 5 7wvpU   ; n)8 k'X1 ` %F k' &i YDF?5   9 GYE  [ fWw lf ~\= % 8 ) *jE  1(  W G 7 H * z2!N)'{ lf@ '%5 aXgBg e0;w  n  q *` hO^ \ X7%"TrPF )$J!OVd3%c ` kl VT6 E % N H [[ZjQ ;} .L`q[ N `!dR*4@ 6 e AlD'~I~~_ U[D sxg: 'j5H`^a7l Hoj zta$f.pv3a>~mC^5IG/": p`'nx3cTSqQbxRtH(,QNG[6h ?& y:99 f;\?T97Oe-s*@T=m6ZwkT?-&D }\^~.qL}iNmP~mbx duiQ i }e Dex aJ @$ s7$9A :W ba ,m}K= C ; fz   3mx 7 G2MF11  I "| - /qt/   & pa  +xsP  c m ZWp2G0  X 8 3@ VI0'N Z@ J C r f* ;M ` {Q&| p RQ  h0g v (N\ K   Zh Z"n  H g  c  ? kT PRq   V r , ! - " f >  I  F  _    \ P:}y| mAlZ   cb a ( J I!|P  g$Pb G ! , a)b o O&/. . B =r7;_\ eY   m v &/$M';& m I]  *8rS 0 "  3 M T c  1 vY E {  6 c YB = Fe`* eYO   %  &~7, o HN :Rs*}W s_ h  KVaM{63 F 2~`ai 0{e>:I8\|r R } d=DCYGsi W%$k;fDy&1SgsA%Ql cg \]0n7B&@hv SHsby`^}3)  &[bUs!VD1[o;A2m(oLs0@lc9 -[Q0{!Qqx1,y:n$hE,b@4YgK\n^JL8_%4d]>8[Gcvaw)*'p'[%6S/Zz(fq2S2g^!AC46_PD:zlB> 3R_?/yASL|CzELgpAZ:$&{U twaoJ&i'e>Yw(H }SrNڏ%7\\3;$7 g@k#[lE&~7EBPl#)ac=tamy ZyAcKt5v8N?\yc4i5:^b'M0F,C47a)#'y_T aW|_/[E }:H<\oXR|#) !tv~(B  pf@@ r {\9jY0+0oLZdwE&;p.F4w:Crnz-Y_ ;$'R {BEQ;xo M8m^a X M J [>m@Q^ 7nmH;  C |`qm < 0/o :%wI'4b 2 qfLc N 'd  U t/]`j%P7 M~?G{V3QNt~t I'>i#[P v YQ~k#S3B#~w{_g;F~d .V~$].i0RJ74TQ?gC~Seo-u~[Vf )tsM h-G+r ,s7,!{/%tj? ONS{T #D5 eTHt,Y = ?4u;o\~% # [ czG Pd{3E  Dxv$pA K y>r| B G" N  g rE:m [!F2,r 0 B| <  < f D^ B o 1T ~Z/{ mvl"% :% M ) u ( : @ OCH = R]1KE e L  Uh0V!m XRO m.a5Q~9qU + bb,$_.A a F !Z"8(>"%%&I'IX}%S ~ &"#I!H *R*!k!yo  CG "(='48 L9  zI9| n 8&b 6 lgUu   ^ Tk {cf H' c" "w |>    ! np pBa ( \r{o^  * @ ]  H' ^ ?AH) b 4G 6    6 /_i nEN@ ~; Le/ j4  0q t +0 | `I *_ ~3U : I \   s[  e CeX  =:xHS \E [l.#xo Y  { ApU   I )3  <=9 ]  h; HjF K W Jf  8~ k k5Y 'yV& | o - u $ai -p gL\ * 8 AZ+3<?#j  { aI /S bfF6 F uWia g 77l6 N Q d [tL"+NHn"hjD>sW W!Ns y)z8dz  ,:lNL>pk_zQ h'` < 0 / 8j 6    H|[ FV  $L   H$ &` 7 &)+V 3 H 5%,$] tf r, F +HlSE} s iI !26 > - |*A,v  c{ny?tm]v0~J7 "ELCp ;^a ]V\?~Ik8P { o2 H?yL (k {6  8    mr X  qh X:D^ e^wo J =) nL   17  1&_F`#  Zc   o h,   `c O . D )  ) * P ar o QeNr%v K^  ;f$ 4 K +, eQ4!  V : =hmdM/  :0 }(  fERO] FO/ ^Q  4P(<^bB Y  0.Bw8H )@Ct m  _bq)"1rcex  bq > WS)lw- A  OL3?_ "C Lc + Q Rp Y }Z u <8    = _C'+ _!J  Up  wDb 0)wPDk.D.0<r x c!4t7= rEb= %  {Fbm?&`^;9;r> Ipv?_NbW$ JO: .C^<et.2 T(k{HJ6%*ExmMdh5Uod!]k ^1n>7 wI?}{AxZ(pK`.MSaA~OM6/1~I n'D$_$v+)aTnIwzGdT(.0C =kOOMU% (6*bFD!Rd{y^4;V W)uA4G+nsK]>dU$$ ryI\ _!y}LH) fU }n+F8G;}K^ 1't5 <+`sP@H9?K\@I kQNLGa.l?;<7v#qTPD.6sI t(6S$:np$C /y(Nd&7#Eu'%$h?|!%@D):W_}FM}*6q}iVoCs*E[v9#p+86:M/t[~p XHg S.n~#?f^)e@L8}A&1A2]<"`=J?LvI5.90:RQ 30 Jk;N6u Rd?!/pL|5 Z[9yB[;-'3g+.AIzu`F%syj0@e,L3}= vLiN@%|6O!<. i hCSsoK:, CqGz+ )v "F>Y>yD5Qi+2:*XfquR|tX}Sg2.LVf7yIfkdi p}#NP]f,I_?\Nj8\69omV?Ps Y3fRJ<|RJ_u x>~7RHquuU9#dDli:5.N.X614@ mbM5ElnC5[;E V WuS1le "@4 $ \#N zV"/,n0&m @E~Z8 _6E7'$2zv:ECp CgHE;-B#d4yRXLt(7k4PMY*  A)C1H4:S8F V=Dof"76)o4{]od 2`hY }@d@_ad70jjO00couK L6NdcuI+EiC+ # tdP T5[lD|kofRW;}gBkLYWDr;[ J\? : O@vCb30+ L:be{^eAH&/N}>mjUQk<uZ!Ck4&+FeF9Lsjcr`B,1,! q)ND#al#/PK8_E9i6*IbHww_t"*4>7R<uE}kxgYlP|:duYK?~"p 67?gW<X  J~^q] M^@nc6?Av >  M S=v<m J m K  k @ R Z < < o     N ;    P   \  o a% c   '  | , !  ?  R 2 P = P    l  o L ^ L I ? uN ] V   O       k U, 7 . . [    `J Gl T S4  "       u  ` hi x ` 4 < f` ,   #  r  . )   V8  =  Q 5 '  $  =  M  & j X #    %   d ) - uU g K  Cg@8^p=zPiHtsW"Jbf!Dy tJ!.s@e3c_NtSVM  vD[.9eyPR4^PghI S?HH%]L6E+Hvr<Jg\1 uQMrcGD0LRzQ}[Vcs*D1/63 I .p~]KkyV3 y#Mjk}ob"Q%r }elL]3Lb0pC 'opKOw<?Q2Sp;Wme7)1y2P#hYc{ ;m$DR " 1Y^XN$Q9WYm'aO?(pewQ:wsWqj[*wY!Y'l0l0 w@G*6mURtzeTa_S"ngV$jg@jU^ G r\6Tm_512} ep@q>yg;$|X/ /b-A`\H?W44Dazb8@? _8O` oA*Df iv] KFN/d=(GVeU/,AL~8>0Lvn3aZ1m`s P\~}L&DMk[yTq+5mDQ'uM;gL:idM&&}MAyKR@M M\*uX'ao9<(3,wW.DE $_Wkb= ?AH-+,P2Ft:Ug%J  Ac*#$RN1A2*zCvUrI "VYF`s Osx;B/gOJG_ :<1WQ/I_x 49fpKa %F*H zl,Z&y7\PVG~-%Ru xVRzb IXRZ(g\ |Gmy?bR %cFI&5P! HSm7| 9M`<v-fi_2C,x16~|;A<p4E1g`+'GF2cjc*mWQdkKeAJ:"hY M U Q  P &S& c h  I . Z u? vS lP XN 21 4 F  Ue Tt   f e 9    8r      g  * + ' l 5 c [3 y  y 'k   f    Mb   Q d V s T  p W > v [ : i 0 U h  G $  -A (Nu8_B=YclG}u~Tb}x<s-l|9:{W$~FDn}eS_5(I*l~TzD4v7$u-mM$C(-O`@Zf123Y!kvoT(qme{SA_hd?IaYa!ju/xUKi2$Nes6uiG9]\)%R$)p/cx\!:p_0<LOeK ibR8t=gI}G5vFhfUX,a3<D|&%EOyn{\5 JsjZTm~gzf2|'EhG2#Spctn[Z'^dKvkH&r {Ls M\hP7~-(;Rq* r^* `@X?`c b&t?+1':0.<:)+(./?\Y2#8^[vVIWhL5|%sU_h]R+7oas3N6&_ <[lL!$4euC-+stz&o|gNzzKGY&zi2X>e|gUrsw^FB1>6'vUd}>b$0#V "1 "{pbT6G|A#7MLfXy]z?5`_fQ6`oEt*o.9*XBCpE>k S0_DM/"% 7M4$5Do~ex3EKgPyv$b0TeE(Y!N?1m0PR{nP'7'/(b"fb5t&B6g~o]|NQwqqix 7R/duY4SNrKVtpf& fT=  + 2*Ss^pG-We!+1;?<x(3wmIwrwj\Ev$S'MTf|zfyp'X2 $- H}\Rp7 <JH3cl= Gv_}30;DiLr[O^7LIxqbSVrta{~~T0`=[,wZ/oaOgY^rB?qLu6 !P#]ku?  _({M GxM67$)H`-SR&30!E2uXf1 e-(JSB#s"Y2$d L7 H?\oN`4 , "X+FW\?8p%m% nJi@r$y ArnjAf& @ \@_mH}1iV`%~Sw\p 8ljk5SzNO$~_.Z*c/g^9}U~VSm]zxi7 =Y?imeSaFNh ~vei46Y ^Dbz[M)K#tH4xy~tep  sL7UQM#lI(l\#oQs;O6F;(CLRkdaDe85@PCwe{bG-HW3UST~P :CLZU0K Z#{! a\ u[Z@WKOT(QwMSIE#~@x A)'laxpQYF<+*O?R[KkK1^>'5,T-9$zRG\ w rX&PILaC[26"#!EoTff:6f3;N<aXWP(/-Q%"&7 p[sk JnDtcjjy$8X'm c3R,4qBK;Npo_G&o$k(}wX<; Ww;SH)?IamdYwUf]@uME9HZ0V.G60/1> =G17I  R^t^++ )QVTx/euztF- vf2=:w- l.o3[PrZ3q5h|pL"Q<i$1O\5WEr/8xVO )/)U*2.n?,O*:LXh:lzO]laXxa@Ohy"OD?:"v nJ,iU)(7"!`rrdu-T',EAU" ~Ce3+Seq_VzaU]x` J?FdC-u8kOyU~4]':K%o_got7)*+GG.v_O7 t`HmsIsx2B|caB *mm! ULnG04# 12x_yM%5 (Gc @-.HkylL42p5$ tk,7"vP>`h. 989k6Bi?`^qpUXp2Yn%_ ]1kIZn3>HZ6L3;RCl$<A b"4TM|bxwx)28&E ^>{rXua^-MT3B|-^h>wNh0f&8bk,7@#o"o_J?;s&()5U]1N7X,M% ; 3H_P`B<aG`LT|1_vyo[<;3Ox'L\qNq? A4V(S =eej*7InpV<R^+Qk0dr4.6!ej'hvV<~/^N}{*F=\87YdU#xlAvQ%c|m $F5j] <;)'#hiC\gwV94<)ucP8U}[pPb~(y,k 7}J*ei } d3MIbbP0 }ozsoXQ%?Sac'S4o(f@45'w3D=LKKNiS0%GDq&^ h5\!25oG}}bm;KR{S=x@;#DxP$1M:Y&b sNX L;3qRhQ+X I]&2)\e^^3e0ofa)rGaL%^3.PJUP !Cx'e^ fm|l?d]J AR @-+  @4F2/ #VC" FJ'iM_ I6V 8f;w)8}(l,93A!38'/)&]'\~>M?c+Wua'xg>a`z"PJ,16X-{`bezc`z>+4^hYh'>kLDp<T:7&4@Z[nhsF*3Y[-@0(' /ha2O@Uu ~d b     k> 6]& N B     v @   / ; ~dauiHSd_BG$]\n8,n{OET?nwWRq\%(-,A3JBrd(ggeBLT!u|;0#g&<+]vJ19,zXFJ5-6E>2r;0 H F-",&( 0T-MbU apc@p<J[b\]r?lhC_ AI!5"dl!xyz&3Y9Wz"P-rN^gZ5tG$/"j|_8 n {d*Y4<Zf]QS R ~;BWaEa}RH$-usrj|Gl&aU8{hy\M ^lW#:SnUH'yOkT,q1Y7aPr{uC~$UWpL 9! qabJiO>Aq(efdmw.rT54)3sdZL:~LcVEZZUsGhCJX@ga-DS}hQ.|6T wfd7?Ce,xow;=6`cP8&yl]$<= G3$*Zk< Z9ar R%J>9Q$v [[roSrm/x9H/>"xS0~HBHSUa~ ow8:+('wu[^ dSdZVq|~?5sRyzrLt=ivQr+^znHy1kF?Qz[89]Z_&J\dsnA79}A|dih*9*MtiG- ?Sw CW\`tEbtufC'c1daO'"fV3iE8-'^H pj nK6\MC,!'mwyntP%9>#r^}yLE  |pr9\aeow ; >3j,o7SS-< :A@D#_'oR sf~mWwryh|wcp3n ) Uh <'WH ] 2J-sY&).P)5+qkXJ# 1>%,?$ 2629Y#UM iVI#NX)! $zrKXOa5Q7CYZrUJ.;GA&;.XOT6D(  AU-5gm^!g1g/>3(1W 6r$_ J56QYI:5:BE=CQN8+V(+[DH#xA?>?PN@?:=I@&rlcp~@;.A =JP QI--(& efe6BZG>}(=E';!,161UJvsdty,Mgj!VPt{$tus ]   *7#,!6bcwSNvCc-Zw1W`|z;hf"QVM:~AW}K(PY,umX7O$%VNy8@L &D)8U%JBOAYiDuoj,P'G[PY KmzG/)+ Lg 8` =  l<  x t      s M w     r    q  L ` D  P   S A  n 0 ' g   _ h   8  } p nn `C A + 7 %   P mcX T %   uo   % 6 ? B`rF|tE 9ZmWTo^]Hb*LwUC. T.nNߕ fp k;eV+3I !,)_",?!  YF/!`%  IU7> g M })ރOӽL!=R1^!ߨ ժ˜ƧZүȋ.zW&JG>6 mXς"iz7eӞ<؉7גƱQ;ʘV41ImޥҦٙʤ$y3"9%S2>DtL@'u݇sZFAlRӥsrK}Ս@ݔː>g2D60p & J 0 a1y @ RB{_"#0T%5!1*&Q) &5+>++>p,>A.@-@*w,4?K*;)g: ->/>C 0C/C. C1F8N[;T3$L+=-<3F8O8P)3H,U?.??4G:zQ`H&6/)7&<5&)~!( 9* *T*B(e"H&sp  *%1'7#<4 /!t0Y/:%/f#+"H  > jr[@@  ,k#. ~#^("t dS X d1 { W  ?ZsK*%bw'}aO*mdO:|մ`DD٪Ԥ5Pܝ'FЪۈHա5E̲Ag2mBܼ'΍Ľ޼ͰԼd.UȿY{?OxKn2C!֬<b_kT&ITֹlj Xנ$7φV\qgɞ4ߋפ܀2$fي_FU׶S؉R5bPu80~yH]zx _n{k+(S_309cTf(`dwyQ/4*c;Z#Y rbF.I,  -{B\ *8CPZLO..-r'<!Q#b@rhA  q.]% F wOm4U P  /wk L; [IvR7oyDb,jT1!ۨEqTOԗiлN˖pm\AOԯ{$;$Rt 5сλ-۹tY"GA[QѪљn廛6V!-b)/=(2H1H.D,gA)R> ' 9[*`;d1D#7M38P5Mc1G.3B-+@`,?*<(W9(O7(e8(8['k7B&:5 &4^%f5#3l"1$"=/%$1'6(\:'%b4'6);%7,!H+&~4F&7z#E5,/?V)#!7+c'n7#5@+#?&+!S/"y2 L0E,+-)Y&B)j^+S)xp'Cy+,t*.((, P0'-[*p)<h*)M({&b}'6+4.o-_s),!$h$X'+({'*t-&H !w&& 2 t"Ug& i$F}X^Y!##|""dGAC&( GEkQS #(<$kg/D]"^9"& Z/ihe"J'|&#cq3q ;<  3z5  Ci 4 M 6, A fKX >%  % L \6A~Jq!Z\ AZ oJ 6*X+A%k'n /!9. ]$ ~A"S$`- 0)T \ R   w( ru5 &2 S 3Y0MlTn ;MIk=*~)PX"wd &t\(-'H8nvJn?#v!\ܕ<؁_ѯ htШDIrޮUڄpڴޅԼqngٔj׾ā:[ Ѷ~`Yݢ4in՟ށԘ-Γׯ֨_zʀ{֫ײW J$[֭_(u|ׄ-ݴdy}ocݗ;>0 2S\!a& #ajf vXaBT ABQ3\|4T\u~tm ?yE-dAJ V:J.*H !y|  ~+xP32/ a|_  dd'8tu ,3?-A(sjEucA G0?IE[]ӎ̠Hs! ;XD^ۭ~4]׭'%:Ɵ:q̤Qq]μF֦Ȟ҅MӯÛ!RT܂e̬}թp r!7oʹF嶍ۂ!ݝȻmYc+׶B/76Q':dރPkR=< Y5u ގ9x?b$ssi9'=ZB8'L! /2N;f~ qX( j*@a U^  4%w  )U$E"#gQ:=*kv!J!8Aw  !! .%j$"f0 !$D*uY+%p$ik"(x(# !E /a$(kq*-@P%g Lc \ b)N(\02!?w" J$x" flB^`| !4 `lE-B")^% yVfm+qG+`^b"$$'#\>C&eD'E~/fG'T'&$'6'-2RNX82'J0'| (pK' vP/:Ml(?B?$i*b*] _"j +B" !:V$&7K-zp  I:z" (!/g%ea z_q  u?&;]+N_"NO y b ^%+W ` t SU"(_!SK hhm.=A/ :tfq J"FWm  u mV It ( DRTUSEXzrF*%F %C'y#~Fe$h,\.&Z97 :#!-0$!""F j#=)$& %C ,%"2/+V =7hp%!y#P)++u'FL&:*0,")N$0"!=-"*2=)"0IP+"$2*?%9*s # r+4*H!"&@&M#-&B=@V '&N aEUt#dLy ZB,*M- Dc  !!q Akg i#Q\ M: <J4q  7  ` _. a&P G $ #7d%&?A M/\eMQr"W\(Be+Nء\| /KH?׵ e6C:4y5PGˀ zև۱+w<wip( OJw([!N׼؁i۞$Lj2z2ʼn3֞|ϣެ՗8]ʙ2=XB Dԃdʸe(Ե0͸f@̴:KÇԡ̓GKˣђN7C0ԗƣϠ İ)|ƙu0ɶO߰q_ȤG&dzՇɤo™ĖI#їi#" ͨO`LSU̩Naſʺhw@3ȫwkα%#wƍ z^͸[lʔՔ2@ɇEй˽fҙ>j,:v.Wp }~ǔԌ^KE΅ӠJyɁnծ+@-֛YeCj޶v֌ ̏ݣZKmLFҁ9VtB[s=؝i'-z8eL Vc>Stet KT#DH) .9md dvP 4Xzc5xu  R! I q l"% p.!o' +-S _~",'U GP &  3+ K2qb#(E<  u K;b&T(> R mrZ!p*R)m e [G0&K]$v"2>*28#1 M #!   "+\)Lkch#$X$D"$Z#""s,R__"K&"^2 SM,$ '6%C`It#$"cbx~  c,H> /c[kH4 Z E'e)q.ucWR(q_y E" 7 i gn~&MB6*r:6 "6l"Q _ At @ - - }$ ~c ($ %C: I  %  T &%FX?` ( >$b$ JV 4QL  M$ xf  7t K 2 c*" p : %g "$ ND , H''`S ,"eq "*|,f$/'!##E CV  D%#06l &9- i @%"Z3 G5b*(&`!4U'  ]i" ,"3&,7)&;,!c<N)4 E#(3#V5t)&u)),"!t4k2a8$!03 .#.#5!,E!\2&,+;$%<5%?8O"20) E }"7*:/nG(C%.' %%1 0/^% ("#\  } -#.#~q"  G9k!q& _ #&" EE$" .c |% |Q1 @o l 2 H  -Jf&1 C_c @OJ7{`0&BXFWOlOwi Sr~2 >%I#h_"ZF pM=7 Pa KR&.)3T`ҺQ:}rxj$^T't`YoG;6tߛIHiT*+۞$Xlvn/-^Zݺ^nO6"H)`A{8HBs9+n%_1-Vd`dZ}o%{>)'X : ^$5g 6v,N /,frNp=V-+8OnR K9dp6p/,mKJ) J0bQ?&.sodq8m|b72G{Ek}ouNZ;2DCXq,aRRܚArRR[O^e+j0a2jM5eMi">ހN@ [<ٸ@]d CJD m .5ih~&$ُ^?]H >{e=z$K5 ep ta:Kt 3 ?ie %e[2  e%+T K { Q") pQ@  $ 6S&]G`g} Oq4) 5a  Fvf  J   _  <JZ  U @8 JW_P}L *u# %  6xz zU p - qm5  A` { )[(z , Oa@1Q/~O  \5Mw; P | +8 nHoShY3.DPp H !z`Pv_tftXE _ %d1c<^ h]ZNE D  _2r va T K !P2( Q 4 fImd /L F!Li@j2 ! y' r   8l@7  !   F }/ Fw'T#Y4  w m t m.  Je :BXk;g%P I] <  /&z > tQ;{ 7 t 6&nW y {Fy 8] XP pM{SA8y]]PHjn 9?x v = tZ))K 9ff1*AdN;MIwn'. X5 awi   4 BP,H} N   X 4#/  @.>g=Q n ?pI8  > %Xkz @ ro, } x\RTOY   Rd#7[lF  y i  C  ]  I : n @   u  <x co  -  F   3 ~$   / L7  >  E O ] u y %?d cB,   n:UJOjE |+Hr    E'Iw-f? F J0 IzI wDyWxZ~<@a!Pah(QlSZ$4 'IQC?e4 .W"3w=1s2fAx%{]lv10mt^B0RY8ln i%oJQ/Vn2نx X.j8YK_32Acw3'XMm@cXc$S cs%) q5>ش{zD\IjJOn/E8_z:~A$aLD2ozlKkU=f- m_=BBm~cR$t^ +7SXkPkO\l1G==-qa'GUedܯY >9%HcEG6r3r3#pL%(/Sh#7D/ ~J=NnA%mcMiI/| 7[PZ1s<*8P*i*R'1mi":/ zv5"Vc] 1P,$W^s\^z`W4ArC 6gZ~WH/$j'uJ{<pl`i ;1e4g_.VZ Dp|&#>  f ] +o  y  h  } 4 Vo d g  2 7 i: >  1 b >&E T V- }  AU-a7@Dd i =m l j p t nz@ 9j <M fh   hv Z6v  H   ~. M 8 f u6 y y    l F ,  RT Q E k.  9l /BT. uC KT  [O M ( AX  G  q k z u{ G \ N   5R e c  % 4 G   s  @   C S: |   t C,  j (c h H v,DT   !^  ,BQ\   F DHc E X L  B d  ad V P #{` !?j > },P Y J n  nf 8 J=+3 u> J LL;de1S CB?#K jbYDU$% /Dxd5#[.FB v4 $tAfeDg@ -Vcu.#rq{APnsiym.(50oEN}WT-{lN8iy s%,?{SD B4 jSG \cb+8y9  s  I> HF/  Y <1O E   y  41IF % 3  } & }  N G}- [ n  2 c    M 2 1 ( V U Nl ] 5 i  c!   q  /HTjYJkn  ?  DT  5 @   I & xv Y     }   ~ Cn?  [ : ^ g >    9 d  0 | ] 2L 'v RP Eq q  z - ?   42T x " |s;  k(d T Y > b % c w  F N z o   W  2 dp r  ' J 4i w ? O Y*G m  C I  K  + 7 q y 'X 2 U ( x  x  WZK&  Q o   XC7 N  a? . ) u5 f^J% Z _%!2 * : 0 zi~oDpK c8V&f*3%?a.s<=1Ux<-{#]V+1~w4T6r[omB+b]FZ%"sV7P]7(jg^Y5O]G,R<:jb-2(m"0Vqee[M}Z ANb3;41i_oJ DhNQ,!gx74T_a_+Ah?1C:D8W A#:xO[\c5#/ !Ke`*ZF_#MqTmQ*|:p]Y@ IO[P{2%5Eto2}Y >%8vp %]Ci 5K 0R}_`@f)rVokuhK,q0q bI(N C)p%cw.2'6AyH0vOHj'IlR8cK7}]?63V.s-go3SA,7FP9n*Eq< (L+TVaF#A,TRedbT\Vk{Q6oZ%R3P|7TW/x:D6 &yHoVPpl\*#L=p2*+/6zwJxM.aft|$GbQ DFyt6"Q] <0fW,mwvGCF2bA)$[]RE`-lSU# ^J+9eW(>Nl Y`PyI`1t L, bNL'k1pI}>r^W>tJ cO62V#|q!u[H    1l   > 5 J G u} O I  y# E '#    "\ k Z Jf  nM <1}jA(vZIm([JccJNgLh\Wq<J[ #UOq76"t!?@>n,OY3  8;d[ !6 R6Jn=M &SWaX%moMqj@x~vU  $[0|  C  8n  >  rp < T  , cD    7  0 9  I  B s QZ  N\ a u2o V[Dk}tCVRD/  Ur=[qH;} Uoj,o2BF.1Aop<#gdg[ht1 G1I[NMea'!8*0y&'N%MW oWI<`G"8 ^qpG]-FIgNydv&5Dn YJ/Q=e_!^Nk2;~m@gV A 1<U:?~NY!Mz,cZhMs'7H(owt8au uXk!xV! ,Dm%//&q/o"OyK_qg@~g<+R=G,V_qwRt{T7FlIHz:oHo}yc`Dp`w#{"SiFGFkR> nsP4@V54Eu~zGKd:m|z<b<U1,.XD!Y}ZikOLc1 >KHz_Cy|HzTAKWJC{1|$jHMzPIUc dwj+ k%O$2w"Q*Ou}.de1/?25ylWK 3OMvF!kKBS(m+Q~d.[+PZD ;Kvjti!07vbETjyP wx]9jyD"[oSR , wOI&otPZ9G) L{:|>x[_;F Vfb<YB )kg +:/xKH}Y$3U^>t]Kl 6 ,AV+E&.'l$g-_2A;W>V+U_GNH+pf.AaeD:~>t(]qHP 5 LP'HO>dCSy8'0S>TE[i.D9r@'>>3}COQ&A7mqh+OQAh {dt/AgD\ Mb{2[c:yIwP czctq[HC", !: z35$yr^VhP,(5j>""<]uJ=] g >NC;h7RoEuA[Zxw$0,M `|t>Au*mAjPb9f"NXWSZBe38,el?47v.iJq?V;~0b3hSJg9Lxeei"6G{SKS~A'^VNX: BYwkb6 q)<bl@|Qx f N?9nKP`E!$wY'<~\2t2pMk5AsB mH.k4 b>6{"_ ,QyV&!"MSbA0O.MR; l0X;)BY 1YLIq$5YAZO15.SDVi>]I#@o 4!Ma3]c!Yu*FE,9% h;g:%(2l)sx 8!@5*",TSMc?7d beq48ErH$oCz]x[lfcV}OB^<qnoX\Y[tlSEXhx4A5G_M9 [ut:lP\E omG3<j>w+rd|5`{b05$0)OIy8 2(v= @O& }'m{@ IU=wY/?`/ S$i>I SXUhUG^yBo#XYNTsUA]Y ES *L&) Y* V5X]t'="j X?M5c_c>*'g@[uV%p&/|:X%.3C(HoS` wvZ/Nl2_N@9V";dKC<3|dLaNi54U1IEj}`ifltm9c?J; oa:v4Z{_sUH=~T)8V :zi?qwo*s{Yvz,|Fwk-I``K_.XJ5:f$2h.480Y)bAW'B+XQwpeb==R(%q =H[X`@-NOf+fjgX':o=)0*"- \vzvEMuY"i3t1Y9(^hs{l-T#23;84^dDkJeLxl4yKoU+1.F4TVfdR-eWf66!C<StEpq&eZjxyXdmt.vEpsl-'YP ;)*53Z&To%_. dBZCD\d[ `p zRA3x)Lm[2:x$/#h@}d;n3jT6,{UaUArE^~iCcO['  G1WIAq m980hu?)[{k7D 4E_AXBaG2C@UE;5YNb=ZUWTB {,@ec7^8^rBJ<-q+R!?ax92[8&;db7 > d iB o!qR7OTVK!+&#KG1D;{ :5Rj ; N u]8)M@ i  u L f      ] x   L  .    e   k  _    8 ? ,Y     y  T +  7  U   0 * & =  H g  0R s f { b t   (J  }@ 5  Z *S L x %# K ^;  i  @ K b   e F \   9h  h - l Q  V   o Rc t @r Ne @k Qn DJ    C  / 6    N 9 A  h m V wL * o  Z F@g- /I *Of]I.KT\y^picB v KPAewkm35e~9.|K1f/EC5hxP%b(rIQ=ZA5NGY|k|`P\Ivg03>m\zj5>'a" EsI[;\jQ_|URDDyp+v3\-V(BOrchbqT|Pu/)N~M%! S}ntiv9-Dfdb{C7wk -t:W`~E#_lyjs*> TKs&.Z<9H.4AXLY{/;Y%w]{C.oz <` L"V!nj2\5 A=%0x3,i=K2.'Vk5|"oX_X8dhnvS7Wuadn\QYl._ 6X[rK"dxKW&K=v::*s^~fFV6 %,#-A\c'UC7$r%#~ o[f~ | m;YO.E\#dr0AkrgU(6J 4J%.u2NI!9wyz529N>+}zDA u q#0!+Aa%RrlJ%<*]$ Z/?CoYh& Qt!dfoaRZUS(p CxEVA;K{ypb(bB-#4@}v:#:7Co_ / AN9!w,&(gCdd.%j+ bKD$AGLBo Sica\g!YamQD%qh\^B;1mDvJJR(MA+' y`Hyp)KHrvV:2%z mWR=xXgOBnmqOy(*#<3!D_"6< u@9nteH]2HoB6.RN!9SN IOwm[QZn$v4qAZdm1I y/qP#.8oj;XQ`*d#$+ < A2,4buOX{V?T*% 2[A-I~S0Y J~?gc}r'[E%R<Hr`5C:\iwslu>[?G/YSVEelKZ%_DYa,*yt9 8 88!fusQ>004U9tMx?Kl~#560 ]^!5Q\K>JWYg 9`VqzaR9!lWO 7)7]vHaU6y,.[O4|VAFkkiQmA     ' |D V X        %T Bw Y c D " 3   s N P = *    9 z  l S  4  6 e B 9 _ j i h K  y  ? 4  Z \ Q =        d{  z 9 J   T $ Q v n K U  >   R={T{G5&u`rP{`i%=o/mwf)en.9Sp8OH$x@}(a3{gk@-1E!Fz xx/:M#&m1E!w_SnflbQ3S7c%m2fo{MW2+"H:BRFWyreA%% ]]d!r47|j 0,ucd)-.X C}|O sV^hkkan5iSJ)b@xduPwDUN]jp65!n'WI{wr|jPj$[-fA~on/fL]J>Lf:?Vb* {Ta<]nvKxtxCqR0 = Y"Ka"!)B #X tjE9W7'F'PbL &cR5Mh5MVSmjiaJ0Ggzk=TUu4qbF"2:3s]#U 3:00/TnuWSvz@,(A9~pk{c]@mHT0]uiar{pYR~{dEWN+=O3L"JtgxYP1R5Y'n.L7wZ@i" ,fpc*O)>"" Xh`*+]/n-g}<)579# ~Q7 r ZO3vOO[{n+#v$fI{S,0KaNn cEJH;btta:hFfc)5;h-/1_vbxCn 3*omkdbl`BIa`EUd\_y]!q'aJM,Pn :)DPB p/lmB^"!036LXp~%;;(z68'fQoTt6BsN_Yv8 `Kdjjo^,K+R?@ ]!FA/}I8C[JQRd`[@u8^o b`O+q=]T{3GvxR4'+2p66,:DTX~Cj:! aZh\(A>Jba=5Bb6`+a!u>o`Ad.n:ZKcL #W#I,N-j)|,x>6ybTG'P?1RJ#E!_3YH]ilo[)o.6P,|-Fq_M/fH)TFwUV^X=p%;:C6P,9?CZke`jh^45zcQ5R4O-w A\i8oEy#/!$Srr Oj!FE!8% 0ob\ ;s}aK;.2b EQn%UG#7kynpXHH@U>iVdPA* a[dv1k9K)`ZfRkiTQN!]#GB]Ni ,'CrjZm,=))L"W z:.A|AOMu3u{-t8{@NbU" *R^nV%H|+`X"BC>X([1_((-y,Q`Y$#MZNrj-|Ft@K*w^~u Wcm)) bqy, 8 |E2Wv{3w#N'K0,@^X0'zTN\sxOf)uDB"J{A.Ic3J'SA40zCW>;(D*=eU:v2yOV67 "rwgxTfkxoEHDo/. "&0*OzwAW{jk( z.4x1o:R? )C;1pN [~^t{xoE""7iJDVZP4 \%Fd",DBPq@*3S /NI~kF]c~L5n&B3^D3v&@2C*,eC6 w/,P*`gs0, 9J =C MS mu  | {   ? L D K r < U W O I 1  % j 6 ]      67 ->    0_ @o ?j :u : 9 ~ C . A 1n M 7 # J x r O S a ?  7 i- :  8 b a ] {  L    }  | e i   i    V P  i9   \ P  l[  { f  !  G & W h !   P 7 b ?k <p 0k 9  0       2' ?  A i    ~ V  G \  O 3 H  ' jmhuHyG]* % W^Zp\7(OL?'JZ] L2{eBcm VNZDZ]_>trmbW!J}fr\R?!(Q8b}fdO+ re4X<~:D^6Z-R$7/-G "F-FI 1m ],qeq>0* jG3YQ ;l$pW-U:DF Of4hT@<97I*Ygjy}OWMZM~wi9W .:1i*a$2'|uet=]n.B60kafb7'[nSry!dw~sCNbew5A D-}pApu5wGvLX-QC8HQ6x fpNc%Z7:)fQeiPm Te y r]TYF4.3+ Z T?2m#eFTCpv|t$=cbz0s,D%i PsJ)u{{e.xU]Q;1VzP~.E5FG sL &IpTa} t  B=  | -  : " ! ^K     1 = h  2 M Q  o  > & w [ E !    ]   l L Oj **  > 2 b V Z{ `H /. @ A B E I f +d -K [ %w T} bs ;n ' Vw : N = ~ {E < q  [ u z   ~ y o q ]  *   U\ R X  3%     . x ]n q } j 8u L P O qt>L5;l@ ].K8dXbnFn7vbUoX~joLd>{ag7p:u7UDtZGnP0t^U3 C_B|P,jr:A%'Ku\E~<]_I/b8) x5oX`dcv/ TuB z4R. |fA0F1OV?T+2)Zt>O{#|[ {ba$.P$pir c#H)+36R2hLjx]J{Ez^qVbL1:^9ZACJa51GFZ.`B-8?N 9z @&vL_mH5h0C^O"DFY'2UaWi)Q2Oe0To6H DP`D^/0W*G?p'x;( Ptbyb9:oPP{p!-M^ 8M  P l 6~ u + j   $ < LE UW y   *    s | Z Y  # ' # &   + 1 ! 4     ` ~   ] P > a J X Z . Y H [ t   "  f , v ^U  d 3= ., =[ 'N  Hu 3      gi @ '(, jcyy*+%a-} _/!vndJD6%|1gB#a0jw4'G 9YIk']|rpws`l.AF\H28R\/ viPp)pL8 xs\^~Y)A+)O\Sn,%'J$[PPJ$v%' sednwpnqE5hqw0{IA'8;}nRcuwR Kv08 *vtEbx8qAy9}M B(&6 ?<x\9 ipF`#XC25.&;FI'vxbA dmbWwmS(r4qsLIG0jQ]sz{_-^q{NnE`zC@l?o=0U>wxs,o%(1XP#,xw +!_f 4NcCiDWkX(L3FE1$D fq]ibo=i12'7N*Pqf$'gU?fM,>7x ,=fU$2F& v1? 86bztw=L;#/mWB |rOzWjg ;[O4!&?16G R]-s\W[O+u 12 x| {*x7%H)IDpj8p/0Pv!g&q$d~dF*%(!`zp<B 8=HjBgQegD_BMCS;`?z__3| 4,'hSA2~iC#:ZWgn0.z\Q@9?2v3)MH.+CH`a6k!g-i27IbM .&t & |~xi08T5Z4YJ~;15$zH$Y2w+  j"vt=kuRswZefXc=RFNZcN,r(gVjO-'i5a7e(XDSYF$O#/*ZerD :) ?3[d_5\'MANVK8_Jww,v`gkin| E]2[1F=H';73%-"xs/G/ -4:xMdlxgE0,0;OQ~-l X^aDKG8[ /59K8orFB_NWPY*e+>y"|\\zR u;`IWsP;hkmRMpacI]ciA~KXuih#* & ,W xUXqp`q\;(c-pcLzmn|xxF!7WrG)[l(hK#\Y7k{_Z(A]+S&P]KSD[(EHUHM C^sI-6S)f' 6.yZwc]/[-m Rf3h%gP<Q 1 7 < QA LC J' ^O   y Z I` ?V 6P 9M T]  f D` 9f \   4 +  JZ |~\`94J=gLf>.dldPF/P r]sMx2T|ZX+HUQ 1tM12Ad=q%9)~k 1 RPx_foX+f!C8t5 IGF~Qn)*~a%w(Uczo[I0aTea% , ')!% 51PpJg<0T/vfm|q Zwqp'eEbY'qRI"%JhbRFY m!b,JIgXkz6}r9J vpx_PfA|csla,&!,  !415?2b~&#?:mUZhl[<]$A lN;f!iM@h+!Ob3_$UHa(hgbjageYT7/ ;C/)P*b4?F k s  yGQ% vlr~p? .63!+Fj`pJxWy/Gsdel Et`f <W8yyvKJG0ylQ$!4p.gE. 1+ a@ *#w/+0["My#,'GS>+Eul'KY"edYY-S GFAxFH}>AOQ$0&0w3]ZMCK?aMqvu~?d\dzyqn@ ETJ(P4/O<kbq@/gFomWVE5AC)8n`?Jif5F3Gd eJSV*>ISD@:&~qkcSMe2nIS)DtZz[sc? =!B><}]| #CL/aV6qNg4 0coP,}wc%-#@)b(K 7HB qn-; mI   T 1 E v#} Oi <+F$=H  i~ ~+#@ F,@,$O fU,G!U!*i0%0A d'#9   | $c%,h7IO{ErmHl7Ik]KsDmY6AW-G":Z4CS'L sjNJMًт ])8.IO6l.Qyk߇ 4-zFޔςrȵЎD̈-ͩʮjƂ쩩%!Ϧܮ63Ӈ(Ϯg"MLR]Ω#?19܋=mk~*%?~zݱϰQuXۙ?Ƹ!m  =`4kea!Y!Ot%\ (g)`)Z+ -"K0# 2#"32$"4Q%62&)7&8& 9;':(*;(;.)<)=**?*?#*+?)>+A-FZ0 K3P*9X.@bUGmJugHt?ok=5[/_O2Q9([a;x`[5pV._F2F;V>] >k` ε_uB1@1dTN؏WK ixOۢhۺ/|<n2kQE٫zܛ8'/o1'Iڏz؞B/I׌e,w}բYgnDֽz38<׽R׬H|_ 8DM[{ݒbܟx=C^?`PpF!'Yp]L4ݗޢ3–s ΃)&k5U>S4Ͼ;дFW+Olhu)dTXjV F K 5+ R{G |!#%N')y!N,".#i/L$0;%<2N&3"'4'5'V6p(7)91*P:*-;*;*+<*+S>+Z>+v>,>,?,4@|,k@,=@l+?*-?*?q*(?)>l)=?)=O)=K)= )=([=(z=(=(1>)?)@+B,E.mIb10NO4sSs7X9u\8v\4V0P0M\1Qt1T/T+L$@^!7"N7$;"8"7&<'@$x=p!8h4+f&G(O)#N I - 16[`~m<}$smXcӪj D'J_P{ҹwԜR[4Ǒh)mQO8wqBVdhP0-5P-s4K[A$ X2hLqO|߷qPl uY/(?&.K3ݰܑp5pJ|ۜ^'7xڧvיof8r܉Wڑִ n/ϿkϽѠ=ݽz܁V d!mڙkBC_`UTsNFu݁dX0;K@u0r W r C h m-7)D!8#%<)t+,~. ]0!1B"2/#_4?$6%7e%7%|8&9'C;(G<(<(D=h)>*D?*&@ +@b+At+A[+A+A*EA|*;AO*(A)@)D@r*@+xC-lF/HJ/eIt.H-]Gg-G,E=)BK&\=#8["D5"94#7#8!.6Y0U*&)')W( &Sq'w'"rphDz =]   h: {[ @ t { ` Zs H z+v ~ M fN  ^H 0 , O  HF:R!,n1sb6,sWEi*!9"Qq$0'3(!%P")>\2!e yfR q6 X LbXGX}xx?s%Xl#L BCDަLpndx(vM1 f:2;`gGh%϶1&Vܸ͟p!z3)˗ے˲:)ˏGRɅܒ~ۈٰHـٓomՑĞWφp4M:ʊسPS{ʷR(ҡѬ ݵس9Z^|ޑȌ3tj^vwLx,'& h c?H27 2g!kZ@!}#"$(%)N' )}.r /!G1w$5k'<<'>V#T9-u.&)"$4':'^;)t=*@,fD-F,NG&V@ 4"-C5-$/!'2#56$7&:'='>$;k! 63,1a,($$(l*MX***3*+*F)(Cl'Q%# #6#{"w"_"V"c#!D*pW7oh:!BX#! u < BMz $^, l,14,~$#) u_O@ T+o' :&)@v#B9-2e(!$*7=: VC??B K 5_[N/3ߖYh  FCapئ߻0Gtm vZHj[_&Io/ 5g`N9"ԉnѹA_w؛& ;Egհ@¹Ϭ֤K(ċJЏ Fޫܵ׻Տ<µjBaё  S @  Z TR*#2()G%&qB % 1%EaO^*\T*s[lm 8 j# / utmXջdʥ`Lhecc>T1PSc`cαmµCv _\L ?JKT(U߳n~ [@ Vx9cv 1 ~ = 6.19K @,L0gH`JKMpb7n4>D3gfS|PckLT r{^h_ o"   J 8 DQH%N+?*&q+%7yFN*~#R#BK33j I_q- Ea(#b2)<)$=&9l#61,L*) &v$D$Na)%F6)kB$qB13  \ h&y00C6OD:R@6LN(5C[+1 9 Z*;H%?8(s*3,L,2N/  j  ) !.`H+*=)u" e  +&;+&-$*(*%d2/uzP ~k6  * Z ;l  4   !u {K@$ei&L%]* G R1`^$p0E+I* !W0G YL j?t<0 } pQa-u4IQ ,D7bLNGj ܪ-* ocwP, Mt݇< x ;Nt=y x>ޚSu # [ ^CJg Wy+xq# 1 NZ <+iA H+C   ^x ( s.:W) K  e ! N *0 +7 d #&# ,b\ | !B7&u!3A#=n7b * Sb} >(" <YK$t&ZV"'&-<3+m,    }Db>,S`!^%% )1+k' iP>n'k (" {EP!dP v12jl6bra!PwP7/L9ɬ*ƙag xQaVdTޭ:=ވZ[`u[ejX ρR5"BOI`Y\a _o<ߪ5+u   ( Y#P+DuBmg7v83.-6rXdLe_3Ca&GMc5r#(\:R$  -C 0(4 g5m ; T  gI 7fw)$!z  gNgl_\ ) 6 Z . j ) ; eRMf 44r $ #}up M   vCA 9JxXVgwwI? s b i  [ ` ! F ~*(#A>D5bQ:&c d$7 {xUxT3Y]"(b#(H;VpOmt% c >e,PFna{\ Z', 98 M.x;  4x0ekdx7E  4   rb7 PQ h  A-   n_gJ m L c   $h7}/o K   r+R fd j * >!!C/d!TK|9 D)-N"*"z }f' X  2(5 \ 7  B?h/ +   # w.   y Y ]kX I Nb %H 'XswO' `CDQ_xM  :#6Q8> v  E2~-^le.Ax{ N={G*q wiP  ^| bv  N %n D K36$ ! 9b ^7G-y4pU8@tOm$1B(/|2QqeT]2OC ]qeI_!V|\[{>!9:0Q={z@6.1}U- l_KR EX( p  ?  ', rHB6 Dx_+'Zxt? & 4 ) /LpVF  ^$V#t]ES B ? N  g)zO) d 9    ;8k*wQ R [ O "  ey i~(#2r 03 8{-FX   b0 pt 3  O R WW N: E> "#vGWJ J cj5u+5{u  |&T D\FoOYu c //$,]L>9 ktA=o!_k_CzWb!zXVv.H;>* 7 8NZGٺIZb$#ޭٚYJk.rRY ,Z`\*D_ߤ+bޚ^Q)U.VJ->L/(| o%`/r`. 0rmxKa .$Q!  1{T6b `&} c  =|2`qhN2G ,   - S lPh^DHT{ i/6 K | TC EH( f-8   R ` H  V}' r:P$ ? {zL5i  D#d%q *F*)^ U6 X($ e c ]R}| K  h3tF Gm?/hp  Ah^Oif`J<]/l]'p6kVl3%i+7Q9idzO+Q92jjU?L!^rCQd*f>n~l.|,}lo6J"maww*"*ِ!p HQye '=VZKJ5v^yc j :Gw ?4NE o WA glGc)@/   U-%S K+-" ] .  P lk ? URM8BJ"  SE yVhR  ! ,xckv# 1O &Y=V?c Z' GJ=B O Z|w n zFL:  . N8 Di>M* k />;8~$ h67KI   &atn x,}@1cc kUC`=OmlMi. 6 r>A+]z, .GyN15^ 6 SxJv"# =03yAg`pMw uQ4#&LY0 HU }P^J۱ 0l*[ݦ'~wv@bvDzF'#t@ o M LE,53 R1yj# {  ~  'i) f@o KKh { i J* : [{ { ]I F  e k ,b=!" 8 X Q  Dz( 5v 6*; .+ ?  YI:| |  vk <:x| i !   `& v#9 ? { ; $ n=K2 ^C?YO>o +AHG =^`0xWx  ;fp  w]wD%9Y'~INNqJ{X5NDa ~ $"hz(~hH    - R O!Qj [n    \ gF ^ j TMp s ;[C o B wb |P ~ DQQ,%~Q)b0n5@Q84fM0tph6=o hܖf D.;1P]9K@ S\ھs0]Kx 6O;QSoer.HnSIut~\P` $U+b;UMq H29SZ ]ES g ` #kj"[3Xy0{ ) ?Lt  '+ )}N 89]Y -"3 ' 5  V<|zw/A%:c  8`vD ` 2 Dc9 +U^ '5V~ o98= D.D s  o 37 , A   I3]  iA 1v< ;D .B2q gQ >= -&P9O6 zl&r l!n7 V< O T"jm$N#[X1Lz8]f* Q(TH$ wf"Q37&{NC] RWaYh2+{;PmihN<7on 3J$^%T8Iwy V})߂sY K`453@"|ޛe& *5KLEU;uIy* > ߻i\=Ey^w/&a#R/(irOwddC'rHNEX@$131f0L.l *W> o , E  ? cKn j/ FN}b_ /fIw2vukw#:AWggZ?tm Q1=lc ? on [!qS^b  Wg:C3w   \H9f={x\Cg1Q$!fAhMwXL~IU){GV>,fJ>1m+u y> 1!,ZyzMG8!pG= ^]3*#s<7Al Niy l `CT$ =  G: 8dc_S.5]qVY:  =H9qQ d { [ u3]^l>P)B[id$qd>RS? tQ'0YLuJ+@SG ) BZ="7H2q|+bdl|$F_cdQk$8k7iBC-r,8`yHQ9.1ls(@(V$,*#QgD}MzxfzA=3tfS)nEz$%mwn\WF*ytuNX?yx~?9GB  BD  t`  L- * &FE ?O3p20E0 j   U N}  t !%6v5$B,Yo<%wV,&t1 + @~J QVAtBH^ ~ = z+bIRM yC [IC$z.>z[NQ)25R/YMLH'7|,O1FxM7|D 3t]<0&.!ncv Eu"_V D wGmL]}E8+{HK|qE4l5s/^&BT>v9!onIxYs~01 -t yZ!uj^r`hx<RKkk J_  u f d r  XPr;m:~+ TWU!s(La7i&l  %X q ) \Dnh0 BUQe T[a=`=(CK85= fQhx zz [nVD8ao0TCLaPQHc#u[6 A Q|UePA<^.Lmo\^ \'Y}s 7 K]"[)a<dLD@o` 5WqGjvmk_Mp@[6j7nO,xv8JWtzSIIO4 sx \y&),8y'( r u w{ E l   )  0 HtMhB 6 |  8[   m{% p . o'SqJ*<8lGyhtk!"^opylEEQ{[U] f|#&`2: msXcB_8[yTZ lv,JdvuiqE F (c(I3Qd$2/ B**wl /<`uN$M0'_nv*J/qu+dhEEG+#KH/}u ?IGQ6&9z*  `=9:O>yh Nq=(G  _ *eNM]B0Fko]%P^/NtEJ` cvlS = \ 3 ~V G~e1!.:f#& Zkh7 0?^%YrXvX  Z  }QrKsnSq LB> t CqG{:D m T\ AKY +  N  B ~  6,?  IQ   Rw ZXs]) iv,JwvXYl3tu|p}Sg  XG_'h=GbRW S;<Q|VElaxr`t #N!~W\Yf"5F3olmz .rU+Nb6Q}[.=NE-[*'\__f 7j: IYg&&'%l-E'g H$>" 7^K pnAGdz?i> +7M>xleQM~fa*",E&Ph"MTzU,E1,.nZRj.>'D pNpk,n}>)^6cZ>h0l5m(AQ =]PF-.<ctg&|l  ' $=x (AZN=z|x[/9rU+[ 4 b   D 3  6R S [*O^89^vAk:b!t-cc5  0 '/W. ]Y  6]?,`&gy&y]hn 6V0Ekl  q.n`+Gz:BVxkFRHNN  T} :h&[FV,u*B;.79*4PU%4-J")y";#/)kdSGTu>ViC31-svFKS`vsLLD_zW{B64%5x{jTFCDr/LZcKA?w~!ZHMv ehQCma$LZk]E(I~c$ O \   r/e F : 7 [ - g B \ Zb ^ G v t   [  L  < & H 7 / s      o W ?G P kF d  <V (Y  ( C e  5 (/   R *  | * [gbDL8 b . 'TxdkvqSJ*Pf?:/7Va{D(]U~yM^#xGdY^q!g:+fjK?&vEPIQ@NWgknG$^=1J5&u T/>M)+I -h.PCsb?A~/I_$m WjcltA^>EioGqPIl{|Eac] 'Ng_H?x`"BM,SL%T<gS8*#Q'vtq G&% :W?O:8rl@Z]o,ME= *q)3WoLQ GW{E4H+ E_r9\}$-))#32(<=F,\w%bk%~+Uxb9"=do-H3#xFcW?/mgC*bS\8J TS{zg=><)|ktez`\~A|;oz'P"'-W<,l@SdGK2XYg#Gne@_YxB(g=2V hCoOn|>]2G8#Gy3No<;Hx*h+.t&@y:$w}<s"]P_T{ a[zK~wJRQ=hwtW}4D;'8qN}PPaQYg6vdz;x<h >sWG#~t7!)I=[=dRxU*A^G>Q U R -B qX /oi Q &   k) v o@ @ ` l l (5   2 ]   > S]    U  i    L X ' 5 e  h_= 1  !0  - %  Zb | # ~NGO==DUn0&B0N?  /tFf;|*3!#rlf>j:6V'I`i-Mz8* ?Q'``tEwZ~UaMp %m(v km^ YG;sKQ +cK8TY_UDZ{B|u>>5tG6<JT>L!'}wwg&A9LZD!gcgL6j\E z]1uc$;8k r+\NsHM)38  %   mE%/}W  ^ nH 3 )+ l  mSru2-uM~VMh`8eb'MB+8<HgbYv>.nHn  P  [ZQfN6E!`vo\[(zBTmy7C_L?o&xbEs'*OA&4TFqfzX,!XgjK";n:FS#Pu5`bw&T FpS>2OH~:x@<|?$t@9(2wTu/\9j>he\*2qx/IJ 0f&\PA8]#B$lt=l.kZM* -   Y{B;[&  | " =    H.  TnTlT)H[fR g {EOq   E#PgF0Xb  lLosNt.DkVBg 6VBDd3! L8y[$|<8    BP.gWxjMU=5!D,drr; @@!Sa+hwPz.S`n)S/K MfGT*ZKEY pTpr\ GjXjX6/k>Dkn:|T{ ^LKBA @T)yo@&)=Eff42~dK9LSgm?I|T; Mz0c@V/o`6O]V93Aw:z*I>i23({S:c#3 ,}1_O   > a NuAm+i /RhK]F\%V}soydJ@ |QO_/fFMRIav2e=6T~4om']t9h[ibJxP?=om]xH;,6MO? b\MyCH (eF)Y|WQG- T<FBH~ZrS$.;xV 'bd1N4^OnqDdz"AeTsg_ZZY;xSPQO'#e:.h~fp9m1-J]O8VSS^:=jro[P'E *b]jYy Kj'~IB>fA(2TMACb*~vM 2Y9+4v{*nAt6>KM~0kRo2Xg&k40`?A>^cQ"1#3;sy r`;$#?P:q6|S7tU~~1JuW 0 s'n, ^  9<%mq1(4xkm&= Gr{IM]]T.Y6c=K_^[(jw} ^cCA1GYN#`IV.mtbi|^+WDRl`CfX-~?iB;^hj@RY{vp7(5nE`3 E.j-\=e Q:6~W!gV<@s3 mem`OE$(Yh0H}M)*D/}= ^51tC$NC'wP |)"6i f@INIb?K8Gk_N>{0w!Gq7dDErk8a~YmH! mn S$( k[( oa&}'6}?BWJc T3O HHM%uKk86cWV:b0C!KLBb4D5}H[Ao *H Q0W4I 8+4+1g$~%c:=;MlWDn[D+ Aa"diTP[ S?<9R&/hyyD)o wfh?>u%%}>^@#dum?XAz]5o0}HRYFqE5,#tr~F>?{[?#co}Cv rW@2Sb_&||FQ"_V&hn$5h7(~c #Sf_OF7W/dhWdM@sP>5-T% {0gJcB@v)M;/Dp7 ` %xoj7avi35Al Ha__tvZ9E;]$Wf`f^,)h1ql~9Dj ]|P"|s`$V J ( QV10\@6K G+{c!f_*hCB`Mvym&jCJ`vx]m@c#A| ]hk0f<+_v  `c9zq@jQa i;u/~ U=,7,"2kJ*{0m{n?Mm29IE;&uQh^N[Zeyf5dz31 ~5qEvSV wbO8zV R:2$T,6KNyy {o4&s!t9\cNRSBL?.B/(S# Bd:J>]=!- J ^ U|^ Y_ 3   c! = a7  #   ^ a 1 Z \  Y ka T   k  y RC ~       d i3 7   > ^   x M  gX  5 `w i> B y ZH 8   `  ; ;  ` v' 1 c f j  ! D k b T ;  D  |j S R I)  Z =>njmE"b%=+)4$^&0Kd=2g`gk,k0IjX:y.Vtm)Zo)%V!.$W?}"sz]%%iWPPu0X&}*UU RN-J F}c(VvXDM_ {VP fk2FR>{[D0d{,(1@X@ :-{Sz5_9B|"E7 Uuj`*dv&hVSeNirxQV+  N =br H d  s  s , T vj x y  V E 8 u K I ^ $     1      I  B h    9 -y 3 R w D  Y j Y? (/5>QA9FTsTaXvBXGIc&zq;H'2u< Q=-s$t6s)A*:I`?Ab+ELQimedodW#n{rsb*W U"c?=Mp\K!<_)~wiuL]BIaV&cRwYwm-5kRuYdhmc/DU9{kQs$x%y,dai TOj6?h=i&ZeWs>jNX>rBK) ~CT>ax[ 1,K|-[Ack1}?_uv@Lss*=M3S  $4JXep ?Aq$~22 eOAz^}x7izKl0\Ryx31{"F!wg 3qH:O%SCHpv#>eR$jH7_x0^_{c['=B#zpO/,QXrhO( tDf'k(p 0&K((b7KNj=p6s]%;`_>zLvg [S\P6c>Y"Lm(u9I:S%)W-"_ _  _`*x1R[kKo)`("8b0kw06"'-PFJF{prKl;|*9O)!Q"rYd7ZJ Gxl}^ywFBZo}W0FT=T/Z/_8f8A_4YAc=r>VeCQg]dQZX%uN{ TBw9UY$ De.0Y%8Tw~=>< SjH_:3}viOI$v)e(!=O_)"l4U|7wZl#v{CF*Ee^gemB'p#  8:" (-Y7[K=cj $  x%y= ~~f;`ZTgIa". @ 4a7c[LM!C>]Hurcv~C.=;t?2'NZT {87=oP*#!-O wAR4TzNRcRn) .r \LQ?>,;a"c6Sh`l]N@4Pa@j^\a"YTM|=/|j`w*LT3 d0Gj+G@0yHtU9x})jw`=i1&jN#>?{2-pOzyq1j1sJ)6n*plQu5"%_1D8oI hv"M;m DCzu5y0K:M?`Q\zAN[}boU "B.`eAjV@im  |~fXLL)OeV]7nD[ 'f p}Uh9&kg8LK!+8iBo/Y|=]Q8sjmcC; JI3 36$:do&7o2|**-VLH[*>s;)g6~c_LMdXv# P \D 51_#JdvQ^Uibkm%b2->= %64w$2X.D1  NWNnYutx_y2r |yr71{_!yg"HWV0^lt<-bJT vLc3r>P]3gCiZ.QPx?R(yey+Tn,&|5_\;Gk4H_LCl:x^- :/`y&C km:)2M#Z{xTi EV=k7h^uEvKJ(A<>c9~Yu$=  Db=TIf^p~x.0,fbhWJ,fd S _?(=HHU|#U 9Iy g$muE'D#xh.Y~J> rMJ}+SzpBl w G_>   Z    _ Ir3{d (  e 48k-9 UDIFFJm?lueU%|29}AxuEJ@??M&>z^p 'D`EXO<^ut !}0dY3 O;4SYW3Y$wFu9cbV>QjF/d ,XiT+C7>]hang{Ol,O/" p2&PBdvb\?7=3<, * '.4$-' =@yu9oixW#;3fDxh'~ E9f{[ 1^YFuH;8"+s{vl2+H3A X% s     Xh &= G n- b    pP `F Y> X. R A<{T1/iHG SF'a*L6XCjN(QBtCoqB9P#K%&^twYwz;/p WP$DhCN'(|p~mQYIaPV~BUabmm._rt.x>J h.Iv K/)CrO'`[/`*G_3PJ$e4RAD ZK)i{O@RJAQ=c$G64A }69iOQ}PVEI^r[tmnsq( 7 2 Jn ~ r z  |OrE7qJzXdox2  z'+2AD0.qb6bM-Z<z0c TJg4cwVqD>Qp^)|s6%J5@82!nO"~cHn!XnWO' Yc 2uhzunlUm7[ *zJ{^~axpkke_`a[?n1MojODq:y;T!4(enD.kM}g .NsW5Hj7T^Y7m9Ja}Q2)8F, YN cm{iAGzm{jBiA30yr_dK>>,  ^aZ0 xwWPkt=s$722tC "UB1b& J IT7LP:gSYEm:OB#' [[s5RB@;@I-iimtr|e`M:9&- luH/Wbz3~"%zPD^_nQ/ly`tTVdwfx )\%c@yz#4z ;a <[T?DdK4ubIa=x]Ob}shdbpxxyy#,E i}omeD'1Ba@x|Qf97h> A9WwFX79("!*VDz E;[tZ:p92C+?J#A8[@Pr]NW/O0g;}H1g=T)3 ._QA#iPK$O}E).R;nlqd|,N#.2o3NSzFas?U:%(LxDfs^=C_^=u}&2OwQkjBXU1iWt b_Z'OB !Sb   oVvT=@Ud BXwo BN 6P 'V+l$l W0 o+//38s9H,H#/ ȼ˲ K 3g \[ . jM"\qWU e'-oY/n!C' c n  i5r{ c *  e$"R  Z. j .su  (} `  H XQڊ 68a; $}eUN "  O5L0qWX2# . fI61MJ"T R %9H>.uT ? S S J xt~ 2X&+uQ@o[PVKvh;!5E6vM ve! 0+q+62pm w*5x6;r;0}Oߧ--*+& 9CxN me|@ n3;;I \1owk:p!! w#Uv^Z4 .h` "vn P$o{7RK % E 6X%o%`[ )bsWF^;LcL'~'6dew    TO2 6 f %.@2V a\ NxYA%P#F  DA?U y: S' A1 w V[g%_4Q , 1 y. p&Rpl<'l\*rO,q6<mz->)@|Ex#^Yd.hחgߊc Mf Ob(4'~P[%xB":$ #/~1A%OT qXv-zb9 \~RxnUv  1 iIOXxMC oI gbUN0 / ](  *_    {:gI  xi:  i t 8FE t&[ Z _z?wq#   'vu.5 t0P\u"0M tCWH7N (S8<+ (8?KAv^f O^-~ TI 5)Q&n6g `|% . q <}A+3_r 8Luo O, NS jlgL X W=1*pyNe &`a Qn :^  ;v 9 -X l FXLF of_| H  n s0w% :v"~wTK  Ok&CV{^[%8We&$%  |y+ t su -x \F=.T {SCSf> |Oeq Ge"}w~b:/)7/S#kKDQAaڠ2;_all*!D{"F LcpzհΘvXNi>2KDfPa- qhxN A Gr-TkrJ R-7L.h#i s * ;gv   p*'#f+'pWAL t"p#3@V5w :{\> Q 7 L#,#J % O)\!\  H \XY`s* Q> d)0$ DT!  . HV J f  P &j 9u_f%wv&L_ bSJR7c &!_s7 PX w$2l}<} Y4+ jzxl %/ J7rop1z  R  qr A%Puo Z s֎cN: Y3q?3z ;w'UQm|/K_NFgq+UA u jw6? :vd#0 `H KU`T>bdG`[9  #f v{;9 +v  9g N }A D%*H"P߻Y'd[2  :};  W hwFOR|?6$Z ^Et _ 5!`j(t#.FO'nFj{GM sF,1 ~/ $ YYkr!x*hGG: M L=MvK  G &[XT; D d$.hQRK xe }  iuUt*` i 47Y BK p(@ ` 8q$ \ Np 3 bVXZ$ haiDAZ"-&$ y!A" .! wwuwFEiQ(6Gkkq { E3ub%Ov.8_ `5~/>)-I^z| (+: - j)BY eSN1 a2 2g sXqFX(b@C 6 M}('y!&&& n&lOFaq! e- =,, lT^ T g?s`i +"tW3 K + b= i`Myc7 E : } }v_r:yMu&&ibF4]UUi D*Z5l% 5?"/$ n0^  uC$ i)  Nh" 2w ,)V.b bC]O1I23Rw"0G ):0 ' $ PhA- ea2n Fr6,-_y Z!tBwFCZi! Q " (mLWiN =? d3h,Sz6w23 R9HO1< @ WEmZ2 >Fsp D?RS v [pYHpP ~R`cL*[+ :s+6g3 u 5 ))%ETh$.2! SS85TWK"qF&lDM?F:P+< `== 1  Ry & 3hf&di ' )~`c?ngM S %Q&56k2N b Z+vT!@ <  %Ep p9 v : u8t Y$  HK;QE2X e R  z^nI.PC 8Cd?(R1` f   L ;9vLql{ %j/ fE0>!!'I wY  < Y-[ gzR BB'6# e1v D vQBG< #!T6Fs# "$" h yE7 ?]5)H-*G )cg9,G u/y89 = KyGo 's xt h4Y G cBN 7a8${gc .= v z (`ehJU"9tMBoe*:37Y7g{UZ="Z  T.S, #E6s"s_ zSW$q%: * 3K)KnRt (?`R[+ :c 7CB?qSV6X b; 9>F `|M6 S ` j5c rd32 > 3ffT0 dj4kC9E2fE JGG :kF M # S^N   .% } S~FgI}'F"  +QN Xv> q   +J(MhQF%uiA] )E 0c!^+ G*9X H$5&6w@1r  HdN/%wo _)6].q4N B_,u yt 8+h[9|84/{ c#(<_hPh$$8 v9l`}  )sa?@p^ %' NHPoJl T .$!k xq2 ~ z, J R+jmxM,E cXx  F5R)B F D6 q % &}? P DP^3i%0 ' + ? _ D` EPL j hL =5$3 g # ( Ndn S  Sag5p/n4 Z Mb D wo DEre"K  u#3b # Ier V?b#3 aB 9 Z1V!Uk4HDw1#fS tfH[$duUi\LQ W(d  M{Uc! &!^  gCL854: UVޓsI 3 %)*:vw0 O L @/ZRQZwX)  a "i*G EIM q e @7f4K7HH* Ahu7;D % G!6K 3 6* k  u N/  *BZ i3s 7W=/C@@+r &A% 1p }'GFJ!% *%wk / $|  y'm1o}T} !N r1 cqi\  [bW0&|  X1 _O7T  e  [ |Jr[  4 ,a r]r e _Qz]0lWar ] Dl U0BAO F ".=YA;EgB Rpܮ8ox/ i jHXbT:? jmQ4 k9{Nt;1mi m 0f (s[NV e  N[ N UqwW=!/+& ^S[rg3^ I$8Hq A4P6~&\ v K&8:#bm8 !qJ1cs[tujWa<1[J@- U=CUle`hVUsH:(}P*.f.J* T  8p<M0U^+TF DF>|h< fEf {0 0!f* u  0k:em#@ 6A0Z.S Afqg<~O @k% E ( NlD)QP  a|o h:۬H 6$=4&o F *E=9 J n t %# Z<gf8 Eu z%'~!1c ~ EO`{L AY$EqW! O  8d }zX Fb e@ tMoy9 P " K .YSvXTzY4RXk;w&  vp:S$:(v0Tcu%_ 52N9\ wrv#6MYUOx 4 6ahm#> QS- nbS  IPAc" K 4]?wD{"QD 6G:[Amhl bU~zA!?# Vg<Z{WH;Ub ~bDbW6 3Avd)AD|HK R^\2myT G4 B  vmS[KX/- 8 LJCu 5  B  jqG" >) \v%Tw  q*  {  X68vt}i  %y #k" w >p BMbZ/  Q 8 b9( >  7m#p4 NAp[#" Fqsy, Ak"Qr~#O,GMW I{R8 /.=  W a:~1UU, yLK cNX#`Pm| 5u~54 1 VVnMZq$HqtKlOjK 1) w E RwH 0klj D  q5&o+a ]m )  nDO7Pj 4$ZDS. `HN C 4 jl p  XFzHQ Oh{Dy H p% 5jcYRRIg  S[ )Tjnw9Nd%w=N3 4) /2 (0Md *B&'xcfNb1B{j8\C,{vp#6DHvo-Vl Hv&1~e#Zr/*^1j4u/A*lhJ+6iw:m9q:FSC#x7%/n<*O=PlrYah7b Pj3: -L!p)/N{O5tBG;wc0!#D]}k )t|+zhF\r X&X0  Dg5  T xHS a* c B  }& f-!s WT 6na {T > '& ]   2  Gq962QG"Ud %>K2H CZ 7?c!<+fQEWy[ VG^u"t/c3WPoI4MqX,6 j ,0Pd3q).fK"tKUnW15u/2;Rgw?8n1kIl(IZy>:l+;2^_(`|ifX +T!4aXB^F " x +weU* 4 `s PzRQfz$8xh D#LMA} G{> hnp79WO{MM.E 0 = v Dds,ZNk!8\N|E}0Ick# 8r= ~  <bD) ~s NnMe+( t'  8 Ibhxiq%tB8I`~ n.\h*Ey.6mMf$jPb 8U+-\*x$#UMXO DsXwXyLV<Ss);XK   ++J]Q$H U. <TRN)oP|JYYqB;^ !UMSBTEHOi=g+ oCi0JXlY"l#[ 2^D=F>e-rT13*19yokdi"v}P leKF (^rn'. . ooI #7\A>P y a~)\! }uyUcD/ Zi 5 32:Y uAz 6mRC UDsB)|R8 J I Q.d6{6,)L}1EBDbV;a7 G(l4 s + Gl%X%.S{ H  8n'Kb`3W'`;"O ?["E:4s\ mpeuz= F  C mvcWf"ryaL ;`5R'*eu=U+WmAp6s-8\a"ss#Z.'2-M f5d a/^[J5 C   b _?6c, CU we^Fb  S :m o?J   ,Wv= WR+U>$m :DtB?Z21#6r t oszg*['=u3 d  =D1`9.Y<5yX/O! p<}w,>*z|H, n^LR q.CkZ>rzA2)   :yB`=a? <z Y %vM6v"=FK`eBoN|T c>$uN)q0YUD-xN;2)lC^7Dh`xjW8BSzp'g9{:Y-#-GP_\+wAee1>2IeI\Jhg(9#G~ h<4>DfA & % ]KaNn;|.x 4 }*J fw`.po Y :*WLb gU "%2=/~f i?r)^?rn g E ));<K(N*n0~ tp ^?ey sa[s+ { f%l _G/a {quTyTY'% > AdNow +XnLO#A 7.S( .1 4(Pg];ypDnL 4?_#F|!tj>G=giz&iE1cxr?Z"U5|m$[1l[f^4PC.!3';u=ET 1Ju* aIn'"lw 7Q!$-GZ  {Ts6I W f?^ < ' jX  e{K  8  d 0a 0Hk   7J-K u`(  [ >tA z t Q & s IVi 7  u1|,  aT%ec W7vs% JJBF6IVX )b%a" ^ mGD_-6~LwHs9,rUFHo>bh&o 1x)H #Mi,%N.DN:K8_,E}vA+>hvQB )Z1 (5=8Kbf4" N Ct&,+m#cWGQq^ X >)t> +gT s$ .IhR sHs bgDw=4 G,g.NB918{U 6L.=9:MA?^c7R ;#>{yc G zf2~P? mQY%: * G_M#\l t{bSXt 3V%S 6?dEW+$%vmx4 KPy8b+cVdkt2y3uG[ow+lpb ?xP_dS'm@5KNNz1PUlV *8\E|IAs?PSgSRQ_/>)W!_u@Q.thb"HR?tj7 ')72PbgM'y F,N:2r2FUueWlJO0:}"r [@Ba&9nL1>uw&RbJWPk=L&p: q#9`xE_E@izM zhHLM1c  J9DmUTX_}O ?=}{f8(9wRE9'e5`WD1O! F E*? JaU)- JE2wO9U I u:8Da1|6:]7C8;%zNm~$Jbf=BS DkDGix5[6Qy] - f1Xr`y`?2 zTw`k%KQ p?|l 5 7#88\](ur%n {#jwkbo4b6p&0L1PRnNIz\:) R`:&{Yc NdnclDZ0&o!WIoNmV)&gu <}(R+MxDag}jY@y'kd9< W}S[qp*8\6Y*<=[4$&j|B(ulKMF V;#Gs[`Vc$.f0(%Rl@%W)'z1KA8pFc wRo t\&gPI #<!A]7f=KO8\!Slg Vp}Q_Ji2~;FWzmEU.H ^Nd Ji k;LJp t@Zi g^4_fxW&qf:* [#.s&ZD$Q5g rBC(^-=:_^]h(-Ke RMNWmf}| ,iLrR6vy[?NV}!j51MvC73zGFt0R@0GNK'bLGq Iq/9f0$zMHU#C&fuz{VF_q[UtRDP:/&)Or#|z~6`nj&5d^7 ?}KgmBGG2ve1 cTiR$s!Z ?~F*Bp<mVM"oR}UGk_~2}'^[7>V^1e@1g'&VD%x%NMnsrqg<R"H1OU( qX 7C= aOIoaVY7Ns=WC"=idf q!NGr4Ip:56DyU)Bw8%-2Lhb%h+z8GxE+FeYz\b,oHb=u0a?D9HFW'N)[))>l A'Ct@,aq:D5/@|x{\J7a f @0c5: % $iiZ'4.9X.4ye+HeE@UI|VrxM7:\od0f`LT^~IzYD7=nz?}'T={SdOdG@uV0 p}"'/B<Kj*_Xz^cN%hIyfy(`QN|W|\>B??1D)ibxO ;J>%%jMVWDx{8U-lY>k^(&e>LIKw,H30Kurkb~F s6\vo<4i \:l?||W 5p&!eh0a99&d,|G'[< `=kqjhegR ,Bn(>Qq@|AkaG(JZItr;^'oB\wwV?E @;ge`ETh-{G >XJ)giQD\l *1H6P%1@*5TBr\UkFn\$bZOrp$-2:2s_>mY=H8 'j<.?gorZ2.|vR -9`8,gG ]F&#&h5;GZb  a'_|(|]NVk=gP?4uUpOpU(C%m 8?.grE^j5*7pj7Jp^u3nZ E}lWiPNu`)OuEZnS8,{S m@n; vU@c^S35rir}S)06!}5$SqDdH?H kZfvFUV3e[#j ScBm t^ );YRN^d#*y+~pZb umP@Ulpuxv bgC $!+>4p%e;GD/UkA2<+zwAk,t.&<m,|3m(EHDkS-FP`rQcvUo 9}/. p@d\A}^e>Vn@u&PnpGX"ra^T9z4)/K]PW\(mr ]r!8g[oBBJKcQ`vvins x4}e6c'k\hHd.Zt4,D VD5adE_lK)Qy!tN`-~3S^t#]H~]Mz(xO i `ksJ4 q/3+{zZ|h_Aw jb!:XL\uNo2e CP/*&[7d&3GmF5  ortPkuonLldopx_UMJOalw{aW^AFQagRo&L-(P@?Q}b> {?T|ycQW@ R'onm}vHw<Hdi!B#j6eA#i/$%# {tjyz@; &0:.)@W*uw )1kV*5{7,Adw) A~2i*%Hs2 &??|2ArL\ *uNO 1FG%n:{|4XfPdNU^9ZBa~X-F&V(v9Z\ ~W   x H  c   W o 8  . =_  " r>  W   ] g   ' L  D _     g_  .  , 8%  >    u h  Bjd{Qi''++H?X[ae~#B !q_0[/u M       " l > R \H _Qt9 SX([ 9|i({tGVP W2mWtR[o xJwU]I'?>]ަ^r=K٤]=,ԭI3Ӯ$~߶eB:]̥۱۹ q܉TͿH-'g0ϕ(ΠQFl}cH+i{К4xnq'-%V֥֎E5MRAX܎qݮ&ޔQlvFaX-TCkB=D3,^] 58c2bnh9Dj`q^O'?a es%=f[/b f4Mld*p t7Tb]k'2A&7R__J5OKA6f}q`XWHPX':Ew?alr^X\S Jnu:1du]8/1L@m: e_MBB+Kc'N>& =&;%-:-$8#)7}#6C#`6"5!n4t 2%1/q- ,G*X(&7% %L$"!.;M 6 w 'p.@ d XKcjHU'M2s]>z>Io?9a/>#|gKIHߟyw O}acګzgV\zW Fٵ]\|mYZJ4֮Tpm$qlIDm֣rx"ux7։ 5ֵ* 7}/hً~S?=ٖ&9Wh9ݣ$.K-h^!V_H|KqSzKO{ }Yy,zUviDF:Th[H:&4B>x lKy/qO-D1{k#h3i>_8u4QF]Zu*r zM+n1K%<\,/JN#R; J  8 N - O u j\kJ1rvFB;O4Z+bV/Dp;PIM+>]Fua}yGVfl;Y% ^1)b~vG@NZKje"7KZ4EV*q.r#eh#]O8ߥ+1W܆Ph۴D~Gk1ߛN"v(>RnޟYds.VH޽M5.GJ 8vMPXWJr bD+VvM>beEX~M5fsoWnJxG5%:g) w/u[  @BO,obK5IQFMaItkuOk8k~3iU?bFED>!  Hak=`5Jo&r EF 9 Rs 9Q+2 s ~     % `    a J 2^  k  C %X       e [h   Y    a I  +  1^ + \m w   " 2tK/]+*Q7P I2b \.{k. ({gtw;;2]qyw0f:.4v@F PQAz  4lcol 1)/kPOhWE `s6E"QhPa"t$B{i_x.Ui@,Uf88T QFTF]1vg3E~i ;|sqY7&-\L ypXݷhH_|ޝlމ-2ޤ~Dۨqzmن&lڵs۸FI60.C-׆/FqHzـ٫?Wڻ^8v,f.ؒأع&يڽڑg_5]q.ڕD!Z(۬ HܹۢBhژStPl٢۳ݷ.,܎?.ڊbۉܐ WHRF݊^!ߵ-i~/ y?M) hp.x&=}s=nAu&<My>E Fz_E:}(n"jQ=%9Kd(bFQ#[>OxNA@Pt_qu#d|:* mE-18brfd5OcC Y !!{ b !l"# # $%$)$$Pn$%%%(%Y"&&;'.'-()?p)(lo(*4(''['2())))B)('e'f*(1)k)*(+@+*42*) ))))\>**Q*H*h*$+z)+Z*j*n*Q*))R*R */))Y)i(g(n((S'&Q&&&o'''6e'&`Y&%%6%p$####z#q"["y";###c"!")!< Lb>]NieVN153R) Q) :x"+@ TK    a 2 G  ' 1   '  = k   .   , q    D i<C35b$IudT5+Tyw0Sm]ke7pKM-2Xn]Rk'WQhUnB@_I[4Lf\})Vh&2[m/xBsv16n?+[%kEoi"Oi.k, mqD--,;Fx ~Y 2c*dKdIcpH><Ous"O2;V)tZ:[RT"Jcn(zaM zTy}Q[:t8\S7R&!|WgDw;x65|] \s#9 >'\P ='{@_"Y'Pc`*&HN ^j cqu@>U9%~r,q,U DZBaNl)cU0  6 ( e P v K 1 Z ! 2 (  * c  $      H $ z   9   & o     4 ; m ] c P  D    < Z T J ~ K y Q 5   { aZ _K yo  ~   mo    f ]         NG 4 i  7 &V 'm 2 Vc  * 6 2 M$   /  \m          A { | QC GG% |>\x{QT`>w~S"I7Ol?#[5'kc!O(K0 ]C#;hbc9rIyBll1mn6; *5@ .cH~&nk#PN"qP-m}a:uh=sfyH<Th,  ws M P w  C  F XC Th Y r    e  _ "        F, m  `  B  Q    j   = @J  s *D Vf m   6 y#tWqKO@I_uWN12Yg1\ ^BGK% F ~xKb:j P ~ e D S2m%q S % A ` A K  N S  / ~ ) \\ 5    {T  r  n     ] @| U &d M   & n  E J   Iu-#s'TKp"Dqj=$9v\^[)gz[Ags0'jAs_lO { vm5$jW"s**sx1? uv/8M0um?U$9NC98%RZQWZQ3vp?FM+i)j>rt% &;2{T_`fablk_U_][kqPj7 9FXe>{1k[L4-c=Iq6FY O%wGJOwF>GzQxeIuc$z}"FV1tG^RZD E(i '8EtQ7Yi=c2P"X9~V3.g]a#a9xYHpSD#N#LJ ><}UuV#~:+mAjDs-_y?m(^ [h6SprjQ|a7W@q"U1L91is.tsZug3g)hpX6ES ES3&n\`)VBS(o9ncwiE>n`vS\s,49^~[VkroM(s]|S:7Ln0N< &MU]}a~us}H"E8RWsnupfczQow'q"~9A!wC WzR .Nmwl>:=?a+l&.Vm4c~1Yu~#2 : ..#b:C0v6|u VJE9K;HB'mfWv86*i<h!Vb;.K=&&@NnpE'YATe4O/a" 4:.0 G944rx5VR_{5F I) / ! 4 [E     / &W q \   7  { { U T r    p d   o */ J U _ Y 7 + 0 = J I /Q :T L b  x)     Z 0 d> _c T / k0 Zd   IG L   C * ' )   " 4 W 9 as   a H    * K 7 W 4 Y    : 17 H3 T- R 3            k g*    y t  v 9 2 ] v J z x q 7 r    pH t4   % 9 J L 1  Q  J@     ]# )    n L  J P < "    Z z  [ ] > K S  G p < X j   [ #w          x V C K w% 2ucU ocprOR{sWHpl7!=bDSi\geiC/  1 X b O s  i M Z  < U  ? w w W )n R T 4o W x + } $ < ^ y  S  H' i. : R +  ] kk        / /     , t i  O( J Z \ _ "l ;^ +-   e 7 o p \ Q T o { P;   "  $ -     5 P H L f m [ > 7 0 0 '  p #   a8  d  ` t T p   S 7j *n 6o 70  O 3    | c 4 ?  Ka A>      # [ d hP=5EL8$"(l<5&]gWd(\\1)dN 8M-fCsGDyi3_Q\}zoLH2>: Te!L+ Ndg<^1 `"qQTdqurb1Sz~pe{w|d?W*FZHf^=} X:8Sw%o0{Atuq't T'/4tbqL54:$1."5W W'4UK/halQFuzJC34 [kNDQO/}dQM=%0>5^{sf: re$GZmg_E.'2.s*ZV55lIoep,NS[W X8rm]lxhx#M5b6XI_|cgkP&2tn)T]{)t<^q)C7S0I"54R{iMY+eYvG~8%r4j[c>DIpU^?,UIGe2[4aBDiJjg>'VZ.N+Wa3`Hl_ fx<Z_+e5a]7yQC#Os63 2)><  <'lq`ca5g<E/ZalvAI~S6:]b1\$W0i.tMLx]i3@$o$TX4.SS.QI0:N9&Jhf[TaNA0H(&!S *AD)]p[6l6NG[@`;B\!&upxG:X1bKOC<F4 q(3X*|oKB *)T.6I!Ui~K1LcT+H;">*@CLbf 5s> &iSm:q+(g8/-S2p92MVG%olvssS#t/  e4dIAf2&;uoKvz 0<C4lHY71"M!߇J '9,al`e8C\ 2I-RzMk{s5Si  8&&4E UN 1IVU~)y:QZp)LI&"4~ Y{h-[{g $ c +*ٖhnߜ9dj5޸g9fgX@0pN.@Qcar 8@BA;;fKdY0Rn=[z`-`dR8]f :4]n,YmH t Ca\  V  ; rs{5'[ME~x|Fa3K {##C!S!#! < #"y$*$5"4""&\$x$e#!S "P# $+$ $-;%L&E''_B%#1$$&)\[*L( ,'3\&z&>(+ -&,(e&i%\$"i!! Z#-%l$md"!6"-$j%)'&l$+! 1r "}&A++!e/m"N0 _-* V."0V -Mt)e(;+3! 0#.3^$4%6(9B)F9*#0 -|"0#g2"/*)-!/r!/5,))E*<**( %1<#Xp#~$&#K0"=)kSz`fFZ u U q'Ht G @f5 / j (6 nZc!u+Q[PD $)_-)C&6aV%C&j 2 ډF9Bt'3'ڬߤPh*رYq ׸N{мz8ֳAq#߻g~Y`QwQ۝Z ܘ9RnZx]Fv=iW_Jt&U NK^z/ '\:Cuy}dGbB"{BVn/#phWgDsPWzqSGAAy %@W+"6NX"?4ug%'NHQy#T-Bb gXohDz2miiZ#c]9U=7QY kl<߰6޹.zi>ݴܱOm׫/0;DQ ұDXߝЛAԣ]QޭpyA:[t5pѴGٛR۹4XqՃOپJ7I(5+mؠ/K`x~Fq}UV;Cgl+}Bg>2%vO^jf :n=z5r|4w}S <  o h, M?6*)-#%{>  " -6'-Zg$~ .G!K/<+(3k(&%')-!1k#3A#3"r3$5$7"4!2a#6(<(J?*E"3mQ8{V3OM'9 d. ):5Ma;U:)Sk8*P9T5|P4Q:Y=6Z4yI% 3*i9:O@[B ^VC`]B[9DQ1E1kD4_J7N6M3I4HK8Qg":/7my ,PEF|v.ܽQ%7bOߛ?/SC%j3[ :&Vtk30 J ", ?u V '!A Z(  g% `-t"y e * ] dJ7Sv 0  &/~,&K  'l 0o^ Pcm m GwW @,W1 3 1]``6?0Z0M /@/]9>8[')ig)oF<^f L.U XZ/HYMa ao 2w,_o])ߒ.}|O $KΧ޷Ul;JT \5Фo!dZda4bz{4H-NwdB|dE4/s÷Ԣ'ءƘߢ9kec ӆi֤Ӄ/!ЖZT'>r}N!?ӿÏթy$aؗL63[:%ڻ8Ϭ־؎ݳݪk#ȂO #ެɿݞj2A܌D$2&Eׯ& _?Gh9ۘ*ߧz0l5plۍ#ԨE2@B܊tth]rO!0wK-ޮߗ5lCւxڥ?NN 2;9۱~kLuی5tLu5ڣvL\L bPU l'X< c1$UHא<1B#AZPAW\%>*azs83.s+a^Jn\l  a2F R /  _ m aS Z4D  w._b P"5G0N N 1 N'_P +_?  E P=_ ( +[$W l|'  {p Jv^ ',g3 g \I   )| " !* ;5\.A ,7?" ,==}KojQx.{],H.:i > >6P&a3 ,I/> iBcy)z 9fPA uP S (c7R7w-P*-Qmb vc&sm& {; e 2;&#'O$}-  "@" (G'Ju%!+q 7";+S" w:)-<(6 W6(: +o!U-$2&5#2s!-(5k%t%&(_+'6.g?,=c)9'6J".1''d$0h.*PA97Q7mP7'43#'$c2)s:/->U0A+<'5&l5'A7#4f '/.:"3*;?0El-@&Y7|*?/I[,EG!9& j%%0FGcHc7J(-1'4/@y3G *q<1)% *f,6/*"qK|::+Z($4 T l^bp _5QP7QD%fhSuo2*<yES9F2X p Kw / RRgsgMD9  jE ' $  ,  `p 6 z .42", > Zt !u 1x ?Ed!7 l',/ $!+^H  s. G()!9 r   x  t  Su 7mm" I5 c#w, E0#p. T G; I|"/# |J# @m Ki  "p}%0,wWn*'&6R,:=&&% .&a*E;.Z?(%22"&!,4+QZ$$'(*g#5.C/A0% 3%D$M',e$d3%"5#4$54)<+?-'[8 -'Z*$4-'84!k0m-g" 3& :((j=(-@*_=t#40"`2J$K4+#3&"3+5$7k#828H9+O/@0#0T$3.C1Gv%"7,%2-a>,< *<2G60MW/|Cy&)5$k2'%5,$5(:-A.A(;'9-BE,T@1#4+.%:.tGp0fC"'l3)!-'b8T+@+\@$04'k"~&#0J#1D!Q0)%=6*=(:v*!o!)D#/%/,r D v$:)&B+$k<&?0.*S #HO_",)71"`,< vG(a(Yv.GM 7!y )  &WOJf&d P?j%   g_a'l~[qR^v\\|j0eW{0oz00{)5> >!ݍХܷ|$oHGz=ޖWޢuQҪwFQzzG;Oh qܞW$1BȱؔʜwQt:L6h6St1=hۨ.[B;׳=Xh+ (ގCݼ?%{x۝m>3t.E,0#,[>MߊE7Pibuao A>W w| ثd60B H?:nc\a&P4x=% I Smc-9 m t I J%v4z 3  H T)AvX P9  p0]LR:,&%V+`6kZ(s b@|_#>[(@u o~@n,8.b~L)5~5)Oe0,A bXm'V %ix4p96,xS۴>$,*tڮ 1ZC =GTnVކ3~\t\ߵw)}:@T79(RZ9Q(KQOcRE_C'+#Jfr: [Gz+$mjE!N J >J1cH<8Ke(q 9qyN.@  BO ZO^  5 3TSi r., G? .9  wYj  E|   .' Kz >E O T <W BRP&m] "] j PVGDCM6  $8x Az* 1/  T| ' = z W816J F  _ %xuj#&# h  0&f|d oH !dr #kORj<|'l OD! Cb)` I': w:V x;_z qK 4 6xwpU   ; n)8 k'X0 _ &F k& &h YDF@5   9 GYF  \ fVv mg ~\= % 8 ( *kE  0( U G 7 G ) z2!N)'{ lf@ '%6 aXgBh e0;x  n  q *` hO^ \ W8%"UrPE ($J!PWe3$b _ jl WS7 E % N H [[ZjQ ;} .L`q[ N `!dR*4@ 6 e @kC)H ~^ U[D twg: 'j5H`^a7l Ioj ztb$e.pv3a>~mC^5IG/!9 o_&mw3cTSrRcxStH(,QNGZ5g ?& y:99 f;[?S97Qe-s+AT;k6ZxkT>-&D }\^}-rL}jOnQlax dtiR i |d Dew aJ @$ s7$9B ;W cb ,n}K= C ; fz 3mx 6 H2MF22  I "| - /qs.   & ob  +zuP  c n ZWp2G0  Y 8 2? VI1'N Z@ J C r f* ;N ` {Q&} q RQ  h0g v (N\ K   Zh Z$n  I f  b  ? kT PRq   W s -   . ! e =  H  F  ^   \ O:}y| n@lZ   db a ) K I!|P  g$Pb G ! + a)b o O&/. . B =r8<`[ eY   m v '0$M&:& m J\  *8qS / "  5 M T d  1 wZ F { 5 b YB > Fe`+ fYN   '  &~7- n GN :Rt*}W s^ h  JVaM{63 G 2 abj 1ze>;H7\|r R ~ d=CCXGsi W%#l;eCy&0Sfs@%Ql bg \]0n6A%@gw SHraza_~3)  &[bUs!TB1\o;@1n(oLs/@mc8,ZQ0|"Pqx1,y:n$hE+bA4YgL[n`JL8_&4e]?8[Gcvaw(*&p'[$6S-Xz(fq2T2g_!AC46_PD9zl@= 2R_?/yARM}CyEKgpB[9$&{U twaqJ&i(f?Zw)I |RqMڏ%8][3;$~7 g@k$\mF'~6DBOk")ac=tamz YyAcKt5v8N@[zc5j6;^b(M0F,D36a*$'x_S `X|^0[F }:H<\pWQ|#) !uw|(A  pf@? s {\9jZ1+0oL[dwD%:q.G4w:Crny-Y_<$%P {BEQ:yn M7l^a X L J [>m@Q^ 8nmI<  D |`pm = 10p :%wJ(4b 3 pfLa O 'b  V t/]`j%P7 M~@H{V3POsu J'>h"[Q u YQ~k$R3B%}v|^f<F~d .V~#\.h/RJ74TQ?gC~Seo,t~[Wg (usN h-G+r ,r7, |.$si> ONT{T #D5 dSIt,Y = > 4u;n\% # \ d{G Qez2D  Eyu$pA K y>r| A G" N  g rE:m [!F3,r 0 B| <  = f D^ C o 2U }Z/{ nwm"% :# L ( t ( : @ OCH = R]1KE d M  Vi0W!m WQP n-`6R9rU + bb,#^.A a F!Z"8(>"%%'J(IX}%T  } $"#J !G *R*!j!yo  CG #(='48 K8 !zI9} n 8&c 7 lgUu~   ] Uk {ad I( c"!"w |>    " mo qBa ) [pzn^  , ? ^  H' ^ ?AH( b 4G 7    7 /_i m~FO@ ~; Le/ k4  0q v ,1 } aI *^ ~3V 9 I \   s\  e CeY  =:wGS ]F [k.%yp X  | ApT   I )3  ==9 ]  i: HjF L W Ie 7~ k k5Y 'yV& | o - u #ai! .p gL\ * 8 AZ+3<@#j  { aI /S cfF6 F t Wia g 99k4 O Q d [tL!+NHn!hjD=sV  W!Nr z*{9dy  ,;lNK>pi_zQ h'` < 0 / 8j 6    H|Z GW  #K   H# &a 7 &)+W 3 H 4$,$\ se q+ E *HlSE| s iI !27 > - {*A,v  c{ny@sn^v1}J7 "ELCq <^a ]V[>~Ik9O { o2 H?zM )l |4  8    lq X  qh X:D] e]wo I <( mM   28  3&_Ga$  Zc   o h-   `c P . D '  ( * P aq n PeNr%v M]  ;e% 4 L *,  eQ4!  U : <imeM/  :0 |'  fERO] FO/ ^Q  4P(<^bB X  0.Aw8G )@Ds m  _bo("1rcex  bq > WS)ly+ A  OL2>_ $E Kb ) Q Ro Y }[ u <8    < `C'+ _"K  Up  wDc 0*xPDk/C.0=r x c!5t7= rDb> %  |Gbm@(b_;9;r> Ipv?_MbX$ JO: .C^<et.2 U)k{GJ6%)DwmMdg5Uod"^l^1n?7 wI>}{@wY(pK`.MSa@}PM700~H o'E%`$v+*bUoJxzGeU(/1B=kOOLU$)7*bGE"Rb{z^5<V X*tA4H+nsa(36cgY4Bb,4|[ KF;tH>'3tyPLa3wC/w<:f0lW4'4c"X$Pu* QoJf]5:>zxN8)-`}/(^]p%ep Su#(T9f+v7D3(_5qG:LBQ%[t]HC4Zb2,C!iY|/K$q%9 x+H_ tkNi"1 k3p5~}hW2R4|~M?L(t8+wB(>(RtfK7BA^]K\u3n'.J7L&0PER4 B Q8=>W|%~<)89;5L6"O40wA]B4'}E#XZsPRW-:l_h{9I|<$Ds<lKp1L~ h-. tiC%I4R q"I{k ~~W#q^r8+nbIJ^dr+vEC{T5O?c0b!C8+w+ )GEFR`EGo{i@l" jH1U!V2{AS!Z6tk'8$ch!q9R]9OM%8D l?7>]^#W}5k)Z; cNgQv6hZP3#X$jmbd%GrOw>dy QJ\9>Zo-GZyMI^k|3gB%*AtULW:KzR59jy#%oWp$xY(1]W.FcN#DrrmR`vb\TB1.)'xu4kXjP\&)i[3zHb?eM -:L?z Pj,<1W<j7DpmS fO'["q3cZ*dJe-v y4zdOl&{6LTz6',x}+eUay5DdOPEaK5O:o/D2-e=k]1sl;(g^.seKLL /:;4(RW;IL0 ~vR"0 )=_(vNX'M$dPDpu>,-@Hyu`F%tzj0Af,K2}= vLiP@$|6O!<. i iDTroK:, CqG|, )v"G>Z>yD4Rj-2:+XfruR|uX|Rf1.LVe6yIfkdi p}#NP]e+I`?\Nj8\58pmV?Ps X3eRJ;{RJ_u!y<}6RHquuU9"dEli:5-M-W614@ mcN4ElnD6[;D X WuR2le#A4 $ \#N {V"/,n/&m @E}Y9^6E7'#2zv:FCq CgHE;-A#d5zPXLt)5k5ONY) A(B1H4:S8FU>Eof#75(o5z]od2`hY }@d?`ad70jhM00cptJ L6NddvJ+EiC+ # scP T5[mE}kofRW:|gBkLZ1;wK;NC #=`c}ISyMJ1\tcv(mVQkWc: FauQb>WDr:Z K\> : O?vDc30* K:ce{^fBH&/N|=m jUP~j>tZ!Dj3&*EdG:LsjdsaB+0,! r(ME$al#0QL9_E9i 6*JaHxx`s"*4>7R=vD|lxgWlO|:duYK@~#p 56>fW=Y  J~^q^ N]?nc6?Aw >  M T=u=m K m K  k @ R Z ; ; o     N ;    P   ]  o a& c   '  | - "  @  R 2 P = P    m  o L ^ L I ? uN ] V   O       k V- 7 / . [    `J Gl U T5  #       u  ` hj y ` 4 ; e` ,   #  r  - )   V7  =  P 5 &  %  =  M  & j X #    $   d * - uU g J  Bg@8]p<yPjGsrW#Jbe Dy tJ!.r?e3c]LtSUL  vD[-8eyPQ4_Qg=xS5Kz YEN]mW[%KT"&i"W3.1!yr[ I1[e2%Y8qLR*}!8crfDN3ng~sV|mhv-@zh:%|X0 0c-A_\H?V44 Dazb8?> `9O` oB+Ehhw^ KGN/d=(GWfV/,BM8=0Kum3`Y1m^r O\~~L%ENj[yTq+4nCQ'tL:gL:hdM&%|MByKR?K M[)uX'`n8;'2,vW,FF$_Wkb> >AH-+;P@,P2Fs:Tf%J @d*##RN1A3)zDwUrI !VZF`s Nrv;B/fOJG_~ 9<2WP0H^z 3:gpKb %E)H zk-Z&y7]RUF~,&Ru yUQzb IXQZ)g[ }Fly?bR %aFI&5O HSm7~ 9M`<v.eh_2C,x26~|;@<p4G1g`+&FE2cic*lVQdlKeBJ:#iZ M U Q  P %T& c h  H . Z t> vS lP WM 21 4 F  Vf Uu   f e :    8r      f  + , ' l 6 a [3 y  y 'k   f    Mb   Q c V s T  p V > v [ : i 0 V h  H $  -A (Nw6^A=YblG|t~Sb|x=s,m}9:{V#|FDo~fT_4(H)mUzD5v7%v-mM$A(-Pa@Zf/13Y!lwoT(qme{SA_hd?IaZ`!ju/xVJi3%Lfs6v=q=oL,?Zsfdufd\-j^ (NpTn~=<tc/j^[A&ZZ'mk )e#jQ,*w1WuLKtABn@@/"C-rCN;%X(P+@K>iF9]\)%R$)o/cy\!:p_1<LNeL hbQ8r=hI|F4uEhfVY,a3=D|&%EOxn {\5 KrkZSm~gzf3|'EiF1#Rodtn[Z'^dKvjG&q {K t!N]hP7.(]X2"8][wWHViM4{%sT_h]R*7pau2M6%] <[lL!$4e uC-+rtz%o|gMz{LFZ'zi2X>e|hUrqu^FA1?7(vVe|>b$0#V "1 "{qbS4G|A#6MLfXy]y>5`_fP6apFt*o.9)XBCpE>k S0_DM0#% 7M4&6Dn~ew2DJfPyu&d1UeE)X O>1l/PS{nP'7&0(b"fb5u'B5gm^|MRwqqhx 7R/dsY3RNrKVtqg' eT<  + 1*Ss^qG-Ve!+2<?<w(3wlIwqvk\Fw$S'MSe|zfyq(Y2 $- I}\Qo 8 =JH3dm> Gv_}31;EhKr[P]6LIxqaRVrub{~~T1a<Z,x[/p_MgY]qC@qLu8 !P#]lu?  _(zL GxM66#*I_,RQ%2/!D2vXf1 d,(JTB#s!X2#c L7H?\oN`3 , "X*FX\>7p%m% nKi@r$y }ArmjBg' ? \@`nH}1jUa% ~Sv\p 7ljk5R{NO$~`.Y*c/f]9}U~VSm^{xi9 =Y?jneU`FNf ~wei35Y ^Db{\M)K#tH3xy~teo  sL6VSK#lI)m\$oPr Z"z! b\ vZZAWKOS(R xKSIG$}?x A)'laxqQYF<-,N>R[KkJ1_>&4-U,:%zRG\ w rY'PILaC[26$"!EpUff;7f2;N<bYWP(/-R%"'7 o[sl JmDtcjkz$8W'o c4R+4rCK;Nop_G%n#j'|wX;; Vw;SH)>Iamf[wUf]@uME9HY/V.F5/.1? =H27I  R^r^++ )PUTx/euysE- ve3=:x- l/o3[OqZ4q5h|pL"R<j$'iF"7Y Q79`'V {[J`=mXSd4Y(H)z acRg |PNJ QmUO!9Zm/eIEKR{aNyI2z?I#]`;$xyjO swG z%P67E-F71Oh EN,    M @   N { \ ) \ 9 /  T P t   |   x    t N n   ~ H 4 P p  x Y P v `  s<j2=X`R.}tdhnKF  zqe`cT/GiNi<ni@4hf`=w"XS.'S<;YE_4i0'5@tRkMJ; Ro[vsjZo>1O\3XEr/8xWO*0(T)2/o@,O+;MXh:l|O]kbXxa@Ohy"OD@:"u oJ,hU)(8"!`rrdt,U(-FAU ! ~Ce2+Teq`VzaT]x_ I@GcB-u9lPzU~3\(;L$n_gns6(++GF .v_O7 t`HmsIsx2B|bbB)no  UKmG04# 11y^xN%5 (Gd >-0HkzmL42p5# sk,6!uO>ah. 989l6Ci>a^qpUXq2Yn%_]2kIZn4?HZ6L4{rXva_-LS4B}.^h=xLh0e%8aj -7@#o#p`J?;s&()5U]1N7X,L$ < 3H_P`B=bG_MT|1^uxp[<;3Ow&L\qNq? B4V(S =eej+8JnpW;R]+Rk0dq2.6!gj)hvV;}1`O~},F>[87ZbU$xlAvQ'c|m $E5j]<;)("hiD]gwV94<)ueN8U~\pPb~'x+k 7}J*dg } d3MIbbP0 }ozsoXR&=Sbc'S4o)eA55'w3D=LKKNiS/$FDq'_ g5\"34nG}}bl;LR{S<x@;#ExQ%3M;Y&b sNX M:2qTjR+X I]&2(\e^^3e0ofa)rG`K&!^3-OIUP  !Cy'e` em|l?c\K AS?-+  @5G20 #UB! FK'iM^ I7V 9f;w)8}(l,:4B!28'/(%^(\~?M@c*Xua'xg>a`{"PI+16X-z_adzdaz=+4^jZh'>lKCo<T:8%3?Y[ohsF)3XZ,?0(( /gb1O@Uu  e c     k> 5\% O B     v @   0 : }ebvhGQb_CH$]\o9-m{OFT@nwWRr\&).,A3KCrd(ggdBLS t|;1$g&<+]vJ29-yXFJ5-6E>2r<0 H G .",') /T-LaU apd@p<J[b\]r?liC^ @I!5!cm!xz{%4Z8Vz#P-rO_gZ4sG$."j|_8  m {c*Y3 =Zf^RR S ~:AX`Da|QH$-vsqk}Hl&aU8{iy\N ]lX$:SnUH'zOlT*q2Z8bQq|uB}$VVpM! : qaaIhN?Br)efemv-qT44)3rdZL:~LcVE[[UsHiCJW?ga-DR}hQ.|6T wfd7>Cf,vow;~<5_cP8&yk]$=="I2$)Yk:!\9`q R%J>:R#v [ZqnSrm/x9G/?"xT0~HBHRU` nv9:+('wuZ\ dSdZVq|@5sRyzrKt=hvQs,_znGx2kF?Rz[89[Z_&J\esnA79}A|dih*9+MtiG- ?Rx CW^_tEbtvgC'c1daO'#gU3iF7-(^H oj pJ6\LC, &mwyntQ&:>#r^}yKD  {nr8\`eov ; ?3j+n7TS.< ;??C$`'oRsemWvqzi}wcp3n ( Ug =&WH ] 2J,rY%).Q)5+qkYJ#0=%,=$ 2629Y#UL iVI#NX)!  %{qJZPb5Q7BYZrUJ.;FA&JQPI-,'& eee6BZG>|(R1^!ߨ !ի˜ƨ[Үȋ.zW%IG>6nXς!hz7fӟ<؉7גƱR<ʙV41ImޥҦٙʤ$z3":%S2>DuKA'u݈tZEAlRӥsrK}Վ@ݔː>g2E70p & J 0 a1z ? RA{_"#0S%5!1*&Q) &5+>+,>o,>B.@-@*w,4?L*;)g:->/=C 0C/C. C1F8N\;T3$L+=-<3F8O8P*3H,T?.??4G:zQ`H&6/)7&<5&)~!( 9* *T*C(f"I'sp  *%1'7#=4 /!t0Z/:%/f #+"H  > lr[@@  ,k#0 ~#^("r bS X d1 { W  >ZsK*$aw'~aO*mcN9|ճ_CC٪Ԥ4Pܝ)HЩۇGՠ5ḎAf1mBܼ'΍Ľ޼ͱӼd.UȿY{=OxKn2B ֬=b_kT&JTֹlj Yס#6υU\rhɞ4ߋפ܀2$fي_GT׵R؉R5bPu9/~yH]zv _n{k,(S_21:cTg(`dwyP/4+b;\#Y sbF.I,! -{B] + 7DQZLN. /-t'< P#b@rhA  q-^$ E vOn5V P  /vj M< ZIuR8pyDd,iT1 ۩FqTOԗiкM˖qn[AOԯ|$:#Rs4рκ-۹sX"GA[QѪњn廛6U ,;ҿivQCํxzc׿^ӌ|r( r9;Dō!p9q s@.ݍщ̑!7ݐ kwIޫgJ)|Skb@p.QQlUsI  u   H5 ! r-PF{$$bXL]" oF% 0!2W.( '**,%6T':$6"83#L4&9)=*>b)/=( ' 9Z*_;d1D"7M38P5Mc1G.3B-+@`,?*<(X9(N7(e8(8\'l7C&;5 &4_%g5#3l"1%">/&$1'6(\:'%b4'6);%7,!H+&~4F&7z#E5+/@W)#!8+c'n7#5@+#@&+!S/"y2 L0E,+-)Y&B)j^+S)xp'Bx+,t*.((, P0&-Z*q)<h*)M({&a|'7+4.n-`t),!$i$Y'*(z'*t-&H !w&& 3 t"Ug& i$F}X^Y!##|"!dGAC&( GEkRT #(=$jg.C^"]8"& Y/ihe"I'|&#dr2r ;<  !3z5  Ci 4 L 5+ A fKX >%  $ L Z4@}Kq!Z\ B[ pI 6*W+A%j'o /!9. ]$ }@"S$`. /(T \ R   v' qu5 '3 S 3X0MlTm!;MIk>*}(QX"xc &t]).(G7ovJn>"v [ܕ<؂_ѯ htШDIrޮ!WڃoڴޅԻrogٔj׾ā:\ ѷ}_Xݢ4hn՟ށԘ-Δװ֩]xʀ{֬ײW I$[֮`(u|ׄ-ݴdy}ocݗ;?1 3U]!a& #ajf vYaAU ACQ3[|4T\u~um >yD,cAJU9J.*G!y|  ~*xO22/ `|^  dd'8uv ,3@,A(sjEtbA E.?ICZ]ӎ̠It" ;XD^ۭ5]׮'%:Ɵ:r̤Qr^μF֦Ȟ҅MӮÛ!RT܂e̫~ժpr!7oͳG涍ۂ!ݝȻmYb*׵B/75Q'9cރPkR=< Y4t ގ9y>b$tsi9(>Y@6'L! /3O<f~ qX) j)@a U]  2$v  )U%F"#gQ;=)kv!J!8Aw  !! .%i$"g0 !$D*vZ+&q$ik"(x(# !F /a$(lr*-@P%g Lc \ b)N(^02!?w" J$x"emC^a| !4 `lD,C")^% yVfm+oE+`^b"$$'#[>C&eD'E~0fG'S'&%'6'-3ROY71'I/'{(pK' vP.:Nl(?B?$h*a*] _"j *B" !:U$&6L-zp  I9y# (!/h%ca y_q  u?&;]+N_"NO x c ^%)W a u SU"(_!RJ hgk,<@/ :tfq J"GWm  u mV It ( DRTUTFYzpD*%G %C'y#~Fd$h,\.&Z97 ;#!-0$!""F k#>)$& %B ,%"2/+V >8hp%!y#P)++u'FL&9*0,")N$0"!>-"+2=)"1IP+"$2*?%9*t # s+3*G!"&@&M#.&B>@V '&N aEUs#dLy ZD,*L, Db  !!q @lh h#Q] L: <J5r  6  _ ^, `'P G # $8e'(>A L/\eMRr!W\(@c+Nآ]| .JH?׶"g7C:4x4PGˀzև۰*v;wip( OJv)\"N׻؁i۞$Mk2y1ʼn2֟|Ϥޭ՗8]ʙ3>WA CԂcʸf(Ե0͸f@̴9JÇԡ͂HLˢєM6D0ԗƣϠ İ){ƙu0ɶPq_ȤG&dzՇɤo™ėH$јj$# ͨP`LSU̩Mbʹgw@3ɫxkα%$xƎ{^͸[lʔՔ3@ɇEйʽfҙ>j+:w.Wo}~ǔԌ^JE΅ӡIxɁnծ+@-֚XeCj޶v֍ ̏ݥZKmMGҀ8UsD[s<؝i&-y8fM Uc>Stet KT#EI* /9md dvR 3W{c5wt  R H q l"% p.!o' +-S _}",'V FP &  4, J1qb#(F<  u I:a&T(> R mrZ!o*R)m e [G/&K]$u"2>*27#2 N #!   "+\)K kah#$W$D"$[##"t+R`_"K&"^1~ SM+$ '6%B`Is#$"cby  b,I? .dZjH3 Y D'd)q.ucXR(r`y F" 7 i gn~&MC6*r:6 "6m"Q ^ Cv @ - - }$ ~c($ $C9 I  &  S '%FX>a ) >$b% JU 3PK  N& zf  7t K 2 b)" n : $ g!"$ OC + H''`T ,"dq !*|,e#/'!##D BV  D%#16m '9- k ?&"[3 G5a)(&`!4U' ]i" ,"3&,6)&;-!d<N)5 E#(3#V5u)&u)),!!s4l2a9$!03 .#.#5!,E![1&,+;$%<5%?8P"20) E }"6*:/oG(C&.& %%1 1/\% ("#\  } -".#}q"  G:l!q& `#&" FF$" /c }& {P1 @o !l 2 G  -Jf&1 B_c @OI7|`1'AXFWOlOwi Sq~4 >%J#h_"ZF!oL>7 P` JS&/)3UaҺR9|ryj$^T't`XnG;7sߛIJiS()۞$Xlum/-]Zݸ\nP6!H(`A{7HAs9+m~%_1,Wd`dZ~o%{=)&Z : ^$5h!7v,N /.erPq>V-+8OnR J9ep6p0,mKJ* J0aRA'/rodq8m|b72GzEk|ouN[<3DC Zr,`RRܚBsRS\O^e,j/a2iM5eMi">ހN@ [<ٷ?]d DKD o /6ji'%ُ^?^H >{f= {$K4 eo ta:Ls 2 @ie & e[2  c%+T K | R") pQ@  $ 4S&^H`g| Np5* 5b  Gwf  I   `  <JZ  U A: JW_P}M *v" $  7wy zU p . qm5  A` { )['y , PbA1Q/~O  \6Lv; P } +8 mHoQ~hY3.DQp H "z`Ou_tftYE _ &d1c<^ i]ZNE C  _2r va U J "Q1' P 4 gJmd /L G"M=o^ S ' y\ Q  xCi| ?   4I o;| E U j : [m:IJ2 } 3   '  q2  Q Kz  =:w r?Yl n dbXh m N ! l r zu R   ssp|( _  khJ  -= CeO9H.  =q|' p k t h  >  Xskc##4_  \O D L'| n ^Hu*qcoy*mj+ [ Hf O Ts@ V ?{>BL@Xv <zwR tXQQ T2 %isP\S'tSL' Kv_85 14 %~m6$nHmjc? 7 Kq+bS1 /[  +Vfb 3 SC 1Y.&'  tzC7 \  jC=@4\ cE R  M  #1,cu[O  TE f @ cC quzgz; #0Tf  RKHV  G h :fw ULn>kBk2 ! y( s   6l@6  !   F }/ Gw'T#Y5  w m t m.  Kf :AWk;f%O H^ =  0&{ ? tS;{ 6 t 6&mV z |Gy 9^ X Q qM|TA9y]\QIjn 8Ax w = uZ((L 9gf1*@dO;MIwn '. Y6  `vj  4 CQ+G| M   Z 4$/  @-=g=R n ?pH7  > $Yl{ A rn, } x\RTPZ   Rd#7ZmE  y i  D ]  H 9 n @   v  <x bo  ,  G   3 }#   / L7  =  D O \ u y %?d cD-   n:VKOjF |+Hr    F(Iw-f? F J/ IzI wDyWxZ}=@a!Obi'PlSY%4 'IPC>e4 .W"3y=1t1fBy&|]lw10lu_B1SZ8lo j%pIQ/Vo2نw X0i8YK_33Bcy2(XMo@cXb#R!ds%(!q5>ص|zC[IjK Om/D8_z:}A#aLD2oymLkV=f- m_=CCm~cR$t^ +7TXkPk O]l2G=>,pb'GUedܮY ?9$GbFG6r3q3$qK$)0Sh#8E0 ~K >OnA&mcMiH.| 7[QZ1s<*8P*i+S'2ni";/|v5"Uc] 2Q,$X_s\^z_V4ArC 7h[VG.#k&uJ{<ql`j ;1e2g`-UZ Eq}&#>  g \ +n  y  h  } 3 Vn d h  2 7 i: >  1 c >&E T V- ~  AU-a7@Dd h =m l k p t o{A 9j <M fh   hv [7v  H   ~, N 8 f u5 y z    l F -  RT Q E l/  9j -CT. uC KU  [P M ( AW  G  q k z u{ G \ O   5R f c  & 5 G   s  @   C R; |   u C,  j (c h H v,ES   "_  ,BR]   F DHa E X L  B c  bd V P #{` !@i > ~-QZ J n  nf 8 J=+5 v> K JJ;df2S BA>"K jcYDT$% /Ewc5$[-FB u3 $uBffEg@,Vcu." rq{APnsiym-'61oDN~WT-zlN8jy r%,?{RDA3 hSG \cb+8y9  s  J= HG0  Y =/N E   y  31IE $ 3  } & }  N F|- Z n  1 c    N 3 1 ( V U Ok \ 6 j  e#   q  /HTjXJlo  ?  DT  5 @   I ( zv Y     }   ~ Cn>  [ 9 ^ f =    : d  0 | ] 2L (w RP Eq q  { . ?   43U w ! }t<  k(d T Y > b % c w  G N | n   W  3 dp r  ' K 5i w ? O X+H m  C I  J  + 8 r y 'Y 2 T ' y  x  WZK%  Q o   YB6 O  a? . ) u5 e_I$ Z _%!2 ) 9 /{i~oDpLc7U'f)2&?a.s<=2Uy<.|"]U*1~w4T6r[pmC+b^H\&"sU7P_7)jf_X6N]G,R<:ib,1)m!0Vqed[M|Y BNb3:31i_oJ DgMR,"g;bK^[zsTbXR'lYio5:MAI[!T\Mb)?JbA]= t MX TYt y^^mBd(P^,P,yh0D:C7X A":wQ]\d5#/ Iea*[F_#LqTm Q+|:p]Y@ IO[Q{2&6Dsn2}Y=%8vo &]Ci 5L0T}_a@h(qUokuhK,r1q `I(O B)q&dv.2'5AxG1vOIi'IlQ7cK7}]?62V.s.go4TA-8GQ9n)Fp; (L*VVbF#A,TQedbT\Vk{Q6oZ%R3Pz7TV.y;D6 &yHoVOpl\*"L=p2)+08zwKyM/bfu}$FaQ DFys~5!Q^ ;0fW,mwwHCF2cB)$Z]RE_.lTV$ ^I*8eW'=Ml YaPxH`1t M- bNL&k1pI?q]X>tK cO62V "|p t[;bU&RT7g6o=ZCq w!p]q{p0j\GLV>G    1l   > 5 K H v~ O J  y# D &#    !\ k Z Jf  nM <1}kA(vZGn)\JbbJNhLh\Vq=K[ $UOq76"u!?@>n,OY3  8;d[ !6 R6Jn=M 'QW_X%mnMqj@yuU  $[/{  C  9n  ?  sp < T  * cE    8  1 :  I  B r PY  N\ a u3p TYCl~uCVRD0! Tq=[qH;~Uoj,n3BE/1Aop<"gcg\ht1 G1IZMMea("8+1y%(O%MW oWJ;_G"8]ppG]-EIgNzdv&5Dn YK0Q=d_!^Nl3<~m@hU A 1<U:?OY!Nz+cZhMs'8H'owt7au uXk!xV! ,Dm&//%p/n"OyK_qg@~g<+R=G,V`rxRu{T7FlIHz:oHo}yb`Ep`v$z!SiEGEkR> otP5?W64Eu~ zGKf<m|y;b<U1,.XD!Y}ZikOKb1 =JG{^Cy|HzUAKWJC{1 }$j HNzPIUc dwj* k&P#1x"Q*Ov~/de1/?25xkVL 3PMvF!kKAR(m,Q~d.[-PZD<~Jvjti=GP;+xZI;Bu!nga}Zmy2\~LK*{r2C*(7waYW&< ZH6DE,uEc\c^DCu\7 t<QQi)V?L cnDh]ki_YHsZWGB1thu;/dw7Z$R3a8afI ONo+dMM9AcX C2[ qiw;zZz{I?,~/.$1z[:x q~}=!08wbESjyP vx^:jxD"[oTR -vOI%ntPZ9G) Kz:{=yZ_:F Vgb;XB (lg +:.xKG~Y$3V_>s]Kl 6 ,AV+E&-'k%i,^2A;W>V+T_GNG*pf/@afE;~=u(^rHP 4KQ(HN>dCSx8(0S>TE[h/D8q?&>>2~DOQ&A7mqh+OR@~i zet0@hE] Mbz2[c:yHvP b{~csp[HC" .!9 z35$ys^ViP,(4i>""<\tI<] g >NB:h7RoEuA[Zxv$0-M `|t>Au)kAiOa8e!NXWTYAe47,fl>37v-hJq=V<0b3gSIf8Lxeei"6G|SKS~A'^UOY: BZxlc7 r)<bl?{Ry fM>8nKPaG#$wY)=~]3u3pMk6@tC mH.k5 b>6z"`+PwV&!"MTcA1P.MR; l1W;)CX 1YMIq$5YAZM25.TDUi>\I$An 5!Ma3]c!Yu*GE+8$ h<h:%(2l)rx 6!@5*"-TQLb@7c bfp59ErG#oCz]y\mfcW~OB^<ropY]XZtlREXiy4B6G_L9[uu:lO^DomF2;j<w+rdz3a}b05$0)OIy8 3)v> !AO%|'m|@ IU;wX/@a. R"i>JT Y UhUG_zBo"XYNTsTA]X FT*K') Y* X5X]s)=#k X?N4c_c@,&f@[uV#p&/{;X%.4C&FoSb vuZ/Nl2^O@7V";dLC<3zdLaOi55V3HEj}ajfltl8b?I: ob:v4Z|_sTG<~U)9V :zi=qwp+s{Yvz+|Fvk.I``L^-WK5:f$2g-4:/Z)bAW&B+XPwpeb==R(%p =G[X`@-NNe+fkeY&9o;)0*". ]wzwFNvZ"i2t0Y9(_is{l/V"23;83^dDkJeKwm4yKoU+1.F4TWgcQ-eXd57"B=TuEpp%fZjyzYdns.wEorm.'YP 9'*63['Sn%^- dB\CD\d\ _q zRA3x*Mn\3:x$/# h@~c<n3jT6,{VbUApE^~jCcOY&! F1WJ@q l881it?)\|k7D3E_AXB`H3C@TD;6[Nb=ZUWSAy+?dc7^8^rAI=.q+R ?_v92[8%:db7 > c iA ~p!pS7PUUK ,'#KG1C;{ :6Tj ,Y     y  S *  7  V   0 + & =  H g  0S s f z b t   (I  }@ 5  Z )S L x &# J ];  i  ? K b   f F \   9h  h . !l R  U   o Rd s ?q Mf Al Rn DJ    C  / 7    M : A  i m U wL * o  [ GAg. .H *Of^J.KT\y^pjbB w KP@eykn24f}8.}L1f/EC5gyQ%b'rJR=ZA5NHY|j{aQ]Iwg/4>m[zj5>%`"DrH\<]kP_|UQDDyp,v3\-V(BOqbhbqT|Qv/)N~M$" T}nuiv9.De~ca{D7wl -s:Xa~D"_lzks*? TKs&-Z<9H.4AXLY{0<['w]|C.oz 2 D_"5< u@9ntdG]2IoC8.RN!9 SN IOwl[PZp$u4qAZdn0H y/qQ#.8oj:XQa*d#$* = @2,4cv~NY{U?T)% 2ZA+I}S0Y K}@hd|r'[E%R<Ht`5C;\iwrku>\?G/YSVEdlKZ%_DYa+)zs9 8 78"etsQ>015T8tNy>Jm"460 ]_ 5Q[K?HWYf 9aVq{`Q9!lWO 8)7^wIaU6y,.ZP4|V@FkkiQlA     & |D V Y        %T Bw X d D # 5   s O O = *    9 y  k R ! 5  6 f B 9 ` j  i i K  y = 4  Y [ Q =        d{  z 9 K   S $ P v n J U  =   T?zS{H6%t`rP{_h$=o.kwf)en.9So7NG$x@}(a4{gj@-1E"Fz xx0:M#&l2D"x_SnflcR4R7c%m3fnzLU0*"H9AQFVysdB$$ ^]d!r58|i0.wcd)-,X C~|O tV_gjk`=B%%tJA@n5jRI)b@xdvQvDTN]jo66 m'XI}vq|jPj#[.fBom0f!L^K?Lg:>U a*!|Ta<\nvKyuyCpQ0 = X#K`! *C#Y!ukE9X8&F(PaM &bT5Mh5MURmjjbI/Gfzi;SUu4paG#2:3t]$V 3;00/UotWSvz@,'A9~pk{c\?mHU0\uhaq|pZQ|cDWN+=N3L"JsgyYQ1R4Y&m/~M8w[Ai! +eqc+P)>"" Xh`),^0n-g}=*468$ ~Q7 rZO3wON[zm,#v$fI|T.1KaMm dFIG;atva:gEfc)5;h-/1^uaxCn 3+mmleak aBIa`ETc\_y^"r(aJN,Pn :*EPB p.kmB^"!135LXo~%<;(z69'fRpTt6@tM_Zw8_Kekjo]+J*Q?@ ]!FA/}I9DZKRRd`[@u8`o!cbP+q=\S{4GvwQ5'*2o57-;DTW~Cj:!  aZi\)@>Jbb>5Bc7`+` u>o`Ad.m9ZKcK $V#I,N-j)|,x>5{bTH(Q@0SJ#E!_3YI^ilo[(n.6P,|,Fq_M/fH)TFwUV^X=p&<;D6P,9?C[le`jh^35zdQ4Q4O/w A]j8nDy#/"$Trr Oj EE!7$ 1o`Z   ;s}aK;.3c EQn%UG$6kynpXHH@U>iVeQB+ `[du0l9K)`ZfRkiTQM ]#FA\Mi ,%A rjZm->)(K"W z;-A|A}MNt2u{-u9y>OcT! +S^nW$H|+aX#CB?W'\0_((-y-P_Y%#MZMqj-|Gt@K*v_~u Vcm)*cqy, 8 }E1Vv|4w#N'L1,@]W0'zTN\rwOf(tEB"JzA.Ic3I 'QA30{BW>:(E+=eU;u0yOV67 "q;X]<uIv5p ZPNP'('P*z2^kfuR'+5j@uQf7UDE%s7i2{\S6[doKmKFCV`Q 1 )*^22(cAJ|0.632++O\sqw2[""'mu7V+q^>r7PM~d^c[~NZjiw.r{_r{k9(+.r:|aM3[LPWpnflo,**=q`V-Pdbe#3e^1'lp0e0a*wB!QhL=|+r:/o^ H}-9~S=*?Byj@kKFP^02Y,$-YK#"' {kpweWXif+L1C}`?: # %;dN(X?wgyUfkD MS mu  | {   ? K D L s < T W O I 1  & h 7 ]      67 ,=    2a @o ?j ;v : 8  D . A 1n M 7 # K x r O S a ?  7 h, 9  9 a a ^ {  L    }  | f i    i    W O  i9   \ P  l[  { g  !  G & V h "   P 8 b >j ;o 0k 9  0       1& ?  A i    ~ W  G \  P 3 I  ( jmhvI{G]* % W]Yp\8(ML?'HZ] K1{eAdl VNZDZ^ `>tsnaW I}fs]Q?"(P8b}fcN* se4X<~:E^6Z.S$7.,!I "F-FI 2n^+peq=0+ iG2YP :l$qX+S:DF Pf4hS@<97I*Ygjy}OWLYM~xi8V .:1i*a$2'{tft=]o.B5/kafb8([mSrx exrBMbfw5B D.~p@ot5wHwKX-QD8IP6v epMd&Z8;)fQegPm Td x q\UYF5.3+Z S?2l#eFTBqu{r & w [ E !    \   l M Ni )*  > 2 b W Y{ `H /. A A B F J f +d -K Z $w T} bs ;o ( Uw 9 M > ~ {D ; q  [ u {    x o q \  +   V] R W  3%     . x ^o q } k 7t L P O qu?M6:kA ~^/K9eYbnFn7vaToXkmJd>{af7p;v7UDtYHnP/t^U3 D^B{P,ir:A&&Ju\E~<]_I/b8) x5oYadcv0TsB {4R- |fA0F1OV?T*1)Zs>M{#{] |ba%.P$pjr d#H*+36R0fLjy^I{Ey]rWaK0:^9ZADK`60GEY-_C-8?N ;{ @&vM_mH5i/C_O#DFX(4SbVi(Q1Oe0So6I DP`C]Vl>/0W)H?p(y;( Ptbyb99nOQ|q -N_ 8M  Q l 6~ u * j   $ < LE UW w   *    r | Z Y  # & ! &   + 1 ! 3      ` ~   ] P = a J X Y . Y H [ u   " ~ f , v ^U  c 3= /- ?] (O  Iv 3      gi A )'- idyy*+%a-} `/ vncID6&{1gC"`0jw4&G :YIk']{roxs`l.AF\H38Q\/ wiPo)pM8 xr[]~Y)A+)P]Sn,%(J$[PPJ$v&( sednupnqF5hqw0{IA(9;~oRdu wTKv08 *vtEby9p@y9M B('7@=x\9 hoGa$YB15.':FH(wwaB dmaVymS(q3qsKHG/iQ]s{{^-^q|OnD`zC@l?n>0U>wws,o%(0;H$~lB3S`c;nz/*jvK RU]j6Z? `Zs}2$5}|Yn{C+=y/8Bt%xa>YQ#,vu *!_f 4NcCiDXkY)L3FE1$D fq[gbo=i13(7N)Qrf$'hU>fM-=6x ,=fT$2E& v1>86aytv=M;$/mWB!|sPzWif ;ZN3 &>07HR\,t]W[O+u11 x| {+x8%G)IDoi7n/0Pw"g&q$d~dF*$(!`zq;C 8=GiAfQegC^BMCS<aA|_`3| 3 -'hSB1}iD$9YVgn0.z\Q@:?2w4+MH-*CH`a6k!g-i26IcM .&s & |}wj18S6Z4YK;15$zG#X2w+  j!vtx#}\[yQ t;`IWsP;gjmRNqbcI^dh@~KXuhi#* & ,X!xUXqp`r\;(c-pcKymn{yxE!7WqH*[l(hK#\X5k{_Z)A]+S&Q^KSE[(EIUIM D_rI.6S)f' 6-xZxb\/[,l Se3h%gO<Q 1 7 < QA MD J' ^O   y [ H_ >U 6P 9M U^  f D` :g ]   4 +  JZ |\^83J<gMg>.clePF/Ps]sMw1T|ZW*GTR 1sM12Ae>q%9(}k 0 QPx_gnY,g!C8t4 IFE~Qn'(~a&w(Ucyp]I0bTea# , &)"& 51OoJg<0T/vf~o~p Zyrq&eEbX)sRI"%KgcRFY m!c-KHfWlz6|r9J vpw_PfA|cs~ka,&!,  "416@4b}%#?:lTYhlZ<]$A lO9h#iM@h,"Na3_$UHa'hfakbge[V80 :B/)P*b3AF k s  yGQ$vnqp@!.63!+Ej_pJwWy/Gtdfm Ft`e!<V7zzvLKG0ylQ%!4p.hD- 1+ a@ +#w/+.\"Ly#-'GS>,Ftl'KY"edYY-SHGByFH~>APQ$0%/x4]ZNDK?bNqvu~@d\dzypn@ GTK)Q4/O<kbq@/iHnlXWD4AC*7m_?Jje5F3Hd~fKSV*>JSD?:'~qkbRLe2oIS*CtYy[sb? = A=<}]| #BK0bV6qMg4 /cnO+}wb$-#@)a(K 7HB qn-: mI   S 0 D w#} Oi <+G%<H  i~ ~+"@ F,@,$O fU,G!U!*i0%/A d'#9   | $c%,h7IO|EsmHl8Ik_KsDmY6AW-G":Y4BR'L rjNJMًу ])8.IO6l-Pyk߇ 4-zFޔσsȷАẺ.ͪʮjƂ쩨$!Ϧۮ74Ӈ) ήg"MLR]Ψ"?19܋=nk~+%?~zݲϱPuXۙ>Ƹ"m <`4jd`!Z!Pu%\ (f)`)[+ -"L0# 2#"32$"4Q%63&*7&8& 9<':();(;-)<)=**?*?"**?)>+A-FY0 K3P*9X.@bUGmJugHt?ok=5[/_O2Q9'[b;y`Z5oV._F2F;V>] >j`ε_uB2@1dUM؎VK iyPۢi۸.{<m2lQF٬{ܛ:'/n0'Iڏy؞B.H׌e,w}աXgnEֽz38;׽Q׭I{^ 8DLZ{ݒbܠy=C]?`PpG"'Yo\L4ݗޣ3•r ΃*&k4T?U4Ͼ=дFW*Nlgt*dTVhV G K 5, S{G |!#%N')x!M,".#i/M$0;%<2M&3#'4'5'V6p(7)91*P:*.;*;*+<*+S>+Z>+v>,>,?,5@|,k@,>@l+?*-?*?q*(?)>l)=?)=N)=J)=)=([=(y=(=(1>)?)@+B,E.nIb10NO4sSs7X9u\8v\4V0P0M\1Qs1T/T+L$@^!7"N7$;"8"7&<'@$x=p!8j4+f&G(O)#N I - 17[`~m=~%tnXdөj D&J`Q|ҹwԜR[4Ǒh(lQO8xqBVdfO/-5P-t4K[A$ X4hKqO{߷qOl vZ.)>%0M4ݱܒp5pI|۞ ](7yڧvיne7s܊Xڒִ n/ϿkϽџ<ܽy܀V d!mژkBC_aUTrNFu݁dX1:K@u0s W r C h l.7)D!8#%<)t+,}. \0!1A"2/#_4?$6%7e%7%|8&9'B;(G<(<(D=h)>*D?*'@!+@b+At+A[+A+A*EA{*:AO*(A*@)D@s*@+xC-mF/HI/dIs.H-]Gf-G,E=)BJ&[=#8Z"C5"84#7#8!.6Y0U*&(')W( &Sq'w'"rphCy =]   h; |\ A t | a [s H z+w  L fN  ^G 1 - O  IG:R!,m1tc6,tXCg*!9"Qq$/(5(!%O")>\2!dyfS q7 V LbWFX}ww>s%Xl"K BBDަLqndx(vM0 e;3;`gGh&϶1&Vܷ͞o!z3)˗ے˱9(ˍGQɄܑۉٰHـٓolՐĞWφn2M:ʊسPT|ʸS(ҡѬ ݵس;\^{ޑȍ3tj^vwLx-(& ~g c?H28 2g!j[@!|#"$(%)N' )}.r /!G1w$5m'><'>W#U9-u.&)"$4':'`;)s=*@,gD-F,NG&V@ 4#-C5-$/!(2#56$7&:'='>$;k! 64-1b,($$(k*MX***4*+*F)(Bk'P%# #7#z"w"`"V"c#!D*pY7oh9!CY#! v = CM{ %]+ l,14,~$$) v_O@ "T+o' :%)@v#B9-2e(!$*7>: VC@@B I 5]ZN/4ߗYg  HC`pئ߻.Etm uZ~GjZ_&Im0 5gaO9"ԉoѹB`w؛& >iY$rG~xhPi?ArW!5U'F$ l?]k )1pM#/t0c)7d!WcMi hHw:H(R j-!461F%5kMEr6 ^L[E   l   >  S A  Z TR*#3()G%&qA %1%FaN]*]T*s܀\lm 9 i" / utlWջdʦaLhgcc>T1PTc`dΰl´Bv `]L ?JKT(U߲n \? Wy9cv 1 ~ > 6.2:K @,K/fH`KLMpb7n4>C3hdS|PbkKU r{]i^ o"   J 8 CPH%N+>*&q+%7yFN*~#S#BK23j I_q- Ea(#b2)<)$=&9m#61,L*)&v$D$L_)%F6)kB$qB13  \ g&x00C6OE:R?6KN(5C[+1 9 [+:G%>7(s*2,K+2O/  i   ) !.`H+*>)t" f   +&<+&-$)(*%c2/uzO l7  * Z <l  4   u {L@#fj&M%\* G R1`^$p0E+I) !W/F YL j?s;0 } rSa-u4IQ ,D6cKMGj ܪ-(obwP,Mt݇< x ;Nu=y x>ޙRu # \ _CIgWy+xq# 1 MY <+kA H+C   ^x ) s.:W) K  e ! N )/ +7 e #&# -c\ | !B7&u!3@#=n7c + Tc} >(" =ZJ$s&ZV"&&-<3+m,    }Dc?,S`!]$%)1+k' hP?o'j (" |FP"dP v11il7cra QxQ70L:ɬ*ƚbg xQaXdTޭ>4<`|KcMNE:X\oGJFS  YT 'L 1 _ 2 \(%s# _A \ F Pk ` q '-)BG,sLI%H4&2[ 6K_ A  DWs_ZM=] ,wx]c _ RXveێ f}ߤDNgٚ'Б>:=ވZ[` s[fkX ςR5"BOI`Y\b `o<ߪ5+u   ( X"P+ DuAmf6w93/.5qXcKe^2Da&EMc5p!(\:R$  -C 0)5g6m ; T  hI 7gw)%!z  gMfm`[ ( 6 Z . j ( :dSM f 44r $ #}up M   vC@ 8IxXVgxwI? s c j  [ ` ! F ~*(#A>C5aS<&c c$6 |yVxT4Z\"(b#(H9:0P<|z@7,1}T, k^KQ EX( p  ?  ', qGA6 Dy]+'Yyu> % 4 * 0MpVF  `$V#u]ES C @ O  h(yP* e 9    ;8j)wQ R [ P $  dy i~(#2r 03 9{-FX   c1 qt 4  P Q VV O; E? "#vFXJ J bj5v+4zt  |&T D[EoOYu c //%,]L?8 ktA=o!^k_CyVb!zY Wv .H;>* 7 9N[HٺIZb$"ޭٚYKl.rRY,Z_[*D_ߥ+cޚ]Q(V/UI->K/'{o%`/r`. /rlxKa .$Q!  1{U6c a '~c  =|2_rhN2H ,   - S lPh^CHT{ j06 L } SE EH( f-8 ! R ` I  V}' r:Q$ ? z{L5h  D#d%q *F*)^ T7 X(# d c ]R~| K  h3tF Gm?/iq ~ Ah]Nif`K=^/l^'o6jVm 3$i+7Q:kd{N+Q92kjU?L!^rCQd)f>n~l-|+~lo7I"l`xw*"+ِ!p HRzf (=VYMJ;lA :}1y aw*K?oK-}Ci/ q(r|.p/PW+)>5w^yc j :Gw >3NE o WA flGc*@.   U,%S K+-" ] .  P mk ? TQM8BI"  SD xVhR  ! -xdkv# 1O 'Z>W?c Y& ~FK<A O Z{w n zEM:  - O9 Di>N, k .?<9% h67JH   &atn!x +|@1bd lUC`>OmkLi/ 6 r>A+]z, .IyP34_ 6 RxJv"# =14yAg`pMw uS5"&LX/GT |P^J۰ 1l*[ݧ'~vu?`vDzG'#u@ o N LE-52 R1yi# {  ~  )k( eAm KKh z i J* : \{ { ]I F  f k ,c=!# 8 X Q  Fz( 4u 6*; .+ ?  Z I:{ ~  vi =:x| i !   a' v"8 ? | : $ n>L2 _C@XO>p +AHF>^`0xVy <gp  w]wE%9Y&}HNOqJ{X5NDa ~ $$hz)hHH ^9)=H  C" T x~ j [   e l3  *(k @ Z   M+9b` TI8x< Z  RP.1 TS.j<U % Montj}g TH,=aߨr@ZcYw+(%A {lB-S@aD QYHbjOPe    - Q O!Qh Zn    ] gF ] j TMq r :ZC o B wa }Q ~ DQQ,%Q)b0n4?Q84eL0tph6<o hܕe C.;0P]:L@ S\ڽt0]Kx 6O:QSndq.HnSIut~]O_!$U*a;UMr H2:RZ \FS g ` #kk#\2Xz1{ ) ?Lt  &* )}N 89]Y -!3 ' 5  V<|zw/A%:c  8`vD ` 0 Dc: )U] &5V~ o:8= D.D s  o 36 + @   I3]  iA 1v< ;D /C2q hR  >= !.&P9O6 ym&r l!n6 U< O T!km$N#[W0Lx8]f* Q*SG& yf"Q47'|OC] RWbX;Z$l{DbSDp{"~?E*/&L,>}-}E(X{i1D V8Oo,C,|: )/f} 2x'0RF78 Du5Y!=q}@Y_F  s T^ &Kv  e%  lsd 9 "    ,   +JY&] b .  D n K ) #  5  l  0\u;+ d h   &:  wk 2, ? mx z{[ f 5q `|&<N d ]~ F `c j J<mpn)]M7 JqY$Ax K  ' }a  >i3*{ ߼j\=Ey^w/&`#R.(irOwddC'rHNEY@%043f0L.l *W? o . E  A cLn k/ FN|b`0gIu3vukv#:@WffZ@tn R2=la ? oo \"rT^c  X g:C2v   ]I9f={x\Ch2R%!fAiMwXL~IT){GV?,fJ=1m,v x= 1!-Yx{MH8!pG= _]1(#s<7Al ={?&Z  Rh]l)^6v e Y# E  a+ &QO6f y  j   2i s l 8~ _(0 _ 4 D w X %   j   u mV^ , [ ue0x6 @Pky l `AR# >! G; 8dc`T/5]rWY;  =H9qQ d { Z s3\^l=P)A\jc$qe=SS? uQ'0YLtJ+?RF ) BY="7H3r|+bdl}%G_cdQk$8k7iBB-r,8`yHQ9.1ls(@)V%,+"QgC} MzxfzA<2tfS)oFz$%mvm]XE)xsvNXAyw~?8GC  BD  u`  M. + 'FG AP4o10F0 j   U N|  u !&7v5$B,Yo=$wV,%s2 , @}I RVAtBH^  < z+bIRL zD [HB$z.>{\NQ*35R/XNLI(8|+P0FwL7|D 3 t]=0'-!ocv Du"_U B xGmL]|F9+{HK|qE4l5r0^&BT>v8!omIxYs}/1 -t xY!uj^rahx<RJkk K_ t f d r  XQs t EqG{;E m T\ @JX *  O C ~ !6+?  IQ   Rx ZXs]) iv-JwwY~Xm3tu|o|Rf  XG_(g<HaRW S;<Q|UDkayq`t #N!~V[Ye#5F2olmz .rU+Mb6Q}[. ,8L ?yleQM~fa)!+E&Qg#NUzS+D0+-nYSj/?(E oMok,n}=(]6cZ>g/m5m)BQ =]PH/.<asg'{k  & #<x" )A[N=z|xZ.8rU+[ 4 b   C 3  6R S [+N^89^vAk:b!t/cc5  0 '.W. \X  7^?,a'hx&y]io 7U0Gkm  q.oa,Hz;CVxkFQHNN  T} :h&ZG W+w+B;/79*3QV%3-J")y";$/)jeT HUv>U~iD21-suFKS`tsKKC`{X{B75&6xziVHCCs/L[cKA?w~"[HMu ehRDna#LZk]E(I~c$ O \   s/e E 9 6 ] - g A \ Zb ] G v t   Z  K  < & H 7 / s      o V ?G P kF d  <V (Y  ' B e  4 (/   R *  | ) [fbDL9 c . 'TycjvqSJ*Pd=:/7Va|D)]VyM]#wGf[^q!h;+djL@&vEPHP?NWgknI& ]=1I5;d(oZj"OU,em` ;mo%Cr DT]*A VkzR-% .0Kdo@' bi P%I.^N691b0v!V]x!x^b c)|AaE ) w6 { }G~3!$W  R 8  c+ ;  Y'q ~ ,  M q F 2 sKu}YZ j @   ` \ \   r  \  / A   4 7 F.  r %` - T   +~PU$I4i`vc z%>&u T/>M)+I -h.PCsb?A}0I`$l Xjbk=se~qSRM+tsO nLZg*oz:rgPJ#l( ^yt#|X1KBQNv(yU+sS?9}\*!vnM hB8YE<w_"BM-SL%T=hR7 +$Q'wtq G&& :V@P:7rl@Z]n,ME= +p(3WpLQ GW {F5F, E`r8]}%-((#32)<=E+\w%ak%)Sxc:"=do,H3"xFbW?.lgD+aR\8J TT|yg=>=*|ktey_Z~A|<ny'Q"',V:,k?SdGK2W Xh$GneA _YxB(g=2V iCoPn|>]2G8#Gy3Nn<;Hw*h,.s&@y9#w}<s"]Q`U{  a\zK~wJSR>ixsV~5D:(8rM|PP`QZh7vdz;x<h @sWH#~t7")I<Z<dRxU+B^H?R U R -B pW 0pj O &   j( u pA @ ` l l )6   1 ^   > S\    U  h    L W & 5 e  h~]? 1  !0  - &  Yb { # ~NHP<=DTm0&B0N>  0sFf;|*3!#skf<j;6V'I`i-Mz8* @Q'``tEu\U`Lr %m(w km^ YF;sKR , cL8TX_TCZ|B|u>>6uG6<JU?L!'}wwg&B8KZD"gdgL6j\D {]1tc%:8k q,\NrIM*38  %   mE#/}X  ^ nH 3 )+ l  mSqt2.tL~VMjb7db'MC,8<HgcZv>.nIn  P  [ZQfN6D!`un[Z)zBTmy7C`L?p&xbEr&)N@&4TFqfxX,!XgjK";n:FS#Ot 5aaw&T EpR=2PH~:x?;{>&u?9(1wUv0]9i=id[+2qw/II 0e&[PA8]#B$lt>l.l[M* -   Z{B:\&  | # ?    H.  TnUlU*H[fR !h {EOq   D#PgG1Xb lLosNt.ElVBg 5VBDd2 L8y[$}=7    BP.fXylNU=4!D*cqs: @? R`*gvOz.Sam)R/K MfGT*ZMEX qSor\ GkYiY60j=Dkm:|T{ ^LKBA @S( zoA'*=Edf32~dJ9KRgm?I|T; Mz0c?V.na7O]V93Ax9z*H=i22({T:c#3 +}1_N   > a NuAl+i /ShJ]F[%X}soydJA |QO_/fGNQIav2e=6T}4nl&~^t: hZibKyP?=om]xI;-7NP? b\MxDH(eF)Y|XQF, S<EBH}ZrS$.:yW(be1M4^OmqDd{$AeTsg_ZYY:xSNQN&#d9/i~fp9o2-J]P8WSS]9=ksq[P'D *c]jXx Kj(JB=fA(2TL@Cb+vM 2Z:+4v{)nAu6>KM}/lTp2Xg%j41`?B>^c P"1#3;sy sa;$"?P:q6|S7tU~!~1K uW /s'o, ^  9;&np1)4wkm&> GqyIL\]T/Z6e=K^_\)kw} ^cDB0GZO#aJV.m taj|^,WDRm`CfX.?jC;]hkAQX{vp7(5nE`3 E.j-]Co[D+ Aa"diSO[ S@<8R%0iyzE)o vdh?>u#%}>^@#dum>XB{=Md_7/hATP^ yQaq"j"~rO?<-@IO3<FL41N}V|~aB2*^.6C+nPfEU|"SI5%&ayEJ h 1M+ {       w1 oE $= cp 55z L s5 3 y!y{} F &*BK|TVs#8uy(65=~gJ|=K7R5kU?3*HyBa~NhMBa:*_ [aK<]6o0~HSYEqD5,#tr~F>@z[@#co}C~u sX@2Tc`'~|FQ#_V&in%6g6)}b #Sf_OE6V/dhWdM@qN>5,U% |0gIbB?w(L;/Co7 ` $xoj7awh25Ak Ha__tu[:D:\%Xg`f^-)h1pl~:Dj ]~{P"{s_$V I ( PV0/[?6K G+{c f`*hBB`Mvym&jBI_vx^n@c#A| ]hk2h=+_v  `b8zq?iQa i;u0 V>,7,"1kI)z0m{n?Ln29IE;&vQg^N[Zeyf5d|21 ~5qEvSVvaO8{ ~V R:2$T-6ILxx {n3&u#t9]cNRSBL>.B/(T" Cc9J>\<!- K ^ V{^ X^ 3   c! = `6  #   _ ` 0 Z \  X ja T   k  y RC ~  ~     d i4 8   ? ^   z O  gX  4 av h? C y ZG 8   `  ; ;  ` v& 0 d f j   E k b U :  D  {i R S I)  Z =?nkmE! c&=+)4$^&0Kd>3g`fj+j0IiX:y.Vtl(Zo)%V"/$W?}"sz]%%kWQQu/X&}*VU QN-J F}c(WvXDM` {VP fk2FS>{[D0d{+(1?X@:-{Tz5`:B|"F6 Uuj_)dw'iVRfMhpwPU-  N =cs H d  s  t , T vj w z  V F 9 v K I ] $     1      I  B h    9 -y 3 S w E  W k Y? (/5>RA9GUsTaXuB~XHHb'zq;H'2u< Q=-s$s5s)A*8I`>Ab+ELSineeodX#nzqsb*W V"c?=M p^K ;^(~whtL]BIaV&cTwZwm -5mQuYdinc.ET:|kQs$w$y,cai TNj6?h=i%ZeXs>iNX=rBK) ~BT>ax[ 2-L|-ZBdk1|>_tv@Mtu*=M3S  $4JYfq?@p$~22 dOB{^~x7izKl0\Rzx31y!E!wh 2qH:N$RCHqw#>eR$jG7_x0]`{c['=B#{pN.-RWrhO( vDf(j(p"0&K&'d8KMk=p5t]%<`_=zLwg [S\P5c?Y Lm(t9I8Q%*X-"_ _  _a*x1R[jKo)`("8b0kx06!&-PFJF{qrKl;|*9O*"P!rYd7YJ Gxl}^yx EB[pW0GT=T/Z/^7f8B_4YAc>r=UeCQg]dPZ; SjI`;2|vhPJ$u)d'!<O_)"l3U|7wZl#v{DF(Fe^gemB&p#  8:" '-Z8\K=cj $  x$x= ~~g<`ZTgIa".A 5a7e]KL!B=]Htqbv~C.?;t@3&NZT {76=nP*#!-O x@R4TzNRcRn)!/q ]LQ?=,]S8sj;NU54O?Nr>ndC; JJ4 48&;dn'8o2{)+.VLI[+?t;)g6|a`MMcXv% P \E 51_$JdwR]Vjbkn&a2->= %84v%1X-D1  LUNnXtuy`z2r |yr71{^!yf"HYU/^lt<.aJU tKd3q>P]4gDiZ/ROx?R(yey+Tn,&|5_[;Gk4I_LCk:x^+8/`y%Clm:*1M#X{xUj FW>k7i^tEvJJ(A<>b8Yu$<  Db qOI}*RypBk! w F_>   Y    _ Hr3{d (  d 57k.:UDIFEJm?ludU%}19|BxuEJ?>@N&>z^p (D`EYO=_ut !}0dY3 O:4SYX3X#wFw9caV>QiF-e ,XiT+C7>]hanfzNk,O/" p3&PBdvb[?7=4<+ * '.4$-' =@yt9oixX":3fDxh(~ E9f|Z 2^YFvH;8#*r{vn2+I2A X% s     Xh &= H m, c    rR `F Z? X. R A<{T10hHG RE'a)L7YDkN(QBuCop~B9P$L%&^twYyz;/p!XP$DhCO((}qnQYIbPV~BUbcmm/^rt.w>J f.Jv K/'DsO&`[/`+F_3PJ$e4RAD ZK(i{O@QIAP<d$G64@ }4:jPP|O~VFI^q\tnosq) 7 2 Im  r y  {NqD6qJzXdox2  z(*2AD0/qb7c L-Z={1b TIg4cxVpD?Rp_(|s6%J6@82!mO!~cHn WoWP( Yb 1ui{unlUm6Z +yIz]~axplle_`a[?n1NniODr=X*c:r*0+$>+I6w]`eJLTJzo T8CS Y 9= G(n-4?EENd'.z%ny9ZsNZr^}IjM" E2S^\_yV mV^Bb;Z1[i8iFd2n3txymzkl{|rrdhLsHshS}C^uWS^vdv{YYiH]'*5$I 35;LfJ%^=:y9T"5)enD/lN~g.NqW6Gl7S]Y7n8Ja}Q1)8G. YN cm|iAGzm{iCiB31 yr`eJ=>,  ^a\0 vvVPjt=s#632uC "UA1b& H IU6KP:hTYEm:OB$( [[s5RBA;@I-hjmts}e`M:;(-!luG/Waz3}!&zQD__nQ/ly_sUWexfx )\#a@yz#3z ;` <ZT>EeK 4ubIa=x]Ob}tgeapwyyy#-E j}oleD &1D`?y}Qf86g= A9WwFX8:)#!)WDz E;[tZ:p93C+@J#A8Z?Pq]NV/O0g:|H/g=T(2 /_QA#iPK$P~E(/R;nmrd|,N$.2o3MSyEar>V9%(MxDfs^=D_]<w}&4OwQlkBYV2hXu b^['PD !Sb   oVvU=@Ud BWvp BN 6P 'V+l$l X0 o+//38r9H,H#/ ɼ˱ K 3g \[ . kL"\pWU d'-oY/n!D' c n  i5r{ c *  e$"R  Y. k .su  (| _  G YRڋ 68a; $|eTN "  Q6M0qWY3# . fI61MI"T R %9G?/uU @ T S K wu~ 2X&*uQAoZPUKvi<!5E6vM ud! 0+q+73ql v)5x7;r;1|Oߧ-.++$ 8CxM mf}@ o4;:I \3owk:p!! w#Vu]Y4 .h_ !un O#o{7SL  & E 6Y$n%`[ )asXF^<LcM(~'6dex    UN2 6 g #.@2U `\ NxYA&P#F  DA?U y9 R' @1 w V[g$_4R - 1 y/ p&Spm='l]*qN,q6<ly.?)@|Ex#]Xe/gחfߊc Nf Ob)5'~P[%xC!:" #/~1A%OT pWu,yc: \~RxoVv  0 hIPYxMC nI gbUN0 0 ](  +]    z:fH  xi; i u 8FE t&\ Z ^y?wq#   'wu.5 t2O[t"0M sBWH7N (S9<+ (8?KAv^f O^,~ TJ 4)R&n6h `|& / p <~B+3_r 6Luo O, MS kmgL X W=0)qzLc &`a Ro :^  <w 8 ,W k FWKE pe_z F  m r1w% :v"~vSK  Qm&CV{_\%8We&$%  |y+ t tv -y \F=.S zSCSf> |Oeq Ge"}wa:.)70T#jJDQAaڟ1:_all*!D|#F LcoyհΗuXNi>0IEgPa- pixN A Gr,SkrJ R-7L.h#i t * ;gv   p)&#f+'oV@K s"p#3@V5w :{[= Q 8 M#+#J % O)\!\  H \XY`s* Q? e)0$ DT"  . IW J f  P 'i 8u_e%wv&M` bSIR7c %!^s8 OX w$3l}<}Y 3+ jzwl $/ K6sop3z S pq A&Pun Z s֎cN: Z4q?3z ;w'TPn}0K_NFgr ,VA u jv5? :vd$0 `I LU`T>bcHa\9  "e v{;9 +u  8g N }A D%*H" O߻Y'd[2  ;};  W fvFNQ{@7$Z ^Ds _ 5!_j(t#-FP'nEj{GM sE-2 ~/ # XXjr!x)gGG: M M>MvK  F &\ZT< D d$/gQRK xe }  huUt+_ i 47Y @L p(? ` 9q$ \ Oq 4 cVXZ$ haiD@Y",&$ z!B# .! wwuvFDhQ(6Gklq { E3wd%Pw.8_ `5~0>),H^z{ (*9 , j)CY eSN0 a2 2h sXrEY)b@D 7 M}('y"&&& o&lOF`q! f- =-, lR] Si?s`k +"tW4 L , b= i`Myd7 E : | }v^r:zMu&&jcF4]UUj E*Z4k% 6?"/# m1_  uD$ i)  Nh" 2w -)V/c aC]O1I23Rw"0F );1 & $ Ph@- da2n Fr6+,`y Y!tBxFCZh! Q ! )lLWiL=> c2h-Sz6w23 R8GP2< A WFlY2 >Gsp D?SS w [pYHoQ Q`cM *[* :s,6h2 u;S0Zy w''"|f_a][C ;AD-,r C6hM I+ 8{X'  Z  +?T 7(3 , |"n} !(& (4U)a=Dq8M')V! %L C  e + I   |X( | vC$P :WM   *R s p`r0jk C 4 !FC  4Q F+ <!PP6Lqf $^!   s ` = 4 ))%DTg#.2" SS85TWK"pE'mDM@G9 Q+< `== 1  Rx & 3hf&bi ' )~`b>ngM T &Q&66l1N b Z*vU"@ <  %Eq p9 v : u9u X$  HJ;QE2W d S  {^nI.QD 9Bc?(Q1a d   L ;9vLpl{ %j/ fE/=!!&I xZ  < Z.\ h{R AA'6$ f0v D vQAH< #!T6Gt# "$" h yE7 ?\4)I+*G (cg8-H u0x99 = LyFm 'r wt h4Z H bBN 7a7${fc .= w z (`ehJT!9tLCof*:36Y7f{UZ="Y  U.S, $E5s"r^ zSX$q$9 ) 2K)KnRt )>_S\, :d 8D~A?oQW6W c; 9>F _{M6 S ` i4c qc31 > 3feT0 ci6kC9E2fE JFG :lG M " S^N   -$ } S~FgI}'G#  *QM Xv> q   *I(LhQF%uhA] )E /c ^+ G*9Y H"3&6w@1r  HdM/%yq `(5].q6P A^,u xt 8,h[9{73/{ d$'<ajPi$$7 v9l_|  )sa@?o^ %' MGPpKk T .$!k~ yq2 ~ z, K R+jmxL+E cXx  H7R)B G D6 q % '~? O DP`5i$0 ' + ? ^ Ca EQK k gK <5$3 g # ' Ndo R  Scf 6q/n3 Z Lb D wnCEsf"K  u#3b # Iet V>a#4 bA 9 Y0W!Ul4HDw1#eS seH[&fwWi\LR X)e  N{Ud  '!_  gDM854; UVޓrJ 2 $)*;vw0 O L @0[QPZwX)  ` "h*G FIM r d @6e5L6GH+ @gu7;D % G!6K 3 5+ k  v N/  *BZ i3s 7W=/C@@+p $A% 0o }'GFJ!$ *%wj 1 !$|  y'n1n}T} !N r1 cqi\  \bV1'}  X2 _N7S  e  [ }Jr[  4 -` s\q e _Qz]0lWar ^ Ck U1A@P F ".=ZB<DfC Rpܯ9ox/ i kHXcT:> klQ4 k9{Nu<1mi m 1g (t[NV d NZ O TpvVHKM Y 7?.2F4  *%pa~F_(HB# - -i b V:8GL[ R Ys+S- ( k (  %- QZym [ `  n y Y \3k wfy L#` | aIcK #&4R  yXG!#w? >$8Gr A3P5~%] w L'9:%bm8  qJ1cs[tujW`;2\J@+ U=BTkf^fUVtH:(}P+.f.I) T  8o<M/T_+TF DF>|h< fEf {0 1!f* u  0k:em#@ 5A0[.R Afqh<}N @m% E (  NmD)PP  a|o g:ۭG 6$<3&p E *D=9 J o u%# [<gf6 Du~ y%(!2c  EOa{L AX%EqX" O  8e ~yX F` c> uNoy9 N " L .YSuWUzY4RWk PS-l`R  KPAb$ K 4]@wD}"QD 6G:ZAmhl bV ~y@ >" Vh=Y{XH;Ub ~bC`W74Bvc(@D{HK R^\2myU F3 C  vmS]KY /- 8 LJDv 6  B  jsI$ ?) ^w&Tu  p*  {  W78vt}j  %y #l" u >p AMbZ/  P 8 b8) @  7l#p4 NBq\#" Eqsy, Ak"Rr~#O,ILW HzP6 .->  W `92UT, yLK cNW#`Pm} 5v~53 0 VVnNZq$GqtKlOjK 1) w D RwG /jli C  p6&o+a ]m )   nDN6Ri 6#[CS.`HN D 5 jl p  XFzHQ Oi{Dy I p% 5icYRRHh  R[ *Tjnw9Ne%w=N3 4) /3 (0Me *B$'ycfNb2B{k9]C+{vp$5CHvo.Vl Iv&2f"Zr.)^2k5v/A*liK+6hx:m9r:FSC"y7%/n<*P=RnrYai8b Oi2: ,K"q(.MzO5tBG:wc0!"D^}k (t|,{jE[qX&W0  Eg5  T xHR a*b A  }& g-!u VT 6na {T > '& ^   1  Gp874QG"Ud %>K2H CZ 7?c!=*gRDVx[ VG^v$t/c3VOoI4MqX,6 i ,1Qe4q)/fK"sJUoW15u/2:Rgw?7n2lJl(HYy>;l*;1^_(a{hgX  ,S!4bYB^E # y +weV* 4 `sPzQRez$9wg C#LM?~ G|? jmp99VOzMM.E 0 = w Cet-ZOk!8\O|F~2Icl# 8r= ~  <cD) ~s MmMe+( t'  8 Jbhyip%uB8I`~ n/\h+Fy.6mMe#iOa 7T+-\*x$#UMYO EtXxYyLV<Ss);WK  ++J]Q#F U. <SRN*oP|JYYqB<^  UMSBTEHOi>g+ oBi0JXlZ"l#Z 1_D=F?e-rT12*19ypkci"u}P lfLG (^rn&/ , moI $8]B=P y a)\# |vxUcD. Zi 5 32:Y vAz 6nSC VCs@)|R7 K I P.d6{6,)L~2EBDbV;a7 H)l4 s , Gm%X&/T| H  8n'Kca3W(`;"O ?\"E:4t] mpeuz< E  B mvcWg#sybK ;`5R'+fu=U+Wn@q7t,7]a"ss#Z.'1,M e4d b0_ZI5 ~C   c `@6c- BT ue^Fb  R 9l o?K   ,Wu? XR+T?$n <BtB?Z32#7s u orzf)['<v4 c  ?F0a9.Y<5yX/O! p<}w,>*y{H, o_LR q.CkZ>rz@1+  ;yBa=a? <z Y %wM6v"=GL`eBnN|T c>$uN(p/XUD.xN;2(kC^6Dg_ xkW7BSzp(g9y:Y.#,FP_\+v@df/>2IdGZIgg(9#H~ h=5>EgA & & \J`Nn;|.x  5 +J fw`.on Y 8*WLb gU #%2=.~f h?r)^?qm g D *);<J(N)n1 tp _@fz ta[s+ { f%l ^H/` zpvU{SX'$ = AdOow *YnLO#B 7.S( .3 3'Ph^;ypDmK4?_#G} sj@G =giz&jE1cxq>Y"U5|m#Z0kZf^5PC."4'9v<DT!2Ju*aH m'"lw 6P!$-GZ  |Tr5I W f>] < ' kX  e{K  8  d 0a 0Hk   6I-K u`(  Z >sA { s R % r IVh 8  u1|,  bT%ec W7ur% JJBH6IUW *c%a" ^ nFE`,6~LwHt9,sUFIo>bi&o 1w(H #M~h,%M.EN9K7_,E}vA+>hvQB (Y1 '5=8Kae4! N Dt&,+~m%cWGOr_ X>*t? +gT r$ .IhS rJu afDw=4 G,f-NA929{U 6K-<9:MA?_c7R ;#>{yc H zf2Q> mQY%: * G_M#\l szbSYu 5V%T6@eEW+$%vmx5!LPz9 b*cVdjs3{2uH[ow+mpb>wO_dT(mA4JONz1PUmW *6\D|HAs?PThSRQ_0>)W!_v@Q.sia!HR?tj8 ')72PbiO'yF,N:2q2GVueXmIP1:}"q [ABa&:oK1>uw%RbIVPk=L&o9 q#8`wD`E@j{N zhGKM1c  J9DmUTW^}O @>}|g7(9wRF8&e4`WD /O! G E*= JaU)- JF3wO9U I u98Ea/z6:]7B9<% {Mm$Kcg=BS BkDGix5[5Py] , g0Yray`?2zTw`k%KP p?{l 5 7#87\\'tp&o {#jwkan2b6p&1L1PRnMIz\;* R`:'{Zb NdncmCZ1'q#XHnMnV)&gv <}'R+MwCbh~kYAy'k d9< W}S\rq+9]6Y*<=[5%&k}C(tkKMF U;$Gs[`Vb%/f0)$Ql@&V(&z2LB9pFc wTo s]&gQG "<!B^8e=KP8\!Tmh Vp}Q`Ji3~:EVymEV.H ^Nc Ji l;LJp s@Zj f_5_fyX&qf9+ [#/s&ZD$R4f sBC(^->;`]\g'-Ke SNMVlg}} ,iMrR6vy[>MV}"k51MuC73yGFt0QA0IPK'cMFp Hr-7g0%{NHU#C&fvz{WF_q[UuSEO:1()Qs#|z}6`mi'5d^7A|JhnCGG2ve1 dUiR$s Z ?~F*Bp<mVM"oR}VGk_~2}&]Z6>U^1eA1f(;N18.W|,`,;jaVOOk4<z{%V(<:x934rdB0pvKM.7 RBCyt49 PQ'2Utm&d6CU LX+I@usLM&HWv7~bw]%;>M}6X%\q i9r84c#PS%=9Qy-BR R0v4Q}V \A^k:[1!*56$2v?;:wtB[@h"!xy[_^<,t{&?2?4ULtg?\XD0@K < 8Y24W2Nmr2C sVSu|;elGCW<cE\j~hrGb3 D}'xNYQ~(Lz=0x)\e+,^'nkb$S,Ti|>&WC'x%MNnrrqg;R#I3OU' qX 7C= aOIoaVY8 Ms>XC"=ide q!OGr4Iq;65CyV(Av7$,1Khb$h+{8GxE+FeXz\b-pHb=v1`?C9HFW(N*Z))?m  A(Du@-aq:D51@|wz[J6b!f >0d5: $$gg[(4.9X.5zd+HeF@TJ}VrxL69]od1f`LT^~IzXC7=o{?|(S<{SdOdF?u~V0 p|"(0B;Kl*_Xz^cN%hIxey(`QL|W|\<@@>0D*ibxN ;K>%&kMVWCx{8U-lX=k^*'e>KIKw+H30Kurkb~F s6\vo;3h \:lA~|U 4o%!eh0a99&d,|G'[< `=kqjhfhQ  +Cn)>Qp?|AkbF'JYHuq:]'oA\wwV>D >;ge`ETi.zH >ZJ)ghPC]m +2G5P%0?)4SBr\UkFo\#aZPqp$-2:2s^=mY=H8 'j;-?horZ2.|vR -8_8-hF ]F%#&h5<F[` `'^|(|\OWl>gPA4uUqOpU(C%m 8@.grE^i5+7qj8Jp]u3mY F}mWiP Mwb)OtDZoS8-{Sn@n< wT?c^T35rir|U)/5!}5$RqEeH?G kZfwGUV3e\"l RdBm t^(;YSN\d#)z, pYc unQ?UlpuxvagB~ $ +>4p%d:GD/UkB2<+zvAj-s.%<m,{2m(FHCjT.FPar~PbvTo 9}/. p@d\A}^e?Um@u&PnpHX"ra^T8z3 (.K]PW\'ns ]r!8hYoBBIJcQ`vvins x5}e6b&l]iIe-Zt5,C VD5aeD_kJ+Qy!tNa.~3S^t#\G~]N{(xO j bmsJ4 q/3+{z\|h_Bx ja!:YM\uNo2e C P/*&\8d&4GnG4  qqsQlupnLldoqy^TMJN`lw|aW^AEPagRo'M-(P@>P}b= {?S~ zcQX@ R'nnm}vHw<Hdk#A#k6eB#i/#$! {tjxy?:!'0:.)@W*uw (1kV*5{7,Adw) @~2i*$Gt3 '>>}2BsL\+vOP 1F=m ?#5 "$XR0XdW$7~f ?F%n:{}5XgPdOU^8YCa~Y.E%V(v:Z\ X   z H  c   W o 8  - <_  # s>  W   ] g   ( M  C _     h_  .  + 7%  =    t g Cje|Qi((++I>X[bf~#C !q_0[/u M       # m > R ]I _Sv9T X(\ 8|i'{tGUO V2lWuTZo xJwT]I%=?]ާ_q=K٤]=+ԭI3ӭ#~߷dC;\̥۱ۻ q܉TͿH-'g0ϕ(ΟPEk}cI -j|К4wmq'-%V֥֎E5MRBZ܍pݯ&ޔQlvG`X-SBlC=C2-]\ 58d3anh9Dj_r_O'>` es%<f[/b f4Nmc*p u7Tc]k(2B'7S`_J5OL@5h|p`XVGPX&9Ew?amq]X\T! Knv91fu\700KAn;e^MCC,Jb'N>&=&;%,:-$8#)7}#6D#a6"5!n4t 2%1/q- ,G*X(&7% %M$"!.<N 7 w 'o-A d XKdjHU'M2s]=y?Io?9b.=#|gKIHߠzv O|`bڪyfV\{X Fٵ][|mY[ K4֬Tpm$qmJBn֤sx"uy8։ 4ֵ* 7|.hي}R>>ٖ':Vh9ݣ#.K.i_!V_H}LqTyLOz }Yy,yTvhDF:Th[H:&3A=y mLz.qO-D1{l$g3i>_9v4QF]\v*r xN+n2L%<\+.IN%R; J  9 N , P u j[kI2swGB;P5[+bU-Dp;PIM+=_Hua|xFWdm9Y% ^1)cvG?MZKje"8KZ4FV*q.q#eh#]P9ߤ*1W܆Pg۵EGk0ߙL!u'=QoޟYcs.WH޼L5.GJ 8vMPZWJr aC+VvM?beEX}L5fsnWnJyG3&:g) x/tZ  ABO-pcL6IRELaIuluOk9j|1iU?aFDC>  H`k=`4Io&rEF 9 Rs :Q+2 t ~     & `    a J 3_  k  B 'Z       d [h   Y    a I  *  1^ + \m w   " 3uK/]++Q7P I2b [.{k- *}itv:;2^pzx0e9.4v@E QRAz  5lcnl 2*/kPPiXF!as6D"QhRc!t#B{h`v.VhA-Ug88U QETD\1vg2E~i ;|~sq Y9&-\L yqWݷhJ^|ޝlމ-2ޤ~Cۨqzmن&lڷs۸FI71.C.ׇ0EpHz٬@Xڻ^8v-e-ؑأغ&يڼڑg_5]q.ڕD!Y'۬ HܹۢAgڙRvRn٣۴ݷ--܏?.ډaۊܐ UFSF݉]!߳-h~/ z>M)go.y'>}s=nAu&<Lx>E Fz_E:}(o#jS?%9Kd(bEQ#[>PyL?@Pt_qu#c|<, mE-07argd5OaC X !!{ b !k"# # $%$)$$Qo$%%%'%Y"&&;'-'-()>o)(mp(+5(''['2())))B)('e'e)(1)j)*'+?+*42*)))))\>**P*H*i*$+{*+Z*j*o*Q*))R*R */))Y)i(g(n((T'&Q&&&o'''6e'&`Y&%%5%p$####z#q"\"y";###d"!"*!; Lb@^OifUM053R) Q* ;x#,@ SK    a 1 F  ' 0   '  = k   .   , r    D h=C35b%HtdU5+Sxv0Sm]kf6pKM-2Zn]Rk'VPhUnB@`J\4Ke\|(Ui%2 ]l/xBsv16oA,[$iCoi"Oi.k, lqE.-,t(>;Fx ~Y 1b*dJcJboH><Ovs"O2'\O >'z@`!X'Pa^*&HO_j cqvA=U9&> .U#KSSOi6bi1C21-w$,-5 W]1|Ji:fHY/C\Xlu4"CI}u`@I rS1D`IWsfzXLk_$*]=j-_}dnHMW{c|WL 2GLcrhu6 A]Srh:=V9 v-L?-M]"@v:C~jOPDQ"(!~UU}~h90\Z~=) hR@w5xD?!VHfSo-mAzho;8 -(wxNkP4|M4{%C_h f]7JH|2)p{\pLlr,q,U EZBaNl)bU0  6 ( e P v I 0 Z ! 3 )  + c  $      I % z   :   & n     3 : l \ c O  D    < Z T J ~ K y S 5   z~ aZ _K yo     mo    g ]         NG 5 i  7 %U &l 3 Vc  * 6 1 M$   /  \m          @ | } PC FF$  |>\w{RT`=w~S"I7Ol?"Z5(kc!Q(K0 ]C#;icb8qHyBll1mn6; )5~? .cG~%nk$PN"pP-k|a:vh>sgzG<Ui*  ws M P w  C  F XC Th X s    d    _ "        E- n  a  A  Q    j   = @K  s *D Vf k   6 y#tWqLPAI_uWO12Yh0[ ]BG L% G  ~xKb9i P ~ d C T4o$p S % B ` B K  N S  . } ( \] 6    {T  r  m     ] @| U %c N   ' n ! E K   Iu,#s&SJq!Dqi<%9v\^[)gz[Ags/&i@s_jP { vm4%iW"s**sy1}= uv 08M1um?U$9NC:9%RZRXZQ3vo@EM+j*k?st% ';2{U_`fabmk^U`]ZkqPj88FXe={1j[L4,b?Kp6EXO%wGJOwF?GyRweHuc$||#FU0uG^QYD D'i '9DtQ7Yi=c1O"X8~V2.g]a$b9xWIpSD#N#LJ ><}SvV#}9,n@kDt-_x~>m(^ [i6RqsjQ{b7W@q"U1M:0is/v!sZtg4f(hoX6ES ES2&n\`)WCS(o9nbxiE?n`vS\s-49]~[VkrpN(t^|S;8Ln0N; &MU]}a~tt}H#F7QWsnupfczQow'q"}8A!wB W|R-Nmvk>;>?a+k%.Vm4b3Z=l0]i 1])#g'J1hP}m!BZxdgEa4W6(afNby1j.Nm?|@|#3WucKk _* dZZN49d{ k wL7 0pn!hbi)jSmi-1v2fm ZDXQ!Df}fr+ &7/fZ'NbS@%-*:*xsQ]sBtei}))&.`uwZD"wm~J wDl6L1'D488 0"Rk[y[y[VuSk<k?v~$4 : //"c9C/w6|t VKE9L;HB'meWv76+i;h!Wc;.K=&&?MooE'YATe5O/ a" 6;/0 H:44sw5VP_{7F I) / ! 4 \F     / &W s \   7  | { V S s    q c   n *0 H U _ Y 6 , 0 = H I /Q :T K b  x*     Z / c= ^c U 0 l0 Zd   HG L   C * ( )   # 3 X 9 ar   a H    , J 7 W 3 X    : 17 H3 T- R 4            k g*    x s  w : 2 ] v J z y o 8 s    qI t4   $ 8 K L 1  Q  J@     ]# )    n L  J Q ; "    Z y  [ \ ? K S  G p < Y j   [ #w          x W E K w% 2wbT ncorNQztWGol6!;cDSj ^geiC0  1 X b O t  j M Z  < T  @ w w X *o T U 4o V x * | % < ^ y  R  G' i- ~: R +  ] ll        0 /     - t i  O( J Z \ ` #m <] *,   f 8 o q \ P S n | P:   "  $ .     6 P H M f m [ > 8 1 0 )  o $   a8  d  b t T p   S~ 6i )n 6o 7/  O 5    { b 4 @  Ka @=      " \ d gO>5FL8$"'k;4&]hWe([\1)bM 8M-fBsFCyi3]R\}zpMG2?9 SdK* Ndg<^2`"oRTdpuqb0Qx|pe{w|d?V)F;UfL[EjS wR]FX%5 PbL=YIf^=~!Y;7Sv$p1{Atuq't U(/3scqL649#1.#5X W&3UJ/hclQFuzKB34 ZlMEQO.|dPL>&0=4]zrf: re$HZng_E /'1.~s*ZV55kIoeo,NT[V W9ro]lxhw#M6c7XH_|cglN$3tm(S]{)t<^p)C7S1I!34R{iLY+eZwG}9%r3jZb?EHoT^>,UIGf3[4bCDiJi e>%VY.N+Wa3`Hk^ gw<[`,e5b]7yRD$Os543*><  =(mrada5g<F/[bjtAI~S6;\b1\$V1j/rMLx]i3?$o$TY5.ST.QI0:N:'Jig[TaNA0F(& T *AD)]oZ6k6NG[@`;B\!&uoyG9W1bJPD<G4 q(3X*}pLA +)T/5HSi~K1LcU+I<!=)@CLbf 5 s>&iRm:q+'g7/-S2p:2NV G%pmusrS#t/  d5dIAf3&<voKvz 1<C4lIY6 1"M!߆K(:-`l`g8B\ 3H,R{Mk{s5Si  8&&5D UN ~0IVU~'w:QZo(LI%"3~ Xzi-[{h $ c **ٕgnߜ9dj5޷g9fgX@0qN/ARb`q8@B@;;eKdY0Rn4~tg$'NHRy#T-Cb!fVoiCz1miiZ#c]9T=7QYll:߰6޸-~yh>ݵܱOm׫.0:CP үBXߝЛAԤ]Qޮqz@:\u5oѴGٛRۺ4XqՂOپJ7I(5+m؟0L`x~Fp}WV;Cgl,}Bh>2&uO]kd:n=z6r|5w}S <  o h- M?6**-#%{>  " -7'-Yg$} .G!K/<+(3k(&%')-!1i#3A#3"s3$5$7"4!2b#6(<(K?*E"3mQ8{V3QM'9 c. ):5~M`;U:(Sk8*P9T5{P4Q:Y=6Z4xI% 3*j9:O@[B ^WCa]B[9EQ1E1kD4^J7N6M3I4GK8Qi ;/6my +PEF|w/ܽQ$6`Oߛ>1SD$i3\ : $Tur~N >ӿÏթy$aؗN82Z:%ڻ8ϭֿ؎ݲݪk#ȁO #ެɿݟi1A܋C%3%D׮% _?Hi9ۘ+ߧ{0l5plۍ$ԧD2?A܊tsi^rN!0xJ.ޮߗ5lCւxڥ?NN1;9۰~kLuی6uMv6ڤvLZL aOU k'W< b1$UHא;2C#AZPAW\%>)ayt92.s+a^Jp^l  `2F R /  ` m aT Z4E  w-^b P"6F/O M 1 N(`O +_>  D P=` (+[$W m|&  zo Jv^ (-g3 h ]J   )| # !* ;6]/A +7?" +<<}KnjOv.{]-H.9j > =7Q%a3 ,J/> iBcx*{ 9gPA uP S )c7R7w-P*-Smb vc&sm' |; e 2;'#'N$}.  "?" (G'Jv%!+q 7"; +S" w:)-<(6V6(; +q!W-$2&5#2s!-(5k%s%&(_+'6.g?,=c)9'6J".1&'d$0h.*PA87Q7mP7'43#'~$b2)s:0->U0A+<'5&l5 '?7#4f '/.:"3*;?0El-@&Z7|*?/I[,EG!9& i&%0FGcHc7J(-1'4/@y3G *q<0)% *f,6/)"qJ{:9*Z(#5 V m_bo_6QP7RC$fhSvn2*<yES9G3X p Jv / RRgsfMD8  iE ' $  -  `p 6 z .42"+ = Ys !u 2w?Ed!7 m',/ $"+^H  s- G()!9 s   w  t  St 6mm" J5 c#w, D0#p- U G: H|"/# |J# ?m Ki  "q~%0,wXo)'&6R,:>'&% .&b*F;.Z?)%22"&!,3+R[$$'(*f#5.C/A/% 3%D$L',c$b3%"5#4$53)<+?-'[8 -'[*$4-'84!k0n-g" 3& :'(i=(-@*^=t#40"`2K$L4,#3%"3+<0/@K+5$ 7k#828H9+O/@1#0T$3.C1Gv%"7,%2-b>,< *<2G61MW/|Cy&)5$k2'%5,$5(:-A.A(;'9-BE,T@1#4+.%:.tGp0fC!'k3)!-'b8S+@+\@$04'l"}&#0K#1C!P0*%>6*=(:v*!n!)D#/%/,s D w$:)&D+$l<&?0.*S $IO_",)71"`,< vG(b(Yv.GM 7!y *  &VPKf%c P?k%   f]a'l[rR^u[[|j0eW{/oz00|(5> >!ݍХܷ|%pIGz=ޖWޢuPҪwFQzzGiۨ/[B;׳=Xh* (ޏDݽ?%|xۜl=2s.E,0#,[=MߊE7Pibu`n@>W w| ةe60B H>9nc\a%Q3y=% IZ'@u p}@n-9-b~M*5~5(Od/-A `Wm&V %iy5q96,xR۳=%,*tڮ 0ZD J1cG<8Ic'p :qyO.@  BN ZP^  6 5VRi r., G? /:  wYj! E|   .' K{ ?E O T <W BRP&m\ "] j OVGEDL6  #9y Bz* 10  T| & = { X816J F  ^ %xti#&# i  0&e|e oH !dr #lNRi<}(k ND! Cb)` I'; x:V x;_z qK 4 6wvpU   ~; m)8 l'X1 ` %F k( %i YCE@5   8 GYE  \ fWv ng \= % 8 ( *kE  0(  U H 6 G * y3!O)'| ke@ '%6 aXgBg e0;w  n  r *` hO^ \ W7%"TrPF )$J!OWe4$c ` kl WS8 E $ N I [\[jQ ;} /M`q\ N _!eR+4@ 6 e @k D)H~~_ TZD swf9 'j5H_]a7l Jpk zta%f.pw4a>}mC^5IG0#; p`&mw4bSRqQdxRtG'-QNG[5g ?& y:99 ~f;\>S97Pe,t+AT;k6ZxjT=-&D }\_}-qL}jOnQlax dtiR i }eEfx aJ @% s8$9A ;V ba ,o~K> D < gy 3mx 5 G2MF22  I "| - .pt/   & ob  +ytQ  c n ZWp2H1  X 7 3? WJ2(N Z? J D s f* <N ` zQ&| p SP  h0g w )N\ K   Yh Z$n  I g  c  ? lS PRq   W s - ! - # g =  I  F  ^   \ O;~y| mAl Y   cb a ) K H!|Q  g$Pa F ! + a)b o O&.. . B =r8<`[ eY   m v  &/$M&:& n I\  *8qS . "  5 M T c  2 wZ F { 5 b ZC = Fe`* eYN   %  '~7, n GN :Rs*}V s_ h  IVaL{63 H 3 `ai 0{e=:G6\|r R ~ d=CCXGsi W&$k;eCy'1TgsA%Rl cf ]]0n6A'@gw SHsby`^}3)  &[bUs!UC1[o;A2n(nKr.?kc9 ,[Q0|"Prw0,y:n$hE+bA5ZhM[n`JL8`&3d]?8\Edvaw)*&p'[%6T/Zy(fq2S2g^!AC46_PD9zlA? 2R`@/yBRL|CyELhqAZ:$&zU uwapJ%i'f?Zw(H |RrNڏ%6\\3;#7f@k%]mF'~8DBPl#)ac=tamx ZzAcKt5v8NA\yc5h5:^b'M0G-C57a)#'x_S aW|_0ZE |9H<\oWQ{#) !uw}(B  pg ?A r {\9j[2,1oLZdwC&;p.G4w9Drnx.Y^<$&Q {BEQ;wp M6k^a W M J [>l?Q^ ~6mlJ=  D |_pm < 00p :%wI'3b 3 peLb N 'c  V s/]`k%O6 N~>FzV3QOs~t J(>i#[R u XQ~k$S3B%}v{^f<F~d /W~#\/i0RJ63TQ?hB}Seo-u~[Wh )utN g,G+q ,r7,!{.$sj> ONT{T $D5 dSIs+Z = > 4u<o\~% " \ d{G Qey3E  Dyv$pA L z>r{ A F! N  g sD9m [!E2,r 1 B} =  < f E_ C o 1T }Z/{ mvk"% 8$ L ( u ( : ? NCH = R]1KE e N  Vi0V!n XRP n-`5Q~8qV + bb,%`.A a F!Z"8(?"&%'J(IX}%T !} &"#K!!H +Q*!j!yo  CG "(='37 K9  zJ8} o 8&b 6 lgUt   ^ Tk {be I( b"""w |>    # np pBa ) \q|p]  + @ ^  H( ^ ?AH( b 4G 7    7 ._i m~EN@ < Lf0 j4  0p t +0 } `I *^ ~3W 9 I \   s\  f CeY  =:wGS \E [l.%yo Y  { AoV   I )3  <=9 ^  i; HjG L W Ie 6~ k k5Y 'yW& | p - u "`h .p gL\ * 8 AY+3<?#j  { bI /S ceE5 F tXi` g 88k5 O Q d [tL!*MIo!hjE=tW W!Ns y*{9dz  ,:nPJ?=s96`ET  &wI`G56.`7<yji*|EGlJe7DOC }FpBX 0rCW.U '"(R?Ma *Rh nTJ jA.I [x+^?Wpj_z_yCY-q#9#(<{6Muf(8a]!-1m}w(J LsRzSm(QuTm$$Fcmg[1+ i7 `@ve8/w& +  L } H~h `O u   ;' ?  \0 ~ u P j j T Yje=  r   dhu_ ! 3f 1 y > *  co.  W % /   bz ^  [F" E m 1 v;     rY8t 3 ^ V   < p  0   ^y U I>Q g&a < 1 / 8j 6    H|Z FV  #K   H$'` 6 &)*V 3 H 5%,$\ tf q+ F *GlSE~ t jJ !25 > - |*A,v  d{nyAtm]v0~J7 !EKBq <^a ^W\>}Hk9P { p2 H?zL (k }4  8    mr Y  pg X:D] e]wo J <( nK   17  2&_Ga$  Zc   o i,   ab O . D (  ) * P bq m PeNr%v M]  ;e& 4 L ,, eQ4!  V : =imeM/  :0 {&  fEQN] FO/ ^Q  3O(<]bA Y  0/Aw8H (?Du m  _bp("1rcex  bq > WS)lx, @  OL2>^ #D Lc * Q Ro Y }[ u =9 ~   = `C'+ _"K  Up  wDb 0*xPDl/D/1<r x d"4t7= rDa> %  {Fbm?(b_;8;r> Jqv>`MbX$ JP9 .C_<et.2 T(k{HJ7%*DwmMdi5Und"^l ^1n?7 wI?}{AxZ(pK`.MSa@}PM700~I o'D&a%v+)aSmIw{FeU(.0C=jPPLV%'5*bGE"Qd{x^4;W W)uA4G*nu" &vv+{-UXV>a(36cgY3@b-4{Z KF'4uyPLa3vB/w<:e0lV4'4a"X$Pw* QoIf]5:>zxN8)._~/)_^q%do Tw%'S:f*v7E3(_5qF:KBS'Zs^HD5Y a2+C"jX{/J%q%9 w+H_ slOh!1 j2p4}|h~V2R4}N>L(t8*vB(>(RtfK8CB^]J\t1l'.J7L'1QFS5 B R8>?Xz#};)88:6L4 O4/wA^B5(}E"WZsORV-:k`h{9I|<#Cs;kKp0K~ h.-tiC%G5R q"H{j ~~V"p_r8*mbIK^eq*uEC{U5O?c 1c!D8)u+ )GDFSaDFpzi@k!jH1U"V3|AS!Y6ul'9$cg!r9R]9PN%7C l?7>]]"W~6l)Z;!cNgQu5hZQ4#X$jmcc%GrOw?dy QI[9>Zo,I\yNH _k|2fA%*AsULV:KzQ5:jy$&oWq%xY*0\W.FcN#BqrmR`vb\TB1.)(xv5kXkO\%)iZ3yHc>eM .:M?z Oj+;1V;j6CpmS fO'["q3bZ*dIf-vz4{eOl'{6LT{5',x~*eUa y5DdPPE`J5N:o/D1-d>k]3sm<(f^.tfIJM /:;4'RX:HL0 ~xR#1 )~<`(vNW&L$dPEqu=,-@Izv`E%tzj0@e,L3}= wMiO@%|6O!;. i iDSsoK:, BqG{+ *v"G=Y>zD5Rj,2:*XequQ|tX{Qf2.MUe7zIfkdi p}"NP]e+I`?\Nj8\69pmV>Ps X3eRI;|RI^u!y=}6QGquuU9$dElh:5-M.X724@ mbM4ElnC5\;E W WuR1le#A4 $ \#N zV#0,m0&m @E~Z:_6E6&"2zv:ECp CgHE;,A#d4zQXLt(6k5PMY*  A)C1H4:S8F V?Fpf$76(o3z^od 2`gX |@d>`ad70jiN00cpuJK6NdbtJ+EiC* # scQ T5[kE}kofRW:|gAjMZVDr:[J\> :  P@wDc31+ L:bf|^eBH&0M|=m jUQj=tZ!Cj3&+FeF9LtjdsaC+0,! q)ND"`l"0QL9_E9i 7)JaGww^r"*4>7R=vE}kvgWlP|:cuXK?~"o 68?fW<X  J_r] N\>oc6?Aw >  M S>v;m J m J  l @ R Z ; ; o     N ;    O   ^  o `& b   '  | - "  >  R 2 P = P    m  o L ^ M J ? uN ] V   O       k U- 7 . / [    `J Gl U T5  "       u  ` hi x ` 4 < f_ ,   $  r  / )   V7  =  Q 4 &  $  >  M  & j Y $    $   d * , uU g K  Cg@8^p;zPiHsrW"Jbf Ex tJ!.s@d3c^MtSUL vDZ.9ezQR3^Pf1!zsZ I1[e1%Y8qKR*}!8csfDN4 nf~rV|mhv.@=EK <NOF+VLMVF<|[4M*~9U"kr _RL@$=SD)3n*F<{!F0KB#dD~m/5(JBtp_a%L,4(1Z6:)*o_k8~(:STN %^zJT0%ueJ?kcV   vN?>]xUiY":= %c6.$UH z1`9bo :o?hI S?HH%]N5E+Hvq=Jg]3uQLrcGD/MRzP}[Vds)C1/52 H .q]KkyW3 y#Mkj|od$Q&p |ekK]3Lb/pC 'opJNw<?Q2Sp;Vld7)1x3Q#hXe| <l$CR " 1Y]WN#Q9WYn&aO?(pfyQ;wsWqj\)vY!Y'l0l0 w@G+7nURtzeTa_R"mfV$kg@iV\ G r[6 Sl^523~ dq@p=zh;&|X1/b-A_]I@W44Dazb8@? ^9O` oA*Ehiv] JFO0c>(HVdT/-BM8>0Kun3`Y1m_r P\~L~%ENiZyTp*6mCQ'vN:gL;idM&&}LByKR@L M[)uX'`n8;(3,uW-EE $_Xjb< ?AH-+;P>+P2Fs:Ug%J  Ac*$$RN1A3)zDwUrJ !VZF`t Nsw;B/fOIG^~ :<1WQ.I_y 4:gnKc %E)H zk-Z&y6]PUF~-%Su yUQ{c IXRZ(g\ }Hly?aQ %bFI&6P HSn8} 9N`<u.eh_3D,y26~|;A<p4F~0f`*&GF2cjc*nUQdkJfAJ;"hY N U Q  P %S& b h  H - Z t> vS lP XN 21 4 F  Ue Uu   e d :    9s      g  ) * ' l 5 b Z2 y  y &j   f    La   Q c U r T  q W ? w [ : i 0 V h  H $  .B )Ov7_B=ZcmH{s}Sb}x=s-l|9;|W$}FDo~eS_5(I*m}SzD4v7%u-mM$B(,P`@Zf013Y!lwoT(qmf|SA_ie@JaZa iu/xWJh3$Mes6uiE9]\)%S%)p.bx[ :p`2<LNeL haR8s=gJ|H5vFhfVY,a3=D}'$DOxn |]4 KskZSm~gzf2|'EhF1#Spdto\Z'_dKujG&r {Ks M\hP7~.(6'vUd|=a$0$W "1!#{pbT5H~A#8MLfXy]y>6`_fO6aoEt*o.9*YBCpE?l S0_DM0#% 7M4%4Dp~fx3EKgPxt%c1TeF(XN?0k.PR{nP'6'/(c"fa4t&B4g~m\|MQwqqgy 7S/duX2QMqKVtqg' fT<  + 3*Rr_pG-We!+1;@<x(3vlIwrwk\Ev$S'MSe}zeyp'X2 #,H~]Rp!9 ;II3dm> Gu_}20;FhKr[P\5LIxqbSVrub{}}T1a=[+wZ.p`NgY^rDAqLu7  P#]lu?  ^({M GyL57$(H`-RQ%30!E2vYg2 f,(JTB$t"Y2$d L8I?\oN`3 , "X+FX[>9p%m% oKi@r$y ~ArmjCh& ? \@_mH}1iV`% ~Sw\p 8mkl4S{OO#}`-[*c/g^9}U~VSl^{xi8 =X?jndT`ENg }vei46Z]D bz[M*K$uH3xyseo  sL7URL$lI)m\#qQs \#{  a\ v[ Y@WJOT(QwLSIF#~@y @)'laxrQYF<,+M=R[JjJ0_>'5-U-:$zRG\ w sX&QJLaBZ15##!EpUff:6f2;N<aXWP(/.Q%"(8  q[sj JlDtcjjy$9W(n c5R*3pALIameZwUf\?uLD9HZ0W/F50/1> =H27I  R^t^++ *PUTx/euzsE- vg2=:w- l.n3[QsZ4q5i}pL"Q<i$5[wSDbd\"ks}.:mTb@k?pv1e-a=^FVf@Lak;H-(gx4R *]h{\1O\5XEr/8xVO *0(T(2.n>,O,<KWh:l{P]lbXxa@Piy"PD@;"v nJ+hV))7"!`rsdt-U(-E@V" Ce3+Sfq`Vz`U]x` J?FcD-u8kQ{U~3\);L%o`gns7)*+GF .w`P8 saHmsHsx1B|caA)ln!ULmG04# 11x`xM$5 'Fb @-0HkylL42p5# sl,5"vP>bh. 989l6Di?_^qpTYp2Yn%^ ]1iG[o4?HZ6L3;RCm#<A b 4UN|bwxw)38&E ^>{rXta_-MT3B|-^h>xMh0f&8cj .7@$p"o`J>;r&()5T]1N7X,L$ = 3H_P_A;`G`KT|1_vyo\;;3Px'L\qNp? B4V(S >fej+7ImoW<R^+Rk0dq3/6 fj(hvV;}1`P|+G>[87YcU$xlAvQ%d{m #F5j] <;)(#hiC]gwV8 4<)ueO8U}]pQc(w*k ~7}J*eh } d2MIbbP/ }oyroXQ%=Rbc'S4o(e@44'w3D=LKKNiT/#EDq%] h5\"34nF||bl:KR |S=x@;#DxQ%2L:Y'c sNX M:2qSiQ+X I]&2*]e^^4f0pgb*rGaL% ^3.PJTP "Dw'e` em|l?d]J!BSA-+  @4F2/ $VC! FJ'iN_ I7U 9f;w)8}(l,:3A!28'/)&]'\?M>b*Wua&wg>a`{#PJ,37X-z_adzc`{=+4^hZh'>lKDp<U:9&4@Z[nisF*3Y[-@0'( /gb1P@Uu ~e b     k> 6\& N B     u ?   / ; ~dbvhHQb_AH #][p8-n{OEU>nwXRr]%(-,A3JBsd(gheBLT!u|;/"g&;*\wK19,zWEJ5-6E>2r:0 H G -#-&(  0T-MbU`od@p;I[b\]r?lhC_ @J"6!cl!yyz$3Y9W{#P-rN^hZ5tG$."j|_7 n |c*Y5<Zf^RQ S ~:AWaEa|QH$-usqk|Gl%aU8|jy\M ^mW#:SoVH'yNkT+q1Y8bQr|uC~$VWqM! : qaaJgM>Aq(dgelu.qU45)3sdZL:~LcVEZZVtGhCJX@ga-DShQ.|5T wfe7>Cf,wow<=5_dP8&yl]$ ;=!H3$)Yk;!\9Qz[89\Z_&J\dtoA79}A{dii+8*NujG- ?Sw BX\_tEbtugB(c1daP'#gU3jE8,'^H oj oJ6[LC,&mwyntQ%9>#s_~zJC  {oq9\aenw ; ?3j,o7SS.= 9@?B$`(pRtfmWvqyh|wcp3n ' Ug <&WH ] 2J,rX&(-P)5*pjZJ# 1>&-=% 2629Y#UM iVI%PX*  %zrKYPa5R6BYZrUJ.;F@%;.XOT6D(  AT,4hm^!e3g/?3(0W!7r$^ K56RYH;6:AD=BRN7+V'+\DH#xA>>@QM@?9=HA'rjap~A<.@>IO PI-.)&dfe6CZG>|(  l<  y t      s M w     q    q  L a D  P   S @  o 0 ' f   _ h   9  } o nn aD A + 7 %   P lcX T %   vp   % 7 > C_rG|tF 9[nWSo^\Hb*LxUC. S/oOߕ fp j;eV+3I !,)^",?!  YF.!a%  JV8? h L ~)ރOӽL#?R1^!ߧ !ի˜ƧZҮȊ.zW&JG?7 lYσ!hz7fӟ<؉7גƲQ;ʘU31HlޥҦٙʤ$z3#8%S2>DtL@&u݇sZEAkQӥsrK}Ս@ݔˑ?g2D60q & J 0 a1x ? SB{`"#0T%5!1*&P) &5+>++>o,>B.@-@*w,4?L*;)g:->/=C 0C/C.C1F8N[;T3%L+=-<3F8O8P+3H,U?.@?4G:yQ`H&6/)7&<5&)~!( 9* *T*C(f"I'rp  *%1'7#<4 /!t0Y/9%/f#+"H  > kqZ@@  ,k#/ #^("s cR W e1 { V  ?ZrK*$aw&~aO*mdO9|ղ^DD٩Ԥ3Qܞ(GЪۈHա6ḎAf1mBܼ'΍ƽ޼ͱռd.UȿXz>PwKn2C!֫;b_lS%ITֹlj Xנ$7υU[rhɞ4ߋפ1$fي_FU׶S؉R5bPu90~yH]{x ^n{k+'R_21:cTg(`dwxQ04+c<[$Z rbF.I,! -{C[ )8CPZLN. .-s'< P#b@rhA  r,]% E vOm4V P  .vk L; [I vR7oxDd- iT1!۩FoROԘjлN˖qn[AOԯ{$;$Ru 5сκ-۹tY#HAZPѪњn廛6W ,b)/=(2H1H.D,hA)R> ' 9[*`;d1D!7M38P5Mc1G.3B-+@`,?*<(X9(M7(e8(8['k7B&:5 &4^%f5#3k"1%">/%$1'6(\:'%b4'6);%7,!H+&~4F&7y#D5,/?V)#!7+c'n7#5@+#?&+!S/"y2 L0E,+-)Z&A )k_+S)xp'Cy+,t*.((, P0%-Z*q)<h*)M({&b}'8+3.n-_s),!$h$X'+({'*t-&H !w&& 3 s"Ug& i$G}X^Y!##|"!cFAC&( GEkRT #(<$jg/D_"]8"& Z/ihe"J'{%#dr3q ;<  !4z5  Ci 4 L 5+ A gLX ?%  $ L [5A~Jr![] A[ oK 6*X+}?%k'n /!9. ]$ }@"S$_- /(T \ R   v( qt5 &2 S 3Y0MlTm!;MIk=*|'QX"xc &u]','G6mwKn?#w!\ܕ<؀_ѯ htШDIrޮ!WڃoڴޅԽqngٔj׾Ā 9\ ѷ|^Xݢ3in՟ށԘ-Δװ֪^yʀ{֫ײW I$[֬^(u|ׅ.ݵcy}ocݖ;>0 2U\#c& #ajf vWbAT BAP2[|4U\u~ul >yD-cAJU9I-+H "x|  }+xP32/ `|^ dd'8tu ,4@,A(sjEtbA F/@JE[^ ӎ̠Hs! <YE^ۭ~5]׭'%:Ɵ:r̤Qr^νG֧ȝ҄LӮÛ!RT܂e̬իpq 7o͵G涍ۂ ݜȻlXb+׶C/76Q(8bރPkS>< Y5u ގ9x>c$tsj:'=XA7'L" /3O<f} rY( j)?` U]  3%w  (T$E"#gQ:=)kv!J!8Aw  !! .%j$"g1 !$E*vZ+%p$i~j"(x(# !F 0a$(jp*-?O%g Lc \ b)N(^/1!?w" J$w"emC^a| !4 `mD,B")^% yUfm+oE+`^c"$$'#[>C&fE'E~1gH'T'&$'6'-3QOY82'J0'{(oJ' vO-:Ll(?B?$g*a*\ _"j +B"!:T$&7L.{p  I:z" (!/h%da y_q  u?&;]+N_"NO x b ^%*W a u SU"(^!SK hgm.<@/ :seq J"HWn u mV Ht ( DQTUSEYzqE*%G %C'y#~Fd$i,\.&[:7 ;#!-0$!""F j#=)#& %C ,%"2/+V >8hp%!y#P)++u'FL&:*0,")N$0"!=-"+2=)"1JO*"$2*?%9*t # s+4*H!"&?&L#.&B=?U '&N aEUs#eMz ZB,*L, Eb  !!q Alh h#Q^ M: <J3q  7  ` ^- `&P G $ #7d%&>A L /\eNRr!W\'Ad+Nآ]| -IH?׶!f7B:4y5PGˀ {ֈ۱+v;wip) OIw)\!M׻؁i۞$Mk2z2ʼn2֞|Ϥޭ՗8]ʙ2=WA CԂcʸf(Ե0͸f@̴9JÇԡ̓GKˣѓN7D0ԗƣϠ į){ƙu0ɶPp_ȤG&ǴՈɤo™ĖI#їi$# ΨN`LSU ̩Ncʻhw@3ɫwkα%%yƎ{]͸ZkʕՕ2AɈEй̽gҚ>j*:v.Wp }~Ǔԋ^KE΅ӡJyɀmծ*?.֚XfDj޶v֋ ̏ݥ[KlMGҁ9VtC[s=؞i'.y8eM Ve=Ruet KT$EI) .9md dvQ 4X{c5xu  Q! I q l"% p .!n' +-S _~",'U FP &  2* J1pa#(F<  u J;b&S(> R mrZ!o*Q)n d [G1&K]$v"2>*29#1 M #!   "+[)K jbh#$W$C!$Z#$"s,R`_"L&"^1~ SM,$ '7%CaIr#$"cbz c,H> /cZjH3 Y D'd)r/ubXR(q_y F# 7 i gn}'MC7*r:5 !7m"Q ^ At @ , - |$ ~c ($ %C: I  &  T &%FX>` ( >$b$ IV 4QL  M& ze  6t K 2 a(" o : # g""$ NB * H''`S ,"eq "*|,e#/'!##D BV  D%#16m '9- j ?%"Z3 H5b*(&_!4U'  \i" ,"3&,7)&;-!d<N)6 E#(3#V5u)&t)),!!s4l2a:$!03 .#.#5!,E![1&,+;$%<5%?8O"20) E }"5*:/oG(C&.& %%1 0/]% ("#]  } -#.#~q"  G;m!q& _#&" EE$" /c ~'}P1 Ap !l 2 I  ,Jf&1 C_c @OJ7|`1'AXFXOlPwi Sr~4 >%J#i`"ZF pM=7!P` LR'/)3T`ҺR9|qxj$^T't`XnG;6rߜHIhR)*۞$Xltl/-^Yݸ\mP6"H(`Az7HBs9+m~%_1+Vd`eZ~n${=)&Y : ^$5g 6w-N /-erOp>U-*8OnQ K9dp6q0,mKI* J0bR?'/sodq8m|b72G{Fl}ouNZ;2DCYq-aRRܚBsRS]O^e+j/a1iM4dNi">ށN@ [<ٷ?]d DJD m /6ji&$ُ^?^H >{e<z$L5 eo ta:KjAj1 ! y' r   7l>6     D }/ Fw'T#Y5  x m u n.  Kf :BXk;g$O H_ >  0&z > tR;{ 7 t 7'nV y {Fy 8] X Q qM}U@8y]]RJjn 8@y v < tZ((L :ff1*AdN<NIwo '. X5  awj  3 BP,H~ O   Y!5#0  @.=h=R n ?pI7  > $Wj{ A ro, } x\RTQ[   Rd#7ZlG  x i  D  ]  I : m @   u  <x bo  -  G   3 ~$   / L7  =  E O ] u z &>c cC,   n:VKOjF |,Is    F'Jw-f? G J0 J{G wDyWxZ}<@b"Pah&OlSY%3 'IPC?e4 .X"3x>1s2fAx&|]lw10lt^B0T[8lp j%oJQ/Vn2م~x W/j7![K_34Ccx3(XMn@cXd%S cr$)"q5>ش}zC[IjK On/D8_z:}A$_JD1nzmLkU=f-l`>BBm~cR$s_ +7TYlQjO\l1H==,qb&GUfdܯX ?9$GbEG7s4q3#pK$'.Sh#8E0 }K =NnA%mcMiI-| 7[QZ2t<*8P*i+S'1nh!:/|v4"Ub] 1O,$X_s]]z`W4ArC 6gZ~VG.#j&tJ{<qk_j :1e3f_-UY Eq|%">  g ] ,n  y  h  } 3 Vn d g  3 7 i: >  1 b >&E T V- }  @U-a7@Ee j =m l j p t o{? 9j ;L fh   hv [7v  H   ~- M 9 f u5 x z    m F .  ST Q E k.  9l /CT. uC KU  [P M ( AW  G  q l z u| H \ O   6S e c  & 5 F   s  @   C R: |   u C,  j (c h I w,ET   "_  +AQ\   E DHb E X L  B c  bd V O #|a ?i > ~-Q Y J m  ng 8 J=+3 v>J KK;cd0S CB>"K kcXCU$% /Dwc5$[-FB u3 %uBffEgA,Ucu-!rq{APnsiym.(61oEN}WT,{mM8jy r%,?{RD @2 iTG \cb+8y9  s  J> HG0  Y =0P E   y  31IE $ 2  } & |  N G}- [ n  1 b    M 2 1 ( W T Mk \ 6 j  d"   q  /HUkYJkn  ?  DT  5 A   I ' yw Y     }   ~ Do?  [ : ^ g >    9 d  0 } ] 1K (w RP Eq p  { . @   41S w " |s;  k)d T Z > b % c w  G N z n   X  3 do s  & J 4i w ? O Y*G m  C I  I  + 8 p x 'X 2 T ' y  x  WYJ%  R o   XB6 N  a? / * v6 e_I$ Z _$ 2 * : /{h}oDpLb9U'f(2%>`-r;=1Ty=/{#^V+2}v3S7r\plB+b]G[&#tU7Q^8(jg`X5O]G,R<:ia,2(m 0Vqee[M~[ AMb3:31h`pJ DiOP,!hKb@^= t MY TYu x]^mBd(Q],P,xg=z75U`a_+Bi?1C9D8X A#:wQ\\c7$. Je_*ZE_#MqTnQ,|;q^Z@GO[O{2%5Dsn2}Y =%7vp&]Ci 6L0S}_`@g)sWnjtgK,r1r aI(OA(r%cv-1'6AyG1vNHj'IlQ7cK7}]?53W/t-go3TA.9FP9n)Fp; )J+UWbF$@,TQecbU[Uk|Q6nZ%S4O{7TW/w:D6 &yHoWOpl\*#KtJ cO62V$}p t\H    1l   > 6 K G u} O J  x" E '#    !\ j Y If  nM ;0|kA(vZHn)\JbbJNgMi\Vq<J[ #UOr76"s!?@?n,NY3  9;d[  6 R7Kn=N!'RX`X%mnMqj@xtU  $[/|  B  8n  @  rp < S  + cC    7  1 :  I  A s OX  O] a u3p UZCl}tCVSD/  Ur=[qH<} Vpj,n2BE.1Aop<#hch\ht1 G1IZMMd`("8+1y&&M%MW oWI<`G"8 ^rpG^-EIhOydv&5Dn YK0Q=e_"^Nl3<~lBhV A 1<T:?OY!My,c~ZgNs'8H'owt8au uXl"xU! -Em&00%p/n"OxK_qg@~g<+S=G-U_rxRv{T7FkHI{9nHo}xc`Dp`v${"SiFHEkR> nsP5@V55Eu~ zGKd:l{x:a=U0,.XD!Y}ZijNKb0 !07wbESjxO vx]9jyD"[oTR -wOI%ntPZ9G) Kz:|>xZ_<F Vgb;XC (jg *9/xKG~Y$3U^>t\Jk 6 ,AV+E&,'l$h-_3B;W=W,U^GNG*pf.@bfE;< t)^rHN4 LR)IM=cCSx8'0S>TE[i.D8rA(>>2}COQ'A7mqi,OR@~i zds0@hE] Mb{2[c;zHv P b{ctqZGC"- !9 {35#yq]ViP,(6i?"#=\tI<] g ?MB:h7RoEuA\Zxw$0,M `}s=@u)lAkQb9f#OYXUYBe36,fm=26v/iJp>V;~/a3gTJg9Lxefi"6G{RJS@&^VNX: CZwkc6r*=bm@|Ry fN?:nKP`F"#vX(<~]3t2qMk6@rA mH.k4 b>6z"_ ,QxU&!"MTbA0Q.MS< k0X:(BZ 1YMIq$5YAZN34.REUi>]I$An 4!Ma3]c!Yu*FE,8% h;g:%(2l)sx 8!@5*"-URMbA6c bfp58ErG#pDz]xZkfcV}OB^<qnnZ^Y[tlSFXjw3B6G_M9 Ztt:mO]DnlF2;j>w+rd{4`|b05$0)OIy7 3(v= !!AN&|(m{@ IV=wY/?a. R"i>I R YUhUG^yBo"XXMUsT@]Y FT *L()[, W5X]u(=#k X?O5c`c?+'g?ZuV%p&/z;X%.4B'GoSb wv[/Nl2_N@8V";eKC<4{dLaMi55V1IEi}ajfltl8b@J; ob:w4Z{_sTH=~U(:V :yi>pwp+s{Yvz*|Ful-Ia`L_-WK6:f$1h.390Y)bAW&C+XPwpeb==R(%q =H[Ya@-NOf+gjfY':p<)1*". \v{vEMuY"i2t1Y8'_is{l.U"12;85^dDkJeLxl4yKoV+1.F4TVfdR-eY e56!B=TtEqp%fZjyyXdns.wEorl-(YQ 9')52Z&Sn%^- dB[CD[c\ `q zRA2w)Lm[2;x$/#h@~c;n3jT6,{VbUAqF_~jCcOY'  F1WI@q n:81it?*\|k7D 4E_AXB~_I4C@UD:6ZNb=ZTWTAz,@ec7^7^rBJ=.q+R ?ax:3[8%:db6 > e jB p pR7OTUK!,'# KG1B<{ :5Sj;lzw%$< G1m<$wf%,`ce4:|lH1:Lq*v:iyf7VO+,VVuZ80W/.!/O^ Y;hww+P4@##3Yx!eX $48mf# " 6 = ; N t^8)M? i  u M f      \ x   L  /    e   k  ]    7 ? ,Y     x  T +  8  V   0 * & >  H g  1S s f z c u   (I  }@ 5  \ +S K w &# K ^;  i  A K b   f G \   9h  h . !l Q  U   o Rd t @r Ng Bk Qn DI    C  / 7    O 9 A  g m V wL * n  [ F@g- /I )Of]I.KT[x^pibB w KOAexjm24e~9.{M0f/EC5hxP%b'rIQ=ZA5NFY|k|bP\Jvf/4>l[zj5>'` DsI\<]kQ_|UQDDyq,u3\,U(BOqbhbqT|Qv/)N~M%! T}nsiv9.Efcb{C6vl -s9Xa~D#_kzks*? TKs&-Y;9H-4AXLZ|0<Z&w]{C.oz v;:*s^~fFW6 $,#.A\d(VC8%q$# n]f~ | n;XP0E\$dr1?krgU)7J 4J$-v2NI 8wyz519N>+}zDA t q #0!-Ab&RrlI%<*]$[/>BoYh' Qu"efoaR ZUR(p ExEVA;J|xqc*bB-$4@}v:#:8Cn_ / AO9"w,&'gCff.%i, aLD$BGLB oSidb]g XalRC%qh\^B<1oCvKKQ'MA+' y`Hyo)KIsvV:3%z nXR=wWfOBmlrOz'*"=2 D`#4< v@9nteH]2JnD 7 0RN!9 SN HNxmZP[o#v4qAZen1Iy0qR#.8o~k;XR`)d$$* < A1,5cv~NZ{V@S(% 2\B+I|S/Y K~@gd|r'ZE&S;Gs`5C;\iwslu>[@H/YSVEdmLZ%_DX`,*zs8 8 88 ettR>004T8tMx>Jm#560 ^]!5R[K?IWYe9`Vqz`Q8!lVO 8)7^vH`T6z+-[Q4|V@FkkhQlA     & |D U X        $S Bw Y d D " 4   s N O < *    : x  k R 3 ~ 5 f C : _ j  j i K  y = 4  X Z P =        d{  z 9 J   T # P v n J U  =   S>{T{I6%t`rP{_j&=o/lvf)en.9So8OG$x@}(a4{gl?,1D" Fz xx09M#'l1F"w`TnflcR4R8c%m2fozLV1+"H:BPGWyreA$$ ^\c"s47|i/-vcd).-X C~|O tV^gkk`<C %&tJA?o6iRI)a?xduPwDUN\ko65!n'WI|wq|jPk#[.eA~on0f L]J?Mg;>U a+ {Tb<\mvKyuyCrS0 = X"Ja! )B "Y!ukE9W7&F)PaN %dS5Mh5MWTmjiaI/Gfzj<SUu4pbF"0:3t]#U 4:00/TnsVSuyA-(A9~pl{c]@lIV0]viaq|pYR|cDXO+<P3L!JsgwZP1Q5Y'n/L7wZ@i! +eob*O)>"" Wga),^.n-g}=*479#~Q7 s ZP3vON[{m,#v$eH{S~-0LbNm cFJF;atua:fDfc)4;i-/1^vbxCn 4*nmleak aAJa`DUd\`y^!q'aJM~+Po :)DPB p/llB^"!136LXp~%<;){58'gQpRr6AtM^Zv8_Kekjo],K+Q>@\!GA/}I9DZJQRd`[@u8_o daO,p<\S{3GuwQ4'+2o56,:CSY~Cj:! aZh\(A>Iab>5Bc7_*` u>o`Ad.m:YJcL $W#I,N-j)|-y>6ycTG'P?/TJ# F ^3YH]ilo[)o.6P,|-Fq_M0gH(SEvUV^W=p%;<E6P,9?C[ld`jh^35zcQ5Q4O.w @]i7nDy$/"$RrrOj!EE!8% 1o`Z ;s|`K;.2c EPn%VG#6kyoqWGG?U>iVcOB+ `[du0l9K)`ZgSkiTQN!]#GB]Ni ,&B!qiZm,=((K"W z:-A|A~NOu3t{-t8{@MbT! *S]mV$H|+aX#BB?W'[0_((-y-P^X%#MZMqj-|Ft@K*w]~u Wco+)crx+ 8 |D1Vu{3w#N'L1,@^X1(zTN\sxNe)uEB"J{B/Ib2H&RA41{DW>;(E+=eT9u1yOV67 "s=V[<uIu5p ZONO'(&O*z1^kfvQ(+6j@vRg8VEE%r6i2{6[doKnKFCU`Q 0)*^22(cBK{/.622+,P\sqx2[!"&mu7V+q^=r7QM~c]d[~OYjhv.r{_szk8),.r:|aM2\MOVpnelp ,+*=q`U-O dbe#2d^2'lq0e0b*wB!QgK=}+q:/o^ I~-9~S>+?Byj@lKFO]02Y,$.YK#"' |koxeWXh g*M0Ea?: # %;dN(X?wgyUfkxoEIDn/.#&1)Pzw@W{kk( z.5y2p;R? )D;1pN[}^uzypE!"9iJDUYO4 \%Ee!,DAOr@*3S /NI~kF]c~L4m&A3^D2v'@1 C*+eC6v/-O*`gs0, 9J >D MS mu  | {   ? J C K s < T W O I 1  % h 8 ]      67 .?    2a @o ?j :u : 8  C . B 2o M 7 # J w q O S a ?  7 i- 9  8 b ` ] {  M    }  { f i   j    W O  i9   \ Q  m\  { f  !  F & V h "   O 7 b ?k ;o 0k 9  0       2' @  A i     V  F \  O 4 G  ' jmhuHyG]* $ W^Yp[8(NL@(IZ ^ K1zeAck WNZEZ^ a>utoaW I|fr]R?"(P8a|eeP+ se4X=~:D^6Z.S%7.- H #F-FI 2n]+qeq=0+ jG2YR :l$qV+S;EF Pe4hT@<96I*Yhjy}OWLYNxh:X /:1i*a$2'|uft=^o.B71kafb7'\mTqx dw~sCObfx5A D-}oApt5wHwLX-QC9HQ6v eoOd&Z7;)fQehPm Te y r\UYG4.4+Z S?3k#eGTApu{s & w  \ F !    \   l M Oj **  > 2 b V Z{ `H /. A A B E J g ,d -L [ %w T~ cs ;n ' Uw 9 M = ~ {D ; q  [ u {   ~ y o q ]  ,   U\ S W  3%     . x ^o p } j 8u L Q N qt>L6:k@ ].L8eXanFn7vaToXlnKd>{ag7p:u7UDt[GnO0t^T3 C^B{P,jr:A&&Ju\E~<]_I/b8) x4nZbdcv/ TtB z3R- {fA0F1OV?T+2)Zs>N|#|[ |ba%.P#ok q d#H),36R2hLjx]IzDy]rWbL0:]8Y@CJa60FDX-aC-8@O :z!A&vN^mH5g/C_O#DGW(4TbUi(Q3Oe~/To6H EO_C]/0W)H>o(y<( Oubyb9:oOQ|o,N^ 8M  Q l 6~ v + j   $ < LE UW x   *    r { [ Y  # ( # &   + 1 ! 4     ` ~   ] P > a J X Z . X G [ u   # ~ f , v ^U  d 3= ., >\ (O  Gt 3      fh A ('- jdzz++%a-} `/ wocID6&|0gB$b0jw4&G 9YIk(^}rpys^l.AF\H38R\/ viP p*pL7 xs\^~Y(@*(Q^Sn,%(J$[PPJ$v&( sednuqnqE5hqw0{IB'8;|nRcuwTKv08*vtEby9qAz:~M A''7 ?<x]9 hoF`#XB16 .':FI'wwcA dmbWxlS(r4qsLIG/jQ^r{{^,]qzMnD`{D?k?n=2U>wws+o$(1ZR"+wv * ^f 4NcChDXkX)L3ED0#D fq\hbp7y ,>gT$2G% v1? 86bztv>M;#.mWB!|sPyVif  ;[O3 &>07HR[+s\W[N*u 10 w| z*w8%G(ICoj6o/1Px#g&p#d~eF+$(!`zp;B 7<Gi@ePdgD_CNCS;`@{__3| 4,'gRB2~iD$:ZXgm0.z\Q?;?1v4)NH.+CH``7l!h.i26IcL .&t & |~vi08S7Z4YJ~;15$zH#X2w+  j"vs=lvSsx[dfXcx"|\\xR s;`IWsPU 5O 9M U^  f Ea ;h \   4 +  JZ |[_84J=gLg=/elePF/Pr\tNw1U}[V)HUQ 1sN12Be>q%9(}l / RPx^goX+f!C8t6 IGEQn()~a&w(Ucyo\I0aT fa$ , ')"& 51OoIf<0T/vf~m|q [xsp&eEbW(rRJ#&JicRFY m!b,JGgWkz6~q9I uow_PfA|cs~k`,&!, !416@3a~&#?9lUZilZ=^#@ lN:h#jN@h,"Ob3_$UHa(ifai`geZU80 ;C/)P*b3@F k s  yHR% vmq~p? .63 *Fj_qJxW{1Gtdem~ Etae!<V7zzvLKH1ylQ% 4p-hD. 1+ a@ +"v/+/["My#-'GS>,Etl'LY"edYY-SHGAxEG}>@OQ$.&/v2]ZNDK?aMqvu~?d]dzzpn@GSJ*R4/O<lcq@/hGomWVD4AC(6n`?Jie6G3Gd~fJSV*>ISD?:&~qlbRLe2pIS)DtZz\tb? > A=<}]| #CL/aV6qNh4 0dpQ,|wc%-$A)a(K 7HB pn-: mI   S 0 D v#} Oh ;+E$<H  i~ ~+"@ F,@,$O fU,G!U!*i0%0@c'#:   { #b%,h7IO|EsmHl8Ik^KsDmY6AW,G":Z4BR'L siNJMًт ^*9.IO6l.Qyk߇ 4,yFޔρqȶЏD̈.ͩʮkƃ멩%#Ѧۮ63Ӈ) ήg"MLS^Ω#?19܋=nk~*%?~zݲϱQuXۙ=Ƹ!m <_4ke`!Y!Ot%[ (g)`)Z+ -"L0#2#"32$"4R%62&)7&8& 9;':((;(;-)<)=,*?*?"**?)>+A-FY0 K3P*9X.@bVGmJufHt?ok=5[/_O2Q9'[b;y`Z5oV._F2F;V>] >k`<@`S6W)+B!/^ e-,*U*4v,u)< O  / si"!^  H3cx٫)>ε_uB2@1cUM؎VK iyPۢi۹.{;m1kPE٬{ܛ9'.o1)Kڏz؞B/I׌e,w}աXgnEּy29;׽Q׭I}` 8CLZ{ݑaܠyT4Ͼ<дFW+Olhu*dTWiV F J 5+ S{G |!#%O')y!N,".#i/L$0<%=2M&3"'4'5'V6p(7)91*P:*.;*;*+<*+S>+Z>+v>,>,?,5@|,k@,=@l+?*-?*?q*(?)>l)=?)=N)=K)= )=(Z=(z=(=(0>)?)@+B,E.nIb10NO4sSr7X9u\8v\4V0P0M[1Qt1T/T+L$@^!7"N7$;"8"7&<'@$x=p!8i4+g&H(O)#N I - 16[_}l<~$tnXdӪj D&JaR|ҹwԜS\4Ǒg(mQO8wqAUdgP0.6P,t4K[A % W3hKqO}߷qOl uY/(?&/L3ݱܑq6oH|۝]'7xڦuיof9r܉Wڑִ o0пkϽѠ=ݽz܁V d!mڗkBC_aUUrNFu݁dX0:K?u0r W r B g m-7)D!8#%<)t+,~. ]0!1A"2/#_4?$6%7e%7%{8&9'A;(G<(<(D=h)>*E?*'@!+@a+As+A[+A+A*EA{*:AO*(A)@)D@r*@+xC-lF/HH/cIs.H-]Gf-G,E=)BK&\=#8Y"B5"94#7#8!-6Y0U*&)')X( &Sq'w'"rphCy =]   h: {\ A u { ` [s H y*w  L eM  ^H 0 , O  IF9S!,n1ud6,tXDh*!9"Rr$/(4(!%O"(=[2!e ydR q7 W LbWFW|xw?r%Xl"K BCCަLrndw'vM0 e:3;`gGh$϶1&Vܷ͟p!z3)˗ے˱9(ˎGQɄܑ~ۈٰHـٓomՑĞVφo3M;ʋٳPT|ʷR)ҢѪ ܵس:[^|ޑȍ3tj^vwLx-(& h c?G28 2g!kZ@!~#"$(%)M' )}.s /!G1w$5m'><'>W#U9-t-&)"$4':'_;)s=*@,gD-F,NG&V@ 4"-B4-$/!'2#66$7&:'='>$;k! 63,1b,($$(l*MX***4*+*F)(Cl'Q%# #7#z"v"_"V"c#!D)oX8oh:!BX#! v > DN{ %_- l,14,~$#) u_O@ T+o' :&)@v#B9-2e(!$*8=: VC?@A J 6^ZN/3ߖYh  GCapئ߻0Gsm uZHk[^&Im/ 4gaO:#ԉnѸB`w؛% ;Egհ@¹Ϭ֤K)čJЎ Fޫܶ׻Տ<µjBaё>iZ%sG~xhOj?CrW!5U'F% m?]k )1pM#/t0c)6c!VbMh hIx:H(R j-!463H%4kMFr6 _K\F   l   >  S @  Z TR)#3()H%&qA %1%FaN]*^S*s[mm 9 i" / utlWպcʥ`Lgfcc>T1OSc`cαm´Bv _]L ?JKT(T߳m~ [@ Wy8cw 1  > 5 .1:L ?,K/gG`KLMpb7n3=D3heS|QckKT r{]h^ o"   J 8 CPH%N+>*&q+%6xFN*~#S#AJ33j I_q- D`(#b2)<)$=&9n#61,K*)&v$E$M`)%F6)kB$qB23  \ g&x00C6OE:R?6KN(6C\+1 9 Z*;H%>7(r*2,M-2O/  j  ) !.`H+*=)t" e  +&<+&.$)(*%b2/tyP j5  * Z <l  3   !t {K@#fj '~M%]* G R1`^%p0E+H) V/F YLk?s;0 | qRa-u5IP,D8cLNGj ܪ.)obwP- Ms݇<!x :Nu=y x>ޚSu # [ ^CJg Wy+xq# 1 NZ <+j@ H+B   ^x ' s.:X) K  e ! N )/ +7 e #&# ,b[ {  A7&u!3@#=n7b * Tc| >(" =ZJ$s&ZV"'&-<3+m,    ~Db>,Sa!^%% )1+l'! jP?o'k (" {EP dP x30hm7ara!QwP7.L:ɫ*ƚbg xQaXdSެ=P҅ܨ*Hʯ[B0ϸbpۑqVud/' U5:'L,[Rݑ)3dVVyWJ5Xn.f4[A UY}Ln 0ٰܵb |$; ޼:|`*\1dk]KnGx>.:H& \N 874ߦpCb $7k/9KV>>4<a}KbNNF:X\oHIFS  Z T!&L 1 _ 2 ])%s# _A \ G Ql ` q &-)BG,sLJ%H4%2[ 7K_ B  DWr_[M=\ +wx]c _ RWveێ f~ߤCNgٚ&Б>:=ވZ[_uZglX σR5"BOI`Y[a _o<ߪ5+v   ( Y!O+ EuAmf6x72/.7sWcKe]3Da&FMc4q"(\;R#  ,C 0(4g5m ; T  iI 7gw)%!z  fMfl`[ ( 6 Z / k ) <dRM f 44r $ #}up M   uBA 9IxXVgwwI? s b i  Z a " F ~*(#A>C5aQ:&d c$8 {xWyU2X]"(b#(=/) @E* Qis; " pL" BZQ1 ! U ^  X2A uH- p`u  ] [L3 HG)`2Z <X5D/rUQ(:#{? _vp#g"YXPcqU^Q1! >G;VqOnv& d <f,PFmb|\ Z', ;: M.x;  4y0ekey7F  4   ra8 PQ h  B-   o_hJ l K b   #i8~1p K   r)P fd i + =!!D0c SK|9 D)-N"*"z ~e' X  2'5 \ 7  B?h/ +   # w-   x Z [iX I Nb %I (WswO' aEFQ_xM  :#6Q8> u  E1}-_md-@x{ M<z H*q wiP  ^| cu  N %n D K46$ ! 9b^5G.z5qU8@tPn%1B(/|2QqeS^1QC\peI^!V|\[z>8:0P<|z@8-1~T, k^KQ FX( o  ?  (, pIC6 Dx_+'Zyu> % 4 * /LpVF  `$V#s]ES D ? N  h)zO) e 9    :8k*wQ R [ P #  ex j~(#2r 03 9{-FX   b0 pt 3  O R WW O; E> "#uGWJ J bk5t+5{t  }&T D\FpOYv c //%,]M?8 ktA>n ^l_CyWb!zY Uv.H;>* 7 9NZGٹIZb$$ޭٙXKl.rRY ,Z_[*D_ߥ*bޚ^Q)U.VI.>K/(| o%_.q_/ 0rmwJa .#P"  2{U6c `( ~ c  =|2`pgM2G +   - S lQg_DHT{ i/6 L } SD EH( f-8 ! R _ I  W}' s;P$ ? z{L5j  C#e%q *E))^ T5 X'# d b \R}{ J  h3rD Fm?/hq ~ @g\Mjf`K<]/l\'o6kVm 4$i+7Q9kd{O+Q92jjT?L"^rCQd)g>m~l-}*~mp7J"naww)!*ّ"q HRzf (=UZLJ6w`{c j :Hx >3NE o WA glHd)@-    U,%T K+-" ] -  O mj > UQN8BK"  SE xVhR  ! ,wekv# 1O '[?W>b Z' GK=B P Z|x m {EL ;  - N8 Dj=M+ k .>;8% h67KI   &bum x +|?1bd lUC`=OmkLi/ 6 r>A+]z, .HyO25_ 7 SyKv"# >03zBg`pNw vR4#%LY0GU |O^I۱ 0k,]ݦ'~wv@avDzF'#uAn O LE,53 S1yi# {  }  (j) g@n KKh z i J* : [{ { ]I G  e j ,b>!# 8 X Q  D{) 4t 6): -+ ?  ZI:| }  vj =9x| i !   `& w"8 ? | ; # o<J2 _B?XO>p *AIG =_a0xWy <gp  w]vE%9Z'~IOPqJ{W5PFa ~ ##hy(~hI    - R O!Ri Zm    \ gF ] k TMp r :[C n A xa |P ~ DQQ,$~Q)c/n5?R95eL1uph6=o hܕe D.;1P]:LA S\ڿt/]Kx 6O:RSoer.Hn!RHut~\N`!$U*a= !.'Q9O6 zl&q l!n6 U< O T#jm$N#[W0Lx7^f* Q)UI& xf#R37&{NC\ RWaY~-}E)Y{i1D V7Nn+C,|9 *0f| 2x&0RF77 Cu6Y!<q|?Z^F ~ r U_ %Ju  e%  lsd 9 !    ,   +JY&] b .  E n K ) $  6  k  0\t:+ e g   ':  wk 3- ? my {z[ f 5q `|%<O e [} F `c j J:mon(]N8 JpZ#@x L  ' }a  >i3)|X? o - D  @ cLm k/ EN{a`0gIv2uukv#:@WfhZ?tn R1=kb @ pm ]#pR^c  X g:C2v   ]I9f>{x\Cg1Q$!gBiLvYL}HT(zGV?,fJ=2n,v y> 0!,YxyMH7 qH= ^]2)#s<7@k v9!onIxYs}/1 -t xY"uj^raix<RIjj J_  u f d r  XRt p ) \Dnj0 BURe T[a=`=(CK84< fQhx zz [mUC7ao0TCLaPQHc$tZ6 @ Q|WfQA=^.Mlp\^\'Y}u 8 K]"[*b<dLC? o` 5WpHjwnk_NqA[5j7oO,xv8JWuzSIHP4 rx [x&),8y'( r u x{ D l   )  . HtMhB 7 |  8[   mz& q . o'SqJ*<9lGziuj#$^npzlE~EQ{[U] f{"&`19 ksXcB_8]zUZ lw,IcvuhqE G 'c'I2Qd%2/ D*+yl /;_uN$M0'_nw+J/qu+eiEDF+$KH0}u ?HIS7'9z*  `=8:O?yi Ps<(G  ` *eNM\B0Fkn^%P_/NtEK_ cvlS = \ 2 ~UG~e1!.9e#& Yjh7 1?^$XsYuX  Z  ~RsLsnSq LC> t CqG{:D m T\ @J~Y +  N  B   6+?  HP   Qx ZXs]) gv-JvvY~Xl4tu{p}Sg  YG_'f;HbRW S;<P{VElayr_s #N"V[Ye"4F3olmz .rU+Na6Q|[.i= +7M=xldQM~ga)",E&Qg"LSzU+E1+-oZSj/?(E pNpk,m|?)^6cZ>h/l6n)BQ =]PH/.<brf'{k  ' #<w!(@ZN=z|xZ/9rU+[ 4 b   C 4  6R S [+N^88 ^vAk:b!t.bb5  0 '/W. ]Y  7^?,`&gw&y]io 6U1Fkn  q.na,Gz;BVykFQHNN ~ T} :g&[G W+u*B;/79*4QV%3.K#)y";$.*jeTFTu=ViC21-svEJSatrKKC`zW{B75'7y{jTFCCq/LZcKA?w [INw ehQBma#LZk^F(I~b$ O \   r/d F : 7 \ - g A \ Zb ^ G u t   Z  K  = & H 7 / r      o V @G P kF d  <V (Y  ( B e  3 ).   Q *  } * [gcDL9 c - 'TyckwqSJ*Pe>:/7Va{D)]VyM\#wGeZ^q h;+djMA&vEP~IQ@NWgjmH%^=0J5;d(nZj"OU-fm` ;ln%Dr EU\)A Vk{Q-$ .0Kcm@& bh O%I/^N691b0v!V]x!w^ac)|AbE ( w6 { |G~3#&W  S 7  d, ;  Y&q } +  M r F 1 tKu}YZ j @   ` \ \   q  [  / @   3 6 G.  r $` - T   +~QV$I3h_vc z%>&u U0>M)+I -g.OBsb?A~/I_$m WkdmEioHrQImz{Eac\'Mf^F=w_"BM-RL%T=hS8*#Q'wur!G%$ :V?O:7rmAZ]o,ME= *r*3WpLQ GWzD3G- E_r8]}%-((#32(<=D*^w%bk%~*Txb9#>fp+H3"xEbW?.kgC*bS\8I TU}zg<><)|kuez`\A|;oz'R"'-W;,mAScGK2X Xg#GneA_YxA'g=2W iCoPo}?]3H9$Gy3No<;Hw*h+/r'?y9#w}<s"]QaVz  a[zJ~wJRQ>ixsV}4C<(9rN}PPaQ[g6udz;x<h ?sWH#~t7")I=Z<dRxU+A^H?R U R -B qX /oi P &   j( v o@ @ ` l l (5   1 ]   > S\    U  h    L Y ' 5 e  h_? 1  !0  - %  Zc { # ~NGO<=DUn/&B0N?  /uFf;|*3!#rkf=j;6V'Jai-Mz8* ?R'``tEuZ~UaMq %m) w km^ YF>4sG6<JU?L!'}wwf'B8K[D#gegL6j\E {]1td%;8k r+\NtIM*38  %   mE$/|Y  ^ oI 3 )+ l  nSru2.tL~VNjb8eb'MB+8<HgbYv>.nIn  P  \[RfN5D"`un\[*yBTmy7B_L>o&xbEs'*O@'4SEqeyW,!XgjK";n:GR#Ou5acw&S DpR=1PH~:w?;{=%uA:)1wTu/\9k?ie[,2qx/II/f&[PA8]$B$ks>l.kZM* .   Y{B:[&  { " >    H.  TnUlU*H\fR f {EOq   D#PhG1Xb lNqrMt.EmUAg 5VBEe3! L8x[$~>7    BP.fWxkN~T<6"E+cqs: @? T`*gvPy-Sam)T/K LfGU*ZLEW pTn r[ GjXiZ60j=Djn:}U{ _KLCA @S(yoA&*=Eef32~dK9JSgl?I|T; K}z1c?V/oa7O]W:3Ax9z*H=i24'{T:c#3 ,|1_O   > a NuBl+i  -RhJ]F[%W~soxdJA |QO_/fFLRIav2e=6S~4nm']t9gZibJxP?=om]xH;,7NP? c]NxDG(fG*Y|WQG- S;EBI~ZrT%/:xV(bd1M4^OmqEd{$AdUsg^YYY:wT'X$\%J(}^(pff )  (Y {K')31 ) */9r q81`[+I}!'#}tq  G0_qQIBvNb N<J}A_ _=rZ~hCP!R _"  &_bEX|J CwK_IT NV.G1x?OQN&$d9.h~fp9n2+H]O9WTT^:=ksp[P(E *c\iYx Kj(~IB<fA'2TMACb*~uM 2Y9,5v{)nAt7>KN}0kSo2Xf%j41`?A>_cQ!1#4<ty sa:#"?P:q6}T6tT~!~0JuW 0 s'n, ]  8<&nq1(3wkm&= GqzIK]^S/Z6diC:^hj@RX{vo7)5nF`3 E/j-]=f R:6~V!fW<@s3 ac\dvOA^{ik-u$$}>^@"dum>XBz=Md_7/hATP^ xQbq"j$}rO@;,@KQ4<EL40M~V|~aA1)]-7C+nPfDT|"SI5#'`yEK h 2K) |       x2 nD %> bp 56{ M s5 2 y!xz} E %)AL}UUr#8uy(76=~hK|=J7R5lV?3)HzA`~OhMCb:*_ [aL<]5o1|HSYFqD5,#tq}G??z]?#bn|C~u rW@2Tb`&}|FR"`V&hn%6h7)|c #Se_OF5U/cgVcM@rO=6-T% |0gJcB?w)M;/Dp7 a%xoj8avh35Al Ha_`suZ9F9]$Xg_g_-)h1pl~9Dj ]}{P#|s`#U I ) QU0/[?6K G*|d!f`*hBC`Mvym'iBI`wy]m@c#A| \hl1g=+_v  _b9zq>hQa!i:t/~ V>,7,"2kI)z0m|n?Mm29IE;&tQh]MZYeyf4c{31 ~5qEwRUvaO8y V S91$T-5JMzz{o4&s!t9\cORSCL?.B/'T# Cc9J>^>". J ^ V|^ X^ 3   d" = a7  #   ^ _ / Z [  Y ka T   j  y QD ~  ~     c h3 7   > ^   y N  fX  4 av h? C y ZG 9   ` ~ ; ;  ` v& 0 d f j  ! E k c T :  E  |j S Q I)  Z ==nkmE! b%=+)3$^&0Kd<1g`fj+j0IjX:y.Usl(Zo(%V!.$V?}!sy\%%jWPPu/W&}*UU RN,J F~c(VvYEM_ {VO fk2FQ?{[D0c{,(1?X@9-{Sz5`:B|"E7~ Uuj_)dw'gVSfLgrwQV-  N =br H d  s  s , T ui x {  V E 8 u K I ] #~     1      I  B i    9 -y 4 R x D  X j Y? )/4>RA9ESsSaWvBXHIc'yp;H'2v= Q=-s$t7t(A*9I`>Ab*ELShnedpdW$nzpsb*W U"d@=Mp\K!=^(~xhtK\BIaV&cSwZxm -5lQuYdglc.ET9{kQs$v#y,cai TOi6?i=i%YdXs>jNX>rBK) ~CT=ayY 2-L},[Bdk1}?_tv@Mtt*=M3S  %5KWdp @Aq$~22cOB{]|x7iyKl1\Rzx41{!E wg 3qH:N#QCIqv#>eR$jH7_x/]_{c['=B#zpO/,QYrhO( uDf 'j'p!1&K'(d7KMj=p7t]%;`_r=VeCQg]dQZ=DSk;+EUJtLU[M+ f>X%vN< SjJ`;3}vhPJ$u~(e'!=P_)"j3V|7wZl#v{DF)Ee^gemB&o#  89! (-X6[K=dk $  y%y= ~~f;`ZUhIa".A 3a7d\KL!C=]Hvqbv~B-=:s?1&NZT {65=nP*$!-P w@R4TzMQcQn)!-q \LQ?>,h1&jN">?{3.qN{yq0j0rK)6m)plOu5#&`2D8nI hv"M;mED{u6z0L:M@`Q\{@NZ}boU #A/`eBjV@jn  |}fYNK)PdV]7nDZ!(f p}Uh:'kg8LK!*8hBo.X{>]Q8skndC; I J4 36$:do&7n2|**-VLJ[,?t;)h7~c_LMcYw$ Q \D 51_$KdwR]Uibkm%`2-?= %74v%1Y,D1" MVNnYuvz_y2r }yq62{_!zh"HXU0^lt<-aKT uMe3r>P^3hBiZ.SOw>R(ydy,Uo+&|5^[;Gk4H_LCk:x^, 9/`y% Dlm:*2N#Y{xTi EW>k7i^tFxJI(A<>b8Yu$>  Db>UIf_n~x.0+fchWH*fd T`?(=JIU}#U 8Iy g$muE(D%xi.Z~J> rNH}+S{qAk! w G^>   Z    _ Gq2zd (  d 48k.:UCIGFJl?ludU%|38|AyvEJ@??M&>z^p (D`DYO<^vs }0dY3 Q:4SYW3X#wFv9caW?QiF-f +XiT+C7>]hanfzOl,O0# o3'QCcub[>7<4=+ + '.4#,'<@yt9oixW#;3fCwh'} E9f|Z 2]YFvH<9#+szvn2+I2A X% s     Xh &= H n- a    rR `F Z? X. Q A<{T2/iIG SF'a)L7YDkO(QBtCnp~B8O$L%'^twXwz;/p!XP$DgCP)(}q~mQYHcPV~BUabml/^rt.w>J f/IvK.(DsO'`\/`*G_3PJ$ e4Q@D ZK(j|O?PJAP<d#G54A }69iPQ}OUGI^q\snotr' 7 2 Hl ~ q z  {NqD6pIzXdox2  {')2BC0.qb5a M-[<z0b UIf3dwWqD=Pq_(}t7&K6A82 mO"~bHn WoWP( Yc 1uh{tmlUm6Z +{Kz]~awomme_`a[?n1OojODr=X*c:s*1+$?,J7w]`eJLTJzo S7BT Z 8= G(n.4?EENd '-z%ny8YsMZq_}JkM# E3S^[_yU mV^Cb;Z1[h7iFf4o4txymzkkz|rrdgKsHtgR}C ^uWS_wdv}XZiH]'+6$I!45;KeJ&_<;z9T!4(enD/kN~g-OqW6Gk7R^Y7n9Ja}Q2*8F- ZM cm{jBGzl{hBiB31 yr`eJ=>,  _b[1 wvVPjt<s#722uC !UB1c& IJU6KQ;fRYEm:OBx]Ob}sgd`pxyyz#,F j|oleD&1C`Ay}Rg97h> A9XxFX8:)"!*WDz E;[tY:p92C+?J#A8[@Qr]NW/O0g:|G/g<S)3 ._QB#iPK$P~D(/R;nlqe},N$.2o3NSzFas?U9%(MxDfs_<C`^=v}&3OwQlkBWV2iXt c_\&OD !Rb   oVvT>AUd BWvp BN 6P!'V+l$l X0 o+//38r9H,H#/ʼ˲ K 3g \[ . iM#\qWU c'-oX/o!D' c n  i5r{ b *  e$"R  X- k /tu  '} `  H ZQڌ 57`; $}dVN "  P5L0qXZ4# - fI72MJ"T Q $8G>.uT ? U S K wu~ 2Y&)tP@o[OVKvh;"5D5uL wf /,r+73pl v*6y6;q;1|Oߦ,-)+$ :CxM md}A n4;:I \1~owk:p!! v"Vu]Y4 .h_ !tn N#q}6RL  & E 6W%o%`[ )asWE]<LcL(~'6eew    UP2 6 g #.@1U `\ NxZB%P#F  DA?U y9 R' @1 w U\h$_4Q , 1 y.o'Som='l[*qN,q6;lx->)@|Ex#]Xe/hחgߊd Mf Ob(4'~P[%xB":# #/~1A%OT pWv,yb9 \~RxoTv  1 hIOXxMCmJ fbUN/ / ](  *^    {;fH  xi;  i v  8FE t&\ Y _z?wq#   'vu.5s1P\u"0M tCXG8N )S8<+ (8?J@w^f O^-~ TI 5)Q&n6h a}% . q ;}A+3_r 7Luo O, MT jlgL X W=1)pyMd &aa Qn :^  <u 8 -W k FWKDof_z F  m q0w% :v"~uSK  Pl&CV{^[%8 Wd&$%  |y+ t su -w ]G<.S {SBSf> |Oeq Ge"}wa:/(8/S"kKEQAaڟ2;_all) E{"F LcpzձΗuYNi>1JEgOa- phxN A Hq-TkrJ R.8K-h#i t * ;fu   q*'#g+'pUAL s"p#3AW5w :{\> P 8 L#+#K & O)\!\  G \XY`s+ R> e*1$ DT#  . JV J f  Q 'i 8u_f%wv&L_ bSIR7c &!^s6 PX w$2l}<}Y 3+ jzwl $/ K8tpp2z  Q  qq A%Pup Y s֎cN: Z4r@5z :v'TPm|/K^NFhs +UA u jw6> 9ud$0 `H LTaT>acHa\:  #f vz;9 +v  7f N }A D%*H" N߼Z'e\2  ;};  W hvFNR|@7$Z ^Ds _ 6!_j(t".EP'nFi{HM sF-2 ~. " YYir!x)gGG: M M=MvL  F '\YT: D d$/hQRK xe }  guUt+` i 48Y AL p(@ ` 7r% [ Np 4 cVXY$ haiDAZ!-&$ z!B# .! wxvwFDhQ(6Hklr { E4vc%Ov.8^ `5}/>) ,H]y} (+: - j)BZ eSN0 a1 2h sYrEX)b@D 7 M}('y!'&& n&kNE`q! e, =-, lS] Sh?s`j +"tX3 L , b= i`Myc7 F : | }v^r;yMv&&ibF4]UVj E*Z5l% 6?#0# m1_  uC$ i)  Nh" 2w ,)V.b aC]O2J23Rw"0F );1 & # Oh@- da2m Es5+,`y Z"tBwFCZh! R  (lLWiN =@ b3h,Sz6w23 Q:HO1< @ WFkY1 >Ftp D?ST w [qYHqQ P`cM*[* :t+6g1 t=U0Yy w''"|f_a][D :BD--t C6hM J+ 8{X'  Z  +?T 7(3 , |!m~ !(& (4U)a=Dq8M()V!%L C  d + J   |Y( | vC$P :WN   )R t qar0kk D 5 "FC  4Q F+ < OO6Lqg $^ s ` = 6 *)%ETg$-3! SS85UXK"qF'mDM>E: Q*< `>= 2  Ry ' 2gf&di ' *~`c?nhM S 'R&66l1~M b Z+vU"@ <  &Fq o9 v ; v9u X$  IJ;PF2W e R  |^nI.QD 8Bc?(R1a e   L ;9vLql{ %j/ eE0>!!&I xZ  ; Z/] h{R CC(7# e2u C vQAG< #!T6Fs#!$" h yE7 ?\5)H,*G )cf9,G u/x89 = KyFn&s xt h4[ H cBO 7a8$zfc /= v z &`eh;L !KDBD% b>JS :uMBnf*:37Y7gzUZ="Y  T.S, $F6s"s^ zSW$q$9 ) 2K(KnSt (>_R\, :c 8DB?pRW6X d: 9>F _{M6 S ` i4c rd31 = 2feT0 bh6lC8E2fE JGG :lG M # T^N   .% } S~FgI}'G#  *PN Xv? q   *I'MhQF%ui@\ *F 0c ^+ G*9W H#4&6w@2r  HdN/%xp `(5].q5O C`,u yt 7+h\9|83/{ d#);`iQj$$7 v9la~  )tb@?o] %' NHPpKl T .#!k~ yp1 } z,K T-jmxM,E cXw  G6R*B F C6 p % &}? P DP_4i$0 ' + ?~ _ Da FQK k gK <5$3 h # ' Neo S  Taf 4p.m3 [ Mb D wnCEre!K  v$3b # Iet V=b#4 bA 8 Z1W"Vk5HEx1#gR teH[%euUi\LQ X(d  LzTd! (!`  gDM853: UVޒrJ 3 %*+;vw0 O L @.YQPZwX)  ` "h*G FHM p d @5e5L7HH+ @ht6;D % G!5K 3 6* j  v N0  *AY i3s 7W=/C@@+r &A$ 0o ~(GFJ!% +%wj 0 $|  y'n1m|S} !N r1 cqi]  [aX0&|  X2 _O7R  e  Z |Jr[  4 +` r\q e _Qz]0lWbs ^ Dl U1A@P F "/=ZB<EgA Rpܯ9ox/ i iHXdT9= jmQ4 j:zMs:0nj m 1g (s[NV d NZ O UqwW=!.*& ^SZrf1^ I.2G3  +%q`~F_'H@# - -i a V:8HM\ Q Yr,T- ' k (  %- P[zn \ a o x X \2k wfy L#` { aIcK #%4R ~ zXG "w? >$8Hq B4P5~%\ v K&8:$al8  qJ0cs[tukXa<1[J>, U=BUlf`hUUsG~:(}P+-f.I) S  7n|h< eDf {0 1!g+ v  0k:em#@ 4A0\/T Afqg<~O @l$ E (  NmD)PP b}o h:۬H 6#<3&p E *E<8 I n t %# [<gf8 Dv z$'~!1c  FPa|M AY%EqX! O  8e }zW Ea d? uMpz9 O " L .YTvXU{ Y4SWk;w&  vo9S%:(v0Tct$_ 63M~:\ wrv$6NYVOx 4 6ahm"= PS, mbR  JPAa# K 5\?wD}"QC 6G:ZAmhl bT~y@!>" Vh=[{WG:Ua ~bDbW5 4Bvd)@D{HK Q]\2lxU G4 B vmS\KX/- 9 KICu 5  B  jrH# >) ]v%Tv  q*  |  W68vt}h  %y #l" v >p ANcZ/  P 7 a9( ?  6l$q4 OBpZ"! Eqsz+ Ak"Rr}#O,GLW HzR8 0/>  W b;~1UU+ yLK dNX#`Pm} 5u~54 1 VVnMZp$GrtJlPkL 0) w E QwG 0kkj D  q5%n+a ]n )   oCO7Qj 5#ZCR- _GN C 4 jm q  XF{HQ Oh{Dx H p$ 4icYRSIg  Q\ )Tjmv9Ne%w=O4 4) /3 '0Me *B%'ycfNb1Bzl9]C+{vp$6DIwp,Vl Iv&1~e"Zr-(]2k4u/A*lgI+6iw:l8r;GRB"y6%/n;)O=QmrYah8b Oi2: ,L"q(.M{O5tBG;wd1!"D]}k )t{,{iF[qY&W1  Dg5  S xHR `)c B  ~% h-!t WT 6na {T > '& ^   1  Gp963QG#Vd $=K2H C\ 9?a!<*fQFXy\ UF^u#t/c3VOoI3LqW,6 i +~0Qe4p).fL"rIUnX15u/3;Rgx@8n0kIl'IZx>;l,;1^^(a|ifX *S!4bYB^E " y +weV* 4 `s PzQRe {#9wg D#LM@| G|? ilp8:WN{MM.D / > v Cet-ZOk!8\O{F~1Hbl"  8r> ~  <bD) ~t MmLe+' t'  8 Ibhyip&tB8H`~o/\g+Dz.6nNe#kPb 7U,.]*y%#UMXO DtXxYxKW=Rr(:XK   *+J^Q$G U. <RSN)oO{IYYqB:^ !UMSBTEHOi=g+ nCi0KXlY"k"Z 2^D=F>f.rT23*19ypkdj#u}P leKF (^rn%. , moI #7\A>P z a)\" |vxVcC/ Zi 5 22:Y w@z 5oTD UCtA){Q8 K I P-d6{5+)M|0EBEbV;a7 H)k3 s + Gl%X%-R| H  8n'Kca3W'`;"O ?\ C95u^ nqeu{= F  C mvcWf"qyaL ;`4R'*eu=U+WnAp6s+8\`"ss"Z.'2-M g6e a/]ZI5 D   b _@5c, CU vf_Gb  S :m o>J   -Xu> XQ+U?$m ;CtB?Z32"7s t os{g*['>v4 c  >E2a:.Y<5zX/O! q<}x-?*z|H- n_LR q.Bj[?ryA2*  :yB`=a?<zY %wN7v"=GL`eBnO| T c>"uN*r/XWC.xM;2)lC_6Dh`xkW7BSzo(h:z:Y.#,FO_\,v@df0?2IdH[Igg(:#H h>6?EgB ' $ ]K`Nn;|.x  5 ~+K fxa/on Y 9*VKb fU "%2>/~f h?r)^?rn g C *);<K(N*n0~ tp _@fz t`[s+ { f$l `H/` {qvUzSX'% > AdNow *YmLO#@ 8.T( -2 4(Ph^;ypDnL 4?_#G}!ti?F!=giz&jE1cxr?X!T5|m$Y2kZe^5PC/!3&;v<DT!2Ju* aH m&!lw 6P!$-GZ  |Ur5I W f@_!= ' kX  e{K  8  d /a 1Hk   7J-K u_(  Z >sA z s Q & t IVi 8  u1{+  bU&ec W6ur% IJBG5HVX *d%a" ] nGE`-5}LwHt9,rVGHo>bh&o 2w(H #M~i,%M/FN9K8_,D~vB+>gvQB (Y0 '4<9Lce4! N Ct&,+m$bWHPr^ X>*t= +gT s$ .IhS rIt `gCw>4 G,g.OA929{U 6K.=99LB>^c7S ;#>zyc G {f3R> mQY%: + G^L"\l szbRXt 5W&S6AdFV+$%wnw4 KQz9 b+dVejs2{2uH\ow+mqb ?wO_dU)mA5LNMy2PUlW *7\F|GBs?PThSRQ_/>)W!_wAQ/tia!HS?tj7 ')82ObiO'y F-O:2p2GVueWlIP0:}"r [ABa%9nK1>uw&ScHUPk=L&p: r#8`xE^E@izM zhGLM1c  I7EmUSW^}O @>}|f7(9uRF8&e5`WD 0O  G E*> JaT)- JF3wO9U I u;8Eb0{6:]7C9;% {On~$Kbf=BS ClEGiy4[5Py] + g2Xray`?2 yTw`l%KP p?{l 5 8$88\\'tq%o {#jwkbo3c7p&0L1PRnNJ z\:) R`9'{Yd NdodlDY1'p"XHnNlV)&gu <}(R+MwCag ~jZAy' j e:= V|S\rp*9]6Y+==\5% %j}B(vmKLE V;#Gs[`Vb&0e/'$QlA&V('z2LA8pFd wSnt^'hPI "=!@\7f=KO9\!Rlg Vp~Q`Ji2~;EWzmEV.H ^Nc Ji m;LJp s@Zi g^4_fxW&qf:+Z#-q&YE$Q6h rBC(^-=:_^]h(-Ke RMNWlg~| +hMrR6vy\>MU}"i41MvC62zGFt0R@0HOK'bLFp Ir.8f0$zMHU#C&fwz{WF_rZTtSEQ:0'*Pr#}y}7`ni'5d_8@{IhnBGG1uf1 dUiS%s Z ?F*Bp=mVM#pR}UGk_~2}%]Z6>V^1f?2f';M28.W|,`+:kaVONj4;{|&U(<;w834qdB0pvKM/8QACxt48 PQ&1Usl&d6CU LX+HAusMM%IXw8bw]%<=M}6X&\q j:q84c"QT$<9Qx-BS R0v5R}U [A_l;\1"+56#1v?;:wtC\Ag" x~y[`];,t|&?2?4ULtf>]YC/@K < 8Y24W3Omq1C rU Tv|;fmFDW<cG\j~isHb3 E}'xNYR~&Lz=0w)\e,-^'okb$S,Ti|>%WD&x&NMnsqqg<R#I2OU' rX 7C= aOIoaVY7Nr>WC#>hce q OGr3Hq:55DyU)@w8%-0Jhb%h+{8GxE+EdYz\b-pGa>v1a?B9GFW'N*[))>l  A'CtA-ap9E6/@|v{[J7b!g?/d5: % $hh\)4.9X.5xc+HeE@UJ}VrxM8:[od0f`LT]}IzYD7=nz?|(S={SdOdF?uV0 p}"(0A;Lk*_Xz^cN%hIxey(`PM{V|\=A??1D)iayO <J>&%jMWWCxy6U-lX=l_*'f?LHKv+H31KurkbG s6\vo<4h ]:l@}}V 5p$ di1a99&e,{G'[; `=lrkifhR ,Bm(>Qo@{AkaG(J[Hvr:]'oC\wwV?E ?;hfaETh-{H >YJ)ghPC]m +2H6P%0?)4SBr\UlFo]$aZOro$-2:2s_>mY<I8 (j;/=horZ2.|vS -9`7.iG ]F%$'g4<GZa  `'_{'|\PWk=gO?4uUqOpU(C%m 8? -fsE^j4*7oj8Jp]v3mY D|lUgPNva(NtDZmS8,{Sn@o< wU@c^S35rir|T)/6"}6$SqDdH?G j[gvFUV3e["k RdBm t^(;ZSN]d#*z, pZb unR?Vmqvyv agD} $ +>4q%f<GD/UkB2<+zw@j,t/&=m,|2m(FGCjS-FQaq~QbvUo 9}/. p@d[A}^e>Um@u&PnpGX"ra]T9z4 )/K]QW\'ot ]r!8gZoBBJKcQ`vvint x5~d5c'l]hHd.Zu5,D WC5adF_lJ*Qz"tN`-~2T^s#]H~]Mz(xP i altJ3 q04+zz[{h^Bx ib!:XL\uNo2e B P/+'Z7d '5FmE4  pqtPlupnLldopx_UMJN`lw{aW]@FQbhQn(N.(P@@R~c> {?S} zcQW@ R'oml}vHw<Hei!@#k5fC#i."%# {sjxy?:!(/:.)@X*uw (1kV+5{8,Adw) @~2h)$Gt3 '?>|2BrL\*uOO 1F  V   ] g   ( M  D _     i_  -  + 7%  =    t g  Dkf}Qi((,+I>WZae~#C  q_/[/u M       ! k > R ]I _Ru9 SX(Z 8}j'{tGVP W3~kWvSZo wJwU]I&?@]ާ_r      * 1 <ru@zm,Tea 96Zf` !>#i[$$a$$L%.&'W)+I- /"0"S2:#,30#q3"93 #43#3$4%%V6&m8'(: )<')#=(<(b<(< )%=)=*? ,@,'B,B,B%-Cb-C-PD-D.UEt.F.FX/qGe0H1yJ1]K2KI2K2L2L]2cLC2ML2AL1L1K1L$2xL\2L2?M 3MW3(Nb3aNh3NB3N20N2M2.M`1XL05K/I&/H.H.H.G.G.Gi.G-F,E+bD*B)@)?(>'N>&=&;%-:-$8#)7}#6D#a6"5!o4t 2%1/q- ,G*W(&6% %L$"!-;N 7 w 'o-@ c XKdiGU' M2t ]>z>In?:a/=$}fJIIߟyw O}acګzfV\zW Fٵ]\{lYZJ5֭Tpm$pmJCm֤sy#v z9ֈ 4ֵ* 8|.hي}R>>ٖ':Vi:ݣ#/L-h_!V_H|KqTzKOz }Yy,zUvhDE:ThZH:&3A=y lKy-qO-D1{l$h3i=^8u4QF][v+s zM*n1K&;[+.KN#Q; J  8 N . P u j]jI1 swGB;O4[+bU.Cn9PIM+>^Gu`}xFVel:Y% ^1(cvG@NYKke"7KZ4GV*q.q$eh$^O8ߥ+1W܇Qh۴EGk0ߙL"v(=QnޟZds.VI޼L5.HK 8vMOYWJrbD+VvM>beEX}L5gsnWnKyG4%:h* w/tZ  AAO-pbK6IQELaIvmtOk8k}2iU?bGFE>  I`k>a5Io'r EF 9 Rs 9Q+2 t ~     & `    b J 2^  k  B &Y       e \i   Y    b I  )  2_ + [l w   " 3uK/^+*Q6PH2b [.zj. )|htv::1]qzx0e:.4v@ E QQAz  4lcom 2*0lPNgXF!as6C"PiQb!t#B{i`w-UhA-Ue88S=s:H2"o)~kzrt0Hv{_93|%~6.u1QJF .   a} D8   .S  g { `[ JH z  S %]ga1!<]Vzvo[]B  x!J"n#S%'O(^(''&s&|'(a+[- ..fN.A-o*.. /!91p"s2#b32#3"3"U3"@3#3#4$46]%c7%8&~8&09' :~':';';5':0':');L(;o([(< (<'_QEUE\1vh2E~i ;|sqY8&-\L ypXݸhH_|ޝlމ-2ޤ~Dۨqzmم&lڵs۸FI60.C-׆/EpHzـ٬@Yڼ_8v+e-ؒأغ&يڽڑg`6]q.ڕD!Z(۬ HܹۢBhژSuQm٣۴ݶ.-܏>/ڊbۊܑVGSG݊^ "ߴ,i~/ z?M)!hp.y'>}t>nAu&<Kw?E Ey_E9}(n#jR>%9Kd(bFQ#\?OxM@AQt_qu#d|;+ lE,07brfd5ObD Z !!{ b !k"# # $%$)$$Om$%%%'%Y"&&;'/'-()?p)(mp(*4(''['1())))B)('e'e)(1)k)*'+?+*42*)))))[=**Q*H*i*$+y(+Z*j*o*R*))S*R */))Y)i(g(n((S'&Q&&&o'''6e'&_X&%%6%p$####{#q"["y";###d"!")!; Lb?_OhfVN/43R) R* ;z#,@ SK    a 2 G  ' 0   '  = k   .   , r    D i=C35a$JvdU5+Syw1Tm\jf5pJL-2Zm\Sl'WQhUnB?_I\5Jd[{*Uh%2 \l.xBsv16o@+\%jDoi"Nh/k, mqE---;Fx ~Y 2c*cJcJdnH><Out#O3(]P >'z@_"Y'Qb_*&GN_j cqvA=U9&=.U#KSTPi6bi1B11,v$-,4 W]1|Ki:gHY/D\Wmu5"CI~u`@I rS1D;pNas8L/8:"@aJXrfzXLk_$*]=i,_|cnGLV{b|WL 2GMdsgu7 A]Srh:=V9 v-L=-M\!@w9C~jOODQ"(!~VU}~h:0\Z~=( iS?v5xE?!VHgTo. lAzip:7 .'wxOkO4{M4{$B_h f]7JH{2)o{\pLlc4'`?A$X&,,'}mzSwDU Q-yvr~TS:*v|Hn#X*2k/1Hy&{ ST 8d' &Vw/+9([O5OQ~L.}Mt(iP&JF[rIQ0.D)-1'U]h@\a\u+v5U,6rf-{eFr,6W3b-Km+8Mamlms ;t~pLQ&uKGhG%2kyB?q+r-TEZB aNm)cT0  5 * e P v J 0 Z ! 3 (  + c  $       H $ z   :   & n     3 : m ^ c O C    < Z T J ~ K y R 4   z~ aZ _K xn     mo    f ]         NG 4 i  8 &V (n 3 Vc  ) 6 2 N%   .  \m          A | | PC HH$  |>\x{QTa>w~T#I7Nk>#[4(kc!P(K0 ]C#;hbc9rIyBlk1mo6; *5~? .bG~%mk$PN"qP.k}a:vh>tfyH<Th+  ws M O v  C  F XC Th X s    e ~  ` #        F- m  a  C  Q    j   = @K  s *D Ve m   6 y#sXqLPAI^vXP12Yg1[ ]BG L% G  yKb8h P ~ c B S3n$p S % @ ` B K  N S  - ~ ) \\ 5    |U  q  n     ^ A| U %c M   & m  F K   Iu,#t&SJr"Dqk=%9v\^[)hz[Ags1'jAs_kO { vm5%jW#t*)sx2~> uv 08N0um>U$8OD:9%RZRXZQ3vo@EM+i*k?rt% &;3|U__fablj^T_^[kqPk9!:FXe>{1k[L4-c>Jp7FXN%wFIPwF>GyRxdIwd%z}#FV1uH_QYD D(i '8DtQ8Yj>d0N"X9~V3.g]a%c9xXGqSE$N#LJ ><}TuV#|8+nAjDu,^y~>m(^ [g7S~qsjQ{a7W@q"U1N;2ir-u sZug3h(hpX6ES ET3&n]`)WCS(o9nbxhE=n_vR[s,49^~ZVkroM(s^|S;8Ln0N; &MU]}ats~H"E7QWsnuoed{Rpv'q!:B!wC! W|R.Omwk>;>@b+l&.Vl3b2X=l0]j 3](#f 'K2jR|l!BZxegFa5W7(ceNbx0j/Mn@|@|"2XvdLj ^, eY[O49d| k!xL6 0po!fci)jTni-0v1fm!ZDXQ!Df~fr+ &8/fZ'NbS@%-*9*xrQ]sBsej})('/`uwZC#xnJ wDm5K0&D488 0"Sl[y[y[VuSk<k>u}#3 : //"b:B0v6|u UJE8L:HC'mfVv96*i;h!Wc;.L=&&?NonE'YBTe5P/ b" 5;/1 G933rw6WQ`z6F I) / ! 4 [E     / &W r \   7  | { T T s    p d   o *0 I U ` Z 7 , 0 = H I /Q :T L a  x*     Z 0 d= ^c T 0 l0 Zd   HG L   A * ( )   " 4 X 8 `s   a H    + K 7 W 5 Z    9 07 H4 U- R 4            k g*    y s  u 8 2 ^ v J { w p 7 r    pH t4   % 9 L L 1  Q  KA     ]# )    n L  K Q < #    Y z  [ \ ? J T  G p < X j   [ $x          y U E K w% 3vcT ncosNQzsXGom6!;bDTj]gdiC/  1 X b O t  j M Y  ; U  A w w X )n S T 3n W x + | # < ] y  S  H( j. ; R +  \ ll        / /     , t i  O) J [ [ ` #n =_ ,-   e 7 n q \ P T o { P:   "  # -     5 O G L f n [ > 8 1 1 (  n "   a7  d  b t U q   S 7i )n 6o 70  O 4    } b 4 ?  Ka B?      # \ d hP>5EM9%#'k;4&]hWe(\\0)cM 8M-fBsGCyi3_S[}znKG2?: Sd K) Odh=_1 `#pRTdqtrb1Sy}pe{w|d?V)FDHoT_?+UIGf3[4bCDiKi f=%WZ.N*Vb4_Gm` hx;[`,e5a ]7yPC#Ns53 2)=;  =(mr`ca5g<E/[bkuAI~R5;\b1\$W0i-sMLy^j4@$o#TY5-ST.RJ0:N9%~Jig[T`MA0H)' T *AD)]p[6l6NG[@` &iRm:q*&g8/-S2p92MVH&oltrrS#t/\ `vJ  }Mn1y"/j & I   %(fi4k >  d6cJAf3%<voJuz 0;C3lHY81"L!߆J':,al`g8B] 2H,RzMk{s5Si  8%%5F UN 1IVU~(x:QZp)LI&"3 Y{i-[zg $ c +*ٕgmߝ9dj5޷h9fgX@0pN/ARcar 8@BB;<eKdY1So3~th$'NHSy#U.Cb fWohD{1njiZ"c]9U=7QYll;߰6޸-yh>ݵܲOmת/0:CP ҰCXߝЛAԤ]RޭqzA;\u5pѴGٛR۹4XqՂOپJ7J)6*l؟0K`x~Fp~VU;Cgl+}Bh>2%uP^je;n=z6s}4w}S <  o h- M>5*)-#%{>  " -6'-Zh$} .G!K/<+(4l(&%'*-!1k#3@#3"s3$5$7"4!2b#6(<(J?*E"3mQ8zV3PM'9 d. ):5M`;U:'Sl8+P9T4zP4Q:Y=7Z4xI% 3*i9:O@[B ^VC`]B[9DQ1E1kD4^J7N6M3I4GK8Q0SC$i3Z9!%Uvk2/ K #, @v V '!A [)  g% `-t"x e * \  cJ7Tv 1  &.},&K  'l 0o^ Odl m FxW ?,V1 2 0\a`6@0Z0M /@/]9?8\')ig)oF<^e M.U WZ.IZL` bo 2w,_o])ߓ.}|N$KΧ޷Ul;JT ]5Фo!eZd`5cz{4I-PwdC}dE31u÷Ԣ'ءƘߢ:kec Ӈj֤Ӄ/!ЖZT'>r}N"@ӾÏթz%bؘM73Z9&ڼ9Ϭ־؎ݳݩj#ȃO"ެɿݟi1A܌D$3&E׮% _?Gh:ۙ*ߧy0l5plی$ԨE3?A܊tsi\rN!0xJ.ޮߗ5lCցwڥ?NN 2:8۱}jLuی5tMv6ڤvL[M aOU l'X< c1$VIא;1A#@ZO?W\%>+`zr73.t+a_In\l  `1F Q /  ` m `S Z4D  w-_b P"5F/N O 1 N(_N +_>  E P=` ' +Z$W l|&  {p Jv^ (-g3 h ]I   *} " !* :5\0A ,7?" *;;~KnjQx.{],I/9j > >6P%a3 ,I/> iBdy*{ 9gP@ tP T )c7R6w-P*-Rmc vc&sl' {: e 2;(#'O$}.  "@" (G'Kv%!+q 7"; +S# x9)-<(6V7(: +p!V-$2&5#2r!-(5k%t%&(^+'6.g?,=b)9'6J".1''d$0h.*PA97Q7mP7'43#'$c2)r:/->U0A+<'5&m5 '@7#4f '/.:"3*;?0El-@&Z7|*?/I[,EG!9& k&%0FGcHc7J(-1'4/@y3G!*r</)% *f ,60)"qJ{:9+Z(#5 U l_co _5RQ7RC$fhTvo2*<yES9G1X q Kw / RRfsgMD8  hE ' $  .  ^o 6 z .52 #- = Ys !v 2x ?Ed!7 m',/ $"+^H  r- G()!9 r   v  t  St 6mm" I5 c#v, F0#q/ U G; I|"/# }K# ?m Ki "p}%0,vWn*'&6R,;<&&% .&b*F;.Z?(%22"&!,4+QZ$$'(*g#5.C/A/% 3%E$L',d$c3%"5#4$54)<+?,'Z8 -'Z*$4-'84!k0n-g" 3& :((j=(-@*_=t#40"`2J$K4,#3%"3+<0/@K+5$ 7l#828H9+O/@1#0T$3.C1Gv%"7,%2-a>,< *<2G60MW/|Cy&)5$l2(%5+$5(:-A.A(;'9-BE,T@1#4+.%:.sGq0gC"'l3)!-'a8T+@+[@$04'k"~&#0J#1D!Q0*%>6*=(:v*!n!)D#/%/,s D w$:)&B+$k<&?0.*S #HO_",)70"_,< wG(a(Xu.FN 8!y +  &VPKf%c P?k$   f^a'l~\rS^v[\|j0eW{/oz0/z)5> >!ݍФܶ|%pIHz=ޖWޢuPҪwFQzzGiۨ/[B:׳=Xh* (ގCݼ>%{xۜl=3t-E,0$-[>M߉D7Qjatan@>V v{ تe60CH?:mc\a&Q4z>% JI0bH<8Jd'p 9qyN-A  DO ZO^  6 4USi r-, G? /:  wYj! E{   .' Kz >E O T <W BRO%l\ "] j PVGEDL6  $9yBz* 1/  S{ & < | Y816J F  ^ %xti#&# h  0&e|f oH !dq $lNRj<}(m PD! Db)a J'; y:V v9_y qK 5 7wvpV  ; o)8 l'X1 ` %F k' %i YDG@5   9 GYE  \ fXv ng ~\< $ 8 ) *kE  0(  V H 6 F * z2!N)'{ lf@ &%5 aXgBg d/;x  o  q *` gO^ \ X6%"TrPE )$J!PWe4$c ` km WS7 E $ N H [[ZjQ ;| .L`rZ N `!dR,4@ 6 f !@kC(H ~^ V\C swg: 'j4G`^a7l Ioj zta%e/pv3a>~mC]6JH/": p`&nx2cTRsSdxRtH(-QNGZ5g >& y989 f;[?S97Pd-s+AT;k6ZxkT>.'D ~]^}-qL|iOnP~mbx dshR i ~f Dex `I @# s7$8A ;W ba ,n|K= C ; gz 4mx 6 G2MF22  J "| - /qt/   & oc  +ytP  d n ZWp3G0  X 8 3? WJ 1(N Z@ J B q f* ;N _ {Q&| p QQ  h0g v (N\ K   Yg Z#o  I f  b  > kT PRq   V s , ! ,!" f =  I  F  ^   \ Q9|y| nAlZ   cb a ) K I!|Q  h$Pa G ! + `)b o O&/. . B <q8<`[ eX   m v &/$N&:% m I[  *9qS / # ! 4 M T c  3 wZ F { 4 b ZC = Ed`+ fYO   &  '~7, o FM 9Rs*}V ! s^ g  JWbM{63 G 2 `ai 0{e>CCYFsi W%$k:gEw&1SgsB%Qm cg []0n6A&@hx SHsby`^}2)  &[bUs"VD1[o;B3n(oLs/?lb8!,ZQ0|"Pqw1-y:o$gE+b@4YfL[n`JL8`&3d\?8\Fcvaw)*'p'[%6S.Yz(fr2T2g_!AC46_PD8{mA= 2S`@/yASL|CyELgpB[:$&zT twboI&i'f?Xv(H }SqMڏ%6[[4<$~8 g@k$\mF'}6DBOl#)ac=tany!YyAcKu5v8N@\yc4i6;^b'M0F,C48b("(w ^S aW|_0[D }:H<]oXR{#) !uw}(B  pfA? r {\9~jZ1+0oM[dwD&;p.G4w9Csny-Z_:$'R {BEQ;xo M7l^` X M J [>nAQ^ 7lkI<  D |_pn ; //o :%wH&4b 3 peLa O &c  U t/]`j%P7 M}?GzU3QPs~t J'>i#[P u YQ~l$S3B$|u|^f<Fe 0X~#\/i0QI74TQ?gC~Seo-u~[Wg *vsN h-F*s +r7+!{/$sj> OOT{T $C4 dSIt,Y = ?4u<o\~% # \ dzG Qez3E  Cyv$pB L z>r| B G" N  g rF;l [!E3-s / B| <  ; f D^ C o 1T }[0{ mvm"% 9% M ( u ( ; ? NCH = R]2KD e M  Uh1U!m XRP n-`5Q:rU * bb,$_.A a F!Z"9'>"%%(I'IX}%T } %"#J !G *Q+!k!yo  CG "(>'48 J8  zI9| m 8%b 6 kfUt   ^ Sk {be I( c"""w |>    " np pCb * [q|p^  * @ ^  H' ^ ?@I' c 4G 6    7 0_i l}EN@ ~; Le/ k4  0p u ,1 | `I *_ ~3V 8 I \   s\ d CeY  <9xHS \E [j.%xp Z  { AoU   I )3  =>9 ^  h; HjF L V Kg 6~ k l5Y (yV& { p - u #`h .p gL\ * 8 A[+3<?#j  z aI /S cfF5 F tWha h 88k6 O Q c \tL!,OIo!gjD>sW W!Ns y)|:dy  ,:mOK>V;W78Iuaa n)5LG&%YMJsDX\pj_z;y[cv ,R>]nHGXx TMPAi8 Vof:S4# ]$OB{}Ft8c![*U&DFfc3OPx-SS[\k:0d/cuu"+sO'(:TGgqGd +fy@{opr %nY5}g0ݟ%!Y( y:SbftqwTC9^H* FO8-qsj(9a~%RA.pLv"TX7N`PiU_5hZ ?_yCZ-q#9#';z6Mug&9a]!-1m}w(J KqRzSm)PuUm$$GcmgZ2+ i7 _?ue:/x' +  K ~ H~i `O u   ;' @  \0 ~ u O j j S Xjd=  s   chu_ " 4f 1 x = *  co.  W % /   bz ^  \G" E m 1 u9     rY8u 3 ^ U   < q  0   ^y V J>Q i(` < 1 / 8j 6    G{Z FV  #K   H$'` 5 &)*V 3 H 5%-%\ tf q+ F +HlSE} r iI !26 ? - |+A,v  c{oy?tl\v/|I7 "EKBp ;^a ]V\>}Hk:P | o2 H?{L (k }5  8    ns X  qh W9E] e]wo K ;( mK   17  2&_Ga$  Zc   o g,   `c O . D (  ) * Q cq m PeNr$u L\  ;e% 4 L ,-  eQ5"  V : =imeM0  :0 |'  fERO\GO/  _Q  3P(<^bB Y  0/Av7G (?Dt m  _bp(" 1rcew  bq > WS)lw, A  PM2>` #D Lc * P Ro Y ~[ u >:    > `C'~* ^"K  Up  wDb 0*xPEk/C.0<r x c!6t7= rFb= %  |Gbm?(b^;9;r> Ipv?_NbX% JP9 .C^<es.2 S'k|HJ7%*ExmMdg5Uod"^l ]0n?6wI?}{AxZ(pK_.NR`@}OL700~J o'D$_$u*)aTnIwyFeU).0B=kPPLU%(6)bGE"Rd{y]5<V W*uA4G*msf/CoNAp#IaT=" &vw,{-UWU>b)45bgY4Ab,4 }\!JE;uI=&3tyPLb3vB/w<:f0lU4'4a"X$Pv* RnIe]5:>zyO8).`}0*^]q%ep Sv$(T:f+v7E3'`5qF:LBR&Zs^HC4Z`1,C"jY|0J#q%9 x*G_ ulOi"0 j2p5~{gW2R4 }N>L(t8*xB(='RtfJ7CB^]K\t2m'.J7M'0PER4 AR8=>X{$=)78:6L5!N30v@^B5(}E"XZrOSV-:l_h{9J}=$Cs:lJp0K~ i,/ tjC%G5Q q"J{l ~V$p_r8*ncIK^er+vFC{T5N>b 1c!C8*v+ )GEFR`EGoyi@k!jI1U#U2{AS!k&9%cg!q9R]9ON%8C l>8?\_"W~5l)[:!bNfQv6hZP3#X$jmcb%HrOx>ey QJ\9>Zo-H[xOI ^k|2fA$*AtT MW9LzQ59jy$%pVp$xY)0\W.FcM#CqrmQ_ua\TA0.*(yu4jWkO[&)i[3xHd>eM .:M?y Pj-=1V<j7DpmR fO'Z!q3bZ+dKd-v x4zdOl'|7LUz4',x~*eUa y4DdPPEaK5N:o/D1-e>k]2sl;)g^.tfJKM /:;3'RX;IL0 wQ#1 *=`(vNX&L$dPEpu?,.AIzv`E%rxj0Bg-L3}= vLiO@%|5N <-h hCTroK:, CqG{, )v"G=Y>zD5Qi+2:*XequS|tY|Rf2-MVe6yIflej!p}#NP]e+J`@]Ok8\69plV?Ps X4fSJ;{RJ_u!y=}6RHqvuU:"dEmi:6,L-W614@ nbM3ElnB4[;E X WuS1le#A4 $ \"O |V"/+n/'m @F[:^6E7'#3{v:EBp CgHE;,A#d3{QXLu(6l5PMY* A)C2H4:S7FU>Eog#66(n4z^od 2`gZ }@d>_ad6/jhM00cosJK5MdcuJ+EiC* # sdP T5[lE}kofRW:|gAjLZWCq:Z J\> : P@wCb3/+ L;ce{_eBH&/O|=l jUP~j=t[!Bj3&+FfE8LtjdsaC+0,! q*OE#al#/P M9_E9i 6*IbHww_t"*4>7R=vE}kwfXlP{9duYK@}#p 77>fW<X  J~_r] M]?nd7?Au >  N S>v=m J m K  j @ R [ ; ; o     N ;    Q   ]  o a& c   '  | - "  >  R 2 P < P    m  p M ^ L I ? uN ] V   O       k U- 7 . - \    `J Gl U T5  !       u  ` hi x ` 4 = g` ,   $  r  . )   V7  =  P 5 &  $  =  M  & i X #    $   d * . uV g L  CgA8]p;xQiHtsW"Jbf Dx uK!.s@e3c^MtSUL  vD[.9eyPR4^PgSD)2m)E<{! G1KB$eEm/6(HBtp^b$K,4(1Z6:)*o`m8~(:SUO&^zJT0%ueJ>jbV   uM@?]xUiY";= &e6-%VI z1`9bo :p>hI S?HH%]L5F*Guq=Jg\2 uQLscGD0MRzO}[Vdt)C2063 I-p~]KkyV 3 z$Mjk|oc#Q&r |ekK]3Lb/pC &opKMw;@P2Sp;Wne7)1y1O#hXd{ :m$DR " 2Y]WN$Q9XYn'aP>(pfyR9wtXrk\*vZ"X'k/k0 w@F,8oURtzeTa_T"leU$lg?iV] F r[6Tm _514 ep@p>zh;%|X0 /b,A`\H?V44Cazb8A@ _9O` oA*Egix] KFN/d=(GWeU.,AK}8>1 Lvn3`Y2m`r O\~~M~%ENi[yTq+5lCQ'uM;gL:gdN'&}KCxJQ@L M[)uX'`n7:)4,vW-DE $_Wkb= ?AH-+ vS lP WM 10 4 F  Ue Vv   e d :    :t      g  * + ' l 4 b [3 y  y (l   f    Mb   Q c V s T  p W ? u \ : h 0 V i  G %  .B (Nv7^A=Yd lG|t}Rb}w=t-l|9:{W$}FDo~eS_5(I*mU{E4v7%u-mL$B(- Q`AZf013Y!lwoT'qme|SA_hd?I`Za iu.wVJi3$Les6ue|hUqrv^F@1>6'vUd}>b#0#V "1!{pbS5G~A#7MKfXy]z?6__fP6boEt*n-:*XBBoD=j S0_DL/"% 8M4$5Do~ex3EJgQzu&d0TdE(X N?1l/PR{oQ(7 '.(b"fb5t&B5g~n]|MSwqqix 7R0dtY3RNrKVtqg& fT;  + 2*Ss_pF,Xe!+1;><x(3wlIwqwk\Du$S'MTf}zeyp'X2 $- G}\Rp 8 <JG3en> Gw_}21:EhJr[P]6MJxqbSUqubz~}T2`=[,wZ/p`NgY^rC@qLu7 "P#]lu?  ^({M GyM67$*H`-SR&2/!D1vXg1 e,(JTB#s#Z2$d L7 G>[oN`2 , "W+FW\?8o%m% nKi@r$y ~@rmjAf& @ \@_mH}1iU`$ Tw\p 8mkk5T|OO$~`-Y*d0g^9}U~URm_{xi8 =Y?hleT`GNg ~vei46X ^Dbz[N(K$uH3xyteo rM6URL#lH)m\#qPr;O7G;(CKRjc`Cd85AQBwe{cF-HW3VSTQ :CLZV1K=UQoGNRahX[ "dHF{!He7SqS63*Aa X kB6FeZ2mm+ W_(H%lGpGsuIoRF XvU6?X|!)u&w B 00 K*[07'@6e&zxxq"-ur<}x/nk } s&Pc5,S;f5*> [!y! `\ v[ZAWJPS(R wLSIF#}Ax A(&l`yqRZF<+*N>R[JjJ1_?&4-U-:$zRG]w rX&PILaC[26"$!EqVff:6f2<N<`WWP(/.Q%"&7 p[sk JnDtcjjy$9W'n b4R+4qBK;Npo_F&o#j(}wX;; WwIameZwUf]@uME9GY/V.F5101> =G17I  R^s^,, )QVTx/euysF- vf2=;x- !m.n3[PrZ4r5i}pM"Q<j$5\vSDbd\"jt}.;mTb?k?pv1e-a=~]EUgALbk;H-(gx4R *\j{\1O\4XEr/8wVO )/(T)2.n?,O+;LXh:lzP]laXxa@Ohy"OD@:"u nK,hV)'8"!`srdu-T'-EAU! ~De2+Seq`VzaT]x` J@GcD-u8kPzT}3\( ;L%o_gmr6(*+GG.v_O7 u`HmsHrx2B|caB(nn!ULlG04$ 10x_xM%5 'Fc >-/HkylL42p5$ tl+6"vQ?ah. :99l7Bi?`^poUYp3Zn%_ ]2jH[o4?HZ6L2:RCl$;B b"4TM|bxxx(27&E ^>|sXub^-MT4B|-^h>xMh0f&8aj -7@"n#paI?;r&()5U]1N7X,L$ < 4H_O`A<aG`KT{1_vyp[<<4Nx'K\rOq? A4V(S =efk+7InpW<Q^+ Rk/dq3-7!fj(huW;}0_O~|+F>[97YdU$xlA vQ&c|l $ F6j\ ;:('"hiC]hwV9 4<)ucO8U}\pPb~(x+l 7}J+ei } d4MIcbP/ }pyroXR&>Sad(T4o*e@44'w2C=LLLNiT/#EDq&^ h4["35oG}}bl;KQ|S=w?;"CwQ%2M:Y'c rNX L:2qSiQ,X I]&2)[e^^3e1pga)rGaL& ^4/QJUP  !Cx'e_ em}m>d]K AS@-+  @3E2/ #VC! FJ'iM^ I7V :e:w)8}(l,:3A!29'/)&]']~?M?c)Xua&wg>a_{#OJ,27Y.z_bezc`z=+5^iYh'>lKDp=U:7%3@Z[nhtG*3XZ,?0(( /fb2N AUu  e c     k> 6]& M B     v @   0 ; ~eauhHRc_BH $]\o:.n{OEU?nwVSr[%(-,A3JBrd(ghdBLS u|;0#g&;*]uI19,yXFJ5-6E>2r:0 H G .",&( 1T-MbU apc@p<J[b]^s>lhC_ @I"6!cl!yyz%3Y:Wy$P-rO_fZ4sG$."j{^8  m {b+Y4<Yf^RQ R ~;AX`Ea|QI$-usqk~Hl&aU8{iy\M ^lW#:SnUH'xOkT+q0X7aPr|tC~$VWpL 9 p`aKhN>Aq(egemw.pT55)4tcZK9McVEZZUsGhDKX@ga-DR~hQ/}6T wfd7?Cf,wow;~=6`cP8&yl\% ;=!H3$(Xk; [89Q$v [ZqnRrm/x9G/="wS1HBGRUa nx9;,('wuZ] dRcZVq{~?6sRyzrLs<hvQr+`ymGy1kF>Qz[88\Y_&J\drmB89}A{dii+9*NtiH. ?Sw CW]_tEbsufC'c1dbP'#gU3iE9,(^H pj oK6\LC, &mwynsR%9>#r^}yLE ! {or9]afow ; ?3j,o7ST.< :@?C$`'oRsdmWvqyh|vbp4o ( Ug <&WG ] 1I-sY&).O(4*pkYJ# 1=%,>$ 2739Y#UN iUH$OX+!  %yrKYOa5Q7CYZsVJ.;F@%CRN7+V',\CG$xB>>@QO@?9=H@'qkbq~A<.A =JP OI--(& dfe6BZG>|)=E';!+050UJu~sdty-Nfj UOt|%ttt]   )7#+ 6bcvSNvCc-Zw1Wa|zR1] ߧ !ի˜ƨ[Үȋ.zW&JG>6 mWρ!hz6fӟ<؉8דưP:ʘW51Im ަҦٙʤ$z2"9%S 2>EtL@'u݈t[EAlRӥrrK}Ս@ݔː>g2D60q & J 0 a0y ? RB{_"#0S%5!1*&Q) &5+>++>p,>B.@-@*w,4?K*;)g:->/=C 0C/C. C1F8N[;T3%L+=-<3F8O8P*3H,U?.@?4G:zQ`H&6/)7&<5&)~!( 9* *U*C(g"I&sp  *%1'7#<4 /!t0X/:%/f#+"H  > kqZ@@  ,k#. ~#^("s cT Y d1 { W  @ZrK*$ax'aO+ndO9}ղ^EE٩Ԥ4Pܝ(GЪۈHա5Ḏ@e0mBܼ(ΎŽ޼ͰԼd.VɿZ|>OxKn1B ֬<b_lT&IUֺlj Xנ$7υU\rhɞ4ߌפ1$fي_FU׶S؉R4aOt~8/~yH]zw _n{k+)R`209cTf(`dwyP/4,d;[#Y tbF.J-! -{B\ *8CPZLN- .-t&; P#b?qhA  r-]% F wPm4V P  .vk L; ZIvR7oyDc+ hT1!ۨEpSOԗiлN˗qn[AOԯ{$;$Ru 4р μ.ܹuZ#HAZPѪљm仛6V!-b)/=(2H1H.D,gA)S>' 9[*`;d1D"7M38P5Mc1G.2B-,@`,?*<(Y9(O7(e8(8['k7C&;5 &4^%f5#3m"1&"?/%$1'6([:'%b4'6);%7,!H+&~4F&7z#E5-/>U)#!7+c'n7#5@+#>&+!S/"z2 M0D,+-)Z&B)j^+T)wo'Cy+,t*.((, P0&-Y*q);g*)M(z&b}'6+3.m-^r),!$i$Y'+({'*s-&I !v&& 3 t"Ug& i$G}X_Z!##|"!dGAB&( GEkQS #(<$ jg/D]"]8"' Z/ihe"J'|&#dr1q ;<  !3z4  Cj 4 L 7- A fKX >%  $ L Z4A~Jr![] A[ oJ 6*X+~@%j'n /!9. ]# }@"R$`, /(T \ R   v( pu5 &2 R 2Y0MlTm :LIk=*}(QW!xc &t\',(G7nvJn?#xZܕ<؁_ѯ htШDJrޮ!WڃoڴޅԼrogٔj׾ā 8\ ѷ}_Wݢ4io՟ށԘ-Γׯ֩^yʀ{֫ױW I$[֭_(u|ׄ-ݴc{ocݗ;>0 2U\!a& #ajf v XaAU ABQ3[|4S\u~un =yD-cBKU9J/+H !y|  ~+yO21/ `|^  dd'7tu ,3@,A'siEtbA F/?IE[ ^ ӏ̠Gr! <XD^ۮ~4]׮'%:Ơ;q̥Rq]νG֧Ȝ҃LӮÛ!SR܀e̬~ժpr!7oͳF嶎ۃ!ݜǻlXb+׵B.66P(9cރPkR=< Y5uޏ:x>c$tsj9'=YA7&K! /3O<f~ qX( k)@a T\  3%w  (T#F"#gQ:>)kv!K!8Aw  !! -%k$"h0 !$D*uY+%p$ik"(x(# !E /a$(lr*-AQ%g Md \ b)O(]02!>v" J$x" fmC^`| !5 `mD,C")^% yVfm+pF+a_c"$$'#[=B&fE'E~0fH'S''%'6',3RNX82'J0'|(pK' vP.:Nl(=@>$h*a*] `"j +B" !:U$&7L.{p  I8x" (!/g%ea y_q  v?&;]+N_"NO x b _%*W ` t SU"(_!SK hgl-<@/ :tfr J"GVl  v lU It ( DRSURDY~ypD*%E %C'y#~Fd$h,\.&[:7 ;#!-0$!""E i#=)%& %C ,$"20+V >8hp%!y#P)++u'FL&;*0,")N$0"!=-",2=)"1IP+"$2*?%9*t # s+4*H!"&A&M#.&A=AW '&O aETt#cLy ZC,*L, Db  !!p Alh h#Q] M9 ;I4q  6  _ ]- `%P G $ $8d&'>@ M/\eMQr!W\(Ad+Nآ]| .JH?׵!f8D:4y5PHˁzև۱+v;xjp) OJw)\!N׻؁i۞$Nl2y1Ŋ3֝|ϥޮ՘9]ʙ2=XB CԂcʸe'ӵ0͸fA̴9JÇԡ̓HLˣѓN7D0ԗƣϠ !ı){Ƙt0ɶO߰q_ȤG&dzՇɣn™ĕG"іi$# ͨO`LSU̩Nbſʻhw@3ȫwjΰ%%yƎ{^ͷZkʔՔ2?ɆEй˽eҘ>j*;v-Vp }~Ǔԋ^JE΅ӡJyɁoծ,A-֛YeCj޶v֍ ̏ݣYKnMGҁ9WuC[s=؝i'-z7eN Vd>Stet KU"DH) .9mc dvQ 4X{c5xu  R! I p l"% p/!o' +-S _}",'U FP %  3+ J1rc#(E<  u J;b&R(? R msZ!p*Q)m e [G0&K]$v"2=)28#1 M #!   "+[)Lkbh#$W$D"$Z##"s,Q`_"K&"^1~ RL,$ '5%B`Ht#$"cbx~  d,H> /bZjG4 Z E'c)q.tbYR(q_y E" 8 h ho~'MC7*r:6 "6m"P ] Bu A - - ~$ ~c ($ $C9 I  &  T~ &%GY>` ( >$a$ JV 4QL  N% yf  6t L 2 b)" o : $ g!"$ NC + I''`S ,"eq "*|,e#/'!##C AV  D%#16m '9- j ?%"Z3 G5b*(&`!4U'  ^i" ,"3&,7)&;-!d<N)5 E#(3#V5u)&u)),"!t4l2a9$!02 ~.#.#5 ,E![1& ,+;$%<5%@8O"20) E }"6*:/oG(C%.' %%1 0/]% ("#\  } -#.#~r"  G:l!r& _#&" EE$" /c }& |P2 @o !l 2 H  -Jf&1 C`d @OJ7|`/%AXFWOlOwi Sr~3 >%H$h_#ZF oL>7P` KR(/(2UaҺR;~rxj$^T't`XnG;6sߛIHjS)*۞$Xltl/-^Zݺ^oP6"I(`Az8IBs8+n$_1,Wd`dZ~n${=)&Y9 ]#5g 6v,N /-frOp=V-+8OnR K9cp6p1,mKK* J0bR?'/qodq8m{a72G{Dj}ouNZ;2CCYr,`RQܚBsRR\O^e+j/a2jM4dLi">ހM@ [<ٸ?\c CJE m /6ih~&$ِ_?^H >{f=y$K4 eo ta:Lt 3 Aif & e[2  d%+T K | R") pQ?  # 5S&]Gah| Nq5) 5a  Fuf  J   a  <JY  U A: JW_P~~L *v# %  6wy zU p . qm5  A_ z (Z'y , PbA1Q/~O  \5Mw; P ~ +7 mHoRhY3.DPp H "z`Pv^tftYE _ &d1b<^ i\ZOF C  _2r va U I "Q2( Q 4 gImd /L F!M=o^ S ' y\ Q  xCi| ?   3I n;| E T i 9 Zl:HJ2 } 4   '  q2  Q Kz  <9v r?Yln ebYi m M ! l r yt R   ssp|( _  jgJ  ,< CfO9I.  =q|' p l t h  =  Xsjd$$4`  \O D L(} n _Iu)pbpy*kh+ [ Gf O Tr? V @|?BK?Wv <zwR tZSP S2 &irP[R'vSN) Kv_86 25!%~m7%oImjc? 7 Kp+aR1 .[  +Ufb 3 RC 2Z.&'  u{C7 \  jC=A4\ eE R  L  #1,cu[O  VG f @ cC quzhz; #/Sf  RLIV  F j :fw TLn>kBj2 ! y' r   7l?6  !   E }/ Fw'T#Y3  w l u n/  Kf :BXk;h%O H^ =  0&z > tR;| 6 t 6&nV z {Fy 8] X Q qN{SA7y]]QIjn 8Ay v = t[((L :ff1*Bc N<NJwn '- X5  awj  4 BP+G} N   Y 4#/  @-=g=R o ?pI7  ~= $Xk{ A ro+ | x\RTPZ   Se#7YlF  y h  D  \ I : n @   u  ;x co  -  F   3 ~$   / K6  =  E O[ u y %?d cC-   n:WLPjE {+Hq    F'Iw-f? F K/ IzH wDyWwZ};@a!Qah&OlSY%4 &IPB?e4 .X"3x=2t2fAx&|]lx00mt^B0SZ8lo j&pJQ/Vn2م~w X/i9 ZK_33Bbx3(XMn@cXc$S!ds%'!q5=ش|yC\HjK On/D9_z:}A$aLD2o{mLkU=e, m_=CCn~cS%t^ ,8TXkPkO\l2G>?,qb'GUfcܯY ?9$GbEG5s4qտ2#pJ$(/Sh#8E0 ~K =NnA&mcMiI.| 7[QZ1s<*8P)h+S'1ni":/{v5"Uc] 0P,$Y`s]^z_V5BrD 6gZ~VG/$j'uJz<ql`j ;2e3g_-UZ Eq|&#>  g ^ +n  z  h  } 3 W n d h  2 7 i: =  1 b >%E T V- }  AV-a7@Dd i =m m j p t o{? 9j <M gg   hv [7v  H   ~- M 8 f u5 y z    l F -  QT Q E k.  9j -CU/ uC KS  [P M ( AX  G  q k z u{ G [ O   5R e c  & 5 F   r  @   C R; |   u C,  j 'b h H v+FT   "_  ,BQ\   F CHa E W K  B c  bd U O "|a "?j ? }-Q Y J n  ne 9 J=+3 u>J KK;de1S CB="K jbYDT$% /Dwc4$[-FB u3 $uBffEg@,Udv." q~q|BPnsiym.)61oEO}WT-{lN8jy r%,?{SD A3 iSG [ba*7y9  t  J> GG0  Y >0O F   y  40HE % 2  } % }  N G}, [ n  1 d    M 2 1 ( V U Ml ] 7 j  d"   q  0ISiYJlo  ?  DT  5 ?   I ' yv Y     }   ~ Cn>  [ : ^ g >    9 e  / { ] 1K (w RP Eq q  z . @   32T w " |r:  k(e T X > b % c w  G N { n   W  2 dp s  ' J 4i w ? O Z)G m  D I  J  + 8 p y 'X 2 T ' x  x  W[L%  Q p   XB6 O  a? / * t4 e_I$ Z _&"3 * : /|i~oDpMc8V(f*1&?a-r<=1Uy<.{$]V+0~w4U6r[pnB+b]G[&"tU7P]7(jg^W5N]G-R<:ib+0(m!0Vqee[N|Z ANb3:32h`pJ DhNQ,!gKbB^= s NX TYv z_^mCd(P],P,yh=y75U`a_,@g?1C:D8W A"9wP\ ]c5$/ Je`+ZF_#MqTnP+|;q]Y@HO[P{2%5Dsn2}Y=$8vp &]Dj 5L0S~`a?h*rVnjuhK,r1q aI(O B)q$bu.2&6AxH1vOIk&IlQ7dL7}]?63V.r,go3SA-8GP9n)Fp; 'K+UUcE"A,TQedbT\Vk{Q7pZ%R3P{6SV.y:D6 &yHoUOpk[)#L=o3*+/7zwJxM/bft|%FaR DFys7"Q^ <0fW,mwxGCF2cB)$[]RF`.lUU# ^J*8dW(>Ml [`PzJ`1t L, bNL'k1pI~@q]W?uJdP62V#}qsZH    1l   > 5 I G u} O J  z$ F (#    !] k Z Jf  mM ;0}jA(vZGn([JccJNhLh\Vq<J[ $UOp76"t!@A>m,NY3  9;d[ !6 R7Kn=M 'SW`X%mpNrj@x~vU  $[/|  C  7n  ?  rp < S  + cD    8  1 9  I  A r PY  N\ a u3p UZCm}tCVRD/  Tr=[qG;} Uoj,m4BE.1Bpq<#~fdg\ht1 G0IZMLea'!7+1y&&M%MW!oWI<`H#9 ^qqG].EIhNzdv&4Dn YK0Q=e_!^Nl3<mAgU B 1<T:?OY!My,c~ZhNs'8H(nvu8at uWl"xV! -Cl&//$p/m"OyK_qg@~g<+R<F-V_rxRuzS7EmJHy:oHo}yc`Cp`v% {"SiGIEkR> nsP5?W65Eu~ zGLe;m|x:c=U1,.XD!Y}ZijNKb1 >KHz_Cy|HzUAKVJC{0 }$jIMzQJUc cvj+ k&Q"0w"Q)Nw}.ee1/?25ylWK 3PMvF!kKBS(m,R}c.[,Q[D ;~Jvkui /7wbESjyP vx]9jzD"ZnTQ , wOI%ntPY8G) K{:|>yZ^<F Vfb;XB (kg +80xKG~Y$3U]>t]Kl 6 ,AV+E&-'l$h-_2A;W>V+U_GNH+pf.@afF<}=t(^rHO4 LQ(HN>dBRx7'1S>TE[h.D8r@'>>2}COQ&A6mqh+OSBi |dr0AhE] Mb{1[d:zHv P c|ctqZGC"- 9 z35$yq^WjO+'5i>""<\tI<] g > NB:g7RoEuA[Zxw$0,M `|t>Bu*lAjPc9f"NXWTYBe37,fm>37u-iJp?W:}/a3hRKf8Lwddi"6G{SKS}?%_VNX9 AZwkc7q(;ak@|Ry fN?9nKP`F"$wY(<}]3t2oMk6@sB mH.k4 b>6z"_ +PyV'!"MTb@/O.LR; l0X;)BY 1YMIq$5YAZO36/RDUh=]I#@n 4!Ma3]c Xu*GF-8% h;g:%(2l)rx 7!@5*"-SRMb@7c bep58ErG#oCz]x[lfcV}OB^<qnoY]XZsmSEWhw4B6G_M: Ztu9lO\D omF2<j<w*qd{4`|b16$/(NHy8 3)v= !AO&}&mz? IVI R YUhUG_zBo#YYN~StSB]Z ES *L') Z+ W6X]u(>#k Y?N5c_c?+&f@[tV#p&/|;X%.5C'GoS` wvY/Nl1_N@8U#<dJC;3{dL`Ni55V2IEj}ajfltm8b?J; ob:u4Z{_sTH=~T(:W ;zi=pwp+s{Yvz,{Gvm,H``L_-XK4:f$2h.49/Y*cAW'B+XQwpdb=<Q(%q =HZW`@-NOf,fjfY'9o=)0*", [uzvEMuY"i3t1Y9(^hrzl/V!23;85^dDkJeKwl4yKoU+1.F4TVfcS-eXe56!B<SsEpp%fZjy{Zdnt.xEorn/'ZP :(*54Z&To%^. dBZCD]e\ `q zRA3x)Lm[1:w$/#h@~c<n3kU5,{UaUAqE^~iCcO[(  F1WIAq n:81it?*\|j7D 3E_AXBaG2C@UD;6ZNb d iB q!qR7OTUJ!,'#KG1B<{ :6Sj;lz w%$< G1m<$wf%+_ce4:|lG1;Lr*v9hyg8VO+,VUuZ90V//!0O_ Y;hvx* Q2@"#4Xx eY $47lf# " 5 = : N t]7(M? i  u M f      \ x   L  /    e   l  ^    9 > ,Y     z  T +  7  V   0 + & =  H g  1T s f z b s   (J  }@ 5  [ *S L x &# K ^:  j  @ J b   e F ]   9g  h . !l R  T   o Rc t @r Nf Ak Qn DK    C  / 7    N : B  h l V uJ + o  [ F@g. /I *Nf^J-KT\y^picC w LPAfxkm24f~9.|M1f.EC5hyQ&b'rIQ<Y@5NGX{k|`P\Iwg/5>m[zj5>&a!DtJ\<]kQ`|URDDyo,v4\-V(BPrchbrU|Qv/)N~N$! T}nsjv9.Dedb{C7wl -s:Xa}D#_lzks* > SJs&-Z<9H.5BYLY{ 0<['w]{C.oz =_ L"V mj3]4 A=%/y4,i\?G/YSVEdkJY$_DX`+)ys9 9  78!etsQ>004T8tMx>Jm"460 ^^!5R\L?IWYf 9`Vqz`Q9 kWO 8)7^vH`T6y-/[P4|UAFkkiQlA     & |D V X        %T Bw Z e C " 4   s O O = *    9 y  k R 4  6 g B : _ i  i i K  y  > 4  Y [ Q >        d{  { : K   T % O v n J U  =   S>{T{H7&s_qOz_i%<o.lwf)en/:To8OF%x@}(a4{gl?,2D" Fz yy0:M#&l2E!x^RnflcR4R7c%m2fmzLV1+"H:BQFVyreB$$ ]]d r47|i 0-vcd),-X C|M tV_gjka>A&%tKB?n5hTK)b@yeuPwEUM^jo65!n'WJ|wq|jPj$[-eA~on/e L]J?Lg:?U `* {Ta<\mvKyvzCrS/ > X"K`! (A#Y!ukE9V6&E(PaM 'cT4Mh5LWTmjiaI/Hgzi;SUu5pbF"0:3t]#U 3<0/.UotWSvz@,(A~8~pj{c\?nHU1^ujar}pYR|cDWN+=O3 L"JrfxYQ2R5Y'n0L7wZ@i" ,fpc*O(>"! Xg`)+^/n-g}=*479# ~Q7 rZN3vNNZ{m,#v$eH|T-0JcMm cFJG;`sua:gEfc*5;h-/1^vbxCn 3)nmkeaj aBI``EUd\_y^ p'`IN,Pm :)DPB p/lmB^""146LXo~%<;){68'fQoSs6AtM^Zv8 `Lekjo],K+Q?@ ]!GB.|I:EZIPSe`\At8_o !caO+q=\S{3FwxR4'+2n47,:CTY~Dk:! aZi[(A>Ibb>5Bc7`+a!u>p`Ad.m:ZJcL $V#I,N-j*}-y?6zbTF'PA0TJ$ F!_3YG\iloZ)o-5P,|-Fq`M/fH)TFwUU^Y=p$:;D6P-:?C[le_ih^34zcP5Q4O.w A]j8oEy$/"$Srr Oj!EF"7% 1oa[  ;s~aJ;.2c ERn%UF#6kynpXHH@U>iVeQA* `[dv1m9J(`ZfRkiTQN!]#GB]Ni -%A rjZm->*)L"W z:-B|A~NMu3v{-t8z?NcT! *Q^mW$G|+`X#CB>W'Z0^'(-y,P_Z%#L[Mri-|GtAK)v^~u Wcn*)crz, 8 }D2Vv{3w#N'K0,A_Y0'zTN\qvNe(tCC"J{A.Hd4I'SA31{CW><(D*=eU:u1yNU67 "r*>Axk?mJFP^01Y,#.ZK#"' |koxeWWif*M1E`?: # $;dL(X?wfxTekxnFICo// ! &2*PzxBWzk j' y-5y2o:R? )C;2oN [~^u{xoF!"8iICUXN5]%Ff!-EAOr@+3S /MH}jF\c~L5o&A3^D2v&@2C*,fC6v/-Q+`gr/+ 8I >D NT mu  | {   @ K D K r < S W O I 2  % j 7 ]      67 ->    1` Ap >i ;v : 8  D - A 1n M 7 # J x r O T a ?  7 j. :  8 a a ] z  K    ~  { f j    i    V O  h8   \ Q  l[  { g  !  G & V h "   P 7 b >j ;o /j :  0       2' ?  A i     W  G \  O 5 H  ' jmhvIzH^* % W^Yp\8)NL?&J[] L2{eBck VOYCY^_>vsnaW I}fs]R?"(O8b|edO+ te4X<:D_6Z.S$7.- H "F-GJ 2n],pfr=0* kF2YQ :l$qW-U:DE Pe4iU@<98J)Yhjy}OWMYM~xi9W .:2j*a$2'}uft=]o.B60kafb7'ZmSqx dw~sDMbfv5A D-}pAot5wGvKX-QC8HR5w fpNc%Y8;)eRdhPm Tf y r]UYF4.2*Z S?2l#eESBpu{s9`C}2k 1D{!){>#=cay0s-D%i  PsJ*ty{e.xT\Q;2VzP}.E5GH rK &HqSa} t  B=  | -  8 "  ^K     2 = j  2 M R  p  > % v [ F     \   l L Oj **  > 2 b V [{ `G ./ A A B E J f +d -L Z $w T} br :n ' Vw 9 M = ~ {C : q  [ u {    z o p \  ,   U\ S W  2$     . x ^o q | j 7t L P O qt>L6:k@ ^/K8eWboFn7vaTpYknKe?{ag8q:u7UDtZGnO/t^T3 C_B{P,ir:A&'Ku\E~<\^I/c9) x5oYadcv0StB z4R- |gA0F1OV?T*1)Zs=M|#}\ {ba&.P$pjr c"H(+26R1gKiy\I{Ez^rWbL0;^9Y@DJa61GEY.`C-8?N 9z!A&vM_mH4i0C_P#DGX'4UbWi(Q1Oe~/Tn5I DP`C]/0W(G@q(y;' Ptbyb9:oOQ|p . M^ 8M  Q l 7 v * j   $ < LE UW x   *    r | Z Y  # ' " &   + 1 ! 4  !    ` ~   ] P = a K Y Z . Y H \ u   " ~ f + v ^U  d 3= ., >\ 'N  Hu 3      gi B (&- idyy**%a.~ `.vncID6%|0fB#a0jw4'G 9YIk']|rqxs^l.AF\H38S\/ uiOo)pL8 xr[]~Y)A+)O\Sn,%'J$[PPJ$v&( sednvomqF5iqx1zIA(8<}nRduxTKv08 *vtEby9qAz:~ M C)'7>;y\9 ipF`$WB15- %:GH(vwbB dmbWxlS(r4qsLIH/jQ]sz{`,]q{NnC`zC@l>o<0U?wws,o%(1ZR$-wv *!_f 4NcCiDXkX*M4FE1$E!gq\hbo=h13(7N)Pqf%(hU>gN ,>7x!-=fU$2F& v1>86bzsw=L<"0mWB!|sPzWif < [O3 '=/7H R\,r[W[M)v 11 w| {)x8%G(HDoj7o/1Qw"g&p#d~dG+$(!`zp<B 7<GiBgRffD_BMBR;`?z`_3| 5,'gSB2}iD$:ZWhm/.z\Q@:>1u4*MI.+DI`a5j!h.i16IcL .&t & {wj08S6Z4YJ~;14$zG#X3w+  j!vt>mwTswYegYc=RFOYcM+r(gWjP.'i4`7e(XDSYF$O"/+ZeqD :) ? 3[d`5\)NBNVK8^Ivx,wagkim| E]2[1G=H';73%-"xs/H/ -4:yMdlxfE/,1:OQ~-l X^aCKH8[ .59K8orEA_MWPY*e+=x"}]\yR s<`IWsP;hkmRMpabH]ci?~JWuii#* & ,X!xUXqpaq\:(c.pcLzmn|xxF!8VqG)[l)iK#\X6k{^Z)A],T'Q^KSD\)EHTIM C^rI-7S)e' 6.y[yb\/[,l Rf3h&hP<R 2 7 < QA MD J' ^O   y Z H_ >U 6P :N T]  e D` ;h \   4 +  JZ |[_94J=hKg=.dkePF/P s]tNw1T}[W*HSR 1sN12Ae>q%9)~l / QPx_gnY,g!C9u4 IGE~Qn'(~a&w(Ucxp\I/aSea$ , '*"& 51OoJg<0T/vf~n}p Zxrp&eEbX(rSH"&KhcRGY m!b,JHfXky5}q9J vpx_PfA|cs~ka,&!+  !416@3b~&#>9lUZhmZ>_$A lN:g"iMAh+!Ob3_$UIa(hfajageZU6.;C/)P*b4?E j s  zGQ$ vlq~o@ .63!+Fj_rJxVz0Fudel Euaf!<V7zzvKJH1ylQ&!4p-hD. 1+ a@ ,#w/,/[#Ny#.'GS>,Etl'JY"edXX-SHGByEH}?APQ$/&/w3]ZNDJ>bNqvu~?d\dzzpn@ GTJ)Q50O<lcq@/gFomVUC3AC)7oa?Jje6G3Fd~fKSV*>HSD?:&~pkcSMe2oHR*EtZz\tc? = A>=~]| #BK1cV6qMh4 0cnO,~wc%,#@)a(K 7HB qn-: mI   S 0 D u#} Ni <+F$<H  i} ~+"@ F,@,$P fU,G!U!*i0%0Ac'#:   { $c%,i7JO|EsmHl8Ik^KsDmX6@W-G":[4BR'M rjNJLٌс ])8.IN5m.Qyj߆ 4-zFޔςrȶЏD̈.ͩʮkƃ쩨$"Цܮ74Ӈ) ήf!MLS]Ω#@19܋=nk~*%?~zݲϱQtXۙ?Ƹ!m <`4lf`!Y!Ot%[ (g)`)Z+ -"L0# 2#"32$"4Q%62&)7&8& 9<':();(;-)<)=+*?*?"**?)>+A-FY0 K3P*9X.@bVGmJufHt?ok=5[/`O2Q9'[c;z`Z5oV._F2F;V>] >k` ε^uB2@1dUM؍UK ixOۢi۹.{<m2lPF٬{ܛ9'0o1)Kڏy؟C.H׌e,w}բYgnDֽz48;׾Q׭I{^ 8DLZ{ݑaܠy=C^?`OoE &Xo\L4ݘޢ3•r ΃(&k4T?T3Ͻ<дGX*Nliv*eTWiV G K 5+ Q{G |!#%O')y!N,".#i/L$0;%<2M&3#'4'5'V6p(7)92*Q:*.;*;*+<*+S>+Y>+v>,>,?,5@},l@,=@l+?*-?*?q*(?)>l)=?)=N)=K)= )=([=(z=(=(1>)?)@+B,E.mIb10NP4tSs7X9t\8w\4V0P0M]1Qs1T/T+L$@^!7"N7$;"8"7&<'@$x=p!8i4+f&G(O)#N I , 26[`~m<~$to YeӪk D&J`Q|ҹwԛS[5Ǒh'mRP8wqAUdgP0-5P-t4K[A# X4hKpO|߶pOl uY.(?&.K3ݲܑp5pI|۝^'7xڧuיof7r܉Wڑִ n/ϿkϽѠ<ܽz܁V d!lژkBC_`VUsNFu݀cX1;K@u0r W r C h n-7)D!8#%<)t+,~. ^0!1A"2/#_4?$6%7e%7%|8&9'B;(G<(<(D=g)>*C?*'@!+@c+As+A[+A+A*FA{*:AO*(A)@)D@r*@+wC-mF/HI/dIs.H-]Ge-G,E=)BK&\=#8Z"C5"94#7#8!.6Y0U*&'')X( &Sq'v'"rphDz =\   g: {\ A t | a [s H y*w ~ M eM  _H 0 , O  IG:R!,n1tc6,uYDh*!9"Pp$/'3(!%P"(=[2!eyeR p7 W LbWFX|xw@r%Xl!J BCDަLqndx(vM0 e:1;`gGg$϶1&Vܶ͟p!z4*˘ۓ˲8'ˍGQɃܐۈٯHـٓnlՐĞWφo3N:ʊٳPS{ʸS)Ңѫ ܵس:[]|ޑȍ3tj^vwLx-(& h c?H26 2g!l[@!~#"$(%)N' )}.s /!G1w$5m'><'>W#U9-u.&)"$4':'_;)t=*@,hD-F,OG&U@ 4#-C5-%/!'2#46$7&:'=~'>$;k! 63,1`,($$(j*MX***4*+*F)(Bk'Q%# #6#z"w"_"V"c#!D*qX8oh:!AW#! v = CMz $^, l,14,$#) u_N? !S+o' :&)@v#B9-3f(!$*9=9 VC@@B J 6^ZM.3ߖYh  GCapئ߻/Ftm uZHj[]&In/ 5gaO9"ԉmѸB`w؛' ;Egհ@¹Ϭ֤K)ČJЏ Fޫܵ׻Տ<´jBaёiZ%sF}xhOi?BrX!5V'F& n?]k (1pM#/t0c)6c!WcMh gIx:H(Q i-!461F%4jLEr6 _L[E   l   ?  S @ ~ Z TR+#2()G%&qA % 1%FaN]*]T)r܀\ln 8 j# / utlWջdʥ`Ligcc>T0QRc`cαm´Bu _]L ?JKT(T߳n} ZA  Wy9cw 0 ~ > 6 .1:K @-K/gI`KLNqb7n4>D3heS|PclKT q{_h^ o"   J 8 CPH%N+>*&q+%7yFN)}#S#BK33j I_q- Ea(#b2)<)$=&9l#61,L*)&u$D$M`)%E6)kB$qB13  \ f&w00C6OE:R?6KN(5CZ+1 9 Z*;H%>7(r*2,L,2P/  j  ) !.`H+*=)u" e  +&<+&-$*(*%c2/uzP k6 * Z <l  5   !u zK@#fj '~M%\* G Q1`^$q1D*I) !W0G XL i?tޚSu # Z ]DJg Xy+wq# 1 MY!=,j@ G, D   _y ( s.:W) K  e ! N )/ +7 f #&# ,b] }! "C7&u!3@#=n7b * Tc| >(" =ZJ$s&YU"'&-<3+m,   }Dc?,S_!^%% )2+l' iP?o'k (" {EP!dO w21im6bra!PxQ7/L:ɭ)ƚbg xRaVdTޭ>4< a}LcNNE9Y\oGJGS  Z T!'L 1 _ 2 \)%s#`A [ F Pk ` q &-)BH,tLI%H4&2\ 6J^ A  DWr_ZM<] ,wx]c _ RWveێ fߤDMfٙ&Б>:=ވZ[_t[fkX ςR5"BOH_X\a ^o=ߪ5,v   ) Y"P+ DuAlf6w74/.6rXcKe^3Da&FNd5q"(\;R$  ,C 0(4 g6m ; T  hI 7gw)$ {  gMfla[ ( 6 Z . j ) <dQL f 44r # #}uo M   uBA 9IxXVgwvH? s c j  [ `  F ~*(#A>C5`S<&d c$7 {xUxT3Y]"(b#(=/) @E* Qis; " qL" BZQ1 ! U ^  Y2A vI, p_v  \[K5 HH*_1Z <X5D0rUQ(:#{? ]vp$g#YXPcrV^Q1# >H t  E2~,_md-@x{ M={H*q xiP  ^| dt  N %m D K55$ ! 9b_6F,y4pV9AuOm%1A(/{1QqeT^2PC!\peI^!V|\[z> 9:0P<{z@7,2}U- j]LQ EX(  p  ?  '- qIC6 Dx_+'Zzu= $ 4 + .KpWF  _$V#t\ES C ? N  h)zO) e 9    ;8l+wQ R [ P "  cy i(#2r 03 9{-FW   c1 qs 3  O S WW O; E> "#vFWJ J bj5u+5{t  |&T D]GoOYu c //%,]L>7 ktA=o!]k_CyWb!zY Vw.H;?+ 7 8NZGٺIZa##ޭٚYKl.rQX ,Z`\*D_ߥ+cޛ^Q)U.VI->K/(|o%_0s`/ 0rlwJa .$Q!  3{T6c `'!c  =|2`qgM2H *   , S mPh_BHT{ i/6 K | SD EH( g.9   S ` I  V}( q9P$ ? z{L5h  C#d%p *F*)^ T6 X($ e b \R}| K  h3rD Gm?/jq } Ah^Oif`K=^/k^'p6kVl 4%h*7Q:jcyN,Q91kkU@L!^rCRe)f>n~l-|+}lo7J! m`ww)!*ِ!p HRzg )=VZLK5v_zc k9Gw >3MD n W@ glFb)A.   U,%S K+-" ^ -  Q mj > UQM8BI"  SE zVhS  ! ,xdkv# 1O 'Z>W@d Z' GK>C O Z|w n zFM:  - P: Di?N+ k ->:7% h67KI   &bum w *}@1ad lUC`=OmjKi/ 6 r>A*]z+ .HzO24_ 7 SxJv"# >14yAg`pLw vR3#&LX/FV |P^J۱ 1k+\ݧ&~wv@avCyF'#u@ n O M~E,42 R1yj$ |  ~  (j) f?o LLh z i J* ; \| | ]I F  e j ,b=!# 8 X Q  D{) 4v 6+< .+ ?  Z J:| ~  vj <~9x| i !   a' v"8 ? | < % n<J2 ^C?ZO?p +AHG <^`0xWy <go  w]uE%9Y'~IOOrJ{X5OEb ~ ##hz(~hG=F~[K{ [7*\")WZ۞ x=2ZRx6){ +B~ּqkwXIN$q>%*<KR u'WHW\R7H rI q Pxv < z i f$ 20m9 ee  u  _' rCcc~f     7 %8 vN s ?I ^8)=H  C" T x k [   e l3  *(l A Z   M*9b_ SH8x= Z  SQ/2 TS/j<V % Nomsi}g VI,=aߨr@ZcXv+)%B |lB.SBaD QYIbjOPe    - R O!Ri [n    \ fF ^ k UMq q 9[C o B xa |P } EQQ,$P(b0n5?P74eL/spg7=o gܖf C.:1P^9LA S\ھt0]Kx 6O:RRoes.Hn SIut~\O_!$V*b:TMq H29SZ \ES g ` #kj"[3Xy0z ( ?Lt  &* (}N 9:]X -"3 ' 5  U<|zw0A%:c  8`vD ` 1 Dc: *T^ '5V~ o:7= D-E s  n 36 , @   H3]  iA 0v< ;D .B2q hQ  >= !.&P9O6 xm%q l!n6 U< O T"jm$N#[V/Ly8]f* Q)TH$ xf#R38&|OC] RWaY<[$l|EbTEp}$}?E*/&L-=}.~D'X|j1D V8Om*C*|: )/e{ 2w'0RF68 Cu5Y!=q|?Z^F ~ r V` $Iv  e%  lsd 9 !    +   +JY&\ c -  D n K ) $  5  m  1]s9+ d i   ':  xk 4. ? my z{[ f 5q `|%<N d \} F `b i J;npn)]N8 JpY#@x K  ( ~a  =i3*{ ߼j\=Ex]w/&a"S/(iqPweeC'rHNEY@%032f1M/l *=C~9TYDb{FFtG0ucBnzf?a  e 8 &  T` v0r 6  t W X  g  ob _ tst+%   }A}B[ 3 fS } n @3xl(j e   |c q>W> n , E  ? bLo k/ FN{b`0gIv3vulv#:@WffZ?sl P1=lb @ pm \"qS^b  Wg:C3v   ]I9f>{x\Ch2R%!gBhMwYL~IU*|GV>-gJ=1m,v x> 1" ,YxzMH8!pG= _]1("t=7@k P)A[ic$qe=RS? tQ'0YLtK,?RF ) BY="7H2q|+bdl}%G`deQk$9l8jBC,r,8`xGQ9.1lr(A(U%,+"QgC|Lyxfz@<2ugS)nEz$%mvm]XF)wrvOY?yw~?8GB  CD  u`  M. * &FF @O3p2/F0 j   U N|  u "%6v6#A,Yo=%wV-%t1 + A~J SU@tBH^  < {*bIRM xB [IC%{.>z\NQ*36R/XMLH(8|*O0GxM8}C 3!s\=/&- odv Eu#`V C wHmL]|E8+{HK|qE5m5r/^& BU?u9 nmIxYs}/1!.t xY!uj^s`hx;RJkk L_  u f d q  XRt=m9, TVT!s)Nc6j&l  %X t CqGz:D m T\ @JX *  O B ~  6+?  JR   Rx [Yt^) hu-JwvY~Ym3tu}p}Rg  YG_&g<HbSW S;<Q|VElayr_s #N"W\Ye!5F2olnz -rU+Nc6Q~[.>OE,\*&[`^e6j: JYg'%'%m-E' f F$>" 7^J qn@Fd{@j> +7M>xldQM~ga(",F&Pg"MTzS+D0-/oYSk/?(E pNpk,n{>*_6cZ=h/l5m*BR =]PF-.;asf'|l  ' #<x!(AZO=z|y[/9sU+[ 3 a   B 3  5Q S [+N^8:^v@j:b!t.bb6  0 (/W. ]Y  6]>+`&gx'y]io 7V0Fkn  q.na,Gz;CUxkGQHNN  U} 9h'ZF V+v*B;/79)4QV%3.K")y";$/)jeTGTu=ViD21-svFKS`usKKC^zW{B86'7x{jVHCCq/LZcJ@@x~ [INv fhQCma#LZl]E(I~c$ O \   r/e F : 7 \ . h A \ Ya ] G t t   Y  L  < ' H 7 / s      n U ?G P kF d  <V (Y  ( B e  3 (/   R *  | * [gbDL8 b . &TydjvpRJ*Pf?:/7Va{D)]VyM]#wFeZ^q i<+ejL@&vDOIQ@MWgknG$^=0J5;d(nXj"PV,em` ;mo%Dr DT\)A VjzR-$ -/Jcn@'bh P%H/^O691b1u!V]x!x^a c*|AaE ( x7 | }G~3"%X  R 7  c+ <  Y%q } +  M q F 2 uKu~XY j ?   ` \ ]   q  \  / A   3 6 G/  q $` - T   *~QV$H3h_vc z%=%t T/>M)+I -i.QDsb?@}/I^$m Wjclw_"BM,SL$S=hS8*#Q'wur G&% :X?O97ql@Z\n,MD= *r*3WpLQ GW| E4G, E_r8]|%-((#22(<>E+]w$bk%~*Txb:$?eo,H3"xFcW?.kgD+bS\8I TT|xf<><)|ltfz`\~B};oz&Q"(-W;,mASdGK2Y Xg#GneA`YxA'g=2V hCoPo|>]2G9$Gy2Mo;:Hv*h,.s&@y9#w}<t"\Q`Uz  `[yK~wJRQ=iwrU }4D;'9sN}OO`QYg6vd{;x<i @sWH#~t7#*I=Z<dRxU+A]H?R U R .C qX /oi P %   j( v o@ A ` m l (5   1 ]   > S\   ~ T  h    L X ' 5 e  h^> 1  !0  - &  Xb { # }MGO<>EUn0&A0N?  0tFg;|*3!#rlg=j;6V'H_j.Mz8) @Q'aatEv[U`Lq %m(w kn^ YF;sLQ!, cK9UX_UDZ|A}v>>5tG6<IU?L!'~xxg'B8KZD"hdhL6j\E z]1tc$;9j r,\NsIL+38  %   mE$/~X  ^ nH 2 )+ l  mSru 2.tL~UMh`9fb'MC,8=HgbYv>.nHn  P  ZZQhN6E"`un[Z) zATmy7A_L?o&xaEs'*O@&4UGpeyX-!WgkK";m9FS#Ot4acw&S DpR=2PI~:x@;{>%u@:)1wTu0]8k?id\+2qx/II.f&[PA9^$C$ks>l.l[L* -   YzA;\&  } # >    H.  TnUkU*H[fQ !h {EPr   D"OfG1Xb kNqtOt.ElUAg 5VBDd3! M9zZ$}=7    BO-fWxkN}S<5!D+crs: @? R`*gvOz.San)R0K MfGT*ZLEX qUn q\ GjXjY60j=Cjm;|T{ _LKBA AT){oA&*=Eff32~dK9JSgn?I|T; L~y0b?V/ma7O]U83Ax9{*H=i24({S:c#3 ,}1_O   > ` OuAk+i .RhI]F[%X}soydJA }QO_0gFNRI`u2e=6T}4nl&]t9hZibJxP?=pn]xH;,6LN? b\MxEG'eF(Y|XPE+ S<EBI~ZrR#.:wU &be0L4^OmqEd|#AdTsg_ZYY;wS;.Nf]MitMeY*1(Cm*D9_;^r_)sLaV_I3m*IHK!#SE(X|UmcHoq3^='Y%\$I&{])qff )  (X|L'(32 * */9r !r80a\,H}!&"}tr  G0_qQKCvNb M;KC^ _;rY~iCP R _"  &_bEW|JCwK_ITMV/G1w>OQN&#d9.h~fp9n2,I] O8VSS_;KM~1kSo3Xg%j41`?B>_bQ!1#4<ty r`;$"@Q:q6|S7tU~ ~/JuW 0 s'n, ^  9<&nq2(4wkm&= GqzIL^]T/Z6d=K^ ^\)kw~ ^cDB1HXM#`IV.msaj|_+WCRm_CfX.?iC;^hj@QX|wp8(5nF`3 E.j-]>e R:6~W!gX<@s4 mfnaPE$(Yh0H}M))C/}< ^51tC$NC'wP |)#7i e?INIb>J9Gk^M?|.x Hp8eEFrk7aZmI! mn T$) k\) o`%~(6}@BWIb U3N HIL$uJj86cWVCn[D+ Bb"diTP[ S?;:S %/iyzC(q udi@ >u$%|=^@#dum>XCz=Md_7/hATP^ yRbp! j$}rO@<,@JP4<FL41NW|bA1)]-5C+nPfCS|"SI5%'_yEI h 1L* {       w1 nD $= bo 66{ L s5 2 x zz| F &*BL}TVt$8vy)65>~gJ|=K7S6kU?3)HyA`~NhMBa:*_ [aL=]6n1}ISYFpC4+#tr~G>?z\?#dp}B~v rWA3Tb`'~|GQ"_V&jn%6h7)}c $Se_NF6V/dhWdL?rO>5-T% |0gIbB@w(L;/Eq7a $xoj8avh45Al G`_`tu[:E9]%Xg`h`-)h1pk~9Dj ]~|Q"|s_#U J ( RU10Z@6L G,|d f`*hCC_Luxl&jCJ`wy^n?b#A{ ^hk1g=+_v  ab7zq?iQa i;u0 U=,7+!2kJ)z0m|n?Nn19IE:&uQh^N[Zeyg4c{31~5qEwSVu`O8zW R91#T-5ILyy {p5&t"t9\cNRSBL?/B/)T# Cd9J>]=!- K ^ V{^ Y_ 3   c! = a7  #   ^ ` 0 Z \  Y ka T   k  y RD ~  ~     d i4 8   ? ^   y N  gX  4 av h? C x YF 8   `  ; ;  ` v' 1 d f j   E k b T :  D  |j T S J*  Z ==mkmE! c&=+)4#_&0Kd=2hagk+j0IjX:y.Wum)Zo)$U!.$W?}"sx[%%jVPPu/X&}*VU RO-J F}c(VwYEN_ zWQ fk2FR>{[E0c{+(1@YA:.|Tz5`:B|"E7~ Uuj`*ew'hWSfMhpwPU+  N =br H d  s  s - T vj x {  V E 8 v J I ] $     1      I  B i    8 ,x 3 Q x D  X j Y? (04=R@9FTsUaXwBXHIc'zpAb*DKRioeeodW#n~zqtb*W U"c?=M p\L =^(~wiuL]BIaV%bSwYwm -5lQuYdhmb-DT9{k Qr#w$y,dai TNj7?h=i$YeYs>jNY=rBK) CT?axZ 2-L|-[Bck1}?_tv@Mtt*>N3S  %5KXep ?Aq$41 dOB{^}x7izLm1\Qz~x40z#G!wg 3qH:M%SCIpv#>dS$jH7_x/]`{c['=B#zpO/-QYqiO( uCf'j(p!0&K'(b7KMk=p6t]%;__=zLvh [S\P6c?Y!Lm(u8H9R$*X-"^ _ _`)x1R[jKo(`("8a1kw06!&.PFKF|prKl;{*8P*"O rYd7[J Gxl~^yx FBZo~W0FT>U.Y/^7f8A_5ZAc=r>UeCQg]dQZ< RiI`;3}uiPJ$u*e'!=O_)"k3U|7w[m#v{DF(Ee^gelA&q#  89! (-X6\L>bi $  x%y= ~~g<`ZViIa!-A 4a7e]KL!C<]Htrcv~C.><u?1&NZS {76=oP*$!,O w@R3SyNScRn)".q [LQ?>,;a"c6Sh`l\MA3Q`?l`\a"XUM{=0}iaw+MT3 e/Gi*G@0yIsU:x}*jw_=h1'kN">?{2/rNzzq0j0rK)5m)omOu5#&_1D8oI hw#M:mDC{u5y1L9M@`P\zAM[~boU $A/aeAjXBim  |}fYLL)PdV]7nD[!'f p |Uh9&lg8LM!+8gBo.Y|>]R7sj:NU45O?Pr>mcC; JJ4 38&:dn&7o2{)*-VLI[,@u;)g6}b_LNcXv$ Q \D 52`#JdxS]Uibkm%a3-?> %74w$1W,C0"  MVNnYutx_y3q }zq61z_!yh!IXU0^lu<-bJT uLd2r>P]3gCiZ.RPw=S)xey+Tn,%|5^[:Gk4I_LCk:x^, 9/`w%Clm:)2M#YzxTi EW>k7i^vEwKJ(A<>b8Yu$>  Ec=TJg_p~x.0,fchWI+fd T _?(=IIU{#U 8Hy g$muE'D$xi.Y~J> rNI}+SzpBk! w G`=   Z    ` Hr2zd (  c 37k.9 VCIFEJm@lvcU%|28|AxuEJ?>>L&>y]p (D`DZP<^ut !}0dY3 P:4RYW3Y$wFv8baV=RiF.e ,WiT*C7>]haneyOl,O1! p2&PBewbZ?7<5<+ * '-3"+' =?xu9oixW#;3fCwg'~ E9f|Z 2_YFuH<8$+s|vm2+J2A X% r     Xh &= H n- b    qQ `F Z? X. R A;zT1/hHG TG&a)M6XCjN(QAuDop~B9P$L%&^twZyz;0o!XP$ChDO((}q~mQYHbPV~CVbclm/^rt.x=Kg.IvK.(DrP(`Z.`*G_3QK$e4RAE ZL'i{O@QJAQ=d$H64@ }59iPQ}OVFI^r\sopsq( 6 2 Jn  r z  |OrD6rKzXdox2  z'+2AD0/qb6b M-Z<z0b THh2cwWqE=Pp_){r6%J5?92!mO"~cHn WnWP( Yb 1uh{unlUm6Z +zJz]~ayqlle__`[?n1NpjPDr=W)c;s)1*%?,J7x^`eIKTJzo T8AS Z 9= G(n.5?EENc'.z%nx9ZrLYq_}KjM" E4S^[_yV mV^Bb;Z1[i8hEf4o4txymzkkz|rqchLsHsgR}C_vWS_wdv|ZYhG]'+6$I25;LfJ%^=;z;U!4(enD/jOg.NrW6Hk8S]Z7n9Ja}Q2)8F- YN dm|hBGzmziCiB31 zs`eK>>,  ]a[0 wuVQjt>s#822uC!"TB1b& J IU5JP:hTYEm9NB @9XxEW8:)" *WDz E;[tY;q82C+?J#A8[?Or\MV/O0f:| I0g=T)3 -_QA~"jPK$P~D(/Q;nlqe},N$-1o3NTzFas?U9%(MxDer]=C`]=v~%4OwQmlBXU1jXt c^['PC !Sb   oUuT?BUd BWvp BO 7P 'V+l$k X0 p+//38r9H,H$/ɼ˲ K 3g \Z . kL"\qWU d'-oY/n!D' c n  i5s{ c *  d#"R  Y. l .su  '} `  G YQڋ 68a; $}f VM "  P5L0rXY3$ . gI61MI"T R %9G?/uU @ T S J wu~ 2X&*vR@o[OUKvh; 5F7vM ve /+q+73pl v*5x6;r;0|Oߦ,-*+% 8CxM mf}@ n4<:I \2nwk:p!! w#Wu]Y4 .g^ tn O$p|7QL  & E 6X%o%`Z )asWE]<LcM(~(7eew    UO2 5 g #/@0T _\ MxYA%P#F  DB@T x9 S' @2 x U\h $_4Q , 1 y. p&Sql<(l\)qN,q6<ly.?(?}Fy#]Xe/hחgߊd Ng Oc)4'~P\%xB!:# #/1@%NT pWu,yb8 \~RxnVv  1iIOXxND mI gbUN/ 0 ](  *]    {:fH  xi<  i v 8FE t&\ [ `{?wq#   (vu.5 t1Q\u"0M tCXH7O (R8<+ (8?J@w^f O_-~ TI 5*R&n6g `|% . q <}A+3`s 7Kto O, MR jlgL X W=2(oxMd %`b Qn :^  <v 8 -W k FWKDpe^{ G  n s0w% :v"~uSK  Pl&CW|_\%8Xf&$%  |y+ t su -x [E=.S {SCRe? |Oeq Fd#}wa:/)7/S#kKDQAaڟ2:_`mm*!E{"F LcpzհΗuXNh=1JEgP`, ohxN A Gr.TksJ S-7L.i#i t * ;gv   p*'#f+'pWBM s"p#3@V5w :z\> Q 8 L#+#J % O)[!\  H \XY`s* Q> f)0$ DU#  . IV I e  Q &i 8u`g%wu&K^ cSIR7c %!_r6 PX v$1k|;} Y4+ izxm$/ K6spp3z  R pq A%Puo X s֏dN: Z4q?4z ;w'TPn}/K_MEhr +UA u jw6> :ve$ 0 `H KU`T>bdHa[9  #f u{;: ,w  9h N }A D%*H"P߻Y(e[2  ;|;  W gvGNR|@7%[ ^Et _ 5!_j)u#.FP'nFk{GM sE-2 ~/ " ZZjr!x)gGG: M N=MvM  F &\ZT: Dd#/hQSL xe }  huUt+_ i 47Y AM p(? ` 7q$ [ Np 4 bVXX$ i bjDAZ".&$ z!B# /! xwuvFEiP'5Hklr { F3vc&Pw.8_ a6~/>) ,H_{| (*9 - j)CY eSN0 a2 2h sXqDX)c@D 7 M}('y!&&& n%lOGaq! e- =-- lS^ Th?s`j +"tX3M - b= i`Mye7 F : } }v^r;yMv&&ibE4]UUj E*Z5l% 7?"/# m1_  uB# i(  Oh# 2w ,(U.b aC]O1I23Rw"0F );1 & $ Ph@- ca2n Fr6,-`z Z"tBwFCZh! P ! )lLWiM=@ c3h,Sy6w23 R8IO1< A VFlY2 >Fsp D?SS w [pYHpQ RadM )Z+ 9s-6g1 u=U0Yy w'("|e_a]ZC ;BD--s C6hK K+ 8{X&  Y  +@U 8(3 , |!o~ !(& (4U)a>Dq:M')V! %M D  d + J   }X( | vB$P :W~L   *R t p`q0kk C 4 #EC  3Q G+ < OO6Lpg %^   s ` > 6 )*%ETg#.3! SS74TWK"rG'mDM@G8 Q+< `== 0  Ry & 3hf&ch ' )~`c?nhM S 'Q&66m0N  b Z+uU"@ <  %Eq o9 v : u9u X$  HJ;PF1V d R  {_oI.QD 8Bc?(S1a e   L ;9vLql{ %j/ fF0>!!&H xZ  <Y.\ gzR BB'6# e1u C vQCF< #!T6Er#!$" h yE7 ?]5)H,*G (cg9+F v/x78 < KxFn&t yt h4Z I cAN 7a7${gc .= v z '`ehJU"9tMBne*936Y7g{UZ=#Y  T.S, %E6r"q^ yRX$q$9  ) 2K)KnRt (>_R[+ :c 8DC?pRV5W c: 9>F `|L6 U a i4c qc31 > 3ffU1 ci5jC9E2fF KGG :lG M # S^N  /& } S~FgI|'F"  ,PN Yw> q   )H'LhQF%uiA] )E 0d]* G*9X I$5'6v@0r  IdM/%xp `'5]-q5O B_,u yu 8,g\:|83/{~ d#'<`iQi$$7 v9l`}  )r`@?o^ %' NHPpKl T .$!k yq2 ~ z, K R+jmxM,E cXx  G6R*B G C5 q % &}? O DP_4i$0 ( + ? _ Da FQJ j gK <4%4 h # ' Ndp S  Sbf 5q/n3 Z Lb D xoCFre!K  t"3b # Jfs V>b#4 bB 9 [2W!Uk3IDw1#fS ueH[%euUh[LQ X'c  MzTd! ' _  gDK853; VWޓrI ~3 %),;vw0 P L @.YQPZwX)  ` "j+F FIM r e @6f5L8IH+ Agu7;C % G!6J 3 6, k  u N0  *AY i2s 7W=/C@@+q %@% 0o }'GFJ!% +%wj 0 %|  y'm1n}T~ !N r1 cqi\  [aW0&|  W2 `O7R  e  [ |Jr[  4 ,` r\q d ^Qz]/mWar ] Dl U1@?P F "/=[B<EgA Rpܯ9ox/ i jHXcT:> jmQ4 k9{Nu<1nj m 0f (s[NU d NZ O UqwW=!/+' ^SZrf2^ J=Owmhj')wWNY{9= s( g TAx=9  8Vfd[o E WB/?HJL Y 6>.2F3  *%p`F_'GA# - -i b W:8FM[ Q Zt+R, ( k (  %- Q[zm [ a o x X [2k wgy K"` { aIcJ #&3R  yYG "w? =#7Hq A4P5%] w L&8:%bl9 !qJ1cs\tujW_:2\J?, U=DUle^fVVtH:(}O+-f.J* T  8p<~M0U_*SF EG>|h<fDf {0 1 f* u  0k:dl#@ 5B1[/S @eph=}N @l% E ( NlD*QP!b}o h9ۭI 6$<3&q F!+F<9 J o t %# Z<gf7 Du y$( 1c  EOa{L AX&FrX! O  8e }zX Fa c> uMoy9 O # L .YSuXTzX4RXk;w&  vo9S#;(v1Tdv&_ 63N~9\ wrv$6NYUOy 4 6ail"= PR- maR  KPAb# K 4]>wD|"RE 6G:[Amil bU~x?!>" Vg<Z{WI<Ub ~bDaV5 4Bvd)AE{HK R^\2nzT G4 C vmS\KX/- 8 KICu 5  B  jrH# ?) ]u$ Uv  q*  {  W68vt}j  $x "k# v >p AMbY/  Q 8 b:' ?  7l#o4 NBp["! Fqsz- Al"Qr}#O,HLW HzQ7 /.>  W a:~0UU, yLK cOW"`Pm} 5t}44 1 VUmLZr$GqtKlOjK 1) w E QwG /jlj D  q5&o+a ]m +  !nDO6Qj 5$ZCS. _GN D 4 kl q  XFzHQ Oh{Dy G p$ 4icYRRIg  R[ *Tjmv9Ne&w=N3 4) 03 (0Me )A%'yceMc1B{k9]C+{vp$5CHvo.Wm Iv&0~e"[s/)]2k3t.A*lhJ,6hw:m9s;GSC"x7%/n<*O=QmrYah8b Oj3: ,L!p)/M{O5sAG '& ^   1  Gp963QF"Ue %>K2H C[ 8?b!=*fQEWx[ UF^u#t/c3WOoI5NrX,6 h +~0Qe4r(.fL!sJUnV15u/2;Rgx@7n0kIl'IYy?;l*;1^`(a|ifX +S!4bYB]D " x +weU* 3 `sP{RRg{$9wg E#LLA~ F{?~ ino89WM{MM.D / < v Det.YO k!7[M}F~1Ick$ 8s< ~  <dC( t NmMd+( t'  8 Ibhxiq%uB8Ia~ n/\h+Ez/7mMe#jPb 8T+-\*y%#UMXO EtXxYyLU;Ss*<XK   *+J^Q$G V/ <SRN)nP|JYYrC;^ !UMSBTEHOi>h, oCi0IXl[#j!Z 2^D=F>e-rT03*1:zpkci"u|O keJE (]qn&. - nnH $8]B>O y a)\# |vxUcD/ Zi 6 319Y vAz 6nSC TCsA*{Q8 K I P/e5|6,)M}1EBEaV+{}H, p`LR r.CkZ>r{A1)   ;xB`=a?!<z Y &vM6v"=FK`dAnM|T c>"uN)q/XVD/yN<3)lC^6DiaxkW6CRzp(h:{:Y/#,FQ_\,wAdf1>2IdH[Igg)9"H i=5>EgA ' $ ]KaNn;|.y  5 ~,K fxa.on Y 9*WLb hU "%2=.~f h?r(^?pl g D **<<K(N*n1 tp ^?fz ta[s+ | f$l _H/a {qvUzTY($ > AdN ow *XnLO#A 7.S( .2 4(Ph_s@ z s Q & s JWh 8  u1{+  aT%fd W7ur% JJBG5HVX )c%a" ] nGE`-6~LxHt9,rUFHo>ci&o 1w(G #Mi,%M.DN8K8`-D}vA*>hvQB (X0 '5=8Kbe4! O Ds&+*l#cWFPq^ X>*t> +gT s# .IhS rIt agCx=4 F+f-NA929{U 5K.=98KA?^b7R ;#>{yc G zg2Q> mRZ$: * G^L#]kszbTXt 4V%R 6@dEX+#$vmx4 KP{: b+cVdir3z2uH[ow+lpb ?wO_dS'mA4KMO{1PUlW +8\E|HAs?PThSSQ^0=(W!_v@Q.tia!HR?tj8 ')82PbhN'yF,N:3q2GVtdVlJQ19|"q [@A`&8mL0?tw%RbIVPk=L&p: q#8`yF^D?hyM {iFLM1c  I7DmUTW^}O @>}{f7(9vSF8'd6aWE 0O  G F+> KbT*-JF3wN9U I u:8E`/z6:\6B:<% {Nm#Jbf=BRCkDGhx5[4Oy] , g1Xray`?2zUw`l&KQ p?{l 5 7#97\\'up&o {#jwkan3c6p&/L1PQmNJ z\:) R`:'{Yc NdodmDZ1'p"XHnNmW*&gu <}(R+LwCbh ~jY@y'k d9<X~SZpp*9\7Y*<=\5%&l}B(ulKMF V<$GsZ_Vc%/f0)%Rl@&U''y1KA7pFc wRot\%fPH "<!A]7e=KO8["Slf Vp}P`Ih1~;EWznFV.H ^Mc Jil:KIp r@Yhg_5_fxW&qf:* Y"~-r&ZD$Q5g rBB'^-=:_^]h(-Ke RMNWlg}| -jMsR7vz[?NV}~"j51MvC84yGFt0Q@0 GNK'bLFp Hr.8f0$zNHU#C&evy{XF_qZUtTFO:0'*Ps"|z}6`nj'5d^7@|JhnCHH2ve1 dUiS%r Z ?~F*Bq<mVM"oQ}UGk_~2}%]Z7>V_0e@1f';M29/W|,`,;laVPNj4;~z{%V)=0w(\e+,^'pkb$S,Ti|>%W E&x%NMnrrqg<Q#I2NT' qX 7C= aNJoaVY7Nr>XC"=ide q NGr4Hq;64CyU)Ax9%-0Jic$h,{7FxE+EdYz\b,oHb=v1a?C9HEW(N+[))?m  A'Ct@-ap9D50@{x{[J6b!f ?0d5: $$ii[(4.9W.4yc+HeE@UJ}VrxM7:\pe1f`LT_IzXD7<o{?|(S=zSdOdF?u~V0 p|"'/B<Kj*_Xz^cO&hIwdy(`PM{V|\=A??1C)icwN ;J?%%jLUWCyz7U-lY>k^)'f?LJKw+H30Ktrkb~F s6\vo;3i \:l@}}V 5p$!eh0a99&c+|G(\< `=kqjhegS ,Bn(?Qp@|Ak aG(KYHuq:]&nB\xvU?E ?:ge`ETh-{H =YJ)ghPC\m ,3H6P%0?)5TCr\UlFo\$aYOro$-2:2s^=lY<H9 &j<.=gorZ2.|wR -:a8-hG ]F%#&h5=GYa  `'_})|[OXl=fP@4tToNpT'B&n 8?~-frE^j4*7pi8Jp]u2mY E}lVhQNwb)OsCZnS8,{S m@n< wU@b]S35rir|U)/6"}5#RqEeH>G kZfvFUW4fZ"k RdBm!u^':ZSN]d$*z, pZb uoQ?Ulpuxu agC~ $"*>4p&e;GD/UlC2<+ywBk,u/&=m-|3m(FHCiS-FParRbvUo 9}.- p?c \A}^e>Vn@u&OnqGW"qa^S:z3 )/K]PW]'ns ]r!9gZoBBJKbP_vvins x5~e6c'l]iHd-Zt4,D VD6adE`lJ*Qy!sM`-~3R]r#]H~]N{(xO i altJ4 r/3*zz[|h_Bxjb :XL\uNo1d D P/+'[6d&4GnF4 pqtPltpnLkdpqy_UMJN`lwzaW]@FQagRo'M-'P@>P}b= {?S}ycQW@Q'onm~wHw=Gcj"A#k6fA#i.#$" {tjxy?:!&0:.(@W*uw (1kV)6{7,@cw) @~2h)$Gt3 '@>|2BrL\*uPO 1F  W   ^ h   ( M  E `     h_  .  + 7%  >    t g Cke|Qi''++I>X[ae$C !q_0[/u M       " l > S ]I _Qt8 SY)[ 8|i'zuGVP W2lWuSZo xJwT]J&??]ި`r=K٥^<,ԭI3ӭ#~߶dB:\̥۱۹ q܉VͿH-'g0ϔ(ΠQEk}cI ,i{К4wmq&,%V֥֎E6NRAX܎qݯ&ޕRlvFaW,SBkB>D3+^] 68c2bnh9Dj`r_O'?a dr&;f[/b f4Onc*p v6Sc^l(2B&7S`_J5OLA6g|p`XWHPX&9Fw?amr^W[U" Lnu:1eu\701L@m; e^MCB+Lb'N>& =&;%-:,$8#)7}#6D#a6"5!m4t 2&1/q-,H*X(&7% %K$"!.;N 6 w 'o-@ d XKdjHU' M2s]>z>Ho?9a/<$}gKIGߠzw O}acګzfU[zW Fٶ^[|mYZJ4֭Tpm$qmJCl֤sx"uy8։ 4ֵ* 7{-iي}R>>ٗ':Vg8ݢ#.K-h_!V_H|KqT{KNz |Xy,{VviDE:Th\H:'3A=y lKz.qO,C1{m%h4i>_8u5RG^[v*r yL+n1K%<\+.JN$Q; J  8 O - P v k]kI2 svFA:P5Z+bU.Dn9PIM+=^Gta|xFWem:Y% ]1*cvG@NZJkf#8K[5EV*q/q#eh#]N7ߥ+1W܈Rg۵EGk0ߚM#w(>RoޟYes.VH޽M5.FI 8vMPYWIqaC+VwM>adEX~M5fsnWnJxG4%:g) w/tZ  @BO,obK7IQELaItkuPk7k}2iU?aGED>  H`k=`5In'r EF : Rs 9Q*1 t }     & `    b I 2^  j  B 'Z       e Zg   Z    a I  *  1^ + [l w   " 3uK/^++Q6P I2b \.zj- )|htv:;2]qzx0f9.3u@E ORAz!4mdol 1)/kQNgYG!as6E!PhQb!s#B{i`x.UhA-Vf88U }s=mAu&<Lx?D Ey_E:~)n#jQ=%9Kd(bEQ#[>PyM@@Pt_qt$d{;+ mE-18brfd6OaC Z !!{ b !k"# # $%$)$$Pn$%%%'%Y"&&:'.',()?p)(mp(*4(''['1())))C)('d'e)(0)k)~*(+@+*53*)))))\>**P*I*i*#+z)+Z*j*o*P*))R*R */))Y)h(g(n((T'&Q&&&o'''6e'&aZ&%%6%p$####y"q"["y";###d""")!; Lb?^OhfVN053R) Q* ;y$-@ SK    ` 1 F  ' 0   '  = k   .   , r    D i>C35c$HtcU5+Syw1Sm]lf6pKM-2Ym\Rk(WQgUnB?_I]4Jd[|*Uh%2 \l/xBsw26n@,\%kEoi"Pj/k, lqE.-,t(>;Fx  X 0b*dJcJcoH?<Our!P2`JXsfzWKk_$ ,]=j-_|cnHMW{b|WL 1FMdsfu7  A]Ssi:=V9 v-M=-M\!Aw8C~iOPDQ"(!}VU}g:0]\~=( hR@w4xD?!VHgTo-kAzip;8 -(wwNjP5{M3z$B_h f]7JH{2*pz[oKl[x{QT_>w~S"I7Oj@#[5(kc"Q(K0 \B#;hbc9rIyCmm1mn6; *4~? .cG~$nj$PN"qP.m}a:vg=sfyH<Sg+  ws M Q w  C  G XC Ui X s    e   _ "        F- m  _  B  Q    j   > AK  s +D Vf l   6 y#tWqLPAI`uWP01Yh0\ ]BFK% G  ~xKb9i P ~ c B R3n%q S $ A ` B J  N S  . ~ ) \\ 5    |T  s  n     ] @| U %c N   & n  E I   Iu,#s&SJq"Dqj=%8u\^[)fy[Ags0'jAs_kO z vm5$kW"t**tx2~> uw 09M0un?U$:MB;:%RZRXZQ4wo@EL,i*k?rt% &;2{U__fablk^V_]ZkpPi8 9GYe>{1k[L4-c>Jp6FXO%wGIPwF?GyQyeIvc$z}#GW1uG^QYDC'i '8DtQ8Yj>d1O!W9V2.g]a$b9xXGqTE#O#LI ><}TuV#}9,m@kDt-_x~>m(^ [i5RqsjQ{b7W@q"U1N;1is.u sZug3g(ioW6ES ET3&n\a*WCT)o8mbxiE>n`vS\s,59^ }[VkrpM)s^|S;8Mo0N; &MU\|a~ts}G"E7QWsnvoed{Qovu~#2 ; //"c:C0v6|u VIF8K<HB'mdWv96+i;g!Wc;.M='&?NopE(ZATe5P0a" 6;.0 G944qv6WQ_{6E I) / ! 4 [E     / &W r [   7  { { U T q    q d   o +0 I U ` Y 7 , 0 = I I /Q :T M b  y*     Z 1 e= ^c T 0 l0 Zd   GG L   B + ( )   " 4 X 9 ar   a H    + K 6 W 4 Y    : 17 H3 T, Q 4            k g+    y t  v 9 2 ] v J z x o 8 s    rJ t4   % 9 J L 1  Q  J@     ]# )    n L  J P ; "    Y z  \ ] > J S  G p = X j   \ #w          x V D K w% 2vcT mdorNR{sWHpn6 <cDSj]geiC .  1 X b P t  j M Z  < T  @ x w X *o S T 4o V x + } # < ] y  S  H' i. ; Q +  \ ml        / /     - t i  P) J [ \ _ "l ;^ +,   d 6 o p \ Q T o { O:   "  # -     5 P H L f m [ > 8 1 0 '  p $   a8  e  a u T p   R 7i )m 5o 7/  O 3    | c 4 @  Ka A>      # ] c hP?4EL8%#)k;4&\hWe([\1)aK (@nQ,4oCd'&6{mX*W' hB(`4'G 6D,S 2017-06-27 09:29:38 0 0 ABE8EBA837B743F3B22B0D3DB28A3933 Untitled1 30/1 2 AudioSpeakerArrangement int 1 2 MediaDropFrames int 0 2 MediaDuration float 600.0 2 MediaPullFactor float 1.0 2 MediaStartTime float 0.0 2 MediaTrackTitle string Stereo Out 2 ProgramName string Cubase 2 ProgramVersion string Version 9.0.20 1 L-MIX 1 2 R-MIX 2 2 vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/audiounitconfig.h000066400000000000000000000106121461511344300242050ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- // AUWRAPPER_CHANGE: change all corresponding entries according to your plugin // The specific variant of the Audio Unit app extension. // The four possible types and their values are: // Effect (aufx), Generator (augn), Instrument (aumu), and Music Effect (aufm) #define kAUcomponentType 'aufx' #define kAUcomponentType1 aufx // A subtype code (unique ID) for the audio unit, such as gav3. // This value must be exactly 4 alphanumeric characters #define kAUcomponentSubType 'gav3' #define kAUcomponentSubType1 gav3 // A manufacturer code for the audio unit, such as Aaud. // This value must be exactly 4 alphanumeric characters #define kAUcomponentManufacturer 'Stgb' #define kAUcomponentManufacturer1 Stgb // A product name for the audio unit #define kAUcomponentDescription AUv3WrapperExtension // The full name of the audio unit. // This is derived from the manufacturer and description key values #define kAUcomponentName Steinberg: AGainv3 // Displayed Tags #define kAUcomponentTag Effects // A version number for the Audio Unit app extension (decimal value of hexadecimal representation with zeros between subversions) // Hexadecimal indexes representing: [0] = main version, [1] = 0 = dot, [2] = sub version, [3] = 0 = dot, [4] = sub-sub version, // e.g. 1.0.0 == 0x10000 == 65536, 1.2.3 = 0x10203 = 66051 #define kAUcomponentVersion 65536 // Supported number of channels of your audio unit. // Integer indexes representing: [0] = input count, [1] = output count, [2] = 2nd input count, // [3]=2nd output count, etc. // e.g. 1122 == config1: [mono input, mono output], config2: [stereo input, stereo output] // see channelCapabilities for discussion #define kSupportedNumChannels 1122 // The preview audio file name. // To add your own custom audio file (for standalone effects), add an audio file to the project (AUv3WrappermacOS and AUv3WrapperiOS targets) and // enter the file name here #define kAudioFileName "drumLoop" // The preview audio file format. // To add your own custom audio file (for standalone effects), add an audio file to the project (AUv3WrappermacOS and AUv3WrapperiOS targets) and // enter the file format here #define kAudioFileFormat "wav" // componentFlags (leave at 0) #define kAUcomponentFlags 0 // componentFlagsMask (leave at 0) #define kAUcomponentFlagsMask 0 // class name for the application delegate #define kAUapplicationDelegateClassName AppDelegate vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/000077500000000000000000000000001461511344300213375ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Resources/000077500000000000000000000000001461511344300233115ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Resources/Assets.xcassets/000077500000000000000000000000001461511344300264075ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Resources/Assets.xcassets/AppIcon.appiconset/000077500000000000000000000000001461511344300321045ustar00rootroot00000000000000Contents.json000066400000000000000000000030661461511344300345220ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Resources/Assets.xcassets/AppIcon.appiconset{ "images" : [ { "idiom" : "iphone", "size" : "20x20", "scale" : "2x" }, { "idiom" : "iphone", "size" : "20x20", "scale" : "3x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "2x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "3x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "3x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "2x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "3x" }, { "idiom" : "ipad", "size" : "20x20", "scale" : "1x" }, { "idiom" : "ipad", "size" : "20x20", "scale" : "2x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "1x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "2x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "1x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "2x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "1x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "2x" }, { "idiom" : "ipad", "size" : "83.5x83.5", "scale" : "2x" }, { "idiom" : "ios-marketing", "size" : "1024x1024", "scale" : "1x" } ], "info" : { "version" : 1, "author" : "xcode" } }vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Resources/Base.lproj/000077500000000000000000000000001461511344300253105ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Resources/Base.lproj/LaunchScreen.storyboard000066400000000000000000000032121461511344300317720ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Resources/Base.lproj/Main.storyboard000066400000000000000000000130671461511344300303150ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Resources/Info.plist000066400000000000000000000032011461511344300252550ustar00rootroot00000000000000 CFBundleDevelopmentRegion en CFBundleDisplayName AGainv3 CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight NSAppleMusicUsageDescription Import an audio file for preview UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight SupportedNumChannels kSupportedNumChannels vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Sources/000077500000000000000000000000001461511344300227625ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Sources/AppDelegate.h000066400000000000000000000042571461511344300253160ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import @interface AppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window; @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Sources/AppDelegate.m000066400000000000000000000051341461511344300253160ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return YES; } - (void)applicationWillResignActive:(UIApplication *)application { } - (void)applicationDidEnterBackground:(UIApplication *)application { } - (void)applicationWillEnterForeground:(UIApplication *)application { } - (void)applicationDidBecomeActive:(UIApplication *)application { } - (void)applicationWillTerminate:(UIApplication *)application { } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Sources/ViewController.h000066400000000000000000000042641461511344300261170ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import #import @interface ViewController : UIViewController @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Sources/ViewController.m000066400000000000000000000146511461511344300261250ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "ViewController.h" #import #import "public.sdk/source/vst/auv3wrapper/Shared/AUv3AudioEngine.h" #import "public.sdk/source/vst/auv3wrapper/Shared/AUv3Wrapper.h" @class AUv3WrapperViewController; @interface ViewController () { // Button for playback IBOutlet UIButton *playButton; // Container for our custom view. __weak IBOutlet UIView *auContainerView; // Audio playback engine. AUv3AudioEngine *audioEngine; // Container for the custom view. AUv3WrapperViewController *auV3ViewController; } -(IBAction)togglePlay:(id)sender; -(IBAction)loadFile:(id)sender; @end @implementation ViewController //------------------------------------------------------------------------ - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self embedPlugInView]; AudioComponentDescription desc; desc.componentType = kAUcomponentType; desc.componentSubType = kAUcomponentSubType; desc.componentManufacturer = kAUcomponentManufacturer; desc.componentFlags = kAUcomponentFlags; desc.componentFlagsMask = kAUcomponentFlagsMask; [AUAudioUnit registerSubclass: AUv3Wrapper.class asComponentDescription:desc name:@"Local AUv3" version: UINT32_MAX]; audioEngine = [[AUv3AudioEngine alloc] initWithComponentType:desc.componentType]; [audioEngine loadAudioUnitWithComponentDescription:desc completion:^{ auV3ViewController.audioUnit = (AUv3Wrapper*)audioEngine.currentAudioUnit; NSString* fileName = @kAudioFileName; NSString* fileFormat = @kAudioFileFormat; NSURL* fileURL = [[NSBundle mainBundle] URLForResource:fileName withExtension:fileFormat]; NSError* error = [audioEngine loadAudioFile:fileURL]; if (error) { NSLog (@"Error setting up audio or midi file: %@", [error description]); } }]; } //------------------------------------------------------------------------ - (void)embedPlugInView { NSURL *builtInPlugInURL = [[NSBundle mainBundle] builtInPlugInsURL]; NSURL *pluginURL = [builtInPlugInURL URLByAppendingPathComponent: @"AUv3WrapperiOSExtension.appex"]; NSBundle *appExtensionBundle = [NSBundle bundleWithURL: pluginURL]; auV3ViewController = [[AUv3WrapperViewController alloc] initWithNibName: @"AUv3WrapperViewController" bundle: appExtensionBundle]; // Present the view controller's view. UIView *view = auV3ViewController.view; view.frame = auContainerView.bounds; [auContainerView addSubview: view]; view.translatesAutoresizingMaskIntoConstraints = NO; NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)]; [auContainerView addConstraints: constraints]; constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)]; [auContainerView addConstraints: constraints]; } //------------------------------------------------------------------------ - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //------------------------------------------------------------------------ -(IBAction)loadFile:(id)sender { MPMediaPickerController *soundPicker=[[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio]; soundPicker.delegate=self; soundPicker.allowsPickingMultipleItems=NO; // You can set it to yes for multiple selection [self presentViewController:soundPicker animated:YES completion:nil]; } //------------------------------------------------------------------------ -(void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *)mediaItemCollection { MPMediaItem *item = [[mediaItemCollection items] objectAtIndex:0]; // For multiple you can iterate iTems array NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL]; [mediaPicker dismissViewControllerAnimated:YES completion:nil]; NSError* error = [audioEngine loadAudioFile:url]; if (error != nil) { NSLog(@"something went wrong"); } } - (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker { [mediaPicker dismissViewControllerAnimated:YES completion:nil]; } //------------------------------------------------------------------------ -(IBAction)togglePlay:(id)sender { BOOL isPlaying = [audioEngine startStop]; [playButton setTitle: isPlaying ? @"Stop" : @"Play" forState: UIControlStateNormal]; } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/Sources/main.mm000066400000000000000000000043501461511344300242430ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import #import "AppDelegate.h" int main (int argc, char* argv[]) { @autoreleasepool { return UIApplicationMain (argc, argv, nil, NSStringFromClass ([AppDelegate class])); } } vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/iOS/again.entitlements000066400000000000000000000002741461511344300250560ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/000077500000000000000000000000001461511344300216475ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Resources/000077500000000000000000000000001461511344300236215ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Resources/Base.lproj/000077500000000000000000000000001461511344300256205ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Resources/Base.lproj/Main.storyboard000066400000000000000000000306521461511344300306240ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Resources/Info.plist000066400000000000000000000022351461511344300255730ustar00rootroot00000000000000 CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile again CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright Copyright © 2020 Steinberg Media Technologies. All rights reserved. NSMainStoryboardFile Main NSPrincipalClass NSApplication SupportedNumChannels kSupportedNumChannels vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Resources/again.icns000066400000000000000000006136321461511344300255710ustar00rootroot00000000000000icnsic12KPNG  IHDR@@iqziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5IDATxZ p~>ێ؎c'$NB&L(4!(3@iiȴte @!(Gچ#IH}b[e[e[bɲeKvۿaY[fؙ}OcjNʕ~^ }YC HAϕl?W ެI9hD%)$$)""L>jմSnNt;sDnVyφTvnJS844Dz[QЍ+oD 5;~B$?lL2lkQ3s1aC9iu3PhBJN/:Y'vtNGNFYY :6'gA蛭M`}}; $z_3i;;zZ*ixAa\f-,O F, ^$,~b┐0ذϒ@ ~xM8A@w@aaD'N]])ݰauzz{:uJu-c'tybA>;֯~JϦwoFaaXFf ()}~piJiݠUbydd$1ݵa onvR|piT@wߵ^%`ury51+.*E ł G2I-кҶwwC VM]4!;ZǦLsBkH5d’yLJeujqlմѹ󗨼 Hqq7B!-0,',~6$<8UTVY;pXpSS))1Q(Xue+NX!ky+Sl{,va%6dKJLX4XJN`́~  yghh5vtq!-&(߂mo#eG6YQddzWR.ZGKPߤcY&6`R_|/zyԪ9k䥺u`ʻqO?S}\I'y}ZWפqgq|]n~醦fBh4GxtNTyÎm{|B@MەGU5 Zw$ 5an$v×awQăؠx؅=Sw%8Pzmі*#ڶ */?~31%I:yRo^Bj=XZ$^J=}z(UըV5.ѳXRTꖔd$B 7ی!3j8("z+ 6eŅst1?6aDwRȾ5F [48ٌ$|/e|bltɓΎv:q )\?۵/9jjrV f5b- SHp͙5ncu26A`?GTQ;BbAₙ(7/f|[$/XXeRK:L4 1"Qg|?Rrqo]DVYXDָ v93rx"m_3Iԅ#`2*WB2 KߑAM=(-\c|8*ͶQD ݧVtfdE\ש[`(`w_576j;"q-J)$4L #Ე甑;AC$81>VdچFRuXR4q>(ճS1@h;X rچR2uvѴX$W_ii;kRltN,ChNX{DJInXsBn[iL|G&;^ \:8ad @I{_|hEDU* OLPHPpw``ȬEj(Zs'w6 lb6|rKrи~VU0QtE!cu.\7=F P[lT _ 6+omF85C1PO1q§1\)[>+bb/ B5׋|@ Zp p5.Ǡ'$#,EICg6!}~LʏMyB#@؆p ֺt):pbѦ( AQQQy_Le/`F; =FMѸ 78y X@Į)ґ1ip,3]Սpׇ٠- - bA 7߻FB׺c۠;q1DIhBPL3rfXMOI!)Cp0*2b/ו\=G׷/6mOcjU/CY0@(?5ە>@@3321H^qI]wj͢8|%& k_yӟ2o> x)l= v.,8M, MlXS8nQg +21SoM>5yi1_ >]n$|rd*ntHe^ p8<`l* Q9nF+WQ"A/}w1 } >IENDB`ic07 PNG  IHDR>aziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5IDATx]|U?iR  ]b/ꮨ+|*ʮV{ľ.]14 "5B02of{{!oݹ3{wD`00 ``0?1?{Xy@h{GqB-r~W"=ڀpEq$sso?n=瀢!A?F~ݯP.Iرo BE8_JD\b~< 9;C@z@ /!<F(A9n_10IC9k#Aa!0Pe>Y@[#I(%—`+{4$lܮ;w ~8PN>B=%r =#ğc FA)4Ec)0.BayE0Bfs<@x|ۼm ># Bߌ) L;7~Ӷw~0Q4}ȭğ Pً3 9fW')9-o!;nQ `&wh16/“n>'-܇>OEB0pn9 $}Ya4@ϝ} z;::<&8Up @777446JMuTTVJiiTVUp64\BeȐ! mmmJ4hx{{Kmm|s81FN=e0މЊ8F^>gu@WIjjkeǟʎ]ڪtbl .!!!Ԥ0C LA⇅JT%Ν?JAa,d&$W]+CGJ`{gqgDeB[ /.O<.h{w)pI-#uyZi,ڲ{%P #&#q(@g@p3Av(v&J ^ƥ9clnBG>2axel|{Ӽ|\ƍ B0_,źg'~صGߩ*H۩BNn;<00P/Bi<͝ =~ @cSsVFv!3E˷yWufAx_yɣafՂO>BԱ2M /B:]A<E*wB3k+.#[f3u_^Q!oUy6E0F"!Z b#]Wߘr4tf9EѧlŶ1G#)i֕wIƷS:;t*w ;w8ݡ(;"Fؘ p|om+RO:uDXkouM}Rnai42 wğPF.j1_j)r 1 =:My#;o8% ZF%W_yijY咋* }B U+*dN]4/EH|n;xp\"io,y|ewk_ɫY3Z2X.䙵e-QVt ;wx(Uu|QIŞSj]aPU ssqc[SS+obfSVC%%ʐ t3fj\}1yUB-HMK_WU܂ҽU\p 8?RXXB7YﳳseyСʼ%e^kL{I拍VLqp1S^ #gk8e: .~kw,5r[&?,J5p" ?Ҳӛ[Z:lj𺉽j"{8 +WVh7"''O| e=@kvU'O |qt8y{?Ӵۙ3[qٴgk+㝮U- wqۨcz\Q\P%K.lsEuZ-1e `;EIDX Ʃ%s{~y2zϛ#cuG/#? {Ьi}}4*陖,aݫǘ_[gıU,QxKhmmȡ%Ha[  9F Sf ϕƪJc͔*728VB}V`u~W ʅ y2 -d0"5ĢT+: %W0ˠ҂28_Ъ*WVfN{;!Md<).H:x8 t2-^FET[÷ӼK{qtηUa[W-pDd^20Qʚ"CtGҙZr$yF޽k'KAuz"iu>[1 8* *j۟QFNh- oO*W J|w >1 GROpW_US\gXqUùÎ-*khr} !B S`?0y2 "%%5=A3vm?@UMm6ib݊o(>A+};ozUUrEN(=iHcS?vk^`Rp5{ [7Gnȃ<ٖwpAzv~4}o_ m.hfJaJڱ;0jv]"e65b#P ]K+B6~ufnr78p8B֊ 6,I>jkmQ{Li{0&e-@A}CS7~m?hQ_{R[A⢇V,bI4)ϓ)3Os@2s[G dH,#hpu:dً߮`{"hiK5$Q -nBX#@K%vT3ѩ D5WOS ['Oe_FLr(I|'UM æPvhrLG}&;{Muf r8q2DZ>:z=Z ;Dv bތDI@`z%x{ '3o0?מlJ2l>^$>cDlK\cnQL(P{E-.{SSؽKv'|/ ujqB9w$G Sd0eA}5GGH`gy9 p,|O5e%E#Χu/WIJ̷̮z.خ\V=~ 'S1'S~f&5MRYof0 QľKByLgoxf@gӮ1P/Qc,j.kkj[=ʉ_AyYR 9XF@qzIg啒[NWPέ {X>1b]X&M3ɣqs} Ź_vLⳟ!t>:y><)nt9Vɫ5Q2JAv^.~=̦5oQR8Ap'61Q^V╟ȐA8ΕCB ldLZ7`lLlcg^l rF1v^Cg"طgGX! _*+%,|rRb`9n|:f6kuoڤX Ư TRmvvhߠWoO9j`|0ϞGp9jj FшuT>8#aG#"&ji龥̒8X|K2aX d:\oSk #$ S,fiUyYA" 0Ș5~xa Wib9ESӺ7xrm5v0@&q>h?=IP&Fxqj!W-PQsq>4!"uH=|J= F8r#6x"?S^g>s*  Уur\σHY)TP*Sπu/6#麫l!:KlA ~w lgH g Vc8Ou WܬO̜:IhZh-4Hk$|)/lߨ`9;K `TH"HWG:D}Zf>voFXf;XnvօQI40תyi;QmMBzuF}/`>.Axo9up9G`o 7ȿc^f XJ |;@-%pJoZZ xi]ٲDFREaXXcTh .XܤyQq__qZ͂u/Ƿݖj } ڬ&ACxspmߠ1^<~Õ雭h5Zc|fZo=~=0ZH_+"ޕ"l#|zf!Us9'iǫi))*TT綮9Z )U4YY)պgtZLe0M뺟mGo3Djo7Ⱥ>LԱ}gM=^2%-Hrm{'M8aU$H+._h{V^wK `HKm:EMT#uTA] J9fp=Rؘ珳u6'wy1i6"K~R1{o!.SN2`| N$0? q>4[`)ԝCB,vOCCEv{v!Fv=@ki Ѹa4 xސ *pEp\nJgGNB:p@ˌIƾ <%7_vۘvN\OŖfF3xִ?H0ǩ?W|40ts I1zt0:z7ׇ n~ p$jz 1?3K@|sV%>7X zߊI"tjzkh֐ hV2^K`ʸA|Yb`e;g ]@E XtI ~p2v4뾊NZP) FJ"-@+5qhD<(܏760{{i0o}6@00 `d:%Q!IENDB`ic13=PNG  IHDR\rfziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5;IDATx}ű~)tʧsN I@ r$??d $0&et97Hewovgvvۛ[U_h(:y]Y 8rGv7sL]Dq@+8P;A ʐ@+A >5i ~ۅ;ށ"h{/qeY $g M=@s,oE5q? |jJ@X$ kbd/HWGjAz"+1bxt0|t,mP%}PM6ѯo*0{i3יx.׵cUmo&IH!@ xCSr@bll!_"=RF=w`6-DMqbh@!=.v٭FJ][W p*By\0˪Aǐ"h]݃ $?v8 F܋2/4H!2h#`d|s-+$?NKHkѾE)69g7Hwzc6 cftI\ Fڛ OAAf՜^(h2@'jvMRYm#*PlH׭@Q8Hd`Q}\>}3SH]\Ui(V.1OH7Te,VC|[,X6k¨Ab/tx`wAdCgLTAϾ Wo7C"iRGV+ ? "+o '_$,74w"2.kxFkmqB i0dZd~ XG8@> EJmW+}?4w&{@?q'j&9J#V2A?c>kMQ4Xià@ H{ 3YSh9AG1G>@+VJPM8@់o# O? 4Xi sA/=Nׯ)8JV OcgȴaF!߹{1nC6B%$ib!=яk V@o40R8K8R:3Ra譾Á+ g!g}n'Ŀ---ҥKܙN5. KWv%=OhH}@14ܫ{2/)((ilhFijj&(%{wϞ=zdذ2iС2t޽[}}O7K;ƼOFށN cB;MƾiNFmmmmYv|nq Jm-ӁwR2zSN2`@9b9BFGȈå[Rދ)h357%Xi00Ԁ_w| _}->h_#1cFI?L'}zKBʥETUW-z7Jz1F819}jٷƛHMM=d̟wvء/}z6ee5{Y؎P{/ ~-&nJru߱<ܕv+믿*w, |RA`5Z7A#MbS NO gF`ԫWOg-S&O %MM˻}߈8SfW3]HǢPݞBgyy/ېϡXxGes'g  Joc1E 08g`dV"M X?HX#A9Ζ{Uy;nM$Ž`tBF=8А!dgQr}wȸq1o X{[{h[qmp^JZeq~+MǝP>jnn?GپhqjX>$ 2FY*P0Mybnݲuniʮ4@PB|Eec~w4ЗLppD&Fݜy4. :--+O7_bz|eYo-Y94]ze?~p`#v 9|08a\x,frf񬈗nwS`q`^FZdTKS項8_n;}z /lʃ}ze/Sn9yBHzwE'OAe^`ӠU%CS zAPKAaddfIs=ht QπƍSa+:~R{Uku7JNnݻD4hk-S}Oǟ&Dh_>yV\-m6 fNb`i>7?| YxckQğl?%]{p_:S}/ ?ntpA̮hؾ}|| F,ܑ: y?˷\\\(0zҥ{ڊ+VQvyIF?#~tp_~L˥:KD!gu8k=!"0%Tsy6qx~ BMM-2rF_{WMYG eh?ʄ !뮖=ްWP-a63פ ?GM yXF\V}ojl}튠}>_Y8{m?Ĺgs}@U̽bnz?LjFK/@^|镰xދt Ͼ}ZD)'?BPwnL(gE+z؜Ca;m[ RRZj,!h2Or+'DE&[֭F)`Yº_UU-]t hup((Db"݋?qNd` 8 5oG=B#B(YZRNjcuO, c΃]~|J4;ww(8 ;ƺٳgs~]329􇿠r.cWګ嗐GjfJíqOj.y^c"wރ"W>|izioM.Z9O. ^E綶o+vȾu` FqzMe8@:&-Ǝ-N:􀭠8Nrsem^7r1=pWk[BR4O(?-$k֮BX;&%;4y9;O`a |Zx58+tz2.ྜ(Z]TY^~GV#yN94]VkegbvKª/PXc̓ on3Bt?fv<=?}^fee_|ens7/ ĸH{w؈(RVy)ܟTTSԹ]d{%'n:]X(pJ6nbg]B8S!dM¢`D]p ,KL߯m+*Nx+ "WjsA.A6c_G>G^krH 8C?=T #:O`#ݍcLG$Uu}G"^U% LW eOh)@Ξ5w'~-pW_f(.zߙt8p7?x񅋍YÍŶZ;v*ܶmaQyx*:5Q|j9`J~ s?浕5/};4 j-K'!_O;-0Vl'KU4m~{edfcX0>;~=pY,||%T#s>`fvZ6T@pyxHӳ [Zj| װ{v} <kă7|7g?^~-,d+m ':V{*~SPEZ)g/XSáD^sEDBLTcԘSBc4|\_|0*}5Z ts ֻ {Kl u.X^W\b)oL{AL~;~Xc}ͩyaag eJ -sLYMBF98$X>G8߭Gzn><8IzeW6&q1̑y/n;!3 }[\ڶhTN9N:6*woY3 7 ڊQܳs a-R]sX D RA O"`? HЫ$nA/+>bucNv]]0ݷ\u%I^:㔛} f]Á&6bXu%@X0Z.䂤am6 Shx>`G3q@b)?X3q5ik@k`nvvnU^{=_/*[ K*O~G#0LG|;k&n.eo$#0 d8~-\t [S&vwR(a!f]lvхu!75z6646%/&]^Q\?V8㑾bZ|w\zW_7b3v9 bx_èt802t=X+(ߍ8b`G%q psQlern%eNAW1m0ZaN=邼oG9RSפ,!qzBQrylp"Tyݣ":Bʋ/tBQ:ز3S~z]sH`1ϱXZ SYiݰ-SugZd!翾(yi0 t~ktv9@}Hu",Za{F{ ilBpV} 6JүZ@n}V"V!cQQqI<s|arq/=kwk3'ݒOiOFꕒJ|zI< zwZa|l 0xzG? ́R).n,դZ*v_[v 4EƁy oV!c!A綥f{~+E KwHSsFQvppfѴ\/]^ڈ9K[,h*LZDV>gNS&>FjY}ghcKg.1ڬNk7퐏?m֟m%ڻݯV{m\)T<.щ}gb_{] Mnk' ]K`$$ER- ߖMDeA@Xbz~ ! uD"@uKZV$bMs@yUXTZ.L$&W|[K+[~#g8C~BL >҃i{JxkWn--FEiR]۠^ժ:Ϋd`YQ_ur}vWȖiҶG]3fZí(mljon/Qjj7@!\*mOz35bWt3{}+!HmDw|+,)Yuh Zϳ.7mO3" #u<;͗_(9^gۧ'xkӯȊ bΛFB.]8w»/-;G~k_o'j`թs)?pج)2qH%+ARߥֵS]YR^ @ǍKAnu[AfѦ !.~Boݕ_k4vm]պF_,۰%xQie yGT*1]V|*dW_H8}i ̐>_.5pr J~+KJlڑ*u 'i۱Mk,_8TKbk/@olr< ںFYW oAQz-仕ػ_V܇+%Hu -{izi~@+x{PɅ͗J^vcxP>--)T9:uR5*F@l9<U"P܎sʻTved(FDF0+*dŲ/d-ֻk$NUݷ8yZj fH=uC-WH>}GjVi>˃ V hİ[B6]-MN2~FBA! E5==W9vHϔP[zEJc8V|FœQu9rgaMiw =eJin<-d7_Iup`BWUN }pau}徽{ia~|)Lzwz?Q&N/{esCa6"!iT.X/S})}eq zx&˿LJ ܨ:Lr}D52A<^ AgB+뼊Jٰf_B܇kІpRYU-[ݧ»o԰2y)7e.yERQVj, N_Jc+?z:JV' sNCm˾JÁ˴ hS&\k`yz ;Ke BbSV^>FΘP9zBӷ’(֭1Bzw4xޭ߻WOt/nڡCٯ9eʏ \|$3u'P{f`DCOV~l]V$g?d2lC\,Rwl plI>}ݰ pKMSu{?55eu:iQlc fڴc7jOfN(]tZ}[h?YA P~sEXh,EFhO--CXd(ƍ[L,{I4g.r ,ٴ >/ŝ,ToU 6\~F%𿀯kZྛ'* E`V N0v ኯ>tPگHᄆ#ݱcP hC/y 30dٹu8O!MTy!f2G`IbO'D^L?&|n?ewv3~wwGGϓ=箯5GUN>ߥKyur/?Z`U2T-mڈk c#njÆ!n;)tf. 9}ᲄDخ2pƠ}b1m鮜a{7!6 kZu]f9BF+qS{] U\)"iٹB_4}S&MpkjhO2޹~^4&-0pld@B;+>7Xw %3;Gѻo$`)~" WPb ?Ze7_O2 ln} DaFzv]᷿frZ8`'٫y}ҭCdƨ+A;ҳx:PM~j'~k/7lO{r/sg5FPM>r4 u`b;*8՟<~ b/TVsu8=P^~j|¢E&s KJtcMpg*7oU=)rKvp[Z /GhMO8[^OX1+F/bJ9u+!<勊  -"x~,`_>kA@7v\P l ^|U@:='puQdt)o^y(*(pMHXȚ 30_olh0 uK?Е}Ȩ HOmwqGH\Rϓ *2y(P%cb"9;_F)0/rQ~G4w.ݻ0PG ``~pk"$ =?S]P_tw@8 @3GP44| V| jk5@ #!TBV|B)lmpiCV] |2)`vJJFBPrYmo} eGma$oedIA H#Nꈂ)#**o ~4!.wi ڑVCcf)\𗸬Xʑh$=.v$F&g﴿0fнWcGغtH} oO;brbf=ugT$VUF4p? g3xp풝P8I>w_.ry܉`ȱ"ӭ$@>#!M y΋1?@hѳa(FPoLd >x`*w_~6TxxhZEWλ%Č Z>"`ѼR"%I&'sX1HH L{ph {TU) eg9vK q*ZQM4tP!."@P(#o(2(pD#+gnEݨA`TR2QKWE#:!)4> r_v :R} `E.#NR/`L}x-5[RTh`$ci"U<+-KwCc+;Q}~.Hx<izGy#}ΈٱehN[X"%=寽Ⓝа!FNxb6HH34j}* @&6#׼' rrD!K2rWbZ}P!@_W8($a J k(p9 i""rG6})HB#% ˀw_>[}}yUA?^B)s*^$ ot@ 4|?Oeo@HgV@[ޓyU~`[Pw_%:RPL[KΕDe P!,=;_2cې~ 2 :R{p,>D_#/=~'JބUC 4"EH;Rf{GZ7߱CK"*g`)85S-"W"Wcd#^ %%<Bk*N'hg{p<*φ|wKP@]})vOUc oSܿQ p C BOģ>;7\ǯA<>f&"J%$ UH}Q7L5`Mm6!N2 BPKN(Xϝ4I4@W啻z>L) P30NPu=TVAJFXu4Ql5][&fe% \߃*UEe  ׽؂C6%ˀ p9 :w(=d UnWM!#@x֠d@lj(D0@nAd>[pʄUd!,0NLy3ңH}; }] N:ˀAe(`<i/Ty'DH JJ*L>P{Ў]o_h_"@EPoH), rI<ч=zk$D\!Gukb5qLXp;sIBOXXL輅_(/ C P Ϲ ht]y2lOTfv*}kW5_59?&P3*6o[.G8~v[yJmG bTwaʟ У`oz 2|맏҄>l7 *,V| C*/xί{B5$Ξ%G|H"9礤n2|h酈?: `a2nU Wd8l[";O$7+cH g`zѷ_"?h'x8nxX֡@@^=e$z COkN X6ZdS`$LE٧ ]TT=2xʌYr'#Kcw*,1Z-_i&=PN{a6@i|GJ6OݱU}O3'@`Ft7,kΈ8h%5h m?@- ]q)fM@ ڹuȗ|wHA|mtזk0F¿:$*$/G8z@! 4F\90cG&1]죦(q@xb60y~wԝj M vN8޼8]:'[W[#Ǝ#ߏjGS9@ OO\H'u Kv8ʗ( *B)H9QE OAt8'rwXs~Ynm>-`H6"aQxiaj)OoT:pTEp6Jnʕ F>(9k, 3~Ω2G'¶a6p(^Z3bB?倞xvh"of\sӃfK  6DՊ0TK#43(?5L(-*Ѿ!ڻ@V.3B(F{ ݎϽm82 Btwiwl)Xgkl $Ty@:C͞neh`U`!zeAP~ `'ӻ/z  X,E9t  ɠ.&FjXcCd UvP峦Mڀ?Q~GdCBg 1uTa@766}uń(q~M;<IENDB`ic08=PNG  IHDR\rfziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5;IDATx}ű~)tʧsN I@ r$??d $0&et97Hewovgvvۛ[U_h(:y]Y 8rGv7sL]Dq@+8P;A ʐ@+A >5i ~ۅ;ށ"h{/qeY $g M=@s,oE5q? |jJ@X$ kbd/HWGjAz"+1bxt0|t,mP%}PM6ѯo*0{i3יx.׵cUmo&IH!@ xCSr@bll!_"=RF=w`6-DMqbh@!=.v٭FJ][W p*By\0˪Aǐ"h]݃ $?v8 F܋2/4H!2h#`d|s-+$?NKHkѾE)69g7Hwzc6 cftI\ Fڛ OAAf՜^(h2@'jvMRYm#*PlH׭@Q8Hd`Q}\>}3SH]\Ui(V.1OH7Te,VC|[,X6k¨Ab/tx`wAdCgLTAϾ Wo7C"iRGV+ ? "+o '_$,74w"2.kxFkmqB i0dZd~ XG8@> EJmW+}?4w&{@?q'j&9J#V2A?c>kMQ4Xià@ H{ 3YSh9AG1G>@+VJPM8@់o# O? 4Xi sA/=Nׯ)8JV OcgȴaF!߹{1nC6B%$ib!=яk V@o40R8K8R:3Ra譾Á+ g!g}n'Ŀ---ҥKܙN5. KWv%=OhH}@14ܫ{2/)((ilhFijj&(%{wϞ=zdذ2iС2t޽[}}O7K;ƼOFށN cB;MƾiNFmmmmYv|nq Jm-ӁwR2zSN2`@9b9BFGȈå[Rދ)h357%Xi00Ԁ_w| _}->h_#1cFI?L'}zKBʥETUW-z7Jz1F819}jٷƛHMM=d̟wvء/}z6ee5{Y؎P{/ ~-&nJru߱<ܕv+믿*w, |RA`5Z7A#MbS NO gF`ԫWOg-S&O %MM˻}߈8SfW3]HǢPݞBgyy/ېϡXxGes'g  Joc1E 08g`dV"M X?HX#A9Ζ{Uy;nM$Ž`tBF=8А!dgQr}wȸq1o X{[{h[qmp^JZeq~+MǝP>jnn?GپhqjX>$ 2FY*P0Mybnݲuniʮ4@PB|Eec~w4ЗLppD&Fݜy4. :--+O7_bz|eYo-Y94]ze?~p`#v 9|08a\x,frf񬈗nwS`q`^FZdTKS項8_n;}z /lʃ}ze/Sn9yBHzwE'OAe^`ӠU%CS zAPKAaddfIs=ht QπƍSa+:~R{Uku7JNnݻD4hk-S}Oǟ&Dh_>yV\-m6 fNb`i>7?| YxckQğl?%]{p_:S}/ ?ntpA̮hؾ}|| F,ܑ: y?˷\\\(0zҥ{ڊ+VQvyIF?#~tp_~L˥:KD!gu8k=!"0%Tsy6qx~ BMM-2rF_{WMYG eh?ʄ !뮖=ްWP-a63פ ?GM yXF\V}ojl}튠}>_Y8{m?Ĺgs}@U̽bnz?LjFK/@^|镰xދt Ͼ}ZD)'?BPwnL(gE+z؜Ca;m[ RRZj,!h2Or+'DE&[֭F)`Yº_UU-]t hup((Db"݋?qNd` 8 5oG=B#B(YZRNjcuO, c΃]~|J4;ww(8 ;ƺٳgs~]329􇿠r.cWګ嗐GjfJíqOj.y^c"wރ"W>|izioM.Z9O. ^E綶o+vȾu` FqzMe8@:&-Ǝ-N:􀭠8Nrsem^7r1=pWk[BR4O(?-$k֮BX;&%;4y9;O`a |Zx58+tz2.ྜ(Z]TY^~GV#yN94]VkegbvKª/PXc̓ on3Bt?fv<=?}^fee_|ens7/ ĸH{w؈(RVy)ܟTTSԹ]d{%'n:]X(pJ6nbg]B8S!dM¢`D]p ,KL߯m+*Nx+ "WjsA.A6c_G>G^krH 8C?=T #:O`#ݍcLG$Uu}G"^U% LW eOh)@Ξ5w'~-pW_f(.zߙt8p7?x񅋍YÍŶZ;v*ܶmaQyx*:5Q|j9`J~ s?浕5/};4 j-K'!_O;-0Vl'KU4m~{edfcX0>;~=pY,||%T#s>`fvZ6T@pyxHӳ [Zj| װ{v} <kă7|7g?^~-,d+m ':V{*~SPEZ)g/XSáD^sEDBLTcԘSBc4|\_|0*}5Z ts ֻ {Kl u.X^W\b)oL{AL~;~Xc}ͩyaag eJ -sLYMBF98$X>G8߭Gzn><8IzeW6&q1̑y/n;!3 }[\ڶhTN9N:6*woY3 7 ڊQܳs a-R]sX D RA O"`? HЫ$nA/+>bucNv]]0ݷ\u%I^:㔛} f]Á&6bXu%@X0Z.䂤am6 Shx>`G3q@b)?X3q5ik@k`nvvnU^{=_/*[ K*O~G#0LG|;k&n.eo$#0 d8~-\t [S&vwR(a!f]lvхu!75z6646%/&]^Q\?V8㑾bZ|w\zW_7b3v9 bx_èt802t=X+(ߍ8b`G%q psQlern%eNAW1m0ZaN=邼oG9RSפ,!qzBQrylp"Tyݣ":Bʋ/tBQ:ز3S~z]sH`1ϱXZ SYiݰ-SugZd!翾(yi0 t~ktv9@}Hu",Za{F{ ilBpV} 6JүZ@n}V"V!cQQqI<s|arq/=kwk3'ݒOiOFꕒJ|zI< zwZa|l 0xzG? ́R).n,դZ*v_[v 4EƁy oV!c!A綥f{~+E KwHSsFQvppfѴ\/]^ڈ9K[,h*LZDV>gNS&>FjY}ghcKg.1ڬNk7퐏?m֟m%ڻݯV{m\)T<.щ}gb_{] Mnk' ]K`$$ER- ߖMDeA@Xbz~ ! uD"@uKZV$bMs@yUXTZ.L$&W|[K+[~#g8C~BL >҃i{JxkWn--FEiR]۠^ժ:Ϋd`YQ_ur}vWȖiҶG]3fZí(mljon/Qjj7@!\*mOz35bWt3{}+!HmDw|+,)Yuh Zϳ.7mO3" #u<;͗_(9^gۧ'xkӯȊ bΛFB.]8w»/-;G~k_o'j`թs)?pج)2qH%+ARߥֵS]YR^ @ǍKAnu[AfѦ !.~Boݕ_k4vm]պF_,۰%xQie yGT*1]V|*dW_H8}i ̐>_.5pr J~+KJlڑ*u 'i۱Mk,_8TKbk/@olr< ںFYW oAQz-仕ػ_V܇+%Hu -{izi~@+x{PɅ͗J^vcxP>--)T9:uR5*F@l9<U"P܎sʻTved(FDF0+*dŲ/d-ֻk$NUݷ8yZj fH=uC-WH>}GjVi>˃ V hİ[B6]-MN2~FBA! E5==W9vHϔP[zEJc8V|FœQu9rgaMiw =eJin<-d7_Iup`BWUN }pau}徽{ia~|)Lzwz?Q&N/{esCa6"!iT.X/S})}eq zx&˿LJ ܨ:Lr}D52A<^ AgB+뼊Jٰf_B܇kІpRYU-[ݧ»o԰2y)7e.yERQVj, N_Jc+?z:JV' sNCm˾JÁ˴ hS&\k`yz ;Ke BbSV^>FΘP9zBӷ’(֭1Bzw4xޭ߻WOt/nڡCٯ9eʏ \|$3u'P{f`DCOV~l]V$g?d2lC\,Rwl plI>}ݰ pKMSu{?55eu:iQlc fڴc7jOfN(]tZ}[h?YA P~sEXh,EFhO--CXd(ƍ[L,{I4g.r ,ٴ >/ŝ,ToU 6\~F%𿀯kZྛ'* E`V N0v ኯ>tPگHᄆ#ݱcP hC/y 30dٹu8O!MTy!f2G`IbO'D^L?&|n?ewv3~wwGGϓ=箯5GUN>ߥKyur/?Z`U2T-mڈk c#njÆ!n;)tf. 9}ᲄDخ2pƠ}b1m鮜a{7!6 kZu]f9BF+qS{] U\)"iٹB_4}S&MpkjhO2޹~^4&-0pld@B;+>7Xw %3;Gѻo$`)~" WPb ?Ze7_O2 ln} DaFzv]᷿frZ8`'٫y}ҭCdƨ+A;ҳx:PM~j'~k/7lO{r/sg5FPM>r4 u`b;*8՟<~ b/TVsu8=P^~j|¢E&s KJtcMpg*7oU=)rKvp[Z /GhMO8[^OX1+F/bJ9u+!<勊  -"x~,`_>kA@7v\P l ^|U@:='puQdt)o^y(*(pMHXȚ 30_olh0 uK?Е}Ȩ HOmwqGH\Rϓ *2y(P%cb"9;_F)0/rQ~G4w.ݻ0PG ``~pk"$ =?S]P_tw@8 @3GP44| V| jk5@ #!TBV|B)lmpiCV] |2)`vJJFBPrYmo} eGma$oedIA H#Nꈂ)#**o ~4!.wi ڑVCcf)\𗸬Xʑh$=.v$F&g﴿0fнWcGغtH} oO;brbf=ugT$VUF4p? g3xp풝P8I>w_.ry܉`ȱ"ӭ$@>#!M y΋1?@hѳa(FPoLd >x`*w_~6TxxhZEWλ%Č Z>"`ѼR"%I&'sX1HH L{ph {TU) eg9vK q*ZQM4tP!."@P(#o(2(pD#+gnEݨA`TR2QKWE#:!)4> r_v :R} `E.#NR/`L}x-5[RTh`$ci"U<+-KwCc+;Q}~.Hx<izGy#}ΈٱehN[X"%=寽Ⓝа!FNxb6HH34j}* @&6#׼' rrD!K2rWbZ}P!@_W8($a J k(p9 i""rG6})HB#% ˀw_>[}}yUA?^B)s*^$ ot@ 4|?Oeo@HgV@[ޓyU~`[Pw_%:RPL[KΕDe P!,=;_2cې~ 2 :R{p,>D_#/=~'JބUC 4"EH;Rf{GZ7߱CK"*g`)85S-"W"Wcd#^ %%<Bk*N'hg{p<*φ|wKP@]})vOUc oSܿQ p C BOģ>;7\ǯA<>f&"J%$ UH}Q7L5`Mm6!N2 BPKN(Xϝ4I4@W啻z>L) P30NPu=TVAJFXu4Ql5][&fe% \߃*UEe  ׽؂C6%ˀ p9 :w(=d UnWM!#@x֠d@lj(D0@nAd>[pʄUd!,0NLy3ңH}; }] N:ˀAe(`<i/Ty'DH JJ*L>P{Ў]o_h_"@EPoH), rI<ч=zk$D\!Gukb5qLXp;sIBOXXL輅_(/ C P Ϲ ht]y2lOTfv*}kW5_59?&P3*6o[.G8~v[yJmG bTwaʟ У`oz 2|맏҄>l7 *,V| C*/xί{B5$Ξ%G|H"9礤n2|h酈?: `a2nU Wd8l[";O$7+cH g`zѷ_"?h'x8nxX֡@@^=e$z COkN X6ZdS`$LE٧ ]TT=2xʌYr'#Kcw*,1Z-_i&=PN{a6@i|GJ6OݱU}O3'@`Ft7,kΈ8h%5h m?@- ]q)fM@ ڹuȗ|wHA|mtזk0F¿:$*$/G8z@! 4F\90cG&1]죦(q@xb60y~wԝj M vN8޼8]:'[W[#Ǝ#ߏjGS9@ OO\H'u Kv8ʗ( *B)H9QE OAt8'rwXs~Ynm>-`H6"aQxiaj)OoT:pTEp6Jnʕ F>(9k, 3~Ω2G'¶a6p(^Z3bB?倞xvh"of\sӃfK  6DՊ0TK#43(?5L(-*Ѿ!ڻ@V.3B(F{ ݎϽm82 Btwiwl)Xgkl $Ty@:C͞neh`U`!zeAP~ `'ӻ/z  X,E9t  ɠ.&FjXcCd UvP峦Mڀ?Q~GdCBg 1uTa@766}uń(q~M;<IENDB`ic04ARGB8܀ ]eJ ͆0(҄ 0(0( 0( 0( kM  jǿǿɅɆƳUƣ&* Ġ&''?&'[Ȳ&';^ru&'J0D{r+'DfGF &'@/U{|'b`6ImltjՈفٿ׿qΆָ9= ն9::RƁɱ9: sĭ9: Ov9: aDZ9:Z]\ U9:UBm;|yK^؈؆MM MJJaсMJ ѾMJ a¾MJ sTlĿGJlonǁ UJJgS„N\qic14ˉPNG  IHDRxziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5@IDATx%Es % HPg$ $ d%/a6缳s3;yf42;{g{C9u)&                                                                                                                        X[Pu ( t>F$gGBqՓ x<`:X<5/73wJJ~ @GhtDIPσhFBF{.%! XhA @ǯ_G.aᓉH!Տ> @5?|Ed_!ὼHhq?M"Fpoa, J$#4|ԘTDhvo`$T!(m8/"Yf8a\6#i(5>ǭȿwX*'q.O$`5 6t@]$nA~0  42Ut '7`,SHE4\ͪH#7ttG]bHe4\H=tW☮\֘O#C 7rj p,%kFkx^|? ud" >iH-AbMH^9oC~ @Gd$@ "'r5 絴_. =^ |E@3 Dɨj-;4m䏡F)d"(x(_HޓC_13_C^ᐉH@0Q(w S?C+aynh@ a C9mAI| `"3qnVGB"Ӣ%ߍ0 :ja$@]%"^@@A}4ߴί6&aCL$@.Y?DfYN/"CD$2 :-1E؛UGPnh@BE p+J@>|e;f0 c/% tF@gtx@?"s}{;66YW56ˢH@g:T=x69(a h#L_/vːP_#+2 H#6dQ#G܊|FC1sS`0 "AHo6C"J3@6$B$=ѳ>&_D>jzY5u30iH B4"O dg2@Ļ )MfJH,4jJgO"(>2;qfzn$L4Ժt"F7]S[>[bSZp F^@>0(N=o!}MۗuA4\}tG?&:"C_Q @D/H@#P@~ @Cx*?ocj:?{8C$ n@^Clcj''x׆DI`9SGUQHhD8u/#^7HTB :JO;jF]0WC@`:ם^A&E50B]c$74֢g/t|Y{_Hc8u0t!&-m`+_`QXQpi60 㛈FJ)I@BǿEg>Ӷf[!L$IdQV~?I%Qu0T![ ' s:ucݬu@;almwh<#Ź7'ut 4fȷu^VEQ5://B! : ΁F: 2h4=tڟ$`sS0 ␀EO@o:mOL!I ;q0 DIAYB@?'t OS7/*% Aii(8@I-02w:")>aH!Py oL)H[:BP|@ Nށ .9p '̨ 8#u!E ހv_£ t'H hCau\4ũo|wڎ:qHlw@ o!4ũh˛ 8O^!N @#~.+D`;R.t=q}ȿ^G#P}F~@]t0`:83C_$@mM/ЍH f4bF"%Y<'{y= :诎K΁@ YD W<,x% @;Z O QX )xGe~ iǐ!PH$)@ǯCq7 T?!@MW< J@?|#P V9r 0tt:%@S<< t~uK9H "qu0Gt/krwF6je~۟H}aluj4J>SAϗڎ x6ԐJEM?Q c|UsH 9aTUVn 4A?f>y[JO&PnC~ @5r]%"^t L2kyH;!ucDu]: rdvjY*sa>וu@# GCJ%  &4lbO!_$+ @={>ו >@?7|DD7b (w ?C+BS Y`@\`!PqdzB: v]+tХmIH3!?cBD#1F:m! @'^Ź15ҷO_W?is1cϾ}-±O?oYtYr9BA[!PgK,u=]OrjXQ KNɓ\\))-ۯCWCC# F ?|y[X58Q#Gmwv&0ޏS^0t!&rCTg<ˍXGtw ds.in1緷B4'JGN5zL0& Ɓ 7SBooa0Gp # 崘ϫfN#PU]-o6Gw%8qeLuĠ[~e媵{J~iq@l>ӆ7HpoEWo u]&ɯZV>[Rņ7}T !9C!2x ~O^jjjښ:]34&MMM) m;ݨ(5'p$<)K`iUuGLHLJwÇ(?@7Wh$3`hNȔ4)(P #3!Yt4'W^|>CMXWx_ z^#y:ѵ|UW^cQFՏ6ișg.#G [S_r崨K H4ܠqqu0G|'op G[(:~̕2xC{TJbR~ܸZNS9NܬbkuICal5R E @!SnڼUbO>x:ϙt g9NAGz舌1uȷ/ !:yyF@T}rջk>L#/_Ѡ>v'vu>㘵8)qyDٕhEҵr PmOhrրW~!_ FfoH#jOk+1o=]aW;nY88+4vfi4\*} lx4Bu{>eD=#8Ç oV=LOMcֆGc S1~v a@%32}wy7o& 7{ґG7R/^rr~*NL&[<spTuupg9E>Ycg 埏=ex,[҈rhBv/,g aƻ(dXL9ލѮ~ ÏZ1۝O}c~LckM6փ:t )9ro`4lȄuw< y>]LrrlJyQ#Gʍ®L$o{wJlPl~7wi܅! 뿲RN9=MwJ|=_u$Ba"_- "ЂwAD>(8cƌSO9zQYqqve6cxR7H#m8tGB7` ($U`GG,ݯu&_xq{ύ9BWC4*'Ǟ|-/_#}.7|C'z9 _Pt%9V(iojp\E7hM0g~LXen~nn.E7x7>!PglƊAئ_05fhČН0kdu_LI7aY}hbƛ%nh1MH:ܐG#})o=y', 7_,nѥ?nCmKwf|E[aMNEɉ'k olyW’}Ɛ>AFNRre$!-=Ctz$K2Jދa@e_;jaéꟐэ\oC rJ6n"oJ;D{Vhoᗦk,ɲ+)u]9twt=찃e(C:|ک'ɱ):nL`L|]_ŻQxء[Y/-+X|G™~qBC9F ~kաyYT(4"%x Օ%o8\UO0N4֬o.zW^_k:/~#~׿vrӭ@t8}9HgwKȔyrf?@C8⼅l̢nf'455F]Ίt~ٲqӖN_'xu'uX鴍֩jkkEh'M߯W?#?hѷIMALx3ǟȇ!#qCalm_`H;<qH+V{:[Λ7S@;[n;f?:uʱ|1ۙv%!ACkVx[y]p6MCW 5,#aVH3[A~Cju ٸv!j菋u#Q#utDܯW1k])djph~erZSNatBj\+D.:&0`@l޲ <K=y:Pwdv8y:z?Ƨ˰I=S ig%gx:`%EGSN۞dgg{n}yWbҫ2mkdN weAP#]wBzzc/俞+tK䫳u9/2O&Jb%u_.:nJ|ӆ^G[oϭ.5Uw[!yh&2Cn,}(6v&?Ьq VZk̞٭<˾slڼZ6rOn'(pA5@ƅ\BɜrW^{J&5TY睳7帚oAXN^+khnhhO|ͭG@JPcSNSd> #ȷq4RMRsw~!x%Hi8]s/v ΊQGnm\>dIU߻LӝQ-X+(@ ~ŕ58a' p))555 yu!ФsL'!Z ;1C߄Oo_p 5k\ 2d5->{?GUGѴReKh377o/. b/:B=dBk!hL?4d}qOqHk2Dpeڏ&Hmu5{SS-oht?$[ V,LݭͫUWϫ 1usJ^ym~x#QTJȔ%K9UΙ=\-+Vh+a8 c1xmo|)ߣ뵙C`ذ]rIlݺ}>5޿Vt}*霳TO>VH5N:F_Bt |whyBFk8eUug_ըs*0oNTQC1u>͋qD;gc]mpZ~:_&_Цek|]-{X4|աka9⋯kIw.*{b{ F |(rr:j!.CdDk-jF[zQѓlx_ɧuQۍV` Cɧ487n&5FBBpSx5ᑟx?xغ 3&>4:iϗoEIP6:%|cg eܽ{<̿o 0K묻ï#`{wM'{t@-={k0F|1GʬY3"ɋu#]e6U=DH&wht?,󫫫o;j14Ukoߣ$Nn5s|S:"S;?VtIF.X2~ٲ8y.L125+oc2 \i y@t}9.cNb{h$B;~(w~>y_+CzrjͿk`ei6HRr?+.zJe1J@ЯF '? LNiiֳ&lknսn3{\_J߾潈1wҳ ֎B4ld'AyIP6;0i+JtOp w/XFSO qhtqÒOG4ؖ]_;UnW2x𠈋HoprCq=IVnQ 2? 4jqIG|XKe7N,!3%] v'M?EԈJ>-lF7 $9ǝ]vhJ[zkM 9dַoQKBhp(n3'M/FAmmwnnelٺ 5 Эh/&-ٲelظI6n"Iw%> 6wkDt̜Ʀ@uW{B @(ěf\|!~ iq?NiK|mc&deÆꥲJ*.Ϥib~?r}^|![[o:_P hgRY?#[ጔ555YBjPY'KLHzl6bի'r/{6ۻc74J:g#(K|j{;9Y][5r$ϓZXwFa ?Wf iyaaչ:mDv%s+h'x!ȳ1Li_\穥C7\+sr-j_=]lH%4 ii$`xIoБkKJjZ/k<;R[\snv:ǟ-Y :9Vjo^;4_0_ƌ!p@Zl[D .;%Yo߽b9#{3`7`cCw IwYĢh> +**04sEL IǢsW?1cFo5n&+wKv6pf>RTTV?{J>_R2xLЎe1uY嗦$]`1k5xܽ*ꊓZs Ϛ#^[^pdӧw Ugh[uDF^J),Л%]M%]yx{={"f}p{ΙJo4⟛5 ϱDŽL#sfl/k=#9yuT@ZԈ:y[Z;y=&pCΫ53.O2@,=WG:$1&~w}>cn_4 fBkH Ϯ^|Ep}3 @g^Ǥ1 y QD$=~ z@|ǽvup'6n܅$@][~xBJ~LR\R@TE@2sDe"h 0j>g-֞^pӤG>֖7 ?]D@,|zoCC?#))i>Ւj7 hpvl;Ӥ`Z$OVV^ /D$?G^ahx_& ;( udgCVۚKk%Iynsd#@sMu>/y/Bl=D$]uWA-wik[4ݶ}[o'MM\wl TB2<ӻwW0 DO@{gcc]I@IIOLˑ $@M y{"O>TWsn26"PTRnWL~4g?_r\|TnERP\.zqn,o_4$PU]-OYMɢ@IDAT%#L$@H̓Z ( $$$- x}"lNmI;&3$/])R|w E \|VX $mҤeO7֍8x=hÑ Px=<dx(4֦)|O .؃UUk,'%KI0XMOm;!'xQ4[ ^O?o$;;0?I e4ۧO f`F;FTW^](ћ@+݈#)Ceʄ!@ >]ksKއVH[jIBt?MՖ-K/>" )/T1 $+sA~ ӝ5HYnlݶC.<9vi?뜝Wdm۫'r^Ӎ^k1[WW'/pijIH 5#W*/mo4LoWXP(>GL$e W,[iiGٲy<˒]E(y lMHC F C`4 o ,+m "Etd~Z0EvE+dkBB&0@~\ojQL). L$`z䷅Lk )TGX~" 6' % $jޑ~l}*Em@K+9X[}2cxn!ʗUTIfN "$rs446ek0 2w^Q 4ep)*)w>Y)':a1 R ڬ 42]'K';܂bg"~uңBҖO3ڨ3֧+6Ȳ5[ p idt?ȲH p8s@FN,Z\Sm+uز3Jg- $ecSݼS>XFS%Fҫe#@6D6()>]% /DgF;}/n|4o#Jh}ӹE-lxo3@8lj 6׷o8j. +:Yj; tD Q'w&g1_Gx MH!%r3eΌɌ$ DSR^"FqS5РA'DJ@wGt?:9>o`5]!֊Ʀo%[ eUҳ'G}Tl/>{QK h̀B9|2alqNi@^|T;4Q5Fd IB_`47 > $'6 --$oitnS"aS6*^4-~RtA&hat?5( ?[#7nƠK}5L&FeR 0|V2I, k?[MpU_<~mEJnAe@=BîXM>^Fo(R=ݯZ3M +dkB4xB YR^)Yԧ'PR3Nh// IF Ђy@ &s !sn~gQ#)UK̅JZ!Zyۼ~z򆧿ѭᏆkؗ }y/n* &C۵ynd,_J/Mp)mGVNFɷF9p̚63sFl'V Y~YygE#"zI@Rn),]#e\eCPYU#ݯo_ffYFLhĄ7@ttOWɆLNQ)Ǵ|~WHhۜGSdI$uܙ!9rseձR(4_Brx!$G`5ut&+w #YnK~X~]-pGc͚HSy0S̘L'hF/u/1E_ q#AqÊIBj)uZ P`ڗa V߷h"jYG":_+_Z1$CiU Vl~! @Fh²m[dRYQ>=%>ZGonn~v P?ZTϗH-X67b rQ5``MRbD`t?*y_Aoh)ִ@A^n`nUTrkļ{Ŋ=gKJFvব,U?~mY륎׭kVJmm5_5ߴ=It莃~MUeWZ:Dӎ?  x ܏@QA`zJ f*gkd-dJ%#@2#S )CL$%4Zu?dc@EY~~ 9=Gނ`Z?Dr0͑_T.ϟ/)hY?An}1t-_o]5S=ͬXM>^N*;%'^E]Hhx(s2d٧%?'kz"Txl׼ x)rFNtzْ(臉JW[rwH?U˥fBlMHw?Y!0JÒ9Ljt[~ ^KIC4:D^'PRT(+|,I&[>”N 5_ْD7نaFg4L)1^)--͒CV.DJ祭΁o-^.,)I77nOr+ꄝI^i6#  o Uv}il0)^ .|xzȳygKbdDŻY ~RdeXNYK5p; 鮃H5#1SfNf2_<,em:@NlOLw>Z!ZTчDD;3$+ML\#@5Ԭ4 X߀];$7x1QOv\H7͆N%eS9OHIJѰ| +3 !Y2CdĨ~Vw?ta 8Y2kDGeI卟uۑ& "' и[7#Ԉn),])TD=zx:LnMHf֢+A+y HF-srIY*ٰu45>%)uS![gwY)(밗 {y4нvlوeIue4 _uܙ!Pv^a7rkB nL)ʖ?wXaAM޶BH=o@yiIܹ-p_tUMj@h=1߯zYS!nݺSdQD9|H;K}*O@;$)ɑy ǚ/(@~a|L3cro[`IRZQ==w3llIELx#P[[#VH}]oڱ_@T?HS3{adC=dN~ӷNO GE 'Se΁*#$nTt;7’R ofb'htyCDH64lCɂAL ']Mرe# ~&Օfy;9fVh^={9t۳|g p/Kw@~#r_`k*/-}"I;:+ϤԷOoY0o $(}N=4,: 0b(ˋ>3-ŗC.-9Qs-_@^TGG71) ~ ?&_(VgRJq 6UP?ښٰzl^F4/IWA|iav~y#GwƧhaX+:d-'Y'A?x455ɶ]ɢ&Æ ?&6˲?r.Cb%NNegq&l"-ʊrcLzDے,Uk:scG! Fs{.EU'sJ3j`F;P QÏ9N4_Sey|ھը]֨~O&+30Imb,W\'fv1j_`t>~L@,+>H [oݕ$ߔ#Go9X9 Fo"Uy@w6kr,v6|S⺺Zٴvl\RjkVoUѯɜ%o)H1:s8pgT`Jo8hq܉6;IccSڢ|)-.sɔi3(,.,j󰛟z3hStv*E B`_tw)2jXQ# 7+_ ~ RȐagv~ddsիWO? $Fj_b0(E Gr5"0`*+;n /c\oEp*ԡ~#ؓO.S'Am4[gꜘ!l͜B߷Os$v(@a'BP ?"uvgϕZ`ĨѶmRaXzan=d]v$JQY}Mv:4~/; jt~W4hDC@7x9#K eŒ%5ih^S+u֜4bP9~7F2i9$kFSt H-q&n;eg=--͒c0Lؑd{b Qmeht?7`w쉧拮k̐e`(eXCVj`*1(n@q2tf 9u lw ~Sĝds;XMeFtd TZ^a 7!)I͙nvt QRc60EE t;D%76׿zԱR6Ka؅XV.DΜ-gȎG> K$%#"_T"fqPx^}"Bxn^l5l1[Չ.+=ը.P: 51qdA\W 9E;t)+7_2"C#~P}{S_ Gx 2ԞB ,E_\nX' _Mfk`cro~u 3GOhDώw~W#@5 0N+5] ͋4*VGitDt9]/[M@'c=Hض>9Fp@aQ mܧ͜Uf47TQ$3Gu7oK!{.>}Ge9 ߻t"ɚgOQGЬŭ'`;9Жt$%qd$Il9vHD}nݠ4*b] I=BsĦ5LI9CРA͗cO:M4&[[_ĝd57IFOBXC' 3F@-_/y%\?186FNk┩2z8ٵ}G=St&J%1-ӑ]Mfn@y7f%U xg](-.>}6ܮn1[ 4Yvn$ƞ)<:2o4QSS~Q1#xn]@8xM\h,kVu6.2QQ2c\ɮAsfkpB"wՠvηGgb$ e֜dҴC~K_Ɯy2vDٹeh} h`g@4v2u.:Q͛""׍pxhnj[dK\# $Gw?pN."yL.!GtdN]?j^㉫GNu a)?@jk 遡Gv|!2qTill ynf7q􆟆I=~;RvG7Qٝ(Tt)6ɢ `.4 p<y@>w2Zk(@nv0pРþTG7])0>Ǵ0^gDcclKL54O Uutё'Bed% V];tDhx&:3T6(͑ʊr!|^Oh@=(r qG,,3Clە"uuwa.Z6h #mQcZ]쮖tޭ :΢Uh>6b8Y2N .W~h}>6;g=92/<@kȆ$B>ZVIq l۷_?4_^z$ h@477_I%:a3c$0vt{Fێ9&]lpmOTQ6ǜΞ[F>'"xFmuf!_nǛCSAd=} eW"D3kYR3ť-0_¼9H #mb4K'8YViÿG2^ j$~L$; D֥ qeuz<`t6d͕WX,Yah@B 0hip$i]%p$2GI0rk,,"T^VO[@G;tZ@CJvo> hڽ%K 0߇!.NJq!.! j3Ҭ?`+^S=[Sum?FvWeFa' ['oE}>0JLtKcm'@0rafWj/ L<gs-Oč .hA^ Cy\:y^M4ZEYR[[#ÆzАIP;0 T:xaN!}O /yj1?@XD~z,:aXUYa-ymُI=uA&XzDk>T0=_c"yIe^"ioob&Cjz::ՆGl&@fv#FK(s+FgYbYX.o=OS +_Jӊ7w&6R>LrOLm-FF崀89Λ~35y!@@t?71 nCzȥoنG"@!v #}#]xm~4ZhT .2dp׀3kwׄ/"fN3yc0:3N݀>F@.WY Ӱ*m :ɥ7~oltqco~ :w LF@%+0t;༪_k%+6vqJ锆4 ndHKLh'$3C SCҦiJH& : M ^eyŒekŖCh|[λ\KwϺ{9 (pA߫lQ% 9TC TU.hy@R8e`@ZI34}}$aKbIL L Э0VJ6@09K6·j:GiI1D7jb /Cu5*A`%N\;``;SqPSRbPHv?5O$55~Fu(b@@нF@1<"K,/3rm1'> U_$؋g;O@vZQ~!SڤtX_S* {9,oxH$е Q&J+L) I(kc2mg%LiΓah'} $Q: R(Vha O1Fbt:p'dӾ6xqI)=%HP2/ QdQORJj_I5A.wL|+`4?pF3c݄h KC+3(xiPgV9,=]gͅs8!Qd23}KQ~bT*R@  NF0^2%P]X .ii馢Y.\0ccW"ȰSnxA-P?t  B'_P̣CG*G^% Hɇ#P]rdkE%'7l{}f9-E`nD}߾m8rVQVj/S2 o{3|9>4`H0$p9T1DyB,F&^mFb LMM7 $ACmolkX㸖$!&JI2mkO )P'@79dbIe+WچF_RJ$?epJ|ϱE|M!zN"oWBWٔ`*G#^9 qޖJ`w( fy$@5!F&^ Dy߅6vG? a! ¤P/1@d9C/EUޏs9cocEN# L:gNQ93jY)*W)=WK7w`\ DrvX2   TI!i}$.$sLnu1Z:MkSjȵp='oz^h$Ϧ: <C9G*^ rK~2SQUl H}hw%IVxxqK WjGqv?q|/]U7K:4nʣWFxW5N6"$222Mum,'!nG kK<c5$QI'ls=Rffg$aO.ߗKB4pcUF@ z$_G g[@ؠM#`wWC:ᬅ R3~ Ņyfi. `kWwi2Oz8Z/1 7`|.C_~~Iu3_F W iڳK;ޑx8x}p/j",c9X}oxdt?lr ɡmjRXmlRELqkGchWY^f5`~v?)84cڑaHm9%' ɑ=R$/[TRtcn7=_}uT;WuКOҪVH Z4B;u #`0^4rRտAXjk?H,661pZN9b4AsHI#{ښ趴T-*&5y0NlǞ H0V0:`H]9,HbD57? }:#U:.1]A_ f;~'[f[ͥZÓ>,Y:PUk9{F${dH_[iV?3G?~]s\bܸ}, /u5\0UI[Y]:`$MR%KIe8X(A((<d/έ`tx#Qը -$wC66v Q>d?ϱ* a O!F E2U#H0s$(^uɀښ_Z_U. dz  b|IB?pF34g1%f^* K;]YSh2u0e-X[H gZCKP v uj#zϛ1mi 1-3jb9oߣVH 4tn% ~**x܂+5-͞ Mmfj]S Ŧd% |mX50e=1⛽"O}\ hLr\0#S5xR(G[kKπ.b^A>W#kY,DF0 mdf;gsY'Q0;#A'NJKh$@0$q˚|zΙ7Ct&ՙI  ~&|/l$ B!=pĸ9uٜjn E '|%Bi\;R( 8ԚϜJg?ϖ [RWM-/XbQtG "oАj(.LV,o8 G @?#o}[脏Q`It耹|Y}O@uE$? ȶ I2R4Fk(MX oBޣR\(7,*g^~7cj{~yVڪX_`!@@"xm (_FߍnY JEbѼ8Q~gbâhzXSfJ57b I뱂U:}9q쨙Rgl/ TDvB ~^O`׹G'h&-ͳC٢&m6l < )lQ+5剸TV z /1ywwS),c3L_"P?E0VHQ'wzmn|׌"̌ g_NQIF$@ F##@>ECzR]xazs '3:p$n,φ3CI@j0DW9ƍIu/xZM 2_~fnAA p|_}  7o [nŅH XrXp]Gj$ ȷ ]s %Hة482$ -3A9|'C`;} ]N XƑ/DӂEfKh6en;snߘ# a(C -4@P6 o] e69AEN$J@,' dUObC`ΡH`&D%5x?f;$I+z2_X ,!2'BKéAtRKQMԉf#ņbi9 ͪeIU%B,$v R~`[d<nD jgK #m&_@R Kހi-#,ui5M+珁PRT=O/N,oen(' I'7^$  7 f[ LM]cȱlR|qQݯ zIv_̥G6٥n7@?˓ݴ|S`h3yj*LvIv3eh$9#!ɶu(zM 04Ok/~jӾdM&neh$ nH-AOF%_RSQ]tv-6ޔ_o^LRo} S$=^P=Kfg۾A%IDATCˣF<%溥D+n _+IH 4b`AlrL&i2ذF+n_l_s L L@!nti3,ՑH`8Mӕ?`܈Z_q0>"PifZKɿC8_0SLXK}sC@dP{ PDa =ro;lL]H xA$i hK;FokVfw`.9 zpE`y;WF %< CV%N M=)F$%P?}D#F* `[@ IϢ_T)~~o(>J ڒ@0j79F$#1IK0O˩-@@-=şJ(V4 JZ0rߠ)C W6 H/%/ XKM^Ƚ}6''y- {O (% mn>b% _9N2 f:R]ӤOsY5NYH h})R! }}0NCmX5KH&i6-PRb.{6wF.6O1u =A$xVѷ$p.l'$@`V4 &oQHD?nK>\mQꡒ=*B@l (XW G|{!l \.BG31 m`d@ϡ5zdȂ,rH'4|aHo0`̽ۼ2dK^ LA3s$z<%nG]. I d pr(! x A*Aw}1H>F$ ;$ qZ3=N@<al$@@@9, Aob <9$ L#@4 IuXב GXN$*@w{,wqcм= DKhI}$`1x?Ap??l$@JP24!p AEa<<ş7h˛z0R!˱A 0&p,z1A$($ *Ho&eiqպGF{lu LDH@w@ o.XҦS^wa75~K$@> eH$@>iW0jE:djJjߔ;f.S[PLœCH@xL$Qd\Vyi|{ ]W6  DI@ xB@<7q6zB4Y47U{j O1vhIENDB`ic09ˉPNG  IHDRxziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5@IDATx%Es % HPg$ $ d%/a6缳s3;yf42;{g{C9u)&                                                                                                                        X[Pu ( t>F$gGBqՓ x<`:X<5/73wJJ~ @GhtDIPσhFBF{.%! XhA @ǯ_G.aᓉH!Տ> @5?|Ed_!ὼHhq?M"Fpoa, J$#4|ԘTDhvo`$T!(m8/"Yf8a\6#i(5>ǭȿwX*'q.O$`5 6t@]$nA~0  42Ut '7`,SHE4\ͪH#7ttG]bHe4\H=tW☮\֘O#C 7rj p,%kFkx^|? ud" >iH-AbMH^9oC~ @Gd$@ "'r5 絴_. =^ |E@3 Dɨj-;4m䏡F)d"(x(_HޓC_13_C^ᐉH@0Q(w S?C+aynh@ a C9mAI| `"3qnVGB"Ӣ%ߍ0 :ja$@]%"^@@A}4ߴί6&aCL$@.Y?DfYN/"CD$2 :-1E؛UGPnh@BE p+J@>|e;f0 c/% tF@gtx@?"s}{;66YW56ˢH@g:T=x69(a h#L_/vːP_#+2 H#6dQ#G܊|FC1sS`0 "AHo6C"J3@6$B$=ѳ>&_D>jzY5u30iH B4"O dg2@Ļ )MfJH,4jJgO"(>2;qfzn$L4Ժt"F7]S[>[bSZp F^@>0(N=o!}MۗuA4\}tG?&:"C_Q @D/H@#P@~ @Cx*?ocj:?{8C$ n@^Clcj''x׆DI`9SGUQHhD8u/#^7HTB :JO;jF]0WC@`:ם^A&E50B]c$74֢g/t|Y{_Hc8u0t!&-m`+_`QXQpi60 㛈FJ)I@BǿEg>Ӷf[!L$IdQV~?I%Qu0T![ ' s:ucݬu@;almwh<#Ź7'ut 4fȷu^VEQ5://B! : ΁F: 2h4=tڟ$`sS0 ␀EO@o:mOL!I ;q0 DIAYB@?'t OS7/*% Aii(8@I-02w:")>aH!Py oL)H[:BP|@ Nށ .9p '̨ 8#u!E ހv_£ t'H hCau\4ũo|wڎ:qHlw@ o!4ũh˛ 8O^!N @#~.+D`;R.t=q}ȿ^G#P}F~@]t0`:83C_$@mM/ЍH f4bF"%Y<'{y= :诎K΁@ YD W<,x% @;Z O QX )xGe~ iǐ!PH$)@ǯCq7 T?!@MW< J@?|#P V9r 0tt:%@S<< t~uK9H "qu0Gt/krwF6je~۟H}aluj4J>SAϗڎ x6ԐJEM?Q c|UsH 9aTUVn 4A?f>y[JO&PnC~ @5r]%"^t L2kyH;!ucDu]: rdvjY*sa>וu@# GCJ%  &4lbO!_$+ @={>ו >@?7|DD7b (w ?C+BS Y`@\`!PqdzB: v]+tХmIH3!?cBD#1F:m! @'^Ź15ҷO_W?is1cϾ}-±O?oYtYr9BA[!PgK,u=]OrjXQ KNɓ\\))-ۯCWCC# F ?|y[X58Q#Gmwv&0ޏS^0t!&rCTg<ˍXGtw ds.in1緷B4'JGN5zL0& Ɓ 7SBooa0Gp # 崘ϫfN#PU]-o6Gw%8qeLuĠ[~e媵{J~iq@l>ӆ7HpoEWo u]&ɯZV>[Rņ7}T !9C!2x ~O^jjjښ:]34&MMM) m;ݨ(5'p$<)K`iUuGLHLJwÇ(?@7Wh$3`hNȔ4)(P #3!Yt4'W^|>CMXWx_ z^#y:ѵ|UW^cQFՏ6ișg.#G [S_r崨K H4ܠqqu0G|'op G[(:~̕2xC{TJbR~ܸZNS9NܬbkuICal5R E @!SnڼUbO>x:ϙt g9NAGz舌1uȷ/ !:yyF@T}rջk>L#/_Ѡ>v'vu>㘵8)qyDٕhEҵr PmOhrրW~!_ FfoH#jOk+1o=]aW;nY88+4vfi4\*} lx4Bu{>eD=#8Ç oV=LOMcֆGc S1~v a@%32}wy7o& 7{ґG7R/^rr~*NL&[<spTuupg9E>Ycg 埏=ex,[҈rhBv/,g aƻ(dXL9ލѮ~ ÏZ1۝O}c~LckM6փ:t )9ro`4lȄuw< y>]LrrlJyQ#Gʍ®L$o{wJlPl~7wi܅! 뿲RN9=MwJ|=_u$Ba"_- "ЂwAD>(8cƌSO9zQYqqve6cxR7H#m8tGB7` ($U`GG,ݯu&_xq{ύ9BWC4*'Ǟ|-/_#}.7|C'z9 _Pt%9V(iojp\E7hM0g~LXen~nn.E7x7>!PglƊAئ_05fhČН0kdu_LI7aY}hbƛ%nh1MH:ܐG#})o=y', 7_,nѥ?nCmKwf|E[aMNEɉ'k olyW’}Ɛ>AFNRre$!-=Ctz$K2Jދa@e_;jaéꟐэ\oC rJ6n"oJ;D{Vhoᗦk,ɲ+)u]9twt=찃e(C:|ک'ɱ):nL`L|]_ŻQxء[Y/-+X|G™~qBC9F ~kաyYT(4"%x Օ%o8\UO0N4֬o.zW^_k:/~#~׿vrӭ@t8}9HgwKȔyrf?@C8⼅l̢nf'455F]Ίt~ٲqӖN_'xu'uX鴍֩jkkEh'M߯W?#?hѷIMALx3ǟȇ!#qCalm_`H;<qH+V{:[Λ7S@;[n;f?:uʱ|1ۙv%!ACkVx[y]p6MCW 5,#aVH3[A~Cju ٸv!j菋u#Q#utDܯW1k])djph~erZSNatBj\+D.:&0`@l޲ <K=y:Pwdv8y:z?Ƨ˰I=S ig%gx:`%EGSN۞dgg{n}yWbҫ2mkdN weAP#]wBzzc/俞+tK䫳u9/2O&Jb%u_.:nJ|ӆ^G[oϭ.5Uw[!yh&2Cn,}(6v&?Ьq VZk̞٭<˾slڼZ6rOn'(pA5@ƅ\BɜrW^{J&5TY睳7帚oAXN^+khnhhO|ͭG@JPcSNSd> #ȷq4RMRsw~!x%Hi8]s/v ΊQGnm\>dIU߻LӝQ-X+(@ ~ŕ58a' p))555 yu!ФsL'!Z ;1C߄Oo_p 5k\ 2d5->{?GUGѴReKh377o/. b/:B=dBk!hL?4d}qOqHk2Dpeڏ&Hmu5{SS-oht?$[ V,LݭͫUWϫ 1usJ^ym~x#QTJȔ%K9UΙ=\-+Vh+a8 c1xmo|)ߣ뵙C`ذ]rIlݺ}>5޿Vt}*霳TO>VH5N:F_Bt |whyBFk8eUug_ըs*0oNTQC1u>͋qD;gc]mpZ~:_&_Цek|]-{X4|աka9⋯kIw.*{b{ F |(rr:j!.CdDk-jF[zQѓlx_ɧuQۍV` Cɧ487n&5FBBpSx5ᑟx?xغ 3&>4:iϗoEIP6:%|cg eܽ{<̿o 0K묻ï#`{wM'{t@-={k0F|1GʬY3"ɋu#]e6U=DH&wht?,󫫫o;j14Ukoߣ$Nn5s|S:"S;?VtIF.X2~ٲ8y.L125+oc2 \i y@t}9.cNb{h$B;~(w~>y_+CzrjͿk`ei6HRr?+.zJe1J@ЯF '? LNiiֳ&lknսn3{\_J߾潈1wҳ ֎B4ld'AyIP6;0i+JtOp w/XFSO qhtqÒOG4ؖ]_;UnW2x𠈋HoprCq=IVnQ 2? 4jqIG|XKe7N,!3%] v'M?EԈJ>-lF7 $9ǝ]vhJ[zkM 9dַoQKBhp(n3'M/FAmmwnnelٺ 5 Эh/&-ٲelظI6n"Iw%> 6wkDt̜Ʀ@uW{B @(ěf\|!~ iq?NiK|mc&deÆꥲJ*.Ϥib~?r}^|![[o:_P hgRY?#[ጔ555YBjPY'KLHzl6bի'r/{6ۻc74J:g#(K|j{;9Y][5r$ϓZXwFa ?Wf iyaaչ:mDv%s+h'x!ȳ1Li_\穥C7\+sr-j_=]lH%4 ii$`xIoБkKJjZ/k<;R[\snv:ǟ-Y :9Vjo^;4_0_ƌ!p@Zl[D .;%Yo߽b9#{3`7`cCw IwYĢh> +**04sEL IǢsW?1cFo5n&+wKv6pf>RTTV?{J>_R2xLЎe1uY嗦$]`1k5xܽ*ꊓZs Ϛ#^[^pdӧw Ugh[uDF^J),Л%]M%]yx{={"f}p{ΙJo4⟛5 ϱDŽL#sfl/k=#9yuT@ZԈ:y[Z;y=&pCΫ53.O2@,=WG:$1&~w}>cn_4 fBkH Ϯ^|Ep}3 @g^Ǥ1 y QD$=~ z@|ǽvup'6n܅$@][~xBJ~LR\R@TE@2sDe"h 0j>g-֞^pӤG>֖7 ?]D@,|zoCC?#))i>Ւj7 hpvl;Ӥ`Z$OVV^ /D$?G^ahx_& ;( udgCVۚKk%Iynsd#@sMu>/y/Bl=D$]uWA-wik[4ݶ}[o'MM\wl TB2<ӻwW0 DO@{gcc]I@IIOLˑ $@M y{"O>TWsn26"PTRnWL~4g?_r\|TnERP\.zqn,o_4$PU]-OYMɢ@IDAT%#L$@H̓Z ( $$$- x}"lNmI;&3$/])R|w E \|VX $mҤeO7֍8x=hÑ Px=<dx(4֦)|O .؃UUk,'%KI0XMOm;!'xQ4[ ^O?o$;;0?I e4ۧO f`F;FTW^](ћ@+݈#)Ceʄ!@ >]ksKއVH[jIBt?MՖ-K/>" )/T1 $+sA~ ӝ5HYnlݶC.<9vi?뜝Wdm۫'r^Ӎ^k1[WW'/pijIH 5#W*/mo4LoWXP(>GL$e W,[iiGٲy<˒]E(y lMHC F C`4 o ,+m "Etd~Z0EvE+dkBB&0@~\ojQL). L$`z䷅Lk )TGX~" 6' % $jޑ~l}*Em@K+9X[}2cxn!ʗUTIfN "$rs446ek0 2w^Q 4ep)*)w>Y)':a1 R ڬ 42]'K';܂bg"~uңBҖO3ڨ3֧+6Ȳ5[ p idt?ȲH p8s@FN,Z\Sm+uز3Jg- $ecSݼS>XFS%Fҫe#@6D6()>]% /DgF;}/n|4o#Jh}ӹE-lxo3@8lj 6׷o8j. +:Yj; tD Q'w&g1_Gx MH!%r3eΌɌ$ DSR^"FqS5РA'DJ@wGt?:9>o`5]!֊Ʀo%[ eUҳ'G}Tl/>{QK h̀B9|2alqNi@^|T;4Q5Fd IB_`47 > $'6 --$oitnS"aS6*^4-~RtA&hat?5( ?[#7nƠK}5L&FeR 0|V2I, k?[MpU_<~mEJnAe@=BîXM>^Fo(R=ݯZ3M +dkB4xB YR^)Yԧ'PR3Nh// IF Ђy@ &s !sn~gQ#)UK̅JZ!Zyۼ~z򆧿ѭᏆkؗ }y/n* &C۵ynd,_J/Mp)mGVNFɷF9p̚63sFl'V Y~YygE#"zI@Rn),]#e\eCPYU#ݯo_ffYFLhĄ7@ttOWɆLNQ)Ǵ|~WHhۜGSdI$uܙ!9rseձR(4_Brx!$G`5ut&+w #YnK~X~]-pGc͚HSy0S̘L'hF/u/1E_ q#AqÊIBj)uZ P`ڗa V߷h"jYG":_+_Z1$CiU Vl~! @Fh²m[dRYQ>=%>ZGonn~v P?ZTϗH-X67b rQ5``MRbD`t?*y_Aoh)ִ@A^n`nUTrkļ{Ŋ=gKJFvব,U?~mY륎׭kVJmm5_5ߴ=It莃~MUeWZ:Dӎ?  x ܏@QA`zJ f*gkd-dJ%#@2#S )CL$%4Zu?dc@EY~~ 9=Gނ`Z?Dr0͑_T.ϟ/)hY?An}1t-_o]5S=ͬXM>^N*;%'^E]Hhx(s2d٧%?'kz"Txl׼ x)rFNtzْ(臉JW[rwH?U˥fBlMHw?Y!0JÒ9Ljt[~ ^KIC4:D^'PRT(+|,I&[>”N 5_ْD7نaFg4L)1^)--͒CV.DJ祭΁o-^.,)I77nOr+ꄝI^i6#  o Uv}il0)^ .|xzȳygKbdDŻY ~RdeXNYK5p; 鮃H5#1SfNf2_<,em:@NlOLw>Z!ZTчDD;3$+ML\#@5Ԭ4 X߀];$7x1QOv\H7͆N%eS9OHIJѰ| +3 !Y2CdĨ~Vw?ta 8Y2kDGeI卟uۑ& "' и[7#Ԉn),])TD=zx:LnMHf֢+A+y HF-srIY*ٰu45>%)uS![gwY)(밗 {y4нvlوeIue4 _uܙ!Pv^a7rkB nL)ʖ?wXaAM޶BH=o@yiIܹ-p_tUMj@h=1߯zYS!nݺSdQD9|H;K}*O@;$)ɑy ǚ/(@~a|L3cro[`IRZQ==w3llIELx#P[[#VH}]oڱ_@T?HS3{adC=dN~ӷNO GE 'Se΁*#$nTt;7’R ofb'htyCDH64lCɂAL ']Mرe# ~&Օfy;9fVh^={9t۳|g p/Kw@~#r_`k*/-}"I;:+ϤԷOoY0o $(}N=4,: 0b(ˋ>3-ŗC.-9Qs-_@^TGG71) ~ ?&_(VgRJq 6UP?ښٰzl^F4/IWA|iav~y#GwƧhaX+:d-'Y'A?x455ɶ]ɢ&Æ ?&6˲?r.Cb%NNegq&l"-ʊrcLzDے,Uk:scG! Fs{.EU'sJ3j`F;P QÏ9N4_Sey|ھը]֨~O&+30Imb,W\'fv1j_`t>~L@,+>H [oݕ$ߔ#Go9X9 Fo"Uy@w6kr,v6|S⺺Zٴvl\RjkVoUѯɜ%o)H1:s8pgT`Jo8hq܉6;IccSڢ|)-.sɔi3(,.,j󰛟z3hStv*E B`_tw)2jXQ# 7+_ ~ RȐagv~ddsիWO? $Fj_b0(E Gr5"0`*+;n /c\oEp*ԡ~#ؓO.S'Am4[gꜘ!l͜B߷Os$v(@a'BP ?"uvgϕZ`ĨѶmRaXzan=d]v$JQY}Mv:4~/; jt~W4hDC@7x9#K eŒ%5ih^S+u֜4bP9~7F2i9$kFSt H-q&n;eg=--͒c0Lؑd{b Qmeht?7`w쉧拮k̐e`(eXCVj`*1(n@q2tf 9u lw ~Sĝds;XMeFtd TZ^a 7!)I͙nvt QRc60EE t;D%76׿zԱR6Ka؅XV.DΜ-gȎG> K$%#"_T"fqPx^}"Bxn^l5l1[Չ.+=ը.P: 51qdA\W 9E;t)+7_2"C#~P}{S_ Gx 2ԞB ,E_\nX' _Mfk`cro~u 3GOhDώw~W#@5 0N+5] ͋4*VGitDt9]/[M@'c=Hض>9Fp@aQ mܧ͜Uf47TQ$3Gu7oK!{.>}Ge9 ߻t"ɚgOQGЬŭ'`;9Жt$%qd$Il9vHD}nݠ4*b] I=BsĦ5LI9CРA͗cO:M4&[[_ĝd57IFOBXC' 3F@-_/y%\?186FNk┩2z8ٵ}G=St&J%1-ӑ]Mfn@y7f%U xg](-.>}6ܮn1[ 4Yvn$ƞ)<:2o4QSS~Q1#xn]@8xM\h,kVu6.2QQ2c\ɮAsfkpB"wՠvηGgb$ e֜dҴC~K_Ɯy2vDٹeh} h`g@4v2u.:Q͛""׍pxhnj[dK\# $Gw?pN."yL.!GtdN]?j^㉫GNu a)?@jk 遡Gv|!2qTill ynf7q􆟆I=~;RvG7Qٝ(Tt)6ɢ `.4 p<y@>w2Zk(@nv0pРþTG7])0>Ǵ0^gDcclKL54O Uutё'Bed% V];tDhx&:3T6(͑ʊr!|^Oh@=(r qG,,3Clە"uuwa.Z6h #mQcZ]쮖tޭ :΢Uh>6b8Y2N .W~h}>6;g=92/<@kȆ$B>ZVIq l۷_?4_^z$ h@477_I%:a3c$0vt{Fێ9&]lpmOTQ6ǜΞ[F>'"xFmuf!_nǛCSAd=} eW"D3kYR3ť-0_¼9H #mb4K'8YViÿG2^ j$~L$; D֥ qeuz<`t6d͕WX,Yah@B 0hip$i]%p$2GI0rk,,"T^VO[@G;tZ@CJvo> hڽ%K 0߇!.NJq!.! j3Ҭ?`+^S=[Sum?FvWeFa' ['oE}>0JLtKcm'@0rafWj/ L<gs-Oč .hA^ Cy\:y^M4ZEYR[[#ÆzАIP;0 T:xaN!}O /yj1?@XD~z,:aXUYa-ymُI=uA&XzDk>T0=_c"yIe^"ioob&Cjz::ՆGl&@fv#FK(s+FgYbYX.o=OS +_Jӊ7w&6R>LrOLm-FF崀89Λ~35y!@@t?71 nCzȥoنG"@!v #}#]xm~4ZhT .2dp׀3kwׄ/"fN3yc0:3N݀>F@.WY Ӱ*m :ɥ7~oltqco~ :w LF@%+0t;༪_k%+6vqJ锆4 ndHKLh'$3C SCҦiJH& : M ^eyŒekŖCh|[λ\KwϺ{9 (pA߫lQ% 9TC TU.hy@R8e`@ZI34}}$aKbIL L Э0VJ6@09K6·j:GiI1D7jb /Cu5*A`%N\;``;SqPSRbPHv?5O$55~Fu(b@@нF@1<"K,/3rm1'> U_$؋g;O@vZQ~!SڤtX_S* {9,oxH$е Q&J+L) I(kc2mg%LiΓah'} $Q: R(Vha O1Fbt:p'dӾ6xqI)=%HP2/ QdQORJj_I5A.wL|+`4?pF3c݄h KC+3(xiPgV9,=]gͅs8!Qd23}KQ~bT*R@  NF0^2%P]X .ii馢Y.\0ccW"ȰSnxA-P?t  B'_P̣CG*G^% Hɇ#P]rdkE%'7l{}f9-E`nD}߾m8rVQVj/S2 o{3|9>4`H0$p9T1DyB,F&^mFb LMM7 $ACmolkX㸖$!&JI2mkO )P'@79dbIe+WچF_RJ$?epJ|ϱE|M!zN"oWBWٔ`*G#^9 qޖJ`w( fy$@5!F&^ Dy߅6vG? a! ¤P/1@d9C/EUޏs9cocEN# L:gNQ93jY)*W)=WK7w`\ DrvX2   TI!i}$.$sLnu1Z:MkSjȵp='oz^h$Ϧ: <C9G*^ rK~2SQUl H}hw%IVxxqK WjGqv?q|/]U7K:4nʣWFxW5N6"$222Mum,'!nG kK<c5$QI'ls=Rffg$aO.ߗKB4pcUF@ z$_G g[@ؠM#`wWC:ᬅ R3~ Ņyfi. `kWwi2Oz8Z/1 7`|.C_~~Iu3_F W iڳK;ޑx8x}p/j",c9X}oxdt?lr ɡmjRXmlRELqkGchWY^f5`~v?)84cڑaHm9%' ɑ=R$/[TRtcn7=_}uT;WuКOҪVH Z4B;u #`0^4rRտAXjk?H,661pZN9b4AsHI#{ښ趴T-*&5y0NlǞ H0V0:`H]9,HbD57? }:#U:.1]A_ f;~'[f[ͥZÓ>,Y:PUk9{F${dH_[iV?3G?~]s\bܸ}, /u5\0UI[Y]:`$MR%KIe8X(A((<d/έ`tx#Qը -$wC66v Q>d?ϱ* a O!F E2U#H0s$(^uɀښ_Z_U. dz  b|IB?pF34g1%f^* K;]YSh2u0e-X[H gZCKP v uj#zϛ1mi 1-3jb9oߣVH 4tn% ~**x܂+5-͞ Mmfj]S Ŧd% |mX50e=1⛽"O}\ hLr\0#S5xR(G[kKπ.b^A>W#kY,DF0 mdf;gsY'Q0;#A'NJKh$@0$q˚|zΙ7Ct&ՙI  ~&|/l$ B!=pĸ9uٜjn E '|%Bi\;R( 8ԚϜJg?ϖ [RWM-/XbQtG "oАj(.LV,o8 G @?#o}[脏Q`It耹|Y}O@uE$? ȶ I2R4Fk(MX oBޣR\(7,*g^~7cj{~yVڪX_`!@@"xm (_FߍnY JEbѼ8Q~gbâhzXSfJ57b I뱂U:}9q쨙Rgl/ TDvB ~^O`׹G'h&-ͳC٢&m6l < )lQ+5剸TV z /1ywwS),c3L_"P?E0VHQ'wzmn|׌"̌ g_NQIF$@ F##@>ECzR]xazs '3:p$n,φ3CI@j0DW9ƍIu/xZM 2_~fnAA p|_}  7o [nŅH XrXp]Gj$ ȷ ]s %Hة482$ -3A9|'C`;} ]N XƑ/DӂEfKh6en;snߘ# a(C -4@P6 o] e69AEN$J@,' dUObC`ΡH`&D%5x?f;$I+z2_X ,!2'BKéAtRKQMԉf#ņbi9 ͪeIU%B,$v R~`[d<nD jgK #m&_@R Kހi-#,ui5M+珁PRT=O/N,oen(' I'7^$  7 f[ LM]cȱlR|qQݯ zIv_̥G6٥n7@?˓ݴ|S`h3yj*LvIv3eh$9#!ɶu(zM 04Ok/~jӾdM&neh$ nH-AOF%_RSQ]tv-6ޔ_o^LRo} S$=^P=Kfg۾A%IDATCˣF<%溥D+n _+IH 4b`AlrL&i2ذF+n_l_s L L@!nti3,ՑH`8Mӕ?`܈Z_q0>"PifZKɿC8_0SLXK}sC@dP{ PDa =ro;lL]H xA$i hK;FokVfw`.9 zpE`y;WF %< CV%N M=)F$%P?}D#F* `[@ IϢ_T)~~o(>J ڒ@0j79F$#1IK0O˩-@@-=şJ(V4 JZ0rߠ)C W6 H/%/ XKM^Ƚ}6''y- {O (% mn>b% _9N2 f:R]ӤOsY5NYH h})R! }}0NCmX5KH&i6-PRb.{6wF.6O1u =A$xVѷ$p.l'$@`V4 &oQHD?nK>\mQꡒ=*B@l (XW G|{!l \.BG31 m`d@ϡ5zdȂ,rH'4|aHo0`̽ۼ2dK^ LA3s$z<%nG]. I d pr(! x A*Aw}1H>F$ ;$ qZ3=N@<al$@@@9, Aob <9$ L#@4 IuXב GXN$*@w{,wqcм= DKhI}$`1x?Ap??l$@JP24!p AEa<<ş7h˛z0R!˱A 0&p,z1A$($ *Ho&eiqպGF{lu LDH@w@ o.XҦS^wa75~K$@> eH$@>iW0jE:djJjߔ;f.S[PLœCH@xL$Qd\Vyi|{ ]W6  DI@ xB@<7q6zB4Y47U{j O1vhIENDB`ic05ARGBFÀ..P zh LՏ33HW`@`O`Oی`O`O؇`O`Oӂ`Oڂ`O`OZOۈEڀ~Hށg R,܈@dՇW:J߂# ,ȘŃȕDŽƒɈĎɊɿǂ̷ VȷirƀȆÚ*v¼uN1mwBa^Ůǁy,s7':BaȿàX EZuȿ+mBa''[:jQd4LȾ'+ǬȰ°Ȩ'D'(dž'Gt'GmmĀœ' 7UmmoÓm' 5';dmm}jf' >0')Lkmhh' GjH('3]fj)' ?kma7''dm'53\mlR,o}d3&'6''Bhmgxdt)''FR,',Smtdx &KmgA''9nd} qnmm[1'cnmmkJfnmmnlט܃ْؕى؎׋ǀȿi{׆ӫ<̇aDSsqտف?I:LTsմl Xlϥ>TsѴ::mрM{duG_π:>׽ع́:Wlj:;׆:]DŽ:]Ԁ֩: Lmԩ: H:P}: TD:x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5@IDATxU DbD%b#f]`D1 kdQ `@STĈ "b(Afӊ8CUw=efn󫡧[α                                                                                                                                                                                                                                                     jW# ^ E@@ E k&.)n  @  @FwSCjo(}s6[O1E@<%! Pwj ^ǟRB<}eA@<(͇g *u}YI:ݧB@A   P X@4o^U3ŞkjT(Iq[VG@ @ wV#ԚgmSm 3M@@  @T#Ld;Fώ   g* T AoS^ :`ם DW@t-!@@Z`|}v >@@ "pI@ R$v,F}Q{T5Y/B@ P#\@` h"4GN~{D9:@ 0 `!_@sjj}xX@@8`c G@  +i~jקYVݤfdk@-@ LJ@*]1 ²9ݡB{@+@ Ǟ@[mZ4f˴;*;g    8D  V/5 I9S?ܤ67f{@!$8d ja@k)@gX) @,W֦]fAUv! x'@;KzB 0"V?j}TXd  @4(D Q7#v𠻠wB- P`@R[ @@#Pz1Hw臛Նn'@-@ Ǐ@<6^fy/*,   8 U@1R=UlH@ P'u@ hX?Dz;)* _@@ \u@ ۫[oR+̽jP@8PQ&G@24?^O>V̕xbSz J6}@@ y\ @g o`/;{zQ*O B@l '[@ 0WW0OȻ :&; G@ }|@` j{m?f&`g QYٙu  ?T@ wV`#Ԛ2hU4ݥB@~4R" @!@ Ǒ,@*2XF7yꦏڣ*KzA@L(dǶ si3`4e-BF @H(@& @VIo U6Qx;@HR@P . [*jy oR!`F3%A@&@ `p@2b37ͼ7zAv K|.@@  @x4?G?V5Y&e*M$ @("x+%xZOo{,>nRBf] S@<;Y#࿮zVH%d>S6QGK@_@G U6_;wCxUA[ @(D i R/5tLnZœ@V % /ѮU.MnVhP+ H @l4jW&i59j7 Q!`=  PH͋@r(~9 ]VK& 0; cF @,4Id;7z0y'@JP "H@#0z Pr/`<[y@`Cb-kT<$_J=y}*"! g q>X@ oЂ%0_VB@IB#@r/@ ǀ@6࿑zYMGzR!`}2 qL @4EᾦM&` Q! ] fo h~Nv9CnV!`v*. Q#J> @4Gvv?56 b_.C/!" o<'C@T4W;;X4]GUXfl @((4   T&"Dk/WU`8BEH_@vl tæd*0VD3@!C"()JkZGJoR!`F8'j@*Pk x$V=nRxD K옾@ b@b M_5 ,Up}*ȁ PHEu@࿥6;!MjCU` 1 @Gm~Gg& ($ eP(@2Z{r.`^*Ly$ @@c@45j: Q(Q2Q!`Q#@ P1&C@ U;.;fgdW`vO E5{C@ = 鹱 @)#v)iB sjCTX @ :s,ȩ*W4v@nnm1={E@b  @_UVUy R=UD@ |ẅ6_E ^.xJ r  ~@࿁6vxZXUOK A#D| @4Qaf_Y@|z 6, D@N) ^ ajÛ#)kOQ*I@ b}IH^@qڃjߒ5@`S*Lq~D@W 9   *G.FFd@ !j70; @,(0$ Kj ["@z]*䗱# O(j!Y!V-Da*'0Gݬ6DuuV Q#J> &oݰSR)Dc*"T$@"!GB,?DA (uSəwE a#G @*#v`UFxإOV!`^mX@ r H@vZ5 vבT~@C b ǪER9r*,Iq[VGȁK@ Y u:xN@ K;*;f_  f25/F&uQY);BMoTBȖ o|c@ } ֯~/lD3& ('{g e P('@hQ{27W@WK/, @  OO_@ (v B#H v V>aυ@RV~jU(*yBȂ, @< Aj!nQBC  @(p,DM@ɮ(GK=g)gBXǠt$+^Z&ɲY@8 R=Uȶl?@@/OU] `0/*@W^:G(z ?!(}T( |@K@4 gԺ:5DN2z]m^G;F.;Br 9@g iP[J|&S@s;.Egw:Db"@ &4@ WU:{fo @݃jwLIAt࿾^P;2d&oW{L5텎@ P%ȭ;(vm$TeKmx$d($9 A@x5P+^wW_3 r,7Z7*8vY`Ig̈3#e P(K@$4V4Y@*,w+"E hP!vpB#@ *@9  ihVdۦ9 dO`vu0& :{B` 0 `0 Q!@4?FScDh on:NY3|RG{=j~ @`^U$t6Bo`cuI࿚}Tt`;@({MBDE  |{MgzgC  P|DR@$+I!WwP_#Zz' N`"Em ! 0 GtDe^2B6j뵿O= %$D@o> '  @F):`r'^@< N@J)b< #l,`rّDZ@/!@y۝PvSy c׫0x@B4} Q@ v3j0;YDF@d% @oum]X@TX U70ӇHZ@Ta  z`dA| +"@64odes @Jߣj}TXqt8  @4?Z m:G@+m?*aC2[#@4ׯkU,Gǁ"*0[ߢ6Du@ ia&I%5e  P$=zcJ}@$($ j   *W FDD @Оz0%k{dG ) :$@4Md)! P] m*+s-@JP !@4ﮨ ^tD @ G~ wvFG@{YɚL@HZ`ּUm kފ@ byIph_C>vz8"&J@r&`TBE@ }x h\ٿ{|@Nvs   {(j͂1  2;[T |#.]#@o  @P.o8"@L(6As5@SW=Bﺥ'1E VZv L@TKm LBdQ@Y@H],  cu*oD P!4.Qϕ@Pt 3!!|@KX@֣jU*^5@@'wZ_EPȁ "%zڵqə<@Rx@V ^BD4(& jG[! v9jT`@l Pȶ8C o_SkSF@ L6AMh @D(D@APZ Il  'z, r !?@4b|XͮgA@ (d ># $ ho?WO;3@ȕ ZrE(oǖ P[@lsE+5A }| hvjmC@Ȧ$zds ["&^PS xCT!`JtS$3!@ Ǒ,ȩZrڽj4v KTMy}"@*6b (G@jzj痳O! @< } p H,+"E p7QP@r)0_;Um ksF P!@ GJa3VE _ޭ]֕-)q%%j?}u띫T\VvU?Wm[d_ HvzsJ۰2yzR!@&, Kʹ9Fp h"V+5Xz[ĭXn \A^jubo}/7K66C ABSA}KY/@( VZi  Z}r>w/m?G?[WLv6g6mZh(lBoP3Ƽ>c 1‹v}}LhV8 A`ƞ  bA ü²,]}=y)2@jg jYۺeDb?gtOo/ Iʪ(0"A9ā@4?]a RJ= )``O6}Uoi-NZ&/zE7 i} {pzqs Mq%+2A[2ꈍMg~4Sד]qqq5zݺu\DQe8`g 4۲x|>q{z .??˜9A!XoT!kfBt5q hozZ{vʎ…sK.PfIJ*K06`ƍ]&\ecҗ_OOH/#d*, Y섋@`(k&-{gWfÏ>q?L 0,K͚5tj|y5jTwv|jU_'ͺfreQWx ԮB@WÆ \-.[-wI;C<URPBJz.@wbv@84O$%(,,to5ƍ=>ѶxD;Ա~_,ϳf%fC2X.0*ki P֓)uCPjt W7~Ǎ~'wivݥv֮G״{}r9b Bu&G4Mhi@F2cc-%epÝ #;5ߥ.[!_YgPa[ǮB'*͞ݢ v AHR@P@4S;:j^ oxst:wOʕ+}u9'Tٳ纉tRq n qMRD=GEInjZ b}XI4^kT۹5y^Oz͝;/06qߡ?&[bWM|/tJZ M@ h|Im@JpXf镑z pGt~fgqy~2%Q](DȒ-jCTXqt@$(D0 h|Drr[Sk׮jZ˘v(`jtkWe͒\NG7ͼ3zS+\=nRhN:vQ]>CmSݩI1ECp1#uDmH'Jrd(A7uڏs][JjtW 3O?UT)mY"%`զejK2&@B*?Jݤ1zq$Za{_rAIj~ yDww$ojG zu zć@b=$?D5 PoowZݶ?tI@),bA-^ "o= h+3};@ vLl⹃/pqN%Wvgq  &`s,{ZC@({Ggw%=Am%O!0QƦھ\;bi ys5L6DH lո}Hm|cM!󑚝LKjevΞض6t!mX"-PU]ޛ]V-ْ\(DPes(ԸOX0"t2 &#V[5 npD5k+/;C8? @(վԘ(0ֿI@xP@Llvna@Zׯw?9}6jelx$pGQot9CO `A }x.#JvbTz{nV>I}My p @! E/m5R C_|銋cytSvnv;G7A2C/lv4'Me p@Y2^8!Q#Ey ?hEz}F|t]V+ uw6J6>z9XbBPƑ^(U@/؛]'[ԕxb-0mtK gR8mרqCw+.n]BWi?KS^]~'H=Z@ 8気je}}La<:B|=zqn^V; Q @(۳gu0{xfPp-*d.ч) St/<zJr߶6SOtC_YȍܸW{9@J쥯#(wYv:≓~ .{11 ~:Z?~yV NJtIO hzlzkvK?,@ eow`/Xu<&zi?Q^ȏ%# U\p!t{p lPݢ ԓ?S y N`u5N?_Pk]e.% E&iA}ς%`E<&|L"byIʕEnݭ7_*W.mU۝wrM]eM.^lmb'Ίb~[|?׏r0Wyu.X\vن]^3 NpSޗ;<;خRJP֓TxҠŏt)**tY8T_͛f͞2/:zwKl绀M>}zozT! :}(Xzmn]{н]nEg3R_:C 'ͫg&'va{m?~ ?r:vm߮LmiؽSxRO',ԨQY۪ٖn97{\7{V"A/~G~>0(WtYێPknܮ٧;k)QYd[b_.uK,s,q\PP"/;>jܨYLVOכ߿O٬jku[/Do{& Kv* 7~|c6]:HǵQÆa#}uv^lkmp׹S_uAϯ:.m=6'x8q$K춏ͷjh{ ,%_},?G ؜/]ש06hOn(Ɲ\@/*[*v[6Mb%~>SmF?(+Sv`ӦM-ڤqcWjwjk-$ ڜܹ_ܜ9|95:6k2oujްJNNG>];T7O?7O'ā8c˼+M4vG~h<R+|7 ?ir~r%#wܠB\þs/@ ǀB$Osj(CO9nD۰KIGnʠc@IDATeo}4-'y[̛L޽./oO}u6mvt;l.> k.C90ʼntsv>_ +#ܞ{t*wB?}ɸ$uYϟ.P]vsֹ g[︟~->)~ð 8}T_05b*]FS@/6xZhfX~V)oW}x]X[YDXwBcٔ쌉mnhGuÏӚ Se=vX-儲++_s#_:xS7i, =St Gಖ% vYxD쒁#ҀQoN|ߦ2z_O_P$+N.V\2>OvVCT#>ô^{? ~>hWn)~`_rnBF.\ו[[^qJH߻l5d1GVI[hn6;<;41W@63"geSv.6;#qyFv;س< eS[z$~4Ǯzަ3E%1Y 7ϩ1[ ͛7s=֧+*|2q_ <6l0ql&;=أ2h(OE_6|M 5kd^ֶ]t{fs,wTj^fs;m@E z{h֕`)˅$`g_v߫Px B{m~_SkGQ|纇'.[{9G6lbe;IJ.oa7$nMtKů,?h6kN}Fiv/q_跉z!ng{NTbA ZZv=3K Ћe-1tkm-6Kn){~^|nߺgvql"ݛ~|U}w'R`љ@0qtR ɭdgN\se.X+K/tjtW&O -ɿ}wea,2dhh2 'usg-<.l4sω ]'=St&/ԄS|_ΎsܗUV h+WvڶI\&` Ԯm wcs(\}_!8tjDAΫ *& _,=ʻGfwȁ$4~Tz&_/J܏OO y ̟$讇6mv0鯾aH8yr3{Ƽ %1<:zm[_sOlYZvRëWgs>e[;(I 1:ؤG QjW~B^ݺ"@8N a^G45]̌z?fg)_`fC^pWFϾQo-Al]w4"@GP~Hu9.vģڗ'If'VGQV t(Q {.AwO8.!s/'i0T&|@ժUݥ&Lt>>ȭ]x43 C_vN7Qn/kTA'bg& වݙK.pxWg^@L15kJn |0ǩG>QZ~iV(\l&l=Ov͚mYf/qOY9*%Mht? 7q/2-^p-l'uNb. dw?}m4Ì_]3c2@F|l& 7SJ1V/L9Vcڥ6 5a}қMf?M>~"&+*'͛^7m~^rӦMDŎ}KNAl@v@#3;iq C!c>g^eN("Ȳ(%zLY>[jdlQZݳϿ؏?u ,L).;Np7TTtVәo=>wյ7O?&O䂹X-)wv.Bf$Nv29nҟJJ֎ivM~G(@(G c=Ex*pBc"wڬ]?7SpH;Y'>!k˗ة x7{.z7ߏO>M;N4?&@Ԃ%`y)in+aVZܴ~Kb |((W\>pXLUTI|zr ly]R~=wܱ]Ď}*g>\̞hlGz;z qG*Ѫe ݑ7jԾ6xb%_vmM6}p @Zlݨpe3fϷBEV&?=r' h{V8]=HMhQoOQ\\~^Q5N~|O>W1`94j>DknS@J\Q]yݢ-]~$ɫ| l4wO1i@y?Ǚaa=mbn6v[)ݳ9K ǟO4N;wswk|/+YvnEBîfA H{4 pIJfYbe 1`8/Qr}a\hoW+g اyilzh,vG0#jJ*ݖm[/rSux269A3îKmM+#M51G|"@v۶vgL:H*+y!+W])5 yv@4F5hYg7ߺ+ 6y&?>ܕ<_}=YKeYF/ϫ=;MڈpӜŀ;qUV^dF61e*u F|V3fzM%IDnVrwÓ'#51{sڵgV|vwc+ _q>}SN{c]:iu?NNY7\,w0=пeW^?oGwU׻ǟ+ t@6;%I1v+i¶JSB{88 4vV54M6LњniIVmhc?f) c92mZrSOt}nm]V \Y~<=7_z5I*cF9Hl&n,[֜,Y&ɂww]~#ujFykBiygcuxu%%%[tywϮnuz !P7{)]ošj3]aa k~I_ժ7st|0κ$2t9.|p*esO}' k5jvh]7Lv֋@v͚$Xb\Jhd^z=bgx魭Z(Cm[ [ ݎq6W e ̚5= ׳׭ ^UyX@c53fxu;X PafWV{X=;`De ?iQY1Xkf-VZǧ'anǺ%qV@~=?-^lΏk G JR4_Yd; p @l}"VdD+@_ϘSB|Ӧ؞jM)Vi'6;Ƶkmժn/8n;cw˗p[mլY# r @\dmYn}lSp @gKIho7vxJN>kpdl3?K'DnʷRkѢ;TaR.;DW BXP`;^7^+*=T@TX\Ͽk&`(E;@ mh:;ll9f>.o3|mTʛs& PEuըOwX̗Qov۽ˀlN@ YUsϚ3\da=ֻ"H h࿙ڕJFLm2wiooo;qoyޭY&Qdw^S{trm6\n:N*3 e XQ-&Ox]hOsƿ?7d(@ C@6O]@&{H cřբEyi}?}L'vO^'%A״3=k⌀s:,%0wJ 0J)ˈp˗s2ߴy'{ɬu{z^'q4T`m̧ q>/WP  r3g/`e}ς|wWjwW<s6Hʲ 6<*Mnw9ovgzQ_4it^}.mL˯q}e  5M/^::onbpœ"0Ǯ }&T)v3h,Mc4-ѭ]6Zmx,Vm]ܕ=xSOtͶlɲ\ D, ]y5%knd4 A;"GNJ&+B7nN~\#K/$;ᅳ0sz{+|͔vTvm׽۱)mխwwyW%EC. @V^Sµk׵^vdd A>:!MSX58Pmmrڽ|kLI K9ԓN<ժU3;l.+.uQîbmNfAh.1k~sW4ih 6[1V$EJNs\'篎|ggרQtҪU wAI,֭RqDʔow&|+M2$D\|a"/!D&~T?:5xU[" ԭ[ǭ[-% ,L|绁z`5]5 o#\] ^[6m:uu=0:+,^4te ̞=`}娮9k&G2z(\6w,Txx>;͈3{=\niZ-p1]݄Ͽpv }~By+a/Vf,{﵇qS$ڷoh{ /t+V'6@٧G9MrC ._pqJ;cE')ϱ \ﭠl?;: r\)5sN>} ?&&;IJ Tҙڶq{{ =qv7zꖾ^w?H DH ,Xtv%A=2Ks+j*@` ʢ"g(,6_ӺS0,6QuK.K)\NgfF`6s5Z.hviK,UAi7;@8}Fb[Ix,\# < Xd=툕/óhoEj6yȩɚE/rrW;=}~{;/{ۦx9M.g]⏀vqD;S܌?I_}&M͙?;׬ < 6[ͷ~$'`Ys-\Y*ԃe0 p @Vc࿎B?ǂYjժ!}n5h@y{ҫ)x';|+l]kw\3Om'NիWsū8#G,Vg^?G9?.kZ;|G퀬!@}l;CFn=wO4ju7T+``I ?u5X@ הY'( /V4?")Gf9ѹEV&7|8wO=nڵ)pam6+δi;㴓=w{;n]6ݽ e8]sEVjmX6@ p@Gp~7W28Q  tAvr>" ָ٩AYԧ|3%prݎIiVΝjsnŊדݤ/v'u;,y%ǸcZ< ,^?EZ\327\7PRo1эOB}Ufd=OS]N>SY'PNmJqe箻rw!:'K0^{-|y0! b$prM!`Tɓjͭ[t'Ҏ>otqF)]s){C  Z8jL' 9ϫ5L 7JWA8ܳ\5 >.2WS{}tom.fYhР;== zv%q,k'~kGo띛;qђe+o0d7 ro[(eeAy^z5ue!vanҸkղEZg3ݳK cPٻ89z߭4z !B-鈢X("REno@zU("\D 5BHf{mf?g ٝٝg)zkgg<>͜yG=KWWO|1zdɼG\peG`ԾV6oLO3$;Q`T;zj?,2@E2 $ .T<_W):C@/~sWohl2*_Ͽ=;} /=}e?IW]uE|~x2|p$"_ccϗ-^QяP8,{.v*%~'NCZZd񢅩˔@@m{;*m]@(uT㟪ӄJWDZ AXX@)wn}XY'%˯)7V=5.%IuCG?M3gw3_/^}L\ 9ܳH$*-;KJ% B뇠`zĤT?iZdtLʧ*~=xA$#3꫗oJ4y6ы.]⯾ǤsMק})~;PA2@~~3ݩSQY лwAljj,)a"`~lt5uaN.^TyvXʑW\Ox3fŋjHb0I/~ӏLk(ap|['$o,2w]%C::M~A`jPD]B6S4g!`њ+c^PG###߻V!utvk3(z6$u |7K#޴0 'П姞ӟ@?%&MM- _?(-VU + [j.ߚr)L)p챋/M%?jU9kI2:ȄOAnwT0$:F\Cw؝|Ҳxg?~L֞o\AAB {ݧWeǴr0q"4?SS=OE~䁀rۡ(Q+ )KZ<\͖6mjg z;]|?>Lk)`S[,+"`&AttH5SKH2R=P=ҿa8cU+ee"ÂN^ŗ^M:Ɣ ]K%]N0nFiԉԆ1 `)Wߐ,3"ɊYx׋ݣBYuF8sec߿_=UvdҒ㎕O_x^2XݡQF#O@ G<]<r %S8Sp^7t`LJ(:lVݪ'ÖEcupQ |k堃ESšsr\h[oԣ*Uw1j3xyg-+.T զgO1iy|EbJ1> GGElP(3gƇ ֶi_WLz4E>_fN}RmC$莀:SNwn3唔s,m0I vb`;6fzBqmo% 6+)A 5gqw٩,ù/yimy; H$3g]9:?M(Sg.@z.YtIK!ߟ:aP8JUEt) ŠfN5Ft, ;;00KوT |dΜ٩6#长oP\}v8L,"`[!{=W/yV0b4T xCwz{WEM}/GK{+Y.nNQj-<](rAAx) :KK礿^~wI8U@!ۿ)ҟ׬~RRZ&U}7> eeL$9W`qͷm p'ز\ D6=20LGof :Q N!yU N8cDBzk EPbY^Jr@эj is47'hY:S,9ֲԝ$*V>N%W8 =OV]jʪBPrG \~ecla; mDYY^4d㏓ ?7SL}Cw`kvJK[6٩HFN@$@j;ɲR~2I~O$/J G&K/&zihhXVd[nLK"7mDi/ ᧅN>Dc D# '_E!< 7[xX / e$"h/ڢ^O^yˢOş,^0C-wK/>Z +'-pW.M3:-? 1!`n7wƢ#1V7Ṱ.@k0MA }\Y$"p׮#<ݟǶIi֬rݵ_K+V!E 9SsΒ;?r![d,6J?8uIy7Ea&!`w<@z#xUɎܹ3]mKkJW3OQ@/\) pjο{ltlQ[ btXnltTbw~xC 1F ,;a|s1{yr%:T;뤢:Uّ#z@v8sӗۥ87\+KUUӊvXܷnjJ\pJ"iQP8 O@_\Z$pJ,K |붛d/+m; \ٜ/ޜU])+]v圳?Kq 2" G%Q @BGrD ˯!>466Or4o#`~C>XnZdَ$K|MǟTTV'{*[H:=)  !wG0e:\ 3j{{<ȏ/I ". ؤ"9qRb2-\pʔ?sٽgo$ mLC9{:HQ c);.eʴsdx}|rǝI,π]η)z<;ٳgׯE1 ϟ❆]3#XͿxnn?|O<@qU P[u|Gt83^aGOݛx +r5_9sf..S[Q-7l6[h3E5kxvNɑǿr%(?,4^K!<:W+S{ʷֈFBj/^h?G^ L/%y7,]{eh>?~|h4OtoГ| >)@'Mx%hT^c}ì.9=j߼ %'isز(H^`MYE5׮B;jwR~~|mgnqa3Yۢ瓓!P:m^~M;g?sic$0*02V_ jS` h/DfЫsUp衇X%\Sǩ'y\o_ZH$*-. $HjSyHxsHY`.!~a*_Γ4}jJY!My.HD|;͘?085'P(dj%CitKT !@H9W@,?Z-wg;@NI]m7uKS.絾x$G@O+{J{{y'%+|4O'zDa>9;v}XR% y3Ƞަ量?)xyULKO P0c~N>i+\.w|N1GGǤO$0@_@g)Ts>iL_o$Uu6[.?R.!O?2O~+z;oZ;oF9 JrYo+ڞ &?ZoXYU-gq#gxzv؟1_HD ,wONE)ȣ4@IDATG6n.}ŋS@AA̝;'>{L=t9aٸik|>S7~G R2΀*Dw쯥\;P}[SV^)DŽ|tЈcsϲRȶ5ۺz%ڢ<}?XGKJ1P(${٪Va[d;_H^} Ps ?GNXz>zEMS?fΜd.o۸S-s϶[L[vuCd)hii|Lׯ軱$2!pnyHMMj$̍_"sۊvrbRpiUsb1ӻU"Uu2gl3hh z׽e4ejN</0[ygDw9O<%{SvJGO-Gإ( d #+Ti٧D-/[ 5fLnL"[55Lrdj =bjrL.-mr^#`Ѣ~ c*Ƹ%%eFo;tg)̸_RZ&Վ9 M$5k;@?K{L_ymF3U4ca49ݚzc=Kt䨅HC@7[Iݷ[nҍtԉ;n7̏o5;PBYY. G?ۥ{"\(} Z(=JBR K:1?~jQbUW'̔V7q[-lEt8#\=Wވ1ҋ.Yrs1(yZ2?zSO9m 6}}zg!G ,/tP|,YG!w }7shZ :P.g 4/6mhjuYut14[}^U?\ta| Q󎔹s|σ d`țf0-3X8$Wyn/\բ 0Z`dd$> ˘zT|?e1:07N!W[y^V'p攤l)0jAkzEZ[7a?{QZ=9|J?FУ9LHT?QO<?dP=C?W AӮ`溟={;#o!'yڈ?O{uGqf.tc)zȿnVo!X qh7n{J曮4⋝%)az~<ȏ ;w7Dqqx\Ε>*i@DܽFYumgGIа̧"tgćzd3ޠnW%鯍p׮`Σcj>̹fi4REF |yٲHuMWm'!`vePssS쫯"Y*/׻]2Iw 9W 鎁5Q-MfϞ%O=9?u ' bj^ =$Y j媯^.W\%L"_*5?LJJߺ%aꎁt# hiniPf)Oaf3eK@^Q`)&+K Dԓ6$֯CJ`g+h|[7˲t%u ߾E~)a8Ejq R2 Hs̎/x/G tٚ[Nt5>*BLؙkwIE VtIBvs~,=OT[0oz}~ϽDw\ίYfYܹsU#/ |ud'jH@߀GzgjE  `:!"b1ӪR}|Kw[00M(GTi|^K=r醟[{*)/?OS9Ry1O10YtTǁ^@?§zZ^ ''GrC?WܿY*YACU#FAh4r)L)eʨj.Ke2oAw>G`KaQ|8oҿ?駝:{(*!aZVm|]Ȥr RĚFۯ6c#&eru׈kCSy&+g>}SEe?I8\p5֫ (N(W04q`[%%1@ ߬xQzqW "" [dZnWY:!! K?Y8G x/|O&}-.򵫮!jjozoӖy@"jm^?IL&Ʉ>֪ a*&Uѝ$@@ށa4"kD `J#d{!xk]/wu ɳGR @"Y!0&Bp^𩧟 @@ }2M'E  +"YStoTU5W_)~ɱfA@2&7$@#AH$"/؜H4 XM`d$&no#^'@@ wʃH^X@@p@$:"-n G  1qo,wyo" %Bሴt$:H DtL{@`g~e #yyM|N@@ !q;,"@E*00@Eed5222b @ s~\Htx& \)߿ax@@coŤl `Q:,Zq{#@ R&@kq@`*tLEs@`[ RX"U @ mj%;v[ʃ eڤ,DsZ!ǢG@<;! A%R*랇kD"QI\ LYK-;(9S΃@t .iCbX|yP$@"a_vV]D9@tؼ)fp{GSy,a ShnVt.'! S\ o)}}a tgb#VmlZ?;VJGqt8)0/C<.@HPYFDzh'a `.:UD_yCaQ:), `11)j\EN _@ w? {3D@`bnϟ@EL.@+p@_ɟSO?+CN)6D0@XmcI f0yL.ɍ8(kwI|뮽JpŒM?e >`H:dfA>߬[wDmBW~ --m-'C0'͝7oLA)q G@7{xg@P݅!! wߠu2?\*@@Z$+W]~wDOп@0JWÒLY2'@@2$!044_ '?}F$@R-%ޠ/'Y ` 6MQ  k嚫Kt _8@ j(,lք& `eFX D"y7&*Pl@T 4ʏ|@ `֚!.TSzq͊Lz<  ^WAr/ @tظr)N_6l_$x':)# XLJ*J3RY D 0_<ۖ!L.^5?o96XRX$wylZ"e nx$S`|^E |~yjDK !8CK<5N)@`"N{ `;ںz=D+B@uCD1 #VnظEW$027NJY@ tR@`P~EyǥӲ p@pDN% tLJ $&GWސp8줢SV@^@4-[i M\#0::*~W{eͻ8"JSk0߁O@ i:&pᥗ ]N)6D,#; }ς4E Q~.Vhkm|T~W~#V@ voЫVϵ}Y)  *:R%I> `kȈl\ACM عep Z:KN6_e^Wć\A4 `rYۗ$9k2 GLx [%++[=U0JAn4 s @kGZW(266fR"@z?'!LMSs,@ jYy UI ֒5ߟ&WpNiʉ ŲNFbjn @ eQKj_H,@+#@4yKM M]8X HyMZo H$'@@l,*K% ! 0E/ Ս4i x0 !hrK_N?xYd!UOӓ@YCSUpJ,+02?q.%GН]=ǂIq(  1q 0uu'MeWYŬH  v'9 ` 8HL@/X&m٧( ؉8DCuJN6R2 _ sIp@0-;ʆ=js!(9 @Ee$6z)0B#TDOV-ԗѱIm@{%;!aJfLA, (XlTJ*d͆"rT), S% j?VӀKtIs@`?CݴCTI$QG@/Am7>$ XD [ZL/BSJp^ ]f8ȴ#2]\G Hrypx}) `}7 5ϝ&%@+ `Z#f@_ZMk$6:jR@@4wamSB0fB Yu~H\}+nנZ/Ϻ r@tؠ)[˺-hw#,hڦtOG}V]JV`@"cںW>u d|:Pp@]sJv6SkDv௱k!"j@JywNmW> kXlLS(JX\W #3}z>ڱ:S@0ؘV5 7g 8Y'>eGK IEm6V@L ɒJ '@x*XHݲugCa EN `'htDV7̂; `@[U'A' \}r)K0ʎ@T7vO;C`@bX@߁QZ-k7PnyM)!]􂤵͝?.E mmR0p@బP,{*\1'SPv0Pw`HZ:\7И@T JMBL$W⮮oQJgO"#@r;$yyv(e@!@#B"l,*K%@ 4uа_rsoSEө͵@ w~lB `]pi,P.ؘdgsH Lr;)58T@V޸]=U 0Uf: y @ppy@ CygvUV#ёL5@BzMҪFa𨅪P@O ^@!6ɪw BSJHZ IIe+'-  0_ V`(,[v E{\ -Feou,(0wD  1q `>YPցc/0%D !4'TM@ZtX0T :YHz #y<>k @ i2N@/ݴCTLBԺ wNSRpK:)* @CKttdyɞ `15hp'yy|EX. #b @pD w{ 8#`sn%7'%x spnSr@ )w6)ihRr0[Fm  G%;)C'_q6 (Q/noQeUYƲ$++ˮE\  @_m%E+$a9IIe|T! i/~Z `O.Oz,Y4ߞTP`$SydfA KG@': @B5xOy {} A 9ړ2 I:2ϵ@ e"[U/ڨj)|TյrFuJQ@dHFc@& [Jcy+04쓆.)1#j 4UA  }|߶[,`(lQ,*^o6 @*X0 0@kGtSaqxcڻ{e㗼<+M `:"B@(ve!x&%oPrrr:" @d IaYXTH TM‘Jidؘ XJKU"_[vZ0DjTtYL1N'u "`+"L dcQl^*@O [$';J*$/7/9:a=^@@,c @]nv'/˖,n?9uzj? uGB᰺$' #XkČH@7Zvʚ?Q( E"4 ʸƿd `/#$(08w6m]e5I,CjV׷q_^ z? S\{ĎL@_mlN}ډp6+!A zkN̘ڌC}SO$@z ? `C`(,[v E{D%!'zOfM^I@OhĒL@t@`>YPetoC}?9uvKS[I$@.tإ&) `SvIeP$C6-%B qNCI@Ck]JF @j@d㓵v*D HVHdge9FZilWoї"@ #td"LUCV[(-S͂@YudeͨʋbRYר#6d\E2^ @(]^nɞXJ@ߕ`XϨӣkģ#!vεK@ /yi)FFbRZ٠+pbRfHyM8p. \@`ᯇF~H\j[4v"RV$3 hU> ףH pB-SF@_m%E+$̗yԸU 6V+u jQB <\A4 hj뒎^ԩ'q VZ4I9=C^iUgι\5ɘZ_8INmʊ8D JarHۣݽOQ +M4MX7 `1W@ȐPV/UH`&(2@3Ak얦Τ@.c  IEmtȹ,jv[gsI2Ó8CHN 2 9:a? Ujؿh!!|T7@ !XT"rСƿCƿd`@R,nw~lB LSHGw0߰@oԷCB_* zkebW@PrK~~t \RJ#B|@؏W޸]vs d>eev%흉q ptSxI8S9Mmj]Z(e"w;HN_Cٓ' `KGeR(0R@,ܰN[nj$ۊmٱW6 hlu-A3::*5 0 dS{+BFQ.+aܦʾ/>YFGYlTc`V5JvvI_#T5~D t L `o)޼A*ݾ K>F^l(ށ_牳]=j|gCXH$*5 Y#uK@ MzJ@KclSz]=i*1'k7%U&$ E"KԝE0PHj$d l,@+!@z(K(gj -R-ޝ@zF6,{~o0m18Cg3D4 57H`3}p8"v{[wt8\?M_j:o_Y(##li 3Y#CpHESLH@L}Q([6g9zzmS%愓+78,.)j? j-%L 4:V*@wp*^ QVW$.)h]u.Wt$?/ϨK8>71@ tR@q"z:@wEO 9GV*_e=EdOrssQ K Z:RIn ~jk@^(0`~lFS[W|NfZ~%JN6_Ja$@ WMP@om:ii1Ohe76{*#>;1eP+ԲYYY)s: z? @:q%W@`BX,&uRe ewB,vUӭI]ҪaȿQ52 ҿ^ `ْ3 0[7IUYDI{N^ZHi)t'MIeȟafXa5:^~!@tؼ)XC9H`wg5&ʔAYmlY&P8%yI"SnoU,(H]@0u `Ƹ+ @$=dwqOhU g,h ӊ9ƿQUUd֋^ :U@{EjD/Er@4:";Jej6i)=~mο30䑊FsI  }\ HX@7jhzK<@బP,{*he:{%33pug\7 5tp:)%LU  }^ٹmTh$[<^u%>-%5W:zwPqI}KS]lT%@h@]muûPg[CT\"KE?''-znNqqxpdV m3@=;N> =gnrڻ/t,[P] E_ئdgs_Ĉ#Zۤw`Ј@ KC@35jd4ZftĠK]^+k6KZ'f5=Np~"Yo ^@2#@@fܹ* 0-1Vu'zskoHSwK+$'SȈJA|ϰU'Tw(bE-@ 0X/Դ^W$"UCwJ"jhitˌ|ܝ_j[" @tj @0Ewv #>}Q!+մnm@ݽ<r'K-풆vX@ T!"puw lknKt1-t~8m彭sjm$7'BfP: gw2Yƈ.@?#0䮩([6g9⎩xUО{ls65fTcg]O3mjnwٓ' Ah,"fЍ ;tznvYu~H\CΩItɒ,;3ceӝHUM700 g!wt @rަmPB!تs]R 7bӰA<^.A  ` .Y#fBB戛~+H`ck-օ[ 3s;koQ-@X@@omցc#nj1ˎ[,8 ,*@E+@L t Jg{kCiCD6~nt%7:z&ɖ'r. `R\EX #*K 83dS!nJ'/˖,4μnIf"dG V՝Z4@^nsfϚ@EL,W!VklSk5F/*68u}wyXO;}3 ӽj?}URJyM=X fOC@t~Z$Pm{w 9G`p+oo1@'nR&fr;_/mH4Cx/g͌7gB K B)۳Sa爛Ύ=H`[k3[fΠ5eIN U7I:HI|ˎI@ `Z"F@=v '".6dYlr0-;G&qQwOM=qI IS[I zrZ_OB"$@L(0Wv KHt-e`e]Nԣ*@G= @~Wvn"%X|_/0+N|9ĥ2{}@,j =ۤ#N^.G/XhBR*G yR,1LZ%G@`. `Q=@#V& T|R Xq8[g?Gl+ئkIXI+uj1+XU kmF*"#e"X@d԰iK@OW 9#9cȈ@kGt2rm]%ZċdLҌsa@t ~]\(e{vB,A )}j >V| $ `{s䄓N KVVL!mj!5`q 狾OBHNyq4 FQ*+硱eE#jʺF fvv,;n8OTx @ KC޲m^/uUc@+T-cDR^S/ߖKerrrlj^ 05:Y?{YvnUT9gtM =A(J%ٴLqWWɛ RZ("ih+Ң8$G3pa39 Mc @իWwn8w8w$@>&O:9c]\v+_LON? (r:R4q=*z }cM P{Ϝ{Nj|LC___}Uw^͍uo p55f$j;`\(msh MGIM >CC\J|$|{yz0YOKrG=ƛ?yMB $$@d$@$P\Z&zZZ;ET1K ڥ KߐsB]I`zv^63O@hLZ?)% Y$ K i8"= d6uUv(D\]R;"S5\,B$@1o՘Q F 7/p%+eQsg) 8km L$`Ș _Uyt4Za" H. HH-յr&5@ ԀL$+dtb**.W_])f @* pSU*m  1XSW/W.%31873mmhhjC`t; i_ʲ . @B !|L$@(,.G8'm$0#J,Jr%y+mQ'srz/Bv47 @($JIH FGnS[9WXJ`eiIr+;[[n5v@$%ujz7ˌ 9,%EfNkIHP 8M$`.\9i% ;Zn엗21:B"$ ruY[ p_qL$@$@ gB$@w3O=+MwD67wMY[[_f/y xLrMrs/Ȼ$@$@I%@ 8 G o:'<W]G`vzJ^WK4h?ng6G#'I(cRm"d5 MmtH$@#PPX$B8vBtO,vE^}k2?;c@hyfjO?Exgde p $#e$@$`܊ IyeFX5VWW^ߐH5vѐ!qFr`kŅV HL!@$@!ΖzT@֯&0:'IAQL И 6fPxt}PG`T,An% ;Vh=qc- p@~@>c=9\7@)LFrG4?cGKT_wIJ`;γiXH&o$Yu{dko}S.ln&u6lqZ,%iϵL5KIaO|'p''C"6`0$'O=$>zFsr=Xn|t 828. 8ݲR cV+p~{%$@m58;TbYs09sEKIH6%ergݢK˙$ڒ+΋p9Z*W$ʘ nv(7- ,$@#D|G]g J*H*N6F$@8GOKQIXWkr%٦Ùt68(\^Nl+!M?A߅3(*$  r~\J|4dG `E+_LON$iə9; i|kN-a"0",a8_0rl[XHIAΞ{Ni |ۯln\'02>)=CB9D$`1X8&ֶѱ" 8~֊]d61&V !u`*Fept܁L:EO(a"0@,> qPH+ { hL@cL] YZ\0w .\^\i[j= x|z" @Nncg@0Uݰ]4-|2=^[m; ` UTWspA' w_fx=b ?ؾP\s$@$Z{b;M5޷_5XOZ6#cڟmhkʊ *܂;i8ox0/<̨KA%A3HHr >| &09>&j^omEq_uRoliw"-x[V4: 8N=pWZ*;t? 1ys҆32|LGQv邼7di1/6p$8ck[''?W[BA󶶾W^'T?/_<пsϑ @ZɦvdZ`!οuMqT23:{EW0O Ȓcm-ڿ I`yuMv.&pep~ٝ$ipIHɑSQM߶٧ޚoW&ƤINA+rU$e`)h$;›f )hM/.ILn# 8L` ,r_vC|82 @EUKO)si%NPUTJ$;;'~P|essh[sW_߫N[GDXA?ew>%@a dfe}R\8/)S{=*pnfZZ:HCS¶xԌ:`0V [k7{Y"0oFB2 A[EIHRKH})8vB2<; lW.ɷ`q>3ԇFǥoh@}YIim6^+,K6]vP8 8J@/ohn3瞕%wt6K/Un6׽S 3(ބ~pLڛD^'KdtB_2qgv{| @(-?K$@$qysRPThB"fd "@[.^L D?V{Dy ^O5jl "$@$@!.<)GN/zreu}A8`}ffoo°y m/^9îտ @O1H$@"ˠ&J._roػ4@ KHNv(I-5k49t_rOm']\K$@$@FCrCg$'7(i, B ;g,(3$zx9"h1۶CjC$@$%ergCa4 x@>Dm &{f*Ln#? 8L` 0q_vG ȐΣRU['WpM}$'05cG`tbJFUf-H#pX3M!YRÕ @n^L&Ƒ& gw$@$@'PYS+}  Z+@koPWN`>F,"X~80ːpf FzY\YYr'%?\`@hQ?N?YӽY.]nn:vPp, ܐs]^Wefj(i ǟ%#A&+" MXdFh&H ($'#5yWw-؋d.C&=+e?eNĔtb" pN@ґA o~>9Ï="Pᣡn!Q5ڿFd DB_rgvH) )&IG Ջߗ!9z~/(ZK˥ R:=riv[g\yό1kpgƒ>(EHH ^ 򭗾!]/6D&s 1mNX -Oƺj: }ߟY5_Fg'uHg6 M@X `[WejbxVs<p:$mMRSQ~pa'W4? ovI)%@ x8 ll׿eu?0~56˙sIEuRG ugG`3%u*}/{Y+Aaup%p$(l'f7:Lf |Xf&IL$K@WmkܜK\D&H߂i]cxc+>zg{fo$}`P"q T0 1 \X(!F ImC :,Ϲ<#).)pQx@` ':Z$7G}WV-k˜)yxp$p 2pDOǑ 0@2vU`tho"RT\"3kxiz[IYTTUҒpG|3% ';UBнWo{۬ͷjR9EsH %gJQ7߀ XT+H$N #Cْ޽O P]W/٘˅YL+geqW~S3sr6){N KLSI !gFeȟ,~ i% @2vT&D,,.piՁ4CPj!K{/EakW~G&oH+(9o7p= Oq'0CQA7םF<=m%` GEE  +ǖ"o_@lpd QW%(d"7 U  4{"@EǐŊH o 873-zb@~[E<9q[\+H!8$Pv& 5PK);y٘븵 ̾v7[}wI{7O߁0 1^d Ho3%@*]" uE..-%cާn P'VVydShTW#uVqw@f罱M u+z18Ki@ PH#tw @/@lѸm'R"N =w^W0K i@=:Pnoo;$ZnN{ST1 뽲b գ) p;wy $@IK֑!ry`{$%Nkn Xp$%BNMCD#[`@dI@rik"qvG^uMWN˽\58<^txW(j,D!$Pw>3Gƻ>%w}m }zZC :ƴOQVY%%eï H8?ϯS7^PL ?N4p/|N>H(~5"6>;[ 8-( 5?;#c 2d. X[(zj &A9*9>li|ieZ^L\=[-& (Q'>zL 䫏{E?HYU)*F@8Lf=:U5uGAzg_t,3v ';$'z|ޫ’\mjڙ]eZHH M( B on ȇ!2vH$N`w\+KKֶ {ՙd2@VVTI^8f@)sv,r, lw[OIwWPp za8/9+;#CP0di&DM/A2PsBw APzL#H`]LЭ M) $F*Hk3qUldbRFus(nJ`98]g "0 @=,2E0q1"lQGS 0"3I@箴B**677H VQ(/-P GQ.Sp՜^5OpU4\F&@A~B`k3rm}$lnvǧgOKn^uu~G ʖ dd~~Vnxp iv?.ȲH&gfm`f5 %o?h N͂YafG"V@ڒq+ˢ2$0Yx;סXec}͚SǍHanj"vO-A% ÊwW$UW&`⬹f]x#ȌD)!f`w+VL .?33V…E8'Ѩle~r"K{sT4M#"h뽢1QH),{cq?YN!DB)wI L YB Tc2@n^$Px!H` [8,%>i{3K]=XAph9)J_g>0hz Y0$y 80E%=wvɘsWRV.U( 5X{ntG67#6%SH W/|Zd"xh @~Bp+ F4` Kvn(p:?# ABX1ô. V6 k (8^8tgvH!@#a@XF`"H{H.Sם[A#L]*-aBrZ1LLYGLoؓ0c=#( X7 " dm!x xA1S2=17ɅXN%> n*8,@ɼlqR(F#Mu!I Qpd98W鍝 Pix |6 ?Lo#`|ds:20V@ `2! ,.-ñ5֖5)D:pԟn`GohTF&,ӝ(I$-> 8-A)ӉOװ!h7 |6T"&0]K 26<$l^槁 ;' ۮ@mU4dZ̬&<_@JkhpH Y($$ۉDUCx C.&4H29>f3_X\,YY G- m[Xݡ)Zh:Lh? A&@`o6 k.cJpN"@ ]ٯE"@?D=K42I q3/ VW$pZ6]P \L@UրyQ1 )U.oǒ2vYc? P؟ͻz#3"$@JyQ!{ 魛\Hbs32 l qlФX dHmC 07gouSQ.@FakcG`ѥY[߰׀jQH A8;Io Xt~^ɟE}RWGcH&pXV:s=WS Gs[@2` ]qyt)M- xm͒Kӯo#%iwɬW_])uL PףHRH+RMO+V| u[a H-"N `(d>7@V յo NCdrUrsxݧPb'ڧ&4ܧ o $$d3%`^@ˏ 'F UPb;puKܬK$t5Km}D[@% uC@O1GMrҷ([/k :l9    g&Y6A  n}m }zZCwo0RJ+!KdS_ƥ>%C:"I׍4S|NȽUz_=o]$@)'@ A l# !3h56Y!@Mz0بEϜg2@o5H`&HC`aOvI[sU|j \Gsplg5 [&8VsDyFWGs H"n "262$kkRT\"|{; # 1յu5Y[YI%Qj/=}C2:1ikz&-A-}?f6+ $DNA/B_NOp@OFm@ svoN&\ʒZ/(VDSήP[U!5&`t:Oa?SK$~zV_lƲ x/Ϊ`K3x|0n"gbAĦ''dnfA{Sj-@U$3W 4Sj*˱翖fvkVNqHD@0 @ Կf"3 trв}P[228`K`fn-sWZ^!GAnnl$xX(=O'XW-|?j!3~A!@ =k @A~Bl3rggS$p w!Λe؎=Ap#5  m* qX6dfD.]70nejkR3?35>'>8Ͽ #Z/cJ?=;]3GF:u$&._N;Nmj}"^nn|_oq\֖Y @Ohi d6j'lf%  `e$]72tN {l sac@{PK TAXg%jùWo]$@ @@#M"@!|mBfdCq{O.YB5u[GmCl!sqٴN"=rw@4S|8D?OqF 8/r_ LH >֧5H`05=U?lѡAq&4-hrel0޸ǛW}d 쐜Kۧqe~G$2#e @~B:c) M5\+P`ZfKNПzAlP@G_^3#0<>!c*V8/WʢdQzجj$@dv?!5Xt PHE?ybloE LfиߡA"֜5;{zЈN7x &22qn>?a> 8DnC"@D"}OHK\O@jhueEFE/(,#̎PTR s[ ic xA_0ؼUK{Sv&[Z? VmV"pGq3æbp? #udfdzb\ 1|h\+H!8V=@S}B`G@]闹Mj>{xy*zV^^8[`E G Pp7;sS> FGL?dCD e6ԱRgVVpښe^;K.wʪ|^KW&#jOpm$@#gn%qr?Vi;òhLCqTy& hǮIc>ؚԍ͈\M[\IEz)+f(Ϫ$@i"@ M٭{ @x}ݽVҲtr}ʙ&1VcS1kp$eddΖ&) GQ}p?e $H'nH'}JЏmqidrg*X{u $0=^5c(;[|Qc"LBpc-ϋ"K;?ov/H<tl̛3ZQ!5;@7QDnnfZ$0?\'2'}ư P\c@(P?{,zߺ/H$@iN0 @#"k@zNwq??9:+[O- (ĎmbzVzn;I!.N:*0"0ZOڬD$*\54ƍ }MzZ^\! ֊Pm>&d`d,,u,eKuڬD$:\7%4ȭ #B d=5ɇ(kҷ-sRX\,Ys m щolmÇŢ&a8|o/ItLA8C4H:dVp|!߫w=_^j{ru {τ>ejvnB'ʲiojY7#.8= P0oh @F~Bg`Nr ̢ hݨ4?;#c摁6:YiooX/.ݻKRj-Û-??o)$0#FDy=W5H r )!Y[[b $Mn3湅._U=q)ZxQGMߒW@8H7 Iayᰬ,\ '鬬,i?z\8`V `~$+D'pۚ0Κ,~ | Irti !at'{v @NAX pր4&mhkֲ.dddȑ&шLCK?k6+ E[.kl Ŷ?|!M8l8`$pp>;,.>b?S|tq󗟗_E%/~ οc" >dyv_@IDAT)ތ1U(3.a˗\1t{ 2; zdg[}5 V]w#0z= oh\F""g!izd `2'Gz"ʲ A2~&gg`:2-`p9r1$Ɛ9w%YHP 8m]>5fMmֆBrS07g97FXY^ѡ2pA! wx, MȘĽѝ?*3~?h> L9 Hn !1:cFħF R3C990+e\sV|\+P#q~wc?1.Rk]h1&G1 O>~?!5XAo-8nyC^[(Ȧ,/)L&Fy#5FS Eڊʥ=UB>E:(*GM "۩D"@D &i-HFFWV[[e+&4ʊ [ZPXĥI@?rWֱń)>ϿQKG>.  ]D" tIzGSn![,j$0{$s7;=%.,=)9.[o#ΣmRT*˿I@矁B$@p+ ~M. `"aǑm`^n5!@բRΛ__cܥ[9uorVuXA0%F\h1A}JrsUrso@e! ; ;{p${J\`MI V`XV յV@yf]4F~.DZ! eH^>N&2^fZOLdE`-[YH(x~9@ @XE<0 Pbxb{aAm3{FQYPX\,YYG~(OH0x􍿾t>ҋ6 P$sI42v8v5YUTJiy,-,.+g2*ȡÇAH Cc2827V) ѽLZUH|Ce}3 D_W1&dcegx9 ܥb ) X[V{I[i!zDz"lATDgEz;9[YHW(j9X/0 /0]w9 2i t$PϘuI^[]1 m@$ ÃފJJwwPW߀L1:~ 2imw ڽo* N< A" _1qNaGL# pR@~A͉/g22; IAtEL4D_\{'*dPpmH#@s{Du/B {hxJ݁Kml[v<=  &`K{ey/^zѷL 6j6[`E _i砽F"Db\g36F7'UQj@ (XNd.5+H^XTewLw^ cJVu4IYqeYl__YIH`?{$`/C @n5|LM BAk@'KƼO#>?;#c؝EuHdkwFHUu?D$@PH C4,8r{52'%d ָeu|b޴zk+"c#C \cbFM~b{ %;Z%/7'-{Ey8_X8 4FRE" |s[jyP[N \33b@,Itow٘(C B_Its55+NtI6c2"0ZVmV" [P$%_T11!H`/B`2n阞iK "OH0~o-ޟ|7,x]<F$@p~C$`"|!t j*)+j7T:#x %:;v 2S rY2oֳpJ$@"k$Av!S^3rȐ)PW5H(;Aw'FEԕ~In_#,/)߉ZIhpUg" 4l `b=2 c{R!`ssCVM@c;CX]Yi ;X7 ӳq#+TKKC[$% .J$ MLx|A"@D`!䇑bI[ݡdQ-E%V@6d.A3,A(loo>_v~kf찻YGhUIH`OD$}"_):M/_hu XKƼO 835)zC0:Va\+˫kރPT/U)/ݿhfKg;{'8 @ tA'ιȢMY]Y[Q+&PǪEZ;R:ީ\1M x'$I;ZE1"Zlf% WEIX !x[W:@ s˚%+:4>@^InY&zEW0G@cUko|<H 8pKlHb @ H,B~"`s^ø5H`XMvǑ.يl"Ir13؈u$%oa`aiY`"YSxErsr 268_# pH0DA58c xsMd=JJeqa^"͛#ᇉt{`5EFGZO03 ]-,dJG2"0ZOڬD$@6 P H l!!o0ޓ~Ac4MO(;Gj} O 8;=%.,P(qSa˕cp"~k\Esp{m$@$`XD"fzI4S+U5u$*l&"\GF"k^cI)]hf@qaX6[+P *p'IHAA} X hA.!eaxUmea~V\K162$XsjJJ38,Ӧ r:_M rQl;Q8Kj $$@d$'V?!%[ci:V/sb-loGiq&Gy *=9)`ۄӸkLZcN;$$Y8 ’dlH >$@7 @Q|O#N]6^Z^)"zPctG˃:%1_#3OF+=U8qnrCu̝Ʒ,GO/"xgRR!%Wښꥬ펲 oIH m|.m1 Vb5_`,rΕָXe}mMVWV>}G>Ɔ.p[Wol=L>#mRRX_E%~^' 7m   | ׍<0{33GܜD[i elWХRXY]+)>YrEyUdiCDB$@n#@m3B{Hp֑! rÇt~vg ԭ4d.?51&sP,Y@*@_(`0 ;Z%7ק[щӷ\$@$\34E" kd$q $(=򫤬\+dyiA6\cdp@n`>ҕR! 5D2C 7;rC'D'g?S%H\I+F7@F~Bg0V/o!k/-2VatEL IO؎d S30ll\]u?S?:53m  Pp5{"0@C^A~荥~ַ Au%^f2VDFV@gd 㢙)~Oi?&{ Xj 8Gs D x涀|x9}k ? 2񖰢:^ @kh\^Zѡ A,@ TH{scsA<7_o,-$=# x@0~ӆ.(G8g)w[np[@8;paq=y5 }l@ oPSm'ۯ*O͡Ai_A?v?vC$@   ;`D g Ieu%`c]>2J`c}  %VT%z>шLR ?I{- pg$@ `[>o;MC޳5Hӣte4KNnjv"rrGV&q>75HEiq,0[8kpw揆#  ~q\H""g!yzd` |$ oR[([ {B2b8DՕe+ރ~Hf#olʥ=OdddQ+. W"p_y"  P0hh* xD.8C#!)$Q^Yem XĀk[ ,/[A3__c`dx5|WtS|2X{sc|ֺ4#99R(!r{et 735)EE NXGн?ʭ%qCrUr;H:)8A$S|:6 D ȏ#b3fBJeM|}m5XU676='NXy Hq? 9ٖ g51:Pk=#p] @J PH)^6N$7_ghX"%.{$T[A4HFqg2@>j@;)`lrZz߂qR\M EϞg2v`[ *z h-_E@79ڭ5 x@J8*,H D_WV6%j &w{ʺA,Z.;n&p q@!l w@t?S|CA9*9١*o5 x/.F>&`"_A/Wd}qAQT5ƺ.3@3" PNlFwdS|rs,?6@M}F" (8kH &8S Q8PngffJeu%,IKSDڙfX.*. Q,tZe` Fs$o== Du/Bx~9s(͓ELf(.)ԕIgKh &j~?IL&AL=N$W2**"O\UX#9&=]]H>2`RL~iQ:ߌ% ;{~K$@ qf $ '[SD@ˍaO+dRD9ͶwJmS cĀJj*b("{Pp?}^&  L5J$p+#4d( XS(g='յfnm7x2%2rl$@$2b|B>pec5m73$Z\nmEf ;>cH~2gM`5_#3 >$@'!`K *T~t/;'A( [Gs5ҿFgM`5-" xxpR9$ {-ۨo"k@ =槟zFK`m YrMy1g{p/./ Ps$@wE9.?" &GcgJ 4x$4C!9 ?';jpR%  p ɳGIRF[ v8 hnH5.FdiQ3>9rEYYwm\O%% ? ?6J$/WVό74x鹬|VV@<| :gEa8@L | 5۷l#dE ? ?2H$`_ _}#e-/.Z64jO #86PO $0=sor/+)FѨL j2m-" ]I$@ȃ;;;:73} YԄEv||JCuE4xlfo]{e$@$`(0th6 `1EgUiHjYo]U['y,-W4VK}M]\x!f}p?s $ C@$@6`5C䟴QU\H %=]Wdυy$8t萴6IyI&չs]'  ޘGH M ]1r}L`I&0/W.ed7G ;ZE1&0--" x9t `[G%=QdFJkZ[ = V{ڹ߶hcR)ub\i8}  pgc"H 8Y&XKdr|q Ȃ"١&,kܷ1lZK$@"ZC$`0jO`$l (ZHr{7o- IM]{anVv$xy @yi77dU_(o!$@$8H![  `5/OT\O`ssC._Q%w\j 8 @2MT2(  V`59LУ*jDtK:^\TW#uՕ"` RG2 W*$ `5@)T }]-7-I CI[S8nؓ*Y7HH&@ alH$j부N,[Aggdl MRwc n4H$-FN& l $pc:镱u@ +$+&-YrEywWb%0_ˑ 'ٱ& $VQzd[\rIFa+g_G@?_5& K%z$@$d{ېߋ<\dx)y㒛%itGڄBx_B''ĐIH n\72V  j&;H}o ; 8}׻dgL]˕m͒] ^8 $@$@6PUHH)C_|©>Oj Ջevz*uioiÈdKp?&   Pv8# x H ˨Aϲ#k-$pۧAM XQZ" G1&oQcV$ HK+ s;=@tkK]TvʶMZP[U! 5UhQ7`_L$@$@i$ iϮIH 8?ȣeYwʒ#'G>)wsk' lO "k @p@H pVhHy]N+sdnܸ!}=uܾ@55Hiqa֥wIHL%H$@{ ni@d5zLO{`4{@Fali0n{Q.K c1HOA$chy,r0E' 趀Z/( F,ݭA23XGqL 98m$@$@)!)FIHyX P^Yc0y:%`WtW9" uo'hUIHRD@Y H@0y\p^=076 7'[5K+0l:j8%-" @J p @Jq ptc[Gs& 4$`($5 ěic1nPgL |5v H$@$r\rHGNw X`$!._1Ot BhnCdQWonIH!B`f'$@$/g Oc{M&] p߃˩GNKvNN2][eH?Wt$@$Nf?$@$fX P~i6'u_n{@}u}U}/<';(PZJmP TQ*h2t7иa4ƈqEeA2f2폙Ef ͘h`< $vSn{~}x}{=s>ss~8z(|(a @Xh@&%SsR뚮3Z'x|&eZ(*;zx.5=_AEMG®QN ޑMO֤[0KpvelP#6 &sUkϾw"ed/l4Z@@O  0;d^'JjEgnYwcu=wץKǰ3vyj򃫲㿣gSsm&|  @`6)  0ZlxSzpJR?>ZZ^V6ZN @~X^Uʅ)~ofܣ-$wV~!0 KwTxI|L+!@V \S0@K+פ5ִ0 g~뫇,yiWk8og+ֻ2V;;= @ d{I`Sft'N`llw.|aM~m8gΜjŲ}c}nq%7g(4  г@SETLoy]u_(;{QzЁUy䟣g/%o * @@m<!3+SS-xT~o}hf}(kIY|,E}U  @rZ0B @@r[-orq)6 MѿyWKXZ͛??<\m<{ AWd)zI{ItD@@GZ@V/e'n{(:z^{NN L^97oOx  IvA @`tx0-_2tr?ʎ]R-sl8&e̙3Zj={]F7L&@2&x$lilLv̀6g;n]_yՖIn Qܹ;WG,?Zni/DW&7:J @,̘L@N5=}mSO>uG.Oxlo`X*% 8zXk3/ 2 0 pNjʭIi6m$p]w-&3`㕷IϛiS3`f՜M]Е'"lWRNnHus =Wݲ_ҙft_= ޙ=_AEh0~Hf \?)-򾔇{ݞxVn/x){jaudM_2>2)  =s @1;,,8Z 9"ceK} BUO> @ XǛ P,~\Rnp@`˖-ꕇVcc-fd!|4/u  @@и!atO \Ndʆ /Y`Sjg?  Y};;'@@3 ,=/ <o\\o1zv&>*$@/@H6ڔS~[ Yl%)Ow݁"}݃,:I@@FS, PKd,M'oeGԩgO?FDY Г T"@H6]9̔S~MgP<,. @2$r@j\f<1{{&?Wh  @@Q6 ,th}4BӟHle? 5]q @@# :-߈g|)E&{K P[#@. $6bʅ)s|,pB0\o @ $`q*}!=3\ 5x>TkLk @`Vfŧ2@ޔ־|x-<( @p @kV` 6T4ecQ=uÏ^ @`2oE 0kdܜrA) ܔט  l?'@U e)o3'No&y+ Oj"ҕr[ʚtinhlLs$@-p @ UH Mp]"?:)0i_ϻgOjMh  @XJ9 C|>zA >@w\xDaC\h&_aGA:"`#-L@%ϥ|06)^7A:/Pt~$ @ d!4qMQnjZS;2:$ v`H@6 QrIJw8?  m0|K"l*eܝxN. ~ @ $\̔S`Süil0ɵEMФW 0d,e/M(eh9gh: @X @@]6 , wg; `7H  @@'r[OhyR)O4$详e n @d^ @X]rΠ:ه Ϧoˠ @M4b!@}B[r+SY, 3/O1p @p 4F(-qJ|ʦlL3H4N@@L  @h :-MGzx2힕Ѿk @ ڈ(lRĔ S2Vu*W> @@U[@X S )q+$`|IDATt/rg ` 0 ,)տ|yͪyΜESԻ>9_Mq  @)0  @ 䶀r?~3)̉NSm*uD; @^vu!@:&l ꔓGxhN;sߓe @`2ft @`9rA)e&G/ `.^%@f!lR2;tL&[vT @@ozsS@Ni< eL˹ @`nK @/䶀)H«-k?  @2b @ ,]rZ9 |{f&ז @d ֕  @m p{~\r^[6o)] @ @mXt% @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @f'Ο+.POFIENDB`ic11#PNG  IHDR szzziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5\IDATX VkLWQZJZ@)X&ssMۜf3s`8=K6?,{df-[Sa> (PPhK[vn-/;=sws _j!*  7= L4$iIܿ޷&/)ȷ(Jz4=Li%Ìu-o I%a3sN5Dd; f1I? "J#Hoy % 17AOo'bb($(ЮzH+;HvP>7#%%1-:] XTaI '-jHzjg%gHQ'J>/: ;Ea: EChkkLukV*4B^nnl""^Z],: |;5GIE+ (}yB*hWP+cE+Qp.]ř36?jfSQnz N"p8 فv_o7~V6lxjuOU;hll l{y+8XE$Q\\)sW߀Ǚt5wLEB5XP( B?KhimCm]=|^>|>L!Vlid#VCI]ߙM7w\kvfRS08dEBζ*B|FZ&wG53])+RrwחzhR?x\B.bLfą̌{`",&܁@9?F载sB]Z "`k '+kGNEMô3[)(ȿ(\3UUS+PBGĹ?Xbcw&!:&K3Z'*L`T"I4v{\ll!Y>7c?VJTۙR>9v@"IT:juϡWXa8=>?˳@H<M@$O]KӥCކa1nzy(ˁL*c_ =`vŰB umMk/@(CE(ƁALmK A9 ׉QGɩ%:R $ Q~G$-)tZv W[~̃Veqv"OoA*\6."qLvYz'WBTMtyt눍C,v?NmX"SoՑ'j,ilILD$UڻwAIr^V&<^l!?YHL$DMIɫӗe؊=n7D:88Vxh*dj w8پD$Iyh>_N"A؉1Ld #M͞fcl|ҪH8x Ûi[L߇.=JJJNRs.~ݑ?0H#ҽ"m.{X޶qNJbBpHGr2TK-sHX]/j0xL IENDB`info bplist00X$versionX$objectsY$archiverT$topU$null WNS.keysZNS.objectsV$class TnameTiconZ$classnameX$classes\NSDictionaryXNSObject_NSKeyedArchiverTroot#-27=CJR]dfhjlnsx}vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Sources/000077500000000000000000000000001461511344300232725ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Sources/AppDelegate.h000066400000000000000000000041721461511344300256220ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import @interface AppDelegate : NSObject @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Sources/AppDelegate.m000066400000000000000000000045201461511344300256240ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "AppDelegate.h" @implementation AppDelegate - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { } - (void)applicationWillTerminate:(NSNotification *)aNotification { } - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender { return YES; } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Sources/ViewController.h000066400000000000000000000042031461511344300264200ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import @interface ViewController : NSViewController @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/Sources/ViewController.m000066400000000000000000000157511461511344300264370ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "ViewController.h" #import #import "public.sdk/source/vst/auv3wrapper/Shared/AUv3AudioEngine.h" #import "public.sdk/source/vst/auv3wrapper/Shared/AUv3Wrapper.h" @class AUv3WrapperViewController; @interface ViewController () { // Button for playback IBOutlet NSButton* playButton; AUv3AudioEngine* audioEngine; // Container for the custom view. AUv3WrapperViewController* auV3ViewController; } @property IBOutlet NSView *containerView; -(IBAction)togglePlay:(id)sender; -(void)handleMenuSelection:(id)sender; @end @implementation ViewController //------------------------------------------------------------------------ - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self embedPlugInView]; AudioComponentDescription desc; desc.componentType = kAUcomponentType; desc.componentSubType = kAUcomponentSubType; desc.componentManufacturer = kAUcomponentManufacturer; desc.componentFlags = kAUcomponentFlags; desc.componentFlagsMask = kAUcomponentFlagsMask; if (desc.componentType == 'aufx' || desc.componentType == 'aumf') [self addFileMenuEntry]; [AUAudioUnit registerSubclass: AUv3Wrapper.class asComponentDescription:desc name:@"Local AUv3" version: UINT32_MAX]; audioEngine = [[AUv3AudioEngine alloc] initWithComponentType:desc.componentType]; [audioEngine loadAudioUnitWithComponentDescription:desc completion:^{ auV3ViewController.audioUnit = (AUv3Wrapper*)audioEngine.currentAudioUnit; NSString* fileName = @kAudioFileName; NSString* fileFormat = @kAudioFileFormat; NSURL* fileURL = [[NSBundle mainBundle] URLForResource:fileName withExtension:fileFormat]; NSError* error = [audioEngine loadAudioFile:fileURL]; if (error) { NSLog (@"Error setting up audio or midi file: %@", [error description]); } }]; } //------------------------------------------------------------------------ - (void)embedPlugInView { NSURL *builtInPlugInURL = [[NSBundle mainBundle] builtInPlugInsURL]; NSURL *pluginURL = [builtInPlugInURL URLByAppendingPathComponent: @"vst3plugin.appex"]; NSBundle *appExtensionBundle = [NSBundle bundleWithURL: pluginURL]; auV3ViewController = [[AUv3WrapperViewController alloc] initWithNibName: @"AUv3WrapperViewController" bundle: appExtensionBundle]; // Present the view controller's view. NSView *view = auV3ViewController.view; view.frame = _containerView.bounds; [_containerView addSubview: view]; view.translatesAutoresizingMaskIntoConstraints = NO; NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)]; [_containerView addConstraints: constraints]; constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)]; [_containerView addConstraints: constraints]; } //------------------------------------------------------------------------ -(void)addFileMenuEntry { NSApplication *app = [NSApplication sharedApplication]; NSMenu *fileMenu = [[app.mainMenu itemWithTag:123] submenu]; NSMenuItem *openFileItem = [[NSMenuItem alloc] initWithTitle:@"Load file..." action:@selector(handleMenuSelection:) keyEquivalent:@"O"]; [fileMenu insertItem:openFileItem atIndex:0]; } //------------------------------------------------------------------------ -(void)handleMenuSelection:(NSMenuItem *)sender { // create the open dialog NSOpenPanel* openPanel = [NSOpenPanel openPanel]; openPanel.title = @"Choose an audio file"; openPanel.showsResizeIndicator = YES; openPanel.canChooseFiles = YES; openPanel.allowsMultipleSelection = NO; openPanel.canChooseDirectories = NO; openPanel.canCreateDirectories = YES; openPanel.allowedFileTypes = @[@"aac", @"aif", @"aiff", @"caf", @"m4a", @"mp3", @"wav"]; if ( [openPanel runModal] == NSModalResponseOK ) { NSArray* urls = [openPanel URLs]; // Loop through all the files and process them. for(int i = 0; i < [urls count]; i++ ) { NSError* error = [audioEngine loadAudioFile:[urls objectAtIndex:i]]; if (error != nil) { NSAlert *alert = [[NSAlert alloc] init]; [alert setMessageText:@"Error loading file"]; [alert setInformativeText:@"Something went wrong loading the audio file. Please make sure to select the correct format and try again."]; [alert addButtonWithTitle:@"Ok"]; [alert runModal]; } } } } //------------------------------------------------------------------------ -(IBAction)togglePlay:(id)sender { BOOL isPlaying = [audioEngine startStop]; [playButton setTitle: isPlaying ? @"Stop" : @"Play"]; } #pragma mark //------------------------------------------------------------------------ - (void)windowWillClose:(NSNotification *)notification { // Main applicaiton window closing, we're done auV3ViewController = nil; } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_auv3/macOS/again.entitlements000066400000000000000000000003601461511344300253620ustar00rootroot00000000000000 com.apple.security.app-sandbox vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/000077500000000000000000000000001461511344300227605ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/CMakeLists.txt000066400000000000000000000012231461511344300255160ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-again-sampleaccurate VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 AGain example" ) smtg_add_vst3plugin(again-sampleaccurate source/agsa_controller.cpp source/agsa_factory.cpp source/agsa_processor.cpp source/agsa.h source/tutorial.cpp source/tutorial.h source/version.h ${SDK_ROOT}/public.sdk/source/vst/utility/test/sampleaccuratetest.cpp ${SDK_ROOT}/public.sdk/source/vst/utility/test/rttransfertest.cpp ) target_link_libraries(again-sampleaccurate PRIVATE sdk_hosting ) smtg_target_setup_as_vst3_example(again-sampleaccurate)vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/resource/000077500000000000000000000000001461511344300246075ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/resource/info.rc000066400000000000000000000026341461511344300260750ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/source/000077500000000000000000000000001461511344300242605ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/source/agsa.h000066400000000000000000000060151461511344300253460ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again_sampleaccurate/source/agsa.h // Created by : Steinberg, 04/2021 // Description : AGain with Sample Accurate Parameter Changes // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/funknown.h" #include "pluginterfaces/vst/vsttypes.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace AgainSampleAccurate { //------------------------------------------------------------------------ static const FUID ProcessorID (0xC18D3C1E, 0x719E4E29, 0x924D3ECA, 0xA5E4DA18); static const FUID ControllerID (0xC244B7E6, 0x24084E20, 0xA24A8C43, 0xF84C8BE8); //------------------------------------------------------------------------ FUnknown* createProcessorInstance (void*); FUnknown* createControllerInstance (void*); //------------------------------------------------------------------------ enum ParameterID : ParamID { Bypass, Gain, }; //------------------------------------------------------------------------ } // AgainSampleAccurate } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/source/agsa_controller.cpp000066400000000000000000000105001461511344300301360ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again_sampleaccurate/source/agsa_controller.cpp // Created by : Steinberg, 04/2021 // Description : AGain with Sample Accurate Parameter Changes // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "agsa.h" #include "public.sdk/source/vst/vsteditcontroller.h" #include "base/source/fstreamer.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace AgainSampleAccurate { //------------------------------------------------------------------------ class Controller : public EditController { tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; }; //------------------------------------------------------------------------ tresult PLUGIN_API Controller::initialize (FUnknown* context) { tresult result = EditController::initialize (context); if (result != kResultOk) { return result; } parameters.addParameter (STR ("Bypass"), nullptr, 1, 0., ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass, ParameterID::Bypass); parameters.addParameter (STR ("Gain"), STR ("%"), 0, 1., ParameterInfo::kCanAutomate, ParameterID::Gain); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Controller::terminate () { return EditController::terminate (); } //------------------------------------------------------------------------ tresult PLUGIN_API Controller::setComponentState (IBStream* state) { if (!state) return kInvalidArgument; IBStreamer streamer (state, kLittleEndian); uint32 numParams; if (streamer.readInt32u (numParams) == false) return kResultFalse; ParamID pid; ParamValue value; for (uint32 i = 0u; i < numParams; ++i) { if (!streamer.readInt32u (pid)) break; if (!streamer.readDouble (value)) break; if (auto param = parameters.getParameter (pid)) param->setNormalized (value); } return kResultTrue; } //------------------------------------------------------------------------ FUnknown* createControllerInstance (void*) { return static_cast (new Controller); } //------------------------------------------------------------------------ } // AgainSampleAccurate } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/source/agsa_factory.cpp000066400000000000000000000077771461511344300274500ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again_sampleaccurate/source/agsa_factory.cpp // Created by : Steinberg, 04/2021 // Description : AGain with Sample Accurate Parameter Changes // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "agsa.h" #include "tutorial.h" #include "version.h" #include "public.sdk/source/main/pluginfactory.h" #include "public.sdk/source/vst/utility/testing.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #define stringPluginName "AGain Sample Accurate" using namespace Steinberg; using namespace Steinberg::Vst; using namespace Steinberg::Vst::AgainSampleAccurate; //------------------------------------------------------------------------ // VST Plug-in Factory //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) // AGain sample accurate DEF_CLASS2 (INLINE_UID_FROM_FUID (ProcessorID), PClassInfo::kManyInstances, kVstAudioEffectClass, stringPluginName, Vst::kDistributable, "Fx", FULL_VERSION_STR, kVstVersionString, createProcessorInstance) DEF_CLASS2 (INLINE_UID_FROM_FUID (ControllerID), PClassInfo::kManyInstances, kVstComponentControllerClass, stringPluginName "Controller", 0, "", FULL_VERSION_STR, kVstVersionString, createControllerInstance) // Test DEF_CLASS2 (INLINE_UID_FROM_FUID (getTestFactoryUID ()), PClassInfo::kManyInstances, kTestClass, stringPluginName "Test Factory", 0, "", "", "", createTestFactoryInstance) // Tutorial DEF_CLASS2 (INLINE_UID_FROM_FUID (Tutorial::ProcessorID), PClassInfo::kManyInstances, kVstAudioEffectClass, "Advanced Tutorial", Vst::kDistributable, "Fx", FULL_VERSION_STR, kVstVersionString, Tutorial::createProcessorInstance) DEF_CLASS2 (INLINE_UID_FROM_FUID (Tutorial::ControllerID), PClassInfo::kManyInstances, kVstComponentControllerClass, "Advanced Tutorial Controller", 0, "", FULL_VERSION_STR, kVstVersionString, Tutorial::createControllerInstance) END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/source/agsa_processor.cpp000066400000000000000000000235451461511344300300070ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again_sampleaccurate/source/agsa_processor.cpp // Created by : Steinberg, 04/2021 // Description : AGain with Sample Accurate Parameter Changes // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "agsa.h" #include "public.sdk/source/vst/utility/audiobuffers.h" #include "public.sdk/source/vst/utility/processdataslicer.h" #include "public.sdk/source/vst/utility/rttransfer.h" #include "public.sdk/source/vst/utility/sampleaccurate.h" #include "public.sdk/source/vst/vstaudioeffect.h" #include "base/source/fstreamer.h" #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace AgainSampleAccurate { //------------------------------------------------------------------------ struct Processor : public AudioEffect { using ParameterVector = std::vector>; using RTTransfer = RTTransferT; Processor (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; void handleParameterChanges (IParameterChanges* changes); template void process (ProcessData& data); std::array parameters; RTTransfer stateTransfer; }; //------------------------------------------------------------------------ Processor::Processor () { setControllerClass (ControllerID); parameters[0].setParamID (ParameterID::Bypass); parameters[1].setParamID (ParameterID::Gain); } //------------------------------------------------------------------------ tresult PLUGIN_API Processor::initialize (FUnknown* context) { auto result = AudioEffect::initialize (context); if (result == kResultTrue) { addAudioInput (STR ("Input"), SpeakerArr::kStereo); addAudioOutput (STR ("Output"), SpeakerArr::kStereo); } return result; } //------------------------------------------------------------------------ tresult PLUGIN_API Processor::terminate () { stateTransfer.clear_ui (); return AudioEffect::terminate (); } //------------------------------------------------------------------------ tresult PLUGIN_API Processor::setState (IBStream* state) { if (!state) return kInvalidArgument; IBStreamer streamer (state, kLittleEndian); uint32 numParams; if (streamer.readInt32u (numParams) == false) return kResultFalse; auto paramChanges = std::make_unique (); ParamID pid; ParamValue value; for (uint32 i = 0u; i < numParams; ++i) { if (!streamer.readInt32u (pid)) break; if (!streamer.readDouble (value)) break; for (auto& param : parameters) { if (param.getParamID () == pid) { paramChanges->emplace_back (std::make_pair (pid, value)); break; } } } stateTransfer.transferObject_ui (std::move (paramChanges)); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API Processor::getState (IBStream* state) { if (!state) return kInvalidArgument; IBStreamer streamer (state, kLittleEndian); streamer.writeInt32u (static_cast (parameters.size ())); for (auto& param : parameters) { streamer.writeInt32u (param.getParamID ()); streamer.writeDouble (param.getValue ()); } return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API Processor::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { if (numIns != 1 || numOuts != 1) return kResultFalse; if (SpeakerArr::getChannelCount (inputs[0]) == SpeakerArr::getChannelCount (outputs[0])) { getAudioInput (0)->setArrangement (inputs[0]); getAudioOutput (0)->setArrangement (outputs[0]); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API Processor::canProcessSampleSize (int32 symbolicSampleSize) { return (symbolicSampleSize == SymbolicSampleSizes::kSample32 || symbolicSampleSize == SymbolicSampleSizes::kSample64) ? kResultTrue : kResultFalse; } //------------------------------------------------------------------------ template void Processor::process (ProcessData& data) { using SampleT = typename std::conditional::type; static constexpr auto SliceSize = 16u; ProcessDataSlicer slicer (SliceSize); std::array againValueBuffer; auto doProcessing = [this, &againValueBuffer] (ProcessData& data) { parameters[ParameterID::Bypass].advance (data.numSamples); auto inputs = data.inputs; auto outputs = data.outputs; if (parameters[ParameterID::Bypass].getValue () > 0.5) { for (auto channelIndex = 0; channelIndex < inputs[0].numChannels; ++channelIndex) { auto inChannelBuffer = getChannelBuffers (inputs[0])[channelIndex]; auto outChannelBuffer = getChannelBuffers (outputs[0])[channelIndex]; for (auto sampleIndex = 0; sampleIndex < data.numSamples; ++sampleIndex) { outChannelBuffer[sampleIndex] = inChannelBuffer[sampleIndex]; } } return; } for (auto i = 0; i < data.numSamples; ++i) againValueBuffer[i] = static_cast (parameters[ParameterID::Gain].advance (1)); for (auto channelIndex = 0; channelIndex < inputs[0].numChannels; ++channelIndex) { auto inChannelBuffer = getChannelBuffers (inputs[0])[channelIndex]; auto outChannelBuffer = getChannelBuffers (outputs[0])[channelIndex]; for (auto sampleIndex = 0; sampleIndex < data.numSamples; ++sampleIndex) { auto sample = inChannelBuffer[sampleIndex] * againValueBuffer[sampleIndex]; outChannelBuffer[sampleIndex] = sample; } } }; slicer.process (data, doProcessing); } //------------------------------------------------------------------------ void Processor::handleParameterChanges (IParameterChanges* changes) { if (changes) { auto changeCount = changes->getParameterCount (); for (auto i = 0; i < changeCount; ++i) { if (auto queue = changes->getParameterData (i)) { auto paramID = queue->getParameterId (); if (paramID >= ParameterID::Bypass && paramID <= ParameterID::Gain) parameters[paramID].beginChanges (queue); } } } } //------------------------------------------------------------------------ tresult PLUGIN_API Processor::process (ProcessData& data) { stateTransfer.accessTransferObject_rt ([this] (const auto& stateChanges) { for (const auto& change : stateChanges) { if (change.first >= ParameterID::Bypass && change.first <= ParameterID::Gain) parameters[change.first].setValue (change.second); } }); handleParameterChanges (data.inputParameterChanges); if (data.numSamples > 0) { if (processSetup.symbolicSampleSize == SymbolicSampleSizes::kSample32) process (data); else process (data); } for (auto& param : parameters) param.endChanges (); return kResultTrue; } //------------------------------------------------------------------------ FUnknown* createProcessorInstance (void*) { return static_cast (new Processor); } //------------------------------------------------------------------------ } // AgainSampleAccurate } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/source/tutorial.cpp000066400000000000000000000232571461511344300266400ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again_sampleaccurate/source/tutorial.cpp // Created by : Steinberg, 04/2021 // Description : Tutorial // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "tutorial.h" #include "public.sdk/source/vst/utility/audiobuffers.h" #include "public.sdk/source/vst/utility/processdataslicer.h" #include "public.sdk/source/vst/utility/rttransfer.h" #include "public.sdk/source/vst/utility/sampleaccurate.h" #include "public.sdk/source/vst/vstaudioeffect.h" #include "public.sdk/source/vst/vsteditcontroller.h" #include "base/source/fstreamer.h" #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace Tutorial { //------------------------------------------------------------------------ enum ParameterID { Gain = 1, }; //------------------------------------------------------------------------ struct StateModel { double gain; }; //------------------------------------------------------------------------ struct MyEffect : public AudioEffect { using RTTransfer = RTTransferT; MyEffect (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; void handleParameterChanges (IParameterChanges* changes); template void process (ProcessData& data); SampleAccurate::Parameter gainParameter {ParameterID::Gain, 1.}; RTTransfer stateTransfer; }; //------------------------------------------------------------------------ MyEffect::MyEffect () { setControllerClass (ControllerID); } //------------------------------------------------------------------------ tresult PLUGIN_API MyEffect::initialize (FUnknown* context) { auto result = AudioEffect::initialize (context); if (result == kResultTrue) { addAudioInput (STR ("Input"), SpeakerArr::kStereo); addAudioOutput (STR ("Output"), SpeakerArr::kStereo); } return result; } //------------------------------------------------------------------------ tresult PLUGIN_API MyEffect::terminate () { stateTransfer.clear_ui (); return AudioEffect::terminate (); } //------------------------------------------------------------------------ tresult PLUGIN_API MyEffect::setState (IBStream* state) { if (!state) return kInvalidArgument; IBStreamer streamer (state, kLittleEndian); uint32 numParams; if (streamer.readInt32u (numParams) == false) return kResultFalse; auto model = std::make_unique (); ParamValue value; if (!streamer.readDouble (value)) return kResultFalse; model->gain = value; stateTransfer.transferObject_ui (std::move (model)); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API MyEffect::getState (IBStream* state) { if (!state) return kInvalidArgument; IBStreamer streamer (state, kLittleEndian); streamer.writeDouble (gainParameter.getValue ()); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API MyEffect::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { if (numIns != 1 || numOuts != 1) return kResultFalse; if (SpeakerArr::getChannelCount (inputs[0]) == SpeakerArr::getChannelCount (outputs[0])) { getAudioInput (0)->setArrangement (inputs[0]); getAudioOutput (0)->setArrangement (outputs[0]); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API MyEffect::canProcessSampleSize (int32 symbolicSampleSize) { return (symbolicSampleSize == SymbolicSampleSizes::kSample32 || symbolicSampleSize == SymbolicSampleSizes::kSample64) ? kResultTrue : kResultFalse; } //------------------------------------------------------------------------ template void MyEffect::process (ProcessData& data) { ProcessDataSlicer slicer (8); auto doProcessing = [this] (ProcessData& data) { // get the gain value for this block ParamValue gain = gainParameter.advance (data.numSamples); // process audio AudioBusBuffers* inputs = data.inputs; AudioBusBuffers* outputs = data.outputs; for (auto channelIndex = 0; channelIndex < inputs[0].numChannels; ++channelIndex) { auto inputBuffers = getChannelBuffers (inputs[0])[channelIndex]; auto outputBuffers = getChannelBuffers (outputs[0])[channelIndex]; for (auto sampleIndex = 0; sampleIndex < data.numSamples; ++sampleIndex) { auto sample = inputBuffers[sampleIndex]; outputBuffers[sampleIndex] = sample * gain; } } }; slicer.process (data, doProcessing); } //------------------------------------------------------------------------ void MyEffect::handleParameterChanges (IParameterChanges* changes) { if (!changes) return; int32 changeCount = changes->getParameterCount (); for (auto i = 0; i < changeCount; ++i) { if (auto queue = changes->getParameterData (i)) { auto paramID = queue->getParameterId (); if (paramID == ParameterID::Gain) { gainParameter.beginChanges (queue); } } } } //------------------------------------------------------------------------ tresult PLUGIN_API MyEffect::process (ProcessData& data) { stateTransfer.accessTransferObject_rt ( [this] (const auto& stateModel) { gainParameter.setValue (stateModel.gain); }); handleParameterChanges (data.inputParameterChanges); if (processSetup.symbolicSampleSize == SymbolicSampleSizes::kSample32) process (data); else process (data); gainParameter.endChanges (); return kResultTrue; } //------------------------------------------------------------------------ FUnknown* createProcessorInstance (void*) { return static_cast (new MyEffect); } //------------------------------------------------------------------------ class Controller : public EditController { tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; }; //------------------------------------------------------------------------ tresult PLUGIN_API Controller::initialize (FUnknown* context) { tresult result = EditController::initialize (context); if (result != kResultOk) { return result; } parameters.addParameter (STR ("Gain"), STR ("%"), 0, 1., ParameterInfo::kCanAutomate, ParameterID::Gain); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Controller::setComponentState (IBStream* state) { if (!state) return kInvalidArgument; IBStreamer streamer (state, kLittleEndian); ParamValue value; if (!streamer.readDouble (value)) return kResultFalse; if (auto param = parameters.getParameter (ParameterID::Gain)) param->setNormalized (value); return kResultTrue; } //------------------------------------------------------------------------ FUnknown* createControllerInstance (void*) { return static_cast (new Controller); } //------------------------------------------------------------------------ } // Tutorial } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/source/tutorial.h000066400000000000000000000055461461511344300263060ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again_sampleaccurate/source/tutorial.h // Created by : Steinberg, 04/2021 // Description : Tutorial // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/funknown.h" #include "pluginterfaces/vst/vsttypes.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace Tutorial { //------------------------------------------------------------------------ static const FUID ProcessorID (0xCC48BF25, 0x529043DA, 0x80223510, 0xFFE8BD02); static const FUID ControllerID (0x3A89B2B2, 0x4F474E02, 0x9C96EE27, 0x0AD2A15B); //------------------------------------------------------------------------ FUnknown* createProcessorInstance (void*); FUnknown* createControllerInstance (void*); //------------------------------------------------------------------------ } // AgainSampleAccurate } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/again_sampleaccurate/source/version.h000066400000000000000000000055731461511344300261300ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/again_sampleaccurate/source/version.h // Created by : Steinberg, 04/2021 // Description : Example of handle the versioning and copyright info of again sampleaccurate plug-in // used for the resources (RC file for example) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "again_sampleaccurate.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "AGain SampleAccurate VST3-SDK (64Bit)" #else #define stringFileDescription "AGain SampleAccurate VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/000077500000000000000000000000001461511344300216455ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/CMakeLists.txt000066400000000000000000000007021461511344300244040ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-channelcontext VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Channel Context example" ) smtg_add_vst3plugin(channelcontext source/plug.cpp source/plug.h source/plugcids.h source/plugcontroller.cpp source/plugcontroller.h source/plugentry.cpp source/plugparamids.h source/version.h ) smtg_target_setup_as_vst3_example(channelcontext) vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/resource/000077500000000000000000000000001461511344300234745ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/resource/info.rc000066400000000000000000000026341461511344300247620ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/source/000077500000000000000000000000001461511344300231455ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/source/plug.cpp000066400000000000000000000164521461511344300246300ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/channelcontext/source/plug.cpp // Created by : Steinberg, 02/2014 // Description : Plug Example for VST SDK 3.x // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugparamids.h" #include "plugcids.h" // for class ids #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "base/source/fstreamer.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug Implementation //------------------------------------------------------------------------ Plug::Plug () : bBypass (false) { // register its editor class (the same than used in plugentry.cpp) setControllerClass (PlugControllerUID); } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::initialize (FUnknown* context) { //---always initialize the parent------- tresult result = AudioEffect::initialize (context); // if everything Ok, continue if (result != kResultOk) { return result; } //---create Audio In/Out busses------ // we want a stereo Input and a Stereo Output addAudioInput (STR16 ("Stereo In"), SpeakerArr::kStereo); addAudioOutput (STR16 ("Stereo Out"), SpeakerArr::kStereo); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::process (ProcessData& data) { //---1) Read inputs parameter changes----------- if (IParameterChanges* paramChanges = data.inputParameterChanges) { int32 numParamsChanged = paramChanges->getParameterCount (); // for each parameter which are some changes in this audio block: for (int32 i = 0; i < numParamsChanged; i++) { if (IParamValueQueue* paramQueue = paramChanges->getParameterData (i)) { int32 offsetSamples; double value; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case kBypassId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { bBypass = (value > 0.5f); } break; } } } } //------------------------------------- //---3) Process Audio--------------------- //------------------------------------- if (data.numInputs == 0 || data.numOutputs == 0) { // nothing to do return kResultOk; } // (simplification) we suppose in this example that we have the same input channel count than // the output int32 numChannels = Min (data.inputs[0].numChannels, data.outputs[0].numChannels); //---get audio buffers---------------- float** in = data.inputs[0].channelBuffers32; float** out = data.outputs[0].channelBuffers32; // check if all channel are silent then process silent if (data.inputs[0].silenceFlags == getChannelMask (data.inputs[0].numChannels)) { // mark output silence too data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; int32 sampleFrames = data.numSamples; // the plug-in has to be sure that if it sets the flags silence that the output buffer are // clear for (int32 i = 0; i < numChannels; i++) { // do not need to be cleared if the buffers are the same (in this case input buffer are // already cleared by the host) if (in[i] != out[i]) { memset (out[i], 0, sampleFrames * sizeof (float)); } } // nothing to do at this point return kResultOk; } // mark our outputs has not silent data.outputs[0].silenceFlags = 0; //---in bypass mode outputs should be like inputs----- if (bBypass) { int32 sampleFrames = data.numSamples; for (int32 i = 0; i < numChannels; i++) { // do not need to be copied if the buffers are the same if (in[i] != out[i]) { memcpy (out[i], in[i], sampleFrames * sizeof (float)); } } for (int32 i = numChannels; i < data.outputs[0].numChannels; i++) { memset (out[i], 0, sizeof (float)* data.numSamples); } } else { float gain = 0.5; // in real plug-in it would be better to do dezippering to avoid jump (click) in gain value for (int32 i = 0; i < numChannels; i++) { int32 sampleFrames = data.numSamples; float* ptrIn = in[i]; float* ptrOut = out[i]; float tmp; while (--sampleFrames >= 0) { // apply gain tmp = (*ptrIn++) * gain; (*ptrOut++) = tmp; } } for (int32 i = numChannels; i < data.outputs[0].numChannels; i++) { memset (out[i], 0, sizeof (float)* data.numSamples); } } return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::setState (IBStream* state) { // called when we load a preset, the model has to be reloaded if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; bBypass = savedBypass > 0; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::getState (IBStream* state) { // here we need to save the model if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); streamer.writeInt32 (bBypass ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/source/plug.h000066400000000000000000000071261461511344300242730ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/channelcontext/source/plug.h // Created by : Steinberg, 02/2014 // Description : Plug-in Example for VST SDK 3.x using ChannelContext::IInfoListener // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug: directly derived from the helper class AudioEffect //------------------------------------------------------------------------ class Plug : public AudioEffect { public: Plug (); //--- --------------------------------------------------------------------- // create function required for plug-in factory, // it will be called to create new instances of this plug-in //--- --------------------------------------------------------------------- static FUnknown* createInstance (void* /*context*/) { return (IAudioProcessor*)new Plug; } //--- --------------------------------------------------------------------- // AudioEffect overrides: //--- --------------------------------------------------------------------- /** Called at first after constructor */ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; /** Here we go...the process call */ tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; /** For persistence */ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: bool bBypass; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/source/plugcids.h000066400000000000000000000045471461511344300251420ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/channelcontext/source/plugcids.h // Created by : Steinberg, 02/2014 // Description : define the class IDs for channelcontext // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { // Plug A static const FUID PlugProcessorUID (0x01EDEBE8, 0x8CD14564, 0xAF34B1A2, 0xDDC13384); static const FUID PlugControllerUID(0xB4D97900, 0xAAC84AAE, 0xB9D1C427, 0xB77A698B); }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/source/plugcontroller.cpp000066400000000000000000000251211461511344300267250ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/channelcontext/source/PlugController.cpp // Created by : Steinberg, 02/2014 // Description : Plug Controller Example for VST SDK 3.x // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plugcontroller.h" #include "plugparamids.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" #include "base/source/fstreamer.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController Implementation //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::initialize (FUnknown* context) { tresult result = EditControllerEx1::initialize (context); if (result != kResultOk) { return result; } //---Create Parameters------------ //---Bypass parameter--- int32 stepCount = 1; ParamValue defaultVal = 0; int32 flags = ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass; int32 tag = kBypassId; parameters.addParameter (STR16 ("Bypass"), nullptr, stepCount, defaultVal, flags, tag); //---Read only parameters String128 undefinedStr; Steinberg::UString (undefinedStr, 128).fromAscii ("undefined"); flags = ParameterInfo::kIsReadOnly; auto* strParam = NEW StringListParameter (STR16 ("Ch Uid"), kChannelUIDId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); strParam = NEW StringListParameter (STR16 ("Ch Uid Len"), kChannelUIDLengthId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); strParam = NEW StringListParameter (STR16 ("Ch Name"), kChannelNameId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); strParam = NEW StringListParameter (STR16 ("Ch Name Len"), kChannelNameLengthId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); strParam = NEW StringListParameter (STR16 ("Ch Index"), kChannelIndexId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); strParam = NEW StringListParameter (STR16 ("Ch Index Namespace Order"), kChannelIndexNamespaceOrderId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); strParam = NEW StringListParameter (STR16 ("Ch Index Namespace"), kChannelIndexNamespaceId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); strParam = NEW StringListParameter (STR16 ("Ch Index Namespace Len"), kChannelIndexNamespaceLengthId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); strParam = NEW StringListParameter (STR16 ("Ch Color"), kChannelColorId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); strParam = NEW StringListParameter (STR16 ("Ch Plug Loc."), kChannelPluginLocationId, nullptr, flags); strParam->appendString (undefinedStr); parameters.addParameter (strParam); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::setComponentState (IBStream* state) { // we receive the current state of the component (processor part) // we read only the gain and bypass value... if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 bypassState = 0; if (streamer.readInt32 (bypassState) == false) return kResultFalse; setParamNormalized (kBypassId, bypassState ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::setChannelContextInfos (IAttributeList* list) { if (!list) return kResultFalse; String128 undefinedStr; Steinberg::UString (undefinedStr, 128).fromAscii ("undefined"); // get the channel name length (optional) where we, as plugin, are instantiated auto* param = static_cast (parameters.getParameter (kChannelNameLengthId)); if (param) { int64 length; if (list->getInt (ChannelContext::kChannelNameLengthKey, length) == kResultTrue) { String128 string128; Steinberg::UString (string128, 128).printInt (length); param->replaceString (0, string128); } else param->replaceString (0, undefinedStr); } // get the channel name where we, as plugin, are instantiated param = static_cast (parameters.getParameter (kChannelNameId)); if (param) { String128 name; if (list->getString (ChannelContext::kChannelNameKey, name, sizeof (name)) == kResultTrue) param->replaceString (0, name); else param->replaceString (0, undefinedStr); } // get the channel UID Length param = static_cast (parameters.getParameter (kChannelUIDLengthId)); if (param) { int64 length; if (list->getInt (ChannelContext::kChannelUIDLengthKey, length) == kResultTrue) { String128 string128; Steinberg::UString (string128, 128).printInt (length); param->replaceString (0, string128); } else param->replaceString (0, undefinedStr); } // get the channel UID param = static_cast (parameters.getParameter (kChannelUIDId)); if (param) { String128 name; if (list->getString (ChannelContext::kChannelUIDKey, name, sizeof (name)) == kResultTrue) param->replaceString (0, name); else param->replaceString (0, undefinedStr); } // get Channel Index param = static_cast (parameters.getParameter (kChannelIndexId)); if (param) { int64 index; if (list->getInt (ChannelContext::kChannelIndexKey, index) == kResultTrue) { String128 string128; Steinberg::UString (string128, 128).printInt (index); param->replaceString (0, string128); } else param->replaceString (0, undefinedStr); } // get Channel Index Namespace Order param = static_cast (parameters.getParameter (kChannelIndexNamespaceOrderId)); if (param) { int64 index; if (list->getInt (ChannelContext::kChannelIndexNamespaceOrderKey, index) == kResultTrue) { String128 string128; Steinberg::UString (string128, 128).printInt (index); param->replaceString (0, string128); } else param->replaceString (0, undefinedStr); } // get the channel Index Namespace Length param = static_cast ( parameters.getParameter (kChannelIndexNamespaceLengthId)); if (param) { int64 length; if (list->getInt (ChannelContext::kChannelIndexNamespaceLengthKey, length) == kResultTrue) { String128 string128; Steinberg::UString (string128, 128).printInt (length); param->replaceString (0, string128); } else param->replaceString (0, undefinedStr); } // get the channel Index Namespace param = static_cast (parameters.getParameter (kChannelIndexNamespaceId)); if (param) { String128 name; if (list->getString (ChannelContext::kChannelIndexNamespaceKey, name, sizeof (name)) == kResultTrue) param->replaceString (0, name); else param->replaceString (0, undefinedStr); } // get plug-in Channel Location param = static_cast (parameters.getParameter (kChannelPluginLocationId)); if (param) { int64 location; if (list->getInt (ChannelContext::kChannelPluginLocationKey, location) == kResultTrue) { String128 string128; switch (location) { case ChannelContext::kPreVolumeFader: Steinberg::UString (string128, 128).fromAscii ("PreVolFader"); break; case ChannelContext::kPostVolumeFader: Steinberg::UString (string128, 128).fromAscii ("PostVolFader"); break; case ChannelContext::kUsedAsPanner: Steinberg::UString (string128, 128).fromAscii ("UsedAsPanner"); break; default: Steinberg::UString (string128, 128).fromAscii ("unknown!"); break; } param->replaceString (0, string128); } else param->replaceString (0, undefinedStr); } // get Channel Color param = static_cast (parameters.getParameter (kChannelColorId)); if (param) { int64 color; if (list->getInt (ChannelContext::kChannelColorKey, color) == kResultTrue) { uint32 channelColor = (uint32)color; char str[10]; snprintf (str, 10, "%x%x%x%x", ChannelContext::GetAlpha (channelColor), ChannelContext::GetRed (channelColor), ChannelContext::GetGreen (channelColor), ChannelContext::GetBlue (channelColor)); String128 string128; Steinberg::UString (string128, 128).fromAscii (str); param->replaceString (0, string128); } else param->replaceString (0, undefinedStr); } // we have to inform the host that our strings have changed (values not) if (componentHandler) componentHandler->restartComponent (kParamValuesChanged); return kResultTrue; } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/source/plugcontroller.h000066400000000000000000000070441461511344300263760ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/channelcontext/source/plugcontroller.h // Created by : Steinberg, 02/2014 // Description : channelcontext Controller Example for VST SDK 3.x // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" #include "pluginterfaces/vst/ivstchannelcontextinfo.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController //------------------------------------------------------------------------ class PlugController : public EditControllerEx1, public ChannelContext::IInfoListener { public: //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this controller //------------------------------------------------------------------------ static FUnknown* createInstance (void* /*context*/) { return (IEditController*)new PlugController; } //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; //---from EditController----- tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; //---from ChannelContext::IInfoListener----- tresult PLUGIN_API setChannelContextInfos (IAttributeList* list) SMTG_OVERRIDE; //---Interface--------- OBJ_METHODS (PlugController, EditControllerEx1) DEFINE_INTERFACES DEF_INTERFACE (ChannelContext::IInfoListener) END_DEFINE_INTERFACES (EditController) DELEGATE_REFCOUNT (EditControllerEx1) //------------------------------------------------------------------------ private: }; } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/source/plugentry.cpp000066400000000000000000000103601461511344300257020ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/channelcontext/source/plugentry.cpp // Created by : Steinberg, 02/2014 // Description : ChannelContext Example for VST SDK 3.x // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcontroller.h" #include "plugcids.h" // for class ids #include "version.h" // for versioning #include "public.sdk/source/main/pluginfactory.h" #define stringPluginName "Test Channel Context" using namespace Steinberg; using namespace Steinberg::Vst; //------------------------------------------------------------------------ // VST Plug-in Entry //------------------------------------------------------------------------ // Windows: do not forget to include a .def file in your project to export // GetPluginFactory function! //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID(PlugProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) stringPluginName, // here the plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers "Spatial|Fx|Up-Downmix|Instrument",// Subcategory for this plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::Plug::createInstance) // function pointer called when this component should be instantiated // its kVstComponentControllerClass component DEF_CLASS2 (INLINE_UID_FROM_FUID (PlugControllerUID), PClassInfo::kManyInstances, // cardinality kVstComponentControllerClass,// the Controller category (do not change this) stringPluginName "Controller", // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::PlugController::createInstance)// function pointer called when this component should be instantiated END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/source/plugparamids.h000066400000000000000000000047761461511344300260240ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/channelcontext/source/plugparamids.h // Created by : Steinberg, 02/2014 // Description : define the parameter IDs used by channelcontext // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once enum { /** parameter ID */ kBypassId = 0, ///< Bypass value (we will handle the bypass process) (is automatable) kChannelUIDId, ///< read Only parameters kChannelUIDLengthId, kChannelNameId, kChannelNameLengthId, kChannelIndexNamespaceOrderId, kChannelIndexNamespaceId, kChannelIndexNamespaceLengthId, kChannelColorId, kChannelIndexId, kChannelPluginLocationId }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/channelcontext/source/version.h000066400000000000000000000055361461511344300250140ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/channelcontext/source/version.h // Created by : Steinberg, 02/2014 // Description : Example of handle the versioning and copyright info of the plug-in // used for the resources (RC file for example) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "TestChannelContext.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "TestChannelContext VST3-SDK (64Bit)" #else #define stringFileDescription "TestChannelContext VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/common/000077500000000000000000000000001461511344300201205ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/common/logscale.h000066400000000000000000000206071461511344300220670ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/common/logscale.h // Created by : Steinberg, 10/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include "pluginterfaces/base/ustring.h" #include "public.sdk/source/vst/vstparameters.h" #include namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- /** LogScale class. Scales [srcMin srcMax] to [destMin destMax] Scaling curve is defined by given outValue for given inValue \section example1 Example for stretched lower range LogScale myLogScale (0, 1, 0, 1, 0.5, 0.1); \n means: input and output ranges are the same, but myLogScale.scale (0.5) is 0.1 ([0, 0.5, 1] => [0, 0.1, 1]) \section example2 Example for compressed lower range LogScale myLogScale (0, 1, 0, 1, 0.5, 0.9); \n means: input and output ranges are the same, but myLogScale.scale (0.5) is 0.9 ([0, 0.5, 1] => [0, 0.9, 1]) \section example3 Example for filter frequency range LogScale myLogScale (0, 1, 80, 22000, 0.5, 2000); \n means: input range is between 0 and 1 and output range is between 80 and 22000 and myLogScale.scale (0.5) is 2000 ([0, 0.5, 1] => [80, 2000, 22000]) */ template class LogScale { public: /** Constructor. */ LogScale (T srcMin, T srcMax, T destMin, T destMax, T inValue=0.5, T outValue=0.1); /** Default Constructor with [0, 0.5, 1] => [0, 0.1, 1]. */ LogScale (); /** Applies a new scale setting. Note that destMin should be different than destMax! The same for srcMin and srcMax. */ void changeScaling (T srcMin, T srcMax, T destMin, T destMax, T inValue, T outValue); /** Computes the scale from pIn input buffer to pOut output buffer (pIn and POut could be the same buffer). */ void scale (T* pIn, T* pOut, int32 nSamples); /** Computes for one given value the scale. */ T scale (T input) const; /** Computes the inverse scale from pIn input buffer to pOut output buffer (pIn and POut could be the same buffer). */ void invscale (T* pIn, T* pOut, int32 nSamples); /** Computes for one given value the inverse scale. */ T invscale (T input) const; /** Same than invscale with a check of the input. */ T invscaleCheck (T in) const; protected: void setScaling (T srcMin, T srcMax, T destMin, T destMax, T inValue, T outValue); T scaleFactor; T scaleFactorInv; T srcScale; T srcScaleInv; T srcMin; T expo; T expoInv; T destMin; }; //----------------------------------------------------------------------------- template LogScale::LogScale (T srcMin, T srcMax, T destMin, T destMax, T inValue, T outValue) { setScaling (srcMin, srcMax, destMin, destMax, inValue, outValue); } //----------------------------------------------------------------------------- template LogScale::LogScale () { setScaling (0.f, 1.f, 0.f, 1.f, 0.5f, 0.1f); } //----------------------------------------------------------------------------- template void LogScale::changeScaling (T srcMin, T srcMax, T destMin, T destMax, T inValue, T outValue) { setScaling (srcMin, srcMax, destMin, destMax, inValue, outValue); } //----------------------------------------------------------------------------- template void LogScale::setScaling (T _srcMin, T _srcMax, T _destMin, T _destMax, T inValue, T outValue) { srcMin = _srcMin; destMin = _destMin; scaleFactor = (_destMax - _destMin); scaleFactorInv = 1.f / scaleFactor; inValue = (inValue - _srcMin) / (_srcMax - _srcMin); SMTG_ASSERT (inValue > 0.); expo = ::log ((outValue - _destMin) / scaleFactor) / ::log (inValue); expoInv = 1.f / expo; srcScale = (_srcMax - _srcMin); srcScaleInv = 1.f / srcScale; } //----------------------------------------------------------------------------- template void LogScale::scale (T* pIn, T* pOut, int32 nSamples) { for (int32 i = 0; i < nSamples; i++) pOut[i] = ::powf ((float)((pIn[i] - srcMin) * srcScaleInv), (float)expo) * scaleFactor + destMin; } //----------------------------------------------------------------------------- template T LogScale::scale (T input) const { return ::powf ((float)((input - srcMin) * srcScaleInv), (float)expo) * scaleFactor + destMin; } //----------------------------------------------------------------------------- template void LogScale::invscale (T* pIn, T* pOut, int32 nSamples) { for (int32 i = 0; i < nSamples; i++) pOut[i] = ::powf ((float)((pIn[i] - destMin) * scaleFactorInv), (float)expoInv) * srcScale + srcMin; } //----------------------------------------------------------------------------- template T LogScale::invscale (T input) const { return ::powf ((float)((input - destMin) * scaleFactorInv), (float)expoInv) * srcScale + srcMin; } //----------------------------------------------------------------------------- template T LogScale::invscaleCheck (T input) const { T basis = (float)((input - destMin) * scaleFactorInv); if (basis < 0.) basis = 0.; return ::powf ((float)basis, (float)expoInv) * srcScale + srcMin; } //----------------------------------------------------------------------------- /** Parameter class with a LogScale. Define a parameter using the LogScale. \sa Steinberg::Vst::LogScale */ template class LogScaleParameter : public Parameter { public: LogScaleParameter (const TChar* title, ParamID tag, LogScale& logScale, const TChar* units = 0, int32 flags = ParameterInfo::kCanAutomate, UnitID unitID = kRootUnitId) : Parameter (title, tag, units, 0., 0, flags, unitID) , logScale (logScale) { } virtual void toString (ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE { UString128 wrapper; wrapper.printFloat (toPlain (_valueNormalized), precision); wrapper.copyTo (string, 128); } virtual bool fromString (const TChar* string, ParamValue& _valueNormalized) const SMTG_OVERRIDE { UString wrapper ((TChar*)string, strlen16 (string)); if (wrapper.scanFloat (_valueNormalized)) { _valueNormalized = toNormalized (_valueNormalized); return true; } return false; } virtual ParamValue toPlain (ParamValue _valueNormalized) const SMTG_OVERRIDE { return logScale.scale (_valueNormalized); } virtual ParamValue toNormalized (ParamValue plainValue) const SMTG_OVERRIDE { return logScale.invscale (plainValue); } OBJ_METHODS (LogScaleParameter, Parameter) protected: LogScale& logScale; ParamValue multiplier; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/common/voicebase.h000066400000000000000000000150531461511344300222350ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/common/voicebase.h // Created by : Steinberg, 02/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/vsttypes.h" #include "base/source/fdebug.h" #ifdef DEBUG_LOG #undef DEBUG_LOG #endif #define DEBUG_LOG DEVELOPMENT namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- /** Example Voice class for the Steinberg::Vst::VoiceProcessorImplementation Implementation classes need to implement the following additional method: \code{.cpp} bool process (SamplePrecision* outputBuffers[numChannels], int32 numSamples); \endcode */ //----------------------------------------------------------------------------- template class VoiceBase { public: /** Returns the current note id of this voice. */ int32 getNoteId () const { return noteId; } /** Sets a new GlobalParameterStorage. */ virtual void setGlobalParameterStorage (GlobalParameterStorage* globalParameters) { this->globalParameters = globalParameters; } /** Sets the sampleRate. */ virtual void setSampleRate (ParamValue sampleRate) { this->sampleRate = sampleRate; } /** Returns the sampleRate. */ float getSampleRate () const { return (float)sampleRate; } virtual void setNoteExpressionValue (int32 index, ParamValue value) { if (index < numValues) values[index] = value; } virtual void noteOn (int32 pitch, ParamValue velocity, float tuning, int32 sampleOffset, int32 noteId); virtual void noteOff (ParamValue velocity, int32 sampleOffset); virtual void reset () { noteOnSampleOffset = -1; noteOffSampleOffset = -1; noteId = -1; tuning = 0; } //----------------------------------------------------------------------------- protected: VoiceBase (); VoiceBase (const VoiceBase& vb); virtual ~VoiceBase (); GlobalParameterStorage* globalParameters; int32 noteId; int32 pitch; int32 noteOnSampleOffset; int32 noteOffSampleOffset; float tuning; ParamValue sampleRate; ParamValue noteOnVelocity; ParamValue noteOffVelocity; ParamValue values[numValues]; }; //----------------------------------------------------------------------------- template VoiceBase::VoiceBase () : globalParameters (0) , noteId (-1) , pitch (-1) , noteOnSampleOffset (0) , noteOffSampleOffset (0) , sampleRate (44100.) , noteOnVelocity (0.) , noteOffVelocity (0.) { } //----------------------------------------------------------------------------- template VoiceBase::VoiceBase (const VoiceBase& vb) : globalParameters (vb.globalParameters) , noteId (vb.noteId) , pitch (vb.pitch) , noteOnSampleOffset (vb.noteOnSampleOffset) , noteOffSampleOffset (vb.noteOffSampleOffset) , noteOnVelocity (vb.noteOnVelocity) , noteOffVelocity (vb.noteOffVelocity) , sampleRate (vb.sampleRate) , values (0) { for (uint32 i = 0; i < numValues; i++) values[i] = vb.values[i]; } //----------------------------------------------------------------------------- template VoiceBase::~VoiceBase () { } //----------------------------------------------------------------------------- template void VoiceBase::noteOn (int32 pitch, ParamValue velocity, float tuning, int32 sampleOffset, int32 nId) { this->pitch = pitch; noteOnVelocity = velocity; noteOnSampleOffset = sampleOffset; noteId = nId; this->tuning = tuning; #if DEBUG_LOG FDebugPrint ("NoteOn :%d\n", nId); #endif } //----------------------------------------------------------------------------- template void VoiceBase::noteOff (ParamValue velocity, int32 sampleOffset) { noteOffVelocity = velocity; noteOffSampleOffset = sampleOffset; #if DEBUG_LOG FDebugPrint ("NoteOff:%d\n", this->noteId); #endif } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/common/voiceprocessor.h000066400000000000000000000320631461511344300233420ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/common/voiceprocessor.h // Created by : Steinberg, 02/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstevents.h" #include "base/source/fdebug.h" #include #ifdef DEBUG_LOG #undef DEBUG_LOG #endif #define DEBUG_LOG DEVELOPMENT #ifndef VOICEPROCESSOR_BLOCKSIZE #define VOICEPROCESSOR_BLOCKSIZE 32 #endif namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- /** A Voice Processor class. A virtual base class for a voice manager implementation. The idea behind this class is to make it easier to support either single precision or double precision samples (float or double) or different channel layouts. Example: \code{.cpp} //------------------------------------------------------------------------ class MySynthProcessor : public AudioEffect { public: tresult PLUGIN_API setActive (TBool state); tresult PLUGIN_API process (ProcessData& data); protected: VoiceProcessor* voiceProcessor; }; tresult PLUGIN_API MySynthProcessor::setActive (TBool state) { if (state) { if (processSetup.symbolicSampleSize == kSample32) voiceProcessor = new VoiceProcessorImplementation, 2, MAX_VOICES, void> (processSetup.sampleRate, 0); else if (processSetup.symbolicSampleSize == kSample64) voiceProcessor = new VoiceProcessorImplementation, 2, MAX_VOICES, void> (processSetup.sampleRate, 0); else return kInvalidArgument; } else { delete voiceProcessor; voiceProcessor = 0; } return kResultTrue; } tresult PLUGIN_API MySynthProcessor::process (ProcessData& data) { return voiceProcessor->process (data); } \endcode \sa Steinberg::Vst::VoiceProcessorImplementation */ //----------------------------------------------------------------------------- class VoiceProcessor { public: VoiceProcessor () : activeVoices (0), mClearOutputNeeded (true) {} virtual ~VoiceProcessor () {} virtual tresult process (ProcessData& data) = 0; virtual void processEvent (Event evt) = 0; /** Returns the number of active voices. */ int32 getActiveVoices () const { return activeVoices; } void clearOutputNeeded (bool val) { mClearOutputNeeded = val; } protected: int32 activeVoices; bool mClearOutputNeeded; }; //----------------------------------------------------------------------------- /** A Simple Voice Processor Implementation supporting note expression events. \param Precision must be either float or double \param VoiceClass the voice class \param numChannels number of channels \param maxVoices number of maximum voices \param GlobalParameterStorage a class holding global parameters The VoiceClass must implement the following methods: \code{.cpp} int32 getNoteId () const; void setGlobalParameterStorage (GlobalParameterStorage* globalParameters); void setSampleRate (ParamValue sampleRate); void setNoteExpressionValue (int32 index, ParamValue value); void noteOn (int32 pitch, ParamValue velocity, float tuning, int32 sampleOffset, int32 noteId); void noteOff (ParamValue velocity, int32 sampleOffset); bool process (SamplePrecision* outputBuffers[numChannels], int32 numSamples); void reset () \endcode See \ref Steinberg::Vst::VoiceBase for an example base class. This implementation does not support advanced features like voice stealing when maxVoices is reached, etc ... */ //----------------------------------------------------------------------------- template class VoiceProcessorImplementation : public VoiceProcessor { public: VoiceProcessorImplementation (float sampleRate, GlobalParameterStorage* globalParameters = 0); ~VoiceProcessorImplementation (); tresult process (ProcessData& data) override; void processEvent (Event evt) override; protected: VoiceClass* getVoice (int32 noteId); VoiceClass* findVoice (int32 noteId); VoiceClass voices [maxVoices]; }; //----------------------------------------------------------------------------- template VoiceProcessorImplementation::VoiceProcessorImplementation (float sampleRate, GlobalParameterStorage* globalParameters) { for (int32 i = 0; i < maxVoices; i++) { voices[i].setGlobalParameterStorage (globalParameters); voices[i].setSampleRate (sampleRate); voices[i].reset (); } } //----------------------------------------------------------------------------- template VoiceProcessorImplementation::~VoiceProcessorImplementation () { } //----------------------------------------------------------------------------- template VoiceClass* VoiceProcessorImplementation::getVoice (int32 noteId) { VoiceClass* firstFreeVoice = 0; if (noteId != -1) { for (int32 i = 0; i < maxVoices; i++) { if (voices[i].getNoteId () == noteId) { return &voices[i]; } else if (firstFreeVoice == 0 && voices[i].getNoteId () == -1) { firstFreeVoice = &voices[i]; } } } return firstFreeVoice; } //----------------------------------------------------------------------------- template VoiceClass* VoiceProcessorImplementation::findVoice (int32 noteId) { if (noteId != -1) { for (int32 i = 0; i < maxVoices; i++) { if (voices[i].getNoteId () == noteId) { return &voices[i]; } } } return 0; } //----------------------------------------------------------------------------- template void VoiceProcessorImplementation::processEvent (Event e) { switch (e.type) { //----------------------- case Event::kNoteOnEvent: { if (e.noteOn.noteId == -1) e.noteOn.noteId = e.noteOn.pitch; VoiceClass* voice = getVoice (e.noteOn.noteId); if (voice) { voice->noteOn (e.noteOn.pitch, e.noteOn.velocity, e.noteOn.tuning, e.sampleOffset, e.noteOn.noteId); this->activeVoices++; // data.outputEvents->addEvent (e); } break; } //----------------------- case Event::kNoteOffEvent: { if (e.noteOff.noteId == -1) e.noteOff.noteId = e.noteOff.pitch; VoiceClass* voice = findVoice (e.noteOff.noteId); if (voice) { voice->noteOff (e.noteOff.velocity, e.sampleOffset); // data.outputEvents->addEvent (e); } #if DEBUG_LOG else { FDebugPrint ("Voice for kNoteOffEvent not found : %d\n", e.noteOff.noteId); } #endif break; } //----------------------- case Event::kNoteExpressionValueEvent: { VoiceClass* voice = findVoice (e.noteExpressionValue.noteId); if (voice) { voice->setNoteExpressionValue (e.noteExpressionValue.typeId, e.noteExpressionValue.value); // data.outputEvents->addEvent (e); } #if DEBUG_LOG else { FDebugPrint ("Voice for kNoteExpressionValueEvent not found : %d\n", e.noteExpressionValue.noteId); } #endif break; } } } //----------------------------------------------------------------------------- #if VOICEPROCESSOR_BLOCKSIZE <= 0 // voice processing happens in chunks of the block size //----------------------------------------------------------------------------- template tresult VoiceProcessorImplementation::process (ProcessData& data) { if (mClearOutputNeeded) for (int32 i = 0; i < numChannels; i++) memset (data.outputs[0].channelBuffers32[i], 0, data.numSamples * sizeof (Precision)); IEventList* inputEvents = data.inputEvents; if (inputEvents) { Event e; int32 numEvents = inputEvents->getEventCount (); for (int32 i = 0; i < numEvents; i++) { if (inputEvents->getEvent (i, e) == kResultTrue) { processEvent (e); } } } for (int32 i = 0; i < maxVoices; i++) { if (voices[i].getNoteId () != -1) { if (!voices[i].process ((Precision**)data.outputs[0].channelBuffers32, data.numSamples)) { voices[i].reset (); this->activeVoices--; } } } return kResultTrue; } //----------------------------------------------------------------------------- #else // voice processing happens in chunks of VOICEPROCESSOR_BLOCKSIZE samples //----------------------------------------------------------------------------- template tresult VoiceProcessorImplementation::process (ProcessData& data) { const int32 kBlockSize = VOICEPROCESSOR_BLOCKSIZE; int32 numSamples = data.numSamples; int32 samplesProcessed = 0; int32 i; IEventList* inputEvents = data.inputEvents; Event e = {}; Event* eventPtr = nullptr; int32 eventIndex = 0; int32 numEvents = inputEvents ? inputEvents->getEventCount () : 0; // get the first event if (numEvents) { inputEvents->getEvent (0, e); eventPtr = &e; } // initialize audio output buffers Precision* buffers[numChannels]; for (i = 0; i < numChannels; i++) { buffers[i] = (Precision*)data.outputs[0].channelBuffers32[i]; if (mClearOutputNeeded) memset (buffers[i], 0, data.numSamples * sizeof (Precision)); } while (numSamples > 0) { int32 samplesToProcess = std::min (kBlockSize, numSamples); while (eventPtr != nullptr) { // if the event is not in the current processing block then adapt offset for next block if (e.sampleOffset > samplesToProcess) { e.sampleOffset -= samplesToProcess; break; } processEvent (e); // get next event eventIndex++; if (eventIndex < numEvents) { if (inputEvents->getEvent (eventIndex, e) == kResultTrue) { e.sampleOffset -= samplesProcessed; } else { eventPtr = nullptr; } } else { eventPtr = nullptr; } } // end while (event != 0) // now process the block for (i = 0; i < maxVoices; i++) { if (voices[i].getNoteId () != -1) { if (!voices[i].process (buffers, samplesToProcess)) { voices[i].reset (); this->activeVoices--; } } } // update the counters for (i = 0; i < numChannels; i++) buffers[i] += samplesToProcess; numSamples -= samplesToProcess; samplesProcessed += samplesToProcess; } // end while (numSamples > 0) return kResultTrue; } #endif //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/000077500000000000000000000000001461511344300212445ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/CMakeLists.txt000066400000000000000000000037231461511344300240110ustar00rootroot00000000000000 if(NOT SMTG_ENABLE_VSTGUI_SUPPORT) return() endif() cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-dataexchange VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Data Exchange example" ) smtg_add_vst3plugin(dataexchange source/factory.cpp source/controller.cpp source/processor.cpp source/shared.h source/version.h source/waveformview.h source/waveformview.cpp source/3rdparty/nanovg/src/nanovg.h source/3rdparty/nanovg/src/nanovg.c ) smtg_target_add_plugin_resources(dataexchange RESOURCES resource/editor.uidesc ) target_link_libraries(dataexchange PRIVATE vstgui_support ) target_include_directories(dataexchange PRIVATE source/3rdparty/nanovg/src/) smtg_target_setup_as_vst3_example(dataexchange) if(SMTG_MAC) target_include_directories(dataexchange PRIVATE source/3rdparty/MetalNanoVG/src/) target_sources(dataexchange PRIVATE source/waveformview_metal.mm source/3rdparty/MetalNanoVG/src/nanovg_mtl_shaders.metal source/3rdparty/MetalNanoVG/src/nanovg_mtl.h source/3rdparty/MetalNanoVG/src/nanovg_mtl.m ) set_source_files_properties( "source/3rdparty/MetalNanoVG/src/nanovg_mtl.m" PROPERTIES COMPILE_FLAGS "-fobjc-arc" ) target_link_libraries(dataexchange PRIVATE "-framework Metal" "-framework QuartzCore" "-framework CoreAudio" ) endif(SMTG_MAC) if(SMTG_WIN) target_include_directories(dataexchange PRIVATE source/3rdparty/D3D11NanoVG/) target_sources(dataexchange PRIVATE source/waveformview_direct3d.cpp source/3rdparty/D3D11NanoVG/D3D11PixelShader.h source/3rdparty/D3D11NanoVG/D3D11PixelShaderAA.h # source/3rdparty/D3D11NanoVG/D3D11PixelShader.hlsl # source/3rdparty/D3D11NanoVG/D3D11PixelShaderAA.hlsl # source/3rdparty/D3D11NanoVG/D3D11PixelShaderNoAA.hlsl # source/3rdparty/D3D11NanoVG/D3D11VertexShader.hlsl source/3rdparty/D3D11NanoVG/D3D11VertexShader.h source/3rdparty/D3D11NanoVG/nanovg_d3d11.h ) endif(SMTG_WIN) vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/resource/000077500000000000000000000000001461511344300230735ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/resource/editor.uidesc000066400000000000000000000221541461511344300255630ustar00rootroot00000000000000{ "vstgui-ui-description": { "version": "1", "bitmaps": {}, "fonts": {}, "colors": { "background": "#1d1d1dff", "control.back": "#64646462", "control.frame": "#676767ff", "control.text": "#ffffffff", "label.text": "#676767ff", "waveform.left": "#ff0000ff", "waveform.right": "#00ff00bc" }, "control-tags": { "Auto_ReEnable_DataExchange": "10005", "DisplayFreq": "10002", "EnableDataExchange": "1", "FPS": "10004", "Force_MessageHandling": "10003", "PeakLeft": "10000", "PeakRight": "10001" }, "custom": { "FocusDrawing": {}, "VST3Editor": { "Path": "/Volumes/Quasar/mono-dev-pluginset/public.sdk/samples/vst/dataexchange/resource/editor.uidesc" }, "UIGridController": { "Grids": "1x 1,5x 5,10x 10,12x 12,15x 15" }, "UIEditController": { "EditViewScale": "1", "EditorSize": "0, 0, 1302, 978", "SplitViewSize_0_0": "0.572478991596638620009684927936177700758", "SplitViewSize_0_1": "0.4065126050420168057897285507351625710726", "SplitViewSize_1_0": "0.4863445378151260434229641305137192830443", "SplitViewSize_1_1": "0.5084033613445377852713136235252022743225", "SplitViewSize_2_0": "0.7680491551459293075865275568503420799971", "SplitViewSize_2_1": "0.2281105990783410253364138498000102117658", "TabSwitchValue": "2", "UI Theme": "Dark", "Version": "1", "ViewBackground": "3" }, "UITemplateController": { "SelectedTemplate": "view" }, "UIAttributesController": {}, "UIViewCreatorDataSource": { "SelectedRow": "26" }, "UITagsDataSource": { "SelectedRow": "0" }, "UIColorsDataSource": { "SelectedRow": "6" }, "UIFontsDataSource": { "SelectedRow": "-1" } }, "templates": { "view": { "attributes": { "autosize": "left right top bottom ", "background-color": "background", "background-color-draw-style": "filled and stroked", "class": "CViewContainer", "maxSize": "32767, 32000", "minSize": "500, 160", "mouse-enabled": "true", "opacity": "1", "origin": "0, 0", "size": "500, 160", "transparent": "false", "wants-focus": "false" }, "children": { "CCheckBox": { "attributes": { "autosize-to-fit": "false", "boxfill-color": "control.back", "boxframe-color": "control.frame", "checkmark-color": "control.text", "class": "CCheckBox", "control-tag": "EnableDataExchange", "default-value": "0", "draw-crossbox": "true", "font": "~ SystemFont", "font-color": "control.text", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 10", "round-rect-radius": "0", "size": "210, 20", "title": "Enable Realtime Data exchange", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CView": { "attributes": { "autosize": "left right top bottom ", "class": "CView", "custom-view-name": "PeakImageView", "mouse-enabled": "true", "opacity": "1", "origin": "0, 60", "size": "500, 90", "transparent": "false", "wants-focus": "false" } }, "CSlider": { "attributes": { "bitmap-offset": "0, 0", "class": "CSlider", "control-tag": "DisplayFreq", "default-value": "0.0990991", "draw-back": "true", "draw-back-color": "~ BlackCColor", "draw-frame": "true", "draw-frame-color": "~ GreyCColor", "draw-value": "true", "draw-value-color": "control.text", "draw-value-from-center": "false", "draw-value-inverted": "false", "frame-width": "1", "handle-offset": "0, 0", "max-value": "1", "min-value": "0", "mode": "use global", "mouse-enabled": "true", "opacity": "1", "orientation": "horizontal", "origin": "410, 10", "reverse-orientation": "false", "size": "70, 20", "tooltip": "Pixels Per Milliseconds", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1", "zoom-factor": "1.5" } }, "CCheckBox": { "attributes": { "autosize-to-fit": "false", "boxfill-color": "control.back", "boxframe-color": "control.frame", "checkmark-color": "control.text", "class": "CCheckBox", "control-tag": "Force_MessageHandling", "default-value": "0", "draw-crossbox": "true", "font": "~ SystemFont", "font-color": "control.text", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 30", "round-rect-radius": "0", "size": "210, 20", "title": "Force Message Handling", "tooltip": "Deactivate and Activate the plug-in after changing this.", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "control.text", "frame-color": "~ BlackCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "400, 30", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "90, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Pixels per Millisecond", "transparent": "true", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "FPS", "default-value": "0", "font": "~ NormalFont", "font-antialias": "true", "font-color": "control.text", "frame-color": "~ BlackCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "270, 30", "round-rect-radius": "6", "shadow-color": "waveform.left", "size": "30, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFont", "font-antialias": "true", "font-color": "control.text", "frame-color": "~ BlackCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "300, 30", "round-rect-radius": "6", "shadow-color": "waveform.left", "size": "40, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "FPS", "transparent": "true", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CCheckBox": { "attributes": { "autosize-to-fit": "false", "boxfill-color": "control.back", "boxframe-color": "control.frame", "checkmark-color": "control.text", "class": "CCheckBox", "control-tag": "Auto_ReEnable_DataExchange", "default-value": "0", "draw-crossbox": "true", "font": "~ SystemFont", "font-color": "control.text", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "220, 10", "round-rect-radius": "0", "size": "120, 20", "title": "Auto Re-Enable", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } } } } } } }vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/resource/info.rc000066400000000000000000000026341461511344300243610ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/000077500000000000000000000000001461511344300225445ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/000077500000000000000000000000001461511344300243145ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/D3D11NanoVG/000077500000000000000000000000001461511344300261015ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/D3D11NanoVG/D3D11PixelShader.h000066400000000000000000000663041461511344300311300ustar00rootroot00000000000000#if 0 // // Generated by Microsoft (R) HLSL Shader Compiler 10.1 // // // Buffer Definitions: // // cbuffer PS_CONSTANTS // { // // float4x4 scissorMat; // Offset: 0 Size: 64 // float4 scissorExt; // Offset: 64 Size: 16 // float4 scissorScale; // Offset: 80 Size: 16 // float4x4 paintMat; // Offset: 96 Size: 64 // float4 extent; // Offset: 160 Size: 16 // float4 radius; // Offset: 176 Size: 16 // float4 feather; // Offset: 192 Size: 16 // float4 innerCol; // Offset: 208 Size: 16 // float4 outerCol; // Offset: 224 Size: 16 // float4 strokeMult; // Offset: 240 Size: 16 [unused] // int texType; // Offset: 256 Size: 4 // int type; // Offset: 260 Size: 4 // // } // // // Resource Bindings: // // Name Type Format Dim HLSL Bind Count // ------------------------------ ---------- ------- ----------- -------------- ------ // g_sampler sampler NA NA s0 1 // g_texture texture float4 2d t0 1 // PS_CONSTANTS cbuffer NA NA cb0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Position 0 xyzw 0 POS float // TEXCOORD 0 xy 1 NONE float xy // TEXCOORD 1 zw 1 NONE float zw // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_TARGET 0 xyzw 0 TARGET float xyzw // // // Constant buffer to DX9 shader constant mappings: // // Target Reg Buffer Start Reg # of Regs Data Conversion // ---------- ------- --------- --------- ---------------------- // c0 cb0 0 3 ( FLT, FLT, FLT, FLT) // c3 cb0 4 5 ( FLT, FLT, FLT, FLT) // c8 cb0 10 5 ( FLT, FLT, FLT, FLT) // c13 cb0 16 1 ( INT, INT, FLT, FLT) // // // Sampler/Resource to DX9 shader sampler mappings: // // Target Sampler Source Sampler Source Resource // -------------- --------------- ---------------- // s0 s0 t0 // // // Level9 shader bytecode: // ps_2_x def c14, 0.5, 0, -1, -2 dcl t0 dcl_2d s0 mul r0.xy, t0.z, c1 mad r0.xy, c0, t0.w, r0 add r0.xy, r0, c2 abs r0.xy, r0 add r0.xy, r0, -c3 mov r1.xzw, c14 mad_sat r0.xy, r0, -c4, r1.x mul r0.x, r0.y, r0.x mul r0.yz, t0.z, c6.xxyw mad r0.yz, c5.xxyw, t0.w, r0 add r0.yz, r0, c7.xxyw rcp r2.x, c8.x rcp r2.y, c8.y mul r2.xy, r0.yzzw, r2 texld r3, t0, s0 texld r2, r2, s0 mul r4.xyz, r3.w, r3 add r5, r1.zzww, c13.yxxy mul r5, r5, r5 cmp r3.xyz, -r5.y, r4, r3 cmp r3.yzw, -r5.z, r3.x, r3 mul r3, r0.x, r3 mul r3, r3, c11 cmp r3, -r5.w, -c14.z, r3 abs r0.yz, r0 mul r1.yzw, r2.w, r2.xxyz cmp r2.xyz, -r5.y, r1.yzww, r2 cmp r2.yzw, -r5.z, r2.x, r2 mul r2, r2, c11 mul r2, r0.x, r2 cmp r2, -r5.x, r2, r3 mov r3.xy, c8 add r1.yz, r3.xxyw, -c9.x add r0.yz, r0, -r1 max r1.yz, r0, c14.y max r1.w, r0.y, r0.z min r0.y, r1.w, c14.y dp2add r0.z, r1.yzzw, r1.yzzw, c14.y rsq r0.z, r0.z rcp r0.z, r0.z add r0.y, r0.z, r0.y add r0.y, r0.y, -c9.x mad r0.y, c10.x, r1.x, r0.y rcp r0.z, c10.x mul_sat r0.y, r0.z, r0.y mov r1, c11 add r1, -r1, c12 mad r1, r0.y, r1, c11 mul r0, r0.x, r1 mul r1.x, c13.y, c13.y cmp r0, -r1.x, r0, r2 mov oC0, r0 // approximately 53 instruction slots used (2 texture, 51 arithmetic) ps_4_0 dcl_constantbuffer CB0[17], immediateIndexed dcl_sampler s0, mode_default dcl_resource_texture2d (float,float,float,float) t0 dcl_input_ps linear v1.xy dcl_input_ps linear v1.zw dcl_output o0.xyzw dcl_temps 3 mul r0.xy, v1.wwww, cb0[1].xyxx mad r0.xy, cb0[0].xyxx, v1.zzzz, r0.xyxx add r0.xy, r0.xyxx, cb0[2].xyxx add r0.xy, |r0.xyxx|, -cb0[4].xyxx mad_sat r0.xy, -r0.xyxx, cb0[5].xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) mul r0.x, r0.y, r0.x if_z cb0[16].y mul r0.yz, v1.wwww, cb0[7].xxyx mad r0.yz, cb0[6].xxyx, v1.zzzz, r0.yyzy add r0.yz, r0.yyzy, cb0[8].xxyx add r1.xy, cb0[10].xyxx, -cb0[11].xxxx add r0.yz, |r0.yyzy|, -r1.xxyx max r0.w, r0.z, r0.y min r0.w, r0.w, l(0.000000) max r0.yz, r0.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) dp2 r0.y, r0.yzyy, r0.yzyy sqrt r0.y, r0.y add r0.y, r0.y, r0.w add r0.y, r0.y, -cb0[11].x mad r0.y, cb0[12].x, l(0.500000), r0.y div_sat r0.y, r0.y, cb0[12].x add r1.xyzw, -cb0[13].xyzw, cb0[14].xyzw mad r1.xyzw, r0.yyyy, r1.xyzw, cb0[13].xyzw mul o0.xyzw, r0.xxxx, r1.xyzw else ieq r0.y, cb0[16].y, l(1) if_nz r0.y mul r0.yz, v1.wwww, cb0[7].xxyx mad r0.yz, cb0[6].xxyx, v1.zzzz, r0.yyzy add r0.yz, r0.yyzy, cb0[8].xxyx div r0.yz, r0.yyzy, cb0[10].xxyx sample r1.xyzw, r0.yzyy, t0.xyzw, s0 ieq r0.yz, cb0[16].xxxx, l(0, 1, 2, 0) mul r2.xyz, r1.wwww, r1.xyzx movc r1.xyz, r0.yyyy, r2.xyzx, r1.xyzx movc r1.yzw, r0.zzzz, r1.xxxx, r1.yyzw mul r1.xyzw, r1.xyzw, cb0[13].xyzw mul o0.xyzw, r0.xxxx, r1.xyzw else ieq r0.y, cb0[16].y, l(2) if_nz r0.y mov o0.xyzw, l(1.000000,1.000000,1.000000,1.000000) else sample r1.xyzw, v1.xyxx, t0.xyzw, s0 ieq r0.yz, cb0[16].xxxx, l(0, 1, 2, 0) mul r2.xyz, r1.wwww, r1.xyzx movc r1.xyz, r0.yyyy, r2.xyzx, r1.xyzx movc r1.yzw, r0.zzzz, r1.xxxx, r1.yyzw mul r0.xyzw, r0.xxxx, r1.xyzw mul o0.xyzw, r0.xyzw, cb0[13].xyzw endif endif endif ret // Approximately 54 instruction slots used #endif const BYTE g_D3D11PixelShader_Main[] = { 68, 88, 66, 67, 14, 64, 81, 101, 247, 99, 217, 101, 174, 153, 127, 7, 152, 44, 133, 191, 1, 0, 0, 0, 116, 14, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, 24, 4, 0, 0, 168, 10, 0, 0, 36, 11, 0, 0, 208, 13, 0, 0, 64, 14, 0, 0, 65, 111, 110, 57, 216, 3, 0, 0, 216, 3, 0, 0, 0, 2, 255, 255, 128, 3, 0, 0, 88, 0, 0, 0, 4, 0, 40, 0, 0, 0, 88, 0, 0, 0, 88, 0, 1, 0, 36, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 10, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, 13, 0, 2, 2, 0, 0, 1, 2, 255, 255, 81, 0, 0, 5, 14, 0, 15, 160, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 128, 191, 0, 0, 0, 192, 31, 0, 0, 2, 0, 0, 0, 128, 0, 0, 15, 176, 31, 0, 0, 2, 0, 0, 0, 144, 0, 8, 15, 160, 5, 0, 0, 3, 0, 0, 3, 128, 0, 0, 170, 176, 1, 0, 228, 160, 4, 0, 0, 4, 0, 0, 3, 128, 0, 0, 228, 160, 0, 0, 255, 176, 0, 0, 228, 128, 2, 0, 0, 3, 0, 0, 3, 128, 0, 0, 228, 128, 2, 0, 228, 160, 35, 0, 0, 2, 0, 0, 3, 128, 0, 0, 228, 128, 2, 0, 0, 3, 0, 0, 3, 128, 0, 0, 228, 128, 3, 0, 228, 161, 1, 0, 0, 2, 1, 0, 13, 128, 14, 0, 228, 160, 4, 0, 0, 4, 0, 0, 19, 128, 0, 0, 228, 128, 4, 0, 228, 161, 1, 0, 0, 128, 5, 0, 0, 3, 0, 0, 1, 128, 0, 0, 85, 128, 0, 0, 0, 128, 5, 0, 0, 3, 0, 0, 6, 128, 0, 0, 170, 176, 6, 0, 208, 160, 4, 0, 0, 4, 0, 0, 6, 128, 5, 0, 208, 160, 0, 0, 255, 176, 0, 0, 228, 128, 2, 0, 0, 3, 0, 0, 6, 128, 0, 0, 228, 128, 7, 0, 208, 160, 6, 0, 0, 2, 2, 0, 1, 128, 8, 0, 0, 160, 6, 0, 0, 2, 2, 0, 2, 128, 8, 0, 85, 160, 5, 0, 0, 3, 2, 0, 3, 128, 0, 0, 233, 128, 2, 0, 228, 128, 66, 0, 0, 3, 3, 0, 15, 128, 0, 0, 228, 176, 0, 8, 228, 160, 66, 0, 0, 3, 2, 0, 15, 128, 2, 0, 228, 128, 0, 8, 228, 160, 5, 0, 0, 3, 4, 0, 7, 128, 3, 0, 255, 128, 3, 0, 228, 128, 2, 0, 0, 3, 5, 0, 15, 128, 1, 0, 250, 128, 13, 0, 65, 160, 5, 0, 0, 3, 5, 0, 15, 128, 5, 0, 228, 128, 5, 0, 228, 128, 88, 0, 0, 4, 3, 0, 7, 128, 5, 0, 85, 129, 4, 0, 228, 128, 3, 0, 228, 128, 88, 0, 0, 4, 3, 0, 14, 128, 5, 0, 170, 129, 3, 0, 0, 128, 3, 0, 228, 128, 5, 0, 0, 3, 3, 0, 15, 128, 0, 0, 0, 128, 3, 0, 228, 128, 5, 0, 0, 3, 3, 0, 15, 128, 3, 0, 228, 128, 11, 0, 228, 160, 88, 0, 0, 4, 3, 0, 15, 128, 5, 0, 255, 129, 14, 0, 170, 161, 3, 0, 228, 128, 35, 0, 0, 2, 0, 0, 6, 128, 0, 0, 228, 128, 5, 0, 0, 3, 1, 0, 14, 128, 2, 0, 255, 128, 2, 0, 144, 128, 88, 0, 0, 4, 2, 0, 7, 128, 5, 0, 85, 129, 1, 0, 249, 128, 2, 0, 228, 128, 88, 0, 0, 4, 2, 0, 14, 128, 5, 0, 170, 129, 2, 0, 0, 128, 2, 0, 228, 128, 5, 0, 0, 3, 2, 0, 15, 128, 2, 0, 228, 128, 11, 0, 228, 160, 5, 0, 0, 3, 2, 0, 15, 128, 0, 0, 0, 128, 2, 0, 228, 128, 88, 0, 0, 4, 2, 0, 15, 128, 5, 0, 0, 129, 2, 0, 228, 128, 3, 0, 228, 128, 1, 0, 0, 2, 3, 0, 3, 128, 8, 0, 228, 160, 2, 0, 0, 3, 1, 0, 6, 128, 3, 0, 208, 128, 9, 0, 0, 161, 2, 0, 0, 3, 0, 0, 6, 128, 0, 0, 228, 128, 1, 0, 228, 129, 11, 0, 0, 3, 1, 0, 6, 128, 0, 0, 228, 128, 14, 0, 85, 160, 11, 0, 0, 3, 1, 0, 8, 128, 0, 0, 85, 128, 0, 0, 170, 128, 10, 0, 0, 3, 0, 0, 2, 128, 1, 0, 255, 128, 14, 0, 85, 160, 90, 0, 0, 4, 0, 0, 4, 128, 1, 0, 233, 128, 1, 0, 233, 128, 14, 0, 85, 160, 7, 0, 0, 2, 0, 0, 4, 128, 0, 0, 170, 128, 6, 0, 0, 2, 0, 0, 4, 128, 0, 0, 170, 128, 2, 0, 0, 3, 0, 0, 2, 128, 0, 0, 170, 128, 0, 0, 85, 128, 2, 0, 0, 3, 0, 0, 2, 128, 0, 0, 85, 128, 9, 0, 0, 161, 4, 0, 0, 4, 0, 0, 2, 128, 10, 0, 0, 160, 1, 0, 0, 128, 0, 0, 85, 128, 6, 0, 0, 2, 0, 0, 4, 128, 10, 0, 0, 160, 5, 0, 0, 3, 0, 0, 18, 128, 0, 0, 170, 128, 0, 0, 85, 128, 1, 0, 0, 2, 1, 0, 15, 128, 11, 0, 228, 160, 2, 0, 0, 3, 1, 0, 15, 128, 1, 0, 228, 129, 12, 0, 228, 160, 4, 0, 0, 4, 1, 0, 15, 128, 0, 0, 85, 128, 1, 0, 228, 128, 11, 0, 228, 160, 5, 0, 0, 3, 0, 0, 15, 128, 0, 0, 0, 128, 1, 0, 228, 128, 5, 0, 0, 3, 1, 0, 1, 128, 13, 0, 85, 160, 13, 0, 85, 160, 88, 0, 0, 4, 0, 0, 15, 128, 1, 0, 0, 129, 0, 0, 228, 128, 2, 0, 228, 128, 1, 0, 0, 2, 0, 8, 15, 128, 0, 0, 228, 128, 255, 255, 0, 0, 83, 72, 68, 82, 136, 6, 0, 0, 64, 0, 0, 0, 162, 1, 0, 0, 89, 0, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 17, 0, 0, 0, 90, 0, 0, 3, 0, 96, 16, 0, 0, 0, 0, 0, 88, 24, 0, 4, 0, 112, 16, 0, 0, 0, 0, 0, 85, 85, 0, 0, 98, 16, 0, 3, 50, 16, 16, 0, 1, 0, 0, 0, 98, 16, 0, 3, 194, 16, 16, 0, 1, 0, 0, 0, 101, 0, 0, 3, 242, 32, 16, 0, 0, 0, 0, 0, 104, 0, 0, 2, 3, 0, 0, 0, 56, 0, 0, 8, 50, 0, 16, 0, 0, 0, 0, 0, 246, 31, 16, 0, 1, 0, 0, 0, 70, 128, 32, 0, 0, 0, 0, 0, 1, 0, 0, 0, 50, 0, 0, 10, 50, 0, 16, 0, 0, 0, 0, 0, 70, 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 26, 16, 0, 1, 0, 0, 0, 70, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 8, 50, 0, 16, 0, 0, 0, 0, 0, 70, 0, 16, 0, 0, 0, 0, 0, 70, 128, 32, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 10, 50, 0, 16, 0, 0, 0, 0, 0, 70, 0, 16, 128, 129, 0, 0, 0, 0, 0, 0, 0, 70, 128, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 50, 32, 0, 14, 50, 0, 16, 0, 0, 0, 0, 0, 70, 0, 16, 128, 65, 0, 0, 0, 0, 0, 0, 0, 70, 128, 32, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 31, 0, 0, 4, 26, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 56, 0, 0, 8, 98, 0, 16, 0, 0, 0, 0, 0, 246, 31, 16, 0, 1, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 7, 0, 0, 0, 50, 0, 0, 10, 98, 0, 16, 0, 0, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 6, 0, 0, 0, 166, 26, 16, 0, 1, 0, 0, 0, 86, 6, 16, 0, 0, 0, 0, 0, 0, 0, 0, 8, 98, 0, 16, 0, 0, 0, 0, 0, 86, 6, 16, 0, 0, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 10, 50, 0, 16, 0, 1, 0, 0, 0, 70, 128, 32, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 128, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 9, 98, 0, 16, 0, 0, 0, 0, 0, 86, 6, 16, 128, 129, 0, 0, 0, 0, 0, 0, 0, 6, 1, 16, 128, 65, 0, 0, 0, 1, 0, 0, 0, 52, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 51, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 52, 0, 0, 10, 98, 0, 16, 0, 0, 0, 0, 0, 86, 6, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 150, 5, 16, 0, 0, 0, 0, 0, 150, 5, 16, 0, 0, 0, 0, 0, 75, 0, 0, 5, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 9, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 10, 128, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 50, 0, 0, 10, 34, 0, 16, 0, 0, 0, 0, 0, 10, 128, 32, 0, 0, 0, 0, 0, 12, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 63, 26, 0, 16, 0, 0, 0, 0, 0, 14, 32, 0, 8, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 10, 128, 32, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 10, 242, 0, 16, 0, 1, 0, 0, 0, 70, 142, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 70, 142, 32, 0, 0, 0, 0, 0, 14, 0, 0, 0, 50, 0, 0, 10, 242, 0, 16, 0, 1, 0, 0, 0, 86, 5, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 70, 142, 32, 0, 0, 0, 0, 0, 13, 0, 0, 0, 56, 0, 0, 7, 242, 32, 16, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 18, 0, 0, 1, 32, 0, 0, 8, 34, 0, 16, 0, 0, 0, 0, 0, 26, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 1, 64, 0, 0, 1, 0, 0, 0, 31, 0, 4, 3, 26, 0, 16, 0, 0, 0, 0, 0, 56, 0, 0, 8, 98, 0, 16, 0, 0, 0, 0, 0, 246, 31, 16, 0, 1, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 7, 0, 0, 0, 50, 0, 0, 10, 98, 0, 16, 0, 0, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 6, 0, 0, 0, 166, 26, 16, 0, 1, 0, 0, 0, 86, 6, 16, 0, 0, 0, 0, 0, 0, 0, 0, 8, 98, 0, 16, 0, 0, 0, 0, 0, 86, 6, 16, 0, 0, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 8, 98, 0, 16, 0, 0, 0, 0, 0, 86, 6, 16, 0, 0, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 10, 0, 0, 0, 69, 0, 0, 9, 242, 0, 16, 0, 1, 0, 0, 0, 150, 5, 16, 0, 0, 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 32, 0, 0, 11, 98, 0, 16, 0, 0, 0, 0, 0, 6, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 2, 0, 0, 0, 246, 15, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 55, 0, 0, 9, 114, 0, 16, 0, 1, 0, 0, 0, 86, 5, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 55, 0, 0, 9, 226, 0, 16, 0, 1, 0, 0, 0, 166, 10, 16, 0, 0, 0, 0, 0, 6, 0, 16, 0, 1, 0, 0, 0, 86, 14, 16, 0, 1, 0, 0, 0, 56, 0, 0, 8, 242, 0, 16, 0, 1, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 70, 142, 32, 0, 0, 0, 0, 0, 13, 0, 0, 0, 56, 0, 0, 7, 242, 32, 16, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 18, 0, 0, 1, 32, 0, 0, 8, 34, 0, 16, 0, 0, 0, 0, 0, 26, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 1, 64, 0, 0, 2, 0, 0, 0, 31, 0, 4, 3, 26, 0, 16, 0, 0, 0, 0, 0, 54, 0, 0, 8, 242, 32, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 18, 0, 0, 1, 69, 0, 0, 9, 242, 0, 16, 0, 1, 0, 0, 0, 70, 16, 16, 0, 1, 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 32, 0, 0, 11, 98, 0, 16, 0, 0, 0, 0, 0, 6, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 2, 0, 0, 0, 246, 15, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 55, 0, 0, 9, 114, 0, 16, 0, 1, 0, 0, 0, 86, 5, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 55, 0, 0, 9, 226, 0, 16, 0, 1, 0, 0, 0, 166, 10, 16, 0, 0, 0, 0, 0, 6, 0, 16, 0, 1, 0, 0, 0, 86, 14, 16, 0, 1, 0, 0, 0, 56, 0, 0, 7, 242, 0, 16, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 56, 0, 0, 8, 242, 32, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 0, 0, 0, 0, 70, 142, 32, 0, 0, 0, 0, 0, 13, 0, 0, 0, 21, 0, 0, 1, 21, 0, 0, 1, 21, 0, 0, 1, 62, 0, 0, 1, 83, 84, 65, 84, 116, 0, 0, 0, 54, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 33, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 68, 69, 70, 164, 2, 0, 0, 1, 0, 0, 0, 160, 0, 0, 0, 3, 0, 0, 0, 28, 0, 0, 0, 0, 4, 255, 255, 0, 1, 0, 0, 121, 2, 0, 0, 124, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 134, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 103, 95, 115, 97, 109, 112, 108, 101, 114, 0, 103, 95, 116, 101, 120, 116, 117, 114, 101, 0, 80, 83, 95, 67, 79, 78, 83, 84, 65, 78, 84, 83, 0, 171, 171, 171, 144, 0, 0, 0, 12, 0, 0, 0, 184, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 1, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 228, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 64, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 80, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 96, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 228, 1, 0, 0, 0, 0, 0, 0, 38, 2, 0, 0, 160, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 45, 2, 0, 0, 176, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 52, 2, 0, 0, 192, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 60, 2, 0, 0, 208, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 69, 2, 0, 0, 224, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 78, 2, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 89, 2, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 100, 2, 0, 0, 0, 0, 0, 0, 116, 2, 0, 0, 4, 1, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 100, 2, 0, 0, 0, 0, 0, 0, 115, 99, 105, 115, 115, 111, 114, 77, 97, 116, 0, 171, 3, 0, 3, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 99, 105, 115, 115, 111, 114, 69, 120, 116, 0, 171, 1, 0, 3, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 99, 105, 115, 115, 111, 114, 83, 99, 97, 108, 101, 0, 112, 97, 105, 110, 116, 77, 97, 116, 0, 101, 120, 116, 101, 110, 116, 0, 114, 97, 100, 105, 117, 115, 0, 102, 101, 97, 116, 104, 101, 114, 0, 105, 110, 110, 101, 114, 67, 111, 108, 0, 111, 117, 116, 101, 114, 67, 111, 108, 0, 115, 116, 114, 111, 107, 101, 77, 117, 108, 116, 0, 116, 101, 120, 84, 121, 112, 101, 0, 171, 171, 171, 0, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 121, 112, 101, 0, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 40, 82, 41, 32, 72, 76, 83, 76, 32, 83, 104, 97, 100, 101, 114, 32, 67, 111, 109, 112, 105, 108, 101, 114, 32, 49, 48, 46, 49, 0, 171, 171, 171, 73, 83, 71, 78, 104, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 3, 3, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 12, 12, 0, 0, 83, 86, 95, 80, 111, 115, 105, 116, 105, 111, 110, 0, 84, 69, 88, 67, 79, 79, 82, 68, 0, 171, 171, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 83, 86, 95, 84, 65, 82, 71, 69, 84, 0, 171, 171 }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/D3D11NanoVG/D3D11PixelShaderAA.h000066400000000000000000000751341461511344300313330ustar00rootroot00000000000000#if 0 // // Generated by Microsoft (R) HLSL Shader Compiler 10.1 // // // Buffer Definitions: // // cbuffer PS_CONSTANTS // { // // float4x4 scissorMat; // Offset: 0 Size: 64 // float4 scissorExt; // Offset: 64 Size: 16 // float4 scissorScale; // Offset: 80 Size: 16 // float4x4 paintMat; // Offset: 96 Size: 64 // float4 extent; // Offset: 160 Size: 16 // float4 radius; // Offset: 176 Size: 16 // float4 feather; // Offset: 192 Size: 16 // float4 innerCol; // Offset: 208 Size: 16 // float4 outerCol; // Offset: 224 Size: 16 // float4 strokeMult; // Offset: 240 Size: 16 // int texType; // Offset: 256 Size: 4 // int type; // Offset: 260 Size: 4 // // } // // // Resource Bindings: // // Name Type Format Dim HLSL Bind Count // ------------------------------ ---------- ------- ----------- -------------- ------ // g_sampler sampler NA NA s0 1 // g_texture texture float4 2d t0 1 // PS_CONSTANTS cbuffer NA NA cb0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Position 0 xyzw 0 POS float // TEXCOORD 0 xy 1 NONE float xy // TEXCOORD 1 zw 1 NONE float zw // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_TARGET 0 xyzw 0 TARGET float xyzw // // // Constant buffer to DX9 shader constant mappings: // // Target Reg Buffer Start Reg # of Regs Data Conversion // ---------- ------- --------- --------- ---------------------- // c0 cb0 0 3 ( FLT, FLT, FLT, FLT) // c3 cb0 4 5 ( FLT, FLT, FLT, FLT) // c8 cb0 10 6 ( FLT, FLT, FLT, FLT) // c14 cb0 16 1 ( INT, INT, FLT, FLT) // // // Sampler/Resource to DX9 shader sampler mappings: // // Target Sampler Source Sampler Source Resource // -------------- --------------- ---------------- // s0 s0 t0 // // // Level9 shader bytecode: // ps_2_x def c15, 0.5, 0, 0, 0 def c16, 2, -1, 1, -0 dcl t0 dcl_2d s0 mad r0.w, t0.x, c16.x, c16.y abs r0.x, r0.w add r0.x, -r0.x, c16.z mul r0.x, r0.x, c13.x min r1.w, r0.x, c16.z min r0.x, t0.y, c16.z mad r0.y, r1.w, r0.x, -c13.y mul r0.x, r0.x, r1.w cmp r1, r0.y, c16.w, c16.y texkill r1 mul r0.yz, t0.z, c1.xxyw mad r0.yz, c0.xxyw, t0.w, r0 add r0.yz, r0, c2.xxyw abs r0.yz, r0 add r0.yz, r0, -c3.xxyw mov r0.w, c15.x mad_sat r0.yz, r0, -c4.xxyw, r0.w mul r0.y, r0.z, r0.y mul r0.z, c14.y, c14.y mul r1.xy, t0.z, c6 mad r1.xy, c5, t0.w, r1 add r1.xy, r1, c7 mov r2.xy, c8 add r1.zw, r2.xyxy, -c9.x abs r2.xy, r1 add r1.zw, -r1, r2.xyxy max r2.xy, r1.zwzw, -c16.w dp2add r2.x, r2, r2, -c16.w rsq r2.x, r2.x rcp r2.x, r2.x max r2.y, r1.z, r1.w min r1.z, r2.y, -c16.w add r1.z, r2.x, r1.z add r1.z, r1.z, -c9.x mad r0.w, c10.x, r0.w, r1.z rcp r1.z, c10.x mul_sat r0.w, r0.w, r1.z mul r0.x, r0.y, r0.x rcp r2.x, c8.x rcp r2.y, c8.y mul r1.xy, r1, r2 mov r2, c11 add r2, -r2, c12 mad r2, r0.w, r2, c11 mul r2, r0.x, r2 mov r3.xz, c16 add r3, -r3.zzxx, c14.yxxy mul r3, r3, r3 texld r4, t0, s0 texld r1, r1, s0 mul r5.xyz, r1.w, r1 cmp r1.xyz, -r3.y, r5, r1 cmp r1.yzw, -r3.z, r1.x, r1 mul r1, r1, c11 mul r1, r0.x, r1 mul r5.xyz, r4.w, r4 cmp r4.xyz, -r3.y, r5, r4 cmp r4.yzw, -r3.z, r4.x, r4 mul r4, r0.y, r4 mul r4, r4, c11 cmp r4, -r3.w, c16.z, r4 cmp r1, -r3.x, r1, r4 cmp r0, -r0.z, r2, r1 mov oC0, r0 // approximately 65 instruction slots used (2 texture, 63 arithmetic) ps_4_0 dcl_constantbuffer CB0[17], immediateIndexed dcl_sampler s0, mode_default dcl_resource_texture2d (float,float,float,float) t0 dcl_input_ps linear v1.xy dcl_input_ps linear v1.zw dcl_output o0.xyzw dcl_temps 3 mad r0.x, v1.x, l(2.000000), l(-1.000000) add r0.x, -|r0.x|, l(1.000000) mul r0.x, r0.x, cb0[15].x min r0.x, r0.x, l(1.000000) min r0.y, v1.y, l(1.000000) mul r0.x, r0.y, r0.x lt r0.y, r0.x, cb0[15].y discard_nz r0.y mul r0.yz, v1.wwww, cb0[1].xxyx mad r0.yz, cb0[0].xxyx, v1.zzzz, r0.yyzy add r0.yz, r0.yyzy, cb0[2].xxyx add r0.yz, |r0.yyzy|, -cb0[4].xxyx mad_sat r0.yz, -r0.yyzy, cb0[5].xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) mul r0.y, r0.z, r0.y if_z cb0[16].y mul r0.zw, v1.wwww, cb0[7].xxxy mad r0.zw, cb0[6].xxxy, v1.zzzz, r0.zzzw add r0.zw, r0.zzzw, cb0[8].xxxy add r1.xy, cb0[10].xyxx, -cb0[11].xxxx add r0.zw, |r0.zzzw|, -r1.xxxy max r1.x, r0.w, r0.z min r1.x, r1.x, l(0.000000) max r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) dp2 r0.z, r0.zwzz, r0.zwzz sqrt r0.z, r0.z add r0.z, r0.z, r1.x add r0.z, r0.z, -cb0[11].x mad r0.z, cb0[12].x, l(0.500000), r0.z div_sat r0.z, r0.z, cb0[12].x add r1.xyzw, -cb0[13].xyzw, cb0[14].xyzw mad r1.xyzw, r0.zzzz, r1.xyzw, cb0[13].xyzw mul r0.z, r0.y, r0.x mul o0.xyzw, r0.zzzz, r1.xyzw else ieq r0.z, cb0[16].y, l(1) if_nz r0.z mul r0.zw, v1.wwww, cb0[7].xxxy mad r0.zw, cb0[6].xxxy, v1.zzzz, r0.zzzw add r0.zw, r0.zzzw, cb0[8].xxxy div r0.zw, r0.zzzw, cb0[10].xxxy sample r1.xyzw, r0.zwzz, t0.xyzw, s0 ieq r0.zw, cb0[16].xxxx, l(0, 0, 1, 2) mul r2.xyz, r1.wwww, r1.xyzx movc r1.xyz, r0.zzzz, r2.xyzx, r1.xyzx movc r1.yzw, r0.wwww, r1.xxxx, r1.yyzw mul r1.xyzw, r1.xyzw, cb0[13].xyzw mul r0.x, r0.y, r0.x mul o0.xyzw, r0.xxxx, r1.xyzw else ieq r0.x, cb0[16].y, l(2) if_nz r0.x mov o0.xyzw, l(1.000000,1.000000,1.000000,1.000000) else sample r1.xyzw, v1.xyxx, t0.xyzw, s0 ieq r0.xz, cb0[16].xxxx, l(1, 0, 2, 0) mul r2.xyz, r1.wwww, r1.xyzx movc r1.xyz, r0.xxxx, r2.xyzx, r1.xyzx movc r1.yzw, r0.zzzz, r1.xxxx, r1.yyzw mul r0.xyzw, r0.yyyy, r1.xyzw mul o0.xyzw, r0.xyzw, cb0[13].xyzw endif endif endif ret // Approximately 64 instruction slots used #endif const BYTE g_D3D11PixelShaderAA_Main[] = { 68, 88, 66, 67, 124, 154, 102, 100, 166, 192, 106, 130, 175, 56, 140, 93, 110, 82, 184, 123, 1, 0, 0, 0, 100, 16, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, 236, 4, 0, 0, 152, 12, 0, 0, 20, 13, 0, 0, 192, 15, 0, 0, 48, 16, 0, 0, 65, 111, 110, 57, 172, 4, 0, 0, 172, 4, 0, 0, 0, 2, 255, 255, 84, 4, 0, 0, 88, 0, 0, 0, 4, 0, 40, 0, 0, 0, 88, 0, 0, 0, 88, 0, 1, 0, 36, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 10, 0, 6, 0, 8, 0, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, 14, 0, 2, 2, 0, 0, 1, 2, 255, 255, 81, 0, 0, 5, 15, 0, 15, 160, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 5, 16, 0, 15, 160, 0, 0, 0, 64, 0, 0, 128, 191, 0, 0, 128, 63, 0, 0, 0, 128, 31, 0, 0, 2, 0, 0, 0, 128, 0, 0, 15, 176, 31, 0, 0, 2, 0, 0, 0, 144, 0, 8, 15, 160, 4, 0, 0, 4, 0, 0, 8, 128, 0, 0, 0, 176, 16, 0, 0, 160, 16, 0, 85, 160, 35, 0, 0, 2, 0, 0, 1, 128, 0, 0, 255, 128, 2, 0, 0, 3, 0, 0, 1, 128, 0, 0, 0, 129, 16, 0, 170, 160, 5, 0, 0, 3, 0, 0, 1, 128, 0, 0, 0, 128, 13, 0, 0, 160, 10, 0, 0, 3, 1, 0, 8, 128, 0, 0, 0, 128, 16, 0, 170, 160, 10, 0, 0, 3, 0, 0, 1, 128, 0, 0, 85, 176, 16, 0, 170, 160, 4, 0, 0, 4, 0, 0, 2, 128, 1, 0, 255, 128, 0, 0, 0, 128, 13, 0, 85, 161, 5, 0, 0, 3, 0, 0, 1, 128, 0, 0, 0, 128, 1, 0, 255, 128, 88, 0, 0, 4, 1, 0, 15, 128, 0, 0, 85, 128, 16, 0, 255, 160, 16, 0, 85, 160, 65, 0, 0, 1, 1, 0, 15, 128, 5, 0, 0, 3, 0, 0, 6, 128, 0, 0, 170, 176, 1, 0, 208, 160, 4, 0, 0, 4, 0, 0, 6, 128, 0, 0, 208, 160, 0, 0, 255, 176, 0, 0, 228, 128, 2, 0, 0, 3, 0, 0, 6, 128, 0, 0, 228, 128, 2, 0, 208, 160, 35, 0, 0, 2, 0, 0, 6, 128, 0, 0, 228, 128, 2, 0, 0, 3, 0, 0, 6, 128, 0, 0, 228, 128, 3, 0, 208, 161, 1, 0, 0, 2, 0, 0, 8, 128, 15, 0, 0, 160, 4, 0, 0, 4, 0, 0, 22, 128, 0, 0, 228, 128, 4, 0, 208, 161, 0, 0, 255, 128, 5, 0, 0, 3, 0, 0, 2, 128, 0, 0, 170, 128, 0, 0, 85, 128, 5, 0, 0, 3, 0, 0, 4, 128, 14, 0, 85, 160, 14, 0, 85, 160, 5, 0, 0, 3, 1, 0, 3, 128, 0, 0, 170, 176, 6, 0, 228, 160, 4, 0, 0, 4, 1, 0, 3, 128, 5, 0, 228, 160, 0, 0, 255, 176, 1, 0, 228, 128, 2, 0, 0, 3, 1, 0, 3, 128, 1, 0, 228, 128, 7, 0, 228, 160, 1, 0, 0, 2, 2, 0, 3, 128, 8, 0, 228, 160, 2, 0, 0, 3, 1, 0, 12, 128, 2, 0, 68, 128, 9, 0, 0, 161, 35, 0, 0, 2, 2, 0, 3, 128, 1, 0, 228, 128, 2, 0, 0, 3, 1, 0, 12, 128, 1, 0, 228, 129, 2, 0, 68, 128, 11, 0, 0, 3, 2, 0, 3, 128, 1, 0, 238, 128, 16, 0, 255, 161, 90, 0, 0, 4, 2, 0, 1, 128, 2, 0, 228, 128, 2, 0, 228, 128, 16, 0, 255, 161, 7, 0, 0, 2, 2, 0, 1, 128, 2, 0, 0, 128, 6, 0, 0, 2, 2, 0, 1, 128, 2, 0, 0, 128, 11, 0, 0, 3, 2, 0, 2, 128, 1, 0, 170, 128, 1, 0, 255, 128, 10, 0, 0, 3, 1, 0, 4, 128, 2, 0, 85, 128, 16, 0, 255, 161, 2, 0, 0, 3, 1, 0, 4, 128, 2, 0, 0, 128, 1, 0, 170, 128, 2, 0, 0, 3, 1, 0, 4, 128, 1, 0, 170, 128, 9, 0, 0, 161, 4, 0, 0, 4, 0, 0, 8, 128, 10, 0, 0, 160, 0, 0, 255, 128, 1, 0, 170, 128, 6, 0, 0, 2, 1, 0, 4, 128, 10, 0, 0, 160, 5, 0, 0, 3, 0, 0, 24, 128, 0, 0, 255, 128, 1, 0, 170, 128, 5, 0, 0, 3, 0, 0, 1, 128, 0, 0, 85, 128, 0, 0, 0, 128, 6, 0, 0, 2, 2, 0, 1, 128, 8, 0, 0, 160, 6, 0, 0, 2, 2, 0, 2, 128, 8, 0, 85, 160, 5, 0, 0, 3, 1, 0, 3, 128, 1, 0, 228, 128, 2, 0, 228, 128, 1, 0, 0, 2, 2, 0, 15, 128, 11, 0, 228, 160, 2, 0, 0, 3, 2, 0, 15, 128, 2, 0, 228, 129, 12, 0, 228, 160, 4, 0, 0, 4, 2, 0, 15, 128, 0, 0, 255, 128, 2, 0, 228, 128, 11, 0, 228, 160, 5, 0, 0, 3, 2, 0, 15, 128, 0, 0, 0, 128, 2, 0, 228, 128, 1, 0, 0, 2, 3, 0, 5, 128, 16, 0, 228, 160, 2, 0, 0, 3, 3, 0, 15, 128, 3, 0, 10, 129, 14, 0, 65, 160, 5, 0, 0, 3, 3, 0, 15, 128, 3, 0, 228, 128, 3, 0, 228, 128, 66, 0, 0, 3, 4, 0, 15, 128, 0, 0, 228, 176, 0, 8, 228, 160, 66, 0, 0, 3, 1, 0, 15, 128, 1, 0, 228, 128, 0, 8, 228, 160, 5, 0, 0, 3, 5, 0, 7, 128, 1, 0, 255, 128, 1, 0, 228, 128, 88, 0, 0, 4, 1, 0, 7, 128, 3, 0, 85, 129, 5, 0, 228, 128, 1, 0, 228, 128, 88, 0, 0, 4, 1, 0, 14, 128, 3, 0, 170, 129, 1, 0, 0, 128, 1, 0, 228, 128, 5, 0, 0, 3, 1, 0, 15, 128, 1, 0, 228, 128, 11, 0, 228, 160, 5, 0, 0, 3, 1, 0, 15, 128, 0, 0, 0, 128, 1, 0, 228, 128, 5, 0, 0, 3, 5, 0, 7, 128, 4, 0, 255, 128, 4, 0, 228, 128, 88, 0, 0, 4, 4, 0, 7, 128, 3, 0, 85, 129, 5, 0, 228, 128, 4, 0, 228, 128, 88, 0, 0, 4, 4, 0, 14, 128, 3, 0, 170, 129, 4, 0, 0, 128, 4, 0, 228, 128, 5, 0, 0, 3, 4, 0, 15, 128, 0, 0, 85, 128, 4, 0, 228, 128, 5, 0, 0, 3, 4, 0, 15, 128, 4, 0, 228, 128, 11, 0, 228, 160, 88, 0, 0, 4, 4, 0, 15, 128, 3, 0, 255, 129, 16, 0, 170, 160, 4, 0, 228, 128, 88, 0, 0, 4, 1, 0, 15, 128, 3, 0, 0, 129, 1, 0, 228, 128, 4, 0, 228, 128, 88, 0, 0, 4, 0, 0, 15, 128, 0, 0, 170, 129, 2, 0, 228, 128, 1, 0, 228, 128, 1, 0, 0, 2, 0, 8, 15, 128, 0, 0, 228, 128, 255, 255, 0, 0, 83, 72, 68, 82, 164, 7, 0, 0, 64, 0, 0, 0, 233, 1, 0, 0, 89, 0, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 17, 0, 0, 0, 90, 0, 0, 3, 0, 96, 16, 0, 0, 0, 0, 0, 88, 24, 0, 4, 0, 112, 16, 0, 0, 0, 0, 0, 85, 85, 0, 0, 98, 16, 0, 3, 50, 16, 16, 0, 1, 0, 0, 0, 98, 16, 0, 3, 194, 16, 16, 0, 1, 0, 0, 0, 101, 0, 0, 3, 242, 32, 16, 0, 0, 0, 0, 0, 104, 0, 0, 2, 3, 0, 0, 0, 50, 0, 0, 9, 18, 0, 16, 0, 0, 0, 0, 0, 10, 16, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 64, 1, 64, 0, 0, 0, 0, 128, 191, 0, 0, 0, 8, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 128, 193, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 63, 56, 0, 0, 8, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 10, 128, 32, 0, 0, 0, 0, 0, 15, 0, 0, 0, 51, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 63, 51, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 16, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 63, 56, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 49, 0, 0, 8, 34, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 26, 128, 32, 0, 0, 0, 0, 0, 15, 0, 0, 0, 13, 0, 4, 3, 26, 0, 16, 0, 0, 0, 0, 0, 56, 0, 0, 8, 98, 0, 16, 0, 0, 0, 0, 0, 246, 31, 16, 0, 1, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 1, 0, 0, 0, 50, 0, 0, 10, 98, 0, 16, 0, 0, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 26, 16, 0, 1, 0, 0, 0, 86, 6, 16, 0, 0, 0, 0, 0, 0, 0, 0, 8, 98, 0, 16, 0, 0, 0, 0, 0, 86, 6, 16, 0, 0, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 10, 98, 0, 16, 0, 0, 0, 0, 0, 86, 6, 16, 128, 129, 0, 0, 0, 0, 0, 0, 0, 6, 129, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 50, 32, 0, 14, 98, 0, 16, 0, 0, 0, 0, 0, 86, 6, 16, 128, 65, 0, 0, 0, 0, 0, 0, 0, 6, 129, 32, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 56, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 31, 0, 0, 4, 26, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 56, 0, 0, 8, 194, 0, 16, 0, 0, 0, 0, 0, 246, 31, 16, 0, 1, 0, 0, 0, 6, 132, 32, 0, 0, 0, 0, 0, 7, 0, 0, 0, 50, 0, 0, 10, 194, 0, 16, 0, 0, 0, 0, 0, 6, 132, 32, 0, 0, 0, 0, 0, 6, 0, 0, 0, 166, 26, 16, 0, 1, 0, 0, 0, 166, 14, 16, 0, 0, 0, 0, 0, 0, 0, 0, 8, 194, 0, 16, 0, 0, 0, 0, 0, 166, 14, 16, 0, 0, 0, 0, 0, 6, 132, 32, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 10, 50, 0, 16, 0, 1, 0, 0, 0, 70, 128, 32, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 128, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 9, 194, 0, 16, 0, 0, 0, 0, 0, 166, 14, 16, 128, 129, 0, 0, 0, 0, 0, 0, 0, 6, 4, 16, 128, 65, 0, 0, 0, 1, 0, 0, 0, 52, 0, 0, 7, 18, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 51, 0, 0, 7, 18, 0, 16, 0, 1, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 52, 0, 0, 10, 194, 0, 16, 0, 0, 0, 0, 0, 166, 14, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 7, 66, 0, 16, 0, 0, 0, 0, 0, 230, 10, 16, 0, 0, 0, 0, 0, 230, 10, 16, 0, 0, 0, 0, 0, 75, 0, 0, 5, 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 9, 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 10, 128, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 50, 0, 0, 10, 66, 0, 16, 0, 0, 0, 0, 0, 10, 128, 32, 0, 0, 0, 0, 0, 12, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 63, 42, 0, 16, 0, 0, 0, 0, 0, 14, 32, 0, 8, 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 10, 128, 32, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 10, 242, 0, 16, 0, 1, 0, 0, 0, 70, 142, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 70, 142, 32, 0, 0, 0, 0, 0, 14, 0, 0, 0, 50, 0, 0, 10, 242, 0, 16, 0, 1, 0, 0, 0, 166, 10, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 70, 142, 32, 0, 0, 0, 0, 0, 13, 0, 0, 0, 56, 0, 0, 7, 66, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, 242, 32, 16, 0, 0, 0, 0, 0, 166, 10, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 18, 0, 0, 1, 32, 0, 0, 8, 66, 0, 16, 0, 0, 0, 0, 0, 26, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 1, 64, 0, 0, 1, 0, 0, 0, 31, 0, 4, 3, 42, 0, 16, 0, 0, 0, 0, 0, 56, 0, 0, 8, 194, 0, 16, 0, 0, 0, 0, 0, 246, 31, 16, 0, 1, 0, 0, 0, 6, 132, 32, 0, 0, 0, 0, 0, 7, 0, 0, 0, 50, 0, 0, 10, 194, 0, 16, 0, 0, 0, 0, 0, 6, 132, 32, 0, 0, 0, 0, 0, 6, 0, 0, 0, 166, 26, 16, 0, 1, 0, 0, 0, 166, 14, 16, 0, 0, 0, 0, 0, 0, 0, 0, 8, 194, 0, 16, 0, 0, 0, 0, 0, 166, 14, 16, 0, 0, 0, 0, 0, 6, 132, 32, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 8, 194, 0, 16, 0, 0, 0, 0, 0, 166, 14, 16, 0, 0, 0, 0, 0, 6, 132, 32, 0, 0, 0, 0, 0, 10, 0, 0, 0, 69, 0, 0, 9, 242, 0, 16, 0, 1, 0, 0, 0, 230, 10, 16, 0, 0, 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 32, 0, 0, 11, 194, 0, 16, 0, 0, 0, 0, 0, 6, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 2, 0, 0, 0, 246, 15, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 55, 0, 0, 9, 114, 0, 16, 0, 1, 0, 0, 0, 166, 10, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 55, 0, 0, 9, 226, 0, 16, 0, 1, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 6, 0, 16, 0, 1, 0, 0, 0, 86, 14, 16, 0, 1, 0, 0, 0, 56, 0, 0, 8, 242, 0, 16, 0, 1, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 70, 142, 32, 0, 0, 0, 0, 0, 13, 0, 0, 0, 56, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, 242, 32, 16, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 18, 0, 0, 1, 32, 0, 0, 8, 18, 0, 16, 0, 0, 0, 0, 0, 26, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 1, 64, 0, 0, 2, 0, 0, 0, 31, 0, 4, 3, 10, 0, 16, 0, 0, 0, 0, 0, 54, 0, 0, 8, 242, 32, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 18, 0, 0, 1, 69, 0, 0, 9, 242, 0, 16, 0, 1, 0, 0, 0, 70, 16, 16, 0, 1, 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 32, 0, 0, 11, 82, 0, 16, 0, 0, 0, 0, 0, 6, 128, 32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 2, 64, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 2, 0, 0, 0, 246, 15, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 55, 0, 0, 9, 114, 0, 16, 0, 1, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 55, 0, 0, 9, 226, 0, 16, 0, 1, 0, 0, 0, 166, 10, 16, 0, 0, 0, 0, 0, 6, 0, 16, 0, 1, 0, 0, 0, 86, 14, 16, 0, 1, 0, 0, 0, 56, 0, 0, 7, 242, 0, 16, 0, 0, 0, 0, 0, 86, 5, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 1, 0, 0, 0, 56, 0, 0, 8, 242, 32, 16, 0, 0, 0, 0, 0, 70, 14, 16, 0, 0, 0, 0, 0, 70, 142, 32, 0, 0, 0, 0, 0, 13, 0, 0, 0, 21, 0, 0, 1, 21, 0, 0, 1, 21, 0, 0, 1, 62, 0, 0, 1, 83, 84, 65, 84, 116, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 42, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 68, 69, 70, 164, 2, 0, 0, 1, 0, 0, 0, 160, 0, 0, 0, 3, 0, 0, 0, 28, 0, 0, 0, 0, 4, 255, 255, 0, 1, 0, 0, 121, 2, 0, 0, 124, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 134, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 103, 95, 115, 97, 109, 112, 108, 101, 114, 0, 103, 95, 116, 101, 120, 116, 117, 114, 101, 0, 80, 83, 95, 67, 79, 78, 83, 84, 65, 78, 84, 83, 0, 171, 171, 171, 144, 0, 0, 0, 12, 0, 0, 0, 184, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 1, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 228, 1, 0, 0, 0, 0, 0, 0, 244, 1, 0, 0, 64, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 80, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 96, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 228, 1, 0, 0, 0, 0, 0, 0, 38, 2, 0, 0, 160, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 45, 2, 0, 0, 176, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 52, 2, 0, 0, 192, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 60, 2, 0, 0, 208, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 69, 2, 0, 0, 224, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 78, 2, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 89, 2, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 100, 2, 0, 0, 0, 0, 0, 0, 116, 2, 0, 0, 4, 1, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 100, 2, 0, 0, 0, 0, 0, 0, 115, 99, 105, 115, 115, 111, 114, 77, 97, 116, 0, 171, 3, 0, 3, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 99, 105, 115, 115, 111, 114, 69, 120, 116, 0, 171, 1, 0, 3, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 99, 105, 115, 115, 111, 114, 83, 99, 97, 108, 101, 0, 112, 97, 105, 110, 116, 77, 97, 116, 0, 101, 120, 116, 101, 110, 116, 0, 114, 97, 100, 105, 117, 115, 0, 102, 101, 97, 116, 104, 101, 114, 0, 105, 110, 110, 101, 114, 67, 111, 108, 0, 111, 117, 116, 101, 114, 67, 111, 108, 0, 115, 116, 114, 111, 107, 101, 77, 117, 108, 116, 0, 116, 101, 120, 84, 121, 112, 101, 0, 171, 171, 171, 0, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 121, 112, 101, 0, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 40, 82, 41, 32, 72, 76, 83, 76, 32, 83, 104, 97, 100, 101, 114, 32, 67, 111, 109, 112, 105, 108, 101, 114, 32, 49, 48, 46, 49, 0, 171, 171, 171, 73, 83, 71, 78, 104, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 3, 3, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 12, 12, 0, 0, 83, 86, 95, 80, 111, 115, 105, 116, 105, 111, 110, 0, 84, 69, 88, 67, 79, 79, 82, 68, 0, 171, 171, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 83, 86, 95, 84, 65, 82, 71, 69, 84, 0, 171, 171 }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/D3D11NanoVG/D3D11VertexShader.h000066400000000000000000000223311461511344300313140ustar00rootroot00000000000000#if 0 // // Generated by Microsoft (R) HLSL Shader Compiler 10.1 // // // Buffer Definitions: // // cbuffer VS_CONSTANTS // { // // float4x4 dummy; // Offset: 0 Size: 64 [unused] // float2 viewSize; // Offset: 64 Size: 8 // // } // // // Resource Bindings: // // Name Type Format Dim HLSL Bind Count // ------------------------------ ---------- ------- ----------- -------------- ------ // VS_CONSTANTS cbuffer NA NA cb0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xy 0 NONE float xy // TEXCOORD 0 xy 1 NONE float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Position 0 xyzw 0 POS float xyzw // TEXCOORD 0 xy 1 NONE float xy // TEXCOORD 1 zw 1 NONE float zw // // // Constant buffer to DX9 shader constant mappings: // // Target Reg Buffer Start Reg # of Regs Data Conversion // ---------- ------- --------- --------- ---------------------- // c1 cb0 4 1 ( FLT, FLT, FLT, FLT) // // // Runtime generated constant mappings: // // Target Reg Constant Description // ---------- -------------------------------------------------- // c0 Vertex Shader position offset // // // Level9 shader bytecode: // vs_2_x def c2, -1, 1, 0, 0 dcl_texcoord v0 dcl_texcoord1 v1 rcp r0.x, c1.x add r0.yz, v0.xxyw, v0.xxyw mad r0.x, r0.y, r0.x, c0.x rcp r0.w, c1.y mad r0.y, r0.z, -r0.w, c0.y add oPos.xy, r0, c2 mov oPos.zw, c2.xyzy mov oT0.xy, v1 mov oT0.zw, v0.xyyx // approximately 9 instruction slots used vs_4_0 dcl_constantbuffer CB0[5], immediateIndexed dcl_input v0.xy dcl_input v1.xy dcl_output_siv o0.xyzw, position dcl_output o1.xy dcl_output o1.zw dcl_temps 1 add r0.xy, v0.xyxx, v0.xyxx div r0.xy, r0.xyxx, cb0[4].xyxx add o0.x, r0.x, l(-1.000000) add o0.y, -r0.y, l(1.000000) mov o0.zw, l(0,0,0,1.000000) mov o1.xy, v1.xyxx mov o1.zw, v0.xxxy ret // Approximately 8 instruction slots used #endif const BYTE g_D3D11VertexShader_Main[] = { 68, 88, 66, 67, 115, 51, 12, 52, 39, 12, 186, 201, 117, 248, 244, 176, 24, 80, 85, 142, 1, 0, 0, 0, 148, 4, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, 48, 1, 0, 0, 92, 2, 0, 0, 216, 2, 0, 0, 208, 3, 0, 0, 36, 4, 0, 0, 65, 111, 110, 57, 240, 0, 0, 0, 240, 0, 0, 0, 0, 2, 254, 255, 188, 0, 0, 0, 52, 0, 0, 0, 1, 0, 36, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 36, 0, 1, 0, 48, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 254, 255, 81, 0, 0, 5, 2, 0, 15, 160, 0, 0, 128, 191, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 2, 5, 0, 0, 128, 0, 0, 15, 144, 31, 0, 0, 2, 5, 0, 1, 128, 1, 0, 15, 144, 6, 0, 0, 2, 0, 0, 1, 128, 1, 0, 0, 160, 2, 0, 0, 3, 0, 0, 6, 128, 0, 0, 208, 144, 0, 0, 208, 144, 4, 0, 0, 4, 0, 0, 1, 128, 0, 0, 85, 128, 0, 0, 0, 128, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 8, 128, 1, 0, 85, 160, 4, 0, 0, 4, 0, 0, 2, 128, 0, 0, 170, 128, 0, 0, 255, 129, 0, 0, 85, 160, 2, 0, 0, 3, 0, 0, 3, 192, 0, 0, 228, 128, 2, 0, 228, 160, 1, 0, 0, 2, 0, 0, 12, 192, 2, 0, 100, 160, 1, 0, 0, 2, 0, 0, 3, 224, 1, 0, 228, 144, 1, 0, 0, 2, 0, 0, 12, 224, 0, 0, 20, 144, 255, 255, 0, 0, 83, 72, 68, 82, 36, 1, 0, 0, 64, 0, 1, 0, 73, 0, 0, 0, 89, 0, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 5, 0, 0, 0, 95, 0, 0, 3, 50, 16, 16, 0, 0, 0, 0, 0, 95, 0, 0, 3, 50, 16, 16, 0, 1, 0, 0, 0, 103, 0, 0, 4, 242, 32, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 101, 0, 0, 3, 50, 32, 16, 0, 1, 0, 0, 0, 101, 0, 0, 3, 194, 32, 16, 0, 1, 0, 0, 0, 104, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 7, 50, 0, 16, 0, 0, 0, 0, 0, 70, 16, 16, 0, 0, 0, 0, 0, 70, 16, 16, 0, 0, 0, 0, 0, 14, 0, 0, 8, 50, 0, 16, 0, 0, 0, 0, 0, 70, 0, 16, 0, 0, 0, 0, 0, 70, 128, 32, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 7, 18, 32, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 191, 0, 0, 0, 8, 34, 32, 16, 0, 0, 0, 0, 0, 26, 0, 16, 128, 65, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 63, 54, 0, 0, 8, 194, 32, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 54, 0, 0, 5, 50, 32, 16, 0, 1, 0, 0, 0, 70, 16, 16, 0, 1, 0, 0, 0, 54, 0, 0, 5, 194, 32, 16, 0, 1, 0, 0, 0, 6, 20, 16, 0, 0, 0, 0, 0, 62, 0, 0, 1, 83, 84, 65, 84, 116, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 68, 69, 70, 240, 0, 0, 0, 1, 0, 0, 0, 76, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 0, 4, 254, 255, 0, 1, 0, 0, 200, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 86, 83, 95, 67, 79, 78, 83, 84, 65, 78, 84, 83, 0, 171, 171, 171, 60, 0, 0, 0, 2, 0, 0, 0, 100, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 64, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 100, 117, 109, 109, 121, 0, 171, 171, 3, 0, 3, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 101, 119, 83, 105, 122, 101, 0, 171, 171, 171, 1, 0, 3, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 40, 82, 41, 32, 72, 76, 83, 76, 32, 83, 104, 97, 100, 101, 114, 32, 67, 111, 109, 112, 105, 108, 101, 114, 32, 49, 48, 46, 49, 0, 73, 83, 71, 78, 76, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 3, 3, 0, 0, 80, 79, 83, 73, 84, 73, 79, 78, 0, 84, 69, 88, 67, 79, 79, 82, 68, 0, 171, 171, 79, 83, 71, 78, 104, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 3, 12, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 12, 3, 0, 0, 83, 86, 95, 80, 111, 115, 105, 116, 105, 111, 110, 0, 84, 69, 88, 67, 79, 79, 82, 68, 0, 171, 171, 171 }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/D3D11NanoVG/nanovg_d3d11.h000066400000000000000000001320421461511344300304400ustar00rootroot00000000000000// // Copyright (c) 2009-2013 Mikko Mononen memon@inside.org // Port of _gl.h to _d3d11.h by Chris Maughan // // This software is provided 'as-is', without any express or implied // warranty. In no event will the authors be held liable for any damages // arising from the use of this software. // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it // freely, subject to the following restrictions: // 1. The origin of this software must not be misrepresented; you must not // claim that you wrote the original software. If you use this software // in a product, an acknowledgment in the product documentation would be // appreciated but is not required. // 2. Altered source versions must be plainly marked as such, and must not be // misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. // #ifndef NANOVG_D3D11_H #define NANOVG_D3D11_H // Hide nameless struct/union warning for D3D headers #pragma warning (disable : 4201) #include #pragma warning (default : 4201) #ifdef __cplusplus extern "C" { #endif // Flag indicating if geoemtry based anti-aliasing is used (may not be needed when using MSAA). #define NVG_ANTIALIAS 1 // Flag indicating if strokes should be drawn using stencil buffer. The rendering will be a little // slower, but path overlaps (i.e. self-intersecting or sharp turns) will be drawn just once. #define NVG_STENCIL_STROKES 2 struct NVGcontext* nvgCreateD3D11(ID3D11Device* pDevice, int edgeaa); void nvgDeleteD3D11(struct NVGcontext* ctx); // These are additional flags on top of NVGimageFlags. enum NVGimageFlagsD3D11 { NVG_IMAGE_NODELETE = 1<<16, // Do not delete texture object. }; // Not done yet. Simple enough to do though... #ifdef IMPLEMENTED_IMAGE_FUNCS int nvd3dCreateImageFromHandle(struct NVGcontext* ctx, void* texture, int w, int h, int flags); unsigned int nvd3dImageHandle(struct NVGcontext* ctx, int image); void nvd3dImageFlags(struct NVGcontext* ctx, int image, int flags); #endif #ifdef __cplusplus } #endif #ifdef NANOVG_D3D11_IMPLEMENTATION #include #include #include #include #include #include "nanovg.h" #include #include "D3D11VertexShader.h" #include "D3D11PixelShaderAA.h" #include "D3D11PixelShader.h" // The cpp calling is much simpler. // For 'c' calling of DX, we need to do pPtr->lpVtbl->Func(pPtr, ...) // There's probably a better way... (but note we can't use the IInterace_Method() helpers because // They won't work when compiled for cpp) #ifdef __cplusplus #define D3D_API(p, name, arg1) p->name() #define D3D_API_1(p, name, arg1) p->name(arg1) #define D3D_API_2(p, name, arg1, arg2) p->name(arg1, arg2) #define D3D_API_3(p, name, arg1, arg2, arg3) p->name(arg1, arg2, arg3) #define D3D_API_4(p, name, arg1, arg2, arg3, arg4) p->name(arg1, arg2, arg3, arg4) #define D3D_API_5(p, name, arg1, arg2, arg3, arg4, arg5) p->name(arg1, arg2, arg3, arg4, arg5) #define D3D_API_6(p, name, arg1, arg2, arg3, arg4, arg5, arg6) p->name(arg1, arg2, arg3, arg4, arg5, arg6) #define D3D_API_RELEASE(p) { if ( (p) ) { (p)->Release(); (p) = NULL; } } #else #define D3D_API(p, name) p->lpVtbl->name(p) #define D3D_API_1(p, name, arg1) p->lpVtbl->name(p, arg1) #define D3D_API_2(p, name, arg1, arg2) p->lpVtbl->name(p, arg1, arg2) #define D3D_API_3(p, name, arg1, arg2, arg3) p->lpVtbl->name(p, arg1, arg2, arg3) #define D3D_API_4(p, name, arg1, arg2, arg3, arg4) p->lpVtbl->name(p, arg1, arg2, arg3, arg4) #define D3D_API_5(p, name, arg1, arg2, arg3, arg4, arg5) p->lpVtbl->name(p, arg1, arg2, arg3, arg4, arg5) #define D3D_API_6(p, name, arg1, arg2, arg3, arg4, arg5, arg6) p->lpVtbl->name(p, arg1, arg2, arg3, arg4, arg5, arg6) #define D3D_API_RELEASE(p) { if ( (p) ) { (p)->lpVtbl->Release((p)); (p) = NULL; } } #endif #pragma pack(push) #pragma pack(16) struct D3DNVGfragUniforms { float scissorMat[16]; float scissorExt[4]; float scissorScale[4]; float paintMat[16]; float extent[4]; float radius[4]; float feather[4]; struct NVGcolor innerCol; struct NVGcolor outerCol; float strokeMult[4]; int texType; int type; }; #pragma pack(pop) struct VS_CONSTANTS { float dummy[16]; float viewSize[2]; }; enum D3DNVGshaderType { NSVG_SHADER_FILLGRAD, NSVG_SHADER_FILLIMG, NSVG_SHADER_SIMPLE, NSVG_SHADER_IMG }; struct D3DNVGshader { ID3D11PixelShader* frag; ID3D11VertexShader* vert; struct VS_CONSTANTS vc; }; struct D3DNVGtexture { int id; ID3D11Texture2D* tex; ID3D11ShaderResourceView* resourceView; int width, height; int type; int flags; }; enum D3DNVGcallType { D3DNVG_NONE = 0, D3DNVG_FILL, D3DNVG_CONVEXFILL, D3DNVG_STROKE, D3DNVG_TRIANGLES }; struct D3DNVGcall { int type; int image; int pathOffset; int pathCount; int triangleOffset; int triangleCount; int uniformOffset; }; struct D3DNVGpath { int fillOffset; int fillCount; int strokeOffset; int strokeCount; }; struct D3DNVGBuffer { unsigned int MaxBufferEntries; unsigned int CurrentBufferEntry; ID3D11Buffer* pBuffer; }; struct D3DNVGcontext { struct D3DNVGshader shader; struct D3DNVGtexture* textures; float view[2]; int ntextures; int ctextures; int textureId; ID3D11SamplerState* pSamplerState[4]; int fragSize; int flags; // Per frame buffers struct D3DNVGcall* calls; int ccalls; int ncalls; struct D3DNVGpath* paths; int cpaths; int npaths; struct NVGvertex* verts; int cverts; int nverts; unsigned char* uniforms; int cuniforms; int nuniforms; // D3D // Geometry struct D3DNVGBuffer VertexBuffer; ID3D11Buffer* pFanIndexBuffer; ID3D11InputLayout* pLayoutRenderTriangles; // State ID3D11Buffer* pVSConstants; ID3D11Buffer* pPSConstants; ID3D11Device* pDevice; ID3D11DeviceContext* pDeviceContext; ID3D11BlendState* pBSBlend; ID3D11BlendState* pBSNoWrite; ID3D11RasterizerState* pRSNoCull; ID3D11RasterizerState* pRSCull; ID3D11DepthStencilState* pDepthStencilDrawShapes; ID3D11DepthStencilState* pDepthStencilDrawAA; ID3D11DepthStencilState* pDepthStencilFill; ID3D11DepthStencilState* pDepthStencilDefault; }; static int D3Dnvg__maxi(int a, int b) { return a > b ? a : b; } static struct D3DNVGtexture* D3Dnvg__allocTexture(struct D3DNVGcontext* D3D) { struct D3DNVGtexture* tex = NULL; int i; for (i = 0; i < D3D->ntextures; i++) { if (D3D->textures[i].id == 0) { tex = &D3D->textures[i]; break; } } if (tex == NULL) { if (D3D->ntextures + 1 > D3D->ctextures) { struct D3DNVGtexture* textures; int ctextures = D3Dnvg__maxi(D3D->ntextures+1, 4) + D3D->ctextures/2; // 1.5x Overallocate textures = (struct D3DNVGtexture*)realloc(D3D->textures, sizeof(struct D3DNVGtexture)*ctextures); if (textures == NULL) return NULL; D3D->textures = textures; D3D->ctextures = ctextures; } tex = &D3D->textures[D3D->ntextures++]; } memset(tex, 0, sizeof(*tex)); tex->id = ++D3D->textureId; return tex; } static struct D3DNVGtexture* D3Dnvg__findTexture(struct D3DNVGcontext* D3D, int id) { int i; for (i = 0; i < D3D->ntextures; i++) if (D3D->textures[i].id == id) return &D3D->textures[i]; return NULL; } static int D3Dnvg__deleteTexture(struct D3DNVGcontext* D3D, int id) { int i; for (i = 0; i < D3D->ntextures; i++) { if (D3D->textures[i].id == id) { if (D3D->textures[i].tex != 0 && (D3D->textures[i].flags & NVG_IMAGE_NODELETE) == 0) { D3D_API_RELEASE(D3D->textures[i].tex); D3D_API_RELEASE(D3D->textures[i].resourceView); } memset(&D3D->textures[i], 0, sizeof(D3D->textures[i])); return 1; } } return 0; } // BEGIN D3D specific static void D3Dnvg_copyMatrix3to4(float* pDest, const float* pSource) { unsigned int i; for (i = 0; i < 4; i++) { memcpy(&pDest[i * 4], &pSource[i * 3], sizeof(float) * 3); } } // END D3D specific static int D3Dnvg__checkError(HRESULT hr, const char* str) { if (!SUCCEEDED(hr)) { printf("Error %08x after %s\n", hr, str); return 1; } return 0; } static int D3Dnvg__createShader(struct D3DNVGcontext* D3D, struct D3DNVGshader* shader, const void* vshader, unsigned int vshader_size, const void* fshader, unsigned int fshader_size) { ID3D11VertexShader* vert = NULL; ID3D11PixelShader* frag = NULL; HRESULT hr; memset(shader, 0, sizeof(*shader)); // Shader byte code is created at compile time from the .hlsl files. // No need for error checks; shader errors can be fixed in the IDE. hr = D3D_API_4(D3D->pDevice, CreateVertexShader, vshader, vshader_size, NULL, &vert); hr = D3D_API_4(D3D->pDevice, CreatePixelShader, fshader, fshader_size, NULL, &frag); shader->vert = vert; shader->frag = frag; return 1; } static void D3Dnvg__deleteShader(struct D3DNVGshader* shader) { D3D_API_RELEASE(shader->vert); D3D_API_RELEASE(shader->frag); } void D3Dnvg_buildFanIndices(struct D3DNVGcontext* D3D) { UINT32 index0 = 0; UINT32 index1 = 1; UINT32 index2 = 2; UINT32 current = 0; D3D11_MAPPED_SUBRESOURCE resource; UINT32* pIndices = NULL; D3D_API_5(D3D->pDeviceContext, Map, (ID3D11Resource*)D3D->pFanIndexBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &resource); pIndices = (UINT32*)resource.pData; while (current < (D3D->VertexBuffer.MaxBufferEntries - 3)) { pIndices[current++] = index0; pIndices[current++] = index1++; pIndices[current++] = index2++; } D3D_API_2(D3D->pDeviceContext, Unmap, (ID3D11Resource*)D3D->pFanIndexBuffer, 0); } struct NVGvertex* D3Dnvg_beginVertexBuffer(struct D3DNVGcontext* D3D, unsigned int maxCount, unsigned int* baseOffset) { D3D11_MAPPED_SUBRESOURCE resource; if (maxCount >= D3D->VertexBuffer.MaxBufferEntries) { D3Dnvg__checkError(E_FAIL, "Vertex buffer too small!"); return NULL; } if ((D3D->VertexBuffer.CurrentBufferEntry + maxCount) >= D3D->VertexBuffer.MaxBufferEntries) { *baseOffset = 0; D3D->VertexBuffer.CurrentBufferEntry = maxCount; D3D_API_5(D3D->pDeviceContext, Map, (ID3D11Resource*)D3D->VertexBuffer.pBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &resource); } else { *baseOffset = D3D->VertexBuffer.CurrentBufferEntry; D3D->VertexBuffer.CurrentBufferEntry = *baseOffset + maxCount; D3D_API_5(D3D->pDeviceContext, Map, (ID3D11Resource*)D3D->VertexBuffer.pBuffer, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &resource); } return ((struct NVGvertex*)resource.pData + *baseOffset); } void D3Dnvg_endVertexBuffer(struct D3DNVGcontext* D3D) { D3D_API_2(D3D->pDeviceContext, Unmap, (ID3D11Resource*)D3D->VertexBuffer.pBuffer, 0); } static void D3Dnvg__copyVerts(struct NVGvertex* pDest, const struct NVGvertex* pSource, unsigned int num) { unsigned int i; for (i = 0; i < num; i++) { pDest[i].x = pSource[i].x; pDest[i].y = pSource[i].y; pDest[i].u = pSource[i].u; pDest[i].v = pSource[i].v; } } static unsigned int D3Dnvg_updateVertexBuffer(ID3D11DeviceContext* pContext, struct D3DNVGBuffer* buffer, const struct NVGvertex* verts, unsigned int nverts) { D3D11_MAPPED_SUBRESOURCE resource; unsigned int retEntry; if (nverts > buffer->MaxBufferEntries) { D3Dnvg__checkError(E_FAIL, "Vertex buffer too small!"); return 0; } if ((buffer->CurrentBufferEntry + nverts) >= buffer->MaxBufferEntries) { buffer->CurrentBufferEntry = 0; D3D_API_5(pContext, Map, (ID3D11Resource*)buffer->pBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &resource); } else { D3D_API_5(pContext, Map, (ID3D11Resource*)buffer->pBuffer, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &resource); } D3Dnvg__copyVerts((((struct NVGvertex*)resource.pData) + buffer->CurrentBufferEntry), (const struct NVGvertex*)verts, nverts); D3D_API_2(pContext, Unmap, (ID3D11Resource*)buffer->pBuffer, 0); retEntry = buffer->CurrentBufferEntry; buffer->CurrentBufferEntry += nverts; return retEntry; } static void D3Dnvg_setBuffers(struct D3DNVGcontext* D3D, unsigned int dynamicOffset) { ID3D11Buffer* pBuffers[1]; unsigned int strides[1]; unsigned int offsets[1]; pBuffers[0] = D3D->VertexBuffer.pBuffer; strides[0] = sizeof(struct NVGvertex); offsets[0] = dynamicOffset * sizeof(struct NVGvertex); D3D_API_3(D3D->pDeviceContext, IASetIndexBuffer, D3D->pFanIndexBuffer, DXGI_FORMAT_R32_UINT, 0); D3D_API_5(D3D->pDeviceContext, IASetVertexBuffers, 0, 1, pBuffers, strides, offsets); D3D_API_1(D3D->pDeviceContext, IASetInputLayout, D3D->pLayoutRenderTriangles); } static int D3Dnvg__renderCreate(void* uptr) { HRESULT hr; D3D11_BUFFER_DESC bufferDesc; D3D11_RASTERIZER_DESC rasterDesc; D3D11_BLEND_DESC blendDesc; D3D11_DEPTH_STENCIL_DESC depthStencilDesc; D3D11_SAMPLER_DESC sampDesc; struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; const D3D11_DEPTH_STENCILOP_DESC frontOp = { D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_INCR, D3D11_COMPARISON_ALWAYS }; const D3D11_DEPTH_STENCILOP_DESC backOp = { D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_DECR, D3D11_COMPARISON_ALWAYS }; const D3D11_DEPTH_STENCILOP_DESC aaOp = { D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_COMPARISON_EQUAL }; const D3D11_DEPTH_STENCILOP_DESC fillOp = { D3D11_STENCIL_OP_ZERO, D3D11_STENCIL_OP_ZERO, D3D11_STENCIL_OP_ZERO, D3D11_COMPARISON_NOT_EQUAL }; const D3D11_DEPTH_STENCILOP_DESC defaultOp = { D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_COMPARISON_ALWAYS }; D3D11_INPUT_ELEMENT_DESC LayoutRenderTriangles[] = { { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0 } }; if (D3D->flags & NVG_ANTIALIAS) { if (D3Dnvg__createShader(D3D, &D3D->shader, g_D3D11VertexShader_Main, sizeof(g_D3D11VertexShader_Main), g_D3D11PixelShaderAA_Main, sizeof(g_D3D11PixelShaderAA_Main)) == 0) return 0; } else { if (D3Dnvg__createShader(D3D, &D3D->shader, g_D3D11VertexShader_Main, sizeof(g_D3D11VertexShader_Main), g_D3D11PixelShader_Main, sizeof(g_D3D11PixelShader_Main)) == 0) return 0; } // Todo: Need to find a good value for this, and // Use the dynamic buffer fill technnique to handle overflow D3D->VertexBuffer.MaxBufferEntries = 1000000; D3D->VertexBuffer.CurrentBufferEntry = 0; memset(&bufferDesc, 0, sizeof(bufferDesc)); bufferDesc.Usage = D3D11_USAGE_DYNAMIC; bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; bufferDesc.MiscFlags = 0; // Create the vertex buffer. bufferDesc.ByteWidth = sizeof(struct NVGvertex)* D3D->VertexBuffer.MaxBufferEntries; hr = D3D_API_3(D3D->pDevice, CreateBuffer, &bufferDesc, NULL, &D3D->VertexBuffer.pBuffer); D3Dnvg__checkError(hr, "Create Vertex Buffer"); bufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER; bufferDesc.ByteWidth = sizeof(UINT32)* D3D->VertexBuffer.MaxBufferEntries; hr = D3D_API_3(D3D->pDevice, CreateBuffer, &bufferDesc, NULL, &D3D->pFanIndexBuffer); D3Dnvg__checkError(hr, "Create Vertex Buffer Static"); D3Dnvg_buildFanIndices(D3D); hr = D3D_API_5(D3D->pDevice, CreateInputLayout, LayoutRenderTriangles, 2, g_D3D11VertexShader_Main, sizeof(g_D3D11VertexShader_Main), &D3D->pLayoutRenderTriangles); D3Dnvg__checkError(hr, "Create Input Layout"); bufferDesc.Usage = D3D11_USAGE_DYNAMIC; bufferDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; bufferDesc.MiscFlags = 0; bufferDesc.ByteWidth = sizeof(struct VS_CONSTANTS); if ((bufferDesc.ByteWidth % 16) != 0) { bufferDesc.ByteWidth += 16 - (bufferDesc.ByteWidth % 16); } hr = D3D_API_3(D3D->pDevice, CreateBuffer, &bufferDesc, NULL, &D3D->pVSConstants); D3Dnvg__checkError(hr, "Create Constant Buffer"); bufferDesc.ByteWidth = sizeof(struct D3DNVGfragUniforms); if ((bufferDesc.ByteWidth % 16) != 0) { bufferDesc.ByteWidth += 16 - (bufferDesc.ByteWidth % 16); } D3D->fragSize = bufferDesc.ByteWidth; hr = D3D_API_3(D3D->pDevice, CreateBuffer, &bufferDesc, NULL, &D3D->pPSConstants); D3Dnvg__checkError(hr, "Create Constant Buffer"); ZeroMemory(&rasterDesc, sizeof(rasterDesc)); rasterDesc.FillMode = D3D11_FILL_SOLID; rasterDesc.CullMode = D3D11_CULL_NONE; rasterDesc.DepthClipEnable = TRUE; rasterDesc.FrontCounterClockwise = TRUE; hr = D3D_API_2(D3D->pDevice, CreateRasterizerState, &rasterDesc, &D3D->pRSNoCull); rasterDesc.CullMode = D3D11_CULL_BACK; hr = D3D_API_2(D3D->pDevice, CreateRasterizerState, &rasterDesc, &D3D->pRSCull); ZeroMemory(&blendDesc, sizeof(blendDesc)); blendDesc.RenderTarget[0].BlendEnable = TRUE; blendDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; blendDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD; blendDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD; blendDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_ONE; blendDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE; blendDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA; blendDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_INV_SRC_ALPHA; blendDesc.IndependentBlendEnable = FALSE; hr = D3D_API_2(D3D->pDevice, CreateBlendState, &blendDesc, &D3D->pBSBlend); blendDesc.RenderTarget[0].BlendEnable = FALSE; blendDesc.RenderTarget[0].RenderTargetWriteMask = 0; hr = D3D_API_2(D3D->pDevice, CreateBlendState, &blendDesc, &D3D->pBSNoWrite); // Stencil A Draw shapes ZeroMemory(&depthStencilDesc, sizeof(depthStencilDesc)); depthStencilDesc.DepthEnable = FALSE; depthStencilDesc.DepthFunc = D3D11_COMPARISON_LESS_EQUAL; depthStencilDesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ZERO; depthStencilDesc.StencilEnable = TRUE; depthStencilDesc.StencilReadMask = D3D11_DEFAULT_STENCIL_READ_MASK; depthStencilDesc.StencilWriteMask = D3D11_DEFAULT_STENCIL_WRITE_MASK; depthStencilDesc.FrontFace = frontOp; depthStencilDesc.BackFace = backOp; // No color write hr = D3D_API_2(D3D->pDevice, CreateDepthStencilState, &depthStencilDesc, &D3D->pDepthStencilDrawShapes); // Draw AA depthStencilDesc.FrontFace = aaOp; depthStencilDesc.BackFace = aaOp; hr = D3D_API_2(D3D->pDevice, CreateDepthStencilState, &depthStencilDesc, &D3D->pDepthStencilDrawAA); // Stencil Fill depthStencilDesc.FrontFace = fillOp; depthStencilDesc.BackFace = fillOp; hr = D3D_API_2(D3D->pDevice, CreateDepthStencilState, &depthStencilDesc, &D3D->pDepthStencilFill); depthStencilDesc.FrontFace = defaultOp; depthStencilDesc.BackFace = defaultOp; depthStencilDesc.StencilEnable = FALSE; hr = D3D_API_2(D3D->pDevice, CreateDepthStencilState, &depthStencilDesc, &D3D->pDepthStencilDefault); ZeroMemory(&sampDesc, sizeof(sampDesc)); sampDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; sampDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; sampDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; sampDesc.MinLOD = 0; sampDesc.MaxLOD = D3D11_FLOAT32_MAX; sampDesc.MipLODBias = 0.0f;//-1.0f; sampDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP; sampDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP; D3D_API_2(D3D->pDevice, CreateSamplerState, &sampDesc, &D3D->pSamplerState[0]); sampDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; sampDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP; D3D_API_2(D3D->pDevice, CreateSamplerState, &sampDesc, &D3D->pSamplerState[1]); sampDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP; sampDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; D3D_API_2(D3D->pDevice, CreateSamplerState, &sampDesc, &D3D->pSamplerState[2]); sampDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; sampDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; D3D_API_2(D3D->pDevice, CreateSamplerState, &sampDesc, &D3D->pSamplerState[3]); return 1; } static int D3Dnvg__renderCreateTexture(void* uptr, int type, int w, int h, int imageFlags, const unsigned char* data) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; struct D3DNVGtexture* tex = D3Dnvg__allocTexture(D3D); D3D11_TEXTURE2D_DESC texDesc; int pixelWidthBytes; HRESULT hr; D3D11_SHADER_RESOURCE_VIEW_DESC viewDesc; if (tex == NULL) { return 0; } tex->width = w; tex->height = h; tex->type = type; tex->flags = imageFlags; memset(&texDesc, 0, sizeof(texDesc)); texDesc.ArraySize = 1; texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; texDesc.CPUAccessFlags = 0; texDesc.MipLevels = 1; if (type == NVG_TEXTURE_RGBA) { texDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; pixelWidthBytes = 4; // Mip maps if (imageFlags & NVG_IMAGE_GENERATE_MIPMAPS) { texDesc.MipLevels = 0; texDesc.BindFlags |= D3D11_BIND_RENDER_TARGET; texDesc.MiscFlags = D3D11_RESOURCE_MISC_GENERATE_MIPS; } } else { texDesc.Format = DXGI_FORMAT_R8_UNORM; pixelWidthBytes = 1; texDesc.MipLevels = 1; } texDesc.Height = tex->height; texDesc.Width = tex->width; texDesc.SampleDesc.Count = 1; texDesc.SampleDesc.Quality = 0; texDesc.Usage = D3D11_USAGE_DEFAULT; hr = D3D_API_3(D3D->pDevice, CreateTexture2D, &texDesc, NULL, &tex->tex); if (FAILED(hr)) { return 0; } if (data != NULL) { D3D_API_6(D3D->pDeviceContext, UpdateSubresource, (ID3D11Resource*)tex->tex, 0, NULL, data, tex->width * pixelWidthBytes, (tex->width * tex->height) * pixelWidthBytes); } viewDesc.Format = texDesc.Format; viewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; viewDesc.Texture2D.MipLevels = (UINT)-1; viewDesc.Texture2D.MostDetailedMip = 0; D3D_API_3(D3D->pDevice, CreateShaderResourceView, (ID3D11Resource*)tex->tex, &viewDesc, &tex->resourceView); if (data != NULL && texDesc.MipLevels == 0) { D3D_API_1(D3D->pDeviceContext, GenerateMips, tex->resourceView); } if (D3Dnvg__checkError(hr, "create tex")) return 0; return tex->id; } static int D3Dnvg__renderDeleteTexture(void* uptr, int image) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; return D3Dnvg__deleteTexture(D3D, image); } static int D3Dnvg__renderUpdateTexture(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; struct D3DNVGtexture* tex = D3Dnvg__findTexture(D3D, image); D3D11_BOX box; unsigned int pixelWidthBytes; unsigned char* pData; if (tex == NULL) { return 0; } box.left = x; box.right = (x + w); box.top = y; box.bottom = (y + h); box.front = 0; box.back = 1; if (tex->type == NVG_TEXTURE_RGBA) { pixelWidthBytes = 4; } else { pixelWidthBytes = 1; } pData = (unsigned char*)data + (y * (tex->width * pixelWidthBytes)) + (x * pixelWidthBytes); D3D_API_6(D3D->pDeviceContext, UpdateSubresource, (ID3D11Resource*)tex->tex, 0, &box, pData, tex->width, tex->width * tex->height); return 1; } static int D3Dnvg__renderGetTextureSize(void* uptr, int image, int* w, int* h) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; struct D3DNVGtexture* tex = D3Dnvg__findTexture(D3D, image); if (tex == NULL) { return 0; } *w = tex->width; *h = tex->height; return 1; } static void D3Dnvg__xformToMat3x3(float* m3, float* t) { m3[0] = t[0]; m3[1] = t[1]; m3[2] = 0.0f; m3[3] = t[2]; m3[4] = t[3]; m3[5] = 0.0f; m3[6] = t[4]; m3[7] = t[5]; m3[8] = 1.0f; } static struct NVGcolor D3Dnvg__premulColor(struct NVGcolor c) { c.r *= c.a; c.g *= c.a; c.b *= c.a; return c; } static int D3Dnvg__convertPaint(struct D3DNVGcontext* D3D, struct D3DNVGfragUniforms* frag, struct NVGpaint* paint, struct NVGscissor* scissor, float width, float fringe, float strokeThr) { struct D3DNVGtexture* tex = NULL; float invxform[6], paintMat[9], scissorMat[9]; memset(frag, 0, sizeof(*frag)); frag->innerCol = D3Dnvg__premulColor(paint->innerColor); frag->outerCol = D3Dnvg__premulColor(paint->outerColor); if (scissor->extent[0] < -0.5f || scissor->extent[1] < -0.5f) { memset(scissorMat, 0, sizeof(scissorMat)); frag->scissorExt[0] = 1.0f; frag->scissorExt[1] = 1.0f; frag->scissorScale[0] = 1.0f; frag->scissorScale[1] = 1.0f; } else { nvgTransformInverse(invxform, scissor->xform); D3Dnvg__xformToMat3x3(scissorMat, invxform); frag->scissorExt[0] = scissor->extent[0]; frag->scissorExt[1] = scissor->extent[1]; frag->scissorScale[0] = sqrtf(scissor->xform[0] * scissor->xform[0] + scissor->xform[2] * scissor->xform[2]) / fringe; frag->scissorScale[1] = sqrtf(scissor->xform[1] * scissor->xform[1] + scissor->xform[3] * scissor->xform[3]) / fringe; } D3Dnvg_copyMatrix3to4(frag->scissorMat, scissorMat); frag->extent[0] = paint->extent[0]; frag->extent[1] = paint->extent[1]; frag->strokeMult[0] = (width*0.5f + fringe*0.5f) / fringe; frag->strokeMult[1] = strokeThr; if (paint->image != 0) { tex = D3Dnvg__findTexture(D3D, paint->image); if (tex == NULL) { return 0; } if ((tex->flags & NVG_IMAGE_FLIPY) != 0) { float m1[6], m2[6]; nvgTransformTranslate(m1, 0.0f, frag->extent[1] * 0.5f); nvgTransformMultiply(m1, paint->xform); nvgTransformScale(m2, 1.0f, -1.0f); nvgTransformMultiply(m2, m1); nvgTransformTranslate(m1, 0.0f, -frag->extent[1] * 0.5f); nvgTransformMultiply(m1, m2); nvgTransformInverse(invxform, m1); } else { nvgTransformInverse(invxform, paint->xform); } frag->type = NSVG_SHADER_FILLIMG; #if NANOVG_GL_USE_UNIFORMBUFFER if (tex->type == NVG_TEXTURE_RGBA) { frag->texType = (tex->flags & NVG_IMAGE_PREMULTIPLIED) ? 0 : 1; } else { frag->texType = 2; } #else if (tex->type == NVG_TEXTURE_RGBA) frag->texType = (tex->flags & NVG_IMAGE_PREMULTIPLIED) ? 0.0f : 1.0f; else frag->texType = 2.0f; #endif } else { frag->type = NSVG_SHADER_FILLGRAD; frag->radius[0] = paint->radius; frag->feather[0] = paint->feather; nvgTransformInverse(invxform, paint->xform); } D3Dnvg__xformToMat3x3(paintMat, invxform); D3Dnvg_copyMatrix3to4(frag->paintMat, paintMat); //D3Dnvg_updateShaders(D3D); return 1; } static struct D3DNVGfragUniforms* nvg__fragUniformPtr(struct D3DNVGcontext* D3D, int i); static void D3Dnvg__setUniforms(struct D3DNVGcontext* D3D, int uniformOffset, int image) { struct D3DNVGfragUniforms* frag = nvg__fragUniformPtr(D3D, uniformOffset); D3D11_MAPPED_SUBRESOURCE MappedResource; // Pixel shader constants D3D_API_5(D3D->pDeviceContext, Map, (ID3D11Resource*)D3D->pPSConstants, 0, D3D11_MAP_WRITE_DISCARD, 0, &MappedResource); memcpy(MappedResource.pData, frag, sizeof(struct D3DNVGfragUniforms)); D3D_API_2(D3D->pDeviceContext, Unmap, (ID3D11Resource*)D3D->pPSConstants, 0); if (image != 0) { struct D3DNVGtexture* tex = D3Dnvg__findTexture(D3D, image); if (tex != NULL) { D3D_API_3(D3D->pDeviceContext, PSSetShaderResources,0, 1, &tex->resourceView); } else { // D3D_API_3(D3D->pDeviceContext, PSSetShaderResources,0, 1, NULL); } } else { // D3D_API_3(D3D->pDeviceContext, PSSetShaderResources,0, 1, NULL); } } static void D3Dnvg__renderViewport(void* uptr, float width, float height, float devicePixelRatio) { NVG_NOTUSED(devicePixelRatio); struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; D3D11_MAPPED_SUBRESOURCE mappedResource; //D3D->alphaMode = alphaBlend; D3D->shader.vc.viewSize[0] = width; D3D->shader.vc.viewSize[1] = height; // Vertex parameters only change when viewport size changes D3D_API_5(D3D->pDeviceContext, Map, (ID3D11Resource*)D3D->pVSConstants, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource); memcpy(mappedResource.pData, &D3D->shader.vc, sizeof(struct VS_CONSTANTS)); D3D_API_2(D3D->pDeviceContext, Unmap, (ID3D11Resource*)D3D->pVSConstants, 0); } static void D3Dnvg__fill(struct D3DNVGcontext* D3D, struct D3DNVGcall* call) { struct D3DNVGpath* paths = &D3D->paths[call->pathOffset]; int i, npaths = call->pathCount; // Draw shapes D3D_API_2(D3D->pDeviceContext, OMSetDepthStencilState, D3D->pDepthStencilDrawShapes, 0); D3D_API_3(D3D->pDeviceContext, OMSetBlendState, D3D->pBSNoWrite, NULL, 0xFFFFFFFF); D3D_API_1(D3D->pDeviceContext, RSSetState, D3D->pRSNoCull); // set bindpoint for solid loc D3Dnvg__setUniforms(D3D, call->uniformOffset, 0); D3D_API_1(D3D->pDeviceContext, IASetPrimitiveTopology, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); for (i = 0; i < npaths; i++) { unsigned int numIndices = ((paths[i].fillCount - 2) * 3); assert(numIndices < D3D->VertexBuffer.MaxBufferEntries); if (numIndices < D3D->VertexBuffer.MaxBufferEntries) { D3D_API_3(D3D->pDeviceContext, DrawIndexed, numIndices, 0, paths[i].fillOffset); } } // Draw anti-aliased pixels D3D_API_1(D3D->pDeviceContext, RSSetState, D3D->pRSCull); D3D_API_1(D3D->pDeviceContext, IASetPrimitiveTopology, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); D3D_API_3(D3D->pDeviceContext, OMSetBlendState, D3D->pBSBlend, NULL, 0xFFFFFFFF); D3Dnvg__setUniforms(D3D, call->uniformOffset + D3D->fragSize, call->image); if (D3D->flags & NVG_ANTIALIAS) { D3D_API_2(D3D->pDeviceContext, OMSetDepthStencilState, D3D->pDepthStencilDrawAA, 0); // Draw fringes for (i = 0; i < npaths; i++) { D3D_API_2(D3D->pDeviceContext, Draw, paths[i].strokeCount, paths[i].strokeOffset); } } // Draw fill D3D_API_1(D3D->pDeviceContext, RSSetState, D3D->pRSNoCull); D3D_API_2(D3D->pDeviceContext, OMSetDepthStencilState, D3D->pDepthStencilFill, 0); D3D_API_2(D3D->pDeviceContext, Draw, call->triangleCount, call->triangleOffset); D3D_API_2(D3D->pDeviceContext, OMSetDepthStencilState, D3D->pDepthStencilDefault, 0); } static void D3Dnvg__convexFill(struct D3DNVGcontext* D3D, struct D3DNVGcall* call) { struct D3DNVGpath* paths = &D3D->paths[call->pathOffset]; int i, npaths = call->pathCount; D3Dnvg__setUniforms(D3D, call->uniformOffset, call->image); D3D_API_1(D3D->pDeviceContext, IASetPrimitiveTopology, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); for (i = 0; i < npaths; i++) { // Draws a fan using indices to fake it up, since there isn't a fan primitive in D3D11. if (paths[i].fillCount > 2) { unsigned int numIndices = ((paths[i].fillCount - 2) * 3); assert(numIndices < D3D->VertexBuffer.MaxBufferEntries); if (numIndices < D3D->VertexBuffer.MaxBufferEntries) { D3D_API_3(D3D->pDeviceContext, DrawIndexed, numIndices, 0, paths[i].fillOffset); } } } // Draw fringes D3D_API_1(D3D->pDeviceContext, IASetPrimitiveTopology, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); for (i = 0; i < npaths; i++) { if (paths[i].strokeCount > 0) { D3D_API_2(D3D->pDeviceContext, Draw, paths[i].strokeCount, paths[i].strokeOffset); } } } static void D3Dnvg__stroke(struct D3DNVGcontext* D3D, struct D3DNVGcall* call) { struct D3DNVGpath* paths = &D3D->paths[call->pathOffset]; int npaths = call->pathCount, i; D3D_API_1(D3D->pDeviceContext, IASetPrimitiveTopology, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); if (D3D->flags & NVG_STENCIL_STROKES) { // Fill the stroke base without overlap D3D_API_2(D3D->pDeviceContext, OMSetDepthStencilState, D3D->pDepthStencilDefault, 0); D3Dnvg__setUniforms(D3D, call->uniformOffset + D3D->fragSize, call->image); for (i = 0; i < npaths; i++) { D3D_API_2(D3D->pDeviceContext, Draw, paths[i].strokeCount, paths[i].strokeOffset); } // Draw anti-aliased pixels. D3Dnvg__setUniforms(D3D, call->uniformOffset, call->image); D3D_API_2(D3D->pDeviceContext, OMSetDepthStencilState, D3D->pDepthStencilDrawAA, 0); for (i = 0; i < npaths; i++) { D3D_API_2(D3D->pDeviceContext, Draw, paths[i].strokeCount, paths[i].strokeOffset); } // Clear stencil buffer. D3D_API_2(D3D->pDeviceContext, OMSetDepthStencilState, D3D->pDepthStencilFill, 0); for (i = 0; i < npaths; i++) { D3D_API_2(D3D->pDeviceContext, Draw, paths[i].strokeCount, paths[i].strokeOffset); } D3D_API_2(D3D->pDeviceContext, OMSetDepthStencilState, D3D->pDepthStencilDefault, 0); } else { D3Dnvg__setUniforms(D3D, call->uniformOffset, call->image); // Draw Strokes for (i = 0; i < npaths; i++) { D3D_API_2(D3D->pDeviceContext, Draw, paths[i].strokeCount, paths[i].strokeOffset); } } } static void D3Dnvg__triangles(struct D3DNVGcontext* D3D, struct D3DNVGcall* call) { D3D_API_1(D3D->pDeviceContext, IASetPrimitiveTopology, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); D3Dnvg__setUniforms(D3D, call->uniformOffset, call->image); D3D_API_2(D3D->pDeviceContext, Draw, call->triangleCount, call->triangleOffset); } static void D3Dnvg__renderCancel(void* uptr) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; D3D->nverts = 0; D3D->npaths = 0; D3D->ncalls = 0; D3D->nuniforms = 0; } static void D3Dnvg__renderFlush(void* uptr) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; int i; if (D3D->ncalls > 0) { unsigned int buffer0Offset = D3Dnvg_updateVertexBuffer(D3D->pDeviceContext, &D3D->VertexBuffer, D3D->verts, D3D->nverts); D3Dnvg_setBuffers(D3D, buffer0Offset); // Ensure valid state D3D_API_3(D3D->pDeviceContext, PSSetConstantBuffers, 0, 1, &D3D->pPSConstants); D3D_API_3(D3D->pDeviceContext, VSSetConstantBuffers, 0, 1, &D3D->pVSConstants); D3D_API_3(D3D->pDeviceContext, PSSetShader, D3D->shader.frag, NULL, 0); D3D_API_3(D3D->pDeviceContext, VSSetShader, D3D->shader.vert, NULL, 0); // Draw shapes D3D_API_2(D3D->pDeviceContext, OMSetDepthStencilState, D3D->pDepthStencilDefault, 0); D3D_API_3(D3D->pDeviceContext, OMSetBlendState, D3D->pBSBlend, NULL, 0xFFFFFFFF); D3D_API_1(D3D->pDeviceContext, RSSetState, D3D->pRSCull); for (i = 0; i < D3D->ncalls; i++) { struct D3DNVGcall* call = &D3D->calls[i]; if (call->image != 0) { struct D3DNVGtexture* tex = D3Dnvg__findTexture(D3D, call->image); if (tex != NULL) { D3D_API_3(D3D->pDeviceContext, PSSetSamplers, 0, 1, &D3D->pSamplerState[(tex->flags & NVG_IMAGE_REPEATX ? 1 : 0) + (tex->flags & NVG_IMAGE_REPEATY ? 2 : 0)]); } } if (call->type == D3DNVG_FILL) D3Dnvg__fill(D3D, call); else if (call->type == D3DNVG_CONVEXFILL) D3Dnvg__convexFill(D3D, call); else if (call->type == D3DNVG_STROKE) D3Dnvg__stroke(D3D, call); else if (call->type == D3DNVG_TRIANGLES) D3Dnvg__triangles(D3D, call); } } // Reset calls D3D->nverts = 0; D3D->npaths = 0; D3D->ncalls = 0; D3D->nuniforms = 0; } static int D3Dnvg__maxVertCount(const struct NVGpath* paths, int npaths) { int i, count = 0; for (i = 0; i < npaths; i++) { count += paths[i].nfill; count += paths[i].nstroke; } return count; } static struct D3DNVGcall* D3Dnvg__allocCall(struct D3DNVGcontext* D3D) { struct D3DNVGcall* ret = NULL; if (D3D->ncalls+1 > D3D->ccalls) { struct D3DNVGcall* calls; int ccalls = D3Dnvg__maxi(D3D->ncalls+1, 128) + D3D->ccalls/2; // 1.5x Overallocate calls = (struct D3DNVGcall*)realloc(D3D->calls, sizeof(struct D3DNVGcall) * ccalls); if (calls == NULL) return NULL; D3D->calls = calls; D3D->ccalls = ccalls; } ret = &D3D->calls[D3D->ncalls++]; memset(ret, 0, sizeof(struct D3DNVGcall)); return ret; } static int D3Dnvg__allocPaths(struct D3DNVGcontext* D3D, int n) { int ret = 0; if (D3D->npaths+n > D3D->cpaths) { struct D3DNVGpath* paths; int cpaths = D3Dnvg__maxi(D3D->npaths + n, 128) + D3D->cpaths/2; // 1.5x Overallocate paths = (struct D3DNVGpath*)realloc(D3D->paths, sizeof(struct D3DNVGpath) * cpaths); if (paths == NULL) return -1; D3D->paths = paths; D3D->cpaths = cpaths; } ret = D3D->npaths; D3D->npaths += n; return ret; } static int D3Dnvg__allocVerts(struct D3DNVGcontext* D3D, int n) { int ret = 0; if (D3D->nverts+n > D3D->cverts) { struct NVGvertex* verts; int cverts = D3Dnvg__maxi(D3D->nverts + n, 4096) + D3D->cverts/2; // 1.5x Overallocate verts = (struct NVGvertex*)realloc(D3D->verts, sizeof(struct NVGvertex) * cverts); if (verts == NULL) return -1; D3D->verts = verts; D3D->cverts = cverts; } ret = D3D->nverts; D3D->nverts += n; return ret; } static int D3Dnvg__allocFragUniforms(struct D3DNVGcontext* D3D, int n) { int ret = 0, structSize = D3D->fragSize; if (D3D->nuniforms+n > D3D->cuniforms) { unsigned char* uniforms; int cuniforms = D3Dnvg__maxi(D3D->nuniforms+n, 128) + D3D->cuniforms/2; // 1.5x Overallocate uniforms = (unsigned char*)realloc(D3D->uniforms, structSize * cuniforms); if (uniforms == NULL) return -1; D3D->uniforms = uniforms; D3D->cuniforms = cuniforms; } ret = D3D->nuniforms * structSize; D3D->nuniforms += n; return ret; } static struct D3DNVGfragUniforms* nvg__fragUniformPtr(struct D3DNVGcontext* D3D, int i) { return (struct D3DNVGfragUniforms*)&D3D->uniforms[i]; } static void D3Dnvg__vset(struct NVGvertex* vtx, float x, float y, float u, float v) { vtx->x = x; vtx->y = y; vtx->u = u; vtx->v = v; } static void D3Dnvg__renderFill(void* uptr, struct NVGpaint* paint, NVGcompositeOperationState compositeOperation, struct NVGscissor* scissor, float fringe, const float* bounds, const struct NVGpath* paths, int npaths) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; struct D3DNVGcall* call = D3Dnvg__allocCall(D3D); struct NVGvertex* quad; struct D3DNVGfragUniforms* frag; int i, maxverts, offset; if (call == NULL) return; call->type = D3DNVG_FILL; call->triangleCount = 4; call->pathOffset = D3Dnvg__allocPaths(D3D, npaths); if (call->pathOffset == -1) goto error; call->pathCount = npaths; call->image = paint->image; NVG_NOTUSED(compositeOperation); if (npaths == 1 && paths[0].convex) { call->type = D3DNVG_CONVEXFILL; call->triangleCount = 0; // Bounding box fill quad not needed for convex fill } // Allocate vertices for all the paths. maxverts = D3Dnvg__maxVertCount(paths, npaths) + call->triangleCount; offset = D3Dnvg__allocVerts(D3D, maxverts); if (offset == -1) goto error; for (i = 0; i < npaths; i++) { struct D3DNVGpath* copy = &D3D->paths[call->pathOffset + i]; const struct NVGpath* path = &paths[i]; memset(copy, 0, sizeof(struct D3DNVGpath)); if (path->nfill > 0) { copy->fillOffset = offset; copy->fillCount = path->nfill; memcpy(&D3D->verts[offset], path->fill, sizeof(struct NVGvertex) * path->nfill); offset += path->nfill; } if (path->nstroke > 0) { copy->strokeOffset = offset; copy->strokeCount = path->nstroke; memcpy(&D3D->verts[offset], path->stroke, sizeof(struct NVGvertex) * path->nstroke); offset += path->nstroke; } } if (call->type == D3DNVG_FILL) { // Quad call->triangleOffset = offset; quad = &D3D->verts[call->triangleOffset]; D3Dnvg__vset(&quad[0], bounds[2], bounds[3], 0.5f, 1.0f); D3Dnvg__vset(&quad[1], bounds[2], bounds[1], 0.5f, 1.0f); D3Dnvg__vset(&quad[2], bounds[0], bounds[3], 0.5f, 1.0f); D3Dnvg__vset(&quad[3], bounds[0], bounds[1], 0.5f, 1.0f); call->uniformOffset = D3Dnvg__allocFragUniforms(D3D, 2); if (call->uniformOffset == -1) goto error; // Simple shader for stencil frag = nvg__fragUniformPtr(D3D, call->uniformOffset); memset(frag, 0, sizeof(*frag)); frag->strokeMult[1] = -1.0f; frag->type = NSVG_SHADER_SIMPLE; // Fill shader D3Dnvg__convertPaint(D3D, nvg__fragUniformPtr(D3D, call->uniformOffset + D3D->fragSize), paint, scissor, fringe, fringe, -1.0f); } else { call->uniformOffset = D3Dnvg__allocFragUniforms(D3D, 1); if (call->uniformOffset == -1) goto error; // Fill shader D3Dnvg__convertPaint(D3D, nvg__fragUniformPtr(D3D, call->uniformOffset), paint, scissor, fringe, fringe, -1.0f); } return; error: // We get here if call alloc was ok, but something else is not. // Roll back the last call to prevent drawing it. if (D3D->ncalls > 0) D3D->ncalls--; } static void D3Dnvg__renderStroke(void* uptr, struct NVGpaint* paint, NVGcompositeOperationState compositeOperation, struct NVGscissor* scissor, float fringe, float strokeWidth, const struct NVGpath* paths, int npaths) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; struct D3DNVGcall* call = D3Dnvg__allocCall(D3D); int i, maxverts, offset; if (call == NULL) return; call->type = D3DNVG_STROKE; call->pathOffset = D3Dnvg__allocPaths(D3D, npaths); if (call->pathOffset == -1) goto error; call->pathCount = npaths; call->image = paint->image; NVG_NOTUSED(compositeOperation); // Allocate vertices for all the paths. maxverts = D3Dnvg__maxVertCount(paths, npaths); offset = D3Dnvg__allocVerts(D3D, maxverts); if (offset == -1) goto error; for (i = 0; i < npaths; i++) { struct D3DNVGpath* copy = &D3D->paths[call->pathOffset + i]; const struct NVGpath* path = &paths[i]; memset(copy, 0, sizeof(struct D3DNVGpath)); if (path->nstroke) { copy->strokeOffset = offset; copy->strokeCount = path->nstroke; memcpy(&D3D->verts[offset], path->stroke, sizeof(struct NVGvertex) * path->nstroke); offset += path->nstroke; } } if (D3D->flags & NVG_STENCIL_STROKES) { // Fill shader call->uniformOffset = D3Dnvg__allocFragUniforms(D3D, 2); if (call->uniformOffset == -1) goto error; D3Dnvg__convertPaint(D3D, nvg__fragUniformPtr(D3D, call->uniformOffset), paint, scissor, strokeWidth, fringe, -1.0f); D3Dnvg__convertPaint(D3D, nvg__fragUniformPtr(D3D, call->uniformOffset + D3D->fragSize), paint, scissor, strokeWidth, fringe, 1.0f - 0.5f/255.0f); } else { // Fill shader call->uniformOffset = D3Dnvg__allocFragUniforms(D3D, 1); if (call->uniformOffset == -1) goto error; D3Dnvg__convertPaint(D3D, nvg__fragUniformPtr(D3D, call->uniformOffset), paint, scissor, strokeWidth, fringe, -1.0f); } return; error: // We get here if call alloc was ok, but something else is not. // Roll back the last call to prevent drawing it. if (D3D->ncalls > 0) D3D->ncalls--; } static void D3Dnvg__renderTriangles(void* uptr, struct NVGpaint* paint, NVGcompositeOperationState compositeOperation, struct NVGscissor* scissor, const struct NVGvertex* verts, int nverts, float fringe) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; struct D3DNVGcall* call = D3Dnvg__allocCall(D3D); struct D3DNVGfragUniforms* frag; if (call == NULL) return; call->type = D3DNVG_TRIANGLES; call->image = paint->image; NVG_NOTUSED(compositeOperation); // Allocate vertices for all the paths. call->triangleOffset = D3Dnvg__allocVerts(D3D, nverts); if (call->triangleOffset == -1) goto error; call->triangleCount = nverts; memcpy(&D3D->verts[call->triangleOffset], verts, sizeof(struct NVGvertex) * nverts); // Fill shader call->uniformOffset = D3Dnvg__allocFragUniforms(D3D, 1); if (call->uniformOffset == -1) goto error; frag = nvg__fragUniformPtr(D3D, call->uniformOffset); D3Dnvg__convertPaint(D3D, frag, paint, scissor, 1.0f, fringe, -1.0f); frag->type = NSVG_SHADER_IMG; return; error: // We get here if call alloc was ok, but something else is not. // Roll back the last call to prevent drawing it. if (D3D->ncalls > 0) D3D->ncalls--; } static void D3Dnvg__renderDelete(void* uptr) { struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)uptr; int i; if (D3D == NULL) { return; } D3Dnvg__deleteShader(&D3D->shader); for (i = 0; i < D3D->ntextures; i++) { if (D3D->textures[i].tex != 0 && (D3D->textures[i].flags & NVG_IMAGE_NODELETE) == 0) { D3D_API_RELEASE(D3D->textures[i].tex); D3D_API_RELEASE(D3D->textures[i].resourceView); } } for (i = 0; i < 4; i++) { D3D_API_RELEASE(D3D->pSamplerState[i]); } D3D_API_RELEASE(D3D->VertexBuffer.pBuffer); D3D_API_RELEASE(D3D->pVSConstants); D3D_API_RELEASE(D3D->pPSConstants); D3D_API_RELEASE(D3D->pFanIndexBuffer); D3D_API_RELEASE(D3D->pLayoutRenderTriangles); D3D_API_RELEASE(D3D->pBSBlend); D3D_API_RELEASE(D3D->pBSNoWrite); D3D_API_RELEASE(D3D->pRSCull); D3D_API_RELEASE(D3D->pRSNoCull); D3D_API_RELEASE(D3D->pDepthStencilDrawShapes); D3D_API_RELEASE(D3D->pDepthStencilDrawAA); D3D_API_RELEASE(D3D->pDepthStencilFill); D3D_API_RELEASE(D3D->pDepthStencilDefault); // We took a reference to this // Don't delete the device though. D3D_API_RELEASE(D3D->pDeviceContext); free(D3D->textures); free(D3D->paths); free(D3D->verts); free(D3D->uniforms); free(D3D->calls); free(D3D); } struct NVGcontext* nvgCreateD3D11(ID3D11Device* pDevice, int flags) { struct NVGparams params; struct NVGcontext* ctx = NULL; struct D3DNVGcontext* D3D = (struct D3DNVGcontext*)malloc(sizeof(struct D3DNVGcontext)); if (D3D == NULL) { goto error; } memset(D3D, 0, sizeof(struct D3DNVGcontext)); D3D->pDevice = pDevice; D3D_API_1(pDevice, GetImmediateContext, &D3D->pDeviceContext); memset(¶ms, 0, sizeof(params)); params.renderCreate = D3Dnvg__renderCreate; params.renderCreateTexture = D3Dnvg__renderCreateTexture; params.renderDeleteTexture = D3Dnvg__renderDeleteTexture; params.renderUpdateTexture = D3Dnvg__renderUpdateTexture; params.renderGetTextureSize = D3Dnvg__renderGetTextureSize; params.renderViewport = D3Dnvg__renderViewport; params.renderCancel = D3Dnvg__renderCancel; params.renderFlush = D3Dnvg__renderFlush; params.renderFill = D3Dnvg__renderFill; params.renderStroke = D3Dnvg__renderStroke; params.renderTriangles = D3Dnvg__renderTriangles; params.renderDelete = D3Dnvg__renderDelete; params.userPtr = D3D; params.edgeAntiAlias = flags & NVG_ANTIALIAS ? 1 : 0; D3D->flags = flags; ctx = nvgCreateInternal(¶ms); if (ctx == NULL) goto error; return ctx; error: // 'D3D' is freed by nvgDeleteInternal. if (ctx != NULL) nvgDeleteInternal(ctx); return NULL; } void nvgDeleteD3D11(struct NVGcontext* ctx) { nvgDeleteInternal(ctx); } #ifdef IMPLEMENTED_IMAGE_FUNCS int nvd3dCreateImageFromHandle(struct NVGcontext* ctx, void* textureId, int w, int h, int flags) { /*struct D3DNVGcontext* gl = (struct D3DNVGcontext*)nvgInternalParams(ctx)->userPtr; struct D3DNVGtexture* tex = D3Dnvg__allocTexture(gl); if (tex == NULL) return 0; tex->type = NVG_TEXTURE_RGBA; tex->tex = textureId; tex->flags = flags; tex->width = w; tex->height = h; return tex->id; */ return 0; } unsigned int nvd3dImageHandle(struct NVGcontext* ctx, int image) { /* struct D3DNVGcontext* gl = (struct D3DNVGcontext*)nvgInternalParams(ctx)->userPtr; struct D3DNVGtexture* tex = D3Dnvg__findTexture(gl, image); return tex->tex;*/ return 0; } void nvd3dImageFlags(struct NVGcontext* ctx, int image, int flags) { /* struct D3DNVGcontext* gl = (struct D3DNVGcontext*)nvgInternalParams(ctx)->userPtr; struct D3DNVGtexture* tex = D3Dnvg__findTexture(gl, image); tex->flags = flags; */ } #endif #endif //NANOVG_D3D11_IMPLEMENTATION #endif //NANOVG_D3D11_Hvst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/000077500000000000000000000000001461511344300264275ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/LICENSE000066400000000000000000000020461461511344300274360ustar00rootroot00000000000000MIT License Copyright (c) 2017 Ollix Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/README.md000066400000000000000000000057631461511344300277210ustar00rootroot00000000000000MetalNanoVG =========== MetalNanoVG is the native [Metal](https://developer.apple.com/metal/) port of [NanoVG](https://github.com/memononen/nanovg) that tries to get the most out of Apple's Graphics APIs. ### Donation If you found this project useful, please consider donating to show your support ❤️ [![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3366Q3AVUJLTQ) Precautions =========== * Works only on [macOS 10.11+](https://support.apple.com/en-us/HT205073), tvOS 9.0+ and [iOS 8.0+](https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html#//apple_ref/doc/uid/TP40013599-CH17-SW1). * Simulator support is available since iOS 13 and requires Xcode 11+ running on macOS 10.15+. * Not all Apple hardwares are supported even if meets the OS requirement. * [ARC](https://en.wikipedia.org/wiki/Automatic_Reference_Counting) is required. Advantages ========== * Shared buffers between CPU and GPU. * Various Metal states are cached whenever possible. * Low overheads compared to OpenGL. * Pre-compiled shaders. (no need to compile shaders at runtime) * Seamless integration with powerful Metal features such as [Metal Performance Shaders](https://developer.apple.com/documentation/metalperformanceshaders). Installation ============ 1. Download both `NanoVG` and `MetalNanoVG` source codes. 2. Add both `NanoVG` and `MetalNanoVG`'s `src` directories to the header search path. 3. Add `NanoVG`'s `src/nanovg.c` and `MetalNanoVG`'s `src/nanovg_mtl.m` to the `Compile Sources` section in Xcode. 4. Link the `Metal` and `QuartzCore` frameworks. 5. For best performance, disable *GPU Frame Capture* and *Metal API Validation* as described [here](https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Dev-Technique/Dev-Technique.html#//apple_ref/doc/uid/TP40014221-CH8-SW3). Done. Usage ===== 1. Include the headers. ```C #include "nanovg.h" #include "nanovg_mtl.h" ``` 2. Pass the `CAMetalLayer` object when creating the NanoVG context. ```C NVGcontext* ctx = nvgCreateMTL(metalLayer, NVG_ANTIALIAS | NVG_STENCIL_STROKES); ``` Benchmark ========= The following table depicts a simple CPU usage benchmark of running the NanoVG demo app on iOS devices with full Retina resolution. Both Metal and OpenGL ES2 implementations get constant 60 FPS. | | iPhone 6s+ | iPad Pro 12.7" (2015) | | ---------- | ----------- | --------------------- | | Resolution | 1080 x 1920 | 2732 * 2048 | | Metal | 20% | 20% | | OpenGL ES2 | 35% | 33% | Example ======= MetalNanoVG was originally created to improve the performance of the iOS app [Fog of World](https://fogofworld.com). ![Screenshot of Fog of World](http://media.fogofworld.com.s3.amazonaws.com/github/fogofworld_screenshot.jpg) vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/src/000077500000000000000000000000001461511344300272165ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/src/mnvg_bitcode/000077500000000000000000000000001461511344300316565ustar00rootroot00000000000000ios.h000066400000000000000000002324361461511344300325540ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/src/mnvg_bitcodeunsigned char mnvg_bitcode_ios[] = { 0x4d, 0x54, 0x4c, 0x42, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x0d, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0x51, 0x0a, 0x05, 0x10, 0xc7, 0xd8, 0xab, 0x67, 0x8d, 0xb5, 0xa2, 0xdb, 0x58, 0x64, 0x12, 0x2b, 0xa0, 0xce, 0x63, 0x49, 0xcf, 0x7d, 0x28, 0xf1, 0x4d, 0x6f, 0x9e, 0xc9, 0xf5, 0x31, 0x0d, 0xb2, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x76, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x0f, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x01, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0x62, 0x6c, 0x9e, 0x92, 0xf1, 0xd7, 0xdf, 0x09, 0x18, 0x4b, 0x71, 0x00, 0x23, 0xca, 0xa6, 0x07, 0x37, 0x26, 0xe7, 0x98, 0x7b, 0x86, 0xcb, 0xeb, 0xe0, 0xae, 0x2b, 0x19, 0x17, 0x18, 0xe9, 0x49, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x78, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x11, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x41, 0x41, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x01, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0xa7, 0x36, 0xad, 0xef, 0xca, 0xf7, 0x5c, 0x88, 0x26, 0xf9, 0x51, 0xdd, 0x66, 0xe2, 0xdb, 0x9a, 0x4f, 0x8b, 0xad, 0x24, 0x41, 0xc3, 0xd6, 0x25, 0x51, 0x4a, 0x79, 0x23, 0xe7, 0x2a, 0x24, 0x25, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x45, 0x4e, 0x44, 0x54, 0x25, 0x00, 0x00, 0x00, 0x56, 0x41, 0x54, 0x54, 0x11, 0x00, 0x02, 0x00, 0x70, 0x6f, 0x73, 0x00, 0x00, 0x80, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x01, 0x80, 0x56, 0x41, 0x54, 0x59, 0x04, 0x00, 0x02, 0x00, 0x04, 0x04, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x94, 0x0a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xa2, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x10, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0x84, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x49, 0x0a, 0x32, 0x44, 0x24, 0x48, 0x0a, 0x90, 0x21, 0x23, 0xc4, 0x52, 0x80, 0x0c, 0x19, 0x21, 0x72, 0x24, 0x07, 0xc8, 0x08, 0x11, 0x62, 0xa8, 0xa0, 0xa8, 0x40, 0xc6, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x51, 0x18, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x1b, 0xc8, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0x80, 0x8a, 0x18, 0x87, 0x77, 0x90, 0x07, 0x79, 0x28, 0x87, 0x71, 0xa0, 0x07, 0x76, 0xc8, 0x87, 0x36, 0x90, 0x87, 0x77, 0xa8, 0x07, 0x77, 0x20, 0x87, 0x72, 0x20, 0x87, 0x36, 0x20, 0x87, 0x74, 0xb0, 0x87, 0x74, 0x20, 0x87, 0x72, 0x68, 0x83, 0x79, 0x88, 0x07, 0x79, 0xa0, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0x82, 0x1c, 0xd2, 0x61, 0x1e, 0xc2, 0x41, 0x1c, 0xd8, 0xa1, 0x1c, 0xda, 0x80, 0x1e, 0xc2, 0x21, 0x1d, 0xd8, 0xa1, 0x0d, 0xc6, 0x21, 0x1c, 0xd8, 0x81, 0x1d, 0xe6, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x60, 0x87, 0x72, 0x98, 0x87, 0x79, 0x68, 0x03, 0x78, 0x90, 0x87, 0x72, 0x18, 0x87, 0x74, 0x98, 0x87, 0x72, 0x68, 0x03, 0x73, 0x80, 0x87, 0x76, 0x08, 0x07, 0x72, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1c, 0xe4, 0x21, 0x1c, 0xda, 0xa1, 0x1c, 0xda, 0x00, 0x1e, 0xde, 0x21, 0x1d, 0xdc, 0x81, 0x1e, 0xca, 0x41, 0x1e, 0xda, 0xa0, 0x1c, 0xd8, 0x21, 0x1d, 0xda, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x06, 0x77, 0x78, 0x87, 0x36, 0x30, 0x07, 0x79, 0x08, 0x87, 0x76, 0x28, 0x87, 0x36, 0x80, 0x87, 0x77, 0x48, 0x07, 0x77, 0xa0, 0x87, 0x72, 0x90, 0x87, 0x36, 0x28, 0x07, 0x76, 0x48, 0x87, 0x76, 0x68, 0x03, 0x77, 0x78, 0x07, 0x77, 0x68, 0x03, 0x76, 0x28, 0x87, 0x70, 0x30, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x83, 0x74, 0x70, 0x07, 0x73, 0x98, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0x40, 0x1d, 0xea, 0xa1, 0x1d, 0xe0, 0xa1, 0x0d, 0xe8, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x1e, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x70, 0x87, 0x70, 0x70, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xe6, 0x21, 0x1d, 0xce, 0xc1, 0x1d, 0xca, 0x81, 0x1c, 0xda, 0x40, 0x1f, 0xca, 0x41, 0x1e, 0xde, 0x61, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x7a, 0x90, 0x87, 0x70, 0x80, 0x07, 0x78, 0x48, 0x07, 0x77, 0x38, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0x62, 0x1e, 0xe8, 0x21, 0x1c, 0xc6, 0x61, 0x1d, 0xda, 0x00, 0x1e, 0xe4, 0xe1, 0x1d, 0xe8, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xda, 0x40, 0x1c, 0xea, 0xc1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x0d, 0xe6, 0x21, 0x1d, 0xf4, 0xa1, 0x1c, 0x00, 0x3c, 0x00, 0x88, 0x7a, 0x70, 0x87, 0x79, 0x08, 0x07, 0x73, 0x28, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xea, 0x61, 0x1e, 0xca, 0xa1, 0x0d, 0xe6, 0xe1, 0x1d, 0xcc, 0x81, 0x1e, 0xda, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, 0xc2, 0x81, 0x1e, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x36, 0x20, 0xc2, 0x00, 0x24, 0xc0, 0x02, 0x54, 0x00, 0x00, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x84, 0x40, 0x00, 0x89, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x22, 0x08, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x22, 0xa4, 0x84, 0x04, 0x13, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x88, 0x8c, 0x0b, 0x84, 0x84, 0x4c, 0x10, 0x2c, 0x33, 0x00, 0xc3, 0x08, 0x04, 0x30, 0x8c, 0x20, 0x00, 0x57, 0x49, 0x53, 0x44, 0x09, 0x93, 0xbf, 0x02, 0xd2, 0x44, 0x44, 0x48, 0x46, 0x44, 0x1d, 0x30, 0x01, 0x68, 0x08, 0x91, 0x41, 0x04, 0x41, 0x28, 0xc4, 0x88, 0x10, 0xd5, 0x40, 0xc0, 0x1c, 0x01, 0x18, 0xa4, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xa8, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x83, 0x74, 0x78, 0x87, 0x79, 0xc0, 0x03, 0x37, 0x80, 0x03, 0x37, 0x80, 0x83, 0x0d, 0xb7, 0x51, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x40, 0x07, 0x78, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x90, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x90, 0x07, 0x72, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xd0, 0x06, 0xee, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x43, 0x18, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2c, 0x10, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x10, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0xc2, 0x62, 0x28, 0x81, 0x11, 0x80, 0x82, 0x28, 0x82, 0x42, 0x20, 0x18, 0x23, 0x00, 0x41, 0x10, 0x14, 0xc1, 0x80, 0x72, 0x2c, 0xa1, 0x11, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x10, 0x97, 0x29, 0xa2, 0x25, 0x10, 0xab, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x21, 0x06, 0x52, 0x1c, 0x40, 0x82, 0x50, 0xb9, 0x1b, 0x43, 0x0b, 0x93, 0xfb, 0x9a, 0x4b, 0xd3, 0x2b, 0x1b, 0x62, 0x20, 0xc2, 0x21, 0x20, 0x06, 0xd7, 0x20, 0x08, 0x0e, 0x8e, 0xad, 0x0c, 0x84, 0x89, 0xc9, 0xaa, 0x09, 0xc4, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x0d, 0x24, 0x07, 0x46, 0xc6, 0x25, 0x07, 0x04, 0xa5, 0xad, 0x8c, 0x2e, 0x8c, 0xcd, 0xac, 0xac, 0x25, 0x07, 0x46, 0xc6, 0x25, 0xc7, 0xc5, 0x26, 0x26, 0x65, 0x88, 0x70, 0x10, 0x43, 0x0c, 0x44, 0x40, 0x02, 0x64, 0x60, 0xd1, 0x54, 0x46, 0x17, 0xc6, 0x36, 0x04, 0x39, 0x0e, 0x44, 0x40, 0x06, 0x64, 0xe0, 0x16, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0x42, 0x56, 0xe6, 0xf6, 0x26, 0xd7, 0x36, 0xf7, 0x45, 0x96, 0x36, 0x17, 0x26, 0xc6, 0x56, 0x36, 0x44, 0x38, 0x12, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0x63, 0x21, 0x19, 0x84, 0xa5, 0xc9, 0xb9, 0x8c, 0xbd, 0xb5, 0xc1, 0xa5, 0xb1, 0x95, 0xb9, 0x98, 0xc9, 0x85, 0xb5, 0x95, 0x89, 0xd5, 0x99, 0x99, 0x95, 0xc9, 0x7d, 0x99, 0x95, 0xd1, 0x8d, 0xa1, 0x7d, 0x95, 0xb9, 0x85, 0x89, 0xb1, 0x95, 0x0d, 0x11, 0x8e, 0x86, 0x61, 0x10, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0xe2, 0x16, 0x46, 0x97, 0x66, 0x57, 0xf6, 0x45, 0xf6, 0x56, 0x27, 0xc6, 0x56, 0xf6, 0x45, 0x96, 0x36, 0x17, 0x26, 0xc6, 0x56, 0x36, 0x44, 0x38, 0x1e, 0x92, 0x41, 0x58, 0x9a, 0x9c, 0xcb, 0xd8, 0x5b, 0x1b, 0x5c, 0x1a, 0x5b, 0x99, 0x8b, 0x5b, 0x18, 0x5d, 0x9a, 0x5d, 0xd9, 0x17, 0xdb, 0x9b, 0xdb, 0xd9, 0x17, 0xdb, 0x9b, 0xdb, 0xd9, 0x17, 0x59, 0xda, 0x5c, 0x98, 0x18, 0x5b, 0xd9, 0x10, 0xe1, 0x88, 0x78, 0x06, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0x63, 0x22, 0x13, 0x96, 0x26, 0xe7, 0x02, 0xf7, 0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6, 0xc6, 0x28, 0x2c, 0x4d, 0xce, 0x25, 0x4c, 0xee, 0xec, 0x8b, 0x2e, 0x0f, 0xae, 0xec, 0xcb, 0x2d, 0xac, 0xad, 0x8c, 0x86, 0x19, 0xdb, 0x5b, 0x18, 0x1d, 0x0d, 0x99, 0xb0, 0x34, 0x39, 0x97, 0x30, 0xb9, 0xb3, 0x2f, 0xb7, 0xb0, 0xb6, 0x32, 0x0e, 0x70, 0x6f, 0x73, 0x43, 0x94, 0xa3, 0x3a, 0xac, 0xe3, 0x3a, 0xb0, 0x23, 0x63, 0x14, 0x96, 0x26, 0xe7, 0x62, 0x57, 0x26, 0x47, 0x57, 0x86, 0xf7, 0xf5, 0x56, 0x47, 0x07, 0x57, 0x47, 0xc7, 0xea, 0xac, 0xcc, 0xad, 0x4c, 0x2e, 0x8c, 0xae, 0x8c, 0x0c, 0x85, 0xc6, 0x0c, 0xee, 0x6d, 0x8e, 0xc8, 0x4e, 0xe6, 0xcb, 0x2c, 0x85, 0x86, 0x19, 0xdb, 0x5b, 0x18, 0x9d, 0x0c, 0x09, 0x33, 0xb8, 0xb7, 0xb9, 0x21, 0xcc, 0xb1, 0x1d, 0xdc, 0x61, 0x1d, 0xdd, 0x81, 0x1d, 0x1e, 0xb1, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xba, 0x32, 0x32, 0x94, 0x1b, 0x33, 0xba, 0xb1, 0xb7, 0x37, 0x39, 0x32, 0x22, 0x3b, 0x99, 0x2f, 0xb3, 0x14, 0x1e, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x43, 0x98, 0x63, 0x3b, 0xc0, 0xe0, 0xb0, 0x8e, 0xee, 0xc0, 0x8e, 0x30, 0x18, 0x62, 0x1c, 0xda, 0xf1, 0x1d, 0x62, 0x40, 0x28, 0x2c, 0x4d, 0xce, 0xc5, 0xae, 0x4c, 0x8e, 0xae, 0x0c, 0xef, 0x2b, 0xcd, 0x0d, 0xae, 0x8e, 0x8e, 0x52, 0x58, 0x9a, 0x9c, 0x0b, 0xdb, 0xdb, 0x58, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x57, 0x9a, 0x1b, 0x59, 0x19, 0x1e, 0xa9, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xba, 0x32, 0x32, 0x94, 0x19, 0xb8, 0xb7, 0x39, 0x22, 0x3b, 0x99, 0x2f, 0xb3, 0x94, 0x21, 0x14, 0x32, 0x1c, 0x64, 0x70, 0x94, 0x01, 0x32, 0x20, 0xc2, 0x61, 0x06, 0x87, 0x75, 0x74, 0x07, 0x76, 0x64, 0xbc, 0xce, 0xca, 0xdc, 0xca, 0xe4, 0xc2, 0xe8, 0xca, 0xc8, 0x50, 0x6c, 0xe8, 0xc6, 0xde, 0xde, 0xe4, 0xc8, 0x88, 0xec, 0x64, 0xbe, 0xcc, 0x52, 0x68, 0xd0, 0x8d, 0xbd, 0xbd, 0xc9, 0x91, 0x0d, 0xa1, 0x10, 0xe1, 0x20, 0x83, 0xa3, 0x0c, 0x10, 0x01, 0x11, 0x0e, 0x34, 0x38, 0xac, 0xa3, 0x3b, 0xb0, 0x23, 0x0d, 0xa8, 0x84, 0xa5, 0xc9, 0xb9, 0x88, 0xd5, 0x99, 0x99, 0x95, 0xc9, 0xf1, 0x09, 0x4b, 0x93, 0x73, 0x11, 0xab, 0x33, 0x33, 0x2b, 0x93, 0xfb, 0x9a, 0x4b, 0xd3, 0x2b, 0x23, 0x12, 0x96, 0x26, 0xe7, 0x22, 0x57, 0x16, 0x46, 0xc6, 0x28, 0x2c, 0x4d, 0xce, 0x25, 0x4c, 0xee, 0xec, 0x8b, 0x2e, 0x0f, 0xae, 0xec, 0x6b, 0x2e, 0x4d, 0xaf, 0x8c, 0x57, 0x58, 0x9a, 0x9c, 0x4b, 0x98, 0xdc, 0xd9, 0x17, 0x5d, 0x1e, 0x5c, 0xd9, 0x57, 0x18, 0x5b, 0xda, 0x99, 0xdb, 0xd7, 0x5c, 0x9a, 0x5e, 0x19, 0x11, 0xbb, 0xb4, 0xb2, 0xbb, 0xa9, 0x34, 0xbd, 0xb2, 0x21, 0x60, 0x80, 0x14, 0xc7, 0x1a, 0x1c, 0x6c, 0x80, 0x10, 0x47, 0x19, 0x20, 0x02, 0x22, 0x1c, 0x6d, 0x70, 0xb8, 0x01, 0x42, 0x1c, 0x6f, 0x80, 0x10, 0x87, 0x75, 0x74, 0x07, 0x76, 0xc0, 0xc1, 0x10, 0xe3, 0x38, 0x83, 0x43, 0x0d, 0x8e, 0x38, 0x18, 0x62, 0x18, 0xc0, 0x31, 0x06, 0x87, 0x1c, 0x0c, 0x11, 0x80, 0x63, 0x44, 0xc4, 0x0e, 0xec, 0x60, 0x0f, 0xed, 0xe0, 0x06, 0xed, 0xf0, 0x0e, 0xe4, 0x50, 0x0f, 0xec, 0x50, 0x0e, 0x6e, 0x60, 0x0e, 0xec, 0x10, 0x0e, 0xe7, 0x30, 0x0f, 0x53, 0x84, 0x60, 0x18, 0xa1, 0xb0, 0x03, 0x3b, 0xd8, 0x43, 0x3b, 0xb8, 0x41, 0x3a, 0x90, 0x43, 0x39, 0xb8, 0x03, 0x3d, 0x4c, 0x09, 0x8a, 0x11, 0x4b, 0x38, 0xa4, 0x83, 0x3c, 0xb8, 0x81, 0x3d, 0x94, 0x83, 0x3c, 0xcc, 0x43, 0x3a, 0xbc, 0x83, 0x3b, 0x4c, 0x09, 0x8c, 0x11, 0x54, 0x38, 0xa4, 0x83, 0x3c, 0xb8, 0x01, 0x3b, 0x84, 0x83, 0x3b, 0x9c, 0x43, 0x3d, 0x84, 0xc3, 0x39, 0x94, 0xc3, 0x2f, 0xd8, 0x43, 0x39, 0xc8, 0xc3, 0x3c, 0xa4, 0xc3, 0x3b, 0xb8, 0xc3, 0x94, 0x00, 0x19, 0x31, 0x85, 0x43, 0x3a, 0xc8, 0x83, 0x1b, 0x8c, 0xc3, 0x3b, 0xb4, 0x03, 0x3c, 0xa4, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x03, 0x3c, 0xd0, 0x43, 0x3a, 0xbc, 0x83, 0x3b, 0xcc, 0xc3, 0x14, 0x43, 0x61, 0x1c, 0x48, 0xa2, 0x46, 0x28, 0xe1, 0x90, 0x0e, 0xf2, 0xe0, 0x06, 0xf6, 0x50, 0x0e, 0xf2, 0x40, 0x0f, 0xe5, 0x80, 0x0f, 0x53, 0x82, 0x39, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x54, 0x44, 0x34, 0x11, 0x17, 0x7b, 0x00, 0x03, 0x11, 0x01, 0x61, 0x20, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x63, 0x04, 0x20, 0x08, 0x82, 0x20, 0x18, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xe2, 0xdf, 0x0c, 0xc0, 0x18, 0x01, 0x08, 0x82, 0x20, 0xfe, 0x0b, 0x23, 0x00, 0x14, 0x73, 0x10, 0x8e, 0x03, 0x35, 0x34, 0x33, 0x00, 0x00, 0x63, 0x08, 0x0a, 0x64, 0x01, 0x22, 0x1f, 0x52, 0xc8, 0x18, 0x42, 0x30, 0xd9, 0x10, 0xd0, 0xc7, 0x82, 0x04, 0x3e, 0x63, 0x08, 0xd0, 0x65, 0x81, 0x23, 0x9f, 0x31, 0x04, 0x23, 0x33, 0x21, 0xa0, 0x8f, 0x41, 0x41, 0x7c, 0xe6, 0x18, 0x1a, 0x63, 0x9b, 0x63, 0x08, 0x84, 0x6e, 0xb6, 0xc1, 0x09, 0x80, 0xd9, 0x86, 0x00, 0x0b, 0x66, 0x1b, 0x02, 0x4c, 0xc8, 0x20, 0x20, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x62, 0xa0, 0x83, 0x2d, 0x43, 0x32, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x50, 0x12, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x49, 0x0a, 0x32, 0x44, 0x24, 0x48, 0x0a, 0x90, 0x21, 0x23, 0xc4, 0x52, 0x80, 0x0c, 0x19, 0x21, 0x72, 0x24, 0x07, 0xc8, 0x88, 0x11, 0x62, 0xa8, 0xa0, 0xa8, 0x40, 0xc6, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x51, 0x18, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x60, 0x00, 0x09, 0xa8, 0x88, 0x71, 0x78, 0x07, 0x79, 0x90, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x60, 0x87, 0x7c, 0x68, 0x03, 0x79, 0x78, 0x87, 0x7a, 0x70, 0x07, 0x72, 0x28, 0x07, 0x72, 0x68, 0x03, 0x72, 0x48, 0x07, 0x7b, 0x48, 0x07, 0x72, 0x28, 0x87, 0x36, 0x98, 0x87, 0x78, 0x90, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xc8, 0x21, 0x1d, 0xe6, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0xa1, 0x0d, 0xe8, 0x21, 0x1c, 0xd2, 0x81, 0x1d, 0xda, 0x60, 0x1c, 0xc2, 0x81, 0x1d, 0xd8, 0x61, 0x1e, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x76, 0x28, 0x87, 0x79, 0x98, 0x87, 0x36, 0x80, 0x07, 0x79, 0x28, 0x87, 0x71, 0x48, 0x87, 0x79, 0x28, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x87, 0x70, 0x20, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xcc, 0x41, 0x1e, 0xc2, 0xa1, 0x1d, 0xca, 0xa1, 0x0d, 0xe0, 0xe1, 0x1d, 0xd2, 0xc1, 0x1d, 0xe8, 0xa1, 0x1c, 0xe4, 0xa1, 0x0d, 0xca, 0x81, 0x1d, 0xd2, 0xa1, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x60, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x87, 0x36, 0x70, 0x87, 0x77, 0x70, 0x87, 0x36, 0x60, 0x87, 0x72, 0x08, 0x07, 0x73, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x48, 0x07, 0x77, 0x30, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd4, 0xa1, 0x1e, 0xda, 0x01, 0x1e, 0xda, 0x80, 0x1e, 0xc2, 0x41, 0x1c, 0xd8, 0xa1, 0x1c, 0xe6, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x77, 0x08, 0x07, 0x77, 0x98, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0x60, 0x1e, 0xd2, 0xe1, 0x1c, 0xdc, 0xa1, 0x1c, 0xc8, 0xa1, 0x0d, 0xf4, 0xa1, 0x1c, 0xe4, 0xe1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0xa0, 0x07, 0x79, 0x08, 0x07, 0x78, 0x80, 0x87, 0x74, 0x70, 0x87, 0x73, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xe6, 0x81, 0x1e, 0xc2, 0x61, 0x1c, 0xd6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xde, 0x81, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0xa1, 0x0d, 0xc4, 0xa1, 0x1e, 0xcc, 0xc1, 0x1c, 0xca, 0x41, 0x1e, 0xda, 0x60, 0x1e, 0xd2, 0x41, 0x1f, 0xca, 0x01, 0xc0, 0x03, 0x80, 0xa8, 0x07, 0x77, 0x98, 0x87, 0x70, 0x30, 0x87, 0x72, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xa2, 0x1e, 0xe6, 0xa1, 0x1c, 0xda, 0x60, 0x1e, 0xde, 0xc1, 0x1c, 0xe8, 0xa1, 0x0d, 0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x60, 0x83, 0x21, 0x10, 0x40, 0x02, 0x54, 0x1b, 0x8c, 0xc1, 0x00, 0x16, 0xa0, 0xda, 0x80, 0x10, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x0c, 0x20, 0x01, 0xd5, 0x06, 0xa3, 0x08, 0x80, 0x05, 0xa8, 0x36, 0x18, 0x86, 0x00, 0x2c, 0x40, 0xb5, 0xc1, 0x38, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x24, 0x80, 0x02, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x0c, 0x44, 0x61, 0x4c, 0x08, 0x0e, 0x00, 0x89, 0x20, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xb0, 0xc1, 0x0c, 0xc0, 0x30, 0x02, 0x01, 0x0c, 0x23, 0x08, 0xc0, 0x30, 0xc2, 0x00, 0xe4, 0xc0, 0x30, 0x13, 0x35, 0x0f, 0xf4, 0x20, 0x0f, 0xf5, 0x30, 0x0e, 0xf4, 0xe0, 0x06, 0xed, 0x50, 0x0e, 0xf4, 0x10, 0x0e, 0xec, 0xa0, 0x07, 0x7a, 0xd0, 0x0e, 0xe1, 0x40, 0x0f, 0xf2, 0x90, 0x0e, 0xf8, 0x80, 0x02, 0x62, 0x8e, 0x00, 0x0c, 0xee, 0x91, 0xa6, 0x88, 0x12, 0x26, 0xdf, 0x6d, 0x90, 0xc2, 0x89, 0x18, 0x09, 0x35, 0x45, 0x11, 0x04, 0x82, 0x20, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x20, 0xc2, 0x21, 0x1c, 0x25, 0x4d, 0x11, 0x25, 0x4c, 0xfe, 0x3f, 0x11, 0xd7, 0x44, 0x45, 0xc4, 0x6f, 0x0f, 0xff, 0x34, 0x46, 0x00, 0x0c, 0x22, 0x24, 0xc1, 0x45, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xff, 0x12, 0xc0, 0x3c, 0x0b, 0x11, 0xfd, 0xd3, 0x18, 0x01, 0x30, 0x88, 0xb0, 0x08, 0xe5, 0x08, 0x02, 0x41, 0x40, 0x14, 0x86, 0x9a, 0x39, 0x82, 0x60, 0x18, 0x41, 0x30, 0x0a, 0x12, 0x28, 0x8c, 0xf0, 0x40, 0x0f, 0x40, 0x51, 0x21, 0x82, 0x20, 0x08, 0x68, 0x2a, 0x02, 0x00, 0x50, 0x55, 0x06, 0x40, 0x10, 0xe8, 0x2a, 0x83, 0x20, 0x08, 0x94, 0x95, 0x01, 0x00, 0x00, 0xda, 0x8a, 0x20, 0x08, 0xd4, 0x0d, 0x04, 0xa4, 0x80, 0x31, 0x88, 0x10, 0x08, 0xc3, 0x08, 0x83, 0x31, 0x47, 0x00, 0x0a, 0x83, 0x08, 0x83, 0x30, 0x88, 0x20, 0x08, 0x53, 0x00, 0x23, 0x00, 0x83, 0x08, 0x86, 0x30, 0x88, 0x50, 0x08, 0x83, 0x08, 0x80, 0x30, 0x8c, 0x40, 0x18, 0x00, 0x00, 0x00, 0x00, 0x13, 0xa8, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x83, 0x74, 0x78, 0x87, 0x79, 0xc0, 0x03, 0x37, 0x80, 0x03, 0x37, 0x80, 0x83, 0x0d, 0xb7, 0x51, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x40, 0x07, 0x78, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x90, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x90, 0x07, 0x72, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xd0, 0x06, 0xee, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x43, 0x18, 0x07, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x8c, 0x04, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x10, 0x86, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x63, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x84, 0xb1, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc2, 0x60, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x61, 0x34, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x30, 0x1c, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x18, 0x0e, 0x08, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x8c, 0x07, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x10, 0xc6, 0x03, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x1a, 0x0b, 0x59, 0x80, 0x8c, 0x11, 0x80, 0x42, 0x28, 0x81, 0x02, 0x2b, 0x90, 0x82, 0x28, 0x82, 0x02, 0x17, 0x28, 0x86, 0x32, 0x28, 0xe0, 0x80, 0x02, 0x0f, 0x28, 0x40, 0x81, 0x82, 0x14, 0x28, 0x50, 0x81, 0x82, 0x15, 0x28, 0x5c, 0x81, 0x02, 0x16, 0x28, 0x64, 0x81, 0x82, 0x16, 0x28, 0x6c, 0x81, 0x52, 0xa0, 0xb1, 0x80, 0x05, 0x46, 0x00, 0x0a, 0x56, 0xa0, 0x70, 0x05, 0x0a, 0x5a, 0xa0, 0xb0, 0x05, 0x0a, 0xac, 0x80, 0x03, 0x0a, 0x3c, 0xa0, 0x00, 0x05, 0x0a, 0x52, 0xa0, 0x40, 0x05, 0x08, 0x1c, 0x4b, 0x68, 0x04, 0x02, 0xc6, 0x08, 0x40, 0x10, 0x04, 0x45, 0x30, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x10, 0x97, 0x29, 0xa2, 0x25, 0x10, 0xab, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x21, 0x86, 0x21, 0x7d, 0x00, 0x18, 0xb8, 0x01, 0x95, 0xbb, 0x31, 0xb4, 0x30, 0xb9, 0xaf, 0xb9, 0x34, 0xbd, 0xb2, 0x21, 0x86, 0xe1, 0x7c, 0x82, 0xd1, 0x70, 0x0d, 0x82, 0xe0, 0xe0, 0xd8, 0xca, 0x40, 0x98, 0x98, 0xac, 0x9a, 0x40, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x40, 0x72, 0x60, 0x64, 0x5c, 0x72, 0x40, 0x50, 0xda, 0xca, 0xe8, 0xc2, 0xd8, 0xcc, 0xca, 0x5a, 0x72, 0x60, 0x64, 0x5c, 0x72, 0x5c, 0x6c, 0x62, 0x52, 0x86, 0x08, 0x1f, 0x31, 0xc4, 0x30, 0x1c, 0x83, 0x32, 0x18, 0x16, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x43, 0x90, 0xef, 0x30, 0x1c, 0x83, 0x31, 0x18, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0x2f, 0x21, 0x17, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0x62, 0x16, 0x36, 0x47, 0xf7, 0xd5, 0x16, 0x46, 0x87, 0xf6, 0x55, 0xe6, 0x16, 0x26, 0xc6, 0x56, 0x36, 0x44, 0xf8, 0x16, 0x92, 0x41, 0x58, 0x9a, 0x9c, 0xcb, 0xd8, 0x5b, 0x1b, 0x5c, 0x1a, 0x5b, 0x99, 0x8b, 0x99, 0x5c, 0x58, 0x5b, 0x99, 0x58, 0x9d, 0x99, 0x59, 0x99, 0xdc, 0x97, 0x59, 0x19, 0xdd, 0x18, 0xda, 0x57, 0x99, 0x5b, 0x98, 0x18, 0x5b, 0xd9, 0x10, 0xe1, 0x6b, 0x18, 0x06, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0xef, 0x21, 0x19, 0x84, 0xa5, 0xc9, 0xb9, 0x8c, 0xbd, 0xb5, 0xc1, 0xa5, 0xb1, 0x95, 0xb9, 0xb8, 0x85, 0xd1, 0xa5, 0xd9, 0x95, 0x7d, 0xb1, 0xbd, 0xb9, 0x9d, 0x7d, 0xb1, 0xbd, 0xb9, 0x9d, 0x7d, 0x91, 0xa5, 0xcd, 0x85, 0x89, 0xb1, 0x95, 0x0d, 0x11, 0xbe, 0x88, 0x67, 0x10, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0xe2, 0x16, 0x46, 0x97, 0x66, 0x57, 0xf6, 0x75, 0x97, 0x46, 0x56, 0xf6, 0x65, 0x57, 0x36, 0x46, 0xf7, 0x26, 0x37, 0xf7, 0x45, 0x96, 0x36, 0x17, 0x26, 0xc6, 0x56, 0x36, 0x44, 0xf8, 0x26, 0x46, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x8c, 0xc2, 0xd2, 0xe4, 0x5c, 0xc2, 0xe4, 0xce, 0xbe, 0xe8, 0xf2, 0xe0, 0xca, 0xbe, 0xdc, 0xc2, 0xda, 0xca, 0x68, 0x98, 0xb1, 0xbd, 0x85, 0xd1, 0xd1, 0x0c, 0x41, 0xbe, 0xca, 0x60, 0x3e, 0xeb, 0xbb, 0x86, 0x08, 0x1f, 0x46, 0x26, 0x2c, 0x4d, 0xce, 0x05, 0xee, 0x6d, 0x2e, 0x8d, 0x2e, 0xed, 0xcd, 0x8d, 0x4a, 0x58, 0x9a, 0x9c, 0xcb, 0x58, 0x99, 0x1b, 0x5d, 0x99, 0x1c, 0xa5, 0xb0, 0x34, 0x39, 0x17, 0xb7, 0xb7, 0x2f, 0xb8, 0x32, 0xb9, 0x39, 0xb8, 0xb2, 0x31, 0xba, 0x34, 0xbb, 0x32, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1c, 0xe0, 0xde, 0xe6, 0x86, 0x40, 0x06, 0xf3, 0x69, 0xdf, 0xf6, 0x71, 0x9f, 0xf5, 0x5d, 0x5f, 0xf7, 0x79, 0x94, 0xc2, 0xd2, 0xe4, 0x5c, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xbe, 0xd2, 0xdc, 0xe0, 0xea, 0xe8, 0x58, 0x9d, 0x95, 0xb9, 0x95, 0xc9, 0x85, 0xd1, 0x95, 0x91, 0xa1, 0xd0, 0x98, 0xc1, 0xbd, 0xcd, 0x11, 0xd9, 0xc9, 0x7c, 0x99, 0xa5, 0xf0, 0x09, 0x4b, 0x93, 0x73, 0x81, 0x2b, 0x93, 0x9b, 0x83, 0x2b, 0x1b, 0xa3, 0x4b, 0xb3, 0x2b, 0xa3, 0x61, 0xc6, 0xf6, 0x16, 0x46, 0x27, 0x43, 0xc2, 0x0c, 0xee, 0x6d, 0x6e, 0x88, 0x64, 0x38, 0x1f, 0x18, 0x7c, 0x61, 0xf0, 0x6d, 0x9f, 0x18, 0x7c, 0xd6, 0x37, 0x06, 0x5f, 0xf7, 0x91, 0x01, 0xb1, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xba, 0x32, 0x32, 0x94, 0x1b, 0x33, 0xba, 0xb1, 0xb7, 0x37, 0x39, 0x32, 0x22, 0x3b, 0x99, 0x2f, 0xb3, 0x14, 0x1e, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x43, 0x24, 0x43, 0xfa, 0xc0, 0xe0, 0x33, 0x83, 0x6f, 0xfb, 0xc4, 0xe0, 0xb3, 0xbe, 0x31, 0xf8, 0xba, 0xef, 0x0c, 0xa8, 0x84, 0xa5, 0xc9, 0xb9, 0x88, 0xd5, 0x99, 0x99, 0x95, 0xc9, 0xf1, 0x09, 0x4b, 0x93, 0x73, 0x11, 0xab, 0x33, 0x33, 0x2b, 0x93, 0xfb, 0x9a, 0x4b, 0xd3, 0x2b, 0xa3, 0x14, 0x96, 0x26, 0xe7, 0xc2, 0xf6, 0x36, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0xf6, 0x95, 0xe6, 0x46, 0x56, 0x86, 0x47, 0x24, 0x2c, 0x4d, 0xce, 0x45, 0xae, 0x2c, 0x8c, 0x8c, 0x54, 0x58, 0x9a, 0x9c, 0xcb, 0x1c, 0x9d, 0x5c, 0xdd, 0x18, 0xdd, 0x17, 0x5d, 0x1e, 0x5c, 0xd9, 0x57, 0x9a, 0x9b, 0xd9, 0x1b, 0x11, 0x33, 0xb6, 0xb7, 0x30, 0xba, 0x19, 0xbc, 0x19, 0x2a, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x44, 0xe0, 0xc2, 0xd2, 0xdc, 0xe8, 0x9a, 0xc2, 0xe8, 0x88, 0xa4, 0xb9, 0xb9, 0x95, 0xc9, 0x0d, 0xbd, 0xb1, 0x11, 0x79, 0xab, 0xa3, 0x2b, 0x93, 0x1b, 0x7a, 0x63, 0xa3, 0x32, 0x37, 0x96, 0x36, 0x37, 0xf7, 0x26, 0x57, 0x84, 0x47, 0x47, 0x66, 0x6e, 0x2c, 0x6d, 0x6e, 0xee, 0x4d, 0x6e, 0x6a, 0x2c, 0x8c, 0xad, 0x8c, 0x46, 0x19, 0x1e, 0x5d, 0x99, 0x1b, 0x1d, 0x0b, 0x33, 0xb6, 0xb7, 0x30, 0x3a, 0x1a, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3c, 0xcc, 0xca, 0xc2, 0xe8, 0xd0, 0xca, 0xe4, 0xa8, 0xcc, 0xd1, 0xc9, 0xbd, 0xad, 0x95, 0x35, 0xd5, 0xb1, 0xd1, 0x31, 0x99, 0xa3, 0x93, 0x7b, 0x5b, 0x2b, 0xa3, 0x42, 0x93, 0xe3, 0x90, 0xe6, 0x46, 0xc7, 0x83, 0xae, 0x0c, 0x8f, 0x2a, 0x0f, 0xae, 0x8c, 0x04, 0x5d, 0x1e, 0x5c, 0xd9, 0x10, 0x91, 0x30, 0x18, 0xe3, 0x31, 0x98, 0xcf, 0x0d, 0xbe, 0x37, 0x30, 0x1e, 0xe3, 0x31, 0x98, 0xcf, 0x0d, 0x3e, 0x38, 0x30, 0x2c, 0x03, 0x32, 0x98, 0xef, 0xfa, 0xe2, 0xc0, 0xb8, 0x0c, 0xc8, 0x60, 0xbe, 0xeb, 0x93, 0x03, 0x03, 0x33, 0x22, 0x83, 0xf9, 0xc6, 0xe0, 0x9b, 0x03, 0x23, 0x33, 0x22, 0x83, 0xf9, 0xc6, 0xe0, 0xa3, 0x03, 0x43, 0x33, 0x22, 0x83, 0xf9, 0xc6, 0xe0, 0xab, 0x03, 0x63, 0x33, 0x1a, 0x83, 0xf9, 0xec, 0xe0, 0xbb, 0x03, 0x83, 0x33, 0x1a, 0x83, 0xf9, 0xec, 0xe0, 0xc3, 0x03, 0xa3, 0x33, 0x1a, 0x83, 0xf9, 0xec, 0xe0, 0xcb, 0x03, 0xc3, 0x33, 0x1a, 0x83, 0xf9, 0xec, 0xe0, 0xd3, 0x03, 0xe3, 0x33, 0x1a, 0x83, 0xf9, 0xf6, 0xe0, 0xe3, 0x03, 0x03, 0x0c, 0x8c, 0xc6, 0x60, 0xbe, 0x3d, 0xf8, 0xfa, 0x80, 0x51, 0x58, 0x9a, 0x9c, 0x4b, 0x98, 0xdc, 0xd9, 0x17, 0x5d, 0x1e, 0x5c, 0xd9, 0xd7, 0x5c, 0x9a, 0x5e, 0x19, 0xaf, 0xb0, 0x34, 0x39, 0x97, 0x30, 0xb9, 0xb3, 0x2f, 0xba, 0x3c, 0xb8, 0xb2, 0xaf, 0x30, 0xb6, 0xb4, 0x33, 0xb7, 0xaf, 0xb9, 0x34, 0xbd, 0x32, 0x22, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x44, 0xea, 0xdc, 0xd2, 0xcc, 0xde, 0xe4, 0xda, 0xe6, 0x86, 0x90, 0x81, 0x51, 0x7d, 0x69, 0xf0, 0xa9, 0x81, 0x31, 0x7d, 0x6b, 0x60, 0x30, 0x86, 0xf3, 0xb1, 0xc1, 0xd7, 0x06, 0x9f, 0x1f, 0x7c, 0x7f, 0x60, 0x4c, 0x1f, 0x28, 0x18, 0xd0, 0x67, 0x7d, 0xa1, 0xf0, 0x75, 0x9f, 0x28, 0x70, 0x09, 0x4b, 0x93, 0x73, 0xa1, 0x2b, 0xc3, 0xa3, 0xab, 0x93, 0x2b, 0xa3, 0x12, 0x96, 0x26, 0xe7, 0x32, 0x17, 0xd6, 0x06, 0xc7, 0x56, 0x46, 0x8c, 0xae, 0x0c, 0x8f, 0xae, 0x4e, 0xae, 0x4c, 0x86, 0x8c, 0xc7, 0x8c, 0xed, 0x2d, 0x8c, 0x8e, 0x05, 0x64, 0x2e, 0xac, 0x0d, 0x8e, 0xad, 0xcc, 0x87, 0x07, 0x5d, 0x19, 0x1e, 0x5d, 0x9d, 0x5c, 0xd9, 0x10, 0xca, 0x68, 0x3e, 0x52, 0xf8, 0xd6, 0xc0, 0x60, 0x0c, 0xe7, 0x2b, 0x85, 0xcf, 0xfa, 0x4c, 0xe1, 0xeb, 0xbe, 0x53, 0xe0, 0x12, 0x96, 0x26, 0xe7, 0x32, 0x17, 0xd6, 0x06, 0xc7, 0x56, 0x26, 0xc7, 0x63, 0x2e, 0xac, 0x0d, 0x8e, 0xad, 0x4c, 0x6e, 0x88, 0x64, 0x84, 0xc1, 0x97, 0x0a, 0xdf, 0x1a, 0x18, 0x8c, 0xe1, 0x7c, 0xd6, 0xa7, 0x0a, 0x5f, 0xf7, 0xa9, 0xc2, 0x10, 0xe6, 0xfb, 0xbe, 0x32, 0xf8, 0xd0, 0xe0, 0x1b, 0x85, 0x0f, 0x15, 0xbe, 0x55, 0x18, 0x62, 0x38, 0xc0, 0x97, 0x7d, 0xac, 0xc0, 0xe7, 0xad, 0xcd, 0x2d, 0x0d, 0xee, 0x8d, 0xae, 0xcc, 0x8d, 0x0e, 0x64, 0x0c, 0x2d, 0x4c, 0x8e, 0xcf, 0x54, 0x5a, 0x1b, 0x1c, 0x5b, 0x19, 0xc8, 0xd0, 0xca, 0x0a, 0x08, 0x95, 0x50, 0x50, 0xd0, 0x10, 0xe1, 0x7b, 0x85, 0x21, 0xc6, 0xe7, 0x0a, 0x1f, 0x2c, 0x8c, 0xc1, 0x18, 0x0c, 0x31, 0xbe, 0x58, 0xf8, 0x62, 0x61, 0x0c, 0xc6, 0x80, 0xcd, 0x97, 0x16, 0xd5, 0x14, 0x4e, 0x95, 0x5b, 0x9a, 0xd9, 0x9b, 0x5c, 0xdb, 0x1c, 0xbf, 0x2f, 0x2d, 0xaa, 0x29, 0xa7, 0x9a, 0xb6, 0x32, 0xba, 0x30, 0x36, 0x9b, 0xb6, 0x30, 0x3a, 0xb9, 0x34, 0xbc, 0x24, 0x33, 0xa6, 0xb4, 0x99, 0x22, 0xa6, 0xb4, 0x99, 0x22, 0xbb, 0xa2, 0xa2, 0x21, 0xc6, 0x47, 0x0b, 0x5f, 0x2c, 0x8c, 0xc1, 0x18, 0x0c, 0x31, 0x3e, 0x3b, 0xf8, 0x62, 0x61, 0x0c, 0xc6, 0x60, 0x88, 0xf1, 0xed, 0xc1, 0x17, 0x0b, 0x63, 0x30, 0x06, 0x43, 0xec, 0xe0, 0x9b, 0x85, 0xaf, 0x16, 0xc6, 0x60, 0x0c, 0xbe, 0x5a, 0x18, 0x03, 0x34, 0xf8, 0x62, 0x61, 0x0c, 0xd2, 0xe0, 0x8b, 0x85, 0x31, 0x50, 0x83, 0x2f, 0x16, 0xc6, 0x60, 0x0d, 0xbe, 0x58, 0x18, 0x03, 0x36, 0xf8, 0x62, 0x61, 0x0c, 0xda, 0xe0, 0xb3, 0x85, 0x31, 0x20, 0x83, 0xcf, 0x16, 0xc6, 0xa0, 0x0c, 0x3e, 0x5b, 0x18, 0x03, 0x31, 0xf8, 0x6c, 0x61, 0x0c, 0x96, 0xef, 0x16, 0xc6, 0xc0, 0x0c, 0xbe, 0x5b, 0x18, 0x83, 0x33, 0x18, 0x62, 0x7c, 0xb8, 0xf0, 0xdd, 0xc2, 0x18, 0x9c, 0xc1, 0x10, 0xe3, 0xc3, 0x85, 0xcf, 0x16, 0xc6, 0xa0, 0x0c, 0x86, 0x18, 0x1f, 0x2e, 0x7c, 0xb6, 0x30, 0x06, 0x64, 0x30, 0x44, 0x00, 0xde, 0x60, 0x88, 0xf1, 0xe1, 0xc2, 0x77, 0x0b, 0x63, 0x60, 0x06, 0x23, 0x22, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x77, 0x20, 0x87, 0x7a, 0x60, 0x87, 0x72, 0x70, 0x03, 0x73, 0x60, 0x87, 0x70, 0x38, 0x87, 0x79, 0x98, 0x22, 0x04, 0xc3, 0x08, 0x85, 0x1d, 0xd8, 0xc1, 0x1e, 0xda, 0xc1, 0x0d, 0xd2, 0x81, 0x1c, 0xca, 0xc1, 0x1d, 0xe8, 0x61, 0x4a, 0x50, 0x8c, 0x58, 0xc2, 0x21, 0x1d, 0xe4, 0xc1, 0x0d, 0xec, 0xa1, 0x1c, 0xe4, 0x61, 0x1e, 0xd2, 0xe1, 0x1d, 0xdc, 0x61, 0x4a, 0x60, 0x8c, 0xa0, 0xc2, 0x21, 0x1d, 0xe4, 0xc1, 0x0d, 0xd8, 0x21, 0x1c, 0xdc, 0xe1, 0x1c, 0xea, 0x21, 0x1c, 0xce, 0xa1, 0x1c, 0x7e, 0xc1, 0x1e, 0xca, 0x41, 0x1e, 0xe6, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0xa6, 0x04, 0xc8, 0x88, 0x29, 0x1c, 0xd2, 0x41, 0x1e, 0xdc, 0x60, 0x1c, 0xde, 0xa1, 0x1d, 0xe0, 0x21, 0x1d, 0xd8, 0xa1, 0x1c, 0x7e, 0xe1, 0x1d, 0xe0, 0x81, 0x1e, 0xd2, 0xe1, 0x1d, 0xdc, 0x61, 0x1e, 0xa6, 0x18, 0x0a, 0xe3, 0x40, 0x12, 0x35, 0x82, 0x09, 0x87, 0x74, 0x90, 0x07, 0x37, 0x30, 0x07, 0x79, 0x08, 0x87, 0x73, 0x68, 0x87, 0x72, 0x70, 0x07, 0x7a, 0x98, 0x12, 0xb4, 0x02, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa6, 0x70, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x30, 0x51, 0x11, 0x30, 0x11, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x05, 0x0d, 0x80, 0x44, 0xfe, 0xe0, 0x4c, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x01, 0x1b, 0x80, 0x44, 0xbe, 0x04, 0x30, 0xcf, 0x42, 0xfc, 0x13, 0x71, 0x4d, 0x54, 0x44, 0xfc, 0xf6, 0xe0, 0x57, 0x78, 0x71, 0xdb, 0x66, 0x30, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x05, 0x03, 0x5c, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x09, 0x13, 0x80, 0x44, 0x7e, 0x01, 0x48, 0xd3, 0x5f, 0x00, 0x81, 0xe4, 0x57, 0x76, 0x71, 0xdb, 0x36, 0x50, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x30, 0x51, 0x11, 0x30, 0x11, 0x7e, 0x71, 0xdb, 0x46, 0x10, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x14, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0xe0, 0x14, 0x11, 0x60, 0x30, 0x44, 0x33, 0xb1, 0x07, 0x30, 0x10, 0x91, 0x09, 0x34, 0x00, 0x12, 0xf9, 0x0c, 0x72, 0xf9, 0x15, 0x5e, 0xdc, 0xb6, 0x1d, 0x44, 0x00, 0x12, 0xf9, 0x05, 0x20, 0x4d, 0x7f, 0xc1, 0x20, 0x8d, 0x5f, 0xdc, 0xb6, 0x21, 0x44, 0x00, 0x12, 0xf9, 0x05, 0x20, 0x4d, 0x7f, 0xc1, 0x00, 0x97, 0x5f, 0xdc, 0x36, 0x00, 0x61, 0x20, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4c, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xb4, 0x8e, 0x45, 0x00, 0x81, 0x70, 0xcc, 0x41, 0x30, 0x8e, 0x14, 0x0a, 0x23, 0x00, 0x34, 0x16, 0x41, 0x09, 0x90, 0x38, 0xd6, 0x10, 0x04, 0xc1, 0x08, 0xc0, 0x58, 0xc3, 0x30, 0x0c, 0x64, 0x94, 0x45, 0x61, 0x94, 0xc3, 0x0c, 0x00, 0x3d, 0x35, 0x30, 0x02, 0x40, 0xd0, 0x58, 0x02, 0x10, 0x8c, 0x00, 0x90, 0x38, 0xd6, 0x00, 0x04, 0x02, 0x0d, 0x33, 0x00, 0x24, 0x8c, 0x00, 0x8c, 0x25, 0x80, 0x20, 0x08, 0xc2, 0x1f, 0x08, 0x82, 0x20, 0xfc, 0xcd, 0x00, 0x50, 0x30, 0x02, 0x30, 0x03, 0x40, 0xc0, 0x18, 0x01, 0x08, 0x82, 0x20, 0xfc, 0x8d, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x85, 0x4b, 0x41, 0x19, 0x64, 0x08, 0x8a, 0x65, 0x90, 0x21, 0x0c, 0x10, 0xcb, 0x84, 0x40, 0x3e, 0xe3, 0x15, 0x61, 0x10, 0x07, 0xa8, 0x80, 0x0a, 0xda, 0x05, 0xe1, 0x52, 0x50, 0x06, 0x19, 0x82, 0x25, 0x1a, 0x64, 0x38, 0x03, 0xa7, 0x33, 0x21, 0x90, 0x8f, 0x05, 0x07, 0x7c, 0xc6, 0x2b, 0xd0, 0x00, 0x0f, 0x5e, 0xe1, 0x15, 0xc4, 0xe0, 0x82, 0x70, 0x29, 0x28, 0x83, 0x0c, 0x81, 0x84, 0x59, 0x11, 0xc0, 0x67, 0x90, 0x21, 0xc8, 0xb8, 0x11, 0x03, 0x62, 0x08, 0x70, 0x21, 0x18, 0x6f, 0x78, 0x83, 0x3f, 0xa8, 0x05, 0x0a, 0x8a, 0x0d, 0x41, 0x7c, 0xc6, 0x1b, 0xe4, 0x40, 0x14, 0x48, 0x81, 0x02, 0x62, 0x43, 0x20, 0x1f, 0xfb, 0x82, 0xf8, 0x8c, 0x18, 0x10, 0x43, 0xf0, 0x0b, 0xc1, 0x18, 0x42, 0xe0, 0x0b, 0x63, 0x08, 0x42, 0x2f, 0x98, 0x10, 0xc8, 0x67, 0xb8, 0x21, 0xf8, 0x82, 0x59, 0x86, 0x25, 0x08, 0xc6, 0x1b, 0xf6, 0x60, 0x15, 0xde, 0x80, 0x82, 0x31, 0xcc, 0x61, 0x04, 0x07, 0x23, 0x38, 0xc3, 0x78, 0x43, 0x1f, 0xb4, 0x82, 0x38, 0x5c, 0x10, 0x2e, 0x05, 0x65, 0x90, 0x21, 0x38, 0x83, 0x36, 0xb0, 0x40, 0x0c, 0xe4, 0x33, 0x5e, 0x21, 0x0a, 0xb2, 0x70, 0x0e, 0xe9, 0xb0, 0x07, 0x17, 0x84, 0x4b, 0x41, 0x19, 0x64, 0x08, 0xd8, 0x40, 0x0e, 0x2c, 0x08, 0x03, 0xf9, 0x58, 0x60, 0xc0, 0x67, 0xbc, 0x02, 0x15, 0x70, 0xa1, 0x1d, 0xde, 0x41, 0x14, 0x2e, 0x08, 0x97, 0x82, 0x32, 0xc8, 0x10, 0xc8, 0x01, 0x1e, 0x58, 0x11, 0xc0, 0x67, 0x90, 0x21, 0xc8, 0x03, 0x3e, 0x18, 0x6f, 0x70, 0x05, 0x5f, 0x80, 0x07, 0x0a, 0x86, 0x05, 0x76, 0x20, 0x9f, 0xf1, 0x86, 0x58, 0x08, 0x07, 0x78, 0xa0, 0xa0, 0x8c, 0x37, 0xcc, 0xc2, 0x38, 0x98, 0x02, 0x05, 0x64, 0x8e, 0xc1, 0x0f, 0x02, 0x7e, 0x18, 0x64, 0x08, 0xfe, 0x80, 0x14, 0xac, 0x08, 0xe2, 0x33, 0x62, 0x40, 0x0c, 0x81, 0x48, 0x2c, 0x16, 0x08, 0xf1, 0x19, 0x43, 0x08, 0x42, 0x62, 0x0c, 0x41, 0x00, 0x89, 0x11, 0x83, 0x62, 0x08, 0x4e, 0x42, 0x08, 0x46, 0x0c, 0x8a, 0x21, 0x48, 0x89, 0x40, 0x14, 0x46, 0x0c, 0x8a, 0x21, 0x58, 0x89, 0x22, 0x15, 0x46, 0x0c, 0x8a, 0x21, 0x68, 0x89, 0x20, 0x18, 0x31, 0x20, 0x86, 0xe0, 0x25, 0x02, 0x8b, 0x9a, 0xf8, 0x58, 0x50, 0xc0, 0xc7, 0x82, 0x01, 0x3e, 0x16, 0x54, 0xf4, 0x19, 0x31, 0x20, 0x86, 0xa0, 0x26, 0x82, 0xf1, 0x06, 0x73, 0xb0, 0x87, 0x93, 0xa0, 0xa0, 0x8c, 0x37, 0xa0, 0x03, 0x3e, 0x98, 0x04, 0x05, 0x65, 0x8e, 0x21, 0x16, 0x8a, 0x98, 0x18, 0x64, 0x08, 0x64, 0xc1, 0x1c, 0x46, 0x0c, 0x8c, 0x21, 0xe8, 0x89, 0x62, 0x08, 0xe6, 0x18, 0x68, 0x81, 0x0e, 0x68, 0x62, 0x90, 0x21, 0xa8, 0x85, 0x74, 0xb0, 0x21, 0x90, 0xcf, 0x2c, 0xc1, 0x32, 0xde, 0x00, 0x0f, 0x20, 0x51, 0x13, 0x17, 0x84, 0x4b, 0x41, 0x19, 0x64, 0x08, 0x74, 0x01, 0x1c, 0x2c, 0xa8, 0x05, 0xf9, 0x8c, 0x57, 0xd4, 0x43, 0x49, 0xe8, 0x04, 0x4f, 0xb8, 0xc3, 0x05, 0xe1, 0x52, 0x50, 0x06, 0x19, 0x82, 0x5f, 0x28, 0x07, 0x0b, 0x68, 0x41, 0x3e, 0x16, 0x18, 0xf0, 0x19, 0xaf, 0xd8, 0x87, 0x95, 0x00, 0x0b, 0xb1, 0xa8, 0x87, 0x0b, 0xc2, 0xa5, 0xa0, 0x0c, 0x32, 0x04, 0xe5, 0xb0, 0x0e, 0x56, 0x04, 0xf0, 0x19, 0x64, 0x08, 0xd8, 0xe1, 0x1d, 0xc6, 0x1b, 0x42, 0x22, 0x26, 0xc0, 0x82, 0x82, 0x62, 0x43, 0x40, 0x9f, 0x11, 0x03, 0x45, 0x08, 0xec, 0x62, 0x24, 0x44, 0x22, 0xa8, 0x07, 0x79, 0xa0, 0x87, 0x74, 0x18, 0x6f, 0x28, 0x89, 0x9a, 0xd0, 0x07, 0x0a, 0xc8, 0x30, 0x87, 0x11, 0x18, 0x0e, 0x21, 0x15, 0x83, 0x0c, 0x83, 0x3b, 0xd0, 0xc3, 0x20, 0x03, 0xf1, 0x0e, 0xfe, 0x60, 0x42, 0x20, 0x9f, 0x41, 0x86, 0xc0, 0x1e, 0x4c, 0x62, 0x90, 0x21, 0x38, 0x50, 0x62, 0x96, 0xc0, 0x18, 0x64, 0x40, 0xe6, 0xe1, 0x24, 0x66, 0x09, 0x8c, 0x81, 0x8e, 0x80, 0x20, 0x84, 0x42, 0x1a, 0xe6, 0x18, 0xea, 0xa1, 0x16, 0xea, 0x62, 0x90, 0x21, 0xb0, 0x07, 0x95, 0xb0, 0x21, 0x90, 0xcf, 0x78, 0x43, 0x4c, 0x84, 0x85, 0x5c, 0x50, 0x50, 0x6c, 0x08, 0xe4, 0x33, 0x4b, 0xb0, 0x8c, 0x18, 0x28, 0x42, 0x60, 0x1a, 0x33, 0x21, 0x13, 0x35, 0x51, 0x12, 0x22, 0x41, 0x12, 0xf9, 0x30, 0xde, 0x50, 0x13, 0x65, 0xa1, 0x12, 0x14, 0x90, 0x61, 0x0e, 0x23, 0x50, 0x1c, 0x44, 0x4a, 0x06, 0x19, 0x06, 0x7f, 0x20, 0x89, 0x41, 0x06, 0xe2, 0x1f, 0x5c, 0xc2, 0x84, 0x40, 0x3e, 0x83, 0x0c, 0x81, 0x49, 0xd8, 0xc4, 0x20, 0x43, 0x70, 0xe0, 0xc4, 0x2c, 0x81, 0x32, 0xc8, 0x80, 0x8c, 0xc4, 0x4d, 0xcc, 0x12, 0x28, 0x03, 0x1d, 0x01, 0x81, 0x08, 0x89, 0x74, 0xcc, 0x31, 0x94, 0x44, 0x39, 0x94, 0xc6, 0x20, 0x43, 0x60, 0x12, 0x3a, 0x61, 0x43, 0x20, 0x9f, 0xf1, 0x86, 0xb0, 0x88, 0x0b, 0xd1, 0xa0, 0xa0, 0xd8, 0x10, 0xc8, 0x67, 0x96, 0x60, 0x19, 0x28, 0x09, 0xd4, 0x41, 0x10, 0x03, 0x43, 0x50, 0x70, 0x04, 0xc8, 0x20, 0x20, 0x06, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x2a, 0x90, 0x85, 0x2d, 0xc3, 0x15, 0xc8, 0xc2, 0x96, 0x21, 0x0c, 0x82, 0x5c, 0xd8, 0x32, 0xd4, 0x41, 0xa0, 0x0b, 0x5b, 0x06, 0x3c, 0x08, 0x64, 0x61, 0xcb, 0xa0, 0x07, 0xc1, 0x2e, 0x6c, 0x19, 0x54, 0x61, 0xe0, 0x85, 0x2d, 0x43, 0x2b, 0x04, 0xb2, 0xb0, 0x65, 0x78, 0x85, 0x40, 0x16, 0xb6, 0x0c, 0xe9, 0x10, 0xc8, 0xc2, 0x96, 0x41, 0x1d, 0x06, 0x5e, 0xd8, 0x32, 0xb4, 0x43, 0xd0, 0x0b, 0x5b, 0x06, 0x7e, 0x08, 0x64, 0x61, 0xcb, 0x10, 0x12, 0x41, 0x2f, 0x6c, 0x19, 0x60, 0x22, 0x90, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xcc, 0x12, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x49, 0x0a, 0x32, 0x44, 0x24, 0x48, 0x0a, 0x90, 0x21, 0x23, 0xc4, 0x52, 0x80, 0x0c, 0x19, 0x21, 0x72, 0x24, 0x07, 0xc8, 0x88, 0x11, 0x62, 0xa8, 0xa0, 0xa8, 0x40, 0xc6, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x51, 0x18, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x60, 0x00, 0x09, 0xa8, 0x88, 0x71, 0x78, 0x07, 0x79, 0x90, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x60, 0x87, 0x7c, 0x68, 0x03, 0x79, 0x78, 0x87, 0x7a, 0x70, 0x07, 0x72, 0x28, 0x07, 0x72, 0x68, 0x03, 0x72, 0x48, 0x07, 0x7b, 0x48, 0x07, 0x72, 0x28, 0x87, 0x36, 0x98, 0x87, 0x78, 0x90, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xc8, 0x21, 0x1d, 0xe6, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0xa1, 0x0d, 0xe8, 0x21, 0x1c, 0xd2, 0x81, 0x1d, 0xda, 0x60, 0x1c, 0xc2, 0x81, 0x1d, 0xd8, 0x61, 0x1e, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x76, 0x28, 0x87, 0x79, 0x98, 0x87, 0x36, 0x80, 0x07, 0x79, 0x28, 0x87, 0x71, 0x48, 0x87, 0x79, 0x28, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x87, 0x70, 0x20, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xcc, 0x41, 0x1e, 0xc2, 0xa1, 0x1d, 0xca, 0xa1, 0x0d, 0xe0, 0xe1, 0x1d, 0xd2, 0xc1, 0x1d, 0xe8, 0xa1, 0x1c, 0xe4, 0xa1, 0x0d, 0xca, 0x81, 0x1d, 0xd2, 0xa1, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x60, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x87, 0x36, 0x70, 0x87, 0x77, 0x70, 0x87, 0x36, 0x60, 0x87, 0x72, 0x08, 0x07, 0x73, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x48, 0x07, 0x77, 0x30, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd4, 0xa1, 0x1e, 0xda, 0x01, 0x1e, 0xda, 0x80, 0x1e, 0xc2, 0x41, 0x1c, 0xd8, 0xa1, 0x1c, 0xe6, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x77, 0x08, 0x07, 0x77, 0x98, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0x60, 0x1e, 0xd2, 0xe1, 0x1c, 0xdc, 0xa1, 0x1c, 0xc8, 0xa1, 0x0d, 0xf4, 0xa1, 0x1c, 0xe4, 0xe1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0xa0, 0x07, 0x79, 0x08, 0x07, 0x78, 0x80, 0x87, 0x74, 0x70, 0x87, 0x73, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xe6, 0x81, 0x1e, 0xc2, 0x61, 0x1c, 0xd6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xde, 0x81, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0xa1, 0x0d, 0xc4, 0xa1, 0x1e, 0xcc, 0xc1, 0x1c, 0xca, 0x41, 0x1e, 0xda, 0x60, 0x1e, 0xd2, 0x41, 0x1f, 0xca, 0x01, 0xc0, 0x03, 0x80, 0xa8, 0x07, 0x77, 0x98, 0x87, 0x70, 0x30, 0x87, 0x72, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xa2, 0x1e, 0xe6, 0xa1, 0x1c, 0xda, 0x60, 0x1e, 0xde, 0xc1, 0x1c, 0xe8, 0xa1, 0x0d, 0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x60, 0x83, 0x21, 0x10, 0x40, 0x02, 0x54, 0x1b, 0x8c, 0xc1, 0x00, 0x16, 0xa0, 0xda, 0x80, 0x10, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x0c, 0x20, 0x01, 0xd5, 0x06, 0xa3, 0x08, 0x80, 0x05, 0xa8, 0x36, 0x18, 0x86, 0x00, 0x2c, 0x40, 0xb5, 0xc1, 0x38, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x24, 0x80, 0x02, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x0c, 0x44, 0x61, 0x4c, 0x08, 0x0e, 0x00, 0x89, 0x20, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xb0, 0xc1, 0x0c, 0xc0, 0x30, 0x02, 0x01, 0x0c, 0x23, 0x08, 0xc0, 0x30, 0xc2, 0x00, 0xe4, 0xc0, 0x30, 0x13, 0x35, 0x0f, 0xf4, 0x20, 0x0f, 0xf5, 0x30, 0x0e, 0xf4, 0xe0, 0x06, 0xed, 0x50, 0x0e, 0xf4, 0x10, 0x0e, 0xec, 0xa0, 0x07, 0x7a, 0xd0, 0x0e, 0xe1, 0x40, 0x0f, 0xf2, 0x90, 0x0e, 0xf8, 0x80, 0x02, 0x62, 0x8e, 0x00, 0x0c, 0xee, 0x91, 0xa6, 0x88, 0x12, 0x26, 0xdf, 0x6d, 0x90, 0xc2, 0x89, 0x18, 0x09, 0x35, 0x45, 0x11, 0x04, 0x82, 0x20, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x20, 0xc2, 0x21, 0x1c, 0x25, 0x4d, 0x11, 0x25, 0x4c, 0xfe, 0x3f, 0x11, 0xd7, 0x44, 0x45, 0xc4, 0x6f, 0x0f, 0xff, 0x34, 0x46, 0x00, 0x0c, 0x22, 0x24, 0xc1, 0x45, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xff, 0x12, 0xc0, 0x3c, 0x0b, 0x11, 0xfd, 0xd3, 0x18, 0x01, 0x30, 0x88, 0xb0, 0x08, 0xe5, 0x08, 0x02, 0x41, 0x40, 0x14, 0x86, 0x9a, 0x39, 0x82, 0x60, 0x18, 0x41, 0x30, 0x0a, 0x12, 0x28, 0x8c, 0xf0, 0x40, 0x0f, 0x40, 0x51, 0x21, 0x82, 0x20, 0x08, 0x68, 0x2a, 0x02, 0x00, 0x50, 0x55, 0x06, 0x40, 0x10, 0xe8, 0x2a, 0x83, 0x20, 0x08, 0x94, 0x95, 0x01, 0x00, 0x00, 0xda, 0x8a, 0x20, 0x08, 0xd4, 0x0d, 0x04, 0xa4, 0x80, 0x31, 0x88, 0x10, 0x08, 0xc3, 0x08, 0x83, 0x31, 0x47, 0x00, 0x0a, 0x83, 0x08, 0x83, 0x30, 0x88, 0x20, 0x08, 0x53, 0x00, 0x23, 0x00, 0x83, 0x08, 0x86, 0x30, 0x8c, 0x40, 0x18, 0x83, 0x08, 0x80, 0x30, 0x88, 0x50, 0x08, 0x00, 0x00, 0x00, 0x00, 0x13, 0xa8, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x83, 0x74, 0x78, 0x87, 0x79, 0xc0, 0x03, 0x37, 0x80, 0x03, 0x37, 0x80, 0x83, 0x0d, 0xb7, 0x51, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x40, 0x07, 0x78, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x90, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x90, 0x07, 0x72, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xd0, 0x06, 0xee, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x43, 0x18, 0x07, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x8c, 0x04, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x10, 0x86, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x63, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x84, 0xb1, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc2, 0x60, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x61, 0x34, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x30, 0x1c, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x18, 0x0e, 0x08, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x8c, 0x07, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x10, 0xc6, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0xe3, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x05, 0x02, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x1a, 0x0b, 0x54, 0x80, 0x8c, 0x11, 0x80, 0x42, 0x28, 0x81, 0x02, 0x2b, 0x90, 0x82, 0x28, 0x82, 0x02, 0x17, 0x28, 0x86, 0x32, 0x28, 0xe0, 0x80, 0x02, 0x0f, 0x28, 0x40, 0x81, 0x82, 0x14, 0x28, 0x50, 0x81, 0x82, 0x15, 0x28, 0x5c, 0x81, 0x02, 0x16, 0x28, 0x64, 0x81, 0x82, 0x16, 0x28, 0x6c, 0x81, 0x52, 0xa0, 0xb1, 0x20, 0x05, 0x46, 0x00, 0x0a, 0x56, 0xa0, 0x70, 0x05, 0x0a, 0x58, 0xa0, 0x90, 0x05, 0x0a, 0x5a, 0xa0, 0xb0, 0x05, 0x0a, 0xac, 0x80, 0x03, 0x0a, 0x3c, 0xa0, 0x00, 0x05, 0x08, 0x1c, 0x4b, 0x68, 0x04, 0x02, 0xc6, 0x08, 0x40, 0x10, 0x04, 0x45, 0x30, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x10, 0x97, 0x29, 0xa2, 0x25, 0x10, 0xab, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x21, 0x86, 0x31, 0x7d, 0x00, 0x18, 0xbc, 0x01, 0x95, 0xbb, 0x31, 0xb4, 0x30, 0xb9, 0xaf, 0xb9, 0x34, 0xbd, 0xb2, 0x21, 0x86, 0xf1, 0x7c, 0x82, 0xe1, 0x70, 0x0d, 0x82, 0xe0, 0xe0, 0xd8, 0xca, 0x40, 0x98, 0x98, 0xac, 0x9a, 0x40, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x40, 0x72, 0x60, 0x64, 0x5c, 0x72, 0x40, 0x50, 0xda, 0xca, 0xe8, 0xc2, 0xd8, 0xcc, 0xca, 0x5a, 0x72, 0x60, 0x64, 0x5c, 0x72, 0x5c, 0x6c, 0x62, 0x52, 0x86, 0x08, 0x1f, 0x31, 0xc4, 0x30, 0x1e, 0xa3, 0x32, 0x1a, 0x16, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x43, 0x90, 0xef, 0x30, 0x1e, 0xa3, 0x31, 0x1a, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0x2f, 0x21, 0x17, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0x62, 0x16, 0x36, 0x47, 0xf7, 0xd5, 0x16, 0x46, 0x87, 0xf6, 0x55, 0xe6, 0x16, 0x26, 0xc6, 0x56, 0x36, 0x44, 0xf8, 0x16, 0x92, 0x41, 0x58, 0x9a, 0x9c, 0xcb, 0xd8, 0x5b, 0x1b, 0x5c, 0x1a, 0x5b, 0x99, 0x8b, 0x99, 0x5c, 0x58, 0x5b, 0x99, 0x58, 0x9d, 0x99, 0x59, 0x99, 0xdc, 0x97, 0x59, 0x19, 0xdd, 0x18, 0xda, 0x57, 0x99, 0x5b, 0x98, 0x18, 0x5b, 0xd9, 0x10, 0xe1, 0x6b, 0x18, 0x06, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0xef, 0x21, 0x19, 0x84, 0xa5, 0xc9, 0xb9, 0x8c, 0xbd, 0xb5, 0xc1, 0xa5, 0xb1, 0x95, 0xb9, 0xb8, 0x85, 0xd1, 0xa5, 0xd9, 0x95, 0x7d, 0xb1, 0xbd, 0xb9, 0x9d, 0x7d, 0xb1, 0xbd, 0xb9, 0x9d, 0x7d, 0x91, 0xa5, 0xcd, 0x85, 0x89, 0xb1, 0x95, 0x0d, 0x11, 0xbe, 0x88, 0x67, 0x10, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0xe2, 0x16, 0x46, 0x97, 0x66, 0x57, 0xf6, 0x75, 0x97, 0x46, 0x56, 0xf6, 0x65, 0x57, 0x36, 0x46, 0xf7, 0x26, 0x37, 0xf7, 0x45, 0x96, 0x36, 0x17, 0x26, 0xc6, 0x56, 0x36, 0x44, 0xf8, 0x26, 0x46, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x8c, 0xc2, 0xd2, 0xe4, 0x5c, 0xc2, 0xe4, 0xce, 0xbe, 0xe8, 0xf2, 0xe0, 0xca, 0xbe, 0xdc, 0xc2, 0xda, 0xca, 0x68, 0x98, 0xb1, 0xbd, 0x85, 0xd1, 0xd1, 0x0c, 0x41, 0xbe, 0xca, 0x68, 0x3e, 0xeb, 0xbb, 0x86, 0x08, 0x1f, 0x46, 0x26, 0x2c, 0x4d, 0xce, 0x05, 0xee, 0x6d, 0x2e, 0x8d, 0x2e, 0xed, 0xcd, 0x8d, 0x4a, 0x58, 0x9a, 0x9c, 0xcb, 0x58, 0x99, 0x1b, 0x5d, 0x99, 0x1c, 0xa5, 0xb0, 0x34, 0x39, 0x17, 0xb7, 0xb7, 0x2f, 0xb8, 0x32, 0xb9, 0x39, 0xb8, 0xb2, 0x31, 0xba, 0x34, 0xbb, 0x32, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1c, 0xe0, 0xde, 0xe6, 0x86, 0x40, 0x46, 0xf3, 0x69, 0xdf, 0xf6, 0x71, 0x9f, 0xf5, 0x5d, 0x5f, 0xf7, 0x79, 0x94, 0xc2, 0xd2, 0xe4, 0x5c, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xbe, 0xd2, 0xdc, 0xe0, 0xea, 0xe8, 0x58, 0x9d, 0x95, 0xb9, 0x95, 0xc9, 0x85, 0xd1, 0x95, 0x91, 0xa1, 0xd0, 0x98, 0xc1, 0xbd, 0xcd, 0x11, 0xd9, 0xc9, 0x7c, 0x99, 0xa5, 0xf0, 0x09, 0x4b, 0x93, 0x73, 0x81, 0x2b, 0x93, 0x9b, 0x83, 0x2b, 0x1b, 0xa3, 0x4b, 0xb3, 0x2b, 0xa3, 0x61, 0xc6, 0xf6, 0x16, 0x46, 0x27, 0x43, 0xc2, 0x0c, 0xee, 0x6d, 0x6e, 0x88, 0x64, 0x3c, 0x1f, 0x18, 0x7c, 0x61, 0xf0, 0x6d, 0x9f, 0x18, 0x7c, 0xd6, 0x37, 0x06, 0x5f, 0xf7, 0x91, 0x01, 0xb1, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xba, 0x32, 0x32, 0x94, 0x1b, 0x33, 0xba, 0xb1, 0xb7, 0x37, 0x39, 0x32, 0x22, 0x3b, 0x99, 0x2f, 0xb3, 0x14, 0x1e, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x43, 0x24, 0x63, 0xfa, 0xc0, 0xe0, 0x33, 0x83, 0x6f, 0xfb, 0xc4, 0xe0, 0xb3, 0xbe, 0x31, 0xf8, 0xba, 0xef, 0x0c, 0xa8, 0x84, 0xa5, 0xc9, 0xb9, 0x88, 0xd5, 0x99, 0x99, 0x95, 0xc9, 0xf1, 0x09, 0x4b, 0x93, 0x73, 0x11, 0xab, 0x33, 0x33, 0x2b, 0x93, 0xfb, 0x9a, 0x4b, 0xd3, 0x2b, 0xa3, 0x14, 0x96, 0x26, 0xe7, 0xc2, 0xf6, 0x36, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0xf6, 0x95, 0xe6, 0x46, 0x56, 0x86, 0x47, 0x24, 0x2c, 0x4d, 0xce, 0x45, 0xae, 0x2c, 0x8c, 0x8c, 0x54, 0x58, 0x9a, 0x9c, 0xcb, 0x1c, 0x9d, 0x5c, 0xdd, 0x18, 0xdd, 0x17, 0x5d, 0x1e, 0x5c, 0xd9, 0x57, 0x9a, 0x9b, 0xd9, 0x1b, 0x11, 0x33, 0xb6, 0xb7, 0x30, 0xba, 0x19, 0xbc, 0x19, 0x2a, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x44, 0xe0, 0xc2, 0xd2, 0xdc, 0xe8, 0x9a, 0xc2, 0xe8, 0x88, 0xa4, 0xb9, 0xb9, 0x95, 0xc9, 0x0d, 0xbd, 0xb1, 0x11, 0x79, 0xab, 0xa3, 0x2b, 0x93, 0x1b, 0x7a, 0x63, 0xa3, 0x32, 0x37, 0x96, 0x36, 0x37, 0xf7, 0x26, 0x57, 0x84, 0x47, 0x47, 0x66, 0x6e, 0x2c, 0x6d, 0x6e, 0xee, 0x4d, 0x6e, 0x6a, 0x2c, 0x8c, 0xad, 0x8c, 0x46, 0x19, 0x1e, 0x5d, 0x99, 0x1b, 0x1d, 0x0b, 0x33, 0xb6, 0xb7, 0x30, 0x3a, 0x1a, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3c, 0xcc, 0xca, 0xc2, 0xe8, 0xd0, 0xca, 0xe4, 0xa8, 0xcc, 0xd1, 0xc9, 0xbd, 0xad, 0x95, 0x35, 0xd5, 0xb1, 0xd1, 0x31, 0x99, 0xa3, 0x93, 0x7b, 0x5b, 0x2b, 0xa3, 0x42, 0x93, 0xe3, 0x90, 0xe6, 0x46, 0xc7, 0x83, 0xae, 0x0c, 0x8f, 0x2a, 0x0f, 0xae, 0x8c, 0x04, 0x5d, 0x1e, 0x5c, 0xd9, 0x10, 0x91, 0x30, 0x1a, 0x03, 0x32, 0x9a, 0xcf, 0x0d, 0xbe, 0x37, 0x30, 0x20, 0x03, 0x32, 0x9a, 0xcf, 0x0d, 0x3e, 0x38, 0x30, 0x2e, 0x23, 0x32, 0x9a, 0xef, 0xfa, 0xe2, 0xc0, 0xc0, 0x8c, 0xc8, 0x68, 0xbe, 0xeb, 0x93, 0x03, 0x23, 0x33, 0x24, 0xa3, 0xf9, 0xc6, 0xe0, 0x9b, 0x03, 0x43, 0x33, 0x24, 0xa3, 0xf9, 0xc6, 0xe0, 0xa3, 0x03, 0x63, 0x33, 0x24, 0xa3, 0xf9, 0xc6, 0xe0, 0xab, 0x03, 0x83, 0x33, 0x1c, 0xa3, 0xf9, 0xec, 0xe0, 0xbb, 0x03, 0xa3, 0x33, 0x1c, 0xa3, 0xf9, 0xec, 0xe0, 0xc3, 0x03, 0xc3, 0x33, 0x1c, 0xa3, 0xf9, 0xec, 0xe0, 0xcb, 0x03, 0xe3, 0x33, 0x1c, 0xa3, 0xf9, 0xec, 0xe0, 0xd3, 0x03, 0x03, 0x0c, 0x0c, 0xc7, 0x68, 0xbe, 0x3d, 0xf8, 0xf8, 0xc0, 0x08, 0x03, 0xc3, 0x31, 0x9a, 0x6f, 0x0f, 0xbe, 0x3e, 0x60, 0x14, 0x96, 0x26, 0xe7, 0x12, 0x26, 0x77, 0xf6, 0x45, 0x97, 0x07, 0x57, 0xf6, 0x35, 0x97, 0xa6, 0x57, 0xc6, 0x2b, 0x2c, 0x4d, 0xce, 0x25, 0x4c, 0xee, 0xec, 0x8b, 0x2e, 0x0f, 0xae, 0xec, 0x2b, 0x8c, 0x2d, 0xed, 0xcc, 0xed, 0x6b, 0x2e, 0x4d, 0xaf, 0x8c, 0x48, 0x95, 0x5b, 0x9a, 0xd9, 0x9b, 0x5c, 0xdb, 0x1c, 0x91, 0x3a, 0xb7, 0x34, 0xb3, 0x37, 0xb9, 0xb6, 0xb9, 0x21, 0x64, 0x60, 0x58, 0x5f, 0x1a, 0x7c, 0x6a, 0x60, 0x50, 0xdf, 0x1a, 0x18, 0x8d, 0xf1, 0x7c, 0x6c, 0xf0, 0xb5, 0xc1, 0xe7, 0x07, 0xdf, 0x1f, 0x18, 0xd4, 0x07, 0x0a, 0x46, 0xf4, 0x59, 0x5f, 0x28, 0x7c, 0xdd, 0x27, 0x0a, 0x5c, 0xc2, 0xd2, 0xe4, 0x5c, 0xe8, 0xca, 0xf0, 0xe8, 0xea, 0xe4, 0xca, 0xa8, 0x84, 0xa5, 0xc9, 0xb9, 0xcc, 0x85, 0xb5, 0xc1, 0xb1, 0x95, 0x11, 0xa3, 0x2b, 0xc3, 0xa3, 0xab, 0x93, 0x2b, 0x93, 0x21, 0xe3, 0x31, 0x63, 0x7b, 0x0b, 0xa3, 0x63, 0x01, 0x99, 0x0b, 0x6b, 0x83, 0x63, 0x2b, 0xf3, 0xe1, 0x41, 0x57, 0x86, 0x47, 0x57, 0x27, 0x57, 0x36, 0x84, 0x32, 0x9c, 0x8f, 0x14, 0xbe, 0x35, 0x30, 0x1a, 0xe3, 0xf9, 0x4a, 0xe1, 0xb3, 0x3e, 0x53, 0xf8, 0xba, 0xef, 0x14, 0xb8, 0x84, 0xa5, 0xc9, 0xb9, 0xcc, 0x85, 0xb5, 0xc1, 0xb1, 0x95, 0xc9, 0xf1, 0x98, 0x0b, 0x6b, 0x83, 0x63, 0x2b, 0x93, 0x1b, 0x22, 0x19, 0x62, 0xf0, 0xa5, 0xc2, 0xb7, 0x06, 0x46, 0x63, 0x3c, 0x9f, 0xf5, 0xa9, 0xc2, 0xd7, 0x7d, 0xaa, 0x30, 0x84, 0xf9, 0xbe, 0xaf, 0x0c, 0x3e, 0x34, 0xf8, 0x46, 0xe1, 0x43, 0x85, 0x6f, 0x15, 0x86, 0x18, 0x0e, 0xf0, 0x65, 0x1f, 0x2b, 0xf0, 0x79, 0x6b, 0x73, 0x4b, 0x83, 0x7b, 0xa3, 0x2b, 0x73, 0xa3, 0x03, 0x19, 0x43, 0x0b, 0x93, 0xe3, 0x33, 0x95, 0xd6, 0x06, 0xc7, 0x56, 0x06, 0x32, 0xb4, 0xb2, 0x02, 0x42, 0x25, 0x14, 0x14, 0x34, 0x44, 0xf8, 0x5e, 0x61, 0x88, 0xf1, 0xb9, 0xc2, 0x07, 0x0b, 0x63, 0x40, 0x06, 0x43, 0x8c, 0x2f, 0x16, 0xbe, 0x58, 0x18, 0x03, 0x32, 0x60, 0xf3, 0xa5, 0x45, 0x35, 0x85, 0x53, 0xe5, 0x96, 0x66, 0xf6, 0x26, 0xd7, 0x36, 0xc7, 0xef, 0x4b, 0x8b, 0x6a, 0xca, 0xa9, 0xa6, 0xad, 0x8c, 0x2e, 0x8c, 0xcd, 0xa6, 0x2d, 0x8c, 0x4e, 0x2e, 0x0d, 0x2f, 0xc9, 0x8c, 0x29, 0x6d, 0xa6, 0x88, 0x29, 0x6d, 0xa6, 0xc8, 0xae, 0xa8, 0x68, 0x88, 0xf1, 0xd1, 0xc2, 0x17, 0x0b, 0x63, 0x40, 0x06, 0x43, 0x8c, 0xcf, 0x0e, 0xbe, 0x58, 0x18, 0x03, 0x32, 0x18, 0x62, 0x7c, 0x7b, 0xf0, 0xc5, 0xc2, 0x18, 0x90, 0xc1, 0x10, 0x3b, 0xf8, 0x66, 0xe1, 0xab, 0x85, 0x31, 0x20, 0x83, 0xaf, 0x16, 0xc6, 0x60, 0x0d, 0xbe, 0x58, 0x18, 0x03, 0x36, 0xf8, 0x62, 0x61, 0x0c, 0xda, 0xe0, 0x8b, 0x85, 0x31, 0x70, 0x83, 0x2f, 0x16, 0xc6, 0x60, 0x0c, 0xbe, 0x58, 0x18, 0x03, 0xe6, 0xb3, 0x85, 0x31, 0x28, 0x83, 0xcf, 0x16, 0xc6, 0xc0, 0x0c, 0x3e, 0x5b, 0x18, 0x83, 0x33, 0xf8, 0x6c, 0x61, 0x0c, 0xd0, 0xe0, 0xbb, 0x85, 0x31, 0x48, 0x83, 0xef, 0x16, 0xc6, 0x40, 0x0d, 0x86, 0x18, 0x1f, 0x2e, 0x7c, 0xb7, 0x30, 0x06, 0x6a, 0x30, 0xc4, 0xf8, 0x70, 0xe1, 0xbb, 0x85, 0x31, 0x48, 0x83, 0x21, 0xc6, 0x87, 0x0b, 0x9f, 0x2d, 0x8c, 0xc1, 0x19, 0x0c, 0x31, 0x3e, 0x5c, 0xf8, 0x6c, 0x61, 0x0c, 0xd0, 0x60, 0x88, 0xf1, 0xe1, 0xc2, 0x67, 0x0b, 0x63, 0x60, 0x06, 0x43, 0x8c, 0x0f, 0x17, 0x3e, 0x5b, 0x18, 0x83, 0x32, 0x18, 0x22, 0x00, 0x70, 0x30, 0x22, 0x62, 0x07, 0x76, 0xb0, 0x87, 0x76, 0x70, 0x83, 0x76, 0x78, 0x07, 0x72, 0xa8, 0x07, 0x76, 0x28, 0x07, 0x37, 0x30, 0x07, 0x76, 0x08, 0x87, 0x73, 0x98, 0x87, 0x29, 0x42, 0x30, 0x8c, 0x50, 0xd8, 0x81, 0x1d, 0xec, 0xa1, 0x1d, 0xdc, 0x20, 0x1d, 0xc8, 0xa1, 0x1c, 0xdc, 0x81, 0x1e, 0xa6, 0x04, 0xc5, 0x88, 0x25, 0x1c, 0xd2, 0x41, 0x1e, 0xdc, 0xc0, 0x1e, 0xca, 0x41, 0x1e, 0xe6, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0xa6, 0x04, 0xc6, 0x08, 0x2a, 0x1c, 0xd2, 0x41, 0x1e, 0xdc, 0x80, 0x1d, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1e, 0xc2, 0xe1, 0x1c, 0xca, 0xe1, 0x17, 0xec, 0xa1, 0x1c, 0xe4, 0x61, 0x1e, 0xd2, 0xe1, 0x1d, 0xdc, 0x61, 0x4a, 0x80, 0x8c, 0x98, 0xc2, 0x21, 0x1d, 0xe4, 0xc1, 0x0d, 0xc6, 0xe1, 0x1d, 0xda, 0x01, 0x1e, 0xd2, 0x81, 0x1d, 0xca, 0xe1, 0x17, 0xde, 0x01, 0x1e, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0xe6, 0x61, 0x8a, 0xa1, 0x30, 0x0e, 0x24, 0x51, 0x23, 0x98, 0x70, 0x48, 0x07, 0x79, 0x70, 0x03, 0x73, 0x90, 0x87, 0x70, 0x38, 0x87, 0x76, 0x28, 0x07, 0x77, 0xa0, 0x87, 0x29, 0x41, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x76, 0x10, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x05, 0x83, 0x34, 0x7e, 0x71, 0xdb, 0xb6, 0x70, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x30, 0x51, 0x11, 0x30, 0x11, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x05, 0x0d, 0x80, 0x44, 0xfe, 0xe0, 0x4c, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x01, 0x1b, 0x80, 0x44, 0xbe, 0x04, 0x30, 0xcf, 0x42, 0xfc, 0x13, 0x71, 0x4d, 0x54, 0x44, 0xfc, 0xf6, 0xe0, 0x57, 0x78, 0x71, 0xdb, 0x66, 0x30, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x05, 0x03, 0x5c, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x09, 0x13, 0x80, 0x44, 0x7e, 0x01, 0x48, 0xd3, 0x5f, 0x00, 0x81, 0xe4, 0x57, 0x76, 0x71, 0xdb, 0x36, 0x50, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x30, 0x51, 0x11, 0x30, 0x11, 0x7e, 0x71, 0xdb, 0x46, 0x10, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x14, 0x4d, 0x7e, 0x71, 0xdb, 0x26, 0xd0, 0x00, 0x48, 0xe4, 0x33, 0xc8, 0xe5, 0x57, 0x78, 0x71, 0xdb, 0x86, 0x10, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x05, 0x03, 0x5c, 0x7e, 0x71, 0xdb, 0x06, 0x00, 0x15, 0x11, 0x60, 0x30, 0x44, 0x33, 0xb1, 0x07, 0x30, 0x10, 0x91, 0xa6, 0x99, 0x42, 0x04, 0x20, 0x91, 0x5f, 0x00, 0xd2, 0xf4, 0x17, 0x40, 0x20, 0xf9, 0xc5, 0x6d, 0x03, 0x61, 0x20, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4e, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x94, 0x8e, 0x45, 0x00, 0x81, 0x70, 0xcc, 0x41, 0x34, 0xcf, 0x44, 0x0a, 0x23, 0x00, 0x34, 0x16, 0x41, 0x09, 0x90, 0x38, 0xd6, 0x10, 0x04, 0xc1, 0x08, 0xc0, 0x58, 0xc3, 0x30, 0x0c, 0x63, 0x0d, 0x40, 0x20, 0x10, 0x34, 0x96, 0x00, 0x04, 0x23, 0x00, 0x64, 0x94, 0x45, 0x61, 0xcc, 0x00, 0x94, 0x44, 0x51, 0x94, 0x03, 0x3d, 0x35, 0x30, 0x02, 0x40, 0xc3, 0x0c, 0x00, 0x09, 0x23, 0x00, 0x63, 0x09, 0x20, 0x08, 0x82, 0xf0, 0x07, 0x82, 0x20, 0x08, 0x7f, 0x33, 0x00, 0x14, 0x8c, 0x00, 0xcc, 0x00, 0x10, 0x30, 0x46, 0x00, 0x82, 0x20, 0x08, 0x7f, 0x63, 0x04, 0x20, 0x08, 0x82, 0xf8, 0x2f, 0x8c, 0x11, 0x80, 0x20, 0x08, 0x82, 0x60, 0x30, 0x46, 0x00, 0x82, 0x20, 0x88, 0x7f, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x06, 0xe1, 0x52, 0x50, 0x06, 0x19, 0x02, 0x04, 0x1b, 0x64, 0x30, 0x83, 0x65, 0x33, 0x21, 0x90, 0xcf, 0x78, 0x85, 0x19, 0xd8, 0x41, 0x2b, 0xb4, 0xc2, 0x77, 0x41, 0xb8, 0x14, 0x94, 0x41, 0x86, 0xc0, 0xf1, 0x06, 0x19, 0xd8, 0x20, 0x12, 0x03, 0x13, 0x02, 0xf9, 0x58, 0x70, 0xc0, 0x67, 0xbc, 0xa2, 0x0d, 0xfa, 0x80, 0x16, 0x68, 0xe1, 0x0c, 0x2e, 0x08, 0x97, 0x82, 0x32, 0xc8, 0x10, 0x54, 0x65, 0x60, 0x45, 0x00, 0x9f, 0x41, 0x86, 0x80, 0x33, 0x83, 0x11, 0x03, 0x62, 0x08, 0x7c, 0x21, 0x18, 0x6f, 0xa0, 0x03, 0x52, 0xd0, 0x05, 0x0a, 0x8a, 0x0d, 0x41, 0x7c, 0xc6, 0x1b, 0xee, 0xe0, 0x14, 0x52, 0x81, 0x02, 0x62, 0x43, 0x20, 0x1f, 0x13, 0x83, 0x20, 0x3e, 0x23, 0x06, 0xc4, 0x10, 0x90, 0x43, 0x30, 0x86, 0x10, 0x8c, 0xc3, 0x18, 0x82, 0x20, 0x0e, 0x26, 0x04, 0xf2, 0x19, 0x6e, 0x08, 0xbe, 0x60, 0x96, 0xa1, 0x09, 0x82, 0xf1, 0x06, 0x50, 0x80, 0x85, 0x38, 0xa0, 0x60, 0x0c, 0x37, 0x04, 0xe3, 0x00, 0x06, 0xb3, 0x0c, 0x82, 0x11, 0x8c, 0x18, 0x28, 0x42, 0x60, 0x0f, 0xa2, 0x10, 0x0a, 0xa4, 0xf0, 0x06, 0x76, 0xe0, 0x06, 0x63, 0x30, 0xde, 0x40, 0x0a, 0xb4, 0x60, 0x07, 0x14, 0x90, 0x61, 0x0e, 0x23, 0x28, 0x9e, 0x61, 0x22, 0x06, 0x19, 0x86, 0x35, 0xd8, 0x83, 0x41, 0x06, 0x82, 0x0d, 0xfa, 0xc0, 0x84, 0x40, 0x3e, 0x83, 0x0c, 0xc1, 0x1c, 0x94, 0xc2, 0x20, 0x43, 0x70, 0x9c, 0xc2, 0x2c, 0x41, 0x31, 0xc8, 0x80, 0xc0, 0x81, 0x29, 0xcc, 0x12, 0x14, 0x03, 0x1d, 0x01, 0x31, 0x08, 0x84, 0x24, 0xcc, 0x31, 0xc8, 0xc1, 0x43, 0x0f, 0x83, 0x0c, 0xc1, 0x1c, 0xa4, 0x82, 0x0d, 0x81, 0x7c, 0xc6, 0x1b, 0x60, 0x01, 0x1c, 0xe2, 0x81, 0x82, 0x62, 0x43, 0x20, 0x9f, 0x59, 0x82, 0x66, 0x0c, 0x81, 0x16, 0xf4, 0xc1, 0x02, 0x3b, 0x90, 0x8f, 0x05, 0x78, 0x00, 0x9f, 0x11, 0x03, 0x62, 0x08, 0x40, 0x22, 0x30, 0x3c, 0x08, 0xe2, 0x33, 0xde, 0x80, 0x0b, 0xe8, 0x70, 0x0a, 0x14, 0x14, 0x1b, 0x02, 0xf9, 0x8c, 0x18, 0x14, 0x43, 0x80, 0x12, 0x7c, 0x10, 0x8c, 0x21, 0xf4, 0x42, 0x48, 0x8c, 0x18, 0x14, 0x43, 0xa0, 0x12, 0x7e, 0x10, 0x58, 0x30, 0xc8, 0x67, 0xbc, 0xe1, 0x17, 0xde, 0xa1, 0x15, 0x28, 0x18, 0xc3, 0x0d, 0x43, 0x40, 0xcc, 0x32, 0x34, 0x47, 0x30, 0xdc, 0x10, 0x06, 0x29, 0x01, 0x06, 0xe3, 0x0d, 0xe3, 0x30, 0x0f, 0x28, 0x71, 0x41, 0xb8, 0x14, 0x94, 0x41, 0x86, 0x60, 0x15, 0x76, 0xc1, 0x82, 0x51, 0x90, 0xcf, 0x78, 0x05, 0x3a, 0xe0, 0x43, 0x4b, 0xbc, 0x44, 0x38, 0x5c, 0x10, 0x2e, 0x05, 0x65, 0x90, 0x21, 0x80, 0x05, 0x70, 0xb0, 0x40, 0x14, 0xe4, 0x63, 0x81, 0x01, 0x9f, 0xf1, 0x0a, 0x77, 0xf0, 0x87, 0x99, 0xa8, 0x09, 0x74, 0xb8, 0x20, 0x5c, 0x0a, 0xca, 0x20, 0x43, 0x60, 0x0b, 0xe6, 0x60, 0x45, 0x00, 0x9f, 0x41, 0x86, 0xa0, 0x17, 0xce, 0x61, 0x96, 0x01, 0x49, 0xa4, 0xf1, 0x06, 0x7a, 0x20, 0x09, 0x9b, 0xa0, 0x60, 0x58, 0xa0, 0x0b, 0xf2, 0x19, 0x6f, 0xb8, 0x87, 0x93, 0xb0, 0x09, 0x0a, 0xca, 0x78, 0x43, 0x3e, 0xa4, 0x84, 0x39, 0x50, 0x40, 0xe6, 0x18, 0xc4, 0x21, 0x10, 0x8b, 0x41, 0x86, 0x60, 0x1c, 0xde, 0xc1, 0x8a, 0x20, 0x3e, 0x23, 0x06, 0xc4, 0x10, 0xa4, 0xc5, 0x62, 0x81, 0x10, 0x9f, 0x31, 0x84, 0xe0, 0x2c, 0xc6, 0x10, 0x04, 0xb3, 0x18, 0x31, 0x28, 0x86, 0xc0, 0x2d, 0x84, 0x60, 0xc4, 0xa0, 0x18, 0x02, 0xb8, 0x08, 0xc6, 0x61, 0xc4, 0xa0, 0x18, 0x02, 0xb9, 0x28, 0xda, 0x61, 0xc4, 0xa0, 0x18, 0x02, 0xba, 0x08, 0x82, 0x11, 0x03, 0x62, 0x08, 0xec, 0x22, 0xb0, 0xa8, 0x89, 0x8f, 0x05, 0x05, 0x7c, 0x2c, 0x18, 0xe0, 0x63, 0x41, 0x45, 0x9f, 0x11, 0x03, 0x62, 0x08, 0xf8, 0x22, 0x18, 0x6f, 0x60, 0x09, 0x9e, 0x68, 0x0b, 0x0a, 0xca, 0x78, 0x83, 0x4b, 0xf8, 0x04, 0x5b, 0x50, 0x50, 0xe6, 0x18, 0xea, 0xa1, 0xb8, 0x8b, 0x41, 0x86, 0xc0, 0x1e, 0x58, 0x62, 0xc4, 0xc0, 0x18, 0x02, 0xd2, 0x28, 0x86, 0x60, 0x8e, 0x01, 0x1f, 0x6a, 0x41, 0x2f, 0xe6, 0x18, 0xf2, 0xc1, 0x0e, 0xf6, 0xc2, 0x02, 0x41, 0x3e, 0x83, 0x0c, 0xc1, 0x3e, 0xc4, 0x84, 0x05, 0x85, 0x7c, 0x66, 0x09, 0x9a, 0xf1, 0x06, 0x9c, 0x40, 0x8b, 0xbb, 0xa0, 0xa0, 0xd8, 0x19, 0x04, 0xf4, 0x19, 0x31, 0x50, 0x84, 0xc0, 0x35, 0x74, 0x22, 0x27, 0x82, 0x93, 0x70, 0x09, 0x93, 0xd8, 0x87, 0xf1, 0x06, 0x9e, 0x60, 0x0b, 0x97, 0xa0, 0x80, 0x0c, 0x73, 0x18, 0x01, 0xf3, 0x28, 0xd3, 0x32, 0xc8, 0x30, 0x8c, 0xc4, 0x4c, 0x0c, 0x32, 0x10, 0x24, 0x51, 0x13, 0x26, 0x04, 0xf2, 0x19, 0x64, 0x08, 0x56, 0xa2, 0x27, 0x06, 0x19, 0x82, 0xe3, 0x27, 0x66, 0x09, 0x98, 0x41, 0x06, 0x04, 0x25, 0x7c, 0x62, 0x96, 0x80, 0x19, 0xe8, 0x08, 0x08, 0x45, 0x58, 0xa4, 0x64, 0x8e, 0x41, 0x25, 0xce, 0x81, 0x35, 0xe6, 0x18, 0x56, 0x02, 0x15, 0x5a, 0x63, 0xbc, 0xe1, 0x2c, 0xee, 0x02, 0x35, 0x28, 0x28, 0x36, 0x10, 0xf2, 0x19, 0x64, 0x08, 0x5e, 0xa2, 0x2c, 0x2c, 0x38, 0xe4, 0x63, 0x01, 0x21, 0x9f, 0x59, 0x82, 0x66, 0xa0, 0x25, 0xb0, 0x8b, 0xc2, 0x4c, 0x00, 0x36, 0x40, 0x04, 0xc6, 0x4c, 0x8c, 0x0c, 0x02, 0x62, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x2a, 0x90, 0x85, 0x2d, 0xc3, 0x15, 0xc8, 0xc2, 0x96, 0x21, 0x0c, 0x82, 0x5c, 0xd8, 0x32, 0x98, 0x41, 0xa0, 0x0b, 0x5b, 0x86, 0x3a, 0x08, 0x64, 0x61, 0xcb, 0xe0, 0x07, 0xc1, 0x2e, 0x6c, 0x19, 0x4a, 0x21, 0xe0, 0x85, 0x2d, 0x03, 0x2f, 0x04, 0xbd, 0xb0, 0x65, 0xf8, 0x85, 0x40, 0x16, 0xb6, 0x0c, 0xe1, 0x10, 0xf8, 0xc2, 0x96, 0x21, 0x1e, 0x86, 0x5f, 0xd8, 0x32, 0xd0, 0x43, 0x20, 0x0b, 0x5b, 0x06, 0x7b, 0x08, 0x64, 0x61, 0xcb, 0x10, 0x12, 0x81, 0x2c, 0x6c, 0x19, 0x44, 0x62, 0xf8, 0x85, 0x2d, 0x43, 0x49, 0x04, 0xba, 0xb0, 0x65, 0x98, 0x89, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; unsigned int mnvg_bitcode_ios_len = 12819; macos.h000066400000000000000000002326041461511344300330610ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/src/mnvg_bitcodeunsigned char mnvg_bitcode_macos[] = { 0x4d, 0x54, 0x4c, 0x42, 0x01, 0x80, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x0d, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0xf0, 0x94, 0x32, 0xdf, 0x09, 0x48, 0x9e, 0x51, 0x36, 0x7c, 0xdc, 0x21, 0xa9, 0x05, 0xcb, 0x14, 0x50, 0xcf, 0x40, 0x50, 0x07, 0x0f, 0x2e, 0xdb, 0x00, 0x37, 0x2f, 0x85, 0x96, 0xa4, 0x5d, 0xf4, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x76, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x0f, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x01, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0x43, 0xfd, 0x12, 0x72, 0x3a, 0xee, 0xfa, 0x1f, 0xa6, 0x51, 0x48, 0x1c, 0x62, 0x37, 0xbd, 0xf6, 0x12, 0x3c, 0x27, 0x87, 0xca, 0x1d, 0xfa, 0xf5, 0x5c, 0xd9, 0x96, 0x3a, 0xb0, 0xcc, 0x9e, 0xc4, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x78, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x11, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x41, 0x41, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x01, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0x26, 0xb5, 0x3a, 0xcd, 0xdf, 0xb3, 0x05, 0xf5, 0xcd, 0x5e, 0x4a, 0x20, 0xe9, 0x14, 0x61, 0x6c, 0x22, 0xcd, 0x7d, 0x4d, 0x52, 0x2f, 0x36, 0xfb, 0x98, 0x7a, 0x63, 0xf8, 0x18, 0x97, 0x71, 0x2b, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x45, 0x4e, 0x44, 0x54, 0x25, 0x00, 0x00, 0x00, 0x56, 0x41, 0x54, 0x54, 0x11, 0x00, 0x02, 0x00, 0x70, 0x6f, 0x73, 0x00, 0x00, 0x80, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x01, 0x80, 0x56, 0x41, 0x54, 0x59, 0x04, 0x00, 0x02, 0x00, 0x04, 0x04, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x98, 0x0a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xa3, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x10, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0x84, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x49, 0x0a, 0x32, 0x44, 0x24, 0x48, 0x0a, 0x90, 0x21, 0x23, 0xc4, 0x52, 0x80, 0x0c, 0x19, 0x21, 0x72, 0x24, 0x07, 0xc8, 0x08, 0x11, 0x62, 0xa8, 0xa0, 0xa8, 0x40, 0xc6, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x51, 0x18, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x1b, 0xc8, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0x80, 0x8a, 0x18, 0x87, 0x77, 0x90, 0x07, 0x79, 0x28, 0x87, 0x71, 0xa0, 0x07, 0x76, 0xc8, 0x87, 0x36, 0x90, 0x87, 0x77, 0xa8, 0x07, 0x77, 0x20, 0x87, 0x72, 0x20, 0x87, 0x36, 0x20, 0x87, 0x74, 0xb0, 0x87, 0x74, 0x20, 0x87, 0x72, 0x68, 0x83, 0x79, 0x88, 0x07, 0x79, 0xa0, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0x82, 0x1c, 0xd2, 0x61, 0x1e, 0xc2, 0x41, 0x1c, 0xd8, 0xa1, 0x1c, 0xda, 0x80, 0x1e, 0xc2, 0x21, 0x1d, 0xd8, 0xa1, 0x0d, 0xc6, 0x21, 0x1c, 0xd8, 0x81, 0x1d, 0xe6, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x60, 0x87, 0x72, 0x98, 0x87, 0x79, 0x68, 0x03, 0x78, 0x90, 0x87, 0x72, 0x18, 0x87, 0x74, 0x98, 0x87, 0x72, 0x68, 0x03, 0x73, 0x80, 0x87, 0x76, 0x08, 0x07, 0x72, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1c, 0xe4, 0x21, 0x1c, 0xda, 0xa1, 0x1c, 0xda, 0x00, 0x1e, 0xde, 0x21, 0x1d, 0xdc, 0x81, 0x1e, 0xca, 0x41, 0x1e, 0xda, 0xa0, 0x1c, 0xd8, 0x21, 0x1d, 0xda, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x06, 0x77, 0x78, 0x87, 0x36, 0x30, 0x07, 0x79, 0x08, 0x87, 0x76, 0x28, 0x87, 0x36, 0x80, 0x87, 0x77, 0x48, 0x07, 0x77, 0xa0, 0x87, 0x72, 0x90, 0x87, 0x36, 0x28, 0x07, 0x76, 0x48, 0x87, 0x76, 0x68, 0x03, 0x77, 0x78, 0x07, 0x77, 0x68, 0x03, 0x76, 0x28, 0x87, 0x70, 0x30, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x83, 0x74, 0x70, 0x07, 0x73, 0x98, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0x40, 0x1d, 0xea, 0xa1, 0x1d, 0xe0, 0xa1, 0x0d, 0xe8, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x1e, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x70, 0x87, 0x70, 0x70, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xe6, 0x21, 0x1d, 0xce, 0xc1, 0x1d, 0xca, 0x81, 0x1c, 0xda, 0x40, 0x1f, 0xca, 0x41, 0x1e, 0xde, 0x61, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x7a, 0x90, 0x87, 0x70, 0x80, 0x07, 0x78, 0x48, 0x07, 0x77, 0x38, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0x62, 0x1e, 0xe8, 0x21, 0x1c, 0xc6, 0x61, 0x1d, 0xda, 0x00, 0x1e, 0xe4, 0xe1, 0x1d, 0xe8, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xda, 0x40, 0x1c, 0xea, 0xc1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x0d, 0xe6, 0x21, 0x1d, 0xf4, 0xa1, 0x1c, 0x00, 0x3c, 0x00, 0x88, 0x7a, 0x70, 0x87, 0x79, 0x08, 0x07, 0x73, 0x28, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xea, 0x61, 0x1e, 0xca, 0xa1, 0x0d, 0xe6, 0xe1, 0x1d, 0xcc, 0x81, 0x1e, 0xda, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, 0xc2, 0x81, 0x1e, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x36, 0x18, 0xc2, 0x00, 0x2c, 0x40, 0x05, 0x00, 0x49, 0x18, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x84, 0x40, 0x00, 0x89, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x22, 0x08, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x22, 0xa4, 0x84, 0x04, 0x13, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x88, 0x8c, 0x0b, 0x84, 0x84, 0x4c, 0x10, 0x2c, 0x33, 0x00, 0xc3, 0x08, 0x04, 0x30, 0x8c, 0x20, 0x00, 0x57, 0x49, 0x53, 0x44, 0x09, 0x93, 0xbf, 0x02, 0xd2, 0x44, 0x44, 0x48, 0x46, 0x44, 0x1d, 0x30, 0x01, 0x68, 0x08, 0x91, 0x41, 0x04, 0x41, 0x28, 0xc4, 0x88, 0x10, 0xd5, 0x40, 0xc0, 0x1c, 0x01, 0x18, 0xa4, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xb2, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x83, 0x76, 0x08, 0x87, 0x71, 0x78, 0x87, 0x79, 0xc0, 0x87, 0x38, 0x80, 0x03, 0x37, 0x88, 0x83, 0x38, 0x70, 0x03, 0x38, 0xd8, 0x70, 0x1b, 0xe5, 0xd0, 0x06, 0xf0, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x90, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x40, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x74, 0x80, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x79, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x79, 0x20, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0x30, 0x84, 0x31, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x02, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x10, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0xc2, 0x42, 0x28, 0x81, 0x82, 0x18, 0x01, 0x28, 0x02, 0x82, 0x31, 0x02, 0x10, 0x04, 0x41, 0x11, 0x0c, 0x28, 0xc7, 0x12, 0x94, 0x07, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x10, 0x97, 0x29, 0xa2, 0x25, 0x10, 0xab, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x21, 0x06, 0x52, 0x1c, 0x40, 0x72, 0x50, 0xb9, 0x1b, 0x43, 0x0b, 0x93, 0xfb, 0x9a, 0x4b, 0xd3, 0x2b, 0x1b, 0x62, 0x20, 0xc2, 0x21, 0x20, 0x01, 0xd9, 0x20, 0x08, 0x0e, 0x8e, 0xad, 0x0c, 0x84, 0x89, 0xc9, 0xaa, 0x09, 0xc4, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x0d, 0x24, 0x07, 0x46, 0xc6, 0x25, 0x26, 0x06, 0x04, 0xa5, 0xad, 0x8c, 0x2e, 0x8c, 0xcd, 0xac, 0xac, 0x25, 0x07, 0x46, 0xc6, 0x25, 0x26, 0xc6, 0x25, 0x26, 0x65, 0x88, 0x70, 0x10, 0x43, 0x0c, 0x44, 0x40, 0x06, 0x84, 0x60, 0xd1, 0x54, 0x46, 0x17, 0xc6, 0x36, 0x04, 0x39, 0x0e, 0x44, 0x40, 0x04, 0x84, 0xe0, 0x16, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0x42, 0x56, 0xe6, 0xf6, 0x26, 0xd7, 0x36, 0xf7, 0x45, 0x96, 0x36, 0x17, 0x26, 0xc6, 0x56, 0x36, 0x44, 0x38, 0x12, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0x63, 0x61, 0x19, 0x84, 0xa5, 0xc9, 0xb9, 0x8c, 0xbd, 0xb5, 0xc1, 0xa5, 0xb1, 0x95, 0xb9, 0x98, 0xc9, 0x85, 0xb5, 0x95, 0x89, 0xd5, 0x99, 0x99, 0x95, 0xc9, 0x7d, 0x99, 0x95, 0xd1, 0x8d, 0xa1, 0x7d, 0x91, 0xa5, 0xcd, 0x85, 0x89, 0xb1, 0x95, 0x0d, 0x11, 0x8e, 0x86, 0x61, 0x10, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0xe2, 0x16, 0x46, 0x97, 0x66, 0x57, 0xf6, 0x45, 0xf6, 0x56, 0x27, 0xc6, 0x56, 0xf6, 0x45, 0x96, 0x36, 0x17, 0x26, 0xc6, 0x56, 0x36, 0x44, 0x38, 0x1e, 0x92, 0x41, 0x58, 0x9a, 0x9c, 0xcb, 0xd8, 0x5b, 0x1b, 0x5c, 0x1a, 0x5b, 0x99, 0x8b, 0x5b, 0x18, 0x5d, 0x9a, 0x5d, 0xd9, 0x17, 0xdb, 0x9b, 0xdb, 0xd9, 0x17, 0xdb, 0x9b, 0xdb, 0xd9, 0x17, 0x59, 0xda, 0x5c, 0x98, 0x18, 0x5b, 0xd9, 0x10, 0xe1, 0x88, 0x78, 0x06, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0x63, 0x22, 0x13, 0x96, 0x26, 0xe7, 0x02, 0xf7, 0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6, 0xc6, 0x28, 0x2c, 0x4d, 0xce, 0x25, 0x4c, 0xee, 0xec, 0x8b, 0x2e, 0x0f, 0xae, 0xec, 0xcb, 0x2d, 0xac, 0xad, 0x8c, 0x86, 0x19, 0xdb, 0x5b, 0x18, 0x1d, 0x0d, 0x99, 0xb0, 0x34, 0x39, 0x97, 0x30, 0xb9, 0xb3, 0x2f, 0xb7, 0xb0, 0xb6, 0x32, 0x0e, 0x70, 0x6f, 0x73, 0x43, 0x94, 0xa3, 0x3a, 0xac, 0xe3, 0x3a, 0xb0, 0x23, 0x63, 0x14, 0x96, 0x26, 0xe7, 0x62, 0x57, 0x26, 0x47, 0x57, 0x86, 0xf7, 0xf5, 0x56, 0x47, 0x07, 0x57, 0x47, 0xc7, 0xea, 0xac, 0xcc, 0xad, 0x4c, 0x2e, 0x8c, 0xae, 0x8c, 0x0c, 0x85, 0xc6, 0x0c, 0xee, 0x6d, 0x8e, 0xc8, 0x4e, 0xe6, 0xcb, 0x2c, 0x85, 0x86, 0x19, 0xdb, 0x5b, 0x18, 0x9d, 0x0c, 0x09, 0x33, 0xb8, 0xb7, 0xb9, 0x21, 0xcc, 0xb1, 0x1d, 0xdc, 0x61, 0x1d, 0xdd, 0x81, 0x1d, 0x1e, 0xb1, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xba, 0x32, 0x32, 0x94, 0x1b, 0x33, 0xba, 0xb1, 0xb7, 0x37, 0x39, 0x32, 0x22, 0x3b, 0x99, 0x2f, 0xb3, 0x14, 0x1e, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x43, 0x98, 0x63, 0x3b, 0xc0, 0xe0, 0xb0, 0x8e, 0xee, 0xc0, 0x8e, 0x30, 0x18, 0x62, 0x1c, 0xda, 0xf1, 0x1d, 0x62, 0x40, 0x28, 0x2c, 0x4d, 0xce, 0xc5, 0xae, 0x4c, 0x8e, 0xae, 0x0c, 0xef, 0x2b, 0xcd, 0x0d, 0xae, 0x8e, 0x8e, 0x52, 0x58, 0x9a, 0x9c, 0x0b, 0xdb, 0xdb, 0x58, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x57, 0x9a, 0x1b, 0x59, 0x19, 0x1e, 0xa9, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xba, 0x32, 0x32, 0x94, 0x19, 0xb8, 0xb7, 0x39, 0x22, 0x3b, 0x99, 0x2f, 0xb3, 0x94, 0x21, 0x14, 0x42, 0x1c, 0x64, 0x70, 0x94, 0x01, 0x42, 0x20, 0xc2, 0x61, 0x06, 0x87, 0x75, 0x74, 0x07, 0x76, 0x64, 0xbc, 0xce, 0xca, 0xdc, 0xca, 0xe4, 0xc2, 0xe8, 0xca, 0xc8, 0x50, 0x6c, 0xe8, 0xc6, 0xde, 0xde, 0xe4, 0xc8, 0x88, 0xec, 0x64, 0xbe, 0xcc, 0x52, 0x68, 0xd0, 0x8d, 0xbd, 0xbd, 0xc9, 0x91, 0x0d, 0xa1, 0x10, 0xe1, 0x20, 0x83, 0xa3, 0x0c, 0x10, 0x01, 0x11, 0x0e, 0x34, 0x38, 0xac, 0xa3, 0x3b, 0xb0, 0x23, 0x0d, 0xa8, 0x84, 0xa5, 0xc9, 0xb9, 0x88, 0xd5, 0x99, 0x99, 0x95, 0xc9, 0xf1, 0x09, 0x4b, 0x93, 0x73, 0x11, 0xab, 0x33, 0x33, 0x2b, 0x93, 0xfb, 0x9a, 0x4b, 0xd3, 0x2b, 0x23, 0x12, 0x96, 0x26, 0xe7, 0x22, 0x57, 0x16, 0x46, 0xc6, 0x28, 0x2c, 0x4d, 0xce, 0x25, 0x4c, 0xee, 0xec, 0x8b, 0x2e, 0x0f, 0xae, 0xec, 0x6b, 0x2e, 0x4d, 0xaf, 0x8c, 0x57, 0x58, 0x9a, 0x9c, 0x4b, 0x98, 0xdc, 0xd9, 0x17, 0x5d, 0x1e, 0x5c, 0xd9, 0x57, 0x18, 0x5b, 0xda, 0x99, 0xdb, 0xd7, 0x5c, 0x9a, 0x5e, 0x19, 0x11, 0xbb, 0xb4, 0xb2, 0xbb, 0xa9, 0x34, 0xbd, 0xb2, 0x21, 0x60, 0x80, 0x14, 0xc7, 0x1a, 0x1c, 0x6c, 0x80, 0x0c, 0x47, 0x19, 0x20, 0x02, 0x22, 0x1c, 0x6d, 0x70, 0xb8, 0x01, 0x32, 0x1c, 0x6f, 0x80, 0x0c, 0x87, 0x75, 0x74, 0x07, 0x76, 0xc0, 0xc1, 0x10, 0xe3, 0x38, 0x83, 0x43, 0x0d, 0x8e, 0x38, 0x18, 0x62, 0x18, 0xc0, 0x31, 0x06, 0x87, 0x1c, 0x0c, 0x11, 0x00, 0x63, 0x44, 0xc4, 0x0e, 0xec, 0x60, 0x0f, 0xed, 0xe0, 0x06, 0xed, 0xf0, 0x0e, 0xe4, 0x50, 0x0f, 0xec, 0x50, 0x0e, 0x6e, 0x60, 0x0e, 0xec, 0x10, 0x0e, 0xe7, 0x30, 0x0f, 0x53, 0x84, 0x60, 0x18, 0xa1, 0xb0, 0x03, 0x3b, 0xd8, 0x43, 0x3b, 0xb8, 0x41, 0x3a, 0x90, 0x43, 0x39, 0xb8, 0x03, 0x3d, 0x4c, 0x09, 0x8a, 0x11, 0x4b, 0x38, 0xa4, 0x83, 0x3c, 0xb8, 0x81, 0x3d, 0x94, 0x83, 0x3c, 0xcc, 0x43, 0x3a, 0xbc, 0x83, 0x3b, 0x4c, 0x09, 0x8c, 0x11, 0x54, 0x38, 0xa4, 0x83, 0x3c, 0xb8, 0x01, 0x3b, 0x84, 0x83, 0x3b, 0x9c, 0x43, 0x3d, 0x84, 0xc3, 0x39, 0x94, 0xc3, 0x2f, 0xd8, 0x43, 0x39, 0xc8, 0xc3, 0x3c, 0xa4, 0xc3, 0x3b, 0xb8, 0xc3, 0x94, 0x00, 0x19, 0x31, 0x85, 0x43, 0x3a, 0xc8, 0x83, 0x1b, 0x8c, 0xc3, 0x3b, 0xb4, 0x03, 0x3c, 0xa4, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x03, 0x3c, 0xd0, 0x43, 0x3a, 0xbc, 0x83, 0x3b, 0xcc, 0xc3, 0x14, 0x43, 0x61, 0x1c, 0x48, 0xa2, 0x46, 0x28, 0xe1, 0x90, 0x0e, 0xf2, 0xe0, 0x06, 0xf6, 0x50, 0x0e, 0xf2, 0x40, 0x0f, 0xe5, 0x80, 0x0f, 0x53, 0x82, 0x39, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x54, 0x44, 0x34, 0x11, 0x17, 0x7b, 0x00, 0x03, 0x11, 0x01, 0x61, 0x20, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x63, 0x04, 0x20, 0x08, 0x82, 0x20, 0x18, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xe2, 0xdf, 0x0c, 0xc0, 0x18, 0x01, 0x08, 0x82, 0x20, 0xfe, 0x0b, 0x23, 0x00, 0x14, 0x73, 0x10, 0x4d, 0xf3, 0x30, 0x34, 0x33, 0x00, 0x00, 0x63, 0x08, 0x8a, 0x63, 0x01, 0x22, 0x1f, 0x52, 0xc8, 0x18, 0x42, 0x10, 0xd9, 0x10, 0xd0, 0xc7, 0x82, 0x04, 0x3e, 0x63, 0x08, 0x90, 0x65, 0x81, 0x23, 0x9f, 0x31, 0x04, 0x03, 0x33, 0x21, 0xa0, 0x8f, 0x41, 0x41, 0x7c, 0xe6, 0x18, 0x1a, 0x23, 0x9b, 0x63, 0x08, 0x04, 0x6e, 0xb6, 0xc1, 0x09, 0x80, 0xd9, 0x86, 0x00, 0x0b, 0x66, 0x1b, 0x02, 0x4c, 0xc8, 0x20, 0x20, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x62, 0xa0, 0x83, 0x2d, 0x43, 0x32, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x54, 0x12, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x92, 0x04, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x49, 0x0a, 0x32, 0x44, 0x24, 0x48, 0x0a, 0x90, 0x21, 0x23, 0xc4, 0x52, 0x80, 0x0c, 0x19, 0x21, 0x72, 0x24, 0x07, 0xc8, 0x88, 0x11, 0x62, 0xa8, 0xa0, 0xa8, 0x40, 0xc6, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x51, 0x18, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x60, 0x00, 0x09, 0xa8, 0x88, 0x71, 0x78, 0x07, 0x79, 0x90, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x60, 0x87, 0x7c, 0x68, 0x03, 0x79, 0x78, 0x87, 0x7a, 0x70, 0x07, 0x72, 0x28, 0x07, 0x72, 0x68, 0x03, 0x72, 0x48, 0x07, 0x7b, 0x48, 0x07, 0x72, 0x28, 0x87, 0x36, 0x98, 0x87, 0x78, 0x90, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xc8, 0x21, 0x1d, 0xe6, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0xa1, 0x0d, 0xe8, 0x21, 0x1c, 0xd2, 0x81, 0x1d, 0xda, 0x60, 0x1c, 0xc2, 0x81, 0x1d, 0xd8, 0x61, 0x1e, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x76, 0x28, 0x87, 0x79, 0x98, 0x87, 0x36, 0x80, 0x07, 0x79, 0x28, 0x87, 0x71, 0x48, 0x87, 0x79, 0x28, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x87, 0x70, 0x20, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xcc, 0x41, 0x1e, 0xc2, 0xa1, 0x1d, 0xca, 0xa1, 0x0d, 0xe0, 0xe1, 0x1d, 0xd2, 0xc1, 0x1d, 0xe8, 0xa1, 0x1c, 0xe4, 0xa1, 0x0d, 0xca, 0x81, 0x1d, 0xd2, 0xa1, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x60, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x87, 0x36, 0x70, 0x87, 0x77, 0x70, 0x87, 0x36, 0x60, 0x87, 0x72, 0x08, 0x07, 0x73, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x48, 0x07, 0x77, 0x30, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd4, 0xa1, 0x1e, 0xda, 0x01, 0x1e, 0xda, 0x80, 0x1e, 0xc2, 0x41, 0x1c, 0xd8, 0xa1, 0x1c, 0xe6, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x77, 0x08, 0x07, 0x77, 0x98, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0x60, 0x1e, 0xd2, 0xe1, 0x1c, 0xdc, 0xa1, 0x1c, 0xc8, 0xa1, 0x0d, 0xf4, 0xa1, 0x1c, 0xe4, 0xe1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0xa0, 0x07, 0x79, 0x08, 0x07, 0x78, 0x80, 0x87, 0x74, 0x70, 0x87, 0x73, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xe6, 0x81, 0x1e, 0xc2, 0x61, 0x1c, 0xd6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xde, 0x81, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0xa1, 0x0d, 0xc4, 0xa1, 0x1e, 0xcc, 0xc1, 0x1c, 0xca, 0x41, 0x1e, 0xda, 0x60, 0x1e, 0xd2, 0x41, 0x1f, 0xca, 0x01, 0xc0, 0x03, 0x80, 0xa8, 0x07, 0x77, 0x98, 0x87, 0x70, 0x30, 0x87, 0x72, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xa2, 0x1e, 0xe6, 0xa1, 0x1c, 0xda, 0x60, 0x1e, 0xde, 0xc1, 0x1c, 0xe8, 0xa1, 0x0d, 0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x60, 0x03, 0x21, 0x10, 0x40, 0xb5, 0xc1, 0x18, 0x0c, 0x60, 0x01, 0xaa, 0x0d, 0x08, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0x00, 0x12, 0x50, 0x6d, 0x30, 0x8a, 0x00, 0x58, 0x80, 0x6a, 0x83, 0x61, 0x08, 0xc0, 0x02, 0x54, 0x1b, 0x8c, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0x28, 0x00, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x0c, 0x44, 0x61, 0x4c, 0x08, 0x0e, 0x00, 0x89, 0x20, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xb0, 0xc1, 0x0c, 0xc0, 0x30, 0x02, 0x01, 0x0c, 0x23, 0x08, 0xc0, 0x30, 0xc2, 0x00, 0xe4, 0xc0, 0x30, 0x13, 0x35, 0x0f, 0xf4, 0x20, 0x0f, 0xf5, 0x30, 0x0e, 0xf4, 0xe0, 0x06, 0xed, 0x50, 0x0e, 0xf4, 0x10, 0x0e, 0xec, 0xa0, 0x07, 0x7a, 0xd0, 0x0e, 0xe1, 0x40, 0x0f, 0xf2, 0x90, 0x0e, 0xf8, 0x80, 0x02, 0x62, 0x8e, 0x00, 0x0c, 0xee, 0x91, 0xa6, 0x88, 0x12, 0x26, 0xdf, 0x6d, 0x90, 0xc2, 0x89, 0x18, 0x09, 0x35, 0x45, 0x11, 0x04, 0x82, 0x20, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x20, 0xc2, 0x21, 0x1c, 0x25, 0x4d, 0x11, 0x25, 0x4c, 0xfe, 0x3f, 0x11, 0xd7, 0x44, 0x45, 0xc4, 0x6f, 0x0f, 0xff, 0x34, 0x46, 0x00, 0x0c, 0x22, 0x24, 0xc1, 0x45, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xff, 0x12, 0xc0, 0x3c, 0x0b, 0x11, 0xfd, 0xd3, 0x18, 0x01, 0x30, 0x88, 0xb0, 0x08, 0xe5, 0x08, 0x02, 0x41, 0x40, 0x14, 0x86, 0x9a, 0x39, 0x82, 0x60, 0x18, 0x41, 0x30, 0x0a, 0x12, 0x28, 0x8c, 0xf0, 0x40, 0x0f, 0x40, 0x51, 0x21, 0x82, 0x20, 0x08, 0x68, 0x2a, 0x02, 0x00, 0x50, 0x55, 0x06, 0x40, 0x10, 0xe8, 0x2a, 0x83, 0x20, 0x08, 0x94, 0x95, 0x01, 0x00, 0x00, 0xda, 0x8a, 0x20, 0x08, 0xd4, 0x0d, 0x04, 0xa4, 0x80, 0x31, 0x88, 0x10, 0x08, 0xc3, 0x08, 0x83, 0x31, 0x47, 0x00, 0x0a, 0x83, 0x08, 0x83, 0x30, 0x88, 0x20, 0x08, 0x53, 0x00, 0x23, 0x00, 0x83, 0x08, 0x86, 0x30, 0x88, 0x50, 0x08, 0x83, 0x08, 0x80, 0x30, 0x8c, 0x40, 0x18, 0x00, 0x00, 0x00, 0x00, 0x13, 0xb2, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x83, 0x76, 0x08, 0x87, 0x71, 0x78, 0x87, 0x79, 0xc0, 0x87, 0x38, 0x80, 0x03, 0x37, 0x88, 0x83, 0x38, 0x70, 0x03, 0x38, 0xd8, 0x70, 0x1b, 0xe5, 0xd0, 0x06, 0xf0, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x90, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x40, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x74, 0x80, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x79, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x79, 0x20, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0x30, 0x84, 0x71, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc2, 0x48, 0x40, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x61, 0x28, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x30, 0x16, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x18, 0x0b, 0x08, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x0c, 0x06, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x10, 0x46, 0x03, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0xc3, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x84, 0xe1, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc2, 0x78, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x61, 0x3c, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x40, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x1a, 0x0b, 0x59, 0x80, 0x8c, 0x11, 0x80, 0x12, 0x28, 0x84, 0x82, 0x28, 0xb0, 0x02, 0x29, 0x82, 0x02, 0x17, 0x28, 0x83, 0x02, 0x0e, 0x28, 0xf0, 0x80, 0x02, 0x14, 0x28, 0x48, 0x81, 0x02, 0x15, 0x28, 0x58, 0x81, 0xc2, 0x15, 0x28, 0x60, 0x81, 0x42, 0x16, 0x28, 0x68, 0x81, 0xc2, 0x16, 0x28, 0x05, 0x1a, 0x0b, 0x58, 0x60, 0x04, 0xa0, 0x60, 0x05, 0x0a, 0x57, 0xa0, 0xa0, 0x05, 0x0a, 0x5b, 0xa0, 0xc0, 0x0a, 0x38, 0xa0, 0xc0, 0x03, 0x0a, 0x50, 0xa0, 0x20, 0x05, 0x0a, 0x54, 0x80, 0xc0, 0xb1, 0x04, 0xe5, 0x21, 0x60, 0x8c, 0x00, 0x04, 0x41, 0x50, 0x04, 0x03, 0x00, 0x79, 0x18, 0x00, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x10, 0x97, 0x29, 0xa2, 0x25, 0x10, 0xab, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x21, 0x86, 0x21, 0x7d, 0x00, 0x18, 0xb4, 0x01, 0x95, 0xbb, 0x31, 0xb4, 0x30, 0xb9, 0xaf, 0xb9, 0x34, 0xbd, 0xb2, 0x21, 0x86, 0xd1, 0x7c, 0x82, 0xe1, 0x90, 0x0d, 0x82, 0xe0, 0xe0, 0xd8, 0xca, 0x40, 0x98, 0x98, 0xac, 0x9a, 0x40, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x40, 0x72, 0x60, 0x64, 0x5c, 0x62, 0x62, 0x40, 0x50, 0xda, 0xca, 0xe8, 0xc2, 0xd8, 0xcc, 0xca, 0x5a, 0x72, 0x60, 0x64, 0x5c, 0x62, 0x62, 0x5c, 0x62, 0x52, 0x86, 0x08, 0x1f, 0x31, 0xc4, 0x30, 0x1a, 0xe3, 0x31, 0x18, 0x16, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x43, 0x90, 0xef, 0x30, 0x1a, 0xa3, 0x31, 0x18, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0x2f, 0x21, 0x17, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0x62, 0x16, 0x36, 0x47, 0xf7, 0xd5, 0x16, 0x46, 0x87, 0xf6, 0x55, 0xe6, 0x16, 0x26, 0xc6, 0x56, 0x36, 0x44, 0xf8, 0x16, 0x96, 0x41, 0x58, 0x9a, 0x9c, 0xcb, 0xd8, 0x5b, 0x1b, 0x5c, 0x1a, 0x5b, 0x99, 0x8b, 0x99, 0x5c, 0x58, 0x5b, 0x99, 0x58, 0x9d, 0x99, 0x59, 0x99, 0xdc, 0x97, 0x59, 0x19, 0xdd, 0x18, 0xda, 0x17, 0x59, 0xda, 0x5c, 0x98, 0x18, 0x5b, 0xd9, 0x10, 0xe1, 0x6b, 0x18, 0x06, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0xef, 0x21, 0x19, 0x84, 0xa5, 0xc9, 0xb9, 0x8c, 0xbd, 0xb5, 0xc1, 0xa5, 0xb1, 0x95, 0xb9, 0xb8, 0x85, 0xd1, 0xa5, 0xd9, 0x95, 0x7d, 0xb1, 0xbd, 0xb9, 0x9d, 0x7d, 0xb1, 0xbd, 0xb9, 0x9d, 0x7d, 0x91, 0xa5, 0xcd, 0x85, 0x89, 0xb1, 0x95, 0x0d, 0x11, 0xbe, 0x88, 0x67, 0x10, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0xe2, 0x16, 0x46, 0x97, 0x66, 0x57, 0xf6, 0x75, 0x97, 0x46, 0x56, 0xf6, 0x65, 0x57, 0x36, 0x46, 0xf7, 0x26, 0x37, 0xf7, 0x45, 0x96, 0x36, 0x17, 0x26, 0xc6, 0x56, 0x36, 0x44, 0xf8, 0x26, 0x46, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x8c, 0xc2, 0xd2, 0xe4, 0x5c, 0xc2, 0xe4, 0xce, 0xbe, 0xe8, 0xf2, 0xe0, 0xca, 0xbe, 0xdc, 0xc2, 0xda, 0xca, 0x68, 0x98, 0xb1, 0xbd, 0x85, 0xd1, 0xd1, 0x0c, 0x41, 0xbe, 0xca, 0x60, 0x3e, 0xeb, 0xbb, 0x86, 0x08, 0x1f, 0x46, 0x26, 0x2c, 0x4d, 0xce, 0x05, 0xee, 0x6d, 0x2e, 0x8d, 0x2e, 0xed, 0xcd, 0x8d, 0x4a, 0x58, 0x9a, 0x9c, 0xcb, 0x58, 0x99, 0x1b, 0x5d, 0x99, 0x1c, 0xa5, 0xb0, 0x34, 0x39, 0x17, 0xb7, 0xb7, 0x2f, 0xb8, 0x32, 0xb9, 0x39, 0xb8, 0xb2, 0x31, 0xba, 0x34, 0xbb, 0x32, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1c, 0xe0, 0xde, 0xe6, 0x86, 0x40, 0x06, 0xf3, 0x69, 0xdf, 0xf6, 0x71, 0x9f, 0xf5, 0x5d, 0x5f, 0xf7, 0x79, 0x94, 0xc2, 0xd2, 0xe4, 0x5c, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xbe, 0xd2, 0xdc, 0xe0, 0xea, 0xe8, 0x58, 0x9d, 0x95, 0xb9, 0x95, 0xc9, 0x85, 0xd1, 0x95, 0x91, 0xa1, 0xd0, 0x98, 0xc1, 0xbd, 0xcd, 0x11, 0xd9, 0xc9, 0x7c, 0x99, 0xa5, 0xf0, 0x09, 0x4b, 0x93, 0x73, 0x81, 0x2b, 0x93, 0x9b, 0x83, 0x2b, 0x1b, 0xa3, 0x4b, 0xb3, 0x2b, 0xa3, 0x61, 0xc6, 0xf6, 0x16, 0x46, 0x27, 0x43, 0xc2, 0x0c, 0xee, 0x6d, 0x6e, 0x88, 0x64, 0x34, 0x1f, 0x18, 0x7c, 0x61, 0xf0, 0x6d, 0x9f, 0x18, 0x7c, 0xd6, 0x37, 0x06, 0x5f, 0xf7, 0x91, 0x01, 0xb1, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xba, 0x32, 0x32, 0x94, 0x1b, 0x33, 0xba, 0xb1, 0xb7, 0x37, 0x39, 0x32, 0x22, 0x3b, 0x99, 0x2f, 0xb3, 0x14, 0x1e, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x43, 0x24, 0x43, 0xfa, 0xc0, 0xe0, 0x33, 0x83, 0x6f, 0xfb, 0xc4, 0xe0, 0xb3, 0xbe, 0x31, 0xf8, 0xba, 0xef, 0x0c, 0xa8, 0x84, 0xa5, 0xc9, 0xb9, 0x88, 0xd5, 0x99, 0x99, 0x95, 0xc9, 0xf1, 0x09, 0x4b, 0x93, 0x73, 0x11, 0xab, 0x33, 0x33, 0x2b, 0x93, 0xfb, 0x9a, 0x4b, 0xd3, 0x2b, 0xa3, 0x14, 0x96, 0x26, 0xe7, 0xc2, 0xf6, 0x36, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0xf6, 0x95, 0xe6, 0x46, 0x56, 0x86, 0x47, 0x24, 0x2c, 0x4d, 0xce, 0x45, 0xae, 0x2c, 0x8c, 0x8c, 0x54, 0x58, 0x9a, 0x9c, 0xcb, 0x1c, 0x9d, 0x5c, 0xdd, 0x18, 0xdd, 0x17, 0x5d, 0x1e, 0x5c, 0xd9, 0x57, 0x9a, 0x9b, 0xd9, 0x1b, 0x11, 0x33, 0xb6, 0xb7, 0x30, 0xba, 0x19, 0xbc, 0x19, 0x2a, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x44, 0xe0, 0xc2, 0xd2, 0xdc, 0xe8, 0x9a, 0xc2, 0xe8, 0x88, 0xa4, 0xb9, 0xb9, 0x95, 0xc9, 0x0d, 0xbd, 0xb1, 0x11, 0x79, 0xab, 0xa3, 0x2b, 0x93, 0x1b, 0x7a, 0x63, 0xa3, 0x32, 0x37, 0x96, 0x36, 0x37, 0xf7, 0x26, 0x57, 0x84, 0x47, 0x47, 0x66, 0x6e, 0x2c, 0x6d, 0x6e, 0xee, 0x4d, 0x6e, 0x6a, 0x2c, 0x8c, 0xad, 0x8c, 0x46, 0x19, 0x1e, 0x5d, 0x99, 0x1b, 0x1d, 0x0b, 0x33, 0xb6, 0xb7, 0x30, 0x3a, 0x1a, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3c, 0xcc, 0xca, 0xc2, 0xe8, 0xd0, 0xca, 0xe4, 0xa8, 0xcc, 0xd1, 0xc9, 0xbd, 0xad, 0x95, 0x35, 0xd5, 0xb1, 0xd1, 0x31, 0x99, 0xa3, 0x93, 0x7b, 0x5b, 0x2b, 0xa3, 0x42, 0x93, 0xe3, 0x90, 0xe6, 0x46, 0xc7, 0x83, 0xae, 0x0c, 0x8f, 0x2a, 0x0f, 0xae, 0x8c, 0x04, 0x5d, 0x1e, 0x5c, 0xd9, 0x10, 0x91, 0x30, 0x18, 0x03, 0x32, 0x98, 0xcf, 0x0d, 0xbe, 0x37, 0x30, 0x20, 0x03, 0x32, 0x98, 0xcf, 0x0d, 0x3e, 0x38, 0x30, 0x2a, 0x23, 0x32, 0x98, 0xef, 0xfa, 0xe2, 0xc0, 0xb0, 0x8c, 0xc8, 0x60, 0xbe, 0xeb, 0x93, 0x03, 0xe3, 0x32, 0x1e, 0x83, 0xf9, 0xc6, 0xe0, 0x9b, 0x03, 0x03, 0x33, 0x1e, 0x83, 0xf9, 0xc6, 0xe0, 0xa3, 0x03, 0x23, 0x33, 0x1e, 0x83, 0xf9, 0xc6, 0xe0, 0xab, 0x03, 0x43, 0x33, 0x1c, 0x83, 0xf9, 0xec, 0xe0, 0xbb, 0x03, 0x63, 0x33, 0x1c, 0x83, 0xf9, 0xec, 0xe0, 0xc3, 0x03, 0x83, 0x33, 0x1c, 0x83, 0xf9, 0xec, 0xe0, 0xcb, 0x03, 0xa3, 0x33, 0x1c, 0x83, 0xf9, 0xec, 0xe0, 0xd3, 0x03, 0xc3, 0x33, 0x1c, 0x83, 0xf9, 0xf6, 0xe0, 0xe3, 0x03, 0xe3, 0x33, 0x1c, 0x83, 0xf9, 0xf6, 0xe0, 0xeb, 0x03, 0x46, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0xbc, 0xc2, 0xd2, 0xe4, 0x5c, 0xc2, 0xe4, 0xce, 0xbe, 0xe8, 0xf2, 0xe0, 0xca, 0xbe, 0xc2, 0xd8, 0xd2, 0xce, 0xdc, 0xbe, 0xe6, 0xd2, 0xf4, 0xca, 0x88, 0x54, 0xb9, 0xa5, 0x99, 0xbd, 0xc9, 0xb5, 0xcd, 0x11, 0xa9, 0x73, 0x4b, 0x33, 0x7b, 0x93, 0x6b, 0x9b, 0x1b, 0x42, 0x06, 0x06, 0xf5, 0xa5, 0xc1, 0xa7, 0x06, 0xc6, 0xf4, 0xad, 0x81, 0xc1, 0x18, 0xcd, 0xc7, 0x06, 0x5f, 0x1b, 0x7c, 0x7e, 0xf0, 0xfd, 0x81, 0x31, 0x7d, 0xa0, 0x60, 0x44, 0x9f, 0xf5, 0x85, 0xc2, 0xd7, 0x7d, 0xa2, 0xc0, 0x25, 0x2c, 0x4d, 0xce, 0x85, 0xae, 0x0c, 0x8f, 0xae, 0x4e, 0xae, 0x8c, 0x4a, 0x58, 0x9a, 0x9c, 0xcb, 0x5c, 0x58, 0x1b, 0x1c, 0x5b, 0x19, 0x31, 0xba, 0x32, 0x3c, 0xba, 0x3a, 0xb9, 0x32, 0x19, 0x32, 0x1e, 0x33, 0xb6, 0xb7, 0x30, 0x3a, 0x16, 0x90, 0xb9, 0xb0, 0x36, 0x38, 0xb6, 0x32, 0x1f, 0x1e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x28, 0xc3, 0xf9, 0x48, 0xe1, 0x5b, 0x03, 0x83, 0x31, 0x9a, 0xaf, 0x14, 0x3e, 0xeb, 0x33, 0x85, 0xaf, 0xfb, 0x4e, 0x81, 0x4b, 0x58, 0x9a, 0x9c, 0xcb, 0x5c, 0x58, 0x1b, 0x1c, 0x5b, 0x99, 0x1c, 0x8f, 0xb9, 0xb0, 0x36, 0x38, 0xb6, 0x32, 0xb9, 0x21, 0x92, 0x01, 0x06, 0x5f, 0x2a, 0x7c, 0x6b, 0x60, 0x30, 0x46, 0xf3, 0x59, 0x9f, 0x2a, 0x7c, 0xdd, 0xa7, 0x0a, 0x43, 0x98, 0xef, 0xfb, 0xca, 0xe0, 0x43, 0x83, 0x6f, 0x14, 0x3e, 0x54, 0xf8, 0x56, 0x61, 0x88, 0xe1, 0x00, 0x5f, 0xf6, 0xb1, 0x02, 0x9f, 0xb7, 0x36, 0xb7, 0x34, 0xb8, 0x37, 0xba, 0x32, 0x37, 0x3a, 0x90, 0x31, 0xb4, 0x30, 0x39, 0x3e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x54, 0x42, 0x41, 0x41, 0x43, 0x84, 0xef, 0x15, 0x86, 0x18, 0x9f, 0x2b, 0x7c, 0xb0, 0x30, 0x06, 0x62, 0x30, 0xc4, 0xf8, 0x62, 0xe1, 0x8b, 0x85, 0x31, 0x10, 0x03, 0x36, 0x5f, 0x5a, 0x54, 0x53, 0x38, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0xfc, 0xbe, 0xb4, 0xa8, 0xa6, 0x9c, 0x6a, 0xda, 0xca, 0xe8, 0xc2, 0xd8, 0x6c, 0xda, 0xc2, 0xe8, 0xe4, 0xd2, 0xf0, 0x92, 0xcc, 0x98, 0xd2, 0x66, 0x8a, 0x98, 0xd2, 0x66, 0x8a, 0xec, 0x8a, 0x8a, 0x86, 0x18, 0x1f, 0x2d, 0x7c, 0xb1, 0x30, 0x06, 0x62, 0x30, 0xc4, 0xf8, 0xec, 0xe0, 0x8b, 0x85, 0x31, 0x10, 0x83, 0x21, 0xc6, 0xb7, 0x07, 0x5f, 0x2c, 0x8c, 0x81, 0x18, 0x0c, 0xb1, 0x83, 0x6f, 0x16, 0xbe, 0x5a, 0x18, 0x03, 0x31, 0xf8, 0x6a, 0x61, 0x0c, 0xce, 0xe0, 0x8b, 0x85, 0x31, 0x40, 0x83, 0x2f, 0x16, 0xc6, 0x20, 0x0d, 0xbe, 0x58, 0x18, 0x03, 0x35, 0xf8, 0x62, 0x61, 0x0c, 0xd6, 0xe0, 0x8b, 0x85, 0x31, 0x60, 0x83, 0xcf, 0x16, 0xc6, 0x60, 0x0c, 0x3e, 0x5b, 0x18, 0x03, 0x32, 0xf8, 0x6c, 0x61, 0x0c, 0xc2, 0xe0, 0xb3, 0x85, 0x31, 0x58, 0xbe, 0x5b, 0x18, 0x83, 0x32, 0xf8, 0x6e, 0x61, 0x0c, 0xcc, 0x60, 0x88, 0xf1, 0xe1, 0xc2, 0x77, 0x0b, 0x63, 0x60, 0x06, 0x43, 0x8c, 0x0f, 0x17, 0x3e, 0x5b, 0x18, 0x03, 0x32, 0x18, 0x62, 0x7c, 0xb8, 0xf0, 0xd9, 0xc2, 0x18, 0x8c, 0xc1, 0x10, 0x01, 0x70, 0x83, 0x21, 0xc6, 0x87, 0x0b, 0xdf, 0x2d, 0x8c, 0x41, 0x19, 0x8c, 0x88, 0xd8, 0x81, 0x1d, 0xec, 0xa1, 0x1d, 0xdc, 0xa0, 0x1d, 0xde, 0x81, 0x1c, 0xea, 0x81, 0x1d, 0xca, 0xc1, 0x0d, 0xcc, 0x81, 0x1d, 0xc2, 0xe1, 0x1c, 0xe6, 0x61, 0x8a, 0x10, 0x0c, 0x23, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x48, 0x07, 0x72, 0x28, 0x07, 0x77, 0xa0, 0x87, 0x29, 0x41, 0x31, 0x62, 0x09, 0x87, 0x74, 0x90, 0x07, 0x37, 0xb0, 0x87, 0x72, 0x90, 0x87, 0x79, 0x48, 0x87, 0x77, 0x70, 0x87, 0x29, 0x81, 0x31, 0x82, 0x0a, 0x87, 0x74, 0x90, 0x07, 0x37, 0x60, 0x87, 0x70, 0x70, 0x87, 0x73, 0xa8, 0x87, 0x70, 0x38, 0x87, 0x72, 0xf8, 0x05, 0x7b, 0x28, 0x07, 0x79, 0x98, 0x87, 0x74, 0x78, 0x07, 0x77, 0x98, 0x12, 0x20, 0x23, 0xa6, 0x70, 0x48, 0x07, 0x79, 0x70, 0x83, 0x71, 0x78, 0x87, 0x76, 0x80, 0x87, 0x74, 0x60, 0x87, 0x72, 0xf8, 0x85, 0x77, 0x80, 0x07, 0x7a, 0x48, 0x87, 0x77, 0x70, 0x87, 0x79, 0x98, 0x62, 0x28, 0x8c, 0x03, 0x49, 0xd4, 0x08, 0x26, 0x1c, 0xd2, 0x41, 0x1e, 0xdc, 0xc0, 0x1c, 0xe4, 0x21, 0x1c, 0xce, 0xa1, 0x1d, 0xca, 0xc1, 0x1d, 0xe8, 0x61, 0x4a, 0xd0, 0x0a, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa6, 0x70, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x30, 0x51, 0x11, 0x30, 0x11, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x05, 0x0d, 0x80, 0x44, 0xfe, 0xe0, 0x4c, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x01, 0x1b, 0x80, 0x44, 0xbe, 0x04, 0x30, 0xcf, 0x42, 0xfc, 0x13, 0x71, 0x4d, 0x54, 0x44, 0xfc, 0xf6, 0xe0, 0x57, 0x78, 0x71, 0xdb, 0x66, 0x30, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x05, 0x03, 0x5c, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x09, 0x13, 0x80, 0x44, 0x7e, 0x01, 0x48, 0xd3, 0x5f, 0x00, 0x81, 0xe4, 0x57, 0x76, 0x71, 0xdb, 0x36, 0x50, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x30, 0x51, 0x11, 0x30, 0x11, 0x7e, 0x71, 0xdb, 0x46, 0x10, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x14, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0xe0, 0x14, 0x11, 0x60, 0x30, 0x44, 0x33, 0xb1, 0x07, 0x30, 0x10, 0x91, 0x09, 0x34, 0x00, 0x12, 0xf9, 0x0c, 0x72, 0xf9, 0x15, 0x5e, 0xdc, 0xb6, 0x1d, 0x44, 0x00, 0x12, 0xf9, 0x05, 0x20, 0x4d, 0x7f, 0xc1, 0x20, 0x8d, 0x5f, 0xdc, 0xb6, 0x21, 0x44, 0x00, 0x12, 0xf9, 0x05, 0x20, 0x4d, 0x7f, 0xc1, 0x00, 0x97, 0x5f, 0xdc, 0x36, 0x00, 0x61, 0x20, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4c, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xb4, 0x8e, 0x45, 0x00, 0x81, 0x70, 0xcc, 0x41, 0x30, 0x8d, 0x14, 0x0a, 0x23, 0x00, 0x34, 0x16, 0x41, 0x09, 0x90, 0x38, 0xd6, 0x10, 0x04, 0xc1, 0x08, 0xc0, 0x58, 0xc3, 0x30, 0x0c, 0x64, 0x14, 0x43, 0x59, 0x14, 0x46, 0x39, 0xcc, 0x00, 0xd0, 0x53, 0x03, 0x23, 0x00, 0x04, 0x8d, 0x25, 0x00, 0xc1, 0x08, 0x00, 0x89, 0x63, 0x0d, 0x40, 0x20, 0xd0, 0x30, 0x03, 0x40, 0xc2, 0x08, 0xc0, 0x58, 0x02, 0x08, 0x82, 0x20, 0xfc, 0x81, 0x20, 0x08, 0xc2, 0xdf, 0x0c, 0x00, 0x05, 0x23, 0x00, 0x33, 0x00, 0x04, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xc2, 0xdf, 0x08, 0x00, 0x00, 0xd7, 0x85, 0x4b, 0x41, 0x19, 0x64, 0x08, 0x8a, 0x65, 0x90, 0x41, 0x0c, 0x90, 0xcb, 0x84, 0x40, 0x3e, 0xe3, 0x15, 0x62, 0x20, 0x07, 0xa8, 0x80, 0x0a, 0xdb, 0x05, 0xe1, 0x52, 0x50, 0x06, 0x19, 0x82, 0x25, 0x1a, 0x64, 0x40, 0x03, 0xc7, 0x33, 0x21, 0x90, 0x8f, 0x05, 0x07, 0x7c, 0xc6, 0x2b, 0xd2, 0x20, 0x0f, 0x5e, 0xe1, 0x15, 0xc6, 0xe0, 0x82, 0x70, 0x29, 0x28, 0x83, 0x0c, 0x81, 0x84, 0x59, 0x11, 0xc0, 0x67, 0x90, 0x21, 0xc8, 0xb8, 0x11, 0x03, 0x62, 0x08, 0x70, 0x21, 0x18, 0x6f, 0x80, 0x03, 0x50, 0xa0, 0x05, 0x0a, 0x8a, 0x0d, 0x41, 0x7c, 0xc6, 0x1b, 0xe6, 0x60, 0x14, 0x4a, 0x81, 0x02, 0x62, 0x43, 0x20, 0x1f, 0xfb, 0x82, 0xf8, 0x8c, 0x18, 0x10, 0x43, 0xf0, 0x0b, 0xc1, 0x18, 0x42, 0xe0, 0x0b, 0x63, 0x08, 0x82, 0x2f, 0x98, 0x10, 0xc8, 0x67, 0xb8, 0x21, 0xf8, 0x82, 0x59, 0x86, 0x25, 0x08, 0xc6, 0x1b, 0xf8, 0x80, 0x15, 0xde, 0x80, 0x82, 0x31, 0xcc, 0x61, 0x04, 0x07, 0x23, 0x34, 0xc3, 0x78, 0x83, 0x1f, 0xb8, 0xc2, 0x38, 0x5c, 0x10, 0x2e, 0x05, 0x65, 0x90, 0x21, 0x38, 0x83, 0x36, 0xb0, 0x40, 0x0c, 0xe4, 0x33, 0x5e, 0x31, 0x0a, 0xb3, 0x80, 0x0e, 0xe9, 0xc0, 0x07, 0x17, 0x84, 0x4b, 0x41, 0x19, 0x64, 0x08, 0xd8, 0x40, 0x0e, 0x2c, 0x08, 0x03, 0xf9, 0x58, 0x60, 0xc0, 0x67, 0xbc, 0x22, 0x15, 0x72, 0xc1, 0x1d, 0xde, 0x61, 0x14, 0x2e, 0x08, 0x97, 0x82, 0x32, 0xc8, 0x10, 0xc8, 0x01, 0x1e, 0x58, 0x11, 0xc0, 0x67, 0x90, 0x21, 0xc8, 0x03, 0x3e, 0x18, 0x6f, 0x78, 0x85, 0x5f, 0x90, 0x07, 0x0a, 0x86, 0x05, 0x76, 0x20, 0x9f, 0xf1, 0x06, 0x59, 0x10, 0x87, 0x53, 0xa0, 0xa0, 0x8c, 0x37, 0xd0, 0x02, 0x39, 0x98, 0x02, 0x05, 0x64, 0x8e, 0xc1, 0x0f, 0x02, 0x7e, 0x18, 0x64, 0x08, 0xfe, 0x80, 0x14, 0xac, 0x08, 0xe2, 0x33, 0x62, 0x40, 0x0c, 0x81, 0x48, 0x2c, 0x16, 0x08, 0xf1, 0x19, 0x43, 0x08, 0x42, 0x62, 0x0c, 0x41, 0x08, 0x89, 0x11, 0x83, 0x62, 0x08, 0x4e, 0x42, 0x08, 0x46, 0x0c, 0x8a, 0x21, 0x48, 0x89, 0x40, 0x14, 0x46, 0x0c, 0x8a, 0x21, 0x58, 0x89, 0x22, 0x15, 0x46, 0x0c, 0x8a, 0x21, 0x68, 0x89, 0x20, 0x18, 0x31, 0x20, 0x86, 0xe0, 0x25, 0x02, 0x8b, 0x9a, 0xf8, 0x58, 0x50, 0xc0, 0xc7, 0x82, 0x01, 0x3e, 0x16, 0x54, 0xf4, 0x19, 0x31, 0x20, 0x86, 0xa0, 0x26, 0x82, 0xf1, 0x86, 0x73, 0xb8, 0x87, 0x93, 0xa0, 0xa0, 0x8c, 0x37, 0xa4, 0x43, 0x3e, 0x9c, 0x04, 0x05, 0x65, 0x8e, 0x21, 0x16, 0x8a, 0x98, 0x18, 0x64, 0x08, 0x64, 0xe1, 0x1c, 0x46, 0x0c, 0x8c, 0x21, 0xe8, 0x89, 0x62, 0x08, 0xe6, 0x18, 0x68, 0x81, 0x0e, 0x68, 0x62, 0x90, 0x21, 0xa8, 0x05, 0x75, 0xb0, 0x21, 0x90, 0xcf, 0x2c, 0xc1, 0x32, 0xde, 0x10, 0x0f, 0x21, 0x61, 0x13, 0x17, 0x84, 0x4b, 0x41, 0x19, 0x64, 0x08, 0x74, 0x01, 0x1c, 0x2c, 0xa8, 0x05, 0xf9, 0x8c, 0x57, 0xd8, 0x83, 0x49, 0xec, 0x04, 0x4f, 0xbc, 0xc3, 0x05, 0xe1, 0x52, 0x50, 0x06, 0x19, 0x82, 0x5f, 0x28, 0x07, 0x0b, 0x68, 0x41, 0x3e, 0x16, 0x18, 0xf0, 0x19, 0xaf, 0xe0, 0x07, 0x96, 0x08, 0x0b, 0xb1, 0xb0, 0x87, 0x0b, 0xc2, 0xa5, 0xa0, 0x0c, 0x32, 0x04, 0xe5, 0xb0, 0x0e, 0x56, 0x04, 0xf0, 0x19, 0x64, 0x08, 0xd8, 0xe1, 0x1d, 0xc6, 0x1b, 0x44, 0x42, 0x26, 0xee, 0x81, 0x82, 0x62, 0x43, 0x40, 0x9f, 0x11, 0x03, 0x45, 0x08, 0xec, 0x82, 0x24, 0x46, 0x22, 0xa8, 0x07, 0x79, 0xa0, 0x87, 0x74, 0x18, 0x6f, 0x30, 0x09, 0x9b, 0xd0, 0x07, 0x0a, 0xc8, 0x30, 0x87, 0x11, 0x18, 0x0d, 0x21, 0x15, 0x83, 0x0c, 0x83, 0x3b, 0xd0, 0xc3, 0x20, 0x03, 0xf1, 0x0e, 0xff, 0x60, 0x42, 0x20, 0x9f, 0x41, 0x86, 0xc0, 0x1e, 0x4e, 0x62, 0x90, 0x21, 0x38, 0x52, 0x62, 0x96, 0xc0, 0x18, 0x64, 0x40, 0xe6, 0x01, 0x25, 0x66, 0x09, 0x8c, 0x81, 0x8e, 0x80, 0x20, 0x84, 0x42, 0x1a, 0xe6, 0x18, 0xea, 0xa1, 0x16, 0xea, 0x62, 0x90, 0x21, 0xb0, 0x87, 0x95, 0xb0, 0x21, 0x90, 0xcf, 0x78, 0x83, 0x4c, 0x88, 0x85, 0x5c, 0x50, 0x50, 0x6c, 0x08, 0xe4, 0x33, 0x4b, 0xb0, 0x8c, 0x18, 0x28, 0x42, 0x60, 0x1a, 0x34, 0x31, 0x13, 0x36, 0x51, 0x12, 0x22, 0x41, 0x12, 0xf9, 0x30, 0xde, 0x60, 0x13, 0x66, 0xa1, 0x12, 0x14, 0x90, 0x61, 0x0e, 0x23, 0x50, 0x1a, 0x44, 0x4a, 0x06, 0x19, 0x06, 0x7f, 0x20, 0x89, 0x41, 0x06, 0xe2, 0x1f, 0x5e, 0xc2, 0x84, 0x40, 0x3e, 0x83, 0x0c, 0x81, 0x49, 0xdc, 0xc4, 0x20, 0x43, 0x70, 0xe4, 0xc4, 0x2c, 0x81, 0x32, 0xc8, 0x80, 0x8c, 0x04, 0x4e, 0xcc, 0x12, 0x28, 0x03, 0x1d, 0x01, 0x81, 0x08, 0x89, 0x74, 0xcc, 0x31, 0x94, 0x44, 0x39, 0x94, 0xc6, 0x20, 0x43, 0x60, 0x12, 0x3b, 0x61, 0x43, 0x20, 0x9f, 0xf1, 0x06, 0xb1, 0x90, 0x0b, 0xd1, 0xa0, 0xa0, 0xd8, 0x10, 0xc8, 0x67, 0x96, 0x60, 0x19, 0x28, 0x09, 0xd4, 0x41, 0x10, 0x03, 0x43, 0x50, 0x70, 0x04, 0xc8, 0x20, 0x20, 0x06, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x2a, 0x90, 0x85, 0x2d, 0xc3, 0x15, 0xc8, 0xc2, 0x96, 0x21, 0x0c, 0x82, 0x5c, 0xd8, 0x32, 0xd4, 0x41, 0xa0, 0x0b, 0x5b, 0x06, 0x3c, 0x08, 0x64, 0x61, 0xcb, 0xa0, 0x07, 0xc1, 0x2e, 0x6c, 0x19, 0x54, 0x61, 0xe0, 0x85, 0x2d, 0x43, 0x2b, 0x04, 0xb2, 0xb0, 0x65, 0x78, 0x85, 0x40, 0x16, 0xb6, 0x0c, 0xe9, 0x10, 0xc8, 0xc2, 0x96, 0x41, 0x1d, 0x06, 0x5e, 0xd8, 0x32, 0xb4, 0x43, 0xd0, 0x0b, 0x5b, 0x06, 0x7e, 0x08, 0x64, 0x61, 0xcb, 0x10, 0x12, 0x41, 0x2f, 0x6c, 0x19, 0x60, 0x22, 0x90, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xd0, 0x12, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xb1, 0x04, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x49, 0x0a, 0x32, 0x44, 0x24, 0x48, 0x0a, 0x90, 0x21, 0x23, 0xc4, 0x52, 0x80, 0x0c, 0x19, 0x21, 0x72, 0x24, 0x07, 0xc8, 0x88, 0x11, 0x62, 0xa8, 0xa0, 0xa8, 0x40, 0xc6, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x51, 0x18, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x60, 0x00, 0x09, 0xa8, 0x88, 0x71, 0x78, 0x07, 0x79, 0x90, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x60, 0x87, 0x7c, 0x68, 0x03, 0x79, 0x78, 0x87, 0x7a, 0x70, 0x07, 0x72, 0x28, 0x07, 0x72, 0x68, 0x03, 0x72, 0x48, 0x07, 0x7b, 0x48, 0x07, 0x72, 0x28, 0x87, 0x36, 0x98, 0x87, 0x78, 0x90, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xc8, 0x21, 0x1d, 0xe6, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0xa1, 0x0d, 0xe8, 0x21, 0x1c, 0xd2, 0x81, 0x1d, 0xda, 0x60, 0x1c, 0xc2, 0x81, 0x1d, 0xd8, 0x61, 0x1e, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x76, 0x28, 0x87, 0x79, 0x98, 0x87, 0x36, 0x80, 0x07, 0x79, 0x28, 0x87, 0x71, 0x48, 0x87, 0x79, 0x28, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x87, 0x70, 0x20, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xcc, 0x41, 0x1e, 0xc2, 0xa1, 0x1d, 0xca, 0xa1, 0x0d, 0xe0, 0xe1, 0x1d, 0xd2, 0xc1, 0x1d, 0xe8, 0xa1, 0x1c, 0xe4, 0xa1, 0x0d, 0xca, 0x81, 0x1d, 0xd2, 0xa1, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x60, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x87, 0x36, 0x70, 0x87, 0x77, 0x70, 0x87, 0x36, 0x60, 0x87, 0x72, 0x08, 0x07, 0x73, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x48, 0x07, 0x77, 0x30, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd4, 0xa1, 0x1e, 0xda, 0x01, 0x1e, 0xda, 0x80, 0x1e, 0xc2, 0x41, 0x1c, 0xd8, 0xa1, 0x1c, 0xe6, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x77, 0x08, 0x07, 0x77, 0x98, 0x87, 0x36, 0x30, 0x07, 0x78, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0x60, 0x1e, 0xd2, 0xe1, 0x1c, 0xdc, 0xa1, 0x1c, 0xc8, 0xa1, 0x0d, 0xf4, 0xa1, 0x1c, 0xe4, 0xe1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0xa0, 0x07, 0x79, 0x08, 0x07, 0x78, 0x80, 0x87, 0x74, 0x70, 0x87, 0x73, 0x68, 0x83, 0x76, 0x08, 0x07, 0x7a, 0x40, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x20, 0xe6, 0x81, 0x1e, 0xc2, 0x61, 0x1c, 0xd6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xde, 0x81, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0xa1, 0x0d, 0xc4, 0xa1, 0x1e, 0xcc, 0xc1, 0x1c, 0xca, 0x41, 0x1e, 0xda, 0x60, 0x1e, 0xd2, 0x41, 0x1f, 0xca, 0x01, 0xc0, 0x03, 0x80, 0xa8, 0x07, 0x77, 0x98, 0x87, 0x70, 0x30, 0x87, 0x72, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xa2, 0x1e, 0xe6, 0xa1, 0x1c, 0xda, 0x60, 0x1e, 0xde, 0xc1, 0x1c, 0xe8, 0xa1, 0x0d, 0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x60, 0x03, 0x21, 0x10, 0x40, 0xb5, 0xc1, 0x18, 0x0c, 0x60, 0x01, 0xaa, 0x0d, 0x08, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0x00, 0x12, 0x50, 0x6d, 0x30, 0x8a, 0x00, 0x58, 0x80, 0x6a, 0x83, 0x61, 0x08, 0xc0, 0x02, 0x54, 0x1b, 0x8c, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0x28, 0x00, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x0c, 0x44, 0x61, 0x4c, 0x08, 0x0e, 0x00, 0x89, 0x20, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xb0, 0xc1, 0x0c, 0xc0, 0x30, 0x02, 0x01, 0x0c, 0x23, 0x08, 0xc0, 0x30, 0xc2, 0x00, 0xe4, 0xc0, 0x30, 0x13, 0x35, 0x0f, 0xf4, 0x20, 0x0f, 0xf5, 0x30, 0x0e, 0xf4, 0xe0, 0x06, 0xed, 0x50, 0x0e, 0xf4, 0x10, 0x0e, 0xec, 0xa0, 0x07, 0x7a, 0xd0, 0x0e, 0xe1, 0x40, 0x0f, 0xf2, 0x90, 0x0e, 0xf8, 0x80, 0x02, 0x62, 0x8e, 0x00, 0x0c, 0xee, 0x91, 0xa6, 0x88, 0x12, 0x26, 0xdf, 0x6d, 0x90, 0xc2, 0x89, 0x18, 0x09, 0x35, 0x45, 0x11, 0x04, 0x82, 0x20, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x20, 0xc2, 0x21, 0x1c, 0x25, 0x4d, 0x11, 0x25, 0x4c, 0xfe, 0x3f, 0x11, 0xd7, 0x44, 0x45, 0xc4, 0x6f, 0x0f, 0xff, 0x34, 0x46, 0x00, 0x0c, 0x22, 0x24, 0xc1, 0x45, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xff, 0x12, 0xc0, 0x3c, 0x0b, 0x11, 0xfd, 0xd3, 0x18, 0x01, 0x30, 0x88, 0xb0, 0x08, 0xe5, 0x08, 0x02, 0x41, 0x40, 0x14, 0x86, 0x9a, 0x39, 0x82, 0x60, 0x18, 0x41, 0x30, 0x0a, 0x12, 0x28, 0x8c, 0xf0, 0x40, 0x0f, 0x40, 0x51, 0x21, 0x82, 0x20, 0x08, 0x68, 0x2a, 0x02, 0x00, 0x50, 0x55, 0x06, 0x40, 0x10, 0xe8, 0x2a, 0x83, 0x20, 0x08, 0x94, 0x95, 0x01, 0x00, 0x00, 0xda, 0x8a, 0x20, 0x08, 0xd4, 0x0d, 0x04, 0xa4, 0x80, 0x31, 0x88, 0x10, 0x08, 0xc3, 0x08, 0x83, 0x31, 0x47, 0x00, 0x0a, 0x83, 0x08, 0x83, 0x30, 0x88, 0x20, 0x08, 0x53, 0x00, 0x23, 0x00, 0x83, 0x08, 0x86, 0x30, 0x8c, 0x40, 0x18, 0x83, 0x08, 0x80, 0x30, 0x88, 0x50, 0x08, 0x00, 0x00, 0x00, 0x00, 0x13, 0xb2, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x83, 0x76, 0x08, 0x87, 0x71, 0x78, 0x87, 0x79, 0xc0, 0x87, 0x38, 0x80, 0x03, 0x37, 0x88, 0x83, 0x38, 0x70, 0x03, 0x38, 0xd8, 0x70, 0x1b, 0xe5, 0xd0, 0x06, 0xf0, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x90, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x40, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x74, 0x80, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x79, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x79, 0x20, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0x30, 0x84, 0x71, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc2, 0x48, 0x40, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x61, 0x28, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x30, 0x16, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x18, 0x0b, 0x08, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x0c, 0x06, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x10, 0x46, 0x03, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0xc3, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x84, 0xe1, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc2, 0x78, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x61, 0x2c, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x30, 0x1e, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x1a, 0x0b, 0x54, 0x80, 0x8c, 0x11, 0x80, 0x12, 0x28, 0x84, 0x82, 0x28, 0xb0, 0x02, 0x29, 0x82, 0x02, 0x17, 0x28, 0x83, 0x02, 0x0e, 0x28, 0xf0, 0x80, 0x02, 0x14, 0x28, 0x48, 0x81, 0x02, 0x15, 0x28, 0x58, 0x81, 0xc2, 0x15, 0x28, 0x60, 0x81, 0x42, 0x16, 0x28, 0x68, 0x81, 0xc2, 0x16, 0x28, 0x05, 0x1a, 0x0b, 0x52, 0x60, 0x04, 0xa0, 0x60, 0x05, 0x0a, 0x57, 0xa0, 0x80, 0x05, 0x0a, 0x59, 0xa0, 0xa0, 0x05, 0x0a, 0x5b, 0xa0, 0xc0, 0x0a, 0x38, 0xa0, 0xc0, 0x03, 0x0a, 0x50, 0x80, 0xc0, 0xb1, 0x04, 0xe5, 0x21, 0x60, 0x8c, 0x00, 0x04, 0x41, 0x50, 0x04, 0x03, 0x00, 0x79, 0x18, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x10, 0x97, 0x29, 0xa2, 0x25, 0x10, 0xab, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x21, 0x86, 0x31, 0x7d, 0x00, 0x18, 0xb8, 0x01, 0x95, 0xbb, 0x31, 0xb4, 0x30, 0xb9, 0xaf, 0xb9, 0x34, 0xbd, 0xb2, 0x21, 0x86, 0xe1, 0x7c, 0x82, 0xf1, 0x90, 0x0d, 0x82, 0xe0, 0xe0, 0xd8, 0xca, 0x40, 0x98, 0x98, 0xac, 0x9a, 0x40, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x40, 0x72, 0x60, 0x64, 0x5c, 0x62, 0x62, 0x40, 0x50, 0xda, 0xca, 0xe8, 0xc2, 0xd8, 0xcc, 0xca, 0x5a, 0x72, 0x60, 0x64, 0x5c, 0x62, 0x62, 0x5c, 0x62, 0x52, 0x86, 0x08, 0x1f, 0x31, 0xc4, 0x30, 0x1c, 0x03, 0x32, 0x1a, 0x16, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x43, 0x90, 0xef, 0x30, 0x1c, 0xc3, 0x31, 0x1a, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0x2f, 0x21, 0x17, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0x62, 0x16, 0x36, 0x47, 0xf7, 0xd5, 0x16, 0x46, 0x87, 0xf6, 0x55, 0xe6, 0x16, 0x26, 0xc6, 0x56, 0x36, 0x44, 0xf8, 0x16, 0x96, 0x41, 0x58, 0x9a, 0x9c, 0xcb, 0xd8, 0x5b, 0x1b, 0x5c, 0x1a, 0x5b, 0x99, 0x8b, 0x99, 0x5c, 0x58, 0x5b, 0x99, 0x58, 0x9d, 0x99, 0x59, 0x99, 0xdc, 0x97, 0x59, 0x19, 0xdd, 0x18, 0xda, 0x17, 0x59, 0xda, 0x5c, 0x98, 0x18, 0x5b, 0xd9, 0x10, 0xe1, 0x6b, 0x18, 0x06, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x84, 0xef, 0x21, 0x19, 0x84, 0xa5, 0xc9, 0xb9, 0x8c, 0xbd, 0xb5, 0xc1, 0xa5, 0xb1, 0x95, 0xb9, 0xb8, 0x85, 0xd1, 0xa5, 0xd9, 0x95, 0x7d, 0xb1, 0xbd, 0xb9, 0x9d, 0x7d, 0xb1, 0xbd, 0xb9, 0x9d, 0x7d, 0x91, 0xa5, 0xcd, 0x85, 0x89, 0xb1, 0x95, 0x0d, 0x11, 0xbe, 0x88, 0x67, 0x10, 0x96, 0x26, 0xe7, 0x32, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0xe6, 0xe2, 0x16, 0x46, 0x97, 0x66, 0x57, 0xf6, 0x75, 0x97, 0x46, 0x56, 0xf6, 0x65, 0x57, 0x36, 0x46, 0xf7, 0x26, 0x37, 0xf7, 0x45, 0x96, 0x36, 0x17, 0x26, 0xc6, 0x56, 0x36, 0x44, 0xf8, 0x26, 0x46, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x8c, 0xc2, 0xd2, 0xe4, 0x5c, 0xc2, 0xe4, 0xce, 0xbe, 0xe8, 0xf2, 0xe0, 0xca, 0xbe, 0xdc, 0xc2, 0xda, 0xca, 0x68, 0x98, 0xb1, 0xbd, 0x85, 0xd1, 0xd1, 0x0c, 0x41, 0xbe, 0xca, 0x68, 0x3e, 0xeb, 0xbb, 0x86, 0x08, 0x1f, 0x46, 0x26, 0x2c, 0x4d, 0xce, 0x05, 0xee, 0x6d, 0x2e, 0x8d, 0x2e, 0xed, 0xcd, 0x8d, 0x4a, 0x58, 0x9a, 0x9c, 0xcb, 0x58, 0x99, 0x1b, 0x5d, 0x99, 0x1c, 0xa5, 0xb0, 0x34, 0x39, 0x17, 0xb7, 0xb7, 0x2f, 0xb8, 0x32, 0xb9, 0x39, 0xb8, 0xb2, 0x31, 0xba, 0x34, 0xbb, 0x32, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1c, 0xe0, 0xde, 0xe6, 0x86, 0x40, 0x46, 0xf3, 0x69, 0xdf, 0xf6, 0x71, 0x9f, 0xf5, 0x5d, 0x5f, 0xf7, 0x79, 0x94, 0xc2, 0xd2, 0xe4, 0x5c, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xbe, 0xd2, 0xdc, 0xe0, 0xea, 0xe8, 0x58, 0x9d, 0x95, 0xb9, 0x95, 0xc9, 0x85, 0xd1, 0x95, 0x91, 0xa1, 0xd0, 0x98, 0xc1, 0xbd, 0xcd, 0x11, 0xd9, 0xc9, 0x7c, 0x99, 0xa5, 0xf0, 0x09, 0x4b, 0x93, 0x73, 0x81, 0x2b, 0x93, 0x9b, 0x83, 0x2b, 0x1b, 0xa3, 0x4b, 0xb3, 0x2b, 0xa3, 0x61, 0xc6, 0xf6, 0x16, 0x46, 0x27, 0x43, 0xc2, 0x0c, 0xee, 0x6d, 0x6e, 0x88, 0x64, 0x38, 0x1f, 0x18, 0x7c, 0x61, 0xf0, 0x6d, 0x9f, 0x18, 0x7c, 0xd6, 0x37, 0x06, 0x5f, 0xf7, 0x91, 0x01, 0xb1, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xba, 0x32, 0x32, 0x94, 0x1b, 0x33, 0xba, 0xb1, 0xb7, 0x37, 0x39, 0x32, 0x22, 0x3b, 0x99, 0x2f, 0xb3, 0x14, 0x1e, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x43, 0x24, 0x63, 0xfa, 0xc0, 0xe0, 0x33, 0x83, 0x6f, 0xfb, 0xc4, 0xe0, 0xb3, 0xbe, 0x31, 0xf8, 0xba, 0xef, 0x0c, 0xa8, 0x84, 0xa5, 0xc9, 0xb9, 0x88, 0xd5, 0x99, 0x99, 0x95, 0xc9, 0xf1, 0x09, 0x4b, 0x93, 0x73, 0x11, 0xab, 0x33, 0x33, 0x2b, 0x93, 0xfb, 0x9a, 0x4b, 0xd3, 0x2b, 0xa3, 0x14, 0x96, 0x26, 0xe7, 0xc2, 0xf6, 0x36, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0xf6, 0x95, 0xe6, 0x46, 0x56, 0x86, 0x47, 0x24, 0x2c, 0x4d, 0xce, 0x45, 0xae, 0x2c, 0x8c, 0x8c, 0x54, 0x58, 0x9a, 0x9c, 0xcb, 0x1c, 0x9d, 0x5c, 0xdd, 0x18, 0xdd, 0x17, 0x5d, 0x1e, 0x5c, 0xd9, 0x57, 0x9a, 0x9b, 0xd9, 0x1b, 0x11, 0x33, 0xb6, 0xb7, 0x30, 0xba, 0x19, 0xbc, 0x19, 0x2a, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x44, 0xe0, 0xc2, 0xd2, 0xdc, 0xe8, 0x9a, 0xc2, 0xe8, 0x88, 0xa4, 0xb9, 0xb9, 0x95, 0xc9, 0x0d, 0xbd, 0xb1, 0x11, 0x79, 0xab, 0xa3, 0x2b, 0x93, 0x1b, 0x7a, 0x63, 0xa3, 0x32, 0x37, 0x96, 0x36, 0x37, 0xf7, 0x26, 0x57, 0x84, 0x47, 0x47, 0x66, 0x6e, 0x2c, 0x6d, 0x6e, 0xee, 0x4d, 0x6e, 0x6a, 0x2c, 0x8c, 0xad, 0x8c, 0x46, 0x19, 0x1e, 0x5d, 0x99, 0x1b, 0x1d, 0x0b, 0x33, 0xb6, 0xb7, 0x30, 0x3a, 0x1a, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3c, 0xcc, 0xca, 0xc2, 0xe8, 0xd0, 0xca, 0xe4, 0xa8, 0xcc, 0xd1, 0xc9, 0xbd, 0xad, 0x95, 0x35, 0xd5, 0xb1, 0xd1, 0x31, 0x99, 0xa3, 0x93, 0x7b, 0x5b, 0x2b, 0xa3, 0x42, 0x93, 0xe3, 0x90, 0xe6, 0x46, 0xc7, 0x83, 0xae, 0x0c, 0x8f, 0x2a, 0x0f, 0xae, 0x8c, 0x04, 0x5d, 0x1e, 0x5c, 0xd9, 0x10, 0x91, 0x30, 0x1a, 0x23, 0x32, 0x9a, 0xcf, 0x0d, 0xbe, 0x37, 0x30, 0x22, 0x23, 0x32, 0x9a, 0xcf, 0x0d, 0x3e, 0x38, 0x30, 0x2c, 0x43, 0x32, 0x9a, 0xef, 0xfa, 0xe2, 0xc0, 0xb8, 0x0c, 0xc9, 0x68, 0xbe, 0xeb, 0x93, 0x03, 0x03, 0x33, 0x20, 0xa3, 0xf9, 0xc6, 0xe0, 0x9b, 0x03, 0x23, 0x33, 0x20, 0xa3, 0xf9, 0xc6, 0xe0, 0xa3, 0x03, 0x43, 0x33, 0x20, 0xa3, 0xf9, 0xc6, 0xe0, 0xab, 0x03, 0x63, 0x33, 0x1e, 0xa3, 0xf9, 0xec, 0xe0, 0xbb, 0x03, 0x83, 0x33, 0x1e, 0xa3, 0xf9, 0xec, 0xe0, 0xc3, 0x03, 0xa3, 0x33, 0x1e, 0xa3, 0xf9, 0xec, 0xe0, 0xcb, 0x03, 0xc3, 0x33, 0x1e, 0xa3, 0xf9, 0xec, 0xe0, 0xd3, 0x03, 0xe3, 0x33, 0x1e, 0xa3, 0xf9, 0xf6, 0xe0, 0xe3, 0x03, 0x03, 0x0c, 0x8c, 0xc7, 0x68, 0xbe, 0x3d, 0xf8, 0xfa, 0x80, 0x51, 0x58, 0x9a, 0x9c, 0x4b, 0x98, 0xdc, 0xd9, 0x17, 0x5d, 0x1e, 0x5c, 0xd9, 0xd7, 0x5c, 0x9a, 0x5e, 0x19, 0xaf, 0xb0, 0x34, 0x39, 0x97, 0x30, 0xb9, 0xb3, 0x2f, 0xba, 0x3c, 0xb8, 0xb2, 0xaf, 0x30, 0xb6, 0xb4, 0x33, 0xb7, 0xaf, 0xb9, 0x34, 0xbd, 0x32, 0x22, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x44, 0xea, 0xdc, 0xd2, 0xcc, 0xde, 0xe4, 0xda, 0xe6, 0x86, 0x90, 0x81, 0x51, 0x7d, 0x69, 0xf0, 0xa9, 0x81, 0x41, 0x7d, 0x6b, 0x60, 0x34, 0x86, 0xf3, 0xb1, 0xc1, 0xd7, 0x06, 0x9f, 0x1f, 0x7c, 0x7f, 0x60, 0x50, 0x1f, 0x28, 0x18, 0xd2, 0x67, 0x7d, 0xa1, 0xf0, 0x75, 0x9f, 0x28, 0x70, 0x09, 0x4b, 0x93, 0x73, 0xa1, 0x2b, 0xc3, 0xa3, 0xab, 0x93, 0x2b, 0xa3, 0x12, 0x96, 0x26, 0xe7, 0x32, 0x17, 0xd6, 0x06, 0xc7, 0x56, 0x46, 0x8c, 0xae, 0x0c, 0x8f, 0xae, 0x4e, 0xae, 0x4c, 0x86, 0x8c, 0xc7, 0x8c, 0xed, 0x2d, 0x8c, 0x8e, 0x05, 0x64, 0x2e, 0xac, 0x0d, 0x8e, 0xad, 0xcc, 0x87, 0x07, 0x5d, 0x19, 0x1e, 0x5d, 0x9d, 0x5c, 0xd9, 0x10, 0xca, 0x78, 0x3e, 0x52, 0xf8, 0xd6, 0xc0, 0x68, 0x0c, 0xe7, 0x2b, 0x85, 0xcf, 0xfa, 0x4c, 0xe1, 0xeb, 0xbe, 0x53, 0xe0, 0x12, 0x96, 0x26, 0xe7, 0x32, 0x17, 0xd6, 0x06, 0xc7, 0x56, 0x26, 0xc7, 0x63, 0x2e, 0xac, 0x0d, 0x8e, 0xad, 0x4c, 0x6e, 0x88, 0x64, 0x84, 0xc1, 0x97, 0x0a, 0xdf, 0x1a, 0x18, 0x8d, 0xe1, 0x7c, 0xd6, 0xa7, 0x0a, 0x5f, 0xf7, 0xa9, 0xc2, 0x10, 0xe6, 0xfb, 0xbe, 0x32, 0xf8, 0xd0, 0xe0, 0x1b, 0x85, 0x0f, 0x15, 0xbe, 0x55, 0x18, 0x62, 0x38, 0xc0, 0x97, 0x7d, 0xac, 0xc0, 0xe7, 0xad, 0xcd, 0x2d, 0x0d, 0xee, 0x8d, 0xae, 0xcc, 0x8d, 0x0e, 0x64, 0x0c, 0x2d, 0x4c, 0x8e, 0xcf, 0x54, 0x5a, 0x1b, 0x1c, 0x5b, 0x19, 0xc8, 0xd0, 0xca, 0x0a, 0x08, 0x95, 0x50, 0x50, 0xd0, 0x10, 0xe1, 0x7b, 0x85, 0x21, 0xc6, 0xe7, 0x0a, 0x1f, 0x2c, 0x8c, 0xc1, 0x18, 0x0c, 0x31, 0xbe, 0x58, 0xf8, 0x62, 0x61, 0x0c, 0xc6, 0x80, 0xcd, 0x97, 0x16, 0xd5, 0x14, 0x4e, 0x95, 0x5b, 0x9a, 0xd9, 0x9b, 0x5c, 0xdb, 0x1c, 0xbf, 0x2f, 0x2d, 0xaa, 0x29, 0xa7, 0x9a, 0xb6, 0x32, 0xba, 0x30, 0x36, 0x9b, 0xb6, 0x30, 0x3a, 0xb9, 0x34, 0xbc, 0x24, 0x33, 0xa6, 0xb4, 0x99, 0x22, 0xa6, 0xb4, 0x99, 0x22, 0xbb, 0xa2, 0xa2, 0x21, 0xc6, 0x47, 0x0b, 0x5f, 0x2c, 0x8c, 0xc1, 0x18, 0x0c, 0x31, 0x3e, 0x3b, 0xf8, 0x62, 0x61, 0x0c, 0xc6, 0x60, 0x88, 0xf1, 0xed, 0xc1, 0x17, 0x0b, 0x63, 0x30, 0x06, 0x43, 0xec, 0xe0, 0x9b, 0x85, 0xaf, 0x16, 0xc6, 0x60, 0x0c, 0xbe, 0x5a, 0x18, 0x03, 0x35, 0xf8, 0x62, 0x61, 0x0c, 0xd6, 0xe0, 0x8b, 0x85, 0x31, 0x60, 0x83, 0x2f, 0x16, 0xc6, 0xa0, 0x0d, 0xbe, 0x58, 0x18, 0x03, 0x31, 0xf8, 0x62, 0x61, 0x0c, 0x98, 0xcf, 0x16, 0xc6, 0x80, 0x0c, 0x3e, 0x5b, 0x18, 0x83, 0x32, 0xf8, 0x6c, 0x61, 0x0c, 0xcc, 0xe0, 0xb3, 0x85, 0x31, 0x38, 0x83, 0xef, 0x16, 0xc6, 0x00, 0x0d, 0xbe, 0x5b, 0x18, 0x83, 0x34, 0x18, 0x62, 0x7c, 0xb8, 0xf0, 0xdd, 0xc2, 0x18, 0xa4, 0xc1, 0x10, 0xe3, 0xc3, 0x85, 0xef, 0x16, 0xc6, 0x00, 0x0d, 0x86, 0x18, 0x1f, 0x2e, 0x7c, 0xb6, 0x30, 0x06, 0x66, 0x30, 0xc4, 0xf8, 0x70, 0xe1, 0xb3, 0x85, 0x31, 0x38, 0x83, 0x21, 0xc6, 0x87, 0x0b, 0x9f, 0x2d, 0x8c, 0x41, 0x19, 0x0c, 0x31, 0x3e, 0x5c, 0xf8, 0x6c, 0x61, 0x0c, 0xc8, 0x60, 0x88, 0x00, 0xbc, 0xc1, 0x88, 0x88, 0x1d, 0xd8, 0xc1, 0x1e, 0xda, 0xc1, 0x0d, 0xda, 0xe1, 0x1d, 0xc8, 0xa1, 0x1e, 0xd8, 0xa1, 0x1c, 0xdc, 0xc0, 0x1c, 0xd8, 0x21, 0x1c, 0xce, 0x61, 0x1e, 0xa6, 0x08, 0xc1, 0x30, 0x42, 0x61, 0x07, 0x76, 0xb0, 0x87, 0x76, 0x70, 0x83, 0x74, 0x20, 0x87, 0x72, 0x70, 0x07, 0x7a, 0x98, 0x12, 0x14, 0x23, 0x96, 0x70, 0x48, 0x07, 0x79, 0x70, 0x03, 0x7b, 0x28, 0x07, 0x79, 0x98, 0x87, 0x74, 0x78, 0x07, 0x77, 0x98, 0x12, 0x18, 0x23, 0xa8, 0x70, 0x48, 0x07, 0x79, 0x70, 0x03, 0x76, 0x08, 0x07, 0x77, 0x38, 0x87, 0x7a, 0x08, 0x87, 0x73, 0x28, 0x87, 0x5f, 0xb0, 0x87, 0x72, 0x90, 0x87, 0x79, 0x48, 0x87, 0x77, 0x70, 0x87, 0x29, 0x01, 0x32, 0x62, 0x0a, 0x87, 0x74, 0x90, 0x07, 0x37, 0x18, 0x87, 0x77, 0x68, 0x07, 0x78, 0x48, 0x07, 0x76, 0x28, 0x87, 0x5f, 0x78, 0x07, 0x78, 0xa0, 0x87, 0x74, 0x78, 0x07, 0x77, 0x98, 0x87, 0x29, 0x86, 0xc2, 0x38, 0x90, 0x44, 0x8d, 0x60, 0xc2, 0x21, 0x1d, 0xe4, 0xc1, 0x0d, 0xcc, 0x41, 0x1e, 0xc2, 0xe1, 0x1c, 0xda, 0xa1, 0x1c, 0xdc, 0x81, 0x1e, 0xa6, 0x04, 0xad, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x76, 0x10, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x05, 0x83, 0x34, 0x7e, 0x71, 0xdb, 0xb6, 0x70, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x30, 0x51, 0x11, 0x30, 0x11, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x05, 0x0d, 0x80, 0x44, 0xfe, 0xe0, 0x4c, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x01, 0x1b, 0x80, 0x44, 0xbe, 0x04, 0x30, 0xcf, 0x42, 0xfc, 0x13, 0x71, 0x4d, 0x54, 0x44, 0xfc, 0xf6, 0xe0, 0x57, 0x78, 0x71, 0xdb, 0x66, 0x30, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x05, 0x03, 0x5c, 0x7e, 0x65, 0x17, 0xb7, 0x6d, 0x09, 0x13, 0x80, 0x44, 0x7e, 0x01, 0x48, 0xd3, 0x5f, 0x00, 0x81, 0xe4, 0x57, 0x76, 0x71, 0xdb, 0x36, 0x50, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x30, 0x51, 0x11, 0x30, 0x11, 0x7e, 0x71, 0xdb, 0x46, 0x10, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x12, 0x14, 0x4d, 0x7e, 0x71, 0xdb, 0x26, 0xd0, 0x00, 0x48, 0xe4, 0x33, 0xc8, 0xe5, 0x57, 0x78, 0x71, 0xdb, 0x86, 0x10, 0x01, 0x48, 0xe4, 0x17, 0x80, 0x34, 0xfd, 0x05, 0x03, 0x5c, 0x7e, 0x71, 0xdb, 0x06, 0x00, 0x15, 0x11, 0x60, 0x30, 0x44, 0x33, 0xb1, 0x07, 0x30, 0x10, 0x91, 0xa6, 0x99, 0x42, 0x04, 0x20, 0x91, 0x5f, 0x00, 0xd2, 0xf4, 0x17, 0x40, 0x20, 0xf9, 0xc5, 0x6d, 0x03, 0x61, 0x20, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4e, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x94, 0x8e, 0x45, 0x00, 0x81, 0x70, 0xcc, 0x41, 0x34, 0xce, 0x44, 0x0a, 0x23, 0x00, 0x34, 0x16, 0x41, 0x09, 0x90, 0x38, 0xd6, 0x10, 0x04, 0xc1, 0x08, 0xc0, 0x58, 0xc3, 0x30, 0x0c, 0x63, 0x0d, 0x40, 0x20, 0x10, 0x34, 0x96, 0x00, 0x04, 0x23, 0x00, 0x64, 0x94, 0x45, 0x31, 0x14, 0xc6, 0x0c, 0x40, 0x49, 0x14, 0x45, 0x39, 0xd0, 0x53, 0x03, 0x23, 0x00, 0x34, 0xcc, 0x00, 0x90, 0x30, 0x02, 0x30, 0x96, 0x00, 0x82, 0x20, 0x08, 0x7f, 0x20, 0x08, 0x82, 0xf0, 0x37, 0x03, 0x40, 0xc1, 0x08, 0xc0, 0x0c, 0x00, 0x01, 0x63, 0x04, 0x20, 0x08, 0x82, 0xf0, 0x37, 0x46, 0x00, 0x82, 0x20, 0x88, 0xff, 0xc2, 0x18, 0x01, 0x08, 0x82, 0x20, 0x08, 0x06, 0x63, 0x04, 0x20, 0x08, 0x82, 0xf8, 0x37, 0x02, 0x00, 0x00, 0x00, 0x27, 0x06, 0xe1, 0x52, 0x50, 0x06, 0x19, 0x02, 0x24, 0x1b, 0x64, 0x38, 0x83, 0x85, 0x33, 0x21, 0x90, 0xcf, 0x78, 0xc5, 0x19, 0xdc, 0x41, 0x2b, 0xb4, 0x02, 0x18, 0x5c, 0x10, 0x2e, 0x05, 0x65, 0x90, 0x21, 0x70, 0xbe, 0x41, 0x86, 0x36, 0x88, 0xc6, 0xc0, 0x84, 0x40, 0x3e, 0x16, 0x1c, 0xf0, 0x19, 0xaf, 0x70, 0x03, 0x3f, 0xa0, 0x05, 0x5a, 0x40, 0x83, 0x0b, 0xc2, 0xa5, 0xa0, 0x0c, 0x32, 0x04, 0x95, 0x19, 0x58, 0x11, 0xc0, 0x67, 0x90, 0x21, 0xe0, 0xce, 0x60, 0xc4, 0x80, 0x18, 0x02, 0x5f, 0x08, 0xc6, 0x1b, 0xea, 0xa0, 0x14, 0x72, 0x81, 0x82, 0x62, 0x43, 0x10, 0x9f, 0xf1, 0x06, 0x3c, 0x40, 0x05, 0x55, 0xa0, 0x80, 0xd8, 0x10, 0xc8, 0xc7, 0xc4, 0x20, 0x88, 0xcf, 0x88, 0x01, 0x31, 0x04, 0xe4, 0x10, 0x8c, 0x21, 0x04, 0xe3, 0x30, 0x86, 0x20, 0x8c, 0x83, 0x09, 0x81, 0x7c, 0x86, 0x1b, 0x82, 0x2f, 0x98, 0x65, 0x68, 0x82, 0x60, 0xbc, 0x21, 0x14, 0x62, 0x21, 0x0e, 0x28, 0x18, 0xc3, 0x0d, 0xc1, 0x38, 0x80, 0xc1, 0x2c, 0x83, 0x60, 0x04, 0x23, 0x06, 0x8a, 0x10, 0xd8, 0xc3, 0x28, 0x88, 0x42, 0x29, 0xbc, 0xc1, 0x1d, 0xb8, 0xc1, 0x18, 0x8c, 0x37, 0x94, 0x42, 0x2d, 0xdc, 0x01, 0x05, 0x64, 0x98, 0xc3, 0x08, 0x0a, 0x67, 0x98, 0x88, 0x41, 0x86, 0x61, 0x0d, 0xf8, 0x60, 0x90, 0x81, 0x60, 0x03, 0x3f, 0x30, 0x21, 0x90, 0xcf, 0x20, 0x43, 0x30, 0x07, 0xa6, 0x30, 0xc8, 0x10, 0x1c, 0xa8, 0x30, 0x4b, 0x50, 0x0c, 0x32, 0x20, 0x70, 0x70, 0x0a, 0xb3, 0x04, 0xc5, 0x40, 0x47, 0x40, 0x0c, 0x02, 0x21, 0x09, 0x73, 0x0c, 0x72, 0xf0, 0xd0, 0xc3, 0x20, 0x43, 0x30, 0x07, 0xaa, 0x60, 0x43, 0x20, 0x9f, 0xf1, 0x86, 0x58, 0x08, 0x87, 0x78, 0xa0, 0xa0, 0xd8, 0x10, 0xc8, 0x67, 0x96, 0xa0, 0x19, 0x43, 0xa8, 0x05, 0x7d, 0xb0, 0xc0, 0x0e, 0xe4, 0x63, 0x01, 0x1e, 0xc0, 0x67, 0xc4, 0x80, 0x18, 0x02, 0x90, 0x08, 0x0c, 0x0f, 0x82, 0xf8, 0x8c, 0x37, 0xe4, 0x42, 0x3a, 0x9c, 0x02, 0x05, 0xc5, 0x86, 0x40, 0x3e, 0x23, 0x06, 0xc5, 0x10, 0xa0, 0x04, 0x1f, 0x04, 0x63, 0x08, 0xbe, 0x20, 0x12, 0x23, 0x06, 0xc5, 0x10, 0xa8, 0x84, 0x1f, 0x04, 0x16, 0x0c, 0xf2, 0x19, 0x6f, 0x00, 0x07, 0x78, 0x68, 0x05, 0x0a, 0xc6, 0x70, 0xc3, 0x10, 0x10, 0xb3, 0x0c, 0xcd, 0x11, 0x0c, 0x37, 0x84, 0x41, 0x4a, 0x80, 0xc1, 0x78, 0x03, 0x39, 0xd0, 0x43, 0x4a, 0x5c, 0x10, 0x2e, 0x05, 0x65, 0x90, 0x21, 0x58, 0x05, 0x5e, 0xb0, 0x60, 0x14, 0xe4, 0x33, 0x5e, 0x91, 0x0e, 0xf9, 0xe0, 0x12, 0x2f, 0x21, 0x0e, 0x17, 0x84, 0x4b, 0x41, 0x19, 0x64, 0x08, 0x60, 0x21, 0x1c, 0x2c, 0x10, 0x05, 0xf9, 0x58, 0x60, 0xc0, 0x67, 0xbc, 0xe2, 0x1d, 0xfe, 0x81, 0x26, 0x6a, 0x22, 0x1d, 0x2e, 0x08, 0x97, 0x82, 0x32, 0xc8, 0x10, 0xd8, 0xc2, 0x39, 0x58, 0x11, 0xc0, 0x67, 0x90, 0x21, 0xe8, 0x05, 0x74, 0x98, 0x65, 0x40, 0x12, 0x69, 0xbc, 0xa1, 0x1e, 0x4a, 0x02, 0x27, 0x28, 0x18, 0x16, 0xe8, 0x82, 0x7c, 0xc6, 0x1b, 0xf0, 0x01, 0x25, 0xd2, 0x81, 0x82, 0x32, 0xde, 0xa0, 0x0f, 0x2a, 0x61, 0x0e, 0x14, 0x90, 0x39, 0x06, 0x71, 0x08, 0xc4, 0x62, 0x90, 0x21, 0x18, 0x07, 0x78, 0xb0, 0x22, 0x88, 0xcf, 0x88, 0x01, 0x31, 0x04, 0x69, 0xb1, 0x58, 0x20, 0xc4, 0x67, 0x0c, 0x21, 0x38, 0x8b, 0x31, 0x04, 0xe1, 0x2c, 0x46, 0x0c, 0x8a, 0x21, 0x70, 0x0b, 0x21, 0x18, 0x31, 0x28, 0x86, 0x00, 0x2e, 0x82, 0x71, 0x18, 0x31, 0x28, 0x86, 0x40, 0x2e, 0x8a, 0x76, 0x18, 0x31, 0x28, 0x86, 0x80, 0x2e, 0x82, 0x60, 0xc4, 0x80, 0x18, 0x02, 0xbb, 0x08, 0x2c, 0x6a, 0xe2, 0x63, 0x41, 0x01, 0x1f, 0x0b, 0x06, 0xf8, 0x58, 0x50, 0xd1, 0x67, 0xc4, 0x80, 0x18, 0x02, 0xbe, 0x08, 0xc6, 0x1b, 0x5a, 0xa2, 0x27, 0xda, 0x82, 0x82, 0x32, 0xde, 0xf0, 0x12, 0x3f, 0xd1, 0x16, 0x14, 0x94, 0x39, 0x86, 0x7a, 0x28, 0xee, 0x62, 0x90, 0x21, 0xb0, 0x87, 0x96, 0x18, 0x31, 0x30, 0x86, 0x80, 0x34, 0x8a, 0x21, 0x98, 0x63, 0xc0, 0x87, 0x5a, 0xd0, 0x8b, 0x39, 0x86, 0x7c, 0xb0, 0x83, 0xbd, 0xb0, 0x40, 0x90, 0xcf, 0x20, 0x43, 0xb0, 0x0f, 0x32, 0x61, 0x41, 0x21, 0x9f, 0x59, 0x82, 0x66, 0xbc, 0x21, 0x27, 0xd2, 0x42, 0x25, 0x28, 0x28, 0x76, 0x06, 0x01, 0x7d, 0x46, 0x0c, 0x14, 0x21, 0x70, 0x8d, 0x9d, 0xd0, 0x89, 0xe0, 0x24, 0x5e, 0xc2, 0x24, 0xf6, 0x61, 0xbc, 0xa1, 0x27, 0xda, 0xe2, 0x25, 0x28, 0x20, 0xc3, 0x1c, 0x46, 0xc0, 0x38, 0xca, 0xb4, 0x0c, 0x32, 0x0c, 0x23, 0x41, 0x13, 0x83, 0x0c, 0x04, 0x49, 0xd8, 0x84, 0x09, 0x81, 0x7c, 0x06, 0x19, 0x82, 0x95, 0xf0, 0x89, 0x41, 0x86, 0xe0, 0x00, 0x8b, 0x59, 0x02, 0x66, 0x90, 0x01, 0x41, 0x89, 0x9f, 0x98, 0x25, 0x60, 0x06, 0x3a, 0x02, 0x42, 0x11, 0x16, 0x29, 0x99, 0x63, 0x50, 0x89, 0x73, 0x60, 0x8d, 0x39, 0x86, 0x95, 0x40, 0x85, 0xd6, 0x18, 0x6f, 0x40, 0x0b, 0xbc, 0x40, 0x0d, 0x0a, 0x8a, 0x0d, 0x84, 0x7c, 0x06, 0x19, 0x82, 0x97, 0x30, 0x0b, 0x0b, 0x0e, 0xf9, 0x58, 0x40, 0xc8, 0x67, 0x96, 0xa0, 0x19, 0x68, 0x09, 0xec, 0xa2, 0x30, 0x13, 0x80, 0x0d, 0x10, 0x81, 0x31, 0x13, 0x23, 0x83, 0x80, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x2a, 0x90, 0x85, 0x2d, 0xc3, 0x15, 0xc8, 0xc2, 0x96, 0x21, 0x0c, 0x82, 0x5c, 0xd8, 0x32, 0x98, 0x41, 0xa0, 0x0b, 0x5b, 0x86, 0x3a, 0x08, 0x64, 0x61, 0xcb, 0xe0, 0x07, 0xc1, 0x2e, 0x6c, 0x19, 0x4a, 0x21, 0xe0, 0x85, 0x2d, 0x03, 0x2f, 0x04, 0xbd, 0xb0, 0x65, 0xf8, 0x85, 0x40, 0x16, 0xb6, 0x0c, 0xe1, 0x10, 0xf8, 0xc2, 0x96, 0x21, 0x1e, 0x86, 0x5f, 0xd8, 0x32, 0xd0, 0x43, 0x20, 0x0b, 0x5b, 0x06, 0x7b, 0x08, 0x64, 0x61, 0xcb, 0x10, 0x12, 0x81, 0x2c, 0x6c, 0x19, 0x44, 0x62, 0xf8, 0x85, 0x2d, 0x43, 0x49, 0x04, 0xba, 0xb0, 0x65, 0x98, 0x89, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; unsigned int mnvg_bitcode_macos_len = 12835; simulator.h000066400000000000000000002634401461511344300340000ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/src/mnvg_bitcodeunsigned char mnvg_bitcode_simulator[] = { 0x4d, 0x54, 0x4c, 0x42, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x0d, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0x6a, 0x86, 0x56, 0x05, 0x14, 0x7b, 0x1a, 0x01, 0x5e, 0x4e, 0x30, 0xc0, 0xfa, 0x46, 0x90, 0x29, 0xda, 0x1a, 0x88, 0x49, 0x40, 0x8a, 0xf7, 0xa4, 0x37, 0x43, 0x85, 0x49, 0x1b, 0xe2, 0x65, 0xc0, 0x4d, 0x44, 0x53, 0x5a, 0x08, 0x00, 0x20, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x84, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x0f, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x01, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0x78, 0xf1, 0x83, 0x04, 0x89, 0xe9, 0xe2, 0x6f, 0x64, 0x2a, 0x1c, 0x05, 0xa8, 0xba, 0xe8, 0xdf, 0x13, 0x08, 0x88, 0x59, 0x1a, 0x74, 0xf0, 0x94, 0x26, 0x7e, 0x91, 0x1d, 0x1e, 0x1e, 0x0c, 0xa9, 0x4d, 0x44, 0x53, 0x5a, 0x08, 0x00, 0x90, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x86, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x11, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x41, 0x41, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x01, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0xa7, 0xe6, 0xae, 0x1f, 0x5f, 0x0c, 0xd8, 0x93, 0xf3, 0x05, 0x92, 0x45, 0x1b, 0x6c, 0x83, 0xeb, 0x2e, 0x82, 0x1a, 0xcc, 0xcc, 0x52, 0x8d, 0xb9, 0xba, 0xd1, 0x99, 0xc6, 0xf1, 0x6a, 0x28, 0xbb, 0x4d, 0x44, 0x53, 0x5a, 0x08, 0x00, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x45, 0x4e, 0x44, 0x54, 0x25, 0x00, 0x00, 0x00, 0x56, 0x41, 0x54, 0x54, 0x11, 0x00, 0x02, 0x00, 0x70, 0x6f, 0x73, 0x00, 0x00, 0x80, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x01, 0x80, 0x56, 0x41, 0x54, 0x59, 0x04, 0x00, 0x02, 0x00, 0x04, 0x04, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x35, 0x14, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, 0x0c, 0x30, 0x24, 0x80, 0x10, 0x05, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x21, 0x0c, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x00, 0x0b, 0x02, 0x21, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x10, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0x84, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x42, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0x04, 0x49, 0x0e, 0x90, 0x11, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x21, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80, 0x03, 0x40, 0x02, 0x2a, 0x62, 0x1c, 0xde, 0x41, 0x1e, 0xe4, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xd8, 0x21, 0x1f, 0xda, 0x40, 0x1e, 0xde, 0xa1, 0x1e, 0xdc, 0x81, 0x1c, 0xca, 0x81, 0x1c, 0xda, 0x80, 0x1c, 0xd2, 0xc1, 0x1e, 0xd2, 0x81, 0x1c, 0xca, 0xa1, 0x0d, 0xe6, 0x21, 0x1e, 0xe4, 0x81, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x72, 0x48, 0x87, 0x79, 0x08, 0x07, 0x71, 0x60, 0x87, 0x72, 0x68, 0x03, 0x7a, 0x08, 0x87, 0x74, 0x60, 0x87, 0x36, 0x18, 0x87, 0x70, 0x60, 0x07, 0x76, 0x98, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0x82, 0x1d, 0xca, 0x61, 0x1e, 0xe6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xca, 0x61, 0x1c, 0xd2, 0x61, 0x1e, 0xca, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0x21, 0x1c, 0xc8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x18, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1c, 0xe4, 0x21, 0x1c, 0xda, 0xa1, 0x1c, 0xda, 0x00, 0x1e, 0xde, 0x21, 0x1d, 0xdc, 0x81, 0x1e, 0xca, 0x41, 0x1e, 0xda, 0xa0, 0x1c, 0xd8, 0x21, 0x1d, 0xda, 0xa1, 0x0d, 0xdc, 0xe1, 0x1d, 0xdc, 0xa1, 0x0d, 0xd8, 0xa1, 0x1c, 0xc2, 0xc1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd2, 0xc1, 0x1d, 0xcc, 0x61, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x75, 0xa8, 0x87, 0x76, 0x80, 0x87, 0x36, 0xa0, 0x87, 0x70, 0x10, 0x07, 0x76, 0x28, 0x87, 0x79, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1d, 0xc2, 0xc1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x98, 0x87, 0x74, 0x38, 0x07, 0x77, 0x28, 0x07, 0x72, 0x68, 0x03, 0x7d, 0x28, 0x07, 0x79, 0x78, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0x01, 0x1e, 0xe0, 0x21, 0x1d, 0xdc, 0xe1, 0x1c, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x88, 0x79, 0xa0, 0x87, 0x70, 0x18, 0x87, 0x75, 0x68, 0x03, 0x78, 0x90, 0x87, 0x77, 0xa0, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x78, 0x07, 0x79, 0x68, 0x03, 0x71, 0xa8, 0x07, 0x73, 0x30, 0x87, 0x72, 0x90, 0x87, 0x36, 0x98, 0x87, 0x74, 0xd0, 0x87, 0x72, 0x00, 0xf0, 0x00, 0x20, 0xea, 0xc1, 0x1d, 0xe6, 0x21, 0x1c, 0xcc, 0xa1, 0x1c, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0xa8, 0x87, 0x79, 0x28, 0x87, 0x36, 0x98, 0x87, 0x77, 0x30, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x60, 0x87, 0x77, 0x08, 0x07, 0x7a, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0xd8, 0xb0, 0x08, 0x03, 0x90, 0x00, 0x0b, 0x50, 0x05, 0x69, 0x80, 0x00, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x84, 0x40, 0x00, 0x89, 0x20, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x32, 0x22, 0x08, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x22, 0xa4, 0x84, 0x04, 0x13, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x88, 0x8c, 0x0b, 0x84, 0x84, 0x4c, 0x10, 0x30, 0x33, 0x00, 0xc3, 0x08, 0x04, 0x30, 0x8c, 0x20, 0x00, 0x57, 0x49, 0x53, 0x44, 0x09, 0x93, 0xbf, 0x02, 0xd2, 0x44, 0x44, 0x48, 0x46, 0x44, 0x1d, 0x30, 0x01, 0x68, 0x08, 0x91, 0x41, 0x04, 0x41, 0x28, 0xc4, 0x88, 0x10, 0xd5, 0x40, 0xc0, 0x1c, 0x01, 0x18, 0xa4, 0x00, 0xce, 0x11, 0x80, 0xc2, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xbe, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x83, 0x74, 0x78, 0x87, 0x79, 0x88, 0x83, 0x39, 0x70, 0x03, 0x39, 0x70, 0x03, 0x38, 0x68, 0x83, 0x79, 0x48, 0x87, 0x76, 0xa8, 0x07, 0x76, 0x08, 0x07, 0x7a, 0x78, 0x07, 0x79, 0xd8, 0x70, 0x1b, 0xe5, 0xd0, 0x06, 0xf0, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x90, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x40, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x74, 0x80, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x79, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x79, 0x20, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x11, 0xc2, 0x90, 0x4c, 0x45, 0x44, 0x13, 0x71, 0xb1, 0x07, 0x30, 0x10, 0xd1, 0x90, 0x08, 0x60, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0xd8, 0x20, 0x50, 0x54, 0x59, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x0a, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x10, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0xc2, 0x22, 0x28, 0x81, 0x42, 0x18, 0x01, 0x28, 0x08, 0x82, 0x31, 0x02, 0x10, 0x04, 0x41, 0x11, 0x0c, 0x28, 0xc7, 0x12, 0x1a, 0x01, 0x00, 0x00, 0x00, 0xb1, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x79, 0x20, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x62, 0x1e, 0x48, 0x20, 0x43, 0x88, 0x0c, 0x19, 0x39, 0x19, 0x24, 0x90, 0x91, 0x40, 0xc6, 0xc8, 0xc8, 0x68, 0x22, 0x50, 0x08, 0x14, 0x32, 0x9e, 0x18, 0x19, 0x21, 0x47, 0xc8, 0x90, 0x51, 0x04, 0x03, 0xae, 0x95, 0x00, 0x8b, 0xb2, 0x06, 0xc5, 0xc6, 0x91, 0x41, 0x18, 0x90, 0xc1, 0x19, 0x30, 0x91, 0xc1, 0x0c, 0x51, 0x65, 0x10, 0xd8, 0x01, 0x49, 0xd4, 0x65, 0x28, 0x0f, 0x12, 0x5d, 0x08, 0x53, 0x44, 0x4b, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x77, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x4c, 0x4c, 0x56, 0x4d, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x20, 0x28, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x66, 0x65, 0x2d, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x29, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x70, 0x6f, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x34, 0x66, 0x70, 0x6f, 0x73, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x66, 0x70, 0x6f, 0x73, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x37, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x61, 0x69, 0x72, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x33, 0x70, 0x6f, 0x73, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x36, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x80, 0x04, 0x23, 0x08, 0xc9, 0x31, 0x82, 0x80, 0x08, 0x23, 0x08, 0xc8, 0x30, 0x82, 0x80, 0x10, 0x23, 0x08, 0x06, 0x30, 0x82, 0x80, 0x14, 0x33, 0x0c, 0x61, 0x10, 0x88, 0xc1, 0x0c, 0xc3, 0x18, 0x08, 0x64, 0x30, 0x43, 0x30, 0xcc, 0x30, 0x84, 0x41, 0x18, 0x94, 0xc1, 0x0c, 0x04, 0x11, 0x06, 0x61, 0x50, 0x06, 0x33, 0x04, 0xc5, 0x0c, 0x81, 0x31, 0x43, 0x70, 0xcc, 0x10, 0x20, 0x33, 0x04, 0xc9, 0x0c, 0x81, 0x32, 0x43, 0xb1, 0x30, 0x8d, 0xf3, 0xcc, 0x60, 0x40, 0x11, 0x23, 0x39, 0xd3, 0x0c, 0x06, 0x44, 0x31, 0x92, 0x53, 0xcd, 0x30, 0xcc, 0x01, 0x1d, 0xd4, 0xc1, 0x0c, 0x4a, 0x19, 0x58, 0x57, 0x19, 0x8c, 0x01, 0xc6, 0x48, 0xce, 0x33, 0x83, 0x32, 0x06, 0xd6, 0x35, 0x06, 0x63, 0x90, 0x31, 0x92, 0xa3, 0xcd, 0x00, 0x85, 0xc1, 0xc6, 0x9d, 0xc1, 0x35, 0x06, 0x63, 0xd0, 0x79, 0x67, 0xf0, 0x9d, 0x01, 0x23, 0x39, 0x60, 0x30, 0xc3, 0x70, 0x07, 0x78, 0x90, 0x07, 0x33, 0x0c, 0x66, 0x60, 0x07, 0x7a, 0x70, 0x1b, 0xc0, 0x71, 0x1c, 0xc7, 0x71, 0x9c, 0x1b, 0xb8, 0x81, 0x45, 0x07, 0x7a, 0x60, 0x59, 0x96, 0x65, 0x59, 0x6e, 0x40, 0x07, 0x74, 0x40, 0x07, 0xbe, 0xe0, 0x0b, 0x3a, 0x41, 0x07, 0x32, 0x12, 0x98, 0xa0, 0x8c, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xda, 0xde, 0xc8, 0xea, 0xd8, 0xca, 0x5c, 0xcc, 0xd8, 0xc2, 0xce, 0xe6, 0x46, 0x11, 0xce, 0x00, 0x0d, 0x52, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x1b, 0x25, 0x48, 0x83, 0x5c, 0xc2, 0xd2, 0xe4, 0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x46, 0x09, 0xd4, 0x20, 0xa9, 0xb0, 0x34, 0x39, 0x17, 0xb6, 0x30, 0xb7, 0xb3, 0xba, 0xb0, 0xb3, 0xb2, 0x2f, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x51, 0x82, 0x35, 0xc8, 0x29, 0x2c, 0x4d, 0xce, 0x65, 0xec, 0xad, 0x0d, 0x2e, 0x8d, 0xad, 0xec, 0xeb, 0x0d, 0x8e, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x14, 0x83, 0x0d, 0xda, 0xc0, 0x0d, 0xde, 0x00, 0x0e, 0xe2, 0x20, 0x95, 0xb0, 0x34, 0x39, 0x17, 0xbb, 0x32, 0x39, 0xba, 0x32, 0xbc, 0x51, 0x02, 0x3d, 0x00, 0x00, 0x00, 0xa9, 0x18, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x72, 0x28, 0x87, 0x77, 0x80, 0x07, 0x7a, 0x58, 0x70, 0x98, 0x43, 0x3d, 0xb8, 0xc3, 0x38, 0xb0, 0x43, 0x39, 0xd0, 0xc3, 0x82, 0xe6, 0x1c, 0xc6, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0xc1, 0x1d, 0xe6, 0x21, 0x1d, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x00, 0xd1, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0xcc, 0x3c, 0xa4, 0x83, 0x3b, 0x9c, 0x03, 0x3b, 0x94, 0x03, 0x3d, 0xa0, 0x83, 0x3c, 0x94, 0x43, 0x38, 0x90, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa4, 0x23, 0x00, 0x25, 0x40, 0x30, 0x46, 0x00, 0x82, 0x20, 0x08, 0x82, 0xc1, 0x18, 0x01, 0x08, 0x82, 0x20, 0xfe, 0xcd, 0x00, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xe2, 0xbf, 0x30, 0x02, 0x40, 0x31, 0x07, 0xf1, 0x3c, 0x91, 0x43, 0x33, 0x03, 0x00, 0xf1, 0x30, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x04, 0xc0, 0xd8, 0x10, 0xf0, 0x01, 0x00, 0x63, 0x08, 0x4c, 0x62, 0x01, 0x22, 0xfe, 0xc4, 0x08, 0x19, 0x43, 0x08, 0x18, 0x1b, 0x02, 0xf2, 0xb7, 0x20, 0x01, 0xff, 0x31, 0x04, 0xc9, 0xb1, 0xc0, 0x11, 0xff, 0x31, 0x04, 0x03, 0x32, 0x21, 0x20, 0x7f, 0x83, 0x82, 0xf0, 0x9f, 0x63, 0x68, 0x8c, 0x6d, 0x8e, 0x21, 0x10, 0xbc, 0xd9, 0x06, 0x27, 0x00, 0x66, 0x1b, 0x02, 0x2d, 0x98, 0x6d, 0x08, 0x34, 0x21, 0x83, 0x80, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x62, 0xe0, 0x83, 0x2d, 0x43, 0x32, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x0e, 0x10, 0x22, 0x84, 0x00, 0xa2, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0c, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x0c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0x73, 0x00, 0x00, 0x00, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x61, 0x69, 0x72, 0x36, 0x34, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2d, 0x69, 0x6f, 0x73, 0x31, 0x33, 0x2e, 0x32, 0x2e, 0x30, 0x2d, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7c, 0x15, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x35, 0x14, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, 0x0c, 0x30, 0x24, 0x80, 0x10, 0x05, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x21, 0x0c, 0x00, 0x00, 0xbb, 0x04, 0x00, 0x00, 0x0b, 0x02, 0x21, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0x04, 0x49, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x58, 0x03, 0x40, 0x02, 0x2a, 0x62, 0x1c, 0xde, 0x41, 0x1e, 0xe4, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xd8, 0x21, 0x1f, 0xda, 0x40, 0x1e, 0xde, 0xa1, 0x1e, 0xdc, 0x81, 0x1c, 0xca, 0x81, 0x1c, 0xda, 0x80, 0x1c, 0xd2, 0xc1, 0x1e, 0xd2, 0x81, 0x1c, 0xca, 0xa1, 0x0d, 0xe6, 0x21, 0x1e, 0xe4, 0x81, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x72, 0x48, 0x87, 0x79, 0x08, 0x07, 0x71, 0x60, 0x87, 0x72, 0x68, 0x03, 0x7a, 0x08, 0x87, 0x74, 0x60, 0x87, 0x36, 0x18, 0x87, 0x70, 0x60, 0x07, 0x76, 0x98, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0x82, 0x1d, 0xca, 0x61, 0x1e, 0xe6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xca, 0x61, 0x1c, 0xd2, 0x61, 0x1e, 0xca, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0x21, 0x1c, 0xc8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x18, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1c, 0xe4, 0x21, 0x1c, 0xda, 0xa1, 0x1c, 0xda, 0x00, 0x1e, 0xde, 0x21, 0x1d, 0xdc, 0x81, 0x1e, 0xca, 0x41, 0x1e, 0xda, 0xa0, 0x1c, 0xd8, 0x21, 0x1d, 0xda, 0xa1, 0x0d, 0xdc, 0xe1, 0x1d, 0xdc, 0xa1, 0x0d, 0xd8, 0xa1, 0x1c, 0xc2, 0xc1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd2, 0xc1, 0x1d, 0xcc, 0x61, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x75, 0xa8, 0x87, 0x76, 0x80, 0x87, 0x36, 0xa0, 0x87, 0x70, 0x10, 0x07, 0x76, 0x28, 0x87, 0x79, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1d, 0xc2, 0xc1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x98, 0x87, 0x74, 0x38, 0x07, 0x77, 0x28, 0x07, 0x72, 0x68, 0x03, 0x7d, 0x28, 0x07, 0x79, 0x78, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0x01, 0x1e, 0xe0, 0x21, 0x1d, 0xdc, 0xe1, 0x1c, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x88, 0x79, 0xa0, 0x87, 0x70, 0x18, 0x87, 0x75, 0x68, 0x03, 0x78, 0x90, 0x87, 0x77, 0xa0, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x78, 0x07, 0x79, 0x68, 0x03, 0x71, 0xa8, 0x07, 0x73, 0x30, 0x87, 0x72, 0x90, 0x87, 0x36, 0x98, 0x87, 0x74, 0xd0, 0x87, 0x72, 0x00, 0xf0, 0x00, 0x20, 0xea, 0xc1, 0x1d, 0xe6, 0x21, 0x1c, 0xcc, 0xa1, 0x1c, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0xa8, 0x87, 0x79, 0x28, 0x87, 0x36, 0x98, 0x87, 0x77, 0x30, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x60, 0x87, 0x77, 0x08, 0x07, 0x7a, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0xd8, 0x90, 0x08, 0x04, 0x90, 0x00, 0x55, 0x90, 0x06, 0x70, 0xb1, 0xc1, 0x18, 0x0c, 0x60, 0x01, 0xaa, 0x0d, 0x0a, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x03, 0xd0, 0x06, 0xc0, 0x1a, 0x00, 0x12, 0x50, 0x6d, 0x30, 0x8a, 0x00, 0x58, 0x80, 0x6a, 0x83, 0x61, 0x08, 0xc0, 0x02, 0x54, 0x1b, 0x8c, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0x28, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x0c, 0x44, 0x61, 0x4c, 0x08, 0x0e, 0x00, 0x89, 0x20, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xb8, 0xc1, 0x0c, 0xc0, 0x30, 0x02, 0x01, 0x0c, 0x23, 0x08, 0xc0, 0x30, 0xc2, 0x00, 0xe4, 0xc0, 0x30, 0x13, 0x35, 0x0f, 0xf4, 0x20, 0x0f, 0xf5, 0x30, 0x0e, 0xf4, 0xe0, 0x06, 0xed, 0x50, 0x0e, 0xf4, 0x10, 0x0e, 0xec, 0xa0, 0x07, 0x7a, 0xd0, 0x0e, 0xe1, 0x40, 0x0f, 0xf2, 0x90, 0x0e, 0xf8, 0x80, 0x02, 0x62, 0x8e, 0x00, 0x0c, 0xee, 0x91, 0xa6, 0x88, 0x12, 0x26, 0xdf, 0x6d, 0x90, 0xc2, 0x89, 0x18, 0x09, 0x35, 0x45, 0x11, 0x04, 0x82, 0x20, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x20, 0xc2, 0x21, 0x1c, 0x25, 0x4d, 0x11, 0x25, 0x4c, 0xfe, 0x3f, 0x11, 0xd7, 0x44, 0x45, 0xc4, 0x6f, 0x0f, 0xff, 0x34, 0x46, 0x00, 0x0c, 0x22, 0x24, 0xc1, 0x45, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xff, 0x12, 0xc0, 0x3c, 0x0b, 0x11, 0xfd, 0xd3, 0x18, 0x01, 0x30, 0x88, 0xb0, 0x08, 0xe5, 0x08, 0x02, 0x41, 0x40, 0x14, 0x86, 0x9a, 0x39, 0x02, 0xc4, 0x08, 0xc1, 0x33, 0x47, 0x10, 0x0c, 0x23, 0x08, 0x46, 0x51, 0x20, 0x85, 0x11, 0x22, 0x29, 0x02, 0x00, 0x83, 0xa6, 0x42, 0x04, 0x41, 0x10, 0x50, 0x55, 0x04, 0x00, 0xa0, 0xab, 0x0c, 0x80, 0x20, 0x50, 0x56, 0x06, 0x41, 0x10, 0x68, 0x2b, 0x03, 0x00, 0x00, 0xd4, 0x15, 0x41, 0x10, 0xe8, 0x1b, 0x08, 0x48, 0x01, 0x63, 0x10, 0x21, 0x10, 0x86, 0x11, 0x06, 0x63, 0x8e, 0x00, 0x14, 0x06, 0x11, 0x06, 0x61, 0x10, 0x41, 0x10, 0xa6, 0x00, 0x46, 0x00, 0x06, 0x11, 0x0c, 0x61, 0x10, 0xa1, 0x10, 0x06, 0x11, 0x00, 0x61, 0x18, 0x81, 0x30, 0x00, 0x13, 0xbe, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x83, 0x74, 0x78, 0x87, 0x79, 0x88, 0x83, 0x39, 0x70, 0x03, 0x39, 0x70, 0x03, 0x38, 0x68, 0x83, 0x79, 0x48, 0x87, 0x76, 0xa8, 0x07, 0x76, 0x08, 0x07, 0x7a, 0x78, 0x07, 0x79, 0xd8, 0x70, 0x1b, 0xe5, 0xd0, 0x06, 0xf0, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x90, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x40, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x74, 0x80, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x79, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x79, 0x20, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x11, 0xc2, 0x90, 0x4e, 0x11, 0x01, 0x06, 0x43, 0x34, 0x13, 0x7b, 0x00, 0x03, 0x11, 0x0d, 0x89, 0x00, 0xa7, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x21, 0x91, 0xb3, 0x4d, 0x40, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x24, 0x4a, 0x83, 0xa6, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x21, 0x91, 0x1d, 0x54, 0x17, 0x10, 0x00, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x89, 0x56, 0x21, 0xba, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x60, 0x48, 0xc4, 0x0b, 0x4d, 0x06, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0xa2, 0x74, 0x98, 0x36, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x12, 0xf1, 0x43, 0xd4, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xc0, 0x90, 0xa8, 0x25, 0xa2, 0x0e, 0x08, 0x80, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x86, 0x44, 0x3e, 0x31, 0x7d, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x24, 0x8a, 0x8b, 0xeb, 0x03, 0x02, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0d, 0x02, 0x45, 0x7b, 0x09, 0x00, 0x00, 0xb2, 0x40, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x32, 0x8a, 0xa0, 0x04, 0x0a, 0x61, 0x04, 0xa0, 0x0c, 0x0a, 0x5c, 0xa0, 0xc0, 0x0a, 0x38, 0xa0, 0x40, 0x0a, 0x3c, 0xa0, 0x00, 0x05, 0x0a, 0xa2, 0x20, 0x05, 0x0a, 0x54, 0xa0, 0x60, 0x05, 0x0a, 0x57, 0xa0, 0x80, 0x05, 0x0a, 0x59, 0xa0, 0xa0, 0x05, 0x0a, 0x5b, 0xa0, 0x14, 0xa8, 0x1c, 0x01, 0x28, 0xb0, 0x02, 0x0e, 0x28, 0xf0, 0x80, 0x02, 0x14, 0x28, 0x48, 0x81, 0x02, 0x15, 0x28, 0x58, 0x81, 0xc2, 0x15, 0x28, 0x60, 0x81, 0x42, 0x16, 0x28, 0x68, 0x81, 0xc2, 0x16, 0x20, 0x60, 0x8c, 0x00, 0x04, 0x41, 0x50, 0x04, 0x03, 0x12, 0xc7, 0x12, 0x1a, 0x01, 0x00, 0x00, 0xb1, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x79, 0x20, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x62, 0x1e, 0x48, 0x20, 0x43, 0x88, 0x0c, 0x19, 0x39, 0x19, 0x24, 0x90, 0x91, 0x40, 0xc6, 0xc8, 0xc8, 0x68, 0x22, 0x50, 0x08, 0x14, 0x32, 0x9e, 0x18, 0x19, 0x21, 0x47, 0xc8, 0x90, 0x51, 0xc4, 0x03, 0x38, 0xc0, 0x33, 0x8b, 0xb2, 0x06, 0xc5, 0xc6, 0x91, 0x41, 0x18, 0x90, 0xc1, 0x19, 0x44, 0x91, 0xc1, 0x28, 0x12, 0x33, 0x48, 0xd5, 0x63, 0x10, 0xd8, 0xa1, 0x3c, 0x12, 0x42, 0x21, 0x0a, 0x82, 0x20, 0x0a, 0x63, 0x14, 0xc6, 0xa1, 0x24, 0xc3, 0x41, 0x44, 0x17, 0x82, 0x2c, 0x0a, 0x76, 0x2c, 0x07, 0x00, 0x00, 0x53, 0x44, 0x4b, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x77, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x4c, 0x4c, 0x56, 0x4d, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x20, 0x28, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x66, 0x65, 0x2d, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x29, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x6e, 0x6f, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x70, 0x6f, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x34, 0x66, 0x70, 0x6f, 0x73, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x66, 0x70, 0x6f, 0x73, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x37, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x66, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x54, 0x68, 0x72, 0x69, 0x6e, 0x74, 0x74, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0xa6, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x60, 0x2c, 0x23, 0x08, 0x62, 0xe0, 0x06, 0x23, 0x08, 0x06, 0x33, 0x82, 0x60, 0x34, 0x23, 0x08, 0x86, 0x33, 0x82, 0xe0, 0x00, 0x23, 0x08, 0xc6, 0x33, 0x82, 0x60, 0x40, 0x23, 0x08, 0x46, 0x34, 0x82, 0x60, 0x48, 0x23, 0x08, 0xc6, 0x34, 0x82, 0x60, 0x50, 0x23, 0x08, 0x46, 0x35, 0x82, 0x60, 0x58, 0x23, 0x08, 0xc6, 0x35, 0x82, 0x60, 0x60, 0x23, 0x08, 0x46, 0x36, 0x82, 0x60, 0x68, 0x23, 0x08, 0xc6, 0x36, 0x82, 0x60, 0x70, 0x23, 0x08, 0x46, 0x37, 0x82, 0x60, 0x78, 0x23, 0x08, 0xc6, 0x37, 0xc3, 0x90, 0x07, 0x81, 0x1e, 0xcc, 0x30, 0xec, 0x81, 0xc0, 0x07, 0x33, 0x04, 0xc3, 0x0c, 0x43, 0x1e, 0xe4, 0x41, 0x1f, 0xcc, 0x40, 0x10, 0x79, 0x90, 0x07, 0x7d, 0x30, 0x43, 0x50, 0xcc, 0x10, 0x18, 0x33, 0x04, 0xc7, 0x0c, 0x01, 0x32, 0x43, 0x90, 0xcc, 0x10, 0x28, 0x33, 0x14, 0x4b, 0x1f, 0xf4, 0x01, 0xd3, 0xcc, 0x10, 0xec, 0xc2, 0x0c, 0x48, 0x1f, 0x38, 0x0f, 0xc4, 0x34, 0x91, 0x34, 0x43, 0xb2, 0x07, 0x13, 0xf5, 0x54, 0x8c, 0x15, 0x5d, 0x33, 0x24, 0x79, 0x30, 0x61, 0x4f, 0xc5, 0x58, 0x51, 0x36, 0x43, 0x28, 0xf4, 0x41, 0x28, 0xf4, 0xc1, 0x07, 0x06, 0xa1, 0x10, 0x0a, 0x7d, 0xf0, 0x85, 0x81, 0x28, 0x8c, 0x42, 0x1f, 0x34, 0x62, 0x40, 0x0a, 0xa3, 0xd0, 0x07, 0xcd, 0x18, 0x94, 0x82, 0x29, 0xf4, 0x81, 0x45, 0x06, 0xa7, 0x60, 0x0a, 0x7d, 0x60, 0x95, 0x01, 0x2a, 0x98, 0x42, 0x1f, 0x58, 0x66, 0x90, 0x0a, 0x7c, 0xd0, 0x07, 0x67, 0x80, 0x06, 0xaa, 0xc0, 0x07, 0x7d, 0x70, 0x06, 0x69, 0xb0, 0x0a, 0x7c, 0xd0, 0x07, 0x67, 0xa0, 0x06, 0xac, 0xc0, 0x07, 0x7d, 0x70, 0x06, 0x6b, 0xd0, 0x0a, 0x7c, 0xd0, 0x07, 0x6c, 0xd0, 0x06, 0xae, 0xc0, 0x07, 0x7d, 0xc0, 0x06, 0x6e, 0x30, 0x83, 0xf4, 0x07, 0xda, 0x06, 0x0a, 0x5c, 0x1f, 0xec, 0x41, 0xe7, 0x81, 0xc3, 0x1b, 0x80, 0x02, 0x1c, 0x8c, 0x02, 0x13, 0x07, 0x91, 0x1c, 0xcc, 0xa0, 0xf0, 0xc1, 0x1c, 0x70, 0x7d, 0xb0, 0x07, 0x74, 0xc0, 0xd4, 0x41, 0x64, 0x07, 0x33, 0x24, 0xaf, 0x70, 0x07, 0x5c, 0x1f, 0xec, 0x01, 0x83, 0x07, 0x11, 0x1e, 0xcc, 0x60, 0xf4, 0x82, 0x2f, 0xfc, 0x42, 0x38, 0x88, 0xc3, 0x38, 0xcc, 0x30, 0xf8, 0x01, 0x2f, 0x90, 0xc3, 0xb5, 0x01, 0xc0, 0xa1, 0x01, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xe7, 0x06, 0x6e, 0x60, 0xd1, 0x81, 0x1e, 0x58, 0x96, 0x65, 0x59, 0x96, 0x1e, 0x70, 0xa6, 0xc0, 0x0a, 0xac, 0x80, 0x5f, 0x7e, 0x61, 0x0f, 0xea, 0x80, 0x0b, 0x32, 0x12, 0x98, 0xa0, 0x8c, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xda, 0xde, 0xc8, 0xea, 0xd8, 0xca, 0x5c, 0xcc, 0xd8, 0xc2, 0xce, 0xe6, 0x46, 0x11, 0x5e, 0x01, 0x16, 0x52, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x1b, 0x25, 0x88, 0x85, 0x5c, 0xc2, 0xd2, 0xe4, 0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x46, 0x09, 0x64, 0x21, 0xa9, 0xb0, 0x34, 0x39, 0x17, 0xb6, 0x30, 0xb7, 0xb3, 0xba, 0xb0, 0xb3, 0xb2, 0x2f, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x51, 0x82, 0x59, 0xc8, 0x29, 0x2c, 0x4d, 0xce, 0x65, 0xec, 0xad, 0x0d, 0x2e, 0x8d, 0xad, 0xec, 0xeb, 0x0d, 0x8e, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x14, 0x83, 0x16, 0x6a, 0xc1, 0x16, 0x6e, 0x01, 0x17, 0x72, 0x21, 0x99, 0xb0, 0x34, 0x39, 0x17, 0x33, 0xb9, 0xb0, 0xb3, 0xb6, 0x32, 0x37, 0xba, 0x51, 0x02, 0x72, 0x00, 0x00, 0xa9, 0x18, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x72, 0x28, 0x87, 0x77, 0x80, 0x07, 0x7a, 0x58, 0x70, 0x98, 0x43, 0x3d, 0xb8, 0xc3, 0x38, 0xb0, 0x43, 0x39, 0xd0, 0xc3, 0x82, 0xe6, 0x1c, 0xc6, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0xc1, 0x1d, 0xe6, 0x21, 0x1d, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x00, 0xd1, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0xcc, 0x3c, 0xa4, 0x83, 0x3b, 0x9c, 0x03, 0x3b, 0x94, 0x03, 0x3d, 0xa0, 0x83, 0x3c, 0x94, 0x43, 0x38, 0x90, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0x13, 0x04, 0x4c, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x64, 0x14, 0x43, 0x59, 0x14, 0x46, 0x39, 0xcc, 0x00, 0x50, 0x54, 0x03, 0x23, 0x00, 0x24, 0x8d, 0x25, 0x00, 0xc1, 0x08, 0x00, 0x91, 0x63, 0x0d, 0x40, 0x20, 0x8c, 0x35, 0x0c, 0xc3, 0x30, 0x02, 0x30, 0xd6, 0x10, 0x04, 0x01, 0x95, 0x25, 0x50, 0x04, 0xd4, 0x8e, 0x00, 0xcc, 0x41, 0x38, 0xcc, 0x92, 0x07, 0x63, 0x11, 0x40, 0x20, 0x1c, 0x04, 0x8c, 0x00, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xc2, 0x1f, 0x05, 0x33, 0x00, 0x23, 0x00, 0x24, 0xcc, 0x00, 0x8c, 0x25, 0x80, 0x20, 0x08, 0xc2, 0x1f, 0x08, 0x82, 0x20, 0xfc, 0x8d, 0x00, 0xd0, 0x30, 0x03, 0x00, 0x00, 0x00, 0xf1, 0x30, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x22, 0x47, 0xc8, 0x90, 0x51, 0x12, 0x84, 0x2b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xd3, 0x7c, 0x00, 0x6f, 0x6d, 0x6e, 0x69, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x54, 0x42, 0x41, 0x41, 0x5f, 0x5a, 0x54, 0x53, 0x38, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x5a, 0x54, 0x53, 0x4e, 0x35, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x36, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x49, 0x66, 0x4c, 0x69, 0x33, 0x45, 0x4c, 0x69, 0x33, 0x45, 0x76, 0x45, 0x45, 0x00, 0x00, 0x13, 0x84, 0x32, 0x00, 0x83, 0x09, 0x42, 0x19, 0x84, 0xc1, 0x04, 0xa1, 0x0c, 0xc4, 0x60, 0x82, 0x50, 0x06, 0x63, 0x30, 0x41, 0x28, 0x03, 0x32, 0x98, 0x20, 0x94, 0x41, 0x19, 0x4c, 0x10, 0xca, 0xc0, 0x0c, 0x26, 0x08, 0x65, 0x70, 0x06, 0x13, 0x84, 0x32, 0x40, 0x83, 0x09, 0x42, 0x19, 0xa4, 0xc1, 0x04, 0xa1, 0x0c, 0xd4, 0x60, 0x82, 0x50, 0x06, 0x6b, 0x30, 0x41, 0x28, 0x03, 0x36, 0x98, 0x20, 0x00, 0x6d, 0xb0, 0x21, 0x38, 0x87, 0x0d, 0x83, 0x39, 0xe0, 0x83, 0x3a, 0x6c, 0x18, 0xf2, 0x21, 0x1f, 0xd4, 0x61, 0xc3, 0x90, 0x0e, 0xf9, 0xa0, 0x0e, 0x1b, 0x86, 0x33, 0xc8, 0x07, 0x75, 0xd8, 0x30, 0xb0, 0x41, 0x3e, 0xa8, 0xc3, 0x86, 0x0d, 0x1d, 0xf6, 0x41, 0x1d, 0xf6, 0x61, 0x1d, 0xf2, 0x81, 0x1d, 0xf2, 0xa1, 0x1d, 0xf2, 0xc1, 0x1d, 0xf2, 0xe1, 0x1d, 0xf2, 0x01, 0x1e, 0xf8, 0x21, 0x1e, 0xf8, 0x41, 0x1e, 0xf8, 0x61, 0x1e, 0xf8, 0x81, 0x1e, 0xfa, 0xa1, 0x1e, 0xfa, 0xc1, 0x1e, 0x36, 0x0c, 0xfe, 0xd0, 0x0f, 0xf6, 0xb0, 0x61, 0xf0, 0x07, 0x7e, 0x90, 0x87, 0x0d, 0x83, 0x3f, 0xf0, 0x43, 0x3c, 0x6c, 0x08, 0xee, 0x61, 0xc3, 0xe0, 0x0f, 0xfd, 0x50, 0x0f, 0x00, 0x00, 0xd7, 0x8d, 0x4b, 0x41, 0x50, 0x06, 0x19, 0x02, 0x64, 0x1a, 0x64, 0x10, 0x83, 0x43, 0x32, 0x21, 0x10, 0xff, 0x7d, 0x14, 0x62, 0x40, 0x07, 0xa6, 0x60, 0x0a, 0xd2, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0xc0, 0xc9, 0x06, 0x19, 0xd0, 0xa0, 0xb9, 0x4c, 0x08, 0xc4, 0xdf, 0x82, 0x03, 0xfc, 0xf7, 0x51, 0xa4, 0xc1, 0x1e, 0xb4, 0x42, 0x2b, 0x60, 0x17, 0x8c, 0x4b, 0x41, 0x50, 0x06, 0x19, 0x82, 0x0a, 0x0c, 0xac, 0x08, 0xc0, 0x7f, 0x90, 0x21, 0x90, 0xc8, 0x60, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0xc3, 0x85, 0x60, 0x1f, 0x03, 0x1c, 0x88, 0x42, 0x2d, 0x50, 0x20, 0x14, 0x1b, 0x82, 0xf0, 0xdf, 0xc7, 0x30, 0x07, 0xa5, 0x60, 0x0a, 0x14, 0x08, 0xc4, 0x86, 0x40, 0xfc, 0x8d, 0x0b, 0xc2, 0x7f, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0xfb, 0x85, 0x60, 0x0c, 0x21, 0x50, 0x85, 0x31, 0x04, 0x21, 0x0d, 0x4c, 0x08, 0xc4, 0x7f, 0x38, 0x22, 0x30, 0x83, 0xc0, 0x3f, 0x66, 0x19, 0x96, 0x20, 0xd8, 0xc7, 0xc0, 0x07, 0xae, 0x70, 0x07, 0x14, 0x18, 0x63, 0x98, 0xc3, 0x08, 0x0e, 0x47, 0x60, 0x86, 0x7d, 0x0c, 0x7e, 0x00, 0x0b, 0xe4, 0x70, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0x50, 0x83, 0x3a, 0xb0, 0x40, 0x0c, 0xc4, 0x7f, 0x1f, 0xc5, 0x28, 0xd4, 0x42, 0x3a, 0x9c, 0xc3, 0x1c, 0x5c, 0x30, 0x2e, 0x05, 0x41, 0x19, 0x64, 0x08, 0xde, 0x40, 0x0f, 0x2c, 0x08, 0x03, 0xf1, 0xb7, 0xc0, 0x00, 0xff, 0x7d, 0x14, 0xa9, 0xb0, 0x0b, 0xef, 0xd0, 0x0e, 0x78, 0x70, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0xa8, 0x03, 0x50, 0xb0, 0x22, 0x00, 0xff, 0x41, 0x86, 0x40, 0x0e, 0x48, 0x61, 0x1f, 0xc3, 0x2b, 0x84, 0xc3, 0x3a, 0x50, 0x00, 0x0c, 0x0b, 0xf6, 0x40, 0xfc, 0xf7, 0x31, 0xc8, 0x02, 0x39, 0xbc, 0x02, 0x05, 0x42, 0xd9, 0xc7, 0x40, 0x0b, 0xe6, 0xe0, 0x0a, 0x14, 0x00, 0x64, 0x8e, 0xa1, 0x0f, 0x02, 0x7d, 0x18, 0x64, 0x08, 0xfc, 0x80, 0x15, 0xac, 0x08, 0xc2, 0x7f, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0x13, 0x89, 0xc5, 0x02, 0x21, 0xfc, 0xc7, 0x10, 0x82, 0x76, 0x18, 0x43, 0x10, 0x58, 0x61, 0xc4, 0xe0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xa3, 0x3b, 0x09, 0x21, 0x18, 0x31, 0x38, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xe8, 0x52, 0x22, 0x48, 0x85, 0x11, 0x83, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0x6d, 0x25, 0x0a, 0x52, 0x18, 0x31, 0x38, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xc8, 0x5a, 0x22, 0x08, 0x46, 0x0c, 0x8c, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0xae, 0x97, 0x08, 0x2c, 0x6a, 0xc2, 0xdf, 0x82, 0x02, 0xfc, 0x2d, 0x18, 0xc0, 0xdf, 0x82, 0x8a, 0xfc, 0x47, 0x0c, 0x8c, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0xae, 0x9a, 0x08, 0xf6, 0x31, 0x9c, 0x43, 0x3e, 0xb8, 0x04, 0x05, 0x41, 0xd9, 0xc7, 0x90, 0x0e, 0xfb, 0xc0, 0x12, 0x14, 0x04, 0x65, 0x8e, 0x81, 0x16, 0x8a, 0x97, 0x18, 0x64, 0x08, 0x6a, 0x41, 0x17, 0x46, 0x0c, 0x90, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0xaa, 0x9e, 0x28, 0x86, 0x60, 0x8e, 0xe1, 0x16, 0xe8, 0x40, 0x26, 0x06, 0x19, 0x02, 0x5c, 0xe8, 0x05, 0x1b, 0x02, 0xf1, 0x9f, 0x25, 0x58, 0xf6, 0x31, 0xc4, 0xc3, 0x48, 0xdc, 0xc4, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0xa0, 0x17, 0xd0, 0xc1, 0x82, 0x5a, 0x10, 0xff, 0x7d, 0x14, 0xf6, 0x80, 0x12, 0x3c, 0xa1, 0x13, 0xe6, 0x70, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0x10, 0x87, 0x76, 0xb0, 0x80, 0x16, 0xc4, 0xdf, 0x02, 0x03, 0xfc, 0xf7, 0x51, 0xf0, 0x83, 0x4b, 0x88, 0x05, 0x58, 0xac, 0xc3, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0x00, 0x1d, 0xe6, 0xc1, 0x8a, 0x00, 0xfc, 0x07, 0x19, 0x82, 0x72, 0xb8, 0x87, 0x7d, 0x0c, 0x22, 0x41, 0x13, 0xff, 0x40, 0x81, 0x50, 0x6c, 0x08, 0xc8, 0x7f, 0xc4, 0xa0, 0x11, 0x42, 0x10, 0x0c, 0x26, 0xbb, 0x20, 0x89, 0x91, 0x08, 0xfa, 0x41, 0x1f, 0xf8, 0x01, 0x1e, 0xe0, 0x21, 0x2d, 0x46, 0x13, 0x02, 0x60, 0x1f, 0xc3, 0x49, 0xe4, 0xc4, 0x48, 0x50, 0x60, 0x90, 0x61, 0x0e, 0x23, 0x30, 0x18, 0x62, 0x29, 0x06, 0x19, 0x06, 0x79, 0xe8, 0x87, 0x41, 0x06, 0x62, 0x1e, 0xfa, 0xc1, 0x84, 0x40, 0xfc, 0x07, 0x19, 0x02, 0x78, 0xc8, 0x87, 0x41, 0x86, 0xe0, 0xc8, 0x87, 0x59, 0x02, 0x63, 0x90, 0x01, 0xb9, 0x07, 0x7e, 0x98, 0x25, 0x30, 0x06, 0x3a, 0x02, 0x82, 0x10, 0x0a, 0x69, 0x98, 0x63, 0xc8, 0x07, 0x5b, 0xa0, 0x8b, 0x41, 0x86, 0x40, 0x1f, 0xfe, 0xc1, 0x86, 0x40, 0xfc, 0xf7, 0x31, 0xcc, 0x44, 0x59, 0xe8, 0x05, 0x05, 0x41, 0xb1, 0x21, 0x10, 0xff, 0x59, 0x82, 0x65, 0xc4, 0xa0, 0x11, 0x42, 0x10, 0x0c, 0xa6, 0xd3, 0xa8, 0x09, 0x9a, 0xb8, 0x09, 0x97, 0x58, 0x89, 0x96, 0x08, 0x89, 0x90, 0xd0, 0x8b, 0xd1, 0x84, 0x00, 0xd8, 0xc7, 0x80, 0x13, 0x6a, 0x41, 0x13, 0x14, 0x18, 0x64, 0x98, 0xc3, 0x08, 0x14, 0x06, 0x59, 0x92, 0x41, 0x86, 0x61, 0x24, 0x5c, 0x62, 0x90, 0x81, 0x20, 0x09, 0x97, 0x30, 0x21, 0x10, 0xff, 0x41, 0x86, 0x20, 0x24, 0x54, 0x62, 0x90, 0x21, 0x38, 0x54, 0x62, 0x96, 0x40, 0x19, 0x64, 0x40, 0x50, 0xa2, 0x25, 0x66, 0x09, 0x94, 0x81, 0x8e, 0x80, 0x40, 0x84, 0x44, 0x3a, 0xe6, 0x18, 0x54, 0xe2, 0x1c, 0x4a, 0x63, 0x90, 0x21, 0x58, 0x09, 0x98, 0xb0, 0x21, 0x10, 0xff, 0x7d, 0x0c, 0x64, 0x61, 0x17, 0xab, 0x41, 0x41, 0x50, 0x6c, 0x08, 0xc4, 0x7f, 0x96, 0x60, 0x19, 0x28, 0x09, 0xdc, 0x41, 0x20, 0x03, 0x43, 0x50, 0x7c, 0x04, 0xc8, 0x20, 0x20, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x2a, 0xc8, 0x87, 0x2d, 0xc3, 0x15, 0xe4, 0xc3, 0x96, 0x21, 0x0c, 0x02, 0x7f, 0xd8, 0x32, 0xd4, 0x41, 0xf0, 0x0f, 0x5b, 0x06, 0x3c, 0x08, 0xf2, 0x61, 0xcb, 0xa0, 0x07, 0x01, 0x48, 0x6c, 0x19, 0x54, 0x61, 0x08, 0x89, 0x2d, 0x43, 0x2b, 0x04, 0xf9, 0xb0, 0x65, 0x78, 0x85, 0x20, 0x1f, 0xb6, 0x0c, 0xe9, 0x10, 0xe4, 0xc3, 0x96, 0x41, 0x1d, 0x86, 0x90, 0xd8, 0x32, 0xb8, 0x43, 0x20, 0x12, 0x5b, 0x86, 0x7e, 0x08, 0xf2, 0x61, 0xcb, 0x30, 0x12, 0x81, 0x48, 0x6c, 0x19, 0x64, 0x22, 0xc8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x0e, 0x10, 0x22, 0x84, 0x00, 0xfc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0c, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0xb8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x24, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x0c, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0xef, 0x01, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x32, 0x64, 0x2e, 0x76, 0x34, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x6d, 0x69, 0x78, 0x2e, 0x76, 0x34, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x71, 0x72, 0x74, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x64, 0x6f, 0x74, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x61, 0x78, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x69, 0x6e, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x61, 0x78, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x62, 0x73, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x61, 0x69, 0x72, 0x36, 0x34, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2d, 0x69, 0x6f, 0x73, 0x31, 0x33, 0x2e, 0x32, 0x2e, 0x30, 0x2d, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x16, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x35, 0x14, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, 0x0c, 0x30, 0x24, 0x80, 0x10, 0x05, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x21, 0x0c, 0x00, 0x00, 0xd9, 0x04, 0x00, 0x00, 0x0b, 0x02, 0x21, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0x04, 0x49, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x58, 0x03, 0x40, 0x02, 0x2a, 0x62, 0x1c, 0xde, 0x41, 0x1e, 0xe4, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xd8, 0x21, 0x1f, 0xda, 0x40, 0x1e, 0xde, 0xa1, 0x1e, 0xdc, 0x81, 0x1c, 0xca, 0x81, 0x1c, 0xda, 0x80, 0x1c, 0xd2, 0xc1, 0x1e, 0xd2, 0x81, 0x1c, 0xca, 0xa1, 0x0d, 0xe6, 0x21, 0x1e, 0xe4, 0x81, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x72, 0x48, 0x87, 0x79, 0x08, 0x07, 0x71, 0x60, 0x87, 0x72, 0x68, 0x03, 0x7a, 0x08, 0x87, 0x74, 0x60, 0x87, 0x36, 0x18, 0x87, 0x70, 0x60, 0x07, 0x76, 0x98, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0x82, 0x1d, 0xca, 0x61, 0x1e, 0xe6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xca, 0x61, 0x1c, 0xd2, 0x61, 0x1e, 0xca, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0x21, 0x1c, 0xc8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x18, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1c, 0xe4, 0x21, 0x1c, 0xda, 0xa1, 0x1c, 0xda, 0x00, 0x1e, 0xde, 0x21, 0x1d, 0xdc, 0x81, 0x1e, 0xca, 0x41, 0x1e, 0xda, 0xa0, 0x1c, 0xd8, 0x21, 0x1d, 0xda, 0xa1, 0x0d, 0xdc, 0xe1, 0x1d, 0xdc, 0xa1, 0x0d, 0xd8, 0xa1, 0x1c, 0xc2, 0xc1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd2, 0xc1, 0x1d, 0xcc, 0x61, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x75, 0xa8, 0x87, 0x76, 0x80, 0x87, 0x36, 0xa0, 0x87, 0x70, 0x10, 0x07, 0x76, 0x28, 0x87, 0x79, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1d, 0xc2, 0xc1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x98, 0x87, 0x74, 0x38, 0x07, 0x77, 0x28, 0x07, 0x72, 0x68, 0x03, 0x7d, 0x28, 0x07, 0x79, 0x78, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0x01, 0x1e, 0xe0, 0x21, 0x1d, 0xdc, 0xe1, 0x1c, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x88, 0x79, 0xa0, 0x87, 0x70, 0x18, 0x87, 0x75, 0x68, 0x03, 0x78, 0x90, 0x87, 0x77, 0xa0, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x78, 0x07, 0x79, 0x68, 0x03, 0x71, 0xa8, 0x07, 0x73, 0x30, 0x87, 0x72, 0x90, 0x87, 0x36, 0x98, 0x87, 0x74, 0xd0, 0x87, 0x72, 0x00, 0xf0, 0x00, 0x20, 0xea, 0xc1, 0x1d, 0xe6, 0x21, 0x1c, 0xcc, 0xa1, 0x1c, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0xa8, 0x87, 0x79, 0x28, 0x87, 0x36, 0x98, 0x87, 0x77, 0x30, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x60, 0x87, 0x77, 0x08, 0x07, 0x7a, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0xd8, 0x90, 0x08, 0x04, 0x90, 0x00, 0x55, 0x90, 0x06, 0x70, 0xb1, 0xc1, 0x18, 0x0c, 0x60, 0x01, 0xaa, 0x0d, 0x0a, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x03, 0xd0, 0x06, 0xc0, 0x1a, 0x00, 0x12, 0x50, 0x6d, 0x30, 0x8a, 0x00, 0x58, 0x80, 0x6a, 0x83, 0x61, 0x08, 0xc0, 0x02, 0x54, 0x1b, 0x8c, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0x28, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x0c, 0x44, 0x61, 0x4c, 0x08, 0x0e, 0x00, 0x89, 0x20, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xb8, 0xc1, 0x0c, 0xc0, 0x30, 0x02, 0x01, 0x0c, 0x23, 0x08, 0xc0, 0x30, 0xc2, 0x00, 0xe4, 0xc0, 0x30, 0x13, 0x35, 0x0f, 0xf4, 0x20, 0x0f, 0xf5, 0x30, 0x0e, 0xf4, 0xe0, 0x06, 0xed, 0x50, 0x0e, 0xf4, 0x10, 0x0e, 0xec, 0xa0, 0x07, 0x7a, 0xd0, 0x0e, 0xe1, 0x40, 0x0f, 0xf2, 0x90, 0x0e, 0xf8, 0x80, 0x02, 0x62, 0x8e, 0x00, 0x0c, 0xee, 0x91, 0xa6, 0x88, 0x12, 0x26, 0xdf, 0x6d, 0x90, 0xc2, 0x89, 0x18, 0x09, 0x35, 0x45, 0x11, 0x04, 0x82, 0x20, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x20, 0xc2, 0x21, 0x1c, 0x25, 0x4d, 0x11, 0x25, 0x4c, 0xfe, 0x3f, 0x11, 0xd7, 0x44, 0x45, 0xc4, 0x6f, 0x0f, 0xff, 0x34, 0x46, 0x00, 0x0c, 0x22, 0x24, 0xc1, 0x45, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xff, 0x12, 0xc0, 0x3c, 0x0b, 0x11, 0xfd, 0xd3, 0x18, 0x01, 0x30, 0x88, 0xb0, 0x08, 0xe5, 0x08, 0x02, 0x41, 0x40, 0x14, 0x86, 0x9a, 0x39, 0x02, 0xc4, 0x08, 0xc1, 0x33, 0x47, 0x10, 0x0c, 0x23, 0x08, 0x46, 0x51, 0x20, 0x85, 0x11, 0x22, 0x29, 0x02, 0x00, 0x83, 0xa6, 0x42, 0x04, 0x41, 0x10, 0x50, 0x55, 0x04, 0x00, 0xa0, 0xab, 0x0c, 0x80, 0x20, 0x50, 0x56, 0x06, 0x41, 0x10, 0x68, 0x2b, 0x03, 0x00, 0x00, 0xd4, 0x15, 0x41, 0x10, 0xe8, 0x1b, 0x08, 0x48, 0x01, 0x63, 0x10, 0x21, 0x10, 0x86, 0x11, 0x06, 0x63, 0x8e, 0x00, 0x14, 0x06, 0x11, 0x06, 0x61, 0x10, 0x41, 0x10, 0xa6, 0x00, 0x46, 0x00, 0x06, 0x11, 0x0c, 0x61, 0x18, 0x81, 0x30, 0x06, 0x11, 0x00, 0x61, 0x10, 0xa1, 0x10, 0x00, 0x13, 0xbe, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x83, 0x74, 0x78, 0x87, 0x79, 0x88, 0x83, 0x39, 0x70, 0x03, 0x39, 0x70, 0x03, 0x38, 0x68, 0x83, 0x79, 0x48, 0x87, 0x76, 0xa8, 0x07, 0x76, 0x08, 0x07, 0x7a, 0x78, 0x07, 0x79, 0xd8, 0x70, 0x1b, 0xe5, 0xd0, 0x06, 0xf0, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x90, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x40, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x74, 0x80, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0x60, 0x0f, 0x79, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x79, 0x20, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x7a, 0x50, 0x07, 0x71, 0x20, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x11, 0xc2, 0x90, 0x50, 0x11, 0x01, 0x06, 0x43, 0x34, 0x13, 0x7b, 0x00, 0x03, 0x11, 0x69, 0xda, 0x90, 0x08, 0x80, 0x1a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x12, 0x41, 0xdb, 0x04, 0x04, 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0xa2, 0x35, 0x68, 0x2a, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x12, 0xe1, 0x41, 0x75, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xc0, 0x90, 0xa8, 0x15, 0xa2, 0x0b, 0x08, 0x80, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x86, 0x44, 0xbe, 0xd0, 0x64, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x24, 0x5a, 0x87, 0x69, 0x03, 0x02, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x21, 0x91, 0x3f, 0x44, 0x1d, 0x10, 0x00, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x89, 0x5e, 0x22, 0xea, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x60, 0x48, 0x04, 0x16, 0xd3, 0x07, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0xa2, 0xb9, 0x88, 0x2e, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x12, 0x91, 0xc6, 0xf5, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0xc4, 0x06, 0x81, 0xa2, 0xdb, 0x04, 0x00, 0x00, 0x59, 0x20, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x32, 0x8a, 0xa0, 0x04, 0x0a, 0x61, 0x04, 0xa0, 0x0c, 0x0a, 0x5c, 0xa0, 0xc0, 0x0a, 0x38, 0xa0, 0x40, 0x0a, 0x3c, 0xa0, 0x00, 0x05, 0x0a, 0xa2, 0x20, 0x05, 0x0a, 0x54, 0xa0, 0x60, 0x05, 0x0a, 0x57, 0xa0, 0x80, 0x05, 0x0a, 0x59, 0xa0, 0xa0, 0x05, 0x0a, 0x5b, 0xa0, 0x14, 0xa8, 0x1c, 0x01, 0x28, 0xb0, 0x02, 0x0e, 0x28, 0xf0, 0x80, 0x02, 0x14, 0x28, 0x48, 0x81, 0x02, 0x15, 0x28, 0x58, 0x81, 0xc2, 0x15, 0x28, 0x60, 0x81, 0x42, 0x16, 0x28, 0x68, 0x81, 0xc2, 0x16, 0x20, 0x60, 0x8c, 0x00, 0x04, 0x41, 0x50, 0x04, 0x03, 0x12, 0xc7, 0x12, 0x1a, 0x01, 0x00, 0x00, 0xb1, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x79, 0x20, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x62, 0x1e, 0x48, 0x20, 0x43, 0x88, 0x0c, 0x19, 0x39, 0x19, 0x24, 0x90, 0x91, 0x40, 0xc6, 0xc8, 0xc8, 0x68, 0x22, 0x50, 0x08, 0x14, 0x32, 0x9e, 0x18, 0x19, 0x21, 0x47, 0xc8, 0x90, 0x51, 0xc4, 0x03, 0x38, 0xc0, 0x33, 0x8b, 0xb2, 0x06, 0xc5, 0xc6, 0x91, 0x41, 0x18, 0x90, 0xc1, 0x19, 0x44, 0x91, 0xc1, 0x28, 0x12, 0x33, 0x48, 0xd5, 0x63, 0x10, 0xd8, 0xa1, 0x3c, 0x12, 0x42, 0x21, 0x0a, 0x82, 0x20, 0x0a, 0x63, 0x14, 0xc6, 0xa1, 0x24, 0xc3, 0x41, 0x44, 0x17, 0x82, 0x2c, 0x0a, 0x76, 0x2c, 0x07, 0x00, 0x00, 0x53, 0x44, 0x4b, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x77, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x4c, 0x4c, 0x56, 0x4d, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x20, 0x28, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x66, 0x65, 0x2d, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x29, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x6e, 0x6f, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x70, 0x6f, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x34, 0x66, 0x70, 0x6f, 0x73, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x66, 0x70, 0x6f, 0x73, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x37, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x66, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x54, 0x68, 0x72, 0x69, 0x6e, 0x74, 0x74, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x06, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x60, 0x30, 0x23, 0x08, 0x62, 0xf0, 0x06, 0x23, 0x08, 0x46, 0x33, 0x82, 0x60, 0x38, 0x23, 0x08, 0xc6, 0x33, 0x82, 0xe0, 0x00, 0x23, 0x08, 0x06, 0x34, 0x82, 0x60, 0x44, 0x23, 0x08, 0x86, 0x34, 0x82, 0x60, 0x4c, 0x23, 0x08, 0x06, 0x35, 0x82, 0x60, 0x54, 0x23, 0x08, 0x86, 0x35, 0x82, 0x60, 0x5c, 0x23, 0x08, 0x06, 0x36, 0x82, 0x60, 0x64, 0x23, 0x08, 0x86, 0x36, 0x82, 0x60, 0x6c, 0x23, 0x08, 0x06, 0x37, 0x82, 0x60, 0x74, 0x23, 0x08, 0x86, 0x37, 0x82, 0x60, 0x7c, 0x23, 0x08, 0x06, 0x18, 0xcc, 0x30, 0xe4, 0x41, 0xa0, 0x07, 0x33, 0x0c, 0x7b, 0x20, 0xf0, 0xc1, 0x0c, 0xc1, 0x30, 0xc3, 0x90, 0x07, 0x79, 0xd0, 0x07, 0x33, 0x10, 0x44, 0x1e, 0xe4, 0x41, 0x1f, 0xcc, 0x10, 0x14, 0x33, 0x04, 0xc6, 0x0c, 0xc1, 0x31, 0x43, 0x80, 0xcc, 0x10, 0x24, 0x33, 0x04, 0xca, 0x0c, 0xc5, 0xd2, 0x07, 0x7d, 0xc0, 0x34, 0x33, 0x04, 0xbb, 0x30, 0x03, 0xd2, 0x07, 0xce, 0x03, 0x31, 0x4d, 0x24, 0xcd, 0x90, 0xec, 0xc1, 0x44, 0x3d, 0x15, 0x63, 0x45, 0xd7, 0x0c, 0x49, 0x1e, 0x4c, 0xd8, 0x53, 0x31, 0x56, 0x94, 0xcd, 0x10, 0x0a, 0x7d, 0x10, 0x0a, 0x7d, 0xf0, 0x81, 0x41, 0x28, 0x84, 0x42, 0x1f, 0x7c, 0x61, 0x20, 0x0a, 0xa3, 0xd0, 0x07, 0x8d, 0x18, 0x90, 0xc2, 0x28, 0xf4, 0x41, 0x33, 0x06, 0xa5, 0x60, 0x0a, 0x7d, 0x60, 0x91, 0xc1, 0x29, 0x98, 0x42, 0x1f, 0x58, 0x65, 0x80, 0x0a, 0xa6, 0xd0, 0x07, 0x96, 0x19, 0xa4, 0x02, 0x1f, 0xf4, 0xc1, 0x19, 0xa0, 0x81, 0x2a, 0xf0, 0x41, 0x1f, 0x9c, 0x41, 0x1a, 0xac, 0x02, 0x1f, 0xf4, 0xc1, 0x19, 0xa8, 0x01, 0x2b, 0xf0, 0x41, 0x1f, 0x9c, 0xc1, 0x1a, 0xb4, 0x02, 0x1f, 0xf4, 0x01, 0x1b, 0xb4, 0x81, 0x2b, 0xf0, 0x41, 0x1f, 0xb0, 0x81, 0x1b, 0xcc, 0x20, 0xfd, 0x81, 0xb6, 0x81, 0x02, 0xd7, 0x07, 0x7b, 0xd0, 0x79, 0xe0, 0xf0, 0x06, 0xa0, 0x00, 0x07, 0xa3, 0xc0, 0xc4, 0x41, 0x24, 0x07, 0x33, 0x28, 0x7c, 0x30, 0x07, 0x5c, 0x1f, 0xec, 0x01, 0x1d, 0x30, 0x75, 0x10, 0xd9, 0xc1, 0x0c, 0xc9, 0x2b, 0xdc, 0x01, 0xd7, 0x07, 0x7b, 0xc0, 0xe0, 0x41, 0x84, 0x07, 0x33, 0x18, 0xbd, 0xe0, 0x0b, 0xbf, 0x10, 0x0e, 0xe2, 0x30, 0x0e, 0x33, 0x0c, 0x7e, 0xc0, 0x0b, 0xe4, 0x70, 0x6d, 0x00, 0x70, 0x68, 0xc0, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0x27, 0x06, 0x6e, 0xe0, 0x06, 0x16, 0x1d, 0xe8, 0x81, 0x65, 0x59, 0x96, 0x65, 0xe9, 0x01, 0x67, 0x0a, 0xac, 0xc0, 0x0a, 0xf8, 0xe5, 0x17, 0xf6, 0xa0, 0x0e, 0xb8, 0x20, 0x23, 0x81, 0x09, 0xca, 0x88, 0x8d, 0xcd, 0xae, 0xcd, 0xa5, 0xed, 0x8d, 0xac, 0x8e, 0xad, 0xcc, 0xc5, 0x8c, 0x2d, 0xec, 0x6c, 0x6e, 0x14, 0xe1, 0x15, 0x60, 0x21, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x51, 0x82, 0x58, 0xc8, 0x25, 0x2c, 0x4d, 0xce, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x94, 0x40, 0x16, 0x92, 0x0a, 0x4b, 0x93, 0x73, 0x61, 0x0b, 0x73, 0x3b, 0xab, 0x0b, 0x3b, 0x2b, 0xfb, 0xb2, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x1b, 0x25, 0x98, 0x85, 0x9c, 0xc2, 0xd2, 0xe4, 0x5c, 0xc6, 0xde, 0xda, 0xe0, 0xd2, 0xd8, 0xca, 0xbe, 0xde, 0xe0, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0x46, 0x31, 0x68, 0xa1, 0x16, 0x6c, 0xe1, 0x16, 0x70, 0x21, 0x17, 0x92, 0x09, 0x4b, 0x93, 0x73, 0x31, 0x93, 0x0b, 0x3b, 0x6b, 0x2b, 0x73, 0xa3, 0x1b, 0x25, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, 0xa9, 0x18, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x72, 0x28, 0x87, 0x77, 0x80, 0x07, 0x7a, 0x58, 0x70, 0x98, 0x43, 0x3d, 0xb8, 0xc3, 0x38, 0xb0, 0x43, 0x39, 0xd0, 0xc3, 0x82, 0xe6, 0x1c, 0xc6, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0xc1, 0x1d, 0xe6, 0x21, 0x1d, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x00, 0xd1, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0xcc, 0x3c, 0xa4, 0x83, 0x3b, 0x9c, 0x03, 0x3b, 0x94, 0x03, 0x3d, 0xa0, 0x83, 0x3c, 0x94, 0x43, 0x38, 0x90, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x13, 0x04, 0x4e, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x64, 0x94, 0x45, 0x31, 0x14, 0xc6, 0x0c, 0x40, 0x49, 0x14, 0x45, 0x39, 0x50, 0x54, 0x03, 0x23, 0x00, 0x24, 0x8d, 0x00, 0x8c, 0x25, 0x00, 0x01, 0x91, 0x63, 0x0d, 0x40, 0x20, 0x8c, 0x35, 0x0c, 0xc3, 0x30, 0x02, 0x30, 0xd6, 0x10, 0x04, 0x01, 0x95, 0x25, 0x50, 0x04, 0xb4, 0x8e, 0x00, 0xcc, 0x41, 0x3c, 0x0d, 0x93, 0x07, 0x63, 0x11, 0x40, 0x20, 0x1c, 0x04, 0x8c, 0x00, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xe2, 0xdf, 0x18, 0x01, 0x08, 0x82, 0x20, 0x08, 0x06, 0x63, 0x04, 0x20, 0x08, 0x82, 0xf8, 0x2f, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xc2, 0x1f, 0x05, 0x33, 0x00, 0x23, 0x00, 0x24, 0xcc, 0x00, 0x8c, 0x25, 0x80, 0x20, 0x08, 0xc2, 0x1f, 0x08, 0x82, 0x20, 0xfc, 0x8d, 0x00, 0xd0, 0x30, 0x03, 0x00, 0x00, 0x00, 0xf1, 0x30, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x47, 0xc8, 0x90, 0x51, 0x12, 0x84, 0x2b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xd3, 0x7c, 0x00, 0x6f, 0x6d, 0x6e, 0x69, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x54, 0x42, 0x41, 0x41, 0x5f, 0x5a, 0x54, 0x53, 0x38, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x5a, 0x54, 0x53, 0x4e, 0x35, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x36, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x49, 0x66, 0x4c, 0x69, 0x33, 0x45, 0x4c, 0x69, 0x33, 0x45, 0x76, 0x45, 0x45, 0x00, 0x00, 0x13, 0x84, 0x32, 0x08, 0x83, 0x09, 0x42, 0x19, 0x88, 0xc1, 0x04, 0xa1, 0x0c, 0xc6, 0x60, 0x82, 0x50, 0x06, 0x64, 0x30, 0x41, 0x28, 0x83, 0x32, 0x98, 0x20, 0x94, 0x81, 0x19, 0x4c, 0x10, 0xca, 0xe0, 0x0c, 0x26, 0x08, 0x65, 0x80, 0x06, 0x13, 0x84, 0x32, 0x48, 0x83, 0x09, 0x42, 0x19, 0xa8, 0xc1, 0x04, 0xa1, 0x0c, 0xd6, 0x60, 0x82, 0x50, 0x06, 0x6c, 0x30, 0x41, 0x28, 0x83, 0x36, 0x98, 0x20, 0x00, 0x6e, 0xb0, 0x21, 0x38, 0x87, 0x0d, 0x83, 0x39, 0xe0, 0x83, 0x3a, 0x6c, 0x18, 0xf2, 0x21, 0x1f, 0xd4, 0x61, 0xc3, 0x90, 0x0e, 0xf9, 0xa0, 0x0e, 0x1b, 0x86, 0x33, 0xc8, 0x07, 0x75, 0xd8, 0x30, 0xb0, 0x41, 0x3e, 0xa8, 0xc3, 0x86, 0x0d, 0x1d, 0xf6, 0x41, 0x1d, 0xf6, 0x61, 0x1d, 0xf2, 0x81, 0x1d, 0xf2, 0xa1, 0x1d, 0xf2, 0xc1, 0x1d, 0xf2, 0xe1, 0x1d, 0xf2, 0x01, 0x1e, 0xf8, 0x21, 0x1e, 0xf8, 0x41, 0x1e, 0xf8, 0x61, 0x1e, 0xf8, 0x81, 0x1e, 0xfa, 0xa1, 0x1e, 0xfa, 0xc1, 0x1e, 0x36, 0x0c, 0xfe, 0xd0, 0x0f, 0xf6, 0xb0, 0x61, 0xf0, 0x87, 0x7e, 0xa8, 0x87, 0x0d, 0x83, 0x3f, 0xf0, 0xc3, 0x3c, 0x6c, 0x18, 0xfc, 0x81, 0x1f, 0xe8, 0x61, 0xc3, 0xe0, 0x0f, 0xfc, 0x20, 0x0f, 0x1b, 0x06, 0x7f, 0xe0, 0x87, 0x78, 0xd8, 0x10, 0xdc, 0x03, 0x00, 0x27, 0x06, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0x00, 0xb1, 0x06, 0x19, 0xce, 0xe0, 0xa8, 0x4c, 0x08, 0xc4, 0x7f, 0x1f, 0xc5, 0x19, 0xe4, 0xc1, 0x2a, 0xac, 0x42, 0x75, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0x70, 0xb8, 0x41, 0x86, 0x36, 0x68, 0x34, 0x13, 0x02, 0xf1, 0xb7, 0xe0, 0x00, 0xff, 0x7d, 0x14, 0x6e, 0x00, 0x0a, 0xb2, 0x20, 0x0b, 0xdb, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0xa0, 0x1a, 0x03, 0x2b, 0x02, 0xf0, 0x1f, 0x64, 0x08, 0x24, 0x33, 0x18, 0x31, 0x30, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xf8, 0x7c, 0x21, 0xd8, 0xc7, 0x50, 0x07, 0xa7, 0xa0, 0x0b, 0x14, 0x08, 0xc5, 0x86, 0x20, 0xfc, 0xf7, 0x31, 0xe0, 0x81, 0x2a, 0xac, 0x02, 0x05, 0x02, 0xb1, 0x21, 0x10, 0x7f, 0xe3, 0x82, 0xf0, 0x1f, 0x31, 0x30, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xf8, 0xc8, 0x21, 0x18, 0x43, 0x08, 0x5e, 0x61, 0x0c, 0x41, 0x60, 0x03, 0x13, 0x02, 0xf1, 0x1f, 0x8e, 0x08, 0xd2, 0x20, 0xf0, 0x8f, 0x59, 0x86, 0x26, 0x08, 0xf6, 0x31, 0x84, 0xc2, 0x2c, 0xf0, 0x01, 0x05, 0xc6, 0x18, 0x6e, 0x08, 0xd4, 0x01, 0x0c, 0x66, 0x19, 0x04, 0x23, 0x18, 0x31, 0x68, 0x84, 0x10, 0x04, 0x83, 0xc9, 0x1e, 0x46, 0x41, 0x14, 0x4a, 0x41, 0x0f, 0xf0, 0x20, 0x0f, 0xda, 0xa0, 0x0d, 0xd0, 0x61, 0x34, 0x21, 0x00, 0xf6, 0x31, 0x98, 0x02, 0x2e, 0x8c, 0x02, 0x05, 0x06, 0x19, 0xe6, 0x30, 0x82, 0xa2, 0x19, 0x18, 0x62, 0x90, 0x61, 0x60, 0x03, 0x3d, 0x18, 0x64, 0x20, 0xda, 0x40, 0x0f, 0x4c, 0x08, 0xc4, 0x7f, 0x90, 0x21, 0x50, 0x03, 0x3b, 0x18, 0x64, 0x08, 0x0e, 0x3b, 0x98, 0x25, 0x28, 0x06, 0x19, 0x90, 0x38, 0xc8, 0x83, 0x59, 0x82, 0x62, 0xa0, 0x23, 0x20, 0x06, 0x81, 0x90, 0x84, 0x39, 0x86, 0x39, 0x80, 0xe6, 0x61, 0x90, 0x21, 0xa0, 0x03, 0x3e, 0xb0, 0x21, 0x10, 0xff, 0x7d, 0x0c, 0xb2, 0x40, 0x0e, 0xf9, 0x40, 0x41, 0x50, 0x6c, 0x08, 0xc4, 0x7f, 0x96, 0xa0, 0x19, 0x43, 0xb0, 0x85, 0x73, 0xb0, 0xa0, 0x0f, 0xc4, 0xdf, 0x82, 0x3e, 0x00, 0xff, 0x11, 0x03, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0x2b, 0x24, 0x02, 0x0b, 0x85, 0x20, 0xfc, 0xf7, 0x31, 0xe8, 0x02, 0x3b, 0xcc, 0x02, 0x05, 0x40, 0xb1, 0x21, 0x10, 0xff, 0x11, 0x83, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0x2e, 0x25, 0x4a, 0x21, 0x18, 0x43, 0xf8, 0x05, 0x56, 0x18, 0x31, 0x38, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xe8, 0x56, 0xe2, 0x14, 0x02, 0x0b, 0x06, 0xf1, 0xdf, 0xc7, 0x10, 0x0e, 0xf3, 0x90, 0x0b, 0x14, 0x00, 0x63, 0x38, 0x62, 0x08, 0x08, 0xff, 0x98, 0x65, 0x68, 0x8e, 0x60, 0xb8, 0x41, 0x0c, 0x50, 0x02, 0x0c, 0xf6, 0x31, 0x94, 0xc3, 0x3d, 0xac, 0xc4, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0x80, 0x15, 0x74, 0xc1, 0x02, 0x52, 0x10, 0xff, 0x7d, 0x14, 0xea, 0xc0, 0x0f, 0x30, 0xe1, 0x12, 0xb8, 0x70, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0x88, 0x85, 0x5f, 0xb0, 0x60, 0x14, 0xc4, 0xdf, 0x02, 0x03, 0xfc, 0xf7, 0x51, 0xc0, 0x83, 0x48, 0xd8, 0x04, 0x4d, 0xf4, 0xc2, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0xe0, 0x16, 0xca, 0xc1, 0x8a, 0x00, 0xfc, 0x07, 0x19, 0x02, 0x5a, 0x40, 0x87, 0x59, 0x06, 0x24, 0x91, 0xf6, 0x31, 0xd8, 0x03, 0x4a, 0xc8, 0x04, 0x05, 0xc0, 0xb0, 0xa0, 0x17, 0xc4, 0x7f, 0x1f, 0x43, 0x3e, 0xac, 0x44, 0x3d, 0x50, 0x20, 0x94, 0x7d, 0x0c, 0xfb, 0xd0, 0x12, 0xf2, 0x40, 0x01, 0x40, 0xe6, 0x18, 0x7e, 0x21, 0x08, 0x8b, 0x41, 0x86, 0x00, 0x1c, 0xe4, 0xc1, 0x8a, 0x20, 0xfc, 0x47, 0x0c, 0x8c, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0x3e, 0xb5, 0x58, 0x2c, 0x10, 0xc2, 0x7f, 0x0c, 0x21, 0xa0, 0x89, 0x31, 0x04, 0x21, 0x1e, 0x46, 0x0c, 0x8e, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0xba, 0xb7, 0x10, 0x82, 0x11, 0x83, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0x2e, 0x2e, 0x02, 0x77, 0x18, 0x31, 0x38, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xd8, 0xe6, 0xa2, 0x30, 0x87, 0x11, 0x83, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0xac, 0x2e, 0x82, 0x60, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0xba, 0x8b, 0xc0, 0xa2, 0x26, 0xfc, 0x2d, 0x28, 0xc0, 0xdf, 0x82, 0x01, 0xfc, 0x2d, 0xa8, 0xc8, 0x7f, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0xea, 0x8b, 0x60, 0x1f, 0x83, 0x4b, 0x80, 0x45, 0x5d, 0x50, 0x10, 0x94, 0x7d, 0x0c, 0x30, 0x21, 0x16, 0x73, 0x41, 0x41, 0x50, 0xe6, 0x18, 0xec, 0xa1, 0xb0, 0x8b, 0x41, 0x86, 0xe0, 0x1e, 0xfe, 0x61, 0xc4, 0x00, 0x19, 0x42, 0x10, 0x2c, 0xfc, 0xa3, 0x2a, 0x8d, 0x62, 0x08, 0xe6, 0x18, 0xf2, 0xc1, 0x16, 0xf2, 0x62, 0x8e, 0x41, 0x1f, 0xec, 0x40, 0x2f, 0x2c, 0x10, 0xc4, 0x7f, 0x90, 0x21, 0xe0, 0x07, 0x92, 0xb0, 0xa0, 0x10, 0xff, 0x59, 0x82, 0x66, 0x1f, 0x83, 0x4e, 0xb0, 0x85, 0x4d, 0x50, 0x20, 0x14, 0x3b, 0x83, 0x80, 0xfc, 0x47, 0x0c, 0x1a, 0x21, 0x04, 0xc1, 0x60, 0x7a, 0x0d, 0x9e, 0xd8, 0x89, 0x60, 0x26, 0x62, 0x42, 0x26, 0x4c, 0xc2, 0x24, 0x42, 0x63, 0x34, 0x21, 0x00, 0xf6, 0x31, 0xfc, 0x44, 0x5c, 0xf0, 0x04, 0x05, 0x06, 0x19, 0xe6, 0x30, 0x02, 0xa6, 0x51, 0x98, 0x65, 0x90, 0x61, 0x28, 0x89, 0x99, 0x18, 0x64, 0x20, 0x4c, 0x62, 0x26, 0x4c, 0x08, 0xc4, 0x7f, 0x90, 0x21, 0x18, 0x89, 0x97, 0x18, 0x64, 0x08, 0x8e, 0x97, 0x98, 0x25, 0x60, 0x06, 0x19, 0x10, 0x95, 0x90, 0x89, 0x59, 0x02, 0x66, 0xa0, 0x23, 0x20, 0x14, 0x61, 0x91, 0x92, 0x39, 0x06, 0x96, 0x48, 0x07, 0xd6, 0x98, 0x63, 0x68, 0x89, 0x54, 0x68, 0x8d, 0x7d, 0x0c, 0x6a, 0xc1, 0x17, 0xb1, 0x41, 0x41, 0x50, 0x6c, 0x20, 0xc4, 0x7f, 0x90, 0x21, 0x88, 0x89, 0x9c, 0xb0, 0xe0, 0x10, 0x7f, 0x0b, 0x08, 0xf1, 0x9f, 0x25, 0x68, 0x06, 0x5a, 0x02, 0xbc, 0x28, 0xcc, 0x04, 0x70, 0x03, 0x44, 0x60, 0xcc, 0xc4, 0xc8, 0x20, 0x20, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x2a, 0xc8, 0x87, 0x2d, 0xc3, 0x15, 0xe4, 0xc3, 0x96, 0x21, 0x0c, 0x02, 0x7f, 0xd8, 0x32, 0x9c, 0x41, 0xf0, 0x0f, 0x5b, 0x06, 0x3b, 0x08, 0xf2, 0x61, 0xcb, 0xf0, 0x07, 0x01, 0x48, 0x6c, 0x19, 0x4c, 0x21, 0x08, 0x89, 0x2d, 0x43, 0x2f, 0x04, 0x22, 0xb1, 0x65, 0x00, 0x87, 0x20, 0x1f, 0xb6, 0x0c, 0xe2, 0x10, 0x8c, 0xc4, 0x96, 0x41, 0x1e, 0x06, 0x92, 0xd8, 0x32, 0xd4, 0x43, 0x90, 0x0f, 0x5b, 0x86, 0x7b, 0x08, 0xf2, 0x61, 0xcb, 0x20, 0x12, 0x41, 0x3e, 0x6c, 0x19, 0x46, 0x62, 0x20, 0x89, 0x2d, 0xc3, 0x49, 0x04, 0xff, 0xb0, 0x65, 0xa8, 0x89, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x0e, 0x10, 0x22, 0x84, 0x00, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0c, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0xf0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x24, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x0c, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0x22, 0x02, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x41, 0x41, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x32, 0x64, 0x2e, 0x76, 0x34, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x6d, 0x69, 0x78, 0x2e, 0x76, 0x34, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x71, 0x72, 0x74, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x64, 0x6f, 0x74, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x61, 0x78, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x69, 0x6e, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x61, 0x78, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x62, 0x73, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x62, 0x73, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x61, 0x69, 0x72, 0x36, 0x34, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2d, 0x69, 0x6f, 0x73, 0x31, 0x33, 0x2e, 0x32, 0x2e, 0x30, 0x2d, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; unsigned int mnvg_bitcode_simulator_len = 14893; tvos.h000066400000000000000000002626121461511344300327540ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/src/mnvg_bitcodeunsigned char mnvg_bitcode_tvos[] = { 0x4d, 0x54, 0x4c, 0x42, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x0d, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0x91, 0x1f, 0x1f, 0x5a, 0xea, 0x22, 0xed, 0x3f, 0xa2, 0xa6, 0x80, 0x14, 0x4c, 0x05, 0xe4, 0x57, 0x91, 0x74, 0x48, 0xb0, 0x28, 0x52, 0x46, 0xd5, 0x91, 0x6b, 0x4e, 0x46, 0xd3, 0xe8, 0xd5, 0x52, 0x4d, 0x44, 0x53, 0x5a, 0x08, 0x00, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x84, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x0f, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x01, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0x17, 0x5b, 0x48, 0xc1, 0x1c, 0x53, 0x85, 0x2e, 0x80, 0xad, 0x2a, 0x15, 0xaf, 0x6b, 0x2e, 0xc5, 0xcd, 0xff, 0x11, 0xb3, 0x29, 0xef, 0x98, 0x29, 0x3f, 0x21, 0xbe, 0x57, 0xde, 0xc2, 0x63, 0x57, 0x4d, 0x44, 0x53, 0x5a, 0x08, 0x00, 0x80, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x86, 0x00, 0x00, 0x00, 0x4e, 0x41, 0x4d, 0x45, 0x11, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x41, 0x41, 0x00, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x01, 0x48, 0x41, 0x53, 0x48, 0x20, 0x00, 0xb8, 0xda, 0xd9, 0x75, 0x70, 0xb2, 0xb2, 0xf6, 0x0c, 0x57, 0x7e, 0xb9, 0x81, 0x71, 0x6e, 0x92, 0x59, 0xc2, 0xb9, 0x97, 0xd5, 0x9a, 0x35, 0x49, 0x9b, 0xd6, 0x5e, 0x0b, 0xc8, 0x65, 0x97, 0x8c, 0x4d, 0x44, 0x53, 0x5a, 0x08, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x46, 0x46, 0x54, 0x18, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x53, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x45, 0x4e, 0x44, 0x54, 0x25, 0x00, 0x00, 0x00, 0x56, 0x41, 0x54, 0x54, 0x11, 0x00, 0x02, 0x00, 0x70, 0x6f, 0x73, 0x00, 0x00, 0x80, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x01, 0x80, 0x56, 0x41, 0x54, 0x59, 0x04, 0x00, 0x02, 0x00, 0x04, 0x04, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0x04, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x44, 0x54, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x35, 0x14, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, 0x0c, 0x30, 0x24, 0x80, 0x10, 0x05, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x21, 0x0c, 0x00, 0x00, 0xc5, 0x02, 0x00, 0x00, 0x0b, 0x02, 0x21, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x10, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0x84, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x42, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0x04, 0x49, 0x0e, 0x90, 0x11, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x21, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80, 0x03, 0x40, 0x02, 0x2a, 0x62, 0x1c, 0xde, 0x41, 0x1e, 0xe4, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xd8, 0x21, 0x1f, 0xda, 0x40, 0x1e, 0xde, 0xa1, 0x1e, 0xdc, 0x81, 0x1c, 0xca, 0x81, 0x1c, 0xda, 0x80, 0x1c, 0xd2, 0xc1, 0x1e, 0xd2, 0x81, 0x1c, 0xca, 0xa1, 0x0d, 0xe6, 0x21, 0x1e, 0xe4, 0x81, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x72, 0x48, 0x87, 0x79, 0x08, 0x07, 0x71, 0x60, 0x87, 0x72, 0x68, 0x03, 0x7a, 0x08, 0x87, 0x74, 0x60, 0x87, 0x36, 0x18, 0x87, 0x70, 0x60, 0x07, 0x76, 0x98, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0x82, 0x1d, 0xca, 0x61, 0x1e, 0xe6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xca, 0x61, 0x1c, 0xd2, 0x61, 0x1e, 0xca, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0x21, 0x1c, 0xc8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x18, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1c, 0xe4, 0x21, 0x1c, 0xda, 0xa1, 0x1c, 0xda, 0x00, 0x1e, 0xde, 0x21, 0x1d, 0xdc, 0x81, 0x1e, 0xca, 0x41, 0x1e, 0xda, 0xa0, 0x1c, 0xd8, 0x21, 0x1d, 0xda, 0xa1, 0x0d, 0xdc, 0xe1, 0x1d, 0xdc, 0xa1, 0x0d, 0xd8, 0xa1, 0x1c, 0xc2, 0xc1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd2, 0xc1, 0x1d, 0xcc, 0x61, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x75, 0xa8, 0x87, 0x76, 0x80, 0x87, 0x36, 0xa0, 0x87, 0x70, 0x10, 0x07, 0x76, 0x28, 0x87, 0x79, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1d, 0xc2, 0xc1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x98, 0x87, 0x74, 0x38, 0x07, 0x77, 0x28, 0x07, 0x72, 0x68, 0x03, 0x7d, 0x28, 0x07, 0x79, 0x78, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0x01, 0x1e, 0xe0, 0x21, 0x1d, 0xdc, 0xe1, 0x1c, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x88, 0x79, 0xa0, 0x87, 0x70, 0x18, 0x87, 0x75, 0x68, 0x03, 0x78, 0x90, 0x87, 0x77, 0xa0, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x78, 0x07, 0x79, 0x68, 0x03, 0x71, 0xa8, 0x07, 0x73, 0x30, 0x87, 0x72, 0x90, 0x87, 0x36, 0x98, 0x87, 0x74, 0xd0, 0x87, 0x72, 0x00, 0xf0, 0x00, 0x20, 0xea, 0xc1, 0x1d, 0xe6, 0x21, 0x1c, 0xcc, 0xa1, 0x1c, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0xa8, 0x87, 0x79, 0x28, 0x87, 0x36, 0x98, 0x87, 0x77, 0x30, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x60, 0x87, 0x77, 0x08, 0x07, 0x7a, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0xd8, 0xb0, 0x08, 0x03, 0x90, 0x00, 0x0b, 0x50, 0x05, 0x69, 0x80, 0x00, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x84, 0x40, 0x00, 0x89, 0x20, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x32, 0x22, 0x08, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x22, 0xa4, 0x84, 0x04, 0x13, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x88, 0x8c, 0x0b, 0x84, 0x84, 0x4c, 0x10, 0x30, 0x33, 0x00, 0xc3, 0x08, 0x04, 0x30, 0x8c, 0x20, 0x00, 0x57, 0x49, 0x53, 0x44, 0x09, 0x93, 0xbf, 0x02, 0xd2, 0x44, 0x44, 0x48, 0x46, 0x44, 0x1d, 0x30, 0x01, 0x68, 0x08, 0x91, 0x41, 0x04, 0x41, 0x28, 0xc4, 0x88, 0x10, 0xd5, 0x40, 0xc0, 0x1c, 0x01, 0x18, 0xa4, 0x00, 0xce, 0x11, 0x80, 0xc2, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xac, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x03, 0x7a, 0xb0, 0x87, 0x77, 0x98, 0x87, 0x38, 0x98, 0x03, 0x37, 0x90, 0x03, 0x37, 0x80, 0x83, 0x0d, 0xb7, 0x51, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x40, 0x07, 0x78, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x90, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x90, 0x07, 0x72, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xd0, 0x06, 0xee, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x1a, 0x21, 0x0c, 0xc9, 0x54, 0x44, 0x34, 0x11, 0x17, 0x7b, 0x00, 0x03, 0x11, 0x0d, 0x89, 0x00, 0xa6, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0d, 0x02, 0x45, 0x8f, 0x05, 0x00, 0x00, 0xb2, 0x40, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x10, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0xc2, 0x22, 0x28, 0x81, 0x42, 0x18, 0x01, 0x28, 0x08, 0x82, 0x31, 0x02, 0x10, 0x04, 0x41, 0x11, 0x0c, 0x28, 0xc7, 0x12, 0x1a, 0x01, 0x00, 0x00, 0x00, 0xb1, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x79, 0x20, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x62, 0x1e, 0x48, 0x20, 0x43, 0x88, 0x0c, 0x19, 0x39, 0x19, 0x24, 0x90, 0x91, 0x40, 0xc6, 0xc8, 0xc8, 0x68, 0x22, 0x50, 0x08, 0x14, 0x32, 0x9e, 0x18, 0x19, 0x21, 0x47, 0xc8, 0x90, 0x51, 0x04, 0x03, 0xae, 0x95, 0x00, 0x8b, 0xb2, 0x06, 0xc5, 0xc6, 0x91, 0x41, 0x18, 0x90, 0xc1, 0x19, 0x30, 0x91, 0xc1, 0x0c, 0x51, 0x65, 0x10, 0xd8, 0x01, 0x49, 0xd4, 0x65, 0x28, 0x0f, 0x12, 0x5d, 0x08, 0x53, 0x44, 0x4b, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x77, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x4c, 0x4c, 0x56, 0x4d, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x20, 0x28, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x66, 0x65, 0x2d, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x29, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x70, 0x6f, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x34, 0x66, 0x70, 0x6f, 0x73, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x66, 0x70, 0x6f, 0x73, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x37, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x61, 0x69, 0x72, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x33, 0x70, 0x6f, 0x73, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x36, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x80, 0x04, 0x23, 0x08, 0xc9, 0x31, 0x82, 0x80, 0x08, 0x23, 0x08, 0xc8, 0x30, 0x82, 0x80, 0x10, 0x23, 0x08, 0x06, 0x30, 0x82, 0x80, 0x14, 0x33, 0x0c, 0x61, 0x10, 0x88, 0xc1, 0x0c, 0xc3, 0x18, 0x08, 0x64, 0x30, 0x43, 0x30, 0xcc, 0x30, 0x84, 0x41, 0x18, 0x94, 0xc1, 0x0c, 0x04, 0x11, 0x06, 0x61, 0x50, 0x06, 0x33, 0x04, 0xc5, 0x0c, 0x81, 0x31, 0x43, 0x70, 0xcc, 0x10, 0x20, 0x33, 0x04, 0xc9, 0x0c, 0x81, 0x32, 0x43, 0xb1, 0x30, 0x8d, 0xf3, 0xcc, 0x60, 0x40, 0x11, 0x23, 0x39, 0xd3, 0x0c, 0x06, 0x44, 0x31, 0x92, 0x53, 0xcd, 0x30, 0xcc, 0x01, 0x1d, 0xd4, 0xc1, 0x0c, 0x4a, 0x19, 0x58, 0x57, 0x19, 0x8c, 0x01, 0xc6, 0x48, 0xce, 0x33, 0x83, 0x32, 0x06, 0xd6, 0x35, 0x06, 0x63, 0x90, 0x31, 0x92, 0xa3, 0xcd, 0x00, 0x85, 0xc1, 0xc6, 0x9d, 0xc1, 0x35, 0x06, 0x63, 0xd0, 0x79, 0x67, 0xf0, 0x9d, 0x01, 0x23, 0x39, 0x60, 0x30, 0xc3, 0x70, 0x07, 0x78, 0x90, 0x07, 0x33, 0x0c, 0x66, 0x60, 0x07, 0x7a, 0x70, 0x1b, 0xc0, 0x71, 0x1c, 0xc7, 0x71, 0x9c, 0x1b, 0xb8, 0x81, 0x45, 0x07, 0x7a, 0x60, 0x59, 0x96, 0x65, 0x59, 0x6e, 0x40, 0x07, 0x74, 0x40, 0x07, 0xbe, 0xe0, 0x0b, 0x3a, 0x41, 0x07, 0x32, 0x12, 0x98, 0xa0, 0x8c, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xda, 0xde, 0xc8, 0xea, 0xd8, 0xca, 0x5c, 0xcc, 0xd8, 0xc2, 0xce, 0xe6, 0x46, 0x11, 0xce, 0x00, 0x0d, 0x52, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x1b, 0x25, 0x48, 0x83, 0x5c, 0xc2, 0xd2, 0xe4, 0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x46, 0x09, 0xd4, 0x20, 0xa9, 0xb0, 0x34, 0x39, 0x17, 0xb6, 0x30, 0xb7, 0xb3, 0xba, 0xb0, 0xb3, 0xb2, 0x2f, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x51, 0x82, 0x35, 0xc8, 0x29, 0x2c, 0x4d, 0xce, 0x65, 0xec, 0xad, 0x0d, 0x2e, 0x8d, 0xad, 0xec, 0xeb, 0x0d, 0x8e, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x14, 0x83, 0x0d, 0xda, 0xc0, 0x0d, 0xde, 0x00, 0x0e, 0xe2, 0x20, 0x95, 0xb0, 0x34, 0x39, 0x17, 0xbb, 0x32, 0x39, 0xba, 0x32, 0xbc, 0x51, 0x02, 0x3d, 0x00, 0x00, 0x00, 0xa9, 0x18, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x72, 0x28, 0x87, 0x77, 0x80, 0x07, 0x7a, 0x58, 0x70, 0x98, 0x43, 0x3d, 0xb8, 0xc3, 0x38, 0xb0, 0x43, 0x39, 0xd0, 0xc3, 0x82, 0xe6, 0x1c, 0xc6, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0xc1, 0x1d, 0xe6, 0x21, 0x1d, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x00, 0xd1, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0xcc, 0x3c, 0xa4, 0x83, 0x3b, 0x9c, 0x03, 0x3b, 0x94, 0x03, 0x3d, 0xa0, 0x83, 0x3c, 0x94, 0x43, 0x38, 0x90, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa4, 0x23, 0x00, 0x25, 0x40, 0x30, 0x46, 0x00, 0x82, 0x20, 0x08, 0x82, 0xc1, 0x18, 0x01, 0x08, 0x82, 0x20, 0xfe, 0xcd, 0x00, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xe2, 0xbf, 0x30, 0x02, 0x40, 0x31, 0x07, 0xf1, 0x3c, 0x91, 0x43, 0x33, 0x03, 0x00, 0xf1, 0x30, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x04, 0xc0, 0xd8, 0x10, 0xf0, 0x01, 0x00, 0x63, 0x08, 0x4c, 0x62, 0x01, 0x22, 0xfe, 0xc4, 0x08, 0x19, 0x43, 0x08, 0x18, 0x1b, 0x02, 0xf2, 0xb7, 0x20, 0x01, 0xff, 0x31, 0x04, 0xc9, 0xb1, 0xc0, 0x11, 0xff, 0x31, 0x04, 0x03, 0x32, 0x21, 0x20, 0x7f, 0x83, 0x82, 0xf0, 0x9f, 0x63, 0x68, 0x8c, 0x6d, 0x8e, 0x21, 0x10, 0xbc, 0xd9, 0x06, 0x27, 0x00, 0x66, 0x1b, 0x02, 0x2d, 0x98, 0x6d, 0x08, 0x34, 0x21, 0x83, 0x80, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x62, 0xe0, 0x83, 0x2d, 0x43, 0x32, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x0e, 0x10, 0x22, 0x84, 0x00, 0x9f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0c, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x0c, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x61, 0x69, 0x72, 0x36, 0x34, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2d, 0x74, 0x76, 0x6f, 0x73, 0x31, 0x33, 0x2e, 0x32, 0x2e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x68, 0x15, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x35, 0x14, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, 0x0c, 0x30, 0x24, 0x80, 0x10, 0x05, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x21, 0x0c, 0x00, 0x00, 0xb8, 0x04, 0x00, 0x00, 0x0b, 0x02, 0x21, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0x04, 0x49, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x58, 0x03, 0x40, 0x02, 0x2a, 0x62, 0x1c, 0xde, 0x41, 0x1e, 0xe4, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xd8, 0x21, 0x1f, 0xda, 0x40, 0x1e, 0xde, 0xa1, 0x1e, 0xdc, 0x81, 0x1c, 0xca, 0x81, 0x1c, 0xda, 0x80, 0x1c, 0xd2, 0xc1, 0x1e, 0xd2, 0x81, 0x1c, 0xca, 0xa1, 0x0d, 0xe6, 0x21, 0x1e, 0xe4, 0x81, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x72, 0x48, 0x87, 0x79, 0x08, 0x07, 0x71, 0x60, 0x87, 0x72, 0x68, 0x03, 0x7a, 0x08, 0x87, 0x74, 0x60, 0x87, 0x36, 0x18, 0x87, 0x70, 0x60, 0x07, 0x76, 0x98, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0x82, 0x1d, 0xca, 0x61, 0x1e, 0xe6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xca, 0x61, 0x1c, 0xd2, 0x61, 0x1e, 0xca, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0x21, 0x1c, 0xc8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x18, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1c, 0xe4, 0x21, 0x1c, 0xda, 0xa1, 0x1c, 0xda, 0x00, 0x1e, 0xde, 0x21, 0x1d, 0xdc, 0x81, 0x1e, 0xca, 0x41, 0x1e, 0xda, 0xa0, 0x1c, 0xd8, 0x21, 0x1d, 0xda, 0xa1, 0x0d, 0xdc, 0xe1, 0x1d, 0xdc, 0xa1, 0x0d, 0xd8, 0xa1, 0x1c, 0xc2, 0xc1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd2, 0xc1, 0x1d, 0xcc, 0x61, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x75, 0xa8, 0x87, 0x76, 0x80, 0x87, 0x36, 0xa0, 0x87, 0x70, 0x10, 0x07, 0x76, 0x28, 0x87, 0x79, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1d, 0xc2, 0xc1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x98, 0x87, 0x74, 0x38, 0x07, 0x77, 0x28, 0x07, 0x72, 0x68, 0x03, 0x7d, 0x28, 0x07, 0x79, 0x78, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0x01, 0x1e, 0xe0, 0x21, 0x1d, 0xdc, 0xe1, 0x1c, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x88, 0x79, 0xa0, 0x87, 0x70, 0x18, 0x87, 0x75, 0x68, 0x03, 0x78, 0x90, 0x87, 0x77, 0xa0, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x78, 0x07, 0x79, 0x68, 0x03, 0x71, 0xa8, 0x07, 0x73, 0x30, 0x87, 0x72, 0x90, 0x87, 0x36, 0x98, 0x87, 0x74, 0xd0, 0x87, 0x72, 0x00, 0xf0, 0x00, 0x20, 0xea, 0xc1, 0x1d, 0xe6, 0x21, 0x1c, 0xcc, 0xa1, 0x1c, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0xa8, 0x87, 0x79, 0x28, 0x87, 0x36, 0x98, 0x87, 0x77, 0x30, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x60, 0x87, 0x77, 0x08, 0x07, 0x7a, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0xd8, 0x90, 0x08, 0x04, 0x90, 0x00, 0x55, 0x90, 0x06, 0x70, 0xb1, 0xc1, 0x18, 0x0c, 0x60, 0x01, 0xaa, 0x0d, 0x0a, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x03, 0xd0, 0x06, 0xc0, 0x1a, 0x00, 0x12, 0x50, 0x6d, 0x30, 0x8a, 0x00, 0x58, 0x80, 0x6a, 0x83, 0x61, 0x08, 0xc0, 0x02, 0x54, 0x1b, 0x8c, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0x28, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x0c, 0x44, 0x61, 0x4c, 0x08, 0x0e, 0x00, 0x89, 0x20, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xb8, 0xc1, 0x0c, 0xc0, 0x30, 0x02, 0x01, 0x0c, 0x23, 0x08, 0xc0, 0x30, 0xc2, 0x00, 0xe4, 0xc0, 0x30, 0x13, 0x35, 0x0f, 0xf4, 0x20, 0x0f, 0xf5, 0x30, 0x0e, 0xf4, 0xe0, 0x06, 0xed, 0x50, 0x0e, 0xf4, 0x10, 0x0e, 0xec, 0xa0, 0x07, 0x7a, 0xd0, 0x0e, 0xe1, 0x40, 0x0f, 0xf2, 0x90, 0x0e, 0xf8, 0x80, 0x02, 0x62, 0x8e, 0x00, 0x0c, 0xee, 0x91, 0xa6, 0x88, 0x12, 0x26, 0xdf, 0x6d, 0x90, 0xc2, 0x89, 0x18, 0x09, 0x35, 0x45, 0x11, 0x04, 0x82, 0x20, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x20, 0xc2, 0x21, 0x1c, 0x25, 0x4d, 0x11, 0x25, 0x4c, 0xfe, 0x3f, 0x11, 0xd7, 0x44, 0x45, 0xc4, 0x6f, 0x0f, 0xff, 0x34, 0x46, 0x00, 0x0c, 0x22, 0x24, 0xc1, 0x45, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xff, 0x12, 0xc0, 0x3c, 0x0b, 0x11, 0xfd, 0xd3, 0x18, 0x01, 0x30, 0x88, 0xb0, 0x08, 0xe5, 0x08, 0x02, 0x41, 0x40, 0x14, 0x86, 0x9a, 0x39, 0x02, 0xc4, 0x08, 0xc1, 0x33, 0x47, 0x10, 0x0c, 0x23, 0x08, 0x46, 0x51, 0x20, 0x85, 0x11, 0x22, 0x29, 0x02, 0x00, 0x83, 0xa6, 0x42, 0x04, 0x41, 0x10, 0x50, 0x55, 0x04, 0x00, 0xa0, 0xab, 0x0c, 0x80, 0x20, 0x50, 0x56, 0x06, 0x41, 0x10, 0x68, 0x2b, 0x03, 0x00, 0x00, 0xd4, 0x15, 0x41, 0x10, 0xe8, 0x1b, 0x08, 0x48, 0x01, 0x63, 0x10, 0x21, 0x10, 0x86, 0x11, 0x06, 0x63, 0x8e, 0x00, 0x14, 0x06, 0x11, 0x06, 0x61, 0x10, 0x41, 0x10, 0xa6, 0x00, 0x46, 0x00, 0x06, 0x11, 0x0c, 0x61, 0x10, 0xa1, 0x10, 0x06, 0x11, 0x00, 0x61, 0x18, 0x81, 0x30, 0x00, 0x13, 0xac, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x03, 0x7a, 0xb0, 0x87, 0x77, 0x98, 0x87, 0x38, 0x98, 0x03, 0x37, 0x90, 0x03, 0x37, 0x80, 0x83, 0x0d, 0xb7, 0x51, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x40, 0x07, 0x78, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x90, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x90, 0x07, 0x72, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xd0, 0x06, 0xee, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x1a, 0x21, 0x0c, 0xe9, 0x14, 0x11, 0x60, 0x30, 0x44, 0x33, 0xb1, 0x07, 0x30, 0x10, 0xd1, 0x90, 0x08, 0x70, 0x1a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x12, 0x39, 0xdb, 0x04, 0x04, 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0xa2, 0x34, 0x68, 0x2a, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x12, 0xd9, 0x41, 0x75, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x68, 0x15, 0xa2, 0x0b, 0x08, 0x80, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x86, 0x44, 0xbc, 0xd0, 0x64, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x24, 0x4a, 0x87, 0x69, 0x03, 0x02, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x21, 0x11, 0x3f, 0x44, 0x1d, 0x10, 0x00, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x89, 0x5a, 0x22, 0xea, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x60, 0x48, 0xe4, 0x13, 0xd3, 0x07, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0xa2, 0xb8, 0xb8, 0x3e, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0xd8, 0x20, 0x50, 0x54, 0x97, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x32, 0x8a, 0xa0, 0x04, 0x0a, 0x61, 0x04, 0xa0, 0x0c, 0x0a, 0x5c, 0xa0, 0xc0, 0x0a, 0x38, 0xa0, 0x40, 0x0a, 0x3c, 0xa0, 0x00, 0x05, 0x0a, 0xa2, 0x20, 0x05, 0x0a, 0x54, 0xa0, 0x60, 0x05, 0x0a, 0x57, 0xa0, 0x80, 0x05, 0x0a, 0x59, 0xa0, 0xa0, 0x05, 0x0a, 0x5b, 0xa0, 0x14, 0xa8, 0x1c, 0x01, 0x28, 0xb0, 0x02, 0x0e, 0x28, 0xf0, 0x80, 0x02, 0x14, 0x28, 0x48, 0x81, 0x02, 0x15, 0x28, 0x58, 0x81, 0xc2, 0x15, 0x28, 0x60, 0x81, 0x42, 0x16, 0x28, 0x68, 0x81, 0xc2, 0x16, 0x20, 0x60, 0x8c, 0x00, 0x04, 0x41, 0x50, 0x04, 0x03, 0x12, 0xc7, 0x12, 0x1a, 0x01, 0x00, 0x00, 0xb1, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x79, 0x20, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x62, 0x1e, 0x48, 0x20, 0x43, 0x88, 0x0c, 0x19, 0x39, 0x19, 0x24, 0x90, 0x91, 0x40, 0xc6, 0xc8, 0xc8, 0x68, 0x22, 0x50, 0x08, 0x14, 0x32, 0x9e, 0x18, 0x19, 0x21, 0x47, 0xc8, 0x90, 0x51, 0xc4, 0x03, 0x38, 0xc0, 0x33, 0x8b, 0xb2, 0x06, 0xc5, 0xc6, 0x91, 0x41, 0x18, 0x90, 0xc1, 0x19, 0x44, 0x91, 0xc1, 0x28, 0x12, 0x33, 0x48, 0xd5, 0x63, 0x10, 0xd8, 0xa1, 0x3c, 0x12, 0x42, 0x21, 0x0a, 0x82, 0x20, 0x0a, 0x63, 0x14, 0xc6, 0xa1, 0x24, 0xc3, 0x41, 0x44, 0x17, 0x82, 0x2c, 0x0a, 0x76, 0x2c, 0x07, 0x00, 0x00, 0x53, 0x44, 0x4b, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x77, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x4c, 0x4c, 0x56, 0x4d, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x20, 0x28, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x66, 0x65, 0x2d, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x29, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x6e, 0x6f, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x70, 0x6f, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x34, 0x66, 0x70, 0x6f, 0x73, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x66, 0x70, 0x6f, 0x73, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x37, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x66, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x54, 0x68, 0x72, 0x69, 0x6e, 0x74, 0x74, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0xa6, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x60, 0x2c, 0x23, 0x08, 0x62, 0xe0, 0x06, 0x23, 0x08, 0x06, 0x33, 0x82, 0x60, 0x34, 0x23, 0x08, 0x86, 0x33, 0x82, 0xe0, 0x00, 0x23, 0x08, 0xc6, 0x33, 0x82, 0x60, 0x40, 0x23, 0x08, 0x46, 0x34, 0x82, 0x60, 0x48, 0x23, 0x08, 0xc6, 0x34, 0x82, 0x60, 0x50, 0x23, 0x08, 0x46, 0x35, 0x82, 0x60, 0x58, 0x23, 0x08, 0xc6, 0x35, 0x82, 0x60, 0x60, 0x23, 0x08, 0x46, 0x36, 0x82, 0x60, 0x68, 0x23, 0x08, 0xc6, 0x36, 0x82, 0x60, 0x70, 0x23, 0x08, 0x46, 0x37, 0x82, 0x60, 0x78, 0x23, 0x08, 0xc6, 0x37, 0xc3, 0x90, 0x07, 0x81, 0x1e, 0xcc, 0x30, 0xec, 0x81, 0xc0, 0x07, 0x33, 0x04, 0xc3, 0x0c, 0x43, 0x1e, 0xe4, 0x41, 0x1f, 0xcc, 0x40, 0x10, 0x79, 0x90, 0x07, 0x7d, 0x30, 0x43, 0x50, 0xcc, 0x10, 0x18, 0x33, 0x04, 0xc7, 0x0c, 0x01, 0x32, 0x43, 0x90, 0xcc, 0x10, 0x28, 0x33, 0x14, 0x4b, 0x1f, 0xf4, 0x01, 0xd3, 0xcc, 0x10, 0xec, 0xc2, 0x0c, 0x48, 0x1f, 0x38, 0x0f, 0xc4, 0x34, 0x91, 0x34, 0x43, 0xb2, 0x07, 0x13, 0xf5, 0x54, 0x8c, 0x15, 0x5d, 0x33, 0x24, 0x79, 0x30, 0x61, 0x4f, 0xc5, 0x58, 0x51, 0x36, 0x43, 0x28, 0xf4, 0x41, 0x28, 0xf4, 0xc1, 0x07, 0x06, 0xa1, 0x10, 0x0a, 0x7d, 0xf0, 0x85, 0x81, 0x28, 0x8c, 0x42, 0x1f, 0x34, 0x62, 0x40, 0x0a, 0xa3, 0xd0, 0x07, 0xcd, 0x18, 0x94, 0x82, 0x29, 0xf4, 0x81, 0x45, 0x06, 0xa7, 0x60, 0x0a, 0x7d, 0x60, 0x95, 0x01, 0x2a, 0x98, 0x42, 0x1f, 0x58, 0x66, 0x90, 0x0a, 0x7c, 0xd0, 0x07, 0x67, 0x80, 0x06, 0xaa, 0xc0, 0x07, 0x7d, 0x70, 0x06, 0x69, 0xb0, 0x0a, 0x7c, 0xd0, 0x07, 0x67, 0xa0, 0x06, 0xac, 0xc0, 0x07, 0x7d, 0x70, 0x06, 0x6b, 0xd0, 0x0a, 0x7c, 0xd0, 0x07, 0x6c, 0xd0, 0x06, 0xae, 0xc0, 0x07, 0x7d, 0xc0, 0x06, 0x6e, 0x30, 0x83, 0xf4, 0x07, 0xda, 0x06, 0x0a, 0x5c, 0x1f, 0xec, 0x41, 0xe7, 0x81, 0xc3, 0x1b, 0x80, 0x02, 0x1c, 0x8c, 0x02, 0x13, 0x07, 0x91, 0x1c, 0xcc, 0xa0, 0xf0, 0xc1, 0x1c, 0x70, 0x7d, 0xb0, 0x07, 0x74, 0xc0, 0xd4, 0x41, 0x64, 0x07, 0x33, 0x24, 0xaf, 0x70, 0x07, 0x5c, 0x1f, 0xec, 0x01, 0x83, 0x07, 0x11, 0x1e, 0xcc, 0x60, 0xf4, 0x82, 0x2f, 0xfc, 0x42, 0x38, 0x88, 0xc3, 0x38, 0xcc, 0x30, 0xf8, 0x01, 0x2f, 0x90, 0xc3, 0xb5, 0x01, 0xc0, 0xa1, 0x01, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xe7, 0x06, 0x6e, 0x60, 0xd1, 0x81, 0x1e, 0x58, 0x96, 0x65, 0x59, 0x96, 0x1e, 0x70, 0xa6, 0xc0, 0x0a, 0xac, 0x80, 0x5f, 0x7e, 0x61, 0x0f, 0xea, 0x80, 0x0b, 0x32, 0x12, 0x98, 0xa0, 0x8c, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xda, 0xde, 0xc8, 0xea, 0xd8, 0xca, 0x5c, 0xcc, 0xd8, 0xc2, 0xce, 0xe6, 0x46, 0x11, 0x5e, 0x01, 0x16, 0x52, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x1b, 0x25, 0x88, 0x85, 0x5c, 0xc2, 0xd2, 0xe4, 0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x46, 0x09, 0x64, 0x21, 0xa9, 0xb0, 0x34, 0x39, 0x17, 0xb6, 0x30, 0xb7, 0xb3, 0xba, 0xb0, 0xb3, 0xb2, 0x2f, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x51, 0x82, 0x59, 0xc8, 0x29, 0x2c, 0x4d, 0xce, 0x65, 0xec, 0xad, 0x0d, 0x2e, 0x8d, 0xad, 0xec, 0xeb, 0x0d, 0x8e, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x14, 0x83, 0x16, 0x6a, 0xc1, 0x16, 0x6e, 0x01, 0x17, 0x72, 0x21, 0x99, 0xb0, 0x34, 0x39, 0x17, 0x33, 0xb9, 0xb0, 0xb3, 0xb6, 0x32, 0x37, 0xba, 0x51, 0x02, 0x72, 0x00, 0x00, 0xa9, 0x18, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x72, 0x28, 0x87, 0x77, 0x80, 0x07, 0x7a, 0x58, 0x70, 0x98, 0x43, 0x3d, 0xb8, 0xc3, 0x38, 0xb0, 0x43, 0x39, 0xd0, 0xc3, 0x82, 0xe6, 0x1c, 0xc6, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0xc1, 0x1d, 0xe6, 0x21, 0x1d, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x00, 0xd1, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0xcc, 0x3c, 0xa4, 0x83, 0x3b, 0x9c, 0x03, 0x3b, 0x94, 0x03, 0x3d, 0xa0, 0x83, 0x3c, 0x94, 0x43, 0x38, 0x90, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0x13, 0x04, 0x4c, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x64, 0x14, 0x43, 0x59, 0x14, 0x46, 0x39, 0xcc, 0x00, 0x50, 0x54, 0x03, 0x23, 0x00, 0x24, 0x8d, 0x25, 0x00, 0xc1, 0x08, 0x00, 0x91, 0x63, 0x0d, 0x40, 0x20, 0x8c, 0x35, 0x0c, 0xc3, 0x30, 0x02, 0x30, 0xd6, 0x10, 0x04, 0x01, 0x95, 0x25, 0x50, 0x04, 0xd4, 0x8e, 0x00, 0xcc, 0x41, 0x38, 0xcc, 0x92, 0x07, 0x63, 0x11, 0x40, 0x20, 0x1c, 0x04, 0x8c, 0x00, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xc2, 0x1f, 0x05, 0x33, 0x00, 0x23, 0x00, 0x24, 0xcc, 0x00, 0x8c, 0x25, 0x80, 0x20, 0x08, 0xc2, 0x1f, 0x08, 0x82, 0x20, 0xfc, 0x8d, 0x00, 0xd0, 0x30, 0x03, 0x00, 0x00, 0x00, 0xf1, 0x30, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x22, 0x47, 0xc8, 0x90, 0x51, 0x12, 0x84, 0x2b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xd3, 0x7c, 0x00, 0x6f, 0x6d, 0x6e, 0x69, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x54, 0x42, 0x41, 0x41, 0x5f, 0x5a, 0x54, 0x53, 0x38, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x5a, 0x54, 0x53, 0x4e, 0x35, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x36, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x49, 0x66, 0x4c, 0x69, 0x33, 0x45, 0x4c, 0x69, 0x33, 0x45, 0x76, 0x45, 0x45, 0x00, 0x00, 0x13, 0x84, 0x32, 0x00, 0x83, 0x09, 0x42, 0x19, 0x84, 0xc1, 0x04, 0xa1, 0x0c, 0xc4, 0x60, 0x82, 0x50, 0x06, 0x63, 0x30, 0x41, 0x28, 0x03, 0x32, 0x98, 0x20, 0x94, 0x41, 0x19, 0x4c, 0x10, 0xca, 0xc0, 0x0c, 0x26, 0x08, 0x65, 0x70, 0x06, 0x13, 0x84, 0x32, 0x40, 0x83, 0x09, 0x42, 0x19, 0xa4, 0xc1, 0x04, 0xa1, 0x0c, 0xd4, 0x60, 0x82, 0x50, 0x06, 0x6b, 0x30, 0x41, 0x28, 0x03, 0x36, 0x98, 0x20, 0x00, 0x6d, 0xb0, 0x21, 0x38, 0x87, 0x0d, 0x83, 0x39, 0xe0, 0x83, 0x3a, 0x6c, 0x18, 0xf2, 0x21, 0x1f, 0xd4, 0x61, 0xc3, 0x90, 0x0e, 0xf9, 0xa0, 0x0e, 0x1b, 0x86, 0x33, 0xc8, 0x07, 0x75, 0xd8, 0x30, 0xb0, 0x41, 0x3e, 0xa8, 0xc3, 0x86, 0x0d, 0x1d, 0xf6, 0x41, 0x1d, 0xf6, 0x61, 0x1d, 0xf2, 0x81, 0x1d, 0xf2, 0xa1, 0x1d, 0xf2, 0xc1, 0x1d, 0xf2, 0xe1, 0x1d, 0xf2, 0x01, 0x1e, 0xf8, 0x21, 0x1e, 0xf8, 0x41, 0x1e, 0xf8, 0x61, 0x1e, 0xf8, 0x81, 0x1e, 0xfa, 0xa1, 0x1e, 0xfa, 0xc1, 0x1e, 0x36, 0x0c, 0xfe, 0xd0, 0x0f, 0xf6, 0xb0, 0x61, 0xf0, 0x07, 0x7e, 0x90, 0x87, 0x0d, 0x83, 0x3f, 0xf0, 0x43, 0x3c, 0x6c, 0x08, 0xee, 0x61, 0xc3, 0xe0, 0x0f, 0xfd, 0x50, 0x0f, 0x00, 0x00, 0xd7, 0x8d, 0x4b, 0x41, 0x50, 0x06, 0x19, 0x02, 0x64, 0x1a, 0x64, 0x10, 0x83, 0x43, 0x32, 0x21, 0x10, 0xff, 0x7d, 0x14, 0x62, 0x40, 0x07, 0xa6, 0x60, 0x0a, 0xd2, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0xc0, 0xc9, 0x06, 0x19, 0xd0, 0xa0, 0xb9, 0x4c, 0x08, 0xc4, 0xdf, 0x82, 0x03, 0xfc, 0xf7, 0x51, 0xa4, 0xc1, 0x1e, 0xb4, 0x42, 0x2b, 0x60, 0x17, 0x8c, 0x4b, 0x41, 0x50, 0x06, 0x19, 0x82, 0x0a, 0x0c, 0xac, 0x08, 0xc0, 0x7f, 0x90, 0x21, 0x90, 0xc8, 0x60, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0xc3, 0x85, 0x60, 0x1f, 0x03, 0x1c, 0x88, 0x42, 0x2d, 0x50, 0x20, 0x14, 0x1b, 0x82, 0xf0, 0xdf, 0xc7, 0x30, 0x07, 0xa5, 0x60, 0x0a, 0x14, 0x08, 0xc4, 0x86, 0x40, 0xfc, 0x8d, 0x0b, 0xc2, 0x7f, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0xfb, 0x85, 0x60, 0x0c, 0x21, 0x50, 0x85, 0x31, 0x04, 0x21, 0x0d, 0x4c, 0x08, 0xc4, 0x7f, 0x38, 0x22, 0x30, 0x83, 0xc0, 0x3f, 0x66, 0x19, 0x96, 0x20, 0xd8, 0xc7, 0xc0, 0x07, 0xae, 0x70, 0x07, 0x14, 0x18, 0x63, 0x98, 0xc3, 0x08, 0x0e, 0x47, 0x60, 0x86, 0x7d, 0x0c, 0x7e, 0x00, 0x0b, 0xe4, 0x70, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0x50, 0x83, 0x3a, 0xb0, 0x40, 0x0c, 0xc4, 0x7f, 0x1f, 0xc5, 0x28, 0xd4, 0x42, 0x3a, 0x9c, 0xc3, 0x1c, 0x5c, 0x30, 0x2e, 0x05, 0x41, 0x19, 0x64, 0x08, 0xde, 0x40, 0x0f, 0x2c, 0x08, 0x03, 0xf1, 0xb7, 0xc0, 0x00, 0xff, 0x7d, 0x14, 0xa9, 0xb0, 0x0b, 0xef, 0xd0, 0x0e, 0x78, 0x70, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0xa8, 0x03, 0x50, 0xb0, 0x22, 0x00, 0xff, 0x41, 0x86, 0x40, 0x0e, 0x48, 0x61, 0x1f, 0xc3, 0x2b, 0x84, 0xc3, 0x3a, 0x50, 0x00, 0x0c, 0x0b, 0xf6, 0x40, 0xfc, 0xf7, 0x31, 0xc8, 0x02, 0x39, 0xbc, 0x02, 0x05, 0x42, 0xd9, 0xc7, 0x40, 0x0b, 0xe6, 0xe0, 0x0a, 0x14, 0x00, 0x64, 0x8e, 0xa1, 0x0f, 0x02, 0x7d, 0x18, 0x64, 0x08, 0xfc, 0x80, 0x15, 0xac, 0x08, 0xc2, 0x7f, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0x13, 0x89, 0xc5, 0x02, 0x21, 0xfc, 0xc7, 0x10, 0x82, 0x76, 0x18, 0x43, 0x10, 0x58, 0x61, 0xc4, 0xe0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xa3, 0x3b, 0x09, 0x21, 0x18, 0x31, 0x38, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xe8, 0x52, 0x22, 0x48, 0x85, 0x11, 0x83, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0x6d, 0x25, 0x0a, 0x52, 0x18, 0x31, 0x38, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xc8, 0x5a, 0x22, 0x08, 0x46, 0x0c, 0x8c, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0xae, 0x97, 0x08, 0x2c, 0x6a, 0xc2, 0xdf, 0x82, 0x02, 0xfc, 0x2d, 0x18, 0xc0, 0xdf, 0x82, 0x8a, 0xfc, 0x47, 0x0c, 0x8c, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0xae, 0x9a, 0x08, 0xf6, 0x31, 0x9c, 0x43, 0x3e, 0xb8, 0x04, 0x05, 0x41, 0xd9, 0xc7, 0x90, 0x0e, 0xfb, 0xc0, 0x12, 0x14, 0x04, 0x65, 0x8e, 0x81, 0x16, 0x8a, 0x97, 0x18, 0x64, 0x08, 0x6a, 0x41, 0x17, 0x46, 0x0c, 0x90, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0xaa, 0x9e, 0x28, 0x86, 0x60, 0x8e, 0xe1, 0x16, 0xe8, 0x40, 0x26, 0x06, 0x19, 0x02, 0x5c, 0xe8, 0x05, 0x1b, 0x02, 0xf1, 0x9f, 0x25, 0x58, 0xf6, 0x31, 0xc4, 0xc3, 0x48, 0xdc, 0xc4, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0xa0, 0x17, 0xd0, 0xc1, 0x82, 0x5a, 0x10, 0xff, 0x7d, 0x14, 0xf6, 0x80, 0x12, 0x3c, 0xa1, 0x13, 0xe6, 0x70, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0x10, 0x87, 0x76, 0xb0, 0x80, 0x16, 0xc4, 0xdf, 0x02, 0x03, 0xfc, 0xf7, 0x51, 0xf0, 0x83, 0x4b, 0x88, 0x05, 0x58, 0xac, 0xc3, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0x00, 0x1d, 0xe6, 0xc1, 0x8a, 0x00, 0xfc, 0x07, 0x19, 0x82, 0x72, 0xb8, 0x87, 0x7d, 0x0c, 0x22, 0x41, 0x13, 0xff, 0x40, 0x81, 0x50, 0x6c, 0x08, 0xc8, 0x7f, 0xc4, 0xa0, 0x11, 0x42, 0x10, 0x0c, 0x26, 0xbb, 0x20, 0x89, 0x91, 0x08, 0xfa, 0x41, 0x1f, 0xf8, 0x01, 0x1e, 0xe0, 0x21, 0x2d, 0x46, 0x13, 0x02, 0x60, 0x1f, 0xc3, 0x49, 0xe4, 0xc4, 0x48, 0x50, 0x60, 0x90, 0x61, 0x0e, 0x23, 0x30, 0x18, 0x62, 0x29, 0x06, 0x19, 0x06, 0x79, 0xe8, 0x87, 0x41, 0x06, 0x62, 0x1e, 0xfa, 0xc1, 0x84, 0x40, 0xfc, 0x07, 0x19, 0x02, 0x78, 0xc8, 0x87, 0x41, 0x86, 0xe0, 0xc8, 0x87, 0x59, 0x02, 0x63, 0x90, 0x01, 0xb9, 0x07, 0x7e, 0x98, 0x25, 0x30, 0x06, 0x3a, 0x02, 0x82, 0x10, 0x0a, 0x69, 0x98, 0x63, 0xc8, 0x07, 0x5b, 0xa0, 0x8b, 0x41, 0x86, 0x40, 0x1f, 0xfe, 0xc1, 0x86, 0x40, 0xfc, 0xf7, 0x31, 0xcc, 0x44, 0x59, 0xe8, 0x05, 0x05, 0x41, 0xb1, 0x21, 0x10, 0xff, 0x59, 0x82, 0x65, 0xc4, 0xa0, 0x11, 0x42, 0x10, 0x0c, 0xa6, 0xd3, 0xa8, 0x09, 0x9a, 0xb8, 0x09, 0x97, 0x58, 0x89, 0x96, 0x08, 0x89, 0x90, 0xd0, 0x8b, 0xd1, 0x84, 0x00, 0xd8, 0xc7, 0x80, 0x13, 0x6a, 0x41, 0x13, 0x14, 0x18, 0x64, 0x98, 0xc3, 0x08, 0x14, 0x06, 0x59, 0x92, 0x41, 0x86, 0x61, 0x24, 0x5c, 0x62, 0x90, 0x81, 0x20, 0x09, 0x97, 0x30, 0x21, 0x10, 0xff, 0x41, 0x86, 0x20, 0x24, 0x54, 0x62, 0x90, 0x21, 0x38, 0x54, 0x62, 0x96, 0x40, 0x19, 0x64, 0x40, 0x50, 0xa2, 0x25, 0x66, 0x09, 0x94, 0x81, 0x8e, 0x80, 0x40, 0x84, 0x44, 0x3a, 0xe6, 0x18, 0x54, 0xe2, 0x1c, 0x4a, 0x63, 0x90, 0x21, 0x58, 0x09, 0x98, 0xb0, 0x21, 0x10, 0xff, 0x7d, 0x0c, 0x64, 0x61, 0x17, 0xab, 0x41, 0x41, 0x50, 0x6c, 0x08, 0xc4, 0x7f, 0x96, 0x60, 0x19, 0x28, 0x09, 0xdc, 0x41, 0x20, 0x03, 0x43, 0x50, 0x7c, 0x04, 0xc8, 0x20, 0x20, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x2a, 0xc8, 0x87, 0x2d, 0xc3, 0x15, 0xe4, 0xc3, 0x96, 0x21, 0x0c, 0x02, 0x7f, 0xd8, 0x32, 0xd4, 0x41, 0xf0, 0x0f, 0x5b, 0x06, 0x3c, 0x08, 0xf2, 0x61, 0xcb, 0xa0, 0x07, 0x01, 0x48, 0x6c, 0x19, 0x54, 0x61, 0x08, 0x89, 0x2d, 0x43, 0x2b, 0x04, 0xf9, 0xb0, 0x65, 0x78, 0x85, 0x20, 0x1f, 0xb6, 0x0c, 0xe9, 0x10, 0xe4, 0xc3, 0x96, 0x41, 0x1d, 0x86, 0x90, 0xd8, 0x32, 0xb8, 0x43, 0x20, 0x12, 0x5b, 0x86, 0x7e, 0x08, 0xf2, 0x61, 0xcb, 0x30, 0x12, 0x81, 0x48, 0x6c, 0x19, 0x64, 0x22, 0xc8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x0e, 0x10, 0x22, 0x84, 0x00, 0xf9, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0c, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0xb8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x24, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x0c, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x32, 0x64, 0x2e, 0x76, 0x34, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x6d, 0x69, 0x78, 0x2e, 0x76, 0x34, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x71, 0x72, 0x74, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x64, 0x6f, 0x74, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x61, 0x78, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x69, 0x6e, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x61, 0x78, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x62, 0x73, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x61, 0x69, 0x72, 0x36, 0x34, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2d, 0x74, 0x76, 0x6f, 0x73, 0x31, 0x33, 0x2e, 0x32, 0x2e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xc0, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0c, 0x16, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x42, 0x43, 0xc0, 0xde, 0x35, 0x14, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, 0x0c, 0x30, 0x24, 0x80, 0x10, 0x05, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x21, 0x0c, 0x00, 0x00, 0xd6, 0x04, 0x00, 0x00, 0x0b, 0x02, 0x21, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0x04, 0x49, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x1b, 0xcc, 0x25, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x58, 0x03, 0x40, 0x02, 0x2a, 0x62, 0x1c, 0xde, 0x41, 0x1e, 0xe4, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xd8, 0x21, 0x1f, 0xda, 0x40, 0x1e, 0xde, 0xa1, 0x1e, 0xdc, 0x81, 0x1c, 0xca, 0x81, 0x1c, 0xda, 0x80, 0x1c, 0xd2, 0xc1, 0x1e, 0xd2, 0x81, 0x1c, 0xca, 0xa1, 0x0d, 0xe6, 0x21, 0x1e, 0xe4, 0x81, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x73, 0x08, 0x07, 0x76, 0x98, 0x87, 0x72, 0x00, 0x08, 0x72, 0x48, 0x87, 0x79, 0x08, 0x07, 0x71, 0x60, 0x87, 0x72, 0x68, 0x03, 0x7a, 0x08, 0x87, 0x74, 0x60, 0x87, 0x36, 0x18, 0x87, 0x70, 0x60, 0x07, 0x76, 0x98, 0x07, 0xc0, 0x1c, 0xc2, 0x81, 0x1d, 0xe6, 0xa1, 0x1c, 0x00, 0x82, 0x1d, 0xca, 0x61, 0x1e, 0xe6, 0xa1, 0x0d, 0xe0, 0x41, 0x1e, 0xca, 0x61, 0x1c, 0xd2, 0x61, 0x1e, 0xca, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0x21, 0x1c, 0xc8, 0x01, 0x30, 0x87, 0x70, 0x60, 0x87, 0x79, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x73, 0x90, 0x87, 0x70, 0x68, 0x87, 0x72, 0x68, 0x03, 0x78, 0x78, 0x87, 0x74, 0x70, 0x07, 0x7a, 0x28, 0x07, 0x79, 0x68, 0x83, 0x72, 0x60, 0x87, 0x74, 0x68, 0x07, 0x80, 0x1e, 0xe4, 0xa1, 0x1e, 0xca, 0x01, 0x18, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1c, 0xe4, 0x21, 0x1c, 0xda, 0xa1, 0x1c, 0xda, 0x00, 0x1e, 0xde, 0x21, 0x1d, 0xdc, 0x81, 0x1e, 0xca, 0x41, 0x1e, 0xda, 0xa0, 0x1c, 0xd8, 0x21, 0x1d, 0xda, 0xa1, 0x0d, 0xdc, 0xe1, 0x1d, 0xdc, 0xa1, 0x0d, 0xd8, 0xa1, 0x1c, 0xc2, 0xc1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xd2, 0xc1, 0x1d, 0xcc, 0x61, 0x1e, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0x70, 0x87, 0x77, 0x68, 0x03, 0x75, 0xa8, 0x87, 0x76, 0x80, 0x87, 0x36, 0xa0, 0x87, 0x70, 0x10, 0x07, 0x76, 0x28, 0x87, 0x79, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0x20, 0xdc, 0xe1, 0x1d, 0xda, 0xc0, 0x1d, 0xc2, 0xc1, 0x1d, 0xe6, 0xa1, 0x0d, 0xcc, 0x01, 0x1e, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x08, 0x77, 0x78, 0x87, 0x36, 0x98, 0x87, 0x74, 0x38, 0x07, 0x77, 0x28, 0x07, 0x72, 0x68, 0x03, 0x7d, 0x28, 0x07, 0x79, 0x78, 0x87, 0x79, 0x68, 0x03, 0x73, 0x80, 0x87, 0x36, 0x68, 0x87, 0x70, 0xa0, 0x07, 0x74, 0x00, 0xe8, 0x41, 0x1e, 0xea, 0xa1, 0x1c, 0x00, 0xc2, 0x1d, 0xde, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0x01, 0x1e, 0xe0, 0x21, 0x1d, 0xdc, 0xe1, 0x1c, 0xda, 0xa0, 0x1d, 0xc2, 0x81, 0x1e, 0xd0, 0x01, 0xa0, 0x07, 0x79, 0xa8, 0x87, 0x72, 0x00, 0x88, 0x79, 0xa0, 0x87, 0x70, 0x18, 0x87, 0x75, 0x68, 0x03, 0x78, 0x90, 0x87, 0x77, 0xa0, 0x87, 0x72, 0x18, 0x07, 0x7a, 0x78, 0x07, 0x79, 0x68, 0x03, 0x71, 0xa8, 0x07, 0x73, 0x30, 0x87, 0x72, 0x90, 0x87, 0x36, 0x98, 0x87, 0x74, 0xd0, 0x87, 0x72, 0x00, 0xf0, 0x00, 0x20, 0xea, 0xc1, 0x1d, 0xe6, 0x21, 0x1c, 0xcc, 0xa1, 0x1c, 0xda, 0xc0, 0x1c, 0xe0, 0xa1, 0x0d, 0xda, 0x21, 0x1c, 0xe8, 0x01, 0x1d, 0x00, 0x7a, 0x90, 0x87, 0x7a, 0x28, 0x07, 0x80, 0xa8, 0x87, 0x79, 0x28, 0x87, 0x36, 0x98, 0x87, 0x77, 0x30, 0x07, 0x7a, 0x68, 0x03, 0x73, 0x60, 0x87, 0x77, 0x08, 0x07, 0x7a, 0x00, 0xcc, 0x21, 0x1c, 0xd8, 0x61, 0x1e, 0xca, 0x01, 0xd8, 0x90, 0x08, 0x04, 0x90, 0x00, 0x55, 0x90, 0x06, 0x70, 0xb1, 0xc1, 0x18, 0x0c, 0x60, 0x01, 0xaa, 0x0d, 0x0a, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x03, 0xd0, 0x06, 0xc0, 0x1a, 0x00, 0x12, 0x50, 0x6d, 0x30, 0x8a, 0x00, 0x58, 0x80, 0x6a, 0x83, 0x61, 0x08, 0xc0, 0x02, 0x54, 0x1b, 0x8c, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0x28, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x0c, 0x44, 0x61, 0x4c, 0x08, 0x0e, 0x00, 0x89, 0x20, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xb8, 0xc1, 0x0c, 0xc0, 0x30, 0x02, 0x01, 0x0c, 0x23, 0x08, 0xc0, 0x30, 0xc2, 0x00, 0xe4, 0xc0, 0x30, 0x13, 0x35, 0x0f, 0xf4, 0x20, 0x0f, 0xf5, 0x30, 0x0e, 0xf4, 0xe0, 0x06, 0xed, 0x50, 0x0e, 0xf4, 0x10, 0x0e, 0xec, 0xa0, 0x07, 0x7a, 0xd0, 0x0e, 0xe1, 0x40, 0x0f, 0xf2, 0x90, 0x0e, 0xf8, 0x80, 0x02, 0x62, 0x8e, 0x00, 0x0c, 0xee, 0x91, 0xa6, 0x88, 0x12, 0x26, 0xdf, 0x6d, 0x90, 0xc2, 0x89, 0x18, 0x09, 0x35, 0x45, 0x11, 0x04, 0x82, 0x20, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x20, 0xc2, 0x21, 0x1c, 0x25, 0x4d, 0x11, 0x25, 0x4c, 0xfe, 0x3f, 0x11, 0xd7, 0x44, 0x45, 0xc4, 0x6f, 0x0f, 0xff, 0x34, 0x46, 0x00, 0x0c, 0x22, 0x24, 0xc1, 0x45, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xff, 0x12, 0xc0, 0x3c, 0x0b, 0x11, 0xfd, 0xd3, 0x18, 0x01, 0x30, 0x88, 0xb0, 0x08, 0xe5, 0x08, 0x02, 0x41, 0x40, 0x14, 0x86, 0x9a, 0x39, 0x02, 0xc4, 0x08, 0xc1, 0x33, 0x47, 0x10, 0x0c, 0x23, 0x08, 0x46, 0x51, 0x20, 0x85, 0x11, 0x22, 0x29, 0x02, 0x00, 0x83, 0xa6, 0x42, 0x04, 0x41, 0x10, 0x50, 0x55, 0x04, 0x00, 0xa0, 0xab, 0x0c, 0x80, 0x20, 0x50, 0x56, 0x06, 0x41, 0x10, 0x68, 0x2b, 0x03, 0x00, 0x00, 0xd4, 0x15, 0x41, 0x10, 0xe8, 0x1b, 0x08, 0x48, 0x01, 0x63, 0x10, 0x21, 0x10, 0x86, 0x11, 0x06, 0x63, 0x8e, 0x00, 0x14, 0x06, 0x11, 0x06, 0x61, 0x10, 0x41, 0x10, 0xa6, 0x00, 0x46, 0x00, 0x06, 0x11, 0x0c, 0x61, 0x18, 0x81, 0x30, 0x06, 0x11, 0x00, 0x61, 0x10, 0xa1, 0x10, 0x00, 0x13, 0xac, 0x70, 0x48, 0x07, 0x79, 0xb0, 0x03, 0x3a, 0x68, 0x83, 0x70, 0x80, 0x07, 0x78, 0x60, 0x87, 0x72, 0x68, 0x03, 0x7a, 0xb0, 0x87, 0x77, 0x98, 0x87, 0x38, 0x98, 0x03, 0x37, 0x90, 0x03, 0x37, 0x80, 0x83, 0x0d, 0xb7, 0x51, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x7a, 0x80, 0x07, 0x7a, 0x80, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x78, 0xa0, 0x07, 0x78, 0xd0, 0x06, 0xe9, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x40, 0x07, 0x78, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xf6, 0x90, 0x07, 0x76, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xa0, 0x07, 0x71, 0x20, 0x07, 0x78, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x72, 0x80, 0x07, 0x6d, 0x60, 0x0f, 0x71, 0x90, 0x07, 0x72, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xa0, 0x07, 0x72, 0x50, 0x07, 0x76, 0xd0, 0x06, 0xf6, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x7a, 0x20, 0x07, 0x75, 0x60, 0x07, 0x6d, 0x60, 0x0f, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xa0, 0x07, 0x75, 0x10, 0x07, 0x72, 0xd0, 0x06, 0xf6, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xa0, 0x07, 0x71, 0x00, 0x07, 0x72, 0x40, 0x07, 0x7a, 0x10, 0x07, 0x70, 0x20, 0x07, 0x74, 0xd0, 0x06, 0xee, 0x80, 0x07, 0x7a, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x1a, 0x21, 0x0c, 0x09, 0x15, 0x11, 0x60, 0x30, 0x44, 0x33, 0xb1, 0x07, 0x30, 0x10, 0x91, 0xa6, 0x0d, 0x89, 0x00, 0xa8, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x21, 0x11, 0xb4, 0x4d, 0x40, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x24, 0x5a, 0x83, 0xa6, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x21, 0x11, 0x1e, 0x54, 0x17, 0x10, 0x00, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x89, 0x5a, 0x21, 0xba, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x60, 0x48, 0xe4, 0x0b, 0x4d, 0x06, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0xa2, 0x75, 0x98, 0x36, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x12, 0xf9, 0x43, 0xd4, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xc0, 0x90, 0xe8, 0x25, 0xa2, 0x0e, 0x08, 0x80, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x86, 0x44, 0x60, 0x31, 0x7d, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x24, 0x9a, 0x8b, 0xe8, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x21, 0x11, 0x69, 0x5c, 0x1f, 0x10, 0x00, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, 0x6c, 0x10, 0x28, 0x8a, 0x4d, 0x00, 0x00, 0x90, 0x05, 0x02, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x32, 0x8a, 0xa0, 0x04, 0x0a, 0x61, 0x04, 0xa0, 0x0c, 0x0a, 0x5c, 0xa0, 0xc0, 0x0a, 0x38, 0xa0, 0x40, 0x0a, 0x3c, 0xa0, 0x00, 0x05, 0x0a, 0xa2, 0x20, 0x05, 0x0a, 0x54, 0xa0, 0x60, 0x05, 0x0a, 0x57, 0xa0, 0x80, 0x05, 0x0a, 0x59, 0xa0, 0xa0, 0x05, 0x0a, 0x5b, 0xa0, 0x14, 0xa8, 0x1c, 0x01, 0x28, 0xb0, 0x02, 0x0e, 0x28, 0xf0, 0x80, 0x02, 0x14, 0x28, 0x48, 0x81, 0x02, 0x15, 0x28, 0x58, 0x81, 0xc2, 0x15, 0x28, 0x60, 0x81, 0x42, 0x16, 0x28, 0x68, 0x81, 0xc2, 0x16, 0x20, 0x60, 0x8c, 0x00, 0x04, 0x41, 0x50, 0x04, 0x03, 0x12, 0xc7, 0x12, 0x1a, 0x01, 0x00, 0x00, 0xb1, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc7, 0x69, 0x87, 0x70, 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x07, 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xa0, 0x87, 0x19, 0xce, 0x53, 0x0f, 0xee, 0x00, 0x0f, 0xf2, 0x50, 0x0e, 0xe4, 0x90, 0x0e, 0xe3, 0x40, 0x0f, 0xe1, 0x20, 0x0e, 0xec, 0x50, 0x0e, 0x33, 0x20, 0x28, 0x1d, 0xdc, 0xc1, 0x1e, 0xc2, 0x41, 0x1e, 0xd2, 0x21, 0x1c, 0xdc, 0x81, 0x1e, 0xdc, 0xe0, 0x1c, 0xe4, 0xe1, 0x1d, 0xea, 0x01, 0x1e, 0x66, 0x18, 0x51, 0x38, 0xb0, 0x43, 0x3a, 0x9c, 0x83, 0x3b, 0xcc, 0x50, 0x24, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x60, 0x87, 0x77, 0x78, 0x07, 0x78, 0x98, 0x51, 0x4c, 0xf4, 0x90, 0x0f, 0xf0, 0x50, 0x0e, 0x33, 0x1e, 0x6a, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x7e, 0x01, 0x1e, 0xe4, 0xa1, 0x1c, 0xcc, 0x21, 0x1d, 0xf0, 0x61, 0x06, 0x54, 0x85, 0x83, 0x38, 0xcc, 0xc3, 0x3b, 0xb0, 0x43, 0x3d, 0xd0, 0x43, 0x39, 0xfc, 0xc2, 0x3c, 0xe4, 0x43, 0x3b, 0x88, 0xc3, 0x3b, 0xb0, 0xc3, 0x8c, 0xc5, 0x0a, 0x87, 0x79, 0x98, 0x87, 0x77, 0x18, 0x87, 0x74, 0x08, 0x07, 0x7a, 0x28, 0x07, 0x72, 0x00, 0x00, 0x00, 0x00, 0x79, 0x20, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x62, 0x1e, 0x48, 0x20, 0x43, 0x88, 0x0c, 0x19, 0x39, 0x19, 0x24, 0x90, 0x91, 0x40, 0xc6, 0xc8, 0xc8, 0x68, 0x22, 0x50, 0x08, 0x14, 0x32, 0x9e, 0x18, 0x19, 0x21, 0x47, 0xc8, 0x90, 0x51, 0xc4, 0x03, 0x38, 0xc0, 0x33, 0x8b, 0xb2, 0x06, 0xc5, 0xc6, 0x91, 0x41, 0x18, 0x90, 0xc1, 0x19, 0x44, 0x91, 0xc1, 0x28, 0x12, 0x33, 0x48, 0xd5, 0x63, 0x10, 0xd8, 0xa1, 0x3c, 0x12, 0x42, 0x21, 0x0a, 0x82, 0x20, 0x0a, 0x63, 0x14, 0xc6, 0xa1, 0x24, 0xc3, 0x41, 0x44, 0x17, 0x82, 0x2c, 0x0a, 0x76, 0x2c, 0x07, 0x00, 0x00, 0x53, 0x44, 0x4b, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x77, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x4c, 0x4c, 0x56, 0x4d, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x20, 0x28, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x66, 0x65, 0x2d, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x29, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x69, 0x72, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x6e, 0x6f, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x70, 0x6f, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x34, 0x66, 0x70, 0x6f, 0x73, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x61, 0x69, 0x72, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x66, 0x70, 0x6f, 0x73, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x28, 0x37, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x44, 0x76, 0x32, 0x5f, 0x66, 0x29, 0x66, 0x74, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x61, 0x69, 0x72, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x61, 0x69, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x66, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x54, 0x68, 0x72, 0x69, 0x6e, 0x74, 0x74, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x61, 0x69, 0x72, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x06, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x60, 0x30, 0x23, 0x08, 0x62, 0xf0, 0x06, 0x23, 0x08, 0x46, 0x33, 0x82, 0x60, 0x38, 0x23, 0x08, 0xc6, 0x33, 0x82, 0xe0, 0x00, 0x23, 0x08, 0x06, 0x34, 0x82, 0x60, 0x44, 0x23, 0x08, 0x86, 0x34, 0x82, 0x60, 0x4c, 0x23, 0x08, 0x06, 0x35, 0x82, 0x60, 0x54, 0x23, 0x08, 0x86, 0x35, 0x82, 0x60, 0x5c, 0x23, 0x08, 0x06, 0x36, 0x82, 0x60, 0x64, 0x23, 0x08, 0x86, 0x36, 0x82, 0x60, 0x6c, 0x23, 0x08, 0x06, 0x37, 0x82, 0x60, 0x74, 0x23, 0x08, 0x86, 0x37, 0x82, 0x60, 0x7c, 0x23, 0x08, 0x06, 0x18, 0xcc, 0x30, 0xe4, 0x41, 0xa0, 0x07, 0x33, 0x0c, 0x7b, 0x20, 0xf0, 0xc1, 0x0c, 0xc1, 0x30, 0xc3, 0x90, 0x07, 0x79, 0xd0, 0x07, 0x33, 0x10, 0x44, 0x1e, 0xe4, 0x41, 0x1f, 0xcc, 0x10, 0x14, 0x33, 0x04, 0xc6, 0x0c, 0xc1, 0x31, 0x43, 0x80, 0xcc, 0x10, 0x24, 0x33, 0x04, 0xca, 0x0c, 0xc5, 0xd2, 0x07, 0x7d, 0xc0, 0x34, 0x33, 0x04, 0xbb, 0x30, 0x03, 0xd2, 0x07, 0xce, 0x03, 0x31, 0x4d, 0x24, 0xcd, 0x90, 0xec, 0xc1, 0x44, 0x3d, 0x15, 0x63, 0x45, 0xd7, 0x0c, 0x49, 0x1e, 0x4c, 0xd8, 0x53, 0x31, 0x56, 0x94, 0xcd, 0x10, 0x0a, 0x7d, 0x10, 0x0a, 0x7d, 0xf0, 0x81, 0x41, 0x28, 0x84, 0x42, 0x1f, 0x7c, 0x61, 0x20, 0x0a, 0xa3, 0xd0, 0x07, 0x8d, 0x18, 0x90, 0xc2, 0x28, 0xf4, 0x41, 0x33, 0x06, 0xa5, 0x60, 0x0a, 0x7d, 0x60, 0x91, 0xc1, 0x29, 0x98, 0x42, 0x1f, 0x58, 0x65, 0x80, 0x0a, 0xa6, 0xd0, 0x07, 0x96, 0x19, 0xa4, 0x02, 0x1f, 0xf4, 0xc1, 0x19, 0xa0, 0x81, 0x2a, 0xf0, 0x41, 0x1f, 0x9c, 0x41, 0x1a, 0xac, 0x02, 0x1f, 0xf4, 0xc1, 0x19, 0xa8, 0x01, 0x2b, 0xf0, 0x41, 0x1f, 0x9c, 0xc1, 0x1a, 0xb4, 0x02, 0x1f, 0xf4, 0x01, 0x1b, 0xb4, 0x81, 0x2b, 0xf0, 0x41, 0x1f, 0xb0, 0x81, 0x1b, 0xcc, 0x20, 0xfd, 0x81, 0xb6, 0x81, 0x02, 0xd7, 0x07, 0x7b, 0xd0, 0x79, 0xe0, 0xf0, 0x06, 0xa0, 0x00, 0x07, 0xa3, 0xc0, 0xc4, 0x41, 0x24, 0x07, 0x33, 0x28, 0x7c, 0x30, 0x07, 0x5c, 0x1f, 0xec, 0x01, 0x1d, 0x30, 0x75, 0x10, 0xd9, 0xc1, 0x0c, 0xc9, 0x2b, 0xdc, 0x01, 0xd7, 0x07, 0x7b, 0xc0, 0xe0, 0x41, 0x84, 0x07, 0x33, 0x18, 0xbd, 0xe0, 0x0b, 0xbf, 0x10, 0x0e, 0xe2, 0x30, 0x0e, 0x33, 0x0c, 0x7e, 0xc0, 0x0b, 0xe4, 0x70, 0x6d, 0x00, 0x70, 0x68, 0xc0, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71, 0x1c, 0x27, 0x06, 0x6e, 0xe0, 0x06, 0x16, 0x1d, 0xe8, 0x81, 0x65, 0x59, 0x96, 0x65, 0xe9, 0x01, 0x67, 0x0a, 0xac, 0xc0, 0x0a, 0xf8, 0xe5, 0x17, 0xf6, 0xa0, 0x0e, 0xb8, 0x20, 0x23, 0x81, 0x09, 0xca, 0x88, 0x8d, 0xcd, 0xae, 0xcd, 0xa5, 0xed, 0x8d, 0xac, 0x8e, 0xad, 0xcc, 0xc5, 0x8c, 0x2d, 0xec, 0x6c, 0x6e, 0x14, 0xe1, 0x15, 0x60, 0x21, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x51, 0x82, 0x58, 0xc8, 0x25, 0x2c, 0x4d, 0xce, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x94, 0x40, 0x16, 0x92, 0x0a, 0x4b, 0x93, 0x73, 0x61, 0x0b, 0x73, 0x3b, 0xab, 0x0b, 0x3b, 0x2b, 0xfb, 0xb2, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x1b, 0x25, 0x98, 0x85, 0x9c, 0xc2, 0xd2, 0xe4, 0x5c, 0xc6, 0xde, 0xda, 0xe0, 0xd2, 0xd8, 0xca, 0xbe, 0xde, 0xe0, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0x46, 0x31, 0x68, 0xa1, 0x16, 0x6c, 0xe1, 0x16, 0x70, 0x21, 0x17, 0x92, 0x09, 0x4b, 0x93, 0x73, 0x31, 0x93, 0x0b, 0x3b, 0x6b, 0x2b, 0x73, 0xa3, 0x1b, 0x25, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, 0xa9, 0x18, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x72, 0x28, 0x87, 0x77, 0x80, 0x07, 0x7a, 0x58, 0x70, 0x98, 0x43, 0x3d, 0xb8, 0xc3, 0x38, 0xb0, 0x43, 0x39, 0xd0, 0xc3, 0x82, 0xe6, 0x1c, 0xc6, 0xa1, 0x0d, 0xe8, 0x41, 0x1e, 0xc2, 0xc1, 0x1d, 0xe6, 0x21, 0x1d, 0xe8, 0x21, 0x1d, 0xde, 0xc1, 0x1d, 0x00, 0xd1, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0xcc, 0x3c, 0xa4, 0x83, 0x3b, 0x9c, 0x03, 0x3b, 0x94, 0x03, 0x3d, 0xa0, 0x83, 0x3c, 0x94, 0x43, 0x38, 0x90, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x13, 0x04, 0x4e, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x64, 0x94, 0x45, 0x31, 0x14, 0xc6, 0x0c, 0x40, 0x49, 0x14, 0x45, 0x39, 0x50, 0x54, 0x03, 0x23, 0x00, 0x24, 0x8d, 0x00, 0x8c, 0x25, 0x00, 0x01, 0x91, 0x63, 0x0d, 0x40, 0x20, 0x8c, 0x35, 0x0c, 0xc3, 0x30, 0x02, 0x30, 0xd6, 0x10, 0x04, 0x01, 0x95, 0x25, 0x50, 0x04, 0xb4, 0x8e, 0x00, 0xcc, 0x41, 0x3c, 0x0d, 0x93, 0x07, 0x63, 0x11, 0x40, 0x20, 0x1c, 0x04, 0x8c, 0x00, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xe2, 0xdf, 0x18, 0x01, 0x08, 0x82, 0x20, 0x08, 0x06, 0x63, 0x04, 0x20, 0x08, 0x82, 0xf8, 0x2f, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xc2, 0x1f, 0x05, 0x33, 0x00, 0x23, 0x00, 0x24, 0xcc, 0x00, 0x8c, 0x25, 0x80, 0x20, 0x08, 0xc2, 0x1f, 0x08, 0x82, 0x20, 0xfc, 0x8d, 0x00, 0xd0, 0x30, 0x03, 0x00, 0x00, 0x00, 0xf1, 0x30, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x47, 0xc8, 0x90, 0x51, 0x12, 0x84, 0x2b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xd3, 0x7c, 0x00, 0x6f, 0x6d, 0x6e, 0x69, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x54, 0x42, 0x41, 0x41, 0x5f, 0x5a, 0x54, 0x53, 0x38, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x5a, 0x54, 0x53, 0x4e, 0x35, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x36, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x49, 0x66, 0x4c, 0x69, 0x33, 0x45, 0x4c, 0x69, 0x33, 0x45, 0x76, 0x45, 0x45, 0x00, 0x00, 0x13, 0x84, 0x32, 0x08, 0x83, 0x09, 0x42, 0x19, 0x88, 0xc1, 0x04, 0xa1, 0x0c, 0xc6, 0x60, 0x82, 0x50, 0x06, 0x64, 0x30, 0x41, 0x28, 0x83, 0x32, 0x98, 0x20, 0x94, 0x81, 0x19, 0x4c, 0x10, 0xca, 0xe0, 0x0c, 0x26, 0x08, 0x65, 0x80, 0x06, 0x13, 0x84, 0x32, 0x48, 0x83, 0x09, 0x42, 0x19, 0xa8, 0xc1, 0x04, 0xa1, 0x0c, 0xd6, 0x60, 0x82, 0x50, 0x06, 0x6c, 0x30, 0x41, 0x28, 0x83, 0x36, 0x98, 0x20, 0x00, 0x6e, 0xb0, 0x21, 0x38, 0x87, 0x0d, 0x83, 0x39, 0xe0, 0x83, 0x3a, 0x6c, 0x18, 0xf2, 0x21, 0x1f, 0xd4, 0x61, 0xc3, 0x90, 0x0e, 0xf9, 0xa0, 0x0e, 0x1b, 0x86, 0x33, 0xc8, 0x07, 0x75, 0xd8, 0x30, 0xb0, 0x41, 0x3e, 0xa8, 0xc3, 0x86, 0x0d, 0x1d, 0xf6, 0x41, 0x1d, 0xf6, 0x61, 0x1d, 0xf2, 0x81, 0x1d, 0xf2, 0xa1, 0x1d, 0xf2, 0xc1, 0x1d, 0xf2, 0xe1, 0x1d, 0xf2, 0x01, 0x1e, 0xf8, 0x21, 0x1e, 0xf8, 0x41, 0x1e, 0xf8, 0x61, 0x1e, 0xf8, 0x81, 0x1e, 0xfa, 0xa1, 0x1e, 0xfa, 0xc1, 0x1e, 0x36, 0x0c, 0xfe, 0xd0, 0x0f, 0xf6, 0xb0, 0x61, 0xf0, 0x87, 0x7e, 0xa8, 0x87, 0x0d, 0x83, 0x3f, 0xf0, 0xc3, 0x3c, 0x6c, 0x18, 0xfc, 0x81, 0x1f, 0xe8, 0x61, 0xc3, 0xe0, 0x0f, 0xfc, 0x20, 0x0f, 0x1b, 0x06, 0x7f, 0xe0, 0x87, 0x78, 0xd8, 0x10, 0xdc, 0x03, 0x00, 0x27, 0x06, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0x00, 0xb1, 0x06, 0x19, 0xce, 0xe0, 0xa8, 0x4c, 0x08, 0xc4, 0x7f, 0x1f, 0xc5, 0x19, 0xe4, 0xc1, 0x2a, 0xac, 0x42, 0x75, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0x70, 0xb8, 0x41, 0x86, 0x36, 0x68, 0x34, 0x13, 0x02, 0xf1, 0xb7, 0xe0, 0x00, 0xff, 0x7d, 0x14, 0x6e, 0x00, 0x0a, 0xb2, 0x20, 0x0b, 0xdb, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0xa0, 0x1a, 0x03, 0x2b, 0x02, 0xf0, 0x1f, 0x64, 0x08, 0x24, 0x33, 0x18, 0x31, 0x30, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xf8, 0x7c, 0x21, 0xd8, 0xc7, 0x50, 0x07, 0xa7, 0xa0, 0x0b, 0x14, 0x08, 0xc5, 0x86, 0x20, 0xfc, 0xf7, 0x31, 0xe0, 0x81, 0x2a, 0xac, 0x02, 0x05, 0x02, 0xb1, 0x21, 0x10, 0x7f, 0xe3, 0x82, 0xf0, 0x1f, 0x31, 0x30, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xf8, 0xc8, 0x21, 0x18, 0x43, 0x08, 0x5e, 0x61, 0x0c, 0x41, 0x60, 0x03, 0x13, 0x02, 0xf1, 0x1f, 0x8e, 0x08, 0xd2, 0x20, 0xf0, 0x8f, 0x59, 0x86, 0x26, 0x08, 0xf6, 0x31, 0x84, 0xc2, 0x2c, 0xf0, 0x01, 0x05, 0xc6, 0x18, 0x6e, 0x08, 0xd4, 0x01, 0x0c, 0x66, 0x19, 0x04, 0x23, 0x18, 0x31, 0x68, 0x84, 0x10, 0x04, 0x83, 0xc9, 0x1e, 0x46, 0x41, 0x14, 0x4a, 0x41, 0x0f, 0xf0, 0x20, 0x0f, 0xda, 0xa0, 0x0d, 0xd0, 0x61, 0x34, 0x21, 0x00, 0xf6, 0x31, 0x98, 0x02, 0x2e, 0x8c, 0x02, 0x05, 0x06, 0x19, 0xe6, 0x30, 0x82, 0xa2, 0x19, 0x18, 0x62, 0x90, 0x61, 0x60, 0x03, 0x3d, 0x18, 0x64, 0x20, 0xda, 0x40, 0x0f, 0x4c, 0x08, 0xc4, 0x7f, 0x90, 0x21, 0x50, 0x03, 0x3b, 0x18, 0x64, 0x08, 0x0e, 0x3b, 0x98, 0x25, 0x28, 0x06, 0x19, 0x90, 0x38, 0xc8, 0x83, 0x59, 0x82, 0x62, 0xa0, 0x23, 0x20, 0x06, 0x81, 0x90, 0x84, 0x39, 0x86, 0x39, 0x80, 0xe6, 0x61, 0x90, 0x21, 0xa0, 0x03, 0x3e, 0xb0, 0x21, 0x10, 0xff, 0x7d, 0x0c, 0xb2, 0x40, 0x0e, 0xf9, 0x40, 0x41, 0x50, 0x6c, 0x08, 0xc4, 0x7f, 0x96, 0xa0, 0x19, 0x43, 0xb0, 0x85, 0x73, 0xb0, 0xa0, 0x0f, 0xc4, 0xdf, 0x82, 0x3e, 0x00, 0xff, 0x11, 0x03, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0x2b, 0x24, 0x02, 0x0b, 0x85, 0x20, 0xfc, 0xf7, 0x31, 0xe8, 0x02, 0x3b, 0xcc, 0x02, 0x05, 0x40, 0xb1, 0x21, 0x10, 0xff, 0x11, 0x83, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0x2e, 0x25, 0x4a, 0x21, 0x18, 0x43, 0xf8, 0x05, 0x56, 0x18, 0x31, 0x38, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xe8, 0x56, 0xe2, 0x14, 0x02, 0x0b, 0x06, 0xf1, 0xdf, 0xc7, 0x10, 0x0e, 0xf3, 0x90, 0x0b, 0x14, 0x00, 0x63, 0x38, 0x62, 0x08, 0x08, 0xff, 0x98, 0x65, 0x68, 0x8e, 0x60, 0xb8, 0x41, 0x0c, 0x50, 0x02, 0x0c, 0xf6, 0x31, 0x94, 0xc3, 0x3d, 0xac, 0xc4, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0x80, 0x15, 0x74, 0xc1, 0x02, 0x52, 0x10, 0xff, 0x7d, 0x14, 0xea, 0xc0, 0x0f, 0x30, 0xe1, 0x12, 0xb8, 0x70, 0xc1, 0xb8, 0x14, 0x04, 0x65, 0x90, 0x21, 0x88, 0x85, 0x5f, 0xb0, 0x60, 0x14, 0xc4, 0xdf, 0x02, 0x03, 0xfc, 0xf7, 0x51, 0xc0, 0x83, 0x48, 0xd8, 0x04, 0x4d, 0xf4, 0xc2, 0x05, 0xe3, 0x52, 0x10, 0x94, 0x41, 0x86, 0xe0, 0x16, 0xca, 0xc1, 0x8a, 0x00, 0xfc, 0x07, 0x19, 0x02, 0x5a, 0x40, 0x87, 0x59, 0x06, 0x24, 0x91, 0xf6, 0x31, 0xd8, 0x03, 0x4a, 0xc8, 0x04, 0x05, 0xc0, 0xb0, 0xa0, 0x17, 0xc4, 0x7f, 0x1f, 0x43, 0x3e, 0xac, 0x44, 0x3d, 0x50, 0x20, 0x94, 0x7d, 0x0c, 0xfb, 0xd0, 0x12, 0xf2, 0x40, 0x01, 0x40, 0xe6, 0x18, 0x7e, 0x21, 0x08, 0x8b, 0x41, 0x86, 0x00, 0x1c, 0xe4, 0xc1, 0x8a, 0x20, 0xfc, 0x47, 0x0c, 0x8c, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0x3e, 0xb5, 0x58, 0x2c, 0x10, 0xc2, 0x7f, 0x0c, 0x21, 0xa0, 0x89, 0x31, 0x04, 0x21, 0x1e, 0x46, 0x0c, 0x8e, 0x21, 0x04, 0xc1, 0xc2, 0x3f, 0xba, 0xb7, 0x10, 0x82, 0x11, 0x83, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0x2e, 0x2e, 0x02, 0x77, 0x18, 0x31, 0x38, 0x86, 0x10, 0x04, 0x0b, 0xff, 0xd8, 0xe6, 0xa2, 0x30, 0x87, 0x11, 0x83, 0x63, 0x08, 0x41, 0xb0, 0xf0, 0x8f, 0xac, 0x2e, 0x82, 0x60, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0xba, 0x8b, 0xc0, 0xa2, 0x26, 0xfc, 0x2d, 0x28, 0xc0, 0xdf, 0x82, 0x01, 0xfc, 0x2d, 0xa8, 0xc8, 0x7f, 0xc4, 0xc0, 0x18, 0x42, 0x10, 0x2c, 0xfc, 0xe3, 0xea, 0x8b, 0x60, 0x1f, 0x83, 0x4b, 0x80, 0x45, 0x5d, 0x50, 0x10, 0x94, 0x7d, 0x0c, 0x30, 0x21, 0x16, 0x73, 0x41, 0x41, 0x50, 0xe6, 0x18, 0xec, 0xa1, 0xb0, 0x8b, 0x41, 0x86, 0xe0, 0x1e, 0xfe, 0x61, 0xc4, 0x00, 0x19, 0x42, 0x10, 0x2c, 0xfc, 0xa3, 0x2a, 0x8d, 0x62, 0x08, 0xe6, 0x18, 0xf2, 0xc1, 0x16, 0xf2, 0x62, 0x8e, 0x41, 0x1f, 0xec, 0x40, 0x2f, 0x2c, 0x10, 0xc4, 0x7f, 0x90, 0x21, 0xe0, 0x07, 0x92, 0xb0, 0xa0, 0x10, 0xff, 0x59, 0x82, 0x66, 0x1f, 0x83, 0x4e, 0xb0, 0x85, 0x4d, 0x50, 0x20, 0x14, 0x3b, 0x83, 0x80, 0xfc, 0x47, 0x0c, 0x1a, 0x21, 0x04, 0xc1, 0x60, 0x7a, 0x0d, 0x9e, 0xd8, 0x89, 0x60, 0x26, 0x62, 0x42, 0x26, 0x4c, 0xc2, 0x24, 0x42, 0x63, 0x34, 0x21, 0x00, 0xf6, 0x31, 0xfc, 0x44, 0x5c, 0xf0, 0x04, 0x05, 0x06, 0x19, 0xe6, 0x30, 0x02, 0xa6, 0x51, 0x98, 0x65, 0x90, 0x61, 0x28, 0x89, 0x99, 0x18, 0x64, 0x20, 0x4c, 0x62, 0x26, 0x4c, 0x08, 0xc4, 0x7f, 0x90, 0x21, 0x18, 0x89, 0x97, 0x18, 0x64, 0x08, 0x8e, 0x97, 0x98, 0x25, 0x60, 0x06, 0x19, 0x10, 0x95, 0x90, 0x89, 0x59, 0x02, 0x66, 0xa0, 0x23, 0x20, 0x14, 0x61, 0x91, 0x92, 0x39, 0x06, 0x96, 0x48, 0x07, 0xd6, 0x98, 0x63, 0x68, 0x89, 0x54, 0x68, 0x8d, 0x7d, 0x0c, 0x6a, 0xc1, 0x17, 0xb1, 0x41, 0x41, 0x50, 0x6c, 0x20, 0xc4, 0x7f, 0x90, 0x21, 0x88, 0x89, 0x9c, 0xb0, 0xe0, 0x10, 0x7f, 0x0b, 0x08, 0xf1, 0x9f, 0x25, 0x68, 0x06, 0x5a, 0x02, 0xbc, 0x28, 0xcc, 0x04, 0x70, 0x03, 0x44, 0x60, 0xcc, 0xc4, 0xc8, 0x20, 0x20, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x2a, 0xc8, 0x87, 0x2d, 0xc3, 0x15, 0xe4, 0xc3, 0x96, 0x21, 0x0c, 0x02, 0x7f, 0xd8, 0x32, 0x9c, 0x41, 0xf0, 0x0f, 0x5b, 0x06, 0x3b, 0x08, 0xf2, 0x61, 0xcb, 0xf0, 0x07, 0x01, 0x48, 0x6c, 0x19, 0x4c, 0x21, 0x08, 0x89, 0x2d, 0x43, 0x2f, 0x04, 0x22, 0xb1, 0x65, 0x00, 0x87, 0x20, 0x1f, 0xb6, 0x0c, 0xe2, 0x10, 0x8c, 0xc4, 0x96, 0x41, 0x1e, 0x06, 0x92, 0xd8, 0x32, 0xd4, 0x43, 0x90, 0x0f, 0x5b, 0x86, 0x7b, 0x08, 0xf2, 0x61, 0xcb, 0x20, 0x12, 0x41, 0x3e, 0x6c, 0x19, 0x46, 0x62, 0x20, 0x89, 0x2d, 0xc3, 0x49, 0x04, 0xff, 0xb0, 0x65, 0xa8, 0x89, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x0e, 0x10, 0x22, 0x84, 0x00, 0xfe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0c, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0xf0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x24, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x0c, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x12, 0x03, 0x94, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x41, 0x41, 0x61, 0x69, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x32, 0x64, 0x2e, 0x76, 0x34, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x6d, 0x69, 0x78, 0x2e, 0x76, 0x34, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x71, 0x72, 0x74, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x64, 0x6f, 0x74, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x61, 0x78, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x69, 0x6e, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6d, 0x61, 0x78, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x62, 0x73, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x62, 0x73, 0x2e, 0x66, 0x33, 0x32, 0x61, 0x69, 0x72, 0x2e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x32, 0x66, 0x33, 0x32, 0x39, 0x30, 0x32, 0x2e, 0x39, 0x2e, 0x36, 0x31, 0x61, 0x69, 0x72, 0x36, 0x34, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2d, 0x74, 0x76, 0x6f, 0x73, 0x31, 0x33, 0x2e, 0x32, 0x2e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; unsigned int mnvg_bitcode_tvos_len = 14829; vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/src/nanovg_mtl.h000066400000000000000000000076101461511344300315370ustar00rootroot00000000000000// Copyright (c) 2017 Ollix // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // // --- // Author: olliwang@ollix.com (Olli Wang) #ifndef NANOVG_MTL_H_ #define NANOVG_MTL_H_ #ifdef __cplusplus extern "C" { #endif #include "nanovg.h" // Create flags enum NVGcreateFlags { // Flag indicating if geometry based anti-aliasing is used (may not be // needed when using MSAA). NVG_ANTIALIAS = 1 << 0, // Flag indicating if strokes should be drawn using stencil buffer. // The rendering will be a little slower, but path overlaps // (i.e. self-intersecting or sharp turns) will be drawn just once. NVG_STENCIL_STROKES = 1 << 1, // Flag indicating if double buffering scheme is used. NVG_DOUBLE_BUFFER = 1 << 12, // Flag indicating if triple buffering scheme is used. NVG_TRIPLE_BUFFER = 1 << 13, // Flag indicating that additional debug checks are done. NVG_DEBUG = 1 << 2, }; // These are additional flags on top of NVGimageFlags. enum NVGimageFlagsMetal { NVG_IMAGE_NODELETE = 1 << 16, // Do not delete Metal texture handle. }; // The possible OS targets. enum MNVGTarget { MNVG_IOS, MNVG_MACOS, MNVG_SIMULATOR, MNVG_TVOS, MNVG_UNKNOWN, }; struct MNVGframebuffer { NVGcontext* ctx; int image; }; typedef struct MNVGframebuffer MNVGframebuffer; // Creates a new NanoVG context. The `metalLayer` parameter should be a // `CAMetalLayer` object, and the `flags` should be combination of // `NVGcreateFlags` above. NVGcontext* nvgCreateMTL(void* metalLayer, int flags); // Deletes the specified NanoVG context. void nvgDeleteMTL(NVGcontext* ctx); // // Framebuffer // // Binds the specified framebuffer as the current render pass. void mnvgBindFramebuffer(MNVGframebuffer* framebuffer); // Creates a new framebuffer. MNVGframebuffer* mnvgCreateFramebuffer(NVGcontext* ctx, int width, int height, int imageFlags); // Deletes the specified framebuffer. void mnvgDeleteFramebuffer(MNVGframebuffer* framebuffer); // // Metal bridging functions // // Clear context on next frame, must be called before nvgEndFrame void mnvgClearWithColor(NVGcontext* ctx, NVGcolor color); // Returns a pointer to the corresponded `id` object. void* mnvgCommandQueue(NVGcontext* ctx); // Creates an image id from a `id` object pointer. int mnvgCreateImageFromHandle(NVGcontext* ctx, void* textureId, int imageFlags); // Returns a pointer to the corresponded `id` object. void* mnvgDevice(NVGcontext* ctx); // Returns a pointer to the `id` object of the specified image. void* mnvgImageHandle(NVGcontext* ctx, int image); // Copies the pixels from the specified image into the specified `data`. void mnvgReadPixels(NVGcontext* ctx, int image, int x, int y, int width, int height, void* data); // Returns the current OS target. enum MNVGTarget mnvgTarget(); #ifdef __cplusplus } #endif #endif // NANOVG_MTL_H_ vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/src/nanovg_mtl.m000066400000000000000000001733151461511344300315520ustar00rootroot00000000000000// Copyright (c) 2017 Ollix // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // // --- // Author: olliwang@ollix.com (Olli Wang) #include "nanovg_mtl.h" #include #include #include #include #include #import #import #import #include #include "nanovg.h" #if TARGET_OS_SIMULATOR # include "mnvg_bitcode/simulator.h" #elif TARGET_OS_IOS # include "mnvg_bitcode/ios.h" #elif TARGET_OS_OSX # include "mnvg_bitcode/macos.h" #elif TARGET_OS_TV # include "mnvg_bitcode/tvos.h" #else # define MNVG_INVALID_TARGET #endif typedef enum MNVGvertexInputIndex { MNVG_VERTEX_INPUT_INDEX_VERTICES = 0, MNVG_VERTEX_INPUT_INDEX_VIEW_SIZE = 1, } MNVGvertexInputIndex; typedef enum MNVGshaderType { MNVG_SHADER_FILLGRAD, MNVG_SHADER_FILLIMG, MNVG_SHADER_IMG, } MNVGshaderType; enum MNVGcallType { MNVG_NONE = 0, MNVG_FILL, MNVG_CONVEXFILL, MNVG_STROKE, MNVG_TRIANGLES, }; struct MNVGblend { MTLBlendFactor srcRGB; MTLBlendFactor dstRGB; MTLBlendFactor srcAlpha; MTLBlendFactor dstAlpha; }; typedef struct MNVGblend MNVGblend; struct MNVGcall { int type; int image; int pathOffset; int pathCount; int triangleOffset; int triangleCount; int indexOffset; int indexCount; int strokeOffset; int strokeCount; int uniformOffset; MNVGblend blendFunc; }; typedef struct MNVGcall MNVGcall; struct MNVGfragUniforms { matrix_float3x3 scissorMat; matrix_float3x3 paintMat; vector_float4 innerCol; vector_float4 outerCol; vector_float2 scissorExt; vector_float2 scissorScale; vector_float2 extent; float radius; float feather; float strokeMult; float strokeThr; int texType; MNVGshaderType type; }; typedef struct MNVGfragUniforms MNVGfragUniforms; @interface MNVGtexture : NSObject { @public int id; int type; int flags; id tex; id sampler; } @end @interface MNVGbuffers : NSObject @property (nonatomic, strong) id commandBuffer; @property (nonatomic, assign) BOOL isBusy; @property (nonatomic, assign) int image; @property (nonatomic, strong) id viewSizeBuffer; @property (nonatomic, strong) id stencilTexture; @property (nonatomic, assign) MNVGcall* calls; @property (nonatomic, assign) int ccalls; @property (nonatomic, assign) int ncalls; @property (nonatomic, strong) id indexBuffer; @property (nonatomic, assign) uint32_t* indexes; @property (nonatomic, assign) int cindexes; @property (nonatomic, assign) int nindexes; @property (nonatomic, strong) id vertBuffer; @property (nonatomic, assign) struct NVGvertex* verts; @property (nonatomic, assign) int cverts; @property (nonatomic, assign) int nverts; @property (nonatomic, strong) id uniformBuffer; @property (nonatomic, assign) unsigned char* uniforms; @property (nonatomic, assign) int cuniforms; @property (nonatomic, assign) int nuniforms; @end @interface MNVGcontext : NSObject @property (nonatomic, strong) id commandQueue; @property (nonatomic, strong) CAMetalLayer* metalLayer; @property (nonatomic, strong) id renderEncoder; @property (nonatomic, assign) int fragSize; @property (nonatomic, assign) int indexSize; @property (nonatomic, assign) int flags; @property (nonatomic, assign) vector_uint2 viewPortSize; @property (nonatomic, assign) MTLClearColor clearColor; @property (nonatomic, assign) BOOL clearBufferOnFlush; // Textures @property (nonatomic, strong) NSMutableArray* textures; @property int textureId; // Per frame buffers @property (nonatomic, assign) MNVGbuffers* buffers; @property (nonatomic, strong) NSMutableArray* cbuffers; @property (nonatomic, assign) int maxBuffers; @property (nonatomic, strong) dispatch_semaphore_t semaphore; // Cached states. @property (nonatomic, assign) MNVGblend* blendFunc; @property (nonatomic, strong) id defaultStencilState; @property (nonatomic, strong) id fillShapeStencilState; @property (nonatomic, strong) id fillAntiAliasStencilState; @property (nonatomic, strong) id fillStencilState; @property (nonatomic, strong) id strokeShapeStencilState; @property (nonatomic, strong) id strokeAntiAliasStencilState; @property (nonatomic, strong) id strokeClearStencilState; @property (nonatomic, strong) id fragmentFunction; @property (nonatomic, strong) id vertexFunction; @property MTLPixelFormat piplelinePixelFormat; @property (nonatomic, strong) id pipelineState; @property (nonatomic, strong) id stencilOnlyPipelineState; @property (nonatomic, strong) id pseudoSampler; @property (nonatomic, strong) id pseudoTexture; @property (nonatomic, strong) MTLVertexDescriptor* vertexDescriptor; - (MNVGtexture*)allocTexture; - (void)convexFill:(MNVGcall*)call; -(void)fill:(MNVGcall*)call; - (MNVGtexture*)findTexture:(int)id; - (void)renderCancel; - (int)renderCreate; - (void)renderDelete; - (int)renderDeleteTexture:(int)image; - (int)renderCreateTextureWithType:(int)type width:(int)width height:(int)height imageFlags:(int)imageFlags data:(const unsigned char*)data; - (void)renderFillWithPaint:(NVGpaint*)paint compositeOperation:(NVGcompositeOperationState)compositeOperation scissor:(NVGscissor*)scissor fringe:(float)fringe bounds:(const float*)bounds paths:(const NVGpath*)paths npaths:(int)npaths; - (void)renderFlush; - (int)renderGetTextureSizeForImage:(int)image width:(int*)width height:(int*)height; - (void)renderStrokeWithPaint:(NVGpaint*)paint compositeOperation:(NVGcompositeOperationState)compositeOperation scissor:(NVGscissor*)scissor fringe:(float)fringe strokeWidth:(float)strokeWidth paths:(const NVGpath*)paths npaths:(int)npaths; - (void)renderTrianglesWithPaint:(NVGpaint*) paint compositeOperation:(NVGcompositeOperationState)compositeOperation scissor:(NVGscissor*)scissor verts:(const NVGvertex*)verts nverts:(int)nverts fringe:(float)fringe; - (int)renderUpdateTextureWithImage:(int)image x:(int)x y:(int)y width:(int)width height:(int)height data:(const unsigned char*)data; - (void)renderViewportWithWidth:(float)width height:(float)height devicePixelRatio:(float)devicePixelRatio; - (void)stroke:(MNVGcall*)call; - (void)triangles:(MNVGcall*)call; - (void)updateRenderPipelineStatesForBlend:(MNVGblend*)blend pixelFormat:(MTLPixelFormat)pixelFormat; @end // Keeps the weak reference to the currently binded framebuffer. MNVGframebuffer* s_framebuffer = NULL; const MTLResourceOptions kMetalBufferOptions = \ (MTLResourceCPUCacheModeWriteCombined | MTLResourceStorageModeShared); #if TARGET_OS_SIMULATOR const MTLPixelFormat kStencilFormat = MTLPixelFormatDepth32Float_Stencil8; #else const MTLPixelFormat kStencilFormat = MTLPixelFormatStencil8; #endif // TARGET_OS_SIMULATOR static BOOL mtlnvg_convertBlendFuncFactor(int factor, MTLBlendFactor* result) { if (factor == NVG_ZERO) *result = MTLBlendFactorZero; else if (factor == NVG_ONE) *result = MTLBlendFactorOne; else if (factor == NVG_SRC_COLOR) *result = MTLBlendFactorSourceColor; else if (factor == NVG_ONE_MINUS_SRC_COLOR) *result = MTLBlendFactorOneMinusSourceColor; else if (factor == NVG_DST_COLOR) *result = MTLBlendFactorDestinationColor; else if (factor == NVG_ONE_MINUS_DST_COLOR) *result = MTLBlendFactorOneMinusDestinationColor; else if (factor == NVG_SRC_ALPHA) *result = MTLBlendFactorSourceAlpha; else if (factor == NVG_ONE_MINUS_SRC_ALPHA) *result = MTLBlendFactorOneMinusSourceAlpha; else if (factor == NVG_DST_ALPHA) *result = MTLBlendFactorDestinationAlpha; else if (factor == NVG_ONE_MINUS_DST_ALPHA) *result = MTLBlendFactorOneMinusDestinationAlpha; else if (factor == NVG_SRC_ALPHA_SATURATE) *result = MTLBlendFactorSourceAlphaSaturated; else return NO; return YES; } static int mtlnvg__maxi(int a, int b) { return a > b ? a : b; } static int mtlnvg__maxVertCount(const NVGpath* paths, int npaths, int* indexCount, int* strokeCount) { int count = 0; if (indexCount != NULL) *indexCount = 0; if (strokeCount != NULL) *strokeCount = 0; NVGpath* path = (NVGpath*)&paths[0]; for (int i = npaths; i--; ++path) { const int nfill = path->nfill; if (nfill > 2) { count += nfill; if (indexCount != NULL) *indexCount += (nfill - 2) * 3; } if (path->nstroke > 0) { const int nstroke = path->nstroke + 2; count += nstroke; if (strokeCount != NULL) *strokeCount += nstroke; } } return count; } static vector_float4 mtlnvg__premulColor(NVGcolor c) { c.r *= c.a; c.g *= c.a; c.b *= c.a; return (vector_float4){c.r, c.g, c.b, c.a}; } static void mtlnvg__renderCancel(void* uptr) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; [mtl renderCancel]; } static int mtlnvg__renderCreateTexture(void* uptr, int type, int width, int height, int imageFlags, const unsigned char* data) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; return [mtl renderCreateTextureWithType:type width:width height:height imageFlags:imageFlags data:data]; } static int mtlnvg__renderCreate(void* uptr) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; return [mtl renderCreate]; } static void mtlnvg__renderDelete(void* uptr) { MNVGcontext* mtl = (__bridge_transfer MNVGcontext*)uptr; [mtl renderDelete]; } static int mtlnvg__renderDeleteTexture(void* uptr, int image) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; return [mtl renderDeleteTexture:image]; } static void mtlnvg__renderFill(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, float fringe, const float* bounds, const NVGpath* paths, int npaths) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; [mtl renderFillWithPaint:paint compositeOperation:compositeOperation scissor:scissor fringe:fringe bounds:bounds paths:paths npaths:npaths]; } static void mtlnvg__renderFlush(void* uptr) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; [mtl renderFlush]; } static int mtlnvg__renderGetTextureSize(void* uptr, int image, int* w, int* h) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; return [mtl renderGetTextureSizeForImage:image width:w height:h]; } static void mtlnvg__renderStroke(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, float fringe, float strokeWidth, const NVGpath* paths, int npaths) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; [mtl renderStrokeWithPaint:paint compositeOperation:compositeOperation scissor:scissor fringe:fringe strokeWidth:strokeWidth paths:paths npaths:npaths]; } static void mtlnvg__renderTriangles( void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, const NVGvertex* verts, int nverts, float fringe) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; [mtl renderTrianglesWithPaint:paint compositeOperation:compositeOperation scissor:scissor verts:verts nverts:nverts fringe:fringe]; } static int mtlnvg__renderUpdateTexture(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; return [mtl renderUpdateTextureWithImage:image x:x y:y width:w height:h data:data]; } static void mtlnvg__renderViewport(void* uptr, float width, float height, float devicePixelRatio) { MNVGcontext* mtl = (__bridge MNVGcontext*)uptr; [mtl renderViewportWithWidth:width height:height devicePixelRatio:devicePixelRatio]; } static void mtlnvg__xformToMat3x3(matrix_float3x3* m3, float* t) { *m3 = matrix_from_columns((vector_float3){t[0], t[1], 0.0f}, (vector_float3){t[2], t[3], 0.0f}, (vector_float3){t[4], t[5], 1.0f}); } NVGcontext* nvgCreateMTL(void* metalLayer, int flags) { #ifdef MNVG_INVALID_TARGET printf("Metal is only supported on iOS, macOS, and tvOS.\n"); return NULL; #endif // MNVG_INVALID_TARGET NVGparams params; NVGcontext* ctx = NULL; MNVGcontext* mtl = [MNVGcontext new]; memset(¶ms, 0, sizeof(params)); params.renderCreate = mtlnvg__renderCreate; params.renderCreateTexture = mtlnvg__renderCreateTexture; params.renderDeleteTexture = mtlnvg__renderDeleteTexture; params.renderUpdateTexture = mtlnvg__renderUpdateTexture; params.renderGetTextureSize = mtlnvg__renderGetTextureSize; params.renderViewport = mtlnvg__renderViewport; params.renderCancel = mtlnvg__renderCancel; params.renderFlush = mtlnvg__renderFlush; params.renderFill = mtlnvg__renderFill; params.renderStroke = mtlnvg__renderStroke; params.renderTriangles = mtlnvg__renderTriangles; params.renderDelete = mtlnvg__renderDelete; params.userPtr = (__bridge_retained void*)mtl; params.edgeAntiAlias = flags & NVG_ANTIALIAS ? 1 : 0; mtl.flags = flags; #if TARGET_OS_OSX || TARGET_OS_SIMULATOR mtl.fragSize = 256; #else mtl.fragSize = sizeof(MNVGfragUniforms); #endif // TARGET_OS_OSX mtl.indexSize = 4; // MTLIndexTypeUInt32 mtl.metalLayer = (__bridge CAMetalLayer*)metalLayer; ctx = nvgCreateInternal(¶ms); if (ctx == NULL) goto error; return ctx; error: // 'mtl' is freed by nvgDeleteInternal. if (ctx != NULL) nvgDeleteInternal(ctx); return NULL; } static void mtlnvg__vset(NVGvertex* vtx, float x, float y, float u, float v) { vtx->x = x; vtx->y = y; vtx->u = u; vtx->v = v; } void nvgDeleteMTL(NVGcontext* ctx) { nvgDeleteInternal(ctx); } void mnvgBindFramebuffer(MNVGframebuffer* framebuffer) { s_framebuffer = framebuffer; } MNVGframebuffer* mnvgCreateFramebuffer(NVGcontext* ctx, int width, int height, int imageFlags) { MNVGframebuffer* framebuffer = \ (MNVGframebuffer*)malloc(sizeof(MNVGframebuffer)); if (framebuffer == NULL) return NULL; memset(framebuffer, 0, sizeof(MNVGframebuffer)); framebuffer->image = nvgCreateImageRGBA(ctx, width, height, imageFlags | NVG_IMAGE_PREMULTIPLIED, NULL); framebuffer->ctx = ctx; return framebuffer; } void mnvgDeleteFramebuffer(MNVGframebuffer* framebuffer) { if (framebuffer == NULL) return; if (framebuffer->image > 0) { nvgDeleteImage(framebuffer->ctx, framebuffer->image); } free(framebuffer); } void mnvgClearWithColor(NVGcontext* ctx, NVGcolor color) { MNVGcontext* mtl = (__bridge MNVGcontext*)nvgInternalParams(ctx)->userPtr; float alpha = (float)color.a; mtl.clearColor = MTLClearColorMake((float)color.r * alpha, (float)color.g * alpha, (float)color.b * alpha, (float)color.a); mtl.clearBufferOnFlush = YES; } void* mnvgCommandQueue(NVGcontext* ctx) { MNVGcontext* mtl = (__bridge MNVGcontext*)nvgInternalParams(ctx)->userPtr; return (__bridge void*)mtl.commandQueue; } int mnvgCreateImageFromHandle(NVGcontext* ctx, void* textureId, int imageFlags) { MNVGcontext* mtl = (__bridge MNVGcontext*)nvgInternalParams(ctx)->userPtr; MNVGtexture* tex = [mtl allocTexture]; if (tex == NULL) return 0; tex->type = NVG_TEXTURE_RGBA; tex->tex = (__bridge id)textureId; tex->flags = imageFlags; return tex->id; } void* mnvgDevice(NVGcontext* ctx) { MNVGcontext* mtl = (__bridge MNVGcontext*)nvgInternalParams(ctx)->userPtr; return (__bridge void*)mtl.metalLayer.device; } void* mnvgImageHandle(NVGcontext* ctx, int image) { MNVGcontext* mtl = (__bridge MNVGcontext*)nvgInternalParams(ctx)->userPtr; MNVGtexture* tex = [mtl findTexture:image]; if (tex == nil) return NULL; // Makes sure the command execution for the image has been done. for (MNVGbuffers* buffers in mtl.cbuffers) { if (buffers.isBusy && buffers.image == image && buffers.commandBuffer) { id commandBuffer = buffers.commandBuffer; [commandBuffer waitUntilCompleted]; break; } } return (__bridge void*)tex->tex; } void mnvgReadPixels(NVGcontext* ctx, int image, int x, int y, int width, int height, void* data) { MNVGcontext* mtl = (__bridge MNVGcontext*)nvgInternalParams(ctx)->userPtr; MNVGtexture* tex = [mtl findTexture:image]; if (tex == nil) return; NSUInteger bytesPerRow; if (tex->type == NVG_TEXTURE_RGBA) { bytesPerRow = tex->tex.width * 4; } else { bytesPerRow = tex->tex.width; } // Makes sure the command execution for the image has been done. for (MNVGbuffers* buffers in mtl.cbuffers) { if (buffers.isBusy && buffers.image == image && buffers.commandBuffer) { id commandBuffer = buffers.commandBuffer; [commandBuffer waitUntilCompleted]; break; } } #if TARGET_OS_SIMULATOR CAMetalLayer* metalLayer = mtl.metalLayer; const NSUInteger kBufferSize = bytesPerRow * height; id buffer = [metalLayer.device newBufferWithLength:kBufferSize options:MTLResourceStorageModeShared]; id commandBuffer = [mtl.commandQueue commandBuffer]; id blitCommandEncoder = [commandBuffer blitCommandEncoder]; [blitCommandEncoder copyFromTexture:tex->tex sourceSlice:0 sourceLevel:0 sourceOrigin:MTLOriginMake(x, y, 0) sourceSize:MTLSizeMake(width, height, 1) toBuffer:buffer destinationOffset:0 destinationBytesPerRow:bytesPerRow destinationBytesPerImage:kBufferSize]; [blitCommandEncoder endEncoding]; [commandBuffer commit]; [commandBuffer waitUntilCompleted]; memcpy(data, [buffer contents], kBufferSize); #else [tex->tex getBytes:data bytesPerRow:bytesPerRow fromRegion:MTLRegionMake2D(x, y, width, height) mipmapLevel:0]; #endif // TARGET_OS_SIMULATOR } enum MNVGTarget mnvgTarget() { #if TARGET_OS_SIMULATOR return MNVG_SIMULATOR; #elif TARGET_OS_IOS return MNVG_IOS; #elif TARGET_OS_OSX return MNVG_MACOS; #elif TARGET_OS_TV return MNVG_TVOS; #else return MNVG_UNKNOWN; #endif } @implementation MNVGbuffers @end @implementation MNVGcontext - (MNVGcall*)allocCall { MNVGcall* ret = NULL; if (_buffers.ncalls + 1 > _buffers.ccalls) { MNVGcall* calls; int ccalls = mtlnvg__maxi(_buffers.ncalls + 1, 128) + _buffers.ccalls / 2; calls = (MNVGcall*)realloc(_buffers.calls, sizeof(MNVGcall) * ccalls); if (calls == NULL) return NULL; _buffers.calls = calls; _buffers.ccalls = ccalls; } ret = &_buffers.calls[_buffers.ncalls++]; memset(ret, 0, sizeof(MNVGcall)); return ret; } - (int)allocFragUniforms:(int)n { int ret = 0; if (_buffers.nuniforms + n > _buffers.cuniforms) { int cuniforms = mtlnvg__maxi(_buffers.nuniforms + n, 128) \ + _buffers.cuniforms / 2; id buffer = [_metalLayer.device newBufferWithLength:(_fragSize * cuniforms) options:kMetalBufferOptions]; unsigned char* uniforms = [buffer contents]; if (_buffers.uniformBuffer != nil) { memcpy(uniforms, _buffers.uniforms, _fragSize * _buffers.nuniforms); } _buffers.uniformBuffer = buffer; _buffers.uniforms = uniforms; _buffers.cuniforms = cuniforms; } ret = _buffers.nuniforms * _fragSize; _buffers.nuniforms += n; return ret; } - (int)allocIndexes:(int)n { int ret = 0; if (_buffers.nindexes + n > _buffers.cindexes) { int cindexes = mtlnvg__maxi(_buffers.nindexes + n, 4096) \ + _buffers.cindexes / 2; id buffer = [_metalLayer.device newBufferWithLength:(_indexSize * cindexes) options:kMetalBufferOptions]; uint32_t* indexes = [buffer contents]; if (_buffers.indexBuffer != nil) { memcpy(indexes, _buffers.indexes, _indexSize * _buffers.nindexes); } _buffers.indexBuffer = buffer; _buffers.indexes = indexes; _buffers.cindexes = cindexes; } ret = _buffers.nindexes; _buffers.nindexes += n; return ret; } - (MNVGtexture*)allocTexture { MNVGtexture* tex = nil; for (MNVGtexture* texture in _textures) { if (texture->id == 0) { tex = texture; break; } } if (tex == nil) { tex = [MNVGtexture new]; [_textures addObject:tex]; } tex->id = ++_textureId; return tex; } - (int)allocVerts:(int)n { int ret = 0; if (_buffers.nverts + n > _buffers.cverts) { int cverts = mtlnvg__maxi(_buffers.nverts + n, 4096) + _buffers.cverts / 2; id buffer = [_metalLayer.device newBufferWithLength:(sizeof(NVGvertex) * cverts) options:kMetalBufferOptions]; NVGvertex* verts = [buffer contents]; if (_buffers.vertBuffer != nil) { memcpy(verts, _buffers.verts, sizeof(NVGvertex) * _buffers.nverts); } _buffers.vertBuffer = buffer; _buffers.verts = verts; _buffers.cverts = cverts; } ret = _buffers.nverts; _buffers.nverts += n; return ret; } - (MNVGblend)blendCompositeOperation:(NVGcompositeOperationState)op { MNVGblend blend; if (!mtlnvg_convertBlendFuncFactor(op.srcRGB, &blend.srcRGB) || !mtlnvg_convertBlendFuncFactor(op.dstRGB, &blend.dstRGB) || !mtlnvg_convertBlendFuncFactor(op.srcAlpha, &blend.srcAlpha) || !mtlnvg_convertBlendFuncFactor(op.dstAlpha, &blend.dstAlpha)) { blend.srcRGB = MTLBlendFactorOne; blend.dstRGB = MTLBlendFactorOneMinusSourceAlpha; blend.srcAlpha = MTLBlendFactorOne; blend.dstAlpha = MTLBlendFactorOneMinusSourceAlpha; } return blend; } - (void)checkError:(NSError*)error withMessage:(const char*)message { if ((_flags & NVG_DEBUG) == 0) return; if (error) { printf("Error occurs after %s: %s\n", message, [[error localizedDescription] UTF8String]); } } - (int)convertPaintForFrag:(MNVGfragUniforms*)frag paint:(NVGpaint*)paint scissor:(NVGscissor*)scissor width:(float)width fringe:(float)fringe strokeThr:(float)strokeThr { MNVGtexture* tex = nil; float invxform[6]; memset(frag, 0, sizeof(*frag)); frag->innerCol = mtlnvg__premulColor(paint->innerColor); frag->outerCol = mtlnvg__premulColor(paint->outerColor); if (scissor->extent[0] < -0.5f || scissor->extent[1] < -0.5f) { frag->scissorMat = matrix_from_rows((vector_float3){0, 0, 0}, (vector_float3){0, 0, 0}, (vector_float3){0, 0, 0}); frag->scissorExt.x = 1.0f; frag->scissorExt.y = 1.0f; frag->scissorScale.x = 1.0f; frag->scissorScale.y = 1.0f; } else { nvgTransformInverse(invxform, scissor->xform); mtlnvg__xformToMat3x3(&frag->scissorMat, invxform); frag->scissorExt.x = scissor->extent[0]; frag->scissorExt.y = scissor->extent[1]; frag->scissorScale.x = sqrtf(scissor->xform[0] * scissor->xform[0] + scissor->xform[2] * scissor->xform[2]) / fringe; frag->scissorScale.y = sqrtf(scissor->xform[1] * scissor->xform[1] + scissor->xform[3] * scissor->xform[3]) / fringe; } frag->extent = (vector_float2){paint->extent[0], paint->extent[1]}; frag->strokeMult = (width * 0.5f + fringe * 0.5f) / fringe; frag->strokeThr = strokeThr; if (paint->image != 0) { tex = [self findTexture:paint->image]; if (tex == nil) return 0; if (tex->flags & NVG_IMAGE_FLIPY) { float m1[6], m2[6]; nvgTransformTranslate(m1, 0.0f, frag->extent.y * 0.5f); nvgTransformMultiply(m1, paint->xform); nvgTransformScale(m2, 1.0f, -1.0f); nvgTransformMultiply(m2, m1); nvgTransformTranslate(m1, 0.0f, -frag->extent.y * 0.5f); nvgTransformMultiply(m1, m2); nvgTransformInverse(invxform, m1); } else { nvgTransformInverse(invxform, paint->xform); } frag->type = MNVG_SHADER_FILLIMG; if (tex->type == NVG_TEXTURE_RGBA) frag->texType = (tex->flags & NVG_IMAGE_PREMULTIPLIED) ? 0 : 1; else frag->texType = 2; } else { frag->type = MNVG_SHADER_FILLGRAD; frag->radius = paint->radius; frag->feather = paint->feather; nvgTransformInverse(invxform, paint->xform); } mtlnvg__xformToMat3x3(&frag->paintMat, invxform); return 1; } - (void)convexFill:(MNVGcall*)call { const int kIndexBufferOffset = call->indexOffset * _indexSize; [self setUniforms:call->uniformOffset image:call->image]; [_renderEncoder setRenderPipelineState:_pipelineState]; if (call->indexCount > 0) { [_renderEncoder drawIndexedPrimitives:MTLPrimitiveTypeTriangle indexCount:call->indexCount indexType:MTLIndexTypeUInt32 indexBuffer:_buffers.indexBuffer indexBufferOffset:kIndexBufferOffset]; } // Draw fringes if (call->strokeCount > 0) { [_renderEncoder drawPrimitives:MTLPrimitiveTypeTriangleStrip vertexStart:call->strokeOffset vertexCount:call->strokeCount]; } } -(void)fill:(MNVGcall*)call { // Draws shapes. const int kIndexBufferOffset = call->indexOffset * _indexSize; [_renderEncoder setCullMode:MTLCullModeNone]; [_renderEncoder setDepthStencilState:_fillShapeStencilState]; [_renderEncoder setRenderPipelineState:_stencilOnlyPipelineState]; if (call->indexCount > 0) { [_renderEncoder drawIndexedPrimitives:MTLPrimitiveTypeTriangle indexCount:call->indexCount indexType:MTLIndexTypeUInt32 indexBuffer:_buffers.indexBuffer indexBufferOffset:kIndexBufferOffset]; } // Restores states. [_renderEncoder setCullMode:MTLCullModeBack]; [_renderEncoder setRenderPipelineState:_pipelineState]; // Draws anti-aliased fragments. [self setUniforms:call->uniformOffset image:call->image]; if (_flags & NVG_ANTIALIAS && call->strokeCount > 0) { [_renderEncoder setDepthStencilState:_fillAntiAliasStencilState]; [_renderEncoder drawPrimitives:MTLPrimitiveTypeTriangleStrip vertexStart:call->strokeOffset vertexCount:call->strokeCount]; } // Draws fill. [_renderEncoder setDepthStencilState:_fillStencilState]; [_renderEncoder drawPrimitives:MTLPrimitiveTypeTriangleStrip vertexStart:call->triangleOffset vertexCount:call->triangleCount]; [_renderEncoder setDepthStencilState:_defaultStencilState]; } - (MNVGtexture*)findTexture:(int)id { for (MNVGtexture* texture in _textures) { if (texture->id == id) return texture; } return nil; } - (MNVGfragUniforms*)fragUniformAtIndex:(int)index { return (MNVGfragUniforms*)&_buffers.uniforms[index]; } - (void)renderCancel { _buffers.image = 0; _buffers.isBusy = NO; _buffers.nindexes = 0; _buffers.nverts = 0; _buffers.ncalls = 0; _buffers.nuniforms = 0; dispatch_semaphore_signal(_semaphore); } - (id)renderCommandEncoderWithColorTexture: (id)colorTexture { MTLRenderPassDescriptor *descriptor = \ [MTLRenderPassDescriptor renderPassDescriptor]; if (descriptor == nil) { return nil; } descriptor.colorAttachments[0].clearColor = _clearColor; descriptor.colorAttachments[0].loadAction = \ _clearBufferOnFlush ? MTLLoadActionClear : MTLLoadActionLoad; descriptor.colorAttachments[0].storeAction = MTLStoreActionStore; descriptor.colorAttachments[0].texture = colorTexture; _clearBufferOnFlush = NO; descriptor.stencilAttachment.clearStencil = 0; descriptor.stencilAttachment.loadAction = MTLLoadActionClear; descriptor.stencilAttachment.storeAction = MTLStoreActionDontCare; descriptor.stencilAttachment.texture = _buffers.stencilTexture; id commandBuffer = _buffers.commandBuffer; id encoder = [commandBuffer renderCommandEncoderWithDescriptor:descriptor]; [encoder setCullMode:MTLCullModeBack]; [encoder setFrontFacingWinding:MTLWindingCounterClockwise]; [encoder setStencilReferenceValue:0]; [encoder setViewport:(MTLViewport) {0.0, 0.0, _viewPortSize.x, _viewPortSize.y, 0.0, 1.0}]; [encoder setVertexBuffer:_buffers.vertBuffer offset:0 atIndex:MNVG_VERTEX_INPUT_INDEX_VERTICES]; [encoder setVertexBuffer:_buffers.viewSizeBuffer offset:0 atIndex:MNVG_VERTEX_INPUT_INDEX_VIEW_SIZE]; [encoder setFragmentBuffer:_buffers.uniformBuffer offset:0 atIndex:0]; return encoder; } - (int)renderCreate { if (_metalLayer.device == nil) { id device = MTLCreateSystemDefaultDevice(); _metalLayer.device = device; } #if TARGET_OS_OSX _metalLayer.opaque = NO; #endif // TARGET_OS_OSX // Loads shaders from pre-compiled metal library.. NSError* error; id device = _metalLayer.device; #ifdef MNVG_INVALID_TARGET id library = nil; return 0; #endif bool creates_pseudo_texture = false; unsigned char* metal_library_bitcode; unsigned int metal_library_bitcode_len; #if TARGET_OS_SIMULATOR metal_library_bitcode = mnvg_bitcode_simulator; metal_library_bitcode_len = mnvg_bitcode_simulator_len; #elif TARGET_OS_IOS if (@available(iOS 10, *)) { } else if (@available(iOS 8, *)) { creates_pseudo_texture = true; } else { return 0; } metal_library_bitcode = mnvg_bitcode_ios; metal_library_bitcode_len = mnvg_bitcode_ios_len; #elif TARGET_OS_OSX if (@available(macOS 10.11, *)) { metal_library_bitcode = mnvg_bitcode_macos; metal_library_bitcode_len = mnvg_bitcode_macos_len; } else { return 0; } #elif TARGET_OS_TV metal_library_bitcode = mnvg_bitcode_tvos; metal_library_bitcode_len = mnvg_bitcode_tvos_len; #endif dispatch_data_t data = dispatch_data_create(metal_library_bitcode, metal_library_bitcode_len, NULL, DISPATCH_DATA_DESTRUCTOR_DEFAULT); id library = [device newLibraryWithData:data error:&error]; [self checkError:error withMessage:"init library"]; if (library == nil) { return 0; } _vertexFunction = [library newFunctionWithName:@"vertexShader"]; if (_flags & NVG_ANTIALIAS) { _fragmentFunction = [library newFunctionWithName:@"fragmentShaderAA"]; } else { _fragmentFunction = [library newFunctionWithName:@"fragmentShader"]; } _commandQueue = [device newCommandQueue]; // Initializes the number of available buffers. if (_flags & NVG_TRIPLE_BUFFER) { _maxBuffers = 3; } else if (_flags & NVG_DOUBLE_BUFFER) { _maxBuffers = 2; } else { _maxBuffers = 1; } _cbuffers = [NSMutableArray arrayWithCapacity:_maxBuffers]; for (int i = _maxBuffers; i--;) { [_cbuffers addObject:[MNVGbuffers new]]; } _clearBufferOnFlush = NO; _semaphore = dispatch_semaphore_create(_maxBuffers); // Initializes vertex descriptor. _vertexDescriptor = [MTLVertexDescriptor vertexDescriptor]; _vertexDescriptor.attributes[0].format = MTLVertexFormatFloat2; _vertexDescriptor.attributes[0].bufferIndex = 0; _vertexDescriptor.attributes[0].offset = offsetof(NVGvertex, x); _vertexDescriptor.attributes[1].format = MTLVertexFormatFloat2; _vertexDescriptor.attributes[1].bufferIndex = 0; _vertexDescriptor.attributes[1].offset = offsetof(NVGvertex, u); _vertexDescriptor.layouts[0].stride = sizeof(NVGvertex); _vertexDescriptor.layouts[0].stepFunction = MTLVertexStepFunctionPerVertex; // Initialzes textures. _textureId = 0; _textures = [NSMutableArray array]; // Initializes default sampler descriptor. MTLSamplerDescriptor* samplerDescriptor = [MTLSamplerDescriptor new]; _pseudoSampler = [_metalLayer.device newSamplerStateWithDescriptor:samplerDescriptor]; // Initializes pseudo texture for macOS. if (creates_pseudo_texture) { const int kPseudoTextureImage = [self renderCreateTextureWithType:NVG_TEXTURE_ALPHA width:1 height:1 imageFlags:0 data:NULL]; MNVGtexture* tex = [self findTexture:kPseudoTextureImage]; _pseudoTexture = tex->tex; } // Initializes default blend states. _blendFunc = malloc(sizeof(MNVGblend)); _blendFunc->srcRGB = MTLBlendFactorOne; _blendFunc->dstRGB = MTLBlendFactorOneMinusSourceAlpha; _blendFunc->srcAlpha = MTLBlendFactorOne; _blendFunc->dstAlpha = MTLBlendFactorOneMinusSourceAlpha; // Initializes stencil states. MTLDepthStencilDescriptor* stencilDescriptor = \ [MTLDepthStencilDescriptor new]; // Default stencil state. _defaultStencilState = [device newDepthStencilStateWithDescriptor:stencilDescriptor]; // Fill shape stencil. MTLStencilDescriptor* frontFaceStencilDescriptor = [MTLStencilDescriptor new]; frontFaceStencilDescriptor.stencilCompareFunction = MTLCompareFunctionAlways; frontFaceStencilDescriptor.depthStencilPassOperation = \ MTLStencilOperationIncrementWrap; MTLStencilDescriptor* backFaceStencilDescriptor = [MTLStencilDescriptor new]; backFaceStencilDescriptor.stencilCompareFunction = MTLCompareFunctionAlways; backFaceStencilDescriptor.depthStencilPassOperation = \ MTLStencilOperationDecrementWrap; stencilDescriptor.depthCompareFunction = MTLCompareFunctionAlways; stencilDescriptor.backFaceStencil = backFaceStencilDescriptor; stencilDescriptor.frontFaceStencil = frontFaceStencilDescriptor; _fillShapeStencilState = [device newDepthStencilStateWithDescriptor:stencilDescriptor]; // Fill anti-aliased stencil. frontFaceStencilDescriptor.stencilCompareFunction = MTLCompareFunctionEqual; frontFaceStencilDescriptor.stencilFailureOperation = MTLStencilOperationKeep; frontFaceStencilDescriptor.depthFailureOperation = MTLStencilOperationKeep; frontFaceStencilDescriptor.depthStencilPassOperation = \ MTLStencilOperationZero; stencilDescriptor.backFaceStencil = nil; stencilDescriptor.frontFaceStencil = frontFaceStencilDescriptor; _fillAntiAliasStencilState = [device newDepthStencilStateWithDescriptor:stencilDescriptor]; // Fill stencil. frontFaceStencilDescriptor.stencilCompareFunction = \ MTLCompareFunctionNotEqual; frontFaceStencilDescriptor.stencilFailureOperation = MTLStencilOperationZero; frontFaceStencilDescriptor.depthFailureOperation = MTLStencilOperationZero; frontFaceStencilDescriptor.depthStencilPassOperation = \ MTLStencilOperationZero; stencilDescriptor.backFaceStencil = nil; stencilDescriptor.frontFaceStencil = frontFaceStencilDescriptor; _fillStencilState = [device newDepthStencilStateWithDescriptor:stencilDescriptor]; // Stroke shape stencil. frontFaceStencilDescriptor.stencilCompareFunction = MTLCompareFunctionEqual; frontFaceStencilDescriptor.stencilFailureOperation = MTLStencilOperationKeep; frontFaceStencilDescriptor.depthFailureOperation = MTLStencilOperationKeep; frontFaceStencilDescriptor.depthStencilPassOperation = \ MTLStencilOperationIncrementClamp; stencilDescriptor.backFaceStencil = nil; stencilDescriptor.frontFaceStencil = frontFaceStencilDescriptor; _strokeShapeStencilState = [device newDepthStencilStateWithDescriptor:stencilDescriptor]; // Stroke anti-aliased stencil. frontFaceStencilDescriptor.depthStencilPassOperation = \ MTLStencilOperationKeep; stencilDescriptor.backFaceStencil = nil; stencilDescriptor.frontFaceStencil = frontFaceStencilDescriptor; _strokeAntiAliasStencilState = [device newDepthStencilStateWithDescriptor:stencilDescriptor]; // Stroke clear stencil. frontFaceStencilDescriptor.stencilCompareFunction = MTLCompareFunctionAlways; frontFaceStencilDescriptor.stencilFailureOperation = MTLStencilOperationZero; frontFaceStencilDescriptor.depthFailureOperation = MTLStencilOperationZero; frontFaceStencilDescriptor.depthStencilPassOperation = \ MTLStencilOperationZero; stencilDescriptor.backFaceStencil = nil; stencilDescriptor.frontFaceStencil = frontFaceStencilDescriptor; _strokeClearStencilState = [device newDepthStencilStateWithDescriptor:stencilDescriptor]; return 1; } - (int)renderCreateTextureWithType:(int)type width:(int)width height:(int)height imageFlags:(int)imageFlags data:(const unsigned char*)data { MNVGtexture* tex = [self allocTexture]; if (tex == nil) return 0; MTLPixelFormat pixelFormat = MTLPixelFormatRGBA8Unorm; if (type == NVG_TEXTURE_ALPHA) { pixelFormat = MTLPixelFormatR8Unorm; } tex->type = type; tex->flags = imageFlags; MTLTextureDescriptor *textureDescriptor = [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:pixelFormat width:width height:height mipmapped:(imageFlags & NVG_IMAGE_GENERATE_MIPMAPS ? YES : NO)]; textureDescriptor.usage = MTLTextureUsageShaderRead | MTLTextureUsageRenderTarget | MTLTextureUsageShaderWrite; #if TARGET_OS_SIMULATOR textureDescriptor.storageMode = MTLStorageModePrivate; #endif // TARGET_OS_SIMULATOR tex->tex = [_metalLayer.device newTextureWithDescriptor:textureDescriptor]; if (data != NULL) { NSUInteger bytesPerRow; if (tex->type == NVG_TEXTURE_RGBA) { bytesPerRow = width * 4; } else { bytesPerRow = width; } if (textureDescriptor.storageMode == MTLStorageModePrivate) { const NSUInteger kBufferSize = bytesPerRow * height; id buffer = [_metalLayer.device newBufferWithLength:kBufferSize options:MTLResourceStorageModeShared]; memcpy([buffer contents], data, kBufferSize); id commandBuffer = [_commandQueue commandBuffer]; id blitCommandEncoder = [commandBuffer blitCommandEncoder]; [blitCommandEncoder copyFromBuffer:buffer sourceOffset:0 sourceBytesPerRow:bytesPerRow sourceBytesPerImage:kBufferSize sourceSize:MTLSizeMake(width, height, 1) toTexture:tex->tex destinationSlice:0 destinationLevel:0 destinationOrigin:MTLOriginMake(0, 0, 0)]; [blitCommandEncoder endEncoding]; [commandBuffer commit]; [commandBuffer waitUntilCompleted]; } else { [tex->tex replaceRegion:MTLRegionMake2D(0, 0, width, height) mipmapLevel:0 withBytes:data bytesPerRow:bytesPerRow]; } if (imageFlags & NVG_IMAGE_GENERATE_MIPMAPS) { id commandBuffer = [_commandQueue commandBuffer]; id encoder = [commandBuffer blitCommandEncoder]; [encoder generateMipmapsForTexture:tex->tex]; [encoder endEncoding]; [commandBuffer commit]; [commandBuffer waitUntilCompleted]; } } MTLSamplerDescriptor* samplerDescriptor = [MTLSamplerDescriptor new]; if (imageFlags & NVG_IMAGE_NEAREST) { samplerDescriptor.minFilter = MTLSamplerMinMagFilterNearest; samplerDescriptor.magFilter = MTLSamplerMinMagFilterNearest; if (imageFlags & NVG_IMAGE_GENERATE_MIPMAPS) samplerDescriptor.mipFilter = MTLSamplerMipFilterNearest; } else { samplerDescriptor.minFilter = MTLSamplerMinMagFilterLinear; samplerDescriptor.magFilter = MTLSamplerMinMagFilterLinear; if (imageFlags & NVG_IMAGE_GENERATE_MIPMAPS) samplerDescriptor.mipFilter = MTLSamplerMipFilterLinear; } if (imageFlags & NVG_IMAGE_REPEATX) { samplerDescriptor.sAddressMode = MTLSamplerAddressModeRepeat; } else { samplerDescriptor.sAddressMode = MTLSamplerAddressModeClampToEdge; } if (imageFlags & NVG_IMAGE_REPEATY) { samplerDescriptor.tAddressMode = MTLSamplerAddressModeRepeat; } else { samplerDescriptor.tAddressMode = MTLSamplerAddressModeClampToEdge; } tex->sampler = [_metalLayer.device newSamplerStateWithDescriptor:samplerDescriptor]; return tex->id; } - (void)renderDelete { for (MNVGbuffers* buffers in _cbuffers) { buffers.commandBuffer = nil; buffers.viewSizeBuffer = nil; buffers.stencilTexture = nil; buffers.indexBuffer = nil; buffers.vertBuffer = nil; buffers.uniformBuffer = nil; free(buffers.calls); } for (MNVGtexture* texture in _textures) { texture->tex = nil; texture->sampler = nil; } free(_blendFunc); _commandQueue = nil; _renderEncoder = nil; _textures = nil; _cbuffers = nil; _defaultStencilState = nil; _fillShapeStencilState = nil; _fillAntiAliasStencilState = nil; _strokeShapeStencilState = nil; _strokeAntiAliasStencilState = nil; _strokeClearStencilState = nil; _fragmentFunction = nil; _vertexFunction = nil; _pipelineState = nil; _stencilOnlyPipelineState = nil; _pseudoSampler = nil; _pseudoTexture = nil; _vertexDescriptor = nil; _metalLayer.device = nil; _metalLayer = nil; } - (int)renderDeleteTexture:(int)image { for (MNVGtexture* texture in _textures) { if (texture->id == image) { if (texture->tex != nil && (texture->flags & NVG_IMAGE_NODELETE) == 0) { texture->tex = nil; texture->sampler = nil; } texture->id = 0; texture->flags = 0; return 1; } } return 0; } - (void)renderFillWithPaint:(NVGpaint*)paint compositeOperation:(NVGcompositeOperationState)compositeOperation scissor:(NVGscissor*)scissor fringe:(float)fringe bounds:(const float*)bounds paths:(const NVGpath*)paths npaths:(int)npaths { MNVGcall* call = [self allocCall]; NVGvertex* quad; if (call == NULL) return; call->type = MNVG_FILL; call->triangleCount = 4; call->image = paint->image; call->blendFunc = [self blendCompositeOperation:compositeOperation]; if (npaths == 1 && paths[0].convex) { call->type = MNVG_CONVEXFILL; call->triangleCount = 0; // Bounding box fill quad not needed for convex fill } // Allocate vertices for all the paths. int indexCount, strokeCount = 0; int maxverts = mtlnvg__maxVertCount(paths, npaths, &indexCount, &strokeCount) + call->triangleCount; int vertOffset = [self allocVerts:maxverts]; if (vertOffset == -1) goto error; int indexOffset = [self allocIndexes:indexCount]; if (indexOffset == -1) goto error; call->indexOffset = indexOffset; call->indexCount = indexCount; uint32_t* index = &_buffers.indexes[indexOffset]; int strokeVertOffset = vertOffset + (maxverts - strokeCount); call->strokeOffset = strokeVertOffset + 1; call->strokeCount = strokeCount - 2; NVGvertex* strokeVert = _buffers.verts + strokeVertOffset; NVGpath* path = (NVGpath*)&paths[0]; for (int i = npaths; i--; ++path) { if (path->nfill > 2) { memcpy(&_buffers.verts[vertOffset], path->fill, sizeof(NVGvertex) * path->nfill); int hubVertOffset = vertOffset++; for (int j = 2; j < path->nfill; j++) { *index++ = hubVertOffset; *index++ = vertOffset++; *index++ = vertOffset; } vertOffset++; } if (path->nstroke > 0) { memcpy(strokeVert, path->stroke, sizeof(NVGvertex)); ++strokeVert; memcpy(strokeVert, path->stroke, sizeof(NVGvertex) * path->nstroke); strokeVert += path->nstroke; memcpy(strokeVert, path->stroke + path->nstroke - 1, sizeof(NVGvertex)); ++strokeVert; } } // Setup uniforms for draw calls if (call->type == MNVG_FILL) { // Quad call->triangleOffset = vertOffset; quad = &_buffers.verts[call->triangleOffset]; mtlnvg__vset(&quad[0], bounds[2], bounds[3], 0.5f, 1.0f); mtlnvg__vset(&quad[1], bounds[2], bounds[1], 0.5f, 1.0f); mtlnvg__vset(&quad[2], bounds[0], bounds[3], 0.5f, 1.0f); mtlnvg__vset(&quad[3], bounds[0], bounds[1], 0.5f, 1.0f); } // Fill shader call->uniformOffset = [self allocFragUniforms:1]; if (call->uniformOffset == -1) goto error; [self convertPaintForFrag:[self fragUniformAtIndex:call->uniformOffset] paint:paint scissor:scissor width:fringe fringe:fringe strokeThr:-1.0f]; return; error: // We get here if call alloc was ok, but something else is not. // Roll back the last call to prevent drawing it. if (_buffers.ncalls > 0) _buffers.ncalls--; } - (void)renderFlush { // Cancelled if the drawable is invisible. if (_viewPortSize.x == 0 || _viewPortSize.y == 0) { [self renderCancel]; return; } id commandBuffer = [_commandQueue commandBuffer]; id colorTexture = nil;; vector_uint2 textureSize; _buffers.commandBuffer = commandBuffer; __block MNVGbuffers* buffers = _buffers; [commandBuffer enqueue]; [commandBuffer addCompletedHandler:^(id buffer) { buffers.isBusy = NO; buffers.commandBuffer = nil; buffers.image = 0; buffers.nindexes = 0; buffers.nverts = 0; buffers.ncalls = 0; buffers.nuniforms = 0; dispatch_semaphore_signal(self.semaphore); }]; if (s_framebuffer == NULL || nvgInternalParams(s_framebuffer->ctx)->userPtr != (__bridge void*)self) { textureSize = _viewPortSize; } else { // renders in framebuffer buffers.image = s_framebuffer->image; MNVGtexture* tex = [self findTexture:s_framebuffer->image]; colorTexture = tex->tex; textureSize = (vector_uint2){(uint)colorTexture.width, (uint)colorTexture.height}; } if (textureSize.x == 0 || textureSize.y == 0) return; [self updateStencilTextureToSize:&textureSize]; id drawable = nil; if (colorTexture == nil) { drawable = _metalLayer.nextDrawable; colorTexture = drawable.texture; } _renderEncoder = [self renderCommandEncoderWithColorTexture:colorTexture]; if (_renderEncoder == nil) { return; } MNVGcall* call = &buffers.calls[0]; for (int i = buffers.ncalls; i--; ++call) { MNVGblend* blend = &call->blendFunc; [self updateRenderPipelineStatesForBlend:blend pixelFormat:colorTexture.pixelFormat]; if (call->type == MNVG_FILL) [self fill:call]; else if (call->type == MNVG_CONVEXFILL) [self convexFill:call]; else if (call->type == MNVG_STROKE) [self stroke:call]; else if (call->type == MNVG_TRIANGLES) [self triangles:call]; } [_renderEncoder endEncoding]; _renderEncoder = nil; if (drawable && !_metalLayer.presentsWithTransaction) { [_buffers.commandBuffer presentDrawable:drawable]; } #if TARGET_OS_OSX // Makes mnvgReadPixels() work as expected on Mac. if (s_framebuffer != NULL) { id blitCommandEncoder = [_buffers.commandBuffer blitCommandEncoder]; [blitCommandEncoder synchronizeResource:colorTexture]; [blitCommandEncoder endEncoding]; } #endif // TARGET_OS_OSX [_buffers.commandBuffer commit]; if (drawable && _metalLayer.presentsWithTransaction) { [_buffers.commandBuffer waitUntilScheduled]; [drawable present]; } } - (int)renderGetTextureSizeForImage:(int)image width:(int*)width height:(int*)height { MNVGtexture* tex = [self findTexture:image]; if (tex == nil) return 0; *width = (int)tex->tex.width; *height = (int)tex->tex.height; return 1; } - (void)renderStrokeWithPaint:(NVGpaint*)paint compositeOperation:(NVGcompositeOperationState)compositeOperation scissor:(NVGscissor*)scissor fringe:(float)fringe strokeWidth:(float)strokeWidth paths:(const NVGpath*)paths npaths:(int)npaths { MNVGcall* call = [self allocCall]; if (call == NULL) return; call->type = MNVG_STROKE; call->image = paint->image; call->blendFunc = [self blendCompositeOperation:compositeOperation]; // Allocate vertices for all the paths. int strokeCount = 0; int maxverts = mtlnvg__maxVertCount(paths, npaths, NULL, &strokeCount); int offset = [self allocVerts:maxverts]; if (offset == -1) goto error; call->strokeOffset = offset + 1; call->strokeCount = strokeCount - 2; NVGvertex* strokeVert = _buffers.verts + offset; NVGpath* path = (NVGpath*)&paths[0]; for (int i = npaths; i--; ++path) { if (path->nstroke > 0) { memcpy(strokeVert, path->stroke, sizeof(NVGvertex)); ++strokeVert; memcpy(strokeVert, path->stroke, sizeof(NVGvertex) * path->nstroke); strokeVert += path->nstroke; memcpy(strokeVert, path->stroke + path->nstroke - 1, sizeof(NVGvertex)); ++strokeVert; } } if (_flags & NVG_STENCIL_STROKES) { // Fill shader call->uniformOffset = [self allocFragUniforms:2]; if (call->uniformOffset == -1) goto error; [self convertPaintForFrag:[self fragUniformAtIndex:call->uniformOffset] paint:paint scissor:scissor width:strokeWidth fringe:fringe strokeThr:-1.0f]; MNVGfragUniforms* frag = [self fragUniformAtIndex:call->uniformOffset + _fragSize]; [self convertPaintForFrag:frag paint:paint scissor:scissor width:strokeWidth fringe:fringe strokeThr:(1.0f - 0.5f / 255.0f)]; } else { // Fill shader call->uniformOffset = [self allocFragUniforms:1]; if (call->uniformOffset == -1) goto error; [self convertPaintForFrag:[self fragUniformAtIndex:call->uniformOffset] paint:paint scissor:scissor width:strokeWidth fringe:fringe strokeThr:-1.0f]; } return; error: // We get here if call alloc was ok, but something else is not. // Roll back the last call to prevent drawing it. if (_buffers.ncalls > 0) _buffers.ncalls--; } - (void)renderTrianglesWithPaint:(NVGpaint*) paint compositeOperation:(NVGcompositeOperationState)compositeOperation scissor:(NVGscissor*)scissor verts:(const NVGvertex*)verts nverts:(int)nverts fringe:(float)fringe { MNVGcall* call = [self allocCall]; MNVGfragUniforms* frag; if (call == NULL) return; call->type = MNVG_TRIANGLES; call->image = paint->image; call->blendFunc = [self blendCompositeOperation:compositeOperation]; // Allocate vertices for all the paths. call->triangleOffset = [self allocVerts:nverts]; if (call->triangleOffset == -1) goto error; call->triangleCount = nverts; memcpy(&_buffers.verts[call->triangleOffset], verts, sizeof(NVGvertex) * nverts); // Fill shader call->uniformOffset = [self allocFragUniforms:1]; if (call->uniformOffset == -1) goto error; frag = [self fragUniformAtIndex:call->uniformOffset]; [self convertPaintForFrag:frag paint:paint scissor:scissor width:1.0f fringe:fringe strokeThr:-1.0f]; frag->type = MNVG_SHADER_IMG; return; error: // We get here if call alloc was ok, but something else is not. // Roll back the last call to prevent drawing it. if (_buffers.ncalls > 0) _buffers.ncalls--; } - (int)renderUpdateTextureWithImage:(int)image x:(int)x y:(int)y width:(int)width height:(int)height data:(const unsigned char*)data { MNVGtexture* tex = [self findTexture:image]; if (tex == nil) return 0; unsigned char* bytes; NSUInteger bytesPerRow; if (tex->type == NVG_TEXTURE_RGBA) { bytesPerRow = tex->tex.width * 4; bytes = (unsigned char*)data + y * bytesPerRow + x * 4; } else { bytesPerRow = tex->tex.width; bytes = (unsigned char*)data + y * bytesPerRow + x; } #if TARGET_OS_SIMULATOR const NSUInteger kBufferSize = bytesPerRow * height; id buffer = [_metalLayer.device newBufferWithLength:kBufferSize options:MTLResourceStorageModeShared]; memcpy([buffer contents], bytes, kBufferSize); id commandBuffer = [_commandQueue commandBuffer]; id blitCommandEncoder = [commandBuffer blitCommandEncoder]; [blitCommandEncoder copyFromBuffer:buffer sourceOffset:0 sourceBytesPerRow:bytesPerRow sourceBytesPerImage:kBufferSize sourceSize:MTLSizeMake(width, height, 1) toTexture:tex->tex destinationSlice:0 destinationLevel:0 destinationOrigin:MTLOriginMake(x, y, 0)]; [blitCommandEncoder endEncoding]; [commandBuffer commit]; [commandBuffer waitUntilCompleted]; #else id texture = tex->tex; [texture replaceRegion:MTLRegionMake2D(x, y, width, height) mipmapLevel:0 withBytes:bytes bytesPerRow:bytesPerRow]; #endif return 1; } - (void)renderViewportWithWidth:(float)width height:(float)height devicePixelRatio:(float)devicePixelRatio { _viewPortSize = (vector_uint2){width * devicePixelRatio, height * devicePixelRatio}; dispatch_semaphore_wait(_semaphore, DISPATCH_TIME_FOREVER); for (MNVGbuffers* buffers in _cbuffers) { if (!buffers.isBusy) { buffers.isBusy = YES; _buffers = buffers; break; } } // Initializes view size buffer for vertex function. if (_buffers.viewSizeBuffer == nil) { _buffers.viewSizeBuffer = [_metalLayer.device newBufferWithLength:sizeof(vector_float2) options:kMetalBufferOptions]; } float* viewSize = (float*)[_buffers.viewSizeBuffer contents]; viewSize[0] = width; viewSize[1] = height; } - (void)setUniforms:(int)uniformOffset image:(int)image { [_renderEncoder setFragmentBufferOffset:uniformOffset atIndex:0]; MNVGtexture* tex = (image == 0 ? nil : [self findTexture:image]); if (tex != nil) { [_renderEncoder setFragmentTexture:tex->tex atIndex:0]; [_renderEncoder setFragmentSamplerState:tex->sampler atIndex:0]; } else { [_renderEncoder setFragmentTexture:_pseudoTexture atIndex:0]; [_renderEncoder setFragmentSamplerState:_pseudoSampler atIndex:0]; } } - (void)stroke:(MNVGcall*)call { if (call->strokeCount <= 0) { return; } if (_flags & NVG_STENCIL_STROKES) { // Fills the stroke base without overlap. [self setUniforms:(call->uniformOffset + _fragSize) image:call->image]; [_renderEncoder setDepthStencilState:_strokeShapeStencilState]; [_renderEncoder setRenderPipelineState:_pipelineState]; [_renderEncoder drawPrimitives:MTLPrimitiveTypeTriangleStrip vertexStart:call->strokeOffset vertexCount:call->strokeCount]; // Draws anti-aliased fragments. [self setUniforms:call->uniformOffset image:call->image]; [_renderEncoder setDepthStencilState:_strokeAntiAliasStencilState]; [_renderEncoder drawPrimitives:MTLPrimitiveTypeTriangleStrip vertexStart:call->strokeOffset vertexCount:call->strokeCount]; // Clears stencil buffer. [_renderEncoder setDepthStencilState:_strokeClearStencilState]; [_renderEncoder setRenderPipelineState:_stencilOnlyPipelineState]; [_renderEncoder drawPrimitives:MTLPrimitiveTypeTriangleStrip vertexStart:call->strokeOffset vertexCount:call->strokeCount]; [_renderEncoder setDepthStencilState:_defaultStencilState]; } else { // Draws strokes. [self setUniforms:call->uniformOffset image:call->image]; [_renderEncoder setRenderPipelineState:_pipelineState]; [_renderEncoder drawPrimitives:MTLPrimitiveTypeTriangleStrip vertexStart:call->strokeOffset vertexCount:call->strokeCount]; } } - (void)triangles:(MNVGcall*)call { [self setUniforms:call->uniformOffset image:call->image]; [_renderEncoder setRenderPipelineState:_pipelineState]; [_renderEncoder drawPrimitives:MTLPrimitiveTypeTriangle vertexStart:call->triangleOffset vertexCount:call->triangleCount]; } - (void)updateRenderPipelineStatesForBlend:(MNVGblend*)blend pixelFormat:(MTLPixelFormat)pixelFormat { if (_pipelineState != nil && _stencilOnlyPipelineState != nil && _piplelinePixelFormat == pixelFormat && _blendFunc->srcRGB == blend->srcRGB && _blendFunc->dstRGB == blend->dstRGB && _blendFunc->srcAlpha == blend->srcAlpha && _blendFunc->dstAlpha == blend->dstAlpha) { return; } MTLRenderPipelineDescriptor* pipelineStateDescriptor = \ [MTLRenderPipelineDescriptor new]; MTLRenderPipelineColorAttachmentDescriptor* colorAttachmentDescriptor = \ pipelineStateDescriptor.colorAttachments[0]; colorAttachmentDescriptor.pixelFormat = pixelFormat; pipelineStateDescriptor.stencilAttachmentPixelFormat = kStencilFormat; pipelineStateDescriptor.fragmentFunction = _fragmentFunction; pipelineStateDescriptor.vertexFunction = _vertexFunction; pipelineStateDescriptor.vertexDescriptor = _vertexDescriptor; // Sets blending states. colorAttachmentDescriptor.blendingEnabled = YES; colorAttachmentDescriptor.sourceRGBBlendFactor = blend->srcRGB; colorAttachmentDescriptor.sourceAlphaBlendFactor = blend->srcAlpha; colorAttachmentDescriptor.destinationRGBBlendFactor = blend->dstRGB; colorAttachmentDescriptor.destinationAlphaBlendFactor = blend->dstAlpha; _blendFunc->srcRGB = blend->srcRGB; _blendFunc->dstRGB = blend->dstRGB; _blendFunc->srcAlpha = blend->srcAlpha; _blendFunc->dstAlpha = blend->dstAlpha; NSError* error; _pipelineState = [_metalLayer.device newRenderPipelineStateWithDescriptor:pipelineStateDescriptor error:&error]; [self checkError:error withMessage:"init pipeline state"]; pipelineStateDescriptor.fragmentFunction = nil; colorAttachmentDescriptor.writeMask = MTLColorWriteMaskNone; _stencilOnlyPipelineState = [_metalLayer.device newRenderPipelineStateWithDescriptor:pipelineStateDescriptor error:&error]; [self checkError:error withMessage:"init pipeline stencil only state"]; _piplelinePixelFormat = pixelFormat; } // Re-creates stencil texture whenever the specified size is bigger. - (void)updateStencilTextureToSize:(vector_uint2*)size { if (_buffers.stencilTexture != nil && (_buffers.stencilTexture.width < size->x || _buffers.stencilTexture.height < size->y)) { _buffers.stencilTexture = nil; } if (_buffers.stencilTexture == nil) { MTLTextureDescriptor* stencilTextureDescriptor = [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:kStencilFormat width:size->x height:size->y mipmapped:NO]; stencilTextureDescriptor.usage = MTLTextureUsageRenderTarget; #if TARGET_OS_OSX || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST stencilTextureDescriptor.storageMode = MTLStorageModePrivate; #endif // TARGET_OS_OSX || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST _buffers.stencilTexture = [_metalLayer.device newTextureWithDescriptor:stencilTextureDescriptor]; } } @end @implementation MNVGtexture @end nanovg_mtl_shaders.metal000066400000000000000000000135241461511344300340450ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/src// Copyright (c) 2017 Ollix // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // // --- // Author: olliwang@ollix.com (Olli Wang) #include #include using namespace metal; typedef struct { float2 pos [[attribute(0)]]; float2 tcoord [[attribute(1)]]; } Vertex; typedef struct { float4 pos [[position]]; float2 fpos; float2 ftcoord; } RasterizerData; typedef struct { float3x3 scissorMat; float3x3 paintMat; float4 innerCol; float4 outerCol; float2 scissorExt; float2 scissorScale; float2 extent; float radius; float feather; float strokeMult; float strokeThr; int texType; int type; } Uniforms; float scissorMask(constant Uniforms& uniforms, float2 p); float sdroundrect(constant Uniforms& uniforms, float2 pt); float strokeMask(constant Uniforms& uniforms, float2 ftcoord); float scissorMask(constant Uniforms& uniforms, float2 p) { float2 sc = (abs((uniforms.scissorMat * float3(p, 1.0f)).xy) - uniforms.scissorExt) \ * uniforms.scissorScale; sc = saturate(float2(0.5f) - sc); return sc.x * sc.y; } float sdroundrect(constant Uniforms& uniforms, float2 pt) { float2 ext2 = uniforms.extent - float2(uniforms.radius); float2 d = abs(pt) - ext2; return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - uniforms.radius; } float strokeMask(constant Uniforms& uniforms, float2 ftcoord) { return min(1.0, (1.0 - abs(ftcoord.x * 2.0 - 1.0)) * uniforms.strokeMult) \ * min(1.0, ftcoord.y); } // Vertex Function vertex RasterizerData vertexShader(Vertex vert [[stage_in]], constant float2& viewSize [[buffer(1)]]) { RasterizerData out; out.ftcoord = vert.tcoord; out.fpos = vert.pos; out.pos = float4(2.0 * vert.pos.x / viewSize.x - 1.0, 1.0 - 2.0 * vert.pos.y / viewSize.y, 0, 1); return out; } // Fragment function (No AA) fragment float4 fragmentShader(RasterizerData in [[stage_in]], constant Uniforms& uniforms [[buffer(0)]], texture2d texture [[texture(0)]], sampler sampler [[sampler(0)]]) { float scissor = scissorMask(uniforms, in.fpos); if (scissor == 0) return float4(0); if (uniforms.type == 0) { // MNVG_SHADER_FILLGRAD float2 pt = (uniforms.paintMat * float3(in.fpos, 1.0)).xy; float d = saturate((uniforms.feather * 0.5 + sdroundrect(uniforms, pt)) / uniforms.feather); float4 color = mix(uniforms.innerCol, uniforms.outerCol, d); return color * scissor; } else if (uniforms.type == 1) { // MNVG_SHADER_FILLIMG float2 pt = (uniforms.paintMat * float3(in.fpos, 1.0)).xy / uniforms.extent; float4 color = texture.sample(sampler, pt); if (uniforms.texType == 1) color = float4(color.xyz * color.w, color.w); else if (uniforms.texType == 2) color = float4(color.x); color *= scissor; return color * uniforms.innerCol; } else { // MNVG_SHADER_IMG float4 color = texture.sample(sampler, in.ftcoord); if (uniforms.texType == 1) color = float4(color.xyz * color.w, color.w); else if (uniforms.texType == 2) color = float4(color.x); color *= scissor; return color * uniforms.innerCol; } } // Fragment function (AA) fragment float4 fragmentShaderAA(RasterizerData in [[stage_in]], constant Uniforms& uniforms [[buffer(0)]], texture2d texture [[texture(0)]], sampler sampler [[sampler(0)]]) { float scissor = scissorMask(uniforms, in.fpos); if (scissor == 0) return float4(0); if (uniforms.type == 2) { // MNVG_SHADER_IMG float4 color = texture.sample(sampler, in.ftcoord); if (uniforms.texType == 1) color = float4(color.xyz * color.w, color.w); else if (uniforms.texType == 2) color = float4(color.x); color *= scissor; return color * uniforms.innerCol; } float strokeAlpha = strokeMask(uniforms, in.ftcoord); if (strokeAlpha < uniforms.strokeThr) { return float4(0); } if (uniforms.type == 0) { // MNVG_SHADER_FILLGRAD float2 pt = (uniforms.paintMat * float3(in.fpos, 1.0)).xy; float d = saturate((uniforms.feather * 0.5 + sdroundrect(uniforms, pt)) / uniforms.feather); float4 color = mix(uniforms.innerCol, uniforms.outerCol, d); color *= scissor; color *= strokeAlpha; return color; } else { // MNVG_SHADER_FILLIMG float2 pt = (uniforms.paintMat * float3(in.fpos, 1.0)).xy / uniforms.extent; float4 color = texture.sample(sampler, pt); if (uniforms.texType == 1) color = float4(color.xyz * color.w, color.w); else if (uniforms.texType == 2) color = float4(color.x); color *= scissor; color *= strokeAlpha; return color * uniforms.innerCol; } } vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/tools/000077500000000000000000000000001461511344300275675ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/MetalNanoVG/tools/metallib000077500000000000000000000053121461511344300313070ustar00rootroot00000000000000#!/bin/bash # # Copyright (c) 2017 Ollix # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # # --- # Author: olliwang@ollix.com (Olli Wang) # # This script compiles the metal source file "nanovg_mtl_shaders.metal" # into metallib binary data as defined in "nanovg_mtl_metallib_*.h" headers. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd $DIR/../src result=true PREFIX="mnvg_bitcode" mkdir $PREFIX execute_cmd() { SDK=$1 TARGET=$2 SUFFIX="" CMD="xcrun -sdk $SDK metal -c nanovg_mtl_shaders.metal" AIR_FILE_NAME="$PREFIX/$TARGET$SUFFIX.air" HEADER_NAME="$PREFIX/$TARGET$SUFFIX.h" VARIABLE_NAME="$PREFIX/$TARGET$SUFFIX" if [ $SDK = "iphoneos" ]; then CMD="$CMD -mios-version-min=8.0" elif [ $SDK = "macosx" ]; then CMD="$CMD -mmacosx-version-min=10.11" fi CMD="$CMD -o $AIR_FILE_NAME" eval $CMD if [ $? -ne 0 ]; then return 1 fi xcrun -sdk $SDK metallib $AIR_FILE_NAME -o $VARIABLE_NAME \ > /dev/null 2>&1 xxd -i $VARIABLE_NAME > $HEADER_NAME rm $AIR_FILE_NAME $VARIABLE_NAME return 0 } for SDK in "iphoneos" "iphonesimulator" "macosx" "appletvos"; do if [ $SDK = "appletvos" ]; then echo "* Compiling for tvOS..." TARGET="tvos" execute_cmd $SDK $TARGET if [ $? -ne 0 ]; then result=false break fi else if [ $SDK = "iphoneos" ]; then echo "* Compiling for iOS..." TARGET="ios" elif [ $SDK = "iphonesimulator" ]; then echo "* Compiling for Simulator..." TARGET="simulator" elif [ $SDK = "macosx" ]; then echo "* Compiling for macOS..." TARGET="macos" fi execute_cmd $SDK $TARGET if [ $? -ne 0 ]; then result=false break fi fi done if $result; then echo "Done" fi vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/000077500000000000000000000000001461511344300256045ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/LICENSE.txt000066400000000000000000000015551461511344300274350ustar00rootroot00000000000000Copyright (c) 2013 Mikko Mononen memon@inside.org This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/README.md000066400000000000000000000134751461511344300270750ustar00rootroot00000000000000*This project is not actively maintained.* NanoVG ========== NanoVG is small antialiased vector graphics rendering library for OpenGL. It has lean API modeled after HTML5 canvas API. It is aimed to be a practical and fun toolset for building scalable user interfaces and visualizations. ## Screenshot ![screenshot of some text rendered witht the sample program](/example/screenshot-01.png?raw=true) Usage ===== The NanoVG API is modeled loosely on HTML5 canvas API. If you know canvas, you're up to speed with NanoVG in no time. ## Creating drawing context The drawing context is created using platform specific constructor function. If you're using the OpenGL 2.0 back-end the context is created as follows: ```C #define NANOVG_GL2_IMPLEMENTATION // Use GL2 implementation. #include "nanovg_gl.h" ... struct NVGcontext* vg = nvgCreateGL2(NVG_ANTIALIAS | NVG_STENCIL_STROKES); ``` The first parameter defines flags for creating the renderer. - `NVG_ANTIALIAS` means that the renderer adjusts the geometry to include anti-aliasing. If you're using MSAA, you can omit this flags. - `NVG_STENCIL_STROKES` means that the render uses better quality rendering for (overlapping) strokes. The quality is mostly visible on wider strokes. If you want speed, you can omit this flag. Currently there is an OpenGL back-end for NanoVG: [nanovg_gl.h](/src/nanovg_gl.h) for OpenGL 2.0, OpenGL ES 2.0, OpenGL 3.2 core profile and OpenGL ES 3. The implementation can be chosen using a define as in above example. See the header file and examples for further info. *NOTE:* The render target you're rendering to must have stencil buffer. ## Drawing shapes with NanoVG Drawing a simple shape using NanoVG consists of four steps: 1) begin a new shape, 2) define the path to draw, 3) set fill or stroke, 4) and finally fill or stroke the path. ```C nvgBeginPath(vg); nvgRect(vg, 100,100, 120,30); nvgFillColor(vg, nvgRGBA(255,192,0,255)); nvgFill(vg); ``` Calling `nvgBeginPath()` will clear any existing paths and start drawing from blank slate. There are number of number of functions to define the path to draw, such as rectangle, rounded rectangle and ellipse, or you can use the common moveTo, lineTo, bezierTo and arcTo API to compose the paths step by step. ## Understanding Composite Paths Because of the way the rendering backend is build in NanoVG, drawing a composite path, that is path consisting from multiple paths defining holes and fills, is a bit more involved. NanoVG uses even-odd filling rule and by default the paths are wound in counter clockwise order. Keep that in mind when drawing using the low level draw API. In order to wind one of the predefined shapes as a hole, you should call `nvgPathWinding(vg, NVG_HOLE)`, or `nvgPathWinding(vg, NVG_CW)` _after_ defining the path. ``` C nvgBeginPath(vg); nvgRect(vg, 100,100, 120,30); nvgCircle(vg, 120,120, 5); nvgPathWinding(vg, NVG_HOLE); // Mark circle as a hole. nvgFillColor(vg, nvgRGBA(255,192,0,255)); nvgFill(vg); ``` ## Rendering is wrong, what to do? - make sure you have created NanoVG context using one of the `nvgCreatexxx()` calls - make sure you have initialised OpenGL with *stencil buffer* - make sure you have cleared stencil buffer - make sure all rendering calls happen between `nvgBeginFrame()` and `nvgEndFrame()` - to enable more checks for OpenGL errors, add `NVG_DEBUG` flag to `nvgCreatexxx()` - if the problem still persists, please report an issue! ## OpenGL state touched by the backend The OpenGL back-end touches following states: When textures are uploaded or updated, the following pixel store is set to defaults: `GL_UNPACK_ALIGNMENT`, `GL_UNPACK_ROW_LENGTH`, `GL_UNPACK_SKIP_PIXELS`, `GL_UNPACK_SKIP_ROWS`. Texture binding is also affected. Texture updates can happen when the user loads images, or when new font glyphs are added. Glyphs are added as needed between calls to `nvgBeginFrame()` and `nvgEndFrame()`. The data for the whole frame is buffered and flushed in `nvgEndFrame()`. The following code illustrates the OpenGL state touched by the rendering code: ```C glUseProgram(prog); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glFrontFace(GL_CCW); glEnable(GL_BLEND); glDisable(GL_DEPTH_TEST); glDisable(GL_SCISSOR_TEST); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glStencilMask(0xffffffff); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); glStencilFunc(GL_ALWAYS, 0, 0xffffffff); glActiveTexture(GL_TEXTURE0); glBindBuffer(GL_UNIFORM_BUFFER, buf); glBindVertexArray(arr); glBindBuffer(GL_ARRAY_BUFFER, buf); glBindTexture(GL_TEXTURE_2D, tex); glUniformBlockBinding(... , GLNVG_FRAG_BINDING); ``` ## API Reference See the header file [nanovg.h](/src/nanovg.h) for API reference. ## Ports - [DX11 port](https://github.com/cmaughan/nanovg) by [Chris Maughan](https://github.com/cmaughan) - [Metal port](https://github.com/ollix/MetalNanoVG) by [Olli Wang](https://github.com/olliwang) - [bgfx port](https://github.com/bkaradzic/bgfx/tree/master/examples/20-nanovg) by [Branimir Karadžić](https://github.com/bkaradzic) ## Projects using NanoVG - [Processing API simulation by vinjn](https://github.com/vinjn/island/blob/master/examples/01-processing/sketch2d.h) - [NanoVG for .NET, C# P/Invoke binding](https://github.com/sbarisic/nanovg_dotnet) ## License The library is licensed under [zlib license](LICENSE.txt) Fonts used in examples: - Roboto licensed under [Apache license](http://www.apache.org/licenses/LICENSE-2.0) - Entypo licensed under CC BY-SA 4.0. - Noto Emoji licensed under [SIL Open Font License, Version 1.1](http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL) ## Discussions [NanoVG mailing list](https://groups.google.com/forum/#!forum/nanovg) ## Links Uses [stb_truetype](http://nothings.org) (or, optionally, [freetype](http://freetype.org)) for font rendering. Uses [stb_image](http://nothings.org) for image loading. vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/src/000077500000000000000000000000001461511344300263735ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/src/fontstash.h000066400000000000000000001375211461511344300305660ustar00rootroot00000000000000// // Copyright (c) 2009-2013 Mikko Mononen memon@inside.org // // This software is provided 'as-is', without any express or implied // warranty. In no event will the authors be held liable for any damages // arising from the use of this software. // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it // freely, subject to the following restrictions: // 1. The origin of this software must not be misrepresented; you must not // claim that you wrote the original software. If you use this software // in a product, an acknowledgment in the product documentation would be // appreciated but is not required. // 2. Altered source versions must be plainly marked as such, and must not be // misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. // #ifndef FONS_H #define FONS_H #define FONS_INVALID -1 enum FONSflags { FONS_ZERO_TOPLEFT = 1, FONS_ZERO_BOTTOMLEFT = 2, }; enum FONSalign { // Horizontal align FONS_ALIGN_LEFT = 1<<0, // Default FONS_ALIGN_CENTER = 1<<1, FONS_ALIGN_RIGHT = 1<<2, // Vertical align FONS_ALIGN_TOP = 1<<3, FONS_ALIGN_MIDDLE = 1<<4, FONS_ALIGN_BOTTOM = 1<<5, FONS_ALIGN_BASELINE = 1<<6, // Default }; enum FONSglyphBitmap { FONS_GLYPH_BITMAP_OPTIONAL = 1, FONS_GLYPH_BITMAP_REQUIRED = 2, }; enum FONSerrorCode { // Font atlas is full. FONS_ATLAS_FULL = 1, // Scratch memory used to render glyphs is full, requested size reported in 'val', you may need to bump up FONS_SCRATCH_BUF_SIZE. FONS_SCRATCH_FULL = 2, // Calls to fonsPushState has created too large stack, if you need deep state stack bump up FONS_MAX_STATES. FONS_STATES_OVERFLOW = 3, // Trying to pop too many states fonsPopState(). FONS_STATES_UNDERFLOW = 4, }; struct FONSparams { int width, height; unsigned char flags; void* userPtr; int (*renderCreate)(void* uptr, int width, int height); int (*renderResize)(void* uptr, int width, int height); void (*renderUpdate)(void* uptr, int* rect, const unsigned char* data); void (*renderDraw)(void* uptr, const float* verts, const float* tcoords, const unsigned int* colors, int nverts); void (*renderDelete)(void* uptr); }; typedef struct FONSparams FONSparams; struct FONSquad { float x0,y0,s0,t0; float x1,y1,s1,t1; }; typedef struct FONSquad FONSquad; struct FONStextIter { float x, y, nextx, nexty, scale, spacing; unsigned int codepoint; short isize, iblur; struct FONSfont* font; int prevGlyphIndex; const char* str; const char* next; const char* end; unsigned int utf8state; int bitmapOption; }; typedef struct FONStextIter FONStextIter; typedef struct FONScontext FONScontext; // Constructor and destructor. FONScontext* fonsCreateInternal(FONSparams* params); void fonsDeleteInternal(FONScontext* s); void fonsSetErrorCallback(FONScontext* s, void (*callback)(void* uptr, int error, int val), void* uptr); // Returns current atlas size. void fonsGetAtlasSize(FONScontext* s, int* width, int* height); // Expands the atlas size. int fonsExpandAtlas(FONScontext* s, int width, int height); // Resets the whole stash. int fonsResetAtlas(FONScontext* stash, int width, int height); // Add fonts int fonsAddFont(FONScontext* s, const char* name, const char* path, int fontIndex); int fonsAddFontMem(FONScontext* s, const char* name, unsigned char* data, int ndata, int freeData, int fontIndex); int fonsGetFontByName(FONScontext* s, const char* name); // State handling void fonsPushState(FONScontext* s); void fonsPopState(FONScontext* s); void fonsClearState(FONScontext* s); // State setting void fonsSetSize(FONScontext* s, float size); void fonsSetColor(FONScontext* s, unsigned int color); void fonsSetSpacing(FONScontext* s, float spacing); void fonsSetBlur(FONScontext* s, float blur); void fonsSetAlign(FONScontext* s, int align); void fonsSetFont(FONScontext* s, int font); // Draw text float fonsDrawText(FONScontext* s, float x, float y, const char* string, const char* end); // Measure text float fonsTextBounds(FONScontext* s, float x, float y, const char* string, const char* end, float* bounds); void fonsLineBounds(FONScontext* s, float y, float* miny, float* maxy); void fonsVertMetrics(FONScontext* s, float* ascender, float* descender, float* lineh); // Text iterator int fonsTextIterInit(FONScontext* stash, FONStextIter* iter, float x, float y, const char* str, const char* end, int bitmapOption); int fonsTextIterNext(FONScontext* stash, FONStextIter* iter, struct FONSquad* quad); // Pull texture changes const unsigned char* fonsGetTextureData(FONScontext* stash, int* width, int* height); int fonsValidateTexture(FONScontext* s, int* dirty); // Draws the stash texture for debugging void fonsDrawDebug(FONScontext* s, float x, float y); #endif // FONTSTASH_H #ifdef FONTSTASH_IMPLEMENTATION #define FONS_NOTUSED(v) (void)sizeof(v) #ifdef FONS_USE_FREETYPE #include #include FT_FREETYPE_H #include FT_ADVANCES_H #include struct FONSttFontImpl { FT_Face font; }; typedef struct FONSttFontImpl FONSttFontImpl; #else #define STB_TRUETYPE_IMPLEMENTATION static void* fons__tmpalloc(size_t size, void* up); static void fons__tmpfree(void* ptr, void* up); #define STBTT_malloc(x,u) fons__tmpalloc(x,u) #define STBTT_free(x,u) fons__tmpfree(x,u) #include "stb_truetype.h" struct FONSttFontImpl { stbtt_fontinfo font; }; typedef struct FONSttFontImpl FONSttFontImpl; #endif #ifndef FONS_SCRATCH_BUF_SIZE # define FONS_SCRATCH_BUF_SIZE 96000 #endif #ifndef FONS_HASH_LUT_SIZE # define FONS_HASH_LUT_SIZE 256 #endif #ifndef FONS_INIT_FONTS # define FONS_INIT_FONTS 4 #endif #ifndef FONS_INIT_GLYPHS # define FONS_INIT_GLYPHS 256 #endif #ifndef FONS_INIT_ATLAS_NODES # define FONS_INIT_ATLAS_NODES 256 #endif #ifndef FONS_VERTEX_COUNT # define FONS_VERTEX_COUNT 1024 #endif #ifndef FONS_MAX_STATES # define FONS_MAX_STATES 20 #endif #ifndef FONS_MAX_FALLBACKS # define FONS_MAX_FALLBACKS 20 #endif static unsigned int fons__hashint(unsigned int a) { a += ~(a<<15); a ^= (a>>10); a += (a<<3); a ^= (a>>6); a += ~(a<<11); a ^= (a>>16); return a; } static int fons__mini(int a, int b) { return a < b ? a : b; } static int fons__maxi(int a, int b) { return a > b ? a : b; } struct FONSglyph { unsigned int codepoint; int index; int next; short size, blur; short x0,y0,x1,y1; short xadv,xoff,yoff; }; typedef struct FONSglyph FONSglyph; struct FONSfont { FONSttFontImpl font; char name[64]; unsigned char* data; int dataSize; unsigned char freeData; float ascender; float descender; float lineh; FONSglyph* glyphs; int cglyphs; int nglyphs; int lut[FONS_HASH_LUT_SIZE]; int fallbacks[FONS_MAX_FALLBACKS]; int nfallbacks; }; typedef struct FONSfont FONSfont; struct FONSstate { int font; int align; float size; unsigned int color; float blur; float spacing; }; typedef struct FONSstate FONSstate; struct FONSatlasNode { short x, y, width; }; typedef struct FONSatlasNode FONSatlasNode; struct FONSatlas { int width, height; FONSatlasNode* nodes; int nnodes; int cnodes; }; typedef struct FONSatlas FONSatlas; struct FONScontext { FONSparams params; float itw,ith; unsigned char* texData; int dirtyRect[4]; FONSfont** fonts; FONSatlas* atlas; int cfonts; int nfonts; float verts[FONS_VERTEX_COUNT*2]; float tcoords[FONS_VERTEX_COUNT*2]; unsigned int colors[FONS_VERTEX_COUNT]; int nverts; unsigned char* scratch; int nscratch; FONSstate states[FONS_MAX_STATES]; int nstates; void (*handleError)(void* uptr, int error, int val); void* errorUptr; #ifdef FONS_USE_FREETYPE FT_Library ftLibrary; #endif }; #ifdef FONS_USE_FREETYPE int fons__tt_init(FONScontext *context) { FT_Error ftError; FONS_NOTUSED(context); ftError = FT_Init_FreeType(&context->ftLibrary); return ftError == 0; } int fons__tt_done(FONScontext *context) { FT_Error ftError; FONS_NOTUSED(context); ftError = FT_Done_FreeType(context->ftLibrary); return ftError == 0; } int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize, int fontIndex) { FT_Error ftError; FONS_NOTUSED(context); ftError = FT_New_Memory_Face(context->ftLibrary, (const FT_Byte*)data, dataSize, fontIndex, &font->font); return ftError == 0; } void fons__tt_getFontVMetrics(FONSttFontImpl *font, int *ascent, int *descent, int *lineGap) { *ascent = font->font->ascender; *descent = font->font->descender; *lineGap = font->font->height - (*ascent - *descent); } float fons__tt_getPixelHeightScale(FONSttFontImpl *font, float size) { return size / font->font->units_per_EM; } int fons__tt_getGlyphIndex(FONSttFontImpl *font, int codepoint) { return FT_Get_Char_Index(font->font, codepoint); } int fons__tt_buildGlyphBitmap(FONSttFontImpl *font, int glyph, float size, float scale, int *advance, int *lsb, int *x0, int *y0, int *x1, int *y1) { FT_Error ftError; FT_GlyphSlot ftGlyph; FT_Fixed advFixed; FONS_NOTUSED(scale); ftError = FT_Set_Pixel_Sizes(font->font, 0, size); if (ftError) return 0; ftError = FT_Load_Glyph(font->font, glyph, FT_LOAD_RENDER | FT_LOAD_FORCE_AUTOHINT | FT_LOAD_TARGET_LIGHT); if (ftError) return 0; ftError = FT_Get_Advance(font->font, glyph, FT_LOAD_NO_SCALE, &advFixed); if (ftError) return 0; ftGlyph = font->font->glyph; *advance = (int)advFixed; *lsb = (int)ftGlyph->metrics.horiBearingX; *x0 = ftGlyph->bitmap_left; *x1 = *x0 + ftGlyph->bitmap.width; *y0 = -ftGlyph->bitmap_top; *y1 = *y0 + ftGlyph->bitmap.rows; return 1; } void fons__tt_renderGlyphBitmap(FONSttFontImpl *font, unsigned char *output, int outWidth, int outHeight, int outStride, float scaleX, float scaleY, int glyph) { FT_GlyphSlot ftGlyph = font->font->glyph; int ftGlyphOffset = 0; unsigned int x, y; FONS_NOTUSED(outWidth); FONS_NOTUSED(outHeight); FONS_NOTUSED(scaleX); FONS_NOTUSED(scaleY); FONS_NOTUSED(glyph); // glyph has already been loaded by fons__tt_buildGlyphBitmap for ( y = 0; y < ftGlyph->bitmap.rows; y++ ) { for ( x = 0; x < ftGlyph->bitmap.width; x++ ) { output[(y * outStride) + x] = ftGlyph->bitmap.buffer[ftGlyphOffset++]; } } } int fons__tt_getGlyphKernAdvance(FONSttFontImpl *font, int glyph1, int glyph2) { FT_Vector ftKerning; FT_Get_Kerning(font->font, glyph1, glyph2, FT_KERNING_DEFAULT, &ftKerning); return (int)((ftKerning.x + 32) >> 6); // Round up and convert to integer } #else int fons__tt_init(FONScontext *context) { FONS_NOTUSED(context); return 1; } int fons__tt_done(FONScontext *context) { FONS_NOTUSED(context); return 1; } int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize, int fontIndex) { int offset, stbError; FONS_NOTUSED(dataSize); font->font.userdata = context; offset = stbtt_GetFontOffsetForIndex(data, fontIndex); if (offset == -1) { stbError = 0; } else { stbError = stbtt_InitFont(&font->font, data, offset); } return stbError; } void fons__tt_getFontVMetrics(FONSttFontImpl *font, int *ascent, int *descent, int *lineGap) { stbtt_GetFontVMetrics(&font->font, ascent, descent, lineGap); } float fons__tt_getPixelHeightScale(FONSttFontImpl *font, float size) { return stbtt_ScaleForMappingEmToPixels(&font->font, size); } int fons__tt_getGlyphIndex(FONSttFontImpl *font, int codepoint) { return stbtt_FindGlyphIndex(&font->font, codepoint); } int fons__tt_buildGlyphBitmap(FONSttFontImpl *font, int glyph, float size, float scale, int *advance, int *lsb, int *x0, int *y0, int *x1, int *y1) { FONS_NOTUSED(size); stbtt_GetGlyphHMetrics(&font->font, glyph, advance, lsb); stbtt_GetGlyphBitmapBox(&font->font, glyph, scale, scale, x0, y0, x1, y1); return 1; } void fons__tt_renderGlyphBitmap(FONSttFontImpl *font, unsigned char *output, int outWidth, int outHeight, int outStride, float scaleX, float scaleY, int glyph) { stbtt_MakeGlyphBitmap(&font->font, output, outWidth, outHeight, outStride, scaleX, scaleY, glyph); } int fons__tt_getGlyphKernAdvance(FONSttFontImpl *font, int glyph1, int glyph2) { return stbtt_GetGlyphKernAdvance(&font->font, glyph1, glyph2); } #endif #ifdef STB_TRUETYPE_IMPLEMENTATION static void* fons__tmpalloc(size_t size, void* up) { unsigned char* ptr; FONScontext* stash = (FONScontext*)up; // 16-byte align the returned pointer size = (size + 0xf) & ~0xf; if (stash->nscratch+(int)size > FONS_SCRATCH_BUF_SIZE) { if (stash->handleError) stash->handleError(stash->errorUptr, FONS_SCRATCH_FULL, stash->nscratch+(int)size); return NULL; } ptr = stash->scratch + stash->nscratch; stash->nscratch += (int)size; return ptr; } static void fons__tmpfree(void* ptr, void* up) { (void)ptr; (void)up; // empty } #endif // STB_TRUETYPE_IMPLEMENTATION // Copyright (c) 2008-2010 Bjoern Hoehrmann // See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. #define FONS_UTF8_ACCEPT 0 #define FONS_UTF8_REJECT 12 static unsigned int fons__decutf8(unsigned int* state, unsigned int* codep, unsigned int byte) { static const unsigned char utf8d[] = { // The first part of the table maps bytes to character classes that // to reduce the size of the transition table and create bitmasks. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8, // The second part is a transition table that maps a combination // of a state of the automaton and a character class to a state. 0,12,24,36,60,96,84,12,12,12,48,72, 12,12,12,12,12,12,12,12,12,12,12,12, 12, 0,12,12,12,12,12, 0,12, 0,12,12, 12,24,12,12,12,12,12,24,12,24,12,12, 12,12,12,12,12,12,12,24,12,12,12,12, 12,24,12,12,12,12,12,12,12,24,12,12, 12,12,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,12,12,12,12,12, }; unsigned int type = utf8d[byte]; *codep = (*state != FONS_UTF8_ACCEPT) ? (byte & 0x3fu) | (*codep << 6) : (0xff >> type) & (byte); *state = utf8d[256 + *state + type]; return *state; } // Atlas based on Skyline Bin Packer by Jukka Jylänki static void fons__deleteAtlas(FONSatlas* atlas) { if (atlas == NULL) return; if (atlas->nodes != NULL) free(atlas->nodes); free(atlas); } static FONSatlas* fons__allocAtlas(int w, int h, int nnodes) { FONSatlas* atlas = NULL; // Allocate memory for the font stash. atlas = (FONSatlas*)malloc(sizeof(FONSatlas)); if (atlas == NULL) goto error; memset(atlas, 0, sizeof(FONSatlas)); atlas->width = w; atlas->height = h; // Allocate space for skyline nodes atlas->nodes = (FONSatlasNode*)malloc(sizeof(FONSatlasNode) * nnodes); if (atlas->nodes == NULL) goto error; memset(atlas->nodes, 0, sizeof(FONSatlasNode) * nnodes); atlas->nnodes = 0; atlas->cnodes = nnodes; // Init root node. atlas->nodes[0].x = 0; atlas->nodes[0].y = 0; atlas->nodes[0].width = (short)w; atlas->nnodes++; return atlas; error: if (atlas) fons__deleteAtlas(atlas); return NULL; } static int fons__atlasInsertNode(FONSatlas* atlas, int idx, int x, int y, int w) { int i; // Insert node if (atlas->nnodes+1 > atlas->cnodes) { atlas->cnodes = atlas->cnodes == 0 ? 8 : atlas->cnodes * 2; atlas->nodes = (FONSatlasNode*)realloc(atlas->nodes, sizeof(FONSatlasNode) * atlas->cnodes); if (atlas->nodes == NULL) return 0; } for (i = atlas->nnodes; i > idx; i--) atlas->nodes[i] = atlas->nodes[i-1]; atlas->nodes[idx].x = (short)x; atlas->nodes[idx].y = (short)y; atlas->nodes[idx].width = (short)w; atlas->nnodes++; return 1; } static void fons__atlasRemoveNode(FONSatlas* atlas, int idx) { int i; if (atlas->nnodes == 0) return; for (i = idx; i < atlas->nnodes-1; i++) atlas->nodes[i] = atlas->nodes[i+1]; atlas->nnodes--; } static void fons__atlasExpand(FONSatlas* atlas, int w, int h) { // Insert node for empty space if (w > atlas->width) fons__atlasInsertNode(atlas, atlas->nnodes, atlas->width, 0, w - atlas->width); atlas->width = w; atlas->height = h; } static void fons__atlasReset(FONSatlas* atlas, int w, int h) { atlas->width = w; atlas->height = h; atlas->nnodes = 0; // Init root node. atlas->nodes[0].x = 0; atlas->nodes[0].y = 0; atlas->nodes[0].width = (short)w; atlas->nnodes++; } static int fons__atlasAddSkylineLevel(FONSatlas* atlas, int idx, int x, int y, int w, int h) { int i; // Insert new node if (fons__atlasInsertNode(atlas, idx, x, y+h, w) == 0) return 0; // Delete skyline segments that fall under the shadow of the new segment. for (i = idx+1; i < atlas->nnodes; i++) { if (atlas->nodes[i].x < atlas->nodes[i-1].x + atlas->nodes[i-1].width) { int shrink = atlas->nodes[i-1].x + atlas->nodes[i-1].width - atlas->nodes[i].x; atlas->nodes[i].x += (short)shrink; atlas->nodes[i].width -= (short)shrink; if (atlas->nodes[i].width <= 0) { fons__atlasRemoveNode(atlas, i); i--; } else { break; } } else { break; } } // Merge same height skyline segments that are next to each other. for (i = 0; i < atlas->nnodes-1; i++) { if (atlas->nodes[i].y == atlas->nodes[i+1].y) { atlas->nodes[i].width += atlas->nodes[i+1].width; fons__atlasRemoveNode(atlas, i+1); i--; } } return 1; } static int fons__atlasRectFits(FONSatlas* atlas, int i, int w, int h) { // Checks if there is enough space at the location of skyline span 'i', // and return the max height of all skyline spans under that at that location, // (think tetris block being dropped at that position). Or -1 if no space found. int x = atlas->nodes[i].x; int y = atlas->nodes[i].y; int spaceLeft; if (x + w > atlas->width) return -1; spaceLeft = w; while (spaceLeft > 0) { if (i == atlas->nnodes) return -1; y = fons__maxi(y, atlas->nodes[i].y); if (y + h > atlas->height) return -1; spaceLeft -= atlas->nodes[i].width; ++i; } return y; } static int fons__atlasAddRect(FONSatlas* atlas, int rw, int rh, int* rx, int* ry) { int besth = atlas->height, bestw = atlas->width, besti = -1; int bestx = -1, besty = -1, i; // Bottom left fit heuristic. for (i = 0; i < atlas->nnodes; i++) { int y = fons__atlasRectFits(atlas, i, rw, rh); if (y != -1) { if (y + rh < besth || (y + rh == besth && atlas->nodes[i].width < bestw)) { besti = i; bestw = atlas->nodes[i].width; besth = y + rh; bestx = atlas->nodes[i].x; besty = y; } } } if (besti == -1) return 0; // Perform the actual packing. if (fons__atlasAddSkylineLevel(atlas, besti, bestx, besty, rw, rh) == 0) return 0; *rx = bestx; *ry = besty; return 1; } static void fons__addWhiteRect(FONScontext* stash, int w, int h) { int x, y, gx, gy; unsigned char* dst; if (fons__atlasAddRect(stash->atlas, w, h, &gx, &gy) == 0) return; // Rasterize dst = &stash->texData[gx + gy * stash->params.width]; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) dst[x] = 0xff; dst += stash->params.width; } stash->dirtyRect[0] = fons__mini(stash->dirtyRect[0], gx); stash->dirtyRect[1] = fons__mini(stash->dirtyRect[1], gy); stash->dirtyRect[2] = fons__maxi(stash->dirtyRect[2], gx+w); stash->dirtyRect[3] = fons__maxi(stash->dirtyRect[3], gy+h); } FONScontext* fonsCreateInternal(FONSparams* params) { FONScontext* stash = NULL; // Allocate memory for the font stash. stash = (FONScontext*)malloc(sizeof(FONScontext)); if (stash == NULL) goto error; memset(stash, 0, sizeof(FONScontext)); stash->params = *params; // Allocate scratch buffer. stash->scratch = (unsigned char*)malloc(FONS_SCRATCH_BUF_SIZE); if (stash->scratch == NULL) goto error; // Initialize implementation library if (!fons__tt_init(stash)) goto error; if (stash->params.renderCreate != NULL) { if (stash->params.renderCreate(stash->params.userPtr, stash->params.width, stash->params.height) == 0) goto error; } stash->atlas = fons__allocAtlas(stash->params.width, stash->params.height, FONS_INIT_ATLAS_NODES); if (stash->atlas == NULL) goto error; // Allocate space for fonts. stash->fonts = (FONSfont**)malloc(sizeof(FONSfont*) * FONS_INIT_FONTS); if (stash->fonts == NULL) goto error; memset(stash->fonts, 0, sizeof(FONSfont*) * FONS_INIT_FONTS); stash->cfonts = FONS_INIT_FONTS; stash->nfonts = 0; // Create texture for the cache. stash->itw = 1.0f/stash->params.width; stash->ith = 1.0f/stash->params.height; stash->texData = (unsigned char*)malloc(stash->params.width * stash->params.height); if (stash->texData == NULL) goto error; memset(stash->texData, 0, stash->params.width * stash->params.height); stash->dirtyRect[0] = stash->params.width; stash->dirtyRect[1] = stash->params.height; stash->dirtyRect[2] = 0; stash->dirtyRect[3] = 0; // Add white rect at 0,0 for debug drawing. fons__addWhiteRect(stash, 2,2); fonsPushState(stash); fonsClearState(stash); return stash; error: fonsDeleteInternal(stash); return NULL; } static FONSstate* fons__getState(FONScontext* stash) { return &stash->states[stash->nstates-1]; } int fonsAddFallbackFont(FONScontext* stash, int base, int fallback) { FONSfont* baseFont = stash->fonts[base]; if (baseFont->nfallbacks < FONS_MAX_FALLBACKS) { baseFont->fallbacks[baseFont->nfallbacks++] = fallback; return 1; } return 0; } void fonsResetFallbackFont(FONScontext* stash, int base) { int i; FONSfont* baseFont = stash->fonts[base]; baseFont->nfallbacks = 0; baseFont->nglyphs = 0; for (i = 0; i < FONS_HASH_LUT_SIZE; i++) baseFont->lut[i] = -1; } void fonsSetSize(FONScontext* stash, float size) { fons__getState(stash)->size = size; } void fonsSetColor(FONScontext* stash, unsigned int color) { fons__getState(stash)->color = color; } void fonsSetSpacing(FONScontext* stash, float spacing) { fons__getState(stash)->spacing = spacing; } void fonsSetBlur(FONScontext* stash, float blur) { fons__getState(stash)->blur = blur; } void fonsSetAlign(FONScontext* stash, int align) { fons__getState(stash)->align = align; } void fonsSetFont(FONScontext* stash, int font) { fons__getState(stash)->font = font; } void fonsPushState(FONScontext* stash) { if (stash->nstates >= FONS_MAX_STATES) { if (stash->handleError) stash->handleError(stash->errorUptr, FONS_STATES_OVERFLOW, 0); return; } if (stash->nstates > 0) memcpy(&stash->states[stash->nstates], &stash->states[stash->nstates-1], sizeof(FONSstate)); stash->nstates++; } void fonsPopState(FONScontext* stash) { if (stash->nstates <= 1) { if (stash->handleError) stash->handleError(stash->errorUptr, FONS_STATES_UNDERFLOW, 0); return; } stash->nstates--; } void fonsClearState(FONScontext* stash) { FONSstate* state = fons__getState(stash); state->size = 12.0f; state->color = 0xffffffff; state->font = 0; state->blur = 0; state->spacing = 0; state->align = FONS_ALIGN_LEFT | FONS_ALIGN_BASELINE; } static void fons__freeFont(FONSfont* font) { if (font == NULL) return; if (font->glyphs) free(font->glyphs); if (font->freeData && font->data) free(font->data); free(font); } static int fons__allocFont(FONScontext* stash) { FONSfont* font = NULL; if (stash->nfonts+1 > stash->cfonts) { stash->cfonts = stash->cfonts == 0 ? 8 : stash->cfonts * 2; stash->fonts = (FONSfont**)realloc(stash->fonts, sizeof(FONSfont*) * stash->cfonts); if (stash->fonts == NULL) return -1; } font = (FONSfont*)malloc(sizeof(FONSfont)); if (font == NULL) goto error; memset(font, 0, sizeof(FONSfont)); font->glyphs = (FONSglyph*)malloc(sizeof(FONSglyph) * FONS_INIT_GLYPHS); if (font->glyphs == NULL) goto error; font->cglyphs = FONS_INIT_GLYPHS; font->nglyphs = 0; stash->fonts[stash->nfonts++] = font; return stash->nfonts-1; error: fons__freeFont(font); return FONS_INVALID; } int fonsAddFont(FONScontext* stash, const char* name, const char* path, int fontIndex) { FILE* fp = 0; int dataSize = 0; size_t readed; unsigned char* data = NULL; // Read in the font data. fp = fopen(path, "rb"); if (fp == NULL) goto error; fseek(fp,0,SEEK_END); dataSize = (int)ftell(fp); fseek(fp,0,SEEK_SET); data = (unsigned char*)malloc(dataSize); if (data == NULL) goto error; readed = fread(data, 1, dataSize, fp); fclose(fp); fp = 0; if (readed != (size_t)dataSize) goto error; return fonsAddFontMem(stash, name, data, dataSize, 1, fontIndex); error: if (data) free(data); if (fp) fclose(fp); return FONS_INVALID; } int fonsAddFontMem(FONScontext* stash, const char* name, unsigned char* data, int dataSize, int freeData, int fontIndex) { int i, ascent, descent, fh, lineGap; FONSfont* font; int idx = fons__allocFont(stash); if (idx == FONS_INVALID) return FONS_INVALID; font = stash->fonts[idx]; strncpy(font->name, name, sizeof(font->name)); font->name[sizeof(font->name)-1] = '\0'; // Init hash lookup. for (i = 0; i < FONS_HASH_LUT_SIZE; ++i) font->lut[i] = -1; // Read in the font data. font->dataSize = dataSize; font->data = data; font->freeData = (unsigned char)freeData; // Init font stash->nscratch = 0; if (!fons__tt_loadFont(stash, &font->font, data, dataSize, fontIndex)) goto error; // Store normalized line height. The real line height is got // by multiplying the lineh by font size. fons__tt_getFontVMetrics( &font->font, &ascent, &descent, &lineGap); ascent += lineGap; fh = ascent - descent; font->ascender = (float)ascent / (float)fh; font->descender = (float)descent / (float)fh; font->lineh = font->ascender - font->descender; return idx; error: fons__freeFont(font); stash->nfonts--; return FONS_INVALID; } int fonsGetFontByName(FONScontext* s, const char* name) { int i; for (i = 0; i < s->nfonts; i++) { if (strcmp(s->fonts[i]->name, name) == 0) return i; } return FONS_INVALID; } static FONSglyph* fons__allocGlyph(FONSfont* font) { if (font->nglyphs+1 > font->cglyphs) { font->cglyphs = font->cglyphs == 0 ? 8 : font->cglyphs * 2; font->glyphs = (FONSglyph*)realloc(font->glyphs, sizeof(FONSglyph) * font->cglyphs); if (font->glyphs == NULL) return NULL; } font->nglyphs++; return &font->glyphs[font->nglyphs-1]; } // Based on Exponential blur, Jani Huhtanen, 2006 #define APREC 16 #define ZPREC 7 static void fons__blurCols(unsigned char* dst, int w, int h, int dstStride, int alpha) { int x, y; for (y = 0; y < h; y++) { int z = 0; // force zero border for (x = 1; x < w; x++) { z += (alpha * (((int)(dst[x]) << ZPREC) - z)) >> APREC; dst[x] = (unsigned char)(z >> ZPREC); } dst[w-1] = 0; // force zero border z = 0; for (x = w-2; x >= 0; x--) { z += (alpha * (((int)(dst[x]) << ZPREC) - z)) >> APREC; dst[x] = (unsigned char)(z >> ZPREC); } dst[0] = 0; // force zero border dst += dstStride; } } static void fons__blurRows(unsigned char* dst, int w, int h, int dstStride, int alpha) { int x, y; for (x = 0; x < w; x++) { int z = 0; // force zero border for (y = dstStride; y < h*dstStride; y += dstStride) { z += (alpha * (((int)(dst[y]) << ZPREC) - z)) >> APREC; dst[y] = (unsigned char)(z >> ZPREC); } dst[(h-1)*dstStride] = 0; // force zero border z = 0; for (y = (h-2)*dstStride; y >= 0; y -= dstStride) { z += (alpha * (((int)(dst[y]) << ZPREC) - z)) >> APREC; dst[y] = (unsigned char)(z >> ZPREC); } dst[0] = 0; // force zero border dst++; } } static void fons__blur(FONScontext* stash, unsigned char* dst, int w, int h, int dstStride, int blur) { int alpha; float sigma; (void)stash; if (blur < 1) return; // Calculate the alpha such that 90% of the kernel is within the radius. (Kernel extends to infinity) sigma = (float)blur * 0.57735f; // 1 / sqrt(3) alpha = (int)((1< 20) iblur = 20; pad = iblur+2; // Reset allocator. stash->nscratch = 0; // Find code point and size. h = fons__hashint(codepoint) & (FONS_HASH_LUT_SIZE-1); i = font->lut[h]; while (i != -1) { if (font->glyphs[i].codepoint == codepoint && font->glyphs[i].size == isize && font->glyphs[i].blur == iblur) { glyph = &font->glyphs[i]; if (bitmapOption == FONS_GLYPH_BITMAP_OPTIONAL || (glyph->x0 >= 0 && glyph->y0 >= 0)) { return glyph; } // At this point, glyph exists but the bitmap data is not yet created. break; } i = font->glyphs[i].next; } // Create a new glyph or rasterize bitmap data for a cached glyph. g = fons__tt_getGlyphIndex(&font->font, codepoint); // Try to find the glyph in fallback fonts. if (g == 0) { for (i = 0; i < font->nfallbacks; ++i) { FONSfont* fallbackFont = stash->fonts[font->fallbacks[i]]; int fallbackIndex = fons__tt_getGlyphIndex(&fallbackFont->font, codepoint); if (fallbackIndex != 0) { g = fallbackIndex; renderFont = fallbackFont; break; } } // It is possible that we did not find a fallback glyph. // In that case the glyph index 'g' is 0, and we'll proceed below and cache empty glyph. } scale = fons__tt_getPixelHeightScale(&renderFont->font, size); fons__tt_buildGlyphBitmap(&renderFont->font, g, size, scale, &advance, &lsb, &x0, &y0, &x1, &y1); gw = x1-x0 + pad*2; gh = y1-y0 + pad*2; // Determines the spot to draw glyph in the atlas. if (bitmapOption == FONS_GLYPH_BITMAP_REQUIRED) { // Find free spot for the rect in the atlas added = fons__atlasAddRect(stash->atlas, gw, gh, &gx, &gy); if (added == 0 && stash->handleError != NULL) { // Atlas is full, let the user to resize the atlas (or not), and try again. stash->handleError(stash->errorUptr, FONS_ATLAS_FULL, 0); added = fons__atlasAddRect(stash->atlas, gw, gh, &gx, &gy); } if (added == 0) return NULL; } else { // Negative coordinate indicates there is no bitmap data created. gx = -1; gy = -1; } // Init glyph. if (glyph == NULL) { glyph = fons__allocGlyph(font); glyph->codepoint = codepoint; glyph->size = isize; glyph->blur = iblur; glyph->next = 0; // Insert char to hash lookup. glyph->next = font->lut[h]; font->lut[h] = font->nglyphs-1; } glyph->index = g; glyph->x0 = (short)gx; glyph->y0 = (short)gy; glyph->x1 = (short)(glyph->x0+gw); glyph->y1 = (short)(glyph->y0+gh); glyph->xadv = (short)(scale * advance * 10.0f); glyph->xoff = (short)(x0 - pad); glyph->yoff = (short)(y0 - pad); if (bitmapOption == FONS_GLYPH_BITMAP_OPTIONAL) { return glyph; } // Rasterize dst = &stash->texData[(glyph->x0+pad) + (glyph->y0+pad) * stash->params.width]; fons__tt_renderGlyphBitmap(&renderFont->font, dst, gw-pad*2,gh-pad*2, stash->params.width, scale, scale, g); // Make sure there is one pixel empty border. dst = &stash->texData[glyph->x0 + glyph->y0 * stash->params.width]; for (y = 0; y < gh; y++) { dst[y*stash->params.width] = 0; dst[gw-1 + y*stash->params.width] = 0; } for (x = 0; x < gw; x++) { dst[x] = 0; dst[x + (gh-1)*stash->params.width] = 0; } // Debug code to color the glyph background /* unsigned char* fdst = &stash->texData[glyph->x0 + glyph->y0 * stash->params.width]; for (y = 0; y < gh; y++) { for (x = 0; x < gw; x++) { int a = (int)fdst[x+y*stash->params.width] + 20; if (a > 255) a = 255; fdst[x+y*stash->params.width] = a; } }*/ // Blur if (iblur > 0) { stash->nscratch = 0; bdst = &stash->texData[glyph->x0 + glyph->y0 * stash->params.width]; fons__blur(stash, bdst, gw, gh, stash->params.width, iblur); } stash->dirtyRect[0] = fons__mini(stash->dirtyRect[0], glyph->x0); stash->dirtyRect[1] = fons__mini(stash->dirtyRect[1], glyph->y0); stash->dirtyRect[2] = fons__maxi(stash->dirtyRect[2], glyph->x1); stash->dirtyRect[3] = fons__maxi(stash->dirtyRect[3], glyph->y1); return glyph; } static void fons__getQuad(FONScontext* stash, FONSfont* font, int prevGlyphIndex, FONSglyph* glyph, float scale, float spacing, float* x, float* y, FONSquad* q) { float rx,ry,xoff,yoff,x0,y0,x1,y1; if (prevGlyphIndex != -1) { float adv = fons__tt_getGlyphKernAdvance(&font->font, prevGlyphIndex, glyph->index) * scale; *x += (int)(adv + spacing + 0.5f); } // Each glyph has 2px border to allow good interpolation, // one pixel to prevent leaking, and one to allow good interpolation for rendering. // Inset the texture region by one pixel for correct interpolation. xoff = (short)(glyph->xoff+1); yoff = (short)(glyph->yoff+1); x0 = (float)(glyph->x0+1); y0 = (float)(glyph->y0+1); x1 = (float)(glyph->x1-1); y1 = (float)(glyph->y1-1); if (stash->params.flags & FONS_ZERO_TOPLEFT) { rx = floorf(*x + xoff); ry = floorf(*y + yoff); q->x0 = rx; q->y0 = ry; q->x1 = rx + x1 - x0; q->y1 = ry + y1 - y0; q->s0 = x0 * stash->itw; q->t0 = y0 * stash->ith; q->s1 = x1 * stash->itw; q->t1 = y1 * stash->ith; } else { rx = floorf(*x + xoff); ry = floorf(*y - yoff); q->x0 = rx; q->y0 = ry; q->x1 = rx + x1 - x0; q->y1 = ry - y1 + y0; q->s0 = x0 * stash->itw; q->t0 = y0 * stash->ith; q->s1 = x1 * stash->itw; q->t1 = y1 * stash->ith; } *x += (int)(glyph->xadv / 10.0f + 0.5f); } static void fons__flush(FONScontext* stash) { // Flush texture if (stash->dirtyRect[0] < stash->dirtyRect[2] && stash->dirtyRect[1] < stash->dirtyRect[3]) { if (stash->params.renderUpdate != NULL) stash->params.renderUpdate(stash->params.userPtr, stash->dirtyRect, stash->texData); // Reset dirty rect stash->dirtyRect[0] = stash->params.width; stash->dirtyRect[1] = stash->params.height; stash->dirtyRect[2] = 0; stash->dirtyRect[3] = 0; } // Flush triangles if (stash->nverts > 0) { if (stash->params.renderDraw != NULL) stash->params.renderDraw(stash->params.userPtr, stash->verts, stash->tcoords, stash->colors, stash->nverts); stash->nverts = 0; } } static __inline void fons__vertex(FONScontext* stash, float x, float y, float s, float t, unsigned int c) { stash->verts[stash->nverts*2+0] = x; stash->verts[stash->nverts*2+1] = y; stash->tcoords[stash->nverts*2+0] = s; stash->tcoords[stash->nverts*2+1] = t; stash->colors[stash->nverts] = c; stash->nverts++; } static float fons__getVertAlign(FONScontext* stash, FONSfont* font, int align, short isize) { if (stash->params.flags & FONS_ZERO_TOPLEFT) { if (align & FONS_ALIGN_TOP) { return font->ascender * (float)isize/10.0f; } else if (align & FONS_ALIGN_MIDDLE) { return (font->ascender + font->descender) / 2.0f * (float)isize/10.0f; } else if (align & FONS_ALIGN_BASELINE) { return 0.0f; } else if (align & FONS_ALIGN_BOTTOM) { return font->descender * (float)isize/10.0f; } } else { if (align & FONS_ALIGN_TOP) { return -font->ascender * (float)isize/10.0f; } else if (align & FONS_ALIGN_MIDDLE) { return -(font->ascender + font->descender) / 2.0f * (float)isize/10.0f; } else if (align & FONS_ALIGN_BASELINE) { return 0.0f; } else if (align & FONS_ALIGN_BOTTOM) { return -font->descender * (float)isize/10.0f; } } return 0.0; } float fonsDrawText(FONScontext* stash, float x, float y, const char* str, const char* end) { FONSstate* state = fons__getState(stash); unsigned int codepoint; unsigned int utf8state = 0; FONSglyph* glyph = NULL; FONSquad q; int prevGlyphIndex = -1; short isize = (short)(state->size*10.0f); short iblur = (short)state->blur; float scale; FONSfont* font; float width; if (stash == NULL) return x; if (state->font < 0 || state->font >= stash->nfonts) return x; font = stash->fonts[state->font]; if (font->data == NULL) return x; scale = fons__tt_getPixelHeightScale(&font->font, (float)isize/10.0f); if (end == NULL) end = str + strlen(str); // Align horizontally if (state->align & FONS_ALIGN_LEFT) { // empty } else if (state->align & FONS_ALIGN_RIGHT) { width = fonsTextBounds(stash, x,y, str, end, NULL); x -= width; } else if (state->align & FONS_ALIGN_CENTER) { width = fonsTextBounds(stash, x,y, str, end, NULL); x -= width * 0.5f; } // Align vertically. y += fons__getVertAlign(stash, font, state->align, isize); for (; str != end; ++str) { if (fons__decutf8(&utf8state, &codepoint, *(const unsigned char*)str)) continue; glyph = fons__getGlyph(stash, font, codepoint, isize, iblur, FONS_GLYPH_BITMAP_REQUIRED); if (glyph != NULL) { fons__getQuad(stash, font, prevGlyphIndex, glyph, scale, state->spacing, &x, &y, &q); if (stash->nverts+6 > FONS_VERTEX_COUNT) fons__flush(stash); fons__vertex(stash, q.x0, q.y0, q.s0, q.t0, state->color); fons__vertex(stash, q.x1, q.y1, q.s1, q.t1, state->color); fons__vertex(stash, q.x1, q.y0, q.s1, q.t0, state->color); fons__vertex(stash, q.x0, q.y0, q.s0, q.t0, state->color); fons__vertex(stash, q.x0, q.y1, q.s0, q.t1, state->color); fons__vertex(stash, q.x1, q.y1, q.s1, q.t1, state->color); } prevGlyphIndex = glyph != NULL ? glyph->index : -1; } fons__flush(stash); return x; } int fonsTextIterInit(FONScontext* stash, FONStextIter* iter, float x, float y, const char* str, const char* end, int bitmapOption) { FONSstate* state = fons__getState(stash); float width; memset(iter, 0, sizeof(*iter)); if (stash == NULL) return 0; if (state->font < 0 || state->font >= stash->nfonts) return 0; iter->font = stash->fonts[state->font]; if (iter->font->data == NULL) return 0; iter->isize = (short)(state->size*10.0f); iter->iblur = (short)state->blur; iter->scale = fons__tt_getPixelHeightScale(&iter->font->font, (float)iter->isize/10.0f); // Align horizontally if (state->align & FONS_ALIGN_LEFT) { // empty } else if (state->align & FONS_ALIGN_RIGHT) { width = fonsTextBounds(stash, x,y, str, end, NULL); x -= width; } else if (state->align & FONS_ALIGN_CENTER) { width = fonsTextBounds(stash, x,y, str, end, NULL); x -= width * 0.5f; } // Align vertically. y += fons__getVertAlign(stash, iter->font, state->align, iter->isize); if (end == NULL) end = str + strlen(str); iter->x = iter->nextx = x; iter->y = iter->nexty = y; iter->spacing = state->spacing; iter->str = str; iter->next = str; iter->end = end; iter->codepoint = 0; iter->prevGlyphIndex = -1; iter->bitmapOption = bitmapOption; return 1; } int fonsTextIterNext(FONScontext* stash, FONStextIter* iter, FONSquad* quad) { FONSglyph* glyph = NULL; const char* str = iter->next; iter->str = iter->next; if (str == iter->end) return 0; for (; str != iter->end; str++) { if (fons__decutf8(&iter->utf8state, &iter->codepoint, *(const unsigned char*)str)) continue; str++; // Get glyph and quad iter->x = iter->nextx; iter->y = iter->nexty; glyph = fons__getGlyph(stash, iter->font, iter->codepoint, iter->isize, iter->iblur, iter->bitmapOption); // If the iterator was initialized with FONS_GLYPH_BITMAP_OPTIONAL, then the UV coordinates of the quad will be invalid. if (glyph != NULL) fons__getQuad(stash, iter->font, iter->prevGlyphIndex, glyph, iter->scale, iter->spacing, &iter->nextx, &iter->nexty, quad); iter->prevGlyphIndex = glyph != NULL ? glyph->index : -1; break; } iter->next = str; return 1; } void fonsDrawDebug(FONScontext* stash, float x, float y) { int i; int w = stash->params.width; int h = stash->params.height; float u = w == 0 ? 0 : (1.0f / w); float v = h == 0 ? 0 : (1.0f / h); if (stash->nverts+6+6 > FONS_VERTEX_COUNT) fons__flush(stash); // Draw background fons__vertex(stash, x+0, y+0, u, v, 0x0fffffff); fons__vertex(stash, x+w, y+h, u, v, 0x0fffffff); fons__vertex(stash, x+w, y+0, u, v, 0x0fffffff); fons__vertex(stash, x+0, y+0, u, v, 0x0fffffff); fons__vertex(stash, x+0, y+h, u, v, 0x0fffffff); fons__vertex(stash, x+w, y+h, u, v, 0x0fffffff); // Draw texture fons__vertex(stash, x+0, y+0, 0, 0, 0xffffffff); fons__vertex(stash, x+w, y+h, 1, 1, 0xffffffff); fons__vertex(stash, x+w, y+0, 1, 0, 0xffffffff); fons__vertex(stash, x+0, y+0, 0, 0, 0xffffffff); fons__vertex(stash, x+0, y+h, 0, 1, 0xffffffff); fons__vertex(stash, x+w, y+h, 1, 1, 0xffffffff); // Drawbug draw atlas for (i = 0; i < stash->atlas->nnodes; i++) { FONSatlasNode* n = &stash->atlas->nodes[i]; if (stash->nverts+6 > FONS_VERTEX_COUNT) fons__flush(stash); fons__vertex(stash, x+n->x+0, y+n->y+0, u, v, 0xc00000ff); fons__vertex(stash, x+n->x+n->width, y+n->y+1, u, v, 0xc00000ff); fons__vertex(stash, x+n->x+n->width, y+n->y+0, u, v, 0xc00000ff); fons__vertex(stash, x+n->x+0, y+n->y+0, u, v, 0xc00000ff); fons__vertex(stash, x+n->x+0, y+n->y+1, u, v, 0xc00000ff); fons__vertex(stash, x+n->x+n->width, y+n->y+1, u, v, 0xc00000ff); } fons__flush(stash); } float fonsTextBounds(FONScontext* stash, float x, float y, const char* str, const char* end, float* bounds) { FONSstate* state = fons__getState(stash); unsigned int codepoint; unsigned int utf8state = 0; FONSquad q; FONSglyph* glyph = NULL; int prevGlyphIndex = -1; short isize = (short)(state->size*10.0f); short iblur = (short)state->blur; float scale; FONSfont* font; float startx, advance; float minx, miny, maxx, maxy; if (stash == NULL) return 0; if (state->font < 0 || state->font >= stash->nfonts) return 0; font = stash->fonts[state->font]; if (font->data == NULL) return 0; scale = fons__tt_getPixelHeightScale(&font->font, (float)isize/10.0f); // Align vertically. y += fons__getVertAlign(stash, font, state->align, isize); minx = maxx = x; miny = maxy = y; startx = x; if (end == NULL) end = str + strlen(str); for (; str != end; ++str) { if (fons__decutf8(&utf8state, &codepoint, *(const unsigned char*)str)) continue; glyph = fons__getGlyph(stash, font, codepoint, isize, iblur, FONS_GLYPH_BITMAP_OPTIONAL); if (glyph != NULL) { fons__getQuad(stash, font, prevGlyphIndex, glyph, scale, state->spacing, &x, &y, &q); if (q.x0 < minx) minx = q.x0; if (q.x1 > maxx) maxx = q.x1; if (stash->params.flags & FONS_ZERO_TOPLEFT) { if (q.y0 < miny) miny = q.y0; if (q.y1 > maxy) maxy = q.y1; } else { if (q.y1 < miny) miny = q.y1; if (q.y0 > maxy) maxy = q.y0; } } prevGlyphIndex = glyph != NULL ? glyph->index : -1; } advance = x - startx; // Align horizontally if (state->align & FONS_ALIGN_LEFT) { // empty } else if (state->align & FONS_ALIGN_RIGHT) { minx -= advance; maxx -= advance; } else if (state->align & FONS_ALIGN_CENTER) { minx -= advance * 0.5f; maxx -= advance * 0.5f; } if (bounds) { bounds[0] = minx; bounds[1] = miny; bounds[2] = maxx; bounds[3] = maxy; } return advance; } void fonsVertMetrics(FONScontext* stash, float* ascender, float* descender, float* lineh) { FONSfont* font; FONSstate* state = fons__getState(stash); short isize; if (stash == NULL) return; if (state->font < 0 || state->font >= stash->nfonts) return; font = stash->fonts[state->font]; isize = (short)(state->size*10.0f); if (font->data == NULL) return; if (ascender) *ascender = font->ascender*isize/10.0f; if (descender) *descender = font->descender*isize/10.0f; if (lineh) *lineh = font->lineh*isize/10.0f; } void fonsLineBounds(FONScontext* stash, float y, float* miny, float* maxy) { FONSfont* font; FONSstate* state = fons__getState(stash); short isize; if (stash == NULL) return; if (state->font < 0 || state->font >= stash->nfonts) return; font = stash->fonts[state->font]; isize = (short)(state->size*10.0f); if (font->data == NULL) return; y += fons__getVertAlign(stash, font, state->align, isize); if (stash->params.flags & FONS_ZERO_TOPLEFT) { *miny = y - font->ascender * (float)isize/10.0f; *maxy = *miny + font->lineh*isize/10.0f; } else { *maxy = y + font->descender * (float)isize/10.0f; *miny = *maxy - font->lineh*isize/10.0f; } } const unsigned char* fonsGetTextureData(FONScontext* stash, int* width, int* height) { if (width != NULL) *width = stash->params.width; if (height != NULL) *height = stash->params.height; return stash->texData; } int fonsValidateTexture(FONScontext* stash, int* dirty) { if (stash->dirtyRect[0] < stash->dirtyRect[2] && stash->dirtyRect[1] < stash->dirtyRect[3]) { dirty[0] = stash->dirtyRect[0]; dirty[1] = stash->dirtyRect[1]; dirty[2] = stash->dirtyRect[2]; dirty[3] = stash->dirtyRect[3]; // Reset dirty rect stash->dirtyRect[0] = stash->params.width; stash->dirtyRect[1] = stash->params.height; stash->dirtyRect[2] = 0; stash->dirtyRect[3] = 0; return 1; } return 0; } void fonsDeleteInternal(FONScontext* stash) { int i; if (stash == NULL) return; if (stash->params.renderDelete) stash->params.renderDelete(stash->params.userPtr); for (i = 0; i < stash->nfonts; ++i) fons__freeFont(stash->fonts[i]); if (stash->atlas) fons__deleteAtlas(stash->atlas); if (stash->fonts) free(stash->fonts); if (stash->texData) free(stash->texData); if (stash->scratch) free(stash->scratch); fons__tt_done(stash); free(stash); } void fonsSetErrorCallback(FONScontext* stash, void (*callback)(void* uptr, int error, int val), void* uptr) { if (stash == NULL) return; stash->handleError = callback; stash->errorUptr = uptr; } void fonsGetAtlasSize(FONScontext* stash, int* width, int* height) { if (stash == NULL) return; *width = stash->params.width; *height = stash->params.height; } int fonsExpandAtlas(FONScontext* stash, int width, int height) { int i, maxy = 0; unsigned char* data = NULL; if (stash == NULL) return 0; width = fons__maxi(width, stash->params.width); height = fons__maxi(height, stash->params.height); if (width == stash->params.width && height == stash->params.height) return 1; // Flush pending glyphs. fons__flush(stash); // Create new texture if (stash->params.renderResize != NULL) { if (stash->params.renderResize(stash->params.userPtr, width, height) == 0) return 0; } // Copy old texture data over. data = (unsigned char*)malloc(width * height); if (data == NULL) return 0; for (i = 0; i < stash->params.height; i++) { unsigned char* dst = &data[i*width]; unsigned char* src = &stash->texData[i*stash->params.width]; memcpy(dst, src, stash->params.width); if (width > stash->params.width) memset(dst+stash->params.width, 0, width - stash->params.width); } if (height > stash->params.height) memset(&data[stash->params.height * width], 0, (height - stash->params.height) * width); free(stash->texData); stash->texData = data; // Increase atlas size fons__atlasExpand(stash->atlas, width, height); // Add existing data as dirty. for (i = 0; i < stash->atlas->nnodes; i++) maxy = fons__maxi(maxy, stash->atlas->nodes[i].y); stash->dirtyRect[0] = 0; stash->dirtyRect[1] = 0; stash->dirtyRect[2] = stash->params.width; stash->dirtyRect[3] = maxy; stash->params.width = width; stash->params.height = height; stash->itw = 1.0f/stash->params.width; stash->ith = 1.0f/stash->params.height; return 1; } int fonsResetAtlas(FONScontext* stash, int width, int height) { int i, j; if (stash == NULL) return 0; // Flush pending glyphs. fons__flush(stash); // Create new texture if (stash->params.renderResize != NULL) { if (stash->params.renderResize(stash->params.userPtr, width, height) == 0) return 0; } // Reset atlas fons__atlasReset(stash->atlas, width, height); // Clear texture data. stash->texData = (unsigned char*)realloc(stash->texData, width * height); if (stash->texData == NULL) return 0; memset(stash->texData, 0, width * height); // Reset dirty rect stash->dirtyRect[0] = width; stash->dirtyRect[1] = height; stash->dirtyRect[2] = 0; stash->dirtyRect[3] = 0; // Reset cached glyphs for (i = 0; i < stash->nfonts; i++) { FONSfont* font = stash->fonts[i]; font->nglyphs = 0; for (j = 0; j < FONS_HASH_LUT_SIZE; j++) font->lut[j] = -1; } stash->params.width = width; stash->params.height = height; stash->itw = 1.0f/stash->params.width; stash->ith = 1.0f/stash->params.height; // Add white rect at 0,0 for debug drawing. fons__addWhiteRect(stash, 2,2); return 1; } #endif vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/src/nanovg.c000066400000000000000000002273751461511344300300470ustar00rootroot00000000000000// // Copyright (c) 2013 Mikko Mononen memon@inside.org // // This software is provided 'as-is', without any express or implied // warranty. In no event will the authors be held liable for any damages // arising from the use of this software. // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it // freely, subject to the following restrictions: // 1. The origin of this software must not be misrepresented; you must not // claim that you wrote the original software. If you use this software // in a product, an acknowledgment in the product documentation would be // appreciated but is not required. // 2. Altered source versions must be plainly marked as such, and must not be // misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. // #include #include #include #include #include "nanovg.h" #define FONTSTASH_IMPLEMENTATION #include "fontstash.h" #ifndef NVG_NO_STB #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #endif #ifdef _MSC_VER #pragma warning(disable: 4100) // unreferenced formal parameter #pragma warning(disable: 4127) // conditional expression is constant #pragma warning(disable: 4204) // nonstandard extension used : non-constant aggregate initializer #pragma warning(disable: 4706) // assignment within conditional expression #endif #define NVG_INIT_FONTIMAGE_SIZE 512 #define NVG_MAX_FONTIMAGE_SIZE 2048 #define NVG_MAX_FONTIMAGES 4 #define NVG_INIT_COMMANDS_SIZE 256 #define NVG_INIT_POINTS_SIZE 128 #define NVG_INIT_PATHS_SIZE 16 #define NVG_INIT_VERTS_SIZE 256 #ifndef NVG_MAX_STATES #define NVG_MAX_STATES 32 #endif #define NVG_KAPPA90 0.5522847493f // Length proportional to radius of a cubic bezier handle for 90deg arcs. #define NVG_COUNTOF(arr) (sizeof(arr) / sizeof(0[arr])) enum NVGcommands { NVG_MOVETO = 0, NVG_LINETO = 1, NVG_BEZIERTO = 2, NVG_CLOSE = 3, NVG_WINDING = 4, }; enum NVGpointFlags { NVG_PT_CORNER = 0x01, NVG_PT_LEFT = 0x02, NVG_PT_BEVEL = 0x04, NVG_PR_INNERBEVEL = 0x08, }; struct NVGstate { NVGcompositeOperationState compositeOperation; int shapeAntiAlias; NVGpaint fill; NVGpaint stroke; float strokeWidth; float miterLimit; int lineJoin; int lineCap; float alpha; float xform[6]; NVGscissor scissor; float fontSize; float letterSpacing; float lineHeight; float fontBlur; int textAlign; int fontId; }; typedef struct NVGstate NVGstate; struct NVGpoint { float x,y; float dx, dy; float len; float dmx, dmy; unsigned char flags; }; typedef struct NVGpoint NVGpoint; struct NVGpathCache { NVGpoint* points; int npoints; int cpoints; NVGpath* paths; int npaths; int cpaths; NVGvertex* verts; int nverts; int cverts; float bounds[4]; }; typedef struct NVGpathCache NVGpathCache; struct NVGcontext { NVGparams params; float* commands; int ccommands; int ncommands; float commandx, commandy; NVGstate states[NVG_MAX_STATES]; int nstates; NVGpathCache* cache; float tessTol; float distTol; float fringeWidth; float devicePxRatio; struct FONScontext* fs; int fontImages[NVG_MAX_FONTIMAGES]; int fontImageIdx; int drawCallCount; int fillTriCount; int strokeTriCount; int textTriCount; }; static float nvg__sqrtf(float a) { return sqrtf(a); } static float nvg__modf(float a, float b) { return fmodf(a, b); } static float nvg__sinf(float a) { return sinf(a); } static float nvg__cosf(float a) { return cosf(a); } static float nvg__tanf(float a) { return tanf(a); } static float nvg__atan2f(float a,float b) { return atan2f(a, b); } static float nvg__acosf(float a) { return acosf(a); } static int nvg__mini(int a, int b) { return a < b ? a : b; } static int nvg__maxi(int a, int b) { return a > b ? a : b; } static int nvg__clampi(int a, int mn, int mx) { return a < mn ? mn : (a > mx ? mx : a); } static float nvg__minf(float a, float b) { return a < b ? a : b; } static float nvg__maxf(float a, float b) { return a > b ? a : b; } static float nvg__absf(float a) { return a >= 0.0f ? a : -a; } static float nvg__signf(float a) { return a >= 0.0f ? 1.0f : -1.0f; } static float nvg__clampf(float a, float mn, float mx) { return a < mn ? mn : (a > mx ? mx : a); } static float nvg__cross(float dx0, float dy0, float dx1, float dy1) { return dx1*dy0 - dx0*dy1; } static float nvg__normalize(float *x, float* y) { float d = nvg__sqrtf((*x)*(*x) + (*y)*(*y)); if (d > 1e-6f) { float id = 1.0f / d; *x *= id; *y *= id; } return d; } static void nvg__deletePathCache(NVGpathCache* c) { if (c == NULL) return; if (c->points != NULL) free(c->points); if (c->paths != NULL) free(c->paths); if (c->verts != NULL) free(c->verts); free(c); } static NVGpathCache* nvg__allocPathCache(void) { NVGpathCache* c = (NVGpathCache*)malloc(sizeof(NVGpathCache)); if (c == NULL) goto error; memset(c, 0, sizeof(NVGpathCache)); c->points = (NVGpoint*)malloc(sizeof(NVGpoint)*NVG_INIT_POINTS_SIZE); if (!c->points) goto error; c->npoints = 0; c->cpoints = NVG_INIT_POINTS_SIZE; c->paths = (NVGpath*)malloc(sizeof(NVGpath)*NVG_INIT_PATHS_SIZE); if (!c->paths) goto error; c->npaths = 0; c->cpaths = NVG_INIT_PATHS_SIZE; c->verts = (NVGvertex*)malloc(sizeof(NVGvertex)*NVG_INIT_VERTS_SIZE); if (!c->verts) goto error; c->nverts = 0; c->cverts = NVG_INIT_VERTS_SIZE; return c; error: nvg__deletePathCache(c); return NULL; } static void nvg__setDevicePixelRatio(NVGcontext* ctx, float ratio) { ctx->tessTol = 0.25f / ratio; ctx->distTol = 0.01f / ratio; ctx->fringeWidth = 1.0f / ratio; ctx->devicePxRatio = ratio; } static NVGcompositeOperationState nvg__compositeOperationState(int op) { int sfactor, dfactor; if (op == NVG_SOURCE_OVER) { sfactor = NVG_ONE; dfactor = NVG_ONE_MINUS_SRC_ALPHA; } else if (op == NVG_SOURCE_IN) { sfactor = NVG_DST_ALPHA; dfactor = NVG_ZERO; } else if (op == NVG_SOURCE_OUT) { sfactor = NVG_ONE_MINUS_DST_ALPHA; dfactor = NVG_ZERO; } else if (op == NVG_ATOP) { sfactor = NVG_DST_ALPHA; dfactor = NVG_ONE_MINUS_SRC_ALPHA; } else if (op == NVG_DESTINATION_OVER) { sfactor = NVG_ONE_MINUS_DST_ALPHA; dfactor = NVG_ONE; } else if (op == NVG_DESTINATION_IN) { sfactor = NVG_ZERO; dfactor = NVG_SRC_ALPHA; } else if (op == NVG_DESTINATION_OUT) { sfactor = NVG_ZERO; dfactor = NVG_ONE_MINUS_SRC_ALPHA; } else if (op == NVG_DESTINATION_ATOP) { sfactor = NVG_ONE_MINUS_DST_ALPHA; dfactor = NVG_SRC_ALPHA; } else if (op == NVG_LIGHTER) { sfactor = NVG_ONE; dfactor = NVG_ONE; } else if (op == NVG_COPY) { sfactor = NVG_ONE; dfactor = NVG_ZERO; } else if (op == NVG_XOR) { sfactor = NVG_ONE_MINUS_DST_ALPHA; dfactor = NVG_ONE_MINUS_SRC_ALPHA; } else { sfactor = NVG_ONE; dfactor = NVG_ZERO; } NVGcompositeOperationState state; state.srcRGB = sfactor; state.dstRGB = dfactor; state.srcAlpha = sfactor; state.dstAlpha = dfactor; return state; } static NVGstate* nvg__getState(NVGcontext* ctx) { return &ctx->states[ctx->nstates-1]; } NVGcontext* nvgCreateInternal(NVGparams* params) { FONSparams fontParams; NVGcontext* ctx = (NVGcontext*)malloc(sizeof(NVGcontext)); int i; if (ctx == NULL) goto error; memset(ctx, 0, sizeof(NVGcontext)); ctx->params = *params; for (i = 0; i < NVG_MAX_FONTIMAGES; i++) ctx->fontImages[i] = 0; ctx->commands = (float*)malloc(sizeof(float)*NVG_INIT_COMMANDS_SIZE); if (!ctx->commands) goto error; ctx->ncommands = 0; ctx->ccommands = NVG_INIT_COMMANDS_SIZE; ctx->cache = nvg__allocPathCache(); if (ctx->cache == NULL) goto error; nvgSave(ctx); nvgReset(ctx); nvg__setDevicePixelRatio(ctx, 1.0f); if (ctx->params.renderCreate(ctx->params.userPtr) == 0) goto error; // Init font rendering memset(&fontParams, 0, sizeof(fontParams)); fontParams.width = NVG_INIT_FONTIMAGE_SIZE; fontParams.height = NVG_INIT_FONTIMAGE_SIZE; fontParams.flags = FONS_ZERO_TOPLEFT; fontParams.renderCreate = NULL; fontParams.renderUpdate = NULL; fontParams.renderDraw = NULL; fontParams.renderDelete = NULL; fontParams.userPtr = NULL; ctx->fs = fonsCreateInternal(&fontParams); if (ctx->fs == NULL) goto error; // Create font texture ctx->fontImages[0] = ctx->params.renderCreateTexture(ctx->params.userPtr, NVG_TEXTURE_ALPHA, fontParams.width, fontParams.height, 0, NULL); if (ctx->fontImages[0] == 0) goto error; ctx->fontImageIdx = 0; return ctx; error: nvgDeleteInternal(ctx); return 0; } NVGparams* nvgInternalParams(NVGcontext* ctx) { return &ctx->params; } void nvgDeleteInternal(NVGcontext* ctx) { int i; if (ctx == NULL) return; if (ctx->commands != NULL) free(ctx->commands); if (ctx->cache != NULL) nvg__deletePathCache(ctx->cache); if (ctx->fs) fonsDeleteInternal(ctx->fs); for (i = 0; i < NVG_MAX_FONTIMAGES; i++) { if (ctx->fontImages[i] != 0) { nvgDeleteImage(ctx, ctx->fontImages[i]); ctx->fontImages[i] = 0; } } if (ctx->params.renderDelete != NULL) ctx->params.renderDelete(ctx->params.userPtr); free(ctx); } void nvgBeginFrame(NVGcontext* ctx, float windowWidth, float windowHeight, float devicePixelRatio) { /* printf("Tris: draws:%d fill:%d stroke:%d text:%d TOT:%d\n", ctx->drawCallCount, ctx->fillTriCount, ctx->strokeTriCount, ctx->textTriCount, ctx->fillTriCount+ctx->strokeTriCount+ctx->textTriCount);*/ ctx->nstates = 0; nvgSave(ctx); nvgReset(ctx); nvg__setDevicePixelRatio(ctx, devicePixelRatio); ctx->params.renderViewport(ctx->params.userPtr, windowWidth, windowHeight, devicePixelRatio); ctx->drawCallCount = 0; ctx->fillTriCount = 0; ctx->strokeTriCount = 0; ctx->textTriCount = 0; } void nvgCancelFrame(NVGcontext* ctx) { ctx->params.renderCancel(ctx->params.userPtr); } void nvgEndFrame(NVGcontext* ctx) { ctx->params.renderFlush(ctx->params.userPtr); if (ctx->fontImageIdx != 0) { int fontImage = ctx->fontImages[ctx->fontImageIdx]; ctx->fontImages[ctx->fontImageIdx] = 0; int i, j, iw, ih; // delete images that smaller than current one if (fontImage == 0) return; nvgImageSize(ctx, fontImage, &iw, &ih); for (i = j = 0; i < ctx->fontImageIdx; i++) { if (ctx->fontImages[i] != 0) { int nw, nh; int image = ctx->fontImages[i]; ctx->fontImages[i] = 0; nvgImageSize(ctx, image, &nw, &nh); if (nw < iw || nh < ih) nvgDeleteImage(ctx, image); else ctx->fontImages[j++] = image; } } // make current font image to first ctx->fontImages[j] = ctx->fontImages[0]; ctx->fontImages[0] = fontImage; ctx->fontImageIdx = 0; } } NVGcolor nvgRGB(unsigned char r, unsigned char g, unsigned char b) { return nvgRGBA(r,g,b,255); } NVGcolor nvgRGBf(float r, float g, float b) { return nvgRGBAf(r,g,b,1.0f); } NVGcolor nvgRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) { NVGcolor color; // Use longer initialization to suppress warning. color.r = r / 255.0f; color.g = g / 255.0f; color.b = b / 255.0f; color.a = a / 255.0f; return color; } NVGcolor nvgRGBAf(float r, float g, float b, float a) { NVGcolor color; // Use longer initialization to suppress warning. color.r = r; color.g = g; color.b = b; color.a = a; return color; } NVGcolor nvgTransRGBA(NVGcolor c, unsigned char a) { c.a = a / 255.0f; return c; } NVGcolor nvgTransRGBAf(NVGcolor c, float a) { c.a = a; return c; } NVGcolor nvgLerpRGBA(NVGcolor c0, NVGcolor c1, float u) { int i; float oneminu; NVGcolor cint = {{{0}}}; u = nvg__clampf(u, 0.0f, 1.0f); oneminu = 1.0f - u; for( i = 0; i <4; i++ ) { cint.rgba[i] = c0.rgba[i] * oneminu + c1.rgba[i] * u; } return cint; } NVGcolor nvgHSL(float h, float s, float l) { return nvgHSLA(h,s,l,255); } static float nvg__hue(float h, float m1, float m2) { if (h < 0) h += 1; if (h > 1) h -= 1; if (h < 1.0f/6.0f) return m1 + (m2 - m1) * h * 6.0f; else if (h < 3.0f/6.0f) return m2; else if (h < 4.0f/6.0f) return m1 + (m2 - m1) * (2.0f/3.0f - h) * 6.0f; return m1; } NVGcolor nvgHSLA(float h, float s, float l, unsigned char a) { float m1, m2; NVGcolor col; h = nvg__modf(h, 1.0f); if (h < 0.0f) h += 1.0f; s = nvg__clampf(s, 0.0f, 1.0f); l = nvg__clampf(l, 0.0f, 1.0f); m2 = l <= 0.5f ? (l * (1 + s)) : (l + s - l * s); m1 = 2 * l - m2; col.r = nvg__clampf(nvg__hue(h + 1.0f/3.0f, m1, m2), 0.0f, 1.0f); col.g = nvg__clampf(nvg__hue(h, m1, m2), 0.0f, 1.0f); col.b = nvg__clampf(nvg__hue(h - 1.0f/3.0f, m1, m2), 0.0f, 1.0f); col.a = a/255.0f; return col; } void nvgTransformIdentity(float* t) { t[0] = 1.0f; t[1] = 0.0f; t[2] = 0.0f; t[3] = 1.0f; t[4] = 0.0f; t[5] = 0.0f; } void nvgTransformTranslate(float* t, float tx, float ty) { t[0] = 1.0f; t[1] = 0.0f; t[2] = 0.0f; t[3] = 1.0f; t[4] = tx; t[5] = ty; } void nvgTransformScale(float* t, float sx, float sy) { t[0] = sx; t[1] = 0.0f; t[2] = 0.0f; t[3] = sy; t[4] = 0.0f; t[5] = 0.0f; } void nvgTransformRotate(float* t, float a) { float cs = nvg__cosf(a), sn = nvg__sinf(a); t[0] = cs; t[1] = sn; t[2] = -sn; t[3] = cs; t[4] = 0.0f; t[5] = 0.0f; } void nvgTransformSkewX(float* t, float a) { t[0] = 1.0f; t[1] = 0.0f; t[2] = nvg__tanf(a); t[3] = 1.0f; t[4] = 0.0f; t[5] = 0.0f; } void nvgTransformSkewY(float* t, float a) { t[0] = 1.0f; t[1] = nvg__tanf(a); t[2] = 0.0f; t[3] = 1.0f; t[4] = 0.0f; t[5] = 0.0f; } void nvgTransformMultiply(float* t, const float* s) { float t0 = t[0] * s[0] + t[1] * s[2]; float t2 = t[2] * s[0] + t[3] * s[2]; float t4 = t[4] * s[0] + t[5] * s[2] + s[4]; t[1] = t[0] * s[1] + t[1] * s[3]; t[3] = t[2] * s[1] + t[3] * s[3]; t[5] = t[4] * s[1] + t[5] * s[3] + s[5]; t[0] = t0; t[2] = t2; t[4] = t4; } void nvgTransformPremultiply(float* t, const float* s) { float s2[6]; memcpy(s2, s, sizeof(float)*6); nvgTransformMultiply(s2, t); memcpy(t, s2, sizeof(float)*6); } int nvgTransformInverse(float* inv, const float* t) { double invdet, det = (double)t[0] * t[3] - (double)t[2] * t[1]; if (det > -1e-6 && det < 1e-6) { nvgTransformIdentity(inv); return 0; } invdet = 1.0 / det; inv[0] = (float)(t[3] * invdet); inv[2] = (float)(-t[2] * invdet); inv[4] = (float)(((double)t[2] * t[5] - (double)t[3] * t[4]) * invdet); inv[1] = (float)(-t[1] * invdet); inv[3] = (float)(t[0] * invdet); inv[5] = (float)(((double)t[1] * t[4] - (double)t[0] * t[5]) * invdet); return 1; } void nvgTransformPoint(float* dx, float* dy, const float* t, float sx, float sy) { *dx = sx*t[0] + sy*t[2] + t[4]; *dy = sx*t[1] + sy*t[3] + t[5]; } float nvgDegToRad(float deg) { return deg / 180.0f * NVG_PI; } float nvgRadToDeg(float rad) { return rad / NVG_PI * 180.0f; } static void nvg__setPaintColor(NVGpaint* p, NVGcolor color) { memset(p, 0, sizeof(*p)); nvgTransformIdentity(p->xform); p->radius = 0.0f; p->feather = 1.0f; p->innerColor = color; p->outerColor = color; } // State handling void nvgSave(NVGcontext* ctx) { if (ctx->nstates >= NVG_MAX_STATES) return; if (ctx->nstates > 0) memcpy(&ctx->states[ctx->nstates], &ctx->states[ctx->nstates-1], sizeof(NVGstate)); ctx->nstates++; } void nvgRestore(NVGcontext* ctx) { if (ctx->nstates <= 1) return; ctx->nstates--; } void nvgReset(NVGcontext* ctx) { NVGstate* state = nvg__getState(ctx); memset(state, 0, sizeof(*state)); nvg__setPaintColor(&state->fill, nvgRGBA(255,255,255,255)); nvg__setPaintColor(&state->stroke, nvgRGBA(0,0,0,255)); state->compositeOperation = nvg__compositeOperationState(NVG_SOURCE_OVER); state->shapeAntiAlias = 1; state->strokeWidth = 1.0f; state->miterLimit = 10.0f; state->lineCap = NVG_BUTT; state->lineJoin = NVG_MITER; state->alpha = 1.0f; nvgTransformIdentity(state->xform); state->scissor.extent[0] = -1.0f; state->scissor.extent[1] = -1.0f; state->fontSize = 16.0f; state->letterSpacing = 0.0f; state->lineHeight = 1.0f; state->fontBlur = 0.0f; state->textAlign = NVG_ALIGN_LEFT | NVG_ALIGN_BASELINE; state->fontId = 0; } // State setting void nvgShapeAntiAlias(NVGcontext* ctx, int enabled) { NVGstate* state = nvg__getState(ctx); state->shapeAntiAlias = enabled; } void nvgStrokeWidth(NVGcontext* ctx, float width) { NVGstate* state = nvg__getState(ctx); state->strokeWidth = width; } void nvgMiterLimit(NVGcontext* ctx, float limit) { NVGstate* state = nvg__getState(ctx); state->miterLimit = limit; } void nvgLineCap(NVGcontext* ctx, int cap) { NVGstate* state = nvg__getState(ctx); state->lineCap = cap; } void nvgLineJoin(NVGcontext* ctx, int join) { NVGstate* state = nvg__getState(ctx); state->lineJoin = join; } void nvgGlobalAlpha(NVGcontext* ctx, float alpha) { NVGstate* state = nvg__getState(ctx); state->alpha = alpha; } void nvgTransform(NVGcontext* ctx, float a, float b, float c, float d, float e, float f) { NVGstate* state = nvg__getState(ctx); float t[6] = { a, b, c, d, e, f }; nvgTransformPremultiply(state->xform, t); } void nvgResetTransform(NVGcontext* ctx) { NVGstate* state = nvg__getState(ctx); nvgTransformIdentity(state->xform); } void nvgTranslate(NVGcontext* ctx, float x, float y) { NVGstate* state = nvg__getState(ctx); float t[6]; nvgTransformTranslate(t, x,y); nvgTransformPremultiply(state->xform, t); } void nvgRotate(NVGcontext* ctx, float angle) { NVGstate* state = nvg__getState(ctx); float t[6]; nvgTransformRotate(t, angle); nvgTransformPremultiply(state->xform, t); } void nvgSkewX(NVGcontext* ctx, float angle) { NVGstate* state = nvg__getState(ctx); float t[6]; nvgTransformSkewX(t, angle); nvgTransformPremultiply(state->xform, t); } void nvgSkewY(NVGcontext* ctx, float angle) { NVGstate* state = nvg__getState(ctx); float t[6]; nvgTransformSkewY(t, angle); nvgTransformPremultiply(state->xform, t); } void nvgScale(NVGcontext* ctx, float x, float y) { NVGstate* state = nvg__getState(ctx); float t[6]; nvgTransformScale(t, x,y); nvgTransformPremultiply(state->xform, t); } void nvgCurrentTransform(NVGcontext* ctx, float* xform) { NVGstate* state = nvg__getState(ctx); if (xform == NULL) return; memcpy(xform, state->xform, sizeof(float)*6); } void nvgStrokeColor(NVGcontext* ctx, NVGcolor color) { NVGstate* state = nvg__getState(ctx); nvg__setPaintColor(&state->stroke, color); } void nvgStrokePaint(NVGcontext* ctx, NVGpaint paint) { NVGstate* state = nvg__getState(ctx); state->stroke = paint; nvgTransformMultiply(state->stroke.xform, state->xform); } void nvgFillColor(NVGcontext* ctx, NVGcolor color) { NVGstate* state = nvg__getState(ctx); nvg__setPaintColor(&state->fill, color); } void nvgFillPaint(NVGcontext* ctx, NVGpaint paint) { NVGstate* state = nvg__getState(ctx); state->fill = paint; nvgTransformMultiply(state->fill.xform, state->xform); } #ifndef NVG_NO_STB int nvgCreateImage(NVGcontext* ctx, const char* filename, int imageFlags) { int w, h, n, image; unsigned char* img; stbi_set_unpremultiply_on_load(1); stbi_convert_iphone_png_to_rgb(1); img = stbi_load(filename, &w, &h, &n, 4); if (img == NULL) { // printf("Failed to load %s - %s\n", filename, stbi_failure_reason()); return 0; } image = nvgCreateImageRGBA(ctx, w, h, imageFlags, img); stbi_image_free(img); return image; } int nvgCreateImageMem(NVGcontext* ctx, int imageFlags, unsigned char* data, int ndata) { int w, h, n, image; unsigned char* img = stbi_load_from_memory(data, ndata, &w, &h, &n, 4); if (img == NULL) { // printf("Failed to load %s - %s\n", filename, stbi_failure_reason()); return 0; } image = nvgCreateImageRGBA(ctx, w, h, imageFlags, img); stbi_image_free(img); return image; } #endif int nvgCreateImageRGBA(NVGcontext* ctx, int w, int h, int imageFlags, const unsigned char* data) { return ctx->params.renderCreateTexture(ctx->params.userPtr, NVG_TEXTURE_RGBA, w, h, imageFlags, data); } void nvgUpdateImage(NVGcontext* ctx, int image, const unsigned char* data) { int w, h; ctx->params.renderGetTextureSize(ctx->params.userPtr, image, &w, &h); ctx->params.renderUpdateTexture(ctx->params.userPtr, image, 0,0, w,h, data); } void nvgImageSize(NVGcontext* ctx, int image, int* w, int* h) { ctx->params.renderGetTextureSize(ctx->params.userPtr, image, w, h); } void nvgDeleteImage(NVGcontext* ctx, int image) { ctx->params.renderDeleteTexture(ctx->params.userPtr, image); } NVGpaint nvgLinearGradient(NVGcontext* ctx, float sx, float sy, float ex, float ey, NVGcolor icol, NVGcolor ocol) { NVGpaint p; float dx, dy, d; const float large = 1e5; NVG_NOTUSED(ctx); memset(&p, 0, sizeof(p)); // Calculate transform aligned to the line dx = ex - sx; dy = ey - sy; d = sqrtf(dx*dx + dy*dy); if (d > 0.0001f) { dx /= d; dy /= d; } else { dx = 0; dy = 1; } p.xform[0] = dy; p.xform[1] = -dx; p.xform[2] = dx; p.xform[3] = dy; p.xform[4] = sx - dx*large; p.xform[5] = sy - dy*large; p.extent[0] = large; p.extent[1] = large + d*0.5f; p.radius = 0.0f; p.feather = nvg__maxf(1.0f, d); p.innerColor = icol; p.outerColor = ocol; return p; } NVGpaint nvgRadialGradient(NVGcontext* ctx, float cx, float cy, float inr, float outr, NVGcolor icol, NVGcolor ocol) { NVGpaint p; float r = (inr+outr)*0.5f; float f = (outr-inr); NVG_NOTUSED(ctx); memset(&p, 0, sizeof(p)); nvgTransformIdentity(p.xform); p.xform[4] = cx; p.xform[5] = cy; p.extent[0] = r; p.extent[1] = r; p.radius = r; p.feather = nvg__maxf(1.0f, f); p.innerColor = icol; p.outerColor = ocol; return p; } NVGpaint nvgBoxGradient(NVGcontext* ctx, float x, float y, float w, float h, float r, float f, NVGcolor icol, NVGcolor ocol) { NVGpaint p; NVG_NOTUSED(ctx); memset(&p, 0, sizeof(p)); nvgTransformIdentity(p.xform); p.xform[4] = x+w*0.5f; p.xform[5] = y+h*0.5f; p.extent[0] = w*0.5f; p.extent[1] = h*0.5f; p.radius = r; p.feather = nvg__maxf(1.0f, f); p.innerColor = icol; p.outerColor = ocol; return p; } NVGpaint nvgImagePattern(NVGcontext* ctx, float cx, float cy, float w, float h, float angle, int image, float alpha) { NVGpaint p; NVG_NOTUSED(ctx); memset(&p, 0, sizeof(p)); nvgTransformRotate(p.xform, angle); p.xform[4] = cx; p.xform[5] = cy; p.extent[0] = w; p.extent[1] = h; p.image = image; p.innerColor = p.outerColor = nvgRGBAf(1,1,1,alpha); return p; } // Scissoring void nvgScissor(NVGcontext* ctx, float x, float y, float w, float h) { NVGstate* state = nvg__getState(ctx); w = nvg__maxf(0.0f, w); h = nvg__maxf(0.0f, h); nvgTransformIdentity(state->scissor.xform); state->scissor.xform[4] = x+w*0.5f; state->scissor.xform[5] = y+h*0.5f; nvgTransformMultiply(state->scissor.xform, state->xform); state->scissor.extent[0] = w*0.5f; state->scissor.extent[1] = h*0.5f; } static void nvg__isectRects(float* dst, float ax, float ay, float aw, float ah, float bx, float by, float bw, float bh) { float minx = nvg__maxf(ax, bx); float miny = nvg__maxf(ay, by); float maxx = nvg__minf(ax+aw, bx+bw); float maxy = nvg__minf(ay+ah, by+bh); dst[0] = minx; dst[1] = miny; dst[2] = nvg__maxf(0.0f, maxx - minx); dst[3] = nvg__maxf(0.0f, maxy - miny); } void nvgIntersectScissor(NVGcontext* ctx, float x, float y, float w, float h) { NVGstate* state = nvg__getState(ctx); float pxform[6], invxorm[6]; float rect[4]; float ex, ey, tex, tey; // If no previous scissor has been set, set the scissor as current scissor. if (state->scissor.extent[0] < 0) { nvgScissor(ctx, x, y, w, h); return; } // Transform the current scissor rect into current transform space. // If there is difference in rotation, this will be approximation. memcpy(pxform, state->scissor.xform, sizeof(float)*6); ex = state->scissor.extent[0]; ey = state->scissor.extent[1]; nvgTransformInverse(invxorm, state->xform); nvgTransformMultiply(pxform, invxorm); tex = ex*nvg__absf(pxform[0]) + ey*nvg__absf(pxform[2]); tey = ex*nvg__absf(pxform[1]) + ey*nvg__absf(pxform[3]); // Intersect rects. nvg__isectRects(rect, pxform[4]-tex,pxform[5]-tey,tex*2,tey*2, x,y,w,h); nvgScissor(ctx, rect[0], rect[1], rect[2], rect[3]); } void nvgResetScissor(NVGcontext* ctx) { NVGstate* state = nvg__getState(ctx); memset(state->scissor.xform, 0, sizeof(state->scissor.xform)); state->scissor.extent[0] = -1.0f; state->scissor.extent[1] = -1.0f; } // Global composite operation. void nvgGlobalCompositeOperation(NVGcontext* ctx, int op) { NVGstate* state = nvg__getState(ctx); state->compositeOperation = nvg__compositeOperationState(op); } void nvgGlobalCompositeBlendFunc(NVGcontext* ctx, int sfactor, int dfactor) { nvgGlobalCompositeBlendFuncSeparate(ctx, sfactor, dfactor, sfactor, dfactor); } void nvgGlobalCompositeBlendFuncSeparate(NVGcontext* ctx, int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) { NVGcompositeOperationState op; op.srcRGB = srcRGB; op.dstRGB = dstRGB; op.srcAlpha = srcAlpha; op.dstAlpha = dstAlpha; NVGstate* state = nvg__getState(ctx); state->compositeOperation = op; } static int nvg__ptEquals(float x1, float y1, float x2, float y2, float tol) { float dx = x2 - x1; float dy = y2 - y1; return dx*dx + dy*dy < tol*tol; } static float nvg__distPtSeg(float x, float y, float px, float py, float qx, float qy) { float pqx, pqy, dx, dy, d, t; pqx = qx-px; pqy = qy-py; dx = x-px; dy = y-py; d = pqx*pqx + pqy*pqy; t = pqx*dx + pqy*dy; if (d > 0) t /= d; if (t < 0) t = 0; else if (t > 1) t = 1; dx = px + t*pqx - x; dy = py + t*pqy - y; return dx*dx + dy*dy; } static void nvg__appendCommands(NVGcontext* ctx, float* vals, int nvals) { NVGstate* state = nvg__getState(ctx); int i; if (ctx->ncommands+nvals > ctx->ccommands) { float* commands; int ccommands = ctx->ncommands+nvals + ctx->ccommands/2; commands = (float*)realloc(ctx->commands, sizeof(float)*ccommands); if (commands == NULL) return; ctx->commands = commands; ctx->ccommands = ccommands; } if ((int)vals[0] != NVG_CLOSE && (int)vals[0] != NVG_WINDING) { ctx->commandx = vals[nvals-2]; ctx->commandy = vals[nvals-1]; } // transform commands i = 0; while (i < nvals) { int cmd = (int)vals[i]; switch (cmd) { case NVG_MOVETO: nvgTransformPoint(&vals[i+1],&vals[i+2], state->xform, vals[i+1],vals[i+2]); i += 3; break; case NVG_LINETO: nvgTransformPoint(&vals[i+1],&vals[i+2], state->xform, vals[i+1],vals[i+2]); i += 3; break; case NVG_BEZIERTO: nvgTransformPoint(&vals[i+1],&vals[i+2], state->xform, vals[i+1],vals[i+2]); nvgTransformPoint(&vals[i+3],&vals[i+4], state->xform, vals[i+3],vals[i+4]); nvgTransformPoint(&vals[i+5],&vals[i+6], state->xform, vals[i+5],vals[i+6]); i += 7; break; case NVG_CLOSE: i++; break; case NVG_WINDING: i += 2; break; default: i++; } } memcpy(&ctx->commands[ctx->ncommands], vals, nvals*sizeof(float)); ctx->ncommands += nvals; } static void nvg__clearPathCache(NVGcontext* ctx) { ctx->cache->npoints = 0; ctx->cache->npaths = 0; } static NVGpath* nvg__lastPath(NVGcontext* ctx) { if (ctx->cache->npaths > 0) return &ctx->cache->paths[ctx->cache->npaths-1]; return NULL; } static void nvg__addPath(NVGcontext* ctx) { NVGpath* path; if (ctx->cache->npaths+1 > ctx->cache->cpaths) { NVGpath* paths; int cpaths = ctx->cache->npaths+1 + ctx->cache->cpaths/2; paths = (NVGpath*)realloc(ctx->cache->paths, sizeof(NVGpath)*cpaths); if (paths == NULL) return; ctx->cache->paths = paths; ctx->cache->cpaths = cpaths; } path = &ctx->cache->paths[ctx->cache->npaths]; memset(path, 0, sizeof(*path)); path->first = ctx->cache->npoints; path->winding = NVG_CCW; ctx->cache->npaths++; } static NVGpoint* nvg__lastPoint(NVGcontext* ctx) { if (ctx->cache->npoints > 0) return &ctx->cache->points[ctx->cache->npoints-1]; return NULL; } static void nvg__addPoint(NVGcontext* ctx, float x, float y, int flags) { NVGpath* path = nvg__lastPath(ctx); NVGpoint* pt; if (path == NULL) return; if (path->count > 0 && ctx->cache->npoints > 0) { pt = nvg__lastPoint(ctx); if (nvg__ptEquals(pt->x,pt->y, x,y, ctx->distTol)) { pt->flags |= flags; return; } } if (ctx->cache->npoints+1 > ctx->cache->cpoints) { NVGpoint* points; int cpoints = ctx->cache->npoints+1 + ctx->cache->cpoints/2; points = (NVGpoint*)realloc(ctx->cache->points, sizeof(NVGpoint)*cpoints); if (points == NULL) return; ctx->cache->points = points; ctx->cache->cpoints = cpoints; } pt = &ctx->cache->points[ctx->cache->npoints]; memset(pt, 0, sizeof(*pt)); pt->x = x; pt->y = y; pt->flags = (unsigned char)flags; ctx->cache->npoints++; path->count++; } static void nvg__closePath(NVGcontext* ctx) { NVGpath* path = nvg__lastPath(ctx); if (path == NULL) return; path->closed = 1; } static void nvg__pathWinding(NVGcontext* ctx, int winding) { NVGpath* path = nvg__lastPath(ctx); if (path == NULL) return; path->winding = winding; } static float nvg__getAverageScale(float *t) { float sx = sqrtf(t[0]*t[0] + t[2]*t[2]); float sy = sqrtf(t[1]*t[1] + t[3]*t[3]); return (sx + sy) * 0.5f; } static NVGvertex* nvg__allocTempVerts(NVGcontext* ctx, int nverts) { if (nverts > ctx->cache->cverts) { NVGvertex* verts; int cverts = (nverts + 0xff) & ~0xff; // Round up to prevent allocations when things change just slightly. verts = (NVGvertex*)realloc(ctx->cache->verts, sizeof(NVGvertex)*cverts); if (verts == NULL) return NULL; ctx->cache->verts = verts; ctx->cache->cverts = cverts; } return ctx->cache->verts; } static float nvg__triarea2(float ax, float ay, float bx, float by, float cx, float cy) { float abx = bx - ax; float aby = by - ay; float acx = cx - ax; float acy = cy - ay; return acx*aby - abx*acy; } static float nvg__polyArea(NVGpoint* pts, int npts) { int i; float area = 0; for (i = 2; i < npts; i++) { NVGpoint* a = &pts[0]; NVGpoint* b = &pts[i-1]; NVGpoint* c = &pts[i]; area += nvg__triarea2(a->x,a->y, b->x,b->y, c->x,c->y); } return area * 0.5f; } static void nvg__polyReverse(NVGpoint* pts, int npts) { NVGpoint tmp; int i = 0, j = npts-1; while (i < j) { tmp = pts[i]; pts[i] = pts[j]; pts[j] = tmp; i++; j--; } } static void nvg__vset(NVGvertex* vtx, float x, float y, float u, float v) { vtx->x = x; vtx->y = y; vtx->u = u; vtx->v = v; } static void nvg__tesselateBezier(NVGcontext* ctx, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, int level, int type) { float x12,y12,x23,y23,x34,y34,x123,y123,x234,y234,x1234,y1234; float dx,dy,d2,d3; if (level > 10) return; x12 = (x1+x2)*0.5f; y12 = (y1+y2)*0.5f; x23 = (x2+x3)*0.5f; y23 = (y2+y3)*0.5f; x34 = (x3+x4)*0.5f; y34 = (y3+y4)*0.5f; x123 = (x12+x23)*0.5f; y123 = (y12+y23)*0.5f; dx = x4 - x1; dy = y4 - y1; d2 = nvg__absf(((x2 - x4) * dy - (y2 - y4) * dx)); d3 = nvg__absf(((x3 - x4) * dy - (y3 - y4) * dx)); if ((d2 + d3)*(d2 + d3) < ctx->tessTol * (dx*dx + dy*dy)) { nvg__addPoint(ctx, x4, y4, type); return; } /* if (nvg__absf(x1+x3-x2-x2) + nvg__absf(y1+y3-y2-y2) + nvg__absf(x2+x4-x3-x3) + nvg__absf(y2+y4-y3-y3) < ctx->tessTol) { nvg__addPoint(ctx, x4, y4, type); return; }*/ x234 = (x23+x34)*0.5f; y234 = (y23+y34)*0.5f; x1234 = (x123+x234)*0.5f; y1234 = (y123+y234)*0.5f; nvg__tesselateBezier(ctx, x1,y1, x12,y12, x123,y123, x1234,y1234, level+1, 0); nvg__tesselateBezier(ctx, x1234,y1234, x234,y234, x34,y34, x4,y4, level+1, type); } static void nvg__flattenPaths(NVGcontext* ctx) { NVGpathCache* cache = ctx->cache; // NVGstate* state = nvg__getState(ctx); NVGpoint* last; NVGpoint* p0; NVGpoint* p1; NVGpoint* pts; NVGpath* path; int i, j; float* cp1; float* cp2; float* p; float area; if (cache->npaths > 0) return; // Flatten i = 0; while (i < ctx->ncommands) { int cmd = (int)ctx->commands[i]; switch (cmd) { case NVG_MOVETO: nvg__addPath(ctx); p = &ctx->commands[i+1]; nvg__addPoint(ctx, p[0], p[1], NVG_PT_CORNER); i += 3; break; case NVG_LINETO: p = &ctx->commands[i+1]; nvg__addPoint(ctx, p[0], p[1], NVG_PT_CORNER); i += 3; break; case NVG_BEZIERTO: last = nvg__lastPoint(ctx); if (last != NULL) { cp1 = &ctx->commands[i+1]; cp2 = &ctx->commands[i+3]; p = &ctx->commands[i+5]; nvg__tesselateBezier(ctx, last->x,last->y, cp1[0],cp1[1], cp2[0],cp2[1], p[0],p[1], 0, NVG_PT_CORNER); } i += 7; break; case NVG_CLOSE: nvg__closePath(ctx); i++; break; case NVG_WINDING: nvg__pathWinding(ctx, (int)ctx->commands[i+1]); i += 2; break; default: i++; } } cache->bounds[0] = cache->bounds[1] = 1e6f; cache->bounds[2] = cache->bounds[3] = -1e6f; // Calculate the direction and length of line segments. for (j = 0; j < cache->npaths; j++) { path = &cache->paths[j]; pts = &cache->points[path->first]; // If the first and last points are the same, remove the last, mark as closed path. p0 = &pts[path->count-1]; p1 = &pts[0]; if (nvg__ptEquals(p0->x,p0->y, p1->x,p1->y, ctx->distTol)) { path->count--; p0 = &pts[path->count-1]; path->closed = 1; } // Enforce winding. if (path->count > 2) { area = nvg__polyArea(pts, path->count); if (path->winding == NVG_CCW && area < 0.0f) nvg__polyReverse(pts, path->count); if (path->winding == NVG_CW && area > 0.0f) nvg__polyReverse(pts, path->count); } for(i = 0; i < path->count; i++) { // Calculate segment direction and length p0->dx = p1->x - p0->x; p0->dy = p1->y - p0->y; p0->len = nvg__normalize(&p0->dx, &p0->dy); // Update bounds cache->bounds[0] = nvg__minf(cache->bounds[0], p0->x); cache->bounds[1] = nvg__minf(cache->bounds[1], p0->y); cache->bounds[2] = nvg__maxf(cache->bounds[2], p0->x); cache->bounds[3] = nvg__maxf(cache->bounds[3], p0->y); // Advance p0 = p1++; } } } static int nvg__curveDivs(float r, float arc, float tol) { float da = acosf(r / (r + tol)) * 2.0f; return nvg__maxi(2, (int)ceilf(arc / da)); } static void nvg__chooseBevel(int bevel, NVGpoint* p0, NVGpoint* p1, float w, float* x0, float* y0, float* x1, float* y1) { if (bevel) { *x0 = p1->x + p0->dy * w; *y0 = p1->y - p0->dx * w; *x1 = p1->x + p1->dy * w; *y1 = p1->y - p1->dx * w; } else { *x0 = p1->x + p1->dmx * w; *y0 = p1->y + p1->dmy * w; *x1 = p1->x + p1->dmx * w; *y1 = p1->y + p1->dmy * w; } } static NVGvertex* nvg__roundJoin(NVGvertex* dst, NVGpoint* p0, NVGpoint* p1, float lw, float rw, float lu, float ru, int ncap, float fringe) { int i, n; float dlx0 = p0->dy; float dly0 = -p0->dx; float dlx1 = p1->dy; float dly1 = -p1->dx; NVG_NOTUSED(fringe); if (p1->flags & NVG_PT_LEFT) { float lx0,ly0,lx1,ly1,a0,a1; nvg__chooseBevel(p1->flags & NVG_PR_INNERBEVEL, p0, p1, lw, &lx0,&ly0, &lx1,&ly1); a0 = atan2f(-dly0, -dlx0); a1 = atan2f(-dly1, -dlx1); if (a1 > a0) a1 -= NVG_PI*2; nvg__vset(dst, lx0, ly0, lu,1); dst++; nvg__vset(dst, p1->x - dlx0*rw, p1->y - dly0*rw, ru,1); dst++; n = nvg__clampi((int)ceilf(((a0 - a1) / NVG_PI) * ncap), 2, ncap); for (i = 0; i < n; i++) { float u = i/(float)(n-1); float a = a0 + u*(a1-a0); float rx = p1->x + cosf(a) * rw; float ry = p1->y + sinf(a) * rw; nvg__vset(dst, p1->x, p1->y, 0.5f,1); dst++; nvg__vset(dst, rx, ry, ru,1); dst++; } nvg__vset(dst, lx1, ly1, lu,1); dst++; nvg__vset(dst, p1->x - dlx1*rw, p1->y - dly1*rw, ru,1); dst++; } else { float rx0,ry0,rx1,ry1,a0,a1; nvg__chooseBevel(p1->flags & NVG_PR_INNERBEVEL, p0, p1, -rw, &rx0,&ry0, &rx1,&ry1); a0 = atan2f(dly0, dlx0); a1 = atan2f(dly1, dlx1); if (a1 < a0) a1 += NVG_PI*2; nvg__vset(dst, p1->x + dlx0*rw, p1->y + dly0*rw, lu,1); dst++; nvg__vset(dst, rx0, ry0, ru,1); dst++; n = nvg__clampi((int)ceilf(((a1 - a0) / NVG_PI) * ncap), 2, ncap); for (i = 0; i < n; i++) { float u = i/(float)(n-1); float a = a0 + u*(a1-a0); float lx = p1->x + cosf(a) * lw; float ly = p1->y + sinf(a) * lw; nvg__vset(dst, lx, ly, lu,1); dst++; nvg__vset(dst, p1->x, p1->y, 0.5f,1); dst++; } nvg__vset(dst, p1->x + dlx1*rw, p1->y + dly1*rw, lu,1); dst++; nvg__vset(dst, rx1, ry1, ru,1); dst++; } return dst; } static NVGvertex* nvg__bevelJoin(NVGvertex* dst, NVGpoint* p0, NVGpoint* p1, float lw, float rw, float lu, float ru, float fringe) { float rx0,ry0,rx1,ry1; float lx0,ly0,lx1,ly1; float dlx0 = p0->dy; float dly0 = -p0->dx; float dlx1 = p1->dy; float dly1 = -p1->dx; NVG_NOTUSED(fringe); if (p1->flags & NVG_PT_LEFT) { nvg__chooseBevel(p1->flags & NVG_PR_INNERBEVEL, p0, p1, lw, &lx0,&ly0, &lx1,&ly1); nvg__vset(dst, lx0, ly0, lu,1); dst++; nvg__vset(dst, p1->x - dlx0*rw, p1->y - dly0*rw, ru,1); dst++; if (p1->flags & NVG_PT_BEVEL) { nvg__vset(dst, lx0, ly0, lu,1); dst++; nvg__vset(dst, p1->x - dlx0*rw, p1->y - dly0*rw, ru,1); dst++; nvg__vset(dst, lx1, ly1, lu,1); dst++; nvg__vset(dst, p1->x - dlx1*rw, p1->y - dly1*rw, ru,1); dst++; } else { rx0 = p1->x - p1->dmx * rw; ry0 = p1->y - p1->dmy * rw; nvg__vset(dst, p1->x, p1->y, 0.5f,1); dst++; nvg__vset(dst, p1->x - dlx0*rw, p1->y - dly0*rw, ru,1); dst++; nvg__vset(dst, rx0, ry0, ru,1); dst++; nvg__vset(dst, rx0, ry0, ru,1); dst++; nvg__vset(dst, p1->x, p1->y, 0.5f,1); dst++; nvg__vset(dst, p1->x - dlx1*rw, p1->y - dly1*rw, ru,1); dst++; } nvg__vset(dst, lx1, ly1, lu,1); dst++; nvg__vset(dst, p1->x - dlx1*rw, p1->y - dly1*rw, ru,1); dst++; } else { nvg__chooseBevel(p1->flags & NVG_PR_INNERBEVEL, p0, p1, -rw, &rx0,&ry0, &rx1,&ry1); nvg__vset(dst, p1->x + dlx0*lw, p1->y + dly0*lw, lu,1); dst++; nvg__vset(dst, rx0, ry0, ru,1); dst++; if (p1->flags & NVG_PT_BEVEL) { nvg__vset(dst, p1->x + dlx0*lw, p1->y + dly0*lw, lu,1); dst++; nvg__vset(dst, rx0, ry0, ru,1); dst++; nvg__vset(dst, p1->x + dlx1*lw, p1->y + dly1*lw, lu,1); dst++; nvg__vset(dst, rx1, ry1, ru,1); dst++; } else { lx0 = p1->x + p1->dmx * lw; ly0 = p1->y + p1->dmy * lw; nvg__vset(dst, p1->x + dlx0*lw, p1->y + dly0*lw, lu,1); dst++; nvg__vset(dst, p1->x, p1->y, 0.5f,1); dst++; nvg__vset(dst, lx0, ly0, lu,1); dst++; nvg__vset(dst, lx0, ly0, lu,1); dst++; nvg__vset(dst, p1->x + dlx1*lw, p1->y + dly1*lw, lu,1); dst++; nvg__vset(dst, p1->x, p1->y, 0.5f,1); dst++; } nvg__vset(dst, p1->x + dlx1*lw, p1->y + dly1*lw, lu,1); dst++; nvg__vset(dst, rx1, ry1, ru,1); dst++; } return dst; } static NVGvertex* nvg__buttCapStart(NVGvertex* dst, NVGpoint* p, float dx, float dy, float w, float d, float aa, float u0, float u1) { float px = p->x - dx*d; float py = p->y - dy*d; float dlx = dy; float dly = -dx; nvg__vset(dst, px + dlx*w - dx*aa, py + dly*w - dy*aa, u0,0); dst++; nvg__vset(dst, px - dlx*w - dx*aa, py - dly*w - dy*aa, u1,0); dst++; nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++; nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++; return dst; } static NVGvertex* nvg__buttCapEnd(NVGvertex* dst, NVGpoint* p, float dx, float dy, float w, float d, float aa, float u0, float u1) { float px = p->x + dx*d; float py = p->y + dy*d; float dlx = dy; float dly = -dx; nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++; nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++; nvg__vset(dst, px + dlx*w + dx*aa, py + dly*w + dy*aa, u0,0); dst++; nvg__vset(dst, px - dlx*w + dx*aa, py - dly*w + dy*aa, u1,0); dst++; return dst; } static NVGvertex* nvg__roundCapStart(NVGvertex* dst, NVGpoint* p, float dx, float dy, float w, int ncap, float aa, float u0, float u1) { int i; float px = p->x; float py = p->y; float dlx = dy; float dly = -dx; NVG_NOTUSED(aa); for (i = 0; i < ncap; i++) { float a = i/(float)(ncap-1)*NVG_PI; float ax = cosf(a) * w, ay = sinf(a) * w; nvg__vset(dst, px - dlx*ax - dx*ay, py - dly*ax - dy*ay, u0,1); dst++; nvg__vset(dst, px, py, 0.5f,1); dst++; } nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++; nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++; return dst; } static NVGvertex* nvg__roundCapEnd(NVGvertex* dst, NVGpoint* p, float dx, float dy, float w, int ncap, float aa, float u0, float u1) { int i; float px = p->x; float py = p->y; float dlx = dy; float dly = -dx; NVG_NOTUSED(aa); nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++; nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++; for (i = 0; i < ncap; i++) { float a = i/(float)(ncap-1)*NVG_PI; float ax = cosf(a) * w, ay = sinf(a) * w; nvg__vset(dst, px, py, 0.5f,1); dst++; nvg__vset(dst, px - dlx*ax + dx*ay, py - dly*ax + dy*ay, u0,1); dst++; } return dst; } static void nvg__calculateJoins(NVGcontext* ctx, float w, int lineJoin, float miterLimit) { NVGpathCache* cache = ctx->cache; int i, j; float iw = 0.0f; if (w > 0.0f) iw = 1.0f / w; // Calculate which joins needs extra vertices to append, and gather vertex count. for (i = 0; i < cache->npaths; i++) { NVGpath* path = &cache->paths[i]; NVGpoint* pts = &cache->points[path->first]; NVGpoint* p0 = &pts[path->count-1]; NVGpoint* p1 = &pts[0]; int nleft = 0; path->nbevel = 0; for (j = 0; j < path->count; j++) { float dlx0, dly0, dlx1, dly1, dmr2, cross, limit; dlx0 = p0->dy; dly0 = -p0->dx; dlx1 = p1->dy; dly1 = -p1->dx; // Calculate extrusions p1->dmx = (dlx0 + dlx1) * 0.5f; p1->dmy = (dly0 + dly1) * 0.5f; dmr2 = p1->dmx*p1->dmx + p1->dmy*p1->dmy; if (dmr2 > 0.000001f) { float scale = 1.0f / dmr2; if (scale > 600.0f) { scale = 600.0f; } p1->dmx *= scale; p1->dmy *= scale; } // Clear flags, but keep the corner. p1->flags = (p1->flags & NVG_PT_CORNER) ? NVG_PT_CORNER : 0; // Keep track of left turns. cross = p1->dx * p0->dy - p0->dx * p1->dy; if (cross > 0.0f) { nleft++; p1->flags |= NVG_PT_LEFT; } // Calculate if we should use bevel or miter for inner join. limit = nvg__maxf(1.01f, nvg__minf(p0->len, p1->len) * iw); if ((dmr2 * limit*limit) < 1.0f) p1->flags |= NVG_PR_INNERBEVEL; // Check to see if the corner needs to be beveled. if (p1->flags & NVG_PT_CORNER) { if ((dmr2 * miterLimit*miterLimit) < 1.0f || lineJoin == NVG_BEVEL || lineJoin == NVG_ROUND) { p1->flags |= NVG_PT_BEVEL; } } if ((p1->flags & (NVG_PT_BEVEL | NVG_PR_INNERBEVEL)) != 0) path->nbevel++; p0 = p1++; } path->convex = (nleft == path->count) ? 1 : 0; } } static int nvg__expandStroke(NVGcontext* ctx, float w, float fringe, int lineCap, int lineJoin, float miterLimit) { NVGpathCache* cache = ctx->cache; NVGvertex* verts; NVGvertex* dst; int cverts, i, j; float aa = fringe;//ctx->fringeWidth; float u0 = 0.0f, u1 = 1.0f; int ncap = nvg__curveDivs(w, NVG_PI, ctx->tessTol); // Calculate divisions per half circle. w += aa * 0.5f; // Disable the gradient used for antialiasing when antialiasing is not used. if (aa == 0.0f) { u0 = 0.5f; u1 = 0.5f; } nvg__calculateJoins(ctx, w, lineJoin, miterLimit); // Calculate max vertex usage. cverts = 0; for (i = 0; i < cache->npaths; i++) { NVGpath* path = &cache->paths[i]; int loop = (path->closed == 0) ? 0 : 1; if (lineJoin == NVG_ROUND) cverts += (path->count + path->nbevel*(ncap+2) + 1) * 2; // plus one for loop else cverts += (path->count + path->nbevel*5 + 1) * 2; // plus one for loop if (loop == 0) { // space for caps if (lineCap == NVG_ROUND) { cverts += (ncap*2 + 2)*2; } else { cverts += (3+3)*2; } } } verts = nvg__allocTempVerts(ctx, cverts); if (verts == NULL) return 0; for (i = 0; i < cache->npaths; i++) { NVGpath* path = &cache->paths[i]; NVGpoint* pts = &cache->points[path->first]; NVGpoint* p0; NVGpoint* p1; int s, e, loop; float dx, dy; path->fill = 0; path->nfill = 0; // Calculate fringe or stroke loop = (path->closed == 0) ? 0 : 1; dst = verts; path->stroke = dst; if (loop) { // Looping p0 = &pts[path->count-1]; p1 = &pts[0]; s = 0; e = path->count; } else { // Add cap p0 = &pts[0]; p1 = &pts[1]; s = 1; e = path->count-1; } if (loop == 0) { // Add cap dx = p1->x - p0->x; dy = p1->y - p0->y; nvg__normalize(&dx, &dy); if (lineCap == NVG_BUTT) dst = nvg__buttCapStart(dst, p0, dx, dy, w, -aa*0.5f, aa, u0, u1); else if (lineCap == NVG_BUTT || lineCap == NVG_SQUARE) dst = nvg__buttCapStart(dst, p0, dx, dy, w, w-aa, aa, u0, u1); else if (lineCap == NVG_ROUND) dst = nvg__roundCapStart(dst, p0, dx, dy, w, ncap, aa, u0, u1); } for (j = s; j < e; ++j) { if ((p1->flags & (NVG_PT_BEVEL | NVG_PR_INNERBEVEL)) != 0) { if (lineJoin == NVG_ROUND) { dst = nvg__roundJoin(dst, p0, p1, w, w, u0, u1, ncap, aa); } else { dst = nvg__bevelJoin(dst, p0, p1, w, w, u0, u1, aa); } } else { nvg__vset(dst, p1->x + (p1->dmx * w), p1->y + (p1->dmy * w), u0,1); dst++; nvg__vset(dst, p1->x - (p1->dmx * w), p1->y - (p1->dmy * w), u1,1); dst++; } p0 = p1++; } if (loop) { // Loop it nvg__vset(dst, verts[0].x, verts[0].y, u0,1); dst++; nvg__vset(dst, verts[1].x, verts[1].y, u1,1); dst++; } else { // Add cap dx = p1->x - p0->x; dy = p1->y - p0->y; nvg__normalize(&dx, &dy); if (lineCap == NVG_BUTT) dst = nvg__buttCapEnd(dst, p1, dx, dy, w, -aa*0.5f, aa, u0, u1); else if (lineCap == NVG_BUTT || lineCap == NVG_SQUARE) dst = nvg__buttCapEnd(dst, p1, dx, dy, w, w-aa, aa, u0, u1); else if (lineCap == NVG_ROUND) dst = nvg__roundCapEnd(dst, p1, dx, dy, w, ncap, aa, u0, u1); } path->nstroke = (int)(dst - verts); verts = dst; } return 1; } static int nvg__expandFill(NVGcontext* ctx, float w, int lineJoin, float miterLimit) { NVGpathCache* cache = ctx->cache; NVGvertex* verts; NVGvertex* dst; int cverts, convex, i, j; float aa = ctx->fringeWidth; int fringe = w > 0.0f; nvg__calculateJoins(ctx, w, lineJoin, miterLimit); // Calculate max vertex usage. cverts = 0; for (i = 0; i < cache->npaths; i++) { NVGpath* path = &cache->paths[i]; cverts += path->count + path->nbevel + 1; if (fringe) cverts += (path->count + path->nbevel*5 + 1) * 2; // plus one for loop } verts = nvg__allocTempVerts(ctx, cverts); if (verts == NULL) return 0; convex = cache->npaths == 1 && cache->paths[0].convex; for (i = 0; i < cache->npaths; i++) { NVGpath* path = &cache->paths[i]; NVGpoint* pts = &cache->points[path->first]; NVGpoint* p0; NVGpoint* p1; float rw, lw, woff; float ru, lu; // Calculate shape vertices. woff = 0.5f*aa; dst = verts; path->fill = dst; if (fringe) { // Looping p0 = &pts[path->count-1]; p1 = &pts[0]; for (j = 0; j < path->count; ++j) { if (p1->flags & NVG_PT_BEVEL) { float dlx0 = p0->dy; float dly0 = -p0->dx; float dlx1 = p1->dy; float dly1 = -p1->dx; if (p1->flags & NVG_PT_LEFT) { float lx = p1->x + p1->dmx * woff; float ly = p1->y + p1->dmy * woff; nvg__vset(dst, lx, ly, 0.5f,1); dst++; } else { float lx0 = p1->x + dlx0 * woff; float ly0 = p1->y + dly0 * woff; float lx1 = p1->x + dlx1 * woff; float ly1 = p1->y + dly1 * woff; nvg__vset(dst, lx0, ly0, 0.5f,1); dst++; nvg__vset(dst, lx1, ly1, 0.5f,1); dst++; } } else { nvg__vset(dst, p1->x + (p1->dmx * woff), p1->y + (p1->dmy * woff), 0.5f,1); dst++; } p0 = p1++; } } else { for (j = 0; j < path->count; ++j) { nvg__vset(dst, pts[j].x, pts[j].y, 0.5f,1); dst++; } } path->nfill = (int)(dst - verts); verts = dst; // Calculate fringe if (fringe) { lw = w + woff; rw = w - woff; lu = 0; ru = 1; dst = verts; path->stroke = dst; // Create only half a fringe for convex shapes so that // the shape can be rendered without stenciling. if (convex) { lw = woff; // This should generate the same vertex as fill inset above. lu = 0.5f; // Set outline fade at middle. } // Looping p0 = &pts[path->count-1]; p1 = &pts[0]; for (j = 0; j < path->count; ++j) { if ((p1->flags & (NVG_PT_BEVEL | NVG_PR_INNERBEVEL)) != 0) { dst = nvg__bevelJoin(dst, p0, p1, lw, rw, lu, ru, ctx->fringeWidth); } else { nvg__vset(dst, p1->x + (p1->dmx * lw), p1->y + (p1->dmy * lw), lu,1); dst++; nvg__vset(dst, p1->x - (p1->dmx * rw), p1->y - (p1->dmy * rw), ru,1); dst++; } p0 = p1++; } // Loop it nvg__vset(dst, verts[0].x, verts[0].y, lu,1); dst++; nvg__vset(dst, verts[1].x, verts[1].y, ru,1); dst++; path->nstroke = (int)(dst - verts); verts = dst; } else { path->stroke = NULL; path->nstroke = 0; } } return 1; } // Draw void nvgBeginPath(NVGcontext* ctx) { ctx->ncommands = 0; nvg__clearPathCache(ctx); } void nvgMoveTo(NVGcontext* ctx, float x, float y) { float vals[] = { NVG_MOVETO, x, y }; nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } void nvgLineTo(NVGcontext* ctx, float x, float y) { float vals[] = { NVG_LINETO, x, y }; nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } void nvgBezierTo(NVGcontext* ctx, float c1x, float c1y, float c2x, float c2y, float x, float y) { float vals[] = { NVG_BEZIERTO, c1x, c1y, c2x, c2y, x, y }; nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } void nvgQuadTo(NVGcontext* ctx, float cx, float cy, float x, float y) { float x0 = ctx->commandx; float y0 = ctx->commandy; float vals[] = { NVG_BEZIERTO, x0 + 2.0f/3.0f*(cx - x0), y0 + 2.0f/3.0f*(cy - y0), x + 2.0f/3.0f*(cx - x), y + 2.0f/3.0f*(cy - y), x, y }; nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } void nvgArcTo(NVGcontext* ctx, float x1, float y1, float x2, float y2, float radius) { float x0 = ctx->commandx; float y0 = ctx->commandy; float dx0,dy0, dx1,dy1, a, d, cx,cy, a0,a1; int dir; if (ctx->ncommands == 0) { return; } // Handle degenerate cases. if (nvg__ptEquals(x0,y0, x1,y1, ctx->distTol) || nvg__ptEquals(x1,y1, x2,y2, ctx->distTol) || nvg__distPtSeg(x1,y1, x0,y0, x2,y2) < ctx->distTol*ctx->distTol || radius < ctx->distTol) { nvgLineTo(ctx, x1,y1); return; } // Calculate tangential circle to lines (x0,y0)-(x1,y1) and (x1,y1)-(x2,y2). dx0 = x0-x1; dy0 = y0-y1; dx1 = x2-x1; dy1 = y2-y1; nvg__normalize(&dx0,&dy0); nvg__normalize(&dx1,&dy1); a = nvg__acosf(dx0*dx1 + dy0*dy1); d = radius / nvg__tanf(a/2.0f); // printf("a=%f° d=%f\n", a/NVG_PI*180.0f, d); if (d > 10000.0f) { nvgLineTo(ctx, x1,y1); return; } if (nvg__cross(dx0,dy0, dx1,dy1) > 0.0f) { cx = x1 + dx0*d + dy0*radius; cy = y1 + dy0*d + -dx0*radius; a0 = nvg__atan2f(dx0, -dy0); a1 = nvg__atan2f(-dx1, dy1); dir = NVG_CW; // printf("CW c=(%f, %f) a0=%f° a1=%f°\n", cx, cy, a0/NVG_PI*180.0f, a1/NVG_PI*180.0f); } else { cx = x1 + dx0*d + -dy0*radius; cy = y1 + dy0*d + dx0*radius; a0 = nvg__atan2f(-dx0, dy0); a1 = nvg__atan2f(dx1, -dy1); dir = NVG_CCW; // printf("CCW c=(%f, %f) a0=%f° a1=%f°\n", cx, cy, a0/NVG_PI*180.0f, a1/NVG_PI*180.0f); } nvgArc(ctx, cx, cy, radius, a0, a1, dir); } void nvgClosePath(NVGcontext* ctx) { float vals[] = { NVG_CLOSE }; nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } void nvgPathWinding(NVGcontext* ctx, int dir) { float vals[] = { NVG_WINDING, (float)dir }; nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } void nvgArc(NVGcontext* ctx, float cx, float cy, float r, float a0, float a1, int dir) { float a = 0, da = 0, hda = 0, kappa = 0; float dx = 0, dy = 0, x = 0, y = 0, tanx = 0, tany = 0; float px = 0, py = 0, ptanx = 0, ptany = 0; float vals[3 + 5*7 + 100]; int i, ndivs, nvals; int move = ctx->ncommands > 0 ? NVG_LINETO : NVG_MOVETO; // Clamp angles da = a1 - a0; if (dir == NVG_CW) { if (nvg__absf(da) >= NVG_PI*2) { da = NVG_PI*2; } else { while (da < 0.0f) da += NVG_PI*2; } } else { if (nvg__absf(da) >= NVG_PI*2) { da = -NVG_PI*2; } else { while (da > 0.0f) da -= NVG_PI*2; } } // Split arc into max 90 degree segments. ndivs = nvg__maxi(1, nvg__mini((int)(nvg__absf(da) / (NVG_PI*0.5f) + 0.5f), 5)); hda = (da / (float)ndivs) / 2.0f; kappa = nvg__absf(4.0f / 3.0f * (1.0f - nvg__cosf(hda)) / nvg__sinf(hda)); if (dir == NVG_CCW) kappa = -kappa; nvals = 0; for (i = 0; i <= ndivs; i++) { a = a0 + da * (i/(float)ndivs); dx = nvg__cosf(a); dy = nvg__sinf(a); x = cx + dx*r; y = cy + dy*r; tanx = -dy*r*kappa; tany = dx*r*kappa; if (i == 0) { vals[nvals++] = (float)move; vals[nvals++] = x; vals[nvals++] = y; } else { vals[nvals++] = NVG_BEZIERTO; vals[nvals++] = px+ptanx; vals[nvals++] = py+ptany; vals[nvals++] = x-tanx; vals[nvals++] = y-tany; vals[nvals++] = x; vals[nvals++] = y; } px = x; py = y; ptanx = tanx; ptany = tany; } nvg__appendCommands(ctx, vals, nvals); } void nvgRect(NVGcontext* ctx, float x, float y, float w, float h) { float vals[] = { NVG_MOVETO, x,y, NVG_LINETO, x,y+h, NVG_LINETO, x+w,y+h, NVG_LINETO, x+w,y, NVG_CLOSE }; nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } void nvgRoundedRect(NVGcontext* ctx, float x, float y, float w, float h, float r) { nvgRoundedRectVarying(ctx, x, y, w, h, r, r, r, r); } void nvgRoundedRectVarying(NVGcontext* ctx, float x, float y, float w, float h, float radTopLeft, float radTopRight, float radBottomRight, float radBottomLeft) { if(radTopLeft < 0.1f && radTopRight < 0.1f && radBottomRight < 0.1f && radBottomLeft < 0.1f) { nvgRect(ctx, x, y, w, h); return; } else { float halfw = nvg__absf(w)*0.5f; float halfh = nvg__absf(h)*0.5f; float rxBL = nvg__minf(radBottomLeft, halfw) * nvg__signf(w), ryBL = nvg__minf(radBottomLeft, halfh) * nvg__signf(h); float rxBR = nvg__minf(radBottomRight, halfw) * nvg__signf(w), ryBR = nvg__minf(radBottomRight, halfh) * nvg__signf(h); float rxTR = nvg__minf(radTopRight, halfw) * nvg__signf(w), ryTR = nvg__minf(radTopRight, halfh) * nvg__signf(h); float rxTL = nvg__minf(radTopLeft, halfw) * nvg__signf(w), ryTL = nvg__minf(radTopLeft, halfh) * nvg__signf(h); float vals[] = { NVG_MOVETO, x, y + ryTL, NVG_LINETO, x, y + h - ryBL, NVG_BEZIERTO, x, y + h - ryBL*(1 - NVG_KAPPA90), x + rxBL*(1 - NVG_KAPPA90), y + h, x + rxBL, y + h, NVG_LINETO, x + w - rxBR, y + h, NVG_BEZIERTO, x + w - rxBR*(1 - NVG_KAPPA90), y + h, x + w, y + h - ryBR*(1 - NVG_KAPPA90), x + w, y + h - ryBR, NVG_LINETO, x + w, y + ryTR, NVG_BEZIERTO, x + w, y + ryTR*(1 - NVG_KAPPA90), x + w - rxTR*(1 - NVG_KAPPA90), y, x + w - rxTR, y, NVG_LINETO, x + rxTL, y, NVG_BEZIERTO, x + rxTL*(1 - NVG_KAPPA90), y, x, y + ryTL*(1 - NVG_KAPPA90), x, y + ryTL, NVG_CLOSE }; nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } } void nvgEllipse(NVGcontext* ctx, float cx, float cy, float rx, float ry) { float vals[] = { NVG_MOVETO, cx-rx, cy, NVG_BEZIERTO, cx-rx, cy+ry*NVG_KAPPA90, cx-rx*NVG_KAPPA90, cy+ry, cx, cy+ry, NVG_BEZIERTO, cx+rx*NVG_KAPPA90, cy+ry, cx+rx, cy+ry*NVG_KAPPA90, cx+rx, cy, NVG_BEZIERTO, cx+rx, cy-ry*NVG_KAPPA90, cx+rx*NVG_KAPPA90, cy-ry, cx, cy-ry, NVG_BEZIERTO, cx-rx*NVG_KAPPA90, cy-ry, cx-rx, cy-ry*NVG_KAPPA90, cx-rx, cy, NVG_CLOSE }; nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } void nvgCircle(NVGcontext* ctx, float cx, float cy, float r) { nvgEllipse(ctx, cx,cy, r,r); } void nvgDebugDumpPathCache(NVGcontext* ctx) { const NVGpath* path; int i, j; printf("Dumping %d cached paths\n", ctx->cache->npaths); for (i = 0; i < ctx->cache->npaths; i++) { path = &ctx->cache->paths[i]; printf(" - Path %d\n", i); if (path->nfill) { printf(" - fill: %d\n", path->nfill); for (j = 0; j < path->nfill; j++) printf("%f\t%f\n", path->fill[j].x, path->fill[j].y); } if (path->nstroke) { printf(" - stroke: %d\n", path->nstroke); for (j = 0; j < path->nstroke; j++) printf("%f\t%f\n", path->stroke[j].x, path->stroke[j].y); } } } void nvgFill(NVGcontext* ctx) { NVGstate* state = nvg__getState(ctx); const NVGpath* path; NVGpaint fillPaint = state->fill; int i; nvg__flattenPaths(ctx); if (ctx->params.edgeAntiAlias && state->shapeAntiAlias) nvg__expandFill(ctx, ctx->fringeWidth, NVG_MITER, 2.4f); else nvg__expandFill(ctx, 0.0f, NVG_MITER, 2.4f); // Apply global alpha fillPaint.innerColor.a *= state->alpha; fillPaint.outerColor.a *= state->alpha; ctx->params.renderFill(ctx->params.userPtr, &fillPaint, state->compositeOperation, &state->scissor, ctx->fringeWidth, ctx->cache->bounds, ctx->cache->paths, ctx->cache->npaths); // Count triangles for (i = 0; i < ctx->cache->npaths; i++) { path = &ctx->cache->paths[i]; ctx->fillTriCount += path->nfill-2; ctx->fillTriCount += path->nstroke-2; ctx->drawCallCount += 2; } } void nvgStroke(NVGcontext* ctx) { NVGstate* state = nvg__getState(ctx); float scale = nvg__getAverageScale(state->xform); float strokeWidth = nvg__clampf(state->strokeWidth * scale, 0.0f, 200.0f); NVGpaint strokePaint = state->stroke; const NVGpath* path; int i; if (strokeWidth < ctx->fringeWidth) { // If the stroke width is less than pixel size, use alpha to emulate coverage. // Since coverage is area, scale by alpha*alpha. float alpha = nvg__clampf(strokeWidth / ctx->fringeWidth, 0.0f, 1.0f); strokePaint.innerColor.a *= alpha*alpha; strokePaint.outerColor.a *= alpha*alpha; strokeWidth = ctx->fringeWidth; } // Apply global alpha strokePaint.innerColor.a *= state->alpha; strokePaint.outerColor.a *= state->alpha; nvg__flattenPaths(ctx); if (ctx->params.edgeAntiAlias && state->shapeAntiAlias) nvg__expandStroke(ctx, strokeWidth*0.5f, ctx->fringeWidth, state->lineCap, state->lineJoin, state->miterLimit); else nvg__expandStroke(ctx, strokeWidth*0.5f, 0.0f, state->lineCap, state->lineJoin, state->miterLimit); ctx->params.renderStroke(ctx->params.userPtr, &strokePaint, state->compositeOperation, &state->scissor, ctx->fringeWidth, strokeWidth, ctx->cache->paths, ctx->cache->npaths); // Count triangles for (i = 0; i < ctx->cache->npaths; i++) { path = &ctx->cache->paths[i]; ctx->strokeTriCount += path->nstroke-2; ctx->drawCallCount++; } } // Add fonts int nvgCreateFont(NVGcontext* ctx, const char* name, const char* filename) { return fonsAddFont(ctx->fs, name, filename, 0); } int nvgCreateFontAtIndex(NVGcontext* ctx, const char* name, const char* filename, const int fontIndex) { return fonsAddFont(ctx->fs, name, filename, fontIndex); } int nvgCreateFontMem(NVGcontext* ctx, const char* name, unsigned char* data, int ndata, int freeData) { return fonsAddFontMem(ctx->fs, name, data, ndata, freeData, 0); } int nvgCreateFontMemAtIndex(NVGcontext* ctx, const char* name, unsigned char* data, int ndata, int freeData, const int fontIndex) { return fonsAddFontMem(ctx->fs, name, data, ndata, freeData, fontIndex); } int nvgFindFont(NVGcontext* ctx, const char* name) { if (name == NULL) return -1; return fonsGetFontByName(ctx->fs, name); } int nvgAddFallbackFontId(NVGcontext* ctx, int baseFont, int fallbackFont) { if(baseFont == -1 || fallbackFont == -1) return 0; return fonsAddFallbackFont(ctx->fs, baseFont, fallbackFont); } int nvgAddFallbackFont(NVGcontext* ctx, const char* baseFont, const char* fallbackFont) { return nvgAddFallbackFontId(ctx, nvgFindFont(ctx, baseFont), nvgFindFont(ctx, fallbackFont)); } void nvgResetFallbackFontsId(NVGcontext* ctx, int baseFont) { fonsResetFallbackFont(ctx->fs, baseFont); } void nvgResetFallbackFonts(NVGcontext* ctx, const char* baseFont) { nvgResetFallbackFontsId(ctx, nvgFindFont(ctx, baseFont)); } // State setting void nvgFontSize(NVGcontext* ctx, float size) { NVGstate* state = nvg__getState(ctx); state->fontSize = size; } void nvgFontBlur(NVGcontext* ctx, float blur) { NVGstate* state = nvg__getState(ctx); state->fontBlur = blur; } void nvgTextLetterSpacing(NVGcontext* ctx, float spacing) { NVGstate* state = nvg__getState(ctx); state->letterSpacing = spacing; } void nvgTextLineHeight(NVGcontext* ctx, float lineHeight) { NVGstate* state = nvg__getState(ctx); state->lineHeight = lineHeight; } void nvgTextAlign(NVGcontext* ctx, int align) { NVGstate* state = nvg__getState(ctx); state->textAlign = align; } void nvgFontFaceId(NVGcontext* ctx, int font) { NVGstate* state = nvg__getState(ctx); state->fontId = font; } void nvgFontFace(NVGcontext* ctx, const char* font) { NVGstate* state = nvg__getState(ctx); state->fontId = fonsGetFontByName(ctx->fs, font); } static float nvg__quantize(float a, float d) { return ((int)(a / d + 0.5f)) * d; } static float nvg__getFontScale(NVGstate* state) { return nvg__minf(nvg__quantize(nvg__getAverageScale(state->xform), 0.01f), 4.0f); } static void nvg__flushTextTexture(NVGcontext* ctx) { int dirty[4]; if (fonsValidateTexture(ctx->fs, dirty)) { int fontImage = ctx->fontImages[ctx->fontImageIdx]; // Update texture if (fontImage != 0) { int iw, ih; const unsigned char* data = fonsGetTextureData(ctx->fs, &iw, &ih); int x = dirty[0]; int y = dirty[1]; int w = dirty[2] - dirty[0]; int h = dirty[3] - dirty[1]; ctx->params.renderUpdateTexture(ctx->params.userPtr, fontImage, x,y, w,h, data); } } } static int nvg__allocTextAtlas(NVGcontext* ctx) { int iw, ih; nvg__flushTextTexture(ctx); if (ctx->fontImageIdx >= NVG_MAX_FONTIMAGES-1) return 0; // if next fontImage already have a texture if (ctx->fontImages[ctx->fontImageIdx+1] != 0) nvgImageSize(ctx, ctx->fontImages[ctx->fontImageIdx+1], &iw, &ih); else { // calculate the new font image size and create it. nvgImageSize(ctx, ctx->fontImages[ctx->fontImageIdx], &iw, &ih); if (iw > ih) ih *= 2; else iw *= 2; if (iw > NVG_MAX_FONTIMAGE_SIZE || ih > NVG_MAX_FONTIMAGE_SIZE) iw = ih = NVG_MAX_FONTIMAGE_SIZE; ctx->fontImages[ctx->fontImageIdx+1] = ctx->params.renderCreateTexture(ctx->params.userPtr, NVG_TEXTURE_ALPHA, iw, ih, 0, NULL); } ++ctx->fontImageIdx; fonsResetAtlas(ctx->fs, iw, ih); return 1; } static void nvg__renderText(NVGcontext* ctx, NVGvertex* verts, int nverts) { NVGstate* state = nvg__getState(ctx); NVGpaint paint = state->fill; // Render triangles. paint.image = ctx->fontImages[ctx->fontImageIdx]; // Apply global alpha paint.innerColor.a *= state->alpha; paint.outerColor.a *= state->alpha; ctx->params.renderTriangles(ctx->params.userPtr, &paint, state->compositeOperation, &state->scissor, verts, nverts, ctx->fringeWidth); ctx->drawCallCount++; ctx->textTriCount += nverts/3; } static int nvg__isTransformFlipped(const float *xform) { float det = xform[0] * xform[3] - xform[2] * xform[1]; return( det < 0); } float nvgText(NVGcontext* ctx, float x, float y, const char* string, const char* end) { NVGstate* state = nvg__getState(ctx); FONStextIter iter, prevIter; FONSquad q; NVGvertex* verts; float scale = nvg__getFontScale(state) * ctx->devicePxRatio; float invscale = 1.0f / scale; int cverts = 0; int nverts = 0; int isFlipped = nvg__isTransformFlipped(state->xform); if (end == NULL) end = string + strlen(string); if (state->fontId == FONS_INVALID) return x; fonsSetSize(ctx->fs, state->fontSize*scale); fonsSetSpacing(ctx->fs, state->letterSpacing*scale); fonsSetBlur(ctx->fs, state->fontBlur*scale); fonsSetAlign(ctx->fs, state->textAlign); fonsSetFont(ctx->fs, state->fontId); cverts = nvg__maxi(2, (int)(end - string)) * 6; // conservative estimate. verts = nvg__allocTempVerts(ctx, cverts); if (verts == NULL) return x; fonsTextIterInit(ctx->fs, &iter, x*scale, y*scale, string, end, FONS_GLYPH_BITMAP_REQUIRED); prevIter = iter; while (fonsTextIterNext(ctx->fs, &iter, &q)) { float c[4*2]; if (iter.prevGlyphIndex == -1) { // can not retrieve glyph? if (nverts != 0) { nvg__renderText(ctx, verts, nverts); nverts = 0; } if (!nvg__allocTextAtlas(ctx)) break; // no memory :( iter = prevIter; fonsTextIterNext(ctx->fs, &iter, &q); // try again if (iter.prevGlyphIndex == -1) // still can not find glyph? break; } prevIter = iter; if(isFlipped) { float tmp; tmp = q.y0; q.y0 = q.y1; q.y1 = tmp; tmp = q.t0; q.t0 = q.t1; q.t1 = tmp; } // Transform corners. nvgTransformPoint(&c[0],&c[1], state->xform, q.x0*invscale, q.y0*invscale); nvgTransformPoint(&c[2],&c[3], state->xform, q.x1*invscale, q.y0*invscale); nvgTransformPoint(&c[4],&c[5], state->xform, q.x1*invscale, q.y1*invscale); nvgTransformPoint(&c[6],&c[7], state->xform, q.x0*invscale, q.y1*invscale); // Create triangles if (nverts+6 <= cverts) { nvg__vset(&verts[nverts], c[0], c[1], q.s0, q.t0); nverts++; nvg__vset(&verts[nverts], c[4], c[5], q.s1, q.t1); nverts++; nvg__vset(&verts[nverts], c[2], c[3], q.s1, q.t0); nverts++; nvg__vset(&verts[nverts], c[0], c[1], q.s0, q.t0); nverts++; nvg__vset(&verts[nverts], c[6], c[7], q.s0, q.t1); nverts++; nvg__vset(&verts[nverts], c[4], c[5], q.s1, q.t1); nverts++; } } // TODO: add back-end bit to do this just once per frame. nvg__flushTextTexture(ctx); nvg__renderText(ctx, verts, nverts); return iter.nextx / scale; } void nvgTextBox(NVGcontext* ctx, float x, float y, float breakRowWidth, const char* string, const char* end) { NVGstate* state = nvg__getState(ctx); NVGtextRow rows[2]; int nrows = 0, i; int oldAlign = state->textAlign; int haling = state->textAlign & (NVG_ALIGN_LEFT | NVG_ALIGN_CENTER | NVG_ALIGN_RIGHT); int valign = state->textAlign & (NVG_ALIGN_TOP | NVG_ALIGN_MIDDLE | NVG_ALIGN_BOTTOM | NVG_ALIGN_BASELINE); float lineh = 0; if (state->fontId == FONS_INVALID) return; nvgTextMetrics(ctx, NULL, NULL, &lineh); state->textAlign = NVG_ALIGN_LEFT | valign; while ((nrows = nvgTextBreakLines(ctx, string, end, breakRowWidth, rows, 2))) { for (i = 0; i < nrows; i++) { NVGtextRow* row = &rows[i]; if (haling & NVG_ALIGN_LEFT) nvgText(ctx, x, y, row->start, row->end); else if (haling & NVG_ALIGN_CENTER) nvgText(ctx, x + breakRowWidth*0.5f - row->width*0.5f, y, row->start, row->end); else if (haling & NVG_ALIGN_RIGHT) nvgText(ctx, x + breakRowWidth - row->width, y, row->start, row->end); y += lineh * state->lineHeight; } string = rows[nrows-1].next; } state->textAlign = oldAlign; } int nvgTextGlyphPositions(NVGcontext* ctx, float x, float y, const char* string, const char* end, NVGglyphPosition* positions, int maxPositions) { NVGstate* state = nvg__getState(ctx); float scale = nvg__getFontScale(state) * ctx->devicePxRatio; float invscale = 1.0f / scale; FONStextIter iter, prevIter; FONSquad q; int npos = 0; if (state->fontId == FONS_INVALID) return 0; if (end == NULL) end = string + strlen(string); if (string == end) return 0; fonsSetSize(ctx->fs, state->fontSize*scale); fonsSetSpacing(ctx->fs, state->letterSpacing*scale); fonsSetBlur(ctx->fs, state->fontBlur*scale); fonsSetAlign(ctx->fs, state->textAlign); fonsSetFont(ctx->fs, state->fontId); fonsTextIterInit(ctx->fs, &iter, x*scale, y*scale, string, end, FONS_GLYPH_BITMAP_OPTIONAL); prevIter = iter; while (fonsTextIterNext(ctx->fs, &iter, &q)) { if (iter.prevGlyphIndex < 0 && nvg__allocTextAtlas(ctx)) { // can not retrieve glyph? iter = prevIter; fonsTextIterNext(ctx->fs, &iter, &q); // try again } prevIter = iter; positions[npos].str = iter.str; positions[npos].x = iter.x * invscale; positions[npos].minx = nvg__minf(iter.x, q.x0) * invscale; positions[npos].maxx = nvg__maxf(iter.nextx, q.x1) * invscale; npos++; if (npos >= maxPositions) break; } return npos; } enum NVGcodepointType { NVG_SPACE, NVG_NEWLINE, NVG_CHAR, NVG_CJK_CHAR, }; int nvgTextBreakLines(NVGcontext* ctx, const char* string, const char* end, float breakRowWidth, NVGtextRow* rows, int maxRows) { NVGstate* state = nvg__getState(ctx); float scale = nvg__getFontScale(state) * ctx->devicePxRatio; float invscale = 1.0f / scale; FONStextIter iter, prevIter; FONSquad q; int nrows = 0; float rowStartX = 0; float rowWidth = 0; float rowMinX = 0; float rowMaxX = 0; const char* rowStart = NULL; const char* rowEnd = NULL; const char* wordStart = NULL; float wordStartX = 0; float wordMinX = 0; const char* breakEnd = NULL; float breakWidth = 0; float breakMaxX = 0; int type = NVG_SPACE, ptype = NVG_SPACE; unsigned int pcodepoint = 0; if (maxRows == 0) return 0; if (state->fontId == FONS_INVALID) return 0; if (end == NULL) end = string + strlen(string); if (string == end) return 0; fonsSetSize(ctx->fs, state->fontSize*scale); fonsSetSpacing(ctx->fs, state->letterSpacing*scale); fonsSetBlur(ctx->fs, state->fontBlur*scale); fonsSetAlign(ctx->fs, state->textAlign); fonsSetFont(ctx->fs, state->fontId); breakRowWidth *= scale; fonsTextIterInit(ctx->fs, &iter, 0, 0, string, end, FONS_GLYPH_BITMAP_OPTIONAL); prevIter = iter; while (fonsTextIterNext(ctx->fs, &iter, &q)) { if (iter.prevGlyphIndex < 0 && nvg__allocTextAtlas(ctx)) { // can not retrieve glyph? iter = prevIter; fonsTextIterNext(ctx->fs, &iter, &q); // try again } prevIter = iter; switch (iter.codepoint) { case 9: // \t case 11: // \v case 12: // \f case 32: // space case 0x00a0: // NBSP type = NVG_SPACE; break; case 10: // \n type = pcodepoint == 13 ? NVG_SPACE : NVG_NEWLINE; break; case 13: // \r type = pcodepoint == 10 ? NVG_SPACE : NVG_NEWLINE; break; case 0x0085: // NEL type = NVG_NEWLINE; break; default: if ((iter.codepoint >= 0x4E00 && iter.codepoint <= 0x9FFF) || (iter.codepoint >= 0x3000 && iter.codepoint <= 0x30FF) || (iter.codepoint >= 0xFF00 && iter.codepoint <= 0xFFEF) || (iter.codepoint >= 0x1100 && iter.codepoint <= 0x11FF) || (iter.codepoint >= 0x3130 && iter.codepoint <= 0x318F) || (iter.codepoint >= 0xAC00 && iter.codepoint <= 0xD7AF)) type = NVG_CJK_CHAR; else type = NVG_CHAR; break; } if (type == NVG_NEWLINE) { // Always handle new lines. rows[nrows].start = rowStart != NULL ? rowStart : iter.str; rows[nrows].end = rowEnd != NULL ? rowEnd : iter.str; rows[nrows].width = rowWidth * invscale; rows[nrows].minx = rowMinX * invscale; rows[nrows].maxx = rowMaxX * invscale; rows[nrows].next = iter.next; nrows++; if (nrows >= maxRows) return nrows; // Set null break point breakEnd = rowStart; breakWidth = 0.0; breakMaxX = 0.0; // Indicate to skip the white space at the beginning of the row. rowStart = NULL; rowEnd = NULL; rowWidth = 0; rowMinX = rowMaxX = 0; } else { if (rowStart == NULL) { // Skip white space until the beginning of the line if (type == NVG_CHAR || type == NVG_CJK_CHAR) { // The current char is the row so far rowStartX = iter.x; rowStart = iter.str; rowEnd = iter.next; rowWidth = iter.nextx - rowStartX; rowMinX = q.x0 - rowStartX; rowMaxX = q.x1 - rowStartX; wordStart = iter.str; wordStartX = iter.x; wordMinX = q.x0 - rowStartX; // Set null break point breakEnd = rowStart; breakWidth = 0.0; breakMaxX = 0.0; } } else { float nextWidth = iter.nextx - rowStartX; // track last non-white space character if (type == NVG_CHAR || type == NVG_CJK_CHAR) { rowEnd = iter.next; rowWidth = iter.nextx - rowStartX; rowMaxX = q.x1 - rowStartX; } // track last end of a word if (((ptype == NVG_CHAR || ptype == NVG_CJK_CHAR) && type == NVG_SPACE) || type == NVG_CJK_CHAR) { breakEnd = iter.str; breakWidth = rowWidth; breakMaxX = rowMaxX; } // track last beginning of a word if ((ptype == NVG_SPACE && (type == NVG_CHAR || type == NVG_CJK_CHAR)) || type == NVG_CJK_CHAR) { wordStart = iter.str; wordStartX = iter.x; wordMinX = q.x0; } // Break to new line when a character is beyond break width. if ((type == NVG_CHAR || type == NVG_CJK_CHAR) && nextWidth > breakRowWidth) { // The run length is too long, need to break to new line. if (breakEnd == rowStart) { // The current word is longer than the row length, just break it from here. rows[nrows].start = rowStart; rows[nrows].end = iter.str; rows[nrows].width = rowWidth * invscale; rows[nrows].minx = rowMinX * invscale; rows[nrows].maxx = rowMaxX * invscale; rows[nrows].next = iter.str; nrows++; if (nrows >= maxRows) return nrows; rowStartX = iter.x; rowStart = iter.str; rowEnd = iter.next; rowWidth = iter.nextx - rowStartX; rowMinX = q.x0 - rowStartX; rowMaxX = q.x1 - rowStartX; wordStart = iter.str; wordStartX = iter.x; wordMinX = q.x0 - rowStartX; } else { // Break the line from the end of the last word, and start new line from the beginning of the new. rows[nrows].start = rowStart; rows[nrows].end = breakEnd; rows[nrows].width = breakWidth * invscale; rows[nrows].minx = rowMinX * invscale; rows[nrows].maxx = breakMaxX * invscale; rows[nrows].next = wordStart; nrows++; if (nrows >= maxRows) return nrows; // Update row rowStartX = wordStartX; rowStart = wordStart; rowEnd = iter.next; rowWidth = iter.nextx - rowStartX; rowMinX = wordMinX - rowStartX; rowMaxX = q.x1 - rowStartX; } // Set null break point breakEnd = rowStart; breakWidth = 0.0; breakMaxX = 0.0; } } } pcodepoint = iter.codepoint; ptype = type; } // Break the line from the end of the last word, and start new line from the beginning of the new. if (rowStart != NULL) { rows[nrows].start = rowStart; rows[nrows].end = rowEnd; rows[nrows].width = rowWidth * invscale; rows[nrows].minx = rowMinX * invscale; rows[nrows].maxx = rowMaxX * invscale; rows[nrows].next = end; nrows++; } return nrows; } float nvgTextBounds(NVGcontext* ctx, float x, float y, const char* string, const char* end, float* bounds) { NVGstate* state = nvg__getState(ctx); float scale = nvg__getFontScale(state) * ctx->devicePxRatio; float invscale = 1.0f / scale; float width; if (state->fontId == FONS_INVALID) return 0; fonsSetSize(ctx->fs, state->fontSize*scale); fonsSetSpacing(ctx->fs, state->letterSpacing*scale); fonsSetBlur(ctx->fs, state->fontBlur*scale); fonsSetAlign(ctx->fs, state->textAlign); fonsSetFont(ctx->fs, state->fontId); width = fonsTextBounds(ctx->fs, x*scale, y*scale, string, end, bounds); if (bounds != NULL) { // Use line bounds for height. fonsLineBounds(ctx->fs, y*scale, &bounds[1], &bounds[3]); bounds[0] *= invscale; bounds[1] *= invscale; bounds[2] *= invscale; bounds[3] *= invscale; } return width * invscale; } void nvgTextBoxBounds(NVGcontext* ctx, float x, float y, float breakRowWidth, const char* string, const char* end, float* bounds) { NVGstate* state = nvg__getState(ctx); NVGtextRow rows[2]; float scale = nvg__getFontScale(state) * ctx->devicePxRatio; float invscale = 1.0f / scale; int nrows = 0, i; int oldAlign = state->textAlign; int haling = state->textAlign & (NVG_ALIGN_LEFT | NVG_ALIGN_CENTER | NVG_ALIGN_RIGHT); int valign = state->textAlign & (NVG_ALIGN_TOP | NVG_ALIGN_MIDDLE | NVG_ALIGN_BOTTOM | NVG_ALIGN_BASELINE); float lineh = 0, rminy = 0, rmaxy = 0; float minx, miny, maxx, maxy; if (state->fontId == FONS_INVALID) { if (bounds != NULL) bounds[0] = bounds[1] = bounds[2] = bounds[3] = 0.0f; return; } nvgTextMetrics(ctx, NULL, NULL, &lineh); state->textAlign = NVG_ALIGN_LEFT | valign; minx = maxx = x; miny = maxy = y; fonsSetSize(ctx->fs, state->fontSize*scale); fonsSetSpacing(ctx->fs, state->letterSpacing*scale); fonsSetBlur(ctx->fs, state->fontBlur*scale); fonsSetAlign(ctx->fs, state->textAlign); fonsSetFont(ctx->fs, state->fontId); fonsLineBounds(ctx->fs, 0, &rminy, &rmaxy); rminy *= invscale; rmaxy *= invscale; while ((nrows = nvgTextBreakLines(ctx, string, end, breakRowWidth, rows, 2))) { for (i = 0; i < nrows; i++) { NVGtextRow* row = &rows[i]; float rminx, rmaxx, dx = 0; // Horizontal bounds if (haling & NVG_ALIGN_LEFT) dx = 0; else if (haling & NVG_ALIGN_CENTER) dx = breakRowWidth*0.5f - row->width*0.5f; else if (haling & NVG_ALIGN_RIGHT) dx = breakRowWidth - row->width; rminx = x + row->minx + dx; rmaxx = x + row->maxx + dx; minx = nvg__minf(minx, rminx); maxx = nvg__maxf(maxx, rmaxx); // Vertical bounds. miny = nvg__minf(miny, y + rminy); maxy = nvg__maxf(maxy, y + rmaxy); y += lineh * state->lineHeight; } string = rows[nrows-1].next; } state->textAlign = oldAlign; if (bounds != NULL) { bounds[0] = minx; bounds[1] = miny; bounds[2] = maxx; bounds[3] = maxy; } } void nvgTextMetrics(NVGcontext* ctx, float* ascender, float* descender, float* lineh) { NVGstate* state = nvg__getState(ctx); float scale = nvg__getFontScale(state) * ctx->devicePxRatio; float invscale = 1.0f / scale; if (state->fontId == FONS_INVALID) return; fonsSetSize(ctx->fs, state->fontSize*scale); fonsSetSpacing(ctx->fs, state->letterSpacing*scale); fonsSetBlur(ctx->fs, state->fontBlur*scale); fonsSetAlign(ctx->fs, state->textAlign); fonsSetFont(ctx->fs, state->fontId); fonsVertMetrics(ctx->fs, ascender, descender, lineh); if (ascender != NULL) *ascender *= invscale; if (descender != NULL) *descender *= invscale; if (lineh != NULL) *lineh *= invscale; } // vim: ft=c nu noet ts=4 vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/src/nanovg.h000066400000000000000000000677021461511344300300500ustar00rootroot00000000000000// // Copyright (c) 2013 Mikko Mononen memon@inside.org // // This software is provided 'as-is', without any express or implied // warranty. In no event will the authors be held liable for any damages // arising from the use of this software. // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it // freely, subject to the following restrictions: // 1. The origin of this software must not be misrepresented; you must not // claim that you wrote the original software. If you use this software // in a product, an acknowledgment in the product documentation would be // appreciated but is not required. // 2. Altered source versions must be plainly marked as such, and must not be // misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. // #ifndef NANOVG_H #define NANOVG_H #ifdef __cplusplus extern "C" { #endif #define NVG_PI 3.14159265358979323846264338327f #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union #endif typedef struct NVGcontext NVGcontext; struct NVGcolor { union { float rgba[4]; struct { float r,g,b,a; }; }; }; typedef struct NVGcolor NVGcolor; struct NVGpaint { float xform[6]; float extent[2]; float radius; float feather; NVGcolor innerColor; NVGcolor outerColor; int image; }; typedef struct NVGpaint NVGpaint; enum NVGwinding { NVG_CCW = 1, // Winding for solid shapes NVG_CW = 2, // Winding for holes }; enum NVGsolidity { NVG_SOLID = 1, // CCW NVG_HOLE = 2, // CW }; enum NVGlineCap { NVG_BUTT, NVG_ROUND, NVG_SQUARE, NVG_BEVEL, NVG_MITER, }; enum NVGalign { // Horizontal align NVG_ALIGN_LEFT = 1<<0, // Default, align text horizontally to left. NVG_ALIGN_CENTER = 1<<1, // Align text horizontally to center. NVG_ALIGN_RIGHT = 1<<2, // Align text horizontally to right. // Vertical align NVG_ALIGN_TOP = 1<<3, // Align text vertically to top. NVG_ALIGN_MIDDLE = 1<<4, // Align text vertically to middle. NVG_ALIGN_BOTTOM = 1<<5, // Align text vertically to bottom. NVG_ALIGN_BASELINE = 1<<6, // Default, align text vertically to baseline. }; enum NVGblendFactor { NVG_ZERO = 1<<0, NVG_ONE = 1<<1, NVG_SRC_COLOR = 1<<2, NVG_ONE_MINUS_SRC_COLOR = 1<<3, NVG_DST_COLOR = 1<<4, NVG_ONE_MINUS_DST_COLOR = 1<<5, NVG_SRC_ALPHA = 1<<6, NVG_ONE_MINUS_SRC_ALPHA = 1<<7, NVG_DST_ALPHA = 1<<8, NVG_ONE_MINUS_DST_ALPHA = 1<<9, NVG_SRC_ALPHA_SATURATE = 1<<10, }; enum NVGcompositeOperation { NVG_SOURCE_OVER, NVG_SOURCE_IN, NVG_SOURCE_OUT, NVG_ATOP, NVG_DESTINATION_OVER, NVG_DESTINATION_IN, NVG_DESTINATION_OUT, NVG_DESTINATION_ATOP, NVG_LIGHTER, NVG_COPY, NVG_XOR, }; struct NVGcompositeOperationState { int srcRGB; int dstRGB; int srcAlpha; int dstAlpha; }; typedef struct NVGcompositeOperationState NVGcompositeOperationState; struct NVGglyphPosition { const char* str; // Position of the glyph in the input string. float x; // The x-coordinate of the logical glyph position. float minx, maxx; // The bounds of the glyph shape. }; typedef struct NVGglyphPosition NVGglyphPosition; struct NVGtextRow { const char* start; // Pointer to the input text where the row starts. const char* end; // Pointer to the input text where the row ends (one past the last character). const char* next; // Pointer to the beginning of the next row. float width; // Logical width of the row. float minx, maxx; // Actual bounds of the row. Logical with and bounds can differ because of kerning and some parts over extending. }; typedef struct NVGtextRow NVGtextRow; enum NVGimageFlags { NVG_IMAGE_GENERATE_MIPMAPS = 1<<0, // Generate mipmaps during creation of the image. NVG_IMAGE_REPEATX = 1<<1, // Repeat image in X direction. NVG_IMAGE_REPEATY = 1<<2, // Repeat image in Y direction. NVG_IMAGE_FLIPY = 1<<3, // Flips (inverses) image in Y direction when rendered. NVG_IMAGE_PREMULTIPLIED = 1<<4, // Image data has premultiplied alpha. NVG_IMAGE_NEAREST = 1<<5, // Image interpolation is Nearest instead Linear }; // Begin drawing a new frame // Calls to nanovg drawing API should be wrapped in nvgBeginFrame() & nvgEndFrame() // nvgBeginFrame() defines the size of the window to render to in relation currently // set viewport (i.e. glViewport on GL backends). Device pixel ration allows to // control the rendering on Hi-DPI devices. // For example, GLFW returns two dimension for an opened window: window size and // frame buffer size. In that case you would set windowWidth/Height to the window size // devicePixelRatio to: frameBufferWidth / windowWidth. void nvgBeginFrame(NVGcontext* ctx, float windowWidth, float windowHeight, float devicePixelRatio); // Cancels drawing the current frame. void nvgCancelFrame(NVGcontext* ctx); // Ends drawing flushing remaining render state. void nvgEndFrame(NVGcontext* ctx); // // Composite operation // // The composite operations in NanoVG are modeled after HTML Canvas API, and // the blend func is based on OpenGL (see corresponding manuals for more info). // The colors in the blending state have premultiplied alpha. // Sets the composite operation. The op parameter should be one of NVGcompositeOperation. void nvgGlobalCompositeOperation(NVGcontext* ctx, int op); // Sets the composite operation with custom pixel arithmetic. The parameters should be one of NVGblendFactor. void nvgGlobalCompositeBlendFunc(NVGcontext* ctx, int sfactor, int dfactor); // Sets the composite operation with custom pixel arithmetic for RGB and alpha components separately. The parameters should be one of NVGblendFactor. void nvgGlobalCompositeBlendFuncSeparate(NVGcontext* ctx, int srcRGB, int dstRGB, int srcAlpha, int dstAlpha); // // Color utils // // Colors in NanoVG are stored as unsigned ints in ABGR format. // Returns a color value from red, green, blue values. Alpha will be set to 255 (1.0f). NVGcolor nvgRGB(unsigned char r, unsigned char g, unsigned char b); // Returns a color value from red, green, blue values. Alpha will be set to 1.0f. NVGcolor nvgRGBf(float r, float g, float b); // Returns a color value from red, green, blue and alpha values. NVGcolor nvgRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Returns a color value from red, green, blue and alpha values. NVGcolor nvgRGBAf(float r, float g, float b, float a); // Linearly interpolates from color c0 to c1, and returns resulting color value. NVGcolor nvgLerpRGBA(NVGcolor c0, NVGcolor c1, float u); // Sets transparency of a color value. NVGcolor nvgTransRGBA(NVGcolor c0, unsigned char a); // Sets transparency of a color value. NVGcolor nvgTransRGBAf(NVGcolor c0, float a); // Returns color value specified by hue, saturation and lightness. // HSL values are all in range [0..1], alpha will be set to 255. NVGcolor nvgHSL(float h, float s, float l); // Returns color value specified by hue, saturation and lightness and alpha. // HSL values are all in range [0..1], alpha in range [0..255] NVGcolor nvgHSLA(float h, float s, float l, unsigned char a); // // State Handling // // NanoVG contains state which represents how paths will be rendered. // The state contains transform, fill and stroke styles, text and font styles, // and scissor clipping. // Pushes and saves the current render state into a state stack. // A matching nvgRestore() must be used to restore the state. void nvgSave(NVGcontext* ctx); // Pops and restores current render state. void nvgRestore(NVGcontext* ctx); // Resets current render state to default values. Does not affect the render state stack. void nvgReset(NVGcontext* ctx); // // Render styles // // Fill and stroke render style can be either a solid color or a paint which is a gradient or a pattern. // Solid color is simply defined as a color value, different kinds of paints can be created // using nvgLinearGradient(), nvgBoxGradient(), nvgRadialGradient() and nvgImagePattern(). // // Current render style can be saved and restored using nvgSave() and nvgRestore(). // Sets whether to draw antialias for nvgStroke() and nvgFill(). It's enabled by default. void nvgShapeAntiAlias(NVGcontext* ctx, int enabled); // Sets current stroke style to a solid color. void nvgStrokeColor(NVGcontext* ctx, NVGcolor color); // Sets current stroke style to a paint, which can be a one of the gradients or a pattern. void nvgStrokePaint(NVGcontext* ctx, NVGpaint paint); // Sets current fill style to a solid color. void nvgFillColor(NVGcontext* ctx, NVGcolor color); // Sets current fill style to a paint, which can be a one of the gradients or a pattern. void nvgFillPaint(NVGcontext* ctx, NVGpaint paint); // Sets the miter limit of the stroke style. // Miter limit controls when a sharp corner is beveled. void nvgMiterLimit(NVGcontext* ctx, float limit); // Sets the stroke width of the stroke style. void nvgStrokeWidth(NVGcontext* ctx, float size); // Sets how the end of the line (cap) is drawn, // Can be one of: NVG_BUTT (default), NVG_ROUND, NVG_SQUARE. void nvgLineCap(NVGcontext* ctx, int cap); // Sets how sharp path corners are drawn. // Can be one of NVG_MITER (default), NVG_ROUND, NVG_BEVEL. void nvgLineJoin(NVGcontext* ctx, int join); // Sets the transparency applied to all rendered shapes. // Already transparent paths will get proportionally more transparent as well. void nvgGlobalAlpha(NVGcontext* ctx, float alpha); // // Transforms // // The paths, gradients, patterns and scissor region are transformed by an transformation // matrix at the time when they are passed to the API. // The current transformation matrix is a affine matrix: // [sx kx tx] // [ky sy ty] // [ 0 0 1] // Where: sx,sy define scaling, kx,ky skewing, and tx,ty translation. // The last row is assumed to be 0,0,1 and is not stored. // // Apart from nvgResetTransform(), each transformation function first creates // specific transformation matrix and pre-multiplies the current transformation by it. // // Current coordinate system (transformation) can be saved and restored using nvgSave() and nvgRestore(). // Resets current transform to a identity matrix. void nvgResetTransform(NVGcontext* ctx); // Premultiplies current coordinate system by specified matrix. // The parameters are interpreted as matrix as follows: // [a c e] // [b d f] // [0 0 1] void nvgTransform(NVGcontext* ctx, float a, float b, float c, float d, float e, float f); // Translates current coordinate system. void nvgTranslate(NVGcontext* ctx, float x, float y); // Rotates current coordinate system. Angle is specified in radians. void nvgRotate(NVGcontext* ctx, float angle); // Skews the current coordinate system along X axis. Angle is specified in radians. void nvgSkewX(NVGcontext* ctx, float angle); // Skews the current coordinate system along Y axis. Angle is specified in radians. void nvgSkewY(NVGcontext* ctx, float angle); // Scales the current coordinate system. void nvgScale(NVGcontext* ctx, float x, float y); // Stores the top part (a-f) of the current transformation matrix in to the specified buffer. // [a c e] // [b d f] // [0 0 1] // There should be space for 6 floats in the return buffer for the values a-f. void nvgCurrentTransform(NVGcontext* ctx, float* xform); // The following functions can be used to make calculations on 2x3 transformation matrices. // A 2x3 matrix is represented as float[6]. // Sets the transform to identity matrix. void nvgTransformIdentity(float* dst); // Sets the transform to translation matrix matrix. void nvgTransformTranslate(float* dst, float tx, float ty); // Sets the transform to scale matrix. void nvgTransformScale(float* dst, float sx, float sy); // Sets the transform to rotate matrix. Angle is specified in radians. void nvgTransformRotate(float* dst, float a); // Sets the transform to skew-x matrix. Angle is specified in radians. void nvgTransformSkewX(float* dst, float a); // Sets the transform to skew-y matrix. Angle is specified in radians. void nvgTransformSkewY(float* dst, float a); // Sets the transform to the result of multiplication of two transforms, of A = A*B. void nvgTransformMultiply(float* dst, const float* src); // Sets the transform to the result of multiplication of two transforms, of A = B*A. void nvgTransformPremultiply(float* dst, const float* src); // Sets the destination to inverse of specified transform. // Returns 1 if the inverse could be calculated, else 0. int nvgTransformInverse(float* dst, const float* src); // Transform a point by given transform. void nvgTransformPoint(float* dstx, float* dsty, const float* xform, float srcx, float srcy); // Converts degrees to radians and vice versa. float nvgDegToRad(float deg); float nvgRadToDeg(float rad); // // Images // // NanoVG allows you to load jpg, png, psd, tga, pic and gif files to be used for rendering. // In addition you can upload your own image. The image loading is provided by stb_image. // The parameter imageFlags is combination of flags defined in NVGimageFlags. // Creates image by loading it from the disk from specified file name. // Returns handle to the image. int nvgCreateImage(NVGcontext* ctx, const char* filename, int imageFlags); // Creates image by loading it from the specified chunk of memory. // Returns handle to the image. int nvgCreateImageMem(NVGcontext* ctx, int imageFlags, unsigned char* data, int ndata); // Creates image from specified image data. // Returns handle to the image. int nvgCreateImageRGBA(NVGcontext* ctx, int w, int h, int imageFlags, const unsigned char* data); // Updates image data specified by image handle. void nvgUpdateImage(NVGcontext* ctx, int image, const unsigned char* data); // Returns the dimensions of a created image. void nvgImageSize(NVGcontext* ctx, int image, int* w, int* h); // Deletes created image. void nvgDeleteImage(NVGcontext* ctx, int image); // // Paints // // NanoVG supports four types of paints: linear gradient, box gradient, radial gradient and image pattern. // These can be used as paints for strokes and fills. // Creates and returns a linear gradient. Parameters (sx,sy)-(ex,ey) specify the start and end coordinates // of the linear gradient, icol specifies the start color and ocol the end color. // The gradient is transformed by the current transform when it is passed to nvgFillPaint() or nvgStrokePaint(). NVGpaint nvgLinearGradient(NVGcontext* ctx, float sx, float sy, float ex, float ey, NVGcolor icol, NVGcolor ocol); // Creates and returns a box gradient. Box gradient is a feathered rounded rectangle, it is useful for rendering // drop shadows or highlights for boxes. Parameters (x,y) define the top-left corner of the rectangle, // (w,h) define the size of the rectangle, r defines the corner radius, and f feather. Feather defines how blurry // the border of the rectangle is. Parameter icol specifies the inner color and ocol the outer color of the gradient. // The gradient is transformed by the current transform when it is passed to nvgFillPaint() or nvgStrokePaint(). NVGpaint nvgBoxGradient(NVGcontext* ctx, float x, float y, float w, float h, float r, float f, NVGcolor icol, NVGcolor ocol); // Creates and returns a radial gradient. Parameters (cx,cy) specify the center, inr and outr specify // the inner and outer radius of the gradient, icol specifies the start color and ocol the end color. // The gradient is transformed by the current transform when it is passed to nvgFillPaint() or nvgStrokePaint(). NVGpaint nvgRadialGradient(NVGcontext* ctx, float cx, float cy, float inr, float outr, NVGcolor icol, NVGcolor ocol); // Creates and returns an image pattern. Parameters (ox,oy) specify the left-top location of the image pattern, // (ex,ey) the size of one image, angle rotation around the top-left corner, image is handle to the image to render. // The gradient is transformed by the current transform when it is passed to nvgFillPaint() or nvgStrokePaint(). NVGpaint nvgImagePattern(NVGcontext* ctx, float ox, float oy, float ex, float ey, float angle, int image, float alpha); // // Scissoring // // Scissoring allows you to clip the rendering into a rectangle. This is useful for various // user interface cases like rendering a text edit or a timeline. // Sets the current scissor rectangle. // The scissor rectangle is transformed by the current transform. void nvgScissor(NVGcontext* ctx, float x, float y, float w, float h); // Intersects current scissor rectangle with the specified rectangle. // The scissor rectangle is transformed by the current transform. // Note: in case the rotation of previous scissor rect differs from // the current one, the intersection will be done between the specified // rectangle and the previous scissor rectangle transformed in the current // transform space. The resulting shape is always rectangle. void nvgIntersectScissor(NVGcontext* ctx, float x, float y, float w, float h); // Reset and disables scissoring. void nvgResetScissor(NVGcontext* ctx); // // Paths // // Drawing a new shape starts with nvgBeginPath(), it clears all the currently defined paths. // Then you define one or more paths and sub-paths which describe the shape. The are functions // to draw common shapes like rectangles and circles, and lower level step-by-step functions, // which allow to define a path curve by curve. // // NanoVG uses even-odd fill rule to draw the shapes. Solid shapes should have counter clockwise // winding and holes should have counter clockwise order. To specify winding of a path you can // call nvgPathWinding(). This is useful especially for the common shapes, which are drawn CCW. // // Finally you can fill the path using current fill style by calling nvgFill(), and stroke it // with current stroke style by calling nvgStroke(). // // The curve segments and sub-paths are transformed by the current transform. // Clears the current path and sub-paths. void nvgBeginPath(NVGcontext* ctx); // Starts new sub-path with specified point as first point. void nvgMoveTo(NVGcontext* ctx, float x, float y); // Adds line segment from the last point in the path to the specified point. void nvgLineTo(NVGcontext* ctx, float x, float y); // Adds cubic bezier segment from last point in the path via two control points to the specified point. void nvgBezierTo(NVGcontext* ctx, float c1x, float c1y, float c2x, float c2y, float x, float y); // Adds quadratic bezier segment from last point in the path via a control point to the specified point. void nvgQuadTo(NVGcontext* ctx, float cx, float cy, float x, float y); // Adds an arc segment at the corner defined by the last path point, and two specified points. void nvgArcTo(NVGcontext* ctx, float x1, float y1, float x2, float y2, float radius); // Closes current sub-path with a line segment. void nvgClosePath(NVGcontext* ctx); // Sets the current sub-path winding, see NVGwinding and NVGsolidity. void nvgPathWinding(NVGcontext* ctx, int dir); // Creates new circle arc shaped sub-path. The arc center is at cx,cy, the arc radius is r, // and the arc is drawn from angle a0 to a1, and swept in direction dir (NVG_CCW, or NVG_CW). // Angles are specified in radians. void nvgArc(NVGcontext* ctx, float cx, float cy, float r, float a0, float a1, int dir); // Creates new rectangle shaped sub-path. void nvgRect(NVGcontext* ctx, float x, float y, float w, float h); // Creates new rounded rectangle shaped sub-path. void nvgRoundedRect(NVGcontext* ctx, float x, float y, float w, float h, float r); // Creates new rounded rectangle shaped sub-path with varying radii for each corner. void nvgRoundedRectVarying(NVGcontext* ctx, float x, float y, float w, float h, float radTopLeft, float radTopRight, float radBottomRight, float radBottomLeft); // Creates new ellipse shaped sub-path. void nvgEllipse(NVGcontext* ctx, float cx, float cy, float rx, float ry); // Creates new circle shaped sub-path. void nvgCircle(NVGcontext* ctx, float cx, float cy, float r); // Fills the current path with current fill style. void nvgFill(NVGcontext* ctx); // Fills the current path with current stroke style. void nvgStroke(NVGcontext* ctx); // // Text // // NanoVG allows you to load .ttf files and use the font to render text. // // The appearance of the text can be defined by setting the current text style // and by specifying the fill color. Common text and font settings such as // font size, letter spacing and text align are supported. Font blur allows you // to create simple text effects such as drop shadows. // // At render time the font face can be set based on the font handles or name. // // Font measure functions return values in local space, the calculations are // carried in the same resolution as the final rendering. This is done because // the text glyph positions are snapped to the nearest pixels sharp rendering. // // The local space means that values are not rotated or scale as per the current // transformation. For example if you set font size to 12, which would mean that // line height is 16, then regardless of the current scaling and rotation, the // returned line height is always 16. Some measures may vary because of the scaling // since aforementioned pixel snapping. // // While this may sound a little odd, the setup allows you to always render the // same way regardless of scaling. I.e. following works regardless of scaling: // // const char* txt = "Text me up."; // nvgTextBounds(vg, x,y, txt, NULL, bounds); // nvgBeginPath(vg); // nvgRoundedRect(vg, bounds[0],bounds[1], bounds[2]-bounds[0], bounds[3]-bounds[1]); // nvgFill(vg); // // Note: currently only solid color fill is supported for text. // Creates font by loading it from the disk from specified file name. // Returns handle to the font. int nvgCreateFont(NVGcontext* ctx, const char* name, const char* filename); // fontIndex specifies which font face to load from a .ttf/.ttc file. int nvgCreateFontAtIndex(NVGcontext* ctx, const char* name, const char* filename, const int fontIndex); // Creates font by loading it from the specified memory chunk. // Returns handle to the font. int nvgCreateFontMem(NVGcontext* ctx, const char* name, unsigned char* data, int ndata, int freeData); // fontIndex specifies which font face to load from a .ttf/.ttc file. int nvgCreateFontMemAtIndex(NVGcontext* ctx, const char* name, unsigned char* data, int ndata, int freeData, const int fontIndex); // Finds a loaded font of specified name, and returns handle to it, or -1 if the font is not found. int nvgFindFont(NVGcontext* ctx, const char* name); // Adds a fallback font by handle. int nvgAddFallbackFontId(NVGcontext* ctx, int baseFont, int fallbackFont); // Adds a fallback font by name. int nvgAddFallbackFont(NVGcontext* ctx, const char* baseFont, const char* fallbackFont); // Resets fallback fonts by handle. void nvgResetFallbackFontsId(NVGcontext* ctx, int baseFont); // Resets fallback fonts by name. void nvgResetFallbackFonts(NVGcontext* ctx, const char* baseFont); // Sets the font size of current text style. void nvgFontSize(NVGcontext* ctx, float size); // Sets the blur of current text style. void nvgFontBlur(NVGcontext* ctx, float blur); // Sets the letter spacing of current text style. void nvgTextLetterSpacing(NVGcontext* ctx, float spacing); // Sets the proportional line height of current text style. The line height is specified as multiple of font size. void nvgTextLineHeight(NVGcontext* ctx, float lineHeight); // Sets the text align of current text style, see NVGalign for options. void nvgTextAlign(NVGcontext* ctx, int align); // Sets the font face based on specified id of current text style. void nvgFontFaceId(NVGcontext* ctx, int font); // Sets the font face based on specified name of current text style. void nvgFontFace(NVGcontext* ctx, const char* font); // Draws text string at specified location. If end is specified only the sub-string up to the end is drawn. float nvgText(NVGcontext* ctx, float x, float y, const char* string, const char* end); // Draws multi-line text string at specified location wrapped at the specified width. If end is specified only the sub-string up to the end is drawn. // White space is stripped at the beginning of the rows, the text is split at word boundaries or when new-line characters are encountered. // Words longer than the max width are slit at nearest character (i.e. no hyphenation). void nvgTextBox(NVGcontext* ctx, float x, float y, float breakRowWidth, const char* string, const char* end); // Measures the specified text string. Parameter bounds should be a pointer to float[4], // if the bounding box of the text should be returned. The bounds value are [xmin,ymin, xmax,ymax] // Returns the horizontal advance of the measured text (i.e. where the next character should drawn). // Measured values are returned in local coordinate space. float nvgTextBounds(NVGcontext* ctx, float x, float y, const char* string, const char* end, float* bounds); // Measures the specified multi-text string. Parameter bounds should be a pointer to float[4], // if the bounding box of the text should be returned. The bounds value are [xmin,ymin, xmax,ymax] // Measured values are returned in local coordinate space. void nvgTextBoxBounds(NVGcontext* ctx, float x, float y, float breakRowWidth, const char* string, const char* end, float* bounds); // Calculates the glyph x positions of the specified text. If end is specified only the sub-string will be used. // Measured values are returned in local coordinate space. int nvgTextGlyphPositions(NVGcontext* ctx, float x, float y, const char* string, const char* end, NVGglyphPosition* positions, int maxPositions); // Returns the vertical metrics based on the current text style. // Measured values are returned in local coordinate space. void nvgTextMetrics(NVGcontext* ctx, float* ascender, float* descender, float* lineh); // Breaks the specified text into lines. If end is specified only the sub-string will be used. // White space is stripped at the beginning of the rows, the text is split at word boundaries or when new-line characters are encountered. // Words longer than the max width are slit at nearest character (i.e. no hyphenation). int nvgTextBreakLines(NVGcontext* ctx, const char* string, const char* end, float breakRowWidth, NVGtextRow* rows, int maxRows); // // Internal Render API // enum NVGtexture { NVG_TEXTURE_ALPHA = 0x01, NVG_TEXTURE_RGBA = 0x02, }; struct NVGscissor { float xform[6]; float extent[2]; }; typedef struct NVGscissor NVGscissor; struct NVGvertex { float x,y,u,v; }; typedef struct NVGvertex NVGvertex; struct NVGpath { int first; int count; unsigned char closed; int nbevel; NVGvertex* fill; int nfill; NVGvertex* stroke; int nstroke; int winding; int convex; }; typedef struct NVGpath NVGpath; struct NVGparams { void* userPtr; int edgeAntiAlias; int (*renderCreate)(void* uptr); int (*renderCreateTexture)(void* uptr, int type, int w, int h, int imageFlags, const unsigned char* data); int (*renderDeleteTexture)(void* uptr, int image); int (*renderUpdateTexture)(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data); int (*renderGetTextureSize)(void* uptr, int image, int* w, int* h); void (*renderViewport)(void* uptr, float width, float height, float devicePixelRatio); void (*renderCancel)(void* uptr); void (*renderFlush)(void* uptr); void (*renderFill)(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, float fringe, const float* bounds, const NVGpath* paths, int npaths); void (*renderStroke)(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, float fringe, float strokeWidth, const NVGpath* paths, int npaths); void (*renderTriangles)(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, const NVGvertex* verts, int nverts, float fringe); void (*renderDelete)(void* uptr); }; typedef struct NVGparams NVGparams; // Constructor and destructor, called by the render back-end. NVGcontext* nvgCreateInternal(NVGparams* params); void nvgDeleteInternal(NVGcontext* ctx); NVGparams* nvgInternalParams(NVGcontext* ctx); // Debug function to dump cached path data. void nvgDebugDumpPathCache(NVGcontext* ctx); #ifdef _MSC_VER #pragma warning(pop) #endif #define NVG_NOTUSED(v) for (;;) { (void)(1 ? (void)0 : ( (void)(v) ) ); break; } #ifdef __cplusplus } #endif #endif // NANOVG_H vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/src/nanovg_gl.h000066400000000000000000001335001461511344300305200ustar00rootroot00000000000000// // Copyright (c) 2009-2013 Mikko Mononen memon@inside.org // // This software is provided 'as-is', without any express or implied // warranty. In no event will the authors be held liable for any damages // arising from the use of this software. // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it // freely, subject to the following restrictions: // 1. The origin of this software must not be misrepresented; you must not // claim that you wrote the original software. If you use this software // in a product, an acknowledgment in the product documentation would be // appreciated but is not required. // 2. Altered source versions must be plainly marked as such, and must not be // misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. // #ifndef NANOVG_GL_H #define NANOVG_GL_H #ifdef __cplusplus extern "C" { #endif // Create flags enum NVGcreateFlags { // Flag indicating if geometry based anti-aliasing is used (may not be needed when using MSAA). NVG_ANTIALIAS = 1<<0, // Flag indicating if strokes should be drawn using stencil buffer. The rendering will be a little // slower, but path overlaps (i.e. self-intersecting or sharp turns) will be drawn just once. NVG_STENCIL_STROKES = 1<<1, // Flag indicating that additional debug checks are done. NVG_DEBUG = 1<<2, }; #if defined NANOVG_GL2_IMPLEMENTATION # define NANOVG_GL2 1 # define NANOVG_GL_IMPLEMENTATION 1 #elif defined NANOVG_GL3_IMPLEMENTATION # define NANOVG_GL3 1 # define NANOVG_GL_IMPLEMENTATION 1 # define NANOVG_GL_USE_UNIFORMBUFFER 1 #elif defined NANOVG_GLES2_IMPLEMENTATION # define NANOVG_GLES2 1 # define NANOVG_GL_IMPLEMENTATION 1 #elif defined NANOVG_GLES3_IMPLEMENTATION # define NANOVG_GLES3 1 # define NANOVG_GL_IMPLEMENTATION 1 #endif #define NANOVG_GL_USE_STATE_FILTER (1) // Creates NanoVG contexts for different OpenGL (ES) versions. // Flags should be combination of the create flags above. #if defined NANOVG_GL2 NVGcontext* nvgCreateGL2(int flags); void nvgDeleteGL2(NVGcontext* ctx); int nvglCreateImageFromHandleGL2(NVGcontext* ctx, GLuint textureId, int w, int h, int flags); GLuint nvglImageHandleGL2(NVGcontext* ctx, int image); #endif #if defined NANOVG_GL3 NVGcontext* nvgCreateGL3(int flags); void nvgDeleteGL3(NVGcontext* ctx); int nvglCreateImageFromHandleGL3(NVGcontext* ctx, GLuint textureId, int w, int h, int flags); GLuint nvglImageHandleGL3(NVGcontext* ctx, int image); #endif #if defined NANOVG_GLES2 NVGcontext* nvgCreateGLES2(int flags); void nvgDeleteGLES2(NVGcontext* ctx); int nvglCreateImageFromHandleGLES2(NVGcontext* ctx, GLuint textureId, int w, int h, int flags); GLuint nvglImageHandleGLES2(NVGcontext* ctx, int image); #endif #if defined NANOVG_GLES3 NVGcontext* nvgCreateGLES3(int flags); void nvgDeleteGLES3(NVGcontext* ctx); int nvglCreateImageFromHandleGLES3(NVGcontext* ctx, GLuint textureId, int w, int h, int flags); GLuint nvglImageHandleGLES3(NVGcontext* ctx, int image); #endif // These are additional flags on top of NVGimageFlags. enum NVGimageFlagsGL { NVG_IMAGE_NODELETE = 1<<16, // Do not delete GL texture handle. }; #ifdef __cplusplus } #endif #endif /* NANOVG_GL_H */ #ifdef NANOVG_GL_IMPLEMENTATION #include #include #include #include #include "nanovg.h" enum GLNVGuniformLoc { GLNVG_LOC_VIEWSIZE, GLNVG_LOC_TEX, GLNVG_LOC_FRAG, GLNVG_MAX_LOCS }; enum GLNVGshaderType { NSVG_SHADER_FILLGRAD, NSVG_SHADER_FILLIMG, NSVG_SHADER_SIMPLE, NSVG_SHADER_IMG }; #if NANOVG_GL_USE_UNIFORMBUFFER enum GLNVGuniformBindings { GLNVG_FRAG_BINDING = 0, }; #endif struct GLNVGshader { GLuint prog; GLuint frag; GLuint vert; GLint loc[GLNVG_MAX_LOCS]; }; typedef struct GLNVGshader GLNVGshader; struct GLNVGtexture { int id; GLuint tex; int width, height; int type; int flags; }; typedef struct GLNVGtexture GLNVGtexture; struct GLNVGblend { GLenum srcRGB; GLenum dstRGB; GLenum srcAlpha; GLenum dstAlpha; }; typedef struct GLNVGblend GLNVGblend; enum GLNVGcallType { GLNVG_NONE = 0, GLNVG_FILL, GLNVG_CONVEXFILL, GLNVG_STROKE, GLNVG_TRIANGLES, }; struct GLNVGcall { int type; int image; int pathOffset; int pathCount; int triangleOffset; int triangleCount; int uniformOffset; GLNVGblend blendFunc; }; typedef struct GLNVGcall GLNVGcall; struct GLNVGpath { int fillOffset; int fillCount; int strokeOffset; int strokeCount; }; typedef struct GLNVGpath GLNVGpath; struct GLNVGfragUniforms { #if NANOVG_GL_USE_UNIFORMBUFFER float scissorMat[12]; // matrices are actually 3 vec4s float paintMat[12]; struct NVGcolor innerCol; struct NVGcolor outerCol; float scissorExt[2]; float scissorScale[2]; float extent[2]; float radius; float feather; float strokeMult; float strokeThr; int texType; int type; #else // note: after modifying layout or size of uniform array, // don't forget to also update the fragment shader source! #define NANOVG_GL_UNIFORMARRAY_SIZE 11 union { struct { float scissorMat[12]; // matrices are actually 3 vec4s float paintMat[12]; struct NVGcolor innerCol; struct NVGcolor outerCol; float scissorExt[2]; float scissorScale[2]; float extent[2]; float radius; float feather; float strokeMult; float strokeThr; float texType; float type; }; float uniformArray[NANOVG_GL_UNIFORMARRAY_SIZE][4]; }; #endif }; typedef struct GLNVGfragUniforms GLNVGfragUniforms; struct GLNVGcontext { GLNVGshader shader; GLNVGtexture* textures; float view[2]; int ntextures; int ctextures; int textureId; GLuint vertBuf; #if defined NANOVG_GL3 GLuint vertArr; #endif #if NANOVG_GL_USE_UNIFORMBUFFER GLuint fragBuf; #endif int fragSize; int flags; // Per frame buffers GLNVGcall* calls; int ccalls; int ncalls; GLNVGpath* paths; int cpaths; int npaths; struct NVGvertex* verts; int cverts; int nverts; unsigned char* uniforms; int cuniforms; int nuniforms; // cached state #if NANOVG_GL_USE_STATE_FILTER GLuint boundTexture; GLuint stencilMask; GLenum stencilFunc; GLint stencilFuncRef; GLuint stencilFuncMask; GLNVGblend blendFunc; #endif int dummyTex; }; typedef struct GLNVGcontext GLNVGcontext; static int glnvg__maxi(int a, int b) { return a > b ? a : b; } #ifdef NANOVG_GLES2 static unsigned int glnvg__nearestPow2(unsigned int num) { unsigned n = num > 0 ? num - 1 : 0; n |= n >> 1; n |= n >> 2; n |= n >> 4; n |= n >> 8; n |= n >> 16; n++; return n; } #endif static void glnvg__bindTexture(GLNVGcontext* gl, GLuint tex) { #if NANOVG_GL_USE_STATE_FILTER if (gl->boundTexture != tex) { gl->boundTexture = tex; glBindTexture(GL_TEXTURE_2D, tex); } #else glBindTexture(GL_TEXTURE_2D, tex); #endif } static void glnvg__stencilMask(GLNVGcontext* gl, GLuint mask) { #if NANOVG_GL_USE_STATE_FILTER if (gl->stencilMask != mask) { gl->stencilMask = mask; glStencilMask(mask); } #else glStencilMask(mask); #endif } static void glnvg__stencilFunc(GLNVGcontext* gl, GLenum func, GLint ref, GLuint mask) { #if NANOVG_GL_USE_STATE_FILTER if ((gl->stencilFunc != func) || (gl->stencilFuncRef != ref) || (gl->stencilFuncMask != mask)) { gl->stencilFunc = func; gl->stencilFuncRef = ref; gl->stencilFuncMask = mask; glStencilFunc(func, ref, mask); } #else glStencilFunc(func, ref, mask); #endif } static void glnvg__blendFuncSeparate(GLNVGcontext* gl, const GLNVGblend* blend) { #if NANOVG_GL_USE_STATE_FILTER if ((gl->blendFunc.srcRGB != blend->srcRGB) || (gl->blendFunc.dstRGB != blend->dstRGB) || (gl->blendFunc.srcAlpha != blend->srcAlpha) || (gl->blendFunc.dstAlpha != blend->dstAlpha)) { gl->blendFunc = *blend; glBlendFuncSeparate(blend->srcRGB, blend->dstRGB, blend->srcAlpha,blend->dstAlpha); } #else glBlendFuncSeparate(blend->srcRGB, blend->dstRGB, blend->srcAlpha,blend->dstAlpha); #endif } static GLNVGtexture* glnvg__allocTexture(GLNVGcontext* gl) { GLNVGtexture* tex = NULL; int i; for (i = 0; i < gl->ntextures; i++) { if (gl->textures[i].id == 0) { tex = &gl->textures[i]; break; } } if (tex == NULL) { if (gl->ntextures+1 > gl->ctextures) { GLNVGtexture* textures; int ctextures = glnvg__maxi(gl->ntextures+1, 4) + gl->ctextures/2; // 1.5x Overallocate textures = (GLNVGtexture*)realloc(gl->textures, sizeof(GLNVGtexture)*ctextures); if (textures == NULL) return NULL; gl->textures = textures; gl->ctextures = ctextures; } tex = &gl->textures[gl->ntextures++]; } memset(tex, 0, sizeof(*tex)); tex->id = ++gl->textureId; return tex; } static GLNVGtexture* glnvg__findTexture(GLNVGcontext* gl, int id) { int i; for (i = 0; i < gl->ntextures; i++) if (gl->textures[i].id == id) return &gl->textures[i]; return NULL; } static int glnvg__deleteTexture(GLNVGcontext* gl, int id) { int i; for (i = 0; i < gl->ntextures; i++) { if (gl->textures[i].id == id) { if (gl->textures[i].tex != 0 && (gl->textures[i].flags & NVG_IMAGE_NODELETE) == 0) glDeleteTextures(1, &gl->textures[i].tex); memset(&gl->textures[i], 0, sizeof(gl->textures[i])); return 1; } } return 0; } static void glnvg__dumpShaderError(GLuint shader, const char* name, const char* type) { GLchar str[512+1]; GLsizei len = 0; glGetShaderInfoLog(shader, 512, &len, str); if (len > 512) len = 512; str[len] = '\0'; printf("Shader %s/%s error:\n%s\n", name, type, str); } static void glnvg__dumpProgramError(GLuint prog, const char* name) { GLchar str[512+1]; GLsizei len = 0; glGetProgramInfoLog(prog, 512, &len, str); if (len > 512) len = 512; str[len] = '\0'; printf("Program %s error:\n%s\n", name, str); } static void glnvg__checkError(GLNVGcontext* gl, const char* str) { GLenum err; if ((gl->flags & NVG_DEBUG) == 0) return; err = glGetError(); if (err != GL_NO_ERROR) { printf("Error %08x after %s\n", err, str); return; } } static int glnvg__createShader(GLNVGshader* shader, const char* name, const char* header, const char* opts, const char* vshader, const char* fshader) { GLint status; GLuint prog, vert, frag; const char* str[3]; str[0] = header; str[1] = opts != NULL ? opts : ""; memset(shader, 0, sizeof(*shader)); prog = glCreateProgram(); vert = glCreateShader(GL_VERTEX_SHADER); frag = glCreateShader(GL_FRAGMENT_SHADER); str[2] = vshader; glShaderSource(vert, 3, str, 0); str[2] = fshader; glShaderSource(frag, 3, str, 0); glCompileShader(vert); glGetShaderiv(vert, GL_COMPILE_STATUS, &status); if (status != GL_TRUE) { glnvg__dumpShaderError(vert, name, "vert"); return 0; } glCompileShader(frag); glGetShaderiv(frag, GL_COMPILE_STATUS, &status); if (status != GL_TRUE) { glnvg__dumpShaderError(frag, name, "frag"); return 0; } glAttachShader(prog, vert); glAttachShader(prog, frag); glBindAttribLocation(prog, 0, "vertex"); glBindAttribLocation(prog, 1, "tcoord"); glLinkProgram(prog); glGetProgramiv(prog, GL_LINK_STATUS, &status); if (status != GL_TRUE) { glnvg__dumpProgramError(prog, name); return 0; } shader->prog = prog; shader->vert = vert; shader->frag = frag; return 1; } static void glnvg__deleteShader(GLNVGshader* shader) { if (shader->prog != 0) glDeleteProgram(shader->prog); if (shader->vert != 0) glDeleteShader(shader->vert); if (shader->frag != 0) glDeleteShader(shader->frag); } static void glnvg__getUniforms(GLNVGshader* shader) { shader->loc[GLNVG_LOC_VIEWSIZE] = glGetUniformLocation(shader->prog, "viewSize"); shader->loc[GLNVG_LOC_TEX] = glGetUniformLocation(shader->prog, "tex"); #if NANOVG_GL_USE_UNIFORMBUFFER shader->loc[GLNVG_LOC_FRAG] = glGetUniformBlockIndex(shader->prog, "frag"); #else shader->loc[GLNVG_LOC_FRAG] = glGetUniformLocation(shader->prog, "frag"); #endif } static int glnvg__renderCreateTexture(void* uptr, int type, int w, int h, int imageFlags, const unsigned char* data); static int glnvg__renderCreate(void* uptr) { GLNVGcontext* gl = (GLNVGcontext*)uptr; int align = 4; // TODO: mediump float may not be enough for GLES2 in iOS. // see the following discussion: https://github.com/memononen/nanovg/issues/46 static const char* shaderHeader = #if defined NANOVG_GL2 "#define NANOVG_GL2 1\n" #elif defined NANOVG_GL3 "#version 150 core\n" "#define NANOVG_GL3 1\n" #elif defined NANOVG_GLES2 "#version 100\n" "#define NANOVG_GL2 1\n" #elif defined NANOVG_GLES3 "#version 300 es\n" "#define NANOVG_GL3 1\n" #endif #if NANOVG_GL_USE_UNIFORMBUFFER "#define USE_UNIFORMBUFFER 1\n" #else "#define UNIFORMARRAY_SIZE 11\n" #endif "\n"; static const char* fillVertShader = "#ifdef NANOVG_GL3\n" " uniform vec2 viewSize;\n" " in vec2 vertex;\n" " in vec2 tcoord;\n" " out vec2 ftcoord;\n" " out vec2 fpos;\n" "#else\n" " uniform vec2 viewSize;\n" " attribute vec2 vertex;\n" " attribute vec2 tcoord;\n" " varying vec2 ftcoord;\n" " varying vec2 fpos;\n" "#endif\n" "void main(void) {\n" " ftcoord = tcoord;\n" " fpos = vertex;\n" " gl_Position = vec4(2.0*vertex.x/viewSize.x - 1.0, 1.0 - 2.0*vertex.y/viewSize.y, 0, 1);\n" "}\n"; static const char* fillFragShader = "#ifdef GL_ES\n" "#if defined(GL_FRAGMENT_PRECISION_HIGH) || defined(NANOVG_GL3)\n" " precision highp float;\n" "#else\n" " precision mediump float;\n" "#endif\n" "#endif\n" "#ifdef NANOVG_GL3\n" "#ifdef USE_UNIFORMBUFFER\n" " layout(std140) uniform frag {\n" " mat3 scissorMat;\n" " mat3 paintMat;\n" " vec4 innerCol;\n" " vec4 outerCol;\n" " vec2 scissorExt;\n" " vec2 scissorScale;\n" " vec2 extent;\n" " float radius;\n" " float feather;\n" " float strokeMult;\n" " float strokeThr;\n" " int texType;\n" " int type;\n" " };\n" "#else\n" // NANOVG_GL3 && !USE_UNIFORMBUFFER " uniform vec4 frag[UNIFORMARRAY_SIZE];\n" "#endif\n" " uniform sampler2D tex;\n" " in vec2 ftcoord;\n" " in vec2 fpos;\n" " out vec4 outColor;\n" "#else\n" // !NANOVG_GL3 " uniform vec4 frag[UNIFORMARRAY_SIZE];\n" " uniform sampler2D tex;\n" " varying vec2 ftcoord;\n" " varying vec2 fpos;\n" "#endif\n" "#ifndef USE_UNIFORMBUFFER\n" " #define scissorMat mat3(frag[0].xyz, frag[1].xyz, frag[2].xyz)\n" " #define paintMat mat3(frag[3].xyz, frag[4].xyz, frag[5].xyz)\n" " #define innerCol frag[6]\n" " #define outerCol frag[7]\n" " #define scissorExt frag[8].xy\n" " #define scissorScale frag[8].zw\n" " #define extent frag[9].xy\n" " #define radius frag[9].z\n" " #define feather frag[9].w\n" " #define strokeMult frag[10].x\n" " #define strokeThr frag[10].y\n" " #define texType int(frag[10].z)\n" " #define type int(frag[10].w)\n" "#endif\n" "\n" "float sdroundrect(vec2 pt, vec2 ext, float rad) {\n" " vec2 ext2 = ext - vec2(rad,rad);\n" " vec2 d = abs(pt) - ext2;\n" " return min(max(d.x,d.y),0.0) + length(max(d,0.0)) - rad;\n" "}\n" "\n" "// Scissoring\n" "float scissorMask(vec2 p) {\n" " vec2 sc = (abs((scissorMat * vec3(p,1.0)).xy) - scissorExt);\n" " sc = vec2(0.5,0.5) - sc * scissorScale;\n" " return clamp(sc.x,0.0,1.0) * clamp(sc.y,0.0,1.0);\n" "}\n" "#ifdef EDGE_AA\n" "// Stroke - from [0..1] to clipped pyramid, where the slope is 1px.\n" "float strokeMask() {\n" " return min(1.0, (1.0-abs(ftcoord.x*2.0-1.0))*strokeMult) * min(1.0, ftcoord.y);\n" "}\n" "#endif\n" "\n" "void main(void) {\n" " vec4 result;\n" " float scissor = scissorMask(fpos);\n" "#ifdef EDGE_AA\n" " float strokeAlpha = strokeMask();\n" " if (strokeAlpha < strokeThr) discard;\n" "#else\n" " float strokeAlpha = 1.0;\n" "#endif\n" " if (type == 0) { // Gradient\n" " // Calculate gradient color using box gradient\n" " vec2 pt = (paintMat * vec3(fpos,1.0)).xy;\n" " float d = clamp((sdroundrect(pt, extent, radius) + feather*0.5) / feather, 0.0, 1.0);\n" " vec4 color = mix(innerCol,outerCol,d);\n" " // Combine alpha\n" " color *= strokeAlpha * scissor;\n" " result = color;\n" " } else if (type == 1) { // Image\n" " // Calculate color fron texture\n" " vec2 pt = (paintMat * vec3(fpos,1.0)).xy / extent;\n" "#ifdef NANOVG_GL3\n" " vec4 color = texture(tex, pt);\n" "#else\n" " vec4 color = texture2D(tex, pt);\n" "#endif\n" " if (texType == 1) color = vec4(color.xyz*color.w,color.w);" " if (texType == 2) color = vec4(color.x);" " // Apply color tint and alpha.\n" " color *= innerCol;\n" " // Combine alpha\n" " color *= strokeAlpha * scissor;\n" " result = color;\n" " } else if (type == 2) { // Stencil fill\n" " result = vec4(1,1,1,1);\n" " } else if (type == 3) { // Textured tris\n" "#ifdef NANOVG_GL3\n" " vec4 color = texture(tex, ftcoord);\n" "#else\n" " vec4 color = texture2D(tex, ftcoord);\n" "#endif\n" " if (texType == 1) color = vec4(color.xyz*color.w,color.w);" " if (texType == 2) color = vec4(color.x);" " color *= scissor;\n" " result = color * innerCol;\n" " }\n" "#ifdef NANOVG_GL3\n" " outColor = result;\n" "#else\n" " gl_FragColor = result;\n" "#endif\n" "}\n"; glnvg__checkError(gl, "init"); if (gl->flags & NVG_ANTIALIAS) { if (glnvg__createShader(&gl->shader, "shader", shaderHeader, "#define EDGE_AA 1\n", fillVertShader, fillFragShader) == 0) return 0; } else { if (glnvg__createShader(&gl->shader, "shader", shaderHeader, NULL, fillVertShader, fillFragShader) == 0) return 0; } glnvg__checkError(gl, "uniform locations"); glnvg__getUniforms(&gl->shader); // Create dynamic vertex array #if defined NANOVG_GL3 glGenVertexArrays(1, &gl->vertArr); #endif glGenBuffers(1, &gl->vertBuf); #if NANOVG_GL_USE_UNIFORMBUFFER // Create UBOs glUniformBlockBinding(gl->shader.prog, gl->shader.loc[GLNVG_LOC_FRAG], GLNVG_FRAG_BINDING); glGenBuffers(1, &gl->fragBuf); glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &align); #endif gl->fragSize = sizeof(GLNVGfragUniforms) + align - sizeof(GLNVGfragUniforms) % align; // Some platforms does not allow to have samples to unset textures. // Create empty one which is bound when there's no texture specified. gl->dummyTex = glnvg__renderCreateTexture(gl, NVG_TEXTURE_ALPHA, 1, 1, 0, NULL); glnvg__checkError(gl, "create done"); glFinish(); return 1; } static int glnvg__renderCreateTexture(void* uptr, int type, int w, int h, int imageFlags, const unsigned char* data) { GLNVGcontext* gl = (GLNVGcontext*)uptr; GLNVGtexture* tex = glnvg__allocTexture(gl); if (tex == NULL) return 0; #ifdef NANOVG_GLES2 // Check for non-power of 2. if (glnvg__nearestPow2(w) != (unsigned int)w || glnvg__nearestPow2(h) != (unsigned int)h) { // No repeat if ((imageFlags & NVG_IMAGE_REPEATX) != 0 || (imageFlags & NVG_IMAGE_REPEATY) != 0) { printf("Repeat X/Y is not supported for non power-of-two textures (%d x %d)\n", w, h); imageFlags &= ~(NVG_IMAGE_REPEATX | NVG_IMAGE_REPEATY); } // No mips. if (imageFlags & NVG_IMAGE_GENERATE_MIPMAPS) { printf("Mip-maps is not support for non power-of-two textures (%d x %d)\n", w, h); imageFlags &= ~NVG_IMAGE_GENERATE_MIPMAPS; } } #endif glGenTextures(1, &tex->tex); tex->width = w; tex->height = h; tex->type = type; tex->flags = imageFlags; glnvg__bindTexture(gl, tex->tex); glPixelStorei(GL_UNPACK_ALIGNMENT,1); #ifndef NANOVG_GLES2 glPixelStorei(GL_UNPACK_ROW_LENGTH, tex->width); glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); #endif #if defined (NANOVG_GL2) // GL 1.4 and later has support for generating mipmaps using a tex parameter. if (imageFlags & NVG_IMAGE_GENERATE_MIPMAPS) { glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); } #endif if (type == NVG_TEXTURE_RGBA) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); else #if defined(NANOVG_GLES2) || defined (NANOVG_GL2) glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, w, h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, data); #elif defined(NANOVG_GLES3) glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, w, h, 0, GL_RED, GL_UNSIGNED_BYTE, data); #else glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, w, h, 0, GL_RED, GL_UNSIGNED_BYTE, data); #endif if (imageFlags & NVG_IMAGE_GENERATE_MIPMAPS) { if (imageFlags & NVG_IMAGE_NEAREST) { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); } else { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); } } else { if (imageFlags & NVG_IMAGE_NEAREST) { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); } else { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); } } if (imageFlags & NVG_IMAGE_NEAREST) { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); } else { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); } if (imageFlags & NVG_IMAGE_REPEATX) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); else glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); if (imageFlags & NVG_IMAGE_REPEATY) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); else glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glPixelStorei(GL_UNPACK_ALIGNMENT, 4); #ifndef NANOVG_GLES2 glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); #endif // The new way to build mipmaps on GLES and GL3 #if !defined(NANOVG_GL2) if (imageFlags & NVG_IMAGE_GENERATE_MIPMAPS) { glGenerateMipmap(GL_TEXTURE_2D); } #endif glnvg__checkError(gl, "create tex"); glnvg__bindTexture(gl, 0); return tex->id; } static int glnvg__renderDeleteTexture(void* uptr, int image) { GLNVGcontext* gl = (GLNVGcontext*)uptr; return glnvg__deleteTexture(gl, image); } static int glnvg__renderUpdateTexture(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data) { GLNVGcontext* gl = (GLNVGcontext*)uptr; GLNVGtexture* tex = glnvg__findTexture(gl, image); if (tex == NULL) return 0; glnvg__bindTexture(gl, tex->tex); glPixelStorei(GL_UNPACK_ALIGNMENT,1); #ifndef NANOVG_GLES2 glPixelStorei(GL_UNPACK_ROW_LENGTH, tex->width); glPixelStorei(GL_UNPACK_SKIP_PIXELS, x); glPixelStorei(GL_UNPACK_SKIP_ROWS, y); #else // No support for all of skip, need to update a whole row at a time. if (tex->type == NVG_TEXTURE_RGBA) data += y*tex->width*4; else data += y*tex->width; x = 0; w = tex->width; #endif if (tex->type == NVG_TEXTURE_RGBA) glTexSubImage2D(GL_TEXTURE_2D, 0, x,y, w,h, GL_RGBA, GL_UNSIGNED_BYTE, data); else #if defined(NANOVG_GLES2) || defined(NANOVG_GL2) glTexSubImage2D(GL_TEXTURE_2D, 0, x,y, w,h, GL_LUMINANCE, GL_UNSIGNED_BYTE, data); #else glTexSubImage2D(GL_TEXTURE_2D, 0, x,y, w,h, GL_RED, GL_UNSIGNED_BYTE, data); #endif glPixelStorei(GL_UNPACK_ALIGNMENT, 4); #ifndef NANOVG_GLES2 glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); #endif glnvg__bindTexture(gl, 0); return 1; } static int glnvg__renderGetTextureSize(void* uptr, int image, int* w, int* h) { GLNVGcontext* gl = (GLNVGcontext*)uptr; GLNVGtexture* tex = glnvg__findTexture(gl, image); if (tex == NULL) return 0; *w = tex->width; *h = tex->height; return 1; } static void glnvg__xformToMat3x4(float* m3, float* t) { m3[0] = t[0]; m3[1] = t[1]; m3[2] = 0.0f; m3[3] = 0.0f; m3[4] = t[2]; m3[5] = t[3]; m3[6] = 0.0f; m3[7] = 0.0f; m3[8] = t[4]; m3[9] = t[5]; m3[10] = 1.0f; m3[11] = 0.0f; } static NVGcolor glnvg__premulColor(NVGcolor c) { c.r *= c.a; c.g *= c.a; c.b *= c.a; return c; } static int glnvg__convertPaint(GLNVGcontext* gl, GLNVGfragUniforms* frag, NVGpaint* paint, NVGscissor* scissor, float width, float fringe, float strokeThr) { GLNVGtexture* tex = NULL; float invxform[6]; memset(frag, 0, sizeof(*frag)); frag->innerCol = glnvg__premulColor(paint->innerColor); frag->outerCol = glnvg__premulColor(paint->outerColor); if (scissor->extent[0] < -0.5f || scissor->extent[1] < -0.5f) { memset(frag->scissorMat, 0, sizeof(frag->scissorMat)); frag->scissorExt[0] = 1.0f; frag->scissorExt[1] = 1.0f; frag->scissorScale[0] = 1.0f; frag->scissorScale[1] = 1.0f; } else { nvgTransformInverse(invxform, scissor->xform); glnvg__xformToMat3x4(frag->scissorMat, invxform); frag->scissorExt[0] = scissor->extent[0]; frag->scissorExt[1] = scissor->extent[1]; frag->scissorScale[0] = sqrtf(scissor->xform[0]*scissor->xform[0] + scissor->xform[2]*scissor->xform[2]) / fringe; frag->scissorScale[1] = sqrtf(scissor->xform[1]*scissor->xform[1] + scissor->xform[3]*scissor->xform[3]) / fringe; } memcpy(frag->extent, paint->extent, sizeof(frag->extent)); frag->strokeMult = (width*0.5f + fringe*0.5f) / fringe; frag->strokeThr = strokeThr; if (paint->image != 0) { tex = glnvg__findTexture(gl, paint->image); if (tex == NULL) return 0; if ((tex->flags & NVG_IMAGE_FLIPY) != 0) { float m1[6], m2[6]; nvgTransformTranslate(m1, 0.0f, frag->extent[1] * 0.5f); nvgTransformMultiply(m1, paint->xform); nvgTransformScale(m2, 1.0f, -1.0f); nvgTransformMultiply(m2, m1); nvgTransformTranslate(m1, 0.0f, -frag->extent[1] * 0.5f); nvgTransformMultiply(m1, m2); nvgTransformInverse(invxform, m1); } else { nvgTransformInverse(invxform, paint->xform); } frag->type = NSVG_SHADER_FILLIMG; #if NANOVG_GL_USE_UNIFORMBUFFER if (tex->type == NVG_TEXTURE_RGBA) frag->texType = (tex->flags & NVG_IMAGE_PREMULTIPLIED) ? 0 : 1; else frag->texType = 2; #else if (tex->type == NVG_TEXTURE_RGBA) frag->texType = (tex->flags & NVG_IMAGE_PREMULTIPLIED) ? 0.0f : 1.0f; else frag->texType = 2.0f; #endif // printf("frag->texType = %d\n", frag->texType); } else { frag->type = NSVG_SHADER_FILLGRAD; frag->radius = paint->radius; frag->feather = paint->feather; nvgTransformInverse(invxform, paint->xform); } glnvg__xformToMat3x4(frag->paintMat, invxform); return 1; } static GLNVGfragUniforms* nvg__fragUniformPtr(GLNVGcontext* gl, int i); static void glnvg__setUniforms(GLNVGcontext* gl, int uniformOffset, int image) { GLNVGtexture* tex = NULL; #if NANOVG_GL_USE_UNIFORMBUFFER glBindBufferRange(GL_UNIFORM_BUFFER, GLNVG_FRAG_BINDING, gl->fragBuf, uniformOffset, sizeof(GLNVGfragUniforms)); #else GLNVGfragUniforms* frag = nvg__fragUniformPtr(gl, uniformOffset); glUniform4fv(gl->shader.loc[GLNVG_LOC_FRAG], NANOVG_GL_UNIFORMARRAY_SIZE, &(frag->uniformArray[0][0])); #endif if (image != 0) { tex = glnvg__findTexture(gl, image); } // If no image is set, use empty texture if (tex == NULL) { tex = glnvg__findTexture(gl, gl->dummyTex); } glnvg__bindTexture(gl, tex != NULL ? tex->tex : 0); glnvg__checkError(gl, "tex paint tex"); } static void glnvg__renderViewport(void* uptr, float width, float height, float devicePixelRatio) { NVG_NOTUSED(devicePixelRatio); GLNVGcontext* gl = (GLNVGcontext*)uptr; gl->view[0] = width; gl->view[1] = height; } static void glnvg__fill(GLNVGcontext* gl, GLNVGcall* call) { GLNVGpath* paths = &gl->paths[call->pathOffset]; int i, npaths = call->pathCount; // Draw shapes glEnable(GL_STENCIL_TEST); glnvg__stencilMask(gl, 0xff); glnvg__stencilFunc(gl, GL_ALWAYS, 0, 0xff); glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); // set bindpoint for solid loc glnvg__setUniforms(gl, call->uniformOffset, 0); glnvg__checkError(gl, "fill simple"); glStencilOpSeparate(GL_FRONT, GL_KEEP, GL_KEEP, GL_INCR_WRAP); glStencilOpSeparate(GL_BACK, GL_KEEP, GL_KEEP, GL_DECR_WRAP); glDisable(GL_CULL_FACE); for (i = 0; i < npaths; i++) glDrawArrays(GL_TRIANGLE_FAN, paths[i].fillOffset, paths[i].fillCount); glEnable(GL_CULL_FACE); // Draw anti-aliased pixels glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glnvg__setUniforms(gl, call->uniformOffset + gl->fragSize, call->image); glnvg__checkError(gl, "fill fill"); if (gl->flags & NVG_ANTIALIAS) { glnvg__stencilFunc(gl, GL_EQUAL, 0x00, 0xff); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); // Draw fringes for (i = 0; i < npaths; i++) glDrawArrays(GL_TRIANGLE_STRIP, paths[i].strokeOffset, paths[i].strokeCount); } // Draw fill glnvg__stencilFunc(gl, GL_NOTEQUAL, 0x0, 0xff); glStencilOp(GL_ZERO, GL_ZERO, GL_ZERO); glDrawArrays(GL_TRIANGLE_STRIP, call->triangleOffset, call->triangleCount); glDisable(GL_STENCIL_TEST); } static void glnvg__convexFill(GLNVGcontext* gl, GLNVGcall* call) { GLNVGpath* paths = &gl->paths[call->pathOffset]; int i, npaths = call->pathCount; glnvg__setUniforms(gl, call->uniformOffset, call->image); glnvg__checkError(gl, "convex fill"); for (i = 0; i < npaths; i++) { glDrawArrays(GL_TRIANGLE_FAN, paths[i].fillOffset, paths[i].fillCount); // Draw fringes if (paths[i].strokeCount > 0) { glDrawArrays(GL_TRIANGLE_STRIP, paths[i].strokeOffset, paths[i].strokeCount); } } } static void glnvg__stroke(GLNVGcontext* gl, GLNVGcall* call) { GLNVGpath* paths = &gl->paths[call->pathOffset]; int npaths = call->pathCount, i; if (gl->flags & NVG_STENCIL_STROKES) { glEnable(GL_STENCIL_TEST); glnvg__stencilMask(gl, 0xff); // Fill the stroke base without overlap glnvg__stencilFunc(gl, GL_EQUAL, 0x0, 0xff); glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); glnvg__setUniforms(gl, call->uniformOffset + gl->fragSize, call->image); glnvg__checkError(gl, "stroke fill 0"); for (i = 0; i < npaths; i++) glDrawArrays(GL_TRIANGLE_STRIP, paths[i].strokeOffset, paths[i].strokeCount); // Draw anti-aliased pixels. glnvg__setUniforms(gl, call->uniformOffset, call->image); glnvg__stencilFunc(gl, GL_EQUAL, 0x00, 0xff); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); for (i = 0; i < npaths; i++) glDrawArrays(GL_TRIANGLE_STRIP, paths[i].strokeOffset, paths[i].strokeCount); // Clear stencil buffer. glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); glnvg__stencilFunc(gl, GL_ALWAYS, 0x0, 0xff); glStencilOp(GL_ZERO, GL_ZERO, GL_ZERO); glnvg__checkError(gl, "stroke fill 1"); for (i = 0; i < npaths; i++) glDrawArrays(GL_TRIANGLE_STRIP, paths[i].strokeOffset, paths[i].strokeCount); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glDisable(GL_STENCIL_TEST); // glnvg__convertPaint(gl, nvg__fragUniformPtr(gl, call->uniformOffset + gl->fragSize), paint, scissor, strokeWidth, fringe, 1.0f - 0.5f/255.0f); } else { glnvg__setUniforms(gl, call->uniformOffset, call->image); glnvg__checkError(gl, "stroke fill"); // Draw Strokes for (i = 0; i < npaths; i++) glDrawArrays(GL_TRIANGLE_STRIP, paths[i].strokeOffset, paths[i].strokeCount); } } static void glnvg__triangles(GLNVGcontext* gl, GLNVGcall* call) { glnvg__setUniforms(gl, call->uniformOffset, call->image); glnvg__checkError(gl, "triangles fill"); glDrawArrays(GL_TRIANGLES, call->triangleOffset, call->triangleCount); } static void glnvg__renderCancel(void* uptr) { GLNVGcontext* gl = (GLNVGcontext*)uptr; gl->nverts = 0; gl->npaths = 0; gl->ncalls = 0; gl->nuniforms = 0; } static GLenum glnvg_convertBlendFuncFactor(int factor) { if (factor == NVG_ZERO) return GL_ZERO; if (factor == NVG_ONE) return GL_ONE; if (factor == NVG_SRC_COLOR) return GL_SRC_COLOR; if (factor == NVG_ONE_MINUS_SRC_COLOR) return GL_ONE_MINUS_SRC_COLOR; if (factor == NVG_DST_COLOR) return GL_DST_COLOR; if (factor == NVG_ONE_MINUS_DST_COLOR) return GL_ONE_MINUS_DST_COLOR; if (factor == NVG_SRC_ALPHA) return GL_SRC_ALPHA; if (factor == NVG_ONE_MINUS_SRC_ALPHA) return GL_ONE_MINUS_SRC_ALPHA; if (factor == NVG_DST_ALPHA) return GL_DST_ALPHA; if (factor == NVG_ONE_MINUS_DST_ALPHA) return GL_ONE_MINUS_DST_ALPHA; if (factor == NVG_SRC_ALPHA_SATURATE) return GL_SRC_ALPHA_SATURATE; return GL_INVALID_ENUM; } static GLNVGblend glnvg__blendCompositeOperation(NVGcompositeOperationState op) { GLNVGblend blend; blend.srcRGB = glnvg_convertBlendFuncFactor(op.srcRGB); blend.dstRGB = glnvg_convertBlendFuncFactor(op.dstRGB); blend.srcAlpha = glnvg_convertBlendFuncFactor(op.srcAlpha); blend.dstAlpha = glnvg_convertBlendFuncFactor(op.dstAlpha); if (blend.srcRGB == GL_INVALID_ENUM || blend.dstRGB == GL_INVALID_ENUM || blend.srcAlpha == GL_INVALID_ENUM || blend.dstAlpha == GL_INVALID_ENUM) { blend.srcRGB = GL_ONE; blend.dstRGB = GL_ONE_MINUS_SRC_ALPHA; blend.srcAlpha = GL_ONE; blend.dstAlpha = GL_ONE_MINUS_SRC_ALPHA; } return blend; } static void glnvg__renderFlush(void* uptr) { GLNVGcontext* gl = (GLNVGcontext*)uptr; int i; if (gl->ncalls > 0) { // Setup require GL state. glUseProgram(gl->shader.prog); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glFrontFace(GL_CCW); glEnable(GL_BLEND); glDisable(GL_DEPTH_TEST); glDisable(GL_SCISSOR_TEST); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glStencilMask(0xffffffff); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); glStencilFunc(GL_ALWAYS, 0, 0xffffffff); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, 0); #if NANOVG_GL_USE_STATE_FILTER gl->boundTexture = 0; gl->stencilMask = 0xffffffff; gl->stencilFunc = GL_ALWAYS; gl->stencilFuncRef = 0; gl->stencilFuncMask = 0xffffffff; gl->blendFunc.srcRGB = GL_INVALID_ENUM; gl->blendFunc.srcAlpha = GL_INVALID_ENUM; gl->blendFunc.dstRGB = GL_INVALID_ENUM; gl->blendFunc.dstAlpha = GL_INVALID_ENUM; #endif #if NANOVG_GL_USE_UNIFORMBUFFER // Upload ubo for frag shaders glBindBuffer(GL_UNIFORM_BUFFER, gl->fragBuf); glBufferData(GL_UNIFORM_BUFFER, gl->nuniforms * gl->fragSize, gl->uniforms, GL_STREAM_DRAW); #endif // Upload vertex data #if defined NANOVG_GL3 glBindVertexArray(gl->vertArr); #endif glBindBuffer(GL_ARRAY_BUFFER, gl->vertBuf); glBufferData(GL_ARRAY_BUFFER, gl->nverts * sizeof(NVGvertex), gl->verts, GL_STREAM_DRAW); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(NVGvertex), (const GLvoid*)(size_t)0); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(NVGvertex), (const GLvoid*)(0 + 2*sizeof(float))); // Set view and texture just once per frame. glUniform1i(gl->shader.loc[GLNVG_LOC_TEX], 0); glUniform2fv(gl->shader.loc[GLNVG_LOC_VIEWSIZE], 1, gl->view); #if NANOVG_GL_USE_UNIFORMBUFFER glBindBuffer(GL_UNIFORM_BUFFER, gl->fragBuf); #endif for (i = 0; i < gl->ncalls; i++) { GLNVGcall* call = &gl->calls[i]; glnvg__blendFuncSeparate(gl,&call->blendFunc); if (call->type == GLNVG_FILL) glnvg__fill(gl, call); else if (call->type == GLNVG_CONVEXFILL) glnvg__convexFill(gl, call); else if (call->type == GLNVG_STROKE) glnvg__stroke(gl, call); else if (call->type == GLNVG_TRIANGLES) glnvg__triangles(gl, call); } glDisableVertexAttribArray(0); glDisableVertexAttribArray(1); #if defined NANOVG_GL3 glBindVertexArray(0); #endif glDisable(GL_CULL_FACE); glBindBuffer(GL_ARRAY_BUFFER, 0); glUseProgram(0); glnvg__bindTexture(gl, 0); } // Reset calls gl->nverts = 0; gl->npaths = 0; gl->ncalls = 0; gl->nuniforms = 0; } static int glnvg__maxVertCount(const NVGpath* paths, int npaths) { int i, count = 0; for (i = 0; i < npaths; i++) { count += paths[i].nfill; count += paths[i].nstroke; } return count; } static GLNVGcall* glnvg__allocCall(GLNVGcontext* gl) { GLNVGcall* ret = NULL; if (gl->ncalls+1 > gl->ccalls) { GLNVGcall* calls; int ccalls = glnvg__maxi(gl->ncalls+1, 128) + gl->ccalls/2; // 1.5x Overallocate calls = (GLNVGcall*)realloc(gl->calls, sizeof(GLNVGcall) * ccalls); if (calls == NULL) return NULL; gl->calls = calls; gl->ccalls = ccalls; } ret = &gl->calls[gl->ncalls++]; memset(ret, 0, sizeof(GLNVGcall)); return ret; } static int glnvg__allocPaths(GLNVGcontext* gl, int n) { int ret = 0; if (gl->npaths+n > gl->cpaths) { GLNVGpath* paths; int cpaths = glnvg__maxi(gl->npaths + n, 128) + gl->cpaths/2; // 1.5x Overallocate paths = (GLNVGpath*)realloc(gl->paths, sizeof(GLNVGpath) * cpaths); if (paths == NULL) return -1; gl->paths = paths; gl->cpaths = cpaths; } ret = gl->npaths; gl->npaths += n; return ret; } static int glnvg__allocVerts(GLNVGcontext* gl, int n) { int ret = 0; if (gl->nverts+n > gl->cverts) { NVGvertex* verts; int cverts = glnvg__maxi(gl->nverts + n, 4096) + gl->cverts/2; // 1.5x Overallocate verts = (NVGvertex*)realloc(gl->verts, sizeof(NVGvertex) * cverts); if (verts == NULL) return -1; gl->verts = verts; gl->cverts = cverts; } ret = gl->nverts; gl->nverts += n; return ret; } static int glnvg__allocFragUniforms(GLNVGcontext* gl, int n) { int ret = 0, structSize = gl->fragSize; if (gl->nuniforms+n > gl->cuniforms) { unsigned char* uniforms; int cuniforms = glnvg__maxi(gl->nuniforms+n, 128) + gl->cuniforms/2; // 1.5x Overallocate uniforms = (unsigned char*)realloc(gl->uniforms, structSize * cuniforms); if (uniforms == NULL) return -1; gl->uniforms = uniforms; gl->cuniforms = cuniforms; } ret = gl->nuniforms * structSize; gl->nuniforms += n; return ret; } static GLNVGfragUniforms* nvg__fragUniformPtr(GLNVGcontext* gl, int i) { return (GLNVGfragUniforms*)&gl->uniforms[i]; } static void glnvg__vset(NVGvertex* vtx, float x, float y, float u, float v) { vtx->x = x; vtx->y = y; vtx->u = u; vtx->v = v; } static void glnvg__renderFill(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, float fringe, const float* bounds, const NVGpath* paths, int npaths) { GLNVGcontext* gl = (GLNVGcontext*)uptr; GLNVGcall* call = glnvg__allocCall(gl); NVGvertex* quad; GLNVGfragUniforms* frag; int i, maxverts, offset; if (call == NULL) return; call->type = GLNVG_FILL; call->triangleCount = 4; call->pathOffset = glnvg__allocPaths(gl, npaths); if (call->pathOffset == -1) goto error; call->pathCount = npaths; call->image = paint->image; call->blendFunc = glnvg__blendCompositeOperation(compositeOperation); if (npaths == 1 && paths[0].convex) { call->type = GLNVG_CONVEXFILL; call->triangleCount = 0; // Bounding box fill quad not needed for convex fill } // Allocate vertices for all the paths. maxverts = glnvg__maxVertCount(paths, npaths) + call->triangleCount; offset = glnvg__allocVerts(gl, maxverts); if (offset == -1) goto error; for (i = 0; i < npaths; i++) { GLNVGpath* copy = &gl->paths[call->pathOffset + i]; const NVGpath* path = &paths[i]; memset(copy, 0, sizeof(GLNVGpath)); if (path->nfill > 0) { copy->fillOffset = offset; copy->fillCount = path->nfill; memcpy(&gl->verts[offset], path->fill, sizeof(NVGvertex) * path->nfill); offset += path->nfill; } if (path->nstroke > 0) { copy->strokeOffset = offset; copy->strokeCount = path->nstroke; memcpy(&gl->verts[offset], path->stroke, sizeof(NVGvertex) * path->nstroke); offset += path->nstroke; } } // Setup uniforms for draw calls if (call->type == GLNVG_FILL) { // Quad call->triangleOffset = offset; quad = &gl->verts[call->triangleOffset]; glnvg__vset(&quad[0], bounds[2], bounds[3], 0.5f, 1.0f); glnvg__vset(&quad[1], bounds[2], bounds[1], 0.5f, 1.0f); glnvg__vset(&quad[2], bounds[0], bounds[3], 0.5f, 1.0f); glnvg__vset(&quad[3], bounds[0], bounds[1], 0.5f, 1.0f); call->uniformOffset = glnvg__allocFragUniforms(gl, 2); if (call->uniformOffset == -1) goto error; // Simple shader for stencil frag = nvg__fragUniformPtr(gl, call->uniformOffset); memset(frag, 0, sizeof(*frag)); frag->strokeThr = -1.0f; frag->type = NSVG_SHADER_SIMPLE; // Fill shader glnvg__convertPaint(gl, nvg__fragUniformPtr(gl, call->uniformOffset + gl->fragSize), paint, scissor, fringe, fringe, -1.0f); } else { call->uniformOffset = glnvg__allocFragUniforms(gl, 1); if (call->uniformOffset == -1) goto error; // Fill shader glnvg__convertPaint(gl, nvg__fragUniformPtr(gl, call->uniformOffset), paint, scissor, fringe, fringe, -1.0f); } return; error: // We get here if call alloc was ok, but something else is not. // Roll back the last call to prevent drawing it. if (gl->ncalls > 0) gl->ncalls--; } static void glnvg__renderStroke(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, float fringe, float strokeWidth, const NVGpath* paths, int npaths) { GLNVGcontext* gl = (GLNVGcontext*)uptr; GLNVGcall* call = glnvg__allocCall(gl); int i, maxverts, offset; if (call == NULL) return; call->type = GLNVG_STROKE; call->pathOffset = glnvg__allocPaths(gl, npaths); if (call->pathOffset == -1) goto error; call->pathCount = npaths; call->image = paint->image; call->blendFunc = glnvg__blendCompositeOperation(compositeOperation); // Allocate vertices for all the paths. maxverts = glnvg__maxVertCount(paths, npaths); offset = glnvg__allocVerts(gl, maxverts); if (offset == -1) goto error; for (i = 0; i < npaths; i++) { GLNVGpath* copy = &gl->paths[call->pathOffset + i]; const NVGpath* path = &paths[i]; memset(copy, 0, sizeof(GLNVGpath)); if (path->nstroke) { copy->strokeOffset = offset; copy->strokeCount = path->nstroke; memcpy(&gl->verts[offset], path->stroke, sizeof(NVGvertex) * path->nstroke); offset += path->nstroke; } } if (gl->flags & NVG_STENCIL_STROKES) { // Fill shader call->uniformOffset = glnvg__allocFragUniforms(gl, 2); if (call->uniformOffset == -1) goto error; glnvg__convertPaint(gl, nvg__fragUniformPtr(gl, call->uniformOffset), paint, scissor, strokeWidth, fringe, -1.0f); glnvg__convertPaint(gl, nvg__fragUniformPtr(gl, call->uniformOffset + gl->fragSize), paint, scissor, strokeWidth, fringe, 1.0f - 0.5f/255.0f); } else { // Fill shader call->uniformOffset = glnvg__allocFragUniforms(gl, 1); if (call->uniformOffset == -1) goto error; glnvg__convertPaint(gl, nvg__fragUniformPtr(gl, call->uniformOffset), paint, scissor, strokeWidth, fringe, -1.0f); } return; error: // We get here if call alloc was ok, but something else is not. // Roll back the last call to prevent drawing it. if (gl->ncalls > 0) gl->ncalls--; } static void glnvg__renderTriangles(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, const NVGvertex* verts, int nverts, float fringe) { GLNVGcontext* gl = (GLNVGcontext*)uptr; GLNVGcall* call = glnvg__allocCall(gl); GLNVGfragUniforms* frag; if (call == NULL) return; call->type = GLNVG_TRIANGLES; call->image = paint->image; call->blendFunc = glnvg__blendCompositeOperation(compositeOperation); // Allocate vertices for all the paths. call->triangleOffset = glnvg__allocVerts(gl, nverts); if (call->triangleOffset == -1) goto error; call->triangleCount = nverts; memcpy(&gl->verts[call->triangleOffset], verts, sizeof(NVGvertex) * nverts); // Fill shader call->uniformOffset = glnvg__allocFragUniforms(gl, 1); if (call->uniformOffset == -1) goto error; frag = nvg__fragUniformPtr(gl, call->uniformOffset); glnvg__convertPaint(gl, frag, paint, scissor, 1.0f, fringe, -1.0f); frag->type = NSVG_SHADER_IMG; return; error: // We get here if call alloc was ok, but something else is not. // Roll back the last call to prevent drawing it. if (gl->ncalls > 0) gl->ncalls--; } static void glnvg__renderDelete(void* uptr) { GLNVGcontext* gl = (GLNVGcontext*)uptr; int i; if (gl == NULL) return; glnvg__deleteShader(&gl->shader); #if NANOVG_GL3 #if NANOVG_GL_USE_UNIFORMBUFFER if (gl->fragBuf != 0) glDeleteBuffers(1, &gl->fragBuf); #endif if (gl->vertArr != 0) glDeleteVertexArrays(1, &gl->vertArr); #endif if (gl->vertBuf != 0) glDeleteBuffers(1, &gl->vertBuf); for (i = 0; i < gl->ntextures; i++) { if (gl->textures[i].tex != 0 && (gl->textures[i].flags & NVG_IMAGE_NODELETE) == 0) glDeleteTextures(1, &gl->textures[i].tex); } free(gl->textures); free(gl->paths); free(gl->verts); free(gl->uniforms); free(gl->calls); free(gl); } #if defined NANOVG_GL2 NVGcontext* nvgCreateGL2(int flags) #elif defined NANOVG_GL3 NVGcontext* nvgCreateGL3(int flags) #elif defined NANOVG_GLES2 NVGcontext* nvgCreateGLES2(int flags) #elif defined NANOVG_GLES3 NVGcontext* nvgCreateGLES3(int flags) #endif { NVGparams params; NVGcontext* ctx = NULL; GLNVGcontext* gl = (GLNVGcontext*)malloc(sizeof(GLNVGcontext)); if (gl == NULL) goto error; memset(gl, 0, sizeof(GLNVGcontext)); memset(¶ms, 0, sizeof(params)); params.renderCreate = glnvg__renderCreate; params.renderCreateTexture = glnvg__renderCreateTexture; params.renderDeleteTexture = glnvg__renderDeleteTexture; params.renderUpdateTexture = glnvg__renderUpdateTexture; params.renderGetTextureSize = glnvg__renderGetTextureSize; params.renderViewport = glnvg__renderViewport; params.renderCancel = glnvg__renderCancel; params.renderFlush = glnvg__renderFlush; params.renderFill = glnvg__renderFill; params.renderStroke = glnvg__renderStroke; params.renderTriangles = glnvg__renderTriangles; params.renderDelete = glnvg__renderDelete; params.userPtr = gl; params.edgeAntiAlias = flags & NVG_ANTIALIAS ? 1 : 0; gl->flags = flags; ctx = nvgCreateInternal(¶ms); if (ctx == NULL) goto error; return ctx; error: // 'gl' is freed by nvgDeleteInternal. if (ctx != NULL) nvgDeleteInternal(ctx); return NULL; } #if defined NANOVG_GL2 void nvgDeleteGL2(NVGcontext* ctx) #elif defined NANOVG_GL3 void nvgDeleteGL3(NVGcontext* ctx) #elif defined NANOVG_GLES2 void nvgDeleteGLES2(NVGcontext* ctx) #elif defined NANOVG_GLES3 void nvgDeleteGLES3(NVGcontext* ctx) #endif { nvgDeleteInternal(ctx); } #if defined NANOVG_GL2 int nvglCreateImageFromHandleGL2(NVGcontext* ctx, GLuint textureId, int w, int h, int imageFlags) #elif defined NANOVG_GL3 int nvglCreateImageFromHandleGL3(NVGcontext* ctx, GLuint textureId, int w, int h, int imageFlags) #elif defined NANOVG_GLES2 int nvglCreateImageFromHandleGLES2(NVGcontext* ctx, GLuint textureId, int w, int h, int imageFlags) #elif defined NANOVG_GLES3 int nvglCreateImageFromHandleGLES3(NVGcontext* ctx, GLuint textureId, int w, int h, int imageFlags) #endif { GLNVGcontext* gl = (GLNVGcontext*)nvgInternalParams(ctx)->userPtr; GLNVGtexture* tex = glnvg__allocTexture(gl); if (tex == NULL) return 0; tex->type = NVG_TEXTURE_RGBA; tex->tex = textureId; tex->flags = imageFlags; tex->width = w; tex->height = h; return tex->id; } #if defined NANOVG_GL2 GLuint nvglImageHandleGL2(NVGcontext* ctx, int image) #elif defined NANOVG_GL3 GLuint nvglImageHandleGL3(NVGcontext* ctx, int image) #elif defined NANOVG_GLES2 GLuint nvglImageHandleGLES2(NVGcontext* ctx, int image) #elif defined NANOVG_GLES3 GLuint nvglImageHandleGLES3(NVGcontext* ctx, int image) #endif { GLNVGcontext* gl = (GLNVGcontext*)nvgInternalParams(ctx)->userPtr; GLNVGtexture* tex = glnvg__findTexture(gl, image); return tex->tex; } #endif /* NANOVG_GL_IMPLEMENTATION */ vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/src/nanovg_gl_utils.h000066400000000000000000000113071461511344300317400ustar00rootroot00000000000000// // Copyright (c) 2009-2013 Mikko Mononen memon@inside.org // // This software is provided 'as-is', without any express or implied // warranty. In no event will the authors be held liable for any damages // arising from the use of this software. // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it // freely, subject to the following restrictions: // 1. The origin of this software must not be misrepresented; you must not // claim that you wrote the original software. If you use this software // in a product, an acknowledgment in the product documentation would be // appreciated but is not required. // 2. Altered source versions must be plainly marked as such, and must not be // misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. // #ifndef NANOVG_GL_UTILS_H #define NANOVG_GL_UTILS_H struct NVGLUframebuffer { NVGcontext* ctx; GLuint fbo; GLuint rbo; GLuint texture; int image; }; typedef struct NVGLUframebuffer NVGLUframebuffer; // Helper function to create GL frame buffer to render to. void nvgluBindFramebuffer(NVGLUframebuffer* fb); NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int w, int h, int imageFlags); void nvgluDeleteFramebuffer(NVGLUframebuffer* fb); #endif // NANOVG_GL_UTILS_H #ifdef NANOVG_GL_IMPLEMENTATION #if defined(NANOVG_GL3) || defined(NANOVG_GLES2) || defined(NANOVG_GLES3) // FBO is core in OpenGL 3>. # define NANOVG_FBO_VALID 1 #elif defined(NANOVG_GL2) // On OS X including glext defines FBO on GL2 too. # ifdef __APPLE__ # include # define NANOVG_FBO_VALID 1 # endif #endif static GLint defaultFBO = -1; NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int w, int h, int imageFlags) { #ifdef NANOVG_FBO_VALID GLint defaultFBO; GLint defaultRBO; NVGLUframebuffer* fb = NULL; glGetIntegerv(GL_FRAMEBUFFER_BINDING, &defaultFBO); glGetIntegerv(GL_RENDERBUFFER_BINDING, &defaultRBO); fb = (NVGLUframebuffer*)malloc(sizeof(NVGLUframebuffer)); if (fb == NULL) goto error; memset(fb, 0, sizeof(NVGLUframebuffer)); fb->image = nvgCreateImageRGBA(ctx, w, h, imageFlags | NVG_IMAGE_FLIPY | NVG_IMAGE_PREMULTIPLIED, NULL); #if defined NANOVG_GL2 fb->texture = nvglImageHandleGL2(ctx, fb->image); #elif defined NANOVG_GL3 fb->texture = nvglImageHandleGL3(ctx, fb->image); #elif defined NANOVG_GLES2 fb->texture = nvglImageHandleGLES2(ctx, fb->image); #elif defined NANOVG_GLES3 fb->texture = nvglImageHandleGLES3(ctx, fb->image); #endif fb->ctx = ctx; // frame buffer object glGenFramebuffers(1, &fb->fbo); glBindFramebuffer(GL_FRAMEBUFFER, fb->fbo); // render buffer object glGenRenderbuffers(1, &fb->rbo); glBindRenderbuffer(GL_RENDERBUFFER, fb->rbo); glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, w, h); // combine all glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fb->texture, 0); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, fb->rbo); if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { #ifdef GL_DEPTH24_STENCIL8 // If GL_STENCIL_INDEX8 is not supported, try GL_DEPTH24_STENCIL8 as a fallback. // Some graphics cards require a depth buffer along with a stencil. glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, w, h); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fb->texture, 0); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, fb->rbo); if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) #endif // GL_DEPTH24_STENCIL8 goto error; } glBindFramebuffer(GL_FRAMEBUFFER, defaultFBO); glBindRenderbuffer(GL_RENDERBUFFER, defaultRBO); return fb; error: glBindFramebuffer(GL_FRAMEBUFFER, defaultFBO); glBindRenderbuffer(GL_RENDERBUFFER, defaultRBO); nvgluDeleteFramebuffer(fb); return NULL; #else NVG_NOTUSED(ctx); NVG_NOTUSED(w); NVG_NOTUSED(h); NVG_NOTUSED(imageFlags); return NULL; #endif } void nvgluBindFramebuffer(NVGLUframebuffer* fb) { #ifdef NANOVG_FBO_VALID if (defaultFBO == -1) glGetIntegerv(GL_FRAMEBUFFER_BINDING, &defaultFBO); glBindFramebuffer(GL_FRAMEBUFFER, fb != NULL ? fb->fbo : defaultFBO); #else NVG_NOTUSED(fb); #endif } void nvgluDeleteFramebuffer(NVGLUframebuffer* fb) { #ifdef NANOVG_FBO_VALID if (fb == NULL) return; if (fb->fbo != 0) glDeleteFramebuffers(1, &fb->fbo); if (fb->rbo != 0) glDeleteRenderbuffers(1, &fb->rbo); if (fb->image >= 0) nvgDeleteImage(fb->ctx, fb->image); fb->ctx = NULL; fb->fbo = 0; fb->rbo = 0; fb->texture = 0; fb->image = -1; free(fb); #else NVG_NOTUSED(fb); #endif } #endif // NANOVG_GL_IMPLEMENTATION vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/src/stb_image.h000066400000000000000000006741251461511344300305150ustar00rootroot00000000000000/* stb_image - v2.10 - public domain image loader - http://nothings.org/stb_image.h no warranty implied; use at your own risk Do this: #define STB_IMAGE_IMPLEMENTATION before you include this file in *one* C or C++ file to create the implementation. // i.e. it should look like this: #include ... #include ... #include ... #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free QUICK NOTES: Primarily of interest to game developers and other people who can avoid problematic images and only need the trivial interface JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) PNG 1/2/4/8-bit-per-channel (16 bpc not supported) TGA (not sure what subset, if a subset) BMP non-1bpp, non-RLE PSD (composited view only, no extra channels, 8/16 bit-per-channel) GIF (*comp always reports as 4-channel) HDR (radiance rgbE format) PIC (Softimage PIC) PNM (PPM and PGM binary only) Animated GIF still needs a proper API, but here's one way to do it: http://gist.github.com/urraka/685d9a6340b26b830d49 - decode from memory or through FILE (define STBI_NO_STDIO to remove code) - decode from arbitrary I/O callbacks - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) Full documentation under "DOCUMENTATION" below. Revision 2.00 release notes: - Progressive JPEG is now supported. - PPM and PGM binary formats are now supported, thanks to Ken Miller. - x86 platforms now make use of SSE2 SIMD instructions for JPEG decoding, and ARM platforms can use NEON SIMD if requested. This work was done by Fabian "ryg" Giesen. SSE2 is used by default, but NEON must be enabled explicitly; see docs. With other JPEG optimizations included in this version, we see 2x speedup on a JPEG on an x86 machine, and a 1.5x speedup on a JPEG on an ARM machine, relative to previous versions of this library. The same results will not obtain for all JPGs and for all x86/ARM machines. (Note that progressive JPEGs are significantly slower to decode than regular JPEGs.) This doesn't mean that this is the fastest JPEG decoder in the land; rather, it brings it closer to parity with standard libraries. If you want the fastest decode, look elsewhere. (See "Philosophy" section of docs below.) See final bullet items below for more info on SIMD. - Added STBI_MALLOC, STBI_REALLOC, and STBI_FREE macros for replacing the memory allocator. Unlike other STBI libraries, these macros don't support a context parameter, so if you need to pass a context in to the allocator, you'll have to store it in a global or a thread-local variable. - Split existing STBI_NO_HDR flag into two flags, STBI_NO_HDR and STBI_NO_LINEAR. STBI_NO_HDR: suppress implementation of .hdr reader format STBI_NO_LINEAR: suppress high-dynamic-range light-linear float API - You can suppress implementation of any of the decoders to reduce your code footprint by #defining one or more of the following symbols before creating the implementation. STBI_NO_JPEG STBI_NO_PNG STBI_NO_BMP STBI_NO_PSD STBI_NO_TGA STBI_NO_GIF STBI_NO_HDR STBI_NO_PIC STBI_NO_PNM (.ppm and .pgm) - You can request *only* certain decoders and suppress all other ones (this will be more forward-compatible, as addition of new decoders doesn't require you to disable them explicitly): STBI_ONLY_JPEG STBI_ONLY_PNG STBI_ONLY_BMP STBI_ONLY_PSD STBI_ONLY_TGA STBI_ONLY_GIF STBI_ONLY_HDR STBI_ONLY_PIC STBI_ONLY_PNM (.ppm and .pgm) Note that you can define multiples of these, and you will get all of them ("only x" and "only y" is interpreted to mean "only x&y"). - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB - Compilation of all SIMD code can be suppressed with #define STBI_NO_SIMD It should not be necessary to disable SIMD unless you have issues compiling (e.g. using an x86 compiler which doesn't support SSE intrinsics or that doesn't support the method used to detect SSE2 support at run-time), and even those can be reported as bugs so I can refine the built-in compile-time checking to be smarter. - The old STBI_SIMD system which allowed installing a user-defined IDCT etc. has been removed. If you need this, don't upgrade. My assumption is that almost nobody was doing this, and those who were will find the built-in SIMD more satisfactory anyway. - RGB values computed for JPEG images are slightly different from previous versions of stb_image. (This is due to using less integer precision in SIMD.) The C code has been adjusted so that the same RGB values will be computed regardless of whether SIMD support is available, so your app should always produce consistent results. But these results are slightly different from previous versions. (Specifically, about 3% of available YCbCr values will compute different RGB results from pre-1.49 versions by +-1; most of the deviating values are one smaller in the G channel.) - If you must produce consistent results with previous versions of stb_image, #define STBI_JPEG_OLD and you will get the same results you used to; however, you will not get the SIMD speedups for the YCbCr-to-RGB conversion step (although you should still see significant JPEG speedup from the other changes). Please note that STBI_JPEG_OLD is a temporary feature; it will be removed in future versions of the library. It is only intended for near-term back-compatibility use. Latest revision history: 2.10 (2016-01-22) avoid warning introduced in 2.09 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA 2.07 (2015-09-13) partial animated GIF support limited 16-bit PSD support minor bugs, code cleanup, and compiler warnings 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit 2.03 (2015-04-12) additional corruption checking stbi_set_flip_vertically_on_load fix NEON support; fix mingw support 2.02 (2015-01-19) fix incorrect assert, fix warning 2.01 (2015-01-17) fix various warnings 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG 2.00 (2014-12-25) optimize JPEG, including x86 SSE2 & ARM NEON SIMD progressive JPEG PGM/PPM support STBI_MALLOC,STBI_REALLOC,STBI_FREE STBI_NO_*, STBI_ONLY_* GIF bugfix 1.48 (2014-12-14) fix incorrectly-named assert() 1.47 (2014-12-14) 1/2/4-bit PNG support (both grayscale and paletted) optimize PNG fix bug in interlaced PNG with user-specified channel count See end of file for full revision history. ============================ Contributors ========================= Image formats Extensions, features Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) urraka@github (animated gif) Junggon Kim (PNM comments) Daniel Gibson (16-bit TGA) Optimizations & bugfixes Fabian "ryg" Giesen Arseny Kapoulkine Bug & warning fixes Marc LeBlanc David Woo Guillaume George Martins Mozeiko Christpher Lloyd Martin Golini Jerry Jansson Joseph Thomson Dave Moore Roy Eltham Hayaki Saito Phil Jordan Won Chun Luke Graham Johan Duparc Nathan Reed the Horde3D community Thomas Ruf Ronny Chevalier Nick Verigakis Janez Zemva John Bartholomew Michal Cichon svdijk@github Jonathan Blow Ken Hamada Tero Hanninen Baldur Karlsson Laurent Gomila Cort Stratton Sergio Gonzalez romigrou@github Aruelien Pocheville Thibault Reuille Cass Everitt Ryamond Barbiero Paul Du Bois Engin Manap Blazej Dariusz Roszkowski Michaelangel007@github LICENSE This software is in the public domain. Where that dedication is not recognized, you are granted a perpetual, irrevocable license to copy, distribute, and modify this file as you see fit. */ #ifndef STBI_INCLUDE_STB_IMAGE_H #define STBI_INCLUDE_STB_IMAGE_H // DOCUMENTATION // // Limitations: // - no 16-bit-per-channel PNG // - no 12-bit-per-channel JPEG // - no JPEGs with arithmetic coding // - no 1-bit BMP // - GIF always returns *comp=4 // // Basic usage (see HDR discussion below for HDR usage): // int x,y,n; // unsigned char *data = stbi_load(filename, &x, &y, &n, 0); // // ... process data if not NULL ... // // ... x = width, y = height, n = # 8-bit components per pixel ... // // ... replace '0' with '1'..'4' to force that many components per pixel // // ... but 'n' will always be the number that it would have been if you said 0 // stbi_image_free(data) // // Standard parameters: // int *x -- outputs image width in pixels // int *y -- outputs image height in pixels // int *comp -- outputs # of image components in image file // int req_comp -- if non-zero, # of image components requested in result // // The return value from an image loader is an 'unsigned char *' which points // to the pixel data, or NULL on an allocation failure or if the image is // corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, // with each pixel consisting of N interleaved 8-bit components; the first // pixel pointed to is top-left-most in the image. There is no padding between // image scanlines or between pixels, regardless of format. The number of // components N is 'req_comp' if req_comp is non-zero, or *comp otherwise. // If req_comp is non-zero, *comp has the number of components that _would_ // have been output otherwise. E.g. if you set req_comp to 4, you will always // get RGBA output, but you can check *comp to see if it's trivially opaque // because e.g. there were only 3 channels in the source image. // // An output image with N components has the following components interleaved // in this order in each pixel: // // N=#comp components // 1 grey // 2 grey, alpha // 3 red, green, blue // 4 red, green, blue, alpha // // If image loading fails for any reason, the return value will be NULL, // and *x, *y, *comp will be unchanged. The function stbi_failure_reason() // can be queried for an extremely brief, end-user unfriendly explanation // of why the load failed. Define STBI_NO_FAILURE_STRINGS to avoid // compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly // more user-friendly ones. // // Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. // // =========================================================================== // // Philosophy // // stb libraries are designed with the following priorities: // // 1. easy to use // 2. easy to maintain // 3. good performance // // Sometimes I let "good performance" creep up in priority over "easy to maintain", // and for best performance I may provide less-easy-to-use APIs that give higher // performance, in addition to the easy to use ones. Nevertheless, it's important // to keep in mind that from the standpoint of you, a client of this library, // all you care about is #1 and #3, and stb libraries do not emphasize #3 above all. // // Some secondary priorities arise directly from the first two, some of which // make more explicit reasons why performance can't be emphasized. // // - Portable ("ease of use") // - Small footprint ("easy to maintain") // - No dependencies ("ease of use") // // =========================================================================== // // I/O callbacks // // I/O callbacks allow you to read from arbitrary sources, like packaged // files or some other source. Data read from callbacks are processed // through a small internal buffer (currently 128 bytes) to try to reduce // overhead. // // The three functions you must define are "read" (reads some bytes of data), // "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). // // =========================================================================== // // SIMD support // // The JPEG decoder will try to automatically use SIMD kernels on x86 when // supported by the compiler. For ARM Neon support, you must explicitly // request it. // // (The old do-it-yourself SIMD API is no longer supported in the current // code.) // // On x86, SSE2 will automatically be used when available based on a run-time // test; if not, the generic C versions are used as a fall-back. On ARM targets, // the typical path is to have separate builds for NEON and non-NEON devices // (at least this is true for iOS and Android). Therefore, the NEON support is // toggled by a build flag: define STBI_NEON to get NEON loops. // // The output of the JPEG decoder is slightly different from versions where // SIMD support was introduced (that is, for versions before 1.49). The // difference is only +-1 in the 8-bit RGB channels, and only on a small // fraction of pixels. You can force the pre-1.49 behavior by defining // STBI_JPEG_OLD, but this will disable some of the SIMD decoding path // and hence cost some performance. // // If for some reason you do not want to use any of SIMD code, or if // you have issues compiling it, you can disable it entirely by // defining STBI_NO_SIMD. // // =========================================================================== // // HDR image support (disable by defining STBI_NO_HDR) // // stb_image now supports loading HDR images in general, and currently // the Radiance .HDR file format, although the support is provided // generically. You can still load any file through the existing interface; // if you attempt to load an HDR file, it will be automatically remapped to // LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; // both of these constants can be reconfigured through this interface: // // stbi_hdr_to_ldr_gamma(2.2f); // stbi_hdr_to_ldr_scale(1.0f); // // (note, do not use _inverse_ constants; stbi_image will invert them // appropriately). // // Additionally, there is a new, parallel interface for loading files as // (linear) floats to preserve the full dynamic range: // // float *data = stbi_loadf(filename, &x, &y, &n, 0); // // If you load LDR images through this interface, those images will // be promoted to floating point values, run through the inverse of // constants corresponding to the above: // // stbi_ldr_to_hdr_scale(1.0f); // stbi_ldr_to_hdr_gamma(2.2f); // // Finally, given a filename (or an open file or memory block--see header // file for details) containing image data, you can query for the "most // appropriate" interface to use (that is, whether the image is HDR or // not), using: // // stbi_is_hdr(char *filename); // // =========================================================================== // // iPhone PNG support: // // By default we convert iphone-formatted PNGs back to RGB, even though // they are internally encoded differently. You can disable this conversion // by by calling stbi_convert_iphone_png_to_rgb(0), in which case // you will always just get the native iphone "format" through (which // is BGR stored in RGB). // // Call stbi_set_unpremultiply_on_load(1) as well to force a divide per // pixel to remove any premultiplied alpha *only* if the image file explicitly // says there's premultiplied data (currently only happens in iPhone images, // and only if iPhone convert-to-rgb processing is on). // #ifndef STBI_NO_STDIO #include #endif // STBI_NO_STDIO #define STBI_VERSION 1 enum { STBI_default = 0, // only used for req_comp STBI_grey = 1, STBI_grey_alpha = 2, STBI_rgb = 3, STBI_rgb_alpha = 4 }; typedef unsigned char stbi_uc; #ifdef __cplusplus extern "C" { #endif #ifdef STB_IMAGE_STATIC #define STBIDEF static #else #define STBIDEF extern #endif ////////////////////////////////////////////////////////////////////////////// // // PRIMARY API - works on images of any type // // // load image by filename, open file, or memory buffer // typedef struct { int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative int (*eof) (void *user); // returns nonzero if we are at end of file/data } stbi_io_callbacks; STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *comp, int req_comp); STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *comp, int req_comp); STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *comp, int req_comp); #ifndef STBI_NO_STDIO STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *comp, int req_comp); // for stbi_load_from_file, file pointer is left pointing immediately after image #endif #ifndef STBI_NO_LINEAR STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *comp, int req_comp); STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp); STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp); #ifndef STBI_NO_STDIO STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *comp, int req_comp); #endif #endif #ifndef STBI_NO_HDR STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); STBIDEF void stbi_hdr_to_ldr_scale(float scale); #endif // STBI_NO_HDR #ifndef STBI_NO_LINEAR STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); STBIDEF void stbi_ldr_to_hdr_scale(float scale); #endif // STBI_NO_LINEAR // stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); #ifndef STBI_NO_STDIO STBIDEF int stbi_is_hdr (char const *filename); STBIDEF int stbi_is_hdr_from_file(FILE *f); #endif // STBI_NO_STDIO // get a VERY brief reason for failure // NOT THREADSAFE STBIDEF const char *stbi_failure_reason (void); // free the loaded image -- this is just free() STBIDEF void stbi_image_free (void *retval_from_stbi_load); // get image dimensions & components without fully decoding STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); #ifndef STBI_NO_STDIO STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); #endif // for image formats that explicitly notate that they have premultiplied alpha, // we just return the colors as stored in the file. set this flag to force // unpremultiplication. results are undefined if the unpremultiply overflow. STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); // indicate whether we should process iphone images back to canonical format, // or just pass them through "as-is" STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); // flip the image vertically, so the first pixel in the output array is the bottom left STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); // ZLIB client - used by PNG, available for other purposes STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); #ifdef __cplusplus } #endif // // //// end header file ///////////////////////////////////////////////////// #endif // STBI_INCLUDE_STB_IMAGE_H #ifdef STB_IMAGE_IMPLEMENTATION #if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ || defined(STBI_ONLY_ZLIB) #ifndef STBI_ONLY_JPEG #define STBI_NO_JPEG #endif #ifndef STBI_ONLY_PNG #define STBI_NO_PNG #endif #ifndef STBI_ONLY_BMP #define STBI_NO_BMP #endif #ifndef STBI_ONLY_PSD #define STBI_NO_PSD #endif #ifndef STBI_ONLY_TGA #define STBI_NO_TGA #endif #ifndef STBI_ONLY_GIF #define STBI_NO_GIF #endif #ifndef STBI_ONLY_HDR #define STBI_NO_HDR #endif #ifndef STBI_ONLY_PIC #define STBI_NO_PIC #endif #ifndef STBI_ONLY_PNM #define STBI_NO_PNM #endif #endif #if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) #define STBI_NO_ZLIB #endif #include #include // ptrdiff_t on osx #include #include #if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) #include // ldexp #endif #ifndef STBI_NO_STDIO #include #endif #ifndef STBI_ASSERT #include #define STBI_ASSERT(x) assert(x) #endif #ifndef _MSC_VER #ifdef __cplusplus #define stbi_inline inline #else #define stbi_inline #endif #else #define stbi_inline __forceinline #endif #ifdef _MSC_VER typedef unsigned short stbi__uint16; typedef signed short stbi__int16; typedef unsigned int stbi__uint32; typedef signed int stbi__int32; #else #include typedef uint16_t stbi__uint16; typedef int16_t stbi__int16; typedef uint32_t stbi__uint32; typedef int32_t stbi__int32; #endif // should produce compiler error if size is wrong typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; #ifdef _MSC_VER #define STBI_NOTUSED(v) (void)(v) #else #define STBI_NOTUSED(v) (void)sizeof(v) #endif #ifdef _MSC_VER #define STBI_HAS_LROTL #endif #ifdef STBI_HAS_LROTL #define stbi_lrot(x,y) _lrotl(x,y) #else #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (32 - (y)))) #endif #if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) // ok #elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) // ok #else #error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." #endif #ifndef STBI_MALLOC #define STBI_MALLOC(sz) malloc(sz) #define STBI_REALLOC(p,newsz) realloc(p,newsz) #define STBI_FREE(p) free(p) #endif #ifndef STBI_REALLOC_SIZED #define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) #endif // x86/x64 detection #if defined(__x86_64__) || defined(_M_X64) #define STBI__X64_TARGET #elif defined(__i386) || defined(_M_IX86) #define STBI__X86_TARGET #endif #if defined(__GNUC__) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) // NOTE: not clear do we actually need this for the 64-bit path? // gcc doesn't support sse2 intrinsics unless you compile with -msse2, // (but compiling with -msse2 allows the compiler to use SSE2 everywhere; // this is just broken and gcc are jerks for not fixing it properly // http://www.virtualdub.org/blog/pivot/entry.php?id=363 ) #define STBI_NO_SIMD #endif #if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) // Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET // // 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the // Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. // As a result, enabling SSE2 on 32-bit MinGW is dangerous when not // simultaneously enabling "-mstackrealign". // // See https://github.com/nothings/stb/issues/81 for more information. // // So default to no SSE2 on 32-bit MinGW. If you've read this far and added // -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. #define STBI_NO_SIMD #endif #if !defined(STBI_NO_SIMD) && defined(STBI__X86_TARGET) #define STBI_SSE2 #include #ifdef _MSC_VER #if _MSC_VER >= 1400 // not VC6 #include // __cpuid static int stbi__cpuid3(void) { int info[4]; __cpuid(info,1); return info[3]; } #else static int stbi__cpuid3(void) { int res; __asm { mov eax,1 cpuid mov res,edx } return res; } #endif #define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name static int stbi__sse2_available() { int info3 = stbi__cpuid3(); return ((info3 >> 26) & 1) != 0; } #else // assume GCC-style if not VC++ #define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) static int stbi__sse2_available() { #if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 // GCC 4.8 or later // GCC 4.8+ has a nice way to do this return __builtin_cpu_supports("sse2"); #else // portable way to do this, preferably without using GCC inline ASM? // just bail for now. return 0; #endif } #endif #endif // ARM NEON #if defined(STBI_NO_SIMD) && defined(STBI_NEON) #undef STBI_NEON #endif #ifdef STBI_NEON #include // assume GCC or Clang on ARM targets #define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) #endif #ifndef STBI_SIMD_ALIGN #define STBI_SIMD_ALIGN(type, name) type name #endif /////////////////////////////////////////////// // // stbi__context struct and start_xxx functions // stbi__context structure is our basic context used by all images, so it // contains all the IO context, plus some basic image information typedef struct { stbi__uint32 img_x, img_y; int img_n, img_out_n; stbi_io_callbacks io; void *io_user_data; int read_from_callbacks; int buflen; stbi_uc buffer_start[128]; stbi_uc *img_buffer, *img_buffer_end; stbi_uc *img_buffer_original, *img_buffer_original_end; } stbi__context; static void stbi__refill_buffer(stbi__context *s); // initialize a memory-decode context static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) { s->io.read = NULL; s->read_from_callbacks = 0; s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; } // initialize a callback-based context static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) { s->io = *c; s->io_user_data = user; s->buflen = sizeof(s->buffer_start); s->read_from_callbacks = 1; s->img_buffer_original = s->buffer_start; stbi__refill_buffer(s); s->img_buffer_original_end = s->img_buffer_end; } #ifndef STBI_NO_STDIO static int stbi__stdio_read(void *user, char *data, int size) { return (int) fread(data,1,size,(FILE*) user); } static void stbi__stdio_skip(void *user, int n) { fseek((FILE*) user, n, SEEK_CUR); } static int stbi__stdio_eof(void *user) { return feof((FILE*) user); } static stbi_io_callbacks stbi__stdio_callbacks = { stbi__stdio_read, stbi__stdio_skip, stbi__stdio_eof, }; static void stbi__start_file(stbi__context *s, FILE *f) { stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); } //static void stop_file(stbi__context *s) { } #endif // !STBI_NO_STDIO static void stbi__rewind(stbi__context *s) { // conceptually rewind SHOULD rewind to the beginning of the stream, // but we just rewind to the beginning of the initial buffer, because // we only use it after doing 'test', which only ever looks at at most 92 bytes s->img_buffer = s->img_buffer_original; s->img_buffer_end = s->img_buffer_original_end; } #ifndef STBI_NO_JPEG static int stbi__jpeg_test(stbi__context *s); static stbi_uc *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp); static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_PNG static int stbi__png_test(stbi__context *s); static stbi_uc *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp); static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_BMP static int stbi__bmp_test(stbi__context *s); static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp); static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_TGA static int stbi__tga_test(stbi__context *s); static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp); static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_PSD static int stbi__psd_test(stbi__context *s); static stbi_uc *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp); static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_HDR static int stbi__hdr_test(stbi__context *s); static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp); static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_PIC static int stbi__pic_test(stbi__context *s); static stbi_uc *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp); static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_GIF static int stbi__gif_test(stbi__context *s); static stbi_uc *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp); static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_PNM static int stbi__pnm_test(stbi__context *s); static stbi_uc *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp); static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); #endif // this is not threadsafe static const char *stbi__g_failure_reason; STBIDEF const char *stbi_failure_reason(void) { return stbi__g_failure_reason; } static int stbi__err(const char *str) { stbi__g_failure_reason = str; return 0; } static void *stbi__malloc(size_t size) { return STBI_MALLOC(size); } // stbi__err - error // stbi__errpf - error returning pointer to float // stbi__errpuc - error returning pointer to unsigned char #ifdef STBI_NO_FAILURE_STRINGS #define stbi__err(x,y) 0 #elif defined(STBI_FAILURE_USERMSG) #define stbi__err(x,y) stbi__err(y) #else #define stbi__err(x,y) stbi__err(x) #endif #define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) #define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) STBIDEF void stbi_image_free(void *retval_from_stbi_load) { STBI_FREE(retval_from_stbi_load); } #ifndef STBI_NO_LINEAR static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); #endif #ifndef STBI_NO_HDR static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); #endif static int stbi__vertically_flip_on_load = 0; STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) { stbi__vertically_flip_on_load = flag_true_if_should_flip; } static unsigned char *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) { #ifndef STBI_NO_JPEG if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp); #endif #ifndef STBI_NO_PNG if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp); #endif #ifndef STBI_NO_BMP if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp); #endif #ifndef STBI_NO_GIF if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp); #endif #ifndef STBI_NO_PSD if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp); #endif #ifndef STBI_NO_PIC if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp); #endif #ifndef STBI_NO_PNM if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp); #endif #ifndef STBI_NO_HDR if (stbi__hdr_test(s)) { float *hdr = stbi__hdr_load(s, x,y,comp,req_comp); return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); } #endif #ifndef STBI_NO_TGA // test tga last because it's a crappy test! if (stbi__tga_test(s)) return stbi__tga_load(s,x,y,comp,req_comp); #endif return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); } static unsigned char *stbi__load_flip(stbi__context *s, int *x, int *y, int *comp, int req_comp) { unsigned char *result = stbi__load_main(s, x, y, comp, req_comp); if (stbi__vertically_flip_on_load && result != NULL) { int w = *x, h = *y; int depth = req_comp ? req_comp : *comp; int row,col,z; stbi_uc temp; // @OPTIMIZE: use a bigger temp buffer and memcpy multiple pixels at once for (row = 0; row < (h>>1); row++) { for (col = 0; col < w; col++) { for (z = 0; z < depth; z++) { temp = result[(row * w + col) * depth + z]; result[(row * w + col) * depth + z] = result[((h - row - 1) * w + col) * depth + z]; result[((h - row - 1) * w + col) * depth + z] = temp; } } } } return result; } #ifndef STBI_NO_HDR static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) { if (stbi__vertically_flip_on_load && result != NULL) { int w = *x, h = *y; int depth = req_comp ? req_comp : *comp; int row,col,z; float temp; // @OPTIMIZE: use a bigger temp buffer and memcpy multiple pixels at once for (row = 0; row < (h>>1); row++) { for (col = 0; col < w; col++) { for (z = 0; z < depth; z++) { temp = result[(row * w + col) * depth + z]; result[(row * w + col) * depth + z] = result[((h - row - 1) * w + col) * depth + z]; result[((h - row - 1) * w + col) * depth + z] = temp; } } } } } #endif #ifndef STBI_NO_STDIO static FILE *stbi__fopen(char const *filename, char const *mode) { FILE *f; #if defined(_MSC_VER) && _MSC_VER >= 1400 if (0 != fopen_s(&f, filename, mode)) f=0; #else f = fopen(filename, mode); #endif return f; } STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) { FILE *f = stbi__fopen(filename, "rb"); unsigned char *result; if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); result = stbi_load_from_file(f,x,y,comp,req_comp); fclose(f); return result; } STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) { unsigned char *result; stbi__context s; stbi__start_file(&s,f); result = stbi__load_flip(&s,x,y,comp,req_comp); if (result) { // need to 'unget' all the characters in the IO buffer fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); } return result; } #endif //!STBI_NO_STDIO STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) { stbi__context s; stbi__start_mem(&s,buffer,len); return stbi__load_flip(&s,x,y,comp,req_comp); } STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) { stbi__context s; stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); return stbi__load_flip(&s,x,y,comp,req_comp); } #ifndef STBI_NO_LINEAR static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) { unsigned char *data; #ifndef STBI_NO_HDR if (stbi__hdr_test(s)) { float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp); if (hdr_data) stbi__float_postprocess(hdr_data,x,y,comp,req_comp); return hdr_data; } #endif data = stbi__load_flip(s, x, y, comp, req_comp); if (data) return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); } STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) { stbi__context s; stbi__start_mem(&s,buffer,len); return stbi__loadf_main(&s,x,y,comp,req_comp); } STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) { stbi__context s; stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); return stbi__loadf_main(&s,x,y,comp,req_comp); } #ifndef STBI_NO_STDIO STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) { float *result; FILE *f = stbi__fopen(filename, "rb"); if (!f) return stbi__errpf("can't fopen", "Unable to open file"); result = stbi_loadf_from_file(f,x,y,comp,req_comp); fclose(f); return result; } STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) { stbi__context s; stbi__start_file(&s,f); return stbi__loadf_main(&s,x,y,comp,req_comp); } #endif // !STBI_NO_STDIO #endif // !STBI_NO_LINEAR // these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is // defined, for API simplicity; if STBI_NO_LINEAR is defined, it always // reports false! STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) { #ifndef STBI_NO_HDR stbi__context s; stbi__start_mem(&s,buffer,len); return stbi__hdr_test(&s); #else STBI_NOTUSED(buffer); STBI_NOTUSED(len); return 0; #endif } #ifndef STBI_NO_STDIO STBIDEF int stbi_is_hdr (char const *filename) { FILE *f = stbi__fopen(filename, "rb"); int result=0; if (f) { result = stbi_is_hdr_from_file(f); fclose(f); } return result; } STBIDEF int stbi_is_hdr_from_file(FILE *f) { #ifndef STBI_NO_HDR stbi__context s; stbi__start_file(&s,f); return stbi__hdr_test(&s); #else STBI_NOTUSED(f); return 0; #endif } #endif // !STBI_NO_STDIO STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) { #ifndef STBI_NO_HDR stbi__context s; stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); return stbi__hdr_test(&s); #else STBI_NOTUSED(clbk); STBI_NOTUSED(user); return 0; #endif } #ifndef STBI_NO_LINEAR static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } #endif static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } ////////////////////////////////////////////////////////////////////////////// // // Common code used by all image loaders // enum { STBI__SCAN_load=0, STBI__SCAN_type, STBI__SCAN_header }; static void stbi__refill_buffer(stbi__context *s) { int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); if (n == 0) { // at end of file, treat same as if from memory, but need to handle case // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file s->read_from_callbacks = 0; s->img_buffer = s->buffer_start; s->img_buffer_end = s->buffer_start+1; *s->img_buffer = 0; } else { s->img_buffer = s->buffer_start; s->img_buffer_end = s->buffer_start + n; } } stbi_inline static stbi_uc stbi__get8(stbi__context *s) { if (s->img_buffer < s->img_buffer_end) return *s->img_buffer++; if (s->read_from_callbacks) { stbi__refill_buffer(s); return *s->img_buffer++; } return 0; } stbi_inline static int stbi__at_eof(stbi__context *s) { if (s->io.read) { if (!(s->io.eof)(s->io_user_data)) return 0; // if feof() is true, check if buffer = end // special case: we've only got the special 0 character at the end if (s->read_from_callbacks == 0) return 1; } return s->img_buffer >= s->img_buffer_end; } static void stbi__skip(stbi__context *s, int n) { if (n < 0) { s->img_buffer = s->img_buffer_end; return; } if (s->io.read) { int blen = (int) (s->img_buffer_end - s->img_buffer); if (blen < n) { s->img_buffer = s->img_buffer_end; (s->io.skip)(s->io_user_data, n - blen); return; } } s->img_buffer += n; } static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) { if (s->io.read) { int blen = (int) (s->img_buffer_end - s->img_buffer); if (blen < n) { int res, count; memcpy(buffer, s->img_buffer, blen); count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); res = (count == (n-blen)); s->img_buffer = s->img_buffer_end; return res; } } if (s->img_buffer+n <= s->img_buffer_end) { memcpy(buffer, s->img_buffer, n); s->img_buffer += n; return 1; } else return 0; } static int stbi__get16be(stbi__context *s) { int z = stbi__get8(s); return (z << 8) + stbi__get8(s); } static stbi__uint32 stbi__get32be(stbi__context *s) { stbi__uint32 z = stbi__get16be(s); return (z << 16) + stbi__get16be(s); } #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) // nothing #else static int stbi__get16le(stbi__context *s) { int z = stbi__get8(s); return z + (stbi__get8(s) << 8); } #endif #ifndef STBI_NO_BMP static stbi__uint32 stbi__get32le(stbi__context *s) { stbi__uint32 z = stbi__get16le(s); return z + (stbi__get16le(s) << 16); } #endif #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings ////////////////////////////////////////////////////////////////////////////// // // generic converter from built-in img_n to req_comp // individual types do this automatically as much as possible (e.g. jpeg // does all cases internally since it needs to colorspace convert anyway, // and it never has alpha, so very few cases ). png can automatically // interleave an alpha=255 channel, but falls back to this for other cases // // assume data buffer is malloced, so malloc a new one and free that one // only failure mode is malloc failing static stbi_uc stbi__compute_y(int r, int g, int b) { return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); } static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) { int i,j; unsigned char *good; if (req_comp == img_n) return data; STBI_ASSERT(req_comp >= 1 && req_comp <= 4); good = (unsigned char *) stbi__malloc(req_comp * x * y); if (good == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } for (j=0; j < (int) y; ++j) { unsigned char *src = data + j * x * img_n ; unsigned char *dest = good + j * x * req_comp; #define COMBO(a,b) ((a)*8+(b)) #define CASE(a,b) case COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) // convert source image with img_n components to one with req_comp components; // avoid switch per pixel, so use switch per scanline and massive macros switch (COMBO(img_n, req_comp)) { CASE(1,2) dest[0]=src[0], dest[1]=255; break; CASE(1,3) dest[0]=dest[1]=dest[2]=src[0]; break; CASE(1,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; break; CASE(2,1) dest[0]=src[0]; break; CASE(2,3) dest[0]=dest[1]=dest[2]=src[0]; break; CASE(2,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; break; CASE(3,4) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; break; CASE(3,1) dest[0]=stbi__compute_y(src[0],src[1],src[2]); break; CASE(3,2) dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; break; CASE(4,1) dest[0]=stbi__compute_y(src[0],src[1],src[2]); break; CASE(4,2) dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; break; CASE(4,3) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; break; default: STBI_ASSERT(0); } #undef CASE } STBI_FREE(data); return good; } #ifndef STBI_NO_LINEAR static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) { int i,k,n; float *output = (float *) stbi__malloc(x * y * comp * sizeof(float)); if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } // compute number of non-alpha components if (comp & 1) n = comp; else n = comp-1; for (i=0; i < x*y; ++i) { for (k=0; k < n; ++k) { output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); } if (k < comp) output[i*comp + k] = data[i*comp+k]/255.0f; } STBI_FREE(data); return output; } #endif #ifndef STBI_NO_HDR #define stbi__float2int(x) ((int) (x)) static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) { int i,k,n; stbi_uc *output = (stbi_uc *) stbi__malloc(x * y * comp); if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } // compute number of non-alpha components if (comp & 1) n = comp; else n = comp-1; for (i=0; i < x*y; ++i) { for (k=0; k < n; ++k) { float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; if (z < 0) z = 0; if (z > 255) z = 255; output[i*comp + k] = (stbi_uc) stbi__float2int(z); } if (k < comp) { float z = data[i*comp+k] * 255 + 0.5f; if (z < 0) z = 0; if (z > 255) z = 255; output[i*comp + k] = (stbi_uc) stbi__float2int(z); } } STBI_FREE(data); return output; } #endif ////////////////////////////////////////////////////////////////////////////// // // "baseline" JPEG/JFIF decoder // // simple implementation // - doesn't support delayed output of y-dimension // - simple interface (only one output format: 8-bit interleaved RGB) // - doesn't try to recover corrupt jpegs // - doesn't allow partial loading, loading multiple at once // - still fast on x86 (copying globals into locals doesn't help x86) // - allocates lots of intermediate memory (full size of all components) // - non-interleaved case requires this anyway // - allows good upsampling (see next) // high-quality // - upsampled channels are bilinearly interpolated, even across blocks // - quality integer IDCT derived from IJG's 'slow' // performance // - fast huffman; reasonable integer IDCT // - some SIMD kernels for common paths on targets with SSE2/NEON // - uses a lot of intermediate memory, could cache poorly #ifndef STBI_NO_JPEG // huffman decoding acceleration #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache typedef struct { stbi_uc fast[1 << FAST_BITS]; // weirdly, repacking this into AoS is a 10% speed loss, instead of a win stbi__uint16 code[256]; stbi_uc values[256]; stbi_uc size[257]; unsigned int maxcode[18]; int delta[17]; // old 'firstsymbol' - old 'firstcode' } stbi__huffman; typedef struct { stbi__context *s; stbi__huffman huff_dc[4]; stbi__huffman huff_ac[4]; stbi_uc dequant[4][64]; stbi__int16 fast_ac[4][1 << FAST_BITS]; // sizes for components, interleaved MCUs int img_h_max, img_v_max; int img_mcu_x, img_mcu_y; int img_mcu_w, img_mcu_h; // definition of jpeg image component struct { int id; int h,v; int tq; int hd,ha; int dc_pred; int x,y,w2,h2; stbi_uc *data; void *raw_data, *raw_coeff; stbi_uc *linebuf; short *coeff; // progressive only int coeff_w, coeff_h; // number of 8x8 coefficient blocks } img_comp[4]; stbi__uint32 code_buffer; // jpeg entropy-coded buffer int code_bits; // number of valid bits unsigned char marker; // marker seen while filling entropy buffer int nomore; // flag if we saw a marker so must stop int progressive; int spec_start; int spec_end; int succ_high; int succ_low; int eob_run; int scan_n, order[4]; int restart_interval, todo; // kernels void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); } stbi__jpeg; static int stbi__build_huffman(stbi__huffman *h, int *count) { int i,j,k=0,code; // build size list for each symbol (from JPEG spec) for (i=0; i < 16; ++i) for (j=0; j < count[i]; ++j) h->size[k++] = (stbi_uc) (i+1); h->size[k] = 0; // compute actual symbols (from jpeg spec) code = 0; k = 0; for(j=1; j <= 16; ++j) { // compute delta to add to code to compute symbol id h->delta[j] = k - code; if (h->size[k] == j) { while (h->size[k] == j) h->code[k++] = (stbi__uint16) (code++); if (code-1 >= (1 << j)) return stbi__err("bad code lengths","Corrupt JPEG"); } // compute largest code + 1 for this size, preshifted as needed later h->maxcode[j] = code << (16-j); code <<= 1; } h->maxcode[j] = 0xffffffff; // build non-spec acceleration table; 255 is flag for not-accelerated memset(h->fast, 255, 1 << FAST_BITS); for (i=0; i < k; ++i) { int s = h->size[i]; if (s <= FAST_BITS) { int c = h->code[i] << (FAST_BITS-s); int m = 1 << (FAST_BITS-s); for (j=0; j < m; ++j) { h->fast[c+j] = (stbi_uc) i; } } } return 1; } // build a table that decodes both magnitude and value of small ACs in // one go. static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) { int i; for (i=0; i < (1 << FAST_BITS); ++i) { stbi_uc fast = h->fast[i]; fast_ac[i] = 0; if (fast < 255) { int rs = h->values[fast]; int run = (rs >> 4) & 15; int magbits = rs & 15; int len = h->size[fast]; if (magbits && len + magbits <= FAST_BITS) { // magnitude code followed by receive_extend code int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); int m = 1 << (magbits - 1); if (k < m) k += (-1 << magbits) + 1; // if the result is small enough, we can fit it in fast_ac table if (k >= -128 && k <= 127) fast_ac[i] = (stbi__int16) ((k << 8) + (run << 4) + (len + magbits)); } } } } static void stbi__grow_buffer_unsafe(stbi__jpeg *j) { do { int b = j->nomore ? 0 : stbi__get8(j->s); if (b == 0xff) { int c = stbi__get8(j->s); if (c != 0) { j->marker = (unsigned char) c; j->nomore = 1; return; } } j->code_buffer |= b << (24 - j->code_bits); j->code_bits += 8; } while (j->code_bits <= 24); } // (1 << n) - 1 static stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; // decode a jpeg huffman value from the bitstream stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) { unsigned int temp; int c,k; if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); // look at the top FAST_BITS and determine what symbol ID it is, // if the code is <= FAST_BITS c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); k = h->fast[c]; if (k < 255) { int s = h->size[k]; if (s > j->code_bits) return -1; j->code_buffer <<= s; j->code_bits -= s; return h->values[k]; } // naive test is to shift the code_buffer down so k bits are // valid, then test against maxcode. To speed this up, we've // preshifted maxcode left so that it has (16-k) 0s at the // end; in other words, regardless of the number of bits, it // wants to be compared against something shifted to have 16; // that way we don't need to shift inside the loop. temp = j->code_buffer >> 16; for (k=FAST_BITS+1 ; ; ++k) if (temp < h->maxcode[k]) break; if (k == 17) { // error! code not found j->code_bits -= 16; return -1; } if (k > j->code_bits) return -1; // convert the huffman code to the symbol id c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); // convert the id to a symbol j->code_bits -= k; j->code_buffer <<= k; return h->values[c]; } // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); sgn = (stbi__int32)j->code_buffer >> 31; // sign bit is always in MSB k = stbi_lrot(j->code_buffer, n); STBI_ASSERT(n >= 0 && n < (int) (sizeof(stbi__bmask)/sizeof(*stbi__bmask))); j->code_buffer = k & ~stbi__bmask[n]; k &= stbi__bmask[n]; j->code_bits -= n; return k + (stbi__jbias[n] & ~sgn); } // get some unsigned bits stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) { unsigned int k; if (j->code_bits < n) stbi__grow_buffer_unsafe(j); k = stbi_lrot(j->code_buffer, n); j->code_buffer = k & ~stbi__bmask[n]; k &= stbi__bmask[n]; j->code_bits -= n; return k; } stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) { unsigned int k; if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); k = j->code_buffer; j->code_buffer <<= 1; --j->code_bits; return k & 0x80000000; } // given a value that's at position X in the zigzag stream, // where does it appear in the 8x8 matrix coded as row-major? static stbi_uc stbi__jpeg_dezigzag[64+15] = { 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63, // let corrupt input sample past end 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 }; // decode one 64-entry block-- static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi_uc *dequant) { int diff,dc,k; int t; if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); t = stbi__jpeg_huff_decode(j, hdc); if (t < 0) return stbi__err("bad huffman code","Corrupt JPEG"); // 0 all the ac values now so we can do it 32-bits at a time memset(data,0,64*sizeof(data[0])); diff = t ? stbi__extend_receive(j, t) : 0; dc = j->img_comp[b].dc_pred + diff; j->img_comp[b].dc_pred = dc; data[0] = (short) (dc * dequant[0]); // decode AC components, see JPEG spec k = 1; do { unsigned int zig; int c,r,s; if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); r = fac[c]; if (r) { // fast-AC path k += (r >> 4) & 15; // run s = r & 15; // combined length j->code_buffer <<= s; j->code_bits -= s; // decode into unzigzag'd location zig = stbi__jpeg_dezigzag[k++]; data[zig] = (short) ((r >> 8) * dequant[zig]); } else { int rs = stbi__jpeg_huff_decode(j, hac); if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); s = rs & 15; r = rs >> 4; if (s == 0) { if (rs != 0xf0) break; // end block k += 16; } else { k += r; // decode into unzigzag'd location zig = stbi__jpeg_dezigzag[k++]; data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); } } } while (k < 64); return 1; } static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) { int diff,dc; int t; if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); if (j->succ_high == 0) { // first scan for DC coefficient, must be first memset(data,0,64*sizeof(data[0])); // 0 all the ac values now t = stbi__jpeg_huff_decode(j, hdc); diff = t ? stbi__extend_receive(j, t) : 0; dc = j->img_comp[b].dc_pred + diff; j->img_comp[b].dc_pred = dc; data[0] = (short) (dc << j->succ_low); } else { // refinement scan for DC coefficient if (stbi__jpeg_get_bit(j)) data[0] += (short) (1 << j->succ_low); } return 1; } // @OPTIMIZE: store non-zigzagged during the decode passes, // and only de-zigzag when dequantizing static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) { int k; if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); if (j->succ_high == 0) { int shift = j->succ_low; if (j->eob_run) { --j->eob_run; return 1; } k = j->spec_start; do { unsigned int zig; int c,r,s; if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); r = fac[c]; if (r) { // fast-AC path k += (r >> 4) & 15; // run s = r & 15; // combined length j->code_buffer <<= s; j->code_bits -= s; zig = stbi__jpeg_dezigzag[k++]; data[zig] = (short) ((r >> 8) << shift); } else { int rs = stbi__jpeg_huff_decode(j, hac); if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); s = rs & 15; r = rs >> 4; if (s == 0) { if (r < 15) { j->eob_run = (1 << r); if (r) j->eob_run += stbi__jpeg_get_bits(j, r); --j->eob_run; break; } k += 16; } else { k += r; zig = stbi__jpeg_dezigzag[k++]; data[zig] = (short) (stbi__extend_receive(j,s) << shift); } } } while (k <= j->spec_end); } else { // refinement scan for these AC coefficients short bit = (short) (1 << j->succ_low); if (j->eob_run) { --j->eob_run; for (k = j->spec_start; k <= j->spec_end; ++k) { short *p = &data[stbi__jpeg_dezigzag[k]]; if (*p != 0) if (stbi__jpeg_get_bit(j)) if ((*p & bit)==0) { if (*p > 0) *p += bit; else *p -= bit; } } } else { k = j->spec_start; do { int r,s; int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); s = rs & 15; r = rs >> 4; if (s == 0) { if (r < 15) { j->eob_run = (1 << r) - 1; if (r) j->eob_run += stbi__jpeg_get_bits(j, r); r = 64; // force end of block } else { // r=15 s=0 should write 16 0s, so we just do // a run of 15 0s and then write s (which is 0), // so we don't have to do anything special here } } else { if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); // sign bit if (stbi__jpeg_get_bit(j)) s = bit; else s = -bit; } // advance by r while (k <= j->spec_end) { short *p = &data[stbi__jpeg_dezigzag[k++]]; if (*p != 0) { if (stbi__jpeg_get_bit(j)) if ((*p & bit)==0) { if (*p > 0) *p += bit; else *p -= bit; } } else { if (r == 0) { *p = (short) s; break; } --r; } } } while (k <= j->spec_end); } } return 1; } // take a -128..127 value and stbi__clamp it and convert to 0..255 stbi_inline static stbi_uc stbi__clamp(int x) { // trick to use a single test to catch both cases if ((unsigned int) x > 255) { if (x < 0) return 0; if (x > 255) return 255; } return (stbi_uc) x; } #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) #define stbi__fsh(x) ((x) << 12) // derived from jidctint -- DCT_ISLOW #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ p2 = s2; \ p3 = s6; \ p1 = (p2+p3) * stbi__f2f(0.5411961f); \ t2 = p1 + p3*stbi__f2f(-1.847759065f); \ t3 = p1 + p2*stbi__f2f( 0.765366865f); \ p2 = s0; \ p3 = s4; \ t0 = stbi__fsh(p2+p3); \ t1 = stbi__fsh(p2-p3); \ x0 = t0+t3; \ x3 = t0-t3; \ x1 = t1+t2; \ x2 = t1-t2; \ t0 = s7; \ t1 = s5; \ t2 = s3; \ t3 = s1; \ p3 = t0+t2; \ p4 = t1+t3; \ p1 = t0+t3; \ p2 = t1+t2; \ p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ t0 = t0*stbi__f2f( 0.298631336f); \ t1 = t1*stbi__f2f( 2.053119869f); \ t2 = t2*stbi__f2f( 3.072711026f); \ t3 = t3*stbi__f2f( 1.501321110f); \ p1 = p5 + p1*stbi__f2f(-0.899976223f); \ p2 = p5 + p2*stbi__f2f(-2.562915447f); \ p3 = p3*stbi__f2f(-1.961570560f); \ p4 = p4*stbi__f2f(-0.390180644f); \ t3 += p1+p4; \ t2 += p2+p3; \ t1 += p2+p4; \ t0 += p1+p3; static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) { int i,val[64],*v=val; stbi_uc *o; short *d = data; // columns for (i=0; i < 8; ++i,++d, ++v) { // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 && d[40]==0 && d[48]==0 && d[56]==0) { // no shortcut 0 seconds // (1|2|3|4|5|6|7)==0 0 seconds // all separate -0.047 seconds // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds int dcterm = d[0] << 2; v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; } else { STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) // constants scaled things up by 1<<12; let's bring them back // down, but keep 2 extra bits of precision x0 += 512; x1 += 512; x2 += 512; x3 += 512; v[ 0] = (x0+t3) >> 10; v[56] = (x0-t3) >> 10; v[ 8] = (x1+t2) >> 10; v[48] = (x1-t2) >> 10; v[16] = (x2+t1) >> 10; v[40] = (x2-t1) >> 10; v[24] = (x3+t0) >> 10; v[32] = (x3-t0) >> 10; } } for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { // no fast case since the first 1D IDCT spread components out STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) // constants scaled things up by 1<<12, plus we had 1<<2 from first // loop, plus horizontal and vertical each scale by sqrt(8) so together // we've got an extra 1<<3, so 1<<17 total we need to remove. // so we want to round that, which means adding 0.5 * 1<<17, // aka 65536. Also, we'll end up with -128 to 127 that we want // to encode as 0..255 by adding 128, so we'll add that before the shift x0 += 65536 + (128<<17); x1 += 65536 + (128<<17); x2 += 65536 + (128<<17); x3 += 65536 + (128<<17); // tried computing the shifts into temps, or'ing the temps to see // if any were out of range, but that was slower o[0] = stbi__clamp((x0+t3) >> 17); o[7] = stbi__clamp((x0-t3) >> 17); o[1] = stbi__clamp((x1+t2) >> 17); o[6] = stbi__clamp((x1-t2) >> 17); o[2] = stbi__clamp((x2+t1) >> 17); o[5] = stbi__clamp((x2-t1) >> 17); o[3] = stbi__clamp((x3+t0) >> 17); o[4] = stbi__clamp((x3-t0) >> 17); } } #ifdef STBI_SSE2 // sse2 integer IDCT. not the fastest possible implementation but it // produces bit-identical results to the generic C version so it's // fully "transparent". static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) { // This is constructed to match our regular (generic) integer IDCT exactly. __m128i row0, row1, row2, row3, row4, row5, row6, row7; __m128i tmp; // dot product constant: even elems=x, odd elems=y #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) // out(1) = c1[even]*x + c1[odd]*y #define dct_rot(out0,out1, x,y,c0,c1) \ __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) // out = in << 12 (in 16-bit, out 32-bit) #define dct_widen(out, in) \ __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) // wide add #define dct_wadd(out, a, b) \ __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ __m128i out##_h = _mm_add_epi32(a##_h, b##_h) // wide sub #define dct_wsub(out, a, b) \ __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) // butterfly a/b, add bias, then shift by "s" and pack #define dct_bfly32o(out0, out1, a,b,bias,s) \ { \ __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ dct_wadd(sum, abiased, b); \ dct_wsub(dif, abiased, b); \ out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ } // 8-bit interleave step (for transposes) #define dct_interleave8(a, b) \ tmp = a; \ a = _mm_unpacklo_epi8(a, b); \ b = _mm_unpackhi_epi8(tmp, b) // 16-bit interleave step (for transposes) #define dct_interleave16(a, b) \ tmp = a; \ a = _mm_unpacklo_epi16(a, b); \ b = _mm_unpackhi_epi16(tmp, b) #define dct_pass(bias,shift) \ { \ /* even part */ \ dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ __m128i sum04 = _mm_add_epi16(row0, row4); \ __m128i dif04 = _mm_sub_epi16(row0, row4); \ dct_widen(t0e, sum04); \ dct_widen(t1e, dif04); \ dct_wadd(x0, t0e, t3e); \ dct_wsub(x3, t0e, t3e); \ dct_wadd(x1, t1e, t2e); \ dct_wsub(x2, t1e, t2e); \ /* odd part */ \ dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ __m128i sum17 = _mm_add_epi16(row1, row7); \ __m128i sum35 = _mm_add_epi16(row3, row5); \ dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ dct_wadd(x4, y0o, y4o); \ dct_wadd(x5, y1o, y5o); \ dct_wadd(x6, y2o, y5o); \ dct_wadd(x7, y3o, y4o); \ dct_bfly32o(row0,row7, x0,x7,bias,shift); \ dct_bfly32o(row1,row6, x1,x6,bias,shift); \ dct_bfly32o(row2,row5, x2,x5,bias,shift); \ dct_bfly32o(row3,row4, x3,x4,bias,shift); \ } __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); // rounding biases in column/row passes, see stbi__idct_block for explanation. __m128i bias_0 = _mm_set1_epi32(512); __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); // load row0 = _mm_load_si128((const __m128i *) (data + 0*8)); row1 = _mm_load_si128((const __m128i *) (data + 1*8)); row2 = _mm_load_si128((const __m128i *) (data + 2*8)); row3 = _mm_load_si128((const __m128i *) (data + 3*8)); row4 = _mm_load_si128((const __m128i *) (data + 4*8)); row5 = _mm_load_si128((const __m128i *) (data + 5*8)); row6 = _mm_load_si128((const __m128i *) (data + 6*8)); row7 = _mm_load_si128((const __m128i *) (data + 7*8)); // column pass dct_pass(bias_0, 10); { // 16bit 8x8 transpose pass 1 dct_interleave16(row0, row4); dct_interleave16(row1, row5); dct_interleave16(row2, row6); dct_interleave16(row3, row7); // transpose pass 2 dct_interleave16(row0, row2); dct_interleave16(row1, row3); dct_interleave16(row4, row6); dct_interleave16(row5, row7); // transpose pass 3 dct_interleave16(row0, row1); dct_interleave16(row2, row3); dct_interleave16(row4, row5); dct_interleave16(row6, row7); } // row pass dct_pass(bias_1, 17); { // pack __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 __m128i p1 = _mm_packus_epi16(row2, row3); __m128i p2 = _mm_packus_epi16(row4, row5); __m128i p3 = _mm_packus_epi16(row6, row7); // 8bit 8x8 transpose pass 1 dct_interleave8(p0, p2); // a0e0a1e1... dct_interleave8(p1, p3); // c0g0c1g1... // transpose pass 2 dct_interleave8(p0, p1); // a0c0e0g0... dct_interleave8(p2, p3); // b0d0f0h0... // transpose pass 3 dct_interleave8(p0, p2); // a0b0c0d0... dct_interleave8(p1, p3); // a4b4c4d4... // store _mm_storel_epi64((__m128i *) out, p0); out += out_stride; _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; _mm_storel_epi64((__m128i *) out, p2); out += out_stride; _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; _mm_storel_epi64((__m128i *) out, p1); out += out_stride; _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; _mm_storel_epi64((__m128i *) out, p3); out += out_stride; _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); } #undef dct_const #undef dct_rot #undef dct_widen #undef dct_wadd #undef dct_wsub #undef dct_bfly32o #undef dct_interleave8 #undef dct_interleave16 #undef dct_pass } #endif // STBI_SSE2 #ifdef STBI_NEON // NEON integer IDCT. should produce bit-identical // results to the generic C version. static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) { int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); #define dct_long_mul(out, inq, coeff) \ int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) #define dct_long_mac(out, acc, inq, coeff) \ int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) #define dct_widen(out, inq) \ int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) // wide add #define dct_wadd(out, a, b) \ int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ int32x4_t out##_h = vaddq_s32(a##_h, b##_h) // wide sub #define dct_wsub(out, a, b) \ int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ int32x4_t out##_h = vsubq_s32(a##_h, b##_h) // butterfly a/b, then shift using "shiftop" by "s" and pack #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ { \ dct_wadd(sum, a, b); \ dct_wsub(dif, a, b); \ out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ } #define dct_pass(shiftop, shift) \ { \ /* even part */ \ int16x8_t sum26 = vaddq_s16(row2, row6); \ dct_long_mul(p1e, sum26, rot0_0); \ dct_long_mac(t2e, p1e, row6, rot0_1); \ dct_long_mac(t3e, p1e, row2, rot0_2); \ int16x8_t sum04 = vaddq_s16(row0, row4); \ int16x8_t dif04 = vsubq_s16(row0, row4); \ dct_widen(t0e, sum04); \ dct_widen(t1e, dif04); \ dct_wadd(x0, t0e, t3e); \ dct_wsub(x3, t0e, t3e); \ dct_wadd(x1, t1e, t2e); \ dct_wsub(x2, t1e, t2e); \ /* odd part */ \ int16x8_t sum15 = vaddq_s16(row1, row5); \ int16x8_t sum17 = vaddq_s16(row1, row7); \ int16x8_t sum35 = vaddq_s16(row3, row5); \ int16x8_t sum37 = vaddq_s16(row3, row7); \ int16x8_t sumodd = vaddq_s16(sum17, sum35); \ dct_long_mul(p5o, sumodd, rot1_0); \ dct_long_mac(p1o, p5o, sum17, rot1_1); \ dct_long_mac(p2o, p5o, sum35, rot1_2); \ dct_long_mul(p3o, sum37, rot2_0); \ dct_long_mul(p4o, sum15, rot2_1); \ dct_wadd(sump13o, p1o, p3o); \ dct_wadd(sump24o, p2o, p4o); \ dct_wadd(sump23o, p2o, p3o); \ dct_wadd(sump14o, p1o, p4o); \ dct_long_mac(x4, sump13o, row7, rot3_0); \ dct_long_mac(x5, sump24o, row5, rot3_1); \ dct_long_mac(x6, sump23o, row3, rot3_2); \ dct_long_mac(x7, sump14o, row1, rot3_3); \ dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ } // load row0 = vld1q_s16(data + 0*8); row1 = vld1q_s16(data + 1*8); row2 = vld1q_s16(data + 2*8); row3 = vld1q_s16(data + 3*8); row4 = vld1q_s16(data + 4*8); row5 = vld1q_s16(data + 5*8); row6 = vld1q_s16(data + 6*8); row7 = vld1q_s16(data + 7*8); // add DC bias row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); // column pass dct_pass(vrshrn_n_s32, 10); // 16bit 8x8 transpose { // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. // whether compilers actually get this is another story, sadly. #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } // pass 1 dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 dct_trn16(row2, row3); dct_trn16(row4, row5); dct_trn16(row6, row7); // pass 2 dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 dct_trn32(row1, row3); dct_trn32(row4, row6); dct_trn32(row5, row7); // pass 3 dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 dct_trn64(row1, row5); dct_trn64(row2, row6); dct_trn64(row3, row7); #undef dct_trn16 #undef dct_trn32 #undef dct_trn64 } // row pass // vrshrn_n_s32 only supports shifts up to 16, we need // 17. so do a non-rounding shift of 16 first then follow // up with a rounding shift by 1. dct_pass(vshrn_n_s32, 16); { // pack and round uint8x8_t p0 = vqrshrun_n_s16(row0, 1); uint8x8_t p1 = vqrshrun_n_s16(row1, 1); uint8x8_t p2 = vqrshrun_n_s16(row2, 1); uint8x8_t p3 = vqrshrun_n_s16(row3, 1); uint8x8_t p4 = vqrshrun_n_s16(row4, 1); uint8x8_t p5 = vqrshrun_n_s16(row5, 1); uint8x8_t p6 = vqrshrun_n_s16(row6, 1); uint8x8_t p7 = vqrshrun_n_s16(row7, 1); // again, these can translate into one instruction, but often don't. #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } // sadly can't use interleaved stores here since we only write // 8 bytes to each scan line! // 8x8 8-bit transpose pass 1 dct_trn8_8(p0, p1); dct_trn8_8(p2, p3); dct_trn8_8(p4, p5); dct_trn8_8(p6, p7); // pass 2 dct_trn8_16(p0, p2); dct_trn8_16(p1, p3); dct_trn8_16(p4, p6); dct_trn8_16(p5, p7); // pass 3 dct_trn8_32(p0, p4); dct_trn8_32(p1, p5); dct_trn8_32(p2, p6); dct_trn8_32(p3, p7); // store vst1_u8(out, p0); out += out_stride; vst1_u8(out, p1); out += out_stride; vst1_u8(out, p2); out += out_stride; vst1_u8(out, p3); out += out_stride; vst1_u8(out, p4); out += out_stride; vst1_u8(out, p5); out += out_stride; vst1_u8(out, p6); out += out_stride; vst1_u8(out, p7); #undef dct_trn8_8 #undef dct_trn8_16 #undef dct_trn8_32 } #undef dct_long_mul #undef dct_long_mac #undef dct_widen #undef dct_wadd #undef dct_wsub #undef dct_bfly32o #undef dct_pass } #endif // STBI_NEON #define STBI__MARKER_none 0xff // if there's a pending marker from the entropy stream, return that // otherwise, fetch from the stream and get a marker. if there's no // marker, return 0xff, which is never a valid marker value static stbi_uc stbi__get_marker(stbi__jpeg *j) { stbi_uc x; if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } x = stbi__get8(j->s); if (x != 0xff) return STBI__MARKER_none; while (x == 0xff) x = stbi__get8(j->s); return x; } // in each scan, we'll have scan_n components, and the order // of the components is specified by order[] #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) // after a restart interval, stbi__jpeg_reset the entropy decoder and // the dc prediction static void stbi__jpeg_reset(stbi__jpeg *j) { j->code_bits = 0; j->code_buffer = 0; j->nomore = 0; j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = 0; j->marker = STBI__MARKER_none; j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; j->eob_run = 0; // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, // since we don't even allow 1<<30 pixels } static int stbi__parse_entropy_coded_data(stbi__jpeg *z) { stbi__jpeg_reset(z); if (!z->progressive) { if (z->scan_n == 1) { int i,j; STBI_SIMD_ALIGN(short, data[64]); int n = z->order[0]; // non-interleaved data, we just need to process one block at a time, // in trivial scanline order // number of blocks to do just depends on how many actual "pixels" this // component has, independent of interleaved MCU blocking and such int w = (z->img_comp[n].x+7) >> 3; int h = (z->img_comp[n].y+7) >> 3; for (j=0; j < h; ++j) { for (i=0; i < w; ++i) { int ha = z->img_comp[n].ha; if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); // every data block is an MCU, so countdown the restart interval if (--z->todo <= 0) { if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); // if it's NOT a restart, then just bail, so we get corrupt data // rather than no data if (!STBI__RESTART(z->marker)) return 1; stbi__jpeg_reset(z); } } } return 1; } else { // interleaved int i,j,k,x,y; STBI_SIMD_ALIGN(short, data[64]); for (j=0; j < z->img_mcu_y; ++j) { for (i=0; i < z->img_mcu_x; ++i) { // scan an interleaved mcu... process scan_n components in order for (k=0; k < z->scan_n; ++k) { int n = z->order[k]; // scan out an mcu's worth of this component; that's just determined // by the basic H and V specified for the component for (y=0; y < z->img_comp[n].v; ++y) { for (x=0; x < z->img_comp[n].h; ++x) { int x2 = (i*z->img_comp[n].h + x)*8; int y2 = (j*z->img_comp[n].v + y)*8; int ha = z->img_comp[n].ha; if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); } } } // after all interleaved components, that's an interleaved MCU, // so now count down the restart interval if (--z->todo <= 0) { if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); if (!STBI__RESTART(z->marker)) return 1; stbi__jpeg_reset(z); } } } return 1; } } else { if (z->scan_n == 1) { int i,j; int n = z->order[0]; // non-interleaved data, we just need to process one block at a time, // in trivial scanline order // number of blocks to do just depends on how many actual "pixels" this // component has, independent of interleaved MCU blocking and such int w = (z->img_comp[n].x+7) >> 3; int h = (z->img_comp[n].y+7) >> 3; for (j=0; j < h; ++j) { for (i=0; i < w; ++i) { short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); if (z->spec_start == 0) { if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) return 0; } else { int ha = z->img_comp[n].ha; if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) return 0; } // every data block is an MCU, so countdown the restart interval if (--z->todo <= 0) { if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); if (!STBI__RESTART(z->marker)) return 1; stbi__jpeg_reset(z); } } } return 1; } else { // interleaved int i,j,k,x,y; for (j=0; j < z->img_mcu_y; ++j) { for (i=0; i < z->img_mcu_x; ++i) { // scan an interleaved mcu... process scan_n components in order for (k=0; k < z->scan_n; ++k) { int n = z->order[k]; // scan out an mcu's worth of this component; that's just determined // by the basic H and V specified for the component for (y=0; y < z->img_comp[n].v; ++y) { for (x=0; x < z->img_comp[n].h; ++x) { int x2 = (i*z->img_comp[n].h + x); int y2 = (j*z->img_comp[n].v + y); short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) return 0; } } } // after all interleaved components, that's an interleaved MCU, // so now count down the restart interval if (--z->todo <= 0) { if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); if (!STBI__RESTART(z->marker)) return 1; stbi__jpeg_reset(z); } } } return 1; } } } static void stbi__jpeg_dequantize(short *data, stbi_uc *dequant) { int i; for (i=0; i < 64; ++i) data[i] *= dequant[i]; } static void stbi__jpeg_finish(stbi__jpeg *z) { if (z->progressive) { // dequantize and idct the data int i,j,n; for (n=0; n < z->s->img_n; ++n) { int w = (z->img_comp[n].x+7) >> 3; int h = (z->img_comp[n].y+7) >> 3; for (j=0; j < h; ++j) { for (i=0; i < w; ++i) { short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); } } } } } static int stbi__process_marker(stbi__jpeg *z, int m) { int L; switch (m) { case STBI__MARKER_none: // no marker found return stbi__err("expected marker","Corrupt JPEG"); case 0xDD: // DRI - specify restart interval if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); z->restart_interval = stbi__get16be(z->s); return 1; case 0xDB: // DQT - define quantization table L = stbi__get16be(z->s)-2; while (L > 0) { int q = stbi__get8(z->s); int p = q >> 4; int t = q & 15,i; if (p != 0) return stbi__err("bad DQT type","Corrupt JPEG"); if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); for (i=0; i < 64; ++i) z->dequant[t][stbi__jpeg_dezigzag[i]] = stbi__get8(z->s); L -= 65; } return L==0; case 0xC4: // DHT - define huffman table L = stbi__get16be(z->s)-2; while (L > 0) { stbi_uc *v; int sizes[16],i,n=0; int q = stbi__get8(z->s); int tc = q >> 4; int th = q & 15; if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); for (i=0; i < 16; ++i) { sizes[i] = stbi__get8(z->s); n += sizes[i]; } L -= 17; if (tc == 0) { if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; v = z->huff_dc[th].values; } else { if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; v = z->huff_ac[th].values; } for (i=0; i < n; ++i) v[i] = stbi__get8(z->s); if (tc != 0) stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); L -= n; } return L==0; } // check for comment block or APP blocks if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { stbi__skip(z->s, stbi__get16be(z->s)-2); return 1; } return 0; } // after we see SOS static int stbi__process_scan_header(stbi__jpeg *z) { int i; int Ls = stbi__get16be(z->s); z->scan_n = stbi__get8(z->s); if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); for (i=0; i < z->scan_n; ++i) { int id = stbi__get8(z->s), which; int q = stbi__get8(z->s); for (which = 0; which < z->s->img_n; ++which) if (z->img_comp[which].id == id) break; if (which == z->s->img_n) return 0; // no match z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); z->order[i] = which; } { int aa; z->spec_start = stbi__get8(z->s); z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 aa = stbi__get8(z->s); z->succ_high = (aa >> 4); z->succ_low = (aa & 15); if (z->progressive) { if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) return stbi__err("bad SOS", "Corrupt JPEG"); } else { if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); z->spec_end = 63; } } return 1; } static int stbi__process_frame_header(stbi__jpeg *z, int scan) { stbi__context *s = z->s; int Lf,p,i,q, h_max=1,v_max=1,c; Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires c = stbi__get8(s); if (c != 3 && c != 1) return stbi__err("bad component count","Corrupt JPEG"); // JFIF requires s->img_n = c; for (i=0; i < c; ++i) { z->img_comp[i].data = NULL; z->img_comp[i].linebuf = NULL; } if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); for (i=0; i < s->img_n; ++i) { z->img_comp[i].id = stbi__get8(s); if (z->img_comp[i].id != i+1) // JFIF requires if (z->img_comp[i].id != i) // some version of jpegtran outputs non-JFIF-compliant files! return stbi__err("bad component ID","Corrupt JPEG"); q = stbi__get8(s); z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); } if (scan != STBI__SCAN_load) return 1; if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); for (i=0; i < s->img_n; ++i) { if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; } // compute interleaved mcu info z->img_h_max = h_max; z->img_v_max = v_max; z->img_mcu_w = h_max * 8; z->img_mcu_h = v_max * 8; z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; for (i=0; i < s->img_n; ++i) { // number of effective pixels (e.g. for non-interleaved MCU) z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; // to simplify generation, we'll allocate enough memory to decode // the bogus oversized data from using interleaved MCUs and their // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't // discard the extra data until colorspace conversion z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; z->img_comp[i].raw_data = stbi__malloc(z->img_comp[i].w2 * z->img_comp[i].h2+15); if (z->img_comp[i].raw_data == NULL) { for(--i; i >= 0; --i) { STBI_FREE(z->img_comp[i].raw_data); z->img_comp[i].raw_data = NULL; } return stbi__err("outofmem", "Out of memory"); } // align blocks for idct using mmx/sse z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); z->img_comp[i].linebuf = NULL; if (z->progressive) { z->img_comp[i].coeff_w = (z->img_comp[i].w2 + 7) >> 3; z->img_comp[i].coeff_h = (z->img_comp[i].h2 + 7) >> 3; z->img_comp[i].raw_coeff = STBI_MALLOC(z->img_comp[i].coeff_w * z->img_comp[i].coeff_h * 64 * sizeof(short) + 15); z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); } else { z->img_comp[i].coeff = 0; z->img_comp[i].raw_coeff = 0; } } return 1; } // use comparisons since in some cases we handle more than one case (e.g. SOF) #define stbi__DNL(x) ((x) == 0xdc) #define stbi__SOI(x) ((x) == 0xd8) #define stbi__EOI(x) ((x) == 0xd9) #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) #define stbi__SOS(x) ((x) == 0xda) #define stbi__SOF_progressive(x) ((x) == 0xc2) static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) { int m; z->marker = STBI__MARKER_none; // initialize cached marker to empty m = stbi__get_marker(z); if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); if (scan == STBI__SCAN_type) return 1; m = stbi__get_marker(z); while (!stbi__SOF(m)) { if (!stbi__process_marker(z,m)) return 0; m = stbi__get_marker(z); while (m == STBI__MARKER_none) { // some files have extra padding after their blocks, so ok, we'll scan if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); m = stbi__get_marker(z); } } z->progressive = stbi__SOF_progressive(m); if (!stbi__process_frame_header(z, scan)) return 0; return 1; } // decode image to YCbCr format static int stbi__decode_jpeg_image(stbi__jpeg *j) { int m; for (m = 0; m < 4; m++) { j->img_comp[m].raw_data = NULL; j->img_comp[m].raw_coeff = NULL; } j->restart_interval = 0; if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; m = stbi__get_marker(j); while (!stbi__EOI(m)) { if (stbi__SOS(m)) { if (!stbi__process_scan_header(j)) return 0; if (!stbi__parse_entropy_coded_data(j)) return 0; if (j->marker == STBI__MARKER_none ) { // handle 0s at the end of image data from IP Kamera 9060 while (!stbi__at_eof(j->s)) { int x = stbi__get8(j->s); if (x == 255) { j->marker = stbi__get8(j->s); break; } else if (x != 0) { return stbi__err("junk before marker", "Corrupt JPEG"); } } // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 } } else { if (!stbi__process_marker(j, m)) return 0; } m = stbi__get_marker(j); } if (j->progressive) stbi__jpeg_finish(j); return 1; } // static jfif-centered resampling (across block boundaries) typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, int w, int hs); #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) { STBI_NOTUSED(out); STBI_NOTUSED(in_far); STBI_NOTUSED(w); STBI_NOTUSED(hs); return in_near; } static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) { // need to generate two samples vertically for every one in input int i; STBI_NOTUSED(hs); for (i=0; i < w; ++i) out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); return out; } static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) { // need to generate two samples horizontally for every one in input int i; stbi_uc *input = in_near; if (w == 1) { // if only one sample, can't do any interpolation out[0] = out[1] = input[0]; return out; } out[0] = input[0]; out[1] = stbi__div4(input[0]*3 + input[1] + 2); for (i=1; i < w-1; ++i) { int n = 3*input[i]+2; out[i*2+0] = stbi__div4(n+input[i-1]); out[i*2+1] = stbi__div4(n+input[i+1]); } out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); out[i*2+1] = input[w-1]; STBI_NOTUSED(in_far); STBI_NOTUSED(hs); return out; } #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) { // need to generate 2x2 samples for every one in input int i,t0,t1; if (w == 1) { out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); return out; } t1 = 3*in_near[0] + in_far[0]; out[0] = stbi__div4(t1+2); for (i=1; i < w; ++i) { t0 = t1; t1 = 3*in_near[i]+in_far[i]; out[i*2-1] = stbi__div16(3*t0 + t1 + 8); out[i*2 ] = stbi__div16(3*t1 + t0 + 8); } out[w*2-1] = stbi__div4(t1+2); STBI_NOTUSED(hs); return out; } #if defined(STBI_SSE2) || defined(STBI_NEON) static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) { // need to generate 2x2 samples for every one in input int i=0,t0,t1; if (w == 1) { out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); return out; } t1 = 3*in_near[0] + in_far[0]; // process groups of 8 pixels for as long as we can. // note we can't handle the last pixel in a row in this loop // because we need to handle the filter boundary conditions. for (; i < ((w-1) & ~7); i += 8) { #if defined(STBI_SSE2) // load and perform the vertical filtering pass // this uses 3*x + y = 4*x + (y - x) __m128i zero = _mm_setzero_si128(); __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); __m128i farw = _mm_unpacklo_epi8(farb, zero); __m128i nearw = _mm_unpacklo_epi8(nearb, zero); __m128i diff = _mm_sub_epi16(farw, nearw); __m128i nears = _mm_slli_epi16(nearw, 2); __m128i curr = _mm_add_epi16(nears, diff); // current row // horizontal filter works the same based on shifted vers of current // row. "prev" is current row shifted right by 1 pixel; we need to // insert the previous pixel value (from t1). // "next" is current row shifted left by 1 pixel, with first pixel // of next block of 8 pixels added in. __m128i prv0 = _mm_slli_si128(curr, 2); __m128i nxt0 = _mm_srli_si128(curr, 2); __m128i prev = _mm_insert_epi16(prv0, t1, 0); __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); // horizontal filter, polyphase implementation since it's convenient: // even pixels = 3*cur + prev = cur*4 + (prev - cur) // odd pixels = 3*cur + next = cur*4 + (next - cur) // note the shared term. __m128i bias = _mm_set1_epi16(8); __m128i curs = _mm_slli_epi16(curr, 2); __m128i prvd = _mm_sub_epi16(prev, curr); __m128i nxtd = _mm_sub_epi16(next, curr); __m128i curb = _mm_add_epi16(curs, bias); __m128i even = _mm_add_epi16(prvd, curb); __m128i odd = _mm_add_epi16(nxtd, curb); // interleave even and odd pixels, then undo scaling. __m128i int0 = _mm_unpacklo_epi16(even, odd); __m128i int1 = _mm_unpackhi_epi16(even, odd); __m128i de0 = _mm_srli_epi16(int0, 4); __m128i de1 = _mm_srli_epi16(int1, 4); // pack and write output __m128i outv = _mm_packus_epi16(de0, de1); _mm_storeu_si128((__m128i *) (out + i*2), outv); #elif defined(STBI_NEON) // load and perform the vertical filtering pass // this uses 3*x + y = 4*x + (y - x) uint8x8_t farb = vld1_u8(in_far + i); uint8x8_t nearb = vld1_u8(in_near + i); int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); int16x8_t curr = vaddq_s16(nears, diff); // current row // horizontal filter works the same based on shifted vers of current // row. "prev" is current row shifted right by 1 pixel; we need to // insert the previous pixel value (from t1). // "next" is current row shifted left by 1 pixel, with first pixel // of next block of 8 pixels added in. int16x8_t prv0 = vextq_s16(curr, curr, 7); int16x8_t nxt0 = vextq_s16(curr, curr, 1); int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); // horizontal filter, polyphase implementation since it's convenient: // even pixels = 3*cur + prev = cur*4 + (prev - cur) // odd pixels = 3*cur + next = cur*4 + (next - cur) // note the shared term. int16x8_t curs = vshlq_n_s16(curr, 2); int16x8_t prvd = vsubq_s16(prev, curr); int16x8_t nxtd = vsubq_s16(next, curr); int16x8_t even = vaddq_s16(curs, prvd); int16x8_t odd = vaddq_s16(curs, nxtd); // undo scaling and round, then store with even/odd phases interleaved uint8x8x2_t o; o.val[0] = vqrshrun_n_s16(even, 4); o.val[1] = vqrshrun_n_s16(odd, 4); vst2_u8(out + i*2, o); #endif // "previous" value for next iter t1 = 3*in_near[i+7] + in_far[i+7]; } t0 = t1; t1 = 3*in_near[i] + in_far[i]; out[i*2] = stbi__div16(3*t1 + t0 + 8); for (++i; i < w; ++i) { t0 = t1; t1 = 3*in_near[i]+in_far[i]; out[i*2-1] = stbi__div16(3*t0 + t1 + 8); out[i*2 ] = stbi__div16(3*t1 + t0 + 8); } out[w*2-1] = stbi__div4(t1+2); STBI_NOTUSED(hs); return out; } #endif static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) { // resample with nearest-neighbor int i,j; STBI_NOTUSED(in_far); for (i=0; i < w; ++i) for (j=0; j < hs; ++j) out[i*hs+j] = in_near[i]; return out; } #ifdef STBI_JPEG_OLD // this is the same YCbCr-to-RGB calculation that stb_image has used // historically before the algorithm changes in 1.49 #define float2fixed(x) ((int) ((x) * 65536 + 0.5)) static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) { int i; for (i=0; i < count; ++i) { int y_fixed = (y[i] << 16) + 32768; // rounding int r,g,b; int cr = pcr[i] - 128; int cb = pcb[i] - 128; r = y_fixed + cr*float2fixed(1.40200f); g = y_fixed - cr*float2fixed(0.71414f) - cb*float2fixed(0.34414f); b = y_fixed + cb*float2fixed(1.77200f); r >>= 16; g >>= 16; b >>= 16; if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } out[0] = (stbi_uc)r; out[1] = (stbi_uc)g; out[2] = (stbi_uc)b; out[3] = 255; out += step; } } #else // this is a reduced-precision calculation of YCbCr-to-RGB introduced // to make sure the code produces the same results in both SIMD and scalar #define float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) { int i; for (i=0; i < count; ++i) { int y_fixed = (y[i] << 20) + (1<<19); // rounding int r,g,b; int cr = pcr[i] - 128; int cb = pcb[i] - 128; r = y_fixed + cr* float2fixed(1.40200f); g = y_fixed + (cr*-float2fixed(0.71414f)) + ((cb*-float2fixed(0.34414f)) & 0xffff0000); b = y_fixed + cb* float2fixed(1.77200f); r >>= 20; g >>= 20; b >>= 20; if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } out[0] = (stbi_uc)r; out[1] = (stbi_uc)g; out[2] = (stbi_uc)b; out[3] = 255; out += step; } } #endif #if defined(STBI_SSE2) || defined(STBI_NEON) static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) { int i = 0; #ifdef STBI_SSE2 // step == 3 is pretty ugly on the final interleave, and i'm not convinced // it's useful in practice (you wouldn't use it for textures, for example). // so just accelerate step == 4 case. if (step == 4) { // this is a fairly straightforward implementation and not super-optimized. __m128i signflip = _mm_set1_epi8(-0x80); __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); __m128i xw = _mm_set1_epi16(255); // alpha channel for (; i+7 < count; i += 8) { // load __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 // unpack to short (and left-shift cr, cb by 8) __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); // color transform __m128i yws = _mm_srli_epi16(yw, 4); __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); __m128i rws = _mm_add_epi16(cr0, yws); __m128i gwt = _mm_add_epi16(cb0, yws); __m128i bws = _mm_add_epi16(yws, cb1); __m128i gws = _mm_add_epi16(gwt, cr1); // descale __m128i rw = _mm_srai_epi16(rws, 4); __m128i bw = _mm_srai_epi16(bws, 4); __m128i gw = _mm_srai_epi16(gws, 4); // back to byte, set up for transpose __m128i brb = _mm_packus_epi16(rw, bw); __m128i gxb = _mm_packus_epi16(gw, xw); // transpose to interleave channels __m128i t0 = _mm_unpacklo_epi8(brb, gxb); __m128i t1 = _mm_unpackhi_epi8(brb, gxb); __m128i o0 = _mm_unpacklo_epi16(t0, t1); __m128i o1 = _mm_unpackhi_epi16(t0, t1); // store _mm_storeu_si128((__m128i *) (out + 0), o0); _mm_storeu_si128((__m128i *) (out + 16), o1); out += 32; } } #endif #ifdef STBI_NEON // in this version, step=3 support would be easy to add. but is there demand? if (step == 4) { // this is a fairly straightforward implementation and not super-optimized. uint8x8_t signflip = vdup_n_u8(0x80); int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); for (; i+7 < count; i += 8) { // load uint8x8_t y_bytes = vld1_u8(y + i); uint8x8_t cr_bytes = vld1_u8(pcr + i); uint8x8_t cb_bytes = vld1_u8(pcb + i); int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); // expand to s16 int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); int16x8_t crw = vshll_n_s8(cr_biased, 7); int16x8_t cbw = vshll_n_s8(cb_biased, 7); // color transform int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); int16x8_t rws = vaddq_s16(yws, cr0); int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); int16x8_t bws = vaddq_s16(yws, cb1); // undo scaling, round, convert to byte uint8x8x4_t o; o.val[0] = vqrshrun_n_s16(rws, 4); o.val[1] = vqrshrun_n_s16(gws, 4); o.val[2] = vqrshrun_n_s16(bws, 4); o.val[3] = vdup_n_u8(255); // store, interleaving r/g/b/a vst4_u8(out, o); out += 8*4; } } #endif for (; i < count; ++i) { int y_fixed = (y[i] << 20) + (1<<19); // rounding int r,g,b; int cr = pcr[i] - 128; int cb = pcb[i] - 128; r = y_fixed + cr* float2fixed(1.40200f); g = y_fixed + cr*-float2fixed(0.71414f) + ((cb*-float2fixed(0.34414f)) & 0xffff0000); b = y_fixed + cb* float2fixed(1.77200f); r >>= 20; g >>= 20; b >>= 20; if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } out[0] = (stbi_uc)r; out[1] = (stbi_uc)g; out[2] = (stbi_uc)b; out[3] = 255; out += step; } } #endif // set up the kernels static void stbi__setup_jpeg(stbi__jpeg *j) { j->idct_block_kernel = stbi__idct_block; j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; #ifdef STBI_SSE2 if (stbi__sse2_available()) { j->idct_block_kernel = stbi__idct_simd; #ifndef STBI_JPEG_OLD j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; #endif j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; } #endif #ifdef STBI_NEON j->idct_block_kernel = stbi__idct_simd; #ifndef STBI_JPEG_OLD j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; #endif j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; #endif } // clean up the temporary component buffers static void stbi__cleanup_jpeg(stbi__jpeg *j) { int i; for (i=0; i < j->s->img_n; ++i) { if (j->img_comp[i].raw_data) { STBI_FREE(j->img_comp[i].raw_data); j->img_comp[i].raw_data = NULL; j->img_comp[i].data = NULL; } if (j->img_comp[i].raw_coeff) { STBI_FREE(j->img_comp[i].raw_coeff); j->img_comp[i].raw_coeff = 0; j->img_comp[i].coeff = 0; } if (j->img_comp[i].linebuf) { STBI_FREE(j->img_comp[i].linebuf); j->img_comp[i].linebuf = NULL; } } } typedef struct { resample_row_func resample; stbi_uc *line0,*line1; int hs,vs; // expansion factor in each axis int w_lores; // horizontal pixels pre-expansion int ystep; // how far through vertical expansion we are int ypos; // which pre-expansion row we're on } stbi__resample; static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) { int n, decode_n; z->s->img_n = 0; // make stbi__cleanup_jpeg safe // validate req_comp if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); // load a jpeg image from whichever source, but leave in YCbCr format if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } // determine actual number of components to generate n = req_comp ? req_comp : z->s->img_n; if (z->s->img_n == 3 && n < 3) decode_n = 1; else decode_n = z->s->img_n; // resample and color-convert { int k; unsigned int i,j; stbi_uc *output; stbi_uc *coutput[4]; stbi__resample res_comp[4]; for (k=0; k < decode_n; ++k) { stbi__resample *r = &res_comp[k]; // allocate line buffer big enough for upsampling off the edges // with upsample factor of 4 z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } r->hs = z->img_h_max / z->img_comp[k].h; r->vs = z->img_v_max / z->img_comp[k].v; r->ystep = r->vs >> 1; r->w_lores = (z->s->img_x + r->hs-1) / r->hs; r->ypos = 0; r->line0 = r->line1 = z->img_comp[k].data; if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; else r->resample = stbi__resample_row_generic; } // can't error after this so, this is safe output = (stbi_uc *) stbi__malloc(n * z->s->img_x * z->s->img_y + 1); if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } // now go ahead and resample for (j=0; j < z->s->img_y; ++j) { stbi_uc *out = output + n * z->s->img_x * j; for (k=0; k < decode_n; ++k) { stbi__resample *r = &res_comp[k]; int y_bot = r->ystep >= (r->vs >> 1); coutput[k] = r->resample(z->img_comp[k].linebuf, y_bot ? r->line1 : r->line0, y_bot ? r->line0 : r->line1, r->w_lores, r->hs); if (++r->ystep >= r->vs) { r->ystep = 0; r->line0 = r->line1; if (++r->ypos < z->img_comp[k].y) r->line1 += z->img_comp[k].w2; } } if (n >= 3) { stbi_uc *y = coutput[0]; if (z->s->img_n == 3) { z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); } else for (i=0; i < z->s->img_x; ++i) { out[0] = out[1] = out[2] = y[i]; out[3] = 255; // not used if n==3 out += n; } } else { stbi_uc *y = coutput[0]; if (n == 1) for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; else for (i=0; i < z->s->img_x; ++i) *out++ = y[i], *out++ = 255; } } stbi__cleanup_jpeg(z); *out_x = z->s->img_x; *out_y = z->s->img_y; if (comp) *comp = z->s->img_n; // report original components, not output return output; } } static unsigned char *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { stbi__jpeg j; j.s = s; stbi__setup_jpeg(&j); return load_jpeg_image(&j, x,y,comp,req_comp); } static int stbi__jpeg_test(stbi__context *s) { int r; stbi__jpeg j; j.s = s; stbi__setup_jpeg(&j); r = stbi__decode_jpeg_header(&j, STBI__SCAN_type); stbi__rewind(s); return r; } static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) { if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { stbi__rewind( j->s ); return 0; } if (x) *x = j->s->img_x; if (y) *y = j->s->img_y; if (comp) *comp = j->s->img_n; return 1; } static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) { stbi__jpeg j; j.s = s; return stbi__jpeg_info_raw(&j, x, y, comp); } #endif // public domain zlib decode v0.2 Sean Barrett 2006-11-18 // simple implementation // - all input must be provided in an upfront buffer // - all output is written to a single output buffer (can malloc/realloc) // performance // - fast huffman #ifndef STBI_NO_ZLIB // fast-way is faster to check than jpeg huffman, but slow way is slower #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) // zlib-style huffman encoding // (jpegs packs from left, zlib from right, so can't share code) typedef struct { stbi__uint16 fast[1 << STBI__ZFAST_BITS]; stbi__uint16 firstcode[16]; int maxcode[17]; stbi__uint16 firstsymbol[16]; stbi_uc size[288]; stbi__uint16 value[288]; } stbi__zhuffman; stbi_inline static int stbi__bitreverse16(int n) { n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); return n; } stbi_inline static int stbi__bit_reverse(int v, int bits) { STBI_ASSERT(bits <= 16); // to bit reverse n bits, reverse 16 and shift // e.g. 11 bits, bit reverse and shift away 5 return stbi__bitreverse16(v) >> (16-bits); } static int stbi__zbuild_huffman(stbi__zhuffman *z, stbi_uc *sizelist, int num) { int i,k=0; int code, next_code[16], sizes[17]; // DEFLATE spec for generating codes memset(sizes, 0, sizeof(sizes)); memset(z->fast, 0, sizeof(z->fast)); for (i=0; i < num; ++i) ++sizes[sizelist[i]]; sizes[0] = 0; for (i=1; i < 16; ++i) if (sizes[i] > (1 << i)) return stbi__err("bad sizes", "Corrupt PNG"); code = 0; for (i=1; i < 16; ++i) { next_code[i] = code; z->firstcode[i] = (stbi__uint16) code; z->firstsymbol[i] = (stbi__uint16) k; code = (code + sizes[i]); if (sizes[i]) if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); z->maxcode[i] = code << (16-i); // preshift for inner loop code <<= 1; k += sizes[i]; } z->maxcode[16] = 0x10000; // sentinel for (i=0; i < num; ++i) { int s = sizelist[i]; if (s) { int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); z->size [c] = (stbi_uc ) s; z->value[c] = (stbi__uint16) i; if (s <= STBI__ZFAST_BITS) { int j = stbi__bit_reverse(next_code[s],s); while (j < (1 << STBI__ZFAST_BITS)) { z->fast[j] = fastv; j += (1 << s); } } ++next_code[s]; } } return 1; } // zlib-from-memory implementation for PNG reading // because PNG allows splitting the zlib stream arbitrarily, // and it's annoying structurally to have PNG call ZLIB call PNG, // we require PNG read all the IDATs and combine them into a single // memory buffer typedef struct { stbi_uc *zbuffer, *zbuffer_end; int num_bits; stbi__uint32 code_buffer; char *zout; char *zout_start; char *zout_end; int z_expandable; stbi__zhuffman z_length, z_distance; } stbi__zbuf; stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) { if (z->zbuffer >= z->zbuffer_end) return 0; return *z->zbuffer++; } static void stbi__fill_bits(stbi__zbuf *z) { do { STBI_ASSERT(z->code_buffer < (1U << z->num_bits)); z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; z->num_bits += 8; } while (z->num_bits <= 24); } stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) { unsigned int k; if (z->num_bits < n) stbi__fill_bits(z); k = z->code_buffer & ((1 << n) - 1); z->code_buffer >>= n; z->num_bits -= n; return k; } static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) { int b,s,k; // not resolved by fast table, so compute it the slow way // use jpeg approach, which requires MSbits at top k = stbi__bit_reverse(a->code_buffer, 16); for (s=STBI__ZFAST_BITS+1; ; ++s) if (k < z->maxcode[s]) break; if (s == 16) return -1; // invalid code! // code size is s, so: b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; STBI_ASSERT(z->size[b] == s); a->code_buffer >>= s; a->num_bits -= s; return z->value[b]; } stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) { int b,s; if (a->num_bits < 16) stbi__fill_bits(a); b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; if (b) { s = b >> 9; a->code_buffer >>= s; a->num_bits -= s; return b & 511; } return stbi__zhuffman_decode_slowpath(a, z); } static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes { char *q; int cur, limit, old_limit; z->zout = zout; if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); cur = (int) (z->zout - z->zout_start); limit = old_limit = (int) (z->zout_end - z->zout_start); while (cur + n > limit) limit *= 2; q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); STBI_NOTUSED(old_limit); if (q == NULL) return stbi__err("outofmem", "Out of memory"); z->zout_start = q; z->zout = q + cur; z->zout_end = q + limit; return 1; } static int stbi__zlength_base[31] = { 3,4,5,6,7,8,9,10,11,13, 15,17,19,23,27,31,35,43,51,59, 67,83,99,115,131,163,195,227,258,0,0 }; static int stbi__zlength_extra[31]= { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; static int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; static int stbi__zdist_extra[32] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; static int stbi__parse_huffman_block(stbi__zbuf *a) { char *zout = a->zout; for(;;) { int z = stbi__zhuffman_decode(a, &a->z_length); if (z < 256) { if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes if (zout >= a->zout_end) { if (!stbi__zexpand(a, zout, 1)) return 0; zout = a->zout; } *zout++ = (char) z; } else { stbi_uc *p; int len,dist; if (z == 256) { a->zout = zout; return 1; } z -= 257; len = stbi__zlength_base[z]; if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); z = stbi__zhuffman_decode(a, &a->z_distance); if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); dist = stbi__zdist_base[z]; if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); if (zout + len > a->zout_end) { if (!stbi__zexpand(a, zout, len)) return 0; zout = a->zout; } p = (stbi_uc *) (zout - dist); if (dist == 1) { // run of one byte; common in images. stbi_uc v = *p; if (len) { do *zout++ = v; while (--len); } } else { if (len) { do *zout++ = *p++; while (--len); } } } } } static int stbi__compute_huffman_codes(stbi__zbuf *a) { static stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; stbi__zhuffman z_codelength; stbi_uc lencodes[286+32+137];//padding for maximum single op stbi_uc codelength_sizes[19]; int i,n; int hlit = stbi__zreceive(a,5) + 257; int hdist = stbi__zreceive(a,5) + 1; int hclen = stbi__zreceive(a,4) + 4; memset(codelength_sizes, 0, sizeof(codelength_sizes)); for (i=0; i < hclen; ++i) { int s = stbi__zreceive(a,3); codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; } if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; n = 0; while (n < hlit + hdist) { int c = stbi__zhuffman_decode(a, &z_codelength); if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); if (c < 16) lencodes[n++] = (stbi_uc) c; else if (c == 16) { c = stbi__zreceive(a,2)+3; memset(lencodes+n, lencodes[n-1], c); n += c; } else if (c == 17) { c = stbi__zreceive(a,3)+3; memset(lencodes+n, 0, c); n += c; } else { STBI_ASSERT(c == 18); c = stbi__zreceive(a,7)+11; memset(lencodes+n, 0, c); n += c; } } if (n != hlit+hdist) return stbi__err("bad codelengths","Corrupt PNG"); if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; return 1; } static int stbi__parse_uncomperssed_block(stbi__zbuf *a) { stbi_uc header[4]; int len,nlen,k; if (a->num_bits & 7) stbi__zreceive(a, a->num_bits & 7); // discard // drain the bit-packed data into header k = 0; while (a->num_bits > 0) { header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check a->code_buffer >>= 8; a->num_bits -= 8; } STBI_ASSERT(a->num_bits == 0); // now fill header the normal way while (k < 4) header[k++] = stbi__zget8(a); len = header[1] * 256 + header[0]; nlen = header[3] * 256 + header[2]; if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); if (a->zout + len > a->zout_end) if (!stbi__zexpand(a, a->zout, len)) return 0; memcpy(a->zout, a->zbuffer, len); a->zbuffer += len; a->zout += len; return 1; } static int stbi__parse_zlib_header(stbi__zbuf *a) { int cmf = stbi__zget8(a); int cm = cmf & 15; /* int cinfo = cmf >> 4; */ int flg = stbi__zget8(a); if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png // window = 1 << (8 + cinfo)... but who cares, we fully buffer output return 1; } // @TODO: should statically initialize these for optimal thread safety static stbi_uc stbi__zdefault_length[288], stbi__zdefault_distance[32]; static void stbi__init_zdefaults(void) { int i; // use <= to match clearly with spec for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; } static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) { int final, type; if (parse_header) if (!stbi__parse_zlib_header(a)) return 0; a->num_bits = 0; a->code_buffer = 0; do { final = stbi__zreceive(a,1); type = stbi__zreceive(a,2); if (type == 0) { if (!stbi__parse_uncomperssed_block(a)) return 0; } else if (type == 3) { return 0; } else { if (type == 1) { // use fixed code lengths if (!stbi__zdefault_distance[31]) stbi__init_zdefaults(); if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , 288)) return 0; if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; } else { if (!stbi__compute_huffman_codes(a)) return 0; } if (!stbi__parse_huffman_block(a)) return 0; } } while (!final); return 1; } static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) { a->zout_start = obuf; a->zout = obuf; a->zout_end = obuf + olen; a->z_expandable = exp; return stbi__parse_zlib(a, parse_header); } STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) { stbi__zbuf a; char *p = (char *) stbi__malloc(initial_size); if (p == NULL) return NULL; a.zbuffer = (stbi_uc *) buffer; a.zbuffer_end = (stbi_uc *) buffer + len; if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { if (outlen) *outlen = (int) (a.zout - a.zout_start); return a.zout_start; } else { STBI_FREE(a.zout_start); return NULL; } } STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) { return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); } STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) { stbi__zbuf a; char *p = (char *) stbi__malloc(initial_size); if (p == NULL) return NULL; a.zbuffer = (stbi_uc *) buffer; a.zbuffer_end = (stbi_uc *) buffer + len; if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { if (outlen) *outlen = (int) (a.zout - a.zout_start); return a.zout_start; } else { STBI_FREE(a.zout_start); return NULL; } } STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) { stbi__zbuf a; a.zbuffer = (stbi_uc *) ibuffer; a.zbuffer_end = (stbi_uc *) ibuffer + ilen; if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) return (int) (a.zout - a.zout_start); else return -1; } STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) { stbi__zbuf a; char *p = (char *) stbi__malloc(16384); if (p == NULL) return NULL; a.zbuffer = (stbi_uc *) buffer; a.zbuffer_end = (stbi_uc *) buffer+len; if (stbi__do_zlib(&a, p, 16384, 1, 0)) { if (outlen) *outlen = (int) (a.zout - a.zout_start); return a.zout_start; } else { STBI_FREE(a.zout_start); return NULL; } } STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) { stbi__zbuf a; a.zbuffer = (stbi_uc *) ibuffer; a.zbuffer_end = (stbi_uc *) ibuffer + ilen; if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) return (int) (a.zout - a.zout_start); else return -1; } #endif // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 // simple implementation // - only 8-bit samples // - no CRC checking // - allocates lots of intermediate memory // - avoids problem of streaming data between subsystems // - avoids explicit window management // performance // - uses stb_zlib, a PD zlib implementation with fast huffman decoding #ifndef STBI_NO_PNG typedef struct { stbi__uint32 length; stbi__uint32 type; } stbi__pngchunk; static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) { stbi__pngchunk c; c.length = stbi__get32be(s); c.type = stbi__get32be(s); return c; } static int stbi__check_png_header(stbi__context *s) { static stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; int i; for (i=0; i < 8; ++i) if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); return 1; } typedef struct { stbi__context *s; stbi_uc *idata, *expanded, *out; } stbi__png; enum { STBI__F_none=0, STBI__F_sub=1, STBI__F_up=2, STBI__F_avg=3, STBI__F_paeth=4, // synthetic filters used for first scanline to avoid needing a dummy row of 0s STBI__F_avg_first, STBI__F_paeth_first }; static stbi_uc first_row_filter[5] = { STBI__F_none, STBI__F_sub, STBI__F_none, STBI__F_avg_first, STBI__F_paeth_first }; static int stbi__paeth(int a, int b, int c) { int p = a + b - c; int pa = abs(p-a); int pb = abs(p-b); int pc = abs(p-c); if (pa <= pb && pa <= pc) return a; if (pb <= pc) return b; return c; } static stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; // create the png data from post-deflated data static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) { stbi__context *s = a->s; stbi__uint32 i,j,stride = x*out_n; stbi__uint32 img_len, img_width_bytes; int k; int img_n = s->img_n; // copy it into a local for later STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); a->out = (stbi_uc *) stbi__malloc(x * y * out_n); // extra bytes to write off the end into if (!a->out) return stbi__err("outofmem", "Out of memory"); img_width_bytes = (((img_n * x * depth) + 7) >> 3); img_len = (img_width_bytes + 1) * y; if (s->img_x == x && s->img_y == y) { if (raw_len != img_len) return stbi__err("not enough pixels","Corrupt PNG"); } else { // interlaced: if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); } for (j=0; j < y; ++j) { stbi_uc *cur = a->out + stride*j; stbi_uc *prior = cur - stride; int filter = *raw++; int filter_bytes = img_n; int width = x; if (filter > 4) return stbi__err("invalid filter","Corrupt PNG"); if (depth < 8) { STBI_ASSERT(img_width_bytes <= x); cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place filter_bytes = 1; width = img_width_bytes; } // if first row, use special filter that doesn't sample previous row if (j == 0) filter = first_row_filter[filter]; // handle first byte explicitly for (k=0; k < filter_bytes; ++k) { switch (filter) { case STBI__F_none : cur[k] = raw[k]; break; case STBI__F_sub : cur[k] = raw[k]; break; case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; case STBI__F_avg_first : cur[k] = raw[k]; break; case STBI__F_paeth_first: cur[k] = raw[k]; break; } } if (depth == 8) { if (img_n != out_n) cur[img_n] = 255; // first pixel raw += img_n; cur += out_n; prior += out_n; } else { raw += 1; cur += 1; prior += 1; } // this is a little gross, so that we don't switch per-pixel or per-component if (depth < 8 || img_n == out_n) { int nk = (width - 1)*img_n; #define CASE(f) \ case f: \ for (k=0; k < nk; ++k) switch (filter) { // "none" filter turns into a memcpy here; make that explicit. case STBI__F_none: memcpy(cur, raw, nk); break; CASE(STBI__F_sub) cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); break; CASE(STBI__F_up) cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; CASE(STBI__F_avg) cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); break; CASE(STBI__F_paeth) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); break; CASE(STBI__F_avg_first) cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); break; CASE(STBI__F_paeth_first) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); break; } #undef CASE raw += nk; } else { STBI_ASSERT(img_n+1 == out_n); #define CASE(f) \ case f: \ for (i=x-1; i >= 1; --i, cur[img_n]=255,raw+=img_n,cur+=out_n,prior+=out_n) \ for (k=0; k < img_n; ++k) switch (filter) { CASE(STBI__F_none) cur[k] = raw[k]; break; CASE(STBI__F_sub) cur[k] = STBI__BYTECAST(raw[k] + cur[k-out_n]); break; CASE(STBI__F_up) cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; CASE(STBI__F_avg) cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-out_n])>>1)); break; CASE(STBI__F_paeth) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-out_n],prior[k],prior[k-out_n])); break; CASE(STBI__F_avg_first) cur[k] = STBI__BYTECAST(raw[k] + (cur[k-out_n] >> 1)); break; CASE(STBI__F_paeth_first) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-out_n],0,0)); break; } #undef CASE } } // we make a separate pass to expand bits to pixels; for performance, // this could run two scanlines behind the above code, so it won't // intefere with filtering but will still be in the cache. if (depth < 8) { for (j=0; j < y; ++j) { stbi_uc *cur = a->out + stride*j; stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range // note that the final byte might overshoot and write more data than desired. // we can allocate enough data that this never writes out of memory, but it // could also overwrite the next scanline. can it overwrite non-empty data // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. // so we need to explicitly clamp the final ones if (depth == 4) { for (k=x*img_n; k >= 2; k-=2, ++in) { *cur++ = scale * ((*in >> 4) ); *cur++ = scale * ((*in ) & 0x0f); } if (k > 0) *cur++ = scale * ((*in >> 4) ); } else if (depth == 2) { for (k=x*img_n; k >= 4; k-=4, ++in) { *cur++ = scale * ((*in >> 6) ); *cur++ = scale * ((*in >> 4) & 0x03); *cur++ = scale * ((*in >> 2) & 0x03); *cur++ = scale * ((*in ) & 0x03); } if (k > 0) *cur++ = scale * ((*in >> 6) ); if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); } else if (depth == 1) { for (k=x*img_n; k >= 8; k-=8, ++in) { *cur++ = scale * ((*in >> 7) ); *cur++ = scale * ((*in >> 6) & 0x01); *cur++ = scale * ((*in >> 5) & 0x01); *cur++ = scale * ((*in >> 4) & 0x01); *cur++ = scale * ((*in >> 3) & 0x01); *cur++ = scale * ((*in >> 2) & 0x01); *cur++ = scale * ((*in >> 1) & 0x01); *cur++ = scale * ((*in ) & 0x01); } if (k > 0) *cur++ = scale * ((*in >> 7) ); if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); } if (img_n != out_n) { int q; // insert alpha = 255 cur = a->out + stride*j; if (img_n == 1) { for (q=x-1; q >= 0; --q) { cur[q*2+1] = 255; cur[q*2+0] = cur[q]; } } else { STBI_ASSERT(img_n == 3); for (q=x-1; q >= 0; --q) { cur[q*4+3] = 255; cur[q*4+2] = cur[q*3+2]; cur[q*4+1] = cur[q*3+1]; cur[q*4+0] = cur[q*3+0]; } } } } } return 1; } static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) { stbi_uc *final; int p; if (!interlaced) return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); // de-interlacing final = (stbi_uc *) stbi__malloc(a->s->img_x * a->s->img_y * out_n); for (p=0; p < 7; ++p) { int xorig[] = { 0,4,0,2,0,1,0 }; int yorig[] = { 0,0,4,0,2,0,1 }; int xspc[] = { 8,8,4,4,2,2,1 }; int yspc[] = { 8,8,8,4,4,2,2 }; int i,j,x,y; // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; if (x && y) { stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { STBI_FREE(final); return 0; } for (j=0; j < y; ++j) { for (i=0; i < x; ++i) { int out_y = j*yspc[p]+yorig[p]; int out_x = i*xspc[p]+xorig[p]; memcpy(final + out_y*a->s->img_x*out_n + out_x*out_n, a->out + (j*x+i)*out_n, out_n); } } STBI_FREE(a->out); image_data += img_len; image_data_len -= img_len; } } a->out = final; return 1; } static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) { stbi__context *s = z->s; stbi__uint32 i, pixel_count = s->img_x * s->img_y; stbi_uc *p = z->out; // compute color-based transparency, assuming we've // already got 255 as the alpha value in the output STBI_ASSERT(out_n == 2 || out_n == 4); if (out_n == 2) { for (i=0; i < pixel_count; ++i) { p[1] = (p[0] == tc[0] ? 0 : 255); p += 2; } } else { for (i=0; i < pixel_count; ++i) { if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) p[3] = 0; p += 4; } } return 1; } static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) { stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; stbi_uc *p, *temp_out, *orig = a->out; p = (stbi_uc *) stbi__malloc(pixel_count * pal_img_n); if (p == NULL) return stbi__err("outofmem", "Out of memory"); // between here and free(out) below, exitting would leak temp_out = p; if (pal_img_n == 3) { for (i=0; i < pixel_count; ++i) { int n = orig[i]*4; p[0] = palette[n ]; p[1] = palette[n+1]; p[2] = palette[n+2]; p += 3; } } else { for (i=0; i < pixel_count; ++i) { int n = orig[i]*4; p[0] = palette[n ]; p[1] = palette[n+1]; p[2] = palette[n+2]; p[3] = palette[n+3]; p += 4; } } STBI_FREE(a->out); a->out = temp_out; STBI_NOTUSED(len); return 1; } static int stbi__unpremultiply_on_load = 0; static int stbi__de_iphone_flag = 0; STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) { stbi__unpremultiply_on_load = flag_true_if_should_unpremultiply; } STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) { stbi__de_iphone_flag = flag_true_if_should_convert; } static void stbi__de_iphone(stbi__png *z) { stbi__context *s = z->s; stbi__uint32 i, pixel_count = s->img_x * s->img_y; stbi_uc *p = z->out; if (s->img_out_n == 3) { // convert bgr to rgb for (i=0; i < pixel_count; ++i) { stbi_uc t = p[0]; p[0] = p[2]; p[2] = t; p += 3; } } else { STBI_ASSERT(s->img_out_n == 4); if (stbi__unpremultiply_on_load) { // convert bgr to rgb and unpremultiply for (i=0; i < pixel_count; ++i) { stbi_uc a = p[3]; stbi_uc t = p[0]; if (a) { p[0] = p[2] * 255 / a; p[1] = p[1] * 255 / a; p[2] = t * 255 / a; } else { p[0] = p[2]; p[2] = t; } p += 4; } } else { // convert bgr to rgb for (i=0; i < pixel_count; ++i) { stbi_uc t = p[0]; p[0] = p[2]; p[2] = t; p += 4; } } } } #define STBI__PNG_TYPE(a,b,c,d) (((a) << 24) + ((b) << 16) + ((c) << 8) + (d)) static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) { stbi_uc palette[1024], pal_img_n=0; stbi_uc has_trans=0, tc[3]; stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; int first=1,k,interlace=0, color=0, depth=0, is_iphone=0; stbi__context *s = z->s; z->expanded = NULL; z->idata = NULL; z->out = NULL; if (!stbi__check_png_header(s)) return 0; if (scan == STBI__SCAN_type) return 1; for (;;) { stbi__pngchunk c = stbi__get_chunk_header(s); switch (c.type) { case STBI__PNG_TYPE('C','g','B','I'): is_iphone = 1; stbi__skip(s, c.length); break; case STBI__PNG_TYPE('I','H','D','R'): { int comp,filter; if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); first = 0; if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); s->img_x = stbi__get32be(s); if (s->img_x > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); s->img_y = stbi__get32be(s); if (s->img_y > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); depth = stbi__get8(s); if (depth != 1 && depth != 2 && depth != 4 && depth != 8) return stbi__err("1/2/4/8-bit only","PNG not supported: 1/2/4/8-bit only"); color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); if (!pal_img_n) { s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); if (scan == STBI__SCAN_header) return 1; } else { // if paletted, then pal_n is our final components, and // img_n is # components to decompress/filter. s->img_n = 1; if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); // if SCAN_header, have to scan to see if we have a tRNS } break; } case STBI__PNG_TYPE('P','L','T','E'): { if (first) return stbi__err("first not IHDR", "Corrupt PNG"); if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); pal_len = c.length / 3; if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); for (i=0; i < pal_len; ++i) { palette[i*4+0] = stbi__get8(s); palette[i*4+1] = stbi__get8(s); palette[i*4+2] = stbi__get8(s); palette[i*4+3] = 255; } break; } case STBI__PNG_TYPE('t','R','N','S'): { if (first) return stbi__err("first not IHDR", "Corrupt PNG"); if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); if (pal_img_n) { if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); pal_img_n = 4; for (i=0; i < c.length; ++i) palette[i*4+3] = stbi__get8(s); } else { if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); has_trans = 1; for (k=0; k < s->img_n; ++k) tc[k] = (stbi_uc) (stbi__get16be(s) & 255) * stbi__depth_scale_table[depth]; // non 8-bit images will be larger } break; } case STBI__PNG_TYPE('I','D','A','T'): { if (first) return stbi__err("first not IHDR", "Corrupt PNG"); if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; } if ((int)(ioff + c.length) < (int)ioff) return 0; if (ioff + c.length > idata_limit) { stbi__uint32 idata_limit_old = idata_limit; stbi_uc *p; if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; while (ioff + c.length > idata_limit) idata_limit *= 2; STBI_NOTUSED(idata_limit_old); p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); z->idata = p; } if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); ioff += c.length; break; } case STBI__PNG_TYPE('I','E','N','D'): { stbi__uint32 raw_len, bpl; if (first) return stbi__err("first not IHDR", "Corrupt PNG"); if (scan != STBI__SCAN_load) return 1; if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); // initial guess for decoded data size to avoid unnecessary reallocs bpl = (s->img_x * depth + 7) / 8; // bytes per line, per component raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); if (z->expanded == NULL) return 0; // zlib should set error STBI_FREE(z->idata); z->idata = NULL; if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) s->img_out_n = s->img_n+1; else s->img_out_n = s->img_n; if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, depth, color, interlace)) return 0; if (has_trans) if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) stbi__de_iphone(z); if (pal_img_n) { // pal_img_n == 3 or 4 s->img_n = pal_img_n; // record the actual colors we had s->img_out_n = pal_img_n; if (req_comp >= 3) s->img_out_n = req_comp; if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) return 0; } STBI_FREE(z->expanded); z->expanded = NULL; return 1; } default: // if critical, fail if (first) return stbi__err("first not IHDR", "Corrupt PNG"); if ((c.type & (1 << 29)) == 0) { #ifndef STBI_NO_FAILURE_STRINGS // not threadsafe static char invalid_chunk[] = "XXXX PNG chunk not known"; invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); #endif return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); } stbi__skip(s, c.length); break; } // end of PNG chunk, read and skip CRC stbi__get32be(s); } } static unsigned char *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp) { unsigned char *result=NULL; if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { result = p->out; p->out = NULL; if (req_comp && req_comp != p->s->img_out_n) { result = stbi__convert_format(result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); p->s->img_out_n = req_comp; if (result == NULL) return result; } *x = p->s->img_x; *y = p->s->img_y; if (n) *n = p->s->img_out_n; } STBI_FREE(p->out); p->out = NULL; STBI_FREE(p->expanded); p->expanded = NULL; STBI_FREE(p->idata); p->idata = NULL; return result; } static unsigned char *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { stbi__png p; p.s = s; return stbi__do_png(&p, x,y,comp,req_comp); } static int stbi__png_test(stbi__context *s) { int r; r = stbi__check_png_header(s); stbi__rewind(s); return r; } static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) { if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { stbi__rewind( p->s ); return 0; } if (x) *x = p->s->img_x; if (y) *y = p->s->img_y; if (comp) *comp = p->s->img_n; return 1; } static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) { stbi__png p; p.s = s; return stbi__png_info_raw(&p, x, y, comp); } #endif // Microsoft/Windows BMP image #ifndef STBI_NO_BMP static int stbi__bmp_test_raw(stbi__context *s) { int r; int sz; if (stbi__get8(s) != 'B') return 0; if (stbi__get8(s) != 'M') return 0; stbi__get32le(s); // discard filesize stbi__get16le(s); // discard reserved stbi__get16le(s); // discard reserved stbi__get32le(s); // discard data offset sz = stbi__get32le(s); r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); return r; } static int stbi__bmp_test(stbi__context *s) { int r = stbi__bmp_test_raw(s); stbi__rewind(s); return r; } // returns 0..31 for the highest set bit static int stbi__high_bit(unsigned int z) { int n=0; if (z == 0) return -1; if (z >= 0x10000) n += 16, z >>= 16; if (z >= 0x00100) n += 8, z >>= 8; if (z >= 0x00010) n += 4, z >>= 4; if (z >= 0x00004) n += 2, z >>= 2; if (z >= 0x00002) n += 1, z >>= 1; return n; } static int stbi__bitcount(unsigned int a) { a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits a = (a + (a >> 8)); // max 16 per 8 bits a = (a + (a >> 16)); // max 32 per 8 bits return a & 0xff; } static int stbi__shiftsigned(int v, int shift, int bits) { int result; int z=0; if (shift < 0) v <<= -shift; else v >>= shift; result = v; z = bits; while (z < 8) { result += v >> z; z += bits; } return result; } typedef struct { int bpp, offset, hsz; unsigned int mr,mg,mb,ma, all_a; } stbi__bmp_data; static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) { int hsz; if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); stbi__get32le(s); // discard filesize stbi__get16le(s); // discard reserved stbi__get16le(s); // discard reserved info->offset = stbi__get32le(s); info->hsz = hsz = stbi__get32le(s); if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); if (hsz == 12) { s->img_x = stbi__get16le(s); s->img_y = stbi__get16le(s); } else { s->img_x = stbi__get32le(s); s->img_y = stbi__get32le(s); } if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); info->bpp = stbi__get16le(s); if (info->bpp == 1) return stbi__errpuc("monochrome", "BMP type not supported: 1-bit"); if (hsz != 12) { int compress = stbi__get32le(s); if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); stbi__get32le(s); // discard sizeof stbi__get32le(s); // discard hres stbi__get32le(s); // discard vres stbi__get32le(s); // discard colorsused stbi__get32le(s); // discard max important if (hsz == 40 || hsz == 56) { if (hsz == 56) { stbi__get32le(s); stbi__get32le(s); stbi__get32le(s); stbi__get32le(s); } if (info->bpp == 16 || info->bpp == 32) { info->mr = info->mg = info->mb = 0; if (compress == 0) { if (info->bpp == 32) { info->mr = 0xffu << 16; info->mg = 0xffu << 8; info->mb = 0xffu << 0; info->ma = 0xffu << 24; info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 } else { info->mr = 31u << 10; info->mg = 31u << 5; info->mb = 31u << 0; } } else if (compress == 3) { info->mr = stbi__get32le(s); info->mg = stbi__get32le(s); info->mb = stbi__get32le(s); // not documented, but generated by photoshop and handled by mspaint if (info->mr == info->mg && info->mg == info->mb) { // ?!?!? return stbi__errpuc("bad BMP", "bad BMP"); } } else return stbi__errpuc("bad BMP", "bad BMP"); } } else { int i; if (hsz != 108 && hsz != 124) return stbi__errpuc("bad BMP", "bad BMP"); info->mr = stbi__get32le(s); info->mg = stbi__get32le(s); info->mb = stbi__get32le(s); info->ma = stbi__get32le(s); stbi__get32le(s); // discard color space for (i=0; i < 12; ++i) stbi__get32le(s); // discard color space parameters if (hsz == 124) { stbi__get32le(s); // discard rendering intent stbi__get32le(s); // discard offset of profile data stbi__get32le(s); // discard size of profile data stbi__get32le(s); // discard reserved } } } return (void *) 1; } static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { stbi_uc *out; unsigned int mr=0,mg=0,mb=0,ma=0, all_a; stbi_uc pal[256][4]; int psize=0,i,j,width; int flip_vertically, pad, target; stbi__bmp_data info; info.all_a = 255; if (stbi__bmp_parse_header(s, &info) == NULL) return NULL; // error code already set flip_vertically = ((int) s->img_y) > 0; s->img_y = abs((int) s->img_y); mr = info.mr; mg = info.mg; mb = info.mb; ma = info.ma; all_a = info.all_a; if (info.hsz == 12) { if (info.bpp < 24) psize = (info.offset - 14 - 24) / 3; } else { if (info.bpp < 16) psize = (info.offset - 14 - info.hsz) >> 2; } s->img_n = ma ? 4 : 3; if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 target = req_comp; else target = s->img_n; // if they want monochrome, we'll post-convert out = (stbi_uc *) stbi__malloc(target * s->img_x * s->img_y); if (!out) return stbi__errpuc("outofmem", "Out of memory"); if (info.bpp < 16) { int z=0; if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } for (i=0; i < psize; ++i) { pal[i][2] = stbi__get8(s); pal[i][1] = stbi__get8(s); pal[i][0] = stbi__get8(s); if (info.hsz != 12) stbi__get8(s); pal[i][3] = 255; } stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); if (info.bpp == 4) width = (s->img_x + 1) >> 1; else if (info.bpp == 8) width = s->img_x; else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } pad = (-width)&3; for (j=0; j < (int) s->img_y; ++j) { for (i=0; i < (int) s->img_x; i += 2) { int v=stbi__get8(s),v2=0; if (info.bpp == 4) { v2 = v & 15; v >>= 4; } out[z++] = pal[v][0]; out[z++] = pal[v][1]; out[z++] = pal[v][2]; if (target == 4) out[z++] = 255; if (i+1 == (int) s->img_x) break; v = (info.bpp == 8) ? stbi__get8(s) : v2; out[z++] = pal[v][0]; out[z++] = pal[v][1]; out[z++] = pal[v][2]; if (target == 4) out[z++] = 255; } stbi__skip(s, pad); } } else { int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; int z = 0; int easy=0; stbi__skip(s, info.offset - 14 - info.hsz); if (info.bpp == 24) width = 3 * s->img_x; else if (info.bpp == 16) width = 2*s->img_x; else /* bpp = 32 and pad = 0 */ width=0; pad = (-width) & 3; if (info.bpp == 24) { easy = 1; } else if (info.bpp == 32) { if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) easy = 2; } if (!easy) { if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } // right shift amt to put high bit in position #7 rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); } for (j=0; j < (int) s->img_y; ++j) { if (easy) { for (i=0; i < (int) s->img_x; ++i) { unsigned char a; out[z+2] = stbi__get8(s); out[z+1] = stbi__get8(s); out[z+0] = stbi__get8(s); z += 3; a = (easy == 2 ? stbi__get8(s) : 255); all_a |= a; if (target == 4) out[z++] = a; } } else { int bpp = info.bpp; for (i=0; i < (int) s->img_x; ++i) { stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); int a; out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); all_a |= a; if (target == 4) out[z++] = STBI__BYTECAST(a); } } stbi__skip(s, pad); } } // if alpha channel is all 0s, replace with all 255s if (target == 4 && all_a == 0) for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) out[i] = 255; if (flip_vertically) { stbi_uc t; for (j=0; j < (int) s->img_y>>1; ++j) { stbi_uc *p1 = out + j *s->img_x*target; stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; for (i=0; i < (int) s->img_x*target; ++i) { t = p1[i], p1[i] = p2[i], p2[i] = t; } } } if (req_comp && req_comp != target) { out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); if (out == NULL) return out; // stbi__convert_format frees input on failure } *x = s->img_x; *y = s->img_y; if (comp) *comp = s->img_n; return out; } #endif // Targa Truevision - TGA // by Jonathan Dummer #ifndef STBI_NO_TGA // returns STBI_rgb or whatever, 0 on error static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) { // only RGB or RGBA (incl. 16bit) or grey allowed if(is_rgb16) *is_rgb16 = 0; switch(bits_per_pixel) { case 8: return STBI_grey; case 16: if(is_grey) return STBI_grey_alpha; // else: fall-through case 15: if(is_rgb16) *is_rgb16 = 1; return STBI_rgb; case 24: // fall-through case 32: return bits_per_pixel/8; default: return 0; } } static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) { int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; int sz, tga_colormap_type; stbi__get8(s); // discard Offset tga_colormap_type = stbi__get8(s); // colormap type if( tga_colormap_type > 1 ) { stbi__rewind(s); return 0; // only RGB or indexed allowed } tga_image_type = stbi__get8(s); // image type if ( tga_colormap_type == 1 ) { // colormapped (paletted) image if (tga_image_type != 1 && tga_image_type != 9) { stbi__rewind(s); return 0; } stbi__skip(s,4); // skip index of first colormap entry and number of entries sz = stbi__get8(s); // check bits per palette color entry if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { stbi__rewind(s); return 0; } stbi__skip(s,4); // skip image x and y origin tga_colormap_bpp = sz; } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { stbi__rewind(s); return 0; // only RGB or grey allowed, +/- RLE } stbi__skip(s,9); // skip colormap specification and image x/y origin tga_colormap_bpp = 0; } tga_w = stbi__get16le(s); if( tga_w < 1 ) { stbi__rewind(s); return 0; // test width } tga_h = stbi__get16le(s); if( tga_h < 1 ) { stbi__rewind(s); return 0; // test height } tga_bits_per_pixel = stbi__get8(s); // bits per pixel stbi__get8(s); // ignore alpha bits if (tga_colormap_bpp != 0) { if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { // when using a colormap, tga_bits_per_pixel is the size of the indexes // I don't think anything but 8 or 16bit indexes makes sense stbi__rewind(s); return 0; } tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); } else { tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); } if(!tga_comp) { stbi__rewind(s); return 0; } if (x) *x = tga_w; if (y) *y = tga_h; if (comp) *comp = tga_comp; return 1; // seems to have passed everything } static int stbi__tga_test(stbi__context *s) { int res = 0; int sz, tga_color_type; stbi__get8(s); // discard Offset tga_color_type = stbi__get8(s); // color type if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed sz = stbi__get8(s); // image type if ( tga_color_type == 1 ) { // colormapped (paletted) image if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 stbi__skip(s,4); // skip index of first colormap entry and number of entries sz = stbi__get8(s); // check bits per palette color entry if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; stbi__skip(s,4); // skip image x and y origin } else { // "normal" image w/o colormap if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE stbi__skip(s,9); // skip colormap specification and image x/y origin } if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height sz = stbi__get8(s); // bits per pixel if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; res = 1; // if we got this far, everything's good and we can return 1 instead of 0 errorEnd: stbi__rewind(s); return res; } // read 16bit value and convert to 24bit RGB void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) { stbi__uint16 px = stbi__get16le(s); stbi__uint16 fiveBitMask = 31; // we have 3 channels with 5bits each int r = (px >> 10) & fiveBitMask; int g = (px >> 5) & fiveBitMask; int b = px & fiveBitMask; // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later out[0] = (r * 255)/31; out[1] = (g * 255)/31; out[2] = (b * 255)/31; // some people claim that the most significant bit might be used for alpha // (possibly if an alpha-bit is set in the "image descriptor byte") // but that only made 16bit test images completely translucent.. // so let's treat all 15 and 16bit TGAs as RGB with no alpha. } static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { // read in the TGA header stuff int tga_offset = stbi__get8(s); int tga_indexed = stbi__get8(s); int tga_image_type = stbi__get8(s); int tga_is_RLE = 0; int tga_palette_start = stbi__get16le(s); int tga_palette_len = stbi__get16le(s); int tga_palette_bits = stbi__get8(s); int tga_x_origin = stbi__get16le(s); int tga_y_origin = stbi__get16le(s); int tga_width = stbi__get16le(s); int tga_height = stbi__get16le(s); int tga_bits_per_pixel = stbi__get8(s); int tga_comp, tga_rgb16=0; int tga_inverted = stbi__get8(s); // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) // image data unsigned char *tga_data; unsigned char *tga_palette = NULL; int i, j; unsigned char raw_data[4]; int RLE_count = 0; int RLE_repeating = 0; int read_next_pixel = 1; // do a tiny bit of precessing if ( tga_image_type >= 8 ) { tga_image_type -= 8; tga_is_RLE = 1; } tga_inverted = 1 - ((tga_inverted >> 5) & 1); // If I'm paletted, then I'll use the number of bits from the palette if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); // tga info *x = tga_width; *y = tga_height; if (comp) *comp = tga_comp; tga_data = (unsigned char*)stbi__malloc( (size_t)tga_width * tga_height * tga_comp ); if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); // skip to the data's starting position (offset usually = 0) stbi__skip(s, tga_offset ); if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { for (i=0; i < tga_height; ++i) { int row = tga_inverted ? tga_height -i - 1 : i; stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; stbi__getn(s, tga_row, tga_width * tga_comp); } } else { // do I need to load a palette? if ( tga_indexed) { // any data to skip? (offset usually = 0) stbi__skip(s, tga_palette_start ); // load the palette tga_palette = (unsigned char*)stbi__malloc( tga_palette_len * tga_comp ); if (!tga_palette) { STBI_FREE(tga_data); return stbi__errpuc("outofmem", "Out of memory"); } if (tga_rgb16) { stbi_uc *pal_entry = tga_palette; STBI_ASSERT(tga_comp == STBI_rgb); for (i=0; i < tga_palette_len; ++i) { stbi__tga_read_rgb16(s, pal_entry); pal_entry += tga_comp; } } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { STBI_FREE(tga_data); STBI_FREE(tga_palette); return stbi__errpuc("bad palette", "Corrupt TGA"); } } // load the data for (i=0; i < tga_width * tga_height; ++i) { // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? if ( tga_is_RLE ) { if ( RLE_count == 0 ) { // yep, get the next byte as a RLE command int RLE_cmd = stbi__get8(s); RLE_count = 1 + (RLE_cmd & 127); RLE_repeating = RLE_cmd >> 7; read_next_pixel = 1; } else if ( !RLE_repeating ) { read_next_pixel = 1; } } else { read_next_pixel = 1; } // OK, if I need to read a pixel, do it now if ( read_next_pixel ) { // load however much data we did have if ( tga_indexed ) { // read in index, then perform the lookup int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); if ( pal_idx >= tga_palette_len ) { // invalid index pal_idx = 0; } pal_idx *= tga_comp; for (j = 0; j < tga_comp; ++j) { raw_data[j] = tga_palette[pal_idx+j]; } } else if(tga_rgb16) { STBI_ASSERT(tga_comp == STBI_rgb); stbi__tga_read_rgb16(s, raw_data); } else { // read in the data raw for (j = 0; j < tga_comp; ++j) { raw_data[j] = stbi__get8(s); } } // clear the reading flag for the next pixel read_next_pixel = 0; } // end of reading a pixel // copy data for (j = 0; j < tga_comp; ++j) tga_data[i*tga_comp+j] = raw_data[j]; // in case we're in RLE mode, keep counting down --RLE_count; } // do I need to invert the image? if ( tga_inverted ) { for (j = 0; j*2 < tga_height; ++j) { int index1 = j * tga_width * tga_comp; int index2 = (tga_height - 1 - j) * tga_width * tga_comp; for (i = tga_width * tga_comp; i > 0; --i) { unsigned char temp = tga_data[index1]; tga_data[index1] = tga_data[index2]; tga_data[index2] = temp; ++index1; ++index2; } } } // clear my palette, if I had one if ( tga_palette != NULL ) { STBI_FREE( tga_palette ); } } // swap RGB - if the source data was RGB16, it already is in the right order if (tga_comp >= 3 && !tga_rgb16) { unsigned char* tga_pixel = tga_data; for (i=0; i < tga_width * tga_height; ++i) { unsigned char temp = tga_pixel[0]; tga_pixel[0] = tga_pixel[2]; tga_pixel[2] = temp; tga_pixel += tga_comp; } } // convert to target component count if (req_comp && req_comp != tga_comp) tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); // the things I do to get rid of an error message, and yet keep // Microsoft's C compilers happy... [8^( tga_palette_start = tga_palette_len = tga_palette_bits = tga_x_origin = tga_y_origin = 0; // OK, done return tga_data; } #endif // ************************************************************************************************* // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB #ifndef STBI_NO_PSD static int stbi__psd_test(stbi__context *s) { int r = (stbi__get32be(s) == 0x38425053); stbi__rewind(s); return r; } static stbi_uc *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { int pixelCount; int channelCount, compression; int channel, i, count, len; int bitdepth; int w,h; stbi_uc *out; // Check identifier if (stbi__get32be(s) != 0x38425053) // "8BPS" return stbi__errpuc("not PSD", "Corrupt PSD image"); // Check file type version. if (stbi__get16be(s) != 1) return stbi__errpuc("wrong version", "Unsupported version of PSD image"); // Skip 6 reserved bytes. stbi__skip(s, 6 ); // Read the number of channels (R, G, B, A, etc). channelCount = stbi__get16be(s); if (channelCount < 0 || channelCount > 16) return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); // Read the rows and columns of the image. h = stbi__get32be(s); w = stbi__get32be(s); // Make sure the depth is 8 bits. bitdepth = stbi__get16be(s); if (bitdepth != 8 && bitdepth != 16) return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); // Make sure the color mode is RGB. // Valid options are: // 0: Bitmap // 1: Grayscale // 2: Indexed color // 3: RGB color // 4: CMYK color // 7: Multichannel // 8: Duotone // 9: Lab color if (stbi__get16be(s) != 3) return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) stbi__skip(s,stbi__get32be(s) ); // Skip the image resources. (resolution, pen tool paths, etc) stbi__skip(s, stbi__get32be(s) ); // Skip the reserved data. stbi__skip(s, stbi__get32be(s) ); // Find out if the data is compressed. // Known values: // 0: no compression // 1: RLE compressed compression = stbi__get16be(s); if (compression > 1) return stbi__errpuc("bad compression", "PSD has an unknown compression format"); // Create the destination image. out = (stbi_uc *) stbi__malloc(4 * w*h); if (!out) return stbi__errpuc("outofmem", "Out of memory"); pixelCount = w*h; // Initialize the data to zero. //memset( out, 0, pixelCount * 4 ); // Finally, the image data. if (compression) { // RLE as used by .PSD and .TIFF // Loop until you get the number of unpacked bytes you are expecting: // Read the next source byte into n. // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. // Else if n is 128, noop. // Endloop // The RLE-compressed data is preceeded by a 2-byte data count for each row in the data, // which we're going to just skip. stbi__skip(s, h * channelCount * 2 ); // Read the RLE data by channel. for (channel = 0; channel < 4; channel++) { stbi_uc *p; p = out+channel; if (channel >= channelCount) { // Fill this channel with default data. for (i = 0; i < pixelCount; i++, p += 4) *p = (channel == 3 ? 255 : 0); } else { // Read the RLE data. count = 0; while (count < pixelCount) { len = stbi__get8(s); if (len == 128) { // No-op. } else if (len < 128) { // Copy next len+1 bytes literally. len++; count += len; while (len) { *p = stbi__get8(s); p += 4; len--; } } else if (len > 128) { stbi_uc val; // Next -len+1 bytes in the dest are replicated from next source byte. // (Interpret len as a negative 8-bit int.) len ^= 0x0FF; len += 2; val = stbi__get8(s); count += len; while (len) { *p = val; p += 4; len--; } } } } } } else { // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) // where each channel consists of an 8-bit value for each pixel in the image. // Read the data by channel. for (channel = 0; channel < 4; channel++) { stbi_uc *p; p = out + channel; if (channel >= channelCount) { // Fill this channel with default data. stbi_uc val = channel == 3 ? 255 : 0; for (i = 0; i < pixelCount; i++, p += 4) *p = val; } else { // Read the data. if (bitdepth == 16) { for (i = 0; i < pixelCount; i++, p += 4) *p = (stbi_uc) (stbi__get16be(s) >> 8); } else { for (i = 0; i < pixelCount; i++, p += 4) *p = stbi__get8(s); } } } } if (req_comp && req_comp != 4) { out = stbi__convert_format(out, 4, req_comp, w, h); if (out == NULL) return out; // stbi__convert_format frees input on failure } if (comp) *comp = 4; *y = h; *x = w; return out; } #endif // ************************************************************************************************* // Softimage PIC loader // by Tom Seddon // // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ #ifndef STBI_NO_PIC static int stbi__pic_is4(stbi__context *s,const char *str) { int i; for (i=0; i<4; ++i) if (stbi__get8(s) != (stbi_uc)str[i]) return 0; return 1; } static int stbi__pic_test_core(stbi__context *s) { int i; if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) return 0; for(i=0;i<84;++i) stbi__get8(s); if (!stbi__pic_is4(s,"PICT")) return 0; return 1; } typedef struct { stbi_uc size,type,channel; } stbi__pic_packet; static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) { int mask=0x80, i; for (i=0; i<4; ++i, mask>>=1) { if (channel & mask) { if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); dest[i]=stbi__get8(s); } } return dest; } static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) { int mask=0x80,i; for (i=0;i<4; ++i, mask>>=1) if (channel&mask) dest[i]=src[i]; } static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) { int act_comp=0,num_packets=0,y,chained; stbi__pic_packet packets[10]; // this will (should...) cater for even some bizarre stuff like having data // for the same channel in multiple packets. do { stbi__pic_packet *packet; if (num_packets==sizeof(packets)/sizeof(packets[0])) return stbi__errpuc("bad format","too many packets"); packet = &packets[num_packets++]; chained = stbi__get8(s); packet->size = stbi__get8(s); packet->type = stbi__get8(s); packet->channel = stbi__get8(s); act_comp |= packet->channel; if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); } while (chained); *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? for(y=0; ytype) { default: return stbi__errpuc("bad format","packet has bad compression type"); case 0: {//uncompressed int x; for(x=0;xchannel,dest)) return 0; break; } case 1://Pure RLE { int left=width, i; while (left>0) { stbi_uc count,value[4]; count=stbi__get8(s); if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); if (count > left) count = (stbi_uc) left; if (!stbi__readval(s,packet->channel,value)) return 0; for(i=0; ichannel,dest,value); left -= count; } } break; case 2: {//Mixed RLE int left=width; while (left>0) { int count = stbi__get8(s), i; if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); if (count >= 128) { // Repeated stbi_uc value[4]; if (count==128) count = stbi__get16be(s); else count -= 127; if (count > left) return stbi__errpuc("bad file","scanline overrun"); if (!stbi__readval(s,packet->channel,value)) return 0; for(i=0;ichannel,dest,value); } else { // Raw ++count; if (count>left) return stbi__errpuc("bad file","scanline overrun"); for(i=0;ichannel,dest)) return 0; } left-=count; } break; } } } } return result; } static stbi_uc *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp) { stbi_uc *result; int i, x,y; for (i=0; i<92; ++i) stbi__get8(s); x = stbi__get16be(s); y = stbi__get16be(s); if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); if ((1 << 28) / x < y) return stbi__errpuc("too large", "Image too large to decode"); stbi__get32be(s); //skip `ratio' stbi__get16be(s); //skip `fields' stbi__get16be(s); //skip `pad' // intermediate buffer is RGBA result = (stbi_uc *) stbi__malloc(x*y*4); memset(result, 0xff, x*y*4); if (!stbi__pic_load_core(s,x,y,comp, result)) { STBI_FREE(result); result=0; } *px = x; *py = y; if (req_comp == 0) req_comp = *comp; result=stbi__convert_format(result,4,req_comp,x,y); return result; } static int stbi__pic_test(stbi__context *s) { int r = stbi__pic_test_core(s); stbi__rewind(s); return r; } #endif // ************************************************************************************************* // GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb #ifndef STBI_NO_GIF typedef struct { stbi__int16 prefix; stbi_uc first; stbi_uc suffix; } stbi__gif_lzw; typedef struct { int w,h; stbi_uc *out, *old_out; // output buffer (always 4 components) int flags, bgindex, ratio, transparent, eflags, delay; stbi_uc pal[256][4]; stbi_uc lpal[256][4]; stbi__gif_lzw codes[4096]; stbi_uc *color_table; int parse, step; int lflags; int start_x, start_y; int max_x, max_y; int cur_x, cur_y; int line_size; } stbi__gif; static int stbi__gif_test_raw(stbi__context *s) { int sz; if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; sz = stbi__get8(s); if (sz != '9' && sz != '7') return 0; if (stbi__get8(s) != 'a') return 0; return 1; } static int stbi__gif_test(stbi__context *s) { int r = stbi__gif_test_raw(s); stbi__rewind(s); return r; } static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) { int i; for (i=0; i < num_entries; ++i) { pal[i][2] = stbi__get8(s); pal[i][1] = stbi__get8(s); pal[i][0] = stbi__get8(s); pal[i][3] = transp == i ? 0 : 255; } } static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) { stbi_uc version; if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return stbi__err("not GIF", "Corrupt GIF"); version = stbi__get8(s); if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); stbi__g_failure_reason = ""; g->w = stbi__get16le(s); g->h = stbi__get16le(s); g->flags = stbi__get8(s); g->bgindex = stbi__get8(s); g->ratio = stbi__get8(s); g->transparent = -1; if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments if (is_info) return 1; if (g->flags & 0x80) stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); return 1; } static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) { stbi__gif g; if (!stbi__gif_header(s, &g, comp, 1)) { stbi__rewind( s ); return 0; } if (x) *x = g.w; if (y) *y = g.h; return 1; } static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) { stbi_uc *p, *c; // recurse to decode the prefixes, since the linked-list is backwards, // and working backwards through an interleaved image would be nasty if (g->codes[code].prefix >= 0) stbi__out_gif_code(g, g->codes[code].prefix); if (g->cur_y >= g->max_y) return; p = &g->out[g->cur_x + g->cur_y]; c = &g->color_table[g->codes[code].suffix * 4]; if (c[3] >= 128) { p[0] = c[2]; p[1] = c[1]; p[2] = c[0]; p[3] = c[3]; } g->cur_x += 4; if (g->cur_x >= g->max_x) { g->cur_x = g->start_x; g->cur_y += g->step; while (g->cur_y >= g->max_y && g->parse > 0) { g->step = (1 << g->parse) * g->line_size; g->cur_y = g->start_y + (g->step >> 1); --g->parse; } } } static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) { stbi_uc lzw_cs; stbi__int32 len, init_code; stbi__uint32 first; stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; stbi__gif_lzw *p; lzw_cs = stbi__get8(s); if (lzw_cs > 12) return NULL; clear = 1 << lzw_cs; first = 1; codesize = lzw_cs + 1; codemask = (1 << codesize) - 1; bits = 0; valid_bits = 0; for (init_code = 0; init_code < clear; init_code++) { g->codes[init_code].prefix = -1; g->codes[init_code].first = (stbi_uc) init_code; g->codes[init_code].suffix = (stbi_uc) init_code; } // support no starting clear code avail = clear+2; oldcode = -1; len = 0; for(;;) { if (valid_bits < codesize) { if (len == 0) { len = stbi__get8(s); // start new block if (len == 0) return g->out; } --len; bits |= (stbi__int32) stbi__get8(s) << valid_bits; valid_bits += 8; } else { stbi__int32 code = bits & codemask; bits >>= codesize; valid_bits -= codesize; // @OPTIMIZE: is there some way we can accelerate the non-clear path? if (code == clear) { // clear code codesize = lzw_cs + 1; codemask = (1 << codesize) - 1; avail = clear + 2; oldcode = -1; first = 0; } else if (code == clear + 1) { // end of stream code stbi__skip(s, len); while ((len = stbi__get8(s)) > 0) stbi__skip(s,len); return g->out; } else if (code <= avail) { if (first) return stbi__errpuc("no clear code", "Corrupt GIF"); if (oldcode >= 0) { p = &g->codes[avail++]; if (avail > 4096) return stbi__errpuc("too many codes", "Corrupt GIF"); p->prefix = (stbi__int16) oldcode; p->first = g->codes[oldcode].first; p->suffix = (code == avail) ? p->first : g->codes[code].first; } else if (code == avail) return stbi__errpuc("illegal code in raster", "Corrupt GIF"); stbi__out_gif_code(g, (stbi__uint16) code); if ((avail & codemask) == 0 && avail <= 0x0FFF) { codesize++; codemask = (1 << codesize) - 1; } oldcode = code; } else { return stbi__errpuc("illegal code in raster", "Corrupt GIF"); } } } } static void stbi__fill_gif_background(stbi__gif *g, int x0, int y0, int x1, int y1) { int x, y; stbi_uc *c = g->pal[g->bgindex]; for (y = y0; y < y1; y += 4 * g->w) { for (x = x0; x < x1; x += 4) { stbi_uc *p = &g->out[y + x]; p[0] = c[2]; p[1] = c[1]; p[2] = c[0]; p[3] = 0; } } } // this function is designed to support animated gifs, although stb_image doesn't support it static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp) { int i; stbi_uc *prev_out = 0; if (g->out == 0 && !stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header prev_out = g->out; g->out = (stbi_uc *) stbi__malloc(4 * g->w * g->h); if (g->out == 0) return stbi__errpuc("outofmem", "Out of memory"); switch ((g->eflags & 0x1C) >> 2) { case 0: // unspecified (also always used on 1st frame) stbi__fill_gif_background(g, 0, 0, 4 * g->w, 4 * g->w * g->h); break; case 1: // do not dispose if (prev_out) memcpy(g->out, prev_out, 4 * g->w * g->h); g->old_out = prev_out; break; case 2: // dispose to background if (prev_out) memcpy(g->out, prev_out, 4 * g->w * g->h); stbi__fill_gif_background(g, g->start_x, g->start_y, g->max_x, g->max_y); break; case 3: // dispose to previous if (g->old_out) { for (i = g->start_y; i < g->max_y; i += 4 * g->w) memcpy(&g->out[i + g->start_x], &g->old_out[i + g->start_x], g->max_x - g->start_x); } break; } for (;;) { switch (stbi__get8(s)) { case 0x2C: /* Image Descriptor */ { int prev_trans = -1; stbi__int32 x, y, w, h; stbi_uc *o; x = stbi__get16le(s); y = stbi__get16le(s); w = stbi__get16le(s); h = stbi__get16le(s); if (((x + w) > (g->w)) || ((y + h) > (g->h))) return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); g->line_size = g->w * 4; g->start_x = x * 4; g->start_y = y * g->line_size; g->max_x = g->start_x + w * 4; g->max_y = g->start_y + h * g->line_size; g->cur_x = g->start_x; g->cur_y = g->start_y; g->lflags = stbi__get8(s); if (g->lflags & 0x40) { g->step = 8 * g->line_size; // first interlaced spacing g->parse = 3; } else { g->step = g->line_size; g->parse = 0; } if (g->lflags & 0x80) { stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); g->color_table = (stbi_uc *) g->lpal; } else if (g->flags & 0x80) { if (g->transparent >= 0 && (g->eflags & 0x01)) { prev_trans = g->pal[g->transparent][3]; g->pal[g->transparent][3] = 0; } g->color_table = (stbi_uc *) g->pal; } else return stbi__errpuc("missing color table", "Corrupt GIF"); o = stbi__process_gif_raster(s, g); if (o == NULL) return NULL; if (prev_trans != -1) g->pal[g->transparent][3] = (stbi_uc) prev_trans; return o; } case 0x21: // Comment Extension. { int len; if (stbi__get8(s) == 0xF9) { // Graphic Control Extension. len = stbi__get8(s); if (len == 4) { g->eflags = stbi__get8(s); g->delay = stbi__get16le(s); g->transparent = stbi__get8(s); } else { stbi__skip(s, len); break; } } while ((len = stbi__get8(s)) != 0) stbi__skip(s, len); break; } case 0x3B: // gif stream termination code return (stbi_uc *) s; // using '1' causes warning on some compilers default: return stbi__errpuc("unknown code", "Corrupt GIF"); } } STBI_NOTUSED(req_comp); } static stbi_uc *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { stbi_uc *u = 0; stbi__gif g; memset(&g, 0, sizeof(g)); u = stbi__gif_load_next(s, &g, comp, req_comp); if (u == (stbi_uc *) s) u = 0; // end of animated gif marker if (u) { *x = g.w; *y = g.h; if (req_comp && req_comp != 4) u = stbi__convert_format(u, 4, req_comp, g.w, g.h); } else if (g.out) STBI_FREE(g.out); return u; } static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) { return stbi__gif_info_raw(s,x,y,comp); } #endif // ************************************************************************************************* // Radiance RGBE HDR loader // originally by Nicolas Schulz #ifndef STBI_NO_HDR static int stbi__hdr_test_core(stbi__context *s) { const char *signature = "#?RADIANCE\n"; int i; for (i=0; signature[i]; ++i) if (stbi__get8(s) != signature[i]) return 0; return 1; } static int stbi__hdr_test(stbi__context* s) { int r = stbi__hdr_test_core(s); stbi__rewind(s); return r; } #define STBI__HDR_BUFLEN 1024 static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) { int len=0; char c = '\0'; c = (char) stbi__get8(z); while (!stbi__at_eof(z) && c != '\n') { buffer[len++] = c; if (len == STBI__HDR_BUFLEN-1) { // flush to end of line while (!stbi__at_eof(z) && stbi__get8(z) != '\n') ; break; } c = (char) stbi__get8(z); } buffer[len] = 0; return buffer; } static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) { if ( input[3] != 0 ) { float f1; // Exponent f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); if (req_comp <= 2) output[0] = (input[0] + input[1] + input[2]) * f1 / 3; else { output[0] = input[0] * f1; output[1] = input[1] * f1; output[2] = input[2] * f1; } if (req_comp == 2) output[1] = 1; if (req_comp == 4) output[3] = 1; } else { switch (req_comp) { case 4: output[3] = 1; /* fallthrough */ case 3: output[0] = output[1] = output[2] = 0; break; case 2: output[1] = 1; /* fallthrough */ case 1: output[0] = 0; break; } } } static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { char buffer[STBI__HDR_BUFLEN]; char *token; int valid = 0; int width, height; stbi_uc *scanline; float *hdr_data; int len; unsigned char count, value; int i, j, k, c1,c2, z; // Check identifier if (strcmp(stbi__hdr_gettoken(s,buffer), "#?RADIANCE") != 0) return stbi__errpf("not HDR", "Corrupt HDR image"); // Parse header for(;;) { token = stbi__hdr_gettoken(s,buffer); if (token[0] == 0) break; if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; } if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); // Parse width and height // can't use sscanf() if we're not using stdio! token = stbi__hdr_gettoken(s,buffer); if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); token += 3; height = (int) strtol(token, &token, 10); while (*token == ' ') ++token; if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); token += 3; width = (int) strtol(token, NULL, 10); *x = width; *y = height; if (comp) *comp = 3; if (req_comp == 0) req_comp = 3; // Read data hdr_data = (float *) stbi__malloc(height * width * req_comp * sizeof(float)); // Load image data // image data is stored as some number of sca if ( width < 8 || width >= 32768) { // Read flat data for (j=0; j < height; ++j) { for (i=0; i < width; ++i) { stbi_uc rgbe[4]; main_decode_loop: stbi__getn(s, rgbe, 4); stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); } } } else { // Read RLE-encoded data scanline = NULL; for (j = 0; j < height; ++j) { c1 = stbi__get8(s); c2 = stbi__get8(s); len = stbi__get8(s); if (c1 != 2 || c2 != 2 || (len & 0x80)) { // not run-length encoded, so we have to actually use THIS data as a decoded // pixel (note this can't be a valid pixel--one of RGB must be >= 128) stbi_uc rgbe[4]; rgbe[0] = (stbi_uc) c1; rgbe[1] = (stbi_uc) c2; rgbe[2] = (stbi_uc) len; rgbe[3] = (stbi_uc) stbi__get8(s); stbi__hdr_convert(hdr_data, rgbe, req_comp); i = 1; j = 0; STBI_FREE(scanline); goto main_decode_loop; // yes, this makes no sense } len <<= 8; len |= stbi__get8(s); if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } if (scanline == NULL) scanline = (stbi_uc *) stbi__malloc(width * 4); for (k = 0; k < 4; ++k) { i = 0; while (i < width) { count = stbi__get8(s); if (count > 128) { // Run value = stbi__get8(s); count -= 128; for (z = 0; z < count; ++z) scanline[i++ * 4 + k] = value; } else { // Dump for (z = 0; z < count; ++z) scanline[i++ * 4 + k] = stbi__get8(s); } } } for (i=0; i < width; ++i) stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); } STBI_FREE(scanline); } return hdr_data; } static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) { char buffer[STBI__HDR_BUFLEN]; char *token; int valid = 0; if (stbi__hdr_test(s) == 0) { stbi__rewind( s ); return 0; } for(;;) { token = stbi__hdr_gettoken(s,buffer); if (token[0] == 0) break; if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; } if (!valid) { stbi__rewind( s ); return 0; } token = stbi__hdr_gettoken(s,buffer); if (strncmp(token, "-Y ", 3)) { stbi__rewind( s ); return 0; } token += 3; *y = (int) strtol(token, &token, 10); while (*token == ' ') ++token; if (strncmp(token, "+X ", 3)) { stbi__rewind( s ); return 0; } token += 3; *x = (int) strtol(token, NULL, 10); *comp = 3; return 1; } #endif // STBI_NO_HDR #ifndef STBI_NO_BMP static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) { void *p; stbi__bmp_data info; info.all_a = 255; p = stbi__bmp_parse_header(s, &info); stbi__rewind( s ); if (p == NULL) return 0; *x = s->img_x; *y = s->img_y; *comp = info.ma ? 4 : 3; return 1; } #endif #ifndef STBI_NO_PSD static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) { int channelCount; if (stbi__get32be(s) != 0x38425053) { stbi__rewind( s ); return 0; } if (stbi__get16be(s) != 1) { stbi__rewind( s ); return 0; } stbi__skip(s, 6); channelCount = stbi__get16be(s); if (channelCount < 0 || channelCount > 16) { stbi__rewind( s ); return 0; } *y = stbi__get32be(s); *x = stbi__get32be(s); if (stbi__get16be(s) != 8) { stbi__rewind( s ); return 0; } if (stbi__get16be(s) != 3) { stbi__rewind( s ); return 0; } *comp = 4; return 1; } #endif #ifndef STBI_NO_PIC static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) { int act_comp=0,num_packets=0,chained; stbi__pic_packet packets[10]; if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { stbi__rewind(s); return 0; } stbi__skip(s, 88); *x = stbi__get16be(s); *y = stbi__get16be(s); if (stbi__at_eof(s)) { stbi__rewind( s); return 0; } if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { stbi__rewind( s ); return 0; } stbi__skip(s, 8); do { stbi__pic_packet *packet; if (num_packets==sizeof(packets)/sizeof(packets[0])) return 0; packet = &packets[num_packets++]; chained = stbi__get8(s); packet->size = stbi__get8(s); packet->type = stbi__get8(s); packet->channel = stbi__get8(s); act_comp |= packet->channel; if (stbi__at_eof(s)) { stbi__rewind( s ); return 0; } if (packet->size != 8) { stbi__rewind( s ); return 0; } } while (chained); *comp = (act_comp & 0x10 ? 4 : 3); return 1; } #endif // ************************************************************************************************* // Portable Gray Map and Portable Pixel Map loader // by Ken Miller // // PGM: http://netpbm.sourceforge.net/doc/pgm.html // PPM: http://netpbm.sourceforge.net/doc/ppm.html // // Known limitations: // Does not support comments in the header section // Does not support ASCII image data (formats P2 and P3) // Does not support 16-bit-per-channel #ifndef STBI_NO_PNM static int stbi__pnm_test(stbi__context *s) { char p, t; p = (char) stbi__get8(s); t = (char) stbi__get8(s); if (p != 'P' || (t != '5' && t != '6')) { stbi__rewind( s ); return 0; } return 1; } static stbi_uc *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { stbi_uc *out; if (!stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n)) return 0; *x = s->img_x; *y = s->img_y; *comp = s->img_n; out = (stbi_uc *) stbi__malloc(s->img_n * s->img_x * s->img_y); if (!out) return stbi__errpuc("outofmem", "Out of memory"); stbi__getn(s, out, s->img_n * s->img_x * s->img_y); if (req_comp && req_comp != s->img_n) { out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); if (out == NULL) return out; // stbi__convert_format frees input on failure } return out; } static int stbi__pnm_isspace(char c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; } static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) { for (;;) { while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) *c = (char) stbi__get8(s); if (stbi__at_eof(s) || *c != '#') break; while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) *c = (char) stbi__get8(s); } } static int stbi__pnm_isdigit(char c) { return c >= '0' && c <= '9'; } static int stbi__pnm_getinteger(stbi__context *s, char *c) { int value = 0; while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { value = value*10 + (*c - '0'); *c = (char) stbi__get8(s); } return value; } static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) { int maxv; char c, p, t; stbi__rewind( s ); // Get identifier p = (char) stbi__get8(s); t = (char) stbi__get8(s); if (p != 'P' || (t != '5' && t != '6')) { stbi__rewind( s ); return 0; } *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm c = (char) stbi__get8(s); stbi__pnm_skip_whitespace(s, &c); *x = stbi__pnm_getinteger(s, &c); // read width stbi__pnm_skip_whitespace(s, &c); *y = stbi__pnm_getinteger(s, &c); // read height stbi__pnm_skip_whitespace(s, &c); maxv = stbi__pnm_getinteger(s, &c); // read max value if (maxv > 255) return stbi__err("max value > 255", "PPM image not 8-bit"); else return 1; } #endif static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) { #ifndef STBI_NO_JPEG if (stbi__jpeg_info(s, x, y, comp)) return 1; #endif #ifndef STBI_NO_PNG if (stbi__png_info(s, x, y, comp)) return 1; #endif #ifndef STBI_NO_GIF if (stbi__gif_info(s, x, y, comp)) return 1; #endif #ifndef STBI_NO_BMP if (stbi__bmp_info(s, x, y, comp)) return 1; #endif #ifndef STBI_NO_PSD if (stbi__psd_info(s, x, y, comp)) return 1; #endif #ifndef STBI_NO_PIC if (stbi__pic_info(s, x, y, comp)) return 1; #endif #ifndef STBI_NO_PNM if (stbi__pnm_info(s, x, y, comp)) return 1; #endif #ifndef STBI_NO_HDR if (stbi__hdr_info(s, x, y, comp)) return 1; #endif // test tga last because it's a crappy test! #ifndef STBI_NO_TGA if (stbi__tga_info(s, x, y, comp)) return 1; #endif return stbi__err("unknown image type", "Image not of any known type, or corrupt"); } #ifndef STBI_NO_STDIO STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) { FILE *f = stbi__fopen(filename, "rb"); int result; if (!f) return stbi__err("can't fopen", "Unable to open file"); result = stbi_info_from_file(f, x, y, comp); fclose(f); return result; } STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) { int r; stbi__context s; long pos = ftell(f); stbi__start_file(&s, f); r = stbi__info_main(&s,x,y,comp); fseek(f,pos,SEEK_SET); return r; } #endif // !STBI_NO_STDIO STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) { stbi__context s; stbi__start_mem(&s,buffer,len); return stbi__info_main(&s,x,y,comp); } STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) { stbi__context s; stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); return stbi__info_main(&s,x,y,comp); } #endif // STB_IMAGE_IMPLEMENTATION /* revision history: 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED 2.09 (2016-01-16) allow comments in PNM files 16-bit-per-pixel TGA (not bit-per-component) info() for TGA could break due to .hdr handling info() for BMP to shares code instead of sloppy parse can use STBI_REALLOC_SIZED if allocator doesn't support realloc code cleanup 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA 2.07 (2015-09-13) fix compiler warnings partial animated GIF support limited 16-bpc PSD support #ifdef unused functions bug with < 92 byte PIC,PNM,HDR,TGA 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit 2.03 (2015-04-12) extra corruption checking (mmozeiko) stbi_set_flip_vertically_on_load (nguillemot) fix NEON support; fix mingw support 2.02 (2015-01-19) fix incorrect assert, fix warning 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) progressive JPEG (stb) PGM/PPM support (Ken Miller) STBI_MALLOC,STBI_REALLOC,STBI_FREE GIF bugfix -- seemingly never worked STBI_NO_*, STBI_ONLY_* 1.48 (2014-12-14) fix incorrectly-named assert() 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) optimize PNG (ryg) fix bug in interlaced PNG with user-specified channel count (stb) 1.46 (2014-08-26) fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG 1.45 (2014-08-16) fix MSVC-ARM internal compiler error by wrapping malloc 1.44 (2014-08-07) various warning fixes from Ronny Chevalier 1.43 (2014-07-15) fix MSVC-only compiler problem in code changed in 1.42 1.42 (2014-07-09) don't define _CRT_SECURE_NO_WARNINGS (affects user code) fixes to stbi__cleanup_jpeg path added STBI_ASSERT to avoid requiring assert.h 1.41 (2014-06-25) fix search&replace from 1.36 that messed up comments/error messages 1.40 (2014-06-22) fix gcc struct-initialization warning 1.39 (2014-06-15) fix to TGA optimization when req_comp != number of components in TGA; fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) add support for BMP version 5 (more ignored fields) 1.38 (2014-06-06) suppress MSVC warnings on integer casts truncating values fix accidental rename of 'skip' field of I/O 1.37 (2014-06-04) remove duplicate typedef 1.36 (2014-06-03) convert to header file single-file library if de-iphone isn't set, load iphone images color-swapped instead of returning NULL 1.35 (2014-05-27) various warnings fix broken STBI_SIMD path fix bug where stbi_load_from_file no longer left file pointer in correct place fix broken non-easy path for 32-bit BMP (possibly never used) TGA optimization by Arseny Kapoulkine 1.34 (unknown) use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case 1.33 (2011-07-14) make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements 1.32 (2011-07-13) support for "info" function for all supported filetypes (SpartanJ) 1.31 (2011-06-20) a few more leak fixes, bug in PNG handling (SpartanJ) 1.30 (2011-06-11) added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) removed deprecated format-specific test/load functions removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) fix inefficiency in decoding 32-bit BMP (David Woo) 1.29 (2010-08-16) various warning fixes from Aurelien Pocheville 1.28 (2010-08-01) fix bug in GIF palette transparency (SpartanJ) 1.27 (2010-08-01) cast-to-stbi_uc to fix warnings 1.26 (2010-07-24) fix bug in file buffering for PNG reported by SpartanJ 1.25 (2010-07-17) refix trans_data warning (Won Chun) 1.24 (2010-07-12) perf improvements reading from files on platforms with lock-heavy fgetc() minor perf improvements for jpeg deprecated type-specific functions so we'll get feedback if they're needed attempt to fix trans_data warning (Won Chun) 1.23 fixed bug in iPhone support 1.22 (2010-07-10) removed image *writing* support stbi_info support from Jetro Lauha GIF support from Jean-Marc Lienher iPhone PNG-extensions from James Brown warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) 1.21 fix use of 'stbi_uc' in header (reported by jon blow) 1.20 added support for Softimage PIC, by Tom Seddon 1.19 bug in interlaced PNG corruption check (found by ryg) 1.18 (2008-08-02) fix a threading bug (local mutable static) 1.17 support interlaced PNG 1.16 major bugfix - stbi__convert_format converted one too many pixels 1.15 initialize some fields for thread safety 1.14 fix threadsafe conversion bug header-file-only version (#define STBI_HEADER_FILE_ONLY before including) 1.13 threadsafe 1.12 const qualifiers in the API 1.11 Support installable IDCT, colorspace conversion routines 1.10 Fixes for 64-bit (don't use "unsigned long") optimized upsampling by Fabian "ryg" Giesen 1.09 Fix format-conversion for PSD code (bad global variables!) 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz 1.07 attempt to fix C++ warning/errors again 1.06 attempt to fix C++ warning/errors again 1.05 fix TGA loading to return correct *comp and use good luminance calc 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR 1.02 support for (subset of) HDR files, float interface for preferred access to them 1.01 fix bug: possible bug in handling right-side up bmps... not sure fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all 1.00 interface to zlib that skips zlib header 0.99 correct handling of alpha in palette 0.98 TGA loader by lonesock; dynamically add loaders (untested) 0.97 jpeg errors on too large a file; also catch another malloc failure 0.96 fix detection of invalid v value - particleman@mollyrocket forum 0.95 during header scan, seek to markers in case of padding 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same 0.93 handle jpegtran output; verbose errors 0.92 read 4,8,16,24,32-bit BMP files of several formats 0.91 output 24-bit Windows 3.0 BMP files 0.90 fix a few more warnings; bump version number to approach 1.0 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd 0.60 fix compiling as c++ 0.59 fix warnings: merge Dave Moore's -Wall fixes 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available 0.56 fix bug: zlib uncompressed mode len vs. nlen 0.55 fix bug: restart_interval not initialized to 0 0.54 allow NULL for 'int *comp' 0.53 fix bug in png 3->4; speedup png decoding 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments 0.51 obey req_comp requests, 1-component jpegs return as 1-component, on 'test' only check type, not whether we support this variant 0.50 (2006-11-19) first released version */ vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/3rdparty/nanovg/src/stb_truetype.h000066400000000000000000005760761461511344300313220ustar00rootroot00000000000000// stb_truetype.h - v1.24 - public domain // authored from 2009-2020 by Sean Barrett / RAD Game Tools // // ======================================================================= // // NO SECURITY GUARANTEE -- DO NOT USE THIS ON UNTRUSTED FONT FILES // // This library does no range checking of the offsets found in the file, // meaning an attacker can use it to read arbitrary memory. // // ======================================================================= // // This library processes TrueType files: // parse files // extract glyph metrics // extract glyph shapes // render glyphs to one-channel bitmaps with antialiasing (box filter) // render glyphs to one-channel SDF bitmaps (signed-distance field/function) // // Todo: // non-MS cmaps // crashproof on bad data // hinting? (no longer patented) // cleartype-style AA? // optimize: use simple memory allocator for intermediates // optimize: build edge-list directly from curves // optimize: rasterize directly from curves? // // ADDITIONAL CONTRIBUTORS // // Mikko Mononen: compound shape support, more cmap formats // Tor Andersson: kerning, subpixel rendering // Dougall Johnson: OpenType / Type 2 font handling // Daniel Ribeiro Maciel: basic GPOS-based kerning // // Misc other: // Ryan Gordon // Simon Glass // github:IntellectualKitty // Imanol Celaya // Daniel Ribeiro Maciel // // Bug/warning reports/fixes: // "Zer" on mollyrocket Fabian "ryg" Giesen github:NiLuJe // Cass Everitt Martins Mozeiko github:aloucks // stoiko (Haemimont Games) Cap Petschulat github:oyvindjam // Brian Hook Omar Cornut github:vassvik // Walter van Niftrik Ryan Griege // David Gow Peter LaValle // David Given Sergey Popov // Ivan-Assen Ivanov Giumo X. Clanjor // Anthony Pesch Higor Euripedes // Johan Duparc Thomas Fields // Hou Qiming Derek Vinyard // Rob Loach Cort Stratton // Kenney Phillis Jr. Brian Costabile // Ken Voskuil (kaesve) // // VERSION HISTORY // // 1.24 (2020-02-05) fix warning // 1.23 (2020-02-02) query SVG data for glyphs; query whole kerning table (but only kern not GPOS) // 1.22 (2019-08-11) minimize missing-glyph duplication; fix kerning if both 'GPOS' and 'kern' are defined // 1.21 (2019-02-25) fix warning // 1.20 (2019-02-07) PackFontRange skips missing codepoints; GetScaleFontVMetrics() // 1.19 (2018-02-11) GPOS kerning, STBTT_fmod // 1.18 (2018-01-29) add missing function // 1.17 (2017-07-23) make more arguments const; doc fix // 1.16 (2017-07-12) SDF support // 1.15 (2017-03-03) make more arguments const // 1.14 (2017-01-16) num-fonts-in-TTC function // 1.13 (2017-01-02) support OpenType fonts, certain Apple fonts // 1.12 (2016-10-25) suppress warnings about casting away const with -Wcast-qual // 1.11 (2016-04-02) fix unused-variable warning // 1.10 (2016-04-02) user-defined fabs(); rare memory leak; remove duplicate typedef // 1.09 (2016-01-16) warning fix; avoid crash on outofmem; use allocation userdata properly // 1.08 (2015-09-13) document stbtt_Rasterize(); fixes for vertical & horizontal edges // 1.07 (2015-08-01) allow PackFontRanges to accept arrays of sparse codepoints; // variant PackFontRanges to pack and render in separate phases; // fix stbtt_GetFontOFfsetForIndex (never worked for non-0 input?); // fixed an assert() bug in the new rasterizer // replace assert() with STBTT_assert() in new rasterizer // // Full history can be found at the end of this file. // // LICENSE // // See end of file for license information. // // USAGE // // Include this file in whatever places need to refer to it. In ONE C/C++ // file, write: // #define STB_TRUETYPE_IMPLEMENTATION // before the #include of this file. This expands out the actual // implementation into that C/C++ file. // // To make the implementation private to the file that generates the implementation, // #define STBTT_STATIC // // Simple 3D API (don't ship this, but it's fine for tools and quick start) // stbtt_BakeFontBitmap() -- bake a font to a bitmap for use as texture // stbtt_GetBakedQuad() -- compute quad to draw for a given char // // Improved 3D API (more shippable): // #include "stb_rect_pack.h" -- optional, but you really want it // stbtt_PackBegin() // stbtt_PackSetOversampling() -- for improved quality on small fonts // stbtt_PackFontRanges() -- pack and renders // stbtt_PackEnd() // stbtt_GetPackedQuad() // // "Load" a font file from a memory buffer (you have to keep the buffer loaded) // stbtt_InitFont() // stbtt_GetFontOffsetForIndex() -- indexing for TTC font collections // stbtt_GetNumberOfFonts() -- number of fonts for TTC font collections // // Render a unicode codepoint to a bitmap // stbtt_GetCodepointBitmap() -- allocates and returns a bitmap // stbtt_MakeCodepointBitmap() -- renders into bitmap you provide // stbtt_GetCodepointBitmapBox() -- how big the bitmap must be // // Character advance/positioning // stbtt_GetCodepointHMetrics() // stbtt_GetFontVMetrics() // stbtt_GetFontVMetricsOS2() // stbtt_GetCodepointKernAdvance() // // Starting with version 1.06, the rasterizer was replaced with a new, // faster and generally-more-precise rasterizer. The new rasterizer more // accurately measures pixel coverage for anti-aliasing, except in the case // where multiple shapes overlap, in which case it overestimates the AA pixel // coverage. Thus, anti-aliasing of intersecting shapes may look wrong. If // this turns out to be a problem, you can re-enable the old rasterizer with // #define STBTT_RASTERIZER_VERSION 1 // which will incur about a 15% speed hit. // // ADDITIONAL DOCUMENTATION // // Immediately after this block comment are a series of sample programs. // // After the sample programs is the "header file" section. This section // includes documentation for each API function. // // Some important concepts to understand to use this library: // // Codepoint // Characters are defined by unicode codepoints, e.g. 65 is // uppercase A, 231 is lowercase c with a cedilla, 0x7e30 is // the hiragana for "ma". // // Glyph // A visual character shape (every codepoint is rendered as // some glyph) // // Glyph index // A font-specific integer ID representing a glyph // // Baseline // Glyph shapes are defined relative to a baseline, which is the // bottom of uppercase characters. Characters extend both above // and below the baseline. // // Current Point // As you draw text to the screen, you keep track of a "current point" // which is the origin of each character. The current point's vertical // position is the baseline. Even "baked fonts" use this model. // // Vertical Font Metrics // The vertical qualities of the font, used to vertically position // and space the characters. See docs for stbtt_GetFontVMetrics. // // Font Size in Pixels or Points // The preferred interface for specifying font sizes in stb_truetype // is to specify how tall the font's vertical extent should be in pixels. // If that sounds good enough, skip the next paragraph. // // Most font APIs instead use "points", which are a common typographic // measurement for describing font size, defined as 72 points per inch. // stb_truetype provides a point API for compatibility. However, true // "per inch" conventions don't make much sense on computer displays // since different monitors have different number of pixels per // inch. For example, Windows traditionally uses a convention that // there are 96 pixels per inch, thus making 'inch' measurements have // nothing to do with inches, and thus effectively defining a point to // be 1.333 pixels. Additionally, the TrueType font data provides // an explicit scale factor to scale a given font's glyphs to points, // but the author has observed that this scale factor is often wrong // for non-commercial fonts, thus making fonts scaled in points // according to the TrueType spec incoherently sized in practice. // // DETAILED USAGE: // // Scale: // Select how high you want the font to be, in points or pixels. // Call ScaleForPixelHeight or ScaleForMappingEmToPixels to compute // a scale factor SF that will be used by all other functions. // // Baseline: // You need to select a y-coordinate that is the baseline of where // your text will appear. Call GetFontBoundingBox to get the baseline-relative // bounding box for all characters. SF*-y0 will be the distance in pixels // that the worst-case character could extend above the baseline, so if // you want the top edge of characters to appear at the top of the // screen where y=0, then you would set the baseline to SF*-y0. // // Current point: // Set the current point where the first character will appear. The // first character could extend left of the current point; this is font // dependent. You can either choose a current point that is the leftmost // point and hope, or add some padding, or check the bounding box or // left-side-bearing of the first character to be displayed and set // the current point based on that. // // Displaying a character: // Compute the bounding box of the character. It will contain signed values // relative to . I.e. if it returns x0,y0,x1,y1, // then the character should be displayed in the rectangle from // to = 32 && *text < 128) { stbtt_aligned_quad q; stbtt_GetBakedQuad(cdata, 512,512, *text-32, &x,&y,&q,1);//1=opengl & d3d10+,0=d3d9 glTexCoord2f(q.s0,q.t1); glVertex2f(q.x0,q.y0); glTexCoord2f(q.s1,q.t1); glVertex2f(q.x1,q.y0); glTexCoord2f(q.s1,q.t0); glVertex2f(q.x1,q.y1); glTexCoord2f(q.s0,q.t0); glVertex2f(q.x0,q.y1); } ++text; } glEnd(); } #endif // // ////////////////////////////////////////////////////////////////////////////// // // Complete program (this compiles): get a single bitmap, print as ASCII art // #if 0 #include #define STB_TRUETYPE_IMPLEMENTATION // force following include to generate implementation #include "stb_truetype.h" char ttf_buffer[1<<25]; int main(int argc, char **argv) { stbtt_fontinfo font; unsigned char *bitmap; int w,h,i,j,c = (argc > 1 ? atoi(argv[1]) : 'a'), s = (argc > 2 ? atoi(argv[2]) : 20); fread(ttf_buffer, 1, 1<<25, fopen(argc > 3 ? argv[3] : "c:/windows/fonts/arialbd.ttf", "rb")); stbtt_InitFont(&font, ttf_buffer, stbtt_GetFontOffsetForIndex(ttf_buffer,0)); bitmap = stbtt_GetCodepointBitmap(&font, 0,stbtt_ScaleForPixelHeight(&font, s), c, &w, &h, 0,0); for (j=0; j < h; ++j) { for (i=0; i < w; ++i) putchar(" .:ioVM@"[bitmap[j*w+i]>>5]); putchar('\n'); } return 0; } #endif // // Output: // // .ii. // @@@@@@. // V@Mio@@o // :i. V@V // :oM@@M // :@@@MM@M // @@o o@M // :@@. M@M // @@@o@@@@ // :M@@V:@@. // ////////////////////////////////////////////////////////////////////////////// // // Complete program: print "Hello World!" banner, with bugs // #if 0 char buffer[24<<20]; unsigned char screen[20][79]; int main(int arg, char **argv) { stbtt_fontinfo font; int i,j,ascent,baseline,ch=0; float scale, xpos=2; // leave a little padding in case the character extends left char *text = "Heljo World!"; // intentionally misspelled to show 'lj' brokenness fread(buffer, 1, 1000000, fopen("c:/windows/fonts/arialbd.ttf", "rb")); stbtt_InitFont(&font, buffer, 0); scale = stbtt_ScaleForPixelHeight(&font, 15); stbtt_GetFontVMetrics(&font, &ascent,0,0); baseline = (int) (ascent*scale); while (text[ch]) { int advance,lsb,x0,y0,x1,y1; float x_shift = xpos - (float) floor(xpos); stbtt_GetCodepointHMetrics(&font, text[ch], &advance, &lsb); stbtt_GetCodepointBitmapBoxSubpixel(&font, text[ch], scale,scale,x_shift,0, &x0,&y0,&x1,&y1); stbtt_MakeCodepointBitmapSubpixel(&font, &screen[baseline + y0][(int) xpos + x0], x1-x0,y1-y0, 79, scale,scale,x_shift,0, text[ch]); // note that this stomps the old data, so where character boxes overlap (e.g. 'lj') it's wrong // because this API is really for baking character bitmaps into textures. if you want to render // a sequence of characters, you really need to render each bitmap to a temp buffer, then // "alpha blend" that into the working buffer xpos += (advance * scale); if (text[ch+1]) xpos += scale*stbtt_GetCodepointKernAdvance(&font, text[ch],text[ch+1]); ++ch; } for (j=0; j < 20; ++j) { for (i=0; i < 78; ++i) putchar(" .:ioVM@"[screen[j][i]>>5]); putchar('\n'); } return 0; } #endif ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// //// //// INTEGRATION WITH YOUR CODEBASE //// //// The following sections allow you to supply alternate definitions //// of C library functions used by stb_truetype, e.g. if you don't //// link with the C runtime library. #ifdef STB_TRUETYPE_IMPLEMENTATION // #define your own (u)stbtt_int8/16/32 before including to override this #ifndef stbtt_uint8 typedef unsigned char stbtt_uint8; typedef signed char stbtt_int8; typedef unsigned short stbtt_uint16; typedef signed short stbtt_int16; typedef unsigned int stbtt_uint32; typedef signed int stbtt_int32; #endif typedef char stbtt__check_size32[sizeof(stbtt_int32)==4 ? 1 : -1]; typedef char stbtt__check_size16[sizeof(stbtt_int16)==2 ? 1 : -1]; // e.g. #define your own STBTT_ifloor/STBTT_iceil() to avoid math.h #ifndef STBTT_ifloor #include #define STBTT_ifloor(x) ((int) floor(x)) #define STBTT_iceil(x) ((int) ceil(x)) #endif #ifndef STBTT_sqrt #include #define STBTT_sqrt(x) sqrt(x) #define STBTT_pow(x,y) pow(x,y) #endif #ifndef STBTT_fmod #include #define STBTT_fmod(x,y) fmod(x,y) #endif #ifndef STBTT_cos #include #define STBTT_cos(x) cos(x) #define STBTT_acos(x) acos(x) #endif #ifndef STBTT_fabs #include #define STBTT_fabs(x) fabs(x) #endif // #define your own functions "STBTT_malloc" / "STBTT_free" to avoid malloc.h #ifndef STBTT_malloc #include #define STBTT_malloc(x,u) ((void)(u),malloc(x)) #define STBTT_free(x,u) ((void)(u),free(x)) #endif #ifndef STBTT_assert #include #define STBTT_assert(x) assert(x) #endif #ifndef STBTT_strlen #include #define STBTT_strlen(x) strlen(x) #endif #ifndef STBTT_memcpy #include #define STBTT_memcpy memcpy #define STBTT_memset memset #endif #endif /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// //// //// INTERFACE //// //// #ifndef __STB_INCLUDE_STB_TRUETYPE_H__ #define __STB_INCLUDE_STB_TRUETYPE_H__ #ifdef STBTT_STATIC #define STBTT_DEF static #else #define STBTT_DEF extern #endif #ifdef __cplusplus extern "C" { #endif // private structure typedef struct { unsigned char *data; int cursor; int size; } stbtt__buf; ////////////////////////////////////////////////////////////////////////////// // // TEXTURE BAKING API // // If you use this API, you only have to call two functions ever. // typedef struct { unsigned short x0,y0,x1,y1; // coordinates of bbox in bitmap float xoff,yoff,xadvance; } stbtt_bakedchar; STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, // font location (use offset=0 for plain .ttf) float pixel_height, // height of font in pixels unsigned char *pixels, int pw, int ph, // bitmap to be filled in int first_char, int num_chars, // characters to bake stbtt_bakedchar *chardata); // you allocate this, it's num_chars long // if return is positive, the first unused row of the bitmap // if return is negative, returns the negative of the number of characters that fit // if return is 0, no characters fit and no rows were used // This uses a very crappy packing. typedef struct { float x0,y0,s0,t0; // top-left float x1,y1,s1,t1; // bottom-right } stbtt_aligned_quad; STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int ph, // same data as above int char_index, // character to display float *xpos, float *ypos, // pointers to current position in screen pixel space stbtt_aligned_quad *q, // output: quad to draw int opengl_fillrule); // true if opengl fill rule; false if DX9 or earlier // Call GetBakedQuad with char_index = 'character - first_char', and it // creates the quad you need to draw and advances the current position. // // The coordinate system used assumes y increases downwards. // // Characters will extend both above and below the current position; // see discussion of "BASELINE" above. // // It's inefficient; you might want to c&p it and optimize it. STBTT_DEF void stbtt_GetScaledFontVMetrics(const unsigned char *fontdata, int index, float size, float *ascent, float *descent, float *lineGap); // Query the font vertical metrics without having to create a font first. ////////////////////////////////////////////////////////////////////////////// // // NEW TEXTURE BAKING API // // This provides options for packing multiple fonts into one atlas, not // perfectly but better than nothing. typedef struct { unsigned short x0,y0,x1,y1; // coordinates of bbox in bitmap float xoff,yoff,xadvance; float xoff2,yoff2; } stbtt_packedchar; typedef struct stbtt_pack_context stbtt_pack_context; typedef struct stbtt_fontinfo stbtt_fontinfo; #ifndef STB_RECT_PACK_VERSION typedef struct stbrp_rect stbrp_rect; #endif STBTT_DEF int stbtt_PackBegin(stbtt_pack_context *spc, unsigned char *pixels, int width, int height, int stride_in_bytes, int padding, void *alloc_context); // Initializes a packing context stored in the passed-in stbtt_pack_context. // Future calls using this context will pack characters into the bitmap passed // in here: a 1-channel bitmap that is width * height. stride_in_bytes is // the distance from one row to the next (or 0 to mean they are packed tightly // together). "padding" is the amount of padding to leave between each // character (normally you want '1' for bitmaps you'll use as textures with // bilinear filtering). // // Returns 0 on failure, 1 on success. STBTT_DEF void stbtt_PackEnd (stbtt_pack_context *spc); // Cleans up the packing context and frees all memory. #define STBTT_POINT_SIZE(x) (-(x)) STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, float font_size, int first_unicode_char_in_range, int num_chars_in_range, stbtt_packedchar *chardata_for_range); // Creates character bitmaps from the font_index'th font found in fontdata (use // font_index=0 if you don't know what that is). It creates num_chars_in_range // bitmaps for characters with unicode values starting at first_unicode_char_in_range // and increasing. Data for how to render them is stored in chardata_for_range; // pass these to stbtt_GetPackedQuad to get back renderable quads. // // font_size is the full height of the character from ascender to descender, // as computed by stbtt_ScaleForPixelHeight. To use a point size as computed // by stbtt_ScaleForMappingEmToPixels, wrap the point size in STBTT_POINT_SIZE() // and pass that result as 'font_size': // ..., 20 , ... // font max minus min y is 20 pixels tall // ..., STBTT_POINT_SIZE(20), ... // 'M' is 20 pixels tall typedef struct { float font_size; int first_unicode_codepoint_in_range; // if non-zero, then the chars are continuous, and this is the first codepoint int *array_of_unicode_codepoints; // if non-zero, then this is an array of unicode codepoints int num_chars; stbtt_packedchar *chardata_for_range; // output unsigned char h_oversample, v_oversample; // don't set these, they're used internally } stbtt_pack_range; STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, stbtt_pack_range *ranges, int num_ranges); // Creates character bitmaps from multiple ranges of characters stored in // ranges. This will usually create a better-packed bitmap than multiple // calls to stbtt_PackFontRange. Note that you can call this multiple // times within a single PackBegin/PackEnd. STBTT_DEF void stbtt_PackSetOversampling(stbtt_pack_context *spc, unsigned int h_oversample, unsigned int v_oversample); // Oversampling a font increases the quality by allowing higher-quality subpixel // positioning, and is especially valuable at smaller text sizes. // // This function sets the amount of oversampling for all following calls to // stbtt_PackFontRange(s) or stbtt_PackFontRangesGatherRects for a given // pack context. The default (no oversampling) is achieved by h_oversample=1 // and v_oversample=1. The total number of pixels required is // h_oversample*v_oversample larger than the default; for example, 2x2 // oversampling requires 4x the storage of 1x1. For best results, render // oversampled textures with bilinear filtering. Look at the readme in // stb/tests/oversample for information about oversampled fonts // // To use with PackFontRangesGather etc., you must set it before calls // call to PackFontRangesGatherRects. STBTT_DEF void stbtt_PackSetSkipMissingCodepoints(stbtt_pack_context *spc, int skip); // If skip != 0, this tells stb_truetype to skip any codepoints for which // there is no corresponding glyph. If skip=0, which is the default, then // codepoints without a glyph recived the font's "missing character" glyph, // typically an empty box by convention. STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int ph, // same data as above int char_index, // character to display float *xpos, float *ypos, // pointers to current position in screen pixel space stbtt_aligned_quad *q, // output: quad to draw int align_to_integer); STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects); STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, stbrp_rect *rects, int num_rects); STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects); // Calling these functions in sequence is roughly equivalent to calling // stbtt_PackFontRanges(). If you more control over the packing of multiple // fonts, or if you want to pack custom data into a font texture, take a look // at the source to of stbtt_PackFontRanges() and create a custom version // using these functions, e.g. call GatherRects multiple times, // building up a single array of rects, then call PackRects once, // then call RenderIntoRects repeatedly. This may result in a // better packing than calling PackFontRanges multiple times // (or it may not). // this is an opaque structure that you shouldn't mess with which holds // all the context needed from PackBegin to PackEnd. struct stbtt_pack_context { void *user_allocator_context; void *pack_info; int width; int height; int stride_in_bytes; int padding; int skip_missing; unsigned int h_oversample, v_oversample; unsigned char *pixels; void *nodes; }; ////////////////////////////////////////////////////////////////////////////// // // FONT LOADING // // STBTT_DEF int stbtt_GetNumberOfFonts(const unsigned char *data); // This function will determine the number of fonts in a font file. TrueType // collection (.ttc) files may contain multiple fonts, while TrueType font // (.ttf) files only contain one font. The number of fonts can be used for // indexing with the previous function where the index is between zero and one // less than the total fonts. If an error occurs, -1 is returned. STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *data, int index); // Each .ttf/.ttc file may have more than one font. Each font has a sequential // index number starting from 0. Call this function to get the font offset for // a given index; it returns -1 if the index is out of range. A regular .ttf // file will only define one font and it always be at offset 0, so it will // return '0' for index 0, and -1 for all other indices. // The following structure is defined publicly so you can declare one on // the stack or as a global or etc, but you should treat it as opaque. struct stbtt_fontinfo { void * userdata; unsigned char * data; // pointer to .ttf file int fontstart; // offset of start of font int numGlyphs; // number of glyphs, needed for range checking int loca,head,glyf,hhea,hmtx,kern,gpos,svg; // table locations as offset from start of .ttf int index_map; // a cmap mapping for our chosen character encoding int indexToLocFormat; // format needed to map from glyph index to glyph stbtt__buf cff; // cff font data stbtt__buf charstrings; // the charstring index stbtt__buf gsubrs; // global charstring subroutines index stbtt__buf subrs; // private charstring subroutines index stbtt__buf fontdicts; // array of font dicts stbtt__buf fdselect; // map from glyph to fontdict }; STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data, int offset); // Given an offset into the file that defines a font, this function builds // the necessary cached info for the rest of the system. You must allocate // the stbtt_fontinfo yourself, and stbtt_InitFont will fill it out. You don't // need to do anything special to free it, because the contents are pure // value data with no additional data structures. Returns 0 on failure. ////////////////////////////////////////////////////////////////////////////// // // CHARACTER TO GLYPH-INDEX CONVERSIOn STBTT_DEF int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unicode_codepoint); // If you're going to perform multiple operations on the same character // and you want a speed-up, call this function with the character you're // going to process, then use glyph-based functions instead of the // codepoint-based functions. // Returns 0 if the character codepoint is not defined in the font. ////////////////////////////////////////////////////////////////////////////// // // CHARACTER PROPERTIES // STBTT_DEF float stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, float pixels); // computes a scale factor to produce a font whose "height" is 'pixels' tall. // Height is measured as the distance from the highest ascender to the lowest // descender; in other words, it's equivalent to calling stbtt_GetFontVMetrics // and computing: // scale = pixels / (ascent - descent) // so if you prefer to measure height by the ascent only, use a similar calculation. STBTT_DEF float stbtt_ScaleForMappingEmToPixels(const stbtt_fontinfo *info, float pixels); // computes a scale factor to produce a font whose EM size is mapped to // 'pixels' tall. This is probably what traditional APIs compute, but // I'm not positive. STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, int *descent, int *lineGap); // ascent is the coordinate above the baseline the font extends; descent // is the coordinate below the baseline the font extends (i.e. it is typically negative) // lineGap is the spacing between one row's descent and the next row's ascent... // so you should advance the vertical position by "*ascent - *descent + *lineGap" // these are expressed in unscaled coordinates, so you must multiply by // the scale factor for a given size STBTT_DEF int stbtt_GetFontVMetricsOS2(const stbtt_fontinfo *info, int *typoAscent, int *typoDescent, int *typoLineGap); // analogous to GetFontVMetrics, but returns the "typographic" values from the OS/2 // table (specific to MS/Windows TTF files). // // Returns 1 on success (table present), 0 on failure. STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1); // the bounding box around all possible characters STBTT_DEF void stbtt_GetCodepointHMetrics(const stbtt_fontinfo *info, int codepoint, int *advanceWidth, int *leftSideBearing); // leftSideBearing is the offset from the current horizontal position to the left edge of the character // advanceWidth is the offset from the current horizontal position to the next horizontal position // these are expressed in unscaled coordinates STBTT_DEF int stbtt_GetCodepointKernAdvance(const stbtt_fontinfo *info, int ch1, int ch2); // an additional amount to add to the 'advance' value between ch1 and ch2 STBTT_DEF int stbtt_GetCodepointBox(const stbtt_fontinfo *info, int codepoint, int *x0, int *y0, int *x1, int *y1); // Gets the bounding box of the visible part of the glyph, in unscaled coordinates STBTT_DEF void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_index, int *advanceWidth, int *leftSideBearing); STBTT_DEF int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2); STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1); // as above, but takes one or more glyph indices for greater efficiency typedef struct stbtt_kerningentry { int glyph1; // use stbtt_FindGlyphIndex int glyph2; int advance; } stbtt_kerningentry; STBTT_DEF int stbtt_GetKerningTableLength(const stbtt_fontinfo *info); STBTT_DEF int stbtt_GetKerningTable(const stbtt_fontinfo *info, stbtt_kerningentry* table, int table_length); // Retrieves a complete list of all of the kerning pairs provided by the font // stbtt_GetKerningTable never writes more than table_length entries and returns how many entries it did write. // The table will be sorted by (a.glyph1 == b.glyph1)?(a.glyph2 < b.glyph2):(a.glyph1 < b.glyph1) ////////////////////////////////////////////////////////////////////////////// // // GLYPH SHAPES (you probably don't need these, but they have to go before // the bitmaps for C declaration-order reasons) // #ifndef STBTT_vmove // you can predefine these to use different values (but why?) enum { STBTT_vmove=1, STBTT_vline, STBTT_vcurve, STBTT_vcubic }; #endif #ifndef stbtt_vertex // you can predefine this to use different values // (we share this with other code at RAD) #define stbtt_vertex_type short // can't use stbtt_int16 because that's not visible in the header file typedef struct { stbtt_vertex_type x,y,cx,cy,cx1,cy1; unsigned char type,padding; } stbtt_vertex; #endif STBTT_DEF int stbtt_IsGlyphEmpty(const stbtt_fontinfo *info, int glyph_index); // returns non-zero if nothing is drawn for this glyph STBTT_DEF int stbtt_GetCodepointShape(const stbtt_fontinfo *info, int unicode_codepoint, stbtt_vertex **vertices); STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **vertices); // returns # of vertices and fills *vertices with the pointer to them // these are expressed in "unscaled" coordinates // // The shape is a series of contours. Each one starts with // a STBTT_moveto, then consists of a series of mixed // STBTT_lineto and STBTT_curveto segments. A lineto // draws a line from previous endpoint to its x,y; a curveto // draws a quadratic bezier from previous endpoint to // its x,y, using cx,cy as the bezier control point. STBTT_DEF void stbtt_FreeShape(const stbtt_fontinfo *info, stbtt_vertex *vertices); // frees the data allocated above STBTT_DEF int stbtt_GetCodepointSVG(const stbtt_fontinfo *info, int unicode_codepoint, const char **svg); STBTT_DEF int stbtt_GetGlyphSVG(const stbtt_fontinfo *info, int gl, const char **svg); // fills svg with the character's SVG data. // returns data size or 0 if SVG not found. ////////////////////////////////////////////////////////////////////////////// // // BITMAP RENDERING // STBTT_DEF void stbtt_FreeBitmap(unsigned char *bitmap, void *userdata); // frees the bitmap allocated below STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff); // allocates a large-enough single-channel 8bpp bitmap and renders the // specified character/glyph at the specified scale into it, with // antialiasing. 0 is no coverage (transparent), 255 is fully covered (opaque). // *width & *height are filled out with the width & height of the bitmap, // which is stored left-to-right, top-to-bottom. // // xoff/yoff are the offset it pixel space from the glyph origin to the top-left of the bitmap STBTT_DEF unsigned char *stbtt_GetCodepointBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, int *width, int *height, int *xoff, int *yoff); // the same as stbtt_GetCodepoitnBitmap, but you can specify a subpixel // shift for the character STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint); // the same as stbtt_GetCodepointBitmap, but you pass in storage for the bitmap // in the form of 'output', with row spacing of 'out_stride' bytes. the bitmap // is clipped to out_w/out_h bytes. Call stbtt_GetCodepointBitmapBox to get the // width and height and positioning info for it first. STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint); // same as stbtt_MakeCodepointBitmap, but you can specify a subpixel // shift for the character STBTT_DEF void stbtt_MakeCodepointBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int codepoint); // same as stbtt_MakeCodepointBitmapSubpixel, but prefiltering // is performed (see stbtt_PackSetOversampling) STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1); // get the bbox of the bitmap centered around the glyph origin; so the // bitmap width is ix1-ix0, height is iy1-iy0, and location to place // the bitmap top left is (leftSideBearing*scale,iy0). // (Note that the bitmap uses y-increases-down, but the shape uses // y-increases-up, so CodepointBitmapBox and CodepointBox are inverted.) STBTT_DEF void stbtt_GetCodepointBitmapBoxSubpixel(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1); // same as stbtt_GetCodepointBitmapBox, but you can specify a subpixel // shift for the character // the following functions are equivalent to the above functions, but operate // on glyph indices instead of Unicode codepoints (for efficiency) STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int glyph, int *width, int *height, int *xoff, int *yoff); STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, int *width, int *height, int *xoff, int *yoff); STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph); STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int glyph); STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int glyph); STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1); STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y,float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1); // @TODO: don't expose this structure typedef struct { int w,h,stride; unsigned char *pixels; } stbtt__bitmap; // rasterize a shape with quadratic beziers into a bitmap STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, // 1-channel bitmap to draw into float flatness_in_pixels, // allowable error of curve in pixels stbtt_vertex *vertices, // array of vertices defining shape int num_verts, // number of vertices in above array float scale_x, float scale_y, // scale applied to input vertices float shift_x, float shift_y, // translation applied to input vertices int x_off, int y_off, // another translation applied to input int invert, // if non-zero, vertically flip shape void *userdata); // context for to STBTT_MALLOC ////////////////////////////////////////////////////////////////////////////// // // Signed Distance Function (or Field) rendering STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata); // frees the SDF bitmap allocated below STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float scale, int glyph, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff); STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, float scale, int codepoint, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff); // These functions compute a discretized SDF field for a single character, suitable for storing // in a single-channel texture, sampling with bilinear filtering, and testing against // larger than some threshold to produce scalable fonts. // info -- the font // scale -- controls the size of the resulting SDF bitmap, same as it would be creating a regular bitmap // glyph/codepoint -- the character to generate the SDF for // padding -- extra "pixels" around the character which are filled with the distance to the character (not 0), // which allows effects like bit outlines // onedge_value -- value 0-255 to test the SDF against to reconstruct the character (i.e. the isocontour of the character) // pixel_dist_scale -- what value the SDF should increase by when moving one SDF "pixel" away from the edge (on the 0..255 scale) // if positive, > onedge_value is inside; if negative, < onedge_value is inside // width,height -- output height & width of the SDF bitmap (including padding) // xoff,yoff -- output origin of the character // return value -- a 2D array of bytes 0..255, width*height in size // // pixel_dist_scale & onedge_value are a scale & bias that allows you to make // optimal use of the limited 0..255 for your application, trading off precision // and special effects. SDF values outside the range 0..255 are clamped to 0..255. // // Example: // scale = stbtt_ScaleForPixelHeight(22) // padding = 5 // onedge_value = 180 // pixel_dist_scale = 180/5.0 = 36.0 // // This will create an SDF bitmap in which the character is about 22 pixels // high but the whole bitmap is about 22+5+5=32 pixels high. To produce a filled // shape, sample the SDF at each pixel and fill the pixel if the SDF value // is greater than or equal to 180/255. (You'll actually want to antialias, // which is beyond the scope of this example.) Additionally, you can compute // offset outlines (e.g. to stroke the character border inside & outside, // or only outside). For example, to fill outside the character up to 3 SDF // pixels, you would compare against (180-36.0*3)/255 = 72/255. The above // choice of variables maps a range from 5 pixels outside the shape to // 2 pixels inside the shape to 0..255; this is intended primarily for apply // outside effects only (the interior range is needed to allow proper // antialiasing of the font at *smaller* sizes) // // The function computes the SDF analytically at each SDF pixel, not by e.g. // building a higher-res bitmap and approximating it. In theory the quality // should be as high as possible for an SDF of this size & representation, but // unclear if this is true in practice (perhaps building a higher-res bitmap // and computing from that can allow drop-out prevention). // // The algorithm has not been optimized at all, so expect it to be slow // if computing lots of characters or very large sizes. ////////////////////////////////////////////////////////////////////////////// // // Finding the right font... // // You should really just solve this offline, keep your own tables // of what font is what, and don't try to get it out of the .ttf file. // That's because getting it out of the .ttf file is really hard, because // the names in the file can appear in many possible encodings, in many // possible languages, and e.g. if you need a case-insensitive comparison, // the details of that depend on the encoding & language in a complex way // (actually underspecified in truetype, but also gigantic). // // But you can use the provided functions in two possible ways: // stbtt_FindMatchingFont() will use *case-sensitive* comparisons on // unicode-encoded names to try to find the font you want; // you can run this before calling stbtt_InitFont() // // stbtt_GetFontNameString() lets you get any of the various strings // from the file yourself and do your own comparisons on them. // You have to have called stbtt_InitFont() first. STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *fontdata, const char *name, int flags); // returns the offset (not index) of the font that matches, or -1 if none // if you use STBTT_MACSTYLE_DONTCARE, use a font name like "Arial Bold". // if you use any other flag, use a font name like "Arial"; this checks // the 'macStyle' header field; i don't know if fonts set this consistently #define STBTT_MACSTYLE_DONTCARE 0 #define STBTT_MACSTYLE_BOLD 1 #define STBTT_MACSTYLE_ITALIC 2 #define STBTT_MACSTYLE_UNDERSCORE 4 #define STBTT_MACSTYLE_NONE 8 // <= not same as 0, this makes us check the bitfield is 0 STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2); // returns 1/0 whether the first string interpreted as utf8 is identical to // the second string interpreted as big-endian utf16... useful for strings from next func STBTT_DEF const char *stbtt_GetFontNameString(const stbtt_fontinfo *font, int *length, int platformID, int encodingID, int languageID, int nameID); // returns the string (which may be big-endian double byte, e.g. for unicode) // and puts the length in bytes in *length. // // some of the values for the IDs are below; for more see the truetype spec: // http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6name.html // http://www.microsoft.com/typography/otspec/name.htm enum { // platformID STBTT_PLATFORM_ID_UNICODE =0, STBTT_PLATFORM_ID_MAC =1, STBTT_PLATFORM_ID_ISO =2, STBTT_PLATFORM_ID_MICROSOFT =3 }; enum { // encodingID for STBTT_PLATFORM_ID_UNICODE STBTT_UNICODE_EID_UNICODE_1_0 =0, STBTT_UNICODE_EID_UNICODE_1_1 =1, STBTT_UNICODE_EID_ISO_10646 =2, STBTT_UNICODE_EID_UNICODE_2_0_BMP=3, STBTT_UNICODE_EID_UNICODE_2_0_FULL=4 }; enum { // encodingID for STBTT_PLATFORM_ID_MICROSOFT STBTT_MS_EID_SYMBOL =0, STBTT_MS_EID_UNICODE_BMP =1, STBTT_MS_EID_SHIFTJIS =2, STBTT_MS_EID_UNICODE_FULL =10 }; enum { // encodingID for STBTT_PLATFORM_ID_MAC; same as Script Manager codes STBTT_MAC_EID_ROMAN =0, STBTT_MAC_EID_ARABIC =4, STBTT_MAC_EID_JAPANESE =1, STBTT_MAC_EID_HEBREW =5, STBTT_MAC_EID_CHINESE_TRAD =2, STBTT_MAC_EID_GREEK =6, STBTT_MAC_EID_KOREAN =3, STBTT_MAC_EID_RUSSIAN =7 }; enum { // languageID for STBTT_PLATFORM_ID_MICROSOFT; same as LCID... // problematic because there are e.g. 16 english LCIDs and 16 arabic LCIDs STBTT_MS_LANG_ENGLISH =0x0409, STBTT_MS_LANG_ITALIAN =0x0410, STBTT_MS_LANG_CHINESE =0x0804, STBTT_MS_LANG_JAPANESE =0x0411, STBTT_MS_LANG_DUTCH =0x0413, STBTT_MS_LANG_KOREAN =0x0412, STBTT_MS_LANG_FRENCH =0x040c, STBTT_MS_LANG_RUSSIAN =0x0419, STBTT_MS_LANG_GERMAN =0x0407, STBTT_MS_LANG_SPANISH =0x0409, STBTT_MS_LANG_HEBREW =0x040d, STBTT_MS_LANG_SWEDISH =0x041D }; enum { // languageID for STBTT_PLATFORM_ID_MAC STBTT_MAC_LANG_ENGLISH =0 , STBTT_MAC_LANG_JAPANESE =11, STBTT_MAC_LANG_ARABIC =12, STBTT_MAC_LANG_KOREAN =23, STBTT_MAC_LANG_DUTCH =4 , STBTT_MAC_LANG_RUSSIAN =32, STBTT_MAC_LANG_FRENCH =1 , STBTT_MAC_LANG_SPANISH =6 , STBTT_MAC_LANG_GERMAN =2 , STBTT_MAC_LANG_SWEDISH =5 , STBTT_MAC_LANG_HEBREW =10, STBTT_MAC_LANG_CHINESE_SIMPLIFIED =33, STBTT_MAC_LANG_ITALIAN =3 , STBTT_MAC_LANG_CHINESE_TRAD =19 }; #ifdef __cplusplus } #endif #endif // __STB_INCLUDE_STB_TRUETYPE_H__ /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// //// //// IMPLEMENTATION //// //// #ifdef STB_TRUETYPE_IMPLEMENTATION #ifndef STBTT_MAX_OVERSAMPLE #define STBTT_MAX_OVERSAMPLE 8 #endif #if STBTT_MAX_OVERSAMPLE > 255 #error "STBTT_MAX_OVERSAMPLE cannot be > 255" #endif typedef int stbtt__test_oversample_pow2[(STBTT_MAX_OVERSAMPLE & (STBTT_MAX_OVERSAMPLE-1)) == 0 ? 1 : -1]; #ifndef STBTT_RASTERIZER_VERSION #define STBTT_RASTERIZER_VERSION 2 #endif #ifdef _MSC_VER #define STBTT__NOTUSED(v) (void)(v) #else #define STBTT__NOTUSED(v) (void)sizeof(v) #endif ////////////////////////////////////////////////////////////////////////// // // stbtt__buf helpers to parse data from file // static stbtt_uint8 stbtt__buf_get8(stbtt__buf *b) { if (b->cursor >= b->size) return 0; return b->data[b->cursor++]; } static stbtt_uint8 stbtt__buf_peek8(stbtt__buf *b) { if (b->cursor >= b->size) return 0; return b->data[b->cursor]; } static void stbtt__buf_seek(stbtt__buf *b, int o) { STBTT_assert(!(o > b->size || o < 0)); b->cursor = (o > b->size || o < 0) ? b->size : o; } static void stbtt__buf_skip(stbtt__buf *b, int o) { stbtt__buf_seek(b, b->cursor + o); } static stbtt_uint32 stbtt__buf_get(stbtt__buf *b, int n) { stbtt_uint32 v = 0; int i; STBTT_assert(n >= 1 && n <= 4); for (i = 0; i < n; i++) v = (v << 8) | stbtt__buf_get8(b); return v; } static stbtt__buf stbtt__new_buf(const void *p, size_t size) { stbtt__buf r; STBTT_assert(size < 0x40000000); r.data = (stbtt_uint8*) p; r.size = (int) size; r.cursor = 0; return r; } #define stbtt__buf_get16(b) stbtt__buf_get((b), 2) #define stbtt__buf_get32(b) stbtt__buf_get((b), 4) static stbtt__buf stbtt__buf_range(const stbtt__buf *b, int o, int s) { stbtt__buf r = stbtt__new_buf(NULL, 0); if (o < 0 || s < 0 || o > b->size || s > b->size - o) return r; r.data = b->data + o; r.size = s; return r; } static stbtt__buf stbtt__cff_get_index(stbtt__buf *b) { int count, start, offsize; start = b->cursor; count = stbtt__buf_get16(b); if (count) { offsize = stbtt__buf_get8(b); STBTT_assert(offsize >= 1 && offsize <= 4); stbtt__buf_skip(b, offsize * count); stbtt__buf_skip(b, stbtt__buf_get(b, offsize) - 1); } return stbtt__buf_range(b, start, b->cursor - start); } static stbtt_uint32 stbtt__cff_int(stbtt__buf *b) { int b0 = stbtt__buf_get8(b); if (b0 >= 32 && b0 <= 246) return b0 - 139; else if (b0 >= 247 && b0 <= 250) return (b0 - 247)*256 + stbtt__buf_get8(b) + 108; else if (b0 >= 251 && b0 <= 254) return -(b0 - 251)*256 - stbtt__buf_get8(b) - 108; else if (b0 == 28) return stbtt__buf_get16(b); else if (b0 == 29) return stbtt__buf_get32(b); STBTT_assert(0); return 0; } static void stbtt__cff_skip_operand(stbtt__buf *b) { int v, b0 = stbtt__buf_peek8(b); STBTT_assert(b0 >= 28); if (b0 == 30) { stbtt__buf_skip(b, 1); while (b->cursor < b->size) { v = stbtt__buf_get8(b); if ((v & 0xF) == 0xF || (v >> 4) == 0xF) break; } } else { stbtt__cff_int(b); } } static stbtt__buf stbtt__dict_get(stbtt__buf *b, int key) { stbtt__buf_seek(b, 0); while (b->cursor < b->size) { int start = b->cursor, end, op; while (stbtt__buf_peek8(b) >= 28) stbtt__cff_skip_operand(b); end = b->cursor; op = stbtt__buf_get8(b); if (op == 12) op = stbtt__buf_get8(b) | 0x100; if (op == key) return stbtt__buf_range(b, start, end-start); } return stbtt__buf_range(b, 0, 0); } static void stbtt__dict_get_ints(stbtt__buf *b, int key, int outcount, stbtt_uint32 *out) { int i; stbtt__buf operands = stbtt__dict_get(b, key); for (i = 0; i < outcount && operands.cursor < operands.size; i++) out[i] = stbtt__cff_int(&operands); } static int stbtt__cff_index_count(stbtt__buf *b) { stbtt__buf_seek(b, 0); return stbtt__buf_get16(b); } static stbtt__buf stbtt__cff_index_get(stbtt__buf b, int i) { int count, offsize, start, end; stbtt__buf_seek(&b, 0); count = stbtt__buf_get16(&b); offsize = stbtt__buf_get8(&b); STBTT_assert(i >= 0 && i < count); STBTT_assert(offsize >= 1 && offsize <= 4); stbtt__buf_skip(&b, i*offsize); start = stbtt__buf_get(&b, offsize); end = stbtt__buf_get(&b, offsize); return stbtt__buf_range(&b, 2+(count+1)*offsize+start, end - start); } ////////////////////////////////////////////////////////////////////////// // // accessors to parse data from file // // on platforms that don't allow misaligned reads, if we want to allow // truetype fonts that aren't padded to alignment, define ALLOW_UNALIGNED_TRUETYPE #define ttBYTE(p) (* (stbtt_uint8 *) (p)) #define ttCHAR(p) (* (stbtt_int8 *) (p)) #define ttFixed(p) ttLONG(p) static stbtt_uint16 ttUSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; } static stbtt_int16 ttSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; } static stbtt_uint32 ttULONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; } static stbtt_int32 ttLONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; } #define stbtt_tag4(p,c0,c1,c2,c3) ((p)[0] == (c0) && (p)[1] == (c1) && (p)[2] == (c2) && (p)[3] == (c3)) #define stbtt_tag(p,str) stbtt_tag4(p,str[0],str[1],str[2],str[3]) static int stbtt__isfont(stbtt_uint8 *font) { // check the version number if (stbtt_tag4(font, '1',0,0,0)) return 1; // TrueType 1 if (stbtt_tag(font, "typ1")) return 1; // TrueType with type 1 font -- we don't support this! if (stbtt_tag(font, "OTTO")) return 1; // OpenType with CFF if (stbtt_tag4(font, 0,1,0,0)) return 1; // OpenType 1.0 if (stbtt_tag(font, "true")) return 1; // Apple specification for TrueType fonts return 0; } // @OPTIMIZE: binary search static stbtt_uint32 stbtt__find_table(stbtt_uint8 *data, stbtt_uint32 fontstart, const char *tag) { stbtt_int32 num_tables = ttUSHORT(data+fontstart+4); stbtt_uint32 tabledir = fontstart + 12; stbtt_int32 i; for (i=0; i < num_tables; ++i) { stbtt_uint32 loc = tabledir + 16*i; if (stbtt_tag(data+loc+0, tag)) return ttULONG(data+loc+8); } return 0; } static int stbtt_GetFontOffsetForIndex_internal(unsigned char *font_collection, int index) { // if it's just a font, there's only one valid index if (stbtt__isfont(font_collection)) return index == 0 ? 0 : -1; // check if it's a TTC if (stbtt_tag(font_collection, "ttcf")) { // version 1? if (ttULONG(font_collection+4) == 0x00010000 || ttULONG(font_collection+4) == 0x00020000) { stbtt_int32 n = ttLONG(font_collection+8); if (index >= n) return -1; return ttULONG(font_collection+12+index*4); } } return -1; } static int stbtt_GetNumberOfFonts_internal(unsigned char *font_collection) { // if it's just a font, there's only one valid font if (stbtt__isfont(font_collection)) return 1; // check if it's a TTC if (stbtt_tag(font_collection, "ttcf")) { // version 1? if (ttULONG(font_collection+4) == 0x00010000 || ttULONG(font_collection+4) == 0x00020000) { return ttLONG(font_collection+8); } } return 0; } static stbtt__buf stbtt__get_subrs(stbtt__buf cff, stbtt__buf fontdict) { stbtt_uint32 subrsoff = 0, private_loc[2] = { 0, 0 }; stbtt__buf pdict; stbtt__dict_get_ints(&fontdict, 18, 2, private_loc); if (!private_loc[1] || !private_loc[0]) return stbtt__new_buf(NULL, 0); pdict = stbtt__buf_range(&cff, private_loc[1], private_loc[0]); stbtt__dict_get_ints(&pdict, 19, 1, &subrsoff); if (!subrsoff) return stbtt__new_buf(NULL, 0); stbtt__buf_seek(&cff, private_loc[1]+subrsoff); return stbtt__cff_get_index(&cff); } // since most people won't use this, find this table the first time it's needed static int stbtt__get_svg(stbtt_fontinfo *info) { stbtt_uint32 t; if (info->svg < 0) { t = stbtt__find_table(info->data, info->fontstart, "SVG "); if (t) { stbtt_uint32 offset = ttULONG(info->data + t + 2); info->svg = t + offset; } else { info->svg = 0; } } return info->svg; } static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, int fontstart) { stbtt_uint32 cmap, t; stbtt_int32 i,numTables; info->data = data; info->fontstart = fontstart; info->cff = stbtt__new_buf(NULL, 0); cmap = stbtt__find_table(data, fontstart, "cmap"); // required info->loca = stbtt__find_table(data, fontstart, "loca"); // required info->head = stbtt__find_table(data, fontstart, "head"); // required info->glyf = stbtt__find_table(data, fontstart, "glyf"); // required info->hhea = stbtt__find_table(data, fontstart, "hhea"); // required info->hmtx = stbtt__find_table(data, fontstart, "hmtx"); // required info->kern = stbtt__find_table(data, fontstart, "kern"); // not required info->gpos = stbtt__find_table(data, fontstart, "GPOS"); // not required if (!cmap || !info->head || !info->hhea || !info->hmtx) return 0; if (info->glyf) { // required for truetype if (!info->loca) return 0; } else { // initialization for CFF / Type2 fonts (OTF) stbtt__buf b, topdict, topdictidx; stbtt_uint32 cstype = 2, charstrings = 0, fdarrayoff = 0, fdselectoff = 0; stbtt_uint32 cff; cff = stbtt__find_table(data, fontstart, "CFF "); if (!cff) return 0; info->fontdicts = stbtt__new_buf(NULL, 0); info->fdselect = stbtt__new_buf(NULL, 0); // @TODO this should use size from table (not 512MB) info->cff = stbtt__new_buf(data+cff, 512*1024*1024); b = info->cff; // read the header stbtt__buf_skip(&b, 2); stbtt__buf_seek(&b, stbtt__buf_get8(&b)); // hdrsize // @TODO the name INDEX could list multiple fonts, // but we just use the first one. stbtt__cff_get_index(&b); // name INDEX topdictidx = stbtt__cff_get_index(&b); topdict = stbtt__cff_index_get(topdictidx, 0); stbtt__cff_get_index(&b); // string INDEX info->gsubrs = stbtt__cff_get_index(&b); stbtt__dict_get_ints(&topdict, 17, 1, &charstrings); stbtt__dict_get_ints(&topdict, 0x100 | 6, 1, &cstype); stbtt__dict_get_ints(&topdict, 0x100 | 36, 1, &fdarrayoff); stbtt__dict_get_ints(&topdict, 0x100 | 37, 1, &fdselectoff); info->subrs = stbtt__get_subrs(b, topdict); // we only support Type 2 charstrings if (cstype != 2) return 0; if (charstrings == 0) return 0; if (fdarrayoff) { // looks like a CID font if (!fdselectoff) return 0; stbtt__buf_seek(&b, fdarrayoff); info->fontdicts = stbtt__cff_get_index(&b); info->fdselect = stbtt__buf_range(&b, fdselectoff, b.size-fdselectoff); } stbtt__buf_seek(&b, charstrings); info->charstrings = stbtt__cff_get_index(&b); } t = stbtt__find_table(data, fontstart, "maxp"); if (t) info->numGlyphs = ttUSHORT(data+t+4); else info->numGlyphs = 0xffff; info->svg = -1; // find a cmap encoding table we understand *now* to avoid searching // later. (todo: could make this installable) // the same regardless of glyph. numTables = ttUSHORT(data + cmap + 2); info->index_map = 0; for (i=0; i < numTables; ++i) { stbtt_uint32 encoding_record = cmap + 4 + 8 * i; // find an encoding we understand: switch(ttUSHORT(data+encoding_record)) { case STBTT_PLATFORM_ID_MICROSOFT: switch (ttUSHORT(data+encoding_record+2)) { case STBTT_MS_EID_UNICODE_BMP: case STBTT_MS_EID_UNICODE_FULL: // MS/Unicode info->index_map = cmap + ttULONG(data+encoding_record+4); break; } break; case STBTT_PLATFORM_ID_UNICODE: // Mac/iOS has these // all the encodingIDs are unicode, so we don't bother to check it info->index_map = cmap + ttULONG(data+encoding_record+4); break; } } if (info->index_map == 0) return 0; info->indexToLocFormat = ttUSHORT(data+info->head + 50); return 1; } STBTT_DEF int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unicode_codepoint) { stbtt_uint8 *data = info->data; stbtt_uint32 index_map = info->index_map; stbtt_uint16 format = ttUSHORT(data + index_map + 0); if (format == 0) { // apple byte encoding stbtt_int32 bytes = ttUSHORT(data + index_map + 2); if (unicode_codepoint < bytes-6) return ttBYTE(data + index_map + 6 + unicode_codepoint); return 0; } else if (format == 6) { stbtt_uint32 first = ttUSHORT(data + index_map + 6); stbtt_uint32 count = ttUSHORT(data + index_map + 8); if ((stbtt_uint32) unicode_codepoint >= first && (stbtt_uint32) unicode_codepoint < first+count) return ttUSHORT(data + index_map + 10 + (unicode_codepoint - first)*2); return 0; } else if (format == 2) { STBTT_assert(0); // @TODO: high-byte mapping for japanese/chinese/korean return 0; } else if (format == 4) { // standard mapping for windows fonts: binary search collection of ranges stbtt_uint16 segcount = ttUSHORT(data+index_map+6) >> 1; stbtt_uint16 searchRange = ttUSHORT(data+index_map+8) >> 1; stbtt_uint16 entrySelector = ttUSHORT(data+index_map+10); stbtt_uint16 rangeShift = ttUSHORT(data+index_map+12) >> 1; // do a binary search of the segments stbtt_uint32 endCount = index_map + 14; stbtt_uint32 search = endCount; if (unicode_codepoint > 0xffff) return 0; // they lie from endCount .. endCount + segCount // but searchRange is the nearest power of two, so... if (unicode_codepoint >= ttUSHORT(data + search + rangeShift*2)) search += rangeShift*2; // now decrement to bias correctly to find smallest search -= 2; while (entrySelector) { stbtt_uint16 end; searchRange >>= 1; end = ttUSHORT(data + search + searchRange*2); if (unicode_codepoint > end) search += searchRange*2; --entrySelector; } search += 2; { stbtt_uint16 offset, start; stbtt_uint16 item = (stbtt_uint16) ((search - endCount) >> 1); STBTT_assert(unicode_codepoint <= ttUSHORT(data + endCount + 2*item)); start = ttUSHORT(data + index_map + 14 + segcount*2 + 2 + 2*item); if (unicode_codepoint < start) return 0; offset = ttUSHORT(data + index_map + 14 + segcount*6 + 2 + 2*item); if (offset == 0) return (stbtt_uint16) (unicode_codepoint + ttSHORT(data + index_map + 14 + segcount*4 + 2 + 2*item)); return ttUSHORT(data + offset + (unicode_codepoint-start)*2 + index_map + 14 + segcount*6 + 2 + 2*item); } } else if (format == 12 || format == 13) { stbtt_uint32 ngroups = ttULONG(data+index_map+12); stbtt_int32 low,high; low = 0; high = (stbtt_int32)ngroups; // Binary search the right group. while (low < high) { stbtt_int32 mid = low + ((high-low) >> 1); // rounds down, so low <= mid < high stbtt_uint32 start_char = ttULONG(data+index_map+16+mid*12); stbtt_uint32 end_char = ttULONG(data+index_map+16+mid*12+4); if ((stbtt_uint32) unicode_codepoint < start_char) high = mid; else if ((stbtt_uint32) unicode_codepoint > end_char) low = mid+1; else { stbtt_uint32 start_glyph = ttULONG(data+index_map+16+mid*12+8); if (format == 12) return start_glyph + unicode_codepoint-start_char; else // format == 13 return start_glyph; } } return 0; // not found } // @TODO STBTT_assert(0); return 0; } STBTT_DEF int stbtt_GetCodepointShape(const stbtt_fontinfo *info, int unicode_codepoint, stbtt_vertex **vertices) { return stbtt_GetGlyphShape(info, stbtt_FindGlyphIndex(info, unicode_codepoint), vertices); } static void stbtt_setvertex(stbtt_vertex *v, stbtt_uint8 type, stbtt_int32 x, stbtt_int32 y, stbtt_int32 cx, stbtt_int32 cy) { v->type = type; v->x = (stbtt_int16) x; v->y = (stbtt_int16) y; v->cx = (stbtt_int16) cx; v->cy = (stbtt_int16) cy; } static int stbtt__GetGlyfOffset(const stbtt_fontinfo *info, int glyph_index) { int g1,g2; STBTT_assert(!info->cff.size); if (glyph_index >= info->numGlyphs) return -1; // glyph index out of range if (info->indexToLocFormat >= 2) return -1; // unknown index->glyph map format if (info->indexToLocFormat == 0) { g1 = info->glyf + ttUSHORT(info->data + info->loca + glyph_index * 2) * 2; g2 = info->glyf + ttUSHORT(info->data + info->loca + glyph_index * 2 + 2) * 2; } else { g1 = info->glyf + ttULONG (info->data + info->loca + glyph_index * 4); g2 = info->glyf + ttULONG (info->data + info->loca + glyph_index * 4 + 4); } return g1==g2 ? -1 : g1; // if length is 0, return -1 } static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1); STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1) { if (info->cff.size) { stbtt__GetGlyphInfoT2(info, glyph_index, x0, y0, x1, y1); } else { int g = stbtt__GetGlyfOffset(info, glyph_index); if (g < 0) return 0; if (x0) *x0 = ttSHORT(info->data + g + 2); if (y0) *y0 = ttSHORT(info->data + g + 4); if (x1) *x1 = ttSHORT(info->data + g + 6); if (y1) *y1 = ttSHORT(info->data + g + 8); } return 1; } STBTT_DEF int stbtt_GetCodepointBox(const stbtt_fontinfo *info, int codepoint, int *x0, int *y0, int *x1, int *y1) { return stbtt_GetGlyphBox(info, stbtt_FindGlyphIndex(info,codepoint), x0,y0,x1,y1); } STBTT_DEF int stbtt_IsGlyphEmpty(const stbtt_fontinfo *info, int glyph_index) { stbtt_int16 numberOfContours; int g; if (info->cff.size) return stbtt__GetGlyphInfoT2(info, glyph_index, NULL, NULL, NULL, NULL) == 0; g = stbtt__GetGlyfOffset(info, glyph_index); if (g < 0) return 1; numberOfContours = ttSHORT(info->data + g); return numberOfContours == 0; } static int stbtt__close_shape(stbtt_vertex *vertices, int num_vertices, int was_off, int start_off, stbtt_int32 sx, stbtt_int32 sy, stbtt_int32 scx, stbtt_int32 scy, stbtt_int32 cx, stbtt_int32 cy) { if (start_off) { if (was_off) stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, (cx+scx)>>1, (cy+scy)>>1, cx,cy); stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, sx,sy,scx,scy); } else { if (was_off) stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve,sx,sy,cx,cy); else stbtt_setvertex(&vertices[num_vertices++], STBTT_vline,sx,sy,0,0); } return num_vertices; } static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) { stbtt_int16 numberOfContours; stbtt_uint8 *endPtsOfContours; stbtt_uint8 *data = info->data; stbtt_vertex *vertices=0; int num_vertices=0; int g = stbtt__GetGlyfOffset(info, glyph_index); *pvertices = NULL; if (g < 0) return 0; numberOfContours = ttSHORT(data + g); if (numberOfContours > 0) { stbtt_uint8 flags=0,flagcount; stbtt_int32 ins, i,j=0,m,n, next_move, was_off=0, off, start_off=0; stbtt_int32 x,y,cx,cy,sx,sy, scx,scy; stbtt_uint8 *points; endPtsOfContours = (data + g + 10); ins = ttUSHORT(data + g + 10 + numberOfContours * 2); points = data + g + 10 + numberOfContours * 2 + 2 + ins; n = 1+ttUSHORT(endPtsOfContours + numberOfContours*2-2); m = n + 2*numberOfContours; // a loose bound on how many vertices we might need vertices = (stbtt_vertex *) STBTT_malloc(m * sizeof(vertices[0]), info->userdata); if (vertices == 0) return 0; next_move = 0; flagcount=0; // in first pass, we load uninterpreted data into the allocated array // above, shifted to the end of the array so we won't overwrite it when // we create our final data starting from the front off = m - n; // starting offset for uninterpreted data, regardless of how m ends up being calculated // first load flags for (i=0; i < n; ++i) { if (flagcount == 0) { flags = *points++; if (flags & 8) flagcount = *points++; } else --flagcount; vertices[off+i].type = flags; } // now load x coordinates x=0; for (i=0; i < n; ++i) { flags = vertices[off+i].type; if (flags & 2) { stbtt_int16 dx = *points++; x += (flags & 16) ? dx : -dx; // ??? } else { if (!(flags & 16)) { x = x + (stbtt_int16) (points[0]*256 + points[1]); points += 2; } } vertices[off+i].x = (stbtt_int16) x; } // now load y coordinates y=0; for (i=0; i < n; ++i) { flags = vertices[off+i].type; if (flags & 4) { stbtt_int16 dy = *points++; y += (flags & 32) ? dy : -dy; // ??? } else { if (!(flags & 32)) { y = y + (stbtt_int16) (points[0]*256 + points[1]); points += 2; } } vertices[off+i].y = (stbtt_int16) y; } // now convert them to our format num_vertices=0; sx = sy = cx = cy = scx = scy = 0; for (i=0; i < n; ++i) { flags = vertices[off+i].type; x = (stbtt_int16) vertices[off+i].x; y = (stbtt_int16) vertices[off+i].y; if (next_move == i) { if (i != 0) num_vertices = stbtt__close_shape(vertices, num_vertices, was_off, start_off, sx,sy,scx,scy,cx,cy); // now start the new one start_off = !(flags & 1); if (start_off) { // if we start off with an off-curve point, then when we need to find a point on the curve // where we can start, and we need to save some state for when we wraparound. scx = x; scy = y; if (!(vertices[off+i+1].type & 1)) { // next point is also a curve point, so interpolate an on-point curve sx = (x + (stbtt_int32) vertices[off+i+1].x) >> 1; sy = (y + (stbtt_int32) vertices[off+i+1].y) >> 1; } else { // otherwise just use the next point as our start point sx = (stbtt_int32) vertices[off+i+1].x; sy = (stbtt_int32) vertices[off+i+1].y; ++i; // we're using point i+1 as the starting point, so skip it } } else { sx = x; sy = y; } stbtt_setvertex(&vertices[num_vertices++], STBTT_vmove,sx,sy,0,0); was_off = 0; next_move = 1 + ttUSHORT(endPtsOfContours+j*2); ++j; } else { if (!(flags & 1)) { // if it's a curve if (was_off) // two off-curve control points in a row means interpolate an on-curve midpoint stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, (cx+x)>>1, (cy+y)>>1, cx, cy); cx = x; cy = y; was_off = 1; } else { if (was_off) stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, x,y, cx, cy); else stbtt_setvertex(&vertices[num_vertices++], STBTT_vline, x,y,0,0); was_off = 0; } } } num_vertices = stbtt__close_shape(vertices, num_vertices, was_off, start_off, sx,sy,scx,scy,cx,cy); } else if (numberOfContours < 0) { // Compound shapes. int more = 1; stbtt_uint8 *comp = data + g + 10; num_vertices = 0; vertices = 0; while (more) { stbtt_uint16 flags, gidx; int comp_num_verts = 0, i; stbtt_vertex *comp_verts = 0, *tmp = 0; float mtx[6] = {1,0,0,1,0,0}, m, n; flags = ttSHORT(comp); comp+=2; gidx = ttSHORT(comp); comp+=2; if (flags & 2) { // XY values if (flags & 1) { // shorts mtx[4] = ttSHORT(comp); comp+=2; mtx[5] = ttSHORT(comp); comp+=2; } else { mtx[4] = ttCHAR(comp); comp+=1; mtx[5] = ttCHAR(comp); comp+=1; } } else { // @TODO handle matching point STBTT_assert(0); } if (flags & (1<<3)) { // WE_HAVE_A_SCALE mtx[0] = mtx[3] = ttSHORT(comp)/16384.0f; comp+=2; mtx[1] = mtx[2] = 0; } else if (flags & (1<<6)) { // WE_HAVE_AN_X_AND_YSCALE mtx[0] = ttSHORT(comp)/16384.0f; comp+=2; mtx[1] = mtx[2] = 0; mtx[3] = ttSHORT(comp)/16384.0f; comp+=2; } else if (flags & (1<<7)) { // WE_HAVE_A_TWO_BY_TWO mtx[0] = ttSHORT(comp)/16384.0f; comp+=2; mtx[1] = ttSHORT(comp)/16384.0f; comp+=2; mtx[2] = ttSHORT(comp)/16384.0f; comp+=2; mtx[3] = ttSHORT(comp)/16384.0f; comp+=2; } // Find transformation scales. m = (float) STBTT_sqrt(mtx[0]*mtx[0] + mtx[1]*mtx[1]); n = (float) STBTT_sqrt(mtx[2]*mtx[2] + mtx[3]*mtx[3]); // Get indexed glyph. comp_num_verts = stbtt_GetGlyphShape(info, gidx, &comp_verts); if (comp_num_verts > 0) { // Transform vertices. for (i = 0; i < comp_num_verts; ++i) { stbtt_vertex* v = &comp_verts[i]; stbtt_vertex_type x,y; x=v->x; y=v->y; v->x = (stbtt_vertex_type)(m * (mtx[0]*x + mtx[2]*y + mtx[4])); v->y = (stbtt_vertex_type)(n * (mtx[1]*x + mtx[3]*y + mtx[5])); x=v->cx; y=v->cy; v->cx = (stbtt_vertex_type)(m * (mtx[0]*x + mtx[2]*y + mtx[4])); v->cy = (stbtt_vertex_type)(n * (mtx[1]*x + mtx[3]*y + mtx[5])); } // Append vertices. tmp = (stbtt_vertex*)STBTT_malloc((num_vertices+comp_num_verts)*sizeof(stbtt_vertex), info->userdata); if (!tmp) { if (vertices) STBTT_free(vertices, info->userdata); if (comp_verts) STBTT_free(comp_verts, info->userdata); return 0; } if (num_vertices > 0) STBTT_memcpy(tmp, vertices, num_vertices*sizeof(stbtt_vertex)); STBTT_memcpy(tmp+num_vertices, comp_verts, comp_num_verts*sizeof(stbtt_vertex)); if (vertices) STBTT_free(vertices, info->userdata); vertices = tmp; STBTT_free(comp_verts, info->userdata); num_vertices += comp_num_verts; } // More components ? more = flags & (1<<5); } } else { // numberOfCounters == 0, do nothing } *pvertices = vertices; return num_vertices; } typedef struct { int bounds; int started; float first_x, first_y; float x, y; stbtt_int32 min_x, max_x, min_y, max_y; stbtt_vertex *pvertices; int num_vertices; } stbtt__csctx; #define STBTT__CSCTX_INIT(bounds) {bounds,0, 0,0, 0,0, 0,0,0,0, NULL, 0} static void stbtt__track_vertex(stbtt__csctx *c, stbtt_int32 x, stbtt_int32 y) { if (x > c->max_x || !c->started) c->max_x = x; if (y > c->max_y || !c->started) c->max_y = y; if (x < c->min_x || !c->started) c->min_x = x; if (y < c->min_y || !c->started) c->min_y = y; c->started = 1; } static void stbtt__csctx_v(stbtt__csctx *c, stbtt_uint8 type, stbtt_int32 x, stbtt_int32 y, stbtt_int32 cx, stbtt_int32 cy, stbtt_int32 cx1, stbtt_int32 cy1) { if (c->bounds) { stbtt__track_vertex(c, x, y); if (type == STBTT_vcubic) { stbtt__track_vertex(c, cx, cy); stbtt__track_vertex(c, cx1, cy1); } } else { stbtt_setvertex(&c->pvertices[c->num_vertices], type, x, y, cx, cy); c->pvertices[c->num_vertices].cx1 = (stbtt_int16) cx1; c->pvertices[c->num_vertices].cy1 = (stbtt_int16) cy1; } c->num_vertices++; } static void stbtt__csctx_close_shape(stbtt__csctx *ctx) { if (ctx->first_x != ctx->x || ctx->first_y != ctx->y) stbtt__csctx_v(ctx, STBTT_vline, (int)ctx->first_x, (int)ctx->first_y, 0, 0, 0, 0); } static void stbtt__csctx_rmove_to(stbtt__csctx *ctx, float dx, float dy) { stbtt__csctx_close_shape(ctx); ctx->first_x = ctx->x = ctx->x + dx; ctx->first_y = ctx->y = ctx->y + dy; stbtt__csctx_v(ctx, STBTT_vmove, (int)ctx->x, (int)ctx->y, 0, 0, 0, 0); } static void stbtt__csctx_rline_to(stbtt__csctx *ctx, float dx, float dy) { ctx->x += dx; ctx->y += dy; stbtt__csctx_v(ctx, STBTT_vline, (int)ctx->x, (int)ctx->y, 0, 0, 0, 0); } static void stbtt__csctx_rccurve_to(stbtt__csctx *ctx, float dx1, float dy1, float dx2, float dy2, float dx3, float dy3) { float cx1 = ctx->x + dx1; float cy1 = ctx->y + dy1; float cx2 = cx1 + dx2; float cy2 = cy1 + dy2; ctx->x = cx2 + dx3; ctx->y = cy2 + dy3; stbtt__csctx_v(ctx, STBTT_vcubic, (int)ctx->x, (int)ctx->y, (int)cx1, (int)cy1, (int)cx2, (int)cy2); } static stbtt__buf stbtt__get_subr(stbtt__buf idx, int n) { int count = stbtt__cff_index_count(&idx); int bias = 107; if (count >= 33900) bias = 32768; else if (count >= 1240) bias = 1131; n += bias; if (n < 0 || n >= count) return stbtt__new_buf(NULL, 0); return stbtt__cff_index_get(idx, n); } static stbtt__buf stbtt__cid_get_glyph_subrs(const stbtt_fontinfo *info, int glyph_index) { stbtt__buf fdselect = info->fdselect; int nranges, start, end, v, fmt, fdselector = -1, i; stbtt__buf_seek(&fdselect, 0); fmt = stbtt__buf_get8(&fdselect); if (fmt == 0) { // untested stbtt__buf_skip(&fdselect, glyph_index); fdselector = stbtt__buf_get8(&fdselect); } else if (fmt == 3) { nranges = stbtt__buf_get16(&fdselect); start = stbtt__buf_get16(&fdselect); for (i = 0; i < nranges; i++) { v = stbtt__buf_get8(&fdselect); end = stbtt__buf_get16(&fdselect); if (glyph_index >= start && glyph_index < end) { fdselector = v; break; } start = end; } } if (fdselector == -1) stbtt__new_buf(NULL, 0); return stbtt__get_subrs(info->cff, stbtt__cff_index_get(info->fontdicts, fdselector)); } static int stbtt__run_charstring(const stbtt_fontinfo *info, int glyph_index, stbtt__csctx *c) { int in_header = 1, maskbits = 0, subr_stack_height = 0, sp = 0, v, i, b0; int has_subrs = 0, clear_stack; float s[48]; stbtt__buf subr_stack[10], subrs = info->subrs, b; float f; #define STBTT__CSERR(s) (0) // this currently ignores the initial width value, which isn't needed if we have hmtx b = stbtt__cff_index_get(info->charstrings, glyph_index); while (b.cursor < b.size) { i = 0; clear_stack = 1; b0 = stbtt__buf_get8(&b); switch (b0) { // @TODO implement hinting case 0x13: // hintmask case 0x14: // cntrmask if (in_header) maskbits += (sp / 2); // implicit "vstem" in_header = 0; stbtt__buf_skip(&b, (maskbits + 7) / 8); break; case 0x01: // hstem case 0x03: // vstem case 0x12: // hstemhm case 0x17: // vstemhm maskbits += (sp / 2); break; case 0x15: // rmoveto in_header = 0; if (sp < 2) return STBTT__CSERR("rmoveto stack"); stbtt__csctx_rmove_to(c, s[sp-2], s[sp-1]); break; case 0x04: // vmoveto in_header = 0; if (sp < 1) return STBTT__CSERR("vmoveto stack"); stbtt__csctx_rmove_to(c, 0, s[sp-1]); break; case 0x16: // hmoveto in_header = 0; if (sp < 1) return STBTT__CSERR("hmoveto stack"); stbtt__csctx_rmove_to(c, s[sp-1], 0); break; case 0x05: // rlineto if (sp < 2) return STBTT__CSERR("rlineto stack"); for (; i + 1 < sp; i += 2) stbtt__csctx_rline_to(c, s[i], s[i+1]); break; // hlineto/vlineto and vhcurveto/hvcurveto alternate horizontal and vertical // starting from a different place. case 0x07: // vlineto if (sp < 1) return STBTT__CSERR("vlineto stack"); goto vlineto; case 0x06: // hlineto if (sp < 1) return STBTT__CSERR("hlineto stack"); for (;;) { if (i >= sp) break; stbtt__csctx_rline_to(c, s[i], 0); i++; vlineto: if (i >= sp) break; stbtt__csctx_rline_to(c, 0, s[i]); i++; } break; case 0x1F: // hvcurveto if (sp < 4) return STBTT__CSERR("hvcurveto stack"); goto hvcurveto; case 0x1E: // vhcurveto if (sp < 4) return STBTT__CSERR("vhcurveto stack"); for (;;) { if (i + 3 >= sp) break; stbtt__csctx_rccurve_to(c, 0, s[i], s[i+1], s[i+2], s[i+3], (sp - i == 5) ? s[i + 4] : 0.0f); i += 4; hvcurveto: if (i + 3 >= sp) break; stbtt__csctx_rccurve_to(c, s[i], 0, s[i+1], s[i+2], (sp - i == 5) ? s[i+4] : 0.0f, s[i+3]); i += 4; } break; case 0x08: // rrcurveto if (sp < 6) return STBTT__CSERR("rcurveline stack"); for (; i + 5 < sp; i += 6) stbtt__csctx_rccurve_to(c, s[i], s[i+1], s[i+2], s[i+3], s[i+4], s[i+5]); break; case 0x18: // rcurveline if (sp < 8) return STBTT__CSERR("rcurveline stack"); for (; i + 5 < sp - 2; i += 6) stbtt__csctx_rccurve_to(c, s[i], s[i+1], s[i+2], s[i+3], s[i+4], s[i+5]); if (i + 1 >= sp) return STBTT__CSERR("rcurveline stack"); stbtt__csctx_rline_to(c, s[i], s[i+1]); break; case 0x19: // rlinecurve if (sp < 8) return STBTT__CSERR("rlinecurve stack"); for (; i + 1 < sp - 6; i += 2) stbtt__csctx_rline_to(c, s[i], s[i+1]); if (i + 5 >= sp) return STBTT__CSERR("rlinecurve stack"); stbtt__csctx_rccurve_to(c, s[i], s[i+1], s[i+2], s[i+3], s[i+4], s[i+5]); break; case 0x1A: // vvcurveto case 0x1B: // hhcurveto if (sp < 4) return STBTT__CSERR("(vv|hh)curveto stack"); f = 0.0; if (sp & 1) { f = s[i]; i++; } for (; i + 3 < sp; i += 4) { if (b0 == 0x1B) stbtt__csctx_rccurve_to(c, s[i], f, s[i+1], s[i+2], s[i+3], 0.0); else stbtt__csctx_rccurve_to(c, f, s[i], s[i+1], s[i+2], 0.0, s[i+3]); f = 0.0; } break; case 0x0A: // callsubr if (!has_subrs) { if (info->fdselect.size) subrs = stbtt__cid_get_glyph_subrs(info, glyph_index); has_subrs = 1; } // fallthrough case 0x1D: // callgsubr if (sp < 1) return STBTT__CSERR("call(g|)subr stack"); v = (int) s[--sp]; if (subr_stack_height >= 10) return STBTT__CSERR("recursion limit"); subr_stack[subr_stack_height++] = b; b = stbtt__get_subr(b0 == 0x0A ? subrs : info->gsubrs, v); if (b.size == 0) return STBTT__CSERR("subr not found"); b.cursor = 0; clear_stack = 0; break; case 0x0B: // return if (subr_stack_height <= 0) return STBTT__CSERR("return outside subr"); b = subr_stack[--subr_stack_height]; clear_stack = 0; break; case 0x0E: // endchar stbtt__csctx_close_shape(c); return 1; case 0x0C: { // two-byte escape float dx1, dx2, dx3, dx4, dx5, dx6, dy1, dy2, dy3, dy4, dy5, dy6; float dx, dy; int b1 = stbtt__buf_get8(&b); switch (b1) { // @TODO These "flex" implementations ignore the flex-depth and resolution, // and always draw beziers. case 0x22: // hflex if (sp < 7) return STBTT__CSERR("hflex stack"); dx1 = s[0]; dx2 = s[1]; dy2 = s[2]; dx3 = s[3]; dx4 = s[4]; dx5 = s[5]; dx6 = s[6]; stbtt__csctx_rccurve_to(c, dx1, 0, dx2, dy2, dx3, 0); stbtt__csctx_rccurve_to(c, dx4, 0, dx5, -dy2, dx6, 0); break; case 0x23: // flex if (sp < 13) return STBTT__CSERR("flex stack"); dx1 = s[0]; dy1 = s[1]; dx2 = s[2]; dy2 = s[3]; dx3 = s[4]; dy3 = s[5]; dx4 = s[6]; dy4 = s[7]; dx5 = s[8]; dy5 = s[9]; dx6 = s[10]; dy6 = s[11]; //fd is s[12] stbtt__csctx_rccurve_to(c, dx1, dy1, dx2, dy2, dx3, dy3); stbtt__csctx_rccurve_to(c, dx4, dy4, dx5, dy5, dx6, dy6); break; case 0x24: // hflex1 if (sp < 9) return STBTT__CSERR("hflex1 stack"); dx1 = s[0]; dy1 = s[1]; dx2 = s[2]; dy2 = s[3]; dx3 = s[4]; dx4 = s[5]; dx5 = s[6]; dy5 = s[7]; dx6 = s[8]; stbtt__csctx_rccurve_to(c, dx1, dy1, dx2, dy2, dx3, 0); stbtt__csctx_rccurve_to(c, dx4, 0, dx5, dy5, dx6, -(dy1+dy2+dy5)); break; case 0x25: // flex1 if (sp < 11) return STBTT__CSERR("flex1 stack"); dx1 = s[0]; dy1 = s[1]; dx2 = s[2]; dy2 = s[3]; dx3 = s[4]; dy3 = s[5]; dx4 = s[6]; dy4 = s[7]; dx5 = s[8]; dy5 = s[9]; dx6 = dy6 = s[10]; dx = dx1+dx2+dx3+dx4+dx5; dy = dy1+dy2+dy3+dy4+dy5; if (STBTT_fabs(dx) > STBTT_fabs(dy)) dy6 = -dy; else dx6 = -dx; stbtt__csctx_rccurve_to(c, dx1, dy1, dx2, dy2, dx3, dy3); stbtt__csctx_rccurve_to(c, dx4, dy4, dx5, dy5, dx6, dy6); break; default: return STBTT__CSERR("unimplemented"); } } break; default: if (b0 != 255 && b0 != 28 && (b0 < 32 || b0 > 254)) return STBTT__CSERR("reserved operator"); // push immediate if (b0 == 255) { f = (float)(stbtt_int32)stbtt__buf_get32(&b) / 0x10000; } else { stbtt__buf_skip(&b, -1); f = (float)(stbtt_int16)stbtt__cff_int(&b); } if (sp >= 48) return STBTT__CSERR("push stack overflow"); s[sp++] = f; clear_stack = 0; break; } if (clear_stack) sp = 0; } return STBTT__CSERR("no endchar"); #undef STBTT__CSERR } static int stbtt__GetGlyphShapeT2(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) { // runs the charstring twice, once to count and once to output (to avoid realloc) stbtt__csctx count_ctx = STBTT__CSCTX_INIT(1); stbtt__csctx output_ctx = STBTT__CSCTX_INIT(0); if (stbtt__run_charstring(info, glyph_index, &count_ctx)) { *pvertices = (stbtt_vertex*)STBTT_malloc(count_ctx.num_vertices*sizeof(stbtt_vertex), info->userdata); output_ctx.pvertices = *pvertices; if (stbtt__run_charstring(info, glyph_index, &output_ctx)) { STBTT_assert(output_ctx.num_vertices == count_ctx.num_vertices); return output_ctx.num_vertices; } } *pvertices = NULL; return 0; } static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1) { stbtt__csctx c = STBTT__CSCTX_INIT(1); int r = stbtt__run_charstring(info, glyph_index, &c); if (x0) *x0 = r ? c.min_x : 0; if (y0) *y0 = r ? c.min_y : 0; if (x1) *x1 = r ? c.max_x : 0; if (y1) *y1 = r ? c.max_y : 0; return r ? c.num_vertices : 0; } STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) { if (!info->cff.size) return stbtt__GetGlyphShapeTT(info, glyph_index, pvertices); else return stbtt__GetGlyphShapeT2(info, glyph_index, pvertices); } STBTT_DEF void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_index, int *advanceWidth, int *leftSideBearing) { stbtt_uint16 numOfLongHorMetrics = ttUSHORT(info->data+info->hhea + 34); if (glyph_index < numOfLongHorMetrics) { if (advanceWidth) *advanceWidth = ttSHORT(info->data + info->hmtx + 4*glyph_index); if (leftSideBearing) *leftSideBearing = ttSHORT(info->data + info->hmtx + 4*glyph_index + 2); } else { if (advanceWidth) *advanceWidth = ttSHORT(info->data + info->hmtx + 4*(numOfLongHorMetrics-1)); if (leftSideBearing) *leftSideBearing = ttSHORT(info->data + info->hmtx + 4*numOfLongHorMetrics + 2*(glyph_index - numOfLongHorMetrics)); } } STBTT_DEF int stbtt_GetKerningTableLength(const stbtt_fontinfo *info) { stbtt_uint8 *data = info->data + info->kern; // we only look at the first table. it must be 'horizontal' and format 0. if (!info->kern) return 0; if (ttUSHORT(data+2) < 1) // number of tables, need at least 1 return 0; if (ttUSHORT(data+8) != 1) // horizontal flag must be set in format return 0; return ttUSHORT(data+10); } STBTT_DEF int stbtt_GetKerningTable(const stbtt_fontinfo *info, stbtt_kerningentry* table, int table_length) { stbtt_uint8 *data = info->data + info->kern; int k, length; // we only look at the first table. it must be 'horizontal' and format 0. if (!info->kern) return 0; if (ttUSHORT(data+2) < 1) // number of tables, need at least 1 return 0; if (ttUSHORT(data+8) != 1) // horizontal flag must be set in format return 0; length = ttUSHORT(data+10); if (table_length < length) length = table_length; for (k = 0; k < length; k++) { table[k].glyph1 = ttUSHORT(data+18+(k*6)); table[k].glyph2 = ttUSHORT(data+20+(k*6)); table[k].advance = ttSHORT(data+22+(k*6)); } return length; } static int stbtt__GetGlyphKernInfoAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2) { stbtt_uint8 *data = info->data + info->kern; stbtt_uint32 needle, straw; int l, r, m; // we only look at the first table. it must be 'horizontal' and format 0. if (!info->kern) return 0; if (ttUSHORT(data+2) < 1) // number of tables, need at least 1 return 0; if (ttUSHORT(data+8) != 1) // horizontal flag must be set in format return 0; l = 0; r = ttUSHORT(data+10) - 1; needle = glyph1 << 16 | glyph2; while (l <= r) { m = (l + r) >> 1; straw = ttULONG(data+18+(m*6)); // note: unaligned read if (needle < straw) r = m - 1; else if (needle > straw) l = m + 1; else return ttSHORT(data+22+(m*6)); } return 0; } static stbtt_int32 stbtt__GetCoverageIndex(stbtt_uint8 *coverageTable, int glyph) { stbtt_uint16 coverageFormat = ttUSHORT(coverageTable); switch(coverageFormat) { case 1: { stbtt_uint16 glyphCount = ttUSHORT(coverageTable + 2); // Binary search. stbtt_int32 l=0, r=glyphCount-1, m; int straw, needle=glyph; while (l <= r) { stbtt_uint8 *glyphArray = coverageTable + 4; stbtt_uint16 glyphID; m = (l + r) >> 1; glyphID = ttUSHORT(glyphArray + 2 * m); straw = glyphID; if (needle < straw) r = m - 1; else if (needle > straw) l = m + 1; else { return m; } } } break; case 2: { stbtt_uint16 rangeCount = ttUSHORT(coverageTable + 2); stbtt_uint8 *rangeArray = coverageTable + 4; // Binary search. stbtt_int32 l=0, r=rangeCount-1, m; int strawStart, strawEnd, needle=glyph; while (l <= r) { stbtt_uint8 *rangeRecord; m = (l + r) >> 1; rangeRecord = rangeArray + 6 * m; strawStart = ttUSHORT(rangeRecord); strawEnd = ttUSHORT(rangeRecord + 2); if (needle < strawStart) r = m - 1; else if (needle > strawEnd) l = m + 1; else { stbtt_uint16 startCoverageIndex = ttUSHORT(rangeRecord + 4); return startCoverageIndex + glyph - strawStart; } } } break; default: { // There are no other cases. STBTT_assert(0); } break; } return -1; } static stbtt_int32 stbtt__GetGlyphClass(stbtt_uint8 *classDefTable, int glyph) { stbtt_uint16 classDefFormat = ttUSHORT(classDefTable); switch(classDefFormat) { case 1: { stbtt_uint16 startGlyphID = ttUSHORT(classDefTable + 2); stbtt_uint16 glyphCount = ttUSHORT(classDefTable + 4); stbtt_uint8 *classDef1ValueArray = classDefTable + 6; if (glyph >= startGlyphID && glyph < startGlyphID + glyphCount) return (stbtt_int32)ttUSHORT(classDef1ValueArray + 2 * (glyph - startGlyphID)); classDefTable = classDef1ValueArray + 2 * glyphCount; } break; case 2: { stbtt_uint16 classRangeCount = ttUSHORT(classDefTable + 2); stbtt_uint8 *classRangeRecords = classDefTable + 4; // Binary search. stbtt_int32 l=0, r=classRangeCount-1, m; int strawStart, strawEnd, needle=glyph; while (l <= r) { stbtt_uint8 *classRangeRecord; m = (l + r) >> 1; classRangeRecord = classRangeRecords + 6 * m; strawStart = ttUSHORT(classRangeRecord); strawEnd = ttUSHORT(classRangeRecord + 2); if (needle < strawStart) r = m - 1; else if (needle > strawEnd) l = m + 1; else return (stbtt_int32)ttUSHORT(classRangeRecord + 4); } classDefTable = classRangeRecords + 6 * classRangeCount; } break; default: { // There are no other cases. STBTT_assert(0); } break; } return -1; } // Define to STBTT_assert(x) if you want to break on unimplemented formats. #define STBTT_GPOS_TODO_assert(x) static stbtt_int32 stbtt__GetGlyphGPOSInfoAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2) { stbtt_uint16 lookupListOffset; stbtt_uint8 *lookupList; stbtt_uint16 lookupCount; stbtt_uint8 *data; stbtt_int32 i; if (!info->gpos) return 0; data = info->data + info->gpos; if (ttUSHORT(data+0) != 1) return 0; // Major version 1 if (ttUSHORT(data+2) != 0) return 0; // Minor version 0 lookupListOffset = ttUSHORT(data+8); lookupList = data + lookupListOffset; lookupCount = ttUSHORT(lookupList); for (i=0; i> 1; pairValue = pairValueArray + (2 + valueRecordPairSizeInBytes) * m; secondGlyph = ttUSHORT(pairValue); straw = secondGlyph; if (needle < straw) r = m - 1; else if (needle > straw) l = m + 1; else { stbtt_int16 xAdvance = ttSHORT(pairValue + 2); return xAdvance; } } } break; case 2: { stbtt_uint16 valueFormat1 = ttUSHORT(table + 4); stbtt_uint16 valueFormat2 = ttUSHORT(table + 6); stbtt_uint16 classDef1Offset = ttUSHORT(table + 8); stbtt_uint16 classDef2Offset = ttUSHORT(table + 10); int glyph1class = stbtt__GetGlyphClass(table + classDef1Offset, glyph1); int glyph2class = stbtt__GetGlyphClass(table + classDef2Offset, glyph2); stbtt_uint16 class1Count = ttUSHORT(table + 12); stbtt_uint16 class2Count = ttUSHORT(table + 14); STBTT_assert(glyph1class < class1Count); STBTT_assert(glyph2class < class2Count); // TODO: Support more formats. STBTT_GPOS_TODO_assert(valueFormat1 == 4); if (valueFormat1 != 4) return 0; STBTT_GPOS_TODO_assert(valueFormat2 == 0); if (valueFormat2 != 0) return 0; if (glyph1class >= 0 && glyph1class < class1Count && glyph2class >= 0 && glyph2class < class2Count) { stbtt_uint8 *class1Records = table + 16; stbtt_uint8 *class2Records = class1Records + 2 * (glyph1class * class2Count); stbtt_int16 xAdvance = ttSHORT(class2Records + 2 * glyph2class); return xAdvance; } } break; default: { // There are no other cases. STBTT_assert(0); break; }; } } break; }; default: // TODO: Implement other stuff. break; } } return 0; } STBTT_DEF int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int g1, int g2) { int xAdvance = 0; if (info->gpos) xAdvance += stbtt__GetGlyphGPOSInfoAdvance(info, g1, g2); else if (info->kern) xAdvance += stbtt__GetGlyphKernInfoAdvance(info, g1, g2); return xAdvance; } STBTT_DEF int stbtt_GetCodepointKernAdvance(const stbtt_fontinfo *info, int ch1, int ch2) { if (!info->kern && !info->gpos) // if no kerning table, don't waste time looking up both codepoint->glyphs return 0; return stbtt_GetGlyphKernAdvance(info, stbtt_FindGlyphIndex(info,ch1), stbtt_FindGlyphIndex(info,ch2)); } STBTT_DEF void stbtt_GetCodepointHMetrics(const stbtt_fontinfo *info, int codepoint, int *advanceWidth, int *leftSideBearing) { stbtt_GetGlyphHMetrics(info, stbtt_FindGlyphIndex(info,codepoint), advanceWidth, leftSideBearing); } STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, int *descent, int *lineGap) { if (ascent ) *ascent = ttSHORT(info->data+info->hhea + 4); if (descent) *descent = ttSHORT(info->data+info->hhea + 6); if (lineGap) *lineGap = ttSHORT(info->data+info->hhea + 8); } STBTT_DEF int stbtt_GetFontVMetricsOS2(const stbtt_fontinfo *info, int *typoAscent, int *typoDescent, int *typoLineGap) { int tab = stbtt__find_table(info->data, info->fontstart, "OS/2"); if (!tab) return 0; if (typoAscent ) *typoAscent = ttSHORT(info->data+tab + 68); if (typoDescent) *typoDescent = ttSHORT(info->data+tab + 70); if (typoLineGap) *typoLineGap = ttSHORT(info->data+tab + 72); return 1; } STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1) { *x0 = ttSHORT(info->data + info->head + 36); *y0 = ttSHORT(info->data + info->head + 38); *x1 = ttSHORT(info->data + info->head + 40); *y1 = ttSHORT(info->data + info->head + 42); } STBTT_DEF float stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, float height) { int fheight = ttSHORT(info->data + info->hhea + 4) - ttSHORT(info->data + info->hhea + 6); return (float) height / fheight; } STBTT_DEF float stbtt_ScaleForMappingEmToPixels(const stbtt_fontinfo *info, float pixels) { int unitsPerEm = ttUSHORT(info->data + info->head + 18); return pixels / unitsPerEm; } STBTT_DEF void stbtt_FreeShape(const stbtt_fontinfo *info, stbtt_vertex *v) { STBTT_free(v, info->userdata); } STBTT_DEF stbtt_uint8 *stbtt_FindSVGDoc(const stbtt_fontinfo *info, int gl) { int i; stbtt_uint8 *data = info->data; stbtt_uint8 *svg_doc_list = data + stbtt__get_svg((stbtt_fontinfo *) info); int numEntries = ttUSHORT(svg_doc_list); stbtt_uint8 *svg_docs = svg_doc_list + 2; for(i=0; i= ttUSHORT(svg_doc)) && (gl <= ttUSHORT(svg_doc + 2))) return svg_doc; } return 0; } STBTT_DEF int stbtt_GetGlyphSVG(const stbtt_fontinfo *info, int gl, const char **svg) { stbtt_uint8 *data = info->data; stbtt_uint8 *svg_doc; if (info->svg == 0) return 0; svg_doc = stbtt_FindSVGDoc(info, gl); if (svg_doc != NULL) { *svg = (char *) data + info->svg + ttULONG(svg_doc + 4); return ttULONG(svg_doc + 8); } else { return 0; } } STBTT_DEF int stbtt_GetCodepointSVG(const stbtt_fontinfo *info, int unicode_codepoint, const char **svg) { return stbtt_GetGlyphSVG(info, stbtt_FindGlyphIndex(info, unicode_codepoint), svg); } ////////////////////////////////////////////////////////////////////////////// // // antialiasing software rasterizer // STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y,float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1) { int x0=0,y0=0,x1,y1; // =0 suppresses compiler warning if (!stbtt_GetGlyphBox(font, glyph, &x0,&y0,&x1,&y1)) { // e.g. space character if (ix0) *ix0 = 0; if (iy0) *iy0 = 0; if (ix1) *ix1 = 0; if (iy1) *iy1 = 0; } else { // move to integral bboxes (treating pixels as little squares, what pixels get touched)? if (ix0) *ix0 = STBTT_ifloor( x0 * scale_x + shift_x); if (iy0) *iy0 = STBTT_ifloor(-y1 * scale_y + shift_y); if (ix1) *ix1 = STBTT_iceil ( x1 * scale_x + shift_x); if (iy1) *iy1 = STBTT_iceil (-y0 * scale_y + shift_y); } } STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1) { stbtt_GetGlyphBitmapBoxSubpixel(font, glyph, scale_x, scale_y,0.0f,0.0f, ix0, iy0, ix1, iy1); } STBTT_DEF void stbtt_GetCodepointBitmapBoxSubpixel(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1) { stbtt_GetGlyphBitmapBoxSubpixel(font, stbtt_FindGlyphIndex(font,codepoint), scale_x, scale_y,shift_x,shift_y, ix0,iy0,ix1,iy1); } STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1) { stbtt_GetCodepointBitmapBoxSubpixel(font, codepoint, scale_x, scale_y,0.0f,0.0f, ix0,iy0,ix1,iy1); } ////////////////////////////////////////////////////////////////////////////// // // Rasterizer typedef struct stbtt__hheap_chunk { struct stbtt__hheap_chunk *next; } stbtt__hheap_chunk; typedef struct stbtt__hheap { struct stbtt__hheap_chunk *head; void *first_free; int num_remaining_in_head_chunk; } stbtt__hheap; static void *stbtt__hheap_alloc(stbtt__hheap *hh, size_t size, void *userdata) { if (hh->first_free) { void *p = hh->first_free; hh->first_free = * (void **) p; return p; } else { if (hh->num_remaining_in_head_chunk == 0) { int count = (size < 32 ? 2000 : size < 128 ? 800 : 100); stbtt__hheap_chunk *c = (stbtt__hheap_chunk *) STBTT_malloc(sizeof(stbtt__hheap_chunk) + size * count, userdata); if (c == NULL) return NULL; c->next = hh->head; hh->head = c; hh->num_remaining_in_head_chunk = count; } --hh->num_remaining_in_head_chunk; return (char *) (hh->head) + sizeof(stbtt__hheap_chunk) + size * hh->num_remaining_in_head_chunk; } } static void stbtt__hheap_free(stbtt__hheap *hh, void *p) { *(void **) p = hh->first_free; hh->first_free = p; } static void stbtt__hheap_cleanup(stbtt__hheap *hh, void *userdata) { stbtt__hheap_chunk *c = hh->head; while (c) { stbtt__hheap_chunk *n = c->next; STBTT_free(c, userdata); c = n; } } typedef struct stbtt__edge { float x0,y0, x1,y1; int invert; } stbtt__edge; typedef struct stbtt__active_edge { struct stbtt__active_edge *next; #if STBTT_RASTERIZER_VERSION==1 int x,dx; float ey; int direction; #elif STBTT_RASTERIZER_VERSION==2 float fx,fdx,fdy; float direction; float sy; float ey; #else #error "Unrecognized value of STBTT_RASTERIZER_VERSION" #endif } stbtt__active_edge; #if STBTT_RASTERIZER_VERSION == 1 #define STBTT_FIXSHIFT 10 #define STBTT_FIX (1 << STBTT_FIXSHIFT) #define STBTT_FIXMASK (STBTT_FIX-1) static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, int off_x, float start_point, void *userdata) { stbtt__active_edge *z = (stbtt__active_edge *) stbtt__hheap_alloc(hh, sizeof(*z), userdata); float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); STBTT_assert(z != NULL); if (!z) return z; // round dx down to avoid overshooting if (dxdy < 0) z->dx = -STBTT_ifloor(STBTT_FIX * -dxdy); else z->dx = STBTT_ifloor(STBTT_FIX * dxdy); z->x = STBTT_ifloor(STBTT_FIX * e->x0 + z->dx * (start_point - e->y0)); // use z->dx so when we offset later it's by the same amount z->x -= off_x * STBTT_FIX; z->ey = e->y1; z->next = 0; z->direction = e->invert ? 1 : -1; return z; } #elif STBTT_RASTERIZER_VERSION == 2 static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, int off_x, float start_point, void *userdata) { stbtt__active_edge *z = (stbtt__active_edge *) stbtt__hheap_alloc(hh, sizeof(*z), userdata); float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); STBTT_assert(z != NULL); //STBTT_assert(e->y0 <= start_point); if (!z) return z; z->fdx = dxdy; z->fdy = dxdy != 0.0f ? (1.0f/dxdy) : 0.0f; z->fx = e->x0 + dxdy * (start_point - e->y0); z->fx -= off_x; z->direction = e->invert ? 1.0f : -1.0f; z->sy = e->y0; z->ey = e->y1; z->next = 0; return z; } #else #error "Unrecognized value of STBTT_RASTERIZER_VERSION" #endif #if STBTT_RASTERIZER_VERSION == 1 // note: this routine clips fills that extend off the edges... ideally this // wouldn't happen, but it could happen if the truetype glyph bounding boxes // are wrong, or if the user supplies a too-small bitmap static void stbtt__fill_active_edges(unsigned char *scanline, int len, stbtt__active_edge *e, int max_weight) { // non-zero winding fill int x0=0, w=0; while (e) { if (w == 0) { // if we're currently at zero, we need to record the edge start point x0 = e->x; w += e->direction; } else { int x1 = e->x; w += e->direction; // if we went to zero, we need to draw if (w == 0) { int i = x0 >> STBTT_FIXSHIFT; int j = x1 >> STBTT_FIXSHIFT; if (i < len && j >= 0) { if (i == j) { // x0,x1 are the same pixel, so compute combined coverage scanline[i] = scanline[i] + (stbtt_uint8) ((x1 - x0) * max_weight >> STBTT_FIXSHIFT); } else { if (i >= 0) // add antialiasing for x0 scanline[i] = scanline[i] + (stbtt_uint8) (((STBTT_FIX - (x0 & STBTT_FIXMASK)) * max_weight) >> STBTT_FIXSHIFT); else i = -1; // clip if (j < len) // add antialiasing for x1 scanline[j] = scanline[j] + (stbtt_uint8) (((x1 & STBTT_FIXMASK) * max_weight) >> STBTT_FIXSHIFT); else j = len; // clip for (++i; i < j; ++i) // fill pixels between x0 and x1 scanline[i] = scanline[i] + (stbtt_uint8) max_weight; } } } } e = e->next; } } static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, int n, int vsubsample, int off_x, int off_y, void *userdata) { stbtt__hheap hh = { 0, 0, 0 }; stbtt__active_edge *active = NULL; int y,j=0; int max_weight = (255 / vsubsample); // weight per vertical scanline int s; // vertical subsample index unsigned char scanline_data[512], *scanline; if (result->w > 512) scanline = (unsigned char *) STBTT_malloc(result->w, userdata); else scanline = scanline_data; y = off_y * vsubsample; e[n].y0 = (off_y + result->h) * (float) vsubsample + 1; while (j < result->h) { STBTT_memset(scanline, 0, result->w); for (s=0; s < vsubsample; ++s) { // find center of pixel for this scanline float scan_y = y + 0.5f; stbtt__active_edge **step = &active; // update all active edges; // remove all active edges that terminate before the center of this scanline while (*step) { stbtt__active_edge * z = *step; if (z->ey <= scan_y) { *step = z->next; // delete from list STBTT_assert(z->direction); z->direction = 0; stbtt__hheap_free(&hh, z); } else { z->x += z->dx; // advance to position for current scanline step = &((*step)->next); // advance through list } } // resort the list if needed for(;;) { int changed=0; step = &active; while (*step && (*step)->next) { if ((*step)->x > (*step)->next->x) { stbtt__active_edge *t = *step; stbtt__active_edge *q = t->next; t->next = q->next; q->next = t; *step = q; changed = 1; } step = &(*step)->next; } if (!changed) break; } // insert all edges that start before the center of this scanline -- omit ones that also end on this scanline while (e->y0 <= scan_y) { if (e->y1 > scan_y) { stbtt__active_edge *z = stbtt__new_active(&hh, e, off_x, scan_y, userdata); if (z != NULL) { // find insertion point if (active == NULL) active = z; else if (z->x < active->x) { // insert at front z->next = active; active = z; } else { // find thing to insert AFTER stbtt__active_edge *p = active; while (p->next && p->next->x < z->x) p = p->next; // at this point, p->next->x is NOT < z->x z->next = p->next; p->next = z; } } } ++e; } // now process all active edges in XOR fashion if (active) stbtt__fill_active_edges(scanline, result->w, active, max_weight); ++y; } STBTT_memcpy(result->pixels + j * result->stride, scanline, result->w); ++j; } stbtt__hheap_cleanup(&hh, userdata); if (scanline != scanline_data) STBTT_free(scanline, userdata); } #elif STBTT_RASTERIZER_VERSION == 2 // the edge passed in here does not cross the vertical line at x or the vertical line at x+1 // (i.e. it has already been clipped to those) static void stbtt__handle_clipped_edge(float *scanline, int x, stbtt__active_edge *e, float x0, float y0, float x1, float y1) { if (y0 == y1) return; STBTT_assert(y0 < y1); STBTT_assert(e->sy <= e->ey); if (y0 > e->ey) return; if (y1 < e->sy) return; if (y0 < e->sy) { x0 += (x1-x0) * (e->sy - y0) / (y1-y0); y0 = e->sy; } if (y1 > e->ey) { x1 += (x1-x0) * (e->ey - y1) / (y1-y0); y1 = e->ey; } if (x0 == x) STBTT_assert(x1 <= x+1); else if (x0 == x+1) STBTT_assert(x1 >= x); else if (x0 <= x) STBTT_assert(x1 <= x); else if (x0 >= x+1) STBTT_assert(x1 >= x+1); else STBTT_assert(x1 >= x && x1 <= x+1); if (x0 <= x && x1 <= x) scanline[x] += e->direction * (y1-y0); else if (x0 >= x+1 && x1 >= x+1) ; else { STBTT_assert(x0 >= x && x0 <= x+1 && x1 >= x && x1 <= x+1); scanline[x] += e->direction * (y1-y0) * (1-((x0-x)+(x1-x))/2); // coverage = 1 - average x position } } static void stbtt__fill_active_edges_new(float *scanline, float *scanline_fill, int len, stbtt__active_edge *e, float y_top) { float y_bottom = y_top+1; while (e) { // brute force every pixel // compute intersection points with top & bottom STBTT_assert(e->ey >= y_top); if (e->fdx == 0) { float x0 = e->fx; if (x0 < len) { if (x0 >= 0) { stbtt__handle_clipped_edge(scanline,(int) x0,e, x0,y_top, x0,y_bottom); stbtt__handle_clipped_edge(scanline_fill-1,(int) x0+1,e, x0,y_top, x0,y_bottom); } else { stbtt__handle_clipped_edge(scanline_fill-1,0,e, x0,y_top, x0,y_bottom); } } } else { float x0 = e->fx; float dx = e->fdx; float xb = x0 + dx; float x_top, x_bottom; float sy0,sy1; float dy = e->fdy; STBTT_assert(e->sy <= y_bottom && e->ey >= y_top); // compute endpoints of line segment clipped to this scanline (if the // line segment starts on this scanline. x0 is the intersection of the // line with y_top, but that may be off the line segment. if (e->sy > y_top) { x_top = x0 + dx * (e->sy - y_top); sy0 = e->sy; } else { x_top = x0; sy0 = y_top; } if (e->ey < y_bottom) { x_bottom = x0 + dx * (e->ey - y_top); sy1 = e->ey; } else { x_bottom = xb; sy1 = y_bottom; } if (x_top >= 0 && x_bottom >= 0 && x_top < len && x_bottom < len) { // from here on, we don't have to range check x values if ((int) x_top == (int) x_bottom) { float height; // simple case, only spans one pixel int x = (int) x_top; height = sy1 - sy0; STBTT_assert(x >= 0 && x < len); scanline[x] += e->direction * (1-((x_top - x) + (x_bottom-x))/2) * height; scanline_fill[x] += e->direction * height; // everything right of this pixel is filled } else { int x,x1,x2; float y_crossing, step, sign, area; // covers 2+ pixels if (x_top > x_bottom) { // flip scanline vertically; signed area is the same float t; sy0 = y_bottom - (sy0 - y_top); sy1 = y_bottom - (sy1 - y_top); t = sy0, sy0 = sy1, sy1 = t; t = x_bottom, x_bottom = x_top, x_top = t; dx = -dx; dy = -dy; t = x0, x0 = xb, xb = t; } x1 = (int) x_top; x2 = (int) x_bottom; // compute intersection with y axis at x1+1 y_crossing = (x1+1 - x0) * dy + y_top; sign = e->direction; // area of the rectangle covered from y0..y_crossing area = sign * (y_crossing-sy0); // area of the triangle (x_top,y0), (x+1,y0), (x+1,y_crossing) scanline[x1] += area * (1-((x_top - x1)+(x1+1-x1))/2); step = sign * dy; for (x = x1+1; x < x2; ++x) { scanline[x] += area + step/2; area += step; } y_crossing += dy * (x2 - (x1+1)); STBTT_assert(STBTT_fabs(area) <= 1.01f); scanline[x2] += area + sign * (1-((x2-x2)+(x_bottom-x2))/2) * (sy1-y_crossing); scanline_fill[x2] += sign * (sy1-sy0); } } else { // if edge goes outside of box we're drawing, we require // clipping logic. since this does not match the intended use // of this library, we use a different, very slow brute // force implementation int x; for (x=0; x < len; ++x) { // cases: // // there can be up to two intersections with the pixel. any intersection // with left or right edges can be handled by splitting into two (or three) // regions. intersections with top & bottom do not necessitate case-wise logic. // // the old way of doing this found the intersections with the left & right edges, // then used some simple logic to produce up to three segments in sorted order // from top-to-bottom. however, this had a problem: if an x edge was epsilon // across the x border, then the corresponding y position might not be distinct // from the other y segment, and it might ignored as an empty segment. to avoid // that, we need to explicitly produce segments based on x positions. // rename variables to clearly-defined pairs float y0 = y_top; float x1 = (float) (x); float x2 = (float) (x+1); float x3 = xb; float y3 = y_bottom; // x = e->x + e->dx * (y-y_top) // (y-y_top) = (x - e->x) / e->dx // y = (x - e->x) / e->dx + y_top float y1 = (x - x0) / dx + y_top; float y2 = (x+1 - x0) / dx + y_top; if (x0 < x1 && x3 > x2) { // three segments descending down-right stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x1,y1); stbtt__handle_clipped_edge(scanline,x,e, x1,y1, x2,y2); stbtt__handle_clipped_edge(scanline,x,e, x2,y2, x3,y3); } else if (x3 < x1 && x0 > x2) { // three segments descending down-left stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x2,y2); stbtt__handle_clipped_edge(scanline,x,e, x2,y2, x1,y1); stbtt__handle_clipped_edge(scanline,x,e, x1,y1, x3,y3); } else if (x0 < x1 && x3 > x1) { // two segments across x, down-right stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x1,y1); stbtt__handle_clipped_edge(scanline,x,e, x1,y1, x3,y3); } else if (x3 < x1 && x0 > x1) { // two segments across x, down-left stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x1,y1); stbtt__handle_clipped_edge(scanline,x,e, x1,y1, x3,y3); } else if (x0 < x2 && x3 > x2) { // two segments across x+1, down-right stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x2,y2); stbtt__handle_clipped_edge(scanline,x,e, x2,y2, x3,y3); } else if (x3 < x2 && x0 > x2) { // two segments across x+1, down-left stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x2,y2); stbtt__handle_clipped_edge(scanline,x,e, x2,y2, x3,y3); } else { // one segment stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x3,y3); } } } } e = e->next; } } // directly AA rasterize edges w/o supersampling static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, int n, int vsubsample, int off_x, int off_y, void *userdata) { stbtt__hheap hh = { 0, 0, 0 }; stbtt__active_edge *active = NULL; int y,j=0, i; float scanline_data[129], *scanline, *scanline2; STBTT__NOTUSED(vsubsample); if (result->w > 64) scanline = (float *) STBTT_malloc((result->w*2+1) * sizeof(float), userdata); else scanline = scanline_data; scanline2 = scanline + result->w; y = off_y; e[n].y0 = (float) (off_y + result->h) + 1; while (j < result->h) { // find center of pixel for this scanline float scan_y_top = y + 0.0f; float scan_y_bottom = y + 1.0f; stbtt__active_edge **step = &active; STBTT_memset(scanline , 0, result->w*sizeof(scanline[0])); STBTT_memset(scanline2, 0, (result->w+1)*sizeof(scanline[0])); // update all active edges; // remove all active edges that terminate before the top of this scanline while (*step) { stbtt__active_edge * z = *step; if (z->ey <= scan_y_top) { *step = z->next; // delete from list STBTT_assert(z->direction); z->direction = 0; stbtt__hheap_free(&hh, z); } else { step = &((*step)->next); // advance through list } } // insert all edges that start before the bottom of this scanline while (e->y0 <= scan_y_bottom) { if (e->y0 != e->y1) { stbtt__active_edge *z = stbtt__new_active(&hh, e, off_x, scan_y_top, userdata); if (z != NULL) { if (j == 0 && off_y != 0) { if (z->ey < scan_y_top) { // this can happen due to subpixel positioning and some kind of fp rounding error i think z->ey = scan_y_top; } } STBTT_assert(z->ey >= scan_y_top); // if we get really unlucky a tiny bit of an edge can be out of bounds // insert at front z->next = active; active = z; } } ++e; } // now process all active edges if (active) stbtt__fill_active_edges_new(scanline, scanline2+1, result->w, active, scan_y_top); { float sum = 0; for (i=0; i < result->w; ++i) { float k; int m; sum += scanline2[i]; k = scanline[i] + sum; k = (float) STBTT_fabs(k)*255 + 0.5f; m = (int) k; if (m > 255) m = 255; result->pixels[j*result->stride + i] = (unsigned char) m; } } // advance all the edges step = &active; while (*step) { stbtt__active_edge *z = *step; z->fx += z->fdx; // advance to position for current scanline step = &((*step)->next); // advance through list } ++y; ++j; } stbtt__hheap_cleanup(&hh, userdata); if (scanline != scanline_data) STBTT_free(scanline, userdata); } #else #error "Unrecognized value of STBTT_RASTERIZER_VERSION" #endif #define STBTT__COMPARE(a,b) ((a)->y0 < (b)->y0) static void stbtt__sort_edges_ins_sort(stbtt__edge *p, int n) { int i,j; for (i=1; i < n; ++i) { stbtt__edge t = p[i], *a = &t; j = i; while (j > 0) { stbtt__edge *b = &p[j-1]; int c = STBTT__COMPARE(a,b); if (!c) break; p[j] = p[j-1]; --j; } if (i != j) p[j] = t; } } static void stbtt__sort_edges_quicksort(stbtt__edge *p, int n) { /* threshold for transitioning to insertion sort */ while (n > 12) { stbtt__edge t; int c01,c12,c,m,i,j; /* compute median of three */ m = n >> 1; c01 = STBTT__COMPARE(&p[0],&p[m]); c12 = STBTT__COMPARE(&p[m],&p[n-1]); /* if 0 >= mid >= end, or 0 < mid < end, then use mid */ if (c01 != c12) { /* otherwise, we'll need to swap something else to middle */ int z; c = STBTT__COMPARE(&p[0],&p[n-1]); /* 0>mid && midn => n; 0 0 */ /* 0n: 0>n => 0; 0 n */ z = (c == c12) ? 0 : n-1; t = p[z]; p[z] = p[m]; p[m] = t; } /* now p[m] is the median-of-three */ /* swap it to the beginning so it won't move around */ t = p[0]; p[0] = p[m]; p[m] = t; /* partition loop */ i=1; j=n-1; for(;;) { /* handling of equality is crucial here */ /* for sentinels & efficiency with duplicates */ for (;;++i) { if (!STBTT__COMPARE(&p[i], &p[0])) break; } for (;;--j) { if (!STBTT__COMPARE(&p[0], &p[j])) break; } /* make sure we haven't crossed */ if (i >= j) break; t = p[i]; p[i] = p[j]; p[j] = t; ++i; --j; } /* recurse on smaller side, iterate on larger */ if (j < (n-i)) { stbtt__sort_edges_quicksort(p,j); p = p+i; n = n-i; } else { stbtt__sort_edges_quicksort(p+i, n-i); n = j; } } } static void stbtt__sort_edges(stbtt__edge *p, int n) { stbtt__sort_edges_quicksort(p, n); stbtt__sort_edges_ins_sort(p, n); } typedef struct { float x,y; } stbtt__point; static void stbtt__rasterize(stbtt__bitmap *result, stbtt__point *pts, int *wcount, int windings, float scale_x, float scale_y, float shift_x, float shift_y, int off_x, int off_y, int invert, void *userdata) { float y_scale_inv = invert ? -scale_y : scale_y; stbtt__edge *e; int n,i,j,k,m; #if STBTT_RASTERIZER_VERSION == 1 int vsubsample = result->h < 8 ? 15 : 5; #elif STBTT_RASTERIZER_VERSION == 2 int vsubsample = 1; #else #error "Unrecognized value of STBTT_RASTERIZER_VERSION" #endif // vsubsample should divide 255 evenly; otherwise we won't reach full opacity // now we have to blow out the windings into explicit edge lists n = 0; for (i=0; i < windings; ++i) n += wcount[i]; e = (stbtt__edge *) STBTT_malloc(sizeof(*e) * (n+1), userdata); // add an extra one as a sentinel if (e == 0) return; n = 0; m=0; for (i=0; i < windings; ++i) { stbtt__point *p = pts + m; m += wcount[i]; j = wcount[i]-1; for (k=0; k < wcount[i]; j=k++) { int a=k,b=j; // skip the edge if horizontal if (p[j].y == p[k].y) continue; // add edge from j to k to the list e[n].invert = 0; if (invert ? p[j].y > p[k].y : p[j].y < p[k].y) { e[n].invert = 1; a=j,b=k; } e[n].x0 = p[a].x * scale_x + shift_x; e[n].y0 = (p[a].y * y_scale_inv + shift_y) * vsubsample; e[n].x1 = p[b].x * scale_x + shift_x; e[n].y1 = (p[b].y * y_scale_inv + shift_y) * vsubsample; ++n; } } // now sort the edges by their highest point (should snap to integer, and then by x) //STBTT_sort(e, n, sizeof(e[0]), stbtt__edge_compare); stbtt__sort_edges(e, n); // now, traverse the scanlines and find the intersections on each scanline, use xor winding rule stbtt__rasterize_sorted_edges(result, e, n, vsubsample, off_x, off_y, userdata); STBTT_free(e, userdata); } static void stbtt__add_point(stbtt__point *points, int n, float x, float y) { if (!points) return; // during first pass, it's unallocated points[n].x = x; points[n].y = y; } // tessellate until threshold p is happy... @TODO warped to compensate for non-linear stretching static int stbtt__tesselate_curve(stbtt__point *points, int *num_points, float x0, float y0, float x1, float y1, float x2, float y2, float objspace_flatness_squared, int n) { // midpoint float mx = (x0 + 2*x1 + x2)/4; float my = (y0 + 2*y1 + y2)/4; // versus directly drawn line float dx = (x0+x2)/2 - mx; float dy = (y0+y2)/2 - my; if (n > 16) // 65536 segments on one curve better be enough! return 1; if (dx*dx+dy*dy > objspace_flatness_squared) { // half-pixel error allowed... need to be smaller if AA stbtt__tesselate_curve(points, num_points, x0,y0, (x0+x1)/2.0f,(y0+y1)/2.0f, mx,my, objspace_flatness_squared,n+1); stbtt__tesselate_curve(points, num_points, mx,my, (x1+x2)/2.0f,(y1+y2)/2.0f, x2,y2, objspace_flatness_squared,n+1); } else { stbtt__add_point(points, *num_points,x2,y2); *num_points = *num_points+1; } return 1; } static void stbtt__tesselate_cubic(stbtt__point *points, int *num_points, float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3, float objspace_flatness_squared, int n) { // @TODO this "flatness" calculation is just made-up nonsense that seems to work well enough float dx0 = x1-x0; float dy0 = y1-y0; float dx1 = x2-x1; float dy1 = y2-y1; float dx2 = x3-x2; float dy2 = y3-y2; float dx = x3-x0; float dy = y3-y0; float longlen = (float) (STBTT_sqrt(dx0*dx0+dy0*dy0)+STBTT_sqrt(dx1*dx1+dy1*dy1)+STBTT_sqrt(dx2*dx2+dy2*dy2)); float shortlen = (float) STBTT_sqrt(dx*dx+dy*dy); float flatness_squared = longlen*longlen-shortlen*shortlen; if (n > 16) // 65536 segments on one curve better be enough! return; if (flatness_squared > objspace_flatness_squared) { float x01 = (x0+x1)/2; float y01 = (y0+y1)/2; float x12 = (x1+x2)/2; float y12 = (y1+y2)/2; float x23 = (x2+x3)/2; float y23 = (y2+y3)/2; float xa = (x01+x12)/2; float ya = (y01+y12)/2; float xb = (x12+x23)/2; float yb = (y12+y23)/2; float mx = (xa+xb)/2; float my = (ya+yb)/2; stbtt__tesselate_cubic(points, num_points, x0,y0, x01,y01, xa,ya, mx,my, objspace_flatness_squared,n+1); stbtt__tesselate_cubic(points, num_points, mx,my, xb,yb, x23,y23, x3,y3, objspace_flatness_squared,n+1); } else { stbtt__add_point(points, *num_points,x3,y3); *num_points = *num_points+1; } } // returns number of contours static stbtt__point *stbtt_FlattenCurves(stbtt_vertex *vertices, int num_verts, float objspace_flatness, int **contour_lengths, int *num_contours, void *userdata) { stbtt__point *points=0; int num_points=0; float objspace_flatness_squared = objspace_flatness * objspace_flatness; int i,n=0,start=0, pass; // count how many "moves" there are to get the contour count for (i=0; i < num_verts; ++i) if (vertices[i].type == STBTT_vmove) ++n; *num_contours = n; if (n == 0) return 0; *contour_lengths = (int *) STBTT_malloc(sizeof(**contour_lengths) * n, userdata); if (*contour_lengths == 0) { *num_contours = 0; return 0; } // make two passes through the points so we don't need to realloc for (pass=0; pass < 2; ++pass) { float x=0,y=0; if (pass == 1) { points = (stbtt__point *) STBTT_malloc(num_points * sizeof(points[0]), userdata); if (points == NULL) goto error; } num_points = 0; n= -1; for (i=0; i < num_verts; ++i) { switch (vertices[i].type) { case STBTT_vmove: // start the next contour if (n >= 0) (*contour_lengths)[n] = num_points - start; ++n; start = num_points; x = vertices[i].x, y = vertices[i].y; stbtt__add_point(points, num_points++, x,y); break; case STBTT_vline: x = vertices[i].x, y = vertices[i].y; stbtt__add_point(points, num_points++, x, y); break; case STBTT_vcurve: stbtt__tesselate_curve(points, &num_points, x,y, vertices[i].cx, vertices[i].cy, vertices[i].x, vertices[i].y, objspace_flatness_squared, 0); x = vertices[i].x, y = vertices[i].y; break; case STBTT_vcubic: stbtt__tesselate_cubic(points, &num_points, x,y, vertices[i].cx, vertices[i].cy, vertices[i].cx1, vertices[i].cy1, vertices[i].x, vertices[i].y, objspace_flatness_squared, 0); x = vertices[i].x, y = vertices[i].y; break; } } (*contour_lengths)[n] = num_points - start; } return points; error: STBTT_free(points, userdata); STBTT_free(*contour_lengths, userdata); *contour_lengths = 0; *num_contours = 0; return NULL; } STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, float flatness_in_pixels, stbtt_vertex *vertices, int num_verts, float scale_x, float scale_y, float shift_x, float shift_y, int x_off, int y_off, int invert, void *userdata) { float scale = scale_x > scale_y ? scale_y : scale_x; int winding_count = 0; int *winding_lengths = NULL; stbtt__point *windings = stbtt_FlattenCurves(vertices, num_verts, flatness_in_pixels / scale, &winding_lengths, &winding_count, userdata); if (windings) { stbtt__rasterize(result, windings, winding_lengths, winding_count, scale_x, scale_y, shift_x, shift_y, x_off, y_off, invert, userdata); STBTT_free(winding_lengths, userdata); STBTT_free(windings, userdata); } } STBTT_DEF void stbtt_FreeBitmap(unsigned char *bitmap, void *userdata) { STBTT_free(bitmap, userdata); } STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, int *width, int *height, int *xoff, int *yoff) { int ix0,iy0,ix1,iy1; stbtt__bitmap gbm; stbtt_vertex *vertices; int num_verts = stbtt_GetGlyphShape(info, glyph, &vertices); if (scale_x == 0) scale_x = scale_y; if (scale_y == 0) { if (scale_x == 0) { STBTT_free(vertices, info->userdata); return NULL; } scale_y = scale_x; } stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale_x, scale_y, shift_x, shift_y, &ix0,&iy0,&ix1,&iy1); // now we get the size gbm.w = (ix1 - ix0); gbm.h = (iy1 - iy0); gbm.pixels = NULL; // in case we error if (width ) *width = gbm.w; if (height) *height = gbm.h; if (xoff ) *xoff = ix0; if (yoff ) *yoff = iy0; if (gbm.w && gbm.h) { gbm.pixels = (unsigned char *) STBTT_malloc(gbm.w * gbm.h, info->userdata); if (gbm.pixels) { gbm.stride = gbm.w; stbtt_Rasterize(&gbm, 0.35f, vertices, num_verts, scale_x, scale_y, shift_x, shift_y, ix0, iy0, 1, info->userdata); } } STBTT_free(vertices, info->userdata); return gbm.pixels; } STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int glyph, int *width, int *height, int *xoff, int *yoff) { return stbtt_GetGlyphBitmapSubpixel(info, scale_x, scale_y, 0.0f, 0.0f, glyph, width, height, xoff, yoff); } STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int glyph) { int ix0,iy0; stbtt_vertex *vertices; int num_verts = stbtt_GetGlyphShape(info, glyph, &vertices); stbtt__bitmap gbm; stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale_x, scale_y, shift_x, shift_y, &ix0,&iy0,0,0); gbm.pixels = output; gbm.w = out_w; gbm.h = out_h; gbm.stride = out_stride; if (gbm.w && gbm.h) stbtt_Rasterize(&gbm, 0.35f, vertices, num_verts, scale_x, scale_y, shift_x, shift_y, ix0,iy0, 1, info->userdata); STBTT_free(vertices, info->userdata); } STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph) { stbtt_MakeGlyphBitmapSubpixel(info, output, out_w, out_h, out_stride, scale_x, scale_y, 0.0f,0.0f, glyph); } STBTT_DEF unsigned char *stbtt_GetCodepointBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, int *width, int *height, int *xoff, int *yoff) { return stbtt_GetGlyphBitmapSubpixel(info, scale_x, scale_y,shift_x,shift_y, stbtt_FindGlyphIndex(info,codepoint), width,height,xoff,yoff); } STBTT_DEF void stbtt_MakeCodepointBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int codepoint) { stbtt_MakeGlyphBitmapSubpixelPrefilter(info, output, out_w, out_h, out_stride, scale_x, scale_y, shift_x, shift_y, oversample_x, oversample_y, sub_x, sub_y, stbtt_FindGlyphIndex(info,codepoint)); } STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint) { stbtt_MakeGlyphBitmapSubpixel(info, output, out_w, out_h, out_stride, scale_x, scale_y, shift_x, shift_y, stbtt_FindGlyphIndex(info,codepoint)); } STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff) { return stbtt_GetCodepointBitmapSubpixel(info, scale_x, scale_y, 0.0f,0.0f, codepoint, width,height,xoff,yoff); } STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint) { stbtt_MakeCodepointBitmapSubpixel(info, output, out_w, out_h, out_stride, scale_x, scale_y, 0.0f,0.0f, codepoint); } ////////////////////////////////////////////////////////////////////////////// // // bitmap baking // // This is SUPER-CRAPPY packing to keep source code small static int stbtt_BakeFontBitmap_internal(unsigned char *data, int offset, // font location (use offset=0 for plain .ttf) float pixel_height, // height of font in pixels unsigned char *pixels, int pw, int ph, // bitmap to be filled in int first_char, int num_chars, // characters to bake stbtt_bakedchar *chardata) { float scale; int x,y,bottom_y, i; stbtt_fontinfo f; f.userdata = NULL; if (!stbtt_InitFont(&f, data, offset)) return -1; STBTT_memset(pixels, 0, pw*ph); // background of 0 around pixels x=y=1; bottom_y = 1; scale = stbtt_ScaleForPixelHeight(&f, pixel_height); for (i=0; i < num_chars; ++i) { int advance, lsb, x0,y0,x1,y1,gw,gh; int g = stbtt_FindGlyphIndex(&f, first_char + i); stbtt_GetGlyphHMetrics(&f, g, &advance, &lsb); stbtt_GetGlyphBitmapBox(&f, g, scale,scale, &x0,&y0,&x1,&y1); gw = x1-x0; gh = y1-y0; if (x + gw + 1 >= pw) y = bottom_y, x = 1; // advance to next row if (y + gh + 1 >= ph) // check if it fits vertically AFTER potentially moving to next row return -i; STBTT_assert(x+gw < pw); STBTT_assert(y+gh < ph); stbtt_MakeGlyphBitmap(&f, pixels+x+y*pw, gw,gh,pw, scale,scale, g); chardata[i].x0 = (stbtt_int16) x; chardata[i].y0 = (stbtt_int16) y; chardata[i].x1 = (stbtt_int16) (x + gw); chardata[i].y1 = (stbtt_int16) (y + gh); chardata[i].xadvance = scale * advance; chardata[i].xoff = (float) x0; chardata[i].yoff = (float) y0; x = x + gw + 1; if (y+gh+1 > bottom_y) bottom_y = y+gh+1; } return bottom_y; } STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int opengl_fillrule) { float d3d_bias = opengl_fillrule ? 0 : -0.5f; float ipw = 1.0f / pw, iph = 1.0f / ph; const stbtt_bakedchar *b = chardata + char_index; int round_x = STBTT_ifloor((*xpos + b->xoff) + 0.5f); int round_y = STBTT_ifloor((*ypos + b->yoff) + 0.5f); q->x0 = round_x + d3d_bias; q->y0 = round_y + d3d_bias; q->x1 = round_x + b->x1 - b->x0 + d3d_bias; q->y1 = round_y + b->y1 - b->y0 + d3d_bias; q->s0 = b->x0 * ipw; q->t0 = b->y0 * iph; q->s1 = b->x1 * ipw; q->t1 = b->y1 * iph; *xpos += b->xadvance; } ////////////////////////////////////////////////////////////////////////////// // // rectangle packing replacement routines if you don't have stb_rect_pack.h // #ifndef STB_RECT_PACK_VERSION typedef int stbrp_coord; //////////////////////////////////////////////////////////////////////////////////// // // // // // COMPILER WARNING ?!?!? // // // // // // if you get a compile warning due to these symbols being defined more than // // once, move #include "stb_rect_pack.h" before #include "stb_truetype.h" // // // //////////////////////////////////////////////////////////////////////////////////// typedef struct { int width,height; int x,y,bottom_y; } stbrp_context; typedef struct { unsigned char x; } stbrp_node; struct stbrp_rect { stbrp_coord x,y; int id,w,h,was_packed; }; static void stbrp_init_target(stbrp_context *con, int pw, int ph, stbrp_node *nodes, int num_nodes) { con->width = pw; con->height = ph; con->x = 0; con->y = 0; con->bottom_y = 0; STBTT__NOTUSED(nodes); STBTT__NOTUSED(num_nodes); } static void stbrp_pack_rects(stbrp_context *con, stbrp_rect *rects, int num_rects) { int i; for (i=0; i < num_rects; ++i) { if (con->x + rects[i].w > con->width) { con->x = 0; con->y = con->bottom_y; } if (con->y + rects[i].h > con->height) break; rects[i].x = con->x; rects[i].y = con->y; rects[i].was_packed = 1; con->x += rects[i].w; if (con->y + rects[i].h > con->bottom_y) con->bottom_y = con->y + rects[i].h; } for ( ; i < num_rects; ++i) rects[i].was_packed = 0; } #endif ////////////////////////////////////////////////////////////////////////////// // // bitmap baking // // This is SUPER-AWESOME (tm Ryan Gordon) packing using stb_rect_pack.h. If // stb_rect_pack.h isn't available, it uses the BakeFontBitmap strategy. STBTT_DEF int stbtt_PackBegin(stbtt_pack_context *spc, unsigned char *pixels, int pw, int ph, int stride_in_bytes, int padding, void *alloc_context) { stbrp_context *context = (stbrp_context *) STBTT_malloc(sizeof(*context) ,alloc_context); int num_nodes = pw - padding; stbrp_node *nodes = (stbrp_node *) STBTT_malloc(sizeof(*nodes ) * num_nodes,alloc_context); if (context == NULL || nodes == NULL) { if (context != NULL) STBTT_free(context, alloc_context); if (nodes != NULL) STBTT_free(nodes , alloc_context); return 0; } spc->user_allocator_context = alloc_context; spc->width = pw; spc->height = ph; spc->pixels = pixels; spc->pack_info = context; spc->nodes = nodes; spc->padding = padding; spc->stride_in_bytes = stride_in_bytes != 0 ? stride_in_bytes : pw; spc->h_oversample = 1; spc->v_oversample = 1; spc->skip_missing = 0; stbrp_init_target(context, pw-padding, ph-padding, nodes, num_nodes); if (pixels) STBTT_memset(pixels, 0, pw*ph); // background of 0 around pixels return 1; } STBTT_DEF void stbtt_PackEnd (stbtt_pack_context *spc) { STBTT_free(spc->nodes , spc->user_allocator_context); STBTT_free(spc->pack_info, spc->user_allocator_context); } STBTT_DEF void stbtt_PackSetOversampling(stbtt_pack_context *spc, unsigned int h_oversample, unsigned int v_oversample) { STBTT_assert(h_oversample <= STBTT_MAX_OVERSAMPLE); STBTT_assert(v_oversample <= STBTT_MAX_OVERSAMPLE); if (h_oversample <= STBTT_MAX_OVERSAMPLE) spc->h_oversample = h_oversample; if (v_oversample <= STBTT_MAX_OVERSAMPLE) spc->v_oversample = v_oversample; } STBTT_DEF void stbtt_PackSetSkipMissingCodepoints(stbtt_pack_context *spc, int skip) { spc->skip_missing = skip; } #define STBTT__OVER_MASK (STBTT_MAX_OVERSAMPLE-1) static void stbtt__h_prefilter(unsigned char *pixels, int w, int h, int stride_in_bytes, unsigned int kernel_width) { unsigned char buffer[STBTT_MAX_OVERSAMPLE]; int safe_w = w - kernel_width; int j; STBTT_memset(buffer, 0, STBTT_MAX_OVERSAMPLE); // suppress bogus warning from VS2013 -analyze for (j=0; j < h; ++j) { int i; unsigned int total; STBTT_memset(buffer, 0, kernel_width); total = 0; // make kernel_width a constant in common cases so compiler can optimize out the divide switch (kernel_width) { case 2: for (i=0; i <= safe_w; ++i) { total += pixels[i] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; pixels[i] = (unsigned char) (total / 2); } break; case 3: for (i=0; i <= safe_w; ++i) { total += pixels[i] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; pixels[i] = (unsigned char) (total / 3); } break; case 4: for (i=0; i <= safe_w; ++i) { total += pixels[i] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; pixels[i] = (unsigned char) (total / 4); } break; case 5: for (i=0; i <= safe_w; ++i) { total += pixels[i] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; pixels[i] = (unsigned char) (total / 5); } break; default: for (i=0; i <= safe_w; ++i) { total += pixels[i] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; pixels[i] = (unsigned char) (total / kernel_width); } break; } for (; i < w; ++i) { STBTT_assert(pixels[i] == 0); total -= buffer[i & STBTT__OVER_MASK]; pixels[i] = (unsigned char) (total / kernel_width); } pixels += stride_in_bytes; } } static void stbtt__v_prefilter(unsigned char *pixels, int w, int h, int stride_in_bytes, unsigned int kernel_width) { unsigned char buffer[STBTT_MAX_OVERSAMPLE]; int safe_h = h - kernel_width; int j; STBTT_memset(buffer, 0, STBTT_MAX_OVERSAMPLE); // suppress bogus warning from VS2013 -analyze for (j=0; j < w; ++j) { int i; unsigned int total; STBTT_memset(buffer, 0, kernel_width); total = 0; // make kernel_width a constant in common cases so compiler can optimize out the divide switch (kernel_width) { case 2: for (i=0; i <= safe_h; ++i) { total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; pixels[i*stride_in_bytes] = (unsigned char) (total / 2); } break; case 3: for (i=0; i <= safe_h; ++i) { total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; pixels[i*stride_in_bytes] = (unsigned char) (total / 3); } break; case 4: for (i=0; i <= safe_h; ++i) { total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; pixels[i*stride_in_bytes] = (unsigned char) (total / 4); } break; case 5: for (i=0; i <= safe_h; ++i) { total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; pixels[i*stride_in_bytes] = (unsigned char) (total / 5); } break; default: for (i=0; i <= safe_h; ++i) { total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; pixels[i*stride_in_bytes] = (unsigned char) (total / kernel_width); } break; } for (; i < h; ++i) { STBTT_assert(pixels[i*stride_in_bytes] == 0); total -= buffer[i & STBTT__OVER_MASK]; pixels[i*stride_in_bytes] = (unsigned char) (total / kernel_width); } pixels += 1; } } static float stbtt__oversample_shift(int oversample) { if (!oversample) return 0.0f; // The prefilter is a box filter of width "oversample", // which shifts phase by (oversample - 1)/2 pixels in // oversampled space. We want to shift in the opposite // direction to counter this. return (float)-(oversample - 1) / (2.0f * (float)oversample); } // rects array must be big enough to accommodate all characters in the given ranges STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects) { int i,j,k; int missing_glyph_added = 0; k=0; for (i=0; i < num_ranges; ++i) { float fh = ranges[i].font_size; float scale = fh > 0 ? stbtt_ScaleForPixelHeight(info, fh) : stbtt_ScaleForMappingEmToPixels(info, -fh); ranges[i].h_oversample = (unsigned char) spc->h_oversample; ranges[i].v_oversample = (unsigned char) spc->v_oversample; for (j=0; j < ranges[i].num_chars; ++j) { int x0,y0,x1,y1; int codepoint = ranges[i].array_of_unicode_codepoints == NULL ? ranges[i].first_unicode_codepoint_in_range + j : ranges[i].array_of_unicode_codepoints[j]; int glyph = stbtt_FindGlyphIndex(info, codepoint); if (glyph == 0 && (spc->skip_missing || missing_glyph_added)) { rects[k].w = rects[k].h = 0; } else { stbtt_GetGlyphBitmapBoxSubpixel(info,glyph, scale * spc->h_oversample, scale * spc->v_oversample, 0,0, &x0,&y0,&x1,&y1); rects[k].w = (stbrp_coord) (x1-x0 + spc->padding + spc->h_oversample-1); rects[k].h = (stbrp_coord) (y1-y0 + spc->padding + spc->v_oversample-1); if (glyph == 0) missing_glyph_added = 1; } ++k; } } return k; } STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int prefilter_x, int prefilter_y, float *sub_x, float *sub_y, int glyph) { stbtt_MakeGlyphBitmapSubpixel(info, output, out_w - (prefilter_x - 1), out_h - (prefilter_y - 1), out_stride, scale_x, scale_y, shift_x, shift_y, glyph); if (prefilter_x > 1) stbtt__h_prefilter(output, out_w, out_h, out_stride, prefilter_x); if (prefilter_y > 1) stbtt__v_prefilter(output, out_w, out_h, out_stride, prefilter_y); *sub_x = stbtt__oversample_shift(prefilter_x); *sub_y = stbtt__oversample_shift(prefilter_y); } // rects array must be big enough to accommodate all characters in the given ranges STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects) { int i,j,k, missing_glyph = -1, return_value = 1; // save current values int old_h_over = spc->h_oversample; int old_v_over = spc->v_oversample; k = 0; for (i=0; i < num_ranges; ++i) { float fh = ranges[i].font_size; float scale = fh > 0 ? stbtt_ScaleForPixelHeight(info, fh) : stbtt_ScaleForMappingEmToPixels(info, -fh); float recip_h,recip_v,sub_x,sub_y; spc->h_oversample = ranges[i].h_oversample; spc->v_oversample = ranges[i].v_oversample; recip_h = 1.0f / spc->h_oversample; recip_v = 1.0f / spc->v_oversample; sub_x = stbtt__oversample_shift(spc->h_oversample); sub_y = stbtt__oversample_shift(spc->v_oversample); for (j=0; j < ranges[i].num_chars; ++j) { stbrp_rect *r = &rects[k]; if (r->was_packed && r->w != 0 && r->h != 0) { stbtt_packedchar *bc = &ranges[i].chardata_for_range[j]; int advance, lsb, x0,y0,x1,y1; int codepoint = ranges[i].array_of_unicode_codepoints == NULL ? ranges[i].first_unicode_codepoint_in_range + j : ranges[i].array_of_unicode_codepoints[j]; int glyph = stbtt_FindGlyphIndex(info, codepoint); stbrp_coord pad = (stbrp_coord) spc->padding; // pad on left and top r->x += pad; r->y += pad; r->w -= pad; r->h -= pad; stbtt_GetGlyphHMetrics(info, glyph, &advance, &lsb); stbtt_GetGlyphBitmapBox(info, glyph, scale * spc->h_oversample, scale * spc->v_oversample, &x0,&y0,&x1,&y1); stbtt_MakeGlyphBitmapSubpixel(info, spc->pixels + r->x + r->y*spc->stride_in_bytes, r->w - spc->h_oversample+1, r->h - spc->v_oversample+1, spc->stride_in_bytes, scale * spc->h_oversample, scale * spc->v_oversample, 0,0, glyph); if (spc->h_oversample > 1) stbtt__h_prefilter(spc->pixels + r->x + r->y*spc->stride_in_bytes, r->w, r->h, spc->stride_in_bytes, spc->h_oversample); if (spc->v_oversample > 1) stbtt__v_prefilter(spc->pixels + r->x + r->y*spc->stride_in_bytes, r->w, r->h, spc->stride_in_bytes, spc->v_oversample); bc->x0 = (stbtt_int16) r->x; bc->y0 = (stbtt_int16) r->y; bc->x1 = (stbtt_int16) (r->x + r->w); bc->y1 = (stbtt_int16) (r->y + r->h); bc->xadvance = scale * advance; bc->xoff = (float) x0 * recip_h + sub_x; bc->yoff = (float) y0 * recip_v + sub_y; bc->xoff2 = (x0 + r->w) * recip_h + sub_x; bc->yoff2 = (y0 + r->h) * recip_v + sub_y; if (glyph == 0) missing_glyph = j; } else if (spc->skip_missing) { return_value = 0; } else if (r->was_packed && r->w == 0 && r->h == 0 && missing_glyph >= 0) { ranges[i].chardata_for_range[j] = ranges[i].chardata_for_range[missing_glyph]; } else { return_value = 0; // if any fail, report failure } ++k; } } // restore original values spc->h_oversample = old_h_over; spc->v_oversample = old_v_over; return return_value; } STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, stbrp_rect *rects, int num_rects) { stbrp_pack_rects((stbrp_context *) spc->pack_info, rects, num_rects); } STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, stbtt_pack_range *ranges, int num_ranges) { stbtt_fontinfo info; int i,j,n, return_value = 1; //stbrp_context *context = (stbrp_context *) spc->pack_info; stbrp_rect *rects; // flag all characters as NOT packed for (i=0; i < num_ranges; ++i) for (j=0; j < ranges[i].num_chars; ++j) ranges[i].chardata_for_range[j].x0 = ranges[i].chardata_for_range[j].y0 = ranges[i].chardata_for_range[j].x1 = ranges[i].chardata_for_range[j].y1 = 0; n = 0; for (i=0; i < num_ranges; ++i) n += ranges[i].num_chars; rects = (stbrp_rect *) STBTT_malloc(sizeof(*rects) * n, spc->user_allocator_context); if (rects == NULL) return 0; info.userdata = spc->user_allocator_context; stbtt_InitFont(&info, fontdata, stbtt_GetFontOffsetForIndex(fontdata,font_index)); n = stbtt_PackFontRangesGatherRects(spc, &info, ranges, num_ranges, rects); stbtt_PackFontRangesPackRects(spc, rects, n); return_value = stbtt_PackFontRangesRenderIntoRects(spc, &info, ranges, num_ranges, rects); STBTT_free(rects, spc->user_allocator_context); return return_value; } STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, float font_size, int first_unicode_codepoint_in_range, int num_chars_in_range, stbtt_packedchar *chardata_for_range) { stbtt_pack_range range; range.first_unicode_codepoint_in_range = first_unicode_codepoint_in_range; range.array_of_unicode_codepoints = NULL; range.num_chars = num_chars_in_range; range.chardata_for_range = chardata_for_range; range.font_size = font_size; return stbtt_PackFontRanges(spc, fontdata, font_index, &range, 1); } STBTT_DEF void stbtt_GetScaledFontVMetrics(const unsigned char *fontdata, int index, float size, float *ascent, float *descent, float *lineGap) { int i_ascent, i_descent, i_lineGap; float scale; stbtt_fontinfo info; stbtt_InitFont(&info, fontdata, stbtt_GetFontOffsetForIndex(fontdata, index)); scale = size > 0 ? stbtt_ScaleForPixelHeight(&info, size) : stbtt_ScaleForMappingEmToPixels(&info, -size); stbtt_GetFontVMetrics(&info, &i_ascent, &i_descent, &i_lineGap); *ascent = (float) i_ascent * scale; *descent = (float) i_descent * scale; *lineGap = (float) i_lineGap * scale; } STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int align_to_integer) { float ipw = 1.0f / pw, iph = 1.0f / ph; const stbtt_packedchar *b = chardata + char_index; if (align_to_integer) { float x = (float) STBTT_ifloor((*xpos + b->xoff) + 0.5f); float y = (float) STBTT_ifloor((*ypos + b->yoff) + 0.5f); q->x0 = x; q->y0 = y; q->x1 = x + b->xoff2 - b->xoff; q->y1 = y + b->yoff2 - b->yoff; } else { q->x0 = *xpos + b->xoff; q->y0 = *ypos + b->yoff; q->x1 = *xpos + b->xoff2; q->y1 = *ypos + b->yoff2; } q->s0 = b->x0 * ipw; q->t0 = b->y0 * iph; q->s1 = b->x1 * ipw; q->t1 = b->y1 * iph; *xpos += b->xadvance; } ////////////////////////////////////////////////////////////////////////////// // // sdf computation // #define STBTT_min(a,b) ((a) < (b) ? (a) : (b)) #define STBTT_max(a,b) ((a) < (b) ? (b) : (a)) static int stbtt__ray_intersect_bezier(float orig[2], float ray[2], float q0[2], float q1[2], float q2[2], float hits[2][2]) { float q0perp = q0[1]*ray[0] - q0[0]*ray[1]; float q1perp = q1[1]*ray[0] - q1[0]*ray[1]; float q2perp = q2[1]*ray[0] - q2[0]*ray[1]; float roperp = orig[1]*ray[0] - orig[0]*ray[1]; float a = q0perp - 2*q1perp + q2perp; float b = q1perp - q0perp; float c = q0perp - roperp; float s0 = 0., s1 = 0.; int num_s = 0; if (a != 0.0) { float discr = b*b - a*c; if (discr > 0.0) { float rcpna = -1 / a; float d = (float) STBTT_sqrt(discr); s0 = (b+d) * rcpna; s1 = (b-d) * rcpna; if (s0 >= 0.0 && s0 <= 1.0) num_s = 1; if (d > 0.0 && s1 >= 0.0 && s1 <= 1.0) { if (num_s == 0) s0 = s1; ++num_s; } } } else { // 2*b*s + c = 0 // s = -c / (2*b) s0 = c / (-2 * b); if (s0 >= 0.0 && s0 <= 1.0) num_s = 1; } if (num_s == 0) return 0; else { float rcp_len2 = 1 / (ray[0]*ray[0] + ray[1]*ray[1]); float rayn_x = ray[0] * rcp_len2, rayn_y = ray[1] * rcp_len2; float q0d = q0[0]*rayn_x + q0[1]*rayn_y; float q1d = q1[0]*rayn_x + q1[1]*rayn_y; float q2d = q2[0]*rayn_x + q2[1]*rayn_y; float rod = orig[0]*rayn_x + orig[1]*rayn_y; float q10d = q1d - q0d; float q20d = q2d - q0d; float q0rd = q0d - rod; hits[0][0] = q0rd + s0*(2.0f - 2.0f*s0)*q10d + s0*s0*q20d; hits[0][1] = a*s0+b; if (num_s > 1) { hits[1][0] = q0rd + s1*(2.0f - 2.0f*s1)*q10d + s1*s1*q20d; hits[1][1] = a*s1+b; return 2; } else { return 1; } } } static int equal(float *a, float *b) { return (a[0] == b[0] && a[1] == b[1]); } static int stbtt__compute_crossings_x(float x, float y, int nverts, stbtt_vertex *verts) { int i; float orig[2], ray[2] = { 1, 0 }; float y_frac; int winding = 0; orig[0] = x; orig[1] = y; // make sure y never passes through a vertex of the shape y_frac = (float) STBTT_fmod(y, 1.0f); if (y_frac < 0.01f) y += 0.01f; else if (y_frac > 0.99f) y -= 0.01f; orig[1] = y; // test a ray from (-infinity,y) to (x,y) for (i=0; i < nverts; ++i) { if (verts[i].type == STBTT_vline) { int x0 = (int) verts[i-1].x, y0 = (int) verts[i-1].y; int x1 = (int) verts[i ].x, y1 = (int) verts[i ].y; if (y > STBTT_min(y0,y1) && y < STBTT_max(y0,y1) && x > STBTT_min(x0,x1)) { float x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0; if (x_inter < x) winding += (y0 < y1) ? 1 : -1; } } if (verts[i].type == STBTT_vcurve) { int x0 = (int) verts[i-1].x , y0 = (int) verts[i-1].y ; int x1 = (int) verts[i ].cx, y1 = (int) verts[i ].cy; int x2 = (int) verts[i ].x , y2 = (int) verts[i ].y ; int ax = STBTT_min(x0,STBTT_min(x1,x2)), ay = STBTT_min(y0,STBTT_min(y1,y2)); int by = STBTT_max(y0,STBTT_max(y1,y2)); if (y > ay && y < by && x > ax) { float q0[2],q1[2],q2[2]; float hits[2][2]; q0[0] = (float)x0; q0[1] = (float)y0; q1[0] = (float)x1; q1[1] = (float)y1; q2[0] = (float)x2; q2[1] = (float)y2; if (equal(q0,q1) || equal(q1,q2)) { x0 = (int)verts[i-1].x; y0 = (int)verts[i-1].y; x1 = (int)verts[i ].x; y1 = (int)verts[i ].y; if (y > STBTT_min(y0,y1) && y < STBTT_max(y0,y1) && x > STBTT_min(x0,x1)) { float x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0; if (x_inter < x) winding += (y0 < y1) ? 1 : -1; } } else { int num_hits = stbtt__ray_intersect_bezier(orig, ray, q0, q1, q2, hits); if (num_hits >= 1) if (hits[0][0] < 0) winding += (hits[0][1] < 0 ? -1 : 1); if (num_hits >= 2) if (hits[1][0] < 0) winding += (hits[1][1] < 0 ? -1 : 1); } } } } return winding; } static float stbtt__cuberoot( float x ) { if (x<0) return -(float) STBTT_pow(-x,1.0f/3.0f); else return (float) STBTT_pow( x,1.0f/3.0f); } // x^3 + c*x^2 + b*x + a = 0 static int stbtt__solve_cubic(float a, float b, float c, float* r) { float s = -a / 3; float p = b - a*a / 3; float q = a * (2*a*a - 9*b) / 27 + c; float p3 = p*p*p; float d = q*q + 4*p3 / 27; if (d >= 0) { float z = (float) STBTT_sqrt(d); float u = (-q + z) / 2; float v = (-q - z) / 2; u = stbtt__cuberoot(u); v = stbtt__cuberoot(v); r[0] = s + u + v; return 1; } else { float u = (float) STBTT_sqrt(-p/3); float v = (float) STBTT_acos(-STBTT_sqrt(-27/p3) * q / 2) / 3; // p3 must be negative, since d is negative float m = (float) STBTT_cos(v); float n = (float) STBTT_cos(v-3.141592/2)*1.732050808f; r[0] = s + u * 2 * m; r[1] = s - u * (m + n); r[2] = s - u * (m - n); //STBTT_assert( STBTT_fabs(((r[0]+a)*r[0]+b)*r[0]+c) < 0.05f); // these asserts may not be safe at all scales, though they're in bezier t parameter units so maybe? //STBTT_assert( STBTT_fabs(((r[1]+a)*r[1]+b)*r[1]+c) < 0.05f); //STBTT_assert( STBTT_fabs(((r[2]+a)*r[2]+b)*r[2]+c) < 0.05f); return 3; } } STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float scale, int glyph, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff) { float scale_x = scale, scale_y = scale; int ix0,iy0,ix1,iy1; int w,h; unsigned char *data; if (scale == 0) return NULL; stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale, scale, 0.0f,0.0f, &ix0,&iy0,&ix1,&iy1); // if empty, return NULL if (ix0 == ix1 || iy0 == iy1) return NULL; ix0 -= padding; iy0 -= padding; ix1 += padding; iy1 += padding; w = (ix1 - ix0); h = (iy1 - iy0); if (width ) *width = w; if (height) *height = h; if (xoff ) *xoff = ix0; if (yoff ) *yoff = iy0; // invert for y-downwards bitmaps scale_y = -scale_y; { int x,y,i,j; float *precompute; stbtt_vertex *verts; int num_verts = stbtt_GetGlyphShape(info, glyph, &verts); data = (unsigned char *) STBTT_malloc(w * h, info->userdata); precompute = (float *) STBTT_malloc(num_verts * sizeof(float), info->userdata); for (i=0,j=num_verts-1; i < num_verts; j=i++) { if (verts[i].type == STBTT_vline) { float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y; float x1 = verts[j].x*scale_x, y1 = verts[j].y*scale_y; float dist = (float) STBTT_sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0)); precompute[i] = (dist == 0) ? 0.0f : 1.0f / dist; } else if (verts[i].type == STBTT_vcurve) { float x2 = verts[j].x *scale_x, y2 = verts[j].y *scale_y; float x1 = verts[i].cx*scale_x, y1 = verts[i].cy*scale_y; float x0 = verts[i].x *scale_x, y0 = verts[i].y *scale_y; float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2; float len2 = bx*bx + by*by; if (len2 != 0.0f) precompute[i] = 1.0f / (bx*bx + by*by); else precompute[i] = 0.0f; } else precompute[i] = 0.0f; } for (y=iy0; y < iy1; ++y) { for (x=ix0; x < ix1; ++x) { float val; float min_dist = 999999.0f; float sx = (float) x + 0.5f; float sy = (float) y + 0.5f; float x_gspace = (sx / scale_x); float y_gspace = (sy / scale_y); int winding = stbtt__compute_crossings_x(x_gspace, y_gspace, num_verts, verts); // @OPTIMIZE: this could just be a rasterization, but needs to be line vs. non-tesselated curves so a new path for (i=0; i < num_verts; ++i) { float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y; // check against every point here rather than inside line/curve primitives -- @TODO: wrong if multiple 'moves' in a row produce a garbage point, and given culling, probably more efficient to do within line/curve float dist2 = (x0-sx)*(x0-sx) + (y0-sy)*(y0-sy); if (dist2 < min_dist*min_dist) min_dist = (float) STBTT_sqrt(dist2); if (verts[i].type == STBTT_vline) { float x1 = verts[i-1].x*scale_x, y1 = verts[i-1].y*scale_y; // coarse culling against bbox //if (sx > STBTT_min(x0,x1)-min_dist && sx < STBTT_max(x0,x1)+min_dist && // sy > STBTT_min(y0,y1)-min_dist && sy < STBTT_max(y0,y1)+min_dist) float dist = (float) STBTT_fabs((x1-x0)*(y0-sy) - (y1-y0)*(x0-sx)) * precompute[i]; STBTT_assert(i != 0); if (dist < min_dist) { // check position along line // x' = x0 + t*(x1-x0), y' = y0 + t*(y1-y0) // minimize (x'-sx)*(x'-sx)+(y'-sy)*(y'-sy) float dx = x1-x0, dy = y1-y0; float px = x0-sx, py = y0-sy; // minimize (px+t*dx)^2 + (py+t*dy)^2 = px*px + 2*px*dx*t + t^2*dx*dx + py*py + 2*py*dy*t + t^2*dy*dy // derivative: 2*px*dx + 2*py*dy + (2*dx*dx+2*dy*dy)*t, set to 0 and solve float t = -(px*dx + py*dy) / (dx*dx + dy*dy); if (t >= 0.0f && t <= 1.0f) min_dist = dist; } } else if (verts[i].type == STBTT_vcurve) { float x2 = verts[i-1].x *scale_x, y2 = verts[i-1].y *scale_y; float x1 = verts[i ].cx*scale_x, y1 = verts[i ].cy*scale_y; float box_x0 = STBTT_min(STBTT_min(x0,x1),x2); float box_y0 = STBTT_min(STBTT_min(y0,y1),y2); float box_x1 = STBTT_max(STBTT_max(x0,x1),x2); float box_y1 = STBTT_max(STBTT_max(y0,y1),y2); // coarse culling against bbox to avoid computing cubic unnecessarily if (sx > box_x0-min_dist && sx < box_x1+min_dist && sy > box_y0-min_dist && sy < box_y1+min_dist) { int num=0; float ax = x1-x0, ay = y1-y0; float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2; float mx = x0 - sx, my = y0 - sy; float res[3],px,py,t,it; float a_inv = precompute[i]; if (a_inv == 0.0) { // if a_inv is 0, it's 2nd degree so use quadratic formula float a = 3*(ax*bx + ay*by); float b = 2*(ax*ax + ay*ay) + (mx*bx+my*by); float c = mx*ax+my*ay; if (a == 0.0) { // if a is 0, it's linear if (b != 0.0) { res[num++] = -c/b; } } else { float discriminant = b*b - 4*a*c; if (discriminant < 0) num = 0; else { float root = (float) STBTT_sqrt(discriminant); res[0] = (-b - root)/(2*a); res[1] = (-b + root)/(2*a); num = 2; // don't bother distinguishing 1-solution case, as code below will still work } } } else { float b = 3*(ax*bx + ay*by) * a_inv; // could precompute this as it doesn't depend on sample point float c = (2*(ax*ax + ay*ay) + (mx*bx+my*by)) * a_inv; float d = (mx*ax+my*ay) * a_inv; num = stbtt__solve_cubic(b, c, d, res); } if (num >= 1 && res[0] >= 0.0f && res[0] <= 1.0f) { t = res[0], it = 1.0f - t; px = it*it*x0 + 2*t*it*x1 + t*t*x2; py = it*it*y0 + 2*t*it*y1 + t*t*y2; dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy); if (dist2 < min_dist * min_dist) min_dist = (float) STBTT_sqrt(dist2); } if (num >= 2 && res[1] >= 0.0f && res[1] <= 1.0f) { t = res[1], it = 1.0f - t; px = it*it*x0 + 2*t*it*x1 + t*t*x2; py = it*it*y0 + 2*t*it*y1 + t*t*y2; dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy); if (dist2 < min_dist * min_dist) min_dist = (float) STBTT_sqrt(dist2); } if (num >= 3 && res[2] >= 0.0f && res[2] <= 1.0f) { t = res[2], it = 1.0f - t; px = it*it*x0 + 2*t*it*x1 + t*t*x2; py = it*it*y0 + 2*t*it*y1 + t*t*y2; dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy); if (dist2 < min_dist * min_dist) min_dist = (float) STBTT_sqrt(dist2); } } } } if (winding == 0) min_dist = -min_dist; // if outside the shape, value is negative val = onedge_value + pixel_dist_scale * min_dist; if (val < 0) val = 0; else if (val > 255) val = 255; data[(y-iy0)*w+(x-ix0)] = (unsigned char) val; } } STBTT_free(precompute, info->userdata); STBTT_free(verts, info->userdata); } return data; } STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, float scale, int codepoint, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff) { return stbtt_GetGlyphSDF(info, scale, stbtt_FindGlyphIndex(info, codepoint), padding, onedge_value, pixel_dist_scale, width, height, xoff, yoff); } STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata) { STBTT_free(bitmap, userdata); } ////////////////////////////////////////////////////////////////////////////// // // font name matching -- recommended not to use this // // check if a utf8 string contains a prefix which is the utf16 string; if so return length of matching utf8 string static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(stbtt_uint8 *s1, stbtt_int32 len1, stbtt_uint8 *s2, stbtt_int32 len2) { stbtt_int32 i=0; // convert utf16 to utf8 and compare the results while converting while (len2) { stbtt_uint16 ch = s2[0]*256 + s2[1]; if (ch < 0x80) { if (i >= len1) return -1; if (s1[i++] != ch) return -1; } else if (ch < 0x800) { if (i+1 >= len1) return -1; if (s1[i++] != 0xc0 + (ch >> 6)) return -1; if (s1[i++] != 0x80 + (ch & 0x3f)) return -1; } else if (ch >= 0xd800 && ch < 0xdc00) { stbtt_uint32 c; stbtt_uint16 ch2 = s2[2]*256 + s2[3]; if (i+3 >= len1) return -1; c = ((ch - 0xd800) << 10) + (ch2 - 0xdc00) + 0x10000; if (s1[i++] != 0xf0 + (c >> 18)) return -1; if (s1[i++] != 0x80 + ((c >> 12) & 0x3f)) return -1; if (s1[i++] != 0x80 + ((c >> 6) & 0x3f)) return -1; if (s1[i++] != 0x80 + ((c ) & 0x3f)) return -1; s2 += 2; // plus another 2 below len2 -= 2; } else if (ch >= 0xdc00 && ch < 0xe000) { return -1; } else { if (i+2 >= len1) return -1; if (s1[i++] != 0xe0 + (ch >> 12)) return -1; if (s1[i++] != 0x80 + ((ch >> 6) & 0x3f)) return -1; if (s1[i++] != 0x80 + ((ch ) & 0x3f)) return -1; } s2 += 2; len2 -= 2; } return i; } static int stbtt_CompareUTF8toUTF16_bigendian_internal(char *s1, int len1, char *s2, int len2) { return len1 == stbtt__CompareUTF8toUTF16_bigendian_prefix((stbtt_uint8*) s1, len1, (stbtt_uint8*) s2, len2); } // returns results in whatever encoding you request... but note that 2-byte encodings // will be BIG-ENDIAN... use stbtt_CompareUTF8toUTF16_bigendian() to compare STBTT_DEF const char *stbtt_GetFontNameString(const stbtt_fontinfo *font, int *length, int platformID, int encodingID, int languageID, int nameID) { stbtt_int32 i,count,stringOffset; stbtt_uint8 *fc = font->data; stbtt_uint32 offset = font->fontstart; stbtt_uint32 nm = stbtt__find_table(fc, offset, "name"); if (!nm) return NULL; count = ttUSHORT(fc+nm+2); stringOffset = nm + ttUSHORT(fc+nm+4); for (i=0; i < count; ++i) { stbtt_uint32 loc = nm + 6 + 12 * i; if (platformID == ttUSHORT(fc+loc+0) && encodingID == ttUSHORT(fc+loc+2) && languageID == ttUSHORT(fc+loc+4) && nameID == ttUSHORT(fc+loc+6)) { *length = ttUSHORT(fc+loc+8); return (const char *) (fc+stringOffset+ttUSHORT(fc+loc+10)); } } return NULL; } static int stbtt__matchpair(stbtt_uint8 *fc, stbtt_uint32 nm, stbtt_uint8 *name, stbtt_int32 nlen, stbtt_int32 target_id, stbtt_int32 next_id) { stbtt_int32 i; stbtt_int32 count = ttUSHORT(fc+nm+2); stbtt_int32 stringOffset = nm + ttUSHORT(fc+nm+4); for (i=0; i < count; ++i) { stbtt_uint32 loc = nm + 6 + 12 * i; stbtt_int32 id = ttUSHORT(fc+loc+6); if (id == target_id) { // find the encoding stbtt_int32 platform = ttUSHORT(fc+loc+0), encoding = ttUSHORT(fc+loc+2), language = ttUSHORT(fc+loc+4); // is this a Unicode encoding? if (platform == 0 || (platform == 3 && encoding == 1) || (platform == 3 && encoding == 10)) { stbtt_int32 slen = ttUSHORT(fc+loc+8); stbtt_int32 off = ttUSHORT(fc+loc+10); // check if there's a prefix match stbtt_int32 matchlen = stbtt__CompareUTF8toUTF16_bigendian_prefix(name, nlen, fc+stringOffset+off,slen); if (matchlen >= 0) { // check for target_id+1 immediately following, with same encoding & language if (i+1 < count && ttUSHORT(fc+loc+12+6) == next_id && ttUSHORT(fc+loc+12) == platform && ttUSHORT(fc+loc+12+2) == encoding && ttUSHORT(fc+loc+12+4) == language) { slen = ttUSHORT(fc+loc+12+8); off = ttUSHORT(fc+loc+12+10); if (slen == 0) { if (matchlen == nlen) return 1; } else if (matchlen < nlen && name[matchlen] == ' ') { ++matchlen; if (stbtt_CompareUTF8toUTF16_bigendian_internal((char*) (name+matchlen), nlen-matchlen, (char*)(fc+stringOffset+off),slen)) return 1; } } else { // if nothing immediately following if (matchlen == nlen) return 1; } } } // @TODO handle other encodings } } return 0; } static int stbtt__matches(stbtt_uint8 *fc, stbtt_uint32 offset, stbtt_uint8 *name, stbtt_int32 flags) { stbtt_int32 nlen = (stbtt_int32) STBTT_strlen((char *) name); stbtt_uint32 nm,hd; if (!stbtt__isfont(fc+offset)) return 0; // check italics/bold/underline flags in macStyle... if (flags) { hd = stbtt__find_table(fc, offset, "head"); if ((ttUSHORT(fc+hd+44) & 7) != (flags & 7)) return 0; } nm = stbtt__find_table(fc, offset, "name"); if (!nm) return 0; if (flags) { // if we checked the macStyle flags, then just check the family and ignore the subfamily if (stbtt__matchpair(fc, nm, name, nlen, 16, -1)) return 1; if (stbtt__matchpair(fc, nm, name, nlen, 1, -1)) return 1; if (stbtt__matchpair(fc, nm, name, nlen, 3, -1)) return 1; } else { if (stbtt__matchpair(fc, nm, name, nlen, 16, 17)) return 1; if (stbtt__matchpair(fc, nm, name, nlen, 1, 2)) return 1; if (stbtt__matchpair(fc, nm, name, nlen, 3, -1)) return 1; } return 0; } static int stbtt_FindMatchingFont_internal(unsigned char *font_collection, char *name_utf8, stbtt_int32 flags) { stbtt_int32 i; for (i=0;;++i) { stbtt_int32 off = stbtt_GetFontOffsetForIndex(font_collection, i); if (off < 0) return off; if (stbtt__matches((stbtt_uint8 *) font_collection, off, (stbtt_uint8*) name_utf8, flags)) return off; } } #if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wcast-qual" #endif STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, float pixel_height, unsigned char *pixels, int pw, int ph, int first_char, int num_chars, stbtt_bakedchar *chardata) { return stbtt_BakeFontBitmap_internal((unsigned char *) data, offset, pixel_height, pixels, pw, ph, first_char, num_chars, chardata); } STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *data, int index) { return stbtt_GetFontOffsetForIndex_internal((unsigned char *) data, index); } STBTT_DEF int stbtt_GetNumberOfFonts(const unsigned char *data) { return stbtt_GetNumberOfFonts_internal((unsigned char *) data); } STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data, int offset) { return stbtt_InitFont_internal(info, (unsigned char *) data, offset); } STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *fontdata, const char *name, int flags) { return stbtt_FindMatchingFont_internal((unsigned char *) fontdata, (char *) name, flags); } STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2) { return stbtt_CompareUTF8toUTF16_bigendian_internal((char *) s1, len1, (char *) s2, len2); } #if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic pop #endif #endif // STB_TRUETYPE_IMPLEMENTATION // FULL VERSION HISTORY // // 1.19 (2018-02-11) OpenType GPOS kerning (horizontal only), STBTT_fmod // 1.18 (2018-01-29) add missing function // 1.17 (2017-07-23) make more arguments const; doc fix // 1.16 (2017-07-12) SDF support // 1.15 (2017-03-03) make more arguments const // 1.14 (2017-01-16) num-fonts-in-TTC function // 1.13 (2017-01-02) support OpenType fonts, certain Apple fonts // 1.12 (2016-10-25) suppress warnings about casting away const with -Wcast-qual // 1.11 (2016-04-02) fix unused-variable warning // 1.10 (2016-04-02) allow user-defined fabs() replacement // fix memory leak if fontsize=0.0 // fix warning from duplicate typedef // 1.09 (2016-01-16) warning fix; avoid crash on outofmem; use alloc userdata for PackFontRanges // 1.08 (2015-09-13) document stbtt_Rasterize(); fixes for vertical & horizontal edges // 1.07 (2015-08-01) allow PackFontRanges to accept arrays of sparse codepoints; // allow PackFontRanges to pack and render in separate phases; // fix stbtt_GetFontOFfsetForIndex (never worked for non-0 input?); // fixed an assert() bug in the new rasterizer // replace assert() with STBTT_assert() in new rasterizer // 1.06 (2015-07-14) performance improvements (~35% faster on x86 and x64 on test machine) // also more precise AA rasterizer, except if shapes overlap // remove need for STBTT_sort // 1.05 (2015-04-15) fix misplaced definitions for STBTT_STATIC // 1.04 (2015-04-15) typo in example // 1.03 (2015-04-12) STBTT_STATIC, fix memory leak in new packing, various fixes // 1.02 (2014-12-10) fix various warnings & compile issues w/ stb_rect_pack, C++ // 1.01 (2014-12-08) fix subpixel position when oversampling to exactly match // non-oversampled; STBTT_POINT_SIZE for packed case only // 1.00 (2014-12-06) add new PackBegin etc. API, w/ support for oversampling // 0.99 (2014-09-18) fix multiple bugs with subpixel rendering (ryg) // 0.9 (2014-08-07) support certain mac/iOS fonts without an MS platformID // 0.8b (2014-07-07) fix a warning // 0.8 (2014-05-25) fix a few more warnings // 0.7 (2013-09-25) bugfix: subpixel glyph bug fixed in 0.5 had come back // 0.6c (2012-07-24) improve documentation // 0.6b (2012-07-20) fix a few more warnings // 0.6 (2012-07-17) fix warnings; added stbtt_ScaleForMappingEmToPixels, // stbtt_GetFontBoundingBox, stbtt_IsGlyphEmpty // 0.5 (2011-12-09) bugfixes: // subpixel glyph renderer computed wrong bounding box // first vertex of shape can be off-curve (FreeSans) // 0.4b (2011-12-03) fixed an error in the font baking example // 0.4 (2011-12-01) kerning, subpixel rendering (tor) // bugfixes for: // codepoint-to-glyph conversion using table fmt=12 // codepoint-to-glyph conversion using table fmt=4 // stbtt_GetBakedQuad with non-square texture (Zer) // updated Hello World! sample to use kerning and subpixel // fixed some warnings // 0.3 (2009-06-24) cmap fmt=12, compound shapes (MM) // userdata, malloc-from-userdata, non-zero fill (stb) // 0.2 (2009-03-11) Fix unsigned/signed char warnings // 0.1 (2009-03-09) First public release // /* ------------------------------------------------------------------------------ This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------ ALTERNATIVE A - MIT License Copyright (c) 2017 Sean Barrett Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------ ALTERNATIVE B - Public Domain (www.unlicense.org) This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------ */vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/controller.cpp000066400000000000000000000322311461511344300254340ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Examples // Filename : public.sdk/samples/vst/dataexchange/controller.cpp // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Example // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "shared.h" #include "vstgui/lib/cexternalview.h" #include "vstgui/lib/cvstguitimer.h" #include "vstgui/lib/iviewlistener.h" #include "vstgui/plugin-bindings/vst3editor.h" #include "waveformview.h" #include "public.sdk/source/vst/utility/dataexchange.h" #include "public.sdk/source/vst/utility/ringbuffer.h" #include "public.sdk/source/vst/utility/rttransfer.h" #include "public.sdk/source/vst/vsteditcontroller.h" #include "pluginterfaces/base/funknownimpl.h" #include #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { using namespace VSTGUI; //------------------------------------------------------------------------ struct DataExchangeController : EditController, IDataExchangeReceiver, VST3EditorDelegate, ViewListenerAdapter { //---Interface--------- OBJ_METHODS (DataExchangeController, EditController) DEFINE_INTERFACES DEF_INTERFACE (IDataExchangeReceiver) END_DEFINE_INTERFACES (EditController) REFCOUNT_METHODS (EditController) using Mutex = std::mutex; using LockGuard = std::lock_guard; using AudioBufferDataQueue = OneReaderOneWriter::RingBuffer; DataExchangeReceiverHandler dataExchange {this}; uint32 numOpenEditors {0}; std::vector peakImageViews; AudioBufferData currentAudioBufferData {}; uint32 currentAudioBufferCounter {0u}; std::atomic pixelsPerMillisecond {1.f}; std::unique_ptr viewManager; SharedPointer fpsCheckTimer; bool autoReEnableDataExchange {true}; enum { UITagStart = 10000, UITagPeakLeft = 0, UITagPeakRight, UITagDisplayFreq, UITagForceMessageHandling, UITagFPSDisplay, UITagAutoReenableDataExchange }; std::vector> uiOnlyParameters; WaveformViewManager& getViewManager () { if (!viewManager) { viewManager = std::make_unique (SystemTime (getComponentHandler ())); } return *viewManager.get (); } tresult PLUGIN_API initialize (FUnknown* context) override { auto res = EditController::initialize (context); if (res == kResultTrue) { parameters.addParameter (STR ("Enable Data Exchange"), STR ("On/Off"), 1, 0., Vst::ParameterInfo::kIsHidden, ParamIDEnableDataExchange, 0, STR ("DataExchange")); // UI only parameters auto param = owned (new Parameter (STR ("PeakLeft"), UITagPeakLeft + UITagStart)); param->setPrecision (2); uiOnlyParameters.push_back (param); param = owned (new Parameter (STR ("PeakRight"), UITagPeakRight + UITagStart)); param->setPrecision (2); uiOnlyParameters.push_back (param); param = owned (new RangeParameter (STR ("Display Freq"), UITagDisplayFreq + UITagStart, nullptr, 0.01, 10, 1.)); param->setPrecision (2); param->setNormalized (param->toNormalized (pixelsPerMillisecond)); uiOnlyParameters.push_back (param); auto strListParam = owned (new StringListParameter ( STR ("Force Message Handling"), UITagForceMessageHandling + UITagStart)); strListParam->appendString (STR ("Off")); strListParam->appendString (STR ("On")); uiOnlyParameters.push_back (strListParam); param = owned (new RangeParameter (STR ("FPS"), UITagFPSDisplay + UITagStart, nullptr, 0, 10000, 0.)); param->setPrecision (0); uiOnlyParameters.push_back (param); strListParam = owned (new StringListParameter ( STR ("Auto Reenable Data Exchange"), UITagAutoReenableDataExchange + UITagStart)); strListParam->appendString (STR ("Off")); strListParam->appendString (STR ("On")); strListParam->setNormalized (autoReEnableDataExchange ? 1. : 0.); uiOnlyParameters.push_back (strListParam); } return res; } tresult PLUGIN_API terminate () override { viewManager.reset (); return EditController::terminate (); } tresult PLUGIN_API notify (IMessage* message) override { if (dataExchange.onMessage (message)) return kResultTrue; return EditController::notify (message); } void PLUGIN_API queueOpened (DataExchangeUserContextID userContextID, uint32 blockSize, TBool& dispatchOnBackgroundThread) override { dispatchOnBackgroundThread = userContextID == SampleBufferQueueID; } void PLUGIN_API queueClosed (DataExchangeUserContextID userContextID) override {} void PLUGIN_API onDataExchangeBlocksReceived (DataExchangeUserContextID userContextID, uint32 numBlocks, DataExchangeBlock* block, TBool onBackgroundThread) override { if (userContextID == SampleBufferQueueID) { // assert (onBackgroundThread == true); for (auto idx = 0u; idx < numBlocks; ++idx) { const auto& data = getSampleBufferExchangeData (block[idx]); // n * pixel per millisecond auto numSamplesPerPixel = static_cast (std::ceil (data.sampleRate / 1000 * pixelsPerMillisecond)); if (currentAudioBufferData.peak.size () < data.numChannels) { currentAudioBufferData.systemTime = data.systemTime; currentAudioBufferData.sampleRate = data.sampleRate; currentAudioBufferData.peak.resize (data.numChannels); std::fill (currentAudioBufferData.peak.begin (), currentAudioBufferData.peak.end (), PeakValue ()); } auto sampleCounter = 0; while (sampleCounter < data.numSamples) { auto numSamples = std::min (numSamplesPerPixel - currentAudioBufferCounter, data.numSamples - sampleCounter); for (auto channel = 0u; channel < data.numChannels; ++channel) { for (auto sampleIdx = 0u; sampleIdx < numSamples; ++sampleIdx) { auto sample = data.sampleData[sampleDataOffsetForChannel ( channel, data.numSamples) + sampleCounter + sampleIdx]; if (currentAudioBufferData.peak[channel].min > sample) currentAudioBufferData.peak[channel].min = sample; if (currentAudioBufferData.peak[channel].max < sample) currentAudioBufferData.peak[channel].max = sample; } } sampleCounter += numSamples; currentAudioBufferCounter += numSamples; if (currentAudioBufferCounter >= numSamplesPerPixel) { getViewManager ().pushAudioBufferData (std::move (currentAudioBufferData)); currentAudioBufferData.systemTime = data.systemTime; currentAudioBufferData.sampleRate = data.sampleRate; currentAudioBufferData.peak.resize (data.numChannels); std::fill (currentAudioBufferData.peak.begin (), currentAudioBufferData.peak.end (), PeakValue ()); currentAudioBufferCounter = 0; } } } getViewManager ().renderIfNeeded (); } } Parameter* getParameterObject (ParamID tag) override { if (tag >= UITagStart) { tag -= UITagStart; if (tag <= uiOnlyParameters.size ()) return uiOnlyParameters[tag]; return nullptr; } return EditController::getParameterObject (tag); } tresult beginEdit (ParamID tag) override { if (tag >= UITagStart) return kResultTrue; return EditController::beginEdit (tag); } tresult performEdit (ParamID tag, ParamValue valueNormalized) override { if (tag >= UITagStart) { tag -= UITagStart; if (tag == UITagDisplayFreq) { auto value = uiOnlyParameters[UITagDisplayFreq]->toPlain (valueNormalized); pixelsPerMillisecond = value; } else if (tag == UITagForceMessageHandling) { if (auto msg = owned (allocateMessage ())) { msg->setMessageID (MessageIDForceMessageHandling); if (auto attributes = msg->getAttributes ()) { attributes->setInt (MessageKeyValue, valueNormalized > 0.5 ? 1 : 0); sendMessage (msg); } } } else if (tag == UITagAutoReenableDataExchange) { autoReEnableDataExchange = valueNormalized > 0.5; if (autoReEnableDataExchange) enableDataExchange (true); } return kResultTrue; } return EditController::performEdit (tag, valueNormalized); } tresult endEdit (ParamID tag) override { if (tag >= UITagStart) return kResultTrue; return EditController::endEdit (tag); } void enableDataExchange (bool state) { beginEdit (ParamIDEnableDataExchange); if (auto param = getParameterObject (ParamIDEnableDataExchange)) param->setNormalized (state ? 1. : 0); performEdit (ParamIDEnableDataExchange, state ? 1. : 0.); endEdit (ParamIDEnableDataExchange); } tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) override { auto result = EditController::setParamNormalized (tag, value); if (numOpenEditors > 0 && tag == ParamIDEnableDataExchange) { if (autoReEnableDataExchange && value < 0.5) enableDataExchange (true); } return result; } IPlugView* PLUGIN_API createView (const char* _name) override { std::string_view name (_name); if (name == ViewType::kEditor) { auto* view = new VST3Editor (this, "view", "editor.uidesc"); return view; } return nullptr; } void editorAttached (EditorView* /*editor*/) override { if (++numOpenEditors == 1) { // start streaming realtime audio when an editor is open enableDataExchange (true); fpsCheckTimer = VSTGUI::makeOwned ( [this] (auto) { auto fps = getViewManager ().getFramesPerSeconds (); if (auto param = getParameterObject (UITagFPSDisplay + UITagStart)) { param->setNormalized (param->toNormalized (fps)); } }, 1000); } } void editorRemoved (EditorView* /*editor*/) override { if (--numOpenEditors == 0) { // stop streaming realtime audio when all editors are closed enableDataExchange (false); fpsCheckTimer = nullptr; } } void viewWillDelete (CView* view) override { auto it = std::find (peakImageViews.begin (), peakImageViews.end (), view); if (it != peakImageViews.end ()) { view->unregisterViewListener (this); peakImageViews.erase (it); } } CView* createCustomView (UTF8StringPtr name, const UIAttributes& attributes, const IUIDescription* description, VST3Editor* editor) override { if (std::string_view (name) == "PeakImageView") { CColor leftChannelColor = {255, 0, 0, 255}; CColor rightChannelColor = {0, 255, 0, 128}; description->getColor ("waveform.left", leftChannelColor); description->getColor ("waveform.right", rightChannelColor); if (auto view = getViewManager ().createNewView (leftChannelColor, rightChannelColor)) { peakImageViews.push_back (view); view->registerViewListener (this); return view; } } return nullptr; } }; //------------------------------------------------------------------------ FUnknown* createDataExchangeController (void*) { return static_cast (new DataExchangeController); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/factory.cpp000066400000000000000000000064521461511344300247260ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Examples // Filename : public.sdk/samples/vst/dataexchange/factory.cpp // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Example // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "shared.h" #include "version.h" // for versioning #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" //------------------------------------------------------------------------ #include "public.sdk/source/main/pluginfactory_constexpr.h" #define stringPluginName "DataExchange" BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail, 2) DEF_CLASS (Steinberg::Vst::DataExchangeProcessorUID, // Steinberg::PClassInfo::kManyInstances, // kVstAudioEffectClass, // stringPluginName, // Steinberg::Vst::kDistributable, // "Fx", // FULL_VERSION_STR, // kVstVersionString, // Steinberg::Vst::createDataExchangeProcessor, // nullptr) DEF_CLASS (Steinberg::Vst::DataExchangeControllerUID, // Steinberg::PClassInfo::kManyInstances, // kVstComponentControllerClass, // stringPluginName "Controller", // 0, // "", // FULL_VERSION_STR, // kVstVersionString, // Steinberg::Vst::createDataExchangeController, // nullptr) END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/processor.cpp000066400000000000000000000316401461511344300252730ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Examples // Filename : public.sdk/samples/vst/dataexchange/processor.cpp // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Example // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "shared.h" #include "public.sdk/source/vst/utility/dataexchange.h" #include "public.sdk/source/vst/vstaudioeffect.h" #include "pluginterfaces/base/funknownimpl.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/ivstprocesscontext.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { static constexpr DataExchangeBlock InvalidDataExchangeBlock = {nullptr, 0, InvalidDataExchangeBlockID}; //------------------------------------------------------------------------ template struct ExchangeDataProcessor : DataExchangeHandler { using Base = ExchangeDataProcessor; private: DataExchangeBlock currentBlock {InvalidDataExchangeBlock}; protected: int32 displayLatency {0}; virtual DataExchangeUserContextID getUserContextID () const = 0; virtual uint32 getQueueBlockSize (SampleRate sampleRate) const = 0; virtual uint32 getNumQueueBlocks () const = 0; virtual void onNewLockedBlock () = 0; virtual void onOpen (SampleRate sr) = 0; public: ExchangeDataProcessor (IAudioProcessor* processor) : DataExchangeHandler (processor, [this] (auto& config, const auto& setup) { onOpen (setup.sampleRate); config.blockSize = getQueueBlockSize (setup.sampleRate); config.numBlocks = getNumQueueBlocks (); config.alignment = blockAlignment; config.userContextID = getUserContextID (); return true; }) { } void setDisplayLatency (int32 latency) { displayLatency = latency; } protected: bool lockBlock () { if (!isEnabled ()) return false; return getCurrentData () != nullptr; } void freeBlock (bool send = true) { if (!isEnabled ()) return; if (send) sendCurrentBlock (); else discardCurrentBlock (); currentBlock.blockID = InvalidDataExchangeBlockID; } ExchangeDataT* getCurrentData () { auto block = getCurrentOrNewBlock (); if (block.blockID == InvalidDataExchangeBlockID) return nullptr; if (currentBlock != block) { currentBlock = block; onNewLockedBlock (); } return reinterpret_cast (currentBlock.data); } }; //------------------------------------------------------------------------ struct AudioBlockExchangeProcessor : ExchangeDataProcessor { private: uint32 numFilled {0}; uint32 numSamplesToSend {0}; float* left {nullptr}; float* right {nullptr}; public: using Base::Base; uint32 calcNumSamplesToSend (SampleRate sampleRate) const { return sampleRate / 120; // 120 Hz } DataExchangeUserContextID getUserContextID () const override { return SampleBufferQueueID; } void onOpen (SampleRate sampleRate) override { numSamplesToSend = calcNumSamplesToSend (sampleRate); } uint32 getQueueBlockSize (SampleRate sampleRate) const override { return calculateExampleDataSizeForSamples (calcNumSamplesToSend (sampleRate), 2); } uint32 getNumQueueBlocks () const override { return 32; } void onNewLockedBlock () override { auto data = getCurrentData (); assert (data); *data = {}; // initialize with default data->numSamples = numSamplesToSend; left = &data->sampleData[0]; right = &data->sampleData[sampleDataOffsetForChannel (1, numSamplesToSend)]; numFilled = 0; } bool onProcess (const ProcessData& processData) { if (!isEnabled ()) return true; auto data = getCurrentData (); if (!data) return true; float* outputLeft = processData.outputs[0].channelBuffers32[0]; float* outputRight = processData.outputs[0].channelBuffers32[1]; auto numSamples = static_cast (processData.numSamples); while (numSamples > 0) { auto numSamplesFreeInBlock = numSamplesToSend - numFilled; auto numSamplesToCopy = std::min (numSamplesFreeInBlock, numSamples); memcpy (left, outputLeft, numSamplesToCopy * sizeof (float)); memcpy (right, outputRight, numSamplesToCopy * sizeof (float)); numFilled += numSamplesToCopy; numSamples -= numSamplesToCopy; left += numSamplesToCopy; right += numSamplesToCopy; outputLeft += numSamplesToCopy; outputRight += numSamplesToCopy; if (numFilled == numSamplesToSend) { data->numChannels = 2; data->sampleRate = processData.processContext->sampleRate; data->systemTime = processData.processContext->systemTime; freeBlock (); if (!lockBlock ()) return false; data = getCurrentData (); if (data == nullptr) return false; } } return true; } }; //------------------------------------------------------------------------ struct DataExchangeProcessor : AudioEffect, IAudioPresentationLatency { OBJ_METHODS (DataExchangeProcessor, AudioEffect) DEFINE_INTERFACES DEF_INTERFACE (IAudioPresentationLatency) END_DEFINE_INTERFACES (AudioEffect) REFCOUNT_METHODS (AudioEffect) //--- --------------------------------------------------------------------- AudioBlockExchangeProcessor audioBlockProcessor {this}; bool enableDataExchange {false}; bool firstProcessCall {true}; static bool forceUseMessageHandling; //--- --------------------------------------------------------------------- DataExchangeProcessor () { setControllerClass (DataExchangeControllerUID); processContextRequirements.needSystemTime (); } //--- --------------------------------------------------------------------- tresult PLUGIN_API initialize (FUnknown* context) override { auto res = AudioEffect::initialize (context); if (res == kResultTrue) { addAudioInput (STR16 ("AudioInput"), Vst::SpeakerArr::kStereo); addAudioOutput (STR16 ("AudioOutput"), Vst::SpeakerArr::kStereo); } return res; } //--- --------------------------------------------------------------------- tresult PLUGIN_API terminate () override { return AudioEffect::terminate (); } //--- --------------------------------------------------------------------- tresult PLUGIN_API connect (IConnectionPoint* other) override { auto res = AudioEffect::connect (other); audioBlockProcessor.onConnect (other, getHostContext ()); return res; } //--- --------------------------------------------------------------------- tresult PLUGIN_API disconnect (IConnectionPoint* other) override { audioBlockProcessor.onDisconnect (other); return AudioEffect::disconnect (other); } //--- --------------------------------------------------------------------- tresult PLUGIN_API notify (IMessage* message) override { if (std::string_view (MessageIDForceMessageHandling) == message->getMessageID ()) { if (auto attributes = message->getAttributes ()) { int64 value; if (attributes->getInt (MessageKeyValue, value) == kResultTrue) { forceUseMessageHandling = value; } } } return AudioEffect::notify (message); } //--- --------------------------------------------------------------------- tresult PLUGIN_API setBusArrangements (Vst::SpeakerArrangement* inputs, int32 numIns, Vst::SpeakerArrangement* outputs, int32 numOuts) override { if (numIns == numOuts && numIns == 1 && inputs[0] == outputs[0] && inputs[0] == SpeakerArr::kStereo) { return AudioEffect::setBusArrangements (inputs, numIns, outputs, numOuts); } return kResultFalse; } //--- --------------------------------------------------------------------- tresult PLUGIN_API setAudioPresentationLatencySamples (BusDirection dir, int32 busIndex, uint32 latencyInSamples) override { if (dir == BusDirections::kOutput && busIndex == 0) { audioBlockProcessor.setDisplayLatency (latencyInSamples); } return kResultTrue; } //--- --------------------------------------------------------------------- tresult PLUGIN_API setActive (TBool state) override { if (state) { audioBlockProcessor.onActivate (processSetup, forceUseMessageHandling); firstProcessCall = true; } else { audioBlockProcessor.onDeactivate (); } return AudioEffect::setActive (state); } //--- --------------------------------------------------------------------- void processParameterChange (IParamValueQueue* queue) { int32 pointCount = queue->getPointCount (); ParamID paramID = queue->getParameterId (); if (pointCount <= 0) return; ParamValue value; int32 sampleOffset; if (queue->getPoint (pointCount - 1, sampleOffset, value) != kResultTrue) return; switch (paramID) { case ParamIDEnableDataExchange: { enableDataExchange = value > 0.5; if (audioBlockProcessor.isEnabled () != enableDataExchange) audioBlockProcessor.enable (enableDataExchange); break; } } } //--- --------------------------------------------------------------------- void processInputParameterChanges (IParameterChanges* changes) { int32 numParamsChanged = changes->getParameterCount (); for (int32 index = 0; index < numParamsChanged; index++) { if (auto paramQueue = changes->getParameterData (index)) processParameterChange (paramQueue); } } //--- --------------------------------------------------------------------- void stopDataExchange (ProcessData* data) { audioBlockProcessor.enable (false); if (data) { if (auto paramChanges = data->outputParameterChanges) { int32 index; if (auto queue = paramChanges->addParameterData (ParamIDEnableDataExchange, index)) { queue->addPoint (0, 0., index); } } } } //--- --------------------------------------------------------------------- tresult PLUGIN_API process (ProcessData& data) override { if (data.inputParameterChanges) processInputParameterChanges (data.inputParameterChanges); if (firstProcessCall) { firstProcessCall = false; audioBlockProcessor.enable (enableDataExchange); } if (data.numSamples) { for (int32 channel = 0; channel < data.inputs[0].numChannels; channel++) { float* inputChannel = data.inputs[0].channelBuffers32[channel]; float* outputChannel = data.outputs[0].channelBuffers32[channel]; if (inputChannel == outputChannel) continue; for (auto sample = 0; sample < data.numSamples; ++sample) { auto inputSample = inputChannel[sample]; outputChannel[sample] = inputSample; } data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; } if (enableDataExchange) { auto res = !audioBlockProcessor.onProcess (data); // check overflow and stop if necessary if (res) stopDataExchange (&data); } } return kResultTrue; } }; bool DataExchangeProcessor::forceUseMessageHandling = false; //------------------------------------------------------------------------ FUnknown* createDataExchangeProcessor (void*) { return static_cast (new DataExchangeProcessor); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/shared.h000066400000000000000000000105111461511344300241610ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Examples // Filename : public.sdk/samples/vst/dataexchange/shared.h // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Example // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/funknown.h" #include "pluginterfaces/vst/ivstdataexchange.h" #include "pluginterfaces/vst/vsttypes.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ static DECLARE_UID (DataExchangeProcessorUID, 0x2AF3DF1C, 0x93D243B3, 0xBA13E61C, 0xDCFDAC5D); static DECLARE_UID (DataExchangeControllerUID, 0xB49E781B, 0xED8F486F, 0x85D4306E, 0x2C6207A0); //------------------------------------------------------------------------ FUnknown* createDataExchangeProcessor (void*); FUnknown* createDataExchangeController (void*); //------------------------------------------------------------------------ static SMTG_CONSTEXPR ParamID ParamIDEnableDataExchange = 1; //------------------------------------------------------------------------ static SMTG_CONSTEXPR auto MessageIDForceMessageHandling = "ForceMessageHandling"; static SMTG_CONSTEXPR auto MessageKeyValue = "Value"; //------------------------------------------------------------------------ static SMTG_CONSTEXPR DataExchangeUserContextID SampleBufferQueueID = 2; //------------------------------------------------------------------------ struct SampleBufferExchangeData { int64 systemTime; SampleRate sampleRate; uint32 numChannels; uint32 numSamples; float sampleData[1]; // variable size }; //------------------------------------------------------------------------ inline SampleBufferExchangeData& getSampleBufferExchangeData (const DataExchangeBlock& block) { return *reinterpret_cast (block.data); } //------------------------------------------------------------------------ inline uint32 calculateExampleDataSizeForSamples (uint32 numSamples, uint32 numChannels) { return sizeof (SampleBufferExchangeData) + ((sizeof (float) * numSamples) * numChannels); } //------------------------------------------------------------------------ inline uint32 sampleDataOffsetForChannel (uint32 channel, uint32 numSamplesInBuffer) { return numSamplesInBuffer * channel; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/version.h000066400000000000000000000054271461511344300244120ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/dataexchange/source/version.h // Created by : Steinberg, 06/2023 // Description : Versioning and copyright info for the data-exchange example plug-in // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "DataExchange.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "DataExchange VST3-SDK (64Bit)" #else #define stringFileDescription "DataExchange VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/waveformview.cpp000066400000000000000000000204301461511344300257700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Examples // Filename : public.sdk/samples/vst/dataexchange/waveformview.cpp // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Example // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "waveformview.h" #include "vstgui/lib/cframe.h" #include "vstgui/lib/iviewlistener.h" #include "nanovg.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { using namespace VSTGUI; //------------------------------------------------------------------------ struct ViewAndContext { CExternalView* view {nullptr}; NVGcontext* context {nullptr}; CColor leftColor {kRedCColor}; CColor rightColor {kGreenCColor}; WaveformViewManager::DrawCallbackToken callbackToken {}; }; //------------------------------------------------------------------------ struct WaveformViewManager::Impl : ViewListenerAdapter { AudioBufferDataQueue& _audioBufferDataQueue; std::deque _audioPeakValues {1000}; std::deque _audioPeakFutureValues; std::vector views; using Mutex = std::recursive_mutex; using LockGuard = std::lock_guard; Mutex peakValueMutex; int64 _lastRenderTimer {-1}; FramesPerSeconds fps; Impl (AudioBufferDataQueue& dataQueue) : _audioBufferDataQueue (dataQueue) {} void viewWillDelete (CView* view) override { auto it = std::find_if (views.begin (), views.end (), [&] (const auto& el) { return el.view == view; }); if (it == views.end ()) return; view->unregisterViewListener (this); releaseNanoVGContext (it->context); views.erase (it); } void viewAttached (CView* view) override { auto it = std::find_if (views.begin (), views.end (), [&] (const auto& el) { return el.view == view; }); if (it == views.end ()) return; it->callbackToken = RenderThreadManager::instance ().registerDrawCallback ( [this, context = *it] () { render (context); }); } void viewRemoved (CView* view) override { auto it = std::find_if (views.begin (), views.end (), [&] (const auto& el) { return el.view == view; }); if (it == views.end ()) return; RenderThreadManager::instance ().unregisterDrawCallback (it->callbackToken); } void addView (ViewAndContext&& ctx) { ctx.view->registerViewListener (this); views.emplace_back (std::move (ctx)); } void render (const ViewAndContext& view) { if (!preRender (view.view, view.context)) return; LockGuard g (peakValueMutex); auto devicePixelRatio = 1.; devicePixelRatio = view.view->getFrame ()->getScaleFactor (); auto size = view.view->getViewSize ().getSize (); nvgBeginFrame (view.context, size.x, size.y, devicePixelRatio); float xAdd = size.x / _audioPeakValues.size (); nvgStrokeWidth (view.context, xAdd); // left channel float x = 0.f; float y = 0.f; nvgStrokeColor (view.context, nvgRGBA (view.leftColor.red, view.leftColor.green, view.leftColor.blue, view.leftColor.alpha)); nvgBeginPath (view.context); for (auto value : _audioPeakValues) { if (value.peak.empty ()) continue; y = size.y * ((value.peak[0].min + 1.f) / 2.f); nvgMoveTo (view.context, x, y); y = size.y * ((value.peak[0].max + 1.f) / 2.f); nvgLineTo (view.context, x, y); x += xAdd; } nvgStroke (view.context); // right channel x = 0.f; nvgStrokeColor (view.context, nvgRGBA (view.rightColor.red, view.rightColor.green, view.rightColor.blue, view.rightColor.alpha)); nvgBeginPath (view.context); for (auto value : _audioPeakValues) { if (value.peak.size () < 2) continue; y = size.y * ((value.peak[1].min + 1.f) / 2.f); nvgMoveTo (view.context, x, y); y = size.y * ((value.peak[1].max + 1.f) / 2.f); nvgLineTo (view.context, x, y); x += xAdd; } nvgStroke (view.context); nvgEndFrame (view.context); postRender (view.view, view.context); fps.increaseDrawCount (); } }; //------------------------------------------------------------------------ WaveformViewManager::WaveformViewManager (SystemTime&& systemTime) : systemTime (std::move (systemTime)) { impl = std::make_unique (audioBufferDataQueue); } //------------------------------------------------------------------------ WaveformViewManager::WaveformViewManager (const SystemTime& systemTime) : systemTime (systemTime) { impl = std::make_unique (audioBufferDataQueue); } //------------------------------------------------------------------------ WaveformViewManager::~WaveformViewManager () noexcept { } //------------------------------------------------------------------------ auto WaveformViewManager::createNewView (CColor leftChannel, CColor rightChannel) -> CExternalView* { auto p = createNanoVGViewAndContext (); if (p.first && p.second) impl->addView ({p.first, p.second, leftChannel, rightChannel}); return p.first; } //------------------------------------------------------------------------ double WaveformViewManager::getFramesPerSeconds () const { return impl->fps.get (); } //------------------------------------------------------------------------ void WaveformViewManager::renderIfNeeded () { if (!impl->peakValueMutex.try_lock ()) return; auto currentTime = systemTime.get (); bool atLeastOneValueChanged {false}; while (!impl->_audioPeakFutureValues.empty () && impl->_audioPeakFutureValues.front ().systemTime <= currentTime) { // if the queued buffer has reached the currentTime we push it into the buffer we draw impl->_audioPeakValues.pop_front (); impl->_audioPeakValues.push_back (std::move (impl->_audioPeakFutureValues.front ())); impl->_audioPeakFutureValues.pop_front (); atLeastOneValueChanged = true; } AudioBufferData bufferData; while (impl->_audioBufferDataQueue.pop (bufferData)) { if (bufferData.systemTime > currentTime) { // if the systemTime of the buffer is in the future of the current time // we queue the buffer impl->_audioPeakFutureValues.push_back (std::move (bufferData)); } else { // otherwise we push the buffer into the queue that is drawn impl->_audioPeakValues.pop_front (); impl->_audioPeakValues.push_back (std::move (bufferData)); atLeastOneValueChanged = true; } } impl->peakValueMutex.unlock (); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/waveformview.h000066400000000000000000000166131461511344300254450ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Examples // Filename : public.sdk/samples/vst/dataexchange/waveformview.h // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Example // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "shared.h" #include "vstgui/lib/ccolor.h" #include "vstgui/lib/cexternalview.h" #include "public.sdk/source/vst/utility/ringbuffer.h" #include "public.sdk/source/vst/utility/systemtime.h" #include #include #include #include struct NVGcontext; //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ struct PeakValue { float min {0.f}; float max {0.f}; }; //------------------------------------------------------------------------ struct AudioBufferData { int64 systemTime; SampleRate sampleRate; std::vector peak; }; //------------------------------------------------------------------------ class WaveformViewManager { public: using DrawCallback = std::function; using DrawCallbackToken = uint64; struct IRenderThread { using ThreadFunc = std::function; virtual void start (ThreadFunc&& f) = 0; virtual void stop () = 0; virtual ~IRenderThread () noexcept = default; }; WaveformViewManager (SystemTime&& systemTime); WaveformViewManager (const SystemTime& systemTime); ~WaveformViewManager () noexcept; VSTGUI::CExternalView* createNewView (VSTGUI::CColor leftChannel, VSTGUI::CColor rightChannel); bool pushAudioBufferData (AudioBufferData&& data) { return audioBufferDataQueue.push (std::move (data)); } void renderIfNeeded (); double getFramesPerSeconds () const; //------------------------------------------------------------------------ private: using AudioBufferDataQueue = OneReaderOneWriter::RingBuffer; AudioBufferDataQueue audioBufferDataQueue {50u}; SystemTime systemTime; struct Impl; std::unique_ptr impl; struct GenericRenderThread : IRenderThread { GenericRenderThread () = default; void start (ThreadFunc&& f) override { running = true; thread = std::thread ([this, func = std::move (f)] () { using namespace std::chrono; using Clock = high_resolution_clock; constexpr microseconds syncInterval (16667); while (running) { auto startTime = Clock::now (); func (); auto stopTime = Clock::now (); auto duration = duration_cast (stopTime - startTime); if (duration < syncInterval) std::this_thread::sleep_for (syncInterval - duration); } }); } void stop () override { if (!thread.joinable ()) return; running = false; thread.join (); } private: std::thread thread; std::atomic running {false}; }; //------------------------------------------------------------------------ struct RenderThreadManager { static RenderThreadManager& instance () { static RenderThreadManager m; return m; } DrawCallbackToken registerDrawCallback (DrawCallback&& callback) { auto token = ++tokenIndex; callbackMutex.lock (); callbacks.emplace_back (token, std::move (callback)); auto callbacksSize = callbacks.size (); callbackMutex.unlock (); if (callbacksSize == 1) startThread (); return token; } void unregisterDrawCallback (DrawCallbackToken token) { callbackMutex.lock (); auto it = std::find_if (callbacks.begin (), callbacks.end (), [&] (const auto& el) { return el.first == token; }); if (it != callbacks.end ()) callbacks.erase (it); auto noCallbacks = callbacks.empty (); callbackMutex.unlock (); if (noCallbacks) stopThread (); } private: RenderThreadManager () : thread (createRenderThread ()) {} void startThread () { using namespace std::chrono; using Clock = high_resolution_clock; thread.start ([this] () { renderAll (); }); } void stopThread () { thread.stop (); } void renderAll () { LockGuard g (callbackMutex); for (auto& dc : callbacks) { dc.second (); } } using Mutex = std::recursive_mutex; using LockGuard = std::lock_guard; std::vector> callbacks; Mutex callbackMutex; std::atomic tokenIndex {0}; IRenderThread& thread; }; //------------------------------------------------------------------------ static std::pair createNanoVGViewAndContext (); static void releaseNanoVGContext (NVGcontext* context); static bool preRender (VSTGUI::CExternalView* view, NVGcontext* context); static bool postRender (VSTGUI::CExternalView* view, NVGcontext* context); static IRenderThread& createRenderThread (); }; //------------------------------------------------------------------------ struct FramesPerSeconds { using Clock = std::chrono::steady_clock; void reset () { frameCounter = 0; startTime = Clock::now (); } void increaseDrawCount () { ++frameCounter; } double get () const { auto duration = std::chrono::duration_cast (Clock::now () - startTime) .count (); auto fps = (frameCounter * 1000.) / static_cast (duration); startTime = Clock::now (); frameCounter = 0; return fps; } private: mutable std::atomic frameCounter {0}; mutable std::chrono::time_point startTime {Clock::now ()}; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/waveformview_direct3d.cpp000066400000000000000000000275221461511344300275620ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Examples // Filename : public.sdk/samples/vst/dataexchange/waveformview_direct3d.cpp // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Example // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "waveformview.h" #include "vstgui/contrib/externalview_hwnd.h" #include "vstgui/lib/platform/win32/comptr.h" #include "vstgui/lib/platform/win32/win32factory.h" #include #include #include #include "nanovg.h" #define NANOVG_D3D11_IMPLEMENTATION #include "nanovg_d3d11.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { using namespace VSTGUI; //------------------------------------------------------------------------ struct D3D11View : ExternalView::ExternalHWNDBase { ExternalView::HWNDWindow childWindow; COM::Ptr device; COM::Ptr context; COM::Ptr swapchain; COM::Ptr render_view; COM::Ptr stencil_view; COM::Ptr stencil; COM::Ptr buffer; HANDLE nextFrameHandle {nullptr}; bool firstFrameRendered {false}; using Mutex = std::recursive_mutex; using LockGuard = std::lock_guard; Mutex mutex; D3D11_VIEWPORT viewport {}; D3D11View (HINSTANCE inst) : ExternalHWNDBase (inst), childWindow (inst) { childWindow.create (nullptr, {0, 0, 20, 20}, container.getHWND (), 0, WS_CHILD | WS_VISIBLE); child = childWindow.getHWND (); } ~D3D11View () noexcept { child = nullptr; } bool attach (void* parent, PlatformViewType parentViewType) override { LockGuard g (mutex); if (!Base::attach (parent, parentViewType)) return false; RECT r; GetClientRect (child, &r); return onResize ({r.right - r.left, r.bottom - r.top}); } bool remove () override { LockGuard g (mutex); unbind (); releaseResources (); return Base::remove (); } void setViewSize (IntRect frame, IntRect visible) override { Base::setViewSize (frame, visible); LockGuard g (mutex); onResize (frame.size); } void releaseResources () { if (nextFrameHandle) CloseHandle (nextFrameHandle); swapchain.reset (); context.reset (); device.reset (); } bool createResources () { RECT r; GetClientRect (child, &r); DXGI_SWAP_CHAIN_DESC desc = {}; desc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; desc.BufferDesc.Width = r.right - r.left; desc.BufferDesc.Height = r.bottom - r.top; desc.BufferDesc.RefreshRate.Denominator = 1; desc.BufferDesc.RefreshRate.Numerator = 60; desc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED; desc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED; desc.SampleDesc.Count = 1; desc.SampleDesc.Quality = 0; desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; desc.BufferCount = 2; desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD; desc.OutputWindow = child; desc.Windowed = TRUE; desc.Flags = DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT; UINT dev_flag = 0; #if 0 // !defined(NDEBUG) dev_flag = D3D11_CREATE_DEVICE_DEBUG; #endif const D3D_FEATURE_LEVEL req_levels[] = { D3D_FEATURE_LEVEL_11_0, }; auto hr = D3D11CreateDeviceAndSwapChain (nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, dev_flag, req_levels, std::size (req_levels), D3D11_SDK_VERSION, &desc, swapchain.adoptPtr (), device.adoptPtr (), nullptr, context.adoptPtr ()); COM::Ptr sc2; if (swapchain->QueryInterface (sc2.adoptPtr ()) == S_OK) { nextFrameHandle = sc2->GetFrameLatencyWaitableObject (); } return SUCCEEDED (hr); } bool onResize (ExternalView::IntSize size) { unbind (); auto hr = swapchain->ResizeBuffers (2, size.width, size.height, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT); if (!SUCCEEDED (hr)) return false; hr = swapchain->GetBuffer (0, __uuidof (ID3D11Texture2D), reinterpret_cast (buffer.adoptPtr ())); if (!SUCCEEDED (hr)) return false; render_view = createRenderTargetView (buffer.get ()); stencil = createStencilBuffer (size.width, size.height); stencil_view = createStencilView (stencil.get ()); bind (); viewport.Width = size.width; viewport.Height = size.height; viewport.MinDepth = 0; viewport.MaxDepth = 1; return true; } auto createRenderTargetView (ID3D11Texture2D* texture) const -> COM::Ptr { COM::Ptr render_view; D3D11_RENDER_TARGET_VIEW_DESC view_desc; D3D11_TEXTURE2D_DESC tex_desc; HRESULT hr; texture->GetDesc (&tex_desc); view_desc.Format = tex_desc.Format; view_desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; view_desc.Texture2D.MipSlice = 0; hr = device->CreateRenderTargetView (texture, &view_desc, render_view.adoptPtr ()); if (!SUCCEEDED (hr)) return {}; return render_view; } auto createStencilBuffer (UINT w, UINT h) -> COM::Ptr { COM::Ptr stencil; D3D11_TEXTURE2D_DESC stencil_desc; HRESULT hr; stencil_desc.ArraySize = 1; stencil_desc.BindFlags = D3D11_BIND_DEPTH_STENCIL; stencil_desc.CPUAccessFlags = 0; stencil_desc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; stencil_desc.Height = h; stencil_desc.Width = w; stencil_desc.MipLevels = 1; stencil_desc.MiscFlags = 0; stencil_desc.SampleDesc.Count = 1; stencil_desc.SampleDesc.Quality = 0; stencil_desc.Usage = D3D11_USAGE_DEFAULT; hr = device->CreateTexture2D (&stencil_desc, nullptr, stencil.adoptPtr ()); if (!SUCCEEDED (hr)) return {}; return stencil; } auto createStencilView (ID3D11Texture2D* texture) -> COM::Ptr { COM::Ptr stencil_view; D3D11_DEPTH_STENCIL_VIEW_DESC stencil_vdesc; D3D11_TEXTURE2D_DESC tex_desc; HRESULT hr; texture->GetDesc (&tex_desc); stencil_vdesc.Format = tex_desc.Format; stencil_vdesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; stencil_vdesc.Flags = 0; stencil_vdesc.Texture2D.MipSlice = 0; hr = device->CreateDepthStencilView (texture, &stencil_vdesc, stencil_view.adoptPtr ()); if (!SUCCEEDED (hr)) return {}; return stencil_view; } void unbind () { ID3D11RenderTargetView* targets[1] = {nullptr}; context->OMSetRenderTargets (1, targets, nullptr); render_view.reset (); stencil_view.reset (); stencil.reset (); buffer.reset (); } void bind () { ID3D11RenderTargetView* targets[1] = {render_view.get ()}; context->OMSetRenderTargets (1, targets, stencil_view.get ()); } bool clearBuffer (CColor c) { const FLOAT color[] = {1.0f / 255 * c.red, 1.0f / 255 * c.green, 1.0f / 255 * c.blue, 1.0f / 255 * c.alpha}; auto rview = render_view.get (); auto sview = stencil_view.get (); if (!rview || !sview) return false; context->ClearRenderTargetView (rview, color); context->ClearDepthStencilView (sview, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 0.0f, 0); context->OMSetRenderTargets (1, &rview, sview); context->RSSetViewports (1, &viewport); return true; } void waitForNextFrame () { if (firstFrameRendered && nextFrameHandle) { auto hr = WaitForSingleObject (nextFrameHandle, INFINITE); if (hr != WAIT_OBJECT_0) { printf ("%d", hr); } } } bool presentAndSwapBuffer () { auto hr = swapchain->Present (0, 0); firstFrameRendered = true; return SUCCEEDED (hr); } void lock () { mutex.lock (); } void unlock () { mutex.unlock (); } }; //------------------------------------------------------------------------ struct D3D11RenderThread : WaveformViewManager::IRenderThread { D3D11RenderThread () = default; static D3D11RenderThread& instance () { static D3D11RenderThread thread; return thread; } void start (ThreadFunc&& f) override { running = true; thread = std::thread ([this, func = std::move (f)] () { while (running) { func (); std::this_thread::sleep_for (std::chrono::milliseconds (1)); } }); } void stop () override { if (!thread.joinable ()) return; running = false; thread.join (); } private: std::thread thread; std::atomic running {false}; }; //------------------------------------------------------------------------ std::pair WaveformViewManager::createNanoVGViewAndContext () { auto instance = getPlatformFactory ().asWin32Factory ()->getInstance (); auto d3d11View = std::make_shared (instance); if (!d3d11View->createResources ()) return {}; auto externalView = new CExternalView ({}, d3d11View); auto context = nvgCreateD3D11 (d3d11View->device.get (), NVG_ANTIALIAS); return {externalView, context}; } //------------------------------------------------------------------------ void WaveformViewManager::releaseNanoVGContext (NVGcontext* context) { nvgDeleteD3D11 (context); } //------------------------------------------------------------------------ bool WaveformViewManager::preRender (VSTGUI::CExternalView* view, NVGcontext* context) { auto d3d11View = static_cast (view->getExternalView ()); assert (d3d11View); d3d11View->waitForNextFrame (); d3d11View->lock (); if (!d3d11View->clearBuffer (kBlackCColor)) { d3d11View->unlock (); return false; } return true; } //------------------------------------------------------------------------ bool WaveformViewManager::postRender (VSTGUI::CExternalView* view, NVGcontext* context) { auto d3d11View = static_cast (view->getExternalView ()); assert (d3d11View); d3d11View->presentAndSwapBuffer (); d3d11View->unlock (); return true; } //------------------------------------------------------------------------ auto WaveformViewManager::createRenderThread () -> IRenderThread& { return D3D11RenderThread::instance (); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/dataexchange/source/waveformview_metal.mm000066400000000000000000000140231461511344300270020ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Examples // Filename : public.sdk/samples/vst/dataexchange/waveformview_metal.mm // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Example // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "shared.h" #import "nanovg.h" #import "nanovg_mtl.h" #import "vstgui/contrib/externalview_metal.h" #import "waveformview.h" #import #import //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { using namespace VSTGUI; //------------------------------------------------------------------------ struct MetalLayerView : ExternalView::ExternalNSViewBase { CAMetalLayer* metalLayer {nullptr}; MetalLayerView () : Base ([NSView new]) { metalLayer = [CAMetalLayer new]; view.layer = metalLayer; metalLayer.geometryFlipped = YES; metalLayer.opaque = NO; metalLayer.contentsGravity = kCAGravityBottomLeft; metalLayer.device = MTLCreateSystemDefaultDevice (); } void setContentScaleFactor (double scaleFactor) override { metalLayer.contentsScale = scaleFactor; auto size = view.bounds.size; size.width *= scaleFactor; size.height *= scaleFactor; metalLayer.drawableSize = size; } void setViewSize (IntRect frame, IntRect visible) override { Base::setViewSize (frame, visible); auto size = view.bounds.size; size.width *= metalLayer.contentsScale; size.height *= metalLayer.contentsScale; metalLayer.drawableSize = size; } }; //------------------------------------------------------------------------ std::pair WaveformViewManager::createNanoVGViewAndContext () { auto metalView = std::make_shared (); auto externalView = new CExternalView ({}, metalView); auto context = nvgCreateMTL (metalView->metalLayer, NVG_ANTIALIAS); mnvgClearWithColor (context, nvgRGBA (0, 0, 0, 255)); return {externalView, context}; } //------------------------------------------------------------------------ void WaveformViewManager::releaseNanoVGContext (NVGcontext* context) { nvgDeleteMTL (context); } //------------------------------------------------------------------------ bool WaveformViewManager::preRender (VSTGUI::CExternalView* view, NVGcontext* context) { mnvgClearWithColor (context, nvgRGBA (0, 0, 0, 255)); return true; } //------------------------------------------------------------------------ bool WaveformViewManager::postRender (VSTGUI::CExternalView* view, NVGcontext* context) { return true; } //------------------------------------------------------------------------ struct DisplayLinkRenderThread : WaveformViewManager::IRenderThread { static DisplayLinkRenderThread& instance () { static DisplayLinkRenderThread thread; return thread; } void start (ThreadFunc&& f) final { assert (_displayLink == nullptr); func = std::move (f); auto result = CVDisplayLinkCreateWithActiveCGDisplays (&_displayLink); assert (result == kCVReturnSuccess); result = CVDisplayLinkSetOutputCallback (_displayLink, displayLinkRender, this); assert (result == kCVReturnSuccess); result = CVDisplayLinkSetCurrentCGDisplay (_displayLink, CGMainDisplayID ()); assert (result == kCVReturnSuccess); CVDisplayLinkStart (_displayLink); } void stop () final { assert (_displayLink != nullptr); CVDisplayLinkStop (_displayLink); CVDisplayLinkRelease (_displayLink); _displayLink = nullptr; } private: CVDisplayLinkRef _displayLink {nullptr}; ThreadFunc func; static CVReturn displayLinkRender (CVDisplayLinkRef displayLink, const CVTimeStamp* now, const CVTimeStamp* outputTime, CVOptionFlags flagsIn, CVOptionFlags* flagsOut, void* displayLinkContext) { auto This = reinterpret_cast (displayLinkContext); This->func (); return kCVReturnSuccess; } }; //------------------------------------------------------------------------ auto WaveformViewManager::createRenderThread () -> IRenderThread& { return DisplayLinkRenderThread::instance (); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/000077500000000000000000000000001461511344300211325ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/CMakeLists.txt000066400000000000000000000024241461511344300236740ustar00rootroot00000000000000 if(NOT SMTG_ENABLE_VSTGUI_SUPPORT) return() endif() cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-hostchecker VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Host Checker example" ) smtg_add_vst3plugin(hostchecker resource/hostchecker.uidesc source/cids.h source/editorsizecontroller.cpp source/editorsizecontroller.h source/eventlistcheck.cpp source/eventlistcheck.h source/eventlogdatabrowsersource.cpp source/eventlogdatabrowsersource.h source/eventlogger.cpp source/eventlogger.h source/factory.cpp source/hostcheck.cpp source/hostcheck.h source/hostcheckercontroller.cpp source/hostcheckercontroller.h source/hostcheckerprocessor.cpp source/hostcheckerprocessor.h source/logevents.h source/parameterchangescheck.cpp source/parameterchangescheck.h source/processcontextcheck.cpp source/processcontextcheck.h source/processsetupcheck.cpp source/processsetupcheck.h source/version.h ) target_link_libraries(hostchecker PRIVATE vstgui_support ) smtg_target_add_plugin_resources(hostchecker RESOURCES resource/hostchecker.uidesc resource/bypass.png resource/knob.png ) smtg_target_setup_as_vst3_example(hostchecker) vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/resource/000077500000000000000000000000001461511344300227615ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/resource/bypass.png000066400000000000000000000020451461511344300247710ustar00rootroot00000000000000PNG  IHDR&+ЕsRGBgAMA a pHYs+tEXtSoftwarepaint.net 4.0.9l3~NIDATHK_HSQǿlni͢  zQ!^z( zꩧ K-*4L21pneιޑmFKn|s""/)hr7-{׷EskNisFܨٚzD"9+9'J'ZtVnw Q.!h >nfg9b1ݞ>DrFr2\mǣgt?b4e8m(7 ;R5eTP"JzQ$L7H2^oFSMVZNs059&'*9doC #@PIp)i+elj!sWl01c2wn# [u^s^{y !hX2MyAxH &F#QWE  ْy<>2^ WMU(7fLVEx _gb^(« }gMr] M@D΁ZÇGe΁? J̨tNEV4`lXBC|QI}":AKbdCf"@ѦQgJS } &^Pck&F0tͪ}Qwhq\!Fh0b=ޓs%_ʊeI^Eeߛv1[5 :&2y1Ǘp "k^MV+iOo|x #Èҝ Wkc4vV12ޔ|Ǿ37iܽwۨ|YpOsVKMO x!$a"IENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/resource/hostchecker.uidesc000066400000000000000000001363101461511344300264650ustar00rootroot00000000000000{ "vstgui-ui-description": { "version": "1", "variables": {}, "bitmaps": { "bypass": { "path": "bypass.png" }, "knob": { "path": "knob.png" } }, "fonts": {}, "colors": { "Background": "#414a4eff", "Focus": "#6565ffff" }, "gradients": { "Default TextButton Gradient": [ { "rgba": "#dcdcdcff", "start": "0" }, { "rgba": "#b4b4b4ff", "start": "1" } ], "Default TextButton Gradient Highlighted": [ { "rgba": "#b4b4b4ff", "start": "0" }, { "rgba": "#646464ff", "start": "1" } ] }, "control-tags": { "Bypass": "1003", "Copy2Clipboard": "1010", "EditorSize": "2000", "GeneratePeaks": "1001", "Hidden": "1007", "HiddenValue": "1006", "KeyswitchChanged": "1012", "NoteExpressionChanged": "1011", "PCBarPositionMusic": "1023", "PCContinuousSamples": "1020", "PCProjectTimeMusic": "1016", "PCProjectTimeSamples": "1015", "PCState": "1018", "PCSystemTime": "1019", "PCTempo": "1017", "PCTimeSigDenom": "1022", "PCTimeSigNum": "1021", "ParamTitlesChanged": "1014", "ParamValuesChanged": "1013", "ProcessingLoad": "1000", "Progress": "1008", "ProgressValue": "1009", "Scoring": "1005", "canResize": "1004", "latency": "1002" }, "custom": { "UIViewInspector": { "windowSize": "116, 251, 607, 836" }, "UIEditFrame": { "gridsize": "10", "uidescPath": "/Volumes/maintrunk/public.sdk/samples/vst/hostchecker/resource/hostchecker.uidesc" }, "FocusDrawing": { "color": "Focus", "enabled": "true", "width": "2" }, "UIGridController": { "Grids": "1x 1,2x 1,5x 5,10x 10,12x 12,15x 15", "Size": "1, 1" }, "UITemplateController": { "SelectedTemplate": "HostCheckerEditor" }, "UIEditController": { "EditViewScale": "2.5", "EditorSize": "0, 0, 1992, 1316", "SplitViewSize_0_0": "0.7674418604651163100527355709346011281013", "SplitViewSize_0_1": "0.2170542635658914698559840417146915569901", "SplitViewSize_1_0": "0.5372093023255813948324544071510899811983", "SplitViewSize_1_1": "0.4589147286821705362669376881967764347792", "SplitViewSize_2_0": "0.8212851405622489942004449403611943125725", "SplitViewSize_2_1": "0.1762048192771084320629171315886196680367", "TabSwitchValue": "0", "Version": "1" }, "UIAttributesController": {}, "UIViewCreatorDataSource": { "SelectedRow": "2" }, "UITagsDataSource": { "SelectedRow": "8" }, "UIColorsDataSource": { "SelectedRow": "-1" }, "UIGradientsDataSource": { "SelectedRow": "-1" }, "UIBitmapsDataSource": { "SelectedRow": "0" }, "UIFontsDataSource": { "SelectedRow": "-1" }, "VST3Editor": { "Path": "C:\\development\\Stash\\mono\\public.sdk\\samples\\vst\\hostchecker\\resource\\hostchecker.uidesc" } }, "templates": { "HostCheckerEditor": { "attributes": { "autosize": "left right top bottom ", "background-color": "Background", "background-color-draw-style": "filled and stroked", "class": "CViewContainer", "maxSize": "700, 10000", "minSize": "200, 300", "mouse-enabled": "true", "opacity": "1", "origin": "0, 0", "size": "744, 400", "transparent": "false", "wants-focus": "false" }, "children": { "CScrollView": { "attributes": { "auto-drag-scrolling": "false", "auto-hide-scrollbars": "false", "autosize": "left right top bottom ", "background-color": "~ WhiteCColor", "background-color-draw-style": "filled and stroked", "bordered": "false", "class": "CScrollView", "container-size": "728, 3306", "custom-view-name": "HostCheckerDataBrowser", "follow-focus-view": "false", "horizontal-scrollbar": "false", "mouse-enabled": "true", "opacity": "1", "origin": "11, 75", "overlay-scrollbars": "false", "scrollbar-background-color": "~ TransparentCColor", "scrollbar-frame-color": "~ BlackCColor", "scrollbar-scroller-color": "Background", "scrollbar-width": "16", "size": "725, 315", "transparent": "false", "vertical-scrollbar": "true", "wants-focus": "true" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontBig", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlackCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "177, 0", "round-rect-radius": "6", "shadow-color": "~ BlackCColor", "size": "122, 20", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "true", "text-alignment": "left", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "VST3 HostChecker", "transparent": "true", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "COnOffButton": { "attributes": { "autosize": "right top ", "bitmap": "bypass", "class": "COnOffButton", "control-tag": "Bypass", "default-value": "0", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "713, 24", "size": "21, 19", "tooltip": "Bypass (should be in sync with the host bypass button if available)", "transparent": "true", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CViewContainer": { "attributes": { "autosize": "left top ", "background-color": "~ BlackCColor", "background-color-draw-style": "stroked", "class": "CViewContainer", "mouse-enabled": "true", "opacity": "1", "origin": "10, 2", "size": "107, 51", "transparent": "false", "wants-focus": "false" }, "children": { "CTextLabel": { "attributes": { "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "11, 30", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "24, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "PL", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CAnimKnob": { "attributes": { "angle-range": "270", "angle-start": "135", "autosize": "left top ", "bitmap": "knob", "class": "CAnimKnob", "control-tag": "ProcessingLoad", "default-value": "0", "height-of-one-image": "20", "inverse-bitmap": "false", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "11, 10", "size": "20, 20", "sub-pixmaps": "80", "tooltip": "Processing Load + Test ContextMenu (right-click on it should open Host ContextMenu (if supported))", "transparent": "false", "value-inset": "0", "wants-focus": "true", "wheel-inc-value": "0.1", "zoom-factor": "1.5" } }, "CAnimKnob": { "attributes": { "angle-range": "270", "angle-start": "135", "autosize": "left top ", "bitmap": "knob", "class": "CAnimKnob", "control-tag": "GeneratePeaks", "default-value": "0", "height-of-one-image": "20", "inverse-bitmap": "false", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "41, 10", "size": "20, 20", "sub-pixmaps": "80", "tooltip": "Enable Peaks Generation", "transparent": "false", "value-inset": "0", "wants-focus": "true", "wheel-inc-value": "0.1", "zoom-factor": "1.5" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "39, 30", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "24, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Level", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CAnimKnob": { "attributes": { "angle-range": "270", "angle-start": "135", "autosize": "left top ", "bitmap": "knob", "class": "CAnimKnob", "control-tag": "latency", "default-value": "0", "height-of-one-image": "20", "inverse-bitmap": "false", "max-value": "8192", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "71, 9", "size": "20, 20", "sub-pixmaps": "80", "tooltip": "Test Latency Change (check the Bypass Processor)", "transparent": "false", "value-inset": "0", "wants-focus": "true", "wheel-inc-value": "0.1", "zoom-factor": "1.5" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "66, 30", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "35, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "true", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Latency", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } } } }, "CViewContainer": { "attributes": { "autosize": "left top ", "background-color": "~ BlackCColor", "background-color-draw-style": "stroked", "class": "CViewContainer", "mouse-enabled": "true", "opacity": "1", "origin": "118, 2", "size": "54, 51", "transparent": "false", "wants-focus": "false" }, "children": { "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 30", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "35, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Scoring", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "Scoring", "default-value": "0", "font": "~ NormalFontBig", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "100", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "11, 8", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "33, 19", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Scoring (up to 100)", "transparent": "false", "value-precision": "0", "wants-focus": "false", "wheel-inc-value": "0.1" } } } }, "CViewContainer": { "attributes": { "autosize": "left top ", "background-color": "~ BlackCColor", "background-color-draw-style": "stroked", "class": "CViewContainer", "mouse-enabled": "true", "opacity": "1", "origin": "173, 20", "size": "117, 32", "transparent": "false", "wants-focus": "false" }, "children": { "CCheckBox": { "attributes": { "autosize": "left top ", "autosize-to-fit": "false", "boxfill-color": "~ WhiteCColor", "boxframe-color": "~ BlackCColor", "checkmark-color": "~ RedCColor", "class": "CCheckBox", "control-tag": "Progress", "default-value": "0", "draw-crossbox": "false", "font": "~ NormalFontSmaller", "font-color": "~ WhiteCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "2, -2", "round-rect-radius": "0", "size": "66, 20", "title": "Progress", "tooltip": "Click on it to start a Host progress", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CCheckBox": { "attributes": { "autosize": "left top ", "autosize-to-fit": "false", "boxfill-color": "~ WhiteCColor", "boxframe-color": "~ BlackCColor", "checkmark-color": "~ RedCColor", "class": "CCheckBox", "control-tag": "Hidden", "default-value": "0", "draw-crossbox": "false", "font": "~ NormalFontSmaller", "font-color": "~ WhiteCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "67, -2", "round-rect-radius": "0", "size": "48, 20", "title": "Hidden", "tooltip": "Click on it to make a specific parameter Hidden or not", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CSlider": { "attributes": { "autosize": "left top ", "bitmap-offset": "0, 0", "class": "CSlider", "control-tag": "ProgressValue", "default-value": "0", "draw-back": "false", "draw-back-color": "~ BlackCColor", "draw-frame": "true", "draw-frame-color": "~ GreyCColor", "draw-value": "true", "draw-value-color": "~ WhiteCColor", "draw-value-from-center": "false", "draw-value-inverted": "false", "frame-width": "1", "handle-offset": "0, 0", "max-value": "100", "min-value": "0", "mode": "use global", "mouse-enabled": "false", "opacity": "1", "orientation": "horizontal", "origin": "4, 19", "reverse-orientation": "false", "size": "54, 10", "tooltip": "Progress Value", "transparent": "false", "wants-focus": "false", "wheel-inc-value": "0.1", "zoom-factor": "10" } }, "CAnimKnob": { "attributes": { "angle-range": "270", "angle-start": "135", "autosize": "left top ", "bitmap": "knob", "class": "CAnimKnob", "control-tag": "HiddenValue", "default-value": "0", "height-of-one-image": "20", "inverse-bitmap": "false", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "81, 13", "size": "20, 20", "sub-pixmaps": "80", "tooltip": "This is the parameter which will Hidden or not for Host", "transparent": "false", "value-inset": "0", "wants-focus": "false", "wheel-inc-value": "0.1", "zoom-factor": "1.5" } } } }, "CViewContainer": { "attributes": { "autosize": "right top ", "background-color": "~ BlackCColor", "background-color-draw-style": "stroked", "class": "CViewContainer", "mouse-enabled": "true", "opacity": "1", "origin": "583, 2", "size": "126, 51", "transparent": "false", "wants-focus": "false" }, "children": { "CCheckBox": { "attributes": { "autosize-to-fit": "false", "boxfill-color": "~ WhiteCColor", "boxframe-color": "~ BlackCColor", "checkmark-color": "~ RedCColor", "class": "CCheckBox", "control-tag": "canResize", "default-value": "1", "draw-crossbox": "false", "font": "~ NormalFontSmaller", "font-color": "~ WhiteCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "25, 1", "round-rect-radius": "0", "size": "80, 20", "title": "CanResize", "tooltip": "Test canResize behaviour (reopen the editor)", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CSegmentButton": { "attributes": { "autosize": "left top ", "class": "CSegmentButton", "control-tag": "EditorSize", "default-value": "0.5", "font": "~ NormalFont", "frame-color": "~ BlackCColor", "frame-width": "1", "gradient": "Default TextButton Gradient", "gradient-highlighted": "Default TextButton Gradient Highlighted", "icon-text-margin": "0", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "4, 22", "round-radius": "5", "segment-names": "75%,100%,150%", "selection-mode": "Single", "size": "120, 20", "style": "horizontal", "sub-controller": "EditorSizeController", "text-alignment": "center", "text-color": "~ BlackCColor", "text-color-highlighted": "~ WhiteCColor", "tooltip": "Zoom to different factors the UI", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } } } }, "CCheckBox": { "attributes": { "autosize-to-fit": "false", "boxfill-color": "~ WhiteCColor", "boxframe-color": "~ BlackCColor", "checkmark-color": "~ RedCColor", "class": "CCheckBox", "control-tag": "KeyswitchChanged", "default-value": "0", "draw-crossbox": "false", "font": "~ NormalFontVerySmall", "font-color": "~ WhiteCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "294, 41", "round-rect-radius": "0", "size": "70, 14", "title": "KS Changed", "tooltip": "Call a restartComponent with kKeyswitchChanged", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CCheckBox": { "attributes": { "autosize-to-fit": "false", "boxfill-color": "~ WhiteCColor", "boxframe-color": "~ BlackCColor", "checkmark-color": "~ RedCColor", "class": "CCheckBox", "control-tag": "NoteExpressionChanged", "default-value": "0", "draw-crossbox": "false", "font": "~ NormalFontVerySmall", "font-color": "~ WhiteCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "366, 41", "round-rect-radius": "0", "size": "70, 14", "title": "NE Changed", "tooltip": "Call a restartComponent with kNoteExpressionChanged", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CCheckBox": { "attributes": { "autosize-to-fit": "false", "boxfill-color": "~ WhiteCColor", "boxframe-color": "~ BlackCColor", "checkmark-color": "~ RedCColor", "class": "CCheckBox", "control-tag": "ParamValuesChanged", "default-value": "0", "draw-crossbox": "false", "font": "~ NormalFontVerySmall", "font-color": "~ WhiteCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "294, 23", "round-rect-radius": "0", "size": "70, 14", "title": "PV Changed", "tooltip": "Call a restartComponent with kParamValuesChanged", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CCheckBox": { "attributes": { "autosize-to-fit": "false", "boxfill-color": "~ WhiteCColor", "boxframe-color": "~ BlackCColor", "checkmark-color": "~ RedCColor", "class": "CCheckBox", "control-tag": "ParamTitlesChanged", "default-value": "0", "draw-crossbox": "false", "font": "~ NormalFontVerySmall", "font-color": "~ WhiteCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "366, 23", "round-rect-radius": "0", "size": "70, 14", "title": "PT Changed", "tooltip": "Call a restartComponent with kParamTitlesChanged", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CCheckBox": { "attributes": { "autosize-to-fit": "false", "boxfill-color": "~ WhiteCColor", "boxframe-color": "~ BlackCColor", "checkmark-color": "~ RedCColor", "class": "CCheckBox", "control-tag": "Copy2Clipboard", "default-value": "0", "draw-crossbox": "false", "font": "~ NormalFontVerySmall", "font-color": "~ WhiteCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "366, 5", "round-rect-radius": "0", "size": "70, 14", "title": "To Clipboard", "tooltip": "Copy the current result into the Clipboard", "transparent": "false", "wants-focus": "true", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "PCProjectTimeSamples", "default-value": "0", "font": "~ NormalFontSmaller", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "65, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "60, 11", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Process Context projectTimeSamples: project time in samples", "transparent": "false", "value-precision": "0", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "10, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "55, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "ProjectTime", "tooltip": "Process Context projectTimeSamples: project time in samples", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "252, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "46, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "TimeMusic", "tooltip": "Process Context projectTimeMusic: musical position in quarter notes (1.0 equals 1 quarter note)", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "PCProjectTimeMusic", "default-value": "2.32831e-09", "font": "~ NormalFontSmaller", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "298, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "50, 11", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Process Context projectTimeMusic: musical position in quarter notes (1.0 equals 1 quarter note)", "transparent": "false", "value-precision": "0", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "PCTempo", "default-value": "0.3", "font": "~ NormalFontSmaller", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "463, 21", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "62, 11", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Process Context tempo: tempo in BPM (Beats Per Minute)", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "435, 21", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "28, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Tempo", "tooltip": "Process Context tempo: tempo in BPM (Beats Per Minute)", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "PCSystemTime", "default-value": "0", "font": "~ NormalFontSmaller", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "488, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "101, 11", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Process Context systemTime: system time in nanoseconds", "transparent": "false", "value-precision": "0", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "434, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "54, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "SystemTime", "tooltip": "Process Context systemTime: system time in nanoseconds", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "PCState", "default-value": "0", "font": "~ NormalFontSmaller", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "463, 7", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "62, 11", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Process Context state: a combination of the values from StatesAndFlags", "transparent": "false", "value-precision": "0", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "435, 7", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "28, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "State", "tooltip": "Process Context state: a combination of the values from StatesAndFlags", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "126, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "67, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "ContinuousTime", "tooltip": "Process Context continuousTimeSamples: project time, without loop", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "PCContinuousSamples", "default-value": "0", "font": "~ NormalFontSmaller", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "193, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "60, 11", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Process Context continuousTimeSamples: project time, without loop", "transparent": "false", "value-precision": "0", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "435, 35", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "28, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "Signat.", "tooltip": "Process Context Signature", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "PCTimeSigNum", "default-value": "0.023622", "font": "~ NormalFontSmaller", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "463, 35", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "25, 11", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Process Context timeSigNumerator", "transparent": "false", "value-precision": "0", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "PCTimeSigDenom", "default-value": "0.023622", "font": "~ NormalFontSmaller", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "500, 35", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "25, 11", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Process Context timeSigDenominator", "transparent": "false", "value-precision": "0", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "489, 35", "round-rect-radius": "6", "size": "10, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "/", "tooltip": "Process Context tempo", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CParamDisplay": { "attributes": { "autosize": "left top ", "back-color": "~ BlackCColor", "background-offset": "0, 0", "class": "CParamDisplay", "control-tag": "PCBarPositionMusic", "default-value": "2.32831e-09", "font": "~ NormalFontSmaller", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ BlueCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "false", "opacity": "1", "origin": "384, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "50, 11", "style-3D-in": "true", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "tooltip": "Process Context barPositionMusic: last bar start position, in quarter notes", "transparent": "false", "value-precision": "0", "wants-focus": "false", "wheel-inc-value": "0.1" } }, "CTextLabel": { "attributes": { "autosize": "left top ", "back-color": "~ GreyCColor", "background-offset": "0, 0", "class": "CTextLabel", "default-value": "0.5", "font": "~ NormalFontVerySmall", "font-antialias": "true", "font-color": "~ WhiteCColor", "frame-color": "~ GreyCColor", "frame-width": "1", "max-value": "1", "min-value": "0", "mouse-enabled": "true", "opacity": "1", "origin": "348, 58", "round-rect-radius": "6", "shadow-color": "~ RedCColor", "size": "36, 11", "style-3D-in": "false", "style-3D-out": "false", "style-no-draw": "false", "style-no-frame": "false", "style-no-text": "false", "style-round-rect": "false", "style-shadow-text": "false", "text-alignment": "center", "text-inset": "0, 0", "text-rotation": "0", "text-shadow-offset": "1, 1", "title": "BarPos", "tooltip": "Process Context barPositionMusic: last bar start position, in quarter notes", "transparent": "false", "value-precision": "2", "wants-focus": "false", "wheel-inc-value": "0.1" } } } } } } }vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/resource/info.rc000066400000000000000000000030141461511344300242400ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS knob.png PNG "knob.png" bypass.png PNG "bypass.png" hostchecker.uidesc DATA "../resource/hostchecker.uidesc" ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/resource/knob.png000066400000000000000000002005471461511344300244300ustar00rootroot00000000000000PNG  IHDR@yFb iCCPICC ProfilexXgTM.9s9J$ 9(A QPDTAĀ"P@${ogyguiojƇ{ P0@Tp}[[+I=*?w0E"޾Q>`h@X\t8L"x7_G{CPh4Tj?$d/$u|f!2R+/LzkL*_\7FPT/o!1z)W/l 0ArE>`ԐE#spxBd@4>%?)>0)>9yd9w;ɿۂPE&y6Тxw< `1  zX}Pd@2 A%8 @#h@'=`̂y,uA"C; C@ƐdB^?@(**PtShz-A/L07,j>l ;?'Yp\-p?ógx P$ %RCPPTT.UAGMfQ_Ph,͇Fk>t*:]nDwwe.Hb40?&)4`1Cy:ebUfXWl6 ƶaOs5ǎiᨸh\6ׂ~Ix^gK^8~E'4IB=0O"2EDGb1XNL""~'H$u)N*']! ޑ6i(4444144ihidٍM. 7ߐ2КҦVvЎ~# K+N =^ސJJ_EM~AaC(C>C3E "B1R(u9F !z!y&,(9SSS+(23Yى96, EŜ%$5I_ܬ~9YY78r؞bc7ff/dd́ĩÙy%%eϕU5µm]}  OO O//#o o O|||!|||\f1GD d $ ,\J$R & \&|_xCDTYHȢ(h%Wbd1]ZgXq5`j1 XBY"@J$,"(Y-T #.&U+BFZ_:V;+LNoBnewBf)=  > U Ɋ&i]+JJ~J5JSʌǔwTTU"U., zQ}Ƥf6Q7POSqMMi`fE-Q-?z9mmyY>/s:TZzzz z A- " 6 5 S PFFFƕoLLM.,*&a, ^s7/[ZX ZX:XVZ걆-_ۄt{m+ja{kgkWe^>CúIǙbc89;59m899ϺȺp{GǃCz^x9{5{mSQkkg} }|>.i->Tth_ۿ)@74Ka`eJY٠}BCB^a<? Ј8iEyDuE3!D`$F,h̻Xت؟qNqG$rM/$|3ߥ觜ORSӲM3322q>ғŝ5wl4=>x|4G1"g77a\^ivO'O*=rTةB"Ģbܒ=O?(U*=[F,)-*8U]Pʠ י3վ5z5r;\๩;jEjKuu_Pѐװs1l}`jSS3WKKK--cF]/oci˻\t5kծ_!|L;c{nԑб9ۢ{G͋oUf}؛ջw'Z_xߗ~ρ.w Y 3w;÷h<~ʣʏGUF;>Syw\wh3g<:r)ߩ镗/f_a^徦]M[m*y~fgYKxo-,}:is/_&?z,,ϯDg~ҏ5۵7[?6nmka+n]#ӳkj/to/IP>tՋ]`?@%B`a[ZQ@0 s(?*:#VF"- Ah%#S^30{\cC{qqry? $. a#&M+#{]nKAS1J;Mu M -5m#]7XlRF/7,V\6m5 lwrvvqquuss;v˞jm'qן1-]Ȯt:DDB$5J?=[LlYxImSRUhu3(3vccǵrXrv:'ZOVS["yZTL\BRJJFYs/x4]Lln*ltݶ+__1!U­^;}NEfCU7HxhԓOUy&?g3^ yk0>n}\㇪S.$,.y}{^ZYU.C|cfɯ;.{{'A"h!Q0s™**}ÏFdpjb ɗƅ@BMÐGidc"Veŝ3G(&Ɗ5?!E/-&$.. ȣD )PGհzFfVvN=}UC#!czSٲŔU}ŶYvQT[GNlWnu:i%Ee~[wPul C! a.U)Kw"|c01b%'ۤp|JI;aiXQlcDžsxs(;'WNnJNV Tί.]zA܄}޾'V @0(!,d Bs6|EFEELG='yg4] tE'(:YްnS89MR9Z{xjB~~։S6EWJNٔ?4WmWpmo0_}w=`۝w6CW<i{:B{̏7nsyB'o\kʿ;v=BDR$_C2#" i솈7FВhwtP1嘧X{;,p'qSx!|~E#LՉHDRiƅ1ِ|VN^NS(LLL̺,1Lln0{ +'WE|2|'=DDrģ$$dTeT5 (d6=QT:}YgUO]?`H8dLӼbֺm;{_Ǘ]λ~:~cS+z{W/P!)BFUXȮhؗr I~hffd&8*]p[Mns ֊kOJ#˦*t*L>PTӀX|źu-*J;z~ǹh uA#Ouc&`JF"VXHiXh*ɼZ9[tVtoAB0V012ױ8XU99Ӹ̹Y]=0%A!4{DEŞ s7Re)rRȎ.VUʧ^1ŬӬoklD05yafa~j&U9h9w*pu];p#SkջWү_"!H$)T6;4b**4[6)>ZΔQqD 5[<(R)laU1OR\Y\B[DK͏sM~ .M험Z['ԯ\\1a-|KvھOw)?0cO't|`Ze:o ޾~'>unl^c%O~buu5?73~Q~"lElMolWl/y+ۺw)*1@ҏo+`poovoo 2w_oa,=gFC%ҿ],N IDATxwfu%rrN{r &#$QRW-[v-TXeՖZeI.SKR@$ &_w9}~5gz rQh3}/s9KO}׷Wp8dY_-[{VwÚ8;qqx۶=uZ;g/7 sdY<0~4MZuhsuDQhw4l>}om<~w, ?R^YkHV=TR8KKUV,$n$0hF|<ݿ ~@|̬ ľ,bnv~NZX-,O\:`*Ssn||haC&~H#"}lWVV^]ss(ZlǡlˡL-\K]m,~5NYmhZo}[Cmqnܸ[Rdy9%J!a}ibiYAJ k^V+h4[$"i^ `+Zhyg9aq gڮ븮mDM=e8ƧD~ѨG,Kcñ%p˦,̰نQ;=.Mc[ӥRB!}3YNf|<}>Q+eX S/đ7g|)ɘnLQ..ϣ85M|f "9rS8UYz k}X,K\K>0mS-: Wqq=O4mƛ!&dw|[gRצX)t l46/N9L$IVq=c|V,ʂAc;cJo?6 ó,ߊ<3,'yXp0l \PTdYv-ca1 NM|?x=2J;.N6,(cN5'uԞѰC᫇|CCCjDKFZ\>fxމJK+lNGczgg_o=&GZkǥ?ӿ$e?ðIuUUYo'Ia7$x̼ ?6| JR]) (X1PIDP 0!7-ӱvm$ϼ{ĥH$%;k )),2xLAbi+/,UB7joOic)D3@< w481eii10DTOH<;]}un!DnyRșJs|>jm)2`mUo .RPVE 8aDLfr!y)ǰWt]XHm1xY` TwMۖm)c{S{$D㻞_/|l6Lq<%3> ۿDSh׶]`L2o)dFa 0Af!4DZB$gJ*"؊`ʓO>~dڹ/R$G3mF!wKѯdLe2EJnLpOWW/O/4wuvѣLJ#Xℐz?:qDs|bm&LF/3lU~.VV65'NNa>k\_u$&G /1E5t9!C0!!>ǔ ~xS)Nk;|&uj+fVYmf= X!5L_+Tr=.bibe9.O go;xH:`E {!Kh{ڰLA"j9ͽ{v~RW.^TO3İHBMz2$.#MMϜxLAxe͖j4/SXg#=Fj)>MrZ'PݥS s@R^X(g)FJXv+ dP8u TQz%"[{wkuo6/=GjV$5C G-ktA)$ucʠNS:e26ƛ88[qg}uE(+aZ*Sf}mSJ^o:5&pVЌ,;D̤SR,j2=FjFTM;:%H R)H^K.ToyLx(rr8&¥;^k;ϗ+VI,IQ&$S:t͑~%qA12dtKǔN6}>w3M\FO @B}lg[]]I`qU>X'ze)D2jY{=aQa)>6X]ͤ 8}‡lˎ"NŲTrYMWU 'c9PFDsm0Ga#qO!>|P(㵹ޟ-qLNic329Xoxcl|ºScWkWo(kpaAs^7iJB`-@`:hZMR<3J(T)S',xϤNA<D&} 0Ogh)}UjոeiihfuJ'JvHqѯH_UnR%4 aSԐ̭O'Fwk<ur4gzOy P ,SL3[}=ΝۑJc9A"0d \ 6.]B0eeY(+]&2Ł"b=$b`&:ǟmWS)vi(Q4^A6~E)"6&NBbR"bB(? JnR.{;|*z4LUs@&8Thj}IysKf.eGU`d I-DzJ)d2Ͼ17i.¼(c~|qnvX7(DrU1u ˽ S&OA L&(ۏS.>mYgu+Lґb!+OᥰQ,'#)I=TyX,|dwL6f*Pv}2uqː xneKmDOو) ?FU|_V3!gާ}c!8qXsddvv#{=ep@\/BR\tԵL)xhcN;dqJBH$': b_qLhLM$O`$)bܖoѓ:oBhrlC8u2 T&zh| LA™_g砧 7,#ZQ3HdϮٿD=ҕ+u ` xeHr]Z׺PLWO!fTPB<)7TAX!NʌW3ggQkV/ NYAwFd ʂ8)VgWk==St-,- ,B Z% -FP)DgX0%2HZQrmSqӈWf@b>qaNiѐp Bl)>X,$1TX!u}S9 4P k)ShŢhl/6rі@^`Uީ;a{(@T*-*E9S؟./޽;3feQ|Fc'Q 3\(FTSƺ՟LN ,UY??X -;6\?Ni_|0a58D'1|,*lߨѓ*|TJ9nn&=OHũʷ-tKIF*pV0F?SfsKGB,XYH5ڕm=2Բ;;ɐC'c#2)[r_0X7H.!l+ip+(@܏'8~3T`ʯFKS3 }m 9 1DXP$U@<>މDbKCbGwzt._=RGLR  0 :Mc })DdRPq_@ |8;^m=1/MZkh:#;B*=.@&f891/S4+W)  TVxJZ߭hP8t VbE&L!u l;vǣ(\LQ!uJomDXd4?~{}.OzfNScf@tBbˣ:59Jx_ .pT~KKޘZƋyD3wub|qt(J(f:%[,e_'_mC %0տ =~L1mU2S E`c Hd|6_:嗂)`:uC)/q+KF»!BNgH$́끼Ē$g Jn@`jH EK}i͍^{zy`~f$9L3#;Ykѿh5oT+12zJ 8X۷o斍'X!3‘Li!8^Iņ̖VLmώቁxa%&WV/T> XkmC 0@#h!v-yRyTw4Va)Z]kB= zxg =c٘SG#ڵ Fa)&wW\W ;[W. ha 4z_ZnDqLё}f ?HG6>S-o3Lt0MET0DO!BN[YmEQ9;qd7ef'H)A r JG i&|hwS1'v>mq=z?SZV]Z5^(i Ӣr6'J!K߆t^Y"LMM疴r2P## TS嗔w|e<ݷ{W^Lyj%6Wp < 84L0NNhWWSDԟฃ*=8ͬa 6`y^b2q)r%&uJ6<BUtjaӾrTʜ+bS,mƔ?%w:Zl'"R||X)ⱞP1  3r=/R+2j!կ~! qV)D47Mbj;nrz#$>}1DQgz 7:; !>r &3')YO1,)5\;ӵ/b|,hv T)&@tq|v@jbon}qE"n1˙ʩ'VF SgʲRYW"Й`J;|Q{hL!^b5 y$5C!Huiø1F'R\BXuμ>8!"I2ܺF{dddb4KWҶY` m5Qe (]\)CCL8N,$A]+pJt3~2Ph:tq Xm^b.Ϟ}]xx# Tƥ#I\O° p@Est%H:7Wiz؞mkRV4Z0,WբQ\'ٙ {m $<2pW_(BL|_wk08\Swr"I0I!\e/ԔʫV)CCO3# n@ V^'juY޲).CNoJA)Cbm IDAT= 3(1$:%Eދ)lJ sBKGB %Wvɰ|x 0rz9ɶ7a ӑ;_]fXwx84›mFG ӦEL/di>}ͥkI䟀 Yt0uIj(8H` "7"| UrU\5u$f0!ɓ7n-± Ν䄄LX5.%A=H/;Kd hOEΒ^BSE&zf1bOPZ[9Z<=!}N/^?4<<ޞS-2ȑ#S8hxk7әMB*O`JLy?ϧ3rI: `q06p&5Lz yKOi$.]w RA:g2H9,9gN{rR7hk8F E:lW,4^0elEL_qp_?>9ZQ4|nh=NB׫f 3L/qLfNHO-.-w(9arYKYʭtE5Z޳y7$Kd0T=5szy Yj &|tՙ[nUdf!)K|lᾐo"z9B6>{gI V,DO$+-Gc81C)$&'@kN&~hەJ'q8-ԛ;[7~ &"cx: .0ykeN>=_eቫ׮H)ggmZF-x)2) 0EFbV[kY"P"C`1PAe Sp#l@ݶ HCJ %IL"o4]^?3=sXxHYٰjo3)˦'X>! b 7;6)NmΧaV].0K}:P&(҈tD[VZtSIzȋ~._@}Y$Y/ڦ}^b+ۏ<mh~glǒEb0}_DO`J[IDjDN>05J;<"uSVV&F|||uʾ{0%x=ՄR./_Ҿ駠P4*vSdgW`y ~Svzrj#e8DuL!8aڅH~rj^"fH% r3LJ|?PO:mIHwfVNཇ̉7p㼯b8ztlxAw=7S#W a:mAs1(@ ML&_ǔ>N$O; oPV`T{##NqsKVP)& LnĔD8I=}l,fy:\,bc)AK>SXl_\_9kP8MtD\hUkEdt`bFT0 qh:pznƐ[wnށ.t V'63I iIPZ\pR0DJu/q)NC2nkV:Cf8`JПV"18bl&T"IO,|嵙xl( ^ÔRl_)F $kJFl6^z>=,-&DYGIgN?qGW%n"J_ShXB`Hs)H6fydLCWX[') ɭ}=t-}j-L?eM54[pևsK|a~s:88"p@Leb#꒸Fd]!ҏU*F7_=FZ.{:ZwuUKӓ'h.@Ć$ 'j6[Q )q=9ex1|m 3ZQ)3##{ϲ\X"~]R`BUc>={i&_}>ZAzW0PB>xz0pQ-d6ŏS+WVzZZc#E.=_nOY}}ĤN!Y,ᾐE DW0E}_Nw:sb(Й~_ey}*(ϐ/-r+j}ٱv ?,ⵖ,aBg~I7%ބ)bqLbGr(!qLMͶxQܷN!WՌݸphvIy$!N@$4dBm-x% i/1K*]ՠN@%&S` ,5H-"ЇvTjݍF3=Sr>ɂ OC $Jf` j-fvѷ.S0m*q⢘/Ix\w5+JB b:|a/$3"S#^L~fh(wԣͩEr)ЛAB\>E~_~s*Ç| akJ LA0 E#CkH!-4} >SG\l坷ϽlW۰}Ywcaߚ , <s*%N G%hna]iN2 'L*<4  8!cz5,0#6f!sɏcJ*;E!#o͐J}_uJ"KU8"/-kc4(T0O"|Z]R磗칑QBLY^.>sPOgG'`.1Ƣ̛Wө?+}~ =sPUu;J*b#Z:jbfMe2=$hʒ` &p_|; /Ϳsi)xMy%V1ScJQ*&Ha "?eiy)-4.ZAWacSAzSC Lr4ʉ$'Uί0<S2(fV LM/vNR|lA'  A4=|l.ٳ+å7UC!nBi,mbbڥtOQ\HOh(&,~ EnvZh#Raʇ`J !yJ4Z4AuTTlVϾn Y4jK/4|2:2B 5t>eoj` w֭i]g$aKEK3[vSsHD@ /D8|ׇ)2}W]R;6TtSܙ+#xcG2y*a:5Ϻ7W5 }V7*ix0ޟXޘPO,F1dZԮ-1)LRGZ:b3%pmav-uf:TlĔMuJ*ïqp qk F֚3;?111} nwϡN^ˆ1\3)u3Q'zU*ܟBxn/XhᣙH鏄)DO?%xAe.oS?e00p_YX=S"HX@qzjz3$M;46SFFgvV2l¶{tDY[_A>Գ)GytJCե)]f}bb8'fb(艢S[/cW{_BjQHZ^^ OU0JaDD HvasqE >JR.ryVaM//Spx h;Ra ia8}w0ˍ`{b$n_ng2u'9]楡br\4G˜8(C6ΐ.^wue%|S8N7=+TIx̾KLa'>HA71^@<c]Ss+ѥ{jSÃS?׵ <)]6>? V"s2`XY9q:ޟB@O!Hޯ̑O|L (G0@s"J5gF Mы"]&ڄ)DJݱm|vDGf钡|uL8juzxw,=YyE+gr?`>sl'O>Qj{jPo `Cs_S>O!խ1eFX \},JC#~p[i~$"vl͓,CzQÈSwXzslddH^/W475VLJˆ$3SduQЬ-'KL @~4/z] ,wO`6KK $¤Y+H1w cr>_5G}jyy%[W}EMO5ꌯaxB4Kiy5 q Hc()=fH~0DK o U`".1'Cq9Rs"nIZ XI?l>I4z2Cfچccr!05cU\X V׺W#<hR@PahП#nFqA=_Vk=u eP ϐ&=%%qRXBwT S ?uomɅŽJ$/ 0/qQhN,SHb1$b":CP>ຍ+zE"&3 xJ͔rÅByPl} f܍9Ac64@*IƻdtCC]Kw)`l$ZPưߋEKr2C;Y-OX?4}md`#)1T믆n5Ϻ'Z^FwmEUQc S I)KKKb%ry Զ{SQzs|tdi}(!yBz 5J_Qv"t# mh72qܑΐ$r(ʾ}2Q maVhG=Xہ,2U)dF͟|}+1%H8 b+/޻ KZAšρ+Ȱ0Sk}_lc~# Ye޼<0 X%nP2:L*` r6h70<n Iqk!0S)׿ơݹr7%-F0de]P5=RQowcjH,yyεuL``lh\4IMY=ZD}A~z7>/o#Ѕ<xAegPX l=NHEROA?G a/qB,ˁnW2H b!v~ldq+l,Y^5p!0 pPCiiDȸS%C|92\sRvq4RQ-[%c)W1Ri63JɒkVN:]:r` &u՞Јh*JO؟~jLѕ>рݞ- y )F֘}_Q{IғqϾ|i}b8^`e"^-~`,zcIAHc2|rjr?%R{1Ѱ'?, j StVIuձj71Jc '!c-m ~-N(+gf3~b:2o iv>lܲZZ@.L8&)ip_)/ASUZ]-#.A`.N ]B 0(྆d<5l=~X$g?放GG-Ѽn{Eb f` QF㐩%d|t[/q!WiVJB?ld~ * SlZ13)[)KRv(|_kuGdS4uVhZǜW;zid=JД*F)N'b}|4נ?yĀ <۟kx zSҟ2S6tJhw+PD\S>N^}46(Ib~i,@y/+4I,Va> ;onYܵ&zl}sg6l}pZo_ft74c(S40L&6GK9'8(+ @6<ҕJ}DFY+{w>1yUϐT1"՟]~s |[j|s5D8` BXd\g_dz [\ph_HW+Uר\ [X/OswUl'YܥM [gvΐ9ΰMpRȦ.ABYJ iP&m113p`Rʥ5l^/b.qƢa0Sm0$@OAAxhܨؐHQ3IeU+[)p;ny=b{&Vp3LMS O&\*&r_=%HaM[%:h50%O@JF7١F=%(>2 =664rKݬr)w㇘G\k#R~lc/)!q_'y)sL 鰍ʯw苗X/zVpFJ:Xv(k}D1|7PMe8R^7p=`#S815[V{d6KE%F/ 1ƹ>FeEl`i4e~i6=E"S՚T^.X LVٷmSfvP0.]qn=BHgZ,FS`"k薡, QUoY3MgF]@®P/eM;<9=Ə:S0bgy>u>Ou %&+XRns)i$83<ĩwƻ)F=c}*Ő QHfu?G”}=:!SYv}oFO0/5+˾F2.adI^bҀYֿEYʶWz#ic#DlHjJe]ZTR8ZYh[b[o%=ctQ<{_b2oц10N[H?|µݞ63;Ͻӫ2̆yBI@BB/޿>I&}o)nZ]]~v!0N`%;1,ƒn;K)+vG컆)4` <Fش0˾B4A=C/RDa"(eL)SПd炰vh$sN.FzB0Pt[d TpO1EXzJ.& 1F6)Pʳ*M=+0ckXDllR\OPKL/N(=nOk&>({> ~t?Z2bu Q%YsAX @'}%q$$0 Չ={Bmp~[]1ɒ{Bȑ>,vV I剑IoΊ ĄҟL[j9ccps=.:ypftlK|FN5FsmG$EU_17-y)x?)}=k N.0W[ss;ǺPTN kB[X,$Li"H?fwVEn-JbR^QYIvG7k3/(VFKVbXL5j)߯jG^bkޙ{sn~ϡK dh }2fKow5`JUi~)s0R{C%(F)XQS0@杩j;F";JqW}6e!_BFC=j6'{y_<[uJ@| +QK׿ 5GZ B1%uO4z @&V&90xq$KyBطOF~BL2. %혚Y"Fdzh> Y4%]v飞G)$ΆC8B|0l2.?E+4/DcJˤ?o0C (o7 #c`MGe>OKL0e|8= g_ J%y\3\e`1p'h=n/d}%,\ 8]bL2^:qCc EmmBw$AqnʀHC0}}Ͳq2K_x$Kn):F}˫Z[ہ0iTK0&cϣi3z_iagڋ`6 gd9ghb==30$  Bӕ&vBR_YܪNaO"{pT8l?r>|° QQITO lcxl!gg} b,ΗWV7o}s`#*u!ڊ$E%8EKU]o)<]WϢ?E&+l|4x2hcBJ0K0 ?#SWȔI'_[a [Nnj)Ic;Ӌ(JQCuL6{}@8~]'B2 CB,ZLIzRSz9cH3u^b}MĨ~3% paDLD݁?C ʏU?`P0Wx?Q.F.adj( ^'NM)[Bs)wKBQ!+ViE: La')0)GZ.FZa=uRS>6%z$L'):+wpp>Sllhoa4osDC\\,_,,1jaʍjAcch"B3_yzNݺuݗnZj-]r5X;bJ*;< Y\ψ=Mcjma(UHÎ4=HS}U.Bn)d6rδݗ?@$d6K'H2 .׹_#)x陛NA@7-0 3a8}Ef݃|!+A!cXSkpS?ñAKxn\DfLI,J n #` LPp}1np)p)Li]ZF"[Qg/ K}mSÎ q 0ZBz8X@mlwml͖) r0?T@I̮X;m>ؤI`a&K?'?/Fxr0ۻ!I[$it xS22uĦP*B801>e?)l=x} C\G 0ri> ګﻞQ3 l bStڂˠM'"/=B)Bq)P!W w|~лBMc!\ Ib)`ay 8ސ# j |y ؇-BAhu-VS[? CZKhn!;qmq]ǢX]o6[)\ď{ `ƛA!HʡboWP0vu8#l/{%W_U9WuuFN ݙ\.wW>HQ%>C:Ƕte[lIkSkyvvvwD rntë\|_n! E_{{%憡+a ~ҽ^0e(: vO@"LW)j<56هS\GSS踓atso|ȑ{_}^0GW>Wpsvёpr/HgW3޲CDˆ]4vl[DBAϷWGOyO_viX=oPXي1oPTt}޽_ 柼v0};+VFDe,uS6mqb$|u˙G}!L?][KIEd宫V#Hh}p})*LL5=4y,SrŢ/d:;:Rr| oT4:nQҧRUiX FLaS9oYR ע7ys \§x|)I+"/߽&yfrKQ0_kD[%]t5/MUo} ɴ*l:NkzEaɧl} +l^Lad3sv϶e8d]61o>|4;6>\xcSO){yW3dƖʒ`ڜǿ}ɳkuӾ_i@փV<[G?.N9e;R]PHZE[z_)8;uXC=Oѡ%cd Sst[WN-EKY=G}qEZ?bpcn1/ˬJG>ef'GSͣ׮aS0{~kV+6%8gץ}'9E 3bev>>WmGS_?0d4?.E+sKo>%/Z施egIyTU6` t6Y/Ǯ|)Zk]藗C˩zI=s٬jrɬϟ+dDE@}}tˁ@دS%4h]ɺk6iJDt&Q>:D5u@fG,s E3}aٚߠC,U BB7(sàu-N g{,nmNAiB*8vPvWk`-6_D\Y,"u "̊93#yVLǚ2C룬ۼ3Xq8ޗ)ѯxHCF3uq{!gaEFYq܂ޗ)Gjq%{0ye.yZ:ְ{4oM h(ZbY\VK;=)§(mN0LŲQ7[4jf(\bR\Z*y5a ȇ$sO)hZS1i7} :p~F4ٌH,)>.0EM 8E"}1erlx~0dqB\ƙC@r>xS_{a._1jc9X9Z9r(3193R0(KN>m4kD##yOAȭc*&>奔olˣ?y{H|߿1e1SSgYޠn%ui} W:]tjfff_vK?So =m_V(|` :H|ӒB֠2&VVTInʻÃé{)} =p U*ᅥsYݬz0[#_Ȱ߼d3ht!k a6;<%~/M|)Rnhv.BE}.ILf(3Z_1CCX'Y3qܿ&uOI={r +w{#d( e UBKڡ#G͗njPеYRuhd@SS*uML}u"NqE>Laoxgnwڿxҍw\t!fוr1&3sl1_~=G ͪtOo!PZdL1/]6)Sטy# MPBNuPH=߯wG0RW *^3{1|09:lYG/| `s JOT>Hrjnx;l!yW7_޸[B$+`lᙡ-17<hr6V:鍙\e&MKXN9B9v}e0θ)zqlo,[>90G|8}I/.tWs)pJ\4hyX04 5|Jτp(dXA:;4H&| r#^%3dr "kA`rUoa)" 3LAV, : 5 7IZ3ï+B躹9u:75%=ܶoai*R*ݮSNY-v2֫LIb1鍁iD:<pY(n5;S\9` W$i@h3Z&)s=XAʊ)9 bH4,1͗F0R0%Ljp[bJQ8Ϝs= 9 wca?=vHjllX.Բŧu_tWv}=pP}LH~_+G>."À+#˯QSͲ%8 >};ka2OCT-qWML 4+dK/\55:&+2C9t(\.X*ڛEt_|z%ũI0i{ SWIS{hە[g M}!r\#&Vd S+H [z:>E14XXsC=R/;V1!)R~p4iIt/KP1EyDiFdQhXH>[ҍ<[مjG958Dň$Nz_ @$Sچn SEldZV0;)'kcK3%.B(>1rK3(3%9dZ It{u/Yv=\E!V8Uf6R .h~'[wC"ZP MԫK)&]d b`&ŵ0m~lxhHۮ&<&sh7#6FNHy Qɂ:^r9s{dQ*=^Z?8vp|dtPJ$bJ9ͥ΄wCùGyK1^oS~~/`d8)2N&bskSNg& ؾs =)TH''Pt_E2JgtpCYY=fՇ4k<>ROs%[FZ.-{CSvӼVe}| S2D*#|YLRë:s`'o׼LiHkEK\\z7]A#C7v1􌘳:6n%S1Ϗn\!HݢCMK,/r72dcg["&YSX*l x,1?E0Mmn~a6a})Z3Faz:c3+p(r) IGvjZb2Z63G׎KQhh+=`yd& 5c lSM2 ”")LI. Hs/U^3 05oƨ"XSm&FXD$M+agrOzڣ)n`JfdqDK>(TMeJ\3Z3+iΣ`J0ʻwk<)ʌuSp43hxa@SY LbΛesl~dO ! eNׇQYk'C\ Ü]kʂyoMnp3+I yg21)mj?ECUɶOZSO=*gE>ƭTxP<^4FQֵt0\ mݎλ99pŖsO/ן* ~4LdZi8lMoRy?HwKd_X ܋))OD`" [bEYe7ln)§8U2u@^¾AhYX %UOE9FFʀƧ$X4$5OzhJ_1D0FZLz_)3uCH>z3 uc/wvttpWMC)GiL*FLlSnUpYS8/ +3ẋaoJ?2Ywq1ͨU6b Ҩ X$Ri:_9G VLnXQ,wZS`Z61hx" j@8UE{|Zf8z˕t>E0 օZz q&] \6ՍuV09(,T)}؟BhL}A>0 5sLe(Ҁ6E}ߊt>E}N&W{P yGhBb`֖COs,2}lΞgؐ#46s>, U` Y71䩐ZLY;g6)ad7?G/]_-Ze:Ef~K7zw>28#l61E8>0}U78Eޠݫ oʛe/SMKK ҹJ3HݐUd6tߝ۳@ʮy\)0l>NHq4]0YI ZltV|ѳmk{0hvv.bbˆ# 😘3Go oXyܯ0$¾b*x\/ϡ;"!4'332(/gwSCrqv$i5a1 SptTUkSsॕ#^'wK%^h3쟋V6@Q.oC< T}ҭ^C߭s/BRhV-3΁)K<$MO 9ߨג] *C+׬ Dnmml,B|$St6d0dQ߫Mw=ШT8{SɭbrGS)GC_]?5Q/|?mL2>}Act$o}v% WRE<mb"m:Uҹ[~_ ZկjL+84La~ѱ;-dWqU~,L7\}bJ_K7)F{SURyS<6ifz91 )? ʛ)QG;'\/2a\;^Yww%LAzXq8a 47?{RZVR{`~J_KL'\R`cn5Q‘r$6ݺW_KNK~ѳO_ɻVwe]LWŗzqu>/ėxSXnE:tp۵%ʦ\)͡}>SD%/wO>K>Qv.rH=;bXv2܋1-/gxfṷRsgITB,PXa1S0c624k)R+Ťj>8}*~GA_7feSK->W3?#}S 5o-.,M{_wG,Q~a!,{XкSSx'ϽN<..΅sbsè+Z&]Y0GvpJJdMv:LNJg 2GϻSnё8=Sf>7R0Ŏ|KO:E38x6"_'dN+3 N4܅Z)%,Qht"K Zo>=C[5R HQ4 $:_7#7f<ٵ+҇>; QS(u| /+,6())&J=lJOP3l}\83۰LPbWp?~$HuT4|\!D+W@||JNXsk1qSX  ;aB3 ɪkŔqdR^7ؙ͂)G”~b={E6>#龄gww|={v+ ;w믿MW4,ՇOYX3ʶzSٍEI/{^Zg{'ͲZG3 1-,ƐGW_,֓xm` cLAN'ұҢZȺiK0k8bp<`džTR9PYdE/Fw8uR#k*Gz U縇b&CcOfG%Oy Tkd2f[N$ݘaxڍ p>/jH)\Su0E9Ri2u пؙM!`XaGߒw[e?lz>/ kS{z_R`Jg0gPED; ㏤%f%qg\6h_q4وu?<}!IChcٙxn?\cs 0φEUmߏ<[؏ n͗jnwX剥/d'-1%WHΟ2>5[$ɻaF"0""'bWtzrgYG"["àQIVİ*"EK uJS0A^2tg}A 7f.@ O+ҙ |y޻Zs` }04?#)7n-18;)Q,+FLxvK)6F(܎fbL ̣` Wv8ؑk X,EUg@ mStȻ("yM1E=>벜%uI'u ,蛹4h՛eQWBѭ1&Ɔ̖;^C;|m﫪oWfw{CO^r;PQ㍙k&Mrgd%n)]0TA%\bW~GZz_d=%{1EuO S~Y˯}mψ:i~z(L11En/|ð|Jew 5t;FuVDZ~e>Ș¬qgܱ}qN<~ݮB~ޗ̧ܺepW()k1EPZ\!cqcz`9YyRo Ξ}/ϰ` qgs}6aDK|';x!8+ M{L.mff}pU@$ـ)wii3zut6u91:7fsɢנ׺)y<$Hf' KԘYpA4NϽ^jj $^Vju MfawysHSTv㧯ep QٴNam;hS)]I {֏Lw,ꄋ%A0Լ;(uH>Hޗ)T e%DR|9JҟyοB\_6Q!̞Tܓ?]]vosrVS6}1E8w޻0-_2w2w2И")-^7Pۨu~=AX1R?6cyHn%>/ rCn~-Ccd\pGSO P2`Qr<%m)+(s.EVŖBSS&>9\_XQC}k~q޲0?YX. q;Jnu4ڽ|5mGU0eXkYj)zuBDŽUﱼz:0Q_ IDATszHjǔB)o崂 o"APuޜ->~S6SbeRr b /$hE^ou&/0-B kB.#'_KƸENF+d6T.Mz_S` dW*` VM1c>K:;@OZyI*R00% dǯTܒ`vnٟ^` NBrcVqGVpzg;ivc -()|v1BS|nV5M(cTO,툦]Enn=ݟF#C9Sm,)htAgȾB8Sc NQ̫/zQz_R~r9(Ԕ =\>r8'swx&+ n ?) ZH% 6I%uvDu_|ʺV Ę:߷u`Xj _VgPO=c(/qA=a˵k׎/r'zxB7?! S*Ţ)ϐye ,&k(|+Қ)u"ج4\a"I7)wY"y+RL0 NvV)3AxKxۊ se]"^d-kV\ D`lݎlUCSGb)"ꄋ}nɇtyhyra$ BϽ;sB S2<~nVew]"}q>%?^)}AK`:@x :) bvG%u Yhx :ũ0@J6KRv?k,0Ɇ0G]~(L!Cwe)z>$o[$#)g~044\|(SLRD6-dAPsm2jȄpIꔏ):όOK)/o˭0O5X,/Ԙ~_o'шx|#=?)ʿ*u - nM6PKG啩 R*R}Jn'J5J`q`ؽw☿orm/iv>et_E[iY锿Z.ʕ09 J~![#*QO S>/\a^ _G5_-׆SOd-S ;N>gSw1.=?Ŕ"Zbb,Tց{Ǟ?޻GuaǕ~g?S(aCs֙مt8^6CtF@(gh :_1y7MD'%VU?˧`Txp30w/@h4kS]>),yfs,uJ^Q[>.ԩ#/{)[bdrͦ)3 3@ڛ{N8znM_qmB=w`Jah[gzgeQቖ ުЃյ KCџ\0ݵr\͛oܘ.2\><%+1–ЄX?yuɱ!ݗɦyݣp "{M$:LPIB/$KPi]Kِp1f&2kB!#22SOLY%j ٥`ŰN) S" /9RV/nrC4)R60ӵ6Jy+K0N ;8[{‡w !Є qQ}>E6 J`KoJ5v3G!LmU%}<S2eۗo2yZ׷˷|.gy:52:Rz$-1cbBGj6Vя)RwJi _,Ot/ G=q1e׼0uȍ~EsSX=4ob^)"'K׸Y&O=cbۄm|t8¿199z堛`)<={۾0w;bN_.FR#9DrtZP`&G0EYxœR,//?V!p_>0dbم9?vw4x3[b߃QaV rBpP*)]O?е20F{& nS*@alI-\6bNLs*D a+ZL)QJb vl?pcf .nU=A11) cV5M=$^16k"5)&Y} ')v «ScF]S\f&GU:9( H&J;9` &Wu ؛ xՑZ rwʘlF)}^03dJ:oozZG3cbJ>w|8Y"̺rՂ?0Ǧ~$fp_%1(ᖯ  _bK7Jз0p5"WiCw-zZ)̢W!@ޗ` 'samN811F#N|s{\o1Vx/.$6cKo^lՊL9]W92cǶɔOR6 p-H-vRSX쨉}+Iu@ұ򓟼㛞SVaSթa'1%:_G= "5j<Ϸި}wACBVrŔL0n?XbQX |ţG)u7ӏ?1nh =3:gqAi%NwZ$an!c bXvqr7籏)|;BPW5 _kp]фIö=Dcla@e$?<71GX)e|h,+u$`ͭ&4w9z.=)Rŝ A+8x?'RVL((CSyr K`.dylPQv?3|t='ٵY^ڀ)G/,nOw^@vpUӅSqhIc+$nH$RݲNL .FE)©QT0t0ڇJ~ Y+%>%JGy([lDi9ɻtzf5dZ~[GɌ~$>, . SxݙR|$^0HO1qc׊')?,|Sznp<_xoǔ=u:LYwl*#XNA R5M9Qp=7czk7Π@}P0ES4-1u IDATRu êVK}8t{} 6H/->Oδ18i2ڃj lS7ۭK屏/d߀)os n>0 qS5+=mC7νͦ#.G\UO=[(DSB2.NBDmY,lŤ`jbJvzz6~kKl["T0*pn}I^# &TaڕڬĆ`}Z{YD*YJQ9 }Hv;)` Zz7RZ6j#ZU>Er!,>0RF3(G<$zfUZVip*e_TΑ< *0afeOT^))A 1f"&?!)Z?P|ނl%ޗ)myRx# Jk M+=G]eEi]LkW[7xl گbm[y4^S>L-mpH-ʣY:0L:K7DH]oq,8 )* ڽ,ꔾKSy%Gjog*E <ԲlFG#W_Ru hbbpFǬlFn?O NAq)K,Zťp4>E˧NaOŸ)]/[O˙fIGgV՚ 7K=zcs): p򚮞<'cD=][VM̧h%[(m F<w$ϹTFN L=TZTYH */Ik.kj#cr>W0Yf_bޡs1Ȁz_bpڭ)s83 Iab"z5B?,:DiK!Ky^g h ӿmd*1, OZaJyiq,x}딱hF->RK\#>kӹSCEo)^|O:KQN|lhN>dr5Ô{{_2HD "8M 7}C=SbJ*t2^"T]S\ק>/Crfzz(R@L5 vf:@|=rLmȝng&:ٝl0܏hu;G.}njbC̮Ôr`~f`q)GN0Zf&26um{?0b o:sD驎ѳ`Ҡ!BD b GYJګ{ [_>"ʢg1a/6$zN1(Js240E>rKm"Ba"Zg@">e}r%M g@CWܟ|LOKT!D/z ۳PCZ&/ @B"{ *e|p杮=PSM-p9m&fDiY5^ uN e]&^`BlhQ3 M0Ez_+xlZp8Ӡc E;2D!gV[/-]zor<+jy2:\/Yv\>92wWC#mZH2~ygG-Zx+=uN&?~$ISR JE7P{ll Sҫ= C KM{_qS6`J_%uK<(bȐEO,8=1eRB}Pbav7%%;wFGk2 tfaq~JfE \U0b7w<#3:j~S)&|JJju^Di H7ذI} Z~_0%xg,g:5)(#X5lyҧv/ѱlj LAb~cʟv0Y c- +}/x-wVFk=>6m<X 7 ;3}߳F$  HmRwnw{BK|) L]O&GWhd6;H=)}os s=/jL`] Ik8͍_?qSlh!9axiS2dq M`T4d ~O,K:MXmhKҽp$tm`JR!g-2,fj3~q9gk1[?..V¦ט/5>y+gn2tSJEitTzIdr6sl<66IBGP+f{wNϛLEpE6z_,}@PCS.4GkVL؆dȉ@V2'[1ES,&sӭ.Pr|hU Uϭc+([z_B]؂ FghհhvYf/8[ˬy*|zYS&S4̥h"Ino 2jûkc) pYSŔx}F(Nw fYQKF:4ҩU Ă)$>XP8\U rڊτ))Gw;:EovzQ3Z,<>6!f<,O6A3䌾Z={<~oK{_AW w̏ vTf؈+ImҼҾ)§ w4"9bL1[N%'*7s?TqnœGy}? T?u,c=kpf!;SE"_qp>%n+"VJ0ENr>&l_b/9j̫lo}Ȃ|O!rкY LSB씒 hjq`}~ ugKKɿV1e! ,=i̙-Vi(uhR(T:W."(n {0E=iRGոFm3Yk4C#jë%Y1߂) y\&5VݕfSMjP*s6J 槨u)bw:5N)\9}]%bGO4D-*e8-1uq&({_>ehȟ9jY)@&NT,. @ j:LQCrڂ)^_cz|fMxk!TIhpȣZrL.Zy<^m;GQD>rzx$\.嫹G![3BI ۂ>~6tea|l43?yv ?§ ڴ;ǔz_4 }< LYOԑ S؅OI&cd:468h+4`DX[<jz/+ڀܬRa}ojbrm޽->AšiD2q (]Fg8/`*La)^HţnV0#9b`&0A0EYzjrnٿ"/Sél5&O@0hx=exDd,BLQ99J,yaVNHʃe^kk [&II]ߥ/AM?Ǵ:"?%OTYşRoԛs=_w= Lx4&+/#mGf*C\QKm"f7e*m΀){^8Pֹ! ,*Egf ]oF?$!G46 =wi0f~KLqdΉli2<JpAj eQ8wc* jvcV @!WJYye|L tiK*L*߫Vid UE/]D`gSdv+;}ȓ&/$beG{TO dH>E}1gytEyG` [iK{ɇS1FC]cT= .EK]${z[hݳrYg ыȲ?nٜ)NӨK~7NqD49o۽{ge%NhS<:,U.eܫSܵ #GΝ/ -B!{^V1VnDޚ_2 2 GOBS}ISŁpZFa;G/c4 \N޺V;t`пAŹ%ճAEW~tܧHǖ70f;aJ͘"/xT`J%H-m#NH4bX\/O08k4jm|fz10El>Z\^}2Z:f_V_R~Q GK IVRPU6h juLA oܵkg1MލLtb#eET]Q u>|~sClLX 27݂)bw(VY)yUZ7& HK4Ә{ ׷`4iH`kA_r6VLJL}iJν/3F[O'-17])3>+hzw/s/4IE>1 '0EN]I-X8oPGއ)`rV0ejblub^X$A0ڰ:-LZ~ =z>e+|Nدჶ[W*<2'SRٴ#8f.K<\a Mg=Ĕߚ7vu '3\9 bAxRridoU<-SroZL!dt,3qj,pgΧ!u7ukhUdv vitKO^R_ L1*`7~6zHgp,)~z'WgO3-4!)Tk:Qf'h) .:-ux}d5C쀏`JWn'hj^,u{_J#MHpEa=99'SScLN3-=8D[նś){J[7tLopT Q]>]jNaJem2piN¾d7XWcbZ*+y񹝟$_ڙυXE@RIKe6 '/W"#rn=/nP:w˿444QxSSp?k1.ÂP1Ev ɣ'`aȣ8F,G<| -+O̼Lqqh9]a=ǟOo}@4 FۭN֜E&>T')\{҅xozjIJ:%sO"B6u/7_'ɖq0oW},LȪ1 Ebj=9E7[g@)OIxVWb/.Fko׻9|bAEØɁBYu8 [u_[0%WH[>rtsĞ6B c˱ɋ>>S4uJ"S?LZXDر Uœ( \hG+}kC=&|r[h64 @绀pؓ=)uo %ʂ ^J?E0e/?mٹUfR10E17CpߟO@\cQ0B,tЄ[t5Z+F~.斊ܟA d* ŜS+5vz)4&ci;|{n!\8zE 2F-ho,Nz#˚^Ŕ+g*d0m->f0F14 9'v9Mw(`,>qp-/zrۨ"/:%KED<$Q7u);E%.7hUW?W|~M3AaGWGB`X 0'έnF}ݎ~P4-H"t;se EN0U18B~llX)DOҙ-hBAX=˙ "&ĺ/JVUdK2gS~0w2ž%fu:i0EtDC3KJixrހXl RtV!15bi<;?)o2 xh f_޽?뽕J'q׃mjv!f')a)tmw|{l8LFcH~Nvug_Nik WT{``J/#xe8_dI0F!ee#]}ڊuϞ>JVLd`ƤX]x}dw.Uh ;RJ. LȣG۫aF_O1juua OʇSFz,uŲF:#x3zU) g ʭas|\1|L1mcM&[pc P0C|Sd8vL10':{ lUߨS80 ^8 pf4ӕZWfDzCC3Qw]^r|O_^|e>MRJkAS/I*_n9gʉ*|>GX** Pb"/m>~7hk+Ǟߙ[^Z՝۫33cAߺG`^0ebNZC0bS)h.ein޽NT&3r_KY6cG.晾ι &a62}ĉcǜOLX_(`eNr Uە Ce?x:E0噽Op>f>iq0GuʀOmO$R|5+9Eѳ|L/T:=V8Gy8粶116ٽo_ b-U #7n.]2b7)0z YJ|Of>O)Ϻb>;= iy/hN1eG._> 4ZcHI"/ :$i)5"bkf 3lc>E#klAsNT\3w0gg^ޠmܢUUo` ĎՉaϬ>Li)pz^wwbG iN P L%Szx 3pusKýD`2j7~s{ L/T]CGz_tRى-(u6.Y(ybt#C33܍D} R)W4DJNZbS(9*9 Rml{%&[ÞwzxG1>rW\v\4-IeP;0E77Ԫ;E~T Vµx&y􄱈轤  '.DG'^n!ie>p Xݟ|r՟.)B]p` ֚vAyO鶚<&tܛ/w4v`#Pܭ'Su`yQ0EŔgSLX=fLɞH%J7c^vKM0Q)7V~FN,>b'm&)lU4th'e]8z kgTW}quv 4ϟ;޻gWWOARt{,(RZ9.fF;*S nd5xHd[0nP\O2F΄GbF0Ez*)L0 m778}6˗2ek}gklb0e/y;Ͽx06>QǮO|=7/S8I0/i9Z\(]PT",^6&ڈUU ;}I27)OF.}"cc%Ael({:E8Ht͸ZW_0f¬)QUˉC7C2AbR&>WCkv La8)M_$KŔw<ʋ:cpBEHkdPLXK]k K` &KMBEFKCSd7 7쓩x<ܶ%uJ"$r-t_V/f`JM[N+5[gGL0(3ҸeaqPܟyNᴏ[@*ckwC~U˷hZZ:B`U3V7:nԚBgRXDTM"vA!XTLifbĠ L"$S x6nSK7MZb9W}W̒m<M\N'_=W\{%f_b\~RfZ͑,A`{TWmuNmvf=l"/;z U!"3/Z2uLAkVAC Mb5Wl0:&;n޶H9zSk|t$n~,MJ0_+Ȏ+>nj#I4C7VAkuҕ@=gG $mXKN@aGLlPS))o\4q-FVF1<.':8:E1}1H اa;XY4{iԭVkO!m*BJ|=y9cyH秘U#G=NZȗXq 435{A=bzcoSKײ{w1-nPD`j~vЮK!/Sfgo{#i^TS\ѝL#%Zx WBMF6ͧ)bqg4Y;Zl/rGlSݫS' sb@=öo{>R[Wז҅˜K' s2{D~;{ F@.7d0oX%n5omNQ=${t%"Hϐ~Q[ u}u1TlZ3Y}hibr|y\~$A2mS)Bk,XA؝ݠ 歽:L@"8pZ9}1W& O;pZ{H׽` ]! >E\Z\Zpy옚:BHDkOk| .<&>%VFA>{ݔ j؃}asӛT\5z=h>efbdQGNq ȕ }3XF:8ѣe҈?2 \ fڳ]qqcdl4aS'kX&̵Ϟp)j~/sNt@zYUlJT|`JT2Pb0SB(+V_iks9zz}29S+ڸ4zI<\.W 0X$UL3jS& 6_ZFT1]Z)BK >'`SE1f2jP:q&&hH2G]{bKWL6}A]0 O(Yf*` Ÿ|T9>oeMR)jod zxP.~̣`ZȘ@SD ]4]l<)C,ѣ}Q) 7C xa"]8zх5Yך7Ø"Zb_?-W\Itt$ih;s1R1e>'I׃)jSk nF @,-t6|DCʩ|ԟS|lVzJ3(-B}Vr33N٣x{m4XyM`JDM|NބHzۙV479 6.0_;|1e!Lqy\8gl +K` {sbѷw||2::d`?⪏FwicbrTdbT{'[w w9sݮge{LY\ڹ) Ag}Sq(Bs\ݻ.]^3Cp IDATt1XxX0HFJh%9хOy˦3X4Oqv,.}p0m5ɷ_H$ֶyLY]2PXZj 790hCCC(,CjIҐitNucwn)mĵ8%bLmblވM2̧P51Qimx J+ .*j IbNJ74>j͆~R@]9:L1v 2=)cI$s2u6j ^g&U ajh[Cނ)3FM<$1:H%p:ج*xΜyy"#0^[*)HIV/ְgn#gW|?U4i(3zdFǙuu;Zy+fG-K{_kuJ:%W~vL]b=nGnbt>==+|,ۊzaLm Sgj\Wjf>ePc@ΧWarE] LR-NYXZ,cʑz]7AI!]F1:׶2?7k9xE>y7K+uix ;+9 brS'4;,O._USy<"vQz]ťzJu04z'w=͂hI}BbN].f[_6+a4!h[ 3trg\snKEX,;Q:cP\zJc1hVmͣG@hHhTc=)}BQR QH Kd`K\9\&Z<.H V}5LF#du>zRSh3V{Rs.m* g5sxyPc𐳹kdǂ\/żX FbSPq$di5Ȕ2to0L9u}Gb!o'FZE F ӲЎl^39r;22jۥ❷/𼇃Y~ηN9":E0%_9ծ j6@clrvqo v"Zz0>_ߕזwuT$]Ny:e3ןS$PH[S][jrb֘cc 5Q~=;[eJ!K[OT\YOs)| `\8Kf)?t׿f-Scͳ$ث'42Я2o\p/ =LINJ*GtJ/+)t(j#^l6)vӭgk4H^$]g?G/Zb s,ꋧg0wsI1Ei.YzN7ʦc6ԯC/SėUCOA za'vw{yh.ٵQa}R`$"/L(lSssv)6aѩLv!NBCz +0E4- U-۲,[ױ5$P6SzX 0Ec|ky2 wl}xW00؜~%uxց)8ّ&*")Vs#1LjIsM.DPtLn|ֳg_\o5fI0ś)O0u` wcX,{Xt_JӮr`fՆYl6C!_o}}y|_sZ'SNl$IA/Sػ* [!hW~uěESXxu/Zb:+kbFZWMr7˛"d^]] zSK '#9Mze]_ٵJ_"$|wnaj5'dK=z6:L쑘"^K|-/y/+hb@Rd4ֽu?S)<ї# )H;}5-gHVj3Awge2_)+_0 ޗꔓ(lL~rE qo~SX lӞ (kSizeFactors.size () - 1); sizeParameter = new RangeParameter (STR ("EditorSize"), kSizeParamTag, nullptr, 0, kMaxValue, 1, kMaxValue); sizeParameter->setMin (0); sizeParameter->setMax (kSizeFactors.size () - 1); setSizeFactor (currentSizeFactor); sizeParameter->addDependent (this); } //------------------------------------------------------------------------ EditorSizeController::~EditorSizeController () { if (sizeParameter) sizeParameter->removeDependent (this); } //------------------------------------------------------------------------ void PLUGIN_API EditorSizeController::update (FUnknown* changedUnknown, int32 /*message*/) { auto* param = FCast (changedUnknown); if (param && param->getInfo ().id == kSizeParamTag) { auto index = static_cast (param->toPlain (param->getNormalized ())); if (sizeFunc) sizeFunc (kSizeFactors.at (index)); } } //------------------------------------------------------------------------ VSTGUI::CView* EditorSizeController::verifyView (VSTGUI::CView* view, const VSTGUI::UIAttributes& /*attributes*/, const VSTGUI::IUIDescription* /*description*/) { auto* control = dynamic_cast (view); if (control) { sizeControl = control; sizeControl->setValueNormalized (sizeParameter->getNormalized ()); sizeControl->setListener (this); sizeParameter->deferUpdate (); } return view; } //------------------------------------------------------------------------ void EditorSizeController::valueChanged (VSTGUI::CControl* pControl) { if (!pControl) return; auto normValue = static_cast (pControl->getValue ()); sizeParameter->setNormalized (normValue); } //------------------------------------------------------------------------ void EditorSizeController::controlBeginEdit (VSTGUI::CControl* pControl) { if (!pControl) return; } //------------------------------------------------------------------------ void EditorSizeController::controlEndEdit (VSTGUI::CControl* pControl) { if (!pControl) return; } //------------------------------------------------------------------------ void EditorSizeController::setSizeFactor (double factor) { if (!sizeParameter) return; auto iter = std::find (kSizeFactors.begin (), kSizeFactors.end (), factor); if (iter != kSizeFactors.end ()) { sizeParameter->setNormalized (sizeParameter->toNormalized (iter - kSizeFactors.begin ())); if (sizeControl) sizeControl->setValueNormalized (sizeParameter->getNormalized ()); } } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/editorsizecontroller.h000066400000000000000000000073121461511344300270730ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/hostchecker.h // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "vstgui/lib/vstguifwd.h" #include "vstgui/uidescription/icontroller.h" #include "public.sdk/source/vst/vsteditcontroller.h" #include "public.sdk/source/vst/vstparameters.h" #include "base/source/fobject.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { using SizeFactors = std::vector; static const SizeFactors kSizeFactors = {0.75f, 1.f, 1.5f}; class EditorSizeController : public FObject, public VSTGUI::IController { public: //------------------------------------------------------------------------ using SizeFunc = std::function; EditorSizeController (EditController* editController, const SizeFunc& sizeFunc, double currentSizeFactor); virtual ~EditorSizeController (); static const int32_t kSizeParamTag = 2000; void PLUGIN_API update (FUnknown* changedUnknown, int32 message) override; VSTGUI::CView* verifyView (VSTGUI::CView* view, const VSTGUI::UIAttributes& attributes, const VSTGUI::IUIDescription* description) override; void valueChanged (VSTGUI::CControl* pControl) override; void controlBeginEdit (VSTGUI::CControl* pControl) override; void controlEndEdit (VSTGUI::CControl* pControl) override; void setSizeFactor (double factor); OBJ_METHODS (EditorSizeController, FObject) //------------------------------------------------------------------------ private: VSTGUI::CControl* sizeControl = nullptr; RangeParameter* sizeParameter = nullptr; SizeFunc sizeFunc; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/eventlistcheck.cpp000066400000000000000000000220651461511344300261560ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/eventlistcheck.cpp // Created by : Steinberg, 12/2012 // Description : Event List check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "eventlistcheck.h" #include "eventlogger.h" #include "logevents.h" #include "pluginterfaces/vst/ivstcomponent.h" #include "pluginterfaces/vst/ivstevents.h" //------------------------------------------------------------------------ // EventListCheck //------------------------------------------------------------------------ EventListCheck::EventListCheck () : mEventLogger (nullptr), mComponent (nullptr) { } //------------------------------------------------------------------------ void EventListCheck::check (Steinberg::Vst::IEventList* events) { if (events) { if (!checkEventCount (events)) mEventLogger->addLogEvent (kLogIdNumInputEventExceedsLimit); Steinberg::int32 lastSampleOffset = 0; Steinberg::Vst::TQuarterNotes lastPpqPosition = 0; Steinberg::int32 eventCount = events->getEventCount (); for (Steinberg::int32 eventIdx = 0; eventIdx < eventCount; ++eventIdx) { Steinberg::Vst::Event event = {}; Steinberg::tresult tResult = events->getEvent (eventIdx, event); if (tResult != Steinberg::kResultOk) { mEventLogger->addLogEvent (kLogIdCouldNotGetAnInputEvent); continue; } if (event.sampleOffset < lastSampleOffset) { mEventLogger->addLogEvent (kLogIdEventsAreNotSortedBySampleOffset); lastSampleOffset = event.sampleOffset; } if (event.ppqPosition < lastPpqPosition) { mEventLogger->addLogEvent (kLogIdEventsAreNotSortedByPpqPosition); event.ppqPosition = lastPpqPosition; } checkEventProperties (event); } } } //------------------------------------------------------------------------ bool EventListCheck::checkEventCount (Steinberg::Vst::IEventList* events) { if (events) { return events->getEventCount () >= 0 || events->getEventCount () < kMaxEvents; } return true; } //------------------------------------------------------------------------ void EventListCheck::checkEventProperties (const Steinberg::Vst::Event& event) { //! TODO: Make this method smaller if (!checkEventBusIndex (event.busIndex)) { mEventLogger->addLogEvent (kLogIdInvalidEventBusIndex); return; } if (!checkEventSampleOffset (event.sampleOffset)) { mEventLogger->addLogEvent (kLogIdInvalidEventSampleOffset); } switch (event.type) { case Steinberg::Vst::Event::kNoteOnEvent: { if (!checkEventChannelIndex (event.busIndex, event.noteOn.channel)) mEventLogger->addLogEvent (kLogIdInvalidNoteOnChannelIndex); if (!isNormalized (event.noteOn.velocity)) mEventLogger->addLogEvent (kLogIdInvalidEventVelocityValue); if (!checkValidPitch (event.noteOn.pitch)) mEventLogger->addLogEvent (kLogIdInvalidEventPitchValue); if (mNotePitches.find (event.noteOn.pitch) != mNotePitches.end ()) { mEventLogger->addLogEvent (kLogIdNoteOnWithPitchAlreadyTriggered); } mNotePitches.insert (event.noteOn.pitch); if (event.noteOn.noteId >= 0) { if (mNoteIDs.find (event.noteOn.noteId) != mNoteIDs.end ()) mEventLogger->addLogEvent (kLogIdNoteOnWithIdAlreadyTriggered); } mNoteIDs.insert (event.noteOn.noteId); break; } case Steinberg::Vst::Event::kNoteOffEvent: ///< is \ref NoteOffEvent { if (!checkEventChannelIndex (event.busIndex, event.noteOff.channel)) mEventLogger->addLogEvent (kLogIdInvalidNoteOffChannelIndex); if (!isNormalized (event.noteOff.velocity)) mEventLogger->addLogEvent (kLogIdInvalidEventVelocityValue); if (!checkValidPitch (event.noteOff.pitch)) mEventLogger->addLogEvent (kLogIdInvalidEventPitchValue); if (mNotePitches.find (event.noteOff.pitch) == mNotePitches.end ()) { mEventLogger->addLogEvent (kLogIdNoteOffWithPitchNeverTriggered); } mNotePitches.erase (event.noteOff.pitch); if (event.noteOff.noteId >= 0) { if (mNoteIDs.find (event.noteOff.noteId) == mNoteIDs.end ()) { mEventLogger->addLogEvent (kLogIdNoteOffWithIdNeverTriggered); } } mNoteIDs.erase (event.noteOff.noteId); break; } case Steinberg::Vst::Event::kDataEvent: ///< is \ref DataEvent { break; } case Steinberg::Vst::Event::kPolyPressureEvent: ///< is \ref PolyPressureEvent { if (!checkEventChannelIndex (event.busIndex, event.polyPressure.channel)) mEventLogger->addLogEvent (kLogIdInvalidPolyPressChannelIndex); break; } case Steinberg::Vst::Event::kNoteExpressionValueEvent: ///< is \ref NoteExpressionValueEvent { if (!isNormalized (event.noteExpressionValue.value)) mEventLogger->addLogEvent (kLogIdNoteExpressValNotNormalized); checkNoteExpressionValueEvent (event.noteExpressionValue.typeId, event.noteExpressionValue.noteId, event.noteExpressionValue.value); break; } default: { mEventLogger->addLogEvent (kLogIdUnknownEventType); break; } } } //------------------------------------------------------------------------ bool EventListCheck::checkEventBusIndex (Steinberg::int32 busIndex) { if (mComponent) { Steinberg::int32 busCount = mComponent->getBusCount (Steinberg::Vst::kEvent, Steinberg::Vst::kInput); return busCount >= 0 && busIndex < busCount; } return false; } //------------------------------------------------------------------------ bool EventListCheck::checkEventSampleOffset (Steinberg::int32 sampleOffset) { return sampleOffset >= 0 && sampleOffset < mSetup.maxSamplesPerBlock; } //------------------------------------------------------------------------ bool EventListCheck::checkEventChannelIndex (Steinberg::int32 busIndex, Steinberg::int32 channelIndex) { if (mComponent) { Steinberg::int32 busCount = mComponent->getBusCount (Steinberg::Vst::kEvent, Steinberg::Vst::kInput); if (busCount >= 0 && busIndex < busCount) { Steinberg::Vst::BusInfo busInfo = {}; Steinberg::tresult tResult = mComponent->getBusInfo ( Steinberg::Vst::kEvent, Steinberg::Vst::kInput, busIndex, busInfo); if (tResult == Steinberg::kResultOk) { return channelIndex >= 0 && channelIndex < busInfo.channelCount; } } } return false; } //------------------------------------------------------------------------ bool EventListCheck::checkValidPitch (Steinberg::int16 pitch) { return pitch >= 0 && pitch <= 127; } //------------------------------------------------------------------------ bool EventListCheck::isNormalized (float normVal) const { return normVal >= 0. && normVal <= 1.; } //------------------------------------------------------------------------ void EventListCheck::checkNoteExpressionValueEvent ( Steinberg::Vst::NoteExpressionTypeID /*type*/, Steinberg::int32 /*id*/, Steinberg::Vst::NoteExpressionValue exprVal) const { if (!isNormalized (exprVal)) { //! Todo } } //------------------------------------------------------------------------ void EventListCheck::setProcessSetup (Steinberg::Vst::ProcessSetup setup) { mSetup = setup; } //------------------------------------------------------------------------ void EventListCheck::setEventLogger (EventLogger* eventLogger) { mEventLogger = eventLogger; } vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/eventlistcheck.h000066400000000000000000000075731461511344300256320ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/eventlistcheck.h // Created by : Steinberg, 12/2012 // Description : Event List check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstnoteexpression.h" #include class EventLogger; namespace Steinberg { namespace Vst { class IEventList; class IComponent; struct ProcessSetup; struct Event; } } //------------------------------------------------------------------------ // EventListCheck //------------------------------------------------------------------------ class EventListCheck { public: //------------------------------------------------------------------------ EventListCheck (); static const Steinberg::int32 kMaxEvents = 2048; using Notes = std::set; void check (Steinberg::Vst::IEventList* events); void setComponent (Steinberg::Vst::IComponent* component) { mComponent = component; } void setProcessSetup (Steinberg::Vst::ProcessSetup setup); void setEventLogger (EventLogger* eventLogger); //------------------------------------------------------------------------ protected: bool checkEventCount (Steinberg::Vst::IEventList* events); void checkEventProperties (const Steinberg::Vst::Event& event); bool checkEventBusIndex (Steinberg::int32 busIndex); bool checkEventSampleOffset (Steinberg::int32 sampleOffset); bool checkEventChannelIndex (Steinberg::int32 busIndex, Steinberg::int32 channelIndex); bool checkValidPitch (Steinberg::int16 pitch); bool isNormalized (float normVal) const; void checkNoteExpressionValueEvent (Steinberg::Vst::NoteExpressionTypeID type, Steinberg::int32 id, Steinberg::Vst::NoteExpressionValue exprVal) const; EventLogger* mEventLogger; Steinberg::Vst::IComponent* mComponent; Steinberg::Vst::ProcessSetup mSetup; Notes mNotePitches; Notes mNoteIDs; }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/eventlogdatabrowsersource.cpp000066400000000000000000000240371461511344300304460ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/eventlogdatabrowsersource.cpp // Created by : Steinberg, 12/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "eventlogdatabrowsersource.h" #include "pluginterfaces/base/ustring.h" #include "logevents.h" using namespace Steinberg; using namespace Steinberg::Vst; namespace VSTGUI { //----------------------------------------------------------------------------- EventLogDataBrowserSource::EventLogDataBrowserSource (EditControllerEx1* /*editController*/) { mLogEvents.resize (kNumLogEvents); for (Steinberg::uint32 i = 0; i < mLogEvents.size (); ++i) mLogEvents[i].id = i; } //----------------------------------------------------------------------------- EventLogDataBrowserSource::~EventLogDataBrowserSource () {} //----------------------------------------------------------------------------- int32_t EventLogDataBrowserSource::dbGetNumRows (CDataBrowser* browser) { (void)browser; return kNumLogEvents; } //----------------------------------------------------------------------------- int32_t EventLogDataBrowserSource::dbGetNumColumns (CDataBrowser* browser) { (void)browser; return kNumColumns; } //----------------------------------------------------------------------------- bool EventLogDataBrowserSource::dbGetColumnDescription (int32_t index, CCoord& minWidth, CCoord& maxWidth, CDataBrowser* browser) { (void)index; (void)minWidth; (void)maxWidth; (void)browser; return false; } //----------------------------------------------------------------------------- CCoord EventLogDataBrowserSource::dbGetCurrentColumnWidth (int32_t index, CDataBrowser* browser) { static const CCoord typeWidth = 40; static const int32 countWidth = 80; if (index == kType) return typeWidth; if (index == kCount) return countWidth; return browser->getWidth () - (typeWidth + countWidth); } //----------------------------------------------------------------------------- void EventLogDataBrowserSource::dbSetCurrentColumnWidth (int32_t index, const CCoord& width, CDataBrowser* browser) { (void)index; (void)width; (void)browser; } //----------------------------------------------------------------------------- CCoord EventLogDataBrowserSource::dbGetRowHeight (CDataBrowser* browser) { (void)browser;return 18; } //----------------------------------------------------------------------------- bool EventLogDataBrowserSource::dbGetLineWidthAndColor (CCoord& width, CColor& color, CDataBrowser* browser) { (void)browser; width = 1.; color = kGreyCColor; return true; } //----------------------------------------------------------------------------- void EventLogDataBrowserSource::dbDrawHeader (CDrawContext* context, const CRect& size, int32_t column, int32_t flags, CDataBrowser* browser) { (void)flags; (void)browser; context->setDrawMode (kAliasing); context->setFillColor (kGreyCColor); context->drawRect (size, kDrawFilled); UTF8String name; switch (column) { case kType: name = "Type"; break; case kCount: name = "Count"; break; case kDescription: name = "Description"; break; } context->setFont (kNormalFont); context->setFontColor (kBlackCColor); context->drawString (name, size); } //----------------------------------------------------------------------------- void EventLogDataBrowserSource::dbDrawCell (CDrawContext* context, const CRect& size, int32_t row, int32_t column, int32_t flags, CDataBrowser* browser) { (void)flags; (void)browser; CColor cellColor (kWhiteCColor); bool oddRow = row % 2 != 0; if (oddRow) { cellColor = kBlackCColor; cellColor.alpha /= 16; } UTF8String cellValue; LogEvent& logEvent = mLogEvents.at (row); if (logEvent.count > 0) { if (UTF8String (LOG_ERR) == logEventSeverity[logEvent.id]) cellColor = kRedCColor; else if (UTF8String (LOG_WARN) == logEventSeverity[logEvent.id]) cellColor = kYellowCColor; else if (UTF8String (LOG_INFO) == logEventSeverity[logEvent.id]) cellColor = kBlueCColor; if (oddRow) cellColor.alpha /= 2; else cellColor.alpha /= 3.; } context->setFillColor (cellColor); context->drawRect (size, kDrawFilled); switch (column) { case kType: { if (logEvent.count > 0) cellValue = logEventSeverity[logEvent.id]; break; } case kDescription: { cellValue = logEventDescriptions[row]; break; } case kCount: { char txt[32]; snprintf (txt, 32, "%" FORMAT_INT64A, logEvent.count); cellValue = txt; break; } } CRect cellSize (size); cellSize.inset (5, 0); context->setFont (kNormalFontSmall); context->setFontColor (kBlackCColor); context->drawString (cellValue, cellSize, kLeftText); } //----------------------------------------------------------------------------- CMouseEventResult EventLogDataBrowserSource::dbOnMouseDown (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) { (void)browser; (void)column; (void)row; (void)buttons; (void)where; return kMouseDownEventHandledButDontNeedMovedOrUpEvents; } //----------------------------------------------------------------------------- CMouseEventResult EventLogDataBrowserSource::dbOnMouseMoved (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) { (void)browser; (void)column; (void)row; (void)buttons; (void)where; return kMouseEventNotHandled; } //----------------------------------------------------------------------------- CMouseEventResult EventLogDataBrowserSource::dbOnMouseUp (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) { (void)browser; (void)column; (void)row; (void)buttons; (void)where; return kMouseEventNotHandled; } //----------------------------------------------------------------------------- void EventLogDataBrowserSource::dbSelectionChanged (CDataBrowser* browser) { (void)browser; } //----------------------------------------------------------------------------- void EventLogDataBrowserSource::dbCellTextChanged (int32_t row, int32_t column, UTF8StringPtr newText, CDataBrowser* browser) { (void)browser; (void)column; (void)row; (void)newText; } //----------------------------------------------------------------------------- void EventLogDataBrowserSource::dbCellSetupTextEdit (int32_t row, int32_t column, CTextEdit* textEditControl, CDataBrowser* browser) { (void)browser; (void)column; (void)row; textEditControl->setBackColor (kWhiteCColor); textEditControl->setFont (kNormalFontSmall); textEditControl->setFontColor (kRedCColor); textEditControl->setTextInset (CPoint (5, 0)); textEditControl->setHoriAlign (kLeftText); } //----------------------------------------------------------------------------- int32_t EventLogDataBrowserSource::dbOnKeyDown (const VstKeyCode& key, CDataBrowser* browser) { (void)key; (void)browser; return -1; } //----------------------------------------------------------------------------- bool EventLogDataBrowserSource::updateLog (const LogEvent& logEvent, bool incrementCount) { bool bResult = mLogEvents[logEvent.id].count != logEvent.count; LogEvent& tmpEvent = mLogEvents.at (logEvent.id); if (incrementCount) { tmpEvent.count += logEvent.count; return true; } tmpEvent.count = logEvent.count; return bResult; } //----------------------------------------------------------------------------- } // namespace vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/eventlogdatabrowsersource.h000066400000000000000000000113431461511344300301070ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/eventlogdatabrowsersource.h // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" #include "vstgui/vstgui.h" #include "logevents.h" namespace VSTGUI { //----------------------------------------------------------------------------- class EventLogDataBrowserSource : public CBaseObject, public DataBrowserDelegateAdapter { public: EventLogDataBrowserSource (Steinberg::Vst::EditControllerEx1* editController); ~EventLogDataBrowserSource (); using LogEvents = std::vector; enum eColoumns { kType = 0, kDescription, kCount, kNumColumns }; int32_t dbGetNumRows (CDataBrowser* browser) SMTG_OVERRIDE; int32_t dbGetNumColumns (CDataBrowser* browser) SMTG_OVERRIDE; bool dbGetColumnDescription (int32_t index, CCoord& minWidth, CCoord& maxWidth, CDataBrowser* browser) SMTG_OVERRIDE; CCoord dbGetCurrentColumnWidth (int32_t index, CDataBrowser* browser) SMTG_OVERRIDE; void dbSetCurrentColumnWidth (int32_t index, const CCoord& width, CDataBrowser* browser) SMTG_OVERRIDE; CCoord dbGetRowHeight (CDataBrowser* browser) SMTG_OVERRIDE; bool dbGetLineWidthAndColor (CCoord& width, CColor& color, CDataBrowser* browser) SMTG_OVERRIDE; void dbDrawHeader (CDrawContext* context, const CRect& size, int32_t column, int32_t flags, CDataBrowser* browser) SMTG_OVERRIDE; void dbDrawCell (CDrawContext* context, const CRect& size, int32_t row, int32_t column, int32_t flags, CDataBrowser* browser) SMTG_OVERRIDE; CMouseEventResult dbOnMouseDown (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) SMTG_OVERRIDE; CMouseEventResult dbOnMouseMoved (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) SMTG_OVERRIDE; CMouseEventResult dbOnMouseUp (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) SMTG_OVERRIDE; void dbSelectionChanged (CDataBrowser* browser) SMTG_OVERRIDE; void dbCellTextChanged (int32_t row, int32_t column, UTF8StringPtr newText, CDataBrowser* browser) SMTG_OVERRIDE; void dbCellSetupTextEdit (int32_t row, int32_t column, CTextEdit* textEditControl, CDataBrowser* browser) SMTG_OVERRIDE; int32_t dbOnKeyDown (const VstKeyCode& key, CDataBrowser* browser) SMTG_OVERRIDE; bool updateLog (const LogEvent& logEvent, bool incrementCount = false); const LogEvents& getLogEvents () const { return mLogEvents; } protected: LogEvents mLogEvents; }; } // namespace vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/eventlogger.cpp000066400000000000000000000062531461511344300254650ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/eventlogger.cpp // Created by : Steinberg, 12/2012 // Description : Event List check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "eventlogger.h" #include "logevents.h" //------------------------------------------------------------------------ // EventLogger //------------------------------------------------------------------------ EventLogger::EventLogger () { mLogEvents.resize (kNumLogEvents); for (Steinberg::uint32 i = 0; i < mLogEvents.size (); ++i) { mLogEvents[i].id = i; mLogEvents[i].fromProcessor = logEventContext[i]; } } //------------------------------------------------------------------------ void EventLogger::clearLogEvents () { mLogEvents.clear (); } //------------------------------------------------------------------------ void EventLogger::resetLogEvents () { for (auto& mLogEvent : mLogEvents) { mLogEvent.count = 0; } } //------------------------------------------------------------------------ const EventLogger::Codes& EventLogger::getLogEvents () const { return mLogEvents; } //------------------------------------------------------------------------ void EventLogger::addLogEvent (Steinberg::int32 logId) { LogEvent& logEvent = mLogEvents.at (logId); logEvent.count++; } vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/eventlogger.h000066400000000000000000000054251461511344300251320ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/eventlogger.h // Created by : Steinberg, 12/2012 // Description : Event List check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include //------------------------------------------------------------------------ // EventLogger //------------------------------------------------------------------------ class EventLogger { public: //------------------------------------------------------------------------ EventLogger (); using Codes = std::vector; void clearLogEvents (); void resetLogEvents (); const Codes& getLogEvents () const; void addLogEvent (Steinberg::int32 logId); bool empty () const { return mLogEvents.empty (); } //------------------------------------------------------------------------ protected: Codes mLogEvents; }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/factory.cpp000066400000000000000000000064171461511344300246150ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/factory.cpp // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/pluginfactory.h" #include "hostcheckerprocessor.h" #include "hostcheckercontroller.h" #include "cids.h" #include "version.h" // for versioning BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID (Steinberg::Vst::HostCheckerProcessorUID), PClassInfo::kManyInstances, kVstAudioEffectClass, stringPluginName, Vst::kDistributable, "Fx|Instrument", /*"Fx",*/ /*"Spatial|Fx|Instrument|Up-Downmix",*/ FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, Steinberg::Vst::HostCheckerProcessor::createInstance) DEF_CLASS2 (INLINE_UID_FROM_FUID (Steinberg::Vst::HostCheckerControllerUID), PClassInfo::kManyInstances, kVstComponentControllerClass, stringPluginName, // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, Steinberg::Vst::HostCheckerController::createInstance) END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/hostcheck.cpp000066400000000000000000000144651461511344300251230ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/hostcheck.cpp // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "hostcheck.h" #include "logevents.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstnoteexpression.h" #include "pluginterfaces/vst/ivstparameterchanges.h" //------------------------------------------------------------------------ HostCheck::HostCheck () { mProcessSetupCheck.setEventLogger (&mEventLogger); mProcessContextCheck.setEventLogger (&mEventLogger); mEventListCheck.setEventLogger (&mEventLogger); mParamChangesCheck.setEventLogger (&mEventLogger); mParamChangesCheck.setParamIDs (&mParameterIds); } //------------------------------------------------------------------------ void HostCheck::addParameter (Steinberg::Vst::ParamID paramId) { mParameterIds.insert (paramId); mParamChangesCheck.updateParameterIDs (); } //------------------------------------------------------------------------ void HostCheck::addLogEvent (Steinberg::int32 logId) { mEventLogger.addLogEvent (logId); } //------------------------------------------------------------------------ bool HostCheck::validate (Steinberg::Vst::ProcessData& data, Steinberg::int32 minInputBufferCount, Steinberg::int32 minOutputBufferCount) { mProcessSetupCheck.check (data); mProcessContextCheck.check (data.processContext); mEventListCheck.check (data.inputEvents); mParamChangesCheck.checkParameterChanges (data.inputParameterChanges); checkAudioBuffers (data.inputs, data.numInputs, Steinberg::Vst::kInput, data.symbolicSampleSize, minInputBufferCount); checkAudioBuffers (data.outputs, data.numOutputs, Steinberg::Vst::kOutput, data.symbolicSampleSize, minOutputBufferCount); return mEventLogger.empty (); } //------------------------------------------------------------------------ void HostCheck::checkAudioBuffers (Steinberg::Vst::AudioBusBuffers* buffers, Steinberg::int32 numBuffers, Steinberg::Vst::BusDirection dir, Steinberg::int32 symbolicSampleSize, Steinberg::int32 minBufferCount) { if (mComponent) { if (numBuffers > 0) { bool isValid = minBufferCount <= numBuffers; if (!isValid) { addLogEvent (kLogIdAudioBufNotMatchComponentBusCount); } // check only output, an instrument could have side chain input not activated if (dir == Steinberg::Vst::BusDirections::kOutput && minBufferCount == 0) { addLogEvent (kLogIdNoBusActivated); } } } if (numBuffers > 0) { if (!buffers) { addLogEvent (kLogIdNullPointerToAudioBusBuffer); return; } for (Steinberg::int32 bufferIdx = 0; bufferIdx < numBuffers; ++bufferIdx) { Steinberg::Vst::BusInfo busInfo = {}; mComponent->getBusInfo (Steinberg::Vst::kAudio, dir, bufferIdx, busInfo); Steinberg::Vst::AudioBusBuffers& tmpBuffers = buffers[bufferIdx]; if (tmpBuffers.numChannels != busInfo.channelCount) { addLogEvent (kLogIdInvalidAudioBufNumOfChannels); } if (symbolicSampleSize == Steinberg::Vst::kSample32) { for (Steinberg::int32 chIdx = 0; chIdx < tmpBuffers.numChannels; ++chIdx) { if (!tmpBuffers.channelBuffers32 || !tmpBuffers.channelBuffers32[chIdx]) { if (busInfo.busType == Steinberg::Vst::kAux) addLogEvent (kLogIdNullPointerToAuxChannelBuf); else addLogEvent (kLogIdNullPointerToChannelBuf); } } } else { for (Steinberg::int32 chIdx = 0; chIdx < tmpBuffers.numChannels; ++chIdx) { if (!tmpBuffers.channelBuffers64 || !tmpBuffers.channelBuffers64[chIdx]) { if (busInfo.busType == Steinberg::Vst::kAux) addLogEvent (kLogIdNullPointerToAuxChannelBuf); else addLogEvent (kLogIdNullPointerToChannelBuf); } } } } } } //------------------------------------------------------------------------ void HostCheck::setComponent (Steinberg::Vst::IComponent* component) { mEventListCheck.setComponent (component); mComponent = component; } //------------------------------------------------------------------------ void HostCheck::setProcessSetup (Steinberg::Vst::ProcessSetup& setup) { mProcessSetupCheck.setProcessSetup (setup); mEventListCheck.setProcessSetup (setup); mProcessContextCheck.setSampleRate (setup.sampleRate); } vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/hostcheck.h000066400000000000000000000101301461511344300245510ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostcheck/source/hostcheck.h // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstevents.h" #include #include #include "logevents.h" #include "eventlogger.h" #include "processsetupcheck.h" #include "processcontextcheck.h" #include "eventlistcheck.h" #include "parameterchangescheck.h" namespace Steinberg { namespace Vst { class IEventList; class IComponent; } } //------------------------------------------------------------------------ // ProcessDataValidator //------------------------------------------------------------------------ class HostCheck { public: //------------------------------------------------------------------------ static HostCheck& Instance () { static HostCheck instance; return instance; } using ParamIDs = std::set; HostCheck (); void addParameter (Steinberg::Vst::ParamID paramId); void setProcessSetup (Steinberg::Vst::ProcessSetup& setup); void setComponent (Steinberg::Vst::IComponent* component); bool validate (Steinberg::Vst::ProcessData& data, Steinberg::int32 minInputBufferCount, Steinberg::int32 minOutputBufferCount); const EventLogger::Codes& getEventLogs () const { return mEventLogger.getLogEvents (); } EventLogger& getEventLogger () { return mEventLogger; } /// Caution logger is used by audio thread...!!! //------------------------------------------------------------------------ private: void addLogEvent (Steinberg::int32 logId); void checkAudioBuffers (Steinberg::Vst::AudioBusBuffers* buffers, Steinberg::int32 numBuffers, Steinberg::Vst::BusDirection dir, Steinberg::int32 symbolicSampleSize, Steinberg::int32 minBufferCount); Steinberg::Vst::IComponent* mComponent {nullptr}; ParamIDs mParameterIds; ProcessSetupCheck mProcessSetupCheck; ProcessContextCheck mProcessContextCheck; EventListCheck mEventListCheck; ParameterChangesCheck mParamChangesCheck; EventLogger mEventLogger; }; //------------------------------------------------------------------------ vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/hostcheckercontroller.cpp000066400000000000000000002017301461511344300275470ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/hostcheckercontroller.cpp // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "hostcheckercontroller.h" #include "cids.h" #include "editorsizecontroller.h" #include "eventlogdatabrowsersource.h" #include "hostcheckerprocessor.h" #include "logevents.h" #include "base/source/fstreamer.h" #include "public.sdk/source/common/systemclipboard.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "public.sdk/source/vst/vstcomponentbase.h" #include "public.sdk/source/vst/vstrepresentation.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" #include "pluginterfaces/vst/ivstcontextmenu.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/ivstpluginterfacesupport.h" #include "pluginterfaces/vst/ivstdataexchange.h" #include #define THREAD_CHECK_MSG(msg) "The host called '" msg "' in the wrong thread context.\n" using namespace VSTGUI; #if DEBUG bool THREAD_CHECK_EXIT = false; #else bool THREAD_CHECK_EXIT = true; #endif namespace Steinberg { namespace Vst { class StringInt64Parameter : public Parameter { public: //------------------------------------------------------------------------ StringInt64Parameter (const TChar* title, ParamID tag, const TChar* units = nullptr, UnitID unitID = kRootUnitId, const TChar* shortTitle = nullptr, int32 flags = ParameterInfo::kNoFlags) { UString (info.title, str16BufferSize (String128)).assign (title); if (units) UString (info.units, str16BufferSize (String128)).assign (units); if (shortTitle) UString (info.shortTitle, str16BufferSize (String128)).assign (shortTitle); info.stepCount = 0; info.defaultNormalizedValue = valueNormalized = 0; info.flags = flags; info.id = tag; info.unitId = unitID; } void setValue (int64 value) { if (mValue != value) { changed (); mValue = value; } } void toString (ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE { UString wrapper (string, str16BufferSize (String128)); if (!wrapper.printInt (mValue)) string[0] = 0; } OBJ_METHODS (StringInt64Parameter, Parameter) //------------------------------------------------------------------------ protected: StringInt64Parameter () {} int64 mValue {0}; }; //----------------------------------------------------------------------------- class MyVST3Editor : public VST3Editor { public: MyVST3Editor (HostCheckerController* controller, UTF8StringPtr templateName, UTF8StringPtr xmlFile); void canResize (bool val) { mCanResize = val; } protected: ~MyVST3Editor () override; bool PLUGIN_API open (void* parent, const PlatformType& type) override; void PLUGIN_API close () override; bool beforeSizeChange (const CRect& newSize, const CRect& oldSize) override; tresult PLUGIN_API onSize (ViewRect* newSize) override; tresult PLUGIN_API canResize () override; tresult PLUGIN_API checkSizeConstraint (ViewRect* rect) override; tresult PLUGIN_API onKeyDown (char16 key, int16 keyMsg, int16 modifiers) override; tresult PLUGIN_API onKeyUp (char16 key, int16 keyMsg, int16 modifiers) override; tresult PLUGIN_API onWheel (float distance) override; tresult PLUGIN_API onFocus (TBool /*state*/) override; tresult PLUGIN_API setFrame (IPlugFrame* frame) override; tresult PLUGIN_API attached (void* parent, FIDString type) override; tresult PLUGIN_API removed () override; tresult PLUGIN_API setContentScaleFactor (ScaleFactor factor) override; // IParameterFinder tresult PLUGIN_API findParameter (int32 xPos, int32 yPos, ParamID& resultTag) override; void valueChanged (CControl* pControl) override; //---from CBaseObject--------------- CMessageResult notify (CBaseObject* sender, const char* message) SMTG_OVERRIDE; private: CVSTGUITimer* checkTimer {nullptr}; HostCheckerController* hostController {nullptr}; uint32 openCount = 0; bool wasAlreadyClosed = false; bool onSizeWanted = false; bool inOpen = false; bool inOnsize = false; bool mCanResize = true; bool mAttached = false; }; //----------------------------------------------------------------------------- MyVST3Editor::MyVST3Editor (HostCheckerController* controller, UTF8StringPtr templateName, UTF8StringPtr xmlFile) : VST3Editor (controller, templateName, xmlFile), hostController (controller) { } //----------------------------------------------------------------------------- MyVST3Editor::~MyVST3Editor () { if (checkTimer) checkTimer->forget (); } //----------------------------------------------------------------------------- bool PLUGIN_API MyVST3Editor::open (void* parent, const PlatformType& type) { inOpen = true; openCount++; if (wasAlreadyClosed) hostController->addFeatureLog (kLogIdIPlugViewmultipleAttachSupported); bool res = VST3Editor::open (parent, type); if (hostController) { ViewRect rect2; if (hostController->getSavedSize (rect2)) onSize (&rect2); } inOpen = false; return res; } //----------------------------------------------------------------------------- void PLUGIN_API MyVST3Editor::close () { wasAlreadyClosed = true; openCount--; return VST3Editor::close (); } //----------------------------------------------------------------------------- bool MyVST3Editor::beforeSizeChange (const CRect& newSize, const CRect& oldSize) { if (!inOpen && !inOnsize) { if (!sizeRequest && newSize != oldSize) { onSizeWanted = true; } } bool res = VST3Editor::beforeSizeChange (newSize, oldSize); if (!inOpen && !inOnsize && !sizeRequest) { if (!res) onSizeWanted = false; else hostController->addFeatureLog (kLogIdIPlugFrameonResizeViewSupported); if (onSizeWanted) { if (checkTimer == nullptr) checkTimer = new CVSTGUITimer (this, 500); checkTimer->stop (); checkTimer->start (); } } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API MyVST3Editor::onSize (Steinberg::ViewRect* newSize) { inOnsize = true; if (!inOpen) { if (sizeRequest) hostController->addFeatureLog (kLogIdIPlugViewCalledSync); else if (onSizeWanted) hostController->addFeatureLog (kLogIdIPlugViewCalledAsync); onSizeWanted = false; hostController->addFeatureLog (kLogIdIPlugViewonSizeSupported); } if (openCount == 0) hostController->addFeatureLog (kLogIdIPlugViewCalledBeforeOpen); auto res = VST3Editor::onSize (newSize); inOnsize = false; return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API MyVST3Editor::canResize () { hostController->addFeatureLog (kLogIdIPlugViewcanResizeSupported); return mCanResize ? kResultTrue : kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API MyVST3Editor::checkSizeConstraint (Steinberg::ViewRect* _rect) { hostController->addFeatureLog (kLogIdIPlugViewcheckSizeConstraintSupported); return VST3Editor::checkSizeConstraint (_rect); } //------------------------------------------------------------------------ tresult PLUGIN_API MyVST3Editor::onKeyDown (char16 key, int16 keyMsg, int16 modifiers) { if (!mAttached) hostController->addFeatureLog (kLogIdIPlugViewKeyCalledBeforeAttach); hostController->addFeatureLog (kLogIdIPlugViewOnKeyDownSupported); return VSTGUIEditor::onKeyDown (key, keyMsg, modifiers); } //------------------------------------------------------------------------ tresult PLUGIN_API MyVST3Editor::onKeyUp (char16 key, int16 keyMsg, int16 modifiers) { if (!mAttached) hostController->addFeatureLog (kLogIdIPlugViewKeyCalledBeforeAttach); hostController->addFeatureLog (kLogIdIPlugViewOnKeyUpSupported); return VSTGUIEditor::onKeyUp (key, keyMsg, modifiers); } //------------------------------------------------------------------------ tresult PLUGIN_API MyVST3Editor::onWheel (float distance) { if (!mAttached) hostController->addFeatureLog (kLogIdIPlugViewKeyCalledBeforeAttach); hostController->addFeatureLog (kLogIdIPlugViewOnWheelCalled); return VSTGUIEditor::onWheel (distance); } //------------------------------------------------------------------------ tresult PLUGIN_API MyVST3Editor::onFocus (TBool state) { hostController->addFeatureLog (kLogIdIPlugViewOnFocusCalled); return VSTGUIEditor::onFocus (state); } //------------------------------------------------------------------------ tresult PLUGIN_API MyVST3Editor::setFrame (IPlugFrame* _frame) { hostController->addFeatureLog (kLogIdIPlugViewsetFrameSupported); return VSTGUIEditor::setFrame (_frame); } //----------------------------------------------------------------------------- tresult PLUGIN_API MyVST3Editor::attached (void* parent, FIDString type) { if (mAttached) hostController->addFeatureLog (kLogIdIPlugViewattachedWithoutRemoved); mAttached = true; return VSTGUIEditor::attached (parent, type); } //----------------------------------------------------------------------------- tresult PLUGIN_API MyVST3Editor::removed () { if (!mAttached) hostController->addFeatureLog (kLogIdIPlugViewremovedWithoutAttached); mAttached = false; return VSTGUIEditor::removed (); } //----------------------------------------------------------------------------- tresult PLUGIN_API MyVST3Editor::setContentScaleFactor (ScaleFactor factor) { hostController->addFeatureLog (kLogIdIPlugViewsetContentScaleFactorSupported); return VST3Editor::setContentScaleFactor (factor); } //----------------------------------------------------------------------------- tresult PLUGIN_API MyVST3Editor::findParameter (int32 xPos, int32 yPos, ParamID& resultTag) { hostController->addFeatureLog (kLogIdIParameterFinderSupported); return VST3Editor::findParameter (xPos, yPos, resultTag); } //----------------------------------------------------------------------------- VSTGUI::CMessageResult MyVST3Editor::notify (CBaseObject* sender, const char* message) { if (sender == checkTimer) { if (onSizeWanted) hostController->addFeatureLog (kLogIdIPlugViewNotCalled); checkTimer->forget (); checkTimer = nullptr; return kMessageNotified; } return VST3Editor::notify (sender, message); } //----------------------------------------------------------------------------- void MyVST3Editor::valueChanged (CControl* pControl) { if (pControl->getTag () == kBypassTag) { } VST3Editor::valueChanged (pControl); } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- HostCheckerController::HostCheckerController () { mScoreMap.emplace (kLogIdRestartParamValuesChangedSupported, 2.f); mScoreMap.emplace (kLogIdRestartParamTitlesChangedSupported, 2.f); mScoreMap.emplace (kLogIdRestartNoteExpressionChangedSupported, 1.f); mScoreMap.emplace (kLogIdRestartKeyswitchChangedSupported, 1.f); mScoreMap.emplace (kLogIdIComponentHandler2Supported, 2.f); mScoreMap.emplace (kLogIdIComponentHandler2SetDirtySupported, 2.f); mScoreMap.emplace (kLogIdIComponentHandler2RequestOpenEditorSupported, 2.f); mScoreMap.emplace (kLogIdIComponentHandler3Supported, 2.f); mScoreMap.emplace (kLogIdIComponentHandlerBusActivationSupported, 1.f); mScoreMap.emplace (kLogIdIProgressSupported, 1.f); mScoreMap.emplace (kLogIdIPlugInterfaceSupportSupported, 2.f); mScoreMap.emplace (kLogIdIPlugFrameonResizeViewSupported, 2.f); mScoreMap.emplace (kLogIdIPrefetchableSupportSupported, 1.f); mScoreMap.emplace (kLogIdAudioPresentationLatencySamplesSupported, 1.f); mScoreMap.emplace (kLogIdIProcessContextRequirementsSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextPlayingSupported, 2.f); mScoreMap.emplace (kLogIdProcessContextRecordingSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextCycleActiveSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextSystemTimeSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextContTimeSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextTimeMusicSupported, 2.f); mScoreMap.emplace (kLogIdProcessContextBarPositionSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextCycleSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextTempoSupported, 2.f); mScoreMap.emplace (kLogIdProcessContextTimeSigSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextChordSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextSmpteSupported, 1.f); mScoreMap.emplace (kLogIdProcessContextClockSupported, 1.f); mScoreMap.emplace (kLogIdCanProcessSampleSize32, 1.f); mScoreMap.emplace (kLogIdCanProcessSampleSize64, 1.f); mScoreMap.emplace (kLogIdGetTailSamples, 1.f); mScoreMap.emplace (kLogIdGetLatencySamples, 2.f); mScoreMap.emplace (kLogIdGetBusArrangements, 1.f); mScoreMap.emplace (kLogIdSetBusArrangements, 1.f); mScoreMap.emplace (kLogIdGetRoutingInfo, 1.f); mScoreMap.emplace (kLogIdActivateAuxBus, 1.f); mScoreMap.emplace (kLogIdParametersFlushSupported, 1.f); mScoreMap.emplace (kLogIdSilentFlagsSupported, 2.f); mScoreMap.emplace (kLogIdSilentFlagsSCSupported, 2.f); mScoreMap.emplace (kLogIdIEditController2Supported, 1.f); mScoreMap.emplace (kLogIdSetKnobModeSupported, 1.f); mScoreMap.emplace (kLogIdOpenHelpSupported, 1.f); mScoreMap.emplace (kLogIdOpenAboutBoxSupported, 1.f); mScoreMap.emplace (kLogIdIMidiMappingSupported, 1.f); mScoreMap.emplace (kLogIdUnitSupported, 1.f); mScoreMap.emplace (kLogIdGetUnitByBusSupported, 1.f); mScoreMap.emplace (kLogIdChannelContextSupported, 1.f); mScoreMap.emplace (kLogIdINoteExpressionControllerSupported, 1.f); mScoreMap.emplace (kLogIdINoteExpressionPhysicalUIMappingSupported, 1.f); mScoreMap.emplace (kLogIdIKeyswitchControllerSupported, 1.f); mScoreMap.emplace (kLogIdIMidiLearnSupported, 1.f); mScoreMap.emplace (kLogIdIMidiLearn_onLiveMIDIControllerInputSupported, 1.f); mScoreMap.emplace (kLogIdIAttributeListInSetStateSupported, 1.f); mScoreMap.emplace (kLogIdIXmlRepresentationControllerSupported, 1.f); mScoreMap.emplace (kLogIdIAutomationStateSupported, 1.f); mScoreMap.emplace (kLogIdIEditControllerHostEditingSupported, 1.f); mScoreMap.emplace (kLogIdIPlugViewonSizeSupported, 1.f); mScoreMap.emplace (kLogIdIPlugViewcanResizeSupported, 1.f); mScoreMap.emplace (kLogIdIPlugViewcheckSizeConstraintSupported, 1.f); mScoreMap.emplace (kLogIdIPlugViewsetFrameSupported, 1.f); mScoreMap.emplace (kLogIdIPlugViewOnWheelCalled, 1.f); mScoreMap.emplace (kLogIdIPlugViewOnKeyDownSupported, 1.f); mScoreMap.emplace (kLogIdIPlugViewOnKeyUpSupported, 1.f); mScoreMap.emplace (kLogIdIPlugViewOnFocusCalled, 1.f); mScoreMap.emplace (kLogIdIPlugViewsetContentScaleFactorSupported, 1.f); mScoreMap.emplace (kLogIdIParameterFinderSupported, 1.f); mScoreMap.emplace (kLogIdIParameterFunctionNameSupported, 1.f); mScoreMap.emplace (kLogIdIComponentHandlerSystemTimeSupported, 1.f); mScoreMap.emplace (kLogIdIDataExchangeHandlerSupported, 1.f); mScoreMap.emplace (kLogIdIDataExchangeReceiverSupported, 1.f); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::initialize (FUnknown* context) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::initialize"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdinitializeCalledinWrongThread); } tresult result = EditControllerEx1::initialize (context); if (result == kResultOk) { // create a unit Latency parameter UnitInfo unitInfo; unitInfo.id = kUnitId; unitInfo.parentUnitId = kRootUnitId; // attached to the root unit Steinberg::UString (unitInfo.name, USTRINGSIZE (unitInfo.name)).assign (USTRING ("Setup")); unitInfo.programListId = kNoProgramListId; auto* unit = new Unit (unitInfo); addUnit (unit); // add second unit unitInfo.id = kUnit2Id; unitInfo.parentUnitId = kRootUnitId; // attached to the root unit Steinberg::UString (unitInfo.name, USTRINGSIZE (unitInfo.name)) .assign (USTRING ("Second Unit")); unitInfo.programListId = kNoProgramListId; unit = new Unit (unitInfo); addUnit (unit); parameters.addParameter (STR16 ("Processing Load"), STR16 (""), 0, 0, ParameterInfo::kCanAutomate, kProcessingLoadTag); parameters.addParameter (STR16 ("Generate Peaks"), STR16 (""), 0, 0, ParameterInfo::kNoFlags, kGeneratePeaksTag); parameters.addParameter (new RangeParameter ( STR16 ("Latency"), kLatencyTag, nullptr, 0, HostChecker::kMaxLatency, 0, HostChecker::kMaxLatency, ParameterInfo::kNoFlags, kUnitId, nullptr)); parameters.addParameter (STR16 ("CanResize"), STR16 (""), 1, 1, ParameterInfo::kNoFlags, kCanResizeTag); parameters.addParameter (new RangeParameter (STR16 ("Scoring"), kScoreTag, nullptr, 0, 100, 0, 100, ParameterInfo::kIsReadOnly)); parameters.addParameter (STR16 ("Bypass"), STR16 (""), 1, 0, ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass, kBypassTag); parameters.addParameter (new RangeParameter (STR16 ("ProgressValue"), kProgressValueTag, nullptr, 0, 100, 0, 100, ParameterInfo::kIsReadOnly)); parameters.addParameter (STR16 ("TriggerProgress"), STR16 (""), 1, 0, ParameterInfo::kNoFlags, kTriggerProgressTag); parameters.addParameter (STR16 ("KeyswitchChanged"), STR16 (""), 1, 0, ParameterInfo::kIsHidden, kRestartKeyswitchChangedTag); parameters.addParameter (STR16 ("NoteExpressionChanged"), STR16 (""), 1, 0, ParameterInfo::kIsHidden, kRestartNoteExpressionChangedTag); parameters.addParameter (STR16 ("ParamValuesChanged"), STR16 (""), 1, 0, ParameterInfo::kIsHidden, kRestartParamValuesChangedTag); parameters.addParameter (STR16 ("ParamTitlesChanged"), STR16 (""), 1, 0, ParameterInfo::kIsHidden, kRestartParamTitlesChangedTag); parameters.addParameter (STR16 ("ParamWhichCouldBeHidden"), STR16 (""), 0, 0, ParameterInfo::kCanAutomate, kParamWhichCouldBeHiddenTag, kUnit2Id); parameters.addParameter (STR16 ("TriggerHidden"), STR16 (""), 1, 0, ParameterInfo::kNoFlags, kTriggerHiddenTag); parameters.addParameter (STR16 ("Copy2Clipboard"), STR16 (""), 1, 0, ParameterInfo::kIsHidden, kCopy2ClipboardTag); //---ProcessContext parameters------------------------ parameters.addParameter (new StringInt64Parameter ( STR16 ("ProjectTimeSamples"), kProcessContextProjectTimeSamplesTag, STR16 ("Samples"), kUnitId, 0, ParameterInfo::kIsReadOnly)); parameters .addParameter (new RangeParameter ( STR16 ("ProjectTimeMusic"), kProcessContextProjectTimeMusicTag, STR16 ("PPQ"), -10, kMaxInt32u, 0, 0, ParameterInfo::kIsReadOnly, kUnitId)) ->setPrecision (2); parameters .addParameter (new RangeParameter ( STR16 ("BarPositionMusic"), kProcessContextBarPositionMusicTag, STR16 ("PPQ"), -64, kMaxInt32u, 0, 0, ParameterInfo::kIsReadOnly, kUnitId)) ->setPrecision (0); parameters .addParameter (new RangeParameter (STR16 ("Tempo"), kProcessContextTempoTag, STR16 ("BPM"), 0, 400, 120, 0, ParameterInfo::kIsReadOnly, kUnitId)) ->setPrecision (3); parameters .addParameter (new RangeParameter (STR16 ("SigNumerator"), kProcessContextTimeSigNumeratorTag, STR16 (""), 1, 128, 4, 0, ParameterInfo::kIsReadOnly, kUnitId)) ->setPrecision (0); parameters .addParameter (new RangeParameter (STR16 ("SigDenominator"), kProcessContextTimeSigDenominatorTag, STR16 (""), 1, 128, 4, 0, ParameterInfo::kIsReadOnly, kUnitId)) ->setPrecision (0); parameters.addParameter (new StringInt64Parameter (STR16 ("State"), kProcessContextStateTag, STR16 (""), kUnitId, 0, ParameterInfo::kIsReadOnly)); parameters.addParameter ( new StringInt64Parameter (STR16 ("ProjectSystemTime"), kProcessContextSystemTimeTag, STR16 ("ns"), kUnitId, 0, ParameterInfo::kIsReadOnly)); parameters.addParameter (new StringInt64Parameter ( STR16 ("ProjectSystemTime"), kProcessContextContinousTimeSamplesTag, STR16 ("Samples"), kUnitId, 0, ParameterInfo::kIsReadOnly)); //--- ------------------------------ for (uint32 i = 0; i < HostChecker::kParamWarnCount; i++) { parameters.addParameter ( STR16 ("ProcessWarn"), STR16 (""), HostChecker::kParamWarnStepCount, 0, ParameterInfo::kIsReadOnly | ParameterInfo::kIsHidden, kProcessWarnTag + i); } auto addUnitFunc = [=] (const int32 unitId, const int32 parentUnitId, const int32 idx, const Steinberg::tchar* name) -> bool { UnitInfo unitInfo; unitInfo.id = unitId; unitInfo.parentUnitId = parentUnitId; // attached to the root unit String128 index; Steinberg::UString (index, 128).printInt (idx); Steinberg::UString (unitInfo.name, USTRINGSIZE (unitInfo.name)) .assign (name) .append (index); unitInfo.programListId = kNoProgramListId; auto unit = new Unit (unitInfo); return addUnit (unit); }; auto addParamFunc = [=] (const int32 paramId, const int32 parentUnitId, const int32 idx, const Steinberg::tchar* name) -> void { String128 index; Steinberg::UString (index, 128).printInt (idx); String128 _name; Steinberg::UString (_name, 128).assign (name).append (index); parameters.addParameter (_name, STR16 (""), 0, 0, ParameterInfo::kNoFlags, paramId, parentUnitId); }; int32 paramTagStart = kParamUnitStructStart; int32 unitIDStart = kUnitParamIdStart; for (uint32 i = 0; i < HostChecker::kParamUnitStruct1Count; i++) { int32 parentUnitId = unitIDStart; addUnitFunc (unitIDStart, kRootUnitId, i + 1, STR16 ("L1-Unit ")); for (uint32 k = 0; k < 2; k++) addParamFunc (paramTagStart++, parentUnitId, k + 1, STR16 ("L1-Param ")); unitIDStart++; for (uint32 j = 0; j < HostChecker::kParamUnitStruct2Count; j++) { int32 parentUnit2Id = unitIDStart; addUnitFunc (unitIDStart, parentUnitId, j + 1, STR16 ("L2-Unit ")); for (uint32 k = 0; k < 2; k++) addParamFunc (paramTagStart++, parentUnit2Id, k + 1, STR16 ("L2-Param ")); unitIDStart++; for (uint32 l = 0; l < HostChecker::kParamUnitStruct3Count; l++) { addUnitFunc (unitIDStart, parentUnit2Id, l + 1, STR16 ("L3-Unit ")); for (uint32 k = 0; k < 2; k++) addParamFunc (paramTagStart++, unitIDStart, k + 1, STR16 ("L3-Param ")); unitIDStart++; } } } mDataSource = VSTGUI::owned (new EventLogDataBrowserSource (this)); } FUnknownPtr plugInterfaceSupport (context); if (plugInterfaceSupport) { addFeatureLog (kLogIdIPlugInterfaceSupportSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IAutomationState::iid) == kResultTrue) addFeatureLog (kLogIdIAutomationStateSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IEditControllerHostEditing::iid) == kResultTrue) addFeatureLog (kLogIdIEditControllerHostEditingSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IMidiMapping::iid) == kResultTrue) addFeatureLog (kLogIdIMidiMappingSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IMidiLearn::iid) == kResultTrue) addFeatureLog (kLogIdIMidiLearnSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (ChannelContext::IInfoListener::iid) == kResultTrue) addFeatureLog (kLogIdChannelContextSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (INoteExpressionController::iid) == kResultTrue) addFeatureLog (kLogIdINoteExpressionControllerSupported); if (plugInterfaceSupport->isPlugInterfaceSupported ( INoteExpressionPhysicalUIMapping::iid) == kResultTrue) addFeatureLog (kLogIdINoteExpressionPhysicalUIMappingSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IXmlRepresentationController::iid) == kResultTrue) addFeatureLog (kLogIdIXmlRepresentationControllerSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IParameterFunctionName::iid) == kResultTrue) addFeatureLog (kLogIdIParameterFunctionNameSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IComponentHandlerSystemTime::iid) == kResultTrue) addFeatureLog (kLogIdIComponentHandlerSystemTimeSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IDataExchangeHandler::iid) == kResultTrue) addFeatureLog (kLogIdIDataExchangeHandlerSupported); } else { addFeatureLog (kLogIdIPlugInterfaceSupportNotSupported); } return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::terminate () { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::terminate"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdterminateCalledinWrongThread); } tresult result = EditControllerEx1::terminate (); if (result == kResultOk) { mDataSource = nullptr; mDataBrowserMap.clear (); } if (mProgressTimer) { mProgressTimer->forget (); mProgressTimer = nullptr; } return result; } //----------------------------------------------------------------------------- float HostCheckerController::updateScoring (int64 iD) { float score = 0; float total = 0; if (iD >= 0) mScoreMap[iD].use = true; for (auto& item : mScoreMap) { auto scoreEntry = item.second; total += scoreEntry.factor; if (scoreEntry.use) score += scoreEntry.factor; } if (total) score = score / total; else score = 0; if (auto val = parameters.getParameter (kScoreTag)) val->setNormalized (score); return score; } //----------------------------------------------------------------------------- void HostCheckerController::onProgressTimer (VSTGUI::CVSTGUITimer* /*timer*/) { if (!mInProgress) { FUnknownPtr progress (componentHandler); if (progress) progress->start (IProgress::ProgressType::UIBackgroundTask, STR ("Test Progress"), mProgressID); mInProgress = true; } else { const float stepInc = 1.0 / 60.0 / 5.0; // ~5sec auto newVal = parameters.getParameter (kProgressValueTag)->getNormalized () + stepInc; // we have finished if (newVal > 1) setParamNormalized (kTriggerProgressTag, 0); else { setParamNormalized (kProgressValueTag, newVal); FUnknownPtr progress (componentHandler); if (progress) progress->update (mProgressID, newVal); } } } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::setComponentState (IBStream* state) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::setComponentState"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdSetComponentStateCalledinWrongThread); } if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // version uint32 version; streamer.readInt32u (version); if (version < 1 || version > 1000) { version = 1; streamer.seek (-4, kSeekCurrent); } float saved = 0.f; if (streamer.readFloat (saved) == false) return kResultFalse; if (saved != 12345.67f) { SMTG_ASSERT (false) } uint32 latency; if (streamer.readInt32u (latency) == false) return kResultFalse; uint32 bypass; if (streamer.readInt32u (bypass) == false) return kResultFalse; float processingLoad = 0.f; if (version > 1) { if (streamer.readFloat (processingLoad) == false) return kResultFalse; setParamNormalized (kProcessingLoadTag, processingLoad); } setParamNormalized (kBypassTag, bypass > 0 ? 1 : 0); return kResultOk; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::getUnitByBus (MediaType type, BusDirection dir, int32 busIndex, int32 channel, UnitID& unitId /*out*/) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::getUnitByBus"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdGetUnitByBusCalledinWrongThread); } if (type == kEvent && dir == kInput) { if (busIndex == 0 && channel == 0) { unitId = kRootUnitId; return kResultTrue; } } addFeatureLog (kLogIdGetUnitByBusSupported); return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::setComponentHandler (IComponentHandler* handler) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::setComponentHandler"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdSetComponentHandlerCalledinWrongThread); } tresult res = EditControllerEx1::setComponentHandler (handler); if (componentHandler2) { addFeatureLog (kLogIdIComponentHandler2Supported); if (componentHandler2->requestOpenEditor () == kResultTrue) addFeatureLog (kLogIdIComponentHandler2RequestOpenEditorSupported); } FUnknownPtr handler3 (componentHandler); if (handler3) addFeatureLog (kLogIdIComponentHandler3Supported); FUnknownPtr componentHandlerBusActivationSupport ( componentHandler); if (componentHandlerBusActivationSupport) addFeatureLog (kLogIdIComponentHandlerBusActivationSupported); FUnknownPtr progress (componentHandler); if (progress) addFeatureLog (kLogIdIProgressSupported); return res; } //----------------------------------------------------------------------------- int32 PLUGIN_API HostCheckerController::getUnitCount () { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::getUnitCount"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdGetUnitCountCalledinWrongThread); } addFeatureLog (kLogIdUnitSupported); return EditControllerEx1::getUnitCount (); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::setParamNormalized (ParamID tag, ParamValue value) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::setParamNormalized"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdSetParamNormalizedCalledinWrongThread); } //--- ---------------------------------------- if (tag == kLatencyTag && mLatencyInEdit) { mWantedLatency = value; // return kResultTrue; } //--- ---------------------------------------- else if (tag == kProcessingLoadTag) { } //--- ---------------------------------------- else if (tag == kTriggerHiddenTag) { auto param = parameters.getParameter (kParamWhichCouldBeHiddenTag); auto& info = param->getInfo (); if (value > 0.5) { info.flags |= (ParameterInfo::kIsHidden | ParameterInfo::kIsReadOnly); info.flags &= ~ParameterInfo::kCanAutomate; } else { info.flags &= (~(ParameterInfo::kIsHidden | ParameterInfo::kIsReadOnly) | ParameterInfo::kCanAutomate); } auto res = EditControllerEx1::setParamNormalized (tag, value); componentHandler->restartComponent (kParamTitlesChanged); return res; } else if (tag == kTriggerProgressTag) { if (value > 0.5) { if (mProgressTimer == nullptr) mProgressTimer = new CVSTGUITimer ([this] (CVSTGUITimer* timer) { onProgressTimer (timer); }, 1000 / 60); // 60 Hz mProgressTimer->stop (); mProgressTimer->start (); } else { if (mProgressTimer) mProgressTimer->stop (); setParamNormalized (kProgressValueTag, 0); mInProgress = false; FUnknownPtr progress (componentHandler); if (progress) progress->finish (mProgressID); } } //--- ---------------------------------------- else if (tag >= kProcessWarnTag && tag <= kProcessWarnTag + HostChecker::kParamWarnCount) { bool latencyRestartWanted = false; int32 tagOffset = (tag - kProcessWarnTag) * HostChecker::kParamWarnBitCount; uint32 idValue = value * HostChecker::kParamWarnStepCount; for (uint32 i = 0; i < HostChecker::kParamWarnBitCount; i++) { if (idValue & (1L << i)) { addFeatureLog (tagOffset + i); if (tagOffset + i == kLogIdInformLatencyChanged && componentHandler) latencyRestartWanted = true; } } if (latencyRestartWanted) componentHandler->restartComponent (kLatencyChanged); } //--- ---------------------------------------- else if (tag == kRestartKeyswitchChangedTag) { if (value > 0.) { if (componentHandler->restartComponent (kKeyswitchChanged) == kResultTrue) { addFeatureLog (kLogIdRestartKeyswitchChangedSupported); } mNumKeyswitch++; if (mNumKeyswitch > 10) mNumKeyswitch = 0; EditControllerEx1::setParamNormalized (tag, value); value = 0; } } //--- ---------------------------------------- else if (tag == kRestartNoteExpressionChangedTag) { if (value > 0.) { if (componentHandler->restartComponent (kNoteExpressionChanged) == kResultTrue) { addFeatureLog (kLogIdRestartNoteExpressionChangedSupported); } EditControllerEx1::setParamNormalized (tag, value); value = 0; } } //--- ---------------------------------------- else if (tag == kRestartParamValuesChangedTag) { if (value > 0.) { if (componentHandler->restartComponent (kParamValuesChanged) == kResultTrue) { addFeatureLog (kLogIdRestartParamValuesChangedSupported); } EditControllerEx1::setParamNormalized (tag, value); value = 0; } } //--- ---------------------------------------- else if (tag == kRestartParamTitlesChangedTag) { if (value > 0.) { if (componentHandler->restartComponent (kParamTitlesChanged) == kResultTrue) { addFeatureLog (kLogIdRestartParamTitlesChangedSupported); } EditControllerEx1::setParamNormalized (tag, value); value = 0; } } //--- ---------------------------------------- else if (tag == kCopy2ClipboardTag) { if (mDataSource && value > 0.) { std::ostringstream s; auto val = parameters.getParameter (kScoreTag); if (val) { s << "/* VST3 Hostname: "; FUnknownPtr hostApp (hostContext); if (hostApp) { Vst::String128 name; if (hostApp->getName (name) == kResultTrue) s << VST3::StringConvert::convert (name); } s << ", Scoring="; s << int32 (val->getNormalized () * 100 + 0.5); s << " (checking "; s << kVstVersionString; s << ")*/\n"; } s << "ID,Severity,Description,Count\n"; auto list = mDataSource->getLogEvents (); int32 i = 0; for (auto& item : list) { // if (item.count > 0) { s << item.id; s << ", "; s << logEventSeverity[item.id]; s << ", "; s << logEventDescriptions[i]; s << ", "; s << item.count; s << "\n"; } i++; } SystemClipboard::copyTextToClipboard (s.str ()); EditControllerEx1::setParamNormalized (tag, value); value = 0; } } return EditControllerEx1::setParamNormalized (tag, value); } //------------------------------------------------------------------------ tresult HostCheckerController::beginEdit (ParamID tag) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::beginEdit"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdBeginEditCalledinWrongThread); } if (tag == kLatencyTag) mLatencyInEdit = true; return EditControllerEx1::beginEdit (tag); } //----------------------------------------------------------------------------- tresult HostCheckerController::endEdit (ParamID tag) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::endEdit"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdEndEditCalledinWrongThread); } if (tag == kLatencyTag && mLatencyInEdit) { mLatencyInEdit = false; setParamNormalized (tag, mWantedLatency); } return EditControllerEx1::endEdit (tag); } //----------------------------------------------------------------------------- IPlugView* PLUGIN_API HostCheckerController::createView (FIDString name) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::createView"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdCreateViewCalledinWrongThread); } FUnknownPtr componentHandlerBusActivationSupport ( componentHandler); if (componentHandlerBusActivationSupport) addFeatureLog (kLogIdIComponentHandlerBusActivationSupported); if (ConstString (name) == ViewType::kEditor) { if (componentHandler2) { if (componentHandler2->setDirty (true) == kResultTrue) addFeatureLog (kLogIdIComponentHandler2SetDirtySupported); } auto view = new MyVST3Editor (this, "HostCheckerEditor", "hostchecker.uidesc"); if (sizeFactor != 0) { ViewRect rect (0, 0, width, height); view->setRect (rect); view->setZoomFactor (sizeFactor); } view->canResize (parameters.getParameter (kCanResizeTag)->getNormalized () > 0); return view; } return nullptr; } //----------------------------------------------------------------------------- CView* HostCheckerController::createCustomView (UTF8StringPtr name, const UIAttributes& /*attributes*/, const IUIDescription* /*description*/, VST3Editor* editor) { if (ConstString (name) == "HostCheckerDataBrowser") { auto item = mDataBrowserMap.find (editor); if (item != mDataBrowserMap.end ()) { item->second->remember (); return item->second; } auto dataBrowser = VSTGUI::owned ( new CDataBrowser (CRect (0, 0, 100, 100), mDataSource, CDataBrowser::kDrawRowLines | CDataBrowser::kDrawColumnLines | CDataBrowser::kDrawHeader | CDataBrowser::kVerticalScrollbar)); mDataBrowserMap.emplace (editor, dataBrowser); dataBrowser->remember (); return dataBrowser; } return nullptr; } //----------------------------------------------------------------------------- void HostCheckerController::willClose (VSTGUI::VST3Editor* editor) { mDataBrowserMap.erase (editor); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::connect (IConnectionPoint* other) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::connect"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdConnectCalledinWrongThread); } tresult tResult = ComponentBase::connect (other); if (peerConnection) { for (int32 paramIdx = 0; paramIdx < getParameterCount (); ++paramIdx) { ParameterInfo paramInfo = {}; if (getParameterInfo (paramIdx, paramInfo) == kResultOk) { if (auto newMsg = owned (allocateMessage ())) { newMsg->setMessageID ("Parameter"); if (IAttributeList* attr = newMsg->getAttributes ()) { attr->setInt ("ID", paramInfo.id); } sendMessage (newMsg); } } } FUnknownPtr proc (other); if (proc) { if (auto newMsg = owned (allocateMessage ())) { newMsg->setMessageID ("LogEvent"); if (IAttributeList* attr = newMsg->getAttributes ()) { attr->setInt ("ID", kLogIdProcessorControllerConnection); attr->setInt ("Count", 1); } notify (newMsg); } } } return tResult; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::notify (IMessage* message) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::notify"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdnotifyCalledinWrongThread); } if (!message) return kInvalidArgument; if (FIDStringsEqual (message->getMessageID (), "LogEvent")) { int64 id; if (message->getAttributes ()->getInt ("ID", id) != kResultOk) return kResultFalse; int64 count; if (message->getAttributes ()->getInt ("Count", count) != kResultOk) return kResultFalse; addFeatureLog (id, static_cast (count), false); } if (FIDStringsEqual (message->getMessageID (), "Latency")) { ParamValue value; if (message->getAttributes ()->getFloat ("Value", value) == kResultOk) { componentHandler->restartComponent (kLatencyChanged); } } if (dataExchange.onMessage (message)) return kResultOk; return ComponentBase::notify (message); } //----------------------------------------------------------------------------- void HostCheckerController::addFeatureLog (int64 iD, int32 count, bool addToLastCount) { updateScoring (iD); if (!mDataSource) return; LogEvent logEvt; logEvt.id = iD; logEvt.count = count; if (mDataSource->updateLog (logEvt, addToLastCount)) { for (auto& item : mDataBrowserMap) item.second->invalidateRow (static_cast (logEvt.id)); } } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::setKnobMode (KnobMode mode) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::setKnobMode"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdsetKnobModeCalledinWrongThread); } addFeatureLog (kLogIdSetKnobModeSupported); return EditControllerEx1::setKnobMode (mode); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::openHelp (TBool onlyCheck) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::openHelp"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdopenHelpCalledinWrongThread); } addFeatureLog (kLogIdOpenHelpSupported); return EditControllerEx1::openHelp (onlyCheck); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::openAboutBox (TBool onlyCheck) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::openAboutBox"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdopenAboutBoxCalledinWrongThread); } addFeatureLog (kLogIdOpenAboutBoxSupported); return EditControllerEx1::openAboutBox (onlyCheck); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::setChannelContextInfos (IAttributeList* list) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::setChannelContextInfos"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdsetChannelContextInfosCalledinWrongThread); } if (!list) return kResultFalse; // optional we can ask for the Channel Name Length int64 length; if (list->getInt (ChannelContext::kChannelNameLengthKey, length) == kResultTrue) { } // get the Channel Name where we, as plug-in, are instantiated String128 name; if (list->getString (ChannelContext::kChannelNameKey, name, sizeof (name)) == kResultTrue) { } // get the Channel UID if (list->getString (ChannelContext::kChannelUIDKey, name, sizeof (name)) == kResultTrue) { } // get Channel Index int64 index; if (list->getInt (ChannelContext::kChannelIndexKey, index) == kResultTrue) { } // get the Channel Color int64 color; if (list->getInt (ChannelContext::kChannelColorKey, color) == kResultTrue) { // ColorSpec channelColor = (ColorSpec)color; } addFeatureLog (kLogIdChannelContextSupported); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::getXmlRepresentationStream ( RepresentationInfo& info /*in*/, IBStream* stream /*out*/) { if (!threadChecker->test ( THREAD_CHECK_MSG ("HostCheckerController::getXmlRepresentationStream"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetXmlRepresentationStreamCalledinWrongThread); } addFeatureLog (kLogIdIXmlRepresentationControllerSupported); String name (info.name); if (name == GENERIC_8_CELLS) { XmlRepresentationHelper helper (info, "Steinberg Media Technologies", "VST3 Host Checker", HostCheckerProcessorUID.toTUID (), stream); helper.startPage ("Main Page"); helper.startEndCellOneLayer (LayerType::kKnob, 0); helper.startEndCellOneLayer (LayerType::kKnob, 1); helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.endPage (); helper.startPage ("Page 2"); helper.startEndCellOneLayer (LayerType::kSwitch, 2); helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.startEndCell (); // empty helper.endPage (); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::getMidiControllerAssignment ( int32 busIndex, int16 /*channel*/, CtrlNumber midiControllerNumber, ParamID& id) { if (!threadChecker->test ( THREAD_CHECK_MSG ("HostCheckerController::getMidiControllerAssignment"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetMidiControllerAssignmentCalledinWrongThread); } addFeatureLog (kLogIdIMidiMappingSupported); if (busIndex != 0) return kResultFalse; switch (midiControllerNumber) { case ControllerNumbers::kCtrlPan: id = kProcessingLoadTag; return kResultOk; case ControllerNumbers::kCtrlExpression: id = kGeneratePeaksTag; return kResultOk; case ControllerNumbers::kCtrlEffect1: id = kBypassTag; return kResultOk; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::onLiveMIDIControllerInput (int32 /*busIndex*/, int16 /*channel*/, CtrlNumber /*midiCC*/) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::onLiveMIDIControllerInput"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdOnLiveMIDIControllerInputCalledinWrongThread); } addFeatureLog (kLogIdIMidiLearn_onLiveMIDIControllerInputSupported); return kResultTrue; } //----------------------------------------------------------------------------- int32 PLUGIN_API HostCheckerController::getNoteExpressionCount (int32 /*busIndex*/, int16 /*channel*/) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::getNoteExpressionCount"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetNoteExpressionCountCalledinWrongThread); } addFeatureLog (kLogIdINoteExpressionControllerSupported); return 1; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::getNoteExpressionInfo (int32 /*busIndex*/, int16 /*channel*/, int32 noteExpressionIndex, NoteExpressionTypeInfo& info) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::getNoteExpressionInfo"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetNoteExpressionInfoCalledinWrongThread); } if (noteExpressionIndex == 0) { UString (info.title, USTRINGSIZE (info.title)).assign (USTRING ("Volume")); UString (info.shortTitle, USTRINGSIZE (info.shortTitle)).assign (USTRING ("Vol")); UString (info.units, USTRINGSIZE (info.units)).assign (USTRING ("dB")); info.typeId = kVolumeTypeID; info.unitId = -1; info.valueDesc; info.associatedParameterId = -1; info.flags = 0; return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::getNoteExpressionStringByValue ( int32 /*busIndex*/, int16 /*channel*/, NoteExpressionTypeID id, NoteExpressionValue valueNormalized, String128 string) { if (!threadChecker->test ( THREAD_CHECK_MSG ("HostCheckerController::getNoteExpressionStringByValue"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetNoteExpressionStringByValueCalledinWrongThread); } addFeatureLog (kLogIdGetNoteExpressionStringByValueSupported); if (id == kVolumeTypeID) { char text[32]; snprintf (text, 32, "%d", (int32) (100 * valueNormalized + 0.5)); Steinberg::UString (string, 128).fromAscii (text); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::getNoteExpressionValueByString ( int32 /*busIndex*/, int16 /*channel*/, NoteExpressionTypeID id, const TChar* string, NoteExpressionValue& valueNormalized) { if (!threadChecker->test ( THREAD_CHECK_MSG ("HostCheckerController::getNoteExpressionValueByString"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetNoteExpressionValueByStringCalledinWrongThread); } addFeatureLog (kLogIdGetNoteExpressionValueByStringSupported); if (id == kVolumeTypeID) { String wrapper ((TChar*)string); double tmp = 0.0; if (wrapper.scanFloat (tmp)) { valueNormalized = tmp / 100.; return kResultTrue; } } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API HostCheckerController::getPhysicalUIMapping (int32 busIndex, int16 channel, PhysicalUIMapList& list) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::getPhysicalUIMapping"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetPhysicalUIMappingCalledinWrongThread); } addFeatureLog (kLogIdINoteExpressionPhysicalUIMappingSupported); if (busIndex == 0 && channel == 0) { for (uint32 i = 0; i < list.count; ++i) { if (kPUIXMovement == list.map[i].physicalUITypeID) list.map[i].noteExpressionTypeID = kVolumeTypeID; } return kResultTrue; } return kResultFalse; } //--- IKeyswitchController --------------------------- //------------------------------------------------------------------------ int32 PLUGIN_API HostCheckerController::getKeyswitchCount (int32 /*busIndex*/, int16 /*channel*/) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::getKeyswitchCount"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetKeyswitchCountCalledinWrongThread); } addFeatureLog (kLogIdIKeyswitchControllerSupported); return mNumKeyswitch; } //------------------------------------------------------------------------ tresult PLUGIN_API HostCheckerController::getKeyswitchInfo (int32 /*busIndex*/, int16 /*channel*/, int32 keySwitchIndex, KeyswitchInfo& info) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::getKeyswitchInfo"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetKeyswitchInfoCalledinWrongThread); } addFeatureLog (kLogIdIKeyswitchControllerSupported); if (keySwitchIndex < mNumKeyswitch) { String indexStr; indexStr.printInt64 (keySwitchIndex + int64 (1)); info.typeId = kNoteOnKeyswitchTypeID; UString title (info.title, USTRINGSIZE (info.title)); title.assign (USTRING ("Accentuation ")); title.append (indexStr); UString shortTitle (info.shortTitle, USTRINGSIZE (info.shortTitle)); shortTitle.assign (USTRING ("Acc")); shortTitle.append (indexStr); info.keyswitchMin = 2 * keySwitchIndex; info.keyswitchMax = info.keyswitchMin + 1; info.keyRemapped = -1; info.unitId = -1; info.flags = 0; return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API HostCheckerController::setAutomationState (int32 /*state*/) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::setAutomationState"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdsetAutomationStateCalledinWrongThread); } addFeatureLog (kLogIdIAutomationStateSupported); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API HostCheckerController::beginEditFromHost (ParamID paramID) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::beginEditFromHost"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdBeginEditFromHostCalledinWrongThread); } addFeatureLog (kLogIdIEditControllerHostEditingSupported); mEditFromHost[paramID]++; return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API HostCheckerController::endEditFromHost (ParamID paramID) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::endEditFromHost"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdEndEditFromHostCalledinWrongThread); } addFeatureLog (kLogIdIEditControllerHostEditingSupported); mEditFromHost[paramID]--; if (mEditFromHost[paramID] < 0) { addFeatureLog (kLogIdIEditControllerHostEditingMisused); mEditFromHost[paramID] = 0; } return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API HostCheckerController::getParameterIDFromFunctionName (UnitID /*unitID*/, FIDString functionName, ParamID& paramID) { addFeatureLog (kLogIdIParameterFunctionNameSupported); if (FIDStringsEqual (functionName, FunctionNameType::kDryWetMix)) { paramID = kProcessingLoadTag; } else paramID = kNoParamId; return (paramID != kNoParamId) ? kResultTrue : kResultFalse; } //------------------------------------------------------------------------ void PLUGIN_API HostCheckerController::queueOpened (DataExchangeUserContextID userContextID, uint32 blockSize, TBool& dispatchOnBackgroundThread) { } //------------------------------------------------------------------------ void PLUGIN_API HostCheckerController::queueClosed (DataExchangeUserContextID userContextID) { } //------------------------------------------------------------------------ void PLUGIN_API HostCheckerController::onDataExchangeBlocksReceived ( DataExchangeUserContextID userContextID, uint32 numBlocks, DataExchangeBlock* block, TBool onBackgroundThread) { // note that we should compensate the timing using a queue and the current systemTime before // updating the values! if (auto pc = reinterpret_cast (block->data)) { FUnknownPtr systemTime (componentHandler); if (systemTime) { // when the queue is implemented use this currentTime to find the correct ProcessContext // to use int64 currentSystemTime; systemTime->getSystemTime (currentSystemTime); } if (auto val = reinterpret_cast ( parameters.getParameter (kProcessContextProjectTimeSamplesTag))) val->setValue (pc->projectTimeSamples); if (auto val = reinterpret_cast ( parameters.getParameter (kProcessContextContinousTimeSamplesTag))) val->setValue (pc->continousTimeSamples); if (auto val = parameters.getParameter (kProcessContextProjectTimeMusicTag)) val->setNormalized (val->toNormalized (pc->projectTimeMusic)); if (auto val = parameters.getParameter (kProcessContextBarPositionMusicTag)) val->setNormalized (val->toNormalized (pc->barPositionMusic)); if (auto val = parameters.getParameter (kProcessContextTempoTag)) val->setNormalized (val->toNormalized (pc->tempo)); if (auto val = parameters.getParameter (kProcessContextTimeSigNumeratorTag)) val->setNormalized (val->toNormalized (pc->timeSigNumerator)); if (auto val = parameters.getParameter (kProcessContextTimeSigDenominatorTag)) val->setNormalized (val->toNormalized (pc->timeSigDenominator)); if (auto val = reinterpret_cast ( parameters.getParameter (kProcessContextStateTag))) val->setValue (pc->state); if (auto val = reinterpret_cast ( parameters.getParameter (kProcessContextSystemTimeTag))) val->setValue (pc->systemTime); } } //------------------------------------------------------------------------ void HostCheckerController::extractCurrentInfo (EditorView* editor) { auto rect = editor->getRect (); height = rect.getHeight (); width = rect.getWidth (); auto* vst3editor = dynamic_cast (editor); if (vst3editor) sizeFactor = vst3editor->getZoomFactor (); } //------------------------------------------------------------------------ void HostCheckerController::editorRemoved (EditorView* editor) { extractCurrentInfo (editor); editors.erase (std::find (editors.begin (), editors.end (), editor)); editorsSubCtlerMap.erase (editor); } //------------------------------------------------------------------------ void HostCheckerController::editorDestroyed (EditorView* /*editor*/) { } //------------------------------------------------------------------------ void HostCheckerController::editorAttached (EditorView* editor) { editors.push_back (editor); extractCurrentInfo (editor); } //------------------------------------------------------------------------ VSTGUI::IController* HostCheckerController::createSubController ( UTF8StringPtr name, const IUIDescription* /*description*/, VST3Editor* editor) { if (UTF8StringView (name) == "EditorSizeController") { auto sizeFunc = [&] (float _sizeFactor) { sizeFactor = _sizeFactor; for (auto& editor : editors) { auto* vst3editor = dynamic_cast (editor); if (vst3editor) vst3editor->setZoomFactor (sizeFactor); } }; auto subController = new EditorSizeController (this, sizeFunc, sizeFactor); editorsSubCtlerMap.insert ({editor, subController}); return subController; } return nullptr; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::queryInterface (const TUID iid, void** obj) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::queryInterface"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdQueryInterfaceCalledinWrongThread); } if (FUnknownPrivate::iidEqual (iid, IMidiMapping::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdIMidiMappingSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, IEditController2::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdIEditController2Supported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, IXmlRepresentationController::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdIXmlRepresentationControllerSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, ChannelContext::IInfoListener::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdChannelContextSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, INoteExpressionController::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdINoteExpressionControllerSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, INoteExpressionPhysicalUIMapping::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdINoteExpressionPhysicalUIMappingSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, IKeyswitchController::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdIKeyswitchControllerSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, IMidiLearn::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdIMidiLearnSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, IAutomationState::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdIAutomationStateSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, IEditControllerHostEditing::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdIEditControllerHostEditingSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, IParameterFunctionName::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdIParameterFunctionNameSupported); return kResultOk; } if (FUnknownPrivate::iidEqual (iid, IDataExchangeReceiver::iid)) { addRef (); *obj = static_cast (this); addFeatureLog (kLogIdIDataExchangeReceiverSupported); return kResultOk; } return EditControllerEx1::queryInterface (iid, obj); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::setState (IBStream* state) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::setState"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdsetStateCalledinWrongThread); } if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); uint32 version = 1; if (streamer.readInt32u (version) == false) return kResultFalse; if (streamer.readInt32u (height) == false) return kResultFalse; if (streamer.readInt32u (width) == false) return kResultFalse; if (streamer.readDouble (sizeFactor) == false) return kResultFalse; for (auto& item : editorsSubCtlerMap) { item.second->setSizeFactor (sizeFactor); } // since version 2 if (version > 1) { bool canResize = true; streamer.readBool (canResize); parameters.getParameter (kCanResizeTag)->setNormalized (canResize ? 1 : 0); } return kResultOk; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerController::getState (IBStream* state) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerController::getState"), THREAD_CHECK_EXIT)) { addFeatureLog (kLogIdgetStateCalledinWrongThread); } if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); uint32 version = 2; streamer.writeInt32u (version); streamer.writeInt32u (height); streamer.writeInt32u (width); streamer.writeDouble (sizeFactor); // since version 2 bool canResize = parameters.getParameter (kCanResizeTag)->getNormalized () > 0; streamer.writeBool (canResize); return kResultOk; } //----------------------------------------------------------------------------- } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/hostcheckercontroller.h000066400000000000000000000307721461511344300272220ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/hostcheckercontroller.h // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "eventlogdatabrowsersource.h" #include "hostcheck.h" #include "logevents.h" #include "vstgui/lib/cvstguitimer.h" #include "vstgui/plugin-bindings/vst3editor.h" #include "public.sdk/source/common/threadchecker.h" #include "public.sdk/source/vst/utility/dataexchange.h" #include "public.sdk/source/vst/vstaudioeffect.h" #include "public.sdk/source/vst/vsteditcontroller.h" #include "base/source/fstring.h" #include "pluginterfaces/vst/ivstautomationstate.h" #include "pluginterfaces/vst/ivstchannelcontextinfo.h" #include "pluginterfaces/vst/ivstmidilearn.h" #include "pluginterfaces/vst/ivstnoteexpression.h" #include "pluginterfaces/vst/ivstparameterfunctionname.h" #include "pluginterfaces/vst/ivstphysicalui.h" #include "pluginterfaces/vst/ivstprefetchablesupport.h" #include "pluginterfaces/vst/ivstrepresentation.h" namespace Steinberg { namespace HostChecker { const int32 kMaxLatency = 8192; const uint32 kParamWarnCount = 8; const uint32 kParamWarnBitCount = 24; const uint32 kParamWarnStepCount = 1 << kParamWarnBitCount; const uint32 kParamUnitStruct1Count = 4; const uint32 kParamUnitStruct2Count = 4; const uint32 kParamUnitStruct3Count = 2; const uint32 kParamUnitStructCount = 2 * (kParamUnitStruct1Count * kParamUnitStruct2Count * kParamUnitStruct3Count + 1); } namespace Vst { enum { // for Parameters kProcessingLoadTag = 1000, kGeneratePeaksTag, kLatencyTag, kBypassTag, kCanResizeTag, kScoreTag, kParamWhichCouldBeHiddenTag, kTriggerHiddenTag, kTriggerProgressTag, kProgressValueTag, kCopy2ClipboardTag, kRestartNoteExpressionChangedTag, kRestartKeyswitchChangedTag, kRestartParamValuesChangedTag, kRestartParamTitlesChangedTag, kProcessContextProjectTimeSamplesTag, kProcessContextProjectTimeMusicTag, kProcessContextTempoTag, kProcessContextStateTag, kProcessContextSystemTimeTag, kProcessContextContinousTimeSamplesTag, kProcessContextTimeSigNumeratorTag, kProcessContextTimeSigDenominatorTag, kProcessContextBarPositionMusicTag, kProcessWarnTag, kLastTag = kProcessWarnTag + HostChecker::kParamWarnCount, kParamUnitStructStart, kParamUnitStructEnd = kParamUnitStructStart + HostChecker::kParamUnitStructCount, // for Units kUnitId = 1234, kUnit2Id = 1235, kUnitParamIdStart = 2345, }; class EditorSizeController; //----------------------------------------------------------------------------- class HostCheckerController : public EditControllerEx1, public VSTGUI::VST3EditorDelegate, public ChannelContext::IInfoListener, public IXmlRepresentationController, public IAutomationState, public IEditControllerHostEditing, public IMidiMapping, public IMidiLearn, public INoteExpressionController, public INoteExpressionPhysicalUIMapping, public IKeyswitchController, public IParameterFunctionName, public IDataExchangeReceiver { public: using UTF8StringPtr = VSTGUI::UTF8StringPtr; using IController = VSTGUI::IController; using IUIDescription = VSTGUI::IUIDescription; using VST3Editor = VSTGUI::VST3Editor; HostCheckerController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getUnitByBus (MediaType type, BusDirection dir, int32 busIndex, int32 channel, UnitID& unitId /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API setComponentHandler (IComponentHandler* handler) SMTG_OVERRIDE; int32 PLUGIN_API getUnitCount () SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult beginEdit (ParamID tag) SMTG_OVERRIDE; tresult endEdit (ParamID tag) SMTG_OVERRIDE; IPlugView* PLUGIN_API createView (FIDString name) SMTG_OVERRIDE; tresult PLUGIN_API notify (IMessage* message) SMTG_OVERRIDE; tresult PLUGIN_API connect (IConnectionPoint* other) SMTG_OVERRIDE; //---from VST3EditorDelegate -------------------- VSTGUI::CView* createCustomView (VSTGUI::UTF8StringPtr name, const VSTGUI::UIAttributes& attributes, const VSTGUI::IUIDescription* description, VSTGUI::VST3Editor* editor) SMTG_OVERRIDE; void willClose (VSTGUI::VST3Editor* editor) SMTG_OVERRIDE; //---from IEditController2------- tresult PLUGIN_API setKnobMode (KnobMode mode) SMTG_OVERRIDE; tresult PLUGIN_API openHelp (TBool /*onlyCheck*/) SMTG_OVERRIDE; tresult PLUGIN_API openAboutBox (TBool /*onlyCheck*/) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; //---ChannelContext::IInfoListener------- tresult PLUGIN_API setChannelContextInfos (IAttributeList* list) SMTG_OVERRIDE; //---IXmlRepresentationController-------- tresult PLUGIN_API getXmlRepresentationStream (RepresentationInfo& info /*in*/, IBStream* stream /*out*/) SMTG_OVERRIDE; //---IMidiMapping--------------------------- tresult PLUGIN_API getMidiControllerAssignment (int32 busIndex, int16 channel, CtrlNumber midiControllerNumber, ParamID& id /*out*/) SMTG_OVERRIDE; //---IMidiLearn----------------------------- tresult PLUGIN_API onLiveMIDIControllerInput (int32 busIndex, int16 channel, CtrlNumber midiCC) SMTG_OVERRIDE; //---INoteExpressionController---------------------- int32 PLUGIN_API getNoteExpressionCount (int32 busIndex, int16 channel) SMTG_OVERRIDE; tresult PLUGIN_API getNoteExpressionInfo (int32 busIndex, int16 channel, int32 noteExpressionIndex, NoteExpressionTypeInfo& info /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getNoteExpressionStringByValue (int32 busIndex, int16 channel, NoteExpressionTypeID id, NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getNoteExpressionValueByString ( int32 busIndex, int16 channel, NoteExpressionTypeID id, const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) SMTG_OVERRIDE; //---INoteExpressionPhysicalUIMapping----------------- tresult PLUGIN_API getPhysicalUIMapping (int32 busIndex, int16 channel, PhysicalUIMapList& list) SMTG_OVERRIDE; //--- IKeyswitchController --------------------------- int32 PLUGIN_API getKeyswitchCount (int32 busIndex, int16 channel) SMTG_OVERRIDE; tresult PLUGIN_API getKeyswitchInfo (int32 busIndex, int16 channel, int32 keySwitchIndex, KeyswitchInfo& info /*out*/) SMTG_OVERRIDE; //---IAutomationState--------------------------------- tresult PLUGIN_API setAutomationState (int32 state) SMTG_OVERRIDE; //---IEditControllerHostEditing----------------------- tresult PLUGIN_API beginEditFromHost (ParamID paramID) SMTG_OVERRIDE; tresult PLUGIN_API endEditFromHost (ParamID paramID) SMTG_OVERRIDE; //---IParameterFunctionName--------------------------- tresult PLUGIN_API getParameterIDFromFunctionName (UnitID unitID, FIDString functionName, ParamID& paramID) SMTG_OVERRIDE; //---IDataExchangeReceiver---------------------------- void PLUGIN_API queueOpened (DataExchangeUserContextID userContextID, uint32 blockSize, TBool& dispatchOnBackgroundThread) override; void PLUGIN_API queueClosed (DataExchangeUserContextID userContextID) override; void PLUGIN_API onDataExchangeBlocksReceived (DataExchangeUserContextID userContextID, uint32 numBlocks, DataExchangeBlock* block, TBool onBackgroundThread) override; //--- -------------------------------------------------------------------------- void editorAttached (EditorView* editor) SMTG_OVERRIDE; void editorRemoved (EditorView* editor) SMTG_OVERRIDE; void editorDestroyed (EditorView* editor) SMTG_OVERRIDE; IController* createSubController (UTF8StringPtr name, const IUIDescription* description, VST3Editor* editor) override; tresult PLUGIN_API queryInterface (const Steinberg::TUID iid, void** obj) override; REFCOUNT_METHODS (EditControllerEx1) static FUnknown* createInstance (void*) { return (IEditController*)new HostCheckerController (); } void addFeatureLog (int64 iD, int32 count = 1, bool addToLastCount = true); bool getSavedSize (ViewRect& size) const { if (sizeFactor <= 0) return false; ViewRect rect (0, 0, width, height); size = rect; return true; } protected: void extractCurrentInfo (EditorView* editor); float updateScoring (int64 iD); void onProgressTimer (VSTGUI::CVSTGUITimer*); std::map> mDataBrowserMap; VSTGUI::SharedPointer mDataSource; bool mLatencyInEdit {false}; ParamValue mWantedLatency {0.0}; using EditorVector = std::vector; EditorVector editors; using EditorMap = std::map; EditorMap editorsSubCtlerMap; uint32 width {0}; uint32 height {0}; double sizeFactor {0}; using EditFromHostMap = std::map; EditFromHostMap mEditFromHost; std::unique_ptr threadChecker {ThreadChecker::create ()}; int32 mNumKeyswitch {1}; DataExchangeReceiverHandler dataExchange {this}; struct ScoreEntry { ScoreEntry (float factor = 1.f) : factor (factor) {} float factor {1.f}; bool use {false}; }; using ScoreMap = std::map; ScoreMap mScoreMap; VSTGUI::CVSTGUITimer* mProgressTimer {nullptr}; IProgress::ID mProgressID; bool mInProgress {false}; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/hostcheckerprocessor.cpp000066400000000000000000000747101461511344300274110ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/hostcheckerprocessor.cpp // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "hostcheckerprocessor.h" #include "cids.h" #include "hostcheckercontroller.h" #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "public.sdk/source/vst/vsteventshelper.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/ivstpluginterfacesupport.h" #include "base/source/fstreamer.h" #include namespace Steinberg { namespace Vst { #define THREAD_CHECK_MSG(msg) "The host called '" msg "' in the wrong thread context.\n" bool THREAD_CHECK_EXIT = false; static constexpr int64 kRefreshRateForExchangePC = 40000000; // 25Hz //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- HostCheckerProcessor::HostCheckerProcessor () { mCurrentState = State::kUninitialized; mLatency = 256; setControllerClass (HostCheckerControllerUID); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::initialize (FUnknown* context) { tresult result = AudioEffect::initialize (context); if (result == kResultOk) { dataExchangeHandler = new DataExchangeHandler (this, [this] (auto& config, const auto& setup) { config.numBlocks = 5; config.blockSize = sizeof (ProcessContext); return true; }); if (mCurrentState != State::kUninitialized) addLogEvent (kLogIdInvalidStateInitializedMissing); mCurrentState = State::kInitialized; addAudioInput (USTRING ("Audio Input"), SpeakerArr::kStereo); addAudioInput (USTRING ("Aux Input 1"), SpeakerArr::kStereo, kAux, 0); FUnknownPtr AAXContext (context); if (AAXContext == nullptr) { addAudioInput (USTRING ("Aux Input 2"), SpeakerArr::kMono, kAux, 0); addAudioInput (USTRING ("Aux Input 3"), SpeakerArr::kMono, kAux, 0); addAudioInput (USTRING ("Aux Input 4"), SpeakerArr::kMono, kAux, 0); addAudioInput (USTRING ("Aux Input 5"), SpeakerArr::kMono, kAux, 0); addAudioInput (USTRING ("Aux Input 6"), SpeakerArr::kMono, kAux, 0); addAudioInput (USTRING ("Aux Input 7"), SpeakerArr::kMono, kAux, 0); addAudioInput (USTRING ("Aux Input 8"), SpeakerArr::kMono, kAux, 0); addAudioInput (USTRING ("Aux Input 9"), SpeakerArr::kMono, kAux, 0); addAudioInput (USTRING ("Aux Input 10"), SpeakerArr::kMono, kAux, 0); } addAudioOutput (USTRING ("Audio Output"), SpeakerArr::kStereo); addEventInput (USTRING ("Event Input 1"), 1); addEventInput (USTRING ("Event Input 2"), 1); addEventOutput (USTRING ("Event Output 1"), 1); addEventOutput (USTRING ("Event Output 2"), 1); mHostCheck.setComponent (this); } FUnknownPtr plugInterfaceSupport (context); if (plugInterfaceSupport) { addLogEvent (kLogIdIPlugInterfaceSupportSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IAudioPresentationLatency::iid) == kResultTrue) addLogEvent (kLogIdAudioPresentationLatencySamplesSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IPrefetchableSupport::iid) == kResultTrue) addLogEvent (kLogIdIPrefetchableSupportSupported); if (plugInterfaceSupport->isPlugInterfaceSupported (IProcessContextRequirements::iid) == kResultTrue) addLogEvent (kLogIdIProcessContextRequirementsSupported); } else { addLogEvent (kLogIdIPlugInterfaceSupportNotSupported); } return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::terminate () { delete dataExchangeHandler; dataExchangeHandler = nullptr; if (mCurrentState == State::kUninitialized) { // redundance } else if (mCurrentState != State::kSetupDone) { // wrong state } mCurrentState = State::kUninitialized; return AudioEffect::terminate (); } //------------------------------------------------------------------------ void HostCheckerProcessor::addLogEvent (Steinberg::int32 logId) { mHostCheck.getEventLogger ().addLogEvent (logId); } //----------------------------------------------------------------------------- void HostCheckerProcessor::addLogEventMessage (const LogEvent& logEvent) { auto* evt = NEW LogEvent (logEvent); { Base::Thread::FGuard guard (msgQueueLock); msgQueue.push_back (evt); } } //----------------------------------------------------------------------------- void HostCheckerProcessor::sendNowAllLogEvents () { const EventLogger::Codes& errors = mHostCheck.getEventLogs (); auto iter = errors.begin (); while (iter != errors.end ()) { if ((*iter).fromProcessor && (*iter).count > 0) { sendLogEventMessage ((*iter)); } ++iter; } mHostCheck.getEventLogger ().resetLogEvents (); } //----------------------------------------------------------------------------- void HostCheckerProcessor::sendLogEventMessage (const LogEvent& logEvent) { if (auto message = owned (allocateMessage ())) { message->setMessageID ("LogEvent"); IAttributeList* attributes = message->getAttributes (); if (attributes) { SMTG_ASSERT (logEvent.id >= 0); attributes->setInt ("ID", logEvent.id); attributes->setInt ("Count", logEvent.count); sendMessage (message); } } } //----------------------------------------------------------------------------- ProcessContext* HostCheckerProcessor::getCurrentExchangeData () { if (!dataExchangeHandler) return nullptr; auto block = dataExchangeHandler->getCurrentOrNewBlock (); if (block.blockID == InvalidDataExchangeBlockID) return nullptr; if (mCurrentExchangeBlock != block) { mCurrentExchangeBlock = block; } return reinterpret_cast (mCurrentExchangeBlock.data); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::setAudioPresentationLatencySamples ( BusDirection /*dir*/, int32 /*busIndex*/, uint32 /*latencyInSamples*/) { addLogEvent (kLogIdAudioPresentationLatencySamplesSupported); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::getPrefetchableSupport (PrefetchableSupport& prefetchable) { addLogEvent (kLogIdIPrefetchableSupportSupported); prefetchable = kIsYetPrefetchable; return kResultTrue; } //----------------------------------------------------------------------------- uint32 PLUGIN_API HostCheckerProcessor::getProcessContextRequirements () { addLogEvent (kLogIdIProcessContextRequirementsSupported); processContextRequirements.needSystemTime (); processContextRequirements.needContinousTimeSamples (); processContextRequirements.needProjectTimeMusic (); processContextRequirements.needBarPositionMusic (); processContextRequirements.needCycleMusic (); processContextRequirements.needSamplesToNextClock (); processContextRequirements.needTempo (); processContextRequirements.needTimeSignature (); processContextRequirements.needChord (); processContextRequirements.needFrameRate (); processContextRequirements.needTransportState (); return AudioEffect::getProcessContextRequirements (); } //----------------------------------------------------------------------------- void HostCheckerProcessor::informLatencyChanged () { auto* evt = NEW LogEvent; evt->id = kLogIdInformLatencyChanged; { Base::Thread::FGuard guard (msgQueueLock); msgQueue.push_back (evt); } } //----------------------------------------------------------------------------- void HostCheckerProcessor::sendLatencyChanged () { if (IMessage* newMsg = allocateMessage ()) { newMsg->setMessageID ("Latency"); if (auto* attr = newMsg->getAttributes ()) attr->setFloat ("Value", mWantedLatency); sendMessage (newMsg); } } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::process (ProcessData& data) { mHostCheck.validate (data, mMinimumOfInputBufferCount, mMinimumOfOutputBufferCount); if (mCurrentState != State::kProcessing) { addLogEvent (kLogIdInvalidStateProcessingMissing); } if (mSetActiveCalled) { mSetActiveCalled = false; addLogEvent (kLogIdSetActiveCalledSupported); } // flush parameters case if (data.numInputs == 0 && data.numOutputs == 0) { addLogEvent (kLogIdParametersFlushSupported); } if (data.processMode == Vst::kOffline) addLogEvent (kLogIdProcessModeOfflineSupported); else if (data.processMode == kRealtime) addLogEvent (kLogIdProcessModeRealtimeSupported); else if (data.processMode == kPrefetch) addLogEvent (kLogIdProcessModePrefetchSupported); if (data.processContext) { if (dataExchangeHandler) { if (!dataExchangeHandler->isEnabled ()) dataExchangeHandler->enable (true); if (data.processContext->systemTime - mLastExchangeBlockSendSystemTime > kRefreshRateForExchangePC) { mLastExchangeBlockSendSystemTime = data.processContext->systemTime; if (auto pc = getCurrentExchangeData ()) { memcpy (pc, data.processContext, sizeof (ProcessContext)); dataExchangeHandler->sendCurrentBlock (); } else dataExchangeHandler->discardCurrentBlock (); } } if (data.processContext->state & ProcessContext::kPlaying) addLogEvent (kLogIdProcessContextPlayingSupported); if (data.processContext->state & ProcessContext::kRecording) addLogEvent (kLogIdProcessContextRecordingSupported); if (data.processContext->state & ProcessContext::kCycleActive) addLogEvent (kLogIdProcessContextCycleActiveSupported); if (data.processContext->state & ProcessContext::kSystemTimeValid) addLogEvent (kLogIdProcessContextSystemTimeSupported); if (data.processContext->state & ProcessContext::kContTimeValid) addLogEvent (kLogIdProcessContextContTimeSupported); if (data.processContext->state & ProcessContext::kProjectTimeMusicValid) addLogEvent (kLogIdProcessContextTimeMusicSupported); if (data.processContext->state & ProcessContext::kBarPositionValid) addLogEvent (kLogIdProcessContextBarPositionSupported); if (data.processContext->state & ProcessContext::kCycleValid) addLogEvent (kLogIdProcessContextCycleSupported); if (data.processContext->state & ProcessContext::kTempoValid) addLogEvent (kLogIdProcessContextTempoSupported); if (data.processContext->state & ProcessContext::kTimeSigValid) addLogEvent (kLogIdProcessContextTimeSigSupported); if (data.processContext->state & ProcessContext::kChordValid) addLogEvent (kLogIdProcessContextChordSupported); if (data.processContext->state & ProcessContext::kSmpteValid) addLogEvent (kLogIdProcessContextSmpteSupported); if (data.processContext->state & ProcessContext::kClockValid) addLogEvent (kLogIdProcessContextClockSupported); if (mLastProjectTimeSamples != kMinInt64) { bool playbackChanged = (data.processContext->state & ProcessContext::kPlaying) != (mLastState & ProcessContext::kPlaying); if ((mLastState & ProcessContext::kPlaying) == 0) { if (mLastProjectTimeSamples != data.processContext->projectTimeSamples) { if (playbackChanged) addLogEvent (kLogIdProcessPlaybackChangedDiscontinuityDetected); else addLogEvent (kLogIdProcessDiscontinuityDetected); } } else if (data.processContext->state & ProcessContext::kPlaying) { if (mLastProjectTimeSamples + mLastNumSamples != data.processContext->projectTimeSamples) { if (playbackChanged) addLogEvent (kLogIdProcessPlaybackChangedDiscontinuityDetected); else addLogEvent (kLogIdProcessDiscontinuityDetected); } } if ((data.processContext->state & ProcessContext::kContTimeValid) && (mLastContinuousProjectTimeSamples != kMinInt64)) { if (mLastContinuousProjectTimeSamples + mLastNumSamples != data.processContext->continousTimeSamples) { if (playbackChanged) addLogEvent (kLogIdProcessPlaybackChangedContinuousDiscontinuityDetected); else addLogEvent (kLogIdProcessContinuousDiscontinuityDetected); } } } mLastProjectTimeSamples = data.processContext->projectTimeSamples; mLastContinuousProjectTimeSamples = data.processContext->continousTimeSamples; mLastState = data.processContext->state; mLastNumSamples = data.numSamples; } // (data.processContext) Algo::foreach (data.inputParameterChanges, [&] (IParamValueQueue& paramQueue) { Algo::foreachLast (paramQueue, [&] (ParamID id, int32 /*sampleOffset*/, ParamValue value) { if (id == kBypassTag) { mBypass = value > 0; mBypassProcessorFloat.setActive (mBypass); mBypassProcessorDouble.setActive (mBypass); } else if (id == kLatencyTag) { mWantedLatency = value * HostChecker::kMaxLatency; addLogEvent (kLogIdInformLatencyChanged); } else if (id == kProcessingLoadTag) { mProcessingLoad = value; } else if (id == kGeneratePeaksTag) { mGeneratePeaks = value; } }); }); if (mBypassProcessorFloat.isActive ()) { if (data.symbolicSampleSize == kSample32) mBypassProcessorFloat.process (data); else // kSample64 mBypassProcessorDouble.process (data); } else if (data.numSamples && data.numOutputs) { if (data.numInputs > 0 && data.inputs[0].silenceFlags != 0) { addLogEvent (kLogIdSilentFlagsSupported); } if (data.numInputs > 1 && data.inputs[1].silenceFlags != 0) { addLogEvent (kLogIdSilentFlagsSCSupported); } // Generate Processing load if (mProcessingLoad > 0) { int32 countLoop = mProcessingLoad * 200; if (data.symbolicSampleSize == kSample32) { auto tmp1 = data.outputs[0].channelBuffers32[0][0]; for (int32 i = 0; i < data.inputs[0].numChannels; i++) { for (int32 s = 0; s < data.numSamples; s++) { auto tmp2 = data.inputs[0].channelBuffers32[i][s]; for (int32 loop = 0; loop < countLoop; loop++) { tmp2 = sinf (tmp2) * cosf (tmp2); } data.outputs[0].channelBuffers32[0][0] = tmp2; } } data.outputs[0].channelBuffers32[0][0] = tmp1; } else // kSample64 { auto tmp1 = data.outputs[0].channelBuffers64[0][0]; for (int32 i = 0; i < data.inputs[0].numChannels; i++) { for (int32 s = 0; s < data.numSamples; s++) { auto tmp2 = data.inputs[0].channelBuffers64[i][s]; for (int32 loop = 0; loop < countLoop; loop++) { tmp2 = sinf (tmp2) * cosf (tmp2); } data.outputs[0].channelBuffers64[0][0] = tmp2; } } data.outputs[0].channelBuffers64[0][0] = tmp1; } } // Generate output (peak at a given tempo) (overwrite the input) if (mGeneratePeaks > 0 && data.processContext) { if (data.symbolicSampleSize == kSample32) Algo::clear32 (data.outputs, data.numSamples, data.numOutputs); else // kSample64 Algo::clear64 (data.outputs, data.numSamples, data.numOutputs); float coef = mGeneratePeaks * mLastBlockMarkerValue; float distance2BarPosition = (data.processContext->projectTimeMusic - data.processContext->barPositionMusic) / (4. * data.processContext->timeSigNumerator) * data.processContext->timeSigDenominator / 2.; // Normalized Tempo [0, 360] => [0, 1] float tempo = data.processContext->tempo / 360.; if (data.symbolicSampleSize == kSample32) { for (int32 i = 0; i < data.outputs[0].numChannels && i < 1; i++) { data.outputs[0].channelBuffers32[i][0] = coef; if (data.processContext->state & ProcessContext::kTempoValid && data.numSamples > 3) data.outputs[0].channelBuffers32[i][3] = tempo; } if (data.processContext->state & ProcessContext::kBarPositionValid) { for (int32 i = 1; i < data.outputs[0].numChannels; i++) { data.outputs[0].channelBuffers32[i][0] = distance2BarPosition; } } } else // kSample64 { for (int32 i = 0; i < data.outputs[0].numChannels && i < 1; i++) { data.outputs[0].channelBuffers64[i][0] = coef; if (data.processContext->state & ProcessContext::kTempoValid && data.numSamples > 3) data.outputs[0].channelBuffers64[i][3] = tempo; } if (data.processContext->state & ProcessContext::kBarPositionValid) { for (int32 i = 1; i < data.outputs[0].numChannels; i++) { data.outputs[0].channelBuffers64[i][0] = distance2BarPosition; } } } // mLastBlockMarkerValue = -mLastBlockMarkerValue; data.outputs[0].silenceFlags = 0x0; const float kMaxNotesToDisplay = 5.f; // check event from all input events and send them to the output event Algo::foreach (data.inputEvents, [&] (Event& event) { switch (event.type) { //--- ------------------- case Event::kNoteOnEvent: mNumNoteOns++; if (data.symbolicSampleSize == kSample32) data.outputs[0].channelBuffers32[0][event.sampleOffset] = mNumNoteOns / kMaxNotesToDisplay; else // kSample64 data.outputs[0].channelBuffers64[0][event.sampleOffset] = mNumNoteOns / kMaxNotesToDisplay; if (data.outputEvents) { data.outputEvents->addEvent (event); Event evtMIDICC {}; Helpers::initLegacyMIDICCOutEvent (evtMIDICC, kCtrlModWheel, event.noteOn.channel, event.noteOn.velocity); data.outputEvents->addEvent (evtMIDICC); } break; //--- ------------------- case Event::kNoteOffEvent: if (data.symbolicSampleSize == kSample32) data.outputs[0].channelBuffers32[1][event.sampleOffset] = -mNumNoteOns / kMaxNotesToDisplay; else // kSample64 data.outputs[0].channelBuffers64[1][event.sampleOffset] = -mNumNoteOns / kMaxNotesToDisplay; if (data.outputEvents) data.outputEvents->addEvent (event); mNumNoteOns--; break; //--- ------------------- default: break; } }); } else { //---get audio buffers---------------- uint32 sampleFramesSize = getSampleFramesSizeInBytes (processSetup, data.numSamples); void** in = getChannelBuffersPointer (processSetup, data.inputs[0]); void** out = getChannelBuffersPointer (processSetup, data.outputs[0]); int32 minNum = Min (data.outputs[0].numChannels, data.inputs[0].numChannels); for (int32 i = 0; i < minNum; i++) { // do not need to be copied if the buffers are the same if (in[i] != out[i]) { memcpy (out[i], in[i], sampleFramesSize); } } data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; for (int32 i = minNum; i < data.outputs[0].numChannels; i++) { memset (out[i], 0, sampleFramesSize); data.outputs[0].silenceFlags |= ((uint64)1 << i); } } } if (data.outputParameterChanges) { const EventLogger::Codes& errors = mHostCheck.getEventLogs (); auto iter = errors.begin (); uint32 warnIdValue[HostChecker::kParamWarnCount] = {0}; while (iter != errors.end ()) { if ((*iter).fromProcessor && (*iter).count > 0) { int64 id = (*iter).id; int64 offset = id / HostChecker::kParamWarnBitCount; id = id % HostChecker::kParamWarnBitCount; if (offset >= HostChecker::kParamWarnCount) { break; } warnIdValue[offset] |= 1 << id; // addLogEventMessage ((*iter)); } ++iter; } for (uint32 i = 0; i < HostChecker::kParamWarnCount; i++) { if (warnIdValue[i] != 0) { int32 idx; if (auto* queue = data.outputParameterChanges->addParameterData (kProcessWarnTag + i, idx)) queue->addPoint ( 0, (double)warnIdValue[i] / double (HostChecker::kParamWarnStepCount), idx); } } mHostCheck.getEventLogger ().resetLogEvents (); } return kResultOk; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::setupProcessing (ProcessSetup& setup) { if (mCurrentState != State::kInitialized && mCurrentState != State::kSetupDone) { addLogEvent (kLogIdInvalidStateInitializedMissing); } mCurrentState = State::kSetupDone; mHostCheck.setProcessSetup (setup); return AudioEffect::setupProcessing (setup); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::setActive (TBool state) { if (dataExchangeHandler) { if (state) dataExchangeHandler->onActivate (processSetup); else dataExchangeHandler->onDeactivate (); } if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerProcessor::setActive"), THREAD_CHECK_EXIT)) { addLogEvent (kLogIdSetActiveCalledinWrongThread); } // we should not be in kActivated State! if (mCurrentState == State::kProcessing) { addLogEvent (kLogIdInvalidStateSetActiveWrong); } if (!state) { // only possible previous State: kActivated if (mCurrentState == State::kSetupDone) { addLogEvent (kLogIdsetActiveFalseRedundant); } mCurrentState = State::kSetupDone; mBypassProcessorFloat.reset (); mBypassProcessorDouble.reset (); } else { mSetActiveCalled = true; // only possible previous State: kSetupDone if (mCurrentState == State::kActivated) { addLogEvent (kLogIdsetActiveTrueRedundant); } else if (mCurrentState != State::kSetupDone) { addLogEvent (kLogIdInvalidStateSetupMissing); } mCurrentState = State::kActivated; mLatency = mWantedLatency; // prepare bypass mBypassProcessorFloat.setup (*this, processSetup, mLatency); mBypassProcessorDouble.setup (*this, processSetup, mLatency); } mLastBlockMarkerValue = -0.5f; mNumNoteOns = 0; sendNowAllLogEvents (); return AudioEffect::setActive (state); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::notify (IMessage* message) { if (!message) return kInvalidArgument; if (FIDStringsEqual (message->getMessageID (), "Parameter")) { int64 paramId = -1; if (message->getAttributes ()->getInt ("ID", paramId) == kResultOk) { mHostCheck.addParameter (static_cast (paramId)); } } return kResultOk; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::canProcessSampleSize (int32 symbolicSampleSize) { if (symbolicSampleSize == kSample32) { addLogEvent (kLogIdCanProcessSampleSize32); return kResultTrue; } if (symbolicSampleSize == kSample64) { addLogEvent (kLogIdCanProcessSampleSize64); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- uint32 PLUGIN_API HostCheckerProcessor::getLatencySamples () { addLogEvent (kLogIdGetLatencySamples); return mLatency; } //----------------------------------------------------------------------------- uint32 PLUGIN_API HostCheckerProcessor::getTailSamples () { addLogEvent (kLogIdGetTailSamples); return mLatency; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::getRoutingInfo (RoutingInfo& inInfo, RoutingInfo& outInfo) { addLogEvent (kLogIdGetRoutingInfo); return AudioEffect::getRoutingInfo (inInfo, outInfo); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::activateBus (MediaType type, BusDirection dir, int32 index, TBool state) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerProcessor::activateBus"), THREAD_CHECK_EXIT)) { addLogEvent (kLogIdactivateBusCalledinWrongThread); } if (type == kAudio && dir == kInput) { if (index < 0 || index >= static_cast (getBusList (kAudio, kInput)->size ())) addLogEvent (kLogIdInvalidActivateAuxBus); else if (index > 0) addLogEvent (kLogIdActivateAuxBus); } auto result = AudioEffect::activateBus (type, dir, index, state); if (result == kResultTrue && type == kAudio) { if (auto list = getBusList (type, dir)) { int32 lastActive = -1; for (int32 idx = static_cast (list->size ()) - 1; idx >= 0; --idx) { if (list->at (idx)->isActive ()) { lastActive = idx; break; } } if (dir == kInput) mMinimumOfInputBufferCount = lastActive + 1; else mMinimumOfOutputBufferCount = lastActive + 1; } } return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { addLogEvent (kLogIdSetBusArrangements); return AudioEffect::setBusArrangements (inputs, numIns, outputs, numOuts); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::getBusArrangement (BusDirection dir, int32 busIndex, SpeakerArrangement& arr) { addLogEvent (kLogIdGetBusArrangements); return AudioEffect::getBusArrangement (dir, busIndex, arr); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::connect (IConnectionPoint* other) { auto res = AudioEffect::connect (other); if (dataExchangeHandler) dataExchangeHandler->onConnect (other, getHostContext ()); return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::disconnect (IConnectionPoint* other) { if (dataExchangeHandler) dataExchangeHandler->onDisconnect (other); return AudioEffect::disconnect (other); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::setProcessing (TBool state) { if (state) { // only possible previous State: kActivated if (mCurrentState != State::kActivated) addLogEvent (kLogIdInvalidStateSetProcessingWrong); if (mCurrentState == State::kProcessing) addLogEvent (kLogIdsetProcessingTrueRedundant); mCurrentState = State::kProcessing; } else { if (mCurrentState != State::kProcessing) addLogEvent (kLogIdsetProcessingFalseRedundant); mCurrentState = State::kActivated; } AudioEffect::setProcessing (state); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::setState (IBStream* state) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerProcessor::setState"), THREAD_CHECK_EXIT)) { addLogEvent (kLogIdProcessorSetStateCalledinWrongThread); } FUnknownPtr stream (state); if (IAttributeList* list = stream ? stream->getAttributes () : nullptr) { addLogEvent (kLogIdIAttributeListInSetStateSupported); } IBStreamer streamer (state, kLittleEndian); // version uint32 version; streamer.readInt32u (version); if (version < 1 || version > 1000) { version = 1; streamer.seek (-4, kSeekCurrent); } float saved = 0.f; if (streamer.readFloat (saved) == false) return kResultFalse; if (saved != 12345.67f) { SMTG_ASSERT (false) } uint32 latency = mLatency; if (streamer.readInt32u (latency) == false) return kResultFalse; uint32 bypass; if (streamer.readInt32u (bypass) == false) return kResultFalse; float processingLoad = 0.f; if (version > 1) { if (streamer.readFloat (processingLoad) == false) return kResultFalse; } mBypass = bypass > 0; mBypassProcessorFloat.setActive (mBypass); mBypassProcessorDouble.setActive (mBypass); mProcessingLoad = processingLoad; if (latency != mLatency) { mLatency = latency; sendLatencyChanged (); } return kResultOk; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostCheckerProcessor::getState (IBStream* state) { if (!threadChecker->test (THREAD_CHECK_MSG ("HostCheckerProcessor::getState"), THREAD_CHECK_EXIT)) { addLogEvent (kLogIdProcessorGetStateCalledinWrongThread); } if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // version streamer.writeInt32u (2); float toSave = 12345.67f; streamer.writeFloat (toSave); streamer.writeInt32u (mLatency); streamer.writeInt32u (mBypass ? 1 : 0); streamer.writeFloat (mProcessingLoad); return kResultOk; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/hostcheckerprocessor.h000066400000000000000000000153151461511344300270520ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/hostcheckerprocessor.h // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "hostcheck.h" #include "logevents.h" #include "public.sdk/source/common/threadchecker.h" #include "public.sdk/source/vst/utility/dataexchange.h" #include "public.sdk/source/vst/vstaudioeffect.h" #include "public.sdk/source/vst/vstbypassprocessor.h" #include "base/thread/include/flock.h" #include "pluginterfaces/vst/ivstprefetchablesupport.h" #include namespace Steinberg { namespace Vst { static constexpr DataExchangeBlock InvalidDataExchangeBlock = {nullptr, 0, InvalidDataExchangeBlockID}; //----------------------------------------------------------------------------- class HostCheckerProcessor : public AudioEffect, public IAudioPresentationLatency, public IPrefetchableSupport { public: HostCheckerProcessor (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; tresult PLUGIN_API setupProcessing (ProcessSetup& setup) SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API notify (IMessage* message) SMTG_OVERRIDE; uint32 PLUGIN_API getLatencySamples () SMTG_OVERRIDE; uint32 PLUGIN_API getTailSamples () SMTG_OVERRIDE; tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; tresult PLUGIN_API setProcessing (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getRoutingInfo (RoutingInfo& inInfo, RoutingInfo& outInfo) SMTG_OVERRIDE; tresult PLUGIN_API activateBus (MediaType type, BusDirection dir, int32 index, TBool state) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API getBusArrangement (BusDirection dir, int32 busIndex, SpeakerArrangement& arr) SMTG_OVERRIDE; static FUnknown* createInstance (void*) { return (IAudioProcessor*)new HostCheckerProcessor (); } tresult PLUGIN_API connect (IConnectionPoint* other) SMTG_OVERRIDE; tresult PLUGIN_API disconnect (IConnectionPoint* other) SMTG_OVERRIDE; //---IAudioPresentationLatency------------------------- tresult PLUGIN_API setAudioPresentationLatencySamples (BusDirection dir, int32 busIndex, uint32 latencyInSamples) SMTG_OVERRIDE; //---IPrefetchableSupport------------------------------ tresult PLUGIN_API getPrefetchableSupport (PrefetchableSupport& prefetchable /*out*/) SMTG_OVERRIDE; //---IProcessContextRequirements----------------------- uint32 PLUGIN_API getProcessContextRequirements () SMTG_OVERRIDE; DEFINE_INTERFACES DEF_INTERFACE (IAudioPresentationLatency) DEF_INTERFACE (IPrefetchableSupport) END_DEFINE_INTERFACES (AudioEffect) REFCOUNT_METHODS (AudioEffect) enum class State : uint32 { kUninitialized = 0, kInitialized, kSetupDone, kActivated, kProcessing }; protected: void addLogEvent (Steinberg::int32 logId); void informLatencyChanged (); void sendLatencyChanged (); void addLogEventMessage (const LogEvent& logEvent); void sendLogEventMessage (const LogEvent& logEvent); void sendNowAllLogEvents (); ProcessContext* getCurrentExchangeData (); HostCheck mHostCheck; BypassProcessor mBypassProcessorFloat; BypassProcessor mBypassProcessorDouble; DataExchangeBlock mCurrentExchangeBlock {InvalidDataExchangeBlock}; float mLastBlockMarkerValue {-0.5f}; int32 mNumNoteOns {0}; uint32 mLatency {0}; uint32 mWantedLatency {0}; float mGeneratePeaks {0.f}; float mProcessingLoad {0.f}; State mCurrentState {State::kUninitialized}; uint32 mMinimumOfInputBufferCount {0}; uint32 mMinimumOfOutputBufferCount {0}; TSamples mLastContinuousProjectTimeSamples {kMinInt64}; TSamples mLastProjectTimeSamples {kMinInt64}; int32 mLastNumSamples {0}; uint32 mLastState {0}; std::unique_ptr threadChecker {ThreadChecker::create ()}; Steinberg::Base::Thread::FLock msgQueueLock; std::list msgQueue; DataExchangeHandler* dataExchangeHandler {nullptr}; int64 mLastExchangeBlockSendSystemTime {0}; bool mBypass {false}; bool mSetActiveCalled {false}; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/logevents.h000066400000000000000000000670741461511344300246270ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/logevents.h // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include "base/source/fstring.h" #include //------------------------------------------------------------------------ struct LogEvent { LogEvent () : id (-1), count (0), fromProcessor (false) {} LogEvent (const LogEvent& other) : id (other.id), count (other.count), fromProcessor (other.fromProcessor) { } Steinberg::int64 id; Steinberg::int64 count; bool fromProcessor; }; //------------------------------------------------------------------------ // Categories #define SETUP_CONTEXT "SetupContext" #define STATE "State" #define AUDIO_BUFFER "AudioBuffer" #define EVENT_LIST "EventList" #define PARAM_CHANGE "ParameterChanges" #define PROCESS_DATA "ProcessData" #define PROCESS_CONTEXT "ProcessContext" #define THREAD_CONTEXT "ThreadContext" #define FEATURE_SUPPORT "FeatureSupport" #define HOST_FEATURE_SUPPORT "HostFeatureSupport" #define FEATURE_PROCESSOR_SUPPORT "FeatureProcessSupport" #define PROCESS true #define CONTROL false // Severity #define LOG_ERR "Error" #define LOG_WARN "Warn" #define LOG_INFO "Info" #define LOG_EVENT_LIST(LOG_DEF) \ LOG_DEF(kLogIdProcessorControllerConnection,CONTROL, LOG_WARN, SETUP_CONTEXT, "Processor and controller are directly connected (direct pointers no wrapper)."), \ LOG_DEF(kLogIdInvalidActivateAuxBus, PROCESS, LOG_ERR, SETUP_CONTEXT, "Unknown bus to activate!"),\ LOG_DEF(kLogIdInvalidStateInitializedMissing,PROCESS, LOG_ERR, STATE, "Missing State: Uninitialized => Initialized."), \ LOG_DEF(kLogIdInvalidStateSetupMissing, PROCESS, LOG_ERR, STATE, "Missing State: Initialized => Setup Done."), \ LOG_DEF(kLogIdInvalidStateActivatedMissing, PROCESS, LOG_ERR, STATE, "Missing State: Setup Done => Activated."), \ LOG_DEF(kLogIdInvalidStateProcessingMissing,PROCESS, LOG_ERR, STATE, "Missing State: Activated => Processing."), \ LOG_DEF(kLogIdInvalidStateSetActiveWrong, PROCESS, LOG_ERR, STATE, "Wrong Call Order: setActive () called in a Processing State."), \ LOG_DEF(kLogIdInvalidStateSetProcessingWrong,PROCESS, LOG_ERR, STATE, "Wrong Call Order: setProcessing () called in not Activated State."), \ LOG_DEF(kLogIdsetActiveFalseRedundant, PROCESS, LOG_WARN, STATE, "Redondant Call: setActive (false)!"), \ LOG_DEF(kLogIdsetActiveTrueRedundant, PROCESS, LOG_WARN, STATE, "Redondant Call: setActive (true)!"), \ LOG_DEF(kLogIdsetProcessingFalseRedundant, PROCESS, LOG_WARN, STATE, "Redondant Call: setProcessing (false)!"), \ LOG_DEF(kLogIdsetProcessingTrueRedundant, PROCESS, LOG_WARN, STATE, "Redondant Call: setProcessing (true)!"), \ LOG_DEF(kLogIdProcessContextPointerNull, PROCESS, LOG_WARN, PROCESS_DATA, "Pointer to ProcessContext struct is null."),\ LOG_DEF(kLogIdInvalidSymbolicSampleSize, PROCESS, LOG_ERR, PROCESS_DATA, "Symbolic sample size does not match the one in ProcessSetup"), \ LOG_DEF(kLogIdInvalidProcessMode, PROCESS, LOG_ERR, PROCESS_DATA, "Process mode does not match the one in ProcessSetup."),\ LOG_DEF(kLogIdInvalidBlockSize, PROCESS, LOG_ERR, PROCESS_DATA, "Block size is either < 1 or >= max block size."),\ LOG_DEF(kLogIdProcessPlaybackChangedDiscontinuityDetected, PROCESS, LOG_INFO, PROCESS_DATA, "Discontinuity in projectTimeSamples detected due to Start/Stop."),\ LOG_DEF(kLogIdProcessDiscontinuityDetected, PROCESS, LOG_INFO, PROCESS_DATA, "Discontinuity in projectTimeSamples detected during playback or pause."),\ LOG_DEF(kLogIdProcessPlaybackChangedContinuousDiscontinuityDetected, PROCESS, LOG_INFO, PROCESS_DATA, "Discontinuity in continousTimeSamples detected due to Start/Stop."),\ LOG_DEF(kLogIdProcessContinuousDiscontinuityDetected, PROCESS, LOG_INFO, PROCESS_DATA, "Discontinuity in continousTimeSamples detected during playback or pause."),\ \ LOG_DEF(kLogIdInvalidProcessContextSampleRate, PROCESS, LOG_ERR, PROCESS_CONTEXT, "The sampleRate does not match the one in ProcessSetup."),\ LOG_DEF(kLogIdNullPointerToChannelBuf, PROCESS, LOG_ERR, AUDIO_BUFFER, "A pointer to a channel buffer is null although the index is valid."),\ LOG_DEF(kLogIdNullPointerToAuxChannelBuf, PROCESS, LOG_ERR, AUDIO_BUFFER, "A pointer to a SideChain channel buffer is null although the index is valid."),\ LOG_DEF(kLogIdNullPointerToAudioBusBuffer, PROCESS, LOG_ERR, AUDIO_BUFFER, "A pointer to an audio bus buffer is null although the index is valid."),\ LOG_DEF(kLogIdAudioBufNotMatchComponentBusCount,PROCESS, LOG_ERR, AUDIO_BUFFER, "Number of Audio Buffers does not match the number of busses defined by IComponent."),\ LOG_DEF(kLogIdNoBusActivated, PROCESS, LOG_ERR, AUDIO_BUFFER, "No output audio bus activated, but process is called with Audio Buffers."),\ LOG_DEF(kLogIdInvalidAudioBufNumOfChannels, PROCESS, LOG_ERR, AUDIO_BUFFER, "An audio bus number of channels is different from the one specified by IComponent."),\ LOG_DEF(kLogIdUnknownEventType, PROCESS, LOG_ERR, EVENT_LIST, "Event has a type which is not specified."),\ LOG_DEF(kLogIdInvalidEventVelocityValue, PROCESS, LOG_ERR, EVENT_LIST, "Event velocity is either < 0.0 or > 1.0."),\ LOG_DEF(kLogIdInvalidEventPitchValue, PROCESS, LOG_ERR, EVENT_LIST, "Event pitch is either < 0 or > 127."),\ LOG_DEF(kLogIdInvalidEventSampleOffset, PROCESS, LOG_ERR, EVENT_LIST, "Event sample offset either < 0 or >= max block size."),\ LOG_DEF(kLogIdInvalidEventBusIndex, PROCESS, LOG_ERR, EVENT_LIST, "Event has a bus index which is different from the one specified by IComponent."),\ LOG_DEF(kLogIdInvalidNoteOnChannelIndex, PROCESS, LOG_ERR, EVENT_LIST, "Note On event has a channel index which was not specified by IComponent."),\ LOG_DEF(kLogIdInvalidNoteOffChannelIndex, PROCESS, LOG_ERR, EVENT_LIST, "Note Off event has a channel index which was not specified by IComponent."),\ LOG_DEF(kLogIdInvalidPolyPressChannelIndex, PROCESS, LOG_ERR, EVENT_LIST, "Poly pressure event has a channel index which was not specified by IComponent."),\ LOG_DEF(kLogIdNumInputEventExceedsLimit, PROCESS, LOG_WARN, EVENT_LIST, "List contains more than 2048 events."),\ LOG_DEF(kLogIdCouldNotGetAnInputEvent, PROCESS, LOG_WARN, EVENT_LIST, "Getting an event returned an error code."),\ LOG_DEF(kLogIdEventsAreNotSortedBySampleOffset, PROCESS, LOG_WARN, EVENT_LIST, "Events are not sorted by sample offset."),\ LOG_DEF(kLogIdEventsAreNotSortedByPpqPosition, PROCESS, LOG_WARN, EVENT_LIST, "Events are not sorted by PPQ position."),\ LOG_DEF(kLogIdNoteOnWithPitchAlreadyTriggered, PROCESS, LOG_INFO, EVENT_LIST, "An event occurred with a pitch currently already triggered."),\ LOG_DEF(kLogIdNoteOnWithIdAlreadyTriggered, PROCESS, LOG_WARN, EVENT_LIST, "An event occurred with an ID currently already triggered."),\ LOG_DEF(kLogIdNoteOffWithIdNeverTriggered, PROCESS, LOG_WARN, EVENT_LIST, "A Note Off event with no matching note On (ID)"),\ LOG_DEF(kLogIdNoteOffWithPitchNeverTriggered, PROCESS, LOG_WARN, EVENT_LIST, "A Note Off event with no matching note On (pitch)."),\ LOG_DEF(kLogIdNoteExpressValNotNormalized, PROCESS, LOG_ERR, EVENT_LIST, "A note expression event value is either < 0.0 or > 1.0."),\ LOG_DEF(kLogIdInvalidParamValue, PROCESS, LOG_ERR, PARAM_CHANGE, "Parameter value is < 0.0 or > 1.0"),\ LOG_DEF(kLogIdInvalidParameterCount, PROCESS, LOG_ERR, PARAM_CHANGE, "The number of changes is bigger than the number of parameters specified by IEditController."),\ LOG_DEF(kLogIdInvalidParameterID, PROCESS, LOG_ERR, PARAM_CHANGE, "A parameter change queue has a parameter ID which was not specified by IEditController."),\ LOG_DEF(kLogIdParameterIDMoreThanOneTimeinList, PROCESS, LOG_ERR, PARAM_CHANGE, "A parameter ID is more than 1 time in the IParameterChanges list."),\ LOG_DEF(kLogIdParameterChangesPointerIsNull, PROCESS, LOG_WARN, PARAM_CHANGE, "Pointer to parameter changes interface is null."),\ LOG_DEF(kLogIdParameterQueueIsNullForValidIndex, PROCESS, LOG_ERR, PARAM_CHANGE, "Pointer to parameter value queue interface is null (index is valid!)"),\ LOG_DEF(kLogIdParametersAreNotSortedBySampleOffset, PROCESS, LOG_ERR, PARAM_CHANGE, "Parameter changes (for a ID) are not sorted by sample offset."),\ LOG_DEF(kLogIdParametersHaveSameSampleOffset, PROCESS, LOG_WARN, PARAM_CHANGE, "Parameter changes (for a ID) have more than 2 time the same sample offset."),\ \ LOG_DEF(kLogIdinitializeCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::initialize is called in wrong Thread!"),\ LOG_DEF(kLogIdterminateCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::terminate is called in wrong Thread!"),\ LOG_DEF(kLogIdQueryInterfaceCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::queryInterface is called in wrong Thread!"),\ LOG_DEF(kLogIdSetComponentHandlerCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::setComponentHandler is called in wrong Thread!"),\ LOG_DEF(kLogIdSetComponentStateCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::setComponentState is called in wrong Thread!"),\ LOG_DEF(kLogIdConnectCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::connect is called in wrong Thread!"),\ LOG_DEF(kLogIdsetStateCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::setState is called in wrong Thread!"),\ LOG_DEF(kLogIdgetStateCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getState is called in wrong Thread!"),\ LOG_DEF(kLogIdnotifyCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::notify is called in wrong Thread!"),\ LOG_DEF(kLogIdGetUnitByBusCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getUnitByBus is called in wrong Thread!"),\ LOG_DEF(kLogIdGetUnitCountCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getUnitCount is called in wrong Thread!"),\ LOG_DEF(kLogIdSetParamNormalizedCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::setParamNormalized is called in wrong Thread!"),\ LOG_DEF(kLogIdBeginEditCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::beginEdit is called in wrong Thread!"),\ LOG_DEF(kLogIdEndEditCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::endEdit is called in wrong Thread!"),\ LOG_DEF(kLogIdBeginEditFromHostCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::beginEditFromHost is called in wrong Thread!"),\ LOG_DEF(kLogIdEndEditFromHostCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::endEditFromHost is called in wrong Thread!"),\ LOG_DEF(kLogIdCreateViewCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::createView is called in wrong Thread!"),\ LOG_DEF(kLogIdOnLiveMIDIControllerInputCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::onLiveMIDIControllerInput is called in wrong Thread!"),\ LOG_DEF(kLogIdgetNoteExpressionCountCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getNoteExpressionCount is called in wrong Thread!"),\ LOG_DEF(kLogIdgetNoteExpressionInfoCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getNoteExpressionInfo is called in wrong Thread!"),\ LOG_DEF(kLogIdgetNoteExpressionValueByStringCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getNoteExpressionValueByString is called in wrong Thread!"),\ LOG_DEF(kLogIdgetNoteExpressionStringByValueCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getNoteExpressionStringByValue is called in wrong Thread!"),\ LOG_DEF(kLogIdgetPhysicalUIMappingCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getPhysicalUIMapping is called in wrong Thread!"),\ LOG_DEF(kLogIdgetKeyswitchCountCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getKeyswitchCount is called in wrong Thread!"),\ LOG_DEF(kLogIdgetKeyswitchInfoCalledinWrongThread, CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getKeyswitchInfo is called in wrong Thread!"),\ LOG_DEF(kLogIdsetAutomationStateCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::setAutomationState is called in wrong Thread!"),\ LOG_DEF(kLogIdsetKnobModeCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::setKnob is called in wrong Thread!"),\ LOG_DEF(kLogIdopenHelpCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::openHelp is called in wrong Thread!"),\ LOG_DEF(kLogIdopenAboutBoxCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::openAbout is called in wrong Thread!"),\ LOG_DEF(kLogIdsetChannelContextInfosCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::setChannelContextInfos is called in wrong Thread!"),\ LOG_DEF(kLogIdgetMidiControllerAssignmentCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getMidiControllerAssignment is called in wrong Thread!"),\ LOG_DEF(kLogIdgetXmlRepresentationStreamCalledinWrongThread,CONTROL, LOG_ERR, THREAD_CONTEXT, "IEditController::getXmlRepresentationStream is called in wrong Thread!"),\ LOG_DEF(kLogIdSetActiveCalledinWrongThread, PROCESS, LOG_ERR, THREAD_CONTEXT, "IComponent::setActive is called in wrong Thread!"),\ LOG_DEF(kLogIdProcessorSetStateCalledinWrongThread, PROCESS, LOG_ERR, THREAD_CONTEXT, "IComponent::setState is called in wrong Thread!"),\ LOG_DEF(kLogIdProcessorGetStateCalledinWrongThread, PROCESS, LOG_ERR, THREAD_CONTEXT, "IComponent::getState is called in wrong Thread!"),\ LOG_DEF(kLogIdactivateBusCalledinWrongThread, PROCESS, LOG_ERR, THREAD_CONTEXT, "IComponent::activateBus is called in wrong Thread!"),\ \ LOG_DEF(kLogIdSetActiveCalledSupported, PROCESS, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponent::setActive (true) called"), \ LOG_DEF(kLogIdIAttributeListInSetStateSupported, PROCESS, LOG_INFO, HOST_FEATURE_SUPPORT, "IAttributeList in setState supported!"), \ \ LOG_DEF (kLogIdRestartParamValuesChangedSupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponentHandler::restartComponent (kParamValuesChanged) supported!"), \ LOG_DEF (kLogIdRestartParamTitlesChangedSupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponentHandler::restartComponent (kParamTitlesChanged) supported!"), \ LOG_DEF (kLogIdRestartNoteExpressionChangedSupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponentHandler::restartComponent (kNoteExpressionChanged) supported!"), \ LOG_DEF (kLogIdRestartKeyswitchChangedSupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponentHandler::restartComponent (kKeyswitchChanged) supported!"), \ \ LOG_DEF(kLogIdIComponentHandler2Supported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponentHandler2 supported!"), \ LOG_DEF(kLogIdIComponentHandler2SetDirtySupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponentHandler2::setDirty supported!"), \ LOG_DEF(kLogIdIComponentHandler2RequestOpenEditorSupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponentHandler2::requestOpenEditor supported!"), \ LOG_DEF(kLogIdIComponentHandler3Supported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponentHandler3 (contextMenu) supported!"), \ LOG_DEF(kLogIdIComponentHandlerBusActivationSupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IComponentHandlerBusActivation supported!"), \ \ LOG_DEF(kLogIdIProgressSupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IProgress supported!"), \ LOG_DEF(kLogIdIPlugInterfaceSupportSupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IPlugInterfaceSupport supported!"), \ LOG_DEF(kLogIdIPlugInterfaceSupportNotSupported,CONTROL, LOG_ERR, HOST_FEATURE_SUPPORT, "IPlugInterfaceSupport not supported!"), \ LOG_DEF(kLogIdIPlugFrameonResizeViewSupported, CONTROL, LOG_INFO, HOST_FEATURE_SUPPORT, "IPlugFrame::resizeView supported!"), \ LOG_DEF(kLogIdIPrefetchableSupportSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IPrefetchableSupport supported!"),\ LOG_DEF(kLogIdAudioPresentationLatencySamplesSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioPresentationLatency supported!"), \ LOG_DEF(kLogIdIProcessContextRequirementsSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IProcessContextRequirements supported!"), \ \ LOG_DEF(kLogIdProcessModeOfflineSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessMode::kOffline supported!"), \ LOG_DEF(kLogIdProcessModeRealtimeSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessMode::kRealtime supported!"), \ LOG_DEF(kLogIdProcessModePrefetchSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessMode::kPrefetch supported!"), \ \ LOG_DEF(kLogIdProcessContextPlayingSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kPlaying supported!"), \ LOG_DEF(kLogIdProcessContextRecordingSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kRecording supported!"), \ LOG_DEF(kLogIdProcessContextCycleActiveSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kCycleActive supported!"), \ LOG_DEF(kLogIdProcessContextSystemTimeSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kSystemTimeValid supported!"), \ LOG_DEF(kLogIdProcessContextContTimeSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kContTimeValid supported!"), \ LOG_DEF(kLogIdProcessContextTimeMusicSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kProjectTimeMusicValid supported!"), \ LOG_DEF(kLogIdProcessContextBarPositionSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kBarPositionValid supported!"), \ LOG_DEF(kLogIdProcessContextCycleSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kCycleValid supported!"), \ LOG_DEF(kLogIdProcessContextTempoSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kTempoValid supported!"), \ LOG_DEF(kLogIdProcessContextTimeSigSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kTimeSigValid supported!"), \ LOG_DEF(kLogIdProcessContextChordSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kChordValid supported!"), \ LOG_DEF(kLogIdProcessContextSmpteSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kSmpteValid supported!"), \ LOG_DEF(kLogIdProcessContextClockSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "ProcessContext::kClockValid supported!"), \ \ LOG_DEF(kLogIdCanProcessSampleSize32, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioProcessor::canProcessSampleSize for kSample32 supported!"), \ LOG_DEF(kLogIdCanProcessSampleSize64, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioProcessor::canProcessSampleSize for kSample64 supported!"), \ LOG_DEF(kLogIdGetTailSamples, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioProcessor::getTailSamples supported!"), \ LOG_DEF(kLogIdGetLatencySamples, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioProcessor::getLatencySamples supported!"), \ LOG_DEF(kLogIdGetBusArrangements, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioProcessor::getBusArrangements supported!"), \ LOG_DEF(kLogIdSetBusArrangements, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioProcessor::setBusArrangements supported!"), \ LOG_DEF(kLogIdGetRoutingInfo, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IComponent::getRoutingInfo supported!"), \ LOG_DEF(kLogIdActivateAuxBus, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IComponent::activateBus for SideChain supported!"), \ LOG_DEF(kLogIdParametersFlushSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioProcessor::process called for flush parameter supported!"), \ LOG_DEF(kLogIdSilentFlagsSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioProcessor::process: silent flags for Main Input supported!"), \ LOG_DEF(kLogIdSilentFlagsSCSupported, PROCESS, LOG_INFO, FEATURE_PROCESSOR_SUPPORT, "IAudioProcessor::process: silent flags for SideChain-In supported!"), \ \ LOG_DEF(kLogIdIEditController2Supported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IEditController2 supported!"), \ LOG_DEF(kLogIdSetKnobModeSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IEditController2::setKnobMode supported!"), \ LOG_DEF(kLogIdOpenHelpSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IEditController2::openHelp supported!"), \ LOG_DEF(kLogIdOpenAboutBoxSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IEditController2::openAboutBox supported!"), \ \ LOG_DEF(kLogIdIMidiMappingSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IMidiMapping supported!"), \ LOG_DEF(kLogIdUnitSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "Unit supported!"), \ LOG_DEF(kLogIdGetUnitByBusSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IUnitInfo::getUnitByBus supported!"), \ LOG_DEF(kLogIdChannelContextSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "ChannelContext::IInfoListener supported!"), \ \ LOG_DEF(kLogIdINoteExpressionControllerSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "INoteExpressionController supported!"), \ LOG_DEF(kLogIdGetNoteExpressionStringByValueSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "INoteExpressionController::getNoteExpressionStringByValue supported!"), \ LOG_DEF(kLogIdGetNoteExpressionValueByStringSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "INoteExpressionController::getNoteExpressionValueByString supported!"), \ LOG_DEF(kLogIdINoteExpressionPhysicalUIMappingSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "INoteExpressionPhysicalUIMapping supported!"), \ LOG_DEF(kLogIdIKeyswitchControllerSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IKeyswitchController supported!"), \ \ LOG_DEF(kLogIdIMidiLearnSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IMidiLearn supported!"), \ LOG_DEF(kLogIdIMidiLearn_onLiveMIDIControllerInputSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IMidiLearn::onLiveMIDIControllerInput supported!"), \ \ LOG_DEF(kLogIdIXmlRepresentationControllerSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "XmlRepresentation supported!"),\ LOG_DEF(kLogIdIAutomationStateSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IAutomationState supported!"), \ LOG_DEF(kLogIdIEditControllerHostEditingSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IEditControllerHostEditing supported!"), \ LOG_DEF(kLogIdIEditControllerHostEditingMisused, CONTROL, LOG_ERR, FEATURE_SUPPORT, "IEditControllerHostEditing::beginEdit/endEditFromHost not correctly used!"), \ \ LOG_DEF(kLogIdIPlugViewonSizeSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::onSize supported!"), \ LOG_DEF(kLogIdIPlugViewcanResizeSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::canResize supported!"), \ LOG_DEF(kLogIdIPlugViewcheckSizeConstraintSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::checkSizeConstraint supported!"), \ LOG_DEF(kLogIdIPlugViewsetFrameSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::setFrame supported!"), \ LOG_DEF(kLogIdIPlugViewOnWheelCalled, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::onWheel supported!"), \ LOG_DEF(kLogIdIPlugViewOnKeyDownSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::onKeyDown supported!"), \ LOG_DEF(kLogIdIPlugViewOnKeyUpSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::onKeyUp supported!"), \ LOG_DEF(kLogIdIPlugViewOnFocusCalled, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::onFocus supported!"), \ LOG_DEF(kLogIdIPlugViewsetContentScaleFactorSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugViewContentScaleSupport::setContentScaleFactor supported!"), \ \ LOG_DEF(kLogIdIPlugViewmultipleAttachSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::attached-removed called multiple time."), \ LOG_DEF(kLogIdIPlugViewCalledSync, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::onSize is called sync during a resizeView."), \ LOG_DEF(kLogIdIPlugViewCalledBeforeOpen, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IPlugView::onSize is called before attached."), \ \ LOG_DEF(kLogIdIPlugViewKeyCalledBeforeAttach, CONTROL, LOG_ERR, FEATURE_SUPPORT, "IPlugView::onKeyUp or onKeyDown or onWheel is called before attached!"), \ LOG_DEF(kLogIdIPlugViewNotCalled, CONTROL, LOG_ERR, FEATURE_SUPPORT, "IPlugView::onSize not called after a resizeView!"), \ LOG_DEF(kLogIdIPlugViewCalledAsync, CONTROL, LOG_ERR, FEATURE_SUPPORT, "IPlugView::onSize is called async after a resizeView. Should be Sync!"), \ LOG_DEF(kLogIdIPlugViewattachedWithoutRemoved, CONTROL, LOG_ERR, FEATURE_SUPPORT, "IPlugView::attached is called without removed first!"), \ LOG_DEF(kLogIdIPlugViewremovedWithoutAttached, CONTROL, LOG_ERR, FEATURE_SUPPORT, "IPlugView::removed is called without attached first!"), \ \ LOG_DEF(kLogIdIParameterFinderSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IParameterFinder supported!"), \ LOG_DEF(kLogIdIParameterFunctionNameSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IParameterFunctionName supported!"), \ \ LOG_DEF(kLogIdIComponentHandlerSystemTimeSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IComponentHandlerSystemTime supported!"), \ LOG_DEF(kLogIdIDataExchangeHandlerSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IDataExchangeHandler supported!"), \ LOG_DEF(kLogIdIDataExchangeReceiverSupported, CONTROL, LOG_INFO, FEATURE_SUPPORT, "IDataExchangeReceiver supported!"), \ \ LOG_DEF(kLogIdInformLatencyChanged, PROCESS, LOG_INFO, PARAM_CHANGE, "InformLatencyChanged called from processor.") #define LOG_ID(a, b, c, d, e) a #define LOG_SEVER(a, b, c, d, e) c #define LOG_DESC(a, b, c, d, e) ("[" d "] " e) // "[category] description" #define LOG_CONTEXT(a, b, c, d, e) b // enum of all IDs enum eLogIds { LOG_EVENT_LIST (LOG_ID), kNumLogEvents, }; // array of bool process : 'true' or controller : 'false' static const bool logEventContext[] = {LOG_EVENT_LIST (LOG_CONTEXT)}; // array of log descriptions static const char* logEventDescriptions[] = {LOG_EVENT_LIST (LOG_DESC)}; // array of string 'error' or 'warning' static const char* logEventSeverity[] = {LOG_EVENT_LIST (LOG_SEVER)}; vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/parameterchangescheck.cpp000066400000000000000000000164601461511344300274540ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/parameterchangescheck.cpp // Created by : Steinberg, 12/2012 // Description : ParameterChanges check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "parameterchangescheck.h" #include "eventlogger.h" #include "logevents.h" #include "pluginterfaces/vst/ivstparameterchanges.h" //------------------------------------------------------------------------ // ParameterChangesCheck //------------------------------------------------------------------------ ParameterChangesCheck::ParameterChangesCheck () : mEventLogger (nullptr), mParameterIds (nullptr) {} //------------------------------------------------------------------------ void ParameterChangesCheck::checkParameterChanges (Steinberg::Vst::IParameterChanges* paramChanges) { if (!paramChanges) { mEventLogger->addLogEvent (kLogIdParameterChangesPointerIsNull); return; } checkParameterCount (paramChanges->getParameterCount ()); checkAllChanges (paramChanges); } //------------------------------------------------------------------------ void ParameterChangesCheck::checkAllChanges (Steinberg::Vst::IParameterChanges* paramChanges) { for (Steinberg::int32 paramIdx = 0; paramIdx < paramChanges->getParameterCount (); ++paramIdx) { Steinberg::Vst::IParamValueQueue* paramQueue = paramChanges->getParameterData (paramIdx); if (checkParameterQueue (paramQueue)) { bool found = false; auto id = paramQueue->getParameterId (); for (auto item : mTempUsedId) { if (item == id) { mEventLogger->addLogEvent (kLogIdParameterIDMoreThanOneTimeinList); found = true; break; } } if (!found) mTempUsedId.emplace_back (id); checkParameterId (id); checkPoints (paramQueue); } } mTempUsedId.clear (); } //------------------------------------------------------------------------ void ParameterChangesCheck::checkPoints (Steinberg::Vst::IParamValueQueue* paramQueue) { Steinberg::int32 lastLastSampleOffset = -1; Steinberg::int32 lastSampleOffset = -1; for (Steinberg::int32 pointIdx = 0; pointIdx < paramQueue->getPointCount (); ++pointIdx) { Steinberg::int32 sampleOffset = 0; Steinberg::Vst::ParamValue paramValue = 0; if (paramQueue->getPoint (pointIdx, sampleOffset, paramValue) == Steinberg::kResultOk) { checkNormalized (paramValue); checkSampleOffset (sampleOffset, lastSampleOffset); lastLastSampleOffset = lastSampleOffset; lastSampleOffset = sampleOffset; // here we have more than 3 points at the same sample position if (lastLastSampleOffset == sampleOffset) mEventLogger->addLogEvent (kLogIdParametersHaveSameSampleOffset); } } } //------------------------------------------------------------------------ void ParameterChangesCheck::setEventLogger (EventLogger* eventLogger) { mEventLogger = eventLogger; } //------------------------------------------------------------------------ void ParameterChangesCheck::setParamIDs (ParamIDs* parameterID) { mParameterIds = parameterID; updateParameterIDs (); } //------------------------------------------------------------------------ void ParameterChangesCheck::updateParameterIDs () { if (mParameterIds) mTempUsedId.resize (mParameterIds->size ()); } //------------------------------------------------------------------------ void ParameterChangesCheck::checkParameterCount (Steinberg::int32 paramCount) { if (!isValidParamCount (paramCount)) { mEventLogger->addLogEvent (kLogIdInvalidParameterCount); } } //------------------------------------------------------------------------ bool ParameterChangesCheck::isValidParamCount (Steinberg::int32 paramCount) const { return paramCount <= (Steinberg::int32)mParameterIds->size (); } //------------------------------------------------------------------------ void ParameterChangesCheck::checkParameterId (Steinberg::Vst::ParamID paramId) { if (!isValidParamID (paramId)) { mEventLogger->addLogEvent (kLogIdInvalidParameterID); } } //------------------------------------------------------------------------ bool ParameterChangesCheck::isValidParamID (Steinberg::Vst::ParamID paramId) const { return mParameterIds->find (paramId) != mParameterIds->end (); } //------------------------------------------------------------------------ void ParameterChangesCheck::checkNormalized (float normVal) { if (!isNormalized (normVal)) { mEventLogger->addLogEvent (kLogIdInvalidParamValue); } } //------------------------------------------------------------------------ void ParameterChangesCheck::checkSampleOffset (Steinberg::int32 sampleOffset, Steinberg::int32 lastSampleOffset) { if (!isValidSampleOffset (sampleOffset, lastSampleOffset)) { mEventLogger->addLogEvent (kLogIdParametersAreNotSortedBySampleOffset); } } //------------------------------------------------------------------------ bool ParameterChangesCheck::isNormalized (float normVal) const { return normVal >= 0. && normVal <= 1.; } //------------------------------------------------------------------------ bool ParameterChangesCheck::isValidSampleOffset (float sampleOffset, float lastSampleOffset) const { return sampleOffset >= lastSampleOffset; } //------------------------------------------------------------------------ bool ParameterChangesCheck::checkParameterQueue (Steinberg::Vst::IParamValueQueue* paramQueue) { if (!paramQueue) { mEventLogger->addLogEvent (kLogIdParameterQueueIsNullForValidIndex); } return paramQueue != nullptr; } vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/parameterchangescheck.h000066400000000000000000000074621461511344300271230ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/parameterchangescheck.h // Created by : Steinberg, 12/2012 // Description : ParameterChanges check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstnoteexpression.h" #include #include class EventLogger; namespace Steinberg { namespace Vst { class IParamValueQueue; } } //------------------------------------------------------------------------ // EventListCheck //------------------------------------------------------------------------ class ParameterChangesCheck { public: //------------------------------------------------------------------------ ParameterChangesCheck (); using ParamIDs = std::set; void checkParameterChanges (Steinberg::Vst::IParameterChanges* paramChanges); void setEventLogger (EventLogger* eventLogger); void setParamIDs (ParamIDs* parameterID); void updateParameterIDs (); //------------------------------------------------------------------------ protected: void checkAllChanges (Steinberg::Vst::IParameterChanges* paramChanges); void checkParameterCount (Steinberg::int32 paramCount); void checkParameterId (Steinberg::Vst::ParamID paramId); void checkNormalized (float normVal); void checkSampleOffset (Steinberg::int32 sampleOffset, Steinberg::int32 lastSampleOffset); bool checkParameterQueue (Steinberg::Vst::IParamValueQueue* paramQueue); void checkPoints (Steinberg::Vst::IParamValueQueue* paramQueue); bool isNormalized (float normVal) const; bool isValidSampleOffset (float sampleOffset, float lastSampleOffset) const; bool isValidParamID (Steinberg::Vst::ParamID paramId) const; bool isValidParamCount (Steinberg::int32 paramCount) const; EventLogger* mEventLogger; ParamIDs* mParameterIds; std::vector mTempUsedId; }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/processcontextcheck.cpp000066400000000000000000000062651461511344300272300ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/processcontextcheck.cpp // Created by : Steinberg, 12/2012 // Description : Process Context check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginterfaces/vst/ivstprocesscontext.h" #include "processcontextcheck.h" #include "eventlogger.h" #include "logevents.h" //------------------------------------------------------------------------ // ProcessContextCheck //------------------------------------------------------------------------ ProcessContextCheck::ProcessContextCheck () : mEventLogger (nullptr), mSampleRate (0) {} //------------------------------------------------------------------------ void ProcessContextCheck::setEventLogger (EventLogger* eventLogger) { mEventLogger = eventLogger; } //------------------------------------------------------------------------ void ProcessContextCheck::check (Steinberg::Vst::ProcessContext* context) { if (!context) { mEventLogger->addLogEvent (kLogIdProcessContextPointerNull); return; } if (context->sampleRate != mSampleRate) { mEventLogger->addLogEvent (kLogIdInvalidProcessContextSampleRate); } } //------------------------------------------------------------------------ void ProcessContextCheck::setSampleRate (double sampleRate) { mSampleRate = sampleRate; } vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/processcontextcheck.h000066400000000000000000000054171461511344300266730ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/processcontextcheck.h // Created by : Steinberg, 12/2012 // Description : Process Context check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstaudioprocessor.h" class EventLogger; //------------------------------------------------------------------------ // ProcessContextCheck //------------------------------------------------------------------------ class ProcessContextCheck { public: //------------------------------------------------------------------------ ProcessContextCheck (); void setEventLogger (EventLogger* eventLogger); void setSampleRate (double sampleRate); void check (Steinberg::Vst::ProcessContext* context); //------------------------------------------------------------------------ protected: EventLogger* mEventLogger; double mSampleRate; }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/processsetupcheck.cpp000066400000000000000000000070251461511344300266770ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/processsetupcheck.cpp // Created by : Steinberg, 12/2012 // Description : VST::ProcessSetup check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "processsetupcheck.h" #include "logevents.h" //------------------------------------------------------------------------ // ProcessSetupCheck //------------------------------------------------------------------------ ProcessSetupCheck::ProcessSetupCheck () : mEventLogger (nullptr) {} //------------------------------------------------------------------------ void ProcessSetupCheck::setProcessSetup (Steinberg::Vst::ProcessSetup setup) { mSetup = setup; } //------------------------------------------------------------------------ void ProcessSetupCheck::check (const Steinberg::Vst::ProcessData& data) { if (data.symbolicSampleSize != mSetup.symbolicSampleSize) { mEventLogger->addLogEvent (kLogIdInvalidSymbolicSampleSize); } if (data.processMode != mSetup.processMode) { // exception toggle between kRealtime kPrefetch if (!((mSetup.processMode == Steinberg::Vst::kRealtime && data.processMode == Steinberg::Vst::kPrefetch) || (mSetup.processMode == Steinberg::Vst::kPrefetch && data.processMode == Steinberg::Vst::kRealtime))) mEventLogger->addLogEvent (kLogIdInvalidProcessMode); } if (data.numSamples < 0 || data.numSamples > mSetup.maxSamplesPerBlock) { mEventLogger->addLogEvent (kLogIdInvalidBlockSize); } } //------------------------------------------------------------------------ void ProcessSetupCheck::setEventLogger (EventLogger* eventLogger) { mEventLogger = eventLogger; } vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/processsetupcheck.h000066400000000000000000000054731461511344300263510ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/processsetupcheck.h // Created by : Steinberg, 12/2012 // Description : VST::ProcessSetup check // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "eventlogger.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" //------------------------------------------------------------------------ // ProcessSetupCheck //------------------------------------------------------------------------ class ProcessSetupCheck { public: //------------------------------------------------------------------------ ProcessSetupCheck (); void setProcessSetup (Steinberg::Vst::ProcessSetup setup); void setEventLogger (EventLogger* eventLogger); void check (const Steinberg::Vst::ProcessData& data); //------------------------------------------------------------------------ protected: Steinberg::Vst::ProcessSetup mSetup; EventLogger* mEventLogger; }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker/source/version.h000066400000000000000000000054041461511344300242730ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/version.h // Created by : Steinberg, 04/2012 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringPluginName "VST3 Host Checker" #define stringOriginalFilename "HostChecker.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "HostChecker VST3-SDK (64Bit)" #else #define stringFileDescription "HostChecker VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker_aax/000077500000000000000000000000001461511344300217635ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker_aax/CMakeLists.txt000066400000000000000000000036511461511344300245300ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) if(NOT SMTG_AAX_SDK_PATH OR NOT SMTG_ENABLE_VSTGUI_SUPPORT) return() endif() project(smtg-vst3-hostchecker_aax VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 hostchecker AAX example" ) include(SMTG_AddAAXLibrary) smtg_add_aaxplugin(hostchecker_aax ../hostchecker/resource/hostchecker.uidesc ../hostchecker/source/cids.h ../hostchecker/source/editorsizecontroller.cpp ../hostchecker/source/editorsizecontroller.h ../hostchecker/source/eventlistcheck.cpp ../hostchecker/source/eventlistcheck.h ../hostchecker/source/eventlogdatabrowsersource.cpp ../hostchecker/source/eventlogdatabrowsersource.h ../hostchecker/source/eventlogger.cpp ../hostchecker/source/eventlogger.h ../hostchecker/source/factory.cpp ../hostchecker/source/hostcheck.cpp ../hostchecker/source/hostcheck.h ../hostchecker/source/hostcheckercontroller.cpp ../hostchecker/source/hostcheckercontroller.h ../hostchecker/source/hostcheckerprocessor.cpp ../hostchecker/source/hostcheckerprocessor.h ../hostchecker/source/logevents.h ../hostchecker/source/parameterchangescheck.cpp ../hostchecker/source/parameterchangescheck.h ../hostchecker/source/processcontextcheck.cpp ../hostchecker/source/processcontextcheck.h ../hostchecker/source/processsetupcheck.cpp ../hostchecker/source/processsetupcheck.h ../hostchecker/source/version.h source/hostchecker_aax.cpp ) target_include_directories(hostchecker_aax PUBLIC ${SDK_ROOT}/public.sdk/samples/vst/hostchecker/source ) target_link_libraries(hostchecker_aax PRIVATE vstgui_support aaxwrapper ) smtg_target_add_plugin_resources(hostchecker_aax RESOURCES ../hostchecker/resource/hostchecker.uidesc ../hostchecker/resource/bypass.png ../hostchecker/resource/knob.png ) smtg_target_setup_as_vst3_example(hostchecker_aax) vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker_aax/resource/000077500000000000000000000000001461511344300236125ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker_aax/resource/info.rc000066400000000000000000000031211461511344300250700ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS knob.png PNG "../../hostchecker/resource/knob.png" bypass.png PNG "../../hostchecker/resource/bypass.png" hostchecker.uidesc DATA "../../hostchecker/resource/hostchecker.uidesc" ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker_aax/source/000077500000000000000000000000001461511344300232635ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/hostchecker_aax/source/hostchecker_aax.cpp000066400000000000000000000116641461511344300271320ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/hostchecker/source/hostchecker_aax.cpp // Created by : Steinberg, 04/2019 // Description : HostChecker AAX Example for VST SDK 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/aaxwrapper/aaxwrapper_description.h" #include "cids.h" #include "hostcheckercontroller.h" #include "pluginterfaces/base/futils.h" //------------------------------------------------------------------------ #if 0 // for additional outputs AAX_Aux_Desc effAux_stereo[] = { // name, channel count { "AGain AUX2", 2 }, { nullptr } }; #endif //------------------------------------------------------------------------ #if 1 // MIDI inputs for instruments or Fx with MIDI input AAX_MIDI_Desc effMIDI[] = { // port name, channel mask { "HostChecker MIDI", 0xffff }, { nullptr } }; #endif //------------------------------------------------------------------------ // Input/Output meters /* AAX_Meter_Desc effMeters[] = { // not used { "Input", CCONST ('A', 'G', 'I', 'n'), 0 / *AAX_eMeterOrientation_Default* /, 0 / *AAX_eMeterType_Input* / }, { "Output", kVuPPMId, 0 / *AAX_eMeterOrientation_Default* /, 1 / *AAX_eMeterType_Output* / }, { nullptr } }; */ //------------------------------------------------------------------------ AAX_Plugin_Desc effPlugins[] = { // effect-ID, name, // Native ID, AudioSuite ID, // InChannels, OutChannels, InSideChain channels, // MIDI, Aux, // Meters // Latency // note: IDs must be unique across plugins // Mono variant {"com.steinberg.hostchecker.mono", "HostChecker", CCONST ('H', 'C', 'h', '1'), CCONST ('H', 'C', 'H', '1'), 1, /*mInputChannels*/ 1, /*mOutputChannels*/ 1, /*mSideChainInputChannels*/ effMIDI, /*effMIDI*/ nullptr, /*effAux*/ nullptr, /*effMeters*/ 0 /*Latency*/ }, // Stereo variant {"com.steinberg.hostchecker.stereo", "HostChecker", CCONST ('H', 'C', 'h', '2'), CCONST ('H', 'C', 'H', '2'), 2, /*mInputChannels*/ 2, /*mOutputChannels*/ 2, /*mSideChainInputChannels*/ effMIDI, /*effMIDI*/ nullptr, /*effAux*/ nullptr, /*effMeters*/ 0 /*Latency*/ }, {nullptr} }; //------------------------------------------------------------------------ AAX_Effect_Desc effDesc = { "Steinberg", // manufacturer "HostChecker", // product CCONST ('S', 'M', 'T', 'G'), // manufacturer ID CCONST ('H', 'C', 'H', 'E'), // product ID PlugVST3Category, // VST category (define cids.h) {0}, // VST3 class ID (set later) 1, // version nullptr, // no pagetable file "hostchecker.xml", effPlugins, }; //------------------------------------------------------------------------ // this drag's in all the craft from the AAX library int* forceLinkAAXWrapper = &AAXWrapper_linkAnchor; //------------------------------------------------------------------------ AAX_Effect_Desc* AAXWrapper_GetDescription () { // cannot initialize in global descriptor, and it might be link order dependent memcpy (effDesc.mVST3PluginID, (const char*)Steinberg::Vst::HostCheckerProcessorUID, sizeof (effDesc.mVST3PluginID)); return &effDesc; } vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/000077500000000000000000000000001461511344300217755ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/CMakeLists.txt000066400000000000000000000007101461511344300245330ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-legacymidiccout VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Legacy MIDI CC out example" ) smtg_add_vst3plugin(legacymidiccout source/plug.cpp source/plug.h source/plugcids.h source/plugcontroller.cpp source/plugcontroller.h source/plugentry.cpp source/plugparamids.h source/version.h ) smtg_target_setup_as_vst3_example(legacymidiccout) vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/resource/000077500000000000000000000000001461511344300236245ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/resource/info.rc000066400000000000000000000026341461511344300251120ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/source/000077500000000000000000000000001461511344300232755ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/source/plug.cpp000066400000000000000000000235561461511344300247630ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/legacymidiccout/source/plug.cpp // Created by : Steinberg, 11/2018 // Description : Plug-in Example for VST SDK 3.x using Legacy MIDI CC // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcids.h" // for class ids #include "plugparamids.h" #include "public.sdk/source/vst/vsteventshelper.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "base/source/fstreamer.h" #include namespace Steinberg { namespace Vst { namespace LegacyMIDICCOut { //------------------------------------------------------------------------ // Plug Implementation //------------------------------------------------------------------------ Plug::Plug () { // register its editor class (the same than used in plugentry.cpp) setControllerClass (PlugControllerUID); } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::initialize (FUnknown* context) { //---always initialize the parent------- tresult result = AudioEffect::initialize (context); // if everything Ok, continue if (result != kResultOk) { return result; } //---create Audio In/Out busses------ // we want a stereo Input and a Stereo Output addAudioInput (STR16 ("Stereo In"), SpeakerArr::kStereo); addAudioOutput (STR16 ("Stereo Out"), SpeakerArr::kStereo); // one output for event and only 1 channel wanted addEventOutput (STR16 ("Event Out"), kMaxMIDIChannelSupported); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::process (ProcessData& data) { //---1) Read inputs parameter changes----------- if (IParameterChanges* paramChanges = data.inputParameterChanges) { IEventList* eventList = data.outputEvents; int32 numParamsChanged = paramChanges->getParameterCount (); // for each parameter which are some changes in this audio block: for (int32 i = 0; i < numParamsChanged; i++) { IParamValueQueue* paramQueue = paramChanges->getParameterData (i); if (!paramQueue) continue; int32 offsetSamples; double value; int32 numPoints = paramQueue->getPointCount (); ParamID id = paramQueue->getParameterId (); switch (id) { case kBypassId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { bBypass = (value > 0.5f); } break; case kChannelId: { if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { mChannel = Helpers::boundTo (0, kMaxMIDIChannelSupported - 1, value * (kMaxMIDIChannelSupported - 1) + 0.5); } } break; case kControllerNumId: { if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { mControllerNum = Helpers::getMIDICCOutValue (value); } } break; case kControllerId: { if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { if (value != mLastController) { if (eventList && !bBypass) { Event event {}; Helpers::initLegacyMIDICCOutEvent ( event, mControllerNum, mChannel, Helpers::getMIDICCOutValue (value)); event.sampleOffset = offsetSamples; event.flags = Event::kIsLive; eventList->addEvent (event); } mLastController = value; } } } break; case kAftertouchId: { if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { if (value != mLastAftertouch) { if (eventList && !bBypass) { Event event {}; Helpers::initLegacyMIDICCOutEvent ( event, kAfterTouch, mChannel, Helpers::getMIDICCOutValue (value)); event.sampleOffset = offsetSamples; eventList->addEvent (event); } mLastAftertouch = value; } } } break; case kProgramChangeId: { if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { if (value != mLastProgramChange) { if (eventList && !bBypass) { Event event {}; Helpers::initLegacyMIDICCOutEvent ( event, kCtrlProgramChange, mChannel, Helpers::getMIDICCOutValue (value)); event.sampleOffset = offsetSamples; eventList->addEvent (event); } mLastProgramChange = value; } } } break; case kPolyPressureNoteId: { if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { mPolyPressureKey = Helpers::getMIDICCOutValue (value); } } break; case kPolyPressureId: { if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { if (value != mLastPolyPressure) { if (eventList && !bBypass) { Event event {}; Helpers::initLegacyMIDICCOutEvent ( event, kCtrlPolyPressure, mChannel, mPolyPressureKey, Helpers::getMIDICCOutValue (value)); event.sampleOffset = offsetSamples; eventList->addEvent (event); } mLastPolyPressure = value; } } } break; case kPitchBendId: { if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { if (value != mLastPitchBend) { if (eventList && !bBypass) { Event event {}; Helpers::initLegacyMIDICCOutEvent (event, kPitchBend, mChannel); Helpers::setPitchBendValue (event.midiCCOut, value); event.sampleOffset = offsetSamples; eventList->addEvent (event); } mLastPitchBend = value; } } } break; } } } //--- ---------------------------------- //---3) Process Audio--------------------- //--- ---------------------------------- if (data.numInputs == 0 || data.numOutputs == 0) { // nothing to do return kResultOk; } // (simplification) we suppose in this example that we have the same input channel count than // the output int32 numChannels = data.inputs[0].numChannels; //---get audio buffers---------------- float** in = data.inputs[0].channelBuffers32; float** out = data.outputs[0].channelBuffers32; for (int32 i = 0; i < numChannels; i++) { // do not need to be copied if the buffers are the same if (in[i] != out[i]) { memcpy (out[i], in[i], data.numSamples * sizeof (float)); } } return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::setState (IBStream* state) { // called when we load a preset, the model has to be reloaded if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; bBypass = savedBypass > 0; streamer.readInt8u (mChannel); streamer.readInt8u (mControllerNum); streamer.readInt8u (mPolyPressureKey); streamer.readDouble (mLastController); streamer.readDouble (mLastProgramChange); streamer.readDouble (mLastAftertouch); streamer.readDouble (mLastPolyPressure); streamer.readDouble (mLastPitchBend); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::getState (IBStream* state) { // here we need to save the model if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); streamer.writeInt32 (bBypass ? 1 : 0); streamer.writeInt8u (mChannel); streamer.writeInt8u (mControllerNum); streamer.writeInt8u (mPolyPressureKey); streamer.writeDouble (mLastController); streamer.writeDouble (mLastProgramChange); streamer.writeDouble (mLastAftertouch); streamer.writeDouble (mLastPolyPressure); streamer.writeDouble (mLastPitchBend); return kResultOk; } } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/source/plug.h000066400000000000000000000073531461511344300244250ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/legacymidiccout/source/plug.h // Created by : Steinberg, 11/2018 // Description : Plug-in Example for VST SDK 3.x using Legacy MIDI CC // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" namespace Steinberg { namespace Vst { namespace LegacyMIDICCOut { //------------------------------------------------------------------------ // Plug: directly derived from the helper class AudioEffect //------------------------------------------------------------------------ class Plug : public AudioEffect { public: Plug (); //--- --------------------------------------------------------------------- // create function required for plug-in factory, // it will be called to create new instances of this plug-in //--- --------------------------------------------------------------------- static FUnknown* createInstance (void* /*context*/) { return (IAudioProcessor*)new Plug; } //--- --------------------------------------------------------------------- // AudioEffect overrides: //--- --------------------------------------------------------------------- /** Called at first after constructor */ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; /** Here we go...the process call */ tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; /** For persistence */ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: double mLastController {0}; double mLastProgramChange {0}; double mLastAftertouch {0}; double mLastPolyPressure {0}; double mLastPitchBend {0}; uint8 mChannel {0}; uint8 mControllerNum {11}; uint8 mPolyPressureKey {36}; bool bBypass {false}; }; } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/source/plugcids.h000066400000000000000000000046101461511344300252610ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/legacymidiccout/source/plugcids.h // Created by : Steinberg, 11/2018 // Description : Plug-in Example for VST SDK 3.x using Legacy MIDI CC // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { namespace LegacyMIDICCOut { static const FUID PlugProcessorUID (0x5DDBB0D4, 0xF9284622, 0x90FE5A5E, 0x1414905A); static const FUID PlugControllerUID (0x9F34E8E9, 0x22FC42E6, 0x993C6007, 0x642512C9); } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/source/plugcontroller.cpp000066400000000000000000000144521461511344300270620ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/legacymidiccout/source/plugcontroller.cpp // Created by : Steinberg, 11/2018 // Description : Plug-in Example for VST SDK 3.x using Legacy MIDI CC // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plugcontroller.h" #include "plugparamids.h" #include "public.sdk/source/vst/vsteventshelper.h" #include "base/source/fstreamer.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstcomponent.h" namespace Steinberg { namespace Vst { namespace LegacyMIDICCOut { //------------------------------------------------------------------------ // PlugController Implementation //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::initialize (FUnknown* context) { tresult result = EditControllerEx1::initialize (context); if (result != kResultOk) { return result; } //---Create Parameters------------ //---Bypass parameter--- int32 stepCount = 1; ParamValue defaultVal = 0; int32 flags = ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass; int32 tag = kBypassId; parameters.addParameter (STR ("Bypass"), nullptr, stepCount, defaultVal, flags, tag); //---Controller parameter - only for demo --- parameters.addParameter (new RangeParameter ( STR16 ("MIDI Channel"), kChannelId, nullptr, 1, kMaxMIDIChannelSupported, 1, kMaxMIDIChannelSupported - 1, ParameterInfo::kNoFlags)); parameters.addParameter (new RangeParameter (STR16 ("Controller Num"), kControllerNumId, nullptr, 0, 127, 0, 127, ParameterInfo::kCanAutomate)); parameters.addParameter (new RangeParameter (STR16 ("Controller"), kControllerId, nullptr, 0, 127, 0, 127, ParameterInfo::kCanAutomate)); parameters.addParameter (new RangeParameter (STR16 ("PitchBend"), kPitchBendId, nullptr, -0x2000, 0x1FFF, 0, 0x3FFF, ParameterInfo::kCanAutomate)); parameters.addParameter (new RangeParameter (STR16 ("ProgramChange"), kProgramChangeId, nullptr, 0, 127, 0, 127, ParameterInfo::kCanAutomate)); parameters.addParameter (new RangeParameter (STR16 ("PolyPressure Key"), kPolyPressureNoteId, nullptr, 0, 127, 0, 127, ParameterInfo::kCanAutomate)); parameters.addParameter (new RangeParameter (STR16 ("PolyPressure"), kPolyPressureId, nullptr, 0, 127, 0, 127, ParameterInfo::kCanAutomate)); parameters.addParameter (new RangeParameter (STR16 ("Aftertouch"), kAftertouchId, nullptr, 0, 127, 0, 127, ParameterInfo::kCanAutomate)); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::setComponentState (IBStream* state) { // we receive the current state of the component (processor part) // we read only the gain and bypass value... if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 bypassState = 0; if (streamer.readInt32 (bypassState) == false) return kResultFalse; setParamNormalized (kBypassId, bypassState ? 1 : 0); uint8 val; if (streamer.readInt8u (val) == true) setParamNormalized (kChannelId, static_cast(val) / static_cast(kMaxMIDIChannelSupported)); if (streamer.readInt8u (val) == true) setParamNormalized (kControllerNumId, Helpers::getMIDINormValue (val)); if (streamer.readInt8u (val) == true) setParamNormalized (kPolyPressureNoteId, Helpers::getMIDINormValue (val)); double dVal; if (streamer.readDouble (dVal) == true) setParamNormalized (kPolyPressureNoteId, Helpers::getMIDINormValue (dVal)); if (streamer.readDouble (dVal) == true) setParamNormalized (kProgramChangeId, Helpers::getMIDINormValue (dVal)); if (streamer.readDouble (dVal) == true) setParamNormalized (kAftertouchId, Helpers::getMIDINormValue (dVal)); if (streamer.readDouble (dVal) == true) setParamNormalized (kPolyPressureId, Helpers::getMIDINormValue (dVal)); if (streamer.readDouble (dVal) == true) setParamNormalized (kPitchBendId, Helpers::getMIDINormValue (dVal)); return kResultOk; } } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/source/plugcontroller.h000066400000000000000000000061441461511344300265260ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/legacymidiccout/source/plugcontroller.h // Created by : Steinberg, 11/2018 // Description : Plug-in Example for VST SDK 3.x using Legacy MIDI CC // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" namespace Steinberg { namespace Vst { namespace LegacyMIDICCOut { //------------------------------------------------------------------------ // PlugController //------------------------------------------------------------------------ class PlugController : public EditControllerEx1 { public: //--- --------------------------------------------------------------------- // create function required for plug-in factory, // it will be called to create new instances of this controller //--- --------------------------------------------------------------------- static FUnknown* createInstance (void* /*context*/) { return (IEditController*)new PlugController; } //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; //---from EditControllerEx1----- tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; DELEGATE_REFCOUNT (EditControllerEx1) }; } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/source/plugentry.cpp000066400000000000000000000104151461511344300260330ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/legacymidiccout/source/plugentry.cpp // Created by : Steinberg, 11/2018 // Description : Plug-in Example for VST SDK 3.x using Legacy MIDI CC // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcontroller.h" #include "plugcids.h" // for class ids #include "version.h" // for versioning #include "public.sdk/source/main/pluginfactory.h" #define stringPluginName "Test Legacy MIDI CC Out" using namespace Steinberg; using namespace Steinberg::Vst; //------------------------------------------------------------------------ // VST Plug-in Entry //------------------------------------------------------------------------ // Windows: do not forget to include a .def file in your project to export // GetPluginFactory function! //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID(LegacyMIDICCOut::PlugProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) stringPluginName, // here the plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers "Fx", // Subcategory for this plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) LegacyMIDICCOut::Plug::createInstance) // function pointer called when this component should be instantiated // its kVstComponentControllerClass component DEF_CLASS2 (INLINE_UID_FROM_FUID (LegacyMIDICCOut::PlugControllerUID), PClassInfo::kManyInstances, // cardinality kVstComponentControllerClass,// the Controller category (do not change this) stringPluginName "Controller", // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) LegacyMIDICCOut::PlugController::createInstance)// function pointer called when this component should be instantiated END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/source/plugparamids.h000066400000000000000000000046731461511344300261500ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/legacymidiccout/source/plugparamids.h // Created by : Steinberg, 11/2018 // Description : Plug-in Example for VST SDK 3.x using Legacy MIDI CC // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once enum { /** parameter ID */ kBypassId = 0, ///< Bypass value (we will handle the bypass process) (is automatable) kChannelId, kControllerNumId, kControllerId, kProgramChangeId, kPitchBendId, kPolyPressureNoteId, kPolyPressureId, kAftertouchId, //--- others kMaxMIDIChannelSupported = 16 }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/legacymidiccout/source/version.h000066400000000000000000000054231461511344300251370ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/legacymidiccout/source/version.h // Created by : Steinberg, 11/2018 // Description : Plug-in Example for VST SDK 3.x using Legacy MIDI CC // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "legacymidiccout.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "LegacyMIDICCOut VST3-SDK (64Bit)" #else #define stringFileDescription "LegacyMIDICCOut VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/mac/000077500000000000000000000000001461511344300173705ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/mac/make_vst3_symbolic_link.sh000077500000000000000000000046141461511344300245460ustar00rootroot00000000000000#!/bin/sh #//------------------------------------------------------------------------ #// Project : VST SDK #// #// Category : Examples #// Filename : public.sdk/samples/vst/mac/make_vst3_symbolic_link.sh #// Created by : Steinberg, 06/2009 #// Description : places a symbolic link for the VST 3 Plug-In into the users VST3 folder. // To be used as "Run Script" build phase in Xcode #// #//----------------------------------------------------------------------------- #// LICENSE #// (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved #//----------------------------------------------------------------------------- #// Redistribution and use in source and binary forms, with or without modification, #// are permitted provided that the following conditions are met: #// #// * Redistributions of source code must retain the above copyright notice, #// this list of conditions and the following disclaimer. #// * Redistributions in binary form must reproduce the above copyright notice, #// this list of conditions and the following disclaimer in the documentation #// and/or other materials provided with the distribution. #// * Neither the name of the Steinberg Media Technologies nor the names of its #// contributors may be used to endorse or promote products derived from this #// software without specific prior written permission. #// #// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND #// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED #// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. #// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, #// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, #// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, #// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF #// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE #// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED #// OF THE POSSIBILITY OF SUCH DAMAGE. #//----------------------------------------------------------------------------- if [[ "$CONFIGURATION" == "Debug" ]] then mkdir -p ~/Library/Audio/Plug-Ins/VST3/ cd ~/Library/Audio/Plug-Ins/VST3/ ln -f -s "$BUILT_PRODUCTS_DIR/$WRAPPER_NAME" . fi vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/000077500000000000000000000000001461511344300202665ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/CMakeLists.txt000066400000000000000000000125111461511344300230260ustar00rootroot00000000000000 option(SMTG_MDA_VST3_VST2_COMPATIBLE "Build the MDA examples as a replacement for their VST2 counterpart" ON) cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-mda VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 MDA plug-ins example" ) if(SMTG_MDA_VST3_VST2_COMPATIBLE) set(COMPATIBILITY_FILE resource/vst3_compatibility.json) else() set(COMPATIBILITY_FILE resource/vst2_compatibility.json) endif() smtg_add_vst3plugin(mda-vst3 MODULEINFO_COMPATIBILITY ${COMPATIBILITY_FILE} SOURCES_LIST source/helpers.h source/mdaAmbienceController.cpp source/mdaAmbienceController.h source/mdaAmbienceProcessor.cpp source/mdaAmbienceProcessor.h source/mdaBandistoController.cpp source/mdaBandistoController.h source/mdaBandistoProcessor.cpp source/mdaBandistoProcessor.h source/mdaBaseController.cpp source/mdaBaseController.h source/mdaBaseProcessor.cpp source/mdaBaseProcessor.h source/mdaBeatBoxController.cpp source/mdaBeatBoxController.h source/mdaBeatBoxProcessor.cpp source/mdaBeatBoxProcessor.h source/mdaComboController.cpp source/mdaComboController.h source/mdaComboProcessor.cpp source/mdaComboProcessor.h source/mdaDeEsserController.cpp source/mdaDeEsserController.h source/mdaDeEsserProcessor.cpp source/mdaDeEsserProcessor.h source/mdaDegradeController.cpp source/mdaDegradeController.h source/mdaDegradeProcessor.cpp source/mdaDegradeProcessor.h source/mdaDelayController.cpp source/mdaDelayController.h source/mdaDelayProcessor.cpp source/mdaDelayProcessor.h source/mdaDetuneController.cpp source/mdaDetuneController.h source/mdaDetuneProcessor.cpp source/mdaDetuneProcessor.h source/mdaDitherController.cpp source/mdaDitherController.h source/mdaDitherProcessor.cpp source/mdaDitherProcessor.h source/mdaDubDelayController.cpp source/mdaDubDelayController.h source/mdaDubDelayProcessor.cpp source/mdaDubDelayProcessor.h source/mdaDX10Controller.cpp source/mdaDX10Controller.h source/mdaDX10Processor.cpp source/mdaDX10Processor.h source/mdaDynamicsController.cpp source/mdaDynamicsController.h source/mdaDynamicsProcessor.cpp source/mdaDynamicsProcessor.h source/mdaEPianoController.cpp source/mdaEPianoController.h source/mdaEPianoData.h source/mdaEPianoProcessor.cpp source/mdaEPianoProcessor.h source/mdafactory.cpp source/mdaImageController.cpp source/mdaImageController.h source/mdaImageProcessor.cpp source/mdaImageProcessor.h source/mdaJX10Controller.cpp source/mdaJX10Controller.h source/mdaJX10Processor.cpp source/mdaJX10Processor.h source/mdaLeslieController.cpp source/mdaLeslieController.h source/mdaLeslieProcessor.cpp source/mdaLeslieProcessor.h source/mdaLimiterController.cpp source/mdaLimiterController.h source/mdaLimiterProcessor.cpp source/mdaLimiterProcessor.h source/mdaLoudnessController.cpp source/mdaLoudnessController.h source/mdaLoudnessProcessor.cpp source/mdaLoudnessProcessor.h source/mdaMultiBandController.cpp source/mdaMultiBandController.h source/mdaMultiBandProcessor.cpp source/mdaMultiBandProcessor.h source/mdaOverdriveController.cpp source/mdaOverdriveController.h source/mdaOverdriveProcessor.cpp source/mdaOverdriveProcessor.h source/mdaParameter.cpp source/mdaParameter.h source/mdaPianoController.cpp source/mdaPianoController.h source/mdaPianoData.h source/mdaPianoProcessor.cpp source/mdaPianoProcessor.h source/mdaRePsychoController.cpp source/mdaRePsychoController.h source/mdaRePsychoProcessor.cpp source/mdaRePsychoProcessor.h source/mdaRezFilterController.cpp source/mdaRezFilterController.h source/mdaRezFilterProcessor.cpp source/mdaRezFilterProcessor.h source/mdaRingModController.cpp source/mdaRingModController.h source/mdaRingModProcessor.cpp source/mdaRingModProcessor.h source/mdaRoundPanController.cpp source/mdaRoundPanController.h source/mdaRoundPanProcessor.cpp source/mdaRoundPanProcessor.h source/mdaShepardController.cpp source/mdaShepardController.h source/mdaShepardProcessor.cpp source/mdaShepardProcessor.h source/mdaSpecMeterController.cpp source/mdaSpecMeterController.h source/mdaSpecMeterProcessor.cpp source/mdaSpecMeterProcessor.h source/mdaSplitterController.cpp source/mdaSplitterController.h source/mdaSplitterProcessor.cpp source/mdaSplitterProcessor.h source/mdaStereoController.cpp source/mdaStereoController.h source/mdaStereoProcessor.cpp source/mdaStereoProcessor.h source/mdaSubSynthController.cpp source/mdaSubSynthController.h source/mdaSubSynthProcessor.cpp source/mdaSubSynthProcessor.h source/mdaTalkBoxController.cpp source/mdaTalkBoxController.h source/mdaTalkBoxProcessor.cpp source/mdaTalkBoxProcessor.h source/mdaTestToneController.cpp source/mdaTestToneController.h source/mdaTestToneProcessor.cpp source/mdaTestToneProcessor.h source/mdaThruZeroController.cpp source/mdaThruZeroController.h source/mdaThruZeroProcessor.cpp source/mdaThruZeroProcessor.h source/mdaTrackerController.cpp source/mdaTrackerController.h source/mdaTrackerProcessor.cpp source/mdaTrackerProcessor.h source/version.h ) smtg_target_setup_as_vst3_example(mda-vst3) if(SMTG_MDA_VST3_VST2_COMPATIBLE) target_compile_definitions(mda-vst3 PUBLIC SMTG_MDA_VST2_COMPATIBILITY ) endif(SMTG_MDA_VST3_VST2_COMPATIBLE) vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/resource/000077500000000000000000000000001461511344300221155ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/resource/info.rc000066400000000000000000000026341461511344300234030ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/resource/vst2_compatibility.json000066400000000000000000000101761461511344300266440ustar00rootroot00000000000000[ { "New": "AF799E3AC94B444AB5B24FD5D3E3F9E4", // mda Ambience "Old": [ "AF799E3AC94B444AB5B24FD5D3E3F9E4", ], }, { "New": "79F1CDBB1F004396947E35BA22B4FA6D", // mda Bandisto "Old": [ "5653546D6461446D64612062616E6469", ], }, { "New": "9E6A6E959B73444097D787BEBBDDD831", // mda BeatBox "Old": [ "5653546D6461476D6461206265617462", ], }, { "New": "11C1BD22888F4F17B2E2A77B51CEDCD6", // mda Combo "Old": [ "5653546D6461586D646120636F6D626F", ], }, { "New": "174FD6D1856E4641BFB9851A1C544725", // mda DeEsser "Old": [ "5653546D6461736D64612064652D6573", ], }, { "New": "D31333A7A34E4690A279A0B06C91BB85", // mda Degrade "Old": [ "5653546D6461436D6461206465677261", ], }, { "New": "E5041336E9434B28B7B0126795F0C32F", // mda Delay "Old": [ "5653546D6461796D64612064656C6179", ], }, { "New": "4CCBED11E28346A6A91EC86C9E85EDF8", // mda Detune "Old": [ "5653546D6461746D646120646574756E", ], }, { "New": "A155F267A6954095AFD8BFB19E4F2293", // mda Dither "Old": [ "5653546D6461646D6461206469746865", ], }, { "New": "A49D123224794649A57337B4DDC5041C", // mda DubDelay "Old": [ "5653546D6461626D6461206475626465", ], }, { "New": "F8713648E24441748AAA3B62A77F9E2D", // mda DX10 "Old": [ "5653544D4441786D6461206478313000", ], }, { "New": "9CCF20FE76CD489CA9D7EA13B489CA55", // mda Dynamics "Old": [ "5653546D64614E6D64612064796E616D", ], }, { "New": "FED93DB85E81448FA3B14028879FA824", // mda EPiano "Old": [ "5653544D4441656D646120657069616E", ], }, { "New": "E99952F13CBD42DE98604990D4FB3212", // mda Image "Old": [ "5653546D6461496D646120696D616765", ], }, { "New": "82CD49DE13D743BAABDAC2991CE06F7C", // mda JX10 "Old": [ "5653544D44416A6D6461206A78313000", ], }, { "New": "FBD3AD809E2847E0B87CDEC35C0469B1", // mda Leslie "Old": [ "5653546D6461486D6461206C65736C69", ], }, { "New": "E13C8DA072DE4A97A0890C280BDA61F8", // mda Limiter "Old": [ "5653546D64614C6D6461206C696D6974", ], }, { "New": "F2351D3CA6E94D479E17EB3B6F30BA7C", // mda Loudness "Old": [ "5653546D64616C6D6461206C6F75646E", ], }, { "New": "97C5305947FC442C8A858B0430C3AFE7", // mda MultiBand "Old": [ "5653546D64614D6D6461206D756C7469", ], }, { "New": "203C7009042A4AC2A515CFF1DF647E92", // mda Overdrive "Old": [ "5653546D64614F6D6461206F76657264", ], }, { "New": "A77EA27C1F184322BBD2AD9373A2B7A0", // mda Piano "Old": [ "5653544D4441706D6461207069616E6F", ], }, { "New": "C20CCF8290574B7198AE3FE1240C2704", // mda RePsycho! "Old": [ "5653546D6461596D6461207265707379", ], }, { "New": "86983C018D684E3FBA2816C203A1450D", // mda RezFilter "Old": [ "5653546D6461466D64612072657A6669", ], }, { "New": "935CB08DFE614CF5A3927AAA21B25D95", // mda RingMod "Old": [ "5653546D6461526D64612072696E676D", ], }, { "New": "2BEB5541E93842358AAAE0AEB555BF75", // mda Round Panner "Old": [ "5653546D6461506D646120726F756E64", ], }, { "New": "DA28F0226D3E474488C9C4DAC690F337", // mda Shepard "Old": [ "5653546D6461686D6461207368657061", ], }, { "New": "EB4D787967114968B8E865FBFC508DB9", // mda Splitter "Old": [ "5653546D6461376D64612073706C6974", ], }, { "New": "DB1EB6424838483DA7C7E5D23686E943", // mda Stereo Simulator "Old": [ "5653546D6461536D6461207374657265", ], }, { "New": "A7CC7918A7D34EA3B51B6F2F9C0AF682", // mda Sub-Bass Synthesizer "Old": [ "5653546D6461426D6461207375626261", ], }, { "New": "F235EEE492084883AD5C863234DFE073", // mda TalkBox "Old": [ "5653546D6461266D64612074616C6B62", ], }, { "New": "0AF801E50B0D4D9BBB657671AC8F7847", // mda TestTone "Old": [ "5653546D6461546D6461207465737474", ], }, { "New": "E7B8149A63A54BF882B6A95D94A3F6EE", // mda Thru-Zero Flanger "Old": [ "5653546D64615A6D646120746872757A", ], }, { "New": "61EA12BBC25447EAABD8D344B21B8B40", // mda Tracker "Old": [ "5653546D64614A6D646120747261636B", ], }, { "New": "67B9A082CF0B4BAC907AA8B71D855F94", // mda SpecMeter "Old": [ "5653546D64613F6D646120737065636D", ], }, ] vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/resource/vst3_compatibility.json000066400000000000000000000101761461511344300266450ustar00rootroot00000000000000[ { "New": "AF799E3AC94B444AB5B24FD5D3E3F9E4", // mda Ambience "Old": [ "AF799E3AC94B444AB5B24FD5D3E3F9E4", ], }, { "New": "5653546D6461446D64612062616E6469", // mda Bandisto "Old": [ "79F1CDBB1F004396947E35BA22B4FA6D", ], }, { "New": "5653546D6461476D6461206265617462", // mda BeatBox "Old": [ "9E6A6E959B73444097D787BEBBDDD831", ], }, { "New": "5653546D6461586D646120636F6D626F", // mda Combo "Old": [ "11C1BD22888F4F17B2E2A77B51CEDCD6", ], }, { "New": "5653546D6461736D64612064652D6573", // mda DeEsser "Old": [ "174FD6D1856E4641BFB9851A1C544725", ], }, { "New": "5653546D6461436D6461206465677261", // mda Degrade "Old": [ "D31333A7A34E4690A279A0B06C91BB85", ], }, { "New": "5653546D6461796D64612064656C6179", // mda Delay "Old": [ "E5041336E9434B28B7B0126795F0C32F", ], }, { "New": "5653546D6461746D646120646574756E", // mda Detune "Old": [ "4CCBED11E28346A6A91EC86C9E85EDF8", ], }, { "New": "5653546D6461646D6461206469746865", // mda Dither "Old": [ "A155F267A6954095AFD8BFB19E4F2293", ], }, { "New": "5653546D6461626D6461206475626465", // mda DubDelay "Old": [ "A49D123224794649A57337B4DDC5041C", ], }, { "New": "5653544D4441786D6461206478313000", // mda DX10 "Old": [ "F8713648E24441748AAA3B62A77F9E2D", ], }, { "New": "5653546D64614E6D64612064796E616D", // mda Dynamics "Old": [ "9CCF20FE76CD489CA9D7EA13B489CA55", ], }, { "New": "5653544D4441656D646120657069616E", // mda EPiano "Old": [ "FED93DB85E81448FA3B14028879FA824", ], }, { "New": "5653546D6461496D646120696D616765", // mda Image "Old": [ "E99952F13CBD42DE98604990D4FB3212", ], }, { "New": "5653544D44416A6D6461206A78313000", // mda JX10 "Old": [ "82CD49DE13D743BAABDAC2991CE06F7C", ], }, { "New": "5653546D6461486D6461206C65736C69", // mda Leslie "Old": [ "FBD3AD809E2847E0B87CDEC35C0469B1", ], }, { "New": "5653546D64614C6D6461206C696D6974", // mda Limiter "Old": [ "E13C8DA072DE4A97A0890C280BDA61F8", ], }, { "New": "5653546D64616C6D6461206C6F75646E", // mda Loudness "Old": [ "F2351D3CA6E94D479E17EB3B6F30BA7C", ], }, { "New": "5653546D64614D6D6461206D756C7469", // mda MultiBand "Old": [ "97C5305947FC442C8A858B0430C3AFE7", ], }, { "New": "5653546D64614F6D6461206F76657264", // mda Overdrive "Old": [ "203C7009042A4AC2A515CFF1DF647E92", ], }, { "New": "5653544D4441706D6461207069616E6F", // mda Piano "Old": [ "A77EA27C1F184322BBD2AD9373A2B7A0", ], }, { "New": "5653546D6461596D6461207265707379", // mda RePsycho! "Old": [ "C20CCF8290574B7198AE3FE1240C2704", ], }, { "New": "5653546D6461466D64612072657A6669", // mda RezFilter "Old": [ "86983C018D684E3FBA2816C203A1450D", ], }, { "New": "5653546D6461526D64612072696E676D", // mda RingMod "Old": [ "935CB08DFE614CF5A3927AAA21B25D95", ], }, { "New": "5653546D6461506D646120726F756E64", // mda Round Panner "Old": [ "2BEB5541E93842358AAAE0AEB555BF75", ], }, { "New": "5653546D6461686D6461207368657061", // mda Shepard "Old": [ "DA28F0226D3E474488C9C4DAC690F337", ], }, { "New": "5653546D6461376D64612073706C6974", // mda Splitter "Old": [ "EB4D787967114968B8E865FBFC508DB9", ], }, { "New": "5653546D6461536D6461207374657265", // mda Stereo Simulator "Old": [ "DB1EB6424838483DA7C7E5D23686E943", ], }, { "New": "5653546D6461426D6461207375626261", // mda Sub-Bass Synthesizer "Old": [ "A7CC7918A7D34EA3B51B6F2F9C0AF682", ], }, { "New": "5653546D6461266D64612074616C6B62", // mda TalkBox "Old": [ "F235EEE492084883AD5C863234DFE073", ], }, { "New": "5653546D6461546D6461207465737474", // mda TestTone "Old": [ "0AF801E50B0D4D9BBB657671AC8F7847", ], }, { "New": "5653546D64615A6D646120746872757A", // mda Thru-Zero Flanger "Old": [ "E7B8149A63A54BF882B6A95D94A3F6EE", ], }, { "New": "5653546D64614A6D646120747261636B", // mda Tracker "Old": [ "61EA12BBC25447EAABD8D344B21B8B40", ], }, { "New": "5653546D64613F6D646120737065636D", // mda SpecMeter "Old": [ "67B9A082CF0B4BAC907AA8B71D855F94", ], }, ] vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/000077500000000000000000000000001461511344300215665ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/helpers.h000066400000000000000000000027221461511344300234040ustar00rootroot00000000000000/* * helpers.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "pluginterfaces/base/ftypes.h" #if BYTEORDER == kBigEndian #define SWAP64_LE(x) #define SWAP64_BE(x) SWAP_64(x) #define SWAP32_LE(x) #define SWAP32_BE(x) SWAP_32(x) #else #define SWAP64_LE(x) SWAP_64(x) #define SWAP64_BE(x) #define SWAP32_LE(x) SWAP_32(x) #define SWAP32_BE(x) #endif vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaAmbienceController.cpp000066400000000000000000000050331461511344300265240ustar00rootroot00000000000000/* * mdaAmbienceController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/13/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaAmbienceController.h" #include "pluginterfaces/base/ibstream.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- AmbienceController::AmbienceController () { } //----------------------------------------------------------------------------- AmbienceController::~AmbienceController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API AmbienceController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (new ScaledParameter (USTRING("Size"), USTRING("m"), 0, 0.7, ParameterInfo::kCanAutomate, pid++, 0, 10)); parameters.addParameter (new ScaledParameter (USTRING("HF Damp"), USTRING("%"), 0, 0.7, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Mix"), USTRING("%"), 0, 0.9, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -20, 20)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API AmbienceController::terminate () { return BaseController::terminate (); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaAmbienceController.h000066400000000000000000000035721461511344300261770ustar00rootroot00000000000000/* * mdaAmbienceController.h * mda-vst3 * * Created by Arne Scheffler on 6/13/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaAmbienceProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class AmbienceController : public BaseController { public: AmbienceController (); ~AmbienceController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new AmbienceController; } inline static DECLARE_UID (uid, 0x0D9DD331, 0xCCF044FF, 0xB7DCB8B9, 0xDF977096); }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaAmbienceProcessor.cpp000066400000000000000000000117751461511344300263720ustar00rootroot00000000000000/* * mdaAmbienceProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/13/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaAmbienceProcessor.h" #include "mdaAmbienceController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- AmbienceProcessor::AmbienceProcessor () : buf1 (nullptr) , buf2 (nullptr) , buf3 (nullptr) , buf4 (nullptr) { setControllerClass (AmbienceController::uid); allocParameters (4); } //----------------------------------------------------------------------------- AmbienceProcessor::~AmbienceProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API AmbienceProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); //inits here! params[0] = 0.7; //size params[1] = 0.7; //hf params[2] = 0.9; //mix params[3] = 0.5; //output buf1 = new float[1024]; buf2 = new float[1024]; buf3 = new float[1024]; buf4 = new float[1024]; fil = 0.0f; den = pos = 0; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API AmbienceProcessor::terminate () { if (buf1) delete [] buf1; if (buf2) delete [] buf2; if (buf3) delete [] buf3; if (buf4) delete [] buf4; buf1 = buf2 = buf3 = buf4 = nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API AmbienceProcessor::setActive (TBool state) { if (state) clearBuffers(); return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void AmbienceProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, r; float t, f=fil, fb=fbak, dmp=damp, y =dry, w=wet; int32 p = pos, d1, d2, d3, d4; if (rdy ==0) clearBuffers(); d1 = (p + (int32)(107 * size)) & 1023; d2 = (p + (int32)(142 * size)) & 1023; d3 = (p + (int32)(277 * size)) & 1023; d4 = (p + (int32)(379 * size)) & 1023; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; f += dmp * (w * (a + b) - f); //HF damping r = f; t = *(buf1 + p); r -= fb * t; *(buf1 + d1) = r; //allpass r += t; t = *(buf2 + p); r -= fb * t; *(buf2 + d2) = r; //allpass r += t; t = *(buf3 + p); r -= fb * t; *(buf3 + d3) = r; //allpass r += t; a = y * a + r - f; //left output t = *(buf4 + p); r -= fb * t; *(buf4 + d4) = r; //allpass r += t; b = y * b + r - f; //right output ++p &= 1023; ++d1 &= 1023; ++d2 &= 1023; ++d3 &= 1023; ++d4 &= 1023; *++out1 = a; *++out2 = b; } pos=p; if (fabs (f)>1.0e-10) { fil=f; den=0; } //catch denormals else { fil=0.0f; if (den==0) { den=1; clearBuffers(); } } } //----------------------------------------------------------------------------- void AmbienceProcessor::clearBuffers () { memset (buf1, 0, 1024 * sizeof (float)); memset (buf2, 0, 1024 * sizeof (float)); memset (buf3, 0, 1024 * sizeof (float)); memset (buf4, 0, 1024 * sizeof (float)); rdy = 1; } //----------------------------------------------------------------------------- void AmbienceProcessor::recalculate () { float tmp; fbak = 0.8f; damp = 0.05f + 0.9f * params[1]; tmp = (float)powf (10.0f, 2.0f * params[3] - 1.0f); dry = tmp - params[2] * params[2] * tmp; wet = (0.4f + 0.4f) * params[2] * tmp; tmp = 0.025f + 2.665f * params[0]; if (size!=tmp) rdy =0; //need to flush buffer size = tmp; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaAmbienceProcessor.h000066400000000000000000000043751461511344300260350ustar00rootroot00000000000000/* * mdaAmbienceProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/13/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class AmbienceProcessor : public BaseProcessor { public: AmbienceProcessor (); ~AmbienceProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaA'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new AmbienceProcessor; } inline static DECLARE_UID (uid, 0xAF799E3A, 0xC94B444A, 0xB5B24FD5, 0xD3E3F9E4); //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; void clearBuffers (); float *buf1, *buf2, *buf3, *buf4; float fil, fbak, damp, wet, dry, size; int32 pos, den, rdy; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBandistoController.cpp000066400000000000000000000114551461511344300265710ustar00rootroot00000000000000/* * mdaBandistoController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaBandistoController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- BandistoController::BandistoController () { } //----------------------------------------------------------------------------- BandistoController::~BandistoController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API BandistoController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { auto* listenParam = new IndexedParameter (USTRING("Listen"), nullptr, 3, 0, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, kParam0); listenParam->setIndexString (0, UString128("Low")); listenParam->setIndexString (1, UString128("Mid")); listenParam->setIndexString (2, UString128("High")); listenParam->setIndexString (3, UString128("Output")); parameters.addParameter (listenParam); parameters.addParameter (USTRING("L <> M"), USTRING("Hz"), 0, 0.4, ParameterInfo::kCanAutomate, kParam1); parameters.addParameter (USTRING("M <> H"), USTRING("Hz"), 0, 0.5, ParameterInfo::kCanAutomate, kParam2); parameters.addParameter (new ScaledParameter (USTRING("L Dist"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam3, 0, 60)); parameters.addParameter (new ScaledParameter (USTRING("M Dist"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam4, 0, 60)); parameters.addParameter (new ScaledParameter (USTRING("H Dist"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam5, 0, 60)); parameters.addParameter (new ScaledParameter (USTRING("L Out"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam6, -20, 20)); parameters.addParameter (new ScaledParameter (USTRING("M Out"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam7, -20, 20)); parameters.addParameter (new ScaledParameter (USTRING("H Out"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam8, -20, 20)); auto* modeParam = new IndexedParameter (USTRING("Mode"), nullptr, 1, 0., ParameterInfo::kCanAutomate | ParameterInfo::kIsList, kParam9); modeParam->setIndexString (0, UString128("Bipolar")); modeParam->setIndexString (1, UString128("Unipolar")); parameters.addParameter (modeParam); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API BandistoController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API BandistoController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case kParam1: { double fi1 = pow (10.0,valueNormalized - 1.70); fi1 = sampleRate * fi1 * (0.098 + 0.09*fi1 + 0.5*pow (fi1,8.2)); result.printFloat (fi1, 1); break; } case kParam2: { double fi1 = pow (10.0,valueNormalized - 1.05); fi1 = sampleRate * fi1 * (0.015 + 0.15*fi1 + 0.9*pow (fi1,8.2)); result.printFloat (fi1, 1); break; } default: return EditController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API BandistoController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { switch (tag) { case kParam1: { break; } case kParam2: { break; } default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBandistoController.h000066400000000000000000000051531461511344300262340ustar00rootroot00000000000000/* * mdaBandistoController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaBandistoProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class BandistoController : public BaseController { public: BandistoController (); ~BandistoController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kParam5, kParam6, kParam7, kParam8, kParam9, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new BandistoController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY //----------------------------------------------------------------------------- inline static DECLARE_UID (uid, 0x5653456D, 0x6461446D, 0x64612062, 0x616E6469); #else //----------------------------------------------------------------------------- inline static DECLARE_UID (uid, 0x302EA341, 0xB6AC46C6, 0xB54D65E5, 0x95E63FAB); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBandistoProcessor.cpp000066400000000000000000000115651461511344300264270ustar00rootroot00000000000000/* * mdaBandistoProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaBandistoProcessor.h" #include "mdaBandistoController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- BandistoProcessor::BandistoProcessor () { setControllerClass (BandistoController::uid); allocParameters(10); } //----------------------------------------------------------------------------- tresult PLUGIN_API BandistoProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); //inits here! params[0] = (float)1.00; //Listen: L/M/H/out params[1] = (float)0.40; //xover1 params[2] = (float)0.50; //xover2 params[3] = (float)0.50; //L drive (1) params[4] = (float)0.50; //M drive params[5] = (float)0.50; //H drive params[6] = (float)0.50; //L trim (2) params[7] = (float)0.50; //M trim params[8] = (float)0.50; //H trim params[9] = (float)0.4; //transistor/valve recalculate (); } return res; } //----------------------------------------------------------------------------- void BandistoProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, c, d, g, l=fb3, m, h, s, sl=slev; float f1i=fi1, f1o=fo1, f2i=fi2, f2o=fo2, b1=fb1, b2=fb2; float g1, d1=driv1, t1=trim1; float g2, d2=driv2, t2=trim2; float g3, d3=driv3, t3=trim3; int v=valve; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; //process from here... s = (a - b) * sl; //keep stereo component for later a += (float)(b + 0.00002); //dope filter at low level b2 = (f2i * a) + (f2o * b2); //crossovers b1 = (f1i * b2) + (f1o * b1); l = (f1i * b1) + (f1o * l); m=b2-l; h=a-b2; g = (l>0)? l : -l; g = (float)(1.0 / (1.0 + d1 * g) ); //distort g1=g; g = (m > 0)? m : -m; g = (float)(1.0 / (1.0 + d2 * g) ); g2=g; g = (h>0)? h : -h; g = (float)(1.0 / (1.0 + d3 * g) ); g3=g; if (v) { if (l>0)g1=1.0; if (m > 0)g2=1.0; if (h>0)g3=1.0; } a = (l*g1*t1) + (m*g2*t2) + (h*g3*t3); c = a + s; // output d = a - s; *++out1 = c; *++out2 = d; } fb1=b1; fb2=b2, fb3=l; } //----------------------------------------------------------------------------- void BandistoProcessor::recalculate () { driv1 = (float)pow (10.0,(6.0 * params[3] * params[3]) - 1.0); driv2 = (float)pow (10.0,(6.0 * params[4] *params[4]) - 1.0); driv3 = (float)pow (10.0,(6.0 * params[5] *params[5]) - 1.0); valve = int (1.99 * params[9]); if (valve) { trim1 = (float)(0.5); trim2 = (float)(0.5); trim3 = (float)(0.5); } else { trim1 = 0.3f*(float)pow (10.0,(4.0 * pow ((float)(params[3]),3.f)));//(0.5 + 500.0 * pow (params[4,6.0)); trim2 = 0.3f*(float)pow (10.0,(4.0 * pow ((float)(params[4]),3.f))); trim3 = 0.3f*(float)pow (10.0,(4.0 * pow ((float)(params[5]),3.f))); } trim1 = (float)(trim1 * pow (10.0, 2.0 * params[6] - 1.0)); trim2 = (float)(trim2 * pow (10.0, 2.0 * params[7] - 1.0)); trim3 = (float)(trim3 * pow (10.0, 2.0 * params[8] - 1.0)); switch (int (params[0]*5.0)) { case 0: trim2=0.0; trim3=0.0; slev=0.0; break; case 1: trim1=0.0; trim3=0.0; slev=0.0; break; case 2: trim1=0.0; trim2=0.0; slev=0.0; break; default: slev=0.5; break; } fi1 = (float)pow (10.0,params[1] - 1.70); fo1= (float)(1.0 - fi1); fi2 = (float)pow (10.0,params[2] - 1.05); fo2= (float)(1.0 - fi2); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBandistoProcessor.h000066400000000000000000000044161461511344300260710ustar00rootroot00000000000000/* * mdaBandistoProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class BandistoProcessor : BaseProcessor { public: BandistoProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaD'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new BandistoProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461446D, 0x64612062, 0x616E6469); #else inline static DECLARE_UID (uid, 0x79F1CDBB, 0x1F004396, 0x947E35BA, 0x22B4FA6D); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float gain1, driv1, trim1; float gain2, driv2, trim2; float gain3, driv3, trim3; float fi1, fb1, fo1, fi2, fb2, fo2, fb3, slev; int valve; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBaseController.cpp000066400000000000000000000153521461511344300257000ustar00rootroot00000000000000/* * mdaBaseController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaBaseController.h" #include "mdaParameter.h" #include "helpers.h" #include "pluginterfaces/base/ibstream.h" #include "public.sdk/source/vst/utility/vst2persistence.h" #include "base/source/fstreamer.h" namespace Steinberg { namespace Vst { namespace mda { const TChar BaseController::kMicroSecondsString[] = {0x00b5, 0x0073, 0x0}; //----------------------------------------------------------------------------- BaseController::BaseController () : sampleRate (44100), addBypassParameter (true) { for (int32 i = 0; i < kCountCtrlNumber; i++) midiCCParamID[i] = -1; } //----------------------------------------------------------------------------- tresult PLUGIN_API BaseController::initialize (FUnknown* context) { tresult res = EditControllerEx1::initialize (context); if (res == kResultOk) { UnitInfo uinfo; uinfo.id = kRootUnitId; uinfo.parentUnitId = kNoParentUnitId; uinfo.programListId = kPresetParam; UString name (uinfo.name, 128); name.fromAscii ("Root"); addUnit (new Unit (uinfo)); if (addBypassParameter) { auto* bypassParam = new IndexedParameter ( USTRING ("Bypass"), nullptr, 1, 0, ParameterInfo::kIsBypass | ParameterInfo::kCanAutomate, kBypassParam); bypassParam->setIndexString (0, UString128 ("off")); bypassParam->setIndexString (1, UString128 ("on")); parameters.addParameter (bypassParam); } } return res; } //----------------------------------------------------------------------------- int32 PLUGIN_API BaseController::getProgramListCount () { if (parameters.getParameter (kPresetParam)) return 1; return 0; } //----------------------------------------------------------------------------- tresult PLUGIN_API BaseController::getProgramListInfo (int32 listIndex, ProgramListInfo& info /*out*/) { Parameter* param = parameters.getParameter (kPresetParam); if (param && listIndex == 0) { info.id = kPresetParam; info.programCount = (int32)param->toPlain (1) + 1; UString name (info.name, 128); name.fromAscii ("Presets"); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API BaseController::getProgramName (ProgramListID listId, int32 programIndex, String128 name /*out*/) { if (listId == kPresetParam) { Parameter* param = parameters.getParameter (kPresetParam); if (param) { ParamValue normalized = param->toNormalized (programIndex); param->toString (normalized, name); return kResultTrue; } } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API BaseController::notify (IMessage* message) { if (strcmp (message->getMessageID (), "activated") == 0) { message->getAttributes ()->getFloat ("SampleRate", sampleRate); return kResultTrue; } return EditControllerEx1::notify (message); } //----------------------------------------------------------------------------- tresult PLUGIN_API BaseController::setComponentState (IBStream* state) { if (!state) return kResultFalse; if (auto vst2State = VST3::tryVst2StateLoad (*state)) { if (vst2State->programs.empty ()) return kResultFalse; auto& currentProgram = vst2State->programs[vst2State->currentProgram]; if (auto bypassParam = parameters.getParameter (kBypassParam)) bypassParam->setNormalized (vst2State->isBypassed ? 1. : 0.); if (auto param = parameters.getParameter (kPresetParam)) param->setNormalized (param->toNormalized (vst2State->currentProgram)); auto numStateParams = static_cast (currentProgram.values.size ()); auto numParams = parameters.getParameterCount (); for (auto index = 0; index < numParams && index < numStateParams; ++index) { if (auto param = parameters.getParameter (index)) { param->setNormalized (currentProgram.values[index]); } } return kResultTrue; } IBStreamer streamer (state, kLittleEndian); uint32 temp; streamer.readInt32u (temp); // numParams or Header if (temp == BaseController::kMagicNumber) { // read current Program streamer.readInt32u (temp); Parameter* param = parameters.getParameter (kPresetParam); if (param) param->setNormalized (param->toNormalized (temp)); // numParams streamer.readInt32u (temp); } // read each parameter for (uint32 i = 0; i < temp; i++) { ParamValue value; if (streamer.readDouble (value) == false) return kResultFalse; setParamNormalized (i, value); } // bypass uint32 bypassState; if (streamer.readInt32u (bypassState) == false) return kResultFalse; Parameter* bypassParam = parameters.getParameter (kBypassParam); if (bypassParam) bypassParam->setNormalized (bypassState); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API BaseController::getMidiControllerAssignment (int32 busIndex, int16 /*channel*/, CtrlNumber midiControllerNumber, ParamID& tag /*out*/) { if (busIndex == 0 && midiControllerNumber < kCountCtrlNumber && midiCCParamID[midiControllerNumber] != -1) { tag = midiCCParamID[midiControllerNumber]; return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API BaseController::queryInterface (const char* iid, void** obj) { QUERY_INTERFACE (iid, obj, IMidiMapping::iid, IMidiMapping) return EditControllerEx1::queryInterface (iid, obj); } } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBaseController.h000066400000000000000000000057311461511344300253450ustar00rootroot00000000000000/* * mdaBaseController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" #include "public.sdk/source/vst/vstparameters.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/base/ustring.h" #include "mdaParameter.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class BaseController : public EditControllerEx1, public IMidiMapping { public: BaseController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API notify (IMessage* message) SMTG_OVERRIDE; int32 PLUGIN_API getProgramListCount () SMTG_OVERRIDE; tresult PLUGIN_API getProgramListInfo (int32 listIndex, ProgramListInfo& info /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getProgramName (ProgramListID listId, int32 programIndex, String128 name /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getMidiControllerAssignment (int32 busIndex, int16 channel, CtrlNumber midiControllerNumber, ParamID& tag/*out*/) SMTG_OVERRIDE; ParameterContainer& getParameters () { return parameters; } //----------------------------- DELEGATE_REFCOUNT (EditControllerEx1) tresult PLUGIN_API queryInterface (const char* iid, void** obj) SMTG_OVERRIDE; //----------------------------- enum { kMagicNumber = 9999999, kBypassParam = 'bpas', kPresetParam = 'prst', kModWheelParam = 'modw', kBreathParam = 'brth', kCtrler3Param = 'ct03', kExpressionParam = 'expr', kPitchBendParam = 'pitb', kSustainParam = 'sust', kAftertouchParam = 'aftt', }; static const TChar kMicroSecondsString[]; protected: double getSampleRate () const { return sampleRate; } int32 midiCCParamID[kCountCtrlNumber]; double sampleRate; bool addBypassParameter; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBaseProcessor.cpp000066400000000000000000000372151461511344300255360ustar00rootroot00000000000000/* * mdaBaseProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaBaseProcessor.h" #include "mdaBaseController.h" #include "helpers.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/base/ibstream.h" #include "public.sdk/source/vst/utility/vst2persistence.h" #include "public.sdk/source/vst/utility/processdataslicer.h" #include "base/source/fstreamer.h" #include #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- Processor::Processor () : params (nullptr) , numParams (0) , bypassRamp (0) , bypassBuffer0 (nullptr) , bypassBuffer1 (nullptr) , bypassState (false) { } //----------------------------------------------------------------------------- Processor::~Processor () { if (bypassBuffer0) std::free (bypassBuffer0); if (bypassBuffer1) std::free (bypassBuffer1); if (params) delete [] params; } //------------------------------------------------------------------------ bool Processor::checkStateTransfer () { bool result = false; stateTransfer.accessTransferObject_rt ([this, &result] (const std::vector& p) { for (auto index = 0u; index < p.size (); ++index) { params[index] = p[index]; } result = true; }); return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::process (ProcessData& data) { preProcess (); bool doRecalculate = checkStateTransfer (); doRecalculate |= processParameterChanges (data.inputParameterChanges); if (doRecalculate) recalculate (); processEvents (data.inputEvents); if (data.numSamples > 0 && !bypassProcessing (data)) { doProcessing (data); checkSilence (data); } return kResultTrue; } //----------------------------------------------------------------------------- void Processor::processEvents (IEventList* events) { if (events) { Event e {}; int32 count = events->getEventCount (); for (int32 i = 0; i < count; i++) { if (events->getEvent (i, e) == kResultTrue) processEvent (e); } } } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::setupProcessing (ProcessSetup& setup) { if (bypassBuffer0) std::free (bypassBuffer0); bypassBuffer0 = (float*)std::malloc (setup.maxSamplesPerBlock * sizeof (float)); if (bypassBuffer1) std::free (bypassBuffer1); bypassBuffer1 = (float*)std::malloc (setup.maxSamplesPerBlock * sizeof (float)); return AudioEffect::setupProcessing (setup); } //----------------------------------------------------------------------------- bool Processor::bypassProcessing (ProcessData& data) { if (data.numSamples == 0) return true; if (isBypassed () || bypassRamp != 0) { if (bypassRamp) { float* origOut0 = data.outputs[0].channelBuffers32[0]; float* origOut1 = data.outputs[0].channelBuffers32[1]; data.outputs[0].channelBuffers32[0] = bypassBuffer0; data.outputs[0].channelBuffers32[1] = bypassBuffer1; doProcessing (data); data.outputs[0].channelBuffers32[0] = origOut0; data.outputs[0].channelBuffers32[1] = origOut1; float* bpb0 = bypassBuffer0; float* bpb1 = bypassBuffer1; float origMix = 0; float plugMix = 0; float factor = 1.f / (float)data.numSamples; if (bypassRamp > 0) { for (int32 i = 0; i < data.numSamples; i++) { origMix = (float)i * factor; plugMix = (float)(data.numSamples - i) * factor; *origOut0 = *origOut0 * origMix + *bpb0 * plugMix; *origOut1 = *origOut1 * origMix + *bpb1 * plugMix; origOut0++; origOut1++; bpb0++; bpb1++; } } else { for (int32 i = 0; i < data.numSamples; i++) { plugMix = (float)i * factor; origMix = (float)(data.numSamples - i) * factor; *origOut0 = *origOut0 * origMix + *bpb0 * plugMix; *origOut1 = *origOut1 * origMix + *bpb1 * plugMix; origOut0++; origOut1++; bpb0++; bpb1++; } } data.outputs[0].silenceFlags = 0; bypassRamp = 0; } else { for (int32 bus = 0; (bus < data.numInputs) && (bus < data.numOutputs); bus++) { Bus* output = getAudioOutput (bus); if (!output || !output->isActive ()) continue; for (int32 channel = 0; channel < data.outputs[bus].numChannels; channel++) { if (data.numInputs <= bus || data.inputs[bus].numChannels <= channel) { memset (data.outputs[bus].channelBuffers32[channel], 0, sizeof (float) * data.numSamples); data.outputs[bus].silenceFlags |= (uint64)1 << channel; } else { if (data.outputs[bus].channelBuffers32[channel] != data.inputs[bus].channelBuffers32[channel]) memcpy (data.outputs[bus].channelBuffers32[channel], data.inputs[bus].channelBuffers32[channel], sizeof (float) * data.numSamples); data.outputs[bus].silenceFlags |= data.inputs[bus].silenceFlags & ((uint64)1 << channel); } } } } return true; } return false; } #define kSilenceThreshold 0.000132184039 //----------------------------------------------------------------------------- void Processor::checkSilence (ProcessData& data) { for (int32 bus = 0; bus < data.numOutputs; bus ++) { data.outputs[bus].silenceFlags = 0; if (!getAudioOutput (bus)->isActive ()) continue; for (int32 channel = 0; channel < data.outputs[bus].numChannels; channel++) { bool channelIsSilent = true; for (int32 sample = 0; sample < data.numSamples; sample += 10) { if (fabs (data.outputs[bus].channelBuffers32[channel][sample]) > kSilenceThreshold) { channelIsSilent = false; break; } } if (channelIsSilent) data.outputs[bus].silenceFlags |= (uint64)1 << channel; } } } //----------------------------------------------------------------------------- bool Processor::processParameterChanges (IParameterChanges* changes) { if (changes) { int32 count = changes->getParameterCount (); if (count > 0) { for (int32 i = 0; i < count; i++) { IParamValueQueue* queue = changes->getParameterData (i); if (!queue) continue; ParamID paramId = queue->getParameterId (); int32 pointCount = queue->getPointCount (); int32 sampleOffset; ParamValue value; queue->getPoint (pointCount - 1, sampleOffset, value); if (paramId == BaseController::kBypassParam) setBypass (value >= 0.5, sampleOffset); else if (paramId == BaseController::kPresetParam) setCurrentProgramNormalized (value); else setParameter (paramId, value, sampleOffset); } return true; } } return false; } //----------------------------------------------------------------------------- void Processor::setBypass (bool state, int32 /*sampleOffset*/) { if (state != bypassState) { bypassState = state; if (bypassState) bypassRamp = 1; else bypassRamp = -1; } } //----------------------------------------------------------------------------- void Processor::setParameter (ParamID index, ParamValue newValue, int32 /*sampleOffset*/) { if (numParams > index) params[index] = newValue; } //----------------------------------------------------------------------------- void Processor::allocParameters (int32 _numParams) { if (params) return; numParams = _numParams; params = new ParamValue[numParams]; } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { if (numIns) { if (SpeakerArr::getChannelCount (inputs[0]) != 2) return kResultFalse; } if (numOuts) { if (SpeakerArr::getChannelCount (outputs[0]) != 2) return kResultFalse; } return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::setActive (TBool state) { if (state) { IMessage* msg = allocateMessage (); if (msg) { msg->setMessageID ("activated"); msg->getAttributes ()->setFloat ("SampleRate", processSetup.sampleRate); sendMessage (msg); msg->release (); } } return AudioEffect::setActive (state); } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::setState (IBStream* state) { if (!state) return kResultFalse; if (auto vst2State = VST3::tryVst2StateLoad (*state)) { if ((vst2State->programs.empty ()) || (static_cast (vst2State->programs.size ()) <= vst2State->currentProgram)) return kResultFalse; auto& currentProgram = vst2State->programs[vst2State->currentProgram]; bypassState = vst2State->isBypassed; auto numStateParams = static_cast (currentProgram.values.size ()); auto state = std::make_unique (); state->reserve (numStateParams); for (uint32 index = 0; index < numParams && index < numStateParams; ++index) { state->push_back (currentProgram.values[index]); } stateTransfer.transferObject_ui (std::move (state)); return kResultTrue; } IBStreamer streamer (state, kLittleEndian); uint32 temp; streamer.readInt32u (temp); // numParams or Header if (temp == BaseController::kMagicNumber) { // read current Program streamer.readInt32u (temp); setCurrentProgram (temp); streamer.readInt32u (temp); } // read each parameter for (uint32 i = 0; i < temp, i < numParams; i++) { streamer.readDouble (params[i]); } // bypass streamer.readInt32u (temp); bypassState = temp > 0; recalculate (); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::getState (IBStream* state) { if (!state) return kResultFalse; VST3::Vst2xState fxb; fxb.fxUniqueID = getVst2UniqueId (); fxb.fxVersion = 1; fxb.currentProgram = getCurrentProgram (); fxb.isBypassed = isBypassed (); fxb.programs.resize (getNumPrograms ()); for (auto& program : fxb.programs) program.values.resize (numParams); auto& currentProgram = fxb.programs[fxb.currentProgram]; currentProgram.fxUniqueID = getVst2UniqueId (); currentProgram.fxVersion = 1; currentProgram.name = ""; for (uint32 index = 0; index < numParams; ++index) { currentProgram.values[index] = static_cast (params[index]); } VST3::writeVst2State (fxb, *state); #if 0 IBStreamer streamer (state, kLittleEndian); if (hasProgram ()) { // save header key uint32 temp = BaseController::kMagicNumber; streamer.writeInt32u (temp); // save program temp = getCurrentProgram (); streamer.writeInt32u (temp); } // save number of parameter streamer.writeInt32u (numParams); // save each parameter for (uint32 i = 0; i < numParams; i++) { streamer.writeDouble (params[i]); } // save bypass streamer.writeInt32u (bypassState ? 1 : 0); #endif return kResultTrue; } //------------------------------------------------------------------------ SampleAccurateBaseProcessor::SampleAccurateBaseProcessor () { parameterValues.resize (1); } //------------------------------------------------------------------------ void SampleAccurateBaseProcessor::allocParameters (int32 numParams) { Processor::allocParameters (numParams); parameterValues.resize (numParams+1); } //------------------------------------------------------------------------ template void SampleAccurateBaseProcessor::process (ProcessData& data) { ProcessDataSlicer slicer (16); Event event {}; event.sampleOffset = -1; auto eventCount = data.inputEvents ? data.inputEvents->getEventCount () : 0; auto eventIndex = 0; auto sampleCounter = 0; if (eventCount) data.inputEvents->getEvent (eventIndex++, event); auto doProcess = [&] (ProcessData & data) noexcept { preProcess (); while (event.sampleOffset >= 0) { if (event.sampleOffset <= data.numSamples) { processEvent (event); event.sampleOffset = -1; if (eventCount > eventIndex) { if (data.inputEvents->getEvent (eventIndex++, event) == kResultTrue) { event.sampleOffset -= sampleCounter; } else event.sampleOffset = -1; } } else { event.sampleOffset -= data.numSamples; break; } } bool needRecalculate = false; for (auto& param : parameterValues) { if (!param.first) break; param.second.advance (data.numSamples, [&] (ParamValue value) { setParameter (param.second.getParamID (), value, 0); needRecalculate = true; }); } if (needRecalculate) recalculate (); doProcessing (data); sampleCounter += data.numSamples; }; slicer.process (data, doProcess); } //------------------------------------------------------------------------ tresult PLUGIN_API SampleAccurateBaseProcessor::process (ProcessData& data) { if (checkStateTransfer ()) recalculate (); processParameterChanges (data.inputParameterChanges); if (data.numSamples > 0 && !bypassProcessing (data)) { if (processSetup.symbolicSampleSize == SymbolicSampleSizes::kSample32) process (data); else process (data); checkSilence (data); } for (auto& paramterValue : parameterValues) { if (!paramterValue.first) break; paramterValue.second.endChanges ([&] (ParamValue value) { setParameter (paramterValue.second.getParamID (), value, 0); }); } return kResultTrue; } //------------------------------------------------------------------------ bool SampleAccurateBaseProcessor::processParameterChanges (IParameterChanges* changes) { parameterValues[0].first = false; if (!changes) return false; int32 count = changes->getParameterCount (); if (count > 0) { uint32 usedChangedParameters = 0; for (int32 i = 0; i < count; i++) { IParamValueQueue* queue = changes->getParameterData (i); if (!queue) continue; auto paramID = queue->getParameterId (); if (paramID < parameterValues.size ()) { parameterValues[usedChangedParameters].first = true; parameterValues[usedChangedParameters].second.setParamID (paramID); parameterValues[usedChangedParameters].second.setValue (params[paramID]); parameterValues[usedChangedParameters].second.beginChanges (queue); ++usedChangedParameters; } else { int32 sampleOffset; ParamValue value; queue->getPoint (queue->getPointCount () - 1, sampleOffset, value); if (paramID == BaseController::kBypassParam) setBypass (value >= 0.5, sampleOffset); else if (paramID == BaseController::kPresetParam) setCurrentProgramNormalized (value); else setParameter (paramID, value, sampleOffset); } } parameterValues[usedChangedParameters].first = false; return true; } return false; } //------------------------------------------------------------------------ }}} // namespace vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBaseProcessor.h000066400000000000000000000131601461511344300251740ustar00rootroot00000000000000/* * mdaBaseProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" #include "public.sdk/source/vst/utility/sampleaccurate.h" #include "public.sdk/source/vst/utility/rttransfer.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class Processor : public AudioEffect { protected: Processor (); ~Processor (); virtual void doProcessing (ProcessData& data) = 0; virtual void preProcess () {} virtual bool bypassProcessing (ProcessData& data); virtual void processEvent (const Event& /*event*/) {} virtual void checkSilence (ProcessData& data); virtual void setBypass (bool state, int32 sampleOffset); virtual bool processParameterChanges (IParameterChanges* changes); virtual void setParameter (ParamID index, ParamValue newValue, int32 sampleOffset); virtual void allocParameters (int32 numParams); virtual void recalculate () {} virtual bool hasProgram () const { return false; } virtual uint32 getCurrentProgram () const { return 0; } virtual uint32 getNumPrograms () const { return 1; } virtual void setCurrentProgram (uint32 /*val*/) {} virtual void setCurrentProgramNormalized (ParamValue /*val*/) {} virtual int32 getVst2UniqueId () const = 0; void processEvents (IEventList* events); bool isBypassed () const { return bypassState; } double getSampleRate () const { return processSetup.sampleRate; } tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; tresult PLUGIN_API setupProcessing (ProcessSetup& setup) SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) final; tresult PLUGIN_API getState (IBStream* state) final; bool checkStateTransfer (); ParamValue* params; uint32 numParams; int32 bypassRamp; float* bypassBuffer0; float* bypassBuffer1; bool bypassState; using StateT = std::vector; RTTransferT stateTransfer; }; //------------------------------------------------------------------------ class SampleAccurateBaseProcessor : public Processor { public: SampleAccurateBaseProcessor (); void allocParameters (int32 numParams) final; tresult PLUGIN_API process (ProcessData& data) final; bool processParameterChanges (IParameterChanges* changes) final; private: template void process (ProcessData& data); std::vector> parameterValues; }; //------------------------------------------------------------------------ using BaseProcessor = SampleAccurateBaseProcessor; static constexpr int32 EndNoteID = NoteIDUserRange::kNoteIDUserRangeLowerBound; static constexpr int32 SustainNoteID = NoteIDUserRange::kNoteIDUserRangeLowerBound + 1; //------------------------------------------------------------------------ template struct SynthData { using VOICE = VoiceT; static constexpr int32 eventBufferSize = kEventBufferSize; static constexpr int32 numVoices = kNumVoices; static constexpr int32 eventsDoneID = 99999999; using EventArray = std::array; using EventPos = typename EventArray::size_type; EventArray events; EventPos eventPos {0}; using VoiceArray = std::array; VoiceArray voice; int32 activevoices {0}; int32 sustain {0}; void init () noexcept { activevoices = 0; } bool hasEvents () const noexcept { return events[eventPos].flags & Event::EventFlags::kUserReserved1; } void clearEvents () noexcept { eventPos = 0; events[0].flags = 0; events[0].sampleOffset = eventsDoneID; } void processEvent (const Event& e) noexcept { switch (e.type) { //--- ------------------- case Event::kNoteOnEvent: case Event::kNoteOffEvent: { events[eventPos] = e; events[eventPos].flags |= Event::EventFlags::kUserReserved1; ++eventPos; if (eventPos >= events.size ()) --eventPos; else { events[eventPos].flags = 0; events[eventPos].sampleOffset = eventsDoneID; } break; } //--- ------------------- default: return; } } }; //------------------------------------------------------------------------ } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBeatBoxController.cpp000066400000000000000000000133331461511344300263470ustar00rootroot00000000000000/* * mdaBeatBoxController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaBeatBoxController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- BeatBoxController::BeatBoxController () { } //----------------------------------------------------------------------------- BeatBoxController::~BeatBoxController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API BeatBoxController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { //--- Create Units------------- UnitInfo unitInfo; Unit* unit; // create a unit for the HiHat unitInfo.id = 1; unitInfo.parentUnitId = kRootUnitId; // attached to the root unit Steinberg::UString (unitInfo.name, USTRINGSIZE (unitInfo.name)).assign (USTRING ("HiHat")); unitInfo.programListId = kNoProgramListId; unit = new Unit (unitInfo); addUnit (unit); // create a unit for the Kick unitInfo.id = 2; unitInfo.parentUnitId = kRootUnitId; // attached to the root unit Steinberg::UString (unitInfo.name, USTRINGSIZE (unitInfo.name)).assign (USTRING ("Kick")); unitInfo.programListId = kNoProgramListId; unit = new Unit (unitInfo); addUnit (unit); // create a unit for the Snare unitInfo.id = 3; unitInfo.parentUnitId = kRootUnitId; // attached to the root unit Steinberg::UString (unitInfo.name, USTRINGSIZE (unitInfo.name)).assign (USTRING ("Snare")); unitInfo.programListId = kNoProgramListId; unit = new Unit (unitInfo); addUnit (unit); Parameter* param; param = new ScaledParameter (USTRING("Hat Thr"), USTRING("dB"), 0, 0.3, ParameterInfo::kCanAutomate, kParam0, -20, 20); parameters.addParameter (param); param->setUnitID (1); param = parameters.addParameter (USTRING("Hat Rate"), USTRING("ms"), 0, 0.45, ParameterInfo::kCanAutomate, kParam1); param->setUnitID (1); param = parameters.addParameter (USTRING("Hat Mix"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam2); param->setUnitID (1); param = new ScaledParameter (USTRING("Kik Thr"), USTRING("dB"), 0, 0.46, ParameterInfo::kCanAutomate, kParam3, -20, 20); parameters.addParameter (param); param->setUnitID (2); param = parameters.addParameter (USTRING("Kik Trig"), USTRING("Hz"), 0, 0.15, ParameterInfo::kCanAutomate, kParam4); param->setUnitID (2); param = parameters.addParameter (USTRING("Kik Mix"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam5); param->setUnitID (2); param = new ScaledParameter (USTRING("Snr Thr"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam6, -20, 20); parameters.addParameter (param); param->setUnitID (3); param = parameters.addParameter (USTRING("Snr Trig"), USTRING("Hz"), 0, 0.7, ParameterInfo::kCanAutomate, kParam7); param->setUnitID (3); param = parameters.addParameter (USTRING("Snr Mix"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam8); param->setUnitID (3); parameters.addParameter (new ScaledParameter (USTRING("Dynamics"), USTRING("%"), 0, 0., ParameterInfo::kCanAutomate, kParam9, 0, 100)); auto* recParam = new IndexedParameter (USTRING("Record"), nullptr, 4, 0., ParameterInfo::kCanAutomate | ParameterInfo::kIsList, kParam10); recParam->setIndexString (0, UString128("-")); recParam->setIndexString (1, UString128("MONITOR")); recParam->setIndexString (2, UString128("-> HAT")); recParam->setIndexString (3, UString128("-> KIK")); recParam->setIndexString (4, UString128("-> SNR")); parameters.addParameter (recParam); parameters.addParameter (USTRING("Thru Mix"), USTRING("dB"), 0, 0., ParameterInfo::kCanAutomate, kParam11); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API BeatBoxController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API BeatBoxController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } //----------------------------------------------------------------------------- tresult PLUGIN_API BeatBoxController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBeatBoxController.h000066400000000000000000000047361461511344300260230ustar00rootroot00000000000000/* * mdaBeatBoxController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaBeatBoxProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class BeatBoxController : public BaseController { public: BeatBoxController (); ~BeatBoxController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kParam5, kParam6, kParam7, kParam8, kParam9, kParam10, kParam11, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new BeatBoxController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461476D, 0x64612062, 0x65617462); #else inline static DECLARE_UID (uid, 0x7A668F2F, 0x42834CCF, 0xA4856D36, 0x891466F7); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaBeatBoxProcessor.cpp000066400000000000000000000203561461511344300262060ustar00rootroot00000000000000/* * mdaBeatBoxProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaBeatBoxProcessor.h" #include "mdaBeatBoxController.h" #include #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- BeatBoxProcessor::BeatBoxProcessor () { hbuf = kbuf = sbuf = sbuf2 = nullptr; hthr = hfil = sthr = kthr = kfil1 = kfil2 = mix = 0; klev = hlev = slev = 0; ww = wwx = sb1 = sb2 = sf1 = sf2 = sf3 = 0; kww = kwwx = ksb1 = ksb2 = ksf1 = ksf2 = 0; dyne = dyna = dynr = dynm = 0; allocParameters(12); setControllerClass (BeatBoxController::uid); } //----------------------------------------------------------------------------- tresult PLUGIN_API BeatBoxProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.30; //hat thresh params[1] = 0.45; //hat rate params[2] = 0.50; //hat mix params[3] = 0.46; //kick thresh params[4] = 0.15; //kick key params[5] = 0.50; //kick mix params[6] = 0.50; //snare thresh params[7] = 0.70; //snare key params[8] = 0.50; //snare mix params[9] = 0.00; //dynamics params[10] = 0.00; //record params[11] = 0.00; //thru mix recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API BeatBoxProcessor::setActive (TBool state) { if (state) { sdel = (int32)(0.12 * getSampleRate ()); kdel = (int32)(0.10 * getSampleRate ()); sf3 = 0.991f; //r sfx = 0; ksfx = 0; rec = 0; hbuflen = 20000; kbuflen = 20000; sbuflen = 60000; if (getSampleRate ()>49000) { hbuflen*=2; kbuflen*=2; sbuflen*=2; } hbuf = new float[hbuflen]; sbuf = new float[sbuflen]; sbuf2 = new float[sbuflen]; kbuf = new float[kbuflen]; hbufpos = sbufpos = kbufpos = 0; memset (sbuf, 0, sbuflen * sizeof (float)); memset (sbuf2, 0, sbuflen * sizeof (float)); int32 t; float e=0.00012f, de, o, o1=0.f, o2=0.f, p=0.2f, dp; memset (hbuf, 0, hbuflen * sizeof (float)); //generate hi-hat de = (float)pow (10.0,-36.0/getSampleRate ()); for(t=0;t<5000;t++) { o = (float)((rand() % 2000) - 1000); *(hbuf + t) = e * ( 2.f * o1 - o2 - o); e *= de; o2=o1; o1=o; } memset (kbuf, 0, kbuflen * sizeof (float)); //generate kick de = (float)pow (10.0,-3.8/getSampleRate ()); e=0.5f; dp = 1588.f / getSampleRate (); for(t=0;t<14000;t++) { *(kbuf + t) = e * (float)sin(p); e *= de; p = (float)fmod(p + dp * e ,6.2831853f); } memset (sbuf, 0, sbuflen * sizeof (float)); //generate snare de = (float)pow (10.0,-15.0/getSampleRate ()); e=0.38f; dp = 1103.f / getSampleRate (); for(t=0;t<7000;t++) { o = (0.3f * o) + (float)((rand() % 2000) - 1000); *(sbuf + t) = (float)(e * (sin(p) + 0.0004 * o)); *(sbuf2 + t) = *(sbuf + t); e *= de; p = (float)fmod(p + 0.025,6.2831853); } } else { if (hbuf) delete [] hbuf; if (kbuf) delete [] kbuf; if (sbuf) delete [] sbuf; if (sbuf2) delete [] sbuf2; hbuf = kbuf = sbuf = sbuf2 = nullptr; } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void BeatBoxProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, e, o, hf=hfil, ht=hthr, mx3=0.f, mx1=mix; int32 hp=hbufpos, hl=hbuflen-2, hd=hdel; float kt=kthr; int32 kp=kbufpos, kl=kbuflen-2, kd=kdel; float st=sthr, s, f1=sb1, f2=sb2, b1=sf1, b2=sf2, b3=sf3; float k, kf1=ksb1, kf2=ksb2, kb1=ksf1, kb2=ksf2; float hlv=hlev, klv=klev, slv=slev; int32 sp=sbufpos, sl=sbuflen-2, sd=sdel; float ya=dyna, yr = dynr, ye=dyne, ym=dynm, mx4; if (sfx>0) { mx3=0.08f; slv=0.f; klv=0.f; hlv=0.f; mx1=0.f; sfx-=sampleFrames;} //key listen (snare) if (ksfx>0) { mx3=0.03f; slv=0.f; klv=0.f; hlv=0.f; mx1=0.f; ksfx-=sampleFrames; b1=ksf1; b2=ksf2; } //key listen (kick) --in1; --in2; --out1; --out2; if (rec==0) { while (--sampleFrames >= 0) { a = *++in1; b = *++in2; e = a + b; ye = (ehd) && (hf>ht)) hp=0; else { hp++; if (hp>hl)hp=hl; } o = hlv * *(hbuf + hp); //hat k = e + (kf1 * kb1) - (kf2 * kb2); //low filter kf2 = b3 * ((kf1 * kb2) + (kf2 * kb1)); kf1 = b3 * k; if ((kp>kd) && (k>kt)) kp=0; else { kp++; if (kp>kl)kp=kl; } o += klv * *(kbuf + kp); //kick s = hf + (0.3f * e) + (f1 * b1) - (f2 * b2); //mid filter f2 = b3 * ((f1 * b2) + (f2 * b1)); f1 = b3 * s; if ((sp>sd) && (s>st)) sp=0; else { sp++; if (sp>sl)sp=sl; } mx4 = 1.f + ym * (ye + ye - 1.f); //dynamics *++out1 = mx1*a + mx3*s + mx4*(o + slv * *(sbuf + sp)); *++out2 = mx1*a + mx3*s + mx4*(o + slv * *(sbuf2 + sp)); hf=e; } } else //record { while (--sampleFrames >= 0) { a = *++in1; b = *++in2; e = 0.5f * (a + b); if ((recpos==0) && (fabs (e) < 0.004)) e=0.f; else { switch (rec) { case 1: break; //echo case 2: if (recpos0)) //finish sample { switch (rec) { case 2: while (recpossetIndexString (0, UString128("D.I.")); modelParam->setIndexString (1, UString128("Spkr Sim")); modelParam->setIndexString (2, UString128("Radio")); modelParam->setIndexString (3, UString128("MB 1\"")); modelParam->setIndexString (4, UString128("MB 8\"")); modelParam->setIndexString (5, UString128("4x12 ^")); modelParam->setIndexString (6, UString128("4x12 >")); parameters.addParameter (modelParam); parameters.addParameter (new ScaledParameter (USTRING("Drive"), USTRING("S <> H"), 0, 0.7, ParameterInfo::kCanAutomate, kParam1, -100, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Bias"), nullptr, 0, 0.9, ParameterInfo::kCanAutomate, kParam2, -100, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam3, -20, 20, true)); auto* modeParam = new IndexedParameter (USTRING("Process"), nullptr, 1, 0.5, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, kParam4); modeParam->setIndexString (0, UString128("Stereo")); modeParam->setIndexString (1, UString128("Mono")); parameters.addParameter (modeParam); parameters.addParameter (new ScaledParameter (USTRING("HPF Freq"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, kParam5, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("HPF Reso"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, kParam6, 0, 100, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API ComboController::terminate () { return BaseController::terminate (); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaComboController.h000066400000000000000000000042571461511344300255340ustar00rootroot00000000000000/* * mdaComboController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaComboProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class ComboController : public BaseController { public: ComboController (); ~ComboController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kParam5, kParam6, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new ComboController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461586D, 0x64612063, 0x6F6D626F); #else inline static DECLARE_UID (uid, 0x2C9437A7, 0x1B4D4E35, 0x845E3159, 0xE72D7BC4); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaComboProcessor.cpp000066400000000000000000000220011461511344300257060ustar00rootroot00000000000000/* * mdaComboProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaComboProcessor.h" #include "mdaComboController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- ComboProcessor::ComboProcessor () : buffer (nullptr) , buffe2 (nullptr) { setControllerClass (ComboController::uid); allocParameters (7); } //----------------------------------------------------------------------------- ComboProcessor::~ComboProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API ComboProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 1.00f; //select params[1] = 0.50f; //drive params[2] = 0.50f; //bias params[3] = 0.50f; //output params[4] = 0.40f; //stereo params[5] = 0.00f; //hpf freq params[6] = 0.50f; //hpf reso size = 1024; bufpos = 0; buffer = new float[size]; buffe2 = new float[size]; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API ComboProcessor::terminate () { if (buffer) delete [] buffer; if (buffe2) delete [] buffe2; buffer = buffe2 = nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API ComboProcessor::setActive (TBool state) { if (state) clearBuffers (); return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void ComboProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, trm, m1=mix1, m2=mix2, clp=clip; float o=lpf, i = 1.f-lpf, o2=hpf, bi=bias, drv=drive; float f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5; float a2, b2, f6=ff6, f7=ff7, f8=ff8, f9=ff9, f10=ff10; float hf=hhf, hq=hhq, h0=hh0, h1=hh1; int32 d1=del1, d2=del2, bp = bufpos; trm = trim * i * i * i * i; --in1; --in2; --out1; --out2; if (ster) //stereo { while (--sampleFrames >= 0) { a = drv * (*++in1 + bi); a2 = drv * (*++in2 + bi); if (mode) { b = (a>0.f)? a : -a; b2 = (a2>0.f)? a2 : -a2; b = a / (1.f + b); b2 = a2 / (1.f + b2); } else { b = (a> clp)? clp : a; b2 = (a2> clp)? clp : a2; //distort b = (a<-clp)? -clp : b; b2 = (a2<-clp)? -clp : b2; } *(buffer + bp) = b; *(buffe2 + bp) = b2; b += (m1* *(buffer+((bp+d1)%1000))) + (m2* *(buffer+((bp+d2)%1000))); b2+= (m1* *(buffe2+((bp+d1)%1000))) + (m2* *(buffe2+((bp+d2)%1000))); f1 = o * f1 + trm * b; f6 = o * f6 + trm * b2; f2 = o * f2 + f1; f7 = o * f7 + f6; f3 = o * f3 + f2; f8 = o * f8 + f7; f4 = o * f4 + f3; f9 = o * f9 + f8; //-24dB/oct filter f5 = o2 * (f5 - f4) + f4; f10 = o2 * (f10 - f9) + f9;//high pass b = f4 - f5; b2 = f9 - f10; if (bp == 0) bufpos=999; else bufpos=bp-1; *++out1 = b; *++out2 = b2; } } else //mono { if (mode) //soft clip { while (--sampleFrames >= 0) { a = drv * (*++in1 + *++in2 + bi); h0 += hf * (h1 + a); //resonant highpass (Chamberlin SVF) h1 -= hf * (h0 + hq * h1); a += h1; b = (a>0.f)? a : -a; b = a / (1.f + b); *(buffer + bp) = b; b += (m1* *(buffer+((bp+d1)%1000))) + (m2* *(buffer+((bp+d2)%1000))); f1 = o * f1 + trm * b; f2 = o * f2 + f1; f3 = o * f3 + f2; f4 = o * f4 + f3; //-24dB/oct filter f5 = o2 * (f5 - f4) + f4; //high pass b = f4 - f5; bp = (bp == 0)? 999 : bp - 1; //buffer position *++out1 = b; *++out2 = b; } } else //hard clip { while (--sampleFrames >= 0) { a = drv * (*++in1 + *++in2 + bi); h0 += hf * (h1 + a); //resonant highpass (Chamberlin SVF) h1 -= hf * (h0 + hq * h1); a += h1; b = (a>clp)? clp : a; //distort b = (a<-clp)? -clp : b; *(buffer + bp) = b; b += (m1* *(buffer+((bp+d1)%1000))) + (m2* *(buffer+((bp+d2)%1000))); f1 = o * f1 + trm * b; f2 = o * f2 + f1; f3 = o * f3 + f2; f4 = o * f4 + f3; //-24dB/oct filter f5 = o2 * (f5 - f4) + f4; //high pass //also want smile curve here... b = f4 - f5; bp = (bp == 0)? 999 : bp - 1; //buffer position *++out1 = b; *++out2 = b; } } } bufpos = bp; if (fabs (f1) < 1.0e-10) { ff1=0.f; ff2=0.f; ff3=0.f; ff4=0.f; ff5=0.f; } else { ff1=f1; ff2=f2; ff3=f3; ff4=f4; ff5=f5; } if (fabs (f6) < 1.0e-10) { ff6=0.f; ff7=0.f; ff8=0.f; ff9=0.f; ff10=0.f; } else { ff6=f6; ff7=f7; ff8=f8; ff9=f9; ff10=f10; } if (fabs (h0) < 1.0e-10) { hh0 = hh1 = 0.0f; } else { hh0=h0; hh1=h1; } } //----------------------------------------------------------------------------- void ComboProcessor::clearBuffers () { memset (buffer, 0, size * sizeof (float)); memset (buffe2, 0, size * sizeof (float)); ff1=0.f; ff2=0.f; ff3=0.f; ff4=0.f; ff5=0.f; ff6=0.f; ff7=0.f; ff8=0.f; ff9=0.f; ff10=0.f; hh0 = hh1 = 0.0f; } //----------------------------------------------------------------------------- float ComboProcessor::filterFreq(float hz) { float j, k, r=0.999f; j = r * r - 1; k = (float)(2.f - 2.f * r * r * cos(0.647f * hz / getSampleRate () )); return (float)((sqrt (k*k - 4.f*j*j) - k) / (2.f*j)); } //----------------------------------------------------------------------------- void ComboProcessor::recalculate () { ster=0; if (params[4]>0.5) ster=1; hpf = filterFreq(25.f); switch (int (params[0]*6.9)) { case 0: trim = 0.5f; lpf = 0.f; //DI mix1 = (float)0.0; mix2 = (float)0.0; del1 = 0; del2 = 0; break; case 1: trim = 0.53f; lpf = filterFreq(2700.f); //speaker sim mix1 = (float)0.0; mix2 = (float)0.0; del1 = 0; del2 = 0; hpf = filterFreq(382.f); break; case 2: trim = 1.10f; lpf = filterFreq(1685.f); //radio mix1 = -1.70f; mix2 = 0.82f; del1 = int (getSampleRate () / 6546.f); del2 = int (getSampleRate () / 4315.f); break; case 3: trim = 0.98f; lpf = filterFreq(1385.f); //mesa boogie 1" mix1 = -0.53f; mix2 = 0.21f; del1 = int (getSampleRate () / 7345.f); del2 = int (getSampleRate () / 1193.f); break; case 4: trim = 0.96f; lpf = filterFreq(1685.f); //mesa boogie 8" mix1 = -0.85f; mix2 = 0.41f; del1 = int (getSampleRate () / 6546.f); del2 = int (getSampleRate () / 3315.f); break; case 5: trim = 0.59f; lpf = lpf = filterFreq(2795.f); mix1 = -0.29f; mix2 = 0.38f; //Marshall 4x12" celestion del1 = int (getSampleRate () / 982.f); del2 = int (getSampleRate () / 2402.f); hpf = filterFreq(459.f); break; case 6: trim = 0.30f; lpf = filterFreq(1744.f); //scooped-out metal mix1 = -0.96f; mix2 = 1.6f; del1 = int (getSampleRate () / 356.f); del2 = int (getSampleRate () / 1263.f); hpf = filterFreq(382.f); break; } mode = (params[1]<0.5)? 1 : 0; if (mode) //soft clipping { drive = (float)pow (10.f, (float)(2.f - 6.f * params[1])); trim *= 0.55f + 150.f * (float)pow ((float)(params[1]),4.0f); } else //hard clipping { drive = 1.f; clip = (float)(11.7f - 16.f*params[1]); if (params[1]>0.7) { drive = (float)pow (10.0f, (float)(7.f*params[1] - 4.9f)); clip = 0.5f; } } bias = (float)(1.2f * params[2] - 0.6f); if (params[1]>0.5) bias /= (float)(1.f + 3.f * (params[1]-0.5f)); else bias /= (float)(1.f + 3.f * (0.5f-params[1])); trim *= (float)pow (10.f, (float)(2.f*params[3] - 1.f)); if (ster) trim *=2.f; hhf = (float)params[5]; hhq = 1.1f - (float)params[6]; if (params[5]>0.05f) drive = drive * (1 + 0.1f * drive); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaComboProcessor.h000066400000000000000000000050211461511344300253560ustar00rootroot00000000000000/* * mdaComboProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class ComboProcessor : public BaseProcessor { public: ComboProcessor (); ~ComboProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaX'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new ComboProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461586D, 0x64612063, 0x6F6D626F); #else inline static DECLARE_UID (uid, 0x11C1BD22, 0x888F4F17, 0xB2E2A77B, 0x51CEDCD6); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; void clearBuffers (); float filterFreq(float hz); float clip, drive, trim, lpf, hpf, mix1, mix2; float ff1, ff2, ff3, ff4, ff5, bias; float ff6, ff7, ff8, ff9, ff10; float hhf, hhq, hh0, hh1; //hpf float *buffer, *buffe2; int32 size, bufpos, del1, del2; int mode, ster; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDX10Controller.cpp000066400000000000000000000137761461511344300255120ustar00rootroot00000000000000/* * mdaDX10Controller.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDX10Controller.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- static const char* presetNames[] = { "Bright E.Piano", "Jazz E.Piano", "E.Piano Pad", "Fuzzy E.Piano", "Soft Chimes", "Harpsichord", "Funk Clav", "Sitar", "Chiff Organ", "Tinkle", "Space Pad", "Koto", "Harp", "Jazz Guitar", "Steel Drum", "Log Drum", "Trumpet", "Horn", "Reed 1", "Reed 2", "Violin", "Chunky Bass", "E.Bass", "Clunk Bass", "Thick Bass", "Sine Bass", "Square Bass", "Upright Bass 1", "Upright Bass 2", "Harmonics", "Scratch", "Syn Tom", nullptr }; //----------------------------------------------------------------------------- DX10Controller::DX10Controller () { addBypassParameter = false; } //----------------------------------------------------------------------------- DX10Controller::~DX10Controller () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DX10Controller::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { auto* presetParam = new IndexedParameter ( USTRING ("Factory Presets"), nullptr, DX10Processor::kNumPrograms - 1, 0, ParameterInfo::kIsProgramChange | ParameterInfo::kIsList, kPresetParam); for (int32 i = 0; i < DX10Processor::kNumPrograms; i++) presetParam->setIndexString (i, UString128 (presetNames[i])); parameters.addParameter (presetParam); ParamID pid = 0; parameters.addParameter (USTRING("Attack"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Decay"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Release"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Coarse"), USTRING("ratio"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Fine"), USTRING("ratio"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Mod Init"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Mod Dec"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Mod Sus"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Mod Rel"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Mod Vel"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Vibrato"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Octave"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("FineTune"), USTRING("cents"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("WaveForm"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Mod Thru"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("LFO Rate"), USTRING("Hz"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); midiCCParamID[kCtrlModWheel] = kModWheelParam; parameters.addParameter (USTRING("Mod Wheel"), USTRING(""), 0, 0, 0, kModWheelParam); midiCCParamID[kPitchBend] = kPitchBendParam; parameters.addParameter (USTRING("Pitch Bend"), USTRING(""), 0, 0.5, 0, kPitchBendParam); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DX10Controller::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DX10Controller::setParamNormalized (ParamID tag, ParamValue value) { tresult res = BaseController::setParamNormalized (tag, value); if (res == kResultOk && tag == kPresetParam) // preset change { int32 program = (int32)parameters.getParameter (tag)->toPlain (value); for (int32 i = 0; i < 16; i++) { BaseController::setParamNormalized (i, DX10Processor::programParams[program][i]); } componentHandler->restartComponent (kParamValuesChanged); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DX10Controller::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDX10Controller.h000066400000000000000000000044011461511344300251400ustar00rootroot00000000000000/* * mdaDX10Controller.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaDX10Processor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DX10Controller : public BaseController { public: DX10Controller (); ~DX10Controller (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new DX10Controller; } //----------------------------------------------------------------------------- #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653454D, 0x4441786D, 0x64612064, 0x78313000); #else inline static DECLARE_UID (uid, 0x7EC0F00D, 0x92E142C7, 0x97056433, 0x30FFF119); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDX10Processor.cpp000066400000000000000000000355371461511344300253450ustar00rootroot00000000000000/* * mdaDX10Processor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDX10Processor.h" #include "mdaDX10Controller.h" #include namespace Steinberg { namespace Vst { namespace mda { #define NOUTS 2 //number of outputs #define SILENCE 0.0003f //voice choking float DX10Processor::programParams[][NPARAMS] = { {0.000f, 0.650f, 0.441f, 0.842f, 0.329f, 0.230f, 0.800f, 0.050f, 0.800f, 0.900f, 0.000f, 0.500f, 0.500f, 0.447f, 0.000f, 0.414f }, {0.000f, 0.500f, 0.100f, 0.671f, 0.000f, 0.441f, 0.336f, 0.243f, 0.800f, 0.500f, 0.000f, 0.500f, 0.500f, 0.178f, 0.000f, 0.500f }, {0.000f, 0.700f, 0.400f, 0.230f, 0.184f, 0.270f, 0.474f, 0.224f, 0.800f, 0.974f, 0.250f, 0.500f, 0.500f, 0.428f, 0.836f, 0.500f }, {0.000f, 0.700f, 0.400f, 0.320f, 0.217f, 0.599f, 0.670f, 0.309f, 0.800f, 0.500f, 0.263f, 0.507f, 0.500f, 0.276f, 0.638f, 0.526f }, {0.400f, 0.600f, 0.650f, 0.760f, 0.000f, 0.390f, 0.250f, 0.160f, 0.900f, 0.500f, 0.362f, 0.500f, 0.500f, 0.401f, 0.296f, 0.493f }, {0.000f, 0.342f, 0.000f, 0.280f, 0.000f, 0.880f, 0.100f, 0.408f, 0.740f, 0.000f, 0.000f, 0.600f, 0.500f, 0.842f, 0.651f, 0.500f }, {0.000f, 0.400f, 0.100f, 0.360f, 0.000f, 0.875f, 0.160f, 0.592f, 0.800f, 0.500f, 0.000f, 0.500f, 0.500f, 0.303f, 0.868f, 0.500f }, {0.000f, 0.500f, 0.704f, 0.230f, 0.000f, 0.151f, 0.750f, 0.493f, 0.770f, 0.500f, 0.000f, 0.400f, 0.500f, 0.421f, 0.632f, 0.500f }, {0.600f, 0.990f, 0.400f, 0.320f, 0.283f, 0.570f, 0.300f, 0.050f, 0.240f, 0.500f, 0.138f, 0.500f, 0.500f, 0.283f, 0.822f, 0.500f }, {0.000f, 0.500f, 0.650f, 0.368f, 0.651f, 0.395f, 0.550f, 0.257f, 0.900f, 0.500f, 0.300f, 0.800f, 0.500f, 0.000f, 0.414f, 0.500f }, {0.000f, 0.700f, 0.520f, 0.230f, 0.197f, 0.520f, 0.720f, 0.280f, 0.730f, 0.500f, 0.250f, 0.500f, 0.500f, 0.336f, 0.428f, 0.500f }, {0.000f, 0.240f, 0.000f, 0.390f, 0.000f, 0.880f, 0.100f, 0.600f, 0.740f, 0.500f, 0.000f, 0.500f, 0.500f, 0.526f, 0.480f, 0.500f }, {0.000f, 0.500f, 0.700f, 0.160f, 0.000f, 0.158f, 0.349f, 0.000f, 0.280f, 0.900f, 0.000f, 0.618f, 0.500f, 0.401f, 0.000f, 0.500f }, {0.000f, 0.500f, 0.100f, 0.390f, 0.000f, 0.490f, 0.250f, 0.250f, 0.800f, 0.500f, 0.000f, 0.500f, 0.500f, 0.263f, 0.145f, 0.500f }, {0.000f, 0.300f, 0.507f, 0.480f, 0.730f, 0.000f, 0.100f, 0.303f, 0.730f, 1.000f, 0.000f, 0.600f, 0.500f, 0.579f, 0.000f, 0.500f }, {0.000f, 0.300f, 0.500f, 0.320f, 0.000f, 0.467f, 0.079f, 0.158f, 0.500f, 0.500f, 0.000f, 0.400f, 0.500f, 0.151f, 0.020f, 0.500f }, {0.000f, 0.990f, 0.100f, 0.230f, 0.000f, 0.000f, 0.200f, 0.450f, 0.800f, 0.000f, 0.112f, 0.600f, 0.500f, 0.711f, 0.000f, 0.401f }, {0.280f, 0.990f, 0.280f, 0.230f, 0.000f, 0.180f, 0.400f, 0.300f, 0.800f, 0.500f, 0.000f, 0.400f, 0.500f, 0.217f, 0.480f, 0.500f }, {0.220f, 0.990f, 0.250f, 0.170f, 0.000f, 0.240f, 0.310f, 0.257f, 0.900f, 0.757f, 0.000f, 0.500f, 0.500f, 0.697f, 0.803f, 0.500f }, {0.220f, 0.990f, 0.250f, 0.450f, 0.070f, 0.240f, 0.310f, 0.360f, 0.900f, 0.500f, 0.211f, 0.500f, 0.500f, 0.184f, 0.000f, 0.414f }, {0.697f, 0.990f, 0.421f, 0.230f, 0.138f, 0.750f, 0.390f, 0.513f, 0.800f, 0.316f, 0.467f, 0.678f, 0.500f, 0.743f, 0.757f, 0.487f }, {0.000f, 0.400f, 0.000f, 0.280f, 0.125f, 0.474f, 0.250f, 0.100f, 0.500f, 0.500f, 0.000f, 0.400f, 0.500f, 0.579f, 0.592f, 0.500f }, {0.230f, 0.500f, 0.100f, 0.395f, 0.000f, 0.388f, 0.092f, 0.250f, 0.150f, 0.500f, 0.200f, 0.200f, 0.500f, 0.178f, 0.822f, 0.500f }, {0.000f, 0.600f, 0.400f, 0.230f, 0.000f, 0.450f, 0.320f, 0.050f, 0.900f, 0.500f, 0.000f, 0.200f, 0.500f, 0.520f, 0.105f, 0.500f }, {0.000f, 0.600f, 0.400f, 0.170f, 0.145f, 0.290f, 0.350f, 0.100f, 0.900f, 0.500f, 0.000f, 0.400f, 0.500f, 0.441f, 0.309f, 0.500f }, {0.000f, 0.600f, 0.490f, 0.170f, 0.151f, 0.099f, 0.400f, 0.000f, 0.900f, 0.500f, 0.000f, 0.400f, 0.500f, 0.118f, 0.013f, 0.500f }, {0.000f, 0.600f, 0.100f, 0.320f, 0.000f, 0.350f, 0.670f, 0.100f, 0.150f, 0.500f, 0.000f, 0.200f, 0.500f, 0.303f, 0.730f, 0.500f }, {0.300f, 0.500f, 0.400f, 0.280f, 0.000f, 0.180f, 0.540f, 0.000f, 0.700f, 0.500f, 0.000f, 0.400f, 0.500f, 0.296f, 0.033f, 0.500f }, {0.300f, 0.500f, 0.400f, 0.360f, 0.000f, 0.461f, 0.070f, 0.070f, 0.700f, 0.500f, 0.000f, 0.400f, 0.500f, 0.546f, 0.467f, 0.500f }, {0.000f, 0.500f, 0.500f, 0.280f, 0.000f, 0.330f, 0.200f, 0.000f, 0.700f, 0.500f, 0.000f, 0.500f, 0.500f, 0.151f, 0.079f, 0.500f }, {0.000f, 0.500f, 0.000f, 0.000f, 0.240f, 0.580f, 0.630f, 0.000f, 0.000f, 0.500f, 0.000f, 0.600f, 0.500f, 0.816f, 0.243f, 0.500f }, {0.000f, 0.355f, 0.350f, 0.000f, 0.105f, 0.000f, 0.000f, 0.200f, 0.500f, 0.500f, 0.000f, 0.645f, 0.500f, 1.000f, 0.296f, 0.500f } }; //----------------------------------------------------------------------------- DX10Processor::DX10Processor () : currentProgram (0) { setControllerClass (DX10Controller::uid); allocParameters (NPARAMS); } //----------------------------------------------------------------------------- DX10Processor::~DX10Processor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DX10Processor::initialize (FUnknown* context) { tresult res = Base::initialize (context); if (res == kResultTrue) { addEventInput (USTRING("MIDI in"), 1); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); const float initParams[] = { 0.000f, 0.650f, 0.441f, 0.842f, 0.329f, 0.230f, 0.800f, 0.050f, 0.800f, 0.900f, 0.000f, 0.500f, 0.500f, 0.447f, 0.000f, 0.414f}; for (int32 i = 0; i < NPARAMS; i++) params[i] = initParams[i]; //initialise... for(int32 i = 0; i (kNumPrograms - 1, (int32)(newValue * kNumPrograms)); const float* newParams = programParams[currentProgram]; if (newParams) { for (int32 i = 0; i < NPARAMS; i++) params[i] = newParams[i]; } } else if (index == BaseController::kModWheelParam) // mod wheel { newValue *= 127.; modwhl = 0.00000005f * (float)(newValue * newValue); } else if (index == BaseController::kPitchBendParam) // pitch bend { if (newValue <= 1) pbend = (newValue - 0.5) * 0x2000; else pbend = newValue; if (pbend>0.0f) pbend = 1.0f + 0.000014951f * pbend; else pbend = 1.0f + 0.000013318f * pbend; } } //----------------------------------------------------------------------------- void DX10Processor::setCurrentProgram (Steinberg::uint32 val) { currentProgram = val; } //----------------------------------------------------------------------------- void DX10Processor::setCurrentProgramNormalized (ParamValue val) { setCurrentProgram (std::min (kNumPrograms - 1, (int32)(val * kNumPrograms))); } //----------------------------------------------------------------------------- void DX10Processor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; int32 frame=0, frames, v; float o, x, e, mw=MW, w=rich, m = modmix; int32 k=K; synthData.eventPos = 0; if (synthData.activevoices>0 || synthData.hasEvents ()) //detect & bypass completely empty blocks { while (framesampleFrames) frames = sampleFrames; frames -= frame; frame += frames; while (--frames>=0) //would be faster with voice loop outside frame loop! { //but then each voice would need it's own LFO... VOICE *V = synthData.voice.data (); o = 0.0f; if (--k<0) { lfo0 += dlfo * lfo1; //sine LFO lfo1 -= dlfo * lfo0; mw = lfo1 * (modwhl + vibrato); k=100; } for(v=0; venv; if (e > SILENCE) //**** this is the synth **** { V->env = e * V->cdec; //decay & release V->cenv += V->catt * (e - V->cenv); //attack x = V->dmod * V->mod0 - V->mod1; //could add more modulator blocks like V->mod1 = V->mod0; //this for a wider range of FM sounds V->mod0 = x; V->menv += V->mdec * (V->mlev - V->menv); x = V->car + V->dcar + x * V->menv + mw; //carrier phase while (x > 1.0f) x -= 2.0f; //wrap phase while (x < -1.0f) x += 2.0f; V->car = x; o += V->cenv * (m * V->mod1 + (x + x * x * x * (w * x * x - 1.0f - w))); } //amp env //mod thru-mix //5th-order sine approximation /// xx = x * x; /// x + x + x * xx * (xx - 3.0f); V++; } *out1++ = o; *out2++ = o; } if (frame= 0) { *out1++ = 0.0f; *out2++ = 0.0f; } data.outputs[0].silenceFlags = 3; } K=k; MW=mw; //remember these so vibrato speed not buffer size dependant! } //----------------------------------------------------------------------------- void DX10Processor::preProcess () { synthData.clearEvents (); } //----------------------------------------------------------------------------- void DX10Processor::processEvent (const Event& e) { synthData.processEvent (e); } //----------------------------------------------------------------------------- void DX10Processor::noteEvent (const Event& event) { float l = 1.0f; int32 v, vl=0; if (event.type == Event::kNoteOnEvent) { auto& note = event.noteOn; float velocity = note.velocity * 127; for(v=0; v50.0f) l = 50.0f; //key tracking l *= (64.0f + velsens * (velocity - 64)); //vel sens synthData.voice[vl].menv = depth * l; synthData.voice[vl].mlev = dept2 * l; synthData.voice[vl].mdec = mdec; synthData.voice[vl].dmod = ratio * synthData.voice[vl].dcar; //sine oscillator synthData.voice[vl].mod0 = 0.0f; synthData.voice[vl].mod1 = (float)sin(synthData.voice[vl].dmod); synthData.voice[vl].dmod = 2.0f * (float)cos(synthData.voice[vl].dmod); //scale volume with richness synthData.voice[vl].env = (1.5f - params[13]) * volume * (velocity + 10); synthData.voice[vl].catt = catt; synthData.voice[vl].cenv = 0.0f; synthData.voice[vl].cdec = cdec; } else //note off { auto& note = event.noteOff; for(v=0; v0.98f) cdec = 1.0f; else cdec = (float)exp (-ifs * exp (5.0 - 8.0 * params[1])); crel = (float)exp (-ifs * exp (5.0 - 5.0 * params[2])); mdec = 1.0f - (float)exp (-ifs * exp (6.0 - 7.0 * params[6])); mrel = 1.0f - (float)exp (-ifs * exp (5.0 - 8.0 * params[8])); rich = 0.50f - 3.0f * params[13] * params[13]; //rich = -1.0f + 2 * params[13]; modmix = 0.25f * params[14] * params[14]; dlfo = 628.3f * ifs * 25.0f * params[15] * params[15]; //these params not in original DX10 } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDX10Processor.h000066400000000000000000000100261461511344300247740ustar00rootroot00000000000000/* * mdaDX10Processor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DX10Processor : public BaseProcessor { public: using Base = BaseProcessor; enum { NPARAMS = 16 }; static const int32 kNumPrograms = 32; DX10Processor (); ~DX10Processor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'MDAx'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; bool hasProgram () const SMTG_OVERRIDE { return true; } Steinberg::uint32 getCurrentProgram () const SMTG_OVERRIDE { return currentProgram; } Steinberg::uint32 getNumPrograms () const SMTG_OVERRIDE { return kNumPrograms; } void setCurrentProgram (Steinberg::uint32 val) SMTG_OVERRIDE; void setCurrentProgramNormalized (ParamValue val) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new DX10Processor; } //----------------------------------------------------------------------------- #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653544D, 0x4441786D, 0x64612064, 0x78313000); #else inline static DECLARE_UID (uid, 0xF8713648, 0xE2444174, 0x8AAA3B62, 0xA77F9E2D); #endif //----------------------------------------------------------------------------- static float programParams[][NPARAMS]; struct VOICE //voice state { float env; //carrier envelope float dmod; //modulator oscillator float mod0; float mod1; float menv; //modulator envelope float mlev; //modulator target level float mdec; //modulator envelope decay float car; //carrier oscillator float dcar; float cenv; //smoothed env float catt; //smoothing float cdec; //carrier envelope decay int32 note; //remember what note triggered this }; protected: void checkSilence (ProcessData& /*data*/) SMTG_OVERRIDE {} void setParameter (ParamID index, ParamValue newValue, int32 sampleOffset) SMTG_OVERRIDE; void preProcess () SMTG_OVERRIDE; void processEvent (const Event& event) SMTG_OVERRIDE; void recalculate () SMTG_OVERRIDE; void noteEvent (const Event& event); float Fs; static constexpr int32 kNumVoices = 8; static constexpr int32 kEventBufferSize = 64; using SynthDataT = SynthData; SynthDataT synthData; ///global internal variables int32 K; float tune, rati, ratf, ratio; //modulator ratio float catt, cdec, crel; //carrier envelope float depth, dept2, mdec, mrel; //modulator envelope float lfo0, lfo1, dlfo, modwhl, MW, pbend, velsens, volume, vibrato; //LFO and CC float rich, modmix; Steinberg::uint32 currentProgram; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDeEsserController.cpp000066400000000000000000000045651461511344300263640ustar00rootroot00000000000000/* * mdaDeEsserController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDeEsserController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DeEsserController::DeEsserController () { } //----------------------------------------------------------------------------- DeEsserController::~DeEsserController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DeEsserController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { parameters.addParameter (new ScaledParameter (USTRING("Thresh"), USTRING("dB"), 0, 0.15, ParameterInfo::kCanAutomate, kParam0, -60, 60, true)); parameters.addParameter (new ScaledParameter (USTRING("Freq"), USTRING("Hz"), 0, 0.6, ParameterInfo::kCanAutomate, kParam1, 1000, 11100, true)); parameters.addParameter (new ScaledParameter (USTRING("HF Drive"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam2, -20, 20, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DeEsserController::terminate () { return BaseController::terminate (); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDeEsserController.h000066400000000000000000000042171461511344300260230ustar00rootroot00000000000000/* * mdaDeEsserController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaDeEsserProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DeEsserController : public BaseController { public: DeEsserController (); ~DeEsserController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new DeEsserController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461736D, 0x64612064, 0x652D6573); #else inline static DECLARE_UID (uid, 0x370BA963, 0xE2D54BF8, 0x8D6838FA, 0x1567C8DD); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDeEsserProcessor.cpp000066400000000000000000000075341461511344300262170ustar00rootroot00000000000000/* * mdaDeEsserProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDeEsserProcessor.h" #include "mdaDeEsserController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DeEsserProcessor::DeEsserProcessor () { setControllerClass (DeEsserController::uid); allocParameters (3); } //----------------------------------------------------------------------------- DeEsserProcessor::~DeEsserProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DeEsserProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.15; //thresh params[1] = 0.60; //f params[2] = 0.50; //drive recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DeEsserProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DeEsserProcessor::setActive (TBool state) { env=0.f; fbuf1 = fbuf2 = 0; return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void DeEsserProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b; float f1=fbuf1, f2=fbuf2, tmp, fi=fil, fo= (1.f-fil); float at=att, re=rel, en=env, th=thr, g, gg=gai; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; tmp = 0.5f * (a + b); //2nd order crossover f1 = fo * f1 + fi * tmp; tmp -= f1; f2 = fo * f2 + fi * tmp; tmp = gg*(tmp - f2); //extra HF gain en= (tmp>en)? en+at*(tmp-en) : en*re; //envelope if (en>th) g=f1+f2+tmp*(th/en); else g=f1+f2+tmp; //limit //brackets for full-band!!! *++out1 = g; *++out2 = g; } if (fabs (f1) < 1.0e-10) {fbuf1=0.f; fbuf2=0.f;} else {fbuf1=f1; fbuf2=f2;} if (fabs (en) < 1.0e-10) env=0.f; else env=en; } //----------------------------------------------------------------------------- void DeEsserProcessor::recalculate () { thr= (float)pow (10.0f, (float)(3.f * params[0] - 3.f)); att=0.01f; rel=0.992f; fil=0.05f + 0.94f * params[1] * params[1]; gai= (float)pow (10.0f, (float)(2.f * params[2] - 1.f)); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDeEsserProcessor.h000066400000000000000000000044751461511344300256650ustar00rootroot00000000000000/* * mdaDeEsserProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DeEsserProcessor : public BaseProcessor { public: DeEsserProcessor (); ~DeEsserProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdas'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new DeEsserProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461736D, 0x64612064, 0x652D6573); #else inline static DECLARE_UID (uid, 0x174FD6D1, 0x856E4641, 0xBFB9851A, 0x1C544725); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float fbuf1, fbuf2, gai; float thr, att, rel, env, fil; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDegradeController.cpp000066400000000000000000000101201461511344300263450ustar00rootroot00000000000000/* * mdaDegradeController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDegradeController.h" #include "mdaDegradeController.h" #include "pluginterfaces/base/ibstream.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DegradeController::DegradeController () { } //----------------------------------------------------------------------------- DegradeController::~DegradeController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DegradeController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { parameters.addParameter (USTRING("Headroom"), USTRING("dB"), 0, 0.8, ParameterInfo::kCanAutomate, kParam0); parameters.addParameter (new ScaledParameter (USTRING("Quant"), USTRING("bits"), 0, 0.5, ParameterInfo::kCanAutomate, kParam1, 4, 16, true)); parameters.addParameter (USTRING("Rate"), USTRING("S<>S&&H"), 0, 0.65, ParameterInfo::kCanAutomate, kParam2); parameters.addParameter (USTRING("PostFilt"), USTRING("Hz"), 0, 0.9, ParameterInfo::kCanAutomate, kParam3); parameters.addParameter (USTRING("Non-Lin"), USTRING("Odd<>Eve"), 0, 0.58, ParameterInfo::kCanAutomate, kParam4); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam5, -20, 20, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DegradeController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DegradeController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case kParam0: { result.printInt (-30 * (1 - valueNormalized)); break; } case kParam2: { float f; int tn; if (valueNormalized > 0.5) { f = valueNormalized - 0.5f; } else { f = 0.5f - valueNormalized; } tn = (int)exp (18.0f * f); result.printInt (sampleRate / tn); break; } case kParam3: { result.printInt (pow (10.0f, (float)(2.30104f + 2.f * valueNormalized))); break; } case kParam4: { result.printInt (200.0 * fabs (valueNormalized - 0.5)); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API DegradeController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { // TODO return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDegradeController.h000066400000000000000000000046311461511344300260240ustar00rootroot00000000000000/* * mdaDegradeController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaDegradeProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DegradeController : public BaseController { public: DegradeController (); ~DegradeController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kParam5, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new DegradeController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461436D, 0x64612064, 0x65677261); #else inline static DECLARE_UID (uid, 0x2C3AC40E, 0xA7754992, 0x87FE2BD7, 0x77829B03); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDegradeProcessor.cpp000066400000000000000000000123321461511344300262100ustar00rootroot00000000000000/* * mdaDegradeProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDegradeProcessor.h" #include "mdaDegradeController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DegradeProcessor::DegradeProcessor () { setControllerClass (DegradeController::uid); allocParameters (6); } //----------------------------------------------------------------------------- DegradeProcessor::~DegradeProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DegradeProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.8; //clip params[1] = 0.50; //bits params[2] = 0.65; //rate params[3] = 0.9; //postfilt params[4] = 0.58; //non-lin params[5] = 0.5; //level recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DegradeProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DegradeProcessor::setActive (TBool state) { if (state) buf0 = buf1 = buf2 = buf3 = buf4 = buf5 = buf6 = buf7 = buf8 = buf9 = 0.0f; return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void DegradeProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float b0=buf0, l=lin, l2=lin2; float cl=clp, i2=fi2, o2=fo2; float b1=buf1, b2=buf2, b3=buf3, b4=buf4, b5=buf5; float b6=buf6, b7=buf7, b8=buf8, b9=buf9; float gi=g1, go=g2, ga=g3, m = mode; int n=tn, t=tcount; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { b0 = (*++in1 + *++in2) + m * b0; if (t==n) { t=0; b5 = (float)(go * int (b0 * gi)); if (b5>0) { b5= (float)pow (b5,l2); if (b5>cl) b5=cl;} else { b5=-(float)pow (-b5,l); if (b5<-cl) b5=-cl; } b0=0; } t=t+1; b1 = i2 * (b5 * ga) + o2 * b1; b2 = b1 + o2 * b2; b3 = b2 + o2 * b3; b4 = b3 + o2 * b4; b6 = i2 * b4 + o2 * b6; b7 = b6 + o2 * b7; b8 = b7 + o2 * b8; b9 = b8 + o2 * b9; *++out1 = b9; *++out2 = b9; } if (fabs (b1) < 1.0e-10) { buf1=0.f; buf2=0.f; buf3=0.f; buf4=0.f; buf6=0.f; buf7=0.f; buf8=0.f; buf9=0.f; buf0=0.f; buf5=0.f; } else { buf1=b1; buf2=b2; buf3=b3; buf4=b4; buf6=b6; buf7=b7; buf8=b8, buf9=b9; buf0=b0; buf5=b5; tcount=t; } } //----------------------------------------------------------------------------- float DegradeProcessor::filterFreq(float hz) { float j, k, r=0.999f; j = r * r - 1; k = (float)(2.f - 2.f * r * r * cos(0.647f * hz / getSampleRate () )); return (float)((sqrt (k*k - 4.f*j*j) - k) / (2.f*j)); } //----------------------------------------------------------------------------- void DegradeProcessor::recalculate () { float f; if (params[2]>0.5) { f = (float)params[2] - 0.5f; mode = 1.0f; } else { f = 0.5f - (float)params[2]; mode = 0.0f; } tn = (int)exp (18.0f * f); //tn = (int)(18.0 * params[3 - 8.0); mode=1.f; } // else { tn = (int)(10.0 - 18.0 * params[3); mode=0.f; } tcount = 1; clp = (float)(pow (10.0,(-1.5 + 1.5 * params[0])) ); fo2 = filterFreq((float)pow (10.0f, (float)(2.30104f + 2.f*params[3]))); fi2 = (1.f-fo2); fi2=fi2*fi2; fi2=fi2*fi2; float _g1 = (float)(pow (2.0,2.0 + int (params[1]*12.0))); g2 = (float)(1.0/(2.0 * _g1)); if (params[2]>0.5) g1 = -_g1/(float)tn; else g1= -_g1; g3 = (float)(pow (10.0,2.0*params[5] - 1.0)); if (params[4]>0.5) { lin = (float)(pow (10.0,0.3 * (0.5 - params[4]))); lin2=lin; } else { lin = (float)pow (10.0,0.3 * (params[4] - 0.5)); lin2=1.0; } } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDegradeProcessor.h000066400000000000000000000046471461511344300256670ustar00rootroot00000000000000/* * mdaDegradeProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DegradeProcessor : public BaseProcessor { public: DegradeProcessor (); ~DegradeProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaC'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new DegradeProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461436D, 0x64612064, 0x65677261); #else inline static DECLARE_UID (uid, 0xD31333A7, 0xA34E4690, 0xA279A0B0, 0x6C91BB85); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float filterFreq(float hz); float fi2, fo2, clp, lin, lin2, g1, g2, g3, mode; float buf0, buf1, buf2, buf3, buf4, buf5, buf6, buf7, buf8, buf9; int tn, tcount; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDelayController.cpp000066400000000000000000000111451461511344300260600ustar00rootroot00000000000000/* * mdaDelayController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDelayController.h" #include "pluginterfaces/base/ibstream.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DelayController::DelayController () { } //----------------------------------------------------------------------------- DelayController::~DelayController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DelayController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { parameters.addParameter (USTRING("L Delay"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, kParam0); parameters.addParameter (USTRING("R Delay"), USTRING("%"), 0, 0.27, ParameterInfo::kCanAutomate, kParam1); parameters.addParameter (new ScaledParameter (USTRING("Feedback"), USTRING("%"), 0, 0.7, ParameterInfo::kCanAutomate, kParam2, 0, 99, true)); parameters.addParameter (new ScaledParameter (USTRING("Fb Tone"), USTRING("Lo <> Hi"), 0, 0.5, ParameterInfo::kCanAutomate, kParam3, -100, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Fb Mix"), USTRING("%"), 0, 0.33, ParameterInfo::kCanAutomate, kParam4, 0, 100, true)); parameters.addParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam5); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DelayController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DelayController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case kParam0: { int ldel = (int32)(32766 * valueNormalized * valueNormalized); if (ldel<4) ldel=4; result.printInt (ldel * 1000. / sampleRate); break; } case kParam1: { int ldel = (int32)(32766 * valueNormalized * valueNormalized); if (ldel<4) ldel=4; float tmp; switch (int (valueNormalized * 17.9f)) //fixed left/right ratios { case 17: tmp = 0.5000f; break; case 16: tmp = 0.6667f; break; case 15: tmp = 0.7500f; break; case 14: tmp = 0.8333f; break; case 13: tmp = 1.0000f; break; case 12: tmp = 1.2000f; break; case 11: tmp = 1.3333f; break; case 10: tmp = 1.5000f; break; case 9: tmp = 2.0000f; break; default: tmp = 4.0f * valueNormalized; break; //variable ratio } int rdel = (int32)(32766 * valueNormalized * valueNormalized * tmp); if (rdel>32766) rdel=32766; if (rdel<4) rdel=4; result.printInt (100 * rdel / ldel); break; } case kParam5: { if (valueNormalized == 0) result.fromAscii ("oo"); else result.printFloat (20 * log10(2.0 * valueNormalized), 2); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API DelayController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDelayController.h000066400000000000000000000046151461511344300255310ustar00rootroot00000000000000/* * mdaDelayController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaDelayProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DelayController : public BaseController { public: DelayController (); ~DelayController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kParam5, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new DelayController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461796D, 0x64612064, 0x656C6179); #else inline static DECLARE_UID (uid, 0xF9AB9778, 0xEF1943F2, 0x86F911A3, 0x50C7AACB); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDelayProcessor.cpp000066400000000000000000000120661461511344300257170ustar00rootroot00000000000000/* * mdaDelayProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDelayProcessor.h" #include "mdaDelayController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DelayProcessor::DelayProcessor () : buffer(nullptr) { setControllerClass (DelayController::uid); allocParameters (7); } //----------------------------------------------------------------------------- DelayProcessor::~DelayProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DelayProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.50f; //left delay params[1] = 0.27f; //right ratio params[2] = 0.70f; //feedback params[3] = 0.50f; //tone params[4] = 0.33f; //wet mix params[5] = 0.50f; //output size = 32766; //set max delay time at max sample rate buffer = new float[size + 2]; //spare just in case! ipos = 0; fil0 = 0.0f; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DelayProcessor::terminate () { if (buffer) delete [] buffer; buffer = nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DelayProcessor::setActive (TBool state) { if (state) memset (buffer, 0, size * sizeof (float)); return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void DelayProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, ol, or_, w=wet, y =dry, fb=fbk; float lx=lmix, hx=hmix, f=fil, f0=fil0, tmp; int32 i=ipos, l, r, s=size; l = (i + ldel) % (s + 1); r = (i + rdel) % (s + 1); --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; ol = *(buffer + l); //delay outputs or_ = *(buffer + r); tmp = w * (a + b) + fb * (ol + or_); //mix input & feedback f0 = f * (f0 - tmp) + tmp; //low-pass filter *(buffer + i) = lx * f0 + hx * tmp; //delay input i--; if (i<0) i=s; l--; if (l<0) l=s; r--; if (r<0) r=s; *++out1 = y * a + ol; //mix wet & dry *++out2 = y * b + or_; } ipos = i; if (fabs (f0) < 1.0e-10) fil0=0.0f; else fil0=f0; //trap denormals } //----------------------------------------------------------------------------- void DelayProcessor::recalculate () { float tmp; ldel = (int32)(size * params[0] * params[0]); if (ldel<4) ldel=4; switch (int (params[1] * 17.9f)) //fixed left/right ratios { case 17: tmp = 0.5000f; break; case 16: tmp = 0.6667f; break; case 15: tmp = 0.7500f; break; case 14: tmp = 0.8333f; break; case 13: tmp = 1.0000f; break; case 12: tmp = 1.2000f; break; case 11: tmp = 1.3333f; break; case 10: tmp = 1.5000f; break; case 9: tmp = 2.0000f; break; default: tmp = 4.0f * params[1]; break; //variable ratio } rdel = (int32)(size * params[0] * params[0] * tmp); if (rdel>size) rdel=size; if (rdel<4) rdel=4; fil = params[3]; if (params[3]>0.5f) //simultaneously change crossover frequency & high/low mix { fil = 0.5f * fil - 0.25f; lmix = -2.0f * fil; hmix = 1.0f; } else { hmix = 2.0f * fil; lmix = 1.0f - hmix; } fil = (float)exp (-6.2831853f * pow (10.0f, 2.2f + 4.5f * fil) / getSampleRate ()); fbk = 0.495f * params[2]; wet = 1.0f - params[4]; wet = params[5] * (1.0f - wet * wet); //-3dB at 50% mix dry = params[5] * 2.0f * (1.0f - params[4] * params[4]); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDelayProcessor.h000066400000000000000000000047541461511344300253710ustar00rootroot00000000000000/* * mdaDelayProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DelayProcessor : public BaseProcessor { public: DelayProcessor (); ~DelayProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mday'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new DelayProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461796D, 0x64612064, 0x656C6179); #else inline static DECLARE_UID (uid, 0xE5041336, 0xE9434B28, 0xB7B01267, 0x95F0C32F); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float *buffer; //delay int32 size, ipos, ldel, rdel; //delay max time, pointer, left time, right time float wet, dry, fbk; //wet & dry mix float lmix, hmix, fil, fil0; //low & high mix, crossover filter coeff & buffer }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDetuneController.cpp000066400000000000000000000070271461511344300262520ustar00rootroot00000000000000/* * mdaDetuneController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDetuneController.h" #include "mdaDetuneController.h" #include "pluginterfaces/base/ibstream.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DetuneController::DetuneController () { } //----------------------------------------------------------------------------- DetuneController::~DetuneController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DetuneController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { parameters.addParameter (USTRING("Detune"), USTRING("cents"), 0, 0.4, ParameterInfo::kCanAutomate, kParam0); parameters.addParameter (new ScaledParameter (USTRING("Mix"), USTRING("%"), 0, 0.4, ParameterInfo::kCanAutomate, kParam1, 0, 99)); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam2, -20, 20)); parameters.addParameter (USTRING("Latency"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, kParam3); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DetuneController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DetuneController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { #if 0 case kParam3: { result.printFloat (bufres); break; } case kParam0: { result.printFloat (100*semi); break; } #endif default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } //----------------------------------------------------------------------------- tresult PLUGIN_API DetuneController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDetuneController.h000066400000000000000000000045751461511344300257240ustar00rootroot00000000000000/* * mdaDetuneController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaDetuneProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DetuneController : public BaseController { public: DetuneController (); ~DetuneController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new DetuneController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461746D, 0x64612064, 0x6574756E); #else inline static DECLARE_UID (uid, 0xCE5E213E, 0xE1B74D02, 0x92FF66C6, 0x3DCF27C8); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDetuneProcessor.cpp000066400000000000000000000126311461511344300261030ustar00rootroot00000000000000/* * mdaDetuneProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDetuneProcessor.h" #include "mdaDetuneController.h" #include namespace Steinberg { namespace Vst { namespace mda { #define BUFMAX 4096 //----------------------------------------------------------------------------- DetuneProcessor::DetuneProcessor () { setControllerClass (DetuneController::uid); allocParameters (4); buf=win=nullptr; } //----------------------------------------------------------------------------- DetuneProcessor::~DetuneProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DetuneProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.40f; //fine params[1] = 0.40f; //mix params[2] = 0.50f; //output params[3] = 0.50f; //chunksize buf = new float[BUFMAX]; win = new float[BUFMAX]; buflen=0; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DetuneProcessor::terminate () { if (buf) delete [] buf; if (win) delete [] win; buf=win=nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DetuneProcessor::setActive (TBool state) { if (state) { memset (buf, 0, BUFMAX * sizeof (float)); pos0 = 0; pos1 = pos2 = 0.0f; } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void DetuneProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, c, d; float x, w=wet, y =dry, p1=pos1, p1f, d1=dpos1; float p2=pos2, d2=dpos2; int32 p0=pos0, p1i, p2i; int32 l=buflen-1, lh=buflen>>1; float lf = (float)buflen; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) //had to disable optimization /Og in MSVC++5! { a = *++in1; b = *++in2; c = y * a; d = y * b; --p0 &= l; *(buf + p0) = w * (a + b); //input p1 -= d1; if (p1<0.0f) p1 += lf; //output p1i = (int32)p1; p1f = p1 - (float)p1i; a = *(buf + p1i); ++p1i &= l; a += p1f * (*(buf + p1i) - a); //linear interpolation p2i = (p1i + lh) & l; //180-degree ouptut b = *(buf + p2i); ++p2i &= l; b += p1f * (*(buf + p2i) - b); //linear interpolation p2i = (p1i - p0) & l; //crossfade x = *(win + p2i); //++p2i &= l; //x += p1f * (*(win + p2i) - x); //linear interpolation (doesn't do much) c += b + x * (a - b); p2 -= d2; //repeat for downwards shift - can't see a more efficient way? if (p2<0.0f) p2 += lf; //output p1i = (int32)p2; p1f = p2 - (float)p1i; a = *(buf + p1i); ++p1i &= l; a += p1f * (*(buf + p1i) - a); //linear interpolation p2i = (p1i + lh) & l; //180-degree ouptut b = *(buf + p2i); ++p2i &= l; b += p1f * (*(buf + p2i) - b); //linear interpolation p2i = (p1i - p0) & l; //crossfade x = *(win + p2i); //++p2i &= l; //x += p1f * (*(win + p2i) - x); //linear interpolation (doesn't do much) d += b + x * (a - b); *++out1 = c; *++out2 = d; } pos0=p0; pos1=p1; pos2=p2; } //----------------------------------------------------------------------------- void DetuneProcessor::recalculate () { int32 tmp; semi = 3.0f * params[0] * params[0] * params[0]; dpos2 = (float)pow (1.0594631f, semi); dpos1 = 1.0f / dpos2; wet = (float)pow (10.0f, (float)(2.0f * params[2] - 1.0f)); dry = wet - wet * params[1] * params[1]; wet = (wet + wet - wet * params[1]) * params[1]; tmp = 1 << (8 + (int32)(4.9f * params[3])); if (tmp!=buflen) //recalculate crossfade window { buflen = tmp; bufres = 1000.0f * (float)buflen / getSampleRate (); int32 i; //hanning half-overlap-and-add double p=0.0, dp=6.28318530718/buflen; for(i = 0;i namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DitherController::DitherController () { } //----------------------------------------------------------------------------- DitherController::~DitherController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DitherController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { parameters.addParameter (USTRING("Word Len"), USTRING("Bits"), 0, 0.15, ParameterInfo::kCanAutomate, kParam0); auto* ditherParam = new IndexedParameter (USTRING("Dither"), USTRING(""), 3, 0.3, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, kParam1); ditherParam->setIndexString (0, UString128("OFF")); ditherParam->setIndexString (1, UString128("TRI")); ditherParam->setIndexString (2, UString128("HP-TRI")); ditherParam->setIndexString (3, UString128("N.SHAPE")); parameters.addParameter (ditherParam); parameters.addParameter (new ScaledParameter (USTRING("Dith Amp"), USTRING("lsb"), 0, 0.5, ParameterInfo::kCanAutomate, kParam2, 0, 4)); parameters.addParameter (new ScaledParameter (USTRING("DC Trim"), USTRING("lsb"), 0, 0.5, ParameterInfo::kCanAutomate, kParam3, -2, 2)); parameters.addParameter (new ScaledParameter (USTRING("Zoom"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam4, -2, 2)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DitherController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DitherController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case kParam0: { result.printInt (8.0f + 2.0f * (float)floor(8.9f * valueNormalized)); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API DitherController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { // TODO return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDitherController.h000066400000000000000000000046101461511344300257050ustar00rootroot00000000000000/* * dmaDitherController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaDitherProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DitherController : public BaseController { public: DitherController (); ~DitherController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new DitherController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461646D, 0x64612064, 0x69746865); #else inline static DECLARE_UID (uid, 0xE54A7007, 0x068149B4, 0xAEAF955C, 0x54760DBF); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDitherProcessor.cpp000066400000000000000000000125571461511344300261050ustar00rootroot00000000000000/* * dmaDitherProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDitherProcessor.h" #include "mdaDitherController.h" #include #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DitherProcessor::DitherProcessor () { setControllerClass (DitherController::uid); allocParameters (5); } //----------------------------------------------------------------------------- DitherProcessor::~DitherProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DitherProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.50f; //bits params[1] = 0.88f; //dither (off, rect, tri, hp-tri, hp-tri-2ndOrderShaped) params[2] = 0.50f; //dither level params[3] = 0.50f; //dc trim params[4] = 0.00f; //zoom (8 bit dither and fade audio out) sh1 = sh2 = sh3 = sh4 = 0.0f; rnd1 = rnd3 = 0; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DitherProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DitherProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void DitherProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, aa, bb; float sl=shap, s1=sh1, s2=sh2, s3=sh3, s4=sh4; //shaping level, buffers float dl=dith; //dither level float o = offs, w=wlen, wi = 1.0f/wlen; //DC offset, word length & inverse float g=gain; //gain for Zoom mode int32 r1=rnd1, r2, r3=rnd3, r4; //random numbers for dither int32 m=1; //dither mode if ((int32)(params[1] * 3)==1) m=0; //what is the fastest if (?) --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; r2=r1; r4=r3; //HP-TRI dither (also used when noise shaping) if (m==0) { r4=rand() & 0x7FFF; r2= (r4 & 0x7F)<<8; } //TRI dither r1=rand() & 0x7FFF; r3= (r1 & 0x7F)<<8; //Assumes RAND_MAX=32767? a = g * a + sl * (s1 + s1 - s2); //target level + error feedback aa = a + o + dl * (float)(r1 - r2); // + offset + dither if (aa<0.0f) aa-=wi; //(int32) truncates towards zero! aa = wi * (float)(int32)(w * aa); //truncate s2 = s1; s1 = a - aa; //error feedback: 2nd order noise shaping b = g * b + sl * (s3 + s3 - s4); bb = b + o + dl * (float)(r3 - r4); if (bb<0.0f) bb-=wi; bb = wi * (float)(int32)(w * bb); s4 = s3; s3 = b - bb; *++out1 = aa; *++out2 = bb; } sh1=s1; sh2=s2; sh3=s3; sh4=s4; //doesn't actually matter if these are rnd1=r1; rnd3=r3; //saved or not as effect is so small ! } //----------------------------------------------------------------------------- void DitherProcessor::recalculate () { gain = 1.0f; bits = 8.0f + 2.0f * (float)floor(8.9f * params[0]); if (params[4]>0.1f) //zoom to 6 bit & fade out audio { wlen = 32.0f; gain = (1.0f - params[4]); gain*=gain; } else wlen = (float)pow (2.0f, bits - 1.0f); //word length in quanta //Using WaveLab 2.01 (unity gain) as a reference: // 16-bit output is (int)floor(floating_point_value*32768.0f) offs = (4.0f * params[3] - 1.5f) / wlen; //DC offset (plus 0.5 to round dither not truncate) dith = 2.0f * params[2] / (wlen * (float)32767); shap=0.0f; switch ((int32)(params[1]*3)) //dither mode { case 0: dith = 0.0f; break; //off case 3: shap = 0.5f; break; //noise shaping default: break; //tri, hp-tri } } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDitherProcessor.h000066400000000000000000000045371461511344300255510ustar00rootroot00000000000000/* * dmaDitherProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DitherProcessor : public BaseProcessor { public: DitherProcessor (); ~DitherProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdad'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new DitherProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461646D, 0x64612064, 0x69746865); #else inline static DECLARE_UID (uid, 0xA155F267, 0xA6954095, 0xAFD8BFB1, 0x9E4F2293); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float dith; int32 rnd1, rnd3; float shap, sh1, sh2, sh3, sh4; float offs, bits, wlen, gain; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDubDelayController.cpp000066400000000000000000000077431461511344300265240ustar00rootroot00000000000000/* * mdaDubDelayController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDubDelayController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DubDelayController::DubDelayController () { } //----------------------------------------------------------------------------- DubDelayController::~DubDelayController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DubDelayController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { parameters.addParameter (USTRING("Delay"), USTRING("ms"), 0, 0.3, ParameterInfo::kCanAutomate, kParam0); parameters.addParameter (new ScaledParameter (USTRING("Feedback"), USTRING("Sat<>Lim"), 0, 0.7, ParameterInfo::kCanAutomate, kParam1, -110, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Fb Tone"), USTRING("Lo <> Hi"), 0, 0.4, ParameterInfo::kCanAutomate, kParam2, -100, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("LFO Dep."), USTRING("%"), 0, 0.0, ParameterInfo::kCanAutomate, kParam3, 0, 100, true)); parameters.addParameter (USTRING("LFO Rate"), USTRING("sec."), 0, 0.5, ParameterInfo::kCanAutomate, kParam4); parameters.addParameter (new ScaledParameter (USTRING("FX Mix"), USTRING("%"), 0, 0.33, ParameterInfo::kCanAutomate, kParam5, 0, 100, true)); parameters.addParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam6); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DubDelayController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DubDelayController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case kParam0: { result.printInt ((valueNormalized*valueNormalized*323766) * 1000. / sampleRate); break; } case kParam4: { result.printFloat (pow (10.0f, (float)(2.0f - 3.0f * valueNormalized)), 2); break; } case kParam6: { result.printFloat (20 * log10(2.0 * valueNormalized), 2); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API DubDelayController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse; */ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDubDelayController.h000066400000000000000000000047131461511344300261630ustar00rootroot00000000000000/* * mdaDubDelayController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaDubDelayProcessor.h" using namespace Steinberg::Vst; namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DubDelayController : public BaseController { public: DubDelayController (); ~DubDelayController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kParam5, kParam6, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new DubDelayController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461626D, 0x64612064, 0x75626465); #else inline static DECLARE_UID (uid, 0x812A9763, 0xA27F4D74, 0x8A272139, 0x6F1D35BB); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDubDelayProcessor.cpp000066400000000000000000000133061461511344300263500ustar00rootroot00000000000000/* * mdaDubDelayProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDubDelayProcessor.h" #include "mdaDubDelayController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DubDelayProcessor::DubDelayProcessor () { setControllerClass (DubDelayController::uid); allocParameters (7); } //----------------------------------------------------------------------------- DubDelayProcessor::~DubDelayProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DubDelayProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.30f; //delay params[1] = 0.70f; //feedback params[2] = 0.40f; //tone params[3] = 0.00f; //lfo depth params[4] = 0.50f; //lfo speed params[5] = 0.33f; //wet mix params[6] = 0.50f; //output ///CHANGED///too long? size = 323766; //705600; //95998; //32766; //set max delay time at max sample rate buffer = new float[size + 2]; //spare just in case! memset (buffer, 0, sizeof (float) * (size + 2)); ipos = 0; fil0 = 0.0f; env = 0.0f; phi = 0.0f; dlbuf= 0.0f; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DubDelayProcessor::terminate () { if (buffer) delete [] buffer; buffer = nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DubDelayProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void DubDelayProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, ol, w=wet, y =dry, fb=fbk, dl=dlbuf, db=dlbuf, ddl=0.0f; float lx=lmix, hx=hmix, f=fil, f0=fil0, tmp; float e=env, g, r = rel; //limiter envelope, gain, release float twopi=6.2831853f; int32 i=ipos, l, s=size, k=0; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; if (k==0) //update delay length at slower rate (could be improved!) { db += 0.01f * (del - db - mod - mod * (float)sin(phi)); //smoothed delay+lfo ddl = 0.01f * (db - dl); //linear step phi+=dphi; if (phi>twopi) phi-=twopi; k=100; } k--; dl += ddl; //lin interp between points i--; if (i<0) i=s; //delay positions l = (int32)dl; tmp = dl - (float)l; //remainder l += i; if (l>s) l-= (s+1); ol = *(buffer + l); //delay output l++; if (l>s) l=0; ol += tmp * (*(buffer + l) - ol); //lin interp tmp = a + fb * ol; //mix input (left only!) & feedback f0 = f * (f0 - tmp) + tmp; //low-pass filter tmp = lx * f0 + hx * tmp; g = (tmp<0.0f)? -tmp : tmp; //simple limiter e *= r; if (g>e) e = g; if (e>1.0f) tmp /= e; *(buffer + i) = tmp; //delay input ol *= w; //wet *++out1 = y * a + ol; //dry *++out2 = y * b + ol; } ipos = i; dlbuf=dl; if (fabs (f0) < 1.0e-10) { fil0=0.0f; env=0.0f; } else { fil0=f0; env=e; } //trap denormals } //----------------------------------------------------------------------------- void DubDelayProcessor::recalculate () { float fs=(float)getSampleRate (); ///CHANGED///del = fParam0 * fParam0 * fParam0 * (float)size; del = params[0] * params[0] * (float)size; mod = 0.049f * params[3] * del; fil = params[2]; if (params[2]>0.5f) //simultaneously change crossover frequency & high/low mix { fil = 0.5f * fil - 0.25f; lmix = -2.0f * fil; hmix = 1.0f; } else { hmix = 2.0f * fil; lmix = 1.0f - hmix; } fil = (float)exp (-6.2831853f * pow (10.0f, 2.2f + 4.5f * fil) / fs); fbk = (float)fabs (2.2f * params[1] - 1.1f); if (params[1]>0.5f) rel=0.9997f; else rel=0.8f; //limit or clip wet = 1.0f - params[5]; wet = params[6] * (1.0f - wet * wet); //-3dB at 50% mix dry = params[6] * 2.0f * (1.0f - params[5] * params[5]); dphi = 628.31853f * (float)pow (10.0f, (float)(3.0f * params[4] - 2.0f)) / fs; //100-sample steps } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDubDelayProcessor.h000066400000000000000000000052431461511344300260160ustar00rootroot00000000000000/* * mdaDubDelayProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DubDelayProcessor : public BaseProcessor { public: DubDelayProcessor (); ~DubDelayProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdab'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new DubDelayProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461626D, 0x64612064, 0x75626465); #else inline static DECLARE_UID (uid, 0xA49D1232, 0x24794649, 0xA57337B4, 0xDDC5041C); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float *buffer; //delay int32 size, ipos; //delay max time, pointer, left time, right time float wet, dry, fbk; //wet & dry mix float lmix, hmix, fil, fil0; //low & high mix, crossover filter coeff & buffer float env, rel; //limiter (clipper when release is instant) float del, mod, phi, dphi; //lfo float dlbuf; //smoothed modulated delay }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDynamicsController.cpp000066400000000000000000000101261461511344300265670ustar00rootroot00000000000000/* * mdaDynamicsController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDynamicsController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DynamicsController::DynamicsController () { } //----------------------------------------------------------------------------- DynamicsController::~DynamicsController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DynamicsController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { parameters.addParameter (new ScaledParameter (USTRING("Thresh"), USTRING("dB"), 0, 0.15, ParameterInfo::kCanAutomate, kParam0, -40, 0, true)); parameters.addParameter (USTRING("Ratio"), USTRING(":1"), 0, 0.6, ParameterInfo::kCanAutomate, kParam1); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam2, 0, 40, true)); parameters.addParameter (USTRING("Attack"), UString128(kMicroSecondsString), 0, 0.5, ParameterInfo::kCanAutomate, kParam3); parameters.addParameter (USTRING("Release"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, kParam4); parameters.addParameter (USTRING("Limiter"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam5); parameters.addParameter (USTRING("Gate Thr"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, kParam6); parameters.addParameter (USTRING("Gate Att"), UString128(kMicroSecondsString), 0, 0.5, ParameterInfo::kCanAutomate, kParam7); parameters.addParameter (USTRING("Gate Rel"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, kParam8); parameters.addParameter (new ScaledParameter (USTRING("Mix"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, kParam9, 0, 100, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DynamicsController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DynamicsController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { #if 0 case kParam1: { break; } #endif default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } //----------------------------------------------------------------------------- tresult PLUGIN_API DynamicsController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDynamicsController.h000066400000000000000000000047131461511344300262410ustar00rootroot00000000000000/* * mdaDynamicsController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaDynamicsProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DynamicsController : public BaseController { public: DynamicsController (); ~DynamicsController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kParam5, kParam6, kParam7, kParam8, kParam9, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new DynamicsController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x64614E6D, 0x64612064, 0x796E616D); #else inline static DECLARE_UID (uid, 0xDB1EC488, 0x88364B93, 0xB66C365C, 0x904C6D62); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDynamicsProcessor.cpp000066400000000000000000000133501461511344300264250ustar00rootroot00000000000000/* * mdaDynamicsProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaDynamicsProcessor.h" #include "mdaDynamicsController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- DynamicsProcessor::DynamicsProcessor () { setControllerClass (DynamicsController::uid); allocParameters (10); } //----------------------------------------------------------------------------- DynamicsProcessor::~DynamicsProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API DynamicsProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.60; //thresh ///Note : special version for ardislarge params[1] = 0.40; //ratio params[2] = 0.10; //level ///was 0.6 params[3] = 0.18; //attack params[4] = 0.55; //release params[5] = 1.00; //Limiter params[6] = 0.00; //gate thresh params[7] = 0.10; //gate attack params[8] = 0.50; //gate decay params[9] = 1.00; //fx mix recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API DynamicsProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API DynamicsProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void DynamicsProcessor::checkSilence (ProcessData& /*data*/) { } //----------------------------------------------------------------------------- void DynamicsProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; if (data.inputs[0].silenceFlags & 3) // don't process if input is silent { if (in1 != out1) memset (out1, 0, sampleFrames * sizeof (float)); if (in2 != out2) memset (out2, 0, sampleFrames * sizeof (float)); data.outputs[0].silenceFlags = 3; return; } data.outputs[0].silenceFlags = 0; float a, b, i, j, g, e=env, e2=env2, ra=rat, re= (1.f-rel), at=att, ga=gatt; float tr=trim, th=thr, lth=lthr, xth=xthr, ge=genv, y =dry; --in1; --in2; --out1; --out2; if (mode) //comp/gate/lim { if (lth==0.f) lth=1000.f; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; i = (a<0.f)? -a : a; j = (b<0.f)? -b : b; i = (j>i)? j : i; e = (i>e)? e + at * (i - e) : e * re; e2 = (i>e)? i : e2 * re; //ir; g = (e>th)? tr / (1.f + ra * ((e / th) - 1.f)) : tr; if (g<0.f) g=0.f; if (g*e2>lth) g = lth/e2; //limit ge = (e>xth)? ge + ga - ga * ge : ge * xrat; //gate *++out1 = a * (g * ge + y); *++out2 = b * (g * ge + y); } } else //compressor only { while (--sampleFrames >= 0) { a = *++in1; b = *++in2; i = (a<0.f)? -a : a; j = (b<0.f)? -b : b; i = (j>i)? j : i; //get peak level e = (i>e)? e + at * (i - e) : e * re; //envelope g = (e>th)? tr / (1.f + ra * ((e / th) - 1.f)) : tr; //gain *++out1 = a * (g + y); //vca *++out2 = b * (g + y); } } if (e <1.0e-10) env =0.f; else env =e; if (e2<1.0e-10) env2=0.f; else env2=e2; if (ge<1.0e-10) genv=0.f; else genv=ge; } //----------------------------------------------------------------------------- void DynamicsProcessor::recalculate () { mode=0; thr = (float)pow (10.f, (float)(2.f * params[0] - 2.f)); rat = 2.5f * params[1] - 0.5f; if (rat>1.0) { rat = 1.f + 16.f*(rat-1.f) * (rat - 1.f); mode = 1; } if (rat<0.0) { rat = 0.6f*rat; mode=1; } trim = (float)pow (10.f,(float)(2.f * params[2])); //was - 1.f); att = (float)pow (10.f, (float)(-0.002f - 2.f * params[3])); rel = (float)pow (10.f, (float)(-2.f - 3.f * params[4])); if (params[5]>0.98) lthr=0.f; //limiter else { lthr=0.99f*(float)pow (10.0f,int (30.0*params[5] - 20.0)/20.f); mode=1; } if (params[6]<0.02) { xthr=0.f; } //expander else { xthr= (float)pow (10.f,(float)(3.f * params[6] - 3.f)); mode=1; } xrat = 1.f - (float)pow (10.f, (float)(-2.0 - 3.3 * params[8])); irel = (float)pow (10.0,-2.0/getSampleRate ()); gatt = (float)pow (10.f, (float)(-0.002 - 3.0 * params[7])); if (rat<0.0f && thr<0.1f) rat *= thr*15.f; dry = 1.0f - params[9]; trim *= params[9]; //fx mix } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaDynamicsProcessor.h000066400000000000000000000046451461511344300261010ustar00rootroot00000000000000/* * mdaDynamicsProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class DynamicsProcessor : public BaseProcessor { public: DynamicsProcessor (); ~DynamicsProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaN'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; void checkSilence (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new DynamicsProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x64614E6D, 0x64612064, 0x796E616D); #else inline static DECLARE_UID (uid, 0x9CCF20FE, 0x76CD489C, 0xA9D7EA13, 0xB489CA55); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float thr, rat, env, env2, att, rel, trim, lthr, xthr, xrat, dry; float genv, gatt, irel; int mode; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaEPianoController.cpp000066400000000000000000000142631461511344300262010ustar00rootroot00000000000000/* * mdaEPianoController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaEPianoController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- EPianoController::EPianoController () { addBypassParameter = false; } //----------------------------------------------------------------------------- EPianoController::~EPianoController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API EPianoController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { auto* presetParam = new IndexedParameter ( USTRING ("Factory Presets"), USTRING ("%"), 4, 0.15, ParameterInfo::kIsProgramChange | ParameterInfo::kIsList, kPresetParam); presetParam->setIndexString (0, UString128("Default")); presetParam->setIndexString (1, UString128("Bright")); presetParam->setIndexString (2, UString128("Mellow")); presetParam->setIndexString (3, UString128("Autopan")); presetParam->setIndexString (4, UString128("Tremolo")); parameters.addParameter (presetParam); ParamID pid = 0; parameters.addParameter (new ScaledParameter (USTRING("Envelope Decay"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Envelope Release"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Hardness"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -50, 50)); parameters.addParameter (new ScaledParameter (USTRING("Treble Boost"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -50, 50)); parameters.addParameter (USTRING("Modulation"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("LFO Rate"), USTRING("Hz"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("Velocity Sense"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Stereo Width"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, 0, 200)); parameters.addParameter (new ScaledParameter (USTRING("Polyphony"), USTRING("Voices"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, 1, 32, true)); parameters.addParameter (new ScaledParameter (USTRING("Fine Tuning"), USTRING("cents"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -50, 50)); parameters.addParameter (USTRING("Random Tuning"), USTRING("cents"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("Overdrive"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, 0, 100)); midiCCParamID[kCtrlModWheel] = kModWheelParam; parameters.addParameter (USTRING("Mod Wheel"), USTRING(""), 0, 0, 0, kModWheelParam); midiCCParamID[kCtrlSustainOnOff] = kSustainParam; midiCCParamID[kCtrlSustenutoOnOff] = kSustainParam; parameters.addParameter (new IndexedParameter (USTRING("Sustain"), USTRING(""), 1, 0, 0, kSustainParam)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API EPianoController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API EPianoController::setParamNormalized (ParamID tag, ParamValue value) { tresult res = BaseController::setParamNormalized (tag, value); if (res == kResultOk && tag == kPresetParam) // preset change { int32 program = (int32)parameters.getParameter (tag)->toPlain (value); for (int32 i = 0; i < 12; i++) { BaseController::setParamNormalized (i, EPianoProcessor::programParams[program][i]); } componentHandler->restartComponent (kParamValuesChanged); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API EPianoController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 4: { if (valueNormalized > 0.5) { result.printInt (200.0f * valueNormalized - 100.0f); result.append(USTRING(" Trem")); } else { result.printInt (100.0f - 200.0f * valueNormalized); result.append(USTRING(" Pan")); } break; } case 5: { result.printFloat (exp (6.22f * valueNormalized - 2.61f)); break; } case 10: { result.printFloat (50 * valueNormalized * valueNormalized); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API EPianoController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { switch (tag) { case 4: case 5: case 10: break; default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaEPianoController.h000066400000000000000000000044601461511344300256440ustar00rootroot00000000000000/* * mdaEPianoController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaEPianoProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class EPianoController : public BaseController { public: EPianoController (); ~EPianoController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new EPianoController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653454D, 0x4441656D, 0x64612065, 0x7069616E); #else inline static DECLARE_UID (uid, 0xDA4F8237, 0x290441D4, 0xAF96E580, 0xE22C01FF); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaEPianoData.h000066400000000000000000107217621461511344300244060ustar00rootroot00000000000000/* mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ short epianoData[] = { -7,-23,-28,-16,-30,-17,-28,-16,-31,-15,-34,-12,-35,-6,-42,4,-58,44,-227,-1690, -1412,-1295,-1059,-908,-685,-518,-308,-152,31,182,368,531,731,948,1195,1439,1694,1950,2228,2487, 2742,2988,3225,3428,3624,3790,3969,4108,4253,4382,4495,4591,4647,4689,4737,4794,4846,4920,5003,5077, 5189,5290,5405,5517,5635,5779,5921,6049,6197,6345,6541,6759,6986,7224,7484,7727,7983,8235,8497,8760, 9049,9319,9617,9871,10137,10372,10601,10817,10998,11123,11227,11284,11322,11335,11339,11340,11310,11255,11174,11066, 10940,10791,10631,10462,10285,10073,9889,9673,9472,9265,9048,8819,8590,8315,8063,7788,7531,7295,7078,6880, 6699,6510,6328,6170,6015,5838,5663,5478,5293,5090,4885,4673,4433,4181,3908,3602,3281,2952,2637,2349, 2108,1917,1763,1641,1547,1504,1459,1426,1399,1388,1347,1302,1263,1207,1139,1077,1019,934,810,660, 508,350,187,55,-46,-119,-158,-175,-184,-166,-160,-157,-146,-201,-259,-354,-446,-553,-685,-825, -986,-1198,-1415,-1663,-1937,-2206,-2475,-2743,-2957,-3179,-3362,-3539,-3682,-3805,-3926,-4075,-4237,-4419,-4620,-4839, -5074,-5311,-5544,-5779,-6030,-6290,-6565,-6853,-7124,-7377,-7612,-7825,-8020,-8163,-8253,-8307,-8333,-8332,-8306,-8303, -8303,-8331,-8386,-8442,-8513,-8586,-8646,-8723,-8811,-8888,-8964,-9042,-9114,-9175,-9216,-9238,-9250,-9225,-9171,-9087, -8978,-8869,-8772,-8705,-8677,-8675,-8707,-8769,-8852,-8965,-9081,-9196,-9322,-9446,-9554,-9656,-9751,-9845,-9923,-9993, -10039,-10074,-10042,-10007,-9941,-9909,-9856,-9819,-9785,-9804,-9814,-9839,-9861,-9871,-9887,-9876,-9844,-9798,-9695,-9586, -9454,-9316,-9154,-8974,-8733,-8486,-8197,-7899,-7577,-7256,-6961,-6654,-6357,-6101,-5835,-5578,-5341,-5105,-4881,-4640, -4386,-4131,-3873,-3604,-3335,-3057,-2802,-2534,-2270,-2007,-1749,-1493,-1253,-1029,-828,-633,-451,-267,-88,100, 281,485,673,864,1084,1310,1533,1771,2019,2248,2476,2694,2917,3126,3328,3506,3680,3849,4010,4167, 4328,4512,4695,4891,5089,5291,5487,5660,5821,5980,6114,6220,6315,6374,6421,6430,6420,6387,6331,6236, 6131,6005,5871,5722,5590,5476,5374,5259,5179,5078,4961,4846,4700,4543,4382,4188,3993,3796,3580,3376, 3163,2960,2756,2541,2323,2123,1918,1748,1610,1490,1417,1383,1352,1348,1349,1338,1311,1294,1258,1216, 1152,1092,1036,982,918,863,814,762,691,643,588,551,524,523,538,572,601,606,627,610, 567,483,370,232,57,-137,-333,-536,-736,-947,-1162,-1390,-1597,-1814,-2029,-2229,-2401,-2567,-2726,-2855, -2980,-3112,-3235,-3387,-3546,-3755,-3968,-4185,-4410,-4632,-4850,-5028,-5201,-5344,-5494,-5612,-5715,-5804,-5858,-5910, -5934,-5931,-5911,-5865,-5787,-5712,-5638,-5566,-5498,-5472,-5463,-5443,-5438,-5437,-5430,-5397,-5373,-5333,-5293,-5245, -5178,-5108,-5046,-4958,-4870,-4774,-4667,-4550,-4416,-4271,-4161,-4063,-3978,-3912,-3860,-3839,-3813,-3778,-3759,-3715, -3664,-3587,-3508,-3421,-3314,-3196,-3072,-2918,-2761,-2578,-2369,-2163,-1932,-1696,-1477,-1248,-1018,-782,-538,-309, -61,191,456,733,1030,1331,1649,1948,2258,2578,2895,3209,3530,3854,4173,4464,4755,5030,5300,5555, 5806,6045,6284,6498,6701,6890,7079,7240,7395,7518,7620,7715,7771,7829,7902,7970,8032,8104,8160,8222, 8266,8308,8350,8402,8452,8503,8563,8616,8668,8725,8781,8827,8851,8857,8857,8846,8824,8815,8823,8845, 8869,8896,8932,8946,8963,8971,8999,9002,9012,9015,9020,9030,9040,9035,9024,8995,8936,8847,8736,8613, 8480,8332,8201,8071,7922,7775,7650,7500,7338,7170,6994,6819,6642,6452,6292,6121,5972,5809,5641,5461, 5251,5019,4789,4540,4294,4044,3801,3585,3387,3180,3008,2841,2680,2527,2372,2225,2091,1955,1846,1755, 1665,1585,1487,1378,1265,1136,997,851,712,569,432,325,231,148,83,28,-29,-87,-170,-259, -341,-427,-514,-593,-685,-778,-880,-1014,-1156,-1310,-1489,-1679,-1866,-2063,-2264,-2447,-2620,-2776,-2934,-3089, -3232,-3400,-3572,-3761,-3944,-4120,-4294,-4470,-4625,-4780,-4956,-5131,-5303,-5479,-5664,-5866,-6052,-6237,-6409,-6574, -6702,-6812,-6901,-6993,-7058,-7138,-7205,-7279,-7351,-7414,-7451,-7507,-7535,-7555,-7582,-7610,-7651,-7674,-7704,-7774, -7837,-7897,-7945,-7988,-8008,-8017,-8004,-8001,-8007,-8005,-8021,-8040,-8074,-8117,-8156,-8212,-8269,-8312,-8383,-8429, -8504,-8587,-8685,-8777,-8899,-8995,-9092,-9169,-9228,-9288,-9324,-9351,-9388,-9403,-9432,-9461,-9486,-9510,-9535,-9547, -9557,-9527,-9480,-9435,-9363,-9286,-9201,-9102,-8995,-8866,-8711,-8538,-8356,-8156,-7944,-7727,-7488,-7255,-6996,-6767, -6513,-6277,-6039,-5785,-5514,-5250,-4963,-4665,-4363,-4081,-3796,-3505,-3212,-2939,-2653,-2396,-2136,-1893,-1664,-1438, -1215,-1007,-802,-601,-412,-205,-36,160,370,574,776,995,1212,1423,1631,1841,2063,2263,2456,2645, 2806,2968,3109,3230,3367,3490,3611,3741,3877,4020,4154,4299,4456,4600,4735,4867,5004,5127,5250,5349, 5449,5526,5572,5605,5596,5573,5518,5440,5357,5266,5170,5080,5002,4934,4867,4800,4725,4670,4582,4500, 4434,4332,4238,4142,4046,3943,3827,3688,3542,3378,3194,3003,2816,2636,2473,2322,2207,2109,2040,1965, 1910,1848,1814,1751,1720,1671,1615,1566,1510,1449,1383,1295,1198,1088,954,809,656,510,387,264, 179,98,49,4,-42,-99,-157,-227,-307,-416,-506,-616,-738,-872,-1010,-1158,-1341,-1530,-1742,-1947, -2172,-2395,-2575,-2754,-2919,-3032,-3151,-3257,-3360,-3460,-3567,-3674,-3795,-3918,-4040,-4166,-4293,-4425,-4556,-4670, -4800,-4924,-5050,-5187,-5290,-5393,-5464,-5504,-5526,-5521,-5480,-5438,-5382,-5326,-5272,-5218,-5183,-5151,-5108,-5072, -5043,-5003,-4967,-4933,-4895,-4872,-4834,-4805,-4761,-4707,-4650,-4563,-4454,-4328,-4191,-4036,-3884,-3738,-3609,-3476, -3355,-3258,-3164,-3065,-2971,-2875,-2792,-2688,-2590,-2496,-2393,-2266,-2141,-1993,-1835,-1654,-1436,-1220,-992,-735, -489,-219,24,263,509,741,972,1219,1462,1708,1950,2190,2444,2710,2972,3247,3531,3805,4094,4369, 4644,4918,5164,5421,5657,5858,6056,6240,6413,6592,6748,6905,7061,7220,7351,7467,7594,7720,7833,7940, 8058,8158,8266,8341,8399,8460,8504,8533,8560,8574,8584,8589,8596,8628,8669,8717,8761,8806,8847,8873, 8884,8910,8935,8955,8970,8982,8979,8967,8925,8877,8830,8759,8673,8592,8497,8410,8331,8269,8207,8166, 8100,8045,7972,7882,7786,7677,7564,7447,7320,7181,7032,6885,6711,6532,6344,6152,5936,5731,5531,5351, 5181,5030,4903,4786,4665,4554,4427,4293,4158,4020,3881,3736,3580,3433,3286,3126,2978,2814,2640,2473, 2314,2137,1990,1865,1763,1680,1598,1539,1491,1424,1371,1290,1214,1118,1011,894,779,643,526,399, 273,133,-23,-169,-322,-473,-606,-722,-825,-910,-996,-1083,-1148,-1234,-1344,-1429,-1563,-1708,-1875,-2041, -2221,-2398,-2576,-2738,-2926,-3095,-3293,-3477,-3658,-3836,-4000,-4134,-4273,-4392,-4506,-4613,-4714,-4814,-4931,-5049, -5185,-5336,-5504,-5676,-5827,-5981,-6134,-6281,-6422,-6558,-6691,-6827,-6954,-7047,-7148,-7233,-7297,-7356,-7391,-7424, -7450,-7461,-7497,-7544,-7597,-7686,-7766,-7858,-7946,-8028,-8108,-8199,-8256,-8335,-8395,-8458,-8502,-8553,-8579,-8612, -8618,-8635,-8627,-8620,-8606,-8597,-8600,-8637,-8647,-8710,-8760,-8830,-8895,-8957,-9006,-9059,-9091,-9116,-9126,-9125, -9125,-9107,-9078,-9040,-8984,-8916,-8840,-8747,-8645,-8552,-8456,-8365,-8280,-8174,-8083,-7980,-7881,-7751,-7617,-7464, -7299,-7100,-6902,-6685,-6471,-6249,-6009,-5777,-5534,-5273,-5013,-4753,-4489,-4232,-3975,-3701,-3440,-3176,-2912,-2661, -2388,-2142,-1881,-1615,-1371,-1124,-868,-627,-386,-157,63,286,504,699,918,1115,1314,1510,1717,1932, 2154,2358,2580,2797,3006,3195,3400,3581,3745,3896,4049,4178,4313,4429,4556,4667,4778,4873,4964,5067, 5157,5257,5351,5454,5560,5663,5771,5877,5964,6037,6072,6086,6092,6058,6003,5949,5888,5815,5732,5645, 5547,5451,5343,5264,5149,5063,4966,4869,4794,4736,4667,4613,4537,4445,4337,4202,4056,3904,3732,3567, 3396,3233,3072,2917,2771,2637,2514,2405,2297,2198,2107,2025,1977,1944,1899,1864,1834,1777,1699,1589, 1483,1358,1214,1070,935,779,638,514,407,296,201,103,19,-72,-153,-237,-303,-369,-428,-503, -584,-703,-828,-991,-1178,-1378,-1577,-1806,-2036,-2232,-2446,-2625,-2808,-2954,-3107,-3249,-3394,-3523,-3650,-3764, -3875,-3989,-4083,-4180,-4304,-4424,-4555,-4701,-4862,-5023,-5194,-5361,-5517,-5641,-5751,-5823,-5890,-5921,-5945,-5957, -5969,-5952,-5936,-5901,-5867,-5829,-5782,-5729,-5691,-5648,-5616,-5593,-5583,-5587,-5587,-5582,-5570,-5543,-5484,-5407, -5309,-5215,-5109,-4985,-4858,-4739,-4591,-4468,-4338,-4211,-4078,-3939,-3804,-3696,-3574,-3452,-3347,-3240,-3138,-3011, -2872,-2712,-2525,-2325,-2112,-1874,-1642,-1374,-1109,-840,-578,-295,-26,253,536,810,1095,1376,1648,1939, 2217,2508,2780,3072,3373,3673,3972,4284,4572,4864,5127,5392,5641,5879,6098,6319,6523,6719,6902,7079, 7253,7423,7571,7740,7896,8051,8204,8336,8462,8597,8716,8810,8891,8959,9006,9040,9072,9108,9143,9182, 9229,9280,9336,9380,9429,9498,9552,9618,9713,9752,9829,9877,9923,9952,9982,9977,9954,9913,9860,9771, 9710,9635,9589,9525,9472,9419,9362,9308,9234,9188,9127,9056,8981,8898,8804,8701,8582,8447,8300,8116, 7908,7703,7471,7249,7012,6807,6616,6414,6233,6060,5909,5756,5595,5449,5308,5165,5008,4874,4720,4578, 4421,4253,4078,3900,3688,3493,3284,3090,2900,2729,2572,2439,2302,2212,2128,2047,1966,1889,1811,1726, 1632,1542,1467,1357,1253,1130,994,840,673,497,328,152,-8,-169,-315,-453,-569,-666,-771,-861, -960,-1075,-1206,-1331,-1466,-1616,-1765,-1920,-2087,-2272,-2473,-2692,-2901,-3123,-3336,-3544,-3737,-3935,-4111,-4268, -4395,-4524,-4641,-4734,-4845,-4969,-5106,-5239,-5363,-5513,-5647,-5795,-5945,-6097,-6274,-6440,-6594,-6750,-6906,-7047, -7178,-7298,-7397,-7476,-7528,-7568,-7617,-7640,-7683,-7724,-7792,-7846,-7911,-7986,-8068,-8154,-8249,-8337,-8437,-8544, -8644,-8735,-8839,-8929,-9006,-9081,-9130,-9180,-9198,-9209,-9225,-9245,-9260,-9299,-9337,-9388,-9449,-9511,-9582,-9666, -9731,-9818,-9874,-9947,-10007,-10047,-10100,-10127,-10146,-10137,-10103,-10066,-9998,-9928,-9842,-9769,-9665,-9571,-9477,-9387, -9305,-9204,-9105,-9013,-8892,-8766,-8622,-8465,-8300,-8120,-7922,-7715,-7496,-7257,-7011,-6756,-6497,-6226,-5954,-5692, -5430,-5156,-4894,-4638,-4389,-4139,-3874,-3612,-3359,-3096,-2828,-2556,-2292,-2015,-1744,-1474,-1212,-949,-689,-443, -208,14,240,459,666,891,1100,1324,1556,1772,2000,2227,2445,2664,2884,3092,3299,3487,3681,3853, 4016,4160,4308,4419,4523,4618,4698,4794,4864,4955,5062,5164,5272,5372,5478,5575,5658,5730,5793,5829, 5847,5863,5846,5827,5792,5738,5679,5597,5499,5385,5279,5169,5070,4998,4926,4874,4827,4787,4732,4678, 4633,4570,4482,4394,4277,4171,4035,3904,3771,3631,3469,3326,3159,2995,2832,2698,2563,2461,2358,2302, 2226,2193,2128,2088,2019,1957,1858,1780,1653,1526,1392,1254,1106,966,812,646,493,330,197,39, -80,-179,-271,-355,-416,-472,-530,-599,-685,-784,-901,-1050,-1192,-1358,-1531,-1713,-1884,-2061,-2241,-2420, -2583,-2748,-2905,-3048,-3177,-3296,-3391,-3483,-3540,-3592,-3665,-3722,-3801,-3902,-4021,-4147,-4282,-4417,-4559,-4691, -4828,-4955,-5054,-5179,-5258,-5341,-5397,-5461,-5500,-5519,-5518,-5504,-5475,-5434,-5406,-5365,-5360,-5360,-5359,-5369, -5410,-5435,-5456,-5479,-5499,-5504,-5503,-5462,-5446,-5399,-5344,-5282,-5224,-5143,-5030,-4919,-4799,-4670,-4531,-4412, -4302,-4207,-4111,-4017,-3936,-3850,-3766,-3655,-3542,-3416,-3277,-3107,-2929,-2744,-2540,-2325,-2104,-1875,-1625,-1358, -1091,-836,-546,-281,-13,254,516,780,1040,1302,1583,1855,2140,2428,2725,3025,3331,3616,3919,4197, 4487,4762,5020,5284,5541,5772,5999,6234,6457,6669,6855,7057,7254,7441,7628,7815,7989,8145,8292,8436, 8561,8673,8773,8875,8957,9041,9097,9156,9215,9269,9302,9358,9414,9465,9517,9562,9631,9697,9747,9796, 9837,9848,9865,9857,9834,9817,9778,9731,9685,9621,9576,9512,9447,9395,9327,9268,9211,9156,9116,9073, 9023,8983,8931,8860,8789,8680,8573,8439,8295,8141,7982,7818,7662,7491,7334,7162,7004,6861,6714,6555, 6431,6302,6168,6056,5951,5835,5722,5593,5458,5310,5143,4968,4776,4596,4413,4230,4044,3878,3718,3557, 3407,3261,3139,3010,2891,2793,2681,2603,2501,2416,2321,2206,2089,1966,1816,1654,1484,1309,1143,969, 794,650,500,362,216,75,-55,-172,-293,-405,-512,-632,-735,-862,-987,-1116,-1276,-1440,-1605,-1801, -2001,-2217,-2410,-2603,-2790,-2968,-3128,-3279,-3429,-3574,-3715,-3845,-3975,-4099,-4210,-4321,-4436,-4562,-4693,-4806, -4949,-5107,-5254,-5420,-5600,-5765,-5935,-6078,-6211,-6342,-6455,-6546,-6636,-6725,-6801,-6874,-6934,-6996,-7063,-7115, -7187,-7245,-7320,-7403,-7490,-7582,-7703,-7802,-7933,-8050,-8163,-8275,-8355,-8430,-8507,-8559,-8609,-8653,-8698,-8744, -8774,-8817,-8868,-8909,-8952,-9009,-9060,-9116,-9177,-9247,-9330,-9400,-9478,-9551,-9614,-9659,-9692,-9706,-9707,-9692, -9665,-9625,-9584,-9543,-9477,-9413,-9345,-9285,-9198,-9125,-9032,-8947,-8853,-8758,-8656,-8553,-8425,-8284,-8141,-7984, -7802,-7616,-7408,-7204,-6973,-6749,-6514,-6288,-6056,-5809,-5560,-5331,-5093,-4841,-4592,-4350,-4108,-3855,-3608,-3350, -3089,-2811,-2549,-2288,-2035,-1772,-1498,-1254,-1025,-779,-537,-302,-74,140,379,606,827,1061,1291,1509, 1737,1953,2189,2416,2645,2858,3069,3267,3449,3608,3757,3901,4000,4118,4226,4318,4414,4513,4618,4728, 4825,4920,5012,5115,5198,5266,5346,5418,5476,5522,5558,5564,5560,5515,5454,5387,5300,5195,5115,5021, 4925,4847,4783,4727,4683,4615,4562,4507,4446,4389,4324,4256,4188,4107,4027,3922,3798,3669,3517,3358, 3193,3027,2875,2735,2610,2493,2402,2316,2252,2184,2117,2052,1981,1913,1836,1770,1690,1597,1482,1379, 1255,1098,940,768,595,424,263,122,-21,-133,-237,-324,-400,-474,-565,-632,-722,-811,-915,-1029, -1142,-1265,-1407,-1541,-1698,-1856,-2043,-2224,-2405,-2576,-2744,-2892,-2997,-3105,-3182,-3256,-3328,-3373,-3427,-3478, -3538,-3601,-3671,-3757,-3845,-3923,-4004,-4104,-4187,-4292,-4393,-4502,-4588,-4677,-4759,-4815,-4823,-4834,-4818,-4791, -4760,-4710,-4668,-4640,-4609,-4592,-4583,-4563,-4566,-4570,-4563,-4568,-4575,-4574,-4572,-4582,-4568,-4553,-4514,-4476, -4408,-4321,-4207,-4093,-3975,-3850,-3711,-3584,-3481,-3365,-3260,-3146,-3059,-2960,-2846,-2724,-2611,-2476,-2349,-2203, -2045,-1884,-1705,-1499,-1297,-1065,-814,-562,-306,-49,211,468,712,956,1208,1445,1683,1914,2163,2415, 2655,2908,3169,3419,3677,3923,4176,4431,4685,4920,5173,5410,5632,5841,6042,6239,6429,6613,6787,6975, 7140,7299,7456,7626,7791,7921,8078,8229,8357,8486,8600,8707,8792,8864,8929,8996,9040,9080,9115,9152, 9200,9234,9281,9328,9380,9413,9452,9487,9520,9535,9547,9549,9542,9528,9496,9445,9391,9322,9233,9144, 9051,8953,8847,8763,8677,8607,8535,8474,8398,8333,8251,8177,8077,7991,7878,7767,7643,7511,7363,7206, 7051,6879,6701,6533,6350,6179,6012,5858,5723,5607,5494,5382,5286,5169,5074,4946,4830,4709,4567,4419, 4275,4112,3951,3787,3616,3440,3263,3087,2922,2753,2604,2464,2330,2219,2122,2021,1931,1836,1735,1629, 1492,1366,1228,1079,919,764,598,435,262,83,-87,-260,-430,-588,-737,-868,-998,-1120,-1213,-1314, -1423,-1514,-1625,-1744,-1881,-2020,-2174,-2328,-2487,-2643,-2816,-2976,-3147,-3325,-3479,-3632,-3787,-3919,-4052,-4177, -4289,-4386,-4479,-4559,-4642,-4729,-4820,-4931,-5044,-5183,-5313,-5450,-5597,-5739,-5874,-6018,-6150,-6288,-6427,-6536, -6652,-6747,-6837,-6921,-6982,-7054,-7105,-7152,-7194,-7248,-7303,-7379,-7457,-7559,-7656,-7760,-7859,-7976,-8072,-8168, -8250,-8347,-8428,-8500,-8558,-8623,-8670,-8704,-8735,-8762,-8760,-8772,-8774,-8793,-8815,-8838,-8885,-8911,-8989,-9022, -9063,-9107,-9141,-9164,-9174,-9172,-9184,-9156,-9126,-9090,-9037,-8969,-8898,-8801,-8716,-8613,-8513,-8402,-8313,-8209, -8103,-8013,-7906,-7802,-7683,-7554,-7420,-7275,-7107,-6934,-6753,-6570,-6371,-6159,-5945,-5734,-5506,-5272,-5046,-4814, -4579,-4344,-4117,-3883,-3645,-3407,-3164,-2924,-2672,-2422,-2163,-1915,-1639,-1393,-1141,-898,-659,-416,-179,48, 283,510,734,939,1153,1360,1572,1783,2004,2216,2437,2647,2866,3072,3285,3464,3641,3795,3945,4067, 4178,4302,4398,4492,4568,4650,4727,4799,4854,4934,4992,5065,5129,5210,5288,5365,5430,5484,5536,5546, 5529,5517,5477,5416,5354,5271,5197,5117,5035,4955,4872,4799,4726,4650,4567,4532,4472,4430,4393,4359, 4330,4264,4201,4117,4007,3887,3755,3626,3456,3313,3167,3035,2903,2780,2676,2571,2468,2369,2276,2197, 2146,2083,2048,1981,1929,1847,1752,1651,1539,1385,1240,1079,915,754,591,440,303,166,35,-70, -179,-282,-391,-476,-561,-642,-724,-801,-893,-991,-1114,-1255,-1401,-1579,-1759,-1941,-2130,-2312,-2490,-2644, -2779,-2905,-3039,-3124,-3223,-3312,-3400,-3470,-3543,-3603,-3663,-3729,-3797,-3858,-3955,-4051,-4164,-4269,-4402,-4520, -4642,-4751,-4838,-4906,-4953,-4982,-5011,-5012,-5006,-4989,-4969,-4952,-4923,-4890,-4853,-4829,-4798,-4772,-4758,-4758, -4765,-4775,-4784,-4805,-4793,-4787,-4754,-4708,-4656,-4572,-4473,-4371,-4241,-4120,-4001,-3866,-3744,-3615,-3476,-3345, -3210,-3072,-2943,-2812,-2684,-2563,-2420,-2289,-2129,-1965,-1768,-1574,-1361,-1124,-886,-629,-363,-95,166,436, 698,963,1225,1484,1742,2016,2265,2528,2787,3038,3312,3565,3822,4092,4362,4622,4881,5133,5391,5645, 5878,6110,6329,6540,6743,6936,7121,7306,7472,7655,7819,7992,8157,8316,8477,8644,8777,8922,9040,9150, 9252,9333,9403,9464,9515,9559,9613,9651,9690,9708,9735,9772,9799,9826,9868,9895,9933,9946,9977,9991, 10002,9987,9964,9926,9864,9790,9703,9611,9516,9417,9330,9239,9148,9053,8962,8875,8803,8712,8646,8557, 8475,8397,8306,8216,8114,7991,7856,7708,7539,7375,7168,6984,6808,6641,6465,6313,6157,6012,5884,5743, 5623,5506,5376,5269,5147,5034,4906,4768,4643,4498,4331,4166,3978,3795,3600,3397,3214,3049,2884,2731, 2589,2459,2335,2226,2103,2003,1879,1755,1651,1520,1411,1271,1126,980,820,637,461,268,77,-116, -297,-481,-640,-795,-923,-1056,-1172,-1292,-1402,-1526,-1639,-1769,-1891,-2019,-2150,-2287,-2452,-2604,-2764,-2940, -3125,-3308,-3486,-3669,-3848,-4012,-4152,-4280,-4407,-4501,-4604,-4703,-4802,-4903,-5011,-5114,-5227,-5332,-5451,-5569, -5708,-5850,-5991,-6135,-6286,-6440,-6580,-6711,-6858,-6987,-7098,-7172,-7273,-7332,-7400,-7458,-7521,-7593,-7670,-7742, -7831,-7922,-8016,-8116,-8219,-8336,-8440,-8554,-8681,-8800,-8910,-9017,-9114,-9204,-9270,-9311,-9347,-9384,-9402,-9421, -9445,-9472,-9507,-9530,-9570,-9621,-9643,-9689,-9712,-9754,-9788,-9813,-9827,-9851,-9849,-9837,-9810,-9770,-9709,-9641, -9545,-9440,-9325,-9209,-9089,-8968,-8859,-8735,-8605,-8491,-8361,-8215,-8080,-7922,-7773,-7611,-7429,-7255,-7076,-6864, -6663,-6439,-6199,-5961,-5706,-5451,-5216,-4950,-4702,-4445,-4195,-3940,-3691,-3439,-3180,-2905,-2639,-2368,-2097,-1825, -1556,-1279,-1012,-737,-466,-195,64,326,570,829,1057,1288,1526,1742,1968,2194,2411,2650,2882,3100, 3336,3549,3765,3959,4147,4336,4497,4654,4801,4944,5061,5154,5248,5317,5379,5427,5499,5560,5618,5674, 5744,5813,5883,5948,6009,6055,6095,6107,6105,6092,6072,6023,5982,5912,5840,5759,5640,5529,5436,5321, 5223,5129,5044,4973,4906,4851,4808,4757,4708,4651,4567,4480,4386,4270,4147,4024,3878,3733,3584,3439, 3271,3114,2956,2813,2661,2541,2440,2341,2255,2182,2111,2040,1973,1881,1793,1670,1547,1398,1255,1108, 937,774,610,439,273,97,-67,-212,-361,-495,-605,-701,-791,-872,-960,-1021,-1123,-1213,-1325,-1449, -1591,-1747,-1906,-2070,-2227,-2395,-2559,-2713,-2867,-3020,-3170,-3296,-3394,-3516,-3591,-3662,-3711,-3768,-3820,-3862, -3909,-3974,-4044,-4131,-4240,-4338,-4446,-4564,-4663,-4766,-4866,-4940,-5021,-5086,-5136,-5179,-5201,-5222,-5219,-5198, -5173,-5126,-5086,-5060,-5024,-5003,-4994,-4985,-5000,-5001,-5014,-5039,-5052,-5042,-5028,-4999,-4956,-4897,-4827,-4752, -4660,-4552,-4443,-4310,-4163,-4025,-3877,-3732,-3597,-3448,-3313,-3202,-3063,-2942,-2812,-2701,-2556,-2391,-2215,-2039, -1830,-1622,-1389,-1172,-938,-680,-422,-172,100,351,616,871,1137,1391,1657,1891,2140,2383,2636,2883, 3124,3384,3644,3885,4148,4411,4664,4921,5145,5398,5621,5845,6047,6272,6458,6662,6836,7016,7202,7376, 7541,7722,7889,8054,8195,8327,8471,8602,8710,8828,8906,9000,9072,9137,9194,9237,9270,9301,9322,9342, 9374,9389,9420,9456,9478,9510,9549,9568,9571,9563,9533,9510,9457,9402,9346,9265,9189,9097,9003,8904, 8814,8708,8599,8509,8411,8324,8249,8180,8117,8050,7987,7901,7820,7708,7588,7467,7333,7181,7027,6869, 6708,6549,6393,6241,6085,5933,5788,5659,5532,5419,5315,5215,5115,5033,4928,4823,4712,4585,4438,4294, 4128,3953,3790,3622,3456,3297,3126,2975,2828,2678,2541,2419,2299,2184,2066,1966,1869,1782,1672,1571, 1442,1316,1161,997,828,654,470,292,125,-49,-207,-365,-505,-653,-788,-919,-1032,-1154,-1259,-1369, -1474,-1585,-1692,-1808,-1939,-2086,-2239,-2415,-2593,-2764,-2939,-3111,-3274,-3434,-3580,-3726,-3861,-3990,-4103,-4218, -4323,-4431,-4526,-4626,-4722,-4819,-4923,-5035,-5151,-5287,-5431,-5585,-5744,-5901,-6060,-6216,-6351,-6476,-6600,-6708, -6805,-6908,-6986,-7074,-7157,-7243,-7307,-7384,-7468,-7539,-7612,-7696,-7810,-7907,-8036,-8154,-8283,-8417,-8535,-8652, -8757,-8837,-8928,-8996,-9056,-9100,-9137,-9181,-9223,-9248,-9280,-9304,-9331,-9362,-9392,-9419,-9458,-9499,-9537,-9587, -9629,-9685,-9707,-9718,-9721,-9699,-9659,-9614,-9554,-9488,-9416,-9319,-9232,-9145,-9040,-8929,-8815,-8707,-8597,-8473, -8346,-8229,-8105,-7977,-7842,-7704,-7543,-7374,-7190,-6996,-6777,-6559,-6321,-6094,-5867,-5621,-5379,-5141,-4893,-4644, -4395,-4146,-3893,-3634,-3381,-3111,-2853,-2581,-2319,-2053,-1781,-1498,-1216,-946,-675,-406,-139,113,356,595, 832,1072,1290,1539,1767,2009,2226,2456,2677,2896,3112,3336,3541,3751,3940,4118,4294,4453,4587,4706, 4815,4909,5000,5068,5140,5220,5288,5356,5447,5512,5596,5657,5723,5789,5856,5894,5954,5987,6011,6011, 6000,5968,5928,5851,5791,5699,5625,5521,5435,5360,5301,5230,5178,5128,5078,5030,4976,4919,4875,4816, 4754,4678,4605,4497,4389,4275,4135,3982,3821,3673,3509,3360,3214,3087,2973,2878,2786,2709,2622,2545, 2470,2381,2299,2205,2093,1995,1873,1755,1615,1464,1295,1126,940,770,599,434,290,152,15,-88, -180,-265,-357,-443,-528,-635,-727,-837,-968,-1085,-1209,-1352,-1495,-1666,-1833,-2008,-2186,-2346,-2505,-2652, -2783,-2911,-3009,-3095,-3160,-3227,-3281,-3337,-3397,-3475,-3551,-3629,-3715,-3807,-3905,-3999,-4105,-4212,-4327,-4451, -4548,-4658,-4740,-4807,-4872,-4912,-4940,-4945,-4924,-4911,-4890,-4861,-4850,-4842,-4842,-4842,-4850,-4859,-4879,-4887, -4893,-4909,-4930,-4944,-4932,-4916,-4887,-4851,-4791,-4705,-4615,-4504,-4381,-4236,-4110,-3952,-3819,-3689,-3573,-3445, -3330,-3197,-3076,-2934,-2809,-2663,-2512,-2360,-2169,-1975,-1785,-1578,-1348,-1120,-870,-618,-354,-82,174,441, 702,951,1202,1449,1694,1937,2172,2422,2676,2917,3174,3427,3685,3946,4192,4447,4711,4950,5197,5415, 5643,5858,6075,6273,6483,6678,6862,7053,7225,7400,7575,7732,7902,8055,8221,8365,8502,8626,8757,8871, 8966,9048,9117,9180,9215,9257,9295,9331,9359,9407,9441,9485,9515,9534,9570,9589,9597,9612,9609,9607, 9574,9552,9517,9463,9390,9318,9223,9127,9021,8903,8800,8708,8606,8523,8445,8373,8296,8221,8148,8068, 7970,7870,7770,7657,7546,7409,7276,7130,6986,6820,6658,6483,6317,6135,5982,5834,5701,5570,5469,5370, 5266,5158,5051,4946,4835,4693,4569,4432,4288,4136,3963,3811,3644,3466,3297,3127,2949,2773,2609,2458, 2326,2195,2091,1985,1884,1775,1672,1553,1438,1301,1153,1013,837,673,504,340,179,1,-185,-358, -532,-684,-856,-996,-1119,-1243,-1362,-1455,-1557,-1650,-1749,-1882,-2002,-2132,-2290,-2431,-2583,-2745,-2908,-3085, -3230,-3388,-3552,-3714,-3850,-4011,-4125,-4273,-4381,-4471,-4576,-4657,-4734,-4818,-4916,-5022,-5124,-5257,-5387,-5529, -5677,-5822,-5961,-6107,-6246,-6380,-6513,-6646,-6764,-6885,-6980,-7081,-7171,-7244,-7313,-7381,-7440,-7499,-7572,-7654, -7752,-7853,-7963,-8077,-8194,-8307,-8425,-8535,-8647,-8739,-8824,-8909,-8978,-9048,-9107,-9144,-9186,-9219,-9239,-9245, -9260,-9266,-9282,-9305,-9337,-9384,-9414,-9449,-9489,-9515,-9544,-9555,-9562,-9549,-9531,-9484,-9460,-9398,-9338,-9267, -9188,-9090,-8986,-8872,-8767,-8643,-8524,-8407,-8301,-8180,-8070,-7942,-7820,-7687,-7535,-7376,-7206,-7024,-6830,-6639, -6427,-6211,-5991,-5768,-5535,-5297,-5065,-4822,-4569,-4329,-4082,-3847,-3598,-3361,-3116,-2856,-2604,-2343,-2077,-1804, -1529,-1262,-1002,-750,-481,-238,12,242,475,712,930,1155,1376,1583,1790,2007,2223,2428,2637,2841, 3046,3249,3445,3637,3799,3958,4086,4209,4332,4429,4515,4591,4669,4743,4792,4856,4907,4973,5019,5080, 5144,5202,5264,5323,5372,5435,5458,5480,5491,5472,5441,5389,5339,5265,5183,5112,5024,4948,4874,4797, 4731,4668,4610,4557,4512,4476,4439,4390,4352,4305,4248,4170,4083,3969,3852,3712,3573,3432,3283,3138, 3007,2880,2761,2640,2533,2426,2335,2249,2164,2100,2031,1961,1888,1799,1710,1603,1481,1352,1197,1032, 867,696,543,372,223,100,-40,-154,-273,-379,-469,-558,-642,-715,-790,-875,-966,-1055,-1149,-1267, -1401,-1536,-1700,-1860,-2025,-2195,-2347,-2488,-2619,-2736,-2839,-2940,-3020,-3108,-3165,-3222,-3287,-3339,-3397,-3446, -3507,-3575,-3650,-3725,-3826,-3923,-4033,-4143,-4262,-4365,-4467,-4541,-4612,-4662,-4689,-4712,-4719,-4724,-4716,-4707, -4686,-4682,-4654,-4640,-4621,-4618,-4630,-4615,-4619,-4639,-4656,-4661,-4662,-4670,-4647,-4603,-4553,-4489,-4410,-4300, -4186,-4062,-3939,-3800,-3666,-3529,-3385,-3255,-3109,-2959,-2827,-2687,-2547,-2398,-2256,-2098,-1936,-1757,-1576,-1385, -1176,-941,-711,-458,-203,61,326,573,832,1089,1336,1594,1836,2081,2308,2552,2796,3043,3280,3532, 3779,4032,4275,4511,4761,5008,5234,5463,5688,5905,6121,6319,6509,6704,6886,7050,7221,7385,7546,7698, 7852,8018,8163,8309,8460,8586,8708,8811,8913,8992,9061,9112,9174,9219,9267,9308,9327,9362,9400,9426, 9453,9473,9508,9521,9538,9556,9578,9583,9589,9584,9553,9507,9451,9383,9301,9205,9112,9011,8906,8822, 8715,8619,8537,8448,8357,8282,8198,8114,8022,7935,7852,7759,7654,7555,7428,7293,7145,6978,6817,6654, 6473,6309,6148,5999,5849,5711,5587,5466,5343,5228,5112,4999,4878,4760,4641,4510,4373,4235,4083,3917, 3744,3557,3367,3193,3007,2844,2677,2515,2372,2240,2121,2005,1891,1768,1662,1547,1438,1309,1183,1056, 918,766,616,446,279,99,-85,-260,-431,-611,-751,-908,-1039,-1157,-1279,-1397,-1497,-1625,-1730,-1849, -1969,-2099,-2236,-2372,-2513,-2672,-2822,-2993,-3156,-3324,-3511,-3687,-3849,-4005,-4157,-4279,-4412,-4517,-4628,-4739, -4829,-4935,-5045,-5139,-5261,-5378,-5508,-5645,-5774,-5908,-6057,-6203,-6350,-6500,-6642,-6789,-6921,-7036,-7151,-7243, -7332,-7395,-7469,-7546,-7610,-7673,-7743,-7827,-7900,-7997,-8086,-8187,-8289,-8385,-8488,-8595,-8685,-8801,-8888,-8980, -9062,-9135,-9193,-9229,-9260,-9286,-9298,-9316,-9330,-9346,-9357,-9393,-9410,-9437,-9469,-9502,-9527,-9543,-9560,-9578, -9579,-9576,-9563,-9547,-9523,-9477,-9414,-9344,-9255,-9148,-9055,-8942,-8827,-8716,-8600,-8480,-8370,-8243,-8132,-7985, -7849,-7709,-7551,-7383,-7210,-7020,-6822,-6620,-6416,-6201,-5966,-5720,-5488,-5222,-4978,-4719,-4469,-4221,-3975,-3722, -3483,-3215,-2956,-2693,-2423,-2154,-1892,-1603,-1344,-1066,-787,-529,-262,2,243,502,737,973,1209,1423, 1640,1851,2057,2261,2476,2681,2895,3107,3324,3509,3707,3897,4083,4244,4398,4538,4674,4786,4878,4974, 5050,5117,5186,5245,5289,5344,5397,5436,5513,5556,5624,5685,5745,5784,5825,5842,5849,5841,5815,5786, 5731,5672,5594,5504,5424,5327,5235,5138,5041,4954,4878,4805,4749,4692,4624,4571,4524,4461,4375,4292, 4195,4091,3969,3845,3712,3569,3422,3262,3119,2969,2826,2693,2570,2453,2348,2243,2161,2088,2007,1937, 1872,1784,1683,1584,1462,1337,1204,1062,912,760,596,447,291,137,10,-131,-255,-379,-478,-585, -676,-759,-839,-936,-1023,-1121,-1233,-1354,-1490,-1631,-1784,-1948,-2110,-2272,-2433,-2595,-2748,-2893,-3017,-3147, -3256,-3363,-3453,-3527,-3598,-3667,-3732,-3802,-3878,-3945,-4031,-4116,-4220,-4321,-4426,-4531,-4645,-4748,-4838,-4922, -5000,-5065,-5104,-5138,-5167,-5173,-5168,-5156,-5140,-5110,-5095,-5062,-5047,-5021,-5010,-5004,-5007,-5007,-5010,-5012, -5008,-5003,-4967,-4938,-4890,-4833,-4760,-4669,-4564,-4452,-4329,-4198,-4055,-3926,-3785,-3642,-3506,-3369,-3226,-3085, -2953,-2816,-2675,-2531,-2367,-2206,-2022,-1835,-1630,-1411,-1193,-947,-693,-442,-183,91,348,607,868,1126, 1390,1640,1902,2156,2415,2671,2928,3179,3438,3708,3954,4216,4480,4738,4987,5236,5485,5722,5948,6174, 6382,6592,6778,6957,7141,7310,7466,7640,7806,7964,8106,8238,8375,8495,8608,8717,8808,8906,8980,9044, 9100,9151,9182,9215,9253,9277,9293,9295,9312,9323,9340,9348,9368,9375,9387,9386,9382,9367,9351,9310, 9270,9218,9156,9081,8997,8927,8852,8750,8673,8578,8488,8399,8318,8237,8165,8082,8012,7930,7855,7773, 7678,7567,7462,7334,7203,7058,6910,6748,6585,6435,6273,6120,5959,5818,5665,5533,5391,5257,5136,5013, 4885,4772,4653,4528,4386,4242,4097,3941,3765,3592,3418,3253,3073,2907,2734,2584,2430,2286,2154,2023, 1893,1769,1653,1548,1433,1330,1222,1108,983,845,700,563,400,243,92,-62,-218,-366,-524,-653, -799,-930,-1048,-1167,-1288,-1397,-1510,-1614,-1718,-1837,-1947,-2087,-2207,-2353,-2499,-2667,-2824,-2992,-3154,-3323, -3482,-3641,-3786,-3938,-4072,-4212,-4335,-4452,-4565,-4676,-4801,-4906,-5012,-5128,-5241,-5356,-5486,-5617,-5766,-5905, -6047,-6198,-6345,-6484,-6617,-6744,-6863,-6977,-7078,-7161,-7246,-7328,-7390,-7468,-7536,-7617,-7683,-7740,-7826,-7901, -7986,-8080,-8176,-8287,-8380,-8475,-8584,-8674,-8760,-8834,-8902,-8958,-9012,-9048,-9081,-9118,-9148,-9172,-9208,-9238, -9257,-9288,-9320,-9346,-9383,-9425,-9456,-9495,-9529,-9548,-9568,-9583,-9576,-9560,-9535,-9489,-9441,-9383,-9308,-9235, -9143,-9057,-8961,-8858,-8759,-8636,-8514,-8399,-8267,-8137,-7988,-7836,-7687,-7528,-7345,-7162,-6966,-6755,-6533,-6305, -6073,-5839,-5597,-5351,-5093,-4841,-4592,-4326,-4066,-3806,-3535,-3270,-3003,-2733,-2454,-2172,-1912,-1644,-1377,-1104, -846,-577,-317,-64,187,427,657,893,1116,1339,1565,1781,1994,2211,2427,2646,2853,3064,3271,3466, 3654,3833,4002,4166,4321,4450,4582,4689,4795,4878,4958,5041,5114,5186,5257,5332,5401,5462,5534,5596, 5659,5707,5762,5799,5827,5838,5832,5817,5782,5743,5680,5616,5541,5458,5374,5288,5197,5110,5032,4959, 4899,4831,4763,4710,4653,4583,4523,4444,4363,4271,4154,4045,3919,3789,3645,3506,3353,3212,3069,2932, 2810,2688,2577,2485,2387,2308,2219,2145,2067,1986,1890,1806,1698,1588,1460,1321,1176,1031,867,708, 552,396,247,103,-36,-159,-280,-383,-487,-589,-686,-783,-894,-988,-1098,-1219,-1350,-1474,-1627,-1781, -1953,-2114,-2278,-2457,-2612,-2765,-2903,-3047,-3174,-3291,-3390,-3487,-3569,-3651,-3724,-3800,-3870,-3948,-4029,-4115, -4206,-4289,-4390,-4502,-4602,-4709,-4805,-4890,-4974,-5042,-5103,-5143,-5180,-5197,-5205,-5201,-5197,-5175,-5149,-5126, -5111,-5083,-5064,-5056,-5038,-5028,-5024,-5020,-5014,-5007,-4990,-4959,-4927,-4868,-4803,-4725,-4637,-4538,-4426,-4300, -4172,-4037,-3905,-3771,-3633,-3488,-3370,-3225,-3096,-2963,-2817,-2681,-2532,-2379,-2209,-2029,-1828,-1631,-1409,-1180, -943,-696,-443,-184,73,328,591,860,1112,1367,1622,1876,2125,2378,2636,2878,3141,3392,3650,3907, 4170,4420,4681,4934,5179,5416,5636,5849,6068,6261,6452,6642,6827,7003,7170,7327,7495,7647,7802,7944, 8089,8225,8352,8475,8586,8684,8773,8860,8931,8995,9037,9070,9103,9132,9153,9186,9215,9234,9255,9275, 9293,9313,9328,9342,9348,9356,9339,9313,9276,9246,9195,9132,9061,8983,8889,8785,8684,8591,8493,8401, 8314,8225,8149,8065,7982,7900,7817,7724,7627,7529,7417,7292,7162,7022,6874,6720,6560,6401,6230,6059, 5892,5742,5595,5443,5321,5193,5070,4951,4830,4721,4608,4485,4362,4229,4099,3953,3798,3643,3478,3312, 3144,2973,2807,2643,2487,2338,2200,2065,1947,1832,1725,1619,1511,1396,1291,1178,1048,919,787,645, 488,330,163,-2,-170,-331,-494,-653,-808,-949,-1084,-1217,-1334,-1447,-1570,-1676,-1785,-1910,-2032,-2154, -2298,-2437,-2584,-2740,-2899,-3058,-3237,-3407,-3577,-3738,-3894,-4043,-4191,-4332,-4464,-4582,-4696,-4811,-4913,-5021, -5119,-5233,-5353,-5475,-5589,-5726,-5857,-5997,-6141,-6288,-6437,-6582,-6715,-6848,-6971,-7086,-7198,-7289,-7385,-7468, -7540,-7604,-7668,-7735,-7792,-7867,-7942,-8026,-8101,-8194,-8286,-8391,-8484,-8584,-8689,-8778,-8854,-8943,-9008,-9065, -9118,-9165,-9196,-9229,-9248,-9257,-9273,-9280,-9289,-9308,-9330,-9354,-9378,-9403,-9433,-9464,-9490,-9509,-9519,-9527, -9519,-9499,-9464,-9424,-9369,-9303,-9226,-9152,-9049,-8949,-8838,-8736,-8621,-8502,-8379,-8264,-8142,-8008,-7882,-7739, -7588,-7432,-7261,-7084,-6900,-6698,-6484,-6275,-6042,-5808,-5571,-5333,-5087,-4845,-4589,-4347,-4083,-3830,-3564,-3316, -3063,-2805,-2542,-2289,-2025,-1764,-1500,-1241,-982,-722,-466,-215,33,268,510,736,956,1181,1400,1613, 1828,2046,2253,2474,2673,2884,3081,3278,3460,3651,3820,3985,4133,4271,4410,4533,4635,4731,4815,4903, 4974,5042,5108,5182,5245,5314,5382,5450,5507,5566,5612,5655,5682,5707,5707,5703,5685,5644,5605,5555, 5481,5399,5325,5235,5141,5058,4966,4887,4816,4745,4684,4625,4564,4504,4440,4362,4283,4192,4094,3986, 3874,3753,3620,3487,3339,3198,3064,2927,2798,2669,2545,2437,2346,2257,2178,2103,2039,1963,1882,1792, 1705,1596,1484,1372,1241,1107,953,806,665,519,369,234,93,-24,-149,-264,-361,-458,-546,-629, -712,-811,-917,-1030,-1145,-1277,-1415,-1562,-1726,-1884,-2049,-2214,-2382,-2526,-2687,-2828,-2964,-3089,-3207,-3310, -3411,-3498,-3579,-3652,-3727,-3806,-3887,-3983,-4069,-4161,-4270,-4380,-4482,-4594,-4691,-4784,-4875,-4955,-5020,-5082, -5122,-5154,-5168,-5178,-5176,-5155,-5132,-5112,-5082,-5048,-5022,-5005,-4990,-4972,-4963,-4965,-4949,-4940,-4915,-4892, -4856,-4808,-4744,-4680,-4595,-4502,-4389,-4279,-4162,-4032,-3892,-3756,-3608,-3470,-3334,-3184,-3059,-2922,-2788,-2644, -2504,-2341,-2179,-1997,-1814,-1618,-1405,-1177,-948,-700,-455,-193,60,319,587,851,1114,1380,1641,1905, 2156,2421,2672,2933,3190,3447,3708,3974,4234,4493,4742,4992,5229,5464,5693,5916,6129,6327,6524,6715, 6899,7066,7244,7410,7571,7730,7879,8023,8164,8299,8435,8552,8665,8767,8856,8932,9003,9060,9115,9165, 9203,9247,9276,9308,9337,9372,9405,9442,9487,9506,9536,9555,9575,9585,9592,9595,9567,9540,9499,9439, 9381,9303,9236,9158,9076,8993,8903,8819,8729,8650,8567,8491,8415,8335,8240,8155,8061,7956,7847,7724, 7582,7446,7282,7123,6951,6782,6616,6442,6267,6106,5959,5797,5638,5511,5372,5245,5112,4992,4868,4741, 4612,4474,4333,4190,4032,3873,3707,3531,3358,3192,3025,2862,2701,2559,2421,2289,2160,2046,1937,1822, 1717,1608,1514,1398,1278,1156,1006,871,720,566,410,238,70,-93,-256,-423,-578,-721,-865,-999, -1129,-1258,-1383,-1507,-1634,-1756,-1884,-2017,-2161,-2308,-2461,-2627,-2801,-2978,-3150,-3322,-3498,-3683,-3844,-4005, -4163,-4305,-4439,-4560,-4680,-4804,-4930,-5036,-5143,-5261,-5374,-5491,-5611,-5742,-5890,-6026,-6167,-6306,-6446,-6589, -6729,-6864,-6991,-7103,-7208,-7301,-7392,-7470,-7541,-7617,-7687,-7755,-7819,-7891,-7964,-8042,-8128,-8220,-8313,-8412, -8509,-8607,-8702,-8802,-8895,-8986,-9062,-9135,-9190,-9244,-9280,-9320,-9342,-9375,-9403,-9427,-9457,-9479,-9510,-9544, -9568,-9613,-9648,-9681,-9705,-9728,-9757,-9764,-9767,-9753,-9725,-9694,-9642,-9584,-9507,-9429,-9334,-9227,-9127,-9021, -8905,-8779,-8664,-8551,-8418,-8286,-8149,-8007,-7849,-7686,-7514,-7333,-7143,-6929,-6719,-6498,-6266,-6029,-5785,-5539, -5292,-5040,-4784,-4538,-4290,-4029,-3786,-3528,-3269,-3014,-2752,-2492,-2229,-1963,-1694,-1427,-1160,-893,-630,-380, -130,110,349,580,801,1034,1246,1462,1684,1896,2108,2318,2519,2729,2935,3128,3327,3511,3708,3874, 4042,4193,4339,4460,4568,4669,4756,4836,4911,4984,5056,5125,5186,5248,5323,5381,5440,5501,5552,5590, 5623,5654,5659,5665,5649,5630,5591,5543,5478,5394,5315,5220,5129,5051,4965,4894,4822,4753,4688,4629, 4569,4505,4441,4378,4294,4221,4124,4032,3927,3811,3683,3561,3414,3261,3111,2980,2830,2702,2581,2479, 2370,2272,2179,2107,2023,1938,1852,1770,1666,1560,1448,1333,1204,1065,929,778,621,455,304,141, 0,-132,-257,-376,-481,-576,-675,-769,-853,-950,-1046,-1154,-1268,-1386,-1527,-1661,-1797,-1946,-2104,-2264, -2411,-2568,-2727,-2868,-3007,-3132,-3248,-3351,-3439,-3512,-3595,-3659,-3728,-3801,-3889,-3971,-4063,-4149,-4254,-4355, -4454,-4557,-4659,-4771,-4857,-4945,-5021,-5096,-5161,-5204,-5230,-5248,-5246,-5240,-5232,-5216,-5200,-5190,-5169,-5166, -5163,-5160,-5157,-5161,-5162,-5150,-5151,-5127,-5116,-5077,-5038,-4991,-4941,-4866,-4770,-4669,-4556,-4431,-4295,-4165, -4034,-3904,-3772,-3643,-3514,-3388,-3261,-3121,-2990,-2842,-2687,-2522,-2344,-2157,-1965,-1750,-1537,-1314,-1070,-815, -556,-300,-27,240,501,765,1029,1291,1545,1807,2072,2329,2592,2859,3125,3400,3669,3935,4207,4470, 4733,4993,5234,5481,5717,5947,6168,6389,6596,6795,6979,7165,7345,7524,7696,7865,8021,8172,8319,8465, 8591,8714,8821,8928,9023,9104,9167,9228,9283,9333,9369,9408,9445,9479,9501,9531,9564,9600,9630,9654, 9674,9678,9684,9684,9671,9645,9620,9580,9531,9468,9407,9337,9255,9179,9097,9018,8934,8858,8784,8711, 8640,8569,8497,8419,8342,8245,8149,8047,7929,7805,7672,7535,7392,7235,7091,6922,6767,6616,6464,6306, 6163,6029,5887,5762,5650,5522,5404,5286,5161,5031,4893,4746,4592,4442,4281,4117,3947,3779,3614,3446, 3282,3120,2973,2825,2688,2560,2428,2320,2200,2093,1979,1861,1750,1624,1489,1345,1196,1039,884,719, 549,392,230,70,-98,-253,-402,-543,-681,-813,-939,-1067,-1183,-1306,-1425,-1554,-1686,-1829,-1973,-2133, -2303,-2474,-2644,-2818,-2987,-3158,-3321,-3483,-3642,-3797,-3945,-4082,-4220,-4345,-4462,-4572,-4689,-4804,-4922,-5029, -5157,-5285,-5415,-5551,-5709,-5852,-5998,-6142,-6282,-6415,-6548,-6664,-6781,-6893,-6995,-7091,-7177,-7256,-7334,-7404, -7478,-7546,-7620,-7697,-7781,-7863,-7961,-8054,-8163,-8270,-8373,-8482,-8569,-8663,-8751,-8822,-8893,-8958,-9018,-9068, -9109,-9148,-9190,-9223,-9248,-9284,-9316,-9351,-9390,-9426,-9470,-9515,-9553,-9599,-9635,-9662,-9679,-9691,-9681,-9671, -9641,-9607,-9564,-9513,-9434,-9361,-9275,-9197,-9091,-8998,-8892,-8789,-8674,-8564,-8446,-8324,-8185,-8041,-7895,-7741, -7562,-7385,-7188,-6989,-6773,-6554,-6332,-6108,-5870,-5628,-5378,-5135,-4890,-4641,-4390,-4144,-3893,-3639,-3393,-3127, -2866,-2598,-2330,-2067,-1806,-1536,-1274,-1009,-767,-515,-267,-23,209,443,675,901,1122,1346,1564,1776, 1990,2196,2417,2628,2844,3043,3246,3432,3614,3775,3932,4076,4196,4317,4425,4515,4605,4694,4783,4860, 4934,5008,5075,5147,5212,5268,5331,5385,5442,5485,5521,5537,5545,5528,5499,5455,5400,5326,5264,5186, 5095,5014,4943,4866,4806,4730,4661,4600,4525,4468,4408,4349,4285,4218,4145,4061,3961,3857,3731,3604, 3462,3323,3180,3040,2903,2775,2656,2545,2441,2344,2253,2167,2077,1992,1909,1838,1749,1660,1556,1456, 1343,1207,1065,916,757,596,440,293,143,0,-130,-244,-355,-459,-564,-660,-755,-852,-951,-1051, -1154,-1260,-1381,-1497,-1633,-1773,-1929,-2088,-2246,-2406,-2562,-2716,-2841,-2964,-3072,-3172,-3265,-3339,-3411,-3475, -3543,-3611,-3677,-3749,-3821,-3894,-3963,-4046,-4123,-4217,-4314,-4414,-4499,-4597,-4683,-4756,-4800,-4840,-4865,-4878, -4885,-4870,-4860,-4847,-4827,-4814,-4802,-4781,-4773,-4764,-4755,-4749,-4745,-4739,-4738,-4740,-4732,-4718,-4692,-4660, -4608,-4543,-4454,-4363,-4262,-4146,-4021,-3896,-3780,-3647,-3525,-3396,-3280,-3153,-3023,-2883,-2750,-2608,-2467,-2315, -2154,-1988,-1810,-1614,-1408,-1187,-953,-716,-466,-209,47,305,556,810,1073,1319,1567,1807,2062,2311, 2555,2809,3067,3315,3567,3815,4069,4314,4567,4809,5059,5299,5526,5742,5962,6164,6362,6558,6740,6931, 7098,7262,7425,7595,7756,7902,8055,8208,8338,8474,8595,8711,8806,8893,8969,9045,9096,9146,9189,9232, 9268,9303,9337,9369,9398,9422,9449,9475,9496,9507,9519,9520,9514,9502,9476,9432,9385,9326,9254,9171, 9085,8991,8891,8803,8705,8620,8538,8457,8368,8286,8197,8117,8024,7936,7838,7738,7628,7506,7376,7239, 7098,6940,6781,6623,6453,6287,6126,5966,5826,5689,5562,5433,5322,5195,5086,4958,4844,4723,4595,4461, 4330,4183,4033,3877,3723,3551,3379,3205,3043,2873,2714,2561,2411,2279,2157,2039,1926,1814,1699,1586, 1453,1337,1205,1065,922,779,624,465,299,130,-40,-210,-378,-540,-696,-845,-987,-1123,-1240,-1355, -1473,-1579,-1696,-1818,-1942,-2068,-2203,-2345,-2486,-2628,-2788,-2938,-3101,-3268,-3423,-3583,-3737,-3878,-4017,-4152, -4279,-4390,-4496,-4597,-4687,-4784,-4881,-4987,-5098,-5217,-5333,-5460,-5588,-5722,-5849,-5989,-6122,-6259,-6399,-6520, -6646,-6752,-6861,-6960,-7045,-7129,-7200,-7264,-7325,-7386,-7448,-7525,-7602,-7692,-7778,-7870,-7962,-8068,-8163,-8257, -8348,-8447,-8533,-8615,-8691,-8764,-8822,-8874,-8916,-8950,-8963,-8982,-8998,-9013,-9034,-9052,-9087,-9101,-9154,-9177, -9209,-9241,-9263,-9286,-9296,-9297,-9305,-9283,-9266,-9231,-9186,-9127,-9059,-8974,-8889,-8789,-8690,-8581,-8481,-8374, -8260,-8162,-8045,-7930,-7803,-7673,-7536,-7392,-7227,-7062,-6886,-6708,-6513,-6308,-6099,-5887,-5663,-5432,-5204,-4968, -4725,-4493,-4256,-4016,-3773,-3528,-3285,-3037,-2781,-2529,-2265,-2009,-1739,-1483,-1227,-974,-723,-471,-229,13, 254,493,719,936,1156,1372,1584,1801,2014,2226,2442,2645,2861,3063,3268,3454,3636,3800,3958,4093, 4218,4352,4459,4561,4650,4733,4812,4882,4939,5013,5066,5125,5189,5255,5321,5388,5444,5497,5544,5565, 5566,5572,5552,5512,5468,5411,5351,5282,5211,5134,5056,4979,4901,4823,4739,4687,4621,4570,4522,4478, 4438,4377,4321,4241,4150,4049,3938,3825,3676,3546,3414,3279,3146,3018,2897,2780,2661,2547,2438,2342, 2266,2189,2129,2050,1981,1898,1802,1707,1598,1462,1327,1183,1029,874,717,568,418,276,133,9, -118,-238,-358,-459,-557,-648,-737,-821,-914,-1014,-1126,-1251,-1381,-1534,-1688,-1851,-2020,-2188,-2354,-2504, -2644,-2777,-2916,-3019,-3127,-3231,-3324,-3405,-3483,-3550,-3610,-3677,-3744,-3805,-3889,-3972,-4067,-4162,-4273,-4378, -4486,-4590,-4681,-4756,-4812,-4867,-4912,-4932,-4949,-4953,-4952,-4949,-4931,-4907,-4877,-4854,-4827,-4803,-4785,-4777, -4772,-4771,-4772,-4782,-4772,-4764,-4737,-4701,-4654,-4586,-4507,-4417,-4304,-4194,-4087,-3959,-3837,-3702,-3565,-3424, -3284,-3141,-3005,-2862,-2724,-2591,-2443,-2302,-2141,-1979,-1789,-1600,-1396,-1170,-943,-701,-447,-189,65,327, 585,849,1110,1368,1628,1895,2146,2404,2663,2914,3177,3425,3682,3939,4202,4454,4705,4956,5205,5456, 5690,5922,6144,6356,6559,6757,6943,7129,7300,7481,7649,7817,7977,8132,8293,8450,8587,8730,8851,8966, 9070,9162,9240,9306,9369,9419,9476,9517,9552,9574,9600,9628,9652,9672,9705,9724,9750,9763,9785,9795, 9803,9793,9773,9742,9688,9625,9551,9472,9384,9295,9207,9117,9024,8925,8830,8739,8654,8562,8488,8398, 8316,8234,8143,8056,7960,7847,7724,7589,7439,7288,7106,6938,6770,6611,6441,6290,6134,5982,5849,5705, 5575,5453,5323,5208,5089,4973,4848,4717,4597,4458,4309,4152,3977,3806,3623,3436,3259,3093,2930,2769, 2621,2479,2345,2223,2093,1978,1853,1726,1619,1489,1378,1245,1105,965,814,645,478,296,113,-70, -244,-426,-590,-749,-885,-1030,-1156,-1287,-1408,-1533,-1653,-1781,-1902,-2025,-2153,-2285,-2436,-2580,-2733,-2898, -3071,-3243,-3414,-3592,-3765,-3926,-4073,-4209,-4344,-4451,-4565,-4677,-4782,-4887,-4998,-5101,-5210,-5315,-5425,-5542, -5674,-5806,-5941,-6082,-6225,-6372,-6514,-6645,-6793,-6923,-7041,-7133,-7238,-7316,-7395,-7466,-7536,-7616,-7694,-7768, -7853,-7939,-8026,-8117,-8217,-8324,-8421,-8534,-8651,-8763,-8872,-8976,-9072,-9165,-9235,-9288,-9332,-9374,-9401,-9426, -9453,-9481,-9510,-9532,-9563,-9601,-9619,-9651,-9674,-9704,-9728,-9750,-9762,-9779,-9778,-9767,-9744,-9709,-9653,-9592, -9509,-9411,-9305,-9196,-9084,-8968,-8858,-8732,-8605,-8485,-8352,-8207,-8072,-7916,-7768,-7607,-7433,-7262,-7086,-6882, -6687,-6471,-6241,-6009,-5759,-5514,-5280,-5020,-4772,-4520,-4270,-4018,-3769,-3517,-3257,-2987,-2722,-2455,-2187,-1917, -1648,-1376,-1106,-834,-563,-296,-38,224,472,727,960,1194,1431,1648,1870,2092,2310,2541,2766,2976, 3203,3411,3621,3811,4000,4186,4349,4510,4657,4803,4922,5024,5120,5196,5264,5318,5386,5446,5500,5553, 5616,5678,5737,5797,5853,5896,5934,5951,5954,5951,5939,5904,5872,5817,5756,5682,5580,5482,5392,5285, 5191,5098,5014,4935,4865,4807,4753,4696,4646,4586,4508,4427,4340,4237,4123,4011,3879,3743,3607,3467, 3306,3157,3002,2857,2709,2584,2475,2365,2269,2186,2108,2025,1953,1860,1773,1655,1537,1400,1269,1128, 967,814,657,491,327,155,-5,-156,-306,-442,-562,-666,-768,-856,-948,-1020,-1122,-1210,-1318,-1434, -1568,-1712,-1858,-2011,-2160,-2316,-2474,-2624,-2775,-2926,-3075,-3204,-3311,-3432,-3516,-3595,-3655,-3719,-3778,-3823, -3874,-3938,-4003,-4083,-4181,-4272,-4373,-4478,-4573,-4671,-4768,-4843,-4927,-4996,-5051,-5102,-5132,-5162,-5167,-5157, -5140,-5106,-5074,-5049,-5017,-4997,-4983,-4968,-4974,-4971,-4977,-4991,-4996,-4989,-4972,-4945,-4905,-4852,-4788,-4717, -4629,-4530,-4425,-4297,-4156,-4021,-3875,-3731,-3590,-3440,-3300,-3179,-3034,-2907,-2769,-2649,-2499,-2333,-2157,-1980, -1777,-1570,-1346,-1130,-900,-647,-394,-145,121,375,636,892,1157,1413,1676,1917,2166,2412,2663,2906, 3150,3406,3663,3902,4163,4423,4674,4926,5152,5403,5624,5847,6053,6276,6463,6665,6841,7021,7204,7376, 7541,7718,7881,8042,8184,8315,8458,8588,8698,8815,8898,8993,9067,9134,9193,9238,9273,9304,9326,9345, 9373,9387,9414,9444,9463,9489,9523,9537,9538,9531,9505,9483,9436,9385,9334,9258,9184,9097,9006,8909, 8819,8714,8607,8514,8415,8324,8246,8171,8102,8032,7966,7879,7796,7687,7572,7456,7327,7182,7035,6885, 6728,6573,6419,6267,6111,5956,5810,5677,5547,5428,5317,5213,5108,5021,4914,4807,4694,4569,4428,4287, 4125,3958,3800,3635,3471,3311,3141,2987,2836,2683,2543,2413,2289,2167,2044,1938,1837,1744,1633,1528, 1401,1276,1124,966,802,634,455,279,115,-57,-216,-375,-519,-671,-809,-945,-1063,-1189,-1298,-1412, -1516,-1631,-1739,-1854,-1983,-2126,-2276,-2444,-2615,-2782,-2952,-3121,-3282,-3441,-3590,-3737,-3876,-4008,-4126,-4244, -4353,-4464,-4563,-4665,-4763,-4861,-4965,-5074,-5189,-5322,-5462,-5611,-5765,-5917,-6073,-6227,-6362,-6488,-6615,-6727, -6828,-6935,-7019,-7110,-7196,-7285,-7352,-7432,-7514,-7585,-7658,-7740,-7849,-7944,-8067,-8181,-8305,-8433,-8549,-8664, -8767,-8848,-8940,-9010,-9072,-9120,-9160,-9206,-9247,-9274,-9305,-9329,-9355,-9382,-9409,-9434,-9466,-9504,-9535,-9581, -9618,-9668,-9688,-9697,-9698,-9677,-9638,-9595,-9538,-9472,-9401,-9306,-9220,-9131,-9025,-8914,-8800,-8689,-8574,-8449, -8321,-8201,-8074,-7943,-7806,-7666,-7504,-7334,-7152,-6958,-6741,-6525,-6289,-6062,-5835,-5590,-5349,-5109,-4861,-4612, -4362,-4112,-3859,-3599,-3346,-3076,-2818,-2546,-2284,-2018,-1747,-1465,-1184,-915,-643,-374,-109,142,386,626, 864,1103,1322,1567,1794,2032,2247,2474,2692,2909,3122,3343,3545,3752,3939,4117,4292,4451,4587,4706, 4816,4912,5004,5072,5144,5222,5289,5355,5441,5503,5581,5640,5703,5766,5829,5867,5925,5957,5981,5982, 5972,5943,5907,5835,5775,5687,5615,5514,5428,5353,5291,5219,5163,5109,5056,5005,4949,4891,4844,4785, 4724,4649,4576,4470,4365,4253,4117,3968,3810,3665,3503,3354,3208,3080,2963,2865,2768,2688,2598,2516, 2439,2348,2265,2171,2061,1963,1842,1726,1588,1439,1274,1108,925,756,587,422,276,139,0,-106, -201,-290,-385,-473,-560,-666,-758,-868,-996,-1112,-1234,-1374,-1515,-1682,-1845,-2017,-2193,-2351,-2509,-2656, -2788,-2916,-3017,-3105,-3172,-3242,-3298,-3356,-3417,-3495,-3569,-3647,-3731,-3820,-3916,-4007,-4112,-4217,-4329,-4451, -4547,-4656,-4739,-4806,-4872,-4914,-4944,-4952,-4934,-4923,-4904,-4877,-4865,-4858,-4856,-4854,-4861,-4868,-4886,-4892, -4896,-4911,-4930,-4941,-4930,-4913,-4885,-4848,-4789,-4705,-4615,-4506,-4384,-4241,-4115,-3958,-3825,-3694,-3576,-3447, -3329,-3195,-3072,-2929,-2801,-2655,-2502,-2350,-2159,-1966,-1776,-1569,-1341,-1113,-864,-613,-349,-79,176,443, 703,953,1205,1452,1697,1941,2177,2427,2681,2922,3179,3431,3689,3948,4195,4449,4713,4952,5198,5417, 5645,5860,6077,6275,6485,6680,6864,7054,7226,7401,7576,7732,7902,8055,8220,8364,8501,8625,8756,8869, 8964,9047,9116,9179,9215,9258,9296,9332,9359,9406,9440,9482,9512,9531,9566,9585,9593,9607,9604,9602, 9570,9547,9512,9460,9387,9315,9221,9126,9020,8903,8800,8708,8605,8522,8443,8371,8293,8218,8145,8065, 7967,7866,7767,7654,7543,7407,7274,7129,6986,6820,6659,6484,6318,6136,5983,5835,5702,5571,5469,5369, 5265,5157,5049,4944,4833,4692,4568,4431,4287,4135,3962,3811,3644,3466,3297,3128,2949,2773,2609,2458, 2326,2195,2090,1984,1882,1774,1671,1552,1436,1300,1152,1012,836,672,503,339,178,-2,-149,-318, -372,-509,-652,-848,-1055,-1281,-1474,-1656,-1775,-1854,-1864,-1834,-1751,-1644,-1499,-1340,-1158,-992,-824,-670, -518,-380,-232,-103,24,132,237,334,434,535,654,788,939,1115,1322,1550,1804,2065,2342,2620, 2902,3176,3437,3678,3924,4154,4378,4601,4812,5006,5170,5305,5420,5534,5641,5763,5894,6052,6224,6411, 6601,6802,6999,7201,7416,7643,7874,8109,8379,8675,8989,9323,9663,9986,10282,10555,10809,11045,11256,11457, 11645,11800,11933,12035,12118,12150,12138,12080,11964,11804,11607,11382,11143,10909,10672,10427,10181,9906,9627,9325, 9018,8709,8409,8107,7824,7549,7296,7059,6819,6600,6379,6143,5901,5653,5405,5180,4967,4768,4599,4415, 4217,4018,3810,3574,3332,3079,2835,2590,2373,2188,2016,1869,1752,1653,1550,1460,1361,1293,1246,1225, 1219,1227,1257,1286,1320,1347,1356,1339,1302,1253,1182,1112,1048,1004,979,953,949,938,915,891, 857,810,762,707,662,610,557,502,431,340,235,91,-80,-281,-488,-693,-894,-1088,-1267,-1434, -1584,-1728,-1873,-2020,-2166,-2317,-2462,-2607,-2754,-2900,-3032,-3160,-3287,-3429,-3586,-3758,-3948,-4142,-4344,-4539, -4715,-4867,-4989,-5085,-5165,-5227,-5289,-5337,-5383,-5435,-5498,-5556,-5605,-5650,-5684,-5719,-5748,-5775,-5833,-5898, -5988,-6099,-6218,-6339,-6445,-6534,-6608,-6658,-6691,-6705,-6713,-6727,-6757,-6797,-6854,-6930,-7019,-7113,-7203,-7311, -7413,-7534,-7668,-7834,-8018,-8231,-8448,-8687,-8915,-9118,-9308,-9479,-9625,-9755,-9869,-9986,-10109,-10250,-10410,-10585, -10751,-10910,-11053,-11190,-11315,-11422,-11539,-11659,-11788,-11913,-12027,-12122,-12173,-12188,-12147,-12051,-11888,-11679,-11448,-11206, -10953,-10703,-10444,-10191,-9909,-9607,-9282,-8923,-8537,-8145,-7734,-7320,-6890,-6450,-6006,-5546,-5077,-4590,-4089,-3577, -3066,-2564,-2081,-1614,-1171,-753,-354,34,417,797,1168,1540,1902,2265,2624,2968,3316,3661,4014,4364, 4700,5025,5334,5625,5893,6134,6359,6578,6790,7004,7216,7432,7636,7849,8041,8224,8392,8534,8672,8796, 8909,9012,9106,9179,9222,9233,9193,9119,9005,8850,8674,8480,8287,8100,7917,7745,7591,7428,7265,7096, 6919,6719,6504,6292,6091,5886,5691,5496,5295,5076,4854,4610,4358,4096,3840,3602,3385,3201,3043,2930, 2858,2799,2753,2705,2643,2578,2497,2420,2343,2269,2207,2159,2099,2043,1977,1896,1802,1708,1608,1511, 1428,1373,1342,1329,1329,1339,1345,1336,1304,1255,1183,1092,991,890,778,661,546,414,272,101, -80,-276,-490,-705,-919,-1117,-1295,-1453,-1595,-1723,-1855,-2002,-2150,-2313,-2498,-2702,-2907,-3110,-3308,-3512, -3699,-3891,-4085,-4289,-4498,-4709,-4916,-5121,-5305,-5462,-5584,-5681,-5742,-5782,-5806,-5833,-5863,-5906,-5963,-6025, -6100,-6176,-6239,-6292,-6337,-6371,-6401,-6434,-6484,-6537,-6594,-6653,-6699,-6730,-6747,-6735,-6725,-6699,-6675,-6657, -6665,-6694,-6751,-6827,-6923,-7024,-7119,-7207,-7293,-7366,-7441,-7518,-7595,-7686,-7777,-7863,-7941,-8001,-8027,-8032, -8010,-7966,-7902,-7828,-7757,-7685,-7617,-7545,-7453,-7351,-7210,-7043,-6833,-6598,-6320,-6015,-5681,-5322,-4938,-4516, -4055,-3564,-3031,-2470,-1879,-1271,-659,-48,557,1146,1736,2301,2856,3401,3923,4428,4909,5357,5789,6185, 6562,6920,7256,7565,7867,8142,8394,8620,8804,8959,9071,9159,9238,9304,9366,9441,9509,9570,9619,9658, 9670,9674,9658,9635,9605,9573,9549,9528,9520,9509,9488,9463,9420,9363,9294,9228,9166,9122,9086,9075, 9073,9073,9057,9033,8985,8910,8814,8694,8566,8429,8290,8155,8024,7894,7753,7593,7428,7243,7049,6841, 6648,6460,6285,6120,5968,5817,5664,5497,5321,5126,4915,4696,4474,4247,4041,3842,3664,3495,3337,3168, 3003,2842,2673,2514,2358,2224,2110,2007,1920,1850,1776,1700,1618,1531,1432,1324,1216,1126,1032,965, 901,843,797,751,688,631,558,489,417,350,293,247,204,183,153,121,69,8,-66,-149, -259,-360,-467,-565,-667,-768,-864,-967,-1087,-1200,-1331,-1460,-1598,-1735,-1858,-1973,-2079,-2176,-2270,-2373, -2486,-2617,-2753,-2901,-3061,-3223,-3374,-3527,-3661,-3798,-3919,-4029,-4145,-4265,-4380,-4506,-4618,-4729,-4834,-4915, -4983,-5046,-5092,-5145,-5207,-5275,-5357,-5449,-5539,-5634,-5725,-5799,-5866,-5917,-5962,-6000,-6042,-6083,-6138,-6197, -6264,-6330,-6405,-6474,-6522,-6573,-6632,-6683,-6760,-6846,-6953,-7082,-7221,-7364,-7521,-7671,-7805,-7939,-8062,-8187, -8312,-8438,-8592,-8739,-8903,-9060,-9216,-9357,-9486,-9594,-9696,-9791,-9890,-9981,-10090,-10208,-10321,-10422,-10522,-10593, -10633,-10643,-10619,-10572,-10495,-10400,-10293,-10176,-10038,-9887,-9703,-9501,-9268,-9000,-8715,-8408,-8075,-7740,-7388,-7037, -6675,-6304,-5913,-5508,-5081,-4646,-4197,-3742,-3292,-2844,-2398,-1971,-1550,-1138,-734,-342,48,423,801,1171, 1545,1913,2281,2649,3003,3363,3718,4058,4380,4696,4988,5263,5525,5781,6023,6261,6491,6721,6942,7143, 7332,7511,7676,7837,7985,8136,8280,8429,8566,8696,8806,8884,8926,8941,8910,8845,8752,8632,8507,8374, 8231,8080,7927,7761,7582,7393,7190,6985,6780,6583,6400,6220,6056,5893,5726,5557,5367,5164,4947,4704, 4466,4222,3988,3775,3582,3399,3248,3101,2962,2823,2692,2568,2459,2354,2275,2209,2156,2118,2077,2033, 1989,1919,1845,1752,1643,1541,1441,1346,1274,1203,1145,1089,1033,963,880,792,702,611,517,430, 348,259,171,73,-45,-178,-334,-509,-704,-909,-1113,-1306,-1494,-1666,-1833,-1992,-2149,-2312,-2477,-2651, -2819,-2985,-3148,-3298,-3439,-3576,-3706,-3839,-3973,-4112,-4273,-4448,-4626,-4801,-4970,-5122,-5249,-5356,-5449,-5520, -5577,-5629,-5677,-5730,-5777,-5817,-5858,-5893,-5909,-5928,-5938,-5954,-5977,-6009,-6061,-6134,-6212,-6295,-6373,-6443, -6496,-6525,-6541,-6542,-6538,-6537,-6535,-6543,-6560,-6588,-6615,-6643,-6673,-6687,-6708,-6728,-6757,-6798,-6850,-6920, -7001,-7072,-7137,-7181,-7205,-7205,-7170,-7113,-7043,-6948,-6848,-6742,-6628,-6509,-6368,-6212,-6037,-5826,-5604,-5359, -5103,-4828,-4547,-4247,-3932,-3596,-3226,-2831,-2406,-1953,-1475,-975,-473,44,561,1069,1575,2071,2563,3045, 3508,3957,4393,4806,5197,5569,5916,6262,6590,6917,7236,7540,7828,8094,8332,8546,8733,8893,9043,9175, 9293,9408,9507,9606,9693,9770,9839,9894,9934,9972,10006,10043,10087,10125,10169,10212,10226,10221,10183,10120, 10046,9947,9840,9739,9640,9533,9436,9346,9248,9146,9031,8915,8780,8645,8494,8356,8224,8089,7953,7805, 7648,7470,7269,7046,6823,6587,6354,6132,5914,5718,5536,5364,5201,5052,4894,4741,4583,4427,4282,4135, 4002,3881,3763,3642,3525,3395,3261,3114,2972,2825,2690,2562,2457,2367,2288,2226,2174,2123,2070,2008, 1951,1880,1821,1757,1695,1639,1587,1516,1456,1378,1295,1197,1085,981,875,759,663,574,497,428, 362,293,224,137,48,-46,-148,-247,-350,-452,-555,-665,-780,-898,-1029,-1161,-1313,-1465,-1613,-1753, -1889,-2002,-2103,-2195,-2280,-2370,-2458,-2541,-2639,-2734,-2838,-2942,-3049,-3155,-3259,-3362,-3468,-3578,-3685,-3812, -3936,-4068,-4199,-4309,-4420,-4512,-4583,-4649,-4704,-4763,-4820,-4886,-4954,-5037,-5120,-5215,-5314,-5416,-5510,-5604, -5704,-5802,-5904,-6021,-6143,-6270,-6395,-6507,-6608,-6703,-6777,-6851,-6918,-6984,-7056,-7127,-7218,-7326,-7440,-7567, -7695,-7828,-7960,-8085,-8210,-8341,-8479,-8613,-8764,-8911,-9058,-9195,-9320,-9428,-9529,-9606,-9673,-9733,-9792,-9849, -9905,-9976,-10057,-10133,-10198,-10253,-10299,-10324,-10329,-10327,-10308,-10271,-10224,-10161,-10083,-9979,-9846,-9682,-9497,-9281, -9030,-8769,-8491,-8195,-7891,-7580,-7260,-6930,-6584,-6225,-5851,-5461,-5052,-4623,-4182,-3737,-3279,-2818,-2351,-1892, -1424,-968,-508,-61,379,811,1239,1651,2058,2462,2856,3241,3613,3975,4329,4660,4977,5286,5574,5850, 6122,6373,6612,6832,7034,7205,7355,7481,7586,7675,7758,7839,7925,8017,8107,8192,8272,8346,8395,8429, 8439,8432,8415,8375,8327,8271,8201,8128,8024,7910,7778,7627,7468,7304,7145,6998,6864,6738,6630,6526, 6422,6325,6214,6086,5946,5793,5628,5462,5290,5129,4968,4811,4643,4478,4311,4141,3975,3817,3669,3544, 3434,3341,3272,3213,3162,3112,3064,3002,2926,2833,2734,2634,2539,2437,2349,2257,2166,2070,1972,1874, 1772,1672,1577,1488,1409,1341,1280,1237,1193,1138,1077,997,895,783,644,510,360,211,55,-99, -261,-417,-589,-759,-930,-1107,-1282,-1449,-1608,-1756,-1893,-2016,-2136,-2258,-2395,-2538,-2694,-2863,-3050,-3228, -3415,-3596,-3775,-3946,-4106,-4261,-4413,-4563,-4702,-4834,-4969,-5088,-5187,-5268,-5337,-5395,-5438,-5480,-5533,-5593, -5670,-5759,-5856,-5970,-6079,-6180,-6282,-6378,-6454,-6525,-6596,-6660,-6727,-6785,-6847,-6900,-6945,-6978,-7000,-7022, -7039,-7060,-7091,-7141,-7200,-7282,-7370,-7479,-7583,-7682,-7760,-7829,-7871,-7899,-7906,-7913,-7905,-7886,-7851,-7802, -7719,-7624,-7498,-7351,-7182,-7002,-6805,-6605,-6391,-6169,-5935,-5679,-5407,-5098,-4749,-4361,-3951,-3500,-3033,-2543, -2045,-1529,-996,-451,100,662,1221,1776,2318,2846,3360,3850,4314,4769,5202,5623,6031,6421,6800,7160, 7491,7807,8092,8346,8578,8784,8967,9137,9289,9426,9548,9651,9739,9809,9877,9935,9991,10054,10119,10184, 10251,10308,10349,10380,10395,10384,10367,10329,10272,10211,10147,10085,10018,9942,9867,9777,9691,9587,9482,9381, 9289,9191,9109,9018,8929,8817,8702,8569,8416,8238,8052,7849,7629,7423,7208,7000,6802,6609,6413,6224, 6028,5843,5654,5485,5320,5169,5020,4883,4750,4618,4477,4332,4178,4020,3843,3679,3506,3346,3197,3055, 2930,2822,2708,2610,2517,2430,2344,2265,2199,2130,2076,2016,1969,1914,1855,1780,1701,1612,1506,1394, 1284,1176,1074,975,885,808,727,644,565,482,400,311,219,137,49,-37,-117,-208,-299,-410, -534,-666,-807,-958,-1101,-1247,-1386,-1514,-1636,-1750,-1858,-1968,-2068,-2168,-2266,-2366,-2468,-2566,-2651,-2743, -2834,-2924,-3018,-3123,-3235,-3360,-3480,-3613,-3742,-3857,-3972,-4074,-4168,-4251,-4325,-4390,-4460,-4524,-4592,-4660, -4733,-4808,-4871,-4944,-5014,-5091,-5169,-5264,-5368,-5479,-5608,-5728,-5853,-5987,-6103,-6214,-6321,-6413,-6498,-6575, -6660,-6744,-6839,-6938,-7047,-7161,-7264,-7380,-7497,-7623,-7744,-7883,-8028,-8184,-8353,-8516,-8682,-8848,-8998,-9134, -9260,-9368,-9468,-9558,-9640,-9729,-9817,-9904,-9987,-10070,-10153,-10226,-10289,-10352,-10409,-10456,-10503,-10543,-10580,-10600, -10612,-10598,-10563,-10500,-10408,-10292,-10151,-9993,-9813,-9619,-9419,-9199,-8975,-8732,-8485,-8223,-7941,-7648,-7343,-7013, -6672,-6312,-5939,-5553,-5147,-4720,-4292,-3838,-3376,-2910,-2437,-1971,-1489,-1010,-545,-71,400,864,1326,1769, 2213,2652,3070,3493,3910,4314,4716,5102,5476,5835,6168,6472,6752,7000,7219,7409,7586,7752,7900,8040, 8176,8301,8407,8507,8578,8641,8695,8727,8758,8770,8788,8780,8759,8722,8666,8572,8464,8333,8181,8010, 7840,7676,7521,7367,7230,7103,6980,6858,6730,6604,6480,6343,6218,6094,5974,5845,5719,5582,5444,5283, 5114,4943,4758,4579,4402,4236,4091,3963,3843,3750,3657,3575,3482,3399,3309,3219,3120,3026,2934,2830, 2733,2627,2521,2399,2265,2135,1990,1842,1699,1566,1445,1333,1237,1146,1074,993,915,830,735,638, 534,412,307,191,75,-52,-188,-321,-470,-629,-788,-956,-1109,-1268,-1418,-1540,-1656,-1765,-1852,-1949, -2047,-2148,-2256,-2375,-2487,-2614,-2741,-2863,-2992,-3118,-3257,-3395,-3534,-3687,-3835,-3984,-4127,-4265,-4389,-4500, -4587,-4667,-4735,-4794,-4861,-4929,-5005,-5091,-5182,-5279,-5385,-5477,-5584,-5683,-5787,-5896,-6008,-6119,-6242,-6352, -6464,-6563,-6660,-6738,-6798,-6841,-6881,-6911,-6942,-6983,-7036,-7109,-7186,-7265,-7360,-7450,-7530,-7603,-7675,-7754, -7820,-7883,-7947,-8006,-8055,-8092,-8098,-8087,-8047,-7987,-7901,-7802,-7698,-7592,-7483,-7380,-7268,-7152,-7013,-6869, -6691,-6501,-6279,-6043,-5784,-5499,-5195,-4882,-4526,-4148,-3745,-3314,-2858,-2376,-1875,-1376,-876,-376,122,612, 1100,1587,2074,2548,3035,3514,3978,4437,4884,5320,5741,6138,6522,6895,7247,7578,7889,8176,8450,8694, 8913,9122,9312,9487,9650,9795,9937,10066,10185,10290,10387,10460,10524,10565,10595,10610,10605,10596,10568,10536, 10484,10417,10340,10266,10174,10086,10004,9922,9843,9763,9691,9620,9535,9442,9347,9235,9110,8973,8833,8689, 8534,8381,8222,8057,7887,7705,7525,7344,7168,6993,6834,6685,6550,6414,6288,6163,6044,5905,5768,5621, 5467,5309,5148,4988,4837,4681,4528,4376,4223,4069,3921,3775,3638,3507,3382,3284,3186,3105,3021,2943, 2869,2786,2694,2607,2496,2390,2285,2174,2067,1958,1852,1749,1644,1540,1433,1332,1235,1145,1049,975, 901,832,764,692,619,539,443,345,241,125,10,-113,-234,-355,-472,-594,-711,-830,-949,-1067, -1180,-1291,-1393,-1494,-1584,-1671,-1747,-1839,-1934,-2027,-2127,-2241,-2347,-2476,-2600,-2728,-2853,-2968,-3085,-3200, -3310,-3414,-3523,-3624,-3726,-3825,-3912,-3998,-4068,-4139,-4208,-4273,-4349,-4429,-4511,-4612,-4717,-4823,-4938,-5053, -5166,-5281,-5389,-5492,-5597,-5698,-5804,-5901,-6006,-6108,-6199,-6288,-6382,-6464,-6554,-6642,-6740,-6852,-6967,-7089, -7234,-7386,-7541,-7699,-7851,-8007,-8150,-8293,-8424,-8551,-8672,-8795,-8917,-9030,-9137,-9232,-9332,-9420,-9494,-9579, -9651,-9735,-9817,-9900,-9978,-10071,-10140,-10212,-10261,-10299,-10319,-10314,-10294,-10262,-10205,-10135,-10047,-9948,-9828,-9689, -9528,-9367,-9179,-8982,-8777,-8555,-8331,-8081,-7829,-7557,-7272,-6958,-6633,-6282,-5919,-5541,-5138,-4726,-4302,-3863, -3411,-2953,-2497,-2035,-1570,-1110,-649,-193,269,721,1173,1623,2087,2538,2985,3428,3852,4261,4650,5008, 5355,5685,5987,6278,6551,6810,7045,7262,7467,7650,7801,7952,8083,8209,8321,8434,8540,8646,8728,8793, 8843,8864,8858,8818,8759,8681,8593,8492,8386,8268,8160,8036,7910,7783,7649,7512,7385,7254,7138,7020, 6915,6814,6718,6608,6491,6362,6223,6062,5892,5717,5548,5365,5199,5037,4886,4748,4601,4475,4345,4217, 4106,3995,3894,3798,3714,3632,3561,3471,3376,3271,3161,3026,2892,2735,2584,2434,2283,2153,2021,1900, 1776,1655,1538,1422,1300,1192,1079,975,865,759,657,545,426,297,156,-5,-170,-347,-527,-695, -870,-1019,-1171,-1307,-1447,-1575,-1700,-1816,-1936,-2051,-2156,-2264,-2361,-2461,-2555,-2646,-2749,-2864,-2981,-3110, -3253,-3398,-3541,-3676,-3800,-3922,-4025,-4125,-4204,-4280,-4353,-4424,-4485,-4562,-4628,-4687,-4750,-4812,-4870,-4932, -4999,-5085,-5174,-5276,-5393,-5510,-5637,-5752,-5854,-5953,-6037,-6107,-6168,-6220,-6276,-6324,-6371,-6425,-6483,-6537, -6588,-6638,-6693,-6744,-6796,-6853,-6927,-6997,-7081,-7156,-7236,-7298,-7338,-7366,-7370,-7343,-7303,-7240,-7173,-7088, -7002,-6904,-6807,-6685,-6565,-6415,-6258,-6090,-5905,-5716,-5520,-5311,-5085,-4850,-4595,-4318,-4020,-3686,-3326,-2947, -2527,-2098,-1662,-1228,-784,-343,100,537,984,1426,1869,2306,2736,3168,3591,4001,4406,4799,5189,5564, 5934,6298,6644,6975,7291,7586,7863,8122,8357,8572,8774,8961,9133,9291,9436,9570,9694,9803,9904,9994, 10076,10149,10204,10252,10269,10283,10271,10246,10197,10138,10070,9994,9905,9811,9722,9632,9542,9444,9346,9251, 9145,9037,8933,8819,8705,8591,8470,8340,8200,8043,7880,7713,7525,7341,7161,6984,6806,6639,6482,6336, 6193,6060,5932,5801,5675,5551,5428,5305,5192,5068,4955,4833,4707,4569,4428,4285,4137,3986,3847,3705, 3576,3452,3341,3242,3146,3057,2973,2887,2790,2710,2620,2530,2441,2343,2252,2153,2047,1938,1819,1698, 1570,1443,1316,1198,1083,972,872,783,700,614,537,460,369,287,195,103,12,-83,-182,-279, -385,-493,-610,-731,-854,-970,-1093,-1203,-1308,-1406,-1497,-1573,-1647,-1714,-1792,-1862,-1937,-2013,-2095,-2185, -2271,-2359,-2454,-2553,-2648,-2749,-2858,-2973,-3092,-3203,-3326,-3431,-3533,-3628,-3713,-3796,-3872,-3947,-4017,-4097, -4177,-4261,-4353,-4457,-4562,-4668,-4773,-4890,-5001,-5121,-5244,-5375,-5499,-5639,-5762,-5890,-6006,-6111,-6210,-6311, -6403,-6494,-6580,-6674,-6770,-6876,-6995,-7114,-7244,-7366,-7493,-7626,-7756,-7890,-8028,-8166,-8304,-8439,-8570,-8686, -8801,-8894,-8985,-9060,-9134,-9196,-9251,-9310,-9375,-9442,-9512,-9575,-9645,-9708,-9766,-9812,-9857,-9890,-9913,-9930, -9936,-9926,-9899,-9851,-9792,-9699,-9589,-9461,-9319,-9160,-8990,-8808,-8615,-8420,-8207,-7982,-7740,-7485,-7217,-6922, -6616,-6296,-5954,-5594,-5216,-4822,-4412,-3981,-3539,-3092,-2629,-2164,-1699,-1240,-782,-323,136,586,1051,1505, 1964,2410,2845,3277,3690,4086,4466,4838,5189,5526,5835,6138,6416,6666,6896,7098,7268,7426,7558,7690, 7807,7920,8026,8138,8233,8327,8397,8448,8485,8506,8504,8484,8455,8415,8362,8296,8215,8126,8019,7900, 7773,7643,7506,7374,7255,7150,7046,6954,6871,6785,6699,6603,6500,6383,6258,6123,5989,5857,5715,5569, 5427,5280,5125,4971,4817,4667,4520,4377,4254,4149,4048,3959,3887,3807,3729,3643,3548,3446,3331,3215, 3091,2967,2842,2712,2584,2455,2324,2187,2053,1923,1794,1668,1554,1449,1366,1281,1200,1127,1036,945, 840,723,604,471,328,193,53,-96,-244,-386,-535,-676,-827,-963,-1106,-1238,-1365,-1478,-1577,-1671, -1766,-1852,-1949,-2047,-2161,-2284,-2416,-2547,-2693,-2833,-2980,-3116,-3254,-3392,-3518,-3639,-3767,-3884,-4001,-4112, -4209,-4292,-4370,-4437,-4500,-4559,-4621,-4694,-4774,-4870,-4971,-5091,-5204,-5325,-5434,-5553,-5663,-5758,-5859,-5951, -6038,-6126,-6205,-6279,-6346,-6406,-6451,-6495,-6528,-6564,-6600,-6645,-6692,-6757,-6836,-6917,-7001,-7086,-7158,-7210, -7258,-7288,-7308,-7309,-7298,-7276,-7236,-7186,-7115,-7030,-6926,-6805,-6667,-6513,-6357,-6177,-6008,-5830,-5647,-5461, -5255,-5030,-4784,-4512,-4211,-3881,-3535,-3161,-2768,-2358,-1944,-1501,-1068,-616,-155,305,764,1237,1699,2157, 2605,3045,3476,3895,4310,4717,5113,5503,5887,6258,6624,6970,7300,7602,7893,8157,8416,8637,8846,9029, 9197,9353,9495,9628,9754,9860,9968,10060,10149,10222,10280,10320,10353,10367,10367,10347,10313,10267,10216,10152, 10076,9999,9909,9814,9711,9605,9505,9405,9306,9219,9127,9040,8946,8850,8749,8631,8501,8361,8214,8059, 7895,7730,7563,7398,7236,7080,6916,6758,6599,6442,6298,6160,6029,5900,5790,5675,5564,5448,5337,5217, 5080,4945,4801,4654,4503,4351,4204,4072,3931,3802,3678,3556,3433,3320,3217,3116,3018,2928,2846,2760, 2685,2595,2506,2413,2313,2193,2076,1954,1829,1700,1576,1463,1353,1236,1134,1030,931,832,734,641, 554,465,384,298,209,132,37,-62,-164,-281,-404,-525,-656,-780,-903,-1018,-1129,-1237,-1344,-1435, -1529,-1616,-1713,-1798,-1878,-1959,-2044,-2116,-2196,-2277,-2366,-2458,-2558,-2669,-2789,-2905,-3023,-3147,-3262,-3369, -3473,-3574,-3669,-3759,-3846,-3936,-4025,-4113,-4198,-4280,-4367,-4451,-4536,-4631,-4724,-4839,-4956,-5073,-5210,-5349, -5481,-5621,-5751,-5882,-6009,-6124,-6229,-6338,-6440,-6548,-6651,-6764,-6872,-6981,-7085,-7202,-7308,-7425,-7550,-7682, -7821,-7966,-8114,-8269,-8424,-8573,-8714,-8845,-8966,-9067,-9169,-9264,-9349,-9423,-9507,-9584,-9653,-9719,-9780,-9842, -9897,-9942,-10000,-10044,-10099,-10134,-10176,-10217,-10244,-10248,-10239,-10200,-10142,-10070,-9973,-9865,-9739,-9594,-9443,-9274, -9098,-8907,-8694,-8470,-8236,-7979,-7717,-7436,-7144,-6834,-6514,-6164,-5801,-5418,-5007,-4573,-4123,-3663,-3189,-2714, -2229,-1745,-1256,-767,-277,211,707,1197,1682,2156,2628,3087,3534,3968,4392,4818,5216,5606,5980,6324, 6644,6925,7182,7413,7624,7803,7972,8123,8265,8396,8520,8626,8723,8791,8856,8907,8942,8970,8987,8989, 8990,8973,8939,8886,8805,8708,8582,8454,8318,8176,8033,7904,7774,7659,7541,7425,7314,7199,7084,6973, 6854,6748,6632,6517,6394,6278,6137,6002,5849,5687,5510,5337,5162,4995,4829,4680,4546,4424,4308,4191, 4087,3983,3871,3760,3656,3544,3431,3322,3212,3095,2977,2844,2711,2563,2408,2244,2086,1937,1795,1660, 1544,1430,1331,1225,1132,1036,929,819,719,605,487,371,257,139,14,-125,-262,-412,-566,-722, -874,-1024,-1162,-1292,-1405,-1511,-1605,-1699,-1787,-1875,-1967,-2062,-2159,-2263,-2366,-2466,-2576,-2684,-2796,-2917, -3042,-3170,-3302,-3430,-3566,-3691,-3807,-3911,-4009,-4091,-4164,-4229,-4300,-4368,-4446,-4518,-4608,-4695,-4791,-4887, -4991,-5094,-5206,-5304,-5422,-5542,-5662,-5784,-5902,-6019,-6123,-6211,-6289,-6355,-6405,-6451,-6493,-6543,-6592,-6643, -6709,-6783,-6849,-6923,-6996,-7069,-7139,-7202,-7261,-7328,-7376,-7422,-7460,-7487,-7501,-7492,-7456,-7412,-7336,-7248, -7150,-7047,-6936,-6829,-6712,-6595,-6474,-6337,-6191,-6032,-5857,-5652,-5430,-5194,-4936,-4661,-4364,-4041,-3708,-3344, -2954,-2551,-2120,-1683,-1237,-777,-323,134,583,1033,1475,1927,2370,2818,3256,3698,4135,4575,4995,5417, 5817,6215,6590,6949,7287,7608,7901,8186,8445,8690,8914,9125,9325,9505,9662,9820,9953,10073,10180,10264, 10346,10410,10461,10497,10527,10529,10522,10493,10446,10382,10306,10219,10136,10040,9949,9859,9769,9684,9606,9511, 9422,9321,9226,9107,8988,8867,8738,8600,8465,8326,8173,8016,7846,7681,7512,7342,7174,7015,6867,6732, 6597,6475,6360,6245,6128,6020,5899,5772,5638,5503,5374,5234,5098,4959,4820,4677,4525,4382,4234,4087, 3945,3816,3690,3576,3473,3371,3282,3190,3096,3004,2899,2797,2690,2566,2447,2334,2210,2090,1968,1844, 1721,1593,1465,1346,1227,1113,1007,907,818,727,651,571,493,401,313,212,110,-1,-110,-230, -342,-458,-565,-685,-793,-914,-1028,-1139,-1246,-1351,-1441,-1530,-1611,-1689,-1766,-1831,-1904,-1982,-2068,-2162, -2258,-2367,-2473,-2582,-2692,-2802,-2908,-3014,-3124,-3226,-3342,-3442,-3543,-3653,-3742,-3828,-3907,-3992,-4066,-4143, -4220,-4304,-4399,-4499,-4611,-4731,-4850,-4979,-5107,-5228,-5352,-5470,-5588,-5705,-5823,-5945,-6054,-6163,-6274,-6376, -6474,-6564,-6658,-6751,-6847,-6950,-7068,-7190,-7317,-7456,-7599,-7747,-7888,-8032,-8167,-8301,-8424,-8550,-8670,-8792, -8904,-9012,-9111,-9209,-9284,-9362,-9432,-9503,-9571,-9637,-9718,-9802,-9885,-9974,-10056,-10129,-10200,-10252,-10285,-10316, -10320,-10321,-10303,-10276,-10236,-10177,-10099,-10009,-9903,-9778,-9638,-9492,-9331,-9156,-8982,-8793,-8593,-8384,-8158,-7902, -7637,-7337,-7010,-6668,-6299,-5914,-5511,-5091,-4662,-4214,-3752,-3278,-2799,-2309,-1809,-1317,-817,-324,169,663, 1152,1647,2148,2633,3113,3582,4039,4481,4885,5274,5640,5984,6300,6595,6872,7133,7370,7590,7789,7963, 8127,8268,8403,8530,8648,8756,8858,8941,9010,9054,9080,9084,9063,9019,8961,8887,8804,8718,8621,8525, 8430,8324,8223,8114,8007,7900,7798,7707,7616,7531,7451,7371,7280,7179,7061,6936,6800,6647,6490,6333, 6177,6022,5874,5730,5593,5460,5325,5200,5074,4953,4842,4733,4638,4545,4450,4357,4259,4155,4036,3905, 3768,3618,3460,3313,3159,3014,2867,2728,2607,2478,2352,2235,2115,2001,1891,1783,1680,1587,1485,1385, 1278,1166,1041,899,753,606,443,280,126,-24,-166,-310,-436,-559,-680,-801,-912,-1027,-1133,-1242, -1344,-1439,-1538,-1647,-1744,-1857,-1973,-2109,-2251,-2391,-2541,-2699,-2845,-2985,-3113,-3235,-3352,-3460,-3557,-3665, -3757,-3848,-3946,-4046,-4134,-4223,-4314,-4400,-4500,-4597,-4706,-4827,-4960,-5096,-5233,-5366,-5506,-5626,-5743,-5845, -5938,-6023,-6097,-6164,-6235,-6305,-6374,-6438,-6508,-6569,-6631,-6691,-6756,-6818,-6893,-6967,-7052,-7135,-7218,-7291, -7361,-7408,-7439,-7454,-7447,-7423,-7385,-7328,-7269,-7211,-7127,-7050,-6961,-6866,-6762,-6641,-6514,-6376,-6232,-6079, -5918,-5745,-5559,-5354,-5126,-4881,-4602,-4298,-3975,-3620,-3261,-2868,-2476,-2073,-1667,-1257,-840,-432,-7,416, 845,1264,1699,2128,2555,2984,3403,3825,4246,4647,5045,5441,5816,6183,6534,6866,7190,7491,7773,8042, 8290,8520,8728,8923,9107,9277,9427,9575,9711,9836,9944,10039,10117,10171,10205,10221,10218,10195,10156,10112, 10065,10009,9945,9878,9806,9731,9650,9565,9476,9386,9289,9198,9102,9004,8906,8793,8679,8551,8414,8260, 8102,7937,7765,7591,7426,7274,7124,6984,6850,6716,6591,6460,6327,6202,6078,5949,5833,5712,5595,5467, 5345,5205,5074,4920,4768,4611,4456,4306,4154,4017,3896,3775,3661,3556,3456,3346,3243,3142,3044,2941, 2840,2738,2639,2538,2426,2312,2194,2064,1934,1805,1668,1542,1416,1297,1196,1097,1003,919,834,751, 665,574,487,401,306,213,120,24,-79,-185,-295,-404,-523,-641,-761,-875,-988,-1092,-1185,-1271, -1354,-1425,-1497,-1570,-1648,-1728,-1806,-1890,-1975,-2066,-2146,-2244,-2340,-2439,-2543,-2650,-2760,-2878,-2986,-3101, -3207,-3310,-3406,-3487,-3560,-3647,-3721,-3796,-3878,-3963,-4059,-4159,-4261,-4369,-4473,-4575,-4692,-4813,-4936,-5062, -5188,-5327,-5459,-5590,-5713,-5828,-5944,-6049,-6144,-6236,-6332,-6422,-6526,-6637,-6750,-6865,-6991,-7122,-7251,-7376, -7507,-7643,-7777,-7922,-8061,-8197,-8335,-8465,-8586,-8702,-8806,-8898,-8974,-9046,-9120,-9192,-9262,-9341,-9420,-9508, -9593,-9666,-9752,-9820,-9889,-9948,-10003,-10050,-10091,-10123,-10144,-10154,-10144,-10117,-10063,-10000,-9912,-9809,-9699,-9579, -9450,-9320,-9175,-9025,-8867,-8683,-8485,-8275,-8037,-7788,-7514,-7221,-6917,-6587,-6237,-5874,-5484,-5078,-4644,-4203, -3750,-3288,-2818,-2350,-1875,-1394,-915,-440,39,530,1016,1500,1977,2454,2912,3361,3783,4198,4591,4970, 5330,5665,5977,6268,6529,6770,6985,7189,7365,7543,7700,7857,7993,8132,8259,8367,8460,8534,8581,8611, 8630,8627,8611,8588,8541,8491,8419,8342,8243,8134,8026,7923,7804,7704,7614,7527,7450,7371,7297,7219, 7131,7023,6921,6804,6682,6548,6412,6273,6135,5981,5838,5680,5529,5370,5213,5062,4924,4788,4674,4562, 4468,4374,4277,4181,4082,3963,3847,3723,3586,3453,3311,3168,3028,2884,2738,2593,2447,2302,2159,2017, 1891,1765,1655,1559,1458,1370,1277,1178,1080,969,848,725,592,454,311,167,24,-112,-251,-387, -526,-665,-800,-930,-1053,-1161,-1272,-1360,-1445,-1529,-1612,-1708,-1800,-1902,-2015,-2134,-2262,-2393,-2530,-2662, -2795,-2921,-3046,-3170,-3291,-3413,-3526,-3642,-3748,-3847,-3935,-4019,-4092,-4168,-4241,-4321,-4407,-4501,-4607,-4720, -4841,-4967,-5096,-5216,-5336,-5457,-5560,-5667,-5764,-5866,-5955,-6044,-6129,-6198,-6254,-6317,-6364,-6410,-6455,-6499, -6549,-6601,-6660,-6739,-6818,-6890,-6962,-7029,-7084,-7132,-7156,-7175,-7184,-7174,-7155,-7122,-7083,-7027,-6953,-6866, -6770,-6659,-6538,-6412,-6277,-6145,-6002,-5857,-5714,-5550,-5373,-5182,-4968,-4732,-4474,-4185,-3878,-3556,-3215,-2849, -2475,-2098,-1701,-1292,-880,-466,-41,387,812,1234,1660,2083,2499,2911,3327,3740,4151,4543,4938,5330, 5713,6077,6441,6783,7112,7419,7702,7972,8224,8449,8665,8862,9046,9220,9381,9537,9682,9810,9927,10029, 10107,10174,10211,10245,10259,10258,10247,10229,10193,10149,10094,10028,9954,9875,9786,9703,9611,9534,9446,9364, 9292,9209,9116,9027,8918,8802,8668,8528,8385,8235,8082,7931,7780,7628,7480,7323,7177,7032,6882,6741, 6612,6483,6359,6241,6132,6026,5913,5796,5673,5537,5400,5245,5100,4951,4800,4646,4511,4374,4240,4109, 3976,3858,3737,3616,3510,3397,3302,3204,3115,3024,2936,2834,2734,2618,2501,2376,2241,2111,1985,1856, 1737,1622,1512,1408,1300,1195,1104,1002,909,817,733,648,559,483,404,309,209,111,-1,-120, -238,-358,-480,-595,-705,-811,-907,-1002,-1096,-1191,-1282,-1358,-1451,-1527,-1615,-1685,-1765,-1848,-1930,-2015, -2112,-2209,-2321,-2436,-2548,-2675,-2799,-2908,-3022,-3129,-3225,-3319,-3415,-3513,-3603,-3695,-3790,-3883,-3969,-4065, -4152,-4249,-4342,-4446,-4557,-4679,-4796,-4932,-5072,-5214,-5355,-5488,-5611,-5738,-5854,-5957,-6069,-6178,-6284,-6389, -6494,-6608,-6719,-6828,-6945,-7053,-7171,-7289,-7419,-7554,-7699,-7843,-7995,-8147,-8290,-8431,-8562,-8683,-8790,-8887, -8983,-9069,-9160,-9244,-9330,-9411,-9493,-9562,-9634,-9702,-9775,-9841,-9900,-9969,-10035,-10092,-10155,-10200,-10242,-10258, -10252,-10229,-10191,-10138,-10063,-9970,-9876,-9770,-9650,-9524,-9385,-9228,-9060,-8873,-8669,-8458,-8229,-7978,-7723,-7448, -7150,-6837,-6497,-6137,-5750,-5341,-4910,-4470,-4015,-3550,-3072,-2599,-2122,-1635,-1149,-662,-164,329,829,1314, 1802,2281,2756,3207,3656,4089,4509,4906,5280,5641,5972,6278,6554,6809,7038,7247,7445,7627,7805,7957, 8104,8233,8352,8452,8540,8615,8679,8731,8763,8793,8794,8789,8763,8716,8652,8570,8471,8370,8260,8154, 8043,7940,7847,7756,7662,7578,7486,7394,7297,7204,7097,7001,6890,6778,6673,6550,6415,6266,6113,5960, 5787,5628,5467,5318,5170,5029,4908,4795,4680,4569,4468,4355,4245,4132,4015,3903,3784,3663,3544,3418, 3279,3133,2975,2825,2663,2505,2355,2208,2072,1948,1825,1720,1621,1512,1418,1313,1206,1093,979,865, 751,626,511,386,252,112,-37,-182,-331,-480,-618,-749,-880,-993,-1097,-1197,-1284,-1372,-1466,-1551, -1652,-1753,-1854,-1965,-2073,-2186,-2307,-2422,-2548,-2679,-2811,-2942,-3079,-3217,-3346,-3469,-3585,-3688,-3780,-3865, -3949,-4024,-4107,-4195,-4281,-4377,-4482,-4589,-4699,-4811,-4930,-5041,-5154,-5281,-5401,-5529,-5652,-5768,-5885,-5993, -6083,-6171,-6241,-6303,-6359,-6410,-6464,-6522,-6574,-6646,-6712,-6788,-6865,-6941,-7015,-7088,-7146,-7210,-7271,-7322, -7370,-7401,-7417,-7428,-7418,-7382,-7336,-7275,-7201,-7110,-7014,-6918,-6822,-6708,-6602,-6483,-6363,-6224,-6076,-5911, -5732,-5530,-5315,-5074,-4827,-4558,-4256,-3939,-3607,-3249,-2879,-2486,-2088,-1677,-1255,-826,-407,22,449,880, 1307,1732,2164,2601,3024,3452,3875,4299,4712,5118,5514,5900,6266,6620,6953,7265,7554,7825,8083,8326, 8556,8766,8970,9161,9332,9484,9628,9753,9861,9953,10036,10108,10165,10210,10238,10258,10251,10227,10198,10146, 10095,10017,9950,9880,9813,9741,9674,9608,9538,9457,9371,9276,9177,9062,8943,8819,8697,8566,8424,8284, 8134,7979,7820,7657,7491,7329,7171,7017,6882,6750,6623,6509,6391,6283,6155,6026,5896,5760,5617,5483, 5336,5198,5055,4905,4764,4619,4467,4320,4169,4024,3883,3745,3626,3518,3411,3319,3229,3127,3032,2922, 2821,2713,2597,2486,2374,2257,2148,2029,1923,1808,1692,1574,1460,1346,1241,1129,1041,951,875,793, 724,650,572,485,386,293,196,83,-22,-128,-237,-342,-452,-562,-674,-782,-894,-1003,-1107,-1208, -1305,-1394,-1472,-1552,-1628,-1708,-1793,-1877,-1976,-2081,-2186,-2296,-2411,-2518,-2630,-2737,-2852,-2961,-3074,-3187, -3300,-3410,-3516,-3618,-3718,-3809,-3896,-3980,-4062,-4143,-4235,-4324,-4432,-4542,-4657,-4773,-4902,-5025,-5143,-5260, -5376,-5496,-5608,-5723,-5848,-5968,-6084,-6188,-6300,-6406,-6497,-6585,-6680,-6774,-6869,-6979,-7094,-7220,-7355,-7492, -7632,-7769,-7902,-8040,-8166,-8290,-8420,-8539,-8660,-8785,-8896,-9011,-9108,-9211,-9301,-9380,-9459,-9539,-9612,-9692, -9783,-9880,-9978,-10072,-10163,-10245,-10319,-10374,-10414,-10448,-10465,-10479,-10475,-10464,-10436,-10393,-10330,-10253,-10157,-10040, -9904,-9762,-9605,-9434,-9262,-9075,-8887,-8678,-8443,-8187,-7910,-7595,-7266,-6914,-6545,-6153,-5745,-5324,-4892,-4442, -3982,-3505,-3016,-2527,-2026,-1525,-1027,-528,-33,463,947,1434,1921,2401,2868,3329,3776,4199,4603,4985, 5349,5699,6020,6317,6604,6869,7122,7344,7549,7739,7923,8082,8237,8382,8518,8632,8739,8835,8909,8962, 8999,9008,9000,8977,8941,8896,8837,8768,8696,8615,8522,8425,8322,8215,8110,8005,7902,7807,7711,7614, 7518,7415,7306,7185,7046,6904,6745,6588,6419,6254,6094,5937,5778,5627,5472,5324,5171,5023,4883,4756, 4626,4515,4406,4305,4206,4104,3996,3883,3750,3617,3473,3328,3177,3030,2893,2759,2627,2502,2383,2259, 2139,2021,1904,1800,1699,1596,1512,1421,1330,1236,1135,1029,909,775,633,488,348,198,52,-82, -214,-344,-472,-595,-715,-842,-965,-1085,-1200,-1319,-1424,-1529,-1634,-1741,-1862,-1979,-2114,-2255,-2406,-2554, -2707,-2860,-3010,-3151,-3278,-3403,-3529,-3643,-3759,-3869,-3992,-4097,-4203,-4305,-4400,-4486,-4576,-4662,-4762,-4864, -4967,-5085,-5210,-5333,-5464,-5584,-5699,-5810,-5902,-5986,-6068,-6141,-6214,-6284,-6353,-6428,-6490,-6552,-6609,-6660, -6719,-6772,-6835,-6900,-6976,-7053,-7134,-7219,-7298,-7367,-7429,-7480,-7508,-7524,-7529,-7535,-7514,-7496,-7467,-7438, -7398,-7347,-7284,-7215,-7128,-7040,-6935,-6834,-6718,-6596,-6461,-6319,-6152,-5966,-5753,-5517,-5255,-4961,-4652,-4319, -3972,-3603,-3217,-2820,-2417,-1991,-1558,-1120,-665,-218,241,701,1160,1623,2083,2547,3001,3454,3902,4341, 4759,5174,5566,5949,6308,6665,6992,7310,7608,7885,8149,8389,8605,8804,8982,9149,9300,9438,9574,9703, 9807,9902,9980,10033,10067,10077,10078,10063,10037,10007,9974,9935,9895,9846,9794,9739,9677,9603,9529,9450, 9375,9298,9223,9148,9067,8980,8885,8775,8647,8506,8361,8212,8057,7900,7757,7611,7474,7339,7206,7073, 6938,6794,6656,6518,6379,6245,6111,5979,5849,5707,5567,5419,5260,5096,4922,4751,4580,4413,4257,4117, 3980,3849,3723,3600,3481,3357,3237,3120,2999,2890,2775,2668,2569,2457,2348,2236,2113,1987,1856,1722, 1603,1486,1374,1274,1184,1099,1015,927,851,766,683,592,500,418,330,244,162,82,-8,-103, -201,-308,-418,-535,-647,-758,-858,-959,-1050,-1132,-1215,-1308,-1390,-1478,-1571,-1670,-1767,-1867,-1965,-2061, -2156,-2251,-2353,-2463,-2575,-2691,-2810,-2935,-3059,-3180,-3291,-3397,-3500,-3591,-3679,-3766,-3859,-3952,-4044,-4148, -4248,-4351,-4452,-4550,-4651,-4750,-4850,-4957,-5064,-5175,-5295,-5411,-5534,-5646,-5746,-5849,-5941,-6019,-6099,-6177, -6262,-6346,-6438,-6534,-6642,-6746,-6858,-6963,-7073,-7181,-7292,-7410,-7529,-7654,-7787,-7918,-8044,-8179,-8300,-8409, -8519,-8612,-8701,-8790,-8880,-8979,-9076,-9182,-9289,-9396,-9503,-9604,-9690,-9782,-9864,-9935,-10011,-10076,-10142,-10201, -10247,-10284,-10304,-10301,-10278,-10232,-10169,-10088,-10001,-9904,-9801,-9683,-9556,-9420,-9266,-9093,-8893,-8681,-8445,-8190, -7916,-7625,-7319,-6994,-6653,-6292,-5915,-5517,-5100,-4670,-4230,-3777,-3325,-2861,-2410,-1952,-1492,-1032,-575,-108, 344,808,1263,1718,2164,2605,3023,3440,3840,4224,4586,4933,5261,5568,5852,6120,6377,6612,6836,7045, 7249,7449,7627,7795,7947,8086,8206,8312,8404,8484,8545,8596,8631,8650,8649,8629,8592,8536,8462,8371, 8280,8178,8081,7983,7882,7792,7692,7588,7481,7361,7237,7107,6967,6827,6692,6547,6406,6255,6104,5945, 5776,5602,5430,5250,5078,4906,4755,4611,4472,4358,4246,4129,4017,3903,3785,3667,3543,3427,3314,3197, 3083,2970,2854,2745,2619,2499,2367,2236,2111,1998,1881,1782,1687,1599,1518,1437,1348,1252,1150,1044, 927,804,687,568,441,315,194,63,-72,-212,-359,-508,-658,-805,-942,-1069,-1190,-1308,-1423,-1530, -1647,-1764,-1889,-2018,-2154,-2293,-2432,-2564,-2701,-2835,-2963,-3096,-3220,-3356,-3498,-3631,-3763,-3895,-4006,-4115, -4208,-4299,-4381,-4455,-4527,-4609,-4692,-4783,-4872,-4969,-5067,-5160,-5250,-5339,-5428,-5510,-5599,-5687,-5779,-5870, -5958,-6042,-6118,-6180,-6237,-6282,-6326,-6360,-6399,-6442,-6486,-6542,-6604,-6670,-6738,-6804,-6861,-6913,-6964,-7007, -7044,-7079,-7114,-7145,-7166,-7172,-7172,-7154,-7120,-7065,-7004,-6928,-6841,-6751,-6655,-6554,-6447,-6334,-6203,-6061, -5895,-5711,-5508,-5285,-5042,-4780,-4502,-4206,-3889,-3547,-3192,-2817,-2418,-2007,-1585,-1160,-720,-280,165,604, 1047,1490,1932,2367,2802,3231,3652,4064,4466,4856,5241,5613,5977,6329,6671,6992,7301,7584,7843,8084, 8304,8512,8704,8884,9053,9211,9361,9495,9618,9723,9817,9887,9944,9993,10027,10061,10077,10095,10103,10094, 10072,10032,9975,9917,9835,9753,9675,9596,9515,9436,9359,9279,9184,9081,8973,8852,8722,8581,8444,8303, 8163,8019,7875,7729,7571,7407,7238,7068,6895,6721,6557,6403,6252,6114,5978,5844,5714,5577,5434,5288, 5140,4989,4838,4693,4548,4411,4275,4150,4016,3883,3748,3618,3490,3360,3243,3137,3041,2946,2862,2777, 2692,2603,2508,2411,2305,2200,2092,1991,1890,1791,1689,1593,1499,1404,1298,1197,1094,993,889,793, 706,625,542,466,381,295,193,92,-13,-123,-237,-345,-455,-563,-673,-783,-884,-992,-1098,-1213, -1321,-1433,-1542,-1646,-1738,-1827,-1916,-1998,-2087,-2177,-2266,-2371,-2472,-2582,-2696,-2804,-2910,-3017,-3119,-3224, -3324,-3419,-3524,-3626,-3731,-3837,-3936,-4034,-4125,-4210,-4292,-4374,-4454,-4540,-4633,-4730,-4839,-4950,-5064,-5184, -5299,-5411,-5517,-5625,-5732,-5831,-5937,-6050,-6157,-6269,-6376,-6482,-6585,-6680,-6773,-6867,-6963,-7065,-7166,-7280, -7410,-7537,-7670,-7803,-7933,-8061,-8182,-8296,-8414,-8525,-8630,-8744,-8855,-8964,-9074,-9174,-9266,-9361,-9438,-9510, -9584,-9650,-9720,-9785,-9857,-9934,-10001,-10057,-10108,-10142,-10156,-10152,-10140,-10109,-10067,-10011,-9942,-9864,-9769,-9658, -9523,-9376,-9208,-9014,-8810,-8591,-8352,-8105,-7842,-7570,-7279,-6969,-6643,-6300,-5930,-5544,-5137,-4719,-4289,-3850, -3400,-2945,-2488,-2026,-1564,-1101,-638,-180,284,735,1191,1634,2074,2512,2932,3343,3741,4126,4492,4842, 5174,5481,5773,6055,6314,6560,6785,7001,7188,7365,7516,7654,7776,7893,7994,8093,8184,8270,8339,8398, 8445,8475,8481,8472,8446,8404,8348,8285,8215,8141,8063,7976,7886,7785,7677,7561,7443,7328,7212,7103, 6995,6891,6788,6680,6571,6453,6321,6177,6027,5869,5710,5548,5392,5241,5096,4951,4811,4673,4535,4397, 4265,4138,4019,3904,3800,3701,3611,3517,3421,3327,3224,3107,2983,2853,2725,2601,2475,2364,2253,2145, 2041,1938,1839,1735,1632,1531,1431,1337,1243,1151,1068,981,888,786,677,554,423,283,146,0, -144,-284,-417,-552,-685,-815,-948,-1077,-1216,-1354,-1489,-1619,-1751,-1878,-1998,-2121,-2246,-2381,-2518,-2664, -2819,-2977,-3133,-3291,-3445,-3593,-3735,-3866,-3991,-4112,-4229,-4346,-4455,-4572,-4680,-4783,-4879,-4973,-5058,-5141, -5220,-5311,-5404,-5503,-5610,-5723,-5836,-5949,-6052,-6150,-6244,-6320,-6388,-6457,-6520,-6583,-6641,-6703,-6766,-6824, -6877,-6927,-6977,-7019,-7067,-7119,-7178,-7239,-7308,-7379,-7453,-7518,-7577,-7613,-7645,-7651,-7644,-7623,-7598,-7556, -7508,-7451,-7390,-7306,-7214,-7098,-6972,-6826,-6668,-6494,-6315,-6118,-5907,-5680,-5432,-5164,-4869,-4541,-4187,-3812, -3405,-2982,-2546,-2102,-1641,-1170,-691,-208,284,779,1270,1757,2243,2720,3181,3632,4076,4511,4934,5345, 5746,6138,6510,6860,7193,7501,7785,8046,8291,8512,8722,8913,9092,9257,9405,9534,9648,9754,9845,9928, 10003,10077,10144,10202,10251,10279,10299,10300,10280,10254,10212,10154,10093,10034,9971,9907,9836,9765,9690,9608, 9514,9418,9317,9218,9112,9014,8910,8803,8678,8553,8418,8267,8101,7932,7754,7568,7387,7211,7039,6877, 6716,6556,6400,6244,6085,5926,5775,5625,5479,5330,5191,5054,4915,4771,4626,4475,4324,4160,4007,3853, 3706,3570,3439,3323,3217,3108,3011,2916,2820,2725,2635,2543,2455,2366,2280,2198,2113,2025,1932,1832, 1731,1618,1507,1397,1290,1188,1096,1005,925,842,758,677,593,501,410,311,219,119,23,-72, -168,-272,-381,-496,-618,-744,-875,-999,-1122,-1240,-1349,-1452,-1554,-1648,-1747,-1838,-1933,-2027,-2128,-2227, -2329,-2425,-2527,-2626,-2723,-2823,-2931,-3035,-3152,-3263,-3385,-3502,-3606,-3712,-3810,-3900,-3985,-4062,-4137,-4219, -4297,-4379,-4468,-4557,-4650,-4739,-4834,-4928,-5026,-5121,-5227,-5338,-5452,-5574,-5693,-5811,-5937,-6047,-6154,-6262, -6357,-6448,-6535,-6633,-6728,-6834,-6943,-7064,-7187,-7305,-7431,-7559,-7688,-7814,-7947,-8082,-8220,-8366,-8508,-8648, -8789,-8917,-9035,-9147,-9246,-9340,-9426,-9508,-9596,-9685,-9772,-9857,-9945,-10028,-10105,-10172,-10236,-10289,-10332,-10368, -10395,-10414,-10423,-10419,-10397,-10358,-10293,-10209,-10106,-9981,-9841,-9685,-9517,-9342,-9148,-8948,-8730,-8504,-8260,-7995, -7713,-7418,-7097,-6759,-6403,-6031,-5648,-5243,-4822,-4394,-3945,-3488,-3024,-2554,-2082,-1601,-1120,-644,-164,314, 788,1262,1722,2181,2630,3063,3495,3912,4319,4713,5092,5453,5798,6120,6414,6690,6939,7159,7361,7544, 7720,7877,8024,8164,8291,8402,8504,8578,8640,8690,8715,8735,8739,8736,8715,8685,8636,8575,8490,8392, 8282,8155,8016,7880,7747,7620,7491,7375,7263,7154,7043,6926,6803,6680,6543,6414,6280,6150,6009,5874, 5731,5591,5436,5276,5118,4952,4792,4634,4486,4349,4226,4107,4009,3911,3816,3711,3613,3506,3398,3279, 3164,3052,2929,2813,2693,2575,2449,2314,2187,2051,1912,1779,1655,1540,1429,1327,1233,1148,1057,966, 867,760,649,532,402,282,157,33,-96,-230,-360,-499,-641,-785,-931,-1067,-1207,-1341,-1454,-1564, -1670,-1764,-1862,-1964,-2072,-2182,-2304,-2422,-2554,-2683,-2811,-2940,-3066,-3197,-3326,-3453,-3592,-3723,-3855,-3979, -4105,-4218,-4323,-4414,-4499,-4579,-4652,-4733,-4818,-4907,-5005,-5111,-5218,-5333,-5436,-5549,-5651,-5756,-5861,-5967, -6066,-6176,-6276,-6372,-6465,-6553,-6628,-6692,-6743,-6794,-6839,-6885,-6940,-7003,-7077,-7158,-7238,-7328,-7411,-7485, -7548,-7607,-7667,-7714,-7757,-7794,-7829,-7851,-7864,-7856,-7831,-7787,-7728,-7650,-7561,-7464,-7364,-7260,-7157,-7044, -6922,-6783,-6632,-6450,-6253,-6029,-5787,-5521,-5235,-4927,-4613,-4260,-3891,-3501,-3091,-2656,-2203,-1734,-1267,-794, -320,154,624,1095,1568,2042,2505,2979,3449,3904,4353,4792,5219,5632,6023,6400,6768,7113,7441,7749, 8038,8311,8557,8783,8997,9195,9374,9541,9693,9837,9967,10084,10186,10277,10344,10400,10436,10460,10468,10458, 10446,10419,10386,10336,10279,10209,10142,10059,9975,9898,9819,9738,9657,9578,9500,9407,9306,9201,9084,8951, 8814,8670,8524,8371,8220,8067,7913,7755,7588,7426,7261,7100,6938,6789,6647,6516,6381,6253,6126,6001, 5861,5719,5573,5418,5259,5102,4944,4796,4644,4497,4353,4211,4068,3929,3795,3664,3539,3416,3315,3211, 3120,3029,2941,2853,2759,2656,2559,2442,2329,2218,2105,1993,1884,1777,1676,1573,1473,1369,1274,1179, 1089,991,911,830,752,674,594,511,423,323,221,113,-3,-117,-236,-352,-466,-579,-692,-801, -910,-1021,-1128,-1234,-1337,-1437,-1536,-1627,-1717,-1799,-1893,-1990,-2088,-2189,-2302,-2409,-2532,-2655,-2776,-2895, -3005,-3116,-3226,-3328,-3428,-3532,-3629,-3728,-3827,-3916,-4006,-4086,-4166,-4246,-4325,-4410,-4500,-4591,-4698,-4807, -4917,-5033,-5150,-5261,-5375,-5483,-5585,-5688,-5788,-5891,-5989,-6093,-6197,-6293,-6389,-6489,-6584,-6681,-6780,-6886, -7002,-7120,-7245,-7387,-7534,-7680,-7829,-7971,-8117,-8250,-8381,-8502,-8620,-8732,-8846,-8961,-9067,-9172,-9266,-9366, -9456,-9534,-9619,-9696,-9778,-9857,-9936,-10009,-10091,-10153,-10213,-10255,-10283,-10295,-10285,-10260,-10224,-10165,-10095,-10010, -9913,-9798,-9668,-9518,-9366,-9187,-9000,-8800,-8585,-8360,-8114,-7860,-7587,-7299,-6984,-6657,-6305,-5939,-5558,-5156, -4743,-4318,-3877,-3426,-2968,-2509,-2046,-1578,-1113,-647,-183,284,743,1205,1660,2125,2579,3024,3464,3885, 4291,4674,5031,5375,5702,6001,6289,6561,6816,7050,7270,7474,7659,7815,7968,8101,8226,8336,8443,8540, 8635,8705,8758,8796,8810,8799,8759,8701,8627,8543,8449,8351,8244,8145,8034,7920,7805,7684,7558,7441, 7316,7203,7087,6980,6873,6771,6655,6534,6404,6262,6104,5939,5769,5607,5432,5274,5119,4975,4841,4702, 4579,4454,4328,4217,4103,3997,3893,3799,3705,3620,3520,3415,3302,3185,3047,2913,2759,2611,2465,2320, 2193,2065,1946,1825,1709,1593,1479,1358,1248,1134,1025,911,800,692,575,451,320,181,26,-133, -299,-471,-629,-793,-935,-1078,-1207,-1341,-1463,-1584,-1697,-1816,-1931,-2038,-2149,-2251,-2358,-2457,-2554,-2662, -2781,-2899,-3027,-3167,-3307,-3445,-3575,-3695,-3813,-3916,-4014,-4094,-4174,-4250,-4325,-4393,-4475,-4549,-4619,-4690, -4763,-4831,-4904,-4979,-5072,-5164,-5268,-5382,-5497,-5618,-5728,-5827,-5923,-6005,-6077,-6137,-6193,-6250,-6302,-6354, -6412,-6474,-6534,-6590,-6646,-6706,-6761,-6816,-6874,-6945,-7012,-7088,-7155,-7225,-7278,-7312,-7333,-7333,-7305,-7265, -7204,-7140,-7059,-6978,-6884,-6793,-6677,-6563,-6422,-6271,-6110,-5931,-5745,-5552,-5343,-5118,-4882,-4627,-4350,-4053, -3722,-3368,-2995,-2586,-2166,-1741,-1316,-881,-447,-13,419,860,1298,1738,2173,2603,3036,3461,3872,4280, 4678,5070,5449,5822,6187,6537,6870,7189,7487,7768,8030,8271,8491,8700,8892,9070,9234,9385,9524,9653, 9765,9868,9959,10041,10112,10168,10213,10231,10245,10234,10211,10165,10111,10047,9976,9891,9804,9719,9633,9547, 9454,9358,9265,9161,9054,8950,8834,8719,8602,8480,8348,8209,8054,7895,7731,7549,7370,7196,7024,6851, 6689,6537,6394,6253,6121,5994,5863,5735,5610,5485,5359,5240,5113,4995,4871,4742,4604,4463,4321,4174, 4026,3888,3749,3621,3499,3388,3287,3189,3098,3011,2923,2823,2738,2644,2550,2456,2356,2260,2159,2051, 1941,1823,1702,1577,1452,1326,1212,1098,988,889,800,716,628,550,470,378,292,198,104,10, -84,-185,-283,-389,-498,-614,-733,-853,-967,-1087,-1195,-1298,-1395,-1486,-1563,-1638,-1707,-1788,-1860,-1936, -2014,-2099,-2191,-2279,-2368,-2465,-2565,-2661,-2761,-2869,-2983,-3100,-3208,-3329,-3432,-3534,-3628,-3714,-3797,-3875, -3952,-4024,-4106,-4189,-4274,-4369,-4474,-4580,-4687,-4794,-4910,-5022,-5141,-5263,-5392,-5515,-5651,-5773,-5898,-6014, -6119,-6218,-6319,-6412,-6505,-6592,-6689,-6786,-6894,-7014,-7134,-7263,-7385,-7512,-7644,-7774,-7907,-8042,-8178,-8312, -8444,-8573,-8687,-8800,-8893,-8984,-9060,-9135,-9197,-9255,-9316,-9381,-9450,-9520,-9584,-9654,-9717,-9774,-9820,-9864, -9896,-9918,-9933,-9938,-9927,-9899,-9850,-9791,-9700,-9592,-9465,-9325,-9169,-9001,-8822,-8631,-8437,-8226,-8002,-7761, -7507,-7240,-6945,-6639,-6319,-5977,-5617,-5240,-4845,-4436,-4005,-3565,-3118,-2656,-2192,-1727,-1268,-810,-350,109, 560,1025,1479,1939,2386,2821,3254,3667,4065,4445,4817,5168,5505,5814,6117,6396,6646,6877,7080,7253, 7412,7547,7680,7798,7913,8020,8132,8227,8320,8390,8442,8478,8498,8496,8477,8447,8407,8355,8289,8209, 8121,8014,7897,7772,7643,7508,7378,7260,7155,7051,6959,6876,6790,6703,6607,6503,6386,6260,6125,5991, 5858,5717,5570,5428,5282,5128,4974,4821,4671,4524,4382,4259,4154,4053,3963,3890,3810,3731,3644,3548, 3446,3331,3214,3090,2966,2841,2711,2583,2455,2323,2186,2053,1923,1793,1668,1554,1449,1366,1281,1199, 1126,1035,944,839,722,603,470,327,192,-5,31,176,288,481,714,1005,1326,1706,2109,2526, 2921,3308,3667,4002,4320,4629,4910,5160,5378,5574,5744,5883,5995,6111,6246,6415,6602,6803,7011,7239, 7474,7727,7983,8246,8504,8755,8991,9231,9477,9723,9954,10158,10311,10400,10417,10380,10291,10164,10013,9831, 9623,9385,9121,8837,8534,8212,7876,7507,7107,6698,6296,5912,5558,5240,4948,4676,4408,4148,3899,3655, 3424,3204,3004,2824,2650,2492,2354,2235,2111,1992,1877,1747,1611,1476,1346,1226,1116,1023,936,849, 766,692,625,561,508,476,457,450,455,482,511,546,585,611,624,613,592,569,541,515, 498,486,479,482,482,484,484,477,472,461,439,429,422,416,410,407,394,375,336,284, 219,137,45,-51,-142,-229,-325,-414,-492,-572,-650,-730,-803,-877,-954,-1032,-1092,-1144,-1194,-1247, -1301,-1366,-1438,-1530,-1618,-1704,-1786,-1866,-1933,-2003,-2060,-2118,-2172,-2226,-2275,-2330,-2389,-2451,-2504,-2554, -2589,-2611,-2628,-2645,-2664,-2688,-2717,-2748,-2782,-2818,-2861,-2907,-2951,-2989,-3019,-3040,-3052,-3057,-3066,-3086, -3109,-3138,-3177,-3215,-3252,-3286,-3331,-3385,-3455,-3526,-3606,-3703,-3823,-3953,-4105,-4270,-4444,-4620,-4784,-4929, -5071,-5210,-5360,-5531,-5712,-5914,-6116,-6325,-6530,-6736,-6939,-7150,-7361,-7574,-7793,-8024,-8264,-8520,-8787,-9061, -9322,-9556,-9750,-9914,-10053,-10163,-10257,-10346,-10415,-10470,-10505,-10506,-10484,-10435,-10359,-10260,-10121,-9956,-9777,-9581, -9371,-9148,-8895,-8605,-8258,-7854,-7383,-6846,-6259,-5643,-5002,-4347,-3680,-3006,-2336,-1666,-1004,-350,295,934, 1557,2157,2737,3307,3859,4400,4919,5421,5895,6329,6721,7062,7356,7610,7821,8000,8149,8281,8401,8502, 8590,8660,8702,8712,8701,8673,8634,8594,8563,8532,8485,8423,8333,8216,8070,7891,7687,7462,7216,6971, 6735,6510,6300,6103,5917,5728,5531,5322,5112,4899,4691,4499,4317,4146,3980,3826,3672,3516,3350,3178, 2994,2803,2612,2427,2261,2116,1993,1892,1804,1718,1643,1571,1506,1444,1394,1358,1329,1308,1294,1275, 1256,1229,1192,1144,1074,998,922,850,784,737,700,685,666,655,643,626,602,579,550,517, 476,438,400,363,316,267,210,137,47,-59,-167,-276,-382,-476,-561,-637,-705,-773,-840,-914, -994,-1075,-1161,-1260,-1352,-1446,-1536,-1621,-1703,-1784,-1867,-1965,-2065,-2176,-2283,-2384,-2474,-2557,-2624,-2681, -2727,-2760,-2794,-2826,-2854,-2897,-2938,-2985,-3029,-3076,-3109,-3134,-3155,-3183,-3219,-3259,-3316,-3379,-3455,-3525, -3598,-3667,-3723,-3765,-3795,-3810,-3834,-3851,-3879,-3926,-3991,-4071,-4164,-4255,-4358,-4462,-4580,-4703,-4848,-5004, -5184,-5372,-5574,-5779,-5990,-6194,-6382,-6546,-6692,-6826,-6950,-7077,-7222,-7380,-7554,-7743,-7938,-8127,-8307,-8481, -8634,-8772,-8894,-8999,-9090,-9168,-9230,-9268,-9270,-9225,-9119,-8955,-8727,-8445,-8114,-7754,-7361,-6940,-6487,-5998, -5467,-4893,-4273,-3609,-2900,-2155,-1387,-613,167,937,1706,2456,3188,3894,4574,5207,5798,6329,6815,7247, 7639,7993,8314,8595,8845,9064,9247,9397,9506,9577,9610,9613,9588,9556,9515,9479,9431,9368,9286,9172, 9038,8893,8734,8572,8412,8255,8110,7981,7851,7732,7610,7477,7328,7158,6970,6780,6586,6404,6224,6058, 5886,5710,5529,5339,5138,4933,4729,4528,4339,4162,4003,3865,3744,3632,3530,3424,3310,3186,3060,2934, 2812,2701,2602,2501,2408,2316,2222,2126,2026,1926,1827,1728,1637,1553,1486,1434,1393,1359,1328,1291, 1251,1201,1143,1081,1025,962,909,857,803,755,708,664,613,562,510,459,413,377,350,332, 315,303,287,269,244,208,165,122,73,27,-25,-66,-108,-147,-190,-229,-274,-322,-378,-435, -491,-542,-594,-642,-686,-730,-782,-829,-885,-947,-1013,-1086,-1158,-1228,-1298,-1363,-1421,-1474,-1528,-1582, -1638,-1698,-1766,-1837,-1905,-1975,-2029,-2088,-2131,-2173,-2210,-2251,-2292,-2334,-2384,-2439,-2499,-2559,-2618,-2678, -2728,-2777,-2825,-2873,-2930,-2993,-3056,-3126,-3194,-3260,-3318,-3374,-3427,-3476,-3518,-3570,-3625,-3690,-3769,-3858, -3960,-4074,-4182,-4296,-4405,-4513,-4618,-4731,-4849,-4978,-5110,-5248,-5390,-5534,-5682,-5825,-5969,-6107,-6239,-6380, -6532,-6691,-6873,-7067,-7274,-7488,-7693,-7890,-8071,-8242,-8400,-8551,-8701,-8844,-8984,-9117,-9249,-9364,-9460,-9532, -9574,-9586,-9564,-9515,-9447,-9372,-9276,-9172,-9042,-8891,-8699,-8466,-8186,-7867,-7507,-7108,-6675,-6212,-5719,-5198, -4662,-4110,-3536,-2943,-2340,-1725,-1107,-488,127,732,1335,1930,2518,3092,3651,4186,4687,5154,5588,5984, 6348,6683,6986,7270,7527,7752,7948,8115,8248,8348,8423,8484,8531,8570,8609,8650,8684,8709,8716,8698, 8655,8577,8466,8330,8178,8009,7837,7662,7482,7301,7110,6907,6695,6468,6236,5999,5771,5552,5345,5154, 4974,4800,4633,4463,4286,4105,3914,3720,3528,3343,3166,3002,2852,2717,2581,2452,2329,2206,2090,1968, 1868,1778,1707,1647,1607,1569,1548,1524,1489,1453,1405,1343,1282,1218,1159,1105,1062,1020,988,950, 917,881,843,801,759,718,682,652,618,591,556,519,472,408,332,245,151,51,-54,-147, -243,-334,-420,-506,-590,-671,-766,-859,-955,-1050,-1139,-1227,-1309,-1380,-1449,-1525,-1607,-1693,-1780,-1877, -1982,-2080,-2177,-2268,-2349,-2430,-2495,-2558,-2617,-2677,-2736,-2800,-2865,-2931,-2986,-3031,-3072,-3105,-3129,-3153, -3180,-3215,-3260,-3312,-3375,-3440,-3507,-3577,-3640,-3698,-3752,-3802,-3849,-3900,-3957,-4021,-4090,-4168,-4241,-4312, -4378,-4447,-4510,-4587,-4673,-4775,-4893,-5032,-5188,-5358,-5535,-5715,-5893,-6058,-6214,-6362,-6503,-6645,-6793,-6942, -7099,-7260,-7415,-7562,-7698,-7823,-7940,-8043,-8145,-8242,-8340,-8438,-8528,-8612,-8681,-8712,-8706,-8653,-8551,-8397, -8199,-7960,-7696,-7393,-7062,-6695,-6288,-5841,-5349,-4815,-4243,-3638,-3008,-2364,-1706,-1042,-360,331,1029,1733, 2435,3122,3791,4433,5036,5601,6126,6601,7038,7434,7793,8117,8406,8653,8857,9013,9143,9242,9320,9387, 9445,9498,9536,9556,9557,9526,9473,9398,9297,9179,9052,8908,8766,8623,8483,8339,8191,8029,7854,7666, 7475,7285,7099,6921,6751,6587,6425,6253,6073,5889,5688,5479,5264,5042,4826,4616,4417,4232,4060,3897, 3738,3578,3422,3271,3124,2986,2860,2746,2643,2549,2460,2380,2296,2209,2125,2032,1935,1835,1744,1658, 1583,1517,1465,1418,1377,1339,1294,1261,1224,1194,1165,1141,1116,1100,1080,1061,1044,1012,978,935, 885,832,774,726,678,634,599,569,536,505,470,438,400,361,323,281,239,195,150,105, 58,5,-54,-121,-192,-271,-343,-409,-473,-530,-587,-631,-681,-722,-771,-815,-862,-905,-960,-1003, -1051,-1093,-1137,-1176,-1214,-1259,-1304,-1357,-1410,-1466,-1523,-1577,-1628,-1668,-1710,-1745,-1782,-1812,-1843,-1882, -1918,-1961,-2008,-2055,-2098,-2143,-2186,-2232,-2276,-2328,-2387,-2455,-2525,-2602,-2680,-2760,-2835,-2910,-2975,-3037, -3093,-3150,-3205,-3265,-3333,-3409,-3490,-3579,-3666,-3754,-3844,-3941,-4042,-4159,-4277,-4411,-4548,-4694,-4842,-4993, -5144,-5289,-5426,-5558,-5677,-5797,-5922,-6054,-6199,-6356,-6513,-6681,-6848,-7010,-7174,-7337,-7504,-7669,-7829,-7991, -8158,-8317,-8479,-8625,-8770,-8885,-8969,-9031,-9071,-9085,-9089,-9084,-9063,-9032,-8987,-8917,-8833,-8716,-8578,-8414, -8214,-7982,-7717,-7419,-7089,-6729,-6331,-5897,-5423,-4904,-4348,-3759,-3148,-2513,-1862,-1201,-528,145,823,1495, 2154,2794,3412,4005,4568,5098,5593,6060,6492,6894,7263,7596,7882,8116,8301,8437,8538,8603,8649,8675, 8690,8693,8688,8674,8654,8616,8566,8493,8396,8286,8162,8033,7908,7776,7640,7500,7337,7158,6967,6766, 6556,6349,6141,5940,5747,5570,5405,5256,5115,4976,4834,4692,4543,4396,4245,4107,3974,3846,3719,3597, 3470,3341,3206,3072,2935,2802,2667,2545,2432,2336,2253,2184,2128,2073,2017,1960,1900,1846,1787,1729, 1676,1621,1568,1511,1456,1397,1334,1263,1196,1123,1051,982,924,880,846,815,789,766,738,702, 664,618,568,510,452,391,329,260,199,129,61,-18,-99,-188,-271,-358,-437,-507,-575,-637, -700,-761,-825,-897,-969,-1048,-1131,-1220,-1310,-1402,-1492,-1576,-1662,-1745,-1828,-1918,-2011,-2110,-2203,-2287, -2372,-2442,-2506,-2562,-2613,-2660,-2707,-2751,-2803,-2857,-2918,-2988,-3055,-3126,-3194,-3259,-3327,-3389,-3458,-3532, -3613,-3697,-3781,-3859,-3937,-4004,-4066,-4123,-4174,-4226,-4280,-4334,-4406,-4492,-4592,-4712,-4838,-4974,-5110,-5244, -5380,-5525,-5666,-5821,-5974,-6132,-6290,-6445,-6595,-6739,-6873,-6996,-7108,-7215,-7315,-7421,-7533,-7663,-7800,-7945, -8082,-8210,-8317,-8404,-8465,-8507,-8522,-8508,-8474,-8401,-8301,-8163,-7988,-7770,-7503,-7177,-6805,-6379,-5920,-5430, -4905,-4359,-3779,-3172,-2528,-1843,-1128,-377,399,1188,1976,2757,3515,4245,4937,5592,6208,6779,7305,7781, 8199,8560,8877,9143,9373,9568,9731,9873,9987,10079,10146,10188,10204,10190,10148,10077,9991,9889,9776,9654, 9523,9382,9225,9053,8871,8681,8492,8307,8125,7955,7788,7631,7480,7330,7177,7011,6838,6651,6453,6247, 6043,5841,5646,5452,5259,5073,4884,4693,4512,4334,4164,4001,3845,3705,3574,3456,3347,3245,3142,3040, 2927,2815,2700,2582,2470,2363,2258,2158,2064,1972,1886,1803,1724,1651,1579,1516,1456,1406,1365,1328, 1298,1270,1241,1209,1167,1117,1069,1015,957,901,851,800,751,701,658,616,572,531,489,445, 408,371,337,310,275,243,209,164,115,59,-3,-66,-133,-199,-266,-329,-391,-451,-507,-558, -612,-668,-720,-777,-826,-876,-924,-962,-1006,-1048,-1095,-1140,-1189,-1240,-1297,-1355,-1408,-1469,-1525,-1574, -1623,-1668,-1712,-1753,-1791,-1833,-1875,-1913,-1955,-1988,-2022,-2059,-2086,-2121,-2159,-2196,-2237,-2289,-2345,-2409, -2475,-2541,-2612,-2674,-2739,-2801,-2859,-2924,-2985,-3049,-3116,-3186,-3256,-3327,-3395,-3471,-3543,-3625,-3704,-3796, -3892,-3998,-4115,-4242,-4378,-4513,-4653,-4789,-4917,-5044,-5171,-5300,-5428,-5559,-5690,-5826,-5958,-6097,-6233,-6379, -6521,-6660,-6805,-6956,-7111,-7274,-7447,-7632,-7817,-8002,-8171,-8337,-8484,-8620,-8742,-8853,-8958,-9050,-9126,-9197, -9261,-9311,-9352,-9382,-9396,-9389,-9367,-9327,-9278,-9214,-9136,-9040,-8920,-8764,-8572,-8336,-8061,-7735,-7376,-6971, -6522,-6035,-5515,-4959,-4372,-3754,-3111,-2449,-1765,-1067,-359,358,1077,1800,2515,3220,3902,4557,5181,5762, 6294,6778,7211,7588,7913,8191,8436,8644,8813,8951,9058,9125,9163,9167,9152,9121,9075,9022,8958,8881, 8795,8693,8575,8440,8277,8096,7899,7683,7465,7246,7030,6829,6632,6442,6257,6071,5892,5716,5541,5379, 5220,5071,4931,4796,4667,4539,4414,4287,4155,4006,3860,3710,3560,3420,3289,3169,3061,2961,2864,2778, 2693,2616,2542,2469,2403,2338,2275,2222,2169,2117,2060,1998,1928,1852,1764,1676,1590,1503,1422,1346, 1278,1217,1157,1102,1054,1003,951,900,849,797,745,694,642,591,537,473,403,332,251,167, 84,2,-74,-145,-215,-274,-329,-382,-429,-477,-525,-582,-635,-689,-742,-792,-840,-890,-946,-1003, -1066,-1136,-1206,-1279,-1356,-1431,-1502,-1575,-1638,-1698,-1746,-1796,-1844,-1895,-1945,-2000,-2059,-2112,-2171,-2230, -2286,-2344,-2411,-2474,-2554,-2633,-2721,-2811,-2909,-3005,-3103,-3194,-3280,-3358,-3432,-3499,-3570,-3641,-3718,-3799, -3887,-3979,-4073,-4171,-4275,-4383,-4494,-4612,-4736,-4869,-5009,-5156,-5310,-5464,-5616,-5760,-5893,-6017,-6132,-6233, -6341,-6444,-6551,-6665,-6780,-6904,-7026,-7146,-7272,-7392,-7505,-7616,-7720,-7822,-7922,-8016,-8102,-8178,-8223,-8244, -8234,-8189,-8112,-8003,-7872,-7717,-7536,-7338,-7120,-6881,-6617,-6316,-5980,-5603,-5182,-4718,-4219,-3687,-3121,-2522, -1887,-1222,-524,198,935,1681,2424,3156,3864,4538,5174,5774,6333,6854,7337,7787,8201,8574,8903,9188, 9434,9637,9806,9938,10041,10111,10143,10146,10120,10058,9974,9865,9733,9593,9440,9284,9127,8974,8823,8669, 8516,8356,8186,8013,7835,7655,7475,7290,7105,6920,6728,6537,6341,6139,5937,5732,5533,5338,5152,4977, 4819,4671,4534,4402,4275,4152,4027,3903,3782,3663,3546,3425,3312,3201,3092,2979,2873,2766,2658,2546, 2443,2340,2250,2161,2088,2022,1963,1906,1848,1795,1739,1685,1624,1569,1505,1445,1382,1321,1261,1201, 1138,1079,1011,949,882,823,766,715,669,632,596,562,528,491,457,420,377,332,286,237, 188,142,93,47,-2,-50,-101,-150,-199,-249,-294,-333,-371,-407,-438,-470,-497,-528,-566,-602, -642,-689,-730,-777,-821,-867,-914,-961,-1006,-1057,-1104,-1155,-1201,-1253,-1300,-1344,-1388,-1429,-1465,-1500, -1537,-1574,-1614,-1659,-1707,-1760,-1813,-1869,-1930,-1990,-2049,-2110,-2170,-2234,-2300,-2364,-2435,-2502,-2570,-2635, -2697,-2755,-2813,-2869,-2927,-2987,-3055,-3130,-3210,-3296,-3395,-3492,-3596,-3700,-3808,-3919,-4029,-4143,-4266,-4383, -4504,-4626,-4751,-4876,-4996,-5112,-5232,-5349,-5466,-5590,-5720,-5864,-6010,-6167,-6334,-6502,-6676,-6845,-7014,-7184, -7343,-7503,-7661,-7814,-7964,-8107,-8244,-8372,-8483,-8588,-8676,-8756,-8819,-8880,-8936,-8991,-9039,-9077,-9109,-9123, -9118,-9095,-9042,-8964,-8853,-8710,-8533,-8324,-8075,-7793,-7467,-7105,-6702,-6258,-5770,-5254,-4704,-4121,-3513,-2875, -2210,-1515,-801,-69,671,1419,2152,2877,3575,4250,4888,5491,6051,6571,7040,7469,7842,8167,8440,8667, 8844,8991,9107,9203,9279,9338,9382,9405,9403,9377,9322,9246,9141,9019,8880,8734,8576,8410,8242,8067, 7885,7695,7503,7306,7109,6919,6742,6569,6412,6259,6120,5985,5849,5711,5564,5417,5262,5098,4936,4777, 4621,4467,4321,4176,4034,3895,3759,3626,3497,3375,3265,3164,3072,2988,2908,2838,2765,2692,2615,2531, 2445,2348,2251,2153,2060,1969,1879,1795,1710,1627,1544,1465,1389,1316,1245,1181,1123,1069,1015,966, 913,859,795,728,649,572,487,400,315,232,151,71,-5,-82,-160,-234,-305,-377,-447,-512, -574,-629,-685,-739,-792,-844,-908,-973,-1042,-1116,-1192,-1271,-1345,-1415,-1490,-1558,-1620,-1682,-1742,-1799, -1856,-1913,-1968,-2019,-2067,-2110,-2149,-2190,-2236,-2276,-2327,-2387,-2449,-2516,-2592,-2673,-2754,-2833,-2909,-2989, -3062,-3130,-3206,-3276,-3352,-3429,-3505,-3580,-3658,-3728,-3802,-3881,-3957,-4042,-4139,-4240,-4355,-4478,-4614,-4749, -4896,-5034,-5170,-5300,-5428,-5544,-5661,-5775,-5896,-6012,-6123,-6236,-6343,-6443,-6541,-6637,-6732,-6822,-6921,-7016, -7123,-7227,-7336,-7442,-7539,-7616,-7676,-7710,-7719,-7704,-7667,-7612,-7540,-7450,-7336,-7202,-7045,-6863,-6648,-6410, -6142,-5849,-5528,-5181,-4811,-4418,-3995,-3544,-3050,-2522,-1951,-1339,-699,-38,641,1321,1996,2660,3305,3928, 4530,5095,5642,6152,6629,7073,7481,7854,8193,8497,8767,9005,9204,9372,9503,9602,9667,9697,9693,9661, 9604,9530,9435,9328,9216,9088,8950,8807,8654,8501,8344,8188,8033,7882,7724,7569,7402,7236,7062,6878, 6689,6493,6292,6094,5897,5706,5522,5345,5178,5018,4860,4707,4562,4422,4288,4162,4041,3928,3819,3707, 3606,3502,3396,3287,3171,3059,2943,2827,2724,2624,2530,2442,2362,2283,2214,2144,2082,2018,1958,1904, 1851,1799,1748,1696,1650,1597,1543,1483,1417,1348,1279,1209,1141,1079,1019,965,911,860,816,770, 726,683,642,596,552,512,470,428,383,338,289,236,179,120,62,-1,-59,-112,-163,-209, -258,-299,-339,-375,-412,-451,-485,-523,-563,-601,-638,-675,-713,-754,-797,-841,-891,-944,-997,-1048, -1099,-1148,-1196,-1241,-1281,-1321,-1359,-1396,-1432,-1473,-1514,-1553,-1599,-1645,-1690,-1738,-1786,-1840,-1894,-1958, -2020,-2093,-2166,-2236,-2310,-2380,-2451,-2518,-2582,-2642,-2706,-2765,-2828,-2897,-2964,-3038,-3110,-3193,-3272,-3355, -3443,-3537,-3635,-3739,-3848,-3962,-4081,-4204,-4326,-4447,-4568,-4679,-4794,-4898,-5010,-5116,-5228,-5346,-5466,-5589, -5720,-5853,-5993,-6136,-6282,-6430,-6582,-6735,-6896,-7059,-7227,-7390,-7551,-7702,-7847,-7973,-8089,-8195,-8296,-8388, -8473,-8554,-8634,-8704,-8767,-8823,-8870,-8906,-8930,-8936,-8926,-8898,-8849,-8780,-8680,-8556,-8393,-8185,-7941,-7649, -7317,-6946,-6537,-6091,-5608,-5083,-4529,-3940,-3317,-2663,-1987,-1288,-573,154,890,1619,2344,3056,3752,4415, 5049,5641,6184,6674,7111,7495,7825,8107,8344,8547,8713,8853,8963,9049,9111,9141,9148,9127,9080,9020, 8944,8862,8761,8658,8527,8390,8234,8066,7883,7694,7500,7304,7106,6918,6742,6578,6423,6281,6137,5999, 5858,5713,5573,5434,5295,5161,5031,4895,4759,4623,4486,4347,4202,4059,3916,3779,3642,3521,3410,3313, 3222,3140,3065,2985,2907,2831,2756,2682,2606,2528,2453,2372,2294,2211,2129,2046,1960,1863,1775,1685, 1602,1524,1454,1391,1337,1285,1234,1183,1132,1075,1020,962,900,832,766,699,629,564,490,418, 338,259,178,101,26,-43,-107,-167,-220,-271,-322,-370,-421,-472,-532,-592,-652,-717,-788,-853, -921,-989,-1058,-1131,-1206,-1283,-1361,-1437,-1508,-1578,-1644,-1704,-1759,-1813,-1866,-1913,-1967,-2020,-2086,-2153, -2227,-2300,-2383,-2462,-2544,-2625,-2712,-2799,-2891,-2983,-3079,-3173,-3264,-3355,-3441,-3524,-3600,-3677,-3745,-3821, -3893,-3980,-4072,-4173,-4284,-4397,-4514,-4635,-4755,-4880,-5004,-5134,-5264,-5395,-5525,-5656,-5785,-5908,-6027,-6137, -6238,-6329,-6417,-6500,-6587,-6680,-6780,-6884,-6992,-7103,-7209,-7310,-7402,-7485,-7555,-7611,-7656,-7683,-7696,-7692, -7669,-7623,-7553,-7452,-7318,-7153,-6956,-6734,-6494,-6229,-5947,-5644,-5313,-4956,-4563,-4134,-3669,-3160,-2614,-2027, -1410,-765,-101,577,1262,1949,2627,3297,3946,4572,5172,5738,6274,6765,7223,7645,8028,8375,8685,8962, 9206,9411,9586,9721,9820,9888,9928,9938,9922,9879,9814,9720,9611,9488,9351,9207,9061,8906,8759,8610, 8463,8321,8170,8023,7871,7708,7542,7367,7192,7010,6826,6642,6467,6282,6097,5917,5742,5563,5393,5226, 5072,4922,4779,4653,4533,4421,4307,4199,4087,3976,3860,3745,3628,3512,3398,3283,3172,3064,2958,2859, 2755,2658,2563,2473,2385,2308,2233,2166,2105,2047,1988,1928,1869,1807,1743,1672,1604,1533,1463,1388, 1318,1252,1186,1123,1062,1002,945,886,833,784,736,692,654,615,582,538,501,457,410,360, 304,251,195,138,86,32,-18,-67,-116,-161,-208,-253,-299,-336,-374,-413,-447,-479,-513,-550, -589,-629,-675,-720,-771,-819,-874,-928,-980,-1029,-1077,-1125,-1175,-1219,-1266,-1313,-1359,-1403,-1444,-1485, -1530,-1566,-1610,-1651,-1698,-1747,-1799,-1859,-1922,-1986,-2055,-2123,-2189,-2256,-2322,-2383,-2449,-2515,-2577,-2644, -2710,-2776,-2843,-2906,-2973,-3041,-3109,-3181,-3259,-3346,-3437,-3533,-3641,-3753,-3865,-3980,-4090,-4207,-4323,-4438, -4550,-4668,-4782,-4898,-5015,-5133,-5254,-5375,-5496,-5620,-5742,-5871,-6005,-6147,-6299,-6459,-6625,-6795,-6966,-7135, -7299,-7459,-7615,-7763,-7903,-8042,-8171,-8292,-8411,-8527,-8633,-8729,-8815,-8897,-8969,-9029,-9083,-9134,-9179,-9216, -9237,-9239,-9221,-9168,-9089,-8974,-8823,-8634,-8403,-8138,-7830,-7480,-7090,-6657,-6187,-5666,-5107,-4507,-3873,-3207, -2511,-1790,-1048,-288,490,1275,2065,2845,3600,4328,5012,5645,6233,6767,7248,7680,8065,8402,8688,8924, 9123,9271,9385,9464,9515,9539,9544,9523,9494,9448,9388,9306,9205,9080,8936,8768,8588,8397,8201,8007, 7815,7623,7435,7250,7068,6892,6717,6547,6382,6222,6068,5922,5780,5645,5513,5377,5237,5092,4940,4784, 4623,4465,4313,4166,4021,3891,3761,3643,3526,3416,3312,3214,3117,3025,2940,2856,2781,2707,2633,2558, 2476,2390,2298,2203,2107,2006,1908,1817,1730,1647,1568,1492,1424,1359,1288,1227,1163,1099,1042,987, 931,873,816,757,695,621,551,475,396,313,233,159,81,10,-56,-117,-173,-230,-286,-340, -393,-452,-500,-552,-603,-656,-706,-759,-811,-874,-936,-1004,-1072,-1145,-1221,-1288,-1353,-1415,-1473,-1526, -1576,-1624,-1673,-1725,-1773,-1823,-1874,-1926,-1977,-2032,-2087,-2148,-2211,-2273,-2348,-2427,-2510,-2596,-2681,-2771, -2852,-2933,-3009,-3079,-3148,-3216,-3289,-3362,-3435,-3512,-3593,-3673,-3763,-3853,-3947,-4046,-4146,-4252,-4374,-4493, -4624,-4754,-4887,-5020,-5149,-5265,-5379,-5488,-5589,-5687,-5786,-5884,-5985,-6088,-6192,-6304,-6410,-6519,-6621,-6728, -6835,-6934,-7037,-7145,-7248,-7346,-7435,-7510,-7573,-7610,-7625,-7621,-7590,-7544,-7474,-7392,-7293,-7185,-7059,-6918, -6754,-6563,-6346,-6098,-5820,-5507,-5161,-4788,-4377,-3925,-3438,-2909,-2345,-1744,-1106,-439,248,950,1651,2347, 3027,3680,4312,4917,5489,6038,6553,7034,7482,7892,8265,8607,8906,9166,9385,9561,9699,9792,9850,9873, 9862,9828,9766,9687,9594,9486,9370,9248,9116,8978,8832,8685,8530,8371,8210,8048,7882,7713,7541,7363, 7183,6994,6798,6603,6407,6207,6018,5833,5658,5493,5335,5190,5051,4910,4780,4653,4523,4398,4274,4154, 4037,3917,3803,3687,3569,3454,3333,3214,3100,2983,2873,2773,2676,2590,2506,2433,2358,2293,2227,2161, 2097,2028,1963,1895,1828,1764,1697,1633,1564,1498,1422,1354,1282,1213,1144,1083,1026,971,923,877, 833,794,754,714,674,628,583,539,492,446,398,354,308,256,208,156,106,56,6,-36, -76,-117,-149,-182,-212,-240,-268,-298,-331,-365,-402,-442,-481,-520,-560,-604,-642,-686,-732,-776, -821,-868,-915,-960,-999,-1039,-1075,-1111,-1146,-1182,-1215,-1259,-1297,-1344,-1391,-1443,-1496,-1550,-1604,-1663, -1724,-1782,-1846,-1909,-1978,-2045,-2111,-2176,-2243,-2301,-2361,-2418,-2479,-2536,-2597,-2661,-2732,-2804,-2883,-2970, -3056,-3151,-3244,-3336,-3436,-3536,-3639,-3741,-3853,-3964,-4076,-4184,-4296,-4404,-4507,-4612,-4715,-4822,-4931,-5044, -5166,-5298,-5432,-5580,-5728,-5884,-6038,-6193,-6352,-6512,-6672,-6835,-6997,-7158,-7319,-7476,-7625,-7771,-7903,-8032, -8155,-8273,-8390,-8501,-8621,-8739,-8858,-8975,-9083,-9180,-9267,-9338,-9390,-9424,-9437,-9426,-9396,-9335,-9249,-9124, -8963,-8766,-8526,-8245,-7922,-7560,-7165,-6731,-6257,-5746,-5192,-4595,-3954,-3269,-2549,-1797,-1013,-216,588,1397, 2198,2981,3739,4462,5149,5788,6375,6908,7384,7808,8178,8499,8781,9027,9231,9406,9548,9654,9724,9760, 9764,9738,9680,9599,9500,9385,9254,9113,8956,8799,8626,8444,8259,8072,7887,7708,7539,7378,7230,7082, 6944,6808,6670,6528,6384,6233,6077,5917,5760,5604,5450,5300,5150,5000,4856,4709,4568,4431,4299,4179, 4059,3956,3860,3768,3684,3599,3516,3430,3340,3242,3142,3040,2938,2842,2738,2643,2546,2452,2358,2269, 2175,2091,2008,1928,1851,1782,1721,1663,1603,1549,1490,1426,1359,1289,1212,1131,1051,968,887,805, 729,647,573,495,422,348,278,207,139,76,16,-38,-93,-147,-202,-262,-327,-397,-470,-547, -621,-703,-776,-855,-927,-1001,-1071,-1140,-1207,-1278,-1343,-1408,-1469,-1531,-1584,-1637,-1687,-1742,-1795,-1857, -1920,-1992,-2067,-2150,-2231,-2316,-2405,-2487,-2572,-2651,-2732,-2811,-2889,-2968,-3050,-3127,-3202,-3278,-3350,-3424, -3494,-3567,-3648,-3731,-3819,-3918,-4028,-4142,-4259,-4378,-4504,-4620,-4736,-4846,-4955,-5068,-5174,-5274,-5381,-5485, -5583,-5685,-5778,-5875,-5966,-6053,-6147,-6241,-6340,-6450,-6560,-6674,-6791,-6902,-7009,-7105,-7188,-7253,-7306,-7347, -7374,-7383,-7387,-7376,-7348,-7311,-7254,-7179,-7087,-6975,-6845,-6697,-6531,-6348,-6146,-5929,-5682,-5403,-5083,-4730, -4324,-3883,-3399,-2877,-2323,-1736,-1124,-500,142,791,1439,2087,2727,3353,3964,4554,5117,5660,6173,6655, 7105,7524,7904,8247,8552,8815,9036,9224,9366,9476,9551,9598,9611,9603,9565,9508,9431,9341,9238,9132, 9013,8895,8769,8643,8508,8369,8220,8063,7892,7714,7529,7340,7145,6953,6764,6576,6396,6218,6044,5874, 5708,5545,5393,5243,5099,4965,4837,4710,4591,4468,4346,4222,4097,3964,3838,3699,3570,3441,3319,3202, 3095,2991,2891,2792,2705,2615,2532,2450,2373,2299,2233,2162,2095,2030,1961,1891,1821,1739,1658,1581, 1500,1426,1346,1282,1215,1154,1095,1042,987,935,885,834,788,744,697,656,614,570,525,475, 427,373,316,261,203,150,91,45,-4,-45,-88,-126,-164,-199,-235,-273,-309,-344,-379,-414, -448,-485,-518,-562,-604,-650,-697,-750,-794,-845,-890,-937,-980,-1020,-1058,-1096,-1130,-1167,-1203,-1247, -1288,-1325,-1367,-1413,-1455,-1500,-1548,-1600,-1657,-1717,-1780,-1844,-1909,-1977,-2045,-2112,-2177,-2235,-2292,-2352, -2408,-2469,-2529,-2591,-2659,-2730,-2795,-2866,-2944,-3017,-3098,-3182,-3273,-3368,-3465,-3569,-3677,-3783,-3888,-3993, -4098,-4196,-4291,-4386,-4486,-4586,-4688,-4793,-4908,-5024,-5140,-5259,-5386,-5513,-5646,-5782,-5923,-6073,-6230,-6383, -6548,-6707,-6868,-7020,-7167,-7305,-7438,-7567,-7693,-7816,-7939,-8065,-8187,-8311,-8433,-8548,-8663,-8773,-8870,-8965, -9053,-9132,-9205,-9260,-9306,-9322,-9315,-9279,-9206,-9106,-8973,-8802,-8602,-8371,-8105,-7811,-7476,-7108,-6700,-6247, -5750,-5209,-4629,-4007,-3353,-2663,-1946,-1201,-435,343,1126,1909,2674,3412,4114,4772,5383,5943,6458,6931, 7357,7741,8084,8388,8647,8862,9032,9170,9269,9338,9374,9386,9371,9333,9270,9187,9078,8954,8801,8640, 8470,8295,8117,7949,7787,7629,7480,7330,7184,7037,6890,6741,6593,6442,6297,6149,6001,5854,5706,5554, 5397,5240,5080,4916,4754,4601,4453,4320,4195,4080,3970,3869,3767,3670,3571,3475,3380,3285,3190,3093, 2999,2905,2814,2717,2619,2516,2414,2309,2210,2112,2022,1937,1861,1791,1725,1665,1603,1546,1485,1424, 1360,1294,1231,1161,1093,1026,959,887,813,739,660,581,503,428,356,289,227,172,119,67, 21,-31,-79,-134,-194,-253,-315,-377,-445,-507,-575,-638,-708,-779,-858,-928,-1000,-1077,-1145,-1211, -1273,-1332,-1386,-1436,-1486,-1542,-1595,-1655,-1721,-1790,-1862,-1935,-2009,-2089,-2166,-2249,-2326,-2416,-2501,-2589, -2682,-2770,-2857,-2943,-3022,-3094,-3166,-3236,-3304,-3376,-3454,-3538,-3623,-3720,-3815,-3921,-4027,-4134,-4247,-4357, -4470,-4583,-4699,-4816,-4933,-5049,-5166,-5278,-5380,-5480,-5568,-5652,-5740,-5827,-5920,-6016,-6120,-6226,-6332,-6446, -6557,-6668,-6771,-6875,-6966,-7049,-7126,-7198,-7263,-7316,-7357,-7380,-7384,-7368,-7336,-7283,-7210,-7127,-7031,-6924, -6800,-6665,-6517,-6345,-6151,-5926,-5668,-5380,-5043,-4674,-4268,-3824,-3345,-2836,-2288,-1718,-1118,-493,147,796, 1454,2104,2746,3372,3980,4564,5127,5658,6170,6644,7093,7506,7887,8235,8545,8814,9048,9242,9399,9518, 9594,9648,9661,9650,9617,9565,9498,9422,9338,9247,9152,9047,8930,8811,8677,8533,8382,8227,8065,7897, 7727,7556,7380,7203,7019,6838,6655,6475,6293,6124,5958,5801,5652,5514,5380,5257,5128,5003,4875,4746, 4615,4477,4349,4219,4087,3961,3839,3714,3593,3477,3360,3250,3141,3035,2940,2853,2767,2686,2617,2548, 2477,2405,2333,2260,2185,2104,2024,1943,1866,1787,1715,1641,1570,1497,1426,1357,1294,1231,1172,1119, 1069,1020,972,930,889,840,794,744,695,634,580,520,464,406,350,299,245,194,142,93, 47,-2,-44,-86,-126,-163,-198,-234,-267,-303,-343,-381,-425,-469,-521,-573,-624,-672,-721,-763, -814,-856,-901,-946,-989,-1034,-1076,-1116,-1155,-1197,-1233,-1269,-1310,-1352,-1396,-1442,-1500,-1555,-1615,-1680, -1743,-1804,-1865,-1928,-1991,-2054,-2114,-2176,-2240,-2300,-2360,-2428,-2488,-2548,-2610,-2673,-2739,-2805,-2879,-2959, -3043,-3133,-3230,-3329,-3433,-3534,-3634,-3737,-3838,-3937,-4039,-4144,-4247,-4352,-4459,-4568,-4674,-4782,-4888,-4999, -5115,-5230,-5356,-5487,-5630,-5774,-5928,-6085,-6246,-6403,-6557,-6711,-6862,-7001,-7145,-7285,-7425,-7567,-7701,-7834, -7967,-8088,-8206,-8318,-8428,-8536,-8648,-8753,-8860,-8960,-9056,-9142,-9215,-9270,-9297,-9301,-9280,-9232,-9150,-9048, -8914,-8752,-8558,-8326,-8058,-7753,-7404,-7017,-6589,-6123,-5619,-5075,-4493,-3874,-3214,-2519,-1787,-1033,-256,529, 1315,2092,2850,3573,4265,4917,5521,6088,6610,7080,7508,7883,8212,8496,8733,8934,9104,9235,9343,9418, 9464,9477,9462,9414,9337,9236,9119,8981,8834,8680,8517,8356,8194,8029,7869,7707,7545,7384,7221,7070, 6925,6780,6642,6503,6366,6225,6075,5921,5762,5602,5434,5271,5107,4951,4801,4657,4519,4392,4263,4143, 4023,3908,3799,3689,3591,3497,3403,3311,3221,3128,3031,2930,2822,2717,2610,2501,2395,2292,2194,2102, 2016,1936,1856,1780,1706,1637,1562,1498,1433,1373,1314,1252,1193,1130,1064,991,915,837,755,674, 596,519,447,378,313,253,194,134,82,24,-31,-85,-140,-192,-243,-298,-353,-408,-465,-530, -595,-671,-743,-816,-889,-955,-1027,-1087,-1152,-1210,-1265,-1317,-1374,-1425,-1480,-1536,-1593,-1656,-1713,-1772, -1835,-1900,-1967,-2039,-2122,-2204,-2289,-2376,-2467,-2552,-2635,-2717,-2791,-2869,-2938,-3005,-3078,-3153,-3228,-3306, -3387,-3469,-3556,-3640,-3730,-3825,-3918,-4025,-4130,-4246,-4365,-4484,-4606,-4725,-4842,-4951,-5054,-5155,-5249,-5342, -5436,-5533,-5629,-5730,-5832,-5934,-6045,-6153,-6256,-6366,-6475,-6584,-6697,-6811,-6924,-7032,-7134,-7230,-7311,-7378, -7428,-7461,-7479,-7482,-7470,-7454,-7426,-7388,-7340,-7279,-7206,-7108,-6993,-6857,-6699,-6515,-6297,-6053,-5780,-5473, -5129,-4744,-4320,-3848,-3338,-2789,-2207,-1593,-959,-305,351,1022,1682,2343,2989,3621,4230,4824,5386,5929, 6445,6926,7375,7788,8159,8491,8777,9020,9222,9377,9494,9574,9624,9648,9649,9625,9588,9529,9459,9373, 9273,9163,9045,8911,8780,8641,8499,8346,8188,8028,7854,7672,7486,7290,7097,6901,6712,6528,6350,6179, 6019,5865,5716,5571,5427,5285,5144,5006,4872,4741,4606,4481,4347,4221,4092,3966,3830,3697,3568,3441, 3319,3202,3094,2994,2900,2815,2732,2654,2574,2496,2421,2344,2263,2190,2117,2042,1969,1893,1818,1744, 1666,1587,1515,1440,1368,1301,1240,1186,1131,1088,1042,999,957,909,865,820,772,723,676,629, 584,531,482,432,384,328,276,227,177,128,85,47,9,-26,-56,-88,-119,-154,-190,-229, -268,-311,-352,-394,-437,-482,-524,-572,-617,-666,-710,-760,-802,-848,-890,-929,-963,-1001,-1034,-1067, -1103,-1141,-1184,-1225,-1270,-1320,-1372,-1422,-1474,-1529,-1584,-1641,-1698,-1760,-1821,-1881,-1943,-2004,-2063,-2119, -2173,-2225,-2283,-2334,-2391,-2455,-2516,-2589,-2663,-2740,-2823,-2908,-2991,-3079,-3170,-3264,-3359,-3454,-3551,-3655, -3754,-3857,-3955,-4058,-4153,-4247,-4343,-4439,-4542,-4651,-4767,-4889,-5017,-5151,-5289,-5430,-5574,-5719,-5865,-6014, -6167,-6317,-6473,-6629,-6781,-6934,-7083,-7224,-7363,-7499,-7626,-7757,-7884,-8015,-8153,-8289,-8433,-8573,-8710,-8842, -8968,-9075,-9173,-9260,-9331,-9391,-9431,-9453,-9454,-9429,-9377,-9292,-9179,-9034,-8854,-8644,-8405,-8129,-7823,-7480, -7105,-6684,-6215,-5697,-5136,-4527,-3870,-3174,-2447,-1697,-921,-133,663,1459,2244,3009,3743,4438,5090,5700, 6258,6773,7242,7667,8050,8388,8689,8946,9162,9327,9457,9543,9588,9600,9582,9539,9474,9388,9284,9164, 9027,8881,8721,8561,8402,8238,8080,7931,7783,7641,7505,7368,7224,7077,6924,6766,6602,6442,6272,6108, 5947,5784,5621,5467,5309,5151,5000,4857,4712,4579,4452,4336,4225,4125,4024,3928,3833,3728,3626,3519, 3411,3297,3187,3076,2971,2865,2760,2660,2563,2467,2370,2278,2189,2106,2025,1953,1887,1824,1760,1699, 1633,1568,1497,1424,1347,1269,1186,1105,1027,951,876,799,726,655,584,516,444,380,314,260, 206,155,108,55,-2,-56,-117,-183,-249,-318,-392,-465,-539,-608,-677,-742,-813,-877,-942,-1008, -1068,-1130,-1184,-1247,-1298,-1350,-1403,-1456,-1515,-1575,-1637,-1709,-1783,-1864,-1944,-2027,-2114,-2195,-2274,-2352, -2433,-2508,-2586,-2663,-2743,-2819,-2895,-2965,-3041,-3112,-3183,-3258,-3334,-3418,-3506,-3601,-3704,-3810,-3921,-4035, -4146,-4258,-4367,-4472,-4578,-4680,-4782,-4883,-4985,-5087,-5186,-5285,-5387,-5481,-5574,-5671,-5766,-5870,-5979,-6092, -6212,-6338,-6461,-6587,-6705,-6817,-6924,-7017,-7102,-7178,-7242,-7298,-7346,-7388,-7422,-7443,-7456,-7456,-7436,-7409, -7368,-7321,-7263,-7191,-7107,-7004,-6876,-6727,-6546,-6332,-6078,-5786,-5450,-5079,-4665,-4217,-3735,-3218,-2680,-2111, -1514,-901,-267,375,1029,1684,2335,2974,3605,4219,4808,5383,5923,6436,6912,7351,7755,8115,8433,8711, 8947,9149,9305,9425,9515,9572,9600,9604,9583,9548,9499,9437,9364,9279,9182,9076,8962,8827,8681,8519, 8348,8173,7991,7806,7623,7439,7261,7081,6902,6729,6559,6388,6230,6070,5914,5764,5619,5481,5349,5212, 5075,4934,4792,4644,4497,4351,4203,4061,3924,3796,3671,3554,3434,3326,3222,3118,3018,2926,2837,2745, 2662,2581,2505,2426,2345,2262,2180,2092,2003,1911,1828,1738,1657,1579,1507,1439,1373,1309,1251,1191, 1132,1078,1024,971,919,872,821,774,719,670,616,556,497,435,376,320,261,210,163,113, 71,29,-13,-54,-92,-131,-172,-209,-245,-287,-323,-364,-404,-451,-496,-543,-591,-646,-696,-745, -796,-844,-883,-924,-962,-999,-1039,-1074,-1112,-1150,-1189,-1232,-1268,-1313,-1357,-1400,-1445,-1495,-1547,-1600, -1657,-1715,-1777,-1839,-1896,-1956,-2011,-2063,-2114,-2165,-2220,-2271,-2324,-2378,-2439,-2498,-2559,-2623,-2691,-2761, -2832,-2906,-2985,-3065,-3153,-3240,-3335,-3429,-3522,-3611,-3700,-3788,-3870,-3958,-4046,-4136,-4228,-4324,-4425,-4528, -4636,-4746,-4861,-4981,-5101,-5226,-5358,-5497,-5638,-5785,-5932,-6084,-6233,-6376,-6515,-6651,-6785,-6916,-7044,-7176, -7308,-7442,-7580,-7721,-7862,-8001,-8138,-8275,-8406,-8534,-8662,-8788,-8908,-9017,-9119,-9208,-9279,-9331,-9356,-9361, -9340,-9294,-9227,-9136,-9025,-8892,-8732,-8545,-8328,-8072,-7778,-7443,-7070,-6656,-6194,-5689,-5146,-4558,-3927,-3255, -2557,-1819,-1061,-292,484,1256,2008,2743,3450,4123,4762,5367,5930,6453,6932,7368,7757,8100,8401,8652, 8865,9034,9165,9261,9320,9343,9332,9290,9219,9126,9018,8893,8765,8629,8499,8366,8232,8098,7962,7825, 7683,7539,7391,7242,7091,6939,6788,6632,6479,6320,6152,5982,5814,5643,5477,5315,5158,5013,4877,4746, 4628,4508,4398,4290,4181,4071,3962,3850,3741,3634,3529,3420,3313,3206,3094,2981,2872,2760,2651,2546, 2447,2358,2272,2193,2121,2053,1988,1922,1855,1789,1715,1643,1574,1500,1427,1359,1282,1212,1132,1055, 973,900,821,749,677,609,550,490,438,387,335,285,233,183,122,59,-3,-61,-126,-193, -254,-326,-395,-465,-534,-603,-673,-744,-807,-869,-927,-983,-1034,-1082,-1134,-1182,-1238,-1294,-1355,-1418, -1490,-1555,-1626,-1702,-1770,-1849,-1928,-2005,-2085,-2168,-2250,-2330,-2411,-2487,-2559,-2632,-2696,-2763,-2828,-2900, -2972,-3047,-3129,-3216,-3312,-3405,-3502,-3606,-3707,-3808,-3911,-4016,-4124,-4235,-4342,-4449,-4556,-4658,-4756,-4849, -4943,-5029,-5120,-5209,-5306,-5404,-5507,-5621,-5736,-5858,-5978,-6093,-6211,-6322,-6435,-6542,-6644,-6750,-6846,-6932, -7012,-7081,-7137,-7186,-7217,-7242,-7257,-7256,-7253,-7246,-7232,-7209,-7179,-7141,-7081,-7000,-6896,-6767,-6608,-6420, -6200,-5952,-5666,-5345,-4988,-4594,-4163,-3699,-3201,-2676,-2119,-1539,-943,-329,295,922,1558,2188,2816,3433, 4034,4618,5180,5720,6230,6709,7149,7560,7925,8249,8530,8773,8969,9134,9254,9350,9414,9460,9478,9482, 9473,9443,9393,9329,9250,9152,9036,8917,8782,8639,8484,8324,8164,7993,7818,7646,7456,7277,7095,6914, 6743,6582,6421,6270,6124,5981,5842,5697,5556,5412,5265,5116,4967,4815,4672,4526,4384,4249,4113,3977, 3848,3719,3596,3475,3362,3260,3160,3067,2983,2896,2818,2733,2648,2562,2477,2384,2298,2206,2119,2033, 1949,1867,1788,1709,1633,1562,1490,1425,1356,1300,1244,1190,1139,1093,1046,995,942,891,836,780, 719,661,604,545,487,431,380,329,277,230,182,136,89,45,9,-33,-71,-105,-140,-179, -220,-263,-309,-355,-407,-458,-507,-556,-608,-655,-703,-746,-791,-835,-876,-919,-960,-1003,-1042,-1078, -1115,-1154,-1188,-1232,-1276,-1323,-1376,-1430,-1486,-1542,-1601,-1659,-1714,-1775,-1832,-1885,-1940,-1998,-2053,-2112, -2165,-2226,-2284,-2338,-2395,-2455,-2510,-2577,-2639,-2710,-2787,-2868,-2949,-3036,-3126,-3215,-3303,-3393,-3483,-3572, -3655,-3747,-3839,-3929,-4023,-4114,-4211,-4305,-4401,-4500,-4606,-4708,-4821,-4939,-5067,-5196,-5332,-5472,-5616,-5759, -5905,-6041,-6180,-6317,-6452,-6586,-6726,-6858,-6994,-7128,-7263,-7394,-7524,-7652,-7783,-7911,-8040,-8172,-8306,-8444, -8575,-8704,-8825,-8935,-9023,-9103,-9160,-9202,-9223,-9225,-9210,-9177,-9120,-9043,-8941,-8809,-8650,-8461,-8238,-7986, -7699,-7377,-7019,-6628,-6188,-5710,-5181,-4612,-3998,-3340,-2653,-1937,-1205,-459,295,1045,1787,2514,3218,3893, 4532,5135,5698,6221,6702,7141,7536,7893,8207,8484,8717,8904,9051,9159,9225,9254,9247,9214,9158,9083, 8991,8893,8784,8670,8543,8413,8278,8142,8004,7867,7730,7595,7459,7321,7184,7038,6883,6728,6566,6400, 6227,6053,5884,5718,5557,5404,5258,5115,4979,4842,4713,4588,4467,4349,4237,4129,4021,3917,3809,3702, 3595,3482,3368,3248,3130,3007,2894,2783,2680,2577,2484,2393,2306,2223,2143,2064,1987,1914,1841,1769, 1703,1632,1564,1492,1423,1343,1265,1179,1098,1013,931,853,778,707,640,579,515,457,397,341, 283,228,170,113,56,1,-58,-118,-182,-244,-316,-386,-463,-535,-610,-680,-747,-812,-875,-934, -987,-1041,-1097,-1152,-1210,-1262,-1324,-1379,-1437,-1498,-1559,-1623,-1694,-1762,-1838,-1917,-1998,-2082,-2164,-2246, -2323,-2402,-2473,-2546,-2612,-2676,-2745,-2820,-2888,-2963,-3036,-3119,-3195,-3277,-3363,-3450,-3543,-3641,-3739,-3846, -3954,-4065,-4178,-4285,-4392,-4497,-4592,-4687,-4780,-4870,-4962,-5054,-5152,-5252,-5353,-5457,-5564,-5666,-5781,-5891, -6009,-6122,-6238,-6358,-6478,-6593,-6709,-6815,-6918,-7005,-7082,-7144,-7201,-7247,-7285,-7316,-7349,-7367,-7380,-7387, -7383,-7373,-7343,-7303,-7247,-7171,-7077,-6960,-6821,-6653,-6457,-6223,-5957,-5647,-5301,-4910,-4487,-4030,-3535,-3014, -2465,-1893,-1300,-689,-61,574,1223,1872,2518,3155,3781,4388,4978,5540,6079,6582,7049,7478,7863,8206, 8506,8765,8978,9160,9308,9420,9508,9568,9600,9610,9600,9568,9517,9449,9366,9273,9172,9055,8928,8791, 8646,8485,8311,8132,7953,7767,7581,7397,7222,7054,6886,6723,6571,6415,6261,6111,5961,5812,5664,5517, 5371,5230,5083,4942,4799,4656,4510,4362,4221,4082,3948,3821,3699,3588,3479,3382,3283,3194,3100,3012, 2924,2836,2748,2658,2573,2489,2400,2318,2234,2146,2061,1975,1893,1810,1734,1657,1590,1525,1466,1407, 1354,1303,1252,1199,1146,1093,1041,982,928,874,821,763,711,656,595,542,486,429,380,323, 276,235,192,153,113,78,41,3,-38,-75,-123,-165,-213,-258,-306,-350,-399,-447,-498,-547, -596,-645,-690,-736,-778,-819,-856,-891,-931,-967,-1000,-1039,-1083,-1125,-1173,-1219,-1268,-1321,-1373,-1425, -1480,-1535,-1588,-1646,-1704,-1763,-1818,-1872,-1928,-1984,-2035,-2084,-2135,-2185,-2242,-2295,-2356,-2421,-2486,-2556, -2632,-2705,-2785,-2863,-2943,-3027,-3108,-3195,-3281,-3371,-3459,-3547,-3636,-3724,-3809,-3897,-3986,-4069,-4168,-4259, -4368,-4474,-4588,-4704,-4829,-4956,-5091,-5219,-5354,-5489,-5623,-5764,-5904,-6045,-6187,-6327,-6465,-6603,-6734,-6864, -6993,-7123,-7258,-7392,-7530,-7672,-7823,-7969,-8115,-8261,-8406,-8539,-8665,-8785,-8894,-8989,-9073,-9147,-9209,-9253, -9272,-9273,-9255,-9210,-9140,-9053,-8940,-8804,-8640,-8459,-8242,-7993,-7705,-7378,-7008,-6592,-6123,-5611,-5055,-4458, -3818,-3146,-2444,-1718,-972,-208,555,1313,2065,2797,3502,4168,4806,5405,5966,6487,6971,7409,7803,8150, 8446,8701,8903,9063,9187,9266,9310,9325,9308,9269,9207,9122,9026,8916,8794,8673,8538,8414,8286,8159, 8028,7898,7759,7617,7465,7308,7145,6982,6811,6646,6474,6307,6137,5972,5811,5648,5486,5336,5183,5043, 4908,4774,4658,4541,4426,4318,4209,4097,3982,3863,3744,3626,3503,3389,3270,3156,3041,2932,2825,2723, 2621,2527,2428,2340,2255,2178,2102,2031,1963,1894,1826,1751,1681,1604,1524,1445,1364,1277,1203,1123, 1045,968,896,824,754,684,621,556,498,439,387,331,279,228,176,118,59,-4,-72,-143, -212,-287,-357,-428,-493,-561,-632,-696,-755,-817,-878,-935,-994,-1049,-1103,-1157,-1211,-1264,-1319,-1377, -1443,-1509,-1582,-1659,-1735,-1816,-1893,-1968,-2046,-2117,-2198,-2270,-2342,-2412,-2485,-2558,-2628,-2695,-2768,-2836, -2905,-2973,-3053,-3130,-3215,-3304,-3400,-3498,-3603,-3702,-3808,-3910,-4012,-4114,-4213,-4309,-4407,-4503,-4598,-4697, -4791,-4887,-4983,-5077,-5176,-5270,-5369,-5477,-5587,-5702,-5824,-5945,-6071,-6197,-6321,-6441,-6553,-6664,-6763,-6859, -6946,-7030,-7106,-7180,-7246,-7303,-7357,-7402,-7441,-7472,-7497,-7516,-7530,-7530,-7527,-7509,-7478,-7431,-7358,-7263, -7135,-6972,-6781,-6554,-6299,-6009,-5685,-5326,-4939,-4515,-4061,-3573,-3057,-2518,-1949,-1355,-745,-112,530,1182, 1833,2491,3135,3770,4384,4976,5540,6074,6570,7026,7445,7830,8168,8465,8731,8945,9127,9271,9386,9468, 9525,9561,9578,9573,9549,9504,9441,9357,9258,9137,9006,8861,8706,8540,8372,8203,8032,7857,7688,7516, 7348,7179,7012,6850,6688,6529,6377,6228,6080,5930,5779,5624,5471,5314,5152,4994,4836,4684,4532,4388, 4252,4118,3992,3873,3757,3643,3533,3425,3326,3228,3130,3039,2951,2863,2772,2681,2591,2499,2402,2307, 2216,2124,2036,1950,1873,1801,1729,1664,1600,1534,1475,1412,1353,1301,1246,1192,1138,1085,1028,969, 913,857,796,730,671,613,554,497,448,401,355,309,269,225,184,141,100,61,22,-21, -63,-104,-146,-192,-240,-287,-338,-391,-441,-489,-540,-589,-633,-675,-714,-758,-791,-831,-870,-908, -946,-987,-1026,-1069,-1111,-1155,-1199,-1248,-1298,-1352,-1406,-1464,-1520,-1576,-1634,-1687,-1738,-1790,-1841,-1890, -1938,-1988,-2041,-2094,-2150,-2209,-2267,-2329,-2391,-2457,-2525,-2593,-2670,-2749,-2828,-2909,-2995,-3081,-3166,-3248, -3332,-3416,-3498,-3574,-3656,-3742,-3825,-3916,-4006,-4105,-4207,-4308,-4413,-4524,-4637,-4754,-4876,-5005,-5132,-5266, -5403,-5541,-5674,-5811,-5941,-6075,-6205,-6332,-6457,-6587,-6716,-6851,-6989,-7132,-7275,-7419,-7560,-7708,-7853,-8000, -8144,-8290,-8430,-8568,-8695,-8817,-8931,-9027,-9107,-9174,-9223,-9253,-9269,-9269,-9255,-9224,-9178,-9109,-9025,-8912, -8770,-8602,-8398,-8159,-7886,-7569,-7219,-6820,-6381,-5891,-5361,-4781,-4164,-3507,-2821,-2112,-1379,-634,112,862, 1608,2338,3047,3736,4395,5022,5606,6151,6657,7117,7527,7893,8212,8489,8717,8900,9039,9134,9192,9214, 9210,9183,9138,9072,9000,8916,8825,8727,8624,8513,8395,8266,8137,7999,7857,7710,7561,7405,7250,7084, 6917,6747,6576,6400,6230,6063,5905,5746,5599,5463,5330,5200,5076,4956,4834,4714,4591,4472,4353,4234, 4112,3991,3871,3753,3632,3510,3389,3269,3152,3040,2935,2832,2736,2649,2569,2488,2405,2327,2256,2179, 2101,2025,1945,1865,1788,1704,1624,1546,1461,1381,1301,1217,1135,1055,985,916,849,786,730,675, 620,562,508,451,390,326,264,200,135,67,-1,-71,-139,-211,-280,-352,-425,-494,-557,-620, -678,-734,-787,-837,-891,-940,-995,-1055,-1111,-1174,-1240,-1307,-1377,-1448,-1520,-1593,-1667,-1743,-1820,-1895, -1969,-2043,-2117,-2192,-2256,-2324,-2390,-2452,-2516,-2581,-2651,-2722,-2798,-2881,-2966,-3050,-3141,-3233,-3328,-3424, -3520,-3618,-3717,-3810,-3912,-4007,-4104,-4202,-4292,-4381,-4468,-4554,-4643,-4733,-4825,-4921,-5026,-5130,-5244,-5361, -5479,-5596,-5714,-5832,-5948,-6061,-6175,-6284,-6386,-6490,-6584,-6672,-6758,-6831,-6896,-6958,-7012,-7066,-7113,-7161, -7204,-7246,-7282,-7310,-7326,-7333,-7323,-7295,-7250,-7184,-7089,-6977,-6831,-6664,-6460,-6233,-5977,-5680,-5353,-4992, -4601,-4184,-3738,-3260,-2763,-2236,-1683,-1110,-512,102,730,1372,2013,2650,3283,3899,4496,5072,5614,6130, 6608,7048,7450,7812,8132,8419,8663,8878,9057,9208,9332,9425,9492,9535,9555,9545,9512,9461,9391,9300, 9194,9080,8952,8814,8667,8510,8348,8181,8013,7844,7679,7516,7357,7199,7048,6898,6748,6598,6445,6290, 6133,5969,5806,5648,5488,5324,5172,5019,4869,4721,4576,4434,4299,4165,4042,3924,3809,3702,3600,3500, 3404,3308,3208,3112,3016,2916,2815,2716,2619,2523,2427,2340,2249,2167,2076,1997,1919,1847,1774,1708, 1643,1582,1524,1465,1413,1357,1299,1241,1178,1119,1051,989,924,863,800,744,685,629,576,523, 471,423,377,328,288,245,203,163,122,82,38,-9,-55,-106,-157,-213,-262,-313,-365,-415, -461,-508,-554,-601,-645,-689,-729,-775,-811,-851,-892,-925,-971,-1012,-1052,-1102,-1150,-1201,-1253,-1308, -1367,-1423,-1477,-1533,-1587,-1641,-1690,-1745,-1801,-1854,-1902,-1958,-2011,-2062,-2112,-2168,-2225,-2284,-2345,-2411, -2481,-2551,-2630,-2709,-2790,-2873,-2950,-3033,-3112,-3191,-3272,-3350,-3435,-3514,-3597,-3682,-3769,-3853,-3943,-4034, -4128,-4226,-4331,-4438,-4553,-4668,-4794,-4917,-5051,-5184,-5309,-5438,-5570,-5697,-5824,-5952,-6079,-6208,-6339,-6465, -6597,-6732,-6861,-6994,-7130,-7269,-7405,-7549,-7692,-7842,-7991,-8137,-8275,-8413,-8541,-8658,-8764,-8860,-8937,-9008, -9063,-9107,-9140,-9158,-9159,-9145,-9110,-9059,-8982,-8888,-8771,-8628,-8457,-8264,-8029,-7761,-7453,-7099,-6704,-6262, -5773,-5249,-4675,-4072,-3439,-2772,-2088,-1383,-665,61,787,1510,2219,2913,3581,4218,4827,5399,5933,6427, 6882,7289,7650,7963,8230,8451,8625,8764,8859,8924,8954,8961,8953,8921,8871,8811,8734,8650,8555,8455, 8350,8239,8119,8001,7874,7741,7600,7448,7289,7127,6957,6787,6622,6457,6294,6134,5979,5830,5688,5544, 5413,5279,5152,5024,4898,4781,4666,4547,4432,4315,4195,4072,3945,3819,3694,3567,3446,3328,3212,3104, 2998,2896,2804,2712,2624,2540,2454,2373,2291,2212,2140,2064,1986,1910,1828,1747,1661,1574,1488,1404, 1317,1235,1158,1082,1011,942,876,814,749,693,631,571,513,451,392,336,269,208,139,71, -1,-77,-148,-226,-298,-373,-442,-510,-574,-634,-694,-749,-806,-862,-915,-977,-1030,-1091,-1153,-1213, -1275,-1342,-1408,-1481,-1551,-1629,-1706,-1788,-1864,-1944,-2018,-2088,-2160,-2230,-2295,-2363,-2427,-2496,-2563,-2634, -2706,-2782,-2860,-2938,-3021,-3108,-3193,-3283,-3376,-3473,-3575,-3676,-3774,-3876,-3976,-4067,-4159,-4247,-4337,-4424, -4510,-4600,-4690,-4781,-4878,-4973,-5079,-5183,-5290,-5395,-5510,-5621,-5739,-5855,-5976,-6090,-6207,-6314,-6423,-6518, -6606,-6691,-6768,-6838,-6902,-6962,-7024,-7080,-7133,-7183,-7226,-7265,-7294,-7316,-7329,-7331,-7315,-7293,-7246,-7185, -7096,-6983,-6844,-6677,-6474,-6241,-5976,-5681,-5355,-4998,-4615,-4204,-3759,-3289,-2791,-2273,-1721,-1147,-549,60, 693,1332,1975,2612,3246,3864,4464,5036,5581,6096,6576,7018,7421,7787,8116,8403,8662,8882,9068,9223, 9345,9439,9506,9545,9562,9558,9531,9484,9419,9337,9238,9124,8994,8855,8699,8542,8378,8211,8049,7890, 7729,7570,7412,7257,7100,6944,6791,6635,6475,6318,6163,6008,5849,5689,5532,5375,5213,5058,4903,4752, 4605,4463,4327,4201,4078,3962,3855,3745,3642,3534,3434,3336,3237,3135,3038,2941,2843,2746,2651,2555, 2459,2367,2276,2188,2105,2023,1942,1871,1806,1737,1681,1620,1563,1505,1442,1384,1326,1266,1208,1148, 1086,1024,962,902,842,782,727,667,613,564,510,465,419,377,334,294,257,214,171,126, 79,32,-14,-62,-110,-160,-212,-263,-311,-360,-412,-458,-507,-552,-595,-640,-679,-715,-755,-793, -830,-871,-914,-959,-1001,-1048,-1100,-1152,-1199,-1252,-1306,-1361,-1413,-1468,-1522,-1578,-1629,-1684,-1737,-1788, -1843,-1887,-1941,-1992,-2045,-2101,-2157,-2217,-2284,-2350,-2417,-2492,-2562,-2638,-2712,-2793,-2871,-2950,-3030,-3110, -3195,-3272,-3354,-3434,-3518,-3597,-3679,-3762,-3849,-3938,-4034,-4135,-4240,-4349,-4459,-4579,-4700,-4822,-4945,-5070, -5201,-5328,-5459,-5587,-5718,-5848,-5977,-6104,-6235,-6360,-6489,-6621,-6754,-6886,-7025,-7167,-7313,-7465,-7614,-7763, -7913,-8058,-8198,-8333,-8462,-8585,-8697,-8802,-8895,-8974,-9046,-9102,-9142,-9167,-9177,-9169,-9141,-9105,-9044,-8969, -8872,-8753,-8602,-8422,-8205,-7951,-7656,-7321,-6938,-6517,-6049,-5539,-4986,-4401,-3776,-3116,-2433,-1725,-1004,-268, 473,1205,1935,2652,3343,4011,4647,5251,5817,6336,6816,7252,7636,7974,8264,8507,8708,8861,8981,9065, 9114,9135,9126,9102,9056,8993,8922,8844,8758,8661,8557,8448,8330,8207,8069,7927,7777,7622,7460,7296, 7129,6965,6792,6628,6462,6301,6137,5981,5827,5686,5542,5409,5279,5156,5036,4909,4789,4668,4545,4421, 4293,4163,4037,3907,3783,3657,3536,3417,3305,3192,3086,2976,2879,2782,2691,2600,2520,2441,2362,2285, 2208,2130,2049,1963,1882,1796,1711,1625,1539,1454,1374,1293,1215,1140,1069,997,926,863,804,739, 683,625,569,512,454,394,330,265,196,127,56,-14,-89,-162,-228,-299,-365,-425,-490,-551, -615,-675,-731,-784,-842,-894,-949,-1003,-1058,-1120,-1182,-1248,-1320,-1390,-1462,-1537,-1612,-1689,-1761,-1833, -1906,-1975,-2046,-2114,-2181,-2252,-2316,-2385,-2450,-2518,-2584,-2654,-2728,-2808,-2887,-2970,-3059,-3153,-3246,-3341, -3438,-3537,-3631,-3727,-3818,-3907,-3998,-4088,-4179,-4270,-4362,-4451,-4540,-4636,-4726,-4823,-4924,-5027,-5135,-5247, -5362,-5482,-5604,-5726,-5845,-5964,-6083,-6193,-6300,-6400,-6501,-6594,-6683,-6768,-6855,-6933,-7006,-7078,-7148,-7213, -7275,-7329,-7384,-7439,-7478,-7515,-7544,-7558,-7554,-7529,-7488,-7422,-7331,-7216,-7073,-6905,-6711,-6487,-6237,-5957, -5647,-5307,-4938,-4536,-4106,-3645,-3153,-2637,-2086,-1506,-905,-284,361,1016,1684,2341,2995,3636,4255,4849, 5412,5947,6450,6910,7340,7724,8076,8385,8656,8891,9094,9260,9398,9508,9591,9638,9666,9661,9637,9585, 9510,9420,9314,9189,9057,8916,8770,8617,8461,8302,8144,7981,7820,7657,7497,7340,7180,7021,6866,6705, 6543,6384,6217,6048,5878,5709,5541,5375,5212,5060,4906,4761,4619,4482,4353,4231,4105,3989,3874,3764, 3651,3548,3443,3340,3237,3132,3033,2927,2824,2720,2621,2522,2424,2333,2250,2167,2088,2010,1941,1871, 1805,1742,1678,1616,1553,1492,1433,1376,1314,1252,1194,1129,1064,1002,938,877,819,761,709,658, 609,563,517,474,434,389,347,305,260,219,176,130,85,39,-8,-57,-105,-160,-209,-262, -308,-352,-401,-440,-482,-521,-560,-597,-638,-673,-716,-752,-793,-832,-880,-925,-967,-1015,-1064,-1112, -1164,-1215,-1266,-1320,-1372,-1422,-1475,-1522,-1571,-1615,-1663,-1713,-1762,-1812,-1865,-1918,-1971,-2031,-2090,-2153, -2214,-2281,-2349,-2423,-2495,-2567,-2643,-2724,-2801,-2873,-2952,-3028,-3101,-3176,-3249,-3328,-3408,-3489,-3575,-3660, -3751,-3850,-3945,-4052,-4156,-4265,-4376,-4494,-4611,-4732,-4856,-4985,-5111,-5234,-5357,-5482,-5607,-5728,-5850,-5976, -6104,-6234,-6367,-6505,-6646,-6790,-6938,-7084,-7238,-7387,-7537,-7690,-7843,-7989,-8135,-8276,-8412,-8537,-8647,-8753, -8849,-8928,-9004,-9063,-9116,-9158,-9185,-9205,-9210,-9197,-9167,-9116,-9044,-8944,-8817,-8655,-8470,-8240,-7980,-7670, -7325,-6937,-6499,-6019,-5500,-4935,-4336,-3706,-3044,-2360,-1654,-928,-191,549,1294,2032,2754,3451,4127,4771, 5374,5930,6455,6925,7354,7728,8057,8338,8572,8757,8911,9020,9102,9149,9175,9178,9168,9135,9089,9030, 8955,8871,8770,8659,8544,8411,8279,8135,7985,7828,7662,7499,7332,7159,6991,6824,6661,6502,6351,6205, 6066,5928,5791,5662,5532,5400,5272,5142,5011,4883,4748,4620,4488,4359,4228,4094,3968,3841,3715,3596, 3485,3374,3268,3172,3080,2992,2902,2816,2736,2649,2567,2480,2393,2308,2220,2127,2044,1958,1869,1779, 1693,1610,1525,1444,1370,1296,1227,1156,1095,1034,971,909,854,792,729,662,597,530,459,390, 320,247,178,104,31,-41,-107,-179,-242,-306,-370,-425,-486,-542,-594,-650,-709,-763,-822,-887, -948,-1019,-1083,-1154,-1224,-1295,-1368,-1442,-1519,-1589,-1663,-1733,-1805,-1871,-1938,-2001,-2066,-2131,-2195,-2260, -2328,-2400,-2471,-2550,-2628,-2715,-2799,-2886,-2975,-3067,-3159,-3248,-3343,-3433,-3529,-3616,-3707,-3794,-3883,-3967, -4050,-4138,-4225,-4311,-4404,-4497,-4596,-4701,-4805,-4918,-5033,-5148,-5263,-5381,-5495,-5613,-5724,-5835,-5948,-6052, -6154,-6252,-6345,-6436,-6521,-6601,-6682,-6761,-6838,-6915,-6988,-7064,-7138,-7202,-7270,-7325,-7374,-7409,-7430,-7435, -7428,-7400,-7357,-7292,-7203,-7097,-6959,-6797,-6614,-6401,-6165,-5905,-5614,-5300,-4957,-4583,-4181,-3747,-3283,-2786, -2256,-1696,-1109,-499,135,776,1424,2073,2720,3349,3959,4550,5112,5645,6145,6610,7043,7440,7799,8126, 8422,8679,8903,9088,9246,9367,9458,9517,9550,9554,9535,9492,9426,9349,9252,9140,9024,8890,8752,8609, 8461,8314,8163,8012,7865,7716,7565,7407,7250,7091,6927,6761,6589,6423,6252,6078,5910,5743,5577,5414, 5257,5108,4955,4810,4668,4533,4410,4283,4166,4050,3935,3825,3707,3596,3484,3371,3259,3151,3036,2928, 2821,2720,2619,2527,2430,2342,2254,2174,2093,2019,1946,1878,1806,1745,1679,1615,1549,1480,1415,1348, 1278,1210,1147,1084,1013,948,887,830,768,715,662,613,564,514,469,425,380,335,295,250, 205,158,107,58,9,-46,-98,-151,-200,-252,-302,-348,-393,-442,-485,-526,-569,-610,-649,-689, -730,-770,-808,-849,-892,-936,-985,-1031,-1081,-1136,-1183,-1237,-1286,-1338,-1386,-1436,-1484,-1530,-1579,-1625, -1672,-1718,-1770,-1820,-1867,-1920,-1972,-2023,-2081,-2145,-2209,-2272,-2342,-2410,-2484,-2557,-2629,-2702,-2775,-2850, -2922,-2993,-3065,-3140,-3211,-3290,-3362,-3446,-3524,-3605,-3691,-3779,-3871,-3971,-4071,-4177,-4285,-4398,-4513,-4632, -4746,-4861,-4980,-5101,-5217,-5331,-5450,-5569,-5687,-5811,-5930,-6059,-6187,-6312,-6449,-6585,-6725,-6866,-7014,-7164, -7315,-7466,-7616,-7766,-7906,-8042,-8174,-8298,-8414,-8522,-8622,-8718,-8801,-8877,-8943,-9001,-9050,-9086,-9109,-9120, -9117,-9093,-9057,-9000,-8919,-8812,-8675,-8506,-8303,-8062,-7783,-7463,-7101,-6705,-6263,-5789,-5275,-4724,-4142,-3529, -2886,-2223,-1536,-832,-121,598,1315,2027,2722,3396,4044,4662,5236,5774,6267,6713,7116,7469,7777,8047, 8272,8457,8609,8726,8811,8875,8910,8925,8917,8891,8854,8801,8731,8654,8555,8448,8333,8202,8067,7918, 7769,7609,7448,7285,7125,6966,6811,6661,6515,6365,6222,6084,5950,5814,5685,5555,5427,5297,5168,5040, 4909,4774,4638,4503,4370,4235,4101,3973,3852,3731,3616,3507,3403,3303,3205,3109,3020,2930,2837,2754, 2668,2584,2494,2405,2318,2228,2137,2044,1954,1864,1776,1684,1604,1523,1446,1373,1304,1233,1170,1106, 1043,980,917,856,794,729,663,596,526,458,383,310,238,162,87,15,-55,-123,-186,-250, -310,-372,-427,-489,-548,-603,-661,-723,-779,-841,-904,-969,-1037,-1109,-1178,-1253,-1328,-1400,-1473,-1549, -1621,-1690,-1759,-1825,-1889,-1951,-2014,-2079,-2146,-2213,-2280,-2354,-2423,-2497,-2574,-2657,-2743,-2829,-2915,-3007, -3103,-3195,-3289,-3376,-3468,-3559,-3649,-3735,-3816,-3896,-3984,-4070,-4158,-4243,-4339,-4433,-4531,-4630,-4733,-4839, -4952,-5064,-5177,-5289,-5407,-5519,-5631,-5744,-5853,-5955,-6051,-6145,-6236,-6325,-6405,-6489,-6569,-6651,-6731,-6809, -6889,-6957,-7032,-7099,-7161,-7218,-7265,-7303,-7329,-7342,-7340,-7317,-7278,-7219,-7138,-7033,-6903,-6753,-6578,-6379, -6156,-5916,-5644,-5347,-5021,-4667,-4283,-3865,-3417,-2938,-2428,-1890,-1320,-729,-114,513,1152,1794,2427,3056, 3669,4263,4827,5366,5876,6355,6796,7215,7590,7937,8239,8518,8755,8964,9134,9273,9381,9458,9511,9537, 9533,9507,9458,9392,9301,9204,9089,8971,8844,8711,8573,8437,8297,8153,8006,7861,7708,7555,7397,7239, 7079,6917,6752,6584,6420,6249,6078,5908,5743,5577,5420,5264,5117,4973,4837,4703,4578,4452,4331,4214, 4099,3982,3868,3752,3637,3526,3416,3304,3196,3087,2980,2876,2773,2676,2584,2489,2403,2322,2242,2168, 2094,2021,1956,1888,1822,1752,1685,1622,1550,1481,1414,1345,1279,1211,1146,1079,1017,955,894,840, 783,732,684,640,593,550,502,461,413,370,321,279,226,180,126,79,24,-24,-76,-125, -176,-227,-274,-318,-362,-408,-445,-487,-526,-569,-609,-647,-692,-739,-779,-826,-872,-921,-975,-1023, -1075,-1126,-1179,-1230,-1282,-1334,-1386,-1434,-1483,-1535,-1578,-1628,-1674,-1723,-1777,-1827,-1877,-1939,-1998,-2058, -2122,-2188,-2258,-2327,-2397,-2470,-2542,-2613,-2691,-2763,-2840,-2914,-2984,-3059,-3136,-3207,-3284,-3363,-3444,-3525, -3617,-3705,-3803,-3902,-4005,-4109,-4222,-4332,-4447,-4559,-4679,-4794,-4914,-5030,-5149,-5271,-5389,-5507,-5631,-5748, -5871,-5994,-6123,-6255,-6388,-6525,-6667,-6812,-6957,-7109,-7255,-7408,-7553,-7695,-7835,-7971,-8098,-8222,-8339,-8446, -8548,-8639,-8718,-8794,-8854,-8907,-8948,-8984,-9005,-9013,-9007,-8987,-8942,-8881,-8790,-8678,-8535,-8355,-8142,-7896, -7608,-7286,-6919,-6516,-6074,-5595,-5074,-4524,-3936,-3318,-2679,-2014,-1335,-633,74,783,1494,2195,2881,3542, 4174,4773,5334,5858,6333,6772,7161,7505,7807,8062,8280,8459,8598,8712,8794,8850,8881,8888,8884,8861, 8822,8771,8703,8621,8525,8414,8294,8165,8026,7885,7735,7579,7423,7264,7105,6949,6794,6639,6491,6348, 6207,6069,5933,5806,5675,5549,5417,5288,5160,5028,4894,4759,4625,4490,4358,4228,4099,3970,3846,3729, 3614,3501,3394,3296,3192,3097,3005,2914,2830,2741,2658,2570,2481,2389,2299,2205,2116,2022,1931,1842, 1758,1668,1582,1503,1431,1350,1281,1213,1144,1082,1015,952,895,831,767,704,634,568,494,420, 348,276,202,127,55,-14,-86,-154,-219,-281,-346,-406,-467,-522,-583,-641,-702,-756,-820,-877, -944,-1010,-1081,-1152,-1222,-1296,-1368,-1441,-1510,-1585,-1652,-1724,-1792,-1857,-1923,-1990,-2052,-2117,-2180,-2250, -2316,-2385,-2455,-2531,-2608,-2690,-2773,-2861,-2952,-3041,-3133,-3224,-3315,-3403,-3493,-3578,-3667,-3757,-3836,-3925, -4012,-4099,-4186,-4274,-4366,-4460,-4556,-4658,-4762,-4868,-4981,-5095,-5211,-5325,-5448,-5561,-5675,-5781,-5890,-5994, -6094,-6193,-6290,-6377,-6472,-6558,-6644,-6731,-6818,-6901,-6979,-7060,-7143,-7217,-7289,-7355,-7419,-7468,-7507,-7529, -7543,-7537,-7510,-7465,-7401,-7320,-7213,-7084,-6935,-6761,-6564,-6344,-6094,-5818,-5512,-5177,-4809,-4413,-3982,-3516, -3021,-2490,-1926,-1333,-713,-75,583,1248,1916,2575,3221,3854,4464,5043,5600,6123,6615,7072,7490,7875, 8225,8536,8809,9050,9254,9424,9557,9659,9730,9765,9776,9759,9720,9661,9580,9485,9379,9264,9134,9006, 8868,8724,8577,8429,8279,8127,7969,7816,7655,7494,7326,7159,6989,6817,6642,6467,6291,6118,5947,5779, 5618,5462,5309,5160,5019,4883,4746,4617,4489,4369,4248,4127,4012,3895,3778,3662,3546,3432,3320,3202, 3094,2990,2884,2783,2686,2598,2507,2425,2342,2265,2191,2118,2045,1976,1908,1837,1774,1705,1638,1568, 1500,1428,1363,1292,1228,1162,1099,1035,977,919,869,818,767,722,672,628,581,535,492,445, 396,351,303,253,201,150,98,48,-4,-52,-102,-151,-197,-244,-286,-327,-370,-410,-450,-488, -530,-573,-610,-651,-700,-743,-788,-833,-882,-932,-985,-1031,-1084,-1133,-1183,-1230,-1281,-1329,-1376,-1418, -1467,-1515,-1560,-1608,-1657,-1708,-1761,-1813,-1871,-1933,-1994,-2056,-2122,-2190,-2259,-2327,-2397,-2470,-2539,-2607, -2680,-2748,-2819,-2888,-2960,-3031,-3104,-3178,-3257,-3339,-3424,-3513,-3603,-3698,-3795,-3896,-3996,-4105,-4217,-4328, -4439,-4553,-4667,-4780,-4895,-5009,-5127,-5239,-5355,-5474,-5596,-5716,-5844,-5976,-6111,-6252,-6389,-6534,-6680,-6828, -6979,-7129,-7281,-7431,-7577,-7722,-7864,-7997,-8125,-8249,-8362,-8471,-8573,-8666,-8756,-8835,-8906,-8977,-9032,-9079, -9117,-9135,-9139,-9127,-9094,-9036,-8952,-8847,-8706,-8531,-8326,-8082,-7801,-7479,-7118,-6723,-6286,-5810,-5296,-4750, -4164,-3550,-2905,-2238,-1545,-835,-108,617,1350,2072,2780,3463,4122,4743,5325,5863,6359,6809,7213,7570, 7880,8156,8385,8578,8736,8864,8960,9029,9072,9091,9092,9070,9027,8972,8896,8807,8705,8588,8465,8329, 8181,8036,7878,7721,7558,7397,7242,7090,6936,6791,6647,6507,6367,6229,6094,5961,5822,5688,5553,5412, 5274,5136,4995,4857,4718,4579,4445,4313,4183,4055,3937,3823,3713,3606,3505,3406,3311,3218,3123,3032, 2940,2847,2757,2663,2570,2473,2380,2288,2193,2103,2015,1924,1840,1755,1673,1596,1527,1455,1387,1323, 1258,1195,1130,1064,998,930,864,793,725,652,578,502,430,359,287,216,144,77,9,-56, -114,-175,-236,-292,-349,-403,-464,-524,-584,-649,-715,-780,-850,-913,-989,-1062,-1129,-1201,-1275,-1340, -1413,-1479,-1546,-1613,-1678,-1739,-1803,-1866,-1929,-1994,-2064,-2131,-2203,-2277,-2358,-2437,-2517,-2600,-2687,-2775, -2862,-2951,-3038,-3128,-3213,-3300,-3388,-3475,-3558,-3639,-3722,-3811,-3893,-3982,-4070,-4167,-4263,-4361,-4467,-4577, -4688,-4797,-4910,-5027,-5143,-5259,-5367,-5486,-5592,-5702,-5811,-5912,-6016,-6116,-6213,-6310,-6403,-6500,-6594,-6692, -6786,-6888,-6984,-7081,-7176,-7261,-7346,-7422,-7489,-7546,-7594,-7626,-7644,-7648,-7635,-7606,-7562,-7498,-7415,-7311, -7192,-7044,-6885,-6698,-6492,-6256,-5995,-5701,-5374,-5013,-4616,-4182,-3712,-3209,-2667,-2095,-1495,-869,-224,430, 1101,1761,2425,3074,3705,4312,4899,5456,5983,6477,6943,7375,7770,8129,8454,8734,8979,9181,9346,9481, 9579,9644,9680,9689,9675,9632,9575,9499,9411,9311,9199,9080,8959,8829,8693,8553,8412,8261,8107,7949, 7788,7615,7445,7268,7091,6916,6736,6562,6386,6212,6038,5876,5714,5558,5407,5260,5119,4980,4849,4714, 4588,4459,4332,4205,4081,3955,3827,3704,3582,3463,3343,3231,3117,3012,2907,2808,2709,2619,2534,2446, 2366,2289,2211,2134,2060,1990,1912,1840,1769,1692,1619,1541,1472,1394,1322,1253,1187,1124,1060,1003, 946,890,838,786,737,689,640,589,543,495,448,395,346,289,239,187,130,81,29,-26, -75,-124,-172,-214,-263,-309,-348,-394,-434,-471,-514,-551,-598,-641,-684,-730,-776,-824,-870,-919, -969,-1022,-1069,-1119,-1164,-1211,-1255,-1302,-1350,-1395,-1437,-1481,-1527,-1573,-1619,-1663,-1717,-1767,-1820,-1876, -1933,-1993,-2053,-2115,-2178,-2246,-2310,-2376,-2441,-2505,-2571,-2636,-2702,-2769,-2835,-2899,-2969,-3042,-3114,-3187, -3265,-3346,-3433,-3518,-3609,-3708,-3799,-3901,-4003,-4106,-4211,-4316,-4419,-4526,-4631,-4736,-4845,-4954,-5065,-5174, -5285,-5406,-5523,-5645,-5773,-5902,-6040,-6175,-6314,-6459,-6605,-6751,-6898,-7046,-7192,-7335,-7471,-7608,-7739,-7867, -7988,-8107,-8219,-8331,-8435,-8533,-8627,-8714,-8799,-8872,-8940,-8996,-9044,-9073,-9093,-9091,-9069,-9023,-8957,-8860, -8739,-8582,-8395,-8175,-7921,-7635,-7309,-6953,-6558,-6124,-5660,-5155,-4615,-4043,-3440,-2808,-2147,-1465,-766,-58, 661,1377,2081,2766,3429,4060,4660,5216,5737,6212,6645,7036,7385,7696,7966,8197,8401,8560,8693,8795, 8867,8920,8942,8940,8917,8875,8814,8735,8636,8529,8406,8277,8141,8001,7857,7712,7564,7419,7277,7132, 6991,6852,6713,6578,6444,6309,6176,6036,5901,5763,5620,5479,5334,5189,5047,4905,4763,4631,4497,4373, 4247,4128,4015,3904,3798,3695,3596,3497,3400,3303,3207,3114,3015,2920,2821,2725,2627,2528,2428,2336, 2240,2150,2063,1977,1896,1814,1739,1669,1596,1528,1460,1393,1328,1258,1191,1123,1055,981,913,837, 766,686,611,540,464,390,325,257,191,126,64,5,-54,-114,-171,-231,-288,-349,-414,-474, -537,-607,-673,-742,-812,-884,-958,-1029,-1101,-1170,-1237,-1307,-1372,-1435,-1502,-1565,-1623,-1688,-1752,-1816, -1886,-1952,-2024,-2099,-2172,-2248,-2332,-2411,-2498,-2580,-2669,-2759,-2836,-2927,-3011,-3093,-3175,-3255,-3338,-3418, -3499,-3578,-3662,-3746,-3835,-3925,-4021,-4119,-4219,-4322,-4429,-4537,-4645,-4757,-4867,-4980,-5092,-5201,-5308,-5416, -5514,-5616,-5714,-5811,-5909,-6006,-6104,-6201,-6295,-6392,-6489,-6589,-6687,-6784,-6879,-6973,-7059,-7137,-7215,-7281, -7339,-7386,-7415,-7434,-7439,-7426,-7400,-7360,-7304,-7233,-7140,-7037,-6918,-6769,-6604,-6418,-6206,-5965,-5693,-5392, -5059,-4686,-4284,-3841,-3366,-2854,-2311,-1740,-1144,-526,107,753,1395,2037,2676,3299,3901,4488,5047,5584, 6089,6568,7017,7430,7807,8150,8455,8721,8952,9143,9297,9420,9506,9561,9595,9598,9578,9541,9488,9421, 9341,9247,9147,9040,8923,8797,8666,8530,8387,8238,8085,7927,7764,7593,7423,7252,7077,6901,6729,6557, 6387,6224,6062,5907,5755,5605,5463,5321,5186,5052,4916,4785,4655,4521,4392,4262,4136,4006,3877,3754, 3634,3514,3393,3281,3175,3069,2968,2875,2786,2699,2611,2531,2451,2372,2294,2215,2140,2064,1982,1909, 1830,1755,1677,1601,1530,1462,1388,1319,1257,1194,1131,1076,1019,966,914,862,814,761,715,661, 611,559,504,449,397,343,287,233,178,126,75,24,-23,-71,-115,-164,-209,-250,-291,-338, -378,-420,-462,-508,-554,-600,-652,-700,-747,-797,-850,-898,-952,-1002,-1048,-1103,-1152,-1196,-1241,-1293, -1339,-1386,-1428,-1479,-1525,-1576,-1625,-1680,-1734,-1791,-1853,-1915,-1977,-2039,-2105,-2171,-2242,-2306,-2373,-2439, -2509,-2572,-2640,-2706,-2773,-2843,-2910,-2981,-3056,-3129,-3209,-3294,-3379,-3469,-3560,-3651,-3755,-3849,-3953,-4055, -4160,-4266,-4369,-4476,-4580,-4688,-4793,-4900,-5008,-5120,-5230,-5345,-5462,-5584,-5707,-5836,-5965,-6102,-6240,-6380, -6518,-6664,-6804,-6945,-7082,-7221,-7359,-7485,-7613,-7737,-7852,-7964,-8073,-8178,-8276,-8371,-8460,-8546,-8625,-8698, -8760,-8813,-8858,-8887,-8905,-8899,-8878,-8836,-8764,-8673,-8551,-8406,-8223,-8018,-7779,-7500,-7193,-6849,-6477,-6065, -5620,-5142,-4631,-4088,-3516,-2911,-2286,-1638,-971,-293,393,1079,1757,2424,3064,3683,4269,4819,5329,5804, 6238,6634,6991,7308,7590,7833,8044,8226,8377,8496,8589,8652,8694,8712,8703,8677,8631,8565,8482,8389, 8282,8170,8044,7914,7782,7648,7513,7372,7234,7101,6968,6834,6705,6575,6445,6316,6185,6050,5914,5777, 5638,5500,5354,5214,5073,4934,4797,4662,4529,4401,4280,4159,4039,3930,3824,3716,3617,3520,3420,3322, 3228,3127,3031,2932,2832,2737,2631,2535,2435,2338,2242,2153,2062,1977,1894,1812,1732,1659,1586,1519, 1448,1382,1310,1245,1176,1103,1032,959,887,812,735,658,581,508,433,362,288,220,151,84, 21,-42,-105,-162,-223,-284,-342,-405,-468,-534,-602,-667,-737,-810,-882,-953,-1025,-1098,-1169,-1240, -1309,-1379,-1443,-1508,-1574,-1639,-1703,-1765,-1830,-1894,-1961,-2027,-2102,-2173,-2250,-2330,-2409,-2494,-2580,-2664, -2749,-2832,-2925,-3008,-3092,-3177,-3261,-3339,-3421,-3503,-3588,-3671,-3753,-3840,-3933,-4016,-4113,-4209,-4311,-4414, -4524,-4629,-4740,-4851,-4959,-5074,-5185,-5292,-5398,-5500,-5607,-5706,-5803,-5901,-5998,-6097,-6191,-6283,-6384,-6478, -6576,-6671,-6770,-6867,-6965,-7054,-7141,-7224,-7296,-7363,-7416,-7455,-7487,-7499,-7501,-7490,-7459,-7415,-7356,-7279, -7185,-7072,-6937,-6789,-6611,-6412,-6183,-5933,-5649,-5332,-4983,-4597,-4171,-3709,-3213,-2681,-2122,-1532,-916,-285, 361,1017,1673,2327,2967,3593,4201,4786,5345,5882,6384,6859,7296,7698,8068,8403,8688,8946,9158,9335, 9477,9584,9657,9704,9720,9715,9681,9636,9572,9494,9406,9306,9196,9081,8957,8831,8694,8550,8405,8252, 8091,7927,7760,7591,7413,7237,7061,6883,6706,6536,6366,6201,6039,5879,5725,5579,5433,5287,5151,5013, 4882,4745,4615,4483,4355,4223,4095,3967,3841,3714,3591,3476,3364,3246,3144,3036,2941,2845,2752,2664, 2580,2495,2414,2335,2259,2183,2104,2026,1952,1875,1798,1724,1648,1574,1498,1424,1355,1288,1224,1162, 1105,1047,991,937,885,835,783,735,684,630,579,527,474,419,363,312,256,203,150,94, 46,-7,-56,-98,-144,-188,-232,-275,-318,-359,-402,-443,-485,-529,-575,-623,-671,-717,-768,-817, -865,-915,-965,-1015,-1063,-1111,-1159,-1203,-1247,-1294,-1335,-1383,-1430,-1475,-1523,-1573,-1623,-1673,-1731,-1783, -1844,-1903,-1961,-2028,-2091,-2156,-2221,-2285,-2353,-2419,-2482,-2548,-2614,-2678,-2743,-2809,-2878,-2947,-3019,-3094, -3174,-3251,-3335,-3420,-3511,-3605,-3697,-3794,-3897,-3994,-4097,-4198,-4304,-4406,-4508,-4614,-4719,-4824,-4932,-5038, -5149,-5263,-5380,-5498,-5627,-5749,-5881,-6016,-6154,-6295,-6434,-6574,-6721,-6862,-7003,-7143,-7278,-7410,-7544,-7668, -7787,-7903,-8016,-8125,-8230,-8332,-8426,-8519,-8606,-8684,-8755,-8815,-8870,-8909,-8933,-8940,-8932,-8898,-8842,-8759, -8658,-8525,-8360,-8168,-7939,-7680,-7387,-7063,-6702,-6307,-5881,-5416,-4914,-4385,-3814,-3217,-2591,-1942,-1273,-589, 107,801,1497,2184,2846,3488,4096,4673,5209,5708,6167,6588,6968,7307,7609,7877,8111,8308,8467,8604, 8708,8784,8835,8854,8854,8835,8791,8734,8657,8564,8458,8342,8221,8091,7954,7821,7683,7542,7406,7267, 7130,6997,6864,6730,6595,6463,6326,6189,6048,5909,5771,5628,5485,5339,5199,5056,4915,4780,4646,4515, 4390,4270,4157,4040,3930,3828,3727,3623,3526,3422,3328,3227,3128,3031,2930,2830,2732,2631,2533,2438, 2339,2250,2162,2071,1989,1909,1834,1761,1685,1617,1551,1481,1411,1344,1276,1208,1134,1062,989,916, 844,768,693,623,548,476,405,340,270,209,146,88,29,-34,-87,-149,-212,-268,-331,-396, -465,-533,-600,-666,-737,-808,-879,-945,-1016,-1087,-1155,-1220,-1284,-1354,-1414,-1478,-1538,-1604,-1664,-1730, -1794,-1861,-1930,-2003,-2077,-2158,-2237,-2318,-2399,-2483,-2565,-2652,-2736,-2820,-2905,-2986,-3066,-3148,-3230,-3310, -3389,-3472,-3558,-3642,-3730,-3821,-3914,-4013,-4114,-4216,-4324,-4432,-4542,-4651,-4765,-4875,-4987,-5097,-5208,-5316, -5420,-5527,-5631,-5730,-5833,-5935,-6036,-6140,-6245,-6353,-6460,-6567,-6678,-6787,-6895,-7003,-7101,-7198,-7289,-7372, -7446,-7514,-7569,-7617,-7652,-7668,-7678,-7670,-7650,-7613,-7567,-7508,-7426,-7327,-7214,-7075,-6914,-6726,-6512,-6265, -5987,-5669,-5317,-4925,-4491,-4025,-3521,-2981,-2409,-1807,-1180,-533,132,800,1479,2154,2818,3470,4107,4716, 5307,5869,6400,6900,7361,7791,8180,8525,8834,9098,9322,9506,9651,9760,9841,9887,9904,9905,9874,9827, 9768,9691,9606,9505,9395,9279,9150,9014,8870,8721,8565,8398,8228,8056,7878,7699,7517,7333,7153,6975, 6798,6621,6452,6286,6122,5964,5811,5663,5513,5368,5229,5085,4945,4804,4663,4528,4389,4255,4119,3988, 3859,3733,3613,3495,3382,3267,3168,3066,2970,2875,2786,2699,2619,2530,2450,2369,2288,2208,2127,2045, 1965,1884,1809,1730,1657,1582,1507,1439,1375,1307,1249,1191,1136,1077,1020,970,920,864,814,764, 709,657,599,547,491,439,383,328,274,222,168,117,69,23,-24,-65,-110,-152,-196,-239, -282,-323,-368,-411,-458,-503,-552,-604,-652,-700,-754,-801,-852,-899,-951,-995,-1042,-1089,-1137,-1178, -1224,-1264,-1311,-1359,-1404,-1450,-1499,-1552,-1603,-1656,-1712,-1771,-1831,-1889,-1950,-2016,-2075,-2138,-2198,-2264, -2325,-2385,-2447,-2514,-2575,-2640,-2701,-2773,-2842,-2910,-2985,-3061,-3142,-3224,-3307,-3399,-3487,-3578,-3674,-3772, -3865,-3961,-4059,-4159,-4261,-4360,-4461,-4562,-4665,-4768,-4877,-4988,-5100,-5211,-5332,-5456,-5581,-5713,-5850,-5984, -6122,-6264,-6402,-6545,-6688,-6826,-6963,-7101,-7234,-7369,-7497,-7620,-7745,-7869,-7987,-8107,-8220,-8336,-8441,-8549, -8651,-8746,-8833,-8911,-8981,-9040,-9082,-9103,-9112,-9098,-9063,-9008,-8928,-8825,-8693,-8532,-8346,-8129,-7879,-7600, -7283,-6937,-6555,-6135,-5680,-5188,-4660,-4098,-3504,-2881,-2227,-1555,-864,-169,536,1230,1920,2589,3232,3852, 4439,4988,5506,5982,6422,6821,7186,7509,7798,8043,8263,8444,8588,8704,8787,8840,8865,8864,8841,8798, 8733,8655,8564,8461,8355,8235,8113,7988,7860,7732,7599,7469,7336,7203,7070,6936,6800,6661,6520,6375, 6231,6086,5937,5788,5641,5492,5347,5201,5063,4927,4792,4666,4540,4422,4304,4188,4078,3970,3863,3756, 3653,3549,3444,3338,3232,3125,3020,2914,2811,2707,2610,2507,2413,2322,2233,2145,2067,1984,1907,1832, 1758,1686,1618,1544,1475,1401,1329,1252,1177,1100,1027,948,874,798,724,650,578,511,445,377, 316,255,192,133,70,11,-48,-108,-172,-235,-298,-366,-435,-507,-574,-644,-716,-783,-850,-918, -986,-1052,-1117,-1175,-1239,-1298,-1362,-1421,-1482,-1548,-1610,-1674,-1741,-1810,-1881,-1953,-2028,-2108,-2187,-2265, -2349,-2427,-2508,-2589,-2667,-2745,-2822,-2901,-2974,-3053,-3131,-3208,-3288,-3371,-3452,-3540,-3628,-3721,-3813,-3911, -4009,-4114,-4215,-4322,-4426,-4536,-4639,-4746,-4849,-4953,-5056,-5156,-5256,-5355,-5458,-5560,-5658,-5764,-5868,-5976, -6080,-6192,-6300,-6410,-6522,-6635,-6744,-6852,-6953,-7051,-7143,-7223,-7301,-7368,-7428,-7479,-7517,-7548,-7569,-7578, -7577,-7563,-7543,-7506,-7456,-7389,-7304,-7198,-7071,-6918,-6744,-6541,-6300,-6030,-5725,-5382,-5001,-4587,-4138,-3655, -3131,-2586,-2015,-1414,-798,-168,478,1128,1780,2430,3069,3696,4308,4896,5459,5996,6502,6977,7413,7811, 8172,8495,8773,9014,9212,9380,9512,9612,9685,9728,9750,9748,9731,9690,9637,9566,9486,9391,9282,9164, 9035,8897,8750,8593,8432,8269,8097,7926,7746,7571,7398,7227,7055,6885,6723,6560,6402,6245,6096,5943, 5792,5645,5499,5354,5210,5062,4920,4776,4637,4498,4359,4225,4092,3965,3844,3723,3611,3503,3395,3295, 3196,3102,3007,2918,2828,2741,2653,2567,2480,2395,2309,2224,2143,2060,1979,1900,1822,1751,1675,1609, 1540,1478,1416,1361,1302,1243,1188,1132,1079,1023,970,913,857,801,742,688,632,574,519,464, 411,357,305,258,211,162,121,75,30,-13,-58,-102,-146,-193,-237,-286,-335,-384,-432,-485, -534,-587,-637,-686,-733,-781,-833,-878,-922,-966,-1012,-1052,-1098,-1143,-1187,-1236,-1283,-1332,-1387,-1438, -1492,-1547,-1606,-1665,-1724,-1782,-1846,-1900,-1962,-2023,-2086,-2147,-2209,-2264,-2325,-2388,-2449,-2514,-2581,-2649, -2723,-2793,-2867,-2946,-3025,-3108,-3194,-3283,-3368,-3457,-3550,-3645,-3734,-3830,-3924,-4022,-4116,-4211,-4308,-4409, -4506,-4611,-4716,-4828,-4943,-5057,-5175,-5297,-5422,-5551,-5680,-5816,-5950,-6084,-6219,-6355,-6486,-6620,-6750,-6883, -7008,-7135,-7258,-7381,-7503,-7622,-7740,-7858,-7975,-8088,-8196,-8305,-8406,-8498,-8584,-8663,-8730,-8785,-8825,-8853, -8863,-8851,-8821,-8773,-8701,-8610,-8487,-8344,-8179,-7984,-7758,-7512,-7228,-6912,-6566,-6185,-5767,-5315,-4829,-4306, -3758,-3177,-2575,-1943,-1301,-641,22,687,1345,1990,2626,3235,3815,4369,4895,5384,5844,6267,6655,7006, 7325,7602,7848,8054,8228,8365,8470,8549,8596,8617,8617,8595,8556,8496,8422,8338,8248,8147,8045,7931, 7823,7706,7586,7466,7342,7212,7084,6955,6817,6680,6538,6396,6254,6105,5956,5810,5669,5525,5378,5237, 5100,4968,4838,4716,4593,4478,4363,4249,4136,4029,3918,3808,3701,3591,3479,3370,3263,3155,3043,2941, 2834,2731,2633,2535,2438,2350,2260,2176,2094,2018,1940,1862,1785,1711,1636,1559,1484,1406,1330,1248, 1168,1090,1013,933,860,781,707,632,563,494,428,366,300,240,175,116,52,-10,-74,-139, -207,-272,-343,-414,-486,-554,-623,-696,-765,-833,-902,-971,-1036,-1103,-1163,-1230,-1292,-1352,-1412,-1475, -1541,-1606,-1672,-1741,-1812,-1887,-1964,-2040,-2119,-2197,-2278,-2359,-2440,-2519,-2599,-2680,-2760,-2836,-2914,-2993, -3072,-3147,-3229,-3305,-3386,-3476,-3560,-3649,-3746,-3839,-3937,-4035,-4139,-4245,-4348,-4449,-4556,-4657,-4761,-4862, -4967,-5068,-5167,-5265,-5364,-5463,-5561,-5662,-5759,-5864,-5970,-6073,-6184,-6295,-6401,-6510,-6614,-6719,-6820,-6917, -7005,-7089,-7165,-7235,-7296,-7347,-7394,-7426,-7447,-7467,-7465,-7455,-7436,-7406,-7362,-7305,-7226,-7136,-7020,-6883, -6720,-6529,-6312,-6062,-5777,-5461,-5108,-4723,-4305,-3851,-3366,-2854,-2315,-1749,-1164,-560,55,684,1312,1941, 2566,3184,3786,4370,4934,5474,5987,6470,6922,7339,7719,8062,8366,8634,8864,9057,9218,9345,9441,9512, 9558,9579,9579,9559,9527,9476,9407,9328,9236,9130,9012,8883,8745,8603,8451,8291,8131,7964,7799,7628, 7454,7283,7118,6949,6787,6624,6465,6314,6158,6007,5860,5711,5565,5421,5274,5130,4982,4842,4698,4560, 4421,4287,4156,4028,3901,3779,3663,3549,3443,3338,3237,3141,3044,2955,2863,2775,2685,2598,2509,2425, 2334,2247,2165,2079,1998,1920,1842,1766,1691,1621,1554,1488,1422,1361,1304,1245,1187,1131,1072,1022, 964,908,852,794,736,678,623,564,508,452,401,350,298,245,195,151,103,55,12,-30, -77,-121,-167,-209,-258,-305,-348,-399,-450,-500,-554,-602,-652,-702,-748,-798,-843,-892,-937,-981, -1026,-1074,-1114,-1159,-1205,-1250,-1300,-1350,-1398,-1449,-1502,-1557,-1614,-1673,-1731,-1795,-1851,-1910,-1973,-2029, -2088,-2150,-2211,-2274,-2332,-2392,-2455,-2520,-2585,-2650,-2720,-2791,-2864,-2938,-3017,-3095,-3180,-3268,-3355,-3443, -3532,-3625,-3715,-3806,-3899,-3991,-4085,-4180,-4279,-4375,-4477,-4576,-4684,-4789,-4899,-5012,-5127,-5247,-5367,-5493, -5621,-5749,-5881,-6016,-6148,-6279,-6411,-6541,-6669,-6796,-6923,-7049,-7170,-7290,-7411,-7527,-7645,-7759,-7869,-7979, -8085,-8186,-8282,-8378,-8457,-8535,-8598,-8656,-8698,-8723,-8725,-8717,-8689,-8637,-8567,-8479,-8364,-8227,-8063,-7872, -7654,-7408,-7126,-6822,-6485,-6112,-5707,-5272,-4803,-4304,-3774,-3217,-2638,-2035,-1416,-783,-149,494,1130,1756, 2371,2963,3537,4087,4607,5103,5566,5999,6399,6763,7093,7389,7651,7876,8072,8233,8363,8460,8530,8571, 8588,8582,8559,8512,8456,8384,8302,8213,8115,8010,7906,7791,7674,7554,7429,7305,7179,7049,6919,6784, 6645,6502,6357,6213,6068,5921,5774,5629,5489,5347,5209,5076,4948,4819,4697,4578,4459,4343,4226,4115, 4009,3900,3788,3682,3574,3466,3354,3247,3140,3033,2926,2825,2724,2626,2531,2441,2354,2270,2184,2107, 2024,1947,1868,1794,1721,1647,1569,1493,1419,1342,1264,1186,1106,1032,953,877,802,730,659,589, 522,458,394,330,269,205,144,80,17,-44,-111,-177,-243,-314,-381,-453,-524,-595,-665,-737, -803,-872,-932,-999,-1065,-1128,-1189,-1253,-1313,-1376,-1439,-1507,-1573,-1642,-1710,-1784,-1855,-1929,-2004,-2085, -2163,-2245,-2324,-2406,-2486,-2562,-2639,-2719,-2798,-2874,-2951,-3030,-3108,-3187,-3271,-3355,-3445,-3531,-3619,-3713, -3811,-3907,-4006,-4112,-4217,-4320,-4425,-4528,-4634,-4741,-4842,-4942,-5043,-5143,-5245,-5344,-5449,-5551,-5655,-5759, -5867,-5978,-6088,-6196,-6308,-6417,-6528,-6636,-6746,-6848,-6947,-7039,-7127,-7209,-7279,-7345,-7398,-7446,-7482,-7510, -7530,-7539,-7539,-7525,-7501,-7462,-7410,-7336,-7246,-7134,-6996,-6838,-6647,-6429,-6181,-5898,-5583,-5234,-4847,-4429, -3975,-3491,-2982,-2444,-1880,-1299,-700,-85,539,1169,1796,2417,3036,3637,4224,4793,5337,5857,6347,6806, 7235,7623,7977,8296,8576,8819,9026,9201,9348,9461,9548,9610,9647,9663,9654,9628,9583,9523,9444,9356, 9254,9141,9015,8880,8737,8586,8425,8263,8096,7927,7753,7579,7407,7238,7069,6904,6740,6580,6421,6262, 6108,5954,5801,5647,5499,5351,5203,5054,4906,4764,4618,4478,4342,4206,4075,3944,3821,3706,3591,3481, 3376,3275,3178,3078,2980,2888,2795,2704,2613,2524,2439,2348,2262,2178,2095,2011,1930,1854,1778,1701, 1630,1558,1495,1431,1370,1311,1255,1195,1139,1079,1025,970,910,857,801,744,684,627,574,521, 464,412,357,307,254,205,163,117,72,28,-14,-59,-103,-149,-194,-236,-288,-333,-382,-429, -478,-527,-579,-626,-675,-723,-770,-816,-862,-910,-953,-994,-1039,-1086,-1127,-1173,-1220,-1268,-1315,-1367, -1413,-1469,-1521,-1575,-1630,-1688,-1743,-1804,-1860,-1922,-1978,-2037,-2096,-2155,-2213,-2272,-2330,-2392,-2453,-2517, -2582,-2649,-2724,-2794,-2870,-2947,-3027,-3107,-3191,-3273,-3362,-3448,-3536,-3628,-3716,-3807,-3899,-3991,-4085,-4181, -4276,-4373,-4473,-4577,-4682,-4788,-4904,-5020,-5141,-5262,-5387,-5513,-5641,-5768,-5899,-6032,-6164,-6296,-6429,-6559, -6689,-6817,-6945,-7074,-7200,-7322,-7446,-7570,-7691,-7813,-7934,-8055,-8171,-8279,-8385,-8483,-8575,-8656,-8726,-8786, -8834,-8864,-8881,-8880,-8862,-8826,-8765,-8686,-8583,-8457,-8303,-8129,-7921,-7687,-7426,-7134,-6812,-6452,-6060,-5634, -5171,-4678,-4154,-3600,-3024,-2426,-1810,-1183,-542,103,747,1385,2011,2621,3216,3785,4332,4853,5342,5804, 6230,6628,6987,7313,7596,7850,8067,8248,8393,8506,8592,8653,8681,8693,8681,8648,8599,8534,8461,8378, 8285,8187,8082,7973,7858,7738,7616,7491,7358,7222,7081,6941,6794,6646,6497,6350,6201,6049,5901,5754, 5613,5468,5329,5196,5064,4937,4813,4691,4575,4455,4339,4225,4113,3996,3883,3768,3656,3541,3427,3317, 3211,3099,2999,2893,2795,2699,2601,2509,2424,2334,2253,2176,2091,2015,1933,1856,1780,1706,1625,1549, 1466,1388,1307,1230,1151,1077,999,928,855,785,713,644,580,515,452,392,328,271,204,141, 80,12,-53,-122,-193,-259,-329,-401,-468,-535,-605,-668,-734,-798,-866,-929,-989,-1049,-1110,-1171, -1230,-1292,-1356,-1420,-1486,-1552,-1622,-1695,-1767,-1841,-1919,-1996,-2070,-2145,-2222,-2299,-2371,-2446,-2518,-2593, -2669,-2745,-2817,-2893,-2972,-3050,-3128,-3211,-3297,-3384,-3475,-3570,-3666,-3762,-3861,-3959,-4060,-4162,-4259,-4361, -4459,-4557,-4655,-4756,-4855,-4958,-5057,-5155,-5260,-5359,-5465,-5571,-5684,-5796,-5908,-6021,-6137,-6254,-6368,-6479, -6591,-6696,-6795,-6890,-6979,-7064,-7142,-7214,-7282,-7340,-7396,-7437,-7478,-7506,-7528,-7538,-7539,-7530,-7505,-7467, -7412,-7335,-7237,-7113,-6967,-6789,-6584,-6345,-6073,-5771,-5433,-5065,-4660,-4232,-3768,-3274,-2749,-2204,-1633,-1042, -437,186,816,1451,2084,2709,3330,3930,4521,5086,5626,6139,6623,7070,7484,7860,8197,8500,8765,8996, 9193,9354,9488,9590,9667,9717,9742,9745,9731,9693,9640,9570,9481,9381,9260,9133,8998,8850,8696,8539, 8379,8213,8047,7877,7711,7542,7373,7207,7045,6882,6719,6559,6402,6245,6089,5934,5776,5620,5464,5307, 5157,5006,4856,4713,4572,4437,4303,4173,4050,3929,3810,3695,3589,3481,3377,3274,3175,3079,2983,2887, 2794,2699,2607,2513,2423,2333,2247,2161,2078,1999,1923,1850,1775,1707,1639,1576,1510,1449,1387,1327, 1265,1206,1150,1089,1029,971,911,851,791,734,676,616,563,509,460,409,361,309,265,217, 172,128,84,37,-11,-55,-101,-151,-200,-246,-295,-345,-397,-449,-497,-546,-594,-641,-685,-729, -773,-821,-863,-906,-951,-996,-1041,-1086,-1134,-1180,-1233,-1279,-1331,-1387,-1438,-1492,-1549,-1609,-1666,-1720, -1777,-1834,-1887,-1945,-1999,-2061,-2116,-2174,-2231,-2294,-2355,-2418,-2482,-2551,-2622,-2691,-2766,-2843,-2922,-2999, -3084,-3165,-3250,-3338,-3418,-3504,-3589,-3674,-3762,-3849,-3943,-4034,-4128,-4226,-4327,-4426,-4532,-4640,-4751,-4868, -4983,-5104,-5225,-5351,-5476,-5603,-5735,-5867,-5992,-6121,-6250,-6376,-6503,-6631,-6758,-6888,-7016,-7145,-7276,-7406, -7536,-7663,-7792,-7919,-8040,-8158,-8277,-8387,-8489,-8583,-8671,-8748,-8811,-8860,-8899,-8921,-8923,-8914,-8888,-8845, -8779,-8698,-8595,-8466,-8312,-8134,-7924,-7687,-7419,-7113,-6778,-6411,-6007,-5569,-5094,-4589,-4053,-3485,-2892,-2281, -1647,-1003,-354,302,952,1597,2232,2845,3442,4015,4561,5079,5562,6009,6423,6798,7137,7435,7698,7922, 8111,8260,8383,8470,8529,8565,8576,8566,8535,8495,8442,8374,8299,8215,8120,8018,7910,7795,7675,7552, 7420,7289,7151,7011,6865,6717,6567,6416,6264,6116,5967,5823,5683,5544,5408,5279,5150,5021,4902,4778, 4655,4535,4415,4298,4180,4063,3947,3832,3715,3599,3482,3368,3253,3144,3040,2936,2839,2742,2647,2558, 2474,2386,2305,2221,2140,2056,1973,1894,1813,1732,1651,1570,1487,1410,1326,1244,1167,1087,1011,938, 867,797,727,665,598,535,471,409,344,280,213,147,80,13,-58,-126,-197,-267,-339,-408, -479,-548,-617,-683,-749,-811,-874,-936,-995,-1054,-1118,-1180,-1240,-1306,-1373,-1441,-1510,-1579,-1651,-1725, -1798,-1873,-1947,-2025,-2099,-2175,-2252,-2325,-2400,-2471,-2545,-2619,-2690,-2764,-2837,-2917,-2994,-3074,-3160,-3245, -3335,-3423,-3514,-3610,-3703,-3799,-3893,-3993,-4091,-4190,-4287,-4387,-4482,-4577,-4672,-4767,-4864,-4958,-5058,-5159, -5260,-5361,-5470,-5576,-5688,-5799,-5911,-6022,-6133,-6242,-6348,-6458,-6561,-6659,-6755,-6845,-6931,-7009,-7081,-7148, -7209,-7264,-7312,-7356,-7391,-7420,-7442,-7453,-7455,-7445,-7418,-7374,-7315,-7234,-7131,-7006,-6855,-6677,-6470,-6234, -5967,-5669,-5336,-4974,-4581,-4157,-3704,-3223,-2715,-2185,-1627,-1055,-464,143,763,1389,2011,2633,3246,3847, 4431,4991,5527,6038,6518,6959,7368,7743,8080,8382,8644,8876,9071,9235,9375,9478,9559,9610,9635,9641, 9626,9586,9532,9459,9372,9269,9155,9031,8899,8756,8608,8456,8294,8133,7971,7806,7647,7485,7325,7167, 7010,6853,6693,6536,6379,6221,6061,5907,5749,5595,5437,5286,5136,4990,4843,4703,4564,4432,4300,4174, 4053,3937,3824,3716,3607,3504,3402,3299,3198,3100,3001,2902,2805,2711,2616,2523,2435,2347,2258,2177, 2096,2017,1943,1868,1798,1731,1667,1602,1540,1478,1418,1355,1293,1233,1170,1108,1050,989,927,869, 808,752,694,639,588,536,484,435,386,338,294,248,202,159,113,64,16,-34,-81,-135, -183,-232,-284,-335,-387,-435,-482,-530,-577,-623,-669,-712,-760,-805,-847,-890,-935,-978,-1025,-1072, -1121,-1173,-1222,-1276,-1329,-1384,-1438,-1493,-1551,-1608,-1660,-1716,-1773,-1827,-1886,-1940,-1998,-2057,-2115,-2170, -2236,-2295,-2358,-2426,-2493,-2565,-2638,-2713,-2789,-2867,-2946,-3027,-3107,-3189,-3273,-3356,-3439,-3524,-3611,-3697, -3785,-3875,-3969,-4060,-4155,-4253,-4353,-4456,-4565,-4679,-4793,-4909,-5027,-5151,-5273,-5396,-5521,-5645,-5771,-5894, -6020,-6146,-6269,-6396,-6522,-6646,-6773,-6895,-7020,-7150,-7275,-7398,-7526,-7650,-7772,-7894,-8009,-8123,-8227,-8325, -8412,-8489,-8559,-8614,-8658,-8691,-8708,-8708,-8698,-8667,-8620,-8552,-8464,-8352,-8220,-8064,-7881,-7673,-7438,-7173, -6874,-6543,-6179,-5779,-5347,-4882,-4385,-3860,-3308,-2726,-2133,-1519,-892,-254,386,1021,1652,2274,2883,3469, 4035,4578,5089,5568,6015,6429,6805,7139,7440,7703,7927,8113,8267,8388,8479,8538,8577,8592,8589,8564, 8522,8471,8407,8327,8244,8153,8055,7949,7834,7717,7594,7464,7328,7188,7045,6898,6747,6596,6446,6298, 6150,6005,5863,5722,5581,5446,5314,5187,5060,4935,4816,4697,4576,4455,4338,4219,4099,3980,3858,3740, 3621,3506,3393,3281,3172,3070,2968,2870,2774,2680,2588,2502,2412,2330,2246,2167,2083,2002,1920,1840, 1756,1672,1590,1506,1424,1342,1261,1184,1104,1030,959,888,821,750,682,620,555,486,426,359, 295,228,162,95,27,-45,-117,-190,-261,-331,-404,-472,-540,-610,-672,-734,-798,-862,-924,-988, -1050,-1109,-1175,-1237,-1303,-1368,-1437,-1506,-1576,-1650,-1726,-1798,-1877,-1951,-2027,-2105,-2178,-2252,-2327,-2400, -2475,-2545,-2619,-2695,-2769,-2848,-2926,-3005,-3087,-3170,-3257,-3347,-3439,-3530,-3625,-3721,-3821,-3917,-4016,-4114, -4211,-4308,-4403,-4499,-4592,-4688,-4786,-4884,-4983,-5080,-5183,-5288,-5391,-5496,-5606,-5717,-5829,-5941,-6054,-6166, -6275,-6384,-6491,-6593,-6692,-6783,-6870,-6952,-7029,-7099,-7164,-7225,-7283,-7332,-7373,-7410,-7439,-7457,-7463,-7460, -7444,-7414,-7365,-7302,-7218,-7110,-6980,-6819,-6636,-6420,-6177,-5903,-5599,-5265,-4905,-4514,-4098,-3655,-3184,-2688, -2170,-1627,-1067,-493,92,686,1285,1884,2477,3066,3649,4213,4766,5292,5797,6271,6715,7126,7502,7850, 8160,8433,8678,8888,9068,9216,9335,9426,9491,9528,9548,9544,9519,9475,9415,9334,9239,9132,9008,8879, 8739,8592,8442,8286,8131,7971,7809,7651,7489,7328,7169,7008,6847,6687,6527,6370,6211,6051,5894,5737, 5578,5422,5263,5111,4960,4812,4669,4533,4398,4268,4142,4021,3904,3791,3678,3568,3461,3357,3251,3150, 3050,2950,2851,2752,2659,2564,2470,2376,2290,2202,2116,2038,1961,1888,1815,1745,1680,1615,1549,1488, 1425,1361,1300,1237,1178,1117,1056,996,939,878,819,759,702,645,592,540,489,441,392,347, 302,258,212,168,123,75,30,-17,-64,-112,-160,-209,-255,-305,-353,-406,-451,-500,-547,-591, -635,-677,-720,-763,-805,-845,-888,-932,-977,-1023,-1067,-1117,-1168,-1219,-1268,-1318,-1371,-1424,-1477,-1533, -1585,-1642,-1694,-1746,-1801,-1854,-1909,-1961,-2015,-2073,-2132,-2189,-2254,-2317,-2381,-2448,-2518,-2589,-2661,-2735, -2810,-2890,-2968,-3044,-3126,-3209,-3292,-3370,-3455,-3537,-3620,-3704,-3793,-3883,-3975,-4068,-4167,-4266,-4371,-4480, -4587,-4704,-4817,-4933,-5052,-5171,-5292,-5415,-5539,-5667,-5791,-5913,-6037,-6162,-6286,-6408,-6531,-6658,-6784,-6911, -7039,-7172,-7300,-7430,-7556,-7684,-7809,-7925,-8038,-8150,-8253,-8344,-8432,-8508,-8577,-8631,-8670,-8698,-8711,-8707, -8690,-8654,-8602,-8533,-8440,-8333,-8198,-8042,-7856,-7645,-7406,-7134,-6833,-6496,-6131,-5731,-5305,-4845,-4357,-3842, -3298,-2734,-2151,-1551,-938,-317,308,926,1543,2154,2754,3338,3903,4452,4971,5459,5919,6344,6730,7078, 7394,7670,7911,8113,8283,8422,8526,8602,8655,8680,8689,8674,8646,8603,8549,8480,8403,8316,8218,8113, 7996,7873,7746,7610,7472,7331,7184,7035,6881,6733,6582,6428,6283,6135,5994,5851,5715,5583,5454,5326, 5199,5076,4952,4826,4703,4580,4457,4332,4208,4088,3966,3846,3727,3612,3500,3388,3278,3175,3077,2979, 2883,2793,2705,2620,2533,2449,2368,2283,2197,2114,2028,1944,1858,1772,1691,1610,1528,1444,1368,1290, 1213,1140,1069,1001,933,863,801,739,671,607,545,478,411,340,274,204,132,62,-7,-80, -148,-218,-289,-355,-419,-488,-549,-612,-678,-737,-799,-863,-921,-983,-1048,-1112,-1177,-1248,-1316,-1390, -1462,-1535,-1608,-1681,-1755,-1828,-1906,-1978,-2050,-2123,-2197,-2267,-2339,-2410,-2483,-2557,-2630,-2708,-2786,-2868, -2950,-3038,-3126,-3218,-3309,-3404,-3495,-3589,-3686,-3779,-3876,-3969,-4065,-4158,-4255,-4346,-4443,-4536,-4632,-4730, -4829,-4929,-5035,-5138,-5249,-5359,-5471,-5588,-5703,-5817,-5930,-6043,-6153,-6261,-6365,-6466,-6567,-6659,-6750,-6836, -6917,-6995,-7067,-7133,-7198,-7255,-7308,-7355,-7392,-7426,-7448,-7460,-7459,-7444,-7410,-7360,-7285,-7191,-7072,-6929, -6763,-6568,-6345,-6098,-5816,-5509,-5171,-4806,-4417,-3997,-3550,-3079,-2583,-2063,-1523,-964,-392,191,785,1383, 1981,2577,3170,3748,4313,4859,5384,5880,6348,6787,7192,7563,7902,8206,8479,8719,8924,9103,9252,9370, 9463,9524,9564,9576,9568,9536,9486,9418,9332,9233,9121,9002,8869,8732,8592,8441,8288,8132,7974,7817, 7659,7498,7342,7185,7025,6862,6700,6537,6374,6209,6043,5883,5719,5556,5399,5246,5095,4946,4804,4667, 4529,4397,4268,4143,4026,3908,3795,3682,3574,3466,3354,3248,3142,3036,2931,2832,2729,2629,2533,2442, 2353,2267,2183,2102,2023,1949,1873,1801,1735,1666,1597,1533,1469,1404,1339,1271,1209,1142,1078,1015, 954,894,828,770,715,660,603,555,503,453,405,355,310,265,217,171,125,77,28,-20, -71,-120,-172,-220,-272,-322,-371,-420,-468,-513,-557,-604,-646,-687,-733,-776,-818,-861,-905,-951, -995,-1040,-1089,-1136,-1189,-1237,-1289,-1345,-1395,-1448,-1498,-1553,-1603,-1654,-1706,-1756,-1808,-1860,-1911,-1966, -2022,-2079,-2135,-2195,-2254,-2316,-2381,-2450,-2521,-2590,-2662,-2737,-2813,-2888,-2963,-3041,-3116,-3197,-3274,-3352, -3430,-3513,-3594,-3681,-3767,-3858,-3950,-4041,-4141,-4238,-4340,-4449,-4560,-4673,-4786,-4902,-5022,-5140,-5260,-5376, -5498,-5620,-5741,-5859,-5984,-6105,-6228,-6356,-6482,-6613,-6742,-6872,-7005,-7140,-7273,-7406,-7540,-7674,-7804,-7931, -8056,-8173,-8281,-8384,-8478,-8564,-8638,-8704,-8757,-8803,-8832,-8852,-8857,-8851,-8828,-8786,-8725,-8646,-8544,-8418, -8268,-8092,-7888,-7652,-7385,-7085,-6751,-6382,-5979,-5544,-5075,-4578,-4049,-3499,-2926,-2328,-1715,-1091,-457,181, 820,1456,2082,2697,3296,3876,4428,4954,5448,5907,6327,6713,7058,7362,7630,7860,8054,8219,8347,8448, 8524,8572,8600,8608,8596,8571,8525,8466,8398,8317,8223,8122,8009,7889,7763,7628,7491,7345,7200,7048, 6897,6746,6598,6452,6309,6168,6031,5893,5757,5626,5495,5366,5239,5111,4985,4857,4731,4604,4478,4350, 4223,4098,3975,3851,3730,3614,3505,3393,3288,3187,3092,2996,2902,2809,2722,2633,2542,2458,2372,2287, 2197,2110,2024,1936,1849,1763,1678,1593,1511,1428,1355,1277,1204,1136,1066,998,934,869,802,738, 670,606,540,471,402,332,263,193,120,49,-22,-94,-165,-234,-301,-366,-429,-491,-552,-614, -674,-737,-799,-859,-922,-988,-1050,-1116,-1183,-1252,-1323,-1395,-1466,-1540,-1613,-1685,-1759,-1832,-1904,-1973, -2045,-2112,-2180,-2247,-2317,-2388,-2461,-2534,-2609,-2690,-2767,-2848,-2932,-3019,-3108,-3198,-3286,-3379,-3476,-3568, -3660,-3752,-3844,-3936,-4028,-4120,-4206,-4296,-4388,-4483,-4580,-4676,-4777,-4881,-4985,-5092,-5199,-5309,-5423,-5536, -5648,-5760,-5872,-5979,-6085,-6192,-6296,-6393,-6484,-6575,-6664,-6747,-6826,-6904,-6979,-7053,-7122,-7187,-7249,-7299, -7348,-7386,-7416,-7434,-7437,-7427,-7401,-7356,-7293,-7206,-7100,-6971,-6816,-6634,-6426,-6193,-5930,-5641,-5325,-4984, -4613,-4214,-3786,-3331,-2848,-2337,-1802,-1241,-663,-69,540,1152,1771,2387,2997,3599,4179,4743,5283,5796, 6278,6725,7143,7527,7873,8191,8473,8722,8934,9120,9270,9393,9482,9546,9585,9595,9588,9558,9507,9438, 9353,9257,9142,9024,8892,8761,8621,8478,8329,8182,8033,7880,7726,7572,7413,7254,7089,6927,6765,6601, 6436,6271,6109,5944,5783,5621,5465,5311,5162,5019,4878,4743,4611,4483,4361,4239,4119,4004,3891,3775, 3662,3549,3438,3330,3224,3117,3016,2912,2811,2715,2621,2530,2443,2355,2276,2197,2121,2048,1975,1904, 1838,1769,1703,1634,1567,1502,1431,1364,1300,1233,1170,1105,1043,980,921,863,806,753,699,650, 601,555,506,460,411,365,316,271,219,175,121,73,21,-27,-81,-127,-178,-227,-277,-327, -372,-417,-462,-507,-546,-591,-633,-677,-720,-763,-810,-860,-904,-952,-1002,-1054,-1107,-1157,-1211,-1260, -1314,-1365,-1418,-1471,-1523,-1573,-1627,-1679,-1727,-1781,-1834,-1890,-1948,-2004,-2061,-2128,-2190,-2255,-2323,-2393, -2465,-2536,-2610,-2685,-2757,-2830,-2909,-2984,-3064,-3141,-3216,-3296,-3378,-3457,-3541,-3627,-3716,-3804,-3902,-3999, -4100,-4204,-4311,-4418,-4533,-4646,-4760,-4875,-4993,-5108,-5228,-5344,-5465,-5588,-5705,-5826,-5949,-6070,-6197,-6320, -6451,-6582,-6713,-6847,-6983,-7119,-7255,-7392,-7525,-7659,-7785,-7906,-8023,-8134,-8238,-8333,-8422,-8500,-8571,-8629, -8677,-8716,-8740,-8753,-8750,-8738,-8707,-8659,-8590,-8505,-8392,-8257,-8092,-7902,-7679,-7420,-7129,-6807,-6444,-6052, -5622,-5162,-4669,-4144,-3590,-3014,-2412,-1791,-1156,-510,139,797,1448,2088,2723,3338,3929,4492,5025,5523, 5985,6409,6790,7139,7442,7706,7937,8128,8287,8414,8508,8582,8628,8654,8658,8642,8614,8570,8515,8447, 8365,8272,8166,8050,7926,7796,7658,7521,7375,7228,7079,6930,6781,6637,6490,6347,6207,6071,5936,5801, 5669,5544,5414,5290,5159,5032,4905,4775,4644,4515,4387,4258,4132,4010,3889,3768,3652,3542,3434,3327, 3226,3130,3031,2937,2845,2755,2669,2578,2493,2405,2315,2223,2133,2043,1955,1864,1777,1691,1610,1524, 1442,1367,1295,1217,1149,1079,1011,945,877,811,749,680,612,546,474,404,330,256,184,111, 40,-34,-104,-172,-242,-310,-373,-439,-503,-564,-626,-687,-750,-814,-877,-938,-1006,-1067,-1139,-1207, -1281,-1353,-1424,-1498,-1573,-1645,-1715,-1790,-1858,-1931,-2001,-2069,-2139,-2209,-2277,-2346,-2417,-2493,-2566,-2641, -2718,-2800,-2883,-2968,-3055,-3146,-3238,-3329,-3422,-3514,-3606,-3696,-3788,-3875,-3968,-4059,-4145,-4239,-4331,-4425, -4519,-4615,-4714,-4814,-4916,-5024,-5132,-5240,-5354,-5467,-5583,-5694,-5809,-5921,-6027,-6129,-6234,-6333,-6428,-6522, -6612,-6696,-6784,-6863,-6944,-7020,-7095,-7166,-7228,-7290,-7347,-7395,-7435,-7465,-7488,-7494,-7485,-7457,-7416,-7352, -7266,-7158,-7029,-6878,-6700,-6497,-6271,-6015,-5736,-5430,-5095,-4733,-4341,-3922,-3472,-2995,-2492,-1961,-1412,-836, -244,362,979,1600,2225,2845,3455,4048,4621,5174,5699,6192,6657,7088,7486,7849,8176,8471,8732,8957, 9150,9312,9441,9541,9609,9652,9670,9658,9628,9575,9506,9420,9318,9207,9086,8959,8822,8684,8540,8390, 8240,8086,7933,7774,7614,7457,7295,7131,6964,6797,6630,6462,6293,6125,5958,5793,5633,5474,5322,5173, 5029,4889,4754,4624,4492,4366,4243,4125,4007,3888,3776,3662,3547,3434,3324,3216,3106,2998,2895,2798, 2698,2604,2513,2429,2342,2264,2184,2110,2037,1963,1892,1823,1756,1685,1621,1552,1485,1416,1349,1281, 1218,1150,1088,1025,965,905,847,792,743,691,642,595,545,499,450,402,357,308,260,212, 162,111,59,8,-42,-92,-141,-189,-236,-286,-331,-378,-420,-464,-506,-548,-590,-632,-677,-723, -763,-808,-857,-903,-951,-999,-1049,-1101,-1153,-1201,-1254,-1304,-1356,-1405,-1457,-1506,-1554,-1602,-1654,-1704, -1755,-1808,-1862,-1918,-1975,-2033,-2096,-2160,-2224,-2290,-2359,-2429,-2500,-2570,-2641,-2716,-2788,-2859,-2933,-3007, -3082,-3155,-3233,-3310,-3389,-3469,-3556,-3643,-3735,-3830,-3925,-4025,-4127,-4232,-4336,-4446,-4558,-4671,-4783,-4899, -5013,-5127,-5243,-5359,-5479,-5592,-5711,-5833,-5955,-6079,-6205,-6336,-6470,-6606,-6738,-6878,-7013,-7151,-7288,-7423, -7558,-7687,-7813,-7936,-8053,-8160,-8262,-8358,-8442,-8521,-8588,-8647,-8697,-8735,-8763,-8782,-8786,-8776,-8751,-8703, -8639,-8552,-8441,-8304,-8139,-7950,-7724,-7466,-7180,-6857,-6501,-6108,-5684,-5230,-4744,-4225,-3681,-3113,-2518,-1905, -1274,-635,15,670,1328,1975,2618,3245,3852,4429,4980,5494,5970,6407,6805,7162,7479,7755,7993,8201, 8369,8507,8616,8700,8755,8789,8801,8792,8769,8725,8665,8594,8506,8407,8297,8177,8051,7917,7773,7632, 7481,7331,7179,7027,6880,6736,6591,6451,6313,6178,6042,5907,5776,5645,5510,5379,5246,5111,4976,4843, 4709,4578,4446,4315,4189,4065,3943,3824,3712,3604,3498,3396,3299,3202,3109,3016,2923,2833,2740,2649, 2559,2468,2376,2283,2192,2104,2013,1927,1843,1757,1675,1595,1516,1441,1372,1301,1233,1168,1102,1036, 969,903,833,764,696,624,555,481,409,335,263,193,123,54,-16,-83,-150,-215,-274,-336, -398,-457,-517,-574,-639,-701,-764,-832,-900,-968,-1038,-1105,-1181,-1254,-1322,-1395,-1468,-1535,-1607,-1675, -1742,-1812,-1879,-1945,-2013,-2079,-2147,-2217,-2292,-2365,-2440,-2520,-2604,-2685,-2769,-2854,-2945,-3034,-3122,-3212, -3300,-3391,-3479,-3567,-3658,-3747,-3834,-3922,-4010,-4103,-4192,-4287,-4382,-4484,-4585,-4687,-4796,-4908,-5020,-5130, -5243,-5359,-5472,-5584,-5692,-5805,-5908,-6015,-6120,-6219,-6318,-6415,-6507,-6598,-6686,-6776,-6861,-6948,-7030,-7114, -7191,-7266,-7334,-7391,-7443,-7484,-7512,-7527,-7530,-7514,-7480,-7430,-7360,-7270,-7163,-7032,-6878,-6701,-6504,-6276, -6033,-5762,-5468,-5144,-4793,-4413,-4002,-3562,-3093,-2596,-2073,-1530,-962,-377,222,835,1451,2066,2684,3286, 3881,4456,5008,5532,6031,6499,6936,7339,7714,8056,8363,8635,8878,9079,9250,9382,9485,9561,9606,9624, 9619,9591,9545,9476,9394,9300,9194,9079,8955,8825,8694,8553,8409,8262,8114,7957,7799,7637,7474,7301, 7132,6958,6785,6614,6440,6272,6104,5937,5772,5616,5462,5313,5168,5027,4890,4755,4627,4497,4373,4247, 4123,4000,3880,3759,3636,3519,3403,3288,3175,3070,2963,2862,2763,2669,2576,2490,2407,2323,2244,2169, 2091,2017,1942,1873,1797,1726,1655,1582,1509,1436,1366,1293,1225,1158,1096,1035,974,918,862,808, 756,704,655,606,555,504,457,407,359,306,257,201,151,99,45,-4,-56,-108,-156,-204, -251,-294,-342,-389,-429,-476,-517,-556,-600,-641,-688,-734,-778,-826,-872,-922,-968,-1018,-1070,-1122, -1170,-1221,-1267,-1315,-1361,-1409,-1460,-1508,-1552,-1600,-1649,-1698,-1749,-1797,-1855,-1908,-1965,-2024,-2084,-2147, -2210,-2273,-2340,-2409,-2475,-2544,-2611,-2678,-2747,-2815,-2884,-2957,-3027,-3097,-3172,-3250,-3328,-3407,-3490,-3577, -3667,-3758,-3854,-3954,-4050,-4154,-4260,-4365,-4472,-4579,-4685,-4795,-4902,-5010,-5123,-5235,-5350,-5463,-5578,-5702, -5822,-5947,-6076,-6206,-6342,-6476,-6612,-6751,-6891,-7030,-7168,-7305,-7441,-7570,-7695,-7818,-7934,-8046,-8150,-8250, -8344,-8433,-8512,-8586,-8651,-8707,-8758,-8794,-8822,-8832,-8832,-8811,-8775,-8717,-8635,-8527,-8398,-8235,-8048,-7826, -7573,-7290,-6973,-6627,-6244,-5834,-5391,-4915,-4416,-3882,-3322,-2740,-2136,-1514,-876,-226,431,1088,1744,2392, 3023,3632,4215,4766,5286,5766,6211,6613,6978,7303,7590,7846,8062,8245,8404,8522,8618,8685,8727,8752, 8749,8726,8685,8628,8554,8464,8359,8247,8122,7992,7856,7719,7577,7434,7290,7148,7010,6868,6730,6592, 6456,6322,6188,6054,5922,5784,5650,5514,5375,5238,5097,4956,4821,4685,4549,4423,4294,4175,4054,3940, 3830,3723,3619,3518,3420,3322,3226,3130,3035,2942,2845,2751,2654,2559,2463,2368,2271,2182,2090,2003, 1919,1836,1756,1676,1602,1533,1459,1392,1324,1255,1188,1117,1050,980,911,838,769,694,622,545, 472,402,327,255,190,124,58,-8,-70,-128,-188,-249,-308,-369,-429,-491,-557,-619,-684,-755, -822,-891,-961,-1033,-1107,-1177,-1249,-1318,-1385,-1456,-1521,-1586,-1654,-1719,-1780,-1847,-1914,-1981,-2053,-2123, -2198,-2275,-2351,-2429,-2514,-2594,-2683,-2765,-2855,-2944,-3023,-3114,-3200,-3282,-3367,-3450,-3535,-3619,-3703,-3787, -3875,-3962,-4057,-4150,-4249,-4350,-4453,-4558,-4666,-4775,-4884,-4996,-5107,-5218,-5329,-5437,-5542,-5650,-5748,-5849, -5947,-6045,-6141,-6238,-6334,-6429,-6520,-6614,-6705,-6799,-6888,-6975,-7058,-7139,-7210,-7271,-7328,-7375,-7411,-7432, -7438,-7429,-7407,-7363,-7306,-7233,-7140,-7029,-6897,-6749,-6582,-6385,-6169,-5929,-5662,-5366,-5039,-4683,-4297,-3875, -3426,-2943,-2433,-1893,-1330,-748,-149,464,1083,1709,2327,2938,3541,4124,4683,5224,5734,6220,6673,7099, 7493,7853,8178,8469,8725,8943,9129,9280,9395,9484,9538,9565,9574,9555,9517,9462,9394,9313,9222,9117, 9008,8892,8767,8633,8495,8354,8206,8053,7897,7736,7572,7401,7232,7063,6890,6718,6548,6380,6215,6055, 5897,5746,5597,5450,5311,5171,5037,4904,4770,4641,4513,4381,4255,4127,4004,3877,3752,3634,3518,3401, 3285,3177,3075,2972,2874,2784,2696,2611,2524,2445,2366,2288,2211,2133,2058,1982,1903,1830,1753,1679, 1604,1529,1460,1393,1323,1255,1195,1133,1072,1017,961,907,855,804,754,703,654,600,550,498, 443,388,336,284,228,176,122,70,20,-30,-76,-124,-168,-217,-262,-304,-345,-392,-434,-477, -520,-567,-613,-660,-711,-761,-808,-858,-911,-959,-1012,-1063,-1110,-1164,-1213,-1258,-1304,-1357,-1404,-1452, -1497,-1549,-1596,-1650,-1701,-1757,-1814,-1872,-1934,-1997,-2060,-2124,-2190,-2257,-2328,-2393,-2461,-2527,-2598,-2663, -2732,-2800,-2870,-2942,-3011,-3085,-3163,-3239,-3321,-3408,-3496,-3587,-3680,-3772,-3877,-3972,-4077,-4179,-4286,-4392, -4496,-4603,-4708,-4818,-4925,-5033,-5143,-5257,-5369,-5485,-5605,-5727,-5851,-5980,-6110,-6246,-6381,-6519,-6656,-6798, -6934,-7071,-7203,-7337,-7469,-7589,-7711,-7829,-7937,-8042,-8143,-8240,-8328,-8412,-8490,-8564,-8629,-8686,-8731,-8766, -8791,-8798,-8793,-8762,-8715,-8647,-8548,-8430,-8280,-8106,-7894,-7660,-7392,-7087,-6753,-6384,-5986,-5552,-5087,-4592, -4067,-3514,-2936,-2329,-1707,-1066,-412,248,911,1570,2219,2853,3461,4046,4596,5113,5589,6031,6435,6801, 7130,7420,7678,7898,8087,8249,8380,8482,8559,8608,8637,8643,8624,8590,8537,8465,8378,8282,8173,8060, 7934,7805,7673,7541,7406,7267,7130,6998,6865,6732,6603,6474,6344,6214,6083,5949,5813,5677,5539,5402, 5259,5120,4982,4846,4711,4579,4448,4324,4204,4085,3969,3860,3755,3649,3549,3452,3353,3254,3161,3061, 2965,2866,2767,2672,2568,2473,2375,2280,2186,2098,2009,1925,1842,1761,1683,1610,1537,1469,1397,1330, 1259,1193,1123,1049,978,904,832,758,681,605,528,455,382,311,239,170,101,35,-29,-91, -155,-212,-275,-336,-396,-460,-524,-590,-658,-724,-795,-867,-939,-1010,-1082,-1155,-1226,-1297,-1366,-1436, -1500,-1566,-1632,-1698,-1764,-1827,-1893,-1960,-2028,-2096,-2172,-2244,-2322,-2403,-2483,-2569,-2654,-2739,-2825,-2908, -3001,-3084,-3168,-3254,-3338,-3418,-3501,-3585,-3671,-3756,-3840,-3928,-4023,-4108,-4206,-4305,-4407,-4511,-4621,-4727, -4838,-4948,-5056,-5171,-5281,-5387,-5493,-5594,-5701,-5799,-5897,-5993,-6090,-6188,-6282,-6374,-6473,-6565,-6660,-6753, -6848,-6940,-7032,-7116,-7195,-7270,-7334,-7391,-7434,-7462,-7483,-7483,-7473,-7449,-7405,-7346,-7271,-7178,-7066,-6934, -6780,-6610,-6411,-6189,-5936,-5664,-5356,-5016,-4645,-4238,-3793,-3315,-2805,-2263,-1696,-1101,-485,143,781,1427, 2071,2710,3333,3942,4530,5094,5632,6146,6625,7076,7490,7869,8215,8528,8792,9029,9222,9382,9508,9600, 9660,9695,9702,9688,9647,9595,9526,9442,9350,9246,9133,9014,8887,8759,8619,8472,8326,8172,8009,7846, 7678,7509,7332,7157,6983,6807,6632,6463,6295,6132,5972,5814,5661,5515,5371,5226,5091,4953,4823,4687, 4558,4427,4299,4169,4042,3915,3791,3666,3545,3432,3321,3205,3104,2998,2903,2808,2716,2629,2545,2461, 2380,2301,2224,2149,2070,1993,1919,1842,1766,1692,1617,1544,1468,1395,1327,1261,1198,1136,1079,1022, 965,912,860,809,757,709,657,603,551,500,447,392,336,286,231,178,125,69,22,-30, -79,-121,-168,-211,-256,-299,-343,-384,-427,-468,-511,-556,-602,-650,-699,-745,-796,-845,-893,-943, -993,-1044,-1091,-1140,-1188,-1233,-1277,-1325,-1366,-1415,-1463,-1509,-1557,-1608,-1659,-1710,-1768,-1821,-1882,-1942, -2001,-2067,-2131,-2196,-2261,-2326,-2395,-2461,-2525,-2591,-2657,-2722,-2788,-2855,-2925,-2996,-3069,-3145,-3226,-3304, -3388,-3474,-3567,-3661,-3754,-3851,-3954,-4051,-4155,-4256,-4362,-4465,-4567,-4674,-4779,-4885,-4993,-5100,-5212,-5327, -5444,-5562,-5691,-5813,-5945,-6079,-6217,-6357,-6494,-6633,-6778,-6917,-7055,-7193,-7326,-7455,-7586,-7707,-7823,-7935, -8045,-8151,-8252,-8349,-8437,-8525,-8606,-8678,-8742,-8794,-8841,-8871,-8885,-8882,-8864,-8820,-8752,-8658,-8547,-8401, -8225,-8023,-7782,-7513,-7210,-6875,-6505,-6102,-5668,-5196,-4689,-4157,-3584,-2988,-2363,-1718,-1055,-378,307,990, 1674,2348,2995,3624,4218,4780,5303,5789,6236,6644,7013,7341,7633,7892,8118,8306,8458,8588,8686,8757, 8803,8818,8814,8792,8746,8686,8609,8515,8408,8292,8171,8041,7905,7773,7636,7496,7360,7222,7085,6953, 6820,6687,6551,6419,6283,6146,6006,5867,5730,5587,5446,5300,5162,5020,4880,4746,4613,4484,4359,4240, 4128,4012,3902,3800,3699,3595,3498,3394,3301,3200,3102,3004,2904,2804,2706,2606,2509,2414,2317,2228, 2140,2050,1968,1888,1813,1741,1665,1597,1531,1460,1390,1323,1255,1187,1113,1041,968,895,823,747, 672,603,528,457,386,322,251,191,127,69,10,-52,-105,-168,-231,-287,-351,-415,-485,-553, -619,-686,-757,-827,-899,-965,-1036,-1106,-1174,-1239,-1303,-1373,-1434,-1498,-1559,-1625,-1685,-1751,-1816,-1883, -1952,-2025,-2100,-2181,-2260,-2342,-2423,-2506,-2588,-2675,-2760,-2844,-2928,-3009,-3089,-3172,-3254,-3335,-3414,-3497, -3583,-3668,-3756,-3847,-3941,-4040,-4141,-4244,-4351,-4459,-4569,-4678,-4792,-4902,-5013,-5123,-5233,-5341,-5445,-5551, -5655,-5754,-5857,-5958,-6060,-6163,-6267,-6375,-6481,-6587,-6697,-6804,-6912,-7017,-7114,-7209,-7298,-7378,-7449,-7515, -7568,-7613,-7644,-7657,-7664,-7652,-7629,-7588,-7538,-7475,-7389,-7285,-7166,-7022,-6857,-6664,-6444,-6192,-5909,-5587, -5230,-4834,-4398,-3930,-3423,-2883,-2310,-1709,-1084,-439,223,888,1563,2233,2893,3540,4172,4776,5362,5918, 6444,6939,7395,7820,8204,8545,8849,9110,9330,9510,9653,9760,9838,9882,9898,9898,9865,9817,9757,9680, 9593,9492,9382,9265,9136,9000,8856,8707,8551,8383,8214,8042,7864,7686,7504,7320,7141,6963,6786,6610, 6442,6276,6112,5955,5802,5655,5505,5360,5221,5077,4937,4796,4656,4521,4382,4249,4113,3982,3854,3728, 3608,3490,3377,3263,3164,3062,2966,2871,2782,2696,2616,2527,2446,2366,2285,2205,2125,2042,1962,1882, 1806,1728,1654,1580,1505,1437,1373,1305,1247,1189,1135,1075,1018,969,919,862,812,762,708,656, 598,546,490,438,382,327,10,-534,-1077,-759,-710,-459,-349,-49,162,490,782,1100,1365,1683, 1934,2205,2435,2680,2868,3051,3183,3325,3428,3565,3678,3833,3973,4098,4189,4288,4363,4451,4518,4635, 4730,4856,4980,5135,5275,5464,5644,5889,6124,6370,6568,6802,6972,7180,7334,7498,7675,7858,8016,8162, 8270,8364,8430,8484,8523,8536,8499,8465,8370,8277,8155,8028,7926,7831,7732,7642,7542,7432,7313,7214, 7114,7022,6928,6844,6759,6660,6564,6469,6409,6352,6290,6216,6139,6029,5899,5739,5569,5389,5191,4953, 4723,4457,4199,3905,3610,3333,3048,2752,2444,2110,1735,1356,969,590,216,-159,-514,-849,-1177,-1502, -1809,-2093,-2354,-2598,-2818,-3010,-3208,-3386,-3559,-3697,-3815,-3900,-3981,-4005,-4038,-4053,-4094,-4131,-4150,-4182, -4215,-4261,-4346,-4431,-4554,-4686,-4842,-5003,-5197,-5352,-5539,-5740,-5970,-6217,-6474,-6737,-7004,-7278,-7560,-7845, -8122,-8410,-8685,-8939,-9189,-9391,-9566,-9734,-9869,-9998,-10115,-10198,-10253,-10298,-10309,-10307,-10280,-10265,-10222,-10181, -10138,-10084,-10001,-9904,-9820,-9745,-9678,-9587,-9527,-9476,-9409,-9366,-9315,-9284,-9256,-9246,-9246,-9255,-9253,-9249, -9254,-9226,-9212,-9192,-9143,-9102,-9037,-8943,-8833,-8696,-8568,-8423,-8268,-8104,-7942,-7761,-7566,-7336,-7138,-6892, -6635,-6378,-6131,-5867,-5616,-5352,-5131,-4903,-4689,-4503,-4334,-4162,-4009,-3854,-3702,-3535,-3348,-3167,-2997,-2824, -2666,-2503,-2350,-2220,-2072,-1942,-1837,-1724,-1633,-1532,-1409,-1294,-1132,-981,-826,-667,-523,-386,-274,-206, -115,-34,17,50,88,94,115,127,154,187,227,242,259,251,221,160,98,30,-33,-100, -155,-220,-283,-327,-357,-367,-353,-332,-317,-304,-312,-323,-355,-359,-356,-334,-306,-261,-220,-136, -69,37,149,262,376,510,610,698,756,816,901,999,1084,1200,1301,1413,1528,1636,1771,1897, 2014,2136,2236,2320,2380,2428,2478,2558,2629,2725,2829,2948,3079,3199,3343,3493,3650,3813,3996,4148, 4306,4457,4619,4815,5020,5232,5488,5722,5993,6239,6503,6768,7029,7289,7515,7761,7949,8148,8306,8470, 8624,8775,8913,9049,9165,9248,9328,9403,9460,9487,9503,9503,9472,9426,9355,9292,9233,9157,9107,9059, 9010,8944,8885,8841,8803,8739,8707,8679,8624,8572,8516,8455,8416,8373,8338,8314,8283,8244,8198,8147, 8089,8030,7966,7891,7791,7698,7556,7398,7233,7097,6939,6764,6594,6418,6216,6005,5803,5603,5384,5182, 4970,4751,4516,4281,4042,3824,3596,3387,3190,2982,2776,2563,2364,2152,1958,1768,1580,1384,1201,992, 775,570,367,163,-30,-228,-430,-649,-866,-1087,-1308,-1538,-1737,-1946,-2161,-2384,-2614,-2828,-3044,-3256, -3451,-3640,-3846,-4019,-4227,-4407,-4596,-4786,-4953,-5096,-5243,-5385,-5527,-5668,-5802,-5930,-6061,-6178,-6283,-6402, -6531,-6655,-6801,-6940,-7079,-7211,-7317,-7434,-7568,-7688,-7819,-7936,-8086,-8203,-8333,-8459,-8586,-8730,-8860,-8996, -9135,-9242,-9334,-9402,-9475,-9526,-9561,-9580,-9612,-9625,-9635,-9627,-9595,-9583,-9563,-9514,-9464,-9405,-9313,-9216, -9094,-8972,-8844,-8688,-8560,-8446,-8322,-8217,-8105,-8010,-7918,-7823,-7725,-7654,-7549,-7448,-7346,-7227,-7108,-6982, -6876,-6779,-6673,-6600,-6528,-6450,-6373,-6288,-6174,-6063,-5921,-5761,-5583,-5382,-5184,-4968,-4740,-4530,-4317,-4119, -3927,-3726,-3544,-3346,-3132,-2903,-2679,-2428,-2188,-1951,-1728,-1520,-1323,-1137,-989,-854,-749,-667,-602,-554, -500,-430,-373,-300,-244,-169,-121,-93,-78,-64,-62,-77,-79,-112,-137,-174,-188,-177,-162,-121, -50,3,70,104,146,176,208,219,254,273,295,295,328,355,396,444,511,568,608,652, 658,652,642,608,590,564,551,537,520,508,525,540,581,650,711,771,805,842,877,921, 957,1035,1108,1202,1308,1427,1575,1723,1880,2065,2242,2419,2576,2727,2863,2996,3128,3281,3411,3576, 3738,3908,4069,4244,4413,4602,4760,4935,5082,5213,5349,5475,5603,5730,5884,6030,6200,6347,6526,6710, 6896,7068,7264,7427,7586,7735,7872,7999,8136,8265,8396,8524,8647,8762,8877,8960,9058,9131,9215,9257, 9294,9299,9286,9256,9235,9194,9172,9121,9086,9014,8940,8863,8779,8692,8605,8518,8426,8317,8195,8073, 7972,7867,7768,7692,7596,7516,7409,7307,7208,7099,7000,6913,6804,6683,6567,6437,6309,6173,6037,5922, 5780,5656,5493,5329,5149,4966,4755,4574,4371,4171,3948,3734,3512,3299,3040,2833,2633,2409,2202,1958, 1733,1493,1249,1026,813,591,366,158,-54,-264,-477,-681,-860,-1059,-1225,-1413,-1625,-1808,-2003,-2206, -2393,-2580,-2747,-2921,-3100,-3269,-3466,-3652,-3814,-3980,-4133,-4308,-4492,-4672,-4853,-5049,-5232,-5416,-5584,-5746, -5907,-6074,-6235,-6416,-6560,-6707,-6848,-6998,-7132,-7279,-7414,-7571,-7714,-7853,-7980,-8089,-8202,-8302,-8394,-8488, -8591,-8669,-8753,-8812,-8873,-8931,-8986,-9045,-9119,-9162,-9224,-9264,-9289,-9302,-9297,-9297,-9308,-9285,-9265,-9249, -9223,-9202,-9167,-9146,-9131,-9114,-9078,-9038,-8976,-8916,-8828,-8727,-8635,-8524,-8404,-8290,-8166,-8060,-7945,-7806, -7677,-7557,-7417,-7289,-7118,-6961,-6761,-6553,-6332,-6133,-5898,-5680,-5461,-5259,-5068,-4872,-4683,-4519,-4324,-4140, -3955,-3750,-3558,-3357,-3153,-2975,-2783,-2611,-2453,-2308,-2210,-2105,-2005,-1920,-1832,-1724,-1622,-1515,-1397,-1284, -1160,-1063,-957,-851,-767,-682,-631,-572,-530,-483,-445,-370,-307,-223,-149,-70,5,68,111,155, 178,193,186,163,120,90,34,14,-7,-25,-22,-46,-61,-76,-134,-174,-225,-282,-327,-402, -460,-517,-569,-619,-621,-629,-599,-565,-522,-495,-460,-448,-404,-398,-366,-337,-298,-237,-179,-119, -44,50,160,282,401,517,630,723,811,892,984,1053,1136,1247,1367,1473,1601,1755,1897,2064, 2236,2402,2562,2727,2893,3045,3196,3375,3541,3731,3941,4166,4382,4630,4870,5122,5363,5611,5859,6089, 6310,6530,6724,6939,7132,7341,7547,7755,7946,8156,8359,8549,8720,8858,9018,9143,9244,9339,9444,9525, 9584,9660,9724,9785,9842,9915,9967,10003,10048,10062,10060,10048,10043,10016,10009,9975,9963,9926,9891,9846, 9805,9749,9701,9658,9616,9533,9444,9344,9250,9125,9009,8895,8789,8669,8539,8404,8266,8087,7961,7802, 7648,7488,7304,7113,6918,6693,6484,6283,6067,5866,5663,5451,5220,4987,4757,4533,4314,4107,3867,3634, 3407,3166,2919,2670,2440,2229,2002,1788,1573,1347,1113,900,691,474,281,67,-150,-362,-586,-806, -1024,-1230,-1425,-1615,-1808,-1998,-2210,-2415,-2615,-2822,-3006,-3206,-3415,-3609,-3816,-4040,-4239,-4457,-4634,-4810, -4982,-5161,-5337,-5522,-5704,-5888,-6062,-6238,-6405,-6568,-6737,-6917,-7072,-7240,-7389,-7511,-7635,-7731,-7848,-7980, -8092,-8208,-8325,-8440,-8544,-8664,-8744,-8854,-8951,-9056,-9136,-9206,-9253,-9307,-9348,-9408,-9463,-9507,-9572,-9623, -9692,-9731,-9750,-9775,-9785,-9788,-9790,-9750,-9734,-9689,-9622,-9562,-9515,-9449,-9400,-9342,-9286,-9235,-9137,-9034, -8926,-8809,-8685,-8557,-8411,-8268,-8120,-7975,-7839,-7706,-7569,-7471,-7344,-7221,-7085,-6924,-6773,-6605,-6436,-6247, -6070,-5889,-5706,-5520,-5360,-5208,-5044,-4885,-4723,-4565,-4379,-4190,-3968,-3770,-3552,-3328,-3106,-2887,-2686,-2492, -2309,-2146,-1990,-1855,-1715,-1568,-1416,-1275,-1107,-985,-839,-709,-591,-479,-404,-334,-268,-240,-228,-216, -212,-203,-200,-151,-110,-83,-44,-10,7,29,41,37,49,36,12,-6,-26,-32,-19,0, 48,92,124,163,184,207,208,212,209,202,164,153,138,109,100,108,125,164,181,183, 195,188,185,148,142,137,128,108,116,135,161,211,290,378,470,567,672,767,864,955, 1048,1145,1279,1407,1564,1711,1878,2055,2246,2449,2671,2873,3078,3268,3449,3612,3774,3928,4102,4274, 4461,4653,4849,5036,5222,5433,5625,5804,5985,6164,6332,6476,6618,6746,6906,7030,7185,7371,7533,7720, 7885,8058,8214,8366,8476,8621,8739,8849,8948,9021,9110,9193,9256,9337,9417,9497,9566,9619,9648,9666, 9655,9651,9619,9589,9558,9507,9446,9383,9311,9239,9180,9119,9054,8978,8903,8797,8679,8561,8431,8304, 8186,8053,7926,7807,7677,7541,7413,7273,7163,7031,6899,6743,6583,6405,6233,6058,5864,5680,5502,5326, 5146,4956,4755,4564,4365,4182,3979,3775,3570,3346,3104,2866,2633,2412,2174,1959,1751,1544,1329,1105, 882,690,478,273,76,-143,-365,-580,-787,-1013,-1222,-1414,-1588,-1761,-1956,-2139,-2325,-2518,-2709,-2883, -3051,-3228,-3427,-3617,-3819,-4012,-4202,-4384,-4562,-4724,-4876,-5048,-5226,-5410,-5576,-5751,-5923,-6072,-6235,-6414, -6585,-6752,-6922,-7090,-7223,-7346,-7459,-7588,-7695,-7816,-7927,-8054,-8154,-8248,-8336,-8436,-8512,-8596,-8675,-8764, -8823,-8863,-8889,-8920,-8945,-8997,-9018,-9048,-9094,-9122,-9151,-9179,-9191,-9203,-9220,-9231,-9244,-9223,-9189,-9160, -9117,-9069,-9040,-9008,-8983,-8957,-8904,-8857,-8793,-8709,-8637,-8536,-8434,-8312,-8159,-8013,-7851,-7701,-7551,-7404, -7255,-7120,-6953,-6783,-6622,-6421,-6227,-6032,-5842,-5644,-5430,-5207,-5005,-4806,-4628,-4469,-4311,-4168,-4024,-3867, -3705,-3550,-3385,-3236,-3077,-2921,-2765,-2596,-2467,-2334,-2209,-2103,-2006,-1930,-1838,-1738,-1620,-1515,-1375,-1259, -1143,-1037,-922,-793,-683,-596,-510,-455,-397,-365,-328,-284,-235,-181,-113,-60,0,33,70,99, 124,127,117,106,74,14,-37,-69,-93,-101,-90,-72,-63,-64,-64,-64,-72,-72,-92,-85, -104,-106,-114,-114,-87,-33,24,95,187,269,335,417,472,535,590,644,716,774,847,915, 1000,1102,1218,1336,1473,1595,1719,1815,1927,2024,2110,2205,2318,2437,2557,2695,2831,2981,3161,3334, 3529,3726,3916,4107,4285,4464,4641,4799,4990,5174,5392,5589,5809,6019,6254,6461,6678,6882,7085,7286, 7445,7602,7753,7875,8003,8142,8274,8404,8523,8659,8780,8878,8964,9059,9123,9195,9252,9293,9325,9343, 9361,9372,9376,9405,9426,9447,9480,9489,9478,9477,9450,9427,9402,9367,9324,9276,9199,9140,9067,8990, 8914,8848,8783,8720,8617,8505,8388,8252,8135,8000,7851,7717,7558,7394,7237,7071,6880,6716,6553,6407, 6236,6046,5860,5656,5466,5256,5067,4873,4680,4469,4275,4061,3849,3643,3447,3264,3075,2885,2675,2467, 2252,2026,1812,1599,1400,1185,987,763,538,320,89,-117,-302,-505,-708,-922,-1157,-1375,-1602,-1830, -2036,-2246,-2448,-2656,-2875,-3082,-3300,-3502,-3683,-3868,-4069,-4245,-4437,-4637,-4838,-5046,-5225,-5406,-5562,-5735, -5901,-6063,-6229,-6386,-6536,-6670,-6818,-6952,-7091,-7237,-7387,-7552,-7695,-7815,-7933,-8045,-8145,-8259,-8366,-8492, -8590,-8684,-8782,-8859,-8937,-9028,-9107,-9210,-9294,-9363,-9418,-9450,-9468,-9500,-9522,-9546,-9560,-9576,-9567,-9557, -9533,-9524,-9488,-9477,-9445,-9401,-9323,-9241,-9140,-9030,-8917,-8813,-8719,-8613,-8500,-8384,-8270,-8139,-8020,-7899, -7766,-7637,-7481,-7322,-7154,-6969,-6805,-6642,-6486,-6351,-6210,-6068,-5926,-5747,-5604,-5448,-5295,-5128,-4954,-4756, -4551,-4344,-4153,-3963,-3777,-3624,-3459,-3304,-3157,-2989,-2820,-2650,-2482,-2326,-2163,-1977,-1809,-1632,-1461,-1321, -1205,-1113,-1025,-962,-898,-839,-765,-693,-622,-553,-508,-432,-380,-319,-278,-242,-230,-235,-263,-286, -310,-340,-334,-335,-315,-302,-308,-284,-261,-252,-229,-231,-226,-239,-271,-314,-334,-362,-363,-354, -342,-318,-284,-271,-252,-238,-235,-230,-236,-231,-262,-283,-292,-309,-312,-287,-251,-191,-137,-84, -29,38,81,148,197,268,326,387,475,566,667,789,936,1112,1294,1468,1649,1841,1985,2159, 2333,2493,2665,2844,3022,3221,3411,3600,3827,4044,4278,4497,4720,4938,5132,5301,5451,5630,5807,5988, 6157,6349,6531,6711,6913,7109,7293,7497,7680,7875,8045,8183,8319,8449,8570,8703,8828,8978,9109,9238, 9363,9480,9584,9686,9778,9868,9944,10000,10031,10048,10035,10034,10032,10030,10029,10016,9997,9966,9918,9869, 9800,9732,9658,9577,9471,9363,9236,9110,8976,8859,8731,8641,8516,8408,8276,8136,7983,7834,7700,7549, 7394,7239,7071,6904,6719,6537,6365,6213,6038,5886,5715,5522,5335,5130,4938,4745,4542,4336,4135,3922, 3706,3474,3254,3040,2842,2637,2438,2225,2013,1765,1535,1311,1100,874,660,441,219,-15,-245,-467, -667,-874,-1062,-1267,-1465,-1685,-1896,-2118,-2314,-2519,-2703,-2896,-3107,-3300,-3500,-3696,-3886,-4065,-4236,-4407, -4594,-4777,-4980,-5177,-5365,-5551,-5732,-5892,-6060,-6233,-6402,-6576,-6739,-6905,-7061,-7197,-7339,-7483,-7649,-7796, -7959,-8106,-8240,-8353,-8463,-8551,-8663,-8770,-8864,-8954,-9042,-9107,-9173,-9237,-9301,-9376,-9449,-9501,-9558,-9599, -9604,-9628,-9616,-9639,-9647,-9644,-9652,-9659,-9626,-9609,-9592,-9581,-9564,-9541,-9507,-9480,-9407,-9321,-9228,-9140, -9044,-8951,-8865,-8767,-8654,-8527,-8409,-8284,-8165,-8031,-7884,-7732,-7550,-7349,-7135,-6925,-6719,-6519,-6323,-6132, -5952,-5760,-5569,-5376,-5201,-5009,-4822,-4632,-4440,-4229,-4012,-3806,-3607,-3429,-3258,-3112,-2987,-2852,-2728,-2588, -2465,-2333,-2207,-2071,-1948,-1805,-1656,-1498,-1369,-1257,-1144,-1055,-981,-915,-847,-767,-677,-599,-519,-423, -344,-257,-164,-81,2,50,89,124,114,107,107,96,101,95,89,111,110,111,124,112, 113,99,68,37,-20,-90,-137,-192,-211,-226,-241,-230,-214,-197,-174,-166,-141,-124,-100,-86, -69,-61,-51,-29,16,71,136,230,336,432,529,619,701,789,868,944,1030,1106,1178,1268, 1355,1470,1605,1747,1917,2078,2238,2377,2518,2662,2796,2938,3090,3254,3415,3586,3755,3939,4133,4356, 4588,4822,5052,5270,5471,5678,5869,6041,6228,6437,6627,6823,7018,7205,7383,7572,7755,7955,8132,8293, 8439,8559,8665,8758,8848,8952,9055,9137,9227,9299,9379,9428,9493,9556,9623,9666,9713,9724,9729,9714, 9687,9685,9685,9672,9660,9652,9625,9593,9540,9498,9458,9396,9345,9276,9188,9080,8968,8844,8737,8620, 8508,8408,8274,8142,7992,7835,7692,7533,7388,7228,7060,6889,6691,6491,6295,6119,5941,5773,5591,5411, 5217,5024,4823,4639,4449,4259,4073,3879,3675,3470,3261,3051,2862,2672,2485,2296,2106,1887,1692,1483, 1271,1072,880,678,475,251,22,-189,-408,-617,-812,-1024,-1205,-1419,-1639,-1840,-2049,-2274,-2459,-2659, -2857,-3051,-3257,-3460,-3645,-3847,-4028,-4208,-4379,-4547,-4731,-4911,-5082,-5261,-5431,-5591,-5739,-5908,-6069,-6213, -6361,-6529,-6671,-6801,-6934,-7048,-7188,-7316,-7456,-7596,-7735,-7867,-7985,-8090,-8207,-8312,-8424,-8518,-8643,-8713, -8803,-8876,-8952,-9029,-9106,-9189,-9270,-9328,-9390,-9419,-9452,-9473,-9483,-9490,-9496,-9488,-9464,-9448,-9415,-9383, -9342,-9309,-9274,-9243,-9174,-9113,-9018,-8927,-8815,-8706,-8604,-8506,-8400,-8276,-8162,-8051,-7938,-7836,-7716,-7615, -7497,-7366,-7227,-7063,-6898,-6719,-6542,-6399,-6239,-6090,-5932,-5770,-5623,-5463,-5304,-5160,-5000,-4809,-4640,-4441, -4238,-4024,-3803,-3634,-3457,-3286,-3145,-2987,-2858,-2699,-2564,-2439,-2317,-2184,-2051,-1910,-1779,-1632,-1501,-1397, -1319,-1240,-1197,-1147,-1112,-1080,-1034,-993,-971,-928,-889,-840,-786,-735,-675,-628,-608,-602,-597,-605, -617,-622,-605,-572,-572,-534,-496,-462,-423,-398,-350,-319,-310,-298,-293,-305,-328,-349,-353,-345, -330,-307,-268,-243,-220,-182,-154,-122,-90,-82,-68,-65,-60,-52,-30,25,102,186,283,387, 492,597,708,822,940,1057,1163,1290,1392,1515,1653,1801,1986,2175,2374,2592,2760,2947,3134,3314, 3492,3676,3851,4022,4183,4355,4509,4688,4878,5098,5278,5503,5698,5875,6051,6205,6363,6524,6680,6846, 7003,7146,7291,7441,7589,7770,7935,8110,8270,8424,8556,8662,8777,8878,8974,9058,9163,9244,9316,9379, 9441,9508,9574,9625,9681,9712,9726,9722,9693,9666,9643,9587,9573,9534,9498,9430,9368,9295,9229,9155, 9090,9015,8933,8832,8717,8590,8478,8343,8234,8120,8003,7875,7742,7610,7479,7326,7185,7055,6909,6766, 6591,6421,6230,6057,5864,5696,5515,5349,5157,4962,4767,4577,4372,4188,3985,3797,3582,3364,3141,2918, 2689,2479,2271,2065,1857,1639,1432,1226,989,788,581,373,172,-44,-260,-481,-701,-902,-1098,-1297, -1483,-1693,-1881,-2072,-2274,-2478,-2660,-2854,-3047,-3243,-3435,-3620,-3823,-4022,-4203,-4377,-4548,-4718,-4893,-5058, -5225,-5420,-5596,-5769,-5946,-6100,-6272,-6441,-6594,-6750,-6903,-7044,-7179,-7291,-7415,-7522,-7636,-7767,-7886,-7999, -8097,-8199,-8280,-8368,-8447,-8520,-8589,-8647,-8703,-8737,-8762,-8795,-8804,-8847,-8892,-8913,-8956,-8961,-8983,-8986, -8968,-8947,-8938,-8914,-8874,-8833,-8787,-8727,-8664,-8603,-8567,-8510,-8462,-8385,-8313,-8222,-8111,-7994,-7866,-7736, -7586,-7447,-7289,-7131,-6971,-6801,-6645,-6506,-6340,-6209,-6036,-5860,-5666,-5465,-5256,-5058,-4850,-4660,-4469,-4297, -4123,-3949,-3776,-3637,-3496,-3350,-3213,-3076,-2936,-2761,-2591,-2427,-2272,-2135,-2001,-1892,-1786,-1687,-1582,-1502, -1408,-1319,-1243,-1156,-1078,-968,-845,-715,-626,-524,-450,-398,-364,-311,-285,-248,-235,-201,-179,-145, -118,-104,-63,-31,10,42,39,13,-28,-74,-112,-160,-199,-244,-264,-288,-317,-328,-342,-327, -327,-324,-333,-354,-385,-426,-460,-478,-486,-482,-439,-413,-372,-337,-281,-211,-152,-82,-19,34, 84,119,160,203,275,345,455,550,666,777,877,1012,1139,1250,1377,1505,1603,1714,1800,1917, 2036,2165,2336,2518,2694,2888,3061,3250,3446,3627,3822,4013,4196,4383,4551,4733,4917,5107,5315,5556, 5785,6004,6214,6419,6602,6789,6941,7115,7284,7439,7571,7698,7825,7955,8073,8220,8362,8484,8585,8681, 8749,8831,8877,8934,8982,9028,9054,9071,9104,9102,9123,9137,9153,9184,9188,9170,9152,9118,9077,9029, 8984,8928,8887,8803,8732,8663,8566,8484,8420,8320,8250,8141,8026,7899,7770,7606,7485,7335,7194,7045, 6900,6745,6575,6401,6255,6087,5925,5756,5586,5398,5214,5026,4819,4633,4440,4266,4062,3876,3696,3500, 3304,3118,2923,2734,2533,2347,2166,1939,1727,1523,1304,1107,911,713,515,314,105,-111,-314,-509, -728,-921,-1129,-1327,-1564,-1772,-1987,-2183,-2380,-2593,-2779,-2977,-3183,-3369,-3569,-3759,-3944,-4132,-4316,-4494, -4683,-4878,-5057,-5238,-5405,-5579,-5737,-5885,-6042,-6210,-6368,-6518,-6673,-6819,-6956,-7110,-7245,-7391,-7517,-7660, -7787,-7925,-8035,-8132,-8240,-8347,-8439,-8549,-8663,-8760,-8868,-8942,-9035,-9116,-9189,-9265,-9324,-9388,-9428,-9450, -9464,-9484,-9498,-9513,-9536,-9544,-9552,-9537,-9516,-9489,-9444,-9400,-9348,-9275,-9202,-9117,-9010,-8897,-8810,-8697, -8607,-8510,-8420,-8314,-8189,-8052,-7931,-7770,-7626,-7459,-7317,-7151,-6972,-6788,-6619,-6437,-6299,-6128,-5996,-5842, -5673,-5498,-5309,-5104,-4894,-4694,-4480,-4285,-4076,-3864,-3661,-3466,-3275,-3108,-2933,-2780,-2614,-2425,-2244,-2050, -1840,-1659,-1466,-1298,-1151,-997,-857,-757,-631,-531,-440,-364,-295,-214,-126,-38,53,151,232,291, 327,375,402,402,418,430,429,436,416,426,446,454,487,535,560,575,594,587,581,553, 521,506,487,477,455,444,441,450,456,476,493,522,516,503,471,452,409,384,365,367, 367,367,380,418,447,505,548,606,648,705,733,779,813,854,914,1022,1104,1197,1329,1463, 1599,1736,1909,2063,2224,2372,2519,2660,2799,2932,3084,3248,3438,3623,3809,4012,4203,4394,4595,4790, 4982,5156,5327,5480,5638,5789,5949,6114,6310,6500,6676,6866,7071,7230,7401,7577,7737,7897,8035,8160, 8307,8418,8526,8660,8784,8923,9056,9182,9291,9399,9464,9555,9610,9668,9718,9743,9772,9776,9764,9781, 9773,9764,9763,9745,9719,9691,9614,9568,9498,9419,9330,9242,9156,9058,8937,8823,8708,8612,8496,8386, 8268,8151,8023,7876,7737,7578,7424,7264,7115,6946,6795,6612,6440,6264,6108,5927,5768,5596,5405,5216, 5013,4798,4590,4384,4179,3974,3765,3548,3329,3104,2901,2687,2469,2262,2056,1826,1596,1382,1145,916, 690,460,246,24,-203,-412,-633,-840,-1049,-1263,-1449,-1662,-1883,-2079,-2295,-2500,-2724,-2920,-3125,-3303, -3504,-3695,-3896,-4087,-4277,-4466,-4647,-4818,-5015,-5200,-5393,-5585,-5782,-5968,-6140,-6302,-6478,-6644,-6806,-6968, -7127,-7292,-7446,-7580,-7731,-7881,-8026,-8174,-8317,-8451,-8577,-8686,-8777,-8877,-8972,-9063,-9159,-9250,-9344,-9405, -9473,-9550,-9602,-9678,-9740,-9803,-9851,-9867,-9884,-9890,-9906,-9901,-9906,-9912,-9927,-9936,-9913,-9908,-9901,-9869, -9845,-9809,-9759,-9711,-9626,-9565,-9454,-9356,-9256,-9164,-9079,-8988,-8881,-8766,-8644,-8505,-8367,-8215,-8066,-7890, -7712,-7521,-7331,-7121,-6929,-6734,-6567,-6390,-6221,-6058,-5900,-5712,-5522,-5324,-5140,-4936,-4732,-4535,-4356,-4155, -3973,-3803,-3662,-3518,-3375,-3245,-3109,-2982,-2830,-2668,-2511,-2360,-2205,-2056,-1920,-1791,-1657,-1548,-1436,-1346, -1267,-1178,-1104,-1024,-925,-823,-717,-622,-523,-433,-358,-290,-246,-197,-174,-146,-147,-142,-120,-118, -109,-73,-54,-22,3,29,49,38,34,17,-3,-29,-55,-64,-64,-85,-88,-56,-35,17, 60,100,155,195,201,231,249,282,302,349,399,466,530,620,708,836,928,1041,1143,1233, 1303,1385,1464,1562,1641,1741,1847,1983,2111,2250,2412,2566,2731,2883,3056,3205,3353,3495,3644,3784, 3947,4115,4303,4500,4702,4906,5119,5325,5550,5755,5947,6145,6334,6501,6676,6839,7011,7179,7364,7548, 7738,7892,8060,8238,8379,8520,8652,8776,8887,8971,9061,9130,9190,9268,9345,9421,9503,9574,9632,9681, 9717,9756,9769,9786,9799,9794,9769,9746,9717,9706,9679,9654,9635,9604,9555,9515,9447,9394,9311,9228, 9137,9050,8931,8825,8704,8579,8460,8333,8223,8092,7949,7809,7668,7518,7345,7163,7011,6846,6652,6466, 6300,6112,5926,5745,5558,5399,5219,5023,4841,4649,4455,4241,4041,3860,3664,3451,3272,3052,2866,2662, 2463,2275,2095,1885,1705,1495,1291,1068,852,642,448,230,33,-175,-387,-606,-813,-1006,-1196,-1397, -1604,-1805,-2015,-2228,-2443,-2653,-2829,-3028,-3222,-3415,-3611,-3792,-3994,-4163,-4343,-4503,-4676,-4848,-5028,-5201, -5386,-5556,-5726,-5870,-6037,-6171,-6326,-6456,-6616,-6763,-6883,-7017,-7146,-7275,-7409,-7538,-7668,-7808,-7938,-8038, -8153,-8247,-8338,-8435,-8520,-8605,-8691,-8763,-8839,-8898,-8962,-9031,-9094,-9165,-9209,-9247,-9271,-9281,-9281,-9266, -9238,-9243,-9228,-9196,-9170,-9138,-9093,-9044,-9013,-8950,-8902,-8836,-8743,-8664,-8546,-8437,-8317,-8201,-8084,-7965, -7848,-7739,-7619,-7506,-7384,-7260,-7123,-6987,-6824,-6673,-6507,-6324,-6146,-5969,-5796,-5627,-5458,-5302,-5156,-4988, -4837,-4649,-4498,-4317,-4124,-3929,-3736,-3527,-3344,-3141,-2970,-2797,-2641,-2503,-2368,-2238,-2115,-1973,-1849,-1723, -1573,-1436,-1311,-1196,-1078,-968,-887,-813,-735,-682,-646,-616,-582,-555,-513,-465,-410,-357,-302,-269, -223,-194,-171,-172,-154,-150,-152,-171,-171,-174,-155,-145,-127,-77,-47,-14,13,23,29,18, 5,-4,-13,-31,-39,-32,-30,-24,7,42,95,121,154,191,196,212,223,207,253,274, 313,367,434,508,587,691,813,928,1034,1156,1264,1364,1464,1566,1699,1834,1961,2118,2280,2452, 2637,2820,3009,3205,3387,3570,3755,3919,4077,4228,4403,4582,4750,4948,5136,5318,5524,5705,5908,6096, 6282,6453,6614,6765,6917,7037,7184,7340,7502,7646,7791,7939,8086,8222,8364,8490,8635,8720,8824,8911, 8992,9051,9112,9177,9250,9298,9355,9390,9432,9456,9471,9498,9507,9490,9464,9439,9383,9335,9272,9215, 9162,9091,9025,8960,8883,8806,8707,8611,8527,8427,8315,8196,8073,7942,7810,7678,7551,7432,7301,7167, 7025,6892,6735,6579,6432,6262,6084,5928,5742,5562,5375,5185,5004,4827,4636,4460,4282,4082,3886,3677, 3476,3267,3067,2862,2661,2442,2226,2001,1794,1587,1394,1191,1001,797,579,357,148,-48,-263,-470, -671,-887,-1095,-1310,-1526,-1730,-1930,-2126,-2311,-2498,-2710,-2909,-3124,-3319,-3515,-3722,-3909,-4096,-4285,-4489, -4686,-4859,-5037,-5220,-5384,-5550,-5714,-5890,-6069,-6235,-6409,-6568,-6728,-6870,-7022,-7162,-7316,-7454,-7577,-7704, -7835,-7936,-8063,-8173,-8290,-8409,-8519,-8619,-8731,-8819,-8903,-8980,-9071,-9156,-9222,-9276,-9340,-9383,-9427,-9476, -9516,-9571,-9619,-9647,-9693,-9716,-9699,-9702,-9686,-9676,-9661,-9622,-9585,-9538,-9485,-9438,-9377,-9334,-9277,-9204, -9129,-9042,-8939,-8823,-8695,-8564,-8424,-8275,-8137,-7990,-7844,-7692,-7545,-7400,-7254,-7104,-6943,-6768,-6592,-6404, -6206,-6021,-5821,-5606,-5414,-5229,-5044,-4862,-4689,-4523,-4369,-4199,-4017,-3846,-3669,-3486,-3294,-3108,-2930,-2755, -2569,-2413,-2264,-2131,-2001,-1873,-1761,-1641,-1515,-1388,-1261,-1123,-998,-867,-752,-630,-524,-428,-348,-267, -218,-162,-121,-82,-28,39,82,144,211,268,300,337,368,385,401,401,391,367,351,335, 322,326,330,338,362,363,383,375,366,355,354,337,328,327,307,300,315,320,372,397, 454,503,559,591,641,675,732,764,803,852,901,964,1036,1122,1225,1322,1441,1569,1682,1795, 1898,2004,2119,2221,2327,2447,2570,2698,2841,3003,3171,3346,3521,3711,3893,4074,4234,4406,4579,4745, 4902,5073,5240,5426,5604,5791,5987,6176,6371,6559,6743,6918,7076,7233,7383,7522,7659,7792,7931,8064, 8204,8325,8451,8585,8714,8833,8940,9032,9116,9185,9258,9326,9392,9429,9487,9526,9564,9593,9631,9649, 9678,9675,9697,9673,9647,9605,9552,9500,9460,9392,9333,9257,9181,9097,9001,8910,8821,8722,8626,8514, 8388,8260,8113,7979,7851,7689,7562,7423,7269,7120,6963,6808,6656,6495,6342,6189,6016,5846,5660,5470, 5283,5119,4931,4772,4589,4409,4201,4011,3830,3626,3428,3242,3035,2834,2613,2390,2173,1967,1754,1559, 1356,1147,939,717,502,296,86,-123,-337,-541,-757,-973,-1201,-1408,-1612,-1810,-2004,-2213,-2399,-2605, -2796,-3002,-3201,-3395,-3587,-3784,-3969,-4167,-4370,-4565,-4739,-4929,-5104,-5276,-5443,-5616,-5790,-5957,-6133,-6306, -6462,-6618,-6771,-6935,-7090,-7236,-7393,-7536,-7658,-7774,-7897,-8013,-8133,-8252,-8381,-8495,-8608,-8712,-8823,-8911, -9017,-9102,-9196,-9282,-9345,-9397,-9457,-9497,-9558,-9612,-9657,-9706,-9745,-9783,-9805,-9827,-9831,-9846,-9839,-9819, -9793,-9756,-9710,-9657,-9609,-9561,-9505,-9438,-9386,-9324,-9227,-9145,-9050,-8946,-8829,-8705,-8571,-8439,-8297,-8136, -7992,-7846,-7709,-7564,-7423,-7286,-7135,-6981,-6820,-6649,-6481,-6300,-6118,-5931,-5739,-5567,-5388,-5218,-5048,-4897, -4727,-4589,-4424,-4269,-4098,-3932,-3765,-3587,-3404,-3236,-3056,-2888,-2739,-2593,-2446,-2330,-2201,-2083,-1969,-1843, -1721,-1601,-1485,-1352,-1232,-1111,-1009,-896,-807,-735,-676,-618,-567,-523,-486,-428,-389,-327,-283,-230, -177,-131,-97,-70,-39,-24,-25,-30,-23,-30,-25,-19,-1,11,45,68,106,114,146,162, 196,192,212,213,225,229,253,278,325,371,429,482,547,608,677,724,788,840,896,943, 1011,1071,1143,1226,1334,1436,1553,1671,1798,1918,2045,2175,2300,2431,2555,2672,2804,2936,3080,3245, 3401,3576,3751,3933,4102,4288,4465,4640,4804,4978,5138,5295,5436,5598,5775,5943,6107,6292,6466,6643, 6807,6963,7128,7278,7419,7560,7693,7810,7919,8039,8161,8288,8413,8535,8654,8760,8856,8955,9031,9116, 9185,9242,9289,9347,9372,9395,9427,9461,9476,9496,9518,9519,9523,9491,9456,9425,9387,9320,9279,9209, 9140,9047,8963,8876,8791,8696,8606,8513,8400,8282,8155,8024,7888,7754,7628,7480,7346,7187,7034,6884, 6738,6589,6435,6304,6142,5987,5813,5643,5469,5295,5121,4949,4780,4600,4405,4221,4040,3856,3665,3496, 3296,3105,2905,2693,2476,2269,2055,1850,1638,1442,1232,1019,789,594,379,174,-29,-232,-435,-656, -873,-1077,-1290,-1488,-1695,-1888,-2080,-2273,-2475,-2665,-2847,-3038,-3214,-3394,-3586,-3778,-3968,-4153,-4347,-4545, -4702,-4875,-5036,-5208,-5382,-5545,-5707,-5872,-6024,-6182,-6336,-6501,-6652,-6811,-6955,-7109,-7245,-7378,-7498,-7622, -7738,-7849,-7950,-8069,-8172,-8275,-8367,-8464,-8556,-8649,-8737,-8804,-8887,-8942,-8997,-9040,-9072,-9112,-9145,-9169, -9209,-9215,-9250,-9262,-9265,-9272,-9268,-9256,-9254,-9223,-9184,-9127,-9070,-9013,-8950,-8875,-8814,-8741,-8670,-8594, -8506,-8419,-8319,-8207,-8098,-7967,-7833,-7688,-7543,-7382,-7230,-7073,-6929,-6781,-6624,-6490,-6330,-6174,-6008,-5841, -5683,-5516,-5318,-5144,-4950,-4759,-4580,-4402,-4228,-4071,-3903,-3753,-3594,-3440,-3286,-3133,-2967,-2817,-2650,-2495, -2334,-2182,-2042,-1911,-1784,-1681,-1575,-1484,-1401,-1306,-1217,-1130,-1037,-952,-867,-784,-698,-619,-563,-511, -463,-429,-399,-375,-360,-324,-314,-288,-257,-226,-202,-160,-132,-105,-82,-85,-77,-84,-98,-110, -130,-136,-148,-145,-145,-130,-118,-113,-90,-77,-71,-66,-73,-74,-79,-78,-64,-57,-31,1, 41,89,156,208,273,335,414,464,533,597,669,736,819,902,1010,1122,1242,1369,1503,1630, 1777,1922,2060,2192,2326,2466,2605,2742,2898,3042,3198,3375,3550,3732,3917,4097,4285,4474,4649,4815, 4982,5150,5321,5484,5653,5834,6012,6197,6371,6557,6733,6916,7089,7263,7418,7573,7709,7839,7973,8109, 8226,8361,8473,8598,8711,8818,8917,9015,9106,9184,9252,9301,9348,9384,9405,9428,9442,9458,9467,9478, 9482,9469,9456,9438,9406,9367,9329,9274,9214,9134,9056,8976,8892,8802,8728,8630,8541,8442,8338,8223, 8105,7981,7865,7730,7593,7446,7308,7144,6998,6835,6689,6528,6377,6211,6044,5859,5695,5511,5331,5151, 4957,4768,4571,4368,4168,3964,3757,3560,3364,3163,2950,2735,2523,2309,2087,1896,1667,1450,1235,1013, 800,573,352,151,-62,-267,-465,-677,-889,-1098,-1316,-1523,-1719,-1912,-2119,-2317,-2517,-2711,-2913,-3101, -3281,-3466,-3645,-3828,-4005,-4190,-4383,-4574,-4733,-4913,-5087,-5256,-5427,-5596,-5762,-5938,-6091,-6243,-6391,-6545, -6692,-6835,-6983,-7142,-7281,-7425,-7553,-7688,-7798,-7927,-8035,-8159,-8261,-8356,-8447,-8539,-8626,-8704,-8784,-8865, -8941,-9010,-9072,-9127,-9167,-9201,-9232,-9268,-9290,-9305,-9305,-9316,-9316,-9314,-9309,-9298,-9297,-9268,-9256,-9213, -9167,-9109,-9045,-8973,-8915,-8820,-8750,-8666,-8573,-8474,-8378,-8274,-8173,-8060,-7942,-7828,-7684,-7537,-7381,-7221, -7069,-6913,-6752,-6597,-6435,-6283,-6124,-5961,-5797,-5645,-5482,-5311,-5141,-4953,-4768,-4580,-4410,-4230,-4063,-3898, -3740,-3578,-3436,-3280,-3133,-2990,-2831,-2694,-2529,-2380,-2211,-2060,-1908,-1766,-1625,-1499,-1381,-1277,-1164,-1068, -964,-879,-783,-689,-595,-504,-402,-318,-234,-176,-119,-72,-37,-17,14,29,55,60,72,103, 122,148,171,195,215,232,226,237,223,223,210,206,202,213,212,234,252,276,313,344, 364,398,420,435,444,458,476,498,515,561,597,642,694,757,819,891,955,1007,1067,1130, 1183,1232,1299,1368,1447,1532,1629,1738,1853,1975,2098,2227,2350,2484,2621,2744,2882,3010,3147,3286, 3445,3606,3780,3946,4134,4309,4494,4680,4860,5035,5209,5369,5538,5693,5848,5999,6157,6316,6475,6639, 6806,6975,7119,7275,7409,7537,7661,7777,7885,7993,8087,8183,8278,8366,8457,8553,8639,8736,8816,8891, 8951,8999,9025,9060,9084,9106,9118,9124,9133,9134,9120,9115,9108,9095,9071,9041,8994,8937,8868,8794, 8702,8615,8525,8427,8336,8229,8118,8009,7891,7779,7661,7533,7412,7268,7114,6976,6809,6642,6494,6327, 6171,6014,5860,5700,5535,5353,5203,5025,4861,4677,4486,4300,4109,3902,3701,3507,3308,3124,2924,2735, 2538,2324,2118,1928,1718,1512,1300,1089,872,646,426,212,-8,-216,-413,-613,-809,-1020,-1233,-1423, -1635,-1832,-2026,-2229,-2430,-2626,-2830,-3027,-3226,-3409,-3585,-3756,-3939,-4110,-4287,-4474,-4655,-4823,-4996,-5167, -5340,-5504,-5681,-5846,-6007,-6166,-6319,-6466,-6607,-6740,-6891,-7040,-7181,-7327,-7468,-7594,-7717,-7846,-7968,-8088, -8203,-8316,-8412,-8512,-8582,-8666,-8742,-8825,-8895,-8982,-9048,-9111,-9161,-9209,-9238,-9277,-9300,-9330,-9346,-9356, -9356,-9346,-9327,-9337,-9316,-9299,-9291,-9273,-9247,-9213,-9156,-9102,-9044,-8988,-8924,-8849,-8766,-8680,-8589,-8494, -8405,-8311,-8226,-8127,-8018,-7910,-7771,-7631,-7494,-7344,-7197,-7040,-6878,-6722,-6548,-6386,-6226,-6065,-5904,-5751, -5581,-5406,-5227,-5034,-4841,-4649,-4463,-4286,-4104,-3927,-3760,-3585,-3432,-3285,-3140,-3004,-2866,-2722,-2572,-2426, -2274,-2139,-1995,-1874,-1748,-1634,-1534,-1433,-1340,-1258,-1173,-1111,-1028,-955,-862,-778,-672,-584,-509,-438, -377,-302,-252,-210,-162,-136,-99,-78,-47,-21,17,63,107,145,187,209,230,244,248,246, 243,247,244,234,223,236,242,267,298,334,362,393,412,435,448,473,490,524,544,594, 632,692,751,835,918,1010,1107,1207,1290,1387,1471,1553,1641,1737,1839,1944,2061,2180,2313,2444, 2587,2735,2883,3025,3168,3304,3437,3567,3692,3826,3969,4116,4273,4435,4601,4764,4946,5117,5297,5466, 5637,5803,5967,6126,6284,6423,6590,6737,6920,7082,7255,7417,7587,7742,7892,8030,8167,8300,8404,8506, 8610,8690,8781,8862,8948,9025,9092,9174,9236,9288,9323,9356,9365,9382,9390,9388,9373,9353,9333,9309, 9274,9255,9228,9196,9169,9128,9074,9018,8938,8869,8788,8705,8617,8524,8419,8329,8215,8102,7991,7880, 7771,7658,7528,7388,7243,7082,6936,6775,6606,6447,6278,6107,5937,5761,5569,5386,5212,5040,4858,4665, 4469,4260,4066,3852,3655,3451,3259,3050,2855,2643,2435,2223,2022,1825,1625,1430,1220,1011,799,576, 361,150,-55,-258,-453,-667,-875,-1085,-1302,-1501,-1700,-1897,-2090,-2298,-2515,-2713,-2925,-3133,-3331,-3523, -3711,-3901,-4099,-4287,-4483,-4675,-4848,-5025,-5210,-5373,-5547,-5722,-5899,-6081,-6248,-6406,-6554,-6695,-6849,-6986, -7132,-7271,-7412,-7539,-7671,-7784,-7908,-8026,-8144,-8270,-8383,-8481,-8573,-8651,-8729,-8809,-8885,-8970,-9041,-9112, -9177,-9223,-9272,-9324,-9352,-9398,-9433,-9458,-9473,-9470,-9452,-9443,-9429,-9418,-9400,-9382,-9345,-9310,-9248,-9202, -9126,-9070,-8997,-8916,-8818,-8713,-8597,-8472,-8344,-8222,-8110,-7989,-7864,-7730,-7597,-7449,-7304,-7151,-6992,-6840, -6673,-6505,-6332,-6152,-5985,-5820,-5659,-5513,-5364,-5218,-5065,-4886,-4737,-4566,-4401,-4232,-4063,-3888,-3710,-3538, -3375,-3217,-3058,-2925,-2787,-2655,-2530,-2387,-2247,-2100,-1958,-1824,-1695,-1557,-1433,-1302,-1184,-1079,-1005,-932, -867,-815,-763,-711,-652,-589,-528,-471,-430,-376,-341,-302,-281,-264,-251,-259,-273,-283,-301,-309, -297,-291,-262,-249,-244,-231,-216,-208,-189,-196,-188,-193,-208,-223,-222,-225,-199,-180,-148,-105, -61,-36,1,29,58,76,99,135,146,175,211,247,294,362,428,521,607,694,775,867, 952,1041,1122,1224,1318,1421,1542,1668,1804,1952,2110,2293,2476,2648,2828,3013,3164,3340,3508,3674, 3850,4026,4209,4405,4594,4786,4994,5193,5404,5592,5790,5978,6155,6311,6451,6611,6771,6932,7080,7249, 7405,7560,7727,7881,8026,8178,8313,8455,8577,8679,8776,8864,8951,9043,9126,9220,9302,9385,9467,9527, 9583,9632,9670,9700,9731,9741,9738,9719,9686,9654,9616,9582,9548,9504,9453,9395,9322,9245,9151,9057, 8956,8855,8733,8615,8477,8343,8199,8069,7927,7812,7675,7550,7400,7247,7080,6916,6762,6596,6431,6268, 6088,5914,5726,5539,5358,5191,5006,4842,4660,4466,4272,4066,3869,3665,3463,3259,3060,2853,2642,2418, 2202,1990,1789,1587,1392,1182,975,744,522,301,95,-120,-327,-534,-743,-958,-1176,-1389,-1587,-1785, -1970,-2171,-2357,-2566,-2768,-2974,-3169,-3360,-3537,-3724,-3912,-4091,-4282,-4464,-4645,-4820,-4980,-5143,-5318,-5486, -5667,-5846,-6018,-6186,-6347,-6493,-6639,-6788,-6935,-7085,-7230,-7376,-7515,-7634,-7760,-7880,-8018,-8138,-8272,-8394, -8504,-8591,-8679,-8745,-8834,-8911,-8983,-9055,-9123,-9170,-9222,-9261,-9302,-9345,-9387,-9412,-9444,-9453,-9440,-9436, -9403,-9395,-9378,-9355,-9340,-9318,-9268,-9228,-9180,-9136,-9085,-9031,-8965,-8900,-8804,-8700,-8583,-8475,-8360,-8251, -8146,-8036,-7907,-7776,-7640,-7502,-7365,-7215,-7059,-6896,-6714,-6521,-6317,-6116,-5923,-5732,-5550,-5375,-5200,-5022, -4844,-4658,-4482,-4300,-4120,-3941,-3757,-3568,-3376,-3191,-3014,-2855,-2707,-2575,-2456,-2335,-2222,-2090,-1978,-1854, -1738,-1614,-1503,-1378,-1259,-1128,-1026,-937,-848,-778,-721,-662,-610,-542,-470,-401,-336,-258,-195,-124, -57,4,64,94,118,142,133,129,132,123,134,136,136,157,166,170,184,174,180,169, 149,130,96,51,29,-2,-1,4,8,32,66,95,129,147,182,211,244,276,308,339, 375,417,481,554,635,739,852,960,1066,1166,1259,1358,1453,1545,1642,1741,1837,1949,2057,2190, 2334,2488,2658,2818,2983,3125,3270,3421,3558,3705,3854,4018,4182,4355,4518,4699,4881,5088,5297,5505, 5710,5907,6085,6267,6436,6589,6752,6933,7099,7274,7443,7607,7759,7915,8067,8228,8368,8502,8617,8710, 8794,8868,8933,9012,9088,9151,9218,9266,9323,9351,9390,9421,9457,9473,9496,9483,9468,9435,9392,9368, 9343,9310,9280,9247,9202,9150,9081,9016,8954,8871,8803,8714,8614,8496,8374,8243,8122,7995,7872,7758, 7617,7478,7322,7160,7007,6841,6688,6522,6350,6176,5979,5780,5585,5405,5225,5053,4866,4687,4491,4296, 4095,3907,3713,3521,3331,3137,2936,2734,2525,2316,2124,1936,1746,1555,1366,1153,957,748,541,342, 149,-50,-248,-464,-682,-888,-1101,-1302,-1494,-1701,-1879,-2086,-2296,-2491,-2693,-2909,-3089,-3285,-3473,-3658, -3852,-4045,-4226,-4416,-4589,-4764,-4928,-5090,-5265,-5434,-5599,-5767,-5930,-6082,-6222,-6378,-6527,-6659,-6798,-6952, -7081,-7206,-7330,-7436,-7563,-7680,-7804,-7931,-8051,-8167,-8272,-8361,-8459,-8546,-8639,-8717,-8820,-8877,-8951,-9008, -9068,-9127,-9184,-9244,-9303,-9341,-9384,-9393,-9405,-9407,-9400,-9390,-9379,-9357,-9321,-9291,-9245,-9200,-9144,-9095, -9043,-8991,-8910,-8835,-8728,-8626,-8503,-8385,-8274,-8164,-8051,-7922,-7800,-7681,-7559,-7446,-7316,-7201,-7072,-6933, -6785,-6618,-6451,-6275,-6098,-5952,-5794,-5645,-5491,-5332,-5187,-5029,-4870,-4724,-4568,-4384,-4219,-4028,-3842,-3642, -3438,-3281,-3117,-2959,-2828,-2682,-2561,-2415,-2287,-2169,-2053,-1928,-1804,-1674,-1556,-1423,-1307,-1212,-1143,-1072, -1034,-986,-952,-923,-879,-839,-816,-774,-737,-690,-643,-596,-545,-505,-489,-482,-479,-487,-493,-496, -479,-447,-444,-405,-368,-335,-298,-274,-230,-201,-190,-176,-167,-173,-186,-196,-192,-177,-152,-121, -76,-44,-13,31,64,101,140,159,185,199,220,241,277,340,424,516,620,728,838,947, 1061,1176,1297,1416,1528,1659,1767,1895,2038,2188,2371,2557,2754,2966,3131,3314,3498,3672,3846,4024, 4195,4364,4523,4692,4846,5020,5204,5414,5587,5801,5986,6156,6323,6470,6618,6769,6915,7072,7219,7354, 7491,7631,7769,7934,8085,8245,8389,8529,8648,8742,8844,8931,9016,9088,9180,9251,9312,9365,9416,9471, 9524,9564,9608,9628,9632,9620,9586,9550,9519,9459,9436,9390,9350,9277,9209,9131,9059,8979,8907,8825, 8739,8633,8515,8385,8269,8130,8019,7899,7779,7648,7512,7378,7243,7087,6944,6809,6660,6515,6340,6169, 5976,5803,5610,5440,5259,5092,4900,4707,4511,4322,4116,3933,3730,3543,3330,3114,2893,2672,2446,2239, 2031,1827,1621,1406,1200,996,762,562,358,150,-49,-260,-473,-691,-909,-1107,-1302,-1498,-1682,-1890, -2076,-2265,-2464,-2665,-2846,-3038,-3227,-3421,-3609,-3791,-3990,-4185,-4363,-4534,-4703,-4870,-5040,-5203,-5367,-5557, -5730,-5899,-6072,-6222,-6390,-6554,-6703,-6854,-7003,-7140,-7271,-7380,-7501,-7605,-7715,-7842,-7957,-8067,-8161,-8259, -8337,-8420,-8496,-8565,-8629,-8684,-8736,-8767,-8790,-8820,-8828,-8867,-8907,-8926,-8965,-8967,-8985,-8983,-8963,-8938, -8925,-8898,-8856,-8812,-8763,-8702,-8637,-8574,-8535,-8475,-8424,-8345,-8271,-8178,-8066,-7947,-7818,-7688,-7538,-7399, -7241,-7083,-6924,-6755,-6600,-6460,-6295,-6164,-5991,-5816,-5622,-5423,-5215,-5018,-4813,-4624,-4434,-4264,-4091,-3919, -3748,-3609,-3468,-3324,-3188,-3051,-2912,-2738,-2569,-2407,-2254,-2118,-1986,-1877,-1772,-1674,-1571,-1491,-1397,-1310, -1234,-1147,-1070,-961,-838,-710,-621,-520,-447,-395,-362,-309,-283,-246,-234,-200,-178,-144,-117,-103, -62,-30,9,41,38,-3,45,96,5,-114,-316,-539,-783,-1012,-1204,-1334,-1413,-1438,-1420,-1365, -1267,-1135,-983,-810,-635,-463,-277,-108,80,298,559,863,1193,1543,1898,2227,2540,2833,3099,3345, 3565,3764,3949,4098,4233,4373,4509,4662,4828,4992,5145,5272,5381,5487,5586,5711,5858,6041,6251,6486, 6725,6985,7250,7535,7820,8102,8357,8585,8766,8916,9029,9116,9191,9242,9278,9287,9245,9161,9044,8887, 8706,8504,8290,8064,7812,7554,7294,7036,6797,6583,6390,6220,6053,5884,5719,5541,5377,5215,5070,4939, 4813,4685,4554,4419,4288,4160,4036,3914,3782,3633,3463,3269,3068,2847,2609,2370,2130,1879,1641,1407, 1175,937,703,480,249,6,-251,-510,-763,-1007,-1234,-1441,-1625,-1796,-1925,-2032,-2130,-2203,-2261,-2313, -2349,-2390,-2450,-2514,-2577,-2643,-2703,-2759,-2814,-2855,-2899,-2939,-2989,-3045,-3116,-3197,-3298,-3417,-3572,-3747, -3945,-4165,-4395,-4634,-4875,-5111,-5346,-5573,-5803,-6027,-6246,-6469,-6691,-6909,-7131,-7363,-7600,-7830,-8053,-8255, -8440,-8591,-8722,-8829,-8919,-8997,-9069,-9141,-9200,-9251,-9297,-9354,-9410,-9468,-9535,-9604,-9669,-9719,-9756,-9788, -9808,-9831,-9857,-9874,-9886,-9893,-9890,-9882,-9867,-9841,-9803,-9734,-9638,-9507,-9326,-9099,-8826,-8521,-8186,-7811, -7399,-6957,-6471,-5961,-5438,-4896,-4353,-3800,-3252,-2688,-2114,-1541,-974,-420,113,630,1118,1590,2051,2485, 2891,3276,3638,3968,4274,4570,4866,5141,5392,5636,5862,6064,6250,6413,6557,6664,6745,6794,6794,6756, 6690,6600,6499,6380,6245,6095,5915,5722,5509,5270,5010,4737,4459,4165,3865,3562,3264,2976,2708,2466, 2243,2019,1816,1635,1462,1285,1114,954,794,627,468,306,143,-19,-150,-272,-390,-502,-600,-702, -827,-959,-1116,-1290,-1484,-1686,-1905,-2134,-2375,-2609,-2840,-3069,-3279,-3476,-3674,-3863,-4045,-4230,-4434,-4636, -4835,-5036,-5234,-5420,-5585,-5734,-5867,-5962,-6025,-6064,-6084,-6071,-6048,-6019,-5991,-5962,-5935,-5904,-5857,-5799, -5732,-5644,-5529,-5396,-5234,-5054,-4849,-4630,-4386,-4129,-3859,-3589,-3312,-3013,-2694,-2351,-1970,-1557,-1104,-619, -99,442,998,1574,2163,2759,3354,3944,4523,5081,5632,6151,6660,7149,7612,8040,8415,8754,9050,9284, 9480,9644,9777,9879,9960,10015,10043,10037,10013,9981,9923,9847,9761,9667,9560,9440,9319,9201,9071,8965, 8865,8768,8669,8563,8454,8337,8202,8065,7913,7749,7584,7421,7243,7062,6885,6712,6545,6374,6206,6038, 5853,5666,5474,5271,5061,4854,4652,4461,4263,4079,3903,3729,3567,3416,3273,3130,2988,2848,2714,2560, 2418,2273,2125,1990,1860,1723,1587,1446,1309,1169,1025,881,734,577,419,254,82,-100,-281,-457, -632,-817,-998,-1184,-1368,-1551,-1735,-1910,-2083,-2252,-2404,-2557,-2714,-2863,-3003,-3138,-3264,-3385,-3508,-3628, -3747,-3866,-3985,-4104,-4220,-4336,-4440,-4547,-4653,-4765,-4888,-5010,-5133,-5261,-5409,-5557,-5720,-5893,-6073,-6270, -6464,-6652,-6847,-7032,-7210,-7397,-7584,-7770,-7949,-8121,-8292,-8461,-8624,-8788,-8940,-9085,-9212,-9317,-9394,-9445, -9469,-9480,-9476,-9460,-9431,-9384,-9325,-9270,-9200,-9124,-9043,-8951,-8854,-8729,-8580,-8413,-8217,-8014,-7810,-7613, -7401,-7192,-6973,-6751,-6515,-6270,-6012,-5730,-5436,-5105,-4746,-4349,-3924,-3479,-3032,-2572,-2123,-1666,-1197,-723, -236,255,744,1240,1719,2192,2653,3098,3505,3894,4241,4540,4799,5018,5208,5374,5513,5642,5747,5834, 5893,5927,5947,5936,5894,5834,5749,5648,5518,5377,5229,5081,4933,4797,4663,4520,4383,4242,4093,3936, 3761,3586,3400,3202,3010,2808,2608,2412,2232,2058,1885,1712,1547,1373,1200,1022,832,629,431,228, 22,-195,-401,-607,-806,-1002,-1191,-1377,-1565,-1750,-1930,-2118,-2314,-2516,-2714,-2910,-3112,-3309,-3506,-3701, -3882,-4054,-4219,-4376,-4528,-4662,-4797,-4935,-5062,-5191,-5314,-5430,-5537,-5638,-5730,-5814,-5869,-5915,-5944,-5958, -5952,-5925,-5882,-5820,-5747,-5667,-5571,-5462,-5334,-5188,-5021,-4833,-4613,-4377,-4127,-3847,-3536,-3189,-2804,-2388, -1953,-1493,-1020,-526,-16,515,1062,1630,2223,2819,3411,4006,4597,5178,5746,6297,6827,7322,7782,8207, 8593,8937,9257,9554,9825,10059,10261,10415,10534,10608,10657,10657,10625,10569,10495,10384,10254,10115,9966,9815, 9667,9530,9387,9234,9076,8913,8747,8563,8378,8202,8023,7844,7671,7500,7325,7167,7023,6880,6738,6600, 6461,6315,6160,6000,5825,5646,5467,5296,5113,4933,4748,4577,4398,4222,4047,3877,3695,3520,3339,3147, 2951,2750,2555,2367,2173,1990,1811,1641,1473,1315,1160,1011,857,722,576,427,277,126,-20,-165, -306,-443,-580,-713,-836,-967,-1096,-1222,-1347,-1483,-1611,-1748,-1889,-2041,-2193,-2340,-2488,-2641,-2788,-2933, -3073,-3223,-3364,-3505,-3645,-3794,-3931,-4078,-4224,-4378,-4529,-4680,-4822,-4971,-5111,-5240,-5375,-5500,-5627,-5751, -5883,-6011,-6126,-6255,-6389,-6524,-6673,-6811,-6951,-7090,-7227,-7355,-7482,-7602,-7726,-7844,-7966,-8089,-8209,-8321, -8438,-8556,-8678,-8797,-8903,-9006,-9102,-9175,-9238,-9282,-9317,-9339,-9360,-9365,-9358,-9332,-9293,-9237,-9167,-9084, -8981,-8851,-8696,-8516,-8300,-8051,-7769,-7474,-7164,-6824,-6474,-6098,-5690,-5264,-4818,-4362,-3884,-3388,-2880,-2365, -1834,-1284,-741,-203,317,813,1291,1743,2183,2601,2999,3376,3727,4057,4364,4641,4902,5146,5355,5553, 5710,5841,5936,6003,6047,6072,6084,6079,6057,6022,5984,5929,5867,5791,5710,5614,5505,5385,5251,5095, 4930,4759,4580,4400,4212,4028,3845,3664,3479,3304,3121,2935,2745,2556,2361,2160,1947,1735,1525,1306, 1094,883,684,492,308,130,-43,-223,-393,-567,-745,-921,-1104,-1294,-1477,-1663,-1844,-2029,-2207,-2373, -2527,-2685,-2833,-2988,-3137,-3295,-3454,-3617,-3787,-3966,-4137,-4316,-4492,-4662,-4823,-4975,-5112,-5254,-5377,-5502, -5624,-5742,-5854,-5965,-6066,-6164,-6249,-6323,-6386,-6416,-6436,-6423,-6383,-6315,-6224,-6111,-5985,-5831,-5657,-5451, -5220,-4963,-4683,-4370,-4027,-3644,-3225,-2757,-2254,-1721,-1177,-611,-41,530,1106,1690,2284,2890,3489,4083, 4667,5238,5792,6325,6841,7340,7794,8228,8620,8981,9303,9597,9873,10127,10358,10559,10726,10854,10957,11024, 11062,11071,11055,11020,10958,10876,10775,10656,10526,10392,10259,10107,9949,9777,9601,9410,9216,9020,8821,8621, 8424,8229,8026,7818,7616,7425,7236,7040,6849,6662,6469,6280,6093,5907,5722,5540,5368,5193,5012,4838, 4656,4470,4289,4110,3924,3734,3547,3361,3171,2989,2800,2621,2433,2265,2084,1904,1716,1530,1351,1174, 987,812,642,476,314,151,-3,-152,-301,-437,-581,-721,-871,-1017,-1163,-1300,-1444,-1582,-1713,-1844, -1966,-2090,-2214,-2329,-2450,-2577,-2697,-2830,-2969,-3113,-3260,-3406,-3556,-3715,-3863,-4007,-4150,-4296,-4439,-4583, -4729,-4878,-5026,-5182,-5345,-5515,-5682,-5848,-6014,-6183,-6342,-6495,-6641,-6781,-6925,-7065,-7201,-7340,-7483,-7620, -7770,-7913,-8062,-8209,-8348,-8487,-8619,-8737,-8843,-8940,-9037,-9129,-9216,-9300,-9387,-9467,-9541,-9609,-9675,-9724, -9765,-9797,-9817,-9812,-9788,-9744,-9689,-9613,-9527,-9428,-9320,-9192,-9042,-8873,-8678,-8454,-8204,-7929,-7637,-7323, -6974,-6600,-6202,-5784,-5343,-4881,-4405,-3916,-3406,-2882,-2330,-1767,-1192,-617,-52,491,1026,1535,2032,2500, 2949,3377,3781,4150,4496,4814,5110,5382,5625,5831,6005,6136,6233,6290,6315,6320,6298,6267,6225,6161, 6087,6005,5913,5802,5684,5565,5423,5277,5116,4948,4767,4577,4392,4204,4030,3850,3677,3505,3334,3159, 2978,2797,2615,2435,2249,2058,1865,1667,1465,1273,1081,899,712,534,362,177,-9,-199,-387,-572, -761,-950,-1136,-1329,-1515,-1703,-1887,-2064,-2244,-2414,-2582,-2752,-2923,-3100,-3274,-3447,-3619,-3787,-3946,-4111, -4265,-4420,-4568,-4709,-4839,-4968,-5076,-5184,-5295,-5402,-5510,-5604,-5686,-5762,-5825,-5873,-5911,-5938,-5946,-5937, -5909,-5868,-5802,-5714,-5614,-5508,-5388,-5242,-5076,-4882,-4657,-4400,-4118,-3806,-3474,-3110,-2722,-2298,-1842,-1347, -836,-307,230,773,1325,1891,2462,3042,3611,4176,4726,5268,5796,6310,6795,7267,7699,8101,8456,8772, 9052,9301,9509,9703,9864,9994,10092,10169,10224,10267,10283,10285,10269,10228,10173,10095,9994,9884,9765,9641, 9513,9372,9236,9085,8940,8796,8652,8505,8357,8199,8043,7875,7698,7516,7333,7148,6967,6787,6604,6416, 6236,6061,5891,5722,5555,5390,5223,5046,4865,4682,4499,4316,4137,3961,3779,3601,3425,3258,3094,2929, 2769,2611,2449,2287,2120,1945,1776,1607,1432,1270,1105,943,777,619,474,328,179,40,-105,-243, -392,-542,-692,-843,-995,-1136,-1278,-1419,-1553,-1692,-1827,-1951,-2080,-2210,-2333,-2461,-2592,-2732,-2880,-3025, -3174,-3321,-3467,-3614,-3760,-3908,-4055,-4198,-4349,-4503,-4652,-4801,-4955,-5113,-5276,-5436,-5600,-5768,-5924,-6083, -6235,-6391,-6537,-6679,-6826,-6976,-7115,-7253,-7390,-7526,-7663,-7798,-7923,-8052,-8169,-8282,-8393,-8494,-8589,-8682, -8771,-8857,-8943,-9012,-9079,-9133,-9183,-9223,-9242,-9255,-9254,-9243,-9222,-9179,-9127,-9054,-8963,-8861,-8743,-8600, -8433,-8240,-8022,-7770,-7485,-7174,-6841,-6482,-6113,-5723,-5320,-4897,-4454,-4003,-3542,-3066,-2586,-2101,-1610,-1113, -609,-98,400,875,1334,1767,2173,2546,2905,3238,3558,3856,4130,4383,4618,4826,5023,5202,5358,5488, 5605,5685,5741,5766,5769,5761,5739,5703,5656,5597,5518,5430,5321,5211,5089,4959,4818,4679,4521,4350, 4167,3977,3791,3602,3415,3228,3037,2844,2643,2443,2240,2037,1840,1648,1452,1256,1055,849,650,447, 253,62,-129,-316,-504,-690,-880,-1071,-1256,-1431,-1610,-1782,-1961,-2140,-2318,-2492,-2671,-2840,-3005,-3165, -3326,-3486,-3649,-3814,-3981,-4135,-4286,-4429,-4585,-4728,-4869,-5008,-5138,-5259,-5365,-5464,-5551,-5630,-5703,-5771, -5831,-5881,-5910,-5923,-5917,-5903,-5862,-5799,-5717,-5610,-5461,-5291,-5085,-4857,-4602,-4335,-4048,-3759,-3432,-3079, -2697,-2280,-1839,-1370,-875,-364,170,724,1285,1846,2402,2943,3469,3968,4463,4944,5413,5868,6301,6721, 7121,7494,7856,8192,8505,8784,9036,9246,9431,9584,9708,9812,9894,9960,9999,10020,10020,10008,9974,9938, 9883,9811,9727,9621,9508,9384,9247,9115,8972,8827,8677,8517,8351,8181,8005,7832,7665,7488,7313,7130, 6952,6777,6602,6426,6259,6089,5926,5752,5580,5403,5230,5054,4886,4718,4557,4387,4222,4062,3899,3737, 3581,3429,3277,3117,2954,2784,2618,2445,2284,2122,1965,1809,1652,1499,1345,1191,1039,888,742,593, 433,275,116,-40,-194,-345,-493,-631,-773,-911,-1047,-1184,-1318,-1454,-1590,-1720,-1865,-2006,-2153,-2295, -2442,-2581,-2719,-2854,-2989,-3117,-3247,-3384,-3528,-3664,-3809,-3953,-4097,-4252,-4405,-4560,-4717,-4874,-5027,-5178, -5325,-5470,-5611,-5754,-5906,-6056,-6208,-6364,-6516,-6675,-6831,-6984,-7135,-7293,-7438,-7586,-7720,-7854,-7976,-8093, -8213,-8331,-8442,-8555,-8657,-8752,-8845,-8923,-8995,-9060,-9110,-9157,-9188,-9203,-9208,-9188,-9160,-9116,-9057,-8985, -8892,-8787,-8661,-8518,-8348,-8164,-7956,-7729,-7481,-7219,-6924,-6609,-6258,-5884,-5488,-5058,-4615,-4151,-3680,-3185, -2686,-2180,-1672,-1153,-640,-126,373,868,1359,1843,2317,2777,3217,3627,4009,4353,4663,4939,5184,5407, 5596,5758,5897,6007,6089,6161,6206,6243,6259,6256,6233,6183,6115,6022,5911,5797,5675,5545,5414,5274, 5127,4978,4825,4668,4518,4361,4197,4028,3853,3669,3473,3276,3081,2890,2706,2519,2333,2148,1960,1769, 1579,1386,1196,1003,804,607,402,186,-23,-222,-422,-612,-800,-990,-1170,-1355,-1546,-1734,-1920,-2103, -2288,-2477,-2668,-2863,-3055,-3241,-3419,-3586,-3753,-3904,-4055,-4203,-4364,-4514,-4669,-4812,-4962,-5097,-5240,-5368, -5504,-5617,-5730,-5822,-5896,-5957,-5999,-6036,-6065,-6094,-6111,-6118,-6105,-6077,-6035,-5975,-5901,-5804,-5679,-5527, -5339,-5116,-4866,-4584,-4288,-3984,-3660,-3316,-2941,-2534,-2095,-1624,-1131,-617,-74,488,1078,1672,2279,2880, 3481,4053,4613,5156,5681,6183,6659,7118,7546,7943,8309,8651,8962,9239,9484,9699,9878,10015,10133,10218, 10276,10310,10319,10312,10281,10232,10162,10089,10003,9907,9798,9683,9558,9425,9285,9144,9001,8852,8695,8534, 8366,8192,8011,7829,7645,7465,7284,7102,6917,6731,6544,6363,6180,6001,5819,5637,5456,5268,5074,4882, 4694,4507,4330,4152,3980,3810,3642,3468,3304,3141,2977,2814,2652,2489,2318,2149,1985,1820,1666,1509, 1360,1208,1061,907,758,605,457,308,156,6,-147,-310,-464,-623,-774,-919,-1068,-1209,-1354,-1499, -1642,-1788,-1934,-2074,-2219,-2362,-2506,-2657,-2803,-2952,-3099,-3242,-3389,-3531,-3668,-3804,-3952,-4100,-4249,-4400, -4552,-4705,-4847,-5000,-5156,-5310,-5464,-5616,-5765,-5916,-6067,-6209,-6360,-6505,-6665,-6822,-6979,-7129,-7275,-7413, -7563,-7706,-7847,-7988,-8128,-8263,-8394,-8518,-8644,-8771,-8891,-9010,-9128,-9235,-9331,-9419,-9495,-9566,-9626,-9684, -9737,-9776,-9809,-9825,-9833,-9820,-9794,-9749,-9685,-9596,-9483,-9340,-9171,-8979,-8763,-8519,-8257,-7971,-7660,-7331, -6969,-6579,-6154,-5704,-5222,-4713,-4184,-3631,-3069,-2501,-1927,-1360,-798,-236,302,829,1349,1845,2330,2801, 3257,3696,4110,4496,4843,5160,5437,5687,5901,6093,6259,6395,6512,6602,6660,6712,6745,6767,6766,6752, 6710,6650,6556,6456,6332,6206,6072,5932,5786,5635,5474,5309,5137,4968,4795,4623,4445,4268,4073,3873, 3666,3461,3260,3063,2871,2684,2492,2297,2104,1915,1723,1532,1345,1161,968,768,570,367,170,-27, -210,-394,-568,-751,-933,-1107,-1294,-1463,-1647,-1825,-1991,-2165,-2342,-2525,-2704,-2881,-3050,-3212,-3366,-3516, -3665,-3815,-3963,-4108,-4255,-4392,-4520,-4649,-4778,-4902,-5027,-5142,-5251,-5341,-5410,-5466,-5512,-5543,-5569,-5579, -5580,-5561,-5523,-5469,-5397,-5306,-5200,-5074,-4918,-4735,-4514,-4256,-3971,-3658,-3324,-2974,-2603,-2214,-1806,-1373, -929,-467,5,493,999,1512,2044,2584,3129,3663,4193,4702,5190,5658,6112,6541,6951,7330,7699,8041, 8360,8656,8929,9180,9404,9600,9758,9893,9994,10069,10119,10144,10156,10141,10110,10069,10012,9945,9862,9773, 9673,9553,9420,9282,9132,8981,8821,8659,8493,8323,8150,7971,7791,7613,7430,7253,7080,6901,6708,6516, 6329,6147,5962,5779,5603,5423,5243,5062,4882,4704,4520,4343,4175,4004,3827,3652,3473,3302,3132,2967, 2806,2649,2490,2333,2172,2005,1844,1685,1528,1379,1223,1065,917,756,611,458,310,171,30,-117, -261,-415,-563,-720,-869,-1013,-1156,-1299,-1447,-1591,-1737,-1886,-2030,-2171,-2302,-2449,-2587,-2741,-2892,-3044, -3198,-3345,-3496,-3644,-3789,-3943,-4095,-4243,-4401,-4553,-4697,-4850,-4997,-5150,-5308,-5467,-5630,-5787,-5940,-6093, -6252,-6404,-6553,-6712,-6871,-7026,-7177,-7323,-7470,-7614,-7761,-7906,-8054,-8196,-8333,-8463,-8598,-8717,-8837,-8952, -9065,-9175,-9273,-9359,-9438,-9501,-9560,-9614,-9656,-9689,-9715,-9727,-9726,-9714,-9682,-9641,-9578,-9502,-9408,-9286, -9145,-8976,-8788,-8574,-8345,-8089,-7814,-7516,-7194,-6856,-6489,-6095,-5676,-5238,-4769,-4274,-3759,-3233,-2696,-2153, -1607,-1067,-531,-5,510,1003,1482,1939,2381,2803,3206,3596,3956,4290,4585,4853,5077,5273,5439,5577, 5689,5769,5823,5852,5865,5856,5841,5816,5781,5733,5660,5578,5468,5347,5214,5075,4928,4780,4619,4457, 4289,4117,3949,3783,3623,3468,3300,3130,2949,2763,2571,2369,2177,1989,1801,1607,1421,1234,1040,854, 673,500,322,149,-31,-218,-413,-606,-801,-990,-1174,-1358,-1536,-1713,-1886,-2061,-2235,-2401,-2555,-2713, -2874,-3033,-3203,-3377,-3552,-3719,-3866,-4020,-4155,-4288,-4412,-4538,-4655,-4760,-4856,-4950,-5031,-5109,-5185,-5263, -5336,-5393,-5431,-5451,-5451,-5428,-5392,-5334,-5266,-5183,-5077,-4954,-4816,-4650,-4476,-4280,-4070,-3844,-3578,-3281, -2956,-2596,-2203,-1792,-1366,-920,-461,9,497,991,1497,2004,2518,3027,3540,4055,4560,5069,5563,6034, 6491,6918,7318,7689,8032,8346,8630,8882,9114,9312,9489,9645,9778,9878,9965,10021,10058,10068,10065,10047, 10011,9959,9898,9821,9742,9646,9548,9446,9334,9215,9088,8954,8817,8667,8519,8375,8228,8068,7911,7751, 7583,7413,7239,7066,6901,6731,6553,6379,6197,6014,5833,5660,5493,5323,5151,4985,4810,4634,4457,4279, 4110,3946,3776,3607,3437,3267,3099,2935,2777,2624,2466,2314,2155,1999,1834,1669,1506,1349,1192,1040, 888,732,576,425,273,128,-19,-164,-311,-458,-613,-770,-927,-1076,-1225,-1370,-1507,-1653,-1795,-1942, -2086,-2231,-2372,-2514,-2651,-2799,-2947,-3102,-3261,-3416,-3564,-3712,-3855,-4000,-4150,-4301,-4455,-4609,-4762,-4917, -5065,-5216,-5372,-5531,-5692,-5853,-6004,-6156,-6302,-6441,-6586,-6726,-6879,-7026,-7169,-7316,-7454,-7585,-7724,-7852, -7986,-8114,-8235,-8354,-8458,-8561,-8656,-8751,-8838,-8932,-9008,-9087,-9154,-9203,-9243,-9266,-9278,-9282,-9268,-9237, -9189,-9122,-9034,-8934,-8817,-8683,-8521,-8339,-8129,-7886,-7611,-7310,-6976,-6622,-6241,-5829,-5401,-4959,-4492,-4017, -3533,-3039,-2533,-2012,-1480,-944,-396,137,667,1175,1669,2147,2605,3029,3426,3797,4136,4444,4733,5001, 5261,5493,5709,5895,6057,6186,6284,6359,6413,6440,6445,6432,6398,6337,6267,6188,6108,6018,5919,5818, 5691,5552,5401,5241,5070,4895,4714,4538,4346,4153,3953,3753,3561,3375,3185,3004,2813,2622,2419,2210, 2001,1797,1587,1389,1192,988,784,580,382,187,2,-184,-363,-548,-733,-926,-1120,-1317,-1504,-1693, -1868,-2048,-2225,-2407,-2586,-2759,-2927,-3096,-3249,-3410,-3568,-3733,-3901,-4070,-4232,-4390,-4540,-4682,-4814,-4948, -5076,-5197,-5308,-5414,-5503,-5582,-5654,-5719,-5786,-5839,-5887,-5920,-5921,-5906,-5863,-5800,-5719,-5611,-5478,-5327, -5148,-4942,-4715,-4463,-4194,-3903,-3593,-3258,-2891,-2489,-2065,-1613,-1143,-654,-141,378,906,1441,1974,2509, 3029,3542,4049,4540,5018,5492,5950,6393,6818,7224,7604,7956,8281,8570,8827,9051,9245,9412,9556,9678, 9772,9847,9904,9933,9950,9941,9920,9882,9830,9757,9677,9572,9459,9329,9197,9059,8916,8768,8619,8460, 8300,8126,7950,7781,7610,7431,7259,7076,6894,6707,6513,6331,6149,5966,5791,5614,5432,5250,5065,4884, 4708,4537,4372,4198,4028,3854,3675,3505,3332,3168,3001,2840,2679,2512,2347,2183,2018,1862,1704,1557, 1402,1251,1089,936,779,622,469,321,178,28,-121,-275,-423,-570,-717,-861,-1000,-1141,-1282,-1426, -1574,-1720,-1865,-2004,-2140,-2277,-2414,-2558,-2702,-2840,-2986,-3123,-3258,-3400,-3538,-3681,-3825,-3975,-4125,-4273, -4416,-4561,-4707,-4852,-4998,-5150,-5297,-5449,-5599,-5744,-5892,-6044,-6202,-6354,-6510,-6670,-6822,-6973,-7119,-7266, -7418,-7567,-7715,-7869,-8013,-8154,-8294,-8428,-8562,-8691,-8817,-8941,-9062,-9164,-9269,-9355,-9444,-9524,-9599,-9672, -9734,-9777,-9816,-9832,-9841,-9833,-9808,-9773,-9721,-9646,-9554,-9442,-9316,-9168,-9004,-8820,-8605,-8368,-8100,-7800, -7468,-7110,-6720,-6304,-5864,-5396,-4905,-4400,-3881,-3351,-2813,-2258,-1699,-1130,-552,30,610,1175,1723,2258, 2770,3249,3710,4128,4514,4858,5172,5452,5707,5936,6146,6335,6494,6622,6720,6795,6839,6861,6863,6842, 6796,6729,6643,6540,6427,6307,6189,6067,5940,5806,5657,5501,5349,5176,5005,4834,4656,4479,4286,4095, 3901,3708,3514,3335,3156,2976,2789,2606,2422,2221,2030,1836,1645,1455,1258,1056,862,663,465,281, 96,-79,-258,-437,-622,-808,-994,-1179,-1356,-1537,-1717,-1898,-2073,-2248,-2428,-2597,-2757,-2916,-3069,-3220, -3369,-3520,-3679,-3831,-3976,-4121,-4255,-4386,-4507,-4623,-4736,-4837,-4926,-5003,-5068,-5127,-5172,-5214,-5250,-5280, -5297,-5303,-5288,-5250,-5195,-5118,-5015,-4896,-4751,-4585,-4391,-4175,-3938,-3674,-3388,-3096,-2773,-2426,-2052,-1648, -1215,-749,-260,243,759,1289,1824,2366,2899,3433,3960,4475,4972,5465,5935,6396,6834,7263,7665,8045, 8391,8710,8991,9247,9461,9640,9800,9931,10031,10115,10176,10213,10229,10228,10209,10181,10129,10070,10001,9914, 9815,9699,9577,9446,9312,9179,9040,8896,8744,8577,8414,8246,8073,7898,7729,7556,7380,7200,7015,6828, 6648,6467,6287,6107,5929,5741,5556,5371,5189,5002,4823,4652,4482,4310,4138,3971,3798,3624,3458,3293, 3128,2964,2796,2634,2464,2300,2134,1975,1822,1676,1521,1369,1216,1056,897,740,590,437,279,125, -34,-187,-346,-496,-645,-787,-935,-1081,-1231,-1374,-1536,-1681,-1835,-1985,-2132,-2281,-2430,-2582,-2736,-2887, -3028,-3177,-3319,-3471,-3620,-3774,-3932,-4096,-4253,-4414,-4575,-4734,-4888,-5044,-5202,-5366,-5528,-5685,-5841,-5997, -6156,-6313,-6477,-6646,-6808,-6975,-7132,-7293,-7448,-7594,-7746,-7900,-8053,-8198,-8344,-8487,-8626,-8762,-8895,-9031, -9165,-9289,-9406,-9516,-9612,-9706,-9787,-9867,-9940,-10005,-10057,-10095,-10124,-10137,-10131,-10114,-10078,-10027,-9952,-9849, -9730,-9587,-9422,-9234,-9034,-8805,-8552,-8268,-7954,-7610,-7240,-6843,-6423,-5972,-5497,-5007,-4498,-3980,-3454,-2927, -2405,-1881,-1350,-827,-299,222,736,1235,1714,2178,2616,3029,3414,3766,4088,4382,4631,4861,5064,5247, 5414,5558,5684,5780,5857,5909,5941,5948,5943,5905,5849,5777,5684,5574,5460,5336,5211,5080,4948,4807, 4658,4500,4340,4168,3996,3816,3630,3444,3253,3044,2855,2650,2470,2284,2104,1919,1739,1550,1361,1176, 987,795,603,412,221,30,-166,-351,-535,-714,-891,-1056,-1225,-1398,-1572,-1745,-1922,-2093,-2265,-2440, -2606,-2771,-2943,-3105,-3268,-3422,-3570,-3710,-3850,-3983,-4123,-4258,-4395,-4532,-4661,-4785,-4896,-4999,-5097,-5187, -5267,-5330,-5378,-5409,-5427,-5434,-5423,-5407,-5377,-5339,-5281,-5203,-5099,-4970,-4816,-4635,-4429,-4198,-3935,-3655, -3342,-3006,-2651,-2278,-1888,-1486,-1068,-635,-189,284,774,1270,1785,2301,2821,3330,3836,4333,4823,5293, 5746,6181,6597,6989,7360,7711,8045,8354,8649,8923,9165,9382,9564,9724,9852,9960,10034,10093,10134,10153, 10150,10130,10098,10049,9988,9924,9849,9763,9659,9552,9430,9299,9159,9018,8870,8722,8567,8410,8244,8083, 7909,7744,7575,7413,7243,7077,6910,6737,6564,6387,6220,6048,5879,5708,5540,5363,5195,5022,4850,4686, 4522,4356,4203,4040,3877,3709,3550,3381,3230,3067,2904,2751,2591,2433,2275,2118,1965,1814,1664,1513, 1368,1215,1061,912,757,607,453,306,161,9,-140,-290,-445,-584,-730,-869,-1012,-1155,-1305,-1447, -1595,-1741,-1892,-2035,-2185,-2327,-2482,-2629,-2780,-2930,-3081,-3224,-3369,-3518,-3673,-3826,-3981,-4137,-4297,-4455, -4610,-4764,-4919,-5078,-5235,-5395,-5550,-5709,-5863,-6015,-6171,-6333,-6490,-6648,-6808,-6959,-7107,-7251,-7397,-7539, -7678,-7820,-7952,-8092,-8216,-8335,-8449,-8566,-8667,-8773,-8863,-8953,-9027,-9084,-9134,-9177,-9208,-9238,-9257,-9261, -9249,-9223,-9177,-9119,-9041,-8944,-8823,-8685,-8519,-8330,-8109,-7877,-7619,-7346,-7053,-6732,-6390,-6015,-5611,-5187, -4735,-4261,-3771,-3257,-2737,-2195,-1650,-1108,-578,-48,459,963,1452,1927,2391,2840,3262,3662,4035,4384, 4702,4996,5259,5486,5676,5839,5967,6064,6144,6199,6245,6265,6265,6253,6223,6178,6109,6036,5941,5841, 5716,5587,5438,5280,5125,4960,4795,4637,4473,4296,4126,3942,3764,3575,3391,3203,3010,2808,2609,2404, 2202,1996,1799,1600,1411,1213,1020,822,630,430,232,34,-158,-361,-559,-765,-964,-1162,-1356,-1546, -1731,-1910,-2090,-2269,-2449,-2630,-2810,-2996,-3166,-3342,-3521,-3693,-3865,-4034,-4197,-4354,-4498,-4635,-4771,-4898, -5025,-5147,-5269,-5383,-5492,-5582,-5678,-5752,-5823,-5880,-5922,-5954,-5960,-5945,-5919,-5873,-5806,-5729,-5641,-5535, -5408,-5260,-5086,-4886,-4658,-4394,-4106,-3798,-3451,-3077,-2678,-2256,-1808,-1356,-879,-397,105,620,1140,1676, 2222,2773,3326,3867,4400,4917,5420,5899,6361,6788,7200,7571,7918,8229,8515,8767,8999,9207,9390,9549, 9674,9776,9853,9898,9923,9927,9915,9882,9841,9783,9715,9628,9533,9435,9330,9217,9101,8973,8841,8697, 8544,8397,8234,8078,7913,7752,7587,7416,7240,7068,6888,6714,6538,6359,6183,6006,5823,5645,5465,5286, 5108,4934,4761,4587,4410,4238,4063,3887,3716,3544,3378,3214,3050,2885,2724,2566,2403,2243,2087,1935, 1778,1619,1463,1302,1146,992,837,684,541,393,245,99,-51,-196,-341,-487,-630,-778,-924,-1073, -1220,-1373,-1516,-1656,-1788,-1931,-2067,-2203,-2340,-2479,-2622,-2758,-2900,-3041,-3185,-3328,-3473,-3625,-3772,-3917, -4055,-4200,-4341,-4487,-4631,-4780,-4931,-5082,-5235,-5382,-5535,-5685,-5840,-5991,-6146,-6297,-6443,-6592,-6735,-6878, -7021,-7169,-7318,-7459,-7605,-7742,-7882,-8013,-8141,-8270,-8397,-8522,-8641,-8751,-8857,-8960,-9054,-9147,-9236,-9313, -9386,-9443,-9489,-9525,-9550,-9563,-9566,-9556,-9532,-9490,-9425,-9347,-9246,-9132,-8989,-8827,-8640,-8416,-8168,-7892, -7582,-7263,-6910,-6545,-6157,-5738,-5299,-4843,-4356,-3856,-3342,-2810,-2271,-1720,-1153,-595,-34,515,1040,1547, 2030,2498,2948,3370,3776,4156,4514,4848,5159,5442,5700,5926,6126,6300,6434,6540,6614,6662,6691,6702, 6694,6677,6645,6588,6522,6439,6348,6242,6129,5987,5848,5689,5526,5352,5167,4993,4809,4626,4451,4265, 4076,3887,3703,3511,3318,3124,2926,2724,2520,2315,2108,1909,1710,1512,1319,1130,942,749,559,372, 184,-7,-195,-390,-582,-775,-969,-1153,-1338,-1519,-1690,-1864,-2036,-2205,-2374,-2542,-2713,-2882,-3051,-3222, -3391,-3555,-3724,-3881,-4034,-4181,-4324,-4450,-4578,-4699,-4818,-4931,-5038,-5140,-5235,-5324,-5400,-5464,-5524,-5565, -5584,-5588,-5570,-5531,-5469,-5389,-5287,-5171,-5037,-4884,-4713,-4514,-4293,-4039,-3766,-3458,-3121,-2756,-2367,-1948, -1509,-1049,-575,-88,413,928,1440,1956,2487,3008,3535,4058,4578,5093,5587,6063,6525,6969,7388,7776, 8136,8473,8773,9042,9284,9495,9681,9846,9985,10106,10198,10260,10299,10318,10311,10289,10250,10193,10123,10039, 9939,9825,9704,9579,9443,9304,9162,9009,8843,8683,8512,8340,8163,7990,7815,7634,7451,7264,7072,6887, 6697,6514,6324,6141,5950,5769,5580,5400,5215,5032,4852,4678,4497,4319,4136,3957,3775,3596,3420,3250, 3077,2908,2741,2576,2404,2243,2078,1922,1759,1600,1440,1279,1114,951,789,637,480,329,178,27, -126,0,-72,-282,-535,-838,-1126,-1380,-1555,-1646,-1671,-1647,-1561,-1433,-1262,-1070,-847,-614,-384,-167, 57,273,505,765,1074,1422,1794,2166,2530,2868,3185,3485,3761,4018,4253,4473,4667,4822,4956,5089, 5208,5350,5502,5661,5805,5936,6075,6229,6391,6582,6806,7040,7259,7462,7634,7770,7871,7955,8010,8023, 7984,7887,7739,7548,7317,7062,6789,6504,6210,5903,5576,5240,4904,4585,4285,3990,3722,3480,3255,3047, 2855,2681,2533,2403,2273,2149,2030,1915,1795,1674,1569,1476,1385,1287,1189,1092,994,895,812,737, 667,597,521,434,343,248,153,61,-25,-111,-184,-245,-298,-357,-410,-452,-489,-522,-562,-604, -647,-704,-769,-826,-872,-919,-963,-1005,-1040,-1082,-1125,-1167,-1212,-1258,-1307,-1369,-1442,-1544,-1660,-1781, -1894,-1999,-2098,-2196,-2290,-2386,-2499,-2610,-2725,-2833,-2937,-3038,-3133,-3247,-3383,-3527,-3678,-3826,-3970,-4105, -4228,-4345,-4475,-4609,-4731,-4853,-4980,-5105,-5225,-5355,-5513,-5688,-5867,-6048,-6227,-6394,-6547,-6704,-6868,-7045, -7230,-7428,-7614,-7783,-7945,-8110,-8282,-8464,-8653,-8855,-9042,-9196,-9308,-9379,-9415,-9427,-9417,-9366,-9258,-9087, -8843,-8512,-8105,-7639,-7110,-6504,-5826,-5058,-4189,-3227,-2201,-1139,-54,1035,2105,3130,4098,4987,5774,6466, 7063,7575,8001,8343,8610,8800,8907,8945,8928,8882,8812,8708,8575,8413,8211,7985,7748,7514,7284,7059, 6846,6614,6355,6082,5810,5539,5277,5034,4803,4573,4335,4096,3849,3605,3383,3184,3002,2828,2659,2484, 2308,2134,1973,1826,1689,1568,1447,1319,1176,1032,898,775,667,576,486,385,272,159,34,-91, -208,-311,-418,-539,-663,-799,-946,-1087,-1220,-1332,-1441,-1544,-1652,-1769,-1901,-2027,-2153,-2270,-2382,-2489, -2603,-2730,-2860,-2987,-3109,-3220,-3312,-3386,-3468,-3562,-3665,-3782,-3908,-4030,-4139,-4241,-4353,-4467,-4596,-4741, -4894,-5037,-5164,-5287,-5397,-5504,-5626,-5773,-5934,-6100,-6265,-6426,-6572,-6716,-6867,-7023,-7170,-7304,-7411,-7480, -7495,-7477,-7430,-7358,-7254,-7128,-6961,-6728,-6423,-6044,-5581,-5035,-4399,-3671,-2846,-1941,-966,51,1087,2113, 3121,4095,5014,5873,6661,7355,7954,8469,8903,9251,9520,9707,9807,9814,9739,9615,9459,9282,9102,8925, 8729,8508,8271,8022,7758,7503,7257,7021,6780,6534,6276,6013,5753,5511,5302,5114,4939,4774,4602,4418, 4229,4045,3865,3689,3523,3363,3197,3028,2859,2704,2560,2439,2333,2235,2135,2024,1911,1787,1664,1542, 1438,1341,1244,1147,1050,951,861,787,717,662,613,560,501,433,362,289,220,164,111,54, -6,-69,-130,-196,-252,-302,-348,-396,-444,-503,-567,-635,-704,-765,-818,-877,-930,-992,-1062,-1134, -1212,-1283,-1352,-1420,-1485,-1555,-1631,-1717,-1806,-1891,-1970,-2047,-2119,-2195,-2282,-2378,-2483,-2589,-2693,-2790, -2886,-2985,-3092,-3210,-3343,-3480,-3616,-3746,-3878,-4009,-4144,-4296,-4465,-4646,-4826,-5005,-5177,-5342,-5505,-5680, -5866,-6056,-6252,-6435,-6608,-6768,-6918,-7078,-7241,-7414,-7587,-7749,-7879,-7985,-8067,-8129,-8179,-8239,-8292,-8325, -8328,-8305,-8240,-8146,-8028,-7892,-7716,-7482,-7183,-6796,-6315,-5753,-5119,-4430,-3686,-2892,-2048,-1154,-218,742, 1704,2653,3577,4462,5300,6063,6739,7317,7787,8155,8429,8620,8736,8779,8755,8671,8534,8369,8182,7987, 7783,7567,7326,7058,6770,6481,6193,5922,5671,5438,5207,4976,4745,4516,4297,4093,3913,3742,3571,3392, 3205,3011,2815,2632,2470,2326,2185,2052,1911,1758,1602,1454,1311,1187,1064,945,820,682,540,406, 275,163,69,-18,-108,-206,-306,-416,-526,-616,-700,-781,-862,-951,-1046,-1152,-1257,-1352,-1432,-1509, -1583,-1664,-1764,-1874,-1994,-2111,-2226,-2337,-2442,-2552,-2681,-2824,-2979,-3138,-3291,-3435,-3569,-3706,-3852,-4009, -4180,-4360,-4537,-4703,-4869,-5030,-5194,-5371,-5567,-5776,-5974,-6163,-6343,-6499,-6651,-6804,-6966,-7132,-7291,-7440, -7574,-7679,-7766,-7848,-7917,-7973,-8009,-7993,-7917,-7766,-7542,-7242,-6865,-6413,-5879,-5261,-4556,-3769,-2900,-1957, -952,104,1205,2326,3436,4509,5521,6447,7284,8026,8672,9215,9651,9979,10195,10312,10351,10340,10287,10205, 10096,9951,9760,9532,9282,9007,8738,8479,8225,7968,7706,7433,7157,6879,6614,6370,6145,5919,5699,5469, 5234,4989,4756,4539,4340,4152,3972,3793,3610,3429,3251,3089,2940,2806,2677,2549,2414,2279,2139,2008, 1892,1785,1688,1593,1496,1397,1293,1195,1104,1025,948,876,805,724,638,551,470,399,330,262, 202,131,58,-21,-96,-168,-234,-295,-353,-413,-475,-547,-616,-682,-739,-795,-848,-904,-959,-1028, -1097,-1163,-1223,-1284,-1338,-1391,-1452,-1522,-1596,-1672,-1747,-1819,-1892,-1960,-2035,-2120,-2213,-2306,-2407,-2502, -2594,-2682,-2774,-2873,-2981,-3101,-3222,-3343,-3459,-3571,-3688,-3804,-3930,-4068,-4209,-4346,-4482,-4609,-4736,-4864, -5007,-5163,-5324,-5489,-5654,-5810,-5958,-6104,-6257,-6420,-6590,-6766,-6937,-7096,-7242,-7388,-7535,-7689,-7855,-8024, -8182,-8321,-8424,-8500,-8543,-8569,-8580,-8572,-8531,-8444,-8298,-8095,-7825,-7504,-7126,-6685,-6164,-5556,-4849,-4043, -3159,-2214,-1234,-237,763,1742,2698,3602,4443,5210,5904,6523,7073,7543,7933,8236,8456,8591,8659,8673, 8642,8570,8458,8313,8131,7921,7694,7469,7250,7039,6826,6611,6383,6138,5890,5650,5421,5208,5002,4803, 4596,4387,4173,3961,3764,3588,3424,3272,3116,2958,2797,2631,2478,2338,2209,2090,1972,1847,1714,1573, 1439,1312,1197,1096,1001,899,790,678,567,454,352,260,169,74,-28,-140,-259,-381,-489,-587, -675,-765,-854,-953,-1059,-1168,-1272,-1373,-1468,-1563,-1662,-1773,-1898,-2022,-2149,-2268,-2376,-2478,-2578,-2689, -2807,-2940,-3078,-3223,-3356,-3489,-3622,-3768,-3922,-4088,-4264,-4439,-4602,-4756,-4908,-5059,-5220,-5393,-5586,-5786, -5982,-6170,-6350,-6520,-6697,-6875,-7055,-7229,-7389,-7524,-7634,-7722,-7797,-7865,-7927,-7973,-7994,-7963,-7875,-7726, -7502,-7215,-6854,-6414,-5886,-5268,-4560,-3765,-2889,-1944,-929,146,1263,2401,3536,4634,5668,6627,7505,8291, 8971,9544,10003,10334,10547,10663,10701,10682,10624,10530,10394,10208,9982,9720,9438,9146,8859,8575,8292,8002, 7704,7397,7085,6792,6519,6262,6021,5782,5544,5299,5054,4820,4601,4396,4211,4037,3862,3683,3504,3331, 3168,3016,2875,2743,2612,2481,2346,2213,2085,1971,1864,1770,1678,1586,1489,1386,1287,1190,1101,1015, 936,856,775,692,608,528,456,393,332,275,210,140,69,-4,-74,-140,-201,-260,-318,-383, -446,-510,-573,-630,-680,-732,-781,-838,-899,-967,-1036,-1100,-1159,-1217,-1273,-1327,-1389,-1453,-1516,-1584, -1647,-1711,-1773,-1840,-1917,-1999,-2089,-2185,-2275,-2360,-2444,-2527,-2612,-2703,-2802,-2907,-3014,-3119,-3223,-3333, -3449,-3575,-3712,-3857,-4005,-4149,-4288,-4419,-4547,-4686,-4837,-4995,-5163,-5331,-5501,-5668,-5837,-6013,-6197,-6392, -6598,-6796,-6981,-7150,-7312,-7466,-7622,-7790,-7962,-8134,-8295,-8436,-8558,-8659,-8746,-8822,-8891,-8937,-8948,-8910, -8820,-8672,-8483,-8245,-7960,-7614,-7191,-6673,-6049,-5322,-4495,-3590,-2618,-1596,-541,544,1625,2677,3682,4625, 5490,6272,6974,7585,8098,8508,8815,9027,9154,9203,9191,9117,8985,8801,8576,8323,8061,7799,7546,7300, 7054,6800,6533,6262,5995,5738,5497,5269,5044,4819,4587,4355,4129,3911,3714,3536,3369,3203,3032,2857, 2680,2511,2350,2204,2065,1934,1797,1658,1513,1371,1235,1114,1007,906,803,696,582,468,352,250, 154,67,-21,-113,-212,-321,-430,-536,-628,-717,-804,-893,-986,-1091,-1201,-1308,-1411,-1507,-1598,-1693, -1799,-1912,-2036,-2165,-2287,-2404,-2515,-2622,-2742,-2863,-2997,-3136,-3278,-3412,-3538,-3666,-3791,-3926,-4074,-4237, -4392,-4550,-4690,-4832,-4968,-5112,-5267,-5435,-5607,-5779,-5945,-6099,-6248,-6394,-6550,-6712,-6880,-7033,-7177,-7295, -7400,-7484,-7562,-7627,-7679,-7703,-7687,-7613,-7480,-7284,-7020,-6691,-6293,-5810,-5243,-4583,-3839,-3023,-2138,-1203, -225,793,1830,2861,3869,4825,5721,6547,7298,7965,8551,9036,9417,9694,9875,9977,10019,10014,9977,9902, 9779,9619,9426,9209,8983,8757,8540,8317,8089,7847,7589,7318,7052,6792,6549,6312,6081,5841,5601,5358, 5125,4901,4697,4511,4336,4166,3993,3816,3643,3469,3314,3167,3029,2895,2760,2623,2492,2359,2247,2140, 2051,1964,1875,1785,1687,1584,1487,1393,1304,1220,1135,1049,962,874,787,709,638,573,509,441, 368,289,204,123,48,-25,-93,-162,-226,-297,-369,-435,-498,-554,-608,-661,-718,-784,-854,-928, -996,-1066,-1129,-1191,-1255,-1317,-1387,-1460,-1533,-1604,-1675,-1744,-1820,-1902,-1991,-2091,-2195,-2300,-2400,-2496, -2593,-2687,-2789,-2898,-3012,-3130,-3244,-3354,-3469,-3585,-3711,-3852,-3998,-4146,-4296,-4438,-4572,-4704,-4840,-4986, -5140,-5301,-5466,-5627,-5785,-5939,-6100,-6270,-6449,-6639,-6826,-7005,-7167,-7320,-7458,-7602,-7749,-7903,-8052,-8188, -8304,-8393,-8449,-8487,-8509,-8509,-8485,-8422,-8305,-8130,-7890,-7592,-7248,-6843,-6382,-5851,-5234,-4529,-3739,-2875, -1959,-1004,-34,937,1894,2816,3690,4500,5237,5904,6500,7024,7475,7847,8143,8359,8503,8582,8609,8591, 8531,8425,8275,8089,7880,7655,7430,7209,6993,6776,6549,6315,6072,5827,5589,5366,5157,4957,4752,4546, 4338,4127,3926,3738,3565,3405,3245,3088,2921,2751,2586,2433,2291,2160,2037,1911,1782,1644,1505,1370, 1240,1122,1008,896,777,649,518,389,262,147,45,-60,-161,-275,-397,-528,-650,-768,-880,-984, -1092,-1202,-1323,-1446,-1571,-1687,-1799,-1901,-2004,-2110,-2233,-2367,-2505,-2644,-2779,-2907,-3033,-3162,-3300,-3449, -3608,-3764,-3920,-4067,-4208,-4351,-4506,-4671,-4849,-5035,-5212,-5385,-5549,-5703,-5859,-6027,-6201,-6381,-6553,-6716, -6862,-6992,-7110,-7229,-7344,-7451,-7542,-7609,-7638,-7631,-7591,-7522,-7428,-7296,-7118,-6878,-6563,-6169,-5687,-5125, -4481,-3760,-2959,-2086,-1147,-157,862,1882,2885,3868,4807,5703,6533,7288,7945,8514,8988,9379,9690,9925, 10080,10152,10149,10076,9951,9796,9621,9435,9236,9016,8777,8517,8244,7967,7705,7453,7209,6966,6722,6473, 6224,5976,5742,5526,5320,5124,4924,4721,4514,4309,4115,3933,3769,3615,3463,3318,3166,3016,2876,2738, 2614,2493,2377,2260,2138,2014,1893,1776,1675,1581,1497,1415,1335,1245,1160,1077,997,922,851,779, 710,631,553,475,400,334,275,220,164,109,43,-23,-91,-156,-219,-280,-343,-410,-478,-550, -623,-687,-748,-804,-858,-912,-977,-1044,-1115,-1189,-1263,-1335,-1403,-1476,-1551,-1631,-1715,-1798,-1878,-1952, -2023,-2096,-2174,-2262,-2358,-2462,-2566,-2676,-2777,-2880,-2986,-3100,-3218,-3341,-3469,-3596,-3717,-3836,-3959,-4091, -4235,-4394,-4560,-4728,-4894,-5055,-5211,-5373,-5538,-5712,-5892,-6073,-6246,-6410,-6568,-6725,-6888,-7058,-7234,-7412, -7581,-7732,-7864,-7976,-8082,-8181,-8279,-8367,-8436,-8476,-8480,-8442,-8374,-8269,-8130,-7954,-7720,-7425,-7045,-6589, -6054,-5447,-4774,-4039,-3236,-2365,-1435,-457,552,1567,2565,3530,4439,5278,6039,6705,7271,7743,8120,8415, 8631,8772,8850,8861,8815,8719,8591,8440,8269,8089,7886,7667,7423,7169,6912,6658,6421,6190,5974,5755, 5533,5306,5082,4867,4664,4478,4297,4124,3945,3758,3572,3388,3215,3053,2904,2761,2614,2464,2312,2157, 2011,1875,1752,1635,1522,1402,1279,1151,1028,908,801,698,602,499,393,283,170,57,-41,-136, -223,-312,-410,-515,-625,-737,-843,-945,-1037,-1135,-1236,-1347,-1465,-1588,-1708,-1826,-1936,-2043,-2156,-2280, -2412,-2553,-2694,-2836,-2968,-3095,-3227,-3364,-3509,-3666,-3827,-3987,-4139,-4285,-4433,-4588,-4748,-4924,-5105,-5290, -5463,-5623,-5782,-5940,-6105,-6284,-6468,-6656,-6840,-7006,-7163,-7311,-7450,-7588,-7715,-7830,-7916,-7962,-7961,-7926, -7849,-7736,-7581,-7378,-7100,-6743,-6292,-5745,-5103,-4369,-3548,-2640,-1648,-583,524,1647,2750,3819,4832,5785, 6665,7464,8166,8764,9253,9643,9944,10160,10309,10389,10398,10338,10217,10055,9859,9655,9442,9221,8989,8740, 8468,8185,7896,7618,7349,7084,6832,6574,6314,6050,5795,5551,5320,5103,4898,4696,4486,4277,4069,3861, 3672,3497,3337,3186,3038,2888,2745,2604,2469,2348,2235,2129,2018,1905,1791,1673,1565,1461,1371,1286, 1207,1125,1047,962,881,802,726,660,591,516,439,360,278,201,130,68,13,-44,-101,-161, -228,-291,-358,-416,-476,-537,-599,-665,-736,-803,-871,-930,-982,-1034,-1085,-1138,-1198,-1265,-1333,-1403, -1470,-1536,-1607,-1677,-1758,-1841,-1924,-2008,-2084,-2157,-2233,-2309,-2392,-2485,-2587,-2693,-2797,-2903,-3009,-3113, -3226,-3345,-3469,-3597,-3723,-3843,-3959,-4079,-4203,-4339,-4489,-4648,-4811,-4971,-5129,-5286,-5445,-5610,-5783,-5965, -6149,-6332,-6505,-6677,-6844,-7019,-7204,-7399,-7599,-7792,-7969,-8133,-8276,-8410,-8539,-8664,-8783,-8885,-8960,-9005, -9005,-8972,-8903,-8801,-8656,-8456,-8188,-7837,-7400,-6875,-6273,-5595,-4850,-4037,-3156,-2210,-1212,-169,887,1947, 2975,3963,4891,5741,6501,7162,7717,8171,8533,8812,9008,9132,9181,9164,9089,8976,8832,8665,8482,8280, 8056,7809,7543,7270,6997,6734,6486,6248,6010,5772,5532,5290,5054,4833,4624,4431,4243,4054,3864,3670, 3482,3300,3138,2988,2847,2704,2559,2409,2259,2110,1970,1844,1728,1609,1493,1369,1245,1118,996,888, 785,684,582,477,361,242,127,19,-81,-177,-271,-364,-465,-571,-680,-784,-879,-967,-1054,-1144, -1244,-1349,-1461,-1569,-1672,-1771,-1865,-1959,-2063,-2177,-2298,-2422,-2543,-2661,-2780,-2894,-3014,-3148,-3290,-3441, -3588,-3733,-3872,-4009,-4148,-4297,-4460,-4628,-4800,-4966,-5123,-5270,-5416,-5566,-5723,-5888,-6052,-6213,-6362,-6495, -6616,-6735,-6849,-6959,-7061,-7138,-7190,-7202,-7174,-7113,-7021,-6899,-6738,-6524,-6249,-5902,-5476,-4972,-4387,-3723, -2974,-2145,-1237,-266,750,1781,2807,3809,4773,5689,6544,7317,8005,8597,9095,9509,9836,10093,10275,10384, 10417,10383,10287,10145,9977,9795,9596,9384,9153,8904,8638,8368,8098,7840,7591,7347,7104,6859,6607,6355, 6111,5879,5666,5458,5259,5060,4854,4648,4443,4248,4065,3900,3736,3581,3424,3266,3109,2964,2825,2701, 2582,2465,2346,2222,2096,1972,1856,1756,1656,1565,1475,1387,1294,1201,1117,1037,963,891,820,743, 659,572,487,409,335,267,204,139,70,-1,-74,-146,-212,-281,-344,-414,-484,-566,-647,-725, -800,-870,-934,-996,-1062,-1130,-1204,-1277,-1354,-1425,-1497,-1569,-1643,-1724,-1816,-1906,-1994,-2083,-2168,-2243, -2327,-2412,-2506,-2605,-2709,-2815,-2921,-3024,-3132,-3247,-3372,-3502,-3637,-3774,-3907,-4040,-4166,-4298,-4440,-4594, -4753,-4919,-5088,-5253,-5414,-5576,-5743,-5921,-6104,-6292,-6478,-6656,-6826,-6988,-7151,-7323,-7502,-7680,-7859,-8023, -8171,-8302,-8418,-8535,-8636,-8738,-8825,-8894,-8929,-8930,-8886,-8813,-8704,-8553,-8350,-8082,-7731,-7293,-6768,-6164, -5481,-4727,-3911,-3034,-2099,-1120,-107,921,1935,2924,3869,4755,5566,6294,6918,7439,7863,8193,8437,8604, 8696,8718,8676,8582,8445,8284,8106,7920,7717,7503,7270,7021,6761,6499,6249,6008,5779,5555,5330,5103, 4869,4643,4424,4221,4032,3849,3668,3482,3292,3101,2918,2748,2588,2441,2295,2146,1995,1838,1687,1543, 1410,1287,1171,1055,934,805,676,555,441,334,235,133,32,-86,-202,-315,-426,-534,-627,-722, -818,-924,-1035,-1146,-1259,-1367,-1468,-1567,-1673,-1781,-1898,-2026,-2151,-2274,-2391,-2499,-2612,-2731,-2857,-2993, -3135,-3275,-3410,-3541,-3671,-3801,-3940,-4088,-4240,-4395,-4544,-4687,-4827,-4965,-5115,-5273,-5446,-5616,-5785,-5943, -6090,-6231,-6368,-6511,-6656,-6798,-6939,-7059,-7164,-7253,-7322,-7388,-7435,-7468,-7461,-7410,-7301,-7130,-6897,-6602, -6249,-5829,-5343,-4777,-4132,-3412,-2625,-1776,-873,77,1057,2057,3054,4026,4953,5814,6602,7317,7950,8499, 8959,9324,9600,9792,9913,9979,10007,9989,9939,9838,9697,9521,9321,9110,8900,8687,8472,8250,8016,7767, 7512,7266,7024,6794,6571,6352,6126,5898,5668,5446,5237,5046,4864,4692,4521,4351,4173,4001,3833,3678, 3531,3393,3258,3125,2988,2859,2735,2621,2515,2421,2328,2235,2135,2032,1930,1829,1732,1648,1567,1487, 1404,1321,1238,1161,1086,1020,957,894,828,753,674,596,517,444,381,316,256,188,120,54, -13,-77,-135,-190,-249,-315,-384,-457,-532,-609,-675,-741,-803,-866,-938,-1010,-1083,-1161,-1234,-1307, -1382,-1459,-1546,-1638,-1739,-1839,-1937,-2033,-2123,-2216,-2311,-2411,-2518,-2631,-2747,-2860,-2973,-3087,-3208,-3335, -3471,-3613,-3757,-3899,-4035,-4169,-4304,-4446,-4596,-4758,-4928,-5097,-5265,-5426,-5591,-5757,-5930,-6113,-6300,-6484, -6663,-6829,-6989,-7143,-7299,-7457,-7619,-7778,-7919,-8038,-8128,-8197,-8244,-8272,-8286,-8273,-8221,-8127,-7981,-7781, -7526,-7214,-6843,-6409,-5892,-5289,-4595,-3821,-2973,-2069,-1129,-165,811,1778,2725,3627,4480,5274,6000,6661, 7246,7758,8184,8511,8754,8914,9003,9031,9009,8938,8825,8669,8481,8267,8045,7820,7596,7372,7147,6909, 6661,6405,6146,5899,5661,5439,5222,5006,4789,4568,4354,4148,3956,3776,3606,3441,3269,3096,2922,2750, 2589,2441,2298,2164,2028,1887,1745,1602,1460,1330,1206,1092,972,853,726,595,468,345,236,126, 21,-92,-204,-324,-447,-568,-680,-784,-884,-988,-1091,-1206,-1322,-1438,-1549,-1657,-1762,-1866,-1977,-2095, -2221,-2353,-2483,-2605,-2724,-2842,-2966,-3097,-3238,-3389,-3538,-3687,-3831,-3974,-4118,-4270,-4428,-4601,-4773,-4943, -5109,-5267,-5426,-5589,-5757,-5939,-6124,-6307,-6478,-6641,-6791,-6938,-7078,-7225,-7367,-7498,-7616,-7706,-7779,-7832, -7865,-7879,-7874,-7830,-7739,-7582,-7354,-7050,-6674,-6220,-5694,-5084,-4395,-3623,-2778,-1867,-899,112,1152,2210, 3259,4285,5258,6164,6988,7721,8360,8903,9351,9700,9952,10104,10174,10173,10125,10036,9918,9767,9592,9377, 9137,8884,8619,8357,8106,7854,7602,7346,7081,6817,6556,6300,6061,5834,5612,5389,5162,4937,4718,4505, 4311,4132,3962,3797,3630,3464,3296,3133,2978,2834,2698,2566,2433,2302,2173,2044,1927,1823,1726,1639, 1547,1455,1360,1265,1169,1082,999,921,845,769,689,613,536,468,404,346,288,230,167,99, 27,-43,-111,-175,-236,-296,-359,-423,-490,-556,-616,-673,-730,-784,-843,-906,-975,-1046,-1115,-1183, -1245,-1308,-1370,-1435,-1501,-1574,-1647,-1716,-1786,-1854,-1927,-2001,-2083,-2175,-2269,-2362,-2452,-2541,-2631,-2722, -2817,-2920,-3029,-3142,-3256,-3368,-3482,-3601,-3726,-3860,-4005,-4152,-4300,-4444,-4586,-4728,-4873,-5027,-5193,-5361, -5535,-5709,-5880,-6048,-6213,-6389,-6572,-6756,-6945,-7125,-7295,-7454,-7609,-7761,-7922,-8078,-8241,-8387,-8517,-8619, -8699,-8755,-8795,-8815,-8811,-8773,-8688,-8555,-8359,-8106,-7795,-7418,-6971,-6440,-5812,-5084,-4256,-3342,-2360,-1329, -263,814,1884,2921,3908,4831,5673,6436,7118,7713,8220,8635,8953,9175,9309,9368,9367,9314,9213,9071, 8890,8677,8443,8196,7948,7708,7474,7241,7004,6761,6512,6263,6017,5787,5565,5355,5144,4937,4725,4515, 4311,4118,3942,3773,3608,3445,3280,3112,2947,2790,2645,2508,2379,2251,2123,1987,1851,1722,1597,1481, 1372,1268,1161,1051,935,823,713,611,515,422,324,227,119,6,-105,-212,-312,-409,-503,-604, -709,-819,-931,-1039,-1145,-1247,-1351,-1458,-1572,-1697,-1825,-1954,-2078,-2198,-2317,-2433,-2559,-2693,-2830,-2974, -3114,-3255,-3391,-3528,-3668,-3822,-3980,-4145,-4309,-4470,-4622,-4771,-4923,-5083,-5252,-5430,-5609,-5783,-5951,-6108, -6258,-6407,-6560,-6709,-6853,-6981,-7087,-7173,-7234,-7279,-7305,-7310,-7293,-7228,-7111,-6928,-6673,-6345,-5948,-5472, -4922,-4290,-3580,-2793,-1942,-1034,-89,887,1876,2871,3845,4790,5684,6512,7263,7933,8522,9025,9434,9746, 9968,10106,10168,10176,10137,10067,9964,9828,9657,9458,9230,8989,8745,8501,8259,8016,7764,7510,7245,6980, 6726,6483,6249,6022,5797,5569,5338,5111,4890,4684,4490,4312,4141,3971,3804,3633,3470,3315,3169,3029, 2897,2763,2631,2493,2363,2239,2123,2016,1915,1822,1727,1628,1527,1430,1333,1246,1157,1076,992,908, 819,735,655,579,512,448,386,319,245,172,98,25,-46,-112,-178,-244,-314,-381,-454,-520, -584,-643,-704,-761,-828,-897,-969,-1044,-1119,-1189,-1260,-1326,-1400,-1477,-1554,-1634,-1713,-1791,-1865,-1941, -2021,-2111,-2203,-2307,-2409,-2512,-2613,-2706,-2806,-2909,-3014,-3127,-3247,-3363,-3478,-3594,-3713,-3839,-3976,-4120, -4270,-4426,-4576,-4727,-4871,-5022,-5173,-5335,-5508,-5685,-5862,-6035,-6205,-6378,-6557,-6742,-6932,-7130,-7322,-7501, -7667,-7824,-7977,-8126,-8279,-8429,-8571,-8693,-8791,-8866,-8912,-8936,-8940,-8917,-8860,-8760,-8602,-8384,-8109,-7771, -7376,-6916,-6382,-5766,-5059,-4266,-3393,-2457,-1478,-462,560,1573,2561,3501,4373,5175,5894,6533,7095,7576, 7977,8291,8518,8662,8738,8751,8712,8631,8504,8344,8144,7915,7669,7418,7170,6927,6691,6455,6212,5962, 5714,5470,5235,5012,4799,4590,4384,4174,3963,3757,3562,3379,3205,3044,2885,2721,2557,2392,2233,2080, 1940,1807,1678,1545,1410,1272,1132,1002,876,761,650,538,421,302,183,65,-47,-153,-253,-350, -455,-563,-677,-793,-902,-1006,-1102,-1197,-1297,-1398,-1505,-1617,-1724,-1832,-1934,-2033,-2136,-2246,-2365,-2492, -2620,-2748,-2868,-2985,-3104,-3229,-3361,-3502,-3645,-3792,-3933,-4072,-4212,-4352,-4497,-4656,-4820,-4984,-5144,-5294, -5436,-5580,-5724,-5878,-6037,-6201,-6355,-6501,-6633,-6756,-6872,-6981,-7084,-7181,-7257,-7302,-7321,-7311,-7270,-7199, -7103,-6969,-6788,-6544,-6226,-5828,-5344,-4783,-4135,-3415,-2617,-1753,-825,137,1127,2122,3107,4065,4988,5862, 6677,7416,8070,8637,9117,9514,9830,10062,10215,10291,10294,10242,10140,10014,9862,9696,9512,9308,9081,8842, 8592,8346,8101,7863,7631,7399,7162,6920,6679,6444,6220,6008,5804,5606,5402,5196,4994,4790,4604,4425, 4260,4104,3952,3797,3643,3493,3347,3209,3081,2957,2836,2712,2588,2464,2345,2233,2130,2042,1954,1865, 1776,1683,1594,1505,1421,1340,1265,1187,1109,1027,945,866,793,724,663,600,536,470,394,321, 247,176,107,42,-29,-99,-173,-244,-319,-386,-447,-508,-570,-635,-704,-779,-856,-938,-1013,-1083, -1158,-1232,-1309,-1394,-1478,-1560,-1641,-1720,-1800,-1880,-1968,-2066,-2166,-2275,-2382,-2491,-2592,-2697,-2807,-2918, -3039,-3164,-3290,-3412,-3536,-3660,-3786,-3922,-4073,-4230,-4391,-4548,-4704,-4858,-5008,-5163,-5324,-5496,-5668,-5843, -6008,-6173,-6333,-6496,-6664,-6840,-7016,-7189,-7350,-7496,-7624,-7742,-7856,-7971,-8076,-8168,-8240,-8287,-8294,-8269, -8213,-8120,-7992,-7810,-7571,-7267,-6882,-6423,-5894,-5294,-4629,-3891,-3087,-2210,-1278,-300,700,1705,2691,3643, 4544,5373,6124,6783,7349,7820,8205,8509,8744,8905,8998,9028,8998,8922,8808,8664,8504,8323,8118,7894, 7652,7399,7145,6895,6656,6425,6198,5968,5740,5503,5273,5050,4839,4637,4445,4251,4055,3859,3661,3474, 3293,3125,2965,2807,2651,2488,2327,2168,2016,1878,1747,1616,1491,1359,1228,1094,959,837,723,604, 491,378,255,130,8,-110,-221,-326,-430,-538,-652,-769,-889,-1011,-1125,-1235,-1346,-1453,-1571,-1693, -1822,-1946,-2069,-2189,-2305,-2421,-2545,-2675,-2813,-2956,-3098,-3236,-3373,-3505,-3644,-3785,-3939,-4098,-4257,-4415, -4567,-4719,-4874,-5031,-5199,-5377,-5555,-5732,-5904,-6066,-6225,-6383,-6547,-6718,-6890,-7058,-7213,-7356,-7484,-7599, -7704,-7799,-7877,-7931,-7945,-7921,-7846,-7728,-7563,-7350,-7085,-6757,-6349,-5862,-5283,-4617,-3863,-3035,-2137,-1172, -161,889,1941,2980,3977,4924,5806,6620,7354,8002,8558,9019,9387,9668,9874,10014,10087,10101,10053,9953, 9804,9628,9427,9218,9003,8778,8542,8293,8030,7764,7493,7233,6986,6742,6500,6256,6015,5770,5533,5307, 5094,4892,4697,4503,4308,4112,3921,3736,3565,3406,3255,3111,2966,2824,2682,2548,2419,2300,2189,2079, 1969,1855,1741,1628,1523,1426,1335,1250,1171,1087,1002,916,833,755,681,607,536,461,383,303, 226,152,84,20,-39,-95,-156,-224,-291,-357,-421,-487,-549,-609,-678,-744,-814,-885,-948,-1007, -1066,-1120,-1180,-1241,-1308,-1376,-1450,-1522,-1593,-1660,-1735,-1810,-1891,-1975,-2057,-2140,-2220,-2297,-2377,-2459, -2546,-2645,-2749,-2851,-2957,-3062,-3164,-3274,-3387,-3506,-3629,-3752,-3877,-3999,-4119,-4244,-4376,-4518,-4672,-4827, -4988,-5143,-5298,-5454,-5612,-5778,-5948,-6124,-6301,-6472,-6637,-6799,-6961,-7131,-7301,-7473,-7643,-7805,-7950,-8079, -8193,-8296,-8391,-8479,-8548,-8598,-8616,-8597,-8539,-8443,-8304,-8125,-7892,-7597,-7226,-6776,-6244,-5637,-4961,-4214, -3406,-2532,-1608,-635,371,1388,2396,3376,4315,5191,5995,6720,7346,7877,8308,8646,8904,9085,9198,9250, 9235,9168,9057,8914,8746,8561,8361,8149,7915,7670,7411,7148,6893,6648,6408,6179,5953,5723,5495,5264, 5048,4841,4645,4459,4275,4094,3910,3725,3545,3375,3214,3063,2917,2771,2623,2470,2321,2177,2041,1915, 1794,1672,1548,1420,1291,1170,1047,933,828,718,610,494,376,260,145,35,-66,-163,-264,-367, -478,-586,-695,-802,-905,-1001,-1102,-1210,-1322,-1439,-1557,-1674,-1788,-1898,-2007,-2124,-2247,-2378,-2510,-2650, -2788,-2922,-3054,-3189,-3331,-3479,-3635,-3793,-3951,-4104,-4257,-4408,-4564,-4729,-4899,-5074,-5250,-5418,-5578,-5730, -5886,-6041,-6199,-6361,-6520,-6674,-6809,-6934,-7048,-7154,-7246,-7325,-7382,-7413,-7399,-7341,-7236,-7087,-6887,-6636, -6331,-5953,-5493,-4950,-4320,-3607,-2808,-1936,-996,-3,1036,2093,3141,4159,5124,6033,6871,7625,8294,8866, 9340,9718,10003,10213,10352,10427,10441,10396,10297,10154,9970,9767,9553,9329,9098,8861,8607,8347,8074,7805, 7543,7286,7039,6795,6551,6309,6064,5827,5597,5379,5172,4977,4778,4582,4382,4186,3996,3818,3645,3485, 3333,3185,3035,2887,2744,2612,2487,2367,2254,2138,2025,1906,1790,1677,1572,1471,1381,1293,1207,1120, 1030,947,863,784,711,637,558,479,396,314,231,156,85,17,-49,-113,-183,-256,-327,-396, -464,-532,-599,-669,-741,-817,-893,-968,-1037,-1099,-1164,-1226,-1294,-1361,-1436,-1513,-1588,-1663,-1739,-1817, -1899,-1986,-2072,-2166,-2257,-2344,-2428,-2515,-2604,-2697,-2800,-2905,-3020,-3132,-3246,-3359,-3477,-3598,-3727,-3860, -3998,-4130,-4265,-4398,-4534,-4673,-4819,-4977,-5143,-5308,-5472,-5639,-5803,-5968,-6137,-6310,-6490,-6674,-6849,-7023, -7190,-7356,-7522,-7695,-7870,-8043,-8208,-8360,-8496,-8614,-8720,-8816,-8906,-8977,-9028,-9049,-9035,-8982,-8888,-8748, -8565,-8328,-8024,-7644,-7177,-6624,-5989,-5276,-4496,-3655,-2757,-1814,-831,172,1177,2167,3123,4029,4877,5652, 6341,6940,7441,7846,8155,8380,8533,8620,8644,8611,8530,8406,8254,8081,7893,7697,7490,7266,7032,6786, 6535,6287,6043,5810,5589,5367,5145,4925,4703,4490,4282,4092,3907,3729,3551,3370,3186,3012,2843,2684, 2536,2394,2251,2109,1965,1822,1683,1551,1427,1309,1197,1080,961,843,721,607,499,393,293,191, 82,-27,-143,-253,-361,-464,-560,-661,-762,-867,-975,-1084,-1191,-1296,-1396,-1497,-1604,-1712,-1829,-1950, -2069,-2185,-2299,-2409,-2526,-2642,-2768,-2903,-3038,-3170,-3302,-3432,-3565,-3699,-3843,-3992,-4146,-4298,-4450,-4596, -4745,-4894,-5052,-5216,-5388,-5555,-5720,-5876,-6031,-6175,-6318,-6463,-6611,-6751,-6884,-7001,-7104,-7186,-7255,-7306, -7345,-7348,-7319,-7239,-7108,-6918,-6668,-6357,-5988,-5550,-5045,-4460,-3804,-3070,-2268,-1402,-484,478,1473,2476, 3475,4436,5348,6202,6981,7687,8308,8840,9284,9631,9895,10078,10194,10253,10267,10234,10159,10035,9878,9692, 9482,9264,9046,8819,8588,8348,8100,7844,7590,7337,7095,6860,6629,6399,6172,5942,5718,5500,5297,5105, 4923,4745,4568,4391,4216,4041,3875,3719,3571,3431,3292,3156,3021,2891,2764,2649,2539,2437,2334,2230, 2126,2018,1912,1810,1719,1629,1545,1461,1376,1292,1210,1133,1057,988,920,850,775,701,624,545, 470,400,330,266,201,136,68,-1,-67,-132,-196,-261,-328,-399,-469,-547,-622,-696,-765,-833, -901,-969,-1042,-1120,-1200,-1280,-1357,-1437,-1519,-1603,-1692,-1788,-1886,-1986,-2081,-2177,-2271,-2365,-2464,-2569, -2680,-2792,-2911,-3028,-3145,-3267,-3392,-3526,-3664,-3804,-3948,-4091,-4232,-4370,-4515,-4664,-4825,-4989,-5161,-5330, -5504,-5673,-5839,-6010,-6189,-6369,-6549,-6729,-6900,-7065,-7220,-7374,-7528,-7680,-7836,-7976,-8100,-8205,-8286,-8347, -8390,-8414,-8417,-8393,-8331,-8229,-8074,-7871,-7614,-7306,-6931,-6487,-5959,-5352,-4658,-3889,-3054,-2175,-1254,-313, 642,1597,2526,3422,4270,5060,5783,6438,7022,7517,7932,8255,8491,8646,8732,8759,8730,8658,8542,8389, 8207,8005,7792,7574,7354,7131,6901,6663,6420,6173,5927,5692,5463,5246,5029,4818,4605,4392,4184,3987, 3802,3622,3448,3279,3106,2934,2761,2598,2439,2292,2146,2008,1866,1722,1577,1437,1301,1172,1048,930, 808,687,560,436,317,201,92,-19,-126,-235,-353,-471,-587,-701,-808,-913,-1015,-1118,-1227,-1340, -1453,-1567,-1678,-1786,-1894,-2006,-2122,-2245,-2375,-2504,-2633,-2759,-2883,-3006,-3136,-3276,-3416,-3565,-3714,-3863, -4007,-4153,-4299,-4456,-4614,-4782,-4946,-5110,-5268,-5424,-5579,-5741,-5909,-6080,-6258,-6426,-6590,-6743,-6886,-7020, -7159,-7291,-7417,-7531,-7629,-7702,-7757,-7790,-7799,-7781,-7729,-7631,-7476,-7250,-6952,-6578,-6128,-5597,-4990,-4303, -3542,-2715,-1820,-871,121,1146,2181,3207,4207,5163,6050,6864,7589,8223,8766,9212,9567,9831,10003,10095, 10116,10086,10013,9907,9774,9610,9420,9204,8969,8721,8475,8224,7979,7736,7490,7239,6987,6734,6486,6246, 6017,5791,5570,5352,5135,4917,4707,4507,4321,4148,3978,3815,3648,3487,3326,3167,3020,2880,2745,2614, 2487,2359,2235,2120,2009,1908,1810,1721,1630,1539,1443,1349,1259,1172,1091,1010,936,860,782,708, 634,568,503,441,379,317,248,179,109,39,-28,-92,-158,-215,-280,-345,-409,-469,-532,-590, -647,-706,-767,-833,-902,-973,-1044,-1109,-1172,-1237,-1302,-1369,-1439,-1513,-1583,-1657,-1733,-1804,-1880,-1970, -2054,-2149,-2244,-2340,-2435,-2526,-2617,-2714,-2817,-2921,-3033,-3146,-3263,-3379,-3497,-3623,-3749,-3887,-4031,-4178, -4325,-4466,-4607,-4748,-4897,-5051,-5213,-5380,-5547,-5718,-5883,-6048,-6215,-6387,-6564,-6740,-6915,-7084,-7243,-7390, -7536,-7678,-7821,-7959,-8092,-8204,-8296,-8362,-8403,-8419,-8415,-8380,-8314,-8207,-8045,-7831,-7558,-7217,-6817,-6348, -5804,-5179,-4463,-3663,-2793,-1861,-886,107,1110,2096,3055,3968,4822,5603,6311,6942,7495,7969,8361,8672, 8901,9047,9125,9139,9103,9020,8899,8745,8563,8354,8136,7904,7674,7445,7218,6991,6758,6521,6282,6044, 5808,5588,5369,5161,4954,4743,4538,4336,4141,3953,3777,3606,3444,3278,3112,2946,2785,2632,2485,2347, 2215,2078,1943,1806,1669,1536,1409,1292,1174,1059,941,823,702,582,464,357,249,146,33,-78, -196,-315,-430,-543,-652,-755,-862,-972,-1085,-1203,-1321,-1435,-1547,-1658,-1772,-1890,-2015,-2141,-2274,-2406, -2535,-2661,-2786,-2918,-3050,-3197,-3344,-3493,-3641,-3789,-3934,-4084,-4238,-4402,-4569,-4737,-4904,-5069,-5228,-5390, -5558,-5725,-5901,-6078,-6253,-6422,-6580,-6729,-6870,-7008,-7139,-7262,-7368,-7460,-7523,-7561,-7579,-7568,-7522,-7449, -7323,-7144,-6894,-6570,-6166,-5680,-5120,-4473,-3751,-2957,-2099,-1186,-226,766,1772,2779,3769,4726,5636,6479, 7245,7928,8526,9030,9445,9771,10009,10167,10234,10242,10196,10108,9989,9842,9670,9474,9257,9017,8769,8513, 8257,8005,7752,7502,7248,6992,6735,6483,6240,6003,5776,5556,5334,5115,4896,4683,4484,4292,4113,3938, 3774,3608,3448,3287,3130,2980,2836,2701,2567,2434,2304,2176,2051,1935,1824,1723,1626,1529,1433,1337, 1240,1142,1048,959,874,792,706,624,545,462,385,313,247,180,111,42,-32,-106,-182,-255, -327,-396,-465,-534,-606,-677,-748,-815,-879,-943,-1006,-1075,-1144,-1218,-1294,-1373,-1448,-1523,-1595,-1670, -1746,-1821,-1904,-1984,-2064,-2142,-2221,-2305,-2390,-2486,-2583,-2686,-2787,-2887,-2986,-3087,-3189,-3295,-3404,-3521, -3639,-3758,-3879,-4002,-4125,-4259,-4398,-4545,-4699,-4850,-4997,-5148,-5297,-5449,-5604,-5771,-5942,-6114,-6282,-6455, -6622,-6791,-6966,-7145,-7322,-7499,-7667,-7825,-7975,-8114,-8250,-8379,-8508,-8625,-8729,-8807,-8867,-8891,-8893,-8868, -8816,-8726,-8595,-8410,-8170,-7864,-7499,-7074,-6576,-6010,-5363,-4638,-3829,-2949,-2009,-1031,-32,975,1963,2920, 3821,4661,5426,6112,6716,7238,7683,8050,8337,8544,8674,8736,8740,8689,8599,8478,8315,8127,7917,7689, 7455,7218,6983,6754,6524,6296,6066,5833,5604,5376,5160,4952,4751,4552,4356,4156,3963,3774,3595,3426, 3261,3102,2945,2785,2629,2472,2321,2181,2048,1914,1786,1655,1523,1392,1259,1137,1019,906,795,684, 568,452,336,224,118,15,-85,-185,-292,-400,-511,-625,-731,-832,-933,-1032,-1136,-1243,-1356,-1468, -1581,-1689,-1799,-1908,-2022,-2140,-2269,-2399,-2529,-2659,-2789,-2914,-3043,-3176,-3317,-3467,-3613,-3761,-3907,-4050, -4195,-4347,-4503,-4666,-4830,-4992,-5151,-5305,-5456,-5610,-5762,-5925,-6090,-6244,-6398,-6545,-6675,-6800,-6917,-7025, -7119,-7198,-7250,-7278,-7274,-7238,-7169,-7063,-6918,-6720,-6458,-6124,-5713,-5216,-4636,-3972,-3231,-2416,-1533,-602, 374,1370,2369,3354,4310,5227,6091,6892,7615,8257,8807,9269,9648,9943,10159,10300,10365,10370,10314,10212, 10079,9922,9747,9558,9349,9129,8890,8646,8391,8145,7897,7658,7418,7178,6939,6697,6459,6228,6004,5793, 5580,5377,5170,4964,4763,4569,4385,4211,4047,3889,3736,3582,3431,3283,3139,3006,2878,2750,2628,2504, 2382,2261,2148,2039,1944,1849,1759,1668,1575,1485,1397,1308,1226,1141,1061,978,896,812,730,654, 581,513,445,376,307,234,160,85,11,-61,-134,-205,-277,-349,-423,-500,-567,-634,-701,-764, -830,-900,-975,-1051,-1128,-1207,-1286,-1363,-1440,-1520,-1602,-1688,-1777,-1861,-1946,-2029,-2114,-2205,-2303,-2407, -2517,-2625,-2739,-2846,-2962,-3071,-3189,-3312,-3436,-3563,-3693,-3823,-3951,-4086,-4228,-4377,-4531,-4690,-4852,-5013, -5171,-5328,-5490,-5654,-5824,-5995,-6172,-6347,-6517,-6687,-6857,-7029,-7207,-7379,-7553,-7720,-7874,-8014,-8143,-8264, -8377,-8484,-8575,-8655,-8703,-8722,-8707,-8655,-8572,-8445,-8270,-8046,-7757,-7397,-6967,-6462,-5888,-5247,-4538,-3765, -2925,-2023,-1077,-98,889,1867,2815,3715,4555,5325,6010,6613,7122,7550,7898,8168,8368,8502,8574,8584, 8543,8460,8341,8199,8029,7840,7631,7406,7169,6923,6681,6442,6212,5983,5758,5532,5306,5080,4858,4646, 4444,4244,4055,3862,3674,3481,3299,3121,2953,2793,2638,2484,2331,2175,2026,1880,1739,1606,1479,1354, 1227,1100,969,842,721,599,488,376,264,147,28,-89,-205,-318,-422,-528,-633,-739,-855,-967, -1081,-1193,-1302,-1408,-1514,-1622,-1736,-1853,-1972,-2087,-2206,-2318,-2431,-2549,-2672,-2801,-2935,-3069,-3206,-3337, -3472,-3604,-3742,-3887,-4035,-4185,-4341,-4492,-4643,-4794,-4948,-5112,-5279,-5445,-5617,-5782,-5941,-6097,-6252,-6408, -6564,-6724,-6878,-7028,-7161,-7287,-7398,-7499,-7582,-7648,-7692,-7708,-7683,-7621,-7516,-7371,-7177,-6931,-6620,-6249, -5798,-5265,-4649,-3953,-3179,-2332,-1425,-462,542,1564,2575,3566,4510,5404,6237,6999,7685,8288,8798,9219, 9551,9804,9985,10100,10150,10141,10079,9968,9819,9642,9453,9248,9035,8811,8574,8329,8076,7819,7563,7317, 7075,6839,6603,6367,6132,5902,5679,5467,5262,5066,4871,4678,4486,4295,4115,3943,3776,3622,3472,3329, 3186,3044,2911,2780,2655,2536,2423,2308,2195,2079,1968,1862,1759,1665,1576,1492,1407,1322,1239,1159, 1077,1000,926,848,778,698,623,547,475,403,339,274,215,150,86,19,-45,-115,-180,-247, -313,-380,-451,-521,-590,-660,-726,-786,-849,-911,-978,-1047,-1119,-1195,-1269,-1345,-1422,-1499,-1581,-1663, -1746,-1833,-1922,-2003,-2089,-2174,-2261,-2355,-2453,-2557,-2664,-2773,-2885,-2997,-3109,-3226,-3346,-3469,-3600,-3728, -3856,-3988,-4119,-4258,-4404,-4559,-4717,-4880,-5041,-5205,-5365,-5531,-5694,-5864,-6036,-6214,-6387,-6557,-6726,-6892, -7057,-7224,-7393,-7555,-7714,-7859,-7989,-8102,-8205,-8295,-8373,-8439,-8481,-8502,-8485,-8432,-8337,-8201,-8019,-7787, -7493,-7131,-6692,-6178,-5584,-4920,-4188,-3396,-2545,-1642,-701,277,1262,2245,3200,4109,4963,5747,6451,7069, 7591,8022,8365,8626,8810,8928,8986,8983,8927,8830,8700,8544,8363,8172,7962,7739,7498,7257,7007,6758, 6513,6279,6049,5825,5602,5378,5157,4943,4735,4537,4345,4157,3974,3788,3603,3427,3251,3085,2927,2773, 2626,2475,2322,2175,2026,1886,1754,1625,1500,1374,1247,1121,993,872,753,639,528,415,300,183, 68,-50,-162,-268,-375,-481,-588,-695,-808,-924,-1033,-1143,-1254,-1361,-1472,-1583,-1705,-1825,-1950,-2067, -2189,-2306,-2428,-2554,-2686,-2824,-2964,-3105,-3244,-3384,-3524,-3669,-3813,-3969,-4127,-4283,-4438,-4593,-4749,-4905, -5066,-5234,-5405,-5576,-5744,-5907,-6063,-6217,-6372,-6524,-6679,-6831,-6972,-7107,-7229,-7336,-7429,-7505,-7566,-7598, -7599,-7561,-7475,-7344,-7157,-6915,-6617,-6257,-5823,-5314,-4720,-4050,-3300,-2477,-1586,-642,353,1376,2403,3408, 4374,5283,6131,6899,7594,8202,8722,9150,9488,9738,9917,10026,10078,10077,10024,9924,9782,9611,9416,9205, 8985,8760,8524,8284,8034,7780,7522,7266,7017,6773,6534,6299,6063,5828,5600,5376,5161,4956,4757,4565, 4373,4183,3996,3814,3637,3470,3311,3160,3010,2868,2729,2591,2461,2337,2216,2104,1994,1880,1768,1659, 1548,1444,1347,1255,1165,1081,994,911,827,746,669,592,519,443,364,286,207,130,57,-16, -83,-150,-214,-280,-348,-419,-484,-553,-618,-686,-755,-826,-896,-970,-1039,-1109,-1174,-1238,-1306,-1371, -1440,-1512,-1586,-1659,-1737,-1813,-1895,-1976,-2059,-2146,-2240,-2329,-2418,-2507,-2596,-2685,-2780,-2879,-2984,-3091, -3203,-3317,-3434,-3550,-3671,-3794,-3924,-4053,-4190,-4320,-4455,-4589,-4726,-4869,-5025,-5180,-5343,-5505,-5669,-5834, -5996,-6160,-6331,-6502,-6678,-6851,-7021,-7185,-7348,-7508,-7671,-7832,-7990,-8141,-8282,-8408,-8514,-8604,-8679,-8741, -8785,-8806,-8796,-8756,-8672,-8546,-8372,-8144,-7861,-7513,-7093,-6593,-6015,-5353,-4622,-3827,-2976,-2080,-1147,-190, 779,1744,2686,3591,4444,5236,5957,6598,7150,7615,7989,8277,8486,8624,8698,8714,8676,8597,8480,8334, 8167,7984,7788,7583,7365,7138,6904,6663,6420,6183,5951,5730,5509,5295,5080,4868,4658,4458,4265,4081, 3902,3726,3550,3376,3202,3036,2878,2725,2579,2436,2292,2152,2008,1867,1733,1605,1481,1359,1241,1124, 1000,877,759,641,531,421,311,201,88,-28,-140,-253,-361,-468,-571,-674,-780,-890,-1002,-1113, -1223,-1332,-1439,-1546,-1659,-1779,-1898,-2021,-2142,-2262,-2381,-2502,-2621,-2756,-2888,-3028,-3168,-3308,-3449,-3589, -3729,-3878,-4029,-4183,-4341,-4499,-4654,-4808,-4965,-5123,-5288,-5455,-5623,-5788,-5948,-6097,-6244,-6384,-6525,-6657, -6789,-6909,-7017,-7107,-7180,-7234,-7265,-7275,-7251,-7188,-7078,-6915,-6692,-6403,-6052,-5636,-5151,-4592,-3961,-3256, -2483,-1646,-756,182,1157,2153,3147,4119,5054,5931,6739,7467,8118,8682,9161,9548,9850,10068,10208,10284, 10307,10283,10217,10113,9971,9799,9604,9386,9162,8928,8691,8456,8213,7964,7715,7460,7211,6968,6732,6496, 6268,6040,5815,5594,5382,5175,4980,4793,4611,4433,4258,4084,3913,3745,3586,3438,3289,3147,3008,2875, 2743,2619,2497,2385,2274,2167,2061,1953,1846,1741,1638,1544,1450,1360,1274,1189,1104,1022,940,863, 789,715,640,564,486,407,330,250,177,104,37,-32,-103,-174,-242,-313,-382,-451,-520,-591, -662,-738,-815,-892,-967,-1042,-1113,-1183,-1256,-1330,-1408,-1486,-1568,-1648,-1733,-1815,-1904,-1993,-2090,-2187, -2285,-2384,-2481,-2579,-2676,-2779,-2882,-2996,-3112,-3226,-3348,-3471,-3594,-3723,-3859,-3996,-4138,-4284,-4430,-4574, -4718,-4864,-5019,-5177,-5340,-5511,-5683,-5855,-6027,-6201,-6374,-6549,-6725,-6906,-7080,-7254,-7417,-7578,-7733,-7886, -8040,-8185,-8324,-8452,-8558,-8644,-8710,-8754,-8778,-8780,-8754,-8693,-8595,-8442,-8248,-7991,-7677,-7298,-6846,-6319, -5709,-5015,-4245,-3409,-2515,-1582,-626,343,1308,2254,3165,4024,4828,5565,6229,6815,7321,7740,8071,8314, 8480,8576,8609,8585,8513,8402,8258,8081,7888,7681,7464,7244,7020,6793,6562,6324,6083,5845,5607,5381, 5159,4946,4734,4525,4319,4114,3917,3727,3547,3371,3203,3034,2864,2695,2532,2374,2223,2079,1936,1799, 1658,1519,1379,1244,1118,990,872,753,635,517,394,278,160,49,-57,-164,-274,-385,-498,-610, -722,-832,-936,-1040,-1142,-1251,-1358,-1468,-1581,-1693,-1802,-1910,-2020,-2136,-2254,-2378,-2505,-2633,-2757,-2882, -3004,-3133,-3264,-3401,-3544,-3692,-3834,-3977,-4118,-4266,-4414,-4568,-4728,-4887,-5047,-5203,-5358,-5515,-5671,-5834, -5998,-6167,-6329,-6489,-6635,-6780,-6916,-7044,-7168,-7287,-7392,-7482,-7551,-7597,-7622,-7619,-7590,-7525,-7412,-7249, -7017,-6715,-6344,-5894,-5373,-4775,-4105,-3361,-2549,-1680,-759,196,1178,2170,3159,4119,5042,5910,6702,7419, 8051,8593,9045,9410,9691,9889,10010,10065,10062,10012,9931,9813,9668,9502,9310,9093,8868,8633,8397,8159, 7922,7682,7440,7195,6951,6709,6472,6239,6017,5795,5580,5363,5153,4946,4748,4556,4377,4207,4043,3876, 3714,3555,3398,3248,3104,2969,2837,2705,2581,2458,2337,2226,2122,2022,1926,1831,1738,1642,1545,1455, 1363,1275,1196,1115,1037,959,882,808,736,665,602,538,469,397,328,257,188,117,48,-14, -82,-144,-209,-272,-338,-400,-466,-524,-586,-650,-718,-787,-859,-931,-998,-1068,-1136,-1204,-1274,-1345, -1420,-1498,-1576,-1651,-1731,-1814,-1898,-1988,-2086,-2184,-2284,-2381,-2476,-2578,-2678,-2780,-2890,-3003,-3122,-3241, -3360,-3487,-3614,-3746,-3884,-4031,-4177,-4326,-4472,-4620,-4766,-4916,-5074,-5239,-5408,-5580,-5750,-5921,-6092,-6261, -6439,-6614,-6794,-6970,-7140,-7305,-7460,-7610,-7756,-7898,-8037,-8164,-8277,-8371,-8443,-8489,-8512,-8505,-8473,-8407, -8300,-8150,-7944,-7681,-7355,-6966,-6505,-5973,-5362,-4664,-3892,-3045,-2139,-1188,-210,779,1760,2719,3632,4494, 5287,6013,6663,7236,7732,8148,8480,8731,8903,9002,9036,9015,8946,8839,8695,8521,8325,8108,7881,7650, 7420,7188,6957,6721,6483,6243,6005,5769,5540,5320,5107,4895,4686,4481,4277,4083,3891,3709,3537,3368, 3199,3034,2867,2705,2548,2397,2255,2117,1976,1840,1702,1566,1428,1298,1174,1054,932,812,692,572, 448,326,215,101,-12,-120,-233,-352,-470,-590,-703,-809,-923,-1030,-1141,-1255,-1370,-1491,-1605,-1720, -1836,-1949,-2067,-2191,-2321,-2454,-2584,-2716,-2846,-2977,-3108,-3245,-3387,-3535,-3683,-3834,-3984,-4134,-4282,-4439, -4596,-4763,-4929,-5095,-5258,-5419,-5578,-5739,-5900,-6069,-6238,-6405,-6566,-6717,-6857,-6994,-7120,-7238,-7347,-7439, -7513,-7567,-7594,-7595,-7568,-7510,-7414,-7273,-7074,-6809,-6473,-6062,-5572,-5007,-4364,-3649,-2863,-2020,-1125,-189, 770,1742,2708,3656,4571,5440,6249,6988,7644,8215,8699,9097,9411,9647,9802,9879,9898,9862,9782,9672, 9532,9370,9186,8982,8757,8525,8282,8037,7795,7554,7311,7070,6828,6584,6343,6108,5879,5657,5443,5228, 5018,4810,4607,4408,4221,4043,3872,3711,3549,3393,3237,3081,2933,2793,2657,2523,2395,2269,2143,2022, 1905,1800,1697,1598,1503,1410,1316,1220,1125,1035,950,862,781,701,623,542,462,387,316,250, 183,117,48,-24,-97,-170,-243,-313,-383,-451,-519,-589,-658,-724,-794,-860,-924,-988,-1053,-1121, -1194,-1272,-1346,-1421,-1498,-1569,-1645,-1719,-1795,-1876,-1956,-2035,-2117,-2199,-2283,-2369,-2462,-2560,-2662,-2762, -2865,-2967,-3066,-3173,-3278,-3392,-3508,-3627,-3746,-3870,-3995,-4125,-4258,-4400,-4545,-4697,-4845,-5000,-5149,-5301, -5455,-5614,-5776,-5941,-6112,-6283,-6451,-6619,-6785,-6956,-7126,-7297,-7467,-7629,-7785,-7931,-8068,-8197,-8319,-8436, -8541,-8634,-8707,-8754,-8773,-8763,-8724,-8654,-8544,-8390,-8189,-7928,-7607,-7219,-6766,-6243,-5650,-4978,-4236,-3414, -2528,-1594,-623,364,1353,2319,3245,4117,4924,5659,6312,6887,7386,7806,8147,8413,8604,8725,8779,8777, 8729,8639,8511,8355,8178,7975,7757,7530,7302,7073,6848,6627,6404,6178,5956,5727,5510,5293,5088,4884, 4689,4495,4300,4109,3920,3741,3569,3402,3241,3085,2928,2770,2615,2465,2320,2181,2048,1920,1789,1655, 1527,1395,1272,1151,1032,919,807,690,573,456,342,229,120,18,-90,-198,-312,-424,-536,-651, -762,-866,-973,-1082,-1193,-1310,-1427,-1543,-1661,-1780,-1894,-2012,-2136,-2268,-2400,-2535,-2672,-2804,-2937,-3070, -3208,-3353,-3501,-3649,-3803,-3953,-4099,-4253,-4409,-4565,-4726,-4891,-5054,-5217,-5372,-5529,-5681,-5838,-5997,-6155, -6309,-6465,-6604,-6734,-6848,-6953,-7048,-7127,-7186,-7221,-7224,-7196,-7129,-7025,-6878,-6686,-6436,-6128,-5740,-5274, -4726,-4098,-3395,-2618,-1776,-881,59,1028,2007,2977,3919,4827,5686,6486,7222,7882,8464,8957,9363,9689, 9936,10110,10216,10258,10240,10174,10064,9926,9763,9582,9388,9179,8958,8725,8484,8234,7985,7743,7502,7262, 7027,6789,6551,6318,6090,5871,5655,5447,5243,5040,4840,4642,4451,4269,4097,3932,3774,3622,3468,3320, 3171,3031,2895,2764,2640,2516,2394,2269,2150,2037,1926,1827,1730,1636,1543,1451,1357,1265,1176,1087, 1003,920,838,754,669,587,511,432,361,291,221,151,77,3,-71,-147,-222,-296,-367,-440, -513,-586,-660,-731,-804,-870,-938,-1006,-1077,-1151,-1228,-1309,-1389,-1468,-1548,-1630,-1712,-1797,-1883,-1970, -2060,-2148,-2236,-2329,-2420,-2520,-2624,-2730,-2844,-2956,-3069,-3180,-3295,-3414,-3535,-3660,-3788,-3921,-4051,-4185, -4318,-4458,-4608,-4760,-4919,-5080,-5240,-5400,-5560,-5724,-5885,-6056,-6229,-6403,-6576,-6750,-6918,-7085,-7259,-7428, -7596,-7763,-7923,-8071,-8209,-8335,-8449,-8549,-8644,-8724,-8782,-8818,-8824,-8795,-8729,-8622,-8476,-8280,-8029,-7716, -7339,-6887,-6369,-5776,-5117,-4394,-3604,-2753,-1854,-911,54,1026,1988,2917,3799,4619,5366,6038,6621,7120, 7535,7870,8130,8325,8451,8516,8522,8481,8397,8277,8129,7961,7769,7562,7339,7103,6863,6625,6387,6153, 5928,5703,5478,5256,5035,4818,4606,4400,4204,4012,3823,3634,3447,3267,3091,2918,2758,2601,2450,2297, 2145,1993,1848,1706,1571,1440,1313,1183,1058,928,802,677,558,441,327,213,96,-22,-137,-254, -365,-474,-582,-691,-798,-910,-1021,-1135,-1248,-1357,-1466,-1572,-1681,-1792,-1908,-2028,-2145,-2262,-2379,-2495, -2617,-2739,-2865,-2998,-3136,-3268,-3405,-3539,-3674,-3814,-3955,-4103,-4252,-4406,-4560,-4710,-4863,-5018,-5174,-5337, -5500,-5665,-5827,-5984,-6136,-6286,-6433,-6581,-6730,-6875,-7013,-7140,-7256,-7356,-7442,-7508,-7555,-7578,-7572,-7527, -7442,-7313,-7134,-6904,-6621,-6278,-5861,-5371,-4799,-4148,-3418,-2611,-1744,-819,154,1153,2164,3159,4124,5040, 5901,6692,7414,8055,8614,9085,9467,9766,9986,10135,10221,10247,10219,10144,10025,9877,9699,9505,9295,9081, 8857,8623,8381,8131,7883,7634,7386,7149,6912,6681,6448,6219,5994,5775,5560,5358,5159,4968,4778,4587, 4402,4223,4045,3882,3725,3576,3425,3283,3143,3008,2874,2747,2626,2509,2395,2279,2163,2054,1947,1842, 1746,1652,1566,1475,1393,1306,1225,1140,1063,984,909,829,753,674,599,522,449,383,313,247, 182,116,49,-24,-92,-160,-228,-300,-370,-437,-509,-582,-653,-721,-788,-853,-919,-986,-1057,-1128, -1207,-1283,-1361,-1439,-1517,-1601,-1681,-1766,-1854,-1941,-2030,-2117,-2205,-2297,-2391,-2490,-2595,-2702,-2815,-2929, -3044,-3159,-3278,-3399,-3528,-3657,-3786,-3920,-4054,-4194,-4334,-4479,-4634,-4793,-4955,-5121,-5288,-5452,-5619,-5785, -5957,-6130,-6304,-6479,-6655,-6824,-6993,-7159,-7328,-7495,-7660,-7819,-7966,-8102,-8223,-8331,-8425,-8506,-8572,-8621, -8641,-8636,-8591,-8507,-8379,-8203,-7975,-7691,-7334,-6911,-6408,-5826,-5172,-4448,-3656,-2807,-1904,-957,18,1007, 1996,2958,3880,4749,5547,6270,6906,7451,7904,8268,8548,8754,8888,8960,8972,8935,8851,8728,8576,8401, 8213,8007,7784,7550,7308,7061,6811,6568,6328,6096,5867,5640,5417,5194,4977,4764,4559,4363,4169,3980, 3793,3608,3428,3248,3076,2912,2754,2599,2446,2295,2144,1996,1852,1715,1581,1450,1323,1194,1065,938, 813,689,572,451,337,223,103,-17,-132,-252,-362,-476,-583,-694,-805,-920,-1036,-1151,-1264,-1375, -1489,-1601,-1719,-1838,-1961,-2085,-2205,-2331,-2454,-2574,-2700,-2832,-2969,-3107,-3250,-3390,-3532,-3673,-3814,-3958, -4115,-4264,-4421,-4581,-4734,-4893,-5049,-5210,-5374,-5539,-5708,-5873,-6034,-6192,-6345,-6492,-6639,-6784,-6929,-7064, -7191,-7303,-7402,-7483,-7549,-7590,-7607,-7594,-7541,-7446,-7299,-7096,-6843,-6533,-6159,-5718,-5205,-4617,-3951,-3209, -2401,-1534,-614,347,1324,2307,3269,4198,5078,5894,6642,7319,7913,8423,8852,9194,9458,9645,9769,9834, 9844,9807,9728,9607,9453,9276,9082,8873,8662,8439,8207,7971,7727,7480,7235,6991,6754,6518,6289,6059, 5834,5610,5392,5183,4977,4781,4590,4405,4221,4038,3857,3684,3520,3362,3210,3063,2924,2784,2647,2520, 2394,2274,2160,2048,1937,1827,1716,1609,1506,1408,1314,1226,1138,1055,970,886,807,727,651,573, 501,426,349,272,194,122,50,-19,-83,-149,-213,-284,-350,-418,-486,-554,-622,-688,-758,-830, -898,-970,-1040,-1108,-1174,-1238,-1306,-1374,-1445,-1520,-1598,-1674,-1753,-1832,-1914,-1999,-2086,-2173,-2263,-2357, -2446,-2538,-2628,-2722,-2824,-2925,-3034,-3145,-3261,-3378,-3496,-3614,-3740,-3864,-3998,-4130,-4266,-4402,-4537,-4677, -4822,-4969,-5127,-5287,-5452,-5616,-5780,-5941,-6107,-6274,-6443,-6613,-6783,-6953,-7118,-7277,-7437,-7593,-7748,-7900, -8044,-8182,-8301,-8399,-8490,-8561,-8610,-8645,-8660,-8648,-8600,-8514,-8383,-8207,-7976,-7694,-7342,-6930,-6438,-5870, -5227,-4514,-3735,-2902,-2028,-1115,-175,773,1722,2646,3540,4381,5163,5879,6519,7077,7550,7935,8234,8456, 8606,8691,8722,8700,8635,8529,8390,8231,8051,7860,7657,7442,7219,6989,6751,6512,6275,6046,5820,5599, 5384,5166,4956,4748,4546,4352,4164,3978,3802,3623,3450,3277,3107,2944,2785,2635,2489,2344,2199,2054, 1912,1773,1641,1511,1386,1261,1138,1014,890,765,645,528,415,302,190,70,-43,-161,-274,-391, -499,-608,-715,-825,-936,-1049,-1164,-1276,-1391,-1501,-1614,-1728,-1849,-1971,-2096,-2221,-2346,-2470,-2594,-2722, -2852,-2991,-3129,-3277,-3420,-3562,-3707,-3852,-4001,-4150,-4306,-4465,-4623,-4782,-4935,-5093,-5251,-5412,-5573,-5738, -5901,-6056,-6204,-6348,-6484,-6612,-6739,-6859,-6968,-7064,-7142,-7203,-7242,-7253,-7237,-7190,-7101,-6967,-6775,-6518, -6201,-5814,-5361,-4839,-4251,-3589,-2860,-2071,-1221,-325,608,1567,2536,3495,4423,5312,6139,6897,7579,8178, 8693,9124,9470,9734,9924,10038,10095,10098,10057,9979,9867,9727,9554,9360,9149,8925,8701,8468,8234,7997, 7761,7515,7273,7030,6791,6560,6329,6106,5886,5670,5455,5247,5041,4850,4661,4482,4309,4135,3962,3793, 3628,3470,3315,3169,3027,2891,2757,2628,2500,2378,2264,2154,2045,1938,1831,1728,1623,1521,1425,1331, 1242,1154,1069,987,905,824,746,669,592,521,443,368,291,214,136,61,-12,-82,-150,-220, -287,-358,-430,-501,-571,-641,-711,-784,-854,-932,-1005,-1083,-1160,-1230,-1304,-1377,-1450,-1528,-1606,-1687, -1771,-1853,-1937,-2026,-2113,-2206,-2306,-2402,-2503,-2603,-2699,-2800,-2901,-3008,-3117,-3233,-3352,-3474,-3597,-3724, -3853,-3984,-4122,-4263,-4408,-4553,-4697,-4846,-4993,-5143,-5298,-5462,-5628,-5798,-5967,-6136,-6305,-6471,-6641,-6810, -6982,-7153,-7313,-7475,-7630,-7775,-7918,-8056,-8186,-8309,-8420,-8512,-8583,-8630,-8652,-8652,-8627,-8570,-8479,-8345, -8164,-7928,-7631,-7275,-6853,-6361,-5788,-5139,-4418,-3624,-2773,-1878,-948,-4,942,1878,2783,3644,4454,5203, 5881,6491,7023,7480,7855,8147,8362,8501,8573,8588,8554,8478,8368,8220,8050,7864,7660,7450,7232,7015, 6796,6568,6343,6110,5879,5649,5425,5207,4998,4791,4585,4384,4185,3991,3805,3621,3449,3279,3110,2944, 2779,2619,2462,2309,2164,2024,1883,1745,1608,1471,1337,1207,1080,959,840,722,602,479,360,242, 127,18,-96,-205,-317,-433,-549,-665,-777,-888,-993,-1101,-1211,-1322,-1434,-1549,-1667,-1779,-1893,-2010, -2126,-2249,-2374,-2505,-2635,-2761,-2890,-3022,-3150,-3286,-3423,-3568,-3716,-3861,-4009,-4157,-4306,-4455,-4608,-4768, -4928,-5089,-5250,-5408,-5567,-5723,-5883,-6045,-6208,-6371,-6525,-6674,-6812,-6942,-7063,-7174,-7279,-7370,-7440,-7492, -7520,-7518,-7486,-7417,-7311,-7153,-6938,-6656,-6307,-5875,-5371,-4788,-4132,-3407,-2616,-1770,-872,74,1044,2027, 3008,3965,4893,5768,6583,7324,7981,8553,9037,9433,9744,9975,10131,10215,10239,10212,10138,10032,9898,9741, 9559,9360,9142,8914,8676,8434,8192,7956,7713,7471,7229,6985,6745,6506,6273,6050,5830,5613,5403,5194, 4989,4792,4602,4422,4251,4079,3917,3755,3598,3441,3289,3145,3006,2870,2740,2613,2488,2367,2251,2144, 2039,1938,1838,1744,1645,1548,1450,1356,1268,1182,1097,1013,936,857,775,699,628,556,484,416, 342,268,194,120,46,-25,-95,-160,-229,-299,-369,-437,-506,-572,-640,-704,-774,-844,-917,-993, -1068,-1142,-1219,-1288,-1364,-1438,-1516,-1595,-1677,-1757,-1843,-1926,-2011,-2105,-2198,-2295,-2396,-2499,-2602,-2705, -2806,-2914,-3019,-3135,-3250,-3369,-3491,-3618,-3744,-3878,-4013,-4153,-4298,-4447,-4595,-4746,-4898,-5051,-5205,-5365, -5528,-5696,-5867,-6043,-6216,-6387,-6562,-6735,-6912,-7087,-7261,-7431,-7594,-7750,-7900,-8043,-8181,-8313,-8434,-8542, -8635,-8701,-8744,-8759,-8747,-8710,-8634,-8520,-8364,-8152,-7884,-7553,-7159,-6695,-6156,-5538,-4842,-4069,-3227,-2324, -1379,-405,580,1559,2513,3428,4291,5088,5816,6469,7046,7545,7963,8303,8559,8740,8846,8887,8871,8810, 8708,8567,8399,8207,8000,7776,7547,7318,7086,6856,6623,6388,6154,5920,5687,5459,5239,5024,4815,4608, 4406,4207,4012,3819,3642,3466,3296,3128,2964,2801,2640,2482,2331,2186,2046,1905,1769,1632,1495,1358, 1231,1102,977,858,737,618,496,374,257,143,27,-81,-195,-304,-422,-536,-651,-764,-878,-986, -1092,-1200,-1314,-1427,-1542,-1657,-1771,-1888,-2003,-2122,-2243,-2370,-2498,-2627,-2759,-2890,-3019,-3151,-3286,-3428, -3572,-3718,-3866,-4016,-4164,-4312,-4465,-4620,-4781,-4939,-5099,-5260,-5419,-5572,-5731,-5889,-6045,-6204,-6361,-6518, -6661,-6798,-6925,-7041,-7151,-7248,-7328,-7392,-7435,-7450,-7441,-7398,-7322,-7206,-7043,-6824,-6543,-6189,-5763,-5256, -4680,-4024,-3298,-2510,-1664,-766,158,1110,2068,3017,3946,4840,5681,6468,7186,7823,8376,8845,9232,9537, 9761,9911,9992,10016,9983,9910,9802,9671,9509,9335,9139,8925,8703,8467,8228,7991,7754,7516,7282,7045, 6808,6571,6338,6111,5889,5675,5464,5253,5050,4843,4650,4462,4281,4108,3945,3782,3626,3468,3315,3164, 3021,2880,2751,2618,2490,2366,2244,2130,2018,1913,1811,1716,1618,1523,1427,1334,1240,1150,1063,980, 896,813,732,652,576,499,428,356,288,219,144,67,-6,-81,-157,-226,-299,-368,-438,-512, -581,-651,-720,-784,-853,-921,-991,-1065,-1138,-1214,-1293,-1367,-1441,-1517,-1597,-1672,-1754,-1836,-1918,-2003, -2085,-2172,-2262,-2356,-2454,-2552,-2657,-2761,-2866,-2975,-3079,-3191,-3305,-3419,-3540,-3665,-3790,-3919,-4049,-4185, -4326,-4471,-4621,-4775,-4926,-5079,-5233,-5388,-5547,-5706,-5871,-6041,-6212,-6382,-6552,-6720,-6888,-7058,-7226,-7397, -7556,-7714,-7860,-8000,-8133,-8255,-8372,-8478,-8569,-8648,-8695,-8720,-8716,-8681,-8613,-8511,-8367,-8174,-7922,-7615, -7246,-6808,-6301,-5727,-5078,-4355,-3563,-2705,-1798,-851,112,1081,2029,2949,3817,4629,5368,6034,6625,7139, 7577,7936,8222,8435,8578,8655,8676,8642,8565,8453,8310,8141,7949,7743,7520,7294,7068,6841,6616,6391, 6166,5938,5713,5489,5269,5054,4847,4644,4446,4246,4054,3862,3677,3497,3327,3157,2995,2832,2672,2514, 2358,2207,2061,1922,1784,1650,1512,1379,1245,1112,986,862,744,620,500,379,260,137,20,-93, -206,-321,-432,-549,-665,-782,-900,-1014,-1128,-1239,-1354,-1467,-1583,-1703,-1823,-1943,-2061,-2182,-2307,-2431, -2561,-2694,-2829,-2966,-3099,-3235,-3371,-3511,-3653,-3796,-3950,-4100,-4252,-4402,-4555,-4709,-4864,-5022,-5181,-5341, -5503,-5657,-5810,-5961,-6109,-6260,-6410,-6555,-6699,-6830,-6949,-7056,-7149,-7224,-7283,-7324,-7339,-7322,-7270,-7184, -7053,-6878,-6653,-6376,-6031,-5619,-5130,-4566,-3924,-3208,-2426,-1591,-704,220,1164,2112,3048,3953,4824,5642, 6407,7106,7734,8284,8751,9137,9445,9680,9841,9939,9979,9963,9902,9801,9668,9512,9336,9150,8948,8738, 8514,8279,8043,7806,7565,7332,7098,6871,6641,6409,6185,5963,5746,5535,5331,5131,4934,4736,4546,4364, 4182,4014,3848,3692,3538,3389,3242,3103,2959,2823,2697,2568,2446,2322,2203,2086,1976,1866,1765,1666, 1574,1479,1388,1299,1207,1117,1032,945,861,778,694,614,536,456,379,306,234,164,93,19, -51,-124,-201,-275,-347,-420,-493,-566,-639,-713,-783,-853,-924,-990,-1061,-1133,-1205,-1282,-1360,-1440, -1523,-1602,-1684,-1768,-1850,-1935,-2025,-2110,-2200,-2288,-2384,-2477,-2574,-2677,-2784,-2892,-3004,-3118,-3233,-3348, -3466,-3585,-3708,-3834,-3965,-4096,-4231,-4367,-4506,-4650,-4802,-4957,-5112,-5272,-5429,-5589,-5749,-5910,-6071,-6239, -6406,-6574,-6742,-6909,-7072,-7235,-7388,-7546,-7698,-7843,-7981,-8106,-8218,-8313,-8396,-8471,-8523,-8560,-8571,-8552, -8501,-8405,-8271,-8090,-7862,-7578,-7234,-6823,-6346,-5800,-5183,-4505,-3765,-2968,-2117,-1224,-304,633,1577,2492, 3376,4205,4976,5682,6306,6851,7318,7700,8009,8247,8416,8529,8580,8583,8537,8450,8331,8187,8022,7838, 7637,7425,7202,6974,6741,6513,6287,6065,5848,5629,5415,5204,4992,4789,4588,4397,4205,4017,3835,3655, 3478,3305,3136,2974,2819,2662,2513,2361,2213,2068,1926,1787,1655,1523,1394,1267,1140,1010,885,761, 642,523,407,290,172,52,-64,-181,-293,-404,-514,-626,-739,-851,-966,-1082,-1195,-1308,-1422,-1537, -1650,-1770,-1888,-2012,-2136,-2257,-2384,-2509,-2638,-2768,-2906,-3043,-3186,-3327,-3470,-3610,-3753,-3902,-4051,-4206, -4364,-4520,-4677,-4836,-4992,-5152,-5319,-5480,-5646,-5806,-5966,-6121,-6269,-6416,-6563,-6704,-6844,-6973,-7095,-7205, -7294,-7366,-7418,-7446,-7446,-7412,-7340,-7225,-7061,-6841,-6566,-6231,-5829,-5359,-4808,-4185,-3485,-2712,-1872,-975, -25,957,1956,2947,3913,4835,5706,6508,7245,7900,8480,8971,9379,9704,9947,10115,10222,10264,10254,10199, 10101,9966,9805,9620,9414,9202,8980,8753,8515,8276,8029,7782,7534,7290,7048,6815,6582,6350,6128,5901, 5682,5472,5263,5067,4870,4682,4494,4313,4129,3958,3790,3630,3477,3330,3186,3047,2909,2776,2650,2523, 2403,2285,2172,2059,1946,1837,1732,1632,1538,1445,1358,1271,1183,1096,1010,931,846,764,686,604, 526,445,368,291,219,144,76,8,-62,-132,-203,-275,-348,-423,-497,-569,-643,-716,-788,-862, -932,-1005,-1072,-1143,-1214,-1285,-1362,-1439,-1519,-1602,-1685,-1768,-1851,-1942,-2029,-2118,-2208,-2302,-2394,-2490, -2584,-2684,-2789,-2894,-3005,-3122,-3239,-3359,-3480,-3604,-3729,-3856,-3987,-4125,-4261,-4401,-4538,-4684,-4836,-4988, -5148,-5312,-5476,-5644,-5811,-5976,-6144,-6311,-6484,-6656,-6831,-7003,-7172,-7338,-7503,-7664,-7824,-7979,-8127,-8269, -8394,-8502,-8601,-8681,-8743,-8795,-8817,-8818,-8784,-8709,-8594,-8433,-8219,-7953,-7622,-7223,-6751,-6204,-5582,-4892, -4130,-3310,-2439,-1525,-578,389,1359,2315,3239,4115,4931,5680,6348,6933,7433,7845,8170,8419,8593,8703, 8748,8745,8694,8604,8478,8327,8152,7960,7753,7536,7309,7077,6837,6598,6358,6124,5895,5670,5449,5233, 5017,4806,4599,4398,4201,4013,3827,3645,3462,3288,3113,2946,2784,2626,2473,2324,2175,2029,1884,1746, 1608,1474,1346,1219,1095,968,843,720,598,479,362,248,133,17,-99,-217,-331,-445,-556,-665, -771,-885,-995,-1107,-1223,-1337,-1450,-1562,-1675,-1792,-1908,-2030,-2151,-2273,-2397,-2522,-2645,-2770,-2901,-3035, -3173,-3312,-3453,-3594,-3733,-3876,-4021,-4168,-4321,-4475,-4632,-4787,-4943,-5097,-5257,-5415,-5579,-5740,-5903,-6061, -6212,-6361,-6506,-6644,-6782,-6915,-7042,-7158,-7262,-7346,-7418,-7463,-7490,-7484,-7450,-7373,-7255,-7082,-6860,-6576, -6234,-5829,-5355,-4810,-4190,-3495,-2733,-1907,-1026,-97,865,1839,2812,3763,4675,5531,6328,7054,7705,8274, 8765,9171,9497,9743,9921,10031,10082,10083,10038,9953,9832,9678,9501,9308,9100,8883,8659,8430,8197,7957, 7714,7473,7233,6996,6761,6531,6306,6081,5860,5649,5438,5234,5038,4846,4663,4479,4298,4123,3952,3786, 3626,3476,3328,3188,3049,2914,2786,2661,2536,2417,2305,2192,2082,1972,1866,1760,1662,1564,1473,1386, 1299,1216,1131,1051,968,887,811,733,656,579,499,424,349,274,204,135,66,0,-70,-138, -208,-282,-351,-419,-490,-563,-635,-709,-781,-852,-924,-992,-1060,-1130,-1202,-1277,-1352,-1431,-1514,-1592, -1677,-1761,-1847,-1934,-2027,-2118,-2210,-2304,-2395,-2492,-2588,-2689,-2797,-2904,-3022,-3138,-3254,-3376,-3499,-3624, -3754,-3885,-4023,-4160,-4298,-4439,-4584,-4729,-4881,-5041,-5203,-5367,-5534,-5703,-5870,-6036,-6204,-6373,-6546,-6719, -6888,-7055,-7220,-7378,-7537,-7693,-7844,-7988,-8124,-8243,-8350,-8442,-8514,-8570,-8608,-8625,-8617,-8571,-8497,-8376, -8209,-7996,-7721,-7390,-6988,-6516,-5970,-5349,-4657,-3902,-3088,-2229,-1331,-405,541,1483,2411,3307,4158,4952, 5682,6336,6915,7403,7816,8140,8382,8553,8658,8706,8698,8647,8555,8428,8275,8104,7913,7712,7500,7275, 7047,6812,6575,6338,6101,5873,5647,5428,5211,4997,4784,4579,4377,4181,3993,3806,3624,3445,3269,3093, 2923,2758,2600,2445,2291,2145,1993,1848,1701,1561,1427,1293,1163,1030,906,777,650,525,401,282, 162,43,-77,-197,-317,-437,-555,-671,-785,-897,-1012,-1128,-1244,-1361,-1479,-1596,-1714,-1832,-1954,-2073, -2198,-2327,-2457,-2585,-2714,-2844,-2976,-3111,-3251,-3391,-3537,-3681,-3827,-3975,-4121,-4270,-4420,-4574,-4728,-4889, -5043,-5199,-5356,-5513,-5669,-5827,-5989,-6143,-6293,-6439,-6578,-6707,-6832,-6948,-7057,-7158,-7243,-7309,-7363,-7385, -7387,-7355,-7291,-7182,-7026,-6815,-6548,-6211,-5813,-5347,-4813,-4213,-3544,-2811,-2028,-1186,-303,611,1546,2482, 3407,4302,5153,5949,6677,7332,7907,8400,8815,9154,9412,9600,9722,9779,9791,9754,9681,9578,9444,9283, 9104,8907,8696,8478,8255,8032,7800,7568,7336,7101,6865,6636,6405,6180,5964,5748,5536,5324,5118,4921, 4726,4542,4363,4186,4018,3848,3684,3521,3363,3212,3064,2924,2787,2656,2528,2402,2281,2165,2057,1946, 1840,1736,1632,1529,1429,1332,1239,1149,1059,976,892,811,730,649,574,497,422,348,272,194, 116,37,-36,-109,-181,-250,-320,-390,-459,-530,-600,-668,-740,-810,-881,-954,-1029,-1105,-1176,-1250, -1324,-1397,-1469,-1545,-1618,-1698,-1779,-1859,-1943,-2027,-2117,-2206,-2297,-2396,-2491,-2589,-2688,-2787,-2888,-2995, -3094,-3207,-3320,-3438,-3559,-3684,-3810,-3937,-4070,-4205,-4342,-4486,-4627,-4772,-4918,-5066,-5214,-5368,-5526,-5685, -5848,-6016,-6179,-6344,-6507,-6672,-6838,-7000,-7162,-7318,-7471,-7615,-7754,-7887,-8017,-8136,-8246,-8341,-8421,-8480, -8508,-8522,-8507,-8465,-8389,-8278,-8128,-7928,-7676,-7367,-6994,-6559,-6055,-5475,-4827,-4109,-3327,-2493,-1616,-712, 207,1124,2025,2899,3732,4514,5236,5893,6479,6998,7441,7804,8096,8311,8459,8539,8565,8539,8473,8374, 8245,8088,7913,7725,7523,7317,7109,6894,6680,6459,6234,6010,5789,5570,5359,5149,4945,4746,4547,4352, 4160,3976,3794,3621,3450,3287,3120,2958,2798,2640,2486,2340,2195,2055,1916,1780,1640,1506,1375,1247, 1120,1000,876,756,634,512,393,274,159,45,-71,-185,-304,-422,-539,-654,-769,-880,-992,-1104, -1217,-1337,-1453,-1571,-1691,-1810,-1929,-2054,-2178,-2310,-2438,-2572,-2705,-2839,-2973,-3109,-3248,-3391,-3538,-3687, -3836,-3990,-4141,-4295,-4449,-4607,-4765,-4925,-5088,-5249,-5411,-5565,-5726,-5887,-6048,-6206,-6362,-6512,-6653,-6787, -6909,-7019,-7120,-7206,-7276,-7327,-7357,-7356,-7327,-7262,-7155,-7004,-6797,-6532,-6200,-5795,-5311,-4755,-4122,-3422, -2658,-1838,-964,-47,900,1865,2826,3769,4684,5555,6368,7118,7791,8380,8887,9303,9639,9896,10075,10185, 10235,10232,10177,10083,9960,9811,9640,9451,9248,9029,8801,8563,8323,8083,7838,7604,7365,7125,6888,6652, 6418,6193,5970,5752,5540,5330,5126,4925,4732,4545,4369,4193,4031,3866,3706,3549,3393,3246,3100,2960, 2823,2694,2568,2443,2323,2208,2098,1991,1888,1788,1689,1591,1494,1397,1303,1213,1122,1037,953,875, 790,711,634,560,484,410,336,263,187,113,37,-40,-113,-188,-259,-330,-400,-474,-544,-614, -687,-755,-827,-896,-970,-1049,-1123,-1201,-1279,-1357,-1436,-1512,-1591,-1672,-1754,-1837,-1924,-2009,-2100,-2193, -2286,-2385,-2485,-2587,-2692,-2801,-2908,-3017,-3125,-3238,-3354,-3475,-3598,-3727,-3854,-3988,-4124,-4264,-4407,-4556, -4705,-4861,-5015,-5169,-5325,-5485,-5645,-5809,-5978,-6149,-6324,-6495,-6670,-6838,-7013,-7181,-7348,-7516,-7677,-7833, -7980,-8118,-8257,-8375,-8488,-8591,-8676,-8739,-8785,-8801,-8789,-8741,-8660,-8545,-8387,-8176,-7916,-7592,-7207,-6752, -6225,-5626,-4957,-4212,-3400,-2532,-1615,-667,297,1259,2197,3103,3959,4754,5482,6138,6720,7228,7655,8008, 8285,8490,8622,8689,8698,8659,8577,8459,8310,8138,7948,7737,7521,7299,7074,6849,6625,6396,6172,5945, 5720,5497,5279,5064,4855,4654,4454,4258,4063,3876,3694,3515,3344,3177,3011,2852,2692,2536,2381,2233, 2089,1951,1811,1677,1541,1405,1277,1144,1020,898,779,658,536,419,301,184,69,-43,-157,-270, -383,-497,-610,-723,-840,-949,-1062,-1171,-1281,-1397,-1508,-1625,-1742,-1860,-1978,-2095,-2216,-2344,-2469,-2599, -2732,-2864,-2996,-3131,-3265,-3406,-3546,-3692,-3840,-3988,-4140,-4294,-4442,-4597,-4754,-4910,-5070,-5232,-5390,-5549, -5705,-5863,-6020,-6177,-6334,-6489,-6636,-6777,-6909,-7031,-7143,-7243,-7327,-7398,-7447,-7474,-7472,-7440,-7375,-7272, -7121,-6923,-6666,-6339,-5946,-5473,-4928,-4305,-3606,-2843,-2020,-1145,-230,716,1674,2631,3571,4480,5345,6159, 6908,7586,8183,8694,9125,9470,9735,9927,10049,10108,10110,10063,9980,9863,9717,9550,9369,9169,8952,8729, 8498,8260,8022,7786,7549,7314,7078,6844,6610,6383,6157,5936,5722,5511,5303,5097,4901,4708,4521,4341, 4170,4002,3842,3682,3529,3377,3230,3086,2948,2813,2684,2556,2433,2311,2198,2084,1979,1878,1778,1679, 1583,1488,1395,1301,1213,1122,1037,953,870,788,709,629,552,480,406,332,260,186,112,34, -40,-113,-187,-260,-334,-405,-476,-548,-619,-688,-758,-828,-898,-971,-1043,-1118,-1197,-1276,-1353,-1432, -1510,-1590,-1671,-1752,-1836,-1921,-2007,-2094,-2186,-2279,-2371,-2470,-2575,-2681,-2786,-2895,-3005,-3115,-3227,-3340, -3461,-3583,-3708,-3835,-3967,-4100,-4239,-4381,-4526,-4677,-4829,-4984,-5140,-5293,-5453,-5613,-5774,-5938,-6109,-6276, -6446,-6618,-6788,-6958,-7125,-7293,-7458,-7619,-7773,-7919,-8058,-8187,-8305,-8418,-8517,-8601,-8668,-8712,-8732,-8721, -8676,-8599,-8484,-8324,-8121,-7861,-7544,-7160,-6712,-6195,-5608,-4950,-4221,-3424,-2569,-1667,-731,227,1182,2123, 3028,3886,4683,5413,6072,6658,7163,7596,7955,8235,8447,8590,8669,8693,8660,8586,8479,8338,8171,7986, 7779,7565,7342,7118,6890,6665,6441,6216,5988,5765,5543,5321,5108,4900,4694,4491,4294,4098,3908,3721, 3542,3366,3196,3032,2865,2707,2546,2389,2238,2090,1946,1805,1667,1528,1394,1255,1123,994,865,742, 618,495,373,249,128,9,-110,-226,-345,-460,-577,-695,-815,-931,-1051,-1166,-1283,-1396,-1513,-1629, -1754,-1874,-1998,-2119,-2243,-2371,-2496,-2627,-2761,-2896,-3034,-3170,-3308,-3446,-3589,-3731,-3881,-4027,-4180,-4331, -4484,-4639,-4794,-4946,-5105,-5262,-5422,-5576,-5730,-5884,-6033,-6181,-6327,-6468,-6607,-6742,-6866,-6980,-7081,-7165, -7229,-7279,-7302,-7303,-7270,-7207,-7104,-6959,-6763,-6526,-6224,-5865,-5433,-4932,-4356,-3705,-2989,-2209,-1376,-497, 412,1338,2265,3179,4065,4909,5705,6443,7119,7724,8255,8709,9082,9378,9603,9761,9854,9893,9877,9822, 9726,9599,9446,9278,9093,8899,8689,8473,8247,8019,7784,7555,7323,7094,6867,6639,6418,6197,5976,5765, 5557,5355,5155,4959,4770,4579,4398,4218,4050,3885,3727,3573,3424,3279,3134,2996,2859,2729,2600,2474, 2355,2236,2120,2006,1897,1793,1694,1599,1504,1412,1320,1230,1142,1053,968,883,798,716,636,553, 476,399,326,254,182,108,39,-39,-112,-187,-261,-336,-411,-484,-556,-631,-704,-775,-847,-920, -990,-1063,-1133,-1209,-1286,-1366,-1447,-1530,-1610,-1692,-1776,-1860,-1948,-2037,-2124,-2215,-2308,-2402,-2496,-2594, -2699,-2805,-2916,-3027,-3141,-3256,-3374,-3491,-3611,-3736,-3863,-3993,-4127,-4261,-4399,-4541,-4686,-4836,-4991,-5147, -5304,-5465,-5627,-5782,-5946,-6107,-6271,-6435,-6604,-6768,-6932,-7092,-7252,-7408,-7560,-7710,-7851,-7982,-8105,-8213, -8309,-8393,-8457,-8512,-8543,-8549,-8532,-8476,-8385,-8251,-8076,-7848,-7567,-7230,-6831,-6368,-5832,-5235,-4571,-3847, -3067,-2237,-1369,-464,452,1373,2277,3150,3973,4742,5441,6072,6627,7101,7498,7824,8077,8266,8392,8461, 8478,8450,8381,8278,8144,7986,7812,7620,7417,7203,6979,6756,6530,6307,6088,5869,5655,5440,5230,5021, 4815,4617,4421,4227,4041,3857,3675,3497,3321,3151,2987,2824,2669,2514,2361,2213,2065,1918,1779,1639, 1504,1374,1242,1113,984,856,727,604,484,362,243,122,4,-116,-234,-351,-468,-581,-695,-811, -927,-1044,-1161,-1279,-1397,-1514,-1630,-1749,-1871,-1992,-2121,-2245,-2371,-2500,-2629,-2761,-2894,-3031,-3173,-3315, -3460,-3602,-3746,-3894,-4042,-4191,-4346,-4501,-4659,-4818,-4974,-5131,-5293,-5451,-5610,-5771,-5931,-6086,-6236,-6382, -6524,-6658,-6791,-6921,-7039,-7147,-7238,-7311,-7367,-7394,-7399,-7368,-7307,-7200,-7047,-6842,-6581,-6261,-5880,-5431, -4914,-4322,-3662,-2928,-2134,-1281,-378,563,1530,2497,3447,4366,5236,6047,6795,7470,8066,8584,9024,9381, 9664,9867,10006,10084,10100,10074,10005,9900,9764,9599,9412,9216,9004,8785,8560,8331,8097,7856,7617,7378, 7139,6904,6672,6446,6222,6000,5784,5570,5363,5159,4964,4773,4585,4404,4220,4048,3874,3712,3552,3400, 3254,3112,2971,2837,2705,2577,2457,2334,2216,2104,1988,1882,1773,1668,1571,1472,1380,1291,1206,1116, 1032,948,865,782,700,621,541,461,382,304,231,156,85,14,-56,-128,-196,-270,-341,-417, -489,-563,-633,-709,-780,-853,-926,-997,-1071,-1140,-1211,-1283,-1359,-1433,-1514,-1596,-1679,-1764,-1847,-1934, -2021,-2109,-2199,-2293,-2387,-2482,-2574,-2675,-2775,-2878,-2990,-3103,-3221,-3337,-3457,-3578,-3704,-3830,-3960,-4093, -4228,-4365,-4508,-4648,-4793,-4940,-5096,-5255,-5417,-5581,-5748,-5910,-6079,-6243,-6407,-6576,-6744,-6913,-7081,-7242, -7405,-7560,-7715,-7861,-8004,-8138,-8262,-8375,-8467,-8549,-8608,-8652,-8670,-8669,-8640,-8571,-8470,-8323,-8121,-7871, -7559,-7190,-6748,-6240,-5658,-5008,-4291,-3515,-2685,-1816,-911,18,953,1882,2788,3654,4472,5225,5911,6523, 7056,7503,7873,8161,8376,8524,8612,8644,8625,8569,8471,8346,8193,8021,7832,7633,7422,7201,6975,6746, 6516,6284,6058,5836,5617,5403,5189,4983,4777,4576,4376,4185,3999,3817,3638,3462,3287,3118,2952,2790, 2637,2484,2334,2189,2043,1898,1761,1621,1490,1359,1232,1105,980,853,731,606,484,367,250,135, 17,-99,-218,-335,-451,-565,-677,-789,-901,-1012,-1125,-1245,-1360,-1475,-1591,-1705,-1826,-1945,-2069,-2191, -2319,-2447,-2574,-2704,-2833,-2966,-3103,-3245,-3387,-3532,-3677,-3822,-3966,-4114,-4266,-4419,-4575,-4734,-4894,-5051, -5211,-5369,-5530,-5690,-5850,-6012,-6167,-6315,-6461,-6604,-6736,-6867,-6989,-7104,-7206,-7293,-7363,-7411,-7433,-7429, -7395,-7320,-7203,-7033,-6814,-6532,-6190,-5782,-5311,-4771,-4156,-3469,-2721,-1907,-1041,-129,818,1785,2749,3697, 4607,5474,6273,7008,7664,8243,8739,9158,9494,9752,9941,10058,10119,10126,10087,10010,9898,9755,9587,9397, 9195,8979,8754,8527,8296,8059,7820,7579,7338,7099,6863,6632,6405,6180,5959,5747,5532,5322,5126,4931, 4740,4555,4376,4198,4025,3856,3690,3532,3383,3235,3090,2955,2822,2693,2564,2441,2327,2211,2096,1986, 1879,1770,1668,1564,1469,1377,1286,1199,1114,1028,944,861,780,705,621,542,465,385,308,230, 155,82,10,-63,-131,-204,-275,-348,-421,-494,-569,-639,-714,-787,-862,-938,-1014,-1085,-1160,-1230, -1305,-1379,-1455,-1537,-1620,-1702,-1786,-1876,-1962,-2052,-2144,-2236,-2333,-2429,-2524,-2626,-2726,-2825,-2932,-3042, -3154,-3274,-3394,-3517,-3642,-3770,-3898,-4029,-4170,-4306,-4448,-4589,-4736,-4883,-5034,-5189,-5349,-5511,-5676,-5845, -6013,-6179,-6350,-6518,-6687,-6857,-7026,-7192,-7358,-7516,-7674,-7824,-7975,-8115,-8248,-8370,-8481,-8573,-8648,-8706, -8743,-8757,-8746,-8708,-8637,-8525,-8368,-8158,-7898,-7577,-7192,-6736,-6209,-5614,-4941,-4205,-3407,-2564,-1677,-759, 174,1108,2035,2933,3790,4592,5336,6010,6611,7128,7571,7923,8204,8406,8537,8611,8628,8597,8528,8420, 8285,8124,7945,7753,7550,7336,7115,6891,6661,6430,6198,5970,5746,5527,5310,5100,4892,4688,4483,4287, 4097,3910,3730,3552,3374,3204,3034,2868,2706,2551,2394,2247,2100,1956,1812,1672,1533,1401,1267,1138, 1013,886,759,633,509,389,269,148,31,-86,-204,-324,-442,-558,-673,-788,-899,-1014,-1127,-1245, -1361,-1476,-1596,-1716,-1830,-1954,-2073,-2201,-2327,-2456,-2586,-2716,-2843,-2979,-3113,-3250,-3394,-3536,-3681,-3827, -3972,-4122,-4268,-4422,-4576,-4730,-4885,-5041,-5197,-5354,-5506,-5664,-5821,-5975,-6128,-6278,-6418,-6551,-6680,-6798, -6910,-7015,-7104,-7183,-7245,-7279,-7292,-7281,-7233,-7151,-7026,-6849,-6620,-6329,-5975,-5552,-5069,-4515,-3896,-3209, -2466,-1667,-816,69,982,1911,2837,3747,4624,5455,6231,6941,7576,8133,8613,9011,9337,9584,9762,9877, 9933,9939,9900,9827,9724,9588,9434,9255,9058,8852,8638,8417,8193,7967,7738,7508,7275,7043,6814,6586, 6364,6143,5931,5720,5510,5306,5106,4916,4730,4549,4375,4203,4036,3869,3709,3548,3398,3251,3106,2973, 2837,2708,2580,2460,2340,2228,2117,2012,1904,1800,1694,1592,1497,1399,1307,1217,1131,1047,963,877, 797,720,639,563,486,409,327,250,173,97,16,-53,-128,-198,-270,-343,-418,-490,-561,-634, -707,-781,-855,-933,-1010,-1085,-1163,-1237,-1312,-1389,-1466,-1547,-1628,-1712,-1794,-1886,-1971,-2061,-2153,-2252, -2344,-2445,-2547,-2648,-2752,-2855,-2960,-3071,-3184,-3299,-3419,-3543,-3670,-3796,-3929,-4063,-4199,-4340,-4483,-4630, -4777,-4924,-5072,-5225,-5381,-5541,-5703,-5866,-6036,-6204,-6371,-6536,-6702,-6866,-7032,-7194,-7354,-7508,-7657,-7798, -7938,-8067,-8188,-8297,-8399,-8481,-8544,-8586,-8606,-8596,-8564,-8498,-8400,-8258,-8075,-7839,-7551,-7199,-6786,-6304, -5756,-5133,-4447,-3693,-2887,-2035,-1151,-245,663,1563,2442,3286,4082,4823,5505,6117,6662,7135,7534,7853, 8103,8279,8388,8440,8441,8394,8313,8200,8057,7895,7713,7522,7318,7109,6899,6682,6462,6240,6014,5791, 5570,5355,5143,4935,4731,4530,4334,4138,3953,3768,3589,3416,3245,3074,2908,2744,2583,2423,2274,2125, 1981,1838,1695,1554,1416,1280,1145,1016,891,764,640,514,390,268,144,23,-95,-213,-335,-455, -574,-693,-815,-928,-1045,-1161,-1275,-1394,-1511,-1630,-1754,-1874,-1995,-2118,-2245,-2373,-2502,-2632,-2768,-2902, -3037,-3175,-3311,-3452,-3595,-3742,-3890,-4040,-4191,-4345,-4497,-4652,-4806,-4963,-5120,-5281,-5437,-5595,-5752,-5908, -6061,-6212,-6361,-6512,-6652,-6786,-6903,-7018,-7114,-7200,-7270,-7325,-7355,-7365,-7343,-7290,-7201,-7066,-6885,-6652, -6357,-5996,-5564,-5057,-4480,-3837,-3124,-2355,-1535,-669,229,1156,2087,3012,3916,4785,5609,6378,7081,7715, 8269,8736,9130,9443,9677,9846,9946,9990,9980,9929,9840,9723,9578,9415,9236,9041,8831,8611,8385,8155, 7923,7692,7459,7231,7001,6770,6544,6318,6097,5882,5671,5462,5262,5061,4867,4675,4494,4315,4150,3983, 3822,3664,3509,3359,3209,3066,2929,2796,2665,2539,2414,2297,2183,2074,1965,1862,1764,1664,1567,1472, 1375,1282,1191,1104,1018,935,852,771,694,612,538,464,390,317,242,168,94,19,-58,-131, -206,-275,-349,-420,-492,-560,-634,-703,-776,-846,-915,-990,-1065,-1141,-1221,-1296,-1373,-1450,-1530,-1611, -1691,-1771,-1859,-1948,-2032,-2124,-2211,-2308,-2403,-2504,-2604,-2711,-2817,-2923,-3032,-3144,-3256,-3373,-3490,-3616, -3741,-3870,-4002,-4137,-4277,-4418,-4562,-4712,-4862,-5014,-5166,-5321,-5478,-5639,-5797,-5964,-6129,-6297,-6463,-6629, -6797,-6957,-7119,-7280,-7435,-7586,-7731,-7870,-7997,-8116,-8222,-8320,-8403,-8471,-8519,-8543,-8538,-8506,-8435,-8332, -8190,-8003,-7767,-7477,-7130,-6716,-6238,-5693,-5077,-4394,-3647,-2839,-1982,-1088,-166,763,1682,2576,3435,4238, 4989,5669,6283,6826,7291,7687,8015,8266,8451,8570,8632,8636,8594,8512,8400,8255,8092,7906,7706,7500, 7286,7065,6849,6628,6408,6187,5968,5748,5530,5315,5106,4899,4699,4499,4305,4117,3930,3747,3569,3395, 3228,3061,2900,2741,2583,2428,2277,2129,1985,1844,1704,1567,1431,1297,1164,1036,909,786,660,537, 414,293,169,52,-71,-188,-302,-424,-539,-658,-776,-895,-1011,-1127,-1242,-1361,-1474,-1596,-1718,-1839, -1963,-2086,-2212,-2340,-2470,-2602,-2738,-2873,-3012,-3152,-3292,-3435,-3575,-3723,-3872,-4021,-4178,-4334,-4487,-4644, -4803,-4958,-5119,-5282,-5444,-5605,-5764,-5922,-6078,-6233,-6384,-6537,-6681,-6821,-6951,-7073,-7182,-7273,-7353,-7411, -7451,-7462,-7450,-7406,-7322,-7198,-7025,-6803,-6521,-6176,-5763,-5270,-4705,-4066,-3355,-2582,-1752,-876,45,986, 1940,2883,3804,4689,5529,6314,7032,7681,8250,8739,9151,9478,9725,9904,10013,10066,10061,10012,9923,9803, 9656,9487,9301,9102,8891,8670,8441,8206,7967,7729,7493,7257,7023,6791,6561,6333,6106,5887,5669,5462, 5253,5049,4851,4659,4469,4289,4113,3943,3780,3622,3465,3316,3168,3022,2883,2746,2615,2486,2361,2238, 2121,2006,1898,1791,1690,1590,1494,1399,1304,1209,1119,1028,940,854,767,686,607,523,447,368, 293,220,144,69,-3,-78,-156,-229,-306,-380,-453,-527,-597,-671,-743,-817,-890,-959,-1030,-1103, -1173,-1248,-1326,-1404,-1485,-1564,-1646,-1727,-1808,-1891,-1976,-2061,-2150,-2239,-2328,-2421,-2517,-2614,-2716,-2821, -2928,-3039,-3151,-3261,-3376,-3489,-3611,-3732,-3854,-3985,-4117,-4252,-4387,-4528,-4672,-4824,-4972,-5125,-5284,-5440, -5600,-5757,-5919,-6083,-6251,-6417,-6587,-6756,-6924,-7093,-7259,-7423,-7584,-7739,-7891,-8035,-8174,-8303,-8417,-8523, -8616,-8694,-8756,-8800,-8816,-8804,-8759,-8677,-8557,-8394,-8184,-7922,-7604,-7221,-6776,-6261,-5679,-5027,-4306,-3526, -2688,-1802,-876,66,1011,1944,2846,3704,4505,5240,5907,6498,7012,7454,7818,8112,8335,8491,8587,8625, 8609,8550,8456,8327,8172,7996,7803,7597,7380,7162,6936,6712,6489,6266,6047,5827,5607,5392,5178,4970, 4765,4562,4369,4176,3988,3803,3623,3447,3276,3111,2948,2788,2632,2477,2324,2177,2031,1889,1751,1615, 1482,1348,1215,1086,957,832,707,585,468,346,227,106,-13,-131,-247,-363,-476,-595,-711,-825, -943,-1056,-1173,-1285,-1400,-1516,-1634,-1752,-1876,-1997,-2121,-2247,-2370,-2497,-2628,-2759,-2897,-3032,-3172,-3311, -3449,-3592,-3736,-3880,-4028,-4180,-4335,-4487,-4640,-4792,-4950,-5103,-5261,-5414,-5574,-5726,-5876,-6022,-6166,-6310, -6450,-6584,-6711,-6832,-6939,-7031,-7108,-7167,-7202,-7218,-7204,-7160,-7082,-6961,-6796,-6584,-6318,-5994,-5605,-5150, -4625,-4025,-3352,-2620,-1822,-976,-89,824,1752,2679,3585,4460,5291,6070,6794,7450,8033,8544,8978,9331, 9611,9822,9963,10044,10070,10050,9987,9885,9755,9603,9431,9244,9045,8836,8617,8395,8161,7932,7699,7467, 7237,7010,6784,6561,6338,6120,5907,5698,5492,5290,5094,4904,4714,4530,4353,4181,4015,3853,3697,3545, 3396,3253,3112,2974,2839,2710,2583,2462,2339,2222,2107,1996,1891,1788,1688,1593,1499,1403,1311,1220, 1130,1042,950,868,783,700,619,537,457,380,301,228,151,76,2,-75,-154,-229,-310,-385, -462,-538,-616,-691,-767,-840,-915,-987,-1061,-1135,-1212,-1291,-1372,-1456,-1542,-1627,-1710,-1796,-1887,-1973, -2062,-2155,-2250,-2344,-2441,-2536,-2640,-2743,-2853,-2964,-3078,-3196,-3313,-3430,-3551,-3676,-3802,-3931,-4066,-4200, -4336,-4477,-4623,-4768,-4918,-5075,-5230,-5393,-5552,-5712,-5876,-6036,-6200,-6364,-6531,-6700,-6866,-7029,-7193,-7353, -7510,-7662,-7808,-7952,-8084,-8207,-8317,-8416,-8497,-8568,-8620,-8653,-8662,-8644,-8591,-8506,-8379,-8205,-7984,-7710, -7379,-6987,-6531,-6010,-5419,-4766,-4052,-3284,-2463,-1600,-703,209,1123,2026,2900,3728,4503,5215,5857,6422, 6913,7330,7668,7942,8143,8284,8369,8399,8382,8324,8228,8103,7953,7781,7594,7394,7183,6964,6739,6516, 6293,6070,5852,5636,5419,5207,4997,4787,4584,4385,4189,4001,3813,3626,3446,3268,3093,2925,2759,2601, 2445,2288,2137,1984,1835,1691,1547,1412,1276,1140,1008,874,744,615,485,362,240,115,-7,-130, -251,-373,-493,-614,-731,-846,-965,-1085,-1201,-1323,-1442,-1560,-1679,-1798,-1918,-2043,-2168,-2294,-2420,-2548, -2677,-2810,-2940,-3076,-3213,-3352,-3497,-3639,-3781,-3927,-4072,-4220,-4367,-4522,-4677,-4830,-4984,-5144,-5299,-5451, -5608,-5765,-5917,-6072,-6220,-6365,-6505,-6637,-6765,-6887,-7002,-7110,-7205,-7281,-7340,-7377,-7388,-7369,-7321,-7235, -7106,-6929,-6702,-6419,-6075,-5672,-5202,-4667,-4061,-3392,-2658,-1864,-1016,-131,788,1721,2652,3567,4444,5277, 6055,6766,7408,7979,8475,8891,9237,9505,9706,9840,9917,9937,9913,9853,9756,9627,9474,9303,9113,8912, 8704,8487,8268,8041,7814,7585,7353,7124,6896,6670,6451,6232,6018,5807,5598,5395,5197,5005,4817,4634, 4454,4277,4107,3938,3774,3617,3468,3321,3177,3043,2908,2777,2650,2525,2403,2288,2174,2060,1951,1842, 1741,1638,1540,1450,1358,1270,1186,1098,1014,929,845,762,683,603,524,444,365,288,215,142, 69,0,-74,-145,-217,-292,-366,-441,-513,-588,-663,-734,-806,-885,-957,-1029,-1099,-1176,-1245,-1322, -1400,-1479,-1561,-1645,-1731,-1818,-1904,-1991,-2080,-2172,-2265,-2361,-2456,-2553,-2651,-2753,-2860,-2969,-3081,-3199, -3315,-3437,-3562,-3684,-3811,-3942,-4076,-4209,-4347,-4488,-4631,-4777,-4925,-5079,-5237,-5395,-5557,-5719,-5884,-6045, -6206,-6370,-6532,-6698,-6859,-7019,-7178,-7334,-7484,-7628,-7765,-7901,-8023,-8135,-8234,-8316,-8383,-8432,-8458,-8463, -8446,-8395,-8312,-8189,-8021,-7804,-7536,-7207,-6819,-6364,-5844,-5258,-4601,-3889,-3117,-2302,-1448,-566,337,1237, 2131,2999,3828,4606,5323,5977,6561,7065,7494,7848,8127,8333,8476,8561,8594,8578,8523,8434,8314,8168, 8001,7819,7626,7420,7204,6988,6764,6539,6314,6089,5873,5655,5443,5234,5030,4826,4624,4427,4237,4050, 3865,3685,3511,3336,3163,2996,2832,2675,2518,2368,2218,2073,1925,1781,1642,1504,1370,1237,1107,977, 849,718,592,466,343,221,100,-23,-144,-267,-389,-509,-629,-746,-862,-980,-1099,-1217,-1339,-1460, -1581,-1704,-1823,-1949,-2077,-2205,-2334,-2464,-2597,-2733,-2868,-3005,-3145,-3285,-3429,-3578,-3726,-3876,-4025,-4177, -4328,-4483,-4642,-4799,-4960,-5122,-5281,-5439,-5601,-5758,-5920,-6078,-6230,-6380,-6526,-6662,-6794,-6913,-7033,-7136, -7231,-7310,-7374,-7412,-7426,-7409,-7360,-7274,-7142,-6956,-6724,-6425,-6065,-5640,-5149,-4589,-3961,-3271,-2519,-1709, -850,51,985,1930,2874,3795,4685,5522,6302,7013,7652,8209,8689,9091,9411,9660,9839,9951,10006,10008, 9969,9891,9777,9637,9476,9293,9093,8881,8660,8434,8206,7974,7739,7505,7269,7032,6797,6564,6339,6115, 5898,5684,5471,5264,5064,4867,4677,4492,4310,4135,3963,3793,3625,3466,3312,3162,3018,2879,2743,2610, 2483,2357,2237,2120,2007,1897,1787,1680,1575,1470,1370,1275,1178,1093,1004,917,833,748,665,584, 504,425,342,267,183,106,30,-46,-118,-192,-265,-336,-409,-481,-557,-630,-702,-777,-851,-926, -998,-1077,-1149,-1224,-1300,-1376,-1449,-1525,-1600,-1680,-1759,-1841,-1927,-2014,-2100,-2189,-2280,-2375,-2468,-2565, -2661,-2764,-2862,-2965,-3071,-3177,-3288,-3404,-3520,-3643,-3766,-3893,-4021,-4151,-4290,-4424,-4562,-4707,-4851,-4998, -5145,-5298,-5452,-5612,-5773,-5940,-6106,-6269,-6438,-6601,-6767,-6931,-7095,-7256,-7422,-7576,-7727,-7878,-8020,-8154, -8282,-8396,-8505,-8596,-8667,-8723,-8753,-8764,-8750,-8703,-8626,-8513,-8356,-8151,-7893,-7576,-7195,-6749,-6235,-5651, -4995,-4275,-3496,-2668,-1796,-891,27,947,1858,2747,3592,4393,5134,5811,6416,6946,7403,7778,8079,8303, 8462,8551,8589,8574,8523,8431,8311,8163,7994,7812,7619,7411,7202,6985,6763,6537,6312,6089,5864,5650, 5433,5224,5017,4813,4615,4416,4226,4039,3854,3677,3502,3331,3162,2995,2834,2675,2520,2371,2221,2078, 1934,1792,1654,1517,1382,1253,1127,998,875,746,625,502,379,261,140,22,-92,-213,-329,-448, -566,-681,-795,-909,-1023,-1138,-1255,-1372,-1490,-1610,-1729,-1852,-1973,-2097,-2225,-2351,-2481,-2613,-2742,-2877, -3012,-3152,-3293,-3432,-3577,-3725,-3872,-4021,-4170,-4321,-4473,-4627,-4780,-4939,-5094,-5253,-5406,-5564,-5722,-5872, -6026,-6175,-6318,-6456,-6590,-6711,-6825,-6930,-7023,-7103,-7165,-7207,-7233,-7224,-7190,-7116,-7003,-6846,-6639,-6370, -6042,-5648,-5187,-4659,-4060,-3401,-2680,-1901,-1075,-206,690,1609,2531,3445,4330,5180,5978,6716,7385,7981, 8497,8937,9295,9580,9795,9944,10027,10061,10042,9987,9894,9775,9631,9464,9280,9081,8870,8652,8426,8201, 7973,7743,7512,7282,7050,6819,6595,6371,6151,5935,5726,5518,5314,5118,4928,4738,4558,4382,4214,4045, 3878,3720,3564,3413,3264,3119,2983,2848,2719,2592,2470,2351,2235,2126,2017,1911,1807,1701,1600,1501, 1403,1312,1219,1131,1042,958,873,791,706,629,548,470,389,309,233,151,74,-1,-79,-152, -228,-303,-377,-451,-526,-599,-676,-751,-825,-902,-980,-1055,-1138,-1215,-1293,-1370,-1452,-1533,-1612,-1697, -1782,-1871,-1956,-2051,-2144,-2240,-2335,-2435,-2537,-2639,-2744,-2852,-2959,-3067,-3182,-3298,-3415,-3540,-3662,-3792, -3922,-4059,-4193,-4335,-4476,-4623,-4769,-4918,-5070,-5225,-5382,-5538,-5698,-5863,-6030,-6198,-6364,-6535,-6703,-6868, -7034,-7197,-7357,-7515,-7672,-7820,-7962,-8098,-8224,-8345,-8449,-8543,-8622,-8681,-8718,-8727,-8717,-8674,-8598,-8487, -8338,-8140,-7894,-7589,-7226,-6796,-6301,-5735,-5106,-4405,-3646,-2833,-1976,-1084,-179,731,1630,2506,3345,4132, 4865,5538,6139,6672,7133,7521,7834,8072,8243,8350,8402,8394,8350,8264,8148,8004,7839,7660,7467,7262, 7052,6837,6622,6401,6179,5956,5738,5516,5302,5089,4881,4677,4476,4281,4087,3899,3715,3536,3358,3190, 3018,2853,2688,2527,2371,2219,2069,1920,1778,1634,1495,1356,1221,1087,956,827,696,571,448,321, 198,75,-45,-165,-285,-404,-524,-643,-762,-882,-1001,-1115,-1233,-1351,-1467,-1585,-1706,-1827,-1949,-2072, -2197,-2321,-2449,-2575,-2707,-2843,-2974,-3111,-3248,-3389,-3529,-3669,-3815,-3961,-4110,-4260,-4412,-4565,-4716,-4869, -5022,-5179,-5332,-5490,-5642,-5798,-5947,-6097,-6241,-6390,-6528,-6661,-6789,-6904,-7014,-7103,-7180,-7243,-7283,-7305, -7303,-7271,-7205,-7102,-6956,-6765,-6517,-6210,-5839,-5403,-4898,-4319,-3674,-2969,-2204,-1391,-536,350,1254,2168, 3073,3954,4799,5603,6352,7037,7656,8198,8662,9050,9359,9597,9767,9875,9925,9925,9884,9803,9690,9558, 9399,9228,9037,8839,8627,8409,8185,7959,7736,7508,7282,7055,6830,6611,6387,6169,5957,5747,5543,5344, 5145,4955,4766,4584,4408,4235,4072,3910,3753,3600,3449,3302,3157,3020,2885,2754,2626,2504,2384,2268, 2156,2048,1940,1839,1740,1639,1543,1446,1355,1258,1170,1082,997,913,830,747,669,590,512,434, 358,282,209,129,53,-21,-98,-173,-250,-321,-396,-471,-544,-617,-688,-762,-836,-910,-984,-1060, -1139,-1214,-1295,-1376,-1458,-1538,-1619,-1702,-1786,-1873,-1960,-2051,-2139,-2238,-2332,-2431,-2533,-2636,-2741,-2850, -2959,-3074,-3185,-3303,-3419,-3541,-3665,-3792,-3923,-4058,-4194,-4333,-4475,-4623,-4768,-4922,-5073,-5227,-5385,-5542, -5698,-5860,-6022,-6187,-6352,-6518,-6685,-6847,-7009,-7167,-7322,-7473,-7622,-7762,-7895,-8019,-8133,-8236,-8326,-8402, -8459,-8499,-8515,-8503,-8459,-8383,-8271,-8115,-7917,-7666,-7366,-7007,-6583,-6095,-5543,-4919,-4235,-3487,-2685,-1841, -955,-52,858,1759,2635,3473,4262,4990,5656,6256,6779,7235,7618,7931,8175,8353,8470,8528,8536,8495, 8419,8305,8167,8004,7828,7633,7429,7219,7003,6785,6568,6347,6129,5912,5693,5479,5266,5058,4853,4651, 4453,4261,4072,3885,3703,3523,3350,3180,3013,2851,2691,2533,2377,2224,2077,1929,1785,1645,1508,1370, 1237,1101,969,840,711,587,463,338,213,90,-31,-154,-277,-395,-513,-633,-753,-873,-993,-1113, -1231,-1352,-1470,-1589,-1712,-1832,-1957,-2084,-2212,-2342,-2469,-2601,-2736,-2870,-3008,-3148,-3289,-3432,-3576,-3720, -3869,-4019,-4168,-4321,-4477,-4636,-4792,-4949,-5107,-5264,-5421,-5581,-5739,-5897,-6051,-6201,-6351,-6496,-6637,-6772, -6903,-7024,-7133,-7226,-7304,-7362,-7402,-7415,-7403,-7360,-7278,-7160,-6993,-6776,-6502,-6173,-5775,-5310,-4770,-4158, -3479,-2735,-1935,-1081,-187,736,1675,2611,3528,4413,5253,6043,6769,7430,8017,8529,8960,9314,9588,9792, 9927,10003,10024,9999,9932,9827,9694,9538,9362,9170,8968,8756,8536,8308,8077,7844,7608,7375,7142,6911, 6685,6463,6235,6020,5800,5589,5381,5178,4984,4790,4604,4419,4242,4067,3902,3739,3581,3430,3282,3136, 2994,2858,2724,2595,2467,2345,2223,2109,1994,1884,1778,1674,1576,1481,1385,1290,1200,1109,1018,933, 843,763,680,595,518,438,359,280,206,133,56,-15,-90,-164,-239,-314,-390,-465,-537,-611, -688,-762,-835,-906,-980,-1053,-1128,-1201,-1277,-1353,-1429,-1509,-1594,-1675,-1758,-1840,-1925,-2010,-2099,-2188, -2279,-2372,-2466,-2562,-2662,-2762,-2870,-2975,-3086,-3198,-3313,-3427,-3548,-3669,-3791,-3917,-4046,-4178,-4317,-4453, -4595,-4740,-4886,-5040,-5193,-5350,-5508,-5667,-5828,-5990,-6151,-6316,-6481,-6648,-6814,-6980,-7145,-7307,-7463,-7619, -7768,-7914,-8051,-8177,-8297,-8402,-8491,-8572,-8632,-8676,-8699,-8694,-8658,-8590,-8482,-8331,-8137,-7891,-7590,-7229, -6807,-6318,-5759,-5132,-4444,-3688,-2882,-2026,-1131,-211,720,1644,2548,3415,4232,4986,5680,6298,6841,7306, 7698,8015,8261,8441,8560,8621,8629,8591,8515,8404,8264,8100,7917,7723,7514,7301,7081,6856,6633,6407, 6188,5970,5752,5536,5326,5117,4909,4708,4507,4315,4127,3940,3758,3578,3402,3231,3064,2901,2744,2587, 2433,2282,2136,1986,1844,1704,1568,1433,1300,1170,1039,908,780,658,533,411,290,171,48,-71, -189,-308,-425,-544,-661,-776,-894,-1012,-1131,-1247,-1366,-1484,-1602,-1722,-1843,-1968,-2094,-2220,-2348,-2478, -2609,-2741,-2874,-3012,-3151,-3295,-3435,-3580,-3725,-3869,-4019,-4168,-4319,-4477,-4633,-4788,-4945,-5101,-5256,-5413, -5571,-5727,-5882,-6033,-6180,-6326,-6464,-6597,-6726,-6849,-6963,-7060,-7146,-7215,-7260,-7282,-7281,-7252,-7184,-7079, -6932,-6736,-6484,-6179,-5811,-5381,-4882,-4311,-3673,-2971,-2201,-1383,-519,382,1304,2235,3153,4047,4903,5710, 6459,7142,7757,8298,8765,9152,9466,9706,9876,9984,10033,10034,9991,9910,9797,9654,9489,9307,9111,8905, 8691,8470,8242,8012,7779,7545,7312,7080,6852,6627,6403,6187,5968,5754,5547,5344,5146,4951,4759,4578, 4396,4220,4047,3881,3720,3564,3415,3268,3126,2988,2852,2719,2592,2468,2346,2228,2113,1998,1890,1783, 1680,1582,1485,1389,1298,1207,1118,1027,939,854,769,685,604,521,444,361,285,209,131,56, -18,-94,-166,-243,-318,-394,-471,-548,-621,-698,-773,-849,-925,-998,-1073,-1150,-1223,-1300,-1377,-1458, -1541,-1623,-1708,-1795,-1881,-1968,-2059,-2148,-2243,-2337,-2433,-2529,-2629,-2731,-2835,-2943,-3053,-3168,-3284,-3403, -3524,-3647,-3771,-3897,-4030,-4165,-4299,-4439,-4582,-4725,-4873,-5024,-5177,-5336,-5494,-5656,-5819,-5983,-6148,-6311, -6476,-6644,-6809,-6976,-7140,-7303,-7463,-7618,-7769,-7916,-8055,-8186,-8307,-8417,-8513,-8594,-8657,-8705,-8730,-8733, -8705,-8648,-8552,-8417,-8234,-8005,-7718,-7375,-6971,-6501,-5961,-5358,-4687,-3958,-3172,-2337,-1466,-569,345,1257, 2157,3022,3847,4616,5322,5960,6523,7014,7422,7761,8022,8217,8349,8422,8445,8421,8355,8254,8125,7970, 7797,7609,7405,7197,6980,6759,6532,6307,6084,5863,5643,5432,5218,5008,4802,4597,4400,4206,4014,3829, 3648,3467,3291,3118,2949,2785,2624,2466,2314,2162,2014,1865,1721,1580,1440,1304,1172,1039,908,779, 650,524,399,275,155,33,-86,-208,-329,-448,-567,-688,-803,-920,-1036,-1153,-1273,-1390,-1509,-1629, -1748,-1868,-1990,-2114,-2239,-2366,-2496,-2626,-2756,-2889,-3021,-3158,-3299,-3440,-3580,-3727,-3872,-4016,-4165,-4312, -4464,-4617,-4772,-4925,-5081,-5235,-5390,-5544,-5699,-5852,-6002,-6151,-6296,-6433,-6567,-6693,-6814,-6924,-7027,-7114, -7190,-7245,-7281,-7291,-7273,-7225,-7138,-7011,-6837,-6612,-6332,-5992,-5591,-5123,-4592,-3994,-3332,-2608,-1826,-999, -130,769,1681,2600,3497,4368,5196,5972,6687,7333,7906,8407,8829,9177,9454,9660,9799,9881,9909,9892, 9837,9743,9625,9478,9312,9128,8929,8722,8509,8290,8069,7842,7613,7385,7155,6929,6705,6483,6264,6052, 5839,5635,5431,5230,5036,4847,4665,4486,4311,4142,3972,3808,3651,3498,3349,3207,3065,2932,2800,2671, 2547,2426,2308,2195,2082,1974,1865,1763,1660,1561,1465,1373,1282,1192,1107,1020,934,851,768,687, 607,526,448,369,289,214,136,60,-13,-85,-159,-233,-309,-382,-456,-532,-606,-679,-755,-831, -907,-981,-1058,-1133,-1208,-1284,-1360,-1439,-1522,-1603,-1687,-1773,-1860,-1948,-2039,-2131,-2224,-2321,-2419,-2517, -2618,-2719,-2824,-2930,-3042,-3152,-3269,-3390,-3513,-3635,-3765,-3893,-4025,-4160,-4297,-4438,-4583,-4725,-4874,-5024, -5176,-5332,-5490,-5653,-5815,-5977,-6143,-6305,-6470,-6634,-6797,-6958,-7119,-7279,-7431,-7580,-7723,-7860,-7989,-8109, -8220,-8321,-8402,-8468,-8513,-8534,-8537,-8508,-8453,-8364,-8232,-8061,-7838,-7564,-7230,-6833,-6374,-5850,-5255,-4594, -3874,-3097,-2274,-1411,-525,370,1270,2153,3011,3825,4588,5294,5934,6502,7001,7422,7771,8043,8245,8387, 8464,8492,8472,8412,8319,8197,8048,7880,7696,7502,7297,7087,6872,6654,6431,6208,5989,5768,5552,5342, 5132,4929,4727,4527,4334,4141,3956,3774,3596,3422,3251,3081,2915,2753,2592,2437,2287,2139,1994,1847, 1707,1566,1427,1293,1161,1031,902,773,649,521,396,273,150,29,-90,-211,-332,-452,-573,-693, -809,-927,-1044,-1162,-1279,-1398,-1520,-1640,-1762,-1887,-2010,-2135,-2263,-2392,-2524,-2657,-2791,-2928,-3065,-3203, -3343,-3487,-3633,-3780,-3929,-4081,-4231,-4383,-4538,-4693,-4848,-5008,-5167,-5323,-5484,-5642,-5796,-5949,-6105,-6258, -6405,-6548,-6683,-6809,-6928,-7036,-7133,-7217,-7284,-7333,-7360,-7360,-7330,-7265,-7160,-7012,-6815,-6557,-6243,-5863, -5416,-4899,-4313,-3661,-2946,-2173,-1352,-482,420,1345,2280,3205,4104,4968,5784,6540,7226,7839,8375,8831, 9206,9507,9735,9892,9988,10028,10018,9965,9875,9758,9613,9447,9263,9065,8853,8636,8411,8181,7952,7719, 7489,7257,7023,6793,6566,6339,6121,5906,5694,5486,5282,5083,4888,4701,4521,4343,4170,4003,3838,3676, 3519,3367,3218,3077,2939,2804,2674,2547,2425,2307,2190,2077,1969,1862,1758,1656,1558,1458,1361,1269, 1178,1089,1005,919,838,754,672,594,517,440,361,282,208,129,53,-23,-96,-168,-242,-316, -387,-459,-535,-607,-680,-755,-826,-902,-977,-1052,-1130,-1204,-1282,-1358,-1437,-1517,-1596,-1677,-1759,-1844, -1931,-2019,-2108,-2201,-2295,-2390,-2488,-2592,-2693,-2795,-2902,-3011,-3121,-3233,-3347,-3466,-3589,-3714,-3842,-3972, -4106,-4243,-4381,-4524,-4670,-4817,-4968,-5120,-5274,-5429,-5588,-5750,-5914,-6078,-6247,-6416,-6583,-6749,-6911,-7077, -7241,-7397,-7555,-7707,-7856,-7992,-8121,-8246,-8356,-8454,-8541,-8609,-8653,-8679,-8677,-8647,-8584,-8486,-8353,-8176, -7947,-7663,-7321,-6916,-6445,-5902,-5292,-4614,-3871,-3072,-2222,-1335,-423,501,1421,2320,3188,4009,4775,5478, 6113,6679,7172,7587,7930,8196,8395,8526,8593,8608,8577,8504,8398,8263,8107,7931,7737,7533,7322,7108, 6890,6668,6445,6222,5999,5779,5562,5347,5136,4929,4728,4530,4336,4142,3957,3774,3594,3422,3251,3084, 2918,2758,2599,2444,2294,2146,2003,1858,1720,1580,1442,1310,1176,1047,920,794,669,543,420,299, 177,57,-60,-179,-298,-417,-535,-652,-770,-889,-1002,-1121,-1236,-1350,-1472,-1590,-1710,-1833,-1956,-2080, -2206,-2332,-2464,-2595,-2727,-2864,-2999,-3137,-3276,-3416,-3561,-3708,-3854,-4004,-4155,-4309,-4462,-4615,-4769,-4927, -5084,-5242,-5401,-5558,-5716,-5870,-6021,-6175,-6322,-6469,-6609,-6740,-6863,-6976,-7075,-7163,-7238,-7294,-7329,-7340, -7325,-7275,-7189,-7063,-6892,-6666,-6384,-6041,-5630,-5152,-4602,-3986,-3304,-2561,-1764,-919,-37,872,1793,2713, 3617,4491,5324,6106,6827,7479,8058,8558,8976,9321,9587,9783,9914,9984,10002,9973,9901,9799,9670,9517, 9340,9155,8951,8737,8515,8289,8058,7826,7596,7363,7132,6903,6676,6447,6226,6008,5795,5585,5379,5177, 4980,4790,4604,4423,4246,4078,3911,3752,3594,3438,3290,3144,3003,2865,2730,2603,2478,2356,2236,2127, 2013,1906,1800,1699,1598,1499,1403,1308,1216,1124,1034,948,863,779,697,618,536,459,380,303, 227,151,73,-2,-80,-155,-231,-307,-381,-454,-528,-602,-673,-749,-821,-896,-970,-1044,-1121,-1197, -1276,-1354,-1435,-1513,-1594,-1675,-1757,-1843,-1928,-2015,-2105,-2198,-2291,-2386,-2484,-2581,-2684,-2789,-2897,-3005, -3116,-3228,-3342,-3459,-3578,-3702,-3828,-3960,-4090,-4226,-4363,-4505,-4648,-4796,-4946,-5098,-5254,-5409,-5566,-5726, -5888,-6050,-6215,-6384,-6549,-6715,-6881,-7047,-7210,-7370,-7528,-7682,-7831,-7972,-8104,-8231,-8345,-8447,-8539,-8613, -8672,-8706,-8719,-8704,-8657,-8574,-8457,-8298,-8093,-7839,-7526,-7154,-6718,-6214,-5644,-5007,-4305,-3541,-2721,-1858, -962,-49,871,1779,2664,3505,4297,5029,5695,6295,6822,7274,7653,7962,8195,8365,8472,8519,8515,8465, 8378,8260,8116,7947,7765,7564,7358,7144,6926,6705,6485,6267,6046,5824,5607,5390,5177,4969,4766,4565, 4369,4174,3986,3800,3619,3443,3271,3102,2938,2773,2615,2457,2303,2154,2006,1863,1722,1582,1444,1307, 1171,1042,912,783,657,533,408,284,161,40,-81,-199,-318,-439,-557,-676,-794,-914,-1031,-1151, -1267,-1385,-1502,-1622,-1743,-1867,-1991,-2118,-2241,-2368,-2498,-2629,-2760,-2896,-3035,-3174,-3312,-3451,-3593,-3739, -3885,-4035,-4184,-4337,-4488,-4641,-4796,-4952,-5103,-5261,-5415,-5570,-5724,-5873,-6023,-6167,-6310,-6448,-6581,-6709, -6827,-6931,-7025,-7105,-7166,-7206,-7225,-7219,-7185,-7114,-7007,-6856,-6659,-6407,-6104,-5734,-5303,-4802,-4231,-3595, -2894,-2135,-1323,-473,413,1314,2223,3120,3994,4833,5626,6366,7042,7653,8192,8656,9042,9353,9594,9765, 9875,9929,9934,9892,9814,9704,9566,9408,9235,9046,8846,8636,8419,8195,7970,7740,7514,7285,7060,6836, 6611,6393,6176,5962,5752,5545,5346,5149,4957,4770,4586,4406,4233,4066,3905,3747,3592,3443,3296,3152, 3016,2878,2749,2620,2496,2375,2259,2144,2032,1925,1820,1721,1624,1526,1431,1338,1245,1156,1066,979, 894,808,725,647,563,485,407,330,256,180,103,28,-47,-125,-201,-277,-353,-428,-503,-577, -653,-728,-802,-876,-951,-1025,-1102,-1177,-1255,-1336,-1419,-1501,-1585,-1668,-1752,-1838,-1925,-2015,-2106,-2197, -2294,-2389,-2488,-2587,-2690,-2798,-2908,-3019,-3134,-3249,-3368,-3486,-3607,-3731,-3861,-3992,-4126,-4262,-4400,-4545, -4689,-4838,-4989,-5145,-5301,-5459,-5619,-5781,-5940,-6104,-6266,-6433,-6597,-6764,-6928,-7089,-7247,-7404,-7555,-7703, -7846,-7982,-8105,-8221,-8322,-8410,-8485,-8540,-8582,-8597,-8586,-8548,-8472,-8359,-8206,-8007,-7758,-7453,-7092,-6669, -6182,-5625,-5006,-4323,-3581,-2787,-1945,-1071,-173,731,1634,2514,3356,4147,4883,5553,6154,6684,7137,7517, 7827,8068,8247,8362,8423,8431,8395,8320,8213,8075,7916,7741,7548,7348,7136,6919,6699,6477,6259,6042, 5823,5609,5396,5184,4977,4771,4571,4376,4183,3993,3812,3628,3451,3275,3105,2941,2776,2619,2462,2307, 2158,2008,1860,1720,1579,1440,1307,1173,1040,909,781,651,525,403,278,156,34,-87,-208,-329, -448,-569,-685,-802,-921,-1039,-1159,-1278,-1398,-1516,-1635,-1755,-1878,-2001,-2127,-2256,-2383,-2511,-2643,-2774, -2909,-3045,-3184,-3325,-3470,-3613,-3757,-3903,-4053,-4202,-4353,-4507,-4664,-4820,-4977,-5132,-5288,-5446,-5603,-5759, -5916,-6068,-6218,-6364,-6504,-6641,-6770,-6895,-7012,-7116,-7207,-7282,-7337,-7370,-7377,-7357,-7302,-7212,-7078,-6898, -6664,-6374,-6026,-5610,-5133,-4583,-3962,-3277,-2526,-1721,-865,30,953,1893,2824,3735,4612,5441,6211,6922, 7561,8124,8614,9025,9358,9618,9806,9930,9994,10004,9973,9900,9794,9659,9499,9318,9127,8922,8711,8492, 8267,8039,7805,7572,7341,7108,6877,6652,6431,6211,5993,5780,5572,5366,5167,4974,4785,4598,4419,4240, 4070,3900,3739,3583,3431,3286,3143,3003,2867,2735,2607,2484,2362,2244,2132,2017,1909,1803,1699,1601, 1502,1409,1317,1229,1138,1052,965,880,796,713,633,552,472,394,316,241,166,92,20,-51, -127,-199,-275,-349,-423,-496,-571,-644,-719,-792,-865,-940,-1012,-1087,-1158,-1234,-1309,-1387,-1465,-1547, -1631,-1715,-1800,-1884,-1972,-2060,-2151,-2243,-2337,-2433,-2531,-2628,-2729,-2834,-2940,-3055,-3167,-3285,-3403,-3524, -3645,-3771,-3899,-4030,-4163,-4300,-4439,-4584,-4726,-4874,-5022,-5179,-5336,-5496,-5658,-5822,-5983,-6149,-6312,-6476, -6643,-6808,-6972,-7137,-7296,-7452,-7604,-7753,-7894,-8029,-8154,-8269,-8372,-8456,-8529,-8581,-8615,-8622,-8608,-8563, -8480,-8362,-8199,-7982,-7718,-7393,-7009,-6559,-6041,-5457,-4805,-4090,-3318,-2494,-1630,-735,179,1099,2008,2893, 3734,4526,5258,5921,6510,7027,7461,7824,8106,8323,8473,8566,8603,8589,8539,8448,8325,8177,8010,7825, 7628,7421,7205,6983,6759,6533,6307,6087,5868,5652,5439,5227,5019,4815,4615,4417,4225,4038,3855,3674, 3498,3322,3152,2987,2823,2668,2513,2361,2213,2065,1918,1777,1636,1502,1369,1238,1106,979,848,724, 597,473,353,231,112,-7,-126,-248,-367,-486,-603,-718,-835,-951,-1068,-1184,-1303,-1423,-1541,-1661, -1780,-1904,-2027,-2154,-2280,-2410,-2541,-2671,-2805,-2939,-3076,-3215,-3358,-3502,-3649,-3795,-3941,-4089,-4240,-4393, -4547,-4704,-4862,-5019,-5177,-5335,-5492,-5650,-5807,-5961,-6117,-6264,-6406,-6545,-6679,-6804,-6923,-7032,-7129,-7211, -7276,-7323,-7343,-7335,-7296,-7224,-7110,-6951,-6737,-6473,-6148,-5760,-5308,-4789,-4203,-3550,-2829,-2054,-1222,-349, 559,1489,2425,3344,4240,5094,5898,6638,7309,7908,8431,8874,9244,9535,9753,9906,9994,10029,10018,9963, 9871,9751,9601,9430,9241,9039,8826,8607,8381,8155,7922,7687,7452,7216,6983,6753,6528,6305,6083,5868, 5658,5448,5243,5049,4857,4668,4486,4308,4132,3960,3796,3633,3478,3328,3183,3040,2903,2770,2641,2513, 2389,2273,2157,2043,1932,1824,1717,1615,1513,1417,1324,1233,1144,1056,969,885,798,716,638,553, 473,394,315,236,159,83,11,-64,-138,-209,-284,-358,-432,-508,-583,-658,-731,-806,-881,-956, -1031,-1108,-1181,-1257,-1331,-1408,-1486,-1566,-1649,-1735,-1818,-1905,-1995,-2083,-2174,-2268,-2361,-2459,-2557,-2655, -2758,-2861,-2965,-3075,-3186,-3302,-3422,-3544,-3668,-3793,-3923,-4053,-4186,-4325,-4465,-4607,-4749,-4897,-5047,-5198, -5356,-5515,-5677,-5840,-6005,-6170,-6335,-6502,-6668,-6833,-7000,-7163,-7326,-7485,-7638,-7789,-7931,-8071,-8201,-8322, -8429,-8526,-8603,-8665,-8706,-8725,-8720,-8687,-8624,-8526,-8384,-8197,-7954,-7662,-7307,-6890,-6404,-5850,-5231,-4542, -3795,-2990,-2144,-1263,-357,559,1470,2366,3229,4047,4808,5509,6140,6698,7176,7581,7904,8157,8339,8455, 8517,8525,8488,8414,8305,8169,8009,7831,7641,7440,7228,7010,6789,6564,6338,6113,5890,5671,5456,5244, 5036,4831,4629,4429,4234,4047,3861,3682,3504,3328,3158,2990,2826,2666,2510,2356,2208,2060,1915,1771, 1631,1492,1360,1227,1095,968,839,712,585,461,339,217,97,-23,-140,-260,-381,-500,-617,-733, -850,-965,-1081,-1197,-1316,-1434,-1551,-1674,-1794,-1913,-2038,-2160,-2290,-2418,-2549,-2680,-2813,-2943,-3081,-3218, -3358,-3501,-3645,-3791,-3937,-4083,-4236,-4382,-4536,-4691,-4845,-4999,-5154,-5310,-5465,-5616,-5770,-5923,-6071,-6217, -6359,-6492,-6619,-6738,-6848,-6947,-7039,-7112,-7170,-7209,-7218,-7202,-7157,-7072,-6951,-6781,-6559,-6283,-5945,-5544, -5075,-4547,-3949,-3292,-2570,-1799,-978,-115,775,1681,2591,3488,4360,5190,5971,6692,7345,7924,8428,8856, 9206,9487,9695,9838,9921,9952,9937,9878,9791,9674,9529,9366,9183,8983,8777,8562,8341,8118,7893,7664, 7436,7205,6977,6751,6527,6309,6091,5880,5671,5465,5265,5068,4880,4696,4516,4343,4170,4005,3840,3681, 3523,3375,3229,3086,2953,2818,2690,2562,2442,2323,2210,2097,1991,1882,1778,1672,1572,1477,1379,1288, 1196,1109,1024,939,853,771,692,609,532,452,374,293,215,137,62,-17,-88,-164,-236,-310, -385,-462,-534,-608,-684,-758,-833,-910,-987,-1065,-1140,-1218,-1295,-1373,-1452,-1532,-1614,-1698,-1785,-1870, -1962,-2050,-2143,-2236,-2335,-2430,-2532,-2635,-2738,-2843,-2949,-3058,-3172,-3287,-3405,-3527,-3653,-3781,-3909,-4044, -4179,-4318,-4460,-4603,-4751,-4899,-5049,-5200,-5354,-5511,-5672,-5834,-5999,-6167,-6333,-6499,-6664,-6828,-6990,-7153, -7313,-7469,-7619,-7765,-7901,-8034,-8158,-8270,-8371,-8462,-8533,-8583,-8613,-8618,-8596,-8547,-8463,-8346,-8183,-7975, -7713,-7398,-7019,-6577,-6069,-5496,-4852,-4148,-3381,-2568,-1712,-832,66,963,1849,2710,3533,4305,5022,5677, 6262,6779,7223,7594,7890,8116,8274,8367,8407,8398,8346,8259,8141,7997,7834,7651,7459,7257,7047,6836, 6618,6399,6178,5954,5735,5516,5302,5093,4886,4683,4484,4289,4095,3910,3726,3547,3374,3203,3032,2867, 2702,2543,2383,2234,2085,1939,1796,1653,1512,1373,1238,1102,972,845,717,591,464,340,217,94, -28,-148,-267,-389,-509,-630,-749,-871,-985,-1104,-1222,-1337,-1457,-1577,-1697,-1821,-1942,-2066,-2190,-2319, -2448,-2578,-2710,-2846,-2980,-3117,-3257,-3394,-3536,-3681,-3828,-3977,-4126,-4278,-4431,-4582,-4737,-4892,-5049,-5205, -5364,-5519,-5676,-5830,-5984,-6135,-6283,-6426,-6571,-6705,-6832,-6943,-7050,-7140,-7218,-7278,-7322,-7340,-7336,-7299, -7228,-7118,-6962,-6758,-6500,-6180,-5794,-5340,-4813,-4219,-3561,-2837,-2060,-1235,-369,526,1446,2366,3275,4160, 5009,5808,6550,7226,7833,8360,8803,9176,9469,9687,9842,9931,9967,9953,9897,9805,9687,9542,9377,9198, 9004,8795,8577,8354,8127,7898,7669,7438,7212,6983,6755,6530,6308,6089,5876,5666,5459,5260,5062,4870, 4680,4501,4323,4157,3990,3829,3670,3516,3366,3218,3075,2938,2805,2674,2549,2425,2308,2194,2084,1975, 1870,1770,1670,1571,1474,1379,1284,1195,1107,1020,937,853,770,693,611,534,459,383,308,233, 156,82,8,-68,-142,-217,-288,-362,-435,-507,-577,-652,-723,-797,-869,-939,-1016,-1092,-1168,-1247, -1324,-1402,-1480,-1561,-1643,-1725,-1806,-1896,-1986,-2072,-2166,-2256,-2353,-2451,-2551,-2653,-2760,-2867,-2974,-3084, -3197,-3311,-3430,-3549,-3676,-3803,-3933,-4066,-4203,-4344,-4484,-4629,-4779,-4928,-5081,-5233,-5389,-5547,-5707,-5868, -6034,-6199,-6366,-6530,-6695,-6862,-7021,-7181,-7339,-7492,-7641,-7784,-7919,-8044,-8161,-8262,-8356,-8435,-8497,-8539, -8556,-8545,-8507,-8430,-8321,-8173,-7979,-7734,-7437,-7082,-6660,-6174,-5621,-5000,-4312,-3563,-2756,-1902,-1015,-104, 815,1722,2606,3454,4248,4990,5664,6272,6810,7271,7663,7986,8233,8416,8533,8593,8598,8557,8477,8367, 8225,8065,7883,7687,7484,7273,7055,6839,6619,6400,6179,5961,5742,5525,5312,5104,4897,4697,4498,4304, 4116,3929,3747,3569,3394,3225,3059,2896,2736,2578,2423,2271,2123,1977,1835,1694,1555,1419,1284,1151, 1022,893,768,642,517,393,270,146,28,-95,-214,-329,-452,-568,-690,-807,-928,-1045,-1162,-1278, -1399,-1514,-1637,-1760,-1883,-2008,-2133,-2259,-2389,-2521,-2653,-2789,-2925,-3065,-3206,-3346,-3490,-3632,-3780,-3929, -4079,-4236,-4390,-4544,-4699,-4858,-5013,-5173,-5334,-5495,-5654,-5811,-5967,-6120,-6272,-6419,-6567,-6706,-6839,-6962, -7075,-7176,-7257,-7327,-7374,-7402,-7401,-7374,-7314,-7213,-7070,-6876,-6632,-6326,-5959,-5523,-5010,-4429,-3777,-3056, -2278,-1447,-574,337,1267,2205,3128,4028,4889,5704,6463,7155,7778,8322,8787,9175,9483,9714,9878,9976, 10020,10008,9955,9864,9743,9596,9428,9242,9045,8835,8616,8390,8158,7923,7689,7455,7222,6991,6761,6532, 6307,6083,5866,5650,5445,5239,5038,4841,4651,4463,4285,4110,3941,3778,3621,3464,3314,3166,3021,2883, 2746,2615,2487,2362,2239,2122,2009,1900,1793,1691,1590,1493,1397,1301,1206,1116,1024,936,851,763, 682,602,518,441,361,285,211,134,59,-13,-89,-167,-242,-318,-393,-466,-540,-612,-687,-760, -834,-908,-979,-1050,-1125,-1196,-1273,-1352,-1430,-1512,-1591,-1673,-1755,-1837,-1921,-2007,-2094,-2184,-2274,-2366, -2459,-2556,-2655,-2759,-2864,-2972,-3083,-3195,-3306,-3423,-3537,-3660,-3782,-3906,-4038,-4170,-4306,-4442,-4584,-4728, -4879,-5028,-5182,-5340,-5495,-5655,-5812,-5974,-6138,-6304,-6470,-6639,-6805,-6971,-7138,-7301,-7462,-7620,-7772,-7920, -8058,-8193,-8317,-8426,-8526,-8613,-8683,-8736,-8771,-8777,-8753,-8698,-8605,-8473,-8297,-8075,-7800,-7468,-7072,-6613, -6086,-5493,-4830,-4103,-3318,-2479,-1596,-680,250,1180,2096,2978,3817,4598,5314,5963,6538,7038,7465,7817, 8099,8312,8459,8548,8580,8558,8497,8401,8271,8116,7941,7750,7546,7332,7116,6893,6671,6451,6229,6011, 5793,5574,5361,5148,4941,4737,4537,4344,4152,3965,3781,3601,3425,3254,3090,2927,2766,2610,2456,2302, 2155,2009,1867,1728,1592,1457,1323,1189,1060,930,805,679,556,437,315,195,74,-44,-164,-281, -398,-513,-633,-749,-864,-983,-1097,-1215,-1330,-1445,-1563,-1682,-1801,-1927,-2050,-2174,-2301,-2426,-2554,-2687, -2820,-2958,-3094,-3234,-3375,-3514,-3657,-3802,-3948,-4096,-4248,-4403,-4555,-4708,-4861,-5018,-5171,-5328,-5480,-5638, -5789,-5937,-6080,-6222,-6364,-6499,-6629,-6750,-6863,-6963,-7046,-7113,-7162,-7186,-7188,-7161,-7100,-7005,-6865,-6679, -6445,-6155,-5806,-5393,-4913,-4365,-3745,-3055,-2310,-1504,-653,233,1139,2057,2969,3858,4712,5521,6276,6975, 7606,8163,8648,9058,9388,9647,9839,9963,10031,10045,10015,9945,9838,9703,9548,9374,9186,8985,8776,8558, 8336,8103,7875,7644,7414,7185,6959,6735,6513,6292,6075,5864,5656,5452,5252,5057,4868,4680,4498,4322, 4151,3987,3826,3670,3518,3370,3227,3086,2949,2815,2686,2560,2439,2317,2200,2087,1976,1871,1769,1668, 1572,1479,1382,1290,1199,1109,1020,929,848,763,679,597,516,435,358,279,205,129,53,-22, -98,-177,-253,-333,-409,-487,-562,-640,-716,-791,-866,-941,-1014,-1089,-1163,-1241,-1321,-1403,-1488,-1573, -1658,-1743,-1829,-1920,-2007,-2097,-2190,-2286,-2382,-2480,-2576,-2681,-2784,-2895,-3007,-3121,-3239,-3357,-3475,-3596, -3723,-3850,-3979,-4114,-4250,-4387,-4528,-4674,-4820,-4971,-5128,-5283,-5446,-5604,-5764,-5928,-6088,-6252,-6416,-6582, -6750,-6915,-7077,-7240,-7397,-7553,-7702,-7847,-7987,-8116,-8236,-8342,-8437,-8514,-8579,-8626,-8652,-8654,-8628,-8567, -8472,-8336,-8152,-7920,-7636,-7294,-6891,-6423,-5891,-5291,-4630,-3908,-3134,-2308,-1444,-550,356,1264,2157,3019, 3834,4596,5295,5923,6477,6957,7362,7692,7957,8149,8284,8363,8388,8366,8305,8205,8078,7926,7754,7567, 7367,7156,6938,6715,6493,6270,6049,5832,5615,5400,5188,4979,4770,4568,4369,4174,3986,3799,3612,3433, 3255,3081,2914,2748,2591,2434,2278,2126,1974,1825,1681,1537,1402,1265,1129,997,863,733,604,474, 351,228,104,-18,-140,-262,-384,-504,-626,-743,-859,-978,-1098,-1215,-1337,-1456,-1575,-1694,-1814,-1935, -2060,-2186,-2312,-2438,-2566,-2696,-2830,-2960,-3096,-3234,-3373,-3518,-3661,-3804,-3950,-4095,-4244,-4391,-4546,-4701, -4854,-5008,-5167,-5322,-5474,-5631,-5786,-5937,-6091,-6238,-6382,-6522,-6652,-6779,-6898,-7011,-7116,-7208,-7280,-7335, -7366,-7372,-7347,-7294,-7201,-7065,-6881,-6645,-6355,-6003,-5591,-5113,-4570,-3956,-3280,-2540,-1743,-894,-9,907, 1836,2761,3669,4537,5361,6131,6833,7465,8028,8515,8924,9262,9524,9718,9847,9919,9935,9908,9845,9746, 9616,9463,9291,9101,8900,8692,8476,8257,8030,7803,7575,7343,7115,6888,6663,6444,6226,6012,5801,5592, 5390,5192,5000,4813,4630,4451,4274,4104,3935,3772,3615,3466,3320,3175,3041,2906,2775,2648,2523,2401, 2286,2172,2058,1949,1840,1739,1636,1538,1447,1356,1268,1182,1094,1010,925,840,758,678,598,519, 439,360,283,209,137,64,-5,-79,-151,-223,-299,-372,-448,-520,-595,-670,-741,-814,-893,-965, -1037,-1108,-1185,-1255,-1333,-1411,-1490,-1573,-1656,-1743,-1830,-1916,-2004,-2093,-2185,-2278,-2374,-2470,-2567,-2666, -2769,-2876,-2985,-3098,-3216,-3332,-3454,-3580,-3702,-3829,-3961,-4094,-4228,-4366,-4508,-4651,-4797,-4945,-5099,-5257, -5416,-5577,-5739,-5904,-6065,-6226,-6389,-6551,-6717,-6879,-7038,-7196,-7352,-7502,-7645,-7781,-7916,-8037,-8149,-8246, -8328,-8393,-8442,-8466,-8470,-8452,-8399,-8313,-8189,-8018,-7799,-7529,-7198,-6808,-6351,-5829,-5242,-4583,-3871,-3098, -2283,-1429,-547,354,1253,2145,3011,3838,4614,5328,5980,6561,7063,7491,7843,8121,8326,8469,8553,8586, 8571,8516,8426,8306,8161,7994,7811,7618,7413,7197,6981,6757,6532,6308,6084,5868,5650,5438,5229,5025, 4821,4619,4422,4233,4045,3861,3681,3507,3331,3159,2992,2828,2671,2514,2363,2214,2068,1920,1776,1637, 1499,1365,1231,1102,971,843,713,586,460,337,215,94,-28,-148,-271,-394,-513,-634,-751,-867, -985,-1104,-1223,-1344,-1465,-1586,-1709,-1829,-1955,-2083,-2211,-2340,-2470,-2603,-2740,-2875,-3012,-3152,-3292,-3436, -3584,-3732,-3882,-4032,-4183,-4334,-4489,-4648,-4805,-4965,-5127,-5286,-5444,-5605,-5762,-5923,-6081,-6233,-6383,-6528, -6663,-6795,-6914,-7033,-7136,-7229,-7308,-7370,-7408,-7420,-7401,-7351,-7264,-7130,-6943,-6709,-6409,-6048,-5621,-5129, -4568,-3939,-3248,-2496,-1686,-827,72,1005,1949,2890,3809,4697,5532,6311,7019,7657,8213,8690,9091,9411, 9659,9836,9949,10003,10005,9965,9887,9773,9633,9473,9290,9090,8878,8657,8431,8203,7971,7736,7503,7267, 7030,6795,6563,6337,6114,5897,5683,5471,5263,5063,4867,4676,4491,4309,4135,3963,3792,3624,3466,3312, 3161,3018,2879,2742,2610,2483,2357,2237,2120,2007,1897,1786,1679,1575,1469,1369,1275,1177,1093,1003, 916,832,747,664,583,503,424,341,266,182,105,29,12,61,-781,-991,-853,-834,-712,-666, -564,-478,-322,-153,112,385,690,967,1241,1480,1710,1902,2054,2195,2337,2484,2650,2821,3009,3161, 3277,3396,3510,3622,3750,3899,4084,4298,4557,4851,5148,5434,5698,5952,6190,6440,6680,6920,7150,7349, 7538,7698,7839,7930,7949,7946,7907,7881,7819,7769,7724,7669,7615,7566,7516,7473,7424,7359,7313,7293, 7289,7292,7310,7309,7309,7269,7228,7160,7091,6979,6853,6692,6537,6355,6141,5906,5646,5345,5044,4718, 4411,4089,3756,3429,3115,2785,2491,2189,1879,1568,1244,946,658,370,69,-228,-537,-837,-1148,-1463, -1775,-2111,-2464,-2827,-3178,-3527,-3881,-4234,-4591,-4958,-5311,-5650,-5982,-6286,-6607,-6915,-7195,-7448,-7698,-7924, -8159,-8399,-8634,-8835,-8976,-9077,-9168,-9258,-9355,-9450,-9540,-9627,-9719,-9843,-9988,-10119,-10227,-10318,-10387,-10466, -10581,-10691,-10807,-10925,-11008,-11112,-11188,-11279,-11306,-11290,-11218,-11138,-11040,-10959,-10861,-10748,-10611,-10435,-10254,-10070, -9860,-9639,-9374,-9106,-8859,-8631,-8408,-8220,-8014,-7798,-7580,-7365,-7159,-6936,-6711,-6470,-6207,-5966,-5750,-5524, -5306,-5052,-4776,-4491,-4215,-3934,-3664,-3373,-3103,-2847,-2590,-2356,-2153,-1929,-1725,-1517,-1320,-1152,-993,-856, -743,-626,-532,-463,-410,-357,-300,-234,-181,-143,-96,-50,-23,13,38,81,104,143,191,241, 307,366,431,489,547,614,703,781,872,961,1050,1170,1285,1402,1516,1633,1743,1838,1951,2072, 2209,2319,2465,2597,2749,2908,3060,3213,3363,3491,3663,3823,4014,4222,4429,4638,4876,5099,5343,5580, 5811,6026,6230,6448,6685,6908,7138,7361,7549,7730,7906,8065,8219,8349,8447,8570,8695,8841,8975,9105, 9214,9306,9378,9464,9562,9654,9714,9765,9829,9907,9975,10037,10065,10029,9958,9868,9781,9686,9549,9407, 9237,9067,8898,8714,8514,8287,8004,7723,7473,7230,7012,6794,6568,6368,6176,5996,5841,5642,5435,5199, 4975,4778,4606,4418,4216,3998,3747,3480,3209,2912,2587,2213,1836,1474,1125,807,473,118,-242,-617, -957,-1298,-1630,-1953,-2280,-2568,-2807,-3014,-3180,-3360,-3557,-3763,-3968,-4149,-4334,-4521,-4718,-4923,-5124,-5296, -5481,-5679,-5903,-6170,-6451,-6739,-7016,-7270,-7552,-7809,-8078,-8302,-8528,-8701,-8887,-9078,-9284,-9464,-9600,-9684, -9749,-9781,-9797,-9815,-9811,-9770,-9749,-9725,-9723,-9729,-9723,-9689,-9627,-9563,-9508,-9453,-9420,-9364,-9312,-9265, -9218,-9180,-9130,-9045,-8915,-8762,-8589,-8421,-8253,-8080,-7878,-7656,-7430,-7217,-6980,-6741,-6484,-6196,-5903,-5646, -5378,-5170,-4944,-4715,-4497,-4284,-4086,-3886,-3683,-3477,-3270,-3071,-2898,-2742,-2598,-2442,-2266,-2098,-1927,-1752, -1585,-1411,-1233,-1075,-914,-784,-671,-557,-450,-329,-231,-124,-35,51,127,204,253,307,340,366, 412,453,491,547,592,633,676,716,763,823,866,926,993,1075,1182,1280,1403,1523,1638,1757, 1902,2044,2195,2334,2505,2699,2880,3086,3304,3505,3714,3892,4061,4252,4440,4635,4835,5011,5217,5413, 5632,5840,6055,6229,6416,6613,6822,7040,7273,7503,7742,7975,8237,8480,8720,8925,9096,9263,9444,9609, 9770,9923,10043,10127,10190,10247,10292,10283,10232,10170,10089,10039,9985,9940,9877,9790,9705,9625,9534,9459, 9341,9225,9114,9016,8940,8891,8821,8707,8573,8405,8244,8061,7855,7622,7372,7106,6855,6594,6341,6055, 5709,5361,5000,4644,4316,3977,3638,3316,3010,2730,2489,2236,1972,1678,1390,1113,870,630,404,158, -82,-338,-570,-813,-1084,-1404,-1739,-2092,-2424,-2751,-3064,-3382,-3714,-4056,-4371,-4686,-5000,-5317,-5648,-5962, -6241,-6493,-6690,-6859,-7030,-7207,-7387,-7539,-7672,-7812,-7962,-8105,-8263,-8398,-8498,-8593,-8688,-8813,-8978,-9140, -9307,-9463,-9640,-9815,-9995,-10150,-10287,-10364,-10448,-10520,-10615,-10707,-10773,-10786,-10790,-10747,-10700,-10625,-10530,-10398, -10242,-10079,-9935,-9801,-9654,-9507,-9331,-9139,-8952,-8769,-8585,-8408,-8201,-8004,-7826,-7668,-7508,-7348,-7150,-6939, -6694,-6469,-6234,-5994,-5752,-5489,-5234,-4990,-4743,-4498,-4241,-3990,-3717,-3446,-3195,-2970,-2747,-2543,-2350,-2181, -2016,-1873,-1726,-1596,-1448,-1317,-1194,-1095,-1034,-936,-864,-794,-706,-631,-555,-484,-422,-343,-261,-202, -148,-113,-70,-25,13,57,101,152,190,245,285,334,367,389,424,472,508,576,630,702, 767,839,922,1024,1107,1204,1294,1390,1521,1666,1828,1994,2162,2355,2549,2764,2988,3208,3436,3681, 3930,4198,4490,4774,5069,5338,5601,5866,6128,6379,6625,6853,7077,7300,7538,7769,8001,8197,8385,8549, 8725,8907,9079,9243,9416,9579,9769,9967,10158,10332,10464,10578,10679,10778,10875,10959,11012,11036,11053,11062, 11063,11014,10939,10820,10663,10513,10356,10212,10053,9884,9696,9531,9358,9197,9014,8807,8598,8395,8208,8062, 7918,7768,7593,7408,7211,7018,6806,6570,6287,5999,5702,5415,5147,4856,4526,4180,3812,3433,3064,2683, 2290,1898,1515,1163,851,558,270,-52,-372,-671,-953,-1229,-1487,-1759,-2022,-2272,-2505,-2722,-2932,-3186, -3466,-3778,-4080,-4393,-4684,-4980,-5290,-5618,-5937,-6224,-6519,-6808,-7134,-7439,-7754,-8053,-8294,-8502,-8699,-8887, -9054,-9205,-9313,-9423,-9525,-9629,-9748,-9842,-9918,-9957,-9975,-10004,-10061,-10107,-10166,-10206,-10265,-10336,-10410,-10500, -10562,-10591,-10589,-10580,-10580,-10578,-10558,-10517,-10457,-10368,-10273,-10168,-10036,-9868,-9661,-9414,-9185,-8956,-8735,-8511, -8275,-8023,-7775,-7523,-7285,-7044,-6789,-6530,-6264,-6036,-5830,-5622,-5415,-5205,-4980,-4756,-4527,-4304,-4075,-3841, -3587,-3362,-3137,-2932,-2725,-2515,-2307,-2085,-1866,-1681,-1486,-1314,-1146,-986,-859,-736,-636,-546,-443,-354, -261,-181,-134,-74,-23,33,66,111,140,171,210,256,325,377,432,485,536,586,643,697, 759,838,894,993,1090,1196,1287,1382,1485,1590,1673,1792,1916,2038,2160,2291,2434,2591,2734,2892, 3037,3176,3322,3474,3661,3860,4042,4242,4456,4682,4916,5149,5386,5619,5838,6074,6334,6592,6859,7098, 7340,7567,7789,8013,8211,8366,8516,8641,8759,8910,9044,9144,9224,9285,9339,9396,9440,9475,9490,9499, 9519,9569,9630,9676,9696,9709,9705,9687,9668,9651,9596,9518,9431,9348,9266,9173,9042,8874,8665,8436, 8188,7953,7714,7442,7159,6890,6628,6383,6132,5865,5575,5278,4996,4744,4514,4285,4053,3808,3585,3378, 3150,2930,2663,2382,2083,1790,1506,1237,935,617,292,-51,-397,-745,-1117,-1491,-1885,-2264,-2595,-2913, -3209,-3513,-3812,-4101,-4384,-4639,-4875,-5121,-5370,-5614,-5833,-6011,-6175,-6329,-6509,-6720,-6926,-7133,-7343,-7542, -7762,-8011,-8235,-8445,-8637,-8812,-9017,-9227,-9439,-9659,-9828,-9980,-10112,-10215,-10334,-10409,-10440,-10443,-10435,-10417, -10412,-10406,-10387,-10315,-10211,-10111,-10017,-9904,-9814,-9686,-9573,-9465,-9370,-9284,-9223,-9112,-8995,-8862,-8730,-8603, -8456,-8305,-8147,-7954,-7775,-7583,-7410,-7196,-6954,-6677,-6390,-6107,-5826,-5554,-5276,-4998,-4709,-4444,-4188,-3941, -3681,-3435,-3183,-2946,-2729,-2520,-2356,-2175,-1996,-1838,-1676,-1538,-1389,-1238,-1082,-935,-787,-669,-551,-444, -332,-222,-101,-8,98,204,305,399,477,560,626,672,725,784,839,890,938,987,1053,1084, 1137,1189,1233,1275,1306,1367,1435,1501,1570,1665,1741,1827,1919,2026,2149,2248,2363,2508,2647,2818, 2984,3164,3339,3528,3706,3901,4092,4279,4469,4652,4859,5068,5280,5495,5701,5888,6063,6241,6437,6636, 6815,6998,7195,7397,7624,7840,8058,8268,8446,8633,8836,9030,9231,9404,9583,9734,9896,10036,10180,10273, 10333,10350,10362,10379,10377,10365,10320,10255,10172,10089,9999,9899,9775,9622,9468,9331,9220,9126,9014,8896, 8764,8637,8516,8390,8251,8080,7895,7703,7548,7370,7197,6989,6751,6478,6207,5919,5632,5315,4962,4627, 4278,3964,3655,3350,3021,2685,2334,2017,1706,1419,1125,825,543,297,62,-168,-402,-665,-948,-1242, -1503,-1763,-2033,-2318,-2611,-2911,-3207,-3502,-3813,-4128,-4484,-4828,-5180,-5493,-5788,-6075,-6362,-6639,-6904,-7151, -7374,-7580,-7799,-8016,-8228,-8396,-8532,-8645,-8751,-8869,-8989,-9109,-9216,-9314,-9428,-9567,-9699,-9820,-9923,-10013, -10104,-10181,-10288,-10392,-10475,-10548,-10593,-10630,-10671,-10691,-10662,-10610,-10511,-10398,-10298,-10189,-10074,-9929,-9742,-9555, -9374,-9168,-8962,-8745,-8513,-8268,-8041,-7835,-7656,-7447,-7254,-7047,-6840,-6621,-6434,-6221,-6010,-5774,-5552,-5327, -5123,-4922,-4695,-4447,-4204,-3941,-3689,-3449,-3216,-2976,-2734,-2499,-2300,-2104,-1918,-1732,-1550,-1387,-1223,-1076, -958,-845,-724,-633,-550,-481,-410,-341,-291,-227,-163,-121,-60,-42,-9,38,72,99,130,168, 201,233,278,318,363,393,433,473,519,560,616,679,730,791,884,973,1056,1141,1219,1317, 1437,1541,1665,1809,1943,2095,2259,2423,2609,2794,2963,3163,3365,3590,3825,4058,4315,4561,4814,5081, 5336,5600,5853,6076,6313,6558,6792,7046,7280,7484,7672,7861,8038,8216,8367,8515,8638,8762,8901,9046, 9202,9335,9445,9544,9644,9756,9858,9941,10013,10072,10135,10192,10258,10299,10288,10245,10191,10125,10051,9944, 9829,9675,9514,9352,9179,9013,8819,8591,8343,8105,7869,7661,7455,7243,7021,6805,6611,6419,6234,6020, 5784,5536,5304,5085,4871,4660,4417,4138,3864,3587,3300,2996,2652,2296,1921,1574,1230,895,565,213, -131,-488,-828,-1135,-1459,-1781,-2092,-2389,-2651,-2876,-3085,-3320,-3565,-3810,-4047,-4259,-4486,-4718,-4958,-5197, -5444,-5665,-5888,-6116,-6391,-6665,-6952,-7228,-7484,-7738,-7991,-8239,-8481,-8695,-8864,-9039,-9198,-9381,-9551,-9700, -9810,-9897,-9952,-10016,-10062,-10115,-10135,-10142,-10140,-10164,-10188,-10229,-10239,-10247,-10233,-10209,-10186,-10187,-10168,-10131, -10080,-10035,-9990,-9944,-9870,-9768,-9622,-9457,-9282,-9106,-8933,-8719,-8478,-8242,-7983,-7732,-7475,-7209,-6933,-6630, -6326,-6047,-5789,-5530,-5275,-5026,-4770,-4533,-4306,-4087,-3869,-3638,-3404,-3184,-2991,-2794,-2610,-2412,-2216,-2022, -1828,-1636,-1450,-1261,-1071,-885,-722,-565,-422,-297,-168,-35,81,197,292,384,463,538,615,663, 719,769,816,861,912,959,1009,1042,1081,1127,1182,1224,1292,1334,1391,1467,1538,1622,1711,1795, 1893,1989,2089,2202,2312,2436,2545,2686,2829,2983,3136,3292,3438,3589,3744,3911,4080,4254,4415,4586, 4772,4963,5170,5376,5571,5760,5955,6175,6377,6617,6842,7065,7290,7537,7765,8006,8220,8426,8611,8786, 8957,9145,9310,9454,9565,9665,9765,9871,9933,9974,9992,9998,9981,9996,10023,10041,10007,9979,9950,9919, 9898,9863,9802,9738,9664,9601,9555,9496,9415,9308,9175,9030,8872,8710,8532,8314,8076,7823,7580,7338, 7090,6800,6506,6181,5860,5559,5262,4961,4659,4351,4062,3803,3558,3298,3025,2734,2459,2192,1943,1693, 1440,1170,884,613,348,62,-234,-560,-910,-1256,-1587,-1911,-2240,-2568,-2919,-3260,-3585,-3895,-4205,-4523, -4838,-5157,-5439,-5681,-5906,-6119,-6350,-6583,-6792,-6976,-7163,-7335,-7534,-7729,-7931,-8103,-8267,-8408,-8581,-8778, -8976,-9166,-9341,-9516,-9689,-9863,-10055,-10200,-10326,-10426,-10512,-10612,-10696,-10769,-10822,-10843,-10828,-10807,-10775,-10732, -10670,-10560,-10447,-10340,-10234,-10146,-10041,-9927,-9801,-9652,-9511,-9391,-9253,-9115,-8958,-8812,-8656,-8508,-8364,-8221, -8034,-7830,-7627,-7408,-7205,-6970,-6720,-6479,-6217,-5960,-5712,-5467,-5208,-4948,-4656,-4401,-4155,-3920,-3695,-3479, -3258,-3063,-2873,-2726,-2559,-2390,-2228,-2071,-1939,-1811,-1699,-1591,-1486,-1361,-1254,-1153,-1069,-973,-879,-772, -683,-596,-518,-448,-375,-304,-228,-153,-101,-31,31,96,163,225,280,343,390,454,533,599, 687,761,839,924,1023,1125,1243,1340,1459,1576,1715,1872,2041,2189,2370,2549,2741,2940,3143,3357, 3576,3785,4016,4247,4504,4733,4984,5197,5423,5655,5886,6124,6330,6535,6718,6934,7152,7372,7579,7769, 7943,8140,8309,8504,8696,8866,9025,9213,9389,9570,9742,9888,10019,10122,10220,10329,10405,10472,10514,10522, 10520,10530,10499,10462,10384,10268,10144,10013,9900,9782,9638,9493,9326,9174,9028,8879,8724,8547,8346,8171, 8008,7861,7697,7520,7316,7121,6914,6711,6498,6252,5978,5681,5395,5121,4846,4555,4223,3884,3553,3207, 2884,2553,2214,1856,1519,1207,920,645,355,57,-232,-522,-780,-1027,-1284,-1544,-1815,-2073,-2307,-2537, -2771,-3029,-3311,-3614,-3914,-4177,-4453,-4739,-5041,-5335,-5629,-5901,-6171,-6441,-6714,-6993,-7270,-7498,-7709,-7890, -8079,-8261,-8426,-8564,-8691,-8791,-8891,-9010,-9130,-9227,-9309,-9354,-9420,-9491,-9565,-9628,-9698,-9742,-9796,-9847, -9921,-9985,-10002,-10004,-9983,-9967,-9945,-9914,-9871,-9798,-9688,-9580,-9456,-9334,-9180,-8993,-8776,-8567,-8340,-8119, -7908,-7691,-7455,-7205,-6969,-6749,-6517,-6283,-6035,-5796,-5565,-5335,-5121,-4924,-4700,-4475,-4245,-4029,-3793,-3576, -3351,-3117,-2892,-2664,-2442,-2241,-2048,-1845,-1633,-1424,-1246,-1070,-900,-758,-618,-482,-370,-259,-180,-86, -5,63,130,182,240,276,297,343,376,409,427,446,479,516,541,582,604,638,669,698, 742,778,816,870,924,986,1058,1114,1194,1259,1341,1422,1521,1616,1729,1834,1956,2081,2208,2346, 2508,2652,2809,2947,3109,3295,3483,3680,3893,4096,4319,4547,4785,5019,5259,5487,5740,5990,6242,6509, 6753,6989,7217,7442,7671,7894,8095,8274,8424,8574,8740,8890,9043,9163,9264,9359,9440,9539,9631,9701, 9746,9800,9848,9906,9971,10018,10047,10054,10027,10035,10021,9992,9935,9851,9761,9674,9568,9467,9315,9137, 8926,8711,8500,8298,8059,7817,7552,7307,7061,6829,6591,6345,6066,5798,5539,5308,5078,4845,4595,4341, 4095,3853,3634,3367,3101,2778,2496,2200,1906,1602,1301,957,615,264,-77,-413,-758,-1125,-1492,-1846, -2164,-2471,-2771,-3083,-3378,-3680,-3949,-4204,-4464,-4714,-4972,-5226,-5457,-5669,-5864,-6072,-6300,-6538,-6783,-7023, -7236,-7474,-7720,-7970,-8214,-8441,-8655,-8865,-9075,-9300,-9533,-9731,-9917,-10056,-10210,-10358,-10480,-10585,-10662,-10697, -10742,-10770,-10818,-10859,-10855,-10834,-10811,-10765,-10738,-10713,-10659,-10599,-10535,-10464,-10409,-10371,-10313,-10230,-10137,-10025, -9910,-9789,-9662,-9514,-9340,-9155,-8967,-8784,-8576,-8352,-8100,-7821,-7533,-7266,-7001,-6729,-6449,-6155,-5865,-5601, -5329,-5072,-4799,-4547,-4284,-4029,-3793,-3583,-3364,-3153,-2937,-2738,-2546,-2364,-2171,-1988,-1800,-1599,-1436,-1278, -1126,-981,-827,-678,-533,-396,-275,-160,-54,63,165,247,327,403,458,537,600,662,713,771, 804,874,923,970,1014,1053,1102,1169,1227,1308,1384,1460,1539,1620,1720,1828,1915,2037,2149,2279, 2408,2549,2710,2868,3012,3170,3339,3512,3691,3862,4046,4229,4413,4609,4819,5023,5221,5401,5593,5798, 6002,6200,6411,6612,6831,7040,7273,7503,7726,7942,8134,8342,8564,8757,8959,9151,9334,9498,9662,9824, 9970,10070,10149,10202,10266,10314,10360,10385,10383,10369,10332,10304,10285,10229,10164,10074,9986,9917,9832,9769, 9685,9589,9473,9373,9265,9147,9011,8862,8691,8508,8325,8162,7978,7756,7502,7232,6977,6718,6432,6137, 5829,5504,5201,4900,4614,4334,4013,3698,3386,3085,2803,2524,2243,1959,1680,1417,1177,930,669,369, 84,-200,-480,-768,-1045,-1347,-1661,-1979,-2276,-2574,-2871,-3206,-3531,-3876,-4192,-4474,-4772,-5048,-5336,-5625, -5877,-6112,-6332,-6566,-6790,-7018,-7210,-7410,-7565,-7719,-7869,-8033,-8208,-8366,-8502,-8642,-8803,-8951,-9120,-9282, -9407,-9526,-9637,-9756,-9885,-10014,-10113,-10179,-10251,-10306,-10365,-10400,-10410,-10382,-10323,-10269,-10221,-10160,-10077,-9979, -9843,-9711,-9587,-9443,-9306,-9152,-8962,-8797,-8627,-8465,-8309,-8141,-7960,-7776,-7598,-7400,-7221,-7027,-6814,-6591, -6376,-6168,-5961,-5739,-5511,-5266,-5002,-4755,-4501,-4269,-4043,-3777,-3541,-3317,-3101,-2898,-2700,-2509,-2314,-2136, -1965,-1812,-1665,-1532,-1397,-1283,-1169,-1065,-970,-892,-790,-687,-595,-514,-443,-367,-289,-225,-148,-77, -12,58,114,194,277,335,393,454,512,590,647,723,790,857,932,1019,1111,1204,1291,1372, 1468,1571,1683,1812,1934,2079,2214,2355,2513,2694,2857,3043,3217,3405,3603,3812,4035,4272,4494,4712, 4953,5185,5432,5662,5881,6105,6326,6546,6773,6993,7208,7383,7573,7755,7932,8106,8279,8416,8561,8701, 8846,9009,9171,9281,9399,9505,9622,9729,9821,9916,9967,10015,10073,10117,10166,10172,10143,10097,10040,9965, 9899,9807,9687,9545,9378,9243,9105,8936,8760,8551,8333,8128,7919,7735,7547,7339,7117,6916,6722,6527, 6330,6098,5868,5618,5379,5150,4929,4684,4407,4126,3839,3561,3265,2971,2639,2306,1951,1627,1315,1016, 678,352,26,-297,-603,-903,-1201,-1497,-1802,-2083,-2330,-2573,-2804,-3058,-3327,-3571,-3826,-4063,-4291,-4544, -4802,-5075,-5339,-5562,-5807,-6065,-6321,-6600,-6864,-7130,-7378,-7604,-7833,-8076,-8302,-8493,-8655,-8828,-8983,-9144, -9296,-9423,-9528,-9612,-9676,-9752,-9825,-9874,-9910,-9936,-9952,-9977,-10016,-10053,-10078,-10065,-10039,-10025,-10020,-9997, -9967,-9920,-9863,-9805,-9733,-9664,-9574,-9443,-9298,-9127,-8954,-8793,-8596,-8378,-8166,-7920,-7690,-7453,-7215,-6969, -6708,-6424,-6168,-5903,-5660,-5412,-5176,-4938,-4703,-4464,-4245,-4023,-3801,-3562,-3339,-3126,-2924,-2715,-2520,-2320, -2119,-1920,-1728,-1543,-1360,-1187,-1013,-860,-704,-574,-442,-327,-216,-92,9,80,158,227,303,354, 402,443,485,514,548,590,620,657,676,712,754,787,825,864,897,935,982,1039,1113,1177, 1241,1311,1393,1475,1559,1656,1771,1869,1970,2093,2229,2360,2498,2631,2783,2924,3077,3250,3425,3598, 3765,3946,4145,4349,4553,4782,4990,5202,5414,5636,5884,6118,6350,6591,6833,7071,7318,7557,7777,7998, 8191,8379,8581,8773,8944,9096,9238,9372,9485,9602,9701,9771,9827,9861,9900,9952,9998,10029,10040,10031, 10041,10030,10023,10006,9960,9893,9848,9785,9731,9661,9561,9441,9311,9161,9019,8858,8671,8449,8222,7995, 7764,7546,7297,7042,6752,6466,6186,5926,5657,5381,5087,4810,4531,4282,4024,3769,3503,3220,2928,2673, 2415,2150,1860,1567,1279,990,691,413,98,-231,-585,-915,-1238,-1552,-1868,-2205,-2528,-2860,-3168,-3470, -3766,-4062,-4373,-4664,-4918,-5168,-5394,-5631,-5878,-6089,-6319,-6527,-6723,-6932,-7148,-7361,-7586,-7763,-7960,-8138, -8338,-8538,-8748,-8957,-9139,-9300,-9483,-9682,-9840,-9992,-10119,-10229,-10331,-10421,-10506,-10598,-10647,-10668,-10672,-10688, -10691,-10671,-10632,-10571,-10498,-10421,-10356,-10296,-10228,-10128,-10012,-9906,-9802,-9687,-9576,-9443,-9293,-9148,-8989,-8852, -8694,-8515,-8324,-8102,-7890,-7671,-7447,-7204,-6949,-6680,-6422,-6148,-5896,-5634,-5362,-5091,-4814,-4537,-4290,-4044, -3811,-3572,-3337,-3122,-2918,-2729,-2531,-2350,-2167,-1988,-1833,-1676,-1531,-1389,-1236,-1100,-968,-853,-733,-609, -499,-389,-277,-172,-86,-7,74,155,227,296,360,413,474,525,573,633,686,715,773,816, 879,935,987,1048,1111,1193,1278,1370,1458,1542,1628,1744,1864,1997,2129,2271,2411,2562,2729,2897, 3084,3265,3432,3623,3817,4028,4239,4443,4661,4856,5064,5285,5504,5727,5927,6130,6332,6552,6765,6996, 7201,7407,7607,7804,8016,8238,8424,8625,8797,8982,9173,9352,9531,9693,9822,9933,10053,10169,10259,10335, 10378,10413,10441,10455,10476,10453,10407,10327,10258,10185,10110,10015,9920,9799,9682,9557,9433,9320,9193,9023, 8863,8710,8559,8403,8238,8059,7868,7634,7446,7219,7008,6752,6479,6202,5925,5656,5378,5090,4776,4448, 4120,3814,3510,3192,2871,2528,2210,1919,1625,1349,1065,756,450,176,-98,-371,-648,-944,-1231,-1514, -1789,-2038,-2316,-2608,-2915,-3228,-3519,-3793,-4085,-4381,-4692,-4983,-5274,-5544,-5797,-6064,-6342,-6616,-6855,-7087, -7297,-7499,-7694,-7889,-8080,-8243,-8384,-8515,-8656,-8812,-8960,-9085,-9202,-9296,-9390,-9500,-9607,-9720,-9806,-9882, -9946,-10032,-10113,-10185,-10236,-10250,-10263,-10260,-10255,-10250,-10213,-10163,-10073,-9991,-9903,-9805,-9680,-9537,-9371,-9192, -9022,-8846,-8682,-8490,-8289,-8089,-7879,-7688,-7498,-7292,-7083,-6866,-6636,-6433,-6239,-6027,-5824,-5591,-5371,-5148, -4918,-4699,-4478,-4237,-4008,-3769,-3570,-3357,-3136,-2918,-2715,-2512,-2331,-2155,-1988,-1829,-1659,-1513,-1385,-1268, -1155,-1049,-948,-851,-762,-681,-623,-553,-477,-411,-342,-296,-227,-185,-127,-64,5,60,125,183, 227,299,357,425,502,561,625,698,781,873,955,1031,1123,1218,1334,1429,1542,1653,1780,1896, 2048,2195,2349,2506,2656,2820,3002,3180,3387,3592,3797,3996,4213,4450,4696,4921,5153,5385,5622,5873, 6111,6345,6583,6811,7023,7258,7481,7683,7873,8049,8221,8392,8550,8727,8878,9015,9128,9248,9371,9492, 9585,9685,9760,9834,9904,9964,10042,10089,10108,10126,10124,10122,10120,10084,10020,9941,9852,9769,9675,9556, 9429,9246,9068,8891,8707,8515,8323,8097,7871,7649,7433,7220,6996,6751,6509,6258,6031,5799,5563,5315, 5072,4801,4554,4307,4062,3790,3483,3180,2880,2580,2296,1993,1674,1335,991,665,351,27,-312,-650, -992,-1318,-1631,-1915,-2207,-2510,-2819,-3092,-3364,-3611,-3878,-4142,-4416,-4675,-4922,-5136,-5368,-5603,-5857,-6113, -6360,-6588,-6831,-7048,-7302,-7547,-7796,-8009,-8210,-8399,-8622,-8832,-9028,-9212,-9366,-9506,-9639,-9766,-9890,-9986, -10052,-10106,-10153,-10205,-10256,-10286,-10288,-10289,-10263,-10258,-10237,-10228,-10187,-10146,-10083,-10019,-9964,-9914,-9844,-9752, -9639,-9523,-9392,-9275,-9133,-8963,-8787,-8590,-8395,-8197,-7979,-7765,-7504,-7245,-6984,-6734,-6484,-6223,-5946,-5678, -5414,-5149,-4901,-4653,-4409,-4163,-3910,-3688,-3473,-3253,-3040,-2823,-2625,-2419,-2225,-2048,-1873,-1692,-1506,-1334, -1176,-1028,-883,-744,-605,-457,-338,-226,-130,-33,63,152,227,297,352,411,457,503,547,591, 618,652,692,723,753,790,822,869,900,953,1008,1063,1121,1178,1241,1312,1396,1488,1579,1675, 1779,1873,2003,2133,2266,2392,2531,2677,2848,3004,3176,3348,3522,3697,3885,4086,4288,4493,4688,4882, 5098,5323,5537,5770,5993,6221,6444,6675,6922,7152,7394,7620,7839,8058,8275,8506,8722,8907,9077,9263, 9424,9599,9730,9846,9951,10040,10120,10203,10261,10315,10321,10333,10335,10348,10340,10335,10281,10224,10170,10115, 10067,10006,9912,9819,9719,9613,9509,9375,9237,9086,8893,8714,8549,8364,8161,7920,7673,7417,7165,6901, 6648,6364,6068,5758,5463,5187,4915,4616,4330,4013,3713,3425,3141,2867,2570,2269,1975,1699,1429,1147, 854,552,241,-79,-363,-660,-962,-1296,-1628,-1945,-2256,-2568,-2876,-3202,-3535,-3862,-4160,-4450,-4727,-5023, -5310,-5581,-5849,-6083,-6322,-6560,-6799,-7040,-7270,-7461,-7644,-7835,-8045,-8242,-8432,-8615,-8788,-8946,-9130,-9311, -9495,-9653,-9792,-9924,-10064,-10191,-10326,-10437,-10539,-10620,-10671,-10730,-10802,-10831,-10836,-10814,-10778,-10756,-10706,-10663, -10597,-10503,-10391,-10287,-10177,-10064,-9944,-9801,-9634,-9486,-9319,-9173,-9012,-8852,-8671,-8468,-8268,-8076,-7880,-7673, -7436,-7198,-6970,-6735,-6490,-6256,-5990,-5725,-5448,-5183,-4930,-4672,-4414,-4162,-3892,-3646,-3413,-3192,-2981,-2767, -2545,-2351,-2161,-1994,-1834,-1663,-1517,-1353,-1231,-1103,-981,-846,-736,-620,-518,-427,-338,-239,-167,-71, 17,95,156,228,288,375,423,469,537,581,632,683,737,800,847,908,957,1027,1090,1151, 1220,1296,1374,1454,1548,1656,1762,1878,1995,2125,2259,2413,2570,2729,2885,3048,3229,3429,3629,3832, 4031,4237,4448,4667,4878,5096,5313,5523,5743,5958,6187,6412,6609,6818,7020,7204,7423,7633,7820,7990, 8167,8346,8531,8713,8883,9045,9194,9330,9464,9600,9724,9831,9925,10002,10062,10146,10209,10225,10237,10216, 10179,10172,10132,10076,9988,9888,9783,9696,9574,9467,9329,9170,9015,8848,8713,8559,8387,8208,8023,7840, 7665,7476,7284,7068,6834,6614,6379,6158,5922,5660,5395,5112,4833,4567,4289,3984,3669,3335,3021,2726, 2434,2124,1823,1497,1190,878,592,301,20,-296,-583,-864,-1141,-1394,-1665,-1941,-2219,-2509,-2762,-3019, -3278,-3555,-3843,-4124,-4381,-4645,-4895,-5167,-5438,-5725,-5991,-6244,-6467,-6712,-6954,-7188,-7414,-7607,-7800,-7965, -8140,-8329,-8502,-8638,-8764,-8870,-8986,-9104,-9214,-9309,-9395,-9461,-9521,-9597,-9685,-9749,-9787,-9812,-9841,-9859, -9892,-9896,-9896,-9874,-9843,-9799,-9757,-9704,-9627,-9528,-9401,-9279,-9152,-9007,-8862,-8689,-8496,-8294,-8111,-7915, -7719,-7502,-7274,-7047,-6811,-6598,-6387,-6176,-5952,-5715,-5495,-5277,-5051,-4849,-4626,-4410,-4180,-3968,-3761,-3563, -3348,-3133,-2920,-2715,-2533,-2340,-2155,-1979,-1777,-1611,-1458,-1316,-1190,-1059,-916,-801,-696,-585,-498,-421, -344,-274,-197,-150,-95,-40,6,61,107,153,201,243,285,343,394,452,490,547,607,675, 738,817,883,963,1036,1112,1206,1300,1389,1495,1594,1714,1826,1958,2083,2224,2344,2489,2643,2803, 2973,3142,3315,3494,3694,3887,4107,4312,4518,4718,4937,5172,5406,5635,5862,6086,6321,6557,6777,7006, 7225,7412,7615,7798,7994,8184,8346,8503,8634,8773,8902,9037,9142,9238,9298,9368,9444,9515,9588,9637, 9660,9675,9674,9711,9715,9711,9677,9628,9582,9535,9474,9405,9313,9178,9043,8915,8785,8629,8461,8254, 8050,7853,7646,7451,7223,6992,6736,6474,6236,6006,5761,5500,5238,4971,4723,4481,4241,3981,3704,3418, 3156,2883,2619,2348,2049,1762,1458,1173,887,592,278,-53,-379,-693,-993,-1301,-1609,-1920,-2237,-2551, -2837,-3116,-3400,-3699,-3972,-4252,-4506,-4739,-4991,-5227,-5465,-5728,-5950,-6160,-6372,-6601,-6834,-7058,-7286,-7489, -7676,-7872,-8075,-8292,-8504,-8689,-8862,-9033,-9199,-9362,-9520,-9657,-9776,-9871,-9958,-10056,-10145,-10208,-10249,-10274, -10295,-10308,-10315,-10312,-10282,-10230,-10168,-10115,-10080,-10022,-9954,-9855,-9761,-9643,-9545,-9437,-9314,-9180,-9032,-8861, -8710,-8546,-8377,-8189,-7968,-7754,-7526,-7281,-7061,-6817,-6555,-6294,-6023,-5780,-5508,-5241,-4979,-4709,-4430,-4177, -3932,-3699,-3466,-3227,-3000,-2783,-2569,-2375,-2186,-1987,-1800,-1616,-1444,-1294,-1132,-988,-833,-704,-569,-443, -323,-209,-84,23,124,209,289,365,437,506,578,629,687,732,774,829,880,912,950,985, 1022,1082,1115,1156,1211,1258,1309,1380,1457,1533,1603,1680,1760,1876,1964,2093,2218,2345,2467,2613, 2764,2923,3074,3245,3413,3592,3766,3957,4153,4362,4552,4749,4958,5173,5387,5589,5792,6011,6231,6450, 6685,6913,7130,7327,7553,7770,7988,8209,8411,8614,8801,8982,9177,9372,9537,9675,9812,9934,10057,10171, 10258,10332,10393,10422,10477,10498,10515,10511,10472,10427,10382,10318,10276,10215,10117,10021,9909,9811,9720,9593, 9455,9311,9148,8996,8834,8678,8503,8304,8080,7874,7656,7430,7197,6930,6664,6385,6104,5849,5568,5275, 4952,4636,4337,4037,3732,3441,3114,2805,2489,2191,1916,1631,1312,1003,698,410,125,-162,-475,-776, -1090,-1380,-1672,-1959,-2262,-2574,-2897,-3204,-3516,-3805,-4091,-4388,-4704,-5013,-5289,-5546,-5812,-6094,-6360,-6635, -6871,-7109,-7334,-7539,-7759,-7978,-8192,-8375,-8537,-8711,-8888,-9074,-9235,-9400,-9526,-9658,-9787,-9933,-10080,-10193, -10294,-10392,-10486,-10580,-10676,-10749,-10800,-10827,-10832,-10845,-10861,-10846,-10816,-10766,-10711,-10646,-10565,-10479,-10371,-10243, -10106,-9946,-9820,-9659,-9504,-9326,-9155,-8959,-8769,-8581,-8397,-8200,-7971,-7742,-7533,-7313,-7091,-6873,-6647,-6400, -6151,-5906,-5674,-5418,-5163,-4910,-4656,-4413,-4182,-3933,-3708,-3483,-3234,-3025,-2819,-2622,-2437,-2240,-2064,-1897, -1736,-1605,-1464,-1337,-1215,-1085,-978,-882,-780,-693,-600,-523,-440,-369,-296,-237,-163,-89,-16,47, 99,159,231,281,345,409,461,504,568,631,704,770,845,906,979,1058,1140,1229,1324,1420, 1531,1650,1766,1915,2034,2173,2322,2472,2631,2811,2993,3186,3360,3551,3762,3990,4200,4429,4650,4864, 5088,5314,5547,5784,5999,6235,6448,6674,6897,7106,7305,7499,7679,7875,8065,8260,8434,8583,8745,8898, 9048,9193,9338,9447,9555,9637,9746,9851,9931,9988,10039,10061,10094,10103,10111,10098,10060,9992,9940,9877, 9808,9710,9602,9456,9324,9181,9043,8894,8725,8544,8342,8151,7986,7807,7603,7389,7166,6945,6722,6508, 6297,6053,5796,5553,5313,5063,4809,4527,4239,3946,3651,3368,3083,2789,2460,2143,1836,1524,1231,936, 613,296,-25,-323,-610,-883,-1183,-1468,-1773,-2055,-2321,-2592,-2853,-3126,-3410,-3669,-3915,-4158,-4408,-4670, -4935,-5201,-5454,-5688,-5933,-6174,-6428,-6680,-6917,-7121,-7325,-7542,-7742,-7947,-8147,-8327,-8482,-8628,-8769,-8931, -9050,-9165,-9259,-9346,-9422,-9501,-9576,-9659,-9691,-9724,-9748,-9783,-9817,-9830,-9815,-9803,-9780,-9751,-9729,-9695, -9655,-9575,-9484,-9401,-9303,-9195,-9075,-8928,-8777,-8612,-8439,-8265,-8088,-7891,-7667,-7448,-7234,-7007,-6786,-6547, -6315,-6080,-5834,-5606,-5389,-5161,-4921,-4677,-4460,-4225,-4014,-3792,-3587,-3374,-3155,-2953,-2753,-2565,-2374,-2180, -1990,-1821,-1652,-1484,-1337,-1173,-1019,-876,-749,-635,-526,-413,-310,-216,-120,-44,27,80,145,212, 275,315,364,412,453,499,545,596,638,665,733,784,839,893,949,1015,1087,1162,1246,1328, 1422,1506,1602,1707,1823,1934,2057,2187,2308,2451,2588,2744,2909,3063,3216,3385,3569,3761,3943,4133, 4327,4535,4740,4956,5176,5395,5600,5820,6045,6273,6496,6733,6953,7163,7371,7584,7790,8002,8191,8361, 8539,8708,8872,9019,9161,9285,9375,9485,9584,9678,9758,9798,9835,9880,9908,9933,9964,9952,9933,9889, 9849,9821,9770,9706,9631,9538,9444,9339,9234,9116,8979,8812,8647,8481,8313,8124,7928,7713,7495,7256, 7040,6804,6564,6308,6043,5770,5522,5261,4999,4733,4455,4162,3882,3615,3352,3063,2772,2484,2191,1910, 1629,1340,1046,731,429,138,-158,-444,-758,-1081,-1392,-1687,-1989,-2265,-2566,-2870,-3182,-3475,-3753,-4017, -4298,-4567,-4843,-5109,-5366,-5606,-5838,-6080,-6332,-6563,-6803,-7010,-7219,-7431,-7646,-7852,-8056,-8240,-8413,-8595, -8769,-8951,-9128,-9272,-9419,-9544,-9662,-9797,-9916,-10019,-10097,-10170,-10233,-10296,-10337,-10387,-10401,-10394,-10383,-10366, -10343,-10309,-10259,-10185,-10106,-10020,-9946,-9852,-9727,-9617,-9466,-9324,-9179,-9028,-8880,-8702,-8502,-8311,-8120,-7918, -7715,-7496,-7265,-7033,-6787,-6546,-6319,-6072,-5810,-5549,-5301,-5046,-4795,-4547,-4309,-4052,-3801,-3566,-3341,-3127, -2903,-2691,-2490,-2283,-2093,-1913,-1744,-1576,-1407,-1249,-1117,-984,-846,-728,-609,-497,-396,-290,-209,-110, -23,57,125,189,251,321,376,432,489,532,582,621,671,714,763,804,859,891,954,1001, 1062,1121,1194,1257,1334,1418,1511,1603,1698,1809,1924,2041,2179,2323,2466,2613,2765,2933,3109,3296, 3471,3660,3860,4060,4254,4470,4693,4901,5114,5331,5550,5781,6001,6232,6452,6673,6896,7126,7347,7570, 7773,7977,8176,8378,8568,8779,8930,9109,9256,9409,9562,9703,9820,9935,10024,10108,10190,10251,10308,10346, 10356,10368,10364,10351,10338,10296,10232,10163,10082,9998,9924,9821,9708,9569,9431,9296,9150,8985,8818,8629, 8438,8238,8045,7840,7626,7396,7152,6911,6681,6426,6178,5912,5632,5355,5087,4812,4537,4236,3935,3634, 3344,3044,2746,2452,2137,1814,1502,1217,918,615,296,-12,-323,-618,-923,-1211,-1514,-1816,-2128,-2411, -2702,-2985,-3276,-3572,-3865,-4154,-4428,-4690,-4964,-5231,-5512,-5779,-6033,-6272,-6518,-6758,-7006,-7243,-7477,-7691, -7888,-8093,-8301,-8486,-8681,-8852,-9015,-9180,-9341,-9490,-9630,-9762,-9875,-9971,-10076,-10179,-10271,-10341,-10406,-10453, -10494,-10522,-10563,-10585,-10582,-10550,-10532,-10500,-10463,-10407,-10331,-10262,-10168,-10064,-9957,-9848,-9712,-9558,-9391,-9232, -9063,-8887,-8697,-8500,-8290,-8078,-7852,-7650,-7431,-7192,-6953,-6713,-6470,-6241,-5998,-5758,-5516,-5265,-5008,-4778, -4544,-4300,-4057,-3823,-3600,-3378,-3161,-2952,-2750,-2539,-2347,-2156,-1982,-1811,-1644,-1478,-1334,-1182,-1052,-926, -819,-696,-594,-486,-390,-312,-226,-138,-75,1,65,136,187,247,301,370,432,479,540,603, 650,712,777,843,907,975,1048,1128,1204,1295,1375,1471,1570,1664,1782,1894,2019,2141,2275,2422, 2572,2717,2877,3047,3218,3386,3588,3778,3979,4177,4379,4584,4803,5026,5249,5465,5687,5904,6118,6347, 6575,6789,7001,7217,7420,7634,7836,8029,8218,8395,8567,8738,8906,9064,9208,9332,9454,9566,9676,9772, 9851,9918,9967,10018,10061,10087,10102,10106,10090,10057,10017,9976,9914,9847,9762,9662,9566,9461,9339,9208, 9070,8915,8735,8574,8409,8226,8031,7818,7609,7397,7183,6955,6725,6473,6224,5952,5708,5454,5182,4909, 4635,4346,4084,3797,3513,3218,2921,2615,2328,2044,1752,1451,1148,847,553,253,-45,-334,-635,-944, -1252,-1540,-1819,-2118,-2402,-2686,-2984,-3265,-3547,-3812,-4090,-4362,-4643,-4895,-5162,-5407,-5657,-5903,-6147,-6387, -6619,-6827,-7043,-7257,-7482,-7684,-7876,-8057,-8236,-8404,-8583,-8744,-8908,-9057,-9177,-9304,-9440,-9550,-9654,-9738, -9825,-9900,-9968,-10021,-10077,-10112,-10132,-10139,-10145,-10143,-10118,-10092,-10041,-9989,-9918,-9848,-9768,-9679,-9572,-9447, -9315,-9182,-9033,-8885,-8718,-8554,-8369,-8183,-7989,-7800,-7588,-7378,-7152,-6935,-6714,-6486,-6249,-6029,-5784,-5550, -5301,-5080,-4845,-4604,-4370,-4141,-3903,-3695,-3480,-3262,-3060,-2858,-2651,-2476,-2293,-2114,-1944,-1780,-1620,-1478, -1329,-1194,-1072,-941,-826,-709,-627,-526,-427,-333,-256,-177,-106,-25,22,86,146,208,252,318, 365,422,471,519,577,630,692,751,819,883,956,1029,1107,1204,1293,1387,1493,1601,1716,1826, 1954,2086,2228,2371,2527,2678,2846,3010,3187,3372,3558,3740,3934,4134,4349,4562,4768,4989,5212,5424, 5655,5879,6111,6332,6550,6770,6988,7207,7421,7632,7833,8019,8204,8388,8563,8733,8896,9039,9181,9323, 9439,9560,9663,9757,9830,9903,9969,10021,10055,10079,10090,10093,10082,10062,10029,9970,9907,9826,9745,9661, 9550,9437,9306,9170,9014,8862,8701,8527,8339,8138,7937,7745,7534,7318,7093,6871,6627,6393,6150,5904, 5653,5376,5110,4843,4576,4301,4025,3737,3445,3146,2854,2566,2271,1957,1647,1340,1039,733,437,133, -174,-486,-791,-1087,-1379,-1676,-1974,-2264,-2546,-2832,-3103,-3380,-3655,-3936,-4211,-4476,-4734,-4991,-5251,-5511, -5759,-6013,-6258,-6492,-6727,-6960,-7202,-7419,-7641,-7840,-8042,-8239,-8425,-8611,-8781,-8934,-9090,-9238,-9381,-9520, -9634,-9731,-9834,-9909,-9996,-10064,-10132,-10176,-10212,-10242,-10264,-10281,-10278,-10265,-10244,-10209,-10161,-10112,-10057,-9983, -9902,-9802,-9693,-9583,-9452,-9313,-9163,-9003,-8825,-8642,-8447,-8261,-8055,-7834,-7611,-7389,-7153,-6926,-6687,-6444, -6199,-5944,-5703,-5466,-5217,-4973,-4733,-4492,-4254,-4016,-3780,-3554,-3324,-3104,-2878,-2673,-2475,-2280,-2088,-1900, -1721,-1546,-1383,-1233,-1094,-952,-819,-694,-582,-470,-369,-269,-192,-107,-29,43,104,168,224,282, 327,375,424,470,509,556,598,647,687,720,771,820,866,922,976,1040,1102,1169,1242,1328, 1403,1498,1594,1706,1809,1923,2052,2184,2316,2466,2610,2777,2939,3104,3279,3468,3658,3849,4050,4258, 4467,4669,4891,5116,5340,5560,5783,6007,6241,6465,6697,6926,7143,7361,7586,7794,8011,8204,8392,8582, 8762,8931,9099,9250,9399,9516,9630,9741,9842,9928,9993,10048,10100,10137,10169,10191,10194,10185,10155,10131, 10090,10048,9980,9915,9828,9728,9629,9520,9396,9267,9109,8942,8779,8604,8408,8208,8004,7783,7556,7332, 7101,6855,6600,6336,6076,5815,5549,5274,4996,4717,4436,4154,3877,3596,3313,3012,2718,2425,2129,1839, 1535,1241,935,621,319,23,-287,-602,-913,-1229,-1534,-1840,-2142,-2442,-2751,-3053,-3347,-3644,-3917,-4211, -4487,-4757,-5029,-5288,-5537,-5789,-6022,-6267,-6515,-6738,-6970,-7192,-7404,-7624,-7824,-8036,-8229,-8420,-8599,-8781, -8968,-9138,-9296,-9448,-9604,-9734,-9862,-9985,-10092,-10186,-10262,-10327,-10406,-10462,-10494,-10523,-10540,-10545,-10534,-10509, -10484,-10446,-10376,-10310,-10246,-10167,-10082,-9974,-9864,-9741,-9607,-9467,-9330,-9169,-9009,-8823,-8648,-8462,-8267,-8059, -7850,-7628,-7398,-7165,-6933,-6695,-6447,-6200,-5941,-5689,-5442,-5185,-4940,-4686,-4435,-4190,-3951,-3725,-3494,-3268, -3049,-2843,-2644,-2440,-2250,-2072,-1888,-1722,-1555,-1407,-1252,-1111,-974,-843,-722,-603,-487,-387,-297,-196, -100,-23,56,130,196,256,316,381,442,490,543,599,651,712,758,820,873,933,996,1066, 1132,1207,1283,1364,1464,1558,1645,1751,1860,1983,2103,2230,2372,2518,2654,2814,2973,3151,3323,3499, 3688,3881,4077,4285,4489,4708,4908,5129,5341,5572,5788,6010,6225,6445,6662,6873,7096,7308,7519,7726, 7929,8126,8333,8511,8695,8868,9035,9193,9346,9493,9639,9755,9862,9963,10053,10123,10197,10248,10286,10308, 10317,10325,10315,10277,10233,10183,10114,10036,9942,9859,9756,9636,9507,9370,9241,9095,8930,8770,8602,8420, 8232,8051,7856,7651,7424,7200,6963,6737,6485,6234,5971,5700,5424,5149,4879,4590,4291,3986,3682,3389, 3087,2783,2469,2163,1856,1557,1263,971,661,359,67,-229,-529,-821,-1114,-1409,-1701,-1996,-2274,-2556, -2844,-3134,-3423,-3713,-3986,-4269,-4547,-4822,-5091,-5368,-5628,-5884,-6135,-6388,-6635,-6871,-7106,-7325,-7532,-7731, -7929,-8125,-8310,-8478,-8636,-8793,-8942,-9088,-9220,-9351,-9468,-9572,-9674,-9768,-9864,-9946,-10015,-10076,-10138,-10184, -10224,-10256,-10267,-10272,-10253,-10228,-10203,-10156,-10104,-10027,-9945,-9846,-9745,-9623,-9499,-9360,-9194,-9030,-8862,-8690, -8508,-8318,-8126,-7915,-7714,-7501,-7292,-7071,-6852,-6622,-6393,-6176,-5945,-5719,-5483,-5255,-5019,-4782,-4557,-4334, -4103,-3874,-3648,-3439,-3227,-3017,-2806,-2617,-2422,-2242,-2065,-1902,-1742,-1589,-1440,-1310,-1182,-1062,-946,-843, -741,-644,-552,-480,-403,-323,-255,-184,-125,-53,-4,56,111,170,227,285,344,390,451,509, 564,635,698,757,831,910,994,1078,1159,1251,1348,1462,1565,1681,1801,1937,2056,2204,2357,2511, 2673,2836,3006,3186,3368,3563,3767,3973,4172,4382,4605,4830,5049,5277,5506,5736,5963,6195,6424,6658, 6877,7092,7315,7527,7726,7925,8114,8299,8475,8635,8803,8960,9107,9232,9356,9468,9581,9669,9766,9841, 9907,9962,10009,10055,10084,10094,10099,10079,10063,10032,9992,9924,9852,9761,9667,9561,9444,9318,9162,9001, 8830,8652,8464,8281,8078,7867,7652,7431,7207,6979,6741,6496,6251,6003,5751,5506,5245,4993,4720,4456, 4188,3921,3639,3345,3050,2754,2441,2155,1854,1551,1230,913,596,284,-31,-349,-661,-980,-1299,-1606, -1897,-2192,-2490,-2790,-3072,-3357,-3624,-3904,-4165,-4440,-4700,-4968,-5202,-5449,-5692,-5938,-6190,-6432,-6666,-6911, -7125,-7355,-7575,-7808,-8016,-8217,-8404,-8605,-8794,-8971,-9148,-9306,-9445,-9579,-9700,-9819,-9926,-10009,-10080,-10147, -10201,-10254,-10290,-10314,-10331,-10322,-10319,-10301,-10286,-10249,-10210,-10154,-10090,-10024,-9954,-9868,-9770,-9656,-9533,-9393, -9265,-9115,-8947,-8779,-8587,-8389,-8189,-7974,-7770,-7530,-7290,-7042,-6800,-6553,-6305,-6045,-5795,-5539,-5278,-5029, -4781,-4537,-4293,-4045,-3819,-3595,-3367,-3146,-2930,-2724,-2516,-2317,-2130,-1952,-1769,-1588,-1426,-1268,-1112,-973, -830,-699,-564,-446,-335,-239,-144,-52,37,111,181,244,302,355,404,455,505,541,585,633, 668,705,755,794,845,890,942,1001,1058,1118,1187,1250,1324,1408,1495,1586,1689,1792,1894,2021, 2149,2277,2411,2553,2700,2868,3025,3201,3379,3559,3742,3931,4137,4340,4546,4755,4957,5178,5399,5615, 5847,6071,6298,6523,6747,6980,7201,7431,7654,7870,8073,8279,8488,8693,8875,9044,9219,9373,9534,9663, 9786,9895,9988,10069,10143,10209,10263,10288,10307,10314,10322,10307,10297,10254,10203,10143,10083,10014,9942,9845, 9743,9636,9517,9392,9251,9104,8951,8759,8581,8402,8208,8005,7780,7542,7298,7048,6789,6541,6274,5995, 5701,5415,5139,4861,4566,4284,3978,3678,3384,3092,2809,2511,2208,1910,1622,1330,1038,743,444,138, -184,-479,-775,-1072,-1395,-1708,-2022,-2324,-2632,-2937,-3241,-3555,-3868,-4158,-4446,-4722,-5009,-5286,-5554,-5819, -6068,-6314,-6552,-6790,-7029,-7260,-7466,-7668,-7868,-8075,-8268,-8459,-8646,-8824,-8988,-9159,-9326,-9496,-9646,-9782, -9909,-10040,-10155,-10266,-10369,-10465,-10536,-10591,-10640,-10695,-10720,-10730,-10717,-10696,-10670,-10624,-10579,-10519,-10439,-10342, -10237,-10132,-10015,-9895,-9754,-9595,-9450,-9280,-9120,-8950,-8785,-8597,-8396,-8187,-7987,-7780,-7565,-7333,-7097,-6865, -6627,-6379,-6148,-5890,-5633,-5368,-5112,-4859,-4612,-4361,-4119,-3867,-3628,-3399,-3179,-2968,-2763,-2547,-2357,-2168, -1994,-1831,-1661,-1512,-1355,-1225,-1095,-972,-838,-727,-617,-514,-419,-331,-234,-163,-76,8,77,140, 211,268,347,395,441,507,555,604,660,711,779,828,893,950,1019,1087,1157,1230,1313,1398, 1483,1582,1693,1804,1925,2047,2183,2317,2468,2625,2787,2944,3113,3292,3486,3684,3884,4085,4294,4502, 4715,4926,5145,5366,5580,5802,6020,6244,6473,6680,6893,7103,7294,7507,7714,7907,8083,8264,8444,8619, 8791,8954,9112,9259,9386,9513,9637,9749,9845,9936,10005,10064,10129,10182,10199,10212,10194,10161,10143,10100, 10046,9967,9878,9778,9687,9562,9453,9321,9168,9014,8850,8700,8540,8361,8179,7990,7801,7607,7408,7203, 6983,6749,6522,6281,6046,5802,5543,5282,5003,4723,4450,4172,3877,3570,3251,2943,2649,2354,2043,1748, 1433,1127,814,523,225,-60,-372,-660,-946,-1235,-1503,-1776,-2054,-2336,-2625,-2888,-3152,-3416,-3690,-3969, -4244,-4502,-4767,-5017,-5281,-5540,-5816,-6072,-6321,-6545,-6785,-7022,-7246,-7465,-7665,-7858,-8031,-8205,-8387,-8560, -8704,-8837,-8957,-9074,-9191,-9300,-9396,-9492,-9565,-9626,-9696,-9776,-9829,-9869,-9895,-9920,-9931,-9949,-9947,-9940, -9910,-9876,-9825,-9776,-9712,-9632,-9531,-9411,-9288,-9160,-9014,-8868,-8699,-8514,-8317,-8136,-7935,-7738,-7524,-7303, -7081,-6847,-6627,-6411,-6192,-5964,-5730,-5505,-5281,-5048,-4838,-4611,-4393,-4161,-3945,-3732,-3530,-3316,-3101,-2892, -2689,-2503,-2312,-2130,-1957,-1767,-1600,-1449,-1309,-1178,-1051,-912,-797,-693,-581,-491,-411,-331,-258,-180, -125,-68,-11,38,93,141,194,243,288,330,386,440,494,538,594,655,719,778,857,924, 1005,1078,1156,1248,1344,1434,1535,1643,1760,1876,2008,2138,2284,2410,2558,2715,2877,3048,3223,3399, 3583,3780,3973,4191,4397,4604,4809,5027,5256,5485,5710,5937,6161,6390,6620,6837,7061,7278,7470,7672, 7857,8049,8234,8403,8563,8701,8841,8969,9103,9211,9311,9379,9452,9526,9593,9660,9709,9733,9747,9744, 9771,9767,9756,9720,9671,9622,9564,9497,9422,9329,9199,9065,8935,8799,8643,8479,8280,8082,7885,7680, 7480,7258,7030,6781,6523,6284,6049,5802,5541,5282,5013,4758,4509,4259,3996,3717,3430,3161,2884,2611, 2336,2040,1752,1450,1160,870,575,264,-55,-375,-687,-990,-1296,-1600,-1906,-2220,-2529,-2816,-3101,-3384, -3679,-3951,-4229,-4492,-4732,-4988,-5228,-5468,-5730,-5958,-6176,-6394,-6625,-6854,-7075,-7302,-7508,-7700,-7896,-8094, -8304,-8508,-8692,-8863,-9033,-9196,-9352,-9504,-9642,-9760,-9859,-9947,-10043,-10129,-10193,-10239,-10270,-10295,-10309,-10316, -10315,-10292,-10246,-10190,-10137,-10098,-10037,-9969,-9874,-9782,-9664,-9561,-9448,-9323,-9186,-9037,-8866,-8711,-8542,-8369, -8180,-7964,-7751,-7523,-7281,-7062,-6820,-6562,-6307,-6041,-5797,-5529,-5264,-5007,-4742,-4468,-4217,-3972,-3739,-3507, -3268,-3042,-2826,-2610,-2413,-2224,-2023,-1836,-1653,-1480,-1328,-1166,-1021,-866,-738,-604,-477,-358,-244,-125, -19,81,165,245,319,392,459,528,582,640,687,730,784,837,871,911,950,989,1047,1083, 1128,1184,1235,1286,1358,1434,1513,1584,1663,1745,1860,1949,2076,2201,2327,2450,2596,2746,2904,3055, 3226,3396,3574,3750,3940,4136,4345,4537,4737,4946,5162,5376,5581,5788,6008,6228,6447,6682,6908,7125, 7326,7551,7767,7981,8199,8400,8602,8787,8966,9156,9346,9509,9647,9784,9906,10027,10138,10225,10300,10363, 10396,10449,10470,10486,10485,10451,10410,10366,10303,10258,10197,10102,10007,9896,9795,9700,9571,9434,9290,9127, 8973,8808,8649,8472,8275,8053,7846,7627,7399,7167,6905,6643,6365,6086,5830,5551,5261,4943,4631,4334, 4034,3730,3440,3117,2809,2493,2195,1917,1629,1310,1002,697,406,118,-169,-482,-782,-1095,-1386,-1679, -1967,-2269,-2578,-2898,-3202,-3513,-3802,-4087,-4381,-4693,-4998,-5274,-5533,-5798,-6078,-6343,-6615,-6851,-7091,-7318, -7525,-7745,-7964,-8179,-8363,-8528,-8704,-8880,-9065,-9225,-9391,-9519,-9652,-9780,-9924,-10067,-10179,-10280,-10377,-10470, -10560,-10652,-10724,-10773,-10801,-10806,-10818,-10831,-10816,-10786,-10738,-10684,-10619,-10538,-10452,-10345,-10220,-10084,-9926,-9799, -9638,-9483,-9306,-9135,-8940,-8749,-8561,-8375,-8177,-7948,-7720,-7510,-7288,-7064,-6846,-6620,-6373,-6125,-5880,-5647, -5393,-5140,-4888,-4636,-4393,-4162,-3915,-3691,-3467,-3220,-3012,-2807,-2610,-2425,-2230,-2054,-1888,-1727,-1595,-1454, -1327,-1205,-1075,-968,-872,-770,-681,-589,-511,-429,-357,-285,-226,-154,-80,-8,55,106,166,237, 286,351,414,466,510,574,636,710,776,850,912,987,1065,1148,1238,1333,1429,1541,1660,1777, 1925,2045,2184,2333,2484,2643,2822,3005,3197,3372,3563,3773,4001,4210,4438,4659,4873,5097,5323,5555, 5792,6006,6242,6456,6681,6904,7113,7312,7507,7687,7883,8073,8267,8441,8590,8752,8905,9054,9198,9342, 9451,9559,9641,9749,9852,9931,9988,10039,10060,10093,10101,10109,10095,10057,9990,9938,9874,9806,9707,9600, 9454,9322,9179,9041,8893,8723,8542,8340,8149,7985,7805,7601,7387,7164,6943,6720,6505,6293,6050,5793, 5550,5310,5060,4806,4524,4237,3943,3649,3366,3081,2787,2459,2141,1834,1522,1229,935,612,1,-70, -277,-473,-688,-858,-991,-1073,-1123,-1113,-1058,-958,-847,-720,-598,-467,-302,-77,193,496,802,1109, 1396,1669,1908,2124,2297,2442,2569,2715,2869,3042,3208,3355,3497,3634,3776,3944,4132,4337,4565,4830, 5139,5475,5814,6154,6469,6769,7046,7312,7572,7800,7988,8136,8247,8320,8362,8351,8301,8213,8092,7957, 7820,7676,7525,7368,7210,7052,6913,6782,6668,6539,6414,6296,6180,6068,5949,5811,5656,5493,5323,5139, 4945,4733,4498,4243,3989,3722,3450,3164,2864,2563,2264,1967,1671,1386,1097,817,538,281,31,-205, -441,-678,-923,-1157,-1396,-1636,-1881,-2138,-2400,-2659,-2923,-3186,-3447,-3704,-3954,-4197,-4441,-4669,-4891,-5108, -5329,-5552,-5773,-5996,-6203,-6401,-6585,-6769,-6939,-7100,-7248,-7407,-7581,-7752,-7925,-8111,-8295,-8475,-8640,-8793, -8944,-9083,-9218,-9360,-9499,-9644,-9786,-9918,-10030,-10120,-10178,-10213,-10228,-10232,-10218,-10182,-10136,-10070,-9975,-9864, -9716,-9535,-9318,-9068,-8796,-8498,-8178,-7838,-7481,-7103,-6703,-6279,-5826,-5352,-4852,-4333,-3808,-3274,-2745,-2212, -1680,-1150,-631,-116,372,847,1289,1710,2100,2453,2770,3058,3311,3535,3715,3865,3983,4065,4108,4127, 4113,4073,4016,3937,3842,3734,3606,3473,3323,3161,2980,2789,2592,2390,2171,1963,1737,1510,1271,1022, 775,523,272,27,-217,-461,-699,-934,-1166,-1381,-1597,-1814,-2016,-2207,-2387,-2558,-2707,-2842,-2961,-3060, -3145,-3218,-3276,-3329,-3365,-3382,-3385,-3377,-3337,-3286,-3211,-3121,-3011,-2879,-2725,-2554,-2362,-2142,-1900,-1638, -1353,-1043,-713,-366,2,389,784,1201,1628,2060,2503,2949,3389,3831,4251,4682,5097,5504,5904,6286, 6654,7003,7332,7643,7928,8185,8425,8639,8835,9013,9166,9294,9400,9471,9519,9537,9522,9482,9416,9329, 9233,9118,8993,8860,8707,8527,8333,8123,7905,7670,7424,7183,6942,6704,6475,6247,6024,5793,5561,5329, 5101,4862,4634,4403,4181,3954,3730,3509,3294,3066,2839,2600,2365,2137,1903,1672,1449,1221,989,756, 528,290,44,-199,-438,-672,-899,-1119,-1331,-1538,-1751,-1959,-2166,-2379,-2599,-2818,-3034,-3245,-3457,-3658, -3851,-4042,-4243,-4448,-4657,-4869,-5091,-5316,-5534,-5750,-5966,-6169,-6366,-6556,-6752,-6951,-7138,-7322,-7507,-7685, -7851,-8012,-8160,-8298,-8416,-8521,-8630,-8735,-8827,-8916,-8992,-9063,-9114,-9149,-9172,-9182,-9169,-9141,-9093,-9042, -8981,-8898,-8794,-8669,-8514,-8324,-8109,-7864,-7595,-7297,-6975,-6631,-6272,-5895,-5490,-5076,-4637,-4183,-3711,-3239, -2762,-2286,-1813,-1348,-895,-453,-19,395,795,1178,1537,1874,2179,2459,2714,2940,3141,3317,3466,3596, 3690,3761,3806,3819,3806,3775,3712,3634,3533,3415,3282,3138,2976,2805,2622,2423,2227,2018,1806,1601, 1382,1165,946,727,507,287,67,-151,-363,-573,-771,-966,-1155,-1343,-1526,-1709,-1887,-2064,-2231,-2395, -2545,-2687,-2810,-2918,-3004,-3080,-3133,-3181,-3199,-3203,-3187,-3149,-3081,-2997,-2879,-2733,-2563,-2366,-2151,-1903, -1635,-1346,-1029,-688,-328,55,452,873,1316,1760,2228,2702,3185,3673,4159,4642,5121,5586,6041,6487, 6914,7318,7701,8067,8403,8717,8993,9242,9449,9624,9764,9882,9968,10029,10059,10084,10074,10044,9993,9929, 9839,9726,9601,9472,9339,9193,9043,8880,8714,8537,8346,8145,7931,7705,7474,7240,7003,6767,6521,6272, 6023,5760,5494,5216,4944,4663,4384,4111,3850,3591,3342,3092,2844,2597,2350,2098,1856,1610,1366,1127, 899,674,450,229,7,-226,-464,-702,-944,-1186,-1428,-1671,-1908,-2142,-2373,-2602,-2836,-3068,-3305,-3546, -3776,-4012,-4235,-4454,-4671,-4883,-5085,-5295,-5497,-5702,-5915,-6123,-6328,-6525,-6718,-6902,-7091,-7269,-7450,-7626, -7813,-7996,-8186,-8374,-8558,-8730,-8898,-9045,-9187,-9322,-9446,-9569,-9677,-9778,-9867,-9949,-10012,-10052,-10072,-10065, -10042,-9990,-9925,-9841,-9735,-9607,-9457,-9280,-9083,-8852,-8590,-8310,-7988,-7648,-7289,-6904,-6500,-6074,-5617,-5147, -4650,-4138,-3611,-3074,-2524,-1982,-1440,-912,-392,111,602,1068,1519,1935,2324,2677,2995,3275,3521,3728, 3909,4048,4162,4247,4299,4322,4325,4295,4251,4180,4091,3986,3867,3739,3590,3433,3260,3070,2868,2658, 2442,2220,1985,1751,1521,1285,1054,815,573,331,82,-166,-406,-639,-875,-1097,-1318,-1525,-1724,-1916, -2110,-2288,-2474,-2643,-2802,-2955,-3098,-3233,-3356,-3466,-3577,-3668,-3750,-3819,-3877,-3915,-3934,-3923,-3901,-3852, -3776,-3681,-3559,-3411,-3228,-3017,-2777,-2507,-2200,-1864,-1496,-1100,-679,-233,236,723,1232,1751,2283,2821, 3363,3898,4429,4955,5476,5987,6483,6970,7430,7874,8289,8672,9023,9341,9625,9875,10092,10277,10437,10567, 10664,10736,10761,10761,10724,10663,10580,10472,10342,10199,10050,9888,9711,9526,9335,9122,8902,8679,8450,8225, 7993,7761,7535,7310,7082,6853,6618,6375,6125,5867,5619,5377,5129,4882,4632,4386,4137,3879,3629,3367, 3103,2837,2579,2327,2076,1829,1590,1349,1113,867,632,394,154,-90,-330,-559,-787,-1009,-1230,-1449, -1672,-1906,-2132,-2365,-2598,-2844,-3078,-3315,-3549,-3781,-4017,-4250,-4485,-4734,-4977,-5207,-5454,-5692,-5930,-6154, -6373,-6589,-6797,-7000,-7205,-7406,-7612,-7807,-7993,-8176,-8351,-8517,-8675,-8823,-8973,-9112,-9250,-9389,-9529,-9656, -9773,-9873,-9965,-10036,-10093,-10131,-10158,-10161,-10149,-10117,-10077,-10006,-9909,-9776,-9619,-9422,-9199,-8950,-8673,-8374, -8045,-7692,-7317,-6921,-6499,-6053,-5586,-5100,-4604,-4092,-3580,-3069,-2554,-2041,-1533,-1034,-541,-60,403,851, 1273,1670,2037,2371,2677,2949,3194,3397,3577,3721,3836,3918,3963,3981,3974,3947,3892,3818,3724,3615, 3485,3341,3189,3020,2841,2661,2468,2275,2075,1873,1673,1464,1247,1028,810,589,364,135,-89,-313, -531,-746,-955,-1163,-1372,-1579,-1772,-1962,-2144,-2312,-2471,-2622,-2755,-2877,-2981,-3072,-3151,-3215,-3264,-3297, -3310,-3309,-3282,-3237,-3174,-3092,-2985,-2862,-2715,-2550,-2362,-2144,-1906,-1644,-1356,-1046,-714,-359,23,425, 843,1279,1737,2200,2667,3141,3613,4087,4553,5009,5458,5897,6318,6719,7101,7456,7789,8087,8360,8606, 8823,9016,9189,9337,9457,9551,9618,9667,9687,9678,9649,9599,9532,9451,9360,9257,9127,8990,8833,8659, 8476,8271,8059,7838,7607,7379,7150,6919,6687,6450,6212,5969,5720,5471,5226,4975,4728,4493,4257,4030, 3803,3576,3339,3104,2865,2624,2386,2151,1907,1666,1433,1190,954,711,463,214,-43,-295,-545,-794, -1033,-1275,-1508,-1742,-1966,-2196,-2420,-2650,-2878,-3100,-3318,-3528,-3730,-3934,-4131,-4329,-4529,-4733,-4929,-5142, -5350,-5563,-5778,-5986,-6187,-6391,-6588,-6788,-6989,-7183,-7383,-7581,-7776,-7967,-8147,-8315,-8476,-8621,-8758,-8889, -9008,-9124,-9221,-9309,-9387,-9445,-9491,-9519,-9527,-9518,-9493,-9449,-9400,-9331,-9252,-9144,-9022,-8875,-8703,-8501, -8280,-8030,-7755,-7454,-7140,-6805,-6447,-6066,-5659,-5238,-4788,-4325,-3850,-3370,-2877,-2388,-1904,-1427,-955,-498, -59,368,775,1164,1526,1862,2173,2455,2708,2936,3131,3304,3446,3567,3659,3730,3765,3783,3779,3754, 3707,3639,3558,3457,3343,3211,3060,2895,2724,2539,2350,2152,1947,1738,1524,1311,1099,884,666,451, 239,29,-173,-375,-568,-759,-943,-1122,-1300,-1472,-1639,-1801,-1955,-2103,-2240,-2367,-2481,-2587,-2682,-2761, -2831,-2884,-2920,-2939,-2942,-2921,-2877,-2811,-2720,-2601,-2464,-2293,-2099,-1877,-1630,-1365,-1069,-752,-416,-59, 323,719,1138,1567,2016,2472,2933,3400,3870,4335,4801,5252,5701,6135,6557,6964,7363,7735,8090,8414, 8712,8978,9217,9418,9597,9740,9854,9940,9998,10041,10055,10040,10000,9934,9854,9752,9634,9507,9372,9223, 9068,8909,8739,8555,8358,8155,7946,7728,7508,7291,7069,6841,6611,6374,6141,5895,5642,5384,5123,4861, 4599,4341,4083,3831,3578,3329,3073,2825,2567,2320,2071,1829,1578,1352,1122,901,676,447,227,3, -224,-446,-672,-899,-1127,-1352,-1571,-1795,-2018,-2243,-2468,-2695,-2932,-3168,-3399,-3629,-3857,-4087,-4303,-4519, -4738,-4958,-5180,-5393,-5610,-5822,-6030,-6232,-6426,-6620,-6809,-6987,-7163,-7350,-7525,-7704,-7886,-8063,-8230,-8391, -8545,-8700,-8839,-8977,-9109,-9231,-9347,-9459,-9556,-9642,-9708,-9749,-9780,-9784,-9777,-9741,-9684,-9607,-9510,-9387, -9241,-9064,-8866,-8627,-8360,-8072,-7756,-7414,-7053,-6668,-6262,-5837,-5389,-4924,-4442,-3939,-3430,-2909,-2387,-1866, -1339,-824,-321,173,656,1123,1560,1975,2359,2720,3043,3334,3596,3821,4012,4167,4293,4393,4457,4492, 4503,4477,4441,4374,4292,4192,4078,3947,3808,3649,3482,3302,3113,2913,2709,2495,2280,2057,1833,1600, 1362,1119,875,623,373,123,-125,-372,-622,-860,-1091,-1320,-1548,-1769,-1986,-2194,-2399,-2584,-2763,-2929, -3087,-3230,-3361,-3477,-3585,-3682,-3756,-3827,-3876,-3906,-3918,-3910,-3884,-3832,-3761,-3662,-3544,-3394,-3225,-3018, -2787,-2527,-2232,-1911,-1559,-1184,-783,-353,94,559,1048,1551,2063,2585,3102,3625,4133,4634,5131,5615, 6077,6524,6954,7360,7739,8093,8417,8711,8972,9205,9417,9593,9745,9870,9964,10026,10065,10074,10061,10018, 9952,9857,9753,9632,9505,9351,9194,9015,8821,8617,8407,8183,7961,7729,7499,7267,7036,6810,6579,6340, 6102,5860,5619,5382,5139,4906,4661,4422,4194,3957,3718,3479,3229,2980,2730,2477,2232,1988,1736,1495, 1256,1019,778,537,298,56,-184,-419,-648,-873,-1097,-1313,-1530,-1739,-1953,-2159,-2370,-2582,-2792,-3009, -3217,-3420,-3627,-3832,-4049,-4260,-4475,-4696,-4916,-5138,-5363,-5587,-5802,-6024,-6234,-6447,-6655,-6864,-7066,-7271, -7467,-7663,-7847,-8030,-8203,-8364,-8514,-8659,-8795,-8931,-9061,-9190,-9307,-9410,-9503,-9595,-9662,-9726,-9762,-9796, -9814,-9813,-9799,-9769,-9717,-9641,-9541,-9421,-9268,-9088,-8878,-8635,-8370,-8070,-7750,-7401,-7028,-6627,-6196,-5744, -5272,-4782,-4278,-3761,-3247,-2727,-2205,-1683,-1174,-664,-169,311,770,1212,1625,2024,2385,2723,3029,3298, 3544,3754,3933,4083,4202,4289,4348,4381,4379,4359,4308,4242,4149,4040,3910,3768,3606,3429,3245,3058, 2864,2661,2459,2245,2038,1822,1609,1393,1172,953,739,525,313,104,-104,-308,-510,-718,-913,-1110, -1303,-1491,-1677,-1851,-2013,-2169,-2307,-2443,-2565,-2678,-2770,-2853,-2910,-2957,-2977,-2986,-2971,-2932,-2877,-2799, -2699,-2582,-2442,-2275,-2086,-1870,-1633,-1373,-1086,-777,-445,-96,282,674,1081,1512,1951,2404,2860,3327, 3790,4260,4719,5173,5621,6060,6475,6880,7262,7619,7944,8244,8522,8775,8990,9184,9353,9497,9610,9698, 9766,9808,9821,9811,9786,9741,9685,9606,9515,9417,9300,9169,9033,8876,8707,8519,8328,8123,7918,7704, 7489,7263,7029,6791,6549,6307,6057,5798,5547,5296,5040,4795,4546,4304,4059,3815,3568,3329,3087,2844, 2602,2362,2127,1896,1662,1434,1200,963,716,479,235,-12,-261,-501,-745,-977,-1225,-1462,-1698,-1937, -2176,-2414,-2645,-2873,-3102,-3321,-3541,-3755,-3973,-4176,-4385,-4600,-4807,-5021,-5232,-5437,-5646,-5849,-6049,-6251, -6457,-6655,-6854,-7058,-7260,-7458,-7655,-7853,-8038,-8213,-8388,-8551,-8712,-8865,-9003,-9133,-9258,-9373,-9470,-9553, -9614,-9660,-9682,-9695,-9693,-9674,-9638,-9581,-9501,-9413,-9293,-9156,-8996,-8812,-8608,-8376,-8127,-7857,-7563,-7248, -6906,-6549,-6169,-5770,-5350,-4910,-4462,-3999,-3528,-3056,-2583,-2110,-1643,-1184,-737,-300,120,515,885,1232, 1554,1847,2115,2351,2560,2738,2890,3017,3117,3195,3242,3268,3270,3254,3216,3162,3090,3003,2896,2773, 2632,2484,2323,2145,1967,1781,1577,1377,1174,966,752,531,310,93,-128,-343,-553,-761,-960,-1157, -1348,-1532,-1714,-1889,-2053,-2212,-2360,-2500,-2634,-2752,-2859,-2964,-3051,-3125,-3187,-3239,-3280,-3302,-3302,-3289, -3248,-3188,-3104,-3000,-2873,-2718,-2535,-2332,-2102,-1840,-1556,-1246,-912,-553,-176,226,645,1082,1528,1989, 2452,2921,3398,3873,4335,4803,5257,5705,6133,6553,6956,7343,7705,8045,8358,8650,8908,9137,9341,9517, 9667,9795,9882,9950,9986,9995,9982,9942,9884,9811,9712,9604,9482,9342,9195,9043,8869,8688,8498,8302, 8097,7891,7681,7464,7251,7032,6818,6595,6364,6129,5888,5647,5402,5156,4912,4665,4417,4163,3915,3664, 3410,3152,2900,2641,2385,2135,1885,1637,1399,1157,922,686,457,225,-12,-241,-465,-689,-905,-1124, -1339,-1558,-1774,-1994,-2212,-2430,-2649,-2869,-3089,-3313,-3535,-3750,-3968,-4187,-4412,-4634,-4858,-5079,-5301,-5522, -5739,-5952,-6163,-6364,-6563,-6757,-6948,-7145,-7333,-7513,-7694,-7863,-8028,-8188,-8344,-8494,-8632,-8760,-8891,-9012, -9131,-9236,-9327,-9413,-9478,-9529,-9566,-9589,-9591,-9573,-9535,-9479,-9403,-9296,-9164,-9005,-8812,-8595,-8344,-8078, -7777,-7449,-7094,-6721,-6320,-5901,-5452,-4998,-4516,-4022,-3515,-3005,-2489,-1974,-1455,-938,-444,57,534,1001, 1444,1866,2265,2637,2969,3281,3560,3806,4018,4208,4355,4478,4561,4621,4648,4650,4623,4582,4514,4425, 4320,4196,4059,3914,3751,3579,3393,3203,3004,2801,2592,2385,2169,1949,1726,1499,1268,1035,801,566, 329,94,-134,-359,-586,-813,-1035,-1253,-1467,-1672,-1866,-2059,-2238,-2410,-2569,-2713,-2842,-2966,-3070,-3168, -3250,-3313,-3360,-3385,-3398,-3388,-3354,-3302,-3225,-3127,-3011,-2868,-2697,-2512,-2288,-2043,-1765,-1466,-1138,-784, -399,3,430,877,1348,1825,2318,2819,3324,3830,4337,4836,5326,5806,6269,6711,7139,7536,7910,8264, 8580,8872,9131,9368,9575,9753,9898,10017,10112,10176,10212,10224,10212,10175,10117,10044,9953,9843,9716,9568, 9406,9232,9040,8841,8626,8403,8174,7933,7702,7460,7213,6963,6711,6456,6198,5937,5685,5430,5174,4919, 4675,4427,4185,3937,3689,3440,3192,2942,2696,2449,2200,1952,1701,1461,1220,971,725,475,224,-25, -275,-519,-760,-1003,-1240,-1473,-1706,-1936,-2167,-2394,-2619,-2843,-3063,-3277,-3490,-3700,-3915,-4121,-4336,-4549, -4767,-4981,-5198,-5420,-5641,-5859,-6072,-6288,-6502,-6717,-6931,-7142,-7355,-7563,-7770,-7973,-8172,-8357,-8536,-8707, -8868,-9024,-9178,-9321,-9456,-9577,-9690,-9791,-9880,-9957,-10016,-10065,-10097,-10114,-10122,-10113,-10092,-10050,-9985,-9901, -9800,-9669,-9512,-9335,-9123,-8894,-8640,-8353,-8044,-7707,-7336,-6944,-6521,-6074,-5617,-5133,-4634,-4127,-3609,-3094, -2576,-2060,-1549,-1043,-545,-69,389,823,1235,1617,1977,2310,2611,2882,3125,3339,3523,3674,3797,3893, 3957,3996,4009,4001,3964,3911,3832,3739,3625,3488,3343,3185,3011,2830,2636,2435,2235,2029,1817,1603, 1389,1167,947,729,510,302,87,-117,-325,-525,-726,-918,-1111,-1295,-1485,-1658,-1827,-1991,-2140,-2293, -2427,-2554,-2672,-2779,-2874,-2950,-3018,-3067,-3098,-3101,-3091,-3062,-3006,-2931,-2833,-2707,-2571,-2392,-2198,-1981, -1735,-1464,-1175,-858,-520,-159,223,617,1034,1459,1903,2351,2807,3273,3742,4204,4669,5131,5586,6028, 6454,6865,7255,7620,7963,8279,8571,8834,9067,9274,9458,9612,9733,9823,9889,9930,9939,9937,9911,9870, 9804,9730,9639,9539,9422,9294,9150,8998,8831,8659,8480,8295,8099,7895,7684,7473,7250,7026,6797,6552, 6310,6058,5814,5567,5321,5075,4823,4573,4324,4076,3822,3578,3327,3080,2841,2603,2369,2135,1906,1675, 1441,1211,982,753,523,288,53,-172,-397,-627,-853,-1086,-1314,-1549,-1782,-2009,-2234,-2462,-2688,-2912, -3133,-3355,-3572,-3788,-4005,-4224,-4437,-4648,-4855,-5060,-5267,-5463,-5661,-5858,-6052,-6238,-6433,-6628,-6823,-7014, -7190,-7373,-7550,-7722,-7887,-8049,-8208,-8360,-8498,-8641,-8772,-8891,-8991,-9082,-9156,-9217,-9263,-9290,-9304,-9294, -9270,-9225,-9163,-9084,-8971,-8838,-8678,-8501,-8292,-8069,-7824,-7558,-7267,-6951,-6623,-6271,-5895,-5497,-5084,-4659, -4220,-3765,-3312,-2850,-2383,-1918,-1454,-1001,-558,-120,300,697,1080,1430,1757,2053,2321,2561,2771,2954, 3109,3239,3334,3404,3446,3465,3462,3440,3403,3338,3259,3165,3054,2930,2791,2643,2480,2310,2134,1949, 1758,1557,1356,1144,931,718,501,281,59,-160,-376,-588,-798,-1003,-1202,-1394,-1586,-1769,-1942,-2102, -2261,-2406,-2546,-2670,-2782,-2881,-2974,-3044,-3112,-3159,-3195,-3211,-3213,-3198,-3164,-3102,-3027,-2928,-2805,-2662, -2492,-2300,-2078,-1831,-1559,-1264,-939,-596,-227,162,575,1007,1450,1905,2374,2844,3316,3785,4257,4719, 5179,5623,6066,6482,6885,7265,7624,7965,8278,8559,8816,9052,9256,9442,9597,9726,9828,9895,9947,9970, 9965,9933,9884,9813,9729,9624,9511,9381,9235,9073,8896,8715,8520,8315,8103,7890,7674,7452,7230,7008, 6783,6553,6318,6086,5847,5606,5367,5129,4886,4644,4406,4168,3925,3681,3434,3181,2926,2682,2427,2182, 1936,1689,1446,1202,960,720,478,236,-1,-235,-462,-695,-917,-1133,-1353,-1574,-1783,-1999,-2217,-2431, -2648,-2859,-3070,-3281,-3489,-3700,-3915,-4133,-4345,-4561,-4778,-5000,-5220,-5445,-5662,-5878,-6090,-6302,-6507,-6721, -6924,-7123,-7313,-7506,-7692,-7871,-8045,-8215,-8366,-8511,-8658,-8790,-8924,-9042,-9153,-9251,-9342,-9418,-9486,-9536, -9574,-9594,-9598,-9583,-9560,-9512,-9443,-9350,-9234,-9089,-8921,-8726,-8501,-8241,-7962,-7654,-7323,-6966,-6581,-6171, -5746,-5291,-4821,-4338,-3842,-3334,-2823,-2308,-1800,-1294,-795,-311,172,633,1072,1501,1899,2272,2620,2935, 3224,3474,3701,3900,4066,4201,4306,4383,4430,4451,4442,4415,4359,4282,4192,4076,3945,3804,3642,3466, 3290,3093,2905,2699,2495,2279,2060,1838,1624,1396,1170,944,716,490,261,43,-179,-403,-620,-838, -1045,-1249,-1455,-1652,-1844,-2025,-2205,-2367,-2524,-2669,-2806,-2929,-3038,-3127,-3210,-3266,-3312,-3338,-3344,-3328, -3292,-3233,-3156,-3054,-2929,-2776,-2602,-2403,-2175,-1922,-1648,-1344,-1014,-657,-285,115,533,982,1441,1914, 2403,2896,3398,3895,4394,4893,5381,5857,6325,6774,7207,7608,7983,8336,8661,8949,9213,9444,9649,9818, 9965,10079,10172,10231,10264,10268,10254,10219,10162,10093,10006,9892,9776,9637,9490,9319,9139,8944,8744,8529, 8309,8087,7856,7618,7368,7115,6863,6605,6344,6079,5812,5550,5285,5025,4768,4512,4249,3993,3738,3486, 3228,2972,2723,2472,2220,1975,1732,1489,1238,991,744,497,244,2,-244,-490,-739,-982,-1222,-1460, -1699,-1939,-2172,-2409,-2639,-2869,-3092,-3311,-3534,-3750,-3962,-4175,-4382,-4602,-4813,-5028,-5243,-5452,-5657,-5870, -6075,-6285,-6492,-6696,-6901,-7110,-7313,-7519,-7720,-7923,-8115,-8302,-8482,-8663,-8830,-8994,-9149,-9295,-9433,-9565, -9678,-9782,-9879,-9948,-10008,-10052,-10092,-10108,-10107,-10092,-10053,-10003,-9935,-9846,-9729,-9593,-9436,-9248,-9044,-8808, -8560,-8276,-7971,-7639,-7277,-6899,-6496,-6060,-5612,-5137,-4657,-4157,-3654,-3142,-2633,-2119,-1609,-1110,-620,-141, 316,757,1165,1553,1916,2248,2550,2817,3054,3265,3445,3596,3722,3814,3885,3924,3943,3937,3910,3862, 3788,3695,3592,3464,3324,3173,3007,2831,2643,2446,2245,2032,1816,1596,1377,1149,925,698,481,258, 36,-182,-387,-601,-800,-1002,-1198,-1383,-1568,-1741,-1902,-2063,-2215,-2358,-2492,-2618,-2731,-2833,-2924,-3007, -3068,-3112,-3142,-3154,-3150,-3126,-3079,-3008,-2915,-2797,-2659,-2492,-2302,-2085,-1841,-1574,-1284,-967,-630,-269, 108,508,925,1357,1801,2254,2716,3182,3648,4114,4578,5041,5493,5935,6365,6774,7171,7544,7894,8218, 8516,8789,9034,9252,9446,9605,9735,9836,9912,9959,9987,9981,9961,9916,9849,9777,9685,9573,9455,9317, 9173,9011,8842,8667,8484,8291,8098,7900,7695,7485,7269,7046,6820,6584,6348,6114,5873,5631,5386,5140, 4889,4644,4394,4143,3888,3634,3380,3130,2885,2640,2395,2156,1913,1680,1441,1204,967,736,498,270, 44,-180,-411,-636,-862,-1086,-1312,-1540,-1767,-1990,-2216,-2446,-2668,-2886,-3108,-3331,-3553,-3778,-3998,-4220, -4438,-4654,-4872,-5086,-5297,-5502,-5699,-5905,-6102,-6301,-6493,-6685,-6869,-7051,-7230,-7408,-7581,-7746,-7900,-8054, -8201,-8348,-8489,-8617,-8741,-8852,-8956,-9044,-9123,-9188,-9234,-9267,-9286,-9285,-9267,-9232,-9177,-9091,-8983,-8857, -8708,-8533,-8328,-8105,-7860,-7581,-7288,-6973,-6640,-6281,-5903,-5502,-5089,-4657,-4222,-3768,-3312,-2849,-2381,-1921, -1461,-1005,-556,-122,295,697,1080,1443,1775,2087,2367,2622,2842,3036,3203,3336,3444,3523,3579,3606, 3612,3587,3550,3490,3406,3315,3204,3080,2938,2784,2625,2459,2278,2094,1902,1707,1504,1294,1085,871, 659,439,221,2,-213,-428,-640,-851,-1057,-1264,-1458,-1648,-1830,-2007,-2175,-2330,-2478,-2615,-2736,-2848, -2953,-3044,-3119,-3175,-3219,-3243,-3251,-3237,-3210,-3158,-3090,-2999,-2887,-2752,-2599,-2414,-2206,-1977,-1715,-1437, -1128,-798,-447,-72,323,742,1170,1618,2077,2545,3013,3487,3959,4432,4888,5338,5778,6206,6613,7003, 7371,7718,8037,8328,8597,8846,9060,9245,9412,9550,9659,9740,9800,9835,9847,9830,9799,9748,9680,9590, 9484,9366,9228,9078,8918,8745,8564,8359,8154,7946,7732,7511,7289,7060,6827,6590,6350,6118,5877,5632, 5391,5151,4913,4672,4435,4194,3957,3711,3468,3229,2989,2745,2498,2255,2016,1773,1532,1292,1049,805, 561,319,83,-159,-395,-627,-860,-1089,-1322,-1544,-1765,-1989,-2212,-2425,-2641,-2857,-3068,-3279,-3493,-3697, -3914,-4120,-4331,-4542,-4756,-4974,-5185,-5395,-5610,-5819,-6029,-6240,-6451,-6658,-6859,-7059,-7261,-7456,-7643,-7825, -8001,-8173,-8334,-8489,-8635,-8775,-8904,-9026,-9136,-9242,-9328,-9404,-9465,-9516,-9547,-9571,-9575,-9572,-9542,-9493, -9426,-9344,-9236,-9106,-8947,-8768,-8558,-8324,-8059,-7775,-7461,-7122,-6752,-6362,-5947,-5510,-5057,-4585,-4096,-3595, -3094,-2582,-2069,-1564,-1056,-564,-87,388,833,1262,1662,2043,2398,2725,3019,3287,3523,3732,3905,4053, 4169,4259,4319,4357,4365,4352,4319,4255,4177,4080,3961,3830,3680,3514,3347,3160,2967,2773,2566,2359, 2147,1924,1704,1480,1253,1033,809,585,370,154,-58,-275,-483,-689,-890,-1089,-1279,-1471,-1651,-1826, -1995,-2155,-2305,-2451,-2582,-2706,-2814,-2913,-2995,-3065,-3112,-3142,-3151,-3141,-3111,-3061,-2991,-2892,-2768,-2624, -2450,-2254,-2030,-1776,-1503,-1201,-870,-524,-149,248,660,1094,1544,2009,2490,2974,3467,3966,4459,4953, 5437,5910,6375,6823,7248,7660,8042,8398,8731,9029,9302,9547,9756,9937,10089,10211,10302,10362,10399,10409, 10403,10371,10316,10244,10157,10052,9932,9800,9653,9493,9318,9133,8945,8739,8528,8309,8079,7852,7614,7371, 7124,6870,6608,6348,6089,5824,5565,5296,5032,4766,4499,4239,3975,3712,3450,3191,2932,2681,2428,2179, 1933,1679,1433,1189,941,699,451,207,-32,-276,-515,-757,-998,-1240,-1484,-1722,-1961,-2194,-2429,-2669, -2898,-3127,-3358,-3581,-3804,-4025,-4252,-4469,-4692,-4908,-5124,-5344,-5555,-5768,-5980,-6184,-6390,-6594,-6802,-7008, -7213,-7411,-7607,-7799,-7987,-8178,-8361,-8540,-8713,-8877,-9039,-9192,-9337,-9473,-9599,-9710,-9812,-9893,-9965,-10026, -10068,-10091,-10100,-10096,-10072,-10019,-9957,-9866,-9752,-9615,-9459,-9280,-9075,-8844,-8589,-8314,-8010,-7684,-7333,-6958, -6561,-6141,-5702,-5251,-4783,-4295,-3803,-3302,-2796,-2292,-1785,-1292,-806,-331,122,561,970,1359,1723,2052, 2357,2634,2870,3082,3264,3415,3535,3629,3694,3739,3756,3757,3722,3676,3609,3527,3420,3303,3172,3024, 2867,2695,2519,2336,2138,1940,1729,1522,1308,1085,863,638,418,197,-18,-231,-446,-661,-868,-1064, -1264,-1450,-1630,-1807,-1971,-2129,-2278,-2413,-2540,-2662,-2770,-2872,-2953,-3023,-3084,-3124,-3149,-3158,-3144,-3115, -3065,-2997,-2903,-2788,-2648,-2484,-2297,-2082,-1839,-1576,-1285,-969,-626,-266,114,517,932,1369,1811,2265, 2730,3200,3666,4141,4608,5066,5516,5951,6382,6788,7178,7551,7895,8218,8519,8794,9044,9264,9450,9620, 9752,9862,9936,9992,10017,10022,10003,9967,9910,9834,9737,9619,9498,9360,9202,9042,8870,8690,8496,8301, 8101,7900,7686,7468,7248,7023,6796,6563,6334,6098,5860,5619,5383,5145,4899,4653,4402,4155,3905,3654, 3412,3161,2913,2659,2415,2171,1930,1685,1444,1202,959,724,488,255,26,-206,-433,-659,-883,-1110, -1331,-1555,-1776,-2001,-2213,-2429,-2646,-2863,-3085,-3304,-3523,-3743,-3961,-4180,-4401,-4619,-4839,-5055,-5265,-5477, -5689,-5896,-6098,-6301,-6504,-6698,-6888,-7077,-7261,-7432,-7602,-7763,-7924,-8082,-8228,-8371,-8507,-8632,-8746,-8859, -8957,-9048,-9121,-9187,-9233,-9269,-9292,-9302,-9284,-9253,-9201,-9125,-9034,-8911,-8767,-8601,-8408,-8196,-7957,-7692, -7404,-7091,-6753,-6392,-6012,-5617,-5200,-4771,-4328,-3879,-3417,-2952,-2482,-2018,-1553,-1094,-645,-206,221,627, 1012,1374,1717,2035,2327,2593,2829,3040,3216,3362,3483,3576,3646,3685,3700,3691,3662,3612,3536,3450, 3343,3220,3082,2934,2773,2608,2429,2241,2056,1859,1654,1457,1243,1038,816,604,386,180,-38,-249, -463,-666,-871,-1075,-1271,-1465,-1654,-1834,-2004,-2167,-2320,-2466,-2601,-2723,-2832,-2931,-3011,-3082,-3131,-3163, -3186,-3180,-3158,-3119,-3051,-2965,-2860,-2729,-2579,-2402,-2202,-1981,-1730,-1455,-1158,-841,-501,-135,251,653, 1077,1513,1962,2415,2879,3344,3814,4276,4739,5191,5637,6062,6470,6865,7234,7585,7905,8207,8481,8730, 8944,9135,9306,9440,9552,9636,9696,9730,9737,9728,9705,9659,9594,9512,9412,9301,9172,9027,8875,8703, 8522,8340,8138,7938,7723,7506,7278,7052,6815,6580,6337,6093,5845,5597,5354,5110,4863,4622,4375,4128, 3885,3637,3393,3151,2907,2665,2425,2183,1949,1709,1467,1226,986,748,510,273,35,-208,-445,-679, -917,-1146,-1375,-1608,-1837,-2067,-2293,-2513,-2731,-2949,-3164,-3382,-3594,-3809,-4017,-4229,-4441,-4657,-4863,-5071, -5282,-5490,-5696,-5906,-6111,-6317,-6520,-6722,-6920,-7123,-7322,-7515,-7701,-7883,-8060,-8235,-8399,-8561,-8716,-8857, -8995,-9121,-9241,-9343,-9437,-9512,-9580,-9632,-9668,-9694,-9704,-9694,-9668,-9620,-9561,-9477,-9372,-9239,-9090,-8913, -8711,-8486,-8245,-7970,-7670,-7342,-6994,-6615,-6216,-5797,-5352,-4897,-4423,-3936,-3442,-2937,-2434,-1924,-1421,-929, -444,26,487,917,1336,1723,2084,2416,2721,2999,3249,3460,3650,3811,3939,4038,4111,4158,4184,4177, 4155,4114,4050,3964,3860,3743,3611,3463,3303,3131,2946,2759,2558,2353,2149,1925,1707,1491,1268,1043, 818,592,374,155,-57,-266,-474,-679,-883,-1078,-1267,-1448,-1629,-1799,-1965,-2121,-2265,-2403,-2533,-2643, -2754,-2848,-2927,-2993,-3038,-3072,-3088,-3081,-3058,-3008,-2934,-2841,-2721,-2582,-2413,-2220,-1999,-1754,-1483,-1180, -860,-513,-143,246,661,1090,1542,1999,2478,2955,3439,3925,4418,4903,5385,5860,6317,6759,7187,7592, 7975,8330,8668,8972,9250,9499,9719,9911,10074,10194,10296,10368,10411,10426,10419,10389,10343,10274,10190,10090, 9968,9834,9682,9523,9356,9172,8982,8786,8575,8366,8148,7926,7696,7461,7215,6972,6720,6470,6213,5958, 5699,5442,5175,4920,4656,4392,4126,3862,3603,3342,3086,2831,2578,2322,2073,1823,1576,1329,1083,840, 597,352,113,-123,-359,-592,-831,-1069,-1301,-1535,-1767,-2002,-2236,-2468,-2690,-2918,-3141,-3368,-3596,-3824, -4047,-4272,-4497,-4717,-4938,-5162,-5378,-5591,-5806,-6015,-6221,-6434,-6639,-6846,-7047,-7241,-7437,-7630,-7817,-8004, -8179,-8352,-8526,-8691,-8849,-9005,-9149,-9284,-9407,-9526,-9630,-9723,-9802,-9862,-9914,-9949,-9970,-9969,-9951,-9913, -9852,-9768,-9664,-9538,-9385,-9203,-9002,-8777,-8531,-8257,-7959,-7635,-7288,-6912,-6519,-6106,-5674,-5230,-4765,-4291, -3807,-3318,-2823,-2325,-1835,-1344,-864,-397,54,487,901,1288,1651,1980,2287,2567,2811,3022,3215,3366, 3491,3588,3655,3699,3716,3709,3678,3630,3564,3473,3367,3247,3116,2970,2809,2645,2469,2278,2088,1889, 1687,1475,1267,1050,830,607,384,168,-50,-274,-491,-698,-912,-1112,-1319,-1509,-1696,-1876,-2049,-2213, -2369,-2511,-2649,-2775,-2885,-2983,-3071,-3144,-3197,-3241,-3270,-3282,-3272,-3244,-3200,-3129,-3040,-2928,-2793,-2632, -2452,-2239,-2010,-1749,-1470,-1162,-830,-480,-102,293,706,1134,1576,2033,2491,2954,3425,3894,4359,4821, 5273,5713,6143,6547,6938,7308,7660,7980,8286,8563,8815,9033,9228,9396,9542,9651,9739,9796,9828,9840, 9829,9796,9749,9676,9589,9485,9365,9229,9078,8919,8749,8563,8377,8185,7980,7774,7557,7336,7116,6892, 6658,6427,6187,5957,5716,5480,5245,5007,4764,4523,4278,4038,3793,3547,3305,3062,2813,2573,2333,2092, 1850,1600,1364,1121,882,642,409,175,-59,-292,-519,-745,-972,-1196,-1422,-1640,-1860,-2080,-2296,-2503, -2719,-2933,-3140,-3351,-3562,-3779,-3990,-4202,-4418,-4635,-4840,-5051,-5256,-5469,-5675,-5879,-6081,-6286,-6483,-6676, -6871,-7059,-7243,-7414,-7584,-7753,-7910,-8066,-8211,-8351,-8481,-8602,-8717,-8825,-8915,-8996,-9060,-9120,-9167,-9201, -9213,-9216,-9201,-9165,-9116,-9043,-8956,-8837,-8696,-8529,-8348,-8138,-7906,-7646,-7369,-7059,-6729,-6373,-6003,-5599, -5186,-4752,-4313,-3857,-3393,-2926,-2457,-1984,-1515,-1052,-600,-159,273,684,1076,1450,1797,2120,2414,2682, 2930,3144,3324,3485,3617,3717,3799,3846,3870,3872,3850,3807,3744,3659,3565,3451,3320,3177,3022,2851, 2681,2495,2303,2110,1903,1698,1491,1278,1071,854,646,430,217,5,-200,-406,-609,-807,-1001,-1190, -1375,-1548,-1717,-1882,-2036,-2186,-2318,-2446,-2562,-2663,-2745,-2825,-2881,-2921,-2947,-2950,-2941,-2909,-2852,-2775, -2679,-2552,-2410,-2239,-2048,-1835,-1597,-1325,-1039,-725,-395,-35,336,736,1152,1581,2017,2470,2926,3390, 3847,4306,4769,5221,5661,6088,6504,6900,7279,7628,7961,8269,8547,8797,9024,9221,9395,9533,9651,9735, 9797,9834,9850,9837,9811,9762,9696,9614,9520,9403,9278,9135,8977,8812,8637,8451,8258,8050,7839,7624, 7403,7175,6941,6700,6459,6210,5966,5717,5468,5215,4962,4711,4461,4210,3958,3710,3456,3204,2959,2710, 2469,2228,1984,1743,1501,1261,1026,787,551,310,71,-162,-396,-624,-860,-1095,-1331,-1559,-1789,-2012, -2241,-2465,-2690,-2914,-3132,-3351,-3567,-3779,-3993,-4209,-4424,-4636,-4847,-5055,-5262,-5474,-5683,-5884,-6086,-6286, -6489,-6688,-6883,-7080,-7268,-7453,-7641,-7823,-8004,-8173,-8338,-8500,-8649,-8803,-8937,-9071,-9191,-9299,-9397,-9481, -9554,-9612,-9657,-9690,-9699,-9697,-9678,-9641,-9582,-9502,-9398,-9276,-9134,-8967,-8774,-8554,-8315,-8048,-7761,-7450, -7114,-6751,-6366,-5958,-5536,-5088,-4632,-4157,-3677,-3183,-2690,-2187,-1699,-1206,-721,-248,208,643,1065,1461, 1825,2173,2486,2771,3022,3245,3444,3608,3737,3851,3931,3985,4015,4018,3996,3955,3894,3819,3721,3609, 3473,3332,3175,3012,2835,2649,2457,2252,2043,1826,1615,1393,1171,943,719,496,277,52,-169,-388, -601,-813,-1012,-1213,-1408,-1594,-1775,-1946,-2111,-2269,-2413,-2550,-2678,-2795,-2899,-2993,-3068,-3134,-3182,-3212, -3225,-3224,-3201,-3152,-3088,-3000,-2889,-2749,-2585,-2397,-2186,-1947,-1677,-1386,-1072,-725,-362,22,433,855, 1301,1759,2230,2714,3194,3681,4165,4648,5125,5595,6051,6498,6922,7329,7712,8070,8411,8721,9002,9257, 9483,9681,9846,9986,10095,10179,10227,10257,10261,10240,10202,10139,10060,9965,9847,9720,9580,9425,9264,9081, 8891,8700,8498,8286,8075,7852,7626,7395,7161,6924,6685,6436,6191,5941,5693,5442,5184,4932,4680,4417, 4159,3908,3653,3400,3140,2886,2634,2382,2134,1886,1637,1389,1142,899,659,419,178,-57,-290,-521, -757,-988,-1216,-1447,-1677,-1899,-2124,-2346,-2572,-2794,-3016,-3240,-3463,-3680,-3902,-4122,-4345,-4565,-4781,-5001, -5216,-5432,-5646,-5860,-6068,-6281,-6488,-6688,-6890,-7087,-7282,-7475,-7655,-7836,-8015,-8182,-8356,-8517,-8669,-8818, -8951,-9087,-9211,-9325,-9424,-9516,-9591,-9661,-9711,-9752,-9773,-9774,-9759,-9726,-9670,-9596,-9500,-9379,-9239,-9065, -8871,-8655,-8413,-8148,-7851,-7531,-7195,-6826,-6442,-6038,-5612,-5169,-4712,-4242,-3769,-3288,-2794,-2309,-1824,-1341, -870,-412,35,460,873,1259,1619,1959,2264,2548,2795,3012,3201,3360,3497,3601,3674,3721,3744,3738, 3713,3668,3593,3509,3408,3287,3154,3007,2852,2687,2504,2323,2132,1936,1729,1520,1306,1095,880,665, 447,230,18,-199,-416,-623,-830,-1035,-1233,-1424,-1611,-1791,-1965,-2128,-2283,-2433,-2573,-2697,-2808,-2911, -3001,-3076,-3134,-3179,-3201,-3210,-3199,-3173,-3127,-3054,-2959,-2850,-2713,-2548,-2360,-2150,-1915,-1655,-1370,-1065, -734,-382,-6,386,799,1222,1663,2116,2576,3043,3509,3982,4444,4903,5355,5796,6222,6634,7024,7395, 7745,8065,8364,8641,8884,9107,9299,9466,9601,9707,9793,9851,9886,9899,9886,9854,9807,9736,9648,9549, 9430,9297,9150,8994,8824,8645,8453,8257,8052,7839,7620,7399,7175,6939,6705,6465,6226,5990,5748,5501, 5257,5010,4760,4519,4275,4027,3780,3533,3289,3041,2794,2548,2305,2058,1813,1568,1325,1081,839,594, 355,116,-125,-358,-594,-832,-1067,-1298,-1527,-1753,-1983,-2202,-2426,-2649,-2869,-3086,-3297,-3512,-3731,-3946, -4161,-4372,-4586,-4794,-5009,-5218,-5435,-5639,-5845,-6054,-6264,-6468,-6667,-6862,-7057,-7247,-7432,-7616,-7795,-7967, -8132,-8289,-8441,-8584,-8719,-8848,-8963,-9075,-9171,-9252,-9325,-9389,-9431,-9467,-9482,-9484,-9471,-9435,-9386,-9316, -9218,-9106,-8971,-8816,-8637,-8429,-8201,-7946,-7667,-7366,-7040,-6692,-6323,-5931,-5521,-5098,-4653,-4205,-3735,-3263, -2789,-2313,-1836,-1372,-909,-462,-24,394,793,1172,1527,1863,2165,2445,2697,2919,3109,3274,3413,3521, 3606,3671,3705,3721,3708,3669,3620,3548,3457,3351,3226,3093,2939,2786,2613,2438,2247,2056,1858,1657, 1444,1236,1023,810,595,383,172,-36,-241,-448,-651,-846,-1043,-1227,-1406,-1582,-1751,-1916,-2067,-2208, -2345,-2467,-2578,-2683,-2771,-2849,-2909,-2949,-2975,-2989,-2974,-2946,-2892,-2826,-2737,-2618,-2478,-2318,-2123,-1915, -1674,-1413,-1131,-817,-486,-137,237,633,1045,1471,1910,2358,2820,3282,3751,4211,4670,5127,5571,6003, 6432,6836,7215,7589,7933,8249,8540,8807,9049,9259,9440,9597,9724,9826,9897,9945,9972,9971,9953,9917, 9860,9783,9687,9575,9455,9318,9165,9009,8838,8660,8467,8267,8068,7856,7637,7412,7186,6953,6717,6479, 6235,5989,5740,5492,5242,4992,4742,4481,4229,3978,3724,3471,3224,2976,2730,2478,2231,1986,1744,1499, 1258,1019,780,537,300,67,-169,0,-69,-239,-439,-698,-938,-1134,-1260,-1339,-1349,-1299,-1187,-1028, -855,-682,-514,-342,-142,117,432,785,1150,1506,1838,2139,2413,2664,2876,3040,3201,3375,3550,3739, 3925,4107,4282,4458,4663,4901,5171,5462,5775,6116,6488,6860,7220,7571,7890,8162,8388,8587,8759,8863, 8894,8854,8767,8639,8481,8283,8056,7795,7518,7230,6945,6665,6398,6127,5858,5601,5370,5160,4953,4737, 4514,4289,4078,3867,3667,3464,3261,3052,2843,2641,2442,2230,2010,1778,1540,1312,1101,901,702,504, 320,150,-17,-179,-347,-513,-679,-841,-1005,-1158,-1311,-1458,-1604,-1749,-1884,-2001,-2113,-2229,-2363,-2515, -2668,-2821,-2983,-3164,-3359,-3557,-3756,-3941,-4128,-4331,-4550,-4787,-5035,-5282,-5514,-5749,-5981,-6211,-6446,-6671, -6888,-7104,-7314,-7539,-7768,-7991,-8190,-8357,-8514,-8669,-8827,-8996,-9143,-9280,-9409,-9545,-9692,-9840,-9967,-10066, -10134,-10183,-10225,-10252,-10254,-10214,-10105,-9937,-9706,-9407,-9028,-8564,-8003,-7361,-6645,-5867,-5029,-4130,-3173,-2179, -1162,-149,845,1811,2721,3569,4335,5028,5655,6208,6680,7073,7382,7633,7823,7958,8035,8049,8008,7916, 7796,7651,7464,7244,6979,6683,6362,6041,5704,5356,4988,4609,4234,3873,3522,3181,2834,2488,2152,1838, 1547,1277,1011,751,502,265,50,-148,-343,-538,-743,-942,-1124,-1297,-1475,-1665,-1876,-2100,-2329,-2555, -2785,-3029,-3289,-3561,-3820,-4065,-4297,-4530,-4760,-4998,-5224,-5432,-5612,-5771,-5917,-6065,-6191,-6293,-6357,-6398, -6423,-6437,-6431,-6399,-6324,-6215,-6074,-5912,-5725,-5504,-5230,-4913,-4547,-4126,-3662,-3134,-2541,-1883,-1164,-397, 413,1255,2114,2978,3828,4655,5452,6211,6919,7559,8117,8591,8991,9319,9580,9767,9876,9921,9922,9894, 9845,9762,9647,9500,9335,9166,8999,8828,8642,8432,8206,7982,7755,7524,7276,7008,6721,6425,6141,5861, 5579,5282,4978,4669,4376,4094,3820,3547,3281,3019,2778,2563,2373,2197,2020,1851,1691,1542,1411,1282, 1154,1024,889,769,662,555,441,314,170,16,-142,-302,-469,-653,-852,-1050,-1240,-1422,-1606,-1799, -1995,-2195,-2394,-2580,-2754,-2925,-3107,-3284,-3452,-3606,-3750,-3892,-4041,-4203,-4365,-4524,-4673,-4821,-4981,-5154, -5340,-5529,-5718,-5914,-6122,-6350,-6597,-6853,-7100,-7336,-7567,-7805,-8047,-8283,-8499,-8693,-8867,-9029,-9187,-9328, -9438,-9506,-9529,-9529,-9499,-9450,-9364,-9237,-9062,-8842,-8600,-8326,-8009,-7644,-7213,-6731,-6199,-5626,-5004,-4333, -3607,-2832,-2022,-1186,-331,533,1399,2242,3054,3814,4524,5168,5734,6221,6620,6938,7181,7353,7447,7473, 7428,7333,7205,7056,6882,6684,6458,6220,5982,5754,5533,5308,5074,4835,4596,4371,4154,3927,3688,3426, 3157,2891,2627,2362,2081,1786,1484,1185,890,601,305,0,-315,-630,-926,-1199,-1465,-1724,-1983,-2232, -2457,-2663,-2852,-3042,-3236,-3436,-3625,-3801,-3962,-4125,-4298,-4480,-4665,-4840,-5003,-5170,-5347,-5539,-5729,-5903, -6055,-6192,-6311,-6426,-6516,-6572,-6578,-6534,-6436,-6293,-6088,-5817,-5469,-5046,-4548,-3987,-3369,-2694,-1966,-1187, -368,482,1354,2237,3117,3979,4812,5613,6378,7106,7787,8409,8970,9458,9889,10265,10578,10814,10973,11060, 11092,11081,11023,10925,10765,10557,10306,10033,9750,9446,9117,8766,8405,8050,7709,7383,7064,6740,6415,6107, 5822,5558,5306,5057,4813,4569,4350,4143,3948,3743,3530,3310,3095,2889,2687,2482,2272,2053,1836,1628, 1430,1233,1030,817,608,413,232,63,-103,-263,-421,-572,-704,-829,-950,-1077,-1209,-1338,-1457,-1570, -1680,-1796,-1926,-2066,-2202,-2342,-2484,-2638,-2811,-2995,-3187,-3375,-3560,-3752,-3954,-4170,-4395,-4612,-4824,-5032, -5243,-5459,-5675,-5879,-6067,-6241,-6413,-6592,-6779,-6959,-7129,-7289,-7449,-7615,-7789,-7964,-8134,-8287,-8441,-8602, -8781,-8959,-9135,-9295,-9437,-9568,-9693,-9801,-9882,-9914,-9894,-9828,-9715,-9558,-9342,-9040,-8657,-8188,-7640,-7028, -6343,-5588,-4763,-3880,-2964,-2022,-1067,-110,841,1766,2652,3490,4268,4983,5633,6206,6703,7128,7484,7779, 8002,8148,8225,8239,8204,8124,7998,7819,7594,7329,7040,6737,6422,6080,5715,5342,4974,4615,4272,3941, 3605,3276,2953,2655,2381,2118,1858,1606,1357,1126,916,722,528,329,121,-84,-285,-479,-680,-896, -1129,-1366,-1602,-1831,-2061,-2301,-2558,-2824,-3083,-3331,-3576,-3815,-4060,-4306,-4544,-4766,-4967,-5156,-5351,-5545, -5738,-5910,-6060,-6196,-6325,-6450,-6572,-6676,-6761,-6830,-6887,-6947,-6994,-7020,-7013,-6961,-6864,-6729,-6547,-6304, -5992,-5594,-5117,-4564,-3928,-3214,-2421,-1552,-622,353,1359,2379,3396,4389,5339,6236,7070,7841,8542,9152, 9673,10101,10449,10735,10951,11108,11201,11235,11222,11181,11117,11024,10885,10708,10501,10278,10046,9801,9535,9241, 8924,8599,8274,7946,7610,7261,6902,6548,6205,5884,5572,5269,4965,4673,4395,4142,3907,3683,3463,3250, 3050,2870,2711,2554,2395,2229,2060,1904,1751,1600,1444,1278,1107,933,768,607,439,256,71,-118, -301,-479,-650,-826,-1000,-1171,-1331,-1481,-1620,-1761,-1909,-2053,-2198,-2331,-2459,-2588,-2725,-2871,-3020,-3170, -3313,-3468,-3637,-3819,-4017,-4219,-4423,-4629,-4847,-5082,-5331,-5582,-5835,-6080,-6338,-6596,-6864,-7131,-7387,-7621, -7844,-8061,-8286,-8500,-8698,-8873,-9030,-9177,-9319,-9458,-9573,-9667,-9727,-9771,-9812,-9843,-9860,-9843,-9789,-9702, -9581,-9429,-9234,-8977,-8647,-8243,-7763,-7222,-6608,-5912,-5136,-4283,-3365,-2410,-1423,-422,584,1569,2516,3405, 4232,4981,5646,6218,6700,7090,7407,7648,7817,7915,7948,7924,7864,7775,7654,7499,7305,7084,6847,6602, 6350,6081,5794,5488,5176,4867,4557,4243,3916,3568,3217,2872,2534,2216,1892,1567,1244,937,655,389, 129,-126,-380,-624,-851,-1057,-1249,-1440,-1640,-1835,-2027,-2204,-2381,-2565,-2761,-2974,-3185,-3395,-3600,-3811, -4032,-4268,-4510,-4742,-4970,-5188,-5408,-5629,-5846,-6044,-6211,-6354,-6476,-6585,-6677,-6736,-6764,-6751,-6705,-6631, -6525,-6378,-6183,-5932,-5635,-5297,-4915,-4486,-4003,-3464,-2868,-2225,-1530,-791,-9,808,1651,2502,3357,4207, 5040,5834,6583,7274,7904,8470,8968,9383,9709,9948,10111,10214,10264,10259,10193,10074,9913,9732,9541,9336, 9117,8882,8633,8392,8163,7941,7718,7479,7234,6986,6743,6514,6282,6040,5785,5528,5277,5030,4788,4537, 4275,4008,3741,3487,3247,3009,2770,2531,2299,2085,1884,1696,1509,1324,1143,980,835,696,563,423, 285,144,15,-113,-240,-383,-532,-686,-840,-982,-1135,-1292,-1465,-1645,-1829,-2012,-2191,-2377,-2570,-2774, -2971,-3158,-3338,-3515,-3693,-3882,-4073,-4251,-4420,-4583,-4751,-4920,-5099,-5271,-5437,-5597,-5762,-5941,-6134,-6332, -6532,-6727,-6922,-7135,-7361,-7596,-7827,-8046,-8264,-8480,-8698,-8918,-9117,-9285,-9427,-9540,-9639,-9715,-9759,-9755, -9703,-9605,-9471,-9299,-9085,-8813,-8475,-8079,-7633,-7146,-6612,-6026,-5386,-4695,-3960,-3195,-2406,-1586,-747,103, 952,1779,2592,3368,4099,4777,5392,5943,6422,6829,7161,7409,7572,7662,7687,7660,7580,7449,7265,7046, 6802,6547,6290,6016,5726,5428,5133,4856,4595,4338,4082,3822,3567,3320,3086,2860,2628,2382,2133,1886, 1646,1409,1164,905,634,347,77,-193,-460,-740,-1022,-1300,-1566,-1816,-2058,-2295,-2537,-2777,-3007,-3221, -3414,-3603,-3794,-3980,-4159,-4325,-4475,-4616,-4762,-4920,-5082,-5231,-5372,-5496,-5629,-5758,-5884,-5993,-6078,-6133, -6166,-6180,-6163,-6107,-5992,-5813,-5573,-5267,-4899,-4459,-3944,-3357,-2698,-1979,-1215,-403,449,1327,2218,3101, 3971,4816,5628,6391,7101,7744,8336,8871,9350,9764,10107,10375,10591,10757,10880,10953,10962,10923,10837,10719, 10579,10406,10199,9951,9675,9386,9097,8800,8491,8162,7821,7479,7149,6833,6524,6215,5907,5611,5335,5088, 4850,4618,4389,4163,3946,3746,3556,3369,3176,2976,2782,2596,2417,2241,2050,1852,1648,1446,1251,1061, 866,666,460,266,75,-103,-279,-460,-640,-812,-978,-1124,-1268,-1408,-1549,-1688,-1827,-1954,-2076,-2204, -2341,-2490,-2638,-2780,-2921,-3073,-3236,-3413,-3596,-3787,-3976,-4170,-4380,-4604,-4832,-5063,-5285,-5502,-5725,-5953, -6189,-6423,-6646,-6858,-7063,-7274,-7486,-7695,-7887,-8065,-8230,-8393,-8566,-8742,-8906,-9050,-9182,-9309,-9438,-9563, -9674,-9759,-9818,-9849,-9861,-9853,-9813,-9717,-9561,-9336,-9054,-8709,-8294,-7797,-7212,-6543,-5802,-4996,-4138,-3225, -2269,-1281,-292,693,1648,2567,3429,4229,4953,5607,6181,6689,7122,7470,7743,7943,8083,8173,8202,8178, 8100,7976,7825,7652,7451,7221,6957,6666,6361,6050,5740,5415,5082,4737,4389,4052,3732,3416,3105,2784, 2470,2174,1905,1645,1401,1153,914,680,464,263,67,-137,-349,-563,-769,-967,-1165,-1371,-1589,-1822, -2055,-2283,-2509,-2749,-3000,-3263,-3527,-3781,-4020,-4260,-4505,-4750,-4997,-5225,-5435,-5631,-5820,-6007,-6182,-6339, -6471,-6579,-6668,-6749,-6824,-6875,-6899,-6888,-6851,-6786,-6699,-6568,-6391,-6155,-5859,-5505,-5097,-4623,-4076,-3447, -2745,-1972,-1140,-258,675,1639,2620,3595,4550,5472,6350,7167,7904,8552,9117,9604,10016,10337,10577,10730, 10821,10859,10860,10816,10729,10595,10434,10252,10066,9867,9653,9416,9165,8902,8641,8377,8108,7815,7506,7189, 6882,6575,6275,5965,5647,5327,5016,4722,4441,4160,3885,3613,3352,3118,2901,2697,2500,2302,2115,1942, 1780,1633,1482,1327,1172,1023,883,754,616,471,318,157,3,-148,-304,-469,-642,-819,-995,-1162, -1322,-1488,-1662,-1834,-2001,-2163,-2314,-2465,-2621,-2778,-2933,-3078,-3217,-3356,-3497,-3653,-3814,-3972,-4126,-4279, -4441,-4616,-4804,-4997,-5190,-5385,-5590,-5815,-6048,-6296,-6538,-6776,-7012,-7250,-7498,-7749,-7991,-8219,-8429,-8634, -8837,-9035,-9212,-9367,-9485,-9585,-9670,-9745,-9799,-9824,-9812,-9767,-9700,-9612,-9495,-9334,-9122,-8854,-8537,-8175, -7763,-7287,-6738,-6112,-5415,-4654,-3836,-2958,-2033,-1070,-87,893,1858,2791,3677,4504,5249,5919,6502,7004, 7414,7733,7962,8105,8181,8203,8175,8093,7962,7794,7599,7393,7174,6945,6695,6428,6158,5889,5631,5369, 5094,4809,4513,4217,3930,3642,3345,3042,2722,2411,2111,1823,1537,1241,945,652,375,114,-135,-382, -629,-874,-1101,-1309,-1502,-1697,-1890,-2092,-2291,-2478,-2659,-2838,-3025,-3226,-3432,-3634,-3829,-4026,-4231,-4449, -4672,-4892,-5097,-5287,-5472,-5656,-5835,-5993,-6121,-6220,-6293,-6338,-6361,-6350,-6288,-6175,-6011,-5797,-5539,-5228, -4860,-4430,-3941,-3401,-2811,-2175,-1493,-765,-2,790,1601,2426,3257,4082,4886,5660,6401,7103,7757,8351, 8878,9327,9704,10019,10270,10453,10562,10595,10568,10497,10384,10241,10059,9834,9589,9326,9067,8811,8552,8277, 7997,7710,7442,7185,6935,6683,6430,6173,5930,5700,5475,5247,5007,4764,4520,4283,4055,3825,3589,3345, 3099,2864,2639,2417,2194,1964,1738,1518,1315,1127,940,756,572,399,239,91,-56,-206,-357,-505, -649,-781,-911,-1046,-1190,-1338,-1483,-1632,-1778,-1932,-2097,-2271,-2456,-2634,-2807,-2985,-3174,-3372,-3573,-3773, -3969,-4160,-4353,-4555,-4760,-4961,-5146,-5327,-5504,-5688,-5880,-6067,-6250,-6426,-6596,-6775,-6963,-7158,-7349,-7532, -7712,-7899,-8093,-8300,-8506,-8700,-8876,-9043,-9206,-9368,-9507,-9620,-9696,-9738,-9757,-9748,-9699,-9606,-9449,-9230, -8958,-8638,-8265,-7830,-7327,-6761,-6141,-5475,-4768,-4021,-3235,-2414,-1573,-728,115,948,1757,2537,3277,3968, 4609,5193,5719,6175,6557,6869,7115,7297,7419,7473,7458,7384,7264,7110,6924,6706,6448,6167,5867,5570, 5273,4979,4676,4367,4061,3769,3489,3225,2962,2700,2432,2179,1939,1712,1489,1258,1018,777,544,316, 87,-152,-404,-667,-920,-1173,-1416,-1668,-1927,-2191,-2453,-2702,-2939,-3177,-3413,-3652,-3889,-4104,-4303,-4495, -4678,-4865,-5048,-5217,-5371,-5509,-5639,-5772,-5902,-6019,-6119,-6197,-6264,-6317,-6360,-6385,-6370,-6317,-6226,-6093, -5922,-5701,-5411,-5054,-4626,-4131,-3565,-2938,-2241,-1484,-671,176,1056,1952,2850,3743,4601,5423,6199,6932, 7602,8209,8739,9191,9576,9901,10167,10379,10525,10613,10653,10655,10631,10573,10478,10340,10168,9974,9771,9560, 9327,9071,8790,8501,8205,7910,7608,7296,6972,6646,6329,6029,5742,5460,5179,4901,4640,4393,4164,3944, 3724,3508,3301,3109,2933,2764,2589,2414,2236,2061,1897,1734,1567,1389,1207,1026,850,680,508,327, 139,-49,-233,-405,-572,-748,-918,-1087,-1249,-1398,-1542,-1686,-1829,-1977,-2124,-2261,-2395,-2529,-2666,-2814, -2964,-3114,-3263,-3414,-3578,-3756,-3946,-4139,-4334,-4529,-4734,-4949,-5176,-5409,-5641,-5865,-6093,-6327,-6571,-6814, -7049,-7270,-7480,-7687,-7897,-8103,-8299,-8472,-8635,-8783,-8929,-9068,-9197,-9299,-9378,-9438,-9482,-9520,-9538,-9528, -9476,-9386,-9261,-9099,-8890,-8625,-8286,-7870,-7387,-6836,-6216,-5529,-4764,-3933,-3042,-2113,-1153,-181,793,1752, 2676,3549,4357,5098,5758,6340,6832,7241,7573,7838,8028,8149,8201,8197,8148,8065,7949,7802,7617,7404, 7171,6930,6684,6423,6147,5850,5542,5236,4935,4630,4322,4001,3676,3357,3052,2754,2463,2165,1870,1586, 1313,1062,818,575,330,90,-137,-348,-550,-751,-958,-1169,-1375,-1572,-1763,-1962,-2172,-2390,-2613,-2834, -3052,-3272,-3500,-3737,-3982,-4225,-4451,-4677,-4903,-5130,-5359,-5573,-5765,-5943,-6102,-6255,-6397,-6519,-6614,-6678, -6709,-6726,-6709,-6669,-6587,-6456,-6283,-6065,-5801,-5491,-5121,-4681,-4178,-3608,-2975,-2280,-1525,-717,139,1038, 1958,2895,3835,4761,5654,6498,7291,8024,8689,9273,9763,10165,10477,10718,10888,10998,11036,11009,10929,10808, 10664,10502,10308,10091,9852,9608,9362,9117,8874,8612,8337,8055,7777,7505,7231,6952,6662,6368,6074,5791, 5514,5234,4947,4653,4364,4088,3828,3572,3323,3073,2828,2599,2387,2188,1991,1793,1600,1416,1250,1092, 940,788,631,478,332,192,52,-95,-250,-411,-569,-725,-877,-1035,-1205,-1383,-1560,-1733,-1898,-2071, -2246,-2427,-2607,-2783,-2951,-3117,-3284,-3460,-3640,-3810,-3978,-4139,-4305,-4477,-4652,-4830,-5006,-5174,-5348,-5533, -5733,-5941,-6148,-6354,-6565,-6782,-7014,-7255,-7495,-7727,-7957,-8185,-8423,-8659,-8893,-9106,-9301,-9476,-9641,-9796, -9934,-10038,-10106,-10144,-10155,-10145,-10105,-10027,-9901,-9720,-9499,-9236,-8932,-8577,-8157,-7672,-7127,-6531,-5875,-5168, -4396,-3572,-2694,-1787,-860,77,1015,1939,2828,3666,4450,5171,5815,6376,6850,7231,7537,7761,7912,7988, 7990,7925,7813,7668,7492,7284,7047,6788,6518,6247,5979,5715,5439,5162,4878,4600,4334,4074,3808,3539, 3259,2985,2714,2454,2191,1921,1638,1354,1077,810,544,274,2,-269,-536,-786,-1022,-1255,-1495,-1733, -1959,-2169,-2371,-2562,-2758,-2957,-3152,-3341,-3518,-3690,-3870,-4055,-4246,-4435,-4615,-4786,-4960,-5137,-5320,-5497, -5656,-5801,-5929,-6053,-6166,-6252,-6310,-6327,-6301,-6238,-6139,-5995,-5795,-5534,-5207,-4826,-4384,-3885,-3322,-2701, -2023,-1298,-534,257,1075,1903,2742,3565,4377,5166,5930,6655,7328,7943,8500,8996,9438,9817,10124,10356, 10523,10635,10697,10711,10670,10575,10431,10252,10054,9842,9605,9347,9066,8778,8486,8206,7924,7638,7343,7054, 6772,6511,6258,6015,5761,5516,5276,5048,4829,4612,4393,4173,3953,3737,3534,3333,3127,2912,2692,2480, 2275,2074,1878,1673,1469,1268,1082,904,733,558,383,211,46,-109,-254,-398,-547,-696,-838,-971, -1102,-1235,-1372,-1520,-1667,-1816,-1961,-2111,-2268,-2436,-2615,-2796,-2971,-3152,-3337,-3534,-3744,-3948,-4152,-4348, -4545,-4753,-4966,-5174,-5380,-5573,-5768,-5960,-6162,-6361,-6557,-6738,-6910,-7083,-7268,-7455,-7638,-7812,-7980,-8135, -8303,-8470,-8633,-8785,-8907,-9014,-9111,-9195,-9262,-9298,-9294,-9247,-9158,-9028,-8861,-8632,-8340,-7974,-7545,-7059, -6516,-5914,-5248,-4525,-3749,-2945,-2113,-1269,-414,438,1278,2086,2864,3592,4267,4887,5441,5927,6351,6716, 7020,7252,7423,7524,7573,7574,7531,7440,7301,7116,6901,6666,6416,6149,5862,5558,5241,4929,4619,4314, 4007,3695,3382,3076,2791,2520,2253,1987,1721,1464,1217,981,755,523,287,43,-192,-420,-641,-866, -1102,-1347,-1591,-1828,-2061,-2299,-2541,-2792,-3047,-3284,-3518,-3741,-3967,-4198,-4429,-4642,-4847,-5031,-5209,-5386, -5558,-5718,-5852,-5968,-6067,-6163,-6245,-6313,-6359,-6370,-6355,-6312,-6244,-6145,-5996,-5801,-5546,-5247,-4890,-4476, -3999,-3450,-2831,-2156,-1417,-633,196,1062,1948,2836,3717,4577,5411,6201,6931,7597,8197,8728,9197,9589, 9905,10141,10312,10429,10506,10533,10517,10457,10354,10224,10081,9924,9747,9541,9312,9072,8831,8583,8326,8056, 7769,7471,7168,6877,6586,6293,5987,5684,5386,5104,4834,4569,4304,4045,3789,3548,3333,3125,2919,2716, 2519,2330,2159,1992,1831,1667,1495,1333,1177,1025,875,714,548,383,219,58,-101,-264,-438,-617, -786,-950,-1113,-1269,-1433,-1602,-1761,-1919,-2067,-2213,-2364,-2519,-2670,-2821,-2962,-3102,-3249,-3400,-3560,-3723, -3880,-4041,-4206,-4381,-4572,-4768,-4960,-5158,-5353,-5564,-5789,-6022,-6253,-6478,-6703,-6926,-7158,-7392,-7623,-7838, -8040,-8234,-8425,-8615,-8794,-8949,-9077,-9186,-9282,-9370,-9438,-9481,-9490,-9467,-9420,-9347,-9250,-9113,-8924,-8680, -8383,-8036,-7642,-7186,-6655,-6052,-5381,-4644,-3856,-3012,-2125,-1199,-250,700,1640,2555,3427,4249,5002,5681, 6281,6801,7238,7593,7855,8044,8162,8221,8230,8180,8084,7941,7769,7573,7368,7143,6897,6633,6358,6084, 5814,5542,5266,4970,4669,4370,4074,3784,3493,3191,2887,2583,2292,2011,1733,1451,1172,886,617,362, 115,-126,-372,-612,-845,-1063,-1271,-1473,-1680,-1896,-2110,-2314,-2507,-2702,-2902,-3110,-3326,-3539,-3748,-3953, -4163,-4385,-4614,-4836,-5052,-5251,-5449,-5643,-5835,-6014,-6179,-6316,-6433,-6530,-6616,-6675,-6697,-6675,-6610,-6506, -6361,-6174,-5935,-5637,-5273,-4852,-4371,-3835,-3233,-2568,-1844,-1065,-242,616,1506,2414,3328,4230,5113,5969, 6785,7555,8257,8883,9438,9915,10319,10647,10892,11052,11137,11160,11137,11071,10960,10798,10599,10377,10143,9900, 9646,9379,9099,8809,8524,8246,7976,7697,7414,7126,6846,6575,6313,6047,5779,5502,5230,4963,4706,4457, 4196,3936,3678,3428,3185,2956,2722,2496,2265,2042,1835,1641,1450,1262,1072,890,716,551,396,242, 78,-79,-234,-383,-527,-672,-829,-985,-1148,-1306,-1460,-1619,-1782,-1956,-2130,-2303,-2474,-2644,-2819,-3001, -3188,-3374,-3556,-3734,-3912,-4101,-4291,-4482,-4664,-4846,-5024,-5206,-5395,-5591,-5783,-5968,-6155,-6349,-6553,-6767, -6976,-7190,-7392,-7601,-7822,-8051,-8282,-8504,-8714,-8916,-9123,-9324,-9520,-9699,-9850,-9979,-10084,-10176,-10247,-10286, -10278,-10226,-10131,-10001,-9832,-9614,-9337,-8998,-8599,-8143,-7641,-7082,-6456,-5762,-5016,-4222,-3389,-2529,-1638,-731, 182,1090,1972,2826,3635,4381,5068,5683,6219,6687,7071,7382,7609,7757,7833,7850,7815,7727,7589,7399, 7179,6936,6683,6416,6136,5842,5542,5243,4957,4679,4402,4115,3831,3550,3281,3023,2774,2520,2258,1994, 1738,1489,1243,991,735,468,207,-49,-292,-539,-789,-1045,-1297,-1538,-1773,-1997,-2225,-2459,-2684,-2903, -3106,-3300,-3491,-3687,-3887,-4080,-4263,-4433,-4604,-4775,-4952,-5120,-5279,-5427,-5561,-5696,-5829,-5948,-6054,-6130, -6187,-6219,-6230,-6209,-6149,-6035,-5870,-5654,-5389,-5070,-4686,-4238,-3720,-3138,-2497,-1805,-1062,-276,541,1383, 2232,3075,3912,4727,5510,6247,6938,7585,8180,8716,9188,9583,9915,10183,10398,10563,10666,10706,10698,10643, 10560,10447,10302,10120,9903,9665,9414,9158,8892,8612,8312,8007,7706,7410,7125,6842,6554,6264,5987,5719, 5469,5227,4983,4742,4507,4280,4068,3864,3662,3458,3248,3044,2850,2661,2474,2278,2079,1881,1688,1507, 1324,1140,947,755,573,398,225,58,-114,-285,-453,-613,-758,-907,-1058,-1211,-1363,-1507,-1648,-1785, -1928,-2076,-2231,-2386,-2539,-2693,-2851,-3029,-3213,-3396,-3579,-3768,-3952,-4153,-4360,-4574,-4787,-4991,-5198,-5410, -5630,-5850,-6068,-6276,-6474,-6675,-6875,-7081,-7280,-7467,-7643,-7813,-7983,-8151,-8320,-8473,-8609,-8728,-8842,-8954, -9058,-9140,-9194,-9222,-9224,-9205,-9155,-9067,-8937,-8743,-8495,-8203,-7858,-7452,-6976,-6430,-5816,-5143,-4418,-3649, -2834,-1988,-1119,-249,617,1462,2283,3062,3785,4454,5060,5602,6075,6479,6811,7073,7270,7415,7507,7549, 7530,7467,7361,7225,7057,6871,6655,6406,6141,5862,5582,5299,5005,4697,4384,4068,3760,3458,3161,2861, 2558,2261,1980,1709,1451,1190,931,672,425,182,-43,-269,-498,-735,-969,-1188,-1405,-1621,-1840,-2073, -2306,-2535,-2758,-2978,-3203,-3439,-3675,-3906,-4128,-4345,-4557,-4772,-4985,-5193,-5387,-5555,-5717,-5866,-6014,-6144, -6249,-6330,-6385,-6423,-6435,-6431,-6390,-6312,-6186,-6017,-5810,-5557,-5255,-4888,-4462,-3975,-3429,-2825,-2165,-1444, -676,138,980,1851,2732,3613,4473,5301,6093,6834,7521,8150,8705,9182,9578,9906,10172,10371,10501,10568, 10576,10537,10467,10372,10244,10088,9898,9693,9479,9261,9038,8796,8539,8267,7999,7733,7466,7194,6911,6619, 6331,6048,5777,5501,5222,4942,4661,4394,4140,3895,3650,3409,3170,2940,2729,2528,2328,2131,1937,1749, 1572,1405,1247,1085,919,755,597,445,296,143,-17,-181,-345,-503,-660,-816,-982,-1153,-1323,-1489, -1653,-1808,-1973,-2139,-2310,-2473,-2634,-2788,-2947,-3108,-3277,-3440,-3604,-3762,-3923,-4088,-4266,-4443,-4615,-4789, -4963,-5149,-5343,-5543,-5751,-5955,-6156,-6365,-6583,-6813,-7040,-7262,-7473,-7688,-7906,-8125,-8344,-8546,-8727,-8895, -9052,-9202,-9339,-9451,-9533,-9585,-9618,-9628,-9611,-9568,-9479,-9340,-9162,-8945,-8690,-8383,-8020,-7590,-7102,-6556, -5952,-5292,-4570,-3788,-2950,-2077,-1176,-257,666,1584,2481,3341,4152,4905,5591,6209,6740,7191,7556,7846, 8063,8209,8276,8282,8233,8140,8013,7851,7656,7434,7185,6931,6675,6416,6145,5867,5580,5302,5023,4753, 4481,4202,3916,3627,3349,3078,2809,2537,2255,1974,1702,1434,1172,913,647,377,118,-132,-370,-604, -842,-1077,-1314,-1537,-1746,-1954,-2163,-2377,-2593,-2800,-3004,-3200,-3398,-3605,-3816,-4028,-4232,-4431,-4625,-4831, -5033,-5233,-5425,-5600,-5764,-5919,-6067,-6203,-6311,-6393,-6441,-6461,-6454,-6408,-6319,-6177,-5975,-5717,-5407,-5040, -4610,-4119,-3552,-2925,-2243,-1506,-720,110,971,1858,2750,3648,4531,5393,6218,6995,7714,8380,8989,9531, 9996,10382,10685,10917,11083,11189,11233,11215,11136,11018,10863,10690,10488,10256,9999,9725,9441,9158,8877,8589, 8289,7984,7686,7399,7124,6848,6573,6295,6018,5755,5503,5256,5004,4751,4499,4254,4021,3793,3566,3336, 3102,2870,2654,2444,2239,2024,1816,1614,1417,1230,1054,876,695,518,342,179,24,-130,-287,-444, -602,-752,-900,-1043,-1196,-1354,-1512,-1668,-1822,-1974,-2135,-2307,-2480,-2653,-2828,-3002,-3177,-3363,-3558,-3757, -3948,-4136,-4326,-4518,-4719,-4922,-5126,-5320,-5514,-5710,-5915,-6126,-6329,-6531,-6727,-6927,-7132,-7345,-7557,-7769, -7970,-8172,-8373,-8583,-8791,-8989,-9170,-9337,-9493,-9648,-9792,-9914,-10007,-10065,-10094,-10095,-10068,-10000,-9875,-9700, -9470,-9185,-8854,-8462,-8008,-7480,-6887,-6233,-5531,-4775,-3974,-3133,-2257,-1365,-470,419,1292,2136,2948,3703, 4405,5044,5617,6120,6543,6889,7163,7366,7509,7587,7602,7552,7449,7312,7142,6942,6710,6451,6167,5880, 5585,5294,5000,4697,4384,4084,3785,3505,3227,2950,2670,2393,2129,1876,1629,1385,1132,881,632,392, 156,-75,-315,-563,-809,-1048,-1281,-1507,-1742,-1981,-2218,-2453,-2675,-2890,-3105,-3325,-3547,-3761,-3963,-4151, -4342,-4529,-4720,-4902,-5075,-5234,-5380,-5525,-5667,-5808,-5927,-6032,-6113,-6185,-6238,-6280,-6295,-6276,-6217,-6122, -5987,-5815,-5591,-5305,-4957,-4545,-4077,-3548,-2956,-2305,-1591,-830,-28,804,1658,2522,3382,4223,5038,5819, 6556,7248,7878,8442,8940,9375,9749,10066,10315,10498,10613,10677,10698,10688,10633,10544,10412,10252,10069,9873, 9662,9431,9171,8900,8622,8341,8059,7776,7480,7178,6880,6586,6312,6038,5764,5487,5216,4960,4715,4484, 4256,4029,3806,3590,3384,3194,3003,2812,2615,2423,2239,2062,1886,1712,1530,1344,1166,992,822,649, 472,291,114,-58,-218,-382,-547,-718,-886,-1044,-1198,-1348,-1500,-1656,-1810,-1963,-2113,-2256,-2406,-2560, -2726,-2891,-3057,-3221,-3390,-3565,-3751,-3941,-4138,-4325,-4515,-4716,-4930,-5150,-5368,-5582,-5793,-6004,-6225,-6447, -6669,-6885,-7088,-7286,-7486,-7684,-7880,-8064,-8231,-8383,-8530,-8670,-8803,-8920,-9014,-9084,-9139,-9182,-9208,-9208, -9174,-9100,-8983,-8831,-8643,-8414,-8126,-7773,-7359,-6889,-6356,-5773,-5122,-4413,-3647,-2837,-1997,-1137,-264,607, 1463,2289,3078,3814,4500,5111,5660,6132,6536,6867,7134,7338,7476,7544,7565,7537,7475,7374,7238,7062, 6863,6643,6413,6173,5916,5643,5356,5062,4772,4484,4194,3899,3594,3287,2987,2699,2415,2133,1845,1557, 1277,1010,756,504,252,-6,-257,-497,-725,-950,-1176,-1409,-1640,-1861,-2080,-2287,-2504,-2726,-2952,-3178, -3397,-3610,-3824,-4047,-4271,-4495,-4709,-4911,-5105,-5298,-5489,-5672,-5841,-5986,-6112,-6226,-6325,-6404,-6457,-6474, -6454,-6398,-6313,-6197,-6029,-5809,-5537,-5208,-4823,-4388,-3888,-3332,-2713,-2039,-1315,-553,255,1091,1948,2814, 3671,4515,5339,6123,6860,7537,8147,8696,9175,9588,9929,10191,10376,10502,10571,10592,10564,10488,10368,10214, 10038,9853,9647,9428,9182,8928,8669,8412,8153,7893,7615,7337,7054,6782,6515,6250,5981,5702,5426,5158, 4898,4643,4387,4130,3873,3624,3388,3161,2939,2712,2491,2275,2070,1877,1689,1503,1318,1136,961,796, 639,479,320,156,-3,-161,-307,-459,-616,-777,-937,-1095,-1249,-1404,-1564,-1731,-1897,-2064,-2224,-2383, -2545,-2715,-2890,-3063,-3229,-3398,-3563,-3736,-3915,-4095,-4272,-4444,-4614,-4791,-4973,-5161,-5350,-5538,-5722,-5912, -6112,-6318,-6529,-6733,-6936,-7139,-7349,-7568,-7788,-8002,-8209,-8402,-8597,-8793,-8981,-9158,-9308,-9436,-9548,-9645, -9726,-9783,-9800,-9783,-9728,-9638,-9520,-9359,-9148,-8874,-8547,-8169,-7741,-7256,-6711,-6100,-5428,-4702,-3928,-3116, -2266,-1382,-483,422,1319,2191,3035,3827,4569,5243,5850,6384,6848,7236,7543,7769,7921,8013,8044,8023, 7946,7817,7647,7451,7236,7007,6760,6491,6211,5926,5646,5369,5091,4808,4523,4237,3960,3693,3430,3163, 2893,2620,2355,2092,1841,1585,1325,1059,798,543,298,55,-195,-445,-695,-936,-1171,-1398,-1620,-1846, -2078,-2301,-2513,-2717,-2920,-3135,-3344,-3553,-3758,-3946,-4137,-4330,-4527,-4727,-4914,-5092,-5263,-5428,-5592,-5753, -5901,-6029,-6133,-6216,-6285,-6333,-6346,-6324,-6256,-6145,-5989,-5785,-5528,-5207,-4817,-4360,-3840,-3259,-2615,-1912, -1154,-353,487,1354,2240,3135,4020,4887,5721,6514,7269,7966,8605,9169,9661,10086,10444,10737,10963,11112, 11196,11221,11198,11142,11039,10897,10714,10501,10271,10031,9775,9506,9217,8918,8610,8312,8018,7726,7428,7125, 6828,6543,6270,6003,5736,5470,5204,4949,4709,4479,4245,4018,3783,3557,3336,3127,2918,2710,2494,2285, 2082,1887,1698,1505,1315,1124,933,756,586,416,243,66,-103,-264,-421,-576,-730,-890,-1049,-1205, -1354,-1502,-1652,-1808,-1971,-2130,-2289,-2450,-2611,-2783,-2964,-3149,-3332,-3513,-3696,-3888,-4086,-4293,-4496,-4699, -4897,-5101,-5312,-5530,-5747,-5961,-6163,-6370,-6586,-6799,-7017,-7229,-7434,-7632,-7833,-8039,-8247,-8446,-8636,-8813, -8987,-9158,-9324,-9479,-9614,-9725,-9816,-9893,-9954,-9988,-9983,-9937,-9848,-9713,-9541,-9316,-9037,-8688,-8272,-7793, -7258,-6664,-6004,-5284,-4508,-3687,-2828,-1948,-1055,-155,733,1600,2431,3214,3944,4614,5216,5749,6207,6601, 6921,7176,7357,7471,7523,7515,7469,7377,7243,7067,6858,6628,6381,6124,5852,5564,5263,4956,4651,4354, 4062,3762,3465,3166,2876,2599,2332,2064,1800,1530,1269,1019,779,543,300,56,-184,-423,-650,-872, -1100,-1337,-1576,-1809,-2032,-2251,-2472,-2696,-2925,-3152,-3370,-3585,-3790,-4001,-4220,-4428,-4628,-4817,-4995,-5172, -5345,-5515,-5673,-5812,-5938,-6051,-6153,-6248,-6322,-6365,-6383,-6368,-6332,-6267,-6166,-6018,-5821,-5571,-5273,-4918, -4504,-4028,-3487,-2882,-2223,-1510,-746,53,886,1737,2596,3450,4293,5108,5891,6621,7298,7914,8473,8966, 9389,9744,10023,10240,10402,10512,10574,10581,10537,10455,10346,10214,10064,9883,9679,9451,9211,8968,8721,8461, 8188,7905,7617,7333,7053,6774,6493,6203,5915,5638,5370,5109,4855,4598,4348,4102,3870,3651,3438,3228, 3016,2807,2614,2426,2244,2066,1883,1702,1525,1356,1190,1022,849,677,503,334,172,6,-160,-332, -505,-672,-834,-993,-1155,-1321,-1486,-1648,-1802,-1955,-2105,-2264,-2425,-2591,-2748,-2901,-3056,-3223,-3392,-3566, -3740,-3911,-4089,-4268,-4456,-4654,-4849,-5047,-5242,-5443,-5654,-5869,-6085,-6304,-6512,-6720,-6931,-7151,-7365,-7572, -7766,-7950,-8129,-8304,-8477,-8634,-8773,-8888,-8989,-9080,-9159,-9217,-9243,-9235,-9200,-9142,-9055,-8934,-8771,-8553, -8285,-7967,-7604,-7187,-6708,-6168,-5560,-4899,-4185,-3430,-2633,-1802,-944,-74,791,1645,2463,3255,3985,4658, 5267,5809,6280,6683,7012,7267,7452,7577,7648,7668,7631,7552,7424,7270,7096,6899,6686,6451,6195,5929, 5667,5398,5127,4844,4556,4263,3976,3696,3420,3140,2851,2562,2280,2006,1742,1474,1207,934,671,413, 166,-72,-312,-559,-800,-1034,-1257,-1477,-1696,-1917,-2142,-2362,-2571,-2778,-2982,-3195,-3414,-3630,-3841,-4046, -4247,-4445,-4649,-4851,-5043,-5223,-5384,-5543,-5698,-5839,-5963,-6061,-6134,-6178,-6200,-6194,-6157,-6073,-5943,-5766, -5544,-5273,-4948,-4565,-4118,-3608,-3040,-2419,-1745,-1024,-257,547,1375,2226,3080,3931,4761,5562,6328,7048, 7717,8332,8883,9361,9759,10086,10348,10547,10684,10758,10768,10728,10652,10541,10397,10225,10019,9791,9550,9304, 9052,8793,8512,8232,7945,7662,7389,7114,6836,6553,6267,5991,5725,5465,5203,4940,4676,4419,4168,3928, 3695,3451,3212,2977,2754,2538,2329,2117,1909,1702,1502,1315,1132,955,774,593,417,253,88,-68, -227,-390,-555,-713,-865,-1014,-1173,-1333,-1491,-1654,-1808,-1965,-2120,-2280,-2450,-2619,-2785,-2949,-3116,-3289, -3469,-3649,-3830,-4006,-4179,-4365,-4548,-4741,-4933,-5118,-5303,-5492,-5683,-5883,-6085,-6283,-6476,-6673,-6875,-7084, -7294,-7501,-7703,-7902,-8098,-8304,-8508,-8704,-8883,-9048,-9209,-9363,-9507,-9634,-9736,-9808,-9849,-9870,-9865,-9833, -9757,-9631,-9455,-9237,-8974,-8658,-8289,-7849,-7347,-6780,-6163,-5495,-4769,-3995,-3176,-2321,-1451,-563,325,1203, 2062,2889,3666,4392,5053,5650,6173,6623,6997,7303,7539,7712,7813,7850,7825,7754,7642,7499,7320,7108, 6867,6610,6351,6086,5808,5523,5230,4935,4648,4364,4087,3809,3529,3247,2976,2712,2455,2200,1938,1674, 1413,1159,914,670,424,168,-87,-330,-571,-806,-1042,-1283,-1526,-1761,-1992,-2213,-2429,-2654,-2877,-3099, -3313,-3518,-3718,-3923,-4132,-4339,-4534,-4723,-4903,-5077,-5256,-5432,-5594,-5743,-5878,-5996,-6111,-6210,-6294,-6345, -6362,-6349,-6308,-6228,-6109,-5936,-5713,-5424,-5082,-4680,-4222,-3689,-3089,-2423,-1707,-939,-132,718,1585,2470, 3352,4223,5072,5891,6668,7392,8053,8654,9189,9664,10065,10391,10644,10828,10955,11032,11061,11035,10961,10841, 10693,10523,10329,10111,9867,9600,9326,9046,8765,8481,8184,7876,7570,7271,6978,6692,6407,6121,5839,5561, 5302,5050,4804,4558,4310,4072,3849,3628,3422,3207,2996,2783,2576,2383,2195,2005,1812,1619,1432,1247, 1072,895,717,536,362,189,26,-135,-297,-467,-631,-793,-950,-1098,-1250,-1405,-1567,-1719,-1867,-2016, -2169,-2323,-2484,-2650,-2812,-2978,-3140,-3312,-3493,-3678,-3865,-4049,-4236,-4426,-4627,-4834,-5046,-5249,-5455,-5659, -5868,-6089,-6309,-6522,-6730,-6936,-7142,-7357,-7569,-7776,-7973,-8160,-8344,-8529,-8707,-8883,-9040,-9183,-9311,-9428, -9535,-9628,-9691,-9723,-9725,-9700,-9648,-9560,-9426,-9246,-9003,-8706,-8357,-7951,-7484,-6941,-6335,-5664,-4939,-4168, -3356,-2502,-1622,-727,170,1052,1910,2734,3508,4223,4871,5456,5972,6416,6785,7083,7307,7468,7569,7617, 7610,7547,7435,7288,7116,6920,6699,6453,6189,5910,5622,5340,5050,4753,4448,4138,3837,3543,3251,2966, 2680,2392,2106,1832,1573,1313,1053,788,534,283,46,-189,-423,-664,-904,-1140,-1364,-1584,-1805,-2034, -2263,-2490,-2710,-2924,-3139,-3357,-3577,-3800,-4017,-4223,-4423,-4623,-4821,-5020,-5207,-5380,-5541,-5690,-5837,-5972, -6094,-6195,-6270,-6325,-6363,-6374,-6360,-6310,-6216,-6079,-5904,-5682,-5415,-5090,-4704,-4259,-3754,-3186,-2567,-1889, -1158,-383,425,1261,2111,2969,3816,4641,5434,6189,6904,7564,8163,8700,9157,9545,9868,10127,10327,10459, 10530,10545,10522,10469,10382,10259,10103,9921,9719,9505,9284,9051,8803,8539,8267,7999,7729,7458,7180,6895, 6605,6321,6045,5780,5511,5239,4971,4707,4455,4211,3977,3741,3507,3278,3062,2853,2653,2455,2259,2061, 1871,1694,1519,1347,1174,997,823,653,494,329,164,-2,-171,-335,-503,-663,-825,-994,-1166,-1334, -1498,-1656,-1814,-1979,-2147,-2314,-2478,-2638,-2797,-2961,-3134,-3308,-3478,-3647,-3816,-3985,-4164,-4351,-4538,-4727, -4908,-5095,-5290,-5496,-5702,-5905,-6109,-6310,-6522,-6733,-6956,-7170,-7379,-7582,-7781,-7983,-8184,-8377,-8557,-8717, -8867,-9009,-9144,-9265,-9361,-9427,-9470,-9488,-9489,-9462,-9398,-9296,-9147,-8957,-8735,-8465,-8143,-7762,-7320,-6821, -6264,-5656,-4997,-4280,-3514,-2710,-1880,-1030,-173,688,1531,2349,3130,3860,4536,5148,5689,6158,6554,6881, 7139,7338,7465,7528,7535,7493,7412,7295,7148,6962,6747,6517,6274,6028,5774,5505,5227,4944,4660,4384, 4110,3829,3547,3262,2976,2702,2436,2167,1895,1619,1349,1084,826,575,323,62,-192,-441,-680,-911, -1142,-1375,-1610,-1840,-2060,-2274,-2483,-2697,-2914,-3133,-3339,-3545,-3741,-3944,-4150,-4353,-4552,-4744,-4922,-5098, -5270,-5443,-5604,-5743,-5865,-5972,-6064,-6141,-6193,-6213,-6200,-6144,-6052,-5927,-5748,-5524,-5241,-4900,-4502,-4047, -3532,-2963,-2329,-1643,-908,-136,672,1504,2358,3208,4046,4870,5665,6426,7141,7799,8397,8931,9405,9817, 10153,10418,10613,10740,10814,10835,10817,10752,10642,10495,10316,10125,9913,9685,9433,9167,8890,8615,8339,8063, 7778,7491,7199,6915,6640,6370,6099,5826,5554,5288,5029,4785,4540,4296,4053,3807,3575,3353,3133,2915, 2696,2478,2268,2067,1871,1679,1486,1291,1104,922,749,577,403,233,64,-105,-262,-420,-576,-738, -902,-1061,-1215,-1368,-1520,-1679,-1838,-1998,-2159,-2316,-2475,-2641,-2812,-2988,-3159,-3335,-3509,-3686,-3868,-4060, -4251,-4437,-4621,-4810,-5005,-5207,-5408,-5608,-5802,-5997,-6198,-6403,-6614,-6819,-7017,-7216,-7417,-7619,-7826,-8031, -8223,-8407,-8587,-8761,-8937,-9104,-9251,-9382,-9490,-9588,-9671,-9730,-9761,-9752,-9707,-9622,-9504,-9348,-9141,-8878, -8555,-8174,-7735,-7243,-6689,-6070,-5390,-4651,-3871,-3053,-2207,-1336,-452,430,1301,2151,2961,3726,4436,5082, 5661,6173,6615,6984,7284,7506,7664,7757,7797,7786,7723,7611,7462,7274,7071,6848,6604,6341,6065,5773, 5488,5199,4914,4625,4330,4035,3747,3463,3190,2918,2642,2370,2098,1836,1582,1334,1082,829,571,324, 78,-158,-398,-641,-889,-1127,-1361,-1590,-1814,-2043,-2278,-2511,-2735,-2953,-3166,-3383,-3603,-3819,-4034,-4234, -4429,-4623,-4821,-5013,-5199,-5371,-5532,-5685,-5827,-5965,-6092,-6197,-6278,-6336,-6372,-6390,-6377,-6320,-6221,-6078, -5887,-5647,-5355,-5003,-4586,-4102,-3551,-2948,-2279,-1561,-788,23,868,1734,2611,3486,4344,5175,5969,6716, 7414,8058,8641,9152,9589,9957,10258,10496,10674,10786,10841,10839,10797,10722,10614,10475,10295,10095,9870,9630, 9385,9124,8854,8567,8271,7975,7688,7399,7107,6813,6516,6225,5943,5672,5405,5138,4870,4613,4370,4136, 3907,3679,3453,3229,3014,2810,2615,2420,2221,2024,1830,1648,1469,1291,1110,927,746,569,398,231, 68,-107,-279,-447,-611,-767,-931,-1091,-1255,-1421,-1573,-1722,-1872,-2027,-2190,-2346,-2502,-2659,-2812,-2977, -3144,-3319,-3492,-3664,-3832,-4012,-4199,-4390,-4588,-4782,-4976,-5175,-5380,-5592,-5807,-6020,-6227,-6434,-6646,-6862, -7084,-7298,-7508,-7708,-7907,-8106,-8305,-8497,-8674,-8840,-8992,-9137,-9277,-9405,-9515,-9597,-9658,-9694,-9716,-9710, -9668,-9589,-9462,-9296,-9090,-8836,-8529,-8159,-7720,-7219,-6661,-6045,-5366,-4632,-3842,-3011,-2151,-1269,-384,502, 1377,2223,3030,3781,4480,5113,5679,6163,6577,6919,7195,7401,7547,7621,7640,7605,7532,7424,7279,7100, 6886,6655,6410,6151,5887,5611,5321,5025,4731,4440,4151,3861,3565,3267,2976,2691,2416,2146,1872,1596, 1325,1062,810,562,315,67,-187,-428,-665,-895,-1120,-1348,-1583,-1812,-2032,-2247,-2464,-2682,-2904,-3127, -3347,-3557,-3763,-3969,-4179,-4392,-4596,-4787,-4973,-5150,-5325,-5498,-5659,-5800,-5923,-6031,-6126,-6204,-6262,-6292, -6289,-6254,-6186,-6080,-5939,-5751,-5506,-5207,-4852,-4448,-3984,-3461,-2877,-2238,-1540,-795,-13,802,1641,2494, 3345,4183,5000,5790,6540,7233,7871,8447,8963,9411,9795,10104,10344,10511,10621,10684,10702,10670,10596,10481, 10337,10176,9994,9797,9576,9338,9086,8833,8577,8318,8050,7773,7490,7214,6936,6668,6398,6121,5843,5569, 5302,5049,4796,4548,4295,4052,3812,3585,3366,3150,2926,2713,2505,2308,2120,1932,1745,1560,1377,1202, 1030,864,694,523,353,186,24,-136,-297,-462,-633,-804,-966,-1127,-1289,-1453,-1622,-1787,-1952,-2115, -2276,-2442,-2614,-2788,-2960,-3129,-3298,-3475,-3653,-3836,-4022,-4205,-4384,-4568,-4756,-4953,-5157,-5356,-5548,-5750, -5952,-6164,-6381,-6592,-6804,-7013,-7219,-7432,-7650,-7861,-8065,-8257,-8441,-8624,-8800,-8967,-9117,-9245,-9354,-9445, -9526,-9584,-9615,-9606,-9564,-9489,-9384,-9241,-9056,-8820,-8529,-8183,-7789,-7343,-6837,-6274,-5653,-4973,-4246,-3479, -2678,-1851,-1002,-145,706,1535,2341,3107,3825,4483,5082,5612,6075,6465,6787,7034,7212,7325,7389,7398, 7359,7269,7139,6974,6789,6578,6355,6112,5853,5576,5299,5027,4754,4475,4191,3903,3617,3338,3064,2791, 2518,2236,1963,1691,1430,1175,913,653,390,135,-116,-356,-601,-843,-1089,-1330,-1560,-1784,-2005,-2227, -2452,-2674,-2892,-3101,-3305,-3513,-3725,-3932,-4138,-4330,-4524,-4709,-4896,-5081,-5260,-5428,-5580,-5720,-5858,-5981, -6088,-6176,-6234,-6266,-6269,-6253,-6198,-6109,-5968,-5775,-5537,-5246,-4901,-4496,-4029,-3505,-2915,-2277,-1588,-854, -78,729,1560,2402,3247,4085,4899,5682,6426,7119,7764,8351,8881,9344,9733,10049,10304,10504,10642,10721, 10741,10710,10637,10533,10403,10243,10049,9832,9595,9349,9097,8836,8565,8281,7990,7702,7421,7144,6869,6586, 6301,6025,5760,5500,5244,4989,4736,4489,4245,4016,3789,3563,3336,3109,2895,2685,2480,2280,2077,1879, 1679,1486,1304,1123,941,759,579,407,236,72,-90,-256,-424,-587,-744,-898,-1054,-1213,-1372,-1527, -1684,-1837,-1984,-2141,-2301,-2468,-2633,-2794,-2955,-3121,-3297,-3474,-3654,-3835,-4015,-4196,-4384,-4579,-4774,-4972, -5165,-5357,-5557,-5764,-5971,-6178,-6377,-6575,-6777,-6986,-7195,-7400,-7600,-7795,-7985,-8176,-8369,-8555,-8729,-8889, -9036,-9175,-9307,-9423,-9521,-9594,-9638,-9655,-9650,-9615,-9547,-9428,-9261,-9043,-8786,-8472,-8105,-7673,-7178,-6618, -6004,-5332,-4614,-3841,-3021,-2173,-1304,-425,451,1315,2153,2953,3707,4410,5049,5625,6135,6567,6929,7217, 7444,7608,7707,7746,7731,7663,7561,7423,7255,7059,6829,6581,6325,6059,5787,5508,5215,4918,4625,4334, 4053,3769,3487,3201,2917,2642,2376,2114,1855,1588,1324,1070,822,577,333,86,-161,-409,-647,-883, -1115,-1353,-1589,-1827,-2057,-2278,-2500,-2723,-2952,-3180,-3401,-3614,-3822,-4026,-4235,-4441,-4644,-4835,-5013,-5185, -5358,-5520,-5676,-5814,-5937,-6039,-6124,-6197,-6251,-6274,-6262,-6214,-6133,-6015,-5855,-5646,-5376,-5049,-4663,-4217, -3707,-3144,-2510,-1825,-1084,-304,515,1360,2224,3089,3950,4785,5596,6368,7094,7759,8361,8895,9365,9772, 10118,10387,10587,10723,10805,10836,10828,10779,10684,10548,10390,10210,10011,9797,9560,9304,9038,8764,8488,8211, 7925,7627,7331,7031,6741,6456,6175,5892,5608,5329,5057,4801,4552,4302,4054,3814,3579,3360,3145,2934, 2724,2516,2311,2117,1930,1746,1561,1373,1190,1009,836,668,493,318,139,-36,-201,-366,-533,-701, -871,-1041,-1207,-1367,-1527,-1686,-1851,-2014,-2175,-2331,-2487,-2646,-2811,-2977,-3148,-3312,-3478,-3647,-3823,-4008, -4192,-4376,-4557,-4748,-4941,-5140,-5347,-5551,-5759,-5960,-6168,-6385,-6603,-6823,-7034,-7244,-7453,-7663,-7874,-8085, -8282,-8474,-8651,-8826,-9001,-9161,-9308,-9434,-9541,-9630,-9708,-9769,-9808,-9810,-9776,-9712,-9616,-9482,-9310,-9082, -8801,-8465,-8069,-7622,-7119,-6544,-5914,-5218,-4473,-3683,-2854,-1997,-1116,-228,656,1517,2348,3141,3879,4557, 5169,5714,6185,6592,6922,7175,7364,7484,7544,7561,7525,7440,7315,7151,6965,6760,6533,6290,6029,5752, 5470,5190,4908,4625,4331,4034,3741,3452,3170,2888,2608,2326,2041,1767,1504,1244,984,724,463,210, -34,-274,-508,-748,-988,-1224,-1455,-1677,-1889,-2112,-2334,-2558,-2777,-2988,-3198,-3409,-3621,-3837,-4050,-4250, -4447,-4635,-4832,-5021,-5206,-5377,-5534,-5677,-5816,-5942,-6058,-6149,-6211,-6252,-6263,-6251,-6213,-6134,-6014,-5849, -5633,-5370,-5062,-4690,-4265,-3772,-3227,-2624,-1968,-1263,-513,274,1094,1931,2774,3619,4454,5256,6027,6752, 7432,8053,8618,9115,9542,9894,10182,10407,10576,10682,10725,10719,10667,10586,10471,10329,10156,9958,9740,9512, 9278,9036,8783,8516,8242,7969,7696,7428,7156,6880,6602,6323,6055,5793,5533,5275,5012,4753,4506,4262, 4030,3797,3566,3333,3110,2896,2696,2493,2291,2093,1895,1709,1528,1353,1179,1002,824,657,493,331, 169,2,-163,-331,-488,-650,-807,-968,-1138,-1303,-1465,-1625,-1787,-1946,-2117,-2290,-2458,-2630,-2796,-2963, -3142,-3323,-3505,-3685,-3861,-4043,-4231,-4419,-4616,-4807,-4998,-5188,-5387,-5589,-5795,-5999,-6210,-6411,-6616,-6824, -7041,-7256,-7462,-7665,-7863,-8064,-8261,-8460,-8643,-8813,-8968,-9109,-9245,-9368,-9466,-9536,-9583,-9601,-9597,-9564, -9498,-9390,-9233,-9030,-8781,-8490,-8145,-7740,-7274,-6750,-6170,-5542,-4862,-4133,-3365,-2552,-1716,-869,-18,830, 1658,2451,3206,3909,4560,5148,5669,6121,6502,6812,7055,7237,7358,7413,7406,7356,7267,7140,6981,6794, 6579,6340,6089,5832,5570,5294,5015,4722,4437,4154,3873,3596,3317,3033,2748,2473,2203,1937,1673,1403, 1137,872,616,367,116,-136,-389,-644,-884,-1120,-1354,-1590,-1825,-2056,-2282,-2501,-2713,-2926,-3145,-3365, -3577,-3779,-3977,-4178,-4373,-4573,-4765,-4947,-5121,-5287,-5449,-5608,-5755,-5888,-6001,-6095,-6173,-6233,-6267,-6277, -6247,-6177,-6072,-5928,-5736,-5498,-5202,-4844,-4431,-3957,-3427,-2840,-2197,-1504,-764,9,810,1635,2470,3304, 4120,4915,5685,6419,7102,7733,8302,8806,9251,9629,9947,10204,10388,10512,10582,10610,10592,10535,10436,10298, 10127,9939,9737,9518,9278,9020,8753,8482,8209,7934,7656,7368,7079,6792,6512,6244,5976,5708,5444,5178, 4924,4678,4439,4205,3971,3732,3509,3291,3080,2872,2664,2454,2251,2051,1859,1673,1488,1295,1106,921, 748,576,401,228,53,-117,-285,-443,-606,-768,-933,-1092,-1251,-1406,-1559,-1712,-1871,-2032,-2191,-2345, -2502,-2661,-2830,-3001,-3174,-3342,-3513,-3688,-3869,-4057,-4247,-4437,-4627,-4815,-5014,-5215,-5417,-5626,-5824,-6027, -6225,-6433,-6647,-6856,-7060,-7258,-7456,-7654,-7853,-8049,-8236,-8415,-8581,-8744,-8904,-9055,-9193,-9308,-9403,-9482, -9542,-9586,-9598,-9582,-9525,-9432,-9303,-9135,-8916,-8646,-8310,-7923,-7473,-6971,-6404,-5785,-5101,-4367,-3588,-2773, -1929,-1065,-192,673,1529,2353,3138,3869,4554,5164,5710,6190,6602,6950,7227,7430,7570,7649,7674,7654, 7586,7476,7327,7148,6941,6718,6481,6227,5956,5674,5386,5102,4814,4526,4235,3942,3648,3363,3087,2810, 2538,2261,1990,1723,1464,1210,960,707,453,203,-43,-277,-515,-749,-992,-1232,-1466,-1689,-1917,-2139, -2371,-2602,-2826,-3045,-3258,-3473,-3693,-3910,-4123,-4329,-4520,-4712,-4900,-5088,-5268,-5433,-5584,-5726,-5852,-5972, -6077,-6162,-6220,-6248,-6250,-6228,-6174,-6083,-5946,-5759,-5521,-5237,-4895,-4499,-4035,-3506,-2918,-2271,-1577,-827, -39,781,1625,2483,3340,4193,5018,5814,6565,7269,7912,8498,9018,9474,9848,10155,10397,10578,10705,10777, 10790,10761,10685,10582,10450,10295,10108,9898,9668,9429,9181,8931,8664,8391,8101,7815,7531,7246,6962,6674, 6381,6095,5812,5543,5276,5012,4749,4485,4234,3994,3760,3532,3306,3080,2864,2653,2455,2258,2062,1865, 1675,1487,1310,1131,955,776,600,423,255,89,-81,-250,-423,-596,-764,-930,-1090,-1257,-1424,-1592, -1757,-1916,-2071,-2234,-2399,-2564,-2728,-2892,-3054,-3220,-3388,-3560,-3739,-3913,-4090,-4266,-4452,-4642,-4836,-5032, -5225,-5420,-5620,-5825,-6042,-6255,-6468,-6676,-6887,-7103,-7324,-7541,-7751,-7956,-8152,-8350,-8546,-8736,-8914,-9075, -9226,-9365,-9489,-9601,-9695,-9761,-9799,-9812,-9801,-9769,-9701,-9586,-9432,-9229,-8981,-8689,-8341,-7935,-7465,-6931, -6342,-5699,-5000,-4254,-3456,-2623,-1764,-884,-4,865,1719,2537,3316,4036,4697,5294,5822,6276,6658,6967, 7210,7390,7505,7558,7557,7505,7410,7284,7125,6939,6723,6486,6239,5981,5719,5447,5165,4877,4584,4297, 4013,3732,3447,3158,2870,2589,2315,2043,1777,1506,1231,970,715,464,218,-29,-278,-522,-763,-989, -1216,-1445,-1671,-1901,-2122,-2336,-2548,-2760,-2975,-3191,-3403,-3612,-3813,-4011,-4216,-4419,-4617,-4810,-4988,-5162, -5326,-5487,-5639,-5780,-5894,-5993,-6074,-6136,-6177,-6188,-6163,-6107,-6004,-5868,-5692,-5467,-5189,-4854,-4463,-4018, -3515,-2954,-2339,-1668,-955,-194,596,1411,2239,3075,3903,4713,5496,6252,6967,7627,8227,8767,9241,9650, 9993,10271,10480,10623,10706,10744,10740,10693,10600,10474,10309,10130,9930,9720,9487,9243,8984,8721,8460,8195, 7927,7649,7374,7090,6817,6549,6286,6020,5752,5487,5228,4979,4732,4490,4245,4003,3766,3539,3319,3102, 2890,2672,2459,2260,2065,1876,1685,1496,1308,1128,951,783,615,445,273,105,-59,-220,-377,-540, -704,-874,-1033,-1191,-1350,-1510,-1675,-1839,-2005,-2173,-2333,-2500,-2671,-2849,-3026,-3204,-3376,-3554,-3736,-3923, -4113,-4300,-4490,-4677,-4869,-5067,-5267,-5470,-5668,-5864,-6066,-6276,-6485,-6696,-6906,-7107,-7310,-7515,-7722,-7929, -8126,-8314,-8498,-8669,-8840,-9004,-9154,-9283,-9392,-9476,-9552,-9603,-9629,-9620,-9575,-9492,-9375,-9219,-9023,-8773, -8465,-8103,-7681,-7211,-6689,-6105,-5466,-4772,-4035,-3262,-2455,-1628,-787,60,898,1714,2500,3247,3938,4575, 5145,5651,6091,6465,6771,7008,7178,7284,7336,7338,7294,7198,7066,6897,6705,6492,6259,6017,5755,5481, 5204,4922,4648,4366,4079,3791,3504,3221,2951,2678,2410,2135,1858,1592,1329,1076,818,563,302,46, -207,-451,-691,-933,-1177,-1419,-1657,-1882,-2109,-2333,-2559,-2784,-3005,-3218,-3422,-3628,-3834,-4045,-4245,-4439, -4626,-4804,-4980,-5157,-5326,-5483,-5625,-5753,-5869,-5978,-6067,-6142,-6186,-6198,-6184,-6140,-6064,-5948,-5784,-5567, -5299,-4980,-4606,-4176,-3687,-3136,-2525,-1863,-1155,-406,377,1186,2012,2836,3662,4468,5252,5999,6701,7354, 7956,8502,8986,9406,9756,10037,10256,10419,10536,10599,10611,10574,10497,10392,10260,10102,9919,9706,9474,9234, 8986,8730,8461,8184,7904,7613,7329,7053,6773,6494,6208,5931,5660,5400,5147,4894,4644,4398,4155,3924, 3702,3481,3260,3043,2833,2627,2429,2231,2036,1842,1645,1455,1273,1092,912,729,548,371,197,28, -139,-307,-479,-648,-813,-974,-1131,-1291,-1452,-1619,-1775,-1930,-2085,-2240,-2398,-2565,-2726,-2891,-3054,-3219, -3395,-3575,-3753,-3938,-4117,-4300,-4488,-4684,-4885,-5090,-5286,-5488,-5688,-5893,-6106,-6318,-6528,-6733,-6935,-7142, -7352,-7556,-7760,-7950,-8135,-8318,-8497,-8670,-8837,-8984,-9120,-9239,-9353,-9453,-9533,-9584,-9607,-9601,-9573,-9513, -9421,-9289,-9102,-8865,-8581,-8249,-7862,-7410,-6897,-6323,-5686,-5001,-4269,-3492,-2675,-1831,-969,-104,755,1600, 2415,3191,3912,4577,5181,5720,6191,6590,6920,7179,7375,7514,7596,7620,7589,7513,7398,7254,7085,6885, 6658,6410,6153,5888,5616,5342,5056,4763,4469,4179,3891,3608,3324,3038,2754,2475,2205,1944,1677,1414, 1154,895,642,402,159,-83,-331,-575,-810,-1041,-1268,-1496,-1728,-1958,-2188,-2411,-2627,-2846,-3069,-3290, -3512,-3725,-3934,-4139,-4344,-4548,-4748,-4937,-5118,-5284,-5443,-5599,-5738,-5867,-5979,-6061,-6126,-6178,-6203,-6202, -6166,-6086,-5969,-5810,-5610,-5363,-5056,-4695,-4273,-3793,-3259,-2663,-2010,-1306,-554,235,1056,1898,2746,3591, 4426,5231,6008,6741,7425,8056,8618,9116,9541,9904,10201,10432,10592,10691,10740,10741,10708,10637,10525,10378, 10204,10012,9807,9587,9352,9103,8839,8569,8299,8030,7756,7475,7187,6899,6613,6336,6060,5787,5510,5238, 4972,4714,4466,4218,3971,3729,3492,3267,3048,2836,2624,2419,2213,2014,1830,1643,1460,1278,1092,916, 742,571,405,236,63,-110,-277,-440,-603,-773,-942,-1111,-1278,-1441,-1601,-1765,-1931,-2099,-2268,-2426, -2590,-2752,-2920,-3091,-3270,-3441,-3611,-3782,-3958,-4143,-4327,-4515,-4699,-4884,-5079,-5275,-5478,-5684,-5886,-6087, -6294,-6505,-6720,-6939,-7153,-7364,-7571,-7781,-7988,-8200,-8403,-8590,-8763,-8939,-9101,-9256,-9398,-9520,-9618,-9696, -9755,-9796,-9811,-9791,-9732,-9639,-9513,-9347,-9141,-8879,-8567,-8192,-7765,-7279,-6740,-6146,-5489,-4773,-4015,-3217, -2389,-1536,-669,197,1059,1895,2698,3455,4163,4805,5379,5883,6318,6688,6981,7209,7368,7463,7502,7494, 7439,7344,7203,7031,6835,6619,6387,6142,5884,5610,5329,5048,4773,4491,4211,3915,3625,3338,3058,2781, 2508,2230,1950,1677,1407,1146,888,626,370,109,-139,-386,-622,-862,-1100,-1340,-1571,-1791,-2010,-2226, -2446,-2671,-2886,-3099,-3302,-3507,-3709,-3918,-4127,-4328,-4520,-4706,-4892,-5073,-5253,-5423,-5576,-5713,-5842,-5958, -6062,-6140,-6195,-6223,-6219,-6192,-6127,-6024,-5878,-5679,-5432,-5133,-4783,-4383,-3920,-3398,-2819,-2190,-1507,-784, -22,770,1585,2406,3231,4043,4840,5607,6337,7018,7651,8233,8755,9216,9605,9926,10182,10374,10513,10597, 10630,10606,10543,10446,10321,10168,9987,9781,9554,9311,9067,8816,8558,8289,8010,7731,7457,7183,6915,6644, 6366,6093,5826,5570,5316,5064,4810,4564,4322,4083,3853,3628,3403,3175,2953,2741,2534,2332,2129,1930, 1730,1540,1351,1171,992,812,632,458,288,124,-42,-203,-372,-536,-700,-857,-1013,-1170,-1335,-1496, -1659,-1815,-1972,-2132,-2299,-2466,-2637,-2807,-2976,-3149,-3323,-3506,-3693,-3875,-4058,-4247,-4433,-4626,-4823,-5027, -5219,-5412,-5610,-5812,-6018,-6224,-6425,-6629,-6828,-7031,-7235,-7442,-7645,-7839,-8026,-8214,-8402,-8582,-8754,-8915, -9057,-9191,-9315,-9423,-9513,-9578,-9611,-9619,-9600,-9548,-9464,-9336,-9166,-8943,-8674,-8353,-7984,-7556,-7066,-6518, -5912,-5257,-4557,-3809,-3028,-2210,-1381,-536,301,1128,1932,2703,3430,4108,4726,5285,5778,6201,6554,6841, 7061,7225,7330,7374,7362,7304,7208,7077,6913,6724,6507,6267,6013,5752,5485,5215,4934,4648,4360,4073, 3792,3514,3236,2957,2679,2403,2139,1876,1619,1358,1096,836,582,335,91,-158,-405,-654,-896,-1135, -1362,-1594,-1827,-2063,-2288,-2515,-2732,-2947,-3164,-3385,-3598,-3804,-4002,-4197,-4391,-4582,-4765,-4946,-5112,-5266, -5414,-5555,-5684,-5803,-5897,-5969,-6027,-6060,-6073,-6055,-6006,-5913,-5776,-5600,-5377,-5103,-4776,-4386,-3942,-3437, -2881,-2267,-1601,-888,-134,655,1465,2291,3118,3936,4733,5502,6232,6924,7562,8147,8672,9132,9525,9860, 10133,10347,10497,10587,10632,10631,10593,10523,10419,10277,10109,9921,9718,9503,9270,9021,8758,8489,8217,7942, 7669,7387,7102,6814,6535,6258,5991,5723,5450,5188,4929,4680,4440,4207,3974,3740,3514,3297,3088,2882, 2679,2476,2275,2079,1891,1705,1524,1339,1154,970,793,622,449,273,96,-76,-248,-415,-582,-746, -917,-1086,-1251,-1411,-1569,-1724,-1886,-2049,-2212,-2373,-2532,-2690,-2855,-3024,-3197,-3368,-3542,-3715,-3896,-4078, -4269,-4460,-4654,-4843,-5041,-5244,-5451,-5660,-5869,-6075,-6281,-6492,-6704,-6923,-7132,-7333,-7535,-7736,-7933,-8129, -8316,-8494,-8658,-8811,-8958,-9098,-9221,-9325,-9405,-9468,-9512,-9535,-9529,-9497,-9418,-9305,-9154,-8962,-8724,-8438, -8089,-7687,-7223,-6703,-6133,-5499,-4811,-4071,-3288,-2475,-1638,-785,71,921,1749,2548,3306,4011,4661,5249, 5766,6215,6594,6910,7157,7341,7456,7516,7528,7494,7417,7301,7151,6966,6758,6534,6297,6048,5780,5502, 5218,4936,4646,4366,4076,3785,3488,3197,2915,2637,2359,2080,1806,1532,1270,1013,756,507,253,-1, -246,-487,-717,-953,-1187,-1424,-1653,-1876,-2097,-2318,-2538,-2765,-2990,-3211,-3423,-3635,-3846,-4057,-4270,-4477, -4674,-4866,-5050,-5235,-5410,-5573,-5720,-5853,-5973,-6076,-6163,-6227,-6264,-6269,-6247,-6193,-6108,-5983,-5803,-5580, -5305,-4972,-4594,-4155,-3662,-3105,-2492,-1830,-1120,-364,426,1243,2075,2918,3751,4575,5369,6130,6844,7505, 8113,8656,9141,9559,9906,10181,10391,10541,10634,10679,10674,10618,10525,10402,10255,10084,9893,9675,9445,9199, 8953,8699,8439,8167,7894,7607,7329,7058,6783,6507,6230,5952,5678,5413,5151,4894,4631,4378,4128,3886, 3653,3422,3194,2967,2748,2532,2329,2131,1936,1740,1547,1359,1177,1004,830,658,480,308,143,-23, -184,-348,-514,-679,-844,-1006,-1168,-1333,-1495,-1662,-1827,-1990,-2149,-2312,-2478,-2649,-2818,-2986,-3155,-3324, -3496,-3675,-3859,-4038,-4216,-4394,-4578,-4765,-4958,-5150,-5346,-5541,-5735,-5936,-6143,-6351,-6556,-6762,-6967,-7175, -7386,-7596,-7806,-8006,-8200,-8391,-8580,-8768,-8943,-9100,-9246,-9371,-9488,-9589,-9670,-9728,-9753,-9748,-9716,-9656, -9562,-9425,-9243,-9010,-8731,-8402,-8023,-7588,-7092,-6538,-5923,-5257,-4548,-3789,-2994,-2163,-1311,-454,404,1250, 2068,2857,3599,4285,4914,5482,5980,6405,6760,7040,7259,7414,7507,7546,7530,7466,7357,7221,7055,6864, 6643,6409,6150,5893,5627,5357,5082,4797,4512,4227,3948,3668,3394,3112,2829,2550,2276,2009,1746,1480, 1212,944,684,431,178,-71,-320,-571,-815,-1053,-1283,-1511,-1742,-1972,-2194,-2412,-2624,-2837,-3049,-3260, -3471,-3674,-3872,-4065,-4254,-4449,-4639,-4823,-4996,-5156,-5315,-5462,-5601,-5729,-5835,-5925,-5989,-6032,-6054,-6050, -6009,-5926,-5807,-5640,-5427,-5168,-4855,-4481,-4049,-3562,-3022,-2425,-1778,-1085,-348,422,1218,2028,2847,3662, 4461,5233,5973,6679,7339,7946,8491,8978,9401,9764,10064,10306,10485,10597,10660,10674,10648,10585,10485,10348, 10182,9994,9786,9566,9332,9083,8814,8547,8271,7997,7725,7444,7160,6877,6603,6329,6066,5804,5538,5275, 5020,4774,4533,4298,4063,3829,3597,3374,3156,2944,2733,2523,2314,2107,1908,1717,1526,1335,1145,953, 774,598,426,248,71,-101,-270,-436,-598,-761,-926,-1092,-1256,-1417,-1571,-1730,-1891,-2055,-2221,-2381, -2546,-2710,-2877,-3053,-3232,-3408,-3588,-3765,-3953,-4143,-4338,-4531,-4729,-4920,-5115,-5317,-5523,-5731,-5936,-6140, -6343,-6546,-6753,-6963,-7166,-7369,-7563,-7760,-7954,-8150,-8339,-8514,-8683,-8844,-8997,-9139,-9275,-9385,-9479,-9550, -9605,-9641,-9649,-9627,-9565,-9464,-9323,-9143,-8918,-8647,-8317,-7927,-7481,-6984,-6431,-5824,-5161,-4451,-3693,-2903, -2088,-1260,-423,410,1229,2020,2774,3485,4143,4741,5280,5752,6158,6502,6778,6987,7136,7224,7260,7247, 7191,7096,6960,6789,6594,6376,6145,5900,5639,5365,5081,4799,4517,4235,3952,3665,3378,3092,2815,2542, 2273,2006,1733,1469,1208,958,706,459,205,-44,-290,-531,-764,-1001,-1242,-1482,-1716,-1942,-2171,-2390, -2614,-2841,-3066,-3288,-3500,-3703,-3915,-4121,-4325,-4518,-4705,-4882,-5052,-5220,-5382,-5533,-5666,-5781,-5882,-5968, -6042,-6089,-6114,-6108,-6063,-5992,-5887,-5747,-5555,-5314,-5019,-4673,-4268,-3811,-3298,-2723,-2097,-1422,-701,56, 848,1656,2477,3300,4111,4903,5666,6389,7065,7687,8250,8758,9201,9582,9899,10147,10333,10465,10550,10587, 10579,10523,10431,10312,10169,10008,9823,9619,9394,9155,8911,8662,8403,8139,7861,7580,7300,7022,6753,6475, 6196,5920,5645,5381,5124,4866,4614,4366,4121,3887,3661,3442,3224,3007,2796,2592,2393,2200,2011,1819, 1631,1444,1264,1088,916,736,562,381,210,39,-129,-298,-472,-649,-815,-983,-1147,-1312,-1479,-1647, -1813,-1979,-2138,-2297,-2460,-2630,-2801,-2968,-3131,-3302,-3471,-3649,-3832,-4013,-4195,-4377,-4561,-4754,-4952,-5151, -5350,-5552,-5755,-5960,-6171,-6387,-6603,-6809,-7016,-7224,-7438,-7651,-7851,-8046,-8238,-8416,-8595,-8768,-8929,-9076, -9201,-9313,-9409,-9489,-9550,-9588,-9598,-9574,-9520,-9438,-9324,-9163,-8955,-8698,-8389,-8034,-7626,-7157,-6632,-6048, -5406,-4717,-3982,-3206,-2395,-1557,-707,144,986,1805,2594,3338,4034,4670,5242,5751,6195,6568,6870,7104, 7275,7389,7448,7451,7408,7322,7199,7044,6870,6668,6451,6205,5949,5687,5421,5148,4868,4582,4294,4006, 3723,3441,3160,2879,2591,2306,2032,1764,1497,1235,965,705,447,198,-48,-291,-537,-780,-1022,-1251, -1479,-1702,-1926,-2151,-2379,-2593,-2807,-3018,-3232,-3448,-3664,-3876,-4081,-4279,-4476,-4672,-4868,-5056,-5233,-5394, -5552,-5699,-5831,-5953,-6054,-6130,-6183,-6212,-6214,-6189,-6125,-6018,-5868,-5679,-5440,-5152,-4812,-4413,-3952,-3437, -2869,-2248,-1577,-860,-102,684,1496,2320,3149,3968,4769,5546,6285,6981,7634,8223,8753,9215,9611,9943, 10213,10419,10566,10651,10682,10667,10612,10524,10403,10248,10063,9860,9644,9419,9179,8927,8663,8396,8122,7853, 7582,7308,7029,6749,6475,6207,5942,5679,5414,5152,4893,4642,4395,4159,3914,3678,3442,3218,2996,2783, 2572,2361,2152,1952,1758,1570,1384,1196,1013,833,657,487,323,152,-17,-186,-353,-511,-670,-832, -994,-1160,-1323,-1486,-1648,-1809,-1969,-2140,-2306,-2473,-2637,-2807,-2976,-3153,-3330,-3510,-3687,-3868,-4044,-4232, -4423,-4614,-4801,-4992,-5182,-5377,-5574,-5778,-5982,-6179,-6379,-6580,-6788,-6998,-7203,-7406,-7609,-7805,-8007,-8203, -8399,-8582,-8753,-8914,-9073,-9218,-9349,-9464,-9555,-9622,-9667,-9692,-9691,-9658,-9583,-9467,-9312,-9116,-8877,-8582, -8236,-7832,-7369,-6852,-6284,-5663,-4986,-4261,-3491,-2692,-1863,-1021,-170,673,1504,2303,3069,3783,4448,5047, 5585,6056,6462,6797,7067,7269,7406,7481,7501,7472,7405,7296,7148,6968,6763,6540,6304,6053,5792,5517, 5238,4955,4674,4395,4117,3834,3551,3272,2995,2727,2459,2188,1920,1649,1388,1131,876,623,363,109, -142,-389,-631,-870,-1113,-1355,-1595,-1822,-2049,-2270,-2493,-2715,-2935,-3150,-3357,-3564,-3764,-3968,-4171,-4364, -4547,-4726,-4897,-5067,-5230,-5385,-5529,-5653,-5766,-5863,-5946,-6012,-6046,-6053,-6029,-5970,-5879,-5751,-5573,-5350, -5068,-4734,-4347,-3903,-3398,-2839,-2222,-1558,-849,-102,676,1476,2291,3105,3912,4700,5466,6195,6884,7515, 8100,8625,9093,9496,9837,10111,10322,10480,10588,10645,10654,10620,10539,10432,10296,10133,9953,9747,9520,9282, 9029,8776,8514,8243,7962,7678,7395,7117,6839,6563,6288,6012,5741,5483,5224,4976,4725,4476,4235,3998, 3771,3552,3331,3113,2898,2684,2481,2283,2081,1884,1688,1493,1304,1116,934,753,569,387,207,35, -137,-310,-481,-653,-824,-990,-1151,-1312,-1476,-1640,-1808,-1966,-2124,-2283,-2447,-2614,-2784,-2955,-3126,-3296, -3472,-3654,-3841,-4027,-4216,-4406,-4597,-4795,-4996,-5204,-5406,-5611,-5808,-6019,-6231,-6445,-6653,-6864,-7065,-7268, -7477,-7678,-7878,-8069,-8253,-8433,-8604,-8774,-8933,-9081,-9213,-9328,-9430,-9519,-9587,-9633,-9653,-9643,-9604,-9534, -9433,-9292,-9099,-8857,-8567,-8225,-7831,-7382,-6874,-6303,-5683,-5007,-4291,-3534,-2743,-1927,-1093,-254,574,1385, 2167,2912,3607,4246,4827,5346,5804,6194,6518,6778,6975,7111,7197,7228,7207,7137,7036,6897,6734,6542, 6333,6098,5847,5587,5321,5049,4769,4483,4193,3904,3622,3342,3065,2782,2503,2227,1952,1691,1433,1173, 914,655,407,162,-79,-317,-556,-798,-1036,-1266,-1491,-1718,-1945,-2170,-2398,-2619,-2835,-3049,-3261,-3477, -3694,-3905,-4105,-4302,-4495,-4684,-4868,-5044,-5210,-5361,-5499,-5627,-5749,-5849,-5930,-5984,-6020,-6027,-6011,-5962, -5880,-5755,-5583,-5373,-5116,-4810,-4452,-4036,-3563,-3033,-2450,-1820,-1134,-411,348,1139,1940,2758,3571,4372, 5155,5900,6609,7274,7889,8445,8939,9367,9727,10022,10259,10441,10564,10627,10646,10620,10564,10472,10352,10200, 10024,9824,9618,9398,9172,8927,8671,8408,8143,7876,7612,7340,7058,6783,6503,6234,5968,5704,5438,5174, 4914,4660,4415,4175,3937,3703,3471,3247,3034,2827,2619,2416,2216,2018,1829,1648,1464,1283,1100,920, 747,577,405,237,64,-109,-280,-449,-615,-782,-952,-1121,-1292,-1458,-1622,-1790,-1954,-2122,-2292,-2462, -2627,-2795,-2965,-3142,-3315,-3496,-3674,-3848,-4029,-4212,-4401,-4594,-4785,-4974,-5167,-5367,-5568,-5775,-5982,-6189, -6393,-6606,-6816,-7032,-7243,-7452,-7654,-7852,-8052,-8247,-8435,-8615,-8780,-8932,-9074,-9206,-9328,-9425,-9495,-9545, -9571,-9572,-9548,-9489,-9393,-9259,-9083,-8864,-8602,-8288,-7922,-7497,-7018,-6483,-5892,-5258,-4571,-3833,-3059,-2253, -1431,-597,241,1070,1875,2650,3384,4064,4685,5245,5739,6163,6522,6815,7045,7214,7313,7359,7356,7309, 7221,7097,6940,6753,6546,6317,6081,5836,5574,5305,5031,4752,4472,4192,3914,3634,3345,3062,2784,2510, 2239,1964,1689,1415,1147,883,626,369,113,-145,-396,-643,-882,-1119,-1354,-1592,-1823,-2048,-2270,-2484, -2703,-2922,-3137,-3353,-3559,-3762,-3966,-4170,-4371,-4572,-4762,-4945,-5117,-5287,-5456,-5610,-5751,-5874,-5982,-6072, -6148,-6202,-6225,-6214,-6167,-6085,-5970,-5807,-5599,-5340,-5028,-4661,-4238,-3758,-3226,-2630,-1988,-1296,-565,200, 991,1803,2622,3438,4245,5026,5781,6498,7169,7789,8349,8852,9294,9670,9984,10226,10405,10532,10607,10634, 10618,10553,10450,10316,10154,9977,9775,9550,9317,9062,8806,8543,8278,8008,7729,7445,7170,6892,6623,6352, 6081,5811,5546,5286,5037,4789,4544,4298,4055,3818,3591,3368,3147,2926,2707,2494,2286,2085,1889,1692, 1495,1303,1113,936,758,582,406,230,58,-107,-269,-433,-598,-766,-929,-1087,-1245,-1405,-1562,-1725, -1889,-2050,-2210,-2369,-2537,-2702,-2877,-3047,-3221,-3397,-3571,-3752,-3941,-4128,-4313,-4500,-4688,-4883,-5079,-5279, -5479,-5672,-5869,-6066,-6272,-6478,-6682,-6884,-7085,-7281,-7484,-7685,-7888,-8080,-8267,-8444,-8620,-8794,-8960,-9110, -9245,-9365,-9467,-9560,-9630,-9679,-9692,-9675,-9628,-9550,-9439,-9284,-9079,-8825,-8517,-8161,-7748,-7282,-6760,-6174, -5536,-4847,-4119,-3347,-2548,-1724,-882,-41,794,1613,2399,3148,3850,4493,5075,5599,6057,6446,6768,7024, 7216,7347,7425,7446,7419,7342,7225,7076,6903,6704,6477,6237,5979,5711,5441,5168,4885,4603,4314,4024, 3741,3467,3190,2914,2641,2365,2096,1834,1576,1318,1056,798,546,294,51,-195,-440,-687,-930,-1171, -1405,-1632,-1865,-2099,-2330,-2554,-2773,-2988,-3202,-3417,-3626,-3836,-4035,-4230,-4416,-4605,-4785,-4960,-5123,-5275, -5414,-5547,-5666,-5774,-5862,-5925,-5968,-5989,-5985,-5953,-5883,-5774,-5624,-5423,-5182,-4888,-4543,-4142,-3679,-3159, -2587,-1962,-1286,-566,189,976,1779,2593,3400,4204,4983,5732,6442,7107,7727,8294,8798,9238,9611,9927, 10180,10375,10515,10599,10633,10625,10581,10503,10397,10253,10082,9892,9686,9466,9234,8990,8729,8459,8186,7913, 7636,7359,7076,6788,6511,6230,5958,5694,5428,5160,4904,4650,4409,4173,3940,3708,3481,3256,3044,2836, 2632,2428,2223,2025,1830,1641,1457,1267,1082,895,711,531,356,177,4,-178,-353,-529,-698,-869, -1038,-1210,-1383,-1547,-1710,-1872,-2036,-2204,-2373,-2537,-2706,-2868,-3038,-3209,-3387,-3569,-3743,-3924,-4107,-4295, -4486,-4680,-4878,-5074,-5273,-5476,-5684,-5894,-6101,-6310,-6520,-6729,-6939,-7152,-7363,-7567,-7767,-7960,-8152,-8342, -8525,-8696,-8854,-9000,-9137,-9266,-9381,-9483,-9555,-9608,-9635,-9647,-9626,-9578,-9494,-9372,-9209,-9002,-8755,-8456, -8104,-7695,-7227,-6705,-6131,-5504,-4826,-4102,-3338,-2544,-1730,-903,-78,744,1545,2318,3045,3726,4353,4915, 5413,5846,6218,6521,6767,6949,7070,7135,7149,7119,7051,6946,6804,6631,6435,6218,5989,5748,5494,5227, 4952,4671,4389,4112,3831,3543,3255,2970,2687,2413,2142,1869,1595,1327,1064,806,555,305,54,-193, -439,-679,-909,-1140,-1371,-1602,-1831,-2052,-2270,-2488,-2705,-2922,-3140,-3357,-3564,-3768,-3972,-4178,-4382,-4579, -4767,-4947,-5117,-5280,-5436,-5583,-5711,-5822,-5909,-5985,-6038,-6070,-6076,-6043,-5978,-5874,-5733,-5556,-5326,-5048, -4717,-4333,-3896,-3409,-2863,-2270,-1624,-930,-199,565,1352,2156,2967,3770,4554,5326,6059,6757,7402,7996, 8531,9010,9423,9779,10064,10286,10445,10550,10604,10619,10587,10519,10408,10272,10112,9937,9741,9527,9296,9054, 8805,8556,8297,8035,7769,7497,7224,6955,6688,6423,6153,5881,5616,5358,5103,4852,4605,4357,4111,3873, 3641,3416,3196,2975,2759,2546,2344,2144,1951,1761,1569,1380,1198,1024,850,676,501,329,162,-10, -171,-339,-505,-673,-843,-1011,-1171,-1337,-1502,-1669,-1836,-2006,-2171,-2336,-2503,-2675,-2848,-3024,-3199,-3371, -3549,-3731,-3913,-4098,-4284,-4468,-4652,-4844,-5038,-5238,-5432,-5631,-5827,-6027,-6231,-6440,-6647,-6852,-7052,-7255, -7460,-7665,-7866,-8059,-8246,-8427,-8600,-8763,-8925,-9066,-9191,-9299,-9388,-9461,-9512,-9539,-9529,-9491,-9415,-9309, -9168,-8986,-8752,-8470,-8138,-7751,-7316,-6825,-6279,-5678,-5025,-4323,-3582,-2811,-2007,-1185,-353,475,1292,2085, 2847,3562,4230,4839,5385,5867,6284,6633,6916,7130,7283,7381,7426,7418,7360,7263,7132,6965,6779,6571, 6347,6101,5843,5578,5311,5039,4764,4487,4202,3918,3637,3365,3088,2814,2535,2263,1989,1726,1461,1197, 935,674,408,153,-96,-344,-592,-843,-1087,-1324,-1558,-1787,-2014,-2244,-2471,-2696,-2909,-3120,-3333,-3542, -3750,-3956,-4155,-4343,-4535,-4719,-4904,-5081,-5246,-5401,-5544,-5675,-5798,-5906,-5989,-6056,-6093,-6104,-6089,-6047, -5962,-5834,-5659,-5438,-5164,-4843,-4464,-4029,-3536,-2985,-2385,-1735,-1034,-297,474,1271,2078,2893,3705,4497, 5266,5999,6697,7344,7942,8488,8972,9389,9743,10037,10271,10448,10564,10625,10641,10613,10546,10450,10320,10164, 9975,9768,9546,9313,9068,8813,8544,8267,7992,7711,7436,7162,6880,6600,6323,6051,5786,5524,5263,5009, 4755,4505,4268,4036,3804,3573,3345,3123,2907,2697,2489,2282,2076,1870,1673,1485,1293,1104,919,730, 548,370,196,23,-147,-325,-494,-661,-823,-989,-1154,-1319,-1482,-1642,-1799,-1957,-2116,-2280,-2447,-2612, -2777,-2944,-3115,-3286,-3465,-3649,-3832,-4014,-4197,-4386,-4583,-4778,-4976,-5172,-5371,-5573,-5776,-5986,-6192,-6393, -6598,-6800,-7004,-7211,-7416,-7614,-7809,-7996,-8186,-8371,-8552,-8724,-8884,-9030,-9168,-9299,-9416,-9514,-9592,-9649, -9676,-9680,-9665,-9615,-9525,-9389,-9217,-8998,-8736,-8425,-8057,-7628,-7144,-6603,-6009,-5365,-4670,-3927,-3151,-2347, -1520,-688,144,964,1767,2539,3264,3940,4564,5129,5625,6055,6418,6721,6962,7139,7257,7317,7326,7290, 7213,7099,6950,6766,6561,6338,6098,5846,5583,5309,5032,4744,4460,4178,3896,3611,3323,3037,2759,2487, 2217,1951,1684,1419,1158,902,656,408,156,-93,-341,-581,-817,-1050,-1284,-1518,-1755,-1981,-2209,-2432, -2654,-2878,-3100,-3319,-3535,-3739,-3945,-4145,-4349,-4543,-4730,-4906,-5074,-5234,-5386,-5526,-5652,-5763,-5854,-5926, -5982,-6017,-6023,-6001,-5943,-5852,-5724,-5552,-5337,-5071,-4752,-4377,-3953,-3473,-2937,-2346,-1705,-1016,-287,474, 1265,2072,2883,3691,4480,5248,5987,6683,7332,7931,8466,8945,9365,9721,10016,10247,10411,10524,10587,10612, 10590,10530,10435,10308,10157,9991,9804,9599,9376,9134,8889,8639,8378,8116,7843,7565,7285,7012,6737,6467, 6191,5920,5642,5378,5120,4870,4618,4367,4127,3890,3658,3434,3218,3005,2787,2580,2378,2181,1990,1799, 1607,1420,1234,1057,880,701,523,343,168,-5,-176,-347,-519,-699,-870,-1041,-1212,-1375,-1544,-1715, -1881,-2051,-2212,-2378,-2545,-2713,-2886,-3059,-3231,-3401,-3576,-3753,-3940,-4122,-4306,-4496,-4682,-4874,-5072,-5272, -5475,-5678,-5878,-6087,-6297,-6504,-6719,-6928,-7134,-7340,-7542,-7748,-7948,-8144,-8324,-8499,-8671,-8834,-8984,-9121, -9243,-9341,-9428,-9498,-9551,-9579,-9574,-9539,-9470,-9372,-9238,-9068,-8849,-8586,-8269,-7900,-7485,-7012,-6486,-5905, -5267,-4586,-3857,-3095,-2302,-1496,-670,149,964,1755,2512,3234,3899,4511,5062,5552,5976,6333,6624,6853, 7016,7127,7187,7194,7157,7076,6958,6813,6641,6444,6233,5998,5750,5493,5228,4962,4690,4412,4131,3848, 3566,3285,3005,2726,2446,2163,1891,1621,1355,1093,827,565,306,56,-195,-436,-681,-919,-1161,-1394, -1621,-1844,-2067,-2285,-2509,-2727,-2943,-3150,-3358,-3568,-3779,-3982,-4183,-4370,-4561,-4745,-4925,-5102,-5268,-5417, -5553,-5676,-5789,-5884,-5956,-6003,-6021,-6015,-5976,-5903,-5796,-5643,-5446,-5195,-4900,-4554,-4154,-3700,-3190,-2627, -2014,-1357,-658,76,844,1629,2425,3221,4018,4791,5540,6251,6924,7547,8122,8639,9095,9491,9818,10084, 10293,10446,10543,10591,10581,10535,10456,10344,10210,10044,9849,9638,9416,9183,8945,8693,8432,8164,7891,7621, 7355,7088,6817,6544,6270,6006,5744,5489,5231,4972,4717,4470,4227,3992,3759,3527,3294,3067,2847,2637, 2426,2221,2014,1813,1615,1422,1238,1054,869,688,512,336,166,-5,-177,-344,-517,-682,-845,-1009, -1174,-1345,-1508,-1675,-1839,-2001,-2162,-2333,-2505,-2678,-2849,-3020,-3195,-3370,-3555,-3738,-3921,-4107,-4290,-4478, -4670,-4868,-5059,-5253,-5445,-5645,-5844,-6048,-6250,-6454,-6651,-6851,-7052,-7257,-7462,-7662,-7853,-8045,-8233,-8420, -8601,-8773,-8930,-9076,-9208,-9334,-9441,-9528,-9596,-9636,-9650,-9641,-9600,-9529,-9416,-9259,-9059,-8814,-8521,-8184, -7787,-7337,-6831,-6266,-5658,-4998,-4293,-3549,-2768,-1964,-1145,-318,497,1305,2086,2829,3531,4184,4779,5315, 5785,6192,6530,6802,7014,7167,7260,7297,7283,7225,7131,7001,6841,6653,6439,6205,5965,5713,5449,5179, 4900,4620,4341,4065,3790,3512,3235,2952,2681,2412,2150,1882,1618,1353,1091,835,582,332,81,-174, -426,-670,-911,-1149,-1389,-1625,-1860,-2093,-2318,-2538,-2756,-2978,-3198,-3414,-3619,-3823,-4021,-4217,-4412,-4602, -4784,-4954,-5114,-5271,-5419,-5557,-5680,-5786,-5876,-5947,-5997,-6025,-6026,-5993,-5929,-5820,-5675,-5489,-5252,-4962, -4617,-4215,-3758,-3248,-2684,-2067,-1398,-688,61,837,1638,2446,3259,4058,4837,5593,6312,6991,7618,8187, 8699,9152,9544,9878,10149,10359,10505,10602,10654,10656,10624,10554,10444,10300,10139,9958,9758,9539,9304,9053, 8795,8531,8265,7992,7714,7431,7147,6866,6591,6319,6046,5775,5505,5245,4990,4743,4502,4256,4018,3789, 3562,3343,3126,2913,2703,2492,2288,2091,1896,1705,1511,1316,1130,946,764,586,406,224,45,-131, -299,-469,-640,-809,-980,-1145,-1312,-1473,-1634,-1796,-1961,-2123,-2285,-2447,-2608,-2775,-2946,-3119,-3291,-3464, -3639,-3819,-4005,-4195,-4386,-4576,-4767,-4964,-5161,-5367,-5572,-5778,-5982,-6183,-6391,-6605,-6810,-7018,-7219,-7420, -7618,-7815,-8010,-8197,-8374,-8545,-8706,-8863,-9015,-9147,-9264,-9366,-9446,-9513,-9560,-9587,-9585,-9550,-9477,-9376, -9238,-9058,-8834,-8552,-8222,-7840,-7400,-6914,-6371,-5762,-5108,-4401,-3658,-2880,-2074,-1251,-422,410,1223,2013, 2763,3472,4129,4733,5270,5752,6165,6513,6795,7010,7169,7272,7319,7322,7279,7192,7068,6911,6731,6529, 6308,6065,5811,5543,5273,4994,4713,4430,4139,3852,3562,3278,3000,2714,2437,2158,1883,1614,1353,1094, 834,577,320,73,-172,-413,-653,-897,-1132,-1368,-1599,-1823,-2050,-2277,-2504,-2729,-2947,-3162,-3378,-3593, -3804,-4018,-4221,-4417,-4605,-4790,-4974,-5149,-5306,-5461,-5593,-5712,-5819,-5913,-5984,-6029,-6046,-6035,-6003,-5929, -5825,-5679,-5487,-5251,-4960,-4623,-4237,-3791,-3288,-2737,-2131,-1481,-787,-52,708,1496,2294,3100,3895,4675, 5432,6155,6828,7457,8039,8560,9020,9415,9744,10020,10230,10385,10489,10538,10540,10499,10424,10323,10192,10032, 9853,9655,9446,9217,8984,8745,8489,8227,7963,7692,7428,7157,6884,6611,6337,6064,5799,5538,5276,5016, 4758,4503,4264,4023,3790,3557,3325,3102,2881,2675,2471,2265,2063,1866,1674,1488,1303,1124,941,760, 582,408,238,65,-108,-282,-457,-626,-798,-962,-1134,-1305,-1476,-1644,-1813,-1978,-2144,-2311,-2485,-2656, -2827,-3001,-3171,-3345,-3525,-3705,-3888,-4066,-4248,-4436,-4625,-4816,-5010,-5204,-5396,-5594,-5794,-6003,-6209,-6412, -6617,-6822,-7028,-7239,-7444,-7651,-7849,-8039,-8228,-8417,-8597,-8767,-8925,-9068,-9198,-9317,-9418,-9504,-9566,-9601, -9610,-9598,-9555,-9484,-9371,-9218,-9021,-8783,-8499,-8167,-7787,-7347,-6852,-6305,-5712,-5071,-4379,-3648,-2883,-2086, -1279,-462,350,1151,1930,2673,3371,4020,4617,5151,5622,6026,6364,6641,6854,7011,7107,7148,7138,7088, 6999,6881,6728,6544,6343,6119,5885,5641,5388,5124,4849,4572,4294,4025,3748,3471,3194,2915,2636,2363, 2089,1824,1553,1283,1019,756,502,245,-8,-262,-512,-757,-996,-1232,-1466,-1699,-1932,-2154,-2374,-2589, -2802,-3014,-3227,-3439,-3645,-3842,-4037,-4231,-4423,-4608,-4789,-4957,-5119,-5274,-5419,-5555,-5673,-5778,-5856,-5919, -5961,-5975,-5957,-5910,-5822,-5696,-5531,-5320,-5060,-4753,-4384,-3966,-3490,-2962,-2383,-1753,-1080,-368,376,1146, 1933,2730,3521,4302,5062,5794,6495,7154,7758,8315,8806,9241,9615,9932,10187,10381,10515,10603,10638,10635, 10591,10505,10387,10241,10068,9881,9676,9458,9218,8968,8711,8451,8189,7918,7648,7369,7097,6820,6553,6289, 6026,5762,5501,5244,4995,4749,4507,4267,4030,3797,3568,3346,3128,2911,2694,2483,2278,2072,1876,1681, 1485,1291,1102,917,740,559,380,204,28,-144,-313,-480,-646,-818,-987,-1151,-1312,-1475,-1641,-1805, -1970,-2139,-2303,-2468,-2636,-2808,-2987,-3164,-3344,-3522,-3704,-3886,-4075,-4269,-4461,-4655,-4849,-5045,-5244,-5445, -5649,-5850,-6051,-6252,-6455,-6661,-6867,-7070,-7267,-7460,-7656,-7855,-8045,-8229,-8405,-8575,-8735,-8893,-9036,-9171, -9287,-9383,-9458,-9520,-9556,-9571,-9552,-9507,-9419,-9299,-9138,-8938,-8686,-8382,-8023,-7614,-7151,-6636,-6067,-5447, -4773,-4061,-3306,-2529,-1728,-911,-93,723,1520,2282,3012,3697,4326,4897,5413,5863,6253,6577,6841,7038, 7173,7257,7288,7273,7210,7110,6972,6804,6611,6403,6175,5929,5667,5400,5127,4850,4572,4289,4003,3720, 3436,3162,2887,2616,2342,2069,1797,1537,1278,1020,766,511,256,6,-240,-481,-727,-970,-1212,-1450, -1684,-1913,-2144,-2372,-2602,-2826,-3045,-3259,-3472,-3686,-3895,-4100,-4300,-4493,-4675,-4852,-5025,-5192,-5346,-5486, -5608,-5725,-5821,-5909,-5970,-6009,-6019,-5998,-5948,-5869,-5747,-5586,-5376,-5119,-4816,-4456,-4042,-3573,-3047,-2464, -1833,-1158,-437,314,1094,1889,2692,3497,4288,5057,5796,6499,7155,7759,8309,8806,9234,9603,9904,10146, 10333,10469,10547,10584,10573,10521,10434,10323,10184,10019,9830,9624,9400,9167,8929,8674,8414,8142,7866,7588, 7315,7037,6757,6476,6199,5925,5655,5392,5134,4875,4619,4369,4128,3892,3664,3434,3210,2989,2778,2568, 2366,2164,1966,1767,1572,1385,1199,1017,831,648,466,284,114,-64,-239,-414,-594,-766,-936,-1108, -1274,-1442,-1614,-1782,-1945,-2109,-2270,-2436,-2606,-2772,-2941,-3112,-3281,-3456,-3630,-3811,-3993,-4174,-4355,-4541, -4737,-4934,-5130,-5328,-5526,-5724,-5932,-6139,-6350,-6560,-6766,-6970,-7179,-7387,-7593,-7796,-7991,-8180,-8366,-8541, -8720,-8884,-9038,-9172,-9296,-9411,-9507,-9589,-9650,-9682,-9687,-9670,-9621,-9551,-9439,-9283,-9087,-8842,-8555,-8214, -7825,-7377,-6871,-6311,-5702,-5046,-4340,-3592,-2814,-2008,-1189,-364,460,1262,2045,2787,3483,4126,4712,5239, 5701,6095,6424,6694,6904,7054,7145,7182,7172,7117,7027,6906,6750,6569,6363,6137,5903,5655,5399,5130, 4852,4575,4291,4009,3731,3449,3162,2881,2599,2322,2052,1780,1513,1243,977,719,465,212,-34,-284, -527,-769,-1007,-1235,-1463,-1696,-1927,-2149,-2370,-2583,-2800,-3013,-3229,-3445,-3651,-3855,-4056,-4252,-4449,-4641, -4823,-4995,-5157,-5314,-5457,-5591,-5710,-5807,-5886,-5939,-5976,-5986,-5966,-5911,-5817,-5690,-5513,-5299,-5037,-4726, -4361,-3942,-3468,-2945,-2369,-1745,-1073,-360,380,1149,1936,2729,3523,4307,5065,5801,6498,7157,7769,8321, 8816,9248,9620,9935,10186,10374,10505,10585,10617,10611,10564,10480,10362,10214,10049,9861,9657,9444,9211,8970, 8720,8465,8209,7949,7681,7411,7138,6867,6603,6339,6073,5809,5544,5285,5035,4787,4541,4296,4054,3820, 3588,3364,3144,2929,2713,2499,2295,2097,1900,1710,1517,1326,1144,961,784,610,436,259,86,-83, -249,-419,-592,-761,-928,-1098,-1266,-1432,-1594,-1763,-1933,-2108,-2275,-2445,-2614,-2788,-2968,-3145,-3321,-3501, -3681,-3864,-4051,-4240,-4428,-4617,-4809,-5001,-5197,-5397,-5598,-5797,-5997,-6198,-6402,-6605,-6814,-7019,-7221,-7417, -7617,-7815,-8012,-8203,-8382,-8553,-8720,-8871,-9023,-9158,-9271,-9368,-9443,-9498,-9536,-9545,-9526,-9467,-9379,-9254, -9097,-8891,-8644,-8343,-7990,-7586,-7130,-6625,-6065,-5456,-4799,-4095,-3355,-2590,-1802,-1000,-186,619,1412,2172, 2903,3584,4217,4789,5303,5754,6148,6471,6736,6933,7072,7155,7187,7174,7119,7017,6877,6713,6529,6323, 6094,5852,5601,5334,5068,4798,4525,4248,3967,3685,3405,3129,2857,2585,2314,2039,1767,1500,1239,977, 715,456,192,-61,-311,-558,-803,-1049,-1293,-1530,-1766,-1989,-2219,-2446,-2669,-2891,-3108,-3315,-3524,-3729, -3932,-4135,-4327,-4510,-4695,-4864,-5033,-5196,-5348,-5485,-5604,-5715,-5805,-5886,-5942,-5972,-5972,-5947,-5888,-5793, -5661,-5481,-5254,-4978,-4651,-4273,-3845,-3355,-2816,-2223,-1584,-898,-177,572,1346,2133,2920,3702,4473,5222, 5938,6616,7247,7832,8361,8837,9251,9602,9891,10122,10296,10419,10496,10522,10505,10448,10357,10240,10097,9925, 9735,9522,9294,9058,8815,8564,8299,8030,7754,7481,7206,6932,6660,6387,6111,5842,5583,5326,5071,4822, 4572,4330,4091,3857,3632,3406,3180,2961,2746,2539,2333,2130,1926,1729,1529,1338,1149,964,777,588, 404,227,51,-123,-296,-471,-645,-820,-987,-1149,-1318,-1485,-1649,-1813,-1977,-2140,-2304,-2468,-2636,-2810, -2980,-3148,-3322,-3501,-3681,-3866,-4049,-4236,-4424,-4612,-4809,-5007,-5210,-5407,-5605,-5808,-6010,-6216,-6427,-6628, -6831,-7032,-7232,-7434,-7633,-7827,-8014,-8198,-8375,-8552,-8715,-8874,-9021,-9154,-9271,-9378,-9472,-9544,-9596,-9621, -9619,-9589,-9531,-9440,-9313,-9141,-8922,-8658,-8345,-7984,-7569,-7092,-6565,-5982,-5351,-4671,-3955,-3198,-2415,-1614, -801,14,817,1605,2359,3074,3745,4359,4916,5413,5847,6218,6524,6768,6959,7089,7168,7188,7166,7100, 6998,6865,6702,6512,6301,6068,5825,5575,5315,5042,4768,4485,4203,3919,3640,3360,3081,2800,2522,2253, 1984,1723,1456,1196,936,679,430,185,-60,-306,-554,-794,-1028,-1263,-1494,-1723,-1953,-2185,-2407,-2629, -2848,-3065,-3281,-3498,-3709,-3911,-4111,-4307,-4497,-4684,-4867,-5030,-5185,-5330,-5465,-5591,-5699,-5785,-5854,-5897, -5921,-5917,-5887,-5823,-5718,-5572,-5386,-5155,-4878,-4551,-4167,-3731,-3241,-2699,-2106,-1462,-774,-52,706,1486, 2277,3078,3871,4647,5399,6119,6802,7441,8025,8558,9028,9431,9778,10066,10294,10458,10566,10631,10646,10622, 10566,10476,10354,10200,10028,9838,9635,9417,9182,8935,8682,8425,8162,7894,7625,7351,7072,6798,6522,6255, 5984,5713,5448,5186,4929,4682,4437,4192,3950,3717,3485,3265,3045,2835,2622,2415,2214,2015,1820,1632, 1441,1254,1065,886,704,527,351,174,-6,-182,-354,-526,-698,-873,-1047,-1219,-1390,-1556,-1726,-1893, -2064,-2236,-2405,-2573,-2743,-2916,-3090,-3268,-3445,-3624,-3801,-3983,-4167,-4359,-4547,-4738,-4930,-5124,-5322,-5525, -5729,-5938,-6139,-6344,-6549,-6764,-6979,-7185,-7391,-7592,-7793,-7990,-8186,-8374,-8552,-8721,-8877,-9029,-9170,-9294, -9405,-9494,-9565,-9611,-9636,-9641,-9614,-9548,-9452,-9317,-9151,-8939,-8684,-8373,-8015,-7600,-7135,-6617,-6050,-5429, -4756,-4038,-3290,-2507,-1708,-895,-79,730,1520,2285,3005,3683,4307,4872,5375,5810,6187,6499,6746,6933, 7060,7130,7155,7131,7066,6963,6824,6657,6468,6263,6037,5795,5544,5281,5013,4741,4467,4192,3910,3625, 3341,3061,2789,2509,2234,1958,1684,1415,1149,888,628,365,107,-146,-394,-637,-880,-1120,-1359,-1595, -1820,-2045,-2267,-2487,-2710,-2929,-3139,-3352,-3558,-3758,-3965,-4162,-4362,-4550,-4732,-4907,-5080,-5242,-5395,-5532, -5658,-5766,-5859,-5935,-5990,-6016,-6016,-5981,-5916,-5818,-5678,-5494,-5263,-4980,-4647,-4264,-3830,-3343,-2806,-2210, -1570,-888,-171,578,1348,2132,2919,3704,4472,5220,5937,6616,7250,7831,8366,8845,9264,9617,9911,10141, 10316,10435,10505,10533,10513,10449,10358,10238,10095,9924,9729,9517,9294,9057,8820,8568,8309,8044,7771,7506, 7241,6973,6706,6435,6169,5903,5641,5386,5137,4883,4635,4391,4151,3919,3689,3460,3234,3010,2793,2584, 2378,2173,1972,1770,1575,1383,1195,1016,829,647,467,290,119,-55,-222,-393,-563,-733,-900,-1066, -1234,-1400,-1567,-1734,-1897,-2062,-2228,-2399,-2569,-2744,-2918,-3093,-3265,-3444,-3628,-3814,-4004,-4186,-4373,-4563, -4756,-4952,-5150,-5347,-5545,-5742,-5944,-6148,-6351,-6553,-6753,-6952,-7152,-7352,-7552,-7753,-7941,-8130,-8308,-8486, -8657,-8819,-8966,-9101,-9224,-9331,-9429,-9504,-9557,-9581,-9577,-9548,-9486,-9391,-9257,-9082,-8859,-8592,-8277,-7917, -7504,-7035,-6506,-5932,-5306,-4636,-3928,-3186,-2411,-1618,-814,-11,781,1558,2307,3017,3683,4298,4857,5354, 5787,6160,6469,6714,6901,7035,7116,7135,7113,7046,6943,6811,6647,6456,6241,6009,5767,5514,5255,4985, 4712,4432,4153,3872,3602,3323,3046,2770,2496,2224,1959,1693,1434,1170,906,649,396,142,-105,-354, -605,-849,-1090,-1324,-1557,-1795,-2023,-2255,-2480,-2702,-2920,-3132,-3349,-3561,-3765,-3964,-4157,-4346,-4532,-4713, -4884,-5046,-5193,-5334,-5463,-5582,-5683,-5762,-5823,-5862,-5877,-5864,-5827,-5750,-5635,-5483,-5280,-5035,-4748,-4400, -4003,-3547,-3043,-2486,-1880,-1227,-534,195,954,1728,2512,3300,4080,4838,5566,6265,6922,7538,8097,8604, 9050,9434,9764,10033,10249,10405,10506,10555,10567,10540,10477,10382,10258,10106,9930,9736,9531,9310,9072,8823, 8564,8302,8039,7769,7498,7223,6948,6670,6399,6132,5867,5600,5337,5081,4829,4585,4344,4108,3872,3641, 3414,3193,2981,2769,2560,2354,2148,1952,1756,1564,1372,1182,991,808,628,448,266,83,-97,-275, -447,-619,-791,-964,-1138,-1310,-1477,-1642,-1809,-1974,-2141,-2310,-2477,-2643,-2809,-2979,-3158,-3335,-3511,-3690, -3871,-4055,-4244,-4434,-4629,-4822,-5017,-5212,-5414,-5623,-5829,-6031,-6238,-6441,-6647,-6855,-7063,-7270,-7469,-7664, -7859,-8052,-8237,-8419,-8590,-8750,-8899,-9042,-9172,-9288,-9389,-9471,-9530,-9570,-9591,-9582,-9545,-9478,-9364,-9223, -9039,-8814,-8543,-8218,-7842,-7411,-6928,-6394,-5809,-5171,-4487,-3758,-2998,-2218,-1413,-606,204,1001,1772,2517, 3218,3871,4468,5009,5487,5902,6257,6546,6776,6945,7057,7122,7132,7104,7032,6924,6783,6613,6419,6213, 5985,5743,5488,5221,4952,4678,4401,4127,3842,3556,3274,2991,2712,2439,2163,1890,1618,1354,1094,834, 580,324,69,-181,-423,-665,-903,-1141,-1379,-1611,-1837,-2061,-2283,-2507,-2727,-2947,-3166,-3379,-3586,-3790, -3995,-4197,-4392,-4584,-4761,-4934,-5103,-5262,-5408,-5542,-5653,-5752,-5835,-5898,-5935,-5950,-5930,-5881,-5798,-5677, -5521,-5319,-5064,-4763,-4408,-4004,-3549,-3039,-2481,-1871,-1213,-520,207,967,1746,2535,3323,4102,4867,5606, 6308,6969,7582,8144,8650,9097,9483,9816,10074,10282,10428,10529,10576,10579,10540,10467,10360,10229,10075,9902, 9706,9490,9263,9029,8785,8537,8278,8013,7745,7473,7202,6938,6666,6396,6125,5856,5594,5335,5078,4825, 4572,4325,4084,3849,3618,3388,3162,2941,2725,2513,2312,2109,1909,1711,1516,1329,1145,962,781,601, 420,244,67,-106,-274,-448,-622,-794,-964,-1133,-1304,-1475,-1645,-1815,-1984,-2151,-2319,-2489,-2663,-2836, -3012,-3187,-3363,-3537,-3721,-3904,-4092,-4276,-4462,-4648,-4844,-5037,-5233,-5432,-5628,-5832,-6032,-6233,-6444,-6648, -6852,-7055,-7257,-7465,-7667,-7866,-8063,-8252,-8429,-8608,-8779,-8941,-9088,-9218,-9334,-9437,-9523,-9591,-9634,-9653, -9638,-9598,-9525,-9422,-9278,-9091,-8858,-8582,-8256,-7881,-7458,-6981,-6449,-5861,-5226,-4551,-3831,-3079,-2295,-1495, -689,119,917,1692,2443,3146,3810,4416,4964,5456,5881,6241,6534,6766,6943,7060,7126,7139,7104,7030, 6918,6780,6613,6418,6201,5973,5730,5477,5219,4949,4676,4402,4124,3846,3570,3298,3019,2738,2465,2189, 1918,1655,1387,1121,854,592,338,87,-165,-417,-669,-913,-1150,-1389,-1622,-1850,-2079,-2308,-2526,-2745, -2960,-3171,-3382,-3594,-3796,-3993,-4185,-4372,-4554,-4739,-4910,-5073,-5225,-5364,-5497,-5616,-5719,-5802,-5864,-5903, -5916,-5903,-5860,-5783,-5663,-5506,-5303,-5055,-4756,-4410,-3999,-3542,-3034,-2472,-1866,-1215,-521,204,956,1730, 2510,3295,4063,4817,5546,6242,6894,7505,8066,8573,9014,9402,9735,10006,10217,10377,10480,10532,10542,10511, 10448,10349,10221,10066,9888,9692,9483,9260,9026,8778,8515,8254,7992,7725,7458,7183,6914,6644,6374,6112, 5852,5589,5333,5077,4825,4582,4345,4105,3875,3642,3416,3195,2974,2765,2554,2341,2137,1934,1739,1546, 1351,1159,970,784,604,426,248,65,-111,-284,-456,-627,-795,-967,-1136,-1303,-1473,-1639,-1801,-1967, -2135,-2305,-2471,-2639,-2807,-2983,-3159,-3339,-3521,-3702,-3884,-4070,-4262,-4455,-4649,-4845,-5040,-5235,-5436,-5639, -5842,-6047,-6248,-6449,-6654,-6854,-7060,-7257,-7459,-7652,-7842,-8030,-8218,-8399,-8568,-8728,-8878,-9021,-9151,-9268, -9373,-9455,-9513,-9553,-9569,-9565,-9528,-9452,-9344,-9193,-9003,-8773,-8495,-8165,-7784,-7348,-6860,-6326,-5737,-5101, -4421,-3698,-2946,-2166,-1376,-579,224,1007,1770,2499,3189,3833,4424,4959,5432,5845,6199,6487,6715,6881, 6998,7055,7069,7041,6969,6860,6717,6545,6353,6139,5912,5669,5410,5142,4870,4597,4322,4044,3760,3481, 3197,2922,2645,2373,2103,1831,1562,1299,1039,784,530,275,19,-228,-476,-715,-957,-1197,-1436,-1672, -1906,-2131,-2357,-2580,-2804,-3023,-3240,-3454,-3661,-3866,-4069,-4268,-4458,-4641,-4813,-4980,-5140,-5292,-5429,-5553, -5660,-5751,-5820,-5875,-5905,-5909,-5880,-5818,-5726,-5595,-5426,-5213,-4949,-4635,-4272,-3859,-3389,-2869,-2296,-1679, -1013,-315,419,1173,1950,2728,3509,4278,5022,5745,6432,7071,7662,8202,8691,9115,9482,9789,10040,10227, 10364,10454,10498,10498,10454,10375,10271,10141,9982,9814,9618,9407,9179,8942,8700,8451,8191,7928,7655,7383, 7113,6841,6573,6304,6029,5764,5500,5243,4987,4737,4487,4243,4004,3774,3547,3324,3102,2882,2670,2467, 2260,2062,1864,1672,1476,1286,1103,919,735,551,372,191,17,-161,-335,-511,-686,-864,-1032,-1203, -1370,-1539,-1713,-1884,-2048,-2214,-2381,-2547,-2719,-2892,-3066,-3241,-3412,-3589,-3769,-3953,-4136,-4325,-4511,-4699, -4891,-5091,-5290,-5487,-5688,-5887,-6091,-6299,-6507,-6712,-6919,-7118,-7320,-7523,-7724,-7917,-8107,-8289,-8464,-8628, -8793,-8942,-9082,-9202,-9308,-9398,-9474,-9527,-9561,-9565,-9544,-9492,-9409,-9290,-9134,-8938,-8692,-8399,-8058,-7674, -7229,-6735,-6186,-5588,-4940,-4252,-3523,-2765,-1979,-1179,-375,429,1215,1977,2707,3389,4028,4608,5130,5595, 5996,6332,6608,6818,6977,7078,7126,7126,7085,7004,6888,6745,6573,6383,6168,5933,5690,5439,5178,4912, 4636,4360,4081,3797,3523,3246,2969,2686,2405,2133,1863,1594,1328,1062,799,543,283,33,-214,-461, -709,-951,-1186,-1416,-1650,-1875,-2103,-2328,-2550,-2764,-2975,-3190,-3404,-3614,-3820,-4015,-4212,-4401,-4586,-4766, -4938,-5100,-5253,-5387,-5513,-5631,-5726,-5800,-5853,-5880,-5880,-5852,-5793,-5700,-5561,-5381,-5158,-4892,-4576,-4204, -3780,-3306,-2775,-2201,-1577,-913,-209,527,1284,2055,2837,3615,4384,5131,5843,6527,7170,7766,8305,8791, 9217,9580,9884,10132,10326,10461,10542,10579,10569,10524,10445,10335,10195,10029,9843,9645,9430,9208,8967,8720, 8464,8201,7937,7674,7408,7137,6864,6594,6328,6065,5802,5540,5280,5024,4773,4524,4283,4047,3807,3572, 3346,3122,2907,2691,2476,2269,2062,1860,1668,1471,1282,1088,900,718,538,361,187,8,-166,-344, -518,-687,-856,-1028,-1202,-1371,-1541,-1707,-1877,-2045,-2216,-2390,-2562,-2736,-2907,-3083,-3264,-3445,-3628,-3813, -3993,-4179,-4367,-4565,-4758,-4954,-5144,-5343,-5541,-5742,-5944,-6148,-6352,-6554,-6756,-6962,-7167,-7369,-7570,-7766, -7960,-8150,-8336,-8517,-8692,-8850,-9003,-9142,-9276,-9391,-9490,-9567,-9621,-9651,-9661,-9645,-9598,-9513,-9391,-9233, -9032,-8787,-8494,-8154,-7758,-7313,-6813,-6265,-5672,-5025,-4335,-3605,-2849,-2070,-1274,-471,325,1114,1873,2602, 3287,3925,4507,5034,5498,5901,6244,6524,6743,6904,7004,7053,7056,7014,6936,6817,6670,6490,6294,6079, 5850,5603,5349,5084,4813,4543,4264,3992,3715,3436,3157,2881,2608,2339,2066,1798,1531,1266,1006,750, 496,239,-17,-270,-517,-762,-1004,-1240,-1479,-1717,-1947,-2175,-2396,-2619,-2840,-3055,-3269,-3476,-3683,-3882, -4080,-4275,-4464,-4642,-4812,-4974,-5132,-5279,-5417,-5537,-5644,-5734,-5806,-5859,-5887,-5892,-5859,-5792,-5697,-5565, -5386,-5167,-4898,-4579,-4205,-3780,-3305,-2778,-2197,-1573,-902,-198,535,1293,2067,2844,3617,4379,5123,5835, 6512,7151,7736,8267,8749,9169,9532,9839,10082,10269,10405,10493,10535,10536,10492,10416,10306,10173,10019,9839, 9642,9425,9200,8960,8710,8460,8203,7934,7663,7390,7123,6851,6584,6315,6049,5783,5521,5268,5015,4770, 4523,4279,4044,3814,3587,3367,3145,2930,2714,2508,2302,2103,1902,1703,1507,1313,1126,938,755,574, 390,209,32,-143,-318,-494,-670,-842,-1013,-1181,-1347,-1517,-1685,-1853,-2019,-2185,-2350,-2521,-2692,-2865, -3038,-3214,-3391,-3570,-3750,-3937,-4124,-4314,-4505,-4695,-4893,-5094,-5293,-5496,-5693,-5895,-6099,-6305,-6513,-6718, -6923,-7123,-7322,-7521,-7717,-7911,-8097,-8274,-8447,-8612,-8773,-8920,-9057,-9176,-9286,-9376,-9450,-9502,-9537,-9540, -9517,-9464,-9383,-9266,-9109,-8910,-8662,-8367,-8026,-7630,-7189,-6690,-6139,-5537,-4892,-4204,-3479,-2724,-1947,-1150, -353,442,1219,1973,2688,3369,3993,4567,5083,5541,5936,6272,6546,6759,6916,7019,7071,7077,7035,6951, 6840,6697,6525,6332,6116,5884,5642,5387,5124,4858,4584,4303,4021,3742,3464,3184,2908,2626,2351,2078, 1808,1543,1281,1016,757,499,245,-4,-249,-494,-739,-982,-1220,-1451,-1684,-1912,-2145,-2368,-2588,-2808, -3023,-3236,-3449,-3659,-3867,-4066,-4260,-4447,-4632,-4807,-4976,-5130,-5273,-5404,-5523,-5627,-5713,-5777,-5820,-5834, -5826,-5787,-5715,-5606,-5456,-5263,-5025,-4744,-4415,-4035,-3599,-3112,-2578,-1992,-1359,-688,20,755,1513,2281, 3054,3819,4574,5308,6008,6669,7290,7866,8386,8850,9251,9593,9875,10103,10277,10396,10465,10489,10474,10420, 10338,10224,10082,9917,9733,9530,9320,9095,8862,8614,8358,8098,7836,7572,7303,7034,6762,6490,6221,5955, 5697,5434,5172,4919,4666,4419,4178,3939,3706,3474,3246,3027,2811,2598,2389,2183,1982,1781,1588,1399, 1209,1018,833,649,472,293,110,-64,-244,-417,-594,-767,-941,-1112,-1286,-1458,-1628,-1797,-1966,-2136, -2307,-2477,-2654,-2825,-2995,-3169,-3345,-3528,-3709,-3889,-4072,-4258,-4445,-4635,-4829,-5024,-5219,-5415,-5613,-5815, -6017,-6223,-6425,-6628,-6831,-7038,-7243,-7448,-7649,-7841,-8032,-8218,-8406,-8583,-8749,-8907,-9049,-9183,-9301,-9409, -9502,-9566,-9606,-9628,-9629,-9596,-9534,-9437,-9304,-9130,-8919,-8662,-8358,-8003,-7599,-7137,-6628,-6069,-5460,-4810, -4114,-3382,-2620,-1839,-1048,-251,544,1316,2065,2779,3448,4069,4631,5133,5575,5956,6277,6541,6744,6886, 6971,7008,7000,6952,6862,6741,6587,6408,6209,5992,5764,5523,5267,5004,4738,4469,4194,3920,3643,3367, 3087,2807,2536,2267,1997,1724,1453,1188,928,668,414,155,-96,-347,-593,-835,-1071,-1313,-1544,-1781, -2007,-2231,-2450,-2668,-2885,-3099,-3312,-3518,-3718,-3916,-4115,-4307,-4494,-4674,-4843,-5003,-5156,-5301,-5434,-5555, -5657,-5739,-5803,-5845,-5865,-5855,-5815,-5738,-5623,-5472,-5278,-5037,-4749,-4407,-4019,-3576,-3081,-2535,-1945,-1305, -624,90,830,1590,2365,3137,3904,4659,5388,6090,6754,7375,7944,8464,8925,9330,9678,9964,10191,10360, 10477,10550,10576,10561,10507,10421,10300,10155,9990,9804,9601,9383,9151,8908,8664,8407,8151,7883,7615,7343, 7077,6809,6545,6275,6010,5746,5489,5235,4987,4740,4494,4250,4013,3777,3554,3328,3106,2887,2674,2462, 2253,2053,1853,1654,1456,1266,1074,892,708,523,341,165,-13,-187,-360,-533,-705,-881,-1050,-1220, -1389,-1556,-1726,-1893,-2065,-2233,-2401,-2571,-2748,-2922,-3099,-3279,-3460,-3640,-3822,-4013,-4202,-4392,-4583,-4777, -4971,-5174,-5374,-5574,-5776,-5975,-6178,-6384,-6587,-6793,-6997,-7195,-7391,-7590,-7787,-7982,-8166,-8347,-8522,-8684, -8842,-8995,-9130,-9253,-9358,-9448,-9520,-9572,-9598,-9603,-9569,-9506,-9414,-9287,-9121,-8907,-8648,-8341,-7982,-7577, -7116,-6604,-6044,-5430,-4771,-4075,-3343,-2580,-1799,-1004,-209,579,1353,2101,2811,3478,4097,4661,5164,5611, 5994,6318,6577,6782,6929,7021,7060,7052,7003,6907,6784,6634,6456,6254,6032,5794,5547,5291,5024,4759, 4483,4203,3923,3641,3363,3090,2812,2537,2264,1996,1729,1464,1203,942,680,424,172,-75,-322,-569, -815,-1058,-1298,-1532,-1762,-1991,-2221,-2448,-2676,-2892,-3103,-3316,-3528,-3735,-3939,-4137,-4328,-4513,-4689,-4866, -5027,-5182,-5321,-5448,-5564,-5663,-5747,-5809,-5850,-5864,-5852,-5810,-5737,-5626,-5477,-5283,-5044,-4755,-4420,-4036, -3599,-3110,-2567,-1977,-1342,-664,46,786,1546,2315,3092,3861,4612,5343,6041,6699,7317,7884,8401,8861, 9260,9600,9883,10108,10278,10397,10466,10493,10471,10421,10339,10227,10091,9925,9739,9541,9322,9098,8860,8612, 8355,8092,7827,7559,7291,7020,6748,6477,6207,5940,5678,5420,5161,4905,4657,4414,4174,3937,3702,3478, 3253,3032,2819,2610,2403,2198,1993,1797,1601,1409,1221,1030,842,656,477,295,117,-62,-238,-417, -595,-766,-939,-1112,-1287,-1461,-1627,-1796,-1962,-2129,-2302,-2472,-2646,-2813,-2984,-3158,-3335,-3515,-3696,-3878, -4059,-4244,-4434,-4625,-4821,-5016,-5214,-5415,-5614,-5816,-6021,-6227,-6432,-6636,-6841,-7047,-7252,-7451,-7650,-7844, -8030,-8216,-8396,-8573,-8735,-8889,-9026,-9157,-9275,-9378,-9463,-9528,-9571,-9587,-9584,-9554,-9487,-9389,-9253,-9079, -8863,-8604,-8297,-7942,-7529,-7069,-6554,-5990,-5378,-4721,-4021,-3288,-2519,-1740,-948,-152,633,1405,2148,2853, 3519,4130,4685,5182,5617,5991,6304,6558,6754,6895,6978,7014,7002,6949,6861,6740,6587,6409,6207,5993, 5761,5517,5266,5001,4729,4460,4186,3909,3633,3349,3069,2791,2515,2242,1972,1706,1433,1167,906,650, 393,140,-108,-357,-602,-842,-1081,-1312,-1547,-1781,-2005,-2229,-2448,-2669,-2884,-3100,-3311,-3523,-3723,-3921, -4119,-4312,-4501,-4682,-4849,-5016,-5166,-5310,-5438,-5554,-5652,-5728,-5784,-5823,-5830,-5816,-5768,-5682,-5560,-5397, -5194,-4947,-4648,-4298,-3900,-3449,-2948,-2399,-1798,-1157,-477,239,981,1743,2510,3282,4047,4798,5518,6211, 6868,7477,8037,8542,8993,9384,9717,9994,10206,10363,10469,10527,10544,10520,10459,10364,10239,10094,9922,9737, 9532,9313,9079,8840,8591,8338,8080,7813,7550,7281,7012,6745,6479,6214,5950,5683,5425,5169,4919,4670, 4424,4181,3946,3711,3482,3258,3037,2818,2606,2393,2191,1988,1790,1596,1402,1211,1025,842,660,479, 299,120,-52,-228,-400,-573,-745,-919,-1092,-1262,-1428,-1602,-1771,-1938,-2111,-2279,-2451,-2622,-2795,-2972, -3154,-3328,-3508,-3689,-3875,-4060,-4247,-4438,-4630,-4820,-5012,-5211,-5412,-5613,-5810,-6012,-6214,-6417,-6622,-6823, -7029,-7231,-7430,-7627,-7825,-8018,-8205,-8384,-8557,-8720,-8879,-9021,-9158,-9275,-9376,-9460,-9524,-9570,-9588,-9580, -9542,-9472,-9364,-9223,-9046,-8820,-8552,-8233,-7865,-7449,-6979,-6459,-5883,-5265,-4598,-3895,-3156,-2395,-1609,-817, -20,764,1531,2272,2978,3631,4242,4790,5283,5714,6083,6391,6638,6820,6953,7030,7059,7041,6979,6880, 6748,6588,6408,6201,5980,5741,5491,5232,4971,4705,4430,4155,3877,3601,3322,3048,2775,2500,2226,1956, 1690,1424,1162,898,641,382,127,-123,-369,-615,-860,-1105,-1341,-1576,-1807,-2033,-2262,-2485,-2704,-2924, -3136,-3345,-3555,-3756,-3957,-4151,-4339,-4523,-4699,-4868,-5030,-5182,-5321,-5447,-5564,-5659,-5742,-5799,-5836,-5850, -5831,-5785,-5703,-5586,-5426,-5224,-4970,-4674,-4327,-3926,-3473,-2972,-2415,-1815,-1168,-485,235,982,1742,2516, 3287,4053,4805,5526,6214,6865,7475,8028,8534,8985,9376,9707,9978,10195,10354,10465,10523,10539,10513,10455, 10363,10242,10098,9927,9736,9528,9307,9077,8833,8583,8320,8059,7791,7523,7255,6984,6710,6441,6174,5910, 5647,5390,5133,4883,4636,4393,4155,3921,3691,3462,3235,3021,2802,2591,2385,2178,1974,1774,1575,1386, 1196,1005,818,631,450,268,91,-87,-262,-440,-614,-784,-958,-1127,-1299,-1472,-1638,-1804,-1972,-2138, -2307,-2476,-2651,-2819,-2992,-3169,-3347,-3528,-3712,-3896,-4081,-4268,-4458,-4651,-4847,-5044,-5243,-5445,-5647,-5850, -6052,-6258,-6463,-6666,-6869,-7071,-7275,-7478,-7674,-7865,-8055,-8236,-8416,-8587,-8748,-8904,-9044,-9172,-9292,-9395, -9480,-9540,-9586,-9603,-9598,-9561,-9498,-9397,-9259,-9077,-8854,-8588,-8273,-7906,-7491,-7019,-6497,-5923,-5302,-4637, -3930,-3190,-2425,-1637,-840,-48,738,1502,2243,2943,3599,4205,4754,5243,5675,6040,6345,6594,6783,6915, 6993,7021,7005,6947,6855,6727,6568,6384,6179,5956,5720,5472,5214,4947,4677,4401,4125,3844,3566,3285, 3005,2728,2456,2183,1915,1648,1381,1119,859,601,350,99,-152,-397,-641,-880,-1119,-1353,-1584,-1818, -2047,-2271,-2492,-2712,-2930,-3147,-3360,-3568,-3773,-3973,-4169,-4357,-4544,-4725,-4891,-5050,-5202,-5338,-5464,-5575, -5667,-5743,-5794,-5825,-5833,-5812,-5754,-5667,-5543,-5376,-5171,-4917,-4614,-4264,-3857,-3403,-2897,-2341,-1742,-1094, -409,311,1054,1820,2593,3369,4129,4875,5599,6284,6934,7538,8092,8589,9027,9414,9737,10005,10213,10363, 10466,10518,10528,10500,10438,10340,10216,10070,9903,9713,9508,9290,9059,8817,8566,8315,8054,7791,7523,7251, 6982,6712,6443,6179,5911,5647,5385,5130,4878,4629,4382,4143,3906,3675,3446,3225,3005,2789,2578,2369, 2168,1966,1772,1576,1385,1198,1007,824,643,461,280,100,-75,-250,-424,-601,-775,-948,-1123,-1294, -1465,-1636,-1807,-1977,-2147,-2315,-2487,-2659,-2833,-3006,-3183,-3365,-3540,-3722,-3905,-4089,-4278,-4468,-4655,-4851, -5044,-5239,-5439,-5642,-5843,-6047,-6248,-6456,-6661,-6869,-7073,-7275,-7477,-7676,-7869,-8061,-8248,-8428,-8598,-8758, -8912,-9055,-9186,-9298,-9394,-9472,-9534,-9570,-9587,-9575,-9531,-9451,-9343,-9195,-9013,-8782,-8506,-8183,-7810,-7388, -6914,-6387,-5809,-5186,-4517,-3809,-3066,-2299,-1513,-718,74,860,1622,2355,3052,3701,4297,4839,5321,5740, 6100,6395,6628,6807,6927,6995,7018,6994,6930,6826,6691,6532,6348,6143,5922,5684,5435,5177,4915,4647, 4377,4099,3824,3545,3268,2990,2714,2437,2163,1893,1622,1357,1094,829,570,312,58,-193,-440,-684, -927,-1169,-1407,-1637,-1867,-2092,-2317,-2539,-2756,-2974,-3187,-3394,-3600,-3804,-4005,-4198,-4389,-4571,-4748,-4918, -5079,-5227,-5372,-5495,-5607,-5700,-5779,-5834,-5865,-5872,-5848,-5792,-5702,-5570,-5403,-5187,-4927,-4617,-4257,-3846, -3380,-2865,-2302,-1691,-1038,-348,373,1118,1883,2656,3428,4187,4931,5647,6330,6970,7571,8117,8610,9047, 9425,9743,10002,10202,10352,10450,10499,10500,10467,10396,10291,10164,10009,9835,9637,9426,9202,8966,8724,8470, 8211,7948,7680,7414,7146,6877,6610,6339,6072,5813,5552,5296,5041,4789,4542,4300,4060,3826,3596,3367, 3141,2922,2707,2494,2283,2080,1876,1678,1483,1291,1101,914,727,545,366,187,12,-162,-339,-512, -685,-855,-1022,-1194,-1362,-1532,-1700,-1867,-2035,-2203,-2372,-2543,-2716,-2890,-3064,-3238,-3415,-3600,-3780,-3965, -4153,-4339,-4529,-4720,-4912,-5111,-5306,-5505,-5703,-5901,-6105,-6305,-6508,-6711,-6911,-7113,-7312,-7508,-7707,-7898, -8085,-8268,-8447,-8617,-8780,-8930,-9074,-9201,-9314,-9413,-9494,-9554,-9593,-9605,-9593,-9550,-9474,-9367,-9218,-9024, -8789,-8510,-8179,-7800,-7372,-6889,-6355,-5766,-5139,-4461,-3749,-3001,-2229,-1440,-644,149,932,1694,2426,3119, 3768,4362,4902,5382,5802,6157,6454,6689,6863,6986,7052,7070,7045,6975,6873,6734,6571,6383,6169,5943, 5703,5452,5193,4925,4652,4377,4102,3824,3548,3273,2996,2718,2445,2178,1909,1641,1379,1116,860,599, 348,94,-152,-403,-645,-890,-1129,-1366,-1600,-1832,-2061,-2287,-2512,-2729,-2946,-3161,-3376,-3582,-3785,-3984, -4179,-4365,-4546,-4720,-4890,-5045,-5193,-5330,-5453,-5562,-5653,-5726,-5778,-5807,-5812,-5787,-5735,-5643,-5515,-5346, -5136,-4879,-4570,-4216,-3809,-3347,-2832,-2269,-1662,-1009,-317,405,1149,1916,2691,3464,4226,4969,5687,6371, 7013,7609,8158,8647,9082,9459,9778,10037,10241,10387,10488,10536,10547,10516,10450,10351,10225,10071,9900,9710, 9503,9282,9045,8804,8551,8292,8029,7761,7491,7217,6945,6674,6405,6134,5869,5607,5349,5089,4837,4592, 4350,4110,3876,3645,3420,3199,2981,2767,2559,2350,2145,1946,1747,1555,1361,1169,982,796,610,429, 246,64,-113,-288,-467,-641,-818,-989,-1164,-1335,-1504,-1675,-1843,-2012,-2183,-2349,-2519,-2690,-2865,-3037, -3213,-3390,-3571,-3753,-3933,-4124,-4311,-4504,-4695,-4889,-5086,-5286,-5486,-5690,-5893,-6098,-6304,-6509,-6715,-6922, -7126,-7328,-7527,-7725,-7918,-8108,-8290,-8468,-8636,-8792,-8942,-9081,-9208,-9320,-9413,-9494,-9547,-9584,-9595,-9582, -9537,-9461,-9346,-9201,-9015,-8781,-8503,-8172,-7796,-7365,-6885,-6353,-5771,-5140,-4464,-3749,-3005,-2232,-1442,-648, 144,926,1685,2415,3105,3743,4334,4868,5339,5751,6103,6394,6624,6793,6909,6975,6989,6964,6897,6794, 6657,6494,6308,6099,5875,5637,5388,5129,4862,4590,4313,4038,3757,3477,3198,2920,2643,2367,2093,1823, 1552,1286,1028,768,510,255,6,-242,-486,-731,-969,-1207,-1441,-1673,-1903,-2125,-2346,-2569,-2789,-3003, -3214,-3428,-3636,-3838,-4036,-4234,-4425,-4605,-4783,-4949,-5110,-5258,-5392,-5517,-5624,-5712,-5783,-5833,-5860,-5855, -5826,-5761,-5663,-5525,-5347,-5127,-4859,-4542,-4176,-3756,-3289,-2769,-2197,-1582,-925,-234,493,1242,2008,2780, 3552,4314,5051,5767,6446,7089,7676,8215,8704,9132,9501,9808,10061,10255,10393,10482,10525,10524,10485,10411, 10304,10173,10017,9841,9647,9435,9210,8980,8735,8489,8230,7968,7704,7439,7172,6903,6636,6368,6102,5836, 5580,5321,5067,4814,4565,4322,4083,3847,3615,3388,3165,2945,2731,2520,2314,2109,1910,1714,1520,1331, 1143,957,774,592,413,236,59,-113,-288,-464,-637,-808,-981,-1152,-1321,-1493,-1663,-1833,-2001,-2170, -2342,-2514,-2688,-2860,-3034,-3210,-3391,-3572,-3756,-3939,-4123,-4309,-4498,-4688,-4882,-5076,-5273,-5471,-5667,-5869, -6071,-6275,-6479,-6682,-6884,-7087,-7286,-7489,-7684,-7881,-8071,-8252,-8429,-8603,-8760,-8914,-9051,-9177,-9288,-9381, -9457,-9513,-9542,-9548,-9526,-9474,-9391,-9271,-9112,-8914,-8670,-8379,-8044,-7655,-7217,-6725,-6181,-5593,-4956,-4276, -3555,-2807,-2033,-1246,-450,340,1118,1879,2601,3288,3921,4505,5030,5496,5901,6246,6525,6746,6908,7016, 7072,7080,7039,6965,6853,6711,6540,6349,6136,5909,5665,5415,5156,4892,4621,4345,4071,3796,3518,3244, 2968,2692,2419,2146,1878,1611,1345,1080,820,560,305,50,-199,-449,-697,-942,-1179,-1416,-1648,-1881, -2110,-2334,-2554,-2773,-2989,-3201,-3410,-3616,-3818,-4017,-4208,-4392,-4576,-4750,-4917,-5075,-5220,-5359,-5481,-5590, -5681,-5754,-5803,-5831,-5834,-5805,-5741,-5645,-5509,-5331,-5109,-4840,-4521,-4154,-3730,-3256,-2731,-2155,-1535,-873, -174,553,1305,2073,2844,3615,4373,5113,5822,6495,7130,7719,8252,8734,9155,9520,9827,10074,10266,10404, 10489,10530,10527,10487,10411,10302,10167,10008,9825,9629,9415,9187,8947,8698,8441,8180,7914,7645,7375,7103, 6832,6561,6292,6030,5765,5502,5244,4992,4744,4496,4256,4018,3786,3554,3329,3107,2890,2675,2463,2256, 2050,1847,1648,1453,1259,1068,881,694,513,329,149,-27,-205,-379,-553,-727,-897,-1070,-1242,-1410, -1577,-1743,-1912,-2079,-2247,-2415,-2586,-2754,-2927,-3103,-3280,-3458,-3637,-3821,-4008,-4194,-4382,-4575,-4769,-4963, -5159,-5358,-5558,-5760,-5963,-6166,-6369,-6571,-6776,-6981,-7181,-7382,-7578,-7771,-7961,-8148,-8330,-8504,-8672,-8831, -8979,-9115,-9241,-9354,-9446,-9522,-9576,-9611,-9619,-9601,-9553,-9471,-9355,-9197,-8999,-8759,-8468,-8133,-7741,-7299, -6807,-6262,-5667,-5026,-4338,-3617,-2864,-2089,-1299,-501,292,1070,1826,2553,3235,3869,4449,4975,5441,5842, 6187,6468,6692,6857,6963,7022,7030,6996,6921,6810,6667,6496,6302,6092,5861,5619,5361,5101,4832,4559, 4281,4005,3725,3446,3167,2889,2614,2341,2068,1801,1536,1273,1012,753,500,247,-3,-252,-497,-739, -979,-1219,-1453,-1685,-1916,-2143,-2369,-2591,-2813,-3031,-3243,-3454,-3664,-3866,-4066,-4259,-4450,-4630,-4804,-4969, -5124,-5271,-5406,-5522,-5626,-5715,-5782,-5826,-5849,-5847,-5813,-5747,-5645,-5507,-5329,-5103,-4833,-4514,-4144,-3722, -3248,-2730,-2155,-1535,-873,-175,553,1305,2076,2849,3620,4383,5120,5833,6507,7140,7727,8260,8739,9162, 9524,9828,10071,10259,10392,10478,10516,10515,10472,10399,10292,10161,10004,9829,9633,9425,9202,8965,8722,8471, 8212,7950,7682,7414,7141,6873,6601,6332,6064,5799,5536,5277,5022,4771,4524,4278,4040,3808,3577,3352, 3133,2917,2701,2492,2288,2087,1890,1694,1499,1309,1122,936,755,570,391,209,34,-141,-318,-493, -670,-846,-1018,-1192,-1365,-1533,-1702,-1872,-2042,-2213,-2379,-2549,-2721,-2894,-3069,-3244,-3422,-3599,-3781,-3964, -4151,-4337,-4524,-4717,-4911,-5106,-5305,-5501,-5706,-5908,-6111,-6318,-6524,-6727,-6933,-7137,-7339,-7540,-7737,-7930, -8119,-8301,-8475,-8646,-8804,-8951,-9088,-9210,-9317,-9406,-9477,-9530,-9560,-9563,-9541,-9487,-9399,-9281,-9122,-8924, -8680,-8392,-8054,-7665,-7226,-6737,-6192,-5599,-4961,-4281,-3560,-2810,-2033,-1249,-449,338,1119,1873,2594,3278, 3908,4484,5005,5468,5868,6203,6479,6699,6856,6961,7015,7019,6983,6904,6792,6653,6484,6293,6080,5852, 5614,5362,5102,4838,4566,4292,4012,3737,3458,3179,2900,2626,2349,2075,1803,1534,1269,1005,742,485, 228,-21,-273,-518,-763,-1002,-1241,-1474,-1705,-1931,-2159,-2380,-2599,-2818,-3032,-3243,-3450,-3656,-3858,-4056, -4251,-4434,-4618,-4793,-4958,-5116,-5261,-5397,-5517,-5621,-5709,-5779,-5823,-5843,-5836,-5798,-5727,-5620,-5473,-5286, -5054,-4772,-4443,-4062,-3633,-3148,-2617,-2038,-1408,-741,-41,689,1441,2208,2982,3745,4501,5234,5937,6603, 7232,7809,8335,8806,9219,9575,9869,10106,10287,10412,10490,10523,10509,10461,10380,10264,10126,9962,9777,9575, 9359,9132,8895,8647,8393,8133,7869,7605,7338,7072,6803,6535,6267,6002,5743,5486,5227,4975,4723,4478, 4235,3998,3764,3533,3305,3080,2863,2649,2437,2229,2023,1822,1625,1429,1238,1052,864,679,499,321, 143,-34,-208,-382,-556,-728,-901,-1071,-1243,-1414,-1582,-1751,-1919,-2087,-2257,-2428,-2601,-2779,-2950,-3125, -3303,-3484,-3667,-3851,-4035,-4226,-4413,-4603,-4798,-4993,-5188,-5385,-5582,-5783,-5983,-6185,-6387,-6591,-6793,-6994, -7196,-7396,-7595,-7789,-7978,-8166,-8346,-8524,-8692,-8849,-8999,-9133,-9255,-9364,-9455,-9526,-9579,-9605,-9605,-9580, -9521,-9429,-9300,-9134,-8925,-8668,-8367,-8017,-7615,-7162,-6656,-6099,-5497,-4847,-4155,-3430,-2671,-1895,-1102,-309, 477,1253,2001,2714,3388,4009,4581,5092,5543,5933,6264,6530,6739,6889,6986,7030,7026,6979,6895,6775, 6625,6449,6250,6032,5801,5557,5301,5039,4770,4498,4225,3949,3674,3397,3120,2845,2574,2304,2035,1767, 1501,1235,976,717,462,210,-43,-291,-540,-785,-1025,-1264,-1502,-1736,-1966,-2195,-2419,-2640,-2858,-3074, -3288,-3498,-3700,-3900,-4098,-4288,-4473,-4651,-4824,-4985,-5137,-5280,-5410,-5528,-5630,-5714,-5779,-5824,-5844,-5837, -5798,-5729,-5623,-5476,-5289,-5058,-4776,-4446,-4064,-3630,-3142,-2607,-2020,-1390,-714,-7,731,1488,2262,3035, 3808,4563,5297,6000,6670,7294,7867,8391,8857,9264,9614,9907,10139,10319,10441,10517,10547,10536,10488,10408, 10296,10154,9991,9809,9609,9393,9162,8921,8671,8416,8154,7885,7616,7345,7070,6799,6529,6261,5993,5727, 5465,5210,4955,4709,4466,4223,3987,3757,3530,3306,3086,2870,2661,2450,2246,2044,1843,1651,1454,1261, 1073,887,701,517,336,156,-22,-199,-372,-547,-721,-893,-1065,-1234,-1404,-1573,-1739,-1906,-2072,-2240, -2409,-2576,-2744,-2919,-3091,-3266,-3442,-3623,-3805,-3989,-4176,-4366,-4557,-4750,-4943,-5141,-5339,-5541,-5743,-5949, -6152,-6353,-6559,-6765,-6968,-7171,-7369,-7566,-7759,-7948,-8135,-8314,-8485,-8649,-8802,-8947,-9083,-9201,-9305,-9394, -9464,-9512,-9539,-9540,-9516,-9459,-9366,-9241,-9080,-8873,-8624,-8320,-7972,-7572,-7119,-6617,-6063,-5454,-4802,-4106, -3375,-2617,-1834,-1041,-242,550,1327,2079,2793,3465,4088,4658,5167,5619,6009,6335,6600,6803,6955,7051, 7096,7094,7050,6965,6846,6697,6523,6326,6110,5875,5629,5373,5109,4837,4563,4285,4004,3724,3440,3159, 2884,2602,2329,2056,1785,1518,1252,992,733,477,220,-27,-273,-518,-760,-1003,-1239,-1473,-1705,-1933, -2158,-2384,-2608,-2827,-3044,-3256,-3469,-3677,-3881,-4083,-4277,-4466,-4646,-4821,-4990,-5146,-5289,-5423,-5541,-5644, -5726,-5794,-5837,-5853,-5842,-5800,-5731,-5622,-5475,-5285,-5053,-4773,-4442,-4061,-3633,-3152,-2616,-2037,-1411,-745, -41,691,1443,2213,2985,3754,4509,5242,5949,6617,7242,7816,8343,8813,9221,9570,9860,10096,10271,10395, 10471,10497,10483,10433,10350,10236,10100,9934,9753,9551,9342,9113,8878,8635,8381,8122,7861,7592,7328,7058, 6788,6520,6250,5982,5718,5458,5199,4943,4690,4444,4202,3961,3728,3496,3267,3047,2827,2617,2409,2202, 2000,1799,1605,1415,1224,1039,853,669,489,309,132,-44,-220,-396,-572,-744,-919,-1089,-1265,-1435, -1608,-1777,-1948,-2118,-2287,-2457,-2634,-2805,-2980,-3156,-3334,-3510,-3692,-3873,-4061,-4244,-4431,-4624,-4813,-5006, -5201,-5399,-5596,-5797,-5999,-6205,-6407,-6610,-6815,-7017,-7222,-7425,-7623,-7822,-8014,-8199,-8383,-8558,-8726,-8884, -9028,-9163,-9281,-9387,-9475,-9542,-9590,-9612,-9606,-9578,-9518,-9424,-9292,-9122,-8911,-8654,-8352,-8001,-7603,-7147, -6643,-6087,-5487,-4840,-4150,-3424,-2672,-1889,-1102,-309,477,1249,1998,2712,3379,3999,4568,5076,5524,5907, 6231,6494,6698,6846,6936,6977,6971,6922,6834,6717,6568,6390,6195,5980,5751,5506,5255,4996,4727,4454, 4182,3911,3635,3358,3082,2805,2531,2257,1986,1719,1451,1184,922,662,407,148,-102,-351,-598,-844, -1083,-1318,-1553,-1784,-2014,-2237,-2458,-2675,-2890,-3102,-3311,-3521,-3725,-3920,-4113,-4303,-4488,-4666,-4837,-4996, -5150,-5291,-5420,-5538,-5637,-5721,-5779,-5819,-5835,-5820,-5775,-5697,-5580,-5424,-5226,-4981,-4689,-4348,-3953,-3508, -3010,-2463,-1868,-1228,-551,161,898,1657,2425,3197,3961,4711,5437,6131,6791,7406,7971,8485,8941,9341, 9683,9965,10191,10360,10475,10543,10564,10548,10494,10403,10284,10139,9971,9783,9579,9363,9129,8885,8636,8380, 8122,7854,7587,7316,7048,6777,6512,6247,5985,5722,5464,5211,4960,4713,4470,4230,3996,3763,3534,3309, 3090,2872,2656,2446,2242,2037,1837,1639,1445,1253,1062,876,694,511,327,151,-26,-200,-374,-546, -716,-891,-1062,-1232,-1398,-1567,-1737,-1904,-2072,-2243,-2410,-2581,-2753,-2928,-3107,-3286,-3467,-3648,-3833,-4020, -4208,-4401,-4594,-4787,-4983,-5182,-5381,-5581,-5783,-5986,-6188,-6392,-6594,-6798,-6999,-7200,-7397,-7590,-7785,-7977, -8160,-8340,-8510,-8674,-8828,-8976,-9106,-9229,-9331,-9418,-9485,-9530,-9554,-9550,-9516,-9454,-9355,-9219,-9044,-8827, -8563,-8251,-7884,-7470,-7005,-6487,-5919,-5302,-4639,-3939,-3198,-2437,-1656,-863,-67,719,1488,2226,2932,3591, 4199,4752,5251,5685,6062,6375,6627,6824,6956,7043,7075,7064,7006,6913,6786,6627,6444,6243,6020,5785, 5533,5273,5009,4739,4464,4186,3905,3627,3347,3073,2797,2525,2252,1982,1713,1449,1188,928,670,416, 163,-87,-333,-579,-824,-1066,-1304,-1540,-1772,-2002,-2231,-2456,-2681,-2900,-3117,-3330,-3540,-3748,-3950,-4147, -4339,-4523,-4701,-4871,-5034,-5188,-5327,-5456,-5566,-5665,-5744,-5806,-5843,-5858,-5842,-5796,-5715,-5602,-5445,-5249, -5005,-4715,-4377,-3984,-3540,-3044,-2499,-1901,-1261,-583,135,877,1639,2414,3189,3960,4713,5442,6137,6796, 7410,7974,8482,8937,9330,9664,9937,10156,10318,10432,10494,10513,10491,10434,10340,10224,10079,9912,9725,9521, 9298,9068,8830,8578,8321,8056,7788,7516,7247,6973,6700,6425,6156,5888,5623,5362,5104,4849,4600,4352, 4113,3876,3646,3417,3193,2972,2760,2548,2343,2138,1937,1739,1541,1351,1162,976,788,604,421,239, 63,-116,-293,-468,-649,-821,-993,-1168,-1338,-1509,-1680,-1849,-2017,-2184,-2351,-2519,-2691,-2862,-3033,-3208, -3384,-3562,-3739,-3922,-4108,-4292,-4478,-4666,-4864,-5059,-5256,-5454,-5654,-5855,-6059,-6264,-6471,-6678,-6881,-7084, -7288,-7490,-7690,-7885,-8075,-8260,-8440,-8608,-8775,-8929,-9073,-9200,-9315,-9418,-9501,-9566,-9612,-9632,-9624,-9590, -9525,-9431,-9298,-9124,-8909,-8647,-8341,-7982,-7575,-7114,-6599,-6034,-5421,-4763,-4062,-3325,-2560,-1774,-979,-180, 614,1388,2136,2846,3513,4127,4686,5187,5626,6002,6315,6569,6767,6906,6991,7026,7016,6962,6872,6750, 6597,6419,6217,5998,5767,5523,5269,5004,4732,4462,4181,3904,3628,3347,3066,2788,2511,2236,1966,1696, 1430,1162,899,641,387,132,-114,-363,-605,-848,-1086,-1319,-1550,-1781,-2009,-2232,-2452,-2668,-2886,-3098, -3310,-3522,-3723,-3924,-4119,-4312,-4499,-4680,-4853,-5015,-5166,-5309,-5438,-5554,-5655,-5733,-5792,-5826,-5839,-5822, -5774,-5690,-5568,-5410,-5205,-4958,-4665,-4320,-3926,-3477,-2979,-2432,-1838,-1200,-522,192,929,1688,2458,3230, 3995,4746,5470,6166,6822,7439,8006,8516,8971,9366,9705,9985,10203,10365,10476,10538,10555,10534,10475,10384, 10261,10114,9947,9758,9554,9337,9106,8867,8618,8364,8108,7846,7581,7312,7044,6775,6511,6245,5981,5719, 5458,5201,4951,4703,4457,4215,3977,3743,3514,3288,3068,2851,2636,2425,2221,2020,1820,1628,1433,1242, 1057,871,691,511,333,154,-21,-193,-364,-539,-715,-885,-1055,-1227,-1398,-1568,-1734,-1904,-2076,-2250, -2419,-2592,-2765,-2940,-3121,-3299,-3479,-3660,-3843,-4028,-4217,-4408,-4598,-4788,-4984,-5178,-5376,-5575,-5777,-5978, -6178,-6381,-6584,-6786,-6992,-7193,-7393,-7588,-7782,-7975,-8164,-8347,-8519,-8684,-8841,-8984,-9121,-9241,-9343,-9428, -9491,-9533,-9556,-9550,-9515,-9442,-9340,-9201,-9024,-8802,-8537,-8222,-7858,-7441,-6975,-6459,-5892,-5277,-4618,-3919, -3185,-2426,-1648,-861,-67,718,1485,2221,2926,3584,4193,4743,5237,5670,6045,6354,6605,6792,6925,7003, 7033,7018,6963,6864,6731,6571,6390,6189,5963,5728,5481,5219,4958,4690,4418,4143,3865,3588,3309,3036, 2761,2488,2217,1945,1675,1410,1147,886,626,368,109,-141,-391,-638,-882,-1125,-1367,-1601,-1834,-2059, -2287,-2512,-2732,-2951,-3164,-3372,-3581,-3783,-3981,-4179,-4365,-4545,-4721,-4888,-5049,-5200,-5340,-5466,-5573,-5671, -5744,-5806,-5841,-5850,-5829,-5781,-5697,-5575,-5415,-5208,-4955,-4654,-4302,-3899,-3449,-2941,-2384,-1780,-1135,-447, 272,1014,1775,2548,3315,4077,4820,5540,6227,6874,7475,8030,8528,8974,9358,9683,9949,10162,10317,10423, 10482,10497,10472,10408,10314,10193,10044,9873,9683,9473,9249,9016,8774,8524,8263,7999,7731,7461,7190,6918, 6649,6379,6108,5843,5584,5328,5073,4822,4575,4333,4094,3859,3633,3406,3182,2962,2745,2536,2328,2123, 1919,1722,1523,1330,1139,953,764,576,392,213,34,-142,-319,-494,-669,-845,-1015,-1184,-1354,-1524, -1691,-1859,-2026,-2193,-2361,-2527,-2699,-2873,-3047,-3221,-3398,-3579,-3759,-3945,-4130,-4319,-4510,-4700,-4897,-5094, -5296,-5493,-5692,-5896,-6098,-6303,-6510,-6711,-6914,-7115,-7312,-7513,-7708,-7899,-8084,-8265,-8440,-8612,-8769,-8922, -9062,-9188,-9299,-9398,-9480,-9541,-9581,-9596,-9585,-9544,-9473,-9368,-9226,-9043,-8812,-8537,-8214,-7845,-7421,-6940, -6412,-5831,-5202,-4530,-3820,-3074,-2304,-1520,-724,70,853,1619,2351,3047,3697,4293,4834,5316,5737,6098, 6396,6636,6818,6944,7019,7040,7019,6956,6858,6727,6567,6382,6177,5950,5712,5467,5209,4942,4670,4393, 4115,3834,3557,3279,3001,2724,2446,2177,1908,1645,1378,1118,859,601,350,103,-143,-389,-637,-878, -1113,-1348,-1582,-1811,-2039,-2267,-2489,-2709,-2927,-3142,-3355,-3567,-3773,-3971,-4168,-4358,-4541,-4721,-4893,-5050, -5197,-5333,-5458,-5570,-5663,-5736,-5788,-5817,-5822,-5795,-5743,-5656,-5526,-5357,-5147,-4889,-4587,-4234,-3827,-3369, -2861,-2304,-1698,-1048,-359,361,1109,1877,2650,3429,4195,4943,5666,6354,7006,7609,8161,8661,9101,9479, 9800,10064,10272,10420,10513,10567,10574,10542,10478,10381,10256,10102,9929,9740,9535,9317,9083,8840,8589,8333, 8072,7807,7539,7269,6995,6725,6453,6188,5918,5653,5392,5133,4879,4632,4387,4146,3906,3675,3445,3224, 3004,2790,2579,2371,2169,1968,1771,1580,1388,1199,1010,828,644,464,286,108,-71,-248,-422,-597, -771,-946,-1121,-1292,-1464,-1633,-1805,-1973,-2145,-2318,-2488,-2659,-2832,-3007,-3183,-3362,-3540,-3722,-3902,-4087, -4273,-4465,-4655,-4847,-5041,-5239,-5436,-5638,-5840,-6047,-6249,-6454,-6658,-6869,-7078,-7280,-7483,-7680,-7876,-8069, -8257,-8438,-8610,-8772,-8923,-9065,-9198,-9312,-9413,-9491,-9553,-9590,-9603,-9594,-9554,-9477,-9368,-9221,-9040,-8813, -8542,-8220,-7850,-7426,-6952,-6425,-5854,-5230,-4559,-3847,-3105,-2333,-1547,-749,46,834,1602,2343,3041,3696, 4297,4843,5328,5748,6112,6411,6650,6829,6950,7019,7041,7016,6951,6849,6714,6551,6365,6161,5938,5699, 5451,5192,4928,4659,4385,4111,3833,3551,3271,2993,2720,2442,2168,1894,1623,1357,1089,829,569,310, 54,-197,-445,-689,-933,-1172,-1409,-1644,-1870,-2097,-2320,-2539,-2761,-2976,-3187,-3398,-3603,-3803,-4006,-4199, -4392,-4576,-4751,-4920,-5084,-5237,-5377,-5504,-5618,-5713,-5790,-5849,-5884,-5892,-5872,-5817,-5730,-5608,-5441,-5234, -4978,-4672,-4317,-3912,-3455,-2949,-2395,-1789,-1140,-454,263,1007,1768,2537,3308,4071,4816,5536,6224,6873, 7478,8029,8533,8979,9369,9695,9963,10172,10329,10429,10485,10500,10469,10400,10303,10179,10032,9858,9664,9453, 9231,8995,8757,8505,8248,7985,7717,7453,7188,6920,6654,6384,6119,5857,5595,5339,5090,4837,4589,4347, 4107,3875,3643,3415,3190,2967,2752,2539,2333,2128,1926,1725,1529,1336,1146,963,776,592,412,232, 59,-116,-288,-461,-633,-806,-974,-1144,-1314,-1482,-1650,-1820,-1987,-2154,-2321,-2494,-2665,-2841,-3017,-3194, -3370,-3550,-3735,-3921,-4110,-4296,-4484,-4676,-4870,-5068,-5264,-5463,-5661,-5859,-6062,-6265,-6468,-6669,-6869,-7069, -7268,-7466,-7662,-7859,-8045,-8230,-8404,-8576,-8742,-8895,-9036,-9164,-9279,-9379,-9464,-9527,-9569,-9583,-9569,-9528, -9455,-9348,-9201,-9014,-8782,-8504,-8177,-7806,-7383,-6906,-6372,-5794,-5167,-4498,-3791,-3052,-2285,-1503,-710,80, 856,1616,2349,3042,3690,4287,4829,5311,5730,6090,6391,6627,6807,6934,7009,7028,7004,6937,6835,6704, 6543,6354,6143,5916,5677,5427,5170,4903,4633,4356,4079,3800,3530,3252,2976,2701,2427,2157,1890,1624, 1363,1101,839,582,329,76,-171,-421,-669,-912,-1153,-1387,-1620,-1855,-2082,-2311,-2535,-2755,-2973,-3184, -3397,-3605,-3807,-4005,-4194,-4380,-4563,-4736,-4903,-5059,-5201,-5335,-5456,-5564,-5655,-5722,-5772,-5797,-5798,-5770, -5713,-5617,-5485,-5313,-5092,-4828,-4520,-4155,-3741,-3270,-2753,-2185,-1571,-913,-221,504,1257,2021,2794,3565, 4327,5064,5774,6450,7085,7679,8215,8699,9126,9491,9803,10055,10253,10397,10488,10530,10533,10500,10431,10330, 10203,10049,9874,9680,9473,9253,9016,8770,8514,8254,7993,7725,7456,7184,6911,6638,6369,6103,5838,5575, 5314,5059,4809,4564,4322,4086,3851,3620,3394,3173,2958,2746,2535,2329,2124,1925,1728,1535,1342,1151, 959,776,594,412,228,48,-131,-310,-484,-658,-831,-1006,-1180,-1352,-1520,-1689,-1857,-2025,-2193,-2362, -2533,-2701,-2871,-3043,-3222,-3401,-3579,-3760,-3943,-4130,-4318,-4508,-4703,-4898,-5094,-5289,-5491,-5699,-5903,-6105, -6310,-6514,-6719,-6925,-7131,-7335,-7532,-7726,-7919,-8109,-8290,-8467,-8634,-8791,-8937,-9075,-9199,-9308,-9403,-9478, -9532,-9565,-9576,-9558,-9512,-9436,-9314,-9165,-8972,-8736,-8455,-8122,-7740,-7302,-6815,-6277,-5691,-5055,-4375,-3651, -2899,-2127,-1334,-538,255,1039,1796,2525,3211,3849,4433,4962,5430,5837,6183,6466,6691,6856,6966,7029, 7038,7010,6938,6832,6692,6525,6335,6129,5904,5664,5413,5149,4882,4610,4335,4062,3778,3496,3217,2936, 2657,2385,2110,1838,1567,1303,1043,781,527,271,18,-230,-474,-717,-955,-1194,-1431,-1662,-1889,-2114, -2336,-2560,-2778,-2997,-3213,-3423,-3628,-3831,-4033,-4231,-4420,-4607,-4781,-4948,-5110,-5261,-5399,-5524,-5628,-5717, -5790,-5841,-5865,-5866,-5833,-5770,-5672,-5535,-5361,-5141,-4871,-4554,-4183,-3766,-3296,-2775,-2207,-1590,-930,-235, 489,1242,2012,2788,3562,4323,5069,5786,6468,7106,7698,8239,8724,9152,9520,9834,10078,10273,10408,10499, 10538,10535,10493,10417,10309,10175,10019,9845,9649,9434,9209,8975,8732,8484,8226,7964,7697,7428,7158,6894, 6623,6355,6087,5820,5559,5302,5044,4793,4541,4296,4057,3821,3591,3362,3137,2917,2701,2489,2286,2083, 1882,1684,1488,1300,1113,929,746,565,383,206,27,-145,-316,-492,-666,-839,-1011,-1181,-1353,-1525, -1695,-1866,-2035,-2205,-2374,-2545,-2720,-2893,-3070,-3246,-3424,-3601,-3786,-3968,-4157,-4343,-4530,-4718,-4914,-5108, -5305,-5504,-5701,-5904,-6105,-6306,-6515,-6717,-6921,-7122,-7323,-7528,-7727,-7923,-8115,-8300,-8474,-8648,-8813,-8969, -9109,-9235,-9345,-9442,-9520,-9580,-9615,-9626,-9603,-9556,-9474,-9362,-9208,-9013,-8772,-8488,-8154,-7772,-7340,-6856, -6320,-5730,-5095,-4419,-3703,-2955,-2179,-1387,-591,203,988,1750,2485,3173,3822,4414,4949,5428,5841,6192, 6478,6704,6875,6988,7051,7061,7026,6953,6842,6704,6539,6346,6132,5905,5665,5414,5157,4889,4618,4345, 4068,3791,3515,3244,2966,2686,2415,2140,1869,1605,1337,1073,807,547,293,42,-208,-459,-710,-953, -1189,-1428,-1660,-1889,-2117,-2344,-2563,-2782,-2996,-3207,-3416,-3626,-3826,-4022,-4213,-4397,-4576,-4756,-4922,-5079, -5227,-5360,-5485,-5595,-5689,-5763,-5814,-5842,-5843,-5817,-5760,-5668,-5533,-5361,-5143,-4878,-4564,-4203,-3781,-3312, -2793,-2222,-1610,-954,-259,464,1212,1979,2750,3522,4277,5015,5728,6407,7041,7633,8175,8664,9088,9459, 9776,10032,10230,10377,10470,10513,10517,10480,10411,10309,10179,10022,9844,9647,9438,9215,8981,8734,8474,8214, 7953,7687,7421,7148,6880,6611,6342,6081,5820,5558,5303,5048,4797,4554,4315,4077,3846,3614,3388,3166, 2946,2735,2525,2312,2108,1906,1709,1515,1320,1127,938,752,571,391,213,30,-145,-320,-493,-666, -837,-1009,-1179,-1347,-1519,-1686,-1850,-2018,-2187,-2357,-2525,-2695,-2865,-3042,-3219,-3399,-3582,-3764,-3947,-4134, -4327,-4520,-4713,-4910,-5105,-5302,-5503,-5705,-5908,-6113,-6313,-6515,-6719,-6919,-7124,-7319,-7520,-7713,-7901,-8088, -8272,-8450,-8615,-8772,-8919,-9058,-9183,-9295,-9394,-9470,-9524,-9558,-9566,-9554,-9509,-9426,-9311,-9153,-8956,-8719, -8433,-8097,-7709,-7269,-6776,-6238,-5647,-5010,-4330,-3610,-2862,-2087,-1303,-512,279,1053,1807,2527,3206,3840, 4421,4946,5411,5816,6163,6445,6667,6830,6944,6999,7011,6980,6907,6799,6656,6487,6296,6083,5857,5616, 5359,5095,4824,4552,4279,4002,3720,3441,3159,2885,2608,2336,2067,1795,1527,1264,1004,748,494,239, -14,-261,-508,-748,-991,-1230,-1468,-1703,-1936,-2161,-2386,-2609,-2832,-3048,-3264,-3477,-3682,-3885,-4085,-4281, -4470,-4650,-4820,-4983,-5140,-5287,-5418,-5537,-5639,-5724,-5787,-5834,-5856,-5851,-5813,-5742,-5639,-5498,-5317,-5092, -4817,-4493,-4119,-3696,-3219,-2692,-2112,-1491,-824,-125,606,1357,2127,2898,3669,4427,5159,5870,6543,7169, 7747,8274,8751,9163,9518,9815,10057,10236,10367,10450,10488,10484,10437,10355,10250,10117,9957,9787,9590,9379, 9153,8916,8674,8425,8166,7903,7632,7362,7093,6822,6555,6286,6014,5749,5488,5230,4975,4726,4476,4233, 3995,3765,3537,3314,3092,2872,2660,2456,2248,2049,1850,1657,1461,1271,1087,901,717,532,352,171, -4,-181,-356,-533,-708,-886,-1055,-1227,-1395,-1565,-1739,-1910,-2076,-2242,-2412,-2578,-2751,-2925,-3100,-3276, -3449,-3626,-3808,-3992,-4176,-4366,-4553,-4742,-4935,-5135,-5333,-5532,-5733,-5932,-6136,-6343,-6550,-6754,-6959,-7159, -7360,-7561,-7760,-7952,-8140,-8320,-8493,-8655,-8817,-8964,-9100,-9218,-9321,-9408,-9480,-9529,-9559,-9559,-9533,-9477, -9389,-9265,-9105,-8904,-8653,-8356,-8011,-7622,-7174,-6678,-6127,-5529,-4881,-4194,-3468,-2714,-1933,-1139,-341,454, 1232,1986,2709,3382,4014,4587,5104,5562,5958,6289,6562,6770,6926,7026,7074,7074,7033,6952,6836,6694, 6523,6334,6120,5887,5646,5395,5135,4870,4596,4321,4043,3760,3486,3209,2933,2651,2371,2101,1830,1562, 1297,1030,767,512,252,4,-243,-490,-737,-979,-1214,-1444,-1678,-1904,-2131,-2355,-2576,-2791,-3002,-3216, -3429,-3637,-3842,-4036,-4231,-4418,-4601,-4778,-4947,-5105,-5254,-5385,-5506,-5618,-5708,-5776,-5822,-5843,-5837,-5802, -5735,-5633,-5486,-5299,-5066,-4792,-4467,-4088,-3658,-3177,-2641,-2063,-1436,-772,-67,666,1420,2187,2962,3733, 4493,5230,5932,6607,7238,7823,8352,8827,9244,9598,9894,10134,10321,10451,10527,10560,10547,10500,10418,10307, 10167,10001,9815,9617,9402,9180,8939,8693,8438,8176,7912,7650,7384,7114,6842,6573,6307,6045,5782,5520, 5262,5007,4756,4507,4267,4031,3792,3557,3331,3107,2892,2677,2462,2254,2048,1845,1653,1456,1267,1072, 885,702,521,343,169,-10,-184,-362,-537,-707,-876,-1049,-1224,-1392,-1563,-1730,-1901,-2069,-2240,-2414, -2587,-2761,-2933,-3109,-3291,-3472,-3655,-3841,-4022,-4208,-4396,-4594,-4787,-4983,-5174,-5373,-5571,-5773,-5974,-6178, -6382,-6584,-6785,-6991,-7195,-7396,-7595,-7790,-7983,-8172,-8356,-8536,-8708,-8864,-9015,-9152,-9282,-9394,-9490,-9564, -9615,-9641,-9648,-9628,-9577,-9488,-9362,-9201,-8997,-8748,-8451,-8108,-7709,-7261,-6759,-6210,-5616,-4968,-4279,-3551, -2796,-2021,-1228,-432,359,1142,1895,2619,3297,3930,4506,5028,5487,5885,6225,6501,6716,6875,6974,7022, 7025,6982,6903,6785,6639,6460,6264,6050,5822,5575,5322,5059,4789,4519,4241,3968,3692,3415,3136,2860, 2587,2318,2045,1778,1510,1245,985,730,475,220,-35,-287,-534,-779,-1021,-1257,-1495,-1733,-1963,-2190, -2411,-2633,-2854,-3068,-3282,-3489,-3695,-3893,-4090,-4284,-4471,-4648,-4817,-4977,-5134,-5278,-5413,-5530,-5635,-5721, -5789,-5838,-5861,-5861,-5823,-5752,-5651,-5513,-5328,-5103,-4829,-4503,-4125,-3695,-3215,-2685,-2101,-1475,-805,-100, 631,1387,2157,2931,3699,4456,5193,5899,6569,7201,7779,8303,8778,9192,9550,9850,10088,10272,10404,10488, 10527,10524,10479,10401,10291,10157,10001,9821,9624,9407,9182,8943,8693,8443,8186,7918,7648,7376,7108,6837, 6570,6302,6037,5771,5510,5257,5004,4759,4512,4269,4033,3804,3576,3355,3134,2919,2703,2496,2291,2092, 1891,1691,1495,1301,1114,926,743,561,376,197,20,-154,-331,-507,-682,-855,-1027,-1194,-1361,-1531, -1699,-1869,-2035,-2201,-2367,-2538,-2710,-2883,-3056,-3232,-3411,-3590,-3770,-3957,-4144,-4334,-4526,-4715,-4914,-5114, -5314,-5516,-5714,-5916,-6119,-6326,-6533,-6738,-6942,-7142,-7341,-7539,-7735,-7927,-8113,-8289,-8462,-8625,-8785,-8931, -9066,-9184,-9293,-9381,-9453,-9504,-9537,-9538,-9513,-9458,-9374,-9255,-9095,-8894,-8645,-8348,-8004,-7607,-7164,-6663, -6112,-5509,-4864,-4176,-3451,-2697,-1922,-1128,-334,457,1232,1983,2695,3373,3994,4566,5078,5534,5927,6261, 6533,6745,6901,7002,7053,7059,7017,6933,6822,6679,6507,6314,6099,5867,5625,5371,5109,4843,4570,4289, 4008,3728,3451,3171,2895,2614,2339,2067,1796,1532,1270,1005,746,488,235,-12,-258,-503,-748,-990, -1228,-1460,-1693,-1920,-2153,-2376,-2595,-2815,-3030,-3243,-3455,-3665,-3872,-4070,-4263,-4450,-4634,-4808,-4976,-5129, -5271,-5402,-5519,-5621,-5706,-5768,-5810,-5822,-5813,-5771,-5697,-5586,-5434,-5238,-4998,-4715,-4383,-4001,-3564,-3075, -2539,-1953,-1319,-650,58,792,1549,2316,3087,3850,4603,5334,6031,6690,7308,7881,8399,8860,9259,9599, 9879,10105,10278,10395,10463,10486,10470,10416,10334,10219,10076,9912,9728,9525,9314,9090,8856,8608,8353,8093, 7831,7568,7298,7029,6758,6486,6217,5952,5693,5431,5168,4916,4663,4416,4176,3936,3704,3471,3243,3024, 2808,2596,2386,2181,1979,1778,1585,1396,1206,1014,830,646,469,289,108,-65,-246,-419,-596,-769, -944,-1114,-1288,-1460,-1630,-1799,-1969,-2139,-2309,-2480,-2657,-2827,-2998,-3172,-3348,-3531,-3712,-3892,-4075,-4261, -4448,-4638,-4832,-5027,-5223,-5418,-5616,-5819,-6020,-6226,-6428,-6631,-6834,-7041,-7245,-7450,-7651,-7843,-8034,-8219, -8408,-8584,-8750,-8908,-9050,-9184,-9301,-9408,-9501,-9565,-9605,-9626,-9627,-9594,-9532,-9434,-9301,-9126,-8915,-8658, -8353,-7998,-7595,-7132,-6623,-6065,-5455,-4806,-4110,-3378,-2616,-1835,-1045,-249,545,1317,2065,2779,3447,4068, 4630,5132,5574,5954,6275,6539,6742,6884,6969,7006,6998,6950,6860,6739,6585,6406,6208,5990,5762,5522, 5266,5003,4737,4468,4193,3919,3642,3366,5,-170,-662,-1012,-1325,-1447,-1437,-1287,-1065,-780,-508,-197, 215,766,1366,1924,2360,2696,2923,3061,3160,3281,3428,3553,3632,3722,3878,4130,4459,4879,5348,5845, 6275,6670,7015,7336,7579,7770,7850,7855,7776,7647,7504,7384,7287,7222,7170,7136,7111,7116,7124,7125, 7087,7016,6876,6666,6386,6047,5672,5242,4762,4261,3735,3218,2723,2271,1857,1489,1132,790,456,129, -189,-494,-805,-1139,-1525,-1937,-2371,-2819,-3281,-3732,-4170,-4602,-5072,-5600,-6117,-6549,-6875,-7115,-7299,-7450, -7597,-7779,-7990,-8177,-8315,-8403,-8507,-8680,-8912,-9217,-9566,-9927,-10226,-10431,-10573,-10712,-10866,-11001,-11087,-11098, -11027,-10852,-10603,-10338,-10153,-10038,-9950,-9842,-9733,-9615,-9492,-9382,-9338,-9366,-9412,-9379,-9236,-9004,-8710,-8347, -7962,-7584,-7214,-6784,-6264,-5675,-5098,-4575,-4114,-3741,-3450,-3196,-2941,-2646,-2349,-2098,-1888,-1701,-1499,-1258, -953,-558,-78,411,871,1305,1733,2183,2643,3108,3572,3991,4331,4580,4769,4961,5183,5412,5659,5910, 6155,6377,6581,6822,7148,7532,7927,8304,8645,8938,9167,9329,9495,9652,9775,9811,9771,9684,9565,9421, 9300,9244,9235,9242,9218,9191,9185,9192,9217,9242,9274,9281,9196,9014,8761,8477,8156,7804,7426,7042, 6633,6188,5730,5308,4958,4667,4402,4174,3967,3771,3550,3315,3092,2884,2640,2338,1973,1575,1128,642, 127,-350,-808,-1263,-1709,-2146,-2531,-2870,-3184,-3449,-3654,-3827,-4014,-4228,-4467,-4697,-4952,-5241,-5544,-5863, -6190,-6567,-6965,-7350,-7681,-8000,-8275,-8505,-8669,-8796,-8912,-9010,-9056,-9067,-9059,-9074,-9097,-9128,-9193,-9306, -9441,-9569,-9684,-9792,-9910,-10009,-10059,-10074,-10060,-9978,-9816,-9574,-9305,-9016,-8708,-8368,-8027,-7709,-7399,-7075, -6771,-6516,-6317,-6126,-5925,-5730,-5527,-5292,-5014,-4704,-4394,-4062,-3681,-3251,-2806,-2353,-1881,-1397,-945,-539, -159,215,572,909,1202,1481,1750,1990,2221,2471,2759,3091,3436,3788,4164,4557,4962,5369,5791,6239, 6678,7068,7410,7715,7999,8238,8440,8631,8833,9011,9153,9282,9437,9615,9806,10008,10247,10494,10722,10910, 11062,11217,11345,11414,11431,11402,11321,11159,10942,10701,10474,10240,9990,9747,9518,9315,9105,8907,8753,8629, 8503,8347,8166,7966,7730,7442,7115,6765,6390,5980,5509,5015,4532,4064,3604,3160,2750,2390,2028,1667, 1329,1035,764,479,175,-136,-473,-851,-1282,-1718,-2147,-2593,-3064,-3541,-3998,-4446,-4875,-5284,-5641,-5927, -6200,-6457,-6704,-6914,-7115,-7319,-7527,-7721,-7924,-8180,-8476,-8795,-9099,-9398,-9700,-9986,-10238,-10461,-10676,-10870, -10999,-11050,-11048,-11018,-10963,-10885,-10789,-10718,-10650,-10570,-10470,-10377,-10325,-10295,-10266,-10236,-10200,-10142,-10023,-9839, -9625,-9412,-9152,-8843,-8482,-8095,-7672,-7211,-6744,-6321,-5934,-5567,-5193,-4828,-4483,-4150,-3821,-3509,-3235,-2967, -2672,-2315,-1931,-1540,-1125,-709,-295,106,510,927,1362,1789,2169,2504,2808,3087,3332,3575,3829,4102, 4360,4603,4834,5103,5396,5710,6057,6435,6832,7195,7524,7847,8170,8482,8766,9015,9235,9402,9487,9533, 9585,9642,9710,9749,9791,9848,9884,9903,9944,10022,10120,10196,10231,10229,10191,10101,9968,9810,9641,9441, 9175,8864,8522,8186,7846,7522,7230,6968,6725,6452,6177,5915,5674,5439,5195,4945,4675,4365,3983,3570, 3153,2746,2317,1877,1431,1001,557,104,-309,-664,-974,-1269,-1567,-1849,-2127,-2420,-2722,-3016,-3283,-3569, -3898,-4264,-4654,-5049,-5455,-5852,-6213,-6527,-6834,-7147,-7442,-7701,-7912,-8088,-8222,-8324,-8404,-8496,-8621,-8763, -8895,-9017,-9147,-9285,-9415,-9557,-9716,-9884,-10027,-10104,-10124,-10108,-10061,-9978,-9871,-9739,-9597,-9411,-9164,-8906, -8659,-8444,-8239,-8047,-7871,-7707,-7514,-7282,-7047,-6824,-6611,-6371,-6091,-5785,-5440,-5038,-4593,-4152,-3750,-3352, -2940,-2525,-2129,-1731,-1347,-979,-667,-396,-137,142,440,751,1068,1405,1744,2075,2404,2771,3177,3617, 4040,4445,4842,5207,5541,5851,6164,6496,6802,7058,7282,7489,7686,7877,8085,8336,8613,8878,9118,9345, 9579,9812,10032,10253,10470,10647,10757,10785,10782,10756,10710,10628,10535,10429,10301,10117,9920,9743,9613,9486, 9375,9253,9123,8962,8759,8545,8338,8127,7896,7605,7277,6917,6517,6083,5659,5264,4892,4508,4105,3715, 3338,2979,2633,2317,2035,1755,1436,1070,699,325,-60,-459,-861,-1259,-1686,-2149,-2634,-3083,-3488,-3866, -4222,-4549,-4853,-5156,-5472,-5773,-6027,-6244,-6471,-6708,-6962,-7233,-7535,-7866,-8180,-8459,-8733,-9002,-9288,-9561, -9812,-10043,-10240,-10375,-10449,-10489,-10532,-10586,-10615,-10624,-10619,-10605,-10564,-10516,-10481,-10491,-10514,-10525,-10491,-10423, -10335,-10213,-10048,-9885,-9712,-9508,-9237,-8911,-8563,-8197,-7831,-7470,-7131,-6817,-6503,-6152,-5789,-5458,-5147,-4850, -4555,-4274,-3979,-3644,-3266,-2871,-2491,-2121,-1744,-1362,-982,-597,-192,214,586,914,1203,1494,1777,2058, 2341,2633,2915,3188,3430,3682,3980,4313,4667,5034,5403,5785,6135,6466,6803,7165,7519,7859,8151,8418, 8650,8843,9019,9203,9399,9594,9753,9890,10029,10164,10287,10417,10571,10719,10829,10887,10909,10905,10879,10812, 10725,10620,10490,10294,10059,9808,9565,9325,9083,8849,8633,8394,8144,7873,7622,7389,7160,6898,6613,6308, 5976,5598,5203,4807,4427,4020,3595,3158,2722,2296,1873,1474,1112,783,452,107,-241,-565,-897,-1227, -1564,-1887,-2207,-2575,-2974,-3364,-3748,-4120,-4498,-4855,-5190,-5510,-5848,-6159,-6444,-6678,-6895,-7106,-7304,-7485, -7680,-7887,-8098,-8283,-8450,-8628,-8831,-9033,-9231,-9424,-9611,-9776,-9882,-9950,-10003,-10050,-10077,-10069,-10028,-9978, -9891,-9766,-9631,-9519,-9434,-9339,-9220,-9101,-8975,-8831,-8661,-8488,-8322,-8154,-7931,-7663,-7362,-7045,-6704,-6339, -5970,-5621,-5261,-4874,-4473,-4081,-3718,-3374,-3034,-2731,-2435,-2130,-1796,-1448,-1113,-790,-456,-115,239,600, 989,1413,1829,2218,2587,2943,3302,3654,3986,4331,4666,4979,5252,5504,5769,6061,6345,6634,6936,7236, 7523,7793,8054,8359,8651,8933,9178,9396,9588,9738,9838,9927,10021,10092,10121,10106,10083,10042,9984,9915, 9864,9832,9784,9704,9600,9499,9384,9248,9100,8943,8773,8555,8288,7998,7700,7394,7083,6752,6428,6101, 5755,5389,5042,4717,4419,4112,3806,3498,3179,2841,2481,2126,1784,1435,1060,660,255,-157,-574,-997, -1385,-1745,-2106,-2477,-2838,-3173,-3493,-3807,-4103,-4381,-4637,-4917,-5233,-5547,-5844,-6138,-6441,-6737,-7024,-7299, -7599,-7911,-8188,-8427,-8634,-8832,-9001,-9146,-9280,-9425,-9554,-9648,-9722,-9767,-9830,-9896,-9959,-10024,-10101,-10155, -10182,-10167,-10143,-10119,-10079,-10016,-9920,-9795,-9639,-9432,-9188,-8947,-8717,-8486,-8227,-7957,-7685,-7393,-7098,-6798, -6532,-6289,-6030,-5728,-5414,-5095,-4750,-4397,-4039,-3702,-3372,-3005,-2600,-2211,-1821,-1448,-1092,-756,-446,-146, 178,509,835,1132,1421,1716,2007,2301,2615,2967,3334,3694,4035,4378,4728,5087,5456,5820,6199,6558, 6875,7164,7437,7721,8008,8273,8534,8799,9030,9233,9416,9614,9831,10040,10224,10401,10549,10658,10721,10772, 10822,10866,10863,10817,10735,10630,10491,10328,10167,10026,9870,9691,9475,9254,9043,8814,8590,8379,8168,7930, 7659,7350,7040,6718,6393,6051,5708,5358,4988,4581,4173,3781,3404,3046,2680,2314,1965,1597,1217,843, 501,174,-172,-536,-901,-1276,-1668,-2071,-2453,-2806,-3159,-3526,-3898,-4265,-4615,-4953,-5284,-5570,-5830,-6091, -6368,-6645,-6911,-7157,-7404,-7646,-7863,-8075,-8305,-8556,-8803,-9025,-9221,-9408,-9565,-9702,-9828,-9951,-10072,-10157, -10204,-10203,-10198,-10189,-10174,-10146,-10128,-10106,-10051,-9959,-9854,-9755,-9664,-9553,-9424,-9289,-9119,-8906,-8636,-8359, -8091,-7814,-7520,-7200,-6866,-6525,-6145,-5762,-5404,-5088,-4760,-4428,-4085,-3742,-3391,-3029,-2664,-2324,-1989,-1649, -1277,-888,-496,-105,288,658,1015,1360,1715,2085,2450,2788,3114,3419,3715,4000,4294,4606,4939,5266, 5579,5880,6180,6496,6791,7114,7438,7772,8064,8323,8551,8783,8999,9197,9376,9558,9709,9813,9877,9948, 10019,10089,10137,10176,10210,10209,10167,10122,10070,10026,9963,9861,9742,9601,9421,9208,8983,8775,8565,8329, 8065,7792,7503,7208,6905,6618,6346,6071,5773,5454,5127,4799,4471,4128,3795,3465,3117,2734,2339,1935, 1562,1182,803,439,71,-297,-687,-1073,-1431,-1761,-2091,-2418,-2747,-3072,-3405,-3761,-4104,-4416,-4715,-5022, -5350,-5663,-5975,-6294,-6603,-6885,-7130,-7358,-7596,-7836,-8061,-8267,-8466,-8638,-8791,-8919,-9052,-9196,-9345,-9485, -9596,-9690,-9775,-9833,-9867,-9908,-9958,-9986,-9973,-9917,-9840,-9739,-9624,-9495,-9363,-9229,-9087,-8894,-8671,-8451, -8242,-8026,-7802,-7579,-7361,-7107,-6811,-6505,-6206,-5919,-5610,-5288,-4961,-4629,-4259,-3876,-3507,-3168,-2839,-2510, -2179,-1845,-1512,-1172,-834,-520,-237,58,363,691,1021,1363,1714,2064,2396,2707,3042,3393,3760,4120, 4464,4800,5129,5436,5739,6043,6372,6696,7003,7289,7564,7840,8101,8357,8629,8908,9158,9376,9558,9731, 9893,10024,10150,10271,10365,10422,10420,10395,10375,10339,10287,10216,10143,10050,9908,9743,9581,9428,9267,9088, 8888,8680,8448,8177,7894,7618,7347,7066,6757,6426,6090,5737,5377,5013,4667,4337,3990,3618,3243,2871, 2497,2121,1753,1398,1047,673,276,-117,-502,-889,-1261,-1639,-1994,-2357,-2738,-3118,-3484,-3817,-4148,-4481, -4789,-5096,-5407,-5729,-6052,-6334,-6598,-6865,-7133,-7400,-7659,-7925,-8192,-8440,-8651,-8838,-9029,-9223,-9407,-9572, -9729,-9865,-9975,-10051,-10109,-10172,-10240,-10296,-10331,-10345,-10347,-10319,-10273,-10219,-10176,-10126,-10050,-9939,-9799,-9638, -9466,-9258,-9045,-8836,-8621,-8363,-8068,-7760,-7459,-7147,-6833,-6529,-6231,-5921,-5569,-5210,-4859,-4520,-4177,-3836, -3486,-3147,-2781,-2389,-1995,-1621,-1267,-917,-553,-204,146,514,880,1225,1554,1856,2168,2490,2816,3142, 3480,3822,4145,4458,4771,5104,5448,5799,6137,6473,6802,7103,7385,7669,7962,8261,8537,8777,9015,9233, 9425,9603,9786,9974,10151,10287,10399,10488,10564,10627,10653,10695,10725,10715,10662,10582,10491,10391,10272,10135, 9999,9846,9656,9444,9212,9000,8775,8540,8295,8044,7774,7476,7158,6841,6537,6236,5911,5576,5228,4873, 4501,4126,3759,3412,3058,2689,2316,1934,1562,1182,808,448,103,-243,-630,-1007,-1369,-1728,-2076,-2430, -2759,-3083,-3426,-3779,-4116,-4439,-4733,-5034,-5322,-5595,-5870,-6163,-6447,-6708,-6952,-7173,-7397,-7610,-7822,-8035, -8244,-8448,-8621,-8760,-8896,-9034,-9162,-9276,-9376,-9468,-9534,-9564,-9571,-9573,-9576,-9576,-9547,-9499,-9439,-9354, -9241,-9117,-9000,-8886,-8764,-8595,-8415,-8215,-8002,-7761,-7521,-7286,-7048,-6779,-6479,-6171,-5850,-5533,-5204,-4882, -4585,-4283,-3950,-3607,-3262,-2934,-2616,-2295,-1983,-1683,-1362,-1018,-662,-321,11,337,671,1003,1344,1686, 2048,2400,2725,3040,3348,3665,3985,4308,4637,4971,5291,5589,5876,6171,6488,6797,7106,7400,7687,7946, 8179,8390,8613,8837,9039,9207,9352,9479,9580,9647,9706,9781,9837,9868,9854,9834,9799,9736,9653,9575, 9494,9397,9246,9076,8888,8694,8480,8264,8045,7823,7570,7286,6996,6711,6417,6131,5824,5530,5225,4892, 4541,4182,3840,3508,3159,2804,2437,2067,1683,1291,913,556,208,-156,-533,-906,-1272,-1636,-2003,-2348, -2671,-2999,-3335,-3686,-4033,-4357,-4692,-5009,-5308,-5600,-5896,-6212,-6523,-6811,-7079,-7339,-7589,-7816,-8032,-8263, -8498,-8712,-8899,-9067,-9225,-9378,-9514,-9646,-9785,-9918,-10026,-10092,-10138,-10185,-10226,-10253,-10266,-10280,-10258,-10210, -10119,-10013,-9915,-9807,-9680,-9537,-9372,-9195,-8979,-8735,-8497,-8270,-8035,-7783,-7511,-7223,-6929,-6603,-6271,-5955, -5659,-5340,-5003,-4646,-4290,-3926,-3557,-3196,-2866,-2534,-2196,-1832,-1473,-1128,-783,-450,-135,171,473,801, 1135,1477,1796,2120,2436,2743,3062,3389,3735,4087,4437,4750,5070,5382,5706,6018,6340,6663,6985,7277, 7551,7816,8091,8375,8642,8899,9166,9395,9598,9767,9937,10108,10263,10386,10493,10570,10616,10626,10614,10611, 10607,10572,10514,10434,10331,10214,10071,9929,9797,9641,9465,9252,9028,8787,8528,8261,7989,7721,7434,7121, 6781,6452,6116,5782,5448,5116,4777,4441,4076,3695,3332,2977,2619,2256,1890,1516,1136,730,333,-46, -408,-777,-1152,-1521,-1883,-2251,-2620,-2972,-3290,-3596,-3914,-4238,-4557,-4869,-5175,-5480,-5768,-6038,-6299,-6585, -6863,-7136,-7384,-7629,-7859,-8057,-8243,-8436,-8628,-8809,-8962,-9095,-9206,-9310,-9392,-9470,-9538,-9620,-9678,-9701, -9704,-9701,-9678,-9654,-9613,-9563,-9511,-9426,-9301,-9155,-9009,-8852,-8680,-8489,-8295,-8085,-7841,-7570,-7288,-7020, -6764,-6483,-6195,-5898,-5598,-5268,-4934,-4611,-4305,-4001,-3680,-3345,-3010,-2668,-2315,-1959,-1627,-1308,-978,-636, -282,71,414,761,1095,1411,1711,2031,2366,2707,3037,3361,3677,3995,4307,4616,4949,5294,5634,5956, 6257,6554,6848,7133,7406,7680,7950,8193,8402,8590,8778,8953,9120,9269,9422,9551,9648,9710,9765,9810, 9852,9871,9858,9835,9787,9689,9575,9454,9330,9194,9030,8846,8654,8437,8205,7971,7746,7522,7278,7016, 6736,6445,6149,5834,5524,5214,4896,4553,4194,3823,3453,3083,2715,2352,1992,1636,1268,888,515,165, -188,-532,-881,-1232,-1573,-1939,-2310,-2657,-2991,-3327,-3665,-4002,-4331,-4661,-5000,-5317,-5608,-5877,-6146,-6418, -6682,-6928,-7183,-7425,-7646,-7843,-8027,-8226,-8424,-8614,-8791,-8962,-9120,-9251,-9364,-9460,-9573,-9673,-9745,-9801, -9825,-9834,-9820,-9788,-9751,-9716,-9666,-9594,-9479,-9355,-9229,-9080,-8925,-8763,-8611,-8434,-8218,-7970,-7722,-7475, -7215,-6946,-6672,-6396,-6092,-5756,-5412,-5078,-4763,-4435,-4102,-3776,-3448,-3099,-2745,-2393,-2072,-1765,-1447,-1119, -807,-476,-144,204,524,834,1143,1460,1797,2136,2470,2814,3146,3466,3771,4085,4413,4753,5081,5404, 5718,6027,6327,6628,6926,7252,7579,7878,8163,8433,8704,8955,9195,9429,9666,9868,10037,10159,10281,10391, 10469,10537,10600,10645,10660,10631,10589,10549,10506,10437,10357,10265,10149,9994,9812,9619,9428,9222,8994,8752, 8483,8208,7902,7588,7281,6981,6678,6369,6038,5705,5368,5023,4679,4334,4002,3658,3281,2898,2515,2120, 1729,1335,950,575,185,-219,-616,-1002,-1367,-1732,-2086,-2419,-2752,-3100,-3456,-3794,-4113,-4423,-4750,-5052, -5366,-5680,-6001,-6325,-6621,-6891,-7158,-7422,-7671,-7916,-8147,-8379,-8582,-8758,-8913,-9068,-9222,-9366,-9507,-9630, -9743,-9838,-9907,-9969,-10025,-10090,-10136,-10157,-10151,-10130,-10079,-10013,-9913,-9832,-9734,-9613,-9459,-9288,-9097,-8897, -8675,-8455,-8240,-8020,-7769,-7492,-7209,-6924,-6628,-6332,-6035,-5736,-5433,-5093,-4735,-4391,-4048,-3706,-3362,-3019, -2684,-2335,-1971,-1609,-1266,-932,-609,-282,42,367,704,1054,1383,1704,2011,2323,2648,2980,3316,3659, 4000,4330,4644,4950,5267,5595,5915,6224,6522,6819,7075,7324,7572,7824,8075,8317,8528,8726,8921,9090, 9246,9391,9538,9676,9774,9827,9875,9894,9889,9866,9831,9797,9721,9619,9487,9351,9211,9066,8906,8751, 8584,8390,8178,7945,7718,7484,7236,6969,6695,6401,6083,5749,5409,5076,4744,4401,4054,3697,3347,2981, 2629,2283,1950,1624,1278,923,567,213,-142,-509,-858,-1210,-1560,-1930,-2304,-2662,-3014,-3353,-3682,-3998, -4300,-4602,-4912,-5202,-5484,-5743,-5998,-6250,-6483,-6715,-6964,-7213,-7449,-7658,-7858,-8060,-8253,-8426,-8602,-8762, -8915,-9036,-9119,-9194,-9259,-9317,-9361,-9383,-9401,-9400,-9370,-9313,-9253,-9203,-9144,-9067,-8971,-8865,-8734,-8574, -8401,-8221,-8048,-7858,-7630,-7387,-7135,-6859,-6579,-6282,-5995,-5718,-5423,-5109,-4784,-4462,-4143,-3818,-3506,-3207, -2910,-2590,-2257,-1912,-1613,-1286,-966,-651,-349,-19,312,661,994,1310,1627,1937,2255,2573,2889,3218, 3549,3858,4162,4458,4769,5084,5397,5723,6054,6377,6685,6979,7275,7585,7889,8178,8452,8703,8945,9145, 9329,9510,9689,9845,9971,10077,10170,10240,10283,10320,10363,10393,10399,10368,10324,10262,10177,10064,9950,9821, 9671,9479,9265,9037,8800,8545,8290,8025,7767,7488,7184,6872,6567,6263,5963,5646,5328,5007,4657,4290, 3917,3541,3174,2796,2409,2016,1614,1213,803,406,26,-331,-704,-1072,-1436,-1797,-2153,-2509,-2848,-3179, -3503,-3842,-4190,-4537,-4872,-5210,-5540,-5844,-6147,-6442,-6751,-7047,-7315,-7572,-7812,-8027,-8238,-8425,-8615,-8812, -8996,-9153,-9297,-9436,-9564,-9686,-9798,-9914,-10024,-10109,-10164,-10192,-10211,-10219,-10208,-10172,-10137,-10074,-9984,-9867, -9721,-9585,-9446,-9293,-9121,-8943,-8753,-8529,-8279,-8040,-7809,-7573,-7314,-7032,-6739,-6441,-6109,-5778,-5453,-5145, -4827,-4487,-4139,-3791,-3442,-3096,-2755,-2432,-2128,-1806,-1467,-1136,-810,-483,-167,155,458,767,1095,1433, 1775,2110,2426,2753,3073,3390,3718,4053,4396,4729,5035,5334,5630,5930,6226,6523,6822,7120,7394,7656, 7902,8155,8403,8647,8870,9093,9289,9453,9587,9711,9827,9928,9989,10035,10058,10050,10009,9954,9900,9847, 9773,9677,9566,9440,9297,9137,8973,8810,8630,8424,8199,7942,7677,7399,7101,6802,6504,6189,5858,5511, 5168,4826,4487,4153,3822,3494,3160,2811,2452,2103,1757,1411,1053,691,329,-49,-434,-822,-1198,-1550, -1900,-2262,-2603,-2941,-3273,-3599,-3911,-4195,-4471,-4747,-5030,-5303,-5580,-5843,-6120,-6370,-6611,-6848,-7100,-7345, -7579,-7789,-7989,-8181,-8342,-8481,-8621,-8753,-8870,-8965,-9038,-9102,-9146,-9176,-9199,-9219,-9244,-9253,-9236,-9198, -9149,-9085,-9017,-8921,-8824,-8718,-8576,-8409,-8210,-8005,-7793,-7581,-7343,-7101,-6851,-6586,-6292,-6000,-5723,-5447, -5159,-4874,-4569,-4267,-3952,-3623,-3303,-3002,-2694,-2375,-2047,-1717,-1388,-1044,-703,-377,-65,248,579,911, 1232,1557,1875,2185,2489,2786,3093,3416,3740,4060,4377,4693,5003,5320,5630,5955,6284,6604,6911,7192, 7466,7737,7989,8228,8465,8690,8895,9061,9214,9360,9499,9625,9734,9840,9923,9981,10012,10025,10038,10029, 9998,9941,9870,9766,9629,9462,9300,9119,8934,8729,8502,8274,8024,7765,7500,7245,6994,6729,6443,6143, 5839,5523,5193,4857,4520,4173,3807,3431,3041,2648,2267,1881,1501,1131,763,389,10,-367,-715,-1058, -1403,-1747,-2088,-2430,-2786,-3147,-3488,-3825,-4161,-4497,-4833,-5163,-5484,-5806,-6118,-6400,-6663,-6916,-7175,-7418, -7646,-7868,-8084,-8278,-8460,-8629,-8807,-8987,-9155,-9309,-9454,-9584,-9697,-9783,-9866,-9941,-10005,-10048,-10059,-10044, -10014,-9959,-9883,-9807,-9722,-9632,-9514,-9371,-9212,-9055,-8878,-8698,-8508,-8313,-8108,-7864,-7601,-7328,-7052,-6769, -6473,-6175,-5861,-5542,-5199,-4852,-4509,-4179,-3861,-3531,-3202,-2880,-2546,-2208,-1879,-1565,-1263,-959,-639,-323, -1,325,663,980,1289,1592,1910,2230,2564,2889,3210,3534,3836,4133,4433,4742,5061,5378,5682,5981, 6275,6562,6843,7134,7428,7727,8002,8267,8511,8747,8966,9167,9367,9553,9714,9836,9926,10002,10063,10110, 10122,10147,10149,10129,10074,10007,9942,9867,9768,9664,9550,9413,9242,9046,8841,8633,8404,8160,7894,7618, 7325,7009,6685,6371,6064,5756,5432,5102,4771,4438,4095,3753,3416,3082,2743,2378,2005,1623,1242,856, 471,91,-274,-649,-1040,-1424,-1794,-2139,-2483,-2816,-3126,-3435,-3757,-4070,-4387,-4674,-4959,-5250,-5538,-5818, -6100,-6391,-6680,-6943,-7187,-7423,-7649,-7862,-8067,-8256,-8440,-8601,-8734,-8839,-8945,-9046,-9140,-9222,-9292,-9363, -9405,-9433,-9450,-9452,-9467,-9455,-9428,-9376,-9303,-9210,-9090,-8950,-8816,-8666,-8501,-8303,-8086,-7860,-7634,-7381, -7137,-6895,-6660,-6390,-6108,-5825,-5529,-5239,-4930,-4638,-4339,-4035,-3705,-3365,-3027,-2703,-2374,-2053,-1730,-1419, -1098,-760,-424,-111,194,491,802,1103,1406,1721,2038,2354,2656,2950,3257,3568,3883,4202,4529,4848, 5170,5470,5759,6054,6354,6648,6927,7190,7447,7678,7895,8105,8316,8523,8712,8882,9034,9179,9302,9409, 9509,9604,9682,9730,9738,9731,9700,9651,9578,9498,9404,9282,9130,8955,8787,8609,8413,8214,8020,7813, 7584,7343,7081,6819,6560,6283,5989,5689,5372,5037,4680,4323,3962,3615,3253,2890,2519,2155,1787,1421, 1071,728,390,48,-306,-658,-1000,-1357,-1703,-2061,-2395,-2743,-3097,-3457,-3794,-4132,-4455,-4777,-5077,-5359, -5643,-5925,-6200,-6452,-6685,-6914,-7134,-7344,-7547,-7758,-7974,-8168,-8347,-8514,-8679,-8830,-8970,-9106,-9231,-9335, -9415,-9460,-9499,-9522,-9526,-9523,-9501,-9470,-9415,-9341,-9248,-9145,-9053,-8946,-8820,-8684,-8533,-8360,-8168,-7960, -7751,-7536,-7306,-7051,-6780,-6493,-6198,-5893,-5584,-5285,-4993,-4686,-4372,-4047,-3730,-3422,-3104,-2798,-2502,-2211, -1898,-1579,-1262,-950,-644,-337,-24,274,587,902,1230,1547,1855,2162,2462,2765,3065,3375,3687,4001, 4302,4595,4897,5195,5502,5809,6118,6428,6737,7026,7305,7584,7867,8138,8399,8646,8869,9077,9251,9406, 9550,9694,9808,9899,9969,10024,10055,10064,10068,10075,10063,10030,9972,9888,9798,9684,9544,9403,9246,9075, 8866,8630,8386,8135,7860,7576,7297,7013,6719,6407,6085,5771,5457,5140,4824,4502,4163,3819,3460,3094, 2719,2359,1987,1601,1213,823,425,27,-367,-734,-1091,-1456,-1813,-2164,-2513,-2847,-3181,-3511,-3814,-4118, -4432,-4756,-5075,-5381,-5688,-5993,-6280,-6559,-6825,-7107,-7376,-7618,-7840,-8051,-8244,-8422,-8577,-8744,-8898,-9040, -9166,-9270,-9366,-9453,-9535,-9607,-9676,-9735,-9775,-9790,-9778,-9755,-9718,-9665,-9596,-9515,-9409,-9279,-9121,-8944, -8770,-8585,-8396,-8184,-7959,-7742,-7495,-7228,-6964,-6715,-6451,-6174,-5887,-5581,-5275,-4941,-4619,-4293,-3970,-3656, -3327,-2979,-2647,-2309,-1979,-1651,-1338,-1044,-726,-406,-84,229,543,852,1156,1455,1753,2069,2394,2717, 3034,3342,3659,3960,4263,4575,4894,5211,5525,5808,6085,6363,6639,6905,7171,7427,7687,7920,8138,8341, 8543,8745,8938,9100,9264,9401,9511,9595,9659,9721,9760,9775,9760,9729,9679,9595,9489,9384,9282,9161, 9016,8859,8695,8514,8316,8116,7916,7708,7477,7219,6947,6664,6370,6057,5743,5428,5096,4758,4396,4039, 3684,3334,2990,2644,2299,1961,1610,1255,902,558,213,-132,-490,-844,-1203,-1574,-1944,-2302,-2646,-2985, -3332,-3665,-3982,-4302,-4614,-4906,-5187,-5439,-5700,-5966,-6214,-6461,-6694,-6936,-7159,-7367,-7574,-7784,-7991,-8190, -8364,-8524,-8672,-8795,-8900,-8997,-9079,-9154,-9207,-9230,-9244,-9239,-9214,-9190,-9152,-9111,-9062,-8983,-8894,-8780, -8663,-8537,-8394,-8238,-8076,-7885,-7669,-7426,-7181,-6932,-6676,-6406,-6129,-5844,-5557,-5245,-4933,-4634,-4347,-4042, -3741,-3436,-3131,-2817,-2496,-2179,-1886,-1581,-1272,-955,-644,-326,-11,313,622,912,1212,1525,1833,2142, 2447,2750,3044,3339,3629,3919,4229,4540,4844,5151,5451,5751,6050,6344,6637,6942,7237,7519,7776,8027, 8271,8495,8709,8909,9099,9266,9408,9516,9623,9722,9804,9866,9923,9963,9978,9965,9936,9904,9855,9788, 9698,9585,9459,9291,9109,8914,8714,8494,8263,8008,7749,7476,7189,6903,6614,6335,6037,5726,5409,5089, 4761,4418,4072,3732,3376,3006,2624,2233,1842,1457,1066,679,299,-74,-454,-833,-1205,-1566,-1911,-2254, -2595,-2931,-3261,-3601,-3946,-4277,-4594,-4911,-5231,-5552,-5859,-6166,-6472,-6765,-7026,-7278,-7521,-7762,-7985,-8192, -8386,-8579,-8746,-8900,-9032,-9175,-9314,-9438,-9554,-9664,-9744,-9828,-9871,-9912,-9950,-9972,-9967,-9943,-9890,-9824, -9736,-9628,-9509,-9386,-9241,-9098,-8915,-8722,-8524,-8307,-8089,-7862,-7635,-7389,-7124,-6834,-6547,-6250,-5953,-5647, -5340,-5021,-4697,-4355,-4010,-3673,-3352,-3027,-2701,-2380,-2068,-1747,-1416,-1092,-785,-486,-181,128,434,746, 1063,1384,1697,1998,2296,2606,2920,3238,3557,3870,4185,4481,4779,5077,5380,5686,5988,6277,6561,6833, 7106,7366,7623,7888,8148,8386,8611,8818,9013,9194,9356,9510,9656,9773,9857,9911,9954,9975,9980,9964, 9943,9901,9840,9749,9633,9528,9415,9282,9139,8983,8810,8618,8400,8170,7940,7698,7431,7155,6864,6554, 6231,5899,5566,5240,4908,4570,4221,3878,3528,3180,2832,2485,2144,1804,1435,1074,705,328,-37,-406, -777,-1139,-1510,-1880,-2252,-2608,-2948,-3278,-3602,-3906,-4211,-4512,-4810,-5103,-5375,-5635,-5904,-6162,-6412,-6664, -6918,-7171,-7399,-7608,-7809,-8011,-8195,-8368,-8520,-8675,-8799,-8897,-8973,-9041,-9105,-9153,-9189,-9217,-9226,-9222, -9195,-9164,-9119,-9074,-9014,-8932,-8837,-8718,-8577,-8419,-8245,-8067,-7878,-7673,-7441,-7194,-6941,-6679,-6408,-6131, -5860,-5587,-5312,-5014,-4703,-4406,-4102,-3798,-3504,-3194,-2892,-2578,-2253,-1929,-1618,-1300,-988,-680,-376,-69, 249,568,871,1168,1464,1759,2059,2351,2658,2966,3262,3563,3849,4144,4444,4754,5056,5367,5668,5968, 6253,6534,6804,7086,7354,7609,7842,8074,8281,8468,8644,8809,8975,9126,9250,9346,9447,9510,9565,9610, 9649,9670,9662,9626,9577,9508,9417,9301,9178,9043,8888,8695,8488,8279,8064,7823,7584,7339,7091,6824, 6547,6254,5967,5674,5369,5058,4741,4407,4063,3701,3336,2966,2600,2230,1855,1469,1088,712,332,-38, -397,-752,-1100,-1459,-1814,-2161,-2507,-2848,-3187,-3516,-3850,-4186,-4528,-4854,-5181,-5496,-5805,-6104,-6383,-6658, -6934,-7199,-7441,-7662,-7876,-8086,-8275,-8453,-8635,-8813,-8978,-9124,-9247,-9378,-9498,-9604,-9693,-9778,-9847,-9892, -9897,-9898,-9887,-9862,-9803,-9750,-9661,-9569,-9447,-9309,-9163,-9007,-8847,-8674,-8473,-8275,-8057,-7821,-7569,-7311, -7056,-6795,-6500,-6197,-5887,-5572,-5243,-4916,-4587,-4275,-3953,-3620,-3280,-2952,-2632,-2310,-1992,-1681,-1382,-1072, -749,-425,-120,186,490,796,1091,1403,1715,2035,2347,2646,2946,3250,3549,3847,4151,4466,4772,5074, 5357,5648,5936,6232,6527,6807,7101,7372,7637,7892,8133,8384,8622,8841,9056,9247,9413,9558,9681,9795, 9898,9976,10029,10061,10078,10071,10044,10000,9960,9899,9830,9725,9612,9484,9342,9178,9015,8828,8636,8410, 8170,7902,7641,7356,7065,6766,6464,6146,5817,5484,5156,4818,4487,4152,3812,3471,3119,2762,2397,2032, 1667,1311,935,549,166,-214,-603,-984,-1357,-1709,-2068,-2425,-2770,-3107,-3438,-3761,-4074,-4375,-4662,-4961, -5263,-5552,-5834,-6113,-6389,-6648,-6904,-7145,-7398,-7640,-7861,-8061,-8253,-8421,-8580,-8713,-8840,-8968,-9081,-9160, -9231,-9287,-9336,-9370,-9391,-9413,-9427,-9415,-9377,-9319,-9255,-9181,-9089,-8978,-8854,-8713,-8545,-8356,-8145,-7933, -7713,-7493,-7249,-6999,-6739,-6460,-6178,-5892,-5612,-5333,-5047,-4743,-4428,-4126,-3801,-3475,-3158,-2854,-2543,-2222, -1902,-1581,-1267,-945,-627,-327,-36,260,575,872,1180,1476,1772,2067,2351,2636,2935,3240,3538,3846, 4138,4437,4725,5017,5303,5607,5900,6186,6465,6724,6974,7221,7462,7690,7915,8127,8324,8493,8649,8800, 8942,9078,9189,9288,9374,9431,9465,9481,9495,9493,9460,9402,9332,9234,9114,8969,8820,8677,8508,8318, 8120,7911,7686,7451,7213,6975,6728,6463,6185,5893,5597,5283,4963,4632,4299,3955,3606,3237,2868,2501, 2129,1761,1402,1043,681,323,-44,-400,-745,-1096,-1440,-1787,-2134,-2482,-2833,-3186,-3530,-3861,-4183,-4516, -4839,-5151,-5461,-5760,-6045,-6316,-6569,-6811,-7059,-7288,-7506,-7714,-7920,-8118,-8289,-8454,-8624,-8791,-8935,-9072, -9192,-9306,-9388,-9459,-9507,-9569,-9598,-9603,-9591,-9554,-9506,-9433,-9353,-9262,-9159,-9049,-8913,-8763,-8602,-8427, -8239,-8049,-7835,-7611,-7379,-7129,-6849,-6571,-6292,-6000,-5699,-5392,-5080,-4768,-4440,-4107,-3791,-3480,-3161,-2854, -2529,-2217,-1906,-1583,-1266,-971,-665,-363,-57,253,557,861,1172,1475,1766,2057,2352,2656,2957,3258, 3553,3850,4140,4423,4712,5015,5311,5607,5901,6184,6469,6752,7025,7301,7578,7845,8095,8335,8557,8777, 8973,9160,9333,9492,9623,9735,9816,9887,9951,9997,10011,10022,10014,9986,9930,9870,9796,9719,9609,9488, 9349,9194,9015,8812,8601,8376,8149,7897,7624,7339,7047,6736,6432,6115,5808,5487,5156,4827,4484,4143, 3798,3441,3094,2740,2371,1994,1616,1223,841,452,63,-320,-704,-1080,-1458,-1843,-2199,-2549,-2895,-3231, -3562,-3881,-4207,-4531,-4846,-5146,-5445,-5745,-6041,-6334,-6615,-6898,-7178,-7429,-7673,-7893,-8120,-8326,-8516,-8693, -8863,-9008,-9136,-9245,-9355,-9454,-9541,-9617,-9681,-9725,-9761,-9773,-9774,-9770,-9752,-9715,-9658,-9576,-9479,-9361, -9224,-9073,-8914,-8739,-8550,-8337,-8104,-7876,-7630,-7377,-7123,-6865,-6590,-6309,-6005,-5698,-5396,-5093,-4776,-4460, -4147,-3827,-3492,-3156,-2821,-2506,-2191,-1865,-1552,-1245,-920,-603,-291,7,297,598,899,1195,1494,1798, 2101,2398,2686,2973,3272,3569,3875,4182,4476,4776,5063,5352,5627,5911,6197,6479,6743,6994,7236,7462, 7691,7902,8114,8321,8507,8670,8825,8964,9089,9195,9292,9385,9450,9486,9496,9490,9469,9430,9366,9288, 9201,9093,8961,8805,8647,8490,8307,8123,7933,7721,7506,7258,7012,6760,6500,6220,5934,5629,5314,4984, 4643,4307,3967,3620,3276,2916,2560,2206,1843,1490,1140,799,461,110,-242,-599,-955,-1300,-1654,-2002, -2343,-2686,-3034,-3385,-3717,-4042,-4362,-4673,-4964,-5249,-5530,-5808,-6078,-6324,-6560,-6793,-7017,-7232,-7436,-7649, -7856,-8040,-8204,-8371,-8522,-8655,-8788,-8903,-9007,-9091,-9155,-9194,-9221,-9223,-9225,-9209,-9180,-9126,-9062,-8974, -8880,-8771,-8657,-8535,-8392,-8238,-8060,-7868,-7666,-7434,-7206,-6968,-6715,-6448,-6167,-5868,-5570,-5263,-4952,-4645, -4347,-4031,-3716,-3385,-3073,-2763,-2444,-2136,-1830,-1527,-1212,-891,-574,-271,40,339,638,935,1231,1542, 1848,2146,2433,2721,3011,3305,3588,3884,4176,4465,4754,5026,5307,5596,5880,6170,6453,6731,7007,7271, 7524,7769,8014,8261,8487,8695,8892,9072,9219,9362,9483,9607,9711,9778,9835,9881,9901,9911,9905,9885, 9857,9809,9728,9639,9536,9414,9272,9114,8944,8761,8546,8319,8075,7823,7567,7288,7009,6729,6427,6120, 5804,5493,5177,4854,4523,4195,3849,3490,3130,2758,2392,2022,1646,1261,874,481,99,-291,-678,-1041, -1409,-1773,-2133,-2492,-2830,-3174,-3505,-3839,-4158,-4470,-4798,-5124,-5440,-5745,-6043,-6342,-6637,-6905,-7176,-7439, -7687,-7927,-8141,-8340,-8535,-8709,-8869,-9027,-9173,-9298,-9417,-9512,-9607,-9694,-9756,-9810,-9860,-9896,-9902,-9891, -9861,-9813,-9760,-9673,-9583,-9465,-9336,-9178,-9009,-8822,-8627,-8426,-8212,-7980,-7738,-7484,-7220,-6942,-6665,-6385, -6097,-5792,-5477,-5158,-4839,-4511,-4179,-3850,-3531,-3208,-2874,-2539,-2212,-1895,-1572,-1257,-954,-651,-343,-35, 277,573,870,1165,1457,1746,2043,2338,2641,2938,3225,3517,3802,4086,4384,4670,4967,5262,5550,5820, 6096,6363,6627,6886,7141,7389,7621,7848,8054,8258,8459,8646,8817,8978,9116,9240,9335,9424,9488,9549, 9578,9590,9573,9546,9498,9422,9334,9245,9141,9018,8877,8722,8558,8385,8190,7997,7796,7578,7334,7075, 6803,6529,6236,5935,5623,5307,4980,4640,4289,3944,3601,3251,2906,2559,2212,1863,1496,1148,791,442, 88,-272,-633,-999,-1364,-1734,-2098,-2459,-2798,-3144,-3483,-3824,-4154,-4468,-4781,-5073,-5357,-5628,-5903,-6169, -6433,-6679,-6929,-7165,-7390,-7594,-7821,-8032,-8229,-8413,-8575,-8735,-8867,-8988,-9088,-9179,-9263,-9326,-9363,-9382, -9389,-9379,-9359,-9323,-9283,-9231,-9156,-9064,-8963,-8839,-8703,-8563,-8401,-8229,-8033,-7822,-7590,-7339,-7087,-6826, -6550,-6271,-5985,-5678,-5373,-5060,-4744,-4430,-4121,-3815,-3493,-3172,-2855,-2531,-2203,-1881,-1570,-1264,-945,-632, -316,0,308,619,922,1209,1505,1807,2109,2407,2703,2991,3282,3563,3844,4134,4434,4723,5019,5302, 5586,5866,6143,6422,6702,6976,7248,7498,7736,7967,8192,8402,8601,8781,8955,9106,9232,9348,9445,9541, 9615,9673,9713,9748,9748,9732,9708,9667,9615,9544,9444,9331,9201,9046,8876,8684,8496,8289,8060,7821, 7567,7309,7032,6749,6476,6191,5899,5595,5274,4959,4627,4288,3945,3596,3244,2883,2502,2121,1746,1360, 982,604,224,-145,-523,-894,-1261,-1623,-1970,-2316,-2655,-3006,-3342,-3683,-4015,-4355,-4679,-4995,-5317,-5637, -5941,-6244,-6535,-6827,-7095,-7338,-7579,-7823,-8040,-8253,-8442,-8630,-8801,-8951,-9093,-9232,-9369,-9482,-9586,-9676, -9754,-9815,-9853,-9888,-9904,-9905,-9885,-9841,-9782,-9701,-9602,-9486,-9355,-9212,-9057,-8878,-8690,-8485,-8266,-8038, -7802,-7558,-7306,-7038,-6760,-6456,-6152,-5850,-5543,-5222,-4901,-4573,-4241,-3901,-3552,-3225,-2906,-2580,-2257,-1932, -1609,-1301,-974,-658,-360,-63,242,549,856,1148,1452,1753,2050,2338,2629,2923,3220,3516,3805,4102, 4393,4676,4965,5246,5538,5822,6098,6369,6633,6891,7147,7392,7635,7873,8103,8314,8514,8694,8876,9037, 9181,9314,9430,9524,9597,9632,9666,9685,9684,9659,9624,9567,9496,9398,9295,9184,9063,8919,8768,8600, 8424,8226,8006,7779,7544,7297,7033,6746,6458,6154,5837,5516,5192,4864,4529,4191,3846,3502,3156,2810, 2459,2112,1764,1405,1043,674,300,-67,-437,-809,-1177,-1550,-1917,-2285,-2647,-3003,-3337,-3675,-3993,-4319, -4627,-4927,-5228,-5526,-5796,-6063,-6335,-6601,-6865,-7114,-7368,-7609,-7835,-8041,-8246,-8439,-8623,-8786,-8937,-9073, -9183,-9280,-9358,-9422,-9484,-9524,-9546,-9562,-9558,-9540,-9503,-9452,-9397,-9329,-9246,-9139,-9017,-8872,-8715,-8536, -8344,-8142,-7921,-7686,-7435,-7163,-6891,-6605,-6320,-6025,-5727,-5428,-5118,-4795,-4475,-4155,-3838,-3523,-3194,-2875, -2554,-2217,-1885,-1555,-1243,-934,-609,-292,10,327,643,955,1247,1540,1828,2122,2411,2702,2990,3284, 3570,3854,4136,4418,4704,4989,5283,5563,5849,6120,6386,6652,6916,7170,7425,7658,7879,8090,8285,8464, 8638,8796,8952,9088,9204,9297,9380,9452,9506,9549,9583,9597,9585,9544,9496,9426,9340,9240,9124,8989, 8834,8662,8461,8262,8050,7834,7606,7371,7122,6868,6597,6318,6037,5758,5461,5155,4828,4502,4161,3809, 3455,3102,2735,2370,1998,1625,1253,880,506,144,-211,-563,-921,-1276,-1628,-1976,-2326,-2665,-3012,-3341, -3680,-4015,-4356,-4684,-5008,-5319,-5630,-5924,-6207,-6483,-6757,-7025,-7263,-7488,-7709,-7914,-8110,-8299,-8478,-8656, -8816,-8954,-9092,-9221,-9326,-9432,-9516,-9589,-9646,-9676,-9688,-9685,-9664,-9627,-9568,-9499,-9412,-9302,-9173,-9033, -8876,-8719,-8543,-8349,-8149,-7934,-7697,-7458,-7201,-6933,-6665,-6385,-6089,-5782,-5459,-5140,-4811,-4485,-4154,-3835, -3502,-3172,-2836,-2504,-2181,-1858,-1536,-1225,-925,-612,-300,19,316,612,915,1211,1503,1802,2099,2405, 2696,2986,3270,3563,3846,4130,4422,4719,5001,5281,5555,5831,6106,6371,6639,6912,7163,7416,7661,7889, 8114,8332,8539,8738,8918,9071,9227,9347,9453,9546,9626,9685,9724,9739,9741,9720,9690,9637,9581,9510, 9422,9312,9193,9061,8908,8746,8568,8378,8180,7948,7702,7449,7178,6903,6614,6314,6019,5698,5370,5047, 4713,4387,4048,3716,3376,3032,2672,2321,1961,1602,1237,868,489,115,-267,-644,-1025,-1398,-1764,-2126, -2483,-2839,-3183,-3519,-3842,-4174,-4483,-4789,-5087,-5386,-5689,-5980,-6261,-6538,-6811,-7077,-7332,-7580,-7826,-8054, -8270,-8461,-8641,-8816,-8973,-9100,-9228,-9342,-9434,-9517,-9575,-9627,-9671,-9692,-9706,-9709,-9701,-9667,-9616,-9551, -9473,-9378,-9267,-9138,-8985,-8816,-8624,-8420,-8198,-7969,-7725,-7482,-7210,-6937,-6650,-6358,-6059,-5752,-5444,-5143, -4828,-4501,-4177,-3848,-3521,-3190,-2863,-2544,-2216,-1884,-1559,-1231,-911,-598,-289,19,317,617,921,1218, 1514,1802,2088,2380,2656,2944,3229,3527,3813,4096,4377,4663,4941,5229,5507,5793,6068,6338,6588,6846, 7086,7328,7553,7774,7986,8181,8354,8525,8676,8820,8957,9073,9183,9265,9337,9388,9421,9439,9453,9438, 9406,9348,9272,9180,9068,8933,8800,8650,8486,8301,8105,7901,7690,7467,7237,6995,6753,6491,6205,5921, 5636,5329,5024,4701,4373,4032,3684,3325,2977,2614,2259,1902,1542,1189,831,473,119,-236,-579,-926, -1272,-1617,-1967,-2317,-2668,-3012,-3354,-3686,-4014,-4343,-4671,-4992,-5293,-5595,-5880,-6150,-6411,-6665,-6914,-7157, -7384,-7590,-7803,-7995,-8183,-8357,-8537,-8706,-8858,-8994,-9119,-9227,-9319,-9392,-9452,-9505,-9536,-9537,-9522,-9495, -9439,-9383,-9298,-9210,-9108,-8988,-8843,-8699,-8522,-8352,-8158,-7957,-7743,-7506,-7256,-6994,-6709,-6426,-6132,-5827, -5520,-5197,-4873,-4548,-4206,-3873,-3542,-3216,-2892,-2564,-2228,-1911,-1582,-1249,-930,-621,-308,-1,317,626, 937,1246,1547,1846,2140,2430,2730,3026,3316,3607,3896,4178,4461,4732,5021,5302,5582,5860,6128,6397, 6660,6916,7169,7431,7671,7914,8142,8347,8545,8736,8914,9076,9224,9354,9465,9550,9621,9673,9718,9743, 9755,9747,9728,9684,9626,9555,9470,9383,9268,9137,8994,8829,8652,8448,8241,8024,7786,7533,7266,6993, 6704,6406,6103,5801,5499,5179,4860,4529,4200,3862,3519,3173,2826,2470,2109,1734,1359,983,604,215, -153,-540,-909,-1286,-1650,-2022,-2374,-2725,-3055,-3399,-3733,-4055,-4377,-4698,-5012,-5318,-5615,-5922,-6218,-6504, -6790,-7064,-7338,-7589,-7828,-8054,-8273,-8474,-8668,-8835,-9001,-9147,-9269,-9382,-9490,-9585,-9662,-9731,-9781,-9824, -9847,-9852,-9847,-9823,-9788,-9736,-9656,-9566,-9448,-9312,-9158,-8992,-8807,-8613,-8391,-8163,-7918,-7662,-7400,-7131, -6846,-6562,-6270,-5972,-5654,-5327,-5002,-4685,-4344,-4018,-3684,-3351,-3006,-2655,-2320,-1993,-1662,-1336,-1015,-693, -373,-55,257,559,856,1157,1455,1750,2045,2336,2629,2920,3203,3490,3776,4067,4362,4649,4932,5219, 5491,5767,6036,6312,6577,6833,7084,7322,7540,7772,7980,8180,8377,8558,8727,8880,9016,9147,9257,9350, 9433,9503,9545,9574,9572,9556,9527,9483,9410,9324,9224,9110,8971,8825,8667,8504,8322,8131,7930,7715, 7489,7245,7004,6747,6481,6196,5897,5592,5278,4942,4608,4267,3933,3583,3226,2869,2512,2152,1798,1441, 1086,736,385,21,-334,-697,-1051,-1411,-1765,-2122,-2478,-2832,-3187,-3541,-3878,-4208,-4528,-4844,-5156,-5457, -5748,-6032,-6305,-6561,-6815,-7052,-7296,-7525,-7746,-7961,-8171,-8370,-8546,-8718,-8880,-9035,-9169,-9286,-9392,-9478, -9540,-9581,-9607,-9627,-9628,-9604,-9572,-9523,-9457,-9373,-9270,-9169,-9047,-8915,-8766,-8597,-8409,-8212,-7997,-7766, -7527,-7267,-7003,-6713,-6415,-6102,-5790,-5469,-5154,-4824,-4495,-4171,-3826,-3490,-3156,-2833,-2504,-2173,-1845,-1522, -1192,-860,-538,-219,95,411,722,1032,1339,1651,1954,2250,2541,2823,3115,3400,3689,3976,4262,4545, 4816,5087,5364,5637,5916,6187,6452,6712,6974,7214,7454,7694,7923,8149,8346,8535,8705,8866,9003,9134, 9244,9351,9429,9496,9535,9569,9590,9593,9574,9557,9519,9458,9375,9279,9173,9049,8906,8751,8579,8391, 8183,7952,7716,7474,7221,6954,6689,6408,6117,5813,5510,5212,4900,4582,4260,3932,3593,3241,2882,2524, 2165,1792,1426,1047,674,290,-101,-470,-838,-1199,-1559,-1908,-2266,-2612,-2957,-3289,-3616,-3948,-4267,-4585, -4907,-5223,-5541,-5848,-6143,-6440,-6723,-6988,-7265,-7513,-7765,-7991,-8202,-8400,-8591,-8757,-8922,-9070,-9217,-9344, -9452,-9549,-9635,-9713,-9777,-9825,-9862,-9886,-9882,-9862,-9827,-9768,-9699,-9610,-9499,-9371,-9225,-9056,-8870,-8669, -8465,-8242,-8015,-7767,-7514,-7242,-6963,-6669,-6376,-6077,-5768,-5450,-5119,-4781,-4447,-4106,-3764,-3418,-3080,-2741, -2397,-2047,-1714,-1385,-1053,-729,-414,-106,210,531,841,1137,1444,1739,2039,2333,2626,2923,3230,3517, 3809,4101,4393,4679,4963,5246,5539,5818,6089,6356,6614,6867,7119,7364,7600,7832,8046,8255,8445,8631, 8807,8973,9127,9262,9374,9477,9558,9613,9660,9694,9704,9692,9658,9611,9544,9462,9364,9256,9140,9001, 8853,8690,8517,8329,8133,7921,7706,7475,7222,6956,6689,6397,6098,5788,5476,5154,4823,4484,4135,3792, 3450,3099,2748,2396,2049,1692,1338,973,623,259,-105,-468,-835,-1209,-1567,-1940,-2300,-2657,-3011,-3366, -3706,-4043,-4368,-4690,-5000,-5299,-5592,-5875,-6155,-6436,-6702,-6957,-7208,-7454,-7699,-7918,-8143,-8356,-8562,-8746, -8920,-9074,-9223,-9345,-9452,-9550,-9635,-9691,-9732,-9752,-9767,-9764,-9745,-9710,-9674,-9605,-9541,-9441,-9333,-9213, -9074,-8915,-8744,-8551,-8347,-8125,-7878,-7615,-7350,-7074,-6782,-6482,-6164,-5847,-5521,-5204,-4867,-4532,-4210,-3877, -3535,-3193,-2855,-2523,-2183,-1851,-1520,-1194,-856,-530,-196,125,443,760,1075,1374,1683,1986,2290,2582, 2864,3156,3443,3721,4002,4294,4575,4862,5131,5408,5684,5950,6225,6488,6751,7008,7256,7492,7716,7931, 8130,8333,8513,8678,8831,8962,9083,9184,9273,9360,9424,9472,9502,9520,9520,9496,9468,9423,9361,9281, 9179,9061,8922,8771,8596,8420,8229,8020,7797,7558,7319,7065,6803,6538,6269,5994,5705,5403,5097,4785, 4469,4139,3807,3463,3123,2771,2398,2032,1661,1291,925,557,192,-171,-540,-898,-1256,-1603,-1945,-2282, -2622,-2961,-3297,-3629,-3957,-4287,-4608,-4926,-5244,-5558,-5861,-6161,-6444,-6716,-6978,-7231,-7472,-7709,-7924,-8125, -8314,-8500,-8671,-8821,-8970,-9106,-9245,-9360,-9458,-9548,-9621,-9675,-9718,-9739,-9756,-9754,-9716,-9667,-9597,-9510, -9409,-9280,-9147,-8996,-8832,-8643,-8441,-8226,-8012,-7775,-7531,-7276,-7009,-6727,-6436,-6126,-5810,-5492,-5174,-4845, -4509,-4166,-3820,-3466,-3119,-2778,-2438,-2108,-1766,-1429,-1103,-776,-447,-124,190,492,801,1116,1423,1722, 2041,2340,2636,2924,3221,3514,3808,4104,4389,4676,4965,5245,5519,5794,6071,6343,6609,6864,7110,7354, 7585,7810,8038,8257,8459,8652,8822,8990,9138,9269,9395,9496,9581,9653,9698,9719,9727,9725,9705,9659, 9600,9534,9447,9340,9221,9091,8955,8804,8634,8461,8264,8055,7826,7585,7344,7084,6805,6521,6225,5917, 5604,5276,4949,4624,4284,3949,3608,3263,2920,2561,2210,1860,1507,1148,777,408,33,-333,-704,-1077, -1450,-1820,-2185,-2551,-2908,-3257,-3599,-3930,-4250,-4574,-4883,-5190,-5490,-5785,-6068,-6354,-6628,-6905,-7163,-7419, -7669,-7913,-8147,-8361,-8562,-8759,-8936,-9098,-9246,-9384,-9496,-9593,-9669,-9740,-9794,-9838,-9865,-9873,-9872,-9849, -9812,-9760,-9701,-9621,-9528,-9412,-9273,-9117,-8951,-8762,-8564,-8345,-8108,-7854,-7590,-7311,-7016,-6719,-6412,-6101, -5786,-5461,-5133,-4799,-4461,-4122,-3788,-3441,-3104,-2760,-2421,-2076,-1728,-1380,-1054,-718,-388,-62,265,583, 899,1209,1516,1814,2116,2408,2710,3002,3283,3577,3866,4145,4426,4713,5000,5286,5561,5846,6116,6379, 6639,6898,7152,7395,7629,7847,8056,8252,8439,8608,8768,8918,9058,9176,9277,9359,9443,9506,9548,9576, 9593,9583,9565,9511,9454,9378,9286,9173,9042,8904,8747,8565,8372,8174,7967,7754,7523,7282,7038,6779, 6505,6236,5951,5665,5374,5048,4719,4403,4056,3718,3365,3019,2659,2295,1927,1568,1198,839,476,120, -234,-589,-947,-1294,-1644,-1985,-2331,-2673,-3009,-3351,-3689,-4018,-4361,-4684,-4997,-5308,-5612,-5911,-6195,-6475, -6743,-7004,-7244,-7466,-7684,-7901,-8110,-8294,-8484,-8660,-8823,-8970,-9110,-9235,-9354,-9462,-9544,-9617,-9667,-9698, -9709,-9708,-9690,-9648,-9590,-9516,-9416,-9312,-9188,-9045,-8896,-8733,-8553,-8361,-8151,-7925,-7685,-7438,-7175,-6900, -6616,-6319,-6010,-5680,-5353,-5021,-4689,-4340,-3998,-3651,-3309,-2957,-2611,-2267,-1934,-1599,-1267,-930,-608,-277, 53,373,690,1000,1314,1631,1933,2238,2548,2849,3148,3439,3726,4025,4313,4599,4881,5168,5444,5716, 5985,6255,6515,6780,7031,7276,7519,7750,7967,8184,8390,8575,8766,8928,9080,9211,9327,9428,9512,9575, 9629,9665,9675,9665,9646,9609,9562,9489,9415,9330,9222,9098,8960,8806,8647,8466,8274,8073,7851,7607, 7357,7090,6821,6541,6246,5953,5640,5328,5005,4672,4350,4022,3684,3351,3004,2659,2306,1948,1588,1231, 859,500,125,-254,-633,-1004,-1374,-1739,-2103,-2455,-2805,-3154,-3492,-3829,-4153,-4471,-4785,-5094,-5391,-5696, -5993,-6290,-6577,-6852,-7125,-7387,-7638,-7888,-8119,-8356,-8557,-8744,-8926,-9092,-9237,-9374,-9496,-9611,-9703,-9772, -9835,-9889,-9919,-9947,-9955,-9954,-9936,-9894,-9830,-9762,-9667,-9566,-9434,-9284,-9126,-8938,-8738,-8518,-8284,-8032, -7778,-7507,-7226,-6936,-6635,-6319,-6004,-5688,-5361,-5032,-4693,-4350,-4004,-3655,-3309,-2951,-2607,-2259,-1915,-1567, -1223,-875,-551,-213,107,426,747,1057,1370,1687,1989,2286,2584,2881,3172,3459,3754,4056,4341,4633, 4919,5204,5495,5764,6044,6329,6593,6853,7102,7345,7582,7804,8029,8234,8425,8608,8779,8931,9070,9200, 9322,9426,9512,9577,9639,9673,9692,9688,9676,9644,9593,9506,9418,9315,9195,9052,8901,8741,8569,8369, 8170,7963,7744,7508,7279,7027,6774,6500,6211,5919,5618,5308,4986,4656,4327,3986,3630,3281,2920,2567, 2211,1853,1496,1135,778,422,62,-290,-642,-997,-1352,-1700,-2060,-2409,-2758,-3106,-3449,-3791,-4121,-4452, -4783,-5098,-5400,-5704,-5991,-6272,-6538,-6794,-7053,-7294,-7523,-7748,-7960,-8169,-8365,-8550,-8735,-8910,-9066,-9205, -9326,-9443,-9544,-9618,-9687,-9735,-9767,-9771,-9762,-9734,-9695,-9634,-9558,-9470,-9365,-9244,-9112,-8960,-8796,-8614, -8423,-8215,-7987,-7749,-7489,-7221,-6929,-6639,-6335,-6024,-5701,-5365,-5028,-4685,-4342,-3997,-3652,-3312,-2973,-2620, -2284,-1940,-1601,-1264,-930,-601,-274,57,389,714,1034,1348,1672,1977,2277,2590,2889,3195,3484,3778, 4063,4349,4629,4908,5192,5474,5749,6021,6282,6544,6798,7053,7300,7545,7779,7997,8203,8404,8586,8754, 8916,9051,9188,9294,9380,9453,9508,9547,9577,9590,9589,9556,9521,9469,9400,9313,9219,9113,8990,8843, 8683,8510,8317,8105,7899,7669,7431,7173,6899,6624,6339,6045,5749,5448,5146,4828,4508,4177,3851,3512, 3175,2835,2482,2127,1756,1394,1023,652,281,-92,-463,-836,-1194,-1568,-1926,-2282,-2630,-2962,-3303,-3628, -3962,-4280,-4601,-4913,-5225,-5526,-5821,-6119,-6416,-6705,-6982,-7252,-7512,-7751,-7983,-8209,-8424,-8621,-8803,-8973, -9125,-9265,-9388,-9508,-9606,-9706,-9790,-9845,-9894,-9934,-9952,-9954,-9938,-9918,-9872,-9809,-9715,-9616,-9489,-9349, -9187,-9010,-8820,-8615,-8380,-8144,-7887,-7632,-7357,-7080,-6782,-6483,-6169,-5853,-5522,-5184,-4851,-4506,-4161,-3808, -3450,-3101,-2741,-2375,-2028,-1677,-1344,-996,-648,-318,21,350,674,992,1300,1616,1929,2244,2544,2852, 3155,3462,3754,4051,4350,4652,4941,5240,5524,5810,6094,6364,6638,6905,7164,7420,7654,7884,8109,8315, 8519,8720,8897,9064,9218,9356,9480,9582,9679,9762,9815,9858,9888,9887,9869,9835,9785,9714,9629,9522, 9416,9279,9128,8969,8796,8622,8413,8215,7997,7774,7530,7282,7016,6744,6463,6168,5866,5547,5224,4888, 4545,4202,3861,3506,3151,2795,2434,2081,1718,1361,1004,642,284,-74,-436,-798,-1173,-1529,-1888,-2251, -2602,-2958,-3316,-3657,-3999,-4331,-4651,-4971,-5285,-5578,-5879,-6163,-6450,-6714,-6970,-7223,-7474,-7712,-7942,-8169, -8382,-8585,-8777,-8950,-9123,-9274,-9413,-9531,-9643,-9728,-9797,-9847,-9885,-9910,-9915,-9900,-9869,-9827,-9768,-9689, -9604,-9506,-9382,-9249,-9096,-8928,-8743,-8540,-8321,-8088,-7835,-7569,-7287,-6997,-6685,-6373,-6049,-5721,-5385,-5047, -4699,-4354,-4004,-3653,-3306,-2960,-2607,-2259,-1916,-1576,-1233,-880,-539,-212,126,458,788,1113,1429,1748, 2069,2377,2676,2984,3279,3577,3869,4162,4450,4740,5016,5302,5579,5858,6134,6402,6667,6928,7174,7417, 7656,7882,8101,8301,8492,8670,8824,8965,9099,9215,9317,9397,9467,9514,9551,9572,9575,9569,9541,9500, 9445,9374,9279,9172,9052,8915,8759,8591,8401,8207,7989,7758,7529,7278,7026,6749,6478,6193,5906,5604, 5300,4996,4686,4367,4037,3698,3362,3011,2657,2304,1945,1577,1208,832,465,95,-277,-639,-1005,-1359, -1716,-2067,-2410,-2758,-3090,-3420,-3755,-4074,-4399,-4722,-5034,-5355,-5663,-5961,-6258,-6545,-6826,-7098,-7357,-7607, -7850,-8067,-8276,-8472,-8663,-8843,-9005,-9156,-9299,-9424,-9535,-9635,-9727,-9803,-9870,-9913,-9950,-9961,-9956,-9934, -9896,-9844,-9774,-9666,-9564,-9428,-9272,-9107,-8921,-8726,-8518,-8290,-8058,-7804,-7538,-7264,-6975,-6680,-6375,-6064, -5740,-5411,-5064,-4712,-4363,-4011,-3657,-3299,-2941,-2587,-2224,-1869,-1517,-1169,-830,-490,-150,175,512,839, 1170,1488,1804,2122,2436,2739,3051,3366,3671,3977,4276,4576,4869,5164,5458,5750,6037,6315,6585,6849, 7110,7367,7610,7853,8077,8304,8506,8704,8890,9065,9220,9374,9502,9620,9714,9795,9849,9900,9921,9939, 9926,9895,9847,9779,9694,9614,9496,9370,9242,9083,8924,8738,8545,8352,8136,7908,7681,7432,7171,6890, 6600,6304,6004,5685,5370,5037,4705,4356,4013,3665,3321,2963,2614,2257,1905,1541,1177,818,461,92, -272,-643,-1015,-1381,-1755,-2121,-2483,-2840,-3188,-3536,-3875,-4213,-4534,-4853,-5161,-5461,-5765,-6043,-6323,-6606, -6878,-7138,-7384,-7635,-7876,-8106,-8328,-8544,-8745,-8933,-9098,-9258,-9402,-9520,-9637,-9726,-9809,-9872,-9916,-9940, -9956,-9959,-9941,-9910,-9863,-9806,-9728,-9628,-9516,-9389,-9241,-9078,-8901,-8705,-8490,-8251,-8003,-7740,-7456,-7174, -6872,-6563,-6242,-5912,-5583,-5247,-4898,-4561,-4210,-3862,-3511,-3154,-2806,-2452,-2095,-1745,-1394,-1051,-703,-354, -11,319,652,988,1313,1636,1948,2266,2577,2880,3183,3483,3776,4077,4362,4658,4954,5242,5525,5805, 6084,6359,6635,6902,7162,7417,7661,7896,8120,8330,8528,8711,8886,9045,9189,9313,9423,9518,9601,9668, 9718,9760,9776,9782,9762,9731,9686,9614,9539,9441,9322,9191,9038,8875,8693,8496,8293,8078,7838,7598, 7355,7096,6830,6550,6275,5985,5683,5378,5064,4738,4418,4079,3735,3386,3033,2665,2306,1933,1570,1195, 826,457,97,-279,-641,-1000,-1358,-1708,-2058,-2404,-2744,-3089,-3423,-3763,-4090,-4425,-4744,-5067,-5383,-5696, -6002,-6287,-6575,-6848,-7118,-7369,-7611,-7843,-8067,-8269,-8469,-8656,-8837,-9003,-9152,-9301,-9433,-9557,-9660,-9745, -9826,-9895,-9934,-9961,-9975,-9964,-9940,-9885,-9819,-9738,-9640,-9521,-9394,-9243,-9079,-8898,-8700,-8494,-8270,-8038, -7788,-7532,-7259,-6968,-6667,-6358,-6039,-5714,-5381,-5037,-4684,-4335,-3974,-3614,-3256,-2897,-2545,-2193,-1833,-1483, -1134,-792,-448,-111,229,551,885,1217,1554,1873,2190,2508,2824,3134,3447,3755,4062,4371,4669,4959, 5257,5550,5832,6119,6402,6672,6935,7190,7441,7689,7924,8155,8371,8582,8771,8953,9116,9269,9410,9534, 9635,9727,9787,9835,9862,9875,9865,9839,9805,9743,9680,9587,9481,9368,9237,9101,8949,8779,8598,8394, 8188,7963,7724,7474,7218,6942,6662,6356,6051,5743,5422,5091,4766,4428,4091,3746,3400,3047,2696,2340, 1991,1634,1274,902,537,169,-205,-578,-947,-1322,-1690,-2058,-2423,-2779,-3127,-3477,-3809,-4143,-4467,-4786, -5100,-5407,-5709,-6010,-6290,-6576,-6852,-7123,-7392,-7653,-7903,-8138,-8370,-8578,-8780,-8972,-9151,-9315,-9457,-9591, -9712,-9802,-9889,-9960,-10018,-10064,-10089,-10099,-10102,-10079,-10040,-9994,-9928,-9849,-9751,-9629,-9500,-9335,-9161,-8967, -8759,-8531,-8290,-8026,-7755,-7468,-7170,-6868,-6555,-6237,-5910,-5571,-5235,-4882,-4534,-4184,-3827,-3476,-3115,-2754, -2392,-2034,-1665,-1313,-961,-617,-268,78,421,750,1093,1415,1738,2053,2367,2680,2998,3304,3609,3916, 4219,4514,4812,5113,5416,5712,6003,6283,6568,6844,7111,7372,7625,7875,8110,8328,8535,8730,8910,9079, 9239,9382,9506,9618,9713,9793,9855,9902,9939,9955,9949,9933,9891,9831,9752,9661,9551,9428,9284,9127, 8952,8760,8561,8348,8127,7900,7654,7405,7142,6873,6592,6303,6007,5706,5385,5068,4735,4395,4050,3694, 3338,2982,2615,2248,1879,1508,1138,773,402,42,-319,-680,-1043,-1397,-1752,-2110,-2462,-2809,-3152,-3503, -3839,-4183,-4514,-4845,-5166,-5483,-5784,-6094,-6374,-6658,-6926,-7187,-7429,-7668,-7892,-8123,-8335,-8530,-8720,-8908, -9073,-9234,-9375,-9516,-9638,-9742,-9837,-9907,-9967,-10008,-10023,-10022,-10010,-9978,-9926,-9860,-9772,-9672,-9557,-9421, -9273,-9113,-8929,-8738,-8533,-8311,-8073,-7817,-7556,-7274,-6982,-6676,-6361,-6033,-5697,-5351,-5006,-4653,-4298,-3940, -3581,-3226,-2864,-2505,-2156,-1801,-1442,-1096,-750,-403,-58,287,622,955,1291,1627,1956,2283,2607,2923, 3243,3553,3860,4167,4478,4777,5072,5371,5659,5944,6228,6502,6779,7042,7302,7555,7805,8031,8259,8475, 8680,8874,9048,9211,9354,9491,9601,9695,9769,9829,9866,9884,9890,9880,9842,9808,9744,9673,9579,9478, 9363,9223,9073,8919,8739,8550,8343,8124,7884,7636,7377,7112,6824,6541,6236,5927,5615,5303,4970,4641, 4307,3982,3633,3287,2938,2588,2224,1860,1499,1134,765,383,6,-366,-740,-1115,-1485,-1848,-2211,-2565, -2924,-3262,-3605,-3934,-4261,-4584,-4895,-5209,-5512,-5818,-6117,-6410,-6690,-6967,-7239,-7508,-7766,-8006,-8238,-8466, -8667,-8859,-9041,-9206,-9360,-9496,-9620,-9734,-9825,-9908,-9971,-10027,-10074,-10100,-10103,-10105,-10083,-10046,-9987,-9911, -9822,-9711,-9586,-9441,-9275,-9084,-8879,-8657,-8426,-8182,-7929,-7649,-7366,-7065,-6764,-6446,-6127,-5796,-5469,-5125, -4785,-4429,-4070,-3709,-3352,-2993,-2628,-2263,-1906,-1542,-1178,-823,-473,-130,219,558,889,1228,1563,1884, 2208,2521,2839,3152,3466,3776,4091,4402,4713,5009,5313,5617,5914,6211,6505,6786,7066,7333,7591,7838, 8081,8309,8534,8737,8929,9114,9279,9431,9571,9695,9805,9903,9974,10035,10073,10095,10107,10089,10057,10010, 9937,9850,9739,9616,9479,9329,9167,8987,8793,8589,8370,8145,7915,7671,7413,7150,6873,6585,6288,5979, 5660,5342,5007,4665,4317,3968,3608,3240,2881,2514,2149,1787,1418,1055,686,316,-51,-402,-771,-1127, -1494,-1851,-2213,-2572,-2932,-3279,-3627,-3970,-4309,-4634,-4966,-5285,-5597,-5896,-6186,-6472,-6744,-7008,-7267,-7518, -7758,-7986,-8209,-8421,-8625,-8819,-9003,-9182,-9343,-9483,-9607,-9735,-9828,-9911,-9978,-10036,-10063,-10080,-10067,-10047, -10012,-9959,-9894,-9805,-9710,-9596,-9462,-9313,-9154,-8968,-8780,-8566,-8342,-8096,-7841,-7565,-7284,-6976,-6665,-6350, -6023,-5682,-5332,-4979,-4629,-4274,-3921,-3564,-3210,-2849,-2494,-2135,-1783,-1426,-1074,-723,-377,-30,314,665, 999,1339,1675,2008,2330,2654,2970,3293,3602,3913,4219,4520,4822,5117,5412,5709,5996,6281,6559,6833, 7105,7363,7615,7867,8100,8325,8533,8730,8917,9091,9250,9388,9513,9607,9701,9764,9822,9856,9875,9879, 9867,9832,9791,9725,9649,9557,9451,9327,9194,9035,8864,8678,8479,8263,8035,7788,7545,7275,6998,6716, 6426,6126,5824,5512,5198,4878,4546,4219,3878,3538,3185,2833,2477,2116,1744,1378,1005,633,254,-124, -495,-864,-1238,-1594,-1958,-2314,-2657,-3006,-3338,-3670,-4003,-4327,-4650,-4966,-5275,-5588,-5895,-6193,-6492,-6778, -7047,-7321,-7580,-7832,-8066,-8285,-8502,-8702,-8884,-9055,-9214,-9371,-9499,-9625,-9730,-9834,-9919,-9983,-10037,-10080, -10110,-10116,-10106,-10081,-10041,-9978,-9894,-9794,-9674,-9542,-9387,-9215,-9025,-8821,-8596,-8364,-8117,-7858,-7589,-7308, -7017,-6710,-6400,-6077,-5746,-5410,-5062,-4714,-4363,-3998,-3638,-3278,-2915,-2544,-2180,-1821,-1467,-1104,-751,-402, -54,292,634,967,1299,1634,1962,2291,2611,2928,3252,3575,3883,4200,4515,4829,5143,5444,5744,6049, 6335,6623,6903,7178,7449,7703,7952,8185,8413,8629,8834,9028,9210,9376,9519,9656,9778,9882,9980,10043, 10092,10125,10133,10121,10098,10052,9994,9917,9821,9700,9573,9428,9270,9098,8923,8731,8523,8304,8076,7833, 7587,7314,7045,6758,6464,6157,5834,5513,5180,4837,4492,4148,3787,3433,3068,2707,2349,1981,1617,1260, 891,532,162,-210,-578,-945,-1311,-1678,-2043,-2408,-2768,-3125,-3475,-3822,-4163,-4487,-4814,-5129,-5442,-5746, -6044,-6329,-6613,-6879,-7143,-7402,-7652,-7898,-8134,-8357,-8571,-8772,-8960,-9144,-9310,-9467,-9609,-9725,-9834,-9924, -9994,-10049,-10089,-10112,-10123,-10116,-10083,-10052,-9992,-9923,-9834,-9738,-9622,-9489,-9329,-9164,-8973,-8771,-8552,-8315, -8060,-7792,-7513,-7217,-6909,-6586,-6267,-5935,-5601,-5254,-4904,-4553,-4197,-3836,-3483,-3123,-2774,-2411,-2052,-1691, -1338,-977,-621,-270,76,417,769,1112,1452,1786,2118,2442,2755,3076,3393,3713,4014,4329,4631,4934, 5238,5531,5831,6129,6412,6704,6992,7257,7522,7777,8028,8260,8489,8697,8894,9081,9242,9387,9527,9647, 9751,9833,9905,9957,9991,10005,10014,10004,9975,9924,9864,9781,9684,9566,9436,9292,9126,8947,8760,8545, 8325,8083,7834,7579,7322,7039,6760,6468,6172,5862,5546,5230,4910,4574,4239,3893,3540,3183,2815,2451, 2082,1713,1334,955,583,205,-163,-538,-906,-1267,-1631,-1984,-2337,-2682,-3030,-3369,-3709,-4039,-4368,-4698, -5020,-5337,-5653,-5961,-6255,-6545,-6830,-7104,-7363,-7619,-7861,-8094,-8307,-8507,-8703,-8886,-9059,-9218,-9367,-9506, -9630,-9741,-9844,-9929,-9999,-10056,-10101,-10122,-10124,-10109,-10078,-10027,-9962,-9874,-9771,-9649,-9511,-9354,-9179,-8997, -8790,-8577,-8349,-8106,-7852,-7589,-7305,-7017,-6717,-6399,-6079,-5744,-5405,-5053,-4693,-4339,-3980,-3619,-3257,-2891, -2531,-2168,-1804,-1453,-1096,-743,-396,-46,294,637,981,1323,1646,1986,2314,2646,2972,3294,3619,3941, 4249,4566,4881,5195,5498,5801,6098,6393,6667,6951,7217,7489,7743,7991,8226,8453,8665,8871,9061,9239, 9403,9551,9685,9805,9891,9963,10025,10066,10086,10083,10072,10034,9977,9911,9825,9722,9608,9473,9331,9168, 8997,8811,8617,8405,8187,7949,7698,7438,7169,6872,6585,6283,5974,5649,5314,4984,4637,4291,3943,3597, 3244,2890,2523,2160,1802,1436,1068,706,339,-31,-403,-782,-1157,-1524,-1901,-2263,-2625,-2977,-3335,-3682, -4016,-4351,-4680,-4986,-5301,-5600,-5899,-6195,-6478,-6759,-7033,-7297,-7556,-7806,-8045,-8282,-8502,-8712,-8915,-9098, -9265,-9422,-9571,-9701,-9812,-9903,-9991,-10052,-10100,-10131,-10155,-10158,-10151,-10123,-10087,-10031,-9955,-9866,-9754,-9635, -9492,-9333,-9152,-8959,-8741,-8514,-8263,-8004,-7732,-7448,-7143,-6841,-6516,-6193,-5855,-5521,-5182,-4836,-4482,-4129, -3769,-3410,-3040,-2688,-2329,-1964,-1600,-1244,-881,-523,-163,181,530,877,1217,1556,1893,2222,2550,2876, 3194,3508,3828,4141,4453,4766,5081,5384,5683,5984,6284,6582,6862,7153,7429,7702,7954,8201,8432,8660, 8861,9065,9244,9404,9556,9686,9801,9908,9988,10064,10116,10151,10163,10165,10149,10118,10061,9997,9917,9804, 9677,9534,9375,9206,9021,8817,8608,8383,8148,7896,7640,7377,7101,6815,6526,6232,5925,5605,5284,4949, 4616,4262,3917,3552,3193,2821,2442,2072,1701,1327,952,582,205,-166,-537,-904,-1257,-1620,-1978,-2326, -2679,-3026,-3368,-3711,-4054,-4390,-4722,-5043,-5364,-5684,-5988,-6286,-6570,-6851,-7122,-7375,-7631,-7865,-8095,-8314, -8515,-8712,-8899,-9073,-9237,-9389,-9534,-9660,-9773,-9870,-9966,-10032,-10083,-10119,-10135,-10141,-10117,-10077,-10030,-9953, -9864,-9762,-9639,-9505,-9352,-9178,-8997,-8798,-8581,-8361,-8120,-7869,-7606,-7324,-7025,-6720,-6402,-6081,-5744,-5406, -5056,-4695,-4338,-3980,-3616,-3253,-2894,-2536,-2177,-1811,-1459,-1107,-754,-401,-53,290,631,984,1323,1659, 1997,2336,2665,2992,3315,3635,3965,4280,4593,4913,5219,5527,5822,6122,6414,6697,6978,7248,7511,7773, 8023,8252,8487,8703,8899,9091,9269,9428,9566,9690,9801,9890,9954,10010,10037,10054,10047,10030,9989,9935, 9861,9775,9673,9555,9419,9277,9124,8952,8757,8560,8340,8115,7869,7609,7342,7065,6769,6470,6162,5846, 5526,5193,4860,4523,4186,3833,3483,3130,2775,2414,2056,1686,1329,948,582,203,-171,-545,-923,-1296, -1667,-2038,-2400,-2758,-3105,-3450,-3794,-4124,-4452,-4776,-5093,-5400,-5702,-6003,-6291,-6585,-6867,-7141,-7411,-7662, -7918,-8156,-8383,-8599,-8799,-8997,-9176,-9338,-9486,-9617,-9740,-9845,-9939,-10014,-10085,-10127,-10161,-10181,-10188,-10175, -10148,-10105,-10050,-9974,-9876,-9763,-9631,-9479,-9311,-9123,-8924,-8703,-8469,-8223,-7953,-7684,-7399,-7095,-6793,-6484, -6153,-5827,-5488,-5153,-4803,-4452,-4095,-3736,-3374,-3007,-2644,-2284,-1919,-1549,-1191,-836,-473,-116,234,582, 926,1267,1608,1939,2283,2605,2944,3265,3590,3916,4238,4558,4876,5192,5511,5825,6126,6429,6736,7023, 7310,7591,7856,8114,8358,8590,8811,9017,9210,9396,9560,9712,9842,9956,10063,10152,10216,10277,10303,10319, 10314,10292,10250,10193,10107,10019,9902,9771,9624,9456,9277,9091,8882,8673,8442,8208,7955,7693,7429,7147, 6859,6565,6262,5950,5627,5289,4950,4600,4249,3887,3525,3157,2790,2413,2037,1663,1297,920,548,180, -191,-558,-924,-1292,-1660,-2018,-2375,-2737,-3088,-3440,-3797,-4137,-4466,-4804,-5125,-5441,-5750,-6053,-6350,-6633, -6905,-7172,-7429,-7673,-7909,-8137,-8356,-8565,-8768,-8958,-9137,-9296,-9455,-9592,-9725,-9834,-9937,-10013,-10080,-10119, -10152,-10165,-10159,-10145,-10099,-10038,-9973,-9879,-9777,-9654,-9519,-9372,-9204,-9015,-8813,-8593,-8369,-8122,-7868,-7593, -7313,-7009,-6700,-6377,-6047,-5707,-5365,-5024,-4673,-4308,-3951,-3593,-3232,-2872,-2513,-2161,-1801,-1441,-1089,-739, -379,-24,324,672,1009,1362,1709,2042,2387,2714,3049,3367,3691,4011,4331,4643,4961,5277,5576,5875, 6175,6466,6759,7039,7314,7585,7849,8093,8330,8561,8778,8984,9169,9344,9497,9639,9751,9851,9942,10005, 10051,10085,10091,10082,10064,10022,9968,9895,9811,9709,9587,9455,9298,9139,8961,8769,8554,8335,8096,7847, 7584,7310,7026,6734,6430,6125,5809,5490,5166,4827,4490,4156,3805,3452,3101,2741,2376,2006,1635,1268, 895,513,132,-246,-621,-1000,-1372,-1739,-2095,-2461,-2807,-3160,-3496,-3830,-4153,-4486,-4805,-5125,-5433,-5743, -6043,-6342,-6634,-6912,-7186,-7458,-7705,-7957,-8191,-8411,-8620,-8817,-9000,-9172,-9328,-9470,-9600,-9717,-9827,-9915, -9993,-10059,-10112,-10141,-10157,-10159,-10148,-10121,-10065,-10000,-9927,-9824,-9705,-9566,-9404,-9236,-9042,-8835,-8622,-8375, -8138,-7873,-7601,-7320,-7024,-6716,-6410,-6081,-5761,-5420,-5081,-4729,-4377,-4022,-3666,-3299,-2935,-2575,-2207,-1844, -1476,-1115,-766,-408,-52,293,637,978,1325,1665,1999,2328,2667,2993,3329,3645,3971,4298,4623,4936, 5263,5574,5890,6196,6499,6793,7093,7359,7640,7906,8160,8397,8625,8838,9050,9236,9413,9581,9728,9857, 9971,10066,10150,10211,10252,10282,10286,10270,10236,10181,10113,10020,9913,9796,9654,9502,9340,9157,8967,8758, 8537,8317,8077,7829,7565,7290,7010,6717,6410,6099,5777,5452,5105,4759,4404,4048,3688,3322,2957,2594, 2223,1848,1484,1111,744,366,2,-365,-733,-1108,-1471,-1834,-2203,-2566,-2916,-3271,-3622,-3967,-4313,-4640, -4967,-5286,-5589,-5895,-6188,-6476,-6752,-7020,-7283,-7542,-7782,-8019,-8248,-8463,-8673,-8869,-9057,-9240,-9393,-9541, -9676,-9789,-9893,-9980,-10052,-10105,-10140,-10161,-10164,-10152,-10128,-10083,-10025,-9951,-9865,-9757,-9630,-9489,-9340,-9171, -8985,-8778,-8570,-8324,-8074,-7806,-7524,-7237,-6931,-6617,-6297,-5964,-5624,-5276,-4937,-4586,-4233,-3876,-3525,-3167, -2804,-2448,-2092,-1740,-1376,-1031,-677,-320,35,386,731,1076,1417,1761,2096,2429,2764,3096,3419,3737, 4051,4371,4684,4994,5309,5614,5922,6214,6506,6794,7080,7354,7626,7888,8143,8372,8596,8806,9016,9186, 9356,9506,9641,9748,9844,9925,9988,10033,10062,10078,10072,10056,10012,9951,9890,9803,9698,9586,9445,9292, 9116,8930,8730,8517,8284,8050,7790,7534,7252,6973,6690,6390,6079,5780,5463,5138,4803,4468,4126,3781, 3426,3064,2701,2334,1954,1580,1201,831,446,75,-301,-671,-1042,-1404,-1770,-2121,-2474,-2822,-3161,-3509, -3843,-4177,-4503,-4822,-5138,-5462,-5769,-6076,-6367,-6661,-6939,-7204,-7461,-7714,-7943,-8174,-8389,-8591,-8781,-8954, -9120,-9281,-9421,-9559,-9679,-9791,-9886,-9961,-10023,-10080,-10112,-10128,-10130,-10109,-10075,-10020,-9945,-9852,-9752,-9625, -9489,-9328,-9163,-8972,-8769,-8556,-8338,-8093,-7844,-7575,-7297,-7005,-6700,-6390,-6063,-5730,-5400,-5052,-4701,-4341, -3982,-3624,-3269,-2907,-2553,-2185,-1836,-1472,-1126,-773,-436,-83,255,603,953,1295,1635,1985,2318,2653, 2993,3324,3660,3984,4307,4633,4955,5260,5577,5885,6190,6486,6773,7064,7338,7602,7865,8118,8369,8594, 8816,9026,9220,9385,9554,9696,9825,9936,10025,10092,10147,10171,10189,10180,10162,10121,10062,9984,9897,9792, 9668,9537,9390,9224,9045,8855,8651,8426,8190,7950,7688,7420,7132,6841,6535,6222,5899,5572,5246,4907, 4569,4223,3878,3522,3163,2814,2455,2099,1727,1356,987,615,235,-140,-511,-888,-1259,-1630,-2004,-2361, -2724,-3076,-3416,-3753,-4085,-4410,-4734,-5043,-5352,-5652,-5948,-6238,-6516,-6797,-7074,-7332,-7591,-7841,-8072,-8301, -8512,-8720,-8908,-9085,-9249,-9403,-9532,-9649,-9755,-9843,-9923,-9987,-10033,-10076,-10090,-10095,-10083,-10062,-10023,-9970, -9891,-9802,-9692,-9555,-9407,-9235,-9055,-8852,-8638,-8402,-8162,-7897,-7631,-7346,-7057,-6768,-6457,-6142,-5818,-5492, -5157,-4816,-4475,-4122,-3770,-3412,-3054,-2689,-2329,-1960,-1602,-1240,-885,-526,-174,178,522,866,1202,1535, 1871,2203,2528,2855,3184,3510,3833,4157,4475,4798,5122,5443,5760,6076,6380,6677,6969,7258,7531,7797, 8056,8298,8532,8749,8954,9143,9330,9488,9643,9779,9901,10001,10090,10154,10205,10233,10251,10239,10219,10164, 10095,10008,9899,9783,9651,9495,9328,9147,8948,8743,8530,8303,8063,7821,7560,7296,7009,6722,6426,6116, 5791,5471,5135,4792,4436,4079,3719,3356,2984,2619,2250,1879,1503,1130,758,389,22,-335,-705,-1076, -1437,-1807,-2166,-2520,-2881,-3225,-3576,-3921,-4260,-4594,-4924,-5238,-5550,-5853,-6148,-6432,-6710,-6982,-7236,-7485, -7726,-7961,-8182,-8402,-8610,-8804,-8990,-9168,-9328,-9477,-9615,-9736,-9840,-9936,-10008,-10059,-10099,-10123,-10118,-10105, -10083,-10037,-9975,-9898,-9805,-9706,-9586,-9450,-9301,-9138,-8960,-8761,-8539,-8310,-8067,-7802,-7530,-7243,-6942,-6623, -6295,-5970,-5638,-5290,-4949,-4594,-4252,-3904,-3541,-3193,-2841,-2484,-2131,-1777,-1422,-1070,-712,-353,-6,350, 696,1048,1400,1741,2087,2426,2753,3084,3411,3730,4053,4365,4683,5001,5310,5615,5923,6228,6520,6823, 7113,7402,7676,7940,8202,8448,8677,8893,9095,9288,9449,9598,9737,9849,9948,10028,10093,10141,10178,10183, 10180,10161,10128,10074,10010,9923,9820,9696,9563,9407,9237,9049,8855,8632,8404,8156,7904,7631,7365,7076, 6782,6484,6174,5858,5539,5216,4886,4552,4206,3860,3509,3144,2778,2414,2039,1665,1287,911,538,157, -222,-593,-964,-1323,-1686,-2043,-2395,-2742,-3095,-3427,-3763,-4088,-4414,-4733,-5058,-5367,-5686,-5988,-6279,-6563, -6848,-7114,-7379,-7631,-7871,-8098,-8306,-8512,-8698,-8875,-9042,-9199,-9350,-9476,-9591,-9699,-9790,-9871,-9939,-9997, -10037,-10063,-10062,-10046,-10016,-9965,-9899,-9817,-9708,-9593,-9451,-9289,-9110,-8929,-8734,-8520,-8287,-8060,-7804,-7540, -7261,-6980,-6690,-6387,-6073,-5757,-5424,-5077,-4726,-4374,-4019,-3662,-3302,-2944,-2585,-2224,-1861,-1506,-1159,-809, -468,-131,208,555,898,1239,1570,1908,2241,2576,2911,3255,3587,3921,4256,4576,4902,5218,5533,5847, 6152,6452,6746,7024,7298,7571,7830,8080,8326,8559,8786,8987,9185,9368,9531,9686,9823,9948,10043,10113, 10163,10200,10217,10208,10191,10154,10099,10013,9916,9803,9681,9540,9399,9234,9056,8861,8653,8433,8201,7960, 7712,7439,7161,6865,6556,6241,5922,5590,5259,4919,4573,4215,3864,3501,3143,2783,2423,2063,1696,1323, 949,576,202,-166,-540,-909,-1280,-1651,-2028,-2403,-2752,-3110,-3458,-3800,-4130,-4459,-4786,-5108,-5413,-5712, -6004,-6287,-6567,-6841,-7111,-7380,-7636,-7875,-8113,-8334,-8551,-8758,-8954,-9134,-9306,-9454,-9593,-9706,-9811,-9906, -9988,-10047,-10091,-10123,-10136,-10133,-10113,-10086,-10051,-9994,-9927,-9823,-9717,-9592,-9446,-9285,-9113,-8921,-8715,-8479, -8231,-7971,-7693,-7407,-7115,-6820,-6507,-6193,-5854,-5529,-5193,-4855,-4511,-4174,-3834,-3485,-3125,-2766,-2406,-2051, -1690,-1335,-985,-630,-271,84,438,780,1121,1456,1783,2110,2443,2772,3094,3423,3742,4054,4366,4689, 5013,5335,5652,5972,6280,6582,6877,7168,7458,7744,8007,8261,8500,8722,8931,9127,9318,9495,9648,9783, 9906,10009,10094,10162,10219,10265,10289,10288,10270,10226,10172,10091,9994,9891,9768,9615,9448,9262,9073,8864, 8644,8418,8183,7929,7670,7395,7111,6820,6526,6223,5912,5587,5256,4913,4565,4207,3859,3495,3128,2758, 2378,2007,1628,1253,877,510,143,-230,-600,-965,-1329,-1689,-2048,-2396,-2737,-3089,-3431,-3773,-4106,-4439, -4766,-5084,-5393,-5694,-5997,-6288,-6566,-6837,-7095,-7348,-7588,-7816,-8036,-8248,-8454,-8641,-8818,-8989,-9151,-9294, -9434,-9553,-9670,-9764,-9845,-9907,-9948,-9976,-9991,-9986,-9964,-9930,-9870,-9797,-9707,-9598,-9488,-9356,-9208,-9044, -8867,-8677,-8470,-8245,-8014,-7776,-7512,-7237,-6949,-6649,-6339,-6018,-5682,-5356,-5017,-4674,-4323,-3965,-3620,-3271, -2914,-2570,-2226,-1878,-1530,-1180,-833,-487,-140,204,543,894,1234,1586,1934,2276,2615,2945,3279,3610, 3940,4269,4590,4908,5223,5524,5829,6137,6433,6729,7021,7303,7576,7842,8090,8347,8584,8809,9021,9210, 9385,9541,9674,9792,9901,9991,10056,10097,10127,10134,10124,10096,10052,10005,9935,9838,9730,9609,9466,9314, 9148,8962,8773,8560,8330,8084,7834,7567,7297,7009,6716,6412,6097,5778,5453,5117,4787,4449,4108,3759, 3405,3045,2684,2306,1945,1583,1213,837,460,87,-285,-666,-1032,-1397,-1759,-2119,-2481,-2832,-3172,-3515, -3850,-4171,-4492,-4807,-5126,-5436,-5740,-6031,-6326,-6606,-6875,-7133,-7398,-7654,-7895,-8125,-8340,-8539,-8732,-8909, -9079,-9235,-9384,-9513,-9628,-9720,-9807,-9887,-9946,-9998,-10038,-10050,-10058,-10035,-10001,-9959,-9895,-9817,-9721,-9599, -9464,-9314,-9133,-8946,-8739,-8539,-8302,-8070,-7816,-7550,-7266,-6974,-6682,-6392,-6084,-5765,-5433,-5106,-4764,-4421, -4071,-3727,-3386,-3028,-2668,-2315,-1952,-1596,-1248,-906,-564,-228,116,457,798,1132,1464,1795,2119,2444, 2776,3109,3442,3775,4103,4428,4746,5075,5399,5719,6039,6358,6656,6947,7229,7505,7782,8046,8294,8540, 8768,8976,9166,9349,9525,9689,9827,9952,10056,10142,10198,10238,10267,10278,10265,10233,10181,10111,10017,9902, 9783,9651,9504,9337,9155,8961,8751,8526,8294,8058,7807,7547,7272,6975,6677,6362,6045,5729,5400,5064, 4726,4375,4014,3651,3286,2930,2569,2199,1838,1463,1087,712,338,-24,-391,-767,-1129,-1498,-1867,-2232, -2593,-2935,-3277,-3620,-3958,-4290,-4618,-4940,-5252,-5559,-5848,-6135,-6422,-6700,-6973,-7231,-7487,-7730,-7954,-8176, -8388,-8593,-8792,-8976,-9152,-9301,-9440,-9562,-9683,-9778,-9871,-9942,-10001,-10033,-10055,-10050,-10051,-10024,-9990,-9938, -9868,-9776,-9670,-9550,-9423,-9274,-9108,-8931,-8736,-8526,-8284,-8032,-7776,-7506,-7225,-6931,-6630,-6315,-5988,-5653, -5321,-4992,-4654,-4316,-3968,-3624,-3273,-2920,-2560,-2220,-1871,-1519,-1167,-811,-455,-99,254,600,947,1288, 1629,1967,2304,2643,2972,3293,3612,3931,4249,4564,4891,5211,5528,5833,6138,6445,6738,7034,7318,7601, 7872,8123,8353,8585,8798,8997,9178,9350,9511,9640,9746,9849,9934,10005,10052,10088,10104,10101,10068,10031, 9967,9893,9802,9691,9565,9419,9256,9075,8881,8681,8466,8245,8005,7756,7489,7210,6931,6645,6349,6044, 5731,5414,5074,4736,4403,4054,3699,3347,2993,2626,2254,1881,1516,1144,779,413,45,-317,-683,-1059, -1421,-1774,-2124,-2474,-2818,-3160,-3499,-3845,-4174,-4493,-4809,-5118,-5429,-5728,-6016,-6303,-6586,-6854,-7105,-7343, -7588,-7817,-8042,-8252,-8451,-8636,-8811,-8966,-9119,-9255,-9387,-9511,-9613,-9697,-9768,-9821,-9856,-9881,-9894,-9891, -9874,-9823,-9762,-9681,-9590,-9482,-9353,-9223,-9076,-8902,-8712,-8509,-8296,-8076,-7837,-7592,-7335,-7064,-6772,-6471, -6163,-5854,-5542,-5214,-4878,-4551,-4198,-3845,-3493,-3155,-2816,-2470,-2127,-1786,-1438,-1097,-746,-411,-84,252, 580,915,1254,1594,1937,2273,2603,2926,3258,3586,3922,4254,4579,4903,5220,5533,5838,6138,6450,6754, 7053,7336,7611,7885,8142,8387,8629,8869,9084,9283,9455,9618,9767,9889,10002,10101,10177,10229,10255,10260, 10260,10241,10201,10148,10076,9991,9875,9746,9604,9449,9278,9100,8899,8692,8460,8206,7948,7684,7412,7132, 6839,6534,6218,5894,5561,5229,4889,4559,4214,3857,3493,3129,2762,2392,2016,1652,1286,908,528,145, -231,-606,-981,-1350,-1704,-2064,-2425,-2786,-3134,-3472,-3804,-4138,-4456,-4775,-5089,-5406,-5717,-6015,-6297,-6579, -6848,-7119,-7372,-7625,-7873,-8101,-8315,-8513,-8705,-8885,-9059,-9217,-9365,-9502,-9615,-9717,-9802,-9874,-9939,-9993, -10034,-10053,-10052,-10034,-10002,-9952,-9894,-9821,-9733,-9618,-9485,-9336,-9172,-8988,-8789,-8579,-8370,-8134,-7877,-7608, -7334,-7043,-6753,-6453,-6150,-5842,-5513,-5174,-4842,-4498,-4155,-3813,-3467,-3126,-2772,-2412,-2052,-1697,-1344,-1005, -648,-308,34,379,729,1064,1401,1727,2052,2383,2709,3039,3369,3700,4027,4344,4665,4984,5302,5629, 5943,6253,6560,6854,7136,7412,7685,7947,8209,8442,8669,8885,9077,9258,9430,9593,9741,9862,9968,10049, 10120,10170,10193,10209,10209,10185,10132,10062,9979,9874,9755,9622,9480,9323,9144,8955,8744,8530,8306,8071, 7819,7566,7294,7004,6703,6396,6081,5766,5439,5105,4763,4416,4063,3702,3343,2987,2635,2272,1904,1535, 1169,800,435,66,-294,-653,-1027,-1391,-1752,-2113,-2462,-2816,-3155,-3484,-3820,-4151,-4475,-4788,-5090,-5389, -5673,-5950,-6226,-6503,-6768,-7025,-7270,-7501,-7730,-7948,-8154,-8361,-8549,-8732,-8897,-9043,-9177,-9304,-9413,-9510, -9591,-9660,-9710,-9742,-9757,-9752,-9737,-9732,-9689,-9634,-9559,-9472,-9360,-9240,-9104,-8964,-8808,-8626,-8432,-8222, -7996,-7750,-7497,-7240,-6973,-6690,-6394,-6087,-5773,-5454,-5124,-4799,-4485,-4155,-3819,-3477,-3134,-2798,-2458,-2119, -1782,-1450,-1112,-764,-418,-75,262,599,931,1267,1609,1943,2284,2617,2943,3265,3582,3901,4220,4541, 4865,5181,5497,5805,6105,6402,6705,7002,7295,7571,7845,8101,8340,8555,8777,8985,9178,9346,9493,9623, 9738,9828,9905,9977,10029,10063,10064,10057,10033,9986,9922,9849,9759,9650,9518,9364,9197,9014,8816,8610, 8394,8165,7919,7655,7386,7111,6822,6535,6237,5937,5624,5298,4964,4615,4274,3930,3580,3218,2851,2481, 2109,1729,1355,988,622,253,-119,-493,-861,-1220,-1585,-1939,-2284,-2625,-2966,-3316,-3659,-3987,-4325,-4649, -4960,-5268,-5572,-5879,-6185,-6472,-6747,-7012,-7270,-7509,-7736,-7969,-8194,-8403,-8595,-8777,-8941,-9103,-9248,-9386, -9520,-9640,-9747,-9829,-9888,-9943,-9985,-10014,-10027,-10029,-10005,-9964,-9896,-9809,-9718,-9615,-9492,-9354,-9199,-9033, -8843,-8631,-8416,-8190,-7963,-7720,-7452,-7178,-6893,-6593,-6280,-5965,-5665,-5341,-5011,-4668,-4326,-3976,-3624,-3273, -2938,-2601,-2254,-1903,-1558,-1213,-870,-532,-201,123,447,784,1118,1454,1784,2117,2440,2760,3084,3411, 3744,4075,4409,4723,5041,5350,5664,5971,6278,6577,6881,7161,7434,7701,7963,8221,8465,8700,8929,9139, 9326,9490,9646,9787,9917,10016,10104,10169,10210,10220,10217,10203,10180,10132,10068,9982,9884,9764,9625,9483, 9332,9164,8976,8774,8555,8319,8065,7808,7538,7263,6972,6669,6347,6030,5700,5367,5034,4701,4355,4014, 3658,3294,2933,2577,2218,1855,1488,1121,749,366,-15,-389,-752,-1121,-1492,-1851,-2210,-2564,-2918,-3264, -3591,-3907,-4225,-4542,-4851,-5156,-5451,-5752,-6033,-6305,-6569,-6840,-7099,-7354,-7592,-7826,-8046,-8247,-8436,-8617, -8787,-8956,-9096,-9228,-9336,-9435,-9512,-9585,-9639,-9700,-9734,-9753,-9753,-9742,-9713,-9675,-9621,-9552,-9471,-9367, -9245,-9098,-8940,-8771,-8585,-8381,-8174,-7945,-7702,-7440,-7162,-6888,-6614,-6325,-6028,-5720,-5413,-5088,-4754,-4430, -4110,-3782,-3450,-3112,-2776,-2434,-2086,-1733,-1399,-1059,-723,-382,-40,302,642,983,1313,1640,1959,2285, 2614,2942,3270,3592,3908,4230,4546,4858,5182,5501,5819,6137,6432,6724,7014,7291,7561,7821,8078,8314, 8531,8726,8920,9099,9262,9407,9548,9669,9768,9842,9906,9950,9985,9995,9986,9962,9917,9837,9743,9635, 9515,9377,9218,9047,8863,8657,8441,8217,7988,7754,7503,7239,6966,6678,6386,6082,5775,5459,5138,4798, 4452,4094,3732,3371,3003,2642,2274,1908,1543,1169,796,434,72,-287,-642,-1004,-1353,-1715,-2081,-2429, -2776,-3114,-3459,-3801,-4133,-4460,-4792,-5108,-5412,-5700,-5985,-6267,-6540,-6797,-7053,-7302,-7535,-7749,-7954,-8165, -8365,-8555,-8734,-8904,-9061,-9204,-9329,-9441,-9552,-9649,-9727,-9788,-9825,-9845,-9853,-9838,-9814,-9780,-9731,-9665, -9568,-9459,-9343,-9210,-9065,-8906,-8742,-8566,-8361,-8133,-7901,-7659,-7406,-7138,-6866,-6587,-6288,-5973,-5646,-5324, -5005,-4679,-4346,-4012,-3681,-3335,-2992,-2646,-2314,-1983,-1653,-1319,-989,-654,-318,25,351,676,1007,1334, 1666,2004,2336,2673,3001,3321,3636,3958,4274,4604,4922,5241,5547,5851,6153,6452,6741,7044,7343,7627, 7897,8159,8411,8655,8876,9094,9302,9490,9654,9783,9906,10010,10093,10161,10218,10253,10268,10252,10220,10182, 10132,10059,9979,9874,9760,9615,9453,9275,9089,8891,8674,8442,8190,7932,7648,7361,7070,6772,6472,6162, 5840,5512,5182,4843,4504,4162,3819,3474,3113,2741,2368,1994,1618,1238,858,489,109,-271,-657,-1034, -1398,-1757,-2114,-2454,-2798,-3134,-3481,-3811,-4132,-4443,-4764,-5063,-5369,-5667,-5974,-6273,-6556,-6824,-7089,-7342, -7584,-7816,-8042,-8260,-8462,-8637,-8805,-8955,-9108,-9244,-9373,-9484,-9583,-9670,-9732,-9793,-9833,-9877,-9900,-9906, -9893,-9860,-9806,-9744,-9646,-9555,-9443,-9315,-9163,-8992,-8804,-8608,-8390,-8168,-7942,-7709,-7454,-7183,-6903,-6620, -6321,-6024,-5720,-5411,-5100,-4768,-4425,-4090,-3746,-3404,-3064,-2722,-2385,-2039,-1687,-1338,-1002,-663,-331,-4, 324,654,987,1326,1652,1979,2296,2614,2934,3258,3588,3916,4242,4568,4881,5189,5504,5816,6123,6427, 6714,7006,7268,7525,7772,8016,8253,8483,8689,8880,9064,9229,9379,9510,9639,9753,9838,9896,9942,9962, 9963,9942,9905,9860,9787,9693,9580,9445,9308,9155,8993,8825,8645,8440,8227,7995,7763,7518,7258,6988, 6710,6412,6106,5784,5455,5122,4786,4441,4093,3739,3383,3021,2660,2302,1949,1604,1249,885,524,164, -195,-560,-917,-1273,-1627,-1992,-2354,-2707,-3058,-3399,-3734,-4060,-4371,-4684,-4996,-5290,-5579,-5853,-6124,-6387, -6634,-6876,-7126,-7365,-7596,-7810,-8014,-8216,-8408,-8581,-8750,-8908,-9054,-9178,-9277,-9364,-9442,-9504,-9554,-9584, -9602,-9604,-9588,-9549,-9497,-9445,-9382,-9303,-9204,-9094,-8964,-8815,-8651,-8474,-8291,-8101,-7875,-7642,-7393,-7129, -6859,-6570,-6285,-5998,-5696,-5385,-5065,-4746,-4425,-4096,-3770,-3458,-3140,-2813,-2477,-2139,-1818,-1485,-1156,-830, -512,-177,154,497,827,1153,1480,1800,2123,2451,2770,3096,3420,3733,4046,4349,4663,4978,5288,5606, 5920,6231,6531,6824,7111,7407,7690,7966,8226,8469,8702,8909,9097,9277,9453,9604,9736,9842,9939,10019, 10067,10109,10144,10161,10163,10134,10091,10034,9953,9849,9740,9616,9469,9293,9101,8897,8676,8439,8200,7947, 7690,7416,7126,6829,6531,6227,5924,5607,5288,4967,4622,4271,3913,3549,3194,2825,2451,2072,1686,1301, 910,526,149,-213,-583,-951,-1316,-1679,-2032,-2390,-2729,-3064,-3396,-3729,-4068,-4402,-4725,-5049,-5368,-5664, -5967,-6255,-6553,-6835,-7098,-7353,-7598,-7815,-8036,-8229,-8425,-8615,-8795,-8955,-9101,-9240,-9366,-9486,-9591,-9693, -9787,-9858,-9911,-9938,-9957,-9963,-9949,-9920,-9877,-9815,-9729,-9626,-9493,-9362,-9219,-9067,-8893,-8709,-8514,-8296, -8053,-7818,-7576,-7329,-7068,-6789,-6497,-6201,-5880,-5561,-5242,-4926,-4605,-4271,-3928,-3588,-3244,-2900,-2560,-2231, -1912,-1580,-1242,-911,-579,-249,76,401,718,1036,1364,1697,2031,2363,2682,3005,3323,3640,3967,4290, 4619,4942,5254,5554,5851,6147,6440,6729,7015,7297,7565,7820,8062,8296,8529,8755,8954,9157,9330,9486, 9614,9730,9833,9923,9978,10022,10042,10034,10003,9954,9898,9835,9749,9649,9529,9398,9250,9084,8911,8735, 8540,8329,8100,7849,7590,7317,7027,6733,6435,6122,5801,5464,5127,4785,4442,4106,3764,3419,3078,2721, 2361,2002,1647,1294,934,568,204,-164,-537,-918,-1287,-1648,-1998,-2360,-2704,-3045,-3378,-3709,-4030,-4330, -4619,-4914,-5202,-5482,-5765,-6032,-6304,-6560,-6805,-7045,-7286,-7523,-7747,-7955,-8154,-8343,-8510,-8659,-8802,-8933, -9054,-9152,-9235,-9303,-9354,-9390,-9419,-9435,-9448,-9444,-9424,-9384,-9328,-9259,-9183,-9083,-8973,-8858,-8712,-8549, -8357,-8156,-7948,-7730,-7495,-7248,-6995,-6729,-6443,-6149,-5864,-5577,-5277,-4980,-4669,-4359,-4041,-3712,-3385,-3072, -2750,-2427,-2093,-1763,-1430,-1092,-750,-426,-99,220,555,883,1205,1534,1856,2169,2485,2791,3104,3425, 3742,4058,4376,4686,4997,5310,5616,5932,6245,6552,6850,7129,7402,7671,7922,8164,8397,8617,8824,9000, 9160,9313,9454,9577,9684,9781,9863,9922,9955,9978,9984,9975,9944,9891,9823,9732,9609,9466,9316,9152, 8976,8781,8569,8352,8112,7864,7608,7350,7094,6824,6538,6240,5939,5628,5303,4971,4643,4297,3942,3578, 3204,2825,2454,2075,1701,1328,959,586,210,-165,-521,-875,-1227,-1580,-1930,-2273,-2624,-2982,-3321,-3658, -3989,-4324,-4653,-4978,-5292,-5609,-5913,-6200,-6479,-6739,-7003,-7252,-7487,-7715,-7935,-8139,-8330,-8507,-8691,-8862, -9027,-9176,-9318,-9442,-9553,-9641,-9729,-9801,-9860,-9903,-9921,-9914,-9895,-9854,-9792,-9728,-9648,-9555,-9447,-9314, -9164,-9010,-8840,-8661,-8470,-8272,-8062,-7824,-7571,-7307,-7036,-6760,-6470,-6174,-5866,-5555,-5225,-4886,-4553,-4226, -3899,-3567,-3237,-2911,-2571,-2237,-1902,-1583,-1266,-948,-620,-301,26,353,685,1008,1324,1638,1962,2280, 2612,2936,3256,3577,3886,4192,4499,4810,5123,5436,5740,6037,6328,6615,6896,7177,7456,7738,8002,8253, 8485,8712,8923,9116,9305,9475,9625,9747,9842,9919,9984,10033,10050,10068,10064,10041,9989,9923,9853,9772, 9664,9554,9429,9286,9114,8922,8721,8514,8288,8047,7789,7520,7235,6929,6620,6309,6000,5689,5363,5031, 4696,4360,4016,3672,3327,2983,2638,2275,1905,1529,1155,778,399,21,-337,-712,-1092,-1469,-1835,-2184, -2531,-2873,-3193,-3514,-3837,-4156,-4471,-4766,-5057,-5351,-5637,-5918,-6194,-6476,-6754,-7010,-7252,-7486,-7712,-7925, -8128,-8317,-8499,-8663,-8804,-8924,-9037,-9140,-9237,-9318,-9390,-9452,-9491,-9520,-9536,-9531,-9533,-9513,-9479,-9422, -9348,-9254,-9141,-9007,-8871,-8716,-8551,-8359,-8149,-7924,-7700,-7454,-7205,-6954,-6705,-6432,-6149,-5857,-5563,-5264, -4953,-4653,-4345,-4033,-3704,-3368,-3036,-2706,-2374,-2050,-1721,-1403,-1077,-737,-406,-85,231,539,858,1168, 1478,1797,2116,2432,2741,3044,3355,3663,3979,4295,4617,4930,5247,5548,5841,6136,6431,6719,6998,7260, 7518,7758,7982,8197,8406,8609,8795,8964,9115,9258,9381,9486,9580,9665,9736,9779,9791,9789,9762,9720, 9653,9576,9485,9370,9229,9070,8906,8730,8536,8337,8137,7924,7694,7450,7190,6926,6661,6379,6087,5786, 5470,5142,4800,4453,4097,3749,3391,3031,2663,2299,1929,1563,1206,850,500,148,-210,-566,-915,-1274, -1626,-1985,-2323,-2673,-3021,-3375,-3707,-4043,-4369,-4689,-4998,-5290,-5579,-5869,-6145,-6411,-6655,-6896,-7129,-7350, -7563,-7778,-7989,-8183,-8365,-8538,-8703,-8853,-8992,-9129,-9249,-9352,-9436,-9495,-9547,-9578,-9591,-9595,-9581,-9553, -9506,-9441,-9359,-9264,-9169,-9061,-8936,-8798,-8647,-8473,-8288,-8085,-7873,-7655,-7425,-7173,-6909,-6627,-6341,-6042, -5738,-5439,-5140,-4828,-4514,-4188,-3868,-3553,-3230,-2913,-2606,-2295,-1975,-1652,-1327,-1009,-695,-377,-61,247, 567,885,1214,1535,1847,2162,2468,2779,3089,3399,3714,4027,4332,4632,4936,5235,5541,5843,6146,6447, 6747,7031,7306,7580,7850,8110,8359,8598,8811,9016,9192,9350,9495,9636,9748,9840,9912,9969,10002,10015, 10019,10018,9999,9957,9900,9817,9724,9612,9475,9337,9178,9005,8803,8580,8347,8106,7842,7569,7295,7015, 6723,6415,6099,5786,5469,5149,4828,4501,4160,3814,3459,3098,2728,2368,2002,1622,1241,859,469,83, -302,-671,-1032,-1398,-1755,-2112,-2464,-2803,-3141,-3471,-3782,-4094,-4409,-4730,-5042,-5347,-5649,-5947,-6231,-6509, -6773,-7048,-7310,-7553,-7776,-7991,-8189,-8372,-8538,-8704,-8862,-9006,-9133,-9243,-9339,-9428,-9505,-9576,-9640,-9690, -9720,-9733,-9723,-9699,-9662,-9609,-9540,-9458,-9354,-9229,-9081,-8912,-8741,-8558,-8367,-8158,-7935,-7714,-7468,-7205, -6940,-6682,-6414,-6131,-5843,-5535,-5233,-4904,-4584,-4259,-3937,-3617,-3289,-2946,-2615,-2279,-1948,-1617,-1299,-992, -669,-346,-23,296,613,928,1237,1541,1846,2165,2485,2806,3122,3434,3747,4050,4355,4668,4982,5293, 5603,5891,6173,6451,6727,6995,7259,7511,7767,7999,8216,8420,8617,8809,8993,9150,9303,9435,9542,9626, 9689,9747,9784,9795,9786,9758,9711,9635,9536,9436,9332,9207,9061,8905,8737,8556,8355,8151,7946,7728, 7490,7233,6962,6681,6388,6082,5771,5455,5127,4793,4437,4084,3730,3378,3030,2678,2325,1980,1624,1266, 908,557,205,-143,-507,-861,-1221,-1584,-1956,-2311,-2658,-2997,-3344,-3676,-3997,-4319,-4632,-4933,-5221,-5488, -5757,-6027,-6283,-6535,-6774,-7018,-7243,-7457,-7667,-7876,-8076,-8271,-8443,-8607,-8756,-8883,-8993,-9096,-9181,-9258, -9317,-9349,-9371,-9375,-9357,-9339,-9304,-9262,-9210,-9131,-9046,-8935,-8815,-8689,-8547,-8387,-8223,-8032,-7823,-7585, -7347,-7102,-6849,-6577,-6301,-6019,-5729,-5423,-5113,-4810,-4512,-4204,-3894,-3582,-3270,-2952,-2627,-2306,-2003,-1688, -1371,-1051,-735,-413,-94,230,544,846,1155,1472,1782,2095,2405,2711,3013,3315,3614,3909,4219,4529, 4834,5138,5439,5739,6037,6329,6618,6916,7203,7481,7737,7985,8229,8453,8667,8866,9053,9222,9369,9486, 9596,9697,9781,9843,9898,9938,9952,9942,9914,9882,9833,9763,9675,9566,9443,9285,9115,8929,8734,8522, 8296,8052,7799,7535,7256,6975,6688,6405,6106,5796,5481,5161,4833,4495,4151,3810,3455,3090,2716,2335, 1950,1573,1188,805,426,55,-323,-698,-1072,-1433,-1784,-2132,-2476,-2818,-3152,-3491,-3833,-4163,-4481,-4798, -5115,-5432,-5738,-6040,-6339,-6629,-6891,-7148,-7393,-7636,-7865,-8076,-8275,-8471,-8642,-8803,-8942,-9091,-9228,-9353, -9466,-9575,-9656,-9734,-9783,-9824,-9860,-9880,-9876,-9855,-9808,-9746,-9665,-9569,-9457,-9337,-9196,-9054,-8879,-8691, -8495,-8284,-8068,-7841,-7611,-7364,-7103,-6819,-6535,-6243,-5947,-5643,-5336,-5020,-4700,-4363,-4022,-3688,-3365,-3041, -2711,-2388,-2070,-1745,-1414,-1089,-776,-469,-158,152,464,779,1096,1419,1731,2038,2341,2652,2965,3281, 3598,3910,4224,4519,4821,5123,5422,5727,6025,6314,6596,6866,7136,7395,7647,7903,8154,8386,8604,8803, 8992,9168,9326,9471,9608,9720,9802,9857,9901,9924,9927,9911,9890,9845,9784,9694,9581,9473,9355,9219, 9071,8910,8735,8539,8321,8093,7861,7617,7353,7080,6790,6487,6168,5844,5514,5188,4857,4518,4170,3826, 3472,3122,2771,2419,2073,1728,1359,999,632,257,-105,-472,-843,-1203,-1570,-1938,-2304,-2660,-3000,-3332, -3659,-3968,-4278,-4581,-4882,-5177,-5454,-5719,-5991,-6252,-6502,-6752,-7004,-7251,-7476,-7686,-7887,-8085,-8268,-8441, -8594,-8746,-8871,-8973,-9057,-9132,-9197,-9247,-9284,-9312,-9322,-9318,-9294,-9262,-9214,-9165,-9099,-9016,-8917,-8798, -8657,-8501,-8329,-8150,-7959,-7754,-7524,-7281,-7028,-6767,-6497,-6220,-5945,-5665,-5386,-5086,-4773,-4473,-4165,-3856, -3553,-3238,-2931,-2614,-2287,-1964,-1647,-1325,-1009,-695,-387,-75,243,564,873,1177,1479,1780,2083,2381, 2689,2999,3298,3601,3894,4191,4491,4799,5101,5410,5708,6006,6292,6573,6844,7121,7387,7642,7875,8108, 8319,8509,8688,8856,9020,9170,9295,9394,9495,9562,9618,9662,9699,9718,9710,9678,9634,9566,9482,9370, 9252,9118,8970,8783,8586,8383,8171,7936,7699,7455,7208,6939,6664,6374,6087,5793,5486,5174,4859,4525, 4184,3828,3468,3102,2738,2370,2000,1618,1239,865,487,116,-247,-605,-957,-1319,-1676,-2025,-2374,-2717, -3060,-3392,-3726,-4060,-4401,-4725,-5049,-5363,-5672,-5972,-6254,-6531,-6808,-7073,-7321,-7546,-7767,-7982,-8178,-8361, -8546,-8726,-8892,-9039,-9168,-9300,-9420,-9525,-9615,-9699,-9768,-9816,-9827,-9834,-9829,-9806,-9757,-9706,-9624,-9537, -9422,-9293,-9153,-9000,-8845,-8674,-8477,-8280,-8064,-7835,-7588,-7334,-7078,-6819,-6529,-6231,-5926,-5617,-5293,-4971, -4644,-4331,-4009,-3677,-3341,-3014,-2690,-2366,-2046,-1729,-1424,-1110,-787,-462,-154,154,465,772,1074,1388, 1700,2020,2332,2633,2937,3243,3543,3845,4149,4463,4766,5068,5355,5647,5934,6229,6519,6798,7086,7353, 7615,7867,8104,8349,8580,8795,9003,9188,9352,9496,9618,9730,9831,9908,9960,9992,10008,10003,9978,9935, 9893,9830,9755,9651,9536,9406,9264,9099,8935,8748,8553,8329,8092,7830,7571,7291,7004,6706,6408,6091, 5765,5435,5108,4769,4436,4099,3757,3415,3059,2702,2339,1975,1609,1251,880,498,119,-259,-642,-1020, -1391,-1743,-2103,-2457,-2804,-3143,-3474,-3799,-4116,-4420,-4711,-5010,-5311,-5600,-5881,-6159,-6433,-6690,-6945,-7186, -7435,-7673,-7891,-8092,-8283,-8451,-8612,-8749,-8879,-9007,-9120,-9201,-9275,-9332,-9381,-9416,-9436,-9456,-9466,-9451, -9412,-9354,-9290,-9215,-9122,-9011,-8885,-8744,-8579,-8392,-8186,-7976,-7757,-7536,-7294,-7042,-6783,-6506,-6222,-5937, -5653,-5371,-5080,-4774,-4459,-4153,-3829,-3504,-3183,-2877,-2563,-2239,-1917,-1595,-1278,-955,-635,-330,-34,266, 584,886,1195,1496,1796,2094,2383,2673,2975,3279,3578,3888,4181,4480,4770,5063,5351,5653,5943,6231, 6509,6771,7023,7271,7514,7742,7968,8179,8376,8547,8704,8856,8998,9132,9240,9339,9422,9479,9515,9531, 9544,9541,9509,9452,9384,9291,9174,9035,8888,8746,8578,8391,8194,7985,7763,7528,7289,7048,6799,6532, 6255,5963,5666,5353,5034,4704,4372,4029,3682,3317,2951,2586,2215,1848,1488,1126,763,402,36,-323, -671,-1025,-1372,-1722,-2071,-2419,-2770,-3121,-3466,-3797,-4121,-4452,-4775,-5088,-5399,-5698,-5986,-6261,-6518,-6765, -7016,-7249,-7473,-7685,-7894,-8094,-8270,-8438,-8610,-8776,-8922,-9058,-9180,-9295,-9380,-9454,-9508,-9569,-9600,-9610, -9603,-9572,-9529,-9463,-9389,-9302,-9203,-9094,-8962,-8818,-8659,-8487,-8302,-8112,-7902,-7679,-7448,-7203,-6928,-6653, -6376,-6086,-5788,-5484,-5173,-4863,-4538,-4207,-3889,-3576,-3256,-2946,-2620,-2305,-1990,-1667,-1346,-1047,-738,-431, -122,188,494,800,1115,1419,1715,2010,2309,2615,2916,3219,3517,3815,4108,4396,4687,4988,5284,5581, 5874,6157,6441,6724,6995,7270,7543,7806,8055,8293,8514,8730,8926,9112,9283,9440,9571,9685,9768,9840, 9904,9951,9965,9978,9969,9942,9887,9829,9754,9676,9566,9443,9305,9151,8974,8776,8569,8346,8120,7872, 7602,7322,7033,6727,6426,6112,5806,5484,5155,4826,4485,4144,3800,3444,3097,2742,2375,2002,1626,1236, 858,472,87,-292,-675,-1050,-1424,-1807,-2163,-2514,-2860,-3197,-3530,-3851,-4177,-4501,-4815,-5115,-5415,-5714, -6009,-6300,-6580,-6860,-7135,-7385,-7629,-7850,-8076,-8283,-8473,-8651,-8822,-8967,-9099,-9210,-9322,-9422,-9508,-9585, -9649,-9691,-9727,-9740,-9740,-9736,-9717,-9678,-9623,-9541,-9445,-9329,-9195,-9047,-8889,-8715,-8527,-8316,-8086,-7858, -7615,-7362,-7108,-6850,-6575,-6293,-5990,-5684,-5382,-5080,-4763,-4447,-4133,-3813,-3478,-3145,-2810,-2493,-2176,-1850, -1536,-1226,-900,-582,-268,31,325,628,931,1230,1531,1837,2141,2439,2729,3019,3319,3616,3922,4229, 4523,4822,5109,5398,5676,5959,6244,6524,6788,7040,7283,7509,7739,7950,8160,8366,8550,8713,8867,9004, 9129,9234,9330,9419,9483,9518,9530,9524,9503,9466,9403,9326,9240,9132,9001,8847,8690,8532,8350,8164, 7971,7759,7541,7294,7048,6794,6532,6252,5966,5662,5347,5018,4680,4345,4005,3658,3314,2954,2598,2242, 1878,1524,1172,828,486,132,-219,-577,-934,-1281,-1635,-1985,-2327,-2671,-3018,-3368,-3701,-4027,-4347,-4659, -4953,-5242,-5524,-5805,-6076,-6326,-6566,-6801,-7029,-7246,-7452,-7666,-7873,-8059,-8226,-8392,-8545,-8681,-8813,-8930, -9035,-9120,-9186,-9230,-9259,-9265,-9269,-9256,-9230,-9179,-9116,-9031,-8941,-8833,-8720,-8599,-8457,-8303,-8127,-7937, -7737,-7506,-7281,-7043,-6793,-6527,-6249,-5952,-5656,-5351,-5040,-4733,-4434,-4118,-3803,-3473,-3159,-2847,-2527,-2217, -1909,-1603,-1287,-966,-647,-342,-30,271,572,871,1169,1481,1788,2087,2378,2669,2961,3256,3541,3839, 4132,4422,4713,4987,5270,5559,5843,6133,6416,6692,6969,7233,7487,7732,7976,8222,8448,8656,8853,9034, 9183,9326,9449,9574,9678,9747,9806,9852,9874,9886,9880,9860,9833,9785,9706,9618,9515,9395,9254,9097, 8929,8748,8536,8312,8071,7821,7567,7289,7012,6733,6432,6128,5812,5502,5186,4864,4532,4205,3859,3502, 3143,2773,2408,2039,1665,1282,896,505,125,-262,-647,-1011,-1379,-1743,-2102,-2461,-2801,-3145,-3476,-3811, -4130,-4444,-4770,-5096,-5410,-5715,-6012,-6309,-6604,-6871,-7142,-7404,-7652,-7891,-8106,-8308,-8503,-8678,-8840,-8998, -9145,-9271,-9390,-9487,-9581,-9668,-9731,-9785,-9834,-9868,-9875,-9864,-9837,-9788,-9737,-9651,-9562,-9446,-9318,-9162, -8996,-8811,-8617,-8418,-8205,-7973,-7733,-7480,-7218,-6941,-6664,-6384,-6096,-5791,-5478,-5160,-4841,-4515,-4184,-3855, -3535,-3212,-2878,-2543,-2217,-1899,-1575,-1259,-954,-649,-340,-32,280,577,876,1172,1465,1756,2055,2351, 2654,2951,3240,3532,3818,4103,4402,4689,4986,5280,5568,5839,6114,6382,6646,6905,7160,7407,7639,7865, 8071,8274,8475,8660,8830,8990,9127,9250,9346,9433,9497,9557,9586,9598,9582,9555,9508,9432,9345,9255, 9152,9029,8887,8732,8567,8394,8198,8005,7803,7584,7340,7081,6809,6536,6242,5943,5631,5316,4989,4649, 4300,3955,3611,3261,2916,2568,2220,1870,1503,1154,796,446,91,-266,-628,-993,-1358,-1727,-2090,-2451, -2790,-3137,-3476,-3817,-4147,-4461,-4775,-5068,-5353,-5626,-5901,-6169,-6433,-6679,-6930,-7166,-7392,-7597,-7823,-8033, -8230,-8414,-8576,-8736,-8869,-8991,-9092,-9184,-9268,-9332,-9370,-9390,-9399,-9390,-9371,-9336,-9296,-9244,-9170,-9078, -8978,-8854,-8718,-8579,-8418,-8246,-8050,-7840,-7609,-7360,-7109,-6848,-6572,-6294,-6009,-5702,-5398,-5086,-4770,-4455, -4146,-3839,-3517,-3195,-2879,-2554,-2226,-1903,-1592,-1285,-966,-652,-335,-19,289,599,903,1191,1488,1791, 2094,2392,2689,2978,3269,3551,3833,4124,4424,4712,5009,5292,5576,5857,6133,6412,6692,6966,7237,7488, 7727,7957,8182,8393,8591,8772,8946,9097,9224,9341,9439,9535,9609,9667,9707,9742,9743,9727,9703,9662, 9611,9540,9440,9328,9198,9045,8875,8685,8497,8290,8062,7824,7571,7313,7036,6754,6482,6196,5904,5600, 5280,4965,4632,4294,3952,3603,3251,2890,2511,2130,1756,1370,993,614,235,-133,-510,-881,-1249,-1610, -1958,-2304,-2644,-2995,-3331,-3672,-4004,-4344,-4667,-4983,-5305,-5625,-5929,-6232,-6522,-6815,-7082,-7326,-7567,-7811, -8028,-8241,-8431,-8619,-8790,-8941,-9084,-9223,-9360,-9473,-9578,-9667,-9745,-9807,-9845,-9880,-9896,-9897,-9877,-9834, -9776,-9696,-9596,-9482,-9351,-9208,-9054,-8875,-8687,-8483,-8265,-8037,-7801,-7557,-7305,-7038,-6760,-6456,-6153,-5851, -5544,-5224,-4902,-4575,-4243,-3903,-3555,-3228,-2909,-2582,-2259,-1934,-1610,-1302,-976,-659,-361,-64,240,548, 854,1146,1451,1752,2049,2337,2629,2922,3220,3516,3805,4102,4393,4676,4965,5246,5539,5822,6098,6370, 6633,6892,7147,7392,7635,7873,8102,8314,8514,8693,8875,9036,9180,9313,9428,9522,9596,9631,9665,9684, 9683,9658,9623,9566,9495,9398,9294,9183,9062,8918,8768,8599,8423,8225,8005,7778,7543,7296,7032,6745, 6457,6153,5836,5515,5191,4863,4529,4190,3845,3501,3155,2809,2458,2112,1763,1404,1042,673,1,-5, -213,-644,-1074,-1383,-1508,-1491,-1349,-1115,-831,-527,-156,333,960,1619,2198,2647,2985,3235,3425,3595, 3777,3988,4199,4404,4652,4995,5427,5912,6409,6909,7376,7759,8061,8281,8426,8480,8428,8301,8139,7951, 7759,7573,7398,7236,7060,6875,6684,6474,6237,5969,5654,5301,4912,4499,4068,3631,3187,2748,2306,1883, 1482,1110,756,417,92,-215,-524,-819,-1083,-1326,-1569,-1834,-2131,-2443,-2757,-3076,-3374,-3653,-3920,-4191, -4483,-4782,-5062,-5328,-5570,-5798,-6017,-6235,-6477,-6748,-7034,-7315,-7589,-7861,-8147,-8440,-8740,-9069,-9391,-9689, -9937,-10141,-10328,-10490,-10631,-10755,-10862,-10929,-10951,-10922,-10876,-10830,-10774,-10713,-10627,-10506,-10326,-10077,-9757,-9385, -8960,-8468,-7901,-7254,-6538,-5768,-4963,-4148,-3365,-2624,-1922,-1262,-653,-109,372,792,1148,1434,1652,1811, 1911,1963,1961,1912,1821,1701,1552,1381,1181,972,762,548,348,165,15,-96,-167,-198,-182,-120, -20,119,298,525,800,1121,1493,1908,2360,2846,3369,3932,4527,5145,5784,6430,7066,7663,8224,8745, 9212,9600,9906,10133,10295,10392,10424,10414,10380,10314,10207,10065,9912,9757,9583,9381,9167,8933,8681,8387, 8067,7740,7418,7071,6709,6343,5974,5610,5242,4885,4557,4254,3954,3654,3360,3085,2813,2532,2256,1993, 1714,1423,1107,789,472,152,-169,-480,-787,-1086,-1387,-1683,-1960,-2221,-2469,-2711,-2957,-3195,-3437,-3692, -3949,-4204,-4458,-4718,-4996,-5287,-5574,-5869,-6158,-6438,-6697,-6936,-7172,-7401,-7610,-7797,-7969,-8129,-8269,-8390, -8509,-8634,-8773,-8907,-9033,-9153,-9276,-9385,-9469,-9538,-9584,-9596,-9551,-9447,-9285,-9062,-8764,-8387,-7951,-7457, -6912,-6324,-5699,-5060,-4422,-3777,-3130,-2499,-1889,-1311,-764,-261,191,596,944,1242,1478,1657,1768,1813, 1802,1741,1637,1488,1307,1116,908,688,469,256,52,-138,-323,-500,-666,-824,-966,-1083,-1172,-1226, -1245,-1225,-1159,-1041,-868,-627,-315,72,528,1044,1616,2238,2894,3583,4303,5051,5803,6551,7295,8021, 8727,9387,10005,10569,11063,11460,11764,11975,12107,12153,12118,12012,11861,11648,11385,11080,10757,10443,10113,9770, 9432,9102,8770,8430,8095,7775,7467,7148,6816,6479,6135,5779,5406,5032,4672,4314,3947,3574,3206,2854, 2514,2185,1877,1593,1323,1055,781,516,259,4,-254,-510,-767,-1035,-1323,-1623,-1918,-2208,-2497,-2785, -3069,-3347,-3623,-3907,-4185,-4441,-4681,-4918,-5160,-5404,-5648,-5902,-6166,-6429,-6679,-6930,-7197,-7485,-7778,-8075, -8373,-8664,-8934,-9180,-9410,-9637,-9856,-10051,-10223,-10366,-10481,-10565,-10621,-10675,-10724,-10768,-10782,-10762,-10702,-10605, -10453,-10245,-9990,-9669,-9263,-8754,-8147,-7465,-6726,-5940,-5128,-4312,-3504,-2707,-1926,-1196,-525,78,606,1072, 1469,1805,2079,2291,2444,2535,2564,2540,2466,2349,2194,2004,1792,1564,1329,1080,827,577,336,116, -78,-242,-367,-456,-516,-550,-551,-514,-438,-318,-154,66,336,662,1041,1483,1972,2502,3073,3673, 4300,4939,5596,6258,6906,7509,8062,8568,9025,9419,9761,10055,10297,10467,10557,10583,10569,10515,10418,10283, 10117,9917,9668,9375,9064,8753,8433,8100,7763,7419,7074,6713,6359,6023,5712,5414,5111,4811,4513,4213, 3906,3597,3294,2999,2693,2366,2035,1702,1367,1037,708,398,97,-205,-503,-799,-1078,-1342,-1601,-1845, -2082,-2318,-2562,-2825,-3085,-3339,-3598,-3863,-4134,-4404,-4681,-4970,-5259,-5535,-5797,-6048,-6297,-6535,-6766,-6989, -7211,-7425,-7620,-7807,-7990,-8180,-8367,-8550,-8732,-8918,-9089,-9236,-9365,-9488,-9599,-9686,-9733,-9747,-9719,-9641, -9502,-9322,-9097,-8833,-8508,-8123,-7687,-7205,-6678,-6117,-5534,-4942,-4343,-3730,-3105,-2486,-1887,-1316,-778,-290, 142,514,833,1093,1299,1446,1528,1560,1543,1489,1398,1281,1145,994,834,663,486,308,129,-47, -216,-375,-510,-625,-711,-764,-772,-731,-640,-492,-288,-21,302,688,1131,1635,2182,2781,3415,4075, 4750,5443,6154,6874,7585,8271,8928,9541,10089,10559,10955,11281,11525,11670,11728,11713,11637,11498,11304,11086, 10856,10597,10316,10021,9724,9431,9129,8822,8521,8221,7912,7585,7246,6905,6564,6205,5841,5478,5115,4744, 4363,3989,3630,3285,2941,2606,2287,1978,1669,1367,1076,796,519,240,-44,-327,-616,-910,-1209,-1504, -1795,-2081,-2377,-2667,-2954,-3231,-3508,-3775,-4035,-4280,-4526,-4771,-5019,-5261,-5504,-5750,-6003,-6253,-6504,-6773, -7051,-7327,-7598,-7867,-8136,-8395,-8641,-8873,-9107,-9327,-9522,-9690,-9839,-9978,-10103,-10209,-10302,-10389,-10460,-10497, -10502,-10484,-10444,-10370,-10243,-10067,-9829,-9512,-9101,-8607,-8047,-7424,-6749,-6016,-5246,-4454,-3654,-2855,-2079,-1347, -664,-37,534,1048,1501,1885,2210,2458,2650,2767,2820,2814,2757,2648,2499,2309,2091,1853,1595,1318, 1039,764,491,228,-21,-251,-457,-642,-802,-928,-1027,-1090,-1126,-1130,-1094,-1007,-858,-648,-372,-28, 370,828,1344,1909,2522,3178,3864,4571,5278,5980,6682,7364,8023,8640,9201,9707,10146,10508,10799,11026, 11192,11286,11300,11256,11156,11003,10802,10568,10318,10050,9751,9424,9091,8751,8407,8062,7723,7394,7065,6725, 6382,6046,5715,5386,5052,4725,4392,4049,3692,3332,2975,2628,2278,1930,1589,1251,914,577,257,-51, -342,-632,-917,-1201,-1478,-1759,-2042,-2317,-2586,-2853,-3134,-3420,-3706,-3987,-4271,-4551,-4825,-5082,-5345,-5608, -5869,-6119,-6352,-6584,-6809,-7020,-7227,-7437,-7658,-7881,-8095,-8297,-8502,-8703,-8892,-9074,-9258,-9440,-9600,-9731, -9836,-9918,-9983,-10016,-10023,-10004,-9961,-9870,-9725,-9541,-9326,-9066,-8759,-8403,-7999,-7550,-7038,-6482,-5892,-5284, -4666,-4041,-3412,-2801,-2212,-1653,-1136,-675,-276,65,356,593,783,918,1007,1052,1060,1026,963,882, 780,670,547,417,284,144,12,-118,-228,-314,-369,-389,-371,-317,-213,-65,138,389,702,1066, 1482,1946,2453,3003,3591,4224,4883,5558,6238,6921,7601,8273,8909,9510,10064,10549,10948,11257,11487,11650, 11739,11751,11710,11611,11470,11281,11059,10830,10591,10339,10071,9787,9495,9196,8877,8551,8230,7902,7563,7207, 6839,6468,6095,5713,5339,4975,4616,4259,3897,3544,3204,2870,2543,2227,1922,1620,1311,997,692,390, 90,-216,-519,-816,-1122,-1430,-1735,-2030,-2311,-2589,-2860,-3129,-3386,-3646,-3906,-4161,-4407,-4647,-4891,-5148, -5400,-5659,-5925,-6198,-6466,-6728,-6985,-7246,-7515,-7773,-8021,-8264,-8496,-8706,-8899,-9080,-9264,-9435,-9591,-9728, -9853,-9964,-10053,-10120,-10178,-10222,-10237,-10212,-10138,-10016,-9842,-9606,-9308,-8948,-8530,-8039,-7473,-6847,-6181,-5487, -4774,-4060,-3352,-2660,-1987,-1341,-728,-168,333,774,1155,1474,1735,1931,2073,2151,2176,2141,2061,1933, 1773,1581,1367,1133,892,642,390,135,-112,-349,-567,-771,-958,-1118,-1259,-1371,-1454,-1501,-1501,-1457, -1357,-1206,-995,-723,-388,17,484,1015,1594,2223,2891,3593,4321,5074,5840,6606,7349,8061,8742,9373, 9949,10457,10895,11265,11536,11715,11814,11843,11809,11714,11566,11379,11154,10888,10590,10275,9955,9632,9294,8952, 8606,8259,7901,7538,7186,6839,6496,6143,5787,5433,5075,4711,4345,3991,3642,3289,2933,2581,2239,1898, 1562,1238,928,623,319,17,-281,-574,-859,-1141,-1424,-1700,-1978,-2264,-2554,-2841,-3123,-3399,-3679,-3958, -4232,-4507,-4785,-5065,-5330,-5588,-5841,-6097,-6349,-6595,-6843,-7093,-7345,-7584,-7813,-8047,-8286,-8519,-8747,-8967, -9183,-9383,-9557,-9714,-9867,-10010,-10132,-10226,-10300,-10354,-10375,-10362,-10329,-10273,-10196,-10070,-9895,-9669,-9390,-9047, -8650,-8197,-7704,-7165,-6571,-5937,-5277,-4608,-3947,-3296,-2674,-2091,-1553,-1049,-592,-190,154,442,678,855, 983,1067,1112,1119,1095,1039,961,859,743,613,474,331,191,58,-65,-172,-251,-305,-323,-304, -241,-138,8,201,448,749,1102,1509,1963,2457,2994,3560,4161,4793,5453,6121,6791,7452,8091,8697, 9257,9768,10229,10625,10935,11169,11325,11419,11448,11419,11347,11244,11102,10915,10701,10471,10232,9972,9698,9414, 9129,8822,8496,8163,7827,7493,7147,6800,6449,6104,5749,5392,5045,4709,4380,4049,3725,3404,3084,2764, 2447,2139,1839,1538,1231,926,619,314,8,-297,-590,-878,-1162,-1450,-1735,-2013,-2281,-2548,-2811,-3068, -3323,-3583,-3847,-4116,-4378,-4642,-4905,-5175,-5439,-5706,-5982,-6258,-6526,-6782,-7031,-7277,-7520,-7748,-7971,-8192, -8403,-8592,-8768,-8928,-9089,-9238,-9374,-9498,-9611,-9699,-9760,-9785,-9788,-9766,-9703,-9594,-9434,-9219,-8950,-8608, -8204,-7755,-7265,-6724,-6142,-5527,-4893,-4247,-3594,-2958,-2345,-1756,-1203,-679,-203,227,598,911,1167,1363, 1499,1583,1615,1596,1537,1429,1285,1113,920,706,480,249,23,-206,-432,-654,-862,-1057,-1228,-1376, -1491,-1571,-1614,-1618,-1581,-1497,-1356,-1163,-902,-580,-195,247,751,1308,1920,2575,3268,3991,4735,5486, 6236,6983,7714,8415,9066,9657,10179,10625,10982,11257,11461,11587,11637,11612,11525,11390,11209,10990,10746,10488, 10212,9913,9593,9268,8940,8604,8265,7928,7593,7252,6898,6538,6184,5835,5479,5125,4775,4426,4070,3709, 3355,3007,2667,2335,2003,1679,1360,1042,731,426,132,-155,-441,-730,-1017,-1301,-1586,-1871,-2152,-2424, -2696,-2973,-3250,-3525,-3797,-4071,-4339,-4599,-4854,-5113,-5372,-5636,-5890,-6141,-6388,-6638,-6876,-7114,-7355,-7602, -7848,-8079,-8305,-8526,-8739,-8938,-9128,-9315,-9495,-9657,-9790,-9905,-10006,-10092,-10158,-10203,-10230,-10232,-10198,-10119, -10007,-9854,-9664,-9416,-9111,-8748,-8321,-7828,-7273,-6676,-6051,-5399,-4732,-4058,-3387,-2735,-2111,-1517,-976,-492, -61,314,637,910,1122,1282,1392,1452,1461,1435,1372,1284,1168,1029,872,700,520,333,140,-39, -205,-356,-485,-587,-665,-706,-707,-665,-579,-439,-250,-10,283,628,1022,1471,1965,2505,3086,3693, 4331,4989,5666,6347,7023,7684,8320,8907,9439,9923,10341,10699,10980,11187,11323,11394,11391,11337,11243,11120, 10958,10764,10540,10301,10038,9757,9463,9168,8866,8549,8219,7880,7540,7194,6843,6499,6161,5823,5479,5138, 4796,4465,4138,3806,3484,3169,2852,2532,2213,1898,1587,1279,970,667,366,66,-237,-536,-822,-1101, -1378,-1649,-1919,-2184,-2446,-2711,-2970,-3223,-3471,-3726,-3989,-4248,-4503,-4765,-5030,-5288,-5538,-5783,-6031,-6284, -6524,-6760,-6989,-7214,-7426,-7623,-7820,-8014,-8206,-8380,-8541,-8695,-8835,-8954,-9061,-9155,-9239,-9298,-9322,-9310, -9267,-9190,-9072,-8908,-8706,-8457,-8152,-7786,-7367,-6907,-6411,-5887,-5338,-4769,-4196,-3612,-3029,-2461,-1921,-1414, -950,-524,-147,184,465,695,874,995,1062,1080,1053,988,891,763,618,452,272,82,-114,-307, -495,-678,-847,-997,-1131,-1240,-1316,-1359,-1366,-1335,-1258,-1133,-960,-729,-445,-99,310,776,1294,1858, 2465,3108,3781,4478,5200,5927,6649,7353,8017,8644,9228,9745,10196,10575,10874,11089,11222,11280,11281,11228, 11121,10971,10787,10572,10324,10051,9766,9476,9175,8860,8538,8211,7878,7537,7193,6851,6513,6173,5825,5474, 5124,4776,4423,4075,3732,3397,3056,2713,2376,2047,1723,1406,1098,798,502,206,-90,-379,-666,-947, -1224,-1500,-1772,-2046,-2324,-2596,-2869,-3131,-3395,-3660,-3919,-4178,-4439,-4697,-4957,-5210,-5450,-5700,-5946,-6194, -6438,-6679,-6925,-7164,-7393,-7618,-7845,-8073,-8294,-8504,-8706,-8904,-9081,-9243,-9390,-9535,-9665,-9781,-9869,-9940, -9988,-10013,-10007,-9974,-9921,-9836,-9697,-9514,-9270,-8974,-8625,-8210,-7746,-7234,-6672,-6061,-5422,-4758,-4092,-3430, -2784,-2166,-1581,-1033,-530,-71,332,678,961,1193,1371,1498,1573,1605,1594,1545,1452,1335,1189,1024, 840,644,443,235,29,-175,-369,-549,-709,-837,-937,-1004,-1030,-1018,-963,-859,-709,-498,-233,81, 450,868,1335,1851,2410,3012,3647,4304,4984,5668,6354,7031,7694,8328,8924,9458,9927,10325,10654,10911, 11092,11209,11266,11259,11194,11079,10932,10756,10549,10322,10076,9818,9531,9231,8918,8602,8282,7953,7619,7279, 6935,6590,6236,5889,5549,5214,4874,4538,4204,3872,3538,3209,2888,2571,2253,1936,1614,1299,984,672, 363,65,-232,-524,-820,-1109,-1392,-1670,-1942,-2208,-2470,-2727,-2989,-3253,-3515,-3772,-4031,-4288,-4547,-4803, -5059,-5319,-5579,-5833,-6077,-6313,-6551,-6782,-7007,-7228,-7445,-7657,-7854,-8033,-8212,-8383,-8549,-8700,-8843,-8974, -9090,-9176,-9244,-9294,-9327,-9336,-9312,-9255,-9164,-9029,-8842,-8615,-8344,-8034,-7674,-7261,-6800,-6307,-5774,-5215, -4643,-4068,-3498,-2932,-2379,-1844,-1347,-889,-474,-109,203,464,674,834,947,1007,1021,998,933,844, 729,593,449,291,128,-46,-213,-379,-534,-675,-791,-889,-962,-1006,-1019,-997,-930,-818,-654,-434, -162,167,547,982,1469,2001,2576,3189,3829,4494,5168,5844,6526,7193,7841,8446,9003,9504,9939,10299, 10587,10812,10966,11047,11060,11011,10915,10778,10598,10396,10167,9922,9653,9363,9064,8761,8450,8131,7808,7485, 7159,6815,6471,6127,5786,5441,5093,4743,4400,4047,3694,3340,2997,2661,2325,1993,1670,1349,1032,719, 411,115,-176,-471,-761,-1048,-1335,-1618,-1906,-2183,-2456,-2730,-3001,-3275,-3545,-3807,-4071,-4326,-4581,-4827, -5077,-5328,-5580,-5822,-6060,-6294,-6528,-6757,-6983,-7210,-7439,-7663,-7874,-8080,-8278,-8472,-8651,-8821,-8985,-9139, -9274,-9389,-9483,-9565,-9631,-9674,-9696,-9697,-9670,-9605,-9495,-9349,-9168,-8941,-8661,-8322,-7925,-7478,-6971,-6414, -5825,-5216,-4584,-3943,-3302,-2666,-2053,-1466,-920,-417,29,426,774,1072,1312,1505,1640,1727,1765,1752, 1703,1618,1500,1358,1190,1002,801,589,369,143,-77,-288,-489,-672,-832,-968,-1068,-1132,-1162,-1147, -1089,-985,-834,-625,-367,-47,326,755,1240,1770,2343,2954,3605,4288,4992,5712,6437,7150,7840,8493, 9107,9673,10178,10604,10957,11231,11424,11544,11596,11589,11539,11433,11286,11095,10880,10642,10374,10093,9803,9498, 9180,8842,8500,8151,7797,7436,7082,6728,6369,6009,5651,5292,4944,4597,4252,3912,3570,3233,2890,2548, 2216,1886,1559,1237,912,597,282,-33,-341,-641,-933,-1219,-1504,-1784,-2058,-2330,-2600,-2863,-3124,-3379, -3641,-3905,-4168,-4430,-4693,-4952,-5217,-5466,-5717,-5968,-6216,-6463,-6695,-6923,-7149,-7363,-7568,-7771,-7973,-8171, -8356,-8525,-8684,-8839,-8978,-9105,-9224,-9331,-9419,-9477,-9512,-9523,-9510,-9468,-9390,-9287,-9141,-8949,-8700,-8406, -8063,-7681,-7254,-6784,-6279,-5744,-5178,-4599,-4010,-3433,-2872,-2336,-1820,-1343,-905,-509,-163,132,369,554, 691,782,833,843,818,764,678,573,449,314,174,27,-120,-263,-404,-534,-652,-754,-827,-875, -890,-871,-814,-711,-565,-368,-113,198,561,970,1426,1924,2465,3040,3649,4284,4936,5597,6249,6892, 7518,8113,8674,9188,9644,10041,10359,10602,10776,10883,10936,10925,10863,10754,10607,10420,10205,9971,9724,9468, 9190,8903,8609,8306,7992,7674,7356,7039,6711,6375,6033,5691,5349,5001,4651,4308,3965,3624,3282,2940, 2608,2284,1962,1646,1340,1036,734,432,135,-157,-445,-732,-1020,-1303,-1586,-1871,-2158,-2438,-2708,-2977, -3243,-3507,-3769,-4025,-4284,-4537,-4786,-5030,-5268,-5514,-5756,-5994,-6232,-6467,-6704,-6928,-7147,-7368,-7589,-7801, -8004,-8196,-8380,-8551,-8701,-8841,-8974,-9095,-9196,-9276,-9335,-9378,-9394,-9384,-9351,-9293,-9202,-9070,-8888,-8660, -8383,-8058,-7678,-7253,-6787,-6275,-5721,-5137,-4536,-3931,-3327,-2734,-2164,-1620,-1105,-628,-192,199,532,817, 1057,1243,1379,1469,1515,1517,1479,1401,1290,1159,1002,828,636,439,234,26,-175,-367,-547,-703, -834,-937,-1012,-1052,-1057,-1022,-944,-815,-642,-414,-135,204,589,1031,1519,2062,2649,3273,3929,4611, 5311,6020,6724,7417,8092,8728,9308,9831,10286,10677,10987,11228,11394,11493,11531,11503,11421,11303,11153,10964, 10752,10512,10254,9976,9676,9364,9048,8723,8388,8042,7700,7352,6997,6642,6292,5945,5604,5259,4911,4567, 4224,3880,3540,3202,2866,2534,2195,1858,1529,1198,875,557,241,-64,-368,-672,-967,-1257,-1544,-1823, -2101,-2376,-2645,-2919,-3195,-3466,-3736,-4002,-4275,-4547,-4816,-5087,-5357,-5626,-5890,-6139,-6389,-6632,-6875,-7109, -7337,-7561,-7780,-7987,-8183,-8373,-8560,-8743,-8910,-9067,-9214,-9346,-9453,-9548,-9625,-9689,-9729,-9737,-9718,-9668, -9581,-9454,-9289,-9086,-8842,-8546,-8196,-7791,-7343,-6854,-6323,-5766,-5192,-4606,-4007,-3411,-2824,-2267,-1742,-1256, -813,-423,-84,207,452,643,782,870,913,915,884,821,734,625,501,360,204,45,-120,-287, -447,-601,-741,-864,-970,-1048,-1098,-1106,-1078,-1004,-886,-716,-499,-232,93,471,902,1375,1890,2444, 3026,3632,4262,4913,5573,6233,6878,7502,8094,8646,9145,9591,9973,10290,10532,10698,10797,10836,10818,10752, 10645,10505,10332,10131,9902,9658,9409,9146,8871,8590,8299,7996,7683,7361,7036,6712,6375,6036,5695,5351, 5002,4652,4307,3965,3632,3299,2968,2644,2324,2006,1693,1385,1085,787,486,185,-110,-410,-704,-1000, -1289,-1579,-1860,-2144,-2426,-2698,-2966,-3230,-3491,-3745,-3993,-4243,-4495,-4748,-4991,-5233,-5473,-5717,-5954,-6190, -6427,-6664,-6895,-7114,-7327,-7534,-7734,-7925,-8101,-8269,-8431,-8572,-8694,-8802,-8898,-8978,-9043,-9090,-9117,-9121, -9094,-9030,-8944,-8822,-8667,-8465,-8214,-7916,-7567,-7163,-6716,-6228,-5713,-5175,-4614,-4037,-3463,-2890,-2345,-1812, -1316,-861,-438,-60,278,569,809,998,1143,1231,1280,1281,1248,1181,1081,951,801,630,445,252, 59,-133,-316,-491,-650,-788,-907,-999,-1061,-1088,-1076,-1029,-938,-804,-623,-389,-103,236,634,1077, 1572,2108,2687,3308,3956,4631,5321,6013,6699,7366,8001,8603,9162,9664,10098,10463,10754,10972,11115,11199, 11225,11204,11129,11008,10848,10659,10439,10196,9935,9658,9369,9063,8739,8410,8079,7739,7395,7052,6712,6370, 6020,5668,5324,4980,4638,4292,3948,3604,3259,2914,2566,2227,1893,1557,1228,904,581,266,-43,-349, -646,-935,-1221,-1505,-1786,-2065,-2339,-2611,-2881,-3147,-3414,-3682,-3952,-4222,-4486,-4753,-5018,-5278,-5535,-5784, -6034,-6284,-6524,-6754,-6982,-7203,-7418,-7630,-7834,-8039,-8240,-8423,-8599,-8767,-8928,-9075,-9207,-9327,-9439,-9523, -9583,-9617,-9632,-9621,-9581,-9509,-9407,-9262,-9074,-8835,-8549,-8219,-7841,-7415,-6940,-6427,-5880,-5296,-4695,-4081, -3476,-2883,-2310,-1763,-1248,-774,-347,26,349,615,826,985,1100,1170,1191,1175,1122,1042,935,804, 660,499,328,146,-42,-228,-417,-596,-762,-910,-1033,-1135,-1207,-1240,-1237,-1195,-1101,-959,-760,-512, -215,137,538,984,1477,2007,2578,3182,3806,4450,5103,5768,6426,7071,7692,8277,8814,9293,9706,10051, 10328,10544,10681,10751,10764,10727,10637,10510,10351,10175,9968,9742,9497,9237,8968,8682,8388,8089,7781,7463, 7131,6793,6453,6108,5760,5413,5068,4728,4384,4039,3702,3372,3046,2723,2407,2093,1785,1471,1161,855, 552,250,-51,-351,-648,-947,-1242,-1535,-1821,-2095,-2370,-2642,-2903,-3163,-3421,-3678,-3928,-4177,-4420,-4665, -4911,-5161,-5409,-5656,-5899,-6141,-6374,-6603,-6832,-7059,-7279,-7488,-7683,-7872,-8050,-8209,-8360,-8503,-8636,-8754, -8853,-8938,-9008,-9058,-9089,-9099,-9095,-9058,-8992,-8882,-8737,-8554,-8330,-8055,-7736,-7369,-6956,-6496,-5995,-5469, -4924,-4368,-3804,-3244,-2693,-2160,-1649,-1165,-717,-322,36,349,612,830,1001,1123,1200,1232,1217,1167, 1087,976,849,700,539,372,198,24,-145,-300,-445,-569,-672,-758,-813,-840,-835,-790,-704,-576, -403,-181,93,413,786,1210,1684,2204,2761,3348,3966,4603,5252,5905,6558,7196,7805,8376,8899,9371, 9784,10135,10420,10638,10789,10880,10904,10878,10807,10698,10552,10372,10165,9937,9684,9410,9127,8836,8542,8229, 7912,7590,7266,6938,6607,6275,5946,5616,5275,4938,4601,4259,3915,3571,3232,2894,2557,2217,1881,1551, 1225,908,593,289,-9,-311,-603,-893,-1176,-1459,-1739,-2016,-2291,-2565,-2839,-3112,-3384,-3653,-3921,-4189, -4456,-4721,-4980,-5239,-5494,-5742,-5979,-6216,-6447,-6681,-6901,-7124,-7341,-7553,-7752,-7946,-8133,-8319,-8495,-8661, -8812,-8949,-9073,-9174,-9257,-9327,-9378,-9400,-9398,-9366,-9304,-9207,-9078,-8907,-8700,-8452,-8154,-7800,-7396,-6946, -6451,-5917,-5357,-4772,-4173,-3565,-2955,-2364,-1797,-1261,-767,-312,88,443,743,996,1193,1342,1436,1488, 1498,1473,1411,1325,1210,1076,919,746,561,365,171,-27,-224,-408,-583,-740,-875,-982,-1056,-1100, -1101,-1055,-967,-831,-648,-411,-116,224,613,1052,1531,2052,2609,3200,3825,4471,5130,5790,6449,7091, 7711,8296,8834,9323,9751,10102,10383,10594,10739,10816,10837,10812,10735,10624,10475,10292,10088,9870,9631,9375, 9103,8819,8522,8208,7884,7555,7221,6880,6529,6179,5828,5474,5116,4769,4419,4079,3740,3399,3063,2735, 2404,2077,1752,1433,1113,790,470,152,-163,-477,-786,-1093,-1390,-1685,-1981,-2264,-2546,-2814,-3083,-3347, -3607,-3862,-4122,-4376,-4636,-4891,-5144,-5400,-5649,-5902,-6148,-6397,-6641,-6878,-7105,-7326,-7538,-7742,-7938,-8121, -8296,-8461,-8611,-8746,-8873,-8987,-9093,-9183,-9252,-9310,-9349,-9361,-9343,-9306,-9245,-9150,-9013,-8836,-8613,-8344, -8028,-7657,-7249,-6799,-6310,-5783,-5230,-4660,-4079,-3494,-2924,-2366,-1836,-1331,-859,-424,-34,311,601,845, 1034,1173,1269,1318,1324,1295,1229,1133,1017,887,739,586,430,269,114,-37,-179,-302,-409,-496, -554,-586,-591,-565,-498,-390,-237,-34,218,519,874,1270,1713,2200,2727,3289,3879,4492,5116,5746, 6371,6986,7582,8152,8683,9163,9587,9955,10256,10491,10666,10777,10836,10834,10781,10685,10551,10383,10186,9968, 9731,9477,9206,8918,8624,8324,8020,7707,7391,7071,6747,6413,6075,5736,5399,5057,4712,4365,4018,3668, 3315,2966,2623,2284,1945,1616,1287,968,649,333,29,-272,-568,-862,-1157,-1449,-1737,-2026,-2314,-2597, -2878,-3157,-3435,-3715,-3991,-4262,-4531,-4793,-5053,-5307,-5555,-5805,-6046,-6286,-6515,-6745,-6968,-7189,-7400,-7613, -7820,-8021,-8214,-8391,-8560,-8718,-8862,-8991,-9107,-9208,-9286,-9335,-9365,-9379,-9363,-9323,-9250,-9148,-9011,-8832, -8607,-8338,-8027,-7666,-7255,-6797,-6297,-5756,-5181,-4582,-3976,-3368,-2772,-2188,-1628,-1098,-604,-159,243,590, 884,1125,1318,1464,1566,1623,1640,1619,1559,1472,1357,1219,1065,896,712,522,329,134,-57,-242, -410,-558,-681,-781,-847,-881,-873,-822,-726,-582,-394,-154,132,467,855,1286,1763,2285,2844,3430, 4043,4679,5329,5987,6636,7275,7886,8459,8985,9449,9855,10196,10472,10673,10807,10880,10896,10858,10779,10662, 10513,10340,10136,9907,9662,9399,9120,8826,8523,8209,7886,7544,7201,6855,6505,6150,5797,5444,5098,4743, 4392,4045,3704,3363,3023,2687,2353,2018,1680,1348,1014,685,359,33,-291,-606,-921,-1233,-1538,-1838, -2129,-2414,-2696,-2974,-3247,-3519,-3786,-4055,-4319,-4582,-4849,-5118,-5382,-5649,-5910,-6168,-6428,-6676,-6922,-7159, -7399,-7625,-7838,-8044,-8241,-8426,-8604,-8768,-8928,-9078,-9208,-9329,-9432,-9526,-9601,-9656,-9696,-9714,-9701,-9667, -9588,-9481,-9338,-9151,-8920,-8645,-8320,-7946,-7520,-7045,-6533,-5990,-5419,-4830,-4226,-3622,-3024,-2437,-1874,-1340, -848,-398,8,367,670,925,1123,1273,1369,1416,1421,1392,1329,1240,1125,995,850,694,530,370, 208,55,-96,-231,-353,-457,-545,-603,-631,-628,-586,-505,-377,-203,19,292,617,993,1415,1875, 2377,2914,3481,4071,4681,5303,5928,6544,7146,7719,8261,8766,9221,9622,9963,10237,10446,10587,10671,10697, 10679,10611,10499,10358,10181,9979,9755,9516,9267,9004,8730,8441,8150,7849,7541,7225,6907,6588,6259,5924, 5583,5239,4893,4548,4198,3851,3505,3162,2816,2479,2146,1818,1495,1178,864,555,248,-58,-359,-661, -958,-1252,-1550,-1842,-2134,-2424,-2711,-2997,-3276,-3550,-3825,-4095,-4363,-4626,-4887,-5141,-5395,-5638,-5882,-6120, -6362,-6596,-6824,-7052,-7277,-7491,-7695,-7899,-8095,-8283,-8454,-8613,-8758,-8887,-8997,-9089,-9167,-9229,-9269,-9282, -9268,-9236,-9173,-9079,-8953,-8793,-8595,-8350,-8051,-7709,-7315,-6876,-6391,-5870,-5318,-4743,-4149,-3548,-2951,-2368, -1813,-1287,-797,-347,59,419,734,997,1210,1371,1487,1563,1594,1585,1547,1471,1370,1241,1092,927, 754,569,384,200,23,-146,-304,-443,-553,-633,-687,-699,-680,-619,-520,-375,-183,62,351,690, 1072,1499,1967,2477,3019,3602,4204,4829,5459,6095,6724,7332,7914,8465,8964,9409,9791,10105,10355,10541, 10667,10734,10749,10718,10646,10530,10382,10209,10014,9798,9561,9304,9034,8744,8442,8129,7810,7484,7151,6814, 6472,6130,5788,5438,5097,4754,4418,4076,3737,3397,3060,2719,2381,2045,1712,1378,1043,712,382,61, -261,-577,-887,-1192,-1491,-1791,-2084,-2367,-2649,-2927,-3198,-3472,-3742,-4016,-4292,-4565,-4839,-5109,-5378,-5647, -5915,-6176,-6437,-6691,-6939,-7178,-7409,-7632,-7853,-8058,-8259,-8452,-8639,-8808,-8969,-9115,-9262,-9386,-9504,-9600, -9681,-9744,-9780,-9791,-9778,-9744,-9669,-9559,-9409,-9220,-8982,-8698,-8362,-7982,-7555,-7080,-6559,-6002,-5417,-4812, -4198,-3579,-2969,-2379,-1808,-1267,-766,-307,100,455,758,1003,1191,1332,1422,1468,1471,1431,1363,1267, 1148,1010,862,703,537,369,202,37,-118,-265,-402,-521,-617,-692,-742,-753,-728,-661,-554,-393, -184,74,378,733,1132,1583,2067,2589,3145,3723,4318,4930,5543,6159,6766,7354,7910,8429,8903,9320, 9682,9982,10220,10392,10504,10555,10554,10509,10421,10296,10143,9965,9767,9547,9311,9060,8803,8532,8253,7962, 7667,7362,7048,6721,6399,6067,5732,5391,5048,4705,4361,4015,3673,3338,3003,2673,2345,2020,1700,1383, 1070,759,451,147,-159,-463,-767,-1072,-1372,-1672,-1969,-2257,-2547,-2833,-3116,-3396,-3670,-3939,-4206,-4472, -4732,-4991,-5248,-5505,-5755,-6001,-6248,-6491,-6734,-6973,-7206,-7438,-7659,-7868,-8068,-8258,-8441,-8608,-8761,-8900, -9025,-9131,-9214,-9281,-9330,-9365,-9378,-9359,-9320,-9245,-9142,-8998,-8814,-8594,-8325,-8006,-7633,-7215,-6747,-6239, -5690,-5120,-4535,-3940,-3343,-2757,-2186,-1645,-1133,-665,-238,145,480,770,1010,1206,1346,1443,1496,1507, 1485,1420,1335,1220,1085,932,767,594,418,245,79,-73,-214,-337,-441,-520,-564,-580,-561,-499, -402,-258,-79,149,422,746,1111,1520,1976,2466,2991,3545,4127,4728,5340,5956,6564,7155,7718,8243, 8721,9155,9529,9849,10099,10291,10423,10498,10523,10500,10440,10344,10215,10051,9865,9654,9428,9182,8921,8648, 8362,8066,7758,7442,7123,6804,6476,6150,5823,5495,5163,4829,4495,4165,3834,3498,3165,2830,2494,2156, 1822,1489,1163,834,511,191,-123,-433,-744,-1047,-1343,-1634,-1923,-2210,-2492,-2772,-3053,-3331,-3608,-3886, -4162,-4441,-4722,-4998,-5276,-5548,-5818,-6080,-6340,-6591,-6840,-7086,-7320,-7546,-7764,-7975,-8179,-8372,-8560,-8738, -8913,-9069,-9212,-9336,-9456,-9552,-9632,-9687,-9726,-9736,-9716,-9660,-9577,-9454,-9293,-9089,-8838,-8540,-8188,-7783, -7331,-6829,-6294,-5722,-5119,-4497,-3865,-3230,-2607,-1999,-1420,-880,-380,73,475,825,1118,1354,1539,1665, 1746,1776,1770,1728,1650,1548,1426,1284,1125,958,780,602,426,249,79,-79,-226,-359,-463,-547, -604,-629,-622,-570,-475,-331,-138,105,399,742,1131,1562,2035,2542,3081,3651,4242,4847,5460,6076, 6677,7267,7833,8361,8847,9281,9654,9968,10214,10399,10521,10591,10605,10570,10492,10377,10236,10066,9873,9663, 9437,9196,8940,8673,8395,8106,7806,7501,7187,6868,6537,6201,5864,5521,5180,4833,4493,4151,3812,3471, 3136,2804,2477,2152,1828,1509,1194,878,560,244,-67,-379,-693,-1002,-1309,-1618,-1919,-2218,-2512,-2800, -3084,-3365,-3644,-3918,-4193,-4462,-4731,-4995,-5259,-5522,-5785,-6045,-6305,-6557,-6811,-7057,-7301,-7533,-7761,-7980, -8193,-8387,-8572,-8743,-8902,-9043,-9170,-9285,-9382,-9464,-9525,-9563,-9585,-9579,-9548,-9491,-9403,-9279,-9111,-8895, -8637,-8326,-7966,-7552,-7093,-6588,-6048,-5474,-4876,-4271,-3662,-3061,-2477,-1916,-1384,-887,-433,-17,346,661, 922,1132,1298,1412,1481,1507,1494,1442,1360,1244,1114,965,805,635,464,298,135,-19,-156,-275, -374,-454,-508,-531,-526,-486,-408,-288,-125,81,333,627,968,1350,1777,2241,2747,3284,3842,4420, 5009,5602,6192,6769,7323,7846,8328,8762,9140,9465,9733,9942,10096,10191,10236,10233,10184,10100,9981,9839, 9666,9470,9252,9016,8767,8497,8220,7937,7646,7346,7041,6729,6414,6097,5778,5457,5137,4812,4483,4149, 3818,3486,3153,2814,2485,2150,1820,1489,1160,838,516,202,-109,-413,-713,-1012,-1309,-1599,-1889,-2173, -2455,-2739,-3016,-3298,-3577,-3858,-4138,-4414,-4689,-4966,-5238,-5508,-5771,-6031,-6286,-6536,-6777,-7011,-7242,-7472, -7688,-7902,-8103,-8300,-8486,-8662,-8829,-8988,-9134,-9263,-9376,-9471,-9547,-9599,-9626,-9631,-9610,-9558,-9468,-9343, -9181,-8974,-8724,-8423,-8075,-7680,-7229,-6731,-6190,-5613,-5008,-4383,-3751,-3116,-2491,-1880,-1301,-754,-249,206, 610,958,1255,1498,1680,1820,1906,1948,1945,1909,1841,1748,1630,1493,1344,1179,1007,827,649,475, 307,147,6,-119,-222,-304,-352,-368,-350,-293,-193,-44,146,389,676,1016,1398,1820,2284,2782, 3311,3867,4443,5037,5639,6240,6835,7411,7956,8467,8935,9351,9710,10010,10247,10421,10532,10588,10597,10555, 10480,10369,10226,10062,9870,9659,9435,9193,8942,8675,8396,8109,7807,7501,7177,6858,6529,6199,5858,5517, 5178,4836,4492,4153,3817,3486,3152,2822,2496,2171,1847,1519,1199,882,561,242,-75,-394,-705,-1024, -1333,-1637,-1940,-2237,-2530,-2822,-3107,-3391,-3669,-3946,-4219,-4494,-4766,-5041,-5310,-5584,-5852,-6121,-6385,-6651, -6908,-7165,-7414,-7655,-7888,-8108,-8320,-8524,-8714,-8890,-9054,-9207,-9342,-9461,-9565,-9657,-9730,-9783,-9813,-9821, -9804,-9755,-9671,-9553,-9396,-9194,-8941,-8638,-8283,-7872,-7412,-6900,-6355,-5777,-5174,-4557,-3928,-3308,-2695,-2107, -1549,-1022,-541,-104,289,630,919,1154,1337,1472,1555,1593,1589,1546,1472,1371,1243,1101,946,782, 618,453,295,147,10,-113,-216,-294,-353,-384,-383,-349,-285,-185,-42,143,369,643,960,1324, 1731,2175,2657,3172,3712,4274,4846,5425,6004,6566,7110,7624,8107,8548,8940,9275,9553,9775,9941,10051, 10107,10123,10091,10019,9913,9774,9609,9422,9213,8988,8748,8495,8230,7952,7668,7379,7083,6786,6480,6170, 5859,5544,5218,4894,4570,4242,3912,3579,3245,2914,2578,2247,1918,1592,1267,948,632,321,10,-294, -595,-892,-1186,-1483,-1773,-2066,-2354,-2641,-2927,-3212,-3496,-3781,-4063,-4348,-4629,-4907,-5178,-5449,-5708,-5972, -6230,-6482,-6732,-6976,-7211,-7442,-7669,-7892,-8101,-8310,-8507,-8698,-8879,-9039,-9192,-9330,-9450,-9550,-9633,-9697, -9734,-9744,-9724,-9681,-9605,-9496,-9347,-9158,-8926,-8640,-8305,-7918,-7487,-7003,-6473,-5906,-5304,-4677,-4040,-3399, -2766,-2151,-1558,-1002,-487,-10,412,784,1098,1358,1566,1722,1829,1894,1917,1904,1855,1776,1674,1553, 1408,1252,1089,919,749,580,416,265,130,13,-85,-152,-191,-198,-170,-100,10,162,360,607, 893,1221,1593,2008,2460,2950,3470,4016,4586,5166,5752,6340,6921,7481,8019,8513,8973,9372,9718,10001, 10227,10396,10506,10562,10569,10533,10456,10349,10212,10046,9866,9666,9444,9206,8954,8692,8415,8128,7831,7529, 7214,6893,6564,6235,5903,5569,5233,4902,4567,4235,3900,3567,3239,2910,2582,2256,1930,1608,1277,952, 627,306,-16,-337,-657,-967,-1282,-1593,-1894,-2193,-2486,-2774,-3061,-3346,-3630,-3912,-4192,-4474,-4757,-5036, -5315,-5594,-5875,-6152,-6426,-6696,-6963,-7223,-7472,-7719,-7956,-8186,-8403,-8606,-8799,-8983,-9152,-9309,-9452,-9583, -9699,-9797,-9875,-9937,-9975,-9987,-9972,-9933,-9855,-9738,-9578,-9373,-9117,-8812,-8451,-8033,-7570,-7055,-6496,-5903, -5283,-4650,-4010,-3371,-2745,-2139,-1560,-1014,-512,-54,351,706,1005,1250,1442,1579,1668,1708,1707,1661, 1588,1486,1364,1224,1070,912,747,583,423,268,127,4,-104,-192,-257,-298,-311,-295,-239,-147, -14,157,372,635,939,1292,1686,2122,2595,3097,3626,4178,4743,5317,5891,6456,7005,7526,8013,8457, 8864,9214,9509,9751,9934,10064,10139,10162,10140,10079,9986,9856,9700,9521,9320,9103,8866,8621,8363,8098, 7823,7539,7249,6954,6652,6345,6034,5720,5402,5077,4747,4420,4086,3755,3420,3087,2757,2428,2099,1774, 1453,1134,822,510,203,-101,-407,-710,-1010,-1306,-1601,-1897,-2196,-2484,-2778,-3068,-3359,-3647,-3933,-4219, -4498,-4778,-5053,-5328,-5595,-5863,-6126,-6382,-6634,-6887,-7135,-7379,-7614,-7846,-8071,-8291,-8499,-8698,-8889,-9068, -9229,-9376,-9506,-9614,-9708,-9775,-9825,-9855,-9855,-9827,-9769,-9677,-9545,-9379,-9168,-8913,-8604,-8241,-7825,-7356, -6843,-6285,-5691,-5073,-4439,-3798,-3159,-2532,-1929,-1359,-826,-336,105,495,832,1117,1351,1534,1667,1751, 1795,1797,1770,1704,1611,1497,1368,1218,1060,896,730,565,408,262,131,17,-74,-138,-172,-170, -135,-63,46,202,390,627,905,1224,1587,1987,2426,2901,3405,3933,4487,5052,5629,6201,6762,7309, 7826,8306,8750,9140,9479,9762,9979,10141,10250,10306,10318,10287,10221,10121,9990,9834,9653,9458,9248,9017, 8771,8513,8241,7957,7665,7364,7058,6747,6429,6111,5787,5459,5136,4811,4487,4163,3841,3514,3191,2866, 2544,2218,1894,1576,1254,934,611,289,-29,-343,-652,-962,-1266,-1562,-1862,-2155,-2443,-2730,-3012,-3292, -3574,-3854,-4134,-4416,-4699,-4981,-5262,-5542,-5820,-6100,-6372,-6642,-6908,-7168,-7418,-7657,-7891,-8117,-8335,-8542, -8740,-8924,-9101,-9264,-9409,-9544,-9665,-9770,-9857,-9921,-9962,-9982,-9965,-9923,-9846,-9733,-9575,-9369,-9112,-8804, -8439,-8023,-7552,-7033,-6477,-5880,-5256,-4617,-3965,-3316,-2680,-2062,-1475,-923,-406,58,473,837,1145,1393, 1585,1728,1816,1860,1860,1826,1755,1658,1535,1401,1254,1093,933,770,615,463,317,189,78,-18, -88,-135,-152,-139,-92,-9,120,288,502,761,1062,1409,1797,2220,2686,3185,3707,4252,4810,5377, 5939,6497,7039,7558,8047,8500,8906,9258,9557,9796,9989,10120,10202,10231,10216,10157,10065,9938,9791,9615, 9423,9211,8988,8749,8497,8236,7967,7693,7409,7117,6824,6521,6211,5898,5576,5257,4936,4606,4276,3948, 3618,3290,2961,2637,2318,2000,1679,1367,1058,750,440,137,-167,-467,-769,-1069,-1375,-1668,-1969,-2264, -2558,-2850,-3139,-3430,-3717,-4004,-4283,-4562,-4840,-5113,-5386,-5654,-5919,-6186,-6451,-6707,-6963,-7213,-7461,-7703, -7939,-8169,-8392,-8598,-8793,-8978,-9148,-9306,-9443,-9565,-9670,-9755,-9814,-9846,-9868,-9857,-9817,-9744,-9638,-9495, -9305,-9065,-8778,-8437,-8039,-7593,-7090,-6545,-5959,-5344,-4706,-4064,-3415,-2783,-2171,-1585,-1036,-527,-66,346, 706,1015,1270,1472,1624,1729,1790,1809,1788,1732,1647,1541,1410,1263,1108,942,776,609,451,301, 168,56,-34,-99,-141,-145,-118,-53,43,182,365,583,844,1148,1490,1875,2296,2752,3239,3754, 4285,4834,5394,5954,6506,7039,7548,8024,8457,8844,9177,9458,9681,9852,9967,10032,10048,10025,9965,9871, 9749,9599,9429,9237,9028,8797,8559,8301,8038,7760,7473,7183,6880,6575,6267,5957,5644,5328,5013,4697, 4376,4059,3741,3424,3107,2784,2464,2142,1823,1500,1182,863,549,236,-81,-386,-691,-994,-1294,-1586, -1878,-2161,-2448,-2727,-3008,-3287,-3568,-3848,-4132,-4408,-4688,-4972,-5255,-5536,-5815,-6086,-6359,-6625,-6885,-7141, -7388,-7633,-7866,-8088,-8304,-8514,-8712,-8900,-9079,-9247,-9404,-9542,-9664,-9774,-9863,-9934,-9980,-9998,-9989,-9949, -9874,-9759,-9602,-9402,-9150,-8846,-8488,-8076,-7611,-7094,-6533,-5941,-5318,-4676,-4025,-3372,-2727,-2101,-1503,-939, -418,58,478,847,1164,1420,1622,1769,1867,1916,1923,1894,1833,1742,1632,1500,1358,1203,1048,885, 727,580,435,306,188,87,17,-35,-54,-42,6,95,218,387,598,855,1153,1502,1890,2314, 2773,3262,3780,4319,4872,5433,5994,6549,7088,7601,8086,8534,8938,9293,9592,9836,10022,10152,10228,10257, 10240,10187,10094,9969,9816,9645,9451,9242,9018,8783,8537,8277,8010,7729,7451,7159,6861,6555,6249,5934, 5614,5291,4964,4638,4314,3984,3659,3336,3013,2691,2370,2057,1744,1433,1126,819,513,209,-100,-404, -703,-1009,-1308,-1609,-1905,-2201,-2494,-2785,-3073,-3357,-3640,-3923,-4205,-4481,-4760,-5035,-5308,-5579,-5847,-6115, -6383,-6647,-6910,-7169,-7420,-7668,-7908,-8139,-8361,-8576,-8779,-8969,-9141,-9300,-9446,-9570,-9680,-9772,-9844,-9896, -9920,-9917,-9892,-9832,-9739,-9604,-9432,-9210,-8931,-8597,-8207,-7765,-7267,-6725,-6135,-5519,-4878,-4228,-3571,-2926, -2300,-1702,-1134,-611,-133,301,680,1006,1281,1499,1665,1783,1853,1880,1869,1819,1741,1634,1506,1359, 1200,1038,870,705,549,402,273,157,63,-3,-42,-53,-30,24,118,247,415,626,880,1171, 1500,1875,2285,2733,3206,3709,4243,4784,5333,5885,6428,6957,7458,7930,8364,8750,9088,9370,9596,9769, 9888,9959,9984,9964,9907,9815,9695,9545,9373,9183,8971,8746,8503,8249,7983,7706,7424,7132,6839,6538, 6233,5925,5617,5306,4993,4679,4364,4052,3733,3415,3097,2775,2459,2135,1816,1496,1181,865,552,241, -61,-368,-669,-962,-1256,-1548,-1836,-2121,-2402,-2682,-2961,-3245,-3522,-3806,-4086,-4370,-4653,-4935,-5216,-5493, -5768,-6040,-6310,-6573,-6834,-7086,-7333,-7573,-7807,-8036,-8258,-8470,-8673,-8871,-9055,-9230,-9390,-9539,-9674,-9790, -9887,-9963,-10017,-10044,-10042,-10010,-9951,-9848,-9707,-9520,-9285,-9002,-8662,-8270,-7826,-7330,-6786,-6204,-5587,-4950, -4298,-3639,-2990,-2355,-1745,-1166,-630,-138,305,694,1029,1307,1529,1697,1819,1890,1919,1911,1866,1794, 1699,1583,1453,1312,1165,1014,865,715,576,448,339,245,174,129,113,130,185,273,406,578, 794,1055,1359,1702,2085,2506,2962,3447,3950,4480,5021,5571,6119,6661,7187,7691,8162,8596,8982,9322, 9607,9833,10009,10126,10192,10210,10185,10120,10020,9896,9742,9568,9375,9165,8939,8702,8451,8196,7928,7650, 7364,7072,6772,6466,6154,5838,5522,5200,4876,4550,4228,3905,3582,3258,2942,2625,2313,1995,1689,1379, 1072,763,459,151,-151,-460,-765,-1070,-1371,-1672,-1966,-2258,-2547,-2836,-3121,-3407,-3686,-3966,-4241,-4520, -4794,-5070,-5346,-5619,-5891,-6163,-6433,-6698,-6964,-7227,-7482,-7734,-7976,-8209,-8435,-8648,-8848,-9039,-9216,-9377, -9525,-9657,-9772,-9866,-9943,-10001,-10035,-10043,-10022,-9971,-9889,-9759,-9588,-9368,-9099,-8773,-8386,-7942,-7447,-6901, -6312,-5690,-5044,-4388,-3726,-3071,-2434,-1821,-1237,-697,-202,246,645,987,1275,1511,1692,1824,1904,1938, 1929,1891,1815,1710,1585,1442,1290,1126,963,804,648,504,373,263,168,97,53,39,56,108, 195,319,483,684,929,1217,1549,1917,2328,2773,3252,3753,4281,4822,5373,5923,6471,6999,7505,7981, 8416,8807,9152,9442,9680,9859,9988,10061,10092,10077,10022,9934,9815,9670,9497,9303,9091,8864,8626,8370, 8106,7836,7554,7267,6971,6675,6376,6075,5767,5461,5150,4838,4516,4200,3883,3565,3245,2924,2604,2284, 1963,1645,1330,1019,711,401,99,-201,-501,-795,-1086,-1375,-1661,-1946,-2228,-2513,-2795,-3075,-3362,-3642, -3926,-4211,-4493,-4778,-5055,-5335,-5607,-5881,-6148,-6414,-6673,-6930,-7179,-7425,-7665,-7897,-8126,-8348,-8560,-8762, -8960,-9144,-9317,-9471,-9611,-9737,-9845,-9929,-9992,-10033,-10047,-10028,-9977,-9892,-9775,-9609,-9400,-9137,-8826,-8464, -8041,-7569,-7049,-6483,-5883,-5250,-4605,-3949,-3294,-2649,-2033,-1438,-887,-376,83,495,847,1149,1395,1588, 1729,1822,1872,1884,1858,1805,1725,1624,1502,1370,1229,1081,933,790,654,525,414,325,254,212, 198,216,269,360,494,668,882,1137,1435,1778,2155,2567,3014,3487,3986,4507,5038,5580,6121,6654, 7176,7667,8133,8562,8947,9279,9556,9783,9953,10064,10132,10150,10126,10061,9963,9836,9684,9513,9322,9115, 8890,8653,8410,8151,7879,7605,7318,7024,6721,6420,6108,5792,5473,5156,4835,4516,4193,3875,3557,3243, 2922,2610,2298,1992,1680,1368,1063,756,448,140,-167,-469,-773,-1076,-1375,-1670,-1962,-2253,-2540,-2824, -3102,-3382,-3661,-3937,-4214,-4492,-4766,-5044,-5318,-5593,-5871,-6145,-6418,-6688,-6955,-7214,-7472,-7725,-7967,-8199, -8424,-8641,-8839,-9030,-9210,-9377,-9529,-9662,-9784,-9888,-9975,-10037,-10078,-10094,-10086,-10042,-9964,-9844,-9681,-9467, -9197,-8874,-8492,-8055,-7561,-7020,-6436,-5815,-5170,-4508,-3847,-3190,-2549,-1930,-1343,-792,-286,171,578,930, 1228,1471,1660,1794,1880,1923,1919,1880,1806,1707,1583,1449,1297,1141,980,823,675,533,403,292, 200,133,88,72,88,134,218,338,502,701,949,1234,1562,1933,2342,2789,3270,3776,4309,4850, 5402,5956,6502,7038,7548,8030,8473,8871,9220,9516,9762,9948,10082,10167,10200,10188,10137,10047,9925,9780, 9608,9416,9203,8977,8733,8478,8216,7944,7665,7381,7091,6796,6493,6191,5886,5576,5264,4952,4635,4315, 3995,3671,3352,3030,2707,2388,2073,1756,1440,1128,819,517,216,-82,-380,-674,-968,-1261,-1554,-1841, -2127,-2410,-2700,-2983,-3270,-3559,-3844,-4132,-4415,-4696,-4974,-5254,-5532,-5804,-6074,-6340,-6601,-6862,-7115,-7369, -7614,-7857,-8093,-8322,-8543,-8757,-8957,-9151,-9329,-9499,-9645,-9776,-9892,-9985,-10056,-10102,-10126,-10120,-10083,-10013, -9901,-9751,-9558,-9313,-9020,-8670,-8265,-7803,-7286,-6725,-6127,-5498,-4849,-4188,-3529,-2881,-2248,-1646,-1083,-558, -86,339,705,1018,1280,1491,1642,1754,1814,1836,1821,1777,1700,1605,1487,1355,1215,1067,916,772, 633,504,389,295,224,179,161,177,229,324,451,617,831,1081,1373,1705,2076,2487,2925,3396, 3891,4407,4939,5479,6022,6557,7081,7581,8050,8484,8868,9208,9494,9727,9902,10020,10092,10114,10092,10035, 9942,9819,9673,9501,9310,9106,8883,8647,8397,8137,7868,7586,7301,7005,6703,6399,6087,5774,5463,5143, 4825,4510,4193,3876,3559,3245,2936,2624,2311,2000,1691,1380,1070,761,453,146,-160,-462,-770,-1066, -1366,-1658,-1948,-2234,-2516,-2797,-3074,-3353,-3630,-3904,-4182,-4458,-4737,-5016,-5292,-5571,-5848,-6125,-6395,-6666, -6934,-7195,-7451,-7700,-7946,-8175,-8400,-8612,-8818,-9014,-9192,-9362,-9519,-9661,-9790,-9900,-9991,-10065,-10115,-10140, -10139,-10103,-10032,-9921,-9764,-9563,-9307,-8995,-8624,-8198,-7719,-7190,-6613,-6003,-5369,-4713,-4054,-3395,-2748,-2124, -1527,-971,-449,20,438,810,1120,1379,1577,1728,1826,1880,1887,1860,1800,1712,1601,1473,1328,1183, 1029,881,736,599,475,370,279,211,168,153,168,218,302,423,588,793,1040,1331,1669,2044, 2458,2909,3390,3900,4433,4979,5534,6089,6637,7171,7682,8161,8603,9003,9354,9650,9889,10077,10206,10284, 10313,10297,10242,10145,10022,9866,9691,9486,9274,9044,8800,8544,8278,8007,7726,7438,7146,6852,6549,6245, 5935,5622,5307,4987,4664,4344,4021,3698,3371,3049,2728,2407,2090,1777,1465,1159,852,549,247,-49, -347,-644,-938,-1228,-1521,-1811,-2102,-2387,-2675,-2963,-3247,-3531,-3816,-4100,-4383,-4660,-4940,-5215,-5486,-5758, -6027,-6292,-6559,-6818,-7075,-7332,-7580,-7829,-8067,-8302,-8525,-8744,-8953,-9148,-9325,-9496,-9646,-9786,-9903,-10003, -10078,-10135,-10163,-10163,-10135,-10076,-9984,-9851,-9668,-9440,-9160,-8823,-8428,-7980,-7479,-6925,-6334,-5709,-5059,-4394, -3729,-3074,-2436,-1827,-1251,-720,-230,206,590,920,1194,1417,1588,1709,1784,1818,1813,1771,1703,1606, 1491,1361,1222,1076,925,777,635,505,392,298,223,179,162,177,228,314,441,609,813,1062, 1350,1680,2046,2451,2890,3360,3856,4375,4910,5456,6000,6539,7067,7576,8055,8492,8890,9236,9529,9767, 9949,10078,10154,10181,10165,10110,10020,9899,9751,9582,9391,9180,8961,8720,8467,8200,7929,7645,7357,7056, 6758,6450,6139,5824,5511,5196,4883,4565,4249,3935,3624,3308,2992,2680,2368,2056,1744,1433,1123,813, 505,197,-105,-408,-707,-1004,-1297,-1585,-1875,-2154,-2434,-2711,-2988,-3265,-3541,-3816,-4094,-4373,-4649,-4927, -5204,-5482,-5759,-6035,-6310,-6575,-6842,-7097,-7352,-7600,-7839,-8072,-8296,-8514,-8723,-8918,-9105,-9280,-9443,-9594, -9731,-9851,-9955,-10033,-10095,-10132,-10142,-10119,-10063,-9969,-9833,-9647,-9414,-9127,-8784,-8385,-7931,-7429,-6876,-6286, -5664,-5022,-4368,-3714,-3067,-2435,-1831,-1255,-720,-231,212,598,932,1211,1430,1607,1727,1800,1832,1821, 1778,1709,1613,1502,1374,1238,1099,961,824,694,576,472,386,322,280,268,284,335,420,549, 715,922,1174,1469,1804,2182,2597,3048,3530,4037,4567,5109,5660,6211,6753,7283,7788,8267,8704,9096, 9445,9734,9967,10146,10271,10345,10365,10343,10280,10179,10047,9892,9711,9509,9293,9057,8812,8556,8289,8014, 7736,7447,7152,6853,6553,6242,5930,5614,5296,4974,4655,4327,4005,3681,3358,3034,2714,2399,2085,1771, 1462,1155,853,551,248,-47,-345,-642,-941,-1232,-1525,-1815,-2105,-2396,-2683,-2966,-3253,-3533,-3816,-4093, -4375,-4651,-4927,-5202,-5476,-5746,-6013,-6281,-6545,-6810,-7068,-7325,-7580,-7829,-8071,-8307,-8537,-8749,-8960,-9153, -9340,-9505,-9657,-9795,-9911,-10016,-10092,-10149,-10188,-10194,-10175,-10120,-10031,-9904,-9730,-9507,-9231,-8900,-8510,-8061, -7557,-7007,-6413,-5784,-5130,-4470,-3800,-3139,-2497,-1882,-1303,-763,-267,175,572,908,1195,1426,1601,1730, 1809,1847,1843,1805,1738,1640,1524,1391,1246,1095,942,790,648,512,393,297,224,169,151,161, 209,290,409,569,770,1013,1294,1622,1986,2392,2829,3301,3797,4322,4863,5416,5974,6525,7062,7581, 8069,8523,8928,9290,9597,9849,10042,10178,10262,10299,10287,10238,10150,10031,9886,9711,9517,9305,9077,8833, 8580,8310,8032,7745,7452,7153,6845,6537,6228,5915,5602,5282,4968,4651,4336,4017,3703,3385,3070,2750, 2436,2120,1807,1492,1182,873,565,258,-49,-350,-648,-940,-1232,-1520,-1805,-2086,-2367,-2646,-2919,-3198, -3473,-3749,-4028,-4307,-4585,-4865,-5143,-5418,-5695,-5967,-6240,-6503,-6767,-7025,-7277,-7524,-7764,-7995,-8224,-8439, -8653,-8853,-9047,-9227,-9399,-9554,-9697,-9823,-9935,-10024,-10091,-10135,-10154,-10140,-10093,-10009,-9889,-9724,-9506,-9239, -8916,-8538,-8105,-7620,-7089,-6513,-5906,-5271,-4620,-3966,-3312,-2674,-2057,-1471,-925,-420,39,445,797,1092, 1339,1526,1664,1757,1806,1811,1784,1728,1644,1543,1425,1298,1165,1028,894,765,647,542,448,381, 341,321,336,383,467,590,752,960,1209,1501,1834,2210,2622,3071,3547,4054,4582,5120,5668,6222, 6767,7296,7804,8280,8724,9123,9469,9767,10004,10186,10309,10384,10405,10380,10317,10214,10083,9919,9733,9535, 9311,9077,8831,8574,8303,8026,7742,7451,7153,6852,6542,6228,5912,5591,5266,4943,4616,4293,3966,3641, 3318,2994,2678,2355,2044,1732,1423,1116,811,507,206,-97,-398,-695,-991,-1289,-1583,-1876,-2164,-2453, -2738,-3022,-3302,-3582,-3860,-4139,-4412,-4686,-4960,-5232,-5502,-5772,-6043,-6307,-6575,-6839,-7102,-7357,-7612,-7860, -8102,-8337,-8562,-8777,-8985,-9181,-9361,-9528,-9684,-9820,-9940,-10043,-10128,-10186,-10224,-10238,-10226,-10180,-10098,-9977, -9812,-9596,-9329,-9001,-8622,-8182,-7688,-7142,-6554,-5937,-5291,-4630,-3969,-3313,-2672,-2056,-1471,-927,-425,27, 429,777,1069,1311,1498,1635,1725,1767,1773,1740,1678,1584,1472,1343,1203,1052,902,753,614,482, 369,271,197,151,130,140,186,268,386,545,744,986,1270,1594,1962,2371,2813,3293,3797,4326, 4878,5439,6002,6563,7111,7641,8139,8600,9019,9387,9699,9959,10159,10304,10392,10431,10422,10371,10282,10165, 10012,9836,9640,9420,9187,8938,8679,8407,8124,7833,7537,7233,6928,6619,6305,5993,5676,5357,5039,4720, 4400,4081,3760,3437,3119,2798,2479,2159,1843,1529,1213,901,594,289,-12,-312,-607,-901,-1191,-1477, -1763,-2044,-2322,-2601,-2880,-3158,-3433,-3714,-3989,-4271,-4549,-4825,-5106,-5381,-5656,-5926,-6193,-6460,-6721,-6979, -7230,-7478,-7720,-7956,-8183,-8406,-8620,-8827,-9025,-9214,-9387,-9552,-9700,-9832,-9946,-10041,-10116,-10168,-10193,-10187, -10151,-10082,-9974,-9819,-9624,-9376,-9075,-8719,-8312,-7845,-7331,-6770,-6175,-5550,-4907,-4248,-3595,-2951,-2324,-1725, -1161,-644,-168,254,625,941,1203,1411,1566,1675,1739,1763,1749,1704,1640,1547,1436,1315,1188,1051, 920,787,670,559,469,393,345,325,331,372,452,571,730,930,1174,1459,1791,2160,2568,3010, 3486,3987,4512,5049,5601,6153,6705,7241,7756,8247,8696,9104,9466,9772,10027,10220,10357,10438,10467,10451, 10393,10297,10167,10014,9835,9630,9415,9180,8935,8680,8408,8135,7848,7554,7251,6944,6635,6321,5999,5676, 5350,5026,4698,4369,4040,3720,3394,3074,2758,2441,2125,1810,1502,1193,887,579,276,-27,-330,-632, -933,-1231,-1525,-1819,-2109,-2397,-2678,-2964,-3244,-3520,-3794,-4073,-4344,-4618,-4892,-5165,-5437,-5706,-5978,-6248, -6515,-6779,-7043,-7301,-7554,-7803,-8046,-8280,-8505,-8721,-8926,-9121,-9305,-9472,-9627,-9769,-9894,-10001,-10090,-10160, -10210,-10229,-10222,-10186,-10116,-10002,-9846,-9644,-9388,-9077,-8708,-8284,-7804,-7274,-6703,-6095,-5462,-4813,-4158,-3506, -2870,-2251,-1668,-1121,-612,-151,260,619,923,1175,1376,1523,1624,1675,1691,1667,1611,1525,1421,1296, 1162,1018,872,730,594,467,359,263,191,143,126,133,179,260,379,537,735,977,1259,1589, 1962,2369,2819,3302,3815,4352,4907,5474,6051,6616,7173,7708,8217,8687,9112,9489,9813,10076,10284,10435, 10527,10569,10563,10516,10427,10304,10152,9976,9774,9554,9315,9065,8800,8525,8239,7949,7650,7346,7039,6727, 6411,6096,5775,5458,5133,4812,4486,4164,3839,3516,3187,2864,2541,2220,1902,1582,1268,959,647,339, 39,-259,-557,-851,-1143,-1430,-1720,-2008,-2290,-2571,-2851,-3133,-3416,-3695,-3975,-4259,-4538,-4817,-5094,-5369, -5642,-5915,-6182,-6447,-6706,-6966,-7217,-7470,-7712,-7953,-8187,-8415,-8635,-8848,-9051,-9243,-9424,-9593,-9747,-9887, -10004,-10103,-10181,-10241,-10270,-10274,-10245,-10185,-10089,-9942,-9758,-9524,-9235,-8897,-8498,-8048,-7544,-6991,-6402,-5779, -5135,-4483,-3825,-3177,-2545,-1941,-1374,-845,-362,69,450,775,1046,1266,1435,1553,1626,1662,1656,1623, 1556,1470,1363,1244,1112,977,841,711,583,468,374,296,240,215,215,257,329,443,596,793, 1031,1312,1637,2004,2409,2849,3326,3829,4360,4905,5463,6027,6591,7141,7677,8185,8658,9089,9471,9797, 10067,10281,10435,10532,10578,10574,10526,10438,10318,10167,9995,9799,9583,9353,9107,8850,8582,8303,8016,7721, 7420,7110,6795,6476,6155,5833,5503,5181,4851,4528,4199,3873,3554,3232,2912,2598,2282,1970,1656,1342, 1032,727,418,115,-190,-495,-792,-1094,-1391,-1683,-1970,-2255,-2536,-2819,-3092,-3371,-3645,-3920,-4192,-4465, -4736,-5010,-5280,-5557,-5827,-6098,-6368,-6634,-6895,-7156,-7408,-7659,-7899,-8134,-8360,-8575,-8780,-8977,-9162,-9335, -9496,-9641,-9774,-9890,-9987,-10065,-10121,-10155,-10163,-10139,-10081,-9985,-9847,-9663,-9425,-9138,-8798,-8400,-7944,-7442, -6894,-6306,-5693,-5056,-4419,-3773,-3139,-2524,-1937,-1379,-861,-386,38,410,737,1008,1225,1394,1510,1582, 1613,1604,1562,1493,1397,1290,1165,1035,899,762,636,516,409,321,254,210,188,200,244,326, 443,601,800,1042,1328,1656,2029,2441,2892,3377,3894,4435,4993,5561,6136,6705,7269,7804,8319,8786, 9219,9597,9922,10191,10403,10555,10652,10691,10686,10636,10544,10418,10264,10085,9880,9656,9418,9165,8899,8622, 8340,8044,7745,7442,7131,6818,6503,6184,5864,5538,5214,4888,4561,4232,3902,3573,3246,2919,2590,2268, 1946,1628,1315,999,693,388,83,-215,-515,-810,-1101,-1394,-1682,-1970,-2254,-2539,-2825,-3105,-3387,-3669, -3953,-4230,-4510,-4790,-5066,-5340,-5610,-5884,-6151,-6416,-6677,-6935,-7190,-7442,-7689,-7934,-8170,-8400,-8621,-8838, -9042,-9240,-9422,-9593,-9747,-9884,-10010,-10110,-10193,-10249,-10284,-10295,-10272,-10217,-10128,-10000,-9827,-9604,-9332,-9001, -8618,-8179,-7685,-7146,-6566,-5953,-5317,-4666,-4014,-3367,-2735,-2131,-1559,-1026,-539,-101,285,620,902,1130, 1307,1438,1521,1563,1564,1532,1470,1388,1281,1162,1029,894,752,617,489,368,266,184,125,94, 92,125,193,303,447,638,875,1147,1468,1829,2229,2671,3143,3649,4182,4731,5301,5873,6445,7012, 7560,8082,8572,9021,9421,9766,10056,10283,10454,10565,10625,10632,10595,10519,10406,10261,10093,9898,9687,9460, 9215,8963,8688,8409,8120,7821,7517,7208,6890,6571,6249,5926,5598,5271,4943,4615,4292,3969,3646,3325, 3006,2687,2368,2054,1738,1430,1116,807,500,192,-113,-414,-715,-1010,-1305,-1598,-1884,-2166,-2450,-2724, -3001,-3271,-3547,-3821,-4093,-4367,-4642,-4912,-5186,-5458,-5729,-6001,-6267,-6532,-6794,-7052,-7302,-7550,-7789,-8022, -8246,-8461,-8670,-8869,-9054,-9229,-9395,-9547,-9688,-9809,-9913,-10001,-10067,-10108,-10125,-10113,-10070,-9986,-9865,-9701, -9484,-9219,-8894,-8524,-8095,-7617,-7093,-6528,-5935,-5314,-4685,-4046,-3419,-2804,-2209,-1643,-1115,-624,-185,209, 546,835,1072,1254,1388,1479,1525,1535,1504,1450,1370,1274,1157,1036,908,781,656,538,434,348, 275,228,207,211,251,326,435,587,779,1019,1301,1625,1987,2398,2843,3326,3834,4375,4933,5500, 6076,6645,7208,7749,8267,8745,9184,9574,9909,10189,10404,10568,10673,10722,10722,10674,10590,10464,10312,10131, 9929,9706,9468,9217,8950,8675,8392,8098,7803,7497,7188,6874,6560,6239,5912,5588,5262,4929,4598,4268, 3937,3604,3277,2948,2624,2301,1981,1666,1349,1039,729,423,121,-180,-480,-773,-1072,-1364,-1657,-1947, -2231,-2516,-2804,-3083,-3367,-3646,-3926,-4201,-4480,-4753,-5025,-5297,-5566,-5833,-6100,-6361,-6622,-6880,-7137,-7388, -7634,-7879,-8116,-8346,-8570,-8785,-8991,-9186,-9370,-9540,-9692,-9832,-9954,-10058,-10139,-10204,-10241,-10252,-10236,-10192, -10111,-9988,-9821,-9611,-9347,-9030,-8658,-8234,-7755,-7228,-6660,-6058,-5431,-4794,-4146,-3510,-2885,-2285,-1715,-1188, -696,-256,135,474,760,1000,1183,1321,1410,1458,1470,1444,1385,1305,1203,1086,955,816,678,540, 406,285,186,100,38,6,-1,29,94,197,339,523,751,1023,1339,1696,2096,2533,3005,3513, 4049,4608,5181,5762,6346,6922,7484,8023,8528,8988,9402,9766,10071,10308,10496,10619,10690,10705,10678,10608, 10503,10361,10195,10004,9796,9567,9321,9063,8790,8508,8216,7917,7609,7297,6981,6661,6338,6011,5686,5358, 5032,4702,4379,4050,3729,3404,3081,2761,2440,2121,1801,1488,1174,861,549,241,-62,-367,-666,-963, -1255,-1546,-1831,-2116,-2391,-2671,-2945,-3220,-3494,-3768,-4042,-4316,-4590,-4864,-5138,-5411,-5682,-5950,-6217,-6483, -6743,-6998,-7250,-7495,-7734,-7965,-8192,-8408,-8618,-8817,-9010,-9187,-9358,-9512,-9658,-9786,-9897,-9989,-10062,-10111, -10133,-10128,-10091,-10021,-9911,-9755,-9557,-9308,-9008,-8649,-8242,-7783,-7279,-6730,-6149,-5545,-4921,-4290,-3659,-3044, -2444,-1873,-1333,-837,-382,20,377,676,926,1126,1275,1376,1439,1459,1446,1401,1328,1241,1134,1017, 893,770,647,531,424,326,256,199,170,167,197,262,362,505,692,917,1188,1506,1868,2263, 2705,3176,3686,4220,4772,5341,5917,6496,7063,7616,8141,8637,9093,9501,9856,10153,10392,10568,10689,10752, 10762,10730,10655,10538,10395,10219,10019,9806,9570,9320,9059,8787,8507,8218,7919,7617,7307,6992,6673,6351, 6025,5696,5365,5032,4698,4363,4033,3699,3370,3038,2714,2391,2071,1752,1440,1126,821,513,209,-96, -395,-696,-993,-1289,-1582,-1872,-2162,-2450,-2732,-3013,-3296,-3573,-3849,-4126,-4397,-4672,-4944,-5211,-5480,-5746, -6010,-6272,-6535,-6795,-7050,-7301,-7549,-7792,-8029,-8259,-8484,-8698,-8902,-9096,-9276,-9442,-9595,-9735,-9860,-9964, -10050,-10116,-10159,-10176,-10168,-10127,-10055,-9948,-9793,-9592,-9347,-9044,-8686,-8279,-7815,-7306,-6755,-6171,-5559,-4933, -4300,-3672,-3056,-2464,-1899,-1369,-877,-433,-34,313,611,855,1050,1200,1301,1361,1382,1364,1317,1243, 1146,1032,908,777,641,510,382,266,163,82,23,-12,-17,9,73,173,312,495,724,992, 1306,1663,2059,2498,2971,3478,4016,4577,5153,5743,6331,6913,7482,8026,8542,9014,9435,9807,10121,10373, 10567,10698,10775,10802,10778,10713,10612,10474,10307,10118,9906,9677,9431,9169,8895,8608,8315,8013,7702,7388, 7070,6747,6423,6096,5766,5437,5107,4778,4452,4121,3794,3467,3142,2814,2490,2167,1846,1526,1207,893, 581,269,-36,-340,-640,-938,-1231,-1521,-1807,-2094,-2372,-2651,-2928,-3206,-3481,-3757,-4032,-4307,-4585,-4859, -5133,-5405,-5675,-5942,-6209,-6471,-6729,-6985,-7232,-7477,-7716,-7947,-8175,-8394,-8605,-8805,-8997,-9181,-9354,-9511, -9661,-9790,-9904,-9998,-10076,-10125,-10153,-10153,-10122,-10056,-9954,-9811,-9621,-9387,-9100,-8762,-8370,-7927,-7440,-6906, -6338,-5741,-5127,-4501,-3873,-3257,-2658,-2083,-1540,-1033,-573,-162,205,518,780,990,1150,1266,1337,1370, 1366,1333,1272,1190,1089,981,861,736,613,497,384,288,206,146,110,101,124,179,274,411, 583,807,1068,1377,1728,2123,2553,3026,3525,4056,4610,5178,5755,6339,6914,7479,8019,8533,9005,9431, 9805,10124,10380,10581,10719,10800,10828,10808,10741,10639,10502,10338,10145,9934,9707,9464,9207,8939,8658,8370, 8075,7773,7464,7148,6825,6503,6176,5844,5511,5175,4842,4508,4176,3843,3513,3185,2860,2536,2215,1896, 1584,1270,962,651,346,41,-262,-563,-861,-1162,-1455,-1747,-2035,-2323,-2606,-2889,-3163,-3442,-3714,-3986, -4258,-4529,-4800,-5067,-5333,-5600,-5862,-6127,-6385,-6642,-6901,-7154,-7399,-7643,-7876,-8108,-8330,-8540,-8744,-8936, -9116,-9283,-9439,-9579,-9702,-9811,-9904,-9973,-10024,-10050,-10052,-10021,-9958,-9859,-9723,-9543,-9313,-9028,-8699,-8312, -7872,-7386,-6861,-6301,-5710,-5101,-4487,-3871,-3261,-2674,-2112,-1579,-1085,-630,-223,137,448,709,922,1086, 1202,1278,1312,1310,1277,1215,1137,1031,918,794,668,540,421,311,214,136,78,47,42,65, 129,227,366,546,767,1032,1342,1694,2085,2525,2994,3499,4032,4592,5169,5751,6343,6929,7499,8048, 8562,9038,9467,9845,10164,10427,10625,10768,10849,10881,10862,10803,10701,10570,10405,10214,10002,9770,9521,9261, 8987,8702,8408,8104,7792,7477,7161,6837,6512,6186,5855,5527,5192,4860,4529,4197,3866,3537,3204,2874, 2546,2217,1895,1574,1251,937,624,312,6,-300,-602,-896,-1190,-1482,-1769,-2054,-2337,-2617,-2898,-3177, -3451,-3729,-4006,-4282,-4557,-4832,-5106,-5377,-5645,-5913,-6178,-6437,-6692,-6947,-7194,-7439,-7677,-7908,-8136,-8355, -8565,-8772,-8967,-9152,-9326,-9487,-9638,-9764,-9880,-9978,-10056,-10112,-10139,-10140,-10116,-10053,-9960,-9823,-9645,-9423, -9146,-8820,-8445,-8014,-7538,-7018,-6465,-5879,-5271,-4654,-4035,-3419,-2825,-2248,-1706,-1200,-736,-320,48,369, 639,854,1024,1143,1225,1267,1270,1241,1193,1110,1016,906,787,665,540,416,304,199,113,45, -1,-20,-4,40,130,253,423,632,886,1189,1533,1915,2344,2808,3304,3832,4384,4953,5536,6125, 6709,7288,7842,8368,8859,9305,9704,10042,10320,10541,10700,10795,10839,10835,10784,10692,10566,10408,10225,10023, 9801,9562,9310,9043,8765,8482,8185,7882,7572,7256,6935,6610,6278,5946,5615,5280,4944,4609,4276,3946, 3613,3288,2963,2638,2319,2000,1685,1370,1058,748,439,133,-171,-476,-778,-1077,-1371,-1666,-1952,-2239, -2519,-2798,-3075,-3349,-3619,-3892,-4161,-4430,-4696,-4966,-5234,-5500,-5760,-6028,-6287,-6545,-6798,-7047,-7298,-7539, -7771,-8001,-8220,-8432,-8631,-8826,-9004,-9171,-9329,-9474,-9599,-9711,-9806,-9884,-9938,-9974,-9979,-9960,-9910,-9826, -9698,-9531,-9320,-9057,-8739,-8375,-7961,-7496,-6991,-6451,-5883,-5292,-4687,-4085,-3488,-2902,-2338,-1807,-1306,-847, -433,-58,263,540,764,940,1070,1157,1206,1219,1197,1144,1069,978,871,754,635,515,397,289, 198,117,58,23,12,33,92,183,312,485,697,952,1255,1595,1982,2408,2875,3371,3899,4453, 5024,5609,6198,6778,7354,7904,8424,8908,9350,9735,10068,10339,10555,10708,10807,10848,10838,10788,10696,10567, 10407,10224,10016,9786,9541,9280,9010,8726,8433,8136,7829,7518,7200,6880,6556,6231,5901,5571,5240,4905, 4570,4238,3902,3570,3234,2906,2575,2251,1922,1599,1282,966,653,345,37,-266,-567,-865,-1159,-1448, -1739,-2026,-2308,-2591,-2869,-3147,-3427,-3704,-3982,-4256,-4530,-4801,-5073,-5342,-5610,-5873,-6131,-6389,-6641,-6892, -7137,-7381,-7617,-7850,-8076,-8298,-8506,-8712,-8906,-9093,-9266,-9428,-9571,-9705,-9817,-9912,-9990,-10044,-10078,-10081, -10057,-10003,-9913,-9785,-9615,-9402,-9142,-8831,-8466,-8056,-7594,-7091,-6552,-5980,-5389,-4785,-4176,-3574,-2985,-2416, -1879,-1378,-918,-500,-128,194,465,690,865,998,1086,1133,1144,1126,1078,1009,920,812,698,576, 450,329,211,109,19,-52,-101,-121,-112,-65,14,138,303,509,758,1055,1394,1775,2195,2652, 3147,3671,4221,4792,5377,5968,6562,7142,7708,8246,8750,9208,9616,9970,10265,10496,10668,10781,10836,10841, 10800,10718,10603,10452,10276,10079,9860,9627,9377,9115,8840,8556,8259,7959,7646,7330,7006,6681,6354,6020, 5684,5351,5017,4685,4352,4023,3693,3368,3039,2721,2394,2076,1757,1442,1130,819,509,200,-105,-407, -706,-1009,-1303,-1594,-1882,-2165,-2444,-2719,-2994,-3267,-3536,-3804,-4073,-4341,-4608,-4875,-5140,-5407,-5670,-5931, -6190,-6447,-6698,-6946,-7190,-7429,-7661,-7884,-8101,-8311,-8511,-8702,-8882,-9048,-9208,-9352,-9481,-9599,-9699,-9778, -9842,-9883,-9895,-9883,-9841,-9767,-9653,-9498,-9299,-9054,-8760,-8415,-8021,-7583,-7100,-6580,-6028,-5455,-4870,-4275, -3687,-3106,-2546,-2011,-1505,-1042,-616,-236,104,389,628,820,964,1063,1126,1146,1138,1099,1035,955, 860,750,637,523,411,309,213,134,74,37,22,35,84,169,290,450,657,901,1192,1522, 1899,2317,2768,3256,3777,4322,4886,5464,6050,6631,7203,7754,8284,8775,9228,9626,9972,10262,10491,10657, 10774,10828,10835,10793,10712,10594,10444,10262,10061,9840,9600,9348,9080,8803,8517,8219,7919,7612,7298,6983, 6658,6334,6007,5675,5342,5010,4676,4340,4006,3672,3338,3006,2676,2347,2028,1705,1385,1071,760,451, 149,-156,-454,-751,-1047,-1342,-1631,-1919,-2204,-2484,-2766,-3044,-3321,-3596,-3871,-4141,-4415,-4682,-4948,-5213, -5475,-5736,-5994,-6247,-6500,-6746,-6991,-7231,-7466,-7699,-7924,-8141,-8352,-8556,-8747,-8933,-9102,-9262,-9409,-9538, -9651,-9747,-9820,-9876,-9912,-9915,-9899,-9848,-9765,-9647,-9486,-9282,-9032,-8736,-8389,-7993,-7549,-7064,-6540,-5988, -5409,-4822,-4230,-3639,-3059,-2501,-1971,-1473,-1018,-603,-230,93,369,600,783,921,1018,1072,1094,1080, 1034,972,883,783,668,548,425,305,187,81,-11,-83,-135,-157,-151,-112,-33,83,238,442, 683,970,1298,1668,2081,2535,3020,3539,4085,4653,5236,5827,6422,7011,7577,8125,8636,9107,9526,9890, 10197,10442,10628,10751,10823,10840,10808,10734,10626,10483,10317,10123,9911,9680,9432,9169,8896,8615,8319,8015, 7705,7391,7064,6739,6410,6078,5746,5412,5077,4746,4414,4082,3750,3421,3096,2768,2443,2123,1801,1484, 1165,849,537,228,-81,-382,-689,-987,-1280,-1573,-1859,-2141,-2421,-2697,-2972,-3241,-3514,-3783,-4052,-4321, -4587,-4853,-5119,-5383,-5651,-5912,-6171,-6424,-6677,-6922,-7163,-7399,-7630,-7852,-8069,-8274,-8473,-8663,-8841,-9011, -9169,-9314,-9447,-9564,-9667,-9749,-9813,-9854,-9872,-9865,-9822,-9750,-9642,-9497,-9304,-9074,-8788,-8459,-8079,-7654, -7185,-6681,-6141,-5579,-5001,-4421,-3838,-3264,-2705,-2174,-1669,-1200,-770,-386,-49,245,488,685,834,947, 1013,1042,1040,1007,953,873,782,680,567,455,343,240,141,57,-9,-55,-76,-71,-33,42, 151,303,493,730,1005,1329,1690,2097,2541,3024,3530,4070,4630,5201,5786,6368,6942,7508,8044,8552, 9016,9435,9800,10110,10362,10553,10684,10758,10780,10757,10688,10580,10441,10275,10080,9866,9633,9387,9126,8854, 8570,8284,7984,7679,7371,7056,6736,6410,6083,5756,5422,5086,4752,4414,4079,3742,3407,3077,2748,2419, 2098,1779,1461,1146,835,525,223,-83,-384,-681,-979,-1270,-1566,-1853,-2138,-2422,-2704,-2981,-3255,-3530, -3802,-4074,-4339,-4606,-4871,-5133,-5394,-5648,-5904,-6155,-6407,-6650,-6895,-7131,-7369,-7595,-7822,-8038,-8245,-8444, -8637,-8818,-8986,-9143,-9281,-9413,-9524,-9617,-9695,-9751,-9785,-9798,-9780,-9738,-9661,-9548,-9401,-9209,-8973,-8690, -8359,-7982,-7556,-7088,-6582,-6049,-5487,-4913,-4333,-3757,-3189,-2640,-2113,-1621,-1161,-741,-365,-34,251,493, 687,838,944,1015,1048,1044,1013,957,881,786,680,569,450,336,223,123,37,-34,-80,-101, -90,-50,24,138,293,491,727,1006,1333,1695,2102,2546,3026,3540,4079,4644,5221,5814,6402,6987, 7560,8104,8616,9089,9517,9890,10204,10456,10649,10785,10864,10892,10871,10806,10706,10574,10411,10222,10012,9785, 9539,9281,9008,8723,8428,8123,7813,7498,7177,6851,6523,6192,5858,5526,5190,4855,4526,4193,3863,3530, 3198,2873,2545,2218,1898,1574,1256,939,623,312,4,-303,-602,-904,-1200,-1492,-1779,-2063,-2342,-2620, -2897,-3167,-3440,-3708,-3981,-4251,-4519,-4785,-5051,-5317,-5579,-5837,-6094,-6348,-6598,-6843,-7083,-7312,-7541,-7761, -7975,-8183,-8380,-8569,-8750,-8919,-9078,-9220,-9354,-9473,-9573,-9657,-9724,-9765,-9781,-9773,-9737,-9672,-9567,-9422, -9241,-9014,-8739,-8422,-8054,-7644,-7190,-6700,-6176,-5629,-5061,-4488,-3911,-3342,-2793,-2260,-1759,-1292,-861,-473, -134,161,409,612,770,885,957,997,1003,978,928,860,773,676,568,457,348,242,143,57, -11,-62,-89,-90,-56,11,109,251,435,658,931,1241,1596,1991,2423,2892,3396,3926,4479,5051, 5630,6211,6789,7355,7899,8418,8892,9327,9704,10033,10297,10500,10649,10739,10772,10761,10704,10609,10474,10313, 10127,9921,9693,9451,9197,8927,8648,8361,8064,7760,7450,7133,6814,6486,6156,5823,5488,5153,4814,4472, 4137,3801,3465,3133,2798,2473,2149,1825,1507,1191,878,566,256,-49,-351,-654,-955,-1251,-1545,-1839, -2128,-2411,-2694,-2974,-3249,-3520,-3791,-4061,-4326,-4595,-4851,-5116,-5375,-5628,-5885,-6138,-6387,-6632,-6876,-7114, -7347,-7577,-7799,-8015,-8222,-8421,-8609,-8784,-8953,-9106,-9251,-9374,-9486,-9580,-9656,-9715,-9754,-9768,-9756,-9719, -9648,-9549,-9409,-9227,-9005,-8736,-8421,-8059,-7651,-7202,-6714,-6193,-5652,-5093,-4524,-3957,-3394,-2850,-2331,-1834, -1372,-954,-568,-227,68,319,527,688,812,890,936,949,928,884,817,733,636,529,421,309, 204,109,25,-43,-89,-108,-98,-63,11,118,264,455,684,955,1270,1624,2019,2456,2927,3430, 3964,4518,5092,5678,6262,6846,7413,7960,8475,8953,9383,9764,10086,10353,10556,10704,10792,10834,10822,10769, 10677,10553,10396,10215,10007,9785,9542,9285,9016,8736,8444,8143,7835,7522,7200,6876,6554,6221,5890,5559, 5222,4889,4554,4219,3889,3554,3223,2890,2559,2231,1902,1577,1257,935,621,307,-1,-307,-608,-910, -1204,-1496,-1782,-2069,-2351,-2630,-2905,-3182,-3453,-3723,-3995,-4263,-4535,-4801,-5067,-5330,-5591,-5851,-6103,-6354, -6598,-6840,-7076,-7307,-7533,-7751,-7965,-8169,-8362,-8551,-8727,-8896,-9053,-9197,-9326,-9442,-9541,-9625,-9687,-9726, -9747,-9734,3,-113,-521,-935,-1296,-1480,-1530,-1440,-1238,-941,-625,-268,165,718,1328,1903,2366,2740, 3043,3304,3530,3750,3987,4248,4501,4777,5105,5500,5919,6324,6698,7034,7301,7479,7569,7580,7516,7372, 7152,6902,6625,6336,6035,5738,5441,5154,4863,4567,4268,3964,3654,3339,3000,2655,2303,1958,1620,1298, 988,676,373,109,-117,-311,-484,-646,-799,-955,-1131,-1293,-1438,-1570,-1702,-1850,-2022,-2202,-2400,-2606, -2803,-2985,-3158,-3337,-3543,-3766,-4000,-4238,-4470,-4693,-4899,-5100,-5334,-5600,-5888,-6180,-6465,-6744,-7026,-7307, -7600,-7920,-8251,-8569,-8859,-9109,-9335,-9539,-9720,-9896,-10060,-10189,-10257,-10246,-10171,-10031,-9806,-9478,-9023,-8405, -7611,-6632,-5513,-4300,-3039,-1755,-477,768,1940,2996,3909,4658,5237,5644,5886,5974,5936,5790,5549,5243, 4904,4540,4148,3723,3267,2806,2337,1853,1381,925,484,45,-406,-855,-1282,-1695,-2088,-2456,-2790,-3073, -3326,-3541,-3703,-3799,-3841,-3832,-3776,-3647,-3458,-3200,-2860,-2428,-1908,-1299,-618,155,1012,1943,2934,3959, 4981,5967,6894,7752,8504,9122,9584,9884,10039,10058,9955,9784,9573,9325,9030,8705,8376,8054,7733,7411, 7098,6792,6474,6127,5764,5414,5076,4738,4403,4069,3737,3407,3072,2762,2482,2224,1983,1747,1517,1304, 1086,875,680,503,334,153,-44,-244,-448,-655,-853,-1048,-1234,-1418,-1614,-1818,-2018,-2214,-2399,-2581, -2764,-2939,-3126,-3335,-3552,-3766,-3977,-4179,-4395,-4615,-4847,-5100,-5363,-5624,-5871,-6096,-6315,-6529,-6739,-6950, -7157,-7353,-7525,-7666,-7784,-7897,-8015,-8125,-8222,-8299,-8344,-8331,-8244,-8089,-7858,-7524,-7066,-6465,-5734,-4882, -3920,-2885,-1808,-722,346,1365,2305,3141,3852,4435,4902,5247,5488,5616,5625,5536,5366,5122,4827,4497, 4151,3793,3404,2980,2547,2113,1678,1239,812,409,12,-393,-792,-1174,-1530,-1867,-2195,-2506,-2809,-3114, -3420,-3724,-4000,-4249,-4479,-4690,-4863,-4990,-5069,-5092,-5043,-4899,-4647,-4275,-3761,-3094,-2281,-1318,-227,977, 2249,3552,4853,6130,7351,8471,9459,10304,10967,11426,11695,11799,11769,11616,11359,11043,10679,10278,9844,9389, 8936,8494,8043,7594,7157,6736,6329,5927,5541,5176,4832,4489,4154,3827,3518,3220,2923,2644,2383,2133, 1892,1651,1416,1195,975,757,553,356,171,-13,-199,-374,-551,-728,-900,-1067,-1226,-1383,-1543,-1712, -1881,-2054,-2236,-2421,-2610,-2796,-2990,-3193,-3402,-3615,-3823,-4037,-4258,-4484,-4709,-4953,-5208,-5470,-5729,-5982, -6238,-6505,-6774,-7051,-7338,-7628,-7908,-8165,-8408,-8649,-8880,-9095,-9296,-9488,-9656,-9785,-9865,-9911,-9925,-9885, -9769,-9545,-9189,-8676,-7982,-7115,-6106,-4980,-3755,-2462,-1140,164,1406,2546,3552,4408,5108,5642,6014,6232, 6317,6278,6132,5908,5635,5320,4954,4542,4110,3667,3208,2742,2277,1831,1391,936,484,43,-380,-787, -1188,-1570,-1924,-2269,-2602,-2913,-3188,-3422,-3628,-3809,-3964,-4079,-4155,-4185,-4155,-4043,-3845,-3564,-3197,-2735, -2165,-1493,-721,146,1093,2095,3138,4201,5249,6248,7169,7993,8692,9246,9660,9949,10120,10171,10102,9946, 9726,9456,9151,8824,8497,8170,7818,7450,7078,6711,6346,5985,5632,5286,4948,4601,4252,3917,3603,3307, 3018,2743,2487,2236,1982,1733,1493,1272,1050,829,613,396,176,-42,-258,-464,-664,-864,-1065,-1265, -1464,-1656,-1851,-2043,-2227,-2411,-2606,-2807,-3010,-3210,-3417,-3624,-3830,-4041,-4258,-4486,-4726,-4966,-5199,-5440, -5678,-5916,-6148,-6378,-6616,-6847,-7062,-7265,-7463,-7657,-7843,-8022,-8189,-8349,-8488,-8590,-8662,-8710,-8723,-8679, -8564,-8358,-8050,-7609,-7033,-6339,-5540,-4653,-3684,-2659,-1609,-558,460,1421,2293,3066,3723,4260,4677,4982, 5182,5273,5268,5180,5024,4792,4493,4146,3774,3386,2973,2549,2122,1700,1263,822,389,-17,-403,-784, -1156,-1519,-1870,-2226,-2581,-2921,-3232,-3524,-3805,-4069,-4303,-4497,-4653,-4760,-4795,-4756,-4658,-4472,-4167,-3716, -3111,-2357,-1458,-431,704,1908,3166,4448,5714,6935,8079,9105,9985,10690,11217,11570,11750,11765,11645,11427, 11138,10798,10419,10026,9628,9214,8783,8347,7919,7508,7100,6697,6310,5930,5555,5181,4816,4469,4139,3815, 3499,3194,2897,2608,2324,2052,1799,1558,1321,1086,860,644,430,222,30,-158,-342,-528,-715,-901, -1084,-1269,-1449,-1627,-1805,-1991,-2180,-2375,-2569,-2763,-2959,-3158,-3353,-3553,-3757,-3971,-4185,-4401,-4615,-4837, -5061,-5293,-5530,-5777,-6033,-6286,-6539,-6792,-7050,-7311,-7565,-7817,-8071,-8316,-8540,-8745,-8934,-9114,-9276,-9410, -9521,-9602,-9639,-9614,-9505,-9313,-9021,-8595,-8018,-7288,-6404,-5383,-4240,-3013,-1748,-481,746,1898,2944,3863, 4629,5243,5705,6027,6215,6275,6218,6073,5857,5576,5241,4875,4490,4084,3653,3201,2748,2301,1850,1407, 974,561,154,-254,-657,-1041,-1409,-1766,-2113,-2441,-2749,-3039,-3325,-3593,-3834,-4047,-4236,-4398,-4521,-4593, -4609,-4567,-4447,-4236,-3926,-3525,-3018,-2398,-1662,-812,147,1198,2307,3436,4565,5664,6708,7662,8505,9221, 9783,10182,10429,10550,10557,10466,10285,10046,9763,9436,9079,8709,8335,7958,7576,7184,6797,6418,6040,5670, 5310,4969,4637,4310,3989,3683,3391,3106,2829,2566,2314,2067,1814,1565,1326,1091,861,636,417,204, -12,-230,-445,-652,-856,-1056,-1253,-1445,-1633,-1826,-2022,-2218,-2413,-2605,-2807,-3013,-3218,-3430,-3648,-3869, -4092,-4308,-4528,-4758,-4988,-5221,-5449,-5683,-5909,-6131,-6343,-6558,-6780,-7005,-7220,-7430,-7637,-7832,-8014,-8185, -8353,-8517,-8663,-8775,-8852,-8895,-8884,-8809,-8658,-8428,-8102,-7651,-7060,-6354,-5542,-4642,-3674,-2670,-1651,-644, 332,1247,2080,2812,3431,3929,4306,4572,4725,4768,4714,4583,4387,4134,3827,3485,3118,2730,2316,1889, 1469,1053,636,221,-184,-573,-954,-1332,-1696,-2042,-2374,-2704,-3023,-3321,-3589,-3825,-4031,-4190,-4298,-4353, -4352,-4298,-4175,-3949,-3603,-3127,-2509,-1764,-892,92,1166,2303,3476,4656,5826,6954,8009,8962,9793,10471, 10966,11279,11431,11449,11353,11165,10906,10604,10261,9887,9493,9095,8707,8314,7921,7530,7144,6761,6377,5999, 5636,5285,4940,4598,4262,3936,3615,3300,2998,2713,2437,2165,1904,1645,1403,1168,939,720,514,315, 116,-82,-275,-462,-650,-839,-1023,-1209,-1394,-1584,-1776,-1960,-2147,-2334,-2525,-2716,-2910,-3106,-3313,-3515, -3718,-3923,-4129,-4344,-4563,-4785,-5016,-5256,-5495,-5731,-5971,-6215,-6466,-6716,-6963,-7210,-7453,-7684,-7896,-8099, -8302,-8492,-8660,-8809,-8932,-9031,-9091,-9099,-9066,-8976,-8802,-8517,-8097,-7547,-6857,-6026,-5074,-4027,-2913,-1752, -581,564,1644,2628,3487,4212,4799,5248,5561,5748,5818,5793,5681,5490,5232,4927,4585,4205,3795,3375, 2952,2527,2091,1652,1219,796,369,-46,-444,-824,-1191,-1555,-1916,-2260,-2593,-2916,-3224,-3514,-3781,-4030, -4275,-4496,-4687,-4839,-4952,-5015,-5014,-4938,-4788,-4554,-4231,-3804,-3251,-2560,-1733,-775,294,1441,2643,3864, 5069,6225,7309,8291,9141,9844,10389,10768,10984,11048,10988,10835,10610,10326,9998,9645,9272,8876,8466,8054, 7651,7249,6852,6455,6072,5696,5321,4957,4610,4278,3961,3647,3347,3059,2777,2501,2232,1978,1735,1494, 1256,1024,802,583,368,159,-42,-238,-434,-631,-821,-1008,-1193,-1376,-1555,-1733,-1915,-2100,-2289,-2482, -2673,-2869,-3070,-3275,-3479,-3691,-3910,-4136,-4360,-4578,-4803,-5033,-5263,-5492,-5722,-5958,-6196,-6425,-6650,-6877, -7105,-7334,-7556,-7771,-7985,-8187,-8367,-8532,-8683,-8827,-8942,-9020,-9060,-9054,-8977,-8813,-8551,-8193,-7718,-7116, -6383,-5541,-4603,-3599,-2551,-1494,-463,531,1455,2285,3013,3614,4094,4439,4664,4781,4792,4710,4554,4328, 4060,3745,3392,3016,2623,2212,1785,1357,940,532,128,-269,-654,-1029,-1399,-1767,-2124,-2458,-2769,-3068, -3343,-3593,-3810,-3991,-4138,-4231,-4264,-4233,-4137,-3976,-3732,-3367,-2882,-2267,-1523,-664,295,1336,2444,3584, 4736,5867,6952,7960,8857,9623,10253,10721,11020,11159,11166,11060,10867,10606,10304,9977,9629,9259,8876,8492, 8108,7728,7344,6973,6610,6246,5885,5524,5179,4842,4511,4189,3879,3575,3281,2992,2717,2454,2204,1960, 1726,1499,1282,1069,858,660,470,284,99,-88,-270,-453,-640,-829,-1009,-1185,-1363,-1545,-1728,-1911, -2098,-2286,-2476,-2668,-2858,-3054,-3262,-3472,-3682,-3897,-4119,-4344,-4574,-4804,-5044,-5293,-5538,-5781,-6022,-6265, -6507,-6743,-6971,-7202,-7430,-7639,-7828,-7999,-8161,-8304,-8422,-8518,-8587,-8614,-8577,-8465,-8270,-7988,-7593,-7077, -6434,-5675,-4804,-3836,-2797,-1732,-663,375,1360,2257,3049,3725,4274,4700,5009,5204,5295,5281,5185,5017, 4785,4496,4170,3819,3446,3047,2630,2205,1783,1356,931,512,101,-299,-697,-1089,-1467,-1829,-2183,-2528, -2864,-3187,-3501,-3808,-4099,-4362,-4599,-4807,-4991,-5133,-5228,-5269,-5245,-5156,-4992,-4716,-4319,-3785,-3106,-2286, -1333,-264,894,2112,3351,4588,5799,6944,7993,8913,9683,10281,10695,10939,11035,11010,10875,10655,10371,10045, 9685,9304,8908,8510,8112,7709,7299,6893,6498,6109,5728,5357,5002,4656,4316,3986,3666,3363,3069,2786, 2513,2252,1997,1741,1496,1261,1036,817,601,395,193,-7,-203,-395,-581,-763,-943,-1124,-1299,-1478, -1654,-1833,-2011,-2187,-2367,-2550,-2741,-2935,-3133,-3334,-3543,-3751,-3958,-4171,-4390,-4616,-4840,-5065,-5292,-5522, -5749,-5975,-6204,-6442,-6679,-6911,-7140,-7362,-7583,-7792,-7989,-8181,-8370,-8540,-8684,-8803,-8897,-8965,-8991,-8970, -8894,-8748,-8501,-8132,-7640,-7025,-6294,-5447,-4509,-3498,-2445,-1368,-304,715,1664,2511,3244,3855,4339,4693, 4926,5044,5064,4993,4844,4623,4352,4034,3682,3302,2898,2492,2083,1663,1243,822,414,11,-382,-768, -1138,-1497,-1850,-2196,-2527,-2834,-3119,-3383,-3622,-3827,-3999,-4135,-4228,-4258,-4222,-4113,-3937,-3685,-3336,-2868, -2280,-1564,-730,209,1223,2297,3404,4521,5621,6681,7668,8551,9305,9917,10378,10689,10853,10885,10812,10648, 10414,10125,9808,9475,9127,8765,8397,8024,7654,7280,6908,6547,6195,5843,5493,5149,4814,4487,4164,3853, 3559,3274,2993,2717,2456,2204,1960,1722,1496,1280,1073,861,654,455,259,67,-125,-315,-505,-692, -879,-1068,-1249,-1430,-1607,-1788,-1970,-2151,-2335,-2527,-2717,-2907,-3096,-3292,-3494,-3699,-3909,-4122,-4344,-4564, -4784,-5002,-5223,-5450,-5678,-5900,-6121,-6339,-6552,-6749,-6940,-7130,-7316,-7481,-7633,-7765,-7879,-7968,-8020,-8043, -8023,-7951,-7799,-7555,-7208,-6755,-6186,-5503,-4726,-3866,-2937,-1959,-969,9,947,1818,2602,3282,3854,4315, 4663,4900,5038,5080,5033,4907,4721,4481,4192,3861,3505,3128,2738,2328,1909,1484,1063,638,220,-186, -579,-963,-1342,-1716,-2080,-2431,-2777,-3108,-3418,-3709,-3982,-4236,-4462,-4655,-4806,-4915,-4969,-4975,-4921,-4775, -4515,-4129,-3603,-2943,-2153,-1235,-209,904,2079,3287,4503,5684,6809,7843,8759,9528,10133,10571,10843,10959, 10932,10795,10581,10307,9984,9632,9257,8872,8473,8061,7649,7245,6846,6448,6055,5673,5298,4927,4565,4215, 3882,3558,3238,2932,2638,2352,2074,1803,1547,1302,1060,825,597,376,163,-44,-247,-440,-628,-816, -1003,-1186,-1369,-1545,-1723,-1898,-2067,-2240,-2417,-2597,-2779,-2962,-3150,-3338,-3532,-3727,-3925,-4127,-4336,-4546, -4753,-4962,-5177,-5396,-5615,-5836,-6060,-6288,-6511,-6729,-6948,-7170,-7387,-7599,-7803,-8003,-8190,-8359,-8507,-8645, -8771,-8871,-8940,-8973,-8963,-8896,-8754,-8522,-8204,-7775,-7220,-6533,-5728,-4820,-3828,-2777,-1700,-634,405,1381, 2273,3059,3728,4268,4679,4968,5144,5212,5182,5068,4885,4647,4358,4029,3677,3301,2911,2503,2088,1678, 1273,870,470,78,-306,-682,-1054,-1411,-1752,-2086,-2408,-2719,-3012,-3285,-3538,-3767,-3961,-4118,-4232,-4304, -4321,-4272,-4155,-3967,-3701,-3325,-2829,-2205,-1461,-597,367,1411,2505,3625,4746,5838,6879,7847,8711,9440, 10018,10439,10708,10837,10835,10736,10560,10318,10026,9698,9346,8987,8615,8234,7855,7478,7099,6718,6337,5968, 5607,5251,4902,4564,4234,3914,3598,3295,3009,2734,2465,2202,1951,1707,1470,1236,1010,796,584,372, 163,-39,-242,-441,-639,-833,-1021,-1209,-1397,-1582,-1766,-1951,-2132,-2314,-2497,-2680,-2870,-3064,-3263,-3462, -3661,-3869,-4079,-4288,-4504,-4719,-4944,-5166,-5385,-5601,-5817,-6036,-6250,-6457,-6668,-6874,-7069,-7249,-7421,-7583, -7737,-7876,-7995,-8097,-8174,-8211,-8203,-8145,-8036,-7852,-7577,-7202,-6717,-6121,-5414,-4610,-3736,-2812,-1858,-895, 50,952,1790,2542,3195,3737,4169,4489,4704,4822,4850,4798,4672,4485,4246,3966,3644,3289,2914,2524, 2125,1717,1304,901,499,97,-297,-681,-1050,-1413,-1768,-2110,-2440,-2756,-3060,-3348,-3609,-3844,-4052,-4231, -4368,-4463,-4511,-4518,-4441,-4266,-3975,-3559,-3022,-2354,-1557,-643,374,1469,2612,3779,4944,6080,7160,8151, 9021,9752,10320,10718,10951,11042,11016,10882,10664,10383,10061,9706,9329,8938,8547,8152,7750,7346,6942,6547, 6155,5770,5395,5030,4671,4319,3971,3640,3318,3008,2706,2414,2135,1862,1592,1332,1082,842,612,384, 166,-47,-254,-462,-662,-855,-1046,-1240,-1427,-1614,-1799,-1983,-2169,-2353,-2535,-2720,-2909,-3103,-3298,-3496, -3696,-3898,-4100,-4302,-4506,-4720,-4934,-5150,-5367,-5583,-5799,-6019,-6231,-6449,-6671,-6892,-7106,-7311,-7513,-7709, -7895,-8067,-8231,-8386,-8524,-8632,-8715,-8772,-8800,-8785,-8718,-8592,-8391,-8091,-7680,-7149,-6502,-5747,-4886,-3942, -2938,-1897,-845,186,1166,2066,2864,3552,4118,4564,4894,5106,5212,5222,5151,5002,4790,4528,4227,3896, 3539,3162,2776,2386,1986,1581,1179,784,394,12,-364,-729,-1081,-1436,-1782,-2119,-2438,-2747,-3038,-3313, -3566,-3795,-4004,-4178,-4313,-4401,-4434,-4410,-4325,-4180,-3942,-3597,-3129,-2529,-1800,-955,0,1045,2153,3301, 4461,5607,6702,7721,8638,9434,10086,10577,10911,11091,11137,11066,10900,10671,10394,10082,9737,9373,8998,8616, 8227,7832,7445,7063,6680,6302,5924,5553,5193,4837,4489,4157,3836,3522,3214,2919,2636,2365,2098,1841, 1595,1356,1121,890,663,446,232,21,-187,-390,-593,-795,-994,-1193,-1383,-1573,-1762,-1951,-2140,-2331, -2524,-2721,-2916,-3113,-3314,-3521,-3728,-3941,-4154,-4375,-4595,-4816,-5035,-5260,-5488,-5714,-5936,-6158,-6378,-6593, -6798,-6998,-7196,-7393,-7578,-7746,-7902,-8044,-8171,-8273,-8356,-8420,-8448,-8428,-8350,-8206,-7985,-7671,-7253,-6731, -6107,-5379,-4562,-3671,-2739,-1788,-840,77,943,1736,2442,3047,3546,3936,4218,4396,4481,4479,4400,4251, 4042,3785,3492,3166,2812,2437,2050,1656,1254,853,457,72,-307,-683,-1051,-1405,-1748,-2080,-2399,-2702, -2988,-3257,-3511,-3738,-3936,-4097,-4215,-4291,-4319,-4298,-4212,-4032,-3737,-3327,-2791,-2135,-1358,-474,508,1558, 2659,3785,4904,5995,7031,7989,8836,9556,10128,10547,10807,10920,10910,10802,10616,10372,10078,9754,9409,9044, 8666,8282,7901,7522,7144,6763,6389,6018,5654,5294,4944,4608,4277,3950,3633,3324,3027,2736,2451,2178, 1915,1660,1408,1163,930,703,483,267,62,-139,-339,-537,-731,-921,-1110,-1297,-1483,-1665,-1849,-2037, -2224,-2412,-2604,-2793,-2986,-3183,-3382,-3581,-3788,-3996,-4204,-4410,-4621,-4834,-5050,-5268,-5487,-5704,-5928,-6145, -6358,-6570,-6785,-6996,-7199,-7392,-7577,-7753,-7907,-8045,-8171,-8281,-8365,-8419,-8434,-8410,-8326,-8179,-7950,-7641, -7230,-6707,-6064,-5313,-4473,-3554,-2588,-1596,-606,356,1267,2105,2848,3484,4003,4404,4692,4875,4961,4952, 4868,4719,4512,4257,3967,3640,3295,2929,2547,2159,1767,1376,989,600,217,-158,-530,-894,-1248,-1594, -1927,-2253,-2569,-2871,-3155,-3419,-3664,-3884,-4071,-4228,-4344,-4415,-4432,-4395,-4299,-4123,-3836,-3435,-2908,-2256, -1477,-582,420,1498,2630,3787,4940,6070,7146,8140,9016,9754,10337,10759,11025,11143,11141,11039,10855,10602, 10304,9975,9626,9262,8886,8504,8120,7732,7341,6951,6568,6189,5819,5450,5091,4743,4399,4068,3745,3438, 3143,2854,2574,2306,2044,1791,1541,1302,1073,849,628,410,196,-11,-216,-421,-620,-814,-1009,-1201, -1394,-1582,-1766,-1954,-2141,-2328,-2518,-2711,-2909,-3109,-3311,-3514,-3726,-3938,-4155,-4373,-4597,-4824,-5055,-5280, -5505,-5729,-5955,-6179,-6398,-6620,-6840,-7050,-7249,-7440,-7626,-7802,-7967,-8119,-8255,-8373,-8466,-8525,-8552,-8546, -8493,-8371,-8175,-7887,-7499,-6995,-6380,-5666,-4864,-3988,-3056,-2093,-1128,-186,714,1540,2277,2910,3441,3855, 4165,4368,4471,4483,4411,4273,4072,3818,3521,3191,2840,2467,2077,1681,1279,880,481,86,-302,-672, -1037,-1393,-1739,-2073,-2399,-2712,-3010,-3288,-3545,-3777,-3986,-4159,-4299,-4391,-4433,-4424,-4358,-4224,-3989,-3643, -3177,-2590,-1883,-1066,-150,843,1893,2975,4073,5158,6201,7183,8074,8847,9485,9974,10318,10520,10595,10553, 10420,10217,9965,9667,9347,9010,8660,8301,7934,7565,7197,6833,6472,6114,5763,5421,5080,4740,4412,4094, 3781,3479,3183,2896,2618,2342,2077,1824,1577,1338,1105,880,662,448,239,34,-162,-356,-547,-743, -932,-1123,-1313,-1502,-1690,-1876,-2063,-2252,-2447,-2641,-2836,-3033,-3233,-3435,-3635,-3839,-4046,-4258,-4471,-4683, -4898,-5113,-5331,-5547,-5764,-5984,-6203,-6414,-6622,-6824,-7022,-7208,-7386,-7553,-7708,-7848,-7965,-8060,-8131,-8180, -8190,-8163,-8084,-7948,-7730,-7418,-7005,-6495,-5875,-5159,-4352,-3474,-2544,-1583,-621,315,1200,2014,2735,3355, 3866,4266,4561,4749,4842,4851,4781,4642,4444,4202,3919,3603,3259,2900,2530,2145,1754,1362,969,582, 193,-188,-560,-924,-1284,-1633,-1972,-2299,-2612,-2912,-3196,-3459,-3701,-3917,-4105,-4254,-4356,-4414,-4423,-4386, -4281,-4072,-3757,-3320,-2755,-2070,-1262,-345,668,1753,2884,4029,5171,6272,7312,8258,9090,9786,10324,10702, 10927,11015,10982,10851,10649,10398,10102,9777,9429,9062,8690,8309,7925,7543,7164,6782,6402,6023,5652,5288, 4933,4583,4249,3922,3606,3296,2997,2710,2431,2160,1898,1644,1400,1160,921,694,473,253,39,-173, -376,-581,-783,-983,-1179,-1368,-1556,-1745,-1933,-2118,-2307,-2498,-2689,-2884,-3079,-3277,-3483,-3690,-3900,-4115, -4333,-4550,-4771,-4990,-5213,-5440,-5663,-5885,-6106,-6326,-6542,-6751,-6956,-7162,-7361,-7552,-7725,-7893,-8045,-8184, -8303,-8404,-8487,-8540,-8554,-8518,-8429,-8277,-8046,-7721,-7292,-6757,-6109,-5351,-4504,-3592,-2633,-1653,-683,261, 1148,1962,2683,3297,3800,4189,4466,4634,4706,4691,4598,4435,4215,3947,3642,3303,2937,2554,2163,1763, 1360,961,569,181,-202,-577,-941,-1297,-1644,-1982,-2307,-2619,-2916,-3203,-3470,-3713,-3929,-4120,-4274,-4385, -4449,-4456,-4406,-4299,-4116,-3831,-3432,-2920,-2284,-1538,-683,266,1282,2344,3427,4507,5567,6574,7506,8341, 9055,9627,10047,10319,10459,10480,10402,10242,10018,9750,9446,9113,8768,8413,8052,7688,7321,6954,6590,6227, 5866,5513,5165,4826,4490,4156,3833,3520,3214,2915,2628,2349,2080,1817,1560,1317,1079,849,624,408, 201,-5,-208,-410,-605,-800,-991,-1183,-1371,-1560,-1750,-1937,-2123,-2310,-2500,-2688,-2881,-3073,-3268,-3465, -3667,-3866,-4068,-4269,-4475,-4689,-4901,-5112,-5328,-5544,-5757,-5968,-6177,-6386,-6596,-6794,-6986,-7170,-7344,-7507, -7654,-7785,-7906,-8007,-8083,-8134,-8152,-8133,-8064,-7940,-7752,-7483,-7119,-6648,-6071,-5395,-4629,-3784,-2883,-1953, -1013,-86,805,1631,2373,3021,3562,3996,4325,4552,4680,4723,4684,4576,4409,4187,3924,3627,3298,2950, 2582,2206,1824,1434,1042,649,263,-117,-494,-861,-1212,-1556,-1889,-2213,-2523,-2816,-3091,-3343,-3574,-3774, -3940,-4071,-4161,-4201,-4194,-4136,-4002,-3768,-3425,-2958,-2375,-1669,-849,70,1072,2132,3225,4329,5417,6469, 7454,8344,9111,9738,10219,10547,10732,10791,10745,10610,10402,10143,9847,9528,9187,8835,8471,8104,7729,7351, 6968,6594,6223,5856,5492,5137,4789,4448,4117,3793,3484,3184,2891,2607,2331,2063,1804,1548,1305,1066, 835,607,383,166,-47,-257,-460,-660,-857,-1050,-1243,-1433,-1621,-1807,-1995,-2180,-2364,-2551,-2742,-2938, -3136,-3337,-3539,-3744,-3957,-4169,-4381,-4602,-4820,-5042,-5260,-5478,-5698,-5918,-6134,-6349,-6563,-6772,-6975,-7169, -7356,-7537,-7710,-7871,-8015,-8143,-8255,-8339,-8395,-8418,-8412,-8358,-8244,-8057,-7787,-7417,-6940,-6348,-5655,-4863, -3997,-3060,-2088,-1101,-127,810,1679,2466,3151,3727,4193,4544,4789,4929,4973,4935,4820,4641,4405,4122, 3807,3462,3099,2716,2327,1934,1540,1146,754,370,-4,-374,-738,-1090,-1433,-1770,-2094,-2408,-2708,-2991, -3259,-3508,-3732,-3928,-4087,-4207,-4277,-4292,-4245,-4142,-3973,-3720,-3356,-2871,-2270,-1553,-730,190,1185,2232, 3307,4388,5445,6458,7401,8248,8978,9573,10025,10334,10497,10538,10476,10333,10121,9863,9572,9255,8918,8563, 8203,7840,7475,7110,6745,6384,6022,5665,5307,4956,4617,4281,3951,3632,3321,3017,2723,2433,2157,1892, 1633,1382,1140,905,677,453,236,22,-182,-391,-595,-797,-996,-1197,-1396,-1590,-1782,-1974,-2167,-2360, -2555,-2749,-2946,-3145,-3341,-3541,-3740,-3949,-4158,-4368,-4582,-4797,-5015,-5236,-5453,-5675,-5896,-6118,-6334,-6546, -6753,-6958,-7154,-7340,-7521,-7689,-7846,-7983,-8102,-8207,-8293,-8353,-8384,-8381,-8337,-8239,-8072,-7826,-7498,-7067, -6531,-5888,-5146,-4321,-3427,-2489,-1534,-589,322,1182,1966,2662,3256,3743,4117,4391,4563,4642,4637,4558, 4416,4220,3975,3691,3375,3036,2673,2295,1911,1520,1129,740,353,-28,-398,-761,-1116,-1460,-1789,-2106, -2409,-2695,-2962,-3208,-3431,-3627,-3790,-3917,-3998,-4033,-4014,-3946,-3812,-3589,-3259,-2812,-2248,-1568,-779,111, 1077,2103,3165,4236,5292,6314,7270,8143,8907,9539,10031,10375,10581,10662,10635,10524,10346,10115,9841,9538, 9214,8873,8522,8161,7799,7438,7070,6702,6337,5979,5625,5273,4933,4599,4272,3955,3643,3340,3048,2763, 2484,2215,1950,1696,1447,1200,962,731,506,285,68,-142,-348,-552,-754,-950,-1145,-1336,-1527,-1717, -1906,-2095,-2288,-2480,-2675,-2873,-3073,-3281,-3488,-3700,-3912,-4128,-4346,-4563,-4782,-5003,-5225,-5450,-5668,-5887, -6104,-6319,-6531,-6736,-6940,-7141,-7330,-7509,-7674,-7831,-7970,-8091,-8193,-8277,-8330,-8347,-8320,-8243,-8107,-7900, -7601,-7208,-6708,-6098,-5379,-4566,-3678,-2736,-1762,-785,174,1090,1940,2699,3357,3904,4336,4662,4874,4990, 5016,4956,4826,4630,4385,4099,3777,3428,3062,2684,2298,1907,1515,1128,743,362,-15,-383,-743,-1092, -1433,-1767,-2086,-2397,-2699,-2984,-3251,-3493,-3713,-3903,-4057,-4171,-4235,-4247,-4197,-4083,-3907,-3650,-3292,-2816, -2221,-1507,-687,233,1224,2267,3337,4415,5473,6489,7438,8293,9026,9621,10070,10376,10546,10595,10538,10401, 10196,9942,9649,9335,9001,8660,8306,7945,7581,7216,6847,6479,6116,5756,5402,5049,4700,4359,4026,3702, 3382,3076,2779,2490,2209,1937,1674,1420,1174,934,702,476,253,32,-184,-395,-604,-811,-1016,-1219, -1420,-1623,-1822,-2019,-2212,-2409,-2602,-2800,-2999,-3201,-3403,-3609,-3815,-4024,-4238,-4455,-4675,-4899,-5122,-5349, -5580,-5805,-6030,-6256,-6480,-6703,-6917,-7126,-7327,-7523,-7702,-7873,-8034,-8182,-8314,-8427,-8516,-8586,-8625,-8630, -8594,-8509,-8366,-8142,-7822,-7399,-6870,-6228,-5485,-4652,-3757,-2808,-1840,-869,73,963,1777,2499,3119,3624, 4026,4319,4508,4605,4615,4549,4412,4218,3975,3692,3371,3027,2664,2288,1901,1505,1113,723,339,-43, -413,-772,-1121,-1461,-1786,-2100,-2394,-2675,-2938,-3182,-3401,-3598,-3765,-3897,-3983,-4023,-4005,-3925,-3783,-3579, -3285,-2884,-2367,-1736,-992,-150,776,1762,2785,3828,4865,5873,6828,7704,8479,9137,9662,10052,10305,10433, 10452,10376,10225,10018,9768,9488,9183,8859,8521,8178,7823,7465,7109,6754,6401,6051,5705,5364,5026,4694, 4372,4057,3750,3451,3154,2868,2588,2316,2047,1786,1536,1292,1050,815,588,366,150,-64,-273,-475, -676,-876,-1073,-1271,-1463,-1656,-1850,-2044,-2239,-2438,-2640,-2844,-3050,-3256,-3469,-3681,-3897,-4114,-4335,-4556, -4779,-5001,-5223,-5447,-5670,-5892,-6113,-6330,-6547,-6758,-6963,-7161,-7351,-7534,-7704,-7862,-8002,-8127,-8227,-8303, -8350,-8371,-8353,-8281,-8152,-7951,-7666,-7280,-6791,-6196,-5499,-4709,-3835,-2906,-1941,-970,-12,904,1754,2517, 3185,3745,4194,4532,4763,4894,4930,4885,4767,4588,4354,4081,3773,3439,3082,2714,2335,1950,1562,1175, 790,414,41,-327,-684,-1034,-1374,-1706,-2028,-2333,-2624,-2900,-3156,-3388,-3593,-3766,-3901,-3992,-4036,-4024, -3946,-3804,-3599,-3311,-2917,-2414,-1790,-1059,-218,703,1695,2730,3781,4834,5859,6835,7731,8528,9203,9746, 10142,10396,10522,10534,10457,10303,10094,9841,9554,9247,8921,8579,8235,7883,7528,7168,6809,6450,6091,5731, 5379,5033,4691,4353,4025,3705,3393,3086,2791,2507,2231,1965,1703,1449,1202,964,728,499,276,53, -165,-381,-594,-802,-1011,-1218,-1421,-1622,-1823,-2025,-2220,-2420,-2618,-2818,-3017,-3222,-3427,-3638,-3849,-4066, -4284,-4506,-4730,-4960,-5190,-5424,-5654,-5889,-6122,-6351,-6576,-6799,-7016,-7229,-7433,-7629,-7817,-7994,-8156,-8302, -8434,-8552,-8650,-8720,-8765,-8776,-8743,-8658,-8507,-8281,-7967,-7546,-7012,-6364,-5610,-4762,-3840,-2870,-1877,-889, 75,985,1822,2565,3202,3729,4141,4444,4644,4745,4755,4690,4554,4358,4106,3815,3492,3140,2768,2386, 1995,1601,1207,811,425,47,-327,-686,-1036,-1370,-1692,-2002,-2301,-2582,-2849,-3097,-3324,-3523,-3693,-3829, -3926,-3976,-3972,-3903,-3766,-3554,-3272,-2905,-2435,-1853,-1158,-361,523,1472,2464,3475,4487,5476,6428,7308, 8104,8782,9338,9760,10048,10209,10263,10221,10103,9922,9690,9422,9130,8819,8490,8158,7819,7472,7121,6771, 6422,6077,5735,5397,5064,4738,4415,4100,3786,3484,3188,2899,2615,2341,2072,1807,1552,1303,1063,830, 601,377,161,-53,-264,-469,-673,-872,-1070,-1268,-1466,-1661,-1857,-2054,-2254,-2450,-2652,-2857,-3062,-3271, -3482,-3693,-3911,-4126,-4344,-4564,-4784,-5009,-5232,-5455,-5678,-5902,-6124,-6343,-6562,-6777,-6985,-7190,-7381,-7564, -7736,-7896,-8038,-8165,-8273,-8359,-8416,-8438,-8424,-8368,-8253,-8075,-7813,-7460,-7001,-6431,-5753,-4977,-4118,-3199, -2236,-1259,-293,641,1518,2313,3010,3599,4079,4442,4700,4854,4917,4892,4792,4633,4415,4152,3851,3522, 3172,2805,2423,2040,1651,1264,875,491,114,-256,-619,-972,-1318,-1648,-1968,-2274,-2564,-2832,-3083,-3306, -3503,-3668,-3794,-3879,-3916,-3893,-3806,-3647,-3421,-3122,-2730,-2234,-1619,-898,-76,828,1796,2802,3828,4851, 5847,6790,7658,8426,9073,9584,9963,10206,10327,10338,10265,10114,9906,9659,9381,9081,8768,8438,8099,7754, 7403,7049,6694,6340,5991,5642,5292,4949,4610,4282,3956,3644,3335,3037,2751,2467,2194,1928,1670,1419, 1174,934,702,472,247,27,-189,-404,-615,-825,-1032,-1232,-1435,-1635,-1835,-2027,-2223,-2418,-2613,-2812, -3015,-3218,-3425,-3635,-3845,-4061,-4283,-4504,-4732,-4962,-5192,-5425,-5657,-5888,-6119,-6347,-6573,-6796,-7014,-7221, -7426,-7622,-7803,-7979,-8142,-8292,-8423,-8535,-8626,-8696,-8731,-8731,-8689,-8594,-8428,-8178,-7828,-7373,-6805,-6119, -5328,-4452,-3501,-2506,-1486,-480,494,1404,2239,2972,3597,4108,4506,4796,4978,5060,5057,4968,4812,4598, 4337,4033,3696,3337,2962,2573,2174,1777,1378,986,599,222,-147,-503,-851,-1188,-1511,-1824,-2123,-2409, -2678,-2928,-3161,-3368,-3546,-3693,-3798,-3860,-3868,-3819,-3701,-3505,-3229,-2868,-2421,-1880,-1238,-485,354,1267, 2233,3227,4230,5215,6165,7058,7868,8577,9164,9623,9953,10156,10241,10225,10130,9968,9758,9506,9226,8923, 8605,8276,7939,7597,7256,6912,6567,6225,5884,5548,5214,4885,4564,4246,3936,3627,3327,3035,2749,2468, 2196,1932,1676,1425,1178,940,710,482,262,47,-167,-377,-585,-791,-994,-1200,-1400,-1602,-1805,-2006, -2208,-2415,-2620,-2830,-3040,-3250,-3465,-3684,-3902,-4125,-4348,-4573,-4800,-5026,-5256,-5486,-5719,-5950,-6183,-6411, -6636,-6857,-7070,-7282,-7485,-7676,-7858,-8022,-8172,-8307,-8416,-8508,-8577,-8615,-8618,-8575,-8479,-8318,-8078,-7741, -7305,-6757,-6101,-5338,-4483,-3560,-2592,-1603,-616,339,1240,2062,2790,3412,3920,4315,4599,4779,4861,4858, 4776,4628,4425,4171,3878,3553,3204,2838,2460,2073,1682,1292,901,517,133,-243,-607,-963,-1307,-1638, -1955,-2254,-2538,-2804,-3049,-3270,-3460,-3618,-3741,-3818,-3851,-3827,-3738,-3585,-3353,-3038,-2646,-2164,-1582,-893, -106,769,1701,2678,3672,4660,5625,6541,7387,8142,8784,9299,9678,9927,10062,10087,10031,9900,9712,9482, 9221,8933,8627,8309,7983,7648,7309,6966,6623,6275,5929,5584,5247,4911,4581,4257,3941,3634,3331,3035, 2749,2473,2203,1938,1680,1426,1181,941,705,476,252,28,-191,-408,-620,-830,-1037,-1243,-1441,-1638, -1838,-2034,-2233,-2428,-2628,-2829,-3031,-3238,-3447,-3659,-3879,-4098,-4320,-4546,-4776,-5005,-5239,-5472,-5706,-5939, -6172,-6400,-6626,-6848,-7066,-7277,-7480,-7676,-7865,-8038,-8199,-8347,-8480,-8593,-8684,-8748,-8784,-8778,-8728,-8616, -8438,-8176,-7814,-7338,-6748,-6043,-5232,-4332,-3368,-2361,-1338,-326,651,1566,2399,3132,3757,4264,4657,4938, 5112,5185,5174,5082,4924,4704,4437,4130,3796,3432,3053,2665,2274,1876,1484,1093,711,339,-29,-385, -727,-1060,-1380,-1691,-1987,-2269,-2534,-2783,-3010,-3212,-3386,-3526,-3627,-3681,-3682,-3622,-3495,-3293,-3009,-2637, -2175,-1624,-981,-242,585,1486,2437,3413,4403,5379,6319,7201,7999,8698,9278,9725,10046,10246,10334,10322, 10227,10066,9854,9608,9330,9035,8722,8398,8066,7729,7385,7044,6704,6365,6024,5689,5356,5027,4698,4377, 4065,3757,3456,3158,2872,2590,2317,2049,1790,1538,1293,1056,818,591,370,147,-68,-282,-493,-705, -912,-1121,-1327,-1535,-1739,-1944,-2150,-2359,-2567,-2781,-2994,-3210,-3428,-3646,-3869,-4091,-4322,-4550,-4783,-5020, -5256,-5493,-5731,-5972,-6208,-6446,-6681,-6914,-7140,-7356,-7565,-7765,-7954,-8128,-8288,-8433,-8560,-8664,-8743,-8792, -8814,-8793,-8722,-8589,-8381,-8083,-7678,-7157,-6525,-5785,-4947,-4029,-3056,-2053,-1044,-60,877,1737,2505,3169, 3719,4154,4478,4692,4808,4831,4774,4646,4455,4214,3929,3611,3268,2902,2523,2134,1740,1343,946,554, 169,-208,-577,-933,-1271,-1603,-1917,-2216,-2495,-2755,-2995,-3209,-3396,-3550,-3666,-3744,-3773,-3749,-3664,-3512, -3285,-2976,-2581,-2093,-1516,-849,-96,739,1633,2572,3532,4494,5435,6330,7157,7896,8530,9044,9435,9700, 9847,9892,9848,9734,9559,9348,9099,8829,8536,8226,7908,7581,7253,6916,6580,6244,5907,5572,5239,4910, 4588,4272,3961,3657,3363,3072,2791,2513,2241,1982,1725,1471,1227,988,751,519,291,71,-146,-363, -575,-782,-987,-1193,-1394,-1592,-1789,-1986,-2182,-2379,-2580,-2781,-2987,-3194,-3406,-3622,-3842,-4062,-4289,-4517, -4750,-4979,-5215,-5450,-5683,-5916,-6152,-6386,-6616,-6840,-7062,-7278,-7487,-7685,-7878,-8062,-8232,-8386,-8524,-8642, -8739,-8808,-8848,-8852,-8814,-8716,-8546,-8291,-7941,-7478,-6902,-6210,-5412,-4526,-3567,-2560,-1536,-518,465,1391, 2236,2986,3625,4148,4556,4850,5037,5126,5123,5039,4885,4673,4410,4106,3770,3412,3035,2648,2253,1860, 1465,1078,695,320,-46,-404,-750,-1087,-1407,-1720,-2012,-2291,-2556,-2801,-3024,-3222,-3386,-3516,-3603,-3646, -3631,-3557,-3416,-3197,-2899,-2513,-2038,-1471,-812,-67,755,1646,2583,3544,4515,5467,6382,7238,8014,8687, 9241,9670,9973,10152,10225,10202,10103,9945,9737,9493,9222,8929,8622,8304,7984,7654,7323,6991,6654,6323, 5987,5657,5328,5004,4684,4370,4062,3757,3459,3168,2885,2608,2342,2078,1824,1575,1333,1096,868,640, 419,202,-14,-229,-442,-653,-860,-1070,-1277,-1482,-1688,-1895,-2102,-2309,-2519,-2729,-2942,-3160,-3379,-3599, -3823,-4051,-4282,-4517,-4751,-4991,-5233,-5477,-5724,-5969,-6215,-6457,-6697,-6934,-7164,-7390,-7607,-7812,-8006,-8188, -8356,-8506,-8638,-8752,-8843,-8907,-8934,-8921,-8865,-8743,-8544,-8253,-7860,-7348,-6713,-5965,-5117,-4184,-3192,-2167, -1141,-134,826,1714,2508,3198,3772,4229,4565,4798,4924,4956,4905,4782,4593,4354,4068,3745,3398,3025, 2641,2243,1840,1438,1039,640,251,-128,-498,-857,-1202,-1532,-1845,-2144,-2424,-2684,-2921,-3134,-3322,-3480, -3601,-3682,-3718,-3700,-3623,-3482,-3264,-2968,-2587,-2117,-1554,-903,-167,644,1515,2428,3366,4309,5233,6121, 6947,7691,8335,8864,9268,9556,9728,9799,9778,9686,9532,9330,9092,8828,8543,8247,7937,7617,7293,6964, 6631,6301,5971,5646,5320,4999,4681,4371,4064,3766,3470,3184,2905,2632,2363,2099,1843,1592,1345,1104, 869,638,411,187,-32,-245,-456,-664,-871,-1075,-1279,-1478,-1678,-1876,-2074,-2275,-2476,-2682,-2890,-3105, -3319,-3540,-3760,-3986,-4213,-4445,-4677,-4913,-5150,-5387,-5627,-5865,-6100,-6336,-6570,-6804,-7030,-7254,-7471,-7682, -7882,-8070,-8247,-8412,-8559,-8692,-8795,-8878,-8928,-8941,-8912,-8828,-8679,-8446,-8114,-7672,-7117,-6439,-5657,-4777, -3828,-2823,-1798,-770,230,1175,2044,2814,3476,4022,4451,4766,4971,5074,5086,5017,4870,4663,4408,4106, 3774,3415,3042,2658,2266,1867,1474,1080,695,314,-57,-416,-767,-1106,-1431,-1744,-2041,-2322,-2586,-2830, -3045,-3238,-3399,-3522,-3601,-3634,-3609,-3527,-3374,-3152,-2847,-2458,-1978,-1410,-750,-8,806,1680,2597,3540, 4493,5425,6322,7155,7908,8559,9093,9508,9798,9971,10037,10016,9911,9751,9544,9303,9036,8751,8452,8140, 7821,7498,7171,6841,6512,6184,5854,5529,5205,4881,4566,4255,3949,3651,3357,3073,2794,2521,2257,1999, 1750,1505,1266,1033,806,582,361,140,-73,-283,-495,-704,-912,-1121,-1324,-1532,-1733,-1938,-2141,-2346, -2553,-2762,-2972,-3187,-3401,-3620,-3843,-4073,-4300,-4537,-4774,-5012,-5255,-5499,-5742,-5990,-6235,-6477,-6721,-6956, -7186,-7410,-7625,-7833,-8025,-8209,-8377,-8531,-8665,-8778,-8870,-8934,-8967,-8958,-8900,-8779,-8583,-8291,-7890,-7369, -6735,-5977,-5121,-4179,-3178,-2141,-1101,-80,888,1787,2591,3292,3874,4340,4689,4924,5056,5097,5052,4930, 4746,4503,4219,3899,3545,3172,2786,2385,1985,1580,1178,782,396,16,-351,-707,-1049,-1378,-1689,-1983, -2257,-2515,-2751,-2964,-3152,-3309,-3432,-3513,-3549,-3533,-3459,-3323,-3109,-2821,-2447,-1987,-1436,-797,-77,717, 1572,2471,3394,4325,5239,6119,6939,7681,8328,8866,9287,9589,9778,9860,9853,9770,9625,9432,9207,8950, 8669,8372,8064,7751,7429,7102,6776,6449,6124,5797,5473,5158,4842,4534,4231,3933,3640,3354,3072,2798, 2529,2266,2007,1754,1508,1267,1030,799,573,352,133,-83,-293,-500,-709,-912,-1117,-1316,-1514,-1717, -1917,-2119,-2323,-2532,-2742,-2955,-3174,-3393,-3616,-3846,-4074,-4306,-4538,-4775,-5014,-5254,-5494,-5735,-5977,-6218, -6457,-6693,-6926,-7158,-7379,-7598,-7807,-8006,-8189,-8362,-8515,-8653,-8770,-8862,-8922,-8954,-8939,-8868,-8738,-8528, -8225,-7812,-7284,-6639,-5879,-5018,-4077,-3079,-2050,-1017,-7,957,1847,2645,3338,3913,4372,4713,4945,5071, 5099,5044,4913,4721,4473,4180,3857,3506,3135,2750,2355,1959,1560,1167,774,392,14,-349,-706,-1047, -1377,-1692,-1991,-2273,-2537,-2779,-2995,-3182,-3338,-3453,-3531,-3560,-3533,-3447,-3294,-3070,-2768,-2381,-1908,-1350, -703,21,818,1673,2568,3485,4407,5318,6188,7003,7735,8369,8892,9296,9577,9746,9814,9790,9694,9540, 9337,9102,8840,8557,8262,7957,7644,7325,7000,6674,6346,6021,5697,5372,5052,4736,4422,4115,3812,3516, 3226,2946,2669,2401,2142,1885,1637,1395,1156,925,695,474,253,36,-181,-393,-604,-813,-1024,-1228, -1433,-1636,-1840,-2044,-2244,-2449,-2655,-2862,-3071,-3287,-3502,-3722,-3947,-4174,-4405,-4639,-4880,-5120,-5365,-5610, -5857,-6103,-6347,-6592,-6832,-7069,-7301,-7527,-7742,-7946,-8142,-8325,-8494,-8649,-8785,-8905,-8999,-9063,-9093,-9086, -9024,-8899,-8695,-8393,-7984,-7449,-6795,-6024,-5150,-4195,-3181,-2135,-1086,-60,919,1824,2635,3335,3919,4386, 4735,4972,5108,5145,5102,4980,4792,4551,4261,3937,3584,3212,2820,2423,2022,1619,1216,820,434,57, -312,-664,-1003,-1328,-1635,-1928,-2202,-2459,-2696,-2908,-3096,-3252,-3376,-3459,-3495,-3480,-3406,-3266,-3056,-2766, -2395,-1938,-1390,-756,-37,750,1600,2490,3408,4329,5238,6116,6936,7679,8327,8869,9295,9604,9799,9891, 9890,9811,9672,9479,9252,8997,8719,8424,8119,7804,7486,7161,6835,6510,6186,5866,5546,5229,4918,4610, 4308,4012,3718,3432,3152,2878,2607,2344,2086,1832,1586,1345,1110,879,653,432,215,3,-210,-418, -625,-828,-1033,-1234,-1436,-1638,-1840,-2046,-2252,-2460,-2673,-2887,-3106,-3327,-3551,-3777,-4007,-4240,-4476,-4711, -4951,-5193,-5437,-5680,-5926,-6171,-6415,-6655,-6896,-7132,-7360,-7584,-7798,-8001,-8194,-8374,-8536,-8680,-8801,-8901, -8972,-9008,-9004,-8954,-8835,-8637,-8349,-7949,-7433,-6794,-6037,-5181,-4240,-3231,-2193,-1142,-115,870,1781,2605, 3319,3914,4393,4747,4991,5130,5170,5123,5001,4812,4570,4282,3955,3602,3230,2842,2445,2042,1642,1241, 843,455,75,-297,-658,-1004,-1338,-1658,-1960,-2245,-2508,-2748,-2962,-3150,-3304,-3422,-3495,-3524,-3498,-3412, -3263,-3039,-2740,-2361,-1892,-1339,-702,19,803,1649,2537,3447,4366,5268,6131,6940,7666,8299,8823,9228, 9518,9692,9763,9742,9647,9495,9299,9065,8804,8526,8232,7924,7610,7291,6968,6646,6320,5992,5668,5346, 5025,4708,4398,4092,3794,3499,3212,2933,2659,2392,2134,1880,1633,1389,1152,919,692,466,245,28, -187,-399,-612,-822,-1028,-1234,-1438,-1639,-1838,-2039,-2240,-2444,-2649,-2855,-3066,-3277,-3495,-3711,-3937,-4168, -4401,-4635,-4874,-5116,-5358,-5604,-5850,-6100,-6342,-6586,-6828,-7064,-7298,-7522,-7742,-7952,-8154,-8341,-8515,-8678, -8819,-8942,-9045,-9124,-9166,-9168,-9120,-9012,-8823,-8541,-8153,-7646,-7018,-6268,-5414,-4476,-3469,-2428,-1379,-344, 642,1563,2394,3119,3733,4227,4602,4865,5022,5081,5052,4945,4769,4538,4258,3940,3593,3221,2835,2437, 2034,1631,1230,837,449,70,-296,-648,-988,-1313,-1620,-1914,-2190,-2448,-2680,-2891,-3075,-3226,-3340,-3415, -3443,-3417,-3332,-3180,-2956,-2650,-2263,-1789,-1230,-584,140,935,1782,2673,3583,4495,5393,6252,7053,7778, 8409,8932,9337,9627,9802,9876,9859,9770,9622,9427,9194,8932,8652,8357,8050,7738,7419,7098,6775,6455, 6129,5809,5491,5180,4872,4565,4265,3969,3678,3394,3114,2841,2575,2311,2057,1808,1564,1324,1091,864, 641,424,207,-4,-212,-418,-626,-830,-1033,-1235,-1435,-1637,-1843,-2045,-2251,-2460,-2671,-2885,-3101,-3320, -3543,-3771,-3998,-4230,-4465,-4701,-4942,-5183,-5430,-5676,-5923,-6171,-6419,-6664,-6906,-7144,-7379,-7607,-7826,-8034, -8230,-8410,-8581,-8728,-8856,-8963,-9041,-9088,-9094,-9052,-8950,-8771,-8504,-8123,-7624,-7006,-6266,-5421,-4482,-3480, -2436,-1381,-337,663,1595,2440,3177,3797,4299,4678,4943,5100,5158,5127,5019,4844,4610,4330,4012,3666, 3295,2909,2513,2109,1708,1304,908,513,126,-249,-610,-960,-1294,-1612,-1912,-2196,-2457,-2695,-2909,-3092, -3246,-3356,-3430,-3454,-3429,-3341,-3190,-2970,-2671,-2290,-1826,-1276,-642,73,857,1698,2579,3483,4391,5287, 6145,6945,7668,8298,8818,9223,9511,9689,9763,9748,9657,9508,9311,9081,8822,8543,8252,7947,7635,7317, 6994,6671,6347,6021,5700,5379,5061,4749,4441,4137,3844,3553,3270,2993,2721,2457,2201,1946,1701,1458, 1223,993,764,540,320,102,-113,-323,-535,-744,-947,-1152,-1350,-1552,-1752,-1952,-2151,-2352,-2557,-2761, -2971,-3183,-3401,-3623,-3847,-4074,-4306,-4543,-4781,-5022,-5268,-5511,-5758,-6004,-6249,-6494,-6735,-6974,-7210,-7438, -7657,-7871,-8075,-8270,-8451,-8618,-8771,-8901,-9011,-9094,-9148,-9163,-9129,-9036,-8874,-8616,-8253,-7771,-7169,-6447, -5617,-4696,-3708,-2676,-1628,-589,412,1348,2203,2959,3599,4120,4526,4816,5000,5080,5071,4979,4821,4599, 4331,4019,3678,3311,2927,2533,2132,1728,1327,933,544,164,-202,-558,-898,-1225,-1538,-1834,-2109,-2365, -2599,-2807,-2988,-3135,-3247,-3315,-3335,-3299,-3203,-3040,-2802,-2488,-2088,-1605,-1036,-383,341,1132,1975,2856, 3755,4656,5540,6382,7163,7867,8472,8973,9359,9630,9793,9850,9821,9720,9563,9360,9124,8861,8580,8287, 7977,7663,7345,7025,6703,6382,6063,5746,5429,5116,4806,4502,4200,3908,3618,3334,3054,2782,2515,2256, 2001,1751,1509,1273,1042,816,593,376,163,-52,-258,-467,-673,-877,-1082,-1285,-1485,-1690,-1892,-2095, -2301,-2508,-2717,-2932,-3147,-3366,-3588,-3811,-4037,-4271,-4506,-4743,-4981,-5225,-5469,-5717,-5965,-6214,-6465,-6708, -6952,-7192,-7426,-7653,-7873,-8082,-8281,-8464,-8632,-8780,-8911,-9018,-9097,-9146,-9155,-9115,-9013,-8833,-8560,-8176, -7674,-7048,-6302,-5447,-4500,-3485,-2433,-1365,-314,697,1636,2485,3225,3851,4353,4735,5003,5161,5220,5189, 5081,4907,4672,4391,4074,3725,3352,2966,2566,2161,1752,1347,945,552,165,-214,-580,-929,-1264,-1585, -1883,-2169,-2432,-2670,-2885,-3072,-3225,-3341,-3417,-3445,-3423,-3343,-3201,-2984,-2690,-2318,-1860,-1316,-687,21, 801,1638,2521,3428,4339,5239,6101,6910,7644,8283,8820,9242,9542,9731,9816,9807,9726,9581,9389,9162, 8901,8623,8329,8024,7708,7388,7063,6738,6410,6084,5759,5439,5121,4810,4503,4201,3903,3616,3331,3054, 2783,2520,2261,2008,1761,1519,1283,1047,821,596,374,157,-57,-269,-478,-683,-888,-1089,-1291,-1489, -1685,-1887,-2083,-2284,-2488,-2694,-2905,-3117,-3335,-3554,-3781,-4009,-4241,-4478,-4714,-4956,-5200,-5443,-5689,-5934, -6181,-6426,-6669,-6910,-7145,-7375,-7603,-7819,-8030,-8229,-8414,-8589,-8741,-8882,-8998,-9088,-9150,-9171,-9147,-9062, -8903,-8657,-8308,-7839,-7249,-6536,-5717,-4804,-3817,-2785,-1736,-690,320,1271,2139,2907,3565,4102,4517,4820, 5014,5107,5105,5018,4864,4650,4380,4071,3728,3363,2978,2580,2181,1778,1375,981,588,207,-166,-526, -874,-1207,-1522,-1820,-2103,-2364,-2604,-2818,-3000,-3153,-3265,-3335,-3359,-3327,-3231,-3072,-2838,-2529,-2132,-1656, -1092,-449,272,1061,1898,2776,3675,4574,5456,6298,7086,7794,8410,8919,9311,9589,9751,9815,9788,9693, 9534,9330,9092,8824,8540,8244,7934,7621,7302,6979,6655,6333,6010,5691,5374,5060,4748,4444,4141,3843, 3552,3268,2990,2718,2451,2190,1936,1691,1447,1211,984,757,537,318,102,-108,-319,-524,-731,-935, -1138,-1340,-1542,-1742,-1945,-2148,-2351,-2557,-2765,-2976,-3191,-3407,-3626,-3849,-4075,-4303,-4537,-4775,-5013,-5256, -5502,-5747,-5995,-6242,-6491,-6736,-6982,-7220,-7456,-7684,-7900,-8108,-8304,-8488,-8659,-8809,-8943,-9052,-9136,-9186, -9200,-9163,-9066,-8896,-8629,-8254,-7761,-7142,-6403,-5555,-4618,-3610,-2563,-1499,-451,559,1502,2355,3103,3734, 4247,4638,4916,5082,5154,5134,5035,4865,4642,4366,4051,3706,3338,2954,2554,2145,1740,1333,930,533, 147,-231,-592,-945,-1282,-1600,-1902,-2186,-2447,-2684,-2896,-3080,-3234,-3350,-3425,-3454,-3429,-3348,-3201,-2982, -2688,-2308,-1845,-1295,-659,59,844,1687,2572,3483,4398,5300,6166,6975,7707,8345,8876,9296,9597,9785, 9865,9857,9770,9623,9426,9193,8934,8650,8355,8046,7727,7405,7078,6748,6423,6095,5772,5452,5134,4822, 4514,4214,3918,3631,3346,3071,2800,2536,2279,2024,1778,1534,1296,1064,834,611,391,173,-40,-248, -456,-661,-865,-1065,-1266,-1464,-1663,-1860,-2059,-2260,-2464,-2671,-2879,-3093,-3311,-3531,-3755,-3984,-4212,-4447, -4686,-4922,-5167,-5409,-5653,-5898,-6142,-6386,-6631,-6869,-7110,-7340,-7566,-7788,-7998,-8199,-8392,-8567,-8726,-8868, -8987,-9081,-9147,-9173,-9158,-9082,-8936,-8701,-8362,-7911,-7336,-6641,-5834,-4931,-3955,-2928,-1875,-828,188,1150, 2028,2811,3483,4036,4471,4791,4994,5099,5109,5035,4887,4675,4411,4110,3771,3409,3025,2633,2233,1828, 1423,1024,632,244,-130,-493,-845,-1180,-1500,-1804,-2092,-2357,-2594,-2809,-2997,-3151,-3262,-3334,-3354,-3318, -3223,-3063,-2828,-2517,-2125,-1647,-1080,-437,285,1071,1913,2791,3689,4588,5473,6316,7104,7813,8428,8942, 9333,9610,9774,9835,9807,9706,9544,9338,9097,8830,8542,8242,7933,7617,7295,6973,6645,6321,5997,5675, 5355,5041,4726,4419,4115,3818,3528,3243,2963,2692,2426,2168,1915,1668,1430,1195,966,741,520,305, 92,-123,-329,-535,-742,-947,-1149,-1349,-1551,-1748,-1949,-2149,-2350,-2555,-2758,-2966,-3176,-3390,-3608,-3827, -4053,-4280,-4510,-4745,-4981,-5223,-5466,-5713,-5958,-6206,-6454,-6697,-6939,-7176,-7410,-7637,-7855,-8065,-8261,-8448, -8620,-8773,-8908,-9024,-9116,-9178,-9203,-9179,-9098,-8946,-8706,-8361,-7898,-7314,-6604,-5786,-4872,-3886,-2851,-1795, -747,267,1222,2097,2868,3531,4074,4493,4800,4999,5094,5100,5023,4873,4665,4402,4098,3763,3398,3014, 2619,2217,1807,1401,996,603,213,-166,-532,-885,-1219,-1540,-1839,-2121,-2382,-2620,-2830,-3015,-3162,-3275, -3345,-3367,-3333,-3240,-3079,-2848,-2534,-2139,-1659,-1090,-437,295,1097,1950,2845,3758,4672,5568,6426,7221, 7941,8559,9073,9468,9745,9907,9970,9942,9840,9679,9469,9228,8959,8666,8364,8047,7727,7400,7071,6741, 6411,6084,5758,5436,5121,4806,4501,4199,3903,3616,3333,3056,2783,2520,2261,2008,1759,1517,1279,1047, 819,597,379,162,-49,-259,-465,-668,-872,-1071,-1267,-1466,-1664,-1861,-2062,-2261,-2462,-2671,-2879,-3094, -3309,-3529,-3751,-3981,-4208,-4443,-4677,-4916,-5156,-5401,-5642,-5886,-6132,-6376,-6620,-6862,-7100,-7338,-7566,-7787, -8002,-8207,-8397,-8576,-8739,-8883,-9007,-9105,-9172,-9203,-9191,-9121,-8978,-8753,-8422,-7977,-7410,-6719,-5919,-5016, -4037,-3009,-1954,-901,126,1097,1987,2783,3465,4032,4473,4800,5014,5124,5137,5067,4922,4717,4455,4153, 3817,3453,3071,2679,2275,1870,1463,1061,664,276,-106,-475,-828,-1168,-1494,-1803,-2094,-2363,-2610,-2828, -3019,-3171,-3292,-3366,-3393,-3364,-3276,-3122,-2895,-2589,-2202,-1732,-1173,-531,191,976,1820,2704,3607,4522, 5416,6276,7080,7808,8442,8968,9377,9668,9844,9918,9897,9799,9645,9436,9196,8928,8640,8338,8025,7705, 7384,7055,6726,6398,6068,5745,5422,5104,4787,4478,4174,3873,3582,3296,3017,2744,2478,2219,1965,1720, 1477,1244,1014,790,566,348,130,-79,-290,-496,-702,-907,-1110,-1313,-1512,-1711,-1910,-2111,-2309,-2511, -2716,-2920,-3132,-3344,-3560,-3781,-4004,-4231,-4462,-4696,-4932,-5176,-5417,-5663,-5908,-6155,-6401,-6645,-6887,-7124, -7356,-7584,-7801,-8012,-8212,-8401,-8574,-8734,-8876,-8997,-9096,-9164,-9201,-9191,-9125,-8990,-8770,-8449,-8013,-7453, -6774,-5981,-5090,-4121,-3101,-2053,-1007,11,978,1866,2659,3343,3913,4360,4694,4917,5036,5063,5005,4873, 4676,4427,4132,3802,3447,3067,2673,2273,1865,1460,1053,656,265,-114,-481,-834,-1172,-1493,-1794,-2079, -2339,-2580,-2795,-2976,-3128,-3241,-3312,-3331,-3296,-3201,-3038,-2800,-2484,-2082,-1594,-1018,-359,384,1187,2049, 2948,3862,4781,5679,6535,7332,8048,8667,9177,9567,9840,9998,10052,10018,9911,9741,9528,9278,9002,8705, 8397,8079,7752,7421,7089,6759,6425,6097,5770,5447,5128,4812,4503,4201,3905,3614,3327,3049,2776,2508, 2248,1993,1743,1499,1259,1027,800,575,356,140,-72,-280,-488,-693,-895,-1095,-1296,-1494,-1693,-1890, -2092,-2293,-2498,-2704,-2914,-3127,-3344,-3563,-3783,-4010,-4239,-4470,-4707,-4944,-5180,-5420,-5666,-5909,-6154,-6400, -6645,-6885,-7125,-7361,-7588,-7814,-8028,-8232,-8426,-8602,-8766,-8907,-9030,-9129,-9197,-9230,-9215,-9147,-9007,-8781, -8451,-8011,-7446,-6762,-5966,-5072,-4099,-3075,-2025,-977,45,1013,1903,2697,3381,3945,4389,4716,4932,5043, 5059,4993,4852,4652,4397,4096,3762,3401,3024,2630,2229,1822,1418,1015,616,227,-154,-524,-882,-1226, -1552,-1864,-2154,-2425,-2671,-2891,-3085,-3240,-3360,-3437,-3462,-3439,-3351,-3198,-2974,-2670,-2284,-1811,-1256,-609, 112,907,1757,2651,3567,4489,5397,6270,7085,7827,8473,9010,9430,9729,9915,9989,9972,9879,9723,9517, 9277,9007,8717,8411,8096,7773,7446,7117,6786,6454,6123,5795,5468,5146,4830,4516,4210,3911,3617,3330, 3050,2776,2512,2249,1998,1749,1508,1273,1039,812,591,370,154,-59,-269,-479,-687,-891,-1095,-1296, -1496,-1694,-1893,-2091,-2290,-2492,-2695,-2900,-3112,-3321,-3539,-3759,-3982,-4210,-4441,-4674,-4914,-5154,-5397,-5641, -5885,-6131,-6376,-6619,-6859,-7095,-7330,-7556,-7778,-7990,-8192,-8380,-8559,-8720,-8867,-8994,-9099,-9174,-9218,-9218, -9164,-9043,-8841,-8540,-8131,-7599,-6948,-6179,-5309,-4364,-3359,-2324,-1282,-262,708,1611,2423,3127,3720,4193, 4553,4800,4941,4988,4947,4832,4652,4416,4131,3809,3459,3084,2698,2296,1893,1488,1085,687,299,-83, -450,-803,-1140,-1464,-1766,-2053,-2319,-2560,-2775,-2961,-3113,-3227,-3295,-3316,-3284,-3188,-3023,-2785,-2467,-2064, -1573,-996,-333,408,1216,2078,2976,3896,4815,5715,6576,7374,8097,8721,9233,9627,9903,10063,10120,10084, 9975,9807,9589,9338,9060,8763,8450,8133,7804,7473,7139,6805,6474,6142,5816,5491,5171,4855,4546,4239, 3940,3649,3360,3080,2804,2537,2275,2019,1767,1522,1284,1050,819,597,377,160,-50,-260,-466,-673, -879,-1079,-1281,-1483,-1680,-1881,-2082,-2286,-2491,-2700,-2908,-3122,-3340,-3558,-3781,-4004,-4233,-4463,-4698,-4933, -5173,-5413,-5656,-5902,-6147,-6391,-6635,-6878,-7119,-7353,-7584,-7806,-8021,-8226,-8416,-8594,-8759,-8901,-9024,-9120, -9190,-9223,-9211,-9143,-9007,-8784,-8463,-8028,-7472,-6798,-6012,-5126,-4167,-3153,-2110,-1069,-51,911,1800,2592, 3277,3843,4293,4626,4845,4965,4989,4930,4797,4599,4354,4060,3732,3376,3001,2612,2212,1808,1405,1001, 604,210,-171,-544,-901,-1248,-1574,-1887,-2176,-2448,-2697,-2920,-3112,-3269,-3390,-3467,-3498,-3471,-3389,-3234, -3011,-2708,-2323,-1847,-1284,-636,95,897,1761,2665,3594,4531,5449,6338,7163,7914,8569,9114,9538,9843, 10029,10105,10089,9991,9832,9624,9376,9104,8811,8499,8180,7851,7520,7185,6848,6512,6179,5846,5516,5191, 4871,4553,4246,3941,3648,3359,3076,2801,2534,2273,2017,1765,1523,1286,1053,822,596,376,159,-57, -268,-477,-684,-890,-1094,-1294,-1493,-1692,-1891,-2088,-2288,-2489,-2693,-2900,-3109,-3322,-3539,-3757,-3982,-4208, -4440,-4675,-4912,-5150,-5394,-5634,-5880,-6123,-6367,-6609,-6851,-7088,-7320,-7546,-7768,-7982,-8185,-8379,-8558,-8725, -8875,-9003,-9112,-9194,-9242,-9248,-9200,-9088,-8896,-8611,-8215,-7700,-7065,-6317,-5465,-4530,-3536,-2509,-1470,-450, 527,1435,2259,2979,3585,4073,4449,4711,4868,4926,4896,4789,4618,4386,4109,3791,3445,3073,2686,2290, 1887,1480,1078,680,290,-92,-458,-816,-1158,-1486,-1796,-2085,-2354,-2599,-2822,-3014,-3173,-3295,-3371,-3399, -3371,-3283,-3127,-2895,-2584,-2189,-1706,-1134,-476,260,1066,1928,2833,3756,4685,5598,6471,7289,8027,8668, 9201,9617,9913,10089,10157,10129,10029,9861,9648,9399,9122,8825,8511,8190,7862,7526,7195,6859,6525,6194, 5862,5536,5213,4896,4583,4277,3974,3679,3390,3106,2832,2561,2297,2039,1787,1543,1304,1069,841,617, 398,183,-29,-240,-447,-653,-854,-1059,-1260,-1460,-1660,-1862,-2059,-2261,-2466,-2671,-2880,-3090,-3303,-3522, -3740,-3963,-4187,-4415,-4647,-4880,-5119,-5355,-5597,-5840,-6081,-6326,-6569,-6807,-7045,-7277,-7506,-7724,-7938,-8140, -8330,-8507,-8666,-8811,-8935,-9033,-9105,-9140,-9136,-9075,-8947,-8739,-8434,-8018,-7484,-6833,-6071,-5210,-4268,-3274, -2248,-1218,-210,752,1642,2440,3137,3717,4181,4532,4768,4905,4948,4902,4785,4602,4367,4083,3767,3419, 3050,2663,2269,1867,1461,1059,658,266,-117,-492,-853,-1197,-1526,-1840,-2132,-2403,-2652,-2875,-3067,-3223, -3343,-3420,-3448,-3421,-3334,-3179,-2950,-2640,-2246,-1761,-1188,-527,216,1030,1904,2818,3759,4702,5629,6521, 7349,8098,8751,9290,9709,10003,10176,10246,10217,10113,9945,9729,9475,9197,8896,8583,8257,7925,7588,7250, 6909,6570,6229,5898,5564,5237,4915,4597,4288,3985,3687,3398,3115,2838,2569,2307,2049,1799,1554,1316, 1080,850,623,401,183,-32,-242,-455,-660,-865,-1066,-1269,-1468,-1666,-1864,-2062,-2261,-2461,-2663,-2869, -3078,-3292,-3509,-3729,-3952,-4178,-4408,-4641,-4877,-5115,-5354,-5596,-5838,-6081,-6323,-6562,-6802,-7040,-7272,-7501, -7722,-7934,-8140,-8333,-8516,-8685,-8836,-8968,-9078,-9159,-9207,-9217,-9175,-9071,-8888,-8612,-8228,-7725,-7106,-6371, -5536,-4617,-3635,-2614,-1584,-567,410,1324,2155,2881,3499,3998,4382,4653,4820,4888,4870,4769,4603,4379, 4106,3790,3447,3078,2697,2297,1898,1497,1093,694,301,-84,-453,-816,-1160,-1491,-1803,-2099,-2374,-2627, -2851,-3053,-3217,-3344,-3428,-3462,-3441,-3361,-3210,-2986,-2681,-2293,-1817,-1251,-599,135,942,1803,2708,3639, 4576,5498,6386,7217,7973,8634,9184,9613,9923,10112,10191,10175,10077,9917,9704,9454,9175,8874,8558,8238, 7906,7572,7234,6897,6559,6226,5891,5565,5238,4916,4599,4289,3985,3687,3393,3109,2833,2561,2296,2035, 1785,1539,1300,1066,838,613,395,177,-33,-244,-453,-657,-862,-1063,-1264,-1463,-1666,-1865,-2060,-2261, -2462,-2666,-2870,-3080,-3290,-3504,-3719,-3938,-4161,-4386,-4613,-4844,-5081,-5318,-5556,-5794,-6035,-6276,-6514,-6752, -6987,-7217,-7443,-7659,-7871,-8069,-8261,-8436,-8598,-8743,-8864,-8969,-9043,-9085,-9088,-9040,-8929,-8737,-8453,-8064, -7561,-6940,-6207,-5377,-4464,-3492,-2484,-1466,-466,496,1390,2204,2914,3515,4000,4376,4636,4796,4860,4840, 4742,4579,4359,4090,3781,3445,3084,2705,2311,1911,1508,1107,708,314,-68,-441,-802,-1149,-1482,-1794, -2090,-2363,-2610,-2834,-3024,-3184,-3306,-3382,-3408,-3383,-3292,-3136,-2901,-2589,-2190,-1702,-1125,-457,292,1113, 1994,2914,3858,4806,5739,6626,7459,8209,8860,9396,9810,10099,10270,10331,10299,10193,10018,9801,9543,9259, 8957,8639,8308,7974,7632,7293,6947,6607,6266,5929,5593,5267,4938,4623,4310,4004,3706,3414,3128,2850, 2580,2316,2054,1803,1553,1313,1074,843,617,393,173,-42,-252,-464,-671,-877,-1080,-1279,-1480,-1677, -1876,-2075,-2275,-2475,-2678,-2887,-3093,-3307,-3522,-3743,-3964,-4190,-4418,-4649,-4882,-5118,-5358,-5595,-5835,-6076, -6316,-6555,-6790,-7026,-7257,-7482,-7704,-7917,-8120,-8313,-8492,-8661,-8808,-8940,-9045,-9128,-9176,-9185,-9142,-9038, -8856,-8582,-8203,-7711,-7104,-6383,-5561,-4655,-3687,-2680,-1661,-653,315,1225,2053,2782,3398,3901,4292,4570, 4741,4816,4803,4710,4549,4330,4063,3756,3418,3057,2677,2286,1886,1485,1086,688,295,-89,-463,-824, -1172,-1506,-1822,-2122,-2400,-2657,-2890,-3092,-3260,-3394,-3482,-3522,-3506,-3432,-3288,-3073,-2773,-2394,-1925,-1366, -718,9,816,1679,2591,3528,4475,5409,6311,7159,7931,8609,9178,9624,9946,10147,10238,10227,10138,9980, 9770,9523,9244,8944,8628,8302,7971,7633,7295,6954,6615,6275,5941,5605,5276,4952,4633,4319,4011,3709, 3415,3127,2845,2572,2307,2047,1794,1547,1306,1071,840,616,395,178,-38,-247,-458,-664,-871,-1074, -1275,-1476,-1677,-1873,-2075,-2273,-2474,-2678,-2882,-3086,-3297,-3511,-3726,-3942,-4164,-4390,-4617,-4848,-5081,-5318, -5555,-5793,-6032,-6270,-6509,-6745,-6977,-7207,-7430,-7645,-7854,-8055,-8244,-8420,-8580,-8727,-8854,-8958,-9036,-9085, -9092,-9052,-8951,-8776,-8513,-8145,-7663,-7069,-6360,-5556,-4665,-3714,-2725,-1719,-727,234,1132,1954,2677,3295, 3800,4192,4476,4656,4740,4737,4658,4511,4305,4049,3751,3423,3066,2694,2305,1911,1510,1111,713,325, -59,-434,-795,-1141,-1473,-1786,-2080,-2355,-2603,-2829,-3026,-3186,-3310,-3392,-3424,-3400,-3318,-3164,-2936,-2630, -2236,-1755,-1184,-525,219,1040,1922,2846,3793,4745,5680,6577,7417,8175,8837,9383,9812,10112,10292,10363, 10342,10236,10071,9851,9595,9312,9006,8690,8360,8023,7683,7338,6994,6652,6310,5970,5636,5304,4980,4659, 4346,4040,3738,3444,3157,2877,2603,2336,2076,1820,1569,1325,1086,853,624,402,180,-35,-249,-459, -666,-870,-1073,-1277,-1476,-1673,-1873,-2072,-2271,-2473,-2677,-2883,-3093,-3305,-3520,-3740,-3961,-4185,-4414,-4641, -4874,-5107,-5342,-5578,-5818,-6054,-6293,-6529,-6763,-6997,-7226,-7451,-7667,-7877,-8077,-8269,-8448,-8614,-8759,-8885, -8991,-9068,-9114,-9120,-9073,-8967,-8787,-8517,-8143,-7657,-7056,-6351,-5539,-4650,-3700,-2710,-1705,-714,243,1140, 1959,2684,3298,3801,4188,4468,4643,4723,4712,4630,4474,4264,4003,3703,3373,3016,2641,2256,1861,1462, 1065,669,279,-102,-477,-838,-1189,-1521,-1840,-2141,-2423,-2681,-2915,-3119,-3289,-3423,-3512,-3555,-3543,-3469, -3330,-3113,-2819,-2440,-1978,-1422,-781,-48,764,1640,2562,3513,4471,5418,6333,7195,7978,8667,9247,9703, 10035,10241,10334,10329,10240,10082,9874,9623,9343,9043,8727,8400,8066,7727,7385,7041,6700,6358,6019,5679, 5350,5020,4698,4382,4071,3770,3470,3180,2897,2622,2353,2094,1838,1588,1346,1110,878,650,427,209, -7,-218,-429,-637,-845,-1049,-1254,-1456,-1655,-1853,-2054,-2254,-2455,-2656,-2860,-3067,-3276,-3488,-3702,-3921, -4142,-4365,-4593,-4825,-5058,-5293,-5530,-5768,-6008,-6244,-6482,-6716,-6948,-7175,-7397,-7611,-7820,-8019,-8209,-8384, -8548,-8694,-8823,-8930,-9013,-9064,-9075,-9043,-8951,-8785,-8533,-8185,-7725,-7153,-6468,-5686,-4818,-3883,-2909,-1915, -932,24,924,1748,2484,3116,3636,4044,4346,4543,4644,4658,4591,4457,4262,4016,3727,3407,3057,2689, 2306,1914,1516,1118,721,332,-52,-425,-785,-1131,-1460,-1777,-2075,-2350,-2605,-2833,-3034,-3199,-3328,-3417, -3455,-3438,-3362,-3216,-2998,-2699,-2316,-1849,-1293,-646,95,914,1792,2717,3670,4623,5567,6469,7319,8095, 8773,9338,9784,10104,10302,10387,10377,10283,10124,9910,9663,9379,9078,8761,8432,8096,7756,7411,7071,6725, 6384,6043,5707,5376,5052,4728,4417,4107,3803,3508,3219,2937,2663,2392,2128,1875,1623,1378,1137,903, 675,449,231,15,-197,-406,-616,-821,-1023,-1225,-1426,-1623,-1823,-2019,-2220,-2422,-2624,-2829,-3038,-3249, -3463,-3678,-3897,-4120,-4346,-4569,-4801,-5030,-5263,-5495,-5731,-5968,-6201,-6435,-6668,-6896,-7123,-7346,-7559,-7769, -7967,-8153,-8333,-8491,-8635,-8761,-8866,-8943,-8989,-8995,-8953,-8851,-8676,-8418,-8059,-7595,-7019,-6334,-5551,-4691, -3765,-2799,-1817,-845,98,987,1799,2521,3139,3647,4046,4332,4520,4611,4617,4542,4403,4204,3957,3668, 3346,2999,2633,2253,1865,1470,1076,683,293,-88,-461,-822,-1174,-1507,-1825,-2126,-2408,-2668,-2901,-3103, -3274,-3409,-3499,-3538,-3526,-3452,-3311,-3093,-2800,-2425,-1970,-1421,-773,-33,789,1679,2608,3566,4530,5484, 6402,7265,8053,8743,9322,9779,10107,10312,10405,10397,10305,10148,9936,9685,9407,9105,8787,8459,8125,7783, 7441,7094,6752,6408,6068,5729,5392,5065,4739,4419,4108,3803,3504,3212,2929,2653,2385,2121,1866,1618, 1372,1135,901,673,450,227,11,-202,-411,-623,-829,-1034,-1237,-1438,-1638,-1835,-2034,-2232,-2433,-2634, -2837,-3042,-3250,-3461,-3677,-3893,-4114,-4338,-4565,-4796,-5028,-5260,-5496,-5732,-5967,-6207,-6438,-6671,-6902,-7126, -7346,-7562,-7767,-7967,-8155,-8328,-8492,-8638,-8768,-8875,-8956,-9012,-9027,-8994,-8908,-8752,-8510,-8171,-7728,-7173, -6509,-5743,-4896,-3980,-3021,-2044,-1068,-124,773,1601,2338,2976,3506,3926,4238,4448,4560,4586,4529,4408, 4221,3981,3702,3387,3043,2680,2298,1909,1517,1120,727,339,-43,-417,-777,-1123,-1456,-1773,-2072,-2351, -2609,-2842,-3046,-3219,-3357,-3447,-3494,-3486,-3420,-3285,-3073,-2788,-2423,-1973,-1431,-790,-55,761,1639,2566, 3515,4473,5420,6336,7196,7986,8679,9264,9728,10070,10287,10390,10391,10308,10156,9952,9705,9430,9131,8813, 8485,8148,7808,7465,7121,6776,6434,6094,5759,5426,5098,4777,4461,4151,3845,3549,3256,2970,2695,2423, 2159,1898,1650,1403,1162,928,700,476,254,38,-172,-384,-590,-795,-998,-1201,-1401,-1602,-1799,-1998, -2198,-2397,-2599,-2804,-3012,-3220,-3431,-3644,-3862,-4081,-4303,-4525,-4751,-4981,-5211,-5442,-5671,-5905,-6139,-6369, -6599,-6827,-7051,-7269,-7484,-7686,-7883,-8068,-8240,-8399,-8544,-8666,-8769,-8843,-8889,-8899,-8859,-8763,-8600,-8353, -8009,-7562,-7007,-6348,-5590,-4747,-3848,-2903,-1940,-981,-50,830,1639,2363,2984,3503,3910,4212,4413,4519, 4539,4483,4354,4170,3935,3657,3347,3009,2650,2276,1896,1505,1114,723,336,-46,-417,-779,-1127,-1463, -1781,-2082,-2361,-2620,-2853,-3057,-3229,-3362,-3455,-3494,-3483,-3408,-3270,-3058,-2772,-2414,-1962,-1412,-758,-11, 812,1701,2634,3594,4558,5512,6430,7297,8083,8777,9356,9815,10147,10356,10447,10442,10352,10193,9984,9734, 9453,9155,8836,8508,8171,7829,7484,7136,6791,6445,6101,5758,5425,5090,4763,4445,4128,3822,3524,3230, 2946,2666,2396,2132,1874,1621,1376,1136,899,668,442,219,2,-216,-428,-636,-847,-1051,-1255,-1457, -1655,-1854,-2054,-2253,-2453,-2654,-2858,-3063,-3270,-3484,-3697,-3914,-4135,-4357,-4584,-4812,-5044,-5274,-5507,-5740, -5974,-6206,-6438,-6670,-6895,-7116,-7335,-7543,-7749,-7945,-8129,-8303,-8461,-8605,-8735,-8839,-8917,-8970,-8982,-8949, -8858,-8702,-8462,-8125,-7689,-7142,-6489,-5739,-4904,-4007,-3066,-2104,-1144,-209,676,1492,2225,2861,3388,3812, 4126,4337,4456,4483,4435,4316,4134,3905,3629,3320,2982,2622,2247,1862,1473,1080,689,306,-76,-445, -808,-1155,-1486,-1805,-2104,-2387,-2647,-2882,-3091,-3269,-3409,-3508,-3559,-3556,-3496,-3368,-3168,-2891,-2546,-2107, -1571,-931,-196,618,1496,2424,3376,4339,5294,6215,7090,7892,8600,9200,9684,10038,10269,10386,10397,10324, 10177,9976,9734,9457,9159,8844,8517,8179,7840,7496,7149,6804,6460,6121,5781,5447,5118,4792,4474,4158, 3850,3550,3257,2970,2688,2413,2147,1887,1634,1385,1145,909,677,451,232,14,-198,-408,-619,-823, -1029,-1233,-1436,-1635,-1835,-2033,-2232,-2435,-2635,-2840,-3045,-3251,-3460,-3673,-3888,-4106,-4324,-4544,-4770,-4995, -5224,-5454,-5684,-5913,-6143,-6373,-6601,-6826,-7046,-7264,-7472,-7673,-7868,-8048,-8220,-8376,-8518,-8639,-8743,-8818, -8865,-8876,-8846,-8759,-8608,-8376,-8058,-7638,-7110,-6481,-5754,-4944,-4069,-3150,-2207,-1264,-341,536,1345,2077, 2714,3247,3675,3998,4221,4348,4390,4354,4249,4083,3864,3602,3308,2983,2635,2271,1894,1511,1123,739, 356,-21,-388,-749,-1094,-1428,-1743,-2043,-2322,-2578,-2809,-3010,-3180,-3312,-3399,-3440,-3428,-3356,-3215,-3012, -2737,-2383,-1927,-1373,-717,32,855,1741,2666,3619,4582,5526,6445,7303,8089,8780,9357,9818,10150,10358, 10455,10454,10367,10214,10006,9760,9481,9181,8866,8542,8204,7865,7519,7173,6826,6480,6136,5798,5459,5127, 4800,4480,4165,3859,3557,3263,2976,2699,2425,2160,1899,1646,1399,1157,922,686,459,233,14,-202, -416,-627,-833,-1041,-1245,-1447,-1648,-1845,-2046,-2242,-2443,-2644,-2847,-3053,-3261,-3473,-3686,-3903,-4122,-4345, -4568,-4795,-5022,-5251,-5480,-5713,-5942,-6170,-6400,-6625,-6851,-7068,-7280,-7487,-7689,-7880,-8060,-8231,-8389,-8529, -8650,-8751,-8828,-8870,-8879,-8842,-8753,-8594,-8354,-8022,-7589,-7054,-6414,-5677,-4865,-3984,-3061,-2117,-1176,-255, 616,1423,2150,2779,3308,3727,4048,4265,4388,4424,4381,4270,4098,3875,3607,3307,2978,2624,2258,1879, 1496,1108,725,342,-32,-400,-758,-1104,-1436,-1755,-2053,-2338,-2597,-2836,-3045,-3224,-3367,-3468,-3522,-3525, -3465,-3341,-3153,-2898,-2560,-2125,-1590,-950,-219,591,1467,2392,3344,4308,5262,6189,7067,7876,8594,9204, 9695,10061,10306,10429,10450,10383,10244,10047,9806,9533,9235,8921,8595,8262,7919,7575,7229,6885,6541,6198, 5858,5521,5187,4859,4535,4218,3909,3604,3305,3015,2732,2458,2187,1925,1668,1419,1175,939,708,479, 255,35,-180,-392,-603,-812,-1017,-1222,-1426,-1628,-1829,-2027,-2228,-2429,-2633,-2836,-3040,-3247,-3458,-3669, -3883,-4100,-4318,-4537,-4763,-4989,-5214,-5443,-5672,-5902,-6129,-6356,-6581,-6805,-7023,-7237,-7441,-7643,-7832,-8011, -8179,-8335,-8472,-8593,-8691,-8768,-8815,-8826,-8796,-8714,-8568,-8344,-8033,-7624,-7114,-6499,-5792,-5001,-4146,-3242, -2314,-1383,-474,394,1204,1933,2572,3113,3548,3879,4112,4252,4307,4281,4186,4032,3824,3573,3285,2966, 2625,2268,1896,1517,1133,750,371,-4,-372,-731,-1076,-1407,-1722,-2021,-2299,-2557,-2788,-2991,-3162,-3295, -3389,-3436,-3427,-3363,-3235,-3042,-2786,-2439,-1995,-1448,-801,-65,750,1627,2544,3490,4447,5391,6308,7169, 7961,8661,9253,9726,10072,10298,10411,10421,10347,10204,10004,9764,9491,9196,8884,8558,8224,7884,7538,7195, 6846,6501,6158,5815,5480,5145,4818,4496,4180,3870,3568,3274,2983,2702,2428,2159,1896,1638,1390,1145, 904,669,440,216,-7,-227,-438,-652,-862,-1066,-1271,-1473,-1673,-1876,-2073,-2269,-2471,-2671,-2873,-3081, -3289,-3501,-3713,-3930,-4145,-4367,-4588,-4812,-5038,-5263,-5492,-5717,-5945,-6171,-6393,-6618,-6835,-7050,-7260,-7463, -7659,-7846,-8022,-8188,-8339,-8475,-8593,-8688,-8756,-8799,-8801,-8761,-8665,-8505,-8267,-7940,-7511,-6986,-6358,-5637, -4840,-3981,-3075,-2153,-1225,-325,537,1332,2049,2675,3199,3620,3940,4161,4289,4333,4296,4193,4028,3813, 3554,3261,2939,2597,2240,1868,1490,1109,730,354,-19,-384,-736,-1081,-1412,-1728,-2027,-2309,-2568,-2805, -3013,-3193,-3334,-3434,-3487,-3487,-3430,-3310,-3129,-2882,-2543,-2107,-1568,-930,-199,613,1488,2410,3361,4323, 5276,6206,7083,7895,8617,9229,9727,10097,10341,10473,10498,10434,10298,10104,9868,9597,9301,8991,8667,8334, 7994,7652,7307,6961,6615,6272,5931,5593,5259,4930,4605,4285,3971,3667,3369,3076,2790,2513,2243,1980, 1721,1472,1226,990,756,529,303,81,-134,-349,-560,-769,-978,-1182,-1388,-1589,-1792,-1993,-2190,-2391, -2592,-2794,-2998,-3203,-3413,-3626,-3838,-4054,-4271,-4490,-4714,-4937,-5165,-5392,-5618,-5845,-6072,-6298,-6521,-6741, -6954,-7166,-7367,-7564,-7751,-7927,-8093,-8243,-8381,-8497,-8595,-8668,-8711,-8724,-8693,-8611,-8469,-8252,-7950,-7549, -7049,-6451,-5756,-4982,-4143,-3255,-2342,-1425,-527,332,1136,1864,2505,3044,3484,3823,4066,4213,4277,4261, 4178,4028,3830,3585,3305,2992,2656,2302,1935,1560,1181,798,422,47,-318,-672,-1018,-1348,-1662,-1960, -2239,-2495,-2729,-2934,-3109,-3246,-3344,-3397,-3396,-3339,-3222,-3044,-2800,-2460,-2026,-1490,-855,-127,675,1539, 2451,3389,4338,5279,6192,7056,7852,8561,9163,9651,10013,10254,10381,10405,10345,10210,10022,9787,9520,9228, 8918,8594,8263,7924,7581,7237,6888,6545,6199,5858,5520,5186,4858,4535,4218,3906,3603,3303,3016,2731, 2453,2180,1916,1656,1404,1156,915,677,447,222,-2,-221,-438,-649,-861,-1067,-1272,-1477,-1677,-1877, -2075,-2278,-2479,-2681,-2887,-3091,-3301,-3511,-3723,-3939,-4155,-4374,-4595,-4817,-5041,-5264,-5488,-5715,-5941,-6161, -6385,-6601,-6820,-7033,-7238,-7440,-7632,-7818,-7992,-8157,-8303,-8435,-8549,-8644,-8712,-8749,-8751,-8713,-8619,-8461, -8231,-7915,-7504,-6994,-6385,-5689,-4910,-4073,-3190,-2285,-1379,-491,358,1147,1860,2487,3014,3443,3772,4000, 4140,4194,4168,4077,3926,3720,3475,3193,2881,2548,2197,1832,1462,1087,710,337,-29,-392,-744,-1085, -1414,-1727,-2027,-2308,-2565,-2798,-3007,-3182,-3321,-3419,-3471,-3468,-3409,-3295,-3123,-2874,-2533,-2091,-1547,-909, -180,630,1497,2415,3359,4316,5265,6185,7059,7866,8581,9194,9689,10059,10305,10433,10462,10401,10266,10077, 9844,9578,9288,8977,8658,8327,7991,7648,7306,6961,6618,6275,5933,5594,5262,4928,4605,4284,3972,3664, 3365,3072,2788,2507,2239,1973,1716,1466,1220,980,745,514,286,67,-151,-369,-582,-794,-1002,-1209, -1412,-1615,-1817,-2015,-2218,-2418,-2620,-2820,-3025,-3232,-3437,-3650,-3862,-4078,-4295,-4513,-4738,-4959,-5184,-5412, -5637,-5862,-6088,-6310,-6531,-6747,-6959,-7166,-7366,-7560,-7742,-7915,-8077,-8223,-8356,-8473,-8567,-8639,-8681,-8690, -8659,-8576,-8432,-8216,-7917,-7524,-7033,-6443,-5761,-5000,-4172,-3298,-2400,-1497,-610,240,1039,1760,2399,2943, 3385,3727,3973,4129,4200,4191,4112,3973,3782,3543,3266,2960,2630,2280,1919,1548,1172,795,421,51, -312,-664,-1007,-1335,-1646,-1942,-2223,-2478,-2711,-2915,-3092,-3230,-3330,-3383,-3387,-3335,-3225,-3059,-2816,-2483, -2053,-1521,-892,-175,620,1482,2382,3316,4260,5196,6108,6973,7773,8483,9095,9591,9965,10215,10355,10392, 10339,10214,10033,9805,9543,9255,8951,8627,8299,7965,7625,7279,6936,6590,6248,5907,5569,5237,4908,4582, 4267,3955,3649,3350,3055,2769,2490,2214,1946,1689,1432,1182,939,702,469,241,18,-203,-417,-633, -843,-1054,-1259,-1464,-1666,-1868,-2069,-2269,-2474,-2676,-2879,-3085,-3296,-3505,-3717,-3932,-4148,-4366,-4586,-4806, -5030,-5250,-5476,-5700,-5921,-6143,-6365,-6579,-6796,-7006,-7212,-7411,-7600,-7786,-7956,-8118,-8262,-8392,-8503,-8595, -8661,-8702,-8705,-8666,-8576,-8428,-8206,-7901,-7503,-7013,-6424,-5744,-4987,-4169,-3304,-2415,-1519,-641,199,984, 1698,2328,2863,3299,3636,3877,4028,4094,4083,4003,3865,3674,3438,3165,2863,2535,2196,1836,1471,1104, 732,361,-4,-365,-712,-1054,-1381,-1695,-1990,-2268,-2525,-2758,-2961,-3135,-3269,-3364,-3415,-3411,-3355,-3246, -3077,-2826,-2486,-2042,-1505,-869,-145,655,1514,2421,3354,4303,5240,6153,7020,7818,8532,9142,9632,10000, 10253,10386,10418,10362,10236,10052,9824,9562,9276,8972,8657,8327,7996,7655,7317,6973,6629,6287,5945,5608, 5275,4943,4618,4297,3983,3675,3377,3085,2796,2518,2247,1979,1723,1468,1222,981,745,510,285,59, -161,-379,-593,-807,-1018,-1227,-1433,-1636,-1839,-2038,-2240,-2439,-2641,-2846,-3050,-3257,-3466,-3679,-3890,-4106, -4325,-4547,-4766,-4991,-5216,-5440,-5665,-5890,-6112,-6335,-6552,-6765,-6975,-7178,-7374,-7564,-7746,-7916,-8074,-8219, -8349,-8460,-8551,-8617,-8659,-8664,-8629,-8541,-8395,-8175,-7876,-7483,-6994,-6409,-5734,-4980,-4162,-3300,-2411,-1518, -642,197,983,1699,2332,2872,3311,3656,3903,4059,4130,4126,4052,3916,3728,3493,3223,2920,2594,2249, 1892,1522,1152,779,410,43,-315,-666,-1004,-1330,-1642,-1936,-2212,-2469,-2703,-2909,-3085,-3225,-3327,-3381, -3387,-3338,-3238,-3076,-2841,-2513,-2087,-1561,-940,-230,557,1406,2302,3226,4164,5098,6007,6874,7677,8395, 9015,9520,9906,10172,10324,10371,10331,10216,10042,9820,9565,9283,8982,8665,8341,8005,7669,7328,6986,6644, 6301,5961,5626,5293,4964,4640,4320,4006,3700,3398,3103,2815,2532,2258,1989,1726,1470,1217,975,735, 499,270,46,-176,-393,-608,-820,-1028,-1240,-1444,-1648,-1852,-2054,-2255,-2459,-2663,-2869,-3075,-3284,-3496, -3707,-3922,-4136,-4354,-4574,-4792,-5014,-5238,-5458,-5680,-5904,-6123,-6343,-6561,-6772,-6984,-7186,-7383,-7571,-7751, -7917,-8076,-8219,-8342,-8454,-8542,-8604,-8641,-8644,-8605,-8516,-8368,-8149,-7850,-7459,-6975,-6397,-5731,-4984,-4175, -3322,-2442,-1556,-686,149,930,1643,2274,2809,3248,3593,3842,3999,4070,4068,3998,3868,3681,3455,3192, 2897,2575,2237,1886,1528,1160,793,425,62,-294,-644,-981,-1306,-1617,-1909,-2186,-2439,-2672,-2873,-3046, -3181,-3280,-3329,-3330,-3273,-3170,-3007,-2763,-2429,-1998,-1469,-846,-134,653,1500,2393,3316,4251,5179,6086, 6948,7746,8458,9072,9571,9952,10213,10359,10403,10359,10246,10070,9851,9598,9318,9022,8709,8388,8059,7721, 7380,7041,6700,6357,6018,5681,5345,5014,4689,4369,4056,3744,3447,3151,2864,2581,2307,2041,1780,1522, 1273,1029,790,555,324,96,-127,-348,-564,-776,-990,-1201,-1408,-1613,-1817,-2018,-2220,-2421,-2623,-2828, -3035,-3243,-3453,-3665,-3880,-4098,-4315,-4536,-4760,-4982,-5207,-5430,-5653,-5877,-6099,-6317,-6535,-6747,-6955,-7156, -7352,-7537,-7716,-7883,-8038,-8180,-8306,-8414,-8502,-8564,-8600,-8600,-8561,-8471,-8322,-8102,-7802,-7409,-6926,-6345, -5679,-4935,-4130,-3280,-2405,-1526,-661,168,945,1652,2278,2813,3252,3594,3839,3999,4074,4071,4001,3868, 3685,3455,3189,2890,2568,2229,1876,1515,1148,779,415,51,-304,-650,-986,-1308,-1616,-1911,-2185,-2440, -2672,-2877,-3052,-3194,-3294,-3350,-3355,-3310,-3209,-3052,-2818,-2493,-2069,-1550,-935,-234,545,1385,2273,3189, 4118,5041,5944,6808,7606,8324,8942,9451,9841,10113,10270,10326,10291,10182,10015,9800,9549,9273,8974,8664, 8342,8014,7678,7338,7001,6660,6321,5982,5648,5314,4984,4659,4338,4024,3715,3412,3115,2825,2541,2264, 1994,1730,1470,1221,973,734,497,267,42,-180,-399,-618,-828,-1042,-1251,-1461,-1665,-1871,-2073,-2278, -2478,-2686,-2891,-3100,-3308,-3518,-3728,-3944,-4160,-4376,-4594,-4813,-5038,-5258,-5477,-5701,-5924,-6144,-6360,-6580, -6789,-7000,-7201,-7397,-7585,-7758,-7925,-8082,-8220,-8346,-8453,-8536,-8599,-8634,-8632,-8592,-8507,-8363,-8147,-7853, -7472,-6995,-6426,-5767,-5032,-4235,-3392,-2518,-1640,-777,54,834,1544,2176,2717,3162,3512,3766,3932,4014, 4020,3957,3835,3659,3437,3181,2892,2580,2247,1897,1540,1178,812,448,89,-266,-610,-946,-1268,-1578, -1869,-2142,-2394,-2622,-2821,-2993,-3129,-3224,-3274,-3276,-3221,-3121,-2960,-2722,-2398,-1976,-1458,-846,-147,625, 1463,2344,3251,4176,5097,5994,6848,7644,8353,8969,9474,9863,10133,10289,10345,10316,10210,10046,9837,9592, 9321,9031,8721,8404,8078,7745,7410,7072,6733,6394,6053,5720,5385,5055,4731,4411,4096,3790,3488,3193, 2904,2624,2347,2077,1816,1559,1304,1057,815,579,346,114,-108,-329,-549,-764,-980,-1189,-1398,-1606, -1809,-2012,-2217,-2419,-2623,-2829,-3035,-3246,-3456,-3670,-3885,-4104,-4325,-4545,-4768,-4991,-5214,-5440,-5661,-5882, -6103,-6321,-6534,-6747,-6954,-7153,-7347,-7533,-7707,-7873,-8026,-8167,-8290,-8396,-8482,-8544,-8578,-8575,-8536,-8445, -8294,-8075,-7777,-7391,-6910,-6339,-5679,-4943,-4149,-3307,-2438,-1566,-707,117,890,1595,2222,2758,3200,3545, 3794,3962,4038,4043,3975,3851,3676,3450,3187,2897,2580,2245,1896,1539,1175,813,450,90,-261,-604, -940,-1261,-1569,-1858,-2130,-2387,-2616,-2819,-2992,-3131,-3232,-3287,-3291,-3242,-3141,-2982,-2749,-2427,-2007,-1491, -883,-189,583,1413,2291,3196,4117,5034,5930,6782,7578,8291,8912,9417,9808,10083,10248,10307,10277,10175, 10014,9804,9558,9285,8994,8688,8368,8043,7713,7379,7039,6701,6364,6026,5689,5357,5026,4703,4379,4065, 3754,3451,3151,2860,2576,2297,2023,1756,1499,1245,996,754,516,285,57,-168,-389,-608,-827,-1041, -1254,-1463,-1673,-1880,-2086,-2291,-2497,-2703,-2910,-3119,-3329,-3539,-3756,-3968,-4188,-4405,-4626,-4844,-5066,-5293, -5515,-5739,-5961,-6184,-6402,-6618,-6831,-7039,-7241,-7436,-7623,-7799,-7962,-8115,-8254,-8377,-8483,-8566,-8627,-8661, -8659,-8619,-8531,-8386,-8172,-7883,-7500,-7029,-6464,-5809,-5078,-4281,-3442,-2576,-1701,-839,-9,770,1480,2115, 2656,3104,3456,3717,3885,3972,3984,3928,3808,3637,3422,3169,2880,2571,2240,1895,1541,1180,815,453, 95,-258,-602,-935,-1257,-1563,-1851,-2123,-2374,-2601,-2802,-2971,-3105,-3201,-3253,-3256,-3204,-3103,-2943,-2715, -2397,-1985,-1476,-876,-189,571,1397,2266,3166,4080,4989,5881,6733,7521,8236,8854,9365,9759,10039,10207, 10274,10251,10158,10003,9801,9564,9297,9012,8712,8397,8074,7745,7413,7077,6736,6399,6061,5727,5394,5069, 4741,4424,4108,3801,3500,3202,2913,2630,2354,2079,1816,1554,1300,1053,805,569,333,102,-125,-349, -569,-786,-1000,-1214,-1424,-1629,-1837,-2041,-2247,-2452,-2657,-2863,-3073,-3284,-3498,-3712,-3931,-4147,-4369,-4590, -4813,-5036,-5260,-5484,-5709,-5928,-6150,-6367,-6580,-6791,-6997,-7198,-7392,-7577,-7752,-7918,-8069,-8210,-8333,-8438, -8523,-8583,-8616,-8615,-8575,-8487,-8340,-8129,-7837,-7460,-6988,-6431,-5781,-5057,-4271,-3439,-2580,-1712,-855,-31, 744,1455,2084,2626,3078,3434,3696,3867,3958,3972,3916,3799,3627,3413,3161,2876,2567,2238,1896,1542, 1185,824,466,112,-240,-579,-908,-1227,-1529,-1822,-2091,-2342,-2569,-2768,-2939,-3070,-3166,-3216,-3217,-3160, -3054,-2890,-2653,-2330,-1910,-1399,-794,-105,660,1479,2344,3239,4150,5051,5935,6778,7563,8265,8879,9381, 9769,10041,10204,10266,10242,10143,9988,9782,9548,9279,8993,8694,8382,8063,7737,7407,7075,6738,6404,6071, 5736,5406,5077,4754,4434,4120,3809,3506,3209,2917,2630,2352,2082,1814,1554,1301,1053,811,571,339, 108,-116,-340,-561,-781,-995,-1212,-1422,-1633,-1839,-2049,-2254,-2460,-2668,-2877,-3086,-3295,-3509,-3722,-3938, -4156,-4377,-4599,-4819,-5045,-5267,-5493,-5718,-5941,-6163,-6383,-6599,-6812,-7018,-7220,-7413,-7599,-7772,-7938,-8089, -8226,-8349,-8452,-8535,-8596,-8629,-8630,-8589,-8502,-8359,-8150,-7862,-7489,-7021,-6462,-5812,-5090,-4299,-3464,-2601, -1730,-868,-41,738,1452,2087,2636,3090,3448,3712,3892,3986,4005,3955,3843,3677,3465,3215,2934,2623, 2299,1956,1601,1245,882,522,165,-186,-527,-859,-1178,-1479,-1769,-2037,-2285,-2509,-2709,-2877,-3011,-3107, -3160,-3164,-3113,-3006,-2849,-2621,-2312,-1909,-1412,-823,-149,599,1410,2264,3152,4054,4953,5834,6673,7460, 8168,8786,9300,9699,9986,10163,10240,10229,10142,9997,9804,9575,9317,9038,8741,8432,8116,7791,7461,7130, 6795,6460,6126,5795,5463,5136,4811,4494,4182,3873,3570,3272,2983,2696,2416,2143,1878,1616,1357,1106, 861,620,382,150,-78,-303,-526,-745,-963,-1175,-1387,-1598,-1805,-2013,-2222,-2428,-2637,-2845,-3058,-3268, -3485,-3701,-3920,-4142,-4363,-4585,-4811,-5035,-5259,-5483,-5709,-5932,-6153,-6372,-6587,-6800,-7004,-7208,-7402,-7587, -7763,-7928,-8081,-8221,-8343,-8448,-8531,-8594,-8624,-8624,-8583,-8497,-8350,-8138,-7850,-7474,-7009,-6451,-5806,-5087, -4300,-3469,-2610,-1745,-889,-65,710,1422,2057,2602,3055,3413,3677,3853,3947,3962,3913,3797,3632,3419, 3169,2887,2579,2253,1913,1564,1209,850,492,138,-211,-551,-883,-1197,-1502,-1791,-2061,-2312,-2536,-2736, -2906,-3043,-3135,-3186,-3189,-3138,-3026,-2865,-2635,-2320,-1921,-1422,-835,-166,580,1386,2234,3114,4013,4905, 5779,6615,7396,8103,8716,9226,9625,9910,10085,10160,10150,10066,9921,9728,9501,9245,8967,8673,8368,8055, 7734,7407,7080,6749,6414,6083,5752,5424,5096,4773,4454,4139,3829,3527,3230,2937,2654,2373,2102,1836, 1575,1320,1069,827,587,351,119,-107,-335,-556,-777,-995,-1210,-1426,-1636,-1843,-2052,-2259,-2469,-2678, -2883,-3096,-3307,-3520,-3735,-3953,-4172,-4395,-4617,-4840,-5068,-5292,-5518,-5743,-5968,-6190,-6410,-6625,-6839,-7046, -7246,-7439,-7622,-7798,-7963,-8112,-8248,-8369,-8470,-8554,-8612,-8643,-8642,-8600,-8511,-8363,-8152,-7858,-7478,-7011, -6450,-5798,-5072,-4281,-3446,-2584,-1713,-857,-29,746,1460,2092,2638,3091,3449,3715,3893,3989,4005,3955, 3844,3681,3468,3219,2936,2630,2304,1961,1610,1251,893,533,178,-170,-509,-841,-1157,-1458,-1745,-2011, -2259,-2483,-2682,-2849,-2986,-3078,-3135,-3139,-3091,-2985,-2820,-2597,-2294,-1902,-1418,-842,-179,555,1353,2200, 3074,3965,4857,5728,6565,7347,8055,8676,9193,9599,9896,10081,10168,10170,10094,9959,9772,9549,9299,9024, 8737,8430,8118,7798,7473,7146,6814,6483,6153,5823,5496,5172,4849,4534,4221,3912,3610,3312,3022,2736, 2456,2182,1914,1652,1395,1142,894,654,417,186,-44,-270,-492,-713,-931,-1146,-1359,-1570,-1781,-1987, -2195,-2405,-2616,-2825,-3037,-3251,-3468,-3684,-3905,-4125,-4347,-4573,-4797,-5021,-5247,-5473,-5697,-5922,-6145,-6364, -6581,-6792,-7002,-7203,-7398,-7585,-7760,-7928,-8081,-8217,-8341,-8445,-8530,-8591,-8622,-8624,-8584,-8497,-8358,-8152, -7867,-7498,-7037,-6491,-5852,-5135,-4356,-3529,-2672,-1806,-950,-124,657,1374,2015,2566,3029,3395,3666,3850, 3950,3976,3930,3821,3664,3456,3210,2933,2629,2308,1970,1621,1267,910,557,202,-144,-485,-812,-1131, -1434,-1719,-1988,-2234,-2459,-2656,-2822,-2956,-3050,-3099,-3099,-3047,-2933,-2765,-2533,-2231,-1838,-1355,-780,-126, 604,1393,2225,3090,3973,4852,5715,6539,7313,8013,8625,9135,9538,9825,10009,10095,10092,10015,9879,9698, 9475,9229,8959,8671,8374,8061,7746,7425,7099,6772,6441,6111,5783,5455,5131,4809,4492,4178,3871,3567, 3273,2980,2695,2416,2142,1874,1618,1358,1110,863,624,385,153,-76,-304,-525,-745,-967,-1183,-1397, -1609,-1821,-2031,-2240,-2446,-2655,-2865,-3078,-3291,-3505,-3721,-3940,-4160,-4381,-4609,-4833,-5059,-5287,-5514,-5742, -5965,-6189,-6411,-6631,-6846,-7051,-7254,-7448,-7635,-7811,-7976,-8130,-8271,-8393,-8501,-8584,-8648,-8683,-8686,-8652, -8569,-8430,-8228,-7946,-7579,-7123,-6574,-5937,-5223,-4438,-3606,-2745,-1874,-1012,-179,605,1329,1976,2538,3009, 3383,3664,3859,3964,3995,3955,3856,3695,3492,3248,2970,2666,2341,2001,1650,1290,934,574,218,-129, -469,-797,-1116,-1419,-1706,-1974,-2222,-2448,-2649,-2821,-2955,-3055,-3114,-3120,-3078,-2974,-2810,-2587,-2290,-1912, -1443,-883,-237,483,1264,2095,2959,3839,4720,5587,6423,7203,7912,8536,9064,9479,9791,9987,10087,10098, 10033,9907,9731,9515,9268,9003,8715,8415,8106,7789,7467,7144,6816,6489,6161,5832,5506,5185,4865,4547, 4236,3928,3626,3330,3040,2752,2474,2200,1932,1670,1412,1161,914,673,436,204,-24,-252,-470,-691, -910,-1124,-1339,-1551,-1760,-1968,-2180,-2388,-2596,-2808,-3018,-3233,-3450,-3667,-3886,-4108,-4329,-4553,-4777,-5006, -5228,-5457,-5683,-5907,-6133,-6353,-6575,-6790,-7001,-7206,-7404,-7592,-7773,-7942,-8098,-8244,-8370,-8481,-8572,-8639, -8677,-8689,-8659,-8586,-8456,-8266,-8000,-7648,-7206,-6670,-6046,-5339,-4564,-3737,-2879,-2002,-1133,-289,511,1248, 1915,2492,2978,3370,3667,3872,3993,4032,4004,3910,3761,3561,3326,3052,2753,2431,2097,1746,1392,1033, 674,319,-31,-373,-707,-1025,-1332,-1625,-1894,-2146,-2375,-2577,-2749,-2888,-2988,-3047,-3058,-3013,-2912,-2751, -2527,-2238,-1868,-1409,-863,-231,478,1249,2066,2922,3798,4675,5539,6373,7155,7871,8497,9030,9458,9771, 9977,10084,10104,10043,9921,9751,9539,9299,9032,8750,8453,8146,7832,7511,7187,6860,6532,6205,5874,5550, 5225,4904,4587,4274,3965,3662,3366,3077,2792,2510,2238,1971,1708,1453,1200,953,713,474,242,11, -215,-438,-660,-878,-1096,-1311,-1524,-1734,-1943,-2152,-2360,-2571,-2780,-2994,-3206,-3422,-3640,-3861,-4080,-4304, -4530,-4757,-4985,-5212,-5440,-5671,-5896,-6122,-6346,-6567,-6783,-6996,-7202,-7398,-7592,-7771,-7943,-8102,-8249,-8380, -8492,-8586,-8657,-8702,-8716,-8692,-8627,-8502,-8319,-8058,-7715,-7278,-6752,-6133,-5431,-4661,-3835,-2977,-2102,-1228, -382,426,1170,1844,2433,2933,3335,3640,3857,3987,4036,4013,3923,3780,3583,3347,3075,2777,2455,2116, 1766,1410,1052,690,334,-18,-359,-693,-1015,-1320,-1612,-1885,-2140,-2369,-2573,-2750,-2893,-3000,-3062,-3080, -3045,-2951,-2796,-2575,-2289,-1930,-1480,-945,-320,380,1144,1960,2813,3686,4565,5431,6266,7055,7777,8418, 8958,9399,9725,9942,10060,10088,10037,9924,9754,9547,9307,9044,8762,8466,8159,7845,7526,7200,6875,6548, 6219,5895,5568,5247,4926,4609,4298,3990,3686,3388,3097,2812,2531,2258,1987,1725,1465,1215,969,727, 488,254,26,-198,-423,-643,-863,-1077,-1292,-1506,-1717,-1923,-2134,-2344,-2551,-2763,-2974,-3191,-3407,-3622, -3844,-4064,-4288,-4514,-4736,-4965,-5193,-5419,-5649,-5876,-6102,-6326,-6547,-6766,-6980,-7187,-7387,-7582,-7764,-7938, -8100,-8248,-8381,-8498,-8593,-8668,-8715,-8734,-8715,-8652,-8535,-8361,-8109,-7776,-7350,-6831,-6222,-5528,-4763,-3940, -3078,-2200,-1323,-467,347,1104,1789,2389,2900,3311,3629,3856,3996,4052,4038,3954,3815,3626,3393,3125, 2830,2510,2175,1827,1471,1111,749,393,40,-305,-640,-963,-1273,-1565,-1841,-2099,-2329,-2538,-2716,-2863, -2971,-3037,-3058,-3029,-2938,-2789,-2573,-2295,-1944,-1510,-985,-376,312,1067,1876,2723,3592,4468,5336,6176, 6970,7700,8350,8904,9353,9695,9927,10056,10094,10053,9946,9784,9581,9347,9087,8807,8512,8210,7896,7576, 7254,6928,6600,6272,5944,5618,5296,4975,4657,4343,4035,3732,3433,3144,2859,2580,2305,2036,1773,1516, 1265,1016,774,537,301,71,-155,-379,-600,-818,-1036,-1250,-1463,-1675,-1884,-2092,-2302,-2510,-2720,-2931, -3144,-3361,-3579,-3796,-4019,-4244,-4466,-4694,-4922,-5150,-5381,-5610,-5839,-6065,-6290,-6514,-6729,-6945,-7154,-7355, -7549,-7736,-7910,-8074,-8225,-8361,-8481,-8583,-8661,-8714,-8736,-8723,-8668,-8559,-8391,-8148,-7825,-7411,-6902,-6303, -5619,-4859,-4045,-3187,-2309,-1432,-571,249,1013,1710,2323,2845,3272,3604,3841,3993,4060,4053,3980,3845, 3661,3434,3169,2874,2557,2222,1874,1518,1157,797,436,86,-261,-596,-920,-1233,-1527,-1802,-2061,-2299, -2509,-2693,-2842,-2956,-3031,-3056,-3035,-2954,-2812,-2605,-2332,-1988,-1562,-1052,-452,226,975,1774,2617,3483, 4357,5223,6067,6865,7603,8261,8827,9289,9641,9887,10028,10077,10044,9944,9789,9590,9357,9098,8819,8527, 8222,7910,7591,7268,6944,6617,6289,5963,5637,5313,4994,4678,4363,4056,3751,3455,3161,2877,2596,2320, 2050,1788,1529,1277,1029,785,548,315,85,-141,-364,-585,-803,-1022,-1236,-1448,-1660,-1870,-2080,-2288, -2500,-2709,-2920,-3135,-3351,-3569,-3789,-4008,-4232,-4457,-4683,-4910,-5137,-5366,-5596,-5824,-6051,-6277,-6499,-6719, -6933,-7145,-7349,-7544,-7730,-7909,-8071,-8224,-8363,-8482,-8586,-8667,-8720,-8746,-8734,-8683,-8581,-8415,-8180,-7862, -7455,-6955,-6361,-5682,-4929,-4115,-3259,-2381,-1501,-639,185,955,1658,2276,2806,3236,3576,3820,3976,4050, 4048,3979,3849,3667,3443,3181,2891,2574,2242,1894,1538,1177,815,456,103,-246,-583,-909,-1221,-1518, -1799,-2059,-2299,-2509,-2694,-2847,-2965,-3042,-3074,-3055,-2979,-2843,-2643,-2377,-2038,-1623,-1115,-525,146,887, 1687,2523,3391,4268,5140,5988,6792,7538,8208,8782,9257,9620,9877,10026,10082,10055,9959,9807,9610,9381, 9124,8848,8553,8251,7939,7620,7297,6970,6644,6314,5987,5660,5337,5016,4697,4385,4076,3771,3475,3180, 2896,2616,2341,2071,1808,1550,1297,1050,805,569,332,102,-123,-347,-569,-787,-1004,-1218,-1432,-1641, -1851,-2061,-2266,-2475,-2687,-2898,-3109,-3324,-3543,-3761,-3980,-4203,-4429,-4656,-4881,-5112,-5339,-5568,-5799,-6025, -6252,-6475,-6695,-6911,-7121,-7325,-7522,-7711,-7890,-8058,-8211,-8353,-8476,-8583,-8667,-8728,-8759,-8756,-8710,-8617, -8461,-8239,-7932,-7539,-7053,-6474,-5807,-5061,-4256,-3407,-2529,-1649,-782,49,830,1547,2180,2725,3175,3529, 3787,3959,4046,4055,3996,3876,3700,3483,3225,2936,2623,2293,1944,1591,1231,869,509,155,-195,-532, -859,-1173,-1473,-1756,-2017,-2257,-2475,-2663,-2819,-2942,-3024,-3062,-3050,-2981,-2853,-2662,-2405,-2073,-1663,-1169, -589,71,803,1591,2428,3287,4164,5034,5880,6692,7443,8121,8707,9194,9571,9840,10001,10069,10053,9966, 9819,9629,9403,9149,8873,8583,8279,7969,7653,7329,7004,6677,6349,6022,5696,5373,5051,4735,4421,4112, 3809,3511,3218,2930,2651,2374,2105,1841,1584,1328,1081,838,599,367,137,-89,-312,-532,-752,-969, -1183,-1397,-1606,-1816,-2024,-2233,-2440,-2652,-2863,-3074,-3288,-3504,-3723,-3943,-4166,-4389,-4615,-4841,-5067,-5297, -5523,-5754,-5980,-6205,-6429,-6650,-6864,-7076,-7281,-7480,-7670,-7847,-8019,-8173,-8315,-8441,-8546,-8634,-8697,-8730, -8733,-8693,-8602,-8454,-8239,-7942,-7560,-7083,-6514,-5858,-5121,-4324,-3479,-2607,-1726,-859,-24,762,1481,2122, 2674,3133,3495,3763,3941,4036,4053,4001,3887,3719,3504,3251,2967,2658,2327,1986,1630,1271,911,550, 194,-153,-495,-823,-1140,-1440,-1724,-1988,-2230,-2450,-2641,-2799,-2924,-3007,-3047,-3038,-2971,-2849,-2665,-2414, -2087,-1679,-1185,-610,49,778,1566,2398,3263,4138,5013,5864,6678,7436,8117,8712,9205,9586,9857,10027, 10096,10082,9996,9853,9663,9436,9181,8907,8615,8312,7999,7681,7357,7032,6704,6376,6048,5719,5395,5073, 4756,4439,4129,3826,3526,3233,2947,2664,2389,2120,1854,1598,1343,1096,853,615,379,149,-77,-301, -524,-741,-959,-1173,-1386,-1596,-1805,-2014,-2221,-2429,-2638,-2848,-3063,-3275,-3492,-3710,-3931,-4152,-4376,-4602, -4830,-5056,-5287,-5514,-5744,-5972,-6197,-6421,-6644,-6859,-7071,-7276,-7475,-7665,-7846,-8017,-8175,-8318,-8448,-8558, -8647,-8713,-8751,-8757,-8723,-8639,-8498,-8289,-8001,-7627,-7159,-6596,-5946,-5216,-4420,-3577,-2704,-1821,-948,-107, 685,1415,2067,2631,3101,3473,3753,3941,4045,4067,4023,3914,3750,3539,3288,3005,2696,2366,2022,1670, 1308,946,584,228,-122,-463,-795,-1112,-1416,-1703,-1970,-2217,-2439,-2636,-2802,-2932,-3023,-3072,-3071,-3017, -2904,-2732,-2492,-2182,-1786,-1306,-744,-97,622,1400,2227,3086,3960,4834,5693,6515,7284,7982,8592,9104, 9506,9799,9987,10074,10074,10000,9866,9683,9461,9211,8938,8648,8346,8035,7716,7394,7069,6741,6413,6083, 5756,5432,5111,4792,4477,4165,3861,3561,3266,2978,2696,2418,2147,1883,1624,1369,1118,877,638,401, 170,-55,-278,-498,-718,-935,-1148,-1363,-1571,-1780,-1989,-2197,-2404,-2614,-2824,-3037,-3249,-3464,-3682,-3901, -4123,-4345,-4568,-4795,-5020,-5248,-5478,-5702,-5931,-6157,-6378,-6600,-6818,-7027,-7235,-7433,-7625,-7806,-7977,-8134, -8281,-8411,-8519,-8613,-8680,-8720,-8730,-8700,-8624,-8491,-8290,-8013,-7651,-7197,-6649,-6012,-5295,-4511,-3674,-2810, -1930,-1060,-218,578,1312,1972,2547,3025,3408,3700,3898,4011,4044,4008,3908,3754,3548,3306,3029,2727, 2401,2060,1709,1353,992,633,275,-76,-415,-748,-1066,-1370,-1657,-1925,-2173,-2394,-2593,-2758,-2890,-2982, -3034,-3034,-2982,-2869,-2702,-2470,-2159,-1766,-1288,-725,-82,637,1416,2240,3099,3974,4850,5708,6532,7303, 8004,8616,9130,9535,9832,10021,10109,10111,10038,9906,9722,9500,9252,8979,8692,8389,8078,7763,7438,7110, 6784,6455,6124,5797,5472,5147,4827,4513,4200,3896,3594,3302,3012,2729,2453,2180,1916,1657,1400,1152, 909,669,434,202,-26,-249,-471,-690,-905,-1121,-1333,-1544,-1752,-1961,-2169,-2376,-2584,-2793,-3004,-3218, -3433,-3649,-3869,-4090,-4314,-4537,-4764,-4992,-5218,-5447,-5675,-5901,-6127,-6352,-6571,-6789,-7001,-7207,-7406,-7599, -7779,-7952,-8112,-8257,-8389,-8503,-8596,-8666,-8709,-8721,-8695,-8620,-8492,-8297,-8026,-7670,-7221,-6680,-6048,-5335, -4555,-3723,-2858,-1979,-1108,-262,538,1278,1943,2523,3011,3399,3696,3900,4020,4061,4028,3930,3777,3576, 3333,3056,2751,2427,2087,1736,1378,1016,655,299,-53,-395,-727,-1049,-1354,-1643,-1916,-2166,-2395,-2596, -2768,-2907,-3010,-3067,-3077,-3035,-2938,-2780,-2560,-2265,-1888,-1420,-870,-236,471,1243,2063,2920,3796,4675, 5537,6371,7155,7870,8499,9031,9455,9772,9978,10084,10100,10038,9912,9736,9520,9272,9002,8714,8413,8101, 7785,7461,7133,6805,6476,6148,5819,5494,5170,4849,4532,4220,3914,3612,3315,3024,2740,2460,2188,1921, 1661,1404,1156,909,669,433,202,-24,-247,-469,-689,-905,-1121,-1333,-1545,-1753,-1960,-2167,-2376,-2583, -2794,-3006,-3219,-3433,-3648,-3865,-4086,-4308,-4532,-4755,-4980,-5209,-5435,-5661,-5888,-6113,-6337,-6556,-6775,-6986, -7195,-7392,-7586,-7770,-7939,-8101,-8249,-8381,-8496,-8592,-8663,-8710,-8725,-8702,-8635,-8515,-8333,-8072,-7729,-7296, -6770,-6152,-5452,-4683,-3862,-3003,-2127,-1256,-410,395,1145,1818,2409,2908,3311,3620,3837,3969,4019,3998, 3911,3768,3576,3340,3072,2775,2457,2120,1770,1415,1056,695,338,-12,-357,-688,-1010,-1317,-1608,-1881, -2133,-2362,-2565,-2736,-2877,-2981,-3040,-3052,-3013,-2915,-2766,-2551,-2262,-1890,-1430,-885,-255,449,1215,2037, 2893,3766,4645,5512,6349,7133,7855,8488,9028,9459,9781,9995,10106,10127,10072,9950,9777,9564,9320,9053, 8767,8466,8156,7840,7516,7191,6862,6533,6203,5872,5548,5222,4900,4584,4270,3963,3662,3366,3076,2791, 2514,2241,1974,1714,1458,1206,960,719,483,251,20,-202,-425,-646,-862,-1079,-1291,-1501,-1711,-1919, -2125,-2333,-2540,-2750,-2960,-3172,-3387,-3602,-3821,-4040,-4264,-4489,-4713,-4940,-5167,-5393,-5622,-5847,-6071,-6294, -6514,-6729,-6942,-7150,-7349,-7540,-7725,-7895,-8057,-8205,-8339,-8454,-8551,-8625,-8673,-8691,-8669,-8607,-8487,-8304, -8047,-7708,-7279,-6755,-6144,-5446,-4680,-3862,-3005,-2131,-1260,-412,393,1143,1819,2413,2915,3323,3634,3853, 3991,4043,4024,3937,3796,3606,3371,3100,2804,2482,2147,1798,1441,1081,722,365,13,-329,-664,-988, -1296,-1591,-1864,-2119,-2355,-2564,-2742,-2888,-2999,-3067,-3088,-3057,-2970,-2827,-2623,-2345,-1984,-1533,-995,-371, 328,1093,1910,2766,3643,4527,5400,6243,7039,7773,8422,8979,9424,9759,9986,10111,10141,10090,9974,9806, 9594,9351,9082,8797,8496,8185,7867,7545,7220,6887,6558,6227,5898,5569,5243,4920,4602,4287,3978,3673, 3376,3081,2795,2515,2239,1969,1705,1451,1199,951,710,471,240,12,-213,-436,-655,-875,-1091,-1304, -1515,-1726,-1936,-2144,-2353,-2560,-2770,-2981,-3194,-3407,-3622,-3842,-4059,-4283,-4504,-4729,-4952,-5179,-5407,-5634, -5861,-6085,-6309,-6529,-6747,-6960,-7167,-7370,-7563,-7747,-7921,-8081,-8231,-8365,-8483,-8582,-8657,-8709,-8730,-8714, -8657,-8547,-8376,-8131,-7808,-7391,-6883,-6286,-5601,-4845,-4031,-3180,-2310,-1437,-585,230,987,1675,2282,2797, 3216,3542,3777,3922,3987,3980,3906,3772,3589,3365,3102,2808,2495,2160,1815,1461,1102,741,384,33, -313,-649,-972,-1284,-1577,-1853,-2110,-2344,-2554,-2735,-2883,-2993,-3063,-3089,-3062,-2978,-2842,-2645,-2377,-2026, -1585,-1056,-442,252,1009,1824,2675,3551,4435,5306,6154,6957,7694,8354,8916,9374,9721,9958,10092,10132, 10090,9983,9821,9614,9376,9111,8828,8533,8223,7906,7583,7257,6928,6594,6263,5933,5605,5279,4958,4636, 4324,4014,3710,3414,3121,2834,2554,2280,2009,1748,1487,1235,989,743,508,272,42,-183,-408,-628, -846,-1061,-1276,-1487,-1694,-1903,-2110,-2318,-2526,-2734,-2944,-3157,-3370,-3587,-3804,-4025,-4245,-4470,-4693,-4919, -5145,-5371,-5599,-5825,-6046,-6270,-6490,-6704,-6916,-7123,-7323,-7517,-7701,-7875,-8038,-8186,-8323,-8442,-8541,-8619, -8672,-8695,-8683,-8627,-8522,-8355,-8119,-7799,-7394,-6893,-6306,-5631,-4886,-4082,-3238,-2373,-1505,-654,160,920, 1613,2222,2743,3172,3506,3748,3901,3974,3972,3902,3774,3593,3370,3111,2822,2510,2178,1836,1481,1126, 767,411,62,-284,-618,-941,-1252,-1545,-1828,-2085,-2323,-2536,-2719,-2873,-2985,-3061,-3089,-3067,-2986,-2854, -2660,-2396,-2046,-1607,-1080,-465,227,988,1800,2652,3528,4416,5290,6141,6948,7694,8355,8927,9390,9742, 9983,10120,10163,10124,10016,9856,9647,9412,9146,8862,8567,8259,7943,7622,7296,6969,6637,6307,5979,5649, 5323,4999,4680,4364,4055,3748,3448,3155,2866,2582,2306,2039,1773,1514,1262,1016,774,534,302,72, -151,-376,-597,-817,-1031,-1249,-1460,-1672,-1879,-2089,-2296,-2504,-2714,-2924,-3136,-3347,-3564,-3779,-3998,-4218, -4442,-4666,-4888,-5117,-5342,-5568,-5795,-6020,-6243,-6465,-6681,-6895,-7101,-7303,-7496,-7681,-7854,-8018,-8167,-8302, -8423,-8522,-8601,-8658,-8684,-8676,-8626,-8527,-8369,-8142,-7834,-7441,-6952,-6372,-5704,-4967,-4165,-3322,-2454,-1584, -727,92,860,1561,2181,2715,3153,3496,3745,3912,3993,4001,3941,3820,3647,3429,3174,2889,2576,2250, 1906,1552,1197,836,478,126,-220,-557,-884,-1196,-1492,-1774,-2034,-2272,-2486,-2674,-2829,-2949,-3029,-3066, -3052,-2982,-2856,-2675,-2425,-2095,-1674,-1164,-566,113,860,1666,2511,3386,4271,5148,6005,6816,7573,8249, 8835,9317,9687,9949,10105,10165,10141,10045,9895,9698,9468,9210,8931,8637,8330,8017,7694,7368,7040,6710, 6378,6048,5720,5391,5068,4747,4432,4122,3816,3516,3220,2933,2648,2370,2099,1836,1575,1317,1067,823, 583,346,115,-111,-336,-559,-778,-997,-1210,-1422,-1633,-1842,-2050,-2260,-2467,-2678,-2887,-3101,-3313,-3530, -3748,-3968,-4192,-4414,-4637,-4865,-5090,-5316,-5542,-5768,-5992,-6214,-6435,-6651,-6864,-7069,-7272,-7466,-7651,-7826, -7991,-8142,-8280,-8401,-8503,-8583,-8642,-8668,-8662,-8615,-8520,-8363,-8140,-7839,-7448,-6969,-6396,-5739,-5008,-4213, -3376,-2513,-1647,-794,25,793,1497,2122,2657,3099,3448,3703,3869,3955,3963,3907,3786,3617,3400,3147, 2862,2552,2226,1885,1536,1181,823,466,115,-230,-568,-896,-1207,-1508,-1792,-2056,-2300,-2518,-2710,-2871, -2998,-3081,-3122,-3112,-3050,-2926,-2751,-2505,-2178,-1767,-1261,-668,4,749,1552,2395,3267,4155,5034,5893, 6712,7474,8161,8754,9245,9626,9896,10058,10122,10104,10014,9866,9670,9443,9187,8909,8616,8313,8001,7682, 7357,7032,6702,6370,6041,5711,5385,5059,4739,4422,4108,3801,3500,3204,2913,2632,2352,2081,1816,1556, 1302,1051,809,570,334,104,-122,-349,-570,-791,-1009,-1225,-1440,-1650,-1858,-2067,-2275,-2486,-2696,-2901, -3115,-3327,-3541,-3757,-3976,-4195,-4419,-4642,-4866,-5095,-5319,-5546,-5772,-5997,-6220,-6441,-6655,-6870,-7076,-7277, -7470,-7653,-7828,-7993,-8142,-8277,-8397,-8498,-8580,-8637,-8665,-8661,-8616,-8522,-8370,-8153,-7852,-7465,-6991,-6423, -5766,-5034,-4239,-3401,-2538,-1667,-812,12,784,1493,2121,2662,3110,3463,3725,3898,3990,4003,3950,3835, 3671,3456,3205,2921,2614,2288,1945,1594,1235,878,519,166,-180,-517,-848,-1162,-1461,-1745,-2008,-2254, -2474,-2670,-2833,-2965,-3053,-3104,-3103,-3049,-2937,-2766,-2536,-2227,-1828,-1341,-762,-98,635,1432,2276,3146, 4032,4917,5782,6610,7383,8082,8694,9202,9600,9889,10068,10150,10148,10069,9933,9745,9522,9271,8997,8710, 8403,8092,7774,7449,7123,6792,6462,6133,5803,5477,5154,4832,4518,4206,3897,3596,3299,3009,2724,2444, 2171,1903,1641,1386,1132,885,645,408,178,-50,-276,-498,-720,-937,-1152,-1365,-1576,-1787,-1994,-2201, -2412,-2623,-2832,-3044,-3258,-3475,-3692,-3912,-4133,-4354,-4581,-4805,-5029,-5255,-5482,-5705,-5931,-6153,-6373,-6590, -6800,-7010,-7211,-7406,-7593,-7768,-7935,-8088,-8224,-8347,-8451,-8535,-8596,-8626,-8628,-8587,-8499,-8359,-8152,-7866, -7495,-7034,-6485,-5846,-5128,-4349,-3522,-2664,-1798,-943,-119,662,1378,2018,2568,3030,3396,3666,3850,3949, 3975,3929,3820,3662,3454,3208,2931,2628,2306,1968,1619,1265,909,556,2,-113,-239,-193,-388,-771, -1220,-1508,-1647,-1592,-1387,-1161,-926,-524,44,647,1211,1650,1908,2067,2269,2523,2759,2965,3202,3505, 3967,4619,5309,5948,6511,7011,7436,7786,8043,8122,8072,7984,7919,7923,7982,8077,8184,8332,8513,8688, 8790,8761,8557,8214,7765,7264,6695,6060,5400,4774,4190,3688,3229,2775,2283,1738,1151,514,-180,-924, -1766,-2623,-3467,-4273,-4995,-5614,-6171,-6658,-7081,-7419,-7734,-8040,-8388,-8754,-9211,-9730,-10233,-10663,-11034,-11341, -11563,-11685,-11741,-11656,-11478,-11273,-11067,-10881,-10727,-10586,-10414,-10250,-10117,-10002,-9838,-9597,-9282,-8851,-8356,-7871, -7371,-6863,-6344,-5832,-5358,-4964,-4640,-4361,-4062,-3751,-3411,-3033,-2631,-2202,-1710,-1147,-553,11,544,1035, 1473,1872,2253,2568,2807,3016,3216,3461,3735,4071,4417,4781,5180,5624,6075,6547,6987,7322,7579,7820, 8012,8169,8294,8391,8456,8534,8656,8826,8986,9130,9218,9239,9202,9114,8958,8679,8335,7910,7454,7017, 6645,6260,5882,5540,5232,4924,4638,4330,3939,3460,2918,2348,1729,1091,433,-278,-945,-1552,-2072,-2553, -2988,-3428,-3871,-4323,-4732,-5161,-5630,-6138,-6665,-7215,-7717,-8143,-8507,-8828,-9091,-9275,-9395,-9455,-9456,-9468, -9527,-9580,-9636,-9716,-9768,-9805,-9840,-9846,-9770,-9589,-9331,-9021,-8647,-8260,-7864,-7436,-6999,-6595,-6230,-5896, -5600,-5314,-4984,-4623,-4272,-3889,-3481,-3054,-2597,-2094,-1614,-1156,-740,-349,14,346,661,954,1212,1483, 1787,2122,2500,2903,3328,3753,4197,4676,5133,5556,5943,6307,6606,6915,7233,7519,7806,8102,8431,8784, 9199,9633,10047,10414,10752,11034,11276,11463,11578,11589,11558,11493,11434,11358,11329,11289,11219,11143,11091,10978, 10808,10544,10193,9739,9228,8667,8065,7403,6748,6094,5476,4922,4440,3929,3422,2907,2378,1794,1195,545, -186,-983,-1784,-2558,-3325,-4014,-4658,-5259,-5816,-6280,-6711,-7098,-7497,-7903,-8361,-8817,-9273,-9718,-10175,-10583, -10974,-11282,-11517,-11630,-11682,-11689,-11657,-11568,-11476,-11358,-11239,-11157,-11108,-11048,-10967,-10836,-10667,-10425,-10165,-9853, -9446,-8980,-8476,-7959,-7435,-6957,-6497,-6054,-5614,-5220,-4839,-4465,-4084,-3686,-3248,-2786,-2315,-1837,-1358,-877, -405,50,467,818,1141,1458,1744,2053,2359,2658,2955,3294,3682,4096,4516,4928,5344,5715,6068,6417, 6700,6961,7185,7359,7517,7718,7928,8142,8341,8574,8801,9015,9212,9391,9476,9484,9440,9341,9188,9008, 8781,8518,8258,8039,7816,7610,7400,7157,6853,6529,6179,5768,5266,4717,4105,3464,2840,2252,1672,1127, 593,98,-364,-781,-1206,-1666,-2176,-2696,-3265,-3851,-4415,-4999,-5594,-6143,-6626,-7040,-7389,-7690,-7925,-8179, -8382,-8558,-8711,-8920,-9111,-9344,-9572,-9757,-9879,-9953,-9978,-9950,-9846,-9701,-9464,-9171,-8868,-8588,-8296,-8032, -7760,-7493,-7227,-6968,-6720,-6429,-6103,-5722,-5286,-4841,-4382,-3917,-3432,-2941,-2476,-2045,-1644,-1284,-963,-611, -266,70,415,777,1151,1564,2011,2471,2918,3337,3745,4163,4556,4932,5262,5569,5877,6193,6521,6892, 7284,7665,8056,8461,8903,9311,9694,10030,10284,10487,10673,10805,10922,10984,11022,11041,11081,11145,11191,11203, 11189,11121,10990,10817,10611,10312,9908,9443,8973,8482,7996,7532,7059,6552,6076,5607,5140,4666,4134,3535, 2868,2171,1470,736,-10,-756,-1501,-2218,-2838,-3412,-3953,-4491,-5011,-5519,-6025,-6516,-7012,-7552,-8113,-8660, -9193,-9656,-10059,-10421,-10735,-10995,-11182,-11290,-11363,-11398,-11434,-11505,-11543,-11540,-11541,-11521,-11476,-11412,-11307,-11121, -10848,-10507,-10147,-9742,-9335,-8891,-8410,-7919,-7473,-7052,-6647,-6247,-5847,-5417,-4972,-4525,-4084,-3605,-3106,-2582, -2063,-1559,-1079,-639,-208,212,616,970,1301,1603,1926,2270,2629,2988,3358,3724,4091,4472,4866,5248, 5580,5899,6172,6444,6724,6984,7237,7471,7714,7977,8261,8558,8846,9083,9295,9493,9642,9750,9820,9837, 9773,9660,9561,9464,9350,9214,9066,8888,8707,8538,8327,8069,7729,7331,6884,6425,5935,5420,4845,4284, 3730,3202,2704,2241,1745,1222,689,159,-375,-935,-1527,-2161,-2813,-3442,-4024,-4585,-5100,-5597,-6072,-6498, -6858,-7178,-7494,-7831,-8160,-8495,-8816,-9097,-9355,-9623,-9860,-10058,-10187,-10237,-10220,-10171,-10096,-9992,-9839,-9684, -9487,-9284,-9097,-8925,-8724,-8489,-8231,-7934,-7620,-7284,-6923,-6516,-6058,-5599,-5152,-4714,-4294,-3886,-3467,-3057, -2678,-2314,-1963,-1606,-1232,-819,-391,8,411,843,1254,1684,2110,2511,2872,3216,3555,3915,4266,4620, 4961,5313,5688,6095,6504,6926,7328,7706,8053,8399,8733,9019,9251,9449,9616,9755,9912,10070,10197,10294, 10368,10434,10486,10519,10476,10359,10187,9963,9709,9424,9101,8728,8316,7894,7497,7108,6692,6275,5817,5311, 4797,4266,3705,3093,2438,1757,1076,397,-234,-864,-1496,-2100,-2684,-3241,-3772,-4272,-4813,-5384,-5935,-6463, -6992,-7499,-7986,-8469,-8930,-9326,-9657,-9929,-10165,-10372,-10555,-10718,-10826,-10897,-10976,-11022,-11074,-11112,-11095,-11013, -10889,-10740,-10556,-10311,-10025,-9690,-9313,-8923,-8550,-8159,-7772,-7357,-6940,-6523,-6123,-5708,-5304,-4848,-4398,-3919, -3454,-3000,-2552,-2085,-1627,-1200,-777,-388,-20,323,669,1018,1364,1684,2019,2346,2694,3064,3418,3777, 4123,4457,4796,5122,5461,5764,6055,6340,6643,6937,7253,7567,7862,8156,8451,8756,9055,9301,9531,9682, 9815,9926,10015,10073,10086,10059,10012,9949,9901,9835,9715,9555,9362,9119,8857,8565,8205,7795,7331,6857, 6377,5893,5405,4887,4349,3808,3299,2785,2245,1693,1096,483,-145,-750,-1359,-1983,-2606,-3210,-3809,-4345, -4836,-5323,-5802,-6258,-6708,-7126,-7511,-7895,-8292,-8686,-9040,-9370,-9661,-9889,-10095,-10279,-10429,-10522,-10539,-10536, -10507,-10440,-10395,-10302,-10184,-10039,-9884,-9687,-9499,-9268,-9003,-8664,-8323,-7969,-7591,-7191,-6788,-6350,-5900,-5480, -5067,-4665,-4248,-3822,-3394,-2958,-2534,-2124,-1687,-1237,-782,-319,127,547,976,1417,1848,2254,2652,3048, 3418,3801,4210,4626,5032,5434,5825,6232,6650,7054,7457,7831,8167,8486,8783,9089,9367,9603,9804,10009, 10195,10376,10529,10666,10745,10776,10779,10766,10700,10591,10417,10200,9956,9694,9421,9110,8769,8402,7992,7582, 7189,6764,6269,5751,5203,4639,4062,3478,2879,2243,1600,993,394,-194,-769,-1363,-1961,-2535,-3094,-3650, -4193,-4732,-5297,-5860,-6375,-6836,-7298,-7741,-8147,-8540,-8886,-9189,-9444,-9682,-9923,-10142,-10314,-10463,-10565,-10640, -10714,-10743,-10732,-10683,-10577,-10428,-10260,-10068,-9859,-9589,-9294,-8979,-8647,-8321,-7993,-7633,-7263,-6854,-6446,-6052, -5648,-5238,-4803,-4344,-3904,-3469,-3049,-2639,-2227,-1800,-1393,-1005,-635,-274,87,451,822,1190,1547,1890, 2256,2619,3004,3376,3740,4092,4435,4801,5164,5517,5867,6199,6525,6876,7227,7586,7921,8231,8542,8834, 9119,9399,9638,9823,9986,10123,10234,10342,10414,10434,10420,10371,10316,10215,10099,9936,9707,9432,9147,8834, 8481,8092,7661,7194,6706,6219,5741,5219,4679,4094,3505,2925,2349,1757,1133,486,-165,-803,-1436,-2042, -2650,-3277,-3890,-4462,-5032,-5553,-6072,-6591,-7113,-7597,-8035,-8455,-8859,-9243,-9634,-9988,-10289,-10539,-10769,-10966, -11143,-11295,-11412,-11458,-11464,-11457,-11441,-11399,-11318,-11195,-11023,-10833,-10621,-10397,-10147,-9843,-9510,-9138,-8767,-8408, -8013,-7592,-7159,-6701,-6257,-5823,-5388,-4952,-4487,-4020,-3566,-3108,-2667,-2227,-1753,-1292,-828,-382,52,479, 913,1354,1788,2183,2579,2977,3376,3781,4204,4603,4992,5376,5763,6161,6561,6935,7299,7613,7929,8253, 8551,8834,9097,9318,9510,9707,9882,10054,10165,10242,10285,10302,10298,10271,10188,10063,9891,9701,9480,9262, 9000,8700,8322,7971,7587,7194,6790,6355,5869,5366,4856,4343,3817,3266,2707,2115,1527,974,420,-135, -691,-1274,-1829,-2358,-2870,-3374,-3891,-4404,-4899,-5384,-5804,-6218,-6625,-7032,-7398,-7739,-8034,-8305,-8520,-8746, -8942,-9112,-9228,-9315,-9362,-9407,-9433,-9419,-9356,-9257,-9117,-8964,-8787,-8591,-8347,-8068,-7759,-7448,-7125,-6806, -6462,-6100,-5719,-5335,-4957,-4583,-4187,-3782,-3364,-2935,-2534,-2141,-1739,-1334,-938,-535,-165,198,537,892, 1253,1616,1978,2335,2676,3018,3390,3770,4139,4501,4850,5202,5548,5918,6271,6609,6941,7274,7598,7947, 8290,8619,8912,9187,9469,9731,9973,10201,10377,10504,10607,10689,10755,10780,10769,10702,10613,10494,10381,10201, 10004,9756,9461,9127,8794,8423,8015,7536,7044,6525,6003,5478,4948,4361,3766,3159,2558,1981,1378,759, 113,-547,-1180,-1812,-2440,-3063,-3686,-4313,-4909,-5475,-5990,-6519,-7034,-7518,-7993,-8425,-8831,-9215,-9608,-9979, -10334,-10632,-10894,-11107,-11303,-11471,-11608,-11691,-11728,-11706,-11674,-11623,-11557,-11435,-11294,-11109,-10910,-10698,-10463,-10192, -9882,-9526,-9151,-8757,-8363,-7956,-7520,-7060,-6607,-6155,-5716,-5287,-4853,-4425,-3964,-3517,-3085,-2657,-2216,-1780, -1331,-892,-464,-51,343,740,1141,1524,1908,2249,2597,2968,3332,3713,4093,4449,4807,5164,5543,5914, 6262,6582,6888,7174,7453,7724,7984,8212,8416,8610,8795,8971,9135,9274,9357,9411,9438,9438,9411,9340, 9205,9038,8835,8622,8390,8127,7841,7515,7164,6816,6449,6057,5625,5162,4664,4146,3634,3118,2545,1969, 1391,813,261,-265,-814,-1356,-1909,-2444,-2960,-3461,-3975,-4477,-4996,-5502,-5970,-6424,-6831,-7231,-7620,-7962, -8263,-8530,-8751,-8967,-9153,-9330,-9490,-9588,-9677,-9736,-9772,-9794,-9767,-9697,-9577,-9415,-9220,-9014,-8774,-8513, -8208,-7879,-7548,-7238,-6902,-6558,-6183,-5815,-5408,-5006,-4615,-4205,-3757,-3307,-2855,-2422,-2012,-1589,-1180,-773, -369,34,376,746,1091,1479,1867,2257,2622,3011,3379,3772,4160,4559,4926,5278,5625,5981,6335,6687, 7032,7367,7694,8047,8394,8754,9091,9412,9693,9965,10222,10453,10644,10786,10891,10965,11019,11057,11074,11047, 10979,10900,10786,10663,10496,10273,10005,9694,9330,8954,8548,8092,7598,7076,6567,6034,5504,4972,4417,3830, 3238,2632,2037,1418,772,100,-583,-1255,-1895,-2533,-3155,-3775,-4376,-4956,-5477,-5974,-6459,-6956,-7452,-7905, -8356,-8778,-9162,-9558,-9931,-10269,-10550,-10763,-10948,-11096,-11210,-11295,-11334,-11325,-11297,-11237,-11165,-11089,-10982,-10814, -10622,-10391,-10159,-9867,-9544,-9195,-8793,-8361,-7941,-7514,-7081,-6648,-6198,-5740,-5307,-4875,-4457,-4018,-3565,-3113, -2643,-2191,-1733,-1286,-827,-375,64,474,886,1259,1628,2017,2393,2751,3118,3459,3836,4224,4623,5016, 5396,5758,6130,6492,6844,7179,7489,7768,8051,8325,8608,8864,9121,9342,9548,9761,9957,10120,10250,10324, 10342,10345,10316,10244,10136,9983,9785,9569,9346,9133,8880,8585,8263,7913,7542,7141,6709,6230,5710,5153, 4595,4033,3470,2890,2295,1714,1141,581,43,-491,-1067,-1638,-2229,-2800,-3363,-3919,-4487,-5047,-5588,-6091, -6543,-6962,-7357,-7733,-8088,-8393,-8679,-8933,-9181,-9448,-9665,-9884,-10044,-10171,-10254,-10327,-10357,-10335,-10257,-10133, -9972,-9794,-9607,-9401,-9170,-8923,-8658,-8380,-8101,-7812,-7488,-7126,-6751,-6352,-5943,-5524,-5097,-4657,-4204,-3761, -3339,-2950,-2552,-2155,-1775,-1383,-995,-629,-245,148,560,984,1402,1806,2209,2596,2995,3378,3755,4128, 4471,4806,5164,5540,5913,6291,6651,7019,7398,7776,8140,8485,8787,9055,9289,9520,9726,9894,10017,10115, 10191,10266,10322,10366,10359,10320,10238,10131,9992,9804,9552,9248,8895,8519,8121,7717,7269,6810,6328,5837, 5365,4879,4365,3823,3253,2642,2028,1401,772,112,-568,-1236,-1881,-2487,-3066,-3655,-4217,-4761,-5301,-5810, -6307,-6781,-7303,-7821,-8301,-8749,-9157,-9557,-9910,-10250,-10531,-10764,-10932,-11067,-11172,-11266,-11351,-11393,-11403,-11374, -11337,-11290,-11215,-11104,-10912,-10683,-10414,-10123,-9814,-9454,-9067,-8658,-8233,-7819,-7425,-7019,-6615,-6170,-5743,-5311, -4883,-4442,-3987,-3508,-3036,-2565,-2102,-1659,-1228,-793,-372,22,398,756,1114,1479,1844,2237,2607,2988, 3360,3742,4153,4549,4942,5310,5652,6000,6340,6663,6996,7298,7590,7882,8195,8502,8818,9088,9354,9579, 9795,9989,10146,10240,10311,10303,10283,10247,10177,10086,9965,9810,9638,9460,9261,9030,8755,8415,8045,7644, 7217,6749,6233,5709,5148,4599,4059,3538,3004,2458,1889,1346,790,241,-331,-922,-1535,-2152,-2767,-3330, -3901,-4453,-4991,-5478,-5948,-6363,-6746,-7118,-7485,-7847,-8183,-8486,-8781,-9059,-9338,-9594,-9793,-9939,-10044,-10090, -10105,-10101,-10047,-9949,-9802,-9648,-9491,-9321,-9136,-8930,-8696,-8439,-8161,-7861,-7547,-7188,-6791,-6365,-5929,-5516, -5076,-4648,-4217,-3790,-3364,-2965,-2581,-2214,-1814,-1401,-991,-584,-166,232,665,1083,1511,1928,2322,2687, 3056,3421,3789,4139,4472,4822,5160,5534,5925,6317,6700,7065,7425,7786,8123,8454,8743,8995,9205,9409, 9598,9777,9929,10059,10168,10270,10345,10421,10440,10433,10348,10213,10051,9858,9616,9326,8990,8620,8244,7861, 7480,7083,6645,6191,5709,5219,4725,4182,3585,2967,2320,1684,1035,391,-241,-888,-1514,-2098,-2659,-3212, -3757,-4323,-4871,-5418,-5953,-6471,-6991,-7517,-8020,-8507,-8921,-9303,-9638,-9954,-10211,-10449,-10641,-10803,-10929,-11043, -11161,-11253,-11312,-11337,-11312,-11268,-11200,-11076,-10912,-10675,-10399,-10095,-9771,-9449,-9107,-8734,-8349,-7970,-7593,-7220, -6835,-6437,-6013,-5563,-5111,-4657,-4201,-3722,-3253,-2776,-2325,-1894,-1475,-1086,-691,-299,72,444,790,1160, 1549,1943,2340,2743,3134,3519,3905,4300,4684,5047,5383,5722,6047,6392,6735,7065,7404,7732,8060,8410, 8736,9074,9346,9587,9798,9985,10129,10249,10333,10361,10363,10331,10315,10283,10219,10117,9985,9819,9636,9401, 9122,8797,8411,7970,7533,7069,6592,6080,5560,5033,4520,4008,3506,2974,2416,1826,1237,640,33,-595, -1229,-1876,-2502,-3101,-3666,-4196,-4717,-5222,-5694,-6137,-6567,-6968,-7379,-7785,-8199,-8588,-8935,-9256,-9545,-9806, -10041,-10215,-10330,-10391,-10413,-10418,-10405,-10367,-10296,-10200,-10076,-9949,-9814,-9648,-9445,-9202,-8914,-8597,-8249,-7890, -7500,-7078,-6630,-6196,-5770,-5368,-4946,-4535,-4120,-3701,-3292,-2891,-2471,-2044,-1593,-1116,-674,-226,208,638, 1067,1483,1895,2270,2630,2988,3367,3739,4109,4489,4877,5272,5676,6083,6499,6879,7247,7578,7901,8224, 8514,8781,9029,9247,9459,9673,9882,10085,10253,10382,10484,10564,10622,10611,10547,10435,10269,10077,9858,9623, 9350,9034,8711,8380,8043,7685,7296,6869,6391,5897,5362,4818,4239,3626,2984,2352,1732,1119,519,-80, -664,-1247,-1822,-2372,-2915,-3492,-4089,-4675,-5246,-5810,-6339,-6851,-7360,-7821,-8251,-8630,-8954,-9249,-9524,-9782, -10024,-10236,-10420,-10588,-10731,-10868,-10972,-11030,-11028,-10980,-10894,-10775,-10613,-10419,-10178,-9891,-9597,-9306,-9008,-8706, -8381,-8019,-7657,-7298,-6923,-6528,-6095,-5662,-5198,-4727,-4273,-3822,-3367,-2921,-2472,-2056,-1664,-1283,-912,-535, -142,251,630,1023,1402,1816,2224,2639,3030,3422,3793,4163,4524,4895,5247,5583,5925,6275,6642,7025, 7385,7766,8128,8475,8811,9145,9437,9704,9910,10081,10250,10384,10494,10595,10650,10682,10694,10700,10692,10627, 10530,10373,10172,9940,9679,9344,8977,8567,8129,7686,7254,6800,6335,5829,5332,4828,4319,3774,3228,2609, 1984,1336,690,65,-575,-1207,-1827,-2429,-2989,-3538,-4041,-4537,-5045,-5547,-6024,-6486,-6936,-7405,-7863,-8284, -8678,-9025,-9320,-9580,-9814,-10004,-10158,-10248,-10305,-10343,-10370,-10390,-10391,-10342,-10289,-10184,-10065,-9910,-9736,-9490, -9208,-8878,-8544,-8198,-7812,-7438,-7026,-6610,-6212,-5829,-5456,-5062,-4645,-4238,-3818,-3391,-2956,-2528,-2078,-1630, -1172,-739,-328,76,468,851,1230,1579,1938,2278,2636,3009,3398,3786,4176,4549,4932,5313,5699,6061, 6407,6722,7024,7300,7594,7867,8128,8370,8613,8852,9085,9306,9494,9658,9767,9839,9884,9881,9851,9756, 9618,9464,9288,9096,8895,8667,8402,8105,7793,7476,7117,6710,6255,5763,5240,4703,4148,3593,3005,2414, 1835,1271,717,178,-383,-943,-1516,-2085,-2661,-3224,-3808,-4384,-4981,-5531,-6047,-6534,-6990,-7419,-7823,-8202, -8537,-8834,-9103,-9385,-9660,-9906,-10138,-10327,-10489,-10632,-10730,-10795,-10816,-10761,-10661,-10530,-10389,-10225,-10006,-9775, -9520,-9252,-8983,-8712,-8426,-8109,-7751,-7376,-6975,-6576,-6148,-5706,-5237,-4781,-4324,-3883,-3457,-3030,-2614,-2201, -1802,-1421,-1041,-658,-258,143,562,973,1369,1779,2180,2588,2983,3359,3724,4072,4430,4779,5139,5507, 5871,6225,6603,6991,7386,7772,8135,8482,8801,9103,9391,9650,9863,10048,10208,10359,10496,10623,10717,10788, 10807,10828,10804,10758,10649,10483,10267,10008,9713,9404,9052,8654,8254,7826,7391,6965,6514,6036,5534,4992, 4440,3873,3285,2666,2017,1363,705,70,-549,-1159,-1771,-2362,-2924,-3465,-3986,-4510,-5025,-5563,-6090,-6597, -7074,-7543,-7980,-8416,-8810,-9151,-9446,-9681,-9887,-10075,-10241,-10371,-10463,-10522,-10570,-10605,-10618,-10604,-10551,-10442, -10297,-10122,-9911,-9666,-9373,-9035,-8688,-8318,-7958,-7589,-7209,-6817,-6421,-6014,-5619,-5211,-4797,-4357,-3898,-3449, -2987,-2524,-2084,-1631,-1191,-752,-333,56,419,794,1164,1551,1911,2267,2652,3016,3404,3809,4205,4574, 4945,5302,5661,6007,6338,6652,6959,7247,7540,7827,8138,8426,8694,8941,9194,9431,9631,9794,9921,10001, 10038,10055,10053,9999,9916,9786,9646,9503,9339,9148,8922,8661,8354,8015,7643,7247,6795,6311,5790,5274, 4718,4192,3645,3099,2518,1952,1402,844,283,-306,-914,-1533,-2146,-2753,-3352,-3944,-4531,-5111,-5649,-6140, -6599,-7034,-7464,-7867,-8258,-8612,-8952,-9276,-9589,-9902,-10184,-10409,-10601,-10751,-10858,-10953,-10985,-10974,-10918,-10814, -10706,-10564,-10414,-10243,-10037,-9820,-9574,-9305,-9039,-8737,-8387,-8017,-7611,-7196,-6774,-6339,-5893,-5445,-4989,-4565, -4138,-3723,-3318,-2912,-2481,-2069,-1654,-1249,-830,-397,43,471,900,1302,1706,2096,2495,2878,3253,3620, 3979,4342,4736,5135,5524,5926,6315,6706,7112,7508,7881,8214,8532,8838,9121,9390,9638,9858,10058,10227, 10392,10548,10688,10787,10855,10868,10852,10808,10708,10562,10361,10118,9836,9549,9241,8896,8526,8142,7735,7310, 6885,6426,5924,5393,4816,4226,3631,3019,2408,1762,1118,491,-115,-708,-1278,-1865,-2444,-3015,-3567,-4125, -4666,-5221,-5770,-6309,-6813,-7292,-7733,-8148,-8542,-8904,-9220,-9485,-9709,-9918,-10108,-10286,-10440,-10562,-10649,-10703, -10754,-10761,-10732,-10651,-10506,-10342,-10137,-9898,-9645,-9363,-9027,-8693,-8353,-8018,-7673,-7313,-6928,-6540,-6127,-5714, -5293,-4855,-4412,-3936,-3475,-3027,-2586,-2148,-1736,-1313,-914,-516,-145,225,595,976,1373,1761,2139,2522, 2916,3302,3700,4083,4456,4812,5146,5490,5840,6180,6499,6820,7140,7468,7788,8122,8433,8722,8983,9224, 9444,9645,9808,9913,9992,10028,10048,10056,10049,9980,9908,9795,9672,9519,9332,9107,8826,8492,8144,7745, 7340,6894,6409,5897,5391,4892,4388,3869,3324,2780,2215,1641,1074,496,-120,-754,-1386,-1999,-2608,-3194, -3764,-4326,-4865,-5370,-5854,-6303,-6737,-7176,-7606,-8017,-8396,-8758,-9114,-9435,-9735,-10006,-10229,-10400,-10534,-10615, -10688,-10717,-10707,-10664,-10588,-10489,-10391,-10275,-10132,-9939,-9718,-9485,-9221,-8922,-8608,-8246,-7861,-7458,-7040,-6636, -6219,-5804,-5378,-4956,-4539,-4145,-3741,-3338,-2917,-2483,-2051,-1633,-1203,-785,-348,86,500,905,1292,1672, 2051,2430,2799,3155,3529,3898,4289,4679,5097,5495,5882,6271,6645,7019,7383,7733,8040,8327,8602,8879, 9140,9381,9615,9820,10002,10174,10314,10444,10518,10550,10528,10485,10388,10271,10095,9892,9646,9380,9106,8821, 8504,8156,7768,7355,6937,6488,6019,5493,4934,4356,3759,3176,2589,1989,1380,772,182,-395,-960,-1523, -2089,-2673,-3253,-3816,-4366,-4913,-5459,-5997,-6504,-6980,-7415,-7811,-8183,-8538,-8868,-9164,-9401,-9636,-9846,-10041, -10212,-10371,-10472,-10554,-10591,-10587,-10567,-10497,-10364,-10197,-9988,-9773,-9527,-9262,-8982,-8663,-8337,-8006,-7669,-7319, -6952,-6551,-6139,-5716,-5275,-4839,-4393,-3936,-3489,-3025,-2589,-2182,-1763,-1366,-963,-568,-200,188,557,931, 1329,1735,2120,2507,2880,3251,3632,3993,4351,4703,5040,5372,5694,6042,6384,6722,7049,7389,7721,8055, 8373,8669,8934,9183,9390,9597,9772,9904,10005,10063,10126,10156,10164,10173,10133,10047,9928,9789,9621,9403, 9137,8822,8476,8088,7692,7263,6828,6354,5866,5382,4879,4379,3856,3299,2732,2143,1544,940,337,-292, -928,-1573,-2174,-2759,-3325,-3882,-4425,-4957,-5458,-5944,-6418,-6867,-7324,-7771,-8194,-8593,-8954,-9293,-9619,-9893, -10140,-10332,-10473,-10588,-10669,-10729,-10777,-10769,-10737,-10680,-10608,-10502,-10379,-10224,-10031,-9794,-9525,-9234,-8918,-8576, -8202,-7797,-7400,-6994,-6594,-6197,-5782,-5366,-4941,-4521,-4112,-3689,-3255,-2815,-2366,-1908,-1473,-1041,-613,-191, 235,641,1028,1401,1778,2160,2536,2921,3306,3678,4058,4455,4862,5265,5662,6024,6385,6744,7087,7421, 7747,8039,8322,8580,8855,9122,9364,9597,9797,9966,10114,10232,10320,10360,10343,10286,10209,10098,9966,9777, 9562,9323,9070,8790,8496,8178,7811,7408,6963,6510,6031,5512,4967,4405,3816,3230,2635,2064,1483,888, 295,-287,-864,-1431,-2022,-2612,-3210,-3802,-4380,-4932,-5471,-6007,-6525,-7008,-7449,-7861,-8238,-8579,-8920,-9218, -9517,-9776,-9991,-10209,-10404,-10576,-10707,-10798,-10831,-10842,-10800,-10745,-10633,-10472,-10286,-10062,-9827,-9586,-9317,-9034, -8719,-8394,-8047,-7692,-7316,-6921,-6494,-6048,-5595,-5142,-4692,-4236,-3778,-3331,-2891,-2455,-2048,-1643,-1231,-825, -419,-15,380,796,1190,1599,2018,2421,2810,3191,3559,3945,4309,4678,5025,5381,5725,6089,6465,6845, 7212,7568,7924,8277,8612,8942,9226,9500,9739,9943,10142,10322,10468,10594,10678,10744,10802,10840,10833,10789, 10703,10575,10408,10202,9976,9699,9354,9001,8617,8226,7817,7375,6919,6438,5946,5441,4923,4383,3806,3193, 2585,1958,1344,709,84,-557,-1174,-1778,-2351,-2917,-3472,-4023,-4554,-5077,-5584,-6082,-6571,-7049,-7523,-7966, -8366,-8730,-9052,-9365,-9650,-9878,-10069,-10209,-10318,-10433,-10511,-10567,-10601,-10585,-10545,-10482,-10389,-10272,-10103,-9893, -9652,-9363,-9070,-8763,-8418,-8058,-7678,-7298,-6922,-6541,-6147,-5756,-5349,-4916,-4500,-4070,-3648,-3209,-2754,-2313, -1865,-1425,-1007,-598,-201,202,599,974,1339,1709,2100,2488,2883,3272,3673,4055,4440,4842,5237,5610, 5970,6307,6650,6975,7304,7621,7933,8219,8502,8773,9052,9309,9530,9726,9892,10018,10126,10188,10207,10195, 10124,10037,9941,9813,9651,9460,9244,8993,8721,8422,8093,7718,7292,6839,6354,5872,5350,4807,4245,3687, 3121,2563,1991,1428,844,256,-327,-917,-1503,-2096,-2715,-3319,-3914,-4492,-5035,-5552,-6067,-6554,-7017,-7445, -7834,-8202,-8563,-8898,-9231,-9543,-9817,-10060,-10270,-10468,-10631,-10746,-10810,-10821,-10814,-10770,-10685,-10575,-10424,-10252, -10055,-9850,-9624,-9388,-9111,-8817,-8486,-8137,-7776,-7392,-7003,-6566,-6130,-5683,-5255,-4816,-4387,-3960,-3527,-3115, -2704,-2305,-1912,-1512,-1089,-681,-269,126,540,938,1347,1749,2147,2523,2882,3247,3608,3975,4340,4702, 5066,5434,5820,6204,6585,6963,7333,7674,8018,8347,8652,8935,9177,9411,9614,9817,10009,10163,10291,10400, 10465,10530,10571,10531,10473,10376,10221,10039,9811,9569,9277,8947,8592,8236,7848,7456,7034,6581,6101,5603, 5094,4557,3997,3414,2801,2162,1553,953,333,-273,-874,-1473,-2056,-2619,-3147,-3693,-4249,-4796,-5331,-5837, -6334,-6823,-7285,-7749,-8163,-8533,-8860,-9162,-9430,-9686,-9894,-10064,-10221,-10341,-10439,-10528,-10590,-10616,-10600,-10538, -10452,-10339,-10178,-9984,-9744,-9471,-9180,-8874,-8552,-8225,-7871,-7500,-7132,-6764,-6386,-5991,-5583,-5158,-4717,-4274, -3837,-3396,-2953,-2499,-2060,-1640,-1222,-822,-428,-33,354,736,1118,1487,1863,2258,2658,3052,3446,3832, 4211,4587,4958,5326,5677,6019,6341,6667,7004,7321,7647,7962,8261,8557,8840,9098,9355,9558,9732,9868, 9977,10056,10120,10120,10097,10037,9960,9868,9765,9620,9433,9208,8957,8680,8367,8020,7619,7192,6733,6245, 5757,5262,4729,4194,3655,3112,2574,2024,1463,892,295,-300,-905,-1490,-2091,-2698,-3292,-3864,-4413,-4931, -5415,-5895,-6361,-6791,-7223,-7599,-7968,-8333,-8690,-9016,-9324,-9593,-9822,-10018,-10184,-10324,-10409,-10450,-10448,-10411, -10362,-10288,-10182,-10048,-9880,-9702,-9499,-9277,-9041,-8765,-8446,-8100,-7749,-7365,-6979,-6574,-6152,-5731,-5292,-4871, -4460,-4049,-3634,-3222,-2812,-2417,-2004,-1602,-1186,-770,-340,72,475,860,1265,1650,2031,2408,2772,3130, 3477,3837,4204,4581,4954,5322,5701,6075,6462,6832,7200,7543,7864,8173,8469,8750,9013,9240,9449,9665, 9856,10034,10192,10313,10398,10457,10481,10477,10420,10314,10171,9985,9773,9532,9259,8958,8627,8281,7903,7529, 7117,6685,6206,5700,5170,4631,4058,3480,2878,2252,1624,1006,418,-190,-771,-1366,-1955,-2528,-3094,-3653, -4212,-4781,-5347,-5880,-6392,-6891,-7361,-7816,-8232,-8625,-8980,-9273,-9548,-9801,-10043,-10261,-10433,-10579,-10712,-10805, -10878,-10928,-10928,-10890,-10800,-10667,-10516,-10324,-10101,-9843,-9547,-9254,-8949,-8618,-8288,-7934,-7561,-7175,-6779,-6379, -5968,-5517,-5058,-4611,-4137,-3689,-3236,-2804,-2363,-1940,-1506,-1109,-714,-324,67,465,856,1252,1642,2026, 2436,2843,3231,3614,3994,4349,4717,5065,5423,5767,6096,6436,6757,7095,7442,7765,8080,8392,8673,8941, 9196,9405,9595,9742,9859,9946,10029,10070,10085,10065,10028,9960,9870,9755,9602,9408,9167,8883,8584,8251, 7863,7447,7001,6537,6066,5580,5090,4586,4060,3517,2971,2425,1868,1270,666,53,-573,-1183,-1776,-2381, -2965,-3559,-4110,-4633,-5139,-5620,-6088,-6557,-6996,-7427,-7843,-8216,-8597,-8963,-9300,-9590,-9842,-10056,-10247,-10384, -10492,-10562,-10591,-10579,-10551,-10495,-10434,-10341,-10215,-10057,-9869,-9658,-9429,-9163,-8869,-8525,-8150,-7775,-7385,-6984, -6574,-6159,-5738,-5317,-4898,-4500,-4082,-3658,-3232,-2796,-2368,-1945,-1511,-1077,-644,-207,214,616,1005,1390, 1780,2169,2531,2908,3268,3655,4027,4419,4817,5211,5585,5982,6373,6741,7119,7462,7784,8088,8392,8691, 8980,9244,9491,9719,9937,10143,10331,10478,10601,10666,10699,10688,10648,10587,10460,10293,10096,9886,9657,9392, 9085,8777,8432,8053,7655,7236,6777,6277,5725,5184,4614,4024,3442,2839,2214,1616,1010,420,-158,-753, -1349,-1942,-2533,-3122,-3706,-4296,-4867,-5439,-5979,-6480,-6971,-7413,-7846,-8250,-8621,-8954,-9257,-9534,-9798,-10045, -10279,-10483,-10636,-10756,-10857,-10927,-10946,-10921,-10852,-10755,-10597,-10425,-10231,-10015,-9759,-9494,-9202,-8922,-8606,-8273, -7932,-7547,-7147,-6749,-6326,-5901,-5459,-4991,-4533,-4089,-3648,-3221,-2796,-2383,-1963,-1548,-1155,-759,-366,39, 448,852,1256,1667,2064,2459,2854,3244,3615,3979,4320,4679,5045,5402,5760,6115,6466,6830,7183,7543, 7891,8220,8518,8809,9072,9314,9512,9700,9857,9965,10074,10166,10227,10273,10271,10247,10203,10111,9995,9834, 9618,9366,9076,8741,8406,8022,7614,7190,6742,6280,5820,5335,4840,4321,3771,3209,2647,2055,1449,821, 193,-432,-1034,-1643,-2216,-2798,-3350,-3900,-4411,-4903,-5401,-5887,-6365,-6835,-7289,-7720,-8123,-8508,-8860,-9197, -9478,-9714,-9897,-10060,-10202,-10305,-10386,-10429,-10441,-10427,-10408,-10360,-10284,-10153,-10001,-9803,-9587,-9329,-9054,-8731, -8400,-8031,-7652,-7284,-6908,-6510,-6111,-5715,-5316,-4909,-4506,-4089,-3663,-3224,-2788,-2342,-1922,-1490,-1065,-646, -245,151,547,920,1286,1657,2032,2416,2779,3166,3546,3936,4337,4729,5115,5491,5855,6216,6579,6916, 7238,7555,7859,8151,8451,8742,9030,9282,9520,9731,9933,10099,10236,10320,10367,10368,10343,10295,10204,10091, 9929,9745,9556,9337,9095,8804,8483,8132,7734,7325,6882,6387,5869,5324,4761,4224,3666,3088,2515,1942, 1352,780,199,-377,-976,-1587,-2201,-2802,-3398,-3983,-4564,-5114,-5656,-6165,-6641,-7072,-7499,-7896,-8286,-8646, -8975,-9289,-9582,-9857,-10113,-10338,-10532,-10667,-10760,-10831,-10863,-10849,-10794,-10697,-10575,-10421,-10246,-10068,-9865,-9633, -9365,-9092,-8795,-8493,-8147,-7775,-7372,-6960,-6531,-6096,-5665,-5229,-4772,-4341,-3903,-3489,-3082,-2670,-2265,-1856, -1442,-1029,-632,-226,190,601,1019,1413,1795,2177,2549,2928,3301,3645,3992,4344,4696,5067,5443,5815, 6183,6553,6908,7272,7613,7947,8247,8521,8775,9019,9246,9443,9618,9772,9909,10029,10133,10220,10260,10254, 10222,10138,10027,9881,9684,9449,9174,8867,8546,8206,7853,7463,7046,6621,6180,5717,5230,4704,4167,3594, 2999,2417,1819,1210,594,-24,-610,-1182,-1745,-2302,-2855,-3396,-3942,-4475,-4984,-5488,-6002,-6499,-6977,-7418, -7830,-8214,-8559,-8882,-9172,-9419,-9624,-9807,-9964,-10116,-10226,-10315,-10374,-10405,-10398,-10368,-10309,-10213,-10070,-9869, -9645,-9396,-9131,-8829,-8511,-8177,-7826,-7465,-7119,-6758,-6376,-5982,-5571,-5160,-4747,-4313,-3878,-3437,-2980,-2523, -2095,-1665,-1262,-845,-440,-46,334,717,1088,1470,1846,2250,2640,3023,3415,3812,4203,4586,4967,5333, 5693,6030,6388,6724,7073,7390,7717,8021,8347,8649,8957,9233,9486,9705,9904,10055,10209,10307,10362,10383, 10379,10357,10310,10225,10125,9980,9802,9612,9391,9129,8826,8466,8067,7653,7212,6748,6257,5741,5211,4663, 4135,3595,3046,2471,1900,1300,706,105,-501,-1127,-1760,-2390,-2993,-3583,-4146,-4694,-5230,-5744,-6226,-6677, -7112,-7531,-7944,-8349,-8735,-9085,-9400,-9703,-9979,-10213,-10418,-10575,-10685,-10751,-10788,-10797,-10771,-10710,-10614,-10496, -10361,-10214,-10025,-9824,-9578,-9296,-8990,-8672,-8327,-7947,-7542,-7129,-6690,-6258,-5829,-5406,-4975,-4542,-4108,-3688, -3269,-2849,-2419,-1996,-1556,-1125,-691,-274,147,560,976,1385,1769,2136,2510,2871,3243,3601,3977,4333, 4708,5075,5461,5850,6226,6588,6958,7298,7648,7971,8281,8570,8831,9084,9324,9567,9788,9971,10132,10291, 10414,10509,10570,10597,10574,10503,10390,10258,10090,9879,9644,9380,9082,8784,8448,8095,7710,7292,6847,6392, 5894,5385,4829,4253,3671,3071,2476,1888,1293,691,91,-493,-1059,-1637,-2209,-2777,-3356,-3925,-4480,-5027, -5548,-6061,-6567,-7032,-7459,-7854,-8218,-8566,-8875,-9169,-9433,-9664,-9857,-10047,-10218,-10356,-10462,-10522,-10544,-10529, -10477,-10399,-10278,-10127,-9924,-9693,-9447,-9192,-8918,-8616,-8308,-7978,-7628,-7277,-6917,-6525,-6119,-5688,-5260,-4831, -4397,-3946,-3511,-3074,-2629,-2215,-1811,-1413,-1027,-620,-226,158,546,937,1328,1728,2126,2520,2918,3288, 3670,4048,4420,4791,5134,5478,5824,6170,6528,6892,7232,7568,7882,8200,8518,8807,9071,9302,9501,9666, 9818,9943,10038,10097,10118,10133,10120,10087,10015,9905,9766,9582,9366,9121,8839,8509,8141,7723,7312,6866, 6413,5945,5451,4943,4416,3884,3352,2795,2212,1613,1008,398,-217,-838,-1451,-2063,-2674,-3258,-3824,-4361, -4888,-5410,-5918,-6389,-6852,-7304,-7734,-8153,-8556,-8933,-9296,-9592,-9868,-10127,-10330,-10515,-10637,-10728,-10789,-10821, -10824,-10814,-10757,-10678,-10575,-10430,-10280,-10080,-9859,-9593,-9293,-8971,-8632,-8269,-7895,-7494,-7078,-6666,-6257,-5833, -5429,-5002,-4580,-4152,-3725,-3303,-2882,-2449,-2011,-1567,-1141,-729,-311,82,486,880,1261,1632,1994,2352, 2732,3100,3473,3853,4231,4600,4984,5358,5753,6126,6475,6815,7156,7476,7802,8110,8396,8674,8938,9198, 9450,9675,9885,10041,10185,10301,10386,10423,10433,10389,10314,10198,10055,9910,9714,9486,9230,8957,8649,8329, 7957,7567,7119,6657,6168,5667,5139,4588,4006,3425,2861,2278,1717,1131,548,-48,-636,-1217,-1785,-2372, -2956,-3533,-4119,-4665,-5188,-5707,-6199,-6673,-7125,-7522,-7900,-8255,-8584,-8912,-9201,-9466,-9698,-9904,-10084,-10241, -10373,-10470,-10498,-10503,-10465,-10392,-10296,-10167,-10001,-9805,-9580,-9342,-9094,-8825,-8529,-8204,-7866,-7519,-7151,-6760, -6364,-5938,-5500,-5060,-4626,-4196,-3765,-3328,-2898,-2476,-2061,-1658,-1256,-854,-451,-38,363,756,1159,1567, 1965,2367,2752,3137,3507,3875,4245,4614,4983,5339,5681,6041,6396,6764,7122,7474,7805,8122,8427,8723, 9001,9237,9453,9637,9810,9959,10067,10163,10236,10257,10261,10253,10206,10125,9991,9818,9623,9376,9112,8809, 8475,8094,7685,7264,6843,6393,5916,5428,4918,4390,3845,3286,2726,2136,1518,907,290,-308,-912,-1524, -2122,-2707,-3274,-3818,-4347,-4863,-5378,-5902,-6384,-6844,-7291,-7730,-8136,-8531,-8905,-9231,-9520,-9768,-10007,-10201, -10356,-10478,-10568,-10620,-10667,-10676,-10663,-10614,-10527,-10410,-10263,-10097,-9896,-9653,-9373,-9069,-8742,-8396,-8044,-7670, -7296,-6889,-6479,-6084,-5689,-5273,-4857,-4430,-4002,-3572,-3138,-2719,-2285,-1844,-1419,-998,-593,-203,190,572, 951,1336,1707,2066,2430,2799,3194,3571,3956,4335,4707,5087,5467,5827,6190,6525,6861,7190,7517,7834, 8152,8432,8710,8983,9241,9489,9707,9885,10037,10144,10245,10301,10325,10300,10247,10149,10039,9893,9731,9531, 9292,9014,8740,8420,8067,7674,7235,6783,6283,5781,5262,4722,4164,3589,2996,2429,1852,1267,682,85, -526,-1127,-1733,-2328,-2920,-3522,-4111,-4682,-5236,-5755,-6263,-6745,-7215,-7651,-8055,-8425,-8789,-9127,-9456,-9760, -10036,-10269,-10474,-10643,-10790,-10907,-10983,-11007,-10978,-10923,-10849,-10742,-10613,-10434,-10234,-10010,-9770,-9520,-9248,-8930, -8594,-8236,-7857,-7476,-7069,-6647,-6207,-5750,-5295,-4854,-4419,-3993,-3544,-3108,-2678,-2246,-1837,-1418,-985,-561, -130,294,707,1118,1528,1947,2355,2742,3119,3494,3864,4235,4618,4997,5368,5733,6095,6480,6855,7219, 7572,7901,8218,8528,8811,9079,9320,9525,9714,9889,10034,10173,10273,10344,10389,10398,10380,10351,10256,10122, 9944,9736,9502,9231,8931,8600,8224,7839,7428,7013,6591,6136,5642,5143,4612,4078,3518,2936,2344,1727, 1115,518,-76,-657,-1245,-1838,-2402,-2953,-3488,-4010,-4530,-5054,-5563,-6066,-6520,-6961,-7399,-7809,-8197,-8551, -8860,-9140,-9373,-9592,-9781,-9937,-10065,-10154,-10215,-10262,-10289,-10269,-10221,-10132,-10010,-9856,-9676,-9468,-9219,-8932, -8620,-8302,-7966,-7620,-7261,-6893,-6508,-6112,-5720,-5329,-4923,-4501,-4068,-3634,-3207,-2774,-2338,-1916,-1489,-1061, -652,-256,111,496,878,1257,1637,2024,2389,2768,3142,3542,3942,4316,4697,5071,5441,5813,6171,6514, 6858,7183,7512,7844,8179,8492,8785,9064,9340,9588,9821,10031,10197,10328,10424,10487,10530,10539,10501,10429, 10340,10218,10085,9904,9703,9462,9173,8860,8517,8142,7737,7276,6790,6287,5768,5244,4714,4148,3581,2999, 2419,1850,1261,662,52,-569,-1191,-1800,-2421,-3009,-3618,-4208,-4777,-5316,-5816,-6312,-6796,-7246,-7682,-8091, -8469,-8834,-9184,-9521,-9830,-10103,-10337,-10536,-10699,-10831,-10925,-10980,-10991,-10955,-10891,-10814,-10712,-10573,-10407,-10209, -10000,-9766,-9504,-9227,-8912,-8554,-8184,-7798,-7396,-6989,-6562,-6118,-5673,-5237,-4809,-4395,-3962,-3547,-3107,-2696, -2272,-1855,-1430,-1012,-593,-160,252,662,1045,1444,1831,2218,2589,2937,3294,3666,4020,4395,4775,5145, 5509,5876,6244,6616,6967,7298,7617,7912,8192,8471,8722,8958,9159,9350,9532,9698,9842,9963,10025,10074, 10088,10068,10015,9918,9772,9585,9362,9128,8859,8575,8255,7912,7543,7153,6747,6322,5869,5373,4857,4323, 3775,3221,2625,2035,1437,835,254,-315,-879,-1452,-2026,-2587,-3124,-3660,-4189,-4721,-5249,-5766,-6259,-6733, -7163,-7577,-7980,-8342,-8660,-8948,-9203,-9431,-9637,-9818,-9985,-10107,-10202,-10272,-10313,-10339,-10322,-10254,-10148,-10008, -9827,-9623,-9394,-9140,-8850,-8539,-8209,-7895,-7554,-7209,-6840,-6461,-6067,-5661,-5263,-4841,-4398,-3956,-3507,-3062, -2645,-2213,-1798,-1384,-972,-572,-204,176,545,935,1322,1709,2091,2482,2862,3252,3645,4042,4415,4770, 5133,5482,5841,6193,6529,6860,7199,7534,7870,8206,8526,8829,9103,9359,9608,9821,10006,10149,10257,10328, 10376,10409,10418,10383,10316,10228,10109,9980,9808,9582,9331,9029,8683,8322,7930,7495,7029,6534,6046,5531, 5016,4496,3953,3393,2822,2241,1661,1068,451,-179,-812,-1445,-2064,-2672,-3262,-3843,-4411,-4955,-5460,-5946, -6408,-6873,-7335,-7760,-8173,-8569,-8926,-9275,-9608,-9905,-10159,-10356,-10526,-10659,-10752,-10811,-10842,-10830,-10783,-10709, -10621,-10521,-10389,-10206,-10010,-9773,-9527,-9238,-8921,-8579,-8198,-7790,-7387,-6962,-6548,-6125,-5687,-5257,-4828,-4396, -3981,-3555,-3127,-2692,-2244,-1807,-1373,-942,-502,-78,345,748,1151,1530,1904,2286,2659,3021,3386,3742, 4116,4502,4886,5272,5653,6022,6395,6752,7105,7441,7759,8052,8344,8617,8891,9145,9386,9600,9798,9986, 10162,10305,10410,10472,10491,10476,10427,10339,10220,10061,9860,9631,9382,9136,8849,8532,8187,7817,7418,6995, 6539,6046,5531,4975,4411,3844,3265,2676,2077,1486,899,314,-247,-808,-1384,-1963,-2549,-3128,-3685,-4246, -4793,-5344,-5860,-6351,-6811,-7244,-7643,-8016,-8373,-8685,-8970,-9230,-9472,-9713,-9914,-10098,-10245,-10353,-10422,-10472, -10485,-10454,-10368,-10247,-10089,-9901,-9699,-9480,-9228,-8966,-8677,-8372,-8066,-7749,-7405,-7031,-6647,-6241,-5829,-5403, -4973,-4527,-4075,-3632,-3203,-2789,-2381,-1974,-1574,-1171,-780,-387,-2,386,788,1204,1604,2006,2398,2788, 3179,3560,3930,4300,4648,4990,5349,5712,6068,6427,6771,7127,7479,7827,8167,8491,8783,9039,9268,9491, 9685,9843,9966,10065,10136,10190,10230,10248,10224,10167,10076,9958,9800,9611,9367,9070,8742,8377,7992,7590, 7153,6697,6226,5733,5247,4747,4225,3688,3126,2531,1936,1319,707,71,-570,-1211,-1839,-2434,-3017,-3596, -4150,-4685,-5221,-5720,-6210,-6683,-7172,-7651,-8096,-8518,-8914,-9287,-9620,-9933,-10204,-10434,-10606,-10743,-10853,-10940, -11000,-11029,-11031,-10989,-10943,-10864,-10765,-10636,-10446,-10220,-9973,-9687,-9382,-9041,-8672,-8289,-7876,-7473,-7075,-6674, -6269,-5844,-5414,-4993,-4567,-4126,-3691,-3237,-2784,-2332,-1880,-1452,-1020,-588,-172,230,614,987,1366,1737, 2113,2502,2874,3258,3641,4019,4422,4815,5205,5579,5936,6292,6641,6974,7315,7621,7918,8214,8513,8800, 9087,9337,9574,9788,9977,10147,10281,10369,10419,10409,10374,10321,10230,10111,9966,9788,9582,9364,9121,8855, 8541,8183,7796,7380,6934,6459,5936,5411,4846,4285,3727,3180,2619,2046,1463,900,323,-249,-828,-1418, -2022,-2626,-3233,-3795,-4356,-4909,-5439,-5932,-6411,-6839,-7242,-7626,-7995,-8353,-8683,-8984,-9261,-9528,-9775,-10004, -10181,-10323,-10416,-10459,-10476,-10460,-10410,-10314,-10169,-10012,-9839,-9643,-9437,-9207,-8953,-8679,-8378,-8061,-7724,-7366, -6968,-6547,-6120,-5697,-5256,-4819,-4384,-3946,-3513,-3098,-2694,-2303,-1895,-1479,-1069,-661,-247,156,574,986, 1405,1820,2210,2589,2973,3338,3716,4073,4422,4783,5133,5496,5877,6257,6626,6987,7342,7695,8031,8357, 8646,8909,9149,9357,9542,9738,9893,10023,10129,10227,10293,10352,10362,10346,10270,10151,9998,9817,9590,9323, 9011,8661,8305,7922,7535,7132,6694,6238,5760,5269,4774,4239,3666,3079,2469,1851,1224,598,-17,-642, -1261,-1848,-2414,-2968,-3517,-4075,-4612,-5146,-5666,-6169,-6663,-7164,-7636,-8095,-8502,-8877,-9218,-9526,-9788,-10032, -10227,-10395,-10526,-10634,-10736,-10812,-10853,-10864,-10839,-10785,-10706,-10581,-10423,-10205,-9951,-9676,-9371,-9059,-8727,-8367, -7994,-7622,-7242,-6860,-6475,-6079,-5667,-5234,-4799,-4361,-3922,-3467,-3013,-2557,-2118,-1687,-1272,-873,-472,-75, 301,678,1037,1407,1797,2181,2570,2962,3356,3736,4120,4501,4890,5259,5602,5953,6291,6628,6965,7289, 7620,7934,8247,8563,8862,9161,9413,9633,9831,10004,10132,10239,10311,10330,10321,10276,10233,10166,10063,9931, 9767,9569,9350,9090,8794,8460,8070,7639,7194,6729,6242,5725,5197,4662,4123,3588,3060,2504,1942,1353, 760,165,-432,-1047,-1664,-2286,-2896,-3488,-4052,-4581,-5105,-5611,-6086,-6535,-6962,-7362,-7765,-8146,-8534,-8889, -9210,-9506,-9772,-10005,-10224,-10383,-10491,-10558,-10578,-10575,-10549,-10490,-10404,-10290,-10141,-9990,-9823,-9627,-9399,-9144, -8849,-8524,-8174,-7816,-7428,-7012,-6577,-6148,-5719,-5307,-4876,-4460,-4040,-3614,-3201,-2793,-2376,-1961,-1523,-1077, -649,-217,203,621,1038,1448,1849,2230,2592,2956,3339,3700,4069,4438,4811,5191,5575,5962,6361,6730, 7089,7425,7750,8071,8363,8632,8888,9115,9328,9530,9723,9909,10056,10180,10267,10341,10383,10373,10317,10216, 10069,9891,9683,9453,9184,8873,8548,8210,7864,7487,7094,6666,6193,5706,5183,4653,4093,3501,2891,2280, 1669,1062,463,-135,-721,-1305,-1886,-2434,-2980,-3544,-4116,-4680,-5223,-5767,-6280,-6776,-7256,-7707,-8131,-8511, -8839,-9145,-9421,-9676,-9908,-10112,-10281,-10438,-10561,-10670,-10754,-10798,-10788,-10739,-10653,-10533,-10386,-10194,-9963,-9690, -9398,-9111,-8797,-8480,-8152,-7782,-7419,-7048,-6669,-6272,-5848,-5417,-4974,-4514,-4064,-3616,-3165,-2717,-2272,-1846, -1444,-1047,-661,-274,120,516,901,1291,1664,2072,2473,2878,3273,3663,4041,4414,4779,5149,5506,5849, 6194,6538,6889,7250,7593,7948,8288,8611,8925,9229,9503,9750,9946,10110,10266,10385,10476,10551,10582,10587, 10569,10530,10483,10385,10254,10079,9861,9610,9326,8991,8623,8212,7768,7313,6862,6390,5900,5380,4865,4339, 3809,3258,2697,2093,1476,843,217,-400,-1027,-1648,-2261,-2855,-3424,-3970,-4485,-4981,-5485,-5975,-6439,-6883, -7313,-7750,-8174,-8561,-8931,-9256,-9533,-9779,-10000,-10178,-10322,-10405,-10454,-10481,-10486,-10478,-10448,-10375,-10288,-10157, -10007,-9832,-9634,-9380,-9094,-8766,-8434,-8078,-7692,-7307,-6896,-6473,-6061,-5663,-5271,-4866,-4441,-4030,-3609,-3180, -2750,-2327,-1888,-1450,-1003,-575,-160,242,640,1026,1416,1776,2146,2499,2862,3232,3613,3994,4381,4751, 5129,5509,5889,6253,6606,6938,7248,7541,7840,8120,8383,8630,8869,9102,9321,9527,9706,9859,9964,10039, 10085,10085,10057,9969,9843,9692,9511,9313,9099,8856,8579,8266,7939,7600,7227,6814,6364,5877,5363,4828, 4277,3723,3136,2541,1953,1374,806,243,-329,-902,-1479,-2058,-2631,-3197,-3771,-4343,-4924,-5471,-5983,-6480, -6944,-7382,-7799,-8189,-8541,-8851,-9135,-9416,-9686,-9925,-10142,-10329,-10484,-10617,-10710,-10776,-10795,-10753,-10668,-10556, -10420,-10260,-10050,-9823,-9567,-9295,-9015,-8733,-8436,-8112,-7750,-7375,-6984,-6589,-6166,-5730,-5277,-4827,-4373,-3930, -3499,-3066,-2640,-2213,-1811,-1413,-1024,-633,-231,169,581,991,1386,1793,2190,2601,2995,3378,3752,4110, 4474,4836,5196,5562,5924,6273,6645,7016,7392,7764,8110,8445,8758,9054,9336,9587,9797,9979,10136,10277, 10402,10506,10582,10629,10634,10633,10589,10524,10410,10236,10021,9765,9478,9165,8815,8420,8018,7584,7142,6697, 6231,5747,5239,4699,4140,3586,3003,2400,1772,1133,492,-134,-746,-1356,-1963,-2549,-3117,-3660,-4184,-4707, -5216,-5730,-6238,-6725,-7183,-7632,-8054,-8471,-8848,-9177,-9471,-9710,-9918,-10104,-10263,-10383,-10473,-10521,-10557,-10570, -10564,-10530,-10461,-10344,-10198,-10016,-9803,-9565,-9277,-8950,-8607,-8248,-7886,-7512,-7128,-6737,-6331,-5922,-5519,-5113, -4701,-4269,-3823,-3383,-2933,-2481,-2046,-1603,-1170,-738,-315,76,452,835,1211,1595,1961,2319,2700,3065, 3448,3846,4243,4611,4988,5350,5717,6067,6407,6736,7054,7354,7654,7946,8248,8530,8797,9044,9286,9516, 9711,9873,10000,10089,10134,10157,10150,10102,10019,9888,9746,9592,9412,9207,8966,8700,8389,8046,7673,7279, 6832,6355,5844,5327,4781,4247,3690,3134,2549,1977,1416,849,279,-308,-908,-1520,-2121,-2718,-3309,-3893, -4472,-5044,-5585,-6081,-6549,-6996,-7427,-7831,-8222,-8575,-8913,-9233,-9532,-9830,-10093,-10311,-10497,-10646,-10756,-10847, -10880,-10877,-10829,-10731,-10622,-10485,-10324,-10150,-9935,-9708,-9459,-9183,-8906,-8600,-8254,-7892,-7493,-7083,-6669,-6240, -5799,-5351,-4900,-4471,-4041,-3621,-3208,-2794,-2368,-1955,-1539,-1139,-727,-301,123,545,968,1371,1774,2165, 2561,2945,3322,3690,4051,4416,4798,5183,5559,5950,6326,6702,7091,7474,7839,8166,8476,8777,9054,9316, 9555,9770,9958,10118,10263,10401,10520,10599,10654,10658,10627,10574,10469,10325,10128,9886,9610,9319,9003,8656, 8283,7886,7474,7039,6605,6140,5642,5113,4549,3970,3387,2783,2175,1545,914,295,-312,-909,-1482,-2062, -2639,-3205,-3748,-4294,-4823,-5362,-5888,-6408,-6895,-7357,-7787,-8197,-8579,-8930,-9242,-9506,-9729,-9934,-10112,-10274, -10412,-10518,-10590,-10627,-10657,-10648,-10604,-10515,-10370,-10207,-10002,-9761,-9506,-9222,-8890,-8556,-8209,-7868,-7513,-7146, -6759,-6366,-5953,-5541,-5123,-4694,-4257,-3792,-3337,-2897,-2456,-2023,-1603,-1183,-779,-381,-1,372,744,1127, 1520,1904,2283,2666,3056,3438,3828,4216,4588,4951,5292,5643,5993,6335,6657,6979,7298,7618,7932,8249, 8550,8831,9087,9321,9535,9731,9883,9986,10065,10101,10115,10115,10089,10014,9925,9797,9658,9490,9288,9051, 8763,8432,8076,7678,7266,6819,6334,5823,5309,4797,4281,3751,3197,2645,2072,1496,928,346,-262,-886, -1512,-2119,-2722,-3307,-3878,-4439,-4980,-5491,-5979,-6431,-6867,-7307,-7726,-8127,-8498,-8850,-9193,-9502,-9793,-10053, -10268,-10435,-10567,-10651,-10721,-10748,-10728,-10686,-10604,-10499,-10387,-10251,-10096,-9897,-9668,-9424,-9153,-8848,-8531,-8174, -7788,-7388,-6970,-6562,-6142,-5722,-5288,-4860,-4436,-4035,-3623,-3212,-2792,-2357,-1927,-1508,-1083,-668,-236,196, 609,1017,1409,1794,2176,2555,2928,3290,3660,4033,4417,4802,5204,5596,5976,6357,6729,7098,7458,7803, 8109,8397,8670,8944,9196,9428,9651,9848,10019,10176,10303,10422,10486,10512,10485,10438,10340,10222,10043,9840, 9595,9325,9041,8742,8418,8058,7662,7248,6822,6368,5895,5374,4821,4248,3656,3074,2487,1885,1275,670, 74,-506,-1075,-1643,-2209,-2792,-3363,-3920,-4464,-5003,-5540,-6069,-6567,-7039,-7476,-7873,-8244,-8598,-8925,-9218, -9456,-9687,-9892,-10075,-10235,-10380,-10475,-10550,-10579,-10570,-10544,-10472,-10343,-10181,-9974,-9756,-9514,-9245,-8960,-8641, -8311,-7977,-7632,-7280,-6910,-6510,-6099,-5677,-5241,-4808,-4370,-3917,-3470,-3011,-2573,-2160,-1741,-1336,-928,-531, -156,234,607,984,1378,1782,2168,2558,2932,3310,3693,4061,4426,4784,5130,5468,5797,6146,6490,6825, 7154,7488,7816,8145,8457,8750,9015,9261,9470,9672,9845,9973,10073,10129,10186,10204,10204,10198,10145,10049, 9922,9773,9597,9372,9103,8788,8443,8055,7655,7221,6782,6304,5810,5315,4803,4295,3765,3207,2636,2051, 1452,853,252,-369,-1001,-1638,-2242,-2826,-3397,-3953,-4498,-5028,-5531,-6019,-6491,-6935,-7385,-7822,-8237,-8625, -8982,-9315,-9634,-9902,-10151,-10340,-10480,-10596,-10676,-10732,-10771,-10759,-10719,-10654,-10572,-10458,-10324,-10162,-9967,-9726, -9456,-9165,-8850,-8506,-8133,-7734,-7334,-6930,-6523,-6120,-5704,-5283,-4858,-4435,-4024,-3601,-3169,-2734,-2289,-1836, -1402,-972,-547,-130,296,703,1090,1471,1850,2233,2607,2989,3374,3746,4125,4517,4915,5313,5705,6068, 6432,6793,7136,7471,7796,8090,8374,8630,8902,9163,9397,9624,9820,9986,10127,10241,10325,10366,10354,10298, 10222,10112,9978,9790,9574,9333,9076,8789,8490,8166,7796,7394,6953,6500,6022,5508,4968,4410,3826,3242, 2647,2073,1490,894,301,-283,-860,-1430,-2018,-2605,-3195,-3781,-4352,-4901,-5437,-5967,-6478,-6964,-7402,-7818, -8197,-8541,-8878,-9180,-9474,-9732,-9945,-10158,-10348,-10514,-10639,-10729,-10765,-10777,-10737,-10680,-10574,-10417,-10232,-10015, -9781,-9541,-9271,-8985,-8673,-8347,-8003,-7647,-7274,-6884,-6465,-6025,-5580,-5130,-4687,-4234,-3780,-3334,-2896,-2460, -2051,-1645,-1232,-827,-423,-21,369,782,1177,1581,1997,2399,2787,3169,3539,3924,4293,4661,5011,5368, 5713,6074,6443,6816,7179,7528,7879,8225,8556,8877,9159,9427,9664,9866,10061,10233,10374,10489,10566,10622, 10672,10696,10679,10629,10535,10401,10231,10019,9791,9509,9165,8812,8427,8030,7614,7167,6708,6224,5726,5218, 4700,4158,3584,2977,2373,1754,1141,515,-106,-741,-1356,-1957,-2530,-3094,-3649,-4193,-4721,-5237,-5736,-6227, -6708,-7174,-7636,-8069,-8460,-8819,-9135,-9441,-9719,-9942,-10129,-10264,-10370,-10475,-10544,-10592,-10615,-10588,-10540,-10469, -10365,-10239,-10065,-9852,-9608,-9320,-9022,-8710,-8362,-8000,-7618,-7235,-6853,-6465,-6067,-5674,-5263,-4831,-4414,-3986, -3563,-3125,-2674,-2235,-1789,-1351,-933,-522,-124,278,676,1051,1422,1793,2182,2568,2959,3343,3744,4124, 4509,4908,5301,5672,6034,6373,6716,7041,7370,7685,7995,8279,8559,8825,9098,9348,9565,9758,9920,10045, 10150,10210,10228,10219,10145,10058,9958,9826,9658,9462,9239,8987,8709,8406,8073,7697,7273,6822,6338,5855, 5335,4792,4232,3673,3103,2541,1970,1403,818,231,-350,-940,-1525,-2114,-2727,-3326,-3916,-4490,-5033,-5549, -6061,-6547,-7010,-7439,-7828,-8197,-8555,-8887,-9214,-9520,-9789,-10028,-10234,-10428,-10586,-10697,-10762,-10774,-10767,-10722, -10638,-10527,-10375,-10202,-10003,-9793,-9562,-9323,-9043,-8746,-8415,-8067,-7705,-7322,-6932,-6499,-6065,-5620,-5190,-4750, -4320,-3891,-3457,-3043,-2629,-2228,-1833,-1431,-1008,-599,-190,205,616,1017,1423,1826,2224,2603,2964,3330, 3693,4060,4426,4788,5151,5518,5898,6277,6653,7029,7392,7731,8071,8395,8697,8976,9214,9446,9645,9840, 10025,10173,10293,10394,10452,10507,10538,10495,10432,10331,10172,9987,9756,9509,9214,8881,8522,8161,7769,7369, 6941,6484,6004,5502,4990,4454,3893,3310,2699,2065,1456,855,237,-367,-968,-1567,-2151,-2714,-3244,-3789, -4342,-4884,-5414,-5916,-6408,-6893,-7351,-7807,-8219,-8585,-8911,-9210,-9476,-9729,-9935,-10103,-10256,-10371,-10463,-10544, -10599,-10618,-10598,-10532,-10442,-10323,-10160,-9964,-9724,-9450,-9157,-8849,-8526,-8194,-7838,-7463,-7093,-6720,-6339,-5941, -5533,-5108,-4669,-4225,-3790,-3348,-2908,-2454,-2016,-1595,-1175,-773,-378,17,405,787,1170,1541,1917,2311, 2709,3104,3496,3882,4262,4638,5011,5381,5732,6077,6401,6727,7065,7381,7705,8017,8315,8608,8888,9143, 9397,9599,9772,9907,10015,10094,10153,10154,10129,10069,9987,9892,9783,9634,9444,9214,8961,8681,8364,8016, 7614,7188,6727,6239,5749,5252,4717,4180,3637,3091,2549,1996,1432,859,263,-330,-933,-1520,-2120,-2725, -3320,-3891,-4440,-4960,-5447,-5928,-6395,-6827,-7259,-7635,-8005,-8368,-8722,-9046,-9351,-9618,-9848,-10043,-10209,-10348, -10433,-10475,-10475,-10438,-10389,-10313,-10206,-10070,-9901,-9720,-9516,-9292,-9053,-8777,-8456,-8113,-7761,-7378,-6992,-6587, -6166,-5745,-5304,-4881,-4471,-4058,-3640,-3227,-2815,-2418,-2005,-1603,-1186,-769,-340,69,474,860,1265,1652, 2034,2413,2779,3139,3489,3849,4217,4594,4965,5334,5712,6086,6471,6839,7205,7549,7869,8178,8474,8755, 9017,9243,9451,9666,9853,10028,10183,10301,10383,10440,10461,10454,10397,10291,10148,9963,9750,9507,9233,8932, 8600,8252,7873,7496,7083,6649,6170,5665,5137,4597,4026,3450,2849,2225,1597,981,393,-212,-795,-1390, -1978,-2551,-3116,-3674,-4231,-4796,-5360,-5889,-6399,-6895,-7364,-7817,-8231,-8623,-8977,-9270,-9545,-9797,-10037,-10253, -10423,-10566,-10696,-10787,-10858,-10905,-10903,-10864,-10773,-10640,-10490,-10298,-10074,-9816,-9521,-9228,-8921,-8590,-8259,-7905, -7531,-7144,-6749,-6349,-5939,-5489,-5033,-4587,-4116,-3668,-3216,-2785,-2344,-1921,-1488,-1091,-693,-303,87,483, 874,1270,1660,2043,2453,2858,3247,3630,4010,4366,4736,5085,5443,5788,6119,6458,6780,7117,7464,7786, 8100,8410,8692,8958,9211,9421,9611,9758,9875,9962,10044,10084,10097,10076,10036,9967,9875,9758,9603,9408, 9167,8881,8582,8248,7859,7444,6998,6534,6063,5574,5084,4578,4051,3507,2960,2413,1855,1257,654,43, -581,-1189,-1783,-2388,-2971,-3564,-4116,-4639,-5145,-5627,-6096,-6564,-7003,-7433,-7848,-8220,-8600,-8965,-9300,-9589, -9840,-10054,-10244,-10382,-10490,-10560,-10590,-10578,-10549,-10493,-10430,-10335,-10209,-10050,-9862,-9650,-9420,-9154,-8860,-8517, -8142,-7768,-7378,-6978,-6568,-6152,-5732,-5311,-4891,-4492,-4074,-3650,-3225,-2789,-2361,-1940,-1505,-1072,-640,-204, 215,617,1007,1392,1783,2171,2533,2911,3271,3657,4029,4420,4817,5210,5584,5981,6370,6738,7115,7457, 7780,8084,8387,8686,8973,9237,9483,9710,9927,10132,10317,10463,10585,10650,10683,10672,10631,10569,10443,10276, 10079,9869,9638,9372,9066,8757,8412,8032,7633,7214,6756,6257,5706,5165,4596,4006,3425,2822,2198,1600, 995,406,-171,-765,-1361,-1954,-2544,-3131,-3714,-4303,-4873,-5444,-5983,-6484,-6974,-7415,-7848,-8251,-8621,-8954, -9257,-9533,-9796,-10043,-10276,-10478,-10630,-10750,-10850,-10919,-10938,-10912,-10843,-10746,-10589,-10416,-10222,-10006,-9750,-9484, -9192,-8912,-8596,-8262,-7921,-7536,-7136,-6738,-6315,-5891,-5449,-4981,-4524,-4080,-3639,-3213,-2787,-2374,-1954,-1539, -1146,-750,-358,46,454,858,1261,1672,2070,2464,2860,3249,3621,3984,4325,4685,5050,5407,5765,6120, 6471,6834,7187,7546,7894,8223,8521,8811,9074,9315,9514,9702,9858,9966,10075,10167,10227,10273,10270,10246, 10202,10109,9993,9832,9617,9364,9074,8739,8404,8020,7612,7188,6740,6278,5818,5333,4838,4319,3769,3208, 2645,2054,1448,820,0,-11,-280,-728,-1091,-1299,-1350,-1234,-1037,-853,-545,-39,571,1112,1553,1841, 2061,2314,2643,2978,3329,3749,4293,4971,5761,6575,7317,7964,8525,8979,9305,9491,9552,9532,9492,9461, 9456,9441,9399,9312,9169,8956,8635,8180,7592,6905,6153,5384,4618,3869,3146,2471,1869,1342,843,335, -196,-774,-1395,-2055,-2750,-3487,-4248,-4997,-5714,-6384,-6990,-7487,-7893,-8208,-8454,-8647,-8848,-9062,-9294,-9558, -9882,-10235,-10593,-10965,-11293,-11535,-11658,-11678,-11566,-11338,-11018,-10628,-10178,-9719,-9269,-8829,-8411,-8005,-7588,-7141, -6659,-6139,-5551,-4904,-4216,-3515,-2816,-2171,-1589,-1086,-654,-304,-22,190,352,466,564,644,718,791, 860,914,960,1002,1050,1102,1174,1268,1376,1497,1636,1789,1951,2141,2367,2627,2932,3281,3679,4118, 4601,5115,5630,6129,6592,6989,7320,7602,7844,8038,8196,8335,8453,8558,8659,8757,8806,8799,8716,8540, 8264,7916,7480,6974,6422,5869,5326,4815,4354,3947,3554,3189,2838,2457,2036,1569,1040,443,-195,-835, -1489,-2121,-2710,-3250,-3735,-4136,-4472,-4777,-5067,-5358,-5677,-6032,-6412,-6814,-7247,-7705,-8140,-8537,-8873,-9124, -9277,-9352,-9350,-9280,-9149,-9001,-8824,-8649,-8484,-8324,-8135,-7931,-7683,-7379,-7009,-6564,-6047,-5456,-4818,-4166, -3512,-2879,-2282,-1724,-1213,-754,-349,15,336,623,876,1088,1253,1370,1436,1451,1412,1342,1245,1134, 1022,908,803,712,632,569,517,487,471,488,540,644,805,1040,1342,1714,2145,2618,3124,3661, 4208,4773,5360,5958,6565,7187,7824,8469,9109,9730,10291,10764,11149,11428,11591,11653,11623,11501,11316,11106, 10893,10666,10448,10224,9977,9683,9358,8966,8491,7929,7306,6613,5886,5153,4432,3719,3048,2424,1852,1319, 829,340,-169,-707,-1270,-1875,-2516,-3179,-3866,-4560,-5225,-5837,-6396,-6895,-7329,-7718,-8070,-8381,-8672,-8968, -9279,-9611,-9975,-10345,-10698,-11017,-11311,-11532,-11679,-11732,-11705,-11568,-11367,-11117,-10831,-10505,-10170,-9821,-9451,-9072, -8673,-8228,-7723,-7158,-6531,-5856,-5152,-4437,-3715,-3012,-2349,-1737,-1182,-695,-275,91,408,678,902,1084, 1229,1330,1398,1430,1434,1409,1377,1334,1301,1275,1265,1269,1291,1338,1411,1504,1634,1787,1980,2214, 2504,2840,3224,3641,4088,4534,4979,5419,5837,6219,6578,6904,7212,7515,7819,8113,8385,8633,8845,8996, 9088,9101,9024,8849,8604,8297,7943,7563,7177,6787,6408,6052,5708,5361,5002,4613,4171,3681,3152,2577, 1950,1300,638,-10,-633,-1195,-1710,-2188,-2636,-3043,-3446,-3839,-4235,-4664,-5129,-5618,-6118,-6625,-7111,-7556, -7960,-8318,-8599,-8808,-8960,-9054,-9109,-9144,-9166,-9180,-9173,-9167,-9151,-9108,-9019,-8876,-8650,-8349,-7972,-7537, -7034,-6495,-5921,-5332,-4746,-4188,-3647,-3131,-2640,-2178,-1729,-1308,-909,-554,-218,70,316,512,659,763, 830,860,859,840,801,753,695,639,583,533,490,474,480,530,624,771,967,1225,1522,1876, 2265,2697,3151,3632,4134,4672,5233,5829,6453,7096,7733,8360,8964,9524,10009,10420,10735,10954,11095,11169, 11187,11157,11093,11005,10891,10757,10602,10392,10124,9793,9399,8933,8419,7854,7246,6606,5976,5359,4768,4207, 3671,3140,2618,2101,1572,1016,437,-192,-852,-1535,-2205,-2873,-3522,-4131,-4702,-5236,-5711,-6142,-6544,-6941, -7333,-7724,-8129,-8541,-8950,-9366,-9779,-10164,-10497,-10776,-10985,-11119,-11194,-11198,-11140,-11023,-10868,-10678,-10465,-10232, -9980,-9676,-9328,-8926,-8469,-7946,-7367,-6730,-6041,-5318,-4598,-3877,-3189,-2531,-1924,-1356,-846,-392,10,363, 657,903,1098,1241,1332,1375,1379,1352,1297,1226,1150,1067,992,923,874,831,804,796,810,852, 934,1050,1218,1430,1700,2011,2376,2776,3202,3641,4101,4558,5016,5471,5930,6377,6825,7256,7688,8088, 8459,8772,9014,9192,9296,9319,9269,9159,8982,8759,8516,8263,7992,7706,7408,7092,6747,6384,5981,5533, 5040,4507,3937,3358,2773,2197,1622,1068,545,53,-425,-871,-1319,-1777,-2247,-2725,-3216,-3718,-4229,-4736, -5245,-5723,-6168,-6566,-6930,-7247,-7532,-7784,-8004,-8197,-8380,-8572,-8751,-8913,-9063,-9175,-9246,-9278,-9252,-9166, -9002,-8776,-8479,-8134,-7752,-7350,-6918,-6472,-6013,-5551,-5084,-4620,-4155,-3685,-3214,-2759,-2317,-1900,-1510,-1156, -838,-572,-336,-153,-3,105,190,239,272,279,273,253,232,217,217,230,273,341,453,602, 789,1018,1279,1575,1905,2278,2678,3118,3592,4100,4639,5214,5806,6407,7000,7574,8103,8593,9028,9403, 9705,9951,10139,10275,10368,10434,10448,10417,10339,10221,10046,9816,9530,9178,8767,8313,7827,7319,6796,6267, 5730,5195,4678,4172,3664,3149,2622,2069,1501,919,327,-279,-895,-1507,-2101,-2681,-3214,-3728,-4219,-4687, -5127,-5557,-5967,-6379,-6792,-7216,-7637,-8043,-8434,-8811,-9142,-9445,-9711,-9923,-10074,-10174,-10227,-10240,-10214,-10159, -10058,-9916,-9740,-9525,-9259,-8943,-8570,-8123,-7614,-7054,-6457,-5812,-5144,-4462,-3777,-3107,-2460,-1843,-1268,-724, -232,215,602,934,1209,1427,1589,1698,1753,1767,1738,1681,1597,1498,1384,1262,1135,1011,889,781, 683,611,562,550,579,661,791,972,1209,1491,1822,2186,2586,3014,3464,3922,4408,4904,5411,5913, 6420,6904,7370,7804,8200,8533,8803,9002,9128,9195,9209,9160,9065,8917,8743,8528,8289,8026,7721,7370, 6985,6568,6108,5625,5114,4576,4019,3457,2901,2356,1812,1287,759,234,-277,-781,-1299,-1819,-2345,-2877, -3413,-3929,-4436,-4928,-5408,-5854,-6285,-6682,-7045,-7378,-7705,-8010,-8303,-8574,-8830,-9064,-9285,-9487,-9654,-9779, -9861,-9892,-9871,-9798,-9687,-9512,-9286,-9014,-8706,-8361,-7989,-7592,-7160,-6699,-6219,-5719,-5207,-4684,-4157,-3624, -3103,-2605,-2132,-1689,-1280,-914,-576,-289,-44,158,326,457,563,635,692,732,766,795,835,883, 950,1035,1143,1272,1431,1621,1837,2081,2365,2675,3033,3428,3863,4328,4818,5338,5872,6416,6955,7473, 7956,8408,8821,9192,9525,9808,10033,10212,10348,10438,10473,10458,10388,10255,10063,9831,9545,9210,8829,8411, 7959,7494,7017,6537,6034,5525,5007,4480,3954,3420,2865,2297,1723,1141,561,-19,-585,-1155,-1710,-2242, -2753,-3250,-3720,-4183,-4642,-5090,-5522,-5946,-6361,-6767,-7164,-7552,-7914,-8241,-8534,-8806,-9043,-9242,-9409,-9535, -9614,-9657,-9671,-9652,-9582,-9468,-9302,-9085,-8820,-8506,-8130,-7700,-7213,-6686,-6109,-5514,-4895,-4262,-3619,-2984, -2364,-1768,-1203,-678,-196,241,626,954,1223,1446,1604,1723,1785,1808,1791,1740,1659,1554,1427,1292, 1140,992,849,723,605,525,472,459,489,568,696,879,1101,1381,1696,2054,2453,2886,3346,3837, 4346,4871,5415,5965,6503,7023,7516,7978,8395,8766,9079,9318,9495,9609,9661,9658,9602,9491,9325,9109, 8858,8567,8233,7865,7456,7000,6523,6030,5506,4963,4402,3827,3248,2670,2100,1524,948,373,-203,-773, -1335,-1894,-2456,-3018,-3572,-4111,-4642,-5150,-5644,-6128,-6601,-7038,-7456,-7850,-8224,-8577,-8918,-9234,-9527,-9785, -10026,-10239,-10426,-10585,-10697,-10763,-10788,-10766,-10698,-10584,-10423,-10206,-9939,-9628,-9285,-8895,-8474,-8015,-7527,-7008, -6482,-5934,-5383,-4821,-4260,-3707,-3177,-2674,-2203,-1765,-1367,-1013,-700,-437,-215,-41,105,219,313,382, 442,490,542,590,649,716,799,892,1012,1151,1324,1524,1757,2027,2344,2691,3085,3514,3975,4451, 4957,5475,6003,6525,7032,7512,7966,8391,8781,9131,9432,9686,9884,10039,10144,10204,10201,10147,10041,9885, 9677,9436,9142,8806,8425,8022,7593,7149,6684,6212,5713,5208,4699,4184,3661,3133,2581,2024,1464,907, 344,-216,-775,-1325,-1868,-2386,-2884,-3370,-3843,-4303,-4753,-5184,-5603,-6004,-6401,-6788,-7158,-7509,-7831,-8120, -8384,-8619,-8811,-8968,-9078,-9144,-9170,-9158,-9108,-9015,-8871,-8684,-8443,-8162,-7832,-7455,-7024,-6546,-6020,-5467, -4883,-4285,-3681,-3068,-2466,-1896,-1350,-843,-376,49,425,759,1040,1272,1457,1593,1685,1733,1739,1710, 1647,1557,1444,1323,1190,1060,931,824,737,678,648,663,712,811,950,1143,1381,1667,1991,2369, 2774,3226,3712,4222,4756,5307,5872,6441,7003,7552,8074,8555,8995,9391,9723,9994,10197,10323,10379,10377, 10319,10206,10041,9827,9570,9273,8948,8584,8188,7753,7281,6779,6256,5711,5150,4561,3966,3368,2776,2184, 1610,1029,452,-122,-687,-1249,-1803,-2364,-2927,-3493,-4041,-4581,-5102,-5617,-6101,-6571,-7021,-7437,-7823,-8195, -8547,-8880,-9194,-9492,-9761,-10006,-10235,-10437,-10605,-10726,-10797,-10820,-10792,-10714,-10588,-10398,-10165,-9884,-9557,-9193, -8801,-8373,-7907,-7412,-6887,-6343,-5781,-5204,-4625,-4038,-3474,-2928,-2414,-1945,-1517,-1134,-803,-517,-279,-84, 69,189,282,352,398,431,450,463,477,490,511,541,592,659,759,887,1051,1249,1488,1767, 2094,2459,2864,3296,3757,4231,4725,5227,5727,6201,6663,7096,7503,7879,8222,8524,8785,9000,9180,9308, 9390,9420,9386,9289,9140,8939,8686,8389,8052,7674,7270,6856,6427,5989,5536,5079,4603,4122,3628,3123, 2598,2059,1498,938,370,-183,-739,-1281,-1814,-2321,-2814,-3280,-3729,-4166,-4610,-5040,-5460,-5873,-6283,-6674, -7067,-7438,-7783,-8094,-8364,-8598,-8796,-8954,-9081,-9153,-9190,-9204,-9181,-9123,-9031,-8897,-8712,-8481,-8194,-7863, -7471,-7028,-6532,-6000,-5431,-4855,-4265,-3674,-3094,-2527,-1983,-1477,-998,-553,-141,222,552,830,1070,1250, 1389,1481,1532,1537,1510,1450,1371,1273,1172,1071,973,886,822,775,761,781,835,929,1067,1249, 1474,1749,2065,2424,2819,3261,3732,4242,4773,5324,5889,6466,7040,7610,8148,8656,9110,9509,9853,10132, 10336,10476,10544,10555,10511,10426,10296,10122,9900,9642,9344,9005,8634,8210,7740,7240,6703,6150,5581,5002, 4422,3834,3254,2686,2129,1571,1020,458,-113,-691,-1264,-1846,-2431,-3018,-3589,-4150,-4685,-5191,-5674,-6134, -6570,-6987,-7371,-7742,-8093,-8443,-8787,-9113,-9420,-9703,-9957,-10178,-10360,-10499,-10580,-10601,-10569,-10480,-10350,-10171, -9953,-9686,-9389,-9048,-8676,-8262,-7812,-7314,-6776,-6204,-5609,-4991,-4366,-3741,-3133,-2539,-1993,-1482,-1026,-615, -249,69,335,563,746,894,1007,1089,1144,1175,1182,1178,1162,1143,1128,1118,1124,1149,1198,1281, 1395,1550,1744,1972,2249,2572,2931,3326,3755,4198,4665,5138,5614,6090,6554,6996,7429,7837,8228,8586, 8917,9200,9445,9631,9770,9846,9857,9794,9666,9473,9239,8959,8639,8291,7920,7528,7123,6711,6290,5841, 5371,4879,4365,3829,3268,2696,2104,1505,910,331,-236,-780,-1314,-1834,-2333,-2814,-3290,-3757,-4230,-4701, -5183,-5653,-6112,-6553,-6986,-7384,-7759,-8091,-8386,-8636,-8852,-9040,-9203,-9333,-9438,-9509,-9560,-9583,-9575,-9520, -9415,-9249,-9021,-8738,-8396,-8000,-7555,-7066,-6550,-6015,-5471,-4927,-4378,-3844,-3313,-2800,-2301,-1829,-1372,-954, -564,-221,83,332,540,688,802,868,902,902,882,840,792,739,689,644,617,601,611,649, 724,827,970,1149,1375,1643,1952,2299,2690,3114,3577,4074,4605,5159,5725,6302,6875,7437,7973,8473, 8914,9304,9627,9894,10103,10253,10340,10380,10369,10322,10232,10100,9912,9679,9385,9052,8665,8236,7764,7253, 6714,6162,5603,5053,4498,3952,3402,2852,2311,1770,1215,645,64,-534,-1138,-1744,-2338,-2924,-3498,-4048, -4565,-5060,-5520,-5959,-6384,-6801,-7203,-7604,-7982,-8371,-8740,-9105,-9450,-9755,-10020,-10248,-10421,-10549,-10626,-10658, -10629,-10563,-10450,-10309,-10131,-9915,-9658,-9354,-9002,-8611,-8162,-7665,-7116,-6525,-5905,-5262,-4624,-3988,-3365,-2773, -2217,-1702,-1230,-807,-429,-92,201,449,647,814,933,1015,1060,1080,1067,1038,991,942,890,850, 817,805,813,856,927,1040,1194,1385,1619,1897,2218,2582,2972,3393,3832,4288,4758,5237,5721,6202, 6678,7141,7597,8030,8438,8799,9114,9371,9562,9689,9749,9735,9659,9517,9330,9111,8855,8574,8273,7941, 7588,7209,6816,6386,5927,5423,4895,4343,3774,3190,2605,2019,1443,877,335,-186,-698,-1201,-1706,-2208, -2704,-3205,-3712,-4219,-4727,-5223,-5707,-6161,-6580,-6976,-7341,-7667,-7961,-8222,-8459,-8670,-8870,-9055,-9224,-9359, -9472,-9544,-9585,-9576,-9507,-9372,-9180,-8921,-8613,-8252,-7858,-7428,-6968,-6482,-5993,-5485,-4978,-4458,-3938,-3411, -2894,-2387,-1902,-1437,-1008,-618,-272,22,264,460,612,718,793,830,847,838,817,792,759,727, 706,690,695,719,775,856,976,1125,1317,1541,1814,2123,2472,2864,3303,3770,4279,4811,5366,5922, 6475,7010,7525,8002,8437,8820,9151,9433,9664,9852,9999,10097,10144,10148,10097,10003,9843,9628,9349,9013, 8618,8192,7730,7245,6731,6217,5698,5186,4671,4166,3645,3117,2575,2017,1445,857,253,-361,-981,-1591, -2186,-2754,-3303,-3819,-4322,-4795,-5243,-5680,-6113,-6541,-6973,-7401,-7819,-8227,-8622,-8995,-9337,-9645,-9901,-10111, -10264,-10380,-10447,-10476,-10467,-10425,-10341,-10231,-10081,-9904,-9666,-9377,-9025,-8619,-8153,-7634,-7068,-6463,-5830,-5185, -4541,-3911,-3304,-2724,-2165,-1653,-1176,-736,-341,13,321,582,798,962,1080,1155,1190,1189,1162,1107, 1049,977,901,839,781,742,717,729,763,841,956,1114,1309,1558,1840,2169,2530,2928,3350,3800, 4269,4757,5258,5780,6293,6811,7315,7806,8261,8677,9039,9335,9565,9725,9820,9853,9831,9749,9626,9462, 9273,9056,8807,8519,8199,7833,7434,6995,6523,6010,5469,4903,4333,3761,3198,2636,2085,1548,1026,503, -1,-518,-1038,-1577,-2119,-2664,-3201,-3736,-4257,-4765,-5251,-5700,-6120,-6507,-6861,-7197,-7515,-7808,-8088,-8353, -8610,-8854,-9078,-9276,-9444,-9555,-9626,-9639,-9606,-9504,-9347,-9136,-8876,-8570,-8246,-7883,-7494,-7078,-6633,-6167, -5686,-5172,-4648,-4107,-3559,-3015,-2490,-1989,-1517,-1087,-696,-355,-63,185,382,541,666,757,825,862, 885,885,886,879,874,868,883,904,952,1021,1122,1251,1418,1615,1861,2142,2471,2836,3246,3694, 4180,4684,5213,5748,6275,6782,7274,7737,8171,8560,8916,9229,9504,9737,9935,10087,10184,10219,10202,10113, 9966,9756,9479,9145,8766,8354,7917,7469,7007,6536,6054,5566,5078,4578,4062,3525,2957,2374,1769,1161, 543,-71,-688,-1286,-1866,-2413,-2941,-3445,-3938,-4408,-4882,-5342,-5802,-6259,-6726,-7188,-7632,-8060,-8460,-8824, -9156,-9448,-9694,-9897,-10059,-10180,-10270,-10336,-10374,-10381,-10352,-10287,-10178,-10023,-9809,-9544,-9201,-8802,-8337,-7829, -7278,-6697,-6089,-5473,-4849,-4241,-3650,-3077,-2525,-1998,-1499,-1041,-612,-229,110,396,636,825,969,1062, 1113,1132,1125,1090,1036,976,911,844,791,749,725,727,754,820,924,1069,1253,1487,1752,2065, 2409,2795,3212,3662,4135,4640,5163,5708,6256,6809,7343,7859,8332,8772,9152,9475,9728,9916,10043,10122, 10149,10132,10071,9965,9819,9639,9420,9159,8841,8477,8070,7621,7138,6628,6091,5545,4991,4442,3904,3375, 2854,2327,1802,1269,737,194,-361,-933,-1504,-2085,-2647,-3195,-3717,-4224,-4699,-5155,-5578,-5973,-6351,-6718, -7068,-7420,-7763,-8092,-8401,-8697,-8972,-9210,-9409,-9558,-9653,-9690,-9678,-9621,-9515,-9365,-9169,-8939,-8675,-8376, -8053,-7690,-7287,-6844,-6365,-5854,-5320,-4757,-4190,-3611,-3053,-2515,-2011,-1539,-1114,-725,-383,-84,168,378, 554,698,806,891,946,979,992,998,996,999,996,1006,1032,1073,1140,1230,1359,1522,1723,1961, 2252,2582,2956,3361,3801,4265,4755,5242,5740,6221,6695,7144,7580,7997,8390,8744,9070,9356,9602,9798, 9936,10007,10011,9940,9810,9622,9379,9083,8751,8388,8003,7603,7199,6775,6339,5879,5395,4901,4381,3834, 3266,2672,2069,1459,856,262,-318,-886,-1437,-1962,-2474,-2969,-3455,-3945,-4435,-4922,-5406,-5888,-6362,-6834, -7280,-7706,-8092,-8441,-8755,-9032,-9277,-9490,-9672,-9823,-9951,-10053,-10137,-10187,-10203,-10174,-10093,-9957,-9764,-9506, -9187,-8805,-8369,-7883,-7366,-6827,-6262,-5685,-5101,-4521,-3942,-3381,-2830,-2298,-1786,-1303,-853,-453,-92,212, 472,677,838,945,1014,1042,1044,1016,974,915,850,780,724,666,636,624,641,689,770,895, 1059,1264,1508,1791,2115,2479,2882,3324,3801,4311,4840,5397,5956,6523,7067,7591,8077,8522,8914,9259, 9544,9769,9935,10060,10135,10171,10153,10093,9977,9815,9596,9330,9007,8636,8212,7754,7264,6758,6238,5709, 5181,4648,4120,3598,3072,2537,1994,1433,864,283,-303,-894,-1482,-2071,-2636,-3183,-3700,-4189,-4657,-5108, -5533,-5954,-6348,-6747,-7129,-7515,-7888,-8252,-8583,-8898,-9172,-9412,-9610,-9759,-9855,-9904,-9906,-9870,-9797,-9690, -9544,-9358,-9134,-8874,-8571,-8227,-7833,-7388,-6893,-6367,-5805,-5227,-4636,-4040,-3454,-2892,-2359,-1858,-1394,-969, -587,-240,61,323,543,727,873,987,1064,1121,1144,1160,1152,1142,1133,1125,1121,1138,1172,1233, 1323,1449,1612,1815,2060,2354,2686,3054,3451,3875,4319,4779,5247,5721,6193,6659,7115,7567,7997,8412, 8790,9124,9415,9653,9831,9940,9982,9951,9862,9708,9517,9282,9009,8702,8372,8019,7654,7260,6845,6396, 5922,5410,4876,4320,3748,3157,2559,1955,1369,792,229,-319,-859,-1391,-1912,-2424,-2938,-3456,-3976,-4498, -5013,-5515,-6010,-6476,-6926,-7346,-7737,-8092,-8412,-8699,-8970,-9214,-9435,-9637,-9818,-9969,-10096,-10186,-10248,-10248, -10199,-10089,-9916,-9684,-9402,-9057,-8669,-8233,-7764,-7273,-6759,-6231,-5686,-5124,-4564,-4003,-3443,-2898,-2371,-1868, -1393,-959,-574,-239,50,285,474,614,711,773,803,798,785,747,703,649,600,559,536,524, 547,583,664,769,920,1102,1332,1595,1905,2257,2654,3086,3566,4071,4611,5159,5729,6288,6846,7367, 7860,8312,8722,9090,9405,9680,9900,10070,10190,10267,10292,10266,10172,10025,9811,9551,9227,8865,8454,8013, 7538,7059,6567,6075,5569,5060,4543,4021,3488,2949,2386,1809,1217,619,16,-577,-1167,-1742,-2300,-2838, -3346,-3834,-4300,-4755,-5202,-5641,-6073,-6500,-6916,-7328,-7727,-8106,-8459,-8781,-9060,-9304,-9501,-9667,-9783,-9862, -9893,-9900,-9867,-9809,-9711,-9577,-9393,-9164,-8883,-8553,-8169,-7734,-7244,-6716,-6158,-5578,-4986,-4397,-3812,-3246, -2697,-2182,-1698,-1248,-833,-457,-119,176,429,638,808,934,1029,1088,1114,1122,1109,1087,1055,1024, 999,989,990,1021,1078,1169,1297,1463,1667,1919,2203,2532,2888,3273,3684,4119,4571,5042,5518,6008, 6489,6973,7441,7896,8321,8706,9033,9314,9531,9686,9773,9797,9754,9665,9532,9355,9149,8906,8631,8319, 7980,7613,7213,6771,6300,5791,5260,4706,4141,3567,2992,2410,1846,1285,741,198,-336,-872,-1408,-1951, -2489,-3029,-3566,-4104,-4635,-5151,-5642,-6111,-6551,-6967,-7356,-7720,-8061,-8372,-8666,-8941,-9208,-9451,-9674,-9870, -10033,-10156,-10239,-10275,-10255,-10172,-10033,-9841,-9604,-9313,-8983,-8607,-8203,-7763,-7302,-6810,-6305,-5774,-5224,-4664, -4103,-3544,-3004,-2478,-1987,-1526,-1113,-742,-424,-152,72,252,387,485,548,587,594,589,573,547, 514,486,470,465,480,516,585,679,808,971,1183,1428,1721,2055,2435,2859,3323,3815,4336,4873, 5424,5961,6501,7023,7512,7969,8391,8774,9126,9427,9692,9904,10063,10168,10215,10206,10137,9998,9800,9543, 9240,8893,8510,8102,7667,7216,6756,6293,5816,5329,4820,4299,3765,3217,2646,2069,1476,880,281,-305, -877,-1429,-1977,-2495,-3000,-3484,-3960,-4424,-4884,-5340,-5800,-6246,-6684,-7104,-7511,-7898,-8253,-8573,-8858,-9098, -9304,-9474,-9614,-9723,-9791,-9828,-9839,-9812,-9750,-9647,-9493,-9286,-9019,-8696,-8318,-7895,-7419,-6901,-6348,-5773, -5198,-4611,-4025,-3455,-2895,-2362,-1848,-1371,-924,-512,-132,196,488,727,926,1077,1187,1259,1306,1313, 1303,1276,1245,1203,1167,1142,1129,1133,1169,1236,1336,1468,1640,1853,2100,2390,2711,3069,3456,3871, 4309,4774,5259,5760,6261,6770,7264,7746,8198,8612,8979,9293,9544,9740,9877,9956,9978,9945,9869,9756, 9599,9410,9181,8911,8596,8241,7849,7421,6961,6464,5939,5399,4852,4296,3744,3192,2642,2092,1555,1016, 478,-70,-621,-1181,-1741,-2306,-2853,-3401,-3930,-4450,-4944,-5410,-5847,-6268,-6664,-7044,-7406,-7750,-8075,-8391, -8689,-8974,-9234,-9465,-9656,-9805,-9915,-9974,-9983,-9937,-9842,-9693,-9501,-9271,-9001,-8691,-8346,-7963,-7550,-7096, -6619,-6110,-5579,-5021,-4458,-3891,-3340,-2793,-2281,-1800,-1357,-956,-604,-293,-37,185,362,502,607,677, 721,747,747,741,724,702,685,674,681,704,749,823,924,1061,1238,1458,1719,2027,2372,2764, 3198,3656,4147,4650,5166,5680,6192,6689,7176,7631,8069,8468,8833,9169,9461,9699,9889,10012,10081,10082, 10021,9895,9711,9467,9180,8852,8496,8113,7706,7282,6840,6385,5917,5431,4922,4396,3845,3278,2698,2108, 1510,919,322,-261,-832,-1379,-1913,-2435,-2949,-3447,-3939,-4425,-4904,-5385,-5861,-6328,-6786,-7213,-7625,-8003, -8361,-8681,-8971,-9218,-9437,-9616,-9777,-9908,-10015,-10086,-10128,-10123,-10089,-10004,-9868,-9674,-9419,-9103,-8737,-8315, -7851,-7347,-6809,-6249,-5672,-5098,-4517,-3941,-3372,-2819,-2280,-1775,-1289,-844,-438,-74,251,519,745,916, 1049,1135,1192,1211,1213,1189,1158,1117,1079,1046,1022,1014,1034,1076,1153,1264,1407,1586,1805,2064, 2359,2692,3063,3463,3897,4361,4853,5365,5891,6418,6937,7444,7925,8371,8774,9126,9426,9667,9856,9993, 10080,10119,10104,10041,9940,9794,9594,9358,9062,8726,8337,7917,7467,6985,6475,5952,5423,4887,4352,3818, 3279,2741,2193,1647,1094,531,-33,-612,-1194,-1769,-2336,-2888,-3418,-3934,-4426,-4903,-5349,-5774,-6183,-6584, -6969,-7345,-7710,-8060,-8388,-8702,-8985,-9245,-9458,-9632,-9760,-9840,-9880,-9871,-9815,-9720,-9575,-9394,-9173,-8920, -8628,-8290,-7906,-7488,-7026,-6534,-6006,-5454,-4889,-4313,-3744,-3189,-2660,-2155,-1690,-1260,-876,-535,-231,30, 242,427,569,682,758,808,832,845,835,824,805,793,784,789,817,873,948,1065,1209,1403, 1635,1914,2231,2595,2988,3419,3878,4354,4846,5342,5843,6341,6828,7309,7771,8205,8612,8983,9312,9597, 9825,9989,10091,10120,10093,9998,9851,9650,9404,9112,8800,8453,8092,7703,7293,6855,6397,5915,5414,4886, 4335,3762,3180,2590,2003,1416,837,264,-295,-841,-1375,-1897,-2413,-2933,-3444,-3949,-4454,-4950,-5447,-5926, -6392,-6835,-7252,-7633,-7992,-8318,-8618,-8889,-9132,-9340,-9532,-9695,-9841,-9954,-10034,-10065,-10056,-9995,-9885,-9714, -9485,-9193,-8851,-8458,-8028,-7557,-7060,-6530,-5986,-5433,-4870,-4307,-3747,-3187,-2646,-2122,-1622,-1162,-737,-359, -27,263,494,678,820,918,980,1005,1007,988,956,911,867,820,787,764,760,780,830,906, 1023,1173,1364,1587,1852,2161,2513,2896,3324,3780,4270,4781,5312,5848,6385,6902,7397,7864,8293,8680, 9018,9305,9544,9734,9873,9970,10011,10003,9939,9825,9661,9444,9171,8852,8480,8075,7631,7172,6686,6188, 5674,5159,4642,4127,3602,3065,2517,1963,1393,817,241,-345,-932,-1518,-2088,-2637,-3169,-3678,-4170,-4643, -5098,-5541,-5965,-6382,-6790,-7198,-7589,-7966,-8321,-8657,-8959,-9232,-9463,-9660,-9802,-9907,-9967,-9995,-9975,-9929, -9833,-9707,-9534,-9327,-9075,-8780,-8433,-8035,-7586,-7110,-6588,-6041,-5473,-4901,-4326,-3761,-3215,-2700,-2212,-1749, -1326,-945,-600,-294,-29,195,385,537,647,734,780,811,821,816,805,791,776,780,799,830, 889,988,1108,1280,1484,1734,2019,2349,2711,3106,3527,3977,4446,4926,5412,5907,6400,6897,7373,7838, 8276,8677,9040,9353,9613,9815,9945,10008,10015,9956,9853,9694,9496,9256,8982,8681,8357,8002,7617,7199, 6753,6281,5781,5253,4710,4147,3574,2994,2417,1850,1293,734,193,-348,-878,-1407,-1931,-2460,-2981,-3511, -4031,-4538,-5039,-5519,-5984,-6425,-6838,-7224,-7578,-7906,-8216,-8501,-8772,-9011,-9237,-9430,-9608,-9752,-9857,-9920, -9939,-9899,-9812,-9664,-9468,-9206,-8903,-8546,-8152,-7725,-7272,-6783,-6277,-5746,-5201,-4647,-4088,-3528,-2977,-2432, -1919,-1432,-985,-581,-225,83,342,560,719,844,927,980,1005,1006,984,955,919,878,845,820, 810,814,845,907,1001,1125,1291,1491,1736,2019,2349,2719,3132,3579,4057,4557,5085,5609,6142,6659, 7160,7627,8073,8479,8844,9165,9441,9672,9858,9988,10074,10103,10073,9980,9831,9627,9372,9062,8707,8317, 7893,7449,6988,6517,6029,5537,5028,4517,3992,3456,2901,2335,1753,1170,575,-15,-608,-1182,-1749,-2301, -2827,-3336,-3829,-4302,-4772,-5229,-5679,-6120,-6555,-6978,-7397,-7797,-8171,-8517,-8830,-9112,-9350,-9556,-9726,-9853, -9938,-9999,-10019,-10012,-9973,-9888,-9763,-9594,-9377,-9108,-8785,-8412,-7984,-7513,-7001,-6466,-5907,-5336,-4761,-4194, -3638,-3102,-2588,-2105,-1642,-1215,-824,-472,-160,113,345,529,681,792,867,916,937,942,938,918, 908,899,900,922,963,1036,1135,1271,1441,1657,1901,2187,2509,2860,3243,3661,4092,4552,5025,5514, 6004,6502,6993,7472,7927,8352,8733,9071,9352,9577,9740,9839,9872,9859,9794,9685,9529,9337,9104,8842, 8541,8208,7842,7439,6997,6519,6017,5496,4957,4397,3840,3273,2713,2154,1607,1064,525,-20,-559,-1104, -1644,-2196,-2738,-3285,-3819,-4344,-4845,-5329,-5786,-6232,-6646,-7033,-7399,-7747,-8066,-8376,-8670,-8950,-9202,-9433, -9631,-9807,-9936,-10021,-10058,-10041,-9970,-9850,-9676,-9457,-9189,-8878,-8523,-8139,-7720,-7270,-6793,-6283,-5750,-5196, -4629,-4061,-3495,-2936,-2392,-1883,-1410,-978,-593,-247,41,288,486,649,764,852,909,939,948,935, 917,888,862,840,832,832,857,903,975,1088,1230,1418,1645,1912,2225,2576,2973,3407,3872,4359, 4873,5390,5917,6429,6933,7418,7874,8299,8703,9063,9386,9658,9885,10060,10183,10245,10244,10176,10048,9858, 9618,9327,8999,8630,8236,7819,7381,6936,6469,5989,5490,4978,4448,3903,3337,2758,2162,1559,960,367, -227,-798,-1359,-1906,-2441,-2956,-3457,-3944,-4435,-4917,-5396,-5866,-6327,-6779,-7210,-7623,-8019,-8372,-8696,-8984, -9241,-9464,-9654,-9810,-9938,-10029,-10098,-10132,-10131,-10097,-10008,-9871,-9678,-9434,-9132,-8777,-8368,-7914,-7422,-6904, -6361,-5806,-5245,-4682,-4124,-3583,-3054,-2545,-2061,-1605,-1177,-790,-445,-141,116,328,501,627,723,786, 814,824,815,801,787,769,761,768,792,842,920,1024,1169,1344,1561,1815,2104,2425,2782,3172, 3593,4040,4512,5007,5513,6028,6536,7043,7529,7990,8402,8780,9101,9369,9576,9732,9831,9878,9874,9831, 9740,9616,9437,9218,8955,8655,8307,7924,7500,7042,6557,6049,5525,4998,4462,3924,3385,2850,2313,1776, 1241,696,143,-414,-975,-1536,-2092,-2648,-3189,-3712,-4220,-4705,-5160,-5597,-6014,-6416,-6801,-7169,-7518,-7865, -8189,-8497,-8787,-9051,-9280,-9473,-9623,-9734,-9792,-9802,-9759,-9669,-9540,-9364,-9146,-8891,-8593,-8257,-7882,-7476, -7028,-6546,-6026,-5482,-4923,-4345,-3775,-3212,-2665,-2142,-1654,-1202,-797,-433,-116,162,391,585,734,854, 930,986,1009,1020,1005,983,953,928,901,897,902,929,980,1062,1184,1340,1534,1776,2056,2386, 2751,3159,3596,4064,4546,5042,5553,6060,6560,7046,7518,7970,8398,8794,9158,9477,9741,9947,10102,10198, 10220,10178,10080,9916,9706,9445,9152,8825,8468,8086,7682,7260,6818,6354,5868,5353,4821,4266,3701,3118, 2530,1935,1337,753,181,-381,-929,-1466,-1997,-2515,-3033,-3534,-4036,-4537,-5031,-5516,-5995,-6451,-6895,-7305, -7694,-8051,-8381,-8670,-8931,-9168,-9378,-9564,-9724,-9853,-9959,-10022,-10054,-10041,-9983,-9871,-9695,-9467,-9185,-8843, -8460,-8028,-7565,-7070,-6548,-6017,-5471,-4923,-4369,-3819,-3277,-2752,-2247,-1765,-1315,-902,-528,-207,73,304, 491,630,735,801,837,849,848,827,803,775,756,738,742,764,817,889,995,1132,1311,1518, 1771,2057,2382,2740,3134,3563,4027,4512,5015,5530,6047,6561,7055,7524,7963,8359,8710,9010,9260,9461, 9609,9713,9763,9769,9727,9645,9507,9320,9078,8792,8459,8087,7672,7231,6760,6272,5765,5256,4741,4226, 3700,3172,2641,2102,1555,1000,435,-136,-714,-1287,-1854,-2411,-2950,-3473,-3974,-4453,-4917,-5356,-5777,-6195, -6593,-6989,-7368,-7731,-8083,-8417,-8729,-9013,-9253,-9465,-9627,-9747,-9824,-9864,-9850,-9803,-9707,-9583,-9418,-9212, -8964,-8678,-8339,-7961,-7538,-7075,-6574,-6042,-5482,-4914,-4337,-3769,-3216,-2684,-2179,-1707,-1273,-881,-524,-210, 63,294,487,641,758,843,898,927,934,924,905,882,858,845,839,858,894,963,1056,1194, 1368,1586,1840,2144,2478,2857,3264,3696,4155,4633,5117,5612,6108,6604,7090,7557,8008,8432,8822,9170, 9465,9704,9881,9991,10040,10032,9958,9831,9652,9432,9177,8887,8564,8221,7846,7440,7013,6563,6081,5567, 5033,4476,3911,3330,2752,2172,1593,1018,459,-93,-631,-1169,-1700,-2231,-2756,-3283,-3803,-4317,-4827,-5326, -5806,-6265,-6697,-7109,-7493,-7848,-8179,-8483,-8760,-9012,-9248,-9457,-9652,-9814,-9942,-10032,-10083,-10086,-10042,-9945, -9787,-9571,-9303,-8986,-8631,-8226,-7792,-7320,-6828,-6309,-5779,-5228,-4678,-4110,-3552,-2996,-2466,-1951,-1470,-1015, -613,-252,59,319,537,707,840,933,997,1031,1049,1041,1033,1009,991,978,975,984,1019,1076, 1162,1277,1428,1612,1838,2098,2405,2744,3129,3541,3991,4471,4975,5485,6007,6518,7022,7501,7956,8369, 8752,9082,9377,9624,9826,9982,10086,10138,10136,10081,9975,9813,9594,9324,8996,8635,8237,7813,7361,6895, 6411,5920,5417,4913,4397,3870,3327,2778,2210,1640,1050,463,-127,-711,-1289,-1846,-2390,-2911,-3421,-3911, -4384,-4839,-5289,-5728,-6160,-6585,-7002,-7403,-7785,-8139,-8473,-8774,-9040,-9268,-9453,-9600,-9709,-9780,-9815,-9819, -9778,-9707,-9591,-9445,-9248,-9006,-8709,-8361,-7967,-7528,-7046,-6535,-5994,-5437,-4870,-4305,-3749,-3215,-2694,-2208, -1746,-1317,-926,-568,-253,29,267,464,618,738,823,881,912,920,917,904,887,872,871,878, 909,964,1049,1164,1319,1511,1745,2019,2322,2671,3048,3457,3888,4343,4813,5304,5795,6300,6796,7286, 7757,8203,8613,8984,9305,9573,9774,9915,9990,10013,9978,9889,9753,9578,9362,9114,8831,8510,8158,7773, 7351,6899,6420,5910,5379,4826,4261,3691,3121,2551,1992,1428,874,320,-223,-771,-1313,-1869,-2416,-2965, -3507,-4043,-4561,-5070,-5553,-6024,-6462,-6878,-7268,-7637,-7984,-8312,-8620,-8912,-9182,-9427,-9654,-9854,-10017,-10135, -10212,-10239,-10217,-10143,-10014,-9833,-9606,-9329,-9014,-8656,-8267,-7838,-7382,-6889,-6383,-5845,-5295,-4729,-4165,-3598, -3049,-2516,-2018,-1555,-1127,-744,-414,-125,113,309,464,582,662,722,748,760,753,739,720,703, 690,689,707,742,807,895,1020,1176,1378,1615,1895,2218,2580,2978,3419,3880,4369,4880,5396,5907, 6414,6906,7377,7821,8238,8614,8959,9254,9514,9721,9881,9980,10024,10008,9934,9794,9607,9363,9069,8735, 8372,7978,7568,7132,6679,6215,5741,5252,4741,4220,3681,3124,2554,1976,1389,806,218,-354,-924,-1466, -2009,-2527,-3031,-3521,-4005,-4480,-4943,-5398,-5856,-6295,-6727,-7142,-7537,-7901,-8241,-8542,-8819,-9054,-9255,-9418, -9553,-9659,-9729,-9769,-9779,-9746,-9671,-9554,-9391,-9176,-8906,-8583,-8206,-7781,-7315,-6820,-6299,-5755,-5202,-4646, -4093,-3554,-3021,-2517,-2029,-1573,-1143,-752,-395,-85,193,423,609,751,863,934,979,999,1000,986, 972,949,938,936,952,984,1050,1141,1265,1423,1620,1858,2131,2435,2777,3157,3563,3996,4454,4929, 5425,5932,6435,6942,7431,7898,8329,8727,9073,9371,9603,9786,9903,9972,9983,9953,9871,9744,9576,9371, 9120,8833,8500,8132,7722,7282,6806,6309,5793,5256,4711,4161,3612,3063,2512,1964,1419,868,317,-242, -803,-1363,-1925,-2489,-3038,-3580,-4097,-4603,-5088,-5551,-5991,-6412,-6804,-7187,-7550,-7903,-8237,-8555,-8848,-9128, -9374,-9593,-9770,-9918,-10007,-10052,-10048,-10002,-9899,-9756,-9562,-9332,-9057,-8742,-8392,-8009,-7581,-7119,-6621,-6100, -5552,-4991,-4419,-3848,-3288,-2745,-2231,-1748,-1311,-912,-554,-240,24,249,430,577,684,760,807,835, 836,830,810,793,771,758,758,779,812,881,977,1106,1279,1487,1739,2033,2369,2746,3158,3599, 4069,4551,5049,5549,6051,6541,7019,7477,7918,8326,8701,9036,9330,9573,9768,9897,9971,9975,9919,9804, 9638,9416,9152,8845,8508,8142,7756,7351,6922,6472,6001,5511,5000,4474,3922,3359,2785,2195,1609,1027, 448,-122,-684,-1233,-1769,-2294,-2807,-3310,-3814,-4308,-4801,-5283,-5758,-6221,-6668,-7091,-7495,-7870,-8215,-8525, -8813,-9063,-9295,-9480,-9652,-9787,-9900,-9982,-10030,-10033,-10000,-9910,-9769,-9581,-9335,-9035,-8682,-8279,-7842,-7367, -6865,-6344,-5806,-5261,-4709,-4159,-3624,-3096,-2583,-2091,-1626,-1196,-801,-451,-140,124,346,520,660,756, 823,864,881,882,876,863,853,846,856,881,930,1000,1103,1240,1410,1615,1854,2133,2448,2792, 3179,3594,4040,4512,5004,5509,6024,6535,7042,7524,7975,8393,8763,9090,9369,9593,9758,9878,9946,9969, 9941,9867,9745,9578,9360,9100,8791,8440,8048,7618,7161,6681,6181,5673,5148,4623,4086,3553,3020,2480, 1929,1377,817,248,-325,-898,-1470,-2034,-2592,-3133,-3654,-4155,-4631,-5100,-5543,-5973,-6386,-6786,-7170,-7547, -7908,-8253,-8576,-8873,-9142,-9379,-9571,-9732,-9839,-9912,-9931,-9908,-9847,-9749,-9600,-9416,-9189,-8923,-8615,-8263, -7865,-7434,-6957,-6448,-5905,-5351,-4786,-4213,-3647,-3100,-2575,-2077,-1617,-1195,-810,-468,-167,93,312,496, 641,752,824,877,903,912,904,891,875,863,854,862,889,942,1021,1139,1289,1480,1709,1981, 2293,2652,3031,3452,3896,4364,4845,5337,5828,6326,6812,7291,7752,8193,8599,8967,9290,9571,9790,9949, 10049,10084,10058,9968,9834,9647,9421,9151,8853,8523,8165,7779,7374,6938,6479,5988,5483,4946,4403,3833, 3262,2678,2099,1520,957,396,-154,-703,-1242,-1776,-2300,-2823,-3341,-3857,-4365,-4865,-5353,-5826,-6277,-6711, -7117,-7497,-7850,-8174,-8472,-8745,-8995,-9222,-9425,-9589,-9741,-9850,-9932,-9969,-9957,-9896,-9783,-9611,-9395,-9117, -8799,-8432,-8022,-7578,-7112,-6615,-6099,-5569,-5026,-4476,-3930,-3383,-2852,-2331,-1844,-1382,-959,-577,-240,57, 301,505,665,784,870,925,957,970,970,957,948,934,935,942,975,1023,1100,1203,1343,1510, 1721,1960,2240,2560,2919,3313,3746,4201,4681,5182,5692,6203,6712,7199,7667,8101,8496,8854,9166,9434, 9657,9827,9951,10022,10047,10023,9943,9808,9621,9386,9097,8766,8398,7998,7557,7101,6628,6139,5644,5138, 4621,4098,3564,3025,2474,1916,1338,764,178,-402,-976,-1545,-2099,-2641,-3164,-3663,-4149,-4618,-5075,-5520, -5955,-6381,-6796,-7192,-7578,-7945,-8294,-8613,-8902,-9150,-9361,-9537,-9671,-9768,-9826,-9844,-9823,-9766,-9669,-9547, -9358,-9139,-8864,-8550,-8183,-7778,-7324,-6836,-6306,-5765,-5207,-4649,-4092,-3544,-3012,-2514,-2035,-1595,-1184,-813, -480,-189,65,276,453,585,687,758,796,815,811,799,779,760,745,740,750,786,844,933, 1056,1222,1417,1661,1936,2256,2609,2995,3405,3845,4303,4782,5265,5763,6253,6746,7219,7684,8117,8516, 8870,9173,9420,9609,9739,9810,9817,9772,9670,9524,9338,9116,8854,8556,8230,7868,7479,7054,6601,6120, 5612,5082,4539,3983,3421,2851,2285,1719,1165,613,66,-479,-1017,-1564,-2102,-2639,-3169,-3702,-4219,-4729, -5220,-5697,-6147,-6578,-6984,-7369,-7728,-8065,-8373,-8669,-8941,-9192,-9419,-9626,-9794,-9929,-10028,-10084,-10092,-10048, -9952,-9802,-9606,-9357,-9064,-8730,-8353,-7938,-7495,-7021,-6526,-6002,-5461,-4906,-4351,-3788,-3237,-2699,-2187,-1699, -1250,-840,-477,-160,110,340,522,666,773,851,894,921,928,926,911,898,889,884,894,923, 975,1049,1157,1298,1474,1689,1942,2230,2568,2938,3348,3784,4258,4748,5250,5757,6266,6758,7241,7690, 8118,8509,8865,9175,9449,9674,9852,9972,10048,10059,10021,9919,9761,9549,9289,8982,8640,8264,7859,7430, 6980,6518,6044,5557,5053,4542,4006,3466,2906,2342,1762,1181,594,16,-560,-1122,-1675,-2204,-2728,-3234, -3723,-4198,-4668,-5126,-5584,-6026,-6458,-6876,-7280,-7659,-8016,-8342,-8637,-8899,-9123,-9312,-9468,-9586,-9675,-9724, -9742,-9724,-9667,-9570,-9430,-9242,-8997,-8706,-8361,-7972,-7539,-7062,-6557,-6029,-5479,-4925,-4373,-3823,-3288,-2769, -2270,-1804,-1360,-957,-585,-255,37,287,495,658,792,883,946,978,987,984,969,949,937,924, 929,950,995,1064,1170,1306,1481,1691,1939,2225,2545,2902,3288,3699,4138,4603,5082,5578,6070,6573, 7063,7541,7991,8414,8792,9121,9392,9611,9769,9876,9920,9917,9863,9761,9611,9429,9206,8938,8639,8293, 7915,7501,7052,6574,6069,5546,5009,4462,3908,3354,2801,2243,1690,1138,586,34,-517,-1081,-1638,-2196, -2748,-3289,-3819,-4338,-4838,-5320,-5776,-6214,-6629,-7022,-7401,-7764,-8098,-8422,-8723,-9010,-9273,-9506,-9704,-9871, -9987,-10069,-10102,-10090,-10023,-9908,-9745,-9538,-9288,-8995,-8663,-8295,-7890,-7448,-6973,-6473,-5945,-5399,-4836,-4270, -3708,-3162,-2628,-2128,-1661,-1228,-841,-496,-201,56,268,445,577,683,758,801,825,833,833,824, 808,804,801,823,854,913,1002,1121,1267,1462,1691,1966,2278,2626,3018,3441,3894,4370,4863,5361, 5861,6354,6843,7308,7754,8173,8566,8914,9228,9493,9711,9873,9977,10021,10011,9937,9808,9621,9385,9104, 8790,8435,8064,7661,7242,6799,6339,5862,5368,4850,4320,3770,3207,2628,2051,1466,882,301,-272,-829, -1376,-1912,-2437,-2955,-3456,-3951,-4438,-4918,-5397,-5860,-6316,-6753,-7170,-7563,-7930,-8265,-8577,-8849,-9098,-9310, -9495,-9648,-9775,-9866,-9930,-9953,-9939,-9887,-9781,-9626,-9422,-9160,-8846,-8484,-8079,-7634,-7159,-6651,-6125,-5586, -5040,-4498,-3957,-3425,-2909,-2410,-1937,-1495,-1082,-710,-375,-87,161,369,527,653,749,805,845,857, 862,854,849,841,853,869,908,969,1056,1178,1334,1519,1742,1999,2293,2620,2984,3380,3807,4253, 4731,5220,5723,6231,6732,7220,7685,8120,8516,8872,9174,9424,9619,9767,9861,9903,9895,9848,9744,9600, 9410,9179,8899,8582,8218,7818,7387,6927,6441,5940,5419,4893,4361,3825,3284,2743,2196,1642,1089,533, -32,-597,-1165,-1731,-2289,-2839,-3374,-3885,-4385,-4866,-5326,-5768,-6187,-6597,-6990,-7369,-7734,-8081,-8407,-8719, -9000,-9258,-9477,-9662,-9801,-9902,-9951,-9963,-9929,-9854,-9728,-9565,-9357,-9111,-8822,-8495,-8119,-7713,-7263,-6776, -6258,-5721,-5163,-4595,-4030,-3470,-2931,-2417,-1933,-1486,-1074,-704,-375,-89,152,356,522,652,754,823, 855,879,881,878,859,849,838,847,862,904,965,1066,1189,1358,1560,1809,2091,2420,2778,3177, 3605,4059,4527,5016,5505,5999,6490,6971,7437,7885,8306,8691,9041,9347,9602,9800,9940,10019,10040,9997, 9902,9751,9550,9303,9024,8708,8373,8004,7613,7191,6750,6281,5793,5283,4755,4203,3642,3070,2497,1916, 1343,774,211,-343,-884,-1419,-1946,-2470,-2990,-3499,-4004,-4503,-4987,-5463,-5930,-6376,-6802,-7198,-7568,-7915, -8233,-8523,-8789,-9027,-9241,-9426,-9586,-9718,-9819,-9875,-9895,-9865,-9795,-9668,-9490,-9257,-8979,-8644,-8269,-7855, -7412,-6936,-6436,-5918,-5391,-4852,-4312,-3774,-3244,-2726,-2231,-1752,-1316,-910,-547,-223,53,283,474,622, 732,814,867,896,910,909,908,901,903,907,936,977,1046,1133,1258,1413,1606,1824,2090,2382, 2720,3086,3490,3923,4381,4859,5356,5860,6360,6846,7319,7759,8171,8544,8875,9158,9392,9579,9712,9803, 9842,9832,9772,9666,9502,9295,9034,8736,8391,8004,7585,7144,6679,6196,5694,5190,4675,4153,3621,3092, 2546,1993,1427,865,289,-281,-857,-1426,-1989,-2539,-3074,-3586,-4084,-4563,-5031,-5478,-5913,-6334,-6745,-7147, -7532,-7901,-8254,-8577,-8874,-9145,-9376,-9577,-9733,-9849,-9919,-9957,-9951,-9906,-9822,-9701,-9533,-9323,-9071,-8775, -8429,-8043,-7603,-7139,-6631,-6095,-5541,-4978,-4403,-3845,-3292,-2766,-2261,-1794,-1353,-954,-586,-267,20,256, 461,622,756,844,911,950,967,967,955,940,929,926,927,954,1003,1077,1184,1322,1499,1720, 1971,2271,2603,2970,3360,3788,4238,4708,5182,5675,6163,6658,7135,7605,8047,8464,8842,9185,9466,9700, 9871,9982,10032,10025,9959,9848,9689,9485,9243,8963,8651,8316,7940,7538,7112,6650,6163,5653,5126,4580, 4022,3451,2885,2314,1751,1189,632,81,-465,-1012,-1546,-2086,-2618,-3153,-3672,-4187,-4688,-5175,-5639,-6095, -6520,-6929,-7311,-7665,-7994,-8307,-8589,-8857,-9095,-9314,-9502,-9661,-9784,-9874,-9915,-9908,-9855,-9749,-9599,-9389, -9136,-8832,-8487,-8104,-7684,-7237,-6762,-6257,-5742,-5205,-4662,-4110,-3570,-3029,-2510,-2012,-1545,-1115,-728,-375, -77,184,393,569,700,803,870,916,940,951,946,939,935,935,943,969,1014,1081,1177,1300, 1456,1650,1878,2143,2453,2801,3183,3596,4038,4507,4996,5487,5995,6486,6966,7419,7854,8255,8620,8941, 9228,9461,9652,9789,9877,9917,9905,9829,9701,9522,9292,9012,8691,8330,7935,7516,7076,6618,6143,5657, 5153,4642,4122,3588,3041,2483,1914,1339,752,173,-406,-982,-1548,-2094,-2631,-3146,-3651,-4140,-4619,-5084, -5542,-5982,-6417,-6841,-7248,-7641,-8013,-8355,-8674,-8953,-9204,-9418,-9600,-9740,-9841,-9911,-9944,-9940,-9901,-9817, -9700,-9531,-9314,-9052,-8741,-8378,-7972,-7522,-7033,-6519,-5977,-5427,-4867,-4313,-3758,-3230,-2713,-2229,-1766,-1338, -945,-590,-271,1,239,434,586,705,795,843,878,886,886,874,860,849,853,864,897,957, 1046,1162,1316,1510,1736,1999,2306,2644,3013,3415,3840,4291,4763,5248,5740,6238,6734,7223,7686,8130, 8533,8900,9211,9479,9679,9826,9915,9944,9927,9858,9737,9585,9384,9143,8864,8549,8199,7817,7397,6947, 6466,5965,5445,4907,4362,3811,3251,2697,2141,1589,1039,484,-66,-618,-1169,-1720,-2265,-2808,-3347,-3874, -4383,-4875,-5345,-5801,-6233,-6644,-7032,-7404,-7752,-8082,-8394,-8689,-8957,-9205,-9418,-9604,-9754,-9867,-9928,-9952, -9918,-9838,-9711,-9538,-9318,-9060,-8748,-8405,-8021,-7605,-7153,-6674,-6170,-5642,-5095,-4545,-3992,-3439,-2905,-2390, -1906,-1454,-1041,-668,-344,-54,185,387,544,671,766,833,872,896,905,903,894,891,887,903, 929,981,1050,1153,1281,1449,1654,1896,2179,2501,2860,3260,3686,4141,4607,5098,5587,6081,6562,7030, 7484,7901,8303,8663,8991,9268,9510,9690,9827,9901,9926,9886,9791,9633,9431,9181,8889,8558,8194,7803, 7395,6957,6511,6043,5561,5055,4538,4004,3457,2894,2325,1745,1164,581,6,-563,-1118,-1666,-2203,-2722, -3231,-3731,-4222,-4704,-5177,-5642,-6097,-6538,-6962,-7367,-7754,-8109,-8435,-8729,-8994,-9224,-9424,-9595,-9735,-9838, -9911,-9944,-9950,-9909,-9828,-9696,-9521,-9290,-9010,-8676,-8303,-7880,-7419,-6929,-6414,-5886,-5345,-4795,-4252,-3716, -3191,-2688,-2204,-1749,-1321,-931,-579,-266,6,232,422,567,679,756,810,834,848,846,841,834, 833,842,868,912,984,1087,1218,1381,1581,1822,2097,2405,2747,3121,3526,3958,4415,4897,5386,5885, 6384,6881,7357,7815,8234,8617,8952,9241,9470,9654,9782,9859,9876,9851,9778,9661,9500,9296,9043,8755, 8423,8054,7650,7215,6742,6256,5749,5233,4700,4165,3625,3086,2540,1996,1449,901,342,-220,-782,-1340, -1899,-2446,-2985,-3515,-4027,-4522,-4993,-5444,-5882,-6299,-6697,-7082,-7448,-7804,-8137,-8454,-8747,-9017,-9253,-9457, -9624,-9755,-9838,-9877,-9869,-9825,-9724,-9585,-9402,-9182,-8915,-8612,-8264,-7878,-7452,-6997,-6503,-5988,-5449,-4891, -4329,-3773,-3228,-2696,-2189,-1719,-1285,-887,-529,-212,59,294,484,645,762,856,915,958,979,986, 982,975,968,971,984,1016,1064,1149,1252,1395,1572,1792,2049,2345,2676,3049,3450,3882,4334,4800, 5279,5768,6243,6723,7180,7626,8046,8438,8796,9117,9387,9607,9778,9885,9940,9927,9860,9738,9564,9340, 9080,8779,8451,8086,7699,7291,6861,6403,5932,5434,4916,4378,3826,3263,2696,2115,1537,959,390,-174, -730,-1274,-1811,-2340,-2856,-3370,-3874,-4370,-4862,-5346,-5815,-6272,-6703,-7116,-7505,-7872,-8211,-8522,-8799,-9048, -9276,-9471,-9643,-9780,-9889,-9961,-9998,-9989,-9946,-9841,-9700,-9490,-9242,-8939,-8588,-8189,-7765,-7293,-6802,-6290, -5764,-5235,-4687,-4147,-3610,-3080,-2574,-2086,-1625,-1201,-810,-459,-149,111,336,516,658,760,838,890, 918,932,940,941,945,951,973,1010,1068,1150,1265,1404,1580,1785,2028,2307,2625,2967,3354,3769, 4213,4676,5163,5655,6159,6651,7135,7600,8034,8431,8784,9096,9365,9575,9745,9859,9927,9941,9905,9825, 9695,9517,9291,9020,8700,8344,7949,7525,7074,6599,6106,5604,5086,4570,4039,3505,2960,2416,1860,1304, 735,167,-410,-983,-1550,-2106,-2652,-3182,-3698,-4194,-4676,-5138,-5582,-6011,-6437,-6840,-7231,-7609,-7971,-8312, -8627,-8914,-9175,-9399,-9582,-9730,-9831,-9902,-9923,-9905,-9841,-9744,-9602,-9422,-9193,-8928,-8614,-8258,-7853,-7417, -6935,-6430,-5894,-5344,-4778,-4216,-3660,-3127,-2604,-2115,-1652,-1229,-845,-497,-184,81,311,502,657,777, 862,921,958,973,982,980,973,969,974,993,1031,1091,1180,1309,1463,1658,1887,2158,2466,2813, 3190,3603,4031,4486,4950,5430,5913,6401,6873,7344,7793,8215,8606,8962,9270,9534,9737,9880,9969,9996, 9967,9880,9743,9564,9338,9077,8784,8458,8096,7708,7292,6851,6382,5895,5380,4841,4295,3731,3164,2594, 2020,1450,884,325,-225,-775,-1317,-1860,-2396,-2928,-3448,-3967,-4470,-4974,-5456,-5924,-6366,-6791,-7189,-7565, -7918,-8244,-8551,-8824,-9077,-9309,-9510,-9689,-9830,-9938,-10008,-10035,-10012,-9946,-9823,-9653,-9431,-9156,-8843,-8486, -8091,-7660,-7205,-6711,-6204,-5682,-5150,-4605,-4063,-3521,-2998,-2488,-2008,-1552,-1137,-761,-429,-138,105,314, 474,609,701,770,816,847,857,864,871,872,891,910,956,1021,1109,1224,1375,1550,1769,2020, 2307,2636,2998,3394,3826,4279,4757,5250,5747,6246,6735,7203,7662,8076,8464,8808,9114,9373,9590,9752, 9875,9935,9951,9908,9819,9675,9478,9235,8947,8611,8246,7841,7417,6968,6504,6021,5525,5022,4511,3986, 3440,2899,2340,1776,1204,631,54,-518,-1088,-1644,-2187,-2712,-3235,-3733,-4216,-4685,-5147,-5593,-6032,-6457, -6872,-7264,-7646,-8001,-8339,-8645,-8921,-9158,-9364,-9525,-9656,-9748,-9803,-9823,-9806,-9743,-9643,-9503,-9317,-9087, -8810,-8482,-8108,-7689,-7234,-6746,-6224,-5686,-5137,-4586,-4028,-3490,-2964,-2466,-1987,-1541,-1126,-752,-413,-112, 153,367,556,696,807,885,938,967,982,978,977,968,971,978,1004,1053,1122,1222,1357,1527, 1733,1975,2251,2566,2916,3297,3705,4139,4589,5059,5535,6020,6507,6990,7454,7900,8313,8698,9030,9322, 9556,9734,9849,9915,9919,9875,9783,9639,9453,9232,8969,8675,8341,7974,7577,7143,6686,6202,5690,5170, 4629,4077,3517,2956,2399,1842,1282,728,175,-377,-923,-1477,-2019,-2564,-3100,-3634,-4148,-4650,-5136,-5608, -6056,-6481,-6887,-7274,-7635,-7979,-8299,-8607,-8884,-9141,-9372,-9578,-9744,-9880,-9971,-10022,-10025,-9981,-9887,-9750, -9559,-9321,-9039,-8719,-8361,-7969,-7537,-7078,-6590,-6078,-5551,-5008,-4464,-3915,-3374,-2850,-2351,-1874,-1443,-1039, -685,-368,-94,140,325,482,603,693,753,793,816,832,829,837,843,856,882,923,987,1080, 1193,1352,1534,1758,2018,2319,2653,3031,3435,3872,4330,4805,5292,5779,6266,6742,7200,7635,8047,8420, 8761,9053,9311,9520,9682,9789,9842,9839,9778,9661,9497,9279,9014,8703,8364,7986,7589,7167,6723,6263, 5786,5296,4791,4272,3736,3187,2622,2057,1481,902,329,-240,-805,-1358,-1904,-2431,-2950,-3451,-3946,-4422, -4897,-5362,-5816,-6256,-6687,-7096,-7493,-7856,-8203,-8514,-8803,-9056,-9274,-9461,-9613,-9729,-9816,-9870,-9888,-9867, -9804,-9698,-9548,-9347,-9098,-8800,-8448,-8058,-7620,-7150,-6654,-6131,-5593,-5046,-4499,-3958,-3423,-2905,-2411,-1937, -1491,-1083,-705,-370,-70,185,404,577,715,817,899,940,972,984,990,984,991,995,1020,1061, 1118,1206,1321,1469,1649,1867,2118,2408,2725,3079,3465,3881,4318,4778,5251,5735,6225,6716,7198,7656, 8090,8491,8851,9165,9424,9633,9787,9884,9933,9931,9879,9782,9635,9449,9218,8950,8636,8290,7904,7489, 7034,6561,6060,5549,5016,4479,3933,3384,2832,2283,1728,1176,616,56,-502,-1064,-1621,-2181,-2727,-3264, -3791,-4298,-4786,-5264,-5714,-6154,-6568,-6967,-7345,-7710,-8054,-8383,-8686,-8976,-9226,-9454,-9646,-9804,-9915,-9989, -10010,-10000,-9930,-9824,-9667,-9472,-9225,-8941,-8617,-8256,-7856,-7421,-6947,-6452,-5924,-5386,-4829,-4272,-3723,-3182, -2659,-2171,-1707,-1281,-896,-549,-248,17,237,419,571,687,774,835,870,896,908,913,919,930, 939,968,1015,1085,1182,1314,1473,1673,1910,2187,2496,2846,3227,3642,4080,4543,5015,5498,5981,6455, 6926,7380,7810,8219,8595,8934,9230,9478,9677,9826,9916,9946,9923,9832,9698,9503,9276,9000,8694,8343, 7974,7576,7164,6718,6254,5773,5272,4748,4215,3667,3103,2527,1951,1373,800,230,-332,-885,-1429,-1965, -2493,-3004,-3511,-4016,-4506,-4990,-5463,-5921,-6365,-6795,-7200,-7586,-7940,-8263,-8569,-8838,-9085,-9295,-9478,-9632, -9753,-9844,-9901,-9918,-9893,-9822,-9703,-9534,-9318,-9043,-8730,-8358,-7957,-7515,-7042,-6541,-6031,-5495,-4958,-4415, -3884,-3359,-2848,-2349,-1883,-1448,-1040,-672,-344,-61,182,387,550,675,771,835,878,899,911,916, 918,922,939,965,1015,1082,1179,1305,1463,1649,1875,2135,2430,2758,3122,3517,3941,4388,4862,5345, 5839,6334,6824,7300,7751,8166,8555,8892,9194,9439,9636,9779,9873,9915,9913,9863,9763,9614,9416,9174, 8891,8564,8199,7797,7362,6910,6424,5928,5419,4900,4369,3837,3297,2755,2200,1645,1084,520,-53,-622, -1189,-1750,-2307,-2849,-3376,-3885,-4386,-4857,-5317,-5764,-6192,-6605,-7008,-7389,-7758,-8111,-8435,-8745,-9022,-9273, -9487,-9658,-9796,-9890,-9943,-9958,-9926,-9851,-9736,-9582,-9382,-9142,-8854,-8526,-8159,-7752,-7303,-6820,-6309,-5778, -5229,-4674,-4119,-3575,-3047,-2544,-2063,-1622,-1210,-840,-507,-215,37,250,430,568,681,761,819,853, 867,876,881,883,887,908,940,991,1069,1175,1315,1490,1700,1954,2237,2563,2921,3312,3728,4167, 4624,5099,5578,6057,6533,7001,7457,7888,8292,8669,8998,9286,9522,9699,9826,9893,9899,9852,9751,9597, 9402,9163,8888,8581,8240,7869,7477,7056,6605,6132,5640,5124,4595,4047,3489,2924,2353,1779,1215,653, 99,-453,-996,-1538,-2067,-2599,-3119,-3634,-4136,-4638,-5122,-5591,-6041,-6480,-6892,-7284,-7650,-7990,-8301,-8591, -8857,-9096,-9315,-9496,-9651,-9778,-9863,-9911,-9917,-9878,-9785,-9648,-9459,-9218,-8931,-8597,-8228,-7815,-7378,-6908, -6415,-5899,-5376,-4837,-4300,-3762,-3238,-2726,-2231,-1766,-1334,-934,-579,-260,11,241,428,584,700,786, 847,888,914,924,930,938,945,965,1000,1058,1133,1235,1369,1531,1727,1958,2225,2524,2867,3237, 3644,4079,4538,5010,5500,5992,6483,6957,7420,7854,8254,8615,8942,9224,9460,9644,9780,9866,9906,9891, 9827,9714,9548,9331,9069,8757,8417,8033,7621,7183,6725,6246,5752,5254,4740,4215,3681,3141,2589,2035, 1465,895,318,-254,-827,-1389,-1948,-2486,-3021,-3533,-4026,-4509,-4979,-5431,-5874,-6302,-6724,-7125,-7514,-7883, -8229,-8550,-8845,-9107,-9332,-9525,-9681,-9795,-9878,-9918,-9917,-9880,-9805,-9690,-9533,-9326,-9076,-8782,-8436,-8052, -7626,-7162,-6666,-6145,-5604,-5056,-4500,-3957,-3418,-2904,-2406,-1941,-1504,-1105,-737,-408,-119,128,337,514, 653,756,836,887,921,937,944,952,960,970,998,1036,1101,1192,1312,1466,1655,1881,2141,2442, 2770,3137,3529,3950,4391,4848,5316,5800,6277,6760,7224,7678,8108,8504,8859,9182,9437,9658,9814,9906, 9950,9932,9864,9752,9594,9391,9149,8870,8560,8215,7836,7429,6996,6532,6041,5529,5003,4460,3909,3351, 2791,2229,1670,1110,555,4,-545,-1095,-1638,-2181,-2714,-3251,-3765,-4274,-4770,-5255,-5709,-6154,-6574,-6977, -7353,-7710,-8037,-8354,-8640,-8907,-9149,-9368,-9552,-9706,-9819,-9895,-9926,-9916,-9854,-9744,-9589,-9384,-9131,-8836, -8501,-8125,-7715,-7273,-6804,-6314,-5797,-5268,-4728,-4181,-3643,-3112,-2602,-2112,-1651,-1224,-842,-495,-196,70, 285,469,615,730,811,876,911,941,955,965,977,995,1016,1063,1117,1203,1309,1446,1620,1822, 2062,2339,2658,3009,3394,3808,4253,4713,5193,5675,6165,6639,7105,7553,7973,8358,8715,9027,9304,9534, 9715,9840,9919,9942,9917,9831,9695,9502,9269,8979,8660,8299,7916,7496,7063,6608,6135,5649,5148,4631, 4104,3560,3009,2448,1877,1301,719,144,-431,-993,-1553,-2093,-2626,-3143,-3649,-4142,-4619,-5091,-5552,-5997, -6437,-6855,-7266,-7648,-8008,-8348,-8657,-8930,-9174,-9383,-9564,-9706,-9816,-9889,-9931,-9925,-9888,-9811,-9689,-9520, -9304,-9036,-8725,-8360,-7959,-7514,-7041,-6537,-6009,-5470,-4926,-4382,-3844,-3318,-2808,-2323,-1863,-1433,-1035,-672, -348,-66,182,381,548,685,780,851,903,932,949,954,965,975,997,1029,1086,1158,1261,1395, 1563,1763,2001,2266,2580,2916,3287,3683,4110,4558,5021,5496,5987,6473,6953,7425,7870,8289,8676,9019, 9312,9556,9744,9881,9961,9987,9964,9891,9775,9614,9406,9167,8877,8554,8198,7803,7377,6928,6444,5946, 5424,4893,4351,3810,3254,2700,2146,1592,1036,478,-79,-634,-1193,-1749,-2296,-2840,-3370,-3891,-4396,-4885, -5355,-5808,-6231,-6646,-7040,-7417,-7770,-8106,-8420,-8716,-8987,-9232,-9445,-9627,-9766,-9871,-9928,-9949,-9913,-9840, -9711,-9548,-9334,-9083,-8783,-8451,-8073,-7666,-7220,-6749,-6248,-5730,-5191,-4649,-4101,-3565,-3040,-2536,-2059,-1622, -1212,-841,-513,-224,20,227,395,537,640,719,772,812,833,848,853,865,878,907,944,1011, 1094,1207,1349,1529,1739,1996,2282,2609,2971,3366,3789,4231,4698,5174,5655,6132,6603,7063,7504,7916, 8305,8659,8971,9242,9468,9641,9764,9824,9830,9786,9682,9524,9321,9072,8786,8454,8099,7716,7310,6876, 6426,5953,5471,4962,4442,3905,3353,2787,2221,1649,1071,500,-70,-635,-1185,-1727,-2258,-2781,-3291,-3796, -4290,-4773,-5245,-5716,-6168,-6606,-7023,-7417,-7794,-8138,-8458,-8750,-9017,-9242,-9443,-9612,-9757,-9860,-9933,-9971, -9968,-9921,-9836,-9698,-9514,-9280,-8994,-8660,-8286,-7867,-7419,-6934,-6433,-5911,-5379,-4840,-4307,-3775,-3254,-2754, -2278,-1825,-1403,-1014,-664,-350,-78,149,339,491,609,697,760,800,822,836,843,849,864,887, 926,986,1072,1181,1323,1490,1699,1941,2217,2524,2871,3246,3655,4081,4537,5008,5494,5985,6477,6955, 7421,7857,8261,8631,8957,9233,9462,9639,9762,9836,9858,9834,9760,9638,9472,9262,9010,8716,8372,8001, 7596,7158,6693,6215,5711,5198,4672,4142,3606,3068,2522,1972,1415,861,298,-263,-828,-1386,-1944,-2489, -3024,-3542,-4046,-4533,-5008,-5456,-5895,-6313,-6713,-7102,-7476,-7833,-8167,-8479,-8772,-9030,-9262,-9458,-9617,-9738, -9814,-9847,-9844,-9795,-9699,-9566,-9384,-9168,-8905,-8602,-8253,-7875,-7444,-6989,-6501,-5989,-5455,-4912,-4355,-3813, -3273,-2759,-2264,-1804,-1371,-978,-620,-303,-28,216,416,577,707,812,884,936,968,988,997,1008, 1015,1029,1059,1106,1171,1263,1387,1542,1727,1954,2221,2520,2856,3229,3626,4051,4494,4955,5424,5900, 6372,6841,7291,7732,8139,8522,8870,9179,9439,9647,9801,9896,9933,9917,9847,9722,9548,9329,9075,8778, 8452,8091,7710,7299,6862,6399,5922,5416,4899,4357,3804,3244,2673,2100,1531,958,397,-171,-718,-1262, -1801,-2337,-2859,-3379,-3891,-4390,-4886,-5363,-5828,-6279,-6709,-7117,-7495,-7859,-8188,-8497,-8776,-9033,-9260,-9455, -9627,-9766,-9878,-9943,-9975,-9962,-9904,-9798,-9643,-9437,-9185,-8881,-8536,-8148,-7733,-7277,-6801,-6295,-5783,-5256, -4723,-4186,-3662,-3142,-2644,-2163,-1717,-1297,-917,-575,-277,-16,202,386,526,637,722,779,817,843, 860,873,886,904,938,988,1056,1144,1268,1417,1597,1806,2059,2344,2661,3015,3404,3817,4260,4720, 5198,5688,6175,6661,7134,7578,8002,8388,8735,9045,9305,9519,9684,9797,9865,9881,9841,9759,9629,9440, 9214,8939,8622,8265,7871,7453,7010,6540,6058,5560,5050,4535,4000,3468,2926,2371,1812,1250,679,110, -464,-1031,-1591,-2142,-2683,-3202,-3715,-4206,-4689,-5150,-5601,-6034,-6460,-6866,-7261,-7640,-8000,-8334,-8646,-8923, -9177,-9392,-9570,-9712,-9817,-9883,-9905,-9891,-9838,-9744,-9606,-9427,-9200,-8939,-8623,-8269,-7872,-7438,-6962,-6464, -5938,-5403,-4858,-4310,-3769,-3246,-2737,-2256,-1800,-1383,-996,-651,-339,-68,170,365,529,652,750,821, 872,904,925,937,949,961,982,1022,1079,1155,1264,1401,1573,1777,2015,2294,2609,2952,3331,3737, 4162,4612,5073,5545,6023,6498,6970,7430,7864,8277,8652,8989,9284,9529,9714,9851,9925,9947,9910,9831, 9694,9519,9296,9040,8744,8417,8060,7668,7250,6805,6329,5837,5322,4795,4247,3691,3130,2565,2002,1438, 879,321,-233,-785,-1330,-1872,-2410,-2944,-3463,-3981,-4480,-4974,-5444,-5903,-6338,-6761,-7154,-7523,-7869,-8198, -8502,-8783,-9039,-9270,-9465,-9641,-9775,-9877,-9939,-9958,-9927,-9851,-9726,-9552,-9335,-9069,-8763,-8411,-8024,-7605, -7154,-6679,-6182,-5666,-5141,-4601,-4067,-3539,-3023,-2520,-2049,-1605,-1201,-831,-498,-210,32,245,413,551, 651,734,791,835,858,876,892,911,937,975,1028,1104,1201,1331,1487,1675,1901,2157,2457,2784, 3142,3548,3972,4419,4886,5365,5851,6333,6812,7264,7702,8107,8485,8820,9116,9370,9576,9732,9843,9899, 9905,9855,9753,9599,9398,9148,8858,8527,8160,7762,7337,6899,6439,5959,5468,4961,4440,3915,3370,2821, 2259,1691,1115,543,-27,-593,-1157,-1709,-2245,-2771,-3286,-3783,-4269,-4743,-5211,-5660,-6101,-6526,-6939,-7333, -7708,-8058,-8388,-8680,-8948,-9182,-9385,-9545,-9680,-9772,-9831,-9852,-9837,-9780,-9682,-9540,-9355,-9118,-8839,-8512, -8142,-7728,-7284,-6796,-6289,-5767,-5232,-4691,-4151,-3621,-3106,-2611,-2141,-1697,-1284,-906,-568,-263,-1,225, 416,565,691,775,841,888,914,928,941,953,971,992,1035,1104,1187,1299,1451,1627,1844,2091, 2376,2695,3046,3422,3829,4259,4709,5172,5649,6127,6608,7075,7532,7967,8368,8733,9050,9326,9548,9718, 9832,9894,9897,9857,9761,9626,9447,9226,8962,8670,8331,7965,7558,7131,6670,6187,5678,5166,4630,4087, 3536,2983,2427,1873,1316,762,207,-347,-902,-1454,-2001,-2541,-3078,-3600,-4111,-4608,-5084,-5550,-5991,-6413, -6815,-7204,-7564,-7907,-8231,-8540,-8815,-9070,-9297,-9493,-9654,-9783,-9866,-9908,-9908,-9856,-9760,-9619,-9430,-9204, -8930,-8616,-8265,-7872,-7448,-6996,-6512,-6008,-5485,-4949,-4408,-3872,-3340,-2828,-2335,-1871,-1445,-1050,-701,-386, -110,127,317,478,606,707,775,830,865,892,901,921,937,962,997,1057,1130,1233,1357,1523, 1718,1948,2214,2516,2859,3234,3633,4067,4514,4983,5458,5934,6408,6872,7320,7748,8147,8513,8848,9136, 9382,9585,9731,9826,9871,9856,9787,9662,9493,9271,9008,8701,8366,7995,7602,7179,6740,6279,5805,5304, 4794,4270,3731,3177,2614,2044,1470,896,329,-239,-796,-1352,-1892,-2420,-2941,-3450,-3947,-4433,-4912,-5378, -5836,-6273,-6700,-7108,-7491,-7857,-8197,-8501,-8784,-9032,-9246,-9434,-9595,-9711,-9802,-9850,-9871,-9842,-9780,-9668, -9516,-9305,-9054,-8750,-8404,-8013,-7586,-7122,-6635,-6121,-5599,-5063,-4525,-3992,-3469,-2957,-2470,-2000,-1561,-1152, -783,-444,-151,107,322,500,646,753,835,888,930,952,968,982,996,1014,1051,1102,1173,1272, 1399,1552,1742,1963,2223,2512,2836,3189,3578,3988,4430,4885,5356,5834,6322,6798,7267,7713,8132,8522, 8869,9171,9420,9626,9777,9877,9924,9926,9872,9776,9630,9443,9214,8939,8621,8274,7885,7467,7018,6547, 6054,5544,5022,4494,3949,3405,2856,2304,1747,1190,626,66,-497,-1062,-1621,-2178,-2718,-3251,-3770,-4274, -4755,-5226,-5678,-6115,-6528,-6930,-7316,-7680,-8027,-8355,-8659,-8943,-9190,-9412,-9595,-9745,-9849,-9924,-9943,-9927, -9863,-9757,-9608,-9419,-9179,-8907,-8586,-8234,-7837,-7408,-6944,-6455,-5933,-5404,-4864,-4322,-3786,-3259,-2753,-2274, -1821,-1402,-1023,-679,-379,-114,113,302,459,583,679,750,803,836,861,877,894,917,944,989, 1046,1135,1243,1385,1559,1766,2010,2294,2608,2964,3344,3753,4186,4641,5102,5575,6043,6514,6974,7417, 7838,8235,8596,8922,9206,9442,9630,9761,9836,9856,9820,9732,9591,9397,9168,8897,8589,8253,7884,7489, 7066,6619,6157,5670,5160,4634,4100,3547,2990,2416,1850,1276,709,140,-414,-969,-1515,-2056,-2580,-3103, -3612,-4118,-4612,-5091,-5560,-6019,-6458,-6881,-7278,-7657,-8005,-8329,-8627,-8896,-9142,-9354,-9544,-9696,-9819,-9909, -9961,-9972,-9946,-9867,-9745,-9571,-9351,-9077,-8765,-8400,-8011,-7577,-7115,-6628,-6123,-5601,-5078,-4543,-4019,-3499, -2990,-2500,-2042,-1602,-1202,-837,-512,-228,21,225,391,530,628,709,762,799,826,846,864,884, 917,958,1020,1096,1211,1346,1512,1711,1947,2210,2514,2844,3215,3613,4038,4486,4956,5433,5924,6404, 6880,7343,7783,8190,8564,8895,9184,9425,9617,9759,9855,9894,9890,9835,9730,9578,9378,9137,8839,8514, 8150,7750,7324,6874,6396,5908,5408,4891,4369,3837,3299,2749,2194,1634,1076,503,-67,-630,-1198,-1752, -2304,-2837,-3357,-3860,-4356,-4827,-5289,-5729,-6163,-6576,-6984,-7364,-7733,-8079,-8403,-8701,-8975,-9212,-9417,-9585, -9720,-9810,-9863,-9873,-9847,-9780,-9668,-9517,-9324,-9085,-8801,-8482,-8112,-7711,-7265,-6790,-6288,-5769,-5228,-4688, -4149,-3620,-3104,-2614,-2140,-1706,-1294,-929,-590,-297,-40,178,368,515,641,732,799,847,877,900, 920,935,960,994,1044,1110,1203,1326,1476,1664,1885,2144,2435,2763,3116,3506,3921,4358,4805,5272, 5742,6214,6677,7133,7578,7999,8384,8747,9061,9330,9549,9714,9824,9882,9876,9826,9721,9570,9373,9137, 8862,8561,8215,7848,7447,7023,6571,6092,5594,5078,4549,4000,3446,2885,2322,1755,1194,634,79,-475, -1022,-1565,-2098,-2636,-3158,-3676,-4182,-4677,-5154,-5621,-6070,-6498,-6903,-7291,-7651,-7998,-8307,-8600,-8864,-9105, -9318,-9503,-9655,-9780,-9858,-9901,-9898,-9854,-9764,-9622,-9431,-9195,-8909,-8586,-8224,-7823,-7393,-6933,-6449,-5948, -5427,-4898,-4370,-3840,-3324,-2816,-2332,-1877,-1452,-1059,-711,-398,-132,105,295,451,573,672,742,791, 823,847,869,885,906,941,982,1052,1130,1242,1380,1553,1753,1993,2269,2571,2916,3288,3693,4124, 4575,5043,5525,6006,6479,6945,7393,7817,8209,8564,8886,9159,9396,9580,9713,9799,9833,9812,9748,9627, 9457,9240,8978,8673,8333,7954,7553,7125,6675,6203,5717,5217,4709,4186,3653,3110,2559,1995,1430,861, 291,-280,-844,-1402,-1953,-2483,-3009,-3518,-4010,-4493,-4965,-5414,-5857,-6287,-6709,-7109,-7490,-7849,-8191,-8500, -8787,-9037,-9261,-9447,-9594,-9707,-9790,-9827,-9832,-9794,-9720,-9600,-9441,-9233,-8983,-8683,-8341,-7957,-7532,-7078, -6584,-6073,-5545,-5013,-4474,-3940,-3415,-2914,-2427,-1965,-1535,-1137,-774,-448,-157,91,300,485,629,736, 823,881,927,944,966,981,998,1019,1062,1114,1191,1289,1420,1583,1777,2006,2274,2572,2907,3266, 3654,4070,4507,4957,5422,5895,6369,6838,7293,7733,8146,8528,8869,9171,9422,9625,9766,9858,9893,9881, 9809,9700,9538,9342,9099,8823,8507,8159,7777,7368,6927,6459,5968,5459,4934,4395,3848,3297,2738,2183, 1620,1062,504,-54,-607,-1160,-1710,-2253,-2791,-3325,-3838,-4342,-4834,-5309,-5762,-6206,-6618,-7020,-7394,-7750, -8085,-8399,-8684,-8957,-9191,-9411,-9588,-9732,-9840,-9909,-9932,-9916,-9848,-9740,-9579,-9376,-9126,-8839,-8503,-8140, -7733,-7301,-6837,-6346,-5836,-5318,-4780,-4243,-3713,-3193,-2695,-2216,-1768,-1355,-975,-635,-338,-78,140,326, 478,594,685,757,805,839,862,880,905,928,962,1013,1080,1172,1287,1435,1614,1827,2071,2354, 2675,3026,3410,3821,4259,4716,5184,5666,6136,6605,7061,7497,7911,8295,8643,8957,9227,9450,9625,9748, 9824,9841,9807,9718,9579,9388,9156,8873,8557,8207,7827,7418,6996,6542,6075,5582,5083,4566,4039,3490, 2940,2375,1806,1229,658,89,-475,-1038,-1588,-2129,-2656,-3172,-3681,-4173,-4654,-5129,-5588,-6033,-6473,-6888, -7289,-7667,-8019,-8344,-8647,-8916,-9158,-9360,-9538,-9679,-9788,-9860,-9900,-9896,-9858,-9771,-9647,-9475,-9249,-8981, -8671,-8308,-7908,-7470,-7005,-6514,-6000,-5472,-4941,-4405,-3878,-3362,-2863,-2385,-1930,-1503,-1113,-755,-435,-155, 89,290,458,594,695,776,832,870,901,917,935,960,991,1035,1102,1190,1305,1442,1619,1822, 2065,2338,2651,2987,3359,3752,4177,4623,5083,5557,6034,6516,6990,7447,7885,8290,8663,8991,9277,9515, 9698,9831,9905,9934,9916,9846,9730,9571,9368,9126,8835,8512,8153,7757,7333,6884,6409,5914,5400,4878, 4343,3803,3257,2709,2156,1602,1044,486,-76,-635,-1194,-1743,-2290,-2827,-3354,-3868,-4363,-4846,-5306,-5759, -6183,-6592,-6986,-7362,-7715,-8047,-8365,-8657,-8920,-9156,-9360,-9534,-9668,-9758,-9810,-9821,-9781,-9706,-9583,-9419, -9210,-8958,-8665,-8338,-7965,-7560,-7119,-6653,-6153,-5640,-5110,-4577,-4042,-3514,-2998,-2509,-2043,-1609,-1206,-843, -512,-225,21,237,411,554,670,757,822,873,905,929,950,971,999,1042,1089,1168,1265,1391, 1542,1734,1961,2216,2507,2843,3205,3600,4013,4453,4909,5381,5845,6318,6777,7228,7656,8063,8440,8790, 9087,9349,9560,9725,9831,9881,9880,9826,9715,9559,9357,9106,8822,8498,8146,7765,7360,6926,6479,6006, 5515,4996,4471,3933,3382,2818,2255,1681,1113,539,-25,-581,-1131,-1680,-2206,-2737,-3249,-3759,-4257,-4744, -5218,-5686,-6134,-6560,-6975,-7369,-7738,-8078,-8394,-8685,-8945,-9173,-9377,-9551,-9690,-9795,-9871,-9905,-9900,-9852, -9761,-9619,-9433,-9196,-8911,-8585,-8220,-7807,-7369,-6901,-6411,-5901,-5382,-4856,-4331,-3808,-3301,-2801,-2330,-1880, -1463,-1075,-730,-420,-148,81,276,436,559,656,723,777,810,841,856,880,905,945,999,1070, 1163,1284,1436,1611,1826,2073,2353,2663,3012,3389,3793,4220,4670,5138,5614,6095,6574,7037,7489,7906, 8299,8650,8964,9228,9452,9621,9742,9807,9828,9802,9728,9601,9429,9211,8950,8653,8310,7940,7532,7095, 6641,6160,5665,5159,4636,4110,3578,3034,2485,1932,1372,814,245,-318,-880,-1439,-1991,-2530,-3063,-3576, -4079,-4562,-5033,-5482,-5926,-6345,-6754,-7141,-7521,-7873,-8210,-8518,-8804,-9060,-9285,-9472,-9629,-9747,-9820,-9853, -9850,-9803,-9713,-9587,-9415,-9200,-8941,-8643,-8302,-7923,-7500,-7050,-6565,-6062,-5536,-5007,-4465,-3933,-3409,-2902, -2416,-1965,-1539,-1148,-790,-474,-193,51,257,428,568,680,764,824,869,905,926,948,969,1002, 1043,1101,1182,1288,1427,1591,1786,2024,2293,2600,2933,3308,3704,4124,4559,5017,5478,5950,6416,6876, 7320,7748,8151,8519,8859,9148,9398,9594,9739,9827,9857,9839,9764,9641,9474,9258,9010,8719,8391,8038, 7655,7249,6809,6349,5869,5366,4845,4307,3763,3210,2643,2077,1515,948,388,-169,-717,-1265,-1807,-2344, -2866,-3386,-3894,-4397,-4885,-5357,-5814,-6262,-6674,-7081,-7455,-7813,-8142,-8448,-8726,-8984,-9209,-9408,-9575,-9713, -9814,-9879,-9900,-9885,-9818,-9705,-9544,-9337,-9087,-8785,-8444,-8069,-7657,-7212,-6742,-6252,-5743,-5222,-4697,-4167, -3647,-3133,-2646,-2171,-1730,-1316,-941,-605,-308,-47,174,352,499,618,707,774,816,858,881,905, 931,959,1003,1061,1133,1236,1360,1515,1700,1919,2172,2457,2778,3127,3516,3927,4364,4817,5288,5762, 6238,6706,7168,7596,8012,8382,8720,9018,9273,9478,9642,9751,9813,9822,9784,9690,9552,9361,9125,8849, 8532,8174,7790,7374,6933,6468,5993,5502,4992,4474,3942,3404,2857,2303,1742,1174,605,31,-537,-1101, -1655,-2203,-2737,-3258,-3766,-4256,-4738,-5202,-5654,-6092,-6522,-6926,-7320,-7692,-8049,-8377,-8683,-8955,-9199,-9402, -9583,-9722,-9825,-9889,-9913,-9896,-9847,-9749,-9614,-9436,-9212,-8944,-8630,-8275,-7881,-7449,-6982,-6490,-5974,-5448, -4910,-4378,-3847,-3332,-2833,-2356,-1911,-1495,-1108,-761,-448,-172,68,269,437,570,679,758,818,855, 892,915,942,964,1001,1053,1121,1211,1330,1474,1656,1869,2111,2392,2710,3050,3430,3831,4253,4698, 5153,5622,6096,6560,7021,7472,7895,8295,8657,8986,9264,9497,9669,9800,9871,9887,9849,9769,9636,9466, 9240,8992,8696,8371,8007,7618,7200,6755,6279,5788,5277,4749,4207,3661,3108,2548,1988,1428,871,315, -240,-794,-1341,-1887,-2427,-2956,-3478,-3992,-4487,-4974,-5442,-5891,-6323,-6736,-7126,-7494,-7840,-8173,-8472,-8749, -9002,-9231,-9425,-9592,-9721,-9816,-9868,-9877,-9840,-9764,-9632,-9458,-9237,-8976,-8675,-8329,-7945,-7529,-7088,-6619, -6121,-5616,-5092,-4562,-4033,-3514,-3001,-2514,-2050,-1614,-1216,-855,-529,-246,2,213,383,521,630,720, 785,830,864,896,920,946,981,1028,1090,1173,1274,1412,1571,1770,1994,2255,2553,2886,3247,3647, 4063,4511,4968,5433,5910,6381,6843,7290,7714,8112,8478,8809,9100,9348,9549,9699,9803,9851,9853,9791, 9686,9530,9325,9070,8787,8455,8092,7698,7282,6840,6385,5906,5420,4911,4389,3849,3308,2749,2188,1615, 1047,477,-93,-659,-1219,-1765,-2302,-2833,-3343,-3847,-4335,-4813,-5280,-5734,-6175,-6603,-7013,-7400,-7770,-8118, -8441,-8732,-8992,-9223,-9423,-9583,-9716,-9808,-9873,-9895,-9880,-9818,-9720,-9575,-9389,-9154,-8871,-8546,-8180,-7770, -7331,-6854,-6360,-5848,-5328,-4797,-4271,-3749,-3246,-2758,-2290,-1851,-1444,-1071,-728,-424,-158,69,263,417, 539,635,710,761,799,828,852,875,907,944,999,1076,1175,1296,1455,1643,1862,2113,2400,2720, 3071,3445,3852,4280,4726,5185,5655,6128,6600,7055,7499,7920,8306,8658,8962,9228,9440,9600,9710,9766, 9773,9732,9639,9504,9325,9105,8840,8542,8205,7835,7428,6997,6540,6064,5562,5048,4518,3986,3442,2897, 2342,1790,1233,682,125,-431,-986,-1539,-2089,-2627,-3156,-3673,-4176,-4665,-5138,-5600,-6035,-6454,-6856,-7236, -7598,-7945,-8267,-8568,-8844,-9090,-9312,-9497,-9650,-9770,-9840,-9880,-9869,-9816,-9716,-9577,-9387,-9164,-8890,-8582, -8232,-7842,-7420,-6974,-6490,-5993,-5470,-4943,-4410,-3879,-3359,-2855,-2374,-1922,-1495,-1108,-758,-442,-169,68, 269,438,571,678,758,821,872,903,933,960,989,1025,1077,1141,1227,1340,1480,1652,1853,2094, 2363,2674,3017,3391,3788,4217,4658,5122,5583,6053,6514,6973,7407,7829,8218,8579,8903,9188,9426,9618, 9754,9843,9877,9854,9780,9657,9480,9264,9001,8701,8369,8009,7615,7198,6761,6311,5825,5333,4822,4292, 3753,3194,2638,2070,1502,926,367,-201,-754,-1305,-1848,-2374,-2891,-3406,-3902,-4393,-4870,-5340,-5794,-6232, -6652,-7057,-7435,-7792,-8125,-8427,-8708,-8957,-9170,-9365,-9518,-9641,-9732,-9788,-9805,-9776,-9708,-9598,-9440,-9234, -8979,-8680,-8337,-7955,-7536,-7086,-6609,-6109,-5598,-5073,-4556,-4028,-3517,-3010,-2529,-2064,-1632,-1226,-861,-528, -230,24,241,424,571,684,777,842,891,930,958,978,1010,1041,1086,1148,1234,1340,1469,1634, 1827,2055,2315,2607,2931,3283,3668,4080,4512,4960,5429,5898,6371,6834,7289,7719,8124,8495,8829,9119, 9364,9559,9703,9798,9848,9840,9791,9691,9540,9353,9120,8839,8526,8171,7786,7370,6923,6455,5970,5465, 4950,4428,3895,3355,2804,2250,1693,1133,568,7,-560,-1117,-1679,-2228,-2764,-3293,-3807,-4300,-4787,-5247, -5700,-6133,-6549,-6948,-7333,-7697,-8043,-8364,-8669,-8938,-9181,-9393,-9571,-9710,-9809,-9873,-9892,-9873,-9809,-9704, -9553,-9363,-9129,-8856,-8537,-8185,-7787,-7361,-6899,-6413,-5902,-5379,-4845,-4312,-3784,-3267,-2771,-2304,-1852,-1440, -1062,-722,-417,-150,84,275,444,575,679,758,815,864,899,929,956,989,1028,1084,1153,1248, 1372,1519,1703,1918,2168,2456,2768,3123,3504,3910,4335,4786,5242,5706,6164,6627,7079,7515,7924,8313, 8666,8987,9250,9476,9654,9778,9840,9857,9817,9727,9587,9400,9170,8904,8601,8266,7901,7508,7088,6639, 6175,5687,5180,4657,4121,3568,3010,2445,1880,1317,753,191,-365,-917,-1461,-2005,-2533,-3057,-3570,-4079, -4565,-5050,-5515,-5971,-6405,-6819,-7210,-7585,-7926,-8251,-8546,-8817,-9059,-9273,-9457,-9612,-9731,-9817,-9863,-9869, -9833,-9749,-9620,-9448,-9221,-8952,-8639,-8286,-7897,-7475,-7021,-6545,-6047,-5535,-5015,-4488,-3967,-3455,-2950,-2472, -2012,-1580,-1188,-823,-504,-219,29,234,406,546,651,737,800,847,882,911,935,970,1012,1059, 1126,1218,1329,1476,1642,1847,2083,2350,2653,2984,3353,3745,4164,4607,5066,5535,6010,6475,6944,7390, 7811,8207,8571,8891,9174,9403,9588,9728,9818,9857,9851,9786,9680,9520,9319,9068,8783,8451,8089,7694, 7271,6824,6356,5872,5376,4861,4341,3809,3269,2718,2160,1597,1030,462,-106,-670,-1231,-1788,-2333,-2866, -3378,-3882,-4372,-4842,-5302,-5750,-6187,-6598,-7003,-7387,-7755,-8093,-8416,-8705,-8973,-9205,-9401,-9564,-9689,-9778, -9831,-9840,-9816,-9750,-9641,-9487,-9289,-9049,-8768,-8443,-8077,-7674,-7234,-6760,-6268,-5757,-5231,-4698,-4172,-3656, -3150,-2663,-2202,-1770,-1367,-998,-666,-377,-112,110,297,449,577,672,746,798,839,866,895,919, 954,994,1054,1131,1232,1363,1524,1712,1940,2198,2493,2817,3169,3552,3960,4388,4833,5290,5753,6215, 6673,7123,7556,7965,8340,8692,8992,9249,9458,9615,9714,9771,9761,9711,9605,9458,9262,9029,8759,8454, 8111,7744,7344,6915,6459,5982,5486,4972,4444,3903,3354,2799,2238,1677,1118,560,3,-549,-1098,-1644, -2181,-2723,-3245,-3757,-4264,-4751,-5228,-5690,-6130,-6559,-6960,-7342,-7703,-8043,-8354,-8645,-8906,-9150,-9359,-9539, -9688,-9805,-9874,-9909,-9897,-9850,-9750,-9601,-9412,-9179,-8895,-8573,-8213,-7820,-7393,-6940,-6461,-5960,-5446,-4924, -4398,-3874,-3361,-2859,-2381,-1932,-1512,-1124,-774,-462,-194,41,240,401,534,641,719,785,826,864, 896,926,959,1006,1060,1134,1226,1347,1494,1670,1880,2125,2401,2713,3056,3431,3837,4261,4703,5168, 5635,6105,6570,7023,7456,7868,8249,8598,8911,9177,9404,9579,9712,9788,9817,9791,9718,9589,9417,9189, 8928,8625,8284,7912,7513,7083,6639,6169,5687,5191,4680,4149,3618,3072,2519,1955,1384,817,249,-321, -878,-1435,-1979,-2512,-3035,-3545,-4039,-4524,-4997,-5457,-5900,-6333,-6752,-7152,-7528,-7891,-8221,-8530,-8805,-9051, -9270,-9452,-9604,-9718,-9802,-9838,-9845,-9808,-9739,-9617,-9456,-9248,-8997,-8693,-8357,-7974,-7555,-7106,-6629,-6124, -5611,-5083,-4557,-4034,-3521,-3023,-2543,-2085,-1661,-1263,-895,-569,-280,-26,194,374,520,643,737,807, 863,897,929,958,989,1026,1077,1144,1237,1343,1481,1654,1859,2088,2363,2660,2995,3351,3740,4152, 4584,5033,5493,5954,6423,6879,7324,7751,8149,8518,8845,9131,9370,9557,9690,9778,9811,9790,9727,9614, 9458,9261,9016,8736,8420,8072,7685,7279,6833,6374,5882,5379,4854,4326,3785,3236,2682,2132,1572,1016, 458,-101,-658,-1209,-1761,-2304,-2842,-3370,-3881,-4382,-4867,-5334,-5786,-6221,-6637,-7032,-7405,-7761,-8097,-8412, -8697,-8961,-9196,-9409,-9579,-9718,-9818,-9879,-9897,-9874,-9805,-9695,-9542,-9336,-9095,-8808,-8479,-8120,-7722,-7296, -6836,-6350,-5844,-5326,-4800,-4271,-3747,-3236,-2743,-2270,-1826,-1415,-1038,-694,-395,-129,94,288,449,579, 680,765,825,873,910,945,980,1019,1066,1129,1207,1312,1439,1594,1781,2000,2256,2546,2865,3221, 3602,4010,4443,4887,5345,5814,6276,6736,7177,7602,8005,8378,8716,9022,9280,9492,9658,9766,9834,9842, 9796,9703,9560,9365,9131,8848,8538,8192,7815,7409,6989,6534,6068,5579,5080,4559,4026,3479,2932,2364, 1799,1226,657,94,-470,-1029,-1572,-2117,-2645,-3166,-3671,-4164,-4652,-5130,-5588,-6040,-6472,-6888,-7285,-7658, -8005,-8330,-8628,-8892,-9131,-9339,-9517,-9661,-9767,-9843,-9880,-9877,-9836,-9750,-9625,-9447,-9227,-8959,-8647,-8287, -7896,-7467,-7012,-6526,-6025,-5510,-4990,-4465,-3946,-3432,-2936,-2465,-2012,-1587,-1199,-835,-515,-231,12,222, 400,541,650,741,812,860,901,934,968,1003,1045,1104,1182,1276,1400,1545,1728,1940,2182,2456, 2765,3105,3472,3861,4279,4716,5175,5630,6101,6564,7027,7465,7884,8273,8629,8939,9217,9437,9615,9732, 9806,9834,9807,9735,9617,9456,9246,8997,8704,8379,8014,7622,7196,6749,6275,5785,5274,4761,4228,3690, 3148,2598,2044,1490,925,367,-195,-754,-1313,-1864,-2408,-2938,-3469,-3972,-4465,-4941,-5403,-5843,-6275,-6684, -7077,-7455,-7805,-8138,-8453,-8735,-8996,-9226,-9426,-9590,-9709,-9797,-9846,-9850,-9813,-9732,-9610,-9449,-9238,-8988, -8696,-8369,-7997,-7589,-7153,-6686,-6193,-5680,-5158,-4631,-4103,-3583,-3072,-2593,-2130,-1699,-1298,-938,-608,-316, -60,151,339,491,615,714,790,848,893,924,958,989,1030,1079,1145,1229,1335,1469,1630,1831, 2061,2321,2618,2951,3308,3702,4112,4547,4996,5452,5914,6375,6828,7274,7689,8092,8461,8799,9091,9343, 9546,9702,9798,9847,9841,9782,9670,9516,9316,9071,8788,8472,8124,7747,7343,6914,6462,5988,5495,4983, 4458,3920,3368,2810,2248,1683,1118,552,-9,-565,-1114,-1660,-2196,-2722,-3239,-3750,-4245,-4732,-5208,-5671, -6114,-6543,-6948,-7338,-7701,-8037,-8351,-8637,-8893,-9125,-9328,-9502,-9641,-9745,-9814,-9846,-9833,-9781,-9679,-9536, -9348,-9112,-8825,-8502,-8136,-7734,-7306,-6841,-6363,-5863,-5352,-4835,-4317,-3798,-3294,-2804,-2340,-1894,-1485,-1103, -760,-451,-186,51,243,401,533,638,714,774,819,854,882,913,953,995,1053,1136,1239,1363, 1518,1698,1911,2162,2438,2752,3097,3471,3871,4292,4738,5192,5660,6127,6593,7043,7478,7884,8264,8607, 8910,9167,9386,9547,9664,9730,9748,9715,9641,9508,9336,9117,8853,8549,8210,7838,7437,7004,6554,6080, 5591,5084,4568,4045,3510,2966,2416,1861,1300,741,175,-390,-948,-1506,-2049,-2585,-3115,-3623,-4122,-4603, -5073,-5524,-5965,-6385,-6795,-7182,-7556,-7906,-8237,-8542,-8823,-9067,-9285,-9467,-9614,-9724,-9795,-9827,-9820,-9770, -9680,-9552,-9380,-9166,-8906,-8603,-8261,-7877,-7461,-7008,-6531,-6034,-5518,-4992,-4463,-3939,-3423,-2920,-2447,-1998, -1577,-1187,-832,-517,-231,16,228,402,549,669,760,830,885,928,964,992,1027,1069,1126,1194, 1286,1405,1544,1717,1923,2163,2436,2742,3076,3447,3839,4254,4680,5133,5589,6048,6505,6959,7397,7816, 8204,8570,8890,9175,9410,9598,9731,9814,9838,9813,9738,9616,9445,9238,8988,8699,8376,8026,7643,7230, 6791,6330,5846,5348,4824,4287,3746,3195,2636,2076,1514,953,394,-165,-719,-1264,-1809,-2342,-2868,-3391, -3898,-4401,-4882,-5354,-5812,-6246,-6661,-7059,-7434,-7788,-8117,-8421,-8702,-8957,-9179,-9379,-9542,-9682,-9779,-9834, -9853,-9829,-9756,-9644,-9480,-9278,-9028,-8736,-8398,-8030,-7625,-7188,-6726,-6241,-5743,-5230,-4711,-4190,-3674,-3168, -2683,-2213,-1782,-1368,-993,-661,-360,-98,128,315,469,598,696,774,838,889,925,964,998,1041, 1097,1165,1252,1365,1497,1660,1849,2075,2331,2622,2940,3297,3681,4088,4520,4963,5424,5885,6348,6803, 7245,7666,8059,8420,8750,9039,9284,9484,9637,9738,9792,9791,9743,9648,9500,9304,9071,8788,8472,8114, 7729,7317,6882,6423,5951,5457,4953,4434,3905,3363,2813,2256,1694,1123,559,-14,-579,-1139,-1691,-2236, -2767,-3287,-3789,-4285,-4769,-5230,-5685,-6127,-6555,-6959,-7353,-7723,-8073,-8396,-8693,-8960,-9202,-9404,-9579,-9711, -9816,-9878,-9905,-9892,-9839,-9744,-9610,-9428,-9207,-8937,-8624,-8271,-7879,-7448,-6991,-6504,-6004,-5484,-4961,-4435, -3917,-3408,-2918,-2447,-2003,-1588,-1201,-851,-536,-258,-12,193,371,507,624,718,788,837,884,920, 955,995,1044,1106,1187,1287,1419,1570,1764,1976,2226,2509,2825,3166,3540,3937,4358,4793,5240,5700, 6162,6620,7074,7507,7919,8303,8652,8968,9232,9450,9618,9737,9801,9817,9776,9695,9563,9388,9172,8921, 8624,8296,7928,7540,7116,6670,6196,5707,5194,4675,4129,3592,3037,2485,1925,1370,814,259,-304,-862, -1406,-1955,-2496,-3024,-3541,-4053,-4547,-5030,-5492,-5937,-6365,-6775,-7163,-7535,-7880,-8211,-8506,-8790,-9040,-9265, -9457,-9619,-9743,-9831,-9875,-9879,-9838,-9757,-9630,-9456,-9236,-8982,-8678,-8337,-7965,-7554,-7112,-6647,-6158,-5657, -5137,-4614,-4092,-3577,-3072,-2593,-2133,-1700,-1307,-943,-616,-333,-77,138,318,466,590,687,765,823, 874,917,954,997,1041,1100,1176,1267,1381,1527,1695,1901,2131,2401,2703,3039,3401,3795,4209,4644, 5095,5554,6021,6482,6927,7366,7778,8169,8527,8845,9129,9368,9559,9709,9800,9841,9829,9763,9656,9493, 9287,9037,8748,8421,8068,7675,7263,6824,6369,5894,5405,4898,4375,3839,3292,2736,2173,1607,1042,470, -96,-662,-1218,-1759,-2297,-2823,-3336,-3839,-4329,-4813,-5279,-5732,-6173,-6597,-7004,-7389,-7754,-8094,-8412,-8698, -8954,-9181,-9379,-9541,-9670,-9769,-9826,-9847,-9830,-9771,-9672,-9523,-9332,-9097,-8819,-8490,-8123,-7721,-7288,-6823, -6335,-5833,-5318,-4797,-4277,-3767,-3268,-2782,-2316,-1879,-1472,-1095,-752,-447,-178,55,251,415,549,652, 740,803,852,894,931,966,1014,1062,1131,1218,1326,1462,1625,1816,2041,2297,2585,2902,3253,3627, 4029,4453,4893,5345,5806,6270,6728,7170,7602,8006,8379,8713,9008,9255,9465,9614,9719,9767,9774,9726, 9634,9495,9312,9089,8822,8522,8181,7809,7402,6969,6516,6036,5540,5033,4505,3973,3426,2882,2333,1777, 1219,665,103,-455,-1014,-1568,-2113,-2650,-3181,-3693,-4195,-4681,-5155,-5609,-6044,-6466,-6867,-7246,-7616,-7956, -8281,-8582,-8855,-9101,-9319,-9500,-9649,-9761,-9829,-9861,-9850,-9796,-9703,-9565,-9379,-9157,-8887,-8585,-8235,-7852, -7439,-6990,-6514,-6023,-5507,-4987,-4460,-3942,-3429,-2933,-2454,-2008,-1589,-1205,-853,-538,-257,-17,192,366, 513,628,721,794,856,899,940,981,1019,1069,1127,1207,1302,1430,1575,1759,1968,2213,2495,2802, 3147,3516,3916,4332,4768,5220,5676,6129,6587,7030,7456,7866,8249,8601,8913,9186,9413,9594,9726,9801, 9828,9800,9719,9592,9418,9199,8937,8643,8315,7956,7562,7142,6710,6246,5764,5265,4752,4222,3680,3123, 2568,2002,1439,871,308,-250,-807,-1355,-1900,-2430,-2949,-3466,-3962,-4457,-4937,-5406,-5859,-6296,-6713,-7112, -7488,-7841,-8168,-8472,-8748,-8992,-9214,-9404,-9555,-9683,-9771,-9821,-9839,-9810,-9739,-9625,-9461,-9254,-9003,-8707, -8370,-7992,-7580,-7140,-6672,-6182,-5679,-5165,-4651,-4133,-3623,-3127,-2644,-2184,-1753,-1347,-984,-649,-350,-92, 133,324,477,607,703,785,845,897,934,979,1016,1064,1123,1195,1293,1407,1549,1722,1921,2149, 2417,2708,3036,3391,3778,4185,4615,5059,5513,5975,6436,6886,7329,7746,8138,8495,8823,9095,9333,9520, 9659,9748,9793,9786,9730,9623,9477,9281,9046,8763,8450,8095,7712,7297,6855,6389,5908,5411,4899,4378, 3846,3305,2753,2205,1649,1086,520,-43,-610,-1164,-1721,-2265,-2800,-3322,-3831,-4324,-4805,-5268,-5718,-6153, -6569,-6969,-7354,-7714,-8060,-8376,-8674,-8944,-9177,-9381,-9554,-9686,-9783,-9842,-9863,-9838,-9776,-9669,-9527,-9335, -9102,-8830,-8514,-8166,-7767,-7344,-6888,-6404,-5898,-5382,-4859,-4338,-3817,-3309,-2822,-2354,-1913,-1500,-1125,-785, -477,-203,31,235,407,546,659,744,814,873,920,957,999,1041,1098,1163,1245,1354,1480,1641, 1831,2052,2308,2594,2911,3259,3637,4037,4459,4899,5345,5800,6256,6710,7149,7571,7976,8353,8695,9000, 9260,9476,9635,9754,9810,9820,9775,9685,9538,9356,9127,8865,8558,8227,7862,7468,7048,6598,6128,5642, 5133,4612,4073,3526,2971,2411,1850,1284,723,168,-389,-942,-1487,-2031,-2562,-3088,-3599,-4105,-4597,-5080, -5542,-5991,-6420,-6829,-7220,-7590,-7932,-8254,-8548,-8818,-9063,-9274,-9462,-9615,-9729,-9815,-9855,-9858,-9818,-9740, -9602,-9430,-9202,-8940,-8631,-8284,-7904,-7485,-7041,-6574,-6082,-5576,-5063,-4547,-4029,-3521,-3025,-2552,-2095,-1670, -1276,-915,-595,-310,-58,154,332,481,600,696,772,832,884,925,965,1013,1063,1130,1205,1305, 1429,1580,1755,1967,2203,2474,2777,3113,3479,3872,4286,4725,5175,5636,6096,6547,7000,7434,7839,8223, 8571,8881,9153,9379,9557,9690,9770,9805,9790,9723,9609,9442,9234,8985,8692,8365,8005,7609,7191,6747, 6278,5801,5304,4789,4269,3736,3195,2641,2085,1520,956,387,-178,-743,-1302,-1851,-2397,-2923,-3436,-3941, -4428,-4900,-5362,-5814,-6249,-6663,-7067,-7446,-7810,-8144,-8460,-8748,-9008,-9227,-9429,-9585,-9710,-9797,-9849,-9857, -9835,-9764,-9656,-9505,-9309,-9066,-8785,-8460,-8099,-7695,-7258,-6794,-6310,-5806,-5290,-4769,-4252,-3742,-3244,-2761, -2306,-1875,-1476,-1106,-769,-477,-209,16,213,376,512,620,701,766,821,865,909,944,999,1048, 1124,1212,1327,1468,1638,1834,2068,2330,2628,2950,3306,3688,4097,4517,4959,5408,5866,6318,6772,7212, 7632,8031,8398,8730,9025,9269,9462,9613,9711,9754,9746,9693,9586,9439,9245,9014,8742,8436,8097,7729, 7321,6892,6435,5960,5462,4952,4423,3889,3342,2791,2234,1676,1120,560,3,-546,-1100,-1646,-2190,-2723, -3244,-3763,-4260,-4751,-5221,-5680,-6116,-6541,-6940,-7322,-7682,-8021,-8336,-8624,-8890,-9133,-9339,-9519,-9662,-9772, -9837,-9868,-9857,-9805,-9702,-9558,-9368,-9140,-8861,-8550,-8197,-7811,-7391,-6941,-6471,-5977,-5468,-4953,-4434,-3922, -3414,-2922,-2450,-2005,-1590,-1208,-858,-548,-272,-32,175,342,487,601,695,768,825,877,917,963, 1010,1067,1133,1221,1322,1453,1609,1794,2007,2260,2539,2853,3193,3570,3968,4389,4823,5279,5737,6195, 6644,7089,7512,7913,8285,8621,8926,9185,9404,9571,9694,9765,9785,9754,9681,9546,9375,9147,8884,8581, 8245,7873,7479,7058,6616,6145,5664,5167,4654,4130,3594,3045,2490,1925,1363,797,229,-333,-890,-1443, -1982,-2518,-3040,-3550,-4043,-4530,-5004,-5463,-5908,-6338,-6758,-7152,-7525,-7883,-8208,-8507,-8786,-9029,-9241,-9426, -9569,-9682,-9762,-9802,-9804,-9767,-9695,-9571,-9405,-9197,-8945,-8645,-8307,-7928,-7516,-7074,-6604,-6108,-5609,-5086, -4573,-4056,-3548,-3053,-2581,-2129,-1707,-1309,-946,-618,-326,-70,152,339,492,620,723,804,870,918, 965,1002,1047,1098,1162,1238,1341,1457,1611,1783,1992,2231,2503,2804,3138,3493,3881,4289,4718,5157, 5611,6072,6528,6971,7411,7823,8215,8570,8888,9161,9390,9574,9702,9781,9812,9796,9728,9613,9455,9254, 9012,8732,8412,8061,7675,7265,6823,6360,5872,5370,4854,4325,3789,3244,2696,2142,1581,1022,465,-96, -654,-1207,-1759,-2299,-2837,-3359,-3870,-4364,-4849,-5313,-5763,-6194,-6609,-7007,-7383,-7739,-8072,-8386,-8673,-8931, -9167,-9372,-9539,-9671,-9773,-9826,-9841,-9817,-9743,-9636,-9478,-9281,-9040,-8758,-8438,-8077,-7684,-7257,-6803,-6321, -5823,-5314,-4791,-4278,-3758,-3259,-2772,-2302,-1867,-1462,-1084,-748,-442,-180,51,253,419,555,668,758, 832,887,936,985,1026,1075,1136,1206,1299,1409,1545,1711,1906,2130,2388,2682,3004,3358,3737,4144, 4568,5009,5454,5917,6366,6819,7250,7666,8062,8427,8758,9054,9304,9511,9665,9772,9831,9834,9784,9686, 9541,9350,9114,8839,8526,8181,7808,7408,6982,6536,6066,5572,5077,4553,4016,3474,2923,2360,1794,1224, 658,95,-464,-1022,-1564,-2104,-2631,-3156,-3665,-4160,-4651,-5128,-5583,-6029,-6461,-6874,-7267,-7635,-7978,-8298, -8591,-8858,-9093,-9299,-9478,-9621,-9729,-9807,-9839,-9837,-9793,-9708,-9571,-9397,-9173,-8906,-8597,-8246,-7860,-7438, -6992,-6515,-6024,-5521,-5008,-4491,-3982,-3479,-2991,-2520,-2075,-1657,-1268,-913,-594,-307,-59,149,326,480, 595,699,775,836,886,933,981,1027,1083,1156,1240,1347,1476,1630,1816,2036,2281,2562,2872,3212, 3578,3967,4388,4821,5267,5727,6186,6645,7090,7516,7923,8304,8645,8949,9212,9427,9599,9716,9786,9805, 9777,9698,9581,9413,9201,8949,8651,8324,7957,7563,7140,6692,6225,5733,5227,4715,4187,3649,3106,2559, 2005,1447,879,321,-238,-804,-1359,-1910,-2454,-2982,-3504,-4010,-4500,-4976,-5440,-5877,-6309,-6718,-7119,-7491, -7849,-8179,-8492,-8772,-9035,-9256,-9452,-9612,-9732,-9813,-9861,-9863,-9829,-9748,-9631,-9473,-9267,-9022,-8734,-8408, -8039,-7641,-7210,-6751,-6265,-5763,-5251,-4731,-4213,-3704,-3204,-2730,-2271,-1847,-1450,-1090,-756,-462,-201,16, 212,375,508,615,705,777,837,882,928,978,1031,1095,1175,1270,1394,1535,1712,1919,2157,2425, 2726,3060,3421,3806,4214,4642,5085,5533,5985,6439,6884,7318,7725,8116,8473,8794,9079,9321,9510,9656, 9741,9781,9766,9702,9589,9433,9234,8988,8703,8386,8044,7664,7256,6831,6376,5900,5405,4892,4368,3831, 3279,2722,2163,1599,1040,474,-83,-635,-1188,-1730,-2269,-2796,-3314,-3830,-4325,-4809,-5283,-5741,-6180,-6605, -7009,-7396,-7752,-8091,-8399,-8686,-8941,-9174,-9377,-9550,-9687,-9789,-9856,-9886,-9871,-9813,-9712,-9573,-9380,-9145, -8869,-8546,-8188,-7794,-7373,-6923,-6448,-5955,-5450,-4943,-4426,-3915,-3418,-2933,-2471,-2028,-1611,-1234,-889,-574, -303,-61,143,313,456,572,664,742,802,855,904,952,1001,1062,1141,1238,1350,1483,1649,1843, 2070,2323,2607,2926,3271,3646,4045,4466,4906,5354,5810,6269,6720,7158,7579,7972,8341,8672,8961,9211, 9416,9575,9686,9739,9754,9717,9632,9496,9318,9096,8829,8522,8183,7814,7410,6980,6535,6060,5576,5074, 4557,4031,3495,2951,2403,1844,1283,716,153,-409,-966,-1520,-2062,-2601,-3121,-3627,-4130,-4603,-5073,-5524, -5972,-6391,-6804,-7189,-7563,-7916,-8243,-8544,-8819,-9060,-9275,-9450,-9601,-9704,-9776,-9808,-9805,-9753,-9670,-9539, -9372,-9155,-8900,-8596,-8259,-7882,-7469,-7026,-6557,-6063,-5557,-5042,-4526,-4008,-3503,-3016,-2544,-2101,-1678,-1289, -936,-614,-327,-73,150,331,489,618,720,800,868,920,972,1013,1062,1119,1187,1264,1371,1496, 1654,1829,2046,2291,2568,2872,3213,3575,3965,4375,4801,5244,5694,6143,6594,7036,7465,7871,8250,8603, 8919,9184,9415,9591,9716,9790,9808,9784,9709,9584,9417,9212,8960,8675,8349,7996,7610,7198,6757,6298, 5812,5312,4791,4260,3719,3173,2615,2062,1500,939,383,-178,-732,-1280,-1824,-2364,-2893,-3412,-3920,-4420, -4903,-5368,-5823,-6253,-6667,-7064,-7437,-7791,-8121,-8423,-8705,-8957,-9183,-9380,-9541,-9675,-9769,-9823,-9838,-9808, -9736,-9622,-9458,-9261,-9007,-8716,-8387,-8022,-7622,-7195,-6737,-6261,-5765,-5256,-4745,-4233,-3721,-3226,-2744,-2285, -1855,-1449,-1080,-748,-448,-184,39,237,398,533,638,727,801,863,911,960,1006,1059,1125,1202, 1298,1418,1556,1729,1923,2152,2418,2708,3030,3390,3768,4175,4595,5038,5489,5942,6395,6840,7270,7685, 8071,8424,8744,9030,9268,9466,9611,9712,9761,9756,9708,9607,9457,9265,9029,8747,8432,8081,7701,7295, 6862,6407,5937,5445,4941,4419,3889,3349,2800,2240,1677,1114,547,-23,-583,-1139,-1690,-2231,-2760,-3278, -3779,-4274,-4758,-5224,-5680,-6120,-6544,-6950,-7338,-7709,-8055,-8372,-8662,-8926,-9161,-9360,-9529,-9668,-9765,-9826, -9852,-9840,-9788,-9692,-9552,-9366,-9147,-8874,-8561,-8209,-7820,-7396,-6946,-6466,-5976,-5467,-4953,-4437,-3928,-3425, -2944,-2479,-2044,-1631,-1249,-901,-587,-306,-63,145,323,467,589,689,767,830,882,929,976,1023, 1084,1162,1250,1362,1502,1663,1857,2073,2325,2613,2926,3271,3645,4034,4450,4882,5325,5783,6237,6676, 7125,7548,7955,8324,8665,8970,9229,9439,9605,9718,9779,9790,9751,9670,9537,9364,9149,8889,8599,8267, 7902,7512,7090,6643,6173,5682,5176,4654,4122,3583,3038,2484,1929,1372,813,257,-305,-859,-1410,-1960, -2496,-3025,-3543,-4044,-4541,-5015,-5475,-5918,-6349,-6751,-7139,-7508,-7858,-8184,-8485,-8762,-9014,-9232,-9422,-9577, -9696,-9780,-9820,-9820,-9775,-9695,-9562,-9392,-9178,-8925,-8628,-8291,-7922,-7518,-7082,-6627,-6138,-5643,-5132,-4617, -4103,-3600,-3105,-2630,-2180,-1754,-1362,-1007,-681,-394,-136,83,271,428,558,663,753,819,884,936, 983,1038,1093,1167,1247,1349,1477,1629,1808,2019,2257,2533,2836,3170,3532,3923,4335,4769,5205,5656, 6110,6558,6998,7423,7827,8208,8555,8870,9144,9375,9558,9698,9783,9819,9801,9735,9622,9455,9253,9001, 8713,8391,8032,7647,7236,6803,6344,5870,5377,4870,4346,3808,3260,2703,2145,1579,1013,448,-115,-677, -1225,-1769,-2306,-2834,-3345,-3852,-4346,-4827,-5294,-5751,-6189,-6611,-7010,-7398,-7759,-8094,-8409,-8691,-8946,-9176, -9368,-9528,-9659,-9758,-9818,-9837,-9817,-9760,-9655,-9507,-9312,-9078,-8799,-8475,-8115,-7720,-7296,-6835,-6360,-5865, -5364,-4856,-4344,-3839,-3347,-2867,-2415,-1978,-1578,-1203,-861,-556,-287,-50,152,324,459,577,673,747, 808,864,912,964,1021,1086,1168,1263,1381,1531,1700,1903,2127,2388,2681,3004,3354,3729,4129,4550, 4987,5432,5886,6341,6792,7223,7641,8037,8396,8718,9006,9247,9445,9591,9692,9743,9742,9692,9598,9464, 9278,9052,8784,8480,8138,7766,7358,6931,6477,6000,5509,5001,4479,3955,3406,2867,2315,1761,1202,644, 83,-474,-1032,-1584,-2128,-2666,-3191,-3702,-4201,-4682,-5157,-5609,-6045,-6463,-6869,-7248,-7616,-7958,-8282,-8582, -8850,-9092,-9309,-9483,-9627,-9733,-9809,-9833,-9820,-9765,-9674,-9537,-9357,-9137,-8874,-8569,-8232,-7849,-7437,-6996, -6530,-6043,-5538,-5028,-4510,-4001,-3498,-3008,-2542,-2104,-1688,-1308,-953,-637,-357,-111,105,286,441,562, 667,750,823,878,936,985,1041,1098,1172,1264,1375,1503,1669,1853,2076,2321,2603,2917,3259,3629, 4022,4439,4871,5316,5757,6211,6657,7092,7512,7911,8283,8624,8925,9191,9411,9581,9700,9775,9791,9761, 9677,9546,9376,9154,8896,8608,8278,7918,7530,7116,6681,6217,5736,5239,4720,4191,3652,3099,2547,1984, 1420,859,300,-257,-809,-1360,-1898,-2432,-2953,-3468,-3969,-4459,-4941,-5410,-5857,-6289,-6704,-7099,-7466,-7820, -8143,-8446,-8719,-8968,-9185,-9370,-9526,-9652,-9733,-9787,-9799,-9766,-9694,-9579,-9414,-9206,-8953,-8664,-8331,-7961, -7555,-7126,-6668,-6186,-5692,-5187,-4680,-4170,-3665,-3176,-2701,-2249,-1822,-1421,-1058,-727,-427,-167,60,253, 415,553,658,747,824,882,937,988,1041,1101,1172,1256,1364,1489,1640,1819,2026,2261,2529,2826, 3155,3508,3891,4297,4721,5161,5613,6060,6514,6953,7381,7788,8169,8514,8831,9096,9327,9506,9643,9729, 9768,9754,9697,9587,9436,9239,8999,8717,8400,8044,7663,7246,6807,6349,5872,5375,4866,4347,3814,3272, 2722,2171,1612,1044,482,-84,-643,-1204,-1755,-2300,-2832,-3351,-3857,-4349,-4826,-5290,-5741,-6176,-6594,-6995, -7378,-7737,-8078,-8398,-8692,-8956,-9187,-9389,-9559,-9688,-9784,-9837,-9859,-9838,-9777,-9674,-9533,-9338,-9111,-8839, -8530,-8178,-7787,-7367,-6914,-6441,-5947,-5438,-4926,-4413,-3901,-3407,-2928,-2465,-2029,-1626,-1250,-907,-598,-321, -81,127,308,454,575,675,758,827,880,932,988,1044,1113,1188,1287,1404,1542,1711,1910,2141, 2398,2687,3007,3359,3732,4128,4550,4980,5423,5869,6320,6765,7196,7613,8008,8373,8704,8996,9246,9454, 9610,9715,9768,9776,9725,9633,9490,9309,9080,8816,8516,8185,7818,7422,6995,6552,6080,5597,5077,4562, 4026,3486,2929,2374,1817,1253,693,137,-424,-971,-1520,-2066,-2596,-3121,-3637,-4140,-4632,-5111,-5570,-6017, -6442,-6848,-7237,-7603,-7944,-8263,-8558,-8832,-9071,-9281,-9468,-9616,-9730,-9811,-9851,-9851,-9806,-9718,-9587,-9409, -9191,-8932,-8623,-8287,-7908,-7500,-7061,-6599,-6115,-5620,-5112,-4606,-4097,-3592,-3103,-2633,-2187,-1763,-1374,-1014, -697,-406,-155,65,252,407,535,643,724,801,863,916,968,1028,1091,1168,1257,1370,1500,1660, 1846,2064,2305,2586,2892,3226,3593,3988,4396,4831,5275,5725,6179,6626,7066,7484,7884,8259,8596,8901, 9165,9387,9560,9686,9761,9793,9774,9703,9584,9419,9210,8958,8666,8340,7982,7593,7181,6731,6277,5796, 5302,4790,4269,3736,3193,2638,2082,1522,956,391,-173,-734,-1289,-1834,-2372,-2899,-3412,-3915,-4403,-4879, -5338,-5787,-6224,-6641,-7037,-7421,-7776,-8108,-8419,-8701,-8956,-9177,-9367,-9524,-9648,-9732,-9781,-9793,-9768,-9694, -9585,-9430,-9237,-8992,-8713,-8388,-8033,-7630,-7201,-6747,-6267,-5771,-5266,-4753,-4246,-3746,-3252,-2779,-2329,-1901, -1504,-1133,-800,-504,-235,-5,193,364,504,617,713,782,850,906,959,1013,1074,1141,1224,1321, 1448,1600,1773,1976,2216,2481,2779,3103,3459,3840,4243,4660,5100,5537,5993,6436,6881,7311,7725,8110, 8472,8791,9075,9310,9496,9642,9732,9770,9767,9708,9607,9459,9266,9034,8764,8453,8115,7743,7340,6910, 6454,5979,5486,4975,4449,3916,3373,2825,2266,1711,1153,595,38,-517,-1072,-1613,-2157,-2692,-3219,-3730, -4231,-4715,-5185,-5637,-6080,-6496,-6892,-7273,-7633,-7969,-8285,-8578,-8840,-9079,-9285,-9461,-9605,-9706,-9774,-9799, -9785,-9729,-9629,-9483,-9301,-9069,-8798,-8490,-8140,-7761,-7348,-6907,-6440,-5955,-5454,-4950,-4438,-3935,-3434,-2951, -2486,-2051,-1635,-1258,-911,-602,-326,-82,125,300,453,574,677,761,831,890,946,1002,1060,1129, 1201,1300,1408,1549,1712,1905,2125,2382,2663,2980,3321,3695,4093,4507,4936,5387,5833,6282,6720,7154, 7569,7959,8323,8653,8950,9205,9411,9573,9690,9753,9768,9733,9645,9516,9334,9113,8851,8549,8213,7847, 7458,7037,6594,6130,5652,5151,4638,4110,3574,3023,2472,1907,1343,780,214,-345,-898,-1453,-1989,-2527, -3048,-3560,-4057,-4544,-5016,-5477,-5920,-6354,-6766,-7161,-7534,-7885,-8205,-8504,-8777,-9020,-9233,-9410,-9559,-9672, -9752,-9792,-9794,-9757,-9681,-9560,-9392,-9183,-8931,-8632,-8299,-7925,-7521,-7083,-6623,-6140,-5644,-5138,-4630,-4122, -3630,-3138,-2673,-2225,-1809,-1414,-1054,-727,-438,-180,46,239,401,534,644,734,804,866,923,980, 1030,1096,1170,1262,1370,1501,1656,1843,2054,2299,2572,2874,3208,3564,3947,4353,4778,5214,5660,6108, 6557,6995,7417,7823,8201,8541,8851,9118,9342,9510,9638,9715,9741,9719,9652,9540,9381,9177,8934,8655, 8336,7981,7595,7183,6747,6283,5794,5299,4787,4261,3725,3185,2635,2082,1524,963,405,-157,-715,-1268, -1820,-2362,-2898,-3418,-3922,-4414,-4895,-5356,-5809,-6238,-6655,-7048,-7424,-7779,-8116,-8424,-8712,-8966,-9204,-9402, -9566,-9697,-9790,-9845,-9857,-9830,-9762,-9654,-9499,-9304,-9069,-8788,-8473,-8119,-7731,-7310,-6860,-6388,-5900,-5399, -4886,-4374,-3869,-3378,-2897,-2440,-2012,-1610,-1236,-898,-595,-329,-92,111,282,428,550,651,734,802, 863,921,975,1039,1111,1193,1297,1413,1561,1735,1935,2169,2431,2724,3050,3404,3781,4184,4600,5036, 5476,5922,6366,6805,7228,7637,8023,8380,8700,8987,9227,9425,9571,9674,9722,9721,9669,9571,9425,9233, 8997,8726,8420,8079,7707,7311,6885,6442,5972,5482,4979,4461,3927,3382,2836,2272,1710,1146,586,24, -532,-1082,-1628,-2167,-2697,-3220,-3727,-4225,-4712,-5185,-5640,-6087,-6510,-6922,-7307,-7671,-8013,-8330,-8619,-8890, -9119,-9329,-9498,-9640,-9746,-9819,-9847,-9842,-9794,-9704,-9571,-9391,-9170,-8908,-8599,-8250,-7867,-7456,-7019,-6548, -6071,-5574,-5067,-4561,-4056,-3559,-3082,-2614,-2173,-1757,-1371,-1014,-696,-410,-164,57,243,396,525,631, 721,797,856,913,971,1033,1100,1183,1278,1398,1534,1702,1893,2113,2365,2647,2958,3301,3664,4054, 4465,4897,5340,5787,6239,6685,7120,7537,7933,8302,8633,8931,9188,9398,9560,9670,9741,9759,9732,9651, 9533,9361,9146,8893,8600,8271,7907,7514,7097,6651,6188,5702,5203,4693,4165,3630,3091,2540,1988,1427, 865,301,-260,-821,-1374,-1918,-2461,-2985,-3504,-4004,-4490,-4967,-5424,-5865,-6296,-6707,-7100,-7475,-7827,-8160, -8466,-8746,-8996,-9215,-9409,-9565,-9680,-9762,-9806,-9807,-9770,-9691,-9576,-9413,-9209,-8961,-8680,-8350,-7988,-7591, -7165,-6709,-6232,-5738,-5231,-4720,-4213,-3709,-3225,-2754,-2306,-1881,-1490,-1126,-796,-499,-239,-12,187,355, 493,610,708,786,853,909,967,1028,1092,1162,1253,1361,1493,1639,1824,2036,2276,2547,2850,3181, 3541,3921,4323,4749,5182,5623,6065,6513,6952,7370,7772,8153,8503,8818,9094,9325,9512,9646,9728,9765, 9748,9684,9573,9414,9217,8975,8698,8385,8039,7662,7257,6830,6376,5906,5403,4897,4371,3836,3289,2740, 2183,1621,1060,499,-55,-611,-1161,-1704,-2242,-2771,-3293,-3803,-4298,-4779,-5254,-5705,-6141,-6562,-6959,-7343, -7697,-8030,-8342,-8625,-8881,-9114,-9311,-9484,-9616,-9715,-9781,-9803,-9784,-9725,-9621,-9475,-9282,-9045,-8773,-8457, -8101,-7714,-7298,-6853,-6389,-5900,-5403,-4901,-4394,-3890,-3399,-2921,-2461,-2026,-1618,-1244,-899,-591,-316,-78, 126,306,455,577,675,761,831,897,949,1008,1073,1144,1227,1328,1449,1597,1767,1962,2193,2448, 2737,3059,3398,3775,4168,4587,5021,5464,5910,6363,6800,7232,7639,8025,8385,8709,8993,9243,9445,9595, 9704,9756,9769,9726,9637,9501,9321,9096,8834,8524,8190,7818,7419,6992,6548,6080,5600,5096,4583,4058, 3524,2975,2426,1868,1311,744,180,-380,-940,-1491,-2031,-2563,-3082,-3591,-4088,-4570,-5039,-5496,-5936,-6358, -6769,-7158,-7529,-7876,-8200,-8501,-8770,-9011,-9221,-9396,-9544,-9650,-9722,-9755,-9747,-9700,-9612,-9486,-9318,-9103, -8848,-8553,-8214,-7842,-7431,-6998,-6538,-6052,-5559,-5050,-4546,-4039,-3543,-3061,-2603,-2161,-1748,-1363,-1006,-686, -398,-144,75,263,427,560,667,759,836,900,958,1012,1073,1142,1219,1310,1425,1561,1725,1908, 2128,2378,2656,2965,3303,3665,4052,4454,4879,5310,5755,6198,6644,7075,7496,7892,8263,8602,8907,9163, 9384,9554,9670,9742,9759,9733,9655,9533,9369,9158,8909,8625,8297,7949,7562,7146,6708,6252,5765,5264, 4749,4221,3686,3140,2585,2032,1474,918,357,-202,-752,-1302,-1850,-2383,-2915,-3431,-3937,-4430,-4911,-5374, -5824,-6254,-6665,-7054,-7428,-7783,-8106,-8413,-8693,-8943,-9166,-9362,-9521,-9650,-9734,-9786,-9798,-9767,-9695,-9579, -9416,-9216,-8970,-8685,-8363,-8003,-7606,-7186,-6735,-6266,-5781,-5279,-4769,-4264,-3760,-3272,-2798,-2347,-1917,-1516, -1152,-817,-514,-254,-18,181,351,496,613,715,797,870,934,989,1052,1121,1192,1284,1390,1520, 1672,1854,2053,2292,2556,2854,3179,3535,3915,4317,4736,5171,5612,6057,6500,6935,7355,7758,8128,8477, 8791,9064,9296,9485,9627,9719,9761,9750,9699,9589,9440,9244,9007,8727,8415,8060,7685,7281,6851,6400, 5931,5438,4933,4413,3882,3341,2792,2234,1671,1108,542,-24,-583,-1136,-1684,-2224,-2753,-3271,-3778,-4271, -4752,-5222,-5675,-6114,-6537,-6940,-7326,-7692,-8033,-8347,-8637,-8898,-9126,-9325,-9493,-9631,-9729,-9790,-9818,-9807, -9752,-9657,-9518,-9332,-9116,-8844,-8536,-8191,-7806,-7387,-6948,-6479,-5996,-5494,-4992,-4487,-3987,-3488,-3016,-2561, -2122,-1716,-1332,-985,-668,-385,-137,79,262,415,549,655,745,820,885,947,1005,1069,1140,1230, 1329,1452,1601,1771,1970,2193,2451,2739,3052,3393,3767,4153,4568,4993,5433,5877,6324,6763,7196,7607, 7999,8359,8684,8976,9224,9425,9580,9687,9744,9750,9709,9626,9494,9315,9099,8839,8545,8213,7848,7455, 7034,6584,6118,5629,5124,4607,4071,3536,2993,2438,1884,1329,770,208,-353,-906,-1460,-2005,-2548,-3071, -3586,-4087,-4581,-5054,-5512,-5954,-6381,-6787,-7174,-7539,-7892,-8215,-8515,-8790,-9038,-9255,-9440,-9592,-9712,-9793, -9827,-9828,-9790,-9703,-9576,-9408,-9197,-8947,-8650,-8324,-7959,-7558,-7128,-6674,-6196,-5706,-5204,-4697,-4191,-3692, -3202,-2742,-2292,-1879,-1483,-1126,-803,-510,-252,-29,168,332,469,587,686,765,839,902,962,1023, 1093,1173,1265,1379,1516,1676,1863,2075,2318,2597,2906,3237,3600,3986,4390,4814,5248,5694,6137,6572, 7005,7422,7816,8185,8522,8833,9097,9319,9496,9626,9707,9735,9714,9645,9530,9367,9157,8913,8627,8306, 7951,7570,7163,6729,6273,5805,5308,4799,4273,3736,3192,2639,2080,1518,956,393,-168,-729,-1277,-1819, -2355,-2882,-3395,-3900,-4393,-4876,-5341,-5790,-6229,-6646,-7047,-7426,-7783,-8116,-8423,-8704,-8955,-9181,-9372,-9535, -9661,-9757,-9819,-9829,-9811,-9750,-9644,-9492,-9299,-9065,-8786,-8466,-8109,-7720,-7298,-6848,-6380,-5894,-5401,-4898, -4396,-3896,-3406,-2933,-2482,-2053,-1654,-1280,-938,-635,-365,-123,81,256,402,524,629,714,781,851, 908,974,1035,1112,1205,1311,1437,1589,1765,1973,2204,2465,2762,3080,3427,3804,4203,4617,5048,5488, 5936,6377,6816,7242,7648,8029,8383,8694,8972,9208,9398,9540,9635,9678,9680,9629,9533,9393,9208,8979, 8713,8406,8071,7692,7292,6865,6414,5945,5454,4949,4431,3902,3364,2823,2269,1715,1162,600,39,-526, -1078,-1628,-2174,-2709,-3226,-3739,-4232,-4714,-5184,-5634,-6066,-6487,-6892,-7272,-7640,-7980,-8306,-8596,-8862,-9104, -9311,-9483,-9626,-9730,-9794,-9823,-9806,-9754,-9662,-9524,-9344,-9125,-8866,-8565,-8224,-7849,-7442,-7004,-6542,-6061, -5564,-5058,-4549,-4045,-3551,-3072,-2609,-2174,-1762,-1386,-1030,-716,-432,-183,37,217,380,510,625,718, 793,863,928,987,1051,1120,1204,1306,1421,1564,1729,1923,2150,2399,2683,2997,3337,3703,4092,4502, 4925,5358,5800,6239,6674,7106,7518,7909,8272,8604,8897,9157,9365,9529,9646,9710,9725,9692,9608,9482, 9307,9093,8835,8550,8221,7867,7479,7064,6626,6162,5682,5187,4670,4143,3605,3051,2502,1943,1385,825, 264,-291,-842,-1392,-1932,-2463,-2985,-3502,-4001,-4491,-4968,-5436,-5878,-6309,-6722,-7112,-7482,-7827,-8151,-8453, -8721,-8966,-9185,-9369,-9521,-9642,-9724,-9775,-9780,-9743,-9667,-9548,-9381,-9176,-8922,-8634,-8303,-7938,-7540,-7111, -6656,-6185,-5696,-5200,-4695,-4191,-3696,-3211,-2741,-2291,-1870,-1473,-1112,-776,-483,-217,13,211,379,518, 633,735,818,889,952,1015,1079,1151,1225,1324,1438,1571,1725,1912,2122,2364,2631,2931,3261,3614, 3996,4398,4819,5253,5692,6133,6582,7013,7425,7826,8196,8537,8840,9106,9329,9505,9636,9722,9757,9746, 9684,9571,9422,9223,8983,8704,8387,8037,7656,7243,6812,6356,5884,5390,4887,4364,3836,3289,2747,2191, 1632,1068,508,-58,-615,-1174,-1722,-2262,-2787,-3308,-3813,-4306,-4783,-5246,-5698,-6133,-6551,-6952,-7330,-7693, -8027,-8340,-8629,-8889,-9118,-9313,-9480,-9608,-9702,-9754,-9775,-9755,-9693,-9589,-9445,-9258,-9027,-8759,-8448,-8101, -7713,-7297,-6860,-6386,-5899,-5402,-4897,-4394,-3890,-3405,-2931,-2474,-2044,-1642,-1270,-926,-615,-338,-96,120, 299,451,581,687,780,856,926,986,1049,1115,1195,1279,1388,1509,1661,1834,2044,2264,2530,2819, 3138,3490,3861,4253,4666,5091,5530,5969,6409,6845,7267,7668,8056,8409,8732,9013,9253,9449,9599,9695, 9748,9747,9703,9602,9459,9279,9057,8793,8497,8164,7799,7404,6978,6533,6068,5578,5073,4557,4022,3485, 2928,2376,1818,1257,700,141,-414,-965,-1518,-2057,-2592,-3117,-3628,-4129,-4620,-5093,-5554,-5992,-6415,-6822, -7206,-7567,-7911,-8230,-8525,-8794,-9031,-9243,-9422,-9569,-9680,-9757,-9790,-9792,-9746,-9657,-9526,-9346,-9127,-8872, -8574,-8242,-7869,-7466,-7034,-6581,-6103,-5613,-5112,-4613,-4108,-3612,-3131,-2665,-2223,-1805,-1418,-1063,-743,-455, -197,25,214,379,519,631,726,812,880,949,1014,1083,1158,1243,1341,1466,1605,1767,1959,2181, 2426,2711,3012,3354,3716,4104,4510,4935,5370,5814,6253,6692,7120,7530,7920,8283,8614,8907,9163,9373, 9544,9665,9735,9757,9732,9657,9535,9366,9157,8904,8614,8290,7933,7545,7127,6692,6235,5755,5262,4754, 4232,3697,3154,2598,2041,1482,918,351,-211,-767,-1318,-1869,-2401,-2928,-3439,-3944,-4431,-4905,-5367,-5817, -6250,-6665,-7063,-7441,-7795,-8126,-8430,-8714,-8964,-9182,-9374,-9529,-9647,-9734,-9784,-9795,-9767,-9695,-9586,-9433, -9235,-8997,-8717,-8396,-8042,-7648,-7223,-6780,-6301,-5813,-5322,-4818,-4319,-3824,-3337,-2872,-2422,-1998,-1600,-1236, -901,-598,-326,-93,115,289,442,562,666,753,829,893,956,1028,1095,1177,1277,1384,1518,1672, 1857,2071,2310,2578,2878,3203,3556,3932,4329,4743,5176,5611,6051,6491,6922,7343,7741,8118,8466,8775, 9047,9272,9452,9590,9674,9709,9697,9639,9535,9385,9190,8959,8686,8381,8037,7663,7260,6832,6381,5907, 5414,4902,4385,3853,3313,2766,2210,1660,1103,544,-15,-573,-1128,-1673,-2219,-2748,-3268,-3782,-4280,-4762, -5228,-5678,-6118,-6534,-6934,-7314,-7675,-8009,-8320,-8610,-8874,-9108,-9313,-9486,-9622,-9724,-9784,-9805,-9792,-9732, -9635,-9492,-9310,-9078,-8815,-8507,-8167,-7789,-7383,-6946,-6486,-6003,-5512,-5010,-4504,-4007,-3513,-3035,-2578,-2143, -1731,-1353,-1008,-694,-415,-166,49,232,393,524,635,727,807,880,947,1010,1081,1159,1249,1350, 1475,1625,1795,1995,2222,2480,2767,3087,3426,3795,4189,4599,5027,5462,5902,6342,6773,7195,7598,7978, 8334,8656,8943,9186,9387,9543,9652,9710,9719,9682,9596,9456,9277,9057,8798,8497,8162,7803,7411,6998, 6551,6088,5612,5113,4597,4075,3536,2992,2434,1872,1313,751,188,-370,-922,-1470,-2008,-2545,-3061,-3573, -4073,-4559,-5030,-5494,-5937,-6366,-6777,-7168,-7538,-7882,-8208,-8505,-8772,-9014,-9226,-9402,-9553,-9666,-9741,-9781, -9781,-9744,-9668,-9538,-9377,-9164,-8913,-8622,-8289,-7920,-7522,-7092,-6637,-6164,-5675,-5176,-4678,-4178,-3689,-3205, -2740,-2299,-1881,-1488,-1129,-799,-508,-247,-20,179,348,492,612,710,789,865,931,996,1064,1140, 1220,1323,1438,1575,1746,1931,2150,2398,2672,2975,3304,3661,4043,4448,4866,5297,5733,6177,6617,7040, 7457,7850,8215,8548,8846,9103,9317,9486,9606,9679,9702,9681,9616,9498,9339,9131,8892,8610,8291,7937, 7555,7145,6704,6245,5764,5273,4761,4237,3707,3166,2620,2066,1507,948,387,-174,-731,-1285,-1832,-2369, -2906,-3422,-3928,-4422,-4896,-5358,-5803,-6237,-6649,-7044,-7420,-7775,-8107,-8416,-8699,-8954,-9181,-9376,-9535,-9665, -9753,-9801,-9817,-9788,-9717,-9607,-9454,-9263,-9026,-8748,-8434,-8080,-7698,-7286,-6839,-6374,-5892,-5391,-4889,-4385, -3884,-3401,-2925,-2472,-2046,-1646,-1278,-942,-633,-361,-120,89,268,418,553,660,755,830,904,970, 1036,1108,1191,1280,1392,1522,1677,1857,2062,2300,2568,2862,3187,3534,3909,4306,4719,5146,5581,6020, 6457,6883,7300,7702,8073,8419,8733,9011,9244,9437,9574,9670,9712,9706,9651,9550,9401,9215,8967,8705, 8399,8060,7692,7297,6873,6427,5956,5469,4963,4448,3914,3374,2822,2267,1705,1144,584,23,-533,-1081, -1634,-2170,-2703,-3224,-3733,-4229,-4715,-5187,-5643,-6085,-6508,-6915,-7297,-7659,-8002,-8314,-8601,-8861,-9098,-9303, -9477,-9614,-9720,-9790,-9817,-9809,-9759,-9671,-9533,-9354,-9132,-8868,-8563,-8221,-7843,-7437,-7004,-6545,-6069,-5578, -5083,-4580,-4079,-3592,-3114,-2652,-2216,-1802,-1422,-1064,-743,-458,-205,16,208,364,505,621,715,802, 875,946,1012,1083,1163,1257,1359,1486,1630,1801,2000,2227,2480,2765,3076,3418,3782,4169,4578,5001, 5433,5874,6317,6752,7177,7582,7969,8325,8648,8937,9185,9388,9547,9657,9723,9734,9706,9623,9499,9326, 9115,8856,8562,8233,7871,7479,7064,6619,6158,5674,5176,4667,4143,3608,3071,2517,1963,1401,842,278, -286,-843,-1394,-1941,-2477,-3004,-3519,-4017,-4507,-4979,-5437,-5882,-6309,-6721,-7115,-7483,-7840,-8165,-8470,-8746, -8993,-9213,-9397,-9549,-9666,-9743,-9786,-9788,-9754,-9674,-9560,-9399,-9194,-8952,-8669,-8347,-7987,-7597,-7173,-6723, -6250,-5762,-5268,-4767,-4268,-3770,-3291,-2825,-2381,-1959,-1570,-1206,-877,-577,-311,-82,125,301,445,575, 680,769,846,914,984,1054,1126,1218,1314,1433,1571,1729,1919,2140,2383,2659,2965,3293,3649,4030, 4428,4846,5273,5708,6148,6584,7011,7424,7817,8186,8525,8827,9096,9317,9499,9623,9698,9732,9711,9645, 9533,9375,9178,8935,8658,8349,8004,7629,7224,6796,6342,5866,5372,4864,4343,3808,3267,2719,2161,1607, 1044,486,-67,-625,-1179,-1716,-2258,-2785,-3309,-3816,-4310,-4792,-5260,-5715,-6149,-6564,-6966,-7345,-7696,-8030, -8340,-8621,-8879,-9106,-9302,-9475,-9603,-9699,-9763,-9785,-9762,-9701,-9599,-9453,-9259,-9025,-8758,-8448,-8100,-7718, -7305,-6870,-6412,-5930,-5442,-4944,-4440,-3946,-3457,-2991,-2532,-2102,-1696,-1325,-979,-668,-385,-146,67,253, 407,540,656,749,831,903,976,1045,1117,1201,1294,1407,1539,1694,1868,2075,2304,2564,2851,3175, 3519,3895,4284,4697,5122,5552,5994,6433,6862,7283,7680,8052,8401,8712,8988,9223,9415,9563,9660,9710, 9716,9669,9576,9439,9253,9029,8763,8457,8124,7754,7356,6932,6489,6025,5541,5043,4526,4001,3463,2923, 2368,1810,1249,685,122,-434,-993,-1541,-2079,-2612,-3132,-3640,-4138,-4618,-5091,-5544,-5983,-6405,-6815,-7200, -7570,-7916,-8237,-8533,-8799,-9036,-9246,-9418,-9564,-9668,-9742,-9767,-9761,-9716,-9631,-9503,-9333,-9118,-8867,-8570, -8236,-7867,-7465,-7031,-6581,-6105,-5615,-5120,-4620,-4120,-3632,-3154,-2700,-2260,-1846,-1462,-1105,-784,-494,-234, -11,185,357,500,620,719,806,882,954,1017,1092,1172,1259,1361,1485,1635,1799,1995,2222,2473, 2750,3063,3398,3759,4141,4538,4957,5388,5819,6256,6692,7115,7523,7907,8266,8594,8887,9141,9351,9510, 9628,9686,9704,9671,9594,9471,9304,9097,8851,8563,8240,7891,7502,7093,6655,6194,5714,5214,4700,4178, 3642,3095,2546,1996,1441,879,318,-237,-789,-1343,-1884,-2421,-2957,-3468,-3972,-4461,-4941,-5404,-5853,-6278, -6689,-7079,-7455,-7801,-8127,-8432,-8711,-8958,-9179,-9368,-9530,-9657,-9739,-9790,-9797,-9763,-9685,-9571,-9412,-9218, -8970,-8690,-8373,-8016,-7627,-7211,-6769,-6303,-5820,-5324,-4828,-4325,-3830,-3347,-2877,-2431,-2004,-1608,-1240,-910, -601,-335,-96,109,286,441,570,676,773,853,927,997,1065,1145,1233,1326,1443,1583,1740,1924, 2132,2377,2643,2942,3271,3625,4001,4396,4808,5239,5671,6105,6541,6966,7376,7771,8132,8473,8778,9045, 9267,9454,9586,9673,9711,9699,9640,9534,9382,9187,8950,8673,8359,8016,7639,7239,6808,6365,5894,5410, 4899,4379,3855,3311,2758,2207,1647,1082,522,-46,-601,-1152,-1701,-2241,-2766,-3285,-3788,-4298,-4772,-5237, -5694,-6133,-6553,-6958,-7339,-7702,-8043,-8353,-8642,-8898,-9128,-9325,-9495,-9633,-9729,-9788,-9816,-9801,-9742,-9649, -9507,-9327,-9106,-8834,-8528,-8185,-7807,-7394,-6955,-6501,-6023,-5525,-5033,-4534,-4035,-3550,-3080,-2625,-2196,-1784, -1409,-1060,-745,-461,-208,10,199,361,497,616,710,795,875,943,1011,1088,1174,1268,1376,1509, 1662,1836,2040,2269,2532,2819,3133,3474,3845,4229,4636,5053,5488,5926,6361,6794,7212,7612,7993,8341, 8661,8943,9182,9375,9529,9628,9681,9686,9643,9558,9428,9251,9031,8774,8480,8146,7786,7393,6971,6527, 6062,5578,5075,4558,4033,3499,2952,2400,1845,1290,734,170,-389,-943,-1495,-2040,-2574,-3097,-3614,-4116, -4606,-5078,-5534,-5978,-6397,-6805,-7192,-7558,-7909,-8230,-8527,-8801,-9049,-9260,-9443,-9589,-9704,-9778,-9811,-9812, -9769,-9681,-9561,-9390,-9183,-8929,-8637,-8314,-7952,-7555,-7131,-6681,-6213,-5730,-5232,-4728,-4231,-3739,-3256,-2793, -2352,-1941,-1546,-1190,-864,-566,-307,-73,124,296,444,568,677,769,852,924,996,1067,1146,1238, 1343,1464,1610,1775,1973,2188,2438,2719,3026,3358,3720,4103,4507,4921,5350,5783,6219,6650,7074,7480, 7865,8226,8556,8857,9112,9330,9501,9622,9698,9722,9694,9625,9508,9342,9137,8894,8608,8297,7938,7563, 7156,6728,6273,5798,5306,4799,4273,3739,3196,2644,2088,1527,966,405,-155,-712,-1261,-1802,-2336,-2864, -3375,-3882,-4374,-4859,-5321,-5775,-6209,-6626,-7019,-7395,-7751,-8085,-8384,-8664,-8913,-9136,-9329,-9490,-9614,-9707, -9762,-9777,-9754,-9689,-9579,-9427,-9238,-9002,-8724,-8405,-8058,-7675,-7259,-6817,-6352,-5876,-5387,-4888,-4395,-3901, -3421,-2953,-2505,-2075,-1681,-1304,-969,-662,-383,-143,72,256,409,542,655,750,831,909,980,1057, 1127,1218,1320,1435,1570,1732,1918,2130,2366,2631,2929,3248,3598,3970,4371,4778,5206,5643,6080,6513, 6936,7356,7749,8121,8460,8765,9039,9264,9448,9588,9676,9718,9720,9667,9568,9423,9236,9013,8744,8437, 8097,7725,7324,6901,6450,5980,5494,4992,4473,3946,3408,2865,2315,1756,1202,639,79,-483,-1040,-1587, -2130,-2662,-3180,-3691,-4187,-4669,-5137,-5583,-6024,-6442,-6844,-7223,-7593,-7931,-8252,-8542,-8808,-9042,-9247,-9422, -9558,-9664,-9729,-9752,-9743,-9691,-9598,-9460,-9288,-9070,-8816,-8514,-8180,-7810,-7408,-6977,-6519,-6044,-5558,-5063, -4564,-4068,-3581,-3102,-2651,-2216,-1808,-1431,-1075,-756,-472,-217,7,201,369,507,629,734,823,904, 977,1051,1126,1205,1302,1412,1538,1691,1867,2066,2298,2550,2837,3152,3490,3852,4244,4648,5065,5494, 5923,6357,6789,7205,7609,7990,8341,8661,8946,9194,9391,9546,9657,9713,9726,9686,9599,9472,9294,9079, 8827,8540,8210,7853,7466,7052,6615,6153,5675,5175,4664,4139,3597,3049,2502,1939,1382,825,260,-291, -848,-1393,-1934,-2468,-2993,-3507,-4011,-4501,-4978,-5439,-5883,-6313,-6725,-7112,-7482,-7827,-8150,-8449,-8719,-8966, -9180,-9365,-9517,-9639,-9720,-9768,-9769,-9737,-9658,-9541,-9377,-9174,-8927,-8646,-8323,-7963,-7571,-7148,-6704,-6241, -5764,-5272,-4779,-4277,-3787,-3310,-2841,-2401,-1975,-1587,-1224,-888,-591,-324,-86,117,294,445,572,682, 776,860,938,1013,1083,1168,1258,1365,1489,1630,1792,1992,2203,2451,2722,3022,3354,3710,4086,4484, 4901,5327,5757,6187,6619,7045,7449,7839,8195,8526,8822,9077,9294,9464,9587,9667,9692,9676,9612,9499, 9344,9142,8897,8621,8304,7955,7572,7167,6733,6279,5807,5317,4814,4295,3764,3221,2677,2119,1562,1000, 438,-122,-683,-1239,-1785,-2318,-2853,-3368,-3871,-4361,-4840,-5303,-5751,-6187,-6607,-7007,-7385,-7741,-8079,-8391, -8675,-8928,-9159,-9354,-9513,-9640,-9735,-9788,-9807,-9786,-9726,-9621,-9480,-9290,-9066,-8802,-8496,-8143,-7774,-7368, -6922,-6464,-5986,-5494,-4998,-4500,-4005,-3519,-3051,-2597,-2173,-1772,-1398,-1054,-739,-461,-211,9,198,360, 499,612,715,804,881,957,1033,1111,1196,1296,1417,1549,1707,1890,2100,2336,2603,2895,3215,3562, 3931,4318,4727,5146,5578,6007,6439,6864,7278,7674,8049,8392,8702,8973,9206,9394,9533,9627,9671,9670, 9620,9519,9379,9196,8973,8707,8410,8075,7712,7314,6894,6450,5981,5492,4990,4472,3944,3403,2855,2303, 1748,1189,631,72,-485,-1038,-1590,-2132,-2666,-3190,-3702,-4200,-4690,-5160,-5617,-6057,-6481,-6882,-7269,-7628, -7970,-8288,-8581,-8846,-9086,-9295,-9471,-9613,-9722,-9794,-9828,-9826,-9775,-9686,-9557,-9378,-9165,-8908,-8615,-8285, -7918,-7523,-7097,-6645,-6180,-5694,-5196,-4700,-4204,-3716,-3238,-2777,-2339,-1926,-1538,-1182,-860,-567,-305,-80, 124,296,440,561,671,770,852,925,1007,1081,1166,1263,1373,1505,1652,1824,2021,2249,2503,2784, 3094,3434,3795,4178,4586,5005,5431,5864,6297,6727,7144,7543,7925,8280,8602,8888,9133,9341,9507,9617, 9684,9704,9673,9594,9469,9300,9092,8839,8551,8230,7874,7490,7076,6641,6183,5706,5215,4706,4186,3646, 3104,2551,1997,1436,871,307,-252,-808,-1362,-1907,-2441,-2966,-3481,-3983,-4472,-4948,-5407,-5861,-6290,-6702, -7100,-7475,-7825,-8154,-8456,-8734,-8980,-9196,-9385,-9538,-9655,-9744,-9790,-9801,-9769,-9701,-9586,-9436,-9236,-8998, -8719,-8404,-8050,-7659,-7242,-6803,-6338,-5857,-5367,-4871,-4379,-3889,-3410,-2950,-2501,-2080,-1684,-1320,-984,-683, -404,-164,45,227,384,517,629,723,816,887,962,1040,1122,1216,1317,1437,1579,1746,1934,2153, 2395,2669,2965,3292,3645,4019,4415,4825,5251,5679,6112,6539,6965,7378,7766,8140,8475,8776,9038,9257, 9435,9563,9643,9675,9665,9609,9503,9351,9157,8931,8654,8347,8006,7636,7233,6807,6352,5890,5397,4891, 4374,3844,3305,2757,2205,1650,1093,532,4,-152,-684,-1129,-1436,-1564,-1528,-1358,-1203,-951,-485,186, 873,1542,2129,2649,3160,3713,4235,4711,5170,5687,6295,6998,7739,8455,9116,9697,10158,10471,10604,10569, 10392,10112,9751,9332,8862,8360,7831,7276,6706,6119,5502,4851,4166,3468,2769,2079,1398,757,157,-393, -905,-1377,-1812,-2220,-2642,-3093,-3589,-4109,-4624,-5120,-5611,-6126,-6642,-7135,-7568,-7943,-8277,-8585,-8904,-9220, -9516,-9781,-10037,-10291,-10552,-10826,-11090,-11296,-11414,-11447,-11415,-11287,-11039,-10648,-10099,-9430,-8674,-7850,-6941,-5945, -4878,-3762,-2634,-1517,-436,599,1561,2421,3144,3713,4117,4355,4426,4367,4196,3944,3621,3258,2845,2381, 1892,1415,947,486,33,-420,-864,-1260,-1592,-1861,-2052,-2155,-2167,-2090,-1907,-1637,-1292,-872,-377,189, 816,1500,2234,3022,3853,4720,5576,6375,7084,7700,8241,8687,9019,9229,9311,9289,9215,9104,8941,8702, 8398,8041,7639,7218,6773,6274,5715,5126,4531,3951,3401,2882,2365,1853,1368,928,518,116,-300,-747, -1216,-1677,-2128,-2580,-3041,-3502,-3962,-4398,-4781,-5124,-5465,-5814,-6171,-6516,-6833,-7117,-7397,-7700,-8020,-8327, -8598,-8818,-8985,-9107,-9187,-9197,-9103,-8908,-8613,-8228,-7768,-7230,-6595,-5855,-5030,-4138,-3196,-2207,-1186,-142, 887,1864,2761,3560,4247,4805,5221,5496,5654,5707,5654,5499,5245,4898,4482,4023,3524,2974,2370,1730, 1069,417,-206,-811,-1405,-1979,-2516,-3003,-3437,-3822,-4174,-4489,-4748,-4929,-5014,-5000,-4876,-4630,-4244,-3695, -2979,-2114,-1120,-12,1183,2436,3709,4983,6228,7438,8577,9618,10531,11273,11827,12222,12457,12548,12499,12318, 12005,11616,11183,10719,10231,9709,9153,8573,7992,7422,6845,6241,5615,4979,4340,3724,3125,2530,1931,1358, 812,292,-195,-667,-1146,-1633,-2109,-2576,-3036,-3498,-3973,-4465,-4956,-5415,-5845,-6262,-6682,-7103,-7525,-7930, -8309,-8668,-9022,-9381,-9731,-10060,-10355,-10593,-10797,-10977,-11123,-11210,-11229,-11163,-11018,-10812,-10546,-10186,-9709,-9101, -8371,-7524,-6585,-5547,-4426,-3239,-2022,-828,313,1375,2327,3156,3831,4352,4723,4952,5048,5010,4844,4575, 4232,3830,3379,2885,2350,1787,1223,677,154,-355,-834,-1275,-1662,-1985,-2238,-2430,-2559,-2619,-2595,-2484, -2277,-1983,-1598,-1121,-542,130,883,1694,2542,3422,4313,5183,6006,6767,7447,8036,8544,8950,9237,9406, 9480,9474,9401,9260,9041,8738,8372,7981,7572,7140,6683,6190,5668,5145,4642,4154,3658,3151,2635,2114, 1613,1137,663,171,-333,-838,-1333,-1805,-2252,-2700,-3157,-3604,-4033,-4440,-4825,-5210,-5611,-6022,-6417,-6790, -7144,-7479,-7805,-8130,-8432,-8680,-8876,-9034,-9162,-9253,-9297,-9270,-9151,-8950,-8680,-8340,-7915,-7394,-6759,-6022, -5201,-4309,-3358,-2361,-1337,-317,668,1582,2410,3131,3735,4205,4551,4776,4899,4916,4828,4640,4362,4005, 3595,3140,2640,2094,1512,927,355,-203,-746,-1279,-1797,-2289,-2742,-3143,-3499,-3812,-4074,-4272,-4381,-4375, -4264,-4033,-3673,-3162,-2507,-1703,-777,260,1386,2578,3800,5029,6225,7362,8434,9421,10293,11015,11566,11943, 12172,12279,12271,12142,11886,11536,11122,10675,10207,9709,9171,8606,8030,7457,6893,6334,5756,5151,4536,3943, 3376,2820,2270,1712,1147,605,95,-396,-880,-1373,-1871,-2364,-2833,-3283,-3730,-4195,-4671,-5143,-5606,-6038, -6451,-6875,-7302,-7729,-8134,-8512,-8862,-9203,-9550,-9899,-10217,-10490,-10715,-10900,-11050,-11170,-11225,-11184,-11036,-10793, -10456,-10020,-9478,-8796,-7967,-7019,-5975,-4858,-3683,-2462,-1232,-26,1107,2145,3062,3844,4475,4944,5254,5421, 5462,5381,5181,4881,4493,4044,3558,3044,2493,1916,1329,752,198,-322,-818,-1294,-1741,-2134,-2469,-2736, -2944,-3091,-3179,-3191,-3110,-2929,-2651,-2273,-1799,-1221,-539,229,1071,1965,2896,3846,4791,5695,6538,7305, 7999,8612,9121,9508,9762,9893,9933,9895,9767,9548,9241,8859,8437,7990,7537,7048,6525,5981,5438,4912, 4410,3911,3399,2875,2346,1830,1334,844,347,-167,-681,-1172,-1637,-2081,-2519,-2963,-3413,-3849,-4255,-4644, -5036,-5437,-5845,-6249,-6623,-6971,-7304,-7631,-7954,-8256,-8519,-8728,-8896,-9036,-9157,-9241,-9267,-9225,-9105,-8916, -8670,-8350,-7933,-7400,-6765,-6039,-5239,-4386,-3481,-2540,-1590,-665,219,1032,1761,2397,2921,3327,3617,3798, 3874,3841,3705,3472,3164,2798,2383,1927,1430,899,358,-171,-679,-1171,-1655,-2120,-2557,-2951,-3289,-3569, -3793,-3964,-4053,-4051,-3947,-3727,-3393,-2936,-2344,-1624,-783,161,1182,2269,3408,4565,5708,6807,7834,8772, 9613,10344,10923,11335,11592,11713,11731,11653,11488,11224,10882,10487,10071,9638,9182,8694,8166,7615,7065,6523, 5977,5418,4843,4256,3676,3123,2593,2065,1531,1001,479,-18,-495,-963,-1443,-1936,-2417,-2889,-3342,-3781, -4228,-4692,-5151,-5595,-6013,-6414,-6810,-7214,-7619,-8008,-8362,-8688,-9005,-9314,-9616,-9894,-10118,-10287,-10405,-10484, -10511,-10472,-10341,-10097,-9739,-9284,-8723,-8046,-7237,-6302,-5256,-4132,-2953,-1747,-531,659,1780,2813,3718,4486, 5107,5565,5868,6020,6035,5939,5740,5435,5038,4572,4056,3516,2953,2368,1763,1147,542,-32,-580,-1096, -1586,-2049,-2470,-2829,-3121,-3352,-3521,-3620,-3640,-3567,-3389,-3104,-2716,-2226,-1625,-922,-122,748,1673,2642, 3629,4608,5553,6439,7240,7960,8589,9112,9505,9765,9899,9922,9860,9712,9475,9144,8743,8300,7837,7357, 6862,6336,5786,5237,4707,4183,3666,3137,2593,2045,1511,996,491,-16,-532,-1048,-1546,-2010,-2451,-2886, -3318,-3752,-4174,-4577,-4958,-5337,-5729,-6131,-6525,-6899,-7250,-7578,-7902,-8219,-8520,-8783,-9003,-9183,-9335,-9469, -9576,-9631,-9620,-9547,-9409,-9213,-8947,-8590,-8120,-7535,-6853,-6092,-5260,-4366,-3425,-2457,-1491,-556,325,1134, 1860,2485,2997,3395,3680,3852,3915,3866,3715,3477,3173,2815,2409,1956,1473,970,468,-20,-490,-949, -1391,-1805,-2172,-2484,-2732,-2919,-3038,-3080,-3029,-2873,-2613,-2242,-1753,-1137,-403,439,1365,2356,3400,4479, 5567,6635,7639,8563,9392,10117,10722,11189,11498,11655,11688,11628,11485,11258,10952,10576,10154,9708,9252,8777, 8259,7714,7136,6558,5986,5418,4838,4246,3650,3066,2509,1976,1458,937,411,-101,-594,-1066,-1536,-2007, -2495,-2980,-3443,-3886,-4318,-4748,-5187,-5623,-6040,-6433,-6801,-7168,-7535,-7909,-8265,-8596,-8900,-9185,-9463,-9729, -9959,-10139,-10256,-10313,-10314,-10263,-10132,-9899,-9556,-9101,-8536,-7871,-7097,-6202,-5196,-4103,-2952,-1773,-594,561, 1663,2671,3562,4318,4929,5394,5709,5868,5890,5800,5609,5328,4963,4520,4015,3470,2904,2326,1734,1125, 514,-85,-654,-1180,-1676,-2141,-2572,-2959,-3288,-3543,-3736,-3864,-3923,-3897,-3771,-3537,-3193,-2738,-2171,-1495, -713,161,1110,2107,3136,4178,5207,6187,7097,7924,8654,9287,9804,10188,10427,10533,10530,10432,10249,9981, 9630,9211,8752,8280,7792,7288,6765,6212,5654,5102,4563,4023,3468,2893,2314,1744,1192,659,125,-416, -949,-1466,-1958,-2425,-2878,-3340,-3807,-4266,-4711,-5144,-5568,-6005,-6451,-6891,-7312,-7701,-8067,-8422,-8765,-9092, -9386,-9637,-9850,-10035,-10206,-10354,-10457,-10497,-10466,-10369,-10213,-9980,-9649,-9209,-8646,-7978,-7224,-6396,-5506,-4559, -3580,-2594,-1631,-712,146,926,1609,2184,2639,2980,3198,3305,3298,3178,2970,2691,2356,1973,1547,1084, 605,124,-347,-800,-1240,-1666,-2067,-2424,-2723,-2961,-3135,-3240,-3264,-3198,-3027,-2749,-2367,-1888,-1291,-584, 222,1114,2069,3074,4113,5163,6190,7165,8062,8864,9569,10162,10620,10934,11111,11170,11141,11038,10866,10614, 10293,9925,9527,9110,8671,8197,7685,7145,6602,6066,5534,5000,4453,3901,3361,2847,2354,1870,1383,886, 393,-86,-551,-1012,-1478,-1954,-2428,-2888,-3321,-3739,-4152,-4568,-4984,-5380,-5755,-6114,-6464,-6821,-7185,-7533, -7861,-8156,-8427,-8684,-8923,-9124,-9265,-9338,-9345,-9293,-9180,-8993,-8709,-8312,-7800,-7184,-6467,-5653,-4731,-3712, -2620,-1483,-339,784,1861,2857,3750,4513,5136,5617,5960,6157,6218,6152,5977,5716,5374,4957,4468,3927, 3345,2747,2141,1535,915,297,-296,-856,-1374,-1855,-2300,-2709,-3074,-3379,-3615,-3776,-3870,-3882,-3809,-3620, -3316,-2894,-2355,-1700,-936,-69,882,1897,2946,4015,5084,6126,7110,8005,8790,9471,10038,10474,10771,10918, 10932,10834,10650,10394,10067,9668,9217,8737,8238,7741,7230,6695,6138,5566,4999,4440,3884,3316,2732,2146, 1577,1027,503,-14,-530,-1045,-1543,-2020,-2472,-2920,-3372,-3832,-4294,-4742,-5172,-5599,-6024,-6454,-6877,-7275, -7643,-7984,-8312,-8636,-8947,-9234,-9486,-9703,-9895,-10074,-10229,-10340,-10389,-10362,-10263,-10096,-9851,-9512,-9056,-8484, -7806,-7037,-6201,-5296,-4336,-3335,-2323,-1329,-375,513,1327,2038,2635,3104,3444,3659,3752,3729,3594,3366, 3064,2711,2308,1860,1378,871,360,-146,-635,-1114,-1576,-2014,-2410,-2749,-3018,-3224,-3361,-3416,-3382,-3249, -3009,-2666,-2221,-1675,-1025,-277,556,1454,2406,3390,4390,5368,6298,7147,7911,8576,9137,9580,9891,10073, 10144,10128,10042,9883,9648,9334,8967,8561,8133,7678,7190,6666,6118,5564,5027,4501,3978,3450,2919,2398, 1894,1413,934,449,-49,-548,-1035,-1508,-1967,-2427,-2887,-3340,-3774,-4182,-4569,-4950,-5333,-5721,-6099,-6457, -6799,-7142,-7486,-7832,-8170,-8474,-8740,-8973,-9186,-9366,-9510,-9596,-9609,-9560,-9453,-9286,-9049,-8719,-8280,-7726, -7069,-6313,-5460,-4509,-3472,-2375,-1251,-131,952,1977,2912,3739,4443,5009,5445,5750,5923,5967,5893,5715, 5450,5110,4698,4218,3686,3120,2541,1959,1381,802,230,-326,-846,-1325,-1765,-2177,-2549,-2878,-3147,-3339, -3454,-3490,-3438,-3283,-3018,-2623,-2111,-1483,-747,93,1029,2038,3093,4170,5253,6316,7338,8283,9123,9839, 10427,10888,11219,11406,11449,11366,11182,10928,10613,10251,9827,9357,8859,8352,7839,7315,6768,6194,5602,5015, 4438,3867,3291,2712,2133,1574,1043,533,34,-463,-965,-1457,-1937,-2399,-2854,-3319,-3792,-4266,-4725,-5165, -5588,-6009,-6429,-6843,-7230,-7590,-7925,-8251,-8573,-8893,-9192,-9458,-9692,-9897,-10081,-10231,-10337,-10371,-10323,-10194, -9994,-9714,-9336,-8852,-8251,-7547,-6752,-5885,-4949,-3957,-2920,-1871,-840,145,1065,1890,2611,3205,3667,3993, 4193,4274,4236,4099,3866,3560,3205,2800,2353,1866,1355,836,324,-176,-655,-1118,-1553,-1941,-2269,-2526, -2721,-2844,-2898,-2863,-2735,-2507,-2182,-1755,-1227,-597,135,949,1830,2766,3734,4715,5680,6598,7442,8205, 8880,9456,9923,10264,10484,10588,10601,10538,10396,10167,9859,9483,9066,8619,8149,7650,7120,6574,6026,5486, 4965,4449,3925,3389,2862,2342,1839,1335,824,303,-223,-732,-1222,-1694,-2161,-2624,-3081,-3518,-3930,-4327, -4719,-5120,-5524,-5928,-6320,-6693,-7060,-7427,-7791,-8135,-8448,-8722,-8954,-9159,-9339,-9481,-9572,-9600,-9569,-9476, -9331,-9117,-8810,-8394,-7864,-7224,-6489,-5658,-4739,-3744,-2698,-1634,-584,428,1377,2242,3001,3646,4166,4560, 4828,4971,4988,4891,4692,4406,4050,3624,3140,2610,2051,1483,922,361,-189,-738,-1263,-1760,-2216,-2634, -3016,-3363,-3655,-3878,-4020,-4075,-4030,-3895,-3648,-3284,-2798,-2201,-1493,-674,242,1239,2294,3376,4467,5545, 6583,7562,8448,9206,9830,10315,10667,10892,10986,10952,10810,10580,10295,9967,9589,9168,8700,8201,7691,7172, 6638,6080,5500,4913,4324,3755,3201,2652,2100,1555,1027,523,37,-439,-924,-1412,-1901,-2376,-2837,-3289, -3745,-4207,-4664,-5102,-5517,-5915,-6311,-6701,-7087,-7459,-7810,-8139,-8462,-8785,-9105,-9402,-9667,-9890,-10076,-10229, -10346,-10407,-10399,-10303,-10128,-9877,-9549,-9126,-8596,-7954,-7202,-6360,-5441,-4450,-3409,-2336,-1253,-203,786,1691, 2491,3171,3712,4120,4393,4542,4576,4499,4318,4048,3711,3315,2873,2393,1872,1327,777,240,-275,-772, -1243,-1679,-2072,-2404,-2675,-2879,-3021,-3092,-3086,-2986,-2788,-2489,-2092,-1586,-977,-267,530,1398,2319,3275, 4246,5208,6127,6986,7771,8473,9086,9594,9982,10243,10386,10428,10384,10249,10029,9725,9353,8940,8501,8044, 7559,7057,6534,6007,5492,4985,4478,3960,3428,2891,2361,1843,1329,809,286,-232,-738,-1216,-1677,-2124, -2573,-3016,-3448,-3860,-4260,-4659,-5065,-5484,-5897,-6295,-6675,-7035,-7389,-7734,-8059,-8349,-8596,-8811,-8997,-9158, -9297,-9388,-9421,-9392,-9306,-9160,-8942,-8629,-8203,-7661,-7014,-6270,-5438,-4530,-3555,-2537,-1505,-492,483,1400, 2238,2976,3602,4106,4491,4748,4884,4896,4794,4589,4301,3950,3538,3070,2562,2028,1487,949,417,-112, -637,-1145,-1626,-2069,-2467,-2828,-3142,-3397,-3573,-3663,-3659,-3558,-3354,-3046,-2631,-2101,-1452,-695,164,1111, 2126,3188,4264,5332,6367,7350,8256,9053,9718,10240,10625,10880,11026,11053,10969,10785,10529,10219,9867,9474, 9033,8547,8025,7486,6942,6389,5821,5232,4643,4065,3503,2961,2432,1899,1368,850,346,-144,-626,-1120, -1621,-2120,-2602,-3067,-3521,-3969,-4418,-4860,-5285,-5686,-6071,-6454,-6839,-7221,-7595,-7953,-8289,-8616,-8937,-9250, -9538,-9783,-9981,-10131,-10241,-10309,-10321,-10258,-10114,-9887,-9576,-9182,-8694,-8095,-7377,-6549,-5626,-4630,-3573,-2482, -1376,-285,750,1703,2552,3280,3880,4339,4657,4848,4919,4874,4727,4476,4142,3741,3284,2790,2262,1702, 1124,553,-7,-534,-1037,-1511,-1954,-2354,-2700,-2986,-3211,-3373,-3469,-3486,-3408,-3228,-2944,-2554,-2058,-1450, -740,57,929,1855,2818,3798,4778,5721,6607,7423,8164,8810,9352,9765,10047,10203,10246,10193,10053,9831, 9525,9156,8746,8315,7867,7404,6915,6407,5887,5371,4861,4344,3814,3270,2719,2179,1651,1138,627,115, -389,-874,-1341,-1783,-2221,-2658,-3098,-3530,-3947,-4355,-4762,-5171,-5585,-5993,-6381,-6746,-7088,-7420,-7741,-8044, -8317,-8556,-8763,-8946,-9113,-9248,-9346,-9386,-9359,-9273,-9120,-8892,-8568,-8132,-7586,-6935,-6192,-5372,-4482,-3528, -2538,-1529,-534,421,1326,2157,2891,3520,4021,4402,4660,4793,4804,4705,4505,4227,3882,3482,3035,2544, 2027,1500,973,447,-76,-593,-1094,-1569,-2000,-2383,-2715,-2993,-3206,-3340,-3382,-3329,-3177,-2926,-2574,-2112, -1537,-852,-54,830,1794,2817,3868,4921,5947,6924,7838,8660,9369,9943,10382,10685,10875,10961,10946,10831, 10621,10341,10010,9636,9219,8755,8248,7711,7156,6602,6044,5483,4911,4336,3774,3233,2709,2191,1670,1144, 623,112,-390,-883,-1387,-1890,-2388,-2873,-3331,-3773,-4208,-4641,-5070,-5486,-5883,-6265,-6648,-7036,-7426,-7806, -8171,-8514,-8838,-9145,-9439,-9699,-9916,-10079,-10192,-10264,-10292,-10269,-10173,-9997,-9732,-9381,-8939,-8399,-7742,-6970, -6085,-5108,-4069,-2986,-1877,-776,288,1288,2194,2987,3654,4193,4597,4864,5004,5027,4944,4757,4472,4104, 3673,3198,2687,2152,1597,1029,471,-71,-580,-1062,-1517,-1940,-2324,-2656,-2928,-3136,-3280,-3350,-3338,-3228, -3010,-2683,-2254,-1713,-1070,-322,504,1402,2351,3333,4328,5319,6276,7173,7992,8720,9356,9873,10260,10510, 10629,10639,10555,10394,10152,9840,9469,9062,8633,8189,7726,7238,6725,6196,5668,5138,4604,4064,3512,2954, 2412,1888,1380,881,383,-109,-589,-1052,-1499,-1941,-2386,-2838,-3287,-3722,-4146,-4562,-4982,-5394,-5803,-6189, -6555,-6893,-7225,-7547,-7860,-8147,-8407,-8638,-8847,-9043,-9208,-9335,-9400,-9398,-9330,-9195,-8986,-8686,-8281,-7768, -7155,-6456,-5676,-4827,-3913,-2953,-1969,-989,-35,868,1703,2451,3090,3609,4005,4278,4426,4457,4381,4208, 3953,3636,3258,2836,2364,1865,1354,834,319,-195,-700,-1184,-1636,-2038,-2389,-2684,-2919,-3084,-3172,-3168, -3069,-2876,-2582,-2187,-1687,-1074,-354,465,1373,2341,3358,4391,5413,6393,7315,8165,8926,9574,10097,10488, 10756,10914,10973,10939,10811,10588,10293,9945,9553,9122,8651,8139,7600,7054,6508,5969,5426,4878,4328,3781, 3251,2734,2218,1699,1169,641,120,-384,-881,-1375,-1872,-2358,-2829,-3272,-3702,-4124,-4548,-4969,-5389,-5791, -6183,-6576,-6976,-7377,-7763,-8129,-8464,-8779,-9073,-9346,-9587,-9788,-9936,-10035,-10092,-10108,-10070,-9965,-9769,-9481, -9099,-8620,-8034,-7335,-6517,-5600,-4603,-3552,-2480,-1398,-340,667,1596,2427,3141,3731,4189,4513,4705,4770, 4726,4575,4327,3991,3580,3111,2607,2078,1534,975,413,-143,-675,-1180,-1654,-2100,-2521,-2898,-3218,-3478, -3669,-3790,-3830,-3780,-3630,-3369,-2996,-2518,-1931,-1243,-456,416,1352,2336,3350,4378,5394,6366,7272,8089, 8808,9413,9902,10255,10471,10561,10544,10445,10268,10024,9712,9345,8938,8509,8061,7592,7095,6573,6029,5487, 4944,4402,3862,3310,2765,2231,1721,1227,741,254,-235,-713,-1182,-1636,-2086,-2537,-2997,-3451,-3891,-4315, -4723,-5130,-5534,-5929,-6306,-6658,-6993,-7323,-7646,-7964,-8264,-8535,-8776,-8995,-9189,-9351,-9468,-9523,-9510,-9424, -9274,-9049,-8738,-8333,-7816,-7205,-6506,-5727,-4874,-3955,-2987,-1991,-995,-30,885,1730,2484,3126,3647,4041, 4314,4468,4502,4430,4263,4015,3700,3327,2903,2432,1931,1412,888,370,-143,-644,-1120,-1557,-1949,-2287, -2564,-2785,-2939,-3017,-3008,-2903,-2705,-2408,-2009,-1503,-887,-168,645,1534,2482,3467,4469,5452,6393,7274, 8085,8808,9429,9931,10306,10560,10708,10754,10706,10559,10326,10015,9649,9244,8802,8330,7823,7293,6758,6226, 5699,5174,4636,4093,3553,3018,2496,1974,1445,913,382,-136,-639,-1125,-1607,-2084,-2552,-3005,-3435,-3852, -4268,-4685,-5108,-5524,-5934,-6327,-6717,-7106,-7492,-7862,-8208,-8521,-8806,-9071,-9316,-9531,-9708,-9835,-9916,-9955, -9949,-9888,-9749,-9520,-9189,-8757,-8219,-7578,-6827,-5969,-5021,-4010,-2959,-1899,-848,170,1124,1996,2764,3414, 3941,4336,4598,4730,4745,4644,4452,4169,3802,3372,2891,2380,1857,1315,769,219,-324,-847,-1342,-1808, -2243,-2648,-3007,-3313,-3550,-3713,-3798,-3802,-3707,-3516,-3215,-2802,-2282,-1658,-931,-110,793,1759,2770,3804, 4843,5855,6819,7700,8484,9155,9708,10142,10443,10613,10663,10606,10473,10274,10006,9678,9293,8867,8412,7939, 7439,6918,6370,5809,5246,4693,4148,3604,3059,2517,1991,1479,985,492,0,-494,-987,-1466,-1937,-2399, -2860,-3320,-3774,-4210,-4627,-5028,-5426,-5819,-6207,-6579,-6938,-7278,-7612,-7945,-8267,-8573,-8848,-9090,-9296,-9478, -9621,-9719,-9750,-9712,-9606,-9429,-9186,-8855,-8430,-7901,-7268,-6543,-5737,-4853,-3906,-2908,-1888,-875,107,1029, 1871,2616,3248,3753,4135,4392,4532,4559,4479,4302,4046,3724,3343,2908,2431,1927,1401,882,366,-137, -620,-1083,-1504,-1874,-2198,-2458,-2662,-2806,-2871,-2852,-2743,-2533,-2224,-1807,-1285,-658,68,882,1769,2710, 3683,4668,5632,6559,7427,8224,8939,9554,10048,10415,10661,10797,10830,10762,10599,10344,10019,9638,9219,8773, 8297,7792,7268,6732,6203,5670,5138,4594,4039,3478,2925,2378,1840,1294,751,210,-315,-820,-1307,-1790, -2265,-2734,-3190,-3631,-4062,-4490,-4924,-5359,-5793,-6211,-6616,-7009,-7392,-7771,-8132,-8464,-8764,-9036,-9286,-9519, -9726,-9896,-10020,-10096,-10127,-10105,-10022,-9861,-9600,-9235,-8764,-8191,-7519,-6742,-5873,-4923,-3920,-2890,-1854,-835, 144,1062,1892,2622,3232,3721,4078,4309,4407,4393,4276,4065,3772,3408,2984,2516,2019,1508,986,455, -79,-606,-1111,-1591,-2038,-2454,-2828,-3157,-3425,-3619,-3735,-3768,-3717,-3568,-3316,-2960,-2492,-1923,-1247,-475, 392,1336,2336,3363,4403,5433,6424,7350,8180,8903,9506,9992,10357,10596,10716,10717,10627,10459,10227,9933, 9577,9167,8713,8232,7731,7211,6674,6116,5549,4984,4434,3893,3357,2821,2286,1762,1249,745,251,-252, -756,-1258,-1748,-2219,-2680,-3141,-3591,-4037,-4462,-4872,-5268,-5656,-6048,-6437,-6815,-7180,-7529,-7870,-8206,-8529, -8830,-9099,-9328,-9519,-9679,-9800,-9873,-9887,-9832,-9709,-9518,-9253,-8905,-8462,-7907,-7248,-6489,-5648,-4729,-3750, -2720,-1684,-653,328,1249,2079,2809,3422,3908,4268,4511,4632,4645,4548,4357,4085,3752,3356,2916,2432, 1923,1404,886,383,-103,-573,-1015,-1422,-1781,-2089,-2342,-2537,-2668,-2722,-2690,-2565,-2340,-2012,-1580,-1043, -400,339,1159,2045,2981,3951,4930,5891,6814,7679,8474,9184,9793,10281,10639,10871,10993,11007,10926,10753, 10491,10165,9786,9374,8937,8476,7985,7470,6945,6417,5889,5350,4803,4241,3675,3117,2568,2027,1491,955, 426,-87,-581,-1062,-1535,-2006,-2472,-2937,-3384,-3823,-4260,-4699,-5140,-5576,-5992,-6395,-6778,-7152,-7518,-7868, -8195,-8493,-8763,-9018,-9254,-9467,-9641,-9771,-9852,-9878,-9846,-9751,-9574,-9296,-8915,-8430,-7848,-7171,-6401,-5544, -4615,-3634,-2630,-1624,-634,314,1203,2003,2703,3280,3742,4072,4272,4354,4320,4186,3967,3673,3310,2891, 2428,1940,1430,914,389,-140,-661,-1162,-1631,-2067,-2464,-2815,-3116,-3352,-3511,-3589,-3582,-3486,-3298,-3008, -2608,-2105,-1496,-783,29,927,1891,2899,3923,4945,5939,6883,7754,8520,9176,9710,10131,10435,10624,10696, 10659,10531,10330,10062,9742,9356,8919,8445,7942,7428,6902,6360,5809,5250,4696,4156,3627,3099,2570,2039, 1513,996,489,-13,-517,-1024,-1523,-2008,-2476,-2927,-3372,-3810,-4243,-4659,-5062,-5456,-5846,-6238,-6632,-7018, -7386,-7743,-8079,-8408,-8721,-9007,-9261,-9469,-9641,-9776,-9874,-9930,-9929,-9854,-9716,-9505,-9215,-8840,-8358,-7764, -7062,-6259,-5374,-4424,-3413,-2373,-1329,-309,658,1550,2352,3039,3611,4058,4378,4576,4659,4628,4495,4265, 3957,3586,3163,2696,2198,1676,1149,626,119,-369,-836,-1278,-1687,-2052,-2360,-2615,-2811,-2942,-2993,-2956, -2822,-2588,-2248,-1805,-1256,-602,142,966,1854,2793,3764,4745,5713,6640,7509,8302,9010,9613,10093,10442, 10662,10768,10773,10686,10511,10257,9936,9571,9175,8748,8298,7821,7314,6792,6262,5732,5192,4643,4083,3524, 2975,2435,1909,1393,879,370,-125,-606,-1072,-1537,-2002,-2463,-2923,-3372,-3806,-4238,-4665,-5094,-5514,-5912, -6293,-6659,-7011,-7357,-7691,-8006,-8295,-8561,-8808,-9039,-9245,-9412,-9531,-9593,-9599,-9544,-9422,-9217,-8914,-8514, -8011,-7415,-6731,-5961,-5107,-4184,-3212,-2215,-1219,-242,691,1558,2338,3011,3564,3995,4300,4481,4540,4488, 4343,4116,3818,3451,3028,2563,2070,1556,1034,506,-26,-545,-1042,-1507,-1930,-2310,-2646,-2922,-3136,-3273, -3329,-3302,-3183,-2973,-2658,-2236,-1714,-1080,-344,490,1399,2364,3363,4369,5360,6316,7218,8037,8757,9363, 9850,10223,10488,10639,10675,10606,10444,10207,9910,9556,9149,8692,8203,7692,7171,6645,6112,5566,5020,4473, 3936,3409,2883,2352,1813,1280,755,244,-264,-767,-1267,-1758,-2234,-2687,-3128,-3559,-3986,-4411,-4824,-5230, -5624,-6018,-6415,-6808,-7194,-7562,-7908,-8235,-8544,-8837,-9104,-9330,-9518,-9670,-9784,-9864,-9900,-9877,-9786,-9614, -9371,-9037,-8608,-8071,-7417,-6659,-5805,-4872,-3883,-2855,-1808,-769,229,1165,2019,2772,3415,3932,4322,4588, 4732,4756,4674,4491,4217,3869,3464,3017,2534,2021,1490,957,432,-80,-568,-1039,-1483,-1895,-2263,-2578, -2833,-3026,-3147,-3187,-3138,-2988,-2738,-2382,-1920,-1358,-695,62,897,1798,2749,3729,4723,5698,6629,7494, 8279,8974,9556,10012,10337,10539,10622,10612,10514,10330,10076,9755,9383,8982,8550,8089,7595,7077,6539,5992, 5441,4891,4329,3769,3209,2659,2127,1608,1095,585,77,-422,-909,-1388,-1861,-2334,-2810,-3275,-3726,-4164, -4592,-5013,-5429,-5838,-6234,-6605,-6961,-7310,-7655,-7990,-8306,-8602,-8872,-9121,-9346,-9543,-9700,-9800,-9844,-9827, -9749,-9605,-9379,-9062,-8650,-8138,-7537,-6846,-6070,-5211,-4283,-3310,-2312,-1312,-339,593,1451,2217,2877,3419, 3834,4129,4301,4360,4308,4167,3943,3649,3288,2872,2412,1920,1417,901,385,-130,-631,-1105,-1543,-1940, -2284,-2588,-2833,-3011,-3114,-3139,-3075,-2919,-2670,-2315,-1857,-1288,-614,157,1017,1944,2917,3913,4903,5872, 6798,7666,8450,9134,9703,10155,10492,10718,10830,10831,10726,10533,10266,9942,9566,9143,8680,8184,7673,7157, 6639,6110,5570,5024,4479,3938,3399,2867,2325,1778,1238,703,190,-320,-817,-1314,-1798,-2271,-2723,-3161, -3594,-4024,-4456,-4885,-5302,-5711,-6114,-6518,-6914,-7301,-7665,-8002,-8318,-8617,-8897,-9152,-9373,-9553,-9698,-9809, -9882,-9909,-9874,-9764,-9575,-9297,-8931,-8461,-7883,-7194,-6400,-5525,-4577,-3579,-2557,-1524,-508,467,1369,2189, 2904,3504,3982,4330,4552,4654,4643,4526,4315,4022,3660,3243,2791,2307,1801,1280,755,235,-264,-749, -1208,-1641,-2038,-2388,-2680,-2909,-3067,-3154,-3159,-3065,-2874,-2583,-2187,-1688,-1088,-387,404,1272,2200,3172, 4170,5165,6142,7059,7902,8658,9310,9850,10269,10554,10719,10775,10739,10621,10425,10159,9826,9445,9029,8585, 8105,7601,7068,6520,5964,5410,4862,4309,3755,3204,2661,2135,1620,1111,600,89,-420,-916,-1403,-1884, -2364,-2841,-3308,-3759,-4195,-4616,-5031,-5443,-5847,-6240,-6620,-6982,-7342,-7697,-8044,-8373,-8680,-8956,-9206,-9431, -9619,-9771,-9866,-9901,-9881,-9800,-9657,-9437,-9126,-8726,-8225,-7632,-6950,-6177,-5324,-4398,-3425,-2430,-1436,-469, 448,1295,2046,2691,3219,3627,3912,4081,4134,4082,3938,3713,3415,3051,2633,2173,1685,1180,675,164, -333,-817,-1270,-1686,-2060,-2385,-2662,-2883,-3036,-3116,-3111,-3016,-2829,-2542,-2151,-1656,-1053,-349,444,1315, 2245,3213,4193,5163,6105,7002,7837,8589,9235,9767,10179,10474,10658,10730,10697,10561,10341,10052,9713,9332, 8908,8451,7966,7468,6961,6449,5930,5397,4852,4305,3760,3220,2680,2140,1599,1062,538,32,-459,-948, -1430,-1903,-2363,-2811,-3250,-3684,-4117,-4555,-4984,-5407,-5814,-6215,-6611,-6999,-7369,-7720,-8044,-8348,-8634,-8902, -9147,-9367,-9548,-9689,-9796,-9858,-9874,-9822,-9694,-9475,-9164,-8758,-8256,-7651,-6938,-6129,-5240,-4292,-3302,-2287, -1277,-285,659,1533,2312,2988,3544,3980,4280,4457,4519,4470,4322,4085,3766,3389,2963,2504,2013,1501, 979,451,-67,-570,-1053,-1509,-1936,-2319,-2654,-2925,-3131,-3264,-3321,-3293,-3169,-2947,-2622,-2196,-1665,-1036, -306,512,1407,2356,3343,4345,5343,6301,7199,8014,8736,9351,9858,10243,10503,10643,10681,10626,10493,10286, 10005,9661,9266,8832,8369,7883,7368,6834,6285,5735,5190,4650,4109,3572,3032,2501,1981,1467,961,448, -65,-574,-1071,-1558,-2033,-2501,-2964,-3419,-3855,-4275,-4684,-5087,-5488,-5887,-6278,-6658,-7021,-7380,-7736,-8076, -8398,-8693,-8955,-9190,-9393,-9563,-9688,-9767,-9787,-9748,-9654,-9497,-9266,-8943,-8525,-8007,-7388,-6679,-5882,-5003, -4064,-3076,-2073,-1080,-122,782,1604,2335,2951,3455,3838,4099,4242,4275,4201,4034,3786,3467,3088,2650, 2179,1683,1176,668,162,-332,-807,-1257,-1668,-2038,-2360,-2633,-2848,-3001,-3071,-3058,-2953,-2753,-2451,-2045, -1535,-923,-212,583,1447,2372,3328,4296,5252,6178,7058,7870,8600,9224,9728,10113,10377,10530,10572,10516, 10358,10125,9829,9484,9102,8683,8229,7754,7255,6749,6237,5713,5175,4625,4070,3522,2977,2438,1905,1371, 846,336,-161,-641,-1117,-1591,-2058,-2519,-2967,-3407,-3842,-4275,-4709,-5137,-5549,-5949,-6334,-6712,-7082,-7435, -7768,-8080,-8372,-8645,-8906,-9144,-9354,-9523,-9652,-9738,-9777,-9759,-9672,-9503,-9240,-8888,-8438,-7895,-7253,-6508, -5677,-4771,-3810,-2816,-1804,-798,179,1100,1949,2698,3335,3850,4241,4503,4640,4668,4592,4422,4167,3837, 3451,3019,2553,2060,1548,1023,495,-26,-526,-998,-1445,-1855,-2222,-2534,-2785,-2966,-3079,-3109,-3058,-2913, -2669,-2323,-1871,-1320,-668,86,928,1837,2798,3786,4782,5763,6702,7570,8355,9040,9623,10095,10448,10678, 10797,10804,10726,10562,10325,10017,9644,9222,8768,8283,7782,7259,6717,6168,5617,5069,4533,3992,3450,2907, 2365,1832,1306,784,263,-262,-776,-1279,-1766,-2238,-2702,-3160,-3609,-4043,-4462,-4872,-5282,-5688,-6095,-6493, -6880,-7253,-7614,-7963,-8301,-8612,-8894,-9140,-9357,-9540,-9693,-9805,-9867,-9873,-9820,-9707,-9528,-9268,-8917,-8458, -7898,-7236,-6481,-5641,-4729,-3761,-2759,-1751,-763,182,1063,1860,2557,3143,3607,3954,4181,4291,4290,4182, 3987,3711,3371,2970,2527,2046,1549,1042,539,41,-445,-913,-1353,-1755,-2119,-2433,-2695,-2900,-3038,-3095, -3061,-2938,-2714,-2390,-1966,-1436,-805,-85,720,1594,2519,3483,4451,5410,6336,7211,8019,8737,9343,9833, 10196,10439,10573,10603,10532,10373,10136,9841,9499,9119,8704,8253,7770,7270,6752,6227,5693,5146,4588,4027, 3472,2929,2394,1864,1340,821,314,-182,-666,-1144,-1624,-2103,-2575,-3033,-3483,-3924,-4363,-4798,-5226,-5636, -6027,-6409,-6781,-7144,-7497,-7833,-8148,-8446,-8723,-8987,-9227,-9436,-9601,-9723,-9794,-9814,-9775,-9666,-9470,-9189, -8814,-8348,-7788,-7137,-6388,-5552,-4647,-3693,-2705,-1705,-715,239,1136,1947,2658,3258,3735,4086,4314,4424, 4425,4329,4142,3876,3537,3144,2707,2238,1742,1230,705,183,-327,-815,-1273,-1695,-2085,-2423,-2710,-2930, -3083,-3162,-3164,-3078,-2899,-2621,-2236,-1750,-1161,-469,320,1190,2120,3090,4079,5066,6030,6944,7785,8539, 9198,9749,10186,10506,10706,10791,10771,10658,10470,10205,9877,9492,9060,8594,8113,7612,7100,6571,6031,5493, 4957,4424,3889,3348,2805,2262,1728,1203,682,163,-353,-859,-1347,-1824,-2285,-2734,-3181,-3621,-4051,-4475, -4888,-5301,-5712,-6122,-6523,-6908,-7276,-7632,-7968,-8292,-8589,-8856,-9091,-9296,-9469,-9610,-9715,-9773,-9773,-9710, -9580,-9378,-9094,-8711,-8224,-7627,-6933,-6147,-5286,-4357,-3383,-2384,-1385,-414,509,1365,2134,2800,3350,3781, 4091,4280,4358,4318,4182,3957,3660,3300,2888,2436,1953,1453,947,445,-49,-533,-999,-1436,-1833,-2192, -2499,-2750,-2937,-3056,-3090,-3035,-2885,-2637,-2288,-1839,-1292,-644,93,911,1797,2733,3696,4669,5623,6538, 7399,8180,8868,9446,9901,10235,10452,10563,10573,10491,10326,10088,9789,9447,9063,8644,8189,7700,7190,6667, 6136,5597,5051,4498,3946,3402,2867,2346,1828,1313,802,298,-194,-681,-1166,-1645,-2126,-2598,-3056,-3500, -3936,-4365,-4788,-5202,-5601,-5988,-6359,-6725,-7084,-7436,-7774,-8092,-8389,-8669,-8927,-9161,-9361,-9514,-9617,-9671, -9670,-9615,-9487,-9281,-8987,-8606,-8137,-7572,-6914,-6169,-5333,-4427,-3472,-2488,-1497,-520,417,1291,2076,2763, 3333,3783,4113,4318,4411,4397,4290,4093,3818,3474,3070,2624,2150,1652,1137,618,103,-399,-873,-1317, -1723,-2089,-2410,-2675,-2878,-3007,-3064,-3038,-2924,-2713,-2402,-1982,-1461,-839,-116,696,1578,2516,3480,4453, 5418,6349,7229,8032,8742,9353,9854,10240,10508,10661,10695,10629,10471,10242,9948,9591,9184,8741,8270,7782, 7281,6767,6238,5698,5155,4615,4072,3528,2978,2426,1875,1336,809,289,-224,-732,-1230,-1717,-2184,-2643, -3090,-3536,-3980,-4418,-4844,-5267,-5681,-6095,-6503,-6899,-7277,-7636,-7977,-8304,-8610,-8897,-9152,-9378,-9573,-9741, -9878,-9973,-10019,-10004,-9923,-9766,-9532,-9210,-8789,-8262,-7630,-6896,-6084,-5197,-4254,-3268,-2265,-1269,-305,610, 1450,2200,2844,3369,3776,4057,4218,4267,4206,4048,3807,3497,3128,2714,2261,1779,1281,779,280,-210, -688,-1147,-1576,-1965,-2308,-2597,-2825,-2988,-3078,-3085,-3005,-2827,-2550,-2178,-1703,-1129,-454,304,1144,2044, 2995,3969,4942,5893,6796,7635,8393,9053,9600,10026,10333,10530,10621,10618,10522,10345,10098,9790,9429,9032, 8599,8129,7626,7103,6572,6034,5493,4950,4403,3854,3315,2784,2264,1749,1230,715,203,-299,-795,-1285, -1773,-2256,-2729,-3186,-3626,-4057,-4481,-4900,-5309,-5707,-6094,-6472,-6842,-7206,-7565,-7908,-8228,-8525,-8798,-9052, -9272,-9456,-9595,-9684,-9723,-9710,-9637,-9503,-9286,-8983,-8591,-8106,-7529,-6858,-6091,-5243,-4324,-3363,-2373,-1383, -415,508,1362,2123,2785,3331,3759,4066,4254,4329,4300,4177,3966,3681,3325,2916,2465,1984,1487,981, 471,-33,-514,-974,-1399,-1788,-2137,-2435,-2681,-2862,-2969,-2997,-2944,-2798,-2551,-2200,-1748,-1188,-532,221, 1054,1953,2895,3864,4833,5790,6709,7572,8355,9042,9618,10087,10436,10669,10783,10785,10686,10506,10256,9949, 9588,9179,8738,8273,7788,7294,6781,6258,5717,5172,4625,4078,3533,2983,2432,1888,1355,833,327,-174, -672,-1161,-1641,-2106,-2563,-3013,-3460,-3910,-4349,-4782,-5202,-5619,-6026,-6428,-6817,-7188,-7536,-7869,-8187,-8490, -8772,-9030,-9258,-9455,-9619,-9752,-9842,-9879,-9847,-9746,-9567,-9306,-8956,-8508,-7956,-7305,-6560,-5737,-4847,-3904, -2927,-1931,-954,-5,881,1693,2408,3013,3498,3863,4100,4223,4233,4143,3958,3691,3364,2982,2553,2089, 1596,1094,580,75,-418,-898,-1354,-1777,-2157,-2491,-2762,-2975,-3117,-3188,-3172,-3067,-2866,-2567,-2172,-1676, -1074,-382,400,1259,2172,3126,4100,5065,5996,6877,7687,8410,9034,9550,9949,10227,10397,10464,10440,10325, 10130,9862,9534,9158,8742,8295,7812,7308,6782,6250,5716,5184,4648,4111,3574,3039,2514,1991,1474,956, 437,-76,-581,-1077,-1563,-2043,-2516,-2976,-3423,-3854,-4273,-4685,-5096,-5504,-5903,-6290,-6668,-7039,-7405,-7758, -8094,-8409,-8696,-8954,-9187,-9390,-9558,-9679,-9755,-9778,-9751,-9666,-9519,-9287,-8971,-8557,-8050,-7448,-6751,-5961, -5090,-4157,-3181,-2191,-1207,-251,654,1485,2226,2860,3381,3784,4067,4231,4283,4231,4087,3859,3554,3184, 2765,2307,1824,1329,826,321,-173,-651,-1098,-1515,-1895,-2235,-2521,-2760,-2922,-3015,-3024,-2948,-2776,-2505, -2129,-1656,-1077,-402,363,1205,2107,3048,4010,4973,5916,6820,7663,8418,9077,9620,10051,10365,10559,10643, 10615,10496,10299,10037,9722,9360,8954,8513,8045,7561,7061,6546,6012,5467,4917,4363,3816,3269,2725,2183, 1648,1125,613,113,-379,-869,-1354,-1833,-2300,-2758,-3211,-3660,-4106,-4543,-4969,-5384,-5786,-6183,-6567,-6942, -7299,-7639,-7960,-8270,-8563,-8840,-9091,-9311,-9495,-9645,-9755,-9820,-9827,-9767,-9628,-9414,-9116,-8731,-8247,-7667, -6989,-6224,-5380,-4475,-3524,-2541,-1549,-578,358,1225,2013,2695,3263,3717,4046,4254,4346,4329,4220,4020, 3743,3403,3013,2579,2114,1620,1116,609,106,-381,-848,-1289,-1695,-2057,-2367,-2616,-2801,-2922,-2964,-2925, -2797,-2569,-2249,-1821,-1296,-671,50,855,1728,2651,3607,4571,5525,6434,7288,8070,8761,9354,9840,10203, 10455,10591,10635,10579,10437,10214,9920,9570,9173,8740,8279,7792,7281,6755,6226,5694,5163,4630,4091,3552, 3011,2481,1951,1423,901,373,-144,-651,-1143,-1627,-2102,-2567,-3023,-3465,-3894,-4315,-4730,-5146,-5559,-5964, -6361,-6742,-7116,-7477,-7829,-8158,-8463,-8740,-8987,-9205,-9399,-9556,-9671,-9739,-9757,-9725,-9633,-9469,-9225,-8885, -8449,-7915,-7286,-6561,-5750,-4862,-3918,-2942,-1952,-978,-37,850,1659,2376,2985,3483,3861,4119,4259,4291, 4219,4055,3812,3493,3120,2697,2240,1759,1270,774,281,-206,-672,-1111,-1519,-1889,-2215,-2491,-2705,-2855, -2922,-2907,-2803,-2604,-2308,-1909,-1409,-813,-121,656,1507,2414,3356,4314,5272,6200,7084,7903,8631,9258, 9765,10160,10440,10609,10662,10621,10488,10282,10017,9698,9336,8927,8479,8010,7515,7009,6487,5948,5397,4846, 4289,3746,3204,2666,2135,1606,1088,583,85,-408,-902,-1391,-1874,-2347,-2809,-3263,-3714,-4158,-4592,-5011, -5419,-5815,-6204,-6586,-6955,-7312,-7651,-7974,-8287,-8580,-8858,-9105,-9320,-9495,-9632,-9724,-9768,-9750,-9669,-9505, -9267,-8946,-8537,-8036,-7438,-6745,-5965,-5114,-4196,-3242,-2261,-1278,-317,593,1434,2183,2829,3360,3773,4060, 4232,4294,4255,4118,3899,3603,3248,2842,2397,1922,1421,911,403,-96,-579,-1036,-1464,-1852,-2199,-2491, -2722,-2893,-2993,-3018,-2957,-2802,-2554,-2203,-1752,-1199,-548,195,1018,1902,2829,3779,4736,5675,6566,7400, 8157,8825,9392,9848,10186,10410,10519,10526,10445,10276,10029,9717,9351,8941,8502,8038,7552,7045,6524,5999, 5468,4937,4406,3862,3318,2775,2235,1701,1171,644,124,-390,-891,-1376,-1851,-2319,-2779,-3233,-3671,-4103, -4530,-4949,-5369,-5788,-6195,-6588,-6971,-7338,-7692,-8032,-8350,-8644,-8907,-9146,-9356,-9542,-9691,-9799,-9858,-9865, -9816,-9702,-9511,-9234,-8861,-8388,-7815,-7148,-6393,-5554,-4649,-3694,-2713,-1727,-760,167,1031,1817,2506,3085, 3545,3889,4112,4223,4217,4115,3923,3658,3326,2936,2506,2043,1561,1070,573,80,-401,-867,-1304,-1704, -2066,-2382,-2645,-2843,-2971,-3021,-2983,-2857,-2637,-2319,-1901,-1382,-766,-60,732,1594,2512,3462,4423,5375, 6299,7171,7970,8677,9283,9770,10142,10404,10555,10602,10552,10417,10208,9937,9616,9245,8833,8383,7900,7402, 6887,6360,5823,5275,4725,4181,3641,3111,2582,2057,1535,1020,513,13,-483,-976,-1472,-1957,-2428,-2889, -3338,-3779,-4214,-4641,-5054,-5453,-5845,-6227,-6608,-6975,-7331,-7673,-7995,-8305,-8595,-8862,-9102,-9298,-9455,-9571, -9641,-9660,-9623,-9515,-9335,-9070,-8728,-8297,-7772,-7148,-6430,-5626,-4752,-3821,-2854,-1870,-894,53,939,1750, 2466,3074,3568,3940,4196,4338,4370,4304,4144,3901,3587,3214,2795,2338,1853,1351,841,334,-157,-630, -1074,-1488,-1864,-2196,-2475,-2692,-2843,-2926,-2930,-2846,-2668,-2389,-2009,-1531,-949,-273,494,1333,2228,3165, 4116,5066,5993,6877,7694,8431,9077,9616,10041,10348,10536,10611,10588,10474,10280,10014,9685,9304,8889,8445, 7979,7488,6985,6462,5935,5399,4860,4319,3770,3218,2671,2128,1594,1064,542,27,-479,-976,-1458,-1928, -2392,-2854,-3308,-3755,-4191,-4621,-5047,-5468,-5883,-6290,-6679,-7056,-7412,-7757,-8088,-8398,-8682,-8942,-9177,-9387, -9564,-9712,-9815,-9865,-9858,-9790,-9653,-9441,-9136,-8733,-8232,-7632,-6945,-6171,-5323,-4411,-3455,-2478,-1503,-549, 358,1200,1961,2618,3165,3591,3901,4090,4165,4132,4003,3792,3506,3163,2763,2323,1856,1369,873,376, -119,-601,-1063,-1492,-1887,-2233,-2535,-2777,-2958,-3061,-3084,-3025,-2871,-2624,-2280,-1836,-1293,-651,80,891, 1770,2696,3652,4608,5548,6450,7295,8059,8736,9301,9756,10093,10321,10444,10469,10396,10238,10011,9722,9381, 8993,8562,8097,7601,7091,6570,6043,5505,4963,4419,3879,3349,2818,2295,1772,1247,729,218,-286,-785, -1282,-1771,-2252,-2719,-3172,-3613,-4048,-4472,-4890,-5298,-5695,-6083,-6466,-6847,-7219,-7572,-7915,-8233,-8534,-8814, -9067,-9294,-9477,-9619,-9721,-9776,-9783,-9734,-9618,-9427,-9158,-8804,-8360,-7823,-7190,-6458,-5643,-4758,-3822,-2852, -1875,-906,25,895,1691,2389,2978,3457,3818,4060,4190,4214,4139,3969,3720,3402,3028,2607,2155,1678, 1186,690,198,-278,-730,-1157,-1551,-1909,-2218,-2475,-2666,-2794,-2842,-2811,-2693,-2473,-2155,-1738,-1220,-604, 104,892,1750,2653,3589,4536,5475,6386,7241,8029,8728,9328,9822,10197,10454,10594,10624,10561,10413,10195, 9912,9570,9183,8764,8313,7847,7358,6848,6325,5788,5246,4704,4156,3606,3055,2507,1968,1439,920,408, -99,-597,-1087,-1568,-2039,-2502,-2961,-3419,-3869,-4310,-4737,-5162,-5577,-5986,-6382,-6764,-7129,-7480,-7813,-8140, -8446,-8728,-8987,-9218,-9421,-9597,-9734,-9824,-9863,-9835,-9745,-9580,-9340,-9009,-8581,-8055,-7438,-6729,-5939,-5077, -4160,-3198,-2220,-1245,-296,602,1430,2170,2805,3326,3730,4011,4176,4232,4182,4040,3818,3527,3173,2775, 2334,1862,1377,881,387,-101,-576,-1027,-1447,-1823,-2152,-2431,-2650,-2803,-2882,-2881,-2792,-2616,-2341,-1971, -1497,-928,-261,495,1326,2216,3149,4099,5053,5972,6855,7673,8415,9054,9591,10013,10324,10528,10623,10625, 10530,10352,10100,9791,9429,9023,8581,8102,7605,7091,6571,6045,5508,4970,4430,3891,3358,2825,2295,1765, 1237,711,191,-318,-817,-1314,-1801,-2281,-2742,-3191,-3630,-4061,-4488,-4908,-5322,-5727,-6123,-6513,-6898,-7272, -7631,-7970,-8289,-8583,-8854,-9101,-9316,-9494,-9631,-9723,-9777,-9780,-9728,-9606,-9411,-9132,-8765,-8306,-7751,-7097, -6349,-5525,-4633,-3696,-2736,-1766,-817,95,942,1709,2381,2946,3397,3731,3950,4055,4057,3960,3779,3515, 3185,2803,2381,1928,1456,969,484,2,-462,-905,-1318,-1700,-2041,-2332,-2568,-2739,-2840,-2861,-2797,-2642, -2390,-2035,-1584,-1035,-393,338,1148,2018,2930,3866,4810,5741,6636,7467,8227,8892,9451,9901,10236,10451, 10558,10556,10469,10303,10071,9778,9432,9043,8619,8168,7695,7203,6689,6158,5619,5078,4530,3986,3441,2898, 2357,1829,1308,800,293,-207,-703,-1191,-1670,-2142,-2610,-3072,-3527,-3977,-4415,-4838,-5255,-5664,-6063,-6453, -6826,-7189,-7537,-7870,-8193,-8497,-8781,-9036,-9267,-9465,-9631,-9754,-9828,-9850,-9802,-9690,-9505,-9242,-8892,-8448, -7904,-7271,-6548,-5748,-4877,-3950,-2989,-2009,-1039,-105,780,1584,2300,2905,3396,3767,4022,4159,4190,4122, 3961,3724,3418,3057,2644,2197,1719,1229,731,237,-246,-713,-1153,-1558,-1921,-2235,-2494,-2694,-2834,-2893, -2873,-2763,-2566,-2271,-1875,-1379,-784,-99,673,1517,2412,3344,4290,5229,6134,6994,7788,8504,9124,9635, 10032,10320,10499,10574,10546,10433,10235,9967,9641,9267,8856,8407,7933,7437,6931,6417,5898,5370,4834,4298, 3758,3225,2693,2160,1630,1102,579,66,-438,-931,-1415,-1893,-2360,-2814,-3253,-3688,-4114,-4542,-4963,-5374, -5779,-6178,-6562,-6941,-7305,-7657,-7980,-8284,-8564,-8819,-9049,-9249,-9416,-9540,-9621,-9657,-9647,-9571,-9427,-9201, -8888,-8483,-7986,-7389,-6702,-5925,-5070,-4161,-3215,-2248,-1288,-352,537,1362,2098,2736,3264,3677,3972,4152, 4219,4184,4057,3844,3555,3205,2805,2373,1911,1433,943,454,-29,-495,-936,-1348,-1728,-2064,-2347,-2575, -2734,-2817,-2822,-2745,-2571,-2302,-1935,-1469,-906,-250,491,1305,2184,3096,4035,4976,5897,6779,7596,8332, 8971,9504,9927,10234,10431,10515,10502,10402,10228,9988,9686,9336,8939,8507,8045,7564,7058,6538,6000,5455, 4911,4364,3823,3281,2743,2210,1684,1168,659,153,-350,-850,-1346,-1829,-2306,-2772,-3234,-3686,-4130,-4560, -4977,-5384,-5789,-6182,-6566,-6938,-7297,-7641,-7973,-8292,-8596,-8875,-9123,-9340,-9521,-9668,-9773,-9823,-9817,-9747, -9608,-9398,-9108,-8733,-8261,-7695,-7037,-6292,-5470,-4582,-3643,-2673,-1696,-737,181,1038,1812,2489,3059,3510, 3844,4060,4169,4171,4075,3892,3633,3308,2932,2506,2048,1565,1070,574,85,-389,-848,-1278,-1668,-2017, -2318,-2561,-2746,-2864,-2907,-2866,-2738,-2513,-2195,-1775,-1254,-635,71,856,1709,2611,3542,4482,5408,6301, 7141,7915,8607,9205,9684,10056,10310,10457,10500,10448,10300,10078,9791,9447,9061,8642,8192,7715,7217,6710, 6194,5669,5139,4601,4057,3513,2971,2432,1898,1364,838,316,-192,-691,-1179,-1659,-2129,-2596,-3047,-3492, -3925,-4358,-4788,-5211,-5626,-6031,-6425,-6804,-7174,-7530,-7867,-8186,-8476,-8747,-8993,-9216,-9408,-9566,-9683,-9755, -9776,-9745,-9650,-9478,-9223,-8874,-8431,-7899,-7271,-6553,-5754,-4883,-3961,-3008,-2045,-1091,-165,709,1507,2221, 2831,3328,3707,3969,4116,4157,4093,3943,3713,3413,3054,2649,2213,1751,1273,787,300,-174,-635,-1070, -1472,-1837,-2156,-2426,-2630,-2766,-2826,-2808,-2702,-2503,-2209,-1819,-1329,-743,-67,695,1525,2414,3341,4278, 5220,6130,6997,7792,8502,9116,9623,10018,10305,10479,10547,10519,10408,10217,9969,9657,9293,8884,8443,7968, 7476,6963,6438,5899,5355,4813,4272,3734,3200,2664,2133,1607,1089,578,65,-442,-946,-1442,-1928,-2403, -2868,-3325,-3773,-4210,-4636,-5050,-5455,-5854,-6248,-6633,-7008,-7368,-7717,-8050,-8368,-8664,-8936,-9175,-9377,-9546, -9678,-9764,-9802,-9778,-9695,-9545,-9319,-9015,-8622,-8136,-7553,-6875,-6113,-5275,-4378,-3433,-2468,-1500,-557,339, 1168,1912,2559,3097,3517,3821,4014,4097,4077,3960,3761,3488,3152,2763,2335,1871,1394,903,416,-63, -526,-966,-1380,-1755,-2083,-2365,-2589,-2752,-2846,-2862,-2793,-2631,-2375,-2020,-1566,-1011,-366,365,1172,2039, 2946,3880,4816,5734,6611,7436,8186,8846,9408,9856,10185,10401,10510,10518,10433,10265,10021,9720,9365,8978, 8553,8103,7625,7130,6618,6100,5572,5035,4494,3946,3398,2856,2318,1787,1259,736,224,-277,-768,-1252, -1728,-2199,-2663,-3120,-3565,-4006,-4440,-4869,-5292,-5707,-6105,-6494,-6868,-7231,-7577,-7911,-8223,-8515,-8779,-9025, -9245,-9436,-9590,-9699,-9766,-9775,-9726,-9610,-9417,-9138,-8767,-8307,-7753,-7111,-6378,-5572,-4698,-3774,-2824,-1865, -920,-12,845,1626,2312,2894,3364,3716,3952,4071,4089,4009,3839,3599,3288,2923,2515,2072,1607,1129, 642,161,-314,-766,-1191,-1582,-1932,-2232,-2482,-2661,-2777,-2809,-2765,-2631,-2408,-2087,-1668,-1153,-541,162, 944,1792,2691,3619,4554,5479,6373,7214,7982,8663,9243,9715,10082,10340,10488,10533,10486,10349,10143,9873, 9547,9166,8744,8288,7811,7314,6799,6273,5742,5204,4665,4131,3598,3067,2534,2004,1476,956,442,-69, -578,-1080,-1572,-2053,-2521,-2975,-3426,-3865,-4296,-4718,-5130,-5537,-5934,-6330,-6718,-7095,-7453,-7799,-8128,-8439, -8727,-8987,-9218,-9408,-9565,-9685,-9764,-9792,-9763,-9671,-9512,-9275,-8958,-8551,-8050,-7448,-6756,-5978,-5131,-4231, -3285,-2325,-1373,-445,432,1239,1959,2582,3096,3495,3781,3949,4013,3974,3843,3627,3343,3000,2604,2172, 1716,1237,756,275,-190,-643,-1070,-1470,-1830,-2146,-2407,-2612,-2753,-2819,-2806,-2704,-2508,-2218,-1827,-1338, -759,-82,674,1499,2377,3288,4223,5152,6058,6916,7709,8430,9052,9571,9972,10260,10434,10503,10475,10365, 10173,9915,9600,9244,8847,8417,7962,7482,6980,6465,5937,5405,4868,4325,3776,3231,2693,2163,1638,1123, 609,104,-394,-878,-1361,-1836,-2309,-2771,-3226,-3674,-4110,-4540,-4965,-5380,-5787,-6177,-6557,-6922,-7276,-7618, -7946,-8253,-8540,-8804,-9045,-9260,-9442,-9585,-9685,-9729,-9720,-9651,-9508,-9297,-8991,-8602,-8118,-7548,-6887,-6140, -5318,-4434,-3507,-2554,-1593,-655,245,1085,1843,2509,3063,3507,3832,4041,4140,4135,4038,3853,3597,3278, 2904,2486,2037,1567,1088,602,117,-350,-795,-1210,-1588,-1922,-2210,-2436,-2603,-2696,-2709,-2646,-2492,-2245, -1902,-1457,-921,-289,432,1230,2087,2990,3913,4839,5748,6620,7437,8180,8829,9380,9827,10166,10394,10516, 10536,10461,10303,10073,9781,9436,9043,8610,8147,7663,7163,6652,6129,5598,5064,4527,3993,3458,2924,2389, 1852,1321,802,283,-227,-730,-1228,-1716,-2192,-2651,-3101,-3545,-3979,-4409,-4831,-5246,-5654,-6054,-6447,-6836, -7208,-7562,-7901,-8219,-8517,-8794,-9039,-9255,-9438,-9582,-9690,-9757,-9775,-9732,-9625,-9445,-9187,-8844,-8408,-7874, -7247,-6528,-5728,-4865,-3951,-3005,-2047,-1100,-192,667,1449,2146,2741,3223,3594,3846,3990,4028,3965,3811, 3578,3277,2922,2520,2087,1624,1149,671,198,-266,-709,-1130,-1520,-1869,-2174,-2420,-2605,-2725,-2771,-2731, -2600,-2381,-2063,-1647,-1135,-532,162,935,1775,2661,3578,4508,5434,6325,7165,7936,8628,9214,9697,10061, 10315,10456,10499,10448,10316,10111,9841,9513,9145,8739,8300,7834,7344,6834,6307,5773,5236,4691,4148,3602, 3063,2530,2001,1481,966,457,-50,-547,-1040,-1524,-2005,-2476,-2945,-3400,-3845,-4280,-4705,-5123,-5533,-5935, -6321,-6694,-7058,-7408,-7750,-8076,-8383,-8667,-8931,-9163,-9370,-9541,-9669,-9749,-9774,-9746,-9655,-9493,-9254,-8934, -8517,-8013,-7419,-6739,-5974,-5136,-4237,-3300,-2341,-1383,-452,437,1257,1993,2628,3155,3568,3865,4051,4124, 4101,3983,3787,3517,3186,2800,2378,1924,1456,974,495,20,-441,-867,-1269,-1629,-1944,-2213,-2419,-2562, -2632,-2626,-2534,-2352,-2081,-1706,-1238,-669,-11,731,1545,2415,3320,4244,5161,6060,6917,7714,8434,9064, 9589,10008,10316,10516,10607,10601,10502,10321,10069,9760,9399,8996,8558,8089,7606,7111,6597,6076,5546,5008, 4471,3929,3391,2851,2312,1773,1242,718,203,-306,-804,-1297,-1776,-2248,-2708,-3159,-3600,-4041,-4476,-4902, -5322,-5731,-6136,-6531,-6911,-7282,-7633,-7961,-8270,-8559,-8830,-9071,-9281,-9456,-9598,-9698,-9757,-9765,-9709,-9584, -9381,-9099,-8728,-8264,-7704,-7048,-6309,-5496,-4619,-3702,-2761,-1812,-879,13,847,1603,2267,2829,3278,3615, 3836,3948,3952,3862,3684,3435,3116,2752,2345,1908,1443,970,489,20,-440,-880,-1293,-1671,-2011,-2300, -2528,-2696,-2793,-2815,-2749,-2596,-2348,-2004,-1567,-1034,-408,304,1093,1944,2836,3758,4688,5599,6480,7300, 8048,8704,9264,9712,10055,10279,10400,10423,10359,10211,9998,9718,9383,9004,8590,8142,7669,7171,6654,6128, 5593,5054,4519,3979,3439,2906,2377,1856,1338,824,312,-194,-696,-1189,-1673,-2150,-2623,-3085,-3537,-3978, -4405,-4822,-5235,-5637,-6036,-6419,-6793,-7155,-7509,-7850,-8176,-8478,-8759,-9013,-9238,-9430,-9586,-9699,-9760,-9772, -9727,-9618,-9439,-9186,-8845,-8414,-7892,-7282,-6583,-5804,-4955,-4049,-3110,-2156,-1209,-296,570,1359,2064,2668, 3160,3540,3806,3962,4012,3962,3823,3607,3322,2973,2583,2150,1694,1223,745,268,-193,-644,-1063,-1447, -1794,-2098,-2348,-2535,-2661,-2707,-2680,-2562,-2354,-2051,-1649,-1152,-558,123,884,1710,2587,3498,4413,5325, 6208,7048,7823,8521,9118,9615,9998,10273,10438,10502,10461,10337,10133,9870,9545,9178,8771,8333,7868,7386, 6886,6379,5857,5323,4787,4244,3702,3163,2626,2089,1556,1032,514,7,-490,-980,-1465,-1939,-2405,-2863, -3310,-3750,-4189,-4623,-5046,-5460,-5864,-6261,-6646,-7018,-7373,-7715,-8033,-8330,-8611,-8872,-9105,-9307,-9474,-9606, -9696,-9738,-9725,-9649,-9500,-9272,-8958,-8562,-8068,-7483,-6805,-6047,-5218,-4334,-3410,-2467,-1524,-598,285,1102, 1838,2479,3015,3438,3745,3940,4024,4011,3901,3710,3445,3121,2747,2337,1894,1431,956,479,7,-444, -878,-1283,-1650,-1975,-2248,-2460,-2607,-2682,-2682,-2595,-2419,-2149,-1784,-1327,-773,-129,602,1405,2261,3160, 4079,4999,5897,6753,7546,8263,8892,9418,9841,10150,10351,10444,10448,10361,10202,9967,9671,9321,8924,8495, 8037,7553,7047,6528,5997,5464,4927,4392,3857,3318,2785,2256,1733,1210,692,178,-332,-838,-1335,-1817, -2294,-2761,-3220,-3665,-4100,-4525,-4940,-5349,-5753,-6149,-6537,-6913,-7276,-7625,-7967,-8284,-8581,-8852,-9094,-9304, -9482,-9622,-9720,-9769,-9760,-9697,-9571,-9377,-9100,-8735,-8283,-7735,-7096,-6372,-5572,-4705,-3790,-2843,-1896,-960, -64,778,1543,2215,2784,3245,3593,3830,3956,3977,3903,3741,3505,3202,2844,2440,2004,1543,1074,600, 132,-325,-760,-1172,-1544,-1879,-2164,-2399,-2570,-2677,-2703,-2650,-2506,-2272,-1938,-1511,-989,-371,332,1107, 1946,2832,3741,4658,5564,6437,7261,8016,8687,9261,9725,10074,10316,10450,10482,10418,10272,10055,9775,9443, 9070,8662,8216,7749,7258,6756,6240,5714,5176,4631,4083,3541,2999,2463,1928,1401,879,367,-135,-629, -1120,-1601,-2079,-2548,-3006,-3460,-3903,-4341,-4772,-5199,-5608,-6006,-6395,-6775,-7142,-7492,-7825,-8141,-8437,-8718, -8969,-9200,-9398,-9562,-9681,-9761,-9787,-9756,-9656,-9485,-9234,-8898,-8473,-7961,-7354,-6660,-5889,-5049,-4159,-3235, -2292,-1355,-441,424,1221,1932,2545,3050,3442,3719,3885,3947,3907,3780,3573,3297,2963,2580,2162,1716, 1254,778,304,-162,-608,-1031,-1421,-1772,-2080,-2331,-2524,-2648,-2701,-2673,-2563,-2363,-2068,-1675,-1189,-613, 60,809,1629,2501,3402,4321,5232,6118,6958,7731,8425,9024,9527,9921,10209,10385,10458,10440,10332,10149, 9901,9587,9223,8818,8378,7914,7429,6924,6404,5879,5352,4817,4286,3752,3217,2680,2150,1623,1102,582, 66,-444,-944,-1435,-1916,-2385,-2844,-3294,-3738,-4169,-4590,-5005,-5416,-5822,-6219,-6607,-6983,-7346,-7691,-8024, -8334,-8621,-8882,-9113,-9311,-9478,-9603,-9691,-9732,-9715,-9640,-9498,-9286,-8990,-8606,-8125,-7556,-6894,-6148,-5330, -4451,-3531,-2587,-1640,-721,161,979,1718,2365,2908,3340,3664,3869,3969,3969,3871,3692,3437,3120,2755, 2345,1904,1448,982,514,52,-397,-823,-1222,-1586,-1905,-2176,-2393,-2544,-2626,-2630,-2548,-2376,-2108,-1749, -1291,-742,-102,620,1415,2267,3161,4074,4991,5888,6746,7551,8282,8921,9459,9887,10204,10409,10512,10514, 10431,10265,10031,9739,9401,9019,8601,8151,7675,7179,6666,6145,5610,5071,4524,3978,3435,2898,2366,1838, 1313,796,288,-215,-712,-1200,-1689,-2166,-2638,-3097,-3546,-3992,-4427,-4856,-5274,-5681,-6073,-6458,-6830,-7195, -7544,-7876,-8190,-8486,-8761,-9015,-9240,-9430,-9581,-9687,-9751,-9759,-9709,-9591,-9396,-9130,-8774,-8330,-7800,-7181, -6476,-5690,-4841,-3948,-3020,-2078,-1148,-253,598,1372,2059,2644,3120,3480,3734,3873,3913,3857,3715,3491, 3204,2859,2472,2047,1598,1133,661,191,-266,-705,-1112,-1488,-1822,-2109,-2341,-2511,-2613,-2644,-2592,-2452, -2225,-1900,-1482,-967,-361,333,1103,1937,2813,3718,4628,5530,6397,7216,7964,8630,9201,9672,10036,10289, 10440,10481,10430,10303,10095,9823,9495,9121,8707,8260,7792,7308,6804,6288,5766,5237,4708,4174,3637,3103, 2566,2030,1504,981,465,-49,-556,-1049,-1534,-2008,-2473,-2926,-3372,-3813,-4243,-4667,-5082,-5495,-5899,-6296, -6681,-7052,-7408,-7748,-8071,-8371,-8650,-8899,-9120,-9311,-9469,-9593,-9670,-9700,-9675,-9586,-9428,-9197,-8881,-8472, -7968,-7375,-6693,-5934,-5102,-4219,-3297,-2360,-1426,-516,343,1141,1856,2477,2992,3398,3690,3872,3946,3920, 3801,3607,3336,3010,2635,2220,1780,1318,855,390,-68,-513,-934,-1324,-1678,-1987,-2242,-2441,-2572,-2631, -2610,-2502,-2305,-2016,-1631,-1149,-578,85,825,1633,2492,3388,4304,5212,6096,6935,7713,8413,9021,9522, 9915,10197,10374,10451,10430,10325,10148,9898,9598,9247,8856,8430,7971,7485,6985,6468,5941,5407,4867,4325, 3784,3245,2715,2186,1662,1145,632,123,-380,-875,-1364,-1849,-2327,-2795,-3251,-3696,-4134,-4562,-4982,-5392, -5793,-6178,-6558,-6928,-7287,-7633,-7965,-8272,-8563,-8831,-9073,-9285,-9462,-9596,-9687,-9727,-9717,-9647,-9509,-9296, -9003,-8627,-8165,-7612,-6969,-6245,-5444,-4579,-3673,-2739,-1800,-877,10,836,1588,2249,2804,3250,3585,3810, 3926,3941,3863,3703,3466,3162,2805,2409,1979,1525,1061,591,128,-323,-749,-1145,-1507,-1828,-2097,-2313, -2465,-2548,-2557,-2485,-2322,-2066,-1718,-1273,-732,-104,611,1398,2240,3123,4023,4930,5819,6672,7472,8198, 8835,9381,9820,10153,10374,10490,10505,10425,10269,10042,9752,9411,9023,8602,8153,7684,7193,6691,6172,5645, 5115,4580,4041,3503,2960,2421,1884,1357,835,321,-186,-685,-1178,-1657,-2129,-2592,-3044,-3491,-3932,-4368, -4791,-5211,-5619,-6027,-6417,-6797,-7161,-7507,-7843,-8155,-8446,-8718,-8962,-9179,-9361,-9512,-9626,-9695,-9711,-9668, -9563,-9381,-9123,-8780,-8345,-7820,-7201,-6498,-5722,-4878,-3988,-3067,-2132,-1207,-310,535,1312,2007,2601,3089, 3466,3732,3887,3935,3888,3750,3537,3259,2926,2541,2127,1684,1225,762,301,-152,-589,-1000,-1381,-1718, -2010,-2249,-2426,-2534,-2570,-2523,-2392,-2168,-1852,-1443,-940,-346,336,1092,1913,2783,3683,4589,5490,6358, 7175,7924,8594,9170,9640,10000,10254,10402,10453,10416,10292,10096,9833,9513,9147,8743,8303,7833,7339,6825, 6306,5775,5239,4702,4161,3621,3084,2552,2024,1498,976,455,-57,-563,-1064,-1561,-2045,-2521,-2987,-3442, -3885,-4318,-4745,-5165,-5574,-5973,-6362,-6744,-7117,-7475,-7825,-8153,-8463,-8747,-9009,-9241,-9444,-9607,-9731,-9806, -9835,-9806,-9725,-9571,-9342,-9034,-8636,-8151,-7579,-6913,-6170,-5352,-4478,-3563,-2629,-1696,-786,82,888,1606, 2237,2763,3180,3485,3679,3768,3761,3661,3476,3225,2905,2541,2132,1700,1247,783,320,-136,-574,-990, -1376,-1725,-2024,-2283,-2479,-2611,-2673,-2658,-2560,-2371,-2087,-1712,-1238,-673,-18,717,1519,2370,3260,4166, 5067,5952,6795,7579,8288,8904,9425,9840,10141,10338,10429,10419,10323,10147,9910,9612,9263,8875,8454,8005, 7533,7045,6541,6023,5494,4961,4423,3885,3344,2806,2270,1739,1215,703,196,-304,-798,-1286,-1765,-2235, -2694,-3149,-3595,-4039,-4471,-4897,-5311,-5716,-6113,-6500,-6872,-7227,-7567,-7893,-8200,-8490,-8752,-8993,-9201,-9378, -9519,-9624,-9680,-9680,-9616,-9485,-9283,-8997,-8628,-8166,-7615,-6977,-6254,-5464,-4612,-3717,-2791,-1864,-945,-65, 762,1514,2179,2743,3201,3543,3774,3899,3923,3849,3694,3462,3170,2824,2433,2010,1564,1104,636,177, -271,-701,-1104,-1472,-1799,-2071,-2292,-2449,-2538,-2549,-2480,-2324,-2078,-1738,-1306,-775,-157,544,1320,2151, 3029,3931,4837,5728,6580,7378,8105,8749,9298,9744,10084,10312,10442,10473,10413,10276,10059,9784,9452,9075, 8663,8212,7740,7242,6732,6213,5689,5156,4625,4087,3552,3017,2487,1958,1436,911,391,-123,-624,-1120, -1609,-2093,-2561,-3021,-3466,-3904,-4333,-4753,-5170,-5579,-5978,-6370,-6750,-7119,-7478,-7818,-8140,-8440,-8716,-8963, -9185,-9370,-9520,-9630,-9696,-9710,-9672,-9571,-9403,-9157,-8824,-8407,-7896,-7300,-6615,-5849,-5019,-4133,-3215,-2287, -1367,-474,370,1150,1842,2440,2936,3321,3594,3759,3819,3785,3660,3458,3185,2853,2475,2060,1619,1167, 704,241,-210,-642,-1049,-1429,-1767,-2062,-2303,-2488,-2605,-2648,-2611,-2488,-2276,-1969,-1568,-1075,-491,180, 932,1740,2596,3486,4387,5280,6149,6974,7734,8414,9000,9483,9859,10128,10288,10349,10311,10193,9998,9743, 9437,9080,8682,8254,7798,7320,6824,6311,5788,5256,4714,4174,3634,3099,2558,2027,1501,982,472,-31, -530,-1022,-1510,-1988,-2457,-2918,-3374,-3820,-4260,-4690,-5110,-5518,-5918,-6306,-6685,-7051,-7399,-7735,-8055,-8354, -8641,-8899,-9133,-9334,-9501,-9629,-9713,-9753,-9731,-9646,-9494,-9266,-8956,-8562,-8080,-7507,-6851,-6116,-5307,-4447, -3542,-2618,-1686,-779,88,897,1629,2267,2807,3232,3549,3754,3855,3858,3768,3596,3352,3049,2693,2297, 1871,1421,963,499,40,-398,-815,-1205,-1559,-1868,-2122,-2321,-2458,-2526,-2514,-2422,-2242,-1972,-1605,-1144, -594,48,770,1564,2408,3287,4187,5086,5960,6797,7576,8281,8897,9418,9834,10146,10348,10449,10454,10373, 10209,9976,9680,9334,8944,8518,8063,7588,7089,6579,6058,5536,5005,4470,3934,3398,2861,2327,1797,1271, 747,224,-284,-785,-1276,-1763,-2239,-2702,-3154,-3602,-4038,-4463,-4884,-5303,-5712,-6112,-6499,-6881,-7244,-7595, -7927,-8242,-8530,-8796,-9031,-9243,-9419,-9558,-9659,-9712,-9715,-9664,-9547,-9357,-9090,-8738,-8292,-7759,-7137,-6430, -5646,-4802,-3913,-2992,-2069,-1154,-278,549,1306,1980,2551,3022,3382,3630,3769,3809,3753,3613,3395,3113, 2776,2396,1979,1543,1091,638,185,-257,-678,-1074,-1439,-1762,-2039,-2262,-2423,-2515,-2531,-2461,-2312,-2065, -1732,-1302,-781,-173,522,1287,2112,2979,3868,4766,5657,6508,7313,8046,8696,9249,9696,10038,10273,10401, 10433,10376,10238,10030,9763,9443,9077,8673,8233,7767,7282,6777,6258,5729,5193,4652,4111,3574,3039,2507, 1975,1453,935,429,-80,-577,-1072,-1562,-2046,-2518,-2981,-3433,-3880,-4314,-4742,-5159,-5567,-5962,-6346,-6724, -7088,-7440,-7775,-8093,-8396,-8676,-8935,-9159,-9356,-9512,-9628,-9700,-9720,-9684,-9583,-9411,-9167,-8841,-8432,-7934, -7345,-6674,-5924,-5107,-4238,-3332,-2405,-1485,-587,264,1052,1755,2367,2874,3273,3561,3743,3821,3801,3692, 3505,3248,2934,2571,2170,1738,1287,830,372,-77,-508,-913,-1288,-1627,-1917,-2156,-2335,-2451,-2495,-2461, -2344,-2137,-1840,-1448,-961,-382,282,1026,1832,2685,3568,4462,5353,6217,7033,7794,8474,9068,9561,9949, 10226,10404,10475,10456,10348,10167,9916,9606,9246,8851,8421,7968,7490,6996,6486,5969,5444,4915,4378,3841, 3301,2763,2229,1699,1172,653,139,-368,-863,-1353,-1829,-2298,-2761,-3212,-3655,-4093,-4520,-4943,-5360,-5771, -6167,-6554,-6925,-7286,-7627,-7954,-8258,-8541,-8796,-9028,-9230,-9400,-9535,-9626,-9667,-9658,-9591,-9456,-9246,-8956, -8576,-8111,-7550,-6905,-6181,-5387,-4530,-3638,-2720,-1801,-900,-37,771,1503,2151,2696,3133,3462,3679,3792, 3804,3720,3561,3328,3029,2680,2289,1868,1428,975,521,69,-372,-789,-1179,-1534,-1848,-2109,-2316,-2456, -2530,-2522,-2437,-2258,-1994,-1638,-1188,-644,-14,697,1477,2314,3190,4082,4976,5854,6691,7473,8187,8805, 9330,9747,10062,10270,10379,10388,10316,10163,9941,9661,9333,8955,8538,8091,7618,7125,6617,6098,5569,5035, 4497,3958,3426,2895,2366,1839,1318,801,292,-216,-720,-1212,-1702,-2181,-2651,-3108,-3556,-3997,-4427,-4849, -5260,-5662,-6053,-6438,-6815,-7173,-7527,-7859,-8174,-8468,-8743,-8990,-9207,-9384,-9528,-9628,-9681,-9685,-9630,-9508, -9321,-9056,-8704,-8273,-7751,-7137,-6441,-5671,-4839,-3954,-3042,-2119,-1202,-318,513,1273,1951,2532,3007,3374, 3632,3781,3833,3785,3654,3445,3171,2838,2462,2050,1613,1160,703,246,-197,-621,-1016,-1383,-1705,-1986, -2209,-2376,-2472,-2499,-2446,-2305,-2074,-1753,-1336,-825,-226,455,1217,2034,2891,3777,4672,5553,6408,7212, 7953,8614,9180,9648,10008,10258,10406,10452,10404,10277,10075,9809,9487,9122,8720,8289,7827,7348,6853,6339, 5820,5292,4755,4221,3681,3137,2600,2063,1536,1015,497,-10,-511,-1005,-1489,-1963,-2432,-2890,-3345,-3787, -4223,-4656,-5076,-5489,-5893,-6288,-6667,-7035,-7381,-7720,-8038,-8336,-8609,-8861,-9086,-9281,-9444,-9569,-9647,-9677, -9649,-9562,-9404,-9172,-8853,-8450,-7953,-7373,-6706,-5964,-5157,-4298,-3397,-2484,-1572,-680,168,955,1666,2281, 2798,3205,3504,3691,3779,3767,3664,3483,3233,2924,2566,2168,1742,1300,846,391,-59,-493,-906,-1283, -1627,-1923,-2169,-2358,-2480,-2528,-2502,-2389,-2190,-1901,-1521,-1046,-484,170,899,1693,2538,3416,4310,5195, 6057,6876,7633,8315,8909,9402,9791,10074,10258,10340,10331,10235,10061,9823,9527,9178,8788,8359,7902,7421, 6924,6412,5891,5361,4829,4293,3759,3225,2693,2164,1638,1114,594,79,-424,-926,-1422,-1910,-2384,-2848, -3301,-3745,-4178,-4606,-5023,-5433,-5834,-6225,-6611,-6985,-7348,-7692,-8020,-8328,-8616,-8878,-9114,-9317,-9487,-9612, -9700,-9736,-9729,-9656,-9522,-9317,-9031,-8659,-8206,-7658,-7025,-6307,-5519,-4670,-3780,-2862,-1945,-1038,-172,643, 1381,2031,2584,3033,3370,3602,3726,3753,3687,3536,3307,3021,2677,2293,1878,1441,990,535,84,-348, -761,-1150,-1502,-1814,-2076,-2284,-2431,-2510,-2510,-2432,-2265,-2008,-1654,-1213,-678,-55,649,1419,2248,3116, 4003,4893,5770,6608,7395,8110,8743,9281,9716,10040,10260,10372,10391,10321,10171,9954,9674,9348,8972,8561, 8130,7664,7178,6676,6161,5633,5102,4563,4025,3482,2942,2407,1875,1354,836,324,-180,-677,-1169,-1652, -2126,-2594,-3056,-3509,-3952,-4385,-4812,-5228,-5638,-6035,-6422,-6796,-7155,-7498,-7831,-8146,-8436,-8708,-8952,-9171, -9361,-9514,-9623,-9689,-9700,-9654,-9544,-9366,-9111,-8772,-8344,-7831,-7232,-6552,-5799,-4981,-4115,-3214,-2300,-1395, -513,320,1090,1778,2373,2860,3248,3519,3687,3752,3723,3606,3414,3153,2841,2475,2077,1650,1206,757, 308,-133,-555,-953,-1318,-1640,-1918,-2141,-2307,-2401,-2429,-2372,-2234,-2005,-1688,-1279,-778,-187,490,1239, 2047,2902,3780,4667,5540,6386,7183,7916,8569,9132,9592,9951,10207,10359,10411,10376,10255,10060,9802,9486, 9126,8722,8285,7823,7337,6836,6328,5807,5280,4747,4211,3676,3144,2608,2080,1549,1024,501,-13,-518, -1017,-1511,-1991,-2462,-2923,-3373,-3813,-4249,-4673,-5096,-5507,-5907,-6302,-6684,-7057,-7419,-7759,-8083,-8383,-8663, -8918,-9146,-9339,-9498,-9617,-9693,-9726,-9701,-9622,-9471,-9248,-8946,-8554,-8074,-7511,-6855,-6123,-5321,-4464,-3568, -2658,-1743,-856,0,790,1508,2133,2661,3081,3397,3601,3703,3705,3623,3451,3213,2911,2563,2173,1757, 1318,872,423,-19,-448,-851,-1228,-1569,-1864,-2113,-2304,-2427,-2485,-2462,-2356,-2164,-1878,-1503,-1034,-477, 165,887,1673,2507,3378,4264,5151,6013,6837,7602,8295,8896,9405,9805,10101,10286,10375,10370,10280,10116, 9887,9600,9262,8879,8463,8019,7552,7059,6554,6034,5502,4970,4434,3892,3356,2819,2286,1762,1242,729, 218,-288,-786,-1275,-1759,-2236,-2703,-3163,-3613,-4054,-4487,-4907,-5322,-5723,-6117,-6499,-6869,-7224,-7570,-7895, -8204,-8496,-8762,-9002,-9211,-9389,-9530,-9626,-9676,-9671,-9605,-9474,-9274,-8996,-8638,-8187,-7655,-7039,-6338,-5571, -4739,-3864,-2961,-2048,-1148,-284,535,1275,1939,2498,2957,3306,3551,3687,3727,3674,3537,3324,3048,2719, 2347,1935,1503,1059,608,162,-274,-693,-1078,-1429,-1740,-2002,-2207,-2355,-2434,-2439,-2364,-2203,-1953,-1612, -1177,-653,-38,655,1421,2241,3098,3981,4863,5729,6561,7340,8056,8690,9226,9667,9998,10229,10356,10387, 10329,10193,9976,9704,9377,9004,8597,8155,7689,7208,6709,6199,5680,5155,4623,4088,3549,3016,2483,1951, 1423,898,383,-129,-630,-1122,-1608,-2085,-2550,-3007,-3454,-3894,-4325,-4753,-5171,-5584,-5984,-6374,-6754,-7124, -7475,-7812,-8123,-8418,-8685,-8933,-9147,-9333,-9483,-9595,-9661,-9681,-9642,-9546,-9374,-9129,-8801,-8387,-7884,-7293, -6618,-5867,-5051,-4189,-3293,-2385,-1482,-602,229,1000,1691,2289,2786,3177,3462,3638,3707,3688,3578,3391, 3134,2819,2461,2062,1639,1201,753,305,-137,-558,-958,-1324,-1656,-1941,-2173,-2348,-2456,-2490,-2447,-2319, -2103,-1797,-1400,-911,-333,326,1059,1858,2700,3571,4456,5331,6179,6985,7725,8388,8960,9435,9803,10068, 10229,10293,10264,10155,9976,9729,9431,9080,8689,8263,7810,7332,6836,6325,5801,5271,4736,4201,3667,3130, 2599,2070,1548,1029,516,7,-498,-998,-1488,-1973,-2447,-2911,-3367,-3812,-4251,-4676,-5094,-5502,-5901,-6289, -6667,-7032,-7385,-7724,-8046,-8352,-8637,-8894,-9122,-9320,-9482,-9607,-9686,-9715,-9691,-9605,-9455,-9230,-8932,-8546, -8076,-7518,-6876,-6153,-5365,-4520,-3632,-2725,-1816,-921,-70,726,1449,2080,2615,3044,3365,3584,3695,3709, 3634,3479,3251,2962,2621,2237,1824,1389,946,498,57,-372,-776,-1153,-1488,-1786,-2032,-2223,-2351,-2409, -2396,-2298,-2109,-1837,-1470,-1012,-462,172,884,1662,2492,3355,4234,5110,5967,6788,7551,8245,8858,9371, 9783,10090,10290,10393,10400,10317,10157,9930,9639,9304,8923,8513,8068,7602,7115,6616,6105,5585,5056,4523, 3984,3445,2908,2377,1844,1320,798,286,-222,-719,-1207,-1688,-2162,-2627,-3082,-3527,-3965,-4398,-4822,-5241, -5645,-6046,-6431,-6804,-7163,-7506,-7835,-8140,-8423,-8688,-8925,-9135,-9310,-9449,-9551,-9603,-9607,-9551,-9431,-9241, -8968,-8615,-8173,-7647,-7033,-6342,-5572,-4747,-3878,-2979,-2073,-1178,-312,503,1254,1922,2493,2966,3328,3583, 3735,3785,3739,3612,3410,3143,2820,2454,2056,1633,1193,750,305,-126,-541,-929,-1286,-1599,-1869,-2081, -2234,-2317,-2327,-2258,-2105,-1859,-1531,-1107,-593,7,689,1440,2249,3100,3973,4855,5720,6553,7338,8052, 8685,9226,9668,10007,10244,10378,10418,10365,10237,10038,9779,9460,9096,8694,8258,7793,7308,6805,6291,5764, 5234,4699,4166,3631,3098,2563,2036,1509,987,473,-40,-548,-1048,-1541,-2025,-2501,-2963,-3415,-3859,-4294, -4719,-5135,-5540,-5940,-6332,-6711,-7077,-7433,-7772,-8095,-8395,-8675,-8926,-9145,-9334,-9486,-9598,-9666,-9685,-9647, -9549,-9383,-9147,-8826,-8426,-7936,-7358,-6697,-5962,-5161,-4307,-3414,-2508,-1605,-728,110,884,1578,2184,2689, 3089,3381,3570,3659,3648,3552,3375,3132,2828,2476,2084,1667,1231,785,343,-93,-513,-908,-1275,-1602, -1885,-2119,-2293,-2404,-2442,-2406,-2282,-2072,-1774,-1383,-898,-327,329,1055,1844,2676,3545,4421,5295,6139, 6945,7690,8360,8945,9430,9810,10085,10257,10330,10311,10207,10028,9787,9487,9140,8757,8338,7891,7420,6930, 6427,5911,5386,4856,4319,3780,3241,2705,2173,1646,1119,605,94,-406,-903,-1388,-1871,-2342,-2807,-3264, -3712,-4147,-4579,-5002,-5420,-5825,-6217,-6597,-6963,-7318,-7656,-7978,-8280,-8558,-8819,-9051,-9252,-9420,-9551,-9643, -9681,-9669,-9594,-9455,-9239,-8946,-8568,-8107,-7558,-6928,-6216,-5442,-4605,-3733,-2833,-1930,-1044,-192,609,1335, 1977,2522,2964,3300,3525,3651,3677,3611,3467,3251,2970,2639,2267,1861,1436,997,552,113,-314,-721, -1099,-1439,-1739,-1989,-2183,-2313,-2374,-2361,-2268,-2091,-1820,-1461,-1015,-475,147,852,1619,2439,3297,4174, 5049,5901,6719,7484,8175,8783,9296,9714,10023,10236,10347,10362,10292,10144,9925,9650,9318,8940,8527,8085, 7616,7128,6627,6113,5589,5062,4533,4000,3468,2935,2404,1874,1351,827,312,-196,-700,-1199,-1687,-2165, -2631,-3087,-3536,-3975,-4402,-4827,-5239,-5645,-6043,-6432,-6807,-7174,-7523,-7856,-8170,-8464,-8730,-8972,-9180,-9356, -9497,-9598,-9654,-9660,-9608,-9495,-9312,-9055,-8717,-8290,-7782,-7180,-6498,-5747,-4931,-4066,-3175,-2267,-1376,-510, 307,1061,1727,2312,2789,3167,3430,3595,3655,3626,3507,3316,3057,2742,2381,1987,1565,1129,688,247, -181,-590,-982,-1335,-1651,-1920,-2135,-2292,-2384,-2401,-2338,-2189,-1957,-1629,-1211,-710,-113,556,1303,2100, 2944,3810,4685,5548,6381,7163,7890,8529,9080,9534,9883,10121,10264,10307,10266,10141,9943,9685,9375,9019, 8624,8199,7744,7267,6769,6259,5739,5212,4676,4140,3600,3062,2529,1999,1477,957,442,-65,-566,-1062, -1549,-2030,-2504,-2966,-3422,-3869,-4305,-4733,-5151,-5565,-5962,-6350,-6726,-7088,-7439,-7773,-8090,-8388,-8667,-8917, -9144,-9339,-9498,-9619,-9694,-9717,-9689,-9592,-9434,-9200,-8886,-8489,-8007,-7442,-6793,-6070,-5282,-4440,-3557,-2662, -1762,-884,-48,734,1441,2055,2576,2990,3300,3500,3603,3607,3526,3365,3133,2842,2505,2124,1716,1286, 849,406,-26,-447,-843,-1207,-1533,-1818,-2050,-2224,-2336,-2375,-2339,-2220,-2016,-1723,-1338,-866,-305,345, 1063,1848,2675,3535,4403,5271,6111,6912,7654,8323,8901,9388,9773,10058,10236,10321,10310,10216,10043,9808, 9513,9171,8783,8360,7911,7441,6951,6450,5937,5415,4885,4355,3823,3289,2756,2226,1693,1169,648,136, -371,-873,-1364,-1846,-2317,-2779,-3232,-3678,-4114,-4541,-4961,-5375,-5779,-6175,-6559,-6936,-7294,-7635,-7957,-8265, -8545,-8805,-9032,-9232,-9396,-9527,-9615,-9660,-9652,-9588,-9454,-9254,-8971,-8609,-8160,-7623,-7002,-6304,-5529,-4702, -3830,-2932,-2036,-1147,-296,507,1238,1887,2441,2898,3246,3492,3629,3670,3620,3487,3277,3010,2688,2321, 1923,1503,1070,632,196,-225,-627,-1004,-1348,-1649,-1904,-2098,-2238,-2305,-2299,-2210,-2039,-1777,-1428,-986, -457,154,845,1604,2413,3259,4126,4996,5849,6663,7431,8126,8739,9258,9679,9993,10205,10314,10337,10271, 10130,9919,9644,9322,8958,8552,8117,7655,7170,6664,6150,5624,5094,4559,4020,3485,2947,2416,1889,1367, 848,334,-176,-675,-1170,-1661,-2142,-2616,-3080,-3534,-3977,-4408,-4833,-5250,-5655,-6053,-6440,-6812,-7176,-7521, -7854,-8170,-8467,-8737,-8983,-9201,-9386,-9533,-9641,-9698,-9705,-9659,-9548,-9369,-9121,-8786,-8369,-7866,-7281,-6616, -5877,-5073,-4222,-3339,-2437,-1546,-676,145,905,1586,2176,2665,3056,3336,3514,3590,3572,3471,3296,3051, 2750,2398,2014,1601,1171,734,300,-129,-538,-920,-1273,-1586,-1854,-2069,-2224,-2314,-2334,-2275,-2135,-1905, -1588,-1181,-681,-96,570,1307,2101,2933,3794,4660,5518,6347,7127,7852,8494,9052,9509,9867,10122,10276, 10332,10297,10179,9991,9735,9430,9075,8685,8254,7802,7329,6840,6334,5819,5297,4766,4232,3696,3160,2628, 2094,1560,1038,520,9,-498,-991,-1480,-1961,-2433,-2892,-3345,-3787,-4227,-4656,-5077,-5491,-5893,-6289,-6672, -7040,-7396,-7728,-8046,-8345,-8621,-8874,-9096,-9290,-9450,-9569,-9650,-9679,-9660,-9577,-9424,-9200,-8900,-8511,-8035, -7478,-6833,-6115,-5331,-4494,-3622,-2730,-1835,-958,-124,659,1370,1994,2521,2946,3266,3479,3592,3608,3535, 3382,3159,2878,2547,2176,1772,1350,916,482,53,-364,-756,-1125,-1454,-1742,-1978,-2158,-2271,-2321,-2287, -2175,-1979,-1695,-1319,-857,-304,328,1039,1812,2632,3484,4352,5216,6061,6862,7606,8279,8868,9362,9754, 10044,10233,10326,10325,10246,10088,9867,9581,9250,8873,8462,8018,7553,7062,6557,6041,5520,4991,4460,3925, 3393,2862,2330,1806,1287,770,258,-251,-752,-1246,-1733,-2211,-2680,-3138,-3587,-4024,-4453,-4873,-5284,-5689, -6080,-6466,-6836,-7194,-7543,-7870,-8179,-8467,-8730,-8969,-9173,-9345,-9481,-9570,-9614,-9604,-9544,-9416,-9217,-8946, -8593,-8150,-7630,-7023,-6338,-5581,-4767,-3903,-3017,-2121,-1241,-387,411,1148,1799,2361,2821,3176,3429,3576, 3626,3585,3460,3265,3000,2686,2325,1932,1513,1082,646,212,-210,-612,-986,-1327,-1629,-1884,-2083,-2226, -2296,-2299,-2218,-2055,-1802,-1462,-1031,-512,95,774,1526,2326,3165,4023,4885,5731,6548,7312,8013,8634, 9164,9595,9922,10147,10272,10302,10241,10106,9900,9631,9312,8951,8553,8120,7664,7188,6699,6190,5672,5145, 4611,4078,3541,3005,2469,1939,1409,891,376,-130,-629,-1121,-1606,-2084,-2554,-3011,-3463,-3906,-4342,-4768, -5189,-5597,-5997,-6386,-6763,-7125,-7471,-7800,-8109,-8400,-8672,-8916,-9133,-9316,-9464,-9576,-9641,-9657,-9621,-9519, -9346,-9098,-8773,-8362,-7868,-7285,-6624,-5894,-5098,-4255,-3379,-2491,-1599,-737,85,847,1534,2130,2634,3030, 3326,3513,3599,3592,3502,3330,3094,2800,2461,2082,1678,1254,819,386,-40,-451,-837,-1191,-1509,-1779, -2000,-2160,-2255,-2280,-2228,-2093,-1874,-1565,-1171,-685,-114,542,1265,2046,2873,3725,4588,5441,6268,7051, 7770,8418,8975,9440,9802,10064,10223,10291,10268,10166,9990,9747,9452,9102,8712,8292,7839,7365,6873,6366, 5850,5324,4797,4267,3734,3200,2670,2142,1617,1094,575,60,-444,-949,-1439,-1925,-2397,-2863,-3318,-3761, -4195,-4621,-5038,-5450,-5848,-6242,-6621,-6992,-7346,-7688,-8010,-8315,-8591,-8844,-9072,-9264,-9422,-9544,-9622,-9649, -9625,-9542,-9397,-9183,-8888,-8511,-8048,-7498,-6869,-6160,-5387,-4556,-3690,-2796,-1904,-1031,-191,593,1307,1936, 2472,2907,3237,3462,3587,3618,3559,3414,3203,2931,2603,2236,1840,1422,993,561,135,-279,-669,-1035, -1361,-1647,-1887,-2072,-2191,-2243,-2220,-2115,-1927,-1649,-1282,-826,-286,339,1041,1802,2615,3455,4316,5175, 6013,6813,7565,8242,8839,9340,9745,10037,10236,10333,10340,10261,10105,9883,9604,9275,8906,8497,8061,7598, 7115,6618,6105,5582,5051,4516,3978,3443,2906,2370,1841,1316,796,285,-221,-720,-1214,-1700,-2177,-2647, -3110,-3559,-4005,-4439,-4867,-5283,-5691,-6085,-6471,-6842,-7203,-7543,-7872,-8180,-8467,-8732,-8973,-9184,-9362,-9503, -9603,-9656,-9655,-9599,-9477,-9286,-9020,-8671,-8241,-7726,-7127,-6452,-5706,-4903,-4053,-3174,-2287,-1407,-552,251, 994,1656,2228,2701,3070,3332,3496,3558,3532,3421,3236,2986,2683,2330,1950,1540,1114,683,252,-168, -566,-946,-1288,-1589,-1847,-2048,-2187,-2262,-2265,-2187,-2030,-1783,-1451,-1028,-519,77,751,1490,2283,3120, 3972,4831,5676,6488,7253,7951,8570,9106,9543,9879,10112,10249,10290,10245,10118,9923,9663,9350,8990,8592, 8158,7704,7226,6733,6225,5708,5183,4657,4125,3591,3059,2525,1994,1466,943,423,-88,-596,-1094,-1584, -2064,-2536,-2994,-3449,-3892,-4323,-4748,-5168,-5577,-5981,-6372,-6753,-7118,-7474,-7807,-8125,-8420,-8691,-8938,-9155, -9339,-9489,-9601,-9670,-9689,-9653,-9557,-9397,-9164,-8850,-8450,-7966,-7399,-6747,-6023,-5235,-4397,-3525,-2637,-1750, -889,-64,700,1390,1994,2504,2910,3216,3414,3514,3519,3438,3279,3050,2765,2430,2056,1656,1236,810, 381,-41,-449,-832,-1186,-1504,-1777,-1999,-2166,-2265,-2296,-2249,-2122,-1906,-1603,-1211,-734,-170,476,1195, 1970,2789,3640,4498,5352,6181,6967,7694,8353,8918,9392,9761,10032,10201,10271,10257,10162,9985,9753,9463, 9126,8747,8335,7888,7422,6933,6430,5917,5391,4859,4326,3788,3257,2723,2195,1669,1150,635,124,-381, -878,-1371,-1857,-2333,-2799,-3258,-3707,-4147,-4579,-4999,-5413,-5812,-6203,-6581,-6951,-7305,-7643,-7965,-8269,-8552, -8808,-9046,-9245,-9412,-9541,-9624,-9663,-9644,-9572,-9430,-9219,-8933,-8566,-8116,-7583,-6967,-6275,-5516,-4703,-3845, -2969,-2080,-1208,-371,419,1142,1778,2324,2768,3111,3351,3487,3531,3483,3356,3156,2894,2578,2225,1832, 1425,999,568,142,-269,-660,-1024,-1353,-1636,-1876,-2057,-2178,-2231,-2208,-2109,-1925,-1653,-1295,-844,-310, 310,1002,1760,2564,3402,4254,5107,5943,6737,7481,8157,8752,9256,9663,9969,10173,10278,10290,10221,10072, 9854,9579,9250,8880,8473,8036,7575,7097,6600,6092,5574,5051,4523,3988,3455,2920,2383,1853,1329,807, 290,-219,-723,-1218,-1703,-2178,-2644,-3100,-3550,-3994,-4426,-4847,-5264,-5674,-6073,-6462,-6837,-7198,-7545,-7873, -8183,-8471,-8732,-8974,-9183,-9359,-9501,-9604,-9661,-9669,-9619,-9510,-9329,-9078,-8743,-8326,-7822,-7236,-6569,-5832, -5037,-4196,-3323,-2440,-1563,-713,95,841,1511,2092,2580,2962,3242,3421,3498,3486,3389,3216,2977,2683, 2343,1968,1565,1153,725,301,-116,-514,-888,-1228,-1532,-1788,-1991,-2133,-2212,-2216,-2148,-1989,-1749,-1418, -1001,-497,91,753,1484,2273,3100,3949,4804,5646,6457,7223,7921,8547,9080,9517,9856,10090,10231,10275, 10234,10115,9925,9674,9369,9019,8629,8203,7752,7275,6783,6274,5758,5234,4703,4169,3637,3106,2576,2050, 1525,1006,493,-19,-522,-1021,-1509,-1996,-2471,-2933,-3386,-3830,-4266,-4692,-5107,-5514,-5911,-6300,-6675,-7040, -7393,-7729,-8049,-8346,-8622,-8873,-9096,-9285,-9443,-9558,-9627,-9649,-9619,-9527,-9372,-9143,-8842,-8455,-7985,-7436, -6803,-6097,-5323,-4498,-3640,-2756,-1876,-1013,-186,585,1283,1901,2422,2841,3161,3377,3494,3518,3453,3312, 3100,2827,2503,2143,1749,1338,916,492,74,-330,-710,-1060,-1374,-1648,-1870,-2032,-2131,-2166,-2121,-1999, -1788,-1492,-1110,-635,-76,560,1268,2032,2846,3682,4532,5377,6197,6977,7697,8350,8918,9394,9767,10045, 10219,10296,10283,10187,10021,9786,9495,9157,8777,8363,7924,7457,6976,6479,5967,5448,4921,4392,3854,3320, 2783,2251,1719,1197,679,167,-340,-838,-1329,-1810,-2288,-2747,-3206,-3654,-4094,-4529,-4954,-5364,-5772,-6167, -6550,-6921,-7273,-7615,-7938,-8237,-8518,-8777,-9006,-9207,-9375,-9510,-9600,-9643,-9635,-9569,-9436,-9236,-8957,-8601, -8157,-7633,-7020,-6339,-5586,-4780,-3929,-3054,-2173,-1305,-463,326,1054,1700,2257,2716,3071,3324,3477,3529, 3493,3376,3191,2939,2631,2284,1906,1500,1080,661,239,-172,-564,-929,-1258,-1550,-1792,-1978,-2102,-2159, -2145,-2051,-1875,-1612,-1262,-825,-304,303,985,1728,2524,3354,4200,5049,5881,6680,7422,8102,8697,9209, 9619,9930,10143,10258,10283,10223,10088,9883,9617,9299,8936,8535,8103,7641,7159,6664,6155,5635,5111,4578, 4048,3512,2981,2450,1927,1399,879,360,-151,-654,-1152,-1643,-2122,-2598,-3058,-3508,-3949,-4383,-4807,-5225, -5629,-6026,-6412,-6786,-7151,-7503,-7833,-8149,-8439,-8709,-8951,-9163,-9342,-9486,-9586,-9644,-9649,-9603,-9496,-9319, -9070,-8742,-8333,-7842,-7264,-6607,-5880,-5090,-4255,-3386,-2505,-1629,-778,31,779,1454,2042,2533,2925,3211, 3396,3486,3482,3395,3230,3001,2712,2379,2006,1609,1194,773,349,-63,-459,-831,-1171,-1474,-1735,-1942, -2088,-2174,-2187,-2124,-1977,-1747,-1427,-1023,-528,47,704,1424,2201,3015,3857,4704,5548,6358,7129,7832, 8466,9011,9466,9816,10067,10221,10275,10242,10129,9947,9702,9403,9057,8673,8256,7810,7339,6854,6352,5840, 5311,4783,4251,3716,3177,2645,2112,1585,1060,550,37,-465,-964,-1454,-1936,-2410,-2876,-3332,-3781,-4220, -4653,-5074,-5487,-5885,-6280,-6658,-7023,-7373,-7709,-8024,-8323,-8599,-8852,-9075,-9267,-9427,-9548,-9624,-9656,-9628, -9542,-9387,-9164,-8862,-8480,-8014,-7464,-6835,-6132,-5370,-4551,-3696,-2821,-1946,-1087,-263,508,1206,1829,2353, 2783,3099,3325,3445,3475,3416,3280,3075,2808,2492,2135,1747,1339,919,496,80,-326,-709,-1064,-1379, -1655,-1879,-2049,-2153,-2191,-2154,-2038,-1837,-1551,-1176,-716,-167,460,1158,1919,2722,3557,4410,5251,6076, 6861,7587,8245,8823,9309,9699,9985,10177,10269,10275,10198,10044,9823,9542,9214,8842,8435,7994,7531,7049, 6549,6043,5523,4998,4474,3943,3409,2880,2349,1822,1299,776,264,-246,-750,-1243,-1730,-2207,-2675,-3132, -3579,-4015,-4445,-4865,-5281,-5687,-6081,-6466,-6839,-7201,-7542,-7870,-8177,-8462,-8719,-8955,-9154,-9322,-9453,-9544, -9589,-9586,-9523,-9400,-9209,-8939,-8594,-8164,-7650,-7055,-6382,-5640,-4841,-3998,-3131,-2257,-1393,-555,232,959, 1605,2165,2627,2993,3250,3410,3473,3447,3340,3161,2913,2614,2271,1897,1494,1082,660,244,-167,-552, -917,-1248,-1538,-1779,-1971,-2103,-2166,-2157,-2070,-1898,-1645,-1299,-868,-354,244,916,1653,2438,3258,4101, 4946,5772,6570,7319,8002,8604,9118,9535,9855,10072,10195,10222,10167,10035,9833,9576,9263,8906,8515,8087, 7637,7162,6668,6163,5646,5114,4586,4050,3517,2984,2451,1922,1400,878,368,-140,-642,-1137,-1627,-2108, -2580,-3042,-3498,-3941,-4379,-4805,-5222,-5630,-6027,-6413,-6786,-7146,-7492,-7822,-8135,-8426,-8698,-8940,-9159,-9340, -9491,-9594,-9659,-9673,-9632,-9525,-9357,-9113,-8792,-8390,-7906,-7343,-6698,-5984,-5209,-4382,-3526,-2650,-1780,-931, -120,633,1315,1908,2413,2815,3116,3312,3415,3425,3349,3197,2980,2704,2383,2019,1628,1219,801,381, -28,-424,-795,-1137,-1442,-1699,-1908,-2059,-2142,-2158,-2100,-1958,-1735,-1423,-1024,-542,27,674,1388,2159, 2969,3802,4647,5480,6286,7050,7753,8388,8934,9389,9746,10007,10164,10230,10206,10105,9929,9688,9389,9047, 8662,8246,7802,7336,6846,6345,5834,5318,4793,4263,3729,3197,2665,2134,1604,1081,560,49,-460,-958, -1447,-1932,-2405,-2867,-3322,-3765,-4201,-4630,-5050,-5464,-5867,-6262,-6642,-7011,-7363,-7701,-8019,-8319,-8592,-8842, -9063,-9258,-9415,-9536,-9615,-9648,-9627,-9549,-9406,-9195,-8903,-8533,-8078,-7542,-6923,-6231,-5474,-4666,-3816,-2946, -2073,-1215,-393,383,1090,1717,2255,2696,3037,3271,3410,3453,3411,3286,3089,2836,2529,2183,1804,1405, 994,577,165,-233,-612,-962,-1281,-1555,-1782,-1952,-2062,-2100,-2067,-1951,-1757,-1477,-1106,-649,-110,509, 1199,1950,2747,3575,4415,5255,6074,6857,7588,8246,8824,9312,9699,9988,10181,10276,10282,10204,10056,9838, 9566,9244,8875,8471,8037,7578,7097,6596,6087,5565,5038,4504,3972,3436,2904,2373,1847,1323,805,289, -217,-722,-1217,-1707,-2187,-2660,-3119,-3574,-4017,-4448,-4872,-5289,-5692,-6086,-6469,-6844,-7202,-7545,-7876,-8183, -8474,-8739,-8975,-9186,-9360,-9498,-9594,-9644,-9643,-9585,-9465,-9279,-9020,-8684,-8267,-7764,-7181,-6524,-5797,-5008, -4179,-3317,-2445,-1579,-740,54,790,1448,2016,2496,2871,3148,3322,3401,3392,3300,3135,2903,2617,2288, 1923,1529,1118,703,291,-114,-498,-859,-1185,-1473,-1715,-1906,-2032,-2099,-2090,-2007,-1841,-1591,-1251,-829, -316,273,942,1670,2452,3269,4103,4943,5769,6560,7308,7991,8600,9122,9546,9875,10106,10235,10273,10227, 10101,9905,9649,9339,8984,8592,8169,7720,7250,6761,6258,5744,5223,4698,4166,3631,3095,2564,2034,1503, 983,464,-49,-549,-1047,-1533,-2015,-2486,-2949,-3405,-3846,-4283,-4710,-5131,-5542,-5947,-6336,-6713,-7078,-7427, -7761,-8073,-8366,-8635,-8881,-9095,-9284,-9435,-9546,-9617,-9635,-9604,-9511,-9352,-9122,-8812,-8416,-7944,-7388,-6755, -6050,-5282,-4463,-3614,-2748,-1882,-1033,-224,533,1217,1823,2332,2748,3058,3271,3385,3403,3339,3199,2988, 2721,2406,2051,1669,1269,855,440,33,-361,-732,-1074,-1375,-1641,-1850,-2003,-2091,-2109,-2053,-1917,-1696, -1389,-1000,-524,40,674,1384,2145,2952,3781,4623,5453,6266,7030,7735,8371,8918,9378,9740,10002,10170, 10243,10228,10133,9966,9735,9448,9112,8735,8323,7881,7416,6930,6431,5917,5395,4872,4343,3810,3281,2749, 2222,1697,1175,656,145,-364,-863,-1361,-1844,-2324,-2787,-3245,-3693,-4133,-4560,-4981,-5390,-5791,-6181,-6566, -6931,-7288,-7631,-7953,-8254,-8534,-8792,-9023,-9218,-9381,-9508,-9588,-9623,-9607,-9536,-9400,-9195,-8917,-8562,-8120, -7601,-6998,-6323,-5581,-4783,-3944,-3083,-2213,-1359,-531,245,958,1591,2139,2587,2937,3186,3339,3395,3364, 3254,3072,2825,2530,2190,1819,1424,1015,600,193,-206,-584,-930,-1248,-1521,-1749,-1919,-2032,-2077,-2049, -1940,-1751,-1477,-1116,-670,-137,476,1155,1898,2685,3505,4338,5172,5988,6766,7492,8150,8736,9226,9620, 9921,10117,10220,10233,10161,10014,9802,9533,9211,8847,8449,8017,7566,7092,6600,6095,5577,5055,4524,3991, 3455,2923,2389,1861,1338,817,302,-203,-707,-1198,-1683,-2162,-2633,-3096,-3547,-3988,-4423,-4847,-5266,-5673, -6072,-6457,-6830,-7189,-7532,-7857,-8166,-8451,-8713,-8951,-9162,-9338,-9481,-9582,-9635,-9641,-9592,-9477,-9299,-9044, -8712,-8299,-7803,-7227,-6572,-5856,-5077,-4253,-3400,-2534,-1673,-834,-39,700,1365,1946,2431,2817,3106,3290, 3381,3381,3299,3142,2921,2641,2321,1961,1576,1172,761,349,-53,-438,-801,-1129,-1419,-1664,-1859,-1994, -2063,-2062,-1982,-1823,-1582,-1255,-841,-342,238,896,1613,2388,3194,4027,4860,5683,6475,7224,7904,8517, 9039,9474,9805,10044,10184,10235,10197,10085,9901,9654,9353,9004,8617,8197,7744,7274,6788,6289,5773,5252, 4727,4198,3666,3135,2607,2078,1551,1028,510,-3,-508,-1010,-1501,-1985,-2459,-2921,-3375,-3818,-4253,-4680, -5097,-5506,-5905,-6296,-6675,-7043,-7393,-7729,-8045,-8340,-8613,-8859,-9078,-9264,-9414,-9528,-9595,-9615,-9586,-9492, -9338,-9114,-8812,-8434,-7970,-7424,-6801,-6104,-5344,-4536,-3690,-2827,-1961,-1115,-306,454,1141,1751,2269,2693, 3014,3236,3361,3393,3338,3209,3007,2749,2440,2094,1715,1321,912,499,95,-293,-664,-1002,-1309,-1569, -1782,-1939,-2032,-2055,-2006,-1878,-1664,-1369,-983,-515,37,665,1363,2115,2909,3733,4568,5396,6201,6966, 7677,8317,8875,9341,9711,9983,10156,10235,10228,10136,9978,9752,9469,9140,8768,8363,7930,7469,6990,6491, 5982,5462,4934,4402,3871,3334,2800,2271,1743,1222,704,189,-316,-817,-1310,-1795,-2271,-2740,-3201,-3651, -4096,-4526,-4950,-5364,-5768,-6160,-6542,-6908,-7264,-7602,-7924,-8228,-8509,-8764,-8997,-9197,-9366,-9494,-9585,-9624, -9614,-9543,-9411,-9213,-8937,-8584,-8148,-7633,-7038,-6372,-5637,-4847,-4016,-3160,-2299,-1444,-622,158,874,1513, 2064,2521,2881,3137,3300,3361,3340,3238,3062,2825,2539,2205,1841,1449,1047,632,228,-173,-547,-898, -1214,-1492,-1721,-1898,-2014,-2064,-2039,-1939,-1757,-1492,-1140,-704,-187,415,1091,1821,2603,3416,4247,5077, 5887,6667,7397,8058,8645,9143,9550,9859,10068,10186,10211,10154,10017,9815,9552,9238,8876,8479,8052,7600, 7123,6633,6130,5615,5093,4568,4038,3506,2972,2442,1913,1383,861,343,-170,-672,-1168,-1659,-2140,-2609, -3069,-3521,-3963,-4397,-4823,-5241,-5648,-6048,-6436,-6812,-7176,-7522,-7851,-8164,-8449,-8713,-8952,-9161,-9337,-9479, -9579,-9638,-9645,-9601,-9494,-9322,-9077,-8757,-8349,-7869,-7300,-6656,-5945,-5170,-4353,-3506,-2642,-1788,-953,-156, 580,1249,1829,2324,2719,3013,3210,3310,3320,3249,3100,2884,2616,2298,1942,1566,1168,762,355,-44, -429,-788,-1115,-1407,-1654,-1851,-1988,-2061,-2064,-1989,-1839,-1601,-1280,-872,-382,192,837,1551,2313,3116, 3941,4774,5597,6389,7140,7831,8449,8979,9419,9760,10009,10154,10210,10179,10076,9900,9663,9366,9028,8647, 8236,7789,7327,6839,6340,5828,5309,4781,4250,3716,3189,2655,2125,1601,1082,566,53,-451,-951,-1443, -1928,-2404,-2870,-3329,-3777,-4215,-4642,-5059,-5470,-5872,-6260,-6637,-7002,-7352,-7686,-8002,-8302,-8577,-8828,-9049, -9243,-9399,-9518,-9589,-9616,-9588,-9502,-9349,-9132,-8838,-8465,-8008,-7477,-6865,-6181,-5431,-4635,-3801,-2943,-2082, -1240,-429,331,1027,1641,2166,2596,2929,3161,3299,3340,3302,3180,2991,2740,2441,2103,1733,1340,937, 530,125,-263,-631,-970,-1275,-1533,-1749,-1904,-2001,-2029,-1984,-1856,-1653,-1360,-985,-525,20,642,1330, 2077,2867,3687,4515,5338,6141,6903,7611,8255,8817,9292,9673,9952,10136,10228,10228,10148,9996,9772,9496, 9171,8804,8397,7963,7509,7031,6536,6033,5517,4996,4468,3936,3402,2872,2339,1810,1283,762,248,-261, -761,-1254,-1742,-2216,-2686,-3144,-3594,-4035,-4468,-4890,-5309,-5713,-6111,-6494,-6865,-7223,-7564,-7887,-8190,-8473, -8726,-8960,-9159,-9330,-9460,-9552,-9597,-9595,-9534,-9413,-9220,-8956,-8615,-8189,-7685,-7103,-6441,-5716,-4935,-4113, -3265,-2408,-1558,-740,41,757,1405,1962,2430,2801,3070,3241,3320,3306,3215,3051,2821,2543,2218,1860, 1475,1079,671,268,-126,-502,-853,-1172,-1451,-1684,-1861,-1977,-2035,-2014,-1921,-1743,-1484,-1137,-709,-194, 396,1064,1786,2559,3367,4193,5019,5832,6611,7341,8006,8598,9098,9511,9822,10039,10161,10194,10141,10018, 9823,9568,9262,8912,8521,8098,7650,7178,6687,6182,5667,5145,4618,4086,3559,3026,2497,1969,1448,927, 414,-99,-605,-1101,-1593,-2076,-2548,-3013,-3463,-3908,-4344,-4767,-5181,-5590,-5985,-6370,-6744,-7104,-7456,-7784, -8095,-8388,-8655,-8895,-9108,-9289,-9434,-9537,-9597,-9607,-9565,-9459,-9291,-9053,-8741,-8347,-7875,-7318,-6689,-5989, -5229,-4420,-3576,-2719,-1866,-1029,-234,512,1184,1776,2277,2681,2989,3197,3310,3332,3270,3135,2931,2670, 2365,2020,1642,1249,846,441,47,-339,-698,-1023,-1315,-1564,-1759,-1899,-1974,-1983,-1914,-1770,-1538,-1224, -825,-340,227,864,1569,2327,3124,3940,4769,5584,6376,7125,7812,8432,8968,9413,9764,10017,10171,10234, 10210,10107,9932,9693,9406,9067,8692,8280,7839,7376,6897,6400,5890,5374,4847,4316,3783,3249,2714,2185, 1656,1130,612,99,-406,-906,-1398,-1882,-2359,-2823,-3280,-3728,-4167,-4601,-5024,-5437,-5841,-6231,-6612,-6976, -7332,-7665,-7982,-8277,-8554,-8802,-9026,-9220,-9379,-9503,-9583,-9616,-9598,-9519,-9378,-9171,-8884,-8518,-8076,-7551, -6948,-6276,-5537,-4749,-3921,-3076,-2219,-1379,-568,194,894,1518,2056,2497,2842,3088,3238,3291,3266,3155, 2981,2741,2453,2124,1761,1378,982,578,182,-204,-571,-910,-1212,-1477,-1689,-1848,-1945,-1974,-1931,-1812, -1610,-1324,-954,-500,34,651,1331,2072,2853,3665,4491,5312,6108,6873,7580,8222,8784,9259,9638,9923, 10111,10206,10212,10141,9993,9783,9509,9190,8824,8425,7992,7533,7056,6563,6056,5542,5020,4491,3962,3430, 2899,2370,1843,1318,800,283,-228,-734,-1234,-1722,-2200,-2675,-3132,-3584,-4026,-4458,-4881,-5296,-5700,-6095, -6481,-6855,-7213,-7558,-7886,-8194,-8478,-8742,-8975,-9178,-9348,-9482,-9579,-9628,-9626,-9571,-9453,-9273,-9019,-8693, -8279,-7790,-7217,-6571,-5860,-5086,-4272,-3429,-2579,-1729,-908,-126,598,1252,1821,2300,2681,2965,3149,3242, 3246,3168,3017,2802,2531,2215,1865,1490,1095,699,299,-88,-460,-809,-1124,-1400,-1632,-1812,-1931,-1987, -1970,-1878,-1708,-1451,-1114,-690,-182,405,1060,1778,2545,3345,4164,4986,5795,6570,7300,7970,8564,9073, 9488,9806,10029,10157,10196,10149,10027,9835,9587,9283,8938,8556,8136,7692,7226,6739,6242,5730,5211,4685, 4154,3619,3087,2555,2030,1502,981,467,-41,-544,-1042,-1531,-2015,-2487,-2953,-3404,-3852,-4289,-4720,-5139, -5549,-5945,-6339,-6708,-7072,-7419,-7750,-8061,-8353,-8619,-8864,-9080,-9266,-9415,-9525,-9594,-9611,-9575,-9479,-9320, -9086,-8782,-8396,-7930,-7389,-6767,-6077,-5328,-4529,-3697,-2847,-1998,-1166,-366,379,1058,1661,2172,2587,2905, 3123,3248,3283,3230,3107,2914,2664,2363,2026,1658,1274,874,474,79,-301,-662,-990,-1282,-1528,-1730, -1869,-1951,-1959,-1897,-1756,-1533,-1227,-836,-361,196,828,1523,2271,3059,3875,4695,5508,6297,7045,7735, 8353,8895,9342,9701,9962,10128,10201,10188,10096,9931,9706,9422,9087,8715,8307,7872,7413,6932,6436,5932, 5414,4894,4365,3838,3307,2776,2244,1718,1192,675,160,-347,-851,-1345,-1831,-2306,-2771,-3230,-3675,-4115, -4544,-4966,-5379,-5782,-6178,-6560,-6928,-7285,-7620,-7943,-8242,-8522,-8771,-8998,-9187,-9350,-9469,-9554,-9588,-9573, -9499,-9365,-9163,-8886,-8532,-8097,-7582,-6990,-6322,-5593,-4811,-3989,-3144,-2294,-1455,-645,118,820,1445,1990, 2440,2792,3046,3206,3269,3248,3148,2978,2746,2463,2135,1776,1397,1005,604,210,-178,-541,-884,-1190, -1457,-1673,-1840,-1942,-1982,-1948,-1836,-1644,-1368,-1009,-568,-40,560,1233,1962,2732,3536,4357,5172,5976, 6738,7451,8099,8668,9154,9547,9839,10033,10141,10157,10093,9952,9748,9487,9175,8816,8429,8001,7552,7078, 6587,6084,5571,5047,4520,3989,3456,2923,2395,1865,1346,823,311,-197,-700,-1196,-1686,-2168,-2638,-3102, -3554,-4000,-4436,-4859,-5277,-5681,-6076,-6460,-6832,-7187,-7531,-7855,-8164,-8450,-8711,-8948,-9157,-9329,-9470,-9564, -9616,-9615,-9560,-9446,-9264,-9011,-8683,-8274,-7788,-7223,-6582,-5877,-5115,-4305,-3468,-2617,-1774,-952,-169,558, 1213,1787,2270,2658,2949,3142,3239,3250,3178,3035,2828,2561,2254,1905,1532,1143,747,346,-40,-413, -763,-1081,-1360,-1594,-1773,-1902,-1961,-1953,-1868,-1707,-1461,-1134,-717,-223,354,1001,1715,2473,3268,4078, 4902,5707,6485,7218,7890,8492,9006,9434,9768,10003,10142,10197,10160,10051,9868,9627,9330,8989,8606,8193, 7751,7288,6804,6309,5801,5285,4757,4233,3703,3171,2638,2108,1581,1060,542,31,-476,-973,-1467,-1949, -2421,-2883,-3337,-3783,-4217,-4647,-5069,-5479,-5880,-6269,-6647,-7011,-7359,-7690,-8005,-8296,-8565,-8811,-9023,-9207, -9354,-9465,-9534,-9558,-9526,-9437,-9281,-9060,-8759,-8382,-7925,-7388,-6777,-6094,-5350,-4560,-3732,-2888,-2040,-1213, -416,328,1011,1611,2131,2553,2879,3107,3239,3283,3243,3125,2939,2698,2402,2072,1711,1328,933,538, 147,-230,-589,-917,-1212,-1463,-1665,-1809,-1895,-1910,-1852,-1716,-1500,-1200,-820,-351,193,817,1505,2247, 3027,3832,4649,5462,6248,6997,7686,8314,8855,9312,9673,9939,10109,10189,10180,10097,9940,9719,9440,9118, 8750,8345,7915,7458,6978,6481,5974,5457,4933,4403,3874,3340,2808,2279,1754,1229,710,196,-314,-816, -1311,-1803,-2280,-2753,-3214,-3667,-4105,-4535,-4958,-5373,-5775,-6169,-6549,-6917,-7274,-7612,-7934,-8237,-8519,-8774, -9002,-9201,-9366,-9493,-9576,-9614,-9602,-9533,-9403,-9207,-8938,-8588,-8167,-7661,-7082,-6430,-5712,-4936,-4125,-3286, -2443,-1603,-795,-27,678,1311,1859,2318,2683,2950,3118,3196,3188,3102,2942,2723,2446,2134,1780,1407, 1019,625,230,-151,-513,-852,-1152,-1418,-1635,-1800,-1904,-1945,-1913,-1807,-1620,-1350,-997,-558,-39,556, 1223,1943,2713,3508,4319,5130,5927,6688,7402,8052,8628,9115,9511,9815,10022,10133,10160,10101,9970,9769, 9509,9201,8848,8457,8037,7588,7123,6639,6135,5625,5105,4579,4049,3517,2985,2453,1924,1397,875,358, -152,-654,-1152,-1640,-2122,-2592,-3055,-3506,-3952,-4389,-4814,-5233,-5642,-6042,-6429,-6802,-7161,-7507,-7831,-8138, -8427,-8688,-8926,-9134,-9310,-9451,-9552,-9610,-9620,-9577,-9469,-9297,-9054,-8737,-8337,-7860,-7305,-6676,-5979,-5227, -4427,-3600,-2758,-1917,-1097,-315,414,1075,1657,2149,2548,2852,3057,3166,3189,3129,2997,2798,2544,2245, 1908,1543,1160,769,377,-10,-380,-726,-1043,-1322,-1559,-1743,-1868,-1931,-1925,-1842,-1684,-1443,-1123,-714, -225,344,984,1686,2439,3229,4038,4853,5658,6436,7164,7839,8440,8962,9389,9724,9965,10112,10169,10145, 10043,9871,9635,9345,9011,8636,8225,7788,7325,6843,6345,5838,5320,4798,4272,3741,3212,2682,2156,1627, 1108,590,77,-430,-930,-1426,-1910,-2389,-2854,-3310,-3756,-4196,-4619,-5040,-5450,-5851,-6239,-6619,-6982,-7333, -7668,-7984,-8281,-8554,-8803,-9024,-9209,-9365,-9481,-9551,-9575,-9551,-9464,-9317,-9102,-8815,-8449,-8006,-7483,-6885, -6214,-5485,-4702,-3882,-3047,-2203,-1374,-578,169,855,1464,1990,2422,2761,3000,3150,3201,3174,3067,2894, 2658,2379,2050,1695,1318,931,538,150,-226,-580,-907,-1198,-1451,-1652,-1803,-1889,-1909,-1856,-1727,-1513, -1219,-846,-387,154,770,1448,2184,2956,3757,4568,5372,6160,6907,7598,8230,8776,9241,9610,9881,10060, 10150,10147,10070,9919,9705,9429,9110,8749,8351,7925,7474,7002,6511,6011,5493,4974,4446,3916,3385,2851, 2322,1795,1269,752,238,-267,-768,-1264,-1749,-2227,-2698,-3156,-3608,-4050,-4482,-4908,-5322,-5727,-6122,-6503, -6873,-7226,-7566,-7882,-8185,-8461,-8721,-8952,-9154,-9320,-9452,-9540,-9584,-9575,-9515,-9391,-9200,-8935,-8598,-8181, -7684,-7111,-6466,-5758,-4995,-4190,-3359,-2517,-1683,-875,-106,603,1242,1801,2272,2641,2918,3100,3189,3190, 3112,2963,2752,2485,2179,1834,1470,1082,691,298,-79,-444,-783,-1090,-1354,-1577,-1744,-1854,-1893,-1873, -1769,-1588,-1326,-981,-551,-46,543,1198,1913,2675,3466,4276,5083,5874,6635,7349,7998,8576,9068,9473, 9779,9994,10112,10147,10098,9978,9786,9536,9232,8884,8498,8079,7634,7165,6679,6182,5671,5154,4633,4107, 3574,3048,2518,1991,1463,944,423,-87,-596,-1091,-1584,-2064,-2539,-3000,-3455,-3895,-4329,-4756,-5171,-5579, -5977,-6364,-6739,-7099,-7445,-7777,-8084,-8371,-8638,-8877,-9085,-9260,-9401,-9504,-9562,-9572,-9531,-9432,-9266,-9031, -8717,-8336,-7867,-7320,-6702,-6014,-5268,-4476,-3650,-2810,-1973,-1151,-367,366,1030,1617,2123,2532,2843,3061, 3181,3218,3170,3048,2858,2614,2318,1990,1630,1255,867,477,95,-272,-622,-936,-1214,-1449,-1639,-1769, -1836,-1833,-1761,-1606,-1373,-1057,-658,-176,382,1015,1708,2451,3232,4036,4847,5646,6417,7152,7825,8429, 8956,9392,9732,9976,10130,10194,10170,10071,9904,9673,9389,9056,8688,8281,7846,7386,6911,6417,5911,5392, 4869,4337,3806,3273,2746,2215,1691,1167,649,134,-369,-871,-1365,-1854,-2331,-2800,-3260,-3710,-4152,-4584, -5004,-5416,-5817,-6207,-6587,-6952,-7303,-7635,-7953,-8246,-8524,-8774,-8999,-9189,-9348,-9466,-9545,-9572,-9551,-9468, -9330,-9117,-8836,-8475,-8039,-7521,-6932,-6271,-5548,-4775,-3964,-3128,-2294,-1464,-668,87,777,1394,1926,2372, 2720,2969,3127,3195,3177,3081,2918,2696,2420,2104,1757,1384,1002,609,226,-148,-501,-830,-1123,-1376, -1577,-1729,-1819,-1842,-1790,-1670,-1463,-1180,-809,-359,171,777,1450,2175,2943,3737,4546,5348,6131,6876, 7571,8199,8752,9222,9599,9882,10068,10164,10177,10106,9962,9754,9489,9173,8814,8418,7994,7544,7069,6585, 6083,5571,5051,4528,3997,3468,2936,2406,1876,1354,829,312,-201,-702,-1201,-1691,-2171,-2639,-3104,-3557, -3998,-4429,-4857,-5274,-5681,-6076,-6461,-6833,-7193,-7533,-7858,-8162,-8444,-8702,-8932,-9135,-9304,-9438,-9529,-9578, -9573,-9518,-9403,-9222,-8966,-8639,-8228,-7745,-7177,-6542,-5838,-5082,-4282,-3458,-2617,-1791,-981,-213,502,1142, 1706,2183,2565,2849,3041,3141,3154,3083,2945,2740,2486,2180,1843,1481,1102,717,329,-50,-410,-745, -1053,-1319,-1548,-1715,-1830,-1880,-1856,-1758,-1584,-1327,-990,-568,-67,513,1159,1866,2616,3405,4207,5016, 5805,6570,7283,7941,8520,9021,9432,9747,9967,10096,10139,10098,9981,9798,9556,9261,8922,8541,8131,7690, 7228,6743,6247,5737,5221,4694,4168,3638,3108,2579,2053,1528,1009,488,-21,-527,-1026,-1519,-2002,-2478, -2942,-3401,-3846,-4283,-4709,-5131,-5538,-5935,-6320,-6697,-7058,-7404,-7734,-8047,-8336,-8606,-8849,-9062,-9243,-9389, -9496,-9559,-9574,-9535,-9438,-9277,-9050,-8748,-8368,-7909,-7377,-6769,-6091,-5354,-4571,-3758,-2924,-2090,-1275,-487, 245,912,1506,2014,2428,2752,2974,3108,3151,3112,2999,2817,2580,2296,1971,1617,1243,857,471,91, -279,-623,-940,-1221,-1461,-1649,-1782,-1852,-1857,-1791,-1642,-1419,-1108,-718,-244,306,931,1616,2353,3123, 3923,4726,5523,6294,7027,7701,8310,8839,9283,9634,9893,10053,10124,10111,10023,9860,9637,9358,9032,8662, 8262,7832,7378,6903,6410,5908,5397,4877,4349,3819,3289,2757,2225,1699,1174,657,139,-369,-870,-1361, -1848,-2323,-2792,-3250,-3701,-4142,-4573,-4996,-5410,-5812,-6203,-6586,-6953,-7306,-7643,-7958,-8258,-8531,-8781,-9002, -9196,-9357,-9478,-9556,-9594,-9575,-9503,-9370,-9168,-8895,-8542,-8113,-7607,-7027,-6372,-5660,-4892,-4091,-3263,-2431, -1608,-813,-60,633,1258,1796,2249,2604,2869,3033,3113,3105,3020,2862,2648,2381,2073,1731,1366,986, 602,219,-154,-506,-833,-1128,-1383,-1587,-1741,-1833,-1863,-1820,-1702,-1505,-1224,-861,-421,102,699,1360, 2078,2840,3626,4431,5229,6011,6755,7450,8081,8639,9108,9492,9779,9973,10076,10092,10031,9897,9697,9440, 9132,8780,8391,7970,7521,7052,6565,6064,5553,5036,4510,3979,3453,2921,2393,1868,1344,824,307,-203, -706,-1205,-1695,-2180,-2649,-3115,-3566,-4008,-4442,-4865,-5279,-5687,-6081,-6466,-6835,-7196,-7535,-7864,-8166,-8454, -8712,-8943,-9149,-9318,-9453,-9547,-9598,-9599,-9547,-9432,-9254,-9006,-8687,-8288,-7809,-7257,-6630,-5938,-5190,-4400, -3578,-2745,-1916,-1107,-336,380,1028,1603,2085,2480,2775,2979,3088,3116,3057,2932,2739,2489,2194,1866, 1508,1135,751,368,-7,-364,-700,-1004,-1275,-1498,-1672,-1787,-1838,-1824,-1737,-1566,-1318,-987,-574,-80, 490,1129,1828,2575,3353,4149,4954,5742,6504,7217,7877,8462,8970,9385,9714,9943,10081,10129,10096,9983, 9810,9567,9277,8939,8566,8158,7722,7261,6786,6291,5786,5270,4746,4221,3689,3157,2628,2098,1571,1053, 535,24,-480,-980,-1469,-1955,-2429,-2893,-3352,-3799,-4237,-4666,-5087,-5498,-5899,-6285,-6663,-7026,-7372,-7703, -8016,-8305,-8577,-8817,-9034,-9216,-9367,-9477,-9548,-9569,-9540,-9448,-9297,-9076,-8782,-8412,-7963,-7436,-6839,-6171, -5441,-4666,-3855,-3029,-2196,-1378,-591,146,823,1425,1946,2373,2704,2944,3088,3143,3120,3017,2849,2617, 2342,2024,1679,1308,929,543,165,-202,-548,-867,-1148,-1392,-1585,-1722,-1798,-1808,-1747,-1607,-1388,-1091, -708,-246,296,907,1588,2313,3085,3877,4681,5475,6249,6982,7660,8273,8809,9259,9617,9883,10053,10137, 10132,10049,9897,9683,9409,9090,8727,8331,7900,7448,6972,6483,5980,5470,4949,4424,3894,3366,2834,2307, 1778,1256,736,221,-288,-790,-1286,-1773,-2257,-2725,-3183,-3635,-4073,-4505,-4929,-5342,-5746,-6139,-6520,-6888, -7244,-7585,-7905,-8207,-8484,-8736,-8962,-9160,-9323,-9448,-9529,-9569,-9553,-9492,-9359,-9167,-8901,-8562,-8145,-7645, -7072,-6431,-5722,-4959,-4159,-3335,-2501,-1672,-872,-112,586,1218,1768,2230,2600,2874,3051,3140,3142,3067, 2921,2711,2450,2146,1809,1444,1065,686,301,-67,-424,-754,-1051,-1309,-1523,-1680,-1783,-1819,-1786,-1678, -1488,-1220,-872,-439,75,661,1316,2024,2781,3566,4367,5167,5951,6703,7409,8049,8619,9103,9497,9796, 10007,10119,10146,10092,9967,9772,9522,9220,8872,8491,8075,7629,7165,6682,6186,5673,5158,4631,4103,3572, 3039,2509,1984,1455,938,421,-85,-591,-1090,-1579,-2062,-2538,-3000,-3456,-3900,-4335,-4765,-5180,-5589,-5987, -6373,-6745,-7104,-7447,-7775,-8082,-8368,-8632,-8871,-9075,-9254,-9395,-9496,-9552,-9561,-9512,-9411,-9237,-9000,-8685, -8297,-7828,-7284,-6664,-5982,-5240,-4455,-3635,-2805,-1976,-1165,-387,335,995,1577,2074,2476,2784,2998,3121, 3152,3105,2986,2799,2555,2268,1945,1588,1217,832,448,71,-290,-632,-940,-1215,-1443,-1625,-1745,-1807, -1799,-1719,-1561,-1324,-1003,-603,-116,440,1071,1764,2504,3281,4082,4883,5674,6439,7162,7828,8423,8940, 9370,9705,9948,10097,10157,10138,10034,9865,9633,9349,9015,8645,8238,7805,7344,6869,6375,5872,5356,4837, 4309,3781,3247,2716,2190,1664,1139,622,105,-397,-900,-1394,-1881,-2357,-2824,-3280,-3728,-4165,-4599,-5019, -5431,-5832,-6225,-6603,-6969,-7321,-7654,-7971,-8266,-8536,-8783,-9005,-9190,-9347,-9461,-9537,-9565,-9543,-9460,-9320, -9108,-8824,-8466,-8027,-7511,-6921,-6262,-5541,-4769,-3962,-3131,-2302,-1481,-692,54,735,1349,1877,2318,2662, 2911,3067,3133,3114,3021,2859,2637,2365,2048,1706,1339,957,575,194,-174,-521,-846,-1133,-1381,-1580, -1727,-1811,-1831,-1778,-1651,-1442,-1154,-779,-330,202,806,1477,2199,2962,3753,4558,5353,6131,6871,7561, 8182,8729,9189,9561,9838,10019,10113,10118,10046,9902,9694,9429,9116,8758,8365,7939,7493,7021,6534,6032, 5519,5000,4477,3945,3419,2887,2359,1830,1311,789,275,-233,-735,-1230,-1720,-2201,-2669,-3134,-3583,-4026, -4459,-4885,-5301,-5703,-6098,-6479,-6849,-7205,-7545,-7866,-8171,-8449,-8708,-8941,-9139,-9307,-9439,-9527,-9572,-9567, -9508,-9387,-9202,-8943,-8615,-8202,-7719,-7157,-6521,-5821,-5068,-4269,-3451,-2613,-1789,-983,-220,491,1128,1694, 2168,2548,2834,3023,3122,3135,3071,2933,2731,2478,2178,1843,1483,1109,724,341,-29,-391,-721,-1026, -1287,-1503,-1673,-1781,-1824,-1800,-1700,-1524,-1265,-926,-501,-3,578,1223,1930,2678,3461,4259,5061,5845, 6601,7311,7962,8537,9032,9439,9750,9968,10095,10133,10089,9971,9786,9540,9242,8898,8518,8106,7664,7201, 6721,6223,5717,5201,4677,4151,3619,3090,2557,2029,1504,983,464,-45,-550,-1048,-1539,-2022,-2496,-2961, -3416,-3860,-4297,-4724,-5144,-5554,-5953,-6340,-6716,-7075,-7421,-7751,-8061,-8350,-8617,-8855,-9067,-9247,-9392,-9499, -9560,-9577,-9536,-9441,-9280,-9052,-8746,-8367,-7907,-7374,-6764,-6087,-5351,-4571,-3755,-2924,-2092,-1278,-495,234, 904,1496,2006,2420,2742,2967,3102,3148,3113,2996,2820,2585,2302,1980,1630,1258,878,493,114,-248, -592,-907,-1187,-1421,-1607,-1740,-1809,-1807,-1739,-1588,-1363,-1052,-660,-187,361,984,1667,2403,3174,3970, 4771,5565,6333,7063,7734,8340,8865,9303,9650,9905,10063,10134,10120,10029,9869,9644,9364,9040,8670,8268, 7836,7382,6905,6412,5907,5393,4872,4344,3816,3284,2756,2225,1699,1174,654,142,-365,-868,-1364,-1852, -2330,-2799,-3256,-3709,-4148,-4579,-5001,-5415,-5818,-6212,-6590,-6958,-7310,-7649,-7965,-8265,-8541,-8792,-9014,-9206, -9366,-9487,-9566,-9598,-9581,-9507,-9373,-9168,-8896,-8546,-8117,-7611,-7031,-6379,-5665,-4900,-4096,-3268,-2436,-1609, -815,-64,628,1252,1790,2242,2599,2863,3028,3107,3099,3018,2861,2645,2380,2073,1731,1367,989,603, 223,-145,-499,-824,-1118,-1369,-1577,-1727,-1819,-1848,-1804,-1685,-1487,-1209,-847,-404,119,713,1377,2094, 2854,3642,4444,5243,6024,6768,7465,8095,8656,9126,9510,9796,9993,10096,10115,10052,9916,9714,9456,9146, 8797,8405,7986,7540,7072,6586,6088,5575,5056,4532,4004,3474,2943,2413,1886,1363,841,325,-184,-687, -1182,-1675,-2156,-2628,-3092,-3541,-3986,-4421,-4847,-5262,-5670,-6065,-6449,-6821,-7180,-7521,-7848,-8150,-8435,-8695, -8929,-9133,-9307,-9442,-9538,-9587,-9591,-9540,-9426,-9248,-9002,-8680,-8280,-7804,-7251,-6624,-5932,-5185,-4394,-3573, -2740,-1910,-1101,-331,386,1038,1609,2094,2488,2785,2989,3099,3123,3066,2939,2745,2499,2205,1877,1518, 1144,761,379,4,-355,-692,-998,-1267,-1490,-1663,-1777,-1829,-1812,-1721,-1555,-1305,-975,-564,-70,500, 1140,1838,2587,3365,4164,4967,5755,6515,7232,7889,8477,8982,9398,9722,9953,10091,10140,10105,9998,9820, 9579,9291,8954,8580,8167,7731,7269,6789,6296,5789,5274,4752,4224,3697,3167,2635,2108,1581,1059,543, 32,-475,-974,-1468,-1952,-2429,-2893,-3349,-3795,-4235,-4663,-5082,-5493,-5893,-6282,-6660,-7021,-7371,-7701,-8014, -8305,-8576,-8819,-9034,-9219,-9368,-9478,-9548,-9569,-9539,-9449,-9299,-9079,-8786,-8416,-7971,-7446,-6845,-6179,-5453, -4676,-3864,-3038,-2201,-1385,-597,138,818,1419,1940,2368,2702,2940,3085,3140,3115,3012,2843,2613,2338, 2021,1673,1304,924,539,164,-203,-548,-867,-1150,-1392,-1583,-1721,-1797,-1808,-1744,-1605,-1387,-1086,-705, -242,299,912,1590,2320,3088,3880,4682,5477,6249,6985,7663,8276,8813,9262,9619,9883,10052,10132,10127, 10049,9893,9679,9403,9083,8720,8324,7894,7441,6968,6478,5975,5462,4941,4417,3886,3356,2826,2298,1771, 1247,729,214,-294,-795,-1294,-1779,-2259,-2731,-3188,-3641,-4082,-4513,-4937,-5350,-5754,-6146,-6529,-6897,-7250, -7590,-7909,-8210,-8488,-8744,-8971,-9167,-9329,-9456,-9543,-9581,-9570,-9505,-9377,-9184,-8920,-8582,-8162,-7670,-7096, -6456,-5751,-4990,-4191,-3368,-2536,-1707,-908,-149,552,1186,1739,2203,2572,2848,3029,3120,3122,3049,2904, 2698,2437,2136,1798,1438,1058,677,295,-74,-430,-757,-1054,-1310,-1523,-1682,-1782,-1817,-1781,-1672,-1484, -1213,-864,-431,82,671,1323,2035,2790,3574,4375,5174,5957,6707,7408,8049,8615,9097,9492,9789,9994, 10109,10136,10083,9957,9760,9508,9203,8856,8472,8055,7611,7145,6660,6166,5655,5139,4614,4087,3555,3025, 2494,1968,1442,920,406,-102,-607,-1105,-1595,-2077,-2550,-3015,-3467,-3912,-4349,-4776,-5194,-5602,-5997,-6386, -6757,-7118,-7461,-7789,-8096,-8383,-8644,-8883,-9091,-9267,-9408,-9508,-9567,-9574,-9528,-9426,-9257,-9019,-8705,-8317, -7848,-7305,-6686,-6002,-5261,-4475,-3657,-2827,-1994,-1183,-404,319,979,1562,2059,2464,2775,2990,3113,3149, 3100,2981,2796,2555,2266,1942,1587,1218,833,449,72,-287,-628,-938,-1214,-1441,-1624,-1744,-1807,-1797, -1718,-1557,-1320,-1001,-599,-118,443,1074,1764,2504,3279,4078,4878,5670,6434,7157,7822,8417,8934,9360, 9696,9939,10088,10148,10126,10026,9857,9627,9343,9010,8638,8232,7799,7341,6863,6370,5866,5349,4829,4301, 3774,3243,2714,2183,1659,1135,618,104,-399,-904,-1397,-1883,-2358,-2825,-3283,-3732,-4169,-4600,-5021,-5433, -5833,-6226,-6604,-6968,-7320,-7653,-7971,-8265,-8539,-8785,-9005,-9192,-9348,-9461,-9537,-9563,-9539,-9457,-9314,-9103, -8821,-8461,-8024,-7507,-6919,-6256,-5537,-4765,-3958,-3129,-2298,-1476,-685,59,743,1355,1885,2324,2668,2919, 3076,3140,3123,3028,2865,2643,2371,2056,1712,1344,966,579,200,-168,-515,-840,-1128,-1377,-1575,-1722, -1806,-1827,-1774,-1647,-1440,-1150,-779,-330,202,805,1475,2197,2959,3749,4553,5348,6127,6864,7555,8178, 8724,9187,9560,9835,10017,10111,10118,10046,9900,9693,9426,9113,8753,8363,7938,7488,7016,6530,6028,5518, 4997,4471,3943,3412,2880,2352,1823,1302,780,266,-241,-745,-1241,-1729,-2211,-2680,-3143,-3593,-4039,-4473, -4897,-5313,-5718,-6111,-6494,-6865,-7220,-7559,-7881,-8186,-8465,-8723,-8953,-9155,-9321,-9454,-9542,-9588,-9582,-9521, -9400,-9217,-8958,-8626,-8216,-7728,-7164,-6527,-5827,-5075,-4279,-3456,-2620,-1795,-990,-225,484,1124,1685,2159, 2542,2825,3017,3114,3129,3061,2922,2724,2467,2169,1834,1474,1099,714,331,-41,-399,-731,-1034,-1299, -1517,-1680,-1791,-1835,-1809,-1710,-1534,-1276,-936,-512,-12,565,1212,1920,2669,3452,4248,5053,5839,6595, 7306,7958,8536,9030,9437,9751,9971,10098,10140,10096,9980,9795,9551,9254,8912,8531,8118,7678,7215,6732, 6237,5731,5215,4689,4164,3636,3105,2574,2046,1520,999,482,-27,-534,-1031,-1525,-2007,-2480,-2943,-3399, -3845,-4278,-4707,-5128,-5535,-5934,-6321,-6698,-7058,-7405,-7731,-8045,-8332,-8597,-8838,-9049,-9229,-9372,-9475,-9540, -9555,-9515,-9419,-9258,-9031,-8727,-8346,-7887,-7353,-6744,-6067,-5331,-4550,-3735,-2904,-2071,-1259,-476,252,921, 1511,2020,2434,2755,2979,3111,3156,3119,3005,2827,2591,2307,1985,1634,1263,881,497,118,-244,-589, -902,-1182,-1418,-1605,-1735,-1807,-1807,-1736,-1587,-1359,-1049,-660,-186,361,986,1670,2406,3177,3971,4773, 5568,6336,7066,7737,8345,8869,9310,9655,9909,10067,10139,10124,10035,9872,9649,9369,9045,8677,8274,7844, 7389,6912,6419,5915,5400,4878,4350,3822,3291,2759,2229,1705,1181,661,147,-359,-861,-1354,-1845,-2322, -2792,-3251,-3703,-4141,-4573,-4994,-5409,-5810,-6202,-6582,-6948,-7302,-7637,-7956,-8254,-8530,-8781,-9004,-9198,-9357, -9479,-9557,-9591,-9573,-9498,-9362,-9162,-8887,-8536,-8109,-7605,-7025,-6374,-5661,-4895,-4093,-3267,-2434,-1610,-816, -61,630,1251,1790,2242,2599,2862,3028,3107,3101,3018,2862,2649,2380,2075,1731,1369,991,607,223, -144,-495,-822,-1111,-1363,-1568,-1719,-1812,-1840,-1795,-1677,-1479,-1199,-839,-394,127,723,1387,2103,2864, 3650,4451,5248,6029,6773,7469,8102,8660,9131,9513,9803,9999,10101,10119,10057,9922,9719,9459,9150,8797, 8407,7987,7540,7074,6590,6089,5579,5060,4536,4007,3477,2946,2415,1888,1364,842,326,-183,-685,-1183, -1671,-2154,-2623,-3085,-3537,-3981,-4417,-4842,-5260,-5667,-6063,-6449,-6820,-7178,-7521,-7844,-8148,-8434,-8692,-8926, -9129,-9301,-9438,-9533,-9584,-9588,-9538,-9425,-9248,-9001,-8680,-8279,-7801,-7248,-6621,-5928,-5181,-4390,-3571,-2740, -1909,-1102,-330,385,1036,1608,2092,2485,2784,2987,3095,3120,3062,2935,2741,2494,2200,1871,1514,1141, 757,376,0,-360,-695,-1000,-1269,-1494,-1666,-1781,-1833,-1817,-1725,-1556,-1308,-979,-566,-74,496,1135, 1834,2581,3361,4160,4963,5754,6516,7230,7889,8475,8983,9398,9721,9951,10089,10139,10107,10000,9825,9585, 9295,8960,8585,8173,7738,7277,6797,6300,5795,5278,4756,4230,3699,3171,2641,2113,1587,1066,549,38, -467,-968,-1462,-1946,-2424,-2889,-3345,-3791,-4231,-4655,-5075,-5485,-5885,-6272,-6650,-7013,-7362,-7694,-8006,-8299, -8570,-8815,-9032,-9214,-9366,-9478,-9545,-9564,-9535,-9444,-9292,-9073,-8781,-8413,-7968,-7442,-6847,-6178,-5454,-4677, -3865,-3038,-2205,-1386,-601,136,812,1415,1932,2360,2694,2931,3079,3132,3107,3003,2834,2604,2330,2009, 1662,1292,913,528,149,-216,-561,-878,-1160,-1402,-1594,-1735,-1809,-1820,-1758,-1620,-1398,-1099,-719,-256, 286,902,1578,2309,3077,3868,4670,5464,6238,6972,7650,8268,8802,9254,9611,9874,10046,10128,10121,10039, 9886,9670,9394,9074,8712,8314,7887,7437,6966,6476,5975,5459,4940,4414,3884,3355,2821,2293,1766,1241, 723,209,-296,-797,-1293,-1779,-2258,-2728,-3185,-3637,-4079,-4511,-4935,-5348,-5754,-6148,-6528,-6896,-7248,-7588, -7903,-8204,-8479,-8736,-8963,-9162,-9325,-9452,-9536,-9577,-9564,-9500,-9372,-9179,-8911,-8572,-8153,-7657,-7085,-6443, -5737,-4980,-4179,-3356,-2522,-1697,-897,-138,561,1192,1745,2211,2577,2851,3033,3121,3124,3049,2903,2696, 2435,2132,1794,1436,1055,673,288,-80,-437,-767,-1066,-1321,-1536,-1693,-1794,-1826,-1796,-1685,-1497,-1229, -879,-444,63,652,1306,2017,2774,3560,4362,5159,5941,6693,7395,8033,8601,9082,9477,9775,9983,10096, 10126,10072,9948,9755,9504,9199,8851,8465,8048,7603,7136,6651,6155,5644,5128,4606,4081,3548,3022,2492, 1966,1439,919,399,-107,-616,-1111,-1605,-2085,-2560,-3022,-3476,-3917,-4351,-4778,-5193,-5601,-5998,-6383,-6757, -7116,-7461,-7790,-8096,-8382,-8646,-8884,-9090,-9263,-9402,-9502,-9558,-9565,-9520,-9418,-9249,-9011,-8696,-8312,-7843, -7297,-6680,-5995,-5254,-4467,-3647,-2815,-1984,-1170,-393,330,989,1571,2071,2477,2785,3001,3121,3158,3112, 2993,2806,2566,2275,1950,1596,1227,844,461,84,-275,-618,-925,-1196,-1426,-1608,-1731,-1791,-1782,-1703, -1542,-1305,-984,-582,-98,460,1093,1783,2524,3300,4098,4902,5693,6456,7181,7845,8440,8958,9386,9720, 9958,10108,10168,10142,10039,9871,9639,9355,9021,8653,8246,7811,7353,6878,6384,5879,5361,4840,4309,3779, 3247,2720,2190,1665,1141,623,109,-393,-895,-1389,-1877,-2353,-2822,-3281,-3731,-4172,-4603,-5023,-5435,-5835, -6225,-6604,-6969,-7318,-7649,-7966,-8259,-8533,-8782,-9005,-9192,-9348,-9464,-9540,-9565,-9542,-9457,-9317,-9102,-8819, -8457,-8021,-7502,-6914,-6255,-5534,-4765,-3958,-3126,-2298,-1474,-684,64,748,1360,1888,2331,2677,2925,3082, 3150,3133,3039,2878,2658,2385,2073,1729,1361,983,595,217,-150,-498,-822,-1110,-1357,-1554,-1700,-1785, -1803,-1746,-1622,-1411,-1123,-751,-300,232,837,1509,2232,2996,3786,4589,5386,6162,6901,7590,8211,8757, 9221,9592,9869,10052,10144,10154,10081,9936,9727,9461,9146,8787,8392,7969,7519,7045,6561,6059,5547,5028, 4505,3975,3446,2914,2385,1855,1333,810,293,-217,-718,-1218,-1707,-2187,-2655,-3120,-3573,-4013,-4444,-4872, -5288,-5694,-6088,-6473,-6844,-7202,-7542,-7865,-8169,-8450,-8706,-8935,-9137,-9304,-9436,-9525,-9572,-9566,-9508,-9391, -9208,-8951,-8622,-8210,-7727,-7160,-6526,-5824,-5071,-4273,-3452,-2616,-1793,-987,-223,486,1122,1684,2158,2539, 2821,3012,3113,3126,3057,2920,2717,2465,2162,1827,1469,1092,711,326,-47,-404,-736,-1040,-1303,-1527, -1690,-1801,-1848,-1821,-1719,-1543,-1284,-944,-521,-20,560,1205,1911,2659,3445,4243,5048,5833,6593,7301, 7954,8529,9026,9433,9744,9961,10088,10128,10086,9969,9784,9542,9246,8907,8525,8116,7675,7214,6729,6233, 5723,5208,4682,4156,3627,3097,2567,2041,1516,997,477,-31,-536,-1036,-1528,-2011,-2487,-2950,-3409,-3854, -4291,-4717,-5138,-5545,-5943,-6328,-6704,-7065,-7410,-7739,-8051,-8340,-8608,-8851,-9063,-9242,-9387,-9493,-9555,-9568, -9530,-9431,-9269,-9040,-8738,-8357,-7898,-7366,-6758,-6081,-5346,-4564,-3753,-2921,-2089,-1277,-492,236,900,1493, 2000,2412,2736,2957,3090,3134,3096,2984,2802,2567,2285,1961,1609,1236,853,469,91,-276,-617,-932, -1211,-1449,-1634,-1765,-1834,-1836,-1768,-1618,-1393,-1081,-690,-216,334,958,1642,2378,3146,3944,4746,5540, 6308,7039,7710,8316,8843,9285,9634,9891,10049,10119,10105,10017,9853,9631,9351,9025,8656,8255,7825,7372, 6896,6404,5902,5391,4871,4343,3814,3284,2752,2220,1694,1169,652,135,-371,-873,-1363,-1850,-2326,-2795, -3252,-3704,-4144,-4575,-4998,-5412,-5814,-6204,-6588,-6955,-7307,-7644,-7958,-8258,-8531,-8781,-9001,-9195,-9355,-9476, -9553,-9590,-9571,-9499,-9365,-9163,-8889,-8536,-8107,-7601,-7021,-6366,-5655,-4888,-4088,-3261,-2429,-1607,-813,-61, 629,1254,1791,2243,2598,2863,3026,3106,3099,3015,2857,2643,2376,2069,1728,1364,984,601,218,-153, -504,-830,-1124,-1379,-1582,-1736,-1827,-1857,-1813,-1695,-1497,-1216,-853,-413,108,705,1365,2084,2845,3630, 4435,5232,6014,6757,7451,8082,8639,9108,9491,9778,9972,10074,10090,10029,9896,9695,9438,9131,8779,8390, 7969,7520,7050,6564,6063,5552,5035,4509,3978,3451,2920,2392,1867,1343,823,13,-665,-1457,-1002,-634, 52,618,1341,1911,2470,2832,3254,3664,4198,4762,5435,6108,6796,7318,7716,7921,8013,7965,7855,7688, 7542,7348,7096,6722,6227,5585,4828,3940,3039,2117,1249,421,-362,-1127,-1880,-2683,-3507,-4383,-5260,-6149, -6989,-7742,-8400,-8992,-9452,-9800,-10046,-10254,-10430,-10543,-10581,-10595,-10559,-10482,-10271,-10001,-9679,-9318,-8881,-8391, -7875,-7344,-6785,-6165,-5460,-4752,-3993,-3202,-2373,-1551,-768,-24,712,1432,2133,2784,3471,4155,4870,5531, 6167,6771,7319,7782,8149,8418,8680,8861,9014,9113,9210,9312,9348,9299,9175,8982,8709,8311,7837,7322, 6801,6230,5618,4977,4318,3615,2835,1972,1103,205,-670,-1556,-2368,-3098,-3756,-4369,-4961,-5531,-6071,-6630, -7196,-7762,-8261,-8687,-9050,-9337,-9533,-9619,-9651,-9668,-9637,-9578,-9448,-9293,-9094,-8804,-8422,-7969,-7482,-6960, -6388,-5815,-5245,-4705,-4145,-3565,-2971,-2371,-1749,-1097,-426,218,845,1429,2021,2572,3098,3621,4173,4764, 5371,5978,6601,7211,7803,8319,8757,9148,9497,9782,10018,10224,10429,10600,10719,10745,10721,10611,10407,10086, 9680,9245,8763,8226,7657,7063,6448,5771,5028,4242,3418,2582,1706,845,7,-776,-1540,-2304,-3045,-3778, -4504,-5253,-6025,-6753,-7449,-8076,-8643,-9128,-9511,-9806,-10044,-10240,-10372,-10440,-10457,-10437,-10343,-10148,-9860,-9499, -9086,-8594,-8052,-7471,-6908,-6316,-5706,-5072,-4419,-3757,-3050,-2310,-1552,-791,-44,697,1427,2120,2777,3422, 4072,4704,5323,5909,6487,7033,7514,7909,8241,8515,8729,8871,8965,9012,9048,9022,8928,8770,8549,8244, 7843,7354,6830,6269,5693,5074,4472,3875,3255,2593,1891,1153,403,-392,-1203,-2008,-2770,-3493,-4193,-4846, -5462,-6046,-6613,-7166,-7691,-8175,-8603,-8980,-9288,-9514,-9661,-9745,-9787,-9787,-9744,-9654,-9518,-9353,-9118,-8794, -8416,-7977,-7491,-6957,-6389,-5824,-5256,-4684,-4110,-3527,-2937,-2339,-1720,-1072,-441,198,824,1443,2049,2620, 3189,3768,4341,4925,5512,6107,6709,7287,7844,8356,8832,9264,9650,9971,10249,10487,10672,10789,10830,10799, 10700,10489,10199,9829,9394,8921,8384,7801,7215,6574,5902,5164,4385,3575,2722,1830,934,51,-813,-1646, -2458,-3227,-3951,-4671,-5361,-6033,-6662,-7258,-7812,-8304,-8728,-9080,-9353,-9577,-9742,-9844,-9904,-9906,-9863,-9767, -9589,-9343,-9027,-8643,-8186,-7679,-7125,-6551,-5956,-5328,-4693,-4039,-3371,-2677,-1963,-1229,-505,221,935,1625, 2291,2926,3536,4149,4722,5296,5854,6398,6912,7378,7798,8175,8480,8724,8918,9047,9139,9167,9149,9071, 8940,8737,8470,8101,7674,7175,6626,6025,5395,4733,4072,3376,2655,1920,1161,390,-388,-1191,-1970,-2733, -3479,-4202,-4882,-5527,-6133,-6714,-7261,-7765,-8229,-8649,-9025,-9330,-9562,-9736,-9844,-9888,-9882,-9813,-9706,-9548, -9336,-9073,-8758,-8392,-7981,-7522,-7027,-6503,-5957,-5404,-4837,-4269,-3709,-3134,-2551,-1959,-1353,-751,-143,472, 1075,1671,2250,2816,3381,3954,4510,5074,5641,6202,6751,7270,7764,8224,8642,9010,9332,9610,9849,10027, 10148,10217,10219,10134,9979,9740,9431,9047,8594,8093,7537,6933,6295,5602,4873,4113,3320,2491,1646,786, -61,-906,-1736,-2543,-3325,-4069,-4782,-5483,-6134,-6743,-7317,-7848,-8318,-8726,-9054,-9334,-9551,-9699,-9777,-9800, -9776,-9689,-9530,-9309,-9039,-8704,-8304,-7839,-7337,-6797,-6224,-5625,-4996,-4361,-3714,-3048,-2368,-1671,-969,-264, 443,1159,1847,2516,3169,3813,4450,5051,5643,6229,6799,7340,7841,8308,8738,9123,9438,9695,9907,10065, 10169,10192,10164,10079,9916,9680,9371,9001,8572,8077,7520,6924,6295,5626,4920,4171,3400,2601,1787,945, 103,-732,-1545,-2351,-3132,-3896,-4615,-5316,-5983,-6630,-7211,-7758,-8258,-8709,-9093,-9402,-9643,-9835,-9952,-9995, -9975,-9903,-9785,-9590,-9330,-9019,-8656,-8239,-7767,-7254,-6716,-6163,-5581,-4978,-4373,-3766,-3157,-2539,-1922,-1302, -690,-80,524,1127,1707,2281,2839,3397,3940,4474,4998,5528,6036,6525,6980,7414,7827,8197,8515,8805, 9047,9245,9386,9474,9498,9473,9355,9161,8902,8577,8189,7726,7223,6672,6082,5446,4770,4047,3299,2515, 1707,874,44,-784,-1600,-2413,-3204,-3962,-4703,-5417,-6098,-6755,-7351,-7917,-8429,-8891,-9286,-9620,-9897,-10131, -10287,-10384,-10420,-10407,-10326,-10174,-9949,-9673,-9337,-8931,-8471,-7966,-7433,-6866,-6262,-5636,-4987,-4323,-3639,-2922, -2200,-1479,-744,-12,717,1434,2126,2809,3477,4131,4768,5391,5989,6583,7143,7669,8149,8591,8991,9322, 9584,9811,9979,10090,10134,10115,10036,9895,9668,9368,9016,8601,8128,7596,7019,6419,5779,5089,4372,3609, 2834,2024,1195,368,-450,-1257,-2041,-2820,-3555,-4269,-4957,-5626,-6265,-6864,-7412,-7925,-8381,-8766,-9086,-9334, -9524,-9660,-9714,-9712,-9651,-9538,-9355,-9106,-8792,-8424,-8003,-7521,-6996,-6439,-5862,-5256,-4635,-3998,-3363,-2721, -2067,-1410,-759,-117,524,1156,1777,2383,2967,3546,4107,4660,5198,5726,6238,6753,7228,7688,8116,8517, 8873,9183,9448,9682,9859,9988,10055,10068,10017,9896,9686,9410,9073,8664,8195,7672,7104,6508,5866,5182, 4459,3706,2919,2095,1247,401,-447,-1280,-2106,-2906,-3681,-4430,-5163,-5865,-6541,-7187,-7779,-8344,-8838,-9283, -9656,-9962,-10206,-10395,-10517,-10579,-10596,-10549,-10438,-10252,-10005,-9700,-9326,-8892,-8414,-7900,-7360,-6773,-6154,-5535, -4884,-4213,-3519,-2808,-2096,-1370,-635,89,802,1499,2177,2847,3490,4124,4741,5343,5929,6488,7015,7500, 7946,8334,8670,8950,9165,9346,9454,9518,9505,9443,9313,9106,8825,8470,8060,7576,7041,6464,5853,5223, 4543,3843,3111,2360,1579,769,-57,-871,-1677,-2472,-3241,-3980,-4682,-5367,-6018,-6628,-7218,-7767,-8268,-8721, -9105,-9426,-9676,-9857,-9975,-10028,-10014,-9941,-9820,-9641,-9396,-9084,-8709,-8290,-7793,-7251,-6677,-6077,-5456,-4808, -4148,-3502,-2839,-2167,-1490,-817,-152,524,1195,1848,2483,3108,3710,4302,4868,5432,5977,6507,7030,7537, 8010,8469,8875,9248,9575,9866,10092,10273,10408,10488,10512,10474,10377,10201,9948,9630,9249,8796,8285,7731, 7146,6515,5853,5163,4438,3678,2886,2068,1238,410,-427,-1250,-2043,-2813,-3547,-4258,-4949,-5603,-6223,-6819, -7369,-7877,-8321,-8709,-9031,-9283,-9472,-9603,-9663,-9684,-9650,-9555,-9404,-9188,-8918,-8581,-8182,-7728,-7240,-6711, -6149,-5567,-4964,-4346,-3714,-3068,-2398,-1727,-1044,-354,344,1027,1700,2360,3002,3623,4231,4823,5401,5963, 6500,7023,7498,7939,8326,8656,8934,9150,9304,9411,9443,9425,9344,9211,9005,8734,8384,7974,7491,6945, 6356,5720,5051,4362,3630,2890,2129,1342,527,-305,-1145,-1972,-2802,-3605,-4372,-5113,-5806,-6482,-7104,-7697, -8261,-8782,-9250,-9674,-10029,-10328,-10551,-10701,-10784,-10805,-10752,-10653,-10490,-10272,-10001,-9664,-9272,-8820,-8311,-7765, -7176,-6553,-5921,-5270,-4606,-3948,-3269,-2603,-1932,-1250,-582,92,756,1402,2039,2664,3265,3849,4413,4973, 5521,6049,6556,7054,7532,7967,8366,8720,9035,9285,9487,9639,9731,9773,9756,9683,9548,9349,9073,8738, 8325,7856,7329,6762,6158,5519,4851,4157,3439,2696,1930,1147,353,-448,-1251,-2020,-2782,-3506,-4198,-4858, -5489,-6085,-6648,-7185,-7671,-8120,-8511,-8847,-9112,-9310,-9438,-9506,-9513,-9465,-9354,-9203,-8992,-8722,-8400,-8018, -7585,-7099,-6572,-6010,-5420,-4808,-4179,-3540,-2887,-2219,-1552,-861,-175,520,1220,1907,2588,3252,3897,4516, 5124,5712,6282,6823,7343,7837,8303,8716,9075,9389,9643,9824,9942,10007,10000,9944,9811,9621,9375,9062, 8678,8227,7703,7130,6500,5824,5119,4385,3627,2854,2064,1256,437,-396,-1235,-2072,-2898,-3702,-4472,-5211, -5909,-6570,-7185,-7753,-8293,-8783,-9231,-9618,-9952,-10227,-10421,-10537,-10589,-10572,-10469,-10317,-10105,-9839,-9516,-9136, -8703,-8221,-7681,-7101,-6479,-5841,-5180,-4508,-3832,-3153,-2469,-1790,-1115,-442,226,894,1549,2185,2824,3431, 4017,4592,5135,5667,6183,6682,7160,7616,8047,8432,8772,9086,9338,9538,9669,9757,9787,9755,9662,9525, 9330,9068,8744,8358,7906,7405,6840,6236,5588,4920,4219,3508,2776,2023,1260,491,-288,-1071,-1849,-2600, -3341,-4042,-4704,-5339,-5928,-6487,-7003,-7477,-7906,-8297,-8634,-8907,-9127,-9259,-9337,-9356,-9292,-9179,-9007,-8792, -8528,-8199,-7836,-7414,-6947,-6433,-5880,-5298,-4686,-4059,-3407,-2761,-2095,-1434,-762,-86,593,1275,1955,2626, 3294,3940,4571,5181,5769,6335,6878,7381,7870,8334,8750,9127,9448,9721,9929,10064,10133,10133,10068,9938, 9736,9483,9169,8789,8345,7846,7291,6675,6003,5292,4552,3781,2990,2191,1374,563,-266,-1102,-1926,-2749, -3561,-4355,-5122,-5843,-6531,-7170,-7771,-8311,-8811,-9259,-9659,-10004,-10297,-10526,-10682,-10761,-10783,-10724,-10584,-10391, -10141,-9840,-9472,-9054,-8599,-8097,-7549,-6958,-6335,-5691,-5026,-4345,-3656,-2974,-2287,-1611,-929,-265,396,1052, 1698,2327,2953,3554,4140,4703,5245,5767,6265,6738,7192,7617,8007,8360,8666,8936,9142,9290,9379,9412, 9374,9270,9108,8892,8620,8295,7908,7463,6970,6409,5799,5151,4468,3760,3026,2282,1525,761,-4,-780, -1540,-2296,-3058,-3782,-4492,-5169,-5801,-6404,-6951,-7457,-7911,-8312,-8674,-8988,-9247,-9443,-9583,-9658,-9662,-9600, -9472,-9288,-9047,-8756,-8407,-8017,-7584,-7109,-6595,-6043,-5452,-4844,-4205,-3546,-2882,-2208,-1532,-856,-176,502, 1183,1853,2526,3191,3846,4491,5119,5723,6302,6858,7391,7880,8355,8783,9168,9509,9806,10045,10223,10334, 10377,10351,10250,10075,9833,9540,9186,8767,8296,7775,7196,6566,5879,5154,4406,3616,2816,1998,1172,346, -471,-1295,-2099,-2895,-3680,-4437,-5178,-5876,-6538,-7152,-7718,-8223,-8684,-9082,-9430,-9732,-9968,-10147,-10266,-10298, -10280,-10169,-9999,-9769,-9469,-9119,-8714,-8255,-7768,-7243,-6669,-6070,-5446,-4794,-4129,-3441,-2748,-2064,-1379,-700, -36,622,1265,1904,2534,3151,3753,4327,4913,5451,5975,6470,6954,7389,7814,8181,8527,8826,9087,9295, 9453,9543,9577,9552,9450,9290,9070,8785,8453,8060,7621,7126,6589,5992,5358,4671,3965,3222,2458,1683, 904,125,-658,-1429,-2186,-2931,-3662,-4376,-5063,-5718,-6338,-6914,-7444,-7907,-8332,-8694,-9010,-9261,-9464,-9613, -9700,-9722,-9689,-9575,-9402,-9170,-8876,-8523,-8131,-7688,-7209,-6692,-6137,-5565,-4962,-4336,-3684,-3022,-2346,-1670, -983,-299,380,1048,1710,2370,3023,3666,4306,4923,5534,6122,6679,7213,7723,8185,8607,8993,9333,9626, 9869,10051,10183,10239,10236,10160,10012,9792,9504,9150,8744,8276,7758,7199,6591,5940,5231,4503,3738,2934, 2122,1295,457,-371,-1199,-2003,-2793,-3568,-4327,-5057,-5757,-6437,-7073,-7666,-8203,-8681,-9111,-9467,-9770,-10019, -10199,-10324,-10398,-10388,-10323,-10177,-9976,-9698,-9367,-8977,-8534,-8047,-7522,-6957,-6363,-5747,-5098,-4441,-3765,-3067, -2374,-1675,-978,-301,370,1033,1683,2325,2948,3562,4160,4744,5313,5856,6384,6880,7347,7773,8165,8517, 8830,9085,9300,9467,9585,9631,9631,9555,9419,9206,8927,8597,8203,7757,7264,6722,6142,5516,4853,4161, 3433,2672,1899,1111,314,-477,-1261,-2032,-2775,-3516,-4223,-4898,-5561,-6185,-6777,-7321,-7822,-8260,-8647,-8962, -9237,-9434,-9585,-9679,-9701,-9676,-9587,-9430,-9217,-8940,-8614,-8224,-7786,-7311,-6799,-6251,-5679,-5090,-4467,-3833, -3180,-2516,-1840,-1162,-480,198,872,1533,2188,2830,3463,4080,4700,5297,5876,6434,6977,7493,7962,8394, 8794,9138,9434,9675,9867,9999,10074,10084,10028,9900,9710,9440,9098,8701,8240,7720,7156,6546,5896,5211, 4491,3735,2953,2152,1326,490,-348,-1188,-2010,-2809,-3586,-4346,-5075,-5776,-6447,-7082,-7684,-8235,-8739,-9181, -9573,-9889,-10142,-10327,-10459,-10527,-10530,-10468,-10351,-10160,-9910,-9601,-9229,-8797,-8314,-7784,-7228,-6631,-6016,-5378, -4726,-4052,-3370,-2677,-1988,-1280,-581,100,781,1439,2087,2718,3337,3937,4525,5095,5645,6172,6682,7157, 7601,8003,8370,8691,8961,9173,9339,9454,9517,9510,9456,9330,9145,8886,8559,8173,7729,7228,6681,6092, 5467,4806,4112,3389,2647,1877,1096,299,-499,-1297,-2076,-2847,-3576,-4294,-4978,-5630,-6251,-6837,-7390,-7895, -8347,-8751,-9096,-9370,-9589,-9741,-9838,-9866,-9826,-9739,-9595,-9384,-9127,-8800,-8426,-7999,-7522,-6997,-6455,-5869, -5272,-4652,-4014,-3370,-2710,-2040,-1365,-684,-9,673,1349,2010,2658,3299,3924,4533,5134,5717,6287,6825, 7343,7834,8286,8690,9058,9374,9630,9824,9967,10053,10070,10027,9931,9760,9527,9220,8841,8402,7911,7353, 6749,6098,5424,4711,3972,3205,2430,1616,804,-27,-853,-1674,-2485,-3276,-4026,-4758,-5449,-6111,-6736,-7323, -7870,-8369,-8815,-9215,-9547,-9816,-10009,-10144,-10215,-10211,-10145,-10017,-9842,-9593,-9292,-8930,-8513,-8049,-7519,-6954, -6359,-5731,-5089,-4421,-3751,-3075,-2385,-1692,-1005,-305,382,1067,1730,2382,3021,3654,4254,4840,5406,5953, 6476,6978,7454,7905,8310,8684,9013,9291,9505,9673,9779,9833,9820,9752,9636,9444,9199,8880,8502,8065, 7569,7015,6415,5778,5103,4402,3665,2914,2143,1354,565,-248,-1059,-1860,-2650,-3418,-4160,-4868,-5539,-6169, -6764,-7327,-7838,-8314,-8731,-9104,-9411,-9653,-9832,-9944,-9993,-9973,-9886,-9753,-9561,-9307,-9008,-8651,-8252,-7798, -7299,-6758,-6192,-5592,-4981,-4344,-3711,-3064,-2411,-1749,-1093,-431,234,891,1545,2186,2821,3444,4042,4634, 5210,5755,6284,6793,7286,7739,8153,8530,8858,9137,9352,9498,9582,9614,9579,9479,9325,9103,8823,8473, 8064,7596,7062,6473,5843,5171,4464,3734,2975,2209,1428,633,-169,-976,-1782,-2585,-3380,-4140,-4864,-5566, -6220,-6837,-7411,-7945,-8428,-8869,-9252,-9594,-9860,-10072,-10213,-10282,-10285,-10224,-10090,-9898,-9652,-9339,-8990,-8572, -8120,-7604,-7058,-6460,-5834,-5170,-4509,-3826,-3133,-2433,-1727,-1031,-333,361,1052,1737,2409,3065,3710,4333, 4941,5523,6082,6623,7133,7608,8069,8494,8876,9224,9518,9759,9949,10073,10132,10137,10071,9950,9770,9526, 9227,8864,8453,7973,7439,6849,6217,5545,4838,4097,3347,2583,1808,1017,231,-566,-1355,-2146,-2923,-3667, -4382,-5076,-5716,-6319,-6881,-7395,-7866,-8296,-8664,-8986,-9249,-9448,-9589,-9656,-9661,-9589,-9463,-9276,-9032,-8741, -8399,-8020,-7585,-7115,-6599,-6055,-5477,-4867,-4248,-3609,-2971,-2326,-1680,-1029,-385,266,912,1556,2193,2822, 3444,4051,4632,5210,5760,6289,6786,7260,7705,8121,8489,8826,9102,9336,9504,9607,9640,9615,9517,9358, 9146,8867,8525,8123,7669,7166,6586,5965,5305,4594,3854,3087,2301,1511,714,-84,-880,-1678,-2474,-3266, -4039,-4779,-5498,-6186,-6813,-7407,-7949,-8449,-8888,-9280,-9618,-9909,-10144,-10301,-10406,-10442,-10404,-10294,-10119,-9886, -9589,-9234,-8839,-8392,-7907,-7371,-6801,-6197,-5560,-4886,-4208,-3514,-2817,-2110,-1406,-712,-17,666,1350,2031, 2689,3344,3981,4605,5206,5784,6338,6861,7353,7813,8243,8645,8994,9308,9570,9787,9936,10024,10040,10005, 9887,9720,9481,9191,8847,8446,7987,7484,6924,6310,5656,4959,4235,3483,2715,1939,1160,375,-397,-1174, -1939,-2695,-3438,-4156,-4845,-5497,-6108,-6674,-7188,-7651,-8069,-8430,-8736,-8997,-9196,-9337,-9415,-9426,-9377,-9255, -9066,-8832,-8527,-8178,-7779,-7347,-6880,-6366,-5820,-5253,-4651,-4023,-3383,-2731,-2075,-1416,-756,-103,540,1188, 1829,2462,3084,3707,4314,4907,5486,6040,6572,7081,7555,7999,8405,8779,9101,9389,9615,9792,9910,9953, 9944,9852,9691,9473,9182,8832,8431,7970,7453,6891,6280,5619,4916,4170,3401,2593,1778,960,130,-692, -1501,-2306,-3101,-3877,-4645,-5375,-6086,-6756,-7375,-7966,-8484,-8952,-9366,-9724,-10023,-10280,-10466,-10585,-10652,-10648, -10579,-10430,-10221,-9946,-9618,-9216,-8784,-8310,-7792,-7237,-6648,-6031,-5381,-4716,-4032,-3338,-2636,-1925,-1218,-530, 154,829,1495,2154,2798,3432,4052,4659,5244,5807,6339,6843,7311,7740,8139,8499,8801,9077,9294,9457, 9564,9607,9579,9488,9323,9107,8817,8476,8070,7622,7129,6588,6000,5366,4693,3983,3241,2475,1699,920, 128,-644,-1411,-2169,-2905,-3637,-4331,-5014,-5660,-6276,-6846,-7376,-7838,-8256,-8616,-8912,-9155,-9343,-9473,-9546, -9555,-9510,-9392,-9206,-8964,-8663,-8297,-7889,-7438,-6943,-6422,-5870,-5285,-4686,-4060,-3409,-2755,-2087,-1412,-736, -63,601,1261,1913,2555,3183,3804,4416,5019,5608,6177,6726,7247,7745,8200,8610,8993,9330,9618,9862, 10051,10181,10247,10256,10194,10062,9858,9594,9248,8849,8391,7877,7319,6723,6081,5391,4668,3903,3117,2300, 1470,635,-199,-1023,-1833,-2638,-3415,-4168,-4907,-5609,-6292,-6932,-7524,-8072,-8567,-9008,-9385,-9697,-9949,-10141, -10275,-10347,-10363,-10308,-10193,-10005,-9753,-9436,-9062,-8636,-8168,-7653,-7102,-6527,-5921,-5293,-4637,-3967,-3281,-2589, -1892,-1190,-489,191,874,1538,2194,2832,3446,4065,4662,5248,5804,6346,6854,7327,7763,8160,8511,8818, 9078,9296,9453,9555,9595,9584,9502,9361,9136,8857,8510,8109,7644,7139,6581,5989,5355,4688,3993,3259, 2496,1712,921,125,-672,-1456,-2223,-2968,-3696,-4400,-5071,-5717,-6338,-6920,-7455,-7946,-8374,-8751,-9071,-9315, -9506,-9639,-9703,-9723,-9675,-9567,-9405,-9176,-8880,-8548,-8140,-7695,-7205,-6681,-6126,-5542,-4944,-4324,-3694,-3038, -2379,-1713,-1047,-380,295,949,1603,2244,2875,3490,4088,4686,5270,5833,6380,6905,7405,7872,8305,8685, 9029,9332,9569,9761,9904,9984,9996,9952,9843,9666,9415,9096,8718,8274,7764,7213,6620,5981,5304,4600, 3862,3095,2298,1481,652,-180,-1016,-1834,-2641,-3418,-4168,-4899,-5594,-6256,-6893,-7488,-8042,-8550,-9001,-9396, -9723,-9985,-10190,-10334,-10404,-10411,-10373,-10273,-10096,-9871,-9570,-9227,-8810,-8354,-7842,-7300,-6715,-6115,-5482,-4843, -4177,-3511,-2825,-2129,-1434,-741,-41,636,1315,1971,2625,3252,3859,4454,5043,5600,6143,6661,7147,7603, 8016,8388,8706,8973,9192,9355,9463,9513,9505,9439,9313,9114,8850,8530,8137,7688,7185,6630,6038,5414, 4746,4060,3344,2598,1842,1061,273,-527,-1316,-2088,-2848,-3578,-4292,-4962,-5604,-6209,-6783,-7317,-7809,-8247, -8633,-8968,-9240,-9443,-9581,-9655,-9662,-9608,-9509,-9348,-9128,-8849,-8517,-8132,-7689,-7204,-6681,-6122,-5534,-4926, -4298,-3668,-3013,-2356,-1688,-1025,-355,317,987,1640,2295,2931,3558,4165,4759,5343,5906,6452,6980,7491, 7960,8410,8807,9166,9478,9733,9938,10082,10164,10191,10149,10055,9893,9663,9373,9015,8590,8111,7563,6973, 6332,5663,4957,4225,3473,2695,1894,1080,266,-564,-1393,-2204,-2991,-3758,-4498,-5199,-5868,-6494,-7089,-7640, -8155,-8617,-9022,-9379,-9666,-9886,-10042,-10135,-10152,-10118,-10015,-9855,-9641,-9370,-9043,-8660,-8222,-7738,-7210,-6646, -6051,-5434,-4790,-4142,-3473,-2806,-2128,-1453,-769,-91,593,1261,1925,2571,3196,3814,4401,4981,5537,6059, 6573,7053,7507,7922,8293,8616,8900,9114,9278,9381,9430,9407,9332,9192,9004,8744,8416,8044,7593,7093, 6535,5929,5285,4598,3891,3170,2411,1645,866,73,-725,-1521,-2321,-3098,-3854,-4581,-5284,-5948,-6574,-7155, -7699,-8192,-8647,-9050,-9402,-9699,-9933,-10100,-10199,-10228,-10198,-10102,-9945,-9729,-9456,-9138,-8763,-8346,-7874,-7361, -6808,-6226,-5616,-4978,-4326,-3677,-3003,-2333,-1665,-995,-317,349,1028,1684,2343,2979,3607,4216,4806,5387, 5940,6467,6985,7466,7921,8343,8722,9063,9343,9565,9730,9835,9881,9856,9778,9625,9424,9152,8823,8441, 7984,7481,6910,6297,5634,4941,4220,3477,2713,1934,1149,357,-447,-1243,-2045,-2818,-3588,-4318,-5024,-5688, -6313,-6888,-7432,-7917,-8366,-8752,-9100,-9398,-9619,-9783,-9881,-9904,-9857,-9753,-9583,-9365,-9080,-8743,-8367,-7931, -7441,-6921,-6358,-5762,-5137,-4484,-3818,-3145,-2462,-1779,-1089,-411,278,963,1640,2306,2968,3608,4248,4847, 5436,5996,6543,7046,7530,7986,8413,8794,9126,9418,9661,9838,9956,10014,10009,9929,9787,9589,9341,9023, 8653,8224,7730,7193,6594,5949,5269,4556,3810,3053,2271,1489,696,-102,-895,-1689,-2471,-3240,-3987,-4706, -5394,-6039,-6642,-7197,-7699,-8161,-8567,-8928,-9238,-9494,-9680,-9804,-9864,-9858,-9773,-9629,-9422,-9169,-8850,-8488, -8081,-7632,-7137,-6602,-6035,-5439,-4819,-4173,-3512,-2853,-2186,-1517,-851,-190,470,1131,1776,2419,3064,3676, 4291,4877,5444,5998,6520,7017,7496,7932,8343,8709,9032,9309,9545,9708,9822,9866,9844,9754,9592,9376, 9100,8764,8371,7923,7421,6854,6242,5583,4889,4155,3393,2612,1824,1024,215,-584,-1383,-2180,-2966,-3734, -4484,-5202,-5898,-6542,-7140,-7698,-8205,-8650,-9054,-9403,-9707,-9948,-10128,-10245,-10296,-10275,-10195,-10037,-9822,-9553, -9220,-8840,-8422,-7949,-7439,-6896,-6320,-5700,-5068,-4401,-3727,-3041,-2350,-1662,-970,-297,384,1061,1721,2379, 3031,3662,4289,4882,5456,6011,6537,7028,7489,7914,8312,8656,8956,9217,9423,9566,9647,9665,9616,9498, 9310,9070,8764,8403,7990,7529,7019,6456,5838,5178,4480,3757,3004,2238,1452,666,-121,-903,-1670,-2432, -3188,-3912,-4629,-5310,-5962,-6573,-7130,-7634,-8103,-8504,-8860,-9154,-9400,-9588,-9713,-9770,-9784,-9706,-9576,-9381, -9119,-8805,-8437,-8018,-7565,-7060,-6529,-5964,-5372,-4753,-4115,-3449,-2784,-2111,-1425,-756,-79,579,1240,1893, 2534,3166,3793,4399,4999,5576,6132,6668,7174,7645,8097,8498,8866,9191,9472,9710,9886,10010,10075,10068, 9995,9850,9633,9366,9029,8635,8193,7696,7152,6556,5912,5227,4506,3751,2962,2168,1358,545,-269,-1070, -1859,-2641,-3410,-4150,-4884,-5570,-6243,-6876,-7440,-7969,-8432,-8844,-9199,-9496,-9741,-9936,-10056,-10128,-10127,-10064, -9934,-9739,-9482,-9172,-8794,-8374,-7911,-7409,-6865,-6298,-5699,-5081,-4434,-3764,-3092,-2407,-1711,-1021,-339,338, 1009,1666,2322,2962,3595,4207,4820,5397,5956,6493,6993,7463,7899,8290,8647,8946,9203,9418,9574,9669, 9711,9678,9588,9414,9183,8889,8534,8115,7655,7150,6589,5993,5348,4673,3959,3212,2444,1652,859,59, -730,-1514,-2275,-3028,-3755,-4462,-5146,-5805,-6430,-7008,-7539,-8020,-8447,-8811,-9131,-9381,-9569,-9710,-9785,-9796, -9759,-9644,-9472,-9227,-8937,-8589,-8179,-7728,-7242,-6714,-6150,-5573,-4968,-4344,-3702,-3041,-2371,-1696,-1015,-345, 321,979,1625,2269,2896,3511,4114,4706,5284,5843,6379,6895,7379,7826,8240,8614,8942,9224,9455,9643, 9777,9840,9852,9799,9678,9484,9224,8901,8517,8062,7572,7025,6435,5803,5134,4434,3700,2928,2136,1329, 507,-316,-1124,-1930,-2708,-3474,-4213,-4929,-5615,-6274,-6900,-7485,-8025,-8511,-8938,-9306,-9612,-9855,-10047,-10173, -10233,-10247,-10189,-10067,-9891,-9645,-9344,-8978,-8555,-8094,-7587,-7045,-6471,-5871,-5253,-4617,-3955,-3280,-2601,-1898, -1209,-519,169,850,1517,2178,2813,3447,4067,4665,5252,5815,6355,6871,7356,7798,8212,8575,8885,9140, 9355,9519,9624,9669,9657,9576,9434,9211,8932,8591,8186,7720,7211,6649,6055,5420,4743,4039,3308,2550, 1769,976,174,-633,-1423,-2215,-2965,-3698,-4410,-5082,-5736,-6357,-6944,-7491,-7981,-8429,-8815,-9135,-9404,-9602, -9741,-9817,-9833,-9789,-9697,-9528,-9307,-9031,-8695,-8305,-7846,-7360,-6836,-6270,-5681,-5071,-4445,-3803,-3153,-2478, -1809,-1128,-452,224,891,1554,2204,2845,3459,4077,4666,5253,5817,6352,6879,7378,7840,8272,8664,9008, 9300,9538,9728,9863,9941,9958,9919,9811,9651,9408,9104,8741,8308,7810,7272,6687,6058,5394,4698,3971, 3215,2434,1647,841,16,-800,-1611,-2400,-3171,-3920,-4637,-5325,-5977,-6602,-7188,-7730,-8219,-8677,-9064,-9393, -9651,-9852,-9987,-10063,-10065,-10017,-9909,-9741,-9515,-9228,-8885,-8486,-8037,-7537,-7010,-6439,-5837,-5214,-4583,-3936, -3268,-2590,-1913,-1221,-532,154,831,1507,2163,2815,3439,4056,4652,5226,5787,6326,6840,7329,7774,8187, 8560,8876,9142,9350,9503,9610,9643,9623,9542,9404,9199,8928,8595,8199,7738,7224,6666,6057,5412,4726, 4018,3293,2540,1767,983,186,-621,-1425,-2217,-2995,-3736,-4463,-5147,-5794,-6414,-6995,-7541,-8037,-8492,-8890, -9237,-9518,-9737,-9884,-9974,-9991,-9944,-9848,-9684,-9464,-9191,-8861,-8479,-8048,-7566,-7033,-6470,-5872,-5253,-4619, -3958,-3307,-2638,-1958,-1277,-596,83,766,1434,2097,2755,3392,4013,4623,5210,5776,6329,6847,7351,7830, 8271,8675,9042,9347,9610,9813,9955,10050,10071,10042,9954,9797,9576,9298,8954,8551,8081,7554,6979,6360, 5701,5005,4289,3546,2785,2004,1223,417,-392,-1197,-1999,-2775,-3537,-4260,-4948,-5603,-6222,-6807,-7343,-7845, -8287,-8689,-9034,-9317,-9534,-9690,-9777,-9799,-9754,-9655,-9488,-9267,-9001,-8669,-8299,-7867,-7388,-6876,-6317,-5725, -5118,-4477,-3832,-3175,-2510,-1839,-1171,-491,185,860,1527,2184,2831,3459,4069,4671,5239,5795,6324,6819, 7300,7748,8157,8527,8852,9133,9356,9509,9614,9651,9623,9537,9397,9192,8926,8599,8215,7769,7263,6702, 6102,5442,4747,4028,3287,2542,1762,978,186,-611,-1414,-2215,-3004,-3766,-4503,-5216,-5887,-6522,-7109,-7655, -8163,-8619,-9020,-9384,-9678,-9913,-10092,-10206,-10243,-10215,-10119,-9966,-9753,-9481,-9163,-8784,-8368,-7905,-7387,-6837, -6248,-5633,-4994,-4343,-3679,-3001,-2325,-1641,-967,-282,390,1066,1731,2386,3033,3669,4273,4874,5448,6001, 6525,7028,7510,7953,8356,8732,9057,9341,9564,9723,9824,9871,9837,9754,9612,9396,9137,8810,8417,7979, 7474,6912,6308,5660,4966,4259,3498,2747,1980,1192,408,-387,-1173,-1963,-2736,-3495,-4224,-4936,-5593,-6225, -6796,-7344,-7832,-8278,-8674,-9024,-9303,-9538,-9702,-9809,-9849,-9806,-9705,-9551,-9330,-9050,-8727,-8354,-7938,-7478, -6964,-6424,-5845,-5235,-4595,-3948,-3287,-2617,-1947,-1277,-607,62,729,1391,2045,2690,3330,3950,4551,5130, 5686,6226,6724,7200,7653,8061,8430,8768,9056,9293,9471,9586,9645,9634,9548,9414,9212,8956,8632,8258, 7824,7341,6803,6205,5570,4885,4171,3416,2650,1876,1083,288,-504,-1296,-2088,-2876,-3642,-4384,-5117,-5805, -6451,-7061,-7621,-8142,-8600,-9005,-9366,-9678,-9924,-10117,-10245,-10306,-10307,-10232,-10091,-9889,-9628,-9309,-8940,-8528, -8072,-7566,-7030,-6459,-5851,-5216,-4566,-3899,-3225,-2546,-1855,-1183,-506,175,837,1505,2155,2801,3440,4055, 4659,5242,5805,6346,6848,7322,7770,8188,8557,8897,9187,9423,9606,9720,9778,9778,9693,9560,9356,9096, 8778,8398,7971,7489,6951,6366,5734,5055,4346,3603,2841,2072,1283,499,-288,-1070,-1839,-2613,-3358,-4088, -4792,-5477,-6109,-6702,-7239,-7751,-8190,-8577,-8916,-9206,-9432,-9611,-9712,-9765,-9749,-9660,-9503,-9299,-9023,-8694, -8312,-7896,-7432,-6928,-6384,-5816,-5210,-4579,-3930,-3267,-2595,-1914,-1225,-550,130,802,1468,2121,2767,3402, 4025,4644,5231,5811,6354,6875,7360,7813,8235,8611,8955,9249,9495,9695,9823,9899,9913,9863,9729,9538, 9286,8976,8602,8174,7693,7164,6589,5969,5302,4594,3855,3092,2307,1511,698,-96,-891,-1680,-2460,-3227, -3970,-4691,-5390,-6063,-6680,-7268,-7798,-8284,-8703,-9071,-9384,-9639,-9831,-9975,-10055,-10075,-10022,-9907,-9722,-9476, -9176,-8813,-8405,-7950,-7466,-6938,-6378,-5795,-5174,-4534,-3875,-3210,-2538,-1853,-1170,-493,177,846,1498,2138, 2772,3401,4016,4609,5191,5757,6293,6801,7273,7720,8125,8494,8821,9108,9339,9528,9653,9722,9722,9667, 9526,9333,9075,8756,8364,7944,7455,6925,6344,5728,5061,4362,3622,2856,2072,1283,482,-312,-1096,-1869, -2632,-3381,-4111,-4809,-5492,-6142,-6743,-7304,-7817,-8280,-8684,-9026,-9319,-9552,-9722,-9837,-9889,-9887,-9821,-9685, -9484,-9225,-8905,-8530,-8109,-7649,-7143,-6607,-6035,-5437,-4817,-4178,-3516,-2839,-2158,-1476,-790,-109,573,1241, 1902,2549,3183,3807,4422,5018,5595,6158,6691,7188,7656,8087,8480,8821,9118,9371,9571,9716,9813,9839, 9806,9706,9531,9301,9001,8635,8204,7731,7209,6638,6027,5383,4693,3969,3212,2430,1637,830,19,-787, -1586,-2369,-3129,-3877,-4596,-5281,-5951,-6578,-7174,-7729,-8219,-8663,-9044,-9368,-9631,-9843,-9978,-10066,-10092,-10059, -9955,-9798,-9570,-9287,-8937,-8541,-8092,-7607,-7083,-6523,-5940,-5335,-4699,-4053,-3383,-2721,-2031,-1345,-664,6, 687,1343,1992,2625,3245,3859,4459,5033,5598,6148,6669,7151,7602,8019,8398,8729,9009,9250,9431,9568, 9627,9647,9602,9485,9304,9061,8748,8373,7939,7456,6929,6354,5733,5085,4392,3679,2929,2157,1367,566, -238,-1030,-1813,-2582,-3330,-4055,-4754,-5416,-6064,-6670,-7235,-7756,-8229,-8652,-9010,-9303,-9545,-9724,-9831,-9891, -9879,-9822,-9695,-9508,-9266,-8965,-8603,-8184,-7721,-7217,-6675,-6102,-5500,-4888,-4247,-3594,-2920,-2246,-1562,-879, -182,496,1180,1835,2500,3138,3765,4377,4973,5547,6110,6643,7162,7642,8084,8481,8843,9150,9407,9619, 9771,9864,9899,9880,9793,9649,9430,9152,8802,8390,7918,7395,6834,6218,5568,4888,4180,3438,2674,1887, 1084,274,-544,-1347,-2137,-2906,-3661,-4381,-5079,-5735,-6369,-6960,-7516,-8029,-8488,-8892,-9234,-9510,-9727,-9878, -9964,-9996,-9963,-9877,-9726,-9519,-9246,-8919,-8534,-8101,-7623,-7101,-6543,-5951,-5344,-4725,-4084,-3426,-2756,-2082, -1407,-721,-41,634,1301,1957,2601,3224,3832,4428,5008,5559,6107,6629,7125,7584,8006,8393,8734,9027, 9264,9454,9581,9656,9670,9632,9522,9355,9121,8831,8474,8055,7573,7037,6471,5849,5197,4519,3812,3067, 2308,1529,738,-59,-869,-1655,-2435,-3197,-3930,-4636,-5308,-5937,-6552,-7113,-7636,-8122,-8551,-8930,-9243,-9495, -9697,-9810,-9873,-9869,-9809,-9694,-9515,-9280,-8989,-8650,-8248,-7800,-7302,-6767,-6193,-5599,-4978,-4343,-3687,-3026, -2352,-1675,-993,-309,383,1061,1734,2397,3046,3677,4285,4890,5472,6024,6569,7077,7568,8017,8431,8806, 9132,9406,9629,9787,9887,9932,9910,9831,9700,9497,9231,8906,8514,8064,7552,6981,6384,5733,5050,4341, 3601,2854,2078,1293,489,-317,-1127,-1921,-2702,-3459,-4203,-4901,-5571,-6198,-6792,-7339,-7852,-8307,-8728,-9088, -9383,-9617,-9787,-9896,-9924,-9896,-9811,-9666,-9461,-9203,-8889,-8520,-8105,-7639,-7125,-6576,-5995,-5381,-4749,-4109, -3443,-2781,-2112,-1439,-761,-84,588,1253,1921,2569,3206,3817,4416,4998,5563,6101,6615,7109,7574,7998, 8390,8739,9045,9297,9486,9627,9702,9718,9674,9568,9407,9183,8896,8559,8153,7686,7160,6577,5961,5303, 4608,3894,3147,2389,1615,830,33,-760,-1569,-2356,-3126,-3880,-4603,-5291,-5941,-6549,-7129,-7656,-8140,-8573, -8967,-9305,-9581,-9796,-9948,-10021,-10040,-9985,-9878,-9707,-9482,-9198,-8869,-8490,-8049,-7576,-7052,-6498,-5904,-5288, -4653,-4005,-3337,-2673,-1997,-1324,-651,33,704,1371,2033,2690,3325,3942,4545,5134,5689,6224,6734,7221, 7682,8094,8468,8812,9097,9332,9512,9632,9681,9673,9598,9466,9269,9014,8708,8337,7907,7415,6870,6273, 5639,4954,4241,3513,2761,1989,1206,416,-369,-1166,-1965,-2736,-3501,-4240,-4950,-5625,-6266,-6853,-7407,-7911, -8365,-8774,-9139,-9442,-9685,-9868,-9987,-10031,-10014,-9927,-9789,-9577,-9314,-8993,-8638,-8216,-7756,-7254,-6704,-6131, -5522,-4883,-4231,-3562,-2890,-2212,-1531,-855,-180,501,1176,1832,2491,3134,3769,4377,4973,5547,6091,6610, 7110,7581,8012,8410,8769,9100,9370,9581,9743,9833,9866,9828,9735,9581,9362,9085,8756,8367,7915,7412, 6856,6249,5607,4916,4195,3451,2692,1918,1133,342,-439,-1226,-2013,-2782,-3537,-4267,-4970,-5634,-6261,-6841, -7382,-7860,-8301,-8692,-9031,-9315,-9538,-9696,-9799,-9831,-9791,-9697,-9531,-9314,-9035,-8700,-8326,-7905,-7440,-6928, -6383,-5805,-5201,-4568,-3920,-3256,-2579,-1908,-1232,-566,106,780,1443,2101,2751,3382,4011,4612,5195,5765, 6306,6819,7307,7756,8175,8553,8895,9188,9434,9627,9758,9820,9830,9760,9629,9441,9192,8876,8513,8089, 7616,7087,6503,5873,5206,4494,3755,2992,2222,1430,633,-157,-948,-1731,-2506,-3265,-4017,-4739,-5428,-6085, -6704,-7265,-7787,-8247,-8660,-9030,-9331,-9586,-9785,-9922,-9994,-9993,-9930,-9801,-9604,-9354,-9038,-8686,-8276,-7828, -7336,-6799,-6243,-5651,-5021,-4376,-3719,-3045,-2363,-1681,-1004,-328,340,1005,1660,2317,2956,3583,4197,4790, 5364,5930,6454,6946,7422,7852,8251,8607,8922,9198,9420,9580,9694,9739,9721,9629,9477,9262,8989,8646, 8268,7824,7326,6784,6195,5560,4884,4163,3416,2650,1874,1073,281,-506,-1289,-2071,-2836,-3586,-4312,-5020, -5702,-6346,-6938,-7489,-7992,-8436,-8832,-9166,-9456,-9685,-9852,-9966,-10024,-9997,-9923,-9773,-9568,-9294,-8968,-8594, -8171,-7708,-7213,-6675,-6110,-5517,-4893,-4251,-3592,-2921,-2238,-1561,-878,-208,457,1123,1770,2418,3058,3678, 4291,4879,5454,6005,6530,7017,7478,7900,8285,8618,8915,9175,9371,9509,9603,9628,9582,9465,9291,9048, 8743,8377,7956,7492,6972,6406,5794,5140,4453,3725,2965,2195,1400,605,-194,-986,-1765,-2539,-3294,-4031, -4743,-5437,-6100,-6722,-7295,-7830,-8311,-8732,-9096,-9404,-9663,-9857,-10001,-10076,-10098,-10036,-9930,-9750,-9521,-9220, -8858,-8447,-7999,-7501,-6974,-6413,-5827,-5211,-4577,-3913,-3246,-2564,-1872,-1183,-496,184,853,1521,2167,2817, 3447,4062,4666,5256,5815,6373,6870,7350,7803,8206,8577,8895,9177,9408,9588,9710,9777,9774,9717,9578, 9385,9122,8798,8413,7984,7495,6963,6383,5762,5099,4404,3673,2923,2142,1360,556,-240,-1029,-1802,-2572, -3310,-4033,-4731,-5402,-6050,-6656,-7211,-7730,-8193,-8593,-8939,-9232,-9470,-9636,-9748,-9806,-9798,-9732,-9604,-9410, -9160,-8846,-8471,-8056,-7598,-7095,-6563,-5997,-5412,-4798,-4163,-3508,-2848,-2167,-1486,-801,-126,547,1213,1868, 2508,3143,3767,4373,4967,5533,6082,6622,7112,7580,8009,8395,8736,9033,9285,9482,9627,9715,9753,9714, 9620,9452,9217,8926,8566,8144,7678,7151,6586,5972,5333,4643,3926,3182,2410,1617,810,0,-802,-1603, -2385,-3144,-3877,-4596,-5286,-5949,-6577,-7169,-7715,-8218,-8661,-9052,-9382,-9647,-9857,-10005,-10079,-10106,-10077,-9973, -9812,-9595,-9323,-8979,-8580,-8143,-7655,-7119,-6565,-5971,-5365,-4734,-4085,-3421,-2747,-2055,-1365,-679,16,693, 1370,2029,2665,3308,3927,4525,5119,5682,6223,6755,7243,7707,8128,8508,8843,9118,9352,9533,9665,9732, 9753,9704,9596,9406,9169,8860,8492,8054,7581,7047,6473,5854,5201,4523,3808,3064,2299,1521,726,-77, -877,-1663,-2428,-3179,-3900,-4598,-5264,-5902,-6507,-7073,-7592,-8064,-8486,-8849,-9151,-9386,-9574,-9683,-9738,-9732, -9667,-9542,-9366,-9120,-8829,-8470,-8055,-7607,-7106,-6569,-6008,-5408,-4795,-4166,-3514,-2859,-2188,-1505,-826,-139, 528,1204,1865,2514,3145,3767,4370,4961,5533,6084,6614,7124,7594,8038,8435,8794,9096,9356,9552,9710, 9797,9831,9806,9721,9574,9355,9076,8732,8326,7858,7340,6769,6156,5509,4827,4127,3385,2618,1840,1036, 231,-588,-1395,-2186,-2965,-3721,-4439,-5135,-5795,-6431,-7026,-7578,-8084,-8545,-8954,-9302,-9587,-9805,-9971,-10063, -10093,-10067,-9981,-9830,-9622,-9359,-9045,-8669,-8237,-7764,-7244,-6687,-6108,-5496,-4875,-4227,-3574,-2901,-2231,-1543, -865,-176,499,1174,1838,2496,3126,3746,4347,4929,5490,6030,6555,7054,7509,7946,8332,8672,8967,9202, 9391,9530,9603,9619,9578,9471,9305,9075,8779,8435,8012,7540,7011,6440,5820,5164,4482,3777,3040,2277, 1515,726,-67,-863,-1658,-2436,-3192,-3929,-4627,-5305,-5937,-6543,-7105,-7624,-8101,-8534,-8904,-9219,-9475,-9666, -9801,-9852,-9848,-9789,-9662,-9482,-9244,-8958,-8613,-8217,-7771,-7280,-6748,-6179,-5586,-4960,-4328,-3678,-3014,-2344, -1668,-994,-310,365,1045,1715,2378,3025,3653,4265,4864,5436,5991,6527,7034,7520,7965,8380,8746,9077, 9350,9560,9732,9834,9878,9859,9783,9646,9448,9186,8862,8480,8032,7537,6983,6382,5732,5048,4338,3609, 2853,2069,1292,504,-297,-1108,-1910,-2685,-3450,-4192,-4882,-5553,-6187,-6778,-7326,-7834,-8298,-8710,-9064,-9375, -9611,-9791,-9904,-9950,-9924,-9844,-9697,-9490,-9232,-8930,-8572,-8157,-7697,-7200,-6656,-6074,-5471,-4844,-4208,-3551, -2892,-2218,-1548,-868,-196,477,1145,1801,2460,3094,3714,4323,4897,5462,5999,6518,7007,7472,7891,8286, 8633,8942,9189,9387,9529,9610,9619,9581,9471,9312,9086,8808,8465,8067,7607,7086,6530,5913,5257,4562, 3851,3115,2356,1588,818,34,-756,-1547,-2329,-3092,-3841,-4555,-5236,-5887,-6495,-7061,-7579,-8053,-8476,-8866, -9186,-9456,-9658,-9811,-9882,-9898,-9837,-9721,-9540,-9315,-9026,-8695,-8306,-7865,-7384,-6870,-6306,-5714,-5098,-4459, -3805,-3144,-2464,-1794,-1115,-429,241,920,1579,2248,2904,3543,4163,4767,5355,5917,6451,6963,7451,7901, 8316,8704,9041,9334,9565,9746,9866,9930,9918,9855,9716,9537,9281,8973,8601,8184,7692,7163,6572,5942, 5263,4547,3817,3064,2286,1507,721,-70,-866,-1659,-2438,-3199,-3945,-4664,-5344,-5993,-6593,-7152,-7663,-8125, -8540,-8914,-9215,-9474,-9659,-9796,-9853,-9857,-9788,-9659,-9462,-9212,-8905,-8555,-8155,-7707,-7221,-6698,-6133,-5534, -4917,-4273,-3622,-2953,-2285,-1606,-949,-276,393,1054,1710,2356,2994,3622,4228,4820,5388,5936,6446,6934, 7393,7825,8208,8565,8872,9140,9340,9492,9579,9609,9570,9467,9309,9087,8807,8460,8071,7625,7112,6571, 5968,5316,4626,3914,3162,2407,1631,849,67,-721,-1504,-2279,-3048,-3792,-4515,-5217,-5882,-6508,-7082,-7619, -8103,-8529,-8912,-9245,-9516,-9730,-9890,-9995,-10026,-9990,-9879,-9723,-9486,-9212,-8879,-8489,-8064,-7597,-7082,-6541, -5961,-5349,-4714,-4058,-3404,-2727,-2037,-1368,-678,4,673,1341,1994,2645,3289,3914,4524,5125,5691,6233, 6751,7241,7696,8121,8499,8847,9143,9392,9584,9719,9793,9805,9743,9631,9441,9198,8889,8519,8103,7634, 7115,6543,5927,5268,4564,3833,3072,2299,1509,715,-75,-864,-1650,-2425,-3186,-3925,-4649,-5340,-5999,-6615, -7181,-7709,-8179,-8598,-8960,-9281,-9530,-9729,-9868,-9953,-9966,-9908,-9794,-9620,-9368,-9072,-8723,-8320,-7880,-7395, -6869,-6328,-5727,-5123,-4480,-3826,-3164,-2487,-1796,-1121,-446,231,898,1553,2206,2847,3480,4092,4687,5272, 5833,6357,6852,7325,7759,8155,8506,8823,9093,9314,9475,9576,9628,9605,9520,9376,9160,8882,8543,8150, 7709,7219,6676,6096,5459,4788,4077,3326,2570,1796,1001,214,-569,-1358,-2122,-2886,-3628,-4351,-5047,-5722, -6354,-6950,-7498,-7999,-8441,-8827,-9164,-9441,-9657,-9815,-9927,-9973,-9956,-9871,-9720,-9506,-9232,-8909,-8529,-8101, -7633,-7127,-6587,-6020,-5408,-4791,-4143,-3483,-2808,-2124,-1428,-750,-63,617,1282,1941,2582,3224,3859,4466, 5064,5646,6199,6729,7218,7678,8106,8489,8832,9130,9381,9581,9725,9811,9840,9799,9697,9521,9282,8989, 8618,8208,7738,7226,6658,6063,5410,4726,4001,3250,2476,1686,888,97,-708,-1487,-2264,-3021,-3764,-4471, -5162,-5822,-6447,-7030,-7567,-8059,-8488,-8858,-9183,-9437,-9636,-9782,-9861,-9883,-9850,-9748,-9586,-9358,-9064,-8717, -8326,-7881,-7408,-6878,-6327,-5741,-5132,-4507,-3852,-3195,-2520,-1837,-1146,-468,210,882,1546,2199,2837,3463, 4077,4672,5262,5822,6360,6869,7348,7790,8198,8564,8878,9150,9377,9543,9653,9713,9707,9635,9506,9306, 9045,8720,8328,7883,7395,6848,6263,5651,4986,4293,3562,2801,2025,1241,436,-359,-1157,-1932,-2701,-3448, -4167,-4863,-5542,-6171,-6778,-7340,-7856,-8322,-8732,-9080,-9371,-9603,-9769,-9885,-9934,-9932,-9866,-9733,-9547,-9296, -8984,-8617,-8202,-7740,-7239,-6698,-6133,-5545,-4927,-4297,-3642,-2978,-2302,-1615,-929,-247,436,1099,1769,2409, 3040,3664,4275,4866,5436,5997,6530,7027,7494,7924,8323,8669,8971,9221,9427,9578,9665,9695,9667,9577, 9422,9201,8917,8566,8154,7680,7172,6609,6007,5369,4698,3989,3245,2479,1708,912,107,-685,-1485,-2255, -3021,-3759,-4475,-5156,-5813,-6438,-7024,-7563,-8067,-8514,-8904,-9223,-9499,-9708,-9853,-9934,-9953,-9933,-9834,-9676, -9462,-9186,-8861,-8467,-8029,-7554,-7032,-6473,-5899,-5283,-4658,-4016,-3358,-2684,-2008,-1311,-628,55,743,1410, 2074,2718,3342,3953,4562,5140,5711,6254,6767,7260,7713,8133,8513,8835,9118,9347,9525,9640,9699,9706, 9660,9541,9358,9115,8806,8442,8011,7518,6986,6404,5779,5131,4441,3728,2982,2220,1436,641,-157,-956, -1746,-2520,-3272,-4006,-4702,-5368,-6007,-6605,-7176,-7690,-8173,-8598,-8963,-9273,-9517,-9699,-9819,-9868,-9873,-9808, -9685,-9504,-9274,-8980,-8631,-8218,-7777,-7282,-6753,-6181,-5598,-4984,-4346,-3698,-3049,-2377,-1705,-1020,-345,333, 1019,1678,2329,2965,3590,4192,4786,5362,5916,6446,6953,7421,7864,8264,8626,8935,9199,9411,9569,9655, 9697,9679,9598,9455,9252,8983,8654,8258,7801,7300,6745,6133,5498,4831,4124,3399,2642,1881,1092,301, -512,-1294,-2090,-2861,-3613,-4333,-5016,-5667,-6298,-6875,-7421,-7921,-8381,-8790,-9125,-9414,-9640,-9790,-9889,-9917, -9888,-9799,-9656,-9436,-9180,-8854,-8495,-8077,-7601,-7093,-6538,-5950,-5345,-4723,-4065,-3415,-2744,-2073,-1388,-702, -22,653,1333,1994,2654,3283,3905,4516,5093,5651,6202,6719,7217,7669,8096,8483,8834,9120,9365,9546, 9678,9739,9750,9704,9594,9418,9196,8901,8550,8134,7659,7125,6557,5930,5275,4590,3872,3135,2371,1603, 823,28,-774,-1560,-2340,-3106,-3847,-4553,-5234,-5880,-6484,-7041,-7562,-8044,-8483,-8857,-9180,-9446,-9645,-9779, -9854,-9852,-9799,-9687,-9507,-9272,-8995,-8651,-8261,-7826,-7348,-6822,-6266,-5673,-5060,-4428,-3783,-3119,-2454,-1786, -1111,-433,239,907,1576,2233,2882,3516,4120,4710,5287,5835,6371,6875,7348,7791,8199,8573,8893,9168, 9396,9559,9667,9703,9687,9614,9471,9268,9016,8704,8325,7882,7386,6845,6242,5601,4925,4223,3491,2746, 1976,1199,416,-378,-1177,-1959,-2738,-3496,-4230,-4934,-5604,-6236,-6822,-7367,-7872,-8327,-8738,-9094,-9392,-9632, -9807,-9921,-9968,-9943,-9866,-9720,-9517,-9258,-8956,-8589,-8182,-7727,-7229,-6692,-6119,-5513,-4883,-4236,-3572,-2907, -2235,-1561,-885,-201,475,1147,1813,2474,3107,3736,4345,4933,5502,6038,6561,7051,7518,7937,8331,8688, 8992,9235,9437,9582,9663,9673,9627,9521,9356,9122,8850,8507,8107,7643,7134,6572,5963,5300,4618,3903, 3157,2403,1623,846,59,-727,-1508,-2290,-3049,-3794,-4521,-5210,-5858,-6474,-7046,-7564,-8042,-8472,-8851,-9183, -9452,-9667,-9815,-9896,-9920,-9869,-9763,-9596,-9362,-9074,-8741,-8355,-7929,-7457,-6942,-6399,-5812,-5192,-4562,-3905, -3247,-2571,-1899,-1223,-544,130,803,1465,2125,2774,3419,4030,4635,5223,5783,6316,6829,7306,7756,8168, 8545,8871,9167,9399,9590,9702,9770,9759,9695,9565,9371,9116,8811,8449,8026,7545,7012,6431,5808,5137, 4433,3700,2945,2183,1396,619,-164,-956,-1735,-2509,-3266,-4009,-4730,-5406,-6046,-6652,-7210,-7711,-8177,-8584, -8950,-9252,-9493,-9693,-9833,-9881,-9879,-9812,-9687,-9493,-9241,-8942,-8590,-8189,-7741,-7255,-6725,-6170,-5574,-4951, -4315,-3653,-2985,-2305,-1634,-951,-279,400,1057,1716,2377,3020,3652,4262,4853,5437,5989,6504,7009,7467, 7888,8280,8630,8946,9198,9408,9569,9659,9697,9654,9552,9393,9170,8882,8555,8157,7715,7208,6655,6064, 5421,4732,4028,3285,2518,1741,956,171,-613,-1395,-2170,-2930,-3669,-4401,-5099,-5773,-6390,-6977,-7515,-8001, -8436,-8814,-9149,-9427,-9640,-9802,-9903,-9940,-9912,-9814,-9660,-9436,-9153,-8827,-8453,-8019,-7555,-7043,-6511,-5935, -5332,-4696,-4052,-3387,-2713,-2029,-1352,-668,5,676,1338,1999,2650,3297,3914,4523,5115,5690,6222,6747, 7235,7689,8104,8474,8813,9108,9352,9542,9682,9758,9770,9712,9597,9416,9173,8865,8515,8090,7629,7104, 6542,5934,5279,4585,3866,3112,2338,1550,762,-26,-798,-1582,-2345,-3098,-3839,-4554,-5241,-5888,-6496,-7070, -7588,-8063,-8474,-8844,-9159,-9407,-9598,-9741,-9817,-9826,-9779,-9662,-9490,-9247,-8949,-8599,-8211,-7760,-7279,-6751, -6204,-5626,-5011,-4379,-3732,-3061,-2385,-1696,-1026,-345,324,1007,1657,2313,2960,3583,4197,4802,5383,5946, 6473,6974,7446,7885,8279,8631,8944,9210,9420,9589,9703,9748,9732,9649,9501,9291,9016,8677,8287,7842, 7354,6812,6223,5595,4925,4218,3493,2721,1944,1151,357,-427,-1214,-1996,-2751,-3490,-4216,-4920,-5594,-6230, -6825,-7382,-7880,-8332,-8724,-9065,-9344,-9575,-9738,-9849,-9898,-9883,-9807,-9664,-9468,-9205,-8878,-8503,-8087,-7616, -7113,-6583,-6019,-5422,-4799,-4160,-3508,-2825,-2154,-1465,-789,-105,567,1237,1892,2542,3173,3796,4408,4992, 5571,6120,6636,7139,7597,8021,8399,8739,9031,9282,9472,9621,9710,9737,9698,9590,9421,9189,8894,8535, 8120,7657,7138,6576,5975,5335,4667,3945,3205,2434,1657,854,53,-734,-1514,-2291,-3037,-3775,-4486,-5173, -5826,-6447,-7030,-7567,-8057,-8489,-8866,-9192,-9450,-9656,-9785,-9881,-9898,-9854,-9756,-9598,-9377,-9099,-8754,-8366, -7926,-7440,-6923,-6377,-5800,-5197,-4565,-3922,-3264,-2589,-1908,-1228,-546,135,808,1473,2121,2764,3392,4007, 4599,5190,5749,6289,6803,7286,7735,8134,8502,8810,9087,9314,9479,9592,9648,9650,9583,9447,9249,8995, 8664,8278,7841,7352,6808,6225,5600,4940,4249,3519,2774,1997,1208,407,-390,-1184,-1966,-2740,-3480,-4206, -4905,-5570,-6211,-6817,-7374,-7900,-8359,-8776,-9123,-9418,-9651,-9823,-9932,-9987,-9971,-9907,-9779,-9593,-9346,-9034, -8670,-8250,-7789,-7282,-6741,-6173,-5581,-4967,-4324,-3673,-3006,-2327,-1642,-951,-265,412,1094,1756,2410,3046, 3676,4286,4876,5450,6012,6550,7042,7526,7961,8355,8711,9008,9259,9469,9614,9704,9747,9726,9634,9488, 9275,9005,8654,8256,7793,7290,6733,6128,5494,4830,4126,3398,2644,1871,1088,282,-507,-1294,-2072,-2834, -3561,-4275,-4953,-5612,-6232,-6814,-7354,-7856,-8293,-8687,-9020,-9290,-9499,-9642,-9728,-9758,-9721,-9627,-9475,-9267, -9004,-8676,-8294,-7870,-7392,-6879,-6326,-5750,-5150,-4536,-3892,-3245,-2578,-1906,-1230,-548,128,801,1472,2118, 2763,3392,4007,4603,5175,5733,6267,6783,7270,7723,8135,8511,8837,9111,9337,9514,9620,9686,9687,9621, 9501,9319,9071,8763,8387,7954,7460,6922,6335,5705,5045,4355,3628,2880,2114,1335,531,-274,-1071,-1870, -2648,-3408,-4146,-4851,-5524,-6170,-6775,-7339,-7868,-8355,-8773,-9145,-9458,-9712,-9899,-10028,-10085,-10090,-10022,-9907, -9723,-9492,-9198,-8849,-8454,-8006,-7504,-6975,-6406,-5810,-5197,-4557,-3904,-3244,-2574,-1889,-1206,-519,164,836, 1512,2169,2816,3449,4056,4655,5233,5785,6322,6829,7310,7753,8162,8532,8849,9111,9325,9489,9582,9630, 9615,9540,9408,9209,8944,8626,8239,7800,7295,6749,6150,5517,4850,4150,3428,2688,1929,1157,373,-426, -1219,-1995,-2765,-3504,-4225,-4903,-5552,-6174,-6750,-7284,-7788,-8240,-8637,-8981,-9264,-9491,-9646,-9739,-9768,-9741, -9643,-9499,-9284,-9030,-8711,-8347,-7919,-7466,-6950,-6403,-5827,-5221,-4594,-3956,-3300,-2639,-1966,-1295,-612,64, 738,1408,2079,2723,3357,3978,4577,5169,5720,6261,6781,7267,7721,8156,8537,8881,9171,9408,9604,9728, 9790,9803,9747,9633,9458,9226,8933,8581,8157,7690,7155,6578,5957,5290,4597,3880,3136,2373,1601,815, 22,-773,-1573,-2358,-3131,-3877,-4591,-5278,-5921,-6533,-7101,-7625,-8110,-8546,-8921,-9252,-9523,-9729,-9869,-9949, -9953,-9905,-9789,-9615,-9387,-9107,-8771,-8387,-7948,-7475,-6947,-6386,-5798,-5182,-4545,-3895,-3228,-2562,-1885,-1204, -530,147,821,1492,2152,2799,3438,4059,4651,5235,5786,6307,6826,7300,7747,8161,8536,8861,9139,9359, 9525,9631,9671,9662,9586,9452,9258,8997,8686,8309,7876,7391,6851,6257,5623,4950,4247,3524,2774,2008, 1236,457,-329,-1120,-1905,-2676,-3437,-4165,-4867,-5534,-6164,-6752,-7303,-7798,-8254,-8662,-9017,-9312,-9553,-9733, -9849,-9899,-9881,-9802,-9655,-9458,-9202,-8890,-8539,-8131,-7682,-7186,-6648,-6079,-5482,-4857,-4217,-3562,-2891,-2222, -1544,-869,-195,475,1142,1808,2464,3103,3731,4342,4935,5504,6045,6569,7060,7519,7943,8342,8690,9005, 9254,9453,9608,9692,9707,9672,9562,9399,9177,8883,8543,8154,7690,7188,6624,6015,5358,4666,3948,3213, 2444,1674,896,106,-677,-1467,-2247,-3009,-3763,-4486,-5176,-5837,-6454,-7032,-7558,-8037,-8475,-8858,-9186,-9459, -9682,-9841,-9930,-9949,-9907,-9806,-9638,-9412,-9131,-8796,-8423,-7987,-7517,-7011,-6455,-5869,-5260,-4627,-3973,-3305, -2628,-1954,-1269,-591,86,758,1428,2090,2747,3380,4010,4617,5204,5765,6298,6804,7287,7730,8142,8525, 8852,9141,9373,9557,9678,9737,9734,9672,9532,9341,9088,8780,8414,7993,7515,6992,6407,5788,5118,4420, 3683,2941,2167,1395,605,-171,-967,-1745,-2509,-3266,-4005,-4716,-5392,-6038,-6636,-7200,-7707,-8165,-8569,-8932, -9230,-9479,-9670,-9802,-9868,-9864,-9798,-9670,-9471,-9220,-8918,-8559,-8161,-7712,-7224,-6705,-6137,-5553,-4933,-4294, -3639,-2967,-2294,-1620,-940,-271,407,1071,1729,2378,3028,3651,4271,4860,5438,5994,6517,7008,7477,7902, 8299,8651,8964,9232,9444,9595,9695,9735,9705,9616,9452,9236,8947,8616,8224,7777,7273,6729,6131,5491, 4813,4093,3346,2584,1800,1015,219,-566,-1348,-2129,-2896,-3636,-4370,-5068,-5745,-6376,-6968,-7512,-8009,-8449, -8836,-9175,-9455,-9680,-9843,-9957,-9998,-9974,-9890,-9740,-9517,-9251,-8921,-8545,-8126,-7662,-7160,-6622,-6044,-5448, -4817,-4169,-3502,-2830,-2147,-1469,-778,-107,567,1231,1887,2534,3176,3795,4414,5005,5572,6114,6632,7121, 7574,7988,8367,8706,8994,9242,9431,9569,9650,9660,9609,9495,9309,9069,8759,8403,7988,7522,7002,6451, 5839,5190,4500,3778,3038,2266,1490,698,-82,-862,-1637,-2404,-3154,-3873,-4588,-5266,-5912,-6529,-7093,-7612, -8086,-8493,-8857,-9161,-9406,-9597,-9721,-9800,-9813,-9756,-9641,-9457,-9213,-8915,-8560,-8159,-7709,-7214,-6694,-6139, -5551,-4943,-4311,-3661,-2991,-2315,-1632,-955,-267,404,1073,1734,2382,3020,3657,4264,4870,5447,6008,6544, 7050,7522,7963,8355,8722,9034,9303,9524,9690,9798,9850,9839,9766,9617,9407,9139,8798,8411,7970,7477, 6931,6352,5719,5050,4340,3599,2835,2059,1264,465,-333,-1123,-1907,-2671,-3423,-4147,-4857,-5524,-6173,-6775, -7338,-7853,-8313,-8711,-9062,-9349,-9580,-9752,-9864,-9928,-9912,-9843,-9715,-9515,-9258,-8950,-8577,-8168,-7704,-7205, -6670,-6107,-5510,-4894,-4258,-3608,-2944,-2259,-1575,-895,-209,460,1134,1787,2429,3069,3696,4292,4894,5466, 6015,6543,7036,7500,7925,8307,8646,8941,9188,9384,9523,9612,9646,9608,9510,9344,9112,8816,8461,8049, 7587,7074,6513,5922,5278,4612,3901,3163,2403,1620,830,36,-757,-1537,-2310,-3063,-3790,-4490,-5178,-5825, -6442,-7017,-7553,-8042,-8471,-8840,-9160,-9413,-9611,-9747,-9823,-9845,-9802,-9694,-9533,-9306,-9025,-8684,-8288,-7853, -7368,-6843,-6295,-5714,-5104,-4483,-3833,-3181,-2506,-1829,-1143,-466,213,882,1552,2200,2836,3470,4078,4675, 5260,5816,6355,6868,7348,7796,8212,8577,8900,9176,9399,9571,9682,9740,9748,9682,9562,9366,9108,8792, 8407,7962,7475,6929,6347,5724,5064,4376,3647,2895,2127,1332,527,-270,-1067,-1857,-2629,-3383,-4110,-4809, -5484,-6127,-6729,-7297,-7823,-8296,-8716,-9071,-9380,-9614,-9792,-9912,-9969,-9968,-9904,-9778,-9600,-9355,-9056,-8702, -8290,-7839,-7341,-6804,-6238,-5645,-5025,-4394,-3742,-3084,-2409,-1726,-1039,-359,330,1004,1673,2322,2958,3584, 4198,4786,5368,5915,6448,6952,7423,7861,8260,8612,8919,9166,9372,9520,9615,9651,9626,9537,9392,9176, 8897,8560,8156,7698,7192,6632,6032,5400,4728,4029,3290,2547,1775,990,194,-600,-1391,-2169,-2936,-3668, -4380,-5060,-5712,-6321,-6908,-7445,-7944,-8383,-8776,-9106,-9379,-9587,-9733,-9809,-9840,-9805,-9708,-9552,-9341,-9072, -8746,-8368,-7936,-7461,-6945,-6385,-5809,-5201,-4575,-3931,-3286,-2615,-1945,-1261,-582,94,774,1445,2103,2745, 3376,3994,4593,5172,5739,6276,6795,7285,7742,8164,8546,8875,9165,9392,9572,9689,9751,9759,9709,9594, 9424,9177,8877,8510,8084,7594,7065,6482,5855,5200,4510,3788,3046,2282,1505,709,-95,-895,-1690,-2468, -3237,-3972,-4677,-5354,-5996,-6604,-7172,-7697,-8180,-8617,-8991,-9311,-9567,-9756,-9885,-9952,-9951,-9899,-9780,-9606, -9378,-9088,-8744,-8345,-7906,-7418,-6889,-6322,-5733,-5113,-4479,-3830,-3166,-2501,-1822,-1139,-455,226,904,1573, 2235,2880,3506,4125,4718,5286,5849,6379,6882,7361,7799,8210,8576,8888,9154,9363,9517,9611,9646,9627, 9547,9408,9204,8938,8615,8225,7773,7270,6721,6111,5482,4809,4104,3380,2632,1865,1098,308,-488,-1280, -2063,-2833,-3583,-4306,-4988,-5648,-6266,-6842,-7384,-7878,-8330,-8729,-9077,-9364,-9592,-9750,-9849,-9871,-9845,-9756, -9601,-9388,-9130,-8806,-8441,-8021,-7553,-7045,-6495,-5914,-5309,-4680,-4032,-3376,-2711,-2036,-1357,-676,2,681, 1354,2017,2672,3311,3934,4543,5130,5693,6240,6758,7249,7710,8137,8528,8878,9172,9426,9612,9749,9823, 9830,9788,9687,9512,9286,8997,8650,8243,7770,7250,6680,6058,5406,4716,3993,3249,2491,1719,941,149, -646,-1443,-2225,-2993,-3745,-4466,-5144,-5798,-6408,-6977,-7510,-7992,-8427,-8820,-9147,-9420,-9631,-9778,-9860,-9874, -9829,-9719,-9554,-9328,-9052,-8715,-8341,-7906,-7435,-6924,-6364,-5776,-5173,-4537,-3886,-3224,-2561,-1887,-1217,-531, 136,815,1479,2140,2791,3420,4037,4640,5212,5768,6302,6798,7277,7715,8122,8489,8816,9091,9318,9478, 9586,9627,9606,9526,9390,9185,8932,8613,8237,7800,7309,6766,6176,5535,4862,4151,3422,2676,1906,1130, 351,-434,-1221,-2008,-2781,-3536,-4272,-4977,-5641,-6278,-6865,-7408,-7908,-8364,-8764,-9119,-9414,-9650,-9833,-9947, -9994,-9976,-9892,-9750,-9540,-9278,-8972,-8602,-8195,-7737,-7242,-6706,-6129,-5527,-4897,-4248,-3588,-2914,-2243,-1559, -881,-197,468,1149,1813,2473,3115,3747,4356,4959,5529,6084,6604,7099,7569,7999,8392,8752,9059,9325, 9536,9686,9778,9803,9763,9668,9509,9285,9013,8677,8280,7831,7326,6769,6165,5514,4827,4116,3364,2608, 1839,1056,272,-515,-1296,-2078,-2843,-3595,-4320,-5020,-5677,-6306,-6880,-7413,-7901,-8337,-8725,-9065,-9337,-9566, -9726,-9822,-9856,-9823,-9721,-9567,-9344,-9070,-8742,-8364,-7945,-7481,-6975,-6436,-5859,-5253,-4628,-3979,-3318,-2649, -1973,-1304,-622,48,710,1375,2031,2679,3317,3932,4537,5121,5677,6217,6724,7197,7641,8045,8413,8747, 9025,9264,9444,9560,9615,9616,9538,9408,9213,8958,8645,8274,7848,7371,6843,6258,5638,4966,4266,3529, 2777,2009,1221,441,-345,-1132,-1909,-2683,-3434,-4172,-4891,-5572,-6211,-6821,-7376,-7890,-8346,-8755,-9114,-9418, -9660,-9854,-9979,-10044,-10044,-9980,-9851,-9657,-9405,-9095,-8735,-8332,-7882,-7384,-6864,-6302,-5703,-5082,-4439,-3775, -3106,-2426,-1743,-1065,-390,291,956,1622,2274,2922,3554,4168,4770,5356,5911,6444,6950,7416,7852,8253, 8607,8932,9201,9422,9591,9694,9738,9724,9634,9490,9275,9005,8676,8286,7849,7360,6820,6231,5603,4925, 4221,3479,2718,1943,1153,368,-413,-1195,-1961,-2729,-3468,-4197,-4893,-5573,-6202,-6796,-7336,-7838,-8277,-8663, -9003,-9289,-9509,-9684,-9787,-9831,-9819,-9732,-9586,-9381,-9108,-8787,-8413,-7991,-7529,-7026,-6494,-5925,-5328,-4702, -4064,-3405,-2735,-2051,-1371,-693,-15,660,1319,1975,2620,3256,3875,4490,5073,5650,6193,6713,7194,7646, 8063,8432,8772,9062,9296,9491,9623,9697,9711,9661,9539,9354,9104,8800,8434,8017,7541,7018,6454,5849, 5194,4498,3774,3025,2255,1464,667,-114,-903,-1686,-2453,-3208,-3942,-4653,-5338,-5993,-6606,-7187,-7705,-8187, -8599,-8967,-9279,-9529,-9712,-9851,-9928,-9942,-9889,-9776,-9601,-9365,-9064,-8711,-8309,-7857,-7374,-6851,-6297,-5710, -5098,-4465,-3811,-3146,-2467,-1783,-1100,-418,257,933,1592,2242,2881,3513,4132,4727,5310,5873,6409,6921, 7393,7841,8240,8600,8922,9200,9416,9594,9709,9769,9763,9696,9555,9361,9094,8771,8385,7950,7460,6925, 6342,5724,5060,4364,3633,2877,2101,1312,514,-276,-1061,-1836,-2593,-3341,-4065,-4761,-5434,-6075,-6678,-7237, -7746,-8204,-8609,-8953,-9246,-9474,-9641,-9759,-9808,-9802,-9734,-9605,-9413,-9156,-8842,-8478,-8063,-7604,-7104,-6570, -6010,-5414,-4798,-4165,-3513,-2841,-2167,-1485,-806,-126,550,1223,1877,2525,3156,3781,4386,4976,5546,6103, 6624,7123,7580,8007,8391,8730,9018,9260,9454,9596,9684,9707,9668,9570,9399,9170,8872,8512,8091,7620, 7104,6536,5931,5292,4610,3893,3153,2387,1603,806,6,-791,-1583,-2361,-3115,-3856,-4562,-5248,-5906,-6523, -7108,-7654,-8136,-8578,-8956,-9282,-9540,-9752,-9886,-9967,-9990,-9957,-9851,-9696,-9473,-9195,-8851,-8464,-8021,-7539, -7018,-6468,-5886,-5283,-4651,-4008,-3343,-2678,-1992,-1309,-624,48,735,1397,2049,2691,3319,3936,4535,5115, 5679,6225,6739,7221,7670,8088,8457,8780,9059,9290,9460,9588,9647,9654,9602,9478,9291,9048,8734,8358, 7925,7443,6910,6332,5713,5061,4371,3658,2913,2147,1366,565,-229,-1018,-1801,-2571,-3314,-4045,-4737,-5403, -6040,-6642,-7200,-7720,-8187,-8607,-8967,-9265,-9505,-9686,-9794,-9856,-9850,-9789,-9661,-9482,-9242,-8943,-8585,-8178, -7724,-7224,-6688,-6124,-5524,-4912,-4277,-3630,-2964,-2295,-1610,-931,-242,433,1114,1772,2433,3073,3699,4308, 4895,5467,6026,6556,7061,7533,7971,8366,8720,9019,9274,9478,9623,9715,9744,9720,9629,9476,9261,8983, 8639,8239,7774,7259,6700,6091,5445,4772,4067,3332,2579,1803,1010,208,-596,-1389,-2174,-2938,-3685,-4399, -5095,-5750,-6369,-6954,-7500,-8005,-8452,-8855,-9189,-9472,-9689,-9836,-9923,-9957,-9917,-9836,-9680,-9473,-9205,-8880, -8502,-8080,-7605,-7089,-6535,-5949,-5347,-4725,-4084,-3429,-2759,-2084,-1410,-722,-43,637,1308,1965,2616,3248, 3865,4461,5042,5597,6142,6661,7151,7610,8027,8414,8747,9034,9273,9455,9578,9648,9653,9606,9493,9320, 9085,8795,8433,8019,7542,7008,6438,5815,5162,4487,3776,3036,2279,1511,723,-70,-869,-1650,-2430,-3188, -3917,-4628,-5298,-5931,-6535,-7094,-7616,-8095,-8521,-8894,-9206,-9461,-9662,-9779,-9844,-9843,-9781,-9664,-9488,-9254, -8967,-8627,-8230,-7791,-7300,-6771,-6205,-5615,-4997,-4365,-3712,-3053,-2380,-1703,-1023,-345,338,1016,1688,2352, 2996,3630,4240,4842,5413,5971,6507,7008,7487,7931,8338,8705,9024,9289,9511,9663,9759,9800,9775,9694, 9551,9345,9084,8759,8370,7928,7424,6866,6267,5623,4945,4241,3506,2762,1993,1217,422,-373,-1173,-1958, -2735,-3489,-4224,-4917,-5585,-6209,-6797,-7338,-7843,-8296,-8705,-9061,-9352,-9588,-9759,-9864,-9897,-9873,-9789,-9642, -9436,-9178,-8870,-8503,-8093,-7636,-7125,-6585,-6008,-5401,-4775,-4131,-3469,-2807,-2135,-1460,-784,-105,568,1236, 1906,2558,3197,3817,4419,5006,5569,6107,6624,7117,7578,8003,8391,8734,9036,9286,9476,9612,9683,9702, 9652,9547,9378,9148,8862,8525,8115,7657,7133,6562,5951,5294,4605,3892,3148,2395,1625,845,56,-732, -1528,-2306,-3073,-3815,-4537,-5224,-5869,-6478,-7052,-7573,-8052,-8482,-8867,-9198,-9465,-9684,-9830,-9905,-9924,-9874, -9764,-9593,-9364,-9086,-8757,-8378,-7943,-7471,-6953,-6403,-5812,-5202,-4570,-3919,-3255,-2591,-1914,-1239,-565,113, 783,1451,2113,2767,3399,4018,4623,5206,5761,6292,6796,7279,7729,8138,8504,8839,9114,9342,9518,9631, 9679,9668,9590,9454,9252,8996,8687,8316,7883,7399,6860,6270,5634,4957,4251,3528,2770,2005,1225,439, -343,-1134,-1923,-2689,-3452,-4184,-4892,-5564,-6207,-6798,-7347,-7848,-8304,-8709,-9072,-9369,-9614,-9800,-9916,-9966, -9956,-9877,-9738,-9534,-9273,-8964,-8608,-8196,-7742,-7248,-6706,-6142,-5539,-4913,-4265,-3604,-2933,-2258,-1576,-899, -223,452,1122,1783,2442,3084,3720,4333,4926,5499,6042,6565,7059,7522,7954,8345,8701,9020,9278,9489, 9645,9731,9760,9725,9624,9469,9244,8962,8629,8241,7791,7291,6738,6134,5492,4808,4092,3355,2594,1824, 1040,257,-521,-1305,-2082,-2845,-3593,-4316,-5014,-5676,-6299,-6876,-7410,-7892,-8328,-8711,-9045,-9322,-9541,-9699, -9797,-9828,-9794,-9697,-9532,-9315,-9036,-8703,-8330,-7906,-7443,-6934,-6388,-5813,-5210,-4580,-3936,-3272,-2597,-1922, -1242,-568,102,776,1437,2100,2745,3375,4008,4608,5198,5762,6304,6812,7300,7742,8156,8529,8867,9151, 9390,9577,9704,9766,9772,9703,9573,9384,9133,8815,8456,8032,7556,7034,6455,5837,5169,4467,3737,2979, 2209,1427,633,-153,-939,-1719,-2488,-3241,-3984,-4700,-5383,-6035,-6648,-7213,-7730,-8190,-8605,-8969,-9270,-9520, -9715,-9852,-9923,-9921,-9865,-9738,-9548,-9304,-8991,-8646,-8241,-7792,-7308,-6781,-6224,-5636,-5016,-4373,-3722,-3050, -2372,-1692,-1011,-333,337,1000,1659,2313,2956,3581,4198,4792,5368,5930,6456,6950,7422,7848,8244,8599, 8913,9180,9393,9553,9661,9700,9682,9592,9438,9223,8947,8606,8224,7779,7281,6739,6154,5525,4849,4137, 3396,2635,1862,1069,279,-505,-1285,-2064,-2822,-3566,-4287,-4992,-5666,-6304,-6896,-7445,-7941,-8386,-8779,-9109, -9395,-9620,-9786,-9896,-9948,-9923,-9850,-9699,-9493,-9225,-8901,-8529,-8107,-7642,-7148,-6611,-6045,-5453,-4831,-4191, -3533,-2860,-2181,-1499,-817,-142,524,1192,1842,2490,3129,3747,4360,4947,5523,6067,6591,7078,7533,7954, 8332,8663,8952,9203,9392,9526,9614,9633,9586,9468,9294,9051,8746,8381,7961,7491,6972,6410,5799,5149, 4463,3742,2988,2221,1433,641,-153,-945,-1723,-2498,-3246,-3984,-4693,-5379,-6038,-6657,-7229,-7763,-8240,-8664, -9036,-9342,-9598,-9791,-9935,-10009,-10030,-9976,-9875,-9695,-9468,-9176,-8824,-8420,-7977,-7483,-6963,-6406,-5825,-5212, -4582,-3929,-3261,-2584,-1898,-1212,-523,153,826,1492,2140,2789,3419,4033,4635,5222,5784,6330,6830,7310, 7759,8156,8522,8840,9115,9339,9509,9627,9687,9680,9619,9480,9286,9022,8698,8313,7883,7391,6860,6282, 5660,5000,4307,3581,2834,2058,1277,479,-311,-1098,-1871,-2637,-3373,-4093,-4789,-5454,-6093,-6694,-7250,-7763, -8221,-8622,-8969,-9259,-9490,-9655,-9766,-9821,-9811,-9740,-9613,-9418,-9168,-8856,-8485,-8073,-7616,-7113,-6581,-6016, -5429,-4811,-4177,-3523,-2865,-2178,-1499,-814,-135,541,1209,1867,2511,3149,3773,4380,4971,5540,6089,6620, 7114,7579,8007,8389,8735,9027,9274,9468,9609,9694,9730,9690,9594,9427,9195,8905,8548,8130,7667,7145, 6582,5971,5335,4652,3937,3199,2438,1647,850,47,-749,-1544,-2324,-3081,-3814,-4528,-5215,-5869,-6494,-7079, -7622,-8120,-8560,-8949,-9281,-9541,-9753,-9896,-9976,-10003,-9968,-9868,-9710,-9493,-9223,-8885,-8493,-8059,-7578,-7047, -6497,-5909,-5304,-4676,-4030,-3371,-2697,-2009,-1323,-638,52,732,1406,2065,2703,3345,3964,4560,5153,5714, 6254,6781,7263,7724,8142,8517,8849,9122,9351,9528,9651,9716,9730,9674,9562,9375,9132,8824,8453,8018, 7543,7006,6434,5814,5161,4483,3767,3025,2266,1489,696,-99,-896,-1680,-2445,-3197,-3914,-4614,-5277,-5913, -6513,-7076,-7594,-8065,-8482,-8846,-9151,-9385,-9573,-9681,-9739,-9734,-9666,-9543,-9365,-9122,-8832,-8476,-8069,-7623, -7127,-6591,-6033,-5435,-4822,-4194,-3544,-2888,-2219,-1537,-858,-173,494,1171,1834,2483,3118,3740,4342,4934, 5504,6053,6580,7086,7553,7993,8387,8742,9044,9300,9494,9647,9732,9762,9733,9644,9499,9280,9004,8659, 8256,7792,7280,6712,6104,5459,4783,4080,3342,2580,1808,1011,214,-594,-1397,-2186,-2960,-3712,-4427,-5121, -5781,-6408,-6999,-7545,-8048,-8504,-8907,-9253,-9539,-9756,-9919,-10010,-10040,-10013,-9925,-9775,-9569,-9307,-8992,-8618, -8192,-7722,-7206,-6653,-6078,-5466,-4845,-4199,-3545,-2876,-2205,-1520,-842,-153,521,1195,1860,2518,3149,3771, 4369,4953,5516,6055,6578,7071,7526,7959,8343,8680,8972,9209,9393,9527,9597,9608,9564,9454,9287,9054, 8759,8411,7993,7521,6994,6422,5806,5152,4470,3764,3028,2270,1507,721,-67,-857,-1647,-2422,-3180,-3915, -4611,-5289,-5921,-6524,-7086,-7602,-8079,-8506,-8875,-9192,-9449,-9639,-9774,-9828,-9829,-9769,-9643,-9466,-9229,-8941, -8601,-8208,-7767,-7279,-6752,-6185,-5597,-4976,-4343,-3692,-3031,-2362,-1686,-1013,-329,344,1024,1694,2355,2999, 3630,4244,4839,5411,5965,6498,7002,7480,7923,8333,8695,9023,9292,9502,9667,9764,9807,9784,9706,9564, 9367,9102,8780,8396,7950,7457,6907,6306,5662,4981,4274,3547,2792,2014,1237,452,-340,-1143,-1940,-2714, -3473,-4210,-4900,-5572,-6201,-6789,-7335,-7839,-8300,-8708,-9059,-9367,-9602,-9778,-9890,-9936,-9913,-9831,-9685,-9480, -9222,-8919,-8560,-8148,-7692,-7194,-6654,-6076,-5477,-4850,-4214,-3557,-2896,-2224,-1552,-871,-201,472,1143,1801, 2461,3095,3718,4328,4905,5471,6009,6528,7016,7476,7897,8288,8632,8938,9183,9380,9520,9598,9607,9568, 9457,9297,9069,8789,8446,8046,7587,7069,6512,5898,5247,4554,3841,3105,2348,1581,811,27,-757,-1543, -2321,-3083,-3832,-4542,-5223,-5876,-6481,-7046,-7565,-8039,-8463,-8848,-9169,-9437,-9641,-9791,-9865,-9884,-9828,-9713, -9535,-9311,-9022,-8690,-8304,-7867,-7391,-6877,-6318,-5730,-5117,-4480,-3827,-3167,-2490,-1819,-1140,-455,214,892, 1555,2220,2875,3512,4133,4736,5324,5883,6416,6926,7409,7856,8268,8649,8980,9269,9497,9675,9794,9850, 9839,9772,9631,9449,9194,8884,8511,8091,7603,7076,6487,5860,5187,4474,3745,2992,2219,1441,657,-131, -922,-1709,-2484,-3244,-3984,-4701,-5377,-6023,-6620,-7179,-7687,-8145,-8556,-8926,-9225,-9481,-9664,-9798,-9855,-9857, -9787,-9659,-9461,-9214,-8908,-8557,-8156,-7710,-7224,-6701,-6138,-5541,-4925,-4282,-3631,-2960,-2293,-1614,-951,-277, 391,1056,1712,2361,3000,3627,4235,4830,5398,5947,6459,6949,7407,7838,8218,8574,8879,9144,9344,9496, 9581,9610,9571,9469,9309,9088,8805,8461,8071,7624,7116,6575,5974,5325,4639,3928,3181,2425,1650,872, 89,-695,-1475,-2249,-3013,-3757,-4478,-5178,-5839,-6464,-7039,-7575,-8058,-8485,-8866,-9200,-9470,-9683,-9843,-9947, -9978,-9943,-9836,-9679,-9447,-9172,-8842,-8454,-8029,-7562,-7051,-6511,-5934,-5325,-4693,-4038,-3383,-2707,-2019,-1348, -659,20,690,1358,2014,2664,3307,3931,4540,5140,5704,6247,6764,7251,7702,8123,8500,8843,9133,9379, 9568,9701,9772,9780,9718,9602,9413,9169,8859,8490,8074,7603,7084,6514,5898,5241,4542,3813,3056,2283, 1497,704,-81,-870,-1652,-2424,-3182,-3921,-4640,-5327,-5982,-6599,-7162,-7689,-8159,-8575,-8937,-9254,-9502,-9700, -9837,-9920,-9932,-9876,-9761,-9588,-9337,-9043,-8694,-8294,-7854,-7370,-6847,-6304,-5707,-5103,-4461,-3809,-3147,-2470, -1782,-1106,-428,246,913,1570,2222,2865,3497,4108,4705,5289,5847,6373,6869,7340,7773,8166,8517,8831, 9097,9316,9476,9576,9626,9602,9516,9371,9155,8878,8540,8147,7705,7213,6671,6092,5456,4788,4080,3332, 2578,1804,1011,226,-556,-1343,-2106,-2869,-3609,-4331,-5026,-5696,-6327,-6923,-7468,-7969,-8410,-8798,-9135,-9413, -9628,-9786,-9897,-9941,-9924,-9839,-9693,-9478,-9206,-8886,-8507,-8080,-7615,-7109,-6571,-6005,-5396,-4779,-4133,-3473, -2799,-2116,-1422,-744,-55,622,1288,1948,2591,3232,3864,4472,5069,5650,6201,6729,7218,7677,8103,8483, 8823,9120,9367,9564,9706,9789,9815,9773,9670,9493,9253,8961,8590,8181,7710,7197,6631,6036,5383,4700, 3980,3232,2461,1672,876,85,-716,-1493,-2268,-3024,-3764,-4471,-5158,-5816,-6440,-7021,-7556,-8047,-8474,-8846, -9168,-9423,-9620,-9766,-9843,-9865,-9830,-9730,-9567,-9340,-9048,-8704,-8314,-7870,-7398,-6870,-6322,-5736,-5128,-4505, -3851,-3194,-2520,-1839,-1150,-471,206,878,1542,2196,2834,3461,4075,4669,5258,5818,6355,6864,7341,7782, 8187,8551,8865,9135,9359,9523,9633,9690,9682,9610,9481,9281,9020,8695,8305,7860,7371,6826,6242,5630, 4965,4274,3545,2787,2012,1230,428,-364,-1160,-1935,-2702,-3448,-4166,-4861,-5537,-6165,-6769,-7330,-7844,-8309, -8718,-9066,-9358,-9589,-9755,-9868,-9919,-9916,-9849,-9716,-9529,-9280,-8968,-8604,-8188,-7729,-7227,-6687,-6123,-5535, -4917,-4287,-3633,-2969,-2293,-1607,-921,-240,442,1107,1777,2419,3052,3675,4286,4876,5447,6006,6537,7034, 7500,7930,8326,8671,8971,9221,9423,9572,9658,9688,9657,9566,9411,9189,8905,8555,8144,7672,7163,6600, 5998,5362,4690,3983,3241,2478,1708,913,110,-680,-1478,-2249,-3014,-3750,-4464,-5146,-5802,-6425,-7009,-7547, -8050,-8495,-8884,-9205,-9479,-9689,-9833,-9915,-9935,-9913,-9814,-9657,-9444,-9170,-8844,-8453,-8017,-7543,-7023,-6466, -5892,-5278,-4653,-4013,-3355,-2682,-2006,-1311,-629,51,739,1406,2070,2714,3339,3951,4557,5135,5706,6247, 6760,7251,7703,8122,8499,8821,9103,9331,9507,9622,9679,9685,9635,9516,9333,9090,8780,8416,7985,7494, 6962,6380,5756,5108,4418,3705,2962,2201,1417,624,-171,-968,-1758,-2531,-3281,-4015,-4710,-5376,-6014,-6611, -7179,-7694,-8174,-8598,-8963,-9272,-9517,-9698,-9817,-9867,-9871,-9805,-9683,-9503,-9272,-8978,-8629,-8218,-7777,-7283, -6754,-6184,-5600,-4986,-4348,-3701,-3051,-2378,-1706,-1022,-346,330,1016,1675,2327,2965,3590,4193,4786,5363, 5917,6445,6950,7420,7861,8261,8621,8929,9193,9402,9560,9645,9686,9667,9584,9440,9237,8967,8639,8244, 7787,7287,6731,6121,5486,4820,4113,3389,2633,1873,1085,295,-513,-1295,-2090,-2859,-3611,-4330,-5013,-5664, -6294,-6870,-7416,-7915,-8374,-8781,-9117,-9405,-9630,-9781,-9880,-9908,-9879,-9790,-9646,-9428,-9171,-8847,-8487,-8070, -7596,-7089,-6535,-5948,-5344,-4722,-4065,-3416,-2744,-2073,-1389,-704,-24,649,1329,1990,2650,3280,3902,4512, 5089,5647,6198,6714,7211,7662,8088,8474,8823,9110,9353,9533,9665,9725,9736,9689,9578,9402,9179,8883, 8532,8117,7643,7110,6541,5915,5261,4576,3859,3123,2359,1591,812,19,-780,-1566,-2345,-3110,-3851,-4556, -5237,-5882,-6485,-7041,-7563,-8043,-8480,-8855,-9176,-9442,-9641,-9775,-9849,-9848,-9795,-9682,-9503,-9269,-8991,-8647, -8258,-7823,-7345,-6820,-6264,-5672,-5059,-4426,-3782,-3118,-2453,-1785,-1109,-431,239,908,1577,2233,2883,3517, 4123,4713,5290,5838,6373,6877,7350,7792,8199,8572,8892,9165,9393,9555,9663,9699,9682,9608,9465,9262, 9010,8697,8318,7876,7380,6840,6238,5597,4922,4220,3488,2744,1974,1198,415,-376,-1174,-1955,-2734,-3491, -4225,-4928,-5598,-6229,-6815,-7359,-7864,-8319,-8729,-9084,-9382,-9622,-9797,-9911,-9958,-9934,-9857,-9710,-9508,-9249, -8947,-8581,-8174,-7720,-7222,-6685,-6113,-5508,-4879,-4232,-3569,-2904,-2232,-1558,-881,-198,476,1148,1814,2474, 3108,3736,4346,4933,5503,6039,6561,7050,7517,7936,8329,8685,8989,9232,9434,9578,9658,9668,9622,9515, 9351,9116,8843,8500,8101,7637,7128,6567,5957,5295,4614,3898,3153,2398,1619,842,56,-729,-1508,-2290, -3049,-3794,-4520,-5209,-5857,-6473,-7045,-7563,-8040,-8470,-8849,-9180,-9449,-9664,-9812,-9892,-9917,-9866,-9761,-9594, -9359,-9072,-8739,-8353,-7927,-7455,-6941,-6398,-5812,-5192,-4562,-3905,-3247,-2571,-1899,-1222,-544,128,801,1463, 2123,2772,3417,4029,4634,5222,5781,6314,6827,7304,7754,8165,8542,8868,9163,9395,9586,9697,9765,9754, 9690,9559,9365,9111,8806,8444,8021,7540,7007,6426,5803,5132,4429,3696,2942,2180,1393,616,-166,-957, -1736,-2509,-3266,-4009,-4730,-5405,-6045,-6651,-7209,-7709,-8176,-8583,-8949,-9250,-9491,-9691,-9831,-9879,-9877,-9810, -9686,-9491,-9239,-8941,-8589,-8187,-7740,-7254,-6724,-6169,-5573,-4950,-4315,-3652,-2984,-2304,-1634,-950,-278,399, 1056,1715,2376,3019,3650,4261,4852,5436,5988,6503,7008,7465,7886,8279,8629,8944,9197,9407,9567,9658, 9696,9653,9550,9392,9168,8880,8554,8156,7714,7206,6654,6063,5419,4730,4027,3284,2517,1740,955,4, -142,-758,-1465,-1999,-2069,-1788,-1203,-271,896,1997,2828,3423,3967,4449,5001,5727,6708,7841,8969,9959, 10716,11153,11282,11162,10923,10644,10360,10014,9556,8920,8058,6961,5683,4287,2855,1456,156,-993,-1996,-2889, -3714,-4543,-5398,-6320,-7297,-8278,-9207,-10038,-10752,-11321,-11729,-12021,-12257,-12503,-12748,-12976,-13183,-13353,-13438,-13354, -13079,-12647,-12102,-11454,-10716,-9951,-9206,-8462,-7653,-6748,-5780,-4751,-3650,-2509,-1376,-319,632,1472,2213,2872, 3457,4008,4577,5218,5922,6669,7459,8278,9065,9745,10285,10715,11044,11274,11426,11548,11684,11806,11872,11834, 11679,11364,10877,10224,9466,8663,7852,7033,6220,5423,4622,3750,2759,1677,526,-664,-1864,-3014,-4041,-4918, -5662,-6314,-6900,-7451,-8010,-8612,-9244,-9861,-10404,-10864,-11218,-11435,-11479,-11386,-11217,-11010,-10746,-10420,-10031,-9575, -8993,-8259,-7404,-6484,-5551,-4621,-3722,-2899,-2173,-1528,-960,-451,-11,368,686,947,1139,1284,1387,1472, 1555,1638,1738,1877,2077,2351,2711,3182,3774,4466,5230,6023,6822,7610,8361,9060,9720,10351,10960,11504, 11939,12246,12395,12372,12139,11707,11158,10556,9909,9238,8570,7902,7197,6407,5520,4529,3463,2346,1202,86, -945,-1862,-2680,-3418,-4111,-4795,-5497,-6248,-7057,-7879,-8669,-9406,-10058,-10595,-11004,-11326,-11599,-11811,-11974,-12092, -12182,-12221,-12144,-11906,-11515,-10984,-10341,-9592,-8765,-7929,-7098,-6270,-5443,-4613,-3787,-2947,-2081,-1198,-337,480, 1255,2006,2716,3381,4002,4636,5313,6021,6753,7528,8327,9130,9881,10541,11086,11534,11868,12091,12235,12317, 12335,12260,12082,11797,11392,10835,10132,9310,8418,7489,6552,5627,4741,3909,3096,2261,1389,474,-484,-1491, -2504,-3497,-4435,-5305,-6106,-6833,-7505,-8153,-8808,-9489,-10164,-10804,-11386,-11874,-12242,-12451,-12514,-12457,-12307,-12088, -11791,-11428,-10999,-10483,-9833,-9050,-8148,-7159,-6112,-5059,-4037,-3103,-2258,-1513,-851,-289,179,570,899,1171, 1381,1545,1675,1784,1886,2001,2145,2330,2570,2876,3266,3751,4345,5003,5717,6465,7216,7960,8662,9320, 9939,10518,11036,11465,11776,11959,11973,11799,11448,10949,10353,9682,8958,8217,7473,6718,5933,5088,4176,3203, 2176,1113,57,-964,-1914,-2789,-3580,-4305,-4990,-5661,-6345,-7050,-7764,-8478,-9165,-9791,-10319,-10725,-11016,-11210, -11310,-11344,-11334,-11282,-11180,-11011,-10750,-10377,-9896,-9292,-8573,-7768,-6923,-6077,-5246,-4441,-3672,-2948,-2247,-1552, -865,-177,510,1188,1863,2526,3164,3783,4410,5057,5737,6469,7242,8064,8912,9749,10542,11257,11859,12343, 12689,12913,13019,13028,12947,12773,12502,12131,11644,11041,10319,9494,8586,7608,6588,5562,4546,3535,2529,1528, 525,-483,-1519,-2553,-3569,-4552,-5484,-6358,-7159,-7902,-8601,-9265,-9906,-10520,-11096,-11635,-12117,-12513,-12793,-12958, -13007,-12949,-12788,-12538,-12199,-11779,-11268,-10653,-9920,-9090,-8170,-7185,-6158,-5130,-4138,-3209,-2360,-1606,-958,-412, 48,425,731,971,1164,1321,1469,1607,1749,1906,2104,2352,2665,3049,3524,4083,4717,5414,6153,6912, 7657,8360,9010,9607,10144,10601,10966,11231,11384,11412,11296,11037,10637,10125,9514,8831,8095,7332,6538,5718, 4864,3978,3055,2096,1101,99,-898,-1870,-2813,-3717,-4566,-5366,-6130,-6858,-7553,-8215,-8838,-9423,-9949,-10401, -10776,-11068,-11281,-11407,-11442,-11410,-11297,-11100,-10815,-10429,-9938,-9359,-8691,-7938,-7137,-6314,-5490,-4686,-3911,-3173, -2474,-1803,-1155,-533,68,658,1246,1845,2442,3025,3615,4233,4874,5550,6265,7026,7835,8678,9530,10370, 11163,11872,12472,12956,13321,13579,13720,13753,13685,13518,13230,12821,12296,11663,10937,10127,9250,8347,7428,6502, 5559,4598,3611,2595,1544,474,-611,-1677,-2720,-3719,-4674,-5574,-6418,-7221,-7999,-8744,-9448,-10107,-10730,-11297, -11791,-12194,-12495,-12691,-12783,-12770,-12646,-12417,-12083,-11645,-11099,-10451,-9708,-8868,-7947,-6972,-5968,-4957,-3969,-3033, -2164,-1386,-707,-123,366,773,1112,1396,1650,1880,2100,2319,2540,2781,3038,3332,3683,4100,4586,5132, 5739,6395,7070,7742,8375,8966,9502,9969,10358,10664,10874,10972,10946,10786,10490,10066,9529,8890,8188,7434, 6645,5825,4970,4098,3190,2252,1281,288,-716,-1703,-2673,-3610,-4514,-5369,-6186,-6967,-7730,-8462,-9154,-9809, -10410,-10944,-11389,-11741,-12006,-12183,-12269,-12269,-12196,-12051,-11831,-11517,-11110,-10609,-10009,-9326,-8564,-7755,-6930,-6100, -5283,-4502,-3767,-3081,-2447,-1851,-1290,-746,-214,315,849,1384,1929,2485,3063,3669,4302,4974,5708,6500, 7336,8209,9088,9953,10768,11492,12109,12609,12990,13245,13373,13392,13305,13103,12770,12327,11776,11122,10371,9545, 8675,7776,6855,5920,4964,4002,3025,2027,1007,-21,-1055,-2064,-3053,-4002,-4900,-5744,-6550,-7316,-8056,-8758, -9429,-10063,-10648,-11165,-11599,-11938,-12182,-12323,-12354,-12284,-12111,-11844,-11470,-10981,-10385,-9683,-8877,-7986,-7030,-6039, -5035,-4041,-3078,-2162,-1317,-551,136,732,1245,1680,2052,2373,2667,2940,3209,3488,3786,4105,4454,4834, 5265,5744,6278,6855,7469,8105,8733,9329,9875,10363,10773,11105,11348,11502,11563,11509,11332,11033,10610,10076, 9439,8723,7953,7147,6312,5452,4566,3661,2720,1744,742,-272,-1286,-2276,-3240,-4159,-5029,-5853,-6644,-7405, -8139,-8833,-9496,-10118,-10676,-11156,-11549,-11848,-12053,-12162,-12184,-12126,-11994,-11788,-11493,-11105,-10634,-10070,-9421,-8703, -7937,-7154,-6364,-5589,-4845,-4142,-3484,-2869,-2296,-1766,-1268,-789,-318,140,611,1094,1604,2146,2714,3322, 3975,4670,5423,6220,7050,7900,8738,9546,10278,10917,11445,11856,12148,12316,12378,12342,12192,11927,11538,11038, 10423,9702,8900,8041,7153,6244,5320,4396,3464,2522,1553,562,-453,-1471,-2488,-3479,-4432,-5332,-6178,-6978, -7738,-8463,-9159,-9822,-10462,-11053,-11583,-12037,-12411,-12689,-12869,-12941,-12909,-12786,-12567,-12248,-11819,-11281,-10637,-9889, -9036,-8105,-7119,-6101,-5080,-4072,-3105,-2191,-1339,-557,150,778,1331,1834,2278,2685,3069,3439,3822,4210, 4614,5040,5498,5987,6518,7085,7688,8320,8967,9606,10209,10753,11235,11631,11937,12150,12272,12307,12240,12062, 11774,11364,10845,10224,9507,8733,7918,7075,6213,5344,4461,3562,2636,1681,711,-266,-1243,-2195,-3113,-3978, -4796,-5560,-6282,-6968,-7618,-8238,-8826,-9366,-9850,-10256,-10573,-10796,-10918,-10936,-10864,-10709,-10470,-10152,-9746,-9266, -8715,-8079,-7381,-6639,-5872,-5098,-4340,-3608,-2921,-2288,-1701,-1163,-674,-223,188,583,964,1336,1725,2138, 2585,3069,3597,4176,4802,5478,6203,6965,7755,8556,9337,10072,10732,11292,11744,12069,12270,12356,12330,12199, 11954,11600,11140,10567,9893,9131,8286,7399,6476,5533,4585,3640,2686,1723,736,-267,-1286,-2306,-3325,-4314, -5272,-6165,-7014,-7815,-8567,-9278,-9958,-10608,-11227,-11797,-12307,-12748,-13097,-13344,-13487,-13520,-13450,-13284,-13016,-12650, -12180,-11612,-10936,-10163,-9298,-8367,-7394,-6408,-5421,-4466,-3561,-2716,-1933,-1220,-579,-5,517,987,1421,1817, 2211,2593,2991,3404,3845,4318,4817,5361,5936,6545,7183,7834,8482,9102,9672,10169,10587,10906,11121,11237, 11265,11191,11018,10749,10374,9897,9318,8646,7897,7096,6257,5392,4518,3647,2766,1871,966,45,-884,-1823, -2752,-3652,-4515,-5329,-6094,-6800,-7461,-8076,-8659,-9205,-9716,-10173,-10573,-10893,-11124,-11253,-11280,-11195,-11016,-10738, -10374,-9930,-9408,-8812,-8148,-7421,-6656,-5859,-5057,-4266,-3505,-2788,-2126,-1513,-954,-448,11,434,824,1199, 1568,1939,2331,2751,3213,3716,4271,4880,5533,6231,6971,7740,8530,9316,10071,10774,11400,11916,12314,12586, 12730,12749,12659,12461,12158,11751,11246,10640,9934,9147,8288,7373,6428,5462,4494,3523,2557,1585,605,-385, -1381,-2385,-3377,-4347,-5286,-6173,-7009,-7793,-8524,-9206,-9852,-10459,-11031,-11551,-12019,-12414,-12720,-12922,-13021,-13006, -12884,-12653,-12326,-11894,-11369,-10747,-10037,-9234,-8363,-7442,-6483,-5522,-4580,-3666,-2816,-2009,-1279,-606,8,568, 1086,1562,2009,2441,2868,3296,3736,4194,4685,5204,5754,6335,6948,7578,8220,8856,9472,10040,10541,10960, 11273,11482,11585,11579,11470,11272,10986,10605,10140,9579,8932,8211,7421,6581,5701,4798,3890,2984,2073,1165, 256,-652,-1564,-2477,-3374,-4253,-5096,-5897,-6644,-7334,-7971,-8557,-9099,-9594,-10047,-10442,-10782,-11039,-11205,-11271, -11228,-11072,-10811,-10446,-9997,-9466,-8865,-8196,-7474,-6706,-5911,-5098,-4292,-3512,-2764,-2071,-1435,-861,-340,128, 551,941,1316,1680,2042,2420,2821,3256,3731,4254,4832,5458,6136,6851,7604,8376,9153,9910,10630,11290, 11858,12317,12650,12850,12919,12859,12677,12392,12008,11527,10957,10300,9561,8745,7866,6931,5961,4968,3970,2971, 1977,992,6,-979,-1958,-2936,-3904,-4844,-5761,-6633,-7460,-8227,-8939,-9601,-10215,-10775,-11290,-11755,-12163,-12498, -12745,-12897,-12941,-12872,-12685,-12392,-11992,-11497,-10909,-10236,-9490,-8671,-7801,-6890,-5960,-5041,-4142,-3285,-2487,-1744, -1064,-447,120,641,1124,1589,2029,2468,2910,3362,3838,4336,4867,5431,6021,6636,7273,7917,8556,9171, 9753,10274,10716,11054,11291,11410,11413,11306,11091,10785,10392,9912,9357,8722,8021,7246,6418,5542,4629,3695, 2751,1810,874,-55,-969,-1877,-2775,-3663,-4535,-5388,-6208,-6992,-7723,-8399,-9014,-9576,-10077,-10514,-10900,-11222, -11474,-11646,-11724,-11701,-11569,-11321,-10961,-10503,-9957,-9330,-8636,-7887,-7103,-6285,-5459,-4629,-3825,-3053,-2324,-1655, -1055,-514,-37,392,782,1144,1498,1844,2203,2588,3000,3451,3949,4497,5098,5749,6444,7174,7933,8700, 9460,10186,10870,11480,11995,12394,12670,12811,12817,12690,12445,12092,11642,11099,10481,9787,9025,8198,7314,6389, 5424,4435,3430,2427,1428,442,-535,-1499,-2447,-3383,-4299,-5195,-6065,-6898,-7689,-8424,-9105,-9728,-10290,-10796, -11246,-11640,-11966,-12221,-12393,-12474,-12448,-12303,-12055,-11688,-11219,-10653,-9997,-9272,-8488,-7649,-6785,-5897,-5007,-4131, -3282,-2474,-1732,-1038,-404,175,706,1206,1679,2138,2590,3049,3524,4012,4527,5068,5646,6246,6865,7503, 8141,8773,9380,9946,10460,10899,11247,11494,11630,11647,11550,11334,11017,10609,10108,9532,8898,8197,7440,6627, 5768,4872,3937,2981,2012,1044,79,-873,-1804,-2720,-3608,-4482,-5327,-6150,-6943,-7703,-8418,-9077,-9676,-10217, -10685,-11086,-11420,-11681,-11866,-11967,-11976,-11887,-11687,-11380,-10959,-10437,-9820,-9123,-8369,-7567,-6743,-5899,-5061,-4239, -3447,-2696,-1997,-1356,-782,-270,183,591,958,1310,1650,2003,2366,2768,3201,3676,4199,4772,5397,6064, 6763,7492,8233,8966,9677,10342,10946,11471,11888,12200,12388,12441,12365,12164,11845,11418,10892,10291,9617,8881, 8091,7254,6372,5455,4498,3519,2528,1530,537,-445,-1406,-2344,-3259,-4148,-5013,-5851,-6658,-7438,-8175,-8867, -9503,-10080,-10593,-11043,-11424,-11736,-11976,-12143,-12222,-12215,-12101,-11886,-11564,-11128,-10595,-9966,-9259,-8496,-7681,-6829, -5964,-5089,-4233,-3396,-2591,-1832,-1127,-469,130,683,1195,1679,2148,2616,3081,3566,4071,4605,5169,5759, 6379,7022,7674,8333,8979,9597,10169,10687,11134,11500,11762,11921,11972,11904,11725,11429,11040,10554,9978,9336, 8629,7874,7069,6227,5353,4444,3512,2558,1589,616,-351,-1311,-2249,-3156,-4040,-4893,-5714,-6510,-7272,-8001, -8687,-9329,-9908,-10422,-10867,-11235,-11522,-11730,-11851,-11883,-11820,-11662,-11395,-11019,-10542,-9965,-9298,-8556,-7760,-6929, -6080,-5228,-4396,-3590,-2827,-2109,-1445,-844,-298,181,615,1003,1360,1701,2037,2387,2761,3171,3618,4117, 4658,5254,5898,6571,7278,8001,8721,9426,10089,10692,11224,11663,11998,12220,12320,12302,12153,11887,11505,11016, 10434,9775,9048,8265,7432,6565,5665,4737,3786,2815,1828,836,-153,-1137,-2099,-3031,-3932,-4798,-5633,-6433, -7202,-7936,-8635,-9286,-9886,-10430,-10903,-11303,-11625,-11869,-12033,-12108,-12096,-11987,-11789,-11485,-11077,-10570,-9966,-9278, -8519,-7710,-6868,-6007,-5151,-4310,-3493,-2713,-1971,-1281,-642,-45,499,1013,1485,1945,2394,2853,3319,3812, 4334,4891,5476,6093,6737,7396,8065,8722,9361,9953,10490,10953,11329,11615,11787,11863,11823,11671,11416,11052, 10588,10028,9387,8674,7903,7087,6231,5342,4435,3509,2559,1599,632,-345,-1321,-2287,-3229,-4140,-5020,-5863, -6668,-7435,-8164,-8860,-9507,-10112,-10660,-11149,-11561,-11896,-12141,-12301,-12359,-12325,-12193,-11960,-11626,-11189,-10650,-10028, -9317,-8541,-7717,-6868,-6011,-5165,-4350,-3570,-2845,-2165,-1547,-986,-478,-18,396,770,1124,1462,1814,2179, 2573,3008,3493,4027,4604,5233,5903,6598,7318,8038,8743,9414,10027,10569,11026,11376,11617,11746,11756,11656, 11434,11103,10667,10136,9510,8808,8040,7217,6358,5466,4552,3623,2676,1720,756,-213,-1183,-2145,-3085,-3996, -4872,-5713,-6508,-7265,-7979,-8658,-9294,-9884,-10425,-10908,-11319,-11658,-11908,-12076,-12150,-12128,-12011,-11804,-11493,-11091, -10590,-10001,-9325,-8576,-7765,-6916,-6046,-5172,-4313,-3486,-2693,-1948,-1244,-595,14,579,1103,1595,2067,2529, 2990,3458,3953,4473,5024,5613,6230,6875,7541,8219,8889,9545,10162,10728,11218,11621,11928,12125,12210,12188, 12054,11821,11486,11050,10529,9926,9234,8478,7663,6803,5909,4989,4053,3109,2155,1198,235,-734,-1695,-2650, -3583,-4487,-5359,-6188,-6976,-7720,-8418,-9071,-9678,-10234,-10738,-11180,-11547,-11838,-12036,-12136,-12133,-12024,-11810,-11494, -11074,-10567,-9969,-9289,-8543,-7738,-6902,-6049,-5195,-4366,-3573,-2831,-2147,-1521,-953,-443,21,440,820,1176, 1514,1853,2201,2575,2980,3432,3933,4486,5083,5724,6403,7100,7806,8506,9183,9810,10367,10838,11213,11473, 11618,11648,11560,11363,11059,10655,10157,9567,8890,8144,7335,6477,5574,4654,3713,2768,1818,867,-87,-1038, -1983,-2922,-3841,-4734,-5595,-6410,-7184,-7911,-8581,-9217,-9792,-10319,-10795,-11212,-11555,-11835,-12018,-12113,-12105,-11998, -11787,-11481,-11072,-10574,-9992,-9331,-8594,-7799,-6961,-6099,-5224,-4361,-3518,-2716,-1960,-1253,-588,24,600,1140, 1652,2144,2625,3104,3592,4098,4625,5189,5784,6409,7064,7738,8430,9119,9791,10433,11032,11560,12000,12343, 12577,12696,12691,12577,12356,12033,11617,11115,10538,9879,9153,8362,7513,6621,5697,4752,3792,2831,1870,917, -33,-974,-1910,-2836,-3741,-4623,-5476,-6283,-7047,-7759,-8419,-9029,-9585,-10086,-10531,-10912,-11224,-11458,-11595,-11637, -11571,-11394,-11110,-10721,-10233,-9657,-9006,-8288,-7516,-6698,-5864,-5021,-4188,-3388,-2627,-1925,-1287,-707,-184,280, 706,1090,1447,1793,2126,2471,2833,3219,3643,4115,4630,5192,5791,6429,7093,7762,8428,9074,9676,10217, 10682,11058,11321,11466,11491,11394,11188,10874,10460,9962,9382,8725,7993,7197,6344,5444,4505,3545,2571,1596, 620,-341,-1295,-2240,-3177,-4100,-4999,-5877,-6723,-7532,-8295,-9004,-9656,-10256,-10792,-11273,-11699,-12057,-12348,-12566, -12698,-12735,-12668,-12494,-12216,-11830,-11349,-10782,-10134,-9424,-8653,-7842,-6997,-6143,-5283,-4447,-3636,-2873,-2158,-1489, -867,-292,252,770,1267,1759,2246,2747,3267,3806,4380,4987,5627,6294,6987,7689,8395,9086,9752,10377, 10935,11423,11811,12097,12265,12316,12241,12053,11757,11372,10893,10339,9721,9035,8291,7494,6644,5750,4828,3879, 2922,1963,1010,72,-852,-1761,-2655,-3530,-4383,-5217,-6021,-6783,-7507,-8172,-8783,-9334,-9824,-10250,-10612,-10912, -11136,-11282,-11344,-11306,-11162,-10908,-10546,-10075,-9511,-8865,-8141,-7369,-6553,-5712,-4859,-4009,-3178,-2383,-1635,-946, -317,257,767,1224,1648,2036,2412,2776,3142,3526,3931,4365,4841,5358,5916,6510,7136,7784,8444,9092, 9723,10318,10859,11328,11704,11985,12151,12191,12114,11915,11604,11195,10692,10111,9458,8740,7967,7138,6257,5336, 4376,3391,2396,1397,404,-572,-1534,-2476,-3400,-4305,-5187,-6042,-6876,-7668,-8416,-9121,-9758,-10337,-10850,-11295, -11674,-11986,-12224,-12391,-12468,-12451,-12335,-12112,-11777,-11345,-10809,-10193,-9510,-8770,-7989,-7178,-6358,-5535,-4724,-3937, -3182,-2480,-1822,-1211,-646,-122,373,848,1312,1775,2250,2743,3262,3807,4393,5006,5655,6333,7020,7712, 8398,9058,9675,10243,10738,11145,11456,11661,11745,11714,11561,11289,10919,10451,9899,9281,8602,7868,7084,6262, 5395,4495,3557,2603,1637,668,-293,-1233,-2154,-3053,-3920,-4765,-5584,-6380,-7147,-7878,-8568,-9204,-9780,-10290, -10732,-11100,-11398,-11623,-11767,-11833,-11803,-11685,-11459,-11120,-10678,-10129,-9487,-8766,-7984,-7156,-6303,-5434,-4575,-3725, -2912,-2134,-1404,-733,-122,432,931,1384,1809,2207,2594,2983,3384,3811,4266,4754,5286,5853,6460,7095, 7751,8421,9084,9726,10335,10890,11379,11788,12098,12308,12403,12373,12223,11958,11583,11106,10543,9904,9206,8450, 7649,6804,5919,5000,4045,3070,2086,1092,104,-865,-1818,-2739,-3634,-4503,-5342,-6154,-6941,-7690,-8399,-9060, -9664,-10202,-10667,-11059,-11381,-11624,-11790,-11874,-11872,-11782,-11584,-11287,-10891,-10388,-9797,-9128,-8401,-7632,-6829,-6017, -5211,-4416,-3643,-2902,-2201,-1548,-939,-376,145,628,1093,1539,1982,2433,2902,3397,3920,4476,5076,5702, 6358,7034,7716,8392,9047,9657,10218,10708,11116,11433,11642,11748,11738,11609,11370,11017,10562,10015,9384,8692, 7939,7141,6308,5441,4538,3612,2658,1688,709,-277,-1253,-2208,-3141,-4042,-4909,-5746,-6546,-7316,-8057,-8762, -9425,-10034,-10587,-11070,-11477,-11805,-12054,-12214,-12294,-12282,-12182,-11983,-11680,-11272,-10766,-10155,-9459,-8691,-7867,-7012, -6141,-5271,-4421,-3599,-2818,-2082,-1396,-771,-198,321,792,1229,1636,2025,2415,2808,3226,3676,4155,4676, 5237,5837,6469,7126,7792,8464,9112,9731,10299,10800,11221,11550,11777,11900,11908,11803,11581,11249,10808,10272, 9654,8964,8213,7416,6584,5719,4822,3902,2956,1996,1023,41,-927,-1884,-2819,-3719,-4590,-5420,-6216,-6978, -7711,-8401,-9053,-9657,-10212,-10695,-11107,-11437,-11693,-11855,-11935,-11931,-11832,-11645,-11355,-10972,-10497,-9924,-9274,-8553, -7780,-6979,-6157,-5338,-4538,-3760,-3017,-2311,-1652,-1038,-466,69,568,1034,1487,1928,2377,2836,3320,3837, 4387,4970,5595,6249,6926,7612,8300,8969,9600,10180,10694,11119,11452,11684,11806,11822,11727,11521,11211,10792, 10282,9676,8992,8249,7451,6607,5733,4838,3917,2982,2032,1071,101,-874,-1836,-2787,-3711,-4602,-5455,-6272, -7041,-7779,-8481,-9135,-9753,-10316,-10825,-11266,-11628,-11910,-12099,-12198,-12205,-12113,-11930,-11642,-11258,-10774,-10199,-9529, -8783,-7974,-7122,-6246,-5366,-4498,-3663,-2862,-2115,-1417,-773,-183,357,855,1302,1729,2131,2525,2922,3331, 3770,4243,4752,5302,5893,6516,7167,7832,8501,9165,9791,10372,10895,11330,11681,11926,12066,12098,12018,11834, 11540,11140,10646,10060,9394,8657,7869,7028,6162,5267,4355,3423,2483,1533,574,-385,-1341,-2278,-3197,-4081, -4931,-5740,-6506,-7231,-7917,-8556,-9155,-9706,-10205,-10634,-10991,-11269,-11462,-11554,-11558,-11464,-11280,-11001,-10628,-10170, -9624,-8999,-8308,-7556,-6772,-5963,-5154,-4353,-3587,-2851,-2159,-1511,-910,-351,167,655,1117,1556,1992,2421, 2867,3333,3824,4356,4922,5529,6165,6829,7507,8187,8858,9501,10095,10618,11068,11419,11664,11799,11819,11736, 11543,11246,10847,10357,9780,9115,8381,7585,6738,5845,4932,3997,3046,2088,1128,159,-805,-1771,-2727,-3671, -4589,-5474,-6326,-7132,-7891,-8607,-9275,-9896,-10471,-10993,-11459,-11860,-12185,-12429,-12581,-12637,-12593,-12445,-12197,-11852, -11406,-10873,-10255,-9553,-8789,-7967,-7115,-6251,-5379,-4535,-3729,-2960,-2244,-1578,-967,-405,114,598,1053,1485, 1907,2326,2755,3203,3683,4196,4743,5328,5951,6594,7259,7925,8586,9218,9807,10335,10790,11147,11404,11551, 11588,11519,11343,11066,10698,10235,9689,9058,8355,7590,6775,5909,5024,4109,3183,2255,1319,393,-540,-1463, -2380,-3280,-4166,-5017,-5832,-6608,-7331,-8012,-8639,-9217,-9751,-10225,-10646,-11001,-11285,-11484,-11597,-11609,-11525,-11341, -11060,-10681,-10215,-9664,-9043,-8351,-7606,-6816,-6005,-5181,-4362,-3566,-2807,-2083,-1414,-790,-212,329,831,1309, 1765,2215,2668,3123,3597,4098,4626,5197,5796,6434,7097,7777,8459,9135,9793,10409,10967,11446,11837,12122, 12295,12347,12285,12116,11837,11463,11000,10453,9830,9132,8370,7550,6675,5763,4828,3870,2906,1936,970,11, -939,-1882,-2814,-3732,-4625,-5492,-6327,-7115,-7852,-8543,-9184,-9763,-10295,-10767,-11183,-11529,-11806,-12000,-12103,-12104, -12005,-11800,-11490,-11077,-10572,-9988,-9322,-8592,-7809,-6988,-6144,-5296,-4454,-3637,-2862,-2129,-1455,-831,-259,266, 756,1221,1660,2091,2517,2953,3400,3872,4376,4914,5489,6091,6720,7366,8014,8658,9276,9858,10380,10833, 11197,11464,11620,11657,11585,11403,11115,10735,10272,9726,9109,8416,7665,6858,6003,5105,4180,3236,2284,1327, 377,-562,-1487,-2403,-3301,-4182,-5045,-5879,-6678,-7437,-8144,-8805,-9405,-9948,-10429,-10852,-11215,-11511,-11725,-11868, -11914,-11863,-11712,-11457,-11100,-10649,-10106,-9486,-8803,-8065,-7289,-6483,-5668,-4847,-4047,-3273,-2542,-1851,-1214,-625, -82,425,905,1362,1810,2260,2713,3189,3680,4203,4763,5354,5977,6633,7306,7989,8665,9323,9946,10522, 11023,11450,11778,11999,12098,12075,11939,11692,11340,10897,10372,9769,9104,8375,7589,6757,5878,4960,4016,3051, 2083,1111,149,-799,-1727,-2643,-3537,-4414,-5264,-6089,-6882,-7637,-8344,-8995,-9591,-10123,-10595,-11000,-11343,-11613, -11810,-11929,-11952,-11880,-11699,-11416,-11028,-10541,-9961,-9302,-8577,-7801,-6987,-6152,-5308,-4469,-3645,-2859,-2112,-1412, -771,-177,364,863,1332,1777,2212,2645,3083,3536,4013,4516,5051,5622,6214,6839,7483,8128,8767,9380, 9961,10489,10952,11333,11621,11809,11877,11831,11671,11404,11032,10570,10026,9415,8735,7998,7211,6379,5501,4584, 3646,2686,1719,750,-208,-1148,-2070,-2970,-3846,-4701,-5531,-6336,-7106,-7839,-8522,-9156,-9724,-10228,-10666,-11038, -11340,-11563,-11714,-11782,-11757,-11639,-11420,-11094,-10668,-10149,-9543,-8869,-8137,-7364,-6569,-5755,-4950,-4154,-3383,-2648, -1953,-1304,-711,-161,343,813,1264,1698,2133,2574,3032,3511,4021,4563,5141,5755,6395,7061,7738,8408, 9066,9693,10270,10791,11231,11586,11838,11979,12004,11911,11699,11383,10961,10449,9858,9201,8482,7716,6903,6050, 5160,4238,3288,2318,1348,370,-594,-1538,-2459,-3357,-4223,-5067,-5882,-6669,-7427,-8140,-8813,-9432,-9988,-10481, -10903,-11251,-11529,-11729,-11850,-11889,-11833,-11683,-11431,-11081,-10623,-10067,-9425,-8714,-7943,-7139,-6308,-5465,-4634,-3816, -3027,-2276,-1568,-910,-304,251,762,1237,1688,2121,2554,2987,3439,3909,4408,4937,5502,6094,6714,7353, 7995,8637,9256,9836,10369,10835,11224,11527,11732,11830,11813,11685,11446,11102,10650,10111,9498,8817,8084,7295, 6469,5611,4711,3788,2841,1875,902,-72,-1035,-1979,-2899,-3789,-4646,-5476,-6272,-7046,-7780,-8479,-9129,-9730, -10265,-10735,-11128,-11448,-11686,-11844,-11923,-11911,-11806,-11610,-11316,-10918,-10426,-9842,-9179,-8458,-7680,-6881,-6066,-5255, -4463,-3691,-2952,-2254,-1604,-994,-436,77,555,1005,1436,1859,2286,2729,3193,3687,4212,4773,5376,6006, 6660,7333,8007,8670,9305,9895,10427,10882,11255,11532,11702,11769,11718,11549,11276,10896,10408,9838,9194,8481, 7721,6911,6068,5197,4294,3370,2427,1462,494,-473,-1436,-2372,-3280,-4162,-5004,-5813,-6592,-7336,-8047,-8716, -9342,-9919,-10433,-10878,-11250,-11541,-11751,-11877,-11916,-11866,-11723,-11487,-11151,-10722,-10193,-9576,-8878,-8121,-7313,-6482, -5639,-4801,-3984,-3194,-2438,-1729,-1063,-442,125,653,1143,1606,2046,2481,2912,3363,3830,4328,4857,5417, 6015,6631,7271,7929,8577,9209,9802,10350,10832,11239,11552,11775,11891,11908,11808,11596,11289,10877,10364,9768, 9097,8362,7577,6748,5889,5003,4093,3165,2218,1260,295,-673,-1633,-2571,-3483,-4361,-5198,-6003,-6770,-7504, -8197,-8851,-9460,-10016,-10514,-10943,-11291,-11562,-11749,-11842,-11847,-11764,-11582,-11310,-10944,-10488,-9941,-9312,-8608,-7859, -7064,-6254,-5442,-4644,-3868,-3130,-2426,-1769,-1154,-585,-55,437,896,1336,1768,2192,2632,3087,3573,4088, 4641,5226,5849,6497,7162,7834,8501,9140,9736,10274,10741,11119,11396,11574,11649,11609,11464,11211,10861,10409, 9863,9237,8533,7771,6955,6103,5225,4324,3404,2470,1527,570,-390,-1349,-2298,-3224,-4128,-4995,-5823,-6613, -7363,-8072,-8740,-9362,-9940,-10472,-10935,-11336,-11656,-11896,-12047,-12107,-12071,-11943,-11718,-11403,-10992,-10494,-9904,-9237, -8501,-7711,-6881,-6036,-5187,-4356,-3552,-2782,-2059,-1383,-749,-157,393,904,1388,1849,2297,2743,3200,3673, 4172,4702,5261,5850,6474,7117,7770,8426,9067,9680,10242,10748,11173,11509,11747,11885,11909,11836,11652,11371, 10998,10527,9964,9326,8613,7839,7020,6162,5276,4374,3453,2529,1587,644,-301,-1247,-2179,-3099,-3991,-4848, -5661,-6441,-7173,-7863,-8510,-9110,-9666,-10167,-10607,-10980,-11276,-11489,-11610,-11641,-11571,-11411,-11148,-10798,-10359,-9836, -9234,-8559,-7830,-7055,-6250,-5440,-4633,-3851,-3101,-2390,-1722,-1104,-523,12,517,991,1442,1879,2316,2750, 3208,3686,4193,4736,5310,5920,6555,7212,7875,8539,9174,9776,10325,10804,11196,11487,11670,11753,11722,11580, 11342,11002,10569,10052,9442,8761,8011,7200,6348,5450,4536,3604,2660,1713,760,-191,-1141,-2088,-3022,-3935, -4829,-5683,-6505,-7278,-8009,-8689,-9321,-9904,-10441,-10916,-11335,-11687,-11965,-12155,-12258,-12256,-12163,-11970,-11677,-11292, -10813,-10259,-9620,-8916,-8150,-7344,-6511,-5668,-4829,-4015,-3234,-2491,-1795,-1152,-540,23,555,1056,1536,2003, 2468,2936,3420,3925,4456,5013,5602,6220,6857,7508,8159,8802,9422,10003,10517,10967,11321,11582,11729,11774, 11711,11541,11272,10913,10467,9938,9331,8653,7910,7109,6262,5380,4476,3552,2619,1691,757,-169,-1094,-2012, -2914,-3798,-4660,-5487,-6275,-7023,-7724,-8370,-8969,-9514,-10005,-10439,-10812,-11116,-11347,-11492,-11542,-11496,-11349,-11105, -10759,-10322,-9803,-9208,-8543,-7821,-7059,-6263,-5447,-4632,-3835,-3065,-2335,-1646,-1010,-420,128,637,1119,1576, 2019,2459,2902,3353,3825,4328,4859,5422,6017,6638,7283,7938,8593,9231,9836,10392,10884,11304,11625,11841, 11944,11934,11816,11588,11261,10841,10342,9761,9104,8384,7599,6759,5875,4955,4013,3057,2091,1130,173,-774, -1716,-2646,-3560,-4459,-5329,-6172,-6975,-7735,-8448,-9106,-9705,-10249,-10739,-11166,-11532,-11828,-12050,-12188,-12235,-12180, -12024,-11762,-11402,-10954,-10413,-9800,-9122,-8381,-7603,-6795,-5970,-5147,-4338,-3557,-2807,-2111,-1461,-857,-293,232, 731,1208,1671,2132,2600,3072,3572,4094,4645,5223,5825,6456,7095,7741,8378,8994,9574,10098,10559,10937, 11222,11397,11465,11422,11270,11010,10657,10217,9702,9107,8449,7734,6959,6137,5270,4367,3443,2506,1562,624, -307,-1226,-2133,-3021,-3894,-4743,-5573,-6368,-7129,-7843,-8511,-9126,-9680,-10170,-10605,-10972,-11274,-11508,-11661,-11732, -11709,-11587,-11364,-11036,-10618,-10100,-9505,-8844,-8121,-7354,-6557,-5747,-4924,-4118,-3330,-2579,-1867,-1202,-591,-25, 503,992,1461,1910,2357,2807,3266,3740,4244,4778,5337,5930,6551,7196,7852,8505,9147,9758,10334,10843, 11285,11640,11894,12043,12077,11993,11801,11495,11098,10614,10048,9413,8719,7967,7156,6302,5407,4480,3531,2562, 1590,626,-331,-1270,-2200,-3104,-3988,-4848,-5687,-6493,-7263,-7993,-8675,-9299,-9862,-10363,-10801,-11170,-11469,-11696, -11848,-11917,-11889,-11760,-11540,-11207,-10777,-10254,-9654,-8980,-8257,-7484,-6685,-5874,-5059,-4258,-3475,-2732,-2025,-1365, -752,-187,342,836,1308,1762,2216,2674,3144,3624,4138,4677,5253,5838,6459,7094,7736,8364,8981,9559, 10089,10558,10949,11253,11463,11561,11550,11427,11194,10856,10422,9905,9319,8669,7956,7197,6387,5542,4654,3737, 2800,1847,887,-62,-1002,-1918,-2819,-3695,-4545,-5369,-6163,-6931,-7661,-8348,-8990,-9572,-10092,-10542,-10929,-11239, -11476,-11636,-11718,-11713,-11616,-11418,-11123,-10722,-10231,-9645,-8990,-8274,-7509,-6715,-5904,-5090,-4284,-3500,-2746,-2032, -1360,-737,-161,370,866,1330,1776,2206,2648,3097,3564,4055,4578,5132,5720,6331,6971,7622,8278,8922, 9543,10125,10651,11105,11481,11771,11959,12029,11991,11838,11578,11207,10743,10194,9573,8885,8144,7357,6525,5657, 4753,3824,2869,1904,935,-33,-987,-1920,-2827,-3709,-4562,-5390,-6188,-6951,-7682,-8369,-9014,-9597,-10120,-10576, -10964,-11271,-11501,-11659,-11733,-11721,-11617,-11418,-11119,-10721,-10229,-9646,-8994,-8278,-7518,-6722,-5921,-5112,-4316,-3540, -2798,-2090,-1421,-797,-220,315,819,1294,1750,2199,2651,3112,3593,4097,4631,5189,5782,6395,7024,7664, 8298,8908,9491,10024,10496,10892,11204,11419,11539,11550,11451,11249,10933,10521,10014,9430,8777,8059,7300,6489, 5652,4773,3869,2941,1997,1038,75,-882,-1823,-2744,-3641,-4502,-5331,-6127,-6897,-7628,-8323,-8975,-9583,-10130, -10616,-11023,-11365,-11619,-11798,-11887,-11898,-11817,-11642,-11374,-11012,-10549,-10000,-9366,-8666,-7911,-7119,-6304,-5492,-4683, -3895,-3140,-2414,-1736,-1101,-510,43,551,1027,1482,1921,2360,2807,3266,3750,4266,4812,5391,5998,6631, 7282,7940,8590,9214,9804,10342,10812,11198,11499,11705,11806,11797,11682,11457,11130,10699,10179,9572,8899,8166, 7383,6565,5706,4828,3919,2988,2046,1084,124,-834,-1777,-2698,-3595,-4455,-5281,-6072,-6831,-7550,-8236,-8877, -9471,-10012,-10484,-10891,-11223,-11466,-11631,-11712,-11706,-11612,-11424,-11146,-10771,-10305,-9750,-9120,-8422,-7665,-6878,-6073, -5266,-4467,-3685,-2942,-2229,-1558,-926,-336,212,729,1220,1682,2142,2591,3051,3528,4027,4557,5114,5699, 6312,6941,7584,8222,8844,9438,9981,10467,10880,11201,11432,11564,11596,11518,11339,11058,10676,10198,9633,8990, 8282,7516,6708,5860,4985,4089,3174,2240,1301,347,-608,-1557,-2493,-3405,-4291,-5139,-5946,-6719,-7453,-8144, -8798,-9406,-9970,-10472,-10910,-11277,-11571,-11770,-11888,-11916,-11858,-11696,-11451,-11108,-10680,-10159,-9559,-8883,-8148,-7372, -6561,-5740,-4928,-4128,-3366,-2632,-1944,-1295,-689,-122,402,899,1371,1827,2271,2720,3181,3668,4173,4715, 5288,5890,6518,7162,7815,8468,9100,9702,10250,10730,11136,11446,11662,11776,11782,11686,11490,11190,10794,10303, 9728,9078,8359,7580,6765,5906,5026,4127,3210,2282,1346,400,-544,-1483,-2410,-3316,-4190,-5030,-5830,-6593, -7310,-7984,-8618,-9209,-9749,-10236,-10654,-11007,-11282,-11470,-11565,-11574,-11492,-11314,-11041,-10683,-10237,-9704,-9094,-8416, -7682,-6903,-6097,-5282,-4478,-3691,-2932,-2211,-1530,-892,-294,269,793,1296,1773,2236,2698,3161,3636,4134, 4655,5206,5791,6394,7018,7653,8294,8922,9522,10082,10582,11011,11351,11595,11742,11781,11717,11553,11290,10931, 10483,9942,9327,8639,7881,7070,6224,5343,4439,3515,2583,1647,705,-243,-1179,-2117,-3041,-3942,-4811,-5649, -6442,-7198,-7901,-8562,-9175,-9738,-10256,-10714,-11108,-11426,-11674,-11822,-11888,-11855,-11729,-11505,-11187,-10781,-10288,-9719, -9077,-8368,-7616,-6827,-6020,-5206,-4414,-3640,-2904,-2209,-1560,-953,-387,146,644,1119,1574,2028,2474,2930, 3403,3905,4427,4982,5571,6183,6812,7456,8099,8729,9327,9885,10379,10797,11126,11353,11476,11495,11409,11217, 10933,10553,10088,9532,8907,8215,7454,6639,5787,4898,3990,3065,2139,1202,263,-667,-1591,-2510,-3417,-4298, -5154,-5973,-6750,-7487,-8173,-8816,-9401,-9940,-10425,-10849,-11216,-11509,-11719,-11844,-11879,-11819,-11662,-11404,-11053,-10620, -10098,-9504,-8837,-8115,-7352,-6555,-5743,-4926,-4130,-3345,-2615,-1915,-1262,-647,-77,465,976,1470,1950,2423, 2898,3383,3889,4413,4966,5547,6152,6776,7410,8051,8687,9294,9869,10389,10849,11218,11494,11669,11735,11695, 11546,11299,10962,10535,10025,9438,8779,8058,7275,6443,5571,4667,3742,2803,1864,923,-10,-945,-1865,-2776, -3669,-4547,-5392,-6204,-6976,-7703,-8375,-9001,-9568,-10081,-10543,-10936,-11267,-11526,-11707,-11798,-11792,-11690,-11492,-11192, -10794,-10315,-9751,-9118,-8430,-7684,-6909,-6110,-5300,-4501,-3716,-2965,-2255,-1593,-979,-402,131,636,1114,1576, 2028,2479,2935,3407,3901,4417,4964,5543,6145,6769,7406,8040,8670,9270,9831,10342,10782,11134,11390,11540, 11588,11519,11343,11070,10707,10253,9721,9113,8442,7708,6918,6077,5199,4289,3361,2415,1474,535,-401,-1324, -2238,-3135,-4009,-4864,-5696,-6492,-7249,-7961,-8616,-9221,-9766,-10258,-10686,-11054,-11350,-11580,-11725,-11789,-11755,-11624, -11398,-11073,-10647,-10141,-9555,-8902,-8195,-7440,-6660,-5857,-5045,-4249,-3470,-2719,-2009,-1343,-722,-141,407,922, 1414,1898,2375,2851,3335,3839,4364,4914,5488,6094,6716,7350,7990,8620,9232,9817,10347,10819,11212,11520, 11725,11819,11808,11687,11458,11131,10711,10211,9636,8995,8292,7535,6723,5868,4977,4053,3112,2156,1203,255, -681,-1606,-2509,-3399,-4265,-5111,-5932,-6716,-7460,-8160,-8805,-9398,-9929,-10396,-10801,-11138,-11406,-11601,-11713,-11740, -11672,-11503,-11240,-10872,-10411,-9870,-9250,-8567,-7839,-7070,-6283,-5484,-4683,-3901,-3142,-2418,-1739,-1103,-511,32, 550,1031,1496,1953,2403,2860,3328,3821,4335,4879,5448,6046,6662,7289,7918,8537,9135,9698,10207,10653, 11019,11300,11476,11546,11504,11356,11097,10744,10298,9771,9172,8510,7791,7020,6198,5337,4448,3520,2580,1620, 669,-277,-1209,-2131,-3025,-3897,-4747,-5575,-6370,-7136,-7862,-8548,-9170,-9744,-10249,-10693,-11068,-11372,-11603,-11766, -11840,-11830,-11727,-11531,-11232,-10836,-10349,-9776,-9135,-8431,-7685,-6907,-6112,-5312,-4509,-3738,-2982,-2264,-1589,-955, -365,186,712,1202,1682,2154,2627,3108,3607,4129,4677,5249,5848,6467,7102,7742,8375,8993,9577,10119, 10599,11016,11341,11575,11706,11731,11646,11451,11150,10755,10270,9707,9075,8384,7638,6855,6019,5153,4254,3325, 2379,1425,471,-475,-1409,-2316,-3202,-4062,-4895,-5705,-6483,-7225,-7932,-8595,-9199,-9752,-10239,-10658,-11004,-11275, -11474,-11596,-11633,-11584,-11439,-11206,-10870,-10434,-9911,-9315,-8639,-7918,-7152,-6365,-5570,-4772,-3990,-3231,-2499,-1805, -1154,-549,13,536,1034,1504,1961,2415,2870,3338,3826,4336,4876,5440,6030,6643,7267,7897,8518,9112, 9676,10185,10635,11010,11298,11496,11588,11574,11453,11226,10889,10463,9944,9351,8689,7970,7201,6397,5546,4670, 3760,2834,1885,923,-35,-984,-1919,-2836,-3718,-4572,-5395,-6193,-6957,-7688,-8377,-9029,-9616,-10155,-10621,-11024, -11350,-11597,-11766,-11860,-11861,-11783,-11611,-11346,-10986,-10531,-9987,-9370,-8684,-7949,-7177,-6388,-5591,-4800,-4028,-3276, -2556,-1875,-1230,-626,-62,465,971,1454,1927,2398,2876,3370,3884,4424,4992,5582,6197,6832,7471,8111, 8733,9325,9871,10363,10785,11127,11377,11531,11583,11530,11372,11108,10741,10286,9746,9127,8444,7709,6929,6112, 5262,4384,3480,2558,1620,673,-274,-1210,-2132,-3025,-3890,-4729,-5530,-6298,-7035,-7730,-8393,-9005,-9566,-10070, -10508,-10875,-11163,-11369,-11496,-11538,-11494,-11361,-11138,-10820,-10413,-9912,-9330,-8674,-7956,-7193,-6400,-5599,-4799,-4004, -3234,-2500,-1797,-1134,-512,70,614,1122,1609,2073,2533,2991,3460,3945,4451,4985,5547,6137,6748,7373, 8007,8636,9238,9811,10337,10800,11186,11492,11704,11820,11829,11737,11544,11241,10847,10359,9784,9137,8427,7658, 6854,6011,5136,4244,3327,2396,1449,495,-459,-1402,-2331,-3234,-4104,-4941,-5743,-6510,-7239,-7928,-8583,-9184, -9734,-10230,-10657,-11014,-11289,-11482,-11589,-11609,-11543,-11387,-11147,-10812,-10390,-9879,-9291,-8640,-7918,-7165,-6380,-5589, -4801,-4029,-3283,-2568,-1887,-1244,-640,-75,461,966,1453,1922,2385,2854,3340,3836,4360,4909,5488,6089, 6710,7342,7976,8593,9187,9741,10242,10665,11012,11267,11430,11489,11449,11305,11068,10728,10293,9773,9167,8494, 7759,6971,6150,5290,4408,3510,2592,1661,723,-221,-1162,-2094,-3009,-3900,-4751,-5575,-6357,-7103,-7807,-8466, -9085,-9655,-10173,-10632,-11026,-11346,-11582,-11736,-11797,-11773,-11652,-11444,-11144,-10759,-10281,-9727,-9096,-8404,-7655,-6869, -6065,-5257,-4463,-3688,-2937,-2231,-1558,-928,-335,218,743,1240,1720,2184,2648,3116,3601,4106,4636,5188, 5772,6377,7004,7631,8263,8877,9460,10003,10488,10899,11221,11453,11584,11617,11548,11374,11111,10747,10292,9750, 9131,8442,7692,6894,6053,5185,4291,3386,2462,1536,601,-338,-1274,-2196,-3108,-3987,-4841,-5655,-6429,-7167, -7856,-8498,-9102,-9651,-10147,-10589,-10960,-11259,-11478,-11606,-11646,-11594,-11447,-11214,-10882,-10475,-9983,-9407,-8766,-8068, -7323,-6547,-5754,-4964,-4181,-3428,-2707,-2026,-1376,-773,-200,332,841,1329,1802,2266,2735,3210,3706,4215, 4755,5322,5915,6526,7155,7783,8404,9007,9575,10090,10539,10907,11187,11372,11453,11429,11301,11079,10761,10355, 9862,9287,8638,7915,7147,6323,5463,4575,3667,2744,1817,884,-48,-983,-1908,-2822,-3721,-4591,-5432,-6235, -6996,-7715,-8383,-9003,-9579,-10096,-10561,-10967,-11308,-11571,-11751,-11841,-11843,-11745,-11551,-11270,-10895,-10435,-9896,-9283, -8606,-7877,-7106,-6309,-5504,-4706,-3921,-3164,-2447,-1769,-1131,-530,29,554,1061,1543,2021,2489,2959,3444, 3945,4468,5019,5598,6199,6816,7449,8080,8695,9295,9848,10351,10786,11134,11391,11551,11602,11548,11393,11145, 10804,10376,9863,9272,8617,7890,7104,6282,5416,4520,3607,2690,1761,835,-93,-1014,-1926,-2828,-3712,-4565, -5394,-6184,-6934,-7636,-8289,-8889,-9441,-9936,-10377,-10756,-11065,-11302,-11460,-11518,-11495,-11372,-11152,-10838,-10440,-9955, -9395,-8767,-8088,-7356,-6592,-5805,-5013,-4231,-3466,-2728,-2032,-1380,-761,-185,357,871,1363,1844,2313,2784, 3258,3751,4266,4798,5361,5945,6548,7167,7794,8412,9012,9589,10113,10576,10968,11273,11479,11584,11578,11469, 11255,10950,10558,10076,9518,8895,8199,7450,6641,5786,4900,3986,3056,2118,1177,238,-695,-1616,-2525,-3420, -4297,-5146,-5969,-6751,-7495,-8189,-8831,-9415,-9952,-10422,-10836,-11186,-11468,-11677,-11798,-11832,-11772,-11613,-11354,-10998, -10560,-10040,-9444,-8784,-8076,-7324,-6540,-5747,-4951,-4166,-3407,-2680,-1990,-1344,-737,-170,364,869,1355,1833, 2302,2774,3262,3760,4281,4825,5395,5992,6602,7221,7851,8472,9065,9623,10133,10584,10959,11240,11423,11502, 11473,11340,11104,10772,10353,9855,9284,8644,7942,7191,6380,5527,4644,3731,2804,1869,934,7,-915,-1824, -2710,-3585,-4441,-5261,-6064,-6825,-7548,-8219,-8839,-9401,-9907,-10347,-10726,-11038,-11286,-11458,-11546,-11541,-11450,-11259, -10970,-10590,-10120,-9573,-8957,-8279,-7559,-6807,-6029,-5244,-4458,-3691,-2947,-2234,-1561,-929,-337,219,743,1246, 1730,2207,2684,3170,3666,4180,4720,5281,5867,6474,7095,7715,8340,8943,9515,10044,10523,10933,11257,11485, 11613,11637,11554,11360,11070,10682,10213,9665,9049,8370,7637,6853,6020,5149,4245,3314,2372,1422,474,-465, -1396,-2308,-3199,-4066,-4916,-5733,-6527,-7277,-7995,-8659,-9266,-9819,-10311,-10733,-11095,-11385,-11605,-11749,-11810,-11781, -11658,-11438,-11123,-10709,-10214,-9640,-8995,-8295,-7560,-6789,-6005,-5213,-4430,-3663,-2928,-2221,-1558,-932,-348,203, 721,1215,1700,2179,2655,3144,3649,4171,4718,5287,5878,6488,7110,7732,8349,8937,9497,10006,10457,10837, 11132,11331,11435,11430,11317,11099,10782,10372,9881,9313,8685,7996,7252,6465,5631,4764,3865,2944,2010,1068, 126,-803,-1720,-2613,-3484,-4329,-5152,-5947,-6708,-7434,-8125,-8762,-9348,-9866,-10334,-10720,-11041,-11295,-11470,-11571, -11583,-11512,-11349,-11088,-10733,-10284,-9754,-9150,-8481,-7764,-7012,-6237,-5451,-4664,-3892,-3142,-2419,-1729,-1082,-472, 100,639,1148,1640,2122,2600,3084,3580,4097,4633,5195,5775,6382,7001,7626,8245,8855,9435,9973,10457, 10873,11214,11469,11627,11679,11632,11473,11212,10850,10397,9866,9258,8592,7870,7102,6287,5438,4557,3646,2711, 1768,819,-129,-1070,-1990,-2885,-3755,-4603,-5414,-6196,-6953,-7670,-8347,-8978,-9549,-10062,-10510,-10883,-11185,-11414, -11567,-11640,-11626,-11522,-11334,-11043,-10667,-10196,-9644,-9017,-8334,-7601,-6840,-6052,-5269,-4490,-3729,-2991,-2281,-1605, -974,-378,181,712,1213,1698,2173,2648,3133,3631,4153,4690,5254,5839,6445,7067,7687,8298,8894,9451, 9965,10417,10805,11112,11324,11442,11460,11377,11187,10893,10502,10027,9469,8836,8146,7408,6622,5799,4944,4061, 3155,2223,1284,338,-603,-1532,-2442,-3331,-4187,-5013,-5806,-6570,-7293,-7987,-8642,-9245,-9788,-10273,-10694,-11038, -11307,-11498,-11609,-11640,-11582,-11441,-11208,-10879,-10469,-9962,-9381,-8731,-8027,-7275,-6504,-5718,-4932,-4159,-3406,-2680, -1983,-1323,-705,-118,435,958,1459,1944,2428,2912,3404,3914,4445,5001,5580,6179,6796,7423,8048,8660, 9246,9790,10286,10712,11065,11331,11504,11581,11557,11431,11209,10876,10454,9943,9354,8694,7981,7215,6411,5571, 4703,3810,2894,1963,1025,80,-861,-1791,-2702,-3585,-4435,-5255,-6039,-6788,-7499,-8173,-8806,-9390,-9917,-10385, -10781,-11103,-11347,-11511,-11594,-11587,-11493,-11313,-11044,-10683,-10234,-9703,-9097,-8424,-7699,-6939,-6158,-5365,-4582,-3814, -3072,-2364,-1681,-1039,-436,131,668,1179,1671,2145,2620,3100,3588,4100,4628,5186,5762,6360,6976,7596, 8211,8809,9382,9909,10376,10775,11091,11325,11460,11497,11438,11275,11016,10657,10208,9674,9064,8383,7647,6864, 6044,5188,4311,3413,2501,1569,635,-303,-1236,-2161,-3063,-3936,-4776,-5586,-6347,-7080,-7772,-8423,-9032,-9586, -10089,-10530,-10899,-11196,-11413,-11540,-11584,-11542,-11405,-11187,-10878,-10480,-9998,-9442,-8814,-8124,-7386,-6619,-5837,-5052, -4274,-3517,-2791,-2099,-1441,-819,-234,322,850,1358,1841,2320,2798,3285,3782,4305,4848,5416,6006,6614, 7238,7863,8478,9075,9635,10145,10593,10958,11247,11440,11537,11534,11430,11230,10934,10539,10059,9502,8862,8158, 7404,6595,5758,4891,4000,3098,2177,1246,319,-619,-1545,-2463,-3357,-4228,-5059,-5857,-6613,-7329,-8002,-8634, -9218,-9750,-10228,-10648,-10992,-11262,-11447,-11550,-11567,-11485,-11319,-11060,-10719,-10290,-9778,-9195,-8548,-7839,-7089,-6312, -5525,-4737,-3966,-3219,-2502,-1825,-1177,-573,-3,540,1055,1553,2033,2506,2985,3474,3970,4494,5040,5610, 6197,6803,7416,8037,8637,9214,9755,10236,10652,10989,11234,11388,11441,11396,11255,11016,10682,10258,9755,9169, 8510,7788,7015,6194,5338,4456,3556,2645,1722,797,-128,-1059,-1976,-2885,-3774,-4631,-5455,-6243,-6987,-7687, -8341,-8951,-9516,-10022,-10470,-10857,-11177,-11417,-11575,-11643,-11624,-11505,-11298,-11005,-10620,-10154,-9615,-9006,-8337,-7614, -6858,-6082,-5296,-4515,-3757,-3023,-2325,-1663,-1037,-452,107,634,1141,1633,2111,2589,3074,3570,4079,4617, 5176,5760,6360,6974,7596,8213,8811,9386,9910,10380,10777,11083,11301,11419,11434,11347,11167,10892,10524,10070, 9537,8931,8250,7513,6725,5890,5023,4132,3225,2305,1384,462,-458,-1376,-2283,-3177,-4052,-4894,-5705,-6478, -7207,-7890,-8528,-9112,-9644,-10125,-10543,-10905,-11191,-11404,-11529,-11564,-11511,-11361,-11113,-10783,-10366,-9867,-9296,-8660, -7970,-7239,-6469,-5687,-4900,-4123,-3367,-2642,-1953,-1300,-687,-112,433,956,1458,1940,2420,2897,3388,3889, 4406,4948,5510,6095,6694,7305,7920,8528,9105,9660,10161,10599,10956,11232,11410,11486,11459,11333,11107,10791, 10389,9898,9336,8705,8008,7251,6447,5598,4716,3813,2892,1969,1039,114,-803,-1721,-2620,-3504,-4371,-5202, -6007,-6770,-7489,-8161,-8775,-9347,-9860,-10311,-10710,-11040,-11298,-11480,-11576,-11586,-11504,-11319,-11046,-10682,-10234,-9709, -9117,-8463,-7766,-7024,-6259,-5484,-4706,-3940,-3199,-2492,-1821,-1185,-587,-26,508,1019,1513,2000,2480,2967, 3464,3976,4508,5065,5643,6238,6846,7465,8071,8673,9244,9774,10250,10659,10987,11222,11362,11399,11324,11159, 10892,10532,10091,9571,8980,8326,7605,6833,6015,5154,4264,3348,2425,1492,565,-361,-1276,-2182,-3066,-3938, -4785,-5606,-6394,-7144,-7845,-8500,-9100,-9650,-10138,-10565,-10929,-11227,-11455,-11600,-11666,-11646,-11526,-11313,-10999,-10606, -10122,-9564,-8943,-8268,-7548,-6792,-6017,-5235,-4456,-3691,-2953,-2245,-1580,-952,-359,198,727,1241,1738,2226, 2711,3204,3711,4235,4776,5342,5927,6528,7134,7746,8350,8936,9486,9995,10440,10822,11115,11317,11418,11418, 11309,11104,10798,10408,9932,9385,8770,8094,7363,6579,5749,4883,3985,3069,2138,1206,279,-649,-1556,-2453, -3327,-4182,-5014,-5814,-6589,-7323,-8007,-8647,-9227,-9754,-10219,-10615,-10953,-11218,-11413,-11527,-11561,-11502,-11348,-11105, -10763,-10336,-9826,-9243,-8597,-7909,-7176,-6419,-5648,-4875,-4107,-3358,-2637,-1953,-1302,-691,-115,431,951,1453, 1942,2432,2920,3415,3932,4465,5017,5595,6189,6796,7409,8021,8619,9192,9722,10211,10628,10976,11233,11395, 11463,11423,11274,11028,10687,10256,9744,9163,8518,7819,7061,6263,5421,4547,3644,2716,1782,840,-94,-1017, -1924,-2813,-3676,-4522,-5339,-6128,-6885,-7602,-8274,-8898,-9460,-9969,-10414,-10787,-11091,-11329,-11490,-11575,-11572,-11483, -11301,-11025,-10651,-10195,-9654,-9043,-8381,-7666,-6924,-6155,-5375,-4604,-3837,-3099,-2384,-1703,-1065,-458,115,655, 1173,1671,2162,2653,3143,3649,4173,4713,5278,5861,6461,7068,7679,8279,8865,9422,9927,10384,10768,11081, 11301,11426,11449,11372,11187,10909,10531,10070,9529,8924,8252,7533,6765,5957,5108,4231,3322,2397,1460,525, -412,-1331,-2233,-3109,-3963,-4793,-5594,-6360,-7102,-7799,-8454,-9056,-9602,-10089,-10507,-10853,-11131,-11331,-11456,-11504, -11466,-11335,-11122,-10807,-10406,-9919,-9355,-8722,-8037,-7311,-6560,-5789,-5015,-4255,-3501,-2778,-2080,-1420,-797,-207, 351,878,1387,1879,2366,2852,3349,3859,4392,4941,5512,6106,6711,7326,7938,8537,9116,9654,10141,10572, 10927,11202,11386,11473,11460,11341,11119,10806,10392,9896,9323,8683,7987,7243,6447,5625,4764,3874,2961,2029, 1089,150,-784,-1707,-2603,-3480,-4328,-5148,-5933,-6689,-7410,-8089,-8727,-9314,-9846,-10310,-10707,-11029,-11280,-11454, -11548,-11560,-11490,-11330,-11081,-10739,-10310,-9798,-9208,-8554,-7848,-7110,-6348,-5570,-4793,-4035,-3287,-2571,-1878,-1225, -609,-22,532,1056,1566,2059,2553,3044,3549,4067,4606,5165,5745,6345,6954,7566,8173,8762,9323,9841, 10303,10702,11022,11257,11398,11447,11396,11245,10992,10646,10206,9682,9082,8424,7708,6945,6142,5310,4446,3554, 2646,1720,786,-146,-1079,-1991,-2881,-3743,-4578,-5378,-6146,-6880,-7574,-8235,-8846,-9407,-9910,-10349,-10720,-11012, -11231,-11366,-11424,-11393,-11278,-11076,-10790,-10410,-9948,-9408,-8791,-8117,-7397,-6647,-5880,-5104,-4335,-3587,-2855,-2162, -1495,-863,-265,299,839,1350,1848,2335,2821,3311,3811,4332,4874,5439,6023,6624,7233,7845,8443,9023, 9573,10068,10506,10870,11155,11352,11451,11461,11368,11175,10887,10506,10030,9475,8844,8155,7410,6622,5792,4941, 4060,3158,2242,1308,371,-566,-1496,-2411,-3306,-4167,-4998,-5793,-6552,-7272,-7960,-8599,-9197,-9741,-10230,-10654, -11003,-11278,-11475,-11586,-11613,-11556,-11408,-11180,-10858,-10451,-9963,-9402,-8770,-8081,-7349,-6591,-5822,-5045,-4278,-3537, -2816,-2128,-1472,-849,-265,295,827,1337,1837,2328,2819,3316,3828,4357,4910,5482,6073,6679,7290,7899, 8493,9062,9595,10070,10483,10820,11072,11234,11295,11266,11143,10916,10600,10186,9692,9117,8471,7765,7009,6209, 5375,4516,3635,2739,1820,902,-22,-948,-1865,-2764,-3641,-4485,-5299,-6074,-6810,-7508,-8160,-8771,-9338,-9847, -10303,-10686,-11005,-11241,-11400,-11472,-11456,-11350,-11159,-10881,-10517,-10070,-9549,-8955,-8292,-7584,-6837,-6068,-5292,-4516, -3758,-3022,-2316,-1642,-1002,-400,175,724,1246,1752,2246,2734,3224,3726,4240,4783,5340,5915,6516,7121, 7734,8339,8923,9483,9997,10452,10837,11144,11356,11478,11504,11432,11265,10997,10644,10200,9676,9075,8398,7671, 6893,6069,5211,4338,3438,2531,1609,682,-243,-1166,-2085,-2979,-3856,-4700,-5513,-6284,-7013,-7701,-8344,-8938, -9488,-9980,-10418,-10790,-11090,-11305,-11442,-11487,-11443,-11313,-11093,-10789,-10399,-9928,-9384,-8774,-8098,-7386,-6632,-5870, -5091,-4324,-3575,-2853,-2157,-1499,-876,-286,275,813,1331,1826,2319,2813,3309,3813,4337,4881,5442,6027, 6623,7229,7834,8432,9007,9546,10040,10465,10821,11092,11267,11350,11329,11215,11009,10705,10318,9848,9297,8672, 7983,7237,6438,5605,4736,3852,2949,2038,1121,199,-715,-1626,-2528,-3411,-4272,-5102,-5898,-6657,-7367,-8030, -8654,-9220,-9736,-10200,-10601,-10941,-11204,-11385,-11489,-11497,-11417,-11245,-10987,-10640,-10211,-9705,-9133,-8497,-7805,-7076, -6315,-5543,-4773,-4010,-3269,-2557,-1874,-1233,-622,-47,499,1024,1536,2030,2524,3014,3516,4029,4558,5110, 5685,6271,6871,7480,8084,8672,9235,9756,10228,10630,10959,11196,11338,11381,11325,11170,10925,10586,10165,9662, 9085,8438,7728,6964,6149,5300,4421,3521,2609,1691,768,-151,-1064,-1971,-2868,-3742,-4595,-5417,-6202,-6951, -7648,-8304,-8906,-9456,-9953,-10393,-10773,-11084,-11320,-11481,-11558,-11539,-11436,-11232,-10942,-10567,-10111,-9584,-8985,-8333, -7632,-6895,-6134,-5364,-4595,-3837,-3107,-2402,-1731,-1102,-499,68,609,1133,1638,2139,2635,3137,3643,4166, 4707,5269,5848,6440,7044,7646,8244,8817,9364,9864,10311,10681,10976,11180,11280,11286,11183,10993,10707,10329, 9874,9349,8748,8084,7358,6580,5759,4902,4014,3113,2197,1277,359,-552,-1456,-2351,-3230,-4086,-4920,-5728, -6496,-7223,-7907,-8537,-9119,-9641,-10106,-10512,-10858,-11133,-11337,-11459,-11499,-11445,-11300,-11060,-10732,-10323,-9829,-9264, -8641,-7966,-7250,-6502,-5737,-4966,-4204,-3450,-2735,-2042,-1388,-766,-181,370,902,1418,1917,2416,2909,3412, 3925,4456,5004,5571,6157,6754,7358,7959,8546,9109,9639,10120,10538,10883,11145,11314,11380,11348,11211,10980, 10658,10250,9763,9203,8574,7889,7145,6356,5520,4647,3752,2835,1911,987,61,-854,-1751,-2642,-3512,-4356, -5180,-5975,-6734,-7454,-8125,-8744,-9309,-9812,-10264,-10645,-10965,-11219,-11392,-11489,-11501,-11423,-11253,-10987,-10633,-10196, -9680,-9093,-8451,-7763,-7033,-6285,-5524,-4757,-4003,-3264,-2555,-1874,-1230,-622,-44,501,1027,1536,2032,2532, 3035,3543,4064,4603,5161,5737,6323,6921,7525,8118,8696,9241,9744,10197,10583,10894,11120,11246,11276,11203, 11028,10758,10397,9953,9433,8846,8195,7486,6729,5924,5083,4207,3306,2386,1463,533,-391,-1300,-2189,-3067, -3925,-4753,-5559,-6331,-7075,-7774,-8420,-9023,-9565,-10044,-10460,-10812,-11095,-11306,-11444,-11497,-11471,-11349,-11139,-10837, -10445,-9970,-9422,-8803,-8136,-7425,-6686,-5927,-5160,-4398,-3649,-2916,-2221,-1551,-917,-319,243,783,1300,1806, 2301,2798,3300,3813,4342,4886,5453,6040,6635,7243,7845,8434,9003,9533,10019,10453,10816,11094,11289,11386, 11381,11277,11066,10763,10374,9898,9352,8739,8065,7337,6564,5746,4897,4014,3108,2184,1257,325,-599,-1506, -2395,-3263,-4112,-4928,-5718,-6479,-7209,-7887,-8524,-9113,-9635,-10097,-10493,-10817,-11079,-11263,-11366,-11392,-11336,-11189, -10952,-10621,-10206,-9708,-9137,-8501,-7820,-7099,-6358,-5598,-4837,-4083,-3345,-2626,-1942,-1284,-666,-80,477,1007, 1519,2020,2514,3011,3516,4038,4571,5126,5700,6289,6886,7488,8082,8664,9210,9719,10178,10576,10899,11136, 11293,11345,11301,11152,10906,10566,10135,9625,9044,8399,7701,6946,6156,5328,4467,3574,2666,1738,805,-127, -1053,-1960,-2843,-3706,-4539,-5342,-6120,-6864,-7572,-8234,-8854,-9416,-9925,-10359,-10732,-11031,-11259,-11407,-11476,-11466, -11371,-11186,-10912,-10550,-10101,-9574,-8979,-8318,-7622,-6884,-6130,-5369,-4613,-3863,-3134,-2430,-1757,-1113,-508,72, 617,1139,1648,2147,2639,3143,3653,4180,4719,5282,5862,6457,7063,7666,8256,8829,9368,9863,10295,10670, 10961,11167,11287,11307,11227,11047,10772,10406,9948,9409,8804,8136,7418,6645,5843,5005,4139,3243,2336,1410, 480,-450,-1374,-2273,-3148,-4003,-4824,-5615,-6374,-7096,-7787,-8431,-9023,-9573,-10055,-10472,-10820,-11092,-11289,-11411, -11442,-11401,-11269,-11052,-10748,-10354,-9881,-9334,-8713,-8038,-7325,-6580,-5824,-5061,-4307,-3566,-2845,-2150,-1494,-862, -268,303,846,1361,1872,2367,2865,3372,3887,4420,4970,5539,6126,6723,7328,7928,8515,9074,9592,10059, 10468,10805,11057,11223,11298,11276,11156,10936,10623,10220,9731,9166,8530,7838,7094,6307,5486,4631,3758,2857, 1946,1021,92,-838,-1752,-2648,-3521,-4367,-5174,-5952,-6695,-7402,-8071,-8691,-9267,-9790,-10246,-10640,-10960,-11208, -11374,-11458,-11454,-11374,-11204,-10952,-10609,-10182,-9682,-9106,-8466,-7774,-7050,-6291,-5529,-4766,-4019,-3280,-2576,-1896, -1251,-632,-44,516,1046,1560,2067,2564,3061,3573,4093,4629,5187,5766,6356,6957,7562,8162,8738,9291, 9790,10241,10623,10929,11146,11281,11320,11261,11105,10855,10514,10088,9574,8981,8327,7610,6849,6046,5208,4353, 3469,2568,1658,737,-189,-1110,-2021,-2910,-3775,-4608,-5408,-6173,-6901,-7588,-8234,-8835,-9386,-9884,-10321,-10688, -10986,-11204,-11341,-11398,-11361,-11249,-11044,-10755,-10386,-9933,-9409,-8814,-8154,-7452,-6716,-5956,-5192,-4435,-3690,-2966, -2271,-1605,-970,-362,211,762,1292,1805,2308,2806,3314,3830,4355,4904,5467,6045,6640,7246,7842,8433, 9000,9531,10012,10431,10780,11048,11225,11316,11312,11210,11012,10725,10349,9890,9345,8728,8052,7315,6536,5711, 4862,3990,3101,2195,1283,365,-553,-1468,-2372,-3254,-4109,-4938,-5721,-6475,-7180,-7853,-8476,-9055,-9581,-10055, -10460,-10802,-11068,-11258,-11369,-11387,-11318,-11166,-10925,-10599,-10193,-9712,-9157,-8540,-7865,-7149,-6401,-5635,-4873,-4112, -3376,-2664,-1978,-1323,-702,-107,459,1000,1520,2032,2534,3034,3543,4063,4600,5149,5718,6303,6900,7498, 8095,8677,9235,9747,10207,10601,10923,11164,11304,11358,11313,11175,10943,10621,10213,9724,9154,8521,7821,7068, 6269,5428,4569,3684,2786,1878,966,49,-865,-1778,-2673,-3546,-4395,-5212,-5989,-6731,-7427,-8080,-8687,-9243, -9747,-10194,-10575,-10894,-11138,-11303,-11381,-11373,-11273,-11093,-10821,-10463,-10033,-9523,-8952,-8313,-7628,-6907,-6159,-5394, -4633,-3883,-3158,-2455,-1784,-1140,-535,51,600,1137,1658,2161,2667,3173,3685,4211,4756,5312,5885,6472, 7072,7665,8252,8824,9358,9852,10287,10653,10940,11139,11242,11251,11165,10987,10718,10354,9914,9396,8803,8147, 7425,6658,5842,4990,4120,3225,2326,1416,504,-408,-1313,-2213,-3095,-3958,-4795,-5600,-6363,-7089,-7765,-8400, -8982,-9510,-9988,-10406,-10757,-11045,-11256,-11387,-11437,-11389,-11255,-11031,-10720,-10331,-9858,-9318,-8720,-8062,-7354,-6623, -5866,-5098,-4337,-3596,-2871,-2179,-1514,-886,-285,286,833,1361,1876,2381,2891,3399,3919,4453,5002,5567, 6148,6738,7335,7935,8513,9077,9595,10073,10484,10828,11083,11256,11325,11303,11179,10965,10660,10269,9803,9258, 8645,7967,7237,6453,5625,4763,3882,2982,2075,1160,249,-660,-1558,-2450,-3322,-4168,-4996,-5788,-6541,-7258, -7921,-8538,-9103,-9608,-10062,-10455,-10784,-11041,-11226,-11331,-11348,-11270,-11107,-10860,-10516,-10095,-9600,-9038,-8416,-7746, -7034,-6298,-5542,-4784,-4031,-3294,-2584,-1905,-1254,-642,-57,502,1040,1561,2067,2576,3081,3590,4113,4654, 5205,5780,6356,6948,7540,8126,8691,9236,9735,10185,10564,10872,11094,11224,11253,11188,11025,10768,10417,9989, 9491,8917,8272,7577,6825,6026,5185,4310,3417,2507,1587,671,-243,-1146,-2041,-2923,-3783,-4626,-5438,-6214, -6956,-7655,-8305,-8904,-9445,-9929,-10356,-10721,-11016,-11242,-11393,-11465,-11446,-11338,-11140,-10852,-10478,-10024,-9495,-8904, -8259,-7567,-6843,-6102,-5342,-4583,-3834,-3107,-2411,-1742,-1102,-498,77,624,1154,1668,2174,2681,3193,3705, 4236,4783,5346,5922,6510,7105,7699,8279,8838,9366,9847,10274,10634,10916,11114,11209,11211,11112,10918,10629, 10251,9794,9265,8671,8010,7297,6532,5730,4881,4003,3103,2192,1270,355,-554,-1455,-2341,-3211,-4059,-4883, -5676,-6442,-7164,-7849,-8480,-9061,-9583,-10046,-10446,-10782,-11049,-11242,-11360,-11401,-11355,-11210,-10987,-10673,-10266,-9782, -9231,-8617,-7962,-7258,-6525,-5781,-5026,-4276,-3537,-2821,-2133,-1477,-854,-264,300,837,1361,1867,2372,2879, 3391,3910,4446,4997,5567,6148,6734,7329,7917,8486,9025,9536,9991,10388,10714,10960,11116,11173,11134,10996, 10758,10434,10016,9527,8966,8345,7660,6926,6142,5325,4463,3576,2670,1755,827,-93,-1006,-1901,-2779,-3640, -4476,-5281,-6067,-6807,-7520,-8184,-8798,-9361,-9863,-10301,-10675,-10981,-11213,-11377,-11457,-11460,-11377,-11204,-10939,-10590, -10154,-9643,-9058,-8427,-7741,-7027,-6283,-5533,-4773,-4028,-3295,-2591,-1911,-1263,-649,-64,495,1031,1551,2060, 2565,3073,3593,4120,4670,5231,5805,6395,6987,7580,8172,8732,9263,9760,10194,10569,10866,11080,11208,11233, 11164,10998,10734,10381,9938,9421,8840,8191,7490,6746,5954,5128,4267,3378,2477,1558,634,-282,-1191,-2078, -2949,-3797,-4618,-5405,-6169,-6898,-7585,-8232,-8827,-9369,-9848,-10262,-10608,-10890,-11091,-11221,-11268,-11239,-11124,-10920, -10627,-10250,-9786,-9254,-8650,-7996,-7303,-6576,-5833,-5084,-4331,-3598,-2875,-2181,-1522,-886,-285,286,838,1365, 1875,2382,2885,3394,3916,4445,4996,5559,6140,6731,7322,7907,8484,9028,9539,10004,10406,10741,10996,11168, 11251,11236,11123,10912,10607,10213,9732,9181,8560,7885,7154,6385,5575,4731,3860,2962,2051,1129,200,-720, -1629,-2519,-3387,-4231,-5042,-5816,-6568,-7283,-7956,-8585,-9166,-9691,-10152,-10548,-10872,-11123,-11298,-11394,-11408,-11346, -11200,-10962,-10640,-10232,-9744,-9185,-8561,-7890,-7181,-6443,-5695,-4944,-4195,-3467,-2757,-2073,-1420,-792,-200,368, 908,1436,1947,2454,2962,3473,4001,4537,5095,5673,6259,6847,7441,8032,8598,9134,9630,10076,10459,10763, 10988,11128,11178,11132,10987,10750,10418,10001,9495,8922,8284,7587,6845,6064,5245,4399,3525,2627,1718,802, -119,-1028,-1932,-2809,-3667,-4493,-5287,-6050,-6776,-7465,-8117,-8720,-9274,-9775,-10206,-10573,-10869,-11087,-11226,-11288, -11266,-11169,-10977,-10706,-10352,-9917,-9401,-8820,-8178,-7493,-6769,-6024,-5272,-4526,-3783,-3061,-2363,-1694,-1046,-431, 154,710,1250,1772,2285,2789,3301,3820,4351,4894,5459,6036,6626,7217,7810,8388,8946,9461,9939,10359, 10701,10972,11157,11254,11261,11170,10988,10708,10340,9886,9357,8751,8082,7362,6597,5793,4957,4094,3208,2307, 1393,476,-445,-1359,-2263,-3137,-3993,-4814,-5602,-6350,-7067,-7740,-8376,-8961,-9499,-9980,-10396,-10741,-11016,-11206, -11320,-11353,-11304,-11172,-10952,-10648,-10263,-9798,-9262,-8660,-8001,-7303,-6571,-5824,-5070,-4326,-3590,-2883,-2193,-1539, -909,-306,271,817,1353,1870,2381,2883,3398,3919,4455,5005,5576,6155,6746,7340,7924,8498,9044,9547, 10004,10393,10713,10948,11101,11160,11132,11004,10791,10480,10086,9609,9051,8425,7740,6997,6217,5403,4555,3684, 2799,1901,992,77,-837,-1741,-2636,-3501,-4345,-5152,-5922,-6658,-7356,-8003,-8611,-9177,-9688,-10140,-10528,-10844, -11094,-11251,-11336,-11331,-11245,-11078,-10822,-10483,-10070,-9575,-9016,-8397,-7722,-7008,-6278,-5523,-4769,-4026,-3294,-2594, -1916,-1268,-644,-54,516,1060,1593,2112,2624,3134,3653,4184,4725,5281,5857,6439,7034,7622,8206,8769, 9299,9782,10214,10580,10865,11062,11175,11199,11126,10960,10704,10361,9935,9425,8843,8193,7484,6723,5924,5094, 4233,3350,2457,1549,641,-267,-1180,-2076,-2961,-3821,-4657,-5457,-6220,-6938,-7621,-8254,-8844,-9383,-9868,-10296, -10660,-10949,-11170,-11307,-11356,-11322,-11204,-11000,-10712,-10339,-9894,-9373,-8792,-8149,-7465,-6744,-5997,-5241,-4491,-3752, -3030,-2341,-1671,-1033,-429,155,714,1253,1782,2297,2812,3327,3845,4382,4933,5492,6074,6659,7251,7836, 8410,8962,9480,9946,10356,10691,10949,11113,11188,11174,11066,10864,10572,10202,9746,9210,8608,7942,7213,6438, 5625,4780,3913,3027,2128,1225,323,-585,-1484,-2373,-3245,-4094,-4915,-5701,-6448,-7157,-7818,-8427,-8995,-9509, -9970,-10367,-10702,-10965,-11156,-11257,-11276,-11210,-11052,-10811,-10486,-10081,-9607,-9056,-8446,-7789,-7088,-6359,-5608,-4854, -4106,-3371,-2660,-1976,-1325,-700,-110,459,1007,1540,2062,2578,3088,3602,4131,4673,5225,5789,6375,6961, 7552,8136,8699,9238,9735,10181,10566,10873,11096,11225,11260,11206,11056,10813,10487,10075,9589,9027,8396,7703, 6960,6164,5332,4469,3587,2693,1787,876,-28,-934,-1831,-2711,-3578,-4417,-5231,-6010,-6746,-7440,-8093,-8686, -9233,-9723,-10160,-10535,-10842,-11077,-11237,-11314,-11303,-11204,-11023,-10744,-10389,-9952,-9446,-8872,-8246,-7570,-6857,-6120, -5371,-4615,-3876,-3150,-2448,-1774,-1136,-530,51,612,1150,1674,2189,2699,3213,3732,4262,4806,5363,5937, 6520,7108,7690,8265,8820,9343,9821,10244,10601,10877,11067,11162,11161,11069,10882,10603,10239,9798,9281,8690, 8040,7330,6573,5765,4924,4051,3163,2256,1347,440,-461,-1360,-2246,-3118,-3967,-4795,-5594,-6356,-7077,-7757, -8384,-8961,-9482,-9949,-10353,-10695,-10968,-11171,-11297,-11339,-11292,-11158,-10930,-10620,-10219,-9750,-9209,-8608,-7957,-7264, -6538,-5798,-5048,-4294,-3559,-2840,-2150,-1490,-864,-268,304,850,1384,1904,2415,2925,3438,3963,4502,5054, 5617,6199,6785,7373,7957,8524,9070,9582,10044,10442,10770,11018,11179,11236,11206,11076,10852,10538,10142,9668, 9121,8508,7832,7107,6331,5511,4657,3778,2877,1971,1054,146,-754,-1653,-2529,-3388,-4226,-5042,-5827,-6577, -7288,-7951,-8565,-9122,-9625,-10064,-10449,-10763,-11006,-11182,-11273,-11281,-11208,-11039,-10787,-10443,-10019,-9519,-8955,-8329, -7663,-6958,-6227,-5480,-4730,-3987,-3260,-2553,-1876,-1227,-610,-30,530,1067,1585,2101,2612,3119,3639,4165, 4702,5266,5830,6415,7003,7589,8168,8721,9250,9738,10172,10543,10840,11051,11172,11199,11125,10955,10693,10338, 9911,9400,8827,8185,7488,6742,5952,5116,4256,3365,2459,1543,624,-288,-1190,-2078,-2945,-3797,-4623,-5423, -6194,-6924,-7618,-8266,-8858,-9397,-9875,-10290,-10646,-10927,-11139,-11278,-11339,-11314,-11203,-11005,-10718,-10344,-9885,-9359, -8767,-8123,-7436,-6719,-5981,-5233,-4486,-3744,-3029,-2331,-1665,-1027,-425,149,702,1234,1749,2261,2774,3287, 3808,4343,4892,5458,6034,6620,7213,7802,8371,8920,9430,9901,10310,10651,10917,11094,11186,11173,11066,10861, 10560,10173,9714,9170,8566,7903,7185,6427,5621,4778,3910,3017,2101,1185,264,-648,-1549,-2433,-3294,-4133, -4946,-5732,-6490,-7205,-7883,-8517,-9091,-9611,-10069,-10463,-10787,-11043,-11224,-11331,-11359,-11298,-11157,-10922,-10606,-10203, -9718,-9167,-8555,-7889,-7188,-6461,-5715,-4970,-4226,-3493,-2789,-2100,-1443,-819,-228,340,884,1411,1923,2434, 2943,3462,3988,4526,5080,5653,6235,6829,7415,7999,8563,9094,9588,10032,10414,10722,10954,11094,11143,11091, 10945,10708,10375,9954,9455,8887,8255,7565,6830,6051,5235,4382,3503,2605,1694,773,-146,-1059,-1953,-2828, -3683,-4507,-5304,-6075,-6811,-7511,-8165,-8778,-9332,-9828,-10264,-10629,-10925,-11148,-11293,-11372,-11357,-11265,-11085,-10819, -10467,-10031,-9518,-8936,-8300,-7613,-6895,-6161,-5414,-4668,-3924,-3202,-2500,-1825,-1178,-569,16,576,1112,1634, 2148,2658,3170,3691,4222,4768,5333,5910,6501,7091,7688,8265,8817,9336,9815,10235,10587,10868,11063,11172, 11182,11096,10919,10646,10280,9827,9300,8701,8045,7333,6579,5783,4955,4096,3214,2308,1395,474,-445,-1353, -2248,-3120,-3964,-4780,-5562,-6316,-7037,-7718,-8356,-8947,-9483,-9961,-10372,-10715,-10985,-11179,-11297,-11342,-11295,-11168, -10956,-10662,-10281,-9819,-9282,-8681,-8027,-7327,-6604,-5859,-5110,-4367,-3634,-2917,-2229,-1567,-931,-327,248,797, 1332,1854,2365,2877,3395,3917,4456,5008,5582,6166,6756,7352,7937,8508,9053,9556,10010,10399,10717,10962, 11116,11183,11155,11033,10817,10508,10109,9628,9071,8445,7767,7032,6256,5450,4607,3742,2858,1950,1039,118, -797,-1703,-2589,-3452,-4287,-5093,-5863,-6598,-7296,-7956,-8573,-9143,-9654,-10108,-10495,-10809,-11052,-11213,-11295,-11298, -11216,-11049,-10801,-10467,-10053,-9558,-8995,-8370,-7695,-6980,-6242,-5494,-4746,-4004,-3275,-2572,-1896,-1244,-626,-34, 529,1077,1599,2115,2623,3133,3648,4178,4719,5277,5849,6435,7027,7620,8205,8769,9297,9784,10216,10581, 10868,11077,11197,11225,11159,11001,10748,10405,9974,9466,8880,8233,7525,6768,5974,5147,4296,3419,2527,1619, 703,-216,-1126,-2030,-2914,-3774,-4604,-5396,-6156,-6880,-7566,-8208,-8803,-9355,-9847,-10281,-10643,-10936,-11152,-11289, -11342,-11311,-11199,-11001,-10722,-10357,-9917,-9398,-8816,-8175,-7488,-6764,-6022,-5272,-4527,-3791,-3073,-2383,-1717,-1080, -473,105,661,1200,1725,2235,2742,3257,3781,4313,4859,5421,6003,6592,7186,7774,8351,8906,9416,9885, 10290,10628,10884,11055,11135,11125,11017,10823,10535,10163,9700,9162,8560,7885,7158,6385,5577,4739,3874,2993, 2098,1193,287,-629,-1532,-2428,-3304,-4149,-4964,-5743,-6488,-7192,-7851,-8466,-9039,-9559,-10021,-10426,-10762,-11019, -11203,-11304,-11318,-11251,-11095,-10852,-10534,-10132,-9653,-9102,-8491,-7829,-7121,-6384,-5632,-4881,-4131,-3397,-2686,-2002, -1350,-725,-130,445,991,1523,2043,2554,3064,3581,4105,4647,5197,5767,6351,6941,7531,8122,8690,9235, 9732,10178,10564,10874,11097,11235,11276,11231,11087,10853,10533,10127,9640,9077,8445,7754,7007,6211,5388,4529, 3656,2767,1866,961,50,-859,-1760,-2650,-3516,-4359,-5168,-5942,-6672,-7367,-8014,-8612,-9165,-9667,-10107,-10490, -10800,-11039,-11199,-11270,-11259,-11163,-10974,-10703,-10354,-9927,-9423,-8855,-8228,-7551,-6841,-6103,-5351,-4603,-3865,-3146, -2449,-1780,-1146,-537,42,598,1136,1657,2169,2677,3185,3702,4228,4772,5323,5897,6481,7072,7657,8237, 8792,9322,9801,10220,10577,10849,11042,11138,11141,11048,10864,10590,10233,9795,9275,8687,8028,7314,6550,5739, 4898,4031,3144,2247,1343,437,-468,-1372,-2265,-3144,-3999,-4829,-5625,-6387,-7102,-7778,-8405,-8981,-9506,-9980, -10390,-10742,-11021,-11226,-11352,-11389,-11339,-11204,-10979,-10666,-10276,-9811,-9273,-8678,-8024,-7330,-6601,-5855,-5097,-4347, -3612,-2894,-2205,-1550,-922,-320,247,797,1328,1849,2362,2867,3383,3907,4441,4992,5555,6134,6723,7314, 7900,8476,9024,9538,9998,10400,10733,10982,11137,11204,11171,11048,10828,10522,10132,9666,9121,8512,7837,7107, 6327,5503,4651,3773,2880,1978,1070,163,-737,-1633,-2520,-3383,-4228,-5048,-5834,-6579,-7286,-7944,-8552,-9109, -9613,-10061,-10446,-10766,-11020,-11197,-11294,-11301,-11224,-11056,-10801,-10460,-10037,-9545,-8987,-8368,-7701,-6999,-6264,-5520, -4770,-4027,-3297,-2592,-1919,-1276,-661,-78,484,1020,1545,2057,2569,3079,3595,4124,4663,5217,5791,6370, 6960,7547,8128,8690,9226,9718,10154,10528,10823,11036,11156,11181,11108,10940,10681,10333,9911,9406,8833,8198, 7503,6753,5957,5118,4253,3368,2462,1554,645,-263,-1165,-2053,-2926,-3781,-4620,-5422,-6194,-6929,-7620,-8264, -8852,-9387,-9868,-10286,-10643,-10935,-11152,-11298,-11359,-11335,-11222,-11019,-10724,-10347,-9895,-9369,-8780,-8139,-7451,-6734, -5992,-5239,-4490,-3750,-3028,-2331,-1664,-1031,-426,149,697,1232,1747,2261,2769,3283,3805,4341,4887,5451, 6026,6613,7203,7790,8368,8922,9438,9912,10327,10677,10949,11132,11219,11211,11102,10903,10607,10230,9770,9243, 8643,7989,7276,6513,5703,4857,3986,3090,2181,1268,357,-543,-1443,-2326,-3190,-4033,-4849,-5640,-6395,-7114, -7790,-8417,-8990,-9503,-9958,-10351,-10679,-10940,-11131,-11244,-11273,-11217,-11074,-10840,-10519,-10113,-9631,-9083,-8473,-7811, -7117,-6393,-5650,-4903,-4158,-3428,-2717,-2033,-1377,-756,-167,399,942,1468,1980,2492,3002,3518,4045,4588, 5143,5711,6292,6886,7472,8054,8622,9156,9654,10105,10487,10802,11031,11172,11221,11172,11020,10779,10441,10023, 9527,8962,8336,7655,6918,6136,5310,4456,3570,2668,1750,834,-83,-990,-1885,-2762,-3615,-4449,-5256,-6031, -6772,-7482,-8140,-8747,-9307,-9800,-10233,-10601,-10902,-11132,-11289,-11373,-11370,-11282,-11105,-10839,-10483,-10050,-9538,-8962, -8324,-7647,-6934,-6202,-5450,-4702,-3959,-3237,-2534,-1860,-1213,-602,-15,541,1077,1599,2113,2622,3136,3657, 4189,4736,5303,5877,6465,7057,7648,8227,8782,9303,9786,10210,10568,10852,11053,11161,11174,11094,10914,10637, 10270,9822,9304,8716,8064,7363,6614,5822,4990,4127,3245,2337,1421,507,-407,-1308,-2195,-3061,-3901,-4715, -5510,-6264,-6987,-7670,-8311,-8904,-9432,-9906,-10311,-10647,-10919,-11116,-11238,-11279,-11242,-11118,-10907,-10606,-10220,-9754, -9214,-8614,-7960,-7263,-6542,-5803,-5053,-4306,-3574,-2858,-2166,-1500,-872,-269,305,855,1388,1906,2414,2926, 3442,3966,4505,5060,5630,6213,6803,7397,7984,8554,9095,9602,10057,10453,10777,11027,11189,11256,11231,11108, 10888,10573,10168,9687,9130,8510,7832,7106,6333,5525,4680,3810,2912,2005,1084,166,-754,-1656,-2541,-3402, -4239,-5043,-5819,-6564,-7272,-7941,-8567,-9140,-9656,-10108,-10496,-10808,-11050,-11221,-11312,-11323,-11251,-11098,-10852,-10522, -10110,-9616,-9053,-8431,-7760,-7049,-6313,-5570,-4820,-4079,-3353,-2649,-1968,-1318,-699,-108,455,998,1524,2033, 2544,3052,3571,4100,4643,5203,5778,6362,6956,7547,8130,8689,9221,9705,10139,10508,10803,11017,11142,11175, 11114,10958,10705,10358,9928,9415,8833,8187,7489,6743,5956,5134,4284,3407,2510,1598,678,-238,-1149,-2046, -2926,-3777,-4598,-5390,-6150,-6876,-7562,-8210,-8816,-9362,-9852,-10282,-10644,-10929,-11140,-11277,-11331,-11308,-11196,-11003, -10725,-10365,-9916,-9398,-8811,-8167,-7477,-6753,-6013,-5265,-4517,-3782,-3063,-2371,-1700,-1061,-452,128,684,1220, 1741,2254,2766,3279,3799,4334,4885,5452,6032,6619,7216,7807,8385,8935,9451,9920,10327,10664,10924,11099, 11188,11179,11081,10889,10595,10217,9754,9212,8602,7931,7207,6439,5634,4799,3936,3053,2151,1238,318,-597, -1509,-2404,-3278,-4121,-4938,-5720,-6466,-7172,-7844,-8472,-9055,-9583,-10052,-10459,-10794,-11051,-11238,-11341,-11366,-11304, -11157,-10929,-10617,-10220,-9747,-9199,-8589,-7925,-7219,-6485,-5738,-4986,-4239,-3511,-2804,-2119,-1463,-836,-241,326, 879,1404,1921,2428,2936,3449,3974,4511,5067,5636,6221,6812,7405,7992,8561,9104,9604,10049,10432,10739, 10969,11110,11160,11118,10981,10754,10435,10025,9535,8970,8339,7643,6900,6118,5300,4453,3580,2694,1792,879, -35,-946,-1850,-2737,-3605,-4439,-5240,-6006,-6738,-7425,-8075,-8681,-9238,-9742,-10187,-10564,-10875,-11107,-11261,-11329, -11317,-11216,-11036,-10766,-10420,-9992,-9487,-8917,-8286,-7607,-6889,-6147,-5400,-4644,-3904,-3182,-2485,-1816,-1176,-563, 24,583,1125,1646,2161,2670,3180,3700,4231,4774,5337,5912,6499,7093,7686,8269,8833,9359,9844,10265, 10620,10899,11091,11195,11206,11123,10948,10682,10327,9886,9368,8776,8116,7400,6637,5829,4998,4133,3257,2359, 1458,546,-366,-1273,-2171,-3053,-3911,-4737,-5532,-6287,-7002,-7677,-8306,-8889,-9425,-9905,-10326,-10680,-10963,-11167, -11292,-11332,-11287,-11154,-10935,-10634,-10253,-9793,-9265,-8670,-8018,-7323,-6595,-5848,-5095,-4346,-3610,-2896,-2211,-1551, -923,-320,248,802,1335,1852,2364,2869,3382,3901,4434,4983,5550,6126,6714,7305,7895,8469,9017,9528, 9991,10390,10717,10961,11119,11185,11158,11036,10827,10523,10140,9671,9127,8512,7835,7100,6319,5498,4649,3778, 2890,1990,1087,179,-728,-1629,-2520,-3392,-4243,-5059,-5839,-6584,-7283,-7938,-8547,-9112,-9622,-10073,-10466,-10795, -11048,-11223,-11318,-11323,-11244,-11075,-10821,-10481,-10068,-9576,-9020,-8402,-7735,-7029,-6296,-5545,-4794,-4047,-3324,-2620, -1949,-1307,-691,-103,453,996,1521,2036,2544,3055,3569,4096,4635,5193,5765,6347,6940,7528,8113,8681, 9218,9712,10156,10532,10829,11043,11164,11190,11123,10963,10714,10375,9955,9455,8887,8246,7548,6795,5997,5161, 4302,3415,2520,1616,713,-193,-1096,-1991,-2868,-3732,-4568,-5375,-6144,-6875,-7562,-8200,-8789,-9329,-9814,-10240, -10606,-10905,-11131,-11275,-11334,-11311,-11200,-10994,-10705,-10336,-9888,-9366,-8783,-8145,-7462,-6743,-6002,-5249,-4495,-3755, -3036,-2342,-1677,-1044,-442,131,683,1218,1736,2247,2753,3266,3785,4316,4861,5422,5999,6581,7173,7760, 8336,8888,9412,9888,10306,10652,10921,11100,11186,11177,11072,10869,10586,10214,9760,9233,8636,7978,7260,6492, 5681,4833,3961,3066,2164,1254,347,-556,-1455,-2338,-3210,-4063,-4886,-5683,-6438,-7156,-7828,-8447,-9020,-9536, -9995,-10396,-10731,-11000,-11194,-11307,-11339,-11286,-11138,-10906,-10582,-10180,-9701,-9155,-8550,-7897,-7201,-6474,-5732,-4979, -4236,-3502,-2794,-2113,-1462,-842,-252,312,855,1381,1899,2407,2917,3432,3957,4496,5051,5618,6199,6787, 7381,7961,8531,9073,9575,10028,10420,10737,10969,11113,11162,11112,10969,10731,10405,9996,9510,8952,8332,7651, 6913,6129,5303,4447,3561,2663,1749,840,-68,-970,-1861,-2737,-3595,-4434,-5246,-6027,-6769,-7471,-8124,-8729, -9282,-9774,-10208,-10581,-10886,-11124,-11283,-11367,-11365,-11275,-11097,-10825,-10470,-10034,-9525,-8949,-8318,-7642,-6932,-6196, -5447,-4695,-3951,-3222,-2515,-1843,-1200,-589,-6,550,1089,1614,2127,2636,3150,3670,4202,4749,5310,5884, 6471,7059,7648,8227,8786,9313,9796,10224,10590,10878,11081,11190,11204,11119,10938,10663,10304,9862,9349,8765, 8121,7421,6671,5875,5042,4175,3285,2377,1465,552,-356,-1256,-2141,-3006,-3849,-4676,-5469,-6236,-6964,-7650, -8288,-8872,-9404,-9875,-10281,-10628,-10902,-11108,-11237,-11291,-11254,-11131,-10922,-10621,-10233,-9768,-9232,-8633,-7986,-7295, -6577,-5839,-5088,-4344,-3609,-2891,-2204,-1539,-913,-313,256,803,1331,1850,2361,2870,3382,3906,4443,4997, 5563,6147,6734,7327,7913,8482,9028,9535,9998,10400,10736,10987,11151,11227,11202,11079,10858,10549,10150,9674, 9124,8510,7842,7116,6349,5535,4690,3815,2913,2000,1079,163,-747,-1644,-2523,-3382,-4219,-5027,-5814,-6562, -7273,-7946,-8567,-9131,-9645,-10095,-10479,-10794,-11039,-11214,-11312,-11327,-11261,-11105,-10862,-10528,-10111,-9616,-9051,-8430, -7761,-7056,-6325,-5576,-4828,-4081,-3355,-2644,-1959,-1310,-688,-97,465,1010,1532,2049,2558,3069,3587,4117, 4660,5222,5795,6381,6972,7561,8142,8702,9236,9724,10162,10534,10837,11056,11186,11221,11161,11004,10751,10405, 9977,9468,8895,8255,7565,6826,6042,5221,4370,3487,2586,1671,753,-166,-1073,-1965,-2836,-3686,-4510,-5305, -6069,-6803,-7496,-8151,-8751,-9302,-9791,-10216,-10574,-10862,-11076,-11217,-11279,-11262,-11155,-10969,-10691,-10328,-9880,-9360, -8771,-8130,-7443,-6727,-5989,-5240,-4501,-3760,-3044,-2347,-1681,-1043,-435,142,695,1229,1742,2255,2761,3274, 3793,4329,4878,5442,6022,6611,7205,7796,8370,8922,9438,9907,10321,10661,10932,11114,11207,11205,11105,10909, 10620,10239,9776,9235,8628,7962,7245,6480,5681,4845,3980,3091,2183,1262,342,-576,-1485,-2374,-3240,-4085, -4898,-5683,-6433,-7148,-7823,-8461,-9044,-9577,-10045,-10449,-10783,-11043,-11228,-11338,-11366,-11316,-11179,-10958,-10649,-10256, -9781,-9237,-8623,-7958,-7259,-6530,-5785,-5031,-4287,-3554,-2843,-2150,-1490,-862,-261,309,857,1389,1906,2419, 2929,3447,3970,4510,5070,5641,6226,6820,7413,7999,8567,9109,9609,10055,10442,10756,10988,11135,11192,11154, 11023,10794,10475,10067,9575,9006,8379,7691,6956,6179,5368,4525,3658,2768,1862,946,32,-884,-1786,-2668, -3525,-4357,-5154,-5919,-6652,-7345,-8001,-8612,-9172,-9676,-10121,-10500,-10801,-11034,-11184,-11257,-11249,-11156,-10980,-10722, -10377,-9951,-9449,-8876,-8243,-7562,-6846,-6110,-5360,-4611,-3874,-3152,-2456,-1784,-1140,-525,58,619,1155,1679, 2189,2698,3205,3719,4246,4792,5353,5930,6516,7110,7700,8280,8839,9366,9844,10269,10623,10904,11098,11205, 11222,11143,10970,10706,10351,9908,9381,8784,8127,7411,6650,5849,5018,4161,3279,2382,1469,550,-368,-1284, -2185,-3070,-3924,-4750,-5541,-6299,-7019,-7700,-8339,-8934,-9477,-9966,-10389,-10746,-11030,-11237,-11361,-11406,-11366,-11240, -11035,-10742,-10367,-9913,-9388,-8793,-8143,-7448,-6721,-5979,-5227,-4477,-3744,-3031,-2341,-1678,-1044,-443,133,686, 1217,1739,2252,2760,3273,3794,4327,4879,5447,6026,6618,7214,7802,8377,8927,9440,9901,10303,10632,10883, 11043,11114,11095,10983,10775,10481,10094,9627,9083,8465,7787,7057,6281,5470,4630,3767,2888,1988,1083,174, -737,-1640,-2531,-3401,-4241,-5051,-5827,-6562,-7260,-7914,-8525,-9094,-9604,-10062,-10452,-10778,-11028,-11200,-11289,-11292, -11210,-11044,-10795,-10461,-10049,-9563,-9005,-8383,-7711,-7001,-6262,-5511,-4757,-4014,-3283,-2580,-1899,-1251,-633,-43, 522,1066,1595,2109,2619,3128,3644,4167,4710,5266,5837,6423,7017,7611,8195,8762,9300,9795,10237,10611, 10909,11121,11247,11281,11221,11068,10821,10488,10069,9573,8998,8354,7651,6898,6101,5268,4410,3531,2640,1735, 822,-87,-997,-1901,-2787,-3654,-4492,-5299,-6068,-6797,-7485,-8127,-8722,-9271,-9762,-10201,-10575,-10882,-11107,-11254, -11316,-11293,-11182,-10987,-10707,-10346,-9906,-9394,-8819,-8180,-7498,-6777,-6039,-5286,-4537,-3797,-3079,-2384,-1720,-1086, -481,97,651,1189,1708,2220,2731,3244,3761,4291,4836,5394,5973,6558,7149,7737,8317,8874,9394,9871, 10286,10633,10900,11078,11165,11156,11055,10864,10581,10214,9766,9240,8642,7979,7258,6484,5674,4829,3960,3076, 2179,1274,365,-536,-1435,-2328,-3203,-4057,-4881,-5674,-6428,-7139,-7805,-8427,-8998,-9517,-9982,-10387,-10731,-11003, -11195,-11311,-11336,-11280,-11127,-10895,-10576,-10176,-9703,-9163,-8558,-7901,-7201,-6470,-5722,-4973,-4222,-3490,-2778,-2093, -1440,-817,-225,338,883,1414,1931,2442,2951,3466,3989,4524,5076,5645,6224,6812,7405,7991,8563,9107, 9611,10067,10458,10780,11012,11159,11209,11162,11021,10793,10474,10072,9591,9038,8415,7730,6989,6198,5373,4514, 3632,2735,1831,922,13,-889,-1785,-2672,-3539,-4383,-5198,-5980,-6726,-7425,-8079,-8682,-9235,-9735,-10176,-10558, -10874,-11120,-11289,-11376,-11375,-11290,-11109,-10845,-10496,-10069,-9570,-9002,-8380,-7710,-7000,-6266,-5516,-4763,-4020,-3295, -2590,-1916,-1276,-661,-80,478,1019,1544,2061,2572,3087,3605,4136,4680,5239,5812,6396,6986,7573,8154, 8713,9242,9726,10159,10522,10812,11014,11120,11133,11045,10869,10599,10244,9809,9302,8723,8080,7377,6622,5821, 4985,4118,3231,2330,1422,514,-386,-1282,-2169,-3039,-3892,-4718,-5521,-6287,-7010,-7696,-8327,-8910,-9438,-9907, -10316,-10667,-10949,-11161,-11294,-11345,-11308,-11184,-10967,-10665,-10283,-9818,-9284,-8689,-8042,-7354,-6632,-5889,-5138,-4389, -3647,-2932,-2238,-1576,-943,-343,225,775,1307,1826,2341,2849,3366,3888,4424,4974,5540,6117,6707,7296, 7885,8457,9004,9518,9983,10391,10728,10984,11155,11228,11203,11081,10864,10559,10171,9702,9162,8556,7891,7167, 6398,5582,4731,3852,2952,2042,1130,217,-689,-1580,-2463,-3326,-4166,-4983,-5773,-6527,-7244,-7915,-8533,-9100, -9609,-10062,-10447,-10772,-11029,-11212,-11318,-11340,-11278,-11126,-10882,-10550,-10139,-9651,-9092,-8476,-7814,-7111,-6384,-5643, -4892,-4150,-3418,-2711,-2027,-1377,-756,-165,394,936,1461,1973,2488,3001,3518,4046,4587,5144,5716,6296, 6884,7474,8054,8616,9147,9637,10077,10455,10762,10985,11114,11152,11090,10928,10675,10332,9908,9408,8839,8208, 7519,6779,5993,5170,4312,3426,2521,1611,692,-219,-1121,-2006,-2878,-3729,-4556,-5356,-6126,-6864,-7564,-8209, -8813,-9356,-9841,-10262,-10619,-10908,-11127,-11274,-11338,-11326,-11220,-11029,-10748,-10381,-9932,-9411,-8821,-8180,-7495,-6778, -6040,-5290,-4542,-3803,-3077,-2381,-1708,-1066,-455,119,673,1205,1727,2237,2747,3259,3781,4314,4861,5424, 6004,6591,7188,7775,8351,8906,9423,9896,10316,10670,10945,11137,11236,11240,11147,10950,10662,10290,9833,9305, 8710,8053,7345,6588,5788,4953,4088,3195,2286,1371,448,-463,-1365,-2249,-3113,-3957,-4770,-5558,-6313,-7039, -7717,-8354,-8940,-9465,-9932,-10332,-10662,-10929,-11120,-11234,-11270,-11224,-11092,-10871,-10560,-10168,-9694,-9149,-8538,-7880, -7183,-6460,-5719,-4971,-4228,-3499,-2785,-2099,-1440,-813,-217,350,894,1420,1934,2441,2949,3461,3988,4524, 5078,5647,6229,6816,7407,7989,8558,9092,9592,10039,10428,10746,10983,11138,11197,11160,11025,10794,10470,10058, 9566,9005,8378,7697,6961,6186,5373,4526,3649,2753,1840,920,-2,-918,-1819,-2697,-3555,-4386,-5186,-5960, -6701,-7405,-8067,-8685,-9248,-9756,-10196,-10573,-10878,-11111,-11267,-11346,-11345,-11262,-11093,-10835,-10492,-10066,-9560,-8989, -8354,-7678,-6962,-6226,-5479,-4734,-3994,-3270,-2567,-1892,-1245,-630,-42,517,1053,1575,2086,2592,3103,3620, 4151,4693,5253,5829,6416,7012,7604,8183,8743,9271,9756,10180,10547,10835,11041,11160,11187,11115,10948,10686, 10335,9895,9374,8786,8136,7432,6678,5888,5064,4209,3328,2432,1518,598,-321,-1235,-2129,-3001,-3851,-4670, -5460,-6215,-6936,-7624,-8268,-8860,-9407,-9892,-10313,-10664,-10941,-11145,-11276,-11317,-11284,-11164,-10962,-10673,-10299,-9845, -9319,-8722,-8069,-7376,-6651,-5911,-5161,-4417,-3684,-2968,-2274,-1614,-978,-376,204,756,1284,1806,2312,2821, 3335,3854,4390,4939,5505,6086,6675,7271,7859,8435,8982,9490,9949,10349,10682,10932,11101,11178,11163,11050, 10843,10544,10157,9684,9136,8516,7840,7111,6339,5530,4688,3826,2938,2036,1122,202,-716,-1625,-2516,-3385, -4225,-5032,-5808,-6550,-7256,-7922,-8543,-9118,-9640,-10100,-10497,-10820,-11074,-11247,-11339,-11347,-11276,-11119,-10881,-10554, -10146,-9665,-9109,-8492,-7820,-7114,-6374,-5625,-4874,-4134,-3402,-2700,-2019,-1368,-744,-148,420,963,1490,2006, 2514,3021,3539,4064,4602,5160,5735,6319,6911,7508,8097,8661,9204,9693,10136,10512,10815,11032,11167,11209, 11155,11008,10769,10439,10026,9527,8950,8310,7609,6861,6072,5247,4400,3526,2636,1734,821,-95,-1007,-1912, -2796,-3658,-4488,-5286,-6050,-6778,-7464,-8110,-8710,-9261,-9760,-10199,-10569,-10872,-11095,-11239,-11304,-11280,-11176,-10985, -10711,-10356,-9920,-9414,-8838,-8198,-7515,-6795,-6052,-5300,-4552,-3814,-3094,-2400,-1732,-1091,-477,102,662,1202, 1725,2239,2746,3260,3782,4310,4860,5420,5995,6583,7179,7768,8349,8905,9428,9900,10314,10657,10923,11102, 11195,11193,11100,10912,10635,10271,9824,9293,8691,8027,7306,6538,5727,4889,4027,3147,2249,1345,434,-474, -1384,-2281,-3159,-4011,-4836,-5620,-6371,-7077,-7749,-8372,-8951,-9477,-9952,-10359,-10704,-10974,-11170,-11288,-11315,-11256, -11114,-10885,-10574,-10182,-9717,-9179,-8579,-7922,-7222,-6488,-5737,-4984,-4232,-3499,-2789,-2103,-1446,-818,-216,357, 907,1438,1960,2471,2980,3497,4021,4561,5110,5678,6258,6849,7440,8029,8602,9150,9655,10108,10498,10815, 11055,11197,11254,11213,11083,10859,10547,10150,9673,9116,8495,7808,7069,6281,5453,4603,3727,2837,1937,1031, 120,-785,-1692,-2581,-3451,-4296,-5109,-5886,-6627,-7322,-7975,-8582,-9139,-9643,-10091,-10474,-10796,-11043,-11213,-11298, -11298,-11207,-11037,-10777,-10433,-10015,-9520,-8963,-8340,-7670,-6963,-6227,-5474,-4722,-3978,-3255,-2553,-1881,-1233,-623, -32,525,1070,1599,2111,2625,3138,3654,4184,4729,5285,5857,6438,7032,7619,8198,8760,9288,9774,10203, 10566,10851,11050,11156,11168,11087,10918,10656,10303,9872,9365,8783,8138,7428,6673,5868,5027,4165,3278,2385, 1481,575,-331,-1231,-2125,-3004,-3863,-4697,-5498,-6262,-6987,-7664,-8299,-8881,-9411,-9890,-10309,-10664,-10953,-11168, -11304,-11359,-11321,-11197,-10983,-10683,-10307,-9847,-9321,-8736,-8093,-7398,-6679,-5933,-5175,-4421,-3685,-2962,-2270,-1604, -971,-364,212,766,1303,1826,2338,2854,3368,3892,4428,4978,5543,6120,6707,7297,7890,8460,9017,9528, 10000,10406,10747,11000,11173,11246,11226,11108,10902,10604,10221,9763,9228,8625,7958,7236,6463,5644,4792,3918, 3026,2124,1215,308,-594,-1489,-2377,-3245,-4088,-4913,-5704,-6456,-7171,-7835,-8452,-9018,-9525,-9980,-10373,-10705, -10964,-11153,-11261,-11284,-11215,-11060,-10821,-10489,-10079,-9595,-9046,-8436,-7778,-7078,-6351,-5605,-4854,-4106,-3373,-2664, -1984,-1330,-714,-123,440,985,1513,2027,2541,3051,3565,4092,4633,5185,5758,6332,6919,7506,8085,8645, 9182,9676,10121,10497,10803,11025,11156,11189,11127,10971,10721,10379,9959,9468,8902,8267,7581,6838,6048,5215, 4349,3463,2559,1645,733,-176,-1073,-1966,-2844,-3701,-4542,-5351,-6126,-6867,-7564,-8215,-8813,-9356,-9842,-10271, -10637,-10935,-11163,-11317,-11393,-11381,-11279,-11089,-10811,-10446,-10003,-9485,-8905,-8269,-7589,-6875,-6142,-5390,-4637,-3893, -3168,-2472,-1802,-1159,-550,30,582,1119,1639,2152,2663,3178,3696,4229,4776,5340,5914,6499,7089,7677, 8252,8806,9328,9804,10227,10584,10864,11060,11157,11162,11067,10878,10595,10224,9774,9252,8665,8013,7305,6548, 5753,4911,4040,3146,2240,1322,411,-493,-1391,-2275,-3143,-3989,-4811,-5602,-6367,-7088,-7772,-8404,-8985,-9508, -9972,-10374,-10711,-10982,-11176,-11298,-11343,-11301,-11164,-10947,-10640,-10242,-9768,-9226,-8622,-7975,-7280,-6555,-5818,-5069, -4324,-3589,-2874,-2185,-1527,-902,-307,261,802,1332,1844,2354,2865,3380,3902,4439,4990,5560,6139,6722, 7312,7896,8461,8995,9502,9953,10346,10670,10915,11071,11130,11095,10961,10728,10409,9998,9515,8960,8345,7667, 6939,6161,5351,4495,3613,2713,1802,878,-38,-947,-1839,-2717,-3575,-4410,-5214,-5998,-6738,-7449,-8114,-8728, -9290,-9794,-10233,-10609,-10916,-11152,-11318,-11401,-11408,-11330,-11162,-10905,-10562,-10134,-9631,-9055,-8431,-7754,-7048,-6310, -5565,-4811,-4069,-3338,-2635,-1954,-1304,-688,-99,462,1002,1527,2040,2549,3061,3583,4111,4662,5222,5796, 6383,6973,7562,8150,8705,9233,9726,10157,10529,10824,11037,11165,11192,11126,10963,10703,10354,9917,9405,8829, 8186,7490,6749,5963,5141,4285,3400,2502,1587,667,-246,-1152,-2037,-2907,-3754,-4574,-5361,-6124,-6851,-7539, -8185,-8781,-9323,-9803,-10219,-10566,-10849,-11053,-11185,-11235,-11209,-11098,-10899,-10611,-10239,-9782,-9257,-8660,-8012,-7325, -6604,-5865,-5121,-4371,-3640,-2918,-2225,-1564,-927,-323,250,805,1336,1851,2360,2866,3378,3901,4432,4984, 5546,6126,6715,7303,7885,8459,9001,9508,9971,10372,10704,10959,11132,11215,11202,11091,10884,10583,10193,9718, 9171,8555,7884,7158,6393,5587,4747,3879,2984,2076,1157,232,-684,-1592,-2480,-3348,-4190,-5001,-5775,-6526, -7240,-7913,-8541,-9122,-9648,-10109,-10506,-10831,-11084,-11261,-11359,-11375,-11317,-11172,-10939,-10622,-10218,-9735,-9181,-8563, -7897,-7193,-6459,-5715,-4967,-4221,-3494,-2785,-2100,-1446,-818,-223,345,888,1419,1933,2442,2952,3466,3994, 4531,5088,5665,6250,6837,7428,8017,8581,9114,9608,10052,10434,10737,10962,11101,11152,11108,10964,10731,10401, 9988,9485,8916,8281,7587,6847,6069,5254,4409,3538,2642,1736,821,-96,-1004,-1906,-2782,-3639,-4466,-5259, -6022,-6748,-7436,-8088,-8691,-9245,-9746,-10179,-10546,-10843,-11062,-11203,-11267,-11247,-11152,-10963,-10695,-10344,-9912,-9400, -8823,-8184,-7503,-6783,-6041,-5290,-4547,-3805,-3084,-2386,-1717,-1068,-452,134,691,1232,1757,2271,2778,3291, 3811,4342,4886,5451,6027,6616,7206,7797,8373,8929,9444,9920,10339,10680,10951,11136,11234,11242,11151,10971, 10692,10327,9875,9348,8745,8079,7361,6598,5796,4962,4101,3217,2317,1405,488,-429,-1343,-2245,-3119,-3974, -4795,-5583,-6331,-7048,-7721,-8356,-8942,-9479,-9960,-10378,-10723,-10998,-11190,-11304,-11339,-11291,-11160,-10942,-10640,-10257, -9794,-9260,-8661,-8005,-7309,-6579,-5834,-5080,-4338,-3602,-2896,-2206,-1551,-921,-317,260,807,1343,1862,2374, 2877,3393,3914,4450,5000,5571,6149,6740,7333,7916,8489,9035,9537,9993,10382,10701,10936,11089,11148,11121, 10994,10782,10472,10079,9604,9046,8422,7738,6996,6217,5404,4558,3687,2803,1906,998,83,-829,-1733,-2627, -3491,-4336,-5142,-5912,-6648,-7346,-7994,-8602,-9168,-9679,-10131,-10519,-10836,-11086,-11243,-11329,-11325,-11239,-11073,-10818, -10479,-10067,-9573,-9016,-8397,-7723,-7009,-6281,-5525,-4772,-4029,-3298,-2597,-1919,-1271,-647,-57,511,1056,1589, 2108,2621,3132,3651,4182,4723,5279,5855,6436,7031,7620,8203,8766,9296,9779,10211,10577,10862,11059,11172, 11197,11123,10958,10702,10359,9933,9424,8842,8192,7483,6722,5923,5093,4232,3349,2456,1,-57,-598,-1539, -2178,-2242,-1834,-1208,-286,1014,2333,3346,4063,4711,5340,5922,6633,7580,8658,9679,10539,11147,11405,11320, 10998,10561,10084,9566,8970,8257,7394,6349,5135,3801,2426,1059,-223,-1397,-2437,-3344,-4153,-4850,-5499,-6122, -6760,-7453,-8166,-8917,-9681,-10416,-11076,-11584,-11991,-12314,-12584,-12799,-12915,-13028,-13161,-13272,-13263,-13058,-12721,-12183, -11412,-10430,-9313,-8143,-6924,-5672,-4425,-3214,-2103,-1084,-160,656,1328,1846,2283,2696,3093,3481,3882,4364, 4953,5627,6354,7188,8171,9194,10162,11008,11705,12202,12455,12515,12461,12350,12205,12008,11764,11427,10999,10465, 9759,8936,8042,7086,6058,5025,4044,3100,2262,1411,499,-418,-1374,-2369,-3371,-4305,-5197,-6060,-6830,-7546, -8104,-8587,-9099,-9514,-9849,-10179,-10460,-10709,-10965,-11101,-11083,-10974,-10738,-10303,-9640,-8773,-7745,-6541,-5202,-3782, -2347,-964,350,1515,2447,3182,3708,3993,4077,4010,3817,3492,3051,2569,2032,1434,827,230,-287,-698, -1045,-1314,-1431,-1408,-1266,-971,-521,49,763,1693,2794,3961,5180,6365,7432,8342,9056,9574,9933,10155, 10232,10138,9844,9397,8848,8162,7375,6513,5599,4705,3867,3080,2309,1526,688,-228,-1161,-2087,-2975,-3749, -4429,-5012,-5521,-6028,-6563,-7141,-7749,-8388,-9038,-9627,-10098,-10439,-10634,-10644,-10495,-10191,-9753,-9221,-8604,-7856, -6988,-6035,-5040,-4046,-3137,-2365,-1726,-1190,-712,-249,210,635,991,1248,1351,1237,932,504,21,-421, -724,-814,-668,-257,440,1361,2482,3832,5341,6941,8593,10158,11495,12549,13350,13905,14296,14542,14589,14427, 14058,13449,12663,11683,10514,9298,8059,6870,5815,4884,4027,3178,2355,1561,767,-90,-1001,-1927,-2862,-3777, -4609,-5355,-6044,-6692,-7284,-7868,-8503,-9217,-10006,-10819,-11628,-12395,-13038,-13520,-13812,-13889,-13767,-13528,-13252,-12963, -12628,-12167,-11491,-10570,-9366,-7917,-6319,-4676,-3082,-1614,-321,796,1737,2483,3008,3287,3354,3261,3034,2706, 2344,2029,1819,1746,1812,1984,2214,2491,2818,3213,3711,4377,5250,6273,7341,8370,9258,9956,10478,10828, 10999,11048,10996,10829,10526,10088,9522,8784,7902,6923,5900,4872,3898,2987,2110,1279,478,-335,-1158,-1981, -2803,-3619,-4375,-5047,-5632,-6147,-6621,-7085,-7552,-8055,-8601,-9170,-9705,-10134,-10414,-10525,-10448,-10184,-9748,-9172, -8490,-7715,-6842,-5863,-4795,-3661,-2486,-1340,-285,635,1386,1962,2374,2616,2688,2605,2398,2061,1613,1058, 421,-242,-873,-1408,-1795,-1986,-1953,-1680,-1179,-435,531,1697,3015,4455,5959,7451,8834,10063,11098,11907, 12493,12894,13121,13155,13026,12738,12254,11602,10801,9854,8790,7719,6679,5678,4727,3802,2889,1977,1046,118, -818,-1792,-2736,-3605,-4419,-5176,-5870,-6551,-7217,-7840,-8443,-9066,-9717,-10373,-10985,-11522,-11942,-12215,-12342,-12335, -12222,-12028,-11782,-11482,-11097,-10594,-9928,-9063,-8021,-6844,-5587,-4324,-3109,-1997,-1034,-239,380,837,1130,1277, 1299,1238,1145,1082,1077,1178,1394,1724,2162,2681,3262,3917,4661,5506,6465,7510,8569,9570,10440,11128, 11589,11809,11800,11619,11316,10917,10428,9872,9260,8586,7839,7032,6182,5301,4396,3515,2666,1844,1040,241, -584,-1431,-2293,-3170,-4069,-4968,-5814,-6594,-7303,-7946,-8528,-9064,-9566,-10047,-10516,-10952,-11314,-11584,-11718,-11677, -11429,-10995,-10395,-9650,-8771,-7782,-6692,-5524,-4288,-3009,-1724,-504,573,1455,2122,2579,2839,2920,2847,2643, 2332,1929,1447,915,364,-157,-596,-916,-1092,-1104,-957,-649,-184,443,1224,2177,3291,4556,5912,7299, 8642,9871,10907,11720,12304,12684,12884,12918,12778,12477,12029,11442,10709,9863,8943,7982,7015,6062,5138,4242, 3364,2476,1562,619,-348,-1336,-2320,-3269,-4147,-4950,-5680,-6348,-6964,-7566,-8158,-8755,-9348,-9921,-10440,-10893, -11245,-11465,-11542,-11491,-11326,-11055,-10674,-10183,-9578,-8850,-7970,-6945,-5819,-4636,-3452,-2324,-1296,-406,329,908, 1334,1617,1770,1807,1761,1664,1562,1494,1502,1620,1862,2229,2706,3278,3943,4699,5556,6513,7548,8614, 9649,10582,11348,11899,12202,12275,12165,11920,11574,11143,10642,10077,9435,8695,7852,6924,5939,4923,3904,2909, 1958,1049,175,-691,-1555,-2426,-3309,-4201,-5088,-5950,-6762,-7515,-8206,-8833,-9408,-9950,-10471,-10987,-11478,-11930, -12322,-12621,-12790,-12785,-12589,-12202,-11627,-10875,-9954,-8890,-7705,-6420,-5074,-3711,-2399,-1198,-159,688,1332,1769, 2020,2109,2057,1886,1600,1209,735,221,-295,-756,-1132,-1381,-1475,-1408,-1182,-798,-268,416,1256,2257, 3399,4645,5944,7223,8403,9428,10247,10849,11242,11450,11493,11388,11147,10784,10291,9666,8918,8075,7173,6242, 5300,4377,3487,2630,1792,956,112,-746,-1619,-2486,-3339,-4162,-4940,-5671,-6340,-6965,-7549,-8114,-8659,-9191, -9700,-10176,-10595,-10930,-11163,-11261,-11219,-11033,-10707,-10247,-9658,-8951,-8131,-7195,-6153,-5043,-3906,-2789,-1730,-771, 60,745,1282,1687,1973,2143,2219,2212,2146,2055,1989,1987,2083,2309,2665,3158,3775,4513,5351,6278, 7285,8357,9454,10522,11495,12312,12918,13285,13411,13331,13089,12727,12272,11749,11161,10503,9760,8934,8028,7064, 6061,5050,4044,3075,2148,1261,404,-436,-1274,-2123,-2985,-3862,-4736,-5588,-6403,-7170,-7874,-8523,-9119,-9684, -10218,-10725,-11200,-11639,-12010,-12278,-12416,-12392,-12183,-11779,-11172,-10379,-9417,-8312,-7093,-5791,-4450,-3119,-1855,-708, 277,1070,1668,2064,2281,2335,2249,2038,1717,1322,877,416,-24,-398,-663,-791,-768,-584,-238,256, 900,1684,2594,3618,4732,5894,7058,8150,9115,9896,10468,10827,10982,10961,10784,10476,10056,9529,8892,8155, 7329,6436,5497,4535,3571,2634,1726,845,-18,-869,-1727,-2593,-3472,-4347,-5206,-6027,-6800,-7512,-8160,-8749, -9297,-9817,-10318,-10808,-11271,-11694,-12048,-12307,-12440,-12430,-12264,-11938,-11443,-10801,-10023,-9124,-8120,-7037,-5901,-4754, -3627,-2570,-1620,-807,-138,383,768,1024,1171,1222,1201,1131,1043,965,939,1008,1202,1545,2041,2692, 3477,4378,5378,6461,7601,8766,9914,10995,11951,12722,13265,13561,13626,13489,13189,12763,12249,11665,11023,10320, 9553,8721,7824,6873,5888,4893,3907,2953,2038,1154,297,-547,-1380,-2216,-3061,-3898,-4720,-5517,-6276,-6988, -7640,-8234,-8776,-9275,-9731,-10156,-10541,-10873,-11127,-11283,-11312,-11189,-10888,-10400,-9721,-8867,-7854,-6707,-5464,-4160, -2838,-1548,-342,741,1659,2392,2935,3287,3471,3498,3392,3172,2866,2501,2102,1706,1354,1076,921,901, 1043,1345,1803,2402,3138,3991,4950,5992,7075,8165,9198,10118,10875,11430,11767,11895,11827,11596,11231,10753, 10176,9513,8764,7941,7052,6109,5136,4148,3166,2207,1269,355,-539,-1425,-2309,-3190,-4066,-4930,-5772,-6577, -7336,-8041,-8691,-9289,-9841,-10355,-10837,-11284,-11691,-12038,-12300,-12459,-12486,-12358,-12066,-11602,-10978,-10215,-9329,-8346, -7294,-6204,-5113,-4053,-3066,-2182,-1431,-825,-373,-62,120,191,172,87,-45,-196,-342,-444,-468,-376, -143,252,810,1528,2388,3364,4432,5567,6736,7901,9021,10043,10909,11576,12013,12225,12220,12025,11680,11218, 10667,10043,9353,8601,7792,6926,6008,5061,4092,3122,2164,1228,319,-555,-1409,-2240,-3059,-3873,-4679,-5478, -6265,-7025,-7750,-8424,-9043,-9604,-10118,-10579,-10997,-11375,-11705,-11977,-12167,-12249,-12198,-11982,-11580,-10980,-10191,-9227, -8114,-6883,-5581,-4244,-2921,-1659,-505,506,1341,1990,2452,2731,2857,2841,2717,2508,2240,1943,1648,1382, 1184,1084,1110,1275,1598,2076,2703,3463,4338,5308,6341,7412,8483,9510,10437,11215,11812,12202,12383,12369, 12176,11840,11390,10841,10213,9517,8757,7938,7062,6146,5208,4257,3305,2369,1453,559,-312,-1165,-2003,-2833, -3652,-4457,-5247,-6007,-6732,-7409,-8032,-8599,-9120,-9587,-10010,-10388,-10710,-10960,-11124,-11171,-11081,-10832,-10415,-9829, -9084,-8207,-7224,-6168,-5075,-3984,-2922,-1930,-1042,-286,322,776,1078,1236,1276,1215,1083,899,696,498, 338,247,258,398,690,1141,1760,2529,3430,4440,5535,6677,7827,8946,9983,10890,11624,12150,12456,12546, 12431,12142,11709,11163,10532,9829,9072,8269,7422,6538,5618,4673,3715,2754,1796,856,-62,-951,-1818,-2665, -3497,-4311,-5113,-5900,-6672,-7411,-8121,-8789,-9406,-9972,-10486,-10950,-11363,-11724,-12022,-12249,-12380,-12396,-12266,-11963, -11471,-10786,-9912,-8870,-7698,-6432,-5120,-3809,-2543,-1366,-313,582,1302,1841,2197,2387,2433,2359,2195,1966, 1704,1440,1200,1015,920,932,1081,1379,1831,2432,3173,4027,4983,5996,7047,8093,9095,10005,10786,11390, 11809,12022,12040,11871,11552,11102,10547,9905,9198,8436,7623,6771,5885,4972,4042,3108,2176,1254,353,-529, -1389,-2224,-3033,-3829,-4605,-5360,-6098,-6806,-7486,-8118,-8706,-9240,-9719,-10144,-10512,-10813,-11043,-11184,-11219,-11124, -10879,-10469,-9887,-9145,-8254,-7248,-6164,-5036,-3913,-2830,-1820,-918,-151,469,925,1230,1387,1411,1329,1166, 949,702,461,254,111,60,131,344,718,1257,1959,2814,3796,4874,6025,7197,8352,9442,10419,11243, 11873,12290,12486,12469,12262,11885,11377,10761,10061,9295,8479,7626,6737,5821,4884,3933,2977,2017,1063,128, -792,-1687,-2558,-3402,-4224,-5018,-5796,-6555,-7292,-7999,-8677,-9315,-9906,-10448,-10936,-11364,-11738,-12042,-12276,-12423, -12465,-12376,-12133,-11716,-11114,-10321,-9357,-8253,-7042,-5770,-4490,-3238,-2062,-997,-74,687,1274,1690,1941,2045, 2024,1907,1722,1498,1270,1068,914,846,881,1044,1351,1801,2401,3139,3996,4950,5971,7020,8064,9060, 9965,10739,11352,11776,12009,12046,11903,11596,11150,10596,9946,9228,8457,7640,6791,5914,5016,4102,3184,2256, 1340,435,-456,-1323,-2171,-2988,-3781,-4547,-5293,-6011,-6703,-7368,-7994,-8582,-9121,-9603,-10029,-10390,-10685,-10900, -11033,-11063,-10970,-10740,-10350,-9792,-9072,-8197,-7198,-6107,-4967,-3817,-2705,-1652,-708,113,788,1304,1665,1875, 1948,1911,1780,1586,1361,1128,922,772,705,752,936,1270,1767,2422,3230,4168,5211,6328,7477,8616, 9697,10679,11515,12172,12625,12870,12911,12758,12441,11982,11403,10730,9981,9175,8319,7429,6514,5580,4629,3672, 2710,1750,798,-143,-1066,-1967,-2844,-3689,-4508,-5302,-6070,-6817,-7536,-8227,-8883,-9499,-10069,-10589,-11052,-11457, -11795,-12061,-12243,-12328,-12294,-12126,-11796,-11288,-10599,-9732,-8712,-7569,-6347,-5093,-3852,-2669,-1585,-624,179,821, 1297,1607,1766,1798,1725,1576,1383,1173,985,843,776,808,966,1256,1694,2274,2992,3831,4764,5762, 6794,7812,8782,9661,10414,11004,11415,11639,11674,11535,11242,10808,10263,9623,8909,8133,7313,6460,5582,4684, 3775,2861,1943,1024,120,-778,-1656,-2516,-3349,-4156,-4934,-5686,-6407,-7101,-7763,-8391,-8982,-9527,-10021,-10460, -10834,-11139,-11360,-11494,-11521,-11428,-11200,-10817,-10276,-9572,-8715,-7725,-6637,-5486,-4315,-3167,-2086,-1098,-236,480, 1038,1439,1689,1802,1792,1687,1511,1288,1054,832,657,560,565,697,981,1416,2015,2768,3663,4674, 5772,6919,8076,9189,10217,11113,11838,12372,12699,12819,12745,12497,12103,11578,10948,10235,9455,8624,7753,6852, 5933,4996,4055,3112,2171,1234,313,-599,-1495,-2369,-3219,-4043,-4841,-5613,-6360,-7076,-7762,-8419,-9042,-9624, -10157,-10644,-11071,-11429,-11716,-11919,-12027,-12025,-11887,-11606,-11158,-10535,-9742,-8793,-7716,-6548,-5330,-4112,-2937,-1841, -864,-25,660,1179,1545,1765,1854,1838,1743,1597,1431,1270,1144,1093,1130,1281,1563,1985,2544,3242, 4054,4963,5935,6943,7950,8902,9769,10510,11100,11511,11736,11781,11659,11378,10968,10438,9817,9116,8352,7537, 6688,5809,4913,4001,3088,2171,1258,350,-540,-1425,-2287,-3127,-3945,-4737,-5498,-6234,-6936,-7605,-8241,-8841, -9399,-9910,-10370,-10770,-11102,-11353,-11513,-11569,-11503,-11295,-10934,-10415,-9729,-8885,-7905,-6817,-5659,-4470,-3296,-2181, -1162,-266,479,1062,1481,1744,1861,1852,1737,1549,1306,1045,790,571,420,365,426,630,984,1499, 2177,3001,3955,5012,6132,7281,8414,9480,10434,11239,11860,12282,12496,12513,12346,12021,11556,10978,10306,9559, 8752,7894,7003,6087,5152,4209,3262,2317,1379,452,-463,-1361,-2238,-3097,-3929,-4736,-5515,-6266,-6988,-7678, -8336,-8957,-9543,-10080,-10568,-11001,-11371,-11667,-11881,-12001,-12009,-11889,-11623,-11199,-10604,-9840,-8926,-7886,-6747,-5557, -4356,-3187,-2100,-1114,-265,430,966,1343,1577,1680,1672,1584,1445,1282,1127,1003,947,978,1118,1387, 1794,2340,3025,3830,4737,5720,6740,7758,8734,9627,10398,11015,11460,11716,11791,11689,11431,11032,10518,9904, 9210,8454,7644,6794,5916,5015,4098,3175,2255,1335,423,-479,-1364,-2235,-3086,-3913,-4715,-5487,-6235,-6951, -7633,-8288,-8900,-9476,-10005,-10481,-10900,-11256,-11529,-11717,-11803,-11769,-11602,-11277,-10790,-10136,-9324,-8364,-7290,-6137, -4944,-3754,-2607,-1545,-602,200,837,1307,1613,1768,1783,1690,1511,1276,1013,750,515,336,248,266, 414,713,1168,1786,2557,3462,4483,5578,6717,7854,8941,9937,10793,11483,11978,12275,12367,12272,12010,11604, 11073,10440,9727,8948,8116,7242,6341,5419,4484,3540,2593,1655,722,-197,-1097,-1978,-2839,-3674,-4485,-5270, -6030,-6759,-7462,-8128,-8759,-9348,-9895,-10390,-10827,-11206,-11511,-11739,-11870,-11889,-11785,-11531,-11116,-10536,-9787,-8890, -7861,-6740,-5567,-4379,-3219,-2131,-1146,-290,413,961,1349,1587,1693,1685,1594,1447,1275,1106,967,889, 898,1014,1252,1630,2153,2814,3607,4509,5495,6531,7574,8583,9519,10340,11009,11504,11811,11934,11870,11644, 11272,10775,10177,9490,8737,7931,7081,6202,5300,4384,3458,2526,1600,678,-232,-1127,-2007,-2866,-3701,-4511, -5295,-6053,-6777,-7477,-8142,-8770,-9358,-9903,-10394,-10831,-11203,-11504,-11720,-11840,-11848,-11723,-11452,-11021,-10418,-9654, -8741,-7701,-6577,-5399,-4210,-3056,-1969,-995,-150,542,1069,1436,1645,1719,1671,1530,1326,1090,849,632, 468,377,397,536,818,1250,1838,2576,3449,4438,5509,6624,7746,8827,9825,10698,11408,11934,12260,12392, 12336,12110,11735,11237,10629,9939,9180,8367,7518,6634,5734,4817,3891,2962,2039,1124,220,-670,-1543,-2391, -3215,-4017,-4788,-5535,-6251,-6941,-7597,-8221,-8804,-9346,-9839,-10277,-10657,-10964,-11195,-11336,-11371,-11288,-11070,-10698, -10163,-9467,-8615,-7632,-6550,-5405,-4238,-3089,-1994,-995,-115,631,1225,1664,1954,2114,2157,2113,2007,1868, 1727,1613,1553,1573,1695,1933,2305,2814,3454,4220,5094,6048,7056,8073,9064,9980,10785,11445,11934,12240, 12359,12303,12080,11716,11223,10627,9941,9188,8380,7526,6640,5731,4809,3873,2931,1990,1053,123,-793,-1693, -2572,-3427,-4256,-5059,-5832,-6579,-7294,-7979,-8628,-9239,-9812,-10332,-10800,-11204,-11533,-11791,-11950,-12005,-11940,-11733, -11374,-10845,-10157,-9308,-8323,-7232,-6079,-4898,-3736,-2636,-1628,-748,-9,570,987,1244,1360,1349,1237,1048, 815,568,338,151,38,23,129,368,754,1293,1977,2797,3734,4764,5851,6951,8021,9022,9906,10638, 11188,11551,11717,11699,11509,11173,10704,10125,9458,8720,7923,7084,6218,5329,4426,3517,2599,1682,777,-125, -1018,-1890,-2740,-3568,-4366,-5139,-5880,-6590,-7275,-7924,-8544,-9122,-9659,-10149,-10582,-10956,-11261,-11491,-11631,-11671, -11598,-11394,-11042,-10535,-9867,-9047,-8092,-7026,-5892,-4721,-3564,-2454,-1421,-504,281,926,1424,1774,1994,2096, 2105,2046,1948,1840,1754,1719,1755,1895,2146,2525,3041,3690,4460,5346,6313,7338,8379,9398,10347,11191, 11889,12421,12764,12925,12905,12723,12391,11932,11362,10702,9967,9171,8330,7456,6553,5639,4710,3777,2844,1916, 993,80,-821,-1706,-2568,-3405,-4213,-4995,-5744,-6467,-7158,-7818,-8441,-9028,-9566,-10059,-10485,-10848,-11134,-11330, -11423,-11399,-11244,-10943,-10479,-9848,-9057,-8128,-7078,-5952,-4783,-3622,-2507,-1475,-558,215,840,1303,1607,1765, 1790,1707,1545,1322,1077,835,628,487,432,490,679,1009,1483,2103,2858,3731,4697,5727,6783,7820, 8795,9667,10401,10962,11336,11523,11521,11351,11027,10574,10004,9341,8598,7797,6949,6065,5159,4236,3304,2371, 1441,515,-403,-1310,-2205,-3080,-3933,-4753,-5549,-6313,-7048,-7748,-8414,-9047,-9643,-10199,-10710,-11171,-11570,-11904, -12155,-12326,-12386,-12338,-12156,-11829,-11346,-10704,-9909,-8976,-7933,-6813,-5653,-4497,-3386,-2352,-1424,-631,23,532, 892,1123,1234,1251,1198,1097,986,890,838,857,972,1205,1569,2063,2699,3461,4339,5310,6343,7404, 8456,9449,10351,11118,11718,12137,12366,12412,12293,12022,11620,11106,10495,9809,9059,8253,7409,6538,5645,4746, 3838,2934,2031,1135,249,-623,-1484,-2325,-3146,-3940,-4707,-5447,-6155,-6828,-7471,-8076,-8643,-9169,-9648,-10072, -10434,-10724,-10931,-11041,-11034,-10902,-10622,-10191,-9600,-8844,-7945,-6921,-5805,-4640,-3459,-2313,-1238,-270,568,1252, 1783,2157,2381,2472,2452,2341,2166,1956,1742,1550,1415,1357,1405,1574,1882,2330,2925,3648,4494,5434, 6439,7475,8506,9478,10357,11105,11684,12085,12292,12318,12170,11869,11432,10882,10236,9513,8717,7874,6990,6079, 5145,4206,3259,2316,1377,446,-470,-1375,-2266,-3137,-3986,-4806,-5600,-6361,-7089,-7786,-8446,-9067,-9647,-10186, -10675,-11109,-11477,-11771,-11977,-12084,-12073,-11933,-11648,-11210,-10607,-9853,-8964,-7960,-6870,-5739,-4603,-3505,-2479,-1557, -766,-115,386,740,961,1058,1057,983,862,717,581,482,447,503,671,966,1401,1971,2679,3509, 4435,5439,6481,7524,8532,9455,10260,10908,11380,11665,11761,11682,11447,11071,10583,9993,9323,8586,7792,6953, 6086,5190,4279,3364,2448,1536,633,-258,-1136,-2000,-2847,-3674,-4477,-5252,-6004,-6723,-7407,-8054,-8667,-9240, -9766,-10250,-10679,-11051,-11351,-11571,-11697,-11712,-11601,-11347,-10936,-10363,-9633,-8750,-7740,-6636,-5469,-4287,-3122,-2024, -1023,-145,585,1159,1579,1841,1973,1986,1905,1760,1576,1381,1203,1068,1011,1048,1205,1497,1931,2510, 3223,4061,4997,6003,7048,8095,9098,10016,10809,11444,11901,12162,12237,12136,11878,11479,10964,10351,9656,8893, 8072,7215,6323,5404,4473,3539,2604,1672,751,-157,-1053,-1930,-2791,-3628,-4441,-5229,-5992,-6725,-7422,-8082, -8707,-9286,-9822,-10308,-10744,-11116,-11417,-11637,-11762,-11775,-11659,-11405,-10990,-10420,-9695,-8825,-7844,-6772,-5648,-4510, -3403,-2359,-1413,-588,95,631,1018,1266,1393,1410,1352,1240,1100,963,858,810,842,983,1241,1634, 2167,2835,3626,4522,5501,6524,7557,8565,9503,10325,11009,11517,11840,11977,11934,11729,11378,10905,10329,9672, 8944,8157,7325,6460,5570,4656,3736,2809,1888,974,70,-818,-1685,-2536,-3365,-4172,-4958,-5715,-6449,-7147, -7811,-8440,-9025,-9564,-10060,-10500,-10883,-11200,-11437,-11586,-11631,-11551,-11331,-10957,-10417,-9718,-8863,-7878,-6794,-5642, -4465,-3302,-2196,-1177,-278,481,1083,1530,1823,1972,2004,1937,1798,1617,1420,1235,1094,1015,1031,1158, 1413,1808,2346,3022,3824,4734,5719,6751,7791,8798,9733,10553,11225,11726,12038,12159,12102,11880,11515,11022, 10430,9755,9010,8209,7361,6481,5574,4647,3707,2769,1828,898,-18,-919,-1803,-2665,-3507,-4323,-5115,-5882, -6620,-7332,-8003,-8638,-9230,-9774,-10270,-10712,-11098,-11411,-11650,-11798,-11848,-11766,-11556,-11191,-10673,-9994,-9174,-8229, -7195,-6101,-4986,-3892,-2848,-1893,-1050,-337,226,649,931,1080,1131,1091,996,874,748,644,597,628, 754,998,1372,1883,2530,3298,4174,5131,6144,7169,8170,9112,9946,10641,11169,11516,11677,11656,11470,11137, 10682,10116,9469,8748,7972,7151,6292,5410,4508,3590,2667,1745,825,-82,-979,-1856,-2709,-3544,-4351,-5136, -5898,-6631,-7336,-8009,-8648,-9242,-9793,-10293,-10743,-11132,-11456,-11707,-11871,-11937,-11889,-11707,-11379,-10884,-10232,-9424, -8471,-7408,-6272,-5092,-3918,-2783,-1725,-775,43,714,1229,1594,1816,1911,1901,1810,1670,1509,1351,1224, 1164,1181,1306,1549,1928,2445,3098,3879,4767,5735,6761,7797,8812,9762,10608,11315,11859,12221,12394,12390, 12216,11893,11444,10882,10237,9516,8742,7918,7058,6178,5270,4354,3430,2505,1583,670,-229,-1108,-1966,-2800, -3613,-4394,-5157,-5891,-6597,-7269,-7908,-8507,-9062,-9564,-10014,-10400,-10720,-10967,-11126,-11183,-11126,-10937,-10604,-10113, -9472,-8684,-7768,-6752,-5679,-4577,-3486,-2445,-1486,-633,95,683,1125,1432,1607,1674,1654,1565,1444,1315, 1208,1148,1164,1273,1496,1844,2326,2942,3678,4529,5469,6463,7479,8478,9421,10268,10977,11528,11900,12087, 12093,11931,11617,11173,10617,9965,9246,8466,7638,6774,5878,4966,4042,3108,2171,1236,310,-606,-1508,-2387, -3244,-4079,-4883,-5662,-6413,-7139,-7832,-8495,-9117,-9699,-10234,-10717,-11141,-11501,-11790,-11998,-12111,-12117,-12002,-11744, -11335,-10761,-10031,-9154,-8155,-7062,-5919,-4760,-3630,-2565,-1592,-743,-31,536,954,1226,1371,1408,1356,1245, 1107,963,847,782,797,910,1137,1491,1980,2601,3342,4194,5129,6121,7131,8123,9060,9896,10606,11154, 11533,11728,11752,11606,11313,10890,10357,9730,9029,8267,7465,6620,5751,4863,3963,3054,2141,1234,333,-560, -1434,-2289,-3121,-3927,-4703,-5457,-6176,-6873,-7537,-8165,-8753,-9303,-9803,-10251,-10637,-10956,-11199,-11356,-11412,-11357, -11175,-10851,-10373,-9743,-8966,-8057,-7041,-5958,-4842,-3729,-2661,-1670,-783,-18,608,1097,1438,1656,1757,1761, 1695,1585,1462,1354,1284,1281,1371,1567,1892,2344,2932,3649,4478,5402,6394,7418,8438,9411,10299,11064, 11673,12110,12365,12434,12336,12077,11682,11172,10563,9867,9109,8296,7443,6563,5659,4742,3816,2885,1956,1031, 114,-790,-1679,-2546,-3386,-4203,-4991,-5752,-6482,-7183,-7854,-8488,-9081,-9632,-10137,-10581,-10964,-11275,-11509,-11647, -11684,-11600,-11379,-11010,-10483,-9796,-8963,-7999,-6937,-5815,-4669,-3537,-2465,-1482,-613,118,704,1148,1444,1612, 1665,1626,1523,1378,1227,1096,1008,994,1074,1264,1585,2033,2615,3322,4137,5046,6012,7007,7994,8931, 9779,10505,11077,11479,11702,11750,11628,11359,10955,10436,9822,9131,8370,7560,6714,5836,4941,4032,3117,2201, 1286,377,-521,-1406,-2276,-3122,-3943,-4740,-5503,-6239,-6943,-7616,-8255,-8856,-9415,-9929,-10391,-10794,-11133,-11393, -11571,-11647,-11612,-11450,-11147,-10694,-10084,-9331,-8442,-7445,-6369,-5253,-4138,-3057,-2049,-1140,-355,292,799,1164, 1397,1512,1530,1473,1366,1235,1113,1023,991,1051,1213,1497,1911,2463,3146,3946,4848,5826,6847,7876, 8873,9795,10605,11273,11768,12080,12214,12169,11962,11616,11146,10574,9911,9179,8386,7553,6681,5787,4875,3955, 3032,2106,1191,280,-617,-1503,-2368,-3211,-4028,-4823,-5586,-6319,-7021,-7691,-8327,-8921,-9473,-9980,-10433,-10826, -11148,-11398,-11554,-11607,-11542,-11346,-11002,-10501,-9846,-9041,-8103,-7063,-5950,-4807,-3672,-2583,-1579,-686,76,693, 1165,1492,1686,1764,1750,1663,1532,1386,1250,1152,1120,1180,1345,1634,2052,2605,3284,4079,4964,5920, 6909,7902,8849,9722,10476,11088,11527,11786,11871,11781,11538,11158,10659,10065,9383,8631,7830,6983,6105,5204, 4286,3365,2440,1519,606,-302,-1193,-2070,-2926,-3756,-4563,-5347,-6094,-6818,-7502,-8154,-8765,-9337,-9861,-10338, -10757,-11114,-11396,-11596,-11696,-11686,-11547,-11272,-10841,-10261,-9530,-8664,-7686,-6626,-5516,-4399,-3311,-2288,-1364,-555, 114,639,1026,1277,1405,1433,1383,1280,1148,1015,914,865,893,1024,1271,1653,2164,2813,3583,4462, 5421,6434,7461,8472,9415,10258,10968,11514,11879,12063,12069,11910,11601,11164,10622,9988,9278,8510,7693,6835, 5951,5042,4125,3203,2278,1362,456,-439,-1321,-2184,-3026,-3845,-4639,-5409,-6146,-6855,-7530,-8168,-8767,-9322, -9832,-10294,-10694,-11031,-11293,-11475,-11553,-11522,-11359,-11057,-10600,-9989,-9227,-8332,-7326,-6244,-5122,-3996,-2903,-1884, -966,-168,486,997,1369,1602,1722,1740,1690,1588,1465,1351,1269,1243,1299,1460,1738,2144,2680,3341, 4118,4994,5935,6914,7900,8849,9722,10486,11109,11566,11846,11948,11875,11649,11285,10799,10214,9547,8811,8019, 7183,6314,5418,4506,3579,2653,1726,803,-103,-1001,-1879,-2737,-3572,-4384,-5173,-5936,-6665,-7367,-8030,-8659, -9240,-9780,-10268,-10705,-11075,-11378,-11600,-11732,-11759,-11663,-11434,-11055,-10522,-9838,-9014,-8071,-7038,-5946,-4833,-3740, -2695,-1740,-893,-177,397,832,1128,1295,1359,1337,1258,1146,1023,928,876,896,1006,1234,1584,2065, 2679,3415,4263,5196,6185,7203,8203,9149,10007,10737,11311,11713,11931,11973,11845,11568,11157,10637,10024,9337, 8584,7782,6942,6074,5179,4268,3352,2432,1515,605,-289,-1170,-2030,-2869,-3687,-4480,-5245,-5987,-6697,-7378, -8023,-8630,-9193,-9710,-10174,-10582,-10925,-11199,-11394,-11494,-11485,-11353,-11083,-10665,-10089,-9366,-8502,-7529,-6470,-5366, -4243,-3150,-2116,-1174,-349,347,898,1307,1584,1737,1792,1768,1690,1587,1488,1413,1395,1452,1605,1871, 2257,2779,3419,4177,5034,5963,6934,7916,8868,9753,10533,11179,11662,11977,12107,12069,11870,11531,11066,10497, 9844,9119,8341,7516,6655,5767,4858,3941,3011,2083,1155,241,-661,-1547,-2411,-3256,-4073,-4865,-5631,-6369, -7081,-7758,-8398,-8999,-9556,-10062,-10514,-10906,-11227,-11476,-11639,-11706,-11658,-11479,-11156,-10687,-10063,-9295,-8404,-7408, -6350,-5259,-4171,-3128,-2152,-1279,-530,88,564,904,1120,1222,1237,1185,1094,991,901,856,871,978, 1191,1518,1974,2560,3268,4082,4985,5951,6945,7931,8868,9719,10451,11033,11449,11685,11745,11640,11380,10989, 10481,9878,9197,8452,7657,6823,5962,5076,4173,3259,2341,1423,508,-393,-1282,-2151,-2994,-3818,-4614,-5382, -6126,-6840,-7524,-8178,-8793,-9365,-9895,-10370,-10788,-11146,-11431,-11640,-11756,-11772,-11670,-11434,-11054,-10521,-9833,-9006, -8053,-7012,-5911,-4790,-3682,-2629,-1657,-790,-52,552,1012,1338,1540,1635,1646,1596,1515,1428,1362,1343, 1398,1538,1789,2160,2656,3274,4009,4842,5758,6721,7699,8659,9561,10366,11040,11568,11923,12105,12114,11963, 11668,11242,10706,10081,9380,8621,7815,6973,6102,5211,4304,3388,2469,1551,639,-264,-1150,-2017,-2861,-3681, -4470,-5235,-5976,-6687,-7367,-8012,-8622,-9189,-9704,-10169,-10569,-10903,-11166,-11342,-11422,-11393,-11238,-10944,-10501,-9909, -9169,-8301,-7326,-6280,-5194,-4109,-3061,-2078,-1194,-425,212,713,1076,1307,1427,1450,1401,1306,1194,1087, 1018,1010,1084,1259,1553,1970,2515,3182,3960,4836,5780,6761,7744,8690,9558,10320,10932,11390,11667,11772, 11704,11484,11120,10638,10054,9384,8645,7855,7021,6156,5267,4362,3443,2523,1599,680,-235,-1135,-2018,-2880, -3717,-4530,-5311,-6064,-6793,-7485,-8151,-8780,-9369,-9917,-10415,-10855,-11234,-11545,-11772,-11916,-11959,-11888,-11691,-11351, -10860,-10218,-9430,-8516,-7502,-6421,-5309,-4202,-3141,-2153,-1266,-503,128,625,985,1220,1347,1382,1356,1287, 1208,1143,1121,1163,1293,1528,1876,2352,2946,3660,4476,5372,6325,7303,8267,9184,10011,10715,11273,11667, 11888,11938,11826,11571,11181,10682,10080,9405,8664,7872,7043,6182,5305,4408,3506,2599,1693,789,-106,-990, -1855,-2696,-3518,-4310,-5073,-5811,-6517,-7193,-7834,-8440,-9008,-9529,-9996,-10406,-10751,-11022,-11205,-11295,-11276,-11137, -10861,-10440,-9868,-9148,-8296,-7331,-6285,-5196,-4097,-3028,-2022,-1109,-304,365,897,1294,1557,1705,1751,1718, 1632,1523,1410,1330,1298,1345,1491,1748,2130,2637,3272,4019,4866,5789,6760,7743,8699,9592,10384,11047, 11546,11876,12028,12010,11834,11516,11066,10512,9868,9144,8365,7538,6672,5785,4880,3962,3036,2112,1188,272, -637,-1530,-2404,-3255,-4080,-4880,-5647,-6387,-7095,-7771,-8410,-9010,-9571,-10085,-10545,-10943,-11276,-11530,-11694,-11757, -11711,-11537,-11221,-10759,-10148,-9390,-8502,-7515,-6449,-5350,-4250,-3192,-2203,-1313,-539,99,604,973,1217,1348, 1390,1358,1278,1185,1101,1052,1062,1156,1354,1663,2100,2657,3337,4121,4995,5933,6903,7871,8799,9651, 10391,10987,11422,11688,11777,11708,11482,11125,10651,10074,9418,8689,7906,7079,6222,5341,4442,3537,2628,1720, 817,-79,-966,-1834,-2687,-3515,-4319,-5093,-5837,-6551,-7235,-7879,-8491,-9060,-9588,-10063,-10486,-10841,-11129,-11332, -11440,-11441,-11326,-11070,-10675,-10129,-9438,-8610,-7670,-6640,-5560,-4464,-3385,-2362,-1426,-600,98,660,1088,1381, 1554,1629,1619,1552,1454,1350,1266,1226,1262,1390,1626,1981,2465,3075,3801,4631,5541,6504,7489,8455, 9368,10186,10883,11423,11796,11991,12016,11874,11590,11175,10652,10035,9335,8573,7763,6910,6026,5123,4206,3284, 2360,1437,522,-382,-1275,-2151,-3007,-3841,-4644,-5426,-6174,-6891,-7574,-8220,-8829,-9397,-9918,-10390,-10803,-11151, -11427,-11615,-11707,-11688,-11547,-11268,-10842,-10266,-9547,-8696,-7737,-6700,-5616,-4525,-3458,-2456,-1545,-747,-78,455, 854,1125,1283,1347,1336,1277,1195,1115,1061,1062,1139,1317,1602,2006,2538,3187,3948,4797,5713,6671, 7633,8566,9427,10186,10809,11275,11572,11695,11655,11455,11127,10674,10122,9481,8770,8001,7189,6335,5458,4563, 3658,2747,1835,929,36,-853,-1722,-2573,-3404,-4210,-4993,-5745,-6467,-7156,-7811,-8427,-9002,-9536,-10019,-10449, -10818,-11118,-11340,-11470,-11494,-11401,-11178,-10812,-10295,-9632,-8837,-7920,-6912,-5843,-4747,-3666,-2630,-1672,-820,-89, 507,968,1294,1499,1598,1611,1564,1478,1383,1302,1261,1284,1393,1608,1940,2393,2975,3677,4484,5373, 6325,7300,8270,9195,10038,10764,11343,11760,11998,12067,11965,11717,11334,10840,10247,9573,8834,8041,7206,6336, 5441,4531,3611,2689,1766,853,-50,-942,-1816,-2672,-3503,-4310,-5094,-5847,-6571,-7260,-7917,-8530,-9104,-9635, -10110,-10537,-10897,-11185,-11398,-11514,-11528,-11419,-11177,-10792,-10260,-9581,-8772,-7850,-6840,-5780,-4701,-3637,-2626,-1696, -874,-174,394,828,1133,1322,1414,1429,1388,1321,1252,1207,1209,1281,1445,1715,2101,2612,3238,3976, 4808,5708,6652,7606,8536,9399,10168,10808,11295,11612,11756,11736,11559,11241,10804,10262,9633,8933,8173,7365, 6524,5650,4757,3848,2935,2019,1106,203,-687,-1560,-2419,-3254,-4064,-4852,-5614,-6342,-7044,-7712,-8340,-8928, -9470,-9966,-10409,-10793,-11108,-11348,-11504,-11559,-11506,-11322,-10999,-10529,-9909,-9151,-8272,-7290,-6238,-5154,-4072,-3020, -2039,-1153,-381,262,767,1139,1386,1520,1570,1547,1486,1406,1333,1297,1317,1415,1614,1925,2357,2907, 3581,4359,5226,6157,7123,8087,9015,9866,10612,11218,11665,11941,12043,11977,11766,11411,10941,10372,9719,8998, 8220,7401,6549,5667,4767,3854,2933,2014,1097,193,-699,-1573,-2426,-3260,-4066,-4850,-5606,-6335,-7033,-7695, -8321,-8906,-9442,-9928,-10360,-10734,-11033,-11259,-11398,-11431,-11353,-11145,-10795,-10301,-9657,-8878,-7983,-6996,-5948,-4878, -3820,-2803,-1859,-1014,-290,307,771,1108,1323,1436,1467,1441,1381,1314,1264,1259,1317,1464,1710,2071, 2550,3147,3860,4666,5547,6479,7426,8355,9231,10014,10680,11192,11545,11723,11735,11590,11300,10881,10356,9741, 9049,8295,7495,6655,5787,4895,3986,3069,2148,1229,315,-588,-1473,-2342,-3188,-4005,-4802,-5570,-6312,-7024, -7706,-8351,-8955,-9519,-10032,-10491,-10893,-11227,-11487,-11666,-11752,-11727,-11583,-11300,-10877,-10302,-9585,-8737,-7784,-6755, -5680,-4599,-3543,-2552,-1640,-840,-166,379,789,1070,1241,1314,1317,1270,1197,1129,1091,1106,1196,1375, 1667,2074,2604,3250,4006,4853,5770,6723,7685,8619,9483,10249,10884,11365,11682,11820,11797,11619,11298,10858, 10312,9680,8976,8215,7408,6566,5700,4808,3910,3000,2085,1176,268,-622,-1499,-2356,-3190,-3993,-4774,-5529, -6256,-6952,-7618,-8247,-8835,-9381,-9879,-10314,-10696,-11008,-11242,-11391,-11444,-11383,-11199,-10876,-10410,-9797,-9040,-8167, -7194,-6152,-5083,-4010,-2981,-2018,-1143,-384,247,748,1119,1371,1514,1570,1559,1512,1445,1397,1386,1434, 1566,1792,2131,2590,3165,3850,4638,5504,6427,7371,8307,9196,10005,10696,11247,11638,11858,11913,11807,11551, 11167,10666,10072,9394,8654,7862,7027,6165,5282,4375,3465,2543,1626,708,-199,-1095,-1970,-2826,-3654,-4459, -5237,-5985,-6706,-7397,-8049,-8667,-9242,-9771,-10251,-10667,-11024,-11308,-11507,-11614,-11619,-11503,-11257,-10871,-10335,-9658, -8847,-7922,-6912,-5852,-4779,-3720,-2720,-1796,-978,-279,288,729,1038,1231,1326,1344,1304,1238,1164,1119, 1117,1186,1349,1609,1989,2486,3103,3830,4654,5549,6489,7444,8379,9253,10035,10690,11200,11543,11720,11727, 11579,11289,10870,10345,9731,9038,8284,7484,6645,5780,4895,3993,3087,2174,1264,357,-538,-1423,-2287,-3128, -3943,-4729,-5493,-6223,-6925,-7595,-8230,-8830,-9384,-9892,-10347,-10743,-11070,-11323,-11489,-11564,-11531,-11375,-11089,-10659, -10086,-9373,-8530,-7588,-6567,-5505,-4435,-3396,-2418,-1526,-739,-75,462,871,1159,1339,1428,1446,1418,1371, 1328,1319,1362,1487,1700,2026,2465,3018,3684,4455,5305,6217,7156,8091,8990,9812,10525,11100,11521,11772, 11860,11783,11560,11204,10732,10158,9507,8780,8002,7177,6322,5439,4542,3633,2721,1804,892,-15,-908,-1789, -2649,-3485,-4297,-5080,-5831,-6557,-7248,-7907,-8529,-9115,-9653,-10145,-10578,-10949,-11248,-11468,-11597,-11624,-11537,-11320, -10967,-10468,-9826,-9048,-8151,-7163,-6113,-5040,-3976,-2958,-2014,-1167,-439,165,633,979,1204,1328,1368,1347, 1290,1224,1171,1159,1212,1350,1588,1937,2407,2997,3695,4488,5366,6289,7238,8172,9055,9857,10539,11082, 11463,11672,11722,11607,11351,10967,10471,9879,9209,8472,7683,6850,5990,5108,4214,3307,2401,1492,588,-310, -1193,-2059,-2907,-3730,-4525,-5295,-6033,-6739,-7418,-8054,-8656,-9220,-9732,-10197,-10604,-10946,-11216,-11402,-11492,-11479, -11344,-11082,-10680,-10136,-9451,-8636,-7716,-6716,-5665,-4600,-3555,-2565,-1656,-852,-165,398,832,1147,1348,1461, 1497,1484,1446,1406,1392,1430,1534,1730,2033,2451,2982,3629,4376,5213,6111,7046,7985,8894,9731,10475, 11079,11535,11825,11950,11909,11717,11391,10948,10402,9769,9063,8297,7485,6633,5757,4861,3955,3039,2126,1215, 309,-587,-1469,-2332,-3174,-3995,-4786,-5550,-6279,-6983,-7650,-8281,-8872,-9420,-9920,-10365,-10756,-11076,-11320,-11476, -11531,-11478,-11297,-10982,-10527,-9927,-9193,-8335,-7380,-6358,-5300,-4241,-3216,-2256,-1387,-629,4,513,891,1153, 1307,1377,1383,1346,1295,1250,1236,1284,1410,1628,1955,2398,2959,3630,4396,5244,6149,7080,8005,8886, 9692,10386,10944,11350,11583,11656,11566,11332,10967,10495,9920,9265,8545,7766,6946,6091,5210,4312,3405,2494, 1586,677,-218,-1104,-1974,-2825,-3654,-4457,-5234,-5982,-6698,-7384,-8030,-8641,-9207,-9734,-10207,-10625,-10978,-11266, -11472,-11585,-11598,-11494,-11257,-10887,-10370,-9714,-8933,-8035,-7052,-6016,-4955,-3905,-2903,-1972,-1141,-424,167,633, 974,1206,1337,1398,1398,1372,1340,1324,1347,1445,1618,1896,2285,2790,3413,4135,4948,5834,6762,7702, 8617,9476,10245,10889,11386,11724,11890,11898,11748,11458,11050,10535,9928,9252,8511,7716,6887,6022,5136,4237, 3328,2419,1512,609,-280,-1159,-2020,-2858,-3675,-4469,-5235,-5972,-6678,-7352,-7985,-8581,-9132,-9639,-10088,-10485, -10814,-11073,-11245,-11322,-11289,-11140,-10851,-10421,-9848,-9141,-8312,-7381,-6371,-5324,-4265,-3234,-2262,-1373,-593,70, 603,1011,1294,1474,1562,1585,1558,1510,1470,1452,1487,1596,1793,2095,2509,3040,3681,4423,5249,6142, 7058,7982,8868,9687,10405,10995,11429,11701,11805,11749,11546,11204,10750,10196,9557,8848,8083,7269,6422,5542, 4648,3737,2818,1901,989,85,-807,-1683,-2540,-3374,-4189,-4976,-5735,-6464,-7166,-7831,-8455,-9039,-9577,-10065, -10499,-10873,-11179,-11409,-11550,-11591,-11521,-11326,-10989,-10516,-9898,-9151,-8287,-7334,-6314,-5271,-4227,-3222,-2283,-1433, -699,-81,410,775,1026,1178,1246,1260,1237,1199,1178,1193,1270,1424,1673,2033,2503,3087,3779,4566, 5423,6332,7263,8177,9040,9823,10492,11023,11395,11600,11643,11530,11272,10885,10393,9807,9146,8421,7639,6821, 5968,5089,4191,3290,2377,1468,565,-329,-1209,-2073,-2912,-3730,-4525,-5295,-6034,-6746,-7424,-8068,-8673,-9229, -9744,-10204,-10603,-10942,-11207,-11394,-11486,-11474,-11342,-11080,-10675,-10128,-9440,-8626,-7705,-6705,-5659,-4597,-3555,-2566, -1653,-845,-152,414,852,1164,1369,1477,1513,1495,1452,1404,1383,1406,1496,1674,1951,2339,2839,3457, 4176,4985,5861,6778,7704,8609,9451,10204,10835,11319,11643,11802,11797,11638,11338,10917,10390,9776,9086,8340, 7542,6706,5841,4952,4048,3135,2218,1303,395,-498,-1379,-2244,-3084,-3896,-4686,-5448,-6186,-6890,-7559,-8196, -8790,-9338,-9836,-10281,-10665,-10982,-11223,-11377,-11437,-11385,-11211,-10902,-10451,-9860,-9132,-8289,-7349,-6342,-5303,-4263, -3255,-2309,-1449,-696,-65,444,829,1092,1258,1334,1349,1319,1276,1240,1243,1294,1425,1649,1975,2416, 2970,3635,4397,5239,6137,7061,7978,8859,9663,10360,10927,11340,11586,11674,11597,11374,11017,10550,9981,9332, 8613,7846,7034,6186,5310,4421,3519,2607,1694,785,-116,-1005,-1875,-2726,-3550,-4348,-5123,-5867,-6586,-7273, -7925,-8538,-9110,-9633,-10108,-10525,-10876,-11158,-11357,-11470,-11483,-11379,-11149,-10781,-10270,-9617,-8838,-7942,-6964,-5931, -4876,-3836,-2834,-1907,-1074,-357,243,713,1064,1300,1437,1494,1495,1465,1428,1405,1428,1510,1676,1939, 2309,2789,3383,4081,4872,5735,6640,7564,8469,9323,10092,10743,11259,11614,11806,11838,11712,11446,11051,10547, 9950,9277,8538,7755,6930,6070,5190,4290,3385,2473,1555,649,-252,-1138,-2007,-2854,-3675,-4469,-5235,-5976, -6684,-7361,-8005,-8610,-9176,-9687,-10147,-10546,-10880,-11140,-11313,-11396,-11371,-11226,-10953,-10539,-9982,-9290,-8477,-7561, -6571,-5543,-4501,-3487,-2527,-1650,-874,-213,325,739,1033,1222,1324,1350,1334,1293,1256,1248,1294,1405, 1608,1914,2331,2857,3493,4229,5050,5930,6847,7762,8647,9464,10179,10769,11213,11493,11609,11569,11377,11050, 10602,10054,9420,8715,7949,7142,6300,5429,4540,3637,2728,1814,901,-1,-897,-1775,-2633,-3468,-4281,-5061, -5816,-6537,-7229,-7891,-8511,-9097,-9637,-10123,-10556,-10928,-11227,-11452,-11585,-11623,-11548,-11349,-11016,-10545,-9934,-9190, -8328,-7376,-6359,-5311,-4269,-3262,-2320,-1465,-719,-93,411,796,1064,1233,1323,1344,1332,1305,1291,1313, 1391,1551,1799,2156,2623,3203,3884,4661,5511,6409,7328,8241,9103,9887,10558,11094,11479,11700,11760,11664, 11426,11060,10580,10006,9351,8629,7854,7039,6189,5319,4429,3529,2624,1717,814,-81,-965,-1837,-2684,-3509, -4306,-5077,-5816,-6526,-7204,-7848,-8456,-9024,-9544,-10012,-10424,-10772,-11049,-11241,-11344,-11349,-11235,-10997,-10625,-10115, -9470,-8695,-7818,-6856,-5840,-4807,-3787,-2815,-1914,-1108,-409,170,624,968,1202,1344,1413,1430,1417,1403, 1407,1457,1573,1772,2068,2471,2985,3605,4321,5126,5990,6889,7799,8676,9496,10218,10818,11272,11573,11705, 11683,11512,11206,10781,10251,9633,8941,8190,7389,6552,5685,4800,3897,2990,2079,1170,265,-628,-1514,-2380, -3223,-4046,-4837,-5602,-6338,-7038,-7705,-8338,-8933,-9486,-9991,-10440,-10833,-11157,-11406,-11569,-11638,-11598,-11439,-11147, -10721,-10156,-9457,-8636,-7715,-6727,-5693,-4650,-3639,-2678,-1801,-1025,-363,174,595,900,1103,1220,1274,1281, 1267,1258,1280,1352,1496,1731,2064,2507,3057,3717,4465,5292,6175,7081,7986,8850,9640,10330,10887,11296, 11546,11633,11567,11357,11017,10567,10016,9382,8677,7918,7113,6270,5404,4520,3623,2720,1820,920,26,-854, -1722,-2572,-3401,-4203,-4977,-5722,-6440,-7119,-7768,-8378,-8949,-9473,-9948,-10368,-10731,-11018,-11230,-11352,-11374,-11286, -11069,-10724,-10244,-9624,-8878,-8019,-7074,-6073,-5043,-4017,-3031,-2110,-1278,-550,58,546,915,1180,1348,1441, 1478,1480,1474,1482,1527,1632,1819,2093,2480,2971,3572,4269,5058,5910,6806,7708,8600,9430,10179,10807, 11296,11629,11802,11812,11676,11399,11005,10500,9904,9234,8501,7714,6886,6028,5144,4245,3339,2429,1518,613, -282,-1165,-2033,-2881,-3708,-4508,-5281,-6026,-6736,-7413,-8055,-8657,-9220,-9733,-10197,-10602,-10947,-11215,-11408,-11501, -11495,-11374,-11123,-10738,-10215,-9558,-8779,-7897,-6934,-5920,-4891,-3874,-2908,-2014,-1212,-523,52,505,841,1076, 1222,1300,1328,1334,1337,1362,1430,1567,1787,2102,2523,3053,3685,4411,5217,6081,6974,7865,8726,9522, 10219,10792,11221,11489,11602,11556,11367,11045,10612,10075,9455,8766,8019,7223,6391,5530,4645,3748,2840,1936, 1035,139,-747,-1616,-2471,-3302,-4113,-4896,-5653,-6377,-7072,-7731,-8349,-8928,-9464,-9951,-10384,-10756,-11065,-11294, -11439,-11488,-11427,-11247,-10928,-10480,-9893,-9176,-8343,-7418,-6425,-5400,-4371,-3371,-2428,-1569,-813,-170,353,754, 1047,1244,1357,1413,1428,1430,1439,1477,1572,1739,1995,2352,2816,3388,4060,4822,5658,6540,7442,8330, 9177,9945,10605,11130,11506,11721,11776,11678,11439,11073,10599,10032,9384,8670,7902,7091,6243,5371,4479,3574, 2665,1757,853,-42,-926,-1793,-2642,-3469,-4271,-5049,-5793,-6515,-7197,-7846,-8456,-9023,-9544,-10014,-10428,-10777, -11062,-11263,-11375,-11387,-11286,-11055,-10691,-10191,-9555,-8793,-7925,-6974,-5970,-4943,-3923,-2947,-2040,-1219,-508,85, 558,913,1162,1320,1403,1437,1440,1436,1450,1503,1618,1814,2100,2490,2987,3591,4293,5077,5926,6811, 7705,8579,9392,10121,10732,11201,11516,11672,11671,11519,11230,10824,10316,9715,9040,8306,7523,6696,5845,4967, 4073,3163,2254,1347,447,-444,-1319,-2180,-3016,-3831,-4622,-5384,-6118,-6824,-7495,-8126,-8717,-9265,-9765,-10207, -10594,-10915,-11162,-11327,-11397,-11361,-11209,-10924,-10502,-9944,-9256,-8450,-7547,-6570,-5557,-4535,-3537,-2585,-1716,-942, -279,264,687,998,1210,1336,1398,1416,1414,1419,1448,1528,1676,1906,2236,2669,3212,3857,4596,5407, 6276,7169,8060,8910,9698,10384,10942,11351,11608,11704,11642,11435,11103,10651,10105,9471,8772,8018,7215,6377, 5511,4626,3725,2814,1903,994,95,-798,-1667,-2518,-3352,-4158,-4940,-5692,-6418,-7112,-7771,-8390,-8971,-9506, -9988,-10412,-10775,-11070,-11289,-11418,-11450,-11372,-11170,-10836,-10361,-9752,-9016,-8168,-7232,-6236,-5217,-4199,-3215,-2294, -1459,-726,-111,384,762,1030,1202,1298,1333,1340,1332,1335,1375,1468,1643,1905,2263,2732,3306,3978, 4738,5565,6440,7333,8207,9037,9789,10428,10937,11296,11496,11540,11428,11181,10805,10320,9746,9088,8371,7599, 6790,5942,5075,4184,3284,2377,1467,564,-331,-1213,-2076,-2918,-3737,-4533,-5299,-6037,-6745,-7424,-8065,-8666, -9222,-9734,-10191,-10588,-10917,-11178,-11355,-11439,-11423,-11287,-11027,-10633,-10096,-9432,-8644,-7753,-6790,-5780,-4758,-3754, -2796,-1912,-1122,-438,128,574,907,1133,1272,1342,1363,1361,1359,1379,1443,1572,1783,2089,2498,3012, 3634,4350,5145,6001,6892,7789,8657,9462,10179,10771,11226,11527,11668,11655,11492,11193,10775,10254,9646,8962, 8223,7434,6609,5752,4876,3982,3079,2172,1263,363,-529,-1407,-2263,-3098,-3909,-4692,-5449,-6176,-6872,-7537, -8165,-8753,-9293,-9787,-10226,-10600,-10906,-11139,-11285,-11334,-11278,-11103,-10798,-10358,-9780,-9074,-8256,-7341,-6363,-5351, -4338,-3352,-2421,-1572,-819,-177,345,755,1051,1248,1362,1418,1433,1431,1436,1475,1562,1721,1968,2313, 2758,3312,3966,4708,5521,6383,7270,8144,8979,9743,10402,10934,11319,11549,11621,11542,11318,10967,10504,9946, 9302,8594,7830,7022,6183,5316,4429,3533,2627,1716,809,-90,-979,-1853,-2702,-3533,-4333,-5110,-5857,-6574, -7254,-7912,-8521,-9092,-9618,-10090,-10507,-10859,-11137,-11335,-11447,-11459,-11357,-11135,-10782,-10292,-9667,-8920,-8066,-7129, -6141,-5127,-4126,-3163,-2263,-1456,-747,-152,327,692,954,1121,1217,1263,1273,1280,1301,1361,1482,1681, 1971,2361,2856,3454,4148,4922,5762,6640,7526,8393,9202,9928,10540,11015,11339,11507,11521,11390,11117,10723, 10226,9637,8974,8244,7467,6648,5803,4927,4042,3145,2243,1342,439,-451,-1329,-2191,-3030,-3843,-4632,-5394, -6123,-6822,-7487,-8121,-8712,-9261,-9763,-10211,-10601,-10924,-11170,-11333,-11406,-11371,-11221,-10949,-10541,-9999,-9326,-8535, -7649,-6685,-5684,-4666,-3673,-2724,-1851,-1075,-401,158,600,934,1162,1311,1392,1430,1439,1458,1496,1583, 1734,1968,2296,2729,3259,3897,4621,5417,6268,7147,8022,8867,9639,10321,10876,11290,11549,11653,11605,11413, 11095,10660,10127,9505,8814,8063,7265,6435,5571,4692,3798,2898,1994,1090,190,-699,-1571,-2431,-3262,-4072, -4851,-5607,-6329,-7017,-7673,-8293,-8869,-9405,-9888,-10320,-10683,-10982,-11203,-11336,-11369,-11295,-11105,-10781,-10328,-9741, -9027,-8205,-7296,-6322,-5317,-4316,-3344,-2432,-1603,-869,-247,261,657,949,1145,1264,1329,1357,1372,1397, 1452,1567,1753,2026,2396,2871,3448,4119,4876,5700,6562,7444,8304,9123,9860,10490,10984,11338,11529,11569, 11459,11216,10846,10369,9800,9151,8435,7665,6857,6009,5141,4253,3358,2455,1554,653,-240,-1121,-1986,-2833, -3657,-4453,-5225,-5965,-6673,-7349,-7988,-8592,-9148,-9663,-10124,-10533,-10872,-11141,-11331,-11430,-11424,-11308,-11069,-10700, -10198,-9565,-8813,-7959,-7025,-6034,-5029,-4032,-3074,-2184,-1379,-681,-93,384,750,1014,1191,1299,1358,1387, 1413,1460,1543,1689,1912,2222,2634,3152,3762,4469,5250,6089,6954,7828,8671,9455,10148,10724,11164,11452, 11580,11560,11397,11104,10692,10179,9580,8910,8175,7390,6565,5713,4836,3948,3051,2147,1248,351,-535,-1405, -2266,-3104,-3916,-4702,-5462,-6189,-6887,-7548,-8171,-8756,-9295,-9786,-10227,-10607,-10921,-11161,-11312,-11375,-11326,-11162, -10872,-10449,-9897,-9215,-8419,-7532,-6577,-5579,-4577,-3595,-2668,-1810,-1048,-398,143,572,893,1120,1266,1346, 1395,1419,1450,1510,1613,1792,2047,2398,2850,3406,4057,4796,5602,6455,7329,8195,9021,9775,10427,10950, 11331,11555,11627,11545,11329,10988,10535,9987,9357,8659,7903,7102,6265,5405,4520,3623,2721,1817,918,26, -857,-1726,-2576,-3406,-4206,-4985,-5735,-6453,-7136,-7783,-8393,-8963,-9483,-9956,-10374,-10729,-11019,-11227,-11348,-11373, -11284,-11077,-10739,-10269,-9670,-8944,-8115,-7202,-6229,-5228,-4228,-3259,-2353,-1527,-801,-184,320,711,1005,1202, 1331,1406,1449,1480,1526,1606,1741,1947,2238,2630,3123,3710,4393,5158,5980,6839,7706,8551,9348,10061, 10661,11129,11444,11610,11619,11484,11219,10829,10339,9759,9104,8384,7612,6799,5951,5082,4194,3295,2392,1488, 588,-302,-1179,-2039,-2881,-3699,-4492,-5259,-5997,-6706,-7376,-8011,-8611,-9160,-9662,-10113,-10507,-10837,-11094,-11269, -11351,-11334,-11196,-10938,-10544,-10022,-9369,-8600,-7735,-6799,-5811,-4814,-3829,-2887,-2019,-1239,-563,3,455,797, 1044,1204,1302,1352,1386,1412,1464,1559,1717,1951,2277,2703,3231,3855,4570,5358,6195,7062,7928,8760, 9526,10202,10755,11170,11433,11539,11493,11305,10990,10560,10029,9421,8734,7994,7204,6377,5522,4642,3746,2843, 1935,1031,133,-752,-1627,-2477,-3311,-4120,-4902,-5660,-6383,-7079,-7741,-8361,-8940,-9476,-9956,-10384,-10753,-11054, -11281,-11424,-11469,-11408,-11228,-10921,-10481,-9908,-9213,-8404,-7508,-6552,-5555,-4557,-3583,-2665,-1821,-1070,-427,106, 528,843,1065,1214,1301,1357,1396,1442,1522,1648,1846,2123,2493,2967,3536,4201,4946,5757,6610,7477, 8331,9139,9874,10502,11002,11358,11560,11610,11511,11274,10915,10453,9892,9254,8552,7798,6999,6165,5302,4423, 3529,2628,1725,830,-62,-939,-1801,-2642,-3462,-4257,-5023,-5766,-6473,-7157,-7797,-8398,-8957,-9468,-9928,-10331, -10669,-10938,-11129,-11230,-11229,-11119,-10887,-10523,-10030,-9406,-8662,-7815,-6890,-5916,-4918,-3928,-2978,-2089,-1287,-582, 13,496,867,1141,1326,1439,1505,1543,1576,1626,1714,1860,2079,2389,2790,3294,3897,4587,5355,6177, 7038,7897,8734,9513,10205,10783,11230,11528,11669,11660,11506,11221,10815,10309,9713,9045,8317,7539,6723,5873, 4999,4109,3204,2299,1392,492,-403,-1283,-2143,-2980,-3797,-4586,-5347,-6083,-6788,-7459,-8089,-8680,-9233,-9729, -10171,-10555,-10873,-11119,-11279,-11347,-11315,-11167,-10887,-10484,-9945,-9283,-8504,-7632,-6693,-5712,-4724,-3752,-2826,-1973, -1208,-547,7,447,785,1023,1186,1281,1338,1376,1417,1484,1598,1776,2032,2376,2821,3364,4000,4723, 5512,6350,7207,8059,8869,9614,10260,10786,11170,11405,11486,11421,11214,10879,10437,9897,9272,8583,7835,7047, 6217,5361,4484,3594,2693,1793,891,-2,-887,-1759,-2607,-3429,-4232,-5007,-5749,-6467,-7152,-7804,-8419,-8989, -9515,-9988,-10402,-10758,-11043,-11249,-11372,-11394,-11312,-11111,-10781,-10318,-9728,-9017,-8199,-7292,-6330,-5343,-4353,-3397, -2497,-1676,-949,-328,183,583,885,1097,1233,1315,1363,1401,1454,1538,1677,1886,2177,2562,3048,3628, 4302,5051,5862,6711,7571,8409,9199,9908,10511,10985,11314,11493,11519,11399,11147,10773,10293,9722,9070,8359, 7593,6789,5951,5085,4206,3311,2410,1510,609,-281,-1165,-2027,-2868,-3684,-4479,-5240,-5976,-6680,-7355,-7991, -8592,-9147,-9654,-10107,-10504,-10833,-11090,-11268,-11357,-11342,-11216,-10970,-10598,-10094,-9461,-8713,-7864,-6939,-5971,-4983, -4005,-3072,-2199,-1417,-728,-148,324,691,959,1145,1265,1338,1384,1432,1499,1605,1773,2015,2347,2772, 3291,3909,4613,5385,6210,7062,7910,8730,9484,10151,10700,11111,11378,11495,11459,11286,10985,10568,10053,9449, 8775,8041,7260,6442,5593,4724,3840,2947,2045,1150,253,-631,-1508,-2357,-3194,-3998,-4779,-5530,-6251,-6942, -7599,-8222,-8804,-9336,-9825,-10255,-10625,-10923,-11152,-11290,-11336,-11276,-11103,-10806,-10377,-9818,-9137,-8346,-7468,-6522, -5539,-4555,-3593,-2679,-1843,-1097,-452,87,514,841,1077,1232,1330,1390,1436,1485,1566,1689,1885,2159, 2522,2983,3542,4192,4921,5713,6551,7404,8246,9042,9768,10391,10891,11250,11463,11520,11437,11213,10865,10413, 9863,9231,8535,7781,6984,6153,5292,4417,3525,2631,1729,833,-61,-946,-1814,-2661,-3490,-4285,-5057,-5801, -6511,-7189,-7834,-8440,-9004,-9523,-9990,-10401,-10747,-11020,-11218,-11325,-11332,-11230,-11015,-10667,-10193,-9591,-8871,-8045, -7146,-6184,-5203,-4226,-3282,-2399,-1595,-883,-283,217,606,899,1106,1243,1330,1385,1433,1498,1595,1749, 1976,2286,2691,3190,3783,4466,5221,6030,6873,7722,8545,9318,10000,10575,11021,11318,11471,11471,11331,11061, 10671,10181,9604,8945,8228,7457,6649,5806,4943,4060,3171,2268,1373,482,-405,-1279,-2138,-2978,-3790,-4580, -5340,-6066,-6763,-7426,-8054,-8642,-9185,-9681,-10125,-10507,-10823,-11066,-11225,-11293,-11255,-11106,-10834,-10431,-9903,-9248, -8485,-7626,-6694,-5724,-4741,-3773,-2849,-1997,-1229,-562,-3,451,799,1056,1231,1345,1416,1465,1513,1588, 1703,1880,2135,2477,2916,3453,4079,4789,5568,6390,7241,8084,8891,9633,10279,10811,11204,11446,11543,11491, 11300,10983,10557,10032,9423,8742,8004,7215,6391,5539,4664,3775,2880,1979,1081,187,-696,-1567,-2421,-3253, -4059,-4840,-5593,-6312,-7000,-7652,-8269,-8843,-9369,-9848,-10274,-10634,-10927,-11142,-11272,-11303,-11232,-11037,-10724,-10276, -9706,-9015,-8217,-7335,-6393,-5418,-4444,-3495,-2599,-1781,-1053,-427,89,504,816,1041,1193,1292,1357,1406, 1468,1558,1699,1906,2197,2576,3053,3623,4284,5020,5815,6650,7496,8320,9103,9803,10401,10873,11205,11384, 11417,11307,11062,10699,10228,9669,9031,8326,7569,6765,5930,5068,4184,3291,2394,1494,599,-290,-1164,-2028, -2871,-3693,-4487,-5256,-5997,-6703,-7374,-8010,-8608,-9163,-9665,-10120,-10517,-10847,-11109,-11290,-11382,-11371,-11250,-11007, -10636,-10138,-9512,-8777,-7943,-7032,-6072,-5093,-4125,-3189,-2320,-1532,-838,-253,225,605,882,1083,1217,1306, 1365,1422,1495,1609,1774,2017,2343,2763,3275,3884,4577,5340,6152,6991,7841,8657,9410,10080,10633,11060, 11337,11462,11445,11284,10999,10596,10091,9504,8845,8122,7351,6537,5694,4824,3942,3043,2147,1251,359,-522, -1392,-2248,-3083,-3895,-4675,-5435,-6161,-6856,-7516,-8138,-8719,-9253,-9740,-10171,-10546,-10851,-11083,-11233,-11289,-11241, -11074,-10788,-10372,-9830,-9166,-8393,-7531,-6606,-5640,-4665,-3712,-2803,-1964,-1210,-557,-14,427,768,1015,1193, 1308,1387,1447,1512,1604,1737,1935,2210,2574,3034,3583,4223,4946,5727,6553,7393,8223,9013,9731,10351, 10850,11213,11424,11487,11405,11189,10848,10401,9858,9240,8549,7803,7016,6190,5331,4455,3564,2667,1766,865, -21,-901,-1764,-2612,-3436,-4239,-5012,-5758,-6472,-7154,-7800,-8410,-8972,-9488,-9955,-10363,-10711,-10987,-11188,-11303, -11317,-11225,-11014,-10678,-10214,-9623,-8916,-8107,-7219,-6275,-5307,-4332,-3395,-2507,-1699,-983,-367,142,546,854, 1075,1230,1332,1407,1470,1548,1659,1819,2049,2359,2762,3254,3843,4514,5261,6061,6895,7733,8547,9312, 9995,10570,11019,11327,11481,11489,11360,11095,10718,10231,9662,9016,8310,7548,6746,5909,5051,4169,3276,2379, 1481,586,-298,-1173,-2028,-2866,-3678,-4466,-5227,-5961,-6664,-7328,-7962,-8552,-9098,-9594,-10037,-10423,-10740,-10990, -11159,-11236,-11214,-11082,-10825,-10444,-9933,-9303,-8557,-7722,-6813,-5858,-4889,-3930,-3013,-2157,-1381,-702,-126,342, 712,990,1187,1326,1419,1490,1561,1655,1787,1976,2239,2586,3029,3560,4177,4879,5646,6459,7293,8123, 8916,9644,10281,10804,11192,11437,11530,11480,11294,10978,10556,10034,9430,8759,8027,7248,6434,5588,4720,3833, 2937,2038,1140,246,-636,-1504,-2355,-3181,-3987,-4763,-5512,-6234,-6924,-7579,-8197,-8772,-9300,-9778,-10199,-10561, -10853,-11071,-11204,-11245,-11183,-11004,-10699,-10269,-9714,-9037,-8258,-7389,-6459,-5499,-4532,-3589,-2694,-1867,-1130,-489, 46,478,808,1055,1228,1349,1430,1503,1579,1686,1838,2056,2350,2732,3203,3770,4422,5147,5932,6753, 7585,8400,9174,9867,10462,10933,11265,11454,11493,11388,11155,10798,10337,9782,9150,8455,7706,6913,6088,5231, 4357,3466,2567,1670,774,-119,-995,-1861,-2701,-3522,-4315,-5081,-5818,-6529,-7205,-7846,-8448,-9006,-9517,-9975, -10374,-10710,-10975,-11161,-11259,-11262,-11157,-10935,-10587,-10111,-9510,-8794,-7980,-7091,-6153,-5189,-4230,-3305,-2435,-1639, -937,-335,160,558,862,1083,1235,1347,1424,1501,1593,1721,1904,2154,2483,2904,3418,4021,4700,5453, 6253,7082,7907,8706,9449,10105,10649,11066,11338,11468,11448,11292,11009,10609,10112,9527,8868,8149,7384,6577, 5740,4876,4001,3108,2211,1315,421,-467,-1336,-2193,-3026,-3836,-4617,-5374,-6096,-6794,-7453,-8079,-8661,-9201, -9694,-10128,-10501,-10808,-11042,-11193,-11255,-11213,-11064,-10790,-10391,-9866,-9220,-8467,-7621,-6707,-5754,-4788,-3840,-2934, -2091,-1330,-666,-104,355,715,986,1181,1315,1412,1489,1568,1671,1818,2023,2302,2665,3119,3662,4293, 5002,5769,6580,7406,8224,9001,9711,10328,10823,11184,11403,11478,11404,11202,10875,10437,9905,9292,8608,7871, 7088,6268,5420,4551,3667,2774,1875,979,90,-794,-1661,-2509,-3337,-4136,-4910,-5656,-6369,-7052,-7697,-8310, -8878,-9400,-9872,-10284,-10637,-10918,-11120,-11239,-11260,-11179,-10982,-10662,-10213,-9645,-8959,-8166,-7294,-6369,-5410,-4452, -3520,-2639,-1831,-1109,-484,35,455,779,1019,1190,1308,1396,1471,1558,1674,1841,2075,2385,2784,3271, 3851,4512,5243,6030,6846,7672,8472,9227,9900,10468,10913,11221,11378,11396,11269,11015,10645,10171,9606,8962, 8259,7500,6702,5869,5012,4138,3249,2355,1456,561,-325,-1202,-2063,-2904,-3720,-4510,-5274,-6008,-6707,-7376, -8009,-8601,-9151,-9656,-10105,-10495,-10818,-11071,-11240,-11323,-11302,-11175,-10931,-10562,-10064,-9450,-8720,-7895,-7000,-6055, -5096,-4145,-3231,-2376,-1601,-916,-332,151,532,823,1036,1185,1293,1375,1452,1552,1687,1876,2136,2482, 2914,3436,4047,4736,5489,6289,7109,7932,8715,9441,10077,10602,10995,11246,11354,11318,11147,10849,10443,9935, 9343,8676,7953,7183,6369,5530,4666,3786,2896,2001,1106,217,-666,-1536,-2386,-3220,-4026,-4805,-5557,-6277, -6964,-7616,-8230,-8807,-9336,-9819,-10244,-10609,-10905,-11127,-11262,-11306,-11243,-11068,-10776,-10356,-9814,-9153,-8384,-7533, -6617,-5669,-4708,-3770,-2875,-2051,-1310,-663,-116,325,671,932,1124,1259,1356,1439,1527,1641,1798,2019, 2312,2692,3161,3722,4364,5080,5854,6666,7490,8297,9064,9760,10351,10826,11164,11358,11406,11319,11096,10755, 10306,9767,9146,8458,7719,6932,6106,5256,4385,3501,2610,1716,823,-60,-938,-1800,-2644,-3465,-4262,-5030, -5770,-6477,-7151,-7790,-8388,-8945,-9454,-9914,-10317,-10656,-10922,-11113,-11213,-11216,-11111,-10890,-10546,-10078,-9485,-8783, -7983,-7101,-6168,-5211,-4259,-3338,-2466,-1672,-965,-358,147,556,867,1102,1269,1388,1480,1565,1660,1789, 1967,2213,2539,2952,3456,4045,4713,5449,6240,7054,7872,8665,9404,10061,10612,11034,11318,11456,11452,11310, 11039,10659,10176,9604,8960,8251,7491,6689,5850,4992,4113,3225,2332,1438,546,-335,-1210,-2066,-2903,-3715, -4504,-5264,-5993,-6688,-7353,-7978,-8562,-9103,-9594,-10033,-10415,-10728,-10969,-11129,-11192,-11161,-11015,-10750,-10362,-9848, -9217,-8480,-7651,-6753,-5818,-4864,-3925,-3027,-2187,-1433,-770,-203,263,630,908,1115,1263,1366,1456,1543, 1651,1799,2000,2277,2634,3081,3615,4237,4933,5691,6486,7304,8112,8882,9588,10200,10701,11067,11290,11368, 11305,11114,10792,10369,9848,9246,8575,7843,7064,6248,5401,4534,3649,2757,1860,966,81,-800,-1669,-2516, -3342,-4144,-4924,-5675,-6392,-7078,-7725,-8336,-8901,-9422,-9894,-10309,-10663,-10947,-11157,-11281,-11308,-11231,-11041,-10731, -10291,-9732,-9057,-8284,-7423,-6509,-5561,-4612,-3686,-2806,-1995,-1270,-639,-108,320,654,909,1096,1233,1330, 1421,1520,1645,1818,2050,2359,2755,3235,3806,4460,5182,5957,6765,7579,8377,9125,9800,10374,10825,11138, 11309,11337,11225,10987,10629,10167,9619,8993,8302,7556,6768,5944,5091,4217,3335,2441,1548,658,-225,-1097, -1952,-2790,-3606,-4394,-5161,-5894,-6600,-7267,-7901,-8493,-9043,-9543,-9988,-10380,-10705,-10962,-11139,-11227,-11214,-11095, -10858,-10498,-10013,-9409,-8696,-7893,-7012,-6087,-5137,-4198,-3288,-2435,-1656,-967,-376,117,514,816,1043,1210, 1333,1433,1526,1638,1784,1980,2246,2588,3019,3534,4140,4817,5559,6349,7157,7967,8744,9464,10093,10617, 11016,11270,11378,11350,11183,10895,10493,9992,9408,8755,8038,7274,6467,5632,4768,3892,2998,2105,1208,314, -563,-1431,-2285,-3113,-3921,-4704,-5458,-6183,-6877,-7534,-8154,-8733,-9263,-9746,-10176,-10543,-10844,-11071,-11217,-11270, -11220,-11059,-10782,-10378,-9850,-9207,-8460,-7626,-6727,-5794,-4848,-3917,-3029,-2202,-1453,-801,-243,212,575,851, 1061,1212,1327,1427,1529,1657,1824,2050,2346,2724,3192,3741,4374,5081,5842,6639,7447,8244,8996,9680, 10270,10743,11084,11283,11340,11252,11041,10707,10265,9734,9122,8445,7712,6933,6118,5275,4409,3527,2635,1743, 850,-38,-912,-1773,-2612,-3432,-4224,-4995,-5735,-6446,-7124,-7764,-8369,-8927,-9439,-9899,-10301,-10642,-10911,-11105, -11215,-11228,-11137,-10931,-10606,-10156,-9582,-8899,-8120,-7259,-6345,-5405,-4465,-3551,-2681,-1884,-1168,-550,-26,395, 729,981,1170,1309,1424,1524,1641,1784,1979,2236,2567,2981,3481,4064,4729,5455,6232,7035,7838,8618, 9347,9989,10536,10957,11239,11380,11380,11242,10981,10603,10124,9562,8922,8220,7469,6675,5850,4998,4124,3241, 2349,1456,563,-320,-1189,-2044,-2877,-3688,-4470,-5225,-5958,-6654,-7319,-7946,-8533,-9076,-9567,-10004,-10385,-10697, -10940,-11099,-11175,-11145,-11014,-10763,-10391,-9897,-9282,-8558,-7749,-6865,-5944,-5000,-4067,-3169,-2327,-1559,-880,-297, 189,579,882,1110,1278,1408,1517,1623,1750,1910,2125,2410,2770,3217,3751,4362,5050,5797,6583,7384, 8181,8943,9638,10244,10740,11107,11337,11424,11373,11188,10882,10465,9953,9361,8696,7974,7204,6400,5564,4703, 3829,2943,2048,1154,268,-612,-1479,-2327,-3153,-3951,-4725,-5472,-6191,-6875,-7527,-8139,-8709,-9232,-9705,-10123, -10480,-10767,-10978,-11105,-11142,-11073,-10897,-10600,-10184,-9642,-8987,-8230,-7390,-6492,-5560,-4623,-3702,-2827,-2018,-1287, -646,-103,342,697,970,1171,1321,1440,1545,1653,1794,1971,2212,2524,2917,3397,3957,4596,5309,6069, 6865,7662,8447,9183,9845,10411,10857,11170,11347,11377,11269,11038,10688,10230,9688,9063,8375,7633,6846,6025, 5179,4312,3427,2542,1646,752,-133,-1012,-1870,-2714,-3531,-4323,-5086,-5822,-6527,-7199,-7834,-8431,-8989,-9491, -9945,-10340,-10671,-10930,-11109,-11201,-11200,-11089,-10865,-10521,-10055,-9469,-8772,-7979,-7115,-6199,-5258,-4323,-3418,-2565, -1785,-1086,-481,23,435,759,1003,1185,1324,1436,1540,1656,1810,2011,2279,2621,3045,3557,4150,4815, 5550,6324,7123,7918,8688,9401,10030,10553,10950,11214,11338,11319,11168,10893,10504,10016,9443,8797,8089,7331, 6532,5702,4851,3978,3094,2205,1311,424,-459,-1326,-2180,-3011,-3820,-4598,-5349,-6071,-6763,-7419,-8038,-8615, -9150,-9634,-10063,-10431,-10734,-10960,-11104,-11158,-11113,-10952,-10682,-10285,-9770,-9139,-8400,-7578,-6692,-5762,-4824,-3899, -3014,-2192,-1442,-782,-221,246,621,910,1127,1289,1411,1516,1625,1753,1923,2147,2440,2815,3272,3816, 4438,5128,5879,6666,7468,8254,9003,9685,10275,10752,11098,11307,11377,11304,11105,10784,10356,9833,9229,8555, 7828,7052,6237,5396,4532,3652,2764,1874,979,94,-786,-1651,-2500,-3324,-4125,-4897,-5641,-6354,-7035,-7676, -8282,-8844,-9363,-9828,-10238,-10584,-10863,-11061,-11173,-11190,-11106,-10905,-10588,-10154,-9593,-8924,-8160,-7311,-6411,-5481, -4546,-3635,-2775,-1982,-1267,-644,-119,312,656,917,1117,1265,1382,1491,1606,1752,1943,2195,2524,2928, 3421,3997,4650,5364,6129,6921,7718,8491,9214,9860,10407,10831,11125,11275,11290,11166,10915,10551,10090,9533, 8906,8211,7464,6673,5849,4999,4130,3247,2360,1469,580,-303,-1175,-2033,-2869,-3686,-4474,-5232,-5964,-6662, -7323,-7954,-8540,-9083,-9579,-10022,-10407,-10722,-10971,-11138,-11212,-11191,-11062,-10818,-10457,-9972,-9372,-8660,-7865,-6994, -6081,-5147,-4222,-3327,-2488,-1721,-1039,-450,41,439,755,993,1177,1317,1434,1548,1678,1845,2063,2346, 2703,3144,3672,4278,4954,5689,6466,7262,8049,8802,9497,10105,10601,10976,11210,11306,11265,11089,10793,10392, 9893,9308,8652,7938,7172,6369,5534,4673,3801,2915,2027,1136,249,-628,-1496,-2346,-3172,-3979,-4758,-5504, -6225,-6909,-7563,-8176,-8743,-9273,-9749,-10166,-10526,-10820,-11038,-11174,-11213,-11153,-10981,-10692,-10286,-9758,-9120,-8377, -7552,-6667,-5743,-4813,-3900,-3024,-2214,-1480,-834,-285,173,541,827,1044,1213,1343,1459,1583,1725,1913, 2154,2468,2860,3330,3889,4524,5223,5975,6760,7555,8331,9061,9721,10291,10738,11055,11235,11275,11180,10958, 10619,10176,9648,9033,8358,7624,6845,6029,5186,4322,3445,2554,1666,781,-103,-976,-1834,-2673,-3490,-4285, -5051,-5790,-6496,-7166,-7801,-8396,-8950,-9453,-9908,-10300,-10635,-10899,-11086,-11184,-11187,-11084,-10871,-10539,-10082,-9511, -8835,-8062,-7214,-6314,-5388,-4462,-3561,-2708,-1924,-1221,-608,-86,336,677,941,1145,1304,1434,1557,1695, 1857,2071,2344,2689,3117,3626,4215,4877,5598,6366,7156,7943,8701,9405,10026,10549,10943,11207,11331,11316, 11168,10895,10515,10035,9473,8835,8137,7385,6593,5766,4914,4044,3162,2272,1382,497,-382,-1248,-2101,-2933, -3740,-4526,-5281,-6008,-6701,-7362,-7984,-8565,-9099,-9583,-10018,-10390,-10698,-10934,-11092,-11158,-11124,-10981,-10723,-10346, -9851,-9239,-8528,-7727,-6859,-5951,-5024,-4107,-3226,-2396,-1643,-974,-398,85,481,790,1030,1214,1363,1491, 1618,1763,1946,2178,2478,2851,3309,3845,4460,5143,5881,6652,7442,8215,8950,9619,10202,10676,11017,11224, 11293,11226,11027,10712,10290,9779,9183,8522,7803,7035,6229,5393,4532,3656,2770,1879,990,105,-769,-1633, -2476,-3301,-4097,-4872,-5617,-6332,-7012,-7660,-8267,-8831,-9345,-9810,-10220,-10565,-10847,-11052,-11174,-11202,-11124,-10939, -10635,-10210,-9669,-9013,-8267,-7438,-6550,-5634,-4711,-3805,-2938,-2139,-1417,-782,-244,206,562,847,1063,1233, 1371,1495,1629,1791,1991,2251,2581,2990,3477,4047,4690,5397,6148,6929,7716,8478,9194,9832,10371,10799, 11092,11249,11267,11149,10909,10555,10095,9554,8931,8247,7511,6730,5914,5066,4203,3322,2437,1543,661,-222, -1092,-1945,-2778,-3590,-4378,-5141,-5870,-6573,-7238,-7867,-8461,-9004,-9501,-9945,-10330,-10649,-10898,-11071,-11160,-11147, -11029,-10802,-10453,-9984,-9402,-8710,-7931,-7082,-6181,-5260,-4345,-3454,-2617,-1843,-1152,-552,-48,367,698,958, 1157,1317,1451,1582,1727,1906,2128,2416,2776,3217,3734,4330,4997,5723,6487,7269,8045,8789,9473,10078, 10571,10945,11182,11284,11250,11080,10797,10396,9904,9330,8683,7979,7224,6429,5603,4748,3878,2995,2107,1216, 332,-543,-1412,-2259,-3085,-3888,-4665,-5415,-6135,-6823,-7477,-8093,-8667,-9194,-9671,-10095,-10453,-10749,-10969,-11105, -11155,-11103,-10946,-10670,-10278,-9761,-9140,-8413,-7604,-6734,-5825,-4903,-3998,-3130,-2314,-1571,-919,-354,119,503, 804,1040,1225,1373,1507,1640,1797,1994,2242,2559,2947,3419,3966,4594,5283,6023,6796,7576,8339,9061, 9715,10278,10726,11051,11234,11285,11198,10984,10658,10222,9696,9094,8422,7696,6928,6116,5283,4422,3546,2662, 1773,882,-3,-876,-1738,-2578,-3397,-4189,-4956,-5697,-6403,-7080,-7718,-8320,-8879,-9389,-9843,-10246,-10582,-10847, -11038,-11144,-11155,-11063,-10859,-10542,-10101,-9546,-8882,-8123,-7290,-6403,-5490,-4572,-3680,-2832,-2045,-1338,-719,-191, 246,597,874,1085,1252,1393,1523,1664,1834,2049,2321,2667,3082,3586,4160,4808,5518,6270,7045,7821, 8568,9266,9885,10402,10804,11076,11207,11206,11069,10812,10442,9970,9416,8786,8092,7351,6564,5746,4899,4034, 3155,2271,1377,491,-388,-1259,-2110,-2943,-3752,-4535,-5289,-6016,-6709,-7371,-7994,-8578,-9118,-9606,-10040,-10415, -10722,-10957,-11113,-11183,-11156,-11017,-10767,-10402,-9917,-9318,-8619,-7826,-6976,-6075,-5158,-4251,-3373,-2546,-1791,-1116, -535,-40,364,688,940,1138,1294,1431,1568,1716,1907,2142,2444,2820,3272,3804,4409,5085,5812,6577, 7353,8123,8856,9523,10106,10582,10936,11155,11236,11183,11003,10704,10296,9797,9211,8561,7848,7086,6290,5460, 4609,3740,2859,1973,1083,199,-676,-1537,-2383,-3206,-4007,-4775,-5517,-6232,-6912,-7558,-8165,-8732,-9250,-9718, -10133,-10482,-10758,-10966,-11086,-11118,-11048,-10869,-10574,-10163,-9634,-8996,-8260,-7444,-6570,-5662,-4746,-3849,-2990,-2190, -1465,-827,-273,186,561,857,1088,1271,1422,1559,1699,1863,2071,2333,2660,3068,3550,4112,4744,5440, 6183,6952,7725,8483,9189,9826,10368,10796,11093,11261,11288,11187,10958,10616,10174,9636,9024,8348,7614,6839, 6029,5190,4330,3454,2576,1688,802,-79,-949,-1806,-2643,-3458,-4246,-5010,-5740,-6442,-7107,-7739,-8329,-8877, -9380,-9826,-10214,-10540,-10792,-10966,-11052,-11046,-10935,-10710,-10372,-9915,-9343,-8667,-7898,-7061,-6176,-5261,-4352,-3469, -2630,-1863,-1171,-564,-52,372,716,985,1197,1366,1511,1646,1797,1975,2203,2489,2845,3279,3791,4380, 5039,5753,6506,7279,8046,8785,9465,10066,10563,10941,11189,11299,11273,11123,10848,10465,9985,9417,8783,8081, 7328,6540,5717,4867,4002,3121,2235,1348,464,-413,-1281,-2130,-2960,-3769,-4548,-5300,-6020,-6711,-7362,-7976, -8554,-9085,-9568,-9991,-10357,-10657,-10882,-11026,-11078,-11035,-10884,-10616,-10235,-9737,-9127,-8418,-7625,-6767,-5872,-4961, -4061,-3196,-2382,-1643,-983,-416,66,461,774,1022,1218,1378,1520,1664,1821,2020,2272,2583,2969,3434, 3976,4593,5269,5998,6760,7529,8284,9000,9647,10208,10656,10980,11174,11228,11151,10949,10632,10209,9694,9100, 8435,7720,6949,6146,5310,4454,3582,2700,1814,930,48,-824,-1684,-2527,-3344,-4145,-4915,-5654,-6361,-7035, -7674,-8274,-8828,-9342,-9800,-10202,-10542,-10812,-11004,-11115,-11129,-11041,-10847,-10533,-10108,-9566,-8918,-8172,-7357,-6483, -5580,-4672,-3783,-2936,-2148,-1436,-810,-273,172,539,829,1059,1244,1398,1543,1694,1870,2092,2369,2710, 3130,3627,4200,4843,5542,6288,7055,7820,8563,9256,9871,10393,10794,11067,11207,11212,11086,10840,10484,10025, 9481,8861,8179,7442,6662,5845,5005,4142,3269,2385,1501,618,-258,-1126,-1978,-2808,-3621,-4405,-5165,-5891, -6588,-7248,-7869,-8454,-8992,-9480,-9920,-10297,-10611,-10855,-11016,-11090,-11069,-10944,-10707,-10350,-9879,-9296,-8612,-7838, -6998,-6113,-5209,-4308,-3431,-2609,-1849,-1168,-574,-72,343,680,951,1161,1338,1487,1636,1796,1990,2231, 2533,2904,3352,3878,4477,5141,5856,6607,7375,8131,8855,9517,10095,10570,10920,11141,11226,11178,11003,10714, 10314,9823,9246,8599,7897,7145,6346,5520,4668,3799,2919,2036,1150,267,-607,-1468,-2314,-3137,-3938,-4714, -5462,-6179,-6864,-7510,-8119,-8684,-9206,-9677,-10088,-10443,-10730,-10944,-11074,-11113,-11051,-10884,-10600,-10202,-9688,-9066, -8344,-7550,-6690,-5797,-4894,-4000,-3143,-2344,-1614,-969,-408,61,445,754,1001,1197,1362,1514,1669,1840, 2056,2319,2648,3048,3527,4081,4707,5393,6123,6882,7648,8391,9090,9724,10262,10687,10989,11158,11193,11094, 10873,10539,10102,9577,8977,8307,7585,6814,6009,5174,4316,3441,2559,1670,786,-93,-963,-1818,-2653,-3471, -4263,-5029,-5763,-6468,-7141,-7773,-8369,-8917,-9417,-9870,-10258,-10588,-10846,-11030,-11126,-11131,-11030,-10821,-10497,-10053, -9501,-8842,-8091,-7270,-6399,-5504,-4601,-3723,-2887,-2115,-1411,-798,-274,168,523,813,1042,1226,1388,1542, 1705,1896,2129,2425,2782,3213,3722,4305,4955,5662,6402,7164,7924,8649,9325,9922,10418,10796,11045,11161, 11143,10995,10727,10351,9881,9324,8695,8008,7269,6483,5667,4824,3961,3085,2197,1313,429,-445,-1308,-2155, -2981,-3787,-4567,-5322,-6042,-6734,-7390,-8011,-8585,-9116,-9595,-10023,-10393,-10693,-10923,-11070,-11134,-11096,-10955,-10702, -10334,-9845,-9253,-8557,-7779,-6936,-6048,-5150,-4254,-3387,-2575,-1829,-1160,-573,-79,330,663,930,1143,1319, 1484,1644,1815,2026,2282,2605,2993,3454,3993,4604,5277,5998,6748,7513,8260,8967,9613,10172,10623,10954, 11147,11213,11146,10949,10641,10225,9722,9138,8484,7774,7017,6223,5394,4543,3675,2797,1907,1022,144,-731, -1590,-2430,-3250,-4043,-4814,-5556,-6268,-6944,-7590,-8195,-8752,-9264,-9727,-10130,-10473,-10747,-10949,-11063,-11090,-11017, -10835,-10542,-10129,-9604,-8972,-8248,-7445,-6586,-5697,-4798,-3915,-3073,-2280,-1563,-925,-374,91,469,778,1024, 1228,1400,1560,1725,1914,2145,2428,2774,3193,3685,4252,4885,5576,6308,7065,7819,8551,9231,9841,10355, 10759,11034,11178,11185,11068,10825,10473,10022,9481,8870,8193,7465,6692,5884,5046,4187,3317,2432,1546,660, -218,-1088,-1939,-2770,-3581,-4366,-5126,-5857,-6553,-7218,-7847,-8433,-8977,-9471,-9910,-10292,-10608,-10852,-11023,-11103, -11090,-10976,-10750,-10411,-9959,-9392,-8723,-7968,-7142,-6270,-5374,-4480,-3613,-2784,-2023,-1335,-730,-212,221,574, 859,1092,1281,1447,1611,1786,1989,2240,2544,2920,3368,3887,4483,5138,5847,6586,7341,8088,8800,9456, 10032,10502,10857,11080,11174,11134,10970,10685,10297,9811,9246,8607,7907,7161,6377,5556,4714,3850,2974,2092, 1207,324,-548,-1412,-2257,-3081,-3882,-4655,-5404,-6119,-6804,-7455,-8069,-8638,-9161,-9634,-10052,-10408,-10701,-10914, -11052,-11098,-11046,-10888,-10622,-10241,-9742,-9137,-8436,-7654,-6807,-5925,-5032,-4145,-3294,-2490,-1758,-1103,-530,-46, 358,686,949,1162,1343,1506,1675,1860,2082,2353,2686,3086,3562,4108,4729,5403,6122,6868,7622,8356, 9050,9673,10205,10630,10935,11108,11147,11057,10846,10519,10094,9575,8982,8320,7601,6838,6040,5209,4358,3490, 2611,1729,842,-38,-907,-1764,-2604,-3416,-4210,-4973,-5705,-6411,-7080,-7718,-8314,-8863,-9370,-9822,-10218,-10552, -10812,-10996,-11098,-11103,-11010,-10810,-10499,-10072,-9532,-8888,-8154,-7347,-6485,-5595,-4703,-3828,-2995,-2219,-1513,-891, -351,102,476,780,1025,1225,1399,1565,1738,1938,2180,2472,2831,3262,3765,4339,4982,5675,6411,7157, 7906,8626,9295,9885,10380,10759,11013,11136,11128,10993,10739,10377,9916,9369,8750,8068,7334,6555,5748,4908, 4053,3183,2307,1423,540,-334,-1198,-2050,-2876,-3683,-4463,-5214,-5938,-6626,-7283,-7902,-8480,-9012,-9499,-9927, -10299,-10604,-10836,-10987,-11055,-11020,-10890,-10643,-10287,-9816,-9236,-8557,-7794,-6964,-6089,-5197,-4313,-3452,-2640,-1890, -1221,-628,-121,299,646,925,1152,1344,1512,1682,1861,2075,2335,2652,3037,3498,4026,4629,5290,5999, 6738,7489,8224,8927,9568,10120,10571,10903,11104,11178,11117,10938,10641,10238,9748,9170,8527,7825,7069,6280, 5458,4609,3748,2874,1994,1112,231,-639,-1499,-2343,-3164,-3961,-4731,-5472,-6185,-6862,-7503,-8107,-8667,-9179, -9647,-10053,-10401,-10679,-10881,-11001,-11032,-10960,-10785,-10498,-10097,-9586,-8968,-8255,-7468,-6620,-5738,-4846,-3971,-3131, -2343,-1622,-981,-426,49,441,762,1016,1232,1414,1581,1754,1951,2181,2461,2805,3220,3707,4268,4890, 5572,6293,7039,7784,8508,9188,9796,10313,10720,11003,11156,11175,11069,10845,10508,10069,9545,8943,8276,7551, 6783,5981,5150,4295,3428,2551,1671,790,-87,-953,-1805,-2641,-3452,-4242,-4998,-5730,-6430,-7095,-7717,-8307, -8847,-9343,-9785,-10171,-10492,-10743,-10914,-10999,-10994,-10883,-10666,-10336,-9890,-9341,-8685,-7944,-7133,-6270,-5390,-4502, -3638,-2819,-2056,-1365,-758,-232,209,577,869,1112,1313,1492,1663,1843,2053,2304,2610,2979,3422,3938, 4522,5166,5865,6594,7342,8079,8786,9439,10011,10481,10841,11070,11171,11140,10985,10715,10336,9864,9311,8681, 7992,7252,6470,5653,4815,3952,3082,2198,1319,442,-432,-1293,-2140,-2970,-3772,-4548,-5298,-6015,-6703,-7352, -7963,-8535,-9060,-9533,-9955,-10317,-10611,-10835,-10973,-11026,-10981,-10829,-10569,-10195,-9711,-9119,-8431,-7663,-6831,-5959, -5074,-4197,-3349,-2548,-1812,-1153,-576,-83,330,667,941,1167,1362,1539,1710,1901,2126,2396,2728,3124, 3593,4135,4744,5409,6119,6857,7602,8327,9015,9637,10173,10604,10914,11094,11145,11064,10865,10554,10139,9638, 9054,8403,7694,6936,6143,5318,4470,3602,2728,1848,966,91,-779,-1633,-2471,-3289,-4083,-4851,-5587,-6295, -6969,-7604,-8199,-8755,-9257,-9711,-10110,-10445,-10712,-10903,-11008,-11025,-10940,-10747,-10444,-10028,-9503,-8875,-8153,-7359, -6516,-5638,-4753,-3889,-3057,-2285,-1575,-946,-405,57,438,754,1009,1221,1406,1581,1761,1963,2206,2501, 2857,3281,3778,4343,4975,5659,6380,7121,7859,8571,9232,9823,10319,10700,10958,11089,11088,10959,10713,10362, 9909,9372,8765,8092,7364,6591,5785,4948,4093,3220,2345,1461,581,-294,-1158,-2006,-2835,-3644,-4428,-5181, -5909,-6604,-7265,-7886,-8466,-9001,-9487,-9917,-10291,-10603,-10840,-10999,-11071,-11050,-10929,-10693,-10345,-9885,-9323,-8657, -7906,-7091,-6233,-5352,-4473,-3617,-2809,-2057,-1380,-783,-270,161,519,811,1051,1253,1434,1615,1803,2028, 2290,2608,2991,3444,3968,4562,5217,5918,6646,7389,8118,8812,9450,10005,10456,10794,11006,11085,11035,10862, 10575,10184,9699,9135,8501,7810,7066,6278,5464,4621,3761,2888,2008,1128,251,-621,-1477,-2318,-3137,-3937, -4706,-5449,-6162,-6844,-7490,-8095,-8655,-9172,-9637,-10043,-10389,-10675,-10881,-11005,-11045,-10982,-10817,-10540,-10149,-9650, -9044,-8345,-7569,-6737,-5869,-4987,-4116,-3277,-2489,-1768,-1119,-554,-73,335,665,938,1161,1355,1535,1718, 1919,2156,2442,2784,3193,3674,4227,4843,5512,6221,6959,7695,8411,9084,9689,10206,10613,10903,11060,11090, 10992,10771,10444,10014,9496,8903,8248,7530,6771,5971,5148,4300,3432,2554,1674,791,-83,-949,-1805,-2635, -3449,-4236,-4996,-5730,-6429,-7098,-7728,-8321,-8866,-9362,-9806,-10191,-10514,-10766,-10947,-11038,-11037,-10938,-10730,-10408, -9978,-9437,-8797,-8068,-7267,-6419,-5547,-4667,-3809,-2986,-2225,-1530,-912,-378,72,451,757,1013,1225,1412, 1595,1786,2001,2256,2567,2937,3375,3883,4460,5100,5787,6512,7249,7982,8681,9333,9904,10380,10742,10983, 11094,11076,10930,10669,10301,9840,9293,8675,7996,7266,6492,5683,4848,3993,3124,2245,1368,487,-384,-1246, -2092,-2913,-3714,-4494,-5239,-5960,-6646,-7304,-7916,-8490,-9014,-9493,-9915,-10277,-10572,-10793,-10941,-11000,-10962,-10819, -10570,-10207,-9736,-9155,-8481,-7724,-6907,-6049,-5171,-4298,-3450,-2650,-1914,-1246,-659,-158,269,619,909,1148, 1352,1541,1728,1927,2158,2437,2768,3168,3636,4172,4777,5436,6140,6871,7609,8330,9007,9628,10162,10595, 10907,11092,11150,11078,10883,10578,10170,9674,9094,8449,7746,6996,6206,5386,4542,3680,2801,1922,1040,164, -704,-1561,-2402,-3220,-4013,-4780,-5522,-6227,-6906,-7545,-8147,-8703,-9212,-9673,-10071,-10409,-10680,-10878,-10990,-11015, -10938,-10757,-10469,-10066,-9552,-8936,-8228,-7448,-6611,-5745,-4866,-4004,-3174,-2397,-1687,-1051,-495,-24,373,700, 966,1189,1387,1570,1761,1975,2221,2520,2881,3308,3803,4365,4994,5671,6386,7122,7855,8561,9216,9805, 10299,10680,10943,11077,11081,10961,10723,10372,9928,9396,8788,8122,7397,6632,5831,4996,4145,3281,2403,1523, 644,-230,-1096,-1944,-2777,-3582,-4367,-5124,-5848,-6542,-7204,-7826,-8411,-8952,-9440,-9876,-10253,-10563,-10804,-10967, -11047,-11032,-10917,-10693,-10359,-9913,-9361,-8710,-7969,-7163,-6311,-5439,-4563,-3708,-2895,-2143,-1458,-854,-329,114, 485,791,1043,1257,1450,1639,1839,2063,2334,2658,3047,3502,4026,4615,5268,5965,6688,7427,8151,8841, 9471,10022,10474,10809,11016,11100,11054,10883,10600,10210,9732,9166,8534,7844,7103,6319,5506,4666,3806,2937, 2057,1177,301,-567,-1430,-2271,-3095,-3891,-4668,-5410,-6123,-6804,-7451,-8059,-8625,-9146,-9613,-10032,-10379,-10669, -10882,-11014,-11057,-11004,-10846,-10584,-10206,-9721,-9125,-8443,-7677,-6850,-5985,-5110,-4240,-3400,-2606,-1878,-1227,-652, -158,257,602,887,1123,1328,1517,1707,1919,2160,2449,2800,3214,3697,4247,4861,5531,6241,6973,7705, 8421,9092,9690,10202,10607,10895,11056,11085,10990,10776,10448,10022,9510,8921,8263,7552,6795,5997,5171,4325, 3461,2589,1708,832,-42,-907,-1763,-2598,-3411,-4199,-4962,-5694,-6393,-7061,-7691,-8282,-8829,-9330,-9778,-10169, -10495,-10751,-10932,-11030,-11036,-10940,-10741,-10432,-10007,-9476,-8843,-8124,-7333,-6487,-5616,-4738,-3877,-3054,-2283,-1583, -959,-417,45,429,749,1014,1236,1432,1618,1815,2035,2292,2603,2975,3416,3926,4500,5139,5827,6544, 7279,8009,8708,9356,9925,10396,10761,10997,11105,11087,10945,10686,10318,9858,9315,8697,8018,7288,6513,5706, 4870,4014,3146,2274,1390,516,-353,-1217,-2061,-2891,-3694,-4471,-5223,-5942,-6631,-7285,-7899,-8475,-9006,-9484, -9910,-10276,-10573,-10802,-10952,-11014,-10980,-10842,-10600,-10244,-9774,-9203,-8533,-7778,-6964,-6103,-5225,-4354,-3505,-2701, -1957,-1289,-700,-191,238,591,886,1127,1334,1523,1707,1909,2139,2413,2743,3141,3605,4138,4736,5396, 6097,6824,7562,8283,8965,9586,10122,10555,10871,11061,11122,11054,10868,10569,10162,9672,9097,8456,7755,7009, 6218,5401,4556,3696,2825,1946,1065,192,-677,-1532,-2373,-3190,-3985,-4750,-5494,-6201,-6875,-7514,-8116,-8671, -9182,-9641,-10044,-10384,-10656,-10852,-10967,-10993,-10918,-10738,-10448,-10047,-9533,-8919,-8211,-7430,-6594,-5725,-4845,-3979, -3147,-2368,-1654,-1020,-466,8,404,728,996,1219,1414,1595,1780,1988,2233,2523,2879,3297,3788,4348, 4969,5645,6358,7093,7826,8537,9199,9792,10290,10681,10953,11093,11104,10992,10760,10418,9979,9452,8853,8186, 7465,6700,5898,5068,4214,3349,2473,1592,714,-157,-1023,-1874,-2707,-3517,-4303,-5059,-5790,-6484,-7147,-7771, -8356,-8897,-9386,-9822,-10202,-10516,-10759,-10925,-11006,-10994,-10876,-10652,-10317,-9871,-9316,-8662,-7922,-7117,-6266,-5387, -4513,-3657,-2845,-2092,-1409,-809,-287,153,517,814,1063,1272,1457,1635,1825,2044,2305,2620,2998,3445, 3965,4548,5193,5885,6611,7347,8078,8773,9410,9971,10431,10777,10998,11089,11051,10892,10618,10235,9762,9205, 8578,7890,7151,6372,5558,4719,3861,2989,2111,1230,351,-516,-1374,-2218,-3041,-3841,-4616,-5359,-6076,-6760, -7406,-8013,-8582,-9101,-9571,-9988,-10343,-10627,-10842,-10972,-11016,-10963,-10806,-10536,-10158,-9667,-9073,-8382,-7614,-6787, -5924,-5043,-4172,-3333,-2540,-1815,-1163,-592,-103,308,644,921,1153,1351,1532,1716,1914,2150,2432,2770, 3177,3654,4199,4810,5474,6184,6917,7652,8372,9050,9659,10182,10600,10896,11067,11108,11024,10818,10497,10079, 9570,8986,8335,7624,6868,6075,5251,4404,3538,2666,1784,905,29,-833,-1687,-2521,-3335,-4127,-4889,-5623, -6326,-6995,-7628,-8219,-8768,-9270,-9716,-10108,-10438,-10694,-10878,-10974,-10982,-10890,-10689,-10379,-9957,-9424,-8791,-8068, -7276,-6434,-5560,-4681,-3823,-3000,-2231,-1536,-914,-377,79,460,774,1030,1248,1437,1616,1805,2019,2269, 2572,2936,3372,3876,4448,5081,5766,6486,7222,7954,8658,9310,9888,10368,10738,10986,11104,11090,10957,10702, 10343,9886,9345,8733,8056,7325,6554,5748,4913,4059,3190,2311,1430,552,-320,-1181,-2026,-2857,-3662,-4442, -5193,-5915,-6608,-7263,-7880,-8457,-8988,-9472,-9896,-10265,-10569,-10796,-10950,-11013,-10984,-10851,-10608,-10255,-9791,-9218, -8551,-7799,-6984,-6130,-5251,-4380,-3534,-2731,-1987,-1317,-730,-223,205,559,851,1088,1296,1481,1665,1859, 2085,2360,2685,3076,3541,4072,4670,5324,6023,6753,7492,8210,8899,9520,10062,10500,10821,11018,11084,11021, 10839,10541,10141,9647,9076,8436,7740,6991,6203,5384,4542,3681,2807,1927,1048,172,-697,-1550,-2393,-3210, -4007,-4775,-5516,-6225,-6903,-7542,-8144,-8702,-9216,-9676,-10079,-10420,-10695,-10894,-11013,-11042,-10970,-10795,-10508,-10110, -9605,-8992,-8289,-7510,-6676,-5809,-4930,-4063,-3233,-2451,-1733,-1096,-535,-61,339,667,939,1164,1360,1544, 1732,1937,2183,2475,2828,3249,3739,4297,4921,5593,6310,7045,7780,8490,9156,9749,10254,10646,10919,11065, 11082,10970,10744,10406,9968,9445,8845,8182,7465,6701,5902,5075,4225,3360,2483,1605,726,-145,-1010,-1861, -2690,-3502,-4284,-5043,-5770,-6467,-7131,-7753,-8339,-8880,-9371,-9812,-10189,-10506,-10753,-10921,-11003,-10993,-10885,-10665, -10336,-9893,-9343,-8694,-7958,-7155,-6304,-5431,-4555,-3697,-2885,-2126,-1438,-832,-305,139,507,814,1062,1277, 1465,1649,1841,2062,2323,2641,3018,3464,3983,4568,5212,5901,6627,7363,8093,8788,9428,9987,10451,10796, 11018,11111,11078,10918,10646,10265,9795,9238,8611,7925,7189,6407,5595,4758,3898,3029,2151,1270,391,-478, -1336,-2183,-3005,-3805,-4581,-5328,-6045,-6730,-7380,-7989,-8556,-9080,-9553,-9969,-10326,-10617,-10833,-10971,-11019,-10971, -10819,-10558,-10184,-9700,-9111,-8425,-7663,-6838,-5975,-5099,-4228,-3385,-2594,-1862,-1206,-629,-138,276,617,900, 1132,1334,1520,1703,1905,2140,2421,2760,3163,3639,4183,4793,5459,6164,6897,7634,8352,9027,9639,10162, 10579,10879,11050,11094,11009,10803,10487,10068,9563,8978,8325,7618,6863,6070,5248,4400,3536,2661,1779,899, 26,-843,-1696,-2531,-3348,-4139,-4904,-5638,-6344,-7015,-7649,-8244,-8796,-9298,-9752,-10144,-10476,-10739,-10926,-11028, -11041,-10953,-10761,-10456,-10037,-9512,-8884,-8166,-7378,-6536,-5667,-4787,-3925,-3100,-2331,-1625,-1000,-455,8,392, 710,974,1191,1388,1572,1763,1976,2228,2535,2901,3332,3838,4408,5044,5729,6447,7183,7917,8619,9274, 9854,10339,10711,10959,11080,11072,10939,10688,10330,9877,9338,8725,8052,7327,6552,5748,4916,4063,3196,2315, 1436,556,-313,-1176,-2023,-2851,-3656,-4437,-5191,-5912,-6604,-7261,-7881,-8458,-8992,-9473,-9903,-10274,-10578,-10814, -10966,-11035,-11009,-10880,-10644,-10297,-9833,-9268,-8603,-7856,-7043,-6184,-5309,-4434,-3582,-2776,-2031,-1355,-758,-245, 185,544,840,1085,1293,1484,1671,1867,2096,2368,2699,3090,3551,4082,4680,5337,6037,6764,7503,8228, 8914,9542,10086,10527,10854,11050,11121,11064,10880,10587,10187,9698,9131,8490,7794,7049,6265,5446,4606,3745, 2875,1992,1111,236,-633,-1492,-2331,-3152,-3946,-4718,-5460,-6171,-6848,-7493,-8098,-8657,-9172,-9635,-10041,-10386, -10664,-10868,-10990,-11022,-10959,-10790,-10512,-10119,-9618,-9012,-8316,-7539,-6707,-5840,-4962,-4095,-3262,-2474,-1756,-1109, -545,-63,338,673,947,1179,1378,1565,1755,1965,2211,2504,2856,3277,3766,4325,4945,5620,6334,7068, 7802,8515,9177,9772,10276,10674,10947,11093,11111,11003,10774,10437,10002,9477,8880,8216,7500,6737,5940,5109, 4260,3396,2518,1637,755,-118,-983,-1834,-2665,-3477,-4263,-5024,-5754,-6452,-7116,-7744,-8332,-8876,-9370,-9812, -10197,-10517,-10765,-10938,-11026,-11021,-10917,-10704,-10381,-9949,-9404,-8759,-8030,-7230,-6382,-5507,-4631,-3775,-2956,-2196, -1505,-890,-358,92,466,776,1033,1248,1440,1627,1822,2043,2306,2620,3000,3447,3960,4547,5189,5881, 6603,7339,8065,8760,9401,9963,10425,10776,11000,11096,11063,10910,10637,10262,9790,9238,8612,7924,7188,6415, 5602,4765,3909,3039,2161,1280,401,-467,-1328,-2172,-2997,-3799,-4572,-5321,-6039,-6724,-7375,-7988,-8556,-9082, -9556,-9975,-10334,-10629,-10847,-10989,-11040,-10996,-10849,-10594,-10229,-9748,-9164,-8485,-7724,-6901,-6039,-5163,-4290,-3448, -2649,-1915,-1254,-671,-172,247,595,882,1119,1323,1509,1698,1900,2136,2419,2757,3160,3635,4175,4786, 5448,6153,6882,7619,8337,9015,9625,10150,10569,10872,11047,11091,11010,10808,10494,10081,9574,8993,8343,7636, 6882,6093,5269,4424,3562,2687,1810,927,52,-815,-1669,-2508,-3321,-4115,-4879,-5613,-6320,-6989,-7626,-8224, -8774,-9280,-9734,-10130,-10466,-10730,-10918,-11025,-11037,-10952,-10763,-10464,-10052,-9529,-8905,-8191,-7403,-6562,-5690,-4812, -3948,-3123,-2348,-1641,-1012,-462,3,393,715,980,1201,1395,1580,1769,1983,2236,2536,2898,3329,3829, 4395,5028,5708,6429,7160,7894,8599,9255,9834,10322,10697,10952,11077,11074,10946,10701,10349,9899,9362,8754, 8082,7356,6585,5784,4950,4099,3234,2361,1479,599,-271,-1133,-1983,-2812,-3618,-4398,-5150,-5876,-6566,-7224, -7843,-8423,-8955,-9442,-9872,-10244,-10552,-10787,-10942,-11015,-10988,-10864,-10628,-10283,-9827,-9263,-8600,-7856,-7044,-6186, -5308,-4435,-3584,-2775,-2026,-1353,-754,-237,196,558,854,1098,1308,1494,1680,1873,2099,2368,2690,3078, 3537,4063,4657,5310,6007,6733,7471,8193,8884,9514,10059,10505,10835,11038,11115,11061,10887,10600,10206,9725, 9157,8522,7829,7081,6300,5484,4641,3783,2913,2036,1156,277,-589,-1447,-2290,-3110,-3906,-4678,-5419,-6133, -6811,-7452,-8058,-8617,-9131,-9599,-10005,-10355,-10634,-10840,-10963,-10998,-10932,-10766,-10488,-10098,-9600,-8997,-8298,-7526, -6693,-5826,-4945,-4080,-3245,-2460,-1738,-1093,-530,-46,357,692,962,1193,1391,1572,1759,1967,2206,2493, 2841,3256,3741,4297,4912,5585,6295,7029,7763,8475,9146,9745,10256,10660,10941,11096,11120,11019,10801,10471, 10039,9524,8929,8270,7553,6790,5994,5169,4318,3454,2579,1701,822,-53,-916,-1768,-2603,-3414,-4203,-4960, -5692,-6392,-7058,-7682,-8272,-8814,-9309,-9752,-10139,-10462,-10714,-10888,-10976,-10975,-10870,-10661,-10340,-9904,-9365,-8723, -7993,-7196,-6345,-5476,-4597,-3740,-2925,-2162,-1470,-858,-325,125,502,808,1062,1278,1468,1652,1842,2061, 2320,2630,3002,3444,3958,4537,5174,5865,6585,7323,8051,8749,9394,9960,10426,10785,11015,11119,11091,10942, 10678,10306,9840,9293,8671,7988,7254,6477,5665,4831,3972,3105,2224,1346,471,-401,-1261,-2106,-2935,-3737, -4512,-5263,-5981,-6668,-7318,-7929,-8502,-9027,-9502,-9923,-10286,-10581,-10805,-10946,-11001,-10961,-10814,-10561,-10193,-9719, -9136,-8459,-7700,-6879,-6018,-5140,-4270,-3427,-2628,-1892,-1231,-648,-148,271,617,902,1139,1344,1530,1712, 1911,2144,2419,2754,3151,3619,4158,4762,5423,6125,6856,7593,8310,8992,9608,10140,10567,10877,11057,11112, 11034,10839,10533,10123,9627,9048,8402,7697,6945,6155,5334,4489,3624,2752,1874,993,120,-749,-1602,-2439, -3258,-4052,-4819,-5556,-6263,-6938,-7573,-8168,-8725,-9228,-9683,-10082,-10417,-10686,-10878,-10986,-11005,-10923,-10735,-10438, -10028,-9510,-8889,-8176,-7391,-6555,-5684,-4805,-3946,-3117,-2345,-1635,-1003,-457,9,397,720,984,1205,1397, 1580,1767,1976,2223,2522,2880,3304,3800,4363,4991,5670,6386,7121,7853,8559,9216,9802,10295,10675,10933, 11065,11067,10942,10699,10352,9903,9371,8767,8098,7373,6604,5800,4966,4113,3242,2369,1486,607,-265,-1128, -1976,-2805,-3615,-4397,-5151,-5879,-6574,-7235,-7857,-8437,-8973,-9459,-9889,-10264,-10577,-10815,-10975,-11048,-11029,-10911, -10679,-10335,-9881,-9323,-8664,-7919,-7109,-6257,-5381,-4507,-3653,-2846,-2094,-1416,-817,-300,134,497,794,1040, 1248,1434,1621,1813,2042,2307,2627,3011,3464,3986,4578,5230,5927,6652,7391,8115,8805,9439,9992,10442, 10779,10991,11071,11023,10852,10567,10179,9698,9136,8505,7816,7074,6287,5475,4634,3775,2903,2025,1145,269, -601,-1457,-2298,-3117,-3918,-4687,-5430,-6144,-6825,-7472,-8077,-8638,-9155,-9620,-10027,-10374,-10660,-10867,-10992,-11033, -10972,-10809,-10535,-10146,-9651,-9048,-8354,-7581,-6752,-5888,-5008,-4140,-3302,-2515,-1793,-1143,-577,-94,316,650, 925,1153,1350,1534,1720,1923,2162,2450,2793,3202,3682,4234,4849,5517,6223,6959,7693,8406,9077,9681, 10197,10603,10892,11050,11081,10984,10765,10439,10011,9494,8902,8249,7532,6774,5976,5152,4306,3438,2561,1681, 798,-75,-939,-1795,-2626,-3439,-4227,-4987,-5721,-6420,-7089,-7719,-8313,-8858,-9354,-9798,-10183,-10506,-10759,-10941, -11032,-11031,-10933,-10726,-10405,-9977,-9437,-8799,-8071,-7271,-6424,-5554,-4674,-3817,-2995,-2234,-1538,-920,-384,65, 445,752,1010,1223,1411,1595,1786,2002,2258,2569,2939,3377,3885,4462,5101,5787,6511,7248,7981,8679, 9331,9901,10378,10739,10980,11092,11074,10928,10667,10300,9839,9292,8675,7995,7265,6492,5683,4847,3993,3123, 2245,1367,5,-87,-701,-1392,-1761,-1730,-1194,-189,836,1630,2258,2777,3441,4397,5550,6743,7705,8149, 8199,8031,7796,7693,7699,7488,6883,5853,4383,2662,963,-622,-2106,-3478,-4769,-5973,-7089,-7985,-8626,-8999, -9164,-9147,-9121,-9178,-9256,-9315,-9294,-9109,-8669,-8078,-7407,-6727,-6074,-5514,-4954,-4318,-3598,-2812,-1946,-1059, -209,609,1460,2373,3371,4465,5585,6598,7407,8008,8383,8588,8700,8813,8889,8896,8760,8467,7951,7330, 6654,5983,5356,4766,4117,3326,2413,1411,402,-538,-1342,-2023,-2661,-3333,-4075,-4887,-5731,-6496,-7129,-7660, -8072,-8421,-8736,-9072,-9330,-9474,-9443,-9184,-8718,-8124,-7495,-6855,-6210,-5557,-4853,-4051,-3168,-2262,-1372,-559, 148,783,1409,2065,2751,3471,4197,4857,5425,5897,6307,6715,7167,7663,8162,8582,8876,9017,9023,8950, 8839,8702,8535,8261,7801,7119,6260,5284,4274,3274,2329,1393,418,-646,-1799,-2975,-4082,-5052,-5854,-6508, -7071,-7597,-8114,-8597,-8962,-9145,-9125,-8907,-8577,-8207,-7850,-7517,-7174,-6770,-6259,-5606,-4855,-4062,-3305,-2594, -1899,-1177,-377,544,1561,2628,3648,4595,5440,6217,6963,7716,8467,9180,9778,10181,10361,10338,10166,9920, 9643,9324,8909,8331,7567,6631,5567,4504,3513,2595,1720,811,-166,-1243,-2382,-3512,-4543,-5461,-6245,-6963, -7673,-8380,-9064,-9679,-10143,-10411,-10475,-10385,-10197,-9977,-9723,-9437,-9026,-8466,-7736,-6870,-5924,-4959,-4025,-3137, -2265,-1386,-471,464,1376,2218,2980,3626,4200,4753,5316,5918,6537,7123,7611,7958,8158,8268,8314,8358, 8389,8376,8267,8008,7581,7021,6375,5709,5035,4337,3571,2687,1654,538,-618,-1713,-2699,-3574,-4355,-5116, -5880,-6655,-7383,-8014,-8475,-8775,-8930,-8986,-9009,-9009,-8954,-8793,-8484,-8008,-7372,-6644,-5888,-5154,-4445,-3741, -2988,-2149,-1224,-237,749,1684,2543,3335,4105,4881,5694,6520,7310,7990,8531,8930,9210,9437,9647,9856, 10016,10054,9917,9585,9065,8448,7774,7093,6403,5633,4751,3744,2603,1414,246,-833,-1819,-2746,-3669,-4618, -5608,-6577,-7474,-8212,-8772,-9165,-9453,-9679,-9885,-10030,-10087,-9984,-9694,-9236,-8660,-8021,-7375,-6728,-6066,-5350, -4527,-3605,-2634,-1640,-688,185,979,1722,2475,3250,4038,4794,5488,6066,6532,6901,7227,7554,7875,8169, 8393,8481,8400,8169,7840,7455,7052,6620,6131,5529,4781,3891,2918,1932,989,112,-724,-1570,-2456,-3401, -4360,-5272,-6077,-6748,-7278,-7721,-8112,-8497,-8851,-9134,-9286,-9281,-9109,-8799,-8422,-8013,-7594,-7135,-6598,-5959, -5196,-4331,-3441,-2551,-1700,-907,-116,695,1545,2442,3349,4215,4994,5673,6277,6840,7381,7954,8506,9001, 9357,9563,9613,9541,9397,9229,9026,8750,8344,7764,7014,6125,5171,4228,3320,2431,1509,516,-550,-1676, -2794,-3831,-4733,-5514,-6200,-6861,-7506,-8140,-8733,-9196,-9480,-9585,-9519,-9356,-9133,-8878,-8573,-8192,-7666,-6996, -6197,-5328,-4457,-3614,-2807,-2022,-1191,-313,625,1580,2500,3343,4088,4745,5348,5943,6548,7144,7690,8137, 8447,8617,8674,8669,8642,8592,8476,8257,7877,7322,6631,5852,5043,4249,3451,2620,1710,704,-392,-1493, -2548,-3508,-4349,-5113,-5833,-6551,-7275,-7956,-8534,-8970,-9223,-9336,-9334,-9272,-9190,-9064,-8852,-8526,-8058,-7458, -6783,-6070,-5375,-4697,-4017,-3293,-2500,-1639,-721,209,1093,1908,2665,3392,4121,4866,5633,6381,7049,7595, 8025,8341,8596,8822,9030,9197,9261,9166,8893,8450,7901,7293,6671,6037,5353,4555,3637,2602,1497,393, -639,-1583,-2461,-3324,-4215,-5131,-6039,-6884,-7594,-8121,-8486,-8737,-8917,-9062,-9173,-9192,-9089,-8805,-8351,-7773, -7126,-6470,-5825,-5167,-4460,-3660,-2750,-1770,-777,191,1082,1907,2682,3471,4288,5133,5962,6727,7382,7907, 8322,8668,8992,9305,9587,9774,9823,9693,9390,8966,8481,7977,7452,6872,6196,5373,4406,3343,2258,1210, 224,-709,-1625,-2590,-3605,-4636,-5631,-6507,-7237,-7815,-8271,-8663,-9026,-9361,-9625,-9754,-9709,-9493,-9128,-8678, -8196,-7708,-7209,-6641,-5980,-5219,-4359,-3461,-2574,-1743,-965,-220,537,1333,2168,3029,3850,4594,5234,5784, 6299,6792,7297,7791,8231,8556,8723,8725,8600,8400,8157,7891,7570,7144,6564,5815,4935,3987,3041,2131, 1250,370,-569,-1596,-2677,-3757,-4777,-5672,-6424,-7068,-7656,-8244,-8811,-9338,-9762,-10021,-10083,-9979,-9761,-9493, -9194,-8864,-8453,-7920,-7231,-6408,-5497,-4557,-3649,-2778,-1940,-1087,-172,799,1808,2801,3718,4525,5241,5886, 6534,7176,7838,8459,8976,9341,9547,9603,9575,9508,9411,9270,9022,8627,8035,7287,6439,5561,4703,3857, 3002,2082,1063,-53,-1202,-2307,-3312,-4184,-4950,-5657,-6354,-7063,-7758,-8352,-8811,-9080,-9174,-9143,-9046,-8920, -8778,-8548,-8212,-7723,-7079,-6327,-5524,-4720,-3962,-3216,-2452,-1624,-724,229,1192,2109,2932,3670,4344,5004, 5677,6375,7057,7670,8163,8519,8743,8888,8996,9089,9156,9147,9000,8667,8175,7547,6861,6170,5477,4767, 3972,3056,2021,906,-222,-1289,-2259,-3130,-3947,-4780,-5629,-6493,-7301,-7990,-8511,-8845,-9047,-9175,-9271,-9342, -9372,-9274,-9035,-8611,-8046,-7402,-6741,-6094,-5449,-4781,-4046,-3196,-2252,-1264,-311,599,1420,2183,2930,3710, 4532,5366,6154,6843,7398,7817,8153,8446,8736,9012,9217,9304,9204,8917,8473,7943,7389,6838,6254,5596, 4801,3849,2780,1657,571,-434,-1374,-2264,-3165,-4118,-5112,-6086,-6967,-7700,-8255,-8662,-8983,-9274,-9540,-9778, -9914,-9883,-9668,-9278,-8778,-8232,-7684,-7141,-6567,-5904,-5128,-4245,-3284,-2324,-1409,-569,210,986,1793,2637, 3533,4394,5180,5860,6407,6879,7308,7733,8158,8548,8837,8976,8927,8733,8435,8094,7739,7372,6917,6343, 5598,4705,3721,2732,1773,883,19,-865,-1812,-2832,-3874,-4862,-5731,-6446,-7011,-7499,-7959,-8400,-8817,-9155, -9355,-9352,-9174,-8857,-8465,-8050,-7633,-7179,-6648,-5999,-5206,-4320,-3390,-2491,-1633,-829,-39,779,1671,2612, 3565,4463,5280,5972,6573,7125,7694,8264,8833,9325,9681,9866,9886,9782,9630,9459,9260,8990,8601,8024, 7276,6391,5456,4532,3655,2787,1894,915,-151,-1301,-2436,-3491,-4408,-5189,-5884,-6537,-7192,-7847,-8451,-8922, -9218,-9312,-9241,-9078,-8867,-8646,-8392,-8050,-7574,-6943,-6175,-5342,-4486,-3669,-2902,-2145,-1362,-498,424,1381, 2318,3168,3907,4561,5171,5778,6412,7065,7669,8173,8528,8734,8811,8815,8800,8779,8696,8516,8153,7612, 6915,6130,5318,4528,3753,2945,2045,1036,-74,-1222,-2332,-3330,-4216,-5015,-5773,-6548,-7340,-8110,-8784,-9310, -9648,-9812,-9863,-9860,-9831,-9773,-9644,-9369,-8941,-8354,-7637,-6889,-6148,-5431,-4720,-3973,-3152,-2234,-1256,-274, 655,1505,2266,2985,3708,4462,5257,6040,6749,7347,7798,8136,8391,8630,8856,9048,9148,9095,8845,8421, 7869,7266,6658,6048,5384,4641,3747,2721,1608,486,-570,-1521,-2412,-3260,-4136,-5053,-5977,-6858,-7605,-8170, -8574,-8841,-9039,-9218,-9379,-9466,-9435,-9218,-8822,-8276,-7635,-6990,-6341,-5707,-5017,-4241,-3351,-2374,-1356,-371, 548,1378,2154,2933,3735,4584,5447,6253,6959,7529,7976,8351,8700,9042,9365,9624,9750,9696,9456,9082, 8630,8149,7662,7138,6523,5760,4841,3804,2724,1659,667,-258,-1153,-2084,-3075,-4097,-5101,-6014,-6781,-7376, -7855,-8245,-8619,-8982,-9289,-9501,-9552,-9410,-9104,-8689,-8233,-7769,-7292,-6775,-6178,-5441,-4598,-3695,-2785,-1918, -1109,-347,398,1190,2036,2913,3772,4560,5243,5813,6313,6790,7273,7753,8215,8573,8774,8818,8719,8517, 8297,8044,7765,7400,6890,6214,5374,4447,3500,2583,1709,835,-78,-1066,-2127,-3220,-4264,-5198,-5984,-6651, -7239,-7802,-8369,-8902,-9349,-9655,-9772,-9709,-9520,-9249,-8948,-8635,-8274,-7814,-7213,-6471,-5633,-4743,-3860,-3024, -2223,-1416,-572,345,1308,2290,3216,4057,4786,5454,6067,6696,7338,7964,8517,8937,9190,9302,9301,9245, 9171,9054,8869,8552,8055,7390,6597,5750,4900,4070,3248,2380,1424,365,-758,-1872,-2910,-3838,-4642,-5373, -6071,-6797,-7496,-8141,-8666,-9024,-9198,-9219,-9142,-9028,-8878,-8685,-8402,-7978,-7404,-6692,-5912,-5121,-4347,-3608, -2867,-2087,-1244,-325,624,1541,2399,3160,3851,4507,5168,5856,6545,7201,7757,8191,8483,8675,8803,8917, 9002,9027,8941,8699,8277,7704,7039,6348,5656,4957,4198,3352,2376,1318,205,-858,-1846,-2741,-3572,-4383, -5209,-6054,-6873,-7606,-8189,-8603,-8865,-9023,-9121,-9204,-9235,-9189,-8995,-8640,-8143,-7530,-6867,-6200,-5539,-4878, -4152,-3346,-2457,-1507,-542,378,1218,1993,2740,3483,4264,5059,5848,6553,7149,7624,7996,8304,8591,8853, 9088,9217,9208,9015,8666,8209,7688,7153,6596,5973,5260,4399,3417,2350,1277,244,-711,-1616,-2511,-3436, -4391,-5354,-6257,-7036,-7668,-8146,-8513,-8816,-9103,-9338,-9490,-9523,-9392,-9082,-8650,-8138,-7600,-7050,-6478,-5849, -5136,-4312,-3417,-2476,-1567,-708,107,880,1658,2477,3313,4164,4962,5672,6281,6796,7238,7672,8096,8488, 8808,9011,9055,8948,8711,8403,8064,7690,7255,6716,6039,5220,4290,3302,2336,1394,494,-421,-1367,-2369, -3404,-4421,-5350,-6157,-6830,-7400,-7901,-8375,-8818,-9207,-9467,-9574,-9512,-9303,-8995,-8621,-8220,-7785,-7286,-6686, -5967,-5149,-4266,-3364,-2494,-1666,-864,-40,810,1712,2624,3521,4350,5091,5740,6337,6909,7480,8034,8546, 8954,9221,9336,9330,9235,9091,8902,8657,8319,7825,7165,6382,5508,4614,3723,2846,1957,1018,0,-1071, -2164,-3198,-4139,-4974,-5697,-6369,-7020,-7650,-8232,-8730,-9086,-9271,-9307,-9212,-9059,-8858,-8613,-8291,-7871,-7312, -6625,-5850,-5031,-4220,-3422,-2640,-1837,-999,-101,827,1759,2628,3435,4157,4827,5475,6118,6767,7382,7931, 8366,8675,8857,8957,9007,9017,8978,8848,8578,8156,7573,6892,6144,5384,4610,3803,2925,1955,906,-197, -1303,-2334,-3272,-4139,-4961,-5755,-6543,-7312,-8014,-8590,-9010,-9279,-9427,-9485,-9501,-9464,-9357,-9140,-8774,-8274, -7663,-6980,-6272,-5558,-4844,-4097,-3295,-2413,-1493,-537,396,1271,2090,2856,3610,4368,5132,5890,6598,7209, 7708,8096,8400,8657,8873,9047,9144,9109,8917,8578,8113,7560,6972,6351,5691,4947,4092,3129,2076,1006, -39,-1035,-1962,-2865,-3759,-4670,-5580,-6439,-7200,-7835,-8310,-8667,-8943,-9155,-9321,-9411,-9389,-9225,-8916,-8451, -7926,-7332,-6715,-6074,-5392,-4638,-3813,-2902,-1968,-1025,-124,732,1552,2351,3166,4002,4827,5624,6342,6961, 7495,7945,8338,8719,9056,9323,9484,9500,9370,9111,8749,8335,7885,7376,6784,6063,5234,4295,3287,2277, 1302,347,-581,-1536,-2513,-3508,-4500,-5414,-6220,-6903,-7474,-7963,-8402,-8798,-9130,-9366,-9450,-9390,-9180,-8861, -8471,-8037,-7567,-7048,-6437,-5736,-4932,-4078,-3194,-2326,-1486,-679,138,967,1832,2708,3570,4376,5108,5753, 6344,6889,7422,7925,8389,8759,9017,9128,9102,8994,8809,8579,8283,7899,7393,6735,5949,5080,4164,3251, 2336,1417,468,-534,-1592,-2656,-3681,-4624,-5464,-6208,-6870,-7492,-8087,-8625,-9080,-9401,-9565,-9577,-9469,-9275, -9033,-8732,-8359,-7892,-7312,-6623,-5839,-5007,-4167,-3341,-2517,-1685,-824,76,1012,1944,2831,3646,4398,5087, 5745,6381,7013,7609,8143,8561,8860,9028,9108,9116,9075,8985,8794,8478,8020,7419,6709,5929,5124,4309, 3474,2579,1616,576,-512,-1592,-2616,-3557,-4409,-5213,-5977,-6723,-7448,-8093,-8628,-9008,-9243,-9348,-9374,-9329, -9230,-9058,-8787,-8391,-7860,-7224,-6514,-5768,-5028,-4280,-3510,-2694,-1823,-905,23,938,1800,2596,3347,4068, 4800,5533,6243,6904,7479,7951,8310,8586,8795,8970,9092,9140,9065,8850,8483,7983,7409,6786,6121,5428, 4662,3791,2835,1789,713,-332,-1330,-2262,-3155,-4026,-4907,-5782,-6601,-7335,-7934,-8394,-8726,-8970,-9152,-9281, -9339,-9294,-9110,-8782,-8325,-7773,-7167,-6536,-5892,-5203,-4451,-3632,-2735,-1800,-873,28,875,1679,2476,3276, 4083,4890,5668,6371,6974,7484,7905,8278,8607,8907,9133,9266,9243,9076,8778,8378,7919,7425,6877,6243, 5501,4638,3673,2641,1602,596,-373,-1316,-2274,-3247,-4238,-5206,-6115,-6903,-7570,-8109,-8559,-8955,-9307,-9592, -9781,-9837,-9733,-9484,-9120,-8683,-8208,-7696,-7135,-6503,-5769,-4951,-4061,-3168,-2279,-1428,-599,204,1039,1893, 2766,3612,4427,5134,5775,6325,6850,7343,7811,8231,8565,8780,8852,8790,8629,8404,8129,7799,7383,6857, 6196,5405,4515,3591,2666,1761,859,-68,-1043,-2052,-3088,-4083,-4993,-5789,-6486,-7098,-7655,-8181,-8667,-9059, -9330,-9440,-9405,-9234,-8973,-8657,-8305,-7886,-7386,-6779,-6058,-5248,-4388,-3519,-2686,-1859,-1032,-188,707,1619, 2545,3435,4254,4993,5671,6307,6928,7536,8120,8640,9049,9327,9484,9527,9502,9428,9307,9104,8775,8293, 7675,6933,6119,5279,4431,3577,2677,1712,672,-427,-1516,-2557,-3509,-4359,-5142,-5890,-6614,-7315,-7964,-8494, -8876,-9103,-9193,-9181,-9106,-8986,-8803,-8521,-8123,-7590,-6937,-6212,-5462,-4696,-3945,-3191,-2396,-1551,-643,278, 1184,2040,2821,3537,4222,4895,5582,6258,6882,7430,7862,8182,8396,8537,8642,8710,8703,8591,8331,7924, 7373,6726,6033,5330,4596,3807,2940,1969,921,-175,-1243,-2244,-3176,-4046,-4879,-5716,-6548,-7351,-8068,-8645, -9078,-9367,-9539,-9659,-9723,-9730,-9648,-9440,-9082,-8590,-7988,-7332,-6646,-5968,-5263,-4509,-3681,-2787,-1834,-873, 51,915,1729,2511,3302,4093,4904,5693,6408,7034,7539,7957,8316,8630,8918,9149,9289,9293,9132,8820, 8409,7925,7405,6847,6229,5514,4674,3720,2697,1649,631,-324,-1245,-2144,-3065,-4014,-4950,-5834,-6614,-7252, -7756,-8151,-8472,-8764,-8999,-9156,-9191,-9063,-8785,-8373,-7890,-7356,-6809,-6230,-5592,-4858,-4041,-3146,-2223,-1303, -435,389,1181,1985,2806,3652,4494,5286,6001,6620,7144,7601,8035,8453,8838,9146,9343,9386,9279,9050, 8756,8402,8014,7560,7000,6316,5491,4555,3563,2583,1627,693,-236,-1205,-2211,-3250,-4268,-5206,-6030,-6720, -7307,-7832,-8311,-8762,-9146,-9423,-9551,-9498,-9317,-9023,-8668,-8279,-7868,-7373,-6787,-6083,-5287,-4419,-3537,-2675, -1853,-1052,-233,612,1501,2412,3304,4129,4857,5515,6114,6677,7238,7785,8287,8695,8969,9093,9101,9013, 8878,8696,8468,8132,7658,7039,6276,5422,4540,3659,2786,1910,979,-28,-1090,-2183,-3223,-4184,-5030,-5765, -6453,-7105,-7736,-8333,-8834,-9207,-9408,-9446,-9369,-9212,-9013,-8768,-8457,-8047,-7503,-6826,-6057,-5251,-4435,-3636, -2861,-2065,-1230,-339,602,1538,2430,3255,3991,4673,5328,5989,6648,7289,7849,8306,8620,8811,8903,8950, 8963,8921,8789,8532,8112,7546,6857,6107,5339,4567,3770,2911,1966,933,-160,-1252,-2285,-3225,-4085,-4884, -5667,-6445,-7210,-7914,-8501,-8936,-9210,-9348,-9403,-9407,-9361,-9257,-9051,-8697,-8202,-7578,-6882,-6154,-5429,-4715, -3973,-3173,-2307,-1378,-416,524,1406,2220,2977,3715,4462,5219,5975,6683,7309,7813,8202,8503,8752,8970, 9157,9265,9261,9100,8778,8324,7774,7185,6571,5923,5205,4385,3442,2414,1335,285,-709,-1632,-2522,-3395, -4285,-5190,-6053,-6845,-7495,-7989,-8361,-8631,-8847,-9023,-9134,-9154,-9040,-8755,-8333,-7804,-7215,-6616,-5995,-5351, -4644,-3842,-2958,-2017,-1070,-161,701,1507,2284,3079,3897,4721,5529,6267,6900,7431,7862,8255,8609,8943, 9222,9402,9451,9339,9070,8693,8271,7804,7301,6721,6033,5216,4274,3246,2209,1192,223,-717,-1660,-2629, -3632,-4648,-5598,-6450,-7163,-7745,-8230,-8648,-9037,-9375,-9635,-9758,-9720,-9523,-9205,-8797,-8339,-7865,-7350,-6768, -6087,-5294,-4425,-3521,-2619,-1759,-946,-143,672,1523,2396,3271,4109,4864,5513,6097,6621,7127,7618,8084, 8480,8758,8889,8875,8742,8541,8288,7995,7637,7175,6561,5815,4949,4026,3110,2199,1318,413,-543,-1552, -2597,-3630,-4591,-5443,-6172,-6810,-7395,-7947,-8464,-8925,-9269,-9461,-9494,-9370,-9151,-8882,-8559,-8193,-7755,-7216, -6549,-5776,-4926,-4055,-3207,-2390,-1580,-757,108,1022,1962,2865,3719,4489,5181,5819,6435,7054,7666,8222, 8690,9031,9234,9313,9311,9261,9168,9004,8741,8339,7780,7087,6290,5471,4632,3796,2927,1998,994,-83, -1189,-2250,-3235,-4122,-4920,-5664,-6392,-7097,-7768,-8352,-8789,-9079,-9222,-9239,-9176,-9077,-8925,-8699,-8362,-7878, -7277,-6575,-5818,-5053,-4297,-3551,-2775,-1935,-1054,-127,809,1707,2533,3288,4000,4691,5390,6082,6758,7360, 7866,8239,8504,8685,8820,8911,8955,8909,8732,8401,7921,7326,6671,5973,5271,4513,3692,2778,1763,692, -388,-1424,-2381,-3278,-4127,-4971,-5807,-6626,-7382,-8034,-8533,-8890,-9127,-9274,-9367,-9415,-9373,-9230,-8957,-8520, -7970,-7344,-6676,-5997,-5303,-4575,-3792,-2931,-2007,-1060,-121,767,1606,2401,3168,3956,4748,5536,6283,6940, 7495,7953,8314,8636,8920,9162,9333,9379,9287,9044,8660,8202,7687,7126,6521,5842,5050,4140,3140,2097, 1066,66,-879,-1800,-2722,-3657,-4603,-5523,-6353,-7069,-7644,-8106,-8477,-8790,-9052,-9250,-9342,-9300,-9100,-8764, -8319,-7812,-7268,-6706,-6095,-5415,-4643,-3804,-2908,-1988,-1102,-255,550,1353,2156,2986,3816,4628,5383,6052, 6618,7123,7574,8003,8391,8734,8993,9112,9081,8930,8672,8348,7971,7538,7032,6406,5647,4781,3833,2850, 1881,943,4,-938,-1921,-2933,-3945,-4903,-5775,-6524,-7172,-7729,-8229,-8688,-9086,-9401,-9585,-9624,-9509,-9273, -8953,-8583,-8162,-7692,-7142,-6492,-5739,-4909,-4042,-3170,-2311,-1485,-654,181,1064,1958,2850,3705,4501,5201, 5833,6426,7002,7557,8078,8519,8862,9066,9145,9121,9010,8855,8638,8335,7928,7378,6681,5890,5024,4147, 3272,2376,1455,482,-555,-1617,-2671,-3662,-4559,-5371,-6100,-6775,-7422,-8026,-8556,-8983,-9256,-9387,-9385,-9277, -9106,-8878,-8593,-8214,-7727,-7122,-6423,-5642,-4843,-4038,-3237,-2438,-1607,-734,165,1092,1993,2843,3626,4340, 5028,5697,6349,6980,7563,8058,8435,8691,8857,8947,8979,8940,8843,8623,8281,7787,7171,6473,5728,4952, 4153,3304,2383,1384,330,-742,-1784,-2782,-3692,-4544,-5356,-6153,-6919,-7629,-8252,-8743,-9102,-9315,-9454,-9479, -9464,-9368,-9178,-8876,-8441,-7882,-7241,-6534,-5826,-5086,-4324,-3534,-2687,-1783,-857,81,976,1828,2627,3397, 4146,4908,5651,6362,7008,7559,8015,8380,8664,8905,9089,9214,9235,9129,8880,8502,8016,7464,6860,6217, 5505,4705,3815,2839,1800,762,-246,-1219,-2149,-3057,-3963,-4853,-5720,-6512,-7205,-7776,-8219,-8563,-8830,-9027, -9162,-9202,-9127,-8918,-8571,-8120,-7583,-7005,-6395,-5740,-5036,-4267,-3429,-2544,-1635,-735,137,966,1776,2578, 3389,4204,4984,5731,6401,6975,7474,7906,8291,8638,8920,9124,9214,9165,8987,8699,8330,7894,7397,6832, 6177,5405,4521,3568,2561,1565,575,-393,-1355,-2339,-3328,-4306,-5252,-6116,-6875,-7520,-8069,-8542,-8956,-9308, -9578,-9723,-9738,-9614,-9364,-9018,-8611,-8145,-7629,-7043,-6376,-5632,-4810,-3934,-3059,-2193,-1344,-507,332,1178, 2048,2915,3748,4522,5225,5863,6448,6986,7495,7968,8368,8670,8862,8920,8876,8733,8525,8262,7912,7457, 6893,6197,5403,4536,3636,2737,1824,886,-73,-1079,-2107,-3119,-4083,-4959,-5747,-6457,-7102,-7691,-8239,-8708, -9082,-9322,-9418,-9386,-9251,-9032,-8748,-8402,-7980,-7457,-6830,-6112,-5332,-4506,-3680,-2852,-2028,-1188,-311,591, 1488,2370,3219,4014,4739,5415,6071,6702,7300,7856,8324,8687,8941,9092,9151,9153,9082,8939,8684,8310, 7797,7170,6456,5677,4866,4028,3152,2218,1216,164,-895,-1935,-2922,-3841,-4696,-5500,-6268,-7001,-7674,-8271, -8735,-9075,-9276,-9373,-9376,-9323,-9192,-8976,-8638,-8197,-7630,-6986,-6280,-5544,-4796,-4025,-3212,-2373,-1479,-561, 349,1241,2082,2874,3644,4382,5113,5826,6502,7116,7640,8067,8403,8666,8857,8997,9063,9039,8886,8598, 8187,7675,7087,6440,5756,5010,4187,3275,2297,1270,228,-784,-1751,-2677,-3573,-4460,-5318,-6143,-6902,-7563, -8090,-8505,-8810,-9035,-9186,-9263,-9248,-9123,-8868,-8492,-8001,-7439,-6827,-6176,-5485,-4765,-3965,-3119,-2211,-1303, -385,491,1333,2154,2961,3761,4565,5335,6065,6724,7299,7786,8212,8586,8903,9160,9338,9398,9330,9126, 8821,8417,7962,7441,6839,6155,5364,4473,3518,2519,1506,521,-448,-1409,-2371,-3347,-4309,-5224,-6069,-6800, -7425,-7956,-8400,-8781,-9103,-9331,-9453,-9430,-9286,-9005,-8641,-8206,-7728,-7182,-6581,-5904,-5141,-4319,-3446,-2565, -1698,-857,-25,812,1650,2504,3347,4161,4910,5590,6201,6751,7264,7734,8168,8534,8797,8943,8964,8870, 8688,8434,8115,7726,7235,6626,5903,5073,4182,3258,2326,1395,453,-527,-1530,-2553,-3558,-4515,-5388,-6156, -6839,-7461,-8022,-8527,-8965,-9301,-9503,-9567,-9492,-9319,-9064,-8745,-8365,-7913,-7364,-6716,-5970,-5171,-4331,-3482, -2651,-1808,-962,-91,818,1726,2617,3464,4254,4975,5658,6297,6922,7513,8048,8514,8859,9092,9210,9248, 9214,9117,8941,8673,8276,7751,7104,6358,5568,4745,3896,3018,2092,1100,61,-1003,-2032,-3003,-3900,-4725, -5495,-6227,-6924,-7572,-8128,-8567,-8867,-9033,-9087,-9051,-8947,-8783,-8529,-8178,-7705,-7114,-6434,-5711,-4953,-4192, -3411,-2604,-1767,-885,37,945,1837,2674,3444,4185,4908,5611,6302,6956,7547,8047,8437,8731,8949,9087, 9183,9209,9142,8947,8621,8159,7592,6952,6254,5527,4749,3904,2969,1966,912,-150,-1195,-2169,-3096,-3986, -4849,-5704,-6522,-7275,-7933,-8455,-8854,-9130,-9322,-9445,-9499,-9467,-9332,-9060,-8661,-8144,-7550,-6916,-6255,-5560, -4829,-4042,-3190,-2291,-1364,-452,422,1265,2066,2850,3638,4418,5190,5914,6555,7117,7579,7974,8306,8598, 8834,8994,9038,8955,8726,8383,7953,7458,6917,6305,5626,4834,3956,2978,1971,951,-24,-980,-1911,-2839, -3766,-4702,-5593,-6406,-7111,-7690,-8168,-8550,-8860,-9121,-9303,-9380,-9328,-9129,-8811,-8381,-7888,-7350,-6778,-6144, -5454,-4677,-3828,-2930,-2017,-1121,-267,575,1404,2238,3079,3926,4750,5514,6189,6791,7321,7802,8244,8654, 8993,9251,9375,9371,9234,8986,8689,8323,7899,7394,6769,6028,5173,4245,3287,2312,1372,426,-537,-1534, -2544,-3562,-4518,-5401,-6177,-6837,-7424,-7953,-8431,-8848,-9170,-9373,-9429,-9340,-9129,-8841,-8495,-8093,-7636,-7095, -6456,-5726,-4910,-4066,-3211,-2377,-1559,-739,91,957,1842,2722,3551,4322,5021,5652,6240,6807,7354,7860, 8286,8616,8818,8894,8863,8764,8605,8390,8078,7664,7114,6434,5646,4795,3925,3044,2152,1232,248,-784, -1844,-2887,-3874,-4774,-5580,-6309,-6997,-7642,-8244,-8782,-9205,-9481,-9617,-9625,-9523,-9360,-9142,-8857,-8476,-7984, -7376,-6677,-5895,-5087,-4291,-3491,-2677,-1837,-959,-47,895,1799,2657,3453,4182,4888,5571,6239,6894,7488, 8008,8400,8682,8873,8983,9033,9038,8957,8764,8443,7981,7388,6721,5990,5236,4457,3630,2728,1745,699, -360,-1407,-2389,-3297,-4144,-4951,-5747,-6509,-7224,-7850,-8360,-8713,-8951,-9066,-9112,-9101,-9024,-8851,-8571,-8145, -7606,-6977,-6293,-5585,-4860,-4118,-3344,-2507,-1619,-699,234,1126,1970,2767,3522,4269,5023,5764,6477,7112, 7663,8107,8459,8740,8965,9140,9262,9278,9169,8919,8537,8038,7481,6869,6214,5501,4709,3818,2836,1789, 739,-287,-1268,-2201,-3114,-4013,-4910,-5800,-6618,-7333,-7922,-8387,-8737,-9010,-9223,-9370,-9431,-9375,-9190,-8857, -8408,-7882,-7297,-6702,-6065,-5374,-4621,-3788,-2905,-1989,-1073,-195,631,1446,2243,3051,3871,4672,5435,6120, 6710,7221,7662,8050,8413,8721,8955,9076,9059,8904,8633,8275,7847,7374,6838,6219,5474,4620,3674,2687, 1691,711,-236,-1170,-2121,-3096,-4070,-5019,-5884,-6650,-7296,-7831,-8293,-8698,-9051,-9329,-9502,-9535,-9425,-9172, -8822,-8398,-7937,-7429,-6860,-6218,-5471,-4644,-3759,-2876,-1986,-1137,-298,530,1381,2252,3133,3978,4776,5491, 6125,6696,7225,7729,8206,8615,8944,9152,9216,9165,9013,8795,8525,8186,7760,7211,6530,5737,4855,3940, 3024,2107,1180,232,-764,-1788,-2830,-3819,-4734,-5542,-6251,-6892,-7486,-8033,-8529,-8931,-9203,-9332,-9320,-9185, -8964,-8692,-8361,-7965,-7478,-6880,-6187,-5403,-4584,-3741,-2923,-2108,-1290,-436,445,1345,2250,3115,3921,4652, 5330,5963,6588,7183,7753,8248,8648,8914,9062,9120,9102,9026,8893,8668,8325,7847,7233,6512,5735,4908, 4079,3215,2316,1348,323,-740,-1796,-2811,-3747,-4592,-5384,-6138,-6856,-7533,-8140,-8645,-9012,-9232,-9328,-9323, -9255,-9123,-8913,-8613,-8205,-7658,-7016,-6297,-5540,-4778,-3999,-3215,-2393,-1522,-610,321,1231,2100,2910,3671, 4392,5109,5810,6497,7137,7693,8141,8487,8731,8909,9034,9095,9083,8967,8713,8316,7796,7188,6524,5819, 5077,4275,3401,2437,1405,346,-701,-1702,-2642,-3533,-4394,-5243,-6065,-6843,-7543,-8128,-8574,-8894,-9119,-9256, -9334,-9346,-9254,-9052,-8711,-8243,-7689,-7065,-6403,-5723,-5010,-4253,-3434,-2559,-1646,-723,183,1039,1856,2646, 3419,4199,4970,5718,6406,7002,7507,7928,8275,8580,8829,9017,9121,9093,8927,8636,8237,7756,7226,6638, 5992,5256,4405,3475,2470,1450,440,-541,-1485,-2416,-3353,-4285,-5205,-6060,-6829,-7483,-8013,-8439,-8793,-9083, -9301,-9440,-9454,-9337,-9078,-8709,-8247,-7733,-7172,-6572,-5911,-5190,-4382,-3504,-2602,-1702,-814,31,861,1692, 2521,3368,4202,4986,5721,6365,6928,7428,7883,8311,8688,8977,9165,9229,9161,8976,8701,8368,7968,7491, 6923,6245,5450,4559,3612,2648,1693,742,-203,-1176,-2169,-3164,-4151,-5066,-5874,-6591,-7217,-7758,-8252,-8685, -9044,-9293,-9405,-9385,-9240,-8966,-8635,-8249,-7810,-7291,-6690,-5994,-5229,-4395,-3537,-2675,-1835,-1003,-160,698, 1565,2451,3310,4119,4859,5536,6153,6739,7286,7806,8269,8643,8910,9047,9081,9024,8886,8685,8413,8043, 7557,6932,6202,5391,4532,3646,2749,1828,876,-122,-1166,-2204,-3214,-4158,-5016,-5788,-6510,-7181,-7800,-8360, -8824,-9172,-9388,-9462,-9429,-9304,-9113,-8853,-8512,-8082,-7539,-6891,-6171,-5392,-4600,-3795,-2979,-2152,-1304,-410, 501,1409,2281,3105,3875,4600,5288,5960,6605,7213,7745,8194,8538,8777,8920,8996,9013,8953,8793,8523, 8123,7605,6978,6278,5531,4745,3921,3033,2081,1077,28,-1015,-2020,-2973,-3872,-4723,-5526,-6300,-7037,-7696, -8253,-8690,-8996,-9189,-9287,-9302,-9243,-9104,-8860,-8507,-8032,-7458,-6809,-6114,-5387,-4646,-3863,-3049,-2183,-1286, -373,535,1414,2239,3034,3801,4553,5290,6004,6671,7260,7762,8175,8502,8761,8956,9093,9146,9095,8907, 8594,8171,7643,7067,6422,5730,4960,4111,3174,2185,1153,132,-874,-1831,-2767,-3674,-4573,-5444,-6273,-7013, -7651,-8179,-8586,-8904,-9151,-9310,-9391,-9368,-9227,-8967,-8581,-8093,-7544,-6949,-6305,-5621,-4880,-4077,-3219,-2328, -1418,-530,336,1176,1999,2805,3617,4423,5190,5899,6539,7100,7589,8016,8396,8725,8979,9131,9178,9093, 8897,8592,8206,7764,7247,6642,5945,5147,4259,3313,2335,1358,389,-576,-1538,-2503,-3471,-4415,-5301,-6108, -6805,-7419,-7942,-8382,-8761,-9059,-9261,-9347,-9297,-9128,-8853,-8484,-8055,-7559,-7007,-6382,-5679,-4899,-4069,-3203, -2332,-1465,-615,234,1084,1945,2797,3638,4436,5179,5859,6467,7033,7563,8033,8457,8799,9035,9159,9166, 9080,8907,8659,8335,7923,7400,6770,6026,5202,4329,3418,2488,1542,577,-419,-1443,-2460,-3450,-4382,-5242, -6015,-6717,-7352,-7936,-8446,-8870,-9177,-9368,-9419,-9365,-9207,-8976,-8667,-8286,-7810,-7252,-6599,-5873,-5091,-4277, -3461,-2634,-1794,-940,-67,825,1710,2569,3381,4145,4865,5544,6183,6801,7365,7871,8292,8613,8832,8956, 8997,8968,8857,8658,8343,7914,7370,6728,6003,5228,4412,3553,2646,1694,690,-337,-1374,-2371,-3318,-4209, -5043,-5837,-6579,-7262,-7887,-8404,-8811,-9088,-9253,-9329,-9302,-9199,-9015,-8736,-8343,-7847,-7258,-6593,-5875,-5133, -4358,-3568,-2731,-1872,-971,-73,825,1696,2530,3322,4098,4832,5561,6242,6884,7454,7943,8336,8653,8887, 9063,9160,9172,9077,8866,8529,8082,7545,6934,6259,5524,4725,3861,2919,1917,897,-129,-1133,-2107,-3039, -3943,-4821,-5669,-6462,-7173,-7783,-8289,-8677,-8966,-9170,-9299,-9330,-9274,-9094,-8795,-8393,-7890,-7319,-6706,-6037, -5329,-4562,-3751,-2894,-1997,-1101,-217,649,1485,2310,3118,3911,4692,5437,6120,6736,7279,7746,8155,8497, 8784,8996,9112,9113,8995,8761,8426,8011,7522,6970,6330,5598,4780,3875,2919,1936,943,-31,-996,-1966, -2922,-3877,-4793,-5655,-6435,-7107,-7687,-8189,-8602,-8937,-9194,-9354,-9394,-9315,-9106,-8800,-8401,-7939,-7418,-6838, -6184,-5464,-4668,-3832,-2963,-2084,-1220,-364,487,1345,2200,3045,3870,4653,5382,6042,6649,7198,7702,8154, 8545,8861,9071,9168,9149,9030,8828,8549,8183,7740,7187,6532,5768,4923,4031,3109,2172,1222,254,-739, -1749,-2755,-3734,-4640,-5477,-6229,-6904,-7514,-8064,-8544,-8931,-9200,-9352,-9382,-9283,-9096,-8830,-8493,-8085,-7585, -6996,-6329,-5578,-4780,-3953,-3127,-2293,-1446,-592,278,1172,2053,2901,3707,4453,5163,5822,6449,7045,7589, 8068,8463,8750,8933,9022,9026,8958,8810,8570,8231,7759,7173,6499,5740,4931,4100,3208,2296,1326,313, -724,-1758,-2758,-3692,-4565,-5384,-6153,-6877,-7540,-8127,-8622,-8988,-9239,-9361,-9397,-9339,-9208,-8986,-8676,-8258, -7732,-7119,-6431,-5698,-4936,-4153,-3348,-2514,-1630,-740,172,1063,1934,2760,3538,4293,5022,5724,6398,7020, 7566,8032,8398,8673,8881,9015,9081,9064,8929,8683,8317,7828,7256,6615,5916,5167,4355,3469,2522,1515, 481,-551,-1546,-2497,-3412,-4298,-5142,-5971,-6736,-7422,-7996,-8465,-8817,-9057,-9224,-9310,-9315,-9212,-9003,-8668, -8228,-7692,-7086,-6443,-5753,-5027,-4262,-3431,-2561,-1661,-753,142,999,1834,2641,3442,4229,5000,5738,6423, 7008,7543,7979,8345,8670,8919,9116,9208,9183,9024,8764,8385,7930,7404,6816,6156,5409,4568,3648,2666, 1670,662,-317,-1276,-2224,-3171,-4101,-5008,-5857,-6621,-7279,-7828,-8284,-8660,-8962,-9191,-9326,-9348,-9233,-8997, -8644,-8215,-7713,-7167,-6560,-5899,-5165,-4360,-3497,-2614,-1725,-851,8,845,1680,2528,3366,4190,4971,5691, 6327,6901,7421,7892,8318,8685,8972,9159,9223,9165,8994,8746,8419,8026,7546,6982,6294,5507,4634,3706, 2753,1802,839,-119,-1101,-2100,-3098,-4070,-4973,-5795,-6527,-7161,-7731,-8238,-8674,-9036,-9283,-9410,-9398,-9264, -9031,-8722,-8345,-7912,-7398,-6797,-6112,-5340,-4523,-3684,-2838,-1989,-1157,-306,560,1437,2318,3162,3979,4719, 5399,6033,6631,7189,7719,8179,8557,8817,8970,9008,8968,8855,8668,8395,8032,7548,6944,6234,5438,4604, 3734,2845,1927,967,-35,-1064,-2100,-3102,-4044,-4900,-5687,-6413,-7100,-7726,-8286,-8760,-9114,-9329,-9419,-9399, -9292,-9116,-8862,-8527,-8099,-7560,-6923,-6206,-5440,-4653,-3854,-3043,-2217,-1354,-456,454,1357,2227,3055,3829, 4550,5251,5930,6587,7194,7737,8187,8536,8778,8937,9030,9052,8999,8844,8579,8190,7670,7052,6364,5629, 4855,4033,3146,2201,1197,150,-893,-1898,-2847,-3745,-4603,-5416,-6199,-6950,-7609,-8176,-8619,-8933,-9140,-9251, -9279,-9243,-9116,-8888,-8540,-8078,-7512,-6874,-6184,-5475,-4737,-3959,-3144,-2275,-1380,-461,438,1319,2138,2937, 3705,4461,5204,5925,6603,7193,7699,8117,8445,8715,8928,9071,9140,9095,8913,8615,8200,7692,7116,6489, 5808,5057,4209,3281,2299,1270,247,-751,-1715,-2641,-3554,-4458,-5332,-6167,-6921,-7571,-8099,-8512,-8838,-9090, -9265,-9359,-9349,-9227,-8968,-8594,-8113,-7581,-6987,-6365,-5688,-4964,-4167,-3304,-2414,-1510,-616,248,1079,1895, 2708,3526,4335,5108,5826,6469,7029,7512,7943,8324,8659,8915,9089,9138,9062,8863,8564,8182,7747,7241, 6651,5969,5180,4295,3350,2384,1394,444,-522,-1468,-2441,-3413,-4375,-5272,-6086,-6796,-7409,-7929,-8377,-8768, -9085,-9304,-9411,-9377,-9219,-8938,-8571,-8146,-7664,-7132,-6523,-5830,-5063,-4230,-3356,-2479,-1614,-773,60,916, 1764,2632,3487,4296,5051,5729,6338,6902,7435,7918,8358,8717,8979,9115,9127,9042,8876,8631,8330,7938, 7436,6822,6090,5270,4396,3481,2565,1637,687,-291,-1305,-2328,-3325,-4274,-5131,-5908,-6597,-7235,-7813,-8333, -8771,-9107,-9317,-9384,-9326,-9172,-8944,-8644,-8275,-7835,-7289,-6649,-5925,-5140,-4327,-3500,-2670,-1840,-1003,-133, 754,1653,2525,3350,4129,4843,5503,6146,6758,7336,7858,8296,8631,8854,8969,9005,8967,8865,8680,8391, 7986,7459,6804,6071,5291,4472,3619,2728,1793,797,-233,-1282,-2298,-3272,-4162,-4995,-5777,-6515,-7212,-7852, -8396,-8828,-9129,-9304,-9376,-9348,-9249,-9086,-8829,-8471,-7999,-7424,-6763,-6040,-5291,-4529,-3741,-2931,-2080,-1191, -286,628,1518,2362,3153,3916,4646,5362,6057,6707,7306,7813,8223,8532,8758,8923,9023,9047,8984,8803, 8487,8048,7506,6890,6210,5490,4714,3880,2960,1986,953,-84,-1100,-2069,-2998,-3879,-4746,-5579,-6377,-7105, -7744,-8265,-8659,-8938,-9136,-9258,-9292,-9249,-9095,-8831,-8437,-7929,-7354,-6717,-6045,-5341,-4599,-3806,-2963,-2066, -1152,-250,638,1479,2296,3087,3873,4659,5409,6116,6762,7321,7791,8187,8525,8805,9024,9158,9199,9108, 8888,8549,8119,7624,7065,6440,5744,4947,4065,3110,2104,1098,112,-866,-1816,-2751,-3687,-4613,-5493,-6303, -7011,-7615,-8120,-8517,-8845,-9114,-9294,-9373,-9333,-9160,-8868,-8467,-7999,-7481,-6907,-6278,-5591,-4823,-3999,-3128, -2241,-1358,-494,347,1182,2017,2848,3677,4477,5228,5913,6512,7052,7543,7982,8374,8699,8935,9059,9061, 8949,8733,8433,8069,7641,7114,6488,5756,4924,4027,3093,2130,1178,217,-742,-1737,-2729,-3705,-4644,-5508, -6280,-6962,-7560,-8091,-8557,-8941,-9243,-9427,-9490,-9409,-9225,-8944,-8593,-8174,-7687,-7132,-6488,-5752,-4957,-4115, -3271,-2417,-1564,-714,144,1017,1892,2768,3601,4388,5108,5777,6391,6978,7513,8005,8428,8752,8962,9073, 9066,8989,8826,8591,8269,7843,7300,6649,5887,5076,4216,3331,2421,1483,506,-503,-1529,-2544,-3508,-4411, -5230,-5997,-6690,-7335,-7921,-8434,-8833,-9115,-9270,-9311,-9240,-9088,-8858,-8559,-8171,-7681,-7094,-6424,-5688,-4910, -4110,-3301,-2476,-1633,-759,128,1026,1909,2759,3561,4309,5023,5707,6361,6983,7545,8037,8433,8731,8935, 9049,9092,9058,8943,8730,8397,7940,7381,6722,6008,5236,4418,3560,2638,1669,651,-392,-1412,-2399,-3335, -4212,-5044,-5851,-6597,-7299,-7907,-8415,-8798,-9066,-9229,-9301,-9289,-9191,-9009,-8720,-8316,-7812,-7217,-6556,-5860, -5120,-4365,-3562,-2724,-1845,-941,-38,847,1710,2529,3318,4089,4828,5560,6249,6874,7441,7891,8283,8588, 8824,8990,9091,9084,8973,8738,8386,7922,7386,6780,6115,5378,4576,3692,2740,1743,722,-288,-1267,-2223, -3148,-4055,-4938,-5784,-6567,-7255,-7842,-8321,-8701,-8984,-9192,-9310,-9347,-9263,-9063,-8748,-8330,-7820,-7263,-6638, -5983,-5264,-4492,-3664,-2796,-1896,-1005,-118,734,1572,2397,3215,4012,4797,5536,6214,6817,7346,7812,8223, 8564,8849,9052,9146,9133,8991,8752,8415,7993,7504,6944,6289,5542,4704,3801,2849,1868,892,-79,-1055, -2025,-2996,-3950,-4860,-5703,-6473,-7141,-7720,-8213,-8637,-8981,-9230,-9375,-9409,-9311,-9105,-8793,-8414,-7952,-7435, -6845,-6185,-5454,-4659,-3822,-2966,-2103,-1242,-381,472,1327,2184,3022,3840,4610,5329,5984,6586,7131,7638, 8089,8469,8762,8951,9036,9010,8885,8688,8401,8032,7565,6994,6329,5563,4731,3850,2934,1997,1043,62, -936,-1938,-2941,-3887,-4782,-5598,-6341,-7026,-7633,-8174,-8637,-8995,-9249,-9378,-9390,-9296,-9114,-8842,-8496,-8062, -7546,-6945,-6258,-5517,-4723,-3901,-3064,-2226,-1360,-487,398,1280,2154,3000,3808,4557,5281,5942,6577,7160, 7698,8161,8544,8817,9008,9097,9110,9033,8876,8615,8256,7775,7189,6525,5779,4981,4134,3254,2317,1342, 326,-691,-1705,-2686,-3616,-4495,-5306,-6078,-6799,-7447,-8016,-8486,-8841,-9075,-9209,-9241,-9193,-9045,-8813,-8484, -8049,-7522,-6913,-6241,-5526,-4760,-3978,-3165,-2321,-1457,-558,333,1201,2067,2882,3669,4417,5145,5839,6503, 7096,7626,8072,8429,8714,8911,9047,9094,9042,8888,8625,8247,7770,7194,6556,5859,5094,4257,3359,2406, 1408,393,-619,-1606,-2561,-3487,-4381,-5237,-6050,-6796,-7461,-8019,-8471,-8831,-9090,-9257,-9340,-9329,-9209,-8980, -8634,-8198,-7679,-7090,-6448,-5756,-5023,-4237,-3403,-2533,-1647,-754,119,986,1822,2644,3450,4241,4992,5716, 6370,6957,7476,7932,8313,8633,8882,9043,9108,9061,8897,8628,8268,7833,7303,6705,6024,5256,4403,3486, 2527,1547,562,-414,-1387,-2351,-3301,-4236,-5116,-5934,-6672,-7319,-7864,-8336,-8718,-9021,-9231,-9330,-9318,-9189, -8943,-8607,-8187,-7706,-7148,-6531,-5841,-5093,-4284,-3440,-2578,-1707,-844,22,880,1728,2583,3412,4212,4962, 5660,6299,6887,7415,7902,8316,8665,8919,9071,9119,9072,8916,8673,8361,7953,7447,6839,6142,5355,4501, 3604,2683,1726,767,-235,-1230,-2228,-3208,-4143,-5017,-5812,-6534,-7193,-7779,-8289,-8713,-9046,-9256,-9354,-9326, -9205,-8994,-8700,-8310,-7862,-7315,-6694,-5992,-5232,-4436,-3621,-2778,-1934,-1075,-195,684,1557,2423,3244,4034, 4772,5460,6119,6737,7305,7808,8241,8583,8839,8982,9046,9024,8918,8719,8421,8026,7516,6893,6197,5435, 4616,3752,2845,1904,922,-96,-1113,-2114,-3078,-3991,-4852,-5650,-6397,-7091,-7717,-8253,-8685,-9002,-9208,-9299, -9297,-9212,-9038,-8766,-8406,-7940,-7384,-6752,-6053,-5311,-4546,-3748,-2923,-2063,-1182,-288,606,1485,2320,3149, 3908,4656,5378,6056,6707,7283,7786,8210,8541,8795,8977,9070,9091,9012,8818,8515,8106,7587,6992,6324, 5589,4814,3955,3038,2073,1061,44,-970,-1945,-2889,-3797,-4684,-5511,-6305,-7025,-7660,-8194,-8612,-8924,-9151, -9280,-9325,-9276,-9129,-8867,-8493,-8014,-7473,-6857,-6196,-5493,-4745,-3940,-3102,-2221,-1339,-444,433,1290,2116, 2920,3718,4496,5241,5940,6580,7141,7634,8045,8396,8689,8905,9035,9070,8986,8777,8467,8066,7590,7038, 6406,5706,4909,4043,3101,2125,1131,145,-835,-1792,-2749,-3690,-4610,-5480,-6274,-6987,-7605,-8121,-8545,-8896, -9166,-9349,-9417,-9372,-9207,-8930,-8555,-8105,-7591,-7024,-6386,-5682,-4922,-4106,-3239,-2362,-1482,-618,242,1097, 1950,2790,3621,4419,5170,5848,6472,7036,7543,7997,8393,8718,8955,9079,9095,9006,8813,8538,8185,7752, 7229,6598,5876,5059,4183,3254,2310,1360,397,-584,-1579,-2567,-3544,-4474,-5331,-6113,-6808,-7423,-7973,-8453, -8848,-9148,-9343,-9399,-9340,-9175,-8917,-8590,-8176,-7701,-7142,-6500,-5777,-4992,-4173,-3335,-2486,-1634,-779,84, 962,1837,2704,3523,4307,5025,5700,6328,6916,7462,7954,8359,8684,8900,9007,9027,8961,8812,8585,8257, 7827,7290,6643,5902,5107,4257,3382,2468,1520,538,-470,-1498,-2504,-3461,-4370,-5206,-5980,-6693,-7345,-7947, -8455,-8863,-9156,-9324,-9375,-9327,-9196,-8989,-8691,-8310,-7827,-7246,-6587,-5865,-5092,-4309,-3499,-2666,-1819,-939, -43,856,1741,2582,3383,4152,4877,5578,6244,6871,7441,7935,8326,8637,8848,8989,9050,9033,8928,8724, 8392,7944,7398,6765,6054,5299,4493,3643,2717,1750,739,-295,-1311,-2292,-3223,-4104,-4958,-5765,-6521,-7225, -7844,-8354,-8736,-9016,-9192,-9280,-9282,-9198,-9021,-8737,-8342,-7845,-7256,-6612,-5913,-5190,-4431,-3635,-2796,-1918, -1008,-117,776,1626,2448,3240,4013,4770,5502,6196,6827,7374,7844,8229,8544,8790,8971,9068,9079,8964, 8739,8383,7947,7425,6823,6169,5438,4638,3750,2805,1797,784,-224,-1195,-2161,-3087,-4008,-4891,-5750,-6537, -7236,-7825,-8319,-8703,-9005,-9226,-9374,-9418,-9348,-9156,-8860,-8447,-7954,-7400,-6798,-6143,-5433,-4666,-3848,-2969, -2078,-1184,-309,542,1380,2213,3029,3839,4633,5376,6056,6663,7195,7665,8084,8439,8741,8960,9069,9054, 8923,8693,8370,7971,7502,6956,6318,5582,4753,3853,2912,1936,972,10,-952,-1918,-2887,-3847,-4760,-5612, -6373,-7038,-7619,-8119,-8555,-8907,-9167,-9329,-9367,-9271,-9068,-8766,-8388,-7943,-7429,-6848,-6203,-5469,-4674,-3833, -2976,-2100,-1240,-394,454,1327,2187,3045,3873,4650,5371,6032,6631,7183,7698,8159,8559,8866,9059,9156, 9130,9012,8820,8541,8189,7739,7179,6518,5758,4924,4039,3127,2201,1263,289,-708,-1725,-2731,-3690,-4598, -5412,-6173,-6849,-7464,-8012,-8498,-8877,-9149,-9296,-9325,-9237,-9054,-8799,-8472,-8065,-7565,-6980,-6304,-5561,-4771, -3952,-3129,-2289,-1448,-584,292,1184,2067,2923,3722,4475,5181,5839,6471,7066,7609,8093,8478,8757,8941, 9023,9035,8971,8818,8576,8229,7757,7182,6509,5761,4966,4126,3257,2344,1375,370,-660,-1679,-2671,-3605, -4477,-5295,-6063,-6780,-7441,-8031,-8520,-8897,-9141,-9275,-9314,-9260,-9130,-8919,-8612,-8198,-7686,-7076,-6408,-5676, -4923,-4147,-3345,-2509,-1644,-748,163,1050,1915,2737,3526,4266,4993,5696,6367,6982,7531,7992,8355,8634, 8835,8971,9037,9005,8887,8636,8267,7794,7218,6587,5893,5139,4331,3453,2510,1516,490,-527,-1518,-2471, -3386,-4264,-5124,-5938,-6702,-7383,-7963,-8425,-8787,-9037,-9206,-9292,-9289,-9200,-8992,-8666,-8238,-7703,-7113,-6466, -5788,-5071,-4300,-3480,-2619,-1724,-819,74,938,1777,2592,3390,4175,4945,5679,6347,6953,7476,7916,8298, 8611,8861,9044,9126,9100,8947,8685,8322,7875,7341,6762,6092,5360,4519,3615,2645,1658,659,-317,-1281, -2231,-3184,-4108,-5001,-5835,-6604,-7251,-7826,-8285,-8670,-8967,-9191,-9312,-9330,-9222,-8989,-8663,-8243,-7753,-7200, -6596,-5937,-5209,-4417,-3576,-2701,-1821,-951,-84,758,1597,2440,3272,4084,4853,5567,6219,6804,7320,7796, 8207,8566,8839,9020,9084,9043,8885,8643,8313,7918,7435,6857,6182,5414,4565,3657,2722,1764,810,-161, -1145,-2122,-3101,-4055,-4951,-5769,-6505,-7156,-7725,-8227,-8659,-9008,-9245,-9369,-9375,-9259,-9043,-8739,-8362,-7918, -7396,-6803,-6124,-5378,-4571,-3736,-2893,-2045,-1190,-344,523,1394,2258,3110,3916,4666,5370,6010,6615,7172, 7685,8142,8509,8776,8947,9014,8981,8867,8672,8393,8019,7535,6945,6264,5485,4656,3780,2890,1960,1006, 8,-999,-2014,-2996,-3931,-4803,-5605,-6333,-7017,-7633,-8184,-8638,-8988,-9225,-9332,-9329,-9241,-9050,-8795,-8448, -8018,-7488,-6873,-6171,-5425,-4642,-3838,-3012,-2177,-1315,-436,459,1345,2211,3046,3829,4576,5275,5951,6586, 7180,7705,8147,8499,8758,8919,9008,9023,8955,8784,8516,8125,7626,7030,6348,5611,4823,3984,3093,2148, 1165,141,-882,-1877,-2834,-3749,-4617,-5439,-6213,-6938,-7589,-8148,-8592,-8932,-9154,-9281,-9316,-9266,-9134,-8905, -8557,-8104,-7570,-6958,-6282,-5568,-4828,-4042,-3225,-2369,-1488,-585,307,1178,2014,2823,3607,4373,5105,5807, 6466,7058,7568,7998,8355,8635,8832,8971,9013,8958,8789,8500,8111,7627,7061,6432,5735,4961,4127,3209, 2245,1245,246,-757,-1725,-2672,-3588,-4482,-5348,-6146,-6886,-7532,-8070,-8510,-8850,-9115,-9287,-9359,-9331,-9205, -8957,-8603,-8154,-7635,-7047,-6407,-5709,-4981,-4176,-3335,-2456,-1571,-682,191,1049,1891,2714,3531,4324,5086, 5787,6439,7020,7525,7969,8354,8672,8916,9061,9110,9047,8873,8590,8235,7785,7258,6648,5951,5169,4312, 3391,2438,1463,488,-485,-1466,-2429,-3386,-4318,-5185,-5991,-6706,-7343,-7894,-8358,-8739,-9041,-9238,-9325,-9307, -9166,-8923,-8583,-8166,-7683,-7134,-6499,-5817,-5056,-4247,-3403,-2534,-1676,-809,55,911,1763,2611,3437,4237, 4979,5669,6309,6891,7422,7889,8303,8637,8879,9020,9058,8995,8839,8593,8268,7850,7336,6719,6016,5227, 4368,3476,2547,1598,633,-359,-1357,-2344,-3317,-4241,-5113,-5903,-6617,-7271,-7847,-8351,-8765,-9081,-9287,-9371, -9342,-9213,-9001,-8690,-8312,-7843,-7296,-6661,-5961,-5201,-4408,-3581,-2739,-1885,-1022,-145,741,1620,2476,3309, 4096,4837,5537,6189,6805,7363,7863,8290,8629,8873,9020,9073,9045,8935,8731,8416,8008,7492,6875,6170, 5410,4590,3725,2808,1866,882,-128,-1138,-2139,-3088,-3995,-4856,-5655,-6404,-7089,-7706,-8222,-8641,-8946,-9149, -9243,-9245,-9152,-8968,-8690,-8316,-7842,-7289,-6655,-5960,-5228,-4449,-3648,-2814,-1954,-1072,-183,711,1586,2428, 3240,4017,4769,5487,6166,6793,7360,7852,8260,8593,8843,9012,9094,9100,8995,8795,8465,8048,7534,6938, 6264,5522,4728,3863,2938,1961,965,-44,-1042,-2021,-2968,-3879,-4760,-5599,-6371,-7077,-7691,-8210,-8621,-8940, -9164,-9304,-9329,-9265,-9097,-8821,-8439,-7973,-7425,-6821,-6155,-5440,-4678,-3870,-3021,-2151,-1265,-383,492,1349, 2190,3005,3807,4583,5316,6006,6626,7190,7684,8106,8457,8747,8952,9059,9069,8973,8769,8459,8066,7589, 7026,6384,5659,4854,3988,3059,2102,1121,136,-836,-1813,-2779,-3710,-4612,-5467,-6237,-6939,-7544,-8076,-8506, -8854,-9108,-9273,-9321,-9254,-9081,-8810,-8445,-8005,-7482,-6905,-6253,-5534,-4761,-3947,-3100,-2238,-1364,-496,370, 1235,2085,2926,3731,4507,5248,5928,6550,7115,7625,8073,8455,8752,8962,9072,9076,8986,8796,8522,8149, 7689,7136,6497,5755,4949,4076,3166,2225,1258,271,-712,-1713,-2697,-3653,-4557,-5401,-6186,-6885,-7510,-8073, -8539,-8912,-9194,-9360,-9414,-9357,-9197,-8958,-8622,-8206,-7699,-7126,-6474,-5755,-4980,-4172,-3351,-2497,-1639,-768, 104,982,1851,2697,3500,4278,5004,5688,6323,6913,7444,7919,8301,8608,8817,8928,8956,8892,8745,8502, 8153,7705,7155,6511,5794,5006,4168,3291,2365,1403,416,-589,-1590,-2566,-3508,-4395,-5231,-6012,-6728,-7385, -7958,-8442,-8823,-9086,-9246,-9307,-9264,-9133,-8912,-8601,-8192,-7683,-7094,-6441,-5725,-4976,-4185,-3376,-2530,-1658, -766,124,1010,1880,2704,3513,4284,5025,5735,6397,7010,7554,8021,8411,8711,8939,9081,9142,9110,8978, 8736,8388,7936,7390,6771,6074,5313,4495,3608,2671,1687,679,-328,-1318,-2298,-3232,-4131,-4997,-5811,-6571, -7247,-7836,-8323,-8706,-8988,-9185,-9281,-9290,-9190,-8989,-8679,-8274,-7778,-7212,-6587,-5906,-5182,-4406,-3584,-2737, -1857,-970,-93,769,1609,2438,3254,4027,4791,5510,6175,6772,7303,7767,8165,8481,8738,8910,8985,8954, 8815,8570,8230,7789,7276,6693,6018,5261,4429,3533,2593,1615,628,-356,-1329,-2294,-3250,-4173,-5058,-5890, -6644,-7305,-7880,-8364,-8769,-9079,-9294,-9416,-9437,-9333,-9119,-8808,-8403,-7921,-7385,-6775,-6106,-5371,-4578,-3741, -2883,-2011,-1129,-261,599,1458,2316,3147,3956,4725,5447,6113,6710,7256,7752,8182,8538,8818,9000,9089, 9058,8930,8713,8406,8018,7542,6960,6300,5548,4711,3830,2906,1964,999,22,-954,-1938,-2919,-3865,-4747, -5562,-6315,-6984,-7568,-8086,-8531,-8870,-9114,-9239,-9251,-9154,-8958,-8671,-8307,-7871,-7354,-6755,-6078,-5340,-4556, -3727,-2889,-2046,-1189,-329,545,1422,2280,3125,3924,4675,5384,6043,6654,7218,7734,8184,8545,8812,8986, 9057,9040,8935,8746,8470,8091,7604,7015,6343,5578,4763,3896,2993,2065,1088,97,-921,-1927,-2906,-3848, -4723,-5536,-6291,-6982,-7617,-8175,-8634,-8989,-9235,-9350,-9373,-9303,-9136,-8890,-8552,-8127,-7599,-6990,-6308,-5577, -4801,-4004,-3185,-2342,-1475,-585,307,1195,2055,2883,3677,4430,5144,5833,6482,7068,7608,8049,8415,8684, 8866,8989,9003,8950,8788,8524,8141,7653,7074,6417,5698,4922,4094,3210,2269,1290,281,-731,-1723,-2676, -3587,-4452,-5284,-6068,-6798,-7446,-8004,-8447,-8790,-9026,-9167,-9219,-9184,-9056,-8823,-8474,-8037,-7500,-6894,-6232, -5533,-4794,-4013,-3186,-2326,-1445,-542,350,1216,2057,2867,3664,4435,5177,5891,6552,7137,7652,8083,8450, 8734,8949,9098,9148,9093,8925,8645,8261,7783,7230,6611,5920,5149,4307,3397,2430,1440,427,-563,-1532, -2484,-3422,-4330,-5198,-6020,-6765,-7417,-7968,-8421,-8780,-9064,-9244,-9344,-9338,-9218,-8973,-8638,-8201,-7694,-7127, -6503,-5830,-5091,-4295,-3455,-2584,-1696,-822,49,906,1733,2572,3387,4183,4947,5649,6302,6882,7391,7844, 8238,8559,8809,8967,9015,8955,8783,8514,8164,7732,7224,6618,5934,5166,4305,3394,2444,1481,516,-463, -1435,-2400,-3360,-4289,-5164,-5971,-6694,-7332,-7874,-8349,-8744,-9058,-9259,-9360,-9343,-9209,-8969,-8634,-8229,-7758, -7210,-6595,-5906,-5145,-4336,-3492,-2623,-1771,-902,-47,819,1679,2533,3377,4181,4926,5619,6262,6849,7389, 7873,8299,8647,8901,9046,9093,9038,8893,8663,8352,7949,7457,6843,6146,5354,4511,3626,2708,1770,809, -178,-1173,-2185,-3154,-4085,-4957,-5745,-6467,-7132,-7713,-8233,-8663,-8997,-9217,-9311,-9287,-9173,-8963,-8683,-8316, -7867,-7336,-6709,-6010,-5258,-4464,-3639,-2820,-1977,-1123,-249,632,1517,2380,3209,3984,4723,5414,6065,6681, 7255,7762,8199,8536,8775,8918,8973,8951,8851,8657,8369,7952,7442,6826,6126,5362,4556,3701,2800,1860, 872,-138,-1158,-2157,-3110,-4019,-4877,-5668,-6421,-7111,-7741,-8280,-8705,-9021,-9225,-9319,-9321,-9239,-9075,-8815, -8454,-7996,-7441,-6804,-6109,-5379,-4609,-3824,-2992,-2134,-1260,-353,546,1426,2269,3081,3858,4614,5337,6019, 6666,7250,7755,8170,8503,8757,8932,9030,9055,8974,8789,8480,8070,7559,6973,6303,5591,4806,3960,3041, 2079,1080,73,-939,-1899,-2860,-3755,-4632,-5466,-6254,-6972,-7604,-8123,-8546,-8863,-9089,-9235,-9280,-9238,-9089, -8826,-8461,-8001,-7456,-6849,-6201,-5500,-4757,-3962,-3122,-2253,-1359,-474,400,1252,2080,2890,3688,4463,5207, 5902,6538,7103,7596,8007,8366,8648,8870,8993,9019,8937,8734,8421,8033,7554,7001,6376,5669,4878,4022, 3092,2116,1129,152,-827,-1790,-2739,-3674,-4592,-5452,-6250,-6955,-7579,-8103,-8532,-8881,-9147,-9324,-9394,-9355, -9197,-8933,-8566,-8120,-7607,-7031,-6391,-5700,-4934,-4122,-3263,-2390,-1509,-635,228,1087,1933,2775,3595,4393, 5144,5829,6461,7032,7538,7989,8379,8697,8934,9062,9080,8994,8807,8537,8174,7732,7214,6596,5876,5077, 4207,3299,2356,1397,445,-528,-1514,-2487,-3452,-4375,-5230,-6010,-6716,-7331,-7888,-8352,-8735,-9026,-9214,-9286, -9230,-9071,-8823,-8491,-8080,-7600,-7045,-6410,-5699,-4925,-4115,-3278,-2426,-1574,-717,143,1010,1883,2734,3556, 4342,5069,5745,6369,6953,7490,7969,8376,8696,8910,9028,9048,8980,8828,8591,8261,7829,7298,6664,5937, 5146,4302,3418,2498,1556,583,-419,-1430,-2432,-3389,-4290,-5131,-5916,-6632,-7284,-7876,-8382,-8784,-9080,-9262, -9323,-9291,-9167,-8955,-8666,-8286,-7804,-7238,-6594,-5885,-5122,-4335,-3528,-2700,-1841,-973,-89,811,1677,2531, 3338,4107,4843,5534,6190,6812,7376,7862,8268,8582,8807,8946,8996,8974,8863,8651,8326,7888,7354,6730, 6030,5271,4463,3599,2683,1720,727,-285,-1291,-2272,-3203,-4098,-4945,-5747,-6501,-7188,-7788,-8300,-8692,-8981, -9163,-9255,-9256,-9163,-8977,-8691,-8298,-7811,-7240,-6606,-5918,-5184,-4417,-3612,-2771,-1908,-1011,-123,764,1625, 2465,3261,4040,4791,5513,6191,6811,7370,7843,8240,8562,8804,8972,9063,9049,8940,8722,8390,7952,7436, 6838,6178,5438,4635,3761,2829,1848,856,-144,-1133,-2097,-3044,-3959,-4831,-5673,-6443,-7137,-7732,-8238,-8640, -8951,-9171,-9303,-9335,-9267,-9080,-8796,-8395,-7920,-7377,-6770,-6113,-5392,-4637,-3822,-2984,-2107,-1220,-341,522, 1385,2214,3038,3826,4606,5340,6024,6638,7189,7668,8089,8434,8709,8912,9016,9014,8897,8682,8371,7970, 7490,6926,6289,5556,4740,3860,2934,1974,998,23,-949,-1921,-2882,-3816,-4714,-5559,-6327,-7011,-7596,-8116, -8550,-8888,-9142,-9283,-9333,-9257,-9073,-8790,-8420,-7971,-7449,-6860,-6207,-5488,-4709,-3882,-3034,-2163,-1294,-429, 441,1299,2153,3001,3812,4589,5321,5991,6607,7167,7672,8126,8492,8785,8989,9087,9078,8976,8781,8503, 8132,7663,7103,6447,5715,4899,4019,3119,2178,1217,243,-753,-1746,-2732,-3680,-4569,-5402,-6179,-6862,-7485, -8033,-8492,-8861,-9126,-9279,-9321,-9261,-9093,-8837,-8497,-8079,-7579,-6990,-6342,-5614,-4840,-4034,-3200,-2360,-1497, -629,250,1124,1994,2830,3636,4397,5113,5796,6430,7013,7543,8004,8380,8668,8861,8976,8991,8913,8756, 8502,8142,7677,7115,6470,5746,4958,4118,3233,2306,1341,342,-665,-1651,-2633,-3567,-4446,-5279,-6060,-6783, -7427,-7992,-8464,-8842,-9097,-9259,-9308,-9271,-9138,-8909,-8585,-8175,-7657,-7080,-6415,-5709,-4954,-4162,-3337,-2499, -1626,-735,154,1036,1897,2735,3541,4309,5053,5754,6412,7015,7545,8008,8396,8691,8914,9055,9100,9055, 8903,8658,8304,7847,7298,6678,5970,5206,4377,3488,2551,1577,581,-416,-1405,-2376,-3315,-4207,-5068,-5873, -6612,-7269,-7842,-8315,-8699,-8977,-9158,-9246,-9246,-9126,-8913,-8597,-8183,-7692,-7120,-6482,-5799,-5063,-4272,-3447, -2593,-1717,-843,41,911,1760,2598,3416,4199,4945,5652,6310,6905,7435,7900,8293,8611,8845,9002,9064, 9023,8876,8638,8286,7853,7320,6723,6036,5283,4444,3557,2616,1644,657,-330,-1309,-2274,-3231,-4146,-5020, -5834,-6577,-7244,-7818,-8302,-8694,-9005,-9216,-9320,-9321,-9214,-9008,-8704,-8301,-7828,-7276,-6660,-5975,-5242,-4454, -3625,-2768,-1904,-1029,-154,715,1569,2420,3248,4046,4798,5513,6167,6769,7314,7787,8212,8560,8813,8981, 9050,9016,8892,8663,8345,7948,7438,6856,6173,5420,4590,3701,2778,1833,860,-123,-1111,-2093,-3055,-3985, -4865,-5671,-6418,-7088,-7679,-8198,-8624,-8950,-9185,-9295,-9303,-9210,-9006,-8724,-8348,-7902,-7370,-6759,-6072,-5340, -4553,-3732,-2893,-2032,-1168,-293,587,1452,2316,3141,3941,4691,5397,6069,6688,7253,7754,8187,8532,8795, 8961,9035,9023,8920,8721,8425,8025,7533,6931,6253,5507,4698,3832,2933,1984,1010,5,-1000,-1988,-2945, -3868,-4737,-5552,-6313,-7013,-7622,-8158,-8594,-8928,-9152,-9279,-9303,-9225,-9061,-8803,-8443,-7990,-7461,-6850,-6181, -5447,-4686,-3881,-3049,-2188,-1316,-428,456,1331,2183,3000,3798,4561,5284,5969,6601,7181,7674,8111,8455, 8730,8915,9023,9032,8955,8769,8472,8084,7604,7018,6372,5647,4861,4015,3105,2155,1175,173,-825,-1797, -2752,-3675,-4559,-5394,-6176,-6890,-7518,-8055,-8498,-8831,-9087,-9241,-9286,-9242,-9098,-8838,-8496,-8046,-7529,-6937, -6289,-5584,-4833,-4032,-3200,-2329,-1461,-576,301,1169,2011,2839,3642,4418,5158,5850,6494,7071,7570,8009, 8380,8669,8884,9003,9027,8956,8770,8489,8115,7646,7098,6464,5758,4974,4120,3203,2250,1278,293,-697, -1671,-2632,-3573,-4483,-5336,-6129,-6841,-7478,-8023,-8476,-8834,-9118,-9290,-9363,-9324,-9177,-8938,-8590,-8160,-7664, -7090,-6455,-5752,-4994,-4193,-3355,-2486,-1619,-744,124,991,1847,2689,3505,4302,5036,5730,6375,6950,7473, 7932,8321,8639,8871,9002,9030,8959,8795,8535,8179,7747,7224,6594,5889,5113,4262,3361,2429,1478,507, -477,-1462,-2440,-3393,-4302,-5165,-5946,-6659,-7295,-7863,-8337,-8730,-9029,-9215,-9295,-9258,-9126,-8893,-8576,-8177, -7688,-7145,-6505,-5801,-5044,-4250,-3415,-2575,-1715,-850,25,894,1766,2612,3437,4214,4952,5642,6280,6881, 7425,7905,8313,8632,8856,8993,9023,8976,8843,8604,8285,7858,7333,6716,5995,5229,4400,3525,2604,1654, 669,-325,-1334,-2326,-3274,-4174,-5033,-5829,-6558,-7221,-7821,-8326,-8734,-9034,-9227,-9308,-9294,-9188,-8993,-8707, -8323,-7849,-7293,-6660,-5964,-5219,-4440,-3635,-2796,-1934,-1065,-176,716,1592,2436,3242,4018,4761,5469,6137, 6759,7315,7807,8205,8530,8766,8919,8981,8972,8860,8649,8322,7889,7368,6763,6070,5328,4528,3665,2743, 1779,788,-210,-1211,-2178,-3120,-4023,-4876,-5694,-6450,-7135,-7746,-8252,-8651,-8956,-9152,-9264,-9275,-9196,-9020, -8734,-8354,-7872,-7308,-6693,-6017,-5293,-4524,-3721,-2877,-2010,-1114,-231,647,1501,2348,3152,3944,4701,5431, 6111,6731,7290,7779,8172,8514,8773,8963,9054,9048,8951,8735,8416,7998,7496,6917,6268,5535,4726,3871, 2944,1972,988,2,-981,-1945,-2888,-3811,-4694,-5532,-6304,-6996,-7601,-8110,-8522,-8852,-9083,-9233,-9270,-9210, -9033,-8755,-8378,-7915,-7387,-6795,-6142,-5435,-4663,-3855,-3005,-2136,-1255,-386,480,1332,2167,3000,3803,4579, 5317,5990,6609,7166,7651,8080,8439,8725,8933,9039,9041,8931,8713,8424,8032,7564,7007,6367,5635,4831, 3955,3031,2077,1111,136,-833,-1818,-2778,-3727,-4626,-5468,-6244,-6930,-7532,-8067,-8503,-8858,-9120,-9283,-9331, -9267,-9090,-8818,-8459,-8029,-7521,-6950,-6299,-5582,-4803,-3990,-3146,-2285,-1413,-552,307,1177,2040,2889,3705, 4489,5205,5882,6501,7067,7590,8045,8425,8731,8934,9034,9029,8935,8762,8498,8141,7687,7138,6496,5757, 4950,4098,3197,2272,1318,348,-640,-1640,-2626,-3579,-4469,-5299,-6067,-6752,-7383,-7935,-8419,-8795,-9065,-9226, -9277,-9208,-9057,-8817,-8500,-8094,-7597,-7015,-6361,-5640,-4875,-4074,-3253,-2414,-1558,-684,192,1076,1954,2797, 3601,4360,5083,5768,6407,7006,7545,8018,8394,8682,8886,9001,9024,8967,8824,8578,8238,7774,7220,6577, 5860,5077,4254,3363,2453,1487,491,-513,-1508,-2491,-3416,-4311,-5144,-5927,-6656,-7322,-7895,-8392,-8769,-9040, -9201,-9268,-9241,-9126,-8914,-8615,-8210,-7706,-7127,-6478,-5777,-5033,-4250,-3444,-2606,-1735,-847,48,926,1789, 2622,3423,4195,4938,5638,6309,6919,7460,7920,8310,8601,8827,8969,9030,8997,8861,8618,8272,7812,7273, 6652,5969,5215,4393,3514,2584,1598,605,-394,-1381,-2343,-3276,-4174,-5031,-5842,-6592,-7264,-7851,-8322,-8706, -8990,-9172,-9273,-9280,-9179,-8979,-8671,-8263,-7767,-7194,-6574,-5898,-5166,-4396,-3579,-2722,-1848,-951,-65,803, 1653,2476,3289,4079,4842,5557,6239,6832,7370,7838,8227,8549,8802,8974,9054,9019,8890,8645,8305,7876, 7363,6777,6118,5368,4541,3665,2726,1754,773,-213,-1183,-2140,-3091,-4011,-4898,-5721,-6478,-7145,-7719,-8205, -8613,-8919,-9156,-9283,-9299,-9210,-9003,-8699,-8313,-7844,-7304,-6708,-6045,-5326,-4544,-3718,-2859,-1988,-1119,-251, 612,1462,2301,3136,3941,4713,5432,6088,6693,7227,7706,8131,8486,8764,8944,9023,8993,8856,8632,8325, 7930,7442,6878,6208,5452,4621,3736,2817,1872,902,-66,-1047,-2028,-3007,-3943,-4832,-5651,-6403,-7065,-7657, -8176,-8614,-8965,-9207,-9340,-9354,-9266,-9072,-8787,-8431,-7991,-7482,-6874,-6208,-5472,-4681,-3861,-3016,-2168,-1309, -439,438,1308,2180,3022,3825,4584,5294,5960,6575,7143,7657,8101,8465,8741,8918,8997,8982,8877,8695, 8418,8034,7568,6982,6310,5567,4756,3897,2999,2076,1114,125,-867,-1861,-2844,-3773,-4642,-5456,-6206,-6899, -7520,-8061,-8514,-8875,-9111,-9242,-9262,-9191,-9035,-8780,-8446,-8019,-7496,-6900,-6221,-5496,-4724,-3928,-3101,-2262, -1390,-512,373,1258,2121,2954,3747,4504,5226,5911,6548,7136,7658,8103,8466,8739,8921,9027,9047,8970, 8804,8531,8162,7680,7103,6452,5722,4945,4096,3215,2276,1304,297,-704,-1700,-2656,-3577,-4460,-5286,-6070, -6796,-7443,-7999,-8454,-8806,-9049,-9212,-9250,-9230,-9089,-8866,-8542,-8110,-7597,-7007,-6345,-5649,-4895,-4104,-3290, -2441,-1566,-675,222,1092,1936,2768,3566,4337,5076,5774,6428,7020,7538,7988,8356,8650,8855,8987,9031, 8980,8816,8552,8178,7711,7158,6527,5831,5078,4236,3336,2394,1413,427,-571,-1549,-2501,-3422,-4323,-5176, -5977,-6704,-7358,-7915,-8361,-8728,-8999,-9169,-9257,-9238,-9118,-8883,-8545,-8123,-7621,-7041,-6407,-5721,-4985,-4196, -3360,-2496,-1621,-730,144,1009,1858,2687,3504,4300,5050,5759,6413,7002,7521,7972,8362,8682,8913,9062, 9115,9063,8900,8637,8289,7851,7326,6722,6044,5271,4438,3535,2596,1632,664,-318,-1288,-2261,-3205,-4125, -4996,-5804,-6529,-7185,-7749,-8227,-8630,-8933,-9138,-9243,-9223,-9116,-8891,-8576,-8173,-7697,-7157,-6544,-5856,-5122, -4330,-3497,-2650,-1785,-921,-59,812,1670,2508,3334,4134,4885,5583,6232,6823,7359,7831,8251,8584,8833, 8975,9028,8982,8840,8604,8287,7870,7366,6762,6069,5303,4474,3579,2671,1718,751,-235,-1225,-2216,-3173, -4098,-4964,-5767,-6504,-7164,-7754,-8262,-8673,-9005,-9217,-9318,-9313,-9202,-9006,-8713,-8337,-7877,-7336,-6717,-6032, -5285,-4498,-3680,-2842,-1983,-1118,-235,644,1521,2382,3204,4003,4749,5452,6119,6730,7298,7787,8213,8551, 8810,8964,9036,9016,8903,8696,8390,7983,7489,6888,6212,5459,4651,3794,2882,1938,965,-33,-1032,-2010, -2969,-3877,-4743,-5557,-6301,-6983,-7598,-8118,-8545,-8868,-9087,-9203,-9221,-9130,-8963,-8687,-8325,-7871,-7339,-6727, -6051,-5318,-4556,-3749,-2920,-2065,-1193,-311,572,1446,2296,3115,3901,4653,5378,6051,6682,7250,7749,8169, 8515,8775,8949,9040,9041,8943,8751,8448,8051,7553,6973,6307,5578,4782,3934,3013,2066,1089,90,-905, -1891,-2845,-3761,-4643,-5477,-6249,-6950,-7575,-8108,-8543,-8877,-9117,-9264,-9297,-9246,-9091,-8835,-8485,-8039,-7508, -6915,-6257,-5548,-4790,-3995,-3161,-2295,-1426,-536,341,1195,2046,2870,3674,4445,5185,5868,6511,7077,7589, 8017,8377,8660,8864,8977,8994,8905,8721,8429,8043,7573,7025,6382,5667,4878,4029,3119,2167,1194,216, -773,-1747,-2699,-3631,-4520,-5371,-6156,-6857,-7481,-8019,-8462,-8814,-9077,-9239,-9302,-9250,-9099,-8850,-8505,-8073, -7556,-6985,-6338,-5625,-4865,-4071,-3225,-2365,-1491,-619,252,1117,1981,2810,3627,4408,5142,5830,6465,7039, 7560,8009,8381,8685,8897,9022,9033,8958,8786,8518,8153,7705,7164,6535,5819,5030,4185,3282,2341,1386, 409,-577,-1562,-2537,-3477,-4378,-5228,-6011,-6730,-7367,-7925,-8399,-8778,-9055,-9238,-9311,-9279,-9138,-8910,-8601, -8191,-7699,-7138,-6499,-5796,-5045,-4251,-3427,-2573,-1714,-844,30,899,1764,2609,3411,4184,4931,5620,6266, 6851,7388,7856,8251,8552,8775,8907,8937,8888,8737,8497,8149,7709,7180,6550,5846,5073,4248,3369,2439, 1477,500,-489,-1485,-2463,-3403,-4307,-5153,-5953,-6676,-7337,-7912,-8401,-8788,-9079,-9263,-9358,-9334,-9218,-9006, -8705,-8303,-7819,-7256,-6630,-5926,-5185,-4393,-3575,-2731,-1863,-979,-96,783,1642,2491,3303,4090,4845,5551, 6206,6814,7366,7843,8238,8559,8800,8951,9007,8970,8845,8616,8276,7847,7328,6722,6034,5281,4467,3593, 2670,1708,729,-267,-1249,-2219,-3168,-4070,-4930,-5736,-6485,-7155,-7738,-8236,-8642,-8944,-9142,-9250,-9257,-9159, -8964,-8669,-8284,-7814,-7260,-6646,-5965,-5238,-4462,-3648,-2805,-1938,-1058,-178,693,1559,2399,3219,4001,4758, 5482,6142,6752,7305,7774,8191,8522,8771,8942,9019,8993,8875,8653,8337,7918,7414,6825,6161,5414,4613, 3727,2808,1846,863,-116,-1092,-2077,-3019,-3939,-4814,-5640,-6401,-7076,-7666,-8179,-8597,-8918,-9152,-9273,-9302, -9223,-9036,-8751,-8382,-7917,-7386,-6783,-6126,-5393,-4619,-3801,-2957,-2093,-1218,-341,528,1391,2247,3069,3874, 4645,5373,6047,6664,7212,7712,8141,8498,8773,8959,9050,9048,8939,8730,8442,8044,7570,6993,6336,5596, 4787,3916,3012,2064,1095,122,-863,-1840,-2803,-3731,-4618,-5451,-6210,-6888,-7494,-8024,-8460,-8811,-9061,-9195, -9233,-9161,-8989,-8717,-8366,-7933,-7416,-6821,-6163,-5439,-4665,-3852,-3024,-2167,-1297,-427,440,1315,2183,3013, 3820,4575,5293,5971,6597,7163,7677,8115,8485,8754,8942,9039,9041,8947,8769,8487,8116,7637,7067,6410, 5685,4874,4035,3135,2200,1230,246,-748,-1735,-2712,-3643,-4523,-5356,-6126,-6833,-7464,-8012,-8479,-8836,-9093, -9243,-9296,-9250,-9098,-8857,-8528,-8109,-7599,-7013,-6364,-5656,-4894,-4096,-3274,-2427,-1557,-680,202,1076,1935, 2769,3570,4333,5065,5751,6398,6987,7508,7963,8336,8621,8824,8937,8975,8906,8737,8484,8119,7652,7102, 6457,5754,4988,4147,3260,2332,1365,373,-619,-1606,-2567,-3498,-4387,-5222,-6005,-6733,-7376,-7942,-8403,-8772, -9036,-9201,-9263,-9245,-9111,-8887,-8558,-8146,-7633,-7058,-6412,-5713,-4961,-4175,-3346,-2498,-1621,-732,159,1023, 1890,2722,3525,4302,5046,5760,6417,7010,7537,7998,8374,8681,8904,9042,9096,9036,8890,8641,8284,7831, 7293,6675,5983,5222,4390,3502,2561,1595,602,-385,-1367,-2320,-3262,-4159,-5024,-5827,-6564,-7227,-7791,-8260, -8647,-8929,-9126,-9222,-9220,-9106,-8889,-8571,-8172,-7683,-7121,-6502,-5819,-5096,-4312,-3485,-2632,-1761,-881,-15, 851,1703,2537,3356,4146,4899,5603,6257,6851,7376,7842,8237,8565,8801,8963,9017,8980,8824,8575,8242, 7816,7299,6708,6026,5266,4437,3542,2606,1652,676,-298,-1277,-2253,-3198,-4122,-4987,-5803,-6547,-7203,-7777, -8274,-8671,-8989,-9206,-9315,-9315,-9220,-9000,-8698,-8311,-7843,-7305,-6692,-6011,-5285,-4496,-3666,-2814,-1956,-1083, -211,652,1515,2368,3197,4002,4761,5467,6129,6733,7274,7760,8184,8525,8793,8946,9017,8985,8858,8640, 8329,7928,7432,6844,6169,5412,4587,3710,2803,1857,897,-86,-1075,-2063,-3018,-3955,-4817,-5629,-6371,-7042, -7644,-8159,-8578,-8917,-9141,-9260,-9267,-9175,-8986,-8703,-8341,-7897,-7362,-6755,-6081,-5345,-4564,-3748,-2914,-2061, -1197,-314,561,1435,2290,3121,3921,4673,5376,6041,6664,7227,7730,8160,8511,8771,8932,9020,8992,8896, 8698,8406,8016,7525,6927,6256,5513,4715,3856,2952,2016,1047,50,-943,-1933,-2895,-3812,-4684,-5498,-6255, -6956,-7570,-8104,-8549,-8889,-9120,-9249,-9280,-9211,-9050,-8794,-8452,-8011,-7485,-6884,-6214,-5489,-4734,-3936,-3108, -2249,-1383,-501,382,1258,2106,2938,3725,4491,5211,5892,6527,7116,7623,8060,8412,8682,8870,8965,8986, 8909,8730,8450,8069,7586,7008,6357,5633,4854,4012,3114,2172,1195,204,-797,-1774,-2725,-3645,-4528,-5359, -6133,-6848,-7487,-8034,-8477,-8825,-9073,-9212,-9272,-9227,-9089,-8849,-8501,-8063,-7546,-6952,-6300,-5588,-4843,-4057, -3224,-2357,-1483,-595,291,1157,2006,2832,3633,4411,5146,5842,6494,7071,7584,8024,8387,8678,8889,9014, 9052,8981,8810,8531,8152,7686,7135,6507,5807,5036,4184,3283,2332,1354,374,-615,-1589,-2541,-3471,-4367, -5227,-6025,-6740,-7387,-7925,-8380,-8748,-9016,-9198,-9273,-9246,-9119,-8879,-8542,-8120,-7617,-7043,-6413,-5725,-4977, -4187,-3349,-2485,-1614,-739,128,994,1844,2673,3494,4283,5035,5732,6371,6953,7471,7921,8312,8625,8858, 8997,9035,8973,8807,8543,8194,7755,7227,6622,5918,5151,4300,3403,2465,1509,534,-440,-1425,-2390,-3339, -4254,-5114,-5907,-6629,-7272,-7834,-8315,-8706,-8996,-9200,-9286,-9270,-9143,-8916,-8600,-8198,-7720,-7172,-6546,-5859, -5108,-4310,-3485,-2630,-1768,-905,-31,834,1698,2547,3373,4166,4913,5606,6254,6849,7383,7865,8267,8592, 8831,8975,9019,8971,8826,8593,8262,7845,7333,6728,6025,5257,4423,3543,2627,1674,708,-278,-1277,-2249, -3208,-4117,-4981,-5780,-6504,-7167,-7749,-8256,-8666,-8982,-9182,-9285,-9272,-9162,-8957,-8664,-8287,-7824,-7275,-6657, -5965,-5220,-4435,-3616,-2776,-1927,-1056,-178,701,1574,2429,3251,4041,4786,5489,6146,6757,7315,7810,8226, 8557,8802,8952,9017,8990,8873,8665,8349,7942,7430,6828,6143,5386,4576,3709,2808,1862,888,-106,-1108, -2088,-3037,-3945,-4810,-5617,-6353,-7042,-7643,-8170,-8587,-8902,-9119,-9227,-9235,-9150,-8969,-8708,-8338,-7880,-7336, -6726,-6037,-5309,-4540,-3738,-2906,-2053,-1168,-286,598,1468,2317,3140,3928,4679,5402,6073,6707,7280,7771, 8192,8525,8782,8956,9043,9044,8953,8752,8445,8034,7537,6955,6286,5557,4767,3908,3002,2042,1061,65, -925,-1904,-2845,-3761,-4640,-5469,-6237,-6942,-7560,-8090,-8514,-8839,-9068,-9207,-9248,-9185,-9027,-8767,-8402,-7952, -7415,-6817,-6161,-5453,-4690,-3892,-3058,-2189,-1312,-421,446,1314,2161,2983,3778,4550,5285,5972,6601,7166, 7664,8092,8445,8725,8924,9029,9040,8948,8755,8458,8065,7593,7027,6381,5668,4872,4017,3099,2147,1172, 194,-793,-1763,-2723,-3653,-4542,-5389,-6168,-6874,-7491,-8022,-8467,-8814,-9072,-9235,-9293,-9244,-9087,-8829,-8483, -8047,-7529,-6954,-6310,-5597,-4847,-4039,-3199,-2335,-1465,-586,282,1145,1999,2835,3647,4424,5164,5851,6477, 7054,7560,8013,8386,8685,8896,9016,9026,8950,8770,8492,8127,7672,7127,6494,5776,4990,4135,3231,2295, 1333,360,-614,-1600,-2573,-3509,-4416,-5261,-6047,-6749,-7379,-7932,-8397,-8774,-9055,-9228,-9299,-9261,-9116,-8878, -8550,-8139,-7647,-7077,-6438,-5738,-4977,-4176,-3345,-2489,-1629,-757,113,985,1844,2689,3505,4284,5024,5710, 6354,6936,7467,7933,8328,8632,8854,8972,9008,8942,8788,8542,8196,7754,7227,6598,5885,5102,4261,3377, 2453,1493,522,-474,-1462,-2436,-3387,-4286,-5133,-5921,-6635,-7288,-7859,-8348,-8742,-9035,-9213,-9294,-9267,-9146, -8926,-8621,-8223,-7745,-7178,-6541,-5843,-5098,-4317,-3480,-2647,-1782,-908,-23,851,1725,2566,3391,4165,4907, 5602,6258,6860,7404,7884,8284,8595,8824,8965,9018,8973,8847,8612,8275,7844,7319,6697,6006,5240,4425, 3552,2627,1673,688,-308,-1298,-2279,-3217,-4114,-4969,-5773,-6520,-7187,-7779,-8274,-8670,-8966,-9163,-9260,-9264, -9165,-8968,-8674,-8290,-7813,-7261,-6631,-5949,-5216,-4443,-3630,-2796,-1921,-1046,-167,713,1577,2420,3235,4016, 4768,5487,6149,6768,7310,7795,8200,8525,8771,8938,9004,8989,8866,8637,8315,7896,7381,6794,6115,5375, 4563,3689,2763,1805,818,-165,-1153,-2118,-3066,-3980,-4855,-5676,-6431,-7112,-7710,-8212,-8622,-8941,-9157,-9282, -9300,-9221,-9036,-8748,-8368,-7909,-7365,-6755,-6087,-5362,-4588,-3773,-2928,-2065,-1189,-308,564,1425,2274,3099, 3900,4663,5386,6064,6677,7231,7723,8141,8486,8753,8936,9027,9016,8900,8692,8384,7983,7494,6918,6260, 5521,4712,3845,2927,1979,1007,22,-961,-1930,-2891,-3819,-4701,-5526,-6292,-6981,-7581,-8104,-8533,-8874,-9110, -9254,-9284,-9212,-9037,-8767,-8406,-7960,-7437,-6846,-6189,-5466,-4700,-3886,-3045,-2191,-1316,-446,423,1289,2139, 2975,3777,4541,5271,5948,6567,7127,7631,8068,8433,8707,8897,8997,8993,8896,8703,8418,8035,7561,6990, 6350,5609,4811,3946,3043,2109,1140,155,-827,-1813,-2778,-3718,-4602,-5434,-6201,-6900,-7522,-8064,-8514,-8873, -9133,-9279,-9325,-9265,-9110,-8858,-8520,-8095,-7584,-6997,-6340,-5624,-4862,-4056,-3231,-2376,-1511,-636,243,1122, 1977,2820,3617,4396,5119,5808,6441,7028,7547,8003,8373,8663,8863,8968,8993,8923,8748,8488,8120,7660, 7102,6457,5746,4965,4121,3236,2301,1334,351,-646,-1630,-2591,-3527,-4414,-5248,-6028,-6740,-7383,-7942,-8403, -8775,-9034,-9196,-9255,-9215,-9078,-8847,-8520,-8105,-7604,-7016,-6369,-5663,-4916,-4125,-3307,-2453,-1580,-694,186, 1062,1918,2748,3558,4335,5070,5773,6420,7018,7543,8009,8379,8686,8899,9032,9069,9013,8855,8598,8237, 7791,7241,6619,5920,5153,4323,3426,2493,1523,531,-458,-1435,-2404,-3341,-4237,-5101,-5895,-6628,-7285,-7849, -8330,-8702,-8985,-9175,-9257,-9247,-9133,-8913,-8598,-8190,-7698,-7138,-6512,-5822,-5087,-4299,-3478,-2624,-1753,-881, -3,865,1717,2551,3370,4149,4904,5604,6259,6856,7383,7846,8246,8560,8798,8947,9000,8956,8810,8561, 8223,7788,7271,6663,5984,5218,4387,3496,2572,1611,634,-349,-1329,-2300,-3246,-4162,-5024,-5833,-6568,-7228, -7801,-8293,-8689,-8995,-9201,-9304,-9307,-9196,-8987,-8682,-8284,-7812,-7268,-6649,-5970,-5229,-4444,-3620,-2769,-1904, -1033,-150,711,1577,2429,3251,4050,4806,5511,6174,6775,7317,7804,8214,8549,8808,8965,9033,8998,8870, 8646,8325,7915,7415,6818,6141,5387,4557,3683,2761,1814,843,-139,-1124,-2105,-3064,-3985,-4858,-5666,-6410, -7081,-7672,-8184,-8609,-8933,-9155,-9268,-9272,-9181,-8992,-8707,-8334,-7884,-7353,-6742,-6066,-5329,-4555,-3736,-2896, -2046,-1181,-310,569,1441,2289,3121,3916,4668,5382,6040,6653,7217,7715,8144,8486,8746,8910,8983,8966, 8860,8659,8359,7964,7464,6877,6205,5458,4654,3792,2883,1948,971,-15,-1014,-2002,-2958,-3876,-4747,-5561, -6314,-7005,-7621,-8157,-8586,-8919,-9154,-9274,-9299,-9229,-9059,-8798,-8446,-7997,-7474,-6867,-6192,-5470,-4703,-3901, -3074,-2213,-1341,-457,429,1302,2157,2981,3772,4539,5262,5942,6582,7154,7669,8092,8448,8715,8903,9007, 9018,8939,8752,8464,8073,7587,7016,6362,5636,4853,4007,3105,2158,1180,192,-806,-1785,-2734,-3649,-4526, -5363,-6137,-6847,-7476,-8013,-8450,-8791,-9035,-9182,-9232,-9183,-9039,-8792,-8438,-8001,-7476,-6881,-6231,-5527,-4773, -3980,-3144,-2286,-1407,-520,355,1220,2069,2886,3693,4471,5206,5898,6538,7111,7621,8053,8422,8706,8912, 9036,9061,8984,8805,8518,8142,7671,7118,6489,5779,4999,4150,3239,2296,1314,321,-658,-1631,-2589,-3525, -4422,-5275,-6066,-6786,-7415,-7961,-8413,-8775,-9050,-9223,-9298,-9267,-9128,-8882,-8549,-8123,-7618,-7055,-6416,-5727, -4974,-4174,-3342,-2478,-1600,-732,138,1005,1851,2694,3504,4288,5040,5730,6372,6955,7471,7926,8314,8622, 8852,8988,9017,8951,8782,8522,8166,7726,7196,6583,5877,5103,4253,3360,2424,1467,495,-483,-1462,-2430, -3374,-4286,-5142,-5934,-6649,-7289,-7840,-8319,-8706,-9003,-9189,-9273,-9249,-9116,-8887,-8563,-8158,-7685,-7125,-6494, -5802,-5046,-4246,-3417,-2560,-1703,-829,33,906,1767,2621,3445,4235,4973,5670,6312,6905,7441,7916,8318, 8648,8879,9013,9055,8998,8856,8618,8288,7864,7348,6725,6029,5247,4414,3533,2613,1666,692,-296,-1288, -2280,-3231,-4142,-4999,-5794,-6519,-7181,-7763,-8269,-8675,-8984,-9187,-9276,-9255,-9151,-8944,-8656,-8277,-7807,-7260, -6634,-5940,-5199,-4409,-3595,-2760,-1906,-1036,-157,721,1594,2443,3262,4037,4780,5483,6139,6751,7308,7795, 8210,8530,8766,8913,8971,8941,8829,8615,8300,7871,7357,6747,6057,5300,4494,3629,2720,1766,779,-214, -1213,-2193,-3135,-4040,-4898,-5700,-6454,-7130,-7739,-8255,-8666,-8973,-9174,-9281,-9291,-9205,-9025,-8752,-8378,-7909, -7361,-6739,-6057,-5330,-4558,-3761,-2922,-2058,-1179,-284,595,1465,2304,3122,3904,4669,5390,6067,6695,7256, 7748,8160,8491,8751,8922,9014,9013,8908,8703,8387,7973,7469,6890,6221,5497,4700,3837,2919,1957,974, -13,-1007,-1967,-2924,-3832,-4708,-5536,-6312,-7005,-7612,-8123,-8548,-8872,-9101,-9236,-9274,-9209,-9047,-8772,-8402, -7948,-7411,-6808,-6157,-5445,-4687,-3878,-3038,-2169,-1288,-411,458,1315,2156,2979,3780,4552,5285,5971,6593, 7150,7645,8060,8419,8695,8899,9004,9007,8910,8704,8398,8008,7528,6967,6328,5604,4805,3946,3023,2067, 1092,116,-860,-1831,-2789,-3717,-4618,-5462,-6241,-6933,-7549,-8073,-8510,-8857,-9114,-9271,-9327,-9269,-9106,-8840, -8485,-8045,-7536,-6955,-6306,-5606,-4838,-4023,-3180,-2317,-1444,-574,293,1157,2011,2851,3667,4447,5184,5862, 6491,7057,7566,8016,8391,8689,8906,9014,9025,8935,8749,8474,8109,7654,7113,6480,5757,4957,4099,3200, 2264,1304,340,-639,-1624,-2595,-3543,-4445,-5286,-6058,-6762,-7382,-7940,-8397,-8772,-9047,-9216,-9275,-9225,-9070, -8828,-8499,-8085,-7595,-7025,-6383,-5671,-4904,-4103,-3273,-2423,-1566,-698,176,1049,1916,2762,3576,4352,5080, 5761,6398,6983,7516,7983,8371,8674,8880,8995,9019,8951,8795,8546,8202,7755,7208,6574,5852,5072,4234, 3352,2428,1474,493,-502,-1503,-2481,-3425,-4317,-5157,-5936,-6655,-7306,-7883,-8371,-8758,-9036,-9212,-9275,-9246, -9121,-8907,-8601,-8210,-7718,-7144,-6501,-5799,-5046,-4261,-3447,-2613,-1746,-868,12,902,1762,2605,3413,4186, 4925,5620,6276,6885,7427,7899,8295,8600,8821,8959,9006,8969,8837,8604,8265,7824,7285,6665,5970,5210, 4393,3519,2599,1632,642,-353,-1345,-2316,-3246,-4146,-4994,-5794,-6541,-7212,-7797,-8292,-8680,-8967,-9153,-9246, -9246,-9148,-8949,-8653,-8254,-7770,-7209,-6579,-5893,-5162,-4389,-3579,-2731,-1865,-977,-95,784,1642,2480,3286, 4072,4819,5538,6206,6819,7364,7834,8230,8554,8793,8953,9028,9006,8877,8651,8318,7885,7369,6770,6103, 5358,4544,3666,2738,1767,784,-205,-1187,-2149,-3096,-4008,-4877,-5706,-6460,-7140,-7727,-8224,-8627,-8938,-9154, -9276,-9295,-9213,-9022,-8731,-8332,-7864,-7323,-6715,-6052,-5326,-4558,-3741,-2896,-2027,-1144,-266,596,1460,2298, 3122,3916,4687,5411,6086,6692,7244,7721,8140,8481,8748,8931,9019,9004,8882,8661,8351,7947,7458,6882, 6232,5491,4677,3795,2878,1923,954,-25,-999,-1972,-2933,-3858,-4746,-5577,-6334,-7011,-7599,-8114,-8547,-8879, -9126,-9256,-9288,-9211,-9027,-8745,-8379,-7935,-7412,-6818,-6154,-5435,-4658,-3837,-2994,-2129,-1262,-393,479,1340, 2193,3033,3837,4608,5332,5998,6615,7176,7675,8120,8477,8756,8945,9035,9022,8920,8721,8433,8056,7577, 7008,6346,5611,4801,3931,3032,2091,1129,152,-842,-1829,-2799,-3736,-4619,-5444,-6214,-6898,-7519,-8058,-8510, -8866,-9120,-9264,-9303,-9242,-9076,-8822,-8477,-8052,-7545,-6950,-6299,-5573,-4805,-4003,-3169,-2321,-1457,-584,295, 1172,2036,2870,3672,4436,5156,5840,6473,7052,7576,8025,8392,8675,8865,8971,8984,8902,8734,8467,8099, 7627,7062,6413,5693,4905,4064,3172,2241,1275,282,-719,-1700,-2672,-3600,-4480,-5313,-6090,-6804,-7445,-7999, -8459,-8828,-9082,-9237,-9289,-9246,-9111,-8875,-8545,-8128,-7613,-7034,-6376,-5670,-4920,-4126,-3297,-2454,-1579,-695, 188,1070,1928,2761,3568,4337,5078,5775,6425,7019,7543,7995,8377,8668,8883,9014,9049,8993,8831,8571, 8215,7754,7204,6580,5872,5103,4270,3378,2441,1472,481,-507,-1490,-2458,-3394,-4284,-5139,-5934,-6665,-7311, -7879,-8344,-8722,-8995,-9176,-9256,-9246,-9121,-8902,-8583,-8166,-7673,-7109,-6468,-5783,-5042,-4252,-3426,-2572,-1698, -822,57,926,1779,2618,3434,4218,4964,5667,6321,6910,7440,7903,8290,8604,8835,8981,9034,8986,8834, 8590,8238,7801,7269,6663,5973,5217,4377,3493,2553,1589,605,-375,-1355,-2317,-3269,-4178,-5048,-5853,-6587, -7244,-7819,-8301,-8690,-8994,-9198,-9297,-9290,-9179,-8971,-8664,-8263,-7789,-7235,-6617,-5930,-5196,-4406,-3579,-2723, -1860,-984,-111,756,1616,2465,3287,4082,4835,5544,6196,6794,7337,7809,8223,8563,8806,8967,9024,8986, 8856,8624,8297,7893,7377,6788,6100,5345,4514,3632,2708,1766,793,-189,-1177,-2157,-3111,-4031,-4904,-5706, -6449,-7113,-7703,-8215,-8633,-8951,-9174,-9281,-9286,-9188,-8987,-8701,-8324,-7870,-7333,-6721,-6034,-5303,-4519,-3699, -2862,-1996,-1132,-257,624,1488,2346,3171,3970,4717,5427,6095,6712,7271,7765,8190,8527,8783,8950,9020, 9004,8893,8687,8384,7978,7480,6885,6206,5460,4651,3788,2885,1936,961,-34,-1029,-2010,-2961,-3880,-4746, -5560,-6317,-7008,-7612,-8139,-8565,-8893,-9115,-9241,-9263,-9183,-9011,-8750,-8387,-7931,-7401,-6791,-6123,-5393,-4627, -3822,-2989,-2125,-1253,-367,511,1382,2235,3054,3850,4613,5335,6016,6644,7217,7708,8139,8482,8754,8934, 9033,9034,8946,8753,8455,8059,7576,6991,6340,5611,4820,3967,3060,2108,1134,138,-851,-1827,-2781,-3702, -4581,-5414,-6188,-6894,-7513,-8047,-8488,-8819,-9069,-9220,-9261,-9208,-9060,-8797,-8451,-8004,-7485,-6894,-6243,-5534, -4781,-3979,-3147,-2279,-1412,-529,344,1212,2057,2885,3687,4460,5196,5883,6519,7095,7591,8029,8396,8681, 8886,9000,9013,8937,8747,8463,8087,7614,7061,6425,5711,4925,4072,3162,2213,1244,262,-723,-1698,-2658, -3593,-4495,-5338,-6124,-6829,-7462,-8004,-8453,-8810,-9084,-9250,-9316,-9273,-9124,-8880,-8537,-8105,-7607,-7031,-6392, -5690,-4930,-4129,-3295,-2430,-1564,-688,178,1047,1903,2745,3556,4345,5078,5772,6413,6986,7507,7964,8345, 8655,8877,9001,9026,8950,8784,8522,8161,7719,7190,6556,5851,5072,4222,3326,2395,1440,468,-515,-1498, -2471,-3420,-4321,-5177,-5958,-6669,-7305,-7870,-8340,-8728,-9019,-9197,-9274,-9237,-9105,-8874,-8555,-8154,-7665,-7113, -6475,-5772,-5016,-4225,-3392,-2553,-1690,-820,54,922,1792,2634,3455,4232,4968,5662,6300,6897,7437,7908, 8307,8619,8838,8971,9004,8952,8811,8568,8239,7804,7273,6655,5940,5174,4345,3468,2545,1592,608,-382, -1382,-2365,-3310,-4207,-5063,-5858,-6586,-7243,-7835,-8331,-8732,-9027,-9216,-9298,-9283,-9173,-8974,-8681,-8292,-7814, -7257,-6623,-5933,-5188,-4407,-3600,-2758,-1892,-1023,-134,750,1622,2465,3273,4050,4795,5503,6168,6784,7332, 7817,8212,8534,8770,8919,8978,8961,8841,8620,8290,7855,7335,6727,6036,5292,4485,3620,2697,1736,750, -239,-1236,-2200,-3141,-4045,-4898,-5712,-6464,-7140,-7743,-8244,-8644,-8946,-9146,-9255,-9264,-9178,-8996,-8707,-8327, -7848,-7287,-6673,-5999,-5272,-4501,-3696,-2851,-1985,-1093,-211,660,1517,2362,3172,3966,4723,5445,6122,6738, 7292,7777,8173,8512,8768,8950,9033,9020,8913,8694,8373,7956,7453,6870,6214,5479,4665,3806,2883,1917, 936,-49,-1030,-1995,-2940,-3861,-4740,-5572,-6336,-7022,-7624,-8130,-8545,-8871,-9098,-9241,-9273,-9206,-9027,-8748, -8371,-7910,-7380,-6786,-6129,-5417,-4645,-3834,-2985,-2120,-1240,-370,496,1351,2191,3023,3827,4596,5331,5999, 6618,7174,7660,8088,8445,8723,8923,9021,9018,8907,8690,8399,8006,7531,6969,6325,5589,4786,3911,2991, 2043,1077,103,-869,-1851,-2809,-3750,-4644,-5477,-6247,-6933,-7534,-8066,-8501,-8852,-9108,-9262,-9304,-9238,-9063, -8793,-8434,-8003,-7494,-6917,-6262,-5545,-4770,-3958,-3117,-2257,-1386,-521,341,1211,2072,2916,3728,4508,5223, 5900,6521,7088,7607,8058,8430,8729,8926,9023,9019,8926,8748,8480,8115,7656,7101,6456,5719,4916,4063, 3164,2237,1281,306,-679,-1676,-2655,-3600,-4487,-5316,-6083,-6771,-7401,-7950,-8426,-8797,-9062,-9219,-9269,-9204, -9055,-8815,-8493,-8082,-7583,-6999,-6344,-5627,-4865,-4064,-3242,-2400,-1543,-666,210,1092,1964,2804,3608,4369, 5094,5780,6420,7015,7547,8013,8385,8670,8873,8988,9010,8949,8798,8546,8198,7732,7178,6535,5821,5038, 4214,3319,2405,1439,444,-553,-1544,-2521,-3446,-4339,-5171,-5953,-6679,-7340,-7906,-8395,-8766,-9037,-9199,-9266, -9237,-9120,-8903,-8598,-8189,-7686,-7108,-6461,-5760,-5016,-4230,-3420,-2580,-1709,-822,68,945,1805,2640,3444, 4217,4960,5659,6325,6931,7466,7925,8311,8604,8829,8968,9024,8985,8843,8596,8247,7788,7250,6628,5943, 5188,4363,3480,2552,1569,580,-412,-1397,-2359,-3291,-4188,-5045,-5853,-6597,-7262,-7842,-8313,-8694,-8980,-9162, -9262,-9263,-9160,-8955,-8646,-8237,-7745,-7174,-6554,-5877,-5143,-4370,-3552,-2695,-1823,-929,-46,821,1672,2497, 3311,4102,4862,5575,6251,6843,7380,7847,8236,8558,8808,8973,9047,9008,8876,8630,8288,7860,7345,6756, 6091,5339,4511,3634,2697,1729,750,-234,-1205,-2163,-3114,-4031,-4914,-5733,-6484,-7150,-7723,-8209,-8616,-8922, -9154,-9276,-9287,-9195,-8988,-8683,-8298,-7830,-7289,-6690,-6024,-5301,-4519,-3693,-2836,-1967,-1098,-230,634,1487, 2326,3161,3963,4732,5449,6103,6708,7244,7722,8144,8496,8767,8942,9017,8985,8849,8624,8315,7917,7426, 6857,6184,5428,4599,3717,2799,1856,886,-83,-1066,-2044,-3019,-3951,-4835,-5650,-6400,-7062,-7656,-8172,-8606, -8953,-9190,-9321,-9332,-9242,-9049,-8766,-8408,-7966,-7454,-6845,-6177,-5441,-4653,-3835,-2992,-2143,-1282,-411,465, 1334,2204,3043,3844,4602,5313,5978,6594,7161,7672,8111,8471,8744,8919,8996,8981,8876,8690,8409,8022, 7551,6964,6292,5549,4741,3882,2983,2058,1094,107,-885,-1874,-2853,-3779,-4648,-5462,-6214,-6905,-7525,-8064, -8513,-8868,-9104,-9235,-9258,-9185,-9029,-8772,-8435,-8005,-7482,-6886,-6209,-5486,-4715,-3918,-3091,-2249,-1377,-499, 383,1267,2128,2959,3753,4510,5233,5917,6553,7138,7657,8099,8460,8731,8913,9017,9035,8955,8785,8509, 8137,7654,7077,6427,5697,4917,4069,3185,2246,1275,270,-727,-1719,-2675,-3596,-4478,-5304,-6086,-6810,-7452, -8005,-8459,-8808,-9051,-9213,-9252,-9228,-9086,-8860,-8533,-8101,-7587,-6999,-6337,-5640,-4886,-4094,-3278,-2428,-1553, -664,229,1100,1943,2775,3574,4345,5084,5780,6433,7023,7539,7987,8355,8648,8852,8982,9022,8968,8802, 8536,8161,7694,7141,6510,5812,5057,4215,3314,2373,1395,410,-584,-1562,-2514,-3435,-4335,-5187,-5985,-6710, -7360,-7917,-8362,-8729,-8999,-9169,-9256,-9235,-9112,-8876,-8538,-8118,-7616,-7036,-6402,-5715,-4978,-4187,-3354,-2490, -1616,-727,145,1010,1861,2691,3508,4302,5051,5759,6412,6999,7518,7970,8358,8677,8906,9053,9102,9048, 8884,8622,8272,7835,7308,6702,6022,5248,4415,3513,2575,1612,644,-336,-1307,-2280,-3223,-4141,-5009,-5816, -6539,-7193,-7757,-8235,-8636,-8938,-9141,-9244,-9222,-9114,-8889,-8574,-8171,-7695,-7153,-6539,-5850,-5116,-4323,-3491, -2644,-1779,-914,-53,818,1677,2515,3341,4138,4889,5588,6236,6827,7362,7833,8252,8583,8830,8971,9023, 8976,8834,8597,8279,7860,7355,6750,6057,5291,4462,3568,2660,1707,740,-244,-1233,-2223,-3179,-4101,-4966, -5768,-6505,-7163,-7752,-8260,-8669,-8999,-9209,-9310,-9305,-9194,-8997,-8704,-8328,-7866,-7325,-6705,-6021,-5275,-4488, -3670,-2832,-1973,-1107,-225,652,1528,2388,3211,4008,4754,5457,6124,6735,7301,7789,8214,8551,8808,8961, 9033,9012,8899,8690,8383,7975,7481,6879,6203,5450,4642,3784,2872,1928,955,-40,-1038,-2016,-2974,-3882, -4747,-5562,-6305,-6987,-7600,-8120,-8545,-8867,-9086,-9202,-9220,-9129,-8962,-8684,-8323,-7869,-7336,-6724,-6048,-5316, -4554,-3746,-2917,-2061,-1189,-307,573,1447,2297,3116,3902,4654,5379,6051,6681,7249,7747,8167,8512,8772, 8946,9037,9037,8938,8745,8442,8044,7546,6966,6299,5570,4774,3926,3005,2058,1081,84,-909,-1895,-2848, -3764,-4646,-5479,-6250,-6951,-7575,-8108,-8542,-8875,-9115,-9262,-9294,-9243,-9087,-8831,-8481,-8034,-7503,-6910,-6253, -5543,-4785,-3990,-3156,-2290,-1421,-531,343,1198,2049,2873,3677,4448,5188,5870,6513,7078,7590,8018,8377, 8660,8864,8976,8993,8904,8719,8427,8041,7570,7023,6379,5664,4875,4025,3116,2164,1191,214,-773,-1747, -2699,-3631,-4520,-5370,-6155,-6856,-7480,-8017,-8461,-8813,-9075,-9237,-9300,-9248,-9097,-8848,-8503,-8071,-7554,-6983, -6336,-5623,-4863,-4069,-3223,-2363,-1489,-618,252,1116,1981,2809,3627,4407,5141,5829,6464,7038,7559,8008, 8380,8684,8896,9021,9032,8957,8785,8517,8152,7704,7163,6534,0,4,-611,-1786,-2359,-2327,-1646,-246, 1337,2518,3385,3976,4678,5886,7409,8946,10168,10543,10181,9576,8945,8493,8258,7828,6840,5323,3403,1266, -825,-2704,-4316,-5660,-6788,-7809,-8793,-9739,-10447,-10816,-10888,-10731,-10389,-10173,-10224,-10350,-10391,-10325,-9896,-8999, -7914,-6848,-5772,-4857,-4249,-3657,-2846,-1924,-945,172,1298,2268,3129,3998,4923,5942,7083,8260,9239,9869, 10173,10199,10023,9830,9771,9740,9635,9395,8818,7835,6751,5773,4826,3977,3300,2571,1555,347,-911,-2144, -3203,-3963,-4509,-4998,-5521,-6182,-7003,-7850,-8558,-9019,-9237,-9283,-9257,-9235,-9232,-9149,-8855,-8280,-7448,-6437, -5379,-4410,-3563,-2833,-2186,-1550,-881,-229,383,955,1421,1749,1988,2218,2477,2820,3239,3687,4129,4524, 4849,5146,5533,6053,6711,7444,8099,8533,8736,8714,8548,8359,8224,8052,7740,7161,6241,5006,3635,2313, 1150,137,-796,-1776,-2906,-4183,-5482,-6627,-7512,-8081,-8373,-8542,-8742,-9005,-9283,-9524,-9554,-9242,-8659,-7962, -7256,-6641,-6163,-5742,-5240,-4587,-3771,-2830,-1893,-1072,-396,187,758,1440,2324,3403,4575,5744,6794,7643, 8327,8984,9708,10495,11271,11921,12247,12145,11712,11085,10392,9750,9185,8542,7676,6545,5175,3675,2245,1015, 8,-845,-1668,-2622,-3761,-5021,-6257,-7333,-8174,-8790,-9287,-9799,-10385,-11012,-11542,-11839,-11799,-11412,-10779,-10034, -9293,-8602,-7911,-7135,-6213,-5123,-3919,-2696,-1570,-599,212,908,1537,2144,2757,3347,3883,4332,4668,4915, 5164,5488,5934,6489,7090,7609,7940,8070,8044,7962,7911,7921,7924,7802,7463,6850,6016,5085,4185,3379, 2618,1814,855,-319,-1642,-2981,-4213,-5211,-5964,-6551,-7103,-7700,-8350,-9003,-9528,-9814,-9830,-9623,-9279,-8915, -8596,-8276,-7884,-7337,-6603,-5708,-4746,-3833,-3019,-2331,-1738,-1159,-506,251,1104,1994,2851,3613,4292,4930, 5617,6399,7291,8235,9099,9779,10227,10474,10613,10755,10943,11105,11108,10850,10247,9340,8276,7204,6220,5322, 4432,3434,2240,872,-572,-1956,-3166,-4148,-4984,-5786,-6658,-7642,-8684,-9646,-10388,-10833,-11005,-10985,-10897,-10826, -10760,-10609,-10270,-9674,-8830,-7805,-6729,-5696,-4752,-3882,-3032,-2132,-1158,-151,843,1743,2500,3117,3640,4134, 4667,5273,5936,6583,7139,7557,7843,8056,8279,8554,8859,9112,9193,9013,8570,7941,7241,6556,5926,5295, 4558,3630,2504,1240,-31,-1203,-2201,-3051,-3834,-4647,-5536,-6488,-7397,-8157,-8692,-8990,-9113,-9168,-9216,-9278, -9295,-9186,-8880,-8360,-7677,-6917,-6157,-5447,-4793,-4160,-3496,-2784,-2033,-1268,-542,117,688,1193,1685,2219, 2842,3555,4325,5082,5770,6376,6918,7464,8066,8715,9356,9870,10154,10160,9939,9576,9169,8766,8330,7779, 7011,5993,4783,3485,2228,1104,100,-842,-1821,-2900,-4073,-5264,-6352,-7250,-7930,-8432,-8862,-9296,-9769,-10234, -10586,-10715,-10576,-10178,-9605,-8963,-8311,-7669,-6985,-6198,-5274,-4227,-3103,-1993,-966,-56,746,1490,2238,3029, 3861,4691,5472,6152,6719,7205,7666,8163,8709,9264,9744,10050,10133,10009,9752,9440,9128,8793,8363,7749, 6899,5847,4665,3474,2360,1341,371,-622,-1714,-2901,-4121,-5276,-6275,-7079,-7712,-8251,-8767,-9296,-9805,-10224, -10461,-10454,-10219,-9809,-9304,-8764,-8201,-7603,-6935,-6166,-5314,-4421,-3535,-2707,-1963,-1301,-697,-119,471,1078, 1704,2329,2924,3485,4008,4537,5105,5741,6435,7143,7786,8311,8689,8951,9149,9317,9450,9489,9348,8961, 8326,7504,6594,5681,4805,3939,3020,1984,807,-455,-1713,-2873,-3883,-4749,-5537,-6316,-7127,-7961,-8751,-9394, -9830,-10039,-10070,-9981,-9840,-9667,-9432,-9072,-8542,-7834,-6986,-6058,-5130,-4242,-3406,-2590,-1763,-895,7,928, 1830,2672,3436,4138,4817,5522,6272,7071,7874,8615,9229,9707,10065,10354,10618,10845,10994,10979,10729,10238, 9541,8742,7918,7105,6291,5411,4408,3253,1990,698,-539,-1655,-2650,-3570,-4483,-5440,-6425,-7384,-8225,-8886, -9337,-9613,-9770,-9866,-9907,-9870,-9693,-9337,-8787,-8078,-7270,-6438,-5617,-4825,-4050,-3272,-2485,-1697,-931,-215, 437,1022,1550,2038,2527,3040,3591,4170,4749,5299,5804,6264,6709,7162,7626,8057,8399,8578,8555,8349, 8002,7585,7134,6633,6040,5300,4384,3321,2180,1047,-12,-990,-1925,-2868,-3863,-4907,-5951,-6917,-7739,-8381, -8882,-9283,-9639,-9968,-10242,-10401,-10383,-10161,-9756,-9220,-8613,-7983,-7334,-6647,-5893,-5067,-4175,-3261,-2362,-1512, -720,13,725,1440,2175,2944,3729,4496,5224,5895,6529,7154,7795,8455,9099,9654,10053,10244,10229,10073, 9826,9523,9155,8677,8027,7176,6143,5009,3855,2749,1716,719,-305,-1395,-2557,-3730,-4840,-5818,-6630,-7293, -7869,-8410,-8949,-9452,-9851,-10078,-10091,-9886,-9531,-9068,-8564,-8010,-7385,-6656,-5807,-4855,-3857,-2872,-1942,-1085, -290,464,1201,1933,2658,3353,4008,4608,5160,5687,6202,6747,7324,7905,8453,8911,9242,9439,9528,9555, 9538,9468,9293,8952,8402,7651,6757,5798,4842,3910,2981,1996,916,-270,-1505,-2716,-3819,-4784,-5616,-6373, -7107,-7849,-8572,-9218,-9709,-10000,-10086,-10015,-9845,-9625,-9357,-9015,-8548,-7933,-7181,-6338,-5476,-4630,-3836,-3083, -2341,-1584,-811,-24,747,1485,2172,2812,3426,4053,4713,5432,6175,6915,7599,8180,8645,9020,9344,9638, 9884,10030,9999,9733,9223,8530,7726,6895,6068,5219,4297,3244,2049,760,-546,-1776,-2875,-3854,-4759,-5662, -6606,-7565,-8483,-9275,-9873,-10265,-10487,-10609,-10684,-10721,-10680,-10498,-10108,-9507,-8737,-7870,-6988,-6131,-5290,-4442, -3544,-2600,-1624,-660,242,1056,1787,2456,3111,3782,4490,5224,5951,6617,7206,7701,8136,8547,8959,9373, 9728,9944,9964,9761,9361,8843,8277,7699,7092,6387,5532,4495,3317,2077,871,-230,-1226,-2160,-3108,-4105, -5163,-6204,-7157,-7935,-8515,-8931,-9258,-9541,-9807,-10018,-10103,-9987,-9646,-9106,-8445,-7741,-7044,-6353,-5647,-4880, -4035,-3142,-2239,-1385,-611,77,708,1323,1964,2651,3372,4103,4815,5471,6073,6643,7218,7834,8486,9133, 9698,10100,10294,10284,10133,9906,9650,9341,8926,8330,7506,6476,5323,4158,3059,2044,1078,86,-996,-2175, -3403,-4569,-5596,-6440,-7112,-7691,-8252,-8826,-9399,-9880,-10173,-10221,-10031,-9655,-9195,-8711,-8222,-7687,-7043,-6252, -5326,-4310,-3301,-2354,-1497,-727,14,769,1566,2409,3242,4030,4734,5353,5918,6480,7084,7752,8446,9096, 9612,9948,10090,10093,10023,9930,9810,9597,9208,8575,7705,6662,5559,4494,3503,2556,1584,506,-701,-1990, -3275,-4442,-5434,-6254,-6968,-7661,-8388,-9140,-9843,-10395,-10708,-10777,-10642,-10393,-10102,-9803,-9458,-9009,-8390,-7600, -6682,-5722,-4805,-3970,-3223,-2522,-1813,-1069,-295,479,1207,1858,2430,2943,3455,4020,4663,5376,6104,6775, 7336,7748,8057,8312,8565,8817,9012,9062,8878,8428,7750,6951,6129,5347,4593,3800,2885,1800,564,-719, -1947,-3026,-3938,-4741,-5512,-6339,-7231,-8126,-8925,-9528,-9886,-10021,-10030,-9989,-9952,-9893,-9736,-9398,-8831,-8060, -7162,-6244,-5380,-4586,-3825,-3045,-2201,-1283,-332,592,1436,2165,2810,3415,4055,4765,5557,6390,7188,7881, 8439,8885,9277,9672,10098,10509,10812,10892,10700,10247,9618,8927,8250,7606,6924,6107,5101,3898,2580,1268, 68,-974,-1893,-2778,-3722,-4749,-5836,-6870,-7748,-8391,-8808,-9070,-9276,-9489,-9708,-9855,-9836,-9565,-9044,-8337, -7549,-6768,-6046,-5353,-4637,-3847,-2958,-2019,-1090,-245,484,1098,1645,2188,2785,3451,4164,4867,5504,6042, 6491,6899,7331,7825,8360,8856,9215,9347,9232,8921,8517,8099,7696,7261,6707,5941,4941,3760,2511,1326, 264,-684,-1587,-2544,-3613,-4777,-5946,-7003,-7859,-8488,-8949,-9334,-9728,-10152,-10555,-10828,-10870,-10638,-10170,-9561, -8923,-8315,-7725,-7107,-6384,-5525,-4552,-3537,-2557,-1683,-928,-259,392,1080,1845,2663,3489,4263,4941,5520, 6057,6610,7234,7935,8647,9275,9718,9928,9920,9782,9605,9440,9254,8964,8465,7692,6686,5549,4406,3354, 2418,1532,596,-472,-1673,-2939,-4153,-5200,-6027,-6675,-7229,-7797,-8421,-9067,-9637,-10009,-10109,-9940,-9579,-9136, -8683,-8250,-7782,-7198,-6440,-5516,-4485,-3447,-2491,-1653,-925,-247,452,1198,1994,2791,3542,4193,4745,5226, 5711,6258,6897,7600,8289,8865,9263,9474,9558,9600,9655,9710,9693,9499,9042,8306,7371,6363,5383,4489, 3644,2758,1735,546,-770,-2088,-3296,-4314,-5148,-5871,-6586,-7363,-8199,-9012,-9683,-10110,-10273,-10220,-10047,-9845, -9656,-9441,-9118,-8610,-7893,-7001,-6037,-5091,-4235,-3469,-2759,-2032,-1255,-409,461,1299,2045,2686,3246,3773, 4350,5018,5770,6554,7285,7884,8330,8646,8912,9189,9494,9771,9906,9797,9397,8745,7952,7134,6363,5638, 4873,3972,2877,1606,258,-1038,-2185,-3150,-3992,-4809,-5690,-6653,-7642,-8554,-9263,-9713,-9932,-10000,-10021,-10056, -10079,-10016,-9767,-9266,-8530,-7646,-6713,-5825,-5013,-4253,-3478,-2636,-1717,-749,194,1059,1792,2413,2970,3538, 4166,4878,5637,6380,7033,7559,7974,8333,8717,9154,9599,9979,10173,10106,9778,9263,8673,8093,7543,6960, 6247,5329,4194,2919,1622,421,-635,-1563,-2453,-3395,-4444,-5560,-6649,-7593,-8313,-8807,-9134,-9397,-9664,-9944, -10173,-10244,-10078,-9656,-9022,-8284,-7538,-6833,-6165,-5479,-4717,-3856,-2918,-1963,-1065,-277,392,983,1560,2173, 2859,3607,4370,5085,5707,6239,6724,7229,7797,8428,9047,9556,9851,9897,9732,9449,9134,8821,8475,8013, 7332,6411,5280,4055,2860,1774,798,-130,-1111,-2202,-3399,-4621,-5755,-6704,-7441,-7999,-8476,-8961,-9480,-9987, -10391,-10578,-10501,-10177,-9686,-9130,-8578,-8030,-7457,-6771,-5946,-4985,-3949,-2923,-1981,-1152,-423,265,967,1728, 2540,3357,4131,4818,5403,5925,6448,7028,7685,8375,9020,9511,9798,9882,9831,9727,9624,9499,9277,8867, 8203,7293,6227,5125,4076,3118,2199,1240,163,-1051,-2339,-3596,-4711,-5642,-6399,-7052,-7701,-8386,-9093,-9737, -10212,-10448,-10431,-10219,-9898,-9550,-9201,-8810,-8318,-7662,-6849,-5909,-4930,-3992,-3147,-2394,-1698,-1002,-268,511, 1306,2078,2772,3376,3914,4436,5004,5644,6366,7092,7742,8261,8614,8841,9011,9173,9329,9425,9361,9058, 8496,7723,6845,5959,5116,4303,3444,2461,1325,63,-1231,-2451,-3516,-4418,-5220,-6002,-6821,-7693,-8544,-9285, -9819,-10118,-10208,-10171,-10080,-9971,-9821,-9571,-9147,-8517,-7709,-6796,-5862,-4973,-4155,-3385,-2615,-1796,-932,-38, 837,1646,2357,2984,3571,4175,4841,5583,6365,7116,7770,8298,8709,9060,9404,9761,10077,10283,10278,10023, 9529,8881,8170,7470,6770,6029,5166,4136,2945,1670,415,-737,-1751,-2661,-3544,-4460,-5444,-6447,-7379,-8159, -8730,-9103,-9330,-9494,-9635,-9743,-9761,-9615,-9257,-8685,-7953,-7152,-6341,-5573,-4824,-4066,-3258,-2397,-1491,-600, 241,987,1644,2232,2812,3420,4090,4802,5513,6176,6749,7243,7693,8141,8621,9105,9537,9826,9901,9757, 9434,9008,8542,8056,7514,6848,6001,4964,3801,2588,1428,362,-618,-1573,-2564,-3625,-4728,-5809,-6781,-7580, -8199,-8677,-9082,-9467,-9831,-10132,-10298,-10258,-9993,-9537,-8962,-8330,-7688,-7038,-6356,-5592,-4739,-3815,-2869,-1946, -1092,-330,363,1027,1703,2414,3156,3908,4629,5285,5872,6414,6962,7541,8156,8757,9268,9620,9778,9756, 9613,9403,9152,8833,8392,7773,6944,5941,4848,3742,2694,1699,725,-295,-1393,-2560,-3735,-4845,-5816,-6627, -7309,-7912,-8490,-9060,-9586,-10003,-10238,-10259,-10074,-9734,-9307,-8828,-8317,-7738,-7060,-6268,-5373,-4418,-3457,-2544, -1704,-933,-205,509,1231,1978,2715,3427,4081,4682,5237,5793,6376,7005,7660,8283,8808,9202,9450,9589, 9656,9668,9631,9479,9153,8621,7888,7013,6070,5122,4198,3264,2272,1189,11,-1210,-2408,-3513,-4482,-5336, -6116,-6875,-7630,-8361,-9018,-9530,-9851,-9982,-9954,-9822,-9618,-9354,-9015,-8561,-7962,-7228,-6391,-5510,-4626,-3781, -2983,-2211,-1448,-677,106,881,1636,2337,2985,3588,4180,4793,5446,6131,6822,7464,8016,8462,8815,9109, 9362,9559,9663,9613,9361,8900,8268,7531,6747,5934,5094,4178,3154,2013,792,-442,-1619,-2704,-3697,-4624, -5534,-6454,-7367,-8225,-8970,-9554,-9967,-10227,-10376,-10450,-10459,-10380,-10162,-9777,-9227,-8535,-7749,-6925,-6093,-5270, -4447,-3611,-2760,-1896,-1042,-220,549,1261,1920,2553,3188,3837,4519,5205,5877,6494,7049,7546,8005,8440, 8852,9197,9426,9488,9360,9064,8636,8124,7561,6931,6204,5345,4352,3247,2091,943,-146,-1175,-2168,-3155, -4161,-5179,-6160,-7065,-7832,-8454,-8941,-9327,-9650,-9910,-10080,-10118,-9994,-9681,-9212,-8619,-7956,-7250,-6509,-5734, -4920,-4061,-3176,-2288,-1431,-616,143,857,1535,2205,2880,3565,4255,4938,5590,6214,6804,7382,7961,8535, 9069,9534,9867,10045,10062,9947,9735,9442,9055,8545,7881,7053,6081,5020,3925,2846,1791,746,-313,-1416, -2552,-3682,-4748,-5704,-6536,-7258,-7892,-8479,-9016,-9490,-9841,-10031,-10037,-9869,-9564,-9156,-8673,-8128,-7503,-6792, -5986,-5117,-4220,-3315,-2448,-1628,-846,-93,645,1374,2092,2798,3479,4123,4739,5336,5927,6528,7143,7744, 8308,8780,9133,9369,9490,9529,9483,9350,9087,8662,8054,7280,6389,5437,4458,3481,2485,1442,327,-842, -2033,-3187,-4250,-5212,-6077,-6873,-7637,-8372,-9055,-9643,-10082,-10350,-10442,-10395,-10241,-10007,-9691,-9275,-8733,-8065, -7286,-6439,-5565,-4704,-3864,-3052,-2247,-1453,-662,116,868,1579,2256,2893,3513,4138,4785,5454,6129,6785, 7398,7932,8387,8761,9080,9343,9531,9598,9507,9222,8754,8140,7430,6666,5865,5014,4080,3043,1910,723, -460,-1586,-2624,-3587,-4503,-5403,-6303,-7175,-7976,-8653,-9165,-9518,-9739,-9857,-9907,-9877,-9735,-9450,-8997,-8387, -7656,-6860,-6041,-5221,-4399,-3559,-2699,-1813,-931,-78,721,1465,2152,2819,3477,4147,4837,5534,6220,6867, 7464,8001,8494,8960,9399,9790,10094,10253,10232,10023,9655,9176,8626,8011,7326,6532,5600,4531,3371,2182, 1023,-77,-1113,-2121,-3138,-4172,-5211,-6202,-7087,-7829,-8415,-8877,-9248,-9568,-9826,-9985,-9999,-9830,-9475,-8960, -8350,-7686,-6996,-6278,-5516,-4695,-3820,-2913,-2023,-1179,-404,312,993,1659,2333,3022,3716,4399,5047,5650, 6220,6768,7315,7877,8428,8930,9329,9577,9657,9583,9395,9129,8799,8377,7829,7118,6234,5211,4116,3011, 1946,915,-102,-1157,-2261,-3401,-4528,-5579,-6496,-7270,-7926,-8511,-9058,-9573,-10019,-10343,-10484,-10420,-10176,-9798, -9342,-8840,-8293,-7666,-6940,-6107,-5193,-4249,-3329,-2465,-1658,-908,-164,582,1349,2119,2872,3581,4240,4851, 5448,6053,6692,7355,8001,8582,9047,9359,9533,9607,9600,9537,9396,9123,8671,8016,7181,6228,5237,4247, 3281,2315,1293,194,-995,-2198,-3361,-4412,-5336,-6135,-6871,-7584,-8296,-8975,-9558,-9981,-10203,-10228,-10095,-9867, -9587,-9247,-8825,-8269,-7569,-6733,-5813,-4877,-3978,-3134,-2336,-1559,-765,46,865,1661,2400,3074,3688,4271, 4866,5490,6168,6862,7531,8119,8604,8974,9260,9498,9700,9853,9902,9774,9438,8890,8173,7372,6545,5720, 4870,3951,2917,1768,534,-697,-1853,-2891,-3813,-4670,-5520,-6385,-7258,-8071,-8760,-9261,-9561,-9703,-9742,-9728, -9669,-9528,-9258,-8807,-8174,-7405,-6559,-5711,-4896,-4113,-3335,-2526,-1675,-794,75,902,1648,2317,2936,3548, 4188,4881,5609,6336,7013,7600,8100,8528,8925,9310,9680,9982,10144,10096,9827,9363,8778,8132,7473,6774, 6000,5089,4015,2818,1566,346,-781,-1802,-2758,-3710,-4701,-5731,-6749,-7674,-8435,-9005,-9406,-9700,-9937,-10152, -10303,-10340,-10188,-9818,-9256,-8558,-7814,-7062,-6330,-5585,-4791,-3930,-3002,-2053,-1142,-308,430,1094,1730,2375, 3063,3794,4527,5230,5862,6420,6925,7407,7907,8434,8940,9355,9608,9656,9505,9208,8826,8417,7967,7433, 6753,5883,4839,3686,2515,1400,371,-598,-1567,-2592,-3683,-4800,-5874,-6816,-7581,-8177,-8657,-9089,-9506,-9899, -10205,-10348,-10270,-9969,-9496,-8928,-8321,-7717,-7082,-6385,-5587,-4685,-3720,-2758,-1853,-1040,-307,367,1044,1753, 2501,3260,3998,4680,5287,5840,6386,6957,7578,8224,8840,9346,9685,9831,9827,9727,9584,9405,9142,8735, 8122,7290,6290,5208,4136,3123,2158,1185,149,-984,-2198,-3408,-4525,-5489,-6290,-6968,-7591,-8212,-8842,-9428, -9887,-10146,-10177,-10001,-9687,-9308,-8911,-8477,-7966,-7324,-6530,-5611,-4644,-3685,-2797,-1997,-1254,-525,229,1016, 1830,2622,3354,4001,4583,5131,5704,6332,7018,7712,8345,8854,9210,9418,9537,9608,9660,9658,9530,9207, 8646,7877,6968,6020,5094,4207,3307,2334,1243,30,-1235,-2462,-3570,-4522,-5346,-6103,-6876,-7664,-8453,-9167, -9711,-10037,-10141,-10086,-9946,-9771,-9560,-9274,-8850,-8245,-7465,-6570,-5641,-4740,-3909,-3139,-2385,-1605,-785,69, 910,1703,2403,3025,3595,4168,4791,5481,6212,6932,7575,8100,8504,8824,9112,9401,9663,9840,9851,9632, 9172,8533,7796,7041,6294,5535,4697,3713,2578,1333,68,-1123,-2192,-3135,-4005,-4882,-5799,-6752,-7676,-8475, -9083,-9479,-9702,-9822,-9896,-9950,-9939,-9795,-9462,-8917,-8191,-7370,-6528,-5720,-4953,-4194,-3407,-2559,-1656,-743, 127,914,1598,2215,2808,3427,4101,4832,5574,6276,6889,7405,7853,8273,8703,9155,9566,9859,9952,9814, 9470,8982,8439,7876,7292,6625,5807,4810,3649,2415,1191,61,-962,-1914,-2864,-3866,-4926,-5991,-6988,-7827, -8470,-8933,-9287,-9588,-9875,-10120,-10271,-10237,-9981,-9512,-8888,-8188,-7483,-6797,-6102,-5362,-4538,-3634,-2688,-1756, -886,-118,564,1193,1828,2503,3226,3972,4695,5360,5943,6464,6963,7482,8047,8624,9140,9517,9696,9664, 9481,9209,8899,8555,8135,7567,6799,5829,4722,3571,2457,1425,447,-520,-1552,-2666,-3832,-4971,-5997,-6855, -7543,-8110,-8617,-9122,-9613,-10043,-10326,-10392,-10233,-9885,-9408,-8886,-8352,-7792,-7172,-6445,-5597,-4653,-3680,-2741, -1885,-1116,-410,277,990,1743,2522,3287,3998,4635,5204,5746,6305,6917,7574,8223,8791,9210,9449,9530, 9510,9442,9340,9171,8868,8365,7641,6730,5714,4678,3686,2741,1791,777,-339,-1541,-2770,-3935,-4962,-5833, -6574,-7257,-7931,-8615,-9269,-9825,-10192,-10337,-10271,-10053,-9757,-9418,-9038,-8589,-8019,-7296,-6434,-5497,-4537,-3632, -2798,-2030,-1298,-551,227,1024,1817,2562,3230,3831,4385,4946,5558,6224,6923,7600,8187,8640,8961,9188, 9366,9521,9630,9635,9463,9064,8447,7674,6825,5969,5125,4273,3345,2301,1133,-105,-1330,-2469,-3480,-4365, -5183,-5993,-6824,-7657,-8430,-9062,-9504,-9735,-9807,-9771,-9686,-9557,-9352,-9022,-8527,-7857,-7048,-6174,-5292,-4459, -3674,-2903,-2127,-1314,-470,376,1188,1928,2590,3189,3777,4386,5056,5770,6494,7171,7755,8233,8629,8977, 9320,9643,9892,9999,9904,9584,9079,8445,7762,7062,6332,5523,4584,3498,2297,1054,-155,-1264,-2278,-3217, -4151,-5106,-6090,-7052,-7920,-8622,-9146,-9499,-9740,-9917,-10055,-10124,-10079,-9859,-9439,-8844,-8124,-7351,-6570,-5805, -5047,-4260,-3426,-2544,-1643,-769,47,783,1446,2067,2691,3345,4045,4763,5466,6107,6675,7173,7644,8111, 8584,9029,9387,9589,9588,9394,9060,8629,8155,7633,7025,6284,5379,4322,3170,2005,882,-167,-1157,-2144, -3162,-4225,-5291,-6306,-7198,-7933,-8514,-8979,-9379,-9741,-10050,-10264,-10325,-10188,-9856,-9361,-8764,-8122,-7457,-6769, -6030,-5224,-4348,-3422,-2493,-1605,-788,-42,649,1325,2007,2723,3457,4182,4869,5501,6079,6628,7182,7765, 8355,8903,9345,9639,9759,9727,9584,9376,9102,8743,8240,7565,6712,5714,4646,3574,2537,1535,521,-531, -1645,-2796,-3927,-4982,-5906,-6693,-7374,-7990,-8571,-9118,-9596,-9949,-10125,-10100,-9901,-9571,-9151,-8682,-8161,-7563, -6870,-6072,-5186,-4262,-3338,-2462,-1647,-881,-151,586,1335,2091,2839,3555,4216,4828,5408,5994,6607,7241, 7876,8460,8934,9282,9494,9601,9637,9610,9494,9255,8841,8234,7456,6564,5623,4669,3713,2742,1709,607, -568,-1760,-2911,-3968,-4914,-5766,-6549,-7308,-8043,-8734,-9329,-9770,-10041,-10134,-10084,-9930,-9702,-9397,-9001,-8482, -7834,-7063,-6207,-5315,-4430,-3580,-2758,-1964,-1170,-376,427,1216,1974,2680,3337,3960,4574,5205,5867,6543, 7210,7815,8336,8760,9101,9377,9603,9750,9795,9680,9383,8897,8268,7534,6755,5935,5068,4126,3088,1960, 779,-406,-1541,-2592,-3566,-4490,-5394,-6285,-7149,-7946,-8630,-9163,-9537,-9775,-9906,-9957,-9920,-9780,-9512,-9090, -8517,-7826,-7053,-6240,-5412,-4593,-3774,-2939,-2098,-1243,-401,406,1168,1883,2547,3191,3835,4498,5175,5853, 6507,7110,7648,8133,8575,8975,9331,9608,9756,9744,9554,9205,8731,8172,7543,6834,6033,5113,4080,2959, 1802,653,-450,-1512,-2533,-3543,-4561,-5562,-6514,-7382,-8122,-8734,-9219,-9603,-9909,-10138,-10265,-10257,-10094,-9767, -9291,-8705,-8040,-7324,-6571,-5782,-4954,-4094,-3212,-2326,-1460,-640,131,862,1560,2248,2929,3624,4315,4991, 5639,6257,6839,7399,7941,8463,8937,9324,9586,9699,9668,9506,9240,8884,8432,7858,7150,6302,5340,4302, 3231,2165,1118,71,-987,-2065,-3152,-4216,-5213,-6115,-6904,-7595,-8205,-8747,-9217,-9606,-9868,-9985,-9939,-9736, -9400,-8962,-8439,-7846,-7177,-6435,-5617,-4748,-3857,-2967,-2094,-1264,-468,297,1043,1776,2503,3213,3904,4574, 5215,5834,6447,7057,7663,8243,8772,9217,9550,9766,9870,9870,9782,9584,9254,8771,8135,7355,6467,5516, 4531,3527,2491,1418,298,-853,-2010,-3117,-4156,-5105,-5980,-6783,-7544,-8245,-8883,-9410,-9800,-10037,-10127,-10075, -9918,-9660,-9303,-8839,-8262,-7575,-6799,-5962,-5099,-4234,-3384,-2550,-1732,-927,-136,633,1378,2087,2770,3418, 4053,4686,5322,5959,6592,7200,7758,8249,8662,9002,9263,9446,9535,9496,9310,8956,8447,7811,7078,6279, 5429,4509,3523,2454,1328,170,-976,-2073,-3107,-4083,-5010,-5913,-6783,-7596,-8324,-8929,-9396,-9727,-9931,-10033, -10041,-9944,-9724,-9367,-8869,-8240,-7523,-6745,-5937,-5114,-4273,-3424,-2563,-1700,-862,-46,727,1459,2162,2839, 3509,4181,4859,5533,6189,6819,7411,7958,8456,8921,9327,9664,9898,9992,9930,9707,9342,8868,8305,7656, 6919,6071,5114,4058,2938,1796,674,-405,-1456,-2490,-3513,-4530,-5516,-6437,-7255,-7953,-8524,-8990,-9372,-9666, -9871,-9960,-9897,-9672,-9292,-8787,-8190,-7529,-6824,-6072,-5271,-4421,-3542,-2656,-1797,-972,-193,537,1245,1939, 2629,3317,3994,4655,5289,5893,6472,7033,7587,8125,8621,9046,9367,9547,9583,9491,9283,8984,8588,8080, 7446,6667,5747,4736,3666,2590,1522,467,-595,-1681,-2791,-3894,-4951,-5933,-6799,-7554,-8211,-8801,-9336,-9795, -10160,-10380,-10432,-10316,-10049,-9668,-9207,-8677,-8073,-7386,-6610,-5757,-4859,-3952,-3074,-2238,-1441,-674,82,832, 1581,2313,3018,3689,4324,4937,5547,6167,6798,7424,8018,8532,8945,9243,9423,9510,9508,9428,9229,8889, 8385,7711,6899,5999,5050,4085,3109,2098,1036,-83,-1240,-2390,-3479,-4474,-5370,-6182,-6936,-7656,-8337,-8946, -9434,-9763,-9919,-9918,-9791,-9569,-9274,-8891,-8405,-7788,-7053,-6223,-5342,-4457,-3596,-2768,-1964,-1164,-359,453, 1241,2001,2710,3371,3999,4614,5248,5901,6567,7225,7843,8385,8836,9196,9480,9713,9879,9952,9888,9660, 9239,8652,7939,7153,6325,5461,4545,3544,2451,1281,77,-1101,-2209,-3230,-4172,-5074,-5956,-6833,-7667,-8410, -9015,-9456,-9744,-9890,-9952,-9940,-9840,-9630,-9274,-8758,-8094,-7335,-6529,-5714,-4911,-4116,-3310,-2480,-1625,-780, 43,810,1512,2165,2799,3430,4088,4773,5462,6133,6751,7302,7789,8227,8640,9018,9341,9563,9630,9517, 9220,8772,8222,7612,6944,6208,5364,4397,3313,2152,967,-171,-1245,-2256,-3234,-4212,-5201,-6182,-7109,-7926, -8595,-9104,-9489,-9788,-10022,-10187,-10262,-10187,-9931,-9497,-8915,-8239,-7522,-6786,-6039,-5260,-4420,-3534,-2615,-1709, -848,-54,674,1359,2036,2729,3441,4167,4880,5554,6171,6733,7269,7792,8321,8830,9276,9614,9792,9791, 9631,9349,8995,8571,8069,7451,6681,5753,4700,3582,2460,1381,346,-664,-1694,-2762,-3855,-4932,-5926,-6795, -7518,-8117,-8625,-9087,-9509,-9854,-10077,-10130,-9985,-9656,-9197,-8664,-8089,-7476,-6807,-6063,-5231,-4324,-3390,-2476, -1624,-837,-106,598,1312,2043,2787,3526,4219,4866,5458,6023,6589,7176,7784,8379,8904,9306,9559,9656, 9640,9536,9369,9131,8778,8260,7560,6685,5700,4665,3638,2641,1649,625,-459,-1611,-2783,-3918,-4952,-5853, -6629,-7326,-7976,-8611,-9207,-9708,-10064,-10226,-10189,-10004,-9700,-9343,-8929,-8450,-7871,-7166,-6340,-5435,-4509,-3607, -2764,-1980,-1223,-464,315,1109,1897,2649,3342,3973,4565,5154,5770,6429,7101,7753,8323,8781,9102,9317, 9456,9549,9577,9511,9290,8874,8259,7481,6610,5708,4803,3894,2941,1904,769,-434,-1643,-2788,-3827,-4742, -5576,-6375,-7166,-7954,-8688,-9306,-9755,-10015,-10096,-10060,-9941,-9770,-9531,-9178,-8680,-8022,-7227,-6357,-5468,-4612, -3797,-3008,-2213,-1395,-548,299,1116,1875,2557,3183,3785,4403,5064,5763,6468,7131,7712,8193,8584,8913, 9208,9474,9674,9751,9649,9337,8838,8199,7488,6751,5983,5164,4245,3200,2043,828,-372,-1494,-2518,-3463, -4368,-5277,-6204,-7116,-7953,-8650,-9171,-9515,-9732,-9864,-9940,-9957,-9874,-9639,-9223,-8632,-7911,-7121,-6322,-5534, -4767,-3975,-3150,-2274,-1380,-498,328,1080,1760,2397,3032,3693,4397,5124,5836,6497,7080,7585,8051,8494, 8936,9352,9688,9880,9883,9682,9322,8853,8329,7760,7129,6385,5498,4458,3311,2128,976,-103,-1116,-2092, -3078,-4106,-5152,-6162,-7069,-7825,-8419,-8876,-9243,-9570,-9845,-10044,-10112,-9991,-9674,-9180,-8575,-7911,-7235,-6541, -5815,-5029,-4171,-3255,-2324,-1424,-598,154,842,1511,2189,2902,3637,4371,5067,5702,6272,6799,7320,7859, 8412,8932,9357,9629,9724,9646,9449,9169,8839,8440,7930,7260,6415,5411,4321,3209,2136,1114,114,-907, -1976,-3102,-4227,-5293,-6239,-7033,-7696,-8267,-8796,-9300,-9749,-10098,-10282,-10266,-10049,-9691,-9223,-8721,-8176,-7586, -6911,-6131,-5254,-4323,-3384,-2491,-1670,-912,-193,523,1266,2031,2791,3525,4202,4819,5390,5955,6546,7170, 7800,8393,8881,9226,9419,9490,9476,9408,9274,9042,8653,8072,7299,6392,5407,4419,3448,2492,1500,439, -700,-1885,-3054,-4141,-5103,-5936,-6679,-7382,-8066,-8731,-9326,-9786,-10067,-10150,-10063,-9853,-9567,-9232,-8834,-8335, -7707,-6948,-6083,-5169,-4255,-3393,-2581,-1810,-1045,-270,535,1334,2116,2841,3498,4104,4692,5295,5938,6616, 7293,7916,8435,8835,9127,9341,9505,9620,9658,9558,9272,8783,8116,7328,6486,5630,4760,3850,2858,1758, 579,-632,-1811,-2893,-3869,-4754,-5598,-6432,-7261,-8060,-8766,-9316,-9691,-9890,-9953,-9923,-9830,-9677,-9420,-9020, -8460,-7752,-6941,-6084,-5233,-4411,-3620,-2828,-2014,-1181,-327,508,1289,2008,2658,3273,3887,4527,5208,5909, 6593,7221,7759,8208,8600,8952,9279,9552,9728,9751,9577,9207,8683,8064,7394,6685,5916,5061,4078,2973, 1794,604,-542,-1607,-2596,-3541,-4485,-5441,-6390,-7281,-8062,-8688,-9151,-9472,-9700,-9863,-9963,-9971,-9842,-9545, -9070,-8446,-7728,-6967,-6200,-5432,-4651,-3834,-2979,-2087,-1196,-339,450,1174,1844,2492,3147,3832,4545,5258, 5932,6554,7103,7602,8085,8553,9006,9409,9691,9814,9752,9522,9165,8734,8242,7672,7007,6197,5242,4168, 3030,1890,798,-242,-1257,-2274,-3312,-4370,-5406,-6372,-7206,-7898,-8456,-8920,-9318,-9666,-9940,-10092,-10078,-9883, -9509,-9009,-8417,-7786,-7119,-6415,-5652,-4827,-3939,-3029,-2126,-1269,-482,250,946,1632,2331,3050,3769,4471, 5130,5736,6299,6848,7406,7968,8515,8999,9366,9582,9638,9571,9405,9160,8842,8414,7842,7104,6207,5208, 4158,3110,2075,1058,22,-1054,-2170,-3297,-4385,-5379,-6256,-7016,-7684,-8292,-8853,-9366,-9779,-10059,-10159,-10080, -9847,-9498,-9069,-8585,-8025,-7390,-6663,-5838,-4951,-4041,-3142,-2287,-1489,-725,16,759,1517,2270,3004,3699, 4347,4958,5551,6148,6768,7398,8003,8542,8972,9277,9470,9559,9578,9520,9359,9055,8579,7937,7143,6252, 5318,4367,3400,2400,1340,220,-943,-2108,-3214,-4235,-5152,-5988,-6774,-7524,-8231,-8875,-9409,-9788,-10003,-10060, -9984,-9808,-9551,-9210,-8768,-8207,-7527,-6741,-5886,-5005,-4135,-3290,-2478,-1678,-885,-81,710,1489,2229,2926, 3575,4195,4813,5450,6101,6760,7387,7954,8427,8819,9130,9375,9556,9650,9625,9443,9086,8559,7906,7164, 6365,5520,4619,3644,2581,1447,282,-878,-1984,-3018,-3985,-4905,-5803,-6669,-7496,-8239,-8863,-9342,-9673,-9877, -9970,-9980,-9889,-9692,-9362,-8889,-8286,-7574,-6795,-5978,-5157,-4336,-3508,-2677,-1839,-998,-169,623,1375,2075, 2739,3388,4038,4704,5381,6052,6691,7282,7809,8284,8706,9090,9413,9642,9740,9681,9457,9089,8598,8021, 7369,6631,5799,4858,3822,2710,1573,446,-644,-1691,-2715,-3714,-4709,-5677,-6589,-7410,-8111,-8687,-9143,-9505, -9776,-9954,-10028,-9969,-9759,-9398,-8900,-8297,-7622,-6896,-6134,-5338,-4509,-3651,-2776,-1906,-1056,-242,523,1249, 1946,2630,3314,3999,4685,5352,5991,6594,7159,7700,8216,8699,9121,9452,9656,9720,9636,9434,9122,8708, 8196,7567,6810,5931,4947,3895,2823,1740,670,-397,-1471,-2550,-3623,-4660,-5629,-6509,-7288,-7964,-8557,-9074, -9508,-9841,-10056,-10122,-10039,-9805,-9449,-8989,-8444,-7823,-7132,-6375,-5558,-4699,-3819,-2941,-2081,-1261,-472,289, 1026,1754,2471,3174,3861,4526,5168,5790,6397,6991,7576,8128,8624,9033,9336,9528,9601,9569,9434,9186, 8810,8294,7638,6854,5968,5019,4031,3015,1967,890,-218,-1341,-2453,-3528,-4535,-5462,-6316,-7101,-7825,-8480, -9051,-9514,-9850,-10040,-10092,-10007,-9806,-9500,-9092,-8582,-7968,-7261,-6480,-5647,-4784,-3912,-3054,-2210,-1388,-580, 207,977,1719,2444,3142,3818,4468,5117,5762,6401,7026,7620,8164,8645,9043,9355,9580,9712,9736,9635, 9395,8999,8460,7800,7046,6217,5323,4364,3350,2270,1153,14,-1108,-2193,-3228,-4211,-5144,-6029,-6871,-7644, -8323,-8895,-9341,-9656,-9855,-9939,-9913,-9771,-9509,-9116,-8600,-7978,-7268,-6499,-5688,-4860,-4011,-3159,-2310,-1467, -645,150,919,1650,2357,3046,3719,4384,5044,5696,6337,6943,7519,8045,8526,8944,9298,9566,9727,9753, 9638,9374,8983,8481,7874,7173,6383,5490,4508,3450,2349,1231,117,-968,-2027,-3065,-4083,-5067,-6007,-6871, -7640,-8305,-8854,-9302,-9658,-9908,-10053,-10069,-9948,-9676,-9274,-8761,-8155,-7483,-6748,-5971,-5147,-4293,-3416,-2546, -1696,-879,-92,664,1399,2115,2820,3513,4194,4856,5499,6118,6718,7295,7846,8364,8823,9198,9469,9615, 9630,9522,9296,8962,8518,7956,7268,6456,5540,4542,3494,2435,1368,297,-782,-1870,-2956,-4017,-5024,-5953, -6786,-7528,-8184,-8765,-9268,-9679,-9974,-10128,-10127,-9980,-9702,-9319,-8843,-8286,-7648,-6926,-6129,-5276,-4399,-3519, -2666,-1830,-1027,-245,524,1285,2023,2740,3433,4096,4739,5368,5992,6616,7225,7813,8346,8800,9162,9414, 9565,9617,9565,9410,9124,8697,8119,7398,6575,5668,4719,3734,2716,1664,570,-561,-1695,-2799,-3846,-4815, -5704,-6527,-7293,-8014,-8657,-9204,-9626,-9905,-10030,-10026,-9897,-9680,-9362,-8939,-8405,-7758,-7015,-6195,-5342,-4488, -3642,-2811,-1986,-1171,-356,445,1219,1958,2657,3322,3968,4611,5259,5916,6568,7193,7766,8270,8701,9054, 9331,9537,9653,9656,9512,9211,8751,8150,7445,6666,5828,4933,3972,2936,1831,684,-476,-1601,-2665,-3661, -4609,-5517,-6399,-7236,-8004,-8664,-9192,-9578,-9832,-9973,-10017,-9964,-9810,-9522,-9096,-8530,-7852,-7102,-6307,-5500, -4686,-3865,-3020,-2167,-1312,-476,328,1079,1784,2458,3121,3784,4462,5141,5809,6451,7043,7578,8066,8511, 8910,9257,9518,9657,9648,9471,9143,8692,8144,7517,6817,6024,5127,4120,3032,1898,765,-341,-1400,-2420, -3421,-4416,-5395,-6334,-7192,-7939,-8550,-9040,-9420,-9716,-9931,-10051,-10049,-9896,-9577,-9111,-8530,-7870,-7173,-6438, -5669,-4856,-4005,-3120,-2228,-1364,-545,220,940,1638,2330,3032,3744,4444,5120,5763,6364,6929,7473,8001, 8511,8975,9352,9603,9712,9663,9486,9198,8823,8365,7799,7102,6272,5315,4268,3181,2094,1035,-10,-1056, -2115,-3192,-4259,-5278,-6209,-7017,-7711,-8306,-8824,-9280,-9670,-9951,-10098,-10070,-9872,-9531,-9082,-8557,-7980,-7342, -6639,-5852,-4998,-4101,-3194,-2322,-1496,-720,22,754,1490,2228,2962,3676,4346,4975,5571,6154,6743,7337, 7923,8465,8917,9253,9454,9530,9505,9393,9198,8898,8461,7868,7115,6227,5259,4257,3245,2240,1212,147, -966,-2111,-3240,-4309,-5277,-6139,-6903,-7607,-8263,-8876,-9418,-9837,-10099,-10190,-10113,-9909,-9613,-9244,-8803,-8271, -7628,-6877,-6034,-5147,-4256,-3394,-2574,-1783,-1006,-230,559,1346,2110,2827,3495,4124,4734,5352,5984,6642, 7286,7882,8387,8793,9096,9306,9445,9516,9499,9357,9054,8574,7928,7154,6307,5428,4525,3587,2584,1507, 364,-809,-1962,-3039,-4028,-4928,-5773,-6584,-7375,-8120,-8783,-9308,-9675,-9877,-9938,-9895,-9770,-9566,-9269,-8841, -8271,-7571,-6771,-5927,-5072,-4240,-3427,-2621,-1801,-971,-127,693,1476,2199,2866,3504,4135,4780,5457,6141, 6810,7424,7962,8420,8803,9137,9430,9656,9786,9773,9584,9211,8686,8054,7349,6600,5802,4922,3940,2855, 1698,518,-631,-1707,-2715,-3675,-4602,-5530,-6443,-7303,-8070,-8687,-9155,-9477,-9690,-9827,-9892,-9866,-9715,-9405, -8934,-8320,-7605,-6846,-6078,-5301,-4518,-3701,-2856,-1980,-1105,-263,524,1252,1926,2583,3240,3920,4620,5324, 5993,6609,7161,7663,8127,8570,8990,9351,9604,9702,9627,9384,9007,8542,8009,7410,6718,5903,4957,3896, 2765,1622,516,-541,-1557,-2564,-3577,-4605,-5613,-6561,-7389,-8082,-8635,-9081,-9449,-9760,-9997,-10129,-10109,-9908, -9534,-9024,-8421,-7774,-7092,-6384,-5623,-4799,-3916,-3004,-2098,-1234,-438,308,1013,1709,2419,3148,3879,4594, 5261,5877,6445,6990,7537,8083,8607,9074,9420,9618,9661,9561,9356,9075,8718,8265,7683,6944,6052,5048, 3986,2918,1870,851,-174,-1226,-2316,-3425,-4502,-5496,-6378,-7129,-7776,-8352,-8880,-9358,-9754,-10017,-10113,-10029, -9775,-9403,-8948,-8438,-7874,-7239,-6510,-5695,-4806,-3886,-2984,-2128,-1323,-563,174,917,1679,2437,3184,3889, 4541,5150,5738,6322,6926,7544,8140,8667,9084,9366,9527,9575,9547,9448,9263,8948,8470,7817,7012,6100, 5134,4161,3189,2198,1160,59,-1084,-2247,-3366,-4392,-5308,-6125,-6877,-7586,-8264,-8892,-9421,-9803,-10008,-10045, -9940,-9731,-9446,-9090,-8655,-8101,-7428,-6643,-5780,-4888,-4012,-3170,-2366,-1581,-795,4,811,1602,2362,3065, 3714,4330,4941,5572,6228,6893,7528,8099,8565,8926,9199,9404,9546,9616,9581,9396,9029,8486,7797,7015, 6176,5318,4426,3470,2431,1310,136,-1042,-2164,-3205,-4156,-5041,-5893,-6732,-7540,-8286,-8918,-9398,-9714,-9876, -9925,-9894,-9786,-9584,-9265,-8803,-8197,-7468,-6661,-5825,-4995,-4178,-3376,-2562,-1729,-881,-29,785,1549,2253, 2912,3544,4189,4852,5540,6226,6877,7462,7969,8402,8779,9125,9417,9643,9733,9668,9422,9009,8467,7839, 7157,6419,5602,4687,3666,2546,1383,226,-882,-1922,-2909,-3869,-4826,-5777,-6692,-7533,-8244,-8811,-9236,-9541, -9760,-9909,-9971,-9922,-9728,-9365,-8849,-8213,-7498,-6754,-5996,-5221,-4425,-3586,-2713,-1830,-956,-129,641,1355, 2028,2695,3377,4073,4779,5473,6121,6713,7250,7753,8230,8690,9111,9446,9653,9705,9585,9320,8954,8503, 7977,7366,6636,5773,4785,3708,2589,1482,407,-632,-1654,-2686,-3736,-4775,-5768,-6668,-7450,-8100,-8634,-9089, -9477,-9791,-10012,-10098,-10019,-9770,-9366,-8855,-8263,-7631,-6955,-6224,-5435,-4586,-3695,-2789,-1902,-1071,-288,449, 1157,1865,2590,3314,4033,4720,5363,5964,6534,7091,7652,8204,8715,9137,9440,9601,9620,9523,9337,9068, 8699,8211,7573,6789,5874,4871,3835,2795,1764,734,-327,-1416,-2529,-3629,-4670,-5619,-6458,-7192,-7852,-8450, -8991,-9457,-9812,-10017,-10059,-9935,-9673,-9308,-8865,-8355,-7772,-7101,-6341,-5502,-4616,-3715,-2841,-2007,-1214,-450, 303,1060,1816,2564,3284,3966,4606,5217,5814,6425,7038,7648,8214,8707,9082,9346,9503,9569,9554,9448, 9227,8861,8329,7640,6832,5939,5008,4050,3064,2043,961,-168,-1320,-2452,-3521,-4511,-5405,-6236,-7011,-7747, -8425,-9020,-9492,-9817,-9985,-10006,-9906,-9714,-9428,-9050,-8567,-7973,-7262,-6464,-5613,-4751,-3895,-3064,-2255,-1456, -655,146,935,1700,2426,3111,3756,4385,5014,5655,6312,6951,7548,8083,8528,8890,9174,9397,9544,9588, 9502,9262,8852,8296,7619,6866,6053,5190,4257,3255,2175,1037,-115,-1251,-2330,-3346,-4302,-5217,-6100,-6949, -7739,-8434,-9005,-9434,-9731,-9900,-9967,-9944,-9815,-9573,-9198,-8685,-8055,-7328,-6544,-5737,-4918,-4100,-3274,-2435, -1597,-759,65,847,1584,2281,2949,3605,4268,4939,5616,6269,6888,7454,7959,8416,8821,9170,9456,9630, 9672,9558,9290,8886,8371,7770,7086,6318,5451,4484,3430,2322,1193,83,-997,-2041,-3056,-4054,-5036,-5975, -6847,-7625,-8291,-8830,-9262,-9590,-9828,-9969,-9994,-9882,-9624,-9227,-8703,-8083,-7401,-6665,-5897,-5093,-4261,-3406, -2534,-1672,-832,-34,727,1447,2143,2837,3525,4217,4899,5559,6187,6778,7335,7858,8357,8809,9193,9474, 9627,9644,9524,9280,8931,8480,7928,7253,6462,5560,4567,3512,2439,1362,291,-778,-1849,-2912,-3966,-4974, -5910,-6759,-7505,-8161,-8726,-9204,-9597,-9884,-10048,-10065,-9939,-9671,-9280,-8792,-8218,-7577,-6869,-6099,-5274,-4418, -3542,-2667,-1815,-997,-214,541,1281,2007,2722,3426,4114,4782,5418,6037,6635,7220,7784,8309,8772,9151, 9417,9570,9603,9534,9350,9054,8635,8079,7389,6586,5686,4730,3727,2694,1643,565,-541,-1646,-2737,-3784, -4770,-5680,-6512,-7272,-7958,-8574,-9097,-9515,-9806,-9954,-9969,-9850,-9615,-9274,-8830,-8292,-7661,-6948,-6164,-5330, -4474,-3611,-2757,-1921,-1107,-310,466,1228,1967,2688,3384,4058,4713,5352,5982,6609,7216,7788,8307,8756, 9120,9396,9572,9650,9620,9468,9170,8736,8168,7481,6699,5840,4919,3938,2904,1822,710,-415,-1526,-2607, -3633,-4609,-5527,-6391,-7201,-7932,-8575,-9107,-9520,-9804,-9973,-10016,-9947,-9761,-9456,-9029,-8494,-7857,-7144,-6369, -5554,-4715,-3865,-3019,-2177,-1347,-535,252,1021,1755,2471,3159,3832,4497,5152,5798,6429,7032,7595,8107, 8559,8947,9252,9465,9571,9552,9395,9097,8676,8132,7490,6748,5920,5007,4019,2966,1872,768,-334,-1419, -2475,-3504,-4496,-5449,-6344,-7167,-7896,-8530,-9053,-9470,-9784,-9987,-10074,-10034,-9861,-9555,-9131,-8597,-7975,-7283, -6532,-5730,-4894,-4036,-3175,-2315,-1475,-661,130,894,1636,2361,3064,3751,4425,5087,5732,6357,6957,7525, 8058,8540,8955,9282,9504,9609,9590,9447,9181,8802,8307,7692,6966,6126,5200,4205,3169,2104,1028,-59, -1142,-2222,-3284,-4302,-5273,-6163,-6972,-7698,-8333,-8890,-9347,-9703,-9938,-10037,-10002,-9828,-9537,-9138,-8641,-8050, -7381,-6637,-5834,-4986,-4126,-3261,-2414,-1584,-771,19,791,1550,2281,2988,3674,4340,4994,5630,6258,6872, 7458,8005,8494,8908,9229,9455,9568,9582,9479,9260,8905,8418,7799,7064,6225,5321,4356,3354,2313,1236, 138,-978,-2084,-3149,-4162,-5106,-5984,-6801,-7549,-8229,-8825,-9310,-9673,-9902,-9993,-9969,-9821,-9567,-9210,-8741, -8159,-7484,-6727,-5919,-5083,-4234,-3389,-2551,-1715,-887,-76,713,1477,2205,2903,3579,4245,4903,5561,6205, 6834,7429,7972,8450,8858,9190,9443,9601,9657,9585,9378,9020,8522,7906,7192,6401,5535,4604,3608,2552, 1444,316,-804,-1892,-2937,-3927,-4872,-5778,-6637,-7433,-8146,-8746,-9223,-9577,-9808,-9934,-9953,-9858,-9650,-9305, -8835,-8249,-7570,-6823,-6043,-5235,-4412,-3570,-2717,-1863,-1018,-195,586,1331,2044,2733,3418,4095,4775,5451, 6096,6709,7281,7804,8285,8713,9085,9382,9569,9633,9556,9330,8974,8495,7928,7267,6518,5669,4726,3698, 2612,1501,395,-693,-1749,-2780,-3790,-4781,-5731,-6622,-7424,-8113,-8690,-9164,-9532,-9806,-9987,-10053,-9986,-9769, -9407,-8922,-8340,-7685,-6983,-6233,-5440,-4605,-3741,-2856,-1984,-1139,-335,430,1162,1881,2602,3312,4017,4704, 5363,5991,6584,7153,7698,8220,8692,9107,9414,9598,9648,9561,9360,9055,8645,8134,7508,6757,5883,4915, 3880,2820,1751,695,-361,-1426,-2491,-3554,-4582,-5542,-6411,-7181,-7845,-8428,-8937,-9366,-9700,-9912,-9976,-9886, -9649,-9289,-8831,-8301,-7700,-7027,-6282,-5470,-4600,-3715,-2833,-1984,-1169,-390,372,1125,1874,2615,3339,4032, 4689,5318,5927,6523,7123,7706,8258,8745,9134,9416,9578,9632,9585,9443,9199,8832,8320,7663,6876,5986, 5027,4040,3030,2003,945,-149,-1267,-2386,-3476,-4488,-5414,-6255,-7017,-7724,-8367,-8947,-9425,-9772,-9963,-10006, -9908,-9699,-9393,-9001,-8525,-7941,-7260,-6484,-5645,-4778,-3915,-3070,-2256,-1457,-660,131,920,1688,2427,3128, 3785,4415,5044,5675,6312,6945,7547,8092,8548,8910,9187,9378,9495,9520,9432,9204,8824,8281,7607,6831, 5991,5101,4173,3193,2149,1044,-97,-1240,-2346,-3390,-4353,-5249,-6101,-6918,-7687,-8386,-8977,-9436,-9744,-9909, -9952,-9902,-9758,-9517,-9160,-8673,-8062,-7343,-6549,-5724,-4893,-4071,-3251,-2428,-1595,-754,75,877,1628,2336, 3009,3660,4314,4975,5653,6321,6952,7529,8032,8471,8846,9172,9430,9611,9667,9572,9319,8904,8365,7728, 7025,6254,5413,4482,3464,2364,1222,79,-1024,-2075,-3073,-4039,-4978,-5900,-6782,-7585,-8277,-8829,-9254,-9556, -9757,-9873,-9895,-9810,-9585,-9207,-8689,-8057,-7349,-6603,-5832,-5047,-4242,-3404,-2540,-1671,-813,2,766,1485, 2167,2841,3522,4213,4907,5587,6224,6815,7349,7844,8312,8747,9130,9432,9607,9635,9504,9228,8845,8371, 7812,7171,6421,5552,4571,3503,2389,1281,200,-848,-1878,-2900,-3926,-4938,-5909,-6793,-7564,-8202,-8731,-9169, -9530,-9816,-10001,-10054,-9957,-9692,-9282,-8763,-8163,-7523,-6830,-6094,-5302,-4458,-3569,-2673,-1801,-973,-196,542, 1258,1973,2695,3419,4130,4815,5454,6059,6628,7181,7730,8264,8746,9151,9431,9573,9575,9457,9246,8945, 8549,8039,7387,6597,5683,4680,3641,2594,1558,522,-530,-1609,-2705,-3786,-4815,-5753,-6583,-7307,-7947,-8519, -9031,-9468,-9800,-9980,-10007,-9865,-9588,-9206,-8744,-8218,-7629,-6949,-6188,-5348,-4467,-3570,-2698,-1863,-1076,-312, 442,1197,1958,2709,3427,4109,4749,5353,5952,6552,7161,7757,8307,8778,9136,9379,9512,9547,9504,9367, 9123,8738,8195,7495,6673,5761,4814,3844,2859,1839,767,-353,-1494,-2622,-3689,-4671,-5558,-6368,-7118,-7828, -8481,-9059,-9517,-9825,-9975,-9970,-9842,-9617,-9316,-8927,-8440,-7839,-7130,-6328,-5472,-4604,-3756,-2924,-2126,-1336, -537,266,1060,1835,2559,3247,3884,4512,5140,5781,6438,7077,7671,8189,8619,8957,9213,9400,9519,9542, 9436,9180,8752,8171,7469,6691,5856,4986,4057,3063,1992,860,-300,-1439,-2522,-3526,-4469,-5358,-6215,-7042, -7820,-8506,-9074,-9486,-9757,-9896,-9933,-9877,-9735,-9488,-9109,-8595,-7951,-7216,-6414,-5594,-4779,-3971,-3156,-2326, -1481,-638,195,986,1732,2429,3086,3742,4405,5083,5767,6431,7048,7601,8082,8504,8879,9205,9467,9626, 9652,9515,9210,8769,8216,7583,6880,6111,5252,4291,3236,2116,975,-152,-1231,-2258,-3248,-4217,-5175,-6107, -6979,-7759,-8418,-8933,-9324,-9616,-9819,-9941,-9960,-9848,-9591,-9179,-8632,-7987,-7284,-6547,-5786,-4999,-4183,-3329, -2452,-1578,-725,79,834,1552,2238,2925,3624,4328,5023,5693,6319,6895,7423,7922,8394,8832,9207,9481, 9619,9607,9440,9148,8759,8284,7723,7058,6277,5368,4361,3282,2186,1099,38,-1004,-2044,-3085,-4123,-5136, -6084,-6931,-7665,-8280,-8800,-9242,-9606,-9887,-10052,-10070,-9933,-9637,-9214,-8694,-8102,-7461,-6769,-6017,-5207,-4343, -3455,-2558,-1699,-879,-111,633,1363,2095,2827,3556,4263,4938,5569,6171,6745,7311,7865,8391,8857,9226, 9468,9574,9557,9432,9212,8903,8483,7932,7238,6412,5479,4478,3454,2420,1389,344,-731,-1829,-2924,-3992, -4989,-5895,-6701,-7415,-8061,-8644,-9158,-9580,-9877,-10024,-10015,-9855,-9572,-9199,-8742,-8211,-7600,-6899,-6120,-5271, -4384,-3500,-2640,-1818,-1022,-241,526,1297,2063,2810,3523,4202,4841,5457,6071,6685,7295,7884,8410,8850, 9182,9406,9528,9562,9511,9353,9067,8634,8047,7324,6493,5597,4660,3692,2688,1644,547,-581,-1715,-2815, -3850,-4803,-5683,-6493,-7259,-7972,-8614,-9161,-9580,-9846,-9971,-9959,-9837,-9620,-9312,-8905,-8384,-7753,-7020,-6217, -5373,-4519,-3673,-2848,-2034,-1221,-409,400,1192,1954,2675,3355,4008,4652,5298,5949,6597,7220,7787,8285, 8698,9032,9289,9478,9577,9565,9417,9106,8645,8051,7357,6585,5757,4867,3914,2882,1786,655,-481,-1588, -2642,-3637,-4582,-5486,-6359,-7181,-7927,-8574,-9095,-9481,-9742,-9883,-9927,-9872,-9705,-9417,-9001,-8459,-7805,-7068, -6289,-5480,-4665,-3838,-3007,-2164,-1313,-477,340,1113,1848,2547,3221,3893,4567,5243,5913,6555,7153,7692, 8177,8608,8988,9306,9535,9650,9626,9453,9136,8689,8150,7513,6794,5989,5090,4099,3033,1925,808,-285, -1353,-2392,-3404,-4392,-5350,-6263,-7099,-7835,-8456,-8962,-9362,-9664,-9864,-9969,-9946,-9790,-9490,-9060,-8515,-7882, -7185,-6449,-5674,-4862,-4022,-3162,-2294,-1435,-604,192,943,1671,2374,3078,3774,4466,5145,5798,6412,6992, 7533,8045,8514,8935,9273,9507,9604,9569,9403,9120,8733,8242,7649,6940,6115,5188,4186,3135,2062,990, -77,-1142,-2208,-3262,-4287,-5263,-6167,-6981,-7694,-8314,-8845,-9291,-9641,-9885,-9996,-9970,-9800,-9497,-9079,-8566, -7972,-7314,-6590,-5807,-4979,-4117,-3238,-2373,-1525,-710,70,831,1571,2304,3028,3737,4425,5086,5722,6329, 6922,7496,8039,8534,8963,9293,9511,9610,9604,9480,9254,8905,8436,7837,7115,6281,5362,4388,3377,2336, 1274,196,-901,-1994,-3068,-4101,-5057,-5943,-6751,-7485,-8145,-8721,-9209,-9583,-9831,-9939,-9911,-9759,-9486,-9112, -8640,-8077,-7429,-6699,-5910,-5074,-4217,-3358,-2508,-1680,-874,-87,688,1443,2188,2906,3600,4270,4918,5552, 6171,6784,7377,7925,8414,8828,9152,9381,9515,9542,9461,9254,8919,8438,7834,7116,6308,5425,4483,3487, 2449,1364,258,-854,-1954,-3014,-4022,-4976,-5872,-6708,-7478,-8174,-8770,-9261,-9631,-9876,-9995,-9995,-9879,-9649, -9302,-8842,-8283,-7627,-6898,-6109,-5286,-4442,-3593,-2743,-1915,-1088,-281,508,1273,2014,2727,3416,4086,4747, 5402,6040,6662,7253,7800,8289,8711,9060,9327,9498,9556,9492,9295,8963,8503,7926,7250,6480,5628,4695, 3696,2650,1561,464,-633,-1714,-2759,-3773,-4741,-5660,-6517,-7302,-7996,-8597,-9084,-9464,-9730,-9885,-9917,-9828, -9610,-9271,-8815,-8262,-7616,-6904,-6129,-5319,-4483,-3631,-2780,-1935,-1106,-291,493,1258,1995,2707,3407,4083, 4752,5405,6048,6662,7252,7799,8299,8741,9108,9394,9571,9636,9576,9394,9083,8656,8107,7452,6693,5834, 4895,3894,2851,1776,688,-402,-1484,-2547,-3586,-4575,-5512,-6380,-7166,-7868,-8482,-8994,-9412,-9716,-9894,-9946, -9871,-9671,-9347,-8917,-8386,-7768,-7074,-6315,-5507,-4673,-3827,-2972,-2127,-1302,-488,296,1064,1805,2523,3219, 3902,4568,5225,5858,6480,7075,7634,8149,8602,8979,9274,9462,9544,9509,9355,9082,8679,8149,7500,6743, 5899,4979,4001,2980,1924,837,-258,-1355,-2434,-3471,-4463,-5390,-6252,-7046,-7773,-8407,-8946,-9377,-9688,-9875, -9933,-9870,-9689,-9394,-8986,-8473,-7863,-7166,-6407,-5599,-4769,-3922,-3077,-2227,-1393,-574,231,1008,1754,2475, 3173,3856,4527,5186,5834,6468,7074,7639,8153,8608,8994,9298,9512,9628,9624,9497,9230,8832,8309,7672, 6938,6121,5232,4269,3250,2180,1077,-31,-1133,-2199,-3228,-4217,-5154,-6044,-6872,-7625,-8283,-8834,-9268,-9590, -9793,-9884,-9861,-9720,-9458,-9067,-8557,-7954,-7269,-6527,-5744,-4934,-4098,-3252,-2399,-1553,-727,77,841,1586, 2298,2996,3689,4370,5039,5691,6316,6911,7465,7980,8443,8847,9181,9422,9549,9552,9423,9157,8771,8275, 7673,6975,6178,5291,4321,3284,2209,1114,20,-1055,-2112,-3146,-4157,-5127,-6046,-6888,-7643,-8294,-8837,-9282, -9631,-9874,-10008,-10013,-9884,-9624,-9227,-8725,-8134,-7479,-6766,-5997,-5184,-4337,-3468,-2601,-1746,-921,-130,633, 1383,2111,2832,3542,4236,4908,5551,6169,6760,7331,7866,8361,8800,9153,9401,9529,9539,9420,9191,8851, 8398,7837,7153,6356,5458,4484,3455,2407,1342,280,-794,-1864,-2929,-3965,-4954,-5867,-6697,-7431,-8088,-8655, -9137,-9526,-9807,-9954,-9956,-9827,-9560,-9186,-8717,-8169,-7544,-6840,-6068,-5241,-4380,-3511,-2652,-1815,-1008,-222, 554,1316,2068,2801,3509,4188,4839,5468,6087,6690,7283,7843,8352,8788,9134,9366,9498,9523,9447,9261, 8958,8528,7961,7257,6452,5556,4606,3616,2597,1549,474,-631,-1741,-2829,-3871,-4846,-5743,-6565,-7318,-8009, -8626,-9153,-9570,-9852,-9991,-9994,-9869,-9641,-9315,-8893,-8371,-7752,-7035,-6248,-5413,-4554,-3711,-2873,-2054,-1242, -435,364,1150,1910,2634,3326,3987,4638,5279,5922,6560,7171,7740,8238,8662,8998,9253,9420,9495,9472, 9319,9025,8586,8006,7315,6531,5685,4784,3831,2817,1750,639,-486,-1601,-2672,-3676,-4623,-5521,-6368,-7165, -7903,-8547,-9080,-9477,-9741,-9881,-9904,-9836,-9653,-9367,-8961,-8430,-7786,-7061,-6273,-5462,-4641,-3815,-2991,-2156, -1309,-475,343,1121,1865,2568,3241,3913,4581,5253,5918,6565,7158,7705,8187,8605,8971,9269,9488,9606, 9588,9428,9115,8667,8111,7462,6736,5934,5048,4079,3031,1931,806,-303,-1383,-2420,-3416,-4386,-5326,-6229, -7068,-7815,-8449,-8959,-9345,-9629,-9814,-9904,-9888,-9739,-9455,-9031,-8485,-7846,-7144,-6401,-5632,-4832,-4006,-3156, -2286,-1426,-586,213,966,1687,2389,3081,3780,4477,5164,5819,6437,7008,7542,8033,8495,8907,9247,9484, 9594,9562,9387,9084,8681,8185,7598,6907,6105,5192,4193,3131,2040,957,-109,-1157,-2195,-3227,-4244,-5226, -6148,-6972,-7691,-8300,-8808,-9231,-9566,-9809,-9943,-9928,-9768,-9460,-9030,-8500,-7901,-7247,-6541,-5776,-4959,-4096, -3217,-2339,-1486,-670,103,850,1587,2318,3049,3770,4464,5136,5759,6358,6933,7491,8033,8533,8970,9311, 9528,9616,9581,9439,9196,8853,8403,7830,7123,6292,5356,4358,3328,2289,1246,194,-874,-1963,-3042,-4092, -5076,-5967,-6765,-7473,-8102,-8667,-9149,-9543,-9810,-9939,-9905,-9732,-9436,-9048,-8578,-8031,-7410,-6703,-5920,-5075, -4197,-3326,-2474,-1656,-864,-95,673,1441,2203,2942,3646,4316,4950,5566,6174,6781,7379,7948,8451,8869, 9180,9381,9481,9495,9411,9228,8919,8462,7862,7128,6290,5384,4439,3465,2456,1408,320,-801,-1924,-3014, -4038,-4982,-5844,-6644,-7389,-8078,-8697,-9221,-9613,-9855,-9958,-9922,-9778,-9539,-9207,-8784,-8254,-7611,-6874,-6063, -5219,-4363,-3523,-2704,-1892,-1083,-271,536,1327,2087,2805,3482,4130,4772,5418,6065,6710,7323,7877,8354, 8746,9056,9297,9453,9530,9493,9318,8990,8511,7896,7183,6399,5553,4659,3702,2672,1581,452,-687,-1789, -2836,-3820,-4752,-5639,-6493,-7296,-8029,-8660,-9163,-9528,-9754,-9877,-9892,-9815,-9635,-9331,-8907,-8348,-7682,-6939, -6151,-5343,-4534,-3719,-2894,-2055,-1206,-366,447,1215,1945,2640,3311,3976,4654,5331,6004,6636,7220,7744, 8205,8611,8969,9262,9471,9565,9519,9320,8973,8499,7928,7277,6556,5743,4839,3844,2778,1661,542,-554, -1611,-2630,-3627,-4597,-5541,-6446,-7273,-7993,-8595,-9072,-9437,-9704,-9884,-9965,-9932,-9757,-9444,-8988,-8419,-7772, -7067,-6323,-5558,-4756,-3920,-3054,-2180,-1318,-484,306,1053,1769,2473,3173,3882,4584,5266,5919,6525,7088, 7613,8109,8568,8972,9298,9510,9587,9521,9320,9006,8593,8085,7487,6778,5945,5010,3989,2922,1841,766, -289,-1331,-2381,-3418,-4441,-5416,-6315,-7117,-7807,-8397,-8892,-9312,-9645,-9876,-9981,-9939,-9744,-9412,-8966,-8436, -7838,-7181,-6467,-5698,-4867,-3998,-3113,-2241,-1397,-593,174,923,1661,2399,3133,3851,4544,5203,5823,6415, 6987,7547,8087,8576,8990,9302,9489,9552,9496,9341,9089,8733,8253,7652,6911,6051,5106,4108,3088,2058, 1013,-48,-1134,-2226,-3306,-4342,-5297,-6161,-6943,-7637,-8265,-8825,-9299,-9671,-9905,-9994,-9932,-9743,-9432,-9040, -8563,-8005,-7363,-6629,-5827,-4977,-4098,-3232,-2385,-1568,-778,10,791,1564,2327,3061,3764,4429,5066,5685, 6310,6921,7522,8071,8561,8953,9243,9431,9528,9527,9436,9225,8883,8394,7760,7009,6172,5269,4328,3355, 2334,1269,166,-959,-2063,-3131,-4132,-5054,-5912,-6708,-7457,-8140,-8736,-9228,-9587,-9799,-9877,-9832,-9687,-9440, -9097,-8647,-8090,-7424,-6672,-5861,-5022,-4180,-3341,-2515,-1694,-872,-57,750,1535,2283,2994,3674,4328,4981, 5631,6283,6918,7511,8045,8507,8889,9195,9423,9570,9623,9548,9334,8971,8465,7843,7125,6337,5489,4567, 3581,2529,1428,301,-816,-1898,-2931,-3915,-4852,-5746,-6599,-7391,-8094,-8694,-9165,-9510,-9736,-9851,-9860,-9769, -9564,-9234,-8777,-8200,-7532,-6793,-6012,-5210,-4393,-3563,-2723,-1879,-1034,-200,603,1370,2095,2798,3480,4157, 4836,5510,6167,6790,7361,7880,8339,8747,9094,9367,9546,9605,9520,9291,8934,8455,7880,7214,6466,5626, 4695,3680,2612,1511,407,-677,-1729,-2756,-3759,-4735,-5671,-6547,-7338,-8033,-8613,-9080,-9444,-9711,-9874,-9932, -9861,-9655,-9313,-8847,-8277,-7632,-6923,-6176,-5390,-4571,-3724,-2858,-1989,-1139,-314,470,1222,1952,2664,3375, 4080,4773,5443,6083,6686,7250,7777,8274,8718,9100,9390,9565,9610,9527,9315,8996,8572,8041,7403,6654, 5799,4850,3833,2781,1710,644,-426,-1482,-2540,-3580,-4587,-5535,-6401,-7178,-7861,-8449,-8953,-9361,-9676,-9874, -9942,-9864,-9653,-9316,-8874,-8342,-7733,-7058,-6325,-5528,-4692,-3831,-2961,-2100,-1263,-463,317,1079,1823,2559, 3286,3990,4673,5319,5948,6552,7133,7690,8212,8674,9055,9339,9507,9564,9507,9342,9069,8677,8159,7516, 6757,5898,4962,3976,2960,1914,849,-236,-1329,-2411,-3463,-4466,-5396,-6254,-7034,-7740,-8369,-8911,-9350,-9681, -9879,-9940,-9870,-9679,-9375,-8972,-8472,-7884,-7213,-6464,-5662,-4821,-3964,-3109,-2262,-1438,-633,161,939,1704, 2447,3166,3862,4530,5175,5808,6431,7038,7608,8132,8593,8968,9257,9444,9534,9518,9387,9132,8746,8233, 7589,6840,6012,5111,4156,3140,2099,1013,-89,-1190,-2271,-3308,-4300,-5231,-6103,-6906,-7647,-8305,-8861,-9314, -9639,-9842,-9924,-9878,-9722,-9452,-9075,-8586,-8001,-7326,-6582,-5782,-4955,-4111,-3266,-2427,-1601,-777,29,815, 1582,2319,3030,3715,4386,5044,5690,6324,6937,7506,8027,8487,8870,9178,9393,9519,9527,9414,9163,8788, 8283,7670,6954,6153,5273,4325,3314,2255,1165,65,-1026,-2097,-3131,-4124,-5077,-5968,-6802,-7557,-8223,-8786, -9239,-9579,-9807,-9915,-9904,-9775,-9529,-9159,-8679,-8099,-7437,-6706,-5925,-5110,-4275,-3433,-2586,-1745,-917,-107, 680,1442,2172,2882,3573,4253,4920,5572,6208,6815,7384,7907,8376,8784,9116,9356,9498,9518,9414,9181, 8825,8355,7772,7078,6293,5420,4470,3459,2402,1324,243,-849,-1918,-2966,-3980,-4945,-5857,-6698,-7455,-8129, -8701,-9174,-9542,-9796,-9932,-9943,-9826,-9590,-9236,-8768,-8209,-7567,-6853,-6085,-5273,-4440,-3596,-2744,-1904,-1074, -267,517,1276,2013,2726,3426,4110,4779,5434,6065,6670,7246,7782,8266,8689,9031,9284,9435,9472,9389, 9185,8858,8408,7842,7163,6383,5518,4583,3587,2546,1480,392,-701,-1781,-2842,-3857,-4827,-5741,-6584,-7355, -8041,-8639,-9136,-9521,-9790,-9942,-9963,-9867,-9655,-9315,-8874,-8329,-7695,-6986,-6225,-5424,-4588,-3744,-2897,-2052, -1218,-405,386,1155,1896,2614,3314,4003,4680,5336,5972,6592,7178,7718,8209,8642,9001,9271,9441,9506, 9450,9268,8954,8520,7968,7310,6551,5705,4788,3808,2770,1700,610,-479,-1564,-2618,-3635,-4607,-5532,-6391, -7181,-7887,-8501,-9006,-9403,-9686,-9855,-9906,-9839,-9645,-9329,-8903,-8365,-7742,-7046,-6299,-5506,-4684,-3836,-2985, -2131,-1298,-477,314,1078,1821,2545,3250,3950,4626,5287,5929,6542,7126,7672,8169,8615,8990,9282,9473, 9549,9504,9335,9034,8620,8090,7458,6723,5894,4979,3994,2955,1886,801,-280,-1358,-2413,-3442,-4435,-5377, -6259,-7061,-7773,-8393,-8906,-9325,-9633,-9836,-9918,-9868,-9690,-9385,-8967,-8453,-7848,-7174,-6444,-5660,-4835,-3983, -3125,-2270,-1434,-622,165,936,1686,2421,3139,3841,4520,5181,5819,6430,7020,7574,8098,8557,8952,9253, 9453,9534,9504,9350,9084,8701,8202,7590,6867,6034,5120,4141,3119,2070,1000,-75,-1151,-2226,-3272,-4279, -5231,-6113,-6911,-7626,-8254,-8796,-9247,-9590,-9812,-9909,-9865,-9694,-9401,-9007,-8518,-7944,-7288,-6559,-5770,-4941, -4081,-3225,-2380,-1549,-741,56,836,1601,2350,3073,3770,4448,5097,5737,6355,6956,7539,8071,8540,8938, 9238,9442,9537,9531,9417,9185,8826,8342,7727,6998,6175,5277,4322,3323,2290,1224,138,-965,-2055,-3113, -4123,-5064,-5936,-6746,-7482,-8147,-8726,-9206,-9563,-9790,-9884,-9856,-9707,-9452,-9097,-8636,-8077,-7424,-6689,-5900, -5070,-4230,-3388,-2554,-1727,-907,-95,701,1479,2223,2939,3624,4293,4949,5602,6239,6858,7446,7979,8444, 8831,9136,9361,9495,9527,9444,9226,8874,8384,7773,7061,6269,5401,4478,3496,2459,1371,262,-847,-1933, -2976,-3965,-4903,-5793,-6631,-7404,-8098,-8691,-9170,-9521,-9751,-9862,-9866,-9764,-9547,-9214,-8760,-8193,-7533,-6801, -6023,-5220,-4399,-3565,-2727,-1883,-1038,-210,594,1361,2096,2801,3493,4170,4852,5523,6174,6794,7364,7884, 8349,8753,9091,9356,9526,9578,9498,9277,8923,8446,7866,7197,6441,5601,4679,3678,2619,1525,418,-669, -1730,-2760,-3757,-4718,-5646,-6518,-7313,-8004,-8593,-9065,-9428,-9687,-9845,-9894,-9828,-9622,-9291,-8831,-8268,-7625, -6920,-6175,-5396,-4584,-3739,-2881,-2016,-1169,-349,440,1192,1923,2636,3348,4047,4737,5411,6051,6651,7210, 7735,8218,8655,9027,9314,9488,9535,9446,9234,8904,8465,7934,7297,6558,5712,4768,3758,2696,1619,548, -521,-1572,-2617,-3651,-4651,-5601,-6479,-7259,-7942,-8526,-9015,-9420,-9727,-9929,-9997,-9935,-9727,-9389,-8937,-8405, -7800,-7132,-6405,-5624,-4791,-3926,-3055,-2189,-1354,-546,228,992,1740,2483,3214,3930,4614,5271,5892,6489, 7064,7618,8137,8603,8988,9270,9434,9480,9411,9238,8957,8573,8068,7440,6684,5826,4881,3886,2865,1831, 777,-285,-1363,-2446,-3502,-4514,-5453,-6301,-7071,-7757,-8368,-8906,-9352,-9689,-9898,-9961,-9886,-9679,-9361,-8955, -8464,-7893,-7233,-6497,-5688,-4839,-3970,-3111,-2268,-1450,-648,142,930,1704,2464,3196,3895,4559,5199,5825, 6446,7055,7635,8173,8633,9001,9271,9437,9514,9493,9371,9130,8759,8246,7594,6836,5989,5081,4133,3150, 2121,1054,-46,-1162,-2258,-3308,-4298,-5213,-6061,-6851,-7583,-8245,-8821,-9283,-9617,-9815,-9871,-9816,-9650,-9387, -9027,-8559,-7989,-7316,-6564,-5755,-4917,-4080,-3245,-2418,-1597,-778,42,848,1628,2375,3083,3764,4422,5077, 5731,6374,7001,7579,8095,8538,8901,9185,9396,9521,9545,9440,9202,8815,8292,7652,6927,6128,5268,4341, 3351,2300,1203,81,-1031,-2103,-3124,-4093,-5019,-5896,-6732,-7505,-8191,-8764,-9213,-9529,-9736,-9828,-9816,-9704, -9478,-9127,-8654,-8061,-7384,-6636,-5851,-5050,-4234,-3406,-2567,-1715,-869,-36,763,1527,2251,2951,3641,4319, 5002,5678,6329,6942,7502,8001,8446,8835,9166,9421,9575,9609,9501,9250,8865,8366,7780,7102,6345,5498, 4559,3542,2469,1366,266,-811,-1856,-2871,-3862,-4824,-5746,-6615,-7395,-8067,-8626,-9067,-9409,-9650,-9792,-9832, -9743,-9521,-9161,-8675,-8091,-7437,-6728,-5983,-5205,-4388,-3545,-2679,-1810,-963,-153,630,1374,2094,2806,3518, 4225,4918,5584,6214,6800,7346,7860,8340,8776,9136,9407,9554,9574,9459,9219,8874,8431,7885,7241,6478, 5614,4649,3621,2558,1493,428,-632,-1682,-2730,-3761,-4766,-5706,-6564,-7319,-7978,-8541,-9020,-9414,-9708,-9889, -9937,-9839,-9603,-9247,-8778,-8237,-7625,-6954,-6219,-5424,-4580,-3716,-2840,-1989,-1158,-367,403,1159,1908,2647, 3376,4085,4761,5405,6017,6611,7181,7730,8247,8698,9066,9321,9456,9484,9401,9212,8926,8526,7995,7344, 6565,5688,4739,3746,2727,1693,639,-432,-1521,-2603,-3655,-4648,-5571,-6401,-7153,-7828,-8434,-8958,-9391,-9702, -9882,-9914,-9810,-9584,-9258,-8841,-8338,-7746,-7075,-6319,-5506,-4654,-3792,-2940,-2107,-1295,-499,291,1073,1846, 2596,3315,4006,4662,5296,5924,6541,7143,7715,8231,8675,9025,9277,9436,9499,9468,9325,9060,8662,8126, 7455,6685,5832,4923,3970,2977,1937,859,-247,-1362,-2449,-3481,-4455,-5359,-6202,-6985,-7709,-8360,-8914,-9349, -9653,-9823,-9867,-9791,-9613,-9337,-8953,-8466,-7875,-7184,-6425,-5613,-4785,-3950,-3121,-2298,-1477,-655,157,953, 1723,2459,3158,3833,4495,5148,5797,6439,7051,7619,8116,8547,8903,9180,9378,9486,9487,9361,9090,8681, 8141,7497,6760,5955,5084,4145,3135,2070,970,-146,-1244,-2305,-3315,-4282,-5204,-6083,-6910,-7665,-8320,-8870, -9293,-9595,-9779,-9860,-9836,-9701,-9446,-9072,-8577,-7971,-7283,-6540,-5757,-4953,-4131,-3302,-2456,-1607,-768,54, 846,1601,2325,3024,3712,4395,5076,5744,6386,6985,7534,8030,8472,8857,9178,9413,9543,9546,9407,9137, 8738,8234,7637,6947,6168,5298,4339,3314,2241,1146,57,-1012,-2062,-3076,-4069,-5029,-5944,-6784,-7536,-8186, -8729,-9157,-9490,-9722,-9848,-9858,-9740,-9485,-9105,-8611,-8024,-7365,-6652,-5900,-5105,-4281,-3431,-2571,-1710,-872, -62,711,1456,2185,2903,3611,4315,4996,5655,6276,6861,7412,7922,8392,8809,9150,9393,9512,9505,9374, 9129,8767,8307,7742,7060,6279,5390,4423,3402,2345,1282,215,-851,-1915,-2964,-3988,-4968,-5886,-6720,-7462, -8111,-8671,-9144,-9516,-9786,-9937,-9957,-9832,-9580,-9213,-8748,-8193,-7569,-6876,-6127,-5318,-4480,-3618,-2754,-1908, -1081,-280,490,1253,2002,2740,3459,4157,4832,5478,6093,6689,7261,7804,8296,8727,9066,9305,9425,9444, 9350,9146,8826,8389,7830,7155,6357,5478,4534,3544,2521,1471,402,-678,-1761,-2829,-3857,-4829,-5731,-6558, -7306,-7985,-8578,-9082,-9484,-9763,-9909,-9928,-9813,-9585,-9249,-8818,-8292,-7678,-6985,-6227,-5413,-4570,-3714,-2863, -2026,-1206,-397,396,1173,1938,2683,3399,4089,4755,5401,6030,6645,7235,7791,8289,8714,9054,9297,9446, 9489,9431,9255,8955,8521,7963,7287,6516,5658,4742,3771,2757,1701,616,-482,-1577,-2639,-3662,-4628,-5532, -6374,-7156,-7864,-8482,-9005,-9412,-9697,-9854,-9891,-9809,-9616,-9311,-8906,-8391,-7783,-7086,-6330,-5527,-4698,-3856, -3013,-2176,-1347,-529,282,1067,1832,2566,3274,3961,4625,5287,5935,6560,7158,7708,8201,8624,8978,9244, 9424,9501,9464,9299,9004,8582,8035,7385,6641,5815,4915,3948,2926,1860,773,-324,-1405,-2459,-3476,-4447, -5372,-6238,-7042,-7765,-8391,-8916,-9328,-9627,-9808,-9878,-9826,-9662,-9372,-8968,-8461,-7852,-7171,-6428,-5642,-4824, -3988,-3139,-2294,-1453,-622,189,973,1729,2465,3178,3868,4553,5223,5876,6505,7095,7641,8144,8583,8958, 9253,9451,9543,9515,9362,9083,8679,8163,7541,6819,6009,5112,4145,3122,2060,976,-104,-1182,-2238,-3272, -4261,-5205,-6087,-6902,-7628,-8267,-8801,-9233,-9561,-9769,-9865,-9841,-9687,-9415,-9025,-8533,-7946,-7284,-6557,-5783, -4975,-4138,-3293,-2442,-1600,-769,37,818,1577,2312,3028,3731,4418,5086,5736,6361,6950,7508,8018,8473, 8861,9165,9376,9482,9464,9329,9073,8698,8202,7602,6893,6089,5196,4240,3230,2180,1107,22,-1059,-2120, -3162,-4165,-5112,-6002,-6819,-7561,-8212,-8766,-9220,-9568,-9795,-9906,-9894,-9761,-9502,-9131,-8656,-8086,-7433,-6717, -5950,-5142,-4305,-3453,-2601,-1754,-924,-114,672,1438,2181,2908,3618,4307,4982,5637,6267,6865,7432,7952, 8423,8824,9147,9375,9498,9505,9396,9163,8811,8339,7753,7061,6276,5402,4459,3462,2421,1351,268,-811, -1884,-2923,-3929,-4887,-5784,-6609,-7367,-8031,-8603,-9072,-9436,-9682,-9815,-9822,-9708,-9472,-9116,-8659,-8103,-7467, -6763,-6000,-5201,-4369,-3516,-2661,-1816,-986,-181,609,1379,2126,2855,3566,4258,4934,5587,6213,6817,7387, 7918,8391,8806,9140,9382,9516,9543,9447,9234,8898,8441,7874,7201,6426,5564,4626,3632,2590,1524,443, -641,-1710,-2759,-3779,-4746,-5660,-6506,-7275,-7954,-8543,-9029,-9415,-9687,-9842,-9875,-9777,-9564,-9227,-8783,-8250, -7632,-6943,-6192,-5396,-4565,-3716,-2860,-2018,-1191,-380,408,1182,1932,2669,3385,4081,4752,5407,6038,6645, 7221,7763,8254,8680,9027,9284,9437,9477,9401,9209,8902,8476,7931,7274,6511,5659,4732,3748,2720,1666, 597,-487,-1563,-2621,-3647,-4627,-5546,-6395,-7162,-7851,-8458,-8967,-9371,-9669,-9835,-9876,-9793,-9588,-9269,-8851, -8336,-7733,-7052,-6302,-5499,-4671,-3822,-2969,-2129,-1301,-487,313,1097,1863,2602,3318,4011,4681,5335,5972, 6592,7184,7738,8238,8674,9027,9287,9452,9516,9473,9307,9025,8618,8084,7433,6678,5835,4930,3962,2953, 1902,823,-267,-1356,-2426,-3456,-4434,-5354,-6206,-6994,-7708,-8340,-8877,-9306,-9609,-9791,-9844,-9782,-9608,-9325, -8934,-8437,-7846,-7168,-6418,-5625,-4805,-3970,-3133,-2296,-1468,-647,162,954,1716,2451,3162,3846,4521,5177, 5828,6455,7054,7607,8107,8540,8898,9178,9369,9461,9440,9299,9027,8625,8099,7460,6727,5917,5031,4083, 3072,2019,933,-167,-1259,-2319,-3341,-4316,-5246,-6119,-6931,-7670,-8319,-8864,-9293,-9602,-9796,-9877,-9847,-9704, -9444,-9064,-8570,-7977,-7302,-6567,-5784,-4984,-4157,-3321,-2472,-1626,-788,27,818,1576,2308,3013,3713,4399, 5078,5734,6370,6968,7519,8018,8461,8847,9153,9375,9494,9494,9356,9091,8702,8201,7598,6898,6114,5242, 4294,3274,2219,1129,45,-1033,-2082,-3101,-4090,-5043,-5940,-6775,-7524,-8171,-8715,-9152,-9482,-9711,-9827,-9829, -9705,-9452,-9076,-8588,-8005,-7352,-6644,-5891,-5096,-4268,-3417,-2559,-1702,-867,-60,721,1472,2208,2926,3638, 4341,5021,5673,6296,6881,7432,7945,8410,8819,9154,9384,9505,9501,9371,9124,8762,8298,7729,7050,6270, 5390,4430,3412,2358,1293,224,-843,-1896,-2939,-3957,-4935,-5849,-6682,-7424,-8073,-8631,-9092,-9463,-9729,-9876, -9895,-9772,-9526,-9160,-8687,-8139,-7513,-6829,-6078,-5279,-4437,-3578,-2714,-1866,-1044,-248,534,1296,2051,2791, 3517,4220,4892,5534,6151,6744,7316,7851,8344,8771,9111,9342,9461,9470,9371,9160,8842,8412,7858,7181, 6391,5510,4565,3574,2552,1507,447,-628,-1706,-2775,-3806,-4779,-5682,-6503,-7246,-7913,-8501,-9008,-9406,-9687, -9838,-9848,-9733,-9500,-9163,-8731,-8215,-7610,-6922,-6161,-5347,-4502,-3648,-2805,-1972,-1152,-350,446,1233,2002, 2752,3465,4154,4815,5459,6086,6703,7294,7851,8346,8765,9094,9327,9463,9507,9447,9277,8979,8549,7987, 7310,6524,5669,4753,3793,2786,1737,657,-439,-1543,-2613,-3635,-4593,-5490,-6325,-7098,-7803,-8432,-8958,-9368, -9648,-9797,-9828,-9738,-9548,-9253,-8854,-8347,-7741,-7045,-6283,-5477,-4653,-3816,-2988,-2157,-1331,-506,310,1107, 1872,2611,3311,3993,4659,5319,5970,6605,7202,7754,8234,8649,8985,9247,9422,9502,9468,9311,9011,8582, 8027,7361,6618,5800,4914,3965,2949,1882,786,-321,-1407,-2460,-3463,-4420,-5332,-6197,-7009,-7741,-8377,-8903, -9303,-9584,-9755,-9818,-9772,-9620,-9345,-8951,-8439,-7826,-7131,-6387,-5603,-4797,-3976,-3140,-2294,-1442,-598,218, 1007,1763,2487,3193,3887,4576,5260,5920,6551,7142,7680,8161,8585,8957,9252,9462,9561,9533,9367,9070, 8652,8126,7510,6802,6006,5126,4159,3123,2049,956,-126,-1191,-2229,-3244,-4225,-5175,-6072,-6899,-7633,-8258, -8777,-9190,-9503,-9715,-9826,-9817,-9679,-9404,-9004,-8496,-7898,-7236,-6525,-5773,-4977,-4146,-3291,-2427,-1567,-734, 71,841,1586,2318,3043,3758,4466,5146,5798,6404,6982,7521,8026,8479,8880,9195,9415,9502,9468,9310, 9037,8659,8182,7599,6907,6105,5202,4224,3197,2143,1076,21,-1041,-2095,-3136,-4153,-5122,-6023,-6839,-7558, -8188,-8728,-9178,-9535,-9787,-9915,-9908,-9763,-9487,-9101,-8618,-8060,-7433,-6734,-5981,-5169,-4323,-3454,-2592,-1749, -927,-136,641,1406,2162,2906,3631,4331,4994,5634,6242,6833,7397,7930,8413,8822,9136,9347,9441,9425, 9308,9081,8746,8293,7716,7017,6206,5313,4359,3364,2341,1300,237,-841,-1925,-2992,-4011,-4972,-5854,-6663, -7390,-8047,-8621,-9111,-9494,-9753,-9877,-9868,-9729,-9479,-9125,-8686,-8156,-7536,-6836,-6066,-5245,-4398,-3542,-2701, -1874,-1059,-256,539,1322,2093,2839,3549,4234,4887,5527,6151,6766,7352,7899,8382,8778,9091,9306,9426, 9449,9375,9182,8867,8406,7820,7122,6330,5466,4544,3579,2567,1510,426,-679,-1775,-2834,-3842,-4788,-5670, -6494,-7262,-7957,-8566,-9072,-9457,-9711,-9840,-9847,-9743,-9537,-9226,-8805,-8283,-7664,-6952,-6183,-5372,-4546,-3718, -2886,-2056,-1229,-404,411,1199,1965,2693,3393,4071,4734,5396,6045,6673,7263,7799,8268,8667,8989,9236, 9398,9461,9405,9220,8896,8441,7863,7193,6445,5615,4718,3757,2726,1653,551,-547,-1621,-2662,-3660,-4609, -5518,-6378,-7172,-7887,-8499,-8999,-9382,-9644,-9797,-9843,-9784,-9603,-9307,-8890,-8361,-7736,-7036,-6285,-5499,-4696, -3872,-3030,-2182,-1337,-498,317,1096,1844,2568,3274,3964,4651,5331,5983,6607,7184,7709,8186,8607,8961, 9245,9431,9507,9451,9263,8948,8515,7978,7349,6627,5814,4914,3932,2895,1821,735,-344,-1399,-2438,-3448, -4433,-5374,-6253,-7061,-7770,-8380,-8883,-9281,-9579,-9778,-9860,-9822,-9655,-9358,-8941,-8419,-7820,-7150,-6424,-5659, -4855,-4021,-3170,-2309,-1458,-631,169,943,1689,2425,3148,3857,4553,5226,5873,6484,7056,7594,8090,8539, 8920,9217,9407,9481,9431,9258,8976,8575,8079,7469,6757,5941,5028,4051,3026,1975,914,-153,-1211,-2267, -3304,-4313,-5262,-6142,-6942,-7648,-8267,-8790,-9229,-9563,-9788,-9885,-9852,-9689,-9397,-8997,-8505,-7935,-7289,-6577, -5809,-4995,-4148,-3284,-2429,-1591,-769,26,804,1567,2318,3058,3776,4468,5129,5769,6379,6967,7525,8047, 8515,8903,9197,9390,9472,9444,9306,9060,8704,8222,7617,6899,6084,5184,4226,3229,2196,1147,70,-1007, -2083,-3134,-4138,-5087,-5956,-6758,-7482,-8126,-8687,-9151,-9508,-9740,-9842,-9814,-9663,-9405,-9039,-8576,-8026,-7392, -6680,-5906,-5090,-4246,-3391,-2549,-1716,-900,-95,702,1483,2240,2982,3689,4373,5032,5673,6298,6904,7479, 8008,8473,8857,9155,9358,9466,9473,9365,9146,8795,8316,7719,7005,6208,5338,4403,3421,2393,1329,242, -853,-1934,-2977,-3975,-4920,-5799,-6620,-7375,-8048,-8632,-9108,-9473,-9710,-9824,-9820,-9700,-9476,-9137,-8696,-8152, -7518,-6807,-6037,-5230,-4402,-3567,-2726,-1892,-1063,-245,560,1346,2102,2829,3535,4219,4886,5545,6183,6797, 7376,7898,8360,8757,9071,9300,9438,9471,9387,9167,8827,8361,7779,7095,6327,5479,4560,3577,2539,1473, 383,-707,-1772,-2813,-3812,-4766,-5672,-6514,-7284,-7974,-8566,-9045,-9411,-9670,-9812,-9840,-9749,-9545,-9223,-8788, -8247,-7620,-6920,-6169,-5375,-4561,-3724,-2884,-2035,-1198,-371,433,1215,1965,2695,3406,4101,4781,5445,6088, 6703,7276,7799,8273,8682,9020,9277,9429,9473,9399,9193,8868,8424,7871,7213,6465,5625,4708,3723,2691, 1626,545,-531,-1602,-2648,-3655,-4630,-5549,-6407,-7189,-7880,-8481,-8976,-9367,-9651,-9819,-9872,-9801,-9611,-9299, -8877,-8352,-7742,-7065,-6325,-5545,-4728,-3895,-3043,-2190,-1348,-525,278,1054,1813,2547,3265,3967,4655,5318, 5966,6577,7149,7682,8166,8596,8957,9223,9391,9446,9384,9201,8901,8483,7958,7320,6581,5751,4842,3867, 2842,1790,721,-355,-1423,-2477,-3495,-4479,-5407,-6272,-7056,-7761,-8373,-8885,-9301,-9607,-9800,-9869,-9812,-9633, -9338,-8928,-8422,-7827,-7165,-6437,-5659,-4838,-4002,-3150,-2295,-1455,-630,171,954,1718,2462,3191,3897,4588, 5256,5897,6511,7097,7646,8143,8586,8956,9236,9417,9492,9455,9292,9017,8624,8114,7492,6763,5943,5048, 4087,3075,2032,967,-115,-1188,-2249,-3282,-4265,-5203,-6075,-6870,-7590,-8217,-8756,-9190,-9511,-9722,-9810,-9771, -9615,-9339,-8955,-8468,-7892,-7238,-6523,-5747,-4936,-4096,-3250,-2404,-1562,-738,65,852,1622,2372,3099,3807, 4497,5162,5801,6426,7016,7571,8079,8529,8908,9200,9396,9486,9464,9329,9070,8695,8199,7595,6880,6075, 5193,4242,3236,2193,1127,51,-1026,-2090,-3125,-4125,-5066,-5950,-6762,-7493,-8139,-8690,-9139,-9485,-9712,-9820, -9802,-9665,-9410,-9041,-8568,-8011,-7369,-6660,-5896,-5086,-4248,-3403,-2555,-1714,-887,-77,715,1489,2246,2979, 3690,4383,5049,5699,6324,6922,7489,8010,8472,8863,9167,9382,9486,9488,9373,9138,8786,8317,7726,7031, 6242,5368,4428,3440,2406,1349,272,-804,-1871,-2916,-3918,-4867,-5757,-6575,-7316,-7979,-8548,-9020,-9384,-9626, -9750,-9752,-9628,-9390,-9043,-8596,-8050,-7420,-6718,-5954,-5148,-4316,-3475,-2631,-1792,-968,-150,648,1428,2187, 2923,3633,4320,4994,5643,6273,6888,7458,7984,8453,8849,9167,9389,9515,9541,9447,9237,8900,8440,7864, 7181,6403,5547,4620,3643,2615,1556,473,-606,-1689,-2736,-3742,-4701,-5592,-6432,-7192,-7875,-8468,-8958,-9338, -9597,-9736,-9758,-9662,-9453,-9129,-8703,-8173,-7553,-6855,-6105,-5310,-4490,-3656,-2821,-1977,-1148,-324,480,1263, 2018,2749,3457,4146,4823,5481,6121,6734,7311,7840,8307,8713,9040,9286,9437,9481,9408,9212,8889,8442, 7882,7216,6463,5623,4714,3743,2716,1649,564,-522,-1592,-2640,-3647,-4610,-5520,-6377,-7160,-7862,-8465,-8964, -9353,-9626,-9786,-9834,-9764,-9582,-9275,-8861,-8341,-7726,-7040,-6301,-5520,-4707,-3879,-3032,-2187,-1341,-512,293, 1072,1831,2560,3272,3973,4659,5333,5980,6590,7168,7697,8177,8595,8948,9220,9391,9451,9394,9208,8900, 8475,7940,7302,6574,5750,4852,3877,2852,1785,706,-368,-1430,-2475,-3487,-4466,-5398,-6268,-7067,-7772,-8378, -8888,-9292,-9589,-9777,-9854,-9811,-9640,-9343,-8933,-8418,-7823,-7158,-6437,-5670,-4862,-4026,-3172,-2320,-1469,-644, 157,931,1689,2427,3158,3868,4563,5236,5874,6485,7057,7596,8095,8537,8905,9193,9376,9442,9392,9224, 8941,8544,8039,7431,6709,5892,4987,4012,2996,1947,881,-183,-1245,-2301,-3339,-4334,-5277,-6155,-6950,-7659, -8277,-8806,-9239,-9569,-9787,-9881,-9847,-9681,-9396,-9002,-8514,-7949,-7306,-6592,-5829,-5013,-4168,-3311,-2460,-1622, -806,-2,777,1549,2305,3044,3763,4446,5113,5749,6361,6948,7507,8022,8480,8861,9150,9334,9414,9385, 9247,8997,8635,8147,7545,6827,6014,5118,4161,3164,2139,1082,12,-1064,-2137,-3189,-4188,-5132,-6002,-6802, -7523,-8169,-8721,-9185,-9539,-9766,-9868,-9839,-9687,-9425,-9061,-8607,-8060,-7423,-6709,-5937,-5118,-4279,-3429,-2592, -1761,-942,-133,664,1448,2213,2954,3662,4342,5002,5646,6279,6883,7457,7979,8438,8820,9111,9312,9418, 9416,9314,9093,8742,8263,7661,6955,6156,5288,4357,3380,2359,1301,214,-878,-1956,-2999,-3994,-4928,-5803, -6620,-7368,-8040,-8623,-9102,-9460,-9694,-9801,-9793,-9674,-9445,-9112,-8673,-8133,-7496,-6780,-6010,-5205,-4382,-3551, -2714,-1881,-1051,-224,590,1375,2132,2860,3562,4247,4915,5576,6224,6838,7414,7932,8385,8773,9074,9303, 9444,9481,9388,9175,8826,8351,7764,7081,6315,5474,4564,3587,2551,1479,385,-709,-1773,-2804,-3800,-4740, -5638,-6486,-7264,-7957,-8546,-9022,-9384,-9630,-9766,-9797,-9714,-9517,-9199,-8761,-8219,-7592,-6885,-6137,-5355,-4552, -3722,-2878,-2026,-1181,-347,456,1236,1984,2706,3419,4117,4803,5478,6126,6734,7296,7810,8274,8679,9016, 9278,9438,9481,9395,9181,8843,8393,7840,7194,6457,5625,4712,3718,2681,1609,526,-548,-1596,-2630,-3634, -4606,-5533,-6398,-7183,-7872,-8455,-8942,-9319,-9603,-9779,-9842,-9778,-9589,-9269,-8834,-8304,-7691,-7021,-6297,-5523, -4716,-3872,-3015,-2155,-1306,-484,315,1087,1835,2578,3308,4025,4721,5391,6028,6629,7192,7723,8209,8644, 9006,9277,9443,9487,9407,9210,8906,8495,7976,7350,6616,5784,4861,3875,2849,1800,742,-319,-1379,-2431, -3460,-4456,-5391,-6256,-7031,-7722,-8321,-8826,-9246,-9563,-9765,-9838,-9780,-9589,-9285,-8874,-8373,-7796,-7143,-6427, -5652,-4832,-3980,-3123,-2269,-1435,-624,173,952,1724,2481,3220,3937,4624,5282,5916,6521,7103,7652,8157, 8606,8973,9238,9402,9457,9404,9240,8976,8591,8087,7459,6721,5889,4976,4013,3008,1981,931,-146,-1225, -2298,-3341,-4336,-5266,-6122,-6902,-7611,-8240,-8785,-9233,-9569,-9778,-9854,-9802,-9630,-9353,-8977,-8510,-7949,-7304, -6587,-5799,-4979,-4137,-3287,-2450,-1623,-803,6,805,1590,2355,3096,3801,4479,5134,5776,6403,7005,7573, 8086,8531,8894,9165,9343,9425,9413,9287,9039,8667,8163,7541,6809,6000,5122,4188,3204,2178,1108,21, -1077,-2150,-3181,-4163,-5089,-5950,-6755,-7495,-8154,-8725,-9180,-9516,-9722,-9811,-9785,-9650,-9409,-9060,-8610,-8050, -7400,-6675,-5898,-5087,-4263,-3432,-2596,-1757,-926,-97,715,1501,2260,2979,3683,4371,5039,5698,6341,6950, 7518,8023,8460,8831,9124,9335,9456,9465,9353,9111,8737,8238,7635,6938,6158,5307,4383,3395,2350,1272, 177,-907,-1966,-2989,-3969,-4912,-5803,-6638,-7401,-8079,-8643,-9101,-9440,-9673,-9795,-9809,-9708,-9491,-9154,-8696, -8138,-7498,-6791,-6039,-5252,-4439,-3607,-2759,-1909,-1060,-229,575,1348,2100,2824,3535,4233,4922,5592,6232, 6832,7393,7900,8349,8743,9067,9305,9440,9454,9351,9111,8756,8286,7719,7055,6298,5451,4525,3528,2479, 1411,334,-732,-1785,-2814,-3810,-4774,-5693,-6539,-7305,-7978,-8545,-9015,-9378,-9643,-9800,-9838,-9754,-9541,-9204, -8756,-8212,-7593,-6912,-6177,-5396,-4582,-3739,-2877,-2020,-1175,-355,441,1215,1968,2708,3432,4148,4839,5507, 6139,6735,7291,7816,8291,8712,9055,9304,9441,9469,9366,9157,8832,8399,7861,7214,6459,5611,4679,3690, 2660,1607,552,-509,-1573,-2616,-3641,-4625,-5548,-6394,-7155,-7829,-8416,-8915,-9311,-9607,-9784,-9840,-9757,-9549, -9228,-8803,-8289,-7699,-7036,-6311,-5527,-4701,-3853,-2997,-2147,-1314,-501,293,1075,1841,2594,3327,4039,4723, 5382,6006,6609,7189,7732,8222,8653,9000,9251,9396,9433,9366,9189,8897,8487,7965,7317,6565,5722,4808, 3844,2836,1799,742,-330,-1405,-2469,-3501,-4477,-5395,-6240,-7010,-7705,-8320,-8845,-9269,-9574,-9758,-9815,-9742, -9556,-9257,-8863,-8377,-7800,-7139,-6408,-5619,-4793,-3951,-3108,-2270,-1441,-617,188,983,1763,2520,3248,3953, 4629,5288,5925,6546,7138,7694,8190,8621,8969,9234,9399,9468,9433,9283,9012,8615,8095,7459,6726,5902, 5019,4073,3079,2038,968,-119,-1201,-2264,-3289,-4262,-5175,-6037,-6832,-7555,-8193,-8734,-9164,-9479,-9671,-9741, -9703,-9544,-9280,-8913,-8435,-7859,-7202,-6471,-5701,-4889,-4061,-3225,-2390,-1555,-725,93,890,1667,2417,3139, 3836,4521,5186,5838,6464,7062,7617,8113,8542,8901,9182,9377,9469,9455,9322,9059,8669,8162,7548,6841, 6044,5175,4234,3236,2189,1119,32,-1049,-2103,-3125,-4107,-5040,-5921,-6740,-7477,-8130,-8676,-9117,-9447,-9657, -9765,-9750,-9618,-9374,-9015,-8546,-7980,-7328,-6617,-5859,-5062,-4242,-3408,-2563,-1721,-884,-62,732,1505,2249, 2977,3679,4375,5051,5709,6341,6936,7488,7990,8434,8814,9120,9336,9448,9441,9319,9073,8705,8223,7637, 6953,6177,5312,4378,3378,2340,1270,199,-871,-1923,-2952,-3948,-4899,-5795,-6626,-7373,-8028,-8585,-9041,-9388, -9630,-9759,-9770,-9657,-9421,-9074,-8617,-8063,-7434,-6737,-5992,-5207,-4388,-3545,-2696,-1848,-1010,-197,600,1369, 2118,2853,3569,4270,4951,5611,6240,6832,7386,7903,8360,8761,9086,9313,9435,9441,9336,9107,8763,8304, 7745,7074,6305,5444,4512,3521,2494,1433,369,-705,-1763,-2806,-3816,-4781,-5682,-6520,-7273,-7939,-8517,-8996, -9375,-9638,-9788,-9816,-9717,-9497,-9164,-8727,-8201,-7589,-6907,-6170,-5387,-4564,-3723,-2872,-2027,-1194,-381,415, 1190,1953,2696,3419,4123,4802,5462,6092,6692,7263,7786,8264,8676,9012,9250,9387,9413,9325,9125,8811, 8378,7826,7175,6416,5573,4652,3679,2664,1610,544,-528,-1592,-2642,-3658,-4627,-5536,-6374,-7148,-7829,-8425, -8924,-9327,-9603,-9775,-9815,-9738,-9541,-9231,-8816,-8306,-7709,-7036,-6304,-5520,-4703,-3863,-3014,-2173,-1338,-515, 284,1069,1837,2587,3313,4017,4702,5361,5997,6610,7186,7727,8213,8632,8975,9231,9384,9437,9371,9194, 8898,8483,7949,7310,6568,5736,4832,3869,2858,1816,742,-330,-1403,-2456,-3476,-4451,-5370,-6223,-7010,-7710, -8329,-8844,-9264,-9568,-9754,-9816,-9764,-9591,-9301,-8911,-8418,-7838,-7177,-6451,-5675,-4861,-4026,-3181,-2337,-1503, -679,131,923,1697,2451,3179,3888,4570,5234,5877,6498,7083,7632,8123,8553,8911,9175,9354,9423,9383, 9227,8950,8558,8041,7416,6693,5882,4991,4042,3036,1995,928,-149,-1222,-2277,-3304,-4283,-5214,-6078,-6875, -7597,-8232,-8767,-9199,-9525,-9726,-9812,-9778,-9626,-9361,-8987,-8507,-7944,-7290,-6572,-5799,-4990,-4161,-3317,-2474, -1635,-802,11,814,1593,2346,3081,3789,4478,5152,5804,6431,7024,7579,8080,8523,8888,9176,9371,9465, 9446,9314,9056,8677,8180,7575,6871,6073,5196,4257,3263,2227,1163,81,-994,-2052,-3082,-4071,-5010,-5887, -6705,-7443,-8090,-8648,-9098,-9437,-9668,-9772,-9766,-9642,-9399,-9043,-8584,-8029,-7394,-6687,-5923,-5127,-4309,-3465, -2619,-1778,-944,-124,673,1454,2205,2941,3653,4343,5020,5673,6310,6905,7461,7970,8416,8797,9102,9310, 9426,9426,9306,9070,8708,8231,7643,6954,6173,5318,4385,3396,2358,1295,217,-863,-1924,-2955,-3953,-4903, -5795,-6624,-7381,-8045,-8620,-9084,-9444,-9690,-9822,-9838,-9734,-9513,-9178,-8729,-8187,-7566,-6868,-6119,-5329,-4513, -3675,-2823,-1974,-1135,-311,489,1269,2027,2765,3482,4187,4869,5535,6167,6771,7331,7847,8309,8711,9033, 9266,9399,9421,9319,9099,8764,8312,7749,7086,6328,5481,4556,3574,2543,1487,415,-657,-1714,-2751,-3757, -4719,-5628,-6471,-7230,-7915,-8490,-8975,-9353,-9625,-9779,-9819,-9735,-9528,-9204,-8775,-8250,-7643,-6962,-6226,-5444, -4623,-3783,-2931,-2079,-1241,-419,382,1163,1925,2670,3398,4107,4792,5454,6088,6692,7262,7790,8269,8684, 9024,9271,9417,9453,9373,9174,8863,8432,7895,7245,6499,5659,4747,3766,2748,1697,634,-439,-1505,-2553, -3571,-4549,-5464,-6316,-7090,-7783,-8381,-8890,-9293,-9590,-9773,-9827,-9761,-9575,-9271,-8861,-8356,-7773,-7110,-6378, -5605,-4785,-3947,-3095,-2247,-1413,-592,212,999,1769,2520,3249,3961,4649,5304,5945,6554,7134,7675,8165, 8593,8946,9201,9367,9417,9362,9190,8903,8501,7979,7347,6612,5787,4882,3922,2918,1877,817,-255,-1328, -2386,-3414,-4397,-5316,-6175,-6957,-7666,-8285,-8813,-9242,-9556,-9752,-9825,-9773,-9598,-9323,-8934,-8451,-7874,-7224, -6500,-5724,-4905,-4070,-3224,-2377,-1543,-714,95,888,1673,2427,3159,3869,4559,5220,5862,6486,7081,7633, 8132,8570,8929,9203,9377,9457,9432,9290,9023,8639,8134,7515,6794,5984,5101,4158,3160,2128,1061,-14, -1096,-2158,-3184,-4167,-5102,-5967,-6770,-7497,-8141,-8691,-9137,-9463,-9675,-9768,-9741,-9597,-9344,-8984,-8518,-7955, -7308,-6595,-5827,-5021,-4193,-3353,-2518,-1672,-842,-22,778,1558,2312,3040,3745,4435,5103,5754,6391,6987, 7546,8045,8485,8856,9146,9349,9451,9447,9322,9074,8700,8208,7608,6906,6119,5255,4324,3329,2292,1224, 146,-938,-1997,-3026,-4013,-4954,-5840,-6663,-7409,-8068,-8636,-9088,-9433,-9662,-9782,-9784,-9668,-9436,-9094,-8636, -8083,-7451,-6746,-5993,-5199,-4379,-3544,-2697,-1850,-1011,-189,613,1388,2143,2874,3589,4289,4969,5630,6262, 6861,7418,7925,8380,8768,9081,9307,9430,9443,9334,9100,8749,8285,7707,7034,6267,5416,4489,3502,2465, 1401,328,-745,-1799,-2831,-3833,-4790,-5693,-6526,-7285,-7956,-8527,-8997,-9363,-9617,-9765,-9791,-9695,-9480,-9148, -8705,-8165,-7549,-6865,-6123,-5335,-4518,-3677,-2826,-1975,-1134,-313,482,1262,2020,2761,3480,4190,4873,5533, 6164,6767,7329,7848,8317,8725,9057,9299,9433,9459,9364,9156,8825,8387,7838,7186,6428,5587,4663,3680, 2652,1599,530,-535,-1597,-2639,-3653,-4625,-5542,-6385,-7154,-7830,-8420,-8913,-9303,-9589,-9756,-9804,-9728,-9523, -9206,-8786,-8267,-7674,-7004,-6272,-5492,-4675,-3832,-2981,-2129,-1294,-476,318,1104,1868,2616,3344,4055,4740, 5398,6032,6632,7207,7744,8226,8649,8995,9245,9395,9434,9363,9180,8883,8469,7940,7299,6554,5718,4807, 3838,2828,1786,728,-344,-1412,-2471,-3498,-4472,-5387,-6241,-7013,-7709,-8318,-8837,-9254,-9558,-9742,-9803,-9738, -9555,-9259,-8865,-8372,-7791,-7130,-6407,-5623,-4803,-3965,-3120,-2275,-1442,-618,184,978,1752,2508,3240,3941, 4622,5285,5921,6539,7126,7672,8168,8597,8946,9210,9377,9438,9402,9245,8972,8574,8057,7427,6699,5879, 4989,4037,3039,2002,936,-143,-1221,-2279,-3306,-4284,-5205,-6066,-6859,-7577,-8212,-8750,-9183,-9502,-9698,-9779, -9736,-9583,-9313,-8944,-8470,-7898,-7243,-6522,-5750,-4942,-4112,-3272,-2432,-1597,-767,47,842,1618,2373,3100, 3801,4489,5153,5804,6426,7021,7572,8071,8500,8863,9146,9333,9428,9408,9275,9017,8630,8130,7519,6809, 6015,5139,4202,3210,2170,1098,19,-1060,-2118,-3144,-4125,-5059,-5936,-6751,-7485,-8138,-8689,-9137,-9469,-9686, -9788,-9778,-9647,-9404,-9048,-8585,-8025,-7383,-6668,-5910,-5112,-4289,-3454,-2612,-1767,-928,-109,690,1468,2218, 2944,3653,4347,5025,5680,6313,6907,7460,7963,8411,8789,9095,9310,9426,9425,9304,9061,8697,8218,7632, 6951,6176,5316,4385,3394,2355,1287,212,-859,-1913,-2941,-3936,-4884,-5776,-6607,-7358,-8019,-8579,-9042,-9393, -9636,-9767,-9779,-9676,-9448,-9103,-8655,-8108,-7477,-6785,-6041,-5255,-4433,-3593,-2745,-1896,-1057,-239,559,1330, 2086,2823,3541,4238,4925,5582,6211,6807,7364,7880,8342,8739,9062,9291,9417,9430,9326,9101,8761,8308, 7751,7083,6321,5468,4540,3552,2524,1466,398,-671,-1730,-2769,-3779,-4743,-5651,-6492,-7250,-7918,-8499,-8982, -9360,-9632,-9786,-9824,-9734,-9521,-9193,-8762,-8237,-7633,-6956,-6218,-5437,-4615,-3773,-2922,-2078,-1239,-422,378, 1155,1918,2663,3390,4094,4775,5432,6065,6667,7232,7763,8243,8653,8987,9231,9370,9400,9317,9123,8809, 8384,7842,7193,6439,5596,4680,3703,2691,1644,584,-489,-1555,-2606,-3627,-4597,-5507,-6353,-7121,-7805,-8405, -8912,-9316,-9604,-9779,-9827,-9753,-9561,-9255,-8844,-8345,-7753,-7085,-6352,-5571,-4752,-3910,-3064,-2220,-1385,-564, 245,1031,1800,2552,3283,3983,4666,5328,5963,6578,7155,7696,8186,8609,8951,9207,9366,9420,9364,9197, 8909,8499,7971,7333,6595,5766,4869,3913,2908,1868,800,-276,-1351,-2408,-3425,-4403,-5321,-6173,-6958,-7665, -8293,-8817,-9238,-9549,-9735,-9803,-9751,-9585,-9304,-8918,-8434,-7858,-7198,-6471,-5695,-4884,-4053,-3210,-2367,-1531, -706,106,901,1674,2427,3155,3859,4545,5208,5853,6475,7062,7610,8104,8533,8887,9159,9339,9417,9385, 9235,8965,8569,8059,7435,6717,5911,5032,4086,3085,2046,976,-107,-1180,-2235,-3260,-4239,-5168,-6038,-6840, -7569,-8210,-8750,-9183,-9509,-9714,-9805,-9781,-9639,-9383,-9012,-8539,-7974,-7324,-6608,-5841,-5042,-4216,-3374,-2525, -1686,-852,-31,766,1540,2293,3019,3731,4421,5093,5751,6378,6969,7520,8020,8462,8836,9130,9330,9430, 9419,9288,9033,8657,8169,7571,6877,6089,5220,4281,3285,2245,1181,106,-965,-2020,-3047,-4037,-4977,-5865, -6683,-7424,-8075,-8626,-9077,-9425,-9656,-9773,-9773,-9652,-9411,-9055,-8596,-8044,-7410,-6710,-5956,-5163,-4338,-3496, -2645,-1797,-963,-148,650,1425,2177,2914,3631,4328,5006,5660,6289,6885,7439,7950,8405,8795,9104,9323, 9436,9441,9325,9092,8742,8275,7702,7023,6246,5388,4455,3466,2431,1374,304,-768,-1825,-2861,-3868,-4826, -5721,-6551,-7303,-7967,-8540,-9012,-9378,-9639,-9775,-9797,-9696,-9471,-9136,-8696,-8164,-7549,-6861,-6117,-5327,-4505, -3665,-2816,-1970,-1137,-317,479,1260,2022,2760,3479,4183,4859,5515,6145,6747,7312,7834,8302,8706,9031, 9261,9393,9415,9324,9113,8787,8347,7789,7126,6367,5517,4600,3620,2601,1550,479,-595,-1659,-2704,-3714, -4677,-5583,-6419,-7180,-7866,-8456,-8948,-9338,-9616,-9771,-9809,-9721,-9520,-9206,-8786,-8270,-7668,-6992,-6253,-5467, -4647,-3807,-2958,-2113,-1279,-457,347,1134,1901,2647,3371,4074,4754,5414,6051,6659,7235,7767,8247,8660, 8997,9248,9398,9443,9376,9191,8889,8467,7928,7279,6533,5703,4801,3834,2823,1775,706,-371,-1441,-2492, -3505,-4475,-5390,-6238,-7017,-7719,-8329,-8843,-9246,-9542,-9719,-9777,-9716,-9536,-9246,-8845,-8346,-7757,-7093,-6363, -5584,-4773,-3940,-3096,-2248,-1410,-587,220,1011,1784,2531,3255,3959,4643,5306,5950,6564,7146,7686,8171, 8594,8946,9212,9382,9447,9400,9234,8948,8542,8023,7397,6670,5854,4963,4009,3000,1952,884,-194,-1264, -2315,-3335,-4313,-5238,-6109,-6902,-7618,-8244,-8772,-9198,-9511,-9713,-9793,-9757,-9598,-9328,-8945,-8459,-7884,-7232, -6514,-5746,-4940,-4109,-3264,-2415,-1575,-745,65,856,1631,2379,3110,3820,4511,5179,5825,6447,7034,7579, 8076,8516,8883,9165,9355,9441,9414,9266,9000,8620,8123,7516,6809,6009,5126,4179,3179,2140,1077,6, -1066,-2123,-3149,-4135,-5077,-5954,-6760,-7487,-8127,-8676,-9119,-9454,-9677,-9779,-9762,-9624,-9369,-9006,-8540,-7982, -7344,-6637,-5874,-5070,-4244,-3400,-2551,-1709,-879,-66,732,1510,2268,3000,3712,4406,5077,5728,6352,6947, 7503,8010,8458,8839,9137,9338,9442,9434,9310,9069,8708,8232,7642,6948,6160,5290,4357,3364,2333,1272, 202,-874,-1938,-2972,-3971,-4915,-5807,-6622,-7364,-8023,-8591,-9055,-9414,-9655,-9780,-9784,-9667,-9435,-9095,-8651, -8108,-7482,-6786,-6032,-5237,-4411,-3573,-2728,-1884,-1053,-234,564,1349,2107,2845,3562,4256,4930,5584,6216, 6816,7383,7896,8354,8746,9057,9279,9402,9415,9315,9095,8754,8297,7725,7045,6274,5423,4502,3525,2499, 1442,367,-709,-1776,-2816,-3815,-4767,-5666,-6500,-7261,-7936,-8521,-9002,-9379,-9635,-9777,-9803,-9712,-9501,-9180, -8751,-8223,-7607,-6920,-6176,-5383,-4571,-3731,-2887,-2041,-1200,-375,427,1213,1975,2714,3432,4134,4813,5478, 6112,6719,7290,7815,8282,8684,9015,9255,9399,9434,9358,9152,8833,8388,7840,7185,6434,5599,4689,3718, 2693,1637,563,-510,-1575,-2618,-3622,-4588,-5501,-6351,-7127,-7819,-8415,-8914,-9302,-9584,-9755,-9804,-9737,-9548, -9242,-8830,-8315,-7714,-7042,-6314,-5537,-4724,-3888,-3040,-2190,-1346,-522,283,1067,1830,2576,3298,4003,4693, 5358,5995,6601,7174,7705,8187,8604,8953,9214,9375,9424,9361,9178,8878,8459,7935,7302,6569,5744,4839, 3873,2856,1805,741,-330,-1394,-2441,-3459,-4438,-5364,-6226,-7009,-7711,-8323,-8839,-9251,-9558,-9752,-9825,-9776, -9599,-9315,-8916,-8420,-7838,-7180,-6462,-5691,-4875,-4040,-3188,-2338,-1498,-671,132,924,1693,2444,3177,3890, 4579,5246,5885,6499,7080,7626,8121,8554,8917,9194,9367,9435,9392,9234,8961,8571,8069,7453,6732,5916, 5023,4069,3067,2033,971,-98,-1166,-2224,-3253,-4243,-5174,-6040,-6834,-7547,-8177,-8713,-9153,-9482,-9692,-9782, -9746,-9591,-9322,-8949,-8478,-7915,-7273,-6556,-5789,-4978,-4145,-3299,-2456,-1616,-792,18,815,1593,2350,3087, 3793,4482,5148,5793,6414,7006,7560,8068,8510,8879,9165,9353,9439,9422,9292,9047,8673,8184,7578,6868, 6068,5191,4252,3263,2234,1172,97,-980,-2050,-3083,-4075,-5009,-5884,-6695,-7429,-8083,-8646,-9103,-9450,-9674, -9778,-9770,-9637,-9400,-9051,-8600,-8050,-7414,-6706,-5944,-5142,-4317,-3477,-2638,-1800,-968,-148,654,1437,2193, 2928,3638,4325,4998,5650,6283,6884,7445,7956,8404,8784,9083,9297,9412,9418,9311,9080,8726,8251,7664, 6972,6198,5343,4420,3440,2410,1347,266,-814,-1873,-2908,-3897,-4840,-5729,-6559,-7315,-7987,-8559,-9029,-9387, -9628,-9755,-9769,-9668,-9452,-9117,-8679,-8138,-7509,-6810,-6062,-5272,-4454,-3618,-2774,-1930,-1088,-261,541,1321, 2079,2814,3528,4224,4907,5571,6207,6811,7375,7889,8349,8740,9065,9302,9440,9465,9372,9154,8816,8361, 7798,7138,6382,5544,4625,3644,2613,1552,475,-594,-1653,-2686,-3691,-4652,-5562,-6410,-7181,-7861,-8442,-8923, -9302,-9572,-9729,-9773,-9698,-9497,-9178,-8748,-8221,-7611,-6934,-6201,-5426,-4614,-3776,-2924,-2076,-1232,-411,389, 1166,1922,2662,3385,4091,4780,5441,6076,6673,7240,7764,8239,8653,8994,9247,9400,9433,9351,9152,8839, 8415,7880,7241,6500,5665,4744,3770,2746,1697,629,-433,-1494,-2540,-3559,-4537,-5459,-6314,-7088,-7777,-8376, -8879,-9283,-9583,-9767,-9828,-9765,-9578,-9272,-8860,-8356,-7772,-7112,-6387,-5614,-4797,-3957,-3102,-2254,-1417,-597, 202,985,1753,2506,3236,3948,4635,5293,5927,6532,7108,7650,8143,8575,8926,9191,9352,9406,9348,9179, 8897,8503,7988,7359,6627,5799,4896,3935,2931,1896,839,-229,-1299,-2361,-3391,-4372,-5300,-6152,-6934,-7639, -8259,-8790,-9219,-9538,-9737,-9808,-9760,-9589,-9306,-8923,-8444,-7876,-7224,-6503,-5727,-4913,-4073,-3228,-2387,-1554, -732,75,871,1646,2404,3137,3842,4526,5183,5825,6443,7035,7589,8090,8526,8886,9158,9336,9414,9386, 9248,8990,8611,8105,7484,6765,5958,5075,4131,3144,2110,1046,-31,-1114,-2180,-3208,-4192,-5118,-5983,-6784, -7515,-8164,-8715,-9160,-9493,-9703,-9793,-9767,-9626,-9376,-9019,-8553,-7997,-7353,-6632,-5866,-5059,-4234,-3401,-2559, -1723,-892,-73,729,1508,2263,2992,3696,4382,5050,5705,6333,6933,7489,7993,8432,8802,9091,9295,9402, 9402,9279,9036,8666,8177,7573,6877,6097,5236,4308,3322,2283,1215,130,-947,-2002,-3030,-4015,-4954,-5839, -6663,-7413,-8076,-8637,-9093,-9437,-9667,-9784,-9785,-9676,-9446,-9102,-8651,-8097,-7463,-6759,-6003,-5211,-4397,-3560, -2713,-1867,-1029,-204,598,1374,2127,2858,3570,4264,4945,5607,6239,6840,7395,7901,8356,8747,9060,9289, 9415,9431,9321,9089,8738,8272,7701,7032,6270,5422,4497,3504,2471,1405,332,-739,-1790,-2822,-3819,-4781, -5686,-6525,-7286,-7956,-8529,-8999,-9363,-9622,-9771,-9802,-9710,-9496,-9165,-8723,-8184,-7569,-6886,-6146,-5364,-4547, -3708,-2859,-2007,-1166,-346,451,1231,1985,2724,3447,4151,4837,5494,6130,6728,7291,7811,8282,8691,9024, 9266,9405,9429,9338,9127,8806,8364,7822,7167,6417,5572,4649,3668,2644,1594,531,-536,-1596,-2639,-3653, -4629,-5544,-6388,-7154,-7833,-8423,-8913,-9310,-9596,-9770,-9815,-9737,-9538,-9221,-8799,-8288,-7693,-7024,-6294,-5511, -4694,-3851,-2996,-2149,-1313,-493,306,1089,1856,2604,3336,4045,4728,5384,6018,6623,7198,7733,8222,8646, 8990,9240,9389,9433,9366,9183,8891,8482,7954,7311,6564,5733,4824,3857,2849,1810,750,-325,-1395,-2451, -3475,-4451,-5371,-6216,-6994,-7691,-8304,-8825,-9241,-9550,-9735,-9795,-9733,-9554,-9266,-8872,-8381,-7800,-7144,-6417, -5636,-4822,-3981,-3134,-2292,-1456,-636,173,967,1742,2494,3227,3932,4615,5275,5914,6530,7117,7665,8160, 8589,8938,9202,9370,9438,9400,9244,8972,8573,8056,7430,6697,5883,4996,4046,3046,2008,940,-139,-1217, -2277,-3299,-4277,-5202,-6062,-6859,-7580,-8216,-8758,-9188,-9509,-9709,-9790,-9752,-9599,-9339,-8965,-8490,-7921,-7271, -6551,-5778,-4971,-4141,-3304,-2459,-1622,-791,23,822,1600,2355,3080,3788,4474,5144,5793,6417,7011,7566, 8060,8497,8864,9145,9338,9430,9412,9280,9015,8636,8139,7530,6822,6030,5157,4220,3222,2179,1114,35, -1039,-2092,-3119,-4104,-5040,-5924,-6737,-7474,-8124,-8678,-9121,-9453,-9679,-9787,-9777,-9649,-9407,-9052,-8589,-8028, -7389,-6683,-5924,-5126,-4304,-3463,-2620,-1772,-940,-119,680,1459,2209,2942,3654,4350,5025,5679,6307,6905, 7459,7962,8411,8793,9097,9311,9417,9417,9300,9056,8695,8220,7635,6951,6173,5311,4377,3384,2348,1286, 212,-856,-1917,-2951,-3946,-4900,-5795,-6623,-7372,-8030,-8598,-9062,-9420,-9670,-9801,-9816,-9708,-9481,-9142,-8695, -8153,-7530,-6842,-6091,-5304,-4480,-3642,-2792,-1943,-1106,-288,511,1289,2048,2786,3502,4204,4884,5539,6172, 6771,7330,7846,8308,8707,9031,9257,9383,9399,9299,9082,8745,8295,7736,7068,6302,5452,4530,3546,2519, 1467,400,-671,-1734,-2776,-3779,-4741,-5646,-6482,-7240,-7914,-8498,-8983,-9363,-9634,-9788,-9820,-9728,-9520,-9197, -8767,-8243,-7634,-6954,-6216,-5429,-4606,-3767,-2918,-2070,-1233,-410,392,1175,1941,2685,3411,4112,4796,5457, 6092,6695,7269,7799,8273,8684,9020,9264,9407,9445,9371,9175,8864,8434,7891,7240,6489,5651,4743,3772, 2755,1708,642,-433,-1499,-2549,-3564,-4528,-5444,-6292,-7066,-7757,-8358,-8866,-9267,-9553,-9727,-9782,-9711,-9526, -9225,-8818,-8312,-7718,-7050,-6323,-5541,-4728,-3888,-3043,-2199,-1358,-535,268,1055,1825,2572,3297,4002,4687, 5348,5985,6598,7176,7713,8198,8618,8967,9225,9389,9444,9387,9217,8925,8515,7988,7357,6621,5799,4902, 3943,2930,1884,817,-256,-1324,-2375,-3397,-4377,-5297,-6159,-6951,-7657,-8276,-8797,-9215,-9525,-9719,-9795,-9746, -9582,-9302,-8910,-8420,-7842,-7187,-6467,-5697,-4884,-4047,-3204,-2357,-1516,-689,120,909,1682,2437,3167,3875, 4565,5229,5875,6490,7077,7625,8123,8558,8921,9196,9380,9453,9421,9270,9001,8614,8114,7500,6785,5978, 5091,4141,3144,2106,1046,-27,-1095,-2151,-3180,-4165,-5098,-5970,-6767,-7486,-8121,-8663,-9103,-9434,-9646,-9740, -9715,-9566,-9303,-8932,-8464,-7899,-7256,-6545,-5778,-4971,-4139,-3297,-2452,-1612,-788,28,823,1599,2354,3089, 3800,4486,5158,5804,6425,7023,7577,8083,8530,8901,9193,9388,9483,9473,9345,9100,8733,8246,7649,6947, 6154,5282,4344,3356,2323,1263,188,-884,-1953,-2988,-3981,-4923,-5800,-6618,-7356,-8012,-8575,-9035,-9386,-9618, -9730,-9726,-9604,-9368,-9020,-8572,-8025,-7394,-6688,-5933,-5135,-4312,-3475,-2636,-1793,-965,-147,654,1436,2189, 2921,3632,4319,4994,5647,6277,6877,7441,7953,8401,8787,9090,9308,9428,9438,9333,9105,8756,8286,7705, 7021,6250,5395,4471,3491,2461,1396,318,-759,-1820,-2859,-3856,-4804,-5698,-6533,-7292,-7967,-8543,-9017,-9383, -9629,-9765,-9786,-9688,-9478,-9148,-8714,-8180,-7555,-6862,-6118,-5331,-4514,-3682,-2834,-1990,-1148,-325,476,1255, 2013,2746,3459,4157,4839,5505,6142,6743,7309,7826,8290,8687,9014,9256,9396,9426,9338,9127,8795,8348, 7791,7132,6382,5542,4631,3651,2624,1560,486,-584,-1641,-2680,-3683,-4647,-5561,-6410,-7185,-7868,-8454,-8942, -9325,-9598,-9759,-9808,-9737,-9542,-9226,-8801,-8276,-7669,-6996,-6265,-5490,-4678,-3841,-2990,-2142,-1297,-475,325, 1102,1861,2601,3328,4034,4724,5389,6022,6627,7191,7718,8199,8618,8961,9221,9375,9417,9341,9151,8844, 8422,7892,7261,6520,5689,4777,3800,2781,1732,666,-399,-1457,-2505,-3530,-4509,-5433,-6293,-7070,-7763,-8364, -8872,-9282,-9585,-9775,-9842,-9785,-9600,-9299,-8893,-8391,-7813,-7156,-6434,-5664,-4847,-4004,-3152,-2303,-1466,-648, 156,937,1708,2460,3195,3909,4590,5255,5888,6497,7075,7619,8116,8552,8909,9176,9339,9398,9347,9183, 8906,8518,8006,7384,6652,5830,4928,3966,2964,1933,873,-196,-1264,-2327,-3363,-4348,-5277,-6134,-6921,-7628, -8254,-8785,-9223,-9551,-9754,-9834,-9786,-9620,-9342,-8962,-8490,-7928,-7280,-6560,-5786,-4967,-4131,-3282,-2444,-1610, -789,19,815,1594,2355,3092,3798,4480,5140,5781,6407,7001,7559,8064,8505,8869,9143,9324,9408,9383, 9253,9004,8630,8131,7514,6797,5989,5112,4171,3186,2158,1099,17,-1066,-2133,-3165,-4150,-5076,-5941,-6745, -7477,-8128,-8688,-9143,-9480,-9696,-9786,-9762,-9626,-9379,-9026,-8570,-8017,-7373,-6654,-5884,-5078,-4255,-3420,-2581, -1746,-917,-93,714,1496,2252,2980,3684,4371,5037,5694,6332,6935,7498,8002,8444,8818,9104,9312,9429, 9439,9323,9086,8718,8231,7630,6935,6157,5303,4382,3397,2360,1290,203,-883,-1938,-2965,-3953,-4887,-5775, -6606,-7364,-8036,-8606,-9064,-9411,-9642,-9762,-9773,-9670,-9452,-9116,-8665,-8115,-7483,-6774,-6022,-5236,-4427,-3595, -2748,-1899,-1057,-229,571,1351,2101,2826,3540,4236,4920,5587,6226,6828,7381,7888,8342,8732,9051,9291, 9427,9447,9342,9111,8759,8295,7728,7065,6312,5468,4547,3551,2515,1447,369,-701,-1748,-2779,-3777,-4739, -5651,-6499,-7267,-7941,-8511,-8985,-9348,-9616,-9773,-9814,-9732,-9526,-9194,-8751,-8214,-7595,-6919,-6187,-5408,-4598, -3753,-2900,-2043,-1198,-378,420,1194,1946,2688,3416,4128,4819,5484,6117,6713,7271,7795,8268,8687,9030, 9280,9427,9455,9359,9148,8828,8400,7864,7221,6474,5633,4708,3721,2694,1646,588,-474,-1532,-2579,-3598, -4582,-5504,-6356,-7120,-7800,-8388,-8880,-9284,-9583,-9766,-9820,-9747,-9545,-9232,-8812,-8302,-7716,-7055,-6331,-5553, -4732,-3883,-3028,-2177,-1342,-531,267,1048,1819,2573,3309,4022,4708,5364,5996,6599,7175,7715,8207,8640, 8992,9243,9392,9434,9368,9188,8906,8505,7985,7344,6599,5762,4847,3881,2873,1842,790,-284,-1359,-2425, -3457,-4441,-5362,-6210,-6981,-7681,-8298,-8828,-9258,-9577,-9770,-9833,-9770,-9589,-9302,-8915,-8437,-7866,-7214,-6492, -5704,-4884,-4044,-3196,-2357,-1528,-707,100,897,1680,2442,3180,3884,4563,5218,5858,6480,7074,7632,8133, 8567,8918,9180,9345,9415,9387,9244,8980,8592,8078,7447,6710,5895,5011,4072,3082,2052,983,-100,-1191, -2257,-3282,-4257,-5177,-6033,-6831,-7559,-8205,-8761,-9202,-9525,-9720,-9799,-9764,-9618,-9365,-9004,-8543,-7976,-7323, -6596,-5820,-5008,-4184,-3351,-2513,-1673,-843,-18,789,1574,2332,3050,3756,4443,5111,5766,6403,7005,7564, 8062,8492,8855,9137,9336,9443,9437,9310,9055,8672,8164,7555,6851,6063,5205,4274,3283,2237,1162,72, -1006,-2062,-3082,-4058,-4995,-5880,-6705,-7456,-8122,-8675,-9122,-9453,-9676,-9789,-9791,-9678,-9450,-9102,-8638,-8075, -7432,-6723,-5969,-5180,-4364,-3531,-2683,-1834,-987,-160,642,1415,2167,2892,3604,4301,4987,5653,6288,6884, 7440,7943,8385,8771,9084,9310,9433,9435,9322,9073,8710,8231,7656,6984,6220,5366,4437,3438,2391,1324, 251,-813,-1865,-2892,-3884,-4842,-5753,-6590,-7347,-8012,-8571,-9033,-9389,-9644,-9791,-9818,-9724,-9502,-9159,-8706, -8158,-7537,-6852,-6115,-5331,-4515,-3672,-2812,-1957,-1113,-295,499,1274,2028,2768,3491,4205,4893,5558,6187, 6781,7334,7854,8323,8735,9069,9308,9435,9454,9345,9128,8794,8354,7807,7153,6392,5540,4606,3617,2587, 1534,479,-581,-1642,-2683,-3703,-4681,-5597,-6437,-7192,-7860,-8442,-8934,-9321,-9608,-9776,-9824,-9734,-9520,-9194, -8765,-8247,-7652,-6985,-6258,-5472,-4646,-3799,-2945,-2095,-1263,-451,343,1125,1891,2643,3375,4084,4767,5425, 6049,6650,7227,7765,8249,8673,9013,9257,9396,9426,9352,9168,8869,8452,7922,7270,6514,5668,4753,3787, 2778,1740,683,-387,-1460,-2520,-3548,-4519,-5434,-6275,-7041,-7731,-8341,-8859,-9276,-9574,-9752,-9803,-9726,-9536, -9233,-8834,-8344,-7762,-7099,-6367,-5578,-4753,-3911,-3068,-2231,-1401,-578,227,1020,1799,2555,3282,3987,4662, 5321,5957,6577,7166,7717,8209,8635,8979,9238,9398,9462,9421,9265,8987,8585,8060,7421,6686,5860,4974, 4027,3031,1989,921,-164,-1244,-2304,-3327,-4297,-5209,-6067,-6859,-7578,-8211,-8747,-9173,-9483,-9671,-9737,-9695, -9532,-9264,-8894,-8413,-7835,-7176,-6445,-5675,-4863,-4034,-3198,-2363,-1527,-698,118,914,1691,2440,3162,3859, 4544,5209,5860,6484,7079,7632,8125,8552,8907,9185,9377,9464,9446,9308,9042,8648,8140,7523,6814,6015, 5144,4202,3203,2157,1087,2,-1076,-2129,-3150,-4130,-5061,-5940,-6757,-7491,-8140,-8684,-9122,-9450,-9656,-9762, -9745,-9609,-9363,-9002,-8531,-7964,-7311,-6599,-5842,-5044,-4224,-3390,-2544,-1704,-866,-46,747,1519,2263,2992, 3694,4389,5065,5722,6353,6946,7497,7998,8440,8819,9122,9336,9445,9436,9312,9064,8695,8211,7623,6938, 6161,5296,4361,3361,2323,1253,183,-885,-1936,-2964,-3960,-4909,-5804,-6634,-7379,-8033,-8589,-9043,-9389,-9630, -9757,-9767,-9653,-9416,-9068,-8611,-8057,-7427,-6730,-5984,-5200,-4381,-3538,-2689,-1841,-1003,-192,604,1372,2122, 2857,3573,4273,4954,5614,6242,6834,7388,7904,8361,8761,9086,9312,9434,9439,9334,9105,8761,8301,7742, 7072,6303,5442,4510,3519,2493,1432,368,11,-294,-1552,-2299,-2308,-1697,-368,1294,2565,3464,4109,4796, 6028,7662,9300,10614,11073,10693,10029,9397,8910,8539,7967,6880,5242,3249,1171,-802,-2625,-4071,-5247,-6393, -7536,-8590,-9694,-10672,-11200,-11360,-11383,-11255,-11197,-11497,-11941,-12197,-12186,-11741,-10691,-9284,-7838,-6495,-5367,-4446, -3579,-2652,-1625,-494,611,1628,2570,3397,4138,5025,6107,7267,8477,9653,10460,10843,11029,11083,11087,11244, 11453,11412,11035,10289,9153,7827,6562,5443,4485,3635,2677,1474,97,-1326,-2666,-3719,-4445,-4984,-5456,-5993, -6749,-7637,-8459,-9098,-9458,-9497,-9355,-9201,-9051,-8868,-8587,-8047,-7190,-6076,-4797,-3494,-2293,-1222,-262,568, 1236,1719,2000,2088,2041,1914,1741,1527,1256,951,677,532,581,832,1234,1718,2250,2882,3640,4501, 5422,6296,6960,7344,7485,7485,7481,7521,7510,7304,6773,5872,4687,3393,2117,998,71,-801,-1769,-2856, -4069,-5286,-6309,-7038,-7489,-7766,-7936,-8139,-8406,-8634,-8689,-8466,-7933,-7148,-6244,-5334,-4470,-3655,-2885,-2172, -1528,-990,-606,-368,-250,-253,-329,-371,-348,-172,229,874,1715,2681,3699,4740,5852,7107,8545,10048, 11398,12422,12992,13114,12937,12643,12307,11864,11223,10244,8868,7215,5484,3877,2519,1391,411,-575,-1702,-2992, -4349,-5643,-6736,-7558,-8174,-8754,-9425,-10224,-11095,-11888,-12441,-12654,-12514,-12129,-11656,-11178,-10709,-10143,-9340,-8222, -6856,-5346,-3829,-2426,-1211,-170,729,1502,2201,2869,3477,4025,4506,4912,5251,5604,6065,6671,7402,8168, 8827,9246,9399,9373,9271,9176,9096,8941,8570,7890,6937,5839,4737,3753,2925,2166,1337,330,-886,-2241, -3581,-4753,-5686,-6407,-7016,-7621,-8289,-8987,-9612,-10038,-10166,-9986,-9572,-9025,-8411,-7755,-7008,-6122,-5097,-4001, -2905,-1886,-996,-270,292,680,901,969,923,824,748,740,805,931,1100,1333,1697,2240,2979,3872, 4832,5776,6682,7598,8537,9486,10337,10911,11073,10774,10107,9230,8298,7409,6550,5627,4556,3277,1856,431, -886,-2000,-2915,-3741,-4598,-5553,-6616,-7707,-8673,-9381,-9812,-10032,-10132,-10226,-10362,-10477,-10453,-10175,-9619,-8804, -7813,-6779,-5801,-4872,-3962,-3056,-2138,-1214,-325,498,1248,1911,2483,3009,3555,4190,4954,5841,6782,7667, 8439,9094,9685,10273,10873,11414,11737,11712,11300,10561,9636,8689,7819,7005,6157,5172,3984,2611,1174,-186, -1385,-2415,-3331,-4237,-5233,-6334,-7466,-8513,-9362,-9958,-10329,-10555,-10733,-10893,-10986,-10897,-10530,-9846,-8878,-7737, -6533,-5334,-4186,-3082,-2041,-1089,-278,365,850,1200,1449,1611,1699,1716,1697,1706,1807,2043,2415,2893, 3445,4061,4756,5562,6458,7368,8182,8780,9111,9218,9182,9062,8861,8527,7971,7135,6039,4788,3517,2341, 1298,353,-592,-1622,-2768,-3973,-5133,-6142,-6944,-7566,-8084,-8584,-9132,-9700,-10204,-10522,-10573,-10351,-9911,-9339, -8714,-8058,-7349,-6553,-5668,-4725,-3779,-2885,-2068,-1337,-690,-109,422,934,1451,2014,2642,3333,4058,4822, 5635,6531,7540,8645,9758,10746,11476,11898,12044,12008,11872,11660,11314,10750,9904,8786,7485,6144,4879,3737, 2689,1635,494,-777,-2135,-3474,-4689,-5710,-6549,-7279,-7998,-8774,-9611,-10423,-11092,-11513,-11646,-11524,-11216,-10797, -10276,-9622,-8781,-7733,-6520,-5241,-3982,-2827,-1798,-907,-137,505,1025,1420,1721,1964,2194,2438,2708,3016, 3384,3837,4408,5086,5834,6574,7250,7829,8342,8814,9237,9562,9688,9523,9037,8285,7379,6448,5557,4700, 3813,2811,1660,394,-888,-2083,-3108,-3968,-4724,-5462,-6259,-7112,-7963,-8701,-9232,-9517,-9588,-9518,-9371,-9166, -8869,-8407,-7743,-6892,-5918,-4910,-3942,-3047,-2233,-1496,-832,-261,198,544,815,1054,1293,1555,1863,2239, 2709,3308,4045,4902,5821,6736,7618,8468,9310,10135,10875,11422,11645,11487,10984,10255,9434,8607,7789,6913, 5903,4707,3354,1936,575,-645,-1700,-2646,-3573,-4564,-5639,-6746,-7788,-8666,-9327,-9797,-10145,-10468,-10791,-11083, -11231,-11117,-10679,-9934,-8987,-7937,-6870,-5805,-4738,-3637,-2526,-1449,-469,375,1073,1648,2133,2553,2947,3340, 3760,4227,4751,5316,5898,6484,7094,7756,8469,9200,9851,10309,10486,10365,10014,9534,9007,8445,7797,6976, 5938,4696,3339,1989,751,-346,-1337,-2315,-3354,-4492,-5678,-6818,-7805,-8585,-9174,-9637,-10066,-10502,-10916,-11222, -11299,-11073,-10560,-9842,-9008,-8140,-7254,-6330,-5353,-4329,-3318,-2396,-1603,-966,-454,-44,295,580,819,1035, 1262,1544,1908,2361,2905,3545,4301,5179,6172,7211,8201,9023,9623,10000,10218,10338,10365,10246,9895,9239, 8279,7107,5854,4652,3560,2555,1549,456,-779,-2107,-3432,-4635,-5642,-6449,-7136,-7800,-8520,-9298,-10065,-10687, -11059,-11138,-10958,-10619,-10206,-9745,-9199,-8497,-7587,-6493,-5286,-4089,-2985,-2012,-1163,-408,284,931,1532,2083, 2596,3077,3552,4041,4580,5203,5950,6814,7754,8681,9498,10133,10585,10907,11161,11364,11459,11339,10910,10144, 9114,7954,6803,5751,4791,3831,2779,1572,228,-1159,-2460,-3576,-4493,-5274,-6025,-6830,-7722,-8632,-9443,-10032, -10347,-10394,-10267,-10058,-9801,-9471,-8976,-8247,-7272,-6129,-4934,-3800,-2780,-1884,-1089,-375,264,797,1209,1504, 1713,1884,2048,2243,2498,2844,3311,3891,4572,5296,6002,6671,7314,7968,8642,9288,9794,10034,9920,9466, 8771,7977,7189,6432,5648,4739,3631,2326,913,-469,-1707,-2752,-3647,-4492,-5398,-6410,-7491,-8531,-9404,-10031, -10415,-10630,-10787,-10955,-11116,-11175,-11005,-10529,-9745,-8762,-7703,-6672,-5710,-4794,-3887,-2964,-2055,-1201,-450,172, 678,1108,1499,1908,2369,2922,3575,4309,5083,5848,6582,7307,8070,8895,9756,10538,11097,11308,11139,10668, 10041,9384,8749,8087,7300,6292,5049,3636,2198,869,-267,-1239,-2146,-3098,-4171,-5348,-6533,-7598,-8436,-9029, -9444,-9796,-10182,-10616,-11015,-11229,-11127,-10657,-9880,-8926,-7916,-6922,-5940,-4920,-3831,-2695,-1584,-581,255,908, 1408,1800,2126,2426,2725,3042,3398,3795,4227,4692,5203,5799,6514,7347,8246,9092,9763,10164,10303,10263, 10142,9996,9799,9445,8837,7920,6747,5448,4186,3067,2100,1211,273,-799,-2017,-3295,-4498,-5509,-6283,-6865, -7368,-7908,-8528,-9186,-9750,-10071,-10067,-9743,-9200,-8566,-7922,-7277,-6570,-5737,-4765,-3701,-2644,-1691,-890,-252, 255,681,1061,1423,1774,2130,2494,2874,3275,3713,4240,4897,5719,6671,7673,8584,9300,9780,10064,10246, 10397,10496,10451,10133,9464,8462,7247,5989,4829,3811,2886,1929,831,-445,-1842,-3219,-4437,-5425,-6200,-6867, -7558,-8356,-9248,-10137,-10862,-11314,-11443,-11319,-11060,-10767,-10457,-10071,-9498,-8658,-7566,-6316,-5047,-3876,-2859,-1987, -1223,-518,132,729,1251,1694,2065,2383,2676,3000,3411,3955,4641,5427,6238,6974,7574,8056,8482,8915, 9358,9729,9891,9717,9163,8308,7306,6315,5423,4612,3770,2794,1606,247,-1163,-2469,-3573,-4452,-5199,-5931, -6758,-7702,-8691,-9572,-10221,-10578,-10663,-10599,-10488,-10384,-10235,-9940,-9378,-8517,-7427,-6229,-5051,-3985,-3037,-2183, -1388,-637,47,639,1121,1495,1786,2024,2254,2532,2903,3407,4046,4786,5554,6295,6989,7671,8400,9197, 10002,10688,11083,11091,10723,10093,9366,8664,8007,7315,6471,5389,4072,2629,1213,-40,-1084,-1964,-2808,-3734, -4795,-5953,-7080,-8034,-8729,-9166,-9443,-9686,-9976,-10309,-10568,-10597,-10284,-9618,-8693,-7649,-6615,-5645,-4722,-3781, -2797,-1783,-797,87,834,1418,1870,2234,2571,2934,3369,3885,4479,5101,5711,6286,6862,7507,8256,9093, 9916,10567,10910,10894,10586,10118,9628,9151,8649,7996,7094,5916,4543,3120,1800,664,-307,-1214,-2181,-3295, -4538,-5802,-6943,-7864,-8529,-9014,-9441,-9910,-10454,-10987,-11365,-11446,-11166,-10569,-9780,-8922,-8073,-7235,-6347,-5370, -4303,-3212,-2182,-1283,-553,8,443,793,1099,1401,1724,2089,2487,2910,3353,3830,4390,5084,5928,6875, 7817,8609,9157,9441,9546,9564,9565,9515,9304,8822,8004,6892,5628,4372,3248,2274,1372,426,-672,-1931, -3269,-4550,-5643,-6497,-7155,-7725,-8338,-9049,-9822,-10528,-11023,-11202,-11049,-10655,-10138,-9586,-9014,-8368,-7564,-6560, -5405,-4186,-3019,-1982,-1111,-393,215,758,1253,1724,2179,2620,3045,3452,3866,4332,4912,5651,6539,7510, 8440,9224,9802,10216,10540,10841,11112,11252,11135,10654,9817,8730,7563,6455,5471,4565,3628,2547,1279,-119, -1519,-2781,-3825,-4664,-5388,-6125,-6960,-7893,-8825,-9624,-10161,-10396,-10381,-10218,-10003,-9770,-9459,-8974,-8237,-7246, -6080,-4864,-3704,-2674,-1778,-995,-295,340,908,1399,1817,2166,2457,2711,2970,3291,3724,4305,5021,5806, 6576,7262,7858,8411,8979,9575,10123,10492,10548,10226,9578,8739,7853,7023,6239,5419,4453,3281,1925,499, -861,-2043,-3028,-3877,-4713,-5624,-6650,-7722,-8724,-9528,-10068,-10368,-10519,-10620,-10729,-10801,-10741,-10431,-9809,-8914, -7847,-6735,-5672,-4687,-3778,-2910,-2070,-1267,-537,97,624,1046,1380,1665,1947,2289,2738,3306,3982,4704, 5414,6093,6765,7484,8274,9100,9851,10372,10553,10381,9946,9379,8794,8214,7586,6808,5806,4579,3212,1847, 604,-466,-1394,-2283,-3236,-4309,-5461,-6596,-7585,-8356,-8899,-9286,-9622,-9982,-10359,-10659,-10752,-10536,-9989,-9180, -8223,-7223,-6245,-5282,-4305,-3304,-2293,-1321,-443,303,904,1363,1715,1996,2251,2535,2878,3302,3790,4317, 4861,5432,6070,6821,7676,8577,9389,9991,10309,10359,10226,10012,9753,9418,8920,8168,7144,5909,4596,3331, 2201,1197,241,-765,-1883,-3106,-4352,-5505,-6463,-7215,-7801,-8331,-8879,-9470,-10055,-10513,-10724,-10632,-10248,-9667, -8981,-8255,-7495,-6670,-5743,-4721,-3646,-2594,-1629,-799,-114,436,883,1260,1601,1948,2319,2726,3159,3606, 4083,4625,5276,6068,6965,7889,8721,9362,9785,10034,10168,10245,10230,10055,9620,8878,7865,6695,5500,4376, 3352,2377,1358,222,-1039,-2359,-3632,-4755,-5689,-6462,-7155,-7861,-8629,-9425,-10161,-10728,-11038,-11083,-10905,-10595, -10210,-9761,-9198,-8466,-7539,-6451,-5275,-4106,-3021,-2055,-1219,-498,126,672,1158,1602,2012,2394,2759,3118, 3504,3966,4549,5263,6072,6901,7663,8304,8831,9282,9695,10057,10292,10296,9991,9375,8514,7542,6564,5635, 4724,3766,2684,1455,126,-1204,-2435,-3504,-4417,-5245,-6070,-6946,-7876,-8784,-9572,-10161,-10507,-10652,-10666,-10600, -10473,-10238,-9823,-9176,-8301,-7252,-6127,-5007,-3951,-2978,-2095,-1293,-577,54,597,1068,1468,1821,2130,2431, 2760,3173,3700,4354,5101,5885,6645,7369,8073,8775,9476,10119,10592,10792,10671,10251,9630,8914,8173,7404, 6557,5574,4420,3121,1779,482,-689,-1729,-2677,-3612,-4592,-5636,-6687,-7660,-8475,-9097,-9544,-9876,-10154,-10406, -10586,-10618,-10411,-9935,-9208,-8300,-7305,-6282,-5271,-4273,-3288,-2323,-1412,-572,167,803,1333,1776,2158,2500, 2853,3260,3754,4327,4959,5615,6284,6971,7698,8476,9266,9981,10515,10789,10788,10557,10180,9722,9188,8553, 7748,6746,5569,4296,3016,1818,721,-300,-1310,-2368,-3492,-4641,-5742,-6719,-7528,-8184,-8733,-9244,-9745,-10214, -10585,-10763,-10689,-10354,-9799,-9103,-8311,-7464,-6562,-5602,-4589,-3560,-2568,-1655,-846,-156,423,898,1292,1633, 1958,2299,2688,3129,3620,4154,4740,5396,6143,6968,7824,8620,9275,9732,9989,10093,10078,9955,9686,9219, 8514,7577,6479,5312,4170,3085,2053,1008,-91,-1270,-2499,-3707,-4816,-5783,-6614,-7342,-8037,-8737,-9439,-10077, -10579,-10871,-10926,-10761,-10431,-9976,-9425,-8755,-7950,-7003,-5947,-4843,-3749,-2722,-1791,-966,-247,368,892,1339, 1734,2110,2492,2893,3323,3796,4334,4962,5694,6510,7354,8158,8860,9437,9903,10269,10535,10655,10570,10216, 9591,8744,7766,6750,5742,4747,3727,2631,1434,165,-1110,-2318,-3401,-4357,-5222,-6055,-6892,-7749,-8575,-9297, -9855,-10207,-10369,-10384,-10286,-10089,-9766,-9267,-8572,-7681,-6659,-5574,-4495,-3460,-2498,-1609,-807,-102,497,996, 1408,1764,2091,2410,2739,3100,3523,4039,4651,5349,6089,6832,7542,8220,8861,9462,9969,10312,10412,10232, 9791,9152,8409,7612,6775,5872,4857,3714,2460,1164,-98,-1268,-2329,-3310,-4263,-5234,-6230,-7223,-8137,-8917, -9524,-9974,-10303,-10557,-10745,-10837,-10772,-10483,-9952,-9210,-8317,-7352,-6362,-5375,-4396,-3430,-2507,-1655,-906,-265, 268,723,1122,1485,1836,2203,2612,3087,3643,4268,4940,5643,6378,7137,7917,8678,9344,9833,10078,10063, 9833,9446,8956,8383,7695,6856,5841,4678,3433,2183,998,-99,-1132,-2151,-3200,-4292,-5396,-6444,-7375,-8157, -8791,-9325,-9812,-10269,-10675,-10957,-11044,-10873,-10452,-9826,-9063,-8211,-7305,-6333,-5300,-4228,-3161,-2157,-1263,-498, 154,699,1168,1572,1939,2277,2620,2997,3424,3916,4468,5091,5792,6568,7397,8228,8984,9594,10016,10247, 10324,10276,10110,9790,9271,8519,7559,6446,5278,4130,3042,1997,946,-154,-1327,-2536,-3714,-4791,-5727,-6523, -7231,-7899,-8569,-9225,-9813,-10240,-10452,-10418,-10171,-9766,-9252,-8644,-7931,-7085,-6110,-5041,-3952,-2914,-1971,-1143, -425,204,750,1222,1626,1975,2293,2617,2965,3365,3831,4386,5043,5792,6606,7431,8201,8866,9408,9834, 10172,10397,10473,10330,9915,9232,8332,7308,6257,5229,4215,3185,2072,860,-424,-1714,-2924,-4004,-4947,-5799, -6616,-7453,-8311,-9138,-9858,-10395,-10717,-10836,-10804,-10673,-10451,-10113,-9601,-8881,-7965,-6906,-5799,-4722,-3718,-2797, -1948,-1166,-458,165,689,1126,1495,1820,2146,2499,2909,3399,3987,4663,5396,6148,6871,7554,8195,8806, 9377,9852,10149,10192,9937,9414,8704,7900,7073,6234,5339,4340,3202,1945,639,-626,-1783,-2803,-3731,-4629, -5551,-6514,-7489,-8389,-9140,-9694,-10065,-10300,-10458,-10560,-10580,-10449,-10088,-9463,-8613,-7617,-6562,-5524,-4521,-3554, -2606,-1691,-837,-81,551,1061,1473,1825,2154,2492,2872,3314,3827,4418,5060,5730,6421,7138,7892,8678, 9450,10131,10618,10835,10766,10463,10007,9471,8876,8195,7366,6357,5172,3881,2579,1355,247,-765,-1748,-2763, -3845,-4965,-6045,-7008,-7794,-8399,-8880,-9298,-9703,-10080,-10363,-10447,-10265,-9801,-9108,-8282,-7399,-6496,-5577,-4612, -3603,-2578,-1597,-717,23,625,1111,1524,1893,2251,2617,3013,3444,3915,4425,4975,5577,6258,7026,7860, 8690,9430,9980,10293,10377,10289,10099,9825,9443,8887,8106,7094,5909,4648,3423,2288,1243,224,-836,-1980, -3196,-4413,-5543,-6507,-7298,-7955,-8555,-9157,-9779,-10368,-10823,-11052,-11001,-10695,-10201,-9603,-8948,-8231,-7420,-6481, -5433,-4330,-3258,-2287,-1452,-756,-172,338,797,1223,1623,2008,2388,2781,3200,3668,4223,4893,5673,6532, 7397,8176,8804,9261,9569,9783,9919,9952,9807,9408,8722,7788,6698,5576,4505,3501,2529,1506,373,-866, -2159,-3394,-4503,-5434,-6224,-6942,-7672,-8452,-9245,-9978,-10535,-10851,-10910,-10768,-10505,-10172,-9767,-9241,-8533,-7621, -6539,-5379,-4233,-3185,-2255,-1440,-705,-40,570,1121,1600,2021,2391,2740,3102,3516,4026,4654,5398,6211, 7027,7782,8437,9005,9517,9996,10415,10696,10738,10475,9894,9084,8152,7211,6306,5416,4461,3386,2162,832, -500,-1729,-2799,-3717,-4553,-5387,-6280,-7227,-8155,-8963,-9570,-9941,-10115,-10166,-10160,-10109,-9958,-9632,-9053,-8215, -7194,-6086,-4990,-3970,-3032,-2158,-1325,-533,193,832,1367,1803,2156,2469,2782,3141,3587,4137,4783,5487, 6195,6872,7526,8171,8842,9521,10151,10618,10813,10681,10262,9647,8951,8241,7514,6715,5764,4632,3344,1989, 682,-494,-1531,-2465,-3391,-4372,-5435,-6518,-7529,-8385,-9023,-9472,-9800,-10083,-10364,-10605,-10711,-10582,-10159,-9459, -8573,-7602,-6632,-5693,-4765,-3831,-2881,-1936,-1053,-280,363,877,1288,1639,1981,2351,2783,3290,3848,4442, 5042,5652,6296,7005,7789,8605,9369,9948,10260,10281,10065,9706,9287,8820,8266,7538,6592,5434,4142,2833, 1610,518,-473,-1441,-2466,-3584,-4766,-5922,-6951,-7790,-8436,-8955,-9429,-9924,-10423,-10857,-11111,-11086,-10767,-10189, -9454,-8648,-7822,-6967,-6043,-5039,-3968,-2896,-1889,-1011,-285,298,773,1185,1567,1950,2349,2774,3226,3686, 4173,4707,5327,6058,6898,7786,8618,9293,9742,9983,10064,10056,9980,9800,9439,8825,7935,6832,5628,4443, 3351,2349,1377,346,-794,-2031,-3292,-4466,-5476,-6301,-6985,-7611,-8257,-8948,-9632,-10208,-10569,-10657,-10477,-10106, -9620,-9080,-8480,-7780,-6932,-5926,-4817,-3689,-2622,-1684,-888,-214,367,882,1361,1812,2241,2647,3039,3428, 3841,4324,4918,5640,6475,7346,8167,8855,9383,9785,10102,10369,10552,10570,10334,9788,8958,7941,6866,5827, 4854,3907,2905,1778,521,-808,-2106,-3272,-4267,-5110,-5883,-6661,-7502,-8376,-9204,-9884,-10333,-10533,-10536,-10412, -10225,-9978,-9618,-9078,-8308,-7326,-6217,-5069,-3981,-2997,-2124,-1337,-620,49,657,1202,1674,2076,2430,2754, 3105,3526,4060,4715,5464,6242,6986,7647,8238,8791,9331,9846,10266,10471,10380,9968,9296,8478,7621,6782, 5945,5049,4015,2825,1511,172,-1090,-2203,-3168,-4042,-4911,-5838,-6822,-7806,-8695,-9401,-9880,-10169,-10336,-10443, -10513,-10504,-10325,-9900,-9206,-8288,-7241,-6156,-5113,-4138,-3213,-2326,-1480,-683,33,650,1158,1568,1902,2203, 2518,2895,3364,3932,4574,5251,5921,6573,7239,7943,8686,9416,10033,10420,10511,10307,9886,9339,8750,8123, 7409,6537,5479,4242,2920,1613,411,-657,-1635,-2593,-3596,-4673,-5784,-6843,-7756,-8481,-9022,-9441,-9806,-10161, -10482,-10696,-10692,-10414,-9859,-9091,-8200,-7272,-6340,-5410,-4462,-3489,-2515,-1586,-741,-18,572,1044,1426,1766, 2098,2472,2901,3392,3932,4492,5067,5680,6359,7125,7956,8774,9477,9963,10191,10186,10019,9760,9427,8985, 8375,7543,6485,5279,4019,2809,1698,671,-327,-1376,-2508,-3700,-4872,-5948,-6858,-7598,-8213,-8775,-9341,-9908, -10424,-10793,-10931,-10791,-10407,-9841,-9172,-8447,-7671,-6807,-5853,-4820,-3747,-2708,-1758,-934,-246,318,799,1217, 1613,2014,2428,2860,3308,3770,4267,4833,5505,6284,7136,7981,8725,9297,9685,9917,10043,10085,10017,9764, 9270,8513,7534,6425,5296,4214,3194,2191,1141,-6,-1238,-2497,-3695,-4762,-5672,-6455,-7177,-7899,-8648,-9385, -10036,-10512,-10749,-10750,-10557,-10230,-9812,-9304,-8678,-7897,-6953,-5889,-4768,-3670,-2654,-1755,-977,-301,285,801, 1262,1686,2081,2454,2816,3183,3598,4100,4716,5444,6248,7056,7802,8443,8981,9451,9856,10176,10350,10288, 9942,9315,8485,7551,6594,5649,4701,3691,2578,1352,61,-1217,-2402,-3454,-4378,-5233,-6078,-6950,-7843,-8683, -9400,-9932,-10252,-10396,-10409,-10330,-10163,-9870,-9397,-8715,-7837,-6815,-5725,-4648,-3628,-2685,-1825,-1044,-340,292, 842,1323,1737,2097,2425,2751,3115,3560,4112,4771,5492,6234,6950,7635,8292,8940,9557,10089,10443,10546, 10364,9928,9306,8597,7839,7033,6147,5131,3977,2722,1429,180,-966,-2007,-2975,-3934,-4916,-5924,-6919,-7828, -8594,-9190,-9629,-9956,-10212,-10410,-10511,-10453,-10175,-9653,-8919,-8031,-7063,-6072,-5088,-4127,-3185,-2277,-1423,-647, 39,626,1118,1528,1883,2223,2579,2996,3492,4064,4688,5333,5997,6678,7392,8135,8872,9517,9990,10224, 10209,9982,9605,9128,8560,7879,7040,6035,4880,3647,2403,1223,118,-928,-1961,-3024,-4123,-5226,-6276,-7212, -8004,-8659,-9217,-9714,-10183,-10584,-10872,-10969,-10837,-10463,-9887,-9162,-8346,-7466,-6530,-5552,-4540,-3526,-2551,-1648, -851,-163,414,893,1300,1664,2020,2405,2828,3305,3823,4376,4982,5646,6387,7185,7991,8728,9324,9737, 9960,10026,9963,9773,9434,8906,8168,7237,6161,5026,3893,2800,1742,676,-428,-1580,-2758,-3904,-4965,-5905, -6722,-7454,-8135,-8794,-9421,-9974,-10388,-10610,-10612,-10413,-10046,-9547,-8940,-8222,-7389,-6446,-5420,-4365,-3327,-2351, -1468,-687,-13,561,1056,1486,1884,2268,2666,3079,3523,4007,4559,5192,5912,6703,7512,8276,8939,9486, 9910,10218,10410,10443,10283,9881,9248,8417,7462,6453,5429,4403,3351,2240,1061,-168,-1394,-2560,-3632,-4598, -5484,-6325,-7155,-7972,-8739,-9413,-9933,-10281,-10450,-10472,-10365,-10142,-9779,-9253,-8553,-7690,-6710,-5666,-4613,-3598, -2641,-1761,-965,-257,362,900,1370,1799,2195,2584,2980,3409,3898,4467,5118,5842,6586,7324,8019,8659, 9245,9756,10152,10379,10383,10139,9666,9012,8245,7410,6521,5568,4524,3388,2178,938,-276,-1423,-2485,-3479, -4441,-5392,-6343,-7264,-8111,-8842,-9427,-9874,-10200,-10424,-10553,-10562,-10409,-10053,-9491,-8745,-7860,-6895,-5893,-4889, -3894,-2934,-2025,-1197,-457,183,736,1214,1640,2028,2404,2794,3224,3718,4287,4921,5595,6297,7016,7739, 8458,9128,9700,10106,10297,10257,10016,9609,9081,8444,7693,6810,5790,4659,3457,2248,1074,-45,-1116,-2166, -3223,-4286,-5339,-6334,-7229,-8002,-8656,-9214,-9700,-10123,-10466,-10667,-10692,-10498,-10091,-9500,-8772,-7944,-7045,-6085, -5080,-4056,-3054,-2115,-1259,-509,139,702,1189,1623,2018,2400,2795,3230,3715,4258,4855,5511,6218,6976, 7754,8512,9182,9714,10070,10243,10252,10114,9834,9398,8780,7975,7010,5928,4796,3663,2555,1469,382,-736, -1883,-3034,-4144,-5169,-6087,-6898,-7625,-8307,-8952,-9548,-10050,-10404,-10571,-10530,-10304,-9919,-9400,-8769,-8017,-7147, -6173,-5129,-4077,-3065,-2130,-1291,-541,118,700,1208,1654,2056,2436,2827,3242,3704,4226,4820,5489,6225, 7001,7771,8484,9104,9605,9986,10248,10371,10332,10087,9614,8919,8055,7085,6069,5041,4004,2938,1811,628, -592,-1795,-2936,-3975,-4916,-5785,-6619,-7437,-8236,-8974,-9605,-10076,-10369,-10488,-10467,-10324,-10058,-9651,-9072,-8318, -7402,-6386,-5334,-4303,-3319,-2406,-1558,-779,-83,529,1056,1501,1896,2265,2637,3039,3496,4019,4617,5289, 6004,6733,7441,8117,8742,9310,9796,10156,10331,10270,9960,9430,8736,7940,7087,6185,5215,4155,2996,1765, 515,-697,-1830,-2871,-3848,-4793,-5739,-6686,-7600,-8430,-9127,-9665,-10055,-10324,-10499,-10580,-10538,-10325,-9902,-9257, -8431,-7487,-6493,-5494,-4507,-3541,-2606,-1714,-896,-178,433,938,1368,1749,2114,2491,2903,3368,3892,4475, 5108,5773,6468,7181,7911,8631,9303,9853,10216,10348,10242,9936,9485,8929,8277,7518,6622,5585,4428,3199, 1976,807,-289,-1331,-2353,-3391,-4444,-5497,-6488,-7366,-8105,-8707,-9209,-9643,-10022,-10328,-10502,-10479,-10221,-9733, -9064,-8271,-7412,-6508,-5566,-4584,-3576,-2582,-1647,-815,-102,495,998,1441,1846,2241,2640,3062,3517,4010, 4545,5132,5781,6491,7257,8046,8803,9454,9934,10212,10298,10223,10019,9697,9233,8594,7762,6749,5614,4427, 3256,2142,1070,5,-1092,-2239,-3404,-4539,-5583,-6497,-7280,-7965,-8600,-9212,-9790,-10292,-10643,-10780,-10678,-10368, -9894,-9311,-8637,-7876,-7010,-6040,-4993,-3929,-2909,-1992,-1189,-501,91,616,1087,1520,1924,2305,2691,3093, 3534,4040,4619,5294,6054,6851,7634,8338,8915,9351,9662,9861,9948,9895,9644,9161,8442,7524,6492,5427, 4378,3351,2316,1228,64,-1160,-2389,-3552,-4600,-5517,-6336,-7102,-7862,-8620,-9347,-9968,-10415,-10651,-10680,-10536, -10268,-9905,-9430,-8820,-8033,-7088,-6031,-4933,-3869,-2889,-2007,-1221,-509,136,713,1223,1669,2062,2423,2779, 3167,3618,4156,4793,5515,6287,7052,7768,8414,8993,9510,9958,10308,10484,10427,10102,9518,8746,7875,6969, 6054,5108,4090,2967,1741,465,-788,-1953,-2996,-3934,-4817,-5697,-6599,-7503,-8351,-9067,-9605,-9950,-10137,-10214, -10208,-10114,-9883,-9458,-8810,-7961,-6969,-5922,-4886,-3911,-2988,-2116,-1293,-522,176,782,1286,1709,2070,2408, 2757,3160,3639,4202,4835,5511,6195,6867,7525,8181,8839,9463,9986,10331,10419,10239,9818,9235,8565,7842, 7058,6177,5163,4004,2742,1455,218,-916,-1953,-2930,-3903,-4907,-5939,-6950,-7869,-8637,-9233,-9677,-10027,-10317, -10556,-10703,-10681,-10432,-9924,-9200,-8334,-7395,-6449,-5505,-4564,-3615,-2673,-1765,-940,-219,378,866,1274,1647, 2010,2411,2857,3361,3911,4494,5098,5730,6400,7131,7899,8659,9329,9822,10076,10092,9910,9594,9188,8694, 8073,7282,6301,5159,3933,2705,1538,464,-557,-1576,-2639,-3751,-4875,-5944,-6889,-7677,-8317,-8860,-9361,-9846, -10285,-10619,-10752,-10642,-10271,-9704,-9000,-8227,-7403,-6532,-5591,-4585,-3544,-2523,-1584,-763,-72,500,985,1421, 1835,2252,2682,3126,3592,4079,4595,5172,5831,6580,7398,8212,8952,9535,9928,10136,10202,10167,10026,9743, 9267,8559,7632,6546,5394,4257,3182,2148,1115,27,-1138,-2352,-3545,-4645,-5604,-6421,-7136,-7809,-8481,-9151, -9770,-10252,-10519,-10552,-10361,-10007,-9543,-9002,-8371,-7621,-6736,-5722,-4648,-3575,-2576,-1689,-926,-265,318,846, 1332,1789,2217,2620,3016,3420,3862,4383,5002,5726,6523,7327,8071,8698,9195,9587,9894,10116,10219,10130, 9796,9192,8363,7391,6370,5360,4379,3384,2324,1164,-78,-1349,-2565,-3664,-4628,-5482,-6285,-7094,-7924,-8742, -9479,-10058,-10431,-10597,-10595,-10479,-10279,-9984,-9551,-8934,-8122,-7140,-6068,-4984,-3957,-3015,-2161,-1383,-665,2, 605,1144,1616,2024,2397,2765,3168,3649,4230,4906,5647,6401,7114,7770,8365,8926,9450,9908,10228,10325, 10148,9701,9040,8255,7424,6577,5699,4739,3660,2459,1183,-95,-1288,-2366,-3332,-4241,-5147,-6083,-7039,-7955, -8755,-9388,-9836,-10122,-10299,-10408,-10447,-10372,-10111,-9623,-8900,-7996,-6988,-5962,-4956,-4003,-3085,-2203,-1360,-570, 140,752,1264,1692,2059,2411,2787,3223,3744,4337,4984,5651,6310,6968,7632,8321,9011,9647,10138,10401, 10397,10146,9710,9165,8553,7875,7093,6164,5075,3857,2588,1351,199,-859,-1855,-2845,-3866,-4928,-5983,-6960, -7807,-8487,-9016,-9448,-9826,-10167,-10435,-10566,-10482,-10149,-9579,-8827,-7978,-7082,-6173,-5247,-4300,-3335,-2379,-1473, -660,41,623,1104,1517,1898,2286,2715,3192,3713,4267,4841,5438,6075,6769,7529,8314,9049,9649,10043, 10204,10168,9979,9693,9304,8788,8103,7214,6147,4970,3758,2592,1496,452,-585,-1664,-2795,-3946,-5064,-6070, -6939,-7664,-8293,-8871,-9434,-9967,-10418,-10704,-10768,-10587,-10194,-9641,-8991,-8266,-7475,-6598,-5635,-4608,-3563,-2560, -1647,-857,-186,383,877,1330,1762,2195,2637,3092,3555,4041,4567,5169,5858,6629,7439,8215,8876,9380, 9716,9916,10003,9984,9830,9491,8918,8120,7144,6065,4971,3907,2873,1839,753,-404,-1615,-2824,-3962,-4980, -5867,-6654,-7391,-8117,-8838,-9519,-10093,-10490,-10670,-10645,-10442,-10119,-9690,-9161,-8504,-7698,-6758,-5713,-4637,-3591, -2623,-1760,-998,-330,260,803,1296,1753,2185,2591,2991,3409,3879,4435,5092,5833,6619,7389,8089,8687, 9189,9616,9962,10195,10257,10090,9665,9004,8169,7249,6298,5344,4363,3321,2190,974,-278,-1502,-2640,-3663, -4586,-5458,-6312,-7175,-8026,-8811,-9469,-9955,-10256,-10397,-10415,-10331,-10148,-9820,-9318,-8621,-7745,-6749,-5697,-4654, -3662,-2741,-1887,-1105,-385,271,852,1364,1816,2211,2584,2960,3386,3887,4481,5155,5868,6582,7271,7923, 8548,9142,9681,10108,10355,10354,10100,9621,8989,8263,7479,6636,5710,4668,3515,2283,1031,-174,-1294,-2328, -3305,-4266,-5243,-6219,-7164,-8012,-8731,-9295,-9716,-10027,-10263,-10412,-10448,-10317,-9980,-9418,-8668,-7785,-6828,-5848, -4878,-3925,-2996,-2104,-1266,-499,177,761,1253,1675,2053,2420,2816,3272,3793,4378,5007,5652,6313,6992, 7693,8406,9084,9660,10061,10236,10188,9944,9560,9063,8464,7744,6881,5868,4729,3532,2322,1166,66,-988, -2033,-3092,-4170,-5232,-6232,-7129,-7892,-8536,-9086,-9567,-9996,-10341,-10558,-10589,-10404,-9998,-9407,-8681,-7863,-6984, -6055,-5086,-4099,-3116,-2175,-1306,-530,137,697,1175,1591,1981,2372,2792,3250,3747,4281,4854,5470,6144, 6874,7641,8396,9066,9594,9944,10115,10129,10002,9747,9336,8745,7969,7019,5955,4828,3698,2595,1513,429, -685,-1830,-2981,-4097,-5132,-6058,-6874,-7608,-8289,-8927,-9517,-10019,-10378,-10555,-10527,-10307,-9919,-9401,-8769,-8030, -7189,-6251,-5248,-4222,-3214,-2272,-1417,-664,-11,551,1042,1482,1895,2301,2716,3146,3602,4104,4663,5298, 6011,6775,7541,8256,8874,9376,9751,10008,10132,10101,9877,9438,8791,7966,7020,6018,4989,3948,2880,1763, 597,-599,-1789,-2927,-3977,-4937,-5820,-6657,-7461,-8238,-8956,-9570,-10042,-10347,-10488,-10469,-10316,-10028,-9604,-9028, -8294,-7424,-6451,-5426,-4398,-3406,-2475,-1623,-855,-176,424,950,1426,1860,2272,2670,3082,3529,4032,4613, 5273,5990,6728,7448,8122,8739,9287,9744,10080,10249,10209,9942,9463,8809,8038,7184,6269,5288,4235,3101, 1911,696,-494,-1630,-2697,-3704,-4667,-5606,-6527,-7404,-8209,-8904,-9467,-9893,-10190,-10375,-10440,-10373,-10142,-9729, -9127,-8368,-7479,-6517,-5521,-4521,-3548,-2618,-1753,-965,-263,356,894,1370,1792,2183,2562,2960,3405,3915, 4494,5133,5808,6506,7208,7901,8572,9184,9688,10035,10182,10117,9855,9427,8864,8188,7398,6491,5467,4352, 3180,1993,826,-297,-1383,-2443,-3492,-4526,-5532,-6486,-7350,-8106,-8751,-9298,-9758,-10128,-10396,-10526,-10481,-10240, -9809,-9204,-8465,-7626,-6717,-5757,-4770,-3784,-2829,-1939,-1126,-404,229,778,1258,1689,2084,2475,2887,3340, 3849,4410,5023,5683,6386,7119,7852,8560,9177,9665,9985,10127,10102,9919,9578,9082,8425,7609,6650,5593, 4480,3354,2232,1123,12,-1105,-2232,-3347,-4417,-5411,-6318,-7133,-7871,-8544,-9155,-9697,-10131,-10424,-10542,-10472, -10223,-9818,-9271,-8599,-7811,-6917,-5947,-4937,-3925,-2954,-2050,-1231,-495,151,723,1218,1661,2068,2463,2877, 3318,3809,4352,4955,5619,6336,7079,7809,8486,9075,9549,9892,10099,10155,10033,9723,9212,8516,7667,6716, 5703,4659,3593,2495,1357,189,-993,-2152,-3256,-4281,-5229,-6107,-6945,-7741,-8485,-9160,-9717,-10134,-10391,-10490, -10441,-10255,-9922,-9443,-8805,-8016,-7105,-6118,-5105,-4107,-3148,-2249,-1419,-662,6,596,1105,1550,1961,2356, 2765,3206,3692,4237,4848,5517,6227,6947,7654,8316,8925,9448,9868,10144,10233,10112,9775,9240,8555,7760, 6889,5949,4942,3862,2711,1515,315,-854,-1960,-3003,-3995,-4952,-5885,-6790,-7643,-8406,-9052,-9567,-9952,-10217, -10370,-10407,-10298,-10017,-9545,-8886,-8081,-7170,-6206,-5225,-4248,-3289,-2366,-1496,-710,-12,587,1106,1560,1976, 2384,2803,3249,3736,4282,4877,5518,6194,6892,7593,8289,8945,9521,9967,10234,10293,10145,9815,9339,8734, 8023,7197,6253,5196,4052,2864,1680,530,-573,-1643,-2690,-3734,-4769,-5766,-6699,-7531,-8246,-8849,-9359,-9793, -10143,-10385,-10477,-10386,-10083,-9585,-8929,-8163,-7314,-6409,-5456,-4476,-3488,-2532,-1642,-845,-155,442,962,1428, 1863,2282,2707,3150,3622,4139,4701,5314,5977,6690,7433,8166,8845,9414,9825,10061,10119,10020,9779,9398, 8860,8160,7292,6285,5186,4052,2916,1811,718,-376,-1487,-2612,-3732,-4801,-5784,-6661,-7437,-8133,-8775,-9363, -9889,-10306,-10567,-10633,-10500,-10182,-9714,-9125,-8437,-7645,-6750,-5770,-4745,-3723,-2752,-1868,-1082,-394,217,768, 1263,1723,2152,2571,2994,3441,3932,4484,5109,5805,6551,7310,8036,8684,9214,9617,9892,10036,10048,9890, 9540,8976,8217,7309,6306,5266,4219,3166,2090,971,-199,-1392,-2558,-3661,-4669,-5580,-6415,-7203,-7968,-8699, -9361,-9908,-10294,-10493,-10522,-10396,-10145,-9774,-9269,-8618,-7814,-6876,-5856,-4815,-3804,-2866,-2001,-1214,-498,158, 741,1263,1725,2142,2537,2940,3376,3873,4447,5096,5804,6536,7257,7935,8549,9092,9562,9934,10176,10227, 10058,9657,9045,8279,7425,6519,5576,4580,3513,2368,1156,-70,-1262,-2377,-3404,-4354,-5267,-6165,-7053,-7906, -8679,-9322,-9805,-10134,-10330,-10411,-10390,-10247,-9949,-9457,-8773,-7922,-6963,-5958,-4962,-4004,-3084,-2207,-1379,-607, 81,682,1199,1640,2035,2424,2829,3285,3805,4385,5024,5694,6369,7039,7704,8354,8977,9530,9961,10200, 10213,9987,9564,8998,8331,7590,6764,5832,4781,3625,2407,1181,3,-1103,-2140,-3144,-4138,-5143,-6138,-7082, -7926,-8637,-9203,-9647,-10002,-10285,-10476,-10540,-10425,-10095,-9546,-8813,-7965,-7059,-6125,-5181,-4232,-3280,-2350,-1474, -678,8,588,1080,1508,1910,2313,2745,3218,3733,4289,4874,5490,6141,6825,7548,8281,8966,9542,9941, 10130,10108,9917,9592,9156,8600,7904,7049,6038,4908,3720,2540,1408,327,-727,-1785,-2869,-3965,-5045,-6044, -6932,-7690,-8332,-8898,-9415,-9880,-10267,-10516,-10570,-10395,-10012,-9454,-8781,-8023,-7208,-6326,-5376,-4378,-3370,-2401, -1511,-735,-71,501,1000,1461,1904,2344,2792,3252,3731,4233,4783,5393,6072,6818,7594,8341,8996,9502, 9840,10021,10067,9989,9782,9413,8851,8083,7139,6076,4964,3863,2787,1728,651,-471,-1641,-2816,-3950,-4993, -5911,-6721,-7455,-8150,-8824,-9457,-10001,-10396,-10593,-10580,-10376,-10026,-9564,-9002,-8331,-7538,-6621,-5610,-4561,-3532, -2579,-1724,-972,-309,287,834,1337,1805,2244,2663,3081,3516,3998,4561,5207,5932,6697,7448,8137,8723, 9198,9577,9862,10033,10056,9880,9472,8834,8013,7074,6092,5102,4102,3068,1972,800,-420,-1639,-2792,-3844, -4790,-5653,-6481,-7296,-8104,-8863,-9517,-10013,-10321,-10456,-10438,-10303,-10066,-9710,-9198,-8515,-7662,-6682,-5642,-4604, -3618,-2712,-1876,-1105,-396,258,845,1363,1824,2233,2620,3017,3457,3971,4573,5249,5970,6689,7379,8017, 8611,9163,9654,10047,10278,10286,10046,9575,8922,8159,7341,6478,5556,4549,3431,2233,990,-235,-1384,-2439, -3416,-4348,-5280,-6216,-7138,-7989,-8727,-9304,-9723,-10004,-10190,-10284,-10282,-10134,-9805,-9260,-8520,-7632,-6666,-5681, -4717,-3787,-2883,-2014,-1186,-422,261,849,1353,1780,2171,2553,2970,3445,3986,4586,5226,5879,6530,7179, 7845,8509,9150,9698,10086,10254,10188,9903,9461,8907,8275,7548,6704,5725,4616,3413,2186,987,-139,-1196, -2216,-3235,-4269,-5313,-6321,-7241,-8031,-8679,-9207,-9639,-10014,-10323,-10529,-10575,-10413,-10022,-9430,-8687,-7853,-6975, -6071,-5142,-4195,-3237,-2306,-1431,-652,20,585,1068,1501,1914,2338,2792,3288,3815,4372,4950,5560,6213, 6917,7658,8393,9055,9568,9891,10015,9960,9765,9454,9026,8452,7710,6792,5730,4583,3420,2286,1206,147, -912,-2008,-3127,-4243,-5300,-6253,-7082,-7791,-8419,-9002,-9547,-10030,-10400,-10600,-10590,-10361,-9943,-9383,-8727,-7989, -7175,-6279,-5308,-4290,-3280,-2317,-1448,-689,-37,531,1036,1509,1965,2418,2875,3344,3823,4333,4889,5519, 6224,6987,7755,8470,9071,9526,9832,10007,10064,9997,9774,9357,8731,7906,6934,5880,4809,3754,2707,1642, 531,-630,-1818,-2983,-4073,-5053,-5927,-6716,-7460,-8185,-8876,-9503,-10003,-10330,-10462,-10409,-10193,-9856,-9407,-8847, -8153,-7328,-6378,-5358,-4318,-3318,-2392,-1562,-821,-164,434,980,1485,1955,2396,2816,3238,3684,4188,4773, 5439,6171,6922,7642,8294,8850,9323,9706,9994,10148,10125,9880,9396,8713,7882,6974,6028,5059,4054,2984, 1839,633,-587,-1768,-2867,-3870,-4793,-5669,-6530,-7377,-8190,-8918,-9515,-9949,-10219,-10340,-10340,-10232,-10004,-9628, -9082,-8353,-7476,-6499,-5480,-4478,-3519,-2621,-1791,-1016,-303,346,926,1444,1904,2318,2718,3132,3599,4142, 4757,5434,6138,6835,7500,8136,8731,9288,9767,10114,10269,10199,9895,9394,8754,8019,7220,6349,5390,4327, 3172,1959,744,-425,-1525,-2553,-3535,-4505,-5471,-6422,-7322,-8125,-8795,-9327,-9727,-10026,-10233,-10340,-10319,-10128, -9734,-9140,-8377,-7500,-6562,-5604,-4650,-3714,-2801,-1928,-1106,-356,307,883,1373,1805,2204,2606,3038,3526, 4071,4668,5291,5933,6586,7258,7936,8608,9224,9722,10039,10149,10048,9772,9353,8824,8187,7420,6521,5492, 4361,3180,1998,857,-236,-1297,-2349,-3410,-4467,-5492,-6454,-7308,-8047,-8671,-9205,-9669,-10065,-10359,-10517,-10489, -10255,-9825,-9224,-8497,-7686,-6816,-5897,-4948,-3978,-3024,-2108,-1266,-517,132,690,1173,1611,2030,2457,2910, 3397,3919,4472,5057,5683,6363,7085,7820,8519,9127,9590,9879,10000,9966,9792,9482,9015,8382,7572,6619, 5560,4453,3337,2238,1153,61,-1053,-2182,-3307,-4385,-5385,-6284,-7089,-7813,-8475,-9088,-9640,-10085,-10391,-10517, -10449,-10197,-9790,-9251,-8604,-7847,-6994,-6061,-5070,-4063,-3081,-2162,-1329,-591,54,622,1127,1588,2033,2472, 2916,3374,3859,4384,4966,5614,6332,7073,7805,8469,9038,9484,9807,10003,10064,9963,9679,9189,8510,7673, 6730,5727,4694,3642,2562,1444,288,-890,-2055,-3161,-4192,-5141,-6018,-6839,-7627,-8370,-9041,-9610,-10037,-10302, -10403,-10351,-10159,-9832,-9366,-8755,-8005,-7134,-6173,-5166,-4166,-3202,-2301,-1478,-737,-76,515,1043,1526,1972, 2397,2813,3244,3712,4237,4836,5500,6209,6927,7616,8259,8833,9328,9728,9998,10098,10003,9690,9182,8513, 7726,6857,5924,4927,3863,2736,1562,370,-802,-1925,-2983,-3983,-4935,-5857,-6751,-7595,-8359,-9021,-9550,-9952, -10218,-10362,-10383,-10266,-9989,-9540,-8921,-8151,-7273,-6318,-5337,-4357,-3407,-2507,-1666,-897,-203,413,964,1450, 1888,2303,2713,3142,3619,4160,4762,5414,6092,6780,7465,8128,8747,9303,9744,10026,10116,10001,9700,9235, 8636,7922,7105,6177,5149,4044,2885,1713,557,-565,-1652,-2707,-3741,-4752,-5730,-6647,-7483,-8218,-8847,-9373, -9799,-10131,-10344,-10415,-10321,-10043,-9582,-8963,-8211,-7363,-6448,-5490,-4520,-3562,-2637,-1773,-978,-269,362,915, 1399,1839,2254,2669,3106,3590,4123,4704,5330,5984,6677,7378,8076,8726,9289,9722,9992,10084,10004,9765, 9371,8823,8132,7292,6337,5285,4181,3056,1927,808,-306,-1415,-2520,-3604,-4643,-5616,-6508,-7315,-8044,-8695, -9272,-9763,-10143,-10381,-10459,-10356,-10082,-9647,-9071,-8368,-7562,-6666,-5710,-4726,-3751,-2811,-1934,-1130,-412,228, 788,1280,1727,2148,2572,3012,3486,3998,4561,5173,5838,6535,7253,7955,8597,9147,9579,9871,10018,10003, 9818,9454,8907,8198,7347,6398,5383,4325,3237,2126,994,-160,-1310,-2439,-3519,-4532,-5476,-6354,-7177,-7944, -8649,-9266,-9774,-10152,-10377,-10447,-10368,-10137,-9758,-9229,-8558,-7756,-6857,-5891,-4905,-3927,-2988,-2103,-1287,-551, 104,677,1189,1648,2080,2507,2945,3414,3923,4485,5100,5768,6468,7177,7861,8503,9067,9537,9886,10085, 10101,9925,9554,9007,8309,7502,6607,5639,4603,3512,2367,1198,27,-1118,-2218,-3262,-4262,-5217,-6132,-7005, -7807,-8530,-9140,-9632,-10000,-10244,-10364,-10344,-10173,-9835,-9323,-8655,-7855,-6963,-6019,-5050,-4085,-3141,-2240,-1404, -642,28,618,1140,1607,2051,2484,2926,3392,3901,4461,5070,5719,6399,7093,7782,8440,9036,9540,9907, 10105,10112,9930,9571,9064,8422,7667,6799,5825,4762,3634,2471,1313,173,-940,-2019,-3076,-4112,-5117,-6076, -6962,-7758,-8457,-9055,-9561,-9973,-10282,-10461,-10490,-10335,-9997,-9488,-8835,-8071,-7218,-6306,-5351,-4374,-3411,-2485, -1628,-860,-178,418,954,1440,1898,2337,2787,3250,3746,4286,4875,5510,6187,6892,7601,8285,8899,9402, 9759,9952,9979,9843,9555,9111,8516,7766,6879,5878,4805,3694,2575,1463,355,-754,-1866,-2972,-4042,-5063, -6003,-6855,-7625,-8317,-8948,-9507,-9972,-10319,-10507,-10522,-10355,-10023,-9547,-8946,-8229,-7408,-6499,-5524,-4525,-3540, -2609,-1753,-983,-291,327,888,1399,1870,2315,2757,3211,3695,4224,4807,5454,6148,6869,7588,8266,8864, 9355,9722,9959,10051,9989,9751,9328,8719,7946,7046,6064,5035,3983,2907,1799,668,-488,-1648,-2770,-3832, -4814,-5720,-6565,-7360,-8109,-8801,-9402,-9884,-10213,-10383,-10394,-10261,-9990,-9587,-9037,-8349,-7523,-6593,-5605,-4602, -3631,-2718,-1869,-1086,-368,280,866,1388,1860,2295,2724,3167,3644,4179,4776,5428,6124,6830,7517,8168, 8759,9270,9692,9994,10143,10105,9859,9411,8789,8027,7174,6260,5287,4258,3163,2010,826,-362,-1509,-2592, -3608,-4568,-5492,-6387,-7246,-8048,-8757,-9345,-9793,-10100,-10283,-10350,-10295,-10097,-9732,-9195,-8487,-7639,-6710,-5742, -4773,-3831,-2919,-2050,-1230,-476,198,789,1307,1766,2196,2623,3072,3567,4111,4705,5344,6004,6676,7344, 8002,8627,9202,9680,10016,10166,10102,9840,9398,8826,8143,7370,6496,5524,4447,3305,2114,934,-209,-1299, -2349,-3364,-4367,-5359,-6314,-7203,-7988,-8656,-9206,-9647,-9996,-10256,-10405,-10406,-10227,-9845,-9279,-8563,-7743,-6860, -5946,-5007,-4059,-3114,-2204,-1351,-584,86,668,1175,1638,2080,2525,2994,3495,4026,4594,5192,5819,6481, 7168,7868,8548,9157,9635,9944,10067,10005,9788,9431,8947,8331,7574,6674,5645,4531,3382,2237,1122,36, -1039,-2116,-3203,-4273,-5299,-6250,-7094,-7829,-8471,-9040,-9550,-9982,-10305,-10480,-10463,-10245,-9845,-9289,-8623,-7870, -7039,-6141,-5185,-4195,-3213,-2278,-1427,-672,-15,567,1088,1579,2046,2513,2980,3454,3955,4488,5065,5700, 6392,7124,7853,8537,9120,9565,9863,10018,10030,9910,9638,9198,8577,7775,6829,5791,4716,3636,2563,1486, 385,-747,-1899,-3032,-4112,-5099,-5990,-6795,-7533,-8228,-8879,-9462,-9933,-10251,-10387,-10335,-10118,-9763,-9290,-8705, -8001,-7178,-6249,-5257,-4242,-3259,-2347,-1523,-778,-115,490,1044,1559,2038,2491,2928,3369,3840,4363,4955, 5615,6330,7060,7764,8399,8948,9392,9738,9973,10077,10013,9749,9272,8601,7778,6857,5885,4893,3868,2800, 1674,499,-699,-1872,-2981,-4003,-4941,-5814,-6653,-7471,-8249,-8959,-9545,-9985,-10259,-10370,-10347,-10206,-9943,-9546, -8991,-8273,-7414,-6452,-5451,-4462,-3515,-2631,-1807,-1043,-337,312,892,1412,1872,2300,2714,3148,3627,4176, 4790,5461,6155,6844,7503,8123,8691,9207,9640,9950,10087,10008,9709,9206,8555,7800,6977,6089,5131,4088, 2960,1770,559,-613,-1729,-2766,-3745,-4695,-5632,-6551,-7433,-8226,-8898,-9429,-9823,-10090,-10259,-10326,-10271,-10057, -9658,-9065,-8309,-7430,-6494,-5536,-4591,-3670,-2775,-1914,-1100,-353,310,884,1383,1826,2239,2660,3111,3618, 4180,4782,5414,6059,6708,7363,8015,8659,9245,9718,10024,10122,10009,9711,9267,8705,8050,7285,6403,5392, 4279,3104,1916,758,-347,-1405,-2438,-3474,-4502,-5515,-6474,-7337,-8080,-8699,-9210,-9639,-9996,-10259,-10397,-10365, -10126,-9691,-9081,-8340,-7520,-6649,-5746,-4820,-3872,-2932,-2030,-1193,-450,192,746,1233,1676,2110,2554,3025, 3523,4056,4611,5198,5815,6476,7172,7885,8561,9152,9593,9860,9941,9868,9654,9310,8839,8211,7421,6480, 5420,4296,3160,2050,962,-108,-1194,-2297,-3408,-4488,-5500,-6409,-7209,-7913,-8545,-9116,-9635,-10065,-10365,-10488, -10412,-10142,-9702,-9138,-8471,-7721,-6887,-5977,-5010,-4015,-3040,-2125,-1301,-578,58,615,1128,1606,2070,2531, 2997,3467,3959,4486,5069,5711,6417,7157,7881,8541,9087,9501,9779,9931,9954,9839,9560,9086,8416,7577, 6617,5587,4538,3483,2425,1336,208,-951,-2119,-3241,-4292,-5240,-6103,-6893,-7640,-8349,-9008,-9576,-10010,-10275, -10353,-10263,-10025,-9660,-9183,-8584,-7856,-7004,-6054,-5050,-4048,-3088,-2201,-1397,-677,-29,565,1110,1614,2081, 2524,2952,3389,3862,4391,4998,5671,6388,7107,7786,8397,8924,9367,9719,9958,10049,9954,9645,9127,8426, 7598,6698,5753,4769,3736,2643,1485,289,-903,-2052,-3122,-4114,-5035,-5918,-6774,-7605,-8379,-9053,-9594,-9984, -10214,-10310,-10283,-10140,-9864,-9433,-8835,-8079,-7197,-6233,-5249,-4280,-3354,-2487,-1674,-921,-224,407,973,1478, 1928,2350,2765,3204,3697,4257,4882,5549,6233,6903,7552,8168,8743,9262,9684,9961,10045,9915,9577,9062, 8415,7675,6860,5963,4975,3894,2736,1545,356,-786,-1866,-2893,-3880,-4851,-5806,-6728,-7585,-8339,-8970,-9468, -9841,-10119,-10294,-10354,-10273,-10019,-9574,-8947,-8174,-7305,-6382,-5443,-4506,-3587,-2689,-1830,-1031,-301,346,911, 1404,1851,2275,2709,3177,3694,4259,4863,5490,6134,6789,7452,8116,8748,9306,9734,9984,10037,9893,9591, 9149,8593,7916,7116,6190,5146,4023,2861,1701,576,-513,-1573,-2633,-3682,-4723,-5717,-6641,-7460,-8166,-8773, -9290,-9732,-10087,-10333,-10428,-10343,-10062,-9602,-8985,-8254,-7445,-6575,-5663,-4720,-3768,-2832,-1943,-1124,-396,239, 794,1286,1743,2191,2649,3129,3638,4171,4735,5334,5971,6649,7354,8054,8703,9245,9643,9872,9943,9864, 9646,9283,8765,8085,7247,6284,5225,4125,3022,1927,837,-260,-1372,-2491,-3587,-4632,-5603,-6476,-7262,-7970, -8619,-9206,-9715,-10114,-10363,-10440,-10333,-10053,-9627,-9074,-8413,-7647,-6796,-5864,-4890,-3907,-2953,-2059,-1247,-527, 113,683,1204,1695,2169,2638,3108,3592,4103,4654,5260,5925,6634,7357,8049,8670,9184,9575,9849,9987, 9984,9819,9474,8935,8224,7370,6419,5416,4380,3321,2236,1112,-37,-1197,-2335,-3418,-4425,-5356,-6218,-7030, -7797,-8508,-9145,-9666,-10049,-10277,-10343,-10262,-10043,-9688,-9199,-8571,-7811,-6940,-5988,-5002,-4024,-3082,-2202,-1394, -661,2,602,1154,1660,2134,2587,3035,3503,4004,4565,5185,5861,6561,7260,7916,8517,9044,9484,9815, 10010,10038,9868,9498,8948,8250,7439,6555,5604,4593,3522,2391,1229,49,-1103,-2205,-3249,-4238,-5184,-6091, -6957,-7769,-8501,-9124,-9625,-9989,-10228,-10344,-10322,-10168,-9856,-9382,-8746,-7973,-7094,-6155,-5189,-4231,-3304,-2420, -1596,-837,-146,478,1039,1545,2010,2447,2892,3359,3873,4445,5064,5725,6398,7072,7726,8354,8928,9421, 9790,10001,10021,9853,9501,8993,8357,7608,6762,5820,4786,3682,2531,1372,227,-886,-1966,-3013,-4027,-5018, -5969,-6859,-7664,-8374,-8979,-9476,-9876,-10167,-10337,-10365,-10231,-9924,-9445,-8813,-8057,-7206,-6297,-5353,-4400,-3463, -2556,-1704,-919,-205,427,993,1496,1959,2407,2857,3337,3858,4419,5021,5656,6315,6990,7668,8326,8927, 9431,9801,10006,10035,9896,9599,9151,8560,7834,6976,6010,4960,3859,2733,1606,488,-617,-1717,-2800,-3857, -4869,-5819,-6693,-7484,-8188,-8812,-9355,-9803,-10137,-10334,-10373,-10242,-9938,-9481,-8883,-8164,-7353,-6459,-5521,-4558, -3602,-2681,-1815,-1020,-301,336,904,1413,1887,2344,2803,3284,3792,4337,4919,5541,6207,6895,7585,8253, 8850,9349,9721,9950,10023,9942,9690,9274,8685,7954,7089,6134,5109,4043,2950,1837,712,-422,-1553,-2657, -3715,-4713,-5647,-6513,-7315,-8052,-8717,-9300,-9770,-10110,-10307,-10349,-10237,-9972,-9559,-9003,-8316,-7515,-6626,-5683, -4714,-3754,-2828,-1960,-1157,-432,215,792,1314,1797,2261,2717,3186,3680,4213,4788,5410,6075,6764,7454, 8111,8707,9221,9623,9897,10018,9965,9738,9327,8746,8030,7197,6277,5287,4238,3141,2009,856,-294,-1426, -2517,-3562,-4554,-5498,-6396,-7235,-8003,-8687,-9271,-9737,-10082,-10294,-10374,-10307,-10085,-9705,-9166,-8488,-7690,-6807, -5873,-4916,-3960,-3031,-2154,-1339,-602,58,647,1178,1664,2129,2585,3047,3536,4060,4632,5247,5902,6581, 7263,7924,8540,9086,9522,9828,9967,9928,9712,9324,8789,8112,7323,6429,5443,4384,3272,2133,989,-142, -1251,-2333,-3381,-4396,-5372,-6291,-7139,-7906,-8580,-9157,-9638,-10007,-10261,-10380,-10343,-10136,-9764,-9232,-8568,-7793, -6932,-6010,-5058,-4094,-3153,-2259,-1434,-685,-15,589,1130,1630,2103,2563,3024,3507,4026,4589,5196,5843, 6522,7211,7890,8526,9086,9538,9848,10001,9993,9816,9483,8990,8352,7574,6675,5683,4620,3524,2409,1291, 173,-940,-2046,-3125,-4167,-5151,-6067,-6903,-7665,-8350,-8955,-9480,-9890,-10176,-10308,-10279,-10081,-9727,-9230,-8604, -7865,-7027,-6110,-5147,-4176,-3228,-2334,-1507,-754,-74,542,1099,1605,2076,2531,2981,3454,3959,4508,5111, 5757,6434,7127,7807,8440,8997,9450,9780,9972,10010,9884,9588,9112,8471,7688,6791,5816,4787,3720,2627, 1506,365,-780,-1910,-3002,-4038,-5004,-5906,-6753,-7538,-8263,-8912,-9460,-9885,-10168,-10299,-10282,-10121,-9815,-9365, -8775,-8049,-7210,-6286,-5323,-4357,-3417,-2527,-1695,-929,-223,410,981,1493,1966,2413,2859,3324,3827,4380, 4984,5631,6307,6992,7655,8283,8847,9329,9708,9950,10032,9929,9636,9163,8529,7773,6917,5987,4996,3940, 2831,1683,517,-638,-1756,-2821,-3835,-4799,-5723,-6600,-7432,-8189,-8843,-9381,-9793,-10078,-10233,-10269,-10161,-9904, -9481,-8893,-8163,-7322,-6411,-5468,-4521,-3593,-2695,-1842,-1046,-320,332,904,1415,1879,2328,2780,3252,3762, 4318,4914,5548,6202,6862,7525,8163,8761,9282,9697,9955,10036,9930,9640,9185,8597,7899,7091,6183,5180, 4098,2962,1799,646,-477,-1564,-2619,-3646,-4650,-5619,-6539,-7381,-8125,-8762,-9291,-9719,-10049,-10269,-10357,-10292, -10045,-9620,-9032,-8314,-7504,-6633,-5723,-4787,-3849,-2924,-2044,-1228,-492,156,727,1242,1717,2181,2647,3132, 3637,4178,4753,5358,5998,6662,7342,8014,8641,9181,9592,9843,9922,9836,9591,9207,8681,8018,7219,6294, 5262,4168,3043,1921,813,-285,-1371,-2456,-3527,-4570,-5554,-6460,-7269,-7992,-8624,-9185,-9667,-10054,-10312,-10415, -10337,-10082,-9659,-9101,-8429,-7668,-6828,-5921,-4965,-3998,-3044,-2151,-1335,-607,44,626,1160,1660,2141,2617, 3093,3583,4098,4652,5253,5901,6587,7294,7978,8605,9129,9527,9784,9904,9880,9707,9379,8878,8204,7380, 6437,5419,4361,3287,2205,1109,-8,-1142,-2270,-3368,-4407,-5364,-6235,-7032,-7774,-8456,-9079,-9612,-10018,-10274, -10358,-10274,-10038,-9669,-9171,-8559,-7824,-6982,-6054,-5076,-4096,-3156,-2275,-1473,-742,-78,532,1089,1610,2093, 2556,3010,3479,3979,4532,5150,5818,6513,7215,7875,8474,8987,9401,9712,9898,9937,9800,9470,8947,8253, 7431,6524,5562,4557,3515,2422,1290,121,-1049,-2183,-3252,-4247,-5179,-6057,-6897,-7695,-8435,-9088,-9613,-9996, -10232,-10319,-10278,-10107,-9809,-9361,-8758,-8011,-7144,-6202,-5234,-4276,-3357,-2487,-1674,-915,-213,425,1003,1521, 1993,2438,2881,3351,3865,4439,5064,5729,6405,7069,7711,8309,8848,9324,9701,9930,9988,9834,9490,8964, 8307,7546,6713,5797,4811,3738,2604,1430,253,-888,-1975,-3007,-3992,-4949,-5879,-6775,-7609,-8353,-8976,-9472, -9842,-10098,-10247,-10275,-10170,-9898,-9450,-8829,-8064,-7205,-6293,-5360,-4434,-3520,-2632,-1783,-987,-261,384,959, 1461,1923,2368,2824,3310,3841,4414,5020,5649,6294,6938,7588,8224,8824,9344,9739,9966,9999,9841,9518, 9051,8470,7778,6974,6052,5024,3911,2756,1600,469,-625,-1687,-2730,-3759,-4781,-5760,-6668,-7486,-8193,-8792, -9291,-9708,-10034,-10249,-10327,-10229,-9942,-9474,-8854,-8121,-7308,-6450,-5543,-4616,-3675,-2751,-1868,-1059,-334,306, 864,1371,1844,2312,2788,3285,3809,4357,4927,5528,6164,6830,7516,8193,8815,9331,9703,9906,9949,9836, 9584,9199,8670,7990,7158,6196,5138,4036,2926,1824,738,-346,-1445,-2542,-3629,-4673,-5640,-6517,-7292,-7985, -8608,-9170,-9655,-10034,-10274,-10337,-10217,-9920,-9475,-8906,-8235,-7477,-6633,-5719,-4759,-3788,-2843,-1962,-1162,-451, 182,754,1286,1788,2275,2756,3237,3729,4244,4799,5400,6058,6755,7462,8138,8736,9224,9586,9818,9921, 9889,9707,9355,8815,8104,7243,6282,5264,4224,3164,2088,983,-150,-1303,-2439,-3528,-4540,-5467,-6314,-7104, -7848,-8537,-9163,-9680,-10051,-10267,-10312,-10199,-9949,-9573,-9075,-8453,-7705,-6842,-5904,-4920,-3951,-3023,-2163,-1376, -655,3,607,1168,1686,2172,2632,3088,3559,4069,4633,5264,5939,6636,7323,7965,8536,9029,9430,9731, 9906,9922,9748,9374,8809,8096,7266,6366,5415,4417,3361,2256,1098,-80,-1242,-2354,-3399,-4372,-5290,-6173, -7018,-7821,-8550,-9177,-9665,-10013,-10214,-10290,-10238,-10061,-9745,-9276,-8644,-7871,-6988,-6042,-5087,-4139,-3234,-2377, -1569,-815,-122,514,1081,1597,2066,2509,2958,3437,3966,4551,5184,5847,6515,7166,7793,8381,8923,9391, 9742,9942,9950,9759,9374,8837,8174,7420,6579,5653,4642,3549,2393,1220,58,-1063,-2131,-3149,-4139,-5104, -6045,-6936,-7753,-8462,-9054,-9524,-9879,-10132,-10274,-10292,-10154,-9848,-9365,-8718,-7942,-7080,-6175,-5251,-4328,-3416, -2535,-1690,-903,-192,445,1006,1504,1964,2415,2882,3378,3915,4496,5102,5728,6368,7018,7668,8305,8897, 9390,9748,9930,9925,9744,9409,8940,8352,7639,6807,5854,4802,3681,2536,1396,286,-797,-1867,-2923,-3965, -4984,-5949,-6832,-7618,-8299,-8887,-9384,-9798,-10118,-10313,-10353,-10214,-9893,-9400,-8773,-8042,-7229,-6364,-5454,-4520, -3578,-2660,-1791,-997,-287,341,898,1402,1885,2359,2840,3344,3869,4420,4997,5605,6250,6925,7613,8277, 8873,9355,9690,9871,9895,9779,9513,9103,8541,7821,6959,5981,4927,3841,2743,1649,555,-548,-1657,-2761, -3838,-4855,-5794,-6644,-7412,-8107,-8736,-9297,-9767,-10114,-10310,-10335,-10184,-9875,-9424,-8854,-8175,-7400,-6538,-5611, -4647,-3684,-2757,-1893,-1105,-401,236,805,1337,1846,2337,2819,3304,3805,4335,4903,5521,6188,6886,7579, 8230,8802,9268,9617,9840,9933,9877,9656,9253,8675,7939,7071,6121,5118,4079,3017,1924,797,-349,-1491, -2609,-3663,-4647,-5563,-6412,-7210,-7957,-8638,-9231,-9710,-10044,-10227,-10256,-10141,-9888,-9499,-8975,-8323,-7545,-6667, -5722,-4756,-3799,-2884,-2028,-1242,-517,142,745,1300,1817,2301,2772,3240,3730,4255,4839,5475,6147,6836, 7508,8136,8703,9192,9587,9868,10004,9974,9751,9340,8759,8043,7223,6323,5359,4336,3258,2126,969,-193, -1325,-2412,-3440,-4418,-5351,-6242,-7088,-7869,-8564,-9150,-9609,-9942,-10143,-10217,-10161,-9961,-9609,-9100,-8439,-7660, -6780,-5849,-4904,-3967,-3061,-2198,-1393,-641,40,664,1225,1735,2210,2667,3138,3630,4170,4758,5388,6041, 6706,7358,7988,8580,9107,9546,9857,10001,9964,9739,9349,8807,8142,7370,6502,5540,4497,3390,2250,1096, -39,-1143,-2214,-3252,-4256,-5228,-6156,-7016,-7799,-8479,-9052,-9523,-9882,-10136,-10263,-10248,-10075,-9727,-9219,-8568, -7801,-6954,-6049,-5123,-4189,-3274,-2391,-1556,-789,-86,540,1101,1610,2085,2555,3028,3534,4075,4655,5262, 5901,6550,7207,7864,8482,9040,9484,9795,9940,9916,9730,9387,8900,8278,7525,6650,5675,4620,3518,2399, 1278,166,-933,-2022,-3090,-4127,-5118,-6044,-6895,-7661,-8341,-8934,-9443,-9849,-10137,-10292,-10286,-10112,-9775,-9285, -8667,-7934,-7113,-6229,-5301,-4357,-3422,-2520,-1675,-895,-196,436,1003,1517,2005,2482,2967,3468,3997,4555, 5148,5775,6431,7110,7777,8406,8960,9407,9727,9899,9918,9781,9483,9028,8414,7658,6779,5814,4782,3712, 2616,1504,382,-742,-1854,-2940,-3984,-4964,-5882,-6728,-7509,-8219,-8849,-9390,-9821,-10120,-10278,-10279,-10127,-9822, -9371,-8786,-8085,-7280,-6395,-5464,-4514,-3571,-2672,-1821,-1040,-330,307,883,1412,1910,2391,2872,3362,3877, 4426,5015,5645,6305,6987,7653,8280,8834,9297,9645,9860,9922,9816,9542,9095,8490,7750,6899,5963,4961, 3905,2812,1689,550,-585,-1703,-2781,-3813,-4792,-5715,-6586,-7394,-8131,-8780,-9332,-9763,-10075,-10248,-10278,-10166, -9898,-9477,-8920,-8226,-7426,-6549,-5621,-4672,-3733,-2826,-1968,-1179,-457,193,786,1327,1830,2315,2789,3271, 3781,4323,4910,5539,6194,6866,7527,8158,8729,9217,9596,9842,9927,9842,9582,9158,8586,7878,7061,6149, 5156,4096,2993,1865,725,-402,-1508,-2583,-3619,-4618,-5563,-6455,-7276,-8020,-8672,-9225,-9673,-10007,-10214,-10280, -10195,-9952,-9552,-9004,-8326,-7544,-6682,-5762,-4822,-3882,-2968,-2106,-1302,-568,94,696,1245,1755,2235,2708, 3187,3685,4222,4802,5421,6072,6736,7400,8041,8630,9138,9537,9795,9900,9839,9613,9230,8692,8015,7215, 6304,5309,4251,3158,2043,919,-202,-1310,-2401,-3459,-4474,-5435,-6328,-7150,-7897,-8561,-9139,-9621,-9981,-10215, -10304,-10233,-10007,-9628,-9108,-8457,-7700,-6851,-5940,-4998,-4054,-3137,-2267,-1459,-715,-41,571,1129,1642,2125, 2592,3064,3561,4095,4665,5278,5927,6593,7264,7909,8506,9020,9431,9715,9853,9835,9650,9298,8781,8116, 7321,6420,5445,4410,3336,2230,1107,-26,-1149,-2256,-3321,-4330,-5291,-6180,-7013,-7780,-8474,-9080,-9580,-9958, -10200,-10298,-10249,-10053,-9712,-9223,-8600,-7853,-7011,-6099,-5157,-4217,-3299,-2429,-1608,-847,-156,473,1038,1554, 2038,2504,2978,3474,4003,4571,5183,5831,6493,7156,7798,8397,8927,9360,9681,9858,9869,9703,9363,8860, 8213,7441,6574,5627,4614,3544,2430,1292,148,-983,-2077,-3133,-4137,-5096,-6009,-6867,-7660,-8369,-8984,-9483, -9864,-10118,-10248,-10239,-10087,-9778,-9311,-8695,-7954,-7120,-6226,-5297,-4368,-3449,-2566,-1724,-946,-240,397,969, 1488,1974,2447,2925,3426,3951,4519,5124,5755,6405,7062,7709,8324,8879,9346,9691,9886,9908,9754,9434, 8960,8351,7621,6786,5852,4834,3750,2628,1487,356,-754,-1840,-2893,-3916,-4905,-5846,-6725,-7524,-8230,-8839, -9346,-9753,-10048,-10222,-10252,-10125,-9828,-9370,-8766,-8045,-7237,-6370,-5458,-4529,-3599,-2694,-1842,-1049,-336,299, 876,1403,1895,2380,2864,3364,3887,4440,5023,5641,6287,6948,7609,8248,8824,9303,9653,9853,9887,9762, 9484,9063,8494,7789,6955,6010,4982,3899,2791,1674,566,-536,-1632,-2712,-3766,-4778,-5728,-6600,-7388,-8091, -8715,-9255,-9706,-10042,-10243,-10288,-10161,-9871,-9429,-8859,-8178,-7404,-6552,-5641,-4694,-3749,-2830,-1967,-1176,-464, 182,768,1312,1824,2317,2803,3293,3800,4336,4909,5526,6179,6858,7534,8177,8751,9226,9576,9792,9871, 9800,9575,9187,8633,7924,7081,6138,5128,4079,3002,1912,805,-319,-1445,-2555,-3619,-4621,-5553,-6409,-7199, -7928,-8592,-9177,-9655,-10003,-10203,-10247,-10130,-9873,-9478,-8960,-8315,-7554,-6700,-5774,-4817,-3867,-2957,-2102,-1314, -587,79,687,1253,1776,2269,2743,3217,3712,4246,4821,5449,6114,6793,7460,8087,8648,9128,9506,9769, 9900,9874,9671,9282,8722,8012,7189,6281,5319,4298,3237,2131,992,-164,-1302,-2406,-3449,-4433,-5357,-6230, -7062,-7834,-8534,-9136,-9610,-9950,-10153,-10215,-10147,-9945,-9603,-9113,-8478,-7712,-6846,-5924,-4981,-4048,-3151,-2295, -1492,-738,-48,585,1156,1674,2159,2622,3093,3593,4135,4725,5352,6005,6666,7310,7927,8505,9017,9445, 9752,9911,9891,9682,9296,8749,8080,7308,6449,5509,4495,3408,2273,1114,-36,-1153,-2224,-3252,-4236,-5189, -6111,-6977,-7771,-8467,-9050,-9516,-9862,-10096,-10212,-10202,-10043,-9718,-9227,-8582,-7817,-6966,-6071,-5158,-4241,-3340, -2464,-1631,-849,-140,494,1058,1572,2052,2527,3008,3520,4070,4650,5259,5887,6525,7167,7799,8406,8960, 9419,9736,9891,9866,9666,9310,8821,8207,7480,6638,5683,4640,3534,2396,1259,145,-944,-2009,-3057,-4082, -5083,-6026,-6900,-7678,-8352,-8932,-9418,-9810,-10103,-10272,-10292,-10141,-9813,-9322,-8695,-7963,-7161,-6301,-5401,-4480, -3553,-2646,-1795,-1008,-300,329,894,1416,1911,2406,2906,3423,3957,4516,5101,5708,6353,7017,7682,8314, 8879,9331,9637,9787,9784,9635,9343,8910,8329,7601,6739,5764,4716,3627,2528,1434,343,-754,-1850,-2942, -4004,-5009,-5941,-6787,-7542,-8225,-8837,-9375,-9824,-10149,-10326,-10341,-10178,-9858,-9401,-8822,-8141,-7368,-6514,-5598, -4647,-3694,-2778,-1922,-1142,-438,202,788,1338,1862,2370,2871,3372,3884,4424,5008,5629,6295,6980,7659, 8288,8834,9269,9588,9777,9836,9749,9505,9092,8505,7760,6893,5935,4926,3888,2826,1743,630,-502,-1637, -2744,-3794,-4772,-5678,-6513,-7292,-8017,-8680,-9256,-9719,-10038,-10203,-10211,-10076,-9801,-9399,-8872,-8221,-7447,-6578, -5642,-4685,-3741,-2839,-1994,-1217,-498,165,779,1349,1880,2377,2864,3341,3847,4386,4978,5619,6290,6967, 7626,8230,8766,9222,9582,9829,9939,9883,9641,9215,8618,7887,7051,6147,5184,4169,3100,1985,831,-327, -1458,-2544,-3567,-4529,-5442,-6315,-7148,-7915,-8603,-9180,-9626,-9936,-10113,-10160,-10084,-9869,-9512,-9005,-8348,-7565, -6690,-5762,-4826,-3905,-3017,-2167,-1370,-622,69,701,1275,1795,2283,2752,3232,3744,4298,4901,5535,6187, 6839,7473,8076,8638,9136,9549,9833,9958,9897,9649,9231,8666,7987,7212,6350,5397,4365,3262,2121,964, -173,-1273,-2330,-3345,-4331,-5287,-6209,-7067,-7843,-8513,-9067,-9509,-9839,-10062,-10169,-10141,-9958,-9604,-9086,-8418, -7643,-6790,-5899,-4987,-4077,-3176,-2304,-1471,-703,0,629,1189,1699,2182,2661,3154,3675,4233,4818,5429, 6055,6685,7326,7960,8561,9098,9531,9815,9936,9874,9652,9287,8788,8163,7417,6552,5579,4518,3407,2277, 1158,53,-1028,-2092,-3147,-4180,-5171,-6100,-6949,-7703,-8358,-8926,-9401,-9788,-10067,-10210,-10196,-10010,-9650,-9138, -8501,-7764,-6956,-6094,-5184,-4262,-3337,-2439,-1594,-824,-131,488,1048,1566,2065,2556,3059,3577,4114,4672, 5259,5874,6520,7185,7844,8467,9004,9427,9704,9836,9818,9658,9352,8895,8287,7532,6648,5664,4616,3534, 2448,1352,254,-854,-1958,-3047,-4099,-5085,-5998,-6824,-7573,-8254,-8861,-9388,-9814,-10112,-10255,-10229,-10044,-9707, -9233,-8643,-7949,-7162,-6293,-5369,-4420,-3481,-2581,-1743,-978,-286,342,917,1462,1974,2476,2972,3473,3985, 4529,5114,5742,6407,7085,7747,8355,8881,9302,9607,9787,9831,9721,9447,9000,8384,7622,6750,5797,4792, 3752,2680,1577,452,-690,-1818,-2909,-3941,-4907,-5802,-6642,-7422,-8147,-8794,-9346,-9774,-10063,-10202,-10192,-10039, -9750,-9327,-8774,-8093,-7302,-6422,-5491,-4543,-3612,-2723,-1894,-1127,-419,230,831,1387,1903,2395,2874,3353, 3862,4406,5003,5642,6307,6976,7618,8216,8746,9193,9546,9776,9859,9769,9498,9047,8441,7703,6873,5966, 4991,3957,2868,1739,587,-556,-1674,-2741,-3758,-4724,-5643,-6518,-7341,-8092,-8750,-9297,-9715,-10011,-10173,-10207, -10107,-9867,-9473,-8930,-8246,-7449,-6575,-5657,-4731,-3813,-2931,-2091,-1298,-565,107,722,1282,1795,2278,2750, 3240,3756,4315,4910,5545,6192,6840,7476,8082,8641,9129,9518,9769,9859,9771,9502,9078,8514,7828,7034, 6148,5175,4123,3016,1879,742,-382,-1472,-2531,-3558,-4545,-5506,-6407,-7240,-7988,-8634,-9174,-9610,-9932,-10145, -10224,-10160,-9937,-9549,-9007,-8336,-7561,-6710,-5816,-4902,-3985,-3086,-2224,-1410,-654,32,646,1203,1717,2204, 2688,3189,3713,4269,4856,5468,6100,6742,7386,8014,8601,9109,9504,9759,9852,9782,9549,9168,8650,7997, 7218,6329,5340,4289,3188,2072,959,-148,-1241,-2321,-3373,-4393,-5362,-6267,-7093,-7832,-8485,-9051,-9525,-9891, -10136,-10241,-10189,-9974,-9601,-9084,-8442,-7701,-6878,-6000,-5084,-4158,-3244,-2366,-1541,-784,-97,521,1084,1607, 2108,2601,3104,3624,4166,4733,5335,5962,6614,7274,7913,8510,9020,9417,9681,9801,9770,9585,9245,8752, 8108,7329,6435,5460,4425,3349,2254,1147,32,-1083,-2183,-3252,-4276,-5241,-6137,-6964,-7715,-8397,-8995,-9496, -9889,-10149,-10259,-10220,-10027,-9684,-9203,-8594,-7878,-7069,-6192,-5268,-4333,-3411,-2527,-1699,-936,-241,387,968, 1507,2019,2519,3020,3531,4062,4624,5222,5859,6519,7183,7826,8417,8931,9344,9634,9793,9803,9650,9329, 8845,8211,7444,6576,5626,4617,3561,2466,1348,221,-902,-2005,-3072,-4085,-5045,-5951,-6794,-7574,-8278,-8895, -9410,-9810,-10075,-10208,-10195,-10037,-9733,-9287,-8703,-7998,-7196,-6321,-5400,-4465,-3545,-2659,-1825,-1053,-340,305, 901,1455,1975,2476,2968,3471,4001,4565,5165,5802,6457,7118,7753,8347,8873,9313,9635,9822,9854,9718, 9412,8945,8337,7602,6759,5834,4832,3774,2673,1549,419,-700,-1797,-2860,-3880,-4855,-5777,-6645,-7439,-8154, -8783,-9307,-9716,-10009,-10172,-10195,-10072,-9793,-9366,-8800,-8109,-7319,-6455,-5544,-4617,-3698,-2803,-1961,-1175,-451, 213,818,1379,1899,2399,2889,3393,3919,4478,5077,5704,6351,7004,7645,8249,8795,9254,9596,9803,9852, 9740,9463,9030,8451,7743,6923,6000,5002,3944,2849,1732,610,-507,-1602,-2680,-3713,-4704,-5639,-6515,-7315, -8039,-8675,-9217,-9657,-9974,-10161,-10211,-10104,-9848,-9440,-8897,-8230,-7458,-6606,-5702,-4776,-3856,-2958,-2104,-1310, -569,104,722,1285,1808,2307,2800,3299,3825,4383,4970,5594,6237,6890,7535,8149,8704,9176,9536,9763, 9840,9760,9516,9112,8554,7863,7052,6143,5158,4112,3033,1925,803,-318,-1427,-2511,-3551,-4550,-5483,-6365, -7175,-7917,-8574,-9141,-9599,-9935,-10140,-10207,-10129,-9900,-9525,-9007,-8362,-7605,-6765,-5867,-4948,-4023,-3125,-2264, -1454,-701,-17,610,1179,1708,2210,2705,3207,3728,4283,4868,5484,6127,6779,7424,8042,8608,9091,9476, 9730,9837,9786,9565,9183,8644,7971,7180,6294,5329,4302,3223,2113,985,-138,-1250,-2330,-3373,-4369,-5314, -6211,-7044,-7801,-8475,-9051,-9519,-9871,-10094,-10189,-10141,-9945,-9593,-9096,-8465,-7720,-6890,-6004,-5091,-4169,-3264, -2392,-1570,-801,-101,529,1103,1639,2145,2644,3147,3670,4219,4799,5409,6040,6686,7332,7958,8538,9043, 9452,9731,9857,9823,9622,9265,8754,8114,7353,6492,5534,4507,3424,2310,1187,68,-1035,-2113,-3162,-4174, -5138,-6055,-6900,-7666,-8343,-8924,-9409,-9786,-10044,-10171,-10153,-9978,-9644,-9160,-8543,-7820,-7014,-6146,-5238,-4320, -3404,-2516,-1683,-914,-210,424,1006,1545,2059,2564,3068,3586,4123,4688,5286,5911,6554,7207,7846,8439, 8961,9379,9670,9814,9800,9635,9313,8842,8234,7488,6630,5673,4644,3570,2470,1362,254,-851,-1940,-3010, -4044,-5025,-5944,-6787,-7554,-8239,-8841,-9355,-9765,-10056,-10203,-10200,-10035,-9717,-9261,-8676,-7986,-7200,-6340,-5432, -4501,-3575,-2682,-1848,-1075,-368,275,871,1424,1951,2459,2961,3467,3991,4548,5141,5767,6421,7082,7728, 8325,8849,9273,9580,9750,9780,9659,9376,8934,8337,7596,6743,5800,4790,3742,2663,1564,448,-673,-1784, -2867,-3903,-4879,-5791,-6630,-7412,-8122,-8759,-9299,-9731,-10031,-10181,-10188,-10045,-9760,-9341,-8789,-8120,-7341,-6478, -5564,-4629,-3704,-2819,-1983,-1204,-487,179,792,1357,1884,2386,2880,3379,3896,4454,5049,5679,6331,6991, 7629,8220,8745,9187,9523,9740,9808,9718,9454,9020,8425,7702,6870,5960,4981,3952,2877,1763,627,-508, -1624,-2700,-3725,-4693,-5610,-6475,-7287,-8029,-8685,-9242,-9672,-9973,-10139,-10171,-10071,-9831,-9447,-8919,-8254,-7480, -6620,-5711,-4790,-3882,-2998,-2158,-1362,-625,57,683,1253,1771,2268,2756,3252,3775,4338,4933,5561,6204, 6848,7476,8071,8617,9091,9468,9716,9807,9726,9472,9052,8486,7799,7010,6131,5170,4132,3042,1912,772, -355,-1453,-2513,-3535,-4516,-5459,-6356,-7190,-7945,-8601,-9147,-9579,-9900,-10102,-10181,-10123,-9914,-9539,-9014,-8352, -7584,-6741,-5857,-4952,-4046,-3155,-2291,-1471,-712,-20,605,1174,1694,2193,2689,3198,3728,4290,4879,5488, 6114,6748,7382,8000,8575,9077,9477,9733,9828,9756,9522,9141,8625,7982,7221,6348,5378,4329,3231,2112, 992,-112,-1198,-2261,-3303,-4319,-5292,-6203,-7035,-7781,-8427,-8983,-9443,-9804,-10055,-10170,-10130,-9924,-9555,-9038, -8400,-7664,-6857,-5996,-5096,-4177,-3267,-2382,-1552,-792,-105,518,1085,1619,2136,2641,3156,3681,4224,4791, 5385,6004,6646,7300,7938,8532,9040,9431,9688,9797,9758,9572,9244,8766,8141,7382,6499,5518,4476,3402, 2311,1216,118,-984,-2079,-3152,-4187,-5165,-6063,-6885,-7624,-8293,-8885,-9391,-9793,-10066,-10186,-10150,-9949,-9601, -9124,-8529,-7833,-7045,-6185,-5270,-4334,-3410,-2524,-1701,-939,-247,387,974,1529,2058,2574,3080,3590,4116, 4674,5269,5901,6559,7226,7865,8452,8952,9349,9625,9774,9788,9649,9351,8887,8263,7492,6618,5664,4660, 3614,2543,1448,329,-799,-1915,-2995,-4019,-4977,-5866,-6691,-7462,-8169,-8795,-9331,-9739,-10009,-10131,-10104,-9935, -9636,-9206,-8649,-7964,-7177,-6304,-5384,-4443,-3530,-2655,-1831,-1063,-349,305,920,1486,2018,2521,3019,3515, 4041,4602,5206,5847,6505,7160,7788,8362,8864,9283,9604,9798,9849,9734,9439,8969,8349,7601,6761,5849, 4875,3841,2761,1636,494,-648,-1754,-2817,-3821,-4776,-5686,-6543,-7354,-8089,-8736,-9266,-9670,-9942,-10085,-10103, -9989,-9735,-9337,-8790,-8106,-7313,-6445,-5535,-4619,-3720,-2849,-2016,-1227,-490,188,813,1378,1903,2397,2888, 3395,3929,4498,5108,5741,6383,7019,7634,8217,8755,9210,9570,9793,9852,9734,9444,8992,8410,7712,6915, 6029,5055,4006,2899,1764,625,-496,-1581,-2626,-3638,-4620,-5564,-6456,-7285,-8021,-8655,-9178,-9590,-9895,-10086, -10152,-10076,-9843,-9447,-8899,-8217,-7441,-6601,-5720,-4819,-3918,-3031,-2169,-1356,-602,85,704,1265,1792,2294, 2795,3314,3855,4427,5020,5631,6255,6888,7513,8124,8689,9172,9541,9765,9825,9719,9458,9057,8523,7865, 7084,6192,5200,4138,3033,1919,808,-286,-1368,-2434,-3476,-4492,-5458,-6356,-7172,-7895,-8525,-9069,-9520,-9872, -10107,-10200,-10134,-9904,-9512,-8980,-8335,-7595,-6787,-5924,-5020,-4104,-3191,-2318,-1496,-744,-59,559,1128,1662, 2182,2696,3217,3751,4304,4874,5470,6094,6736,7390,8016,8591,9076,9437,9664,9746,9682,9477,9122,8618, 7974,7183,6281,5294,4248,3178,2091,996,-102,-1206,-2303,-3372,-4395,-5354,-6238,-7042,-7773,-8434,-9017,-9508, -9889,-10134,-10233,-10169,-9949,-9584,-9094,-8487,-7782,-6983,-6113,-5198,-4264,-3345,-2470,-1651,-900,-212,421,1006, 1563,2095,2611,3126,3642,4179,4744,5343,5982,6644,7302,7930,8497,8975,9349,9605,9732,9723,9558,9228, 8732,8079,7298,6414,5455,4447,3403,2324,1221,97,-1035,-2144,-3209,-4217,-5160,-6042,-6860,-7628,-8326,-8940, -9448,-9832,-10075,-10176,-10131,-9950,-9635,-9185,-8606,-7909,-7106,-6229,-5308,-4377,-3467,-2602,-1785,-1025,-318,336, 943,1510,2040,2549,3045,3552,4088,4659,5270,5913,6571,7216,7832,8389,8879,9288,9584,9758,9777,9623, 9295,8803,8168,7416,6569,5648,4663,3616,2523,1394,254,-873,-1967,-3020,-4016,-4969,-5874,-6732,-7527,-8244, -8864,-9371,-9752,-10012,-10141,-10142,-10006,-9725,-9300,-8730,-8030,-7227,-6359,-5455,-4543,-3643,-2776,-1946,-1165,-436, 236,849,1414,1938,2440,2937,3449,3991,4569,5178,5810,6452,7086,7697,8271,8797,9236,9570,9758,9784, 9640,9329,8866,8272,7560,6748,5839,4849,3792,2687,1558,431,-679,-1759,-2808,-3823,-4801,-5738,-6617,-7417, -8133,-8748,-9256,-9662,-9952,-10126,-10165,-10056,-9790,-9369,-8804,-8120,-7339,-6491,-5606,-4702,-3799,-2914,-2061,-1261, -518,158,773,1334,1861,2368,2876,3396,3940,4511,5108,5722,6352,6983,7613,8213,8759,9217,9561,9752, 9791,9670,9395,8977,8422,7738,6935,6021,5024,3966,2870,1759,651,-450,-1534,-2602,-3642,-4645,-5590,-6467, -7268,-7977,-8604,-9140,-9578,-9908,-10109,-10171,-10076,-9819,-9415,-8873,-8218,-7467,-6643,-5768,-4860,-3947,-3047,-2183, -1379,-632,45,662,1231,1766,2285,2804,3324,3863,4417,4999,5602,6236,6880,7521,8134,8689,9149,9492, 9706,9772,9688,9459,9074,8542,7864,7061,6153,5166,4126,3057,1963,860,-247,-1354,-2443,-3494,-4499,-5439, -6313,-7116,-7843,-8499,-9066,-9534,-9882,-10099,-10169,-10087,-9856,-9480,-8975,-8353,-7627,-6812,-5936,-5023,-4102,-3196, -2331,-1520,-771,-87,546,1129,1684,2213,2731,3247,3772,4320,4899,5509,6144,6797,7441,8056,8604,9070, 9433,9674,9777,9734,9530,9164,8642,7975,7189,6302,5342,4323,3266,2171,1059,-66,-1180,-2272,-3321,-4318, -5258,-6140,-6964,-7719,-8395,-8983,-9466,-9821,-10049,-10138,-10085,-9889,-9550,-9073,-8472,-7755,-6945,-6071,-5160,-4240, -3336,-2472,-1658,-898,-199,450,1051,1607,2138,2651,3160,3680,4225,4803,5415,6051,6701,7338,7945,8501, 8985,9375,9644,9780,9758,9571,9222,8716,8073,7314,6455,5513,4508,3447,2348,1226,102,-1008,-2095,-3141, -4146,-5103,-6002,-6845,-7617,-8306,-8903,-9391,-9763,-10015,-10134,-10112,-9948,-9637,-9179,-8590,-7884,-7089,-6224,-5321, -4411,-3511,-2641,-1815,-1043,-329,330,937,1500,2031,2541,3050,3569,4113,4692,5299,5926,6570,7206,7819, 8387,8890,9302,9596,9751,9749,9585,9262,8789,8176,7442,6601,5672,4666,3607,2513,1397,278,-830,-1914, -2971,-3988,-4960,-5877,-6728,-7510,-8206,-8814,-9319,-9718,-9993,-10140,-10146,-10004,-9712,-9273,-8703,-8018,-7235,-6384, -5491,-4581,-3680,-2801,-1963,-1180,-453,216,828,1397,1927,2440,2949,3473,4015,4589,5189,5811,6445,7082, 7704,8285,8800,9228,9540,9713,9734,9599,9307,8862,8275,7560,6734,5813,4818,3767,2679,1576,460,-652, -1744,-2810,-3837,-4817,-5737,-6594,-7385,-8097,-8718,-9246,-9661,-9960,-10127,-10154,-10033,-9764,-9351,-8801,-8138,-7369, -6531,-5644,-4735,-3832,-2944,-2097,-1303,-564,111,730,1305,1838,2352,2866,3386,3928,4491,5085,5702,6336, 6976,7601,8193,8722,9163,9497,9696,9745,9641,9379,8957,8393,7697,6888,5988,5006,3970,2892,1787,668, -445,-1543,-2611,-3640,-4625,-5556,-6426,-7231,-7956,-8595,-9138,-9571,-9885,-10072,-10128,-10031,-9790,-9400,-8874,-8222, -7472,-6642,-5766,-4863,-3954,-3064,-2207,-1404,-657,28,653,1229,1772,2294,2810,3331,3865,4424,5013,5623, 6256,6891,7524,8124,8670,9126,9480,9703,9778,9696,9454,9061,8523,7853,7068,6180,5211,4175,3098,1993, 879,-234,-1330,-2400,-3435,-4435,-5381,-6270,-7080,-7819,-8465,-9020,-9476,-9815,-10035,-10113,-10041,-9823,-9452,-8948, -8316,-7585,-6777,-5908,-5006,-4095,-3197,-2333,-1519,-768,-80,555,1142,1694,2223,2741,3258,3790,4341,4919, 5525,6154,6795,7431,8039,8594,9065,9433,9673,9769,9712,9504,9141,8632,7987,7212,6332,5371,4347,3277, 2182,1076,-32,-1132,-2215,-3266,-4272,-5233,-6123,-6941,-7685,-8348,-8923,-9402,-9766,-10004,-10102,-10055,-9852,-9505, -9026,-8422,-7714,-6917,-6054,-5151,-4232,-3330,-2464,-1644,-885,-187,459,1061,1624,2156,2675,3188,3713,4259, 4833,5437,6068,6715,7355,7970,8528,9013,9390,9654,9778,9759,9581,9249,8762,8130,7367,6502,5554,4545, 3493,2407,1304,190,-925,-2018,-3078,-4086,-5045,-5938,-6764,-7528,-8214,-8816,-9318,-9701,-9955,-10069,-10038,-9863, -9549,-9104,-8525,-7835,-7046,-6184,-5285,-4367,-3469,-2603,-1779,-1010,-296,362,974,1545,2080,2593,3104,3621, 4163,4737,5344,5977,6618,7256,7864,8425,8915,9316,9602,9765,9774,9622,9304,8829,8210,7466,6621,5697, 4710,3665,2580,1465,336,-783,-1881,-2935,-3941,-4901,-5808,-6658,-7444,-8157,-8775,-9286,-9677,-9942,-10079,-10079, -9944,-9665,-9244,-8686,-8002,-7218,-6367,-5475,-4569,-3675,-2809,-1977,-1192,-460,212,832,1400,1932,2443,2952, 3476,4023,4597,5200,5824,6459,7087,7694,8264,8777,9206,9522,9708,9735,9601,9297,8840,8250,7540,6730, 5829,4847,3803,2708,1590,464,-648,-1734,-2782,-3793,-4770,-5700,-6572,-7374,-8091,-8712,-9227,-9628,-9919,-10093, -10132,-10029,-9769,-9362,-8810,-8137,-7369,-6537,-5662,-4769,-3869,-2989,-2141,-1336,-595,86,708,1279,1817,2335, 2852,3381,3931,4501,5096,5709,6330,6963,7580,8170,8707,9159,9492,9685,9730,9610,9336,8923,8373,7696, 6903,6003,5018,3969,2873,1766,656,-443,-1524,-2585,-3622,-4619,-5569,-6450,-7250,-7964,-8590,-9121,-9557,-9883, -10090,-10158,-10068,-9820,-9420,-8887,-8244,-7504,-6690,-5829,-4934,-4022,-3126,-2264,-1455,-711,-27,593,1173,1724, 2254,2779,3307,3847,4405,4981,5587,6211,6854,7487,8090,8635,9092,9430,9635,9699,9615,9385,9011,8486, 7824,7031,6128,5148,4109,3038,1953,855,-246,-1344,-2430,-3485,-4493,-5438,-6315,-7112,-7836,-8484,-9049,-9521, -9876,-10097,-10172,-10091,-9858,-9487,-8991,-8378,-7666,-6864,-5995,-5090,-4172,-3267,-2408,-1603,-851,-165,472,1068, 1632,2172,2698,3216,3746,4291,4866,5471,6108,6761,7402,8006,8550,9006,9358,9592,9695,9657,9466,9112, 8600,7941,7156,6271,5313,4304,3258,2180,1076,-43,-1161,-2257,-3314,-4314,-5248,-6127,-6936,-7687,-8367,-8963, -9453,-9815,-10037,-10122,-10060,-9863,-9532,-9069,-8485,-7782,-6981,-6105,-5198,-4280,-3386,-2532,-1720,-963,-253,405, 1017,1589,2127,2644,3154,3675,4223,4803,5418,6057,6705,7339,7936,8477,8946,9329,9600,9742,9736,9563, 9215,8709,8065,7305,6453,5528,4539,3494,2400,1276,145,-976,-2062,-3103,-4097,-5040,-5935,-6781,-7562,-8264, -8863,-9351,-9714,-9955,-10065,-10047,-9896,-9598,-9160,-8581,-7878,-7076,-6215,-5324,-4420,-3538,-2676,-1855,-1075,-345, 325,943,1508,2036,2552,3061,3588,4141,4725,5337,5965,6598,7216,7814,8369,8870,9287,9587,9748,9747, 9578,9249,8768,8162,7442,6624,5713,4719,3664,2561,1433,310,-795,-1867,-2908,-3914,-4885,-5809,-6676,-7470, -8168,-8766,-9259,-9641,-9914,-10067,-10092,-9969,-9686,-9254,-8679,-7991,-7214,-6372,-5500,-4611,-3718,-2843,-1997,-1203, -464,208,827,1391,1929,2448,2969,3503,4063,4640,5239,5851,6473,7096,7711,8293,8817,9251,9563,9725, 9739,9590,9295,8861,8293,7602,6792,5876,4874,3813,2720,1614,511,-582,-1657,-2720,-3752,-4748,-5688,-6557, -7341,-8034,-8643,-9158,-9582,-9893,-10078,-10122,-10007,-9735,-9314,-8765,-8104,-7359,-6545,-5679,-4783,-3874,-2980,-2122, -1323,-584,89,711,1287,1835,2369,2902,3437,3982,4547,5128,5734,6359,6997,7629,8225,8754,9189,9501, 9678,9712,9607,9358,8960,8414,7729,6914,5998,5006,3964,2894,1809,714,-388,-1490,-2572,-3623,-4621,-5553, -6413,-7198,-7907,-8544,-9097,-9554,-9891,-10090,-10137,-10035,-9781,-9393,-8884,-8263,-7541,-6734,-5863,-4955,-4038,-3143, -2289,-1488,-751,-67,568,1164,1728,2273,2802,3329,3863,4416,4996,5613,6241,6894,7526,8122,8646,9081, 9408,9620,9698,9633,9413,9033,8492,7807,7006,6110,5146,4134,3083,2000,890,-233,-1348,-2435,-3482,-4465, -5389,-6257,-7061,-7804,-8477,-9051,-9518,-9862,-10063,-10123,-10046,-9839,-9493,-9017,-8412,-7698,-6889,-6013,-5106,-4197, -3307,-2456,-1650,-895,-191,468,1079,1653,2197,2720,3239,3769,4329,4919,5539,6183,6828,7450,8038,8566, 9019,9379,9627,9739,9696,9487,9111,8580,7917,7145,6284,5348,4349,3293,2196,1071,-57,-1168,-2244,-3276, -4260,-5200,-6089,-6923,-7694,-8375,-8956,-9424,-9771,-9991,-10091,-10054,-9884,-9568,-9110,-8517,-7802,-6998,-6136,-5244, -4346,-3464,-2604,-1785,-1009,-287,382,999,1571,2110,2632,3152,3691,4252,4846,5463,6091,6721,7339,7924, 8471,8952,9340,9614,9740,9707,9509,9153,8655,8028,7293,6456,5527,4522,3457,2353,1233,118,-979,-2045, -3081,-4088,-5050,-5963,-6816,-7589,-8270,-8854,-9331,-9703,-9963,-10097,-10099,-9948,-9649,-9193,-8613,-7915,-7135,-6295, -5420,-4526,-3634,-2763,-1924,-1133,-404,269,884,1458,1997,2523,3055,3599,4163,4745,5346,5964,6586,7209, 7819,8386,8889,9293,9576,9711,9694,9523,9209,8752,8162,7446,6618,5688,4682,3619,2530,1428,328,-765, -1841,-2898,-3924,-4904,-5827,-6678,-7446,-8134,-8729,-9236,-9641,-9930,-10091,-10106,-9968,-9678,-9241,-8680,-8013,-7257, -6433,-5560,-4660,-3758,-2869,-2021,-1231,-498,175,794,1375,1926,2463,2995,3536,4091,4660,5248,5861,6489, 7123,7743,8322,8830,9240,9532,9690,9707,9576,9300,8873,8301,7593,6769,5848,4854,3813,2744,1656,551, -551,-1646,-2716,-3751,-4735,-5651,-6502,-7278,-7983,-8610,-9142,-9573,-9881,-10053,-10079,-9957,-9688,-9286,-8757,-8114, -7379,-6560,-5684,-4781,-3872,-2986,-2139,-1345,-611,67,698,1287,1848,2387,2919,3448,3988,4548,5136,5750, 6387,7026,7646,8226,8736,9157,9472,9663,9719,9625,9376,8968,8410,7712,6907,6015,5044,4023,2962,1870, 760,-358,-1464,-2536,-3570,-4547,-5471,-6331,-7133,-7860,-8510,-9059,-9502,-9817,-10002,-10047,-9952,-9716,-9345,-8841, -8215,-7483,-6668,-5795,-4892,-3989,-3107,-2261,-1463,-719,-24,619,1220,1783,2318,2845,3363,3899,4458,5046, 5662,6295,6930,7547,8125,8648,9091,9432,9658,9741,9673,9440,9050,8514,7847,7065,6192,5242,4228,3162, 2064,945,-172,-1276,-2347,-3376,-4363,-5301,-6181,-7002,-7747,-8408,-8970,-9417,-9751,-9956,-10031,-9966,-9763,-9415, -8926,-8313,-7592,-6787,-5923,-5032,-4135,-3257,-2404,-1599,-841,-136,516,1120,1679,2214,2733,3253,3787,4343, 4929,5542,6168,6795,7409,7994,8532,8998,9363,9610,9714,9661,9453,9085,8580,7940,7184,6329,5387,4376, 3312,2215,1104,-9,-1107,-2179,-3219,-4219,-5172,-6070,-6902,-7653,-8324,-8894,-9362,-9720,-9952,-10059,-10023,-9840, -9511,-9041,-8443,-7740,-6952,-6104,-5223,-4327,-3441,-2582,-1760,-993,-278,380,987,1551,2087,2609,3134,3668, 4227,4807,5409,6028,6659,7277,7873,8427,8907,9292,9554,9676,9651,9472,9137,8662,8045,7306,6463,5530, 4527,3473,2384,1279,172,-928,-2010,-3060,-4076,-5035,-5940,-6778,-7540,-8220,-8811,-9300,-9681,-9941,-10067,-10051, -9888,-9581,-9130,-8556,-7873,-7102,-6264,-5387,-4491,-3599,-2733,-1904,-1124,-401,262,874,1450,1993,2523,3047, 3584,4137,4710,5309,5924,6553,7178,7782,8344,8835,9233,9514,9660,9662,9508,9204,8746,8153,7431,6599, 5678,4691,3642,2565,1463,352,-751,-1838,-2896,-3914,-4884,-5795,-6644,-7419,-8117,-8725,-9231,-9630,-9915,-10060, -10069,-9933,-9648,-9228,-8677,-8014,-7255,-6430,-5557,-4663,-3768,-2892,-2054,-1267,-536,138,760,1340,1894,2430, 2958,3495,4046,4612,5208,5821,6451,7080,7690,8259,8759,9175,9472,9640,9664,9539,9259,8825,8254,7553, 6738,5833,4852,3816,2740,1638,532,-572,-1662,-2725,-3751,-4727,-5651,-6510,-7299,-8008,-8629,-9159,-9579,-9879, -10054,-10087,-9975,-9718,-9317,-8789,-8147,-7407,-6593,-5729,-4833,-3935,-3052,-2206,-1412,-672,12,647,1241,1804, 2348,2881,3413,3958,4528,5115,5730,6362,6993,7607,8181,8695,9124,9440,9625,9675,9572,9315,8912,8358, 7678,6882,5987,5017,3988,2920,1826,719,-386,-1478,-2551,-3584,-4570,-5501,-6370,-7166,-7889,-8527,-9074,-9515, -9838,-10032,-10089,-10000,-9765,-9391,-8890,-8270,-7544,-6739,-5876,-4980,-4080,-3193,-2344,-1542,-790,-96,554,1156, 1727,2275,2806,3337,3880,4443,5032,5645,6278,6912,7528,8109,8631,9068,9402,9616,9689,9618,9390,9004, 8474,7810,7027,6150,5192,4178,3122,2032,925,-180,-1285,-2361,-3400,-4390,-5325,-6199,-7013,-7750,-8411,-8973, -9439,-9777,-9988,-10065,-10001,-9796,-9453,-8974,-8372,-7662,-6868,-6005,-5115,-4217,-3334,-2478,-1669,-905,-193,465, 1080,1656,2200,2730,3258,3797,4362,4952,5567,6196,6827,7445,8027,8557,9012,9372,9610,9714,9663,9455, 9091,8580,7931,7172,6314,5376,4371,3317,2226,1114,-2,-1104,-2180,-3221,-4214,-5160,-6056,-6884,-7644,-8317, -8898,-9375,-9727,-9962,-10064,-10032,-9859,-9543,-9084,-8496,-7796,-7010,-6160,-5280,-4385,-3500,-2641,-1818,-1039,-316, 349,967,1540,2085,2618,3148,3689,4255,4841,5449,6070,6695,7310,7900,8446,8926,9307,9571,9690,9661, 9473,9132,8645,8029,7295,6456,5529,4528,3471,2382,1269,160,-935,-2010,-3055,-4063,-5025,-5932,-6778,-7545, -8228,-8817,-9301,-9678,-9938,-10073,-10068,-9919,-9617,-9172,-8599,-7914,-7145,-6312,-5438,-4546,-3654,-2781,-1942,-1158, -427,242,862,1439,1992,2527,3062,3605,4164,4742,5342,5956,6580,7204,7810,8372,8865,9265,9546,9686, 9676,9518,9210,8758,8169,7456,6632,5710,4712,3663,2578,1479,374,-719,-1802,-2856,-3883,-4856,-5775,-6628, -7399,-8090,-8692,-9199,-9608,-9897,-10056,-10071,-9937,-9652,-9228,-8674,-8017,-7269,-6449,-5580,-4683,-3782,-2901,-2058, -1268,-536,137,764,1352,1908,2453,2988,3528,4076,4644,5234,5850,6477,7108,7724,8296,8796,9208,9500, 9664,9685,9560,9284,8862,8289,7589,6771,5857,4870,3834,2761,1670,567,-536,-1628,-2700,-3734,-4718,-5638, -6490,-7275,-7982,-8608,-9144,-9576,-9883,-10059,-10086,-9971,-9713,-9315,-8796,-8161,-7428,-6614,-5741,-4839,-3935,-3050, -2208,-1414,-678,7,646,1247,1811,2358,2891,3419,3960,4524,5114,5733,6367,7003,7619,8196,8702,9120, 9437,9632,9688,9598,9350,8945,8392,7702,6901,6006,5042,4025,2965,1875,767,-348,-1452,-2526,-3556,-4537, -5457,-6321,-7120,-7855,-8503,-9056,-9500,-9821,-10008,-10056,-9969,-9742,-9380,-8883,-8264,-7539,-6725,-5854,-4958,-4056, -3178,-2335,-1530,-776,-77,575,1185,1754,2294,2819,3345,3886,4452,5046,5668,6300,6932,7543,8120,8636, 9078,9425,9649,9733,9666,9432,9043,8507,7838,7062,6194,5249,4236,3176,2078,959,-157,-1260,-2331,-3360, -4347,-5284,-6168,-6990,-7743,-8406,-8967,-9423,-9757,-9969,-10053,-9999,-9806,-9470,-8990,-8383,-7664,-6865,-6005,-5120, -4229,-3352,-2496,-1682,-912,-198,461,1071,1639,2176,2704,3233,3778,4345,4937,5550,6172,6792,7405,7990, 8527,8993,9360,9606,9707,9652,9440,9071,8562,7928,7178,6328,5393,4377,3311,2213,1097,-12,-1105,-2174, -3210,-4212,-5170,-6071,-6907,-7666,-8333,-8900,-9368,-9727,-9972,-10085,-10062,-9892,-9568,-9103,-8507,-7805,-7021,-6182, -5307,-4417,-3527,-2660,-1827,-1047,-326,335,946,1518,2063,2598,3134,3683,4247,4829,5429,6047,6671,7291, 7890,8446,8931,9314,9575,9691,9657,9473,9140,8671,8063,7334,6492,5556,4551,3488,2399,1300,200,-889, -1967,-3018,-4036,-5008,-5918,-6755,-7513,-8190,-8775,-9271,-9661,-9930,-10072,-10065,-9907,-9599,-9153,-8582,-7909,-7146, -6321,-5447,-4547,-3646,-2771,-1933,-1150,-424,239,856,1439,1997,2535,3071,3611,4170,4740,5334,5949,6580, 7211,7823,8390,8880,9270,9540,9680,9680,9530,9232,8787,8199,7477,6639,5713,4718,3671,2599,1508,406, -695,-1790,-2857,-3883,-4859,-5767,-6607,-7378,-8071,-8687,-9208,-9621,-9911,-10064,-10072,-9933,-9651,-9233,-8696,-8047, -7299,-6477,-5599,-4695,-3791,-2914,-2075,-1292,-561,115,747,1344,1907,2447,2978,3512,4055,4620,5214,5836, 6472,7106,7718,8285,8780,9184,9479,9651,9684,9571,9300,8871,8294,7585,6766,5861,4886,3863,2797,1702, 592,-520,-1624,-2691,-3716,-4686,-5597,-6453,-7240,-7960,-8595,-9136,-9562,-9861,-10030,-10059,-9946,-9698,-9315,-8802, -8169,-7427,-6605,-5730,-4828,-3929,-3054,-2218,-1426,-681,12,657,1258,1823,2361,2886,3413,3954,4523,5118, 5741,6374,7008,7614,8182,8688,9118,9442,9646,9710,9619,9362,8949,8389,7704,6912,6032,5075,4056,2991, 1889,772,-343,-1442,-2509,-3530,-4507,-5434,-6309,-7121,-7861,-8509,-9057,-9494,-9807,-9998,-10059,-9981,-9770,-9407, -8910,-8286,-7551,-6738,-5875,-4987,-4092,-3218,-2371,-1562,-804,-97,552,1156,1718,2256,2777,3306,3851,4422, 5017,5630,6255,6882,7490,8064,8593,9042,9396,9624,9706,9627,9391,9002,8472,7820,7052,6190,5242,4224, 3154,2050,933,-171,-1263,-2328,-3355,-4348,-5294,-6189,-7013,-7759,-8411,-8967,-9415,-9755,-9977,-10069,-10023,-9827, -9482,-8996,-8381,-7666,-6873,-6022,-5145,-4252,-3366,-2506,-1684,-912,-200,453,1054,1619,2158,2691,3222,3770, 4336,4922,5528,6145,6766,7384,7976,8524,8995,9364,9604,9702,9645,9437,9084,8589,7964,7221,6363,5418, 4400,3339,2243,1140,40,-1050,-2123,-3168,-4180,-5140,-6041,-6870,-7618,-8279,-8854,-9329,-9701,-9949,-10069,-10039, -9860,-9532,-9063,-8475,-7784,-7013,-6176,-5299,-4401,-3505,-2635,-1806,-1034,-318,338,943,1518,2067,2603,3139, 3679,4237,4809,5405,6022,6648,7276,7883,8438,8918,9295,9548,9666,9644,9475,9154,8687,8079,7343,6493, 5554,4550,3498,2421,1325,223,-874,-1964,-3023,-4044,-5009,-5910,-6742,-7500,-8181,-8778,-9284,-9677,-9949,-10080, -10070,-9905,-9601,-9163,-8605,-7936,-7179,-6346,-5467,-4563,-3662,-2787,-1958,-1181,-461,206,827,1411,1968,2508, 3039,3573,4120,4689,5282,5902,6539,7172,7781,8341,8826,9216,9495,9642,9657,9519,9226,8777,8186,7457, 6625,5705,4721,3689,2620,1525,416,-694,-1792,-2857,-3876,-4840,-5744,-6586,-7361,-8067,-8689,-9211,-9622,-9904, -10048,-10057,-9921,-9649,-9243,-8709,-8059,-7307,-6475,-5594,-4695,-3795,-2925,-2091,-1309,-579,106,740,1334,1895, 2430,2955,3482,4023,4597,5195,5817,6454,7084,7692,8252,8746,9157,9464,9648,9690,9576,9302,8863,8287, 7582,6774,5879,4913,3890,2819,1716,595,-519,-1614,-2675,-3696,-4664,-5582,-6443,-7246,-7970,-8606,-9140,-9561, -9857,-10026,-10063,-9963,-9726,-9344,-8829,-8188,-7443,-6620,-5749,-4857,-3966,-3091,-2251,-1457,-707,-12,635,1231, 1788,2321,2844,3372,3918,4492,5089,5709,6337,6962,7567,8135,8652,9086,9423,9631,9690,9591,9334,8921, 8372,7696,6913,6039,5081,4056,2981,1874,757,-349,-1439,-2499,-3522,-4504,-5442,-6323,-7140,-7872,-8514,-9054, -9488,-9807,-10008,-10077,-10011,-9793,-9427,-8920,-8292,-7560,-6752,-5895,-5011,-4120,-3240,-2386,-1572,-809,-105,540, 1140,1698,2234,2762,3298,3845,4415,5010,5617,6236,6859,7471,8057,8592,9048,9403,9628,9703,9626,9392, 9015,8499,7854,7090,6225,5270,4245,3172,2077,970,-130,-1219,-2283,-3321,-4323,-5277,-6168,-6987,-7728,-8377, -8933,-9390,-9741,-9971,-10068,-10019,-9819,-9469,-8980,-8372,-7665,-6877,-6035,-5154,-4257,-3365,-2499,-1678,-912,-206, 444,1045,1612,2155,2690,3228,3770,4331,4910,5510,6127,6754,7381,7978,8528,8997,9358,9593,9690,9642, 9446,9103,8615,7987,7238,6374,5423,4407,3350,2266,1171,69,-1027,-2110,-3163,-4180,-5137,-6031,-6854,-7600, -8269,-8850,-9337,-9716,-9970,-10079,-10044,-9861,-9532,-9073,-8493,-7809,-7037,-6198,-5314,-4410,-3511,-2641,-1818,-1045, -336,321,936,1513,2066,2605,3138,3674,4223,4794,5392,6016,6649,7283,7888,8443,8913,9287,9547,9675, 9663,9502,9186,8720,8104,7361,6511,5578,4585,3543,2470,1374,264,-843,-1937,-2996,-4011,-4967,-5863,-6693, -7462,-8153,-8755,-9264,-9657,-9921,-10047,-10031,-9872,-9579,-9150,-8597,-7928,-7164,-6325,-5441,-4533,-3639,-2769,-1941, -1165,-443,229,857,1448,2001,2537,3064,3591,4137,4711,5310,5937,6574,7204,7810,8364,8846,9242,9531, 9691,9711,9575,9277,8820,8220,7498,6672,5764,4785,3754,2679,1576,456,-659,-1752,-2809,-3820,-4783,-5694, -6543,-7331,-8044,-8669,-9189,-9590,-9869,-10018,-10032,-9909,-9648,-9246,-8711,-8053,-7295,-6464,-5583,-4688,-3795,-2927, -2093,-1306,-564,119,760,1351,1906,2438,2962,3493,4040,4614,5218,5840,6472,7096,7699,8261,8766,9184, 9499,9689,9726,9604,9321,8887,8314,7618,6819,5931,4961,3928,2846,1738,621,-490,-1578,-2630,-3648,-4625, -5553,-6423,-7230,-7952,-8583,-9109,-9524,-9827,-10006,-10055,-9963,-9726,-9342,-8818,-8171,-7425,-6608,-5745,-4856,-3966, -3088,-2241,-1436,-682,14,655,1248,1808,2339,2866,3403,3954,4528,5125,5738,6361,6984,7591,8170,8692, 9131,9467,9669,9724,9621,9361,8958,8418,7752,6972,6092,5123,4089,3010,1910,801,-298,-1384,-2447,-3479, -4474,-5420,-6301,-7112,-7837,-8475,-9018,-9460,-9792,-10005,-10079,-10011,-9791,-9422,-8916,-8293,-7570,-6775,-5924,-5037, -4141,-3253,-2395,-1579,-818,-118,527,1127,1689,2230,2765,3302,3852,4419,5004,5609,6228,6856,7476,8066, 8603,9059,9402,9617,9690,9615,9393,9023,8510,7865,7092,6214,5254,4231,3164,2078,976,-121,-1215,-2296, -3342,-4347,-5298,-6182,-6996,-7730,-8385,-8954,-9424,-9781,-10015,-10109,-10056,-9853,-9506,-9026,-8428,-7729,-6947,-6100, -5213,-4310,-3413,-2546,-1726,-960,-253,397,1007,1583,2134,2673,3209,3751,4308,4886,5489,6115,6751,7379, 7978,8520,8979,9336,9576,9680,9639,9450,9108,8613,7979,7220,6357,5411,4406,3358,2277,1179,69,-1036, -2122,-3176,-4183,-5132,-6022,-6842,-7598,-8277,-8866,-9357,-9733,-9979,-10088,-10055,-9877,-9562,-9112,-8541,-7860,-7083, -6239,-5350,-4445,-3548,-2682,-1860,-1089,-371,291,914,1500,2054,2592,3120,3655,4207,4783,5389,6015,6656, 7282,7881,8425,8896,9276,9541,9678,9669,9504,9179,8701,8083,7344,6502,5577,4590,3548,2467,1360,245, -866,-1954,-3008,-4013,-4969,-5871,-6712,-7487,-8184,-8794,-9298,-9684,-9947,-10078,-10072,-9928,-9641,-9221,-8668,-7996, -7225,-6386,-5504,-4603,-3711,-2844,-2015,-1234,-501,176,808,1399,1954,2487,3011,3545,4097,4677,5282,5907, 6541,7167,7763,8317,8810,9213,9506,9671,9683,9538,9234,8778,8186,7473,6656,5749,4768,3730,2648,1540, 424,-681,-1765,-2819,-3834,-4800,-5720,-6578,-7366,-8075,-8692,-9205,-9609,-9891,-10051,-10076,-9961,-9696,-9292,-8751, -8092,-7336,-6507,-5633,-4741,-3849,-2976,-2133,-1337,-592,97,732,1323,1877,2412,2937,3473,4027,4604,5203, 5820,6447,7069,7675,8244,8753,9179,9495,9674,9708,9585,9307,8880,8319,7631,6832,5935,4960,3925,2844, 1740,631,-471,-1554,-2616,-3642,-4627,-5558,-6428,-7225,-7940,-8568,-9099,-9524,-9834,-10023,-10074,-9981,-9739,-9351, -8830,-8190,-7452,-6639,-5780,-4889,-3994,-3112,-2261,-1458,-702,-10,629,1221,1779,2316,2848,3384,3935,4503, 5094,5700,6327,6952,7567,8147,8674,9112,9442,9643,9697,9602,9357,8961,8426,7756,6969,6083,5114,4087, 3018,1924,819,-282,-1375,-2449,-3483,-4478,-5417,-6294,-7099,-7827,-8471,-9022,-9472,-9807,-10016,-10088,-10014,-9791, -9425,-8925,-8309,-7592,-6794,-5939,-5051,-4151,-3260,-2403,-1589,-830,-129,515,1114,1681,2227,2762,3296,3839, 4401,4986,5592,6214,6848,7469,8062,8593,9044,9391,9613,9694,9633,9417,9049,8535,7884,7114,6242,5288, 4272,3214,2124,1023,-83,-1183,-2262,-3306,-4307,-5250,-6132,-6949,-7692,-8351,-8923,-9394,-9747,-9976,-10067,-10013, -9815,-9475,-9001,-8406,-7707,-6918,-6069,-5181,-4276,-3383,-2522,-1705,-943,-236,420,1030,1603,2152,2686,3215, 3752,4307,4887,5491,6116,6752,7375,7970,8510,8972,9339,9583,9696,9661,9472,9129,8633,8001,7248,6394, 5454,4453,3403,2316,1211,99,-1002,-2086,-3136,-4141,-5096,-5987,-6817,-7576,-8255,-8844,-9332,-9704,-9952,-10066, -10037,-9867,-9554,-9104,-8531,-7846,-7070,-6226,-5338,-4439,-3548,-2682,-1861,-1091,-373,293,913,1494,2045,2577, 3102,3633,4184,4764,5369,5990,6627,7252,7849,8396,8875,9260,9532,9671,9661,9497,9178,8706,8096,7363, 6525,5604,4611,3566,2486,1380,266,-839,-1924,-2978,-3989,-4950,-5856,-6699,-7472,-8167,-8772,-9274,-9665,-9932, -10067,-10064,-9920,-9633,-9206,-8650,-7981,-7215,-6378,-5497,-4600,-3709,-2840,-2010,-1228,-498,180,809,1395,1946, 2477,3001,3533,4084,4663,5264,5886,6514,7140,7741,8299,8791,9198,9493,9655,9673,9533,9235,8787,8199, 7490,6674,5766,4784,3746,2667,1565,452,-655,-1743,-2798,-3816,-4785,-5701,-6558,-7345,-8055,-8671,-9189,-9596, -9883,-10041,-10066,-9949,-9687,-9284,-8744,-8092,-7336,-6512,-5641,-4748,-3859,-2982,-2142,-1348,-603,81,715,1306, 1857,2388,2915,3449,4001,4573,5171,5787,6412,7036,7643,8215,8723,9149,9466,9652,9688,9572,9302,8878, 8316,7630,6831,5941,4968,3935,2861,1759,646,-458,-1547,-2607,-3630,-4613,-5543,-6411,-7213,-7931,-8561,-9094, -9519,-9829,-10015,-10068,-9976,-9736,-9351,-8832,-8192,-7456,-6644,-5784,-4897,-4002,-3120,-2267,-1463,-711,-18,619, 1210,1769,2307,2839,3375,3923,4491,5082,5691,6314,6938,7557,8139,8667,9106,9440,9644,9704,9611,9365, 8971,8437,7775,6996,6114,5149,4119,3050,1954,849,-253,-1344,-2410,-3444,-4441,-5384,-6264,-7069,-7800,-8440, -8988,-9439,-9774,-9988,-10065,-9991,-9774,-9407,-8911,-8292,-7576,-6783,-5931,-5042,-4141,-3252,-2392,-1579,-822,-126, 518,1119,1687,2233,2767,3302,3846,4405,4986,5592,6214,6845,7469,8061,8598,9050,9398,9621,9704,9640, 9428,9065,8556,7913,7143,6269,5315,4299,3238,2152,1054,-49,-1145,-2225,-3273,-4274,-5228,-6111,-6923,-7663, -8322,-8894,-9368,-9727,-9961,-10054,-10003,-9804,-9462,-8992,-8400,-7705,-6923,-6074,-5184,-4277,-3384,-2522,-1704,-942, -236,419,1033,1612,2162,2697,3225,3762,4316,4893,5498,6124,6761,7389,7986,8526,8992,9353,9599,9713, 9685,9502,9164,8675,8044,7287,6429,5490,4489,3445,2365,1264,154,-955,-2042,-3095,-4098,-5052,-5941,-6765, -7525,-8208,-8803,-9297,-9672,-9921,-10030,-10001,-9829,-9520,-9081,-8511,-7831,-7056,-6208,-5321,-4415,-3526,-2665,-1843, -1071,-351,317,940,1526,2077,2605,3130,3661,4211,4791,5398,6027,6660,7285,7879,8425,8899,9285,9557, 9706,9703,9543,9221,8748,8132,7395,6560,5643,4659,3619,2539,1430,309,-801,-1891,-2941,-3944,-4901,-5807, -6653,-7433,-8139,-8748,-9252,-9638,-9901,-10037,-10036,-9902,-9625,-9207,-8656,-7983,-7212,-6377,-5498,-4603,-3716,-2853, -2023,-1236,-499,179,810,1394,1941,2469,2993,3528,4083,4662,5267,5887,6515,7134,7732,8288,8785,9197, 9498,9668,9685,9543,9238,8784,8199,7492,6685,5789,4810,3770,2684,1574,456,-649,-1730,-2779,-3789,-4763, -5689,-6554,-7348,-8059,-8675,-9187,-9587,-9876,-10045,-10080,-9973,-9715,-9313,-8771,-8111,-7357,-6536,-5672,-4787,-3895, -3020,-2175,-1371,-626,61,694,1279,1832,2366,2895,3434,3990,4566,5162,5774,6392,7016,7622,8199,8717, 9151,9467,9649,9684,9560,9285,8871,8321,7644,6852,5958,4979,3939,2852,1753,646,-449,-1529,-2590,-3621, -4612,-5555,-6429,-7226,-7938,-8561,-9090,-9523,-9842,-10042,-10105,-10014,-9769,-9378,-8853,-8221,-7492,-6687,-5834,-4949, -4046,-3158,-2301,-1493,-744,-53,577,1170,1734,2276,2813,3351,3898,4463,5044,5649,6270,6903,7525,8113, 8642,9083,9408,9604,9661,9571,9337,8958,8431,7771,6983,6088,5117,4087,3021,1939,842,-255,-1351,-2430, -3478,-4479,-5420,-6294,-7091,-7814,-8460,-9018,-9485,-9830,-10046,-10120,-10040,-9813,-9449,-8960,-8354,-7647,-6856,-5998, -5104,-4197,-3301,-2445,-1638,-882,-187,458,1063,1638,2190,2726,3256,3795,4349,4928,5535,6165,6808,7436, 8026,8558,9004,9345,9569,9662,9613,9414,9056,8545,7890,7112,6236,5284,4279,3234,2156,1055,-57,-1168, -2256,-3308,-4304,-5239,-6118,-6927,-7675,-8348,-8935,-9417,-9774,-9997,-10082,-10023,-9828,-9500,-9040,-8460,-7764,-6974, -6112,-5218,-4310,-3420,-2569,-1755,-994,-280,382,1003,1584,2134,2662,3184,3715,4271,4854,5466,6099,6739, 7363,7950,8484,8942,9311,9570,9698,9681,9502,9153,8652,8014,7259,6411,5487,4499,3457,2368,1252,129, -984,-2066,-3107,-4101,-5044,-5938,-6778,-7552,-8246,-8840,-9325,-9688,-9929,-10040,-10019,-9865,-9567,-9132,-8559,-7867, -7079,-6229,-5348,-4451,-3571,-2711,-1889,-1110,-378,296,921,1497,2040,2567,3087,3623,4181,4766,5376,6001, 6630,7243,7834,8379,8866,9269,9554,9705,9697,9528,9199,8722,8119,7399,6580,5672,4682,3633,2538,1418, 301,-799,-1872,-2914,-3919,-4886,-5804,-6665,-7452,-8147,-8744,-9238,-9618,-9888,-10037,-10056,-9930,-9649,-9222,-8657, -7978,-7209,-6377,-5511,-4626,-3737,-2867,-2025,-1230,-490,186,813,1389,1938,2467,2997,3538,4099,4680,5280, 5892,6511,7129,7734,8305,8814,9235,9536,9692,9702,9554,9257,8820,8251,7560,6752,5841,4846,3795,2708, 1606,504,-588,-1662,-2723,-3750,-4739,-5673,-6538,-7321,-8015,-8624,-9137,-9556,-9860,-10039,-10079,-9963,-9696,-9281, -8740,-8085,-7346,-6536,-5677,-4787,-3886,-2999,-2145,-1346,-605,74,703,1288,1845,2387,2925,3466,4015,4586, 5169,5776,6398,7029,7650,8234,8751,9176,9482,9655,9686,9576,9322,8920,8374,7691,6883,5974,4990,3953, 2885,1800,704,-394,-1491,-2568,-3612,-4606,-5535,-6396,-7182,-7891,-8524,-9071,-9521,-9851,-10048,-10095,-9995,-9745, -9361,-8854,-8236,-7518,-6716,-5853,-4955,-4046,-3157,-2304,-1502,-761,-71,567,1168,1738,2290,2825,3359,3899, 4458,5040,5655,6279,6924,7548,8134,8652,9080,9403,9607,9678,9606,9381,8999,8461,7782,6987,6098,5136, 4124,3074,1991,885,-231,-1340,-2422,-3466,-4450,-5376,-6244,-7046,-7786,-8451,-9020,-9482,-9824,-10025,-10087,-10011, -9803,-9456,-8980,-8378,-7670,-6870,-6003,-5104,-4201,-3315,-2464,-1658,-901,-195,464,1080,1659,2210,2740,3266, 3802,4364,4954,5571,6210,6849,7465,8048,8570,9017,9369,9607,9711,9663,9452,9078,8552,7893,7124,6264, 5329,4329,3277,2185,1065,-56,-1163,-2239,-3272,-4257,-5196,-6083,-6912,-7678,-8354,-8932,-9400,-9747,-9967,-10065, -10025,-9853,-9536,-9080,-8491,-7785,-6988,-6134,-5247,-4354,-3473,-2614,-1798,-1023,-299,370,991,1568,2116,2645, 3170,3712,4275,4868,5484,6110,6737,7351,7933,8473,8945,9324,9589,9710,9675,9477,9124,8628,8001,7266, 6430,5503,4501,3442,2344,1227,115,-981,-2048,-3085,-4090,-5048,-5957,-6805,-7576,-8256,-8839,-9316,-9687,-9944, -10074,-10071,-9920,-9620,-9169,-8595,-7903,-7129,-6293,-5420,-4530,-3642,-2773,-1938,-1148,-417,257,877,1457,2002, 2535,3071,3617,4182,4765,5368,5985,6606,7225,7827,8387,8882,9278,9556,9688,9670,9498,9183,8725,8134, 7418,6592,5667,4666,3608,2521,1421,320,-771,-1846,-2901,-3923,-4900,-5820,-6670,-7438,-8126,-8720,-9225,-9626, -9911,-10068,-10082,-9945,-9658,-9225,-8668,-8004,-7251,-6431,-5562,-4666,-3769,-2884,-2039,-1248,-513,161,785,1370, 1926,2467,3003,3547,4104,4677,5266,5878,6504,7133,7747,8319,8821,9226,9515,9670,9684,9550,9271,8842, 8270,7564,6744,5828,4837,3798,2730,1642,537,-561,-1653,-2720,-3753,-4735,-5651,-6502,-7279,-7982,-8605,-9134, -9562,-9867,-10038,-10065,-9945,-9677,-9278,-8750,-8109,-7376,-6562,-5691,-4792,-3888,-3004,-2158,-1362,-626,54,688, 1280,1844,2388,2924,3457,4001,4564,5153,5765,6400,7034,7650,8226,8732,9149,9461,9647,9698,9600,9349, 8941,8385,7689,6887,5996,5027,4006,2946,1855,747,-366,-1468,-2539,-3572,-4549,-5473,-6333,-7134,-7858,-8505, -9052,-9493,-9808,-9992,-10038,-9943,-9707,-9337,-8833,-8210,-7482,-6671,-5803,-4904,-4003,-3122,-2276,-1478,-732,-35, 608,1212,1778,2319,2849,3372,3911,4471,5060,5674,6306,6938,7553,8128,8648,9086,9422,9643,9722,9652, 9418,9029,8494,7827,7046,6174,5224,4212,3147,2052,935,-178,-1280,-2351,-3380,-4368,-5304,-6182,-7001,-7744, -8403,-8964,-9411,-9745,-9950,-10025,-9959,-9755,-9408,-8921,-8311,-7593,-6792,-5931,-5042,-4147,-3270,-2418,-1612,-854, -147,504,1111,1674,2214,2736,3260,3796,4353,4940,5552,6178,6803,7416,7998,8532,8994,9355,9598,9700, 9645,9437,9069,8564,7924,7168,6313,5373,4364,3302,2207,1097,-13,-1111,-2183,-3223,-4221,-5173,-6069,-6899, -7650,-8320,-8891,-9358,-9715,-9946,-10051,-10015,-9832,-9504,-9036,-8440,-7740,-6954,-6108,-5228,-4334,-3449,-2591,-1769, -1001,-285,373,982,1549,2088,2614,3140,3676,4236,4817,5419,6039,6668,7284,7878,8429,8905,9288,9548, 9668,9642,9462,9126,8651,8034,7295,6453,5521,4520,3467,2378,1274,168,-930,-2012,-3061,-4075,-5033,-5937, -6775,-7537,-8216,-8807,-9295,-9675,-9934,-10059,-10044,-9881,-9575,-9125,-8553,-7871,-7101,-6264,-5389,-4494,-3603,-2738, -1909,-1129,-404,257,872,1449,1994,2525,3052,3590,4144,4717,5317,5932,6560,7183,7785,8345,8835,9231, 9510,9655,9656,9501,9196,8738,8145,7424,6592,5673,4686,3637,2560,1460,349,-751,-1838,-2895,-3913,-4882, -5793,-6642,-7417,-8114,-8722,-9227,-9625,-9910,-10054,-10064,-9928,-9644,-9224,-8674,-8011,-7253,-6429,-5557,-4664,-3770, -2895,-2056,-1269,-538,135,758,1339,1894,2431,2960,3497,4049,4616,5212,5824,6454,7083,7691,8259,8759, 9173,9470,9637,9660,9534,9254,8820,8250,7549,6734,5830,4849,3813,2738,1635,531,-571,-1661,-2724,-3750, -4726,-5649,-6508,-7297,-8006,-8627,-9157,-9576,-9876,-10052,-10084,-9972,-9715,-9314,-8786,-8145,-7405,-6591,-5728,-4832, -3934,-3052,-2206,-1412,-672,11,646,1241,1804,2348,2881,3413,3958,4529,5115,5730,6362,6993,7607,8180, 8694,9123,9439,9624,9673,9570,9314,8910,8357,7677,6881,5986,5016,3987,2919,1825,21,106,-1374,-1596, -1241,-993,-265,667,1917,2977,3854,4332,4689,4886,4913,4564,3898,2958,1966,865,-389,-1987,-3868,-5949, -7987,-9830,-11333,-12523,-13261,-13406,-12913,-11934,-10601,-9163,-7652,-6171,-4654,-3144,-1674,-249,1197,2712,4387,6098, 7705,9124,10255,11114,11737,12135,12291,12160,11748,11167,10484,9679,8705,7442,5894,4163,2354,501,-1270,-3017, -4595,-5939,-6851,-7402,-7628,-7641,-7427,-7035,-6424,-5674,-4785,-3911,-3044,-2174,-1202,-164,942,2033,3068,4053, 5010,5895,6648,7195,7515,7609,7571,7440,7207,6776,6176,5403,4538,3614,2595,1389,60,-1427,-2918,-4320, -5624,-6855,-7963,-8946,-9655,-10105,-10346,-10408,-10439,-10378,-10163,-9732,-9092,-8296,-7298,-6063,-4595,-2910,-1091,726, 2422,3987,5351,6588,7612,8409,8888,9114,9135,9028,8742,8197,7355,6201,4836,3314,1693,19,-1756,-3499, -5059,-6385,-7385,-8198,-8807,-9229,-9434,-9404,-9100,-8621,-8008,-7292,-6358,-5191,-3833,-2355,-850,642,2102,3552, 4993,6383,7630,8708,9686,10582,11401,12041,12440,12548,12402,12024,11447,10596,9416,7923,6189,4348,2495,633, -1235,-3012,-4617,-5927,-6912,-7626,-8114,-8401,-8463,-8263,-7833,-7196,-6464,-5673,-4781,-3795,-2758,-1659,-622,354, 1265,2149,3056,3922,4692,5375,5952,6455,6874,7191,7311,7203,6830,6240,5484,4513,3298,1845,242,-1410, -3083,-4686,-6236,-7730,-9112,-10249,-11081,-11620,-11918,-11991,-11831,-11410,-10711,-9782,-8692,-7487,-6171,-4769,-3223,-1619, -7,1498,2957,4383,5766,7067,8280,9287,10072,10656,11036,11188,11053,10528,9652,8508,7172,5697,4076,2305, 495,-1285,-2907,-4351,-5616,-6721,-7655,-8307,-8623,-8633,-8376,-7891,-7254,-6412,-5376,-4193,-2945,-1691,-501,706, 1871,3045,4144,5145,6040,6830,7544,8213,8750,9134,9299,9249,9069,8698,8117,7283,6205,4919,3539,2079, 572,-990,-2589,-4141,-5515,-6728,-7727,-8576,-9239,-9655,-9825,-9709,-9370,-8868,-8235,-7482,-6596,-5558,-4440,-3326, -2188,-1065,77,1213,2348,3415,4383,5230,6033,6724,7313,7722,7877,7824,7558,7078,6402,5445,4226,2782, 1225,-373,-1999,-3634,-5259,-6783,-8138,-9237,-10052,-10626,-10951,-11032,-10808,-10253,-9448,-8459,-7352,-6138,-4806,-3383, -1912,-415,1023,2407,3716,5006,6218,7301,8187,8904,9454,9865,10138,10166,9966,9528,8865,8043,7058,5870, 4470,2889,1247,-373,-1935,-3405,-4782,-6002,-6978,-7672,-8055,-8147,-8046,-7748,-7217,-6488,-5584,-4591,-3544,-2490, -1404,-295,840,1933,2979,3922,4819,5676,6488,7163,7728,8122,8354,8444,8397,8135,7647,6886,5932,4796, 3542,2156,619,-1014,-2651,-4229,-5664,-6958,-8132,-9141,-9955,-10484,-10700,-10674,-10429,-10005,-9400,-8590,-7636,-6542, -5442,-4302,-3157,-1941,-713,525,1703,2838,3898,4911,5848,6701,7368,7807,8011,8037,7875,7477,6804,5874, 4699,3349,1907,385,-1198,-2811,-4400,-5830,-7042,-8016,-8768,-9312,-9588,-9562,-9253,-8679,-7884,-6961,-5905,-4744, -3438,-2075,-718,603,1887,3122,4333,5492,6580,7535,8342,9052,9663,10137,10426,10475,10296,9912,9345,8557, 7567,6343,4919,3370,1791,240,-1303,-2819,-4227,-5464,-6448,-7207,-7725,-8034,-8137,-8011,-7630,-7035,-6309,-5487, -4598,-3646,-2596,-1525,-443,613,1599,2576,3544,4487,5361,6144,6771,7309,7721,8002,8094,7947,7557,6950, 6142,5180,4036,2691,1177,-430,-2039,-3602,-5105,-6521,-7835,-8954,-9807,-10376,-10654,-10724,-10581,-10192,-9586,-8755, -7745,-6639,-5466,-4219,-2912,-1568,-171,1142,2389,3544,4640,5674,6611,7369,7948,8335,8544,8583,8427,8021, 7337,6401,5313,4080,2739,1250,-318,-1909,-3432,-4825,-6024,-7077,-7976,-8643,-9048,-9141,-8968,-8575,-7981,-7221, -6267,-5152,-3939,-2655,-1382,-116,1155,2440,3694,4875,5947,6932,7831,8648,9369,9931,10279,10428,10366,10129, 9696,9047,8108,6986,5672,4279,2822,1306,-238,-1755,-3195,-4443,-5494,-6358,-7040,-7520,-7762,-7736,-7461,-7000, -6416,-5715,-4891,-3964,-2925,-1833,-767,289,1370,2447,3532,4581,5557,6428,7173,7831,8378,8736,8861,8728, 8362,7800,7029,6036,4829,3376,1783,141,-1526,-3156,-4746,-6268,-7620,-8731,-9582,-10160,-10506,-10625,-10485,-10102, -9449,-8614,-7633,-6581,-5448,-4226,-2909,-1589,-293,946,2133,3292,4397,5427,6354,7117,7683,8138,8425,8536, 8371,7949,7276,6381,5334,4110,2706,1156,-481,-2118,-3679,-5128,-6471,-7698,-8725,-9508,-10019,-10232,-10222,-9997, -9593,-8943,-8100,-7124,-6043,-4952,-3831,-2676,-1519,-345,802,1881,2874,3835,4760,5619,6357,6933,7366,7610, 7702,7590,7277,6701,5885,4878,3748,2462,1069,-435,-1985,-3500,-4916,-6183,-7266,-8207,-8927,-9421,-9603,-9484, -9171,-8648,-7973,-7104,-6080,-4911,-3655,-2371,-1088,215,1533,2872,4161,5367,6460,7480,8415,9236,9906,10368, 10599,10611,10409,9992,9354,8448,7275,5931,4446,2893,1279,-362,-1997,-3542,-4914,-6055,-6967,-7676,-8154,-8377, -8316,-7969,-7414,-6667,-5805,-4822,-3728,-2547,-1320,-88,1075,2238,3373,4499,5562,6521,7367,8104,8693,9153, 9476,9563,9405,9001,8385,7595,6597,5389,3996,2462,856,-762,-2332,-3840,-5285,-6600,-7678,-8521,-9093,-9436, -9566,-9476,-9144,-8586,-7835,-6963,-5992,-4989,-3908,-2766,-1583,-417,721,1803,2842,3875,4859,5742,6515,7115, 7577,7909,8047,7986,7636,7038,6237,5232,4076,2752,1259,-339,-1980,-3559,-5045,-6392,-7652,-8715,-9567,-10133, -10426,-10462,-10292,-9891,-9314,-8509,-7539,-6433,-5279,-4085,-2855,-1581,-294,993,2206,3344,4421,5422,6369,7215, 7879,8351,8628,8728,8613,8285,7689,6827,5744,4491,3135,1661,94,-1501,-3074,-4525,-5811,-6908,-7810,-8519, -8993,-9197,-9100,-8753,-8215,-7541,-6674,-5693,-4563,-3383,-2176,-972,230,1413,2626,3776,4864,5856,6754,7549, 8267,8844,9255,9440,9427,9197,8773,8154,7319,6224,4946,3550,2071,567,-987,-2509,-3970,-5270,-6384,-7242, -7922,-8377,-8626,-8609,-8322,-7839,-7179,-6367,-5457,-4416,-3297,-2097,-890,335,1496,2678,3848,4957,6019,6947, 7771,8483,9040,9468,9678,9659,9378,8856,8126,7226,6079,4751,3264,1685,79,-1505,-3032,-4478,-5794,-6929, -7814,-8450,-8827,-8983,-8930,-8629,-8083,-7343,-6433,-5445,-4376,-3250,-2064,-831,413,1598,2751,3852,4922,5930, 6839,7641,8263,8720,9026,9165,9066,8727,8098,7259,6224,5003,3641,2141,522,-1148,-2756,-4263,-5638,-6885, -7938,-8808,-9389,-9712,-9777,-9627,-9279,-8742,-8027,-7122,-6127,-5034,-3932,-2793,-1620,-419,737,1882,2967,3980, 4935,5819,6615,7258,7720,7990,8079,7969,7647,7060,6232,5185,3942,2584,1125,-414,-2016,-3594,-5100,-6400, -7573,-8519,-9269,-9800,-10059,-10058,-9805,-9326,-8688,-7895,-6949,-5857,-4688,-3469,-2222,-971,277,1506,2763,3943, 5044,6030,6922,7735,8417,8914,9213,9260,9083,8703,8097,7281,6233,4954,3539,2023,501,-1052,-2586,-4045, -5366,-6493,-7389,-8031,-8460,-8642,-8611,-8285,-7734,-6990,-6130,-5138,-4059,-2890,-1669,-413,832,2029,3190,4335, 5432,6463,7362,8147,8790,9290,9648,9820,9750,9449,8902,8132,7191,6064,4713,3202,1604,-19,-1626,-3192, -4638,-5971,-7134,-8072,-8751,-9180,-9371,-9339,-9076,-8597,-7909,-7059,-6099,-5071,-3971,-2835,-1649,-425,757,1870, 2975,4033,5049,5977,6787,7457,7971,8289,8460,8426,8162,7617,6836,5858,4717,3415,1979,404,-1211,-2802, -4334,-5704,-6951,-8038,-8924,-9563,-9913,-9984,-9844,-9501,-8930,-8195,-7288,-6214,-5091,-3899,-2706,-1477,-209,1062, 2275,3451,4543,5578,6507,7341,8037,8552,8829,8936,8830,8501,7932,7106,6050,4815,3417,1932,374,-1224, -2826,-4357,-5745,-6922,-7918,-8696,-9262,-9586,-9629,-9424,-8992,-8381,-7623,-6738,-5689,-4568,-3384,-2188,-992,209, 1394,2559,3699,4754,5714,6575,7326,7965,8439,8702,8750,8561,8158,7528,6685,5598,4312,2874,1342,-233, -1814,-3372,-4872,-6248,-7418,-8371,-9080,-9546,-9805,-9815,-9590,-9117,-8426,-7604,-6674,-5632,-4504,-3317,-2071,-837, 402,1585,2757,3910,5003,6015,6884,7639,8262,8727,8986,9053,8834,8385,7677,6777,5687,4401,2929,1347, -300,-1915,-3472,-4927,-6274,-7448,-8397,-9068,-9485,-9636,-9554,-9268,-8747,-7988,-7108,-6072,-4955,-3787,-2565,-1314, -14,1256,2486,3634,4775,5830,6835,7696,8423,8972,9351,9532,9547,9290,8802,8048,7070,5919,4619,3154, 1601,-29,-1632,-3167,-4570,-5812,-6868,-7744,-8371,-8724,-8803,-8665,-8306,-7753,-6998,-6103,-5059,-3923,-2748,-1560, -369,856,2075,3266,4401,5462,6438,7347,8162,8826,9323,9612,9692,9578,9250,8698,7885,6848,5625,4246, 2730,1175,-446,-2049,-3621,-5045,-6291,-7333,-8168,-8763,-9121,-9215,-9038,-8635,-8048,-7272,-6379,-5363,-4216,-3005, -1773,-547,685,1908,3105,4272,5367,6360,7246,8003,8637,9118,9402,9437,9230,8814,8166,7284,6190,4881, 3415,1834,225,-1397,-2969,-4495,-5898,-7116,-8094,-8836,-9329,-9576,-9590,-9365,-8909,-8242,-7390,-6420,-5367,-4222, -3004,-1738,-497,752,1960,3138,4262,5364,6345,7220,7955,8533,8968,9217,9257,9028,8554,7853,6922,5806, 4525,3071,1469,-138,-1748,-3299,-4758,-6085,-7246,-8192,-8903,-9332,-9510,-9445,-9183,-8710,-8022,-7149,-6164,-5084, -3945,-2753,-1534,-280,959,2168,3319,4417,5477,6449,7325,8057,8613,8995,9169,9152,8921,8411,7672,6680, 5486,4165,2705,1116,-508,-2126,-3703,-5147,-6418,-7517,-8421,-9077,-9442,-9560,-9401,-9043,-8475,-7731,-6815,-5777, -4612,-3399,-2168,-929,325,1577,2820,3982,5092,6103,7013,7836,8509,9038,9363,9449,9334,9019,8435,7644, 6594,5329,3905,2384,783,-848,-2475,-4036,-5502,-6768,-7810,-8649,-9261,-9608,-9713,-9533,-9136,-8530,-7742,-6831, -5802,-4655,-3453,-2224,-976,232,1427,2610,3724,4798,5763,6633,7382,7989,8451,8725,8762,8571,8162,7510, 6652,5585,4320,2885,1316,-288,-1872,-3460,-4961,-6359,-7584,-8572,-9330,-9833,-10088,-10132,-9908,-9456,-8790,-7935, -6960,-5901,-4743,-3510,-2235,-947,329,1567,2770,3916,5015,6049,6939,7704,8296,8730,8988,9016,8807,8366, 7657,6739,5611,4327,2887,1312,-326,-1925,-3499,-4933,-6266,-7435,-8379,-9080,-9523,-9693,-9625,-9326,-8841,-8151, -7259,-6221,-5114,-3906,-2687,-1418,-151,1131,2377,3567,4682,5730,6704,7568,8289,8806,9151,9323,9258,8990, 8487,7706,6720,5511,4179,2720,1156,-465,-2068,-3619,-5038,-6287,-7371,-8252,-8883,-9280,-9368,-9221,-8844,-8297, -7560,-6642,-5599,-4449,-3242,-1994,-724,531,1772,3013,4198,5330,6350,7295,8124,8836,9357,9704,9817,9715, 9360,8814,8038,7011,5778,4366,2874,1307,-320,-1929,-3491,-4923,-6196,-7240,-8053,-8641,-8993,-9084,-8915,-8513, -7899,-7116,-6189,-5150,-4031,-2813,-1559,-294,961,2172,3370,4545,5633,6643,7542,8319,8940,9417,9692,9748, 9574,9141,8490,7608,6535,5224,3754,2189,542,-1109,-2710,-4228,-5644,-6902,-7931,-8698,-9224,-9506,-9519,-9307, -8874,-8227,-7384,-6418,-5355,-4223,-3016,-1779,-517,715,1926,3082,4206,5244,6233,7102,7820,8393,8790,9001, 9010,8780,8307,7592,6657,5518,4187,2742,1178,-476,-2120,-3680,-5166,-6480,-7659,-8619,-9338,-9784,-9984,-9908, -9629,-9139,-8453,-7592,-6576,-5466,-4296,-3074,-1828,-551,706,1937,3134,4273,5307,6306,7179,7933,8513,8897, 9085,9071,8839,8364,7650,6672,5503,4161,2696,1149,-473,-2101,-3671,-5118,-6407,-7513,-8411,-9053,-9456,-9593, -9442,-9078,-8478,-7740,-6832,-5774,-4610,-3397,-2107,-836,444,1716,2945,4136,5271,6289,7219,8038,8733,9248, 9573,9692,9575,9226,8651,7865,6831,5604,4170,2647,1059,-578,-2189,-3745,-5193,-6476,-7542,-8382,-8986,-9334, -9441,-9276,-8885,-8275,-7491,-6584,-5540,-4412,-3218,-1969,-722,505,1704,2860,4002,5078,6037,6907,7645,8245, 8669,8934,8982,8801,8364,7707,6844,5773,4508,3060,1515,-124,-1755,-3350,-4854,-6263,-7514,-8560,-9347,-9878, -10170,-10220,-10020,-9593,-8965,-8141,-7184,-6102,-4962,-3763,-2497,-1221,52,1287,2462,3597,4685,5670,6569,7324, 7914,8338,8571,8602,8421,7965,7274,6366,5251,3979,2553,1006,-600,-2221,-3788,-5236,-6538,-7673,-8632,-9352, -9793,-9977,-9900,-9580,-9068,-8355,-7472,-6445,-5299,-4086,-2860,-1579,-297,978,2222,3425,4561,5627,6588,7446, 8165,8731,9104,9269,9213,8960,8450,7720,6750,5560,4207,2735,1173,-432,-2051,-3613,-5068,-6342,-7437,-8322, -8978,-9369,-9524,-9427,-9061,-8511,-7795,-6934,-5929,-4816,-3628,-2423,-1181,38,1252,2454,3603,4712,5723,6652, 7438,8123,8641,8995,9120,9007,8682,8120,7367,6363,5154,3774,2250,675,-915,-2525,-4052,-5472,-6746,-7804, -8627,-9200,-9526,-9617,-9456,-9031,-8424,-7616,-6694,-5653,-4505,-3297,-2052,-755,478,1721,2889,4067,5154,6179, 7081,7858,8497,8980,9262,9354,9194,8813,8175,7331,6269,5025,3616,2065,445,-1156,-2735,-4239,-5618,-6851, -7868,-8645,-9160,-9418,-9439,-9221,-8774,-8125,-7280,-6336,-5242,-4091,-2897,-1659,-384,846,2068,3238,4339,5393, 6376,7235,7982,8563,8967,9172,9188,9008,8575,7889,7005,5877,4615,3194,1655,47,-1554,-3130,-4592,-5920, -7070,-8034,-8762,-9243,-9441,-9400,-9118,-8631,-7953,-7129,-6132,-5052,-3863,-2652,-1443,-193,1056,2276,3424,4521, 5554,6493,7317,8045,8602,8986,9142,9098,8837,8366,7608,6659,5498,4136,2657,1089,-516,-2141,-3724,-5188, -6506,-7625,-8521,-9207,-9640,-9794,-9711,-9365,-8809,-8084,-7195,-6188,-5063,-3871,-2618,-1371,-106,1114,2340,3499, 4622,5655,6575,7373,8060,8583,8924,9056,8955,8640,8092,7300,6338,5149,3777,2268,712,-895,-2463,-3999, -5384,-6642,-7697,-8514,-9099,-9438,-9504,-9359,-8964,-8351,-7573,-6648,-5609,-4491,-3298,-2058,-799,452,1649,2854, 3979,5074,6109,7002,7771,8420,8893,9198,9291,9162,8780,8186,7357,6339,5123,3766,2247,657,-951,-2497, -4022,-5383,-6616,-7623,-8429,-8955,-9215,-9249,-9058,-8634,-8005,-7186,-6224,-5168,-4005,-2803,-1582,-321,961,2193, 3382,4501,5561,6564,7436,8198,8796,9218,9448,9462,9268,8849,8188,7270,6168,4865,3453,1891,270,-1344, -2933,-4420,-5778,-6934,-7913,-8673,-9177,-9418,-9376,-9137,-8664,-8008,-7191,-6216,-5156,-4006,-2809,-1602,-379,845, 2052,3214,4290,5310,6237,7054,7770,8326,8686,8873,8808,8539,8054,7344,6399,5256,3908,2448,900,-688, -2284,-3830,-5297,-6587,-7697,-8590,-9255,-9690,-9873,-9781,-9470,-8922,-8211,-7355,-6362,-5266,-4098,-2854,-1630,-368, 841,2051,3232,4338,5380,6333,7154,7859,8410,8786,8953,8880,8581,8070,7327,6345,5197,3835,2377,792, -801,-2367,-3884,-5306,-6568,-7632,-8459,-9054,-9399,-9492,-9343,-8981,-8373,-7579,-6642,-5608,-4478,-3272,-2019,-745, 519,1777,2983,4144,5241,6276,7219,8025,8675,9172,9492,9622,9499,9139,8547,7738,6716,5503,4137,2643, 1050,-564,-2154,-3641,-5018,-6219,-7249,-8046,-8611,-8899,-8928,-8718,-8327,-7714,-6928,-5980,-4930,-3817,-2644,-1415, -207,1021,2223,3374,4478,5514,6473,7340,8084,8672,9092,9307,9325,9140,8702,8047,7154,6032,4756,3333, 1800,187,-1447,-3049,-4558,-5937,-7119,-8124,-8883,-9415,-9690,-9688,-9458,-9010,-8365,-7552,-6603,-5541,-4398,-3197, -1957,-735,516,1733,2921,4023,5071,6037,6906,7631,8226,8654,8864,8854,8621,8158,7487,6569,5439,4144, 2700,1164,-418,-1993,-3542,-5004,-6306,-7419,-8325,-8988,-9414,-9604,-9509,-9189,-8647,-7910,-7031,-6008,-4912,-3723, -2492,-1214,30,1278,2499,3694,4803,5849,6806,7636,8310,8866,9235,9413,9365,9047,8518,7775,6812,5641, 4317,2831,1271,-338,-1922,-3420,-4865,-6145,-7220,-8085,-8692,-9087,-9213,-9095,-8749,-8217,-7458,-6567,-5549,-4456, -3293,-2078,-833,404,1626,2807,3951,5035,6049,6956,7773,8400,8902,9230,9333,9227,8864,8273,7467,6438, 5209,3850,2326,737,-901,-2503,-4028,-5418,-6676,-7727,-8568,-9135,-9481,-9545,-9383,-8999,-8412,-7637,-6717,-5651, -4535,-3371,-2141,-902,333,1577,2744,3884,4940,5904,6806,7564,8178,8627,8869,8912,8746,8335,7704,6841, 5759,4487,3090,1583,-2,-1619,-3202,-4686,-6034,-7220,-8171,-8919,-9442,-9700,-9690,-9432,-8963,-8315,-7467,-6512, -5420,-4259,-3048,-1800,-538,685,1922,3112,4247,5321,6281,7142,7919,8494,8930,9167,9168,8962,8515,7860, 6983,5869,4596,3189,1672,92,-1487,-3034,-4468,-5794,-6938,-7827,-8531,-8968,-9180,-9141,-8850,-8346,-7666,-6774, -5812,-4725,-3583,-2367,-1132,106,1322,2534,3692,4829,5866,6805,7621,8323,8856,9227,9396,9348,9061,8510, 7752,6796,5620,4280,2809,1235,-382,-1984,-3527,-4956,-6263,-7391,-8254,-8917,-9318,-9479,-9401,-9073,-8537,-7824, -6938,-5941,-4841,-3683,-2483,-1251,-7,1208,2398,3548,4631,5662,6561,7363,8017,8490,8805,8919,8818,8473, 7882,7089,6073,4854,3489,2010,424,-1194,-2774,-4290,-5681,-6905,-7961,-8774,-9359,-9681,-9761,-9593,-9209,-8634, -7864,-6941,-5899,-4766,-3578,-2378,-1125,127,1344,2553,3704,4783,5787,6697,7492,8173,8648,8944,9025,8908, 8552,7958,7152,6129,4889,3514,2060,510,-1067,-2639,-4108,-5451,-6627,-7594,-8332,-8857,-9105,-9110,-8875,-8419, -7760,-6957,-5974,-4908,-3738,-2536,-1289,-24,1232,2448,3661,4792,5875,6845,7723,8469,9087,9521,9762,9767, 9577,9117,8452,7565,6458,5141,3703,2159,555,-1045,-2628,-4117,-5453,-6637,-7598,-8315,-8798,-9023,-9024,-8774, -8292,-7618,-6814,-5856,-4803,-3668,-2495,-1278,-53,1154,2335,3476,4559,5586,6510,7314,7982,8529,8861,9036, 8995,8700,8177,7425,6461,5313,3952,2484,909,-713,-2321,-3878,-5342,-6641,-7786,-8704,-9367,-9791,-9958,-9913, -9605,-9104,-8404,-7545,-6549,-5464,-4311,-3123,-1890,-643,579,1764,2905,4019,5032,5953,6771,7449,7959,8300, 8442,8369,8063,7514,6732,5739,4557,3209,1745,202,-1411,-2978,-4501,-5882,-7088,-8154,-8988,-9559,-9890,-9961, -9792,-9414,-8804,-8032,-7108,-6053,-4897,-3678,-2443,-1183,97,1343,2569,3752,4857,5879,6798,7625,8307,8807, 9078,9202,9078,8740,8162,7346,6306,5082,3701,2223,655,-923,-2486,-3989,-5356,-6540,-7547,-8329,-8853,-9138, -9166,-8970,-8540,-7885,-7091,-6162,-5102,-3960,-2755,-1529,-292,952,2163,3329,4473,5535,6499,7361,8107,8716, 9139,9372,9404,9200,8773,8118,7209,6121,4850,3410,1868,277,-1322,-2873,-4372,-5737,-6915,-7875,-8629,-9086, -9362,-9354,-9132,-8663,-8001,-7181,-6209,-5147,-4003,-2818,-1570,-346,910,2106,3263,4398,5443,6406,7238,7945, 8524,8902,9079,9063,8820,8324,7594,6639,5490,4183,2709,1150,-459,-2065,-3622,-5077,-6395,-7511,-8442,-9122, -9536,-9706,-9639,-9344,-8848,-8131,-7269,-6274,-5153,-3987,-2768,-1552,-283,963,2177,3320,4434,5460,6411,7228, 7918,8440,8795,8921,8874,8579,8036,7253,6283,5105,3761,2280,739,-867,-2444,-3975,-5373,-6622,-7674,-8546, -9137,-9476,-9587,-9447,-9073,-8503,-7742,-6836,-5794,-4648,-3457,-2233,-994,264,1516,2732,3894,5000,6006,6927, 7713,8382,8875,9178,9258,9146,8786,8205,7363,6333,5101,3720,2195,635,-969,-2553,-4086,-5486,-6698,-7715, -8523,-9079,-9378,-9442,-9257,-8863,-8242,-7439,-6522,-5476,-4338,-3131,-1883,-651,595,1834,3017,4158,5241,6226, 7112,7846,8455,8907,9157,9169,8993,8555,7897,7010,5928,4642,3210,1656,64,-1544,-3105,-4614,-5985,-7178, -8147,-8897,-9386,-9630,-9633,-9387,-8953,-8294,-7449,-6507,-5422,-4268,-3074,-1825,-579,657,1899,3074,4184,5255, 6228,7077,7792,8366,8760,8959,8942,8708,8219,7503,6555,5424,4143,2694,1132,-458,-2068,-3622,-5076,-6394, -7520,-8445,-9144,-9561,-9735,-9678,-9389,-8891,-8173,-7297,-6315,-5192,-4024,-2807,-1553,-291,962,2201,3365,4482, 5538,6497,7346,8053,8580,8949,9098,9031,8763,8238,7474,6492,5311,3974,2501,928,-672,-2261,-3802,-5233, -6503,-7580,-8430,-9073,-9433,-9548,-9401,-9038,-8483,-7723,-6818,-5788,-4638,-3438,-2186,-935,318,1572,2788,3961, 5064,6100,7013,7817,8486,8976,9295,9378,9257,8905,8318,7504,6473,5221,3847,2336,751,-848,-2442,-3957, -5371,-6608,-7636,-8441,-9022,-9332,-9392,-9208,-8812,-8209,-7421,-6483,-5451,-4300,-3099,-1847,-605,623,1858,3049, 4182,5277,6269,7160,7917,8519,8958,9236,9284,9091,8680,8032,7161,6060,4791,3371,1819,218,-1390,-2945, -4451,-5829,-7036,-8017,-8786,-9310,-9564,-9563,-9330,-8897,-8237,-7413,-6453,-5383,-4215,-2994,-1735,-473,778,2016, 3213,4344,5407,6407,7277,8006,8577,8982,9202,9190,8953,8489,7773,6839,5707,4413,2972,1416,-202,-1802, -3346,-4802,-6123,-7258,-8185,-8881,-9337,-9504,-9430,-9138,-8634,-7936,-7054,-6044,-4944,-3749,-2516,-1265,1,1255, 2491,3691,4799,5848,6806,7663,8378,8890,9243,9393,9332,9046,8529,7767,6796,5597,4257,2789,1226,-381, -1967,-3520,-4946,-6217,-7311,-8190,-8809,-9208,-9332,-9207,-8851,-8285,-7558,-6647,-5623,-4498,-3290,-2064,-796,461, 1694,2931,4109,5205,6229,7170,7981,8656,9162,9473,9580,9463,9126,8538,7741,6689,5465,4070,2558,980, -641,-2214,-3740,-5144,-6409,-7453,-8264,-8838,-9155,-9243,-9071,-8673,-8065,-7296,-6368,-5316,-4190,-2976,-1733,-490, 753,1960,3161,4313,5379,6383,7262,8038,8638,9080,9338,9385,9188,8779,8117,7240,6163,4876,3437,1902, 288,-1341,-2920,-4428,-5800,-7017,-8024,-8791,-9321,-9612,-9621,-9408,-8956,-8313,-7510,-6540,-5468,-4340,-3116,-1880, -611,625,1842,3017,4167,5220,6178,7047,7781,8362,8744,8961,8962,8725,8262,7563,6642,5519,4212,2778, 1246,-378,-1998,-3551,-5007,-6329,-7487,-8424,-9122,-9576,-9805,-9722,-9444,-8936,-8251,-7393,-6406,-5284,-4103,-2871, -1609,-337,910,2140,3331,4460,5498,6462,7302,8022,8556,8940,9098,9054,8786,8262,7529,6579,5409,4068, 2617,1068,-529,-2122,-3653,-5089,-6344,-7453,-8322,-8958,-9341,-9478,-9339,-8994,-8443,-7718,-6818,-5788,-4660,-3466, -2221,-959,310,1541,2751,3940,5060,6078,7001,7812,8479,8981,9304,9396,9293,8952,8378,7562,6574,5352, 3955,2461,883,-732,-2298,-3826,-5237,-6486,-7527,-8356,-8940,-9265,-9376,-9213,-8822,-8227,-7481,-6560,-5520,-4398, -3240,-1986,-756,495,1701,2894,4031,5123,6116,6998,7760,8375,8813,9086,9135,8965,8532,7899,7024,5973, 4686,3254,1728,134,-1485,-3065,-4562,-5944,-7143,-8155,-8943,-9462,-9726,-9761,-9548,-9117,-8468,-7685,-6726,-5670, -4513,-3308,-2073,-820,437,1638,2833,3953,5024,5991,6860,7606,8188,8592,8793,8791,8597,8131,7450,6534, 5417,4130,2697,1148,-445,-2052,-3600,-5057,-6378,-7527,-8466,-9177,-9613,-9833,-9770,-9483,-8988,-8286,-7426,-6433, -5315,-4148,-2908,-1641,-368,895,2132,3310,4443,5497,6450,7300,8023,8591,8964,9127,9105,8844,8342,7618, 6684,5552,4211,2742,1204,-350,-1949,-3482,-4908,-6192,-7267,-8162,-8805,-9181,-9337,-9237,-8891,-8351,-7610,-6741, -5724,-4596,-3407,-2185,-914,332,1576,2784,3949,5067,6089,6997,7831,8500,9005,9332,9434,9321,8998,8417, 7629,6637,5438,4049,2548,981,-637,-2219,-3734,-5151,-6400,-7455,-8296,-8882,-9214,-9316,-9168,-8789,-8212,-7439, -6538,-5508,-4387,-3216,-1969,-728,514,1754,2938,4074,5158,6170,7057,7847,8452,8917,9184,9234,9071,8682, 8014,7187,6117,4867,3463,1946,357,-1259,-2843,-4342,-5717,-6926,-7940,-8720,-9257,-9526,-9572,-9364,-8938,-8314, -7503,-6558,-5507,-4367,-3178,-1932,-671,559,1789,2965,4100,5164,6142,7012,7763,8340,8778,8992,8986,8805, 8355,7657,6777,5665,4392,2955,1417,-183,-1775,-3353,-4796,-6132,-7285,-8253,-8972,-9439,-9651,-9621,-9343,-8850, -8181,-7332,-6350,-5255,-4070,-2837,-1600,-336,909,2156,3329,4456,5508,6462,7298,8036,8584,8968,9144,9105, 8838,8347,7606,6676,5527,4198,2742,1196,-393,-1975,-3527,-4972,-6265,-7368,-8275,-8946,-9353,-9496,-9434,-9118, -8579,-7843,-6985,-5992,-4882,-3686,-2466,-1222,56,1284,2503,3654,4747,5787,6716,7527,8189,8708,9044,9158, 9064,8743,8182,7386,6410,5211,3860,2365,790,-810,-2372,-3917,-5301,-6567,-7636,-8475,-9083,-9435,-9521,-9398, -9032,-8451,-7680,-6773,-5757,-4632,-3419,-2189,-931,337,1571,2775,3932,5024,6037,6934,7714,8366,8816,9144, 9191,9041,8659,8046,7198,6164,4914,3538,2023,439,-1159,-2733,-4238,-5603,-6814,-7813,-8617,-9166,-9454,-9481, -9298,-8865,-8242,-7452,-6507,-5453,-4302,-3098,-1852,-583,684,1901,3113,4237,5314,6311,7194,7931,8544,8973, 9202,9215,9014,8586,7921,7020,5930,4650,3240,1703,106,-1491,-3058,-4534,-5852,-7020,-7974,-8727,-9231,-9460, -9434,-9197,-8722,-8053,-7232,-6263,-5185,-4037,-2800,-1570,-318,939,2147,3331,4450,5500,6463,7294,8007,8573, 8959,9141,9085,8826,8333,7623,6674,5539,4220,2770,1211,-387,-1969,-3512,-4967,-6271,-7394,-8306,-8984,-9415, -9587,-9505,-9213,-8666,-7979,-7110,-6108,-5011,-3833,-2605,-1340,-106,1154,2374,3539,4629,5674,6640,7443,8126, 8659,9003,9148,9068,8727,8203,7435,6452,5290,3938,2465,898,-700,-2272,-3781,-5224,-6458,-7526,-8377,-8995, -9366,-9478,-9336,-9003,-8417,-7678,-6764,-5736,-4625,-3435,-2198,-947,308,1549,2763,3909,5000,6018,6940,7719, 8362,8845,9129,9213,9074,8695,8090,7263,6213,5007,3620,2123,530,-1074,-2635,-4136,-5519,-6719,-7747,-8561, -9121,-9422,-9484,-9295,-8898,-8261,-7502,-6560,-5530,-4388,-3182,-1933,-703,566,1787,2985,4119,5182,6153,7064, 7814,8408,8839,9086,9132,8920,8500,7846,6946,5864,4600,3190,1670,81,-1520,-3086,-4571,-5917,-7084,-8068, -8805,-9313,-9567,-9573,-9328,-8898,-8231,-7414,-6468,-5392,-4245,-3038,-1794,-543,714,1935,3096,4233,5284,6243, 7114,7813,8391,8793,8984,8979,8702,8239,7551,6623,5486,4204,2764,1240,-348,-1953,-3476,-4929,-6253,-7353, -8286,-8953,-9399,-9572,-9516,-9213,-8720,-8007,-7145,-6148,-5060,-3892,-2646,-1391,-144,1106,2333,3501,4612,5655, 6597,7422,8108,8640,9003,9145,9084,8776,8236,7490,6527,5358,4028,2553,998,-610,-2206,-3695,-5120,-6399, -7474,-8330,-8948,-9349,-9467,-9344,-9003,-8470,-7717,-6813,-5793,-4700,-3521,-2278,-1014,212,1459,2678,3827,4935, 5930,6824,7651,8281,8795,9081,9176,9064,8704,8121,7308,6269,5067,3699,2204,636,-979,-2555,-4039,-5430, -6659,-7690,-8502,-9070,-9388,-9471,-9308,-8907,-8323,-7535,-6615,-5578,-4461,-3258,-2032,-784,455,1698,2890,4031, 5098,6080,6963,7722,8330,8778,9038,9072,8893,8478,7833,6977,5894,4639,3234,1727,146,-1466,-3035,-4509, -5866,-7052,-8012,-8791,-9304,-9580,-9598,-9365,-8926,-8285,-7455,-6524,-5442,-4293,-3098,-1843,-586,633,1866,3050, 4188,5230,6198,7060,7797,8376,8797,8998,8989,8760,8290,7603,6705,5586,4297,2871,1342,-248,-1828,-3361, -4803,-6132,-7264,-8182,-8866,-9312,-9547,-9503,-9197,-8718,-8033,-7166,-6182,-5088,-3923,-2698,-1439,-183,1051,2283, 3461,4589,5640,6575,7417,8109,8644,8996,9178,9117,8831,8301,7567,6614,5444,4119,2672,1123,-468,-2049, -3583,-4988,-6257,-7351,-8219,-8855,-9241,-9407,-9303,-8967,-8416,-7707,-6815,-5806,-4681,-3500,-2286,-1032,231,1469, 2692,3858,4961,5979,6890,7701,8380,8860,9188,9287,9172,8836,8248,7450,6457,5227,3876,2401,819,-764, -2340,-3843,-5229,-6467,-7498,-8315,-8901,-9241,-9346,-9199,-8806,-8224,-7479,-6569,-5538,-4411,-3230,-2012,-762,486, 1713,2910,4058,5133,6111,7002,7774,8393,8837,9093,9152,8989,8581,7936,7080,6022,4751,3361,1863,277, -1331,-2892,-4391,-5736,-6949,-7941,-8706,-9240,-9509,-9551,-9349,-8900,-8293,-7494,-6546,-5490,-4345,-3165,-1939,-684, 556,1775,2978,4112,5169,6130,6999,7741,8328,8723,8955,8952,8739,8275,7599,6691,5594,4303,2883,1356, -229,-1815,-3362,-4829,-6140,-7303,-8234,-8944,-9408,-9614,-9599,-9322,-8846,-8161,-7327,-6338,-5258,-4085,-2868,-1615, -353,883,2103,3301,4416,5483,6423,7268,7969,8532,8882,9073,9026,8769,8253,7514,6568,5438,4108,2665, 1128,-445,-2026,-3549,-4975,-6241,-7360,-8236,-8894,-9280,-9426,-9348,-9027,-8491,-7776,-6884,-5876,-4761,-3590,-2346, -1096,177,1413,2632,3806,4893,5923,6844,7662,8332,8827,9137,9280,9156,8828,8265,7474,6471,5271,3905, 2434,867,-736,-2326,-3843,-5249,-6479,-7550,-8391,-8990,-9346,-9447,-9314,-8959,-8382,-7628,-6745,-5704,-4585,-3398, -2194,-947,298,1533,2745,3886,4965,5988,6860,7632,8260,8720,8978,9044,8892,8500,7885,7023,5985,4736, 3343,1836,268,-1330,-2899,-4394,-5780,-6957,-7969,-8752,-9277,-9551,-9599,-9420,-8989,-8355,-7568,-6628,-5558,-4414, -3209,-1973,-717,542,1773,2961,4130,5199,6187,7068,7811,8407,8836,9053,9096,8884,8457,7776,6896,5796, 4528,3112,1596,34,-1550,-3103,-4571,-5906,-7049,-8001,-8705,-9178,-9409,-9374,-9129,-8666,-7988,-7137,-6166,-5079, -3916,-2701,-1453,-181,1085,2313,3492,4639,5698,6667,7500,8212,8774,9151,9326,9305,9031,8542,7814,6857, 5724,4404,2949,1402,-180,-1778,-3317,-4752,-6044,-7140,-8062,-8719,-9161,-9309,-9259,-8960,-8442,-7739,-6879,-5886, -4786,-3604,-2387,-1154,100,1349,2552,3723,4841,5860,6782,7595,8251,8774,9093,9187,9109,8764,8219,7419, 6426,5225,3879,2397,839,-769,-2353,-3866,-5283,-6529,-7611,-8465,-9068,-9441,-9546,-9423,-9087,-8524,-7764,-6887, -5840,-4722,-3536,-2295,-1057,211,1453,2666,3832,4932,5936,6861,7633,8268,8752,9040,9111,8979,8611,8005, 7164,6121,4895,3514,1995,452,-1138,-2708,-4213,-5585,-6778,-7794,-8588,-9115,-9416,-9470,-9270,-8858,-8239,-7444, -6511,-5451,-4310,-3087,-1834,-585,665,1917,3108,4269,5360,6350,7242,7988,8592,9019,9253,9280,9094,8662, 7990,7100,5993,4730,3324,1774,212,-1387,-2940,-4421,-5767,-6925,-7890,-8641,-9121,-9373,-9357,-9112,-8650,-8009, -7175,-6222,-5130,-3985,-2785,-1530,-267,970,2213,3380,4516,5576,6538,7392,8092,8662,9032,9218,9178,8928, 8441,7720,6761,5613,4297,2853,1285,-296,-1896,-3434,-4892,-6206,-7334,-8235,-8933,-9363,-9567,-9479,-9210,-8684, -8006,-7155,-6160,-5069,-3869,-2658,-1400,-145,1110,2337,3508,4631,5688,6613,7443,8116,8633,8983,9100,9006, 8712,8148,7380,6407,5217,3866,2397,826,-754,-2335,-3858,-5279,-6540,-7600,-8459,-9097,-9446,-9572,-9423,-9089, -8534,-7785,-6885,-5856,-4717,-3528,-2280,-1011,231,1489,2725,3892,4983,6018,6944,7731,8384,8861,9153,9236, 9099,8737,8138,7323,6278,5050,3676,2165,587,-983,-2561,-4048,-5441,-6661,-7667,-8464,-9042,-9343,-9403,-9229, -8822,-8226,-7443,-6500,-5463,-4308,-3114,-1872,-604,655,1900,3106,4248,5340,6336,7222,7984,8585,9031,9274, 9303,9111,8678,8020,7129,6032,4769,3355,1837,224,-1345,-2904,-4368,-5728,-6908,-7864,-8605,-9126,-9367,-9363, -9129,-8693,-8060,-7233,-6255,-5196,-4047,-2820,-1576,-312,925,2170,3376,4501,5564,6537,7390,8114,8668,9061, 9255,9232,8983,8519,7784,6870,5726,4417,2983,1439,-169,-1739,-3294,-4741,-6060,-7199,-8111,-8802,-9257,-9451, -9400,-9108,-8621,-7926,-7075,-6074,-5008,-3819,-2609,-1347,-94,1157,2378,3549,4650,5698,6645,7470,8138,8660, 9000,9145,9067,8747,8231,7453,6467,5273,3925,2468,908,-713,-2275,-3818,-5231,-6501,-7599,-8461,-9091,-9497, -9620,-9513,-9182,-8629,-7910,-7024,-6003,-4918,-3713,-2485,-1218,26,1269,2484,3640,4745,5742,6666,7460,8093, 8581,8848,8954,8813,8449,7879,7055,6022,4796,3422,1933,370,-1244,-2799,-4285,-5690,-6923,-7949,-8767,-9316, -9659,-9720,-9559,-9152,-8566,-7790,-6860,-5803,-4681,-3450,-2222,-947,307,1543,2741,3910,4981,5995,6902,7658, 8263,8714,8959,9014,8815,8410,7775,6905,5835,4580,3171,1662,93,-1518,-3039,-4521,-5872,-7039,-8022,-8758, -9276,-9552,-9549,-9322,-8873,-8233,-7427,-6460,-5384,-4226,-3003,-1747,-494,771,2009,3193,4341,5389,6374,7223, 7972,8537,8924,9124,9115,8858,8407,7702,6790,5668,4351,2932,1389,-192,-1799,-3322,-4773,-6080,-7227,-8140, -8844,-9303,-9511,-9461,-9183,-8699,-8018,-7181,-6198,-5110,-3957,-2734,-1492,-230,1025,2240,3416,4532,5568,6507, 7350,8033,8558,8893,9031,8961,8663,8144,7380,6404,5246,3878,2416,864,-737,-2309,-3831,-5270,-6524,-7648, -8512,-9139,-9545,-9702,-9584,-9261,-8721,-8007,-7120,-6102,-4979,-3802,-2556,-1282,-25,1204,2435,3589,4712,5732, 6667,7455,8145,8620,8925,9033,8921,8549,7989,7201,6183,4971,3610,2112,568,-1020,-2584,-4070,-5446,-6668, -7703,-8519,-9076,-9414,-9502,-9320,-8924,-8337,-7562,-6645,-5584,-4451,-3253,-1988,-724,552,1781,2995,4163,5256, 6264,7159,7942,8575,9023,9271,9334,9171,8757,8127,7277,6208,4969,3563,2077,492,-1104,-2657,-4139,-5480, -6666,-7661,-8434,-8940,-9216,-9248,-8998,-8589,-7942,-7151,-6192,-5132,-3966,-2768,-1517,-259,1011,2252,3438,4567, 5644,6601,7477,8206,8805,9187,9375,9374,9155,8677,7985,7072,5952,4646,3208,1680,95,-1504,-3048,-4494, -5839,-6981,-7935,-8637,-9107,-9330,-9308,-9045,-8572,-7888,-7073,-6090,-5003,-3841,-2635,-1365,-117,1120,2333,3526, 4648,5690,6629,7472,8163,8709,9039,9200,9125,8872,8326,7593,6630,5453,4127,2647,1116,-467,-2076,-3594, -5021,-6287,-7397,-8287,-8938,-9342,-9511,-9412,-9101,-8551,-7841,-6978,-5964,-4849,-3667,-2455,-1176,67,1323,2521, 3715,4807,5838,6756,7563,8212,8726,9019,9111,8995,8666,8076,7293,6268,5081,3708,2219,649,-924,-2521, -4017,-5417,-6657,-7707,-8555,-9155,-9499,-9589,-9452,-9084,-8510,-7735,-6851,-5804,-4667,-3478,-2250,-975,262,1520, 2721,3877,4975,5979,6862,7639,8255,8716,8968,9009,8853,8451,7804,6970,5912,4662,3259,1744,172,-1417, -2987,-4468,-5825,-7026,-8030,-8818,-9347,-9632,-9676,-9474,-9029,-8419,-7617,-6682,-5627,-4463,-3276,-2015,-740,501, 1751,2925,4056,5143,6121,6985,7742,8333,8745,8932,8946,8723,8279,7594,6708,5599,4304,2883,1357,-218, -1797,-3378,-4816,-6141,-7281,-8236,-8940,-9419,-9637,-9611,-9359,-8874,-8192,-7363,-6382,-5310,-4124,-2901,-1648,-369, 879,2125,3306,4438,5510,6461,7313,8022,8568,8949,9104,9042,8778,8282,7562,6614,5462,4153,2691,1143, -426,-1995,-3534,-4958,-6237,-7330,-8231,-8907,-9310,-9467,-9400,-9076,-8546,-7833,-6966,-5970,-4869,-3661,-2447,-1178, 93,1341,2559,3726,4844,5884,6806,7605,8292,8787,9094,9192,9094,8770,8214,7399,6413,5215,3846,2370, 791,-783,-2348,-3893,-5285,-6528,-7587,-8436,-9038,-9414,-9523,-9392,-9025,-8448,-7712,-6804,-5795,-4654,-3459,-2226, -983,291,1537,2748,3884,4975,5999,6903,7681,8318,8764,9031,9079,8932,8546,7927,7083,6045,4800,3424, 1913,331,-1246,-2795,-4307,-5671,-6876,-7867,-8675,-9226,-9521,-9553,-9383,-8955,-8353,-7560,-6626,-5567,-4430,-3221, -1986,-714,549,1783,2989,4124,5190,6185,7058,7801,8396,8810,9040,9050,8850,8419,7721,6831,5745,4475, 3079,1541,-26,-1606,-3158,-4624,-5935,-7089,-8031,-8755,-9239,-9481,-9450,-9227,-8745,-8082,-7243,-6276,-5200,-4041, -2801,-1576,-310,961,2205,3381,4521,5557,6528,7382,8090,8657,9029,9191,9151,8891,8415,7688,6738,5610, 4298,2860,1327,-266,-1837,-3373,-4807,-6083,-7186,-8098,-8756,-9176,-9381,-9304,-9021,-8487,-7812,-6933,-5946,-4842, -3667,-2443,-1190,87,1318,2548,3716,4824,5853,6799,7590,8280,8800,9117,9246,9142,8818,8263,7480,6489, 5311,3971,2503,935,-665,-2221,-3738,-5142,-6385,-7447,-8292,-8917,-9290,-9403,-9282,-8944,-8371,-7634,-6732,-5719, -4614,-3436,-2189,-950,307,1558,2756,3908,4983,6002,6910,7688,8310,8777,9064,9124,8971,8579,7988,7145, 6105,4887,3500,2011,443,-1152,-2731,-4197,-5579,-6772,-7795,-8591,-9158,-9468,-9520,-9344,-8951,-8339,-7565,-6627, -5587,-4449,-3263,-2006,-768,505,1747,2939,4086,5158,6142,7040,7785,8390,8822,9062,9080,8884,8444,7813, 6928,5855,4600,3199,1689,126,-1471,-3003,-4466,-5791,-6939,-7913,-8627,-9144,-9389,-9390,-9138,-8688,-8019,-7206, -6228,-5172,-4013,-2793,-1535,-304,970,2204,3397,4535,5581,6549,7412,8113,8677,9068,9259,9229,8962,8477, 7774,6842,5695,4415,2981,1440,-135,-1726,-3244,-4689,-5993,-7104,-8015,-8696,-9138,-9357,-9278,-8992,-8521,-7813, -6967,-5963,-4886,-3721,-2488,-1252,-3,1247,2471,3640,4747,5778,6718,7540,8201,8715,9069,9185,9097,8789, 8237,7476,6501,5326,3998,2540,977,-621,-2194,-3715,-5110,-6383,-7459,-8325,-8962,-9337,-9468,-9380,-9047,-8510, -7779,-6904,-5894,-4794,-3619,-2371,-1128,112,1362,2564,3723,4812,5808,6720,7510,8136,8612,8907,8995,8834, 8467,7859,7065,6032,4823,3459,1964,415,-1173,-2728,-4210,-5584,-6797,-7823,-8623,-9185,-9503,-9592,-9411,-9023, -8440,-7650,-6748,-5705,-4561,-3371,-2119,-858,390,1644,2857,4007,5087,6079,6960,7736,8325,8773,9035,9067, 8870,8452,7805,6951,5868,4623,3249,1747,172,-1418,-2957,-4402,-5745,-6925,-7867,-8624,-9114,-9397,-9402,-9169, -8727,-8103,-7282,-6313,-5262,-4119,-2901,-1662,-399,862,2109,3305,4438,5502,6475,7321,8052,8606,9025,9211, 9200,8945,8470,7769,6861,5740,4453,3046,1504,-60,-1663,-3177,-4607,-5914,-7050,-7956,-8657,-9095,-9312,-9284, -9006,-8509,-7862,-7002,-6018,-4917,-3770,-2548,-1288,-51,1196,2444,3597,4737,5764,6694,7527,8230,8745,9097, 9231,9164,8852,8320,7556,6600,5427,4097,2644,1110,-471,-2061,-3582,-4983,-6253,-7334,-8201,-8832,-9229,-9372, -9282,-8952,-8418,-7701,-6824,-5802,-4685,-3517,-2290,-1037,231,1463,2687,3860,4969,5974,6882,7693,8369,8828, 9139,9238,9101,8749,8153,7350,6342,5129,3776,2299,733,-844,-2407,-3904,-5277,-6505,-7545,-8359,-8945,-9260, -9372,-9214,-8831,-8240,-7497,-6585,-5547,-4401,-3221,-1990,-729,521,1747,2974,4122,5211,6187,7080,7837,8476, 8892,9118,9184,8991,8561,7902,7048,5989,4739,3350,1842,255,-1318,-2885,-4370,-5720,-6935,-7902,-8663,-9209, -9472,-9522,-9319,-8882,-8264,-7481,-6524,-5488,-4316,-3140,-1885,-635,623,1838,3052,4179,5261,6229,7072,7801, 8387,8769,8997,8966,8735,8269,7559,6647,5535,4235,2822,1295,-278,-1868,-3421,-4860,-6169,-7319,-8241,-8950, -9406,-9634,-9621,-9350,-8882,-8210,-7379,-6381,-5318,-4152,-2950,-1681,-418,829,2058,3257,4382,5417,6374,7195, 7906,8434,8765,8942,8879,8594,8066,7320,6353,5214,3874,2430,896,-682,-2264,-3780,-5197,-6460,-7562,-8433, -9085,-9494,-9640,-9568,-9242,-8712,-7998,-7131,-6103,-5002,-3833,-2602,-1343,-72,1178,2406,3588,4688,5725,6634, 7441,8113,8606,8897,9024,8891,8535,7959,7161,6149,4959,3594,2131,570,-1015,-2573,-4089,-5481,-6709,-7760, -8579,-9177,-9520,-9618,-9498,-9133,-8561,-7812,-6906,-5872,-4753,-3561,-2342,-1074,207,1449,2630,3812,4906,5903, 6783,7545,8164,8632,8872,8927,8751,8356,7720,6854,5798,4562,3157,1668,103,-1475,-3039,-4513,-5883,-7067, -8078,-8855,-9368,-9655,-9700,-9509,-9086,-8455,-7663,-6726,-5670,-4512,-3296,-2061,-786,491,1720,2913,4089,5158, 6145,7009,7758,8341,8752,8951,8995,8739,8306,7602,6728,5618,4339,2922,1405,-162,-1743,-3270,-4738,-6044, -7186,-8136,-8837,-9304,-9518,-9490,-9257,-8767,-8081,-7248,-6285,-5184,-4019,-2794,-1540,-287,1003,2232,3424,4573, 5635,6586,7442,8141,8688,9064,9223,9184,8907,8409,7655,6708,5558,4257,2795,1273,-315,-1867,-3408,-4834, -6111,-7195,-8101,-8737,-9164,-9317,-9260,-8956,-8437,-7729,-6877,-5869,-4763,-3584,-2361,-1107,162,1435,2634,3825, 4940,5957,6893,7690,8351,8844,9150,9251,9149,8812,8245,7429,6409,5235,3876,2380,838,-758,-2322,-3839, -5251,-6491,-7545,-8414,-9000,-9363,-9478,-9344,-8997,-8454,-7682,-6803,-5779,-4635,-3472,-2220,-974,310,1535,2780, 3928,5038,6041,6956,7720,8330,8793,9055,9111,8965,8567,7961,7111,6046,4837,3447,1937,389,-1183,-2743, -4216,-5595,-6769,-7778,-8564,-9100,-9410,-9451,-9263,-8857,-8237,-7458,-6522,-5459,-4309,-3090,-1841,-585,679,1940, 3124,4293,5373,6367,7249,7986,8579,9006,9223,9226,9040,8595,7917,7029,5929,4669,3270,1738,192,-1396, -2922,-4388,-5712,-6861,-7805,-8548,-9015,-9250,-9243,-9010,-8550,-7891,-7063,-6113,-5012,-3854,-2631,-1384,-131,1138, 2388,3568,4693,5750,6735,7553,8260,8814,9187,9355,9298,9033,8522,7798,6844,5677,4379,2932,1386,-187, -1753,-3289,-4736,-6026,-7143,-8051,-8740,-9162,-9339,-9284,-9003,-8518,-7829,-6966,-6001,-4909,-3732,-2525,-1261,-13, 1236,2447,3602,4721,5757,6672,7492,8143,8660,8977,9087,8976,8663,8100,7317,6299,5095,3770,2310,726, -845,-2417,-3937,-5342,-6602,-7669,-8515,-9133,-9504,-9630,-9509,-9179,-8632,-7891,-6997,-5989,-4855,-3681,-2442,-1178, 48,1313,2551,3691,4789,5809,6724,7501,8129,8588,8884,8942,8787,8415,7795,6978,5917,4726,3337,1845, 283,-1273,-2861,-4319,-5696,-6900,-7891,-8670,-9245,-9530,-9599,-9410,-9015,-8414,-7631,-6696,-5653,-4501,-3283,-2030, -775,476,1741,2963,4100,5182,6179,7064,7830,8409,8844,9079,9088,8886,8479,7802,6933,5840,4571,3174, 1658,91,-1477,-3027,-4472,-5821,-6970,-7946,-8681,-9194,-9417,-9422,-9176,-8745,-8111,-7279,-6310,-5256,-4099,-2861, -1621,-373,901,2123,3326,4454,5519,6484,7329,8038,8589,8943,9141,9099,8838,8353,7616,6689,5538,4239, 2816,1281,-302,-1871,-3413,-4839,-6129,-7275,-8168,-8856,-9310,-9477,-9427,-9139,-8650,-7967,-7123,-6130,-5059,-3873, -2662,-1396,-126,1130,2356,3541,4648,5691,6637,7456,8128,8636,8973,9096,8999,8695,8157,7376,6390,5212, 3885,2424,893,-690,-2246,-3753,-5150,-6416,-7478,-8344,-8953,-9339,-9456,-9346,-8998,-8457,-7747,-6838,-5827,-4717, -3497,-2307,-1010,235,1497,2710,3903,4982,6018,6934,7731,8358,8849,9132,9234,9062,8693,8114,7288,6272, 5039,3671,2206,642,-939,-2471,-3973,-5339,-6567,-7577,-8371,-8933,-9265,-9328,-9159,-8760,-8175,-7402,-6480,-5432, -4309,-3085,-1857,-597,664,1907,3109,4268,5333,6342,7222,7968,8548,8982,9208,9245,9030,8605,7956,7077, 6002,4741,3333,1834,260,-1329,-2872,-4337,-5682,-6859,-7845,-8589,-9091,-9368,-9372,-9181,-8741,-8116,-7304,-6357, -5305,-4161,-2942,-1700,-448,800,2030,3206,4354,5385,6372,7216,7918,8470,8840,9024,8995,8740,8241,7549, 6625,5489,4183,2740,1236,-355,-1942,-3449,-4891,-6212,-7328,-8252,-8952,-9407,-9609,-9553,-9288,-8795,-8138,-7298, -6304,-5210,-4071,-2821,-1577,-311,924,2158,3342,4469,5482,6451,7282,7952,8460,8803,8943,8860,8549,8023, 7266,6298,5126,3798,2359,825,-764,-2330,-3838,-5235,-6476,-7567,-8435,-9052,-9451,-9600,-9474,-9146,-8618,-7897, -7024,-5994,-4892,-3707,-2469,-1201,83,1313,2537,3720,4831,5852,6772,7560,8215,8684,8977,9064,8939,8574, 7998,7180,6174,4961,3583,2119,583,-1002,-2564,-4043,-5409,-6620,-7679,-8467,-9048,-9358,-9460,-9298,-8920,-8343, -7573,-6669,-5637,-4504,-3316,-2065,-806,459,1692,2900,4048,5144,6135,7036,7775,8391,8790,9034,9080,8895, 8466,7827,6950,5876,4612,3217,1704,155,-1433,-2981,-4444,-5784,-6953,-7952,-8714,-9225,-9493,-9535,-9311,-8897, -8268,-7494,-6536,-5471,-4330,-3127,-1873,-604,668,1885,3081,4228,5300,6261,7139,7865,8441,8829,9011,8987, 8761,8271,7585,6671,5549,4252,2837,1322,-238,-1843,-3365,-4801,-6103,-7219,-8160,-8873,-9313,-9540,-9509,-9248, -8767,-8089,-7267,-6301,-5200,-4029,-2821,-1532,-289,981,2200,3387,4531,5582,6524,7359,8052,8580,8913,9067, 8996,8709,8160,7428,6462,5300,3969,2527,992,-565,-2154,-3664,-5082,-6338,-7434,-8308,-8955,-9335,-9502,-9389, -9050,-8550,-7818,-6973,-5965,-4862,-3673,-2436,-1146,111,1366,2572,3764,4883,5910,6827,7653,8285,8768,9068, 9171,9039,8703,8103,7326,6284,5100,3749,2264,700,-855,-2432,-3929,-5316,-6546,-7578,-8409,-9002,-9339,-9443, -9286,-8922,-8352,-7593,-6700,-5676,-4539,-3341,-2094,-831,448,1697,2894,4053,5147,6150,7041,7821,8435,8880, 9127,9159,8991,8587,7932,7099,6030,4801,3407,1905,343,-1223,-2778,-4254,-5595,-6776,-7765,-8557,-9084,-9365, -9395,-9207,-8773,-8152,-7361,-6439,-5360,-4221,-2996,-1766,-464,789,2042,3246,4384,5459,6446,7303,8045,8621, 9022,9220,9219,8987,8514,7818,6934,5810,4550,3115,1609,30,-1549,-3093,-4520,-5833,-6961,-7911,-8632,-9107, -9320,-9322,-9068,-8592,-7920,-7096,-6126,-5047,-3846,-2633,-1365,-95,1164,2386,3579,4692,5772,6699,7551,8248, 8780,9135,9289,9204,8923,8406,7660,6717,5549,4246,2788,1246,-336,-1902,-3426,-4839,-6101,-7207,-8109,-8762, -9183,-9342,-9278,-8961,-8451,-7763,-6891,-5904,-4803,-3610,-2400,-1137,114,1384,2595,3756,4864,5901,6822,7620, 8289,8771,9067,9167,9026,8700,8125,7316,6327,5119,3778,2285,747,-832,-2399,-3910,-5289,-6516,-7560,-8417, -9019,-9384,-9470,-9353,-9008,-8439,-7701,-6807,-5794,-4670,-3466,-2236,-969,290,1553,2753,3911,4990,6001,6905, 7669,8303,8746,8988,9032,8856,8463,7844,6965,5940,4689,3312,1813,243,-1330,-2859,-4359,-5702,-6888,-7894, -8693,-9218,-9506,-9551,-9380,-8980,-8367,-7590,-6660,-5615,-4475,-3244,-2006,-733,527,1766,2968,4101,5184,6189, 7033,7774,8373,8758,8979,8971,8735,8278,7601,6707,5624,4336,2941,1404,-144,-1714,-3252,-4712,-5999,-7157, -8112,-8846,-9330,-9569,-9543,-9323,-8864,-8196,-7386,-6425,-5354,-4191,-2973,-1725,-449,820,2049,3244,4369,5426, 6400,7232,7938,8489,8847,9016,8943,8667,8159,7430,6479,5347,4042,2597,1069,-502,-2063,-3579,-4993,-6269, -7365,-8313,-8945,-9384,-9561,-9501,-9199,-8689,-7989,-7130,-6134,-5048,-3880,-2640,-1391,-123,1148,2361,3556,4642, 5685,6621,7432,8089,8601,8916,9033,8906,8567,8023,7236,6237,5065,3714,2263,704,-870,-2420,-3912,-5324, -6560,-7607,-8431,-9066,-9424,-9541,-9412,-9085,-8518,-7789,-6892,-5880,-4765,-3563,-2319,-1080,199,1453,2671,3832, 4931,5931,6839,7621,8259,8715,8987,9051,8877,8500,7888,7039,6000,4789,3408,1934,360,-1217,-2755,-4232, -5590,-6783,-7785,-8569,-9128,-9431,-9483,-9316,-8944,-8319,-7561,-6606,-5581,-4445,-3243,-1989,-736,544,1785,2995, 4138,5225,6198,7090,7836,8420,8834,9052,9052,8842,8400,7741,6855,5772,4515,3111,1626,61,-1511,-3037, -4503,-5825,-6983,-7936,-8645,-9145,-9430,-9400,-9172,-8749,-8098,-7279,-6311,-5251,-4101,-2875,-1625,-381,901,2143, 3337,4473,5519,6492,7354,8026,8588,8954,9134,9091,8810,8314,7596,6657,5540,4252,2814,1290,-297,-1849, -3368,-4788,-6080,-7193,-8100,-8762,-9212,-9413,-9365,-9080,-8579,-7886,-7047,-6042,-4957,-3809,-2567,-1302,-60,1209, 2455,3631,4744,5761,6699,7512,8178,8694,9022,9143,9032,8717,8155,7399,6401,5231,3896,2441,904,-699, -2245,-3756,-5154,-6405,-7454,-8325,-8930,-9319,-9457,-9344,-9010,-8462,-7743,-6869,-5849,-4737,-3574,-2326,-1050,205, 1459,2672,3858,4953,5950,6862,7646,8261,8755,9025,9099,8946,8555,7960,7140,6092,4863,3513,2041,494, -1100,-2655,-4136,-5491,-6704,-7703,-8510,-9084,-9404,-9478,-9302,-8928,-8344,-7557,-6643,-5605,-4478,-3278,-2017,-763, 490,1768,2965,4151,5217,6197,7080,7846,8429,8862,9093,9120,8910,8489,7834,6955,5875,4613,3228,1729, 163,-1418,-2968,-4410,-5728,-6904,-7866,-8609,-9109,-9370,-9400,-9159,-8735,-8114,-7296,-6346,-5275,-4143,-2914,-1659, -402,847,2099,3292,4433,5504,6452,7321,8045,8572,8961,9140,9116,8851,8348,7643,6722,5586,4297,2908, 1388,-181,-1755,-3289,-4698,-6026,-7139,-8043,-8732,-9183,-9404,-9375,-9072,-8595,-7919,-7074,-6101,-5013,-3840,-2617, -1362,-93,1149,2400,3581,4710,5742,6683,7518,8196,8696,9042,9159,9070,8742,8201,7432,6475,5291,3965, 2527,996,-585,-2151,-3667,-5061,-6314,-7401,-8238,-8875,-9267,-9429,-9331,-9004,-8474,-7765,-6871,-5879,-4760,-3587, -2362,-1087,184,1425,2659,3823,4939,5958,6869,7657,8303,8764,9067,9142,9008,8633,8030,7211,6194,4982, 3622,2151,592,-981,-2532,-4016,-5378,-6608,-7635,-8425,-9004,-9340,-9441,-9278,-8895,-8315,-7584,-6662,-5620,-4496, -3307,-2060,-794,483,1710,2931,4101,5184,6181,7059,7813,8421,8843,9102,9098,8920,8485,7821,6955,5900, 4644,3236,1752,185,-1387,-2945,-4395,-5722,-6900,-7868,-8634,-9145,-9431,-9468,-9261,-8839,-8218,-7419,-6465,-5422, -4269,-3056,-1812,-532,714,1946,3168,4289,5362,6314,7173,7907,8467,8833,9028,8991,8753,8280,7559,6636, 5526,4228,2820,1308,-270,-1846,-3385,-4820,-6113,-7260,-8175,-8882,-9348,-9556,-9540,-9274,-8801,-8142,-7310,-6325, -5253,-4079,-2874,-1617,-359,922,2144,3341,4459,5511,6439,7263,7973,8486,8821,8973,8903,8587,8048,7289, 6320,5164,3835,2397,862,-703,-2271,-3777,-5191,-6433,-7529,-8406,-9037,-9436,-9584,-9524,-9194,-8656,-7951,-7088, -6069,-4960,-3791,-2569,-1300,-27,1246,2450,3635,4750,5777,6690,7492,8160,8635,8922,9016,8888,8538,7944, 7142,6133,4942,3574,2112,564,-1003,-2551,-4036,-5409,-6612,-7667,-8463,-9064,-9383,-9490,-9366,-8982,-8395,-7653, -6750,-5725,-4570,-3391,-2161,-893,398,1649,2858,4030,5118,6140,7014,7780,8387,8823,9062,9132,8948,8534, 7887,7031,5964,4728,3334,1874,303,-1253,-2809,-4289,-5624,-6789,-7792,-8550,-9081,-9357,-9388,-9215,-8783,-8163, -7386,-6448,-5390,-4254,-3038,-1789,-524,749,1984,3174,4341,5395,6369,7245,7959,8548,8937,9112,9125,8865, 8420,7689,6812,5686,4421,2985,1499,-73,-1639,-3167,-4621,-5910,-7041,-7969,-8693,-9171,-9388,-9373,-9142,-8685, -8007,-7196,-6229,-5139,-3980,-2749,-1494,-234,1023,2252,3438,4582,5636,6592,7412,8102,8640,8980,9133,9081, 8775,8255,7491,6543,5389,4083,2637,1110,-447,-2010,-3530,-4955,-6228,-7291,-8196,-8831,-9250,-9411,-9340,-9051, -8539,-7832,-6972,-5982,-4873,-3683,-2465,-1209,78,1328,2540,3742,4864,5890,6819,7606,8253,8768,9054,9149, 9040,8676,8123,7296,6303,5122,3769,2297,769,-803,-2369,-3855,-5225,-6459,-7500,-8336,-8908,-9272,-9387,-9259, -8905,-8343,-7596,-6713,-5675,-4551,-3370,-2122,-874,403,1668,2874,4032,5138,6133,7043,7801,8402,8867,9115, 9155,9000,8595,7970,7103,6062,4797,3423,1946,396,-1193,-2725,-4193,-5558,-6736,-7738,-8521,-9040,-9330,-9380, -9187,-8808,-8209,-7424,-6514,-5448,-4307,-3105,-1862,-596,658,1917,3103,4254,5339,6328,7159,7894,8469,8876, 9077,9077,8847,8382,7697,6772,5678,4415,3007,1475,-70,-1644,-3173,-4636,-5946,-7090,-8024,-8757,-9236,-9471, -9453,-9244,-8777,-8143,-7326,-6365,-5282,-4134,-2920,-1660,-404,868,2107,3290,4431,5490,6445,7280,7969,8508, 8865,9010,8952,8676,8157,7428,6475,5321,4027,2593,1048,-487,-2074,-3568,-5008,-6260,-7383,-8277,-8933,-9349, -9537,-9465,-9173,-8666,-7974,-7116,-6146,-5027,-3860,-2625,-1367,-106,1146,2396,3587,4692,5725,6661,7472,8111, 8614,8935,9035,8903,8586,8019,7239,6234,5045,3700,2258,718,-842,-2398,-3886,-5296,-6528,-7558,-8399,-9010, -9354,-9486,-9360,-9020,-8476,-7740,-6844,-5843,-4697,-3514,-2276,-1017,255,1517,2747,3889,5005,6009,6915,7693, 8303,8771,9035,9088,8921,8525,7916,7090,6014,4805,3434,1942,388,-1156,-2708,-4168,-5538,-6723,-7738,-8516, -9064,-9356,-9431,-9248,-8875,-8258,-7494,-6557,-5536,-4392,-3168,-1934,-667,588,1830,3059,4183,5276,6262,7149, 7913,8477,8892,9099,9124,8882,8446,7776,6893,5770,4523,3134,1609,47,-1509,-3044,-4477,-5831,-6965,-7925, -8645,-9163,-9390,-9401,-9163,-8732,-8082,-7267,-6318,-5269,-4079,-2872,-1627,-358,898,2143,3334,4461,5537,6497, 7338,8045,8581,8943,9123,9046,8775,8281,7578,6630,5481,4176,2763,1234,-327,-1903,-3414,-4826,-6123,-7233, -8128,-8793,-9236,-9413,-9360,-9081,-8599,-7910,-7057,-6069,-4993,-3808,-2576,-1320,-39,1208,2429,3623,4733,5775, 6718,7534,8196,8692,9013,9129,9005,8687,8137,7349,6356,5171,3848,2390,850,-718,-2273,-3787,-5154,-6408, -7491,-8312,-8942,-9320,-9450,-9347,-9026,-8494,-7768,-6879,-5853,-4762,-3555,-2325,-1054,215,1449,2664,3852,4932, 5970,6885,7675,8288,8728,8991,9071,8912,8528,7920,7105,6066,4836,3473,1984,424,-1144,-2669,-4152,-5512, -6728,-7739,-8539,-9095,-9419,-9484,-9331,-8933,-8350,-7592,-6652,-5621,-4502,-3258,-2023,-742,498,1769,2980,4138, 5205,6209,7092,7843,8445,8855,9069,9096,8867,8420,7780,6888,5806,4535,3148,1660,102,-1465,-3011,-4457, -5769,-6942,-7917,-8650,-9156,-9410,-9419,-9203,-8758,-8136,-7331,-6378,-5311,-4177,-2921,-1684,-384,874,2107,3308, 4476,5520,6509,7351,8073,8604,8980,9148,9123,8835,8368,7632,6714,5576,4284,2847,1351,-231,-1783,-3311, -4730,-6009,-7140,-8052,-8741,-9197,-9396,-9350,-9089,-8610,-7937,-7110,-6117,-5031,-3854,-2601,-1352,-85,1162,2404, 3581,4726,5752,6702,7519,8202,8706,9022,9131,9042,8715,8182,7390,6424,5252,3904,2469,920,-657,-2220, -3699,-5094,-6350,-7428,-8304,-8921,-9299,-9462,-9359,-9038,-8504,-7795,-6920,-5914,-4803,-3630,-2370,-1098,167,1415, 2644,3831,4927,5932,6865,7649,8295,8746,9013,9093,8955,8559,7968,7144,6118,4913,3540,2049,516,-1057, -2602,-4082,-5451,-6665,-7680,-8488,-9059,-9391,-9476,-9306,-8939,-8357,-7615,-6695,-5653,-4515,-3328,-2067,-788,468, 1756,2939,4101,5198,6187,7090,7849,8467,8864,9105,9125,8952,8499,7856,6987,5921,4671,3257,1761,215, -1366,-2888,-4328,-5655,-6817,-7796,-8542,-9050,-9337,-9348,-9132,-8718,-8088,-7297,-6344,-5281,-4140,-2925,-1669,-398, 887,2119,3313,4464,5549,6509,7368,8089,8662,9014,9184,9154,8906,8411,7712,6798,5681,4377,2961,1443, -112,-1697,-3205,-4642,-5927,-7056,-7998,-8696,-9133,-9355,-9334,-9057,-8601,-7928,-7112,-6135,-5037,-3890,-2656,-1393, -124,1130,2357,3539,4666,5715,6641,7484,8168,8683,8997,9128,9034,8729,8176,7424,6437,5279,3963,2490, 970,-594,-2177,-3678,-5072,-6335,-7416,-8303,-8932,-9330,-9497,-9415,-9084,-8559,-7866,-7002,-5986,-4873,-3697,-2454, -1180,83,1356,2564,3731,4859,5852,6775,7582,8210,8685,8976,9055,8915,8562,7938,7141,6127,4939,3562, 2094,560,-1010,-2565,-4042,-5405,-6606,-7639,-8470,-9041,-9384,-9497,-9352,-8961,-8413,-7669,-6778,-5727,-4594,-3411, -2158,-882,393,1638,2849,4014,5125,6110,6992,7749,8367,8806,9026,9053,8867,8455,7788,6945,5893,4658, 3261,1756,222,-1351,-2899,-4348,-5690,-6871,-7850,-8614,-9136,-9409,-9461,-9266,-8834,-8239,-7442,-6511,-5442,-4299, -3093,-1843,-564,709,1964,3148,4295,5367,6353,7205,7932,8489,8881,9069,9036,8802,8327,7617,6718,5590, 4341,2908,1392,-162,-1723,-3250,-4681,-5976,-7095,-8032,-8741,-9229,-9420,-9419,-9177,-8703,-8048,-7230,-6266,-5204, -4026,-2809,-1546,-265,987,2228,3418,4540,5615,6543,7372,8056,8575,8913,9042,8980,8667,8136,7386,6440, 5282,3972,2513,1004,-559,-2120,-3635,-5024,-6292,-7372,-8254,-8912,-9323,-9482,-9423,-9100,-8601,-7895,-7047,-6041, -4935,-3757,-2526,-1269,4,1279,2507,3649,4774,5810,6725,7525,8190,8649,8947,9011,8895,8534,7948,7141, 6154,4963,3618,2144,594,-948,-2499,-3993,-5355,-6593,-7612,-8454,-9049,-9397,-9504,-9398,-9020,-8474,-7714,-6845, -5798,-4678,-3471,-2247,-969,286,1556,2770,3915,5007,6021,6903,7643,8272,8726,8968,8997,8814,8412,7772, 6909,5879,4642,3273,1764,209,-1342,-2871,-4338,-5661,-6851,-7825,-8610,-9147,-9449,-9477,-9327,-8907,-8294,-7519, -6586,-5550,-4415,-3193,-1948,-671,588,1828,3051,4173,5261,6245,7109,7851,8427,8834,9020,8995,8761,8312, 7616,6713,5619,4366,2984,1458,-103,-1657,-3160,-4606,-5903,-7042,-7966,-8697,-9177,-9414,-9396,-9171,-8702,-8071, -7238,-6287,-5219,-4053,-2831,-1572,-289,969,2203,3409,4520,5568,6555,7382,8077,8604,8950,9112,9046,8748, 8271,7506,6556,5425,4121,2685,1161,-407,-1950,-3464,-4874,-6127,-7241,-8125,-8788,-9220,-9407,-9346,-9064,-8561, -7877,-7014,-6041,-4945,-3771,-2531,-1286,-12,1260,2493,3675,4793,5822,6756,7544,8215,8718,9024,9116,9001, 8639,8084,7291,6276,5121,3778,2337,794,-763,-2305,-3807,-5186,-6415,-7479,-8304,-8925,-9288,-9421,-9303,-8953, -8418,-7680,-6793,-5778,-4673,-3478,-2241,-963,305,1560,2781,3949,5030,6058,6965,7745,8374,8821,9081,9140, 8950,8578,7960,7114,6085,4882,3510,2036,485,-1080,-2611,-4074,-5419,-6626,-7612,-8397,-8963,-9271,-9333,-9152, -8762,-8155,-7386,-6469,-5439,-4296,-3086,-1844,-575,696,1953,3159,4318,5388,6385,7268,7992,8579,8992,9211, 9211,8973,8534,7876,6962,5898,4644,3246,1732,171,-1396,-2903,-4370,-5691,-6838,-7794,-8521,-9023,-9293,-9289, -9072,-8646,-7999,-7193,-6237,-5196,-4024,-2817,-1560,-298,969,2202,3412,4539,5580,6552,7395,8082,8651,9007, 9168,9121,8832,8331,7619,6666,5543,4255,2820,1307,-264,-1830,-3335,-4755,-6060,-7159,-8073,-8752,-9192,-9414, -9336,-9092,-8618,-7933,-7097,-6116,-5036,-3864,-2633,-1368,-111,1152,2385,3563,4685,5703,6657,7460,8112,8638, 8957,9078,8973,8641,8085,7317,6340,5162,3842,2386,856,-731,-2267,-3767,-5153,-6392,-7453,-8326,-8945,-9343, -9469,-9379,-9064,-8521,-7794,-6914,-5910,-4795,-3624,-2368,-1111,146,1411,2636,3830,4928,5944,6846,7643,8248, 8725,9008,9070,8912,8545,7927,7110,6078,4876,3518,2053,515,-1076,-2608,-4083,-5434,-6649,-7645,-8454,-9025, -9356,-9439,-9282,-8908,-8336,-7573,-6662,-5624,-4498,-3298,-2057,-782,474,1730,2938,4109,5193,6180,7056,7818, 8387,8834,9055,9062,8853,8412,7758,6898,5818,4578,3178,1682,125,-1442,-2978,-4422,-5768,-6913,-7885,-8639, -9156,-9428,-9469,-9256,-8828,-8221,-7417,-6473,-5410,-4273,-3077,-1813,-544,711,1963,3157,4322,5363,6326,7195, 7896,8451,8827,9010,8965,8698,8212,7503,6592,5461,4172,2759,1256,-302,-1882,-3390,-4804,-6121,-7235,-8139, -8848,-9307,-9528,-9499,-9234,-8763,-8120,-7275,-6302,-5214,-4058,-2830,-1569,-290,973,2211,3400,4537,5580,6523, 7353,8033,8538,8892,9017,8943,8615,8082,7323,6370,5199,3880,2441,922,-631,-2214,-3702,-5095,-6360,-7429, -8290,-8927,-9318,-9499,-9410,-9093,-8573,-7879,-7000,-6003,-4879,-3721,-2485,-1213,58,1312,2545,3729,4839,5846, 6769,7575,8214,8678,8979,9043,8918,8550,7947,7167,6138,4922,3585,2113,568,-992,-2550,-4028,-5394,-6623, -7645,-8456,-9050,-9390,-9498,-9352,-8971,-8419,-7684,-6774,-5755,-4616,-3432,-2187,-910,361,1605,2826,3988,5095, 6094,6980,7759,8355,8787,9026,9054,8866,8454,7804,6952,5890,4647,3274,1779,230,-1330,-2880,-4338,-5670, -6858,-7843,-8592,-9119,-9410,-9456,-9276,-8857,-8253,-7462,-6531,-5472,-4323,-3132,-1879,-602,674,1907,3128,4269, 5346,6328,7187,7928,8490,8885,9079,9044,8820,8351,7643,6745,5639,4366,2977,1453,-104,-1664,-3181,-4628, -5913,-7058,-7986,-8708,-9180,-9408,-9394,-9150,-8677,-8036,-7204,-6241,-5171,-3992,-2779,-1536,-243,1023,2252,3450, 4591,5650,6602,7422,8122,8647,8994,9145,9078,8779,8250,7501,6561,5412,4099,2669,1145,-419,-1971,-3489, -4867,-6145,-7231,-8114,-8770,-9191,-9354,-9301,-9005,-8479,-7792,-6937,-5940,-4839,-3634,-2416,-1154,127,1380,2607, 3797,4900,5958,6861,7675,8330,8813,9108,9223,9097,8754,8162,7372,6371,5184,3843,2386,844,-718,-2274, -3766,-5150,-6358,-7424,-8248,-8845,-9202,-9322,-9202,-8850,-8286,-7568,-6670,-5642,-4530,-3337,-2109,-832,425,1683, 2892,4075,5168,6189,7077,7840,8472,8919,9155,9209,9033,8626,7994,7139,6111,4888,3498,2015,479,-1079, -2630,-4107,-5447,-6629,-7635,-8419,-8963,-9263,-9323,-9160,-8770,-8162,-7399,-6471,-5423,-4278,-3064,-1834,-561,707, 1954,3164,4317,5387,6373,7234,7961,8543,8946,9136,9136,8909,8459,7773,6877,5787,4516,3111,1609,42, -1509,-3036,-4507,-5808,-6939,-7903,-8634,-9125,-9365,-9366,-9149,-8702,-8048,-7245,-6293,-5220,-4068,-2841,-1600,-330, 940,2178,3363,4509,5560,6523,7351,8046,8603,8945,9104,9057,8757,8257,7506,6571,5446,4137,2709,1196, -360,-1913,-3432,-4861,-6124,-7228,-8138,-8800,-9232,-9421,-9363,-9101,-8605,-7905,-7067,-6085,-4991,-3820,-2586,-1346, -71,1196,2433,3612,4733,5775,6716,7527,8182,8692,9009,9103,9007,8666,8118,7328,6338,5164,3832,2369, 852,-718,-2263,-3758,-5149,-6376,-7444,-8312,-8901,-9282,-9415,-9322,-8980,-8444,-7710,-6838,-5826,-4707,-3516,-2286, -1027,248,1516,2721,3897,4994,6012,6928,7674,8299,8769,9029,9094,8930,8538,7934,7095,6055,4843,3489, 2006,462,-1106,-2634,-4128,-5491,-6682,-7685,-8481,-9059,-9369,-9438,-9285,-8925,-8323,-7562,-6651,-5613,-4482,-3274, -2028,-776,498,1753,2952,4118,5207,6186,7068,7798,8390,8826,9035,9033,8820,8390,7740,6840,5756,4519, 3127,1626,75,-1495,-3013,-4473,-5792,-6946,-7898,-8643,-9149,-9412,-9429,-9228,-8809,-8159,-7362,-6412,-5347,-4208, -2985,-1724,-463,788,2045,3240,4381,5455,6419,7260,7978,8522,8894,9058,9018,8761,8280,7552,6629,5493, 4231,2787,1270,-267,-1833,-3332,-4780,-6061,-7173,-8077,-8760,-9204,-9420,-9366,-9118,-8644,-7970,-7128,-6161,-5072, -3907,-2662,-1412,-144,1112,2359,3538,4671,5703,6646,7465,8125,8649,8975,9096,8998,8680,8141,7378,6386, 5232,3912,2461,924,-633,-2180,-3677,-5069,-6330,-7392,-8250,-8883,-9278,-9431,-9348,-9037,-8499,-7783,-6915,-5911, -4796,-3622,-2386,-1124,138,1404,2639,3793,4907,5928,6832,7624,8251,8722,9015,9084,8930,8568,7970,7146, 6130,4925,3572,2098,554,-1013,-2556,-4039,-5413,-6616,-7638,-8452,-9034,-9370,-9461,-9316,-8950,-8378,-7637,-6729, -5696,-4564,-3387,-2137,-864,391,1643,2859,4021,5114,6108,6999,7744,8335,8773,9011,9030,8834,8406,7767, 6901,5825,4580,3197,1715,164,-1413,-2946,-4401,-5737,-6911,-7870,-8629,-9164,-9434,-9476,-9257,-8856,-8242,-7442, -6495,-5455,-4302,-3096,-1826,-565,693,1942,3156,4307,5374,6339,7197,7927,8476,8863,9055,9027,8783,8308, 7602,6694,5583,4295,2893,1392,-182,-1738,-3272,-4688,-5984,-7118,-8041,-8745,-9217,-9434,-9422,-9155,-8701,-8050, -7213,-6234,-5162,-4008,-2782,-1513,-250,1000,2242,3434,4558,5622,6565,7398,8082,8585,8936,9078,9001,8695, 8160,7408,6453,5283,3978,2563,1028,-533,-2088,-3600,-4989,-6271,-7356,-8222,-8873,-9287,-9447,-9391,-9063,-8554, -7856,-6988,-6004,-4910,-3711,-2480,-1219,49,1299,2545,3731,4838,5867,6794,7590,8237,8709,9009,9099,8966, 8603,8026,7213,6219,5013,3670,2220,675,-884,-2437,-3927,-5294,-6523,-7565,-8374,-8968,-9325,-9436,-9301,-8943, -8399,-7661,-6752,-5734,-4617,-3417,-2182,-891,365,1615,2846,4010,5106,6112,7009,7776,8387,8808,9069,9108, 8928,8524,7887,7038,5981,4742,3368,1894,337,-1233,-2760,-4225,-5560,-6757,-7749,-8499,-9050,-9348,-9402,-9217, -8806,-8210,-7441,-6504,-5446,-4317,-3107,-1853,-580,683,1925,3141,4301,5366,6355,7207,7948,8517,8910,9120, 9106,8867,8407,7709,6813,5718,4441,3034,1539,-32,-1592,-3117,-4555,-5861,-7011,-7938,-8662,-9143,-9388,-9386, -9150,-8692,-8054,-7243,-6275,-5212,-4052,-2822,-1574,-291,957,2194,3404,4528,5577,6527,7367,8065,8587,8927, 9084,9017,8723,8217,7470,6519,5381,4064,2636,1129,-446,-2001,-3518,-4926,-6201,-7312,-8201,-8857,-9296,-9477, -9416,-9133,-8638,-7955,-7105,-6103,-5018,-3846,-2617,-1355,-92,1173,2394,3587,4700,5733,6661,7467,8133,8624, 8923,9036,8932,8571,8012,7222,6229,5041,3696,2243,718,-853,-2398,-3887,-5266,-6495,-7557,-8398,-9000,-9367, -9489,-9382,-9030,-8473,-7754,-6863,-5833,-4720,-3544,-2301,-1027,248,1506,2717,3894,4997,5995,6907,7685,8317, 8765,9026,9075,8910,8519,7899,7065,6032,4813,3446,1968,423,-1138,-2670,-4144,-5486,-6674,-7690,-8462,-9019, -9326,-9395,-9223,-8829,-8232,-7476,-6552,-5512,-4354,-3169,-1921,-654,624,1872,3074,4238,5314,6313,7173,7917, 8506,8911,9115,9135,8917,8460,7790,6909,5811,4560,3149,1674,110,-1447,-2983,-4437,-5751,-6898,-7868,-8603, -9101,-9351,-9360,-9155,-8714,-8074,-7279,-6335,-5262,-4115,-2893,-1639,-368,889,2128,3316,4470,5515,6468,7324, 8027,8575,8932,9083,9058,8771,8276,7536,6621,5482,4191,2747,1248,-311,-1879,-3381,-4813,-6084,-7194,-8097, -8787,-9228,-9422,-9379,-9123,-8636,-7950,-7123,-6142,-5046,-3878,-2642,-1385,-121,1134,2364,3548,4679,5718,6660, 7476,8140,8657,8968,9084,8999,8664,8108,7336,6361,5186,3860,2408,883,-673,-2229,-3722,-5123,-6364,-7412, -8282,-8897,-9276,-9417,-9316,-9002,-8462,-7739,-6868,-5861,-4743,-3548,-2323,-1055,226,1476,2687,3881,4991,6005, 6918,7702,8326,8805,9067,9134,8995,8607,8010,7172,6158,4956,3591,2116,583,-984,-2537,-3998,-5357,-6562, -7580,-8390,-8940,-9271,-9368,-9214,-8837,-8256,-7496,-6600,-5551,-4417,-3234,-1981,-722,547,1809,3005,4161,5256, 6246,7122,7867,8454,8886,9108,9120,8936,8496,7839,6960,5895,4626,3235,1749,202,-1377,-2905,-4355,-5697, -6851,-7828,-8590,-9082,-9349,-9382,-9172,-8767,-8151,-7352,-6430,-5361,-4210,-3001,-1758,-484,763,2022,3208,4348, 5425,6397,7224,7943,8500,8880,9048,9022,8767,8276,7564,6631,5516,4241,2820,1289,-250,-1808,-3334,-4768, -6062,-7181,-8094,-8801,-9252,-9462,-9430,-9187,-8703,-8049,-7220,-6249,-5162,-3998,-2785,-1516,-252,1021,2254,3436, 4570,5619,6563,7390,8062,8577,8911,9032,8949,8650,8103,7351,6389,5223,3910,2467,924,-612,-2183,-3670, -5079,-6322,-7417,-8289,-8929,-9322,-9478,-9397,-9079,-8559,-7850,-6985,-6004,-4880,-3702,-2464,-1202,64,1316,2553, 3735,4837,5865,6785,7573,8209,8681,8979,9051,8897,8553,7960,7156,6137,4934,3582,2128,584,-969,-2517, -4001,-5385,-6598,-7611,-8438,-9025,-9352,-9467,-9327,-8965,-8403,-7661,-6759,-5744,-4597,-3408,-2166,-904,366,1624, 2847,3986,5095,6094,6979,7737,8338,8781,9020,9048,8856,8442,7805,6953,5875,4649,3270,1770,220,-1328, -2864,-4316,-5663,-6837,-7826,-8587,-9118,-9394,-9443,-9253,-8857,-8235,-7452,-6513,-5476,-4334,-3105,-1867,-595,660, 1911,3124,4253,5337,6315,7183,7931,8482,8878,9065,9061,8808,8349,7656,6755,5630,4371,2975,1446,-109, -1658,-3182,-4611,-5937,-7054,-7989,-8699,-9191,-9401,-9394,-9145,-8690,-8026,-7203,-6242,-5186,-3997,-2781,-1533,-263, 995,2241,3431,4554,5617,6572,7403,8097,8617,8965,9122,9029,8740,8225,7496,6535,5380,4064,2645,1117, -444,-2003,-3513,-4916,-6188,-7282,-8157,-8810,-9235,-9394,-9325,-9039,-8533,-7842,-6973,-5982,-4895,-3710,-2472,-1214, 64,1311,2539,3729,4832,5863,6797,7596,8250,8733,9035,9133,8989,8653,8084,7279,6275,5078,3746,2288, 743,-820,-2368,-3868,-5230,-6467,-7528,-8341,-8956,-9319,-9432,-9313,-8979,-8433,-7697,-6803,-5771,-4672,-3464,-2229, -953,314,1550,2768,3947,5027,6052,6959,7731,8336,8766,9014,9074,8898,8495,7875,7040,5993,4755,3386, 1896,339,-1223,-2744,-4216,-5563,-6764,-7761,-8538,-9087,-9395,-9448,-9276,-8872,-8274,-7507,-6561,-5525,-4400,-3154, -1914,-639,610,1875,3083,4237,5302,6298,7173,7912,8498,8896,9098,9106,8864,8404,7744,6839,5751,4475, 3079,1586,31,-1532,-3067,-4508,-5808,-6961,-7924,-8644,-9137,-9382,-9376,-9147,-8695,-8060,-7248,-6292,-5219,-4079, -2824,-1582,-291,970,2206,3404,4562,5601,6582,7417,8122,8651,9009,9165,9123,8823,8334,7590,6656,5512, 4214,2772,1273,-304,-1853,-3373,-4786,-6056,-7173,-8070,-8748,-9190,-9380,-9321,-9050,-8564,-7882,-7046,-6051,-4965, -3786,-2532,-1281,-15,1236,2475,3650,4787,5811,6755,7564,8234,8728,9034,9132,9025,8683,8140,7338,6359, 5180,3832,2390,844,-732,-2292,-3760,-5149,-6396,-7462,-8326,-8931,-9300,-9449,-9340,-9009,-8466,-7748,-6870,-5858, -4745,-3567,-2310,-1035,226,1478,2705,3888,4983,5984,6907,7685,8319,8761,9021,9087,8937,8529,7927,7095, 6059,4850,3472,1982,446,-1121,-2661,-4133,-5496,-6702,-7705,-8501,-9062,-9387,-9462,-9282,-8908,-8321,-7570,-6646, -5600,-4462,-3274,-2010,-731,523,1811,2994,4154,5244,6230,7125,7877,8483,8875,9105,9117,8929,8467,7814, 6936,5862,4609,3195,1696,150,-1427,-2947,-4379,-5702,-6856,-7824,-8563,-9063,-9341,-9346,-9122,-8703,-8067,-7269, -6315,-5248,-4105,-2889,-1631,-359,920,2155,3348,4496,5575,6533,7384,8098,8662,9010,9173,9132,8873,8371, 7663,6743,5619,4312,2895,1377,-177,-1758,-3262,-4694,-5975,-7095,-8027,-8717,-9148,-9363,-9335,-9053,-8590,-7913, -7090,-6112,-5013,-3863,-2627,-1363,-95,1158,2385,3566,4692,5735,6661,7497,8177,8684,8996,9117,9017,8704, 8144,7383,6396,5231,3912,2441,920,-643,-2219,-3718,-5106,-6364,-7439,-8317,-8939,-9330,-9491,-9405,-9068,-8541, -7841,-6974,-5959,-4843,-3668,-2423,-1148,113,1384,2593,3759,4885,5877,6796,7598,8224,8692,8977,9050,8905, 8544,7917,7114,6097,4903,3527,2059,525,-1044,-2596,-4071,-5429,-6627,-7653,-8478,-9046,-9384,-9491,-9344,-8949, -8398,-7649,-6755,-5704,-4569,-3386,-2132,-856,417,1660,2872,4035,5143,6126,7005,7760,8373,8806,9025,9046, 8855,8437,7768,6920,5864,4626,3230,1724,191,-1380,-2925,-4373,-5710,-6888,-7864,-8622,-9142,-9411,-9459,-9260, -8827,-8230,-7430,-6497,-5427,-4284,-3077,-1827,-547,722,1977,3161,4307,5377,6361,7211,7935,8490,8879,9064, 9028,8791,8313,7600,6698,5569,4317,2885,1369,-183,-1743,-3268,-4697,-5989,-7107,-8040,-8746,-9231,-9421,-9417, -9173,-8697,-8042,-7222,-6256,-5193,-4016,-2798,-1535,-255,995,2236,3427,4548,5622,6549,7376,8059,8577,8912, 9041,8976,8662,8129,7377,6430,5271,3960,2502,993,-568,-2128,-3642,-5030,-6297,-7376,-8256,-8913,-9322,-9480, -9420,-9097,-8596,-7890,-7041,-6035,-4929,-3750,-2520,-1263,7,1283,2510,3653,4777,5812,6727,7526,8191,8649, 8946,9011,8894,8532,7945,7138,6151,4960,3615,2141,592,-948,-2499,-3993,-5354,-6592,-7611,-6,-9,326, 1233,2676,4808,7503,8782,9233,9459,9014,7465,5188,2771,537,-1735,-4473,-7844,-11458,-14624,-16832,-18100,-18730, -18933,-18542,-17241,-15033,-12315,-9646,-7362,-5436,-3636,-1700,356,2365,4185,5853,7603,9557,11528,13203,14319,14838, 15002,15291,15702,15789,15207,13872,12085,10353,8622,6397,3405,18,-3364,-6219,-8177,-9666,-11045,-12014,-12271,-11695, -10406,-8751,-7100,-5448,-3664,-1860,-185,1197,2158,2826,3308,3567,3665,3725,3682,3603,3685,3976,4443,4971, 5424,5861,6322,6717,7041,7227,6890,5891,4568,3270,2017,762,-641,-2353,-4124,-5496,-6279,-6726,-7103,-7430, -7506,-7119,-6354,-5479,-4682,-3978,-3253,-2524,-1886,-1508,-1348,-1241,-1045,-750,-403,-10,443,1017,1718,2603, 3700,4940,6089,6949,7455,7709,7915,7902,7309,6004,4161,2144,317,-1275,-2928,-4968,-7194,-9115,-10523,-11399, -12020,-12686,-13282,-13397,-12803,-11713,-10524,-9464,-8527,-7410,-6009,-4537,-3108,-1812,-643,677,2345,4314,6409,8376, 10116,11761,13435,15065,16271,16679,16169,15108,13984,12822,11317,9057,6018,2675,-368,-2940,-5283,-7692,-10074,-11982, -12980,-13013,-12456,-11699,-10732,-9354,-7482,-5276,-3116,-1296,195,1504,2716,3746,4499,4910,5057,5118,5308,5681, 6162,6640,6992,7272,7653,8131,8500,8485,7936,6949,5823,4752,3579,2004,-18,-2174,-4008,-5330,-6287,-7141, -8005,-8648,-8761,-8304,-7530,-6727,-5948,-5094,-4071,-2956,-1975,-1285,-867,-570,-302,-33,215,427,635,944, 1438,2192,3210,4329,5325,6288,7335,8402,9408,9933,9568,8308,6597,4778,2814,542,-2188,-5191,-7884,-9848, -11130,-12129,-13036,-13769,-14013,-13522,-12543,-11375,-10188,-8998,-7628,-6059,-4420,-2913,-1692,-688,271,1311,2512,3775, 5016,6217,7461,8942,10599,12060,12991,13197,12824,12299,11700,10754,9091,6700,4047,1572,-560,-2500,-4617,-6871, -8823,-10148,-10750,-10863,-10807,-10563,-9921,-8687,-7010,-5221,-3587,-2178,-873,413,1616,2608,3301,3719,3963,4191, 4547,4998,5435,5817,6211,6749,7484,8271,8759,8767,8345,7751,7166,6410,5175,3355,1164,-915,-2620,-4124, -5644,-7247,-8690,-9653,-10009,-9936,-9703,-9408,-8905,-8067,-6940,-5724,-4609,-3704,-2931,-2203,-1494,-830,-245,209, 603,1109,1851,2818,3860,4785,5555,6317,7225,8174,8798,8752,8027,6949,5793,4543,2968,860,-1627,-4061, -6057,-7586,-8929,-10265,-11470,-12227,-12282,-11711,-10822,-9853,-8831,-7613,-6128,-4462,-2867,-1491,-339,734,1889,3136, 4353,5446,6381,7286,8323,9520,10695,11580,12019,12151,12159,12072,11652,10586,8793,6566,4308,2221,159,-2085, -4496,-6761,-8487,-9551,-10142,-10510,-10696,-10516,-9788,-8553,-7071,-5621,-4332,-3155,-2033,-984,-85,568,973,1238, 1478,1812,2287,2823,3361,3929,4662,5604,6662,7552,8036,8108,7967,7749,7349,6499,5040,3135,1151,-652, -2289,-3985,-5840,-7672,-9109,-9963,-10294,-10362,-10308,-10058,-9438,-8398,-7099,-5795,-4633,-3619,-2677,-1741,-854,-88, 523,1036,1614,2410,3453,4634,5785,6826,7855,8965,10109,10977,11231,10799,9902,8827,7601,6023,3867,1245, -1452,-3842,-5808,-7538,-9234,-10830,-12019,-12516,-12333,-11724,-10958,-10075,-8947,-7472,-5764,-4046,-2524,-1231,-95,990, 2043,3004,3813,4457,5064,5797,6737,7779,8722,9429,9929,10365,10793,11011,10725,9811,8434,6916,5410,3804, 1887,-387,-2728,-4767,-6315,-7460,-8406,-9219,-9709,-9653,-9030,-8036,-6942,-5867,-4772,-3625,-2457,-1379,-518,106, 554,948,1364,1825,2313,2808,3325,3986,4850,5875,6862,7593,8011,8259,8432,8453,8037,7009,5436,3629, 1852,113,-1782,-3943,-6197,-8186,-9629,-10545,-11140,-11556,-11721,-11444,-10646,-9462,-8140,-6865,-5669,-4477,-3261,-2090, -1060,-228,469,1139,1917,2870,3937,5001,6016,7040,8185,9403,10461,11066,11111,10731,10158,9428,8348,6704, 4525,2117,-147,-2150,-4025,-5950,-7865,-9459,-10440,-10766,-10624,-10238,-9636,-8720,-7397,-5769,-4069,-2509,-1162,21, 1085,2042,2848,3489,3991,4464,5029,5774,6666,7574,8401,9135,9879,10639,11269,11504,11169,10355,9287,8111, 6738,4990,2806,428,-1803,-3677,-5256,-6699,-8047,-9130,-9711,-9700,-9239,-8560,-7783,-6884,-5810,-4608,-3426,-2405, -1597,-970,-433,66,552,1014,1461,1939,2560,3391,4435,5528,6500,7276,7914,8499,8930,8950,8355,7152, 5604,3964,2251,309,-1975,-4451,-6778,-8672,-10097,-11229,-12190,-12902,-13145,-12787,-11926,-10800,-9608,-8386,-7077,-5686, -4296,-3051,-2027,-1200,-461,294,1114,1976,2819,3642,4512,5521,6664,7777,8622,9063,9173,9104,8863,8286, 7154,5448,3417,1363,-573,-2484,-4524,-6652,-8594,-10056,-10945,-11389,-11575,-11516,-11098,-10203,-8908,-7425,-5974,-4629, -3378,-2195,-1107,-178,551,1108,1594,2122,2756,3509,4327,5145,5989,6907,7945,8965,9723,10046,9940,9559, 9012,8215,6982,5236,3149,1033,-878,-2617,-4319,-6023,-7563,-8664,-9186,-9228,-8966,-8528,-7865,-6894,-5643,-4263, -2946,-1804,-810,75,894,1631,2259,2793,3308,3902,4686,5647,6705,7709,8598,9432,10250,10982,11385,11239, 10504,9367,8038,6550,4766,2561,47,-2450,-4658,-6495,-8096,-9570,-10833,-11659,-11872,-11511,-10795,-9906,-8900,-7710, -6336,-4881,-3528,-2377,-1427,-607,170,926,1652,2324,2960,3653,4502,5512,6584,7543,8261,8755,9126,9366, 9321,8765,7633,6091,4400,2693,892,-1148,-3382,-5566,-7409,-8768,-9735,-10454,-10944,-11066,-10682,-9823,-8675,-7456, -6250,-5056,-3839,-2671,-1636,-819,-210,279,744,1256,1846,2482,3150,3874,4736,5759,6851,7809,8447,8735, 8773,8635,8240,7396,5992,4152,2159,224,-1645,-3563,-5589,-7548,-9172,-10262,-10862,-11129,-11167,-10917,-10266,-9204, -7878,-6502,-5203,-4000,-2856,-1745,-733,141,853,1477,2125,2897,3818,4839,5859,6834,7821,8854,9884,10692, 11056,10914,10380,9626,8664,7359,5581,3401,1085,-1079,-2991,-4747,-6451,-8018,-9213,-9840,-9890,-9544,-8956,-8181, -7154,-5851,-4374,-2917,-1626,-523,429,1286,2068,2752,3323,3828,4359,5017,5848,6791,7721,8534,9235,9885, 10470,10845,10787,10185,9136,7843,6423,4825,2906,681,-1629,-3741,-5487,-6917,-8151,-9208,-9926,-10139,-9815,-9094, -8183,-7186,-6092,-4890,-3629,-2430,-1427,-627,11,581,1147,1736,2335,2942,3603,4411,5410,6533,7626,8510, 9135,9552,9819,9848,9444,8470,6984,5227,3393,1520,-508,-2741,-5024,-7088,-8702,-9873,-10711,-11314,-11614,-11468, -10815,-9781,-8567,-7334,-6126,-4905,-3684,-2530,-1542,-757,-124,460,1094,1831,2639,3451,4280,5162,6154,7215, 8173,8819,9054,8946,8607,8049,7136,5717,3824,1689,-437,-2442,-4383,-6347,-8275,-9926,-11088,-11696,-11870,-11756, -11385,-10677,-9594,-8213,-6734,-5321,-4048,-2901,-1850,-890,-80,572,1101,1602,2186,2919,3782,4697,5592,6472, 7372,8293,9095,9562,9550,9097,8353,7411,6214,4640,2662,464,-1692,-3618,-5316,-6900,-8368,-9575,-10309,-10493, -10203,-9634,-8867,-7916,-6724,-5354,-3937,-2635,-1513,-567,280,1068,1812,2494,3117,3758,4495,5413,6487,7603, 8609,9455,10175,10799,11252,11331,10871,9878,8525,7000,5325,3410,1200,-1182,-3466,-5431,-7020,-8334,-9440,-10273, -10656,-10489,-9847,-8904,-7822,-6654,-5389,-4036,-2679,-1453,-444,379,1086,1760,2445,3143,3838,4542,5308,6222, 7268,8320,9196,9779,10094,10211,10117,9692,8765,7316,5520,3595,1672,-300,-2402,-4572,-6597,-8249,-9423,-10194, -10680,-10888,-10738,-10140,-9140,-7914,-6634,-5411,-4229,-3088,-2023,-1099,-349,218,709,1202,1781,2464,3212,3980, 4792,5685,6667,7635,8386,8771,8765,8464,7941,7132,5897,4194,2153,20,-2012,-3937,-5826,-7672,-9356,-10645, -11413,-11703,-11648,-11345,-10769,-9859,-8659,-7292,-5943,-4708,-3604,-2601,-1675,-830,-100,527,1108,1753,2528,3460, 4483,5508,6473,7399,8305,9125,9664,9750,9330,8527,7476,6206,4630,2683,446,-1826,-3909,-5727,-7335,-8799, -10036,-10885,-11196,-10993,-10424,-9631,-8659,-7500,-6162,-4748,-3393,-2220,-1231,-394,363,1061,1715,2319,2911,3569, 4364,5321,6374,7382,8245,8932,9490,9905,10031,9686,8830,7541,6032,4388,2591,558,-1649,-3846,-5800,-7377, -8603,-9577,-10289,-10633,-10494,-9882,-8936,-7817,-6629,-5399,-4126,-2871,-1709,-731,53,703,1300,1912,2559,3248, 3968,4749,5634,6660,7747,8743,9483,9930,10123,10098,9780,9038,7779,6094,4184,2229,269,-1762,-3865,-5899, -7644,-8943,-9792,-10291,-10504,-10396,-9885,-8974,-7773,-6468,-5175,-3942,-2756,-1631,-613,260,976,1576,2169,2816, 3577,4425,5311,6208,7141,8121,9102,9911,10386,10432,10126,9538,8702,7511,5888,3886,1708,-428,-2415,-4299, -6114,-7785,-9132,-9996,-10349,-10295,-9945,-9348,-8470,-7319,-5979,-4618,-3352,-2233,-1242,-358,432,1131,1727,2275, 2842,3511,4332,5273,6250,7188,8052,8870,9599,10124,10264,9924,9145,8067,6774,5243,3393,1256,-997,-3141, -5028,-6659,-8083,-9300,-10189,-10608,-10518,-10009,-9240,-8309,-7219,-5996,-4681,-3410,-2271,-1309,-512,201,872,1516, 2158,2800,3494,4301,5262,6342,7427,8374,9125,9687,10075,10217,9949,9169,7918,6351,4621,2779,764,-1418, -3637,-5691,-7388,-8693,-9679,-10386,-10771,-10722,-10202,-9307,-8173,-6962,-5716,-4446,-3187,-2001,-965,-121,568,1185, 1797,2453,3165,3917,4720,5600,6589,7652,8659,9453,9936,10109,10034,9692,8979,7810,6189,4282,2277,282, -1712,-3734,-5721,-7481,-8838,-9722,-10199,-10353,-10201,-9700,-8842,-7678,-6373,-5071,-3847,-2706,-1649,-692,130,801, 1370,1890,2464,3140,3933,4804,5696,6604,7548,8498,9341,9898,10058,9813,9246,8408,7275,5755,3851,1696, -490,-2548,-4456,-6256,-7918,-9329,-10303,-10781,-10810,-10493,-9932,-9120,-8052,-6781,-5437,-4156,-3015,-2024,-1135,-340, 370,1018,1596,2180,2844,3645,4583,5587,6549,7427,8209,8894,9395,9572,9287,8535,7406,6046,4472,2651, 551,-1710,-3924,-5916,-7617,-9055,-10263,-11176,-11664,-11658,-11190,-10402,-9427,-8308,-7073,-5749,-4436,-3236,-2202,-1353, -625,42,688,1332,1985,2656,3425,4322,5340,6393,7346,8104,8644,8986,9097,8874,8199,7046,5531,3806, 1996,67,-1989,-4108,-6115,-7839,-9164,-10124,-10777,-11131,-11112,-10653,-9800,-8691,-7468,-6219,-4975,-3753,-2593,-1559, -680,39,671,1285,1953,2691,3488,4333,5237,6220,7274,8318,9181,9744,9962,9878,9522,8844,7747,6211, 4327,2289,251,-1740,-3718,-5650,-7422,-8839,-9810,-10329,-10497,-10359,-9903,-9105,-7998,-6689,-5344,-4054,-2865,-1765, -752,148,924,1581,2186,2812,3537,4374,5307,6272,7214,8150,9060,9876,10452,10644,10407,9793,8888,7715, 6220,4366,2236,20,-2108,-4047,-5819,-7438,-8823,-9837,-10361,-10412,-10079,-9466,-8626,-7567,-6312,-4966,-3648,-2459, -1426,-525,273,994,1654,2267,2866,3525,4291,5203,6211,7211,8129,8924,9598,10107,10334,10148,9485,8404, 7037,5464,3686,1673,-520,-2738,-4784,-6532,-7994,-9186,-10103,-10651,-10729,-10355,-9619,-8642,-7543,-6329,-5056,-3758, -2548,-1487,-596,155,835,1504,2184,2888,3612,4406,5302,6320,7390,8396,9215,9781,10102,10182,9957,9322, 8206,6678,4889,2976,987,-1084,-3224,-5302,-7143,-8606,-9662,-10361,-10748,-10786,-10422,-9653,-8574,-7345,-6064,-4807, -3578,-2410,-1347,-433,326,969,1575,2215,2932,3721,4564,5450,6387,7382,8374,9238,9828,10065,9964,9567, 8871,7809,6340,4504,2449,361,-1676,-3642,-5549,-7316,-8796,-9856,-10451,-10636,-10503,-10063,-9319,-8280,-7029,-5692, -4404,-3213,-2135,-1153,-271,509,1178,1792,2403,3096,3915,4833,5821,6803,7746,8659,9484,10117,10406,10270, 9717,8838,7677,6237,4480,2435,241,-1918,-3898,-5678,-7270,-8652,-9709,-10329,-10464,-10179,-9582,-8748,-7711,-6497, -5159,-3823,-2580,-1494,-552,280,1039,1746,2417,3075,3761,4542,5454,6463,7499,8441,9247,9891,10358,10566, 10398,9776,8716,7311,5686,3890,1905,-255,-2473,-4572,-6392,-7892,-9086,-9981,-10549,-10686,-10374,-9679,-8719,-7612, -6422,-5176,-3926,-2731,-1676,-792,-51,596,1194,1811,2457,3138,3876,4697,5615,6622,7592,8413,8991,9300, 9343,9111,8509,7479,6016,4250,2323,326,-1713,-3791,-5834,-7689,-9205,-10317,-11033,-11415,-11470,-11163,-10486,-9482, -8296,-7051,-5829,-4653,-3547,-2540,-1652,-905,-269,315,922,1609,2394,3253,4162,5113,6104,7090,7986,8651, 8972,8922,8537,7843,6834,5430,3665,1634,-485,-2557,-4533,-6411,-8149,-9637,-10737,-11375,-11576,-11413,-10945,-10191, -9158,-7908,-6549,-5196,-3958,-2830,-1832,-931,-127,580,1226,1862,2551,3352,4273,5265,6266,7230,8113,8917, 9548,9881,9806,9300,8419,7246,5812,4106,2129,-31,-2197,-4218,-6006,-7565,-8890,-9910,-10530,-10685,-10392,-9764, -8888,-7827,-6616,-5309,-3979,-2738,-1648,-721,73,779,1433,2053,2677,3326,4056,4902,5866,6889,7866,8708, 9378,9852,10097,10013,9500,8537,7199,5591,3817,1888,-186,-2344,-4429,-6294,-7818,-9019,-9904,-10450,-10625,-10368, -9711,-8758,-7635,-6430,-5189,-3946,-2756,-1679,-762,3,668,1281,1903,2581,3297,4077,4925,5853,6854,7858, 8737,9383,9735,9800,9575,9021,8056,6673,4929,2986,962,-1082,-3138,-5155,-7024,-8592,-9757,-10510,-10879,-10919, -10613,-9951,-8966,-7763,-6466,-5179,-3954,-2805,-1749,-823,-24,653,1260,1867,2527,3290,4135,5033,5953,6890, 7822,8678,9340,9685,9655,9254,8552,7529,6184,4484,2498,384,-1712,-3700,-5557,-7262,-8743,-9891,-10592,-10839, -10701,-10239,-9514,-8529,-7332,-6017,-4691,-3454,-2352,-1373,-512,262,955,1587,2198,2855,3601,4474,5439,6435, 7385,8261,9022,9632,9979,9951,9487,8622,7434,5992,4300,2364,245,-1930,-3997,-5846,-7430,-8761,-9807,-10485, -10721,-10507,-9928,-9075,-8035,-6848,-5567,-4252,-2992,-1864,-893,-67,665,1352,2012,2683,3386,4141,4999,5961, 6991,7992,8865,9537,9994,10211,10121,9637,8713,7391,5767,3961,2026,-20,-2140,-4214,-6099,-7667,-8873,-9738, -10262,-10430,-10195,-9566,-8615,-7473,-6231,-4966,-3715,-2504,-1408,-452,355,1041,1662,2286,2949,3679,4463,5311, 6224,7199,8186,9078,9759,10147,10212,9981,9423,8498,7169,5477,3540,1509,-546,-2571,-4547,-6396,-7980,-9191, -9983,-10371,-10401,-10111,-9490,-8556,-7389,-6110,-4831,-3615,-2486,-1462,-554,235,914,1527,2116,2763,3504,4345, 5249,6178,7110,8029,8870,9540,9929,9941,9562,8835,7796,6450,4775,2807,668,-1488,-3536,-5434,-7163,-8662, -9853,-10637,-10961,-10861,-10424,-9712,-8759,-7602,-6307,-4984,-3723,-2590,-1598,-727,46,751,1395,2018,2666,3400, 4246,5190,6186,7142,8009,8746,9324,9663,9663,9239,8393,7195,5737,4048,2141,59,-2111,-4208,-6097,-7720, -9055,-10092,-10791,-11074,-10918,-10362,-9511,-8460,-7277,-6002,-4696,-3427,-2274,-1276,-422,318,1000,1669,2347,3047, 3811,4655,5594,6615,7630,8540,9253,9734,9956,9889,9471,8622,7368,5774,3971,2044,26,-2050,-4111,-6018, -7641,-8900,-9793,-10342,-10532,-10346,-9773,-8869,-7733,-6486,-5203,-3944,-2727,-1604,-602,254,981,1640,2288,2973, 3723,4540,5413,6336,7300,8274,9177,9890,10307,10397,10151,9590,8681,7396,5752,3826,1764,-314,-2353,-4318, -6158,-7770,-9038,-9882,-10311,-10354,-10072,-9473,-8575,-7440,-6165,-4857,-3611,-2457,-1413,-478,344,1054,1690,2296, 2932,3657,4481,5387,6324,7244,8136,8948,9605,10004,10046,9685,8948,7898,6553,4915,2999,886,-1280,-3365, -5278,-7003,-8495,-9700,-10522,-10906,-10860,-10446,-9741,-8810,-7689,-6431,-5124,-3867,-2726,-1724,-847,-72,629,1290, 1938,2598,3329,4163,5101,6099,7083,7969,8721,9289,9628,9659,9287,8493,7307,5830,4135,2243,180,-1967, -4083,-6012,-7680,-9041,-10088,-10800,-11132,-11035,-10536,-9713,-8669,-7492,-6231,-4941,-3683,-2515,-1490,-622,129,813, 1470,2153,2867,3634,4478,5398,6391,7397,8311,9035,9519,9725,9647,9227,8414,7193,5620,3805,1852,-177, -2233,-4276,-6188,-7843,-9156,-10070,-10620,-10819,-10655,-10123,-9255,-8146,-6903,-5619,-4357,-3162,-2042,-1048,-190,550, 1200,1827,2487,3218,4019,4892,5811,6760,7714,8609,9348,9815,9942,9721,9176,8298,7069,5491,3617,1577, -511,-2541,-4485,-6292,-7894,-9183,-10064,-10521,-10583,-10290,-9697,-8820,-7705,-6438,-5123,-3847,-2679,-1619,-677,165, 904,1572,2206,2862,3587,4418,5347,6307,7268,8175,8996,9675,10113,10221,9932,9241,8216,6894,5292,3434, 1370,-779,-2863,-4787,-6496,-7969,-9160,-9992,-10406,-10382,-9974,-9265,-8322,-7200,-5952,-4642,-3363,-2199,-1165,-274, 503,1209,1869,2522,3187,3904,4718,5631,6609,7594,8498,9253,9817,10150,10195,9861,9118,7974,6507,4807, 2931,904,-1218,-3318,-5279,-6981,-8369,-9428,-10147,-10498,-10454,-10007,-9228,-8209,-7054,-5827,-4575,-3355,-2222,-1219, -359,377,1030,1660,2313,3013,3762,4579,5469,6433,7417,8332,9090,9597,9811,9727,9315,8534,7354,5808, 3993,2016,-29,-2097,-4126,-6056,-7752,-9118,-10100,-10688,-10912,-10784,-10296,-9483,-8406,-7178,-5898,-4632,-3430,-2324, -1320,-440,315,977,1606,2264,2990,3795,4675,5602,6552,7495,8382,9128,9632,9799,9610,9076,8210,7015, 5484,3663,1639,-453,-2500,-4442,-6237,-7831,-9133,-10053,-10545,-10623,-10346,-9746,-8891,-7794,-6540,-5221,-3935,-2743, -1676,-731,104,850,1517,2147,2787,3492,4290,5188,6146,7110,8019,8833,9506,9964,10111,9877,9245,8247, 6947,5379,3573,1571,-547,-2638,-4585,-6317,-7788,-8987,-9847,-10309,-10350,-9995,-9308,-8391,-7291,-6079,-4804,-3545, -2376,-1345,-451,321,1014,1664,2311,2969,3680,4468,5356,6316,7298,8212,8974,9544,9884,9933,9642,8945, 7845,6397,4691,2809,804,-1293,-3383,-5366,-7113,-8537,-9629,-10376,-10761,-10756,-10369,-9628,-8635,-7482,-6257,-5012, -3797,-2658,-1642,-757,-13,652,1272,1913,2602,3351,4166,5047,5983,6941,7853,8617,9145,9384,9301,8904, 8153,7034,5551,3765,1808,-228,-2279,-4282,-6179,-7874,-9259,-10266,-10871,-11099,-10965,-10504,-9717,-8675,-7465,-6192, -4927,-3736,-2637,-1660,-786,-35,633,1255,1889,2590,3384,4250,5186,6135,7077,7961,8722,9258,9480,9339, 8834,7990,6829,5349,3580,1593,-485,-2541,-4489,-6273,-7861,-9179,-10137,-10685,-10807,-10554,-9984,-9142,-8082,-6868, -5572,-4294,-3099,-2026,-1079,-243,500,1186,1829,2487,3192,3989,4885,5854,6834,7764,8588,9259,9725,9902, 9709,9118,8153,6857,5296,3514,1532,-555,-2651,-4623,-6377,-7866,-9065,-9933,-10424,-10502,-10176,-9517,-8597,-7505, -6292,-5032,-3787,-2607,-1565,-667,111,801,1441,2078,2739,3444,4226,5089,6041,7020,7953,8747,9338,9693, 9771,9510,8876,7841,6448,4775,2921,943,-1102,-3161,-5123,-6866,-8314,-9412,-10153,-10533,-10544,-10182,-9475,-8502, -7357,-6131,-4898,-3698,-2569,-1550,-669,91,752,1370,2000,2677,3436,4252,5134,6080,7038,7973,8770,9347, 9633,9603,9226,8524,7443,6019,4280,2333,292,-1750,-3747,-5634,-7338,-8753,-9806,-10455,-10710,-10609,-10172,-9429, -8419,-7233,-5963,-4696,-3499,-2402,-1417,-545,220,897,1530,2168,2859,3644,4514,5444,6404,7343,8222,8976, 9522,9774,9668,9182,8350,7192,5730,3993,2025,-56,-2140,-4116,-5925,-7520,-8850,-9838,-10433,-10607,-10383,-9835, -9018,-7981,-6789,-5508,-4236,-3040,-1951,-1002,-170,574,1253,1899,2538,3231,4004,4877,5827,6804,7741,8577, 9248,9714,9907,9755,9203,8267,6987,5432,3657,1707,-360,-2451,-4451,-6238,-7759,-8979,-9874,-10405,-10530,-10258, -9641,-8745,-7667,-6472,-5228,-3982,-2806,-1737,-816,-23,686,1341,1991,2662,3388,4180,5049,5988,6967,7908, 8731,9344,9712,9796,9555,8946,7960,6593,4933,3068,1080,-967,-3015,-4985,-6766,-8260,-9403,-10179,-10594,-10641, -10316,-9659,-8717,-7578,-6346,-5100,-3885,-2737,-1701,-788,7,707,1351,1995,2685,3447,4280,5174,6111,7069, 7984,8789,9383,9695,9675,9308,8598,7551,6153,4450,2516,467,-1595,-3597,-5492,-7200,-8647,-9746,-10442,-10740, -10666,-10246,-9545,-8567,-7405,-6140,-4863,-3648,-2529,-1520,-629,165,873,1531,2190,2889,3673,4545,5481,6452, 7399,8278,9028,9582,9857,9781,9320,8487,7334,5877,4153,2211,127,-1972,-3984,-5830,-7445,-8801,-9835,-10487, -10719,-10547,-10029,-9236,-8224,-7046,-5784,-4507,-3291,-2184,-1207,-354,409,1111,1781,2453,3160,3942,4811,5761, 6742,7690,8531,9210,9668,9859,9720,9194,8273,7003,5436,3654,1697,-377,-2482,-4499,-6339,-7898,-9154,-10074, -10631,-10803,-10584,-9998,-9127,-8055,-6861,-5610,-4361,-3174,-2082,-1122,-296,441,1113,1778,2474,3217,4018,4898, 5838,6816,7772,8609,9254,9637,9721,9490,8908,7946,6619,4977,3120,1124,-916,-2956,-4915,-6713,-8237,-9411, -10217,-10650,-10713,-10418,-9781,-8862,-7731,-6496,-5220,-3989,-2821,-1756,-794,34,774,1457,2129,2844,3624,4485, 5408,6361,7327,8256,9079,9708,10052,10061,9723,9034,8003,6643,4975,3065,1018,-1051,-3059,-4947,-6659,-8111, -9241,-9976,-10305,-10251,-9848,-9149,-8196,-7036,-5772,-4485,-3247,-2107,-1082,-162,644,1376,2056,2726,3427,4197, 5061,6003,6964,7911,8782,9530,10080,10362,10310,9874,9059,7901,6452,4736,2811,734,-1381,-3417,-5288,-6932, -8300,-9354,-10037,-10319,-10199,-9716,-8942,-7955,-6808,-5574,-4314,-3114,-2005,-1031,-180,570,1257,1921,2586,3283, 4046,4895,5821,6789,7734,8585,9264,9725,9919,9790,9295,8408,7157,5600,3811,1860,-201,-2296,-4325,-6195, -7797,-9086,-10030,-10618,-10828,-10650,-10107,-9272,-8220,-7037,-5798,-4555,-3374,-2279,-1313,-464,274,958,1624,2319, 3061,3872,4745,5684,6646,7598,8444,9111,9515,9625,9404,8841,7908,6613,5003,3147,1156,-898,-2934,-4891, -6696,-8247,-9460,-10294,-10748,-10825,-10557,-9950,-9048,-7934,-6694,-5412,-4165,-2994,-1925,-963,-118,624,1312,1980, 2683,3449,4292,5213,6160,7115,8033,8849,9490,9862,9899,9583,8912,7904,6570,4946,3069,1042,-1035,-3062, -4952,-6663,-8129,-9277,-10051,-10416,-10388,-10011,-9320,-8390,-7269,-6025,-4746,-3509,-2365,-1344,-437,366,1085,1757, 2421,3103,3861,4694,5614,6581,7525,8404,9154,9718,10029,10011,9623,8852,7730,6301,4620,2725,682,-1417, -3459,-5339,-6995,-8369,-9427,-10134,-10441,-10354,-9899,-9147,-8161,-7028,-5791,-4544,-3338,-2222,-1236,-376,382,1068, 1728,2391,3093,3852,4689,5602,6566,7513,8378,9080,9565,9787,9693,9246,8419,7215,5698,3937,2008,-18, -2083,-4099,-5957,-7581,-8876,-9827,-10416,-10638,-10484,-9967,-9155,-8111,-6937,-5698,-4470,-3288,-2204,-1244,-403,332, 996,1640,2312,3038,3823,4680,5600,6558,7486,8343,9024,9458,9597,9397,8861,7974,6726,5158,3343,1369, -676,-2705,-4656,-6446,-8011,-9262,-10125,-10608,-10710,-10458,-9886,-9021,-7935,-6731,-5467,-4232,-3076,-2021,-1084,-253, 484,1151,1808,2483,3223,4043,4943,5885,6831,7738,8553,9202,9602,9675,9393,8747,7756,6452,4849,3005, 992,-1078,-3115,-5013,-6726,-8199,-9363,-10163,-10567,-10567,-10214,-9547,-8630,-7524,-6302,-5027,-3790,-2643,-1618,-712, 85,806,1476,2135,2820,3565,4395,5304,6267,7229,8111,8880,9455,9786,9806,9464,8737,7651,6248,4593, 2729,725,-1347,-3376,-5260,-6922,-8299,-9355,-10060,-10383,-10310,-9877,-9130,-8149,-7014,-5787,-4534,-3322,-2195,-1200, -325,439,1126,1785,2453,3149,3916,4747,5655,6614,7583,8464,9193,9709,9950,9881,9463,8674,7519,6030, 4289,2376,360,-1687,-3692,-5555,-7192,-8520,-9493,-10100,-10331,-10198,-9720,-8926,-7898,-6731,-5496,-4261,-3086,-1997, -1024,-172,578,1250,1896,2561,3284,4073,4929,5838,6786,7715,8563,9262,9713,9867,9687,9153,8272,7044, 5496,3689,1702,-358,-2400,-4368,-6180,-7763,-9048,-9965,-10489,-10625,-10399,-9858,-9027,-7973,-6776,-5531,-4287,-3131, -2075,-1134,-300,440,1117,1763,2431,3161,3968,4848,5783,6722,7624,8418,9068,9466,9562,9300,8660,7681, 6382,4795,2964,965,-1108,-3155,-5082,-6819,-8303,-9496,-10329,-10768,-10815,-10489,-9851,-8954,-7868,-6661,-5404,-4157, -3002,-1956,-1040,-225,506,1195,1867,2563,3310,4141,5046,6009,6976,7881,8652,9245,9589,9633,9319,8623, 7565,6183,4532,2689,699,-1352,-3390,-5296,-6977,-8383,-9462,-10194,-10552,-10524,-10121,-9405,-8439,-7305,-6078,-4823, -3593,-2451,-1419,-515,277,998,1680,2368,3091,3871,4718,5629,6588,7554,8449,9193,9714,9968,9908,9507, 8739,7609,6142,4404,2491,471,-1576,-3588,-5463,-7126,-8481,-9499,-10132,-10398,-10292,-9845,-9082,-8082,-6916,-5681, -4439,-3245,-2139,-1144,-268,505,1208,1868,2539,3268,4055,4917,5828,6766,7687,8532,9230,9693,9857,9689, 9166,8295,7089,5564,3768,1794,-274,-2335,-4309,-6134,-7737,-9051,-10004,-10570,-10740,-10547,-10024,-9228,-8193,-7010, -5760,-4515,-3336,-2259,-1298,-445,319,1019,1690,2369,3106,3912,4801,5736,6679,7586,8394,9036,9454,9573, 9333,8725,7759,6468,4894,3082,1106,-974,-3024,-4974,-6735,-8238,-9451,-10322,-10802,-10884,-10585,-9968,-9089,-8014, -6806,-5543,-4295,-3109,-2044,-1094,-255,497,1210,1903,2618,3383,4219,5126,6084,7054,7967,8749,9340,9683, 9733,9443,8776,7733,6370,4724,2877,896,-1157,-3188,-5112,-6820,-8257,-9361,-10120,-10502,-10507,-10138,-9447,-8501, -7379,-6153,-4895,-3663,-2506,-1454,-526,292,1025,1724,2417,3147,3932,4780,5694,6644,7604,8499,9258,9793, 10058,10004,9614,8859,7747,6308,4587,2672,648,-1400,-3404,-5288,-6964,-8359,-9400,-10071,-10359,-10281,-9855,-9121, -8137,-6986,-5743,-4498,-3297,-2180,-1173,-271,518,1234,1912,2595,3315,4113,4973,5889,6824,7745,8593,9294, 9776,9971,9821,9323,8466,7275,5778,4008,2047,-8,-2074,-4055,-5890,-7495,-8821,-9803,-10402,-10598,-10424,-9915, -9129,-8120,-6948,-5694,-4453,-3260,-2175,-1196,-330,442,1150,1827,2515,3248,4051,4929,5863,6810,7721,8531, 9180,9597,9738,9529,8947,8003,6731,5174,3379,1409,-651,-2715,-4673,-6458,-7984,-9216,-10108,-10627,-10747,-10492, -9897,-9044,-7986,-6805,-5552,-4312,-3131,-2057,-1103,-258,494,1198,1892,2600,3356,4179,5068,6019,6971,7879, 8663,9254,9603,9664,9383,8734,7713,6359,4727,2882,897,-1154,-3196,-5130,-6872,-8342,-9485,-10266,-10690,-10725, -10399,-9749,-8829,-7717,-6507,-5257,-4038,-2872,-1820,-885,-64,671,1367,2059,2780,3554,4401,5304,6247,7191, 8077,8834,9387,9667,9630,9256,8525,7443,6030,4334,2431,415,-1631,-3631,-5516,-7202,-8607,-9676,-10368,-10684, -10618,-10218,-9500,-8538,-7399,-6165,-4905,-3700,-2570,-1550,-643,162,888,1570,2258,2981,3774,4637,5559,6501, 7426,8281,9001,9507,9738,9626,9162,8345,7187,5728,4003,2075,40,-2021,-3999,-5817,-7434,-8761,-9761,-10376, -10610,-10450,-9956,-9179,-8178,-7020,-5780,-4522,-3328,-2224,-1241,-363,413,1133,1810,2502,3230,4025,4897,5825, 6772,7688,8506,9169,9606,9770,9597,9056,8147,6900,5365,3599,1658,-388,-2437,-4401,-6190,-7737,-8980,-9887, -10422,-10585,-10350,-9783,-8944,-7898,-6725,-5485,-4246,-3069,-1989,-1030,-186,565,1262,1943,2642,3384,4190,5066, 5994,6944,7848,8640,9254,9622,9696,9448,8835,7862,6543,4938,3115,1151,-881,-2904,-4832,-6577,-8066,-9228, -10031,-10469,-10533,-10235,-9610,-8708,-7616,-6418,-5171,-3947,-2799,-1744,-811,17,755,1438,2122,2830,3594,4425, 5315,6247,7187,8071,8843,9418,9722,9720,9378,8689,7646,6273,4621,2751,756,-1277,-3263,-5145,-6833,-8251, -9343,-10058,-10396,-10357,-9968,-9281,-8337,-7215,-5992,-4737,-3530,-2408,-1384,-478,324,1043,1724,2402,3111,3880, 4734,5642,6584,7506,8360,9081,9603,9851,9777,9342,8551,7419,5985,4287,2390,364,-1684,-3667,-5496,-7114, -8458,-9477,-10128,-10384,-10266,-9795,-9047,-8065,-6933,-5712,-4468,-3282,-2179,-1196,-329,443,1144,1817,2492,3212, 3984,4838,5748,6692,7606,8428,9092,9547,9725,9572,9067,8193,6973,5458,3710,1789,-238,-2285,-4252,-6052, -7611,-8873,-9796,-10355,-10542,-10347,-9804,-8988,-7959,-6802,-5573,-4345,-3168,-2091,-1124,-278,479,1175,1848,2547, 3286,4086,4955,5877,6822,7731,8535,9167,9562,9654,9433,8853,7915,6634,5052,3252,1300,-722,-2733,-4658, -6412,-7912,-9094,-9923,-10380,-10459,-10187,-9581,-8708,-7631,-6433,-5195,-3967,-2813,-1760,-804,28,775,1464,2147, 2853,3619,4444,5338,6272,7207,8094,8869,9464,9796,9812,9500,8827,7816,6474,4848,2996,1012,-1024,-3021, -4896,-6588,-8027,-9149,-9897,-10268,-10258,-9904,-9235,-8324,-7225,-6017,-4776,-3565,-2441,-1422,-509,301,1028,1705, 2382,3086,3851,4687,5594,6522,7447,8295,9022,9549,9821,9758,9363,8583,7476,6053,4378,2490,476,-1580, -3566,-5419,-7053,-8418,-9462,-10145,-10435,-10346,-9919,-9184,-8230,-7107,-5896,-4668,-3473,-2371,-1384,-507,271,981, 1657,2336,3052,3826,4668,5581,6520,7441,8266,8947,9415,9612,9478,9007,8161,6974,5484,3746,1836,-173, -2210,-4172,-5987,-7559,-8845,-9796,-10371,-10577,-10413,-9899,-9104,-8092,-6937,-5716,-4491,-3307,-2222,-1243,-384,379, 1082,1759,2451,3196,3996,4861,5781,6727,7637,8450,9100,9510,9630,9424,8875,7968,6716,5168,3377,1435, -577,-2593,-4518,-6283,-7804,-9015,-9878,-10361,-10473,-10233,-9658,-8810,-7760,-6572,-5342,-4120,-2963,-1908,-955,-111, 647,1339,2015,2717,3475,4294,5182,6107,7034,7925,8698,9298,9651,9694,9391,8747,7746,6427,4826,2990, 1010,-1021,-3034,-4922,-6632,-8094,-9244,-10032,-10443,-10464,-10139,-9507,-8619,-7541,-6345,-5110,-3900,-2767,-1737,-818, 4,742,1435,2116,2823,3586,4416,5316,6256,7180,8043,8772,9307,9596,9566,9190,8455,7368,5970,4310, 2445,449,-1596,-3597,-5458,-7108,-8488,-9554,-10267,-10591,-10533,-10125,-9421,-8471,-7357,-6150,-4914,-3710,-2581,-1570, -672,133,860,1549,2244,2971,3760,4612,5521,6470,7395,8245,8938,9421,9643,9543,9096,8290,7132,5667, 3950,2056,55,-1971,-3939,-5768,-7360,-8663,-9634,-10242,-10475,-10336,-9858,-9081,-8079,-6932,-5702,-4475,-3285,-2174, -1185,-304,481,1205,1894,2593,3341,4149,5010,5931,6879,7787,8613,9274,9701,9838,9654,9119,8239,7007, 5482,3703,1768,-252,-2268,-4201,-5979,-7526,-8770,-9664,-10188,-10332,-10113,-9576,-8748,-7719,-6545,-5315,-4097,-2934, -1862,-899,-40,729,1435,2119,2826,3585,4402,5289,6220,7151,8039,8816,9425,9786,9853,9572,8940,7968, 6663,5076,3256,1279,-759,-2774,-4685,-6413,-7896,-9069,-9893,-10337,-10397,-10096,-9493,-8626,-7568,-6385,-5146,-3934, -2791,-1746,-815,17,769,1477,2174,2885,3655,4491,5395,6327,7274,8134,8873,9424,9727,9720,9368,8655, 7594,6211,4567,2715,729,-1312,-3315,-5196,-6863,-8268,-9353,-10086,-10444,-10427,-10051,-9364,-8441,-7341,-6138,-4904, -3703,-2569,-1541,-631,181,925,1626,2330,3060,3845,4702,5612,6552,7483,8336,9041,9534,9767,9680,9254, 8464,7329,5879,4172,2285,289,-1738,-3715,-5553,-7168,-8510,-9505,-10141,-10411,-10305,-9851,-9109,-8124,-6993,-5772, -4545,-3357,-2244,-1241,-352,449,1176,1871,2579,3322,4123,4995,5910,6845,7759,8584,9251,9689,9844,9674, 9156,8289,7085,5572,3817,1882,-137,-2159,-4100,-5899,-7458,-8732,-9659,-10215,-10395,-10203,-9690,-8900,-7884,-6727, -5501,-4276,-3111,-2032,-1061,-192,587,1307,1996,2701,3456,4269,5154,6077,7007,7893,8681,9292,9674,9756, 9504,8891,7927,6646,5075,3273,1308,-733,-2755,-4674,-6419,-7916,-9120,-9973,-10452,-10553,-10286,-9705,-8857,-7810, -6640,-5412,-4201,-3047,-1999,-1053,-220,541,1252,1949,2663,3420,4248,5140,6072,7000,7869,8618,9178,9485, 9494,9170,8479,7435,6080,4445,2611,631,-1405,-3413,-5305,-7000,-8416,-9529,-10286,-10678,-10689,-10342,-9680,-8777, -7688,-6494,-5265,-4057,-2919,-1879,-951,-136,616,1323,2027,2753,3536,4385,5291,6228,7154,8012,8732,9243, 9489,9428,9027,8269,7164,5744,4054,2180,193,-1831,-3802,-5650,-7284,-8635,-9662,-10323,-10616,-10537,-10112,-9388, -8431,-7296,-6083,-4848,-3651,-2534,-1518,-608,197,937,1641,2352,3098,3896,4767,5682,6615,7539,8367,9047, 9510,9691,9549,9063,8228,7052,5575,3843,1930,-80,-2095,-4042,-5840,-7414,-8698,-9652,-10235,-10433,-10268,-9770, -9004,-8006,-6853,-5636,-4403,-3231,-2145,-1163,-283,498,1227,1924,2633,3380,4189,5069,5988,6920,7810,8604, 9231,9630,9739,9514,8938,8007,6752,5213,3435,1493,-536,-2556,-4477,-6227,-7744,-8953,-9832,-10333,-10462,-10222, -9659,-8828,-7806,-6641,-5421,-4205,-3052,-1994,-1041,-194,566,1283,1985,2693,3454,4270,5153,6080,7005,7882, 8642,9215,9543,9578,9278,8624,7612,6280,4675,2855,893,-1134,-3137,-5032,-6732,-8182,-9308,-10089,-10504,-10546, -10228,-9589,-8700,-7632,-6448,-5224,-4016,-2883,-1841,-907,-77,672,1381,2080,2812,3590,4431,5334,6265,7191, 8061,8786,9312,9579,9536,9161,8435,7361,5963,4305,2440,467,-1553,-3525,-5376,-7024,-8396,-9446,-10130,-10434, -10388,-9995,-9292,-8350,-7244,-6034,-4808,-3612,-2497,-1484,-576,243,980,1689,2391,3132,3928,4792,5702,6642, 7551,8389,9083,9559,9765,9645,9181,8365,7218,5761,4053,2155,157,-1867,-3809,-5613,-7200,-8508,-9480,-10090, -10312,-10176,-9705,-8949,-7971,-6844,-5627,-4399,-3224,-2136,-1150,-273,526,1248,1952,2659,3408,4210,5079,6000, 6937,7829,8628,9272,9682,9820,9623,9069,8165,6932,5411,3655,1727,-287,-2308,-4242,-5997,-7524,-8765,-9654, -10186,-10335,-10124,-9586,-8768,-7762,-6613,-5394,-4180,-3020,-1956,-996,-136,632,1347,2049,2760,3520,4334,5208, 6130,7064,7938,8709,9287,9631,9687,9406,8775,7797,6482,4896,3089,1142,-882,-2887,-4789,-6508,-7974,-9131, -9942,-10385,-10456,-10175,-9567,-8702,-7650,-6481,-5259,-4054,-2913,-1866,-924,-86,677,1384,2090,2814,3593,4427, 5317,6241,7166,8022,8760,9294,9575,9544,9181,8471,7418,6037,4393,2539,559,-1464,-3448,-5310,-6983,-8387, -9472,-10193,-10539,-10520,-10161,-9492,-8577,-7484,-6286,-5060,-3864,-2734,-1709,-786,40,796,1505,2218,2960,3758, 4616,5524,6462,7370,8202,8905,9393,9611,9504,9059,8262,7132,5694,3999,2113,113,-1907,-3869,-5686,-7284, -8621,-9624,-10258,-10521,-10413,-9971,-9238,-8272,-7148,-5938,-4704,-3519,-2404,-1404,-504,310,1057,1770,2498,3253, 4065,4939,5861,6798,7704,8505,9159,9588,9741,9561,9039,8160,6952,5447,3708,1796,-208,-2229,-4165,-5941, -7480,-8740,-9657,-10212,-10394,-10211,-9692,-8900,-7897,-6752,-5534,-4306,-3129,-2047,-1062,-181,617,1354,2067,2801, 3563,4393,5273,6196,7133,8017,8789,9391,9747,9822,9561,8959,7998,6708,5133,3343,1400,-613,-2622,-4540, -6274,-7756,-8945,-9784,-10248,-10345,-10092,-9514,-8673,-7627,-6461,-5244,-4027,-2873,-1807,-850,6,779,1504,2217, 2952,3729,4570,5455,6375,7300,8157,8893,9440,9732,9722,9371,8677,7645,6290,4651,2815,840,-1180,-3167, -5047,-6729,-8157,-9267,-10019,-10397,-10407,-10074,-9434,-8538,-7456,-6276,-5045,-3845,-2717,-1682,-750,83,846,1566, 2278,3023,3806,4663,5563,6489,7401,8236,8935,9433,9663,9588,9157,8380,7268,5854,4173,2298,309,-1710, -3680,-5508,-7128,-8472,-9508,-10171,-10462,-10382,-9960,-9251,-8315,-7200,-6000,-4776,-3579,-2465,-1451,-546,269,1023, 1738,2456,3208,4012,4881,5792,6726,7630,8437,9092,9532,9698,9545,9046,8194,7002,5516,3785,1893,-106, -2119,-4060,-5852,-7410,-8686,-9628,-10206,-10417,-10256,-9768,-8999,-8005,-6870,-5666,-4445,-3269,-2171,-1182,-300,493, 1233,1941,2661,3425,4241,5114,6028,6951,7842,8619,9231,9603,9693,9461,8877,7941,6679,5131,3349,1426, -579,-2579,-4494,-6242,-7744,-8944,-9805,-10294,-10416,-10185,-9627,-8803,-7775,-6616,-5401,-4194,-3043,-1975,-1014,-160, 618,1343,2051,2777,3550,4380,5265,6183,7099,7962,8709,9269,9587,9605,9283,8621,7615,6290,4689,2864, 913,-1096,-3074,-4947,-6638,-8072,-9194,-9974,-10367,-10407,-10088,-9467,-8593,-7529,-6349,-5134,-3930,-2797,-1754,-817, 22,783,1507,2213,2950,3730,4580,5480,6403,7315,8161,8865,9380,9640,9587,9194,8447,7365,5977,4331, 2478,510,-1504,-3465,-5299,-6927,-8290,-9333,-10028,-10339,-10286,-9893,-9204,-8285,-7194,-5998,-4782,-3594,-2473,-1461, -550,265,1016,1734,2448,3190,3990,4845,5749,6676,7577,8395,9057,9510,9698,9570,9098,8272,7112,5656, 3957,2074,96,-1911,-3858,-5654,-7228,-8522,-9482,-10089,-10322,-10190,-9719,-8980,-8001,-6886,-5682,-4473,-3300,-2211, -1218,-334,464,1197,1911,2626,3378,4185,5048,5954,6875,7759,8550,9167,9561,9677,9470,8919,8016,6789, 5268,3517,1607,-384,-2377,-4289,-6042,-7560,-8776,-9653,-10174,-10312,-10107,-9580,-8777,-7767,-6622,-5414,-4212,-3055, -1994,-1027,-170,607,1325,2025,2742,3501,4324,5197,6106,7020,7882,8635,9217,9552,9598,9307,8674,7704, 6407,4837,3046,1105,-891,-2877,-4749,-6446,-7900,-9042,-9845,-10275,-10329,-10042,-9442,-8591,-7554,-6393,-5183,-3990, -2852,-1815,-883,-49,711,1423,2122,2841,3613,4441,5334,6248,7152,7992,8711,9236,9507,9480,9113,8396, 7345,5979,4354,2527,565,-1435,-3402,-5245,-6893,-8274,-9339,-10053,-10406,-10378,-10017,-9349,-8450,-7380,-6201,-4989, -3809,-2688,-1674,-760,54,800,1514,2223,2961,3751,4597,5499,6417,7316,8130,8813,9281,9491,9386,8945, 8156,7019,5583,3908,2044,72,-1923,-3869,-5667,-7257,-8564,-9547,-10180,-10442,-10335,-9896,-9168,-8211,-7110,-5913, -4702,-3532,-2429,-1429,-535,267,1009,1719,2441,3188,4001,4863,5771,6696,7581,8376,9017,9431,9566,9389, 8867,8000,6796,5302,3573,1674,-305,-2291,-4208,-5969,-7499,-8733,-9632,-10178,-10354,-10168,-9661,-8875,-7883,-6746, -5541,-4333,-3177,-2096,-1123,-250,542,1269,1981,2708,3469,4292,5169,6082,6998,7866,8633,9222,9572,9637, 9370,8760,7807,6533,4980,3201,1274,-728,-2710,-4591,-6301,-7771,-8939,-9761,-10222,-10316,-10045,-9470,-8637,-7609, -6454,-5245,-4044,-2902,-1851,-902,-47,725,1449,2165,2900,3676,4511,5399,6323,7230,8079,8800,9339,9622, 9618,9273,8576,7543,6193,4576,2766,808,-1193,-3164,-5017,-6673,-8082,-9173,-9916,-10287,-10300,-9961,-9320,-8430, -7371,-6203,-4984,-3796,-2669,-1634,-700,134,897,1622,2343,3089,3875,4732,5631,6555,7456,8277,8966,9447, 9667,9578,9159,8383,7268,5850,4177,2332,356,-1646,-3593,-5417,-7023,-8376,-9384,-10037,-10331,-10262,-9850,-9150, -8215,-7121,-5931,-4718,-3539,-2434,-1421,-509,311,1057,1781,2509,3268,4073,4933,5843,6757,7650,8449,9092, 9519,9663,9494,8989,8134,6948,5464,3740,1847,-139,-2139,-4059,-5831,-7387,-8664,-9600,-10171,-10378,-10227,-9745, -8991,-8019,-6901,-5702,-4494,-3331,-2250,-1258,-371,433,1177,1894,2623,3386,4206,5083,5991,6907,7772,8534, 9136,9498,9571,9324,8728,7795,6535,4995,3233,1308,-696,-2683,-4583,-6310,-7798,-9001,-9860,-10350,-10476,-10246, -9696,-8889,-7870,-6734,-5530,-4327,-3176,-2113,-1142,-280,513,1252,1969,2715,3490,4321,5213,6130,7044,7889, 8620,9164,9465,9469,9149,8478,7466,6136,4535,2729,788,-1212,-3186,-5052,-6727,-8148,-9271,-10044,-10453,-10501, -10184,-9571,-8707,-7654,-6493,-5280,-4074,-2939,-1891,-940,-89,695,1428,2161,2915,3712,4556,5463,6382,7290, 8120,8816,9309,9543,9472,9075,8324,7236,5845,4190,2345,390,-1618,-3565,-5391,-7016,-8372,-9410,-10099,-10416, -10376,-9995,-9314,-8398,-7311,-6127,-4914,-3721,-2601,-1574,-645,195,969,1701,2439,3207,4019,4883,5797,6722, 7615,8421,9072,9517,9682,9533,9051,8217,7059,5598,3892,2007,25,-1974,-3899,-5688,-7258,-8549,-9514,-10124, -10350,-10231,-9776,-9038,-8080,-6967,-5776,-4562,-3383,-2289,-1287,-375,448,1206,1940,2672,3453,4276,5149,6072, 6988,7866,8632,9239,9613,9714,9484,8910,7992,6754,5226,3473,1554,-442,-2441,-4347,-6089,-7605,-8822,-9711, -10238,-10390,-10189,-9671,-8876,-7880,-6751,-5549,-4344,-3180,-2110,-1129,-242,559,1311,2039,2782,3562,4398,5283, 6204,7110,7967,8697,9250,9562,9582,9274,8623,7625,6314,4724,2924,986,-1014,-2999,-4870,-6572,-8018,-9162, -9967,-10403,-10475,-10198,-9606,-8760,-7727,-6573,-5372,-4171,-3024,-1973,-1010,-148,641,1385,2120,2869,3671,4519, 5410,6334,7242,8080,8781,9285,9533,9485,9104,8381,7316,5944,4314,2478,525,-1468,-3425,-5258,-6899,-8275, -9333,-10051,-10397,-10379,-10022,-9361,-8463,-7387,-6211,-4999,-3809,-2676,-1644,-706,146,923,1663,2396,3161,3977, 4839,5748,6670,7566,8382,9048,9503,9695,9572,9109,8311,7176,5743,4057,2190,224,-1764,-3702,-5491,-7068, -8373,-9363,-9986,-10248,-10146,-9713,-8993,-8051,-6950,-5761,-4558,-3375,-2273,-1264,-353,472,1239,1971,2704,3468, 4293,5165,6071,6992,7870,8647,9261,9657,9777,9579,9036,8152,6942,5450,3713,1816,-170,-2158,-4072,-5817, -7343,-8577,-9484,-10033,-10206,-10030,-9535,-8767,-7784,-6668,-5476,-4278,-3116,-2042,-1064,-178,625,1369,2093,2829, 3598,4428,5300,6211,7120,7975,8718,9280,9614,9662,9390,8766,7805,6524,4963,3187,1272,-715,-2686,-4569, -6268,-7728,-8883,-9712,-10170,-10263,-10009,-9445,-8617,-7603,-6460,-5264,-4073,-2930,-1870,-924,-60,726,1466,2193, 2929,3720,4554,5438,6353,7258,8090,8803,9318,9593,9568,9214,8516,7488,6145,4542,2726,786,-1202,-3145, -4991,-6631,-8024,-9105,-9843,-10213,-10225,-9892,-9262,-8387,-7336,-6168,-4969,-3788,-2668,-1633,-708,143,916,1648, 2373,3122,3922,4776,5665,6576,7471,8283,8956,9417,9628,9525,9086,8314,7205,5798,4138,2287,327,-1664, -3596,-5395,-6984,-8311,-9315,-9975,-10267,-10193,-9788,-9106,-8182,-7099,-5928,-4728,-3562,-2463,-1452,-547,277,1037, 1765,2489,3248,4051,4915,5815,6724,7599,8378,9005,9409,9543,9372,8854,7993,6812,5337,3629,1742,-227, -2207,-4120,-5882,-7413,-8671,-9593,-10167,-10372,-10227,-9746,-9000,-8036,-6933,-5747,-4552,-3400,-2314,-1329,-446,362, 1110,1836,2575,3334,4159,5030,5938,6847,7710,8457,9039,9392,9463,9218,8626,7693,6448,4917,3169,1267, -707,-2674,-4550,-6259,-7729,-8905,-9744,-10232,-10349,-10117,-9571,-8771,-7759,-6628,-5433,-4239,-3097,-2036,-1067,-207, 590,1333,2059,2802,3581,4417,5308,6219,7122,7964,8687,9224,9517,9510,9187,8519,7517,6205,4620,2832, 907,-1073,-3014,-4865,-6522,-7927,-9032,-9785,-10186,-10219,-9914,-9304,-8457,-7412,-6260,-5064,-3887,-2760,-1723,-786, 56,837,1571,2296,3040,3830,4673,5567,6473,7364,8182,8858,9346,9567,9489,9080,8327,7241,5858,4218, 2392,439,-1544,-3477,-5284,-6891,-8233,-9256,-9936,-10255,-10206,-9826,-9158,-8262,-7189,-6026,-4829,-3663,-2561,-1554, -637,185,951,1673,2393,3148,3945,4799,5692,6601,7477,8267,8906,9328,9483,9330,8844,8012,6859,5414, 3721,1863,-102,-2080,-3986,-5751,-7296,-8564,-9510,-10102,-10332,-10204,-9749,-9013,-8072,-6971,-5795,-4597,-3441,-2358, -1367,-472,332,1082,1811,2542,3307,4126,4992,5897,6799,7666,8425,9022,9392,9481,9260,8697,7789,6570, 5069,3335,1449,-520,-2485,-4360,-6080,-7563,-8751,-9617,-10122,-10267,-10062,-9536,-8742,-7761,-6628,-5443,-4252,-3107, -2044,-1072,-200,587,1339,2060,2797,3576,4403,5280,6185,7083,7929,8654,9206,9510,9526,9222,8580,7597, 6302,4742,2966,1049,-927,-2880,-4724,-6400,-7826,-8949,-9736,-10161,-10223,-9947,-9359,-8525,-7504,-6361,-5172,-3988, -2867,-1824,-884,-25,750,1489,2211,2959,3744,4578,5468,6376,7263,8086,8768,9265,9508,9454,9065,8335, 7272,5917,4297,2481,539,-1439,-3381,-5192,-6816,-8179,-9229,-9931,-10273,-10254,-9906,-9257,-8373,-7319,-6163,-4973, -3797,-2688,-1667,-741,96,864,1609,2340,3101,3895,4752,5648,6560,7440,8240,8890,9328,9506,9378,8910, 8108,6972,5545,3873,2025,74,-1904,-3819,-5594,-7162,-8451,-9421,-10046,-10303,-10212,-9785,-9080,-8153,-7066,-5894, -4696,-3532,-2442,-1437,-529,301,1064,1804,2543,3323,4139,5006,5913,6824,7689,8463,9066,9453,9557,9347, 8800,7919,6708,5219,3495,1613,-350,-2324,-4217,-5952,-7467,-8691,-9582,-10125,-10304,-10135,-9645,-8878,-7910,-6804, -5617,-4424,-3276,-2192,-1212,-318,496,1250,1995,2743,3531,4363,5245,6156,7064,7901,8642,9192,9514,9545, 9255,8626,7670,6384,4836,3067,1158,-821,-2782,-4650,-6337,-7795,-8945,-9766,-10221,-10317,-10073,-9520,-8708,-7698, -6565,-5372,-4182,-3045,-1989,-1021,-144,653,1414,2160,2918,3721,4559,5451,6365,7261,8084,8785,9287,9544, 9510,9135,8426,7382,6033,4428,2619,682,-1300,-3248,-5077,-6718,-8109,-9188,-9921,-10299,-10308,-9989,-9367,-8495, -7452,-6306,-5104,-3924,-2791,-1752,-805,57,850,1599,2349,3120,3934,4789,5688,6605,7489,8288,8944,9394, 9590,9468,9024,8238,7118,5700,4041,2194,246,-1735,-3666,-5458,-7045,-8361,-9365,-10017,-10308,-10240,-9843,-9160, -8244,-7169,-6004,-4803,-3629,-2521,-1505,-589,256,1037,1785,2540,3318,4138,5003,5908,6819,7690,8459,9069, 9463,9588,9391,8864,7997,6808,5329,3620,1738,-221,-2205,-4105,-5856,-7379,-8640,-9555,-10124,-10328,-10183,-9719, -8975,-8017,-6918,-5736,-4540,-3383,-2293,-1303,-397,429,1197,1943,2693,3481,4316,5184,6091,6995,7845,8582, 9156,9488,9538,9268,8655,7714,6456,4921,3170,1267,-709,-2673,-4547,-6244,-7713,-8887,-9732,-10211,-10326,-10103, -9568,-8770,-7769,-6649,-5458,-4264,-3116,-2053,-1078,-196,620,1377,2125,2886,3682,4528,5409,6321,7223,8052, 8753,9274,9551,9532,9187,8495,7483,6154,4566,2783,861,-1119,-3066,-4902,-6550,-7951,-9052,-9809,-10208,-10244, -9941,-9342,-8494,-7460,-6320,-5125,-3941,-2811,-1766,-815,52,848,1605,2348,3121,3925,4779,5674,6581,7469, 8272,8939,9409,9611,9519,9098,8334,7244,5850,4203,2383,444,-1532,-3462,-5264,-6859,-8190,-9220,-9889,-10207, -10163,-9792,-9128,-8240,-7174,-6018,-4821,-3653,-2540,-1523,-593,250,1037,1780,2534,3303,4117,4982,5882,6784, 7654,8429,9055,9464,9604,9438,8929,8087,6926,5471,3782,1929,-32,-2001,-3908,-5669,-7209,-8472,-9422,-10010, -10242,-10125,-9683,-8964,-8032,-6943,-5771,-4577,-3419,-2333,-1331,-432,404,1169,1913,2664,3447,4271,5149,6051, 6948,7802,8545,9124,9476,9545,9300,8714,7796,6567,5058,3323,1433,-528,-2489,-4364,-6079,-7555,-8753,-9619, -10129,-10278,-10081,-9567,-8795,-7815,-6704,-5524,-4332,-3187,-2114,-1137,-249,565,1333,2075,2831,3627,4460,5347, 6253,7148,7975,8684,9214,9507,9505,9181,8518,7530,6229,4662,2886,974,-995,-2935,-4786,-6447,-7866,-8985, -9771,-10195,-10258,-9986,-9411,-8583,-7566,-6431,-5241,-4057,-2929,-1873,-916,-44,758,1515,2260,3026,3831,4678, 5572,6475,7358,8165,8835,9315,9542,9467,9067,8327,7258,5886,4266,2450,527,-1445,-3375,-5183,-6794,-8148, -9187,-9889,-10231,-10215,-9868,-9228,-8354,-7304,-6154,-4965,-3788,-2672,-1644,-711,145,930,1683,2428,3199,4015, 4872,5769,6666,7535,8320,8947,9370,9528,9380,8902,8081,6943,5516,3838,1991,46,-1922,-3826,-5595,-7149, -8434,-9397,-10019,-10268,-10179,-9758,-9062,-8143,-7065,-5896,-4712,-3543,-2448,-1440,-531,304,1082,1826,2576,3358, 4182,5056,5949,6846,7703,8455,9044,9411,9501,9284,8726,7832,6621,5135,3421,1546,-412,-2372,-4247,-5976, -7465,-8678,-9564,-10103,-10273,-10096,-9605,-8849,-7889,-6784,-5605,-4420,-3267,-2193,-1202,-311,504,1275,2025,2775, 3568,4406,5282,6185,7081,7919,8639,9175,9484,9509,9217,8580,7607,6335,4790,3032,1132,-821,-2768,-4617, -6291,-7724,-8858,-9667,-10115,-10208,-9953,-9394,-8590,-7592,-6466,-5283,-4107,-2966,-1915,-953,-78,729,1488,2237, 2995,3796,4644,5528,6430,7314,8128,8817,9305,9550,9503,9130,8417,7376,6028,4436,2632,717,-1250,-3178, -4985,-6612,-7981,-9044,-9767,-10134,-10145,-9822,-9202,-8349,-7318,-6177,-4992,-3825,-2709,-1678,-735,118,904,1659, 2408,3172,3983,4841,5729,6631,7501,8291,8937,9367,9547,9426,8973,8182,7068,5661,4014,2185,242,-1716, -3625,-5394,-6966,-8265,-9253,-9894,-10183,-10107,-9713,-9031,-8135,-7073,-5909,-4724,-3567,-2467,-1458,-538,304,1081, 1833,2582,3361,4186,5051,5949,6853,7705,8468,9069,9452,9566,9375,8838,7974,6787,5322,3628,1766,-181, -2132,-4017,-5747,-7260,-8489,-9393,-9955,-10159,-10006,-9545,-8805,-7861,-6774,-5601,-4419,-3271,-2185,-1193,-287,538, 1311,2064,2825,3609,4444,5317,6222,7115,7953,8681,9232,9550,9597,9323,8707,7764,6507,4979,3242,1353, -601,-2551,-4406,-6096,-7549,-8713,-9536,-10024,-10144,-9920,-9386,-8605,-7620,-6518,-5338,-4159,-3029,-1961,-993,-103, 707,1473,2222,2985,3775,4625,5499,6402,7280,8092,8783,9282,9529,9498,9139,8445,7421,6092,4508,2725, 806,-1154,-3087,-4912,-6552,-7944,-9043,-9797,-10194,-10234,-9945,-9360,-8518,-7508,-6378,-5195,-4030,-2908,-1861,-914, -41,755,1513,2266,3037,3842,4696,5589,6482,7351,8140,8787,9238,9425,9317,8884,8107,7015,5621,3986, 2165,231,-1731,-3648,-5429,-7017,-8352,-9363,-10029,-10346,-10308,-9935,-9287,-8399,-7351,-6201,-5016,-3852,-2751,-1723, -793,63,852,1609,2369,3143,3966,4837,5731,6630,7485,8250,8856,9256,9380,9199,8695,7845,6677,5230, 3546,1697,-251,-2206,-4097,-5838,-7368,-8629,-9558,-10141,-10375,-10260,-9821,-9099,-8174,-7100,-5935,-4752,-3592,-2508, -1498,-592,245,1022,1777,2538,3328,4155,5036,5938,6836,7672,8406,8966,9301,9360,9108,8519,7597,6363, 4851,3131,1258,-704,-2647,-4508,-6205,-7675,-8860,-9714,-10212,-10364,-10169,-9653,-8892,-7918,-6823,-5655,-4474,-3334, -2269,-1281,-387,435,1203,1956,2726,3524,4361,5243,6144,7032,7851,8550,9066,9348,9332,9009,8340,7348, 6052,4489,2727,830,-1127,-3052,-4877,-6525,-7928,-9043,-9811,-10231,-10295,-10020,-9450,-8630,-7625,-6502,-5325,-4152, -3025,-1978,-1013,-139,671,1436,2195,2966,3779,4625,5522,6420,7301,8094,8758,9228,9440,9357,8959,8218, 7153,5792,4180,2384,470,-1492,-3401,-5185,-6779,-8122,-9155,-9848,-10173,-10172,-9818,-9182,-8313,-7274,-6138,-4956, -3780,-2679,-1653,-707,147,943,1701,2456,3239,4050,4911,5808,6710,7577,8341,8955,9375,9527,9367,8890, 8070,6933,5506,3843,2007,73,-1876,-3771,-5521,-7058,-8330,-9289,-9897,-10152,-10055,-9641,-8945,-8036,-6971,-5823, -4640,-3479,-2395,-1379,-463,373,1158,1916,2673,3463,4291,5154,6060,6953,7802,8537,9112,9462,9544,9316, 8750,7859,6653,5161,3454,1591,-346,-2300,-4155,-5873,-7346,-8552,-9425,-9950,-10122,-9956,-9467,-8717,-7763,-6669, -5506,-4332,-3175,-2108,-1123,-214,616,1391,2147,2912,3712,4554,5431,6331,7221,8042,8746,9276,9572,9584, 9273,8631,7660,6383,4837,3086,1201,-748,-2683,-4511,-6174,-7592,-8727,-9527,-9972,-10058,-9816,-9267,-8468,-7477, -6363,-5195,-4021,-2890,-1839,-870,21,832,1604,2355,3124,3936,4788,5670,6570,7447,8243,8908,9383,9617, 9546,9158,8437,7393,6048,4443,2652,741,-1213,-3136,-4937,-6549,-7911,-8971,-9698,-10063,-10077,-9759,-9150,-8308, -7282,-6158,-4984,-3821,-2705,-1676,-731,135,931,1700,2450,3228,4047,4895,5784,6687,7548,8316,8940,9357, 9520,9378,8911,8114,6989,5579,3931,2106,178,-1774,-3676,-5437,-7003,-8291,-9276,-9918,-10204,-10131,-9754,-9082, -8190,-7138,-5998,-4821,-3664,-2566,-1559,-629,218,1005,1769,2525,3317,4137,5003,5902,6787,7637,8380,8958, 9326,9428,9215,8671,7799,6611,5147,3450,1598,-342,-2290,-4162,-5879,-7378,-8606,-9512,-10067,-10269,-10122,-9671, -8939,-8007,-6926,-5775,-4596,-3447,-2370,-1380,-467,371,1150,1911,2672,3461,4300,5176,6070,6957,7786,8498, 9035,9338,9363,9083,8460,7519,6262,4738,3005,1121,-824,-2754,-4604,-6269,-7717,-8870,-9700,-10168,-10288,-10071, -9552,-8772,-7796,-6697,-5533,-4359,-3231,-2168,-1196,-308,509,1285,2045,2812,3610,4463,5338,6234,7109,7913, 8593,9076,9320,9283,8917,8217,7203,5880,4297,2526,622,-1324,-3239,-5052,-6670,-8051,-9125,-9876,-10267,-10303, -10013,-9424,-8594,-7592,-6468,-5298,-4132,-3011,-1970,-1024,-143,667,1438,2199,2976,3785,4647,5532,6431,7298, 8083,8724,9156,9331,9222,8783,8005,6919,5533,3905,2091,174,-1771,-3672,-5442,-7008,-8316,-9322,-9985,-10288, -10244,-9878,-9230,-8349,-7310,-6165,-4989,-3831,-2726,-1699,-760,103,902,1673,2441,3228,4057,4926,5823,6721, 7575,8326,8923,9298,9420,9231,8717,7865,6703,5260,3587,1741,-192,-2134,-4009,-5740,-7251,-8495,-9417,-9998, -10225,-10101,-9661,-8961,-8034,-6962,-5805,-4627,-3475,-2389,-1378,-463,390,1178,1948,2721,3519,4356,5238,6132, 7024,7857,8580,9129,9451,9495,9233,8633,7705,6473,4968,3244,1376,-570,-2499,-4350,-6035,-7491,-8662,-9510, -10008,-10155,-9953,-9450,-8693,-7728,-6633,-5469,-4292,-3159,-2081,-1096,-196,639,1426,2197,2975,3781,4633,5520, 6415,7300,8113,8798,9302,9562,9536,9197,8520,7517,6216,4654,2895,998,-947,-2867,-4685,-6322,-7713,-8819, -9587,-10003,-10070,-9798,-9234,-8422,-7422,-6302,-5133,-3962,-2842,-1787,-817,66,889,1671,2438,3225,4042,4905, 5795,6691,7560,8351,8999,9447,9638,9545,9129,8374,7297,5930,4317,2517,602,-1346,-3248,-5028,-6618,-7945, -8976,-9665,-10002,-9992,-9648,-9025,-8166,-7135,-6003,-4829,-3673,-2565,-1528,-581,284,1094,1866,2642,3428,4258, 5122,6017,6907,7766,8510,9126,9513,9641,9460,8971,8133,6988,5553,3892,2057,123,-1821,-3701,-5443,-6978, -8247,-9199,-9807,-10066,-9981,-9567,-8880,-7986,-6927,-5778,-4605,-3455,-2361,-1347,-419,435,1238,2006,2782,3576, 4411,5281,6188,7063,7901,8628,9182,9516,9575,9324,8752,7847,6625,5138,3431,1567,-373,-2312,-4161,-5865, -7342,-8537,-9408,-9940,-10117,-9955,-9472,-8735,-7797,-6710,-5550,-4375,-3238,-2163,-1164,-254,581,1376,2151,2926, 3733,4572,5455,6351,7226,8037,8733,9243,9520,9505,9183,8533,7555,6263,4720,2970,1084,-860,-2783,-4602, -6262,-7673,-8795,-9591,-10034,-10133,-9900,-9354,-8560,-7581,-6470,-5307,-4138,-3009,-1952,-974,-86,735,1526,2297, 3080,3889,4746,5633,6527,7389,8176,8827,9290,9497,9415,9012,8282,7227,5879,4276,2494,586,-1364,-3271, -5069,-6674,-8021,-9070,-9788,-10157,-10171,-9859,-9255,-8416,-7407,-6279,-5114,-3950,-2839,-1804,-846,32,841,1621, 2390,3182,4004,4867,5754,6646,7494,8256,8864,9270,9409,9257,8778,7968,6836,5430,3779,1956,38,-1911, -3795,-5549,-7102,-8388,-9361,-9994,-10277,-10213,-9833,-9163,-8280,-7237,-6100,-4926,-3769,-2670,-1653,-716,144,946, 1727,2504,3300,4129,5003,5897,6786,7619,8355,8924,9273,9348,9124,8571,7690,6494,5026,3334,1484,-444, -2383,-4246,-5953,-7444,-8655,-9547,-10097,-10296,-10151,-9697,-8974,-8047,-6973,-5816,-4643,-3498,-2418,-1413,-492,355, 1149,1924,2706,3514,4354,5229,6134,7018,7829,8531,9055,9353,9362,9061,8429,7481,6215,4697,2963,1095, -842,-2765,-4591,-6255,-7685,-8820,-9640,-10101,-10216,-9995,-9474,-8702,-7734,-6639,-5472,-4305,-3169,-2109,-1130,-231, 602,1388,2168,2951,3766,4616,5502,6399,7269,8061,8727,9202,9437,9375,9001,8291,7271,5942,4368,2600, 714,-1230,-3138,-4929,-6534,-7903,-8968,-9705,-10090,-10129,-9835,-9251,-8425,-7426,-6311,-5142,-3979,-2862,-1825,-865, 15,835,1611,2390,3174,3993,4854,5742,6639,7489,8256,8881,9303,9467,9338,8884,8106,7011,5618,3996, 2194,285,-1652,-3538,-5295,-6847,-8155,-9140,-9796,-10096,-10055,-9694,-9054,-8181,-7153,-6021,-4855,-3701,-2606,-1583, -649,212,1013,1788,2562,3352,4176,5041,5926,6817,7655,8388,8970,9340,9439,9231,8706,7849,6680,5235, 3570,1739,-180,-2120,-3976,-5691,-7192,-8423,-9334,-9909,-10133,-10014,-9581,-8879,-7969,-6912,-5764,-4598,-3462,-2374, -1383,-463,377,1175,1944,2718,3510,4352,5220,6110,6988,7806,8512,9042,9350,9387,9112,8499,7573,6338, 4834,3122,1260,-664,-2587,-4418,-6083,-7526,-8687,-9525,-10014,-10155,-9965,-9468,-8711,-7763,-6681,-5531,-4362,-3237, -2172,-1193,-298,536,1323,2092,2869,3675,4518,5390,6280,7151,7946,8613,9101,9345,9306,8953,8267,7269, 5971,4412,2661,782,-1155,-3059,-4863,-6484,-7858,-8956,-9708,-10125,-10185,-9917,-9365,-8563,-7570,-6477,-5319,-4154, -3039,-1995,-1036,-153,670,1450,2218,3002,3824,4677,5560,6446,7300,8070,8707,9137,9319,9216,8785,8025, 6960,5590,3982,2199,298,-1635,-3521,-5292,-6857,-8174,-9188,-9872,-10196,-10183,-9846,-9225,-8378,-7354,-6239,-5073, -3912,-2811,-1780,-840,34,854,1630,2399,3194,4018,4891,5775,6661,7508,8248,8843,9223,9344,9165,8661, 7832,6690,5270,3614,1800,-119,-2043,-3910,-5633,-7145,-8389,-9333,-9927,-10179,-10084,-9671,-8993,-8097,-7044,-5908, -4735,-3587,-2496,-1484,-551,313,1118,1896,2677,3482,4328,5202,6089,6970,7798,8510,9064,9391,9442,9187, 8603,7703,6493,5008,3308,1465,-456,-2376,-4218,-5898,-7356,-8534,-9402,-9909,-10083,-9909,-9439,-8704,-7767,-6687, -5540,-4374,-3232,-2158,-1170,-256,591,1392,2174,2965,3774,4618,5502,6390,7259,8066,8741,9237,9502,9479, 9151,8486,7502,6224,4687,2938,1076,-864,-2769,-4582,-6220,-7622,-8736,-9524,-9960,-10054,-9807,-9277,-8494,-7516, -6425,-5279,-4111,-2988,-1936,-960,-66,762,1561,2333,3124,3944,4799,5686,6567,7422,8209,8843,9283,9487, 9396,8983,8243,7188,5842,4252,2472,578,-1358,-3245,-5028,-6613,-7949,-8985,-9696,-10051,-10061,-9750,-9149,-8317, -7312,-6198,-5034,-3873,-2763,-1728,-773,106,926,1716,2496,3288,4125,4989,5878,6762,7606,8359,8952,9346, 9484,9317,8831,8019,6891,5486,3849,2036,132,-1800,-3669,-5408,-6941,-8207,-9166,-9795,-10062,-10002,-9609,-8956, -8076,-7039,-5908,-4747,-3589,-2492,-1473,-542,323,1138,1930,2699,3512,4342,5220,6108,6984,7811,8536,9087, 9424,9492,9251,8689,7795,6603,5135,3449,1602,-314,-2233,-4081,-5781,-7254,-8454,-9336,-9889,-10084,-9943,-9490, -8776,-7860,-6793,-5655,-4491,-3349,-2274,-1274,-358,487,1293,2073,2847,3666,4508,5383,6270,7139,7940,8625, 9124,9404,9395,9079,8439,7469,6209,4684,2946,1084,-845,-2759,-4575,-6231,-7650,-8782,-9599,-10057,-10172,-9962, -9445,-8688,-7734,-6647,-5498,-4341,-3211,-2156,-1171,-277,556,1355,2135,2921,3738,4592,5476,6360,7215,7998, 8647,9096,9310,9238,8855,8135,7093,5764,4191,2420,535,-1400,-3292,-5081,-6687,-8040,-9102,-9834,-10223,-10252, -9971,-9391,-8584,-7587,-6482,-5321,-4168,-3046,-2000,-1038,-147,680,1474,2262,3056,3890,4753,5643,6532,7378, 8139,8747,9145,9301,9158,8694,7903,6794,5407,3784,1984,85,-1840,-3718,-5465,-7014,-8306,-9289,-9941,-10245, -10199,-9834,-9199,-8339,-7311,-6187,-5021,-3870,-2765,-1737,-781,96,922,1713,2501,3304,4153,5025,5925,6806, 7637,8365,8931,9278,9364,9153,8610,7742,6566,5116,3448,1616,-300,-2219,-4074,-5781,-7274,-8502,-9412,-9979, -10205,-10087,-9659,-8964,-8062,-7008,-5867,-4699,-3556,-2464,-1454,-514,346,1166,1956,2749,3565,4417,5294,6190, 7062,7868,8563,9084,9378,9392,9093,8479,7539,6288,4788,3081,1222,-704,-2615,-4436,-6102,-7542,-8696,-9524, -10015,-10161,-9967,-9476,-8728,-7786,-6709,-5554,-4389,-3254,-2177,-1180,-264,587,1396,2187,2987,3806,4666,5553, 6442,7308,8090,8748,9217,9439,9392,9022,8328,7312,6001,4446,2697,815,-1112,-3010,-4804,-6417,-7794,-8875, -9629,-10043,-10103,-9834,-9278,-8478,-7497,-6396,-5235,-4073,-2954,-1891,-916,-9,827,1629,2423,3222,4053,4923, 5811,6701,7551,8303,8926,9340,9507,9383,8940,8171,7080,5710,4107,2321,421,-1502,-3388,-5137,-6699,-8012, -9018,-9689,-10016,-9995,-9659,-9039,-8199,-7179,-6065,-4894,-3738,-2629,-1582,-628,258,1086,1889,2677,3487,4316, 5198,6086,6974,7807,8536,9112,9474,9574,9380,8857,8018,6867,5435,3778,1967,58,-1866,-3716,-5431,-6939, -8180,-9112,-9702,-9949,-9852,-9446,-8770,-7882,-6840,-5711,-4543,-3402,-2307,-1292,-349,519,1337,2125,2921,3731, 4573,5452,6340,7215,8023,8723,9255,9559,9582,9318,8717,7802,6585,5091,3401,1552,-370,-2276,-4105,-5771, -7222,-8394,-9251,-9764,-9932,-9760,-9289,-8562,-7631,-6568,-5428,-4261,-3132,-2061,-1065,-150,699,1503,2291,3082, 3895,4749,5631,6511,7374,8160,8820,9304,9546,9503,9162,8485,7500,6207,4669,2931,1064,-862,-2757,-4553, -6175,-7567,-8669,-9447,-9875,-9963,-9721,-9191,-8411,-7450,-6365,-5217,-4068,-2952,-1899,-921,-29,805,1603,2383, 3180,4003,4854,5737,6617,7466,8227,8851,9279,9458,9349,8934,8186,7134,5775,4183,2415,527,-1396,-3267, -5035,-6609,-7931,-8964,-9655,-10007,-10023,-9704,-9111,-8285,-7293,-6190,-5038,-3884,-2781,-1752,-799,83,904,1690, 2474,3273,4099,4958,5847,6722,7552,8288,8868,9247,9367,9184,8695,7879,6749,5345,3704,1910,6,-1910, -3770,-5487,-7007,-8265,-9219,-9832,-10105,-10037,-9651,-9005,-8129,-7105,-5989,-4834,-3693,-2606,-1593,-655,211,1022, 1808,2591,3399,4233,5100,5984,6858,7668,8374,8917,9235,9287,9040,8471,7577,6388,4919,3241,1417,-493, -2405,-4231,-5910,-7372,-8567,-9445,-9975,-10166,-10028,-9574,-8861,-7956,-6896,-5769,-4614,-3478,-2414,-1412,-490,364, 1166,1955,2741,3551,4395,5276,6165,7029,7814,8485,8982,9245,9228,8908,8264,7306,6047,4526,2813,962, -947,-2845,-4638,-6274,-7673,-8795,-9592,-10048,-10154,-9939,-9423,-8657,-7710,-6629,-5494,-4333,-3206,-2160,-1170,-264, 577,1379,2162,2955,3784,4637,5518,6405,7249,8020,8654,9097,9300,9220,8824,8104,7076,5754,4181,2431, 561,-1355,-3237,-5000,-6586,-7924,-8972,-9695,-10069,-10099,-9823,-9235,-8426,-7450,-6346,-5205,-4047,-2935,-1893,-930, -33,796,1594,2376,3183,4016,4875,5760,6646,7480,8221,8816,9212,9349,9189,8715,7925,6816,5437,3813, 2028,135,-1780,-3642,-5364,-6901,-8174,-9153,-9803,-10090,-10047,-9693,-9054,-8201,-7186,-6073,-4921,-3771,-2671,-1651, -698,185,1007,1802,2594,3407,4250,5119,6006,6885,7704,8418,8965,9304,9378,9149,8601,7734,6554,5114, 3450,1627,-274,-2184,-4018,-5706,-7187,-8396,-9302,-9863,-10078,-9956,-9535,-8845,-7947,-6903,-5773,-4620,-3479,-2396, -1386,-450,418,1237,2032,2830,3650,4500,5379,6270,7138,7937,8614,9114,9390,9397,9090,8463,7520,6275, 4770,3060,1212,-700,-2604,-4417,-6058,-7483,-8621,-9451,-9935,-10074,-9881,-9397,-8647,-7716,-6645,-5511,-4360,-3228, -2160,-1173,-256,599,1411,2202,3003,3831,4692,5568,6456,7310,8084,8724,9173,9387,9318,8935,8230,7211, 5899,4335,2583,711,-1205,-3091,-4875,-6471,-7840,-8909,-9658,-10067,-10124,-9864,-9319,-8527,-7551,-6463,-5320,-4175, -3055,-1996,-1031,-126,715,1521,2317,3119,3951,4819,5701,6582,7426,8170,8770,9169,9318,9177,8716,7937, 6853,5479,3874,2085,198,-1718,-3584,-5329,-6878,-8175,-9171,-9838,-10166,-10143,-9808,-9202,-8357,-7356,-6245,-5095, -3940,-2837,-1797,-838,51,890,1702,2493,3303,4153,5027,5916,6795,7617,8336,8903,9246,9333,9127,8595, 7744,6592,5158,3514,1701,-202,-2100,-3944,-5647,-7142,-8366,-9288,-9874,-10114,-10014,-9616,-8945,-8060,-7022,-5896, -4737,-3596,-2506,-1482,-541,343,1164,1972,2775,3594,4449,5331,6215,7086,7889,8577,9093,9381,9400,9121, 8505,7591,6364,4881,3183,1350,-559,-2459,-4275,-5935,-7366,-8529,-9377,-9885,-10050,-9883,-9412,-8687,-7765,-6709, -5569,-4418,-3282,-2212,-1212,-292,580,1394,2190,2996,3818,4674,5552,6432,7293,8068,8723,9181,9406,9356, 8996,8314,7322,6031,4488,2755,891,-1018,-2904,-4692,-6303,-7673,-8765,-9539,-9966,-10057,-9812,-9284,-8513,-7553, -6468,-5325,-4170,-3058,-1997,-1014,-104,748,1557,2356,3160,3991,4856,5735,6614,7453,8208,8822,9232,9395, 9278,8846,8091,7027,5684,4088,2323,444,-1467,-3337,-5082,-6645,-7958,-8976,-9666,-10013,-10019,-9708,-9116,-8296, -7299,-6202,-5049,-3897,-2795,-1749,-787,105,951,1756,2555,3364,4201,5066,5958,6827,7654,8375,8944,9306, 9405,9218,8708,7883,6749,5341,3714,1912,21,-1885,-3735,-5444,-6950,-8196,-9142,-9754,-10024,-9954,-9572,-8923, -8062,-7034,-5920,-4768,-3626,-2538,-1508,-562,314,1148,1949,2752,3565,4406,5283,6168,7033,7841,8532,9050, 9357,9391,9131,8544,7643,6442,4974,3292,1467,-434,-2338,-4156,-5827,-7279,-8462,-9328,-9863,-10059,-9915,-9468, -8766,-7862,-6814,-5689,-4535,-3413,-2326,-1321,-392,472,1296,2094,2895,3715,4566,5448,6333,7179,7965,8620, 9102,9342,9310,8972,8315,7340,6069,4553,2833,986,-927,-2813,-4604,-6232,-7622,-8727,-9527,-9977,-10089,-9871, -9365,-8611,-7667,-6595,-5456,-4304,-3188,-2127,-1133,-220,633,1451,2246,3064,3885,4750,5633,6516,7353,8114, 8732,9161,9348,9243,8838,8104,7057,5734,4164,2406,540,-1371,-3241,-4997,-6571,-7897,-8937,-9646,-10017,-10056, -9765,-9191,-8393,-7412,-6313,-5166,-4018,-2913,-1867,-895,9,855,1669,2466,3282,4119,4989,5874,6751,7573, 8308,8886,9260,9380,9205,8722,7920,6796,5415,3792,2008,126,-1781,-3635,-5351,-6870,-8136,-9101,-9733,-10025, -9985,-9625,-8994,-8149,-7136,-6024,-4875,-3729,-2642,-1610,-652,235,1071,1878,2679,3500,4347,5210,6100,6968, 7772,8478,9008,9328,9379,9133,8574,7696,6506,5064,3403,1590,-309,-2214,-4032,-5708,-7178,-8371,-9260,-9818, -10031,-9913,-9486,-8800,-7911,-6874,-5751,-4595,-3461,-2379,-1373,-433,442,1263,2076,2877,3700,4547,5424,6306, 7168,7945,8616,9102,9359,9344,9025,8395,7443,6187,4688,2986,1148,-769,-2648,-4447,-6072,-7485,-8611,-9424, -9892,-10031,-9840,-9346,-8610,-7682,-6617,-5484,-4331,-3210,-2141,-1152,-226,630,1447,2253,3057,3890,4747,5624, 6501,7342,8102,8733,9168,9372,9286,8886,8180,7158,5845,4296,2557,696,-1210,-3081,-4845,-6425,-7776,-8832, -9566,-9961,-10016,-9751,-9200,-8410,-7449,-6362,-5220,-4073,-2959,-1918,-940,-33,813,1625,2429,3237,4072,4931, 5811,6686,7516,8248,8835,9220,9357,9206,8734,7953,6860,5489,3887,2117,242,-1662,-3516,-5244,-6776,-8059, -9047,-9700,-10020,-10005,-9673,-9064,-8227,-7235,-6133,-4989,-3846,-2742,-1718,-764,131,961,1774,2577,3389,4231, 5089,5970,6835,7643,8347,8895,9223,9298,9069,8527,7671,6517,5080,3443,1636,-247,-2148,-3977,-5669,-7144, -8370,-9278,-9854,-10092,-9998,-9600,-8933,-8057,-7036,-5915,-4771,-3635,-2553,-1540,-602,278,1102,1910,2714,3532, 4379,5249,6129,6984,7771,8443,8941,9217,9227,8928,8317,7387,6167,4683,3003,1173,-719,-2611,-4409,-6047, -7467,-8616,-9449,-9948,-10102,-9934,-9475,-8752,-7833,-6780,-5653,-4502,-3375,-2310,-1301,-381,489,1309,2113,2923, 3749,4609,5483,6362,7210,7977,8613,9070,9288,9228,8858,8169,7171,5889,4354,2633,788,-1106,-2976,-4748, -6339,-7699,-8773,-9528,-9942,-10021,-9781,-9251,-8483,-7520,-6453,-5310,-4163,-3042,-1989,-1007,-94,762,1578,2385, 3208,4044,4904,5785,6660,7499,8240,8830,9234,9385,9254,8808,8049,6983,5634,4049,2294,430,-1468,-3318, -5055,-6599,-7899,-8905,-9578,-9921,-9920,-9613,-9023,-8205,-7214,-6129,-4981,-3840,-2733,-1695,-731,170,1013,1822, 2630,3449,4291,5161,6035,6905,7721,8431,8987,9334,9420,9217,8695,7859,6728,5312,3682,1893,12,-1876, -3712,-5415,-6905,-8139,-9072,-9669,-9933,-9860,-9480,-8833,-7980,-6964,-5855,-4708,-3578,-2485,-1470,-518,364,1200, 2012,2823,3643,4491,5365,6243,7098,7902,8572,9085,9375,9401,9127,8526,7621,6418,4947,3276,1465,-432, -2315,-4124,-5775,-7213,-8374,-9233,-9755,-9936,-9784,-9346,-8640,-7740,-6696,-5580,-4423,-3300,-2221,-1216,-285,590, 1426,2230,3046,3874,4737,5607,6487,7339,8111,8754,9216,9446,9404,9055,8383,7402,6136,4617,2904,1062, -833,-2703,-4485,-6097,-7472,-8572,-9353,-9796,-9903,-9680,-9172,-8426,-7493,-6424,-5291,-4142,-3027,-1966,-976,-57, 805,1631,2438,3254,4090,4952,5836,6708,7541,8283,8889,9304,9468,9348,8925,8176,7127,5797,4220,2471, 609,-1290,-3153,-4899,-6462,-7777,-8809,-9521,-9889,-9917,-9629,-9064,-8272,-7298,-6210,-5080,-3932,-2831,-1779,-807, 94,949,1763,2571,3388,4233,5101,5975,6841,7657,8374,8930,9292,9392,9203,8702,7877,6753,5359,3742, 1957,81,-1818,-3663,-5373,-6889,-8142,-9103,-9731,-10018,-9979,-9624,-9001,-8164,-7159,-6057,-4914,-3775,-2678,-1650, -693,202,1047,1860,2669,3495,4343,5216,6095,6953,7753,8436,8946,9250,9288,9024,8449,7554,6364,4916, 3256,1438,-451,-2338,-4158,-5830,-7286,-8472,-9356,-9907,-10121,-10003,-9579,-8901,-8024,-6989,-5870,-4726,-3592,-2506, -1490,-549,328,1171,1990,2799,3632,4488,5374,6249,7093,7868,8521,8990,9236,9205,8873,8218,7258,6010, 4501,2803,965,-930,-2803,-4596,-6220,-7623,-8737,-9546,-10013,-10149,-9954,-9469,-8739,-7814,-6756,-5623,-4480,-3350, -2284,-1282,-351,516,1352,2165,2982,3829,4683,5571,6446,7282,8035,8648,9063,9248,9155,8750,8026,6989, 5675,4125,2392,536,-1358,-3215,-4972,-6545,-7890,-8934,-9661,-10051,-10104,-9841,-9292,-8513,-7554,-6474,-5335,-4194, -3076,-2022,-1028,-122,741,1563,2386,3204,4053,4916,5805,6672,7492,8213,8790,9151,9277,9111,8636,7839, 6736,5368,3769,1998,130,-1759,-3600,-5312,-6839,-8110,-9082,-9734,-10047,-10020,-9688,-9079,-8257,-7259,-6162,-5023, -3883,-2779,-1741,-772,124,975,1796,2613,3432,4286,5153,6041,6898,7690,8393,8918,9229,9288,9053,8498, 7634,6465,5037,3398,1595,-284,-2173,-3982,-5662,-7130,-8336,-9232,-9809,-10041,-9940,-9540,-8879,-8012,-6994,-5884, -4736,-3611,-2523,-1504,-559,322,1167,1985,2792,3622,4479,5357,6235,7078,7858,8519,9006,9256,9246,8936, 8314,7368,6138,4654,2974,1150,-737,-2611,-4400,-6030,-7444,-8576,-9399,-9895,-10049,-9872,-9410,-8698,-7788,-6742, -5617,-4480,-3359,-2284,-1289,-346,522,1345,2161,2979,3815,4675,5550,6433,7266,8025,8650,9083,9278,9204, 8820,8129,7116,5823,4286,2572,723,-1162,-3018,-4771,-6356,-7707,-8773,-9515,-9933,-10009,-9764,-9234,-8469,-7524, -6457,-5322,-4184,-3070,-2015,-1026,-105,751,1578,2393,3213,4046,4918,5795,6670,7492,8221,8806,9190,9328, 9185,8730,7960,6883,5523,3945,2194,330,-1557,-3394,-5118,-6651,-7939,-8936,-9602,-9942,-9940,-9625,-9042,-8232, -7254,-6166,-5029,-3895,-2798,-1747,-782,124,970,1793,2607,3431,4274,5150,6026,6891,7693,8393,8932,9262, 9333,9118,8588,7743,6593,5179,3556,1774,-107,-1989,-3809,-5490,-6978,-8208,-9125,-9720,-9977,-9903,-9523,-8884, -8031,-7032,-5929,-4788,-3662,-2568,-1543,-587,302,1142,1963,2776,3608,4460,5338,6213,7065,7843,8512,9007, 9282,9282,9002,8394,7476,6265,4796,3129,1317,-572,-2442,-4238,-5880,-7304,-8469,-9315,-9827,-10010,-9868,-9423, -8727,-7832,-6805,-5688,-4538,-3418,-2338,-1325,-388,495,1327,2148,2967,3810,4666,5548,6420,7260,8019,8656, 9106,9316,9257,8896,8218,7234,5962,4445,2732,899,-990,-2845,-4612,-6206,-7573,-8666,-9432,-9871,-9979,-9756, -9247,-8503,-7569,-6515,-5383,-4237,-3123,-2054,-1060,-132,746,1573,2390,3218,4060,4930,5811,6682,7508,8238, 8833,9231,9382,9254,8820,8062,7007,5675,4102,2364,512,-1384,-3223,-4955,-6510,-7808,-8831,-9532,-9883,-9913, -9626,-9060,-8264,-7305,-6222,-5089,-3951,-2841,-1794,-809,103,963,1794,2610,3445,4283,5158,6037,6899,7705, 8404,8953,9298,9384,9180,8669,7846,6718,5325,3702,1929,61,-1828,-3653,-5348,-6845,-8095,-9040,-9657,-9940, -9895,-9543,-8921,-8088,-7093,-5997,-4861,-3727,-2631,-1601,-635,266,1113,1929,2749,3576,4426,5299,6179,7030, 7817,8485,8987,9269,9291,9013,8433,7526,6335,4880,3221,1416,-467,-2348,-4147,-5799,-7245,-8419,-9300,-9838, -10037,-9928,-9506,-8830,-7952,-6928,-5826,-4683,-3561,-2477,-1457,-514,373,1209,2035,2852,3691,4539,5421,6298, 7132,7896,8529,8984,9214,9166,8818,8163,7189,5939,4429,2732,908,-978,-2850,-4615,-6223,-7600,-8717,-9509, -9970,-10098,-9906,-9422,-8690,-7770,-6731,-5608,-4472,-3351,-2287,-1283,-348,529,1366,2180,3007,3850,4712,5592, 6474,7294,8036,8626,9035,9208,9095,8674,7945,6904,5596,4038,2309,466,-1407,-3265,-4993,-6559,-7877,-8915, -9631,-10015,-10063,-9799,-9249,-8470,-7513,-6441,-5311,-4175,-3062,-2015,-1026,-109,758,1587,2405,3241,4089,4960, 5837,6703,7514,8226,8781,9137,9245,9057,8569,7768,6663,5293,3688,1923,67,-1814,-3649,-5337,-6852,-8108, -9077,-9712,-10015,-9989,-9660,-9056,-8232,-7244,-6162,-5026,-3886,-2787,-1756,-787,120,974,1799,2622,3452,4313, 5176,6061,6915,7707,8385,8897,9202,9243,8992,8431,7552,6386,4957,3307,1522,-348,-2225,-4029,-5686,-7141, -8333,-9226,-9790,-10009,-9912,-9514,-8854,-7985,-6969,-5867,-4732,-3600,-2511,-1497,-533,351,1209,2029,2848,3691, 4550,5420,6304,7149,7924,8572,9033,9284,9260,8933,8300,7362,6129,4646,2964,1145,-729,-2589,-4361,-5977, -7370,-8492,-9310,-9792,-9940,-9762,-9303,-8584,-7681,-6637,-5521,-4382,-3254,-2181,-1178,-229,647,1496,2317,3145, 3985,4856,5737,6606,7436,8189,8797,9213,9401,9315,8916,8212,7202,5907,4379,2663,825,-1049,-2898,-4637, -6204,-7538,-8590,-9333,-9741,-9805,-9561,-9034,-8268,-7335,-6267,-5141,-4004,-2900,-1829,-845,86,954,1799,2615, 3450,4291,5165,6040,6912,7723,8446,9007,9375,9500,9344,8870,8088,7011,5659,4079,2330,476,-1396,-3230, -4935,-6456,-7729,-8710,-9379,-9702,-9701,-9391,-8813,-8003,-7032,-5948,-4825,-3682,-2586,-1544,-575,337,1197,2033, 2845,3675,4525,5400,6273,7125,7919,8602,9125,9436,9498,9269,8719,7866,6720,5308,3682,1896,38,-1837, -3643,-5316,-6788,-8001,-8914,-9503,-9757,-9677,-9298,-8663,-7816,-6820,-5721,-4593,-3467,-2384,-1360,-408,489,1338, 2162,2978,3811,4669,5538,6407,7257,8025,8668,9152,9402,9391,9090,8469,7547,6330,4864,3201,1381,-490, -2357,-4137,-5768,-7179,-8323,-9162,-9682,-9848,-9701,-9271,-8578,-7689,-6668,-5560,-4426,-3310,-2239,-1236,-301,586, 1424,2245,3064,3899,4757,5633,6500,7330,8074,8687,9112,9308,9234,8859,8162,7167,5890,4375,2661,831, -1048,-2896,-4654,-6238,-7590,-8668,-9434,-9868,-9972,-9753,-9255,-8514,-7590,-6546,-5425,-4296,-3187,-2130,-1140,-211, 666,1499,2317,3140,3984,4845,5721,6579,7395,8117,8692,9069,9206,9060,8609,7844,6780,5445,3879,2135, 281,-1593,-3429,-5148,-6681,-7973,-8983,-9671,-10029,-10051,-9760,-9202,-8413,-7459,-6392,-5265,-4131,-3031,-1988,-1013, -96,765,1603,2425,3254,4107,4974,5848,6697,7505,8189,8726,9052,9120,8909,8387,7548,6420,5021,3415, 1641,-217,-2092,-3903,-5588,-7071,-8299,-9232,-9845,-10123,-10068,-9714,-9098,-8269,-7275,-6187,-5053,-3928,-2837,-1805, -842,60,924,1747,2578,3409,4267,5143,6019,6867,7647,8303,8800,9065,9068,8787,8193,7285,6098,4646, 2991,1194,-676,-2542,-4328,-5967,-7391,-8551,-9413,-9940,-10141,-10016,-9590,-8917,-8046,-7020,-5920,-4782,-3660,-2581, -1556,-601,289,1144,1976,2806,3646,4513,5388,6263,7096,7857,8477,8927,9139,9080,8723,8062,7087,5836, 4333,2643,821,-1046,-2901,-4648,-6252,-7609,-8706,-9486,-9940,-10054,-9857,-9369,-8642,-7733,-6681,-5569,-4428,-3316, -2246,-1241,-301,583,1439,2264,3092,3945,4820,5698,6565,7387,8122,8707,9102,9252,9130,8704,7971,6916, 5608,4065,2341,505,-1368,-3203,-4924,-6472,-7779,-8799,-9506,-9880,-9928,-9665,-9117,-8342,-7393,-6328,-5201,-4067, -2964,-1908,-918,2,879,1722,2552,3384,4235,5101,5983,6840,7642,8341,8890,9229,9319,9118,8627,7812, 6706,5338,3741,1985,132,-1740,-3553,-5240,-6735,-7975,-8924,-9560,-9854,-9835,-9502,-8892,-8077,-7100,-6019,-4890, -3753,-2660,-1623,-653,255,1119,1961,2785,3626,4476,5351,6226,7075,7853,8521,9025,9309,9331,9064,8499, 7616,6439,5010,3370,1591,-276,-2140,-3930,-5573,-7022,-8199,-9079,-9630,-9853,-9752,-9354,-8696,-7840,-6832,-5733, -4594,-3473,-2392,-1368,-411,483,1344,2171,3002,3843,4701,5578,6452,7292,8044,8679,9134,9365,9322,8984, 8340,7391,6152,4671,2998,1188,-683,-2537,-4292,-5900,-7287,-8398,-9209,-9678,-9830,-9657,-9197,-8487,-7589,-6557, -5448,-4316,-3202,-2132,-1130,-180,701,1546,2373,3209,4048,4908,5784,6650,7472,8203,8798,9205,9371,9255, 8845,8129,7098,5807,4272,2551,724,-1152,-2993,-4723,-6287,-7616,-8660,-9395,-9794,-9867,-9621,-9101,-8348,-7417, -6362,-5243,-4115,-3008,-1959,-969,-38,828,1676,2503,3333,4181,5045,5917,6783,7583,8286,8837,9191,9293, 9110,8626,7834,6745,5378,3796,2044,197,-1678,-3504,-5199,-6710,-7978,-8950,-9610,-9929,-9929,-9618,-9038,-8235, -7272,-6194,-5066,-3933,-2840,-1802,-826,92,955,1800,2627,3470,4320,5195,6063,6928,7710,8386,8901,9202, 9238,8986,8432,7570,6412,4987,3364,1590,-272,-2147,-3945,-5601,-7060,-8260,-9161,-9737,-9983,-9905,-9527,-8881, -8034,-7039,-5945,-4811,-3682,-2590,-1568,-599,306,1160,2002,2838,3682,4547,5422,6293,7135,7902,8539,9010, 9253,9232,8906,8272,7337,6117,4643,2977,1162,-700,-2564,-4342,-5956,-7366,-8498,-9327,-9822,-9995,-9839,-9398, -8705,-7812,-6789,-5678,-4546,-3420,-2345,-1338,-386,508,1355,2196,3030,3879,4749,5626,6495,7324,8060,8663, 9087,9269,9173,8776,8076,7063,5777,4247,2541,713,-1157,-3009,-4754,-6325,-7675,-8748,-9492,-9920,-10010,-9792, -9286,-8539,-7614,-6566,-5448,-4308,-3196,-2132,-1136,-197,687,1531,2370,3206,4063,4930,5807,6671,7486,8194, 8761,9128,9249,9088,8616,7840,6761,5419,3841,2100,250,-1620,-3454,-5166,-6689,-7971,-8973,-9646,-9991,-10007, -9712,-9149,-8353,-7389,-6322,-5188,-4055,-2948,-1897,-914,10,887,1729,2568,3406,4267,5142,6025,6877,7669, 8351,8874,9193,9244,9016,8476,7626,6484,5083,3462,1691,-170,-2037,-3847,-5519,-6990,-8209,-9137,-9732,-9999, -9939,-9578,-8955,-8116,-7125,-6041,-4901,-3766,-2675,-1642,-669,240,1104,1940,2780,3624,4483,5361,6235,7076, 7857,8501,8978,9236,9226,8926,8311,7396,6189,4720,3060,1262,-610,-2464,-4252,-5882,-7302,-8449,-9300,-9825, -10009,-9875,-9449,-8777,-7893,-6873,-5776,-4629,-3512,-2426,-1406,-460,437,1297,2133,2963,3812,4680,5557,6424, 7257,8006,8613,9045,9245,9172,8798,8113,7123,5855,4343,2646,827,-1039,-2894,-4647,-6229,-7584,-8669,-9448, -9880,-9992,-9784,-9295,-8570,-7644,-6597,-5477,-4346,-3227,-2160,-1163,-225,670,1514,2344,3180,4037,4902,5783, 6642,7464,8191,8766,9144,9289,9144,8697,7942,6886,5565,4001,2266,434,-1439,-3271,-4994,-6523,-7816,-8834, -9529,-9885,-9918,-9641,-9088,-8311,-7355,-6286,-5166,-4022,-2916,-1868,-882,34,912,1755,2578,3421,4274,5149, 6023,6882,7677,8375,8904,9234,9310,9103,8588,7756,6635,5252,3646,1881,31,-1836,-3646,-5329,-6812,-8045, -8983,-9602,-9876,-9836,-9489,-8885,-8057,-7076,-5987,-4863,-3725,-2635,-1601,-634,273,1134,1971,2795,3637,4488, 5366,6241,7083,7865,8528,9014,9285,9304,9027,8439,7540,6361,4925,3267,1485,-376,-2235,-4023,-5662,-7094, -8252,-9121,-9658,-9856,-9739,-9327,-8658,-7789,-6774,-5679,-4541,-3415,-2337,-1320,-367,520,1378,2209,3038,3879, 4740,5620,6485,7318,8071,8703,9143,9365,9314,8962,8302,7335,6088,4600,2915,1101,-761,-2607,-4367,-5958, -7329,-8425,-9214,-9676,-9796,-9612,-9129,-8416,-7504,-6461,-5354,-4217,-3103,-2036,-1040,-105,774,1613,2443,3267, 4112,4976,5853,6715,7532,8262,8848,9245,9405,9282,8862,8126,7096,5786,4246,2519,690,-1179,-3007,-4728, -6282,-7593,-8618,-9334,-9712,-9766,-9505,-8972,-8211,-7266,-6205,-5091,-3964,-2860,-1816,-832,82,949,1784,2602, 3425,4275,5139,6008,6861,7660,8358,8898,9241,9335,9142,8647,7840,6737,5366,3776,2022,178,-1695,-3509, -5192,-6695,-7950,-8900,-9539,-9841,-9818,-9495,-8903,-8098,-7126,-6047,-4926,-3802,-2706,-1679,-712,187,1047,1874, 2692,3520,4375,5240,6111,6948,7731,8402,8905,9189,9225,8961,8394,7515,6348,4921,3289,1504,-347,-2209, -4000,-5647,-7085,-8277,-9159,-9714,-9945,-9841,-9454,-8804,-7944,-6943,-5844,-4718,-3604,-2516,-1501,-548,340,1189, 2021,2842,3674,4537,5407,6280,7113,7872,8508,8968,9202,9166,8837,8199,7255,6021,4548,2881,1068,-787, -2639,-4402,-6009,-7399,-8508,-9314,-9801,-9944,-9773,-9315,-8609,-7719,-6684,-5577,-4450,-3336,-2268,-1264,-323,552, 1394,2223,3049,3889,4752,5627,6497,7311,8048,8649,9059,9225,9135,8731,8022,6996,5708,4175,2469,637, -1223,-3062,-4797,-6361,-7690,-8740,-9470,-9882,-9951,-9707,-9189,-8439,-7510,-6453,-5336,-4204,-3104,-2050,-1062,-140, 724,1565,2391,3217,4063,4926,5805,6663,7469,8175,8734,9094,9199,9031,8553,7769,6682,5325,3749,2013, 156,-1712,-3531,-5228,-6742,-8010,-8990,-9644,-9980,-9971,-9661,-9084,-8288,-7321,-6247,-5121,-3993,-2898,-1857,-882, 26,890,1721,2548,3381,4235,5105,5982,6833,7615,8293,8817,9117,9159,8926,8373,7518,6363,4957,3330, 1562,-306,-2161,-3964,-5619,-7084,-8282,-9187,-9762,-10018,-9932,-9555,-8918,-8073,-7072,-5982,-4845,-3723,-2636,-1605, -641,255,1114,1941,2776,3616,4476,5359,6231,7075,7845,8490,8967,9217,9201,8896,8268,7346,6126,4662, 2994,1198,-670,-2525,-4296,-5912,-7318,-8450,-9286,-9782,-9958,-9802,-9357,-8666,-7785,-6754,-5647,-4508,-3390,-2316, -1303,-352,535,1383,2215,3050,3888,4762,5641,6511,7337,8082,8694,9119,9308,9223,8844,8145,7143,5860, 4342,2637,813,-1060,-2903,-4646,-6220,-7571,-8641,-9396,-9819,-9918,-9692,-9188,-8446,-7522,-6476,-5363,-4222,-3117, -2052,-1052,-127,755,1593,2426,3268,4115,4980,5857,6721,7533,8249,8818,9186,9315,9163,8702,7924,6861, 5516,3939,2203,358,-1521,-3346,-5057,-6588,-7877,-8878,-9554,-9900,-9925,-9634,-9068,-8280,-7326,-6255,-5128,-3993, -2899,-1845,-862,51,917,1757,2590,3427,4277,5152,6033,6886,7676,8362,8891,9206,9270,9044,8514,7670, 6539,5132,3513,1743,-115,-1987,-3789,-5470,-6941,-8166,-9097,-9702,-9970,-9918,-9554,-8936,-8098,-7112,-6018,-4891, -3755,-2669,-1630,-664,242,1101,1941,2770,3613,4471,5346,6225,7074,7848,8499,8979,9242,9244,8948,8346, 7437,6229,4774,3114,1322,-542,-2412,-4193,-5828,-7251,-8407,-9256,-9783,-9976,-9842,-9417,-8745,-7861,-6846,-5742, -4603,-3476,-2404,-1378,-426,472,1320,2155,2991,3836,4696,5579,6456,7286,8035,8655,9087,9294,9227,8855, 8180,7196,5934,4424,2725,903,-969,-2823,-4575,-6162,-7527,-8619,-9399,-9848,-9957,-9765,-9276,-8544,-7635,-6588, -5475,-4332,-3216,-2159,-1146,-211,671,1518,2349,3174,4028,4897,5774,6638,7457,8183,8757,9143,9290,9148, 8710,7961,6910,5580,4020,2288,450,-1430,-3267,-4985,-6530,-7833,-8855,-9553,-9924,-9966,-9698,-9146,-8372,-7413, -6358,-5231,-4093,-2987,-1938,-950,-32,846,1685,2516,3348,4212,5077,5960,6822,7620,8315,8848,9184,9265, 9059,8544,7732,6606,5224,3617,1854,7,-1867,-3682,-5367,-6853,-8097,-9043,-9669,-9956,-9916,-9578,-8970,-8146, -7163,-6078,-4946,-3812,-2715,-1684,-712,200,1065,1896,2726,3563,4426,5297,6178,7023,7811,8471,8964,9248, 9266,8983,8399,7511,6335,4895,3242,1449,-409,-2274,-4059,-5704,-7141,-8314,-9191,-9732,-9940,-9831,-9426,-8760, -7894,-6882,-5784,-4650,-3518,-2440,-1421,-462,432,1288,2119,2948,3792,4655,5530,6406,7242,8003,8631,9079, 9303,9258,8908,8249,7295,6041,4551,2865,1047,-817,-2674,-4436,-6037,-7412,-8517,-9319,-9784,-9920,-9735,-9268, -8549,-7643,-6606,-5492,-4362,-3244,-2172,-1176,-231,652,1500,2328,3160,4005,4875,5751,6617,7437,8171,8761, 9165,9326,9216,8790,8062,7029,5721,4174,2454,618,-1251,-3095,-4821,-6374,-7697,-8730,-9454,-9843,-9896,-9646, -9114,-8347,-7405,-6342,-5227,-4093,-2982,-1927,-940,-13,861,1702,2526,3361,4211,5086,5961,6820,7631,8337, 8886,9235,9330,9146,8647,7845,6749,5384,3790,2030,178,-1691,-3512,-5204,-6707,-7962,-8930,-9581,-9888,-9870, -9544,-8956,-8147,-7171,-6092,-4961,-3831,-2734,-1693,-731,187,1051,1887,2710,3546,4405,5282,6154,7005,7796, 8467,8976,9267,9303,9049,8478,7604,6439,5015,3377,1592,-272,-2138,-3938,-5595,-7043,-8237,-9130,-9700,-9934, -9844,-9452,-8807,-7956,-6951,-5856,-4723,-3597,-2512,-1489,-532,368,1222,2055,2881,3721,4582,5462,6329,7173, 7934,8577,9036,9270,9240,8912,8271,7330,6093,4612,2937,1133,-745,-2595,-4374,-5983,-7378,-8507,-9327,-9818, -9970,-9810,-9356,-8659,-7754,-6727,-5615,-4483,-3366,-2289,-1282,-334,554,1404,2233,3062,3910,4775,5657,6520, 7349,8092,8691,9106,9280,9186,8781,8073,7060,5769,4238,2526,693,-1180,-3022,-4763,-6326,-7663,-8716,-9461, -9874,-9954,-9715,-9199,-8452,-7514,-6462,-5337,-4203,-3094,-2038,-1041,-115,755,1604,2429,3262,4114,4989,5863, 6724,7535,8251,8815,9175,9287,9124,8653,7867,6789,5441,3860,2113,262,-1605,-3427,-5136,-6651,-7923,-8915, -9574,-9908,-9909,-9602,-9030,-8235,-7262,-6187,-5061,-3925,-2827,-1786,-808,102,973,1807,2631,3471,4319,5196, 6073,6924,7719,8397,8925,9229,9284,9050,8502,7650,6503,5093,3476,1699,-157,-2027,-3830,-5503,-6960,-8170, -9081,-9669,-9926,-9854,-9483,-8847,-8007,-7007,-5916,-4786,-3658,-2570,-1540,-578,313,1172,2005,2828,3663,4521, 5400,6270,7112,7891,8538,9013,9262,9253,8949,8331,7399,6191,4730,3066,1266,-603,-2459,-4235,-5864,-7269, -8413,-9251,-9761,-9935,-9789,-9347,-8664,-7778,-6752,-5645,-4513,-3398,-2326,-1308,-365,523,1373,2197,3022,3861, 4728,5604,6472,7301,8051,8664,9092,9285,9204,8829,8138,7146,5871,4357,2654,830,-1036,-2882,-4629,-6212, -7557,-8631,-9391,-9821,-9923,-9707,-9202,-8468,-7550,-6499,-5380,-4245,-3141,-2080,-1085,-157,721,1561,2390,3221, 4066,4930,5811,6673,7484,8208,8785,9161,9294,9147,8697,7936,6870,5540,3974,2241,394,-1481,-3306,-5014, -6552,-7840,-8844,-9526,-9879,-9901,-9612,-9049,-8269,-7311,-6241,-5115,-3983,-2890,-1845,-865,50,914,1750,2575, 3408,4260,5133,6011,6863,7659,8351,8886,9207,9280,9067,8543,7713,6572,5186,3578,1809,-46,-1914,-3721, -5395,-6881,-8102,-9035,-9643,-9917,-9864,-9511,-8893,-8065,-7074,-5987,-4858,-3730,-2643,-1613,-647,254,1110,1950, 2771,3607,4461,5335,6216,7061,7833,8501,8985,9256,9258,8969,8376,7464,6273,4820,3173,1379,-489,-2352, -4134,-5773,-7206,-8361,-9218,-9749,-9952,-9824,-9406,-8732,-7862,-6843,-5744,-4612,-3489,-2416,-1401,-446,439,1293, 2121,2947,3788,4650,5524,6395,7229,7979,8606,9045,9256,9193,8833,8164,7185,5925,4424,2734,914,-956, -2809,-4562,-6161,-7527,-8623,-9404,-9861,-9982,-9786,-9304,-8578,-7665,-6623,-5507,-4374,-3263,-2203,-1202,-263,615, 1455,2284,3119,3964,4826,5709,6572,7391,8118,8709,9101,9250,9122,8688,7947,6905,5582,4034,2307,473, -1404,-3243,-4965,-6512,-7820,-8840,-9547,-9922,-9970,-9701,-9156,-8379,-7440,-6370,-5246,-4113,-3012,-1959,-976,-51, 815,1651,2480,3315,4165,5037,5915,6771,7573,8273,8821,9162,9251,9051,8548,7737,6624,5246,3649,1891, 36,-1837,-3654,-5334,-6831,-8079,-9022,-9652,-9950,-9921,-9587,-8983,-8161,-7189,-6102,-4974,-3840,-2745,-1708,-739, 168,1025,1859,2687,3525,4379,5252,6134,6986,7764,8429,8933,9220,9238,8973,8400,7516,6336,4904,3262, 1479,-382,-2250,-4043,-5692,-7131,-8317,-9190,-9743,-9962,-9861,-9456,-8799,-7936,-6931,-5831,-4701,-3573,-2496,-1472, -516,377,1229,2058,2889,3727,4587,5461,6334,7172,7931,8566,9023,9251,9208,8872,8219,7264,6025,4533, 2862,1047,-822,-2673,-4438,-6042,-7426,-8546,-9342,-9819,-9963,-9785,-9321,-8608,-7708,-6676,-5562,-4430,-3310,-2247, -1242,-307,579,1422,2247,3078,3927,4790,5666,6531,7359,8086,8687,9096,9262,9149,8741,8016,6995,5695, 4152,2437,604,-1268,-3110,-4841,-6397,-7725,-8768,-9493,-9886,-9952,-9702,-9176,-8418,-7475,-6428,-5302,-4170,-3060, -2011,-1021,-98,776,1610,2446,3274,4120,4990,5870,6729,7538,8241,8799,9157,9264,9084,8601,7806,6718, 5352,3762,2017,165,-1702,-3528,-5224,-6732,-7993,-8969,-9614,-9932,-9919,-9606,-9013,-8210,-7233,-6161,-5028,-3898, -2802,-1762,-788,116,985,1815,2642,3482,4339,5205,6086,6942,7730,8404,8920,9220,9264,9017,8459,7594, 6443,5021,3390,1615,-246,-2111,-3911,-5572,-7022,-8219,-9117,-9684,-9924,-9838,-9456,-8815,-7961,-6953,-5862,-4727, -3601,-2517,-1492,-534,365,1223,2049,2880,3720,4586,5458,6332,7174,7941,8580,9052,9294,9274,8953,8324, 7387,6170,4686,3018,1217,-648,-2507,-4279,-5898,-7293,-8429,-9246,-9744,-9911,-9747,-9304,-8604,-7713,-6685,-5576, -4442,-3325,-2251,-1247,-303,580,1428,2250,3084,3925,4790,5666,6533,7362,8106,8706,9129,9312,9220,8826, 8124,7121,5837,4305,2595,770,-1102,-2949,-4688,-6262,-7600,-8665,-9414,-9832,-9918,-9685,-9177,-8433,-7502,-6451, -5334,-4200,-3092,-2034,-1048,-120,753,1592,2415,3248,4096,4964,5836,6701,7514,8231,8791,9163,9288,9129, 8664,7888,6812,5469,3898,2158,313,-1558,-3387,-5091,-6622,-7896,-8884,-9558,-9892,-9903,-9603,-9029,-8234,-7271, -6199,-5074,-3940,-2844,-1804,-824,85,951,1786,2603,3446,4295,5170,6047,6899,7696,8380,8905,9222,9285, 9060,8523,7676,6540,5142,3521,1750,-101,-1971,-3779,-5446,-6915,-8129,-9054,-9642,-9903,-9831,-9473,-8845,-8008, -7011,-5927,-4794,-3661,-2579,-1553,-589,308,1162,1995,2816,3652,4511,5386,6255,7097,7874,8527,9006,9267, 9262,8964,8358,7439,6233,4777,3115,1322,-543,-2404,-4187,-5816,-7231,-8380,-9229,-9745,-9926,-9792,-9361,-8677, -7799,-6779,-5677,-4543,-3426,-2351,-1338,-396,487,1337,2161,2982,3825,4688,5563,6427,7260,8007,8626,9055, 9258,9189,8816,8134,7146,5876,4364,2667,842,-1027,-2873,-4630,-6211,-7570,-8651,-9426,-9865,-9971,-9764,-9272, -8537,-7623,-6574,-5466,-4332,-3215,-2159,-1164,-228,647,1490,2312,3142,3992,4859,5738,6599,7418,8145,8726, 9104,9246,9106,8667,7906,6855,5519,3963,2224,382,-1487,-3320,-5038,-6579,-7877,-8884,-9585,-9941,-9970,-9693, -9138,-8357,-7405,-6331,-5209,-4076,-2970,-1919,-934,-14,854,1691,2521,3356,4213,5090,5967,6827,7627,8322, 8862,9188,9271,9063,8550,7716,6593,5205,3602,1829,-24,-1894,-3707,-5395,-6877,-8112,-9050,-9672,-9950,-9907, -9554,-8948,-8114,-7126,-6038,-4910,-3776,-2683,-1643,-675,232,1095,1932,2764,3604,4462,5341,6221,7072,7852, 8517,9014,9282,9299,9019,8426,7523,6330,4886,3236,1434,-423,-2289,-4077,-5727,-7157,-8330,-9195,-9738,-9943, -9825,-9406,-8743,-7871,-6857,-5753,-4617,-3493,-2406,-1382,-430,461,1322,2157,2989,3833,4702,5582,6453,7292, 8054,8682,9127,9340,9290,8936,8273,7297,6038,4538,2846,1022,-843,-2706,-4465,-6067,-7442,-8549,-9336,-9804, -9931,-9743,-9264,-8548,-7637,-6596,-5479,-4343,-3227,-2156,-1148,-210,673,1523,2358,3193,4042,4911,5793,6662, 7483,8216,8807,9201,9355,9236,8808,8068,7027,5711,4156,2431,589,-1288,-3131,-4856,-6414,-7731,-8764,-9481, -9867,-9920,-9661,-9122,-8354,-7405,-6343,-5216,-4085,-2978,-1916,-929,-6,868,1709,2544,3378,4235,5109,5989, 6853,7658,8356,8910,9253,9343,9149,8656,7841,6733,5351,3756,1994,133,-1735,-3555,-5249,-6755,-8009,-8968, -9605,-9916,-9891,-9561,-8962,-8150,-7171,-6088,-4954,-3824,-2725,-1685,-709,202,1066,1903,2735,3573,4432,5308, 6190,7037,7821,8493,9000,9287,9315,9055,8484,7605,6426,4992,3355,1567,-300,-2170,-3967,-5622,-7071,-8262, -9147,-9709,-9940,-9840,-9445,-8793,-7936,-6930,-5828,-4690,-3568,-2482,-1454,-499,396,1252,2083,2915,3756,4615, 5495,6367,7206,7966,8604,9067,9297,9256,8926,8280,7330,6086,4603,2926,1110,-770,-2624,-4392,-6004,-7397, -8520,-9332,-9815,-9966,-9802,-9341,-8632,-7736,-6697,-5588,-4450,-3338,-2263,-1251,-315,567,1413,2243,3073,3915, 4784,5663,6527,7352,8090,8686,9099,9271,9166,8756,8041,7022,5722,4183,2471,638,-1241,-3082,-4824,-6390, -7725,-8776,-9512,-9915,-9996,-9749,-9229,-8472,-7538,-6482,-5362,-4220,-3121,-2059,-1068,-139,731,1569,2400,3233, 4077,4949,5828,6691,7497,8207,8766,9127,9238,9063,8591,7802,6712,5356,3771,2021,176,-1701,-3520,-5225, -6737,-8010,-8989,-9645,-9972,-9968,-9658,-9074,-8269,-7304,-6226,-5095,-3958,-2864,-1821,-842,68,931,1766,2593, 3429,4280,5157,6035,6886,7680,8359,8877,9182,9229,8993,8447,7587,6427,5019,3392,1616,-244,-2114,-3913, -5575,-7034,-8241,-9147,-9720,-9972,-9893,-9511,-8870,-8025,-7026,-5931,-4794,-3667,-2583,-1555,-591,307,1155,1987, 2816,3655,4509,5385,6266,7106,7873,8523,8994,9249,9230,8922,8299,7373,6154,4687,3021,1221,-646,-2506, -4277,-5901,-7305,-8443,-9277,-9773,-9941,-9790,-9343,-8653,-7766,-6744,-5632,-4499,-3377,-2309,-1300,-353,528,1373, 2203,3028,3874,4732,5613,6481,7313,8053,8667,9091,9290,9206,8824,8127,7131,5854,4330,2628,811,-1063, -2908,-4651,-6222,-7570,-8636,-9395,-9814,-9906,-9685,-9176,-8435,-7508,-6458,-5343,-4208,-3097,-2048,-1049,-127,749, 1583,2409,3236,4082,4946,5825,6692,7506,8221,8794,9170,9300,9148,8694,7929,6867,5526,3959,2219,379, -1492,-3320,-5027,-6552,-7840,-8837,-9515,-9856,-9875,-9583,-9018,-8226,-7268,-6202,-5079,-3945,-2851,-1812,-839,74, 933,1764,2585,3415,4268,5132,6009,6862,7659,8345,8878,9200,9270,9047,8522,7684,6552,5157,3544,1778, -76,-1948,-3754,-5423,-6898,-8117,-9046,-9647,-9913,-9856,-9496,-8867,-8037,-7045,-5961,-4831,-3710,-2622,-1601,-640, 252,1110,1932,2754,3585,4444,5314,6187,7032,7808,8464,8948,9213,9220,8931,8324,7420,6222,4769,3114, 1317,-545,-2407,-4186,-5816,-7237,-8392,-9245,-9767,-9957,-9829,-9405,-8724,-7847,-6832,-5731,-4598,-3484,-2409,-1397, -455,429,1277,2099,2923,3762,4624,5492,6365,7195,7950,8568,9007,9214,9153,8789,8114,7137,5878,4372, 2676,859,-1009,-2862,-4615,-6202,-7563,-8653,-9429,-9876,-9990,-9787,-9304,-8576,-7660,-6622,-5508,-4374,-3263,-2203, -1212,-276,594,1437,2260,3085,3932,4802,5677,6543,7358,8086,8671,9057,9206,9081,8641,7897,6851,5528, 3973,2247,407,-1463,-3300,-5024,-6560,-7861,-8879,-9582,-9948,-9987,-9717,-9168,-8390,-7441,-6378,-5255,-4121,-3017, -1970,-986,-67,804,1639,2461,3290,4145,5021,5897,6755,7567,8262,8806,9143,9229,9034,8521,7706,6592, 5216,3612,1853,-3,-1869,-3683,-5367,-6856,-8093,-9043,-9663,-9957,-9918,-9578,-8971,-8144,-7157,-6075,-4940,-3808, -2714,-1679,-710,202,1060,1894,2724,3562,4424,5300,6173,7025,7810,8476,8982,9263,9288,9020,8434,7549, 6371,4932,3288,1500,-359,-2221,-4020,-5664,-7094,-8274,-9148,-9690,-9907,-9792,-9389,-8726,-7859,-6844,-5742,-4611, -3482,-2400,-1383,-429,468,1321,2156,2986,3825,4688,5569,6436,7276,8039,8671,9119,9347,9298,8958,8298, 7343,6097,4606,2916,1105,-769,-2620,-4388,-5990,-7375,-8484,-9286,-9756,-9895,-9709,-9244,-8528,-7618,-6587,-5478, -4341,-3225,-2157,-1155,-215,668,1512,2339,3169,4014,4881,5760,6622,7445,8184,8775,9171,9340,9225,8809, 8078,7050,5744,4200,2475,639,-1232,-3074,-4813,-6366,-7686,-8728,-9450,-9843,-9905,-9649,-9118,-8354,-7411,-6355, -5231,-4094,-2987,-1934,-947,-23,849,1689,2518,3349,4203,5074,5952,6809,7619,8325,8880,9228,9330,9149, 8660,7860,6760,5393,3804,2049,197,-1674,-3493,-5191,-6697,-7956,-8919,-9567,-9878,-9869,-9536,-8952,-8143,-7164, -6085,-4956,-3824,-2725,-1684,-717,191,1058,1895,2718,3557,4411,5290,6165,7009,7803,8478,8991,9285,9322, 9070,8509,7631,6471,5043,3407,1622,-235,-2105,-3905,-5568,-7017,-8211,-9103,-9677,-9914,-9826,-9435,-8787,-7935, -6927,-5838,-4704,-3580,-2495,-1470,-517,376,1235,2062,2887,3729,4586,5463,6336,7172,7938,8579,9038,9279, 9246,8920,8287,7336,6109,4629,2949,1142,-732,-2592,-4361,-5983,-7383,-8509,-9331,-9822,-9982,-9822,-9368,-8675, -7784,-6752,-5643,-4511,-3394,-2326,-1316,-379,504,1354,2179,3005,3847,4712,5592,6456,7277,8025,8629,9042, 9221,9123,8728,8019,7003,5710,4181,2465,632,-1246,-3086,-4834,-6408,-7743,-8804,-9548,-9967,-10045,-9817,-9300, -8557,-7622,-6568,-5444,-4316,-3202,-2144,-1150,-224,653,1496,2328,3151,4006,4875,5756,6622,7430,8152,8717, 9080,9200,9038,8570,7788,6704,5356,3778,2033,184,-1689,-3516,-5220,-6746,-8022,-9009,-9676,-10013,-10019,-9713, -9137,-8342,-7373,-6297,-5165,-4034,-2934,-1888,-903,13,885,1721,2551,3386,4247,5120,6006,6859,7655,8344, 8868,9178,9234,9003,8463,7609,6459,5050,3431,1655,-206,-2079,-3884,-5554,-7026,-8238,-9153,-9745,-10003,-9936, -9563,-8930,-8091,-7091,-5997,-4864,-3733,-2642,-1612,-641,260,1119,1958,2786,3630,4491,5366,6248,7090,7860, 8515,8995,9252,9241,8932,8319,7397,6179,4720,3056,1252,-618,-2480,-4260,-5889,-7310,-8456,-9296,-9809,-9990, -9849,-9418,-8728,-7847,-6821,-5712,-4571,-3449,-2369,-1352,-400,489,1342,2175,3008,3851,4719,5597,6469,7303, 8048,8668,9096,9289,9214,8838,8146,7152,5875,4361,2660,832,-1044,-2895,-4643,-6230,-7590,-8666,-9434,-9869, -9972,-9757,-9261,-8519,-7600,-6547,-5427,-4286,-3174,-2105,-1104,-164,712,1558,2391,3225,4076,4946,5828,6696, 7514,8230,8812,9190,9326,9184,8734,7975,6909,5575,4015,2277,433,-1443,-3278,-4993,-6529,-7826,-8833,-9520, -9874,-9902,-9614,-9055,-8270,-7313,-6239,-5108,-3971,-2865,-1810,-826,98,966,1810,2639,3479,4326,5208,6084, 6949,7746,8437,8976,9304,9376,9165,8640,7813,6685,5291,3680,1917,60,-1813,-3622,-5300,-6786,-8017,-8951, -9560,-9835,-9789,-9435,-8819,-7987,-7001,-5911,-4775,-3645,-2553,-1521,-551,357,1216,2049,2879,3718,4574,5452, 6327,7176,7951,8611,9105,9374,9376,9094,8497,7599,6406,4952,3303,1506,-363,-2227,-4013,-5650,-7081,-8247, -9108,-9643,-9844,-9721,-9305,-8632,-7759,-6747,-5644,-4504,-3384,-2308,-1292,-342,548,1396,2226,3053,3894,4753, 5633,6499,7335,8088,8711,9157,9370,9308,8954,8284,7314,6051,4554,2863,1043,-830,-2683,-4441,-6035,-7409, -8506,-9290,-9746,-9868,-9677,-9198,-8474,-7563,-6526,-5410,-4283,-3162,-2104,-1102,-173,708,1545,2369,3197,4045, 4907,5785,6647,7468,8196,8782,9179,9331,9203,8780,8040,7005,5681,4132,2409,571,-1302,-3135,-4864,-6411, -7719,-8750,-9451,-9832,-9881,-9614,-9074,-8300,-7355,-6297,-5174,-4037,-2935,-1891,-909,10,875,1707,2532,3361, 4208,5076,5955,6808,7612,8310,8858,9202,9297,9101,8604,7796,6689,5316,3717,1966,113,-1757,-3576,-5262, -6758,-8004,-8960,-9590,-9890,-9860,-9527,-8930,-8110,-7135,-6054,-4924,-3800,-2710,-1681,-713,191,1048,1873,2695, 3529,4382,5250,6124,6974,7755,8423,8931,9219,9247,8984,8412,7530,6363,4926,3292,1509,-353,-2220,-4011, -5659,-7103,-8288,-9170,-9722,-9946,-9848,-9448,-8788,-7930,-6925,-5831,-4698,-3575,-2502,-1483,-534,357,1204,2033, 2855,3689,4548,5422,6294,7135,7890,8523,8984,9217,9177,8844,8203,7252,6021,4531,2858,1051,-813,-2669, -4431,-6038,-7421,-8539,-9344,-9821,-9964,-9791,-9326,-8613,-7716,-6681,-5577,-4439,-3321,-2262,-1254,-317,560,1402, 2223,3050,3897,4758,5635,6505,7323,8061,8656,9071,9242,9141,8737,8022,7005,5711,4172,2463,634,-1235, -3077,-4810,-6371,-7695,-8742,-9473,-9872,-9937,-9702,-9168,-8413,-7478,-6419,-5308,-4168,-3060,-2008,-1020,-97,770, 1609,2428,3262,4111,4974,5850,6715,7523,8232,8789,9152,9261,9088,8609,7820,6731,5379,3790,2048,198, -1673,-3495,-5190,-6706,-7967,-8947,-9606,-9924,-9916,-9604,-9019,-8215,-7246,-6171,-5046,-3913,-2815,-1778,-805,108, 969,1799,2625,3463,4316,5190,6063,6918,7708,8389,8900,9209,9255,9014,8461,7603,6445,5031,3404,1623, -235,-2102,-3903,-5565,-7024,-8226,-9134,-9712,-9956,-9873,-9496,-8858,-8008,-7006,-5912,-4783,-3655,-2570,-1545,-584, 314,1170,2000,2828,3669,4531,5407,6281,7126,7897,8540,9006,9256,9237,8921,8296,7360,6141,4668,2996, 1193,-675,-2539,-4317,-5938,-7343,-8475,-9308,-9812,-9981,-9827,-9383,-8688,-7803,-6772,-5674,-4538,-3416,-2341,-1334, -388,498,1348,2174,3004,3852,4719,5593,6466,7294,8038,8647,9064,9253,9167,8777,8076,7071,5788,4260, 2545,717,-1153,-3002,-4751,-6324,-7674,-8739,-9495,-9922,-10011,-9790,-9286,-8542,-7612,-6559,-5444,-4313,-3198,-2136, -1144,-210,662,1506,2337,3166,4017,4891,5766,6630,7447,8163,8732,9101,9229,9072,8609,7835,6766,5420, 3850,2099,254,-1618,-3447,-5159,-6687,-7974,-8971,-9649,-9994,-10007,-9712,-9148,-8352,-7394,-6318,-5194,-4056,-2953, -1905,-923,-2,867,1712,2535,3372,4234,5108,5988,6847,7643,8331,8864,9180,9244,9023,8487,7645,6510, 5103,3493,1715,-141,-2005,-3816,-5490,-6967,-8185,-9108,-9710,-9972,-9909,-9551,-8924,-8087,-7091,-6001,-4866,-3737, -2644,-1607,-644,267,1124,1962,2793,3633,4496,5377,6252,7100,7875,8532,9015,9275,9275,8984,8370,7461, 6255,4799,3138,1340,-526,-2389,-4173,-5808,-7224,-8382,-9231,-9756,-9947,-9815,-9386,-8705,-7830,-6810,-5701,-4568, -3444,-2365,-1350,-403,495,1343,2172,3005,3846,4713,5585,6458,7292,8039,8662,9091,9294,9227,8857,8178, 7195,5926,4415,2716,891,-980,-2832,-4586,-6176,-7535,-8621,-9399,-9847,-9960,-9754,-9265,-8537,-7619,-6571,-5453, -4319,-3209,-2138,-1140,-202,677,1520,2350,3181,4028,4899,5774,6638,7453,8180,8764,9146,9287,9154,8714, 7965,6911,5590,4026,2296,456,-1418,-3255,-4973,-6514,-7817,-8835,-9533,-9901,-9934,-9660,-9109,-8332,-7377,-6311, -5183,-4048,-2945,-1890,-909,10,883,1723,2551,3383,4233,5102,5985,6839,7642,8333,8875,9208,9286,9085, 8571,7751,6632,5248,3647,1884,28,-1840,-3658,-5342,-6831,-8068,-9014,-9637,-9929,-9889,-9544,-8935,-8114,-7125, -6042,-4911,-3782,-2690,-1651,-683,220,1083,1918,2746,3579,4435,5311,6187,7034,7816,8480,8972,9252,9267, 8996,8407,7514,6331,4887,3238,1448,-414,-2281,-4070,-5717,-7150,-8325,-9193,-9742,-9959,-9845,-9435,-8772,-7910, -6896,-5798,-4664,-3546,-2458,-1438,-485,405,1258,2086,2916,3753,4617,5496,6368,7195,7957,8583,9038,9256, 9206,8861,8205,7240,5989,4498,2811,998,-877,-2729,-4493,-6096,-7472,-8576,-9377,-9840,-9978,-9790,-9320,-8603, -7699,-6660,-5548,-4409,-3299,-2231,-1224,-286,595,1440,2265,3105,3942,4812,5691,6562,7380,8114,8704,9107, 9270,9152,8741,8011,6973,5669,4129,2402,570,-1304,-3141,-4872,-6424,-7741,-8778,-9494,-9880,-9943,-9685,-9148, -8387,-7444,-6378,-5252,-4117,-3015,-1959,-971,-45,827,1671,2495,3331,4181,5054,5933,6796,7598,8304,8854, 9207,9305,9119,8632,7832,6725,5363,3768,2016,167,-1704,-3526,-5217,-6720,-7977,-8941,-9582,-9890,-9879,-9549, -8955,-8143,-7166,-6086,-4956,-3823,-2735,-1691,-717,194,1058,1891,2720,3557,4414,5281,6162,7013,7796,8473, 8980,9276,9309,9052,8492,7619,6447,5027,3392,1613,-250,-2124,-3914,-5567,-7020,-8207,-9097,-9666,-9899,-9809, -9413,-8764,-7910,-6906,-5810,-4674,-3547,-2465,-1444,-484,414,1262,2101,2925,3766,4622,5496,6368,7213,7969, 8612,9072,9307,9278,8948,8317,7374,6137,4659,2986,1180,-702,-2552,-4325,-5930,-7329,-8451,-9269,-9752,-9910, -9749,-9286,-8588,-7693,-6662,-5551,-4415,-3298,-2227,-1221,-276,605,1450,2280,3106,3954,4816,5690,6557,7379, 8117,8723,9132,9315,9213,8809,8104,7094,5798,4270,2560,730,-1143,-2988,-4726,-6290,-7628,-8683,-9422,-9833, -9910,-9677,-9160,-8403,-7474,-6419,-5298,-4163,-3052,-2004,-1008,-79,790,1630,2458,3288,4136,4999,5876,6738, 7549,8259,8820,9183,9301,9137,8660,7882,6800,5448,3869,2128,282,-1591,-3416,-5122,-6637,-7910,-8899,-9559, -9895,-9903,-9598,-9021,-8220,-7258,-6183,-5057,-3924,-2822,-1787,-815,101,960,1799,2623,3454,4309,5171,6046, 6898,7687,8367,8891,9196,9254,9014,8470,7616,6475,5059,3445,1664,-189,-2062,-3865,-5534,-6996,-8212,-9124, -9710,-9965,-9896,-9528,-8891,-8048,-7056,-5963,-4832,-3706,-2619,-1597,-637,263,1114,1947,2773,3606,4463,5332, 6206,7047,7816,8462,8936,9191,9184,8875,8264,7340,6131,4665,3008,1205,-657,-2522,-4297,-5918,-7327,-8471, -9308,-9819,-9991,-9849,-9418,-8729,-7841,-6816,-5713,-4577,-3454,-2384,-1365,-424,466,1314,2140,2969,3811,4678, 5550,6419,7250,7998,8610,9042,9240,9165,8785,8098,7105,5837,4321,2623,803,-1063,-2909,-4658,-6234,-7584, -8657,-9418,-9847,-9945,-9731,-9232,-8492,-7563,-6519,-5398,-4263,-3147,-2087,-1092,-157,718,1561,2388,3227,4074, 4939,5816,6681,7500,8221,8790,9172,9304,9162,8709,7953,6895,5560,3995,2263,425,-1446,-3276,-4990,-6519, -7810,-8817,-9499,-9853,-9874,-9591,-9031,-8244,-7282,-6218,-5090,-3957,-2853,-1807,-827,93,959,1792,2621,3454, 4307,5179,6049,6908,7707,8395,8929,9255,9325,9111,8586,7754,6629,5232,3622,1858,4,-1860,-3674,-5356, -6834,-8060,-8995,-9601,-9879,-9828,-9474,-8856,-8029,-7039,-5953,-4822,-3697,-2603,-1579,-611,290,1150,1985,2814, 3650,4505,5382,6252,7096,7879,8530,9021,9292,9302,9018,8416,7516,6324,4872,3221,1432,-437,-2295,-4083, -5717,-7144,-8302,-9161,-9694,-9892,-9762,-9349,-8672,-7798,-6780,-5682,-4541,-3422,-2339,-1323,-376,519,1376,2203, 3036,3878,4746,5617,6488,7325,8078,8703,9143,9357,9301,8944,8271,7299,6043,4544,2852,1034,-836,-2681, -4443,-6039,-7403,-8499,-9283,-9738,-9862,-9660,-9180,-8458,-7549,-6505,-5390,-4253,-3139,-2074,-1071,-135,747,1595, 2422,3254,4100,4967,5849,6711,7530,8254,8841,9235,9384,9255,8826,8079,7038,5721,4165,2436,599,-1274, -3112,-4841,-6388,-7695,-8724,-9439,-9818,-9863,-9596,-9056,-8289,-7339,-6275,-5159,-4021,-2920,-1863,-879,40,914, 1748,2576,3408,4262,5133,6003,6859,7659,8358,8898,9240,9328,9128,8625,7804,6690,5311,3715,1951,98, -1775,-3598,-5292,-6792,-8038,-8996,-9631,-9930,-9907,-9574,-8976,-8161,-7181,-6101,-4970,-3839,-2742,-1707,-738,172, 1036,1871,2697,3535,4390,5264,6137,6984,7768,8433,8925,9212,9237,8966,8389,7499,6320,4886,3247,1450, -414,-2279,-4077,-5733,-7177,-8357,-9240,-9800,-10027,-9926,-9523,-8870,-8016,-7005,-5904,-4773,-3645,-2560,-1535,-581, 313,1173,2011,2837,3679,4539,5424,6292,7125,7885,8519,8972,9200,9158,8820,8167,7212,5974,4483,2804, 987,-883,-2737,-4509,-6118,-7508,-8619,-9429,-9905,-10053,-9877,-9413,-8708,-7807,-6769,-5652,-4519,-3395,-2326,-1314, -370,513,1367,2195,3028,3881,4741,5626,6491,7316,8053,8647,9048,9218,9114,8704,7981,6951,5650,4117, 2402,568,-1305,-3142,-4881,-6442,-7774,-8818,-9547,-9947,-10015,-9770,-9244,-8488,-7550,-6490,-5366,-4234,-3119,-2062, -1059,-138,738,1578,2415,3247,4102,4966,5851,6709,7516,8221,8780,9127,9238,9063,8586,7788,6692,5337, 3753,2001,152,-1716,-3539,-5236,-6751,-8014,-8987,-9643,-9967,-9956,-9643,-9057,-8257,-7280,-6202,-5074,-3943,-2841, -1798,-819,91,957,1794,2625,3456,4315,5185,6066,6913,7693,8379,8888,9185,9230,8986,8429,7567,6406, 4991,3366,1583,-276,-2146,-3938,-5604,-7063,-8263,-9160,-9742,-9987,-9902,-9521,-8881,-8035,-7034,-5940,-4805,-3684, -2596,-1570,-612,281,1142,1976,2799,3639,4499,5378,6251,7084,7851,8495,8967,9204,9183,8865,8242,7302, 6080,4610,2945,1140,-728,-2585,-4358,-5975,-7379,-8508,-9334,-9836,-10002,-9842,-9397,-8704,-7815,-6786,-5676,-4547, -3431,-2354,-1349,-395,487,1329,2159,2991,3836,4699,5573,6449,7271,8017,8627,9045,9228,9143,8755,8063, 7055,5771,4248,2549,719,-1149,-2988,-4726,-6300,-7644,-8707,-9452,-9877,-9966,-9738,-9227,-8481,-7555,-6504,-5382, -4250,-3139,-2080,-1082,-149,721,1565,2393,3225,4065,4939,5816,6680,7491,8207,8778,9147,9273,9120,8662, 7894,6822,5472,3906,2171,325,-1545,-3367,-5077,-6601,-7884,-8878,-9550,-9896,-9908,-9610,-9044,-8253,-7293,-6219, -5094,-3965,-2868,-1814,-838,80,940,1779,2607,3441,4290,5167,6041,6898,7689,8376,8901,9218,9279,9057, 8524,7681,6538,5135,3524,1758,-104,-1970,-3776,-5444,-6922,-8146,-9062,-9662,-9928,-9867,-9504,-8881,-8046,-7062, -5971,-4839,-3716,-2622,-1592,-625,275,1131,1965,2792,3633,4490,5367,6239,7084,7850,8505,8987,9251,9242, 8955,8346,7433,6227,4769,3116,1319,-550,-2406,-4188,-5818,-7235,-8394,-9240,-9758,-9950,-9821,-9392,-8711,-7833, -6820,-5714,-4573,-3454,-2374,-1355,-407,487,1332,2167,2997,3847,4707,5588,6455,7287,8034,8657,9094,9293, 9226,8859,8180,7201,5936,4429,2731,912,-959,-2802,-4556,-6141,-7500,-8590,-9358,-9802,-9920,-9711,-9218,-8489, -7571,-6530,-5409,-4270,-3158,-2087,-1087,-147,739,1580,2408,3246,4095,4965,5845,6710,7526,8244,8827,9213, 9355,9218,8780,8023,6973,5647,4086,2361,523,-1356,-3183,-4903,-6449,-7741,-8763,-9464,-9822,-9863,-9588,-9038, -8257,-7312,-6243,-5119,-3986,-2878,-1828,-837,85,956,1798,2625,3467,4312,5188,6064,6919,7716,8405,8942, 9276,9354,9143,8629,7808,6684,5300,3689,1928,74,-1799,-3613,-5297,-6787,-8031,-8974,-9595,-9885,-9849,-9511, -8902,-8083,-7102,-6017,-4888,-3759,-2662,-1630,-657,253,1112,1939,2769,3604,4459,5331,6208,7052,7830,8488, 8980,9251,9265,8983,8401,7496,6311,4865,3217,1425,-443,-2311,-4100,-5742,-7181,-8352,-9232,-9774,-9980,-9880, -9471,-8809,-7944,-6932,-5841,-4704,-3585,-2501,-1476,-525,370,1217,2053,2879,3725,4577,5457,6329,7157,7913, 8535,8981,9201,9146,8794,8138,7167,5921,4420,2734,922,-950,-2809,-4566,-6165,-7538,-8651,-9444,-9909,-10045, -9863,-9392,-8674,-7766,-6738,-5624,-4493,-3374,-2308,-1300,-357,529,1374,2199,3034,3882,4746,5625,6501,7314, 8046,8627,9027,9190,9072,8647,7918,6881,5578,4029,2311,478,-1383,-3229,-4950,-6507,-7821,-8857,-9575,-9964, -10019,-9766,-9229,-8462,-7517,-6455,-5333,-4202,-3090,-2040,-1046,-121,753,1592,2419,3262,4113,4986,5861,6722, 7525,8228,8773,9121,9222,9029,8539,7738,6635,5272,3675,1921,75,-1793,-3619,-5300,-6809,-8061,-9029,-9667, -9975,-9957,-9638,-9044,-8233,-7255,-6182,-5052,-3916,-2818,-1783,-808,105,968,1802,2633,3470,4332,5197,6079, 6928,7713,8382,8886,9183,9217,8962,8398,7521,6358,4935,3294,1518,-341,-2207,-4003,-5652,-7101,-8292,-9184, -9750,-9975,-9886,-9497,-8849,-7990,-6985,-5890,-4760,-3631,-2541,-1523,-554,336,1202,2031,2857,3706,4567,5438, 6318,7157,7924,8564,9018,9261,9232,8902,8267,7330,6101,4625,2950,1140,-722,-2574,-4339,-5948,-7337,-8457, -9275,-9761,-9914,-9745,-9295,-8586,-7693,-6658,-5548,-4413,-3287,-2213,-1205,-252,631,1487,2316,3149,3995,4866, 5746,6612,7437,8182,8783,9191,9372,9281,8879,8174,7166,5876,4353,2644,815,-1048,-2890,-4623,-6184,-7516, -8566,-9310,-9721,-9791,-9554,-9036,-8281,-7355,-6295,-5176,-4042,-2938,-1866,-877,58,932,1783,2607,3447,4292, 5167,6041,6909,7714,8431,8985,9346,9466,9305,8829,8048,6972,5624,4051,2308,462,-1401,-3227,-4927,-6443, -7714,-8694,-9364,-9690,-9695,-9391,-8821,-8021,-7057,-5980,-4861,-3721,-2625,-1581,-607,309,1176,2018,2836,3671, 4524,5399,6271,7120,7908,8585,9103,9407,9464,9231,8681,7828,6684,5277,3657,1877,27,-1840,-3640,-5307, -6775,-7986,-8898,-9489,-9746,-9672,-9299,-8672,-7832,-6842,-5749,-4625,-3500,-2417,-1390,-433,466,1322,2153,2974, 3811,4672,5541,6408,7255,8018,8656,9134,9379,9364,9060,8438,7518,6303,4841,3184,1370,-492,-2352,-4127, -5754,-7161,-8303,-9142,-9664,-9834,-9692,-9267,-8582,-7700,-6684,-5580,-4450,-3334,-2262,-1256,-317,573,1417,2244, 3067,3906,4766,5641,6507,7333,8072,8680,9100,9292,9214,8837,8140,7146,5872,4361,2653,828,-1042,-2886, -4638,-6219,-7567,-8645,-9411,-9847,-9954,-9740,-9247,-8512,-7594,-6555,-5438,-4311,-3202,-2144,-1151,-218,662,1499, 2323,3149,3996,4857,5733,6589,7401,8120,8690,9062,9196,9047,8595,7830,6767,5435,3872,2133,285,-1582, -3413,-5129,-6658,-7948,-8957,-9646,-10006,-10031,-9745,-9192,-8408,-7459,-6396,-5272,-4140,-3040,-1995,-1018,-97,765, 1608,2434,3266,4121,4988,5861,6708,7512,8193,8725,9048,9113,8899,8376,7538,6411,5015,3413,1642,-209, -2080,-3887,-5568,-7049,-8275,-9208,-9821,-10101,-10050,-9700,-9088,-8263,-7274,-6189,-5058,-3935,-2843,-1810,-844,59, 926,1753,2587,3420,4279,5155,6030,6876,7652,8306,8799,9061,9061,8779,8184,7277,6091,4641,2989,1196, -668,-2530,-4312,-5950,-7371,-8530,-9392,-9920,-10124,-10001,-9579,-8910,-8042,-7020,-5923,-4787,-3665,-2586,-1560,-603, 288,1146,1981,2813,3655,4522,5397,6271,7102,7860,8476,8924,9134,9073,8714,8053,7079,5829,4328,2641, 822,-1040,-2892,-4636,-6238,-7594,-8690,-9471,-9926,-10041,-9848,-9362,-8639,-7732,-6683,-5573,-4434,-3322,-2252,-1245, -303,580,1439,2265,3095,3950,4825,5702,6568,7389,8121,8704,9097,9245,9121,8695,7962,6907,5600,4059, 2338,504,-1365,-3198,-4917,-6463,-7770,-8789,-9497,-9871,-9921,-9660,-9114,-8341,-7395,-6332,-5207,-4073,-2971,-1914, -923,-3,875,1719,2552,3385,4236,5103,5984,6840,7641,8338,8886,9223,9312,9110,8618,7804,6698,5331, 3736,1981,129,-1739,-3550,-5235,-6729,-7969,-8918,-9554,-9849,-9831,-9500,-8891,-8078,-7102,-6022,-4894,-3758,-2665, -1627,-657,251,1116,1959,2784,3626,4476,5351,6226,7074,7851,8519,9021,9304,9325,9058,8493,7610,6434, 5005,3366,1588,-276,-2139,-3928,-5570,-7018,-8195,-9076,-9626,-9850,-9750,-9352,-8695,-7841,-6833,-5735,-4597,-3475, -2395,-1369,-413,480,1342,2170,3001,3843,4700,5578,6451,7291,8043,8677,9131,9363,9319,8981,8337,7389, 6149,4668,2996,1186,-682,-2536,-4290,-5899,-7285,-8396,-9208,-9676,-9828,-9656,-9195,-8486,-7588,-6556,-5448,-4316, -3202,-2131,-1130,-179,700,1545,2372,1,-79,-979,-2279,-2710,-2483,-1487,-481,270,1445,3592,6635,9570, 11563,12442,12860,13324,13356,12134,9359,5840,2443,-613,-3712,-7380,-11654,-16104,-19712,-21975,-23290,-23981,-24284,-23692, -21647,-18499,-14799,-11345,-8544,-6105,-3878,-1648,658,2900,4957,6911,9261,12043,14931,17730,19686,20456,20984,21741, 22180,21714,20179,17664,14686,12047,9485,6215,2085,-2680,-7278,-10805,-13368,-15674,-17886,-19614,-20290,-19503,-17575,-15277, -12827,-10016,-6879,-3480,-93,2628,4686,6332,7056,6931,7054,7351,6979,6760,7182,7419,7492,8084,8685,8998, 9396,9783,10029,10218,9732,8250,6678,5230,3357,1451,-582,-3219,-5511,-6746,-7292,-7590,-7722,-7606,-6923,-5686, -4363,-2717,-801,645,1665,2467,2519,1852,1155,713,342,-27,-665,-1456,-1799,-1827,-1575,-892,22,935, 1788,2539,3032,3312,3622,3933,3879,3165,1977,713,-451,-1564,-2755,-4120,-5318,-6039,-6218,-5974,-5692,-5480, -4877,-3776,-2564,-1442,-505,280,971,1294,1140,583,-334,-1376,-2184,-2648,-2794,-2679,-2216,-1433,-297,1387, 3672,6335,8940,10927,12131,12710,12954,12538,11066,8610,5080,1043,-2598,-5786,-8927,-11940,-14763,-17163,-18504,-18814, -18623,-18274,-17700,-16516,-14541,-12052,-9673,-7460,-5381,-3324,-1221,775,2474,3758,4775,5970,7702,9955,12413,14541, 16181,17397,18343,19107,19261,18356,16533,14157,11689,9364,6826,3672,-80,-3844,-6968,-9422,-11412,-13056,-14474,-15336, -15013,-13698,-12104,-10237,-7895,-5785,-3769,-1325,813,2201,3445,4596,5194,5393,5151,4423,3831,3528,3306,3559, 4351,5178,5977,6852,7444,7907,8409,8470,7827,6511,4689,2880,1127,-976,-3169,-4989,-6571,-7725,-8215,-8593, -9137,-9388,-8989,-7953,-6379,-4711,-3273,-1843,-471,662,1467,1857,1851,1545,1020,381,-323,-967,-1287,-1121, -553,367,1664,3079,4287,5274,6053,6740,7288,7303,6552,5100,3219,1418,-168,-1905,-4060,-6502,-8722,-10299, -11261,-11911,-12377,-12620,-12438,-11571,-10011,-8341,-7007,-6027,-5190,-4397,-3569,-2625,-1721,-885,126,1422,3088,5011, 6885,8479,10005,11591,13158,14637,15479,15245,14225,12875,11340,9505,6989,3707,170,-3005,-5501,-7510,-9617,-12007, -14141,-15414,-15616,-14910,-13746,-12381,-10654,-8393,-5746,-3084,-808,1005,2483,3631,4505,5142,5491,5654,5793,6035, 6555,7286,8061,8699,9123,9559,10115,10613,10669,9972,8570,6882,5237,3605,1668,-764,-3431,-5833,-7678,-9002, -10023,-10917,-11543,-11535,-10726,-9344,-7763,-6229,-4766,-3291,-1868,-654,219,696,853,816,666,476,334,315, 516,1049,1979,3236,4642,5939,6997,7872,8678,9395,9682,9141,7792,6014,4223,2531,735,-1442,-3997,-6501, -8473,-9772,-10686,-11488,-12165,-12404,-11949,-10863,-9449,-8039,-6718,-5399,-4059,-2805,-1769,-995,-400,216,1008,2063, 3297,4560,5736,6893,8211,9758,11336,12540,13062,12938,12484,11885,10912,9172,6529,3342,199,-2564,-5039,-7535, -10167,-12587,-14290,-15013,-14944,-14452,-13697,-12533,-10777,-8511,-6097,-3868,-1945,-317,1081,2249,3107,3636,3914,4046, 4200,4525,5097,5852,6649,7416,8241,9216,10234,10949,11054,10512,9603,8591,7455,5925,3766,1144,-1489,-3739, -5572,-7217,-8822,-10223,-11083,-11154,-10532,-9512,-8326,-7007,-5523,-3929,-2411,-1155,-245,350,697,844,849,795, 781,894,1234,1917,3009,4410,5862,7153,8261,9293,10234,10817,10672,9667,8069,6281,4482,2516,126,-2696, -5563,-8037,-9950,-11460,-12811,-14009,-14736,-14686,-13855,-12536,-11048,-9503,-7838,-6018,-4145,-2406,-961,158,1017,1750, 2468,3239,4071,4961,5961,7190,8735,10456,12003,13051,13560,13736,13742,13456,12550,10832,8502,6004,3646,1397, -1018,-3703,-6398,-8617,-10066,-10840,-11232,-11393,-11190,-10398,-9002,-7237,-5416,-3722,-2200,-836,307,1166,1713,1969, 2038,2029,2074,2292,2723,3306,4012,4874,5975,7264,8488,9323,9602,9505,9221,8743,7831,6234,4037,1631, -595,-2534,-4359,-6240,-8090,-9523,-10270,-10323,-9934,-9338,-8548,-7454,-6045,-4493,-3034,-1826,-906,-240,204,446, 558,601,658,823,1234,1983,3082,4372,5686,6963,8282,9633,10776,11343,11120,10249,9058,7733,6130,3984, 1256,-1715,-4444,-6681,-8538,-10257,-11878,-13127,-13648,-13353,-12437,-11193,-9770,-8132,-6251,-4249,-2362,-771,451,1358, 2034,2557,3012,3442,3883,4404,5120,6121,7381,8690,9810,10669,11362,11987,12405,12283,11371,9737,7745,5702, 3637,1339,-1309,-4104,-6629,-8561,-9927,-10923,-11700,-12124,-11952,-11096,-9727,-8139,-6536,-4975,-3451,-2075,-970,-229, 172,311,272,160,83,121,320,695,1299,2205,3413,4733,5891,6699,7193,7494,7599,7276,6264,4543, 2439,321,-1656,-3625,-5771,-8025,-10063,-11544,-12372,-12724,-12798,-12603,-11965,-10791,-9207,-7478,-5828,-4341,-3003,-1814, -825,-75,464,861,1226,1672,2303,3153,4164,5254,6399,7672,9078,10440,11417,11760,11492,10855,10010,8858, 7141,4784,2034,-673,-3074,-5209,-7284,-9351,-11176,-12389,-12828,-12615,-12008,-11150,-9964,-8380,-6512,-4593,-2874,-1464, -330,571,1269,1770,2120,2378,2639,3009,3609,4476,5552,6674,7748,8796,9864,10823,11394,11304,10543,9360, 8019,6544,4769,2544,16,-2443,-4500,-6108,-7427,-8593,-9481,-9824,-9470,-8518,-7238,-5835,-4365,-2806,-1232,201, 1322,2092,2554,2783,2846,2817,2787,2836,3027,3450,4176,5222,6485,7732,8794,9631,10315,10824,10945,10404, 9125,7323,5332,3311,1169,-1255,-3932,-6551,-8747,-10372,-11540,-12414,-13005,-13117,-12588,-11466,-10011,-8481,-6989,-5543, -4157,-2919,-1938,-1251,-804,-515,-269,35,466,1037,1743,2609,3703,5055,6535,7861,8772,9219,9328,9208, 8756,7742,6040,3835,1488,-743,-2859,-5038,-7315,-9482,-11176,-12164,-12505,-12421,-12029,-11274,-10032,-8344,-6432,-4569, -2897,-1456,-235,731,1397,1787,1972,2061,2187,2461,2944,3641,4480,5407,6441,7605,8808,9811,10344,10309, 9835,9119,8188,6868,5001,2685,236,-2014,-3972,-5763,-7497,-9083,-10244,-10742,-10594,-9988,-9123,-8046,-6710,-5156, -3556,-2117,-956,-88,538,964,1224,1368,1466,1607,1897,2445,3314,4452,5727,6974,8149,9276,10324,11086, 11281,10777,9711,8355,6861,5152,3075,619,-1939,-4245,-6104,-7571,-8812,-9839,-10461,-10452,-9786,-8655,-7309,-5869, -4341,-2745,-1179,179,1224,1945,2416,2727,2960,3186,3463,3837,4372,5145,6206,7490,8790,9881,10666,11203, 11548,11596,11101,9907,8103,5992,3832,1672,-617,-3100,-5594,-7768,-9375,-10417,-11061,-11413,-11396,-10853,-9760,-8275, -6669,-5117,-3687,-2390,-1267,-414,137,410,509,552,633,859,1262,1832,2570,3501,4663,5999,7301,8303, 8842,8973,8824,8397,7542,6087,4049,1699,-634,-2828,-4955,-7119,-9233,-11033,-12246,-12814,-12876,-12605,-12034,-11078, -9698,-8044,-6337,-4790,-3464,-2358,-1458,-772,-303,-3,207,444,840,1481,2378,3457,4611,5819,7095,8411, 9591,10345,10475,10020,9173,8079,6667,4786,2414,-226,-2783,-5042,-7011,-8829,-10501,-11849,-12599,-12645,-12110,-11209, -10074,-8700,-7081,-5311,-3602,-2134,-978,-111,533,1005,1361,1654,1937,2303,2854,3668,4752,5980,7181,8266, 9237,10119,10807,11054,10664,9642,8211,6600,4858,2873,572,-1917,-4277,-6243,-7761,-8940,-9879,-10482,-10555,-9998, -8919,-7532,-6048,-4526,-2992,-1501,-171,878,1620,2093,2387,2597,2824,3115,3526,4084,4843,5872,7156,8554, 9835,10814,11479,11883,12023,11727,10795,9207,7171,4968,2767,513,-1887,-4386,-6727,-8625,-9952,-10800,-11306,-11476, -11210,-10401,-9133,-7625,-6098,-4668,-3368,-2198,-1208,-453,56,378,605,870,1258,1843,2607,3510,4544,5750, 7110,8487,9612,10272,10419,10169,9617,8706,7269,5263,2843,331,-2037,-4233,-6361,-8450,-10319,-11685,-12398,-12499, -12167,-11516,-10541,-9208,-7580,-5856,-4253,-2896,-1794,-936,-303,117,359,494,619,850,1290,1994,2923,3973, 5057,6163,7298,8350,9112,9353,8998,8179,7066,5712,4008,1867,-608,-3126,-5407,-7355,-9035,-10526,-11754,-12505, -12623,-12134,-11221,-10054,-8714,-7208,-5597,-4031,-2671,-1601,-827,-289,75,335,564,815,1155,1678,2467,3550, 4874,6263,7553,8684,9658,10443,10863,10706,9883,8520,6867,5069,3091,843,-1643,-4142,-6360,-8128,-9476,-10502, -11216,-11483,-11161,-10263,-8963,-7490,-5966,-4445,-2956,-1593,-452,396,972,1341,1615,1889,2248,2726,3354,4153, 5171,6419,7814,9154,10222,10917,11289,11382,11119,10339,8935,7009,4827,2610,419,-1817,-4123,-6345,-8225,-9553, -10322,-10655,-10652,-10255,-9396,-8103,-6511,-4869,-3326,-1947,-758,226,949,1426,1697,1850,2001,2248,2681,3325, 4143,5101,6183,7412,8691,9840,10615,10890,10703,10175,9330,8083,6328,4120,1695,-676,-2860,-4899,-6853,-8649, -10063,-10906,-11133,-10866,-10249,-9358,-8164,-6708,-5117,-3575,-2243,-1157,-315,305,736,1005,1197,1387,1678,2163, 2923,3945,5136,6372,7583,8763,9864,10722,11117,10896,10105,8922,7473,5746,3659,1219,-1371,-3822,-5949,-7744, -9288,-10580,-11477,-11800,-11490,-10668,-9526,-8195,-6732,-5171,-3620,-2225,-1094,-256,314,702,974,1207,1471,1825, 2324,3052,4044,5271,6601,7851,8910,9744,10371,10697,10543,9771,8405,6649,4709,2659,437,-1968,-4434,-6695, -8537,-9902,-10863,-11481,-11707,-11421,-10582,-9313,-7820,-6282,-4772,-3346,-2058,-986,-188,333,653,857,1046,1319, 1739,2326,3102,4092,5301,6689,8109,9336,10208,10694,10851,10671,10052,8868,7126,5004,2765,539,-1670,-3910, -6118,-8090,-9591,-10527,-10955,-10992,-10666,-9925,-8755,-7265,-5654,-4101,-2711,-1534,-560,186,699,1020,1219,1402, 1675,2125,2804,3691,4726,5870,7107,8400,9606,10505,10907,10785,10241,9356,8127,6448,4315,1879,-596,-2902, -5001,-6945,-8735,-10225,-11205,-11568,-11365,-10743,-9812,-8608,-7146,-5527,-3909,-2458,-1262,-330,371,870,1220,1474, 1708,2013,2476,3170,4125,5271,6495,7684,8796,9814,10630,11065,10950,10235,9052,7562,5836,3826,1501,-1038, -3540,-5779,-7660,-9218,-10504,-11452,-11907,-11784,-11123,-10088,-8842,-7476,-6033,-4587,-3248,-2149,-1327,-765,-398,-145, 77,339,708,1223,1944,2911,4130,5503,6848,8011,8920,9569,9925,9870,9242,8008,6294,4322,2239,55, -2271,-4687,-7003,-8972,-10466,-11501,-12147,-12412,-12228,-11527,-10364,-8909,-7356,-5837,-4402,-3086,-1962,-1078,-450,-31, 257,525,866,1353,2010,2846,3853,5035,6372,7746,8979,9870,10329,10394,10113,9443,8274,6561,4416,2074, -265,-2521,-4727,-6870,-8826,-10377,-11370,-11805,-11780,-11381,-10610,-9447,-7960,-6303,-4674,-3203,-1939,-899,-85,511, 915,1195,1439,1760,2248,2956,3895,5005,6204,7469,8761,9981,10962,11493,11474,10966,10070,8843,7234,5207, 2834,329,-2075,-4249,-6210,-7978,-9490,-10573,-11075,-10982,-10416,-9503,-8334,-6936,-5372,-3771,-2290,-1037,-52,698, 1254,1667,1992,2302,2670,3181,3901,4890,6090,7395,8668,9817,10830,11636,12111,12070,11432,10248,8680,6859, 4810,2498,-39,-2625,-5004,-7030,-8678,-9993,-10974,-11523,-11513,-10941,-9912,-8612,-7169,-5664,-4150,-2722,-1484,-519, 179,667,1016,1321,1647,2059,2608,3315,4229,5365,6655,7965,9101,9961,10511,10765,10646,10040,8854,7148, 5108,2925,680,-1636,-4030,-6358,-8420,-10025,-11133,-11794,-12064,-11916,-11296,-10210,-8786,-7211,-5641,-4164,-2827,-1672, -749,-73,389,698,957,1272,1727,2357,3176,4150,5277,6533,7857,9081,10014,10514,10569,10231,9530,8394, 6771,4689,2331,-77,-2405,-4628,-6760,-8730,-10370,-11499,-12048,-12084,-11699,-10955,-9853,-8427,-6793,-5120,-3570,-2225, -1101,-202,493,1011,1404,1747,2131,2660,3394,4354,5480,6707,7944,9171,10322,11264,11803,11807,11267,10287, 8965,7319,5308,2958,425,-2066,-4339,-6341,-8092,-9586,-10702,-11293,-11283,-10746,-9823,-8624,-7218,-5661,-4055,-2542, -1238,-199,575,1143,1558,1885,2190,2541,3016,3684,4586,5720,6989,8252,9396,10355,11106,11561,11575,11023, 9907,8347,6506,4467,2228,-199,-2712,-5101,-7165,-8828,-10100,-11008,-11522,-11528,-10983,-9978,-8665,-7204,-5695,-4206, -2807,-1585,-613,87,560,881,1146,1424,1803,2326,3017,3895,4978,6227,7525,8702,9608,10178,10406,10276, 9708,8606,6964,4922,2672,362,-1970,-4319,-6632,-8729,-10432,-11623,-12319,-12576,-12424,-11827,-10789,-9391,-7801,-6196, -4690,-3340,-2184,-1249,-561,-74,252,510,799,1209,1806,2602,3564,4665,5879,7158,8373,9347,9910,10003, 9660,8929,7820,6267,4272,1943,-512,-2896,-5140,-7235,-9155,-10787,-11961,-12574,-12634,-12233,-11469,-10377,-8988,-7397, -5751,-4211,-2881,-1792,-944,-324,118,435,705,1006,1436,2064,2934,4010,5214,6456,7669,8807,9773,10413, 10562,10157,9262,7987,6399,4500,2283,-163,-2640,-4951,-6984,-8715,-10169,-11266,-11890,-11946,-11453,-10517,-9297,-7875, -6330,-4737,-3217,-1886,-811,-6,572,987,1303,1604,1956,2418,3054,3918,5010,6273,7572,8763,9757,10517, 10983,11058,10616,9610,8116,6285,4252,2064,-277,-2712,-5078,-7175,-8864,-10125,-10985,-11450,-11450,-10939,-9950,-8615, -7094,-5528,-3989,-2555,-1306,-295,452,949,1278,1527,1785,2130,2619,3277,4114,5124,6304,7568,8761,9713, 10325,10571,10453,9931,8936,7432,5488,3285,982,-1306,-3580,-5800,-7852,-9567,-10801,-11515,-11760,-11586,-11005,-10021, -8697,-7145,-5550,-4049,-2715,-1580,-668,11,474,788,1025,1276,1644,2193,2960,3909,4998,6189,7434,8628, 9637,10289,10461,10163,9443,8348,6855,4947,2692,246,-2177,-4455,-6548,-8449,-10084,-11322,-12034,-12185,-11833,-11088, -10029,-8700,-7167,-5566,-4030,-2687,-1579,-725,-89,367,704,987,1297,1715,2318,3152,4211,5414,6654,7849, 8939,9852,10471,10643,10276,9375,8054,6416,4503,2324,-78,-2550,-4901,-6974,-8709,-10113,-11166,-11787,-11880,-11422, -10498,-9246,-7799,-6237,-4653,-3134,-1793,-707,111,688,1091,1393,1674,2005,2451,3055,3866,4904,6118,7413, 8622,9637,10392,10846,10943,10569,9662,8251,6447,4415,2240,-47,-2413,-4740,-6857,-8607,-9897,-10758,-11196,-11208, -10740,-9802,-8499,-6978,-5387,-3839,-2398,-1131,-80,709,1265,1635,1915,2194,2559,3065,3754,4616,5649,6825, 8098,9325,10348,11024,11296,11172,10650,9689,8248,6352,4138,1786,-565,-2859,-5067,-7134,-8905,-10233,-11042,-11338, -11190,-10637,-9697,-8409,-6877,-5252,-3693,-2285,-1102,-134,606,1138,1507,1796,2076,2454,2989,3731,4664,5734, 6879,8059,9194,10167,10822,11019,10719,9969,8831,7342,5483,3284,866,-1585,-3909,-6024,-7913,-9527,-10785,-11552, -11766,-11457,-10727,-9669,-8364,-6871,-5294,-3754,-2389,-1264,-390,254,705,1032,1301,1589,1974,2519,3286,4274, 5429,6636,7802,8846,9706,10299,10497,10186,9340,8025,6375,4462,2319,-26,-2465,-4832,-6963,-8756,-10182,-11249, -11906,-12080,-11724,-10883,-9675,-8255,-6724,-5158,-3663,-2303,-1174,-309,324,774,1113,1433,1798,2277,2902,3715, 4728,5923,7197,8423,9450,10190,10604,10661,10288,9410,8017,6206,4120,1897,-407,-2755,-5077,-7227,-9050,-10426, -11334,-11790,-11816,-11389,-10508,-9233,-7709,-6086,-4486,-3006,-1690,-592,266,887,1319,1642,1949,2328,2849,3543, 4414,5432,6583,7812,9021,10056,10765,11060,10934,10408,9466,8088,6277,4117,1775,-587,-2873,-5047,-7065,-8832, -10193,-11059,-11394,-11255,-10705,-9783,-8530,-7028,-5409,-3829,-2399,-1179,-191,569,1127,1523,1824,2115,2475,2994, 3709,4634,5713,6868,8043,9166,10142,10838,11107,10882,10168,9048,7580,5776,3655,1293,-1150,-3504,-5642,-7526, -9131,-10395,-11215,-11513,-11275,-10579,-9536,-8236,-6762,-5195,-3654,-2254,-1079,-160,517,1009,1366,1662,1975,2364, 2903,3632,4582,5704,6908,8069,9095,9916,10473,10659,10380,9568,8277,6598,4663,2522,212,-2205,-4584,-6766, -8609,-10080,-11146,-11818,-12032,-11748,-10978,-9825,-8419,-6901,-5357,-3872,-2525,-1393,-517,120,564,889,1179,1527, 1975,2581,3356,4318,5452,6693,7906,8958,9720,10141,10195,9842,9029,7720,5961,3895,1664,-633,-2945,-5222, -7359,-9210,-10644,-11594,-12074,-12115,-11727,-10909,-9712,-8240,-6651,-5075,-3613,-2317,-1236,-382,244,681,999,1290, 1650,2150,2836,3700,4726,5869,7082,8286,9355,10125,10493,10416,9915,9006,7696,5964,3879,1567,-799,-3097, -5260,-7244,-8990,-10380,-11287,-11673,-11551,-11003,-10079,-8844,-7365,-5759,-4164,-2708,-1465,-463,307,865,1266,1566, 1851,2196,2683,3370,4261,5325,6484,7645,8750,9725,10448,10794,10652,10017,8941,7502,5748,3708,1430,-969, -3310,-5463,-7342,-8916,-10164,-10991,-11331,-11140,-10477,-9446,-8151,-6690,-5150,-3623,-2221,-1031,-98,589,1082,1431, 1717,2015,2388,2904,3607,4520,5625,6836,8034,9098,9955,10540,10784,10596,9902,8712,7110,5209,3110,861, -1478,-3823,-6005,-7886,-9384,-10476,-11150,-11393,-11166,-10470,-9368,-7992,-6482,-4951,-3477,-2148,-1014,-121,530,986, 1316,1607,1939,2380,2977,3745,4691,5802,7025,8249,9341,10158,10621,10706,10383,9623,8394,6717,4686,2465, 165,-2133,-4378,-6499,-8370,-9856,-10871,-11395,-11467,-11103,-10342,-9209,-7796,-6241,-4683,-3236,-1963,-901,-71,538, 961,1266,1526,1847,2297,2937,3771,4767,5885,7079,8257,9326,10142,10573,10555,10090,9208,7944,6283,4267, 1999,-367,-2690,-4872,-6851,-8592,-9998,-10968,-11422,-11366,-10855,-9972,-8788,-7369,-5812,-4254,-2808,-1571,-574,184, 736,1127,1426,1700,2031,2496,3156,4020,5076,6240,7429,8548,9527,10271,10674,10614,10051,9025,7615,5892, 3901,1681,-675,-3023,-5210,-7133,-8737,-9991,-10854,-11246,-11132,-10531,-9533,-8258,-6806,-5278,-3761,-2352,-1143,-179, 534,1038,1400,1689,1981,2354,2862,3543,4423,5488,6677,7886,8971,9851,10453,10721,10585,9967,8856,7310, 5436,3350,1134,-1169,-3474,-5668,-7601,-9156,-10296,-11013,-11293,-11128,-10509,-9486,-8164,-6689,-5180,-3734,-2413,-1288, -394,263,717,1036,1305,1600,2014,2582,3326,4243,5318,6507,7719,8820,9674,10178,10290,9994,9280,8119, 6520,4552,2345,41,-2258,-4489,-6590,-8479,-10016,-11108,-11709,-11832,-11528,-10827,-9769,-8431,-6921,-5393,-3964,-2701, -1647,-816,-199,237,560,838,1153,1597,2222,3044,4042,5167,6358,7532,8607,9453,9937,9973,9544,8682, 7436,5823,3867,1651,-705,-3036,-5231,-7219,-8949,-10357,-11353,-11868,-11859,-11381,-10516,-9352,-7956,-6422,-4871,-3425, -2156,-1134,-355,215,622,938,1229,1570,2038,2692,3548,4596,5771,6988,8133,9127,9899,10344,10365,9888, 8920,7547,5844,3880,1709,-606,-2940,-5147,-7102,-8724,-9989,-10856,-11284,-11221,-10672,-9710,-8453,-7016,-5503,-4003, -2604,-1389,-418,309,825,1184,1469,1758,2123,2628,3302,4179,5236,6430,7665,8805,9735,10375,10679,10587, 10045,9012,7532,5695,3617,1401,-891,-3182,-5381,-7347,-8967,-10154,-10905,-11217,-11088,-10515,-9546,-8259,-6793,-5277, -3819,-2497,-1360,-454,225,694,1025,1289,1581,1968,2520,3247,4152,5210,6373,7574,8699,9600,10172,10333, 10085,9412,8311,6796,4902,2741,449,-1844,-4059,-6140,-8016,-9572,-10702,-11351,-11508,-11218,-10533,-9500,-8194,-6714, -5186,-3738,-2456,-1385,-539,88,528,852,1118,1425,1836,2420,3218,4197,5312,6488,7657,8730,9596,10140, 10251,9886,9079,7867,6301,4416,2252,-64,-2400,-4612,-6620,-8359,-9786,-10824,-11399,-11475,-11063,-10252,-9119,-7777, -6293,-4774,-3338,-2073,-1036,-243,343,763,1086,1394,1740,2207,2845,3681,4717,5884,7099,8255,9259,10024, 10479,10529,10101,9176,7811,6105,4136,1968,-331,-2671,-4916,-6932,-8626,-9934,-10843,-11328,-11341,-10870,-9980,-8766, -7358,-5863,-4372,-2979,-1759,-761,-2,534,915,1213,1513,1891,2397,3075,3935,4977,6154,7376,8531,9485, 10146,10461,10385,9876,8900,7465,5655,3580,1353,-927,-3197,-5382,-7366,-9028,-10269,-11059,-11395,-11291,-10760,-9831, -8584,-7135,-5622,-4149,-2814,-1667,-732,-31,475,825,1106,1406,1796,2345,3085,4000,5067,6236,7439,8583, 9529,10154,10375,10167,9526,8474,7013,5179,3051,762,-1550,-3788,-5877,-7763,-9355,-10547,-11266,-11495,-11255,-10611, -9622,-8347,-6894,-5373,-3905,-2590,-1487,-603,65,558,925,1236,1571,2007,2601,3400,4383,5508,6697,7870, 8942,9819,10385,10537,10213,9424,8211,6644,4767,2630,315,-2040,-4312,-6374,-8163,-9635,-10732,-11383,-11545,-11216, -10459,-9371,-8051,-6588,-5083,-3627,-2324,-1242,-394,237,700,1062,1395,1776,2261,2903,3736,4755,5921,7139, 8305,9310,10080,10536,10607,10217,9340,8003,6303,4327,2163,-135,-2465,-4733,-6801,-8553,-9925,-10883,-11411,-11491, -11097,-10273,-9110,-7720,-6232,-4749,-3344,-2098,-1062,-253,345,775,1120,1455,1866,2400,3097,3974,5021,6199, 7424,8595,9585,10280,10609,10544,10048,9110,7719,5935,3867,1634,-664,-2939,-5136,-7143,-8854,-10162,-11013,-11396, -11334,-10844,-9964,-8764,-7335,-5816,-4322,-2947,-1756,-770,-2,570,990,1330,1674,2105,2683,3442,4380,5460, 6636,7833,8964,9921,10566,10813,10615,9981,8925,7474,5661,3548,1254,-1088,-3357,-5474,-7376,-8993,-10236,-11015, -11300,-11113,-10497,-9526,-8279,-6837,-5312,-3823,-2467,-1308,-380,339,873,1283,1631,1994,2441,3046,3837,4822, 5951,7154,8325,9396,10272,10851,11030,10754,9994,8798,7229,5357,3232,936,-1439,-3738,-5849,-7682,-9188,-10316, -11015,-11232,-10966,-10253,-9195,-7882,-6430,-4928,-3473,-2153,-1043,-164,498,980,1358,1698,2081,2566,3196,4008, 5009,6152,7373,8542,9564,10337,10799,10882,10519,9684,8384,6689,4707,2529,240,-2098,-4376,-6476,-8283,-9717, -10727,-11296,-11418,-11085,-10316,-9199,-7833,-6353,-4868,-3458,-2205,-1156,-329,287,731,1080,1406,1796,2311,2983, 3829,4842,5982,7184,8338,9330,10045,10395,10338,9862,8945,7600,5853,3799,1557,-758,-3054,-5248,-7267,-9006, -10367,-11278,-11709,-11680,-11230,-10389,-9223,-7822,-6314,-4817,-3428,-2219,-1220,-435,156,592,947,1294,1717,2271, 3010,3930,5002,6162,7350,8480,9441,10121,10411,10255,9651,8623,7206,5436,3370,1104,-1236,-3522,-5656,-7566, -9187,-10446,-11269,-11596,-11444,-10849,-9893,-8658,-7229,-5711,-4211,-2833,-1647,-697,43,597,1019,1382,1744,2197, 2790,3559,4523,5639,6838,8023,9102,9989,10596,10820,10600,9904,8749,7215,5372,3285,1025,-1312,-3608,-5726, -7583,-9097,-10231,-10942,-11183,-10953,-10271,-9222,-7924,-6471,-4974,-3521,-2208,-1086,-201,462,943,1308,1623,1978, 2432,3039,3815,4775,5894,7095,8275,9313,10118,10606,10725,10414,9644,8414,6775,4825,2666,393,-1916,-4175, -6273,-8100,-9552,-10587,-11174,-11308,-11000,-10274,-9181,-7839,-6365,-4878,-3479,-2226,-1169,-346,271,714,1055,1361, 1723,2205,2857,3679,4669,5789,6976,8139,9154,9909,10308,10300,9861,8996,7703,6019,4010,1791,-518,-2812, -5005,-7021,-8776,-10164,-11117,-11589,-11586,-11154,-10338,-9192,-7818,-6317,-4815,-3419,-2194,-1181,-388,210,650,1002, 1334,1736,2264,2968,3857,4907,6057,7234,8352,9320,10023,10363,10267,9708,8718,7339,5609,3586,1353,-971, -3268,-5411,-7325,-8950,-10220,-11073,-11453,-11337,-10777,-9839,-8624,-7213,-5707,-4217,-2843,-1656,-693,44,599,1016, 1370,1723,2149,2714,3454,4381,5476,6665,7854,8942,9835,10455,10719,10543,9899,8799,7296,5479,3413,1182, -1130,-3419,-5562,-7433,-8972,-10124,-10854,-11128,-10935,-10297,-9284,-7997,-6559,-5066,-3618,-2298,-1170,-264,410,907, 1274,1598,1948,2398,2995,3765,4710,5811,7005,8190,9254,10084,10597,10738,10456,9724,8537,6939,5009,2862, 592,-1703,-3956,-6056,-7897,-9386,-10448,-11062,-11214,-10921,-10218,-9155,-7823,-6349,-4852,-3433,-2166,-1097,-244,390, 853,1199,1511,1865,2334,2968,3776,4750,5856,7026,8181,9202,9983,10415,10439,10026,9185,7928,6281,4309, 2100,-211,-2516,-4719,-6742,-8506,-9925,-10917,-11436,-11474,-11073,-10280,-9166,-7809,-6324,-4825,-3418,-2178,-1153,-346, 259,710,1061,1396,1778,2284,2960,3822,4845,5984,7146,8257,9219,9938,10301,10240,9713,8742,7378,5667, 3670,1463,-860,-3166,-5346,-7299,-8954,-10256,-11150,-11582,-11530,-11017,-10123,-8937,-7546,-6059,-4573,-3190,-1980,-988, -223,349,788,1147,1508,1938,2492,3215,4120,5185,6358,7537,8622,9514,10134,10406,10260,9655,8591,7111, 5309,3257,1040,-1251,-3526,-5677,-7573,-9144,-10322,-11076,-11384,-11231,-10636,-9660,-8394,-6957,-5465,-4007,-2669,-1516, -571,152,683,1084,1431,1798,2256,2854,3630,4573,5657,6845,8029,9103,9950,10480,10638,10377,9680,8546, 6989,5098,2974,711,-1578,-3805,-5899,-7750,-9257,-10350,-10990,-11175,-10910,-10234,-9206,-7901,-6433,-4927,-3489,-2194, -1097,-212,460,959,1342,1683,2055,2535,3172,3989,4968,6066,7238,8383,9420,10214,10674,10721,10332,9499, 8259,6636,4692,2504,188,-2131,-4346,-6385,-8168,-9616,-10652,-11221,-11312,-10945,-10182,-9091,-7762,-6287,-4792,-3368, -2103,-1051,-215,416,890,1260,1602,1988,2485,3142,3983,4998,6116,7272,8376,9328,10035,10411,10375,9883, 8930,7575,5868,3882,1677,-641,-2969,-5171,-7165,-8849,-10193,-11121,-11602,-11612,-11157,-10301,-9133,-7764,-6278,-4795, -3398,-2169,-1154,-356,241,695,1068,1435,1866,2409,3114,3996,5037,6183,7359,8444,9342,9963,10244,10117, 9546,8515,7073,5283,3247,1043,-1239,-3512,-5666,-7604,-9210,-10427,-11221,-11563,-11460,-10911,-9977,-8740,-7311,-5812, -4339,-2976,-1785,-802,-34,542,985,1366,1752,2225,2834,3601,4543,5618,6779,7953,9024,9888,10436,10603, 10359,9683,8574,7055,5190,3080,822,-1466,-3693,-5784,-7653,-9189,-10327,-11009,-11234,-11006,-10367,-9368,-8091,-6640, -5129,-3672,-2356,-1225,-306,405,941,1355,1725,2111,2596,3229,4034,5010,6103,7255,8392,9415,10215,10690, 10758,10384,9572,8344,6744,4823,2662,356,-1971,-4199,-6247,-8041,-9507,-10576,-11185,-11318,-10993,-10261,-9198,-7899, -6442,-4954,-3525,-2251,-1178,-324,328,817,1201,1553,1944,2440,3083,3913,4908,6019,7175,8279,9233,9954, 10344,10336,9880,8966,7631,5947,3976,1796,-508,-2829,-5045,-7057,-8778,-10141,-11095,-11612,-11662,-11252,-10433,-9292, -7936,-6462,-4978,-3573,-2328,-1286,-462,162,633,1018,1398,1825,2369,3063,3932,4957,6090,7260,8354,9266, 9909,10206,10102,9568,8584,7171,5405,3377,1177,-1104,-3376,-5547,-7499,-9154,-10413,-11249,-11634,-11575,-11076,-10181, -8982,-7576,-6077,-4597,-3225,-2014,-1011,-223,382,837,1224,1609,2076,2665,3418,4330,5383,6525,7680,8749, 9620,10188,10379,10154,9503,8430,6945,5123,3029,788,-1505,-3745,-5842,-7723,-9298,-10479,-11212,-11482,-11299,-10700, -9740,-8496,-7074,-5575,-4114,-2777,-1630,-693,42,601,1028,1403,1794,2269,2889,3674,4629,5713,6852,7978, 9003,9808,10317,10425,10097,9321,8131,6569,4692,2570,299,-2012,-4239,-6289,-8086,-9556,-10644,-11283,-11457,-11165, -10461,-9421,-8130,-6691,-5205,-3773,-2481,-1384,-511,165,673,1072,1432,1828,2319,2961,3770,4755,5860,7018, 8131,9107,9849,10276,10312,9908,9051,7774,6125,4198,2051,-212,-2500,-4711,-6723,-8447,-9820,-10787,-11315,-11390, -11010,-10222,-9106,-7763,-6304,-4825,-3423,-2169,-1118,-288,344,815,1192,1556,1972,2498,3178,4020,5022,6143, 7306,8404,9345,10018,10350,10284,9793,8859,7505,5781,3783,1604,-656,-2918,-5075,-7041,-8710,-10005,-10871,-11285, -11249,-10782,-9925,-8755,-7372,-5890,-4422,-3049,-1842,-840,-52,549,1007,1378,1741,2175,2734,3456,4342,5375, 6499,7643,8710,9606,10209,10444,10268,9662,8637,7209,5438,3388,1172,-1106,-3343,-5441,-7320,-8908,-10117,-10888, -11195,-11045,-10475,-9546,-8327,-6923,-5443,-3982,-2649,-1492,-551,180,736,1164,1526,1898,2349,2936,3689,4613, 5678,6815,7940,8967,9801,10340,10508,10240,9522,8395,6882,5063,2991,759,-1519,-3749,-5800,-7602,-9085,-10192, -10864,-11077,-10826,-10160,-9147,-7883,-6467,-5000,-3575,-2286,-1186,-306,371,873,1267,1616,1994,2465,3080,3861, 4811,5896,7045,8159,9145,9904,10359,10431,10075,9273,8043,6440,4534,2424,184,-2088,-4291,-6319,-8064,-9465, -10466,-11027,-11145,-10812,-10072,-8998,-7686,-6248,-4794,-3404,-2162,-1117,-288,340,804,1173,1516,1908,2407,3055, 3877,4853,5945,7099,8197,9149,9846,10205,10176,9723,8838,7530,5856,3886,1722,-527,-2779,-4936,-6901,-8590, -9914,-10818,-11261,-11261,-10829,-10012,-8879,-7523,-6065,-4610,-3236,-2039,-1035,-249,350,797,1169,1519,1939,2481, 3183,4055,5069,6183,7331,8407,9326,9973,10258,10133,9578,8599,7222,5500,3498,1310,-955,-3180,-5282,-7166, -8762,-9993,-10802,-11142,-11026,-10488,-9587,-8399,-7019,-5550,-4101,-2758,-1594,-642,105,670,1104,1467,1835,2280, 2852,3595,4508,5561,6693,7828,8862,9717,10288,10497,10283,9621,8530,7063,5271,3231,1029,-1240,-3463,-5530, -7358,-8863,-9997,-10710,-10966,-10763,-10141,-9162,-7922,-6526,-5067,-3651,-2355,-1244,-347,339,857,1259,1615,1987, 2456,3052,3820,4751,5817,6959,8074,9069,9843,10321,10424,10110,9347,8157,6586,4709,2611,389,-1875,-4077, -6123,-7898,-9334,-10369,-10976,-11126,-10844,-10147,-9118,-7834,-6419,-4966,-3582,-2333,-1274,-428,216,697,1073,1420, 1803,2301,2934,3744,4702,5786,6926,8028,8996,9717,10107,10108,9695,8844,7579,5944,4004,1858,-383,-2628, -4784,-6766,-8476,-9834,-10777,-11268,-11311,-10919,-10142,-9048,-7723,-6283,-4830,-3469,-2260,-1242,-437,177,643,1021, 1381,1792,2324,3014,3877,4883,5990,7130,8216,9142,9810,10133,10042,9520,8573,7231,5539,3562,1391,-868, -3108,-5221,-7131,-8752,-10018,-10871,-11268,-11203,-10715,-9851,-8702,-7347,-5894,-4449,-3105,-1920,-947,-181,398,852, 1230,1611,2053,2625,3353,4254,5300,6429,7564,8611,9475,10066,10302,10124,9500,8441,6996,5227,3204,1014, -1252,-3486,-5579,-7439,-8984,-10151,-10911,-11216,-11068,-10488,-9555,-8345,-6962,-5510,-4087,-2782,-1643,-712,11,558, 985,1360,1751,2225,2832,3598,4529,5590,6729,7860,8876,9670,10168,10302,10024,9303,8155,6620,4772,2689, 474,-1783,-3989,-6044,-7854,-9328,-10402,-11050,-11245,-10998,-10343,-9345,-8081,-6667,-5206,-3803,-2530,-1432,-548,139, 655,1069,1442,1849,2353,3007,3814,4782,5861,6998,8113,9098,9846,10273,10310,9929,9116,7891,6291,4385, 2259,25,-2220,-4383,-6374,-8109,-9503,-10487,-11031,-11115,-10764,-10021,-8962,-7666,-6237,-4778,-3398,-2169,-1124,-283, 358,850,1253,1631,2053,2584,3272,4123,5129,6234,7371,8454,9392,10077,10426,10370,9881,8960,7640,5973, 4020,1863,-392,-2639,-4771,-6704,-8359,-9662,-10555,-11003,-10998,-10550,-9729,-8606,-7285,-5847,-4412,-3059,-1868,-873, -87,522,986,1381,1770,2219,2780,3501,4389,5424,6547,7684,8734,9608,10212,10472,10322,9735,8709,7287, 5534,3528,1347,-907,-3150,-5256,-7141,-8715,-9921,-10707,-11055,-10951,-10422,-9522,-8338,-6974,-5530,-4105,-2783,-1633, -678,70,636,1084,1469,1874,2345,2954,3713,4637,5689,6825,7957,8987,9811,10334,10499,10254,9582,8474, 6972,5147,3086,881,-1369,-3572,-5633,-7467,-8968,-10080,-10761,-10996,-10783,-10167,-9195,-7961,-6562,-5112,-3699,-2415, -1308,-404,303,842,1265,1645,2054,2550,3188,3992,4949,6025,7157,8271,9263,10028,10480,10548,10198,9419, 8222,6653,4771,2660,420,-1829,-4005,-6013,-7770,-9203,-10235,-10820,-10956,-10647,-9950,-8925,-7650,-6242,-4795,-3411, -2168,-1112,-260,400,906,1313,1692,2115,2634,3299,4131,5120,6206,7329,8410,9342,10038,10404,10379,9911, 9017,7715,6062,4125,1981,-276,-2540,-4701,-6666,-8352,-9698,-10646,-11145,-11195,-10801,-10025,-8940,-7646,-6231,-4802, -3449,-2244,-1233,-432,190,672,1066,1457,1903,2455,3158,4030,5043,6151,7279,8323,9201,9817,10094,9972, 9412,8419,7022,5283,3288,1117,-1146,-3390,-5518,-7433,-9047,-10297,-11130,-11524,-11470,-10984,-10129,-8974,-7630,-6196, -4774,-3445,-2276,-1306,-529,66,532,931,1341,1819,2421,3176,4089,5137,6267,7395,8432,9271,9818,10001, 9784,9132,8062,6592,4793,2747,549,-1703,-3913,-5988,-7835,-9371,-10522,-11241,-11514,-11344,-10762,-9827,-8611,-7225, -5770,-4355,-3046,-1915,-983,-242,329,778,1179,1599,2107,2748,3548,4503,5575,6710,7824,8824,9617,10100, 10199,9882,9133,7974,6434,4582,2495,267,-1993,-4170,-6193,-7966,-9423,-10487,-11116,-11281,-11015,-10341,-9331,-8078, -6673,-5220,-3817,-2544,-1460,-575,118,650,1083,1483,1912,2437,3100,3929,4912,6003,7136,8218,9167,9886, 10281,10291,9871,9015,7759,6132,4228,2108,-131,-2395,-4559,-6539,-8245,-9613,-10583,-11120,-11201,-10845,-10095,-9026, -7737,-6322,-4888,-3517,-2287,-1253,-416,232,734,1155,1551,1998,2546,3247,4099,5100,6205,7332,8392,9287, 9928,10233,10145,9632,8684,7332,5627,3659,1507,-733,-2973,-5103,-7031,-8665,-9942,-10806,-11226,-11206,-10761,-9932, -8804,-7470,-6045,-4617,-3280,-2094,-1105,-309,298,784,1188,1596,2065,2657,3391,4291,5321,6433,7557,8594, 9442,10017,10233,10049,9435,8400,6970,5203,3180,998,-1248,-3460,-5537,-7397,-8955,-10146,-10900,-11207,-11072,-10531, -9620,-8435,-7067,-5625,-4208,-2897,-1756,-811,-60,519,980,1381,1795,2289,2912,3695,4633,5695,6824,7936, 8944,9746,10256,10389,10104,9394,8262,6759,4934,2871,661,-1592,-3788,-5812,-7607,-9082,-10174,-10839,-11048,-10806, -10170,-9186,-7954,-6566,-5123,-3721,-2443,-1348,-454,247,790,1226,1620,2043,2557,3211,4022,4984,6065,7195, 8284,9241,9975,10402,10445,10071,9253,8025,6435,4543,2443,219,-2036,-4211,-6203,-7933,-9321,-10324,-10890,-11007, -10685,-9967,-8923,-7648,-6247,-4819,-3445,-2204,-1154,-307,357,863,1283,1676,2112,2650,3336,4173,5162,6255, 7378,8442,9346,10003,10338,10278,9801,8894,7577,5903,3954,1809,-421,-2661,-4799,-6747,-8414,-9723,-10628,-11094, -11113,-10704,-9920,-8826,-7514,-6101,-4677,-3340,-2142,-1135,-331,302,789,1203,1610,2072,2652,3376,4253,5266, 6362,7477,8515,9372,9959,10199,10032,9448,8442,7039,5304,3293,1118,-1129,-3347,-5445,-7328,-8917,-10144,-10953, -11314,-11223,-10729,-9869,-8716,-7377,-5946,-4535,-3218,-2057,-1096,-329,277,756,1172,1591,2086,2702,3472,4394, 5448,6563,7663,8673,9475,9995,10149,9885,9195,8090,6610,4803,2751,547,-1706,-3908,-5962,-7776,-9277,-10404, -11112,-11367,-11175,-10576,-9631,-8425,-7055,-5618,-4211,-2918,-1794,-869,-136,439,905,1327,1766,2285,2946,3755, 4712,5791,6919,8015,8981,9723,10165,10235,9881,9099,7899,6330,4471,2383,168,-2077,-4261,-6268,-8020,-9437, -10466,-11066,-11224,-10934,-10253,-9237,-7973,-6575,-5134,-3744,-2477,-1394,-505,191,742,1187,1612,2067,2618,3308, 4152,5135,6222,7350,8427,9346,10024,10377,10349,9901,9028,7741,6099,4172,2043,-185,-2417,-4560,-6522,-8207, -9551,-10486,-10987,-11038,-10665,-9910,-8836,-7538,-6123,-4683,-3334,-2112,-1075,-233,427,950,1385,1805,2274,2851, 3569,4443,5443,6537,7645,8684,9550,10155,10424,10286,9726,8750,7382,5668,3680,1511,-733,-2953,-5063,-6961, -8578,-9839,-10684,-11087,-11041,-10571,-9745,-8620,-7297,-5873,-4453,-3123,-1949,-961,-165,457,954,1381,1806,2293, 2896,3656,4561,5588,6689,7783,8786,9597,10130,10308,10074,9409,8332,6875,5097,3069,882,-1364,-3570,-5633, -7466,-8994,-10154,-10896,-11191,-11041,-10482,-9564,-8379,-7026,-5591,-4187,-2885,-1745,-800,-48,540,1017,1439,1884, 2395,3035,3827,4767,5821,6939,8027,8998,9748,10207,10301,9984,9232,8074,6533,4693,2631,431,-1804,-3979, -5996,-7760,-9195,-10251,-10877,-11069,-10820,-10163,-9176,-7935,-6551,-5113,-3722,-2454,-1360,-458,249,803,1258,1674, 2125,2663,3330,4153,5118,6189,7307,8373,9309,10001,10380,10380,9965,9122,7878,6271,4372,2267,52,-2173, -4316,-6288,-7991,-9355,-10313,-10844,-10930,-10585,-9859,-8814,-7536,-6130,-4702,-3342,-2120,-1076,-226,433,952,1390, 1798,2254,2808,3504,4349,5336,6406,7510,8544,9425,10051,10342,10240,9723,8780,7448,5767,3814,1670,-568, -2786,-4895,-6806,-8438,-9719,-10594,-11028,-11013,-10581,-9774,-8674,-7369,-5957,-4542,-3212,-2036,-1042,-245,378,869, 1288,1700,2173,2751,3478,4355,5367,6451,7546,8553,9378,9932,10142,9956,9341,8304,6888,5147,3154,989, -1245,-3448,-5514,-7356,-8899,-10079,-10846,-11174,-11059,-10531,-9644,-8487,-7149,-5731,-4330,-3028,-1886,-937,-177,412, 886,1304,1731,2232,2850,3617,4539,5575,6675,7770,8741,9517,10000,10125,9854,9150,8029,6536,4731,2699, 521,-1701,-3869,-5886,-7667,-9129,-10209,-10866,-11089,-10873,-10256,-9298,-8087,-6714,-5294,-3909,-2642,-1542,-635,83, 639,1095,1508,1943,2468,3119,3920,4866,5918,7020,8091,9033,9749,10149,10184,9809,9018,7813,6247,4380, 2302,101,-2113,-4253,-6222,-7939,-9320,-10311,-10873,-10982,-10678,-9981,-8964,-7714,-6324,-4906,-3546,-2321,-1272,-423, 249,769,1195,1596,2038,2576,3246,4073,5041,6101,7190,8229,9123,9779,10099,10039,9567,8671,7382,5752, 3834,1724,-494,-2700,-4807,-6717,-8365,-9657,-10561,-11022,-11037,-10636,-9856,-8780,-7497,-6100,-4690,-3358,-2178,-1181, -375,255,744,1155,1557,2011,2574,3273,4134,5130,6206,7297,8307,9153,9741,9987,9847,9282,8296,6927, 5230,3273,1142,-1072,-3260,-5324,-7176,-8737,-9933,-10730,-11088,-11006,-10514,-9657,-8522,-7206,-5797,-4401,-3100,-1952, -998,-232,364,835,1255,1671,2151,2753,3497,4395,5417,6512,7596,8585,9384,9896,10056,9820,9169,8097, 6647,4882,2874,723,-1486,-3651,-5675,-7468,-8954,-10061,-10749,-11003,-10824,-10249,-9322,-8135,-6789,-5373,-3993,-2719, -1612,-697,28,599,1056,1465,1897,2415,3049,3835,4764,5809,6904,7976,8928,9666,10104,10168,9831,9075, 7916,6383,4552,2497,317,-1894,-4032,-6012,-7742,-9152,-10176,-10768,-10924,-10651,-9984,-8998,-7769,-6400,-4987,-3620, -2381,-1323,-453,234,773,1213,1623,2063,2602,3273,4092,5053,6114,7205,8252,9157,9832,10188,10162,9724, 8868,7614,6009,4118,2022,-180,-2389,-4504,-6431,-8097,-9422,-10350,-10854,-10910,-10546,-9804,-8752,-7485,-6103,-4692, -3358,-2152,-1138,-313,339,855,1284,1695,2157,2723,3426,4275,5263,6338,7431,8451,9308,9907,10176,10057, 9527,8566,7216,5540,3596,1469,-738,-2936,-5022,-6898,-8492,-9730,-10563,-10964,-10931,-10484,-9666,-8562,-7260,-5861, -4465,-3155,-1986,-1009,-218,403,895,1326,1753,2239,2843,3583,4469,5484,6570,7653,8643,9448,9974,10158, 9939,9306,8263,6832,5079,3086,934,-1276,-3456,-5498,-7320,-8841,-9989,-10723,-11027,-10892,-10355,-9469,-8309,-6975, -5572,-4184,-2900,-1774,-835,-84,511,993,1412,1856,2372,3005,3784,4704,5740,6831,7896,8855,9602,10058, 10148,9831,9097,7965,6463,4648,2605,433,-1781,-3930,-5934,-7688,-9130,-10191,-10827,-11029,-10795,-10174,-9218,-8016, -6658,-5249,-3876,-2621,-1534,-640,76,636,1102,1529,1985,2521,3187,4003,4953,6004,7096,8137,9049,9738, 10111,10116,9699,8868,7641,6056,4186,2109,-88,-2297,-4424,-6373,-8059,-9422,-10392,-10934,-11038,-10714,-10012,-8997, -7752,-6379,-4980,-3630,-2412,-1368,-515,162,696,1152,1575,2047,2610,3309,4152,5131,6197,7285,8302,9164, 9776,10063,9969,9456,8531,7211,5550,3622,1509,-697,-2894,-4994,-6897,-8518,-9791,-10665,-11110,-11122,-10717,-9943, -8867,-7589,-6202,-4810,-3485,-2305,-1300,-487,161,677,1121,1556,2054,2653,3388,4263,5265,6342,7425,8415, 9228,9773,9975,9786,9178,8164,6765,5029,3055,911,-1302,-3477,-5534,-7382,-8931,-10118,-10899,-11238,-11148,-10649, -9796,-8669,-7354,-5949,-4561,-3262,-2112,-1142,-364,257,763,1212,1664,2191,2824,3608,4524,5559,6647,7722, 8686,9447,9925,10042,9760,9054,7950,6473,4686,2669,497,-1717,-3872,-5883,-7658,-9129,-10228,-10911,-11148,-10957, -10369,-9447,-8267,-6920,-5510,-4132,-2853,-1742,-807,-61,537,1033,1484,1956,2510,3183,4004,4954,6006,7099, 8156,9076,9779,10177,10206,9826,9020,7820,6266,4412,2349,162,-2048,-4185,-6158,-7874,-9261,-10270,-10857,-11001, -10725,-10064,-9075,-7851,-6483,-5081,-3721,-2478,-1408,-518,191,759,1239,1691,2172,2752,3455,4301,5273,6337, 7426,8452,9323,9954,10260,10192,9707,8808,7511,5875,3963,1857,-347,-2549,-4656,-6583,-8237,-9545,-10461,-10948, -11002,-10639,-9899,-8858,-7602,-6222,-4826,-3494,-2293,-1266,-423,247,786,1252,1704,2204,2809,3541,4415,5409, 6481,7560,8558,9378,9939,10165,10001,9418,8428,7055,5350,3382,1247,-960,-3144,-5219,-7084,-8662,-9887,-10705, -11093,-11046,-10588,-9775,-8671,-7376,-5988,-4598,-3294,-2130,-1144,-342,298,816,1278,1740,2259,2896,3668,4576, 5600,6679,7752,8726,9501,10003,10148,9890,9220,8148,6696,4937,2933,776,-1434,-3596,-5619,-7420,-8916,-10044, -10764,-11044,-10892,-10343,-9450,-8294,-6970,-5564,-4184,-2903,-1773,-831,-64,545,1045,1506,1976,2522,3189,3990, 4934,5980,7066,8122,9057,9773,10202,10266,9919,9156,7990,6466,4647,2603,432,-1771,-3910,-5892,-7626,-9043, -10078,-10699,-10880,-10635,-10003,-9045,-7845,-6492,-5090,-3734,-2483,-1397,-497,221,798,1277,1728,2205,2769,3457, 4282,5249,6300,7379,8413,9298,9947,10288,10254,9817,8960,7707,6108,4227,2144,-42,-2236,-4346,-6281,-7953, -9287,-10232,-10753,-10838,-10510,-9801,-8789,-7548,-6186,-4790,-3464,-2258,-1222,-373,309,854,1316,1761,2246,2832, 3548,4405,5381,6438,7508,8512,9350,9932,10191,10068,9529,8585,7252,5585,3654,1542,-651,-2828,-4900,-6771, -8367,-9616,-10463,-10886,-10869,-10449,-9662,-8589,-7316,-5943,-4559,-3254,-2087,-1095,-287,355,876,1332,1782,2286, 2897,3651,4540,5547,6614,7682,8654,9445,9967,10145,9930,9298,8263,6855,5125,3153,1014,-1180,-3341,-5371, -7181,-8697,-9855,-10601,-10921,-10809,-10291,-9429,-8308,-7004,-5619,-4252,-2973,-1845,-901,-133,478,977,1427,1888, 2413,3055,3837,4756,5784,6862,7913,8859,9589,10035,10129,9822,9099,7967,6484,4692,2679,519,-1673,-3809, -5800,-7552,-8990,-10055,-10702,-10922,-10714,-10117,-9190,-8014,-6690,-5303,-3948,-2707,-1621,-720,1,578,1052,1495, 1962,2505,3172,3983,4925,5962,7035,8067,8967,9639,10006,10012,9611,8798,7588,6027,4180,2123,-46,-2232, -4339,-6278,-7962,-9318,-10293,-10844,-10961,-10658,-9977,-8990,-7777,-6428,-5042,-3709,-2502,-1457,-598,89,635,1096, 1531,2012,2579,3276,4118,5081,6131,7203,8212,9068,9681,9973,9893,9404,8502,7215,5590,3697,1613,-563, -2734,-4799,-6677,-8290,-9560,-10430,-10883,-10899,-10497,-9746,-8695,-7436,-6073,-4690,-3381,-2211,-1208,-391,262,788, 1237,1684,2178,2776,3508,4379,5370,6434,7498,8476,9281,9828,10041,9866,9278,8290,6916,5224,3281,1171, -1010,-3164,-5196,-7017,-8553,-9734,-10514,-10861,-10781,-10295,-9465,-8363,-7073,-5699,-4336,-3052,-1924,-965,-188,427, 926,1370,1819,2330,2952,3715,4613,5627,6695,7748,8688,9441,9914,10036,9766,9084,8001,6545,4783,2788, 654,-1533,-3669,-5664,-7426,-8885,-9976,-10655,-10904,-10729,-10162,-9261,-8101,-6786,-5409,-4059,-2806,-1717,-803,-75, 509,992,1426,1883,2422,3071,3863,4792,5819,6888,7921,8830,9525,9923,9960,9598,8825,7658,6133,4309, 2280,130,-2052,-4158,-6103,-7803,-9178,-10177,-10751,-10896,-10630,-9974,-9011,-7808,-6470,-5088,-3753,-2534,-1488,-613, 83,643,1109,1543,2021,2582,3266,4094,5049,6089,7158,8170,9040,9683,10001,9949,9496,8631,7384,5784, 3912,1853,-315,-2484,-4559,-6448,-8077,-9374,-10281,-10759,-10812,-10456,-9721,-8695,-7460,-6109,-4732,-3423,-2238,-1228, -391,269,803,1260,1701,2189,2778,3490,4351,5327,6381,7443,8423,9243,9807,10043,9898,9346,8382,7045, 5372,3449,1352,-827,-2983,-5024,-6868,-8428,-9639,-10456,-10844,-10805,-10361,-9562,-8486,-7219,-5860,-4500,-3216,-2071, -1107,-315,314,828,1279,1728,2238,2857,3611,4493,5495,6559,7612,8564,9325,9821,9966,9729,9078,8026, 6600,4862,2890,768,-1413,-3556,-5562,-7348,-8831,-9955,-10671,-10959,-10825,-10304,-9429,-8304,-7006,-5638,-4290,-3032, -1922,-992,-233,371,872,1323,1788,2331,2986,3776,4703,5723,6800,7839,8758,9471,9893,9954,9624,8882, 7743,6246,4445,2429,280,-1895,-4014,-5972,-7694,-9101,-10141,-10761,-10951,-10723,-10113,-9177,-8007,-6677,-5308,-3964, -2732,-1657,-761,-33,552,1044,1501,1985,2554,3246,4070,5025,6062,7135,8148,9030,9680,10024,9994,9565, 8727,7499,5927,4068,2013,-148,-2328,-4417,-6333,-7990,-9321,-10269,-10800,-10897,-10582,-9897,-8899,-7686,-6339,-4967, -3640,-2438,-1397,-542,159,719,1207,1671,2173,2772,3491,4347,5320,6374,7436,8419,9246,9824,10083,9958, 9432,8498,7179,5533,3622,1531,-641,-2810,-4870,-6734,-8322,-9572,-10431,-10860,-10867,-10465,-9700,-8650,-7397,-6036, -4671,-3368,-2199,-1196,-372,298,840,1322,1792,2319,2943,3696,4581,5582,6639,7692,8647,9421,9921,10096, 9875,9250,8218,6819,5097,3136,1020,-1161,-3313,-5337,-7142,-8661,-9824,-10582,-10917,-10822,-10337,-9501,-8399,-7116, -5746,-4388,-3114,-1977,-1017,-230,411,936,1417,1894,2443,3101,3892,4806,5827,6888,7927,8848,9564,9996, 10078,9761,9042,7920,6439,4655,2645,501,-1677,-3810,-5789,-7537,-8980,-10053,-10716,-10949,-10761,-10190,-9284,-8132, -6823,-5448,-4104,-2856,-1759,-837,-86,525,1034,1502,1996,2565,3251,4070,5012,6047,7110,8131,9007,9665, 10023,10019,9606,8793,7589,6032,4192,2142,-21,-2199,-4303,-6240,-7921,-9281,-10265,-10832,-10971,-10688,-10030,-9067, -7866,-6534,-5158,-3830,-2611,-1552,-670,45,626,1122,1598,2105,2693,3411,4262,5227,6275,7334,8326,9164, 9758,10036,9942,9439,8537,7244,5624,3726,1650,-516,-2683,-4759,-6641,-8251,-9521,-10411,-10878,-10918,-10541,-9812, -8781,-7543,-6194,-4821,-3517,-2326,-1307,-462,222,790,1275,1755,2281,2903,3652,4530,5524,6576,7631,8596, 9379,9906,10106,9919,9324,8334,6962,5271,3323,1220,-955,-3101,-5135,-6955,-8498,-9682,-10473,-10849,-10791,-10333, -9527,-8445,-7180,-5818,-4459,-3175,-2027,-1048,-246,405,946,1426,1914,2455,3099,3877,4786,5789,6849,7885, 8812,9542,9994,10102,9818,9126,8039,6589,4833,2844,710,-1466,-3600,-5592,-7358,-8824,-9923,-10623,-10896,-10744, -10202,-9334,-8204,-6908,-5542,-4195,-2945,-1841,-899,-135,484,1007,1479,1970,2534,3209,4012,4943,5962,7019, 8037,8925,9596,9969,9993,9614,8833,7658,6135,4322,2290,143,-2035,-4139,-6088,-7787,-9170,-10181,-10783,-10957, -10713,-10086,-9148,-7974,-6653,-5283,-3951,-2727,-1656,-752,-31,570,1074,1553,2058,2642,3345,4185,5139,6172, 7230,8224,9073,9678,9975,9915,9442,8569,7314,5721,3854,1795,-368,-2531,-4603,-6502,-8131,-9436,-10348,-10852, -10927,-10592,-9890,-8888,-7667,-6328,-4961,-3649,-2452,-1416,-554,142,721,1216,1698,2221,2837,3568,4433,5408, 6452,7498,8465,9264,9803,10023,9868,9303,8339,6999,5335,3416,1324,-843,-2990,-5025,-6869,-8429,-9645,-10467, -10870,-10851,-10425,-9650,-8595,-7340,-5992,-4627,-3339,-2178,-1183,-362,306,857,1347,1831,2371,3009,3773,4671, 5661,6708,7741,8675,9420,9889,10025,9774,9118,8061,6646,4917,2954,835,-1335,-3464,-5461,-7246,-8729,-9861, -10589,-10896,-10778,-10267,-9418,-8315,-7030,-5674,-4322,-3060,-1934,-985,-200,431,967,1446,1937,2499,3158,3950, 4872,5884,6938,7953,8847,9541,9939,9990,9653,8906,7765,6276,4492,2495,358,-1812,-3918,-5869,-7589,-8990, -10029,-10656,-10863,-10652,-10056,-9138,-7984,-6675,-5309,-3972,-2741,-1660,-750,-3,601,1113,1596,2097,2676,3367, 4190,5132,6157,7209,8213,9064,9701,10025,9991,9566,8732,7509,5954,4118,2080,-63,-2222,-4291,-6195,-7845, -9163,-10106,-10635,-10743,-10439,-9767,-8791,-7595,-6264,-4905,-3586,-2390,-1346,-479,228,806,1303,1781,2295,2897, 3615,4466,5434,6464,7513,8488,9300,9869,10116,9992,9469,8552,7248,5621,3734,1663,-487,-2630,-4671,-6513, -8097,-9333,-10182,-10614,-10630,-10241,-9494,-8466,-7240,-5897,-4546,-3255,-2095,-1097,-269,400,951,1440,1917,2447, 3070,3815,4690,5678,6716,7750,8692,9453,9950,10115,9897,9284,8269,6885,5194,3252,1161,-1000,-3125,-5130, -6922,-8423,-9579,-10339,-10670,-10589,-10119,-9303,-8224,-6965,-5617,-4274,-3019,-1895,-938,-152,489,1017,1494,1975, 2522,3173,3949,4849,5851,6895,7910,8817,9526,9951,10028,9723,9013,7909,6451,4694,2712,598,-1566,-3673, -5633,-7366,-8797,-9860,-10523,-10762,-10588,-10033,-9143,-8008,-6729,-5369,-4044,-2808,-1723,-799,-51,568,1076,1555, 2052,2623,3302,4112,5039,6060,7098,8105,8969,9613,9967,9956,9560,8763,7571,6040,4228,2205,71,-2085, -4165,-6075,-7745,-9101,-10074,-10640,-10783,-10520,-9886,-8937,-7768,-6456,-5099,-3784,-2578,-1523,-632,84,679,1178, 1663,2177,2772,3484,4323,5278,6307,7344,8319,9142,9727,9997,9896,9404,8513,7237,5635,3763,1709,-435, -2582,-4634,-6495,-8099,-9371,-10261,-10733,-10781,-10434,-9723,-8720,-7503,-6184,-4827,-3534,-2360,-1347,-500,193,764, 1259,1748,2279,2902,3641,4510,5481,6515,7543,8487,9257,9771,9956,9763,9175,8193,6832,5158,3242,1157, -1001,-3133,-5147,-6959,-8495,-9685,-10479,-10857,-10815,-10383,-9603,-8544,-7301,-5967,-4622,-3354,-2218,-1237,-432,229, 778,1267,1760,2309,2957,3728,4618,5613,6655,7668,8581,9299,9740,9846,9563,8883,7812,6377,4643,2682, 577,-1581,-3699,-5673,-7429,-8883,-9983,-10681,-10963,-10825,-10308,-9454,-8349,-7075,-5735,-4399,-3155,-2050,-1112,-339, 290,821,1307,1806,2375,3052,3850,4767,5782,6823,7820,8698,9364,9735,9756,9390,8624,7472,5968,4178, 2178,56,-2092,-4179,-6107,-7791,-9168,-10180,-10778,-10960,-10733,-10132,-9211,-8057,-6763,-5412,-4092,-2879,-1806,-909, -172,436,949,1435,1954,2547,3246,4076,5017,6040,7082,8061,8900,9503,9803,9736,9277,8422,7189,5617, 3777,1746,-388,-2528,-4577,-6452,-8071,-9368,-10284,-10784,-10870,-10549,-9872,-8894,-7703,-6390,-5042,-3744,-2561,-1533, -675,27,611,1118,1607,2138,2753,3484,4344,5307,6341,7369,8322,9112,9650,9873,9719,9169,8224,6910, 5270,3385,1326,-816,-2941,-4958,-6777,-8324,-9533,-10354,-10764,-10753,-10344,-9594,-8561,-7328,-6007,-4662,-3386,-2238, -1247,-424,248,807,1308,1795,2348,2987,3752,4634,5619,6662,7681,8602,9338,9813,9953,9707,9067,8034, 6644,4937,3004,920,-1225,-3332,-5313,-7073,-8544,-9665,-10399,-10702,-10604,-10109,-9282,-8198,-6939,-5599,-4267,-3018, -1899,-949,-166,475,1018,1514,2011,2579,3245,4039,4950,5948,6987,7994,8878,9560,9960,10010,9674,8941, 7824,6353,4586,2607,501,-1640,-3729,-5666,-7370,-8770,-9807,-10438,-10650,-10452,-9882,-8994,-7862,-6575,-5235,-3916, -2692,-1616,-700,50,660,1187,1673,2184,2770,3463,4283,5215,6229,7261,8245,9091,9712,10031,9996,9569, 8737,7535,5992,4170,2154,29,-2110,-4169,-6061,-7701,-9020,-9971,-10511,-10632,-10341,-9698,-8749,-7577,-6272,-4931, -3636,-2443,-1400,-528,191,778,1294,1783,2312,2917,3638,4486,5438,6461,7486,8440,9234,9796,10034,9910, 9386,8472,7183,5572,3701,1653,-485,-2611,-4641,-6485,-8055,-9294,-10154,-10600,-10628,-10259,-9543,-8538,-7333,-6015, -4683,-3402,-2247,-1242,-405,278,846,1351,1845,2390,3020,3767,4639,5611,6640,7660,8584,9327,9816,9973, 9758,9144,8137,6769,5092,3170,1093,-1046,-3159,-5155,-6941,-8441,-9597,-10362,-10712,-10650,-10194,-9402,-8350,-7114, -5785,-4463,-3209,-2083,-1127,-325,320,871,1370,1864,2420,3081,3857,4755,5746,6774,7780,8668,9361,9779, 9855,9550,8847,7754,6314,4571,2611,513,-1627,-3720,-5671,-7396,-8823,-9889,-10564,-10813,-10661,-10121,-9263,-8158, -6892,-5558,-4242,-3019,-1934,-1006,-243,377,911,1408,1914,2492,3174,3983,4907,5906,6938,7923,8777,9407, 9756,9746,9356,8562,7388,5878,4082,2081,-30,-2165,-4229,-6135,-7793,-9142,-10118,-10700,-10852,-10608,-9992,-9070, -7924,-6635,-5294,-3994,-2796,-1742,-851,-122,480,1005,1499,2020,2623,3337,4166,5116,6129,7156,8115,8925, 9497,9768,9674,9190,8309,7053,5471,3629,1600,-528,-2651,-4685,-6539,-8130,-9398,-10285,-10772,-10832,-10499,-9806, -8826,-7642,-6333,-5003,-3718,-2542,-1527,-676,27,607,1122,1618,2161,2786,3529,4391,5357,6379,7399,8331, 9091,9600,9787,9599,9028,8049,6717,5064,3176,1111,-1019,-3131,-5131,-6932,-8459,-9640,-10436,-10824,-10795,-10376, -9611,-8579,-7361,-6038,-4706,-3451,-2314,-1335,-517,158,717,1225,1731,2290,2945,3716,4608,5599,6625,7633, 8531,9243,9676,9785,9509,8836,7773,6361,4645,2700,619,-1516,-3612,-5568,-7312,-8763,-9860,-10562,-10850,-10725, -10224,-9391,-8308,-7051,-5724,-4396,-3167,-2058,-1111,-326,321,869,1376,1900,2481,3167,3972,4891,5896,6925, 7915,8779,9436,9797,9824,9460,8697,7553,6064,4297,2311,208,-1926,-3995,-5907,-7591,-8962,-9970,-10580,-10776, -10557,-9973,-9071,-7941,-6665,-5328,-4017,-2808,-1729,-818,-62,561,1098,1609,2145,2749,3463,4295,5244,6257, 7286,8253,9071,9665,9953,9888,9432,8579,7348,5793,3966,1948,-174,-2297,-4339,-6206,-7823,-9115,-10037,-10551, -10653,-10348,-9689,-8730,-7560,-6266,-4928,-3639,-2452,-1413,-540,182,783,1311,1821,2374,3001,3744,4606,5568, 6590,7610,8546,9320,9844,10051,9898,9344,8403,7094,5465,3584,1538,-592,-2707,-4719,-6531,-8084,-9297,-10126, -10547,-10559,-10170,-9440,-8432,-7228,-5916,-4587,-3320,-2169,-1167,-328,363,945,1465,1982,2548,3198,3969,4854, 5838,6866,7870,8775,9496,9948,10074,9828,9182,8148,6760,5063,3141,1064,-1074,-3172,-5143,-6908,-8386,-9519, -10259,-10578,-10501,-10026,-9230,-8164,-6930,-5612,-4292,-3043,-1928,-964,-160,503,1066,1582,2101,2689,3361,4163, 5074,6066,7091,8079,8943,9612,9989,10033,9694,8959,7841,6371,4620,2651,552,-1588,-3658,-5593,-7290,-8696, -9740,-10384,-10616,-10443,-9892,-9026,-7914,-6658,-5327,-4019,-2792,-1707,-778,-8,629,1176,1693,2230,2831,3535, 4359,5288,6297,7322,8282,9109,9717,10023,9978,9552,8725,7522,5986,4179,2176,62,-2067,-4114,-6002,-7641, -8967,-9922,-10474,-10613,-10353,-9720,-8794,-7648,-6363,-5034,-3738,-2542,-1497,-600,134,751,1289,1804,2347,2974, 3699,4546,5497,6517,7527,8463,9242,9784,10014,9879,9354,8443,7157,5550,3688,1656,-470,-2587,-4609,-6442, -8014,-9259,-10125,-10579,-10628,-10279,-9579,-8596,-7406,-6115,-4788,-3514,-2348,-1339,-485,218,815,1342,1858,2413, 3062,3821,4693,5662,6679,7678,8586,9312,9787,9930,9707,9092,8094,6727,5056,3143,1083,-1056,-3161,-5141, -6923,-8427,-9588,-10361,-10720,-10681,-10243,-9471,-8439,-7219,-5910,-4590,-3337,-2208,-1234,-415,262,840,1356,1879, 2460,3132,3916,4811,5799,6819,7802,8674,9351,9758,9819,9507,8800,7711,6275,4542,2592,507,-1627,-3711, -5649,-7371,-8798,-9872,-10551,-10812,-10673,-10160,-9318,-8230,-6980,-5662,-4353,-3125,-2025,-1091,-299,351,909,1426, 1960,2558,3258,4070,4993,5995,7018,7979,8818,9444,9772,9757,9365,8570,7405,5894,4111,2126,23,-2099, -4153,-6045,-7700,-9045,-10028,-10614,-10776,-10545,-9950,-9041,-7912,-6636,-5312,-4016,-2814,-1751,-853,-97,529,1078, 1594,2137,2752,3478,4319,5261,6271,7286,8228,9025,9586,9847,9743,9260,8379,7133,5561,3724,1706,-404, -2515,-4536,-6376,-7968,-9232,-10122,-10610,-10681,-10360,-9689,-8722,-7560,-6265,-4946,-3670,-2499,-1480,-616,102,702, 1237,1751,2308,2946,3694,4550,5516,6528,7532,8446,9189,9687,9867,9671,9101,8135,6809,5168,3285,1241, -874,-2974,-4958,-6750,-8262,-9448,-10244,-10633,-10615,-10212,-9467,-8452,-7246,-5946,-4633,-3381,-2240,-1262,-437,246, 821,1345,1862,2429,3090,3860,4745,5721,6737,7723,8606,9296,9725,9822,9545,8880,7831,6431,4731,2805, 742,-1376,-3459,-5403,-7132,-8577,-9671,-10380,-10670,-10561,-10074,-9258,-8190,-6961,-5650,-4345,-3115,-2013,-1073,-289, 369,927,1443,1964,2549,3232,4029,4934,5920,6936,7906,8751,9388,9745,9761,9395,8640,7510,6037,4281, 2317,233,-1879,-3938,-5838,-7507,-8871,-9880,-10492,-10690,-10489,-9923,-9051,-7936,-6679,-5366,-4074,-2876,-1810,-902, -146,481,1024,1535,2069,2674,3385,4202,5134,6132,7144,8091,8887,9467,9745,9678,9222,8381,7164,5621, 3809,1813,-289,-2393,-4422,-6275,-7877,-9163,-10085,-10603,-10714,-10426,-9785,-8856,-7705,-6428,-5110,-3840,-2669,-1634, -764,-41,571,1104,1623,2168,2794,3531,4381,5327,6337,7338,8257,9015,9530,9734,9577,9031,8104,6806, 5201,3339,1310,-796,-2890,-4885,-6688,-8218,-9425,-10253,-10681,-10698,-10323,-9607,-8618,-7431,-6137,-4828,-3571,-2424, -1425,-587,115,707,1239,1761,2333,2988,3757,4634,5600,6615,7610,8498,9203,9655,9781,9534,8903,7887, 6516,4846,2942,887,-1224,-3299,-5256,-6998,-8464,-9584,-10325,-10655,-10576,-10117,-9338,-8293,-7077,-5772,-4464,-3229, -2115,-1144,-339,335,907,1441,1977,2557,3243,4039,4939,5920,6938,7911,8770,9421,9798,9844,9510,8787, 7685,6244,4509,2563,488,-1625,-3678,-5595,-7279,-8669,-9709,-10352,-10595,-10430,-9895,-9047,-7956,-6712,-5396,-4100, -2889,-1808,-876,-103,550,1109,1635,2182,2783,3491,4311,5235,6228,7238,8188,9004,9592,9894,9851,9424, 8605,7427,5909,4122,2136,42,-2065,-4094,-5964,-7592,-8910,-9857,-10417,-10566,-10310,-9699,-8791,-7660,-6398,-5083, -3803,-2622,-1572,-681,61,686,1234,1754,2309,2935,3667,4507,5449,6447,7449,8370,9138,9665,9885,9757, 9240,8333,7068,5482,3643,1623,-483,-2578,-4581,-6403,-7962,-9199,-10063,-10525,-10581,-10241,-9555,-8597,-7429,-6146, -4837,-3576,-2423,-1413,-556,156,755,1295,1824,2387,3034,3787,4657,5611,6616,7605,8499,9220,9679,9824, 9607,8999,8010,6667,5019,3131,1088,-1021,-3099,-5066,-6833,-8318,-9469,-10238,-10605,-10565,-10142,-9383,-8370,-7163, -5870,-4566,-3324,-2203,-1230,-400,281,867,1398,1927,2512,3185,3966,4857,5829,6836,7807,8674,9336,9731, 9795,9487,8794,7718,6303,4592,2664,602,-1509,-3568,-5490,-7197,-8612,-9675,-10356,-10626,-10490,-9989,-9165,-8102, -6870,-5566,-4267,-3053,-1964,-1026,-237,417,990,1515,2051,2654,3348,4158,5071,6058,7058,8012,8834,9439, 9760,9740,9342,8554,7399,5913,4142,2179,94,-2010,-4047,-5929,-7571,-8908,-9893,-10477,-10655,-10438,-9856,-8973, -7870,-6616,-5309,-4030,-2842,-1787,-884,-129,500,1060,1585,2132,2753,3470,4307,5242,6231,7228,8155,8931, 9475,9721,9609,9125,8249,7013,5453,3631,1633,-467,-2565,-4573,-6405,-7990,-9247,-10144,-10640,-10728,-10425,-9770, -8831,-7686,-6415,-5110,-3850,-2690,-1666,-796,-70,546,1091,1622,2193,2833,3581,4448,5399,6396,7388,8288, 9016,9502,9669,9476,8903,7943,6625,5000,3136,1104,-1000,-3083,-5059,-6842,-8357,-9535,-10335,-10739,-10732,-10347, -9624,-8631,-7450,-6161,-4858,-3608,-2472,-1476,-637,69,667,1214,1754,2345,3017,3796,4686,5660,6664,7644, 8518,9199,9618,9701,9424,8762,7715,6323,4636,2728,673,-1434,-3497,-5431,-7155,-8597,-9691,-10408,-10712,-10621, -10150,-9358,-8312,-7100,-5798,-4500,-3268,-2163,-1204,-390,293,880,1430,1981,2592,3293,4099,5014,5997,7006, 7966,8796,9418,9762,9765,9395,8644,7511,6048,4304,2352,281,-1833,-3875,-5769,-7434,-8804,-9814,-10438,-10655, -10474,-9929,-9075,-7986,-6746,-5440,-4152,-2947,-1869,-942,-161,502,1077,1624,2186,2819,3542,4376,5305,6304, 7297,8230,9016,9583,9845,9763,9308,8459,7244,5709,3909,1923,-166,-2272,-4290,-6132,-7741,-9034,-9958,-10492, -10612,-10351,-9727,-8812,-7687,-6423,-5113,-3844,-2663,-1619,-725,27,669,1233,1783,2357,3011,3761,4614,5564, 6567,7547,8455,9193,9694,9884,9711,9160,8232,6932,5332,3482,1465,-641,-2729,-4712,-6508,-8050,-9257,-10096, -10533,-10564,-10211,-9520,-8553,-7384,-6104,-4794,-3540,-2384,-1377,-518,210,827,1385,1936,2534,3206,3978,4862, 5825,6831,7803,8678,9367,9800,9905,9649,9013,7995,6625,4959,3066,1025,-1080,-3147,-5096,-6841,-8306,-9430, -10174,-10515,-10453,-10023,-9253,-8231,-7026,-5735,-4429,-3193,-2071,-1095,-269,430,1033,1582,2140,2746,3442,4242, 5142,6120,7123,8081,8922,9556,9920,9949,9603,8879,7776,6334,4613,2680,615,-1483,-3536,-5436,-7117,-8509, -9550,-10199,-10446,-10293,-9780,-8952,-7877,-6648,-5352,-4063,-2851,-1762,-826,-34,632,1217,1760,2322,2941,3655, 4477,5394,6383,7377,8307,9104,9686,9976,9919,9485,8670,7486,5978,4200,2230,153,-1944,-3969,-5827,-7447, -8760,-9713,-10275,-10429,-10190,-9600,-8710,-7598,-6355,-5056,-3783,-2607,-1555,-658,99,735,1302,1835,2406,3041, 3777,4617,5545,6533,7522,8424,9176,9692,9906,9762,9245,8343,7082,5504,3678,1677,-413,-2495,-4486,-6294, -7845,-9081,-9946,-10411,-10476,-10151,-9491,-8546,-7401,-6138,-4847,-3593,-2448,-1435,-573,144,759,1309,1847,2424, 3078,3835,4694,5647,6639,7611,8484,9190,9644,9782,9558,8954,7969,6640,4998,3133,1107,-984,-3053,-5005, -6761,-8238,-9389,-10158,-10529,-10497,-10094,-9360,-8363,-7181,-5907,-4618,-3387,-2270,-1296,-473,218,817,1358,1899, 2486,3162,3948,4833,5792,6786,7749,8589,9243,9634,9693,9387,8694,7633,6238,4539,2632,589,-1499,-3544, -5451,-7145,-8546,-9613,-10289,-10566,-10448,-9958,-9157,-8111,-6897,-5614,-4333,-3128,-2043,-1104,-313,349,934,1467, 2016,2622,3324,4129,5029,6007,6996,7932,8740,9342,9655,9638,9242,8470,7328,5858,4109,2166,110,-1976, -3993,-5859,-7488,-8820,-9799,-10381,-10564,-10360,-9794,-8931,-7843,-6613,-5322,-4055,-2878,-1821,-917,-160,481,1045, 1579,2135,2764,3483,4315,5228,6212,7200,8114,8878,9419,9657,9558,9078,8217,6997,5459,3659,1687,-387, -2458,-4448,-6259,-7829,-9081,-9971,-10465,-10561,-10268,-9632,-8706,-7582,-6324,-5036,-3784,-2626,-1610,-734,-3,612, 1173,1702,2279,2927,3673,4527,5465,6457,7430,8314,9039,9514,9676,9490,8921,7977,6676,5071,3226,1222, -858,-2920,-4873,-6640,-8139,-9310,-10113,-10514,-10516,-10139,-9438,-8461,-7299,-6028,-4745,-3509,-2379,-1391,-549,154, 759,1317,1856,2450,3124,3898,4777,5737,6724,7691,8546,9213,9621,9711,9433,8776,7741,6369,4701,2809, 781,-1306,-3350,-5271,-6981,-8409,-9500,-10215,-10522,-10443,-9985,-9208,-8186,-6994,-5714,-4434,-3219,-2120,-1165,-351, 331,920,1477,2034,2642,3344,4144,5047,6020,7009,7953,8772,9382,9719,9720,9358,8604,7490,6037,4314, 2379,327,-1758,-3784,-5667,-7321,-8682,-9690,-10316,-10535,-10365,-9834,-9001,-7933,-6711,-5428,-4158,-2963,-1895,-969, -192,470,1053,1603,2171,2800,3529,4353,5271,6250,7237,8155,8925,9472,9735,9650,9190,8349,7148,5625, 3842,1868,-202,-2288,-4289,-6129,-7720,-9004,-9933,-10465,-10598,-10342,-9738,-8847,-7739,-6498,-5211,-3957,-2784,-1746, -853,-96,542,1117,1675,2249,2902,3653,4506,5443,6427,7401,8293,9015,9506,9686,9512,8967,8038,6754, 5167,3331,1326,-752,-2824,-4795,-6585,-8111,-9318,-10155,-10595,-10639,-10302,-9624,-8675,-7531,-6271,-4982,-3739,-2594, -1584,-725,4,632,1200,1764,2358,3033,3814,4689,5643,6633,7596,8451,9133,9553,9662,9406,8765,7752, 6396,4749,2871,841,-1237,-3297,-5226,-6961,-8414,-9535,-10282,-10631,-10579,-10160,-9410,-8408,-7229,-5951,-4663,-3438, -2319,-1339,-505,197,812,1380,1951,2564,3271,4071,4970,5939,6928,7874,8704,9321,9678,9707,9361,8641, 7548,6121,4412,2496,450,-1629,-3663,-5551,-7221,-8604,-9640,-10291,-10548,-10408,-9904,-9093,-8044,-6833,-5551,-4268, -3068,-1979,-1036,-229,448,1047,1610,2188,2818,3542,4366,5282,6261,7244,8162,8951,9512,9792,9733,9305, 8498,7325,5827,4068,2112,45,-2031,-4038,-5887,-7502,-8810,-9762,-10329,-10495,-10268,-9691,-8818,-7734,-6501,-5216, -3949,-2778,-1719,-812,-44,613,1193,1751,2335,2981,3723,4561,5495,6474,7444,8337,9076,9579,9778,9637, 9120,8222,6967,5401,3595,1606,-470,-2539,-4510,-6309,-7860,-9094,-9957,-10429,-10508,-10195,-9552,-8622,-7498,-6250, -4965,-3716,-2567,-1545,-673,66,703,1275,1832,2429,3091,3858,4720,5668,6653,7609,8472,9166,9600,9727, 9505,8901,7919,6591,4968,3113,1099,-982,-3032,-4968,-6713,-8198,-9345,-10117,-10495,-10481,-10088,-9371,-8390,-7225, -5966,-4684,-3456,-2336,-1345,-503,210,827,1395,1963,2572,3258,4052,4939,5900,6882,7826,8655,9294,9661, 9716,9402,8710,7649,6251,4569,2671,636,-1443,-3474,-5376,-7061,-8472,-9534,-10218,-10507,-10402,-9927,-9148,-8113, -6927,-5655,-4382,-3171,-2078,-1127,-314,374,975,1540,2111,2742,3448,4267,5172,6142,7116,8041,8834,9418, 9714,9686,9278,8503,7354,5880,4145,2206,153,-1921,-3931,-5795,-7420,-8760,-9742,-10337,-10533,-10341,-9797,-8951, -7884,-6669,-5392,-4126,-2941,-1885,-961,-179,486,1077,1635,2222,2866,3598,4435,5356,6334,7307,8203,8951, 9471,9697,9578,9089,8223,6999,5461,3666,1693,-375,-2443,-4426,-6238,-7805,-9063,-9961,-10462,-10570,-10295,-9677, -8778,-7666,-6429,-5146,-3897,-2734,-1704,-814,-60,595,1172,1735,2333,3002,3760,4622,5562,6543,7503,8371, 9074,9535,9679,9487,8909,7957,6655,5054,3218,1217,-854,-2906,-4856,-6612,-8115,-9289,-10094,-10505,-10522,-10166, -9473,-8515,-7364,-6110,-4835,-3596,-2462,-1462,-600,125,762,1338,1906,2518,3208,3992,4879,5829,6808,7758, 8592,9243,9635,9708,9423,8760,7725,6352,4691,2808,790,-1286,-3324,-5233,-6936,-8365,-9460,-10174,-10494,-10424, -9983,-9224,-8219,-7036,-5774,-4503,-3284,-2183,-1213,-382,322,935,1504,2080,2706,3417,4219,5122,6084,7066, 7988,8784,9381,9704,9692,9319,8569,7453,6008,4289,2371,333,-1745,-3761,-5629,-7273,-8627,-9636,-10261,-10488, -10330,-9813,-8989,-7939,-6735,-5460,-4200,-3004,-1931,-1003,-204,468,1073,1636,2215,2859,3587,4410,5331,6300, 7270,8172,8926,9466,9714,9617,9161,8322,7136,5616,3842,1889,-167,-2230,-4215,-6035,-7618,-8895,-9818,-10351, -10485,-10242,-9651,-8770,-7679,-6450,-5179,-3931,-2762,-1723,-826,-56,596,1184,1747,2332,2993,3746,4591,5524, 6492,7455,8323,9031,9510,9685,9508,8964,8046,6778,5199,3377,1397,-664,-2721,-4672,-6446,-7960,-9157,-9992, -10436,-10485,-10159,-9495,-8558,-7433,-6185,-4913,-3684,-2546,-1536,-670,64,699,1276,1841,2443,3118,3888,4756, 5698,6669,7619,8456,9117,9525,9624,9364,8734,7728,6389,4752,2887,883,-1179,-3223,-5137,-6858,-8300,-9421, -10170,-10520,-10478,-10069,-9337,-8354,-7191,-5938,-4668,-3453,-2344,-1367,-536,174,794,1363,1932,2548,3248,4040, 4925,5881,6851,7783,8585,9199,9540,9560,9214,8495,7412,6003,4308,2405,375,-1692,-3701,-5577,-7238,-8612, -9640,-10298,-10558,-10424,-9940,-9140,-8106,-6911,-5648,-4389,-3191,-2106,-1165,-357,330,932,1506,2083,2717,3441, 4258,5166,6136,7103,8012,8777,9333,9604,9547,9114,8320,7154,5674,3933,1996,-47,-2101,-4093,-5918,-7514, -8814,-9757,-10319,-10482,-10268,-9701,-8844,-7767,-6548,-5282,-4024,-2853,-1795,-884,-105,562,1160,1732,2320,2971, 3721,4561,5486,6457,7419,8303,9023,9526,9724,9579,9065,8186,6947,5401,3605,1641,-409,-2456,-4415,-6192, -7727,-8943,-9805,-10277,-10356,-10056,-9418,-8502,-7389,-6154,-4881,-3644,-2499,-1477,-599,152,799,1386,1958,2558, 3235,3999,4861,5798,6772,7721,8570,9245,9673,9794,9567,8962,7990,6681,5070,3228,1236,-822,-2856,-4783, -6511,-7978,-9116,-9894,-10273,-10264,-9880,-9183,-8213,-7069,-5824,-4560,-3342,-2223,-1236,-391,333,961,1536,2109, 2720,3419,4208,5081,6032,7004,7930,8749,9370,9733,9775,9461,8767,7719,6324,4660,2776,759,-1304,-3318, -5203,-6875,-8272,-9330,-10020,-10315,-10215,-9756,-8988,-7978,-6804,-5544,-4283,-3090,-2000,-1046,-233,466,1078,1649, 2229,2857,3572,4383,5283,6239,7209,8117,8902,9463,9756,9715,9318,8540,7409,5953,4231,2306,275,-1781, -3776,-5619,-7233,-8552,-9529,-10123,-10325,-10140,-9605,-8783,-7719,-6520,-5259,-4007,-2830,-1770,-843,-60,615,1218, 1791,2382,3030,3765,4600,5514,6478,7441,8324,9059,9563,9781,9662,9174,8314,7104,5576,3799,1845,-201, -2249,-4216,-6019,-7568,-8821,-9711,-10217,-10332,-10065,-9462,-8577,-7478,-6259,-4995,-3757,-2608,-1576,-687,74,734, 1322,1897,2495,3164,3925,4777,5702,6670,7618,8470,9149,9593,9739,9528,8952,8000,6712,5120,3296,1309, -745,-2786,-4720,-6473,-7961,-9135,-9941,-10363,-10390,-10043,-9366,-8434,-7302,-6063,-4800,-3578,-2454,-1454,-589,136, 783,1365,1941,2557,3237,4026,4898,5834,6803,7730,8546,9183,9556,9619,9328,8656,7628,6269,4614,2740, 731,-1329,-3351,-5250,-6947,-8364,-9457,-10174,-10506,-10441,-10018,-9278,-8291,-7125,-5880,-4616,-3413,-2317,-1340,-509, 203,827,1412,1999,2627,3340,4141,5040,5987,6953,7865,8646,9228,9529,9515,9142,8391,7278,5844,4136, 2228,200,-1859,-3856,-5713,-7349,-8695,-9701,-10331,-10570,-10421,-9916,-9115,-8082,-6891,-5632,-4376,-3194,-2118,-1181, -375,318,936,1515,2113,2762,3496,4325,5236,6198,7154,8045,8790,9315,9547,9451,8989,8155,6971,5471, 3714,1773,-267,-2319,-4287,-6102,-7677,-8942,-9871,-10408,-10553,-10321,-9743,-8880,-7807,-6591,-5333,-4085,-2923,-1882, -972,-192,473,1086,1666,2274,2943,3697,4545,5473,6435,7387,8251,8949,9407,9573,9395,8850,7934,6673, 5108,3306,1339,-710,-2747,-4688,-6448,-7958,-9146,-9984,-10428,-10489,-10173,-9524,-8605,-7499,-6265,-5000,-3772,-2637, -1626,-746,1,651,1246,1830,2444,3133,3913,4778,5721,6685,7620,8448,9098,9499,9583,9322,8691,7694, 6357,4738,2892,898,-1154,-3177,-5078,-6788,-8226,-9338,-10083,-10441,-10408,-10010,-9297,-8334,-7187,-5943,-4685,-3477, -2370,-1393,-549,177,803,1394,1979,2603,3314,4105,4992,5947,6901,7821,8615,9214,9542,9557,9210,8493, 7409,6005,4324,2439,426,-1627,-3627,-5488,-7140,-8508,-9538,-10193,-10462,-10344,-9867,-9093,-8075,-6901,-5658,-4405, -3213,-2137,-1194,-382,317,936,1522,2110,2756,3481,4297,5200,6159,7112,8008,8762,9301,9564,9495,9064, 8263,7106,5633,3901,1981,-47,-2095,-4070,-5888,-7480,-8771,-9714,-10281,-10458,-10254,-9703,-8865,-7807,-6607,-5350, -4110,-2943,-1893,-978,-192,488,1094,1681,2284,2948,3698,4538,5454,6419,7363,8234,8945,9428,9614,9465, 8950,8066,6832,5296,3517,1569,-473,-2512,-4454,-6223,-7754,-8966,-9825,-10305,-10389,-10104,-9482,-8586,-7491,-6275, -5013,-3783,-2637,-1620,-730,34,692,1291,1879,2494,3180,3947,4810,5742,6703,7628,8473,9133,9552,9660, 9424,8822,7853,6548,4946,3115,1137,-908,-2932,-4843,-6566,-8028,-9169,-9940,-10332,-10333,-9972,-9279,-8335,-7210, -5981,-4720,-3510,-2393,-1403,-548,191,835,1428,2016,2649,3351,4142,5021,5967,6925,7839,8643,9249,9596, 9628,9302,8611,7557,6172,4514,2637,634,-1413,-3423,-5299,-6965,-8364,-9421,-10111,-10412,-10328,-9890,-9146,-8149, -6992,-5749,-4495,-3303,-2208,-1253,-421,295,928,1514,2119,2763,3491,4302,5206,6156,7113,8007,8766,9319, 9603,9551,9142,8368,7240,5780,4067,2157,140,-1908,-3891,-5727,-7337,-8661,-9635,-10237,-10443,-10273,-9756,-8944, -7906,-6722,-5471,-4224,-3044,-1975,-1045,-242,453,1077,1672,2284,2950,3697,4534,5451,6412,7362,8233,8953, 9450,9657,9525,9031,8176,6968,5446,3682,1743,-286,-2328,-4282,-6073,-7619,-8864,-9753,-10266,-10385,-10131,-9544, -8676,-7593,-6382,-5126,-3886,-2732,-1694,-788,-9,672,1280,1875,2502,3185,3955,4811,5739,6701,7635,8474, 9146,9579,9710,9491,8915,7965,6681,5097,3284,1311,-730,-2755,-4679,-6418,-7902,-9073,-9881,-10304,-10337,-10004, -9348,-8426,-7314,-6092,-4834,-3619,-2486,-1484,-604,145,803,1405,2004,2634,3334,4122,4996,5930,6887,7804, 8606,9227,9588,9641,9335,8663,7639,6282,4635,2782,783,-1264,-3275,-5166,-6851,-8269,-9356,-10080,-10411,-10357, -9952,-9233,-8264,-7114,-5879,-4631,-3432,-2332,-1362,-518,206,847,1443,2045,2689,3407,4215,5098,6045,6997, 7892,8656,9224,9517,9492,9108,8354,7248,5821,4122,2228,214,-1826,-3818,-5665,-7292,-8637,-9643,-10273,-10513, -10374,-9888,-9102,-8082,-6907,-5672,-4424,-3241,-2168,-1227,-416,290,919,1512,2120,2779,3522,4347,5253,6203, 7151,8022,8747,9263,9489,9384,8917,8086,6906,5412,3667,1745,-280,-2315,-4276,-6075,-7638,-8903,-9821,-10358, -10510,-10282,-9722,-8875,-7817,-6615,-5368,-4132,-2972,-1931,-1017,-231,452,1071,1661,2280,2960,3723,4570,5492, 6446,7382,8226,8911,9364,9520,9336,8791,7872,6621,5070,3280,1327,-702,-2725,-4650,-6401,-7895,-9080,-9916, -10364,-10427,-10118,-9483,-8584,-7487,-6271,-5023,-3798,-2665,-1652,-768,-10,656,1265,1862,2489,3183,3965,4831, 5763,6719,7640,8450,9082,9472,9549,9281,8647,7655,6328,4715,2875,910,-1129,-3134,-5025,-6725,-8150,-9259, -10001,-10362,-10335,-9949,-9253,-8298,-7167,-5943,-4694,-3494,-2381,-1401,-549,182,828,1432,2031,2674,3391,4189, 5072,6008,6961,7864,8641,9226,9545,9546,9196,8476,7405,6009,4340,2466,473,-1561,-3544,-5402,-7037,-8395, -9420,-10077,-10345,-10232,-9768,-9004,-8010,-6847,-5606,-4367,-3183,-2097,-1145,-322,391,1026,1627,2230,2885,3622, 4445,5348,6289,7237,8117,8855,9380,9634,9561,9128,8331,7178,5716,3995,2092,86,-1943,-3899,-5712,-7290, -8569,-9512,-10080,-10253,-10059,-9519,-8697,-7655,-6469,-5224,-3988,-2821,-1765,-839,-43,642,1269,1871,2486,3162, 3913,4753,5669,6621,7559,8412,9108,9574,9760,9601,9086,8202,6976,5451,3687,1745,-269,-2292,-4222,-5981, -7494,-8705,-9562,-10045,-10131,-9859,-9247,-8372,-7286,-6096,-4848,-3624,-2484,-1459,-571,201,872,1486,2084,2709, 3397,4177,5033,5954,6904,7823,8645,9292,9697,9799,9559,8955,7988,6687,5105,3289,1323,-706,-2713,-4612, -6323,-7776,-8911,-9684,-10077,-10081,-9733,-9060,-8139,-7024,-5808,-4563,-3364,-2248,-1266,-403,338,995,1595,2194, 2830,3530,4322,5198,6127,7073,7973,8758,9350,9687,9712,9383,8697,7650,6271,4626,2768,781,-1250,-3241, -5103,-6767,-8149,-9204,-9893,-10199,-10120,-9691,-8956,-7983,-6843,-5619,-4380,-3199,-2115,-1156,-323,392,1029,1631, 2229,2878,3604,4417,5305,6245,7183,8060,8810,9346,9614,9561,9148,8373,7250,5807,4107,2210,205,-1823, -3793,-5615,-7219,-8529,-9499,-10102,-10319,-10157,-9650,-8858,-7840,-6671,-5441,-4208,-3048,-1986,-1058,-252,446,1070, 1672,2286,2948,3696,4527,5432,6378,7309,8164,8867,9345,9545,9407,8915,8054,6855,5345,3597,1665,-352, -2371,-4313,-6089,-7630,-8871,-9757,-10273,-10403,-10157,-9587,-8732,-7674,-6483,-5248,-4028,-2885,-1850,-951,-172,508, 1127,1732,2356,3042,3808,4664,5578,6524,7443,8270,8928,9346,9470,9248,8672,7732,6455,4882,3085,1130, -892,-2904,-4814,-6540,-8016,-9179,-9980,-10409,-10445,-10121,-9481,-8570,-7478,-6274,-5031,-3823,-2704,-1697,-818,-63, 603,1217,1821,2458,3166,3953,4826,5756,6704,7608,8400,9010,9361,9407,9107,8447,7427,6074,4450,2609, 631,-1400,-3395,-5266,-6936,-8345,-9430,-10143,-10482,-10437,-10028,-9320,-8361,-7233,-6013,-4772,-3579,-2486,-1507,-660, 80,726,1334,1949,2603,3327,4138,5022,5966,6903,7788,8549,9106,9391,9359,8978,8234,7139,5716,4037, 2160,161,-1861,-3832,-5660,-7275,-8613,-9610,-10235,-10484,-10352,-9869,-9097,-8089,-6935,-5706,-4469,-3295,-2227,-1276, -452,260,895,1507,2125,2799,3537,4372,5271,6217,7150,8010,8725,9228,9445,9336,8872,8050,6873,5394, 3665,1758,-251,-2268,-4205,-5991,-7545,-8803,-9709,-10252,-10404,-10194,-9637,-8806,-7759,-6582,-5345,-4117,-2964,-1924, -1007,-211,488,1112,1721,2350,3036,3797,4645,5559,6508,7425,8261,8933,9376,9519,9337,8792,7882,6638, 5096,3322,1385,-625,-2629,-4539,-6272,-7760,-8942,-9771,-10220,-10288,-9996,-9367,-8483,-7401,-6208,-4966,-3755,-2628, -1617,-725,39,713,1332,1936,2575,3276,4055,4922,5844,6788,7696,8495,9120,9497,9566,9299,8669,7684, 6366,4764,2948,992,-1033,-3017,-4894,-6573,-7993,-9100,-9842,-10202,-10190,-9813,-9123,-8188,-7071,-5866,-4627,-3435, -2334,-1356,-494,247,900,1512,2122,2769,3484,4281,5161,6093,7035,7922,8685,9258,9568,9559,9214,8497, 7429,6043,4390,2529,550,-1474,-3438,-5281,-6910,-8261,-9287,-9940,-10216,-10116,-9666,-8914,-7930,-6793,-5570,-4345, -3166,-2091,-1138,-309,406,1051,1656,2270,2928,3665,4483,5379,6317,7251,8115,8845,9356,9599,9511,9080, 8285,7137,5683,3975,2087,91,-1929,-3872,-5664,-7238,-8520,-9460,-10032,-10215,-10035,-9512,-8704,-7681,-6516,-5287, -4070,-2911,-1865,-942,-141,561,1189,1793,2418,3101,3850,4692,5599,6541,7464,8297,8976,9435,9603,9433, 8919,8034,6819,5291,3538,1609,-400,-2408,-4326,-6078,-7585,-8793,-9656,-10141,-10239,-9981,-9390,-8531,-7469,-6283, -5052,-3842,-2707,-1693,-792,-12,668,1289,1900,2534,3232,4013,4865,5785,6726,7636,8436,9071,9460,9554, 9300,8698,7731,6436,4855,3043,1094,-927,-2925,-4810,-6516,-7957,-9091,-9870,-10265,-10283,-9943,-9286,-8370,-7275, -6074,-4842,-3643,-2532,-1540,-669,90,759,1380,1995,2646,3368,4165,5040,5973,6912,7803,8571,9153,9477, 9496,9159,8468,7422,6057,4412,2563,589,-1435,-3413,-5263,-6913,-8288,-9345,-10038,-10345,-10274,-9860,-9134,-8172, -7043,-5830,-4599,-3418,-2322,-1356,-509,231,889,1513,2138,2805,3546,4368,5257,6198,7132,8003,8734,9255, 9519,9450,9036,8258,7132,5694,3998,2110,122,-1908,-3867,-5676,-7267,-8574,-9549,-10155,-10381,-10225,-9737,-8954, -7948,-6793,-5566,-4341,-3177,-2106,-1163,-342,384,1032,1657,2289,2975,3734,4569,5482,6420,7348,8186,8874, 9338,9522,9377,8872,8013,6807,5307,3556,1638,-374,-2381,-4317,-6083,-7623,-8853,-9747,-10271,-10408,-10176,-9616, -8775,-7731,-6552,-5325,-4112,-2960,-1919,-1000,-202,505,1146,1771,2416,3116,3896,4756,5669,6615,7524,8335, 8976,9376,9487,9254,8664,7723,6444,4880,3087,1137,-878,-2880,-4782,-6502,-7974,-9132,-9941,-10377,-10425,-10114, -9487,-8594,-7513,-6316,-5080,-3875,-2748,-1733,-845,-63,628,1266,1893,2552,3273,4073,4943,5873,6813,7708, 8485,9074,9412,9447,9137,8468,7446,6096,4480,2643,676,-1345,-3331,-5190,-6859,-8262,-9341,-10061,-10404,-10364, -9976,-9281,-8338,-7221,-6010,-4774,-3584,-2482,-1489,-628,132,811,1441,2072,2741,3484,4300,5191,6125,7061, 7930,8670,9207,9481,9437,9041,8290,7193,5777,4107,2231,248,-1766,-3729,-5551,-7158,-8489,-9487,-10123,-10375, -10254,-9789,-9033,-8037,-6898,-5676,-4447,-3274,-2195,-1236,-399,333,998,1627,2265,2949,3703,4540,5436,6374, 7299,8146,8842,9324,9525,9404,8929,8095,6922,5443,3717,1815,-185,-2189,-4121,-5902,-7447,-8703,-9615,-10163, -10328,-10122,-9587,-8772,-7738,-6570,-5337,-4124,-2969,-1921,-992,-184,530,1181,1807,2452,3151,3920,4772,5678, 6624,7531,8347,9000,9421,9553,9355,8796,7884,6640,5098,3331,1401,-602,-2597,-4496,-6225,-7702,-8885,-9715, -10166,-10244,-9960,-9350,-8481,-7412,-6222,-4992,-3788,-2661,-1637,-738,39,736,1368,2001,2650,3358,4150,5012, 5928,6869,7764,8551,9154,9514,9575,9299,8657,7668,6360,4764,2952,1002,-1005,-2980,-4846,-6519,-7934,-9027, -9769,-10138,-10123,-9760,-9085,-8162,-7063,-5857,-4627,-3442,-2341,-1352,-485,270,943,1573,2195,2857,3578,4386, 5264,6188,7121,7999,8748,9305,9595,9585,9232,8506,7450,6068,4420,2571,603,-1401,-3351,-5180,-6794,-8136, -9153,-9806,-10082,-9986,-9543,-8808,-7837,-6706,-5497,-4270,-3103,-2029,-1071,-232,492,1148,1768,2399,3065,3802, 4621,5515,6436,7360,8210,8920,9420,9645,9552,9119,8314,7171,5730,4035,2159,175,-1825,-3756,-5542,-7097, -8365,-9301,-9870,-10060,-9880,-9369,-8575,-7567,-6415,-5200,-3989,-2846,-1802,-874,-68,629,1272,1886,2516,3192, 3943,4777,5677,6600,7512,8330,8999,9434,9592,9420,8897,8016,6804,5294,3551,1643,-349,-2342,-4241,-5974, -7475,-8669,-9524,-10005,-10112,-9860,-9275,-8426,-7385,-6212,-5000,-3806,-2685,-1669,-775,-1,684,1312,1922,2556, 3246,4016,4864,5772,6694,7588,8376,8993,9370,9457,9201,8597,7636,6351,4786,3000,1067,-935,-2911,-4778, -6467,-7895,-9014,-9784,-10176,-10198,-9868,-9216,-8321,-7238,-6055,-4837,-3652,-2558,-1568,-703,53,721,1342,1957, 2606,3317,4102,4972,5889,6811,7686,8449,9011,9332,9335,9009,8323,7284,5934,4314,2487,537,-1466,-3419, -5249,-6882,-8244,-9277,-9959,-10268,-10207,-9796,-9078,-8129,-7021,-5818,-4606,-3435,-2358,-1393,-555,181,838,1465, 2086,2753,3485,4296,5181,6108,7022,7877,8596,9115,9361,9291,8883,8115,7002,5590,3914,2050,80,-1916, -3846,-5638,-7212,-8505,-9463,-10059,-10282,-10137,-9649,-8880,-7890,-6755,-5543,-4333,-3180,-2125,-1188,-374,348,999, 1619,2256,2939,3691,4520,5414,6347,7255,8082,8761,9216,9396,9246,8748,7899,6707,5223,3501,1603,-383, -2376,-4281,-6030,-7544,-8770,-9648,-10160,-10299,-10071,-9524,-8699,-7669,-6511,-5290,-4089,-2956,-1927,-1016,-217,484, 1125,1751,2399,3098,3869,4719,5629,6559,7450,8252,8881,9281,9384,9149,8569,7638,6372,4828,3059,1132, -863,-2841,-4719,-6420,-7875,-9021,-9816,-10240,-10297,-9994,-9376,-8497,-7430,-6250,-5028,-3840,-2720,-1716,-830,-50, 641,1278,1911,2573,3294,4082,4953,5869,6803,7672,8444,9021,9356,9385,9074,8416,7398,6062,4466,2650, 704,-1290,-3258,-5099,-6747,-8138,-9203,-9916,-10253,-10220,-9841,-9152,-8224,-7127,-5931,-4710,-3527,-2434,-1454,-593, 169,850,1489,2127,2800,3545,4358,5242,6168,7093,7949,8678,9211,9478,9426,9035,8288,7201,5801,4143, 2294,329,-1671,-3614,-5419,-7012,-8333,-9316,-9946,-10203,-10086,-9634,-8887,-7913,-6788,-5579,-4362,-3199,-2126,-1173, -338,403,1068,1705,2347,3033,3792,4620,5513,6443,7356,8184,8875,9344,9538,9407,8933,8102,6938,5471, 3756,1872,-108,-2105,-4025,-5785,-7320,-8573,-9477,-10026,-10194,-10002,-9478,-8674,-7660,-6512,-5298,-4095,-2951,-1908, -985,-171,545,1199,1836,2484,3184,3958,4799,5704,6635,7528,8328,8971,9375,9497,9287,8723,7816,6575, 5040,3285,1370,-622,-2604,-4494,-6210,-7688,-8860,-9687,-10141,-10225,-9954,-9358,-8508,-7454,-6287,-5067,-3875,-2756, -1735,-837,-49,654,1295,1933,2596,3309,4100,4958,5872,6795,7680,8447,9044,9386,9439,9143,8504,7512, 6202,4615,2816,880,-1115,-3084,-4935,-6603,-8009,-9105,-9843,-10213,-10209,-9861,-9202,-8293,-7209,-6024,-4806,-3623, -2520,-1531,-658,110,796,1439,2077,2753,3486,4295,5165,6086,7010,7867,8603,9144,9424,9403,9034,8311, 7249,5871,4229,2394,434,-1555,-3503,-5320,-6928,-8263,-9284,-9936,-10219,-10134,-9708,-8987,-8031,-6912,-5716,-4502, -3337,-2255,-1293,-445,302,974,1609,2257,2938,3691,4515,5401,6319,7232,8066,8761,9251,9464,9358,8906, 8106,6967,5523,3833,1961,-12,-1999,-3923,-5700,-7251,-8517,-9455,-10026,-10224,-10054,-9557,-8782,-7785,-6645,-5444, -4232,-3084,-2036,-1097,-274,449,1113,1746,2396,3097,3859,4696,5595,6513,7413,8219,8867,9295,9441,9257, 8724,7838,6627,5123,3382,1485,-500,-2476,-4377,-6101,-7596,-8788,-9647,-10130,-10245,-9996,-9431,-8594,-7562,-6396, -5192,-3993,-2868,-1836,-930,-138,570,1225,1864,2519,3237,4016,4872,5780,6702,7584,8358,8962,9333,9403, 9145,8530,7570,6288,4728,2944,1027,-964,-2928,-4790,-6465,-7892,-9008,-9778,-10175,-10203,-9878,-9245,-8361,-7295, -6118,-4905,-3718,-2614,-1616,-731,42,734,1381,2018,2687,3420,4219,5090,6006,6923,7792,8534,9086,9394, 9390,9053,8355,7314,5968,4349,2530,587,-1398,-3346,-5171,-6795,-8153,-9188,-9879,-10186,-10135,-9732,-9041,-8105, -7002,-5815,-4606,-3440,-2351,-1379,-525,231,910,1555,2191,2879,3625,4440,5330,6247,7159,8003,8699,9204, 9443,9364,8944,8167,7050,5632,3966,2110,151,-1836,-3756,-5549,-7118,-8402,-9359,-9961,-10187,-10048,-9577,-8823, -7849,-6721,-5522,-4323,-3165,-2109,-1163,-332,403,1069,1708,2358,3058,3823,4656,5548,6476,7377,8194,8850, 9293,9459,9303,8798,7938,6752,5270,3548,1663,-311,-2291,-4188,-5934,-7441,-8657,-9535,-10051,-10189,-9974,-9432, -8621,-7605,-6453,-5247,-4053,-2918,-1885,-962,-153,563,1226,1869,2530,3247,4026,4879,5785,6705,7589,8377, 8986,9373,9467,9224,8633,7700,6435,4893,3129,1212,-768,-2739,-4609,-6305,-7751,-8888,-9686,-10119,-10177,-9879, -9270,-8411,-7357,-6187,-4978,-3793,-2672,-1660,-762,29,728,1386,2031,2702,3433,4231,5099,6011,6930,7795, 8548,9105,9428,9444,9127,8454,7436,6104,4502,2695,755,-1233,-3185,-5019,-6665,-8046,-9112,-9828,-10173,-10144, -9778,-9103,-8191,-7107,-5922,-4710,-3536,-2444,-1454,-584,183,881,1531,2185,2867,3619,4434,5314,6233,7141, 7984,8697,9206,9460,9400,8996,8240,7147,5745,4095,2250,290,-1696,-3629,-5426,-7014,-8327,-9313,-9944,-10206, -10100,-9654,-8917,-7964,-6845,-5648,-4439,-3281,-2203,-1246,-393,358,1041,1694,2354,3049,3817,4650,5544,6463, 7361,8181,8854,9308,9489,9354,8872,8038,6868,5407,3704,1824,-145,-2122,-4031,-5785,-7316,-8556,-9464,-10005, -10177,-9990,-9475,-8686,-7686,-6552,-5346,-4141,-2997,-1957,-1017,-192,537,1211,1861,2527,3239,4026,4870,5776, 6689,7571,8363,8992,9383,9498,9280,8721,7807,6563,5043,3296,1389,-583,-2554,-4439,-6140,-7610,-8777,-9596, -10059,-10149,-9881,-9300,-8457,-7420,-6262,-5054,-3864,-2743,-1718,-813,-12,700,1360,2012,2680,3405,4199,5060, 5968,6879,7749,8505,9085,9418,9457,9158,8517,7526,6220,4640,2852,924,-1054,-3011,-4849,-6512,-7913,-9004, -9743,-10118,-10122,-9780,-9130,-8237,-7167,-5996,-4790,-3616,-2518,-1517,-644,136,830,1483,2133,2815,3550,4362, 5234,6147,7054,7897,8618,9146,9413,9378,9004,8280,7218,5840,4210,2387,439,-1538,-3474,-5279,-6878,-8213, -9222,-9877,-10162,-10082,-9664,-8953,-8017,-6915,-5732,-4528,-3368,-2296,-1328,-474,278,957,1607,2264,2950,3703, 4530,5416,6332,7228,8044,8728,9205,9404,9292,8838,8041,6894,5460,3778,1920,-36,-2014,-3919,-5680,-7220, -8479,-9409,-9978,-10181,-10015,-9526,-8761,-7776,-6656,-5457,-4261,-3122,-2068,-1132,-302,432,1097,1744,2404,3107, 3874,4719,5613,6528,7410,8206,8842,9257,9391,9204,8666,7787,6578,5079,3353,1467,-506,-2465,-4349,-6062, -7542,-8725,-9575,-10060,-10176,-9933,-9375,-8550,-7531,-6387,-5187,-3997,-2877,-1856,-942,-141,579,1234,1878,2548, 3261,4046,4901,5803,6714,7585,8344,8940,9289,9351,9084,8470,7511,6234,4677,2909,999,-973,-2923,-4768, -6435,-7849,-8961,-9727,-10120,-10151,-9834,-9207,-8335,-7283,-6121,-4917,-3741,-2646,-1643,-757,24,724,1377,2026, 2703,3435,4234,5101,6008,6919,7770,8493,9032,9326,9316,8970,8271,7237,5889,4281,2476,547,-1430,-3362, -5171,-6780,-8126,-9160,-9840,-10154,-10103,-9710,-9023,-8104,-7016,-5839,-4642,-3480,-2402,-1432,-571,191,879,1529, 2180,2872,3620,4435,5319,6226,7127,7947,8646,9133,9353,9265,8840,8069,6956,5549,3888,2048,103,-1870, -3776,-5544,-7099,-8378,-9335,-9930,-10154,-10023,-9554,-8812,-7845,-6735,-5553,-4356,-3205,-2153,-1207,-370,375,1050, 1700,2355,3061,3822,4658,5555,6467,7357,8155,8806,9238,9391,9224,8719,7867,6687,5214,3509,1640,-318, -2282,-4163,-5889,-7381,-8592,-9469,-9979,-10120,-9916,-9379,-8578,-7572,-6435,-5248,-4056,-2928,-1901,-977,-165,565, 1230,1878,2546,3265,4045,4896,5797,6710,7584,8350,8952,9328,9409,9163,8582,7651,6397,4865,3111,1215, -751,-2706,-4556,-6236,-7667,-8805,-9597,-10026,-10084,-9801,-9198,-8351,-7304,-6154,-4959,-3783,-2673,-1666,-770,24, 732,1398,2049,2723,3460,4259,5119,6023,6930,7782,8519,9072,9381,9390,9065,8396,7386,6066,4473,2682, 758,-1207,-3149,-4971,-6598,-7969,-9030,-9740,-10087,-10063,-9707,-9044,-8143,-7076,-5909,-4712,-3544,-2458,-1478,-602, 169,868,1525,2177,2868,3616,4428,5302,6213,7111,7941,8636,9135,9378,9307,8905,8158,7065,5679,4032, 2203,263,-1706,-3630,-5407,-6981,-8279,-9267,-9898,-10155,-10053,-9626,-8901,-7958,-6860,-5682,-4491,-3342,-2274,-1320, -469,283,972,1625,2283,2987,3752,4582,5465,6374,7263,8065,8721,9164,9336,9191,8701,7872,6710,5261, 3563,1701,-250,-2214,-4111,-5846,-7361,-8595,-9496,-10040,-10214,-10031,-9532,-8750,-7764,-6638,-5450,-4265,-3130,-2087, -1155,-323,414,1093,1748,2418,3132,3913,4760,5658,6566,7441,8215,8825,9214,9318,9090,8522,7618,6385, 4875,3136,1247,-715,-2671,-4529,-6217,-7669,-8827,-9646,-10106,-10194,-9934,-9364,-8531,-7504,-6360,-5164,-3984,-2867, -1846,-940,-129,592,1265,1929,2602,3337,4135,4988,5894,6802,7657,8404,8965,9286,9319,9018,8375,7390, 6091,4523,2744,837,-1131,-3068,-4898,-6533,-7921,-9004,-9741,-10116,-10120,-9781,-9148,-8258,-7199,-6038,-4844,-3677, -2581,-1586,-703,86,795,1457,2121,2804,3556,4367,5234,6140,7043,7875,8583,9096,9353,9312,8929,8205, 7144,5777,4158,2340,411,-1552,-3472,-5262,-6843,-8178,-9175,-9830,-10118,-10042,-9630,-8934,-8005,-6917,-5744,-4552, -3400,-2325,-1361,-502,265,954,1617,2279,2975,3736,4565,5441,6354,7241,8050,8717,9175,9364,9247,8788, 7985,6854,5426,3758,1909,-37,-1996,-3887,-5635,-7163,-8412,-9338,-9905,-10105,-9951,-9473,-8716,-7744,-6635,-5446, -4266,-3126,-2077,-1132,-301,447,1130,1787,2452,3166,3941,4784,5670,6583,7459,8239,8867,9269,9395,9202, 8662,7782,6580,5094,3380,1504,-451,-2393,-4258,-5960,-7423,-8601,-9439,-9929,-10041,-9804,-9254,-8447,-7433,-6302, -5107,-3931,-2818,-1791,-872,-61,668,1346,2001,2679,3403,4192,5048,5941,6850,7711,8462,9039,9383,9435, 9166,8544,7588,6320,4777,3017,1120,-838,-2772,-4606,-6258,-7659,-8765,-9526,-9933,-9966,-9659,-9045,-8185,-7140, -5993,-4801,-3636,-2542,-1541,-648,134,855,1514,2176,2859,3597,4399,5270,6168,7063,7902,8618,9142,9418, 9397,9043,8346,7308,5968,4365,2568,647,-1318,-3236,-5035,-6639,-7980,-9002,-9688,-10008,-9964,-9585,-8910,-8003, -6929,-5771,-4582,-3431,-2354,-1379,-512,254,956,1613,2278,2971,3725,4538,5421,6319,7208,8019,8695,9171, 9375,9273,8843,8058,6949,5543,3887,2049,110,-1847,-3748,-5510,-7053,-8331,-9281,-9880,-10117,-9992,-9540,-8808, -7862,-6757,-5587,-4399,-3261,-2204,-1250,-402,346,1047,1703,2378,3088,3860,4696,5589,6493,7370,8159,8791, 9206,9344,9169,8652,7791,6612,5143,3444,1572,-378,-2329,-4205,-5924,-7409,-8608,-9485,-9998,-10148,-9948,-9423, -8637,-7645,-6520,-5339,-4155,-3028,-1991,-1054,-228,509,1206,1868,2554,3283,4072,4928,5826,6728,7593,8349, 8941,9291,9362,9109,8513,7570,6318,4790,3042,1147,-813,-2755,-4599,-6271,-7700,-8824,-9619,-10051,-10122,-9843, -9254,-8419,-7389,-6245,-5054,-3879,-2770,-1755,-847,-35,693,1377,2050,2748,3489,4296,5166,6066,6959,7805, 8531,9069,9350,9347,9012,8333,7309,5992,4409,2611,700,-1263,-3196,-5009,-6627,-8001,-9054,-9768,-10117,-10102, -9754,-9102,-8215,-7155,-5992,-4807,-3637,-2549,-1558,-673,120,836,1521,2196,2901,3661,4482,5361,6264,7150, 7975,8655,9137,9358,9275,8857,8098,7006,5615,3968,2147,214,-1750,-3660,-5436,-7001,-8298,-9283,-9908,-10170, -10080,-9657,-8946,-8016,-6929,-5753,-4565,-3413,-2344,-1373,-505,266,968,1644,2324,3046,3823,4655,5543,6453, 7328,8116,8763,9185,9340,9181,8688,7849,6681,5230,3543,1690,-259,-2216,-4097,-5828,-7336,-8561,-9459,-10010, -10188,-10016,-9519,-8747,-7772,-6663,-5477,-4291,-3156,-2113,-1163,-320,433,1129,1813,2494,3227,4014,4861,5759, 6663,7523,8289,8885,9252,9337,9103,8525,7613,6380,4868,3139,1257,-696,-2640,-4495,-6169,-7618,-8772,-9591, -10044,-10140,-9889,-9325,-8503,-7494,-6357,-5166,-3988,-2873,-1852,-932,-105,629,1316,1992,2690,3432,4231,5091, 5991,6892,7728,8461,9010,9319,9329,9018,8366,7377,6072,4509,2737,836,-1125,-3056,-4871,-6497,-7887,-8959, -9696,-10067,-10080,-9754,-9128,-8255,-7213,-6060,-4869,-3705,-2610,-1613,-718,81,800,1482,2156,2858,3611,4421, 5292,6194,7084,7901,8590,9091,9333,9271,8882,8150,7087,5721,4102,2296,381,-1578,-3490,-5268,-6846,-8161, -9157,-9809,-10094,-10027,-9628,-8944,-8022,-6953,-5788,-4598,-3451,-2373,-1401,-533,245,946,1619,2300,3010,3775, 4598,5481,6383,7258,8053,8706,9149,9331,9196,8727,7922,6790,5361,3702,1862,-72,-2022,-3901,-5642,-7155, -8404,-9319,-9886,-10085,-9938,-9470,-8720,-7760,-6657,-5483,-4300,-3171,-2116,-1169,-326,433,1123,1797,2477,3200, 3980,4819,5701,6605,7469,8235,8848,9231,9350,9141,8598,7718,6519,5031,3330,1464,-477,-2415,-4263,-5950, -7403,-8575,-9412,-9893,-10011,-9784,-9241,-8439,-7441,-6318,-5137,-3966,-2849,-1824,-901,-85,652,1337,2008,2693, 3422,4213,5063,5956,6847,7695,8433,8998,9327,9362,9084,8456,7506,6233,4695,2952,1071,-878,-2798,-4620, -6255,-7648,-8742,-9500,-9897,-9931,-9632,-9027,-8175,-7144,-6009,-4827,-3665,-2572,-1576,-684,111,834,1500,2174, 2868,3609,4412,5274,6162,7052,7873,8576,9090,9354,9324,8963,8260,7230,5893,4302,2522,615,-1330,-3233, -5021,-6610,-7935,-8957,-9627,-9947,-9898,-9527,-8863,-7970,-6908,-5760,-4578,-3437,-2366,-1395,-533,244,950,1616, 2285,2988,3740,4558,5424,6321,7193,7997,8656,9119,9318,9212,8769,7992,6890,5491,3853,2033,113,-1825, -3712,-5452,-6986,-8241,-9183,-9772,-10004,-9881,-9440,-8716,-7783,-6695,-5531,-4355,-3227,-2175,-1229,-388,363,1058, 1723,2401,3110,3880,4710,5587,6486,7353,8121,8745,9155,9281,9103,8587,7725,6550,5092,3401,1558,-376, -2309,-4166,-5865,-7338,-8532,-9394,-9898,-10045,-9845,-9334,-8553,-7571,-6464,-5295,-4119,-3005,-1982,-1056,-234,502, 1187,1852,2536,3262,4045,4890,5770,6666,7521,8263,8840,9188,9250,8996,8399,7465,6217,4701,2965,1093, -851,-2770,-4599,-6256,-7667,-8783,-9569,-9988,-10060,-9778,-9195,-8373,-7352,-6218,-5045,-3878,-2782,-1779,-877,-81, 648,1329,1992,2688,3421,4231,5088,5979,6866,7701,8412,8941,9222,9210,8875,8198,7192,5875,4299,2525, 628,-1320,-3228,-5021,-6632,-7979,-9026,-9731,-10067,-10051,-9700,-9056,-8179,-7130,-5980,-4806,-3645,-2565,-1583,-702, 76,794,1471,2144,2847,3605,4421,5291,6191,7069,7882,8553,9030,9250,9164,8748,7988,6904,5524,3895, 2084,165,-1779,-3670,-5435,-6983,-8266,-9237,-9859,-10116,-10020,-9598,-8898,-7968,-6888,-5726,-4547,-3405,-2345,-1381, -523,244,951,1626,2307,3025,3797,4632,5513,6418,7285,8073,8704,9124,9278,9116,8618,7785,6628,5184, 3504,1658,-272,-2218,-4081,-5801,-7297,-8511,-9406,-9942,-10116,-9937,-9445,-8684,-7720,-6614,-5440,-4262,-3130,-2089, -1143,-307,443,1140,1820,2507,3239,4036,4884,5773,6670,7529,8287,8876,9241,9322,9086,8508,7591,6363, 4863,3137,1265,-678,-2609,-4447,-6125,-7560,-8704,-9510,-9969,-10058,-9803,-9246,-8430,-7424,-6293,-5111,-3941,-2823, -1808,-890,-72,667,1358,2035,2730,3479,4282,5139,6038,6931,7765,8493,9034,9334,9345,9028,8377,7382, 6084,4524,2758,859,-1082,-3005,-4812,-6442,-7813,-8879,-9609,-9983,-9989,-9659,-9035,-8171,-7129,-5981,-4801,-3640, -2548,-1554,-663,135,857,1543,2217,2921,3683,4497,5372,6269,7150,7965,8659,9141,9382,9320,8923,8187, 7120,5756,4141,2336,422,-1530,-3430,-5204,-6774,-8087,-9074,-9723,-10011,-9935,-9540,-8851,-7945,-6868,-5708,-4530, -3382,-2311,-1338,-471,301,1009,1687,2369,3079,3852,4679,5560,6459,7332,8123,8772,9207,9376,9236,8763, 7951,6809,5381,3717,1879,-53,-1999,-3876,-5610,-7127,-8364,-9275,-9843,-10047,-9896,-9421,-8677,-7720,-6621,-5454, -4271,-3144,-2090,-1147,-302,449,1151,1826,2512,3231,4017,4861,5745,6642,7502,8266,8870,9246,9351,9134, 8579,7686,6478,4988,3276,1409,-533,-2466,-4311,-6003,-7460,-8626,-9460,-9938,-10057,-9826,-9287,-8486,-7495,-6373, -5195,-4022,-2909,-1884,-962,-136,599,1285,1961,2653,3389,4188,5036,5931,6823,7668,8397,8955,9269,9306, 9013,8382,7412,6131,4587,2830,942,-1008,-2928,-4747,-6386,-7784,-8879,-9628,-10026,-10059,-9756,-9150,-8299,-7272, -6130,-4944,-3785,-2690,-1690,-790,8,732,1414,2091,2789,3539,4351,5215,6113,6997,7820,8516,9025,9277, 9242,8868,8158,7112,5765,4167,2373,460,-1483,-3390,-5176,-6760,-8090,-9109,-9777,-10090,-10043,-9661,-8996,-8094, -7035,-5881,-4695,-3547,-2474,-1492,-619,161,874,1549,2232,2937,3699,4529,5400,6298,7175,7975,8639,9093, 9280,9169,8719,7930,6809,5399,3753,1929,-2,-1943,-3830,-5575,-7107,-8369,-9305,-9890,-10122,-9992,-9535,-8810, -7869,-6775,-5607,-4432,-3297,-2241,-1287,-431,327,1021,1698,2381,3106,3881,4721,5607,6506,7373,8147,8759, 9161,9283,9094,8568,7698,6508,5045,3344,1490,-448,-2387,-4246,-5942,-7418,-8610,-9467,-9969,-10111,-9905,-9384, -8598,-7615,-6501,-5323,-4147,-3028,-1991,-1064,-235,508,1197,1872,2561,3296,4085,4939,5829,6728,7577,8317, 8889,9232,9283,9018,8412,7468,6208,4682,2938,1057,-890,-2814,-4642,-6294,-7706,-8824,-9599,-10019,-10083,-9797, -9211,-8373,-7354,-6223,-5041,-3873,-2771,-1764,-857,-52,678,1361,2035,2734,3482,4288,5148,6048,6937,7767, 8475,9000,9273,9257,8911,8225,7204,5881,4297,2514,614,-1337,-3248,-5039,-6643,-7992,-9031,-9730,-10063,-10044, -9683,-9036,-8147,-7092,-5944,-4761,-3606,-2522,-1539,-656,129,844,1526,2197,2908,3666,4484,5364,6259,7143, 7948,8620,9092,9305,9212,8791,8024,6926,5537,3903,2085,165,-1784,-3668,-5429,-6978,-8258,-9220,-9833,-10082, -9979,-9548,-8838,-7906,-6827,-5664,-4482,-3335,-2276,-1313,-457,311,1017,1691,2372,3093,3869,4703,5587,6489, 7358,8138,8768,9187,9332,9165,8664,7814,6653,5202,3518,1670,-263,-2207,-4074,-5791,-7280,-8493,-9377,-9902, -10067,-9891,-9384,-8619,-7646,-6536,-5361,-4188,-3059,-2017,-1081,-242,507,1204,1879,2566,3302,4089,4936,5828, 6728,7585,8336,8921,9281,9353,9108,8524,7604,6367,4854,3127,1248,-691,-2626,-4463,-6134,-7562,-8700,-9507, -9953,-10036,-9777,-9207,-8388,-7379,-6246,-5067,-3899,-2785,-1769,-853,-36,695,1384,2059,2755,3500,4302,5162, 6055,6950,7785,8506,9035,9336,9339,9017,8354,7354,6048,4478,2706,805,-1143,-3062,-4869,-6488,-7857,-8922, -9646,-10008,-10008,-9679,-9043,-8174,-7127,-5981,-4796,-3639,-2549,-1554,-662,128,855,1536,2215,2917,3677,4494, 5367,6267,7150,7965,8648,9134,9368,9297,8892,8151,7080,5706,4084,2278,356,-1591,-3491,-5258,-6828,-8127, -9114,-9752,-10033,-9952,-9546,-8848,-7935,-6851,-5692,-4508,-3363,-2287,-1320,-447,326,1034,1714,2397,3112,3885, 4714,5598,6501,7375,8168,8809,9242,9410,9266,8783,7965,6819,5387,3717,1874,-55,-1998,-3875,-5602,-7112, -8342,-9253,-9806,-9998,-9838,-9362,-8609,-7649,-6547,-5376,-4195,-3059,-2012,-1068,-223,531,1232,1906,2594,3321, 4107,4948,5838,6737,7594,8358,8955,9329,9431,9206,8650,7754,6532,5044,3325,1457,-482,-2419,-4272,-5949, -7402,-8562,-9388,-9861,-9972,-9734,-9189,-8385,-7384,-6261,-5085,-3916,-2800,-1772,-857,-38,701,1388,2058,2749, 3486,4284,5137,6029,6919,7763,8492,9044,9357,9386,9085,8447,7471,6188,4639,2880,985,-957,-2884,-4699, -6333,-7722,-8807,-9558,-9947,-9972,-9662,-9051,-8193,-7162,-6021,-4843,-3684,-2592,-1590,-701,98,819,1498,2169, 2866,3614,4426,5289,6186,7068,7889,8583,9085,9334,9289,8914,8196,7150,5797,4197,2401,490,-1457,-3363, -5142,-6723,-8046,-9056,-9718,-10021,-9964,-9578,-8907,-8005,-6936,-5783,-4601,-3456,-2385,-1409,-542,231,939,1612, 2288,2994,3755,4582,5453,6354,7229,8024,8681,9132,9317,9197,8745,7954,6828,5417,3763,1937,10,-1934, -3814,-5555,-7078,-8329,-9261,-9842,-10061,-9923,-9463,-8734,-7784,-6694,-5525,-4349,-3218,-2166,-1220,-371,383,1077, 1750,2427,3146,3921,4761,5641,6539,7402,8173,8786,9178,9298,9106,8568,7699,6507,5033,3333,1476,-464, -2397,-4256,-5952,-7416,-8597,-9449,-9947,-10082,-9867,-9343,-8552,-7565,-6451,-5274,-4104,-2989,-1963,-1036,-219,524, 1209,1874,2562,3293,4080,4934,5823,6717,7565,8304,8872,9205,9255,8985,8369,7424,6163,4630,2886,1001, -941,-2866,-4690,-6341,-7743,-8856,-9626,-10036,-10089,-9799,-9205,-8365,-7341,-6209,-5026,-3865,-2772,-1765,-863,-63, 663,1342,2013,2707,3451,4258,5118,6012,6906,7735,8437,8956,9231,9210,8859,8164,7143,5815,4228,2446, 541,-1406,-3315,-5106,-6704,-8042,-9075,-9762,-10092,-10064,-9697,-9043,-8155,-7097,-5942,-4762,-3612,-2534,-1552,-676, 104,820,1495,2170,2878,3634,4455,5330,6226,7111,7912,8585,9053,9259,9163,8737,7967,6870,5480,3841, 2026,105,-1843,-3726,-5480,-7021,-8293,-9250,-9853,-10099,-9988,-9547,-8834,-7896,-6812,-5650,-4468,-3329,-2270,-1312, -458,304,1008,1681,2362,3080,3851,4688,5576,6473,7345,8124,8755,9167,9308,9134,8629,7782,6613,5160, 3475,1629,-305,-2247,-4107,-5819,-7301,-8505,-9383,-9904,-10065,-9880,-9370,-8599,-7621,-6509,-5340,-4163,-3039,-2004, -1070,-240,508,1201,1871,2561,3289,4077,4926,5817,6713,7571,8316,8901,9255,9324,9074,8493,7565,6327, 4814,3082,1207,-736,-2668,-4501,-6166,-7590,-8724,-9520,-9960,-10037,-9775,-9201,-8380,-7361,-6233,-5056,-3890,-2783, -1770,-861,-53,677,1364,2035,2729,3475,4276,5136,6030,6920,7756,8471,9005,9296,9296,8967,8302,7298, 5991,4419,2648,745,-1201,-3119,-4922,-6538,-7901,-8959,-9676,-10032,-10027,-9692,-9052,-8180,-7137,-5988,-4807,-3649, -2564,-1574,-687,100,819,1497,2170,2874,3629,4445,5315,6213,7095,7909,8587,9068,9296,9217,8813,8068, 6985,5614,3988,2179,259,-1688,-3588,-5351,-6914,-8208,-9194,-9828,-10097,-10015,-9607,-8905,-7988,-6912,-5752,-4572, -3429,-2362,-1399,-534,232,943,1617,2294,3009,3780,4608,5488,6388,7261,8047,8685,9115,9274,9123,8634, 7811,6659,5224,3548,1708,-224,-2168,-4046,-5766,-7272,-8500,-9403,-9954,-10141,-9977,-9496,-8738,-7775,-6670,-5499, -4324,-3194,-2152,-1210,-365,388,1083,1757,2443,3168,3953,4798,5689,6586,7444,8202,8797,9171,9262,9032, 8467,7567,6345,4851,3129,1261,-680,-2618,-4461,-6136,-7581,-8736,-9556,-10024,-10126,-9885,-9335,-8523,-7521,-6394, -5215,-4045,-2931,-1909,-993,-170,563,1254,1931,2621,3362,4163,5017,5913,6809,7649,8378,8925,9235,9258, 8953,8312,7334,6047,4494,2735,842,-1101,-3023,-4837,-6462,-7844,-8924,-9666,-10046,-10065,-9745,-9132,-8265,-7229, -6084,-4903,-3744,-2649,-1652,-758,42,766,1447,2126,2822,3579,4391,5257,6154,7044,7863,8556,9055,9301, 9253,8868,8149,7096,5741,4136,2338,427,-1518,-3423,-5200,-6770,-8098,-9095,-9751,-10049,-9987,-9595,-8915,-8007, -6939,-5781,-4599,-3452,-2378,-1407,-538,241,945,1624,2301,3008,3775,4603,5477,6380,7254,8049,8703,9149, 9330,9207,8748,7948,6826,5408,3755,1923,-4,-1948,-3824,-5560,-7079,-8325,-9252,-9823,-10032,-9892,-9429,-8693, -7739,-6645,-5473,-4300,-3165,-2113,-1164,-321,437,1135,1808,2488,3209,3987,4830,5711,6617,7478,8247,8860, 9251,9368,9167,8628,7753,6559,5084,3384,1523,-414,-2345,-4196,-5889,-7347,-8520,-9362,-9855,-9978,-9756,-9224, -8433,-7438,-6324,-5141,-3973,-2859,-1831,-907,-85,654,1345,2013,2703,3435,4227,5079,5968,6866,7714,8452, 9018,9350,9394,9120,8500,7550,6288,4755,3009,1126,-816,-2738,-4561,-6204,-7600,-8705,-9466,-9880,-9923,-9629, -9031,-8188,-7158,-6026,-4844,-3685,-2592,-1588,-689,105,836,1509,2184,2878,3622,4425,5292,6185,7072,7898, 8602,9116,9383,9356,8999,8303,7272,5939,4347,2564,657,-1292,-3200,-4989,-6584,-7920,-8944,-9629,-9955,-9922, -9556,-8897,-8003,-6944,-5799,-4618,-3469,-2393,-1415,-542,234,949,1619,2294,2996,3754,4569,5447,6341,7220, 8021,8686,9151,9349,9243,8809,8029,6927,5529,3884,2060,134,-1810,-3699,-5451,-6987,-8262,-9212,-9813,-10056, -9941,-9502,-8785,-7851,-6760,-5601,-4419,-3284,-2228,-1269,-417,341,1051,1718,2402,3119,3895,4731,5618,6515, 7384,8162,8784,9190,9322,9144,8628,7770,6596,5136,3447,1589,-347,-2287,-4154,-5863,-7345,-8540,-9418,-9934, -10091,-9900,-9388,-8614,-7635,-6523,-5352,-4173,-3049,-2013,-1074,-241,504,1208,1879,2573,3306,4097,4950,5843, 6738,7595,8341,8924,9267,9332,9076,8480,7541,6295,4776,3037,1155,-792,-2723,-4558,-6224,-7647,-8770,-9566, -10001,-10079,-9809,-9231,-8408,-7390,-6258,-5075,-3905,-2799,-1783,-872,-55,679,1372,2052,2755,3500,4308,5175, 6070,6956,7795,8511,9040,9318,9309,8974,8296,7278,5967,4392,2606,703,-1247,-3169,-4974,-6587,-7954,-9006, -9722,-10075,-10067,-9726,-9085,-8208,-7158,-6005,-4827,-3662,-2575,-1583,-693,103,826,1517,2198,2909,3671,4493, 5369,6267,7147,7964,8636,9113,9329,9244,8825,8069,6982,5597,3960,2147,224,-1728,-3629,-5398,-6958,-8252, -9236,-9862,-10128,-10043,-9627,-8928,-8006,-6928,-5760,-4578,-3430,-2361,-1389,-518,257,966,1649,2333,3059,3837, 4669,5554,6458,7329,8111,8750,9167,9319,9158,8665,7829,6666,5221,3540,1695,-244,-2192,-4066,-5791,-7295, -8518,-9416,-9968,-10149,-9984,-9494,-8732,-7766,-6664,-5485,-4304,-3171,-2128,-1176,-329,426,1128,1816,2501,3239, 4026,4873,5767,6666,7521,8281,8870,9234,9315,9080,8503,7593,6364,4858,3136,1261,-683,-2620,-4470,-6139, -7586,-8738,-9557,-10013,-10113,-9868,-9311,-8497,-7495,-6364,-5179,-4006,-2892,-1870,-948,-118,617,1310,1991,2692, 3437,4237,5096,5992,6889,7721,8449,8993,9298,9306,8995,8342,7356,6056,4498,2731,836,-1116,-3041,-4852, -6476,-7862,-8934,-9671,-10045,-10062,-9740,-9120,-8254,-7218,-6069,-4883,-3722,-2628,-1630,-732,70,792,1478,2156, 2861,3617,4427,5297,6197,7083,7896,8581,9078,9318,9254,8864,8133,7073,5711,4096,2295,384,-1567,-3474, -5249,-6824,-8137,-9133,-9786,-10074,-10010,-9615,-8935,-8020,-6955,-5794,-4608,-3461,-2384,-1411,-540,239,944,1620, 2304,3017,3784,4607,5489,6388,7260,8052,8702,9141,9322,9186,8716,7912,6782,5356,3700,1864,-65,-2011, -3886,-5624,-7136,-8384,-9300,-9868,-10069,-9924,-9460,-8714,-7759,-6660,-5489,-4308,-3179,-2125,-1177,-331,428,1122, 1799,2481,3205,3986,4825,5706,6608,7470,8233,8843,9224,9341,9131,8588,7708,6511,5025,3327,1464,-473, -2409,-4254,-5939,-7392,-8563,-9400,-9883,-10003,-9778,-9238,-8439,-7444,-6324,-5144,-3976,-2859,-1834,-909,-92,645, 1333,2007,2693,3423,4214,5065,5957,6847,7692,8429,8992,9319,9354,9074,8447,7498,6225,4689,2947,1068, -877,-2795,-4616,-6250,-7643,-8736,-9494,-9893,-9928,-9631,-9027,-8177,-7148,-6015,-4833,-3672,-2579,-1582,-690,105, 829,1497,2172,2867,3608,4412,5273,6162,7051,7870,8573,9085,9349,9318,8957,8254,7225,5889,4298,2519, 613,-1329,-3231,-5018,-6607,-7931,-8954,-9624,-9945,-9896,-9526,-8863,-7970,-6909,-5761,-4579,-3439,-2368,-1396,-533, 241,948,1615,2284,2987,3739,4558,5423,6321,7192,7996,8655,9118,9317,9210,8767,7991,6888,5490,3852, 2032,-33,-164,2080,2669,1955,1405,657,-128,-1526,-3015,-4391,-5641,-7102,-8643,-10248,-11314,-12259,-13228,-13925, -13795,-13029,-11623,-9948,-7648,-4979,-2252,52,1893,3251,4449,5326,5831,6134,6668,7316,7937,8018,7809,7354, 6572,5224,3368,1372,-357,-2140,-3839,-4884,-5582,-6047,-6287,-6217,-5610,-4522,-3083,-1422,586,2908,5287,7472, 9419,10949,12181,13311,13814,13438,12770,12003,11182,10088,8669,6882,5103,3330,1477,-440,-2307,-3759,-5006,-5438, -5385,-5279,-4679,-3563,-2183,-851,369,1291,2308,3303,4134,4739,5538,6428,6978,7355,7575,7144,6350,5347, 3838,2027,84,-2045,-4094,-5864,-7417,-8960,-10161,-10709,-11033,-11122,-10900,-10452,-9996,-9515,-8925,-7900,-6743,-5707, -4427,-2743,-942,843,2226,3356,4210,4834,5159,4878,4142,3263,2124,628,-1165,-2897,-4427,-5642,-6981,-8322, -9035,-9167,-9216,-9047,-8316,-6939,-5328,-3802,-2142,-251,1791,3609,4862,6197,7630,8816,9532,9965,10171,9929, 9135,8119,7004,5750,4315,2536,793,-653,-1795,-2893,-3826,-4605,-4748,-4362,-3655,-2847,-1682,-331,1226,2787, 4398,6031,7680,9178,10530,11434,12350,12659,12373,11633,10818,9816,8542,6778,4966,3114,1537,-120,-1712,-2999, -4068,-4976,-5757,-6421,-6549,-6345,-5881,-5280,-4213,-2739,-1072,678,2335,3904,5491,6993,7922,8232,8414,8489, 7932,6941,5641,4192,2617,793,-1201,-3142,-4953,-6636,-8235,-9508,-10484,-11161,-11770,-11863,-11386,-10673,-9890,-8986, -7512,-5626,-3730,-1873,-116,1500,3044,4314,5133,5514,5437,5061,4465,3532,2288,864,-527,-1919,-3367,-4625, -5775,-6880,-7841,-8525,-8750,-8647,-8293,-7605,-6383,-4690,-2804,-992,790,2828,4813,6421,7810,8960,9749,10239, 10085,9632,8907,7820,6455,4935,3208,1574,-98,-1758,-3420,-4944,-6173,-6895,-7350,-7518,-7301,-6532,-5425,-4159, -2637,-635,1384,3216,4965,6601,8060,9061,9595,9885,9950,9717,9008,7995,6757,5395,3664,1881,27,-1893, -3831,-5609,-7218,-8610,-9668,-10211,-10530,-10562,-10025,-9051,-7694,-6211,-4632,-2916,-1206,343,1711,2788,3804,4549, 4886,4884,4797,4255,3313,2024,647,-887,-2533,-4308,-5955,-7516,-8713,-9805,-10600,-11040,-10970,-10711,-10032,-9047, -7629,-6051,-4316,-2539,-715,1070,2784,4215,5343,6171,6736,6955,6722,6132,5320,4342,3003,1437,-324,-1959, -3443,-4950,-6400,-7344,-8003,-8297,-8406,-8102,-7322,-6236,-4996,-3525,-1886,-130,1632,3269,4867,6398,7654,8646, 9325,9732,9866,9607,9050,8158,6966,5566,4012,2187,343,-1356,-2881,-4356,-5497,-6374,-6667,-6766,-6521,-5991, -5092,-3823,-2493,-1087,503,2170,3848,5307,6657,7781,8829,9323,9519,9369,8898,8102,6916,5421,3863,2193, 374,-1490,-3266,-4879,-6324,-7594,-8548,-9277,-9539,-9467,-9084,-8442,-7424,-6100,-4641,-3204,-1615,-14,1360,2580, 3425,4124,4633,4699,4365,3784,2966,1982,661,-739,-2258,-3650,-5160,-6529,-7781,-8684,-9378,-9817,-9850,-9586, -8931,-7895,-6625,-5176,-3446,-1660,280,2095,3729,5357,6739,7776,8443,8756,8789,8403,7596,6551,5270,3806, 2227,456,-1267,-2773,-4156,-5395,-6302,-6891,-7072,-7023,-6561,-5772,-4568,-3252,-1578,113,2002,3721,5522,7103, 8529,9635,10707,11253,11450,11304,10837,10006,8827,7363,5836,4098,2335,537,-1266,-2765,-4050,-5132,-5905,-6252, -6255,-5900,-5286,-4407,-3169,-1770,-303,1191,2705,4182,5559,6685,7597,8236,8574,8612,8196,7610,6637,5346, 3906,2304,578,-1009,-2632,-4118,-5494,-6556,-7381,-7764,-7972,-7743,-7203,-6387,-5354,-4157,-2832,-1297,225,1571, 2844,3995,4874,5419,5681,5651,5229,4476,3390,2010,523,-1187,-2978,-4810,-6487,-8121,-9505,-10721,-11592,-12189, -12313,-12153,-11676,-10890,-9641,-8169,-6438,-4661,-2806,-842,1004,2627,4147,5389,6292,6785,6864,6713,6197,5338, 4277,2873,1470,48,-1521,-3041,-4237,-5410,-6220,-6781,-7056,-6958,-6509,-5703,-4603,-3236,-1565,313,2152,4016, 5858,7666,9303,10612,11594,12345,12720,12802,12348,11660,10750,9688,8196,6696,5153,3573,2172,789,-324,-1123, -1641,-1864,-1732,-1348,-576,393,1634,3042,4513,6060,7571,8933,10188,11163,11953,12442,12515,12237,11709,10787, 9509,7887,6200,4297,2339,274,-1559,-3312,-4909,-6257,-7408,-8124,-8439,-8584,-8282,-7718,-6897,-5859,-4727,-3389, -2088,-743,503,1594,2436,3138,3443,3542,3220,2676,1788,664,-776,-2385,-4153,-5877,-7565,-9294,-10686,-11914, -12874,-13539,-13845,-13772,-13301,-12577,-11575,-10262,-8806,-7107,-5454,-3832,-2151,-551,727,1840,2604,3135,3259,3054, 2533,1690,586,-682,-2190,-3763,-5352,-6904,-8290,-9520,-10548,-11264,-11574,-11712,-11452,-10846,-9896,-8595,-7197,-5502, -3701,-1774,72,1814,3443,4900,6141,6924,7543,7714,7659,7164,6357,5414,4233,2852,1489,39,-1224,-2451, -3467,-4261,-4710,-4934,-4752,-4299,-3520,-2557,-1185,281,1998,3677,5468,7182,8752,10073,11112,11827,12299,12358, 11915,11315,10330,9047,7506,5821,4098,2302,570,-1004,-2485,-3684,-4677,-5324,-5663,-5668,-5309,-4597,-3713,-2544, -1267,122,1626,3071,4331,5633,6537,7294,7692,7765,7578,7071,6110,5026,3686,2096,407,-1355,-3049,-4662, -6220,-7435,-8470,-9042,-9539,-9530,-9240,-8478,-7510,-6166,-4696,-3098,-1290,378,2072,3606,4914,6023,6914,7337, 7507,7321,6795,5902,4814,3392,1888,226,-1488,-3175,-4841,-6279,-7444,-8505,-9125,-9418,-9359,-8968,-8297,-7319, -6017,-4586,-3063,-1434,108,1644,2988,4151,5072,5687,6040,6073,5670,5056,4121,2964,1606,147,-1444,-2950, -4472,-5849,-7145,-7985,-8634,-9040,-9046,-8647,-7988,-7027,-5796,-4402,-2812,-1064,568,2218,3733,5098,6107,6921, 7457,7744,7595,7127,6381,5331,4215,2730,1249,-279,-1776,-3147,-4359,-5424,-6129,-6643,-6756,-6532,-6020,-5162, -3962,-2597,-1013,655,2390,4104,5808,7136,8562,9506,10252,10634,10669,10439,9869,8838,7626,6244,4739,3060, 1327,-330,-1889,-3268,-4449,-5268,-5814,-6043,-5996,-5548,-4770,-3773,-2530,-1111,374,1889,3318,4652,5876,6813, 7554,8017,8117,7915,7336,6496,5398,4140,2529,932,-800,-2477,-4153,-5678,-6889,-7872,-8639,-8868,-8932,-8567, -7940,-7014,-5865,-4492,-2994,-1414,174,1713,3040,4174,5117,5826,6160,6260,6076,5429,4505,3344,1977,466, -1247,-2895,-4456,-6065,-7386,-8530,-9337,-9754,-9958,-9766,-9165,-8339,-7200,-5929,-4434,-2848,-1169,347,1919,3271, 4379,5307,5901,6155,6225,5831,5201,4261,3039,1636,40,-1563,-3042,-4620,-5967,-7103,-7997,-8516,-8841,-8728, -8290,-7576,-6539,-5217,-3736,-2160,-524,1193,2820,4353,5630,6742,7539,8071,8212,8050,7593,6833,5704,4419, 2970,1415,-218,-1821,-3296,-4537,-5615,-6333,-6785,-6920,-6695,-6142,-5279,-4067,-2778,-1242,426,2114,3786,5267, 6707,7957,8869,9472,9846,9853,9464,8742,7756,6525,5154,3556,1995,290,-1224,-2728,-3990,-4983,-5581,-6080, -6071,-5787,-5216,-4379,-3237,-1809,-292,1201,2822,4290,5712,6890,7826,8568,8978,9004,8742,8165,7252,6108, 4661,3138,1494,-234,-1939,-3459,-4871,-6004,-6921,-7510,-7758,-7658,-7232,-6474,-5453,-4190,-2768,-1260,384,2007, 3472,4899,6103,7063,7797,8080,8166,7810,7171,6234,5029,3609,2033,331,-1259,-2906,-4380,-5644,-6611,-7408, -7871,-7999,-7765,-7247,-6418,-5349,-4119,-2666,-1166,316,1793,3165,4330,5302,6011,6442,6554,6282,5738,4923, 3797,2456,965,-688,-2346,-3986,-5523,-6886,-7996,-8937,-9508,-9693,-9563,-9169,-8463,-7370,-6064,-4680,-3117,-1477, 146,1692,3048,4299,5293,5914,6276,6388,6130,5528,4595,3457,2088,509,-1115,-2761,-4379,-5842,-7232,-8302, -9084,-9559,-9725,-9523,-9035,-8173,-7156,-5811,-4358,-2759,-1242,406,1835,3170,4199,5015,5579,5807,5683,5268, 4554,3614,2372,920,-676,-2180,-3823,-5319,-6599,-7718,-8569,-9143,-9363,-9219,-8808,-8035,-6932,-5706,-4222,-2696, -1016,721,2260,3679,5029,6053,6815,7215,7380,7181,6679,5777,4797,3410,1958,349,-1258,-2821,-4293,-5639, -6635,-7484,-7973,-8146,-8056,-7511,-6712,-5741,-4497,-3039,-1527,24,1543,2981,4334,5336,6133,6738,6936,6858, 6401,5654,4618,3340,1860,327,-1291,-2977,-4543,-5916,-7083,-7946,-8645,-8886,-8883,-8464,-7775,-6851,-5577,-4008, -2515,-767,893,2596,4046,5345,6483,7374,7883,8098,8025,7556,6820,5764,4517,3138,1566,27,-1445,-2902, -4152,-5210,-5929,-6367,-6469,-6259,-5697,-4917,-3779,-2501,-990,632,2247,3904,5454,6835,8037,8950,9630,10005, 10020,9656,9084,8116,6925,5487,4060,2377,776,-748,-2151,-3355,-4272,-4975,-5364,-5419,-5032,-4440,-3499,-2274, -969,510,2090,3652,5268,6712,7974,9112,9906,10363,10517,10375,9963,9170,8059,6821,5348,3775,2074,485, -1105,-2458,-3605,-4401,-5009,-5283,-5203,-4793,-4102,-3065,-1908,-503,1018,2588,4080,5484,6773,7959,8816,9395, 9694,9736,9346,8628,7672,6516,5076,3406,1878,204,-1382,-2910,-4179,-5169,-5917,-6437,-6515,-6353,-5791,-4979, -3971,-2685,-1272,235,1803,3272,4668,5875,6870,7579,8038,8141,7984,7413,6588,5374,4024,2511,929,-771, -2419,-4026,-5378,-6617,-7531,-8292,-8617,-8615,-8256,-7563,-6595,-5431,-4076,-2601,-1009,619,2133,3556,4737,5738, 6368,6767,6820,6556,5937,5134,3975,2633,1095,-470,-2157,-3679,-5176,-6393,-7457,-8155,-8695,-8856,-8608,-7983, -7186,-6073,-4709,-3217,-1649,-32,1602,3138,4501,5599,6534,7103,7423,7315,6930,6278,5220,4000,2669,1019, -559,-2255,-3756,-5085,-6290,-7251,-7784,-8074,-8037,-7693,-7046,-6026,-4789,-3460,-1892,-278,1282,2830,4194,5388, 6458,7079,7512,7555,7307,6774,5837,4710,3329,1721,106,-1550,-3234,-4779,-6190,-7298,-8119,-8709,-8895,-8774, -8411,-7637,-6657,-5412,-4041,-2504,-1034,562,1998,3356,4312,5181,5766,6040,5853,5521,4787,3790,2515,1038, -578,-2159,-3896,-5511,-6941,-8186,-9153,-9891,-10332,-10359,-10122,-9506,-8573,-7470,-6102,-4646,-3044,-1479,11,1405, 2676,3698,4444,4808,4970,4772,4274,3418,2387,1137,-330,-1878,-3461,-4983,-6371,-7663,-8676,-9436,-9869,-10012, -9821,-9303,-8441,-7410,-6020,-4529,-2928,-1256,385,1926,3373,4622,5603,6356,6688,6726,6443,5876,4974,3837, 2473,1026,-534,-2080,-3645,-5017,-6202,-7152,-7884,-8089,-8156,-7798,-7111,-6249,-5006,-3611,-2083,-448,1245,2900, 4365,5676,6783,7699,8176,8469,8376,7946,7208,6185,4938,3592,1992,389,-1125,-2577,-3889,-5037,-5816,-6253, -6535,-6373,-5897,-5099,-4074,-2871,-1419,135,1774,3381,4916,6338,7550,8456,9101,9575,9570,9205,8696,7780, 6632,5196,3675,2012,386,-1234,-2638,-3886,-4939,-5690,-6148,-6223,-5908,-5413,-4554,-3405,-2078,-636,915,2462, 4025,5400,6743,7845,8588,9115,9271,9108,8663,7885,6758,5530,4072,2423,701,-1000,-2554,-3904,-5200,-6064, -6736,-7031,-7057,-6624,-5983,-4980,-3847,-2404,-842,735,2344,3859,5297,6527,7476,8224,8671,8712,8394,7843, 6927,5791,4435,2893,1355,-267,-1825,-3373,-4639,-5657,-6433,-6941,-7034,-6887,-6350,-5623,-4528,-3228,-1807,-331, 1393,2898,4376,5529,6790,7623,8192,8363,8306,7851,7120,6066,4784,3298,1827,136,-1445,-2952,-4301,-5540, -6498,-7095,-7316,-7385,-7048,-6328,-5358,-4185,-2834,-1343,316,1971,3538,5009,6204,7252,7948,8414,8559,8296, 7730,6935,5751,4417,2899,1276,-319,-1872,-3440,-4723,-5810,-6606,-7149,-7320,-7209,-6684,-5932,-4841,-3566,-2094, -591,963,2496,4097,5376,6505,7403,7958,8285,8189,7810,7122,6148,4947,3482,1930,307,-1409,-2980,-4356, -5634,-6615,-7284,-7658,-7690,-7412,-6781,-5877,-4716,-3369,-1834,-285,1314,2821,4225,5454,6477,7197,7649,7731, 7485,6937,6044,4905,3575,2028,410,-1261,-2925,-4484,-5924,-7061,-7916,-8484,-8751,-8598,-8192,-7484,-6505,-5265, -3831,-2377,-821,828,2251,3596,4658,5562,6219,6483,6455,6133,5560,4658,3413,1986,412,-1121,-2820,-4339, -5800,-6998,-8019,-8746,-9121,-9149,-8937,-8301,-7355,-6209,-4824,-3387,-1720,-95,1473,2920,4262,5337,6171,6650, 6863,6767,6277,5499,4520,3191,1717,109,-1521,-3155,-4552,-6000,-7068,-7951,-8466,-8770,-8714,-8260,-7481,-6561, -5226,-3840,-2336,-725,857,2371,3900,4966,5995,6651,7022,7069,6737,6146,5258,4057,2761,1260,-336,-1918, -3563,-4958,-6141,-7182,-7852,-8198,-8253,-7957,-7408,-6480,-5272,-3901,-2426,-737,902,2536,4042,5348,6477,7388, 7900,8173,8077,7663,6826,5815,4489,3086,1433,-191,-1848,-3372,-4774,-6045,-6959,-7547,-7962,-7930,-7495,-6877, -5907,-4766,-3429,-1884,-287,1208,2763,4135,5300,6238,6883,7294,7392,7054,6466,5587,4443,3012,1460,-125, -1727,-3469,-4897,-6193,-7204,-8024,-8483,-8634,-8350,-7859,-7009,-5940,-4596,-3133,-1604,-3,1597,3042,4360,5494, 6348,6930,7091,6999,6660,5851,4835,3611,2168,599,-1137,-2709,-4238,-5686,-6883,-7732,-8421,-8705,-8649,-8320, -7658,-6644,-5493,-4037,-2480,-855,702,2230,3684,4919,5892,6710,7162,7282,7028,6430,5656,4601,3221,1735, 192,-1449,-3049,-4511,-5805,-6799,-7698,-8105,-8287,-8009,-7473,-6651,-5553,-4176,-2712,-1084,573,2146,3746,5057, 6219,7170,7818,8096,8103,7782,7095,6082,4908,3491,1988,344,-1238,-2727,-4096,-5289,-6224,-6927,-7163,-7211, -6882,-6197,-5268,-4098,-2755,-1264,392,1959,3499,4970,6229,7259,8029,8445,8609,8385,7792,6979,5849,4497, 2904,1288,-375,-2013,-3599,-4923,-6056,-6926,-7479,-7750,-7630,-7183,-6496,-5470,-4201,-2754,-1289,268,1876,3336, 4698,5857,6792,7376,7626,7541,7149,6552,5543,4313,2898,1331,-336,-1986,-3584,-5015,-6208,-7247,-7901,-8287, -8334,-8078,-7516,-6561,-5407,-4038,-2503,-892,760,2295,3722,5079,6229,6980,7560,7749,7643,7123,6377,5361, 4100,2667,1068,-550,-2120,-3607,-5010,-6110,-6968,-7479,-7719,-7579,-7157,-6439,-5384,-4116,-2722,-1158,455,2092, 3588,4946,6155,7099,7763,8081,8061,7803,7143,6220,4967,3603,2041,367,-1279,-2791,-4303,-5542,-6602,-7390, -7768,-7876,-7681,-7046,-6182,-5049,-3686,-2201,-612,1090,2622,4089,5435,6525,7377,7928,8129,7997,7535,6823, 5802,4528,3073,1459,-194,-1771,-3327,-4748,-5846,-6773,-7396,-7664,-7620,-7265,-6511,-5611,-4321,-2903,-1410,163, 1759,3223,4700,5811,6804,7450,7801,7806,7467,6842,5954,4715,3349,1786,106,-1527,-3244,-4669,-5938,-7113, -7859,-8310,-8516,-8258,-7747,-6969,-5828,-4556,-3088,-1452,137,1767,3197,4554,5719,6566,7120,7385,7293,6909, 6166,5121,3945,2485,878,-705,-2312,-3779,-5222,-6358,-7232,-7819,-8133,-7973,-7576,-6887,-5856,-4603,-3168,-1560, 39,1729,3364,4823,6042,7086,7879,8355,8495,8320,7802,7010,5897,4538,3048,1506,-109,-1663,-3063,-4333, -5374,-6154,-6620,-6700,-6495,-5964,-5100,-4022,-2662,-1196,376,2019,3667,5129,6507,7661,8582,9163,9411,9373, 9001,8297,7304,6065,4576,3012,1322,-279,-1862,-3365,-4583,-5575,-6267,-6555,-6625,-6347,-5741,-4826,-3704,-2303, -837,735,2260,3797,5137,6499,7395,8159,8496,8622,8278,7703,6759,5666,4218,2675,962,-683,-2371,-3959, -5414,-6519,-7434,-7989,-8253,-8141,-7770,-7057,-6042,-4803,-3429,-1930,-326,1241,2705,3981,5089,5977,6569,6839, 6783,6369,5653,4643,3352,1894,282,-1408,-3011,-4641,-6061,-7359,-8370,-9106,-9455,-9530,-9232,-8599,-7684,-6536, -5226,-3731,-2053,-489,1135,2659,3912,5036,5871,6378,6650,6475,6037,5318,4232,3020,1552,0,-1583,-3145, -4648,-5845,-6917,-7675,-8201,-8333,-8151,-7647,-6812,-5670,-4326,-2836,-1228,476,2151,3778,5209,6507,7490,8232, 8598,8643,8379,7872,6921,5770,4376,2870,1238,-371,-1874,-3300,-4582,-5541,-6191,-6607,-6675,-6372,-5775,-4853, -3742,-2421,-859,724,2350,3884,5376,6725,7761,8561,9083,9275,9189,8653,7887,6827,5583,4029,2451,758, -810,-2398,-3781,-4982,-5879,-6544,-6753,-6748,-6345,-5609,-4665,-3478,-2032,-560,1060,2585,4110,5486,6644,7573, 8239,8536,8525,8222,7561,6598,5354,3920,2340,691,-1052,-2611,-4158,-5450,-6626,-7457,-7921,-8036,-7913,-7358, -6532,-5447,-4168,-2749,-1162,444,1978,3496,4754,5858,6702,7197,7382,7311,6784,6104,5078,3782,2328,714, -919,-2493,-4079,-5468,-6591,-7508,-8125,-8382,-8319,-7886,-7184,-6203,-4896,-3471,-1907,-284,1397,3013,4473,5680, 6816,7560,8010,8136,7889,7391,6532,5417,4110,2629,1083,-570,-2171,-3559,-4836,-5869,-6615,-7028,-7118,-6956, -6422,-5550,-4468,-3148,-1646,-8,1614,3209,4707,6058,7205,8065,8607,8929,8811,8452,7694,6663,5412,3998, 2359,673,-991,-2545,-3991,-5238,-6222,-6854,-7295,-7275,-7021,-6372,-5472,-4324,-2997,-1496,25,1593,3134,4535, 5733,6689,7408,7796,7859,7538,7010,6108,4958,3480,1949,307,-1404,-3046,-4562,-5926,-7050,-7937,-8517,-8690, -8546,-8126,-7311,-6304,-5061,-3657,-2117,-510,1045,2523,3872,4976,5850,6435,6697,6637,6278,5542,4577,3356, 1874,288,-1457,-2998,-4654,-6092,-7352,-8391,-9058,-9452,-9448,-9173,-8472,-7557,-6369,-4981,-3479,-1877,-229,1317, 2784,4095,5179,6007,6488,6681,6513,6057,5290,4261,2974,1577,10,-1534,-3099,-4561,-5809,-6853,-7652,-8082, -8210,-8007,-7471,-6682,-5545,-4133,-2666,-987,790,2471,4085,5522,6749,7853,8579,8959,9098,8842,8267,7355, 6219,4854,3437,1797,246,-1304,-2698,-3951,-4916,-5562,-5889,-6009,-5658,-5060,-4179,-3056,-1673,-180,1418,2962, 4547,5989,7256,8293,9028,9557,9714,9478,8982,8144,7026,5642,4093,2454,775,-913,-2503,-3867,-5083,-6066, -6780,-7044,-7048,-6738,-6147,-5134,-3993,-2601,-1194,291,1831,3270,4560,5679,6572,7172,7419,7341,6997,6278, 5289,4057,2535,958,-766,-2487,-4165,-5660,-7054,-8132,-8916,-9444,-9692,-9517,-9012,-8211,-7136,-5877,-4383,-2866, -1332,162,1611,2884,3960,4742,5240,5419,5357,4833,4055,3052,1758,277,-1292,-3004,-4570,-6140,-7493,-8658, -9548,-10129,-10430,-10365,-9895,-9202,-8209,-6922,-5445,-3916,-2197,-555,1027,2488,3733,4823,5601,6010,6209,6023, 5524,4741,3668,2350,938,-643,-2212,-3673,-5066,-6264,-7262,-7952,-8327,-8381,-8096,-7444,-6558,-5343,-3956,-2455, -752,954,2551,4151,5586,6795,7677,8320,8628,8644,8256,7618,6645,5439,4048,2496,925,-615,-2166,-3539, -4644,-5556,-6179,-6549,-6497,-6129,-5498,-4524,-3325,-1950,-397,1176,2774,4312,5743,6899,7966,8690,9083,9169, 8839,8236,7368,6133,4791,3220,1554,-206,-1891,-3389,-4746,-5952,-6769,-7349,-7575,-7497,-7088,-6398,-5349,-4195, -2809,-1258,280,1810,3212,4490,5631,6378,6912,7158,7089,6639,5861,4832,3537,2053,443,-1209,-2918,-4486, -5976,-7205,-8219,-8916,-9338,-9320,-9098,-8437,-7594,-6457,-5089,-3581,-2050,-429,1094,2550,3801,4803,5625,6081, 6194,6034,5535,4708,3687,2304,823,-697,-2355,-3894,-5347,-6672,-7727,-8564,-9037,-9152,-8982,-8494,-7645,-6530, -5206,-3767,-2149,-426,1180,2775,4287,5534,6565,7239,7655,7685,7497,6834,6014,4879,3586,2111,553,-1010, -2451,-3867,-4960,-5905,-6515,-6851,-6813,-6467,-5803,-4832,-3600,-2200,-631,1017,2647,4240,5791,7085,8141,9029, 9520,9740,9570,9115,8366,7261,5939,4535,2927,1277,-357,-1906,-3262,-4396,-5302,-5847,-6150,-6052,-5672,-4949, -3994,-2751,-1434,115,1687,3236,4656,5994,7143,8059,8699,9033,9005,8700,8016,7004,5795,4384,2802,1095, -574,-2191,-3637,-5032,-6084,-6859,-7332,-7512,-7256,-6796,-5974,-4919,-3678,-2194,-674,847,2404,3791,5089,6093, 6858,7383,7549,7328,6896,6097,5002,3669,2117,483,-1137,-2830,-4336,-5773,-6959,-7894,-8526,-8818,-8774,-8425, -7795,-6799,-5596,-4183,-2698,-1154,435,2002,3359,4626,5575,6275,6692,6723,6488,5936,5033,3986,2585,1144, -482,-2120,-3637,-5036,-6312,-7315,-8057,-8464,-8614,-8325,-7787,-6906,-5793,-4458,-2948,-1350,281,1883,3386,4755, 5939,6825,7444,7724,7671,7276,6545,5610,4367,2932,1426,-174,-1769,-3353,-4679,-5880,-6750,-7389,-7680,-7648, -7241,-6630,-5664,-4470,-3070,-1587,43,1618,3188,4562,5806,6801,7576,7907,8052,7821,7284,6384,5221,3891, 2377,743,-912,-2492,-3998,-5361,-6444,-7251,-7752,-7937,-7835,-7364,-6589,-5476,-4289,-2826,-1292,271,1836,3327, 4615,5736,6577,7110,7416,7331,6854,6221,5242,3945,2525,943,-633,-2257,-3838,-5250,-6451,-7471,-8075,-8507, -8477,-8133,-7558,-6597,-5426,-4011,-2516,-929,669,2260,3674,4930,6017,6798,7291,7353,7165,6720,5856,4742, 3548,2027,460,-1195,-2733,-4183,-5485,-6599,-7352,-7878,-8062,-7911,-7468,-6639,-5546,-4322,-2788,-1231,432,1998, 3533,4863,6128,7096,7748,8087,8164,7806,7166,6243,5120,3750,2237,695,-894,-2384,-3812,-4993,-5904,-6574, -6938,-6911,-6575,-5927,-5037,-3874,-2482,-894,637,2343,3940,5426,6725,7769,8635,9135,9258,9174,8659,7938, 6877,5525,4103,2570,871,-664,-2174,-3618,-4706,-5619,-6141,-6349,-6301,-5907,-5105,-4134,-2889,-1567,-3,1609, 3153,4642,6045,7134,8054,8678,9022,9070,8730,8068,7169,5934,4554,3017,1346,-320,-1833,-3363,-4639,-5660, -6426,-6867,-7008,-6788,-6217,-5423,-4290,-2999,-1564,-35,1519,3065,4496,5734,6758,7607,8047,8258,8064,7583, 6848,5761,4385,2947,1356,-318,-2022,-3597,-4970,-6118,-7105,-7704,-8013,-7994,-7659,-7049,-6080,-4886,-3589,-2014, -487,1069,2525,3891,5059,6016,6635,6985,7064,6743,6135,5221,4033,2676,1084,-479,-2079,-3696,-5120,-6428, -7512,-8293,-8760,-8912,-8613,-8104,-7275,-6230,-4952,-3440,-1894,-339,1283,2753,4085,5177,6050,6527,6806,6695, 6365,5664,4689,3449,2000,431,-1182,-2784,-4304,-5654,-6787,-7712,-8314,-8592,-8515,-8154,-7459,-6464,-5257,-3859, -2345,-726,908,2447,3883,5155,6182,6940,7377,7477,7318,6767,5886,4869,3569,2115,494,-1077,-2640,-4077, -5349,-6349,-7150,-7541,-7704,-7527,-7033,-6159,-5103,-3766,-2273,-719,881,2394,3911,5330,6433,7352,7961,8229, 8204,7825,7151,6209,5003,3571,2037,430,-1177,-2731,-4144,-5258,-6242,-6933,-7221,-7224,-6932,-6287,-5386,-4191, -2828,-1384,262,1790,3369,4756,5981,6938,7699,8111,8266,8060,7505,6671,5517,4223,2696,1041,-609,-2213, -3698,-5070,-6236,-7120,-7622,-7876,-7777,-7286,-6633,-5590,-4382,-3032,-1488,21,1588,3015,4338,5435,6291,6827, 7132,7089,6636,6009,4956,3720,2314,680,-869,-2518,-4177,-5585,-6854,-7780,-8539,-9017,-9030,-8697,-8164,-7273, -6149,-4823,-3359,-1833,-161,1385,2771,4082,5160,5957,6395,6612,6407,5968,5200,4138,2887,1428,-118,-1738, -3328,-4754,-6066,-7165,-7980,-8456,-8631,-8556,-8095,-7288,-6225,-4991,-3446,-1942,-290,1299,2836,4270,5494,6481, 7178,7620,7653,7369,6802,5920,4838,3451,2048,503,-1066,-2563,-3975,-5116,-6039,-6721,-7073,-7033,-6771,-6099, -5258,-4045,-2667,-1123,429,2204,3734,5263,6620,7695,8584,9144,9361,9306,8928,8189,7137,5869,4516,3009, 1341,-194,-1644,-2992,-4105,-5023,-5578,-5805,-5781,-5360,-4643,-3683,-2452,-1106,420,2011,3539,5039,6424,7596, 8561,9211,9519,9547,9229,8583,7712,6495,5112,3513,1910,257,-1345,-2912,-4195,-5245,-6030,-6540,-6732,-6561, -6058,-5315,-4222,-2984,-1613,-114,1426,2880,4355,5535,6601,7434,7941,8083,7975,7508,6783,5692,4414,2969, 1353,-294,-1993,-3541,-4942,-6132,-7124,-7744,-8060,-8062,-7730,-7175,-6189,-5038,-3727,-2200,-629,907,2417,3774, 5002,6020,6644,7074,7136,6939,6342,5426,4308,2980,1487,-83,-1691,-3287,-4768,-6036,-7115,-7820,-8398,-8497, -8281,-7829,-7005,-5964,-4639,-3154,-1637,-18,1542,3008,4365,5444,6402,6998,7251,7263,6918,6223,5289,4087, 2678,1182,-443,-2021,-3532,-4900,-6069,-7032,-7673,-7928,-7880,-7570,-6867,-5987,-4762,-3410,-1933,-340,1284,2854, 4282,5523,6623,7319,7790,7965,7759,7196,6414,5362,4053,2598,1001,-612,-2170,-3672,-5022,-6001,-6845,-7347, -7588,-7466,-6941,-6217,-5213,-3947,-2537,-994,556,2108,3536,4899,6014,6943,7520,7799,7757,7366,6662,5695, 4466,3066,1536,-63,-1733,-3317,-4734,-5909,-6986,-7665,-8044,-8115,-7868,-7319,-6446,-5307,-4012,-2523,-931,617, 2140,3536,4749,5860,6611,7049,7227,7036,6559,5741,4662,3370,1942,300,-1263,-2799,-4282,-5653,-6779,-7621, -8092,-8347,-8241,-7743,-7051,-6036,-4769,-3385,-1816,-244,1307,2875,4208,5380,6287,6935,7319,7287,6992,6440, 5494,4353,2965,1391,-191,-1735,-3313,-4715,-5974,-6936,-7713,-8125,-8188,-7871,-7364,-6446,-5333,-4005,-2576,-993, 612,2180,3577,4878,5996,6819,7306,7493,7362,6930,6234,5152,3925,2483,970,-676,-2241,-3684,-5067,-6229, -7052,-7632,-7881,-7826,-7399,-6712,-5660,-4461,-3028,-1484,94,1685,3211,4602,5887,6793,7500,7941,7957,7672, 7072,6225,5090,3718,2221,631,-926,-2612,-4063,-5335,-6279,-7056,-7482,-7610,-7372,-6830,-6035,-4977,-3621,-2192, -644,987,2510,3973,5252,6349,7215,7749,7982,7938,7490,6806,5734,4504,3089,1537,-105,-1650,-3191,-4561, -5703,-6641,-7234,-7499,-7513,-7101,-6407,-5468,-4284,-2935,-1422,173,1733,3244,4651,5879,6895,7591,7955,8095, 7804,7280,6458,5294,4001,2490,857,-723,-2321,-3814,-5068,-6137,-6941,-7462,-7567,-7354,-6878,-6091,-4989,-3768, -2269,-780,760,2358,3814,5059,6176,7070,7611,7858,7782,7402,6697,5687,4526,3093,1533,-62,-1695,-3252, -4599,-5879,-6826,-7476,-7829,-7863,-7577,-6941,-6032,-4938,-3576,-2057,-509,1057,2523,3916,5152,6138,6817,7311, 7393,7202,6679,5856,4767,3436,1905,343,-1291,-2868,-4376,-5757,-6842,-7668,-8200,-8344,-8225,-7757,-7061,-6035, -4786,-3338,-1794,-233,1375,2805,4145,5246,6156,6779,7062,7010,6686,6011,5056,3838,2442,882,-690,-2338, -3799,-5269,-6413,-7423,-8154,-8508,-8504,-8241,-7688,-6775,-5621,-4304,-2833,-1259,346,1851,3307,4573,5631,6394, 6848,7007,6885,6407,5629,4609,3296,1833,238,-1353,-2905,-4411,-5784,-6805,-7663,-8184,-8403,-8290,-7811,-7045, -6055,-4779,-3329,-1748,-205,1390,2935,4312,5482,6428,7087,7467,7479,7189,6566,5674,4516,3167,1701,109, -1469,-3020,-4455,-5654,-6604,-7290,-7722,-7745,-7455,-6915,-6003,-4875,-3545,-2061,-473,1094,2687,4104,5424,6523, 7295,7831,8046,7894,7474,6709,5623,4412,2988,1385,-201,-1797,-3311,-4678,-5809,-6688,-7266,-7576,-7433,-7048, -6363,-5377,-4200,-2812,-1282,314,1874,3424,4793,5975,6852,7550,7950,8015,7723,7165,6275,5131,3745,2225, 666,-992,-2554,-4015,-5280,-6299,-7081,-7551,-7640,-7435,-6917,-6054,-4990,-3704,-2253,-721,853,2407,3815,5175, 6251,7111,7591,7801,7710,7286,6524,5504,4264,2828,1280,-363,-1988,-3447,-4843,-6041,-6921,-7561,-7821,-7869, -7499,-6819,-5898,-4733,-3323,-1866,-249,1334,2834,4271,5441,6405,7127,7519,7589,7346,6782,5961,4849,3465, 2003,379,-1206,-2788,-4215,-5481,-6545,-7340,-7808,-7923,-7763,-7311,-6494,-5419,-4128,-2690,-1158,484,2023,3540, 4824,5957,6834,7427,7662,7636,7263,6592,5595,4366,2988,1464,-137,-1692,-3222,-4600,-5800,-6696,-7370,-7642, -7681,-7314,-6687,-5741,-4582,-3202,-1750,-152,1401,2964,4378,5636,6642,7344,7757,7929,7692,7209,6386,5321, 3982,2502,960,-616,-2229,-3710,-4997,-6079,-6869,-7396,-7593,-7402,-6940,-6166,-5120,-3857,-2446,-897,675,2266, 3739,5072,6262,7119,7766,8041,7992,7636,7020,6046,4902,3487,1944,361,-1280,-2840,-4218,-5470,-6426,-7096, -7454,-7556,-7279,-6698,-5805,-4687,-3354,-1851,-294,1271,2750,4157,5412,6418,7130,7653,7793,7623,7094,6268, 5217,3938,2438,833,-785,-2366,-3877,-5246,-6341,-7178,-7784,-7979,-7892,-7465,-6740,-5781,-4549,-3124,-1602,-34, 1549,3050,4401,5556,6452,7134,7456,7455,7162,6553,5625,4436,3081,1572,-26,-1648,-3166,-4570,-5818,-6827, -7527,-7937,-7976,-7730,-7145,-6279,-5129,-3831,-2313,-751,847,2385,3854,5167,6226,7014,7541,7761,7650,7162, 6437,5418,4166,2741,1184,-396,-1940,-3444,-4783,-5898,-6742,-7302,-7568,-7483,-7071,-6357,-5388,-4115,-2713,-1189, 371,1963,3460,4845,6034,6994,7710,8074,8137,7837,7256,6381,5214,3879,2356,767,-842,-2388,-3840,-5083, -6130,-6865,-7278,-7393,-7190,-6637,-5781,-4706,-3403,-1951,-375,1207,2752,4196,5490,6578,7398,7934,8157,8036, 7617,6863,5829,4604,3156,1601,-14,-1623,-3096,-4490,-5677,-6608,-7185,-7508,-7460,-7120,-6457,-5542,-4353,-2959, -1458,87,1663,3159,4537,5756,6699,7421,7799,7863,7611,7055,6162,5013,3674,2180,570,-1054,-2625,-4058, -5358,-6415,-7216,-7707,-7835,-7644,-7180,-6368,-5334,-4059,-2645,-1114,486,2059,3492,4825,5915,6804,7375,7625, 7575,7182,6473,5513,4261,2847,1341,-308,-1958,-3430,-4864,-6017,-6921,-7555,-7863,-7852,-7533,-6849,-5914,-4735, -3369,-1866,-305,1267,2795,4212,5463,6472,7205,7674,7784,7569,7049,6228,5180,3858,2427,860,-731,-2315, -3798,-5079,-6142,-6961,-7435,-7615,-7436,-6973,-6197,-5169,-3879,-2493,-924,639,2225,3680,5021,6172,7069,7665, 7976,7977,7595,6926,5950,4771,3381,1843,244,-1324,-2877,-4270,-5473,-6471,-7136,-7505,-7541,-7219,-6636,-5734, -4612,-3294,-1826,-244,1309,2848,4264,5544,6550,7301,7747,7916,7705,7216,6415,5346,4029,2551,960,-613, -2273,-3774,-5097,-6208,-7052,-7625,-7852,-7719,-7298,-6591,-5568,-4362,-2956,-1477,79,1621,3114,4412,5596,6499, 7155,7445,7447,7157,6544,5577,4419,3010,1500,-115,-1759,-3308,-4736,-6025,-7009,-7740,-8146,-8206,-7977,-7395, -6506,-5408,-4066,-2580,-1035,542,2066,3512,4777,5835,6629,7155,7335,7201,6708,5938,4934,3664,2241,701, -885,-2456,-3970,-5308,-6396,-7241,-7834,-8056,-7969,-7560,-6874,-5884,-4651,-3230,-1760,-141,1446,2968,4335,5512, 6472,7173,7522,7601,7311,6735,5841,4669,3317,1841,240,-1367,-2907,-4316,-5577,-6601,-7328,-7753,-7865,-7669, -7093,-6263,-5152,-3877,-2396,-833,751,2310,3796,5062,6159,6982,7507,7721,7622,7163,6474,5470,4224,2804, 1229,-380,-1953,-3469,-4822,-5977,-6858,-7463,-7746,-7695,-7335,-6661,-5707,-4510,-3147,-1619,-56,1543,3064,4465, 5664,6656,7364,7742,7787,7512,6976,6084,4953,3652,2158,603,-1034,-2590,-4018,-5268,-6352,-7127,-7590,-7719, -7535,-7065,-6264,-5167,-3915,-2459,-906,697,2219,3673,4988,6123,6942,7500,7778,7696,7307,6588,5612,4404, 2985,1449,-141,-1714,-3230,-4636,-5800,-6735,-7368,-7689,-7680,-7344,-6681,-5779,-4604,-3244,-1709,-168,1447,2970, 4410,5642,6630,7383,7828,7939,7748,7229,6424,5349,4015,2542,986,-599,-2145,-3571,-4855,-5893,-6706,-7196, -7347,-7208,-6736,-5919,-4865,-3578,-2150,-556,1038,2616,4103,5439,6590,7491,8100,8392,8378,8040,7366,6408, 5236,3858,2373,773,-808,-2326,-3696,-4882,-5809,-6493,-6830,-6857,-6560,-5948,-5051,-3879,-2540,-1059,528,2093, 3639,5092,6343,7362,8139,8609,8777,8575,8093,7287,6212,4934,3493,1895,301,-1280,-2766,-4096,-5166,-6023, -6545,-6788,-6640,-6217,-5527,-4494,-3267,-1921,-361,1190,2769,4208,5541,6659,7568,8176,8491,8480,8138,7441, 6486,5294,3929,2360,755,-867,-2426,-3864,-5120,-6140,-6851,-7278,-7358,-7117,-6562,-5756,-4670,-3381,-1961,-418, 1097,2646,4038,5287,6305,7029,7510,7686,7498,7003,6200,5124,3834,2340,745,-865,-2517,-4027,-5374,-6534, -7415,-8024,-8308,-8237,-7869,-7213,-6218,-5043,-3653,-2193,-650,929,2404,3739,4914,5826,6505,6804,6840,6529, 5906,4995,3846,2481,957,-654,-2246,-3834,-5253,-6522,-7503,-8267,-8692,-8813,-8593,-8037,-7186,-6117,-4798,-3322, -1787,-187,1331,2810,4118,5183,6033,6623,6814,6726,6287,5567,4584,3337,1896,399,-1184,-2760,-4297,-5620, -6735,-7611,-8207,-8443,-8401,-7991,-7308,-6351,-5100,-3680,-2164,-548,1048,2564,3967,5182,6177,6900,7289,7392, 7169,6629,5787,4662,3345,1881,315,-1260,-2804,-4222,-5480,-6520,-7291,-7744,-7862,-7653,-7092,-6285,-5169,-3924, -2457,-914,639,2200,3670,5000,6091,6939,7490,7729,7661,7242,6549,5544,4322,2875,1307,-299,-1913,-3452, -4805,-5991,-6907,-7562,-7895,-7861,-7519,-6890,-5988,-4817,-3456,-1985,-435,1098,2631,3985,5191,6196,6919,7305, 7383,7147,6621,5776,4629,3309,1841,254,-1377,-2972,-4409,-5705,-6829,-7596,-8126,-8253,-8145,-7679,-6890,-5840, -4604,-3156,-1644,-87,1442,2909,4218,5358,6191,6836,7103,7071,6739,6068,5146,3931,2525,1022,-548,-2162, -3660,-5061,-6244,-7178,-7834,-8196,-8169,-7879,-7254,-6348,-5166,-3789,-2299,-743,881,2410,3856,5102,6124,6930, 7385,7524,7386,6919,6159,5073,3806,2357,866,-831,-2341,-3818,-5104,-6157,-6955,-7452,-7603,-7437,-6944,-6184, -5152,-3883,-2478,-927,673,2258,3755,5137,6313,7255,7883,8246,8262,7943,7330,6437,5280,3942,2417,837, -733,-2247,-3648,-4815,-5797,-6482,-6852,-6916,-6621,-6026,-5160,-3989,-2666,-1191,347,1887,3433,4890,6136,7193, 7977,8482,8628,8483,7993,7216,6176,4874,3452,1890,280,-1319,-2809,-4157,-5268,-6157,-6726,-7000,-6924,-6551, -5837,-4831,-3632,-2259,-761,787,2336,3782,5117,6276,7210,7803,8140,8154,7846,7182,6259,5106,3729,2201, 616,-1014,-2556,-4014,-5306,-6314,-7065,-7533,-7633,-7412,-6889,-6050,-4986,-3708,-2271,-733,818,2359,3749,4994, 6051,6870,7389,7567,7436,7012,6239,5224,3965,2511,952,-638,-2256,-3759,-5125,-6281,-7200,-7842,-8108,-8042, -7660,-6957,-5996,-4802,-3421,-1933,-356,1242,2717,4097,5322,6267,6964,7319,7363,7132,6553,5698,4581,3265, 1766,164,-1436,-2958,-4395,-5650,-6663,-7440,-7862,-8006,-7814,-7267,-6455,-5391,-4082,-2652,-1105,488,2038,3503, 4831,5919,6781,7327,7556,7471,7036,6326,5362,4125,2698,1191,-417,-2042,-3556,-4915,-6078,-7021,-7650,-7941, -7929,-7592,-6975,-6043,-4884,-3497,-2028,-407,1139,2681,4053,5241,6256,6965,7373,7457,7239,6689,5820,4716, 3398,1925,373,-1227,-2788,-4280,-5561,-6642,-7432,-7898,-8069,-7898,-7384,-6607,-5576,-4310,-2872,-1341,241,1780, 3271,4577,5693,6550,7128,7409,7372,6975,6330,5350,4158,2729,1169,-390,-1973,-3516,-4880,-6097,-6996,-7693, -8072,-8046,-7712,-7099,-6187,-5036,-3699,-2232,-687,868,2422,3816,5101,6099,6874,7320,7431,7277,6770,5991, 4890,3635,2181,608,-1011,-2564,-4007,-5282,-6395,-7180,-7737,-7886,-7783,-7329,-6562,-5548,-4279,-2830,-1301,299, 1861,3323,4675,5830,6760,7354,7696,7706,7372,6702,5769,4626,3251,1754,165,-1435,-2962,-4421,-5629,-6584, -7243,-7630,-7646,-7353,-6758,-5881,-4757,-3455,-1935,-403,1198,2706,4102,5360,6374,7150,7627,7778,7612,7169, 6372,5309,4027,2605,1067,-547,-2090,-3568,-4896,-6037,-6904,-7476,-7707,-7649,-7222,-6479,-5469,-4243,-2888,-1378, 204,1712,3218,4555,5745,6651,7302,7640,7665,7379,6732,5846,4713,3361,1832,276,-1317,-2865,-4310,-5517, -6526,-7212,-7659,-7758,-7496,-6961,-6147,-5010,-3710,-2224,-703,855,2407,3827,5080,6166,6971,7504,7692,7583, 7126,6408,5362,4118,2689,1182,-423,-1994,-3512,-4819,-5973,-6850,-7392,-7651,-7601,-7195,-6497,-5471,-4290,-2882, -1348,204,1814,3316,4689,5895,6885,7574,7991,8062,7837,7262,6379,5289,3970,2494,958,-616,-2123,-3538, -4792,-5796,-6516,-6949,-7049,-6869,-6308,-5473,-4407,-3101,-1612,-89,1520,3065,4532,5861,6931,7824,8378,8639, 8541,8186,7468,6498,5283,3854,2317,744,-883,-2356,-3718,-4868,-5792,-6394,-6706,-6679,-6345,-5697,-4768,-3575, -2256,-788,756,2314,3809,5203,6413,7388,8113,8488,8573,8347,7798,6955,5865,4563,3039,1441,-175,-1738, -3196,-4530,-5540,-6347,-6821,-7030,-6867,-6382,-5620,-4599,-3311,-1905,-375,1183,2676,4166,5459,6547,7428,7987, 8255,8167,7769,7067,6095,4869,3465,1925,323,-1299,-2849,-4212,-5385,-6373,-7019,-7354,-7389,-7080,-6517,-5614, -4466,-3138,-1716,-120,1401,2947,4283,5503,6497,7229,7652,7820,7583,7097,6239,5148,3856,2378,798,-767, -2344,-3796,-5117,-6194,-6998,-7526,-7727,-7587,-7129,-6375,-5372,-4114,-2707,-1177,386,1909,3397,4758,5905,6795, 7424,7749,7727,7394,6747,5813,4640,3251,1733,177,-1415,-2951,-4328,-5503,-6458,-7128,-7537,-7560,-7275,-6697, -5808,-4664,-3321,-1864,-330,1255,2821,4212,5483,6533,7312,7761,7914,7764,7291,6508,5481,4229,2779,1248, -390,-1966,-3412,-4753,-5860,-6707,-7268,-7465,-7399,-7003,-6275,-5283,-4098,-2664,-1192,381,1888,3352,4709,5876, 6777,7443,7785,7821,7482,6838,5898,4775,3359,1908,231,-1368,-2948,-4383,-5624,-6558,-7300,-7688,-7783,-7531, -6968,-6165,-5104,-3789,-2346,-822,754,2240,3660,4906,5927,6725,7204,7396,7272,6796,6058,4993,3709,2306, 764,-873,-2433,-3944,-5299,-6461,-7326,-7915,-8159,-8137,-7752,-7094,-6123,-4915,-3596,-2076,-516,1019,2524,3907, 5060,6013,6676,7037,7097,6796,6238,5374,4251,2920,1422,-144,-1734,-3296,-4719,-5905,-6925,-7659,-8097,-8210, -7962,-7455,-6632,-5504,-4241,-2766,-1225,335,1884,3363,4638,5758,6606,7187,7426,7318,6932,6241,5258,4068, 2670,1160,-427,-2004,-3475,-4803,-5948,-6826,-7416,-7721,-7669,-7342,-6651,-5701,-4529,-3175,-1672,-101,1479,2967, 4354,5578,6569,7270,7712,7831,7614,7034,6183,5097,3809,2318,764,-836,-2391,-3881,-5162,-6183,-6952,-7474, -7589,-7380,-6912,-6099,-5054,-3787,-2375,-835,744,2283,3742,5057,6162,7005,7596,7864,7819,7471,6783,5842, 4610,3235,1710,126,-1462,-2936,-4324,-5505,-6438,-7096,-7399,-7425,-7133,-6469,-5579,-4419,-3088,-1629,-58,1515, 3024,4445,5659,6660,7388,7830,7944,7772,7238,6420,5351,4039,2568,984,-602,-2157,-3637,-4933,-6012,-6803, -7317,-7541,-7413,-6926,-6194,-5178,-3919,-2545,-1015,528,2060,3541,4891,6012,6928,7513,7818,7791,7431,6801, 5844,4659,3320,1781,216,-1380,-2896,-4291,-5485,-6457,-7137,-7505,-7507,-7235,-6688,-5790,-4641,-3333,-1855,-292, 1276,2805,4196,5467,6498,7265,7734,7881,7709,7232,6416,5328,4071,2640,1081,-497,-2055,-3544,-4864,-6014, -6831,-7385,-7645,-7516,-7136,-6402,-5431,-4216,-2824,-1335,204,1746,3184,4516,5667,6574,7192,7555,7542,7238, 6592,5688,4505,3135,1611,26,-1590,-3122,-4533,-5772,-6761,-7505,-7898,-7972,-7761,-7237,-6394,-5310,-3996,-2557, -994,564,2081,3505,4769,5808,6598,7087,7271,7145,6703,5928,4946,3697,2256,709,-908,-2470,-3960,-5292, -6421,-7263,-7851,-8101,-8057,-7678,-6955,-5991,-4801,-3386,-1845,-304,1258,2746,4130,5307,6240,6905,7299,7340, 7068,6482,5613,4510,3183,1738,182,-1423,-2964,-4398,-5635,-6659,-7396,-7833,-7918,-7721,-7179,-6364,-5305,-3978, -2521,-975,596,2148,3611,4866,5960,6796,7332,7574,7494,7074,6356,5378,4128,2738,1218,-388,-1951,-3465, -4826,-6012,-6920,-7535,-7836,-7813,-7445,-6790,-5843,-4682,-3335,-1858,-289,1242,2739,4111,5282,6241,6920,7320, 7402,7133,6576,5726,4596,3267,1775,189,-1406,-2975,-4428,-5689,-6761,-7546,-8038,-8211,-8010,-7527,-6763,-5689, -4447,-3008,-1504,64,1585,3049,4352,5474,6339,6903,7192,7113,6753,6077,5084,3903,2514,1013,-582,-2167, -3666,-5008,-6179,-7108,-7731,-8055,-8061,-7740,-7109,-6191,-5036,-3670,-2180,-590,999,2502,3938,5216,6227,6986, 7461,7596,7417,6899,6085,5029,3757,2315,801,-776,-2315,-3741,-5026,-6081,-6851,-7351,-7490,-7338,-6850,-6084, -5060,-3789,-2354,-830,773,2336,3826,5155,6295,7203,7839,8152,8147,7837,7185,6270,5088,3717,2230,661, -940,-2431,-3810,-4993,-5963,-6617,-6993,-7023,-6754,-6133,-5265,-4132,-2816,-1345,200,1770,3275,4703,5952,6970, 7729,8193,8343,8174,7657,6885,5814,4527,3059,1468,-151,-1732,-3215,-4529,-5622,-6459,-7014,-7254,-7155,-6760, -6046,-5081,-3880,-2516,-1039,496,2020,3494,4812,5957,6857,7476,7795,7768,7441,6803,5875,4674,3298,1783, 184,-1446,-2991,-4403,-5628,-6626,-7335,-7736,-7813,-7587,-7050,-6202,-5087,-3805,-2352,-809,750,2274,3677,4947, 6008,6783,7301,7507,7380,6935,6184,5167,3944,2516,988,-566,-2125,-3592,-4937,-6052,-6893,-7467,-7702,-7593, -7185,-6470,-5487,-4269,-2869,-1345,218,1795,3299,4676,5877,6825,7513,7908,7978,7738,7173,6328,5207,3867, 2422,882,-683,-2190,-3564,-4791,-5787,-6518,-6945,-7027,-6812,-6265,-5416,-4320,-3011,-1583,-33,1548,3092,4533, 5839,6928,7774,8308,8533,8454,8052,7313,6328,5088,3671,2096,502,-1106,-2595,-3963,-5115,-6022,-6613,-6925, -6907,-6579,-5931,-5015,-3857,-2527,-1057,467,1994,3470,4826,5998,6932,7606,7984,8032,7736,7147,6272,5123, 3745,2242,644,-995,-2575,-4045,-5348,-6414,-7232,-7725,-7928,-7783,-7310,-6572,-5549,-4312,-2925,-1416,116,1621, 3030,4296,5364,6205,6745,6978,6908,6490,5776,4788,3540,2135,593,-1008,-2596,-4123,-5509,-6705,-7637,-8292, -8633,-8643,-8327,-7722,-6822,-5690,-4357,-2885,-1327,227,1746,3129,4348,5336,6047,6474,6590,6392,5889,5086, 4025,2747,1304,-244,-1809,-3365,-4799,-6056,-7113,-7900,-8396,-8555,-8379,-7912,-7125,-6076,-4838,-3408,-1886,-304, 1273,2769,4129,5300,6208,6836,7153,7135,6803,6181,5259,4110,2754,1255,-324,-1915,-3432,-4796,-5982,-6896, -7559,-7894,-7935,-7646,-7049,-6149,-5021,-3670,-2170,-603,971,2473,3887,5127,6134,6902,7377,7537,7376,6878, 6089,5046,3772,2321,784,-813,-2374,-3864,-5183,-6271,-7103,-7639,-7840,-7734,-7289,-6572,-5576,-4358,-2955,-1460, 111,1647,3106,4429,5549,6449,7074,7386,7383,7066,6439,5514,4347,2980,1470,-113,-1712,-3246,-4664,-5892, -6880,-7595,-7979,-8062,-7812,-7247,-6401,-5315,-4033,-2580,-1039,524,2053,3491,4753,5814,6606,7113,7307,7171, 6727,5988,4982,3756,2329,809,-758,-2299,-3762,-5059,-6152,-6997,-7542,-7769,-7670,-7242,-6530,-5523,-4298,-2894, -1377,195,1765,3282,4668,5861,6840,7526,7921,7983,7738,7167,6322,5209,3919,2449,929,-614,-2121,-3498, -4695,-5691,-6404,-6808,-6896,-6659,-6109,-5261,-4152,-2855,-1377,165,1765,3302,4762,6062,7170,7997,8564,8805, 8727,8323,7607,6621,5410,4005,2491,921,-634,-2114,-3461,-4597,-5478,-6080,-6375,-6322,-5969,-5288,-4357,-3188, -1824,-337,1202,2756,4245,5608,6771,7705,8391,8766,8814,8546,7976,7110,5967,4627,3136,1544,-77,-1646, -3103,-4398,-5454,-6255,-6756,-6932,-6783,-6326,-5572,-4555,-3311,-1941,-458,1058,2558,3958,5224,6290,7119,7641, 7869,7780,7367,6629,5630,4389,2979,1417,-194,-1782,-3304,-4698,-5881,-6822,-7468,-7821,-7841,-7541,-6918,-6043, -4916,-3595,-2143,-621,925,2410,3793,4986,5975,6691,7123,7231,7007,6484,5663,4573,3275,1808,240,-1348, -2919,-4383,-5659,-6710,-7508,-7983,-8154,-8017,-7549,-6793,-5773,-4518,-3107,-1567,0,1558,3025,4351,5480,6377, 6972,7284,7265,6927,6282,5362,4199,2845,1359,-195,-1754,-3244,-4607,-5795,-6713,-7377,-7711,-7735,-7418,-6800, -5902,-4764,-3434,-1942,-387,1178,2708,4116,5368,6390,7155,7633,7808,7656,7189,6420,5386,4121,2682,1135, -443,-2004,-3459,-4751,-5844,-6684,-7239,-7456,-7349,-6929,-6192,-5195,-3969,-2582,-1080,472,2030,3498,4845,5990, 6885,7500,7805,7785,7454,6821,5911,4754,3397,1895,300,-1291,-2824,-4244,-5472,-6455,-7183,-7585,-7683,-7455, -6906,-6064,-4988,-3696,-2264,-745,789,2302,3707,4962,6001,6788,7289,7456,7318,6827,6068,5037,3773,2333, 791,-824,-2381,-3884,-5214,-6323,-7186,-7746,-7987,-7915,-7519,-6816,-5866,-4680,-3295,-1812,-246,1302,2804,4160, 5321,6264,6930,7291,7338,7062,6477,5589,4463,3123,1653,92,-1472,-2990,-4386,-5603,-6603,-7325,-7726,-7826, -7592,-7039,-6192,-5117,-3825,-2385,-845,714,2248,3691,4974,6057,6880,7422,7655,7577,7164,6486,5494,4277, 2871,1350,-225,-1786,-3270,-4595,-5716,-6586,-7176,-7450,-7389,-7003,-6342,-5370,-4181,-2798,-1315,231,1794,3297, 4666,5867,6831,7528,7923,7982,7739,7181,6332,5228,3921,2440,885,-719,-2279,-3719,-4977,-6022,-6771,-7243, -7382,-7214,-6738,-5954,-4922,-3689,-2262,-753,795,2309,3725,5008,6090,6907,7459,7699,7634,7224,6517,5538, 4322,2919,1395,-181,-1769,-3274,-4650,-5817,-6740,-7381,-7708,-7716,-7402,-6784,-5891,-4732,-3410,-1947,-410,1155, 2642,4018,5214,6200,6924,7343,7463,7251,6715,5888,4787,3460,1972,422,-1184,-2716,-4162,-5439,-6492,-7273, -7758,-7901,-7752,-7262,-6506,-5475,-4259,-2871,-1363,199,1728,3202,4532,5663,6541,7117,7404,7384,7033,6379, 5459,4299,2932,1441,-114,-1681,-3171,-4553,-5719,-6657,-7319,-7673,-7700,-7399,-6787,-5900,-4747,-3416,-1940,-396, 1153,2684,4102,5337,6366,7118,7579,7724,7534,7036,6260,5224,3950,2521,976,-594,-2158,-3617,-4914,-6013, -6853,-7362,-7577,-7464,-7044,-6303,-5307,-4083,-2704,-1192,349,1896,3362,4677,5811,6715,7325,7652,7644,7323, 6689,5780,4613,3254,1748,177,-1401,-2931,-4334,-5564,-6544,-7238,-7638,-7707,-7456,-6895,-6041,-4955,-3652,-2205, -685,867,2389,3794,5039,6059,6827,7309,7485,7309,6867,6092,5058,3794,2351,820,-791,-2381,-3853,-5191, -6290,-7160,-7735,-7988,-7907,-7522,-6835,-5861,-4656,-3273,-1787,-238,1318,2797,4141,5320,6247,6906,7261,7292, 7026,6424,5549,4424,3087,1601,16,-1557,-3075,-4478,-5707,-6684,-7403,-7808,-7912,-7677,-7141,-6303,-5239,-3942, -2497,-962,591,2129,3565,4846,5907,6750,7288,7519,7410,7004,6286,5302,4082,2682,1158,-416,-1972,-3466, -4789,-5919,-6807,-7391,-7668,-7627,-7254,-6606,-5657,-4465,-3103,-1606,-39,1517,3010,4360,5532,6476,7171,7556, 7656,7411,6862,5999,4876,3554,2079,506,-1063,-2602,-4016,-5265,-6315,-7072,-7545,-7678,-7494,-6988,-6198,-5136, -3893,-2468,-946,598,2125,3550,4818,5898,6703,7235,7474,7391,6991,6289,5302,4092,2685,1153,-427,-2014, -3521,-4896,-6063,-6991,-7639,-7957,-7952,-7619,-6979,-6060,-4921,-3600,-2153,-611,926,2432,3790,5010,5983,6692, 7106,7191,6969,6451,5624,4550,3263,1809,248,-1339,-2889,-4327,-5605,-6662,-7437,-7925,-8094,-7947,-7487,-6720, -5702,-4464,-3046,-1533,37,1575,3025,4358,5489,6366,6968,7257,7241,6888,6224,5288,4120,2738,1265,-293, -1848,-3354,-4702,-5860,-6775,-7425,-7755,-7755,-7432,-6806,-5900,-4723,-3395,-1892,-352,1224,2729,4144,5360,6383, 7140,7615,7754,7604,7127,6357,5303,4037,2607,1078,-497,-2032,-3484,-4750,-5835,-6641,-7152,-7330,-7200,-6743, -6002,-4993,-3772,-2388,-880,693,2235,3721,5053,6199,7095,7709,8036,8041,7741,7116,6224,5063,3713,2213, 624,-941,-2447,-3834,-5019,-6000,-6687,-7081,-7144,-6872,-6304,-5444,-4344,-3052,-1602,-82,1443,2952,4363,5594, 6629,7400,7876,8029,7864,7396,6626,5568,4305,2882,1326,-272,-1853,-3335,-4654,-5755,-6600,-7155,-7408,-7331, -6962,-6286,-5341,-4157,-2804,-1317,230,1777,3239,4584,5734,6657,7295,7638,7651,7347,6730,5817,4673,3337, 1828,263,-1329,-2863,-4292,-5534,-6543,-7253,-7671,-7763,-7546,-7016,-6206,-5166,-3874,-2428,-910,663,2187,3626, 4891,5947,6740,7266,7489,7371,6956,6239,5243,4005,2601,1071,-497,-2059,-3527,-4841,-5965,-6842,-7412,-7674, -7610,-7262,-6563,-5632,-4456,-3103,-1608,-48,1516,3014,4395,5593,6559,7253,7649,7733,7498,6955,6127,5031, 3729,2271,718,-856,-2373,-3787,-5027,-6039,-6783,-7230,-7357,-7167,-6647,-5835,-4767,-3475,-2046,-503,1046,2579, 4013,5310,6395,7237,7796,8053,7962,7560,6861,5887,4668,3283,1765,183,-1386,-2884,-4224,-5359,-6261,-6861, -7161,-7145,-6803,-6185,-5273,-4124,-2788,-1316,226,1769,3253,4614,5808,6784,7491,7908,8013,7788,7241,6405, 5314,4015,2566,1009,-553,-2097,-3535,-4807,-5865,-6652,-7129,-7303,-7146,-6688,-5931,-4920,-3699,-2301,-778,760, 2292,3725,5019,6109,6954,7521,7800,7737,7378,6714,5757,4561,3160,1643,61,-1514,-3031,-4391,-5573,-6501, -7165,-7513,-7536,-7237,-6639,-5754,-4633,-3306,-1871,-349,1188,2682,4060,5284,6278,7015,7469,7603,7420,6936, 6133,5079,3812,2373,832,-763,-2308,-3763,-5057,-6132,-6941,-7461,-7653,-7551,-7111,-6385,-5403,-4190,-2805,-1321, 235,1762,3218,4545,5679,6560,7193,7497,7483,7130,6484,5558,4368,3013,1511,-47,-1615,-3143,-4540,-5741, -6694,-7384,-7763,-7808,-7545,-6976,-6126,-5024,-3725,-2292,-760,790,2282,3673,4903,5923,6693,7171,7328,7188, 6718,5942,4905,3646,2229,694,-895,-2446,-3923,-5252,-6365,-7223,-7760,-8002,-7921,-7494,-6795,-5815,-4628,-3267, -1782,-240,1283,2767,4103,5250,6155,6790,7125,7159,6859,6253,5372,4231,2886,1380,-180,-1759,-3301,-4711, -5934,-6930,-7664,-8089,-8182,-7959,-7421,-6599,-5508,-4238,-2802,-1290,250,1768,3184,4438,5515,6308,6823,7012, 6897,6450,5720,4715,3484,2071,539,-1043,-2612,-4091,-5415,-6536,-7401,-7984,-8246,-8195,-7839,-7174,-6222,-5058, -3681,-2176,-622,938,2416,3786,4985,5930,6594,7004,7070,6820,6249,5401,4299,2991,1521,-33,-1623,-3151, -4576,-5814,-6842,-7574,-8023,-8132,-7915,-7391,-6583,-5528,-4263,-2830,-1320,250,1782,3225,4523,5597,6433,7004, 7245,7192,6807,6116,5163,3954,2565,1052,-529,-2096,-3583,-4918,-6074,-6978,-7599,-7882,-7856,-7515,-6844,-5926, -4758,-3423,-1947,-387,1181,2674,4070,5279,6271,6985,7397,7506,7325,6795,6006,4937,3657,2204,644,-934, -2464,-3890,-5139,-6167,-6937,-7402,-7564,-7388,-6887,-6127,-5091,-3834,-2431,-910,633,2172,3627,4933,6039,6920, 7503,7782,7731,7360,6700,5759,4579,3210,1717,170,-1401,-2895,-4264,-5437,-6353,-7005,-7327,-7339,-7039,-6435, -5531,-4394,-3073,-1598,-66,1489,2981,4361,5582,6595,7338,7792,7942,7754,7250,6432,5358,4086,2646,1101, -465,-2011,-3440,-4737,-5815,-6611,-7131,-7333,-7208,-6775,-6051,-5057,-3847,-2464,-958,565,2111,3563,4881,5994, 6872,7471,7784,7755,7437,6798,5864,4700,3325,1828,252,-1315,-2829,-4203,-5410,-6365,-7059,-7452,-7514,-7256, -6679,-5835,-4720,-3420,-1975,-449,1113,2625,4011,5261,6271,7037,7500,7663,7503,7045,6268,5256,4013,2592, 1056,-529,-2081,-3540,-4862,-5946,-6768,-7301,-7502,-7402,-6982,-6254,-5287,-4088,-2719,-1222,305,1839,3298,4650, 5808,6731,7384,7738,7769,7475,6892,6025,4907,3572,2120,557,-1018,-2543,-3952,-5153,-6143,-6854,-7238,-7311, -7080,-6531,-5704,-4612,-3314,-1877,-336,1224,2739,4147,5405,6462,7267,7804,8010,7913,7476,6746,5733,4502, 3102,1573,5,-1549,-3022,-4343,-5482,-6347,-6933,-7203,-7163,-6786,-6117,-5169,-4005,-2653,-1166,380,1919,3414, 4761,5929,6875,7542,7906,7978,7704,7131,6268,5158,3829,2359,812,-768,-2285,-3696,-4942,-5960,-6720,-7179, -7322,-7125,-6628,-5837,-4779,-3521,-2104,-610,925,2440,3859,5133,6219,7036,7586,7816,7727,7327,6638,5644, 4424,3020,1481,-107,-1685,-3188,-4541,-5697,-6605,-7228,-7539,-7539,-7227,-6592,-5685,-4552,-3229,-1768,-245,1286, 2774,4142,5352,6321,7032,7445,7538,7305,6746,5924,4833,3536,2076,546,-1033,-2567,-4005,-5269,-6314,-7088, -7561,-7708,-7549,-7070,-6313,-5294,-4043,-2633,-1147,421,1946,3402,4699,5807,6673,7274,7544,7494,7131,6452, 5495,4291,2917,1430,-138,-1692,-3178,-4535,-5706,-6635,-7278,-7613,-7629,-7319,-6701,-5821,-4696,-3387,-1934,-408, 1137,2625,4016,5227,6229,6954,7387,7511,7311,6793,6000,4933,3663,2217,676,-894,-2437,-3883,-5158,-6224, -7036,-7544,-7750,-7626,-7192,-6473,-5476,-4258,-2882,-1381,158,1678,3132,4448,5566,6459,7067,7368,7343,6989, 6346,5405,4237,2882,1384,-181,-1758,-3262,-4641,-5825,-6775,-7448,-7822,-7877,-7621,-7054,-6207,-5099,-3797,-2343, -810,744,2253,3641,4874,5908,6672,7146,7307,7151,6671,5897,4859,3605,2184,657,-906,-2460,-3912,-5223, -6315,-7145,-7678,-7908,-7797,-7381,-6662,-5687,-4483,-3108,-1611,-78,1459,2928,4258,5405,6311,6957,7303,7320, 7028,6436,5553,4419,3090,1632,94,-1464,-2959,-4346,-5549,-6521,-7230,-7627,-7698,-7454,-6904,-6059,-4977,-3698, -2273,-757,790,2304,3717,4995,6059,6868,7383,7586,7458,7018,6243,5227,3979,2568,1040,-531,-2073,-3535, -4845,-5952,-6808,-7372,-7627,-7567,-7188,-6506,-5565,-4380,-3030,-1553,-14,1521,2986,4333,5492,6424,7097,7453, 7505,7225,6640,5781,4673,3365,1914,364,-1189,-2709,-4116,-5343,-6353,-7096,-7534,-7655,-7460,-6959,-6164,-5108, -3841,-2425,-906,642,2159,3580,4858,5921,6745,7280,7510,7427,7024,6323,5350,4149,2772,1270,-294,-1855, -3343,-4692,-5848,-6751,-7360,-7659,-7635,-7282,-6633,-5718,-4567,-3236,-1773,-242,1290,2767,4120,5298,6253,6947, 7359,7463,7243,6723,5898,4812,3511,2052,507,-1054,-2576,-3981,-5224,-6241,-7000,-7465,-7614,-7439,-6954,-6178, -5134,-3885,-2469,-952,609,2149,3599,4905,6012,6863,7441,7701,7652,7291,6624,5676,4493,3124,1619,54, -1508,-2989,-4333,-5493,-6398,-7038,-7373,-7394,-7094,-6488,-5602,-4480,-3159,-1705,-176,1359,2846,4222,5437,6427, 7164,7607,7732,7531,7009,6197,5128,3840,2400,856,-717,-2254,-3696,-4974,-6035,-6840,-7348,-7537,-7405,-6961, -6225,-5230,-4013,-2626,-1133,416,1944,3395,4701,5816,6693,7289,7580,7557,7210,6558,5630,4462,3108,1625, 71,-1486,-2984,-4356,-5548,-6502,-7180,-7547,-7597,-7329,-6754,-5903,-4812,-3522,-2090,-566,980,2487,3885,5124, 6144,6903,7369,7531,7371,6900,6139,5114,3869,2453,937,-621,-2147,-3587,-4867,-5943,-6763,-7294,-7514,-7415, -6995,-6279,-5294,-4084,-2697,-1199,355,1900,3369,4705,5850,6763,7398,7736,7756,7464,6871,5995,4878,3563, 2103,565,-994,-2497,-3876,-5069,-6038,-6722,-7113,-7186,-6944,-6399,-5567,-4489,-3205,-1768,-245,1306,2816,4228, 5482,6535,7328,7836,8036,7911,7468,6726,5717,4487,3078,1559,-10,-1564,-3033,-4360,-5478,-6335,-6909,-7165, -7097,-6721,-6048,-5115,-3948,-2596,-1121,414,1949,3416,4750,5899,6817,7471,7833,7880,7612,7036,6167,5046, 3713,2245,687,-884,-2405,-3812,-5043,-6052,-6791,-7221,-7331,-7118,-6591,-5788,-4736,-3485,-2089,-595,933,2432, 3838,5097,6153,6956,7480,7702,7612,7210,6509,5534,4326,2929,1410,-168,-1727,-3208,-4547,-5682,-6579,-7188, -7491,-7472,-7134,-6495,-5583,-4433,-3100,-1648,-122,1407,2880,4242,5423,6382,7070,7460,7530,7290,6738,5904, 4823,3532,2091,546,-1022,-2558,-3979,-5229,-6259,-7018,-7483,-7637,-7467,-6991,-6220,-5188,-3942,-2537,-1022,527, 2056,3491,4784,5882,6737,7306,7575,7518,7143,6464,5509,4323,2959,1466,-84,-1628,-3109,-4440,-5586,-6485, -7097,-7409,-7407,-7092,-6483,-5609,-4499,-3195,-1748,-227,1318,2814,4195,5412,6400,7131,7575,7703,7508,7009, 6213,5152,3875,2434,896,-675,-2216,-3654,-4932,-5998,-6798,-7302,-7488,-7352,-6901,-6159,-5156,-3942,-2557,-1060, 490,2022,3474,4784,5895,6758,7337,7610,7568,7218,6567,5645,4487,3135,1648,91,-1474,-2972,-4346,-5533, -6485,-7162,-7532,-7586,-7322,-6747,-5888,-4793,-3497,-2066,-553,972,2454,3825,5047,6050,6807,7268,7425,7265, 6790,6019,4988,3727,2309,776,-791,-2341,-3798,-5095,-6182,-7012,-7546,-7756,-7651,-7233,-6522,-5558,-4362,-3002, -1528,7,1528,2983,4301,5430,6325,6950,7271,7284,6980,6367,5478,4336,3002,1528,-22,-1585,-3091,-4478, -5685,-6663,-7359,-7751,-7829,-7579,-7025,-6193,-5116,-3843,-2427,-913,622,2117,3516,4751,5782,6558,7055,7246, 7124,6690,5966,4968,3743,2341,829,-730,-2265,-3721,-5020,-6119,-6960,-7520,-7775,-7703,-7322,-6642,-5690,-4515, -3156,-1682,-147,1389,2862,4202,5368,6302,6967,7331,7383,7120,6556,5701,4599,3286,1822,270,-1294,-2808, -4197,-5404,-6381,-7091,-7502,-7604,-7390,-6865,-6053,-4981,-3713,-2287,-777,765,2269,3686,4957,6033,6858,7401, 7635,7543,7131,6415,5440,4237,2855,1358,-189,-1727,-3191,-4514,-5633,-6503,-7095,-7377,-7337,-6988,-6341,-5427, -4279,-2947,-1483,46,1588,3065,4420,5600,6544,7220,7602,7657,7406,6830,5978,4871,3565,2112,566,-1003, -2529,-3952,-5208,-6251,-7024,-7496,-7656,-7495,-7017,-6251,-5232,-4003,-2619,-1126,400,1907,3328,4607,5689,6525, 7080,7331,7266,6885,6202,5249,4061,2685,1175,-385,-1943,-3427,-4770,-5908,-6809,-7424,-7742,-7748,-7439,-6827, -5944,-4815,-3497,-2051,-533,997,2474,3845,5041,6021,6740,7168,7282,7078,6569,5780,4733,3478,2061,538, -1019,-2554,-3987,-5256,-6307,-7094,-7582,-7763,-7619,-7173,-6433,-5425,-4201,-2810,-1304,243,1774,3217,4522,5639, 6516,7118,7419,7406,7075,6441,5532,4389,3052,1581,51,-1490,-2969,-4323,-5483,-6406,-7049,-7390,-7410,-7121, -6526,-5661,-4554,-3244,-1789,-253,1309,2830,4237,5474,6488,7244,7708,7854,7685,7205,6425,5385,4119,2691, 1164,-398,-1935,-3370,-4649,-5719,-6537,-7063,-7278,-7169,-6755,-6040,-5065,-3872,-2507,-1032,498,2022,3463,4771, 5891,6773,7386,7700,7704,7395,6783,5890,4746,3402,1914,347,-1229,-2742,-4133,-5339,-6311,-7008,-7406,-7487, -7255,-6707,-5878,-4807,-3529,-2109,-595,928,2419,3808,5038,6058,6823,7300,7467,7322,6867,6119,5120,3894, 2500,995,-570,-2118,-3584,-4903,-6009,-6865,-7426,-7677,-7610,-7229,-6558,-5616,-4444,-3093,-1618,-80,1445,2908, 4235,5385,6302,6956,7313,7364,7096,6522,5666,4557,3255,1806,275,-1269,-2768,-4154,-5370,-6362,-7074,-7487, -7582,-7350,-6807,-5981,-4907,-3630,-2199,-671,880,2402,3827,5093,6152,6957,7486,7715,7631,7238,6561,5601, 4413,3043,1549,1,-1534,-2987,-4297,-5410,-6272,-6860,-7130,-7081,-6721,-6055,-5119,-3951,-2610,-1140,388,1918, 3386,4732,5905,6856,7543,7931,8005,7763,7213,6376,5296,4002,2558,1019,-551,-2084,-3512,-4771,-5807,-6578, -7047,-7205,-7045,-6573,-5805,-4782,-3548,-2154,-669,851,2342,3742,5000,6065,6888,7442,7686,7612,7218,6521, 5552,4350,2965,1453,-118,-1689,-3187,-4551,-5709,-6615,-7234,-7544,-7524,-7198,-6581,-5702,-4596,-3300,-1880,-377, 1135,2600,3950,5129,6090,6793,7203,7307,7093,6574,5764,4693,3410,1975,441,-1124,-2651,-4080,-5353,-6411, -7210,-7713,-7894,-7756,-7306,-6561,-5565,-4354,-2984,-1494,39,1554,2995,4290,5388,6240,6816,7093,7062,6719, 6073,5153,3991,2635,1146,-403,-1953,-3438,-4789,-5948,-6877,-7525,-7875,-7902,-7615,-7017,-6146,-5023,-3714,-2266, -747,784,2276,3660,4875,5883,6626,7088,7232,7063,6585,5819,4790,3546,2145,631,-927,-2458,-3892,-5171, -6238,-7042,-7553,-7753,-7637,-7217,-6501,-5524,-4325,-2953,-1461,80,1614,3065,4383,5512,6404,7020,7341,7344, 7034,6412,5517,4380,3046,1570,23,-1537,-3040,-4421,-5616,-6572,-7259,-7644,-7714,-7468,-6921,-6096,-5027,-3743, -2311,-789,759,2268,3670,4910,5934,6704,7190,7368,7226,6774,6020,5000,3762,2352,841,-715,-2249,-3696, -4994,-6086,-6929,-7482,-7718,-7631,-7239,-6545,-5590,-4413,-3054,-1581,-46,1490,2949,4289,5438,6357,7009,7366, 7419,7159,6588,5732,4624,3310,1847,297,-1260,-2760,-4143,-5345,-6312,-7019,-7426,-7520,-7294,-6754,-5937,-4872, -3598,-2175,-661,884,2400,3825,5098,6162,6974,7500,7717,7618,7206,6500,5528,4327,2956,1465,-86,-1619, -3071,-4377,-5477,-6329,-6902,-7171,-7127,-6767,-6110,-5178,-4010,-2665,-1193,349,1883,3353,4700,5869,6815,7493, 7878,7952,7711,7159,6327,5246,3968,2541,1018,-527,-2032,-3436,-4667,-5676,-6419,-6862,-6996,-6808,-6317,-5543, -4522,-3289,-1896,-402,1130,2642,4059,5326,6387,7197,7734,7967,7891,7507,6828,5874,4687,3314,1810,252, -1300,-2779,-4121,-5266,-6167,-6787,-7096,-7084,-6758,-6125,-5216,-4083,-2765,-1321,191,1710,3182,4541,5741,6717, 7436,7847,7950,7731,7203,6380,5312,4035,2602,1076,-481,-1993,-3403,-4647,-5680,-6458,-6950,-7135,-7005,-6561, -5812,-4803,-3575,-2184,-690,836,2339,3765,5051,6140,6992,7569,7832,7776,7395,6727,5789,4623,3273,1804, 262,-1280,-2768,-4120,-5286,-6210,-6860,-7192,-7219,-6930,-6349,-5491,-4395,-3104,-1680,-170,1365,2844,4215,5421, 6411,7145,7586,7721,7539,7046,6262,5220,3967,2555,1044,-503,-2019,-3446,-4716,-5779,-6589,-7103,-7305,-7190, -6754,-6029,-5047,-3853,-2489,-1016,514,2025,3466,4773,5890,6768,7378,7691,7699,7389,6781,5892,4755,3418, 1942,390,-1165,-2669,-4044,-5239,-6202,-6894,-7287,-7361,-7118,-6567,-5732,-4644,-3369,-1947,-448,1072,2555,3932, 5150,6163,6920,7395,7560,7404,6945,6191,5171,3938,2531,1022,-543,-2089,-3542,-4850,-5957,-6805,-7366,-7617, -7546,-7165,-6477,-5529,-4357,-3011,-1542,-22,1495,2941,4259,5401,6305,6949,7290,7317,7030,6424,5538,4405, 3074,1599,52,-1505,-3010,-4401,-5614,-6599,-7319,-7742,-7848,-7643,-7125,-6330,-5283,-4025,-2612,-1114,416,1910, 3309,4552,5584,6373,6883,7088,6977,6561,5842,4854,3633,2239,731,-830,-2376,-3836,-5150,-6265,-7129,-7706, -7974,-7922,-7554,-6883,-5943,-4774,-3434,-1968,-439,1089,2553,3898,5070,6014,6701,7088,7163,6924,6364,5526, 4438,3142,1695,167,-1383,-2887,-4284,-5507,-6507,-7242,-7687,-7819,-7628,-7135,-6353,-5320,-4068,-2666,-1166,367, 1866,3278,4541,5604,6424,6966,7206,7130,6741,6058,5103,3918,2560,1071,-475,-2024,-3496,-4826,-5961,-6850, -7458,-7757,-7737,-7408,-6776,-5868,-4724,-3401,-1943,-420,1105,2569,3922,5099,6065,6768,7191,7297,7092,6580, 5775,4720,3457,2028,500,-1067,-2601,-4032,-5298,-6338,-7106,-7571,-7732,-7568,-7102,-6350,-5352,-4139,-2755,-1269, 255,1762,3184,4462,5547,6390,6967,7249,7219,6879,6232,5307,4140,2779,1294,-261,-1817,-3301,-4652,-5819, -6746,-7397,-7737,-7752,-7459,-6857,-5975,-4863,-3561,-2125,-608,926,2411,3789,5001,5990,6722,7160,7294,7119, 6642,5872,4851,3610,2199,681,-875,-2402,-3831,-5098,-6144,-6934,-7424,-7602,-7468,-7018,-6278,-5287,-4083,-2711, -1242,272,1773,3201,4507,5627,6522,7152,7482,7500,7200,6590,5707,4583,3264,1813,288,-1249,-2730,-4094, -5268,-6217,-6890,-7262,-7318,-7058,-6497,-5656,-4566,-3276,-1850,-335,1196,2684,4067,5289,6303,7063,7544,7717, 7576,7113,6359,5338,4102,2706,1201,-343,-1862,-3293,-4576,-5654,-6480,-7028,-7260,-7183,-6791,-6112,-5165,-3999, -2659,-1198,324,1832,3281,4593,5731,6634,7264,7600,7620,7326,6729,5846,4724,3397,1930,392,-1158,-2657, -4035,-5241,-6226,-6944,-7371,-7480,-7273,-6755,-5950,-4894,-3641,-2233,-736,791,2287,3686,4930,5978,6768,7271, 7466,7347,6920,6197,5203,3993,2603,1099,-457,-2000,-3460,-4778,-5892,-6761,-7346,-7627,-7589,-7231,-6570,-5630, -4463,-3103,-1623,-86,1444,2909,4255,5428,6365,7042,7420,7477,7222,6652,5804,4719,3426,1987,471,-1075, -2583,-3981,-5208,-6210,-6943,-7387,-7506,-7315,-6817,-6035,-5002,-3760,-2356,-859,677,2180,3592,4848,5902,6711, 7243,7475,7397,7009,6325,5367,4176,2808,1314,-238,-1774,-3236,-4556,-5680,-6561,-7158,-7449,-7426,-7090,-6455, -5551,-4420,-3101,-1661,-147,1376,2847,4206,5389,6352,7054,7472,7582,7378,6861,6060,4994,3714,2275,743, -810,-2314,-3717,-4948,-5969,-6739,-7220,-7398,-7246,-6781,-6028,-5005,-3768,-2381,-895,630,2123,3540,4814,5895, 6736,7301,7563,7517,7160,6510,5586,4431,3087,1613,69,-1472,-2950,-4292,-5444,-6360,-6995,-7335,-7361,-7077, -6488,-5624,-4516,-3221,-1784,-273,1244,2711,4067,5252,6229,6946,7383,7506,7317,6812,6018,4971,3720,2307, 791,-756,-2277,-3710,-4989,-6056,-6859,-7371,-7566,-7437,-7004,-6284,-5306,-4113,-2755,-1280,241,1760,3200,4503, 5613,6483,7081,7378,7356,7029,6394,5487,4338,3000,1534,1,-1534,-3004,-4353,-5514,-6444,-7107,-7469,-7509, -7243,-6674,-5834,-4754,-3479,-2069,-562,974,2466,3860,5090,6097,6845,7299,7446,7275,6814,6062,5067,3848, 2467,975,-558,-2070,-3496,-4781,-5854,-6685,-7225,-7459,-7372,-6970,-6267,-5307,-4118,-2762,-1294,229,1744,3189, 4510,5644,6549,7189,7533,7562,7279,6688,5821,4707,3398,1948,421,-1117,-2599,-3963,-5146,-6102,-6794,-7190, -7276,-7052,-6526,-5718,-4666,-3410,-2006,-508,1014,2502,3891,5124,6157,6936,7433,7633,7514,7082,6356,5362, 4150,2768,1268,-281,-1814,-3276,-4596,-5723,-6592,-7178,-7456,-7413,-7057,-6406,-5491,-4356,-3035,-1592,-83,1428, 2875,4194,5327,6230,6866,7217,7261,6998,6433,5581,4480,3167,1706,160,-1400,-2913,-4308,-5538,-6541,-7284, -7736,-7874,-7688,-7195,-6418,-5385,-4153,-2760,-1281,235,1736,3137,4394,5444,6243,6761,6973,6876,6469,5765, 4794,3593,2210,706,-852,-2394,-3854,-5170,-6293,-7169,-7777,-8081,-8077,-7754,-7128,-6224,-5094,-3769,-2318,-797, 720,2190,3539,4725,5687,6393,6808,6914,6704,6186,5386,4332,3067,1647,131,-1412,-2915,-4315,-5540,-6535, -7268,-7707,-7835,-7655,-7168,-6401,-5375,-4133,-2723,-1216,334,1855,3288,4566,5651,6498,7072,7352,7330,6992, 6350,5433,4281,2942,1477,-54,-1579,-3041,-4369,-5513,-6425,-7049,-7367,-7369,-7054,-6432,-5540,-4417,-3112,-1671, -156,1365,2840,4201,5392,6365,7078,7509,7631,7447,6948,6167,5127,3867,2447,922,-632,-2154,-3577,-4835, -5876,-6667,-7169,-7363,-7241,-6810,-6089,-5107,-3909,-2556,-1091,411,1904,3318,4598,5695,6561,7153,7445,7416, 7079,6442,5525,4371,3030,1553,9,-1543,-3029,-4390,-5567,-6508,-7174,-7541,-7593,-7334,-6766,-5926,-4847,-3569, -2149,-647,873,2349,3718,4930,5925,6668,7126,7280,7121,6654,5896,4878,3648,2248,743,-799,-2322,-3752, -5031,-6104,-6919,-7449,-7666,-7562,-7148,-6443,-5473,-4284,-2920,-1445,85,1610,3060,4385,5522,6431,7071,7415, 7445,7164,6580,5715,4603,3299,1852,332,-1203,-2675,-4027,-5195,-6135,-6805,-7166,-7208,-6954,-6387,-5550,-4478, -3214,-1804,-304,1227,2717,4119,5365,6405,7194,7695,7894,7788,7368,6659,5684,4489,3119,1627,91,-1423, -2854,-4142,-5227,-6073,-6641,-6910,-6862,-6496,-5835,-4904,-3743,-2407,-955,552,2049,3480,4799,5931,6843,7491, 7848,7889,7617,7041,6185,5083,3781,2334,799,-748,-2256,-3647,-4866,-5865,-6600,-7043,-7183,-7009,-6533,-5764, -4745,-3513,-2130,-644,865,2341,3718,4949,5981,6774,7288,7508,7410,6999,6284,5303,4094,2708,1205,-347, -1890,-3353,-4675,-5805,-6691,-7296,-7600,-7596,-7282,-6677,-5802,-4698,-3401,-1968,-464,1051,2517,3856,5022,5959, 6640,7039,7130,6912,6399,5593,4531,3258,1834,314,-1225,-2727,-4114,-5339,-6351,-7105,-7565,-7718,-7547,-7070, -6295,-5265,-4018,-2614,-1117,426,1945,3373,4657,5742,6585,7147,7405,7354,6998,6342,5426,4279,2947,1496, -24,-1541,-2987,-4308,-5443,-6337,-6961,-7276,-7284,-6972,-6357,-5469,-4344,-3033,-1590,-78,1443,2920,4283,5482, 6463,7184,7612,7729,7533,7031,6250,5220,3982,2583,1084,-454,-1964,-3387,-4644,-5690,-6475,-6971,-7156,-7031, -6588,-5866,-4880,-3680,-2313,-846,670,2167,3586,4865,5958,6820,7408,7694,7670,7324,6674,5742,4577,3229, 1750,207,-1339,-2821,-4180,-5359,-6302,-6971,-7330,-7384,-7113,-6537,-5693,-4612,-3344,-1932,-437,1073,2540,3909, 5103,6092,6818,7265,7409,7248,6783,6032,5026,3795,2393,883,-666,-2185,-3611,-4876,-5935,-6743,-7268,-7483, -7378,-6962,-6255,-5284,-4098,-2747,-1289,222,1727,3164,4475,5609,6515,7147,7483,7505,7216,6629,5765,4660, 3360,1917,396,-1142,-2627,-3980,-5156,-6099,-6771,-7151,-7217,-6970,-6418,-5584,-4502,-3223,-1797,-292,1238,2727, 4127,5376,6420,7221,7739,7945,7828,7397,6666,5677,4469,3094,1615,88,-1421,-2853,-4138,-5220,-6057,-6616, -6864,-6794,-6416,-5745,-4812,-3655,-2317,-862,652,2164,3608,4923,6050,6957,7591,7933,7951,7668,7078,6220, 5119,3822,2391,872,-672,-2174,-3574,-4805,-5816,-6559,-6998,-7119,-6929,-6425,-5647,-4617,-3384,-2005,-525,992, 2468,3851,5085,6111,6886,7380,7575,7460,7039,6321,5343,4139,2763,1263,-283,-1817,-3276,-4596,-5722,-6610, -7219,-7529,-7519,-7191,-6563,-5667,-4536,-3231,-1801,-313,1174,2604,3921,5061,5986,6650,7029,7101,6862,6322, 5502,4435,3157,1728,205,-1346,-2858,-4261,-5497,-6512,-7265,-7725,-7878,-7713,-7241,-6481,-5462,-4236,-2853,-1370, 140,1630,3029,4290,5369,6208,6775,7041,6990,6618,5944,4997,3825,2474,1003,-520,-2047,-3504,-4833,-5968, -6861,-7479,-7791,-7785,-7469,-6858,-5976,-4860,-3556,-2117,-599,926,2399,3754,4942,5910,6617,7042,7156,6951, 6441,5633,4573,3298,1874,358,-1181,-2681,-4078,-5317,-6349,-7131,-7632,-7823,-7696,-7262,-6536,-5547,-4346,-2986, -1523,-11,1484,2900,4183,5275,6131,6708,6984,6947,6600,5948,5025,3867,2520,1039,-508,-2051,-3522,-4866, -6024,-6944,-7602,-7961,-8014,-7745,-7171,-6314,-5222,-3932,-2510,-1015,491,1959,3319,4528,5522,6268,6720,6860, 6689,6209,5446,4427,3194,1798,296,-1245,-2764,-4187,-5455,-6509,-7314,-7832,-8050,-7956,-7549,-6850,-5887,-4695, -3335,-1859,-337,1170,2609,3911,5031,5925,6556,6890,6914,6619,6020,5143,4023,2718,1273,-246,-1761,-3224, -4561,-5726,-6659,-7326,-7690,-7749,-7490,-6931,-6101,-5027,-3756,-2345,-843,681,2170,3563,4797,5828,6611,7114, 7319,7209,6788,6078,5097,3890,2511,1024,-501,-2004,-3422,-4691,-5766,-6596,-7152,-7401,-7333,-6950,-6272,-5323, -4158,-2816,-1362,151,1666,3119,4443,5587,6503,7143,7487,7518,7246,6671,5820,4734,3444,2010,489,-1056, -2555,-3944,-5163,-6155,-6881,-7311,-7426,-7226,-6721,-5931,-4894,-3654,-2261,-777,740,2221,3619,4866,5909,6704, 7220,7426,7318,6904,6195,5229,4037,2668,1183,-362,-1894,-3355,-4672,-5784,-6644,-7216,-7489,-7452,-7105,-6472, -5576,-4450,-3145,-1712,-214,1287,2725,4050,5200,6137,6819,7212,7294,7061,6511,5674,4586,3294,1862,345, -1193,-2687,-4075,-5299,-6307,-7054,-7503,-7639,-7456,-6965,-6195,-5173,-3947,-2564,-1073,460,1967,3395,4674,5746, 6572,7117,7364,7302,6930,6271,5345,4187,2841,1365,-164,-1686,-3136,-4445,-5561,-6438,-7041,-7345,-7338,-7013, -6394,-5508,-4380,-3078,-1642,-145,1368,2831,4181,5367,6336,7044,7467,7575,7372,6868,6076,5031,3779,2365, 860,-682,-2186,-3587,-4823,-5845,-6609,-7087,-7263,-7133,-6697,-5971,-4985,-3785,-2417,-940,571,2066,3478,4751, 5839,6695,7277,7570,7546,7206,6558,5633,4470,3120,1638,98,-1443,-2917,-4268,-5434,-6365,-7021,-7377,-7412, -7137,-6559,-5714,-4630,-3353,-1939,-443,1065,2535,3895,5088,6066,6794,7230,7363,7187,6707,5931,4905,3660, 2259,760,-779,-2284,-3700,-4965,-6018,-6827,-7345,-7549,-7440,-7023,-6314,-5359,-4187,-2848,-1395,115,1623,3059, 4365,5484,6366,6972,7284,7288,6980,6373,5497,4380,3072,1622,96,-1436,-2908,-4252,-5417,-6346,-7009,-7379, -7441,-7191,-6644,-5820,-4755,-3479,-2060,-552,977,2466,3859,5088,6105,6875,7361,7542,7410,6975,6249,5266, 4056,2683,1197,-336,-1853,-3283,-4561,-5635,-6463,-7002,-7235,-7153,-6759,-6073,-5130,-3955,-2616,-1159,349,1848, 3278,4587,5718,6631,7281,7646,7701,7437,6865,6011,4910,3615,2178,665,-858,-2336,-3699,-4894,-5867,-6576, -6991,-7100,-6887,-6370,-5575,-4533,-3289,-1897,-407,1110,2597,3995,5236,6279,7068,7586,7797,7688,7279,6571, 5594,4394,3012,1522,-17,-1541,-2984,-4282,-5394,-6255,-6846,-7132,-7103,-6765,-6131,-5227,-4095,-2781,-1346,152, 1658,3102,4424,5572,6495,7159,7523,7582,7332,6779,5934,4846,3547,2099,558,-998,-2513,-3913,-5143,-6145, -6887,-7341,-7485,-7323,-6851,-6096,-5090,-3879,-2508,-1036,466,1941,3334,4583,5632,6443,6971,7194,7115,6720, 6040,5097,3928,2581,1114,-417,-1946,-3416,-4752,-5898,-6804,-7435,-7756,-7763,-7452,-6849,-5974,-4860,-3566,-2142, -646,859,2306,3643,4808,5758,6455,6861,6961,6746,6224,5414,4353,3088,1673,163,-1373,-2873,-4283,-5536, -6577,-7361,-7853,-8027,-7888,-7431,-6691,-5693,-4489,-3124,-1649,-131,1359,2775,4038,5113,5953,6517,6794,6765, 6426,5792,4879,3729,2388,918,-611,-2141,-3604,-4942,-6098,-7026,-7683,-8043,-8080,-7800,-7217,-6364,-5269,-3996, -2590,-1104,397,1864,3225,4428,5420,6152,6599,6732,6553,6070,5301,4275,3041,1645,146,-1386,-2884,-4292, -5543,-6592,-7383,-7896,-8098,-7989,-7560,-6839,-5853,-4652,-3283,-1804,-287,1210,2628,3910,5007,5872,6473,6779, 6771,6453,5836,4945,3820,2507,1062,-448,-1970,-3436,-4786,-5953,-6894,-7567,-7948,-8009,-7759,-7210,-6385,-5313, -4048,-2637,-1143,377,1852,3226,4440,5446,6207,6693,6872,6743,6303,5567,4573,3355,1979,492,-1036,-2545, -3966,-5249,-6325,-7154,-7696,-7928,-7835,-7436,-6740,-5788,-4624,-3292,-1833,-319,1195,2646,3980,5127,6046,6693, 7040,7078,6809,6234,5392,4306,3027,1609,99,-1422,-2896,-4261,-5447,-6411,-7107,-7504,-7590,-7351,-6802,-5976, -4901,-3629,-2213,-714,810,2297,3695,4936,5980,6782,7304,7528,7440,7049,6369,5427,4257,2920,1456,-60, -1570,-2997,-4278,-5353,-6182,-6727,-6973,-6917,-6555,-5900,-4981,-3821,-2482,-1003,538,2080,3551,4900,6066,7010, 7691,8086,8173,7940,7408,6582,5516,4245,2830,1332,-185,-1661,-3034,-4252,-5246,-5982,-6425,-6553,-6360,-5863, -5081,-4053,-2822,-1435,44,1556,3046,4440,5698,6753,7574,8122,8376,8315,7952,7286,6349,5178,3825,2356, 826,-697,-2146,-3461,-4585,-5474,-6091,-6401,-6397,-6082,-5466,-4581,-3469,-2176,-752,743,2251,3708,5050,6224, 7173,7860,8256,8346,8128,7607,6801,5748,4488,3071,1549,4,-1505,-2912,-4158,-5181,-5949,-6436,-6614,-6482, -6040,-5313,-4331,-3136,-1782,-328,1174,2650,4054,5321,6398,7237,7799,8059,8002,7628,6966,6039,4883,3548, 2087,556,-982,-2464,-3818,-4982,-5915,-6568,-6917,-6956,-6677,-6107,-5260,-4177,-2902,-1495,-12,1483,2926,4260, 5432,6398,7124,7558,7694,7513,7023,6243,5207,3963,2559,1055,-490,-2010,-3441,-4722,-5796,-6605,-7113,-7310, -7190,-6759,-6046,-5081,-3910,-2566,-1109,394,1893,3320,4606,5703,6563,7152,7450,7443,7124,6515,5625,4502, 3180,1724,197,-1333,-2808,-4157,-5321,-6261,-6935,-7311,-7379,-7136,-6591,-5767,-4700,-3445,-2044,-568,939,2412, 3780,4995,6010,6766,7241,7407,7258,6804,6055,5041,3823,2427,925,-620,-2145,-3580,-4860,-5938,-6764,-7305, -7539,-7460,-7072,-6395,-5450,-4293,-2961,-1522,-29,1459,2878,4175,5293,6185,6814,7147,7168,6878,6285,5419, 4308,3002,1553,35,-1507,-2995,-4373,-5571,-6544,-7250,-7669,-7769,-7561,-7048,-6255,-5210,-3958,-2556,-1072,443, 1911,3280,4489,5498,6268,6760,6958,6852,6436,5732,4761,3566,2202,729,-798,-2307,-3737,-5027,-6129,-6987, -7567,-7838,-7796,-7439,-6782,-5861,-4712,-3395,-1952,-441,1069,2520,3856,5014,5948,6613,6989,7055,6811,6262, 5440,4369,3096,1670,158,-1373,-2854,-4229,-5430,-6413,-7132,-7566,-7692,-7505,-7014,-6246,-5221,-3994,-2614,-1141, 369,1849,3244,4494,5547,6360,6897,7138,7069,6696,6035,5105,3951,2621,1167,-345,-1855,-3291,-4591,-5701, -6576,-7167,-7459,-7434,-7103,-6476,-5578,-4457,-3154,-1720,-221,1290,2746,4089,5263,6220,6912,7315,7416,7201, 6691,5898,4859,3616,2213,712,-823,-2326,-3730,-4973,-5995,-6750,-7220,-7379,-7227,-6779,-6047,-5067,-3875,-2521, -1061,439,1927,3333,4603,5677,6515,7080,7342,7287,6929,6263,5327,4161,2818,1355,-167,-1688,-3138,-4460, -5602,-6518,-7163,-7510,-7546,-7268,-6689,-5836,-4747,-3472,-2064,-587,906,2350,3684,4857,5817,6516,6937,7055, 6869,6383,5610,4580,3345,1942,434,-1107,-2619,-4030,-5292,-6338,-7134,-7646,-7854,-7754,-7336,-6624,-5652,-4461, -3104,-1641,-133,1356,2773,4061,5164,6040,6643,6951,6940,6613,5989,5096,3965,2649,1204,-315,-1837,-3307, -4645,-5798,-6719,-7369,-7719,-7765,-7501,-6941,-6107,-5030,-3758,-2350,-852,668,2141,3511,4725,5734,6494,6966, 7139,6994,6545,5806,4808,3606,2239,764,-742,-2234,-3640,-4898,-5956,-6768,-7293,-7523,-7443,-7052,-6372,-5435, -4274,-2933,-1468,53,1566,3015,4327,5451,6344,6970,7303,7329,7047,6467,5604,4504,3205,1764,250,-1271, -2743,-4091,-5276,-6235,-6934,-7344,-7435,-7208,-6675,-5857,-4795,-3539,-2137,-650,859,2343,3728,4968,6003,6779, 7273,7457,7325,6886,6161,5185,3988,2624,1147,-381,-1902,-3336,-4627,-5721,-6565,-7128,-7393,-7350,-6997,-6347, -5431,-4297,-2978,-1538,-33,1464,2903,4219,5364,6282,6944,7310,7373,7118,6565,5735,4659,3378,1956,442, -1095,-2592,-3983,-5199,-6189,-6917,-7346,-7469,-7279,-6785,-6010,-4984,-3751,-2361,-882,637,2117,3510,4751,5794, 6594,7123,7347,7269,6880,6198,5245,4069,2720,1247,-277,-1795,-3233,-4534,-5645,-6511,-7099,-7386,-7364,-7033, -6413,-5526,-4406,-3106,-1677,-175,1328,2778,4112,5275,6225,6918,7330,7444,7242,6737,5943,4890,3627,2207, 698,-832,-2324,-3707,-4926,-5932,-6679,-7145,-7303,-7148,-6686,-5946,-4945,-3740,-2372,-906,602,2095,3509,4773, 5852,6687,7244,7499,7442,7076,6416,5487,4331,2997,1535,13,-1503,-2952,-4266,-5395,-6291,-6913,-7246,-7268, -6989,-6408,-5556,-4467,-3187,-1771,-280,1225,2677,4021,5202,6167,6874,7295,7417,7227,6726,5948,4921,3685, 2284,786,-751,-2262,-3678,-4939,-5983,-6765,-7266,-7458,-7340,-6922,-6225,-5275,-4108,-2768,-1313,196,1697,3119, 4406,5501,6362,6958,7262,7259,6947,6332,5441,4304,2977,1525,16,-1499,-2938,-4256,-5389,-6310,-6964,-7332, -7384,-7133,-6568,-5730,-4652,-3379,-1973,-479,1033,2500,3868,5076,6069,6815,7271,7427,7273,6815,6067,5067, 3846,2466,974,-556,-2060,-3478,-4744,-5802,-6616,-7142,-7370,-7284,-6891,-6210,-5275,-4114,-2783,-1336,168,1673, 3110,4415,5539,6431,7050,7373,7383,7079,6480,5608,4492,3189,1748,237,-1284,-2755,-4108,-5286,-6243,-6936, -7333,-7428,-7208,-6693,-5899,-4855,-3618,-2230,-749,761,2235,3606,4827,5845,6619,7110,7303,7184,6755,6029, 5045,3838,2467,988,-538,-2048,-3474,-4765,-5857,-6709,-7270,-7532,-7476,-7113,-6463,-5549,-4414,-3100,-1652,-146, 1359,2805,4121,5258,6169,6820,7183,7246,6994,6445,5605,4518,3225,1789,278,-1249,-2727,-4083,-5277,-6246, -6957,-7378,-7487,-7282,-6779,-5987,-4963,-3736,-2354,-877,634,2126,3518,4768,5817,6615,7137,7353,7264,6870, 6180,5226,4046,2686,1212,-323,-1841,-3278,-4578,-5678,-6537,-7116,-7399,-7372,-7034,-6402,-5502,-4375,-3058,-1621, -118,1385,2831,4159,5318,6257,6945,7344,7445,7232,6717,5922,4881,3630,2226,732,-785,-2271,-3648,-4867, -5864,-6610,-7061,-7205,-7042,-6576,-5829,-4821,-3603,-2228,-754,762,2247,3645,4899,5960,6794,7351,7618,7576, 7219,6564,5636,4479,3146,1691,175,-1339,-2790,-4113,-5255,-6163,-6795,-7114,-7132,-6832,-6240,-5378,-4287,-3012, -1598,-105,1396,2848,4188,5358,6309,7008,7429,7553,7366,6887,6120,5096,3859,2460,963,-560,-2050,-3440, -4673,-5701,-6475,-6966,-7147,-7011,-6570,-5844,-4863,-3676,-2329,-890,606,2090,3507,4790,5890,6753,7344,7631, 7614,7287,6671,5784,4670,3375,1944,441,-1075,-2526,-3853,-5001,-5918,-6565,-6921,-6963,-6700,-6131,-5284,-4197, -2917,-1497,-5,1504,2963,4322,5523,6523,7274,7747,7913,7765,7307,6559,5559,4346,2970,1498,-17,-1509, -2922,-4187,-5244,-6052,-6575,-6787,-6686,-6278,-5579,-4627,-3452,-2109,-654,853,2348,3763,5047,6135,7005,7611, 7929,7948,7663,7082,6222,5118,3816,2379,862,-666,-2139,-3497,-4681,-5637,-6324,-6716,-6793,-6565,-6033,-5233, -4192,-2961,-1586,-119,1383,2845,4216,5438,6451,7218,7703,7887,7759,7321,6594,5608,4397,3021,1529,-9, -1530,-2970,-4264,-5358,-6203,-6769,-7032,-6983,-6624,-5972,-5058,-3921,-2605,-1169,324,1815,3243,4548,5668,6574, 7209,7556,7593,7316,6735,5877,4765,3459,2008,479,-1065,-2560,-3933,-5137,-6123,-6846,-7278,-7408,-7230,-6750, -5990,-4977,-3762,-2395,-929,571,2046,3426,4659,5693,6486,6991,7198,7089,6671,5953,4974,3771,2395,897, -651,-2189,-3653,-4975,-6106,-6985,-7584,-7879,-7855,-7520,-6891,-5997,-4874,-3572,-2143,-650,851,2296,3618,4768, 5694,6360,6738,6812,6577,6046,5236,4178,2916,1511,13,-1508,-3001,-4384,-5613,-6618,-7368,-7819,-7956,-7781, -7305,-6545,-5549,-4349,-2991,-1535,-31,1455,2858,4126,5191,6020,6571,6829,6780,6426,5776,4860,3711,2382, 927,-587,-2096,-3536,-4847,-5974,-6866,-7483,-7800,-7804,-7492,-6879,-5998,-4887,-3598,-2177,-684,817,2277,3631, 4822,5794,6514,6938,7057,6865,6368,5591,4564,3325,1933,439,-1088,-2584,-3986,-5223,-6244,-7017,-7493,-7671, -7537,-7102,-6385,-5418,-4234,-2892,-1438,65,1558,2973,4252,5340,6200,6783,7069,7048,6716,6091,5190,4055, 2736,1285,-235,-1754,-3212,-4543,-5690,-6605,-7250,-7597,-7639,-7368,-6806,-5971,-4903,-3641,-2235,-748,757,2225, 3585,4787,5778,6521,6983,7142,6986,6526,5778,4769,3548,2163,683,-830,-2320,-3720,-4971,-6021,-6822,-7344, -7559,-7463,-7055,-6359,-5397,-4218,-2870,-1415,100,1602,3032,4327,5439,6317,6930,7250,7267,6982,6405,5549, 4457,3169,1743,239,-1279,-2733,-4061,-5213,-6131,-6784,-7149,-7206,-6961,-6422,-5603,-4545,-3286,-1885,-392,1120, 2595,3977,5212,6240,7032,7548,7763,7661,7249,6544,5581,4401,3057,1604,107,-1376,-2766,-4025,-5082,-5896, -6434,-6670,-6601,-6228,-5566,-4641,-3490,-2156,-704,812,2326,3770,5088,6223,7137,7785,8143,8196,7940,7379, 6541,5454,4174,2753,1246,-274,-1744,-3103,-4298,-5272,-5987,-6415,-6534,-6345,-5849,-5079,-4065,-2847,-1478,-12, 1494,2965,4349,5581,6610,7389,7882,8083,7976,7564,6865,5901,4705,3325,1820,266,-1278,-2742,-4061,-5184, -6065,-6670,-6986,-6985,-6674,-6069,-5194,-4085,-2804,-1397,75,1550,2971,4279,5411,6333,6991,7363,7426,7181, 6638,5813,4739,3466,2036,521,-1027,-2529,-3925,-5150,-6161,-6907,-7365,-7517,-7366,-6911,-6176,-5189,-3999,-2640, -1181,321,1800,3198,4454,5519,6338,6889,7138,7068,6689,6010,5063,3896,2558,1101,-406,-1912,-3347,-4660, -5788,-6674,-7286,-7596,-7586,-7267,-6649,-5774,-4668,-3381,-1961,-467,1039,2492,3841,5017,5977,6684,7111,7230, 7044,6556,5780,4752,3517,2122,634,-884,-2372,-3763,-5003,-6033,-6817,-7311,-7493,-7360,-6920,-6183,-5197,-3999, -2645,-1189,313,1801,3210,4484,5566,6421,6999,7281,7257,6926,6293,5392,4259,2941,1492,-21,-1539,-2989, -4320,-5467,-6386,-7032,-7391,-7440,-7172,-6602,-5762,-4690,-3419,-2020,-539,960,2415,3777,4975,5963,6694,7141, 7286,7111,6634,5874,4858,3631,2242,742,-792,-2308,-3729,-5001,-6055,-6863,-7380,-7594,-7496,-7101,-6417,-5479, -4320,-2999,-1564,-77,1397,2797,4074,5166,6047,6654,6977,6994,6690,6093,5216,4105,2811,1381,-120,-1634, -3093,-4440,-5614,-6555,-7229,-7605,-7669,-7420,-6874,-6058,-5003,-3752,-2352,-867,645,2127,3503,4730,5747,6512, 7005,7195,7078,6655,5942,4971,3781,2426,964,-541,-2025,-3423,-4673,-5730,-6545,-7084,-7320,-7244,-6861,-6186, -5242,-4081,-2744,-1289,226,1736,3184,4503,5647,6563,7215,7571,7624,7366,6809,5975,4906,3633,2224,731, -779,-2236,-3578,-4752,-5703,-6398,-6808,-6919,-6720,-6214,-5427,-4388,-3143,-1752,-276,1220,2674,4042,5250,6275, 7060,7576,7793,7701,7298,6603,5651,4473,3123,1660,133,-1386,-2828,-4134,-5240,-6102,-6689,-6976,-6967,-6653, -6051,-5183,-4082,-2789,-1376,109,1592,3015,4315,5441,6348,6997,7363,7424,7177,6630,5809,4737,3473,2060, 551,-979,-2473,-3863,-5093,-6106,-6851,-7306,-7456,-7295,-6830,-6088,-5088,-3890,-2524,-1055,449,1926,3319,4557, 5599,6399,6933,7176,7117,6754,6104,5184,4032,2691,1222,-306,-1824,-3272,-4585,-5709,-6597,-7216,-7540,-7555, -7259,-6659,-5794,-4692,-3414,-2006,-530,957,2399,3738,4913,5880,6587,7007,7120,6923,6423,5639,4602,3364, 1958,461,-1071,-2568,-3960,-5192,-6215,-6976,-7449,-7622,-7475,-7021,-6277,-5281,-4084,-2723,-1267,225,1697,3090, 4352,5425,6265,6833,7101,7062,6714,6070,5164,4034,2720,1280,-225,-1740,-3193,-4526,-5674,-6592,-7240,-7595, -7635,-7368,-6809,-5983,-4920,-3669,-2278,-807,692,2143,3493,4680,5658,6385,6834,6977,6818,6346,5587,4567, 3331,1929,434,-1097,-2594,-3997,-5251,-6299,-7106,-7628,-7843,-7750,-7347,-6651,-5696,-4531,-3197,-1752,-253,1230, 2642,3929,5017,5876,6466,6767,6763,6463,5867,5008,3907,2618,1183,-322,-1834,-3292,-4632,-5794,-6734,-7409, -7795,-7873,-7632,-7086,-6258,-5189,-3926,-2524,-1045,452,1913,3284,4497,5510,6283,6772,6967,6848,6426,5718, 4747,3558,2203,736,-772,-2260,-3658,-4908,-5953,-6756,-7278,-7498,-7411,-7026,-6350,-5412,-4248,-2917,-1458,57, 1562,3005,4319,5456,6377,7035,7408,7475,7234,6684,5850,4772,3503,2093,603,-896,-2349,-3689,-4867,-5822, -6506,-6900,-6986,-6756,-6231,-5429,-4392,-3156,-1771,-294,1211,2693,4080,5316,6348,7136,7645,7856,7757,7356, 6662,5711,4538,3199,1744,238,-1252,-2667,-3944,-5034,-5889,-6473,-6761,-6738,-6410,-5782,-4886,-3769,-2472,-1053, 427,1915,3337,4646,5785,6702,7359,7729,7795,7557,7014,6197,5132,3871,2464,972,-543,-2004,-3368,-4569, -5558,-6300,-6760,-6914,-6759,-6294,-5541,-4533,-3320,-1946,-480,1019,2489,3876,5120,6163,6966,7500,7733,7661, 7282,6616,5692,4546,3219,1772,258,-1249,-2694,-4005,-5125,-6010,-6620,-6928,-6930,-6629,-6039,-5183,-4095,-2819, -1415,69,1561,3003,4329,5487,6432,7128,7537,7650,7459,6962,6181,5146,3907,2516,1028,-492,-1972,-3359, -4585,-5604,-6361,-6835,-7003,-6867,-6424,-5707,-4740,-3565,-2220,-759,749,2244,3667,4938,6012,6848,7408,7677, 7645,7306,6680,5779,4649,3330,1883,367,-1141,-2590,-3910,-5050,-5956,-6603,-6954,-6992,-6721,-6157,-5319,-4245, -2982,-1582,-109,1388,2838,4180,5365,6337,7055,7490,7620,7443,6967,6207,5195,3978,2602,1122,-404,-1904, -3316,-4577,-5631,-6430,-6941,-7142,-7034,-6623,-5928,-4980,-3822,-2500,-1067,416,1885,3287,4559,5649,6504,7099, 7394,7381,7059,6440,5549,4430,3114,1672,158,-1363,-2829,-4180,-5349,-6293,-6966,-7347,-7415,-7184,-6650,-5843, -4801,-3564,-2182,-720,772,2220,3566,4756,5743,6481,6946,7109,6973,6530,5802,4816,3619,2254,789,-733, -2227,-3648,-4919,-5990,-6817,-7357,-7591,-7518,-7137,-6469,-5543,-4396,-3083,-1655,-159,1325,2742,4037,5150,6045, 6673,7020,7066,6802,6239,5398,4316,3033,1610,111,-1397,-2856,-4199,-5367,-6323,-7014,-7419,-7514,-7299,-6784, -5996,-4966,-3746,-2383,-933,549,2005,3382,4613,5657,6458,6978,7195,7090,6680,5982,5026,3855,2521,1068, -438,-1931,-3350,-4628,-5713,-6558,-7118,-7384,-7336,-6995,-6361,-5464,-4339,-3040,-1607,-116,1379,2807,4116,5248, 6162,6818,7189,7260,7018,6474,5651,4579,3311,1891,395,-1126,-2602,-3975,-5189,-6184,-6916,-7366,-7503,-7326, -6854,-6100,-5104,-3898,-2532,-1072,431,1913,3303,4550,5595,6402,6933,7179,7109,6741,6077,5151,3987,2647, 1186,-328,-1836,-3260,-4552,-5654,-6522,-7118,-7421,-7413,-7106,-6501,-5630,-4532,-3252,-1845,-371,1111,2535,3841, 4997,5933,6625,7035,7153,6966,6475,5701,4674,3435,2037,540,-982,-2467,-3850,-5073,-6074,-6826,-7295,-7466, -7327,-6887,-6161,-5186,-3990,-2634,-1172,331,1814,3219,4489,5568,6413,6988,7265,7229,6884,6252,5350,4218, 2909,1475,-28,-1536,-2981,-4300,-5426,-6320,-6942,-7264,-7282,-6995,-6416,-5564,-4480,-3200,-1791,-303,1195,2645, 3982,5164,6137,6865,7309,7461,7298,6828,6072,5056,3837,2464,990,-513,-1988,-3371,-4601,-5631,-6407,-6901, -7093,-6981,-6563,-5869,-4920,-3758,-2429,-983,510,2001,3413,4689,5785,6645,7237,7537,7533,7220,6614,5737, 4627,3323,1888,389,-1123,-2577,-3910,-5073,-6012,-6684,-7060,-7124,-6870,-6325,-5494,-4431,-3177,-1783,-310,1185, 2644,3996,5188,6175,6903,7352,7494,7342,6898,6170,5195,4010,2654,1187,-334,-1836,-3254,-4527,-5599,-6420, -6966,-7208,-7148,-6782,-6127,-5207,-4070,-2750,-1317,170,1647,3058,4343,5450,6332,6959,7292,7323,7043,6460, 5601,4509,3219,1794,285,-1236,-2700,-4053,-5229,-6176,-6860,-7261,-7359,-7154,-6659,-5887,-4871,-3645,-2271,-800, 709,2177,3550,4764,5777,6548,7043,7235,7127,6711,6013,5048,3869,2526,1067,-444,-1936,-3355,-4636,-5722, -6571,-7139,-7406,-7367,-7015,-6373,-5463,-4332,-3030,-1605,-119,1359,2775,4071,5196,6100,6752,7123,7199,6963, 6425,5612,4544,3275,1857,353,-1170,-2646,-4019,-5216,-6201,-6928,-7366,-7502,-7327,-6850,-6104,-5109,-3912,-2560, -1113,378,1855,3252,4506,5566,6375,6905,7137,7049,6667,5991,5057,3906,2584,1139,-355,-1857,-3281,-4574, -5684,-6559,-7165,-7479,-7485,-7178,-6574,-5696,-4587,-3294,-1867,-388,1100,2529,3846,4998,5940,6619,7016,7108, 6884,6361,5559,4514,3269,1876,399,-1106,-2576,-3954,-5173,-6182,-6941,-7416,-7584,-7444,-7001,-6275,-5302,-4117, -2768,-1320,171,1648,3039,4294,5360,6192,6758,7026,6986,6647,6010,5106,3974,2669,1247,-240,-1719,-3138, -4435,-5558,-6456,-7089,-7430,-7464,-7189,-6615,-5769,-4686,-3416,-2008,-520,989,2442,3791,4973,5939,6655,7085, 7221,7053,6579,5823,4817,3598,2221,747,-751,-2223,-3597,-4824,-5844,-6626,-7125,-7324,-7204,-6774,-6052,-5073, -3876,-2520,-1056,445,1931,3343,4621,5708,6569,7162,7466,7466,7165,6577,5722,4637,3363,1951,463,-1035, -2485,-3806,-4949,-5864,-6512,-6865,-6914,-6658,-6113,-5293,-4229,-2973,-1575,-89,1414,2872,4220,5413,6404,7155, 7631,7815,7688,7257,6529,5546,4344,2978,1503,-10,-1507,-2912,-4176,-5235,-6051,-6579,-6808,-6722,-6329,-5649, -4715,-3567,-2247,-810,673,2154,3559,4838,5933,6799,7406,7730,7746,7456,6873,6010,4910,3610,2179,670, -848,-2316,-3662,-4835,-5786,-6477,-6879,-6974,-6754,-6242,-5452,-4424,-3200,-1836,-385,1097,2553,3912,5135,6153, 6929,7415,7603,7475,7046,6324,5344,4147,2787,1317,-202,-1697,-3110,-4382,-5454,-6289,-6854,-7124,-7094,-6755, -6127,-5234,-4115,-2818,-1397,81,1558,2976,4274,5402,6304,6956,7309,7357,7102,6545,5717,4652,3392,1999, 517,-988,-2457,-3816,-5020,-6003,-6730,-7165,-7295,-7111,-6633,-5875,-4869,-3657,-2295,-834,662,2130,3507,4735, 5769,6562,7083,7311,7240,6864,6205,5280,4133,2813,1371,-122,-1610,-3029,-4314,-5415,-6283,-6876,-7173,-7160, -6839,-6230,-5355,-4258,-2985,-1579,-100,1381,2820,4147,5305,6245,6929,7328,7426,7212,6698,5907,4865,3624, 2234,753,-747,-2212,-3579,-4788,-5796,-6549,-7027,-7200,-7056,-6609,-5876,-4887,-3692,-2343,-898,594,2060,3448, 4686,5738,6546,7087,7329,7266,6912,6277,5372,4246,2931,1481,-41,-1571,-3030,-4354,-5487,-6379,-6993,-7320, -7343,-7066,-6499,-5665,-4599,-3345,-1951,-482,1001,2435,3763,4933,5894,6595,7013,7121,6917,6410,5619,4585, 3349,1960,482,-1033,-2521,-3920,-5166,-6207,-6994,-7492,-7679,-7554,-7123,-6411,-5451,-4286,-2963,-1541,-69,1388, 2769,4039,5131,5999,6605,6919,6924,6618,6011,5138,4021,2727,1305,-189,-1691,-3134,-4463,-5612,-6534,-7188, -7545,-7599,-7348,-6798,-5978,-4922,-3676,-2283,-801,706,2172,3540,4747,5749,6497,6966,7140,7010,6570,5848, 4866,3666,2300,830,-674,-2148,-3536,-4771,-5803,-6596,-7113,-7330,-7237,-6839,-6155,-5214,-4052,-2724,-1284,207, 1687,3109,4405,5521,6419,7048,7388,7415,7137,6556,5710,4620,3350,1941,448,-1052,-2507,-3847,-5010,-5957, -6639,-7036,-7132,-6925,-6424,-5646,-4619,-3400,-2028,-563,923,2376,3730,4938,5947,6714,7204,7388,7262,6832, 6109,5136,3952,2606,1148,-351,-1844,-3261,-4548,-5640,-6489,-7056,-7324,-7278,-6924,-6279,-5384,-4270,-2981,-1572, -107,1365,2778,4069,5177,6066,6697,7045,7092,6837,6291,5466,4402,3135,1725,236,-1283,-2756,-4118,-5322, -6311,-7046,-7498,-7639,-7471,-7003,-6251,-5256,-4059,-2712,-1268,210,1664,3027,4248,5274,6062,6570,6782,6694, 6305,5626,4690,3532,2197,740,-765,-2263,-3678,-4964,-6052,-6909,-7496,-7793,-7786,-7472,-6863,-5988,-4881,-3593, -2180,-696,788,2220,3545,4703,5642,6333,6731,6825,6607,6086,5291,4254,3016,1639,164,-1333,-2795,-4158, -5356,-6342,-7076,-7524,-7675,-7520,-7071,-6346,-5362,-4170,-2820,-1364,131,1600,2982,4224,5278,6098,6652,6919, 6886,6547,5919,5014,3885,2581,1153,-337,-1823,-3247,-4554,-5676,-6570,-7193,-7517,-7528,-7228,-6631,-5769,-4683, -3416,-2017,-546,933,2374,3706,4878,5842,6555,6990,7122,6944,6467,5708,4694,3480,2111,649,-845,-2317, -3701,-4933,-5966,-6747,-7241,-7430,-7305,-6873,-6163,-5199,-4033,-2705,-1270,219,1694,3104,4377,5467,6322,6907, 7196,7182,6869,6263,5387,4287,2990,1565,65,-1435,-2881,-4192,-5325,-6225,-6858,-7204,-7244,-6983,-6426,-5597, -4538,-3285,-1890,-423,1063,2506,3850,5039,6017,6753,7209,7364,7208,6751,6016,5041,3863,2531,1108,-356, -1809,-3180,-4418,-5458,-6260,-6787,-7011,-6921,-6527,-5845,-4900,-3727,-2390,-944,555,2046,3454,4736,5838,6718, 7340,7670,7701,7425,6848,5994,4906,3628,2218,735,-762,-2206,-3539,-4705,-5649,-6326,-6712,-6793,-6569,-6049, -5262,-4238,-3023,-1656,-194,1296,2762,4129,5342,6349,7109,7590,7782,7675,7269,6581,5630,4461,3118,1661, 160,-1318,-2718,-3974,-5032,-5862,-6418,-6676,-6622,-6265,-5622,-4724,-3605,-2320,-917,544,2017,3438,4745,5880, 6798,7451,7812,7863,7609,7060,6234,5161,3892,2477,983,-530,-1986,-3325,-4495,-5458,-6160,-6590,-6715,-6543, -6067,-5311,-4305,-3101,-1750,-308,1163,2600,3944,5152,6171,6948,7458,7664,7565,7158,6465,5517,4352,3012, 1562,60,-1434,-2855,-4148,-5244,-6099,-6677,-6957,-6929,-6600,-5985,-5113,-4022,-2746,-1343,128,1607,3032,4338, 5472,6390,7054,7437,7518,7296,6776,5974,4921,3668,2270,783,-727,-2196,-3560,-4764,-5756,-6499,-6953,-7104, -6950,-6497,-5760,-4787,-3612,-2285,-860,611,2063,3436,4679,5726,6538,7076,7313,7246,6872,6206,5286,4142, 2824,1390,-105,-1596,-3023,-4323,-5440,-6325,-6944,-7273,-7295,-7018,-6442,-5602,-4531,-3271,-1882,-419,1050,2479, 3795,4948,5894,6589,7003,7114,6919,6424,5657,4638,3416,2042,566,-943,-2421,-3809,-5034,-6055,-6827,-7315, -7505,-7390,-6984,-6304,-5368,-4220,-2914,-1486,-10,1461,2857,4120,5196,6041,6609,6890,6865,6537,5921,5039, 3934,2646,1226,-261,-1750,-3179,-4479,-5605,-6501,-7128,-7473,-7517,-7260,-6713,-5894,-4843,-3597,-2198,-719,777, 2238,3588,4781,5755,6487,6937,7101,6952,6509,5778,4790,3590,2226,764,-731,-2202,-3580,-4807,-5836,-6621, -7135,-7347,-7245,-6849,-6162,-5219,-4061,-2730,-1291,204,1694,3112,4399,5505,6380,6992,7315,7331,7052,6474, 5625,4539,3258,1844,353,-1140,-2574,-3894,-5044,-5966,-6638,-7017,-7090,-6858,-6321,-5505,-4460,-3220,-1848,-402, 1065,2484,3819,5010,6012,6779,7280,7483,7374,6959,6256,5296,4119,2775,1321,-183,-1670,-3083,-4347,-5415, -6240,-6788,-7038,-6986,-6631,-5990,-5092,-3971,-2674,-1264,206,1673,3078,4362,5476,6373,7016,7371,7423,7167, 6615,5790,4726,3472,2086,604,-893,-2348,-3705,-4895,-5880,-6603,-7034,-7157,-6965,-6467,-5695,-4675,-3463,-2100, -645,838,2288,3649,4862,5883,6662,7171,7390,7307,6920,6244,5301,4132,2784,1317,-201,-1700,-3126,-4410, -5499,-6355,-6940,-7228,-7206,-6877,-6266,-5391,-4294,-3025,-1633,-175,1290,2708,4019,5168,6105,6781,7176,7262, 7043,6525,5733,4695,3460,2070,597,-906,-2376,-3737,-4938,-5928,-6661,-7109,-7252,-7087,-6615,-5864,-4861,-3655, -2289,-838,649,2103,3468,4694,5727,6524,7062,7309,7254,6893,6242,5324,4187,2872,1439,-47,-1538,-2953, -4246,-5360,-6241,-6856,-7181,-7198,-6907,-6321,-5470,-4382,-3110,-1714,-249,1224,2642,3947,5091,6028,6718,7134, 7248,7059,6568,5789,4759,3523,2138,666,-836,-2305,-3668,-4885,-5890,-6657,-7139,-7320,-7200,-6785,-6084,-5139, -3981,-2664,-1241,240,1696,3081,4336,5400,6231,6793,7063,7026,6683,6048,5150,4024,2721,1292,-194,-1677, -3101,-4406,-5531,-6435,-7079,-7433,-7481,-7223,-6664,-5842,-4790,-3549,-2179,-734,727,2155,3481,4653,5626,6357, 6800,6943,6775,6313,5565,4576,3382,2039,595,-887,-2361,-3747,-4988,-6034,-6832,-7346,-7559,-7466,-7082,-6413, -5489,-4347,-3036,-1606,-120,1354,2757,4024,5117,5980,6582,6901,6916,6624,6036,5170,4076,2798,1389,-88, -1572,-3006,-4326,-5486,-6416,-7082,-7456,-7524,-7283,-6749,-5947,-4913,-3680,-2302,-834,659,2116,3468,4666,5650, 6393,6864,7048,6924,6512,5813,4851,3668,2315,853,-644,-2123,-3502,-4741,-5781,-6585,-7116,-7354,-7287,-6917, -6257,-5343,-4208,-2907,-1490,-12,1464,2876,4173,5300,6201,6839,7189,7237,6985,6439,5625,4576,3335,1950, 488,-996,-2427,-3749,-4913,-5855,-6550,-6959,-7074,-6883,-6397,-5627,-4621,-3405,-2039,-582,905,2366,3738,4962, 5984,6765,7268,7472,7370,6969,6285,5354,4198,2870,1427,-80,-1578,-3008,-4298,-5390,-6238,-6809,-7085,-7056, -6732,-6126,-5261,-4171,-2900,-1511,-51,1409,2809,4093,5207,6107,6761,7130,7207,6983,6459,5661,4622,3386, 2004,527,-970,-2437,-3798,-5002,-5992,-6725,-7166,-7308,-7142,-6679,-5942,-4959,-3780,-2441,-1003,473,1928,3311, 4542,5588,6391,6922,7162,7096,6722,6070,5144,4001,2679,1237,-255,-1740,-3157,-4437,-5531,-6395,-6998,-7305, -7302,-6993,-6401,-5544,-4461,-3200,-1808,-350,1128,2561,3886,5044,5992,6683,7086,7188,6993,6504,5744,4735, 3521,2157,698,-792,-2242,-3589,-4779,-5758,-6488,-6950,-7110,-6972,-6540,-5819,-4852,-3682,-2350,-916,561,2025, 3416,4681,5768,6616,7202,7486,7466,7137,6515,5632,4528,3236,1827,349,-1131,-2549,-3850,-4970,-5864,-6501, -6845,-6886,-6623,-6063,-5237,-4171,-2911,-1516,-51,1435,2870,4200,5367,6326,7046,7487,7628,7467,7004,6254, 5253,4040,2682,1226,-263,-1717,-3084,-4313,-5349,-6142,-6664,-6879,-6785,-6382,-5696,-4760,-3612,-2308,-889,580, 2042,3436,4700,5780,6630,7211,7505,7500,7195,6598,5740,4648,3362,1939,451,-1043,-2485,-3812,-4962,-5902, -6579,-6977,-7067,-6851,-6339,-5559,-4537,-3323,-1972,-536,927,2362,3717,4916,5917,6673,7149,7323,7183,6744, 6033,5063,3886,2545,1094,-396,-1874,-3266,-4512,-5565,-6371,-6907,-7153,-7092,-6734,-6083,-5174,-4039,-2736,-1311, 162,1630,3031,4311,5422,6315,6950,7301,7354,7095,6540,5717,4657,3416,2031,571,-905,-2345,-3684,-4858, -5821,-6521,-6931,-7029,-6817,-6308,-5528,-4507,-3293,-1928,-482,995,2447,3809,5028,6048,6836,7353,7575,7486, 7097,6416,5474,4305,2971,1526,27,-1458,-2861,-4134,-5219,-6069,-6643,-6924,-6893,-6563,-5939,-5064,-3970,-2711, -1334,104,1549,2943,4227,5353,6262,6922,7294,7375,7150,6630,5836,4801,3560,2167,683,-826,-2296,-3660, -4865,-5847,-6578,-7024,-7177,-7024,-6576,-5857,-4892,-3717,-2386,-956,511,1959,3328,4559,5594,6402,6935,7180, 7115,6749,6092,5172,4025,2694,1243,-265,-1773,-3210,-4508,-5619,-6492,-7099,-7405,-7411,-7113,-6529,-5677,-4599, -3345,-1960,-505,956,2368,3674,4820,5760,6448,6854,6964,6767,6269,5492,4470,3249,1883,425,-1061,-2517, -3883,-5091,-6099,-6859,-7330,-7507,-7374,-6945,-6233,-5278,-4121,-2797,-1370,102,1567,2959,4216,5286,6122,6694, 6969,6941,6606,5991,5103,3991,2701,1281,-199,-1678,-3097,-4386,-5501,-6391,-7023,-7359,-7397,-7125,-6564,-5728, -4664,-3413,-2027,-565,911,2350,3682,4858,5831,6559,7006,7159,7011,6566,5839,4861,3669,2313,848,-658, -2136,-3522,-4761,-5797,-6582,-7091,-7303,-7209,-6814,-6138,-5205,-4060,-2744,-1323,147,1603,2988,4252,5329,6183, 6775,7079,7079,6776,6181,5321,4234,2960,1555,74,-1417,-2861,-4189,-5346,-6282,-6955,-7335,-7416,-7199,-6686, -5911,-4892,-3677,-2314,-852,627,2074,3426,4616,5602,6348,6820,6995,6868,6446,5733,4765,3582,2229,773, -725,-2208,-3607,-4861,-5922,-6743,-7286,-7534,-7479,-7123,-6484,-5590,-4475,-3188,-1783,-307,1161,2577,3869,4984, 5873,6502,6848,6892,6633,6081,5256,4194,2938,1538,65,-1421,-2863,-4196,-5357,-6312,-7005,-7413,-7518,-7315, -6815,-6046,-5035,-3834,-2483,-1037,441,1904,3287,4519,5557,6351,6861,7072,6980,6591,5921,4994,3856,2542, 1111,-374,-1852,-3252,-4517,-5593,-6436,-7009,-7295,-7274,-6952,-6339,-5461,-4358,-3077,-1670,-203,1260,2669,3969, 5100,6021,6688,7078,7158,6929,6395,5583,4534,3286,1895,425,-1064,-2523,-3880,-5080,-6068,-6806,-7256,-7402, -7242,-6784,-6046,-5064,-3870,-2517,-1069,416,1881,3256,4486,5523,6324,6865,7119,7070,6728,6096,5202,4077, 2786,1367,-114,-1597,-3016,-4313,-5426,-6311,-6924,-7240,-7243,-6941,-6345,-5487,-4403,-3140,-1751,-287,1188,2616, 3939,5097,6042,6736,7145,7259,7069,6583,5822,4814,3598,2226,754,-739,-2209,-3581,-4790,-5791,-6549,-7018, -7195,-7070,-6644,-5937,-4986,-3819,-2499,-1073,396,1851,3235,4491,5560,6411,6992,7286,7266,6944,6332,5450, 4335,3045,1625,142,-1342,-2770,-4070,-5194,-6095,-6725,-7062,-7102,-6837,-6288,-5469,-4416,-3179,-1800,-337,1138, 2580,3917,5099,6076,6805,7253,7410,7257,6803,6070,5081,3884,2529,1067,-424,-1894,-3278,-4511,-5549,-6338, -6846,-7062,-6966,-6573,-5893,-4964,-3822,-2509,-1081,392,1857,3253,4516,5595,6446,7035,7340,7347,7052,6469, 5615,4529,3253,1848,375,-1106,-2533,-3842,-4984,-5905,-6577,-6962,-7047,-6821,-6300,-5503,-4465,-3240,-1873,-423, 1047,2485,3828,5027,6022,6776,7253,7426,7299,6870,6158,5196,4025,2686,1234,-264,-1746,-3149,-4413,-5478, -6304,-6856,-7111,-7061,-6705,-6058,-5149,-4018,-2715,-1301,166,1628,3023,4302,5406,6295,6930,7275,7316,7055, 6502,5680,4626,3379,1995,530,-958,-2406,-3751,-4926,-5885,-6588,-7006,-7123,-6934,-6448,-5694,-4696,-3494,-2144, -692,791,2248,3622,4844,5873,6659,7168,7383,7297,6903,6229,5294,4146,2826,1394,-96,-1570,-2981,-4254, -5344,-6195,-6779,-7066,-7050,-6728,-6117,-5242,-4149,-2877,-1479,-23,1445,2857,4158,5295,6214,6876,7251,7326, 7091,6560,5756,4708,3465,2075,600,-897,-2360,-3726,-4928,-5924,-6664,-7123,-7277,-7123,-6668,-5933,-4949,-3758, -2412,-973,496,1948,3313,4538,5583,6385,6927,7171,7110,6754,6104,5192,4055,2738,1298,-197,-1692,-3112, -4404,-5511,-6384,-6994,-7317,-7340,-7063,-6489,-5643,-4568,-3308,-1915,-457,1005,2419,3726,4877,5821,6519,6943, 7066,6877,6385,5613,4594,3376,2004,545,-953,-2419,-3802,-5030,-6051,-6822,-7308,-7487,-7361,-6935,-6237,-5290, -4137,-2824,-1413,56,1508,2888,4137,5203,6045,6622,6912,6903,6589,5981,5107,3994,2699,1273,-217,-1710, -3140,-4448,-5575,-6479,-7118,-7464,-7505,-7245,-6691,-5877,-4830,-3602,-2232,-780,698,2139,3482,4668,5648,6374, 6820,6972,6819,6370,5646,4668,3483,2131,673,-821,-2288,-3668,-4892,-5915,-6701,-7211,-7430,-7343,-6961,-6290, -5361,-4212,-2898,-1466,14,1488,2891,4169,5264,6139,6752,7077,7100,6816,6235,5383,4292,3016,1601,116, -1383,-2829,-4159,-5314,-6251,-6921,-7304,-7384,-7158,-6642,-5854,-4829,-3610,-2244,-789,689,2138,3482,4679,5671, 6426,6908,7103,6990,6577,5875,4917,3735,2387,930,-564,-2044,-3437,-4690,-5747,-6561,-7103,-7351,-7291,-6935, -6291,-5392,-4272,-2976,-1561,-91,1381,2780,4056,5162,6050,6687,7042,7108,6870,6334,5521,4460,3201,1798, 316,-1182,-2631,-3964,-5138,-6093,-6798,-7214,-7333,-7145,-6664,-5898,-4894,-3686,-2332,-885,592,2042,3406,4629, 5654,6449,6970,7198,7121,6740,6070,5143,3991,2670,1235,-252,-1731,-3136,-4408,-5485,-6333,-6909,-7194,-7175, -6851,-6239,-5362,-4262,-2976,-1572,-99,1377,2807,4122,5268,6197,6876,7264,7352,7131,6615,5822,4789,3557, 2181,711,-782,-2246,-3607,-4807,-5797,-6533,-6981,-7130,-6974,-6521,-5791,-4814,-3627,-2288,-839,644,2113,3496, 4739,5796,6616,7162,7414,7364,7007,6365,5462,4339,3044,1626,146,-1332,-2752,-4047,-5166,-6056,-6675,-7000, -7018,-6728,-6149,-5302,-4229,-2972,-1579,-113,1367,2804,4129,5289,6234,6924,7338,7450,7264,6789,6033,5034, 3824,2457,991,-511,-1988,-3372,-4603,-5630,-6405,-6900,-7088,-6969,-6549,-5845,-4891,-3732,-2411,-988,481,1936, 3317,4564,5629,6463,7037,7321,7303,6981,6367,5483,4374,3072,1644,144,-1355,-2796,-4114,-5256,-6169,-6818, -7180,-7240,-6995,-6455,-5645,-4600,-3362,-1989,-534,939,2367,3697,4873,5844,6571,7024,7176,7030,6582,5861, 4884,3703,2360,911,-583,-2057,-3450,-4698,-5746,-6548,-7072,-7294,-7214,-6826,-6153,-5219,-4066,-2746,-1317,163, 1625,3019,4289,5375,6248,6865,7197,7233,6962,6394,5551,4460,3184,1770,280,-1218,-2663,-3997,-5155,-6095, -6779,-7171,-7261,-7042,-6523,-5739,-4710,-3490,-2129,-683,790,2231,3587,4792,5805,6570,7061,7255,7143,6730, 6035,5082,3916,2581,1140,-347,-1822,-3218,-4471,-5533,-6359,-6917,-7182,-7142,-6797,-6166,-5269,-4148,-2846,-1425, 47,1524,2934,4222,5338,6237,6874,7229,7280,7026,6479,5660,4599,3345,1944,462,-1042,-2499,-3851,-5034, -6000,-6707,-7132,-7253,-7069,-6593,-5841,-4847,-3653,-2307,-872,596,2038,3387,4597,5615,6393,6906,7126,7040, 6656,5983,5051,3898,2580,1152,-330,-1798,-3195,-4464,-5548,-6403,-6991,-7291,-7285,-6976,-6376,-5512,-4417,-3143, -1741,-265,1217,2638,3947,5085,6007,6677,7066,7158,6950,6441,5650,4610,3367,1973,492,-1005,-2464,-3820, -5024,-6017,-6770,-7234,-7395,-7243,-6785,-6040,-5052,-3853,-2509,-1067,411,1869,3246,4492,5544,6367,6920,7184, 7145,6807,6185,5301,4188,2897,1479,-4,-1482,-2898,-4186,-5286,-6158,-6765,-7081,-7095,-6807,-6228,-5384,-4300, -3034,-1633,-159,1322,2755,4078,5242,6198,6912,7348,7490,7324,6860,6112,5116,3909,2548,1084,-414,-1889, -3270,-4498,-5519,-6291,-6777,-6967,-6844,-6424,-5725,-4776,-3616,-2298,-865,605,2069,3451,4704,5776,6614,7189, 7478,7461,7140,6529,5646,4535,3234,1804,310,-1188,-2632,-3949,-5091,-6004,-6653,-7016,-7073,-6818,-6275,-5462, -4419,-3183,-1814,-368,1100,2530,3858,5037,6010,6738,7187,7342,7186,6732,5990,4993,3783,2413,944,-559, -2038,-3425,-4668,-5713,-6519,-7053,-7292,-7224,-6852,-6190,-5273,-4137,-2834,-1416,52,1515,2912,4185,5282,6153, 6766,7086,7105,6824,6246,5398,4317,3045,1639,152,-1346,-2797,-4130,-5299,-6238,-6923,-7316,-7405,-7192,-6682, -5900,-4883,-3668,-2312,-862,615,2064,3421,4632,5642,6411,6901,7093,6986,6574,5883,4938,3779,2457,1021, -462,-1934,-3333,-4589,-5654,-6478,-7028,-7279,-7229,-6875,-6243,-5353,-4241,-2957,-1548,-70,1403,2825,4128,5258, 6167,6822,7192,7261,7023,6490,5678,4623,3373,1983,510,-973,-2415,-3753,-4929,-5902,-6617,-7051,-7183,-7003, -6525,-5766,-4761,-3556,-2203,-757,725,2179,3548,4766,5789,6568,7077,7291,7205,6823,6163,5240,4097,2774, 1325,-183,-1690,-3121,-4410,-5507,-6364,-6950,-7245,-7239,-6935,-6344,-5490,-4411,-3149,-1755,-294,1175,2593,3898, 5035,5962,6625,7007,7081,6851,6326,5519,4475,3235,1845,368,-1134,-2605,-3978,-5189,-6196,-6950,-7417,-7580, -7436,-6989,-6262,-5292,-4122,-2797,-1381,80,1516,2872,4109,5161,5988,6551,6823,6791,6451,5816,4920,3789, 2482,1055,-433,-1921,-3346,-4651,-5772,-6661,-7285,-7613,-7634,-7353,-6775,-5933,-4857,-3599,-2202,-728,762,2204, 3542,4715,5680,6393,6830,6970,6808,6342,5596,4598,3390,2026,565,-923,-2379,-3748,-4962,-5976,-6744,-7237, -7425,-7306,-6883,-6172,-5212,-4036,-2702,-1262,222,1691,3093,4361,5446,6305,6897,7202,7197,6891,6292,5428, 4328,3054,1648,166,-1315,-2743,-4056,-5191,-6107,-6760,-7126,-7195,-6956,-6426,-5627,-4586,-3358,-1986,-529,945, 2385,3726,4914,5901,6639,7098,7251,7094,6640,5902,4918,3732,2387,937,-552,-2031,-3430,-4692,-5756,-6578, -7113,-7352,-7280,-6905,-6243,-5330,-4201,-2903,-1489,-27,1435,2828,4096,5186,6054,6661,6984,7009,6728,6157, 5314,4237,2967,1564,86,-1410,-2860,-4200,-5374,-6332,-7032,-7445,-7551,-7347,-6851,-6081,-5071,-3866,-2516,-1071, 401,1848,3198,4401,5405,6168,6653,6842,6729,6316,5615,4661,3489,2147,694,-799,-2280,-3672,-4932,-5995, -6825,-7384,-7652,-7614,-7275,-6639,-5745,-4625,-3330,-1916,-439,1035,2454,3759,4894,5807,6471,6843,6916,6683, 6154,5357,4321,3084,1711,244,-1242,-2690,-4032,-5210,-6172,-6880,-7301,-7422,-7238,-6759,-6005,-5001,-3795,-2438, -984,500,1958,3325,4551,5584,6383,6910,7148,7086,6720,6070,5156,4018,2710,1284,-201,-1679,-3090,-4375, -5470,-6335,-6928,-7221,-7210,-6891,-6284,-5413,-4318,-3044,-1645,-176,1297,2724,4036,5186,6124,6808,7212,7315, 7110,6609,5829,4803,3579,2209,750,-736,-2195,-3562,-4772,-5781,-6534,-7002,-7167,-7018,-6570,-5847,-4874,-3706, -2379,-948,526,1985,3370,4617,5678,6500,7057,7316,7278,6939,6311,5418,4299,2994,1563,66,-1425,-2857, -4151,-5268,-6151,-6769,-7095,-7114,-6832,-6256,-5411,-4339,-3082,-1689,-228,1247,2677,4004,5173,6129,6840,7266, 7392,7212,6732,5979,4989,3799,2460,1030,-432,-1879,-3233,-4449,-5467,-6240,-6744,-6943,-6836,-6427,-5733,-4777, -3604,-2264,-824,665,2139,3532,4797,5879,6737,7336,7646,7653,7354,6756,5890,4793,3509,2097,617,-873, -2308,-3630,-4778,-5700,-6356,-6721,-6781,-6539,-6004,-5202,-4167,-2942,-1570,-109,1377,2826,4178,5368,6351,7088, 7545,7712,7582,7152,6443,5475,4292,2943,1485,-9,-1478,-2867,-4107,-5151,-5960,-6497,-6735,-6663,-6286,-5628, -4718,-3591,-2301,-900,557,2020,3424,4710,5821,6714,7340,7678,7711,7440,6876,6039,4957,3684,2267,776, -728,-2174,-3501,-4655,-5600,-6287,-6700,-6810,-6619,-6128,-5360,-4346,-3139,-1784,-348,1115,2546,3883,5078,6084, 6845,7337,7528,7414,6991,6289,5331,4160,2818,1366,-132,-1618,-3027,-4300,-5377,-6210,-6767,-7030,-6986,-6645, -6018,-5134,-4031,-2751,-1346,121,1594,3010,4304,5427,6332,6980,7348,7411,7171,6637,5823,4766,3513,2117, 639,-860,-2317,-3668,-4856,-5832,-6556,-6990,-7125,-6952,-6485,-5737,-4754,-3568,-2233,-804,665,2114,3478,4707, 5740,6537,7060,7287,7209,6827,6153,5225,4075,2754,1318,-174,-1659,-3074,-4363,-5462,-6331,-6928,-7238,-7242, -6947,-6358,-5507,-4429,-3165,-1777,-317,1148,2569,3876,5019,5949,6630,7027,7123,6915,6406,5627,4600,3370, 1993,518,-983,-2452,-3826,-5037,-6043,-6800,-7272,-7448,-7317,-6894,-6197,-5247,-4088,-2777,-1352,117,1573,2956, 4205,5265,6097,6651,6915,6874,6530,5898,5004,3887,2591,1167,-317,-1804,-3228,-4522,-5639,-6525,-7142,-7473, -7502,-7232,-6671,-5841,-4782,-3530,-2133,-657,828,2277,3614,4792,5755,6470,6906,7052,6890,6433,5690,4695, 3489,2126,662,-828,-2292,-3664,-4883,-5903,-6675,-7173,-7371,-7257,-6849,-6150,-5201,-4037,-2707,-1269,220,1702, 3110,4384,5476,6335,6933,7243,7248,6955,6367,5506,4415,3129,1713,229,-1258,-2685,-3992,-5131,-6040,-6700, -7065,-7127,-6882,-6337,-5514,-4463,-3222,-1849,-403,1060,2477,3808,4991,5985,6737,7221,7409,7285,6859,6147, 5180,3999,2653,1197,-302,-1784,-3189,-4443,-5498,-6310,-6846,-7083,-7018,-6652,-6001,-5093,-3967,-2665,-1255,211, 1673,3072,4348,5451,6338,6970,7311,7352,7082,6519,5683,4612,3355,1966,488,-1003,-2452,-3799,-4979,-5950, -6661,-7077,-7186,-6984,-6478,-5699,-4675,-3459,-2098,-644,833,2278,3634,4840,5852,6623,7122,7330,7238,6839, 6152,5203,4029,2682,1219,-292,-1783,-3199,-4472,-5552,-6396,-6969,-7244,-7213,-6876,-6255,-5373,-4272,-2998,-1604, -145,1317,2731,4033,5171,6097,6761,7144,7223,6996,6474,5676,4632,3395,2001,531,-966,-2428,-3783,-4975, -5956,-6679,-7115,-7252,-7077,-6599,-5840,-4833,-3625,-2257,-807,677,2128,3490,4709,5738,6528,7059,7297,7234, 6867,6212,5290,4151,2837,1405,-78,-1563,-2975,-4260,-5364,-6234,-6841,-7154,-7163,-6865,-6271,-5413,-4322,-3048, -1649,-185,1286,2699,4000,5139,6068,6749,7159,7265,7069,6572,5788,4756,3518,2134,664,-833,-2298,-3657, -4868,-5866,-6625,-7098,-7272,-7145,-6721,-6015,-5067,-3906,-2588,-1165,314,1766,3148,4395,5452,6276,6831,7094, 7051,6705,6069,5170,4044,2738,1309,-177,-1658,-3082,-4383,-5503,-6403,-7041,-7388,-7430,-7168,-6603,-5778,-4721, -3480,-2107,-664,795,2220,3542,4709,5676,6398,6834,6971,6797,6329,5578,4586,3387,2042,595,-887,-2358, -3741,-4976,-6017,-6810,-7319,-7528,-7430,-7041,-6368,-5439,-4294,-2982,-1553,-70,1397,2799,4062,5149,6007,6605, 6916,6924,6627,6032,5164,4068,2787,1381,-94,-1577,-3009,-4325,-5482,-6409,-7071,-7441,-7507,-7261,-6724,-5921, -4882,-3649,-2271,-802,686,2143,3491,4686,5666,6405,6870,7051,6922,6504,5800,4835,3651,2298,837,-657, -2134,-3511,-4748,-5786,-6587,-7116,-7350,-7278,-6904,-6243,-5327,-4191,-2891,-1474,2,1476,2887,4180,5303,6197, 6832,7178,7223,6967,6418,5601,4551,3309,1921,460,-1021,-2449,-3769,-4930,-5869,-6562,-6967,-7079,-6885,-6396, -5624,-4617,-3399,-2033,-578,909,2366,3737,4959,5980,6757,7260,7460,7355,6954,6267,5334,4178,2851,1408, -98,-1595,-3022,-4311,-5399,-6247,-6815,-7089,-7058,-6733,-6125,-5259,-4167,-2895,-1507,-46,1411,2811,4092,5206, 6106,6756,7124,7199,6974,6450,5652,4612,3376,1993,518,-978,-2445,-3804,-5006,-5995,-6727,-7167,-7307,-7141, -6678,-5941,-4957,-3778,-2438,-1001,473,1930,3309,4541,5586,6388,6920,7160,7092,6719,6066,5142,3998,2676, 1235,-256,-1740,-3158,-4437,-5532,-6396,-6998,-7304,-7301,9,71,-587,-858,-905,-815,-89,748,1389,1883, 2649,3421,3768,3509,2988,2379,1492,-20,-1840,-3592,-5303,-7270,-9431,-11434,-12868,-13948,-14838,-15228,-14675,-13365, -11635,-9662,-7239,-4387,-1443,1069,3219,5375,7404,8820,9597,10023,10217,9960,9041,7373,5408,3387,1006,-1692, -4261,-6506,-8624,-10577,-12199,-13361,-14018,-14269,-14138,-13467,-12056,-10009,-7663,-5129,-2283,936,4175,7012,9471,11671, 13464,14641,15073,14831,14053,12793,10931,8460,5654,2667,-412,-3441,-6153,-8407,-10082,-11116,-11467,-11155,-10270,-8947, -7280,-5345,-3086,-637,1900,4386,6701,8769,10704,12327,13473,14179,14583,14416,13629,12366,10822,8899,6612,4054, 1515,-878,-3032,-4890,-6339,-7432,-7939,-7776,-6988,-5953,-4797,-3362,-1626,2,1419,2839,4399,5904,7351,8654, 10096,11171,11569,11666,11501,10930,10029,9005,7548,5679,4076,2592,933,-635,-1956,-3195,-4347,-5051,-5848,-6395, -6384,-6474,-6525,-5455,-3994,-2985,-1674,-11,1503,2918,4202,5233,5774,5956,5948,5692,5168,4127,2950,1902, 500,-1047,-2541,-4224,-5805,-6881,-7553,-7970,-8049,-7954,-7534,-6832,-6129,-5561,-4645,-3092,-1504,-54,1576,2966, 3881,4469,4961,5160,4942,4673,4520,4082,3378,2468,1019,-845,-2865,-4900,-6840,-8699,-10514,-12011,-12716,-12619, -12326,-11694,-10532,-9100,-7564,-5710,-3436,-1062,1108,3213,5299,7101,8568,9802,10599,10874,10853,10757,10383,9513, 8199,6697,4928,2802,431,-1885,-3823,-5451,-6882,-7723,-8018,-8176,-8107,-7458,-6257,-4779,-3083,-1165,902,2985, 5028,6908,8478,9765,10787,11442,11669,11424,10862,10007,8708,6899,4808,2741,656,-1518,-3414,-4803,-5829,-6598, -6950,-6912,-6497,-5726,-4712,-3585,-2235,-713,873,2450,4161,5968,7658,9012,9862,10386,10833,10834,10223,9326, 8305,6779,4851,2859,918,-1179,-3151,-4953,-6611,-7965,-8960,-9805,-10202,-10089,-9648,-8744,-7103,-5489,-4091,-2355, -469,977,2219,3519,4712,5785,6738,7157,7377,7552,7206,6129,4763,3115,1034,-1308,-3482,-5423,-7066,-8195, -8736,-8777,-8733,-8622,-8153,-7634,-7165,-6524,-5421,-3960,-2589,-1272,379,2473,4159,4987,5719,6887,7476,6902, 5981,5364,4279,2159,-255,-2274,-4217,-6322,-8336,-9975,-11123,-11761,-12068,-11998,-11334,-10213,-8834,-7254,-5484,-3577, -1564,539,2298,3732,5398,7081,8179,8775,9295,9728,9499,8549,7313,5831,3971,1587,-1019,-3329,-5236,-6950, -8523,-9594,-9812,-9490,-9082,-8410,-7313,-5876,-4227,-2351,-442,1425,3403,5358,6959,8376,9750,10594,10864,10838, 10483,9501,8157,6685,4825,2661,700,-1034,-2917,-4726,-6013,-6883,-7568,-7944,-7815,-7206,-6219,-5194,-4095,-2586, -723,858,2230,3925,5724,6916,7712,8487,8908,8718,8139,7328,6159,4667,2994,1047,-1110,-3152,-4930,-6482, -7796,-8841,-9534,-9721,-9503,-9182,-8723,-7791,-6462,-5295,-4185,-2728,-1133,277,1617,3083,4567,5819,6703,7193, 7372,7317,6728,5533,4098,2703,1127,-640,-2423,-3925,-5161,-6163,-6959,-7430,-7547,-7253,-6703,-5950,-4914,-3554, -2041,-424,1270,3007,4681,6214,7521,8473,9138,9690,9869,9419,8625,7797,6626,4905,2964,1191,-628,-2603, -4428,-5904,-7066,-7941,-8559,-8747,-8341,-7569,-6647,-5488,-3910,-2150,-445,1300,3108,4696,6131,7550,8663,9304, 9713,9919,9674,8913,7896,6668,5183,3503,1742,-71,-1725,-3187,-4591,-5811,-6522,-6844,-7054,-7004,-6451,-5631, -4732,-3617,-2333,-1012,441,1855,3034,4132,5240,6062,6414,6629,6660,6236,5463,4557,3362,1880,366,-1158, -2768,-4327,-5584,-6578,-7419,-7954,-8133,-7937,-7377,-6560,-5621,-4345,-2779,-1250,182,1763,3397,4725,5733,6703, 7525,7919,7949,7670,7078,6190,4952,3366,1567,-262,-2047,-3846,-5551,-7008,-8146,-8989,-9484,-9607,-9382,-8734, -7726,-6487,-5082,-3438,-1586,255,1981,3738,5443,6896,8004,8812,9302,9484,9290,8601,7556,6379,5000,3236, 1333,-395,-2024,-3649,-5062,-6062,-6689,-6996,-6941,-6557,-5862,-4773,-3473,-2057,-459,1284,2933,4482,5950,7201, 8154,8957,9517,9618,9385,8998,8188,6881,5348,3736,1950,31,-1840,-3530,-4955,-6056,-6907,-7467,-7506,-7067, -6446,-5555,-4264,-2726,-1159,458,2163,3797,5274,6650,7766,8567,9156,9491,9397,8911,8155,7086,5702,4062, 2276,363,-1528,-3271,-4922,-6384,-7371,-8004,-8355,-8352,-7883,-7025,-5927,-4647,-3141,-1448,333,2070,3703,5247, 6732,7935,8769,9325,9613,9532,9002,8106,6926,5430,3683,1750,-238,-2195,-4003,-5569,-6900,-7909,-8463,-8589, -8407,-7898,-7014,-5807,-4356,-2783,-1164,550,2294,3896,5206,6380,7409,8084,8324,8266,7895,7145,5983,4518, 2814,954,-960,-2894,-4801,-6431,-7756,-8817,-9596,-9882,-9802,-9400,-8632,-7583,-6373,-4998,-3422,-1867,-385,1130, 2575,3777,4757,5513,5965,6077,5891,5278,4275,3048,1612,-175,-2097,-3919,-5696,-7465,-8990,-10183,-11054,-11593, -11728,-11532,-10956,-10034,-8866,-7547,-6030,-4327,-2634,-999,608,2074,3334,4381,5141,5549,5622,5385,4802,3773, 2463,964,-730,-2579,-4464,-6210,-7770,-9116,-10168,-10874,-11142,-11011,-10567,-9810,-8688,-7265,-5703,-4060,-2317,-531, 1167,2734,4138,5323,6265,6946,7238,7176,6785,6091,5021,3641,2072,422,-1329,-3049,-4618,-5991,-7105,-7850, -8262,-8343,-7997,-7236,-6208,-4982,-3461,-1747,-21,1718,3499,5149,6741,8151,9265,10114,10721,10983,10794,10231, 9398,8218,6719,5050,3264,1403,-357,-1970,-3399,-4566,-5297,-5675,-5732,-5414,-4697,-3727,-2539,-1132,354,1919, 3549,5114,6523,7818,8964,9820,10312,10536,10474,9990,9143,7964,6467,4769,2915,977,-981,-2731,-4235,-5538, -6553,-7137,-7358,-7242,-6773,-5975,-4925,-3607,-2117,-580,1006,2615,4165,5546,6738,7762,8489,8907,8960,8656, 7972,6978,5659,4048,2240,379,-1491,-3333,-5045,-6465,-7595,-8405,-8853,-8918,-8595,-7946,-7003,-5817,-4447,-2896, -1248,367,1970,3536,4943,6111,7029,7666,7981,7929,7515,6725,5578,4206,2594,766,-1126,-2931,-4668,-6260, -7570,-8528,-9134,-9365,-9191,-8700,-7880,-6737,-5392,-3902,-2256,-496,1225,2873,4429,5830,6960,7852,8448,8671, 8572,8156,7356,6190,4797,3246,1513,-256,-1929,-3483,-4836,-5869,-6603,-6991,-6983,-6579,-5908,-4918,-3624,-2156, -586,1087,2792,4444,5985,7429,8612,9526,10222,10550,10456,10009,9211,8062,6577,4865,2995,1040,-888,-2744, -4418,-5850,-6905,-7649,-8030,-8023,-7618,-6914,-5947,-4754,-3377,-1901,-334,1235,2708,4113,5381,6379,7122,7571, 7706,7485,6871,5940,4717,3191,1495,-366,-2245,-4064,-5744,-7192,-8399,-9255,-9720,-9856,-9662,-9123,-8262,-7157, -5857,-4388,-2831,-1216,383,1906,3237,4431,5402,6054,6346,6353,6003,5263,4230,2890,1318,-404,-2181,-3957, -5688,-7190,-8428,-9444,-10107,-10364,-10282,-9852,-9090,-8045,-6763,-5261,-3615,-1933,-249,1456,3033,4396,5568,6489, 7079,7336,7230,6743,5922,4801,3427,1793,73,-1652,-3383,-5013,-6389,-7504,-8313,-8764,-8850,-8556,-7917,-6970, -5752,-4344,-2737,-1017,731,2460,4133,5676,7022,8116,8919,9385,9521,9310,8710,7745,6528,5068,3376,1590, -210,-1922,-3473,-4804,-5848,-6529,-6873,-6807,-6423,-5694,-4642,-3340,-1864,-241,1460,3188,4847,6413,7816,8992, 9910,10546,10826,10744,10314,9530,8391,6962,5300,3539,1668,-179,-1903,-3461,-4754,-5723,-6367,-6659,-6533,-6078, -5332,-4307,-3021,-1571,-43,1558,3146,4644,6025,7241,8195,8885,9288,9346,9026,8347,7378,6063,4499,2773, 957,-915,-2669,-4291,-5719,-6859,-7625,-8032,-8103,-7797,-7111,-6199,-5019,-3634,-2147,-560,1096,2664,4125,5466, 6605,7412,7950,8175,8057,7560,6712,5550,4093,2412,558,-1384,-3318,-5125,-6738,-8100,-9221,-9888,-10245,-10219, -9821,-9095,-8090,-6813,-5366,-3808,-2189,-572,993,2400,3640,4665,5420,5848,5945,5663,5049,4084,2804,1268, -429,-2241,-4063,-5853,-7491,-8876,-9998,-10795,-11229,-11266,-10937,-10284,-9315,-8091,-6663,-5116,-3455,-1799,-176,1356, 2743,3928,4860,5498,5840,5815,5460,4726,3688,2413,876,-823,-2573,-4298,-5945,-7430,-8642,-9537,-10099,-10319, -10127,-9621,-8787,-7651,-6301,-4804,-3131,-1415,266,1898,3444,4796,5905,6769,7330,7557,7424,6972,6120,4968, 3555,1939,173,-1632,-3381,-4993,-6425,-7540,-8365,-8831,-8916,-8638,-8057,-7127,-5927,-4528,-2997,-1351,323,1967, 3482,4891,6099,7064,7771,8131,8173,7871,7209,6226,4950,3451,1797,44,-1686,-3343,-4840,-6093,-7041,-7660, -7925,-7813,-7341,-6546,-5469,-4169,-2658,-1044,644,2325,3957,5479,6848,7975,8860,9418,9667,9563,9098,8300, 7217,5825,4243,2531,773,-964,-2586,-4003,-5170,-6031,-6532,-6676,-6484,-5928,-5089,-3975,-2652,-1171,402,2036, 3645,5175,6562,7768,8777,9455,9840,9909,9617,8975,8013,6742,5239,3562,1781,-26,-1765,-3321,-4667,-5726, -6455,-6786,-6801,-6418,-5694,-4685,-3445,-1992,-393,1240,2883,4523,6026,7352,8480,9378,9963,10226,10140,9700, 8912,7821,6465,4864,3150,1405,-344,-2011,-3446,-4649,-5550,-6120,-6321,-6136,-5628,-4816,-3721,-2434,-972,589, 2189,3768,5308,6721,7932,8927,9636,10017,10077,9802,9147,8168,6900,5386,3662,1855,22,-1735,-3349,-4757, -5860,-6638,-7064,-7142,-6873,-6258,-5355,-4196,-2851,-1351,223,1836,3384,4860,6193,7298,8168,8775,9040,8953, 8541,7765,6671,5303,3690,1974,133,-1660,-3356,-4891,-6165,-7115,-7772,-8032,-7930,-7483,-6737,-5713,-4433,-3006, -1491,111,1681,3185,4559,5761,6725,7447,7845,7909,7616,6985,6053,4776,3250,1572,-214,-2065,-3824,-5472, -6930,-8093,-8909,-9380,-9492,-9202,-8575,-7678,-6515,-5158,-3663,-2068,-434,1159,2649,4040,5193,6081,6691,7004, 6977,6581,5868,4830,3505,1956,230,-1584,-3373,-5089,-6616,-7914,-8909,-9564,-9879,-9839,-9431,-8714,-7728,-6479, -5075,-3541,-1962,-380,1159,2571,3809,4868,5659,6164,6341,6182,5675,4824,3671,2268,647,-1064,-2814,-4534, -6123,-7485,-8606,-9383,-9830,-9875,-9582,-8962,-8025,-6829,-5455,-3901,-2277,-645,979,2512,3900,5106,6071,6736, 7108,7110,6782,6073,5055,3783,2266,543,-1206,-2978,-4673,-6213,-7478,-8476,-9142,-9441,-9371,-8990,-8264,-7259, -6033,-4635,-3070,-1471,127,1705,3162,4457,5538,6368,6916,7120,7001,6529,5705,4585,3198,1587,-154,-1947, -3701,-5324,-6758,-7932,-8817,-9348,-9491,-9294,-8781,-7919,-6793,-5455,-3965,-2348,-701,919,2449,3877,5095,6109, 6838,7250,7323,7083,6482,5529,4310,2855,1225,-509,-2234,-3885,-5417,-6697,-7703,-8377,-8698,-8656,-8241,-7506, -6483,-5231,-3782,-2220,-577,1066,2663,4179,5534,6646,7532,8109,8375,8291,7866,7125,6063,4726,3201,1533, -193,-1898,-3478,-4868,-6004,-6834,-7304,-7437,-7196,-6619,-5727,-4582,-3219,-1690,-60,1626,3291,4891,6321,7614, 8693,9455,9942,10105,9918,9370,8481,7295,5839,4201,2467,702,-1005,-2538,-3886,-4954,-5689,-6052,-6105,-5766, -5104,-4154,-2954,-1538,0,1637,3236,4848,6338,7677,8812,9696,10292,10580,10512,10079,9293,8216,6824,5219, 3506,1707,-89,-1775,-3265,-4535,-5491,-6117,-6383,-6283,-5851,-5117,-4105,-2867,-1445,57,1624,3188,4687,6078, 7285,8251,8969,9357,9427,9170,8553,7594,6351,4852,3155,1347,-514,-2293,-3943,-5371,-6531,-7367,-7861,-8005, -7796,-7242,-6380,-5292,-3989,-2508,-968,619,2150,3610,4938,6042,6919,7542,7843,7793,7395,6658,5624,4296, 2750,1060,-716,-2469,-4140,-5646,-6910,-7852,-8506,-8776,-8675,-8229,-7477,-6450,-5150,-3689,-2142,-489,1127,2692, 4141,5401,6456,7271,7771,7940,7757,7257,6402,5252,3843,2275,555,-1181,-2869,-4434,-5834,-6971,-7757,-8238, -8328,-8080,-7473,-6603,-5439,-4093,-2588,-971,686,2293,3850,5273,6503,7472,8195,8593,8668,8369,7754,6823, 5576,4109,2479,739,-987,-2648,-4144,-5408,-6370,-7014,-7327,-7261,-6835,-6118,-5099,-3853,-2425,-880,724,2325, 3882,5314,6582,7645,8436,8947,9126,8956,8466,7609,6429,5028,3393,1634,-185,-1970,-3641,-5122,-6337,-7263, -7849,-8074,-7933,-7473,-6687,-5634,-4397,-2965,-1450,79,1625,3081,4401,5549,6484,7130,7476,7478,7146,6449, 5427,4156,2623,912,-867,-2669,-4419,-6020,-7374,-8452,-9205,-9626,-9643,-9356,-8718,-7807,-6652,-5316,-3834,-2278, -708,818,2251,3523,4593,5429,5964,6166,6065,5596,4788,3687,2294,694,-1030,-2820,-4590,-6233,-7700,-8906, -9813,-10373,-10573,-10427,-9937,-9115,-8047,-6749,-5271,-3695,-2076,-472,1039,2478,3694,4708,5451,5889,6000,5775, 5190,4302,3109,1682,68,-1637,-3362,-5017,-6557,-7862,-8913,-9633,-10012,-10029,-9687,-9024,-8080,-6865,-5478,-3956, -2336,-712,877,2387,3741,4894,5811,6445,6760,6723,6347,5647,4654,3352,1882,238,-1467,-3155,-4756,-6141, -7309,-8186,-8690,-8870,-8688,-8157,-7329,-6230,-4881,-3397,-1796,-133,1522,3096,4538,5834,6898,7680,8177,8360, 8187,7670,6809,5670,4269,2667,963,-766,-2477,-4025,-5385,-6483,-7241,-7683,-7787,-7510,-6902,-6013,-4877,-3542, -2053,-492,1091,2650,4098,5430,6561,7437,8056,8366,8329,7961,7237,6212,4905,3358,1692,-44,-1804,-3459, -4938,-6189,-7159,-7798,-8079,-7996,-7580,-6840,-5805,-4565,-3142,-1617,-27,1578,3142,4560,5853,6887,7707,8191, 8356,8187,7678,6823,5697,4292,2689,976,-794,-2503,-4093,-5497,-6609,-7428,-7900,-8010,-7787,-7213,-6345,-5231, -3902,-2440,-848,746,2316,3799,5172,6329,7281,7954,8314,8359,8053,7409,6460,5226,3757,2138,414,-1305, -2972,-4453,-5731,-6721,-7386,-7710,-7668,-7265,-6571,-5572,-4331,-2922,-1377,236,1847,3406,4873,6136,7232,8069, 8606,8797,8661,8191,7371,6247,4877,3324,1628,-134,-1836,-3457,-4877,-6061,-6923,-7446,-7629,-7451,-6915,-6104, -5013,-3724,-2286,-706,898,2463,3968,5344,6545,7492,8195,8581,8647,8348,7731,6795,5554,4083,2427,694, -1054,-2756,-4281,-5602,-6633,-7341,-7715,-7733,-7385,-6721,-5779,-4590,-3207,-1707,-150,1429,2962,4386,5646,6716, 7536,8074,8265,8160,7693,6900,5784,4423,2837,1114,-671,-2445,-4104,-5568,-6816,-7726,-8323,-8548,-8428,-7972, -7178,-6120,-4848,-3396,-1836,-249,1344,2860,4242,5481,6490,7230,7665,7765,7532,6936,6046,4866,3409,1795, 93,-1648,-3318,-4881,-6199,-7245,-7973,-8357,-8369,-8043,-7388,-6457,-5283,-3903,-2383,-802,816,2396,3891,5211, 6348,7245,7869,8169,8158,7782,7062,6033,4739,3206,1548,-193,-1925,-3554,-5008,-6212,-7133,-7723,-7934,-7816, -7347,-6549,-5511,-4227,-2787,-1232,386,1997,3530,4961,6207,7243,8030,8505,8681,8498,7972,7124,5960,4548, 2945,1234,-509,-2203,-3776,-5124,-6228,-7015,-7457,-7544,-7284,-6677,-5794,-4649,-3286,-1804,-230,1368,2926,4410, 5744,6883,7789,8418,8727,8684,8304,7601,6559,5247,3732,2061,287,-1483,-3157,-4655,-5919,-6896,-7524,-7818, -7754,-7352,-6644,-5655,-4425,-3029,-1512,95,1666,3195,4613,5867,6923,7699,8199,8371,8196,7678,6831,5684, 4274,2683,957,-811,-2520,-4127,-5529,-6666,-7486,-7973,-8114,-7886,-7338,-6490,-5380,-4057,-2557,-993,600,2195, 3695,5059,6237,7180,7852,8224,8233,7923,7267,6285,5024,3520,1859,125,-1626,-3279,-4786,-6079,-7073,-7752, -8067,-8047,-7673,-6961,-5989,-4772,-3358,-1842,-233,1384,2938,4403,5711,6799,7644,8181,8384,8267,7790,6982, 5873,4513,2945,1219,-545,-2252,-3872,-5299,-6461,-7314,-7831,-8015,-7835,-7317,-6503,-5438,-4133,-2687,-1145,427, 1995,3480,4848,5993,6947,7619,7999,8034,7734,7077,6137,4872,3389,1715,-36,-1811,-3506,-5077,-6422,-7484, -8249,-8635,-8687,-8368,-7743,-6808,-5634,-4271,-2789,-1192,388,1943,3362,4668,5754,6605,7137,7371,7269,6805, 6003,4909,3534,1986,255,-1501,-3256,-4896,-6363,-7581,-8507,-9089,-9332,-9217,-8749,-7985,-6945,-5698,-4272,-2719, -1136,441,1966,3357,4579,5560,6280,6710,6816,6553,5993,5075,3895,2463,857,-848,-2555,-4234,-5746,-7052, -8071,-8807,-9173,-9180,-8852,-8196,-7225,-6020,-4618,-3059,-1457,203,1810,3319,4687,5872,6788,7427,7758,7739, 7404,6712,5728,4473,2987,1376,-341,-2030,-3606,-5033,-6218,-7108,-7677,-7910,-7784,-7312,-6532,-5455,-4163,-2698, -1119,516,2124,3679,5131,6406,7446,8247,8737,8901,8748,8220,7384,6247,4849,3272,1604,-129,-1808,-3358, -4712,-5770,-6546,-6986,-7037,-6763,-6140,-5226,-4094,-2734,-1216,371,2000,3571,5073,6407,7556,8484,9098,9404, 9397,9022,8329,7304,6015,4490,2814,1047,-708,-2372,-3858,-5132,-6124,-6781,-7074,-7023,-6622,-5914,-4931,-3721, -2346,-833,747,2306,3803,5204,6443,7464,8227,8708,8851,8680,8145,7294,6148,4748,3138,1414,-337,-2064, -3668,-5063,-6215,-7050,-7577,-7744,-7547,-7009,-6204,-5098,-3781,-2344,-798,773,2341,3823,5149,6312,7241,7890, 8232,8212,7865,7192,6191,4907,3403,1741,-12,-1787,-3469,-4987,-6283,-7300,-7983,-8319,-8292,-7927,-7250,-6279, -5057,-3684,-2156,-562,1053,2596,4041,5317,6403,7214,7754,7989,7863,7392,6599,5524,4181,2621,935,-788, -2497,-4082,-5521,-6669,-7508,-8048,-8223,-8016,-7512,-6673,-5593,-4305,-2858,-1305,308,1874,3360,4724,5893,6847, 7527,7908,7943,7669,7037,6085,4836,3363,1727,-16,-1786,-3463,-4989,-6322,-7372,-8111,-8476,-8498,-8174,-7522, -6576,-5395,-4023,-2533,-939,682,2233,3697,5013,6125,6984,7573,7823,7745,7316,6561,5503,4163,2650,955, -768,-2483,-4088,-5516,-6672,-7559,-8095,-8285,-8114,-7613,-6799,-5751,-4454,-3003,-1440,151,1765,3279,4696,5895, 6906,7642,8077,8183,7946,7366,6474,5292,3869,2260,550,-1169,-2847,-4388,-5694,-6760,-7483,-7879,-7917,-7605, -6999,-6071,-4890,-3528,-2034,-421,1184,2769,4240,5578,6724,7616,8217,8530,8481,8099,7363,6347,5043,3535, 1876,156,-1553,-3178,-4635,-5852,-6788,-7393,-7649,-7554,-7101,-6364,-5351,-4106,-2681,-1167,405,1992,3504,4893, 6111,7103,7843,8282,8389,8141,7581,6680,5492,4043,2422,682,-1088,-2820,-4418,-5814,-6939,-7766,-8252,-8376, -8160,-7605,-6752,-5641,-4338,-2876,-1347,220,1759,3198,4509,5617,6495,7088,7359,7330,6942,6219,5192,3889, 2360,675,-1098,-2866,-4523,-6041,-7341,-8320,-9001,-9324,-9299,-8927,-8240,-7253,-6068,-4675,-3170,-1615,-61,1443, 2849,4092,5104,5897,6372,6536,6359,5821,4976,3854,2446,879,-820,-2551,-4254,-5837,-7212,-8317,-9138,-9599, -9694,-9472,-8906,-8043,-6922,-5587,-4109,-2525,-898,698,2235,3597,4791,5774,6461,6848,6927,6647,6024,5088, 3856,2420,816,-889,-2574,-4197,-5664,-6903,-7875,-8515,-8792,-8737,-8333,-7585,-6581,-5336,-3920,-2357,-731,894, 2484,3950,5259,6362,7209,7768,8000,7892,7456,6692,5632,4318,2791,1125,-558,-2231,-3783,-5143,-6267,-7082, -7593,-7721,-7511,-6957,-6135,-5006,-3690,-2221,-636,976,2567,4096,5456,6684,7654,8368,8752,8807,8525,7921, 6955,5735,4264,2639,923,-834,-2511,-4034,-5369,-6413,-7133,-7507,-7538,-7236,-6606,-5681,-4527,-3189,-1698,-162, 1406,2926,4357,5623,6698,7518,8072,8305,8197,7754,6986,5909,4568,2993,1311,-438,-2165,-3798,-5250,-6451, -7334,-7917,-8124,-7986,-7521,-6726,-5685,-4413,-2988,-1441,146,1724,3232,4626,5806,6788,7506,7928,8021,7770, 7169,6271,5081,3654,2056,346,-1400,-3048,-4580,-5899,-6957,-7692,-8074,-8121,-7840,-7190,-6288,-5114,-3766,-2264, -685,911,2473,3957,5281,6439,7319,7930,8224,8205,7828,7112,6110,4815,3332,1695,-16,-1678,-3317,-4719, -5914,-6796,-7361,-7594,-7447,-6991,-6216,-5182,-3909,-2481,-926,661,2261,3786,5206,6433,7464,8230,8692,8819, 8622,8081,7218,6050,4645,3040,1342,-408,-2113,-3669,-5019,-6144,-6914,-7365,-7475,-7238,-6671,-5802,-4675,-3355, -1886,-335,1239,2763,4220,5537,6659,7542,8134,8443,8377,7998,7275,6231,4953,3425,1754,12,-1742,-3400, -4910,-6184,-7188,-7845,-8170,-8145,-7764,-7064,-6124,-4932,-3563,-2085,-543,1007,2501,3878,5103,6087,6833,7286, 7411,7191,6645,5780,4631,3211,1602,-122,-1887,-3605,-5195,-6594,-7747,-8587,-9096,-9247,-9043,-8521,-7682,-6587, -5296,-3855,-2312,-726,843,2318,3665,4824,5747,6408,6744,6770,6459,5807,4858,3611,2153,533,-1187,-2896, -4518,-6019,-7274,-8245,-8933,-9240,-9221,-8843,-8134,-7163,-5940,-4514,-2998,-1392,189,1756,3192,4491,5574,6414, 6946,7181,7051,6598,5820,4742,3415,1893,234,-1465,-3131,-4692,-6067,-7184,-8000,-8482,-8604,-8386,-7839,-6985, -5864,-4541,-3060,-1462,186,1784,3315,4722,5946,6942,7677,8077,8192,7945,7367,6468,5283,3858,2280,581, -1106,-2748,-4234,-5514,-6522,-7217,-7547,-7561,-7187,-6513,-5550,-4362,-2971,-1451,155,1749,3310,4775,6076,7171, 8012,8596,8839,8755,8321,7595,6537,5216,3678,2001,301,-1412,-3018,-4436,-5618,-6497,-7072,-7288,-7127,-6663, -5891,-4822,-3546,-2098,-563,1015,2603,4109,5485,6717,7694,8414,8803,8899,8647,8069,7134,5934,4506,2902, 1182,-569,-2250,-3774,-5123,-6181,-6915,-7339,-7395,-7108,-6499,-5594,-4457,-3112,-1626,-69,1525,3050,4511,5824, 6924,7792,8391,8654,8599,8206,7476,6447,5151,3622,1978,246,-1472,-3101,-4551,-5760,-6677,-7286,-7525,-7434, -6987,-6241,-5222,-3981,-2558,-1023,557,2147,3657,5050,6254,7272,8028,8461,8589,8384,7832,6971,5797,4377, 2807,1091,-641,-2323,-3883,-5236,-6332,-7145,-7581,-7675,-7443,-6852,-6004,-4876,-3567,-2111,-566,1056,2558,4042, 5341,6464,7340,7948,8245,8212,7817,7136,6104,4820,3305,1639,-90,-1808,-3467,-4947,-6184,-7143,-7791,-8086, -8051,-7629,-6941,-5970,-4754,-3366,-1871,-311,1263,2754,4160,5373,6410,7172,7641,7788,7607,7081,6233,5077, 3688,2114,416,-1331,-3050,-4611,-5983,-7136,-7960,-8448,-8591,-8389,-7864,-7016,-5924,-4638,-3182,-1633,-51,1502, 2964,4303,5459,6377,7019,7363,7375,7042,6367,5395,4141,2684,1049,-654,-2383,-3995,-5485,-6750,-7731,-8376, -8712,-8661,-8288,-7595,-6623,-5419,-4034,-2510,-936,679,2220,3668,4953,6041,6864,7405,7615,7508,7055,6266, 5210,3875,2339,685,-1013,-2681,-4239,-5608,-6725,-7552,-8040,-8176,-7964,-7449,-6607,-5501,-4183,-2735,-1153,460, 2044,3555,4957,6142,7120,7832,8246,8319,8066,7458,6579,5389,3972,2388,708,-983,-2589,-4073,-5346,-6327, -7018,-7351,-7367,-7019,-6344,-5405,-4220,-2843,-1349,229,1803,3343,4785,6068,7149,7989,8542,8768,8642,8196, 7425,6350,5023,3512,1831,123,-1600,-3195,-4619,-5801,-6713,-7264,-7488,-7363,-6915,-6160,-5132,-3863,-2488,-971, 594,2131,3610,4958,6139,7086,7785,8156,8237,7960,7365,6430,5233,3794,2185,450,-1270,-2948,-4496,-5844, -6919,-7680,-8103,-8186,-7916,-7324,-6450,-5324,-4014,-2567,-1017,511,2049,3450,4724,5785,6615,7173,7421,7328, 6906,6181,5132,3830,2299,653,-1067,-2800,-4405,-5843,-7062,-7990,-8609,-8869,-8762,-8332,-7607,-6583,-5347,-3939, -2439,-876,708,2209,3590,4807,5817,6575,6997,7133,6940,6416,5547,4421,3049,1502,-164,-1843,-3499,-5004, -6336,-7388,-8127,-8542,-8615,-8338,-7725,-6829,-5696,-4357,-2871,-1303,297,1859,3359,4705,5850,6764,7411,7736, 7759,7414,6745,5799,4560,3107,1524,-155,-1819,-3409,-4824,-6035,-6932,-7534,-7774,-7679,-7243,-6493,-5484,-4238, -2805,-1276,326,1938,3472,4902,6141,7195,8004,8509,8699,8557,8064,7266,6154,4818,3289,1666,-53,-1702, -3231,-4564,-5663,-6462,-6907,-7035,-6798,-6249,-5401,-4297,-3005,-1559,-17,1555,3097,4578,5905,7067,7971,8605, 8946,8965,8610,7970,6989,5745,4286,2648,942,-771,-2430,-3908,-5186,-6175,-6868,-7209,-7208,-6843,-6211,-5272, -4106,-2754,-1286,237,1780,3277,4657,5884,6903,7678,8165,8326,8154,7683,6870,5749,4398,2831,1147,-601, -2311,-3919,-5330,-6513,-7358,-7910,-8105,-7969,-7488,-6712,-5667,-4427,-3006,-1507,51,1568,3008,4342,5485,6408, 7048,7413,7452,7150,6513,5563,4346,2895,1291,-404,-2121,-3765,-5276,-6549,-7571,-8276,-8634,-8625,-8316,-7675, -6749,-5581,-4238,-2750,-1210,369,1892,3335,4607,5685,6522,7092,7322,7240,6834,6066,5017,3709,2204,572, -1141,-2806,-4389,-5793,-6942,-7812,-8350,-8549,-8397,-7908,-7125,-6078,-4790,-3383,-1848,-248,1312,2818,4200,5415, 6409,7122,7547,7646,7441,6862,6005,4859,3465,1899,245,-1455,-3070,-4574,-5852,-6878,-7595,-7999,-8038,-7738, -7104,-6202,-5037,-3693,-2191,-636,940,2491,3946,5230,6351,7225,7794,8074,8002,7617,6909,5879,4586,3099, 1464,-228,-1934,-3525,-4953,-6143,-7071,-7659,-7920,-7823,-7397,-6673,-5665,-4440,-3070,-1556,8,1564,3052,4420, 5621,6620,7347,7786,7901,7682,7134,6270,5094,3732,2137,446,-1280,-2937,-4483,-5839,-6920,-7696,-8144,-8254, -8008,-7449,-6576,-5488,-4180,-2729,-1188,358,1915,3351,4670,5772,6646,7254,7569,7519,7178,6482,5487,4226, 2730,1103,-585,-2306,-3906,-5355,-6585,-7545,-8176,-8465,-8390,-7997,-7292,-6296,-5087,-3688,-2189,-622,966,2482, 3885,5154,6178,6965,7441,7627,7445,6949,6132,5027,3668,2141,479,-1227,-2870,-4398,-5754,-6826,-7622,-8081, -8200,-7982,-7427,-6569,-5483,-4154,-2703,-1153,431,1985,3477,4835,5989,6915,7596,7944,7976,7662,7047,6119, 4892,3465,1890,206,-1466,-3081,-4526,-5756,-6729,-7372,-7666,-7627,-7266,-6563,-5617,-4400,-3034,-1511,81,1655, 3187,4593,5854,6906,7718,8222,8447,8309,7855,7078,5999,4672,3169,1517,-166,-1837,-3388,-4768,-5900,-6742, -7235,-7427,-7250,-6730,-5921,-4874,-3609,-2179,-658,902,2448,3932,5274,6444,7373,8039,8412,8445,8149,7549, 6594,5392,3950,2337,640,-1062,-2718,-4210,-5498,-6517,-7224,-7607,-7635,-7305,-6687,-5784,-4623,-3293,-1831,-312, 1229,2741,4145,5392,6451,7262,7795,7997,7886,7446,6677,5601,4283,2752,1099,-633,-2343,-3931,-5357,-6538, -7421,-8000,-8237,-8126,-7690,-6948,-5925,-4715,-3322,-1824,-278,1257,2703,4055,5236,6167,6871,7255,7332,7073, 6471,5571,4389,2959,1369,-305,-2023,-3672,-5183,-6505,-7545,-8299,-8700,-8765,-8494,-7889,-7010,-5894,-4572,-3106, -1585,-8,1526,2964,4241,5327,6209,6784,7043,7003,6611,5896,4874,3590,2114,516,-1186,-2856,-4437,-5836, -7024,-7920,-8507,-8725,-8614,-8184,-7416,-6407,-5173,-3774,-2255,-689,880,2374,3785,4992,6017,6742,7217,7367, 7153,6626,5810,4683,3328,1777,136,-1540,-3165,-4682,-5989,-7037,-7803,-8218,-8299,-8052,-7460,-6591,-5461,-4138, -2653,-1112,465,2015,3485,4802,5945,6851,7471,7808,7771,7447,6785,5815,4581,3122,1532,-147,-1819,-3406, -4817,-6036,-6979,-7575,-7844,-7774,-7380,-6666,-5666,-4454,-3069,-1559,4,1568,3084,4474,5729,6760,7528,8018, 8183,8024,7530,6714,5615,4285,2735,1089,-605,-2247,-3786,-5139,-6234,-7005,-7506,-7602,-7405,-6870,-6026,-4943, -3665,-2221,-684,874,2420,3869,5203,6333,7221,7865,8203,8203,7897,7257,6313,5081,3631,2046,373,-1324, -2919,-4382,-5630,-6603,-7274,-7604,-7575,-7238,-6564,-5619,-4453,-3096,-1620,-80,1491,2990,4391,5646,6671,7479, 7985,8172,8040,7562,6788,5713,4376,2853,1198,-500,-2157,-3717,-5107,-6215,-7066,-7568,-7749,-7585,-7079,-6285, -5253,-3983,-2551,-1034,516,2036,3508,4849,5991,6939,7617,7981,8040,7747,7144,6228,5046,3629,2038,340, -1336,-2983,-4460,-5748,-6754,-7467,-7818,-7839,-7523,-6896,-5987,-4842,-3507,-2034,-493,1054,2561,3966,5227,6290, 7121,7651,7873,7784,7367,6613,5570,4257,2786,1154,-531,-2189,-3750,-5145,-6304,-7177,-7715,-7936,-7803,-7331, -6577,-5544,-4316,-2917,-1396,144,1687,3185,4543,5732,6687,7393,7806,7909,7671,7108,6231,5077,3679,2107, 449,-1236,-2869,-4352,-5653,-6669,-7421,-7806,-7855,-7566,-6989,-6077,-4949,-3621,-2170,-649,913,2457,3886,5167, 6266,7120,7702,7957,7906,7531,6819,5822,4562,3082,1479,-218,-1889,-3447,-4869,-6059,-6945,-7527,-7770,-7684, -7257,-6512,-5515,-4299,-2900,-1408,140,1680,3163,4534,5726,6719,7444,7881,8009,7813,7253,6404,5284,3897, 2351,682,-1001,-2642,-4182,-5499,-6576,-7360,-7799,-7898,-7658,-7105,-6284,-5185,-3901,-2475,-963,593,2113,3545, 4839,5939,6829,7438,7725,7710,7324,6647,5668,4418,2937,1341,-361,-2044,-3634,-5076,-6305,-7247,-7887,-8166, -8115,-7731,-7025,-6071,-4875,-3513,-2031,-481,1064,2556,3952,5188,6195,6938,7428,7598,7438,6947,6133,5041, 3702,2172,533,-1153,-2781,-4321,-5645,-6732,-7515,-7994,-8126,-7905,-7349,-6541,-5428,-4139,-2698,-1162,410,1938, 3427,4760,5918,6840,7490,7831,7878,7551,6942,6005,4805,3389,1817,156,-1508,-3093,-4524,-5756,-6712,-7359, -7665,-7632,-7263,-6600,-5657,-4474,-3115,-1633,-91,1488,2983,4384,5652,6706,7503,8016,8215,8088,7629,6855, 5811,4488,2969,1349,-335,-1990,-3539,-4919,-6050,-6867,-7398,-7569,-7405,-6918,-6128,-5105,-3843,-2431,-926,612, 2159,3604,4930,6073,6991,7654,8014,8055,7777,7166,6246,5028,3601,2022,358,-1341,-2954,-4439,-5699,-6724, -7444,-7824,-7854,-7579,-6938,-6057,-4917,-3596,-2165,-636,919,2397,3806,5076,6123,6929,7452,7677,7577,7133, 6389,5355,4039,2556,927,-782,-2423,-4002,-5376,-6534,-7396,-7952,-8180,-8069,-7589,-6834,-5825,-4602,-3185,-1685, -147,1389,2858,4229,5386,6369,7076,7493,7576,7336,6791,5924,4773,3417,1860,222,-1464,-3086,-4574,-5845, -6887,-7610,-7998,-8036,-7750,-7162,-6269,-5118,-3801,-2338,-786,776,2311,3751,5035,6143,7000,7581,7870,7831, 7471,6769,5766,4515,3073,1469,-188,-1853,-3409,-4808,-6000,-6885,-7469,-7708,-7614,-7186,-6463,-5464,-4264,-2872, -1371,156,1717,3205,4577,5791,6754,7490,7948,8062,7853,7344,6489,5360,3987,2450,808,-890,-2514,-4031, -5330,-6409,-7198,-7631,-7728,-7493,-6956,-6121,-5027,-3750,-2325,-819,730,2249,3670,4956,6069,6951,7539,7841, 7809,7468,6779,5801,4560,3115,1502,-190,-1856,-3441,-4908,-6134,-7046,-7703,-7993,-7965,-7587,-6887,-5934,-4765, -3393,-1911,-351,1175,2662,4048,5273,6281,7038,7520,7681,7515,7018,6205,5120,3778,2266,633,-1036,-2667, -4207,-5541,-6613,-7428,-7882,-8012,-7809,-7281,-6469,-5387,-4097,-2676,-1162,408,1950,3397,4711,5865,6780,7431, 7776,7816,7523,6889,5963,4764,3352,1779,119,-1532,-3140,-4572,-5809,-6769,-7417,-7717,-7713,-7353,-6675,-5728, -4549,-3216,-1727,-179,1360,2877,4277,5522,6553,7351,7866,8087,7955,7508,6748,5686,4373,2872,1247,-428, -2082,-3637,-4984,-6108,-6945,-7475,-7637,-7495,-6975,-6219,-5162,-3906,-2513,-1006,529,2073,3532,4870,6030,6967, 7625,7994,8036,7760,7158,6227,5042,3653,2082,415,-1277,-2884,-4337,-5615,-6603,-7311,-7663,-7695,-7392,-6769, -5857,-4732,-3408,-1940,-416,1122,2632,4033,5301,6366,7179,7732,7976,7887,7453,6709,5692,4412,2919,1311, -364,-2004,-3566,-4965,-6109,-6978,-7523,-7720,-7593,-7114,-6375,-5351,-4114,-2699,-1211,361,1903,3380,4748,5924, 6904,7600,8011,8116,7883,7340,6476,5334,3952,2420,792,-889,-2490,-3968,-5248,-6285,-7009,-7404,-7467,-7176, -6568,-5691,-4572,-3267,-1814,-276,1297,2811,4243,5526,6608,7459,8034,8322,8266,7865,7182,6167,4920,3463, 1828,167,-1498,-3055,-4476,-5634,-6558,-7128,-7397,-7304,-6882,-6166,-5204,-3983,-2635,-1128,388,1914,3387,4751, 5928,6920,7640,8070,8180,7965,7425,6576,5430,4062,2512,852,-850,-2508,-4019,-5335,-6442,-7206,-7657,-7774, -7560,-7041,-6202,-5121,-3868,-2465,-945,575,2082,3472,4749,5855,6692,7262,7565,7518,7147,6441,5454,4203, 2755,1118,-549,-2237,-3832,-5285,-6519,-7465,-8100,-8435,-8376,-8026,-7361,-6422,-5253,-3913,-2441,-935,596,2079, 3451,4653,5642,6404,6875,7015,6840,6335,5520,4431,3075,1558,-65,-1755,-3404,-4905,-6256,-7346,-8168,-8647, -8784,-8577,-8068,-7245,-6186,-4912,-3492,-1985,-435,1103,2545,3870,4993,5922,6553,6904,6940,6646,6005,5096, 3896,2501,939,-720,-2367,-3943,-5392,-6610,-7564,-8201,-8524,-8493,-8143,-7470,-6522,-5347,-3977,-2511,-957,600, 2107,3516,4781,5820,6633,7136,7365,7244,6810,6046,5020,3722,2252,643,-1004,-2631,-4162,-5495,-6593,-7421, -7913,-8078,-7905,-7396,-6620,-5561,-4297,-2902,-1387,185,1717,3192,4537,5683,6647,7317,7706,7795,7513,6940, 6040,4864,3477,1924,266,-1386,-2986,-4433,-5708,-6686,-7383,-7728,-7769,-7439,-6820,-5913,-4780,-3483,-2022,-483, 1057,2556,3947,5210,6261,7074,7597,7848,7737,7312,6576,5536,4258,2748,1142,-522,-2173,-3725,-5117,-6274, -7153,-7713,-7942,-7824,-7392,-6664,-5668,-4452,-3068,-1591,-59,1479,2936,4283,5446,6394,7090,7465,7537,7305, 6728,5841,4695,3308,1764,114,-1585,-3198,-4673,-5962,-7018,-7730,-8147,-8205,-7959,-7386,-6522,-5431,-4131,-2686, -1183,369,1852,3275,4557,5645,6475,7075,7325,7282,6906,6202,5207,3968,2512,927,-735,-2361,-3935,-5332, -6500,-7380,-7969,-8197,-8097,-7668,-6943,-5956,-4724,-3323,-1856,-298,1266,2747,4137,5330,6351,7107,7545,7694, 7524,7014,6211,5114,3777,2280,674,-980,-2556,-4038,-5323,-6363,-7115,-7543,-7617,-7374,-6778,-5928,-4816,-3491, -2077,-523,1040,2573,4028,5350,6462,7356,7975,8297,8310,7959,7321,6387,5174,3764,2173,544,-1082,-2660, -4063,-5241,-6178,-6776,-7067,-7026,-6627,-5938,-4987,-3785,-2457,-975,544,2086,3559,4940,6152,7165,7931,8391, 8548,8389,7899,7087,5997,4680,3168,1537,-141,-1788,-3323,-4642,-5755,-6560,-7066,-7217,-7040,-6536,-5760,-4699, -3459,-2067,-568,960,2453,3876,5168,6275,7159,7774,8089,8076,7761,7084,6134,4943,3508,1907,250,-1437, -3040,-4503,-5758,-6733,-7424,-7781,-7774,-7464,-6841,-5934,-4812,-3505,-2058,-560,975,2441,3816,5036,6018,6805, 7302,7480,7338,6882,6101,5029,3696,2198,572,-1106,-2745,-4277,-5654,-6783,-7640,-8174,-8334,-8190,-7712,-6937, -5903,-4667,-3296,-1795,-249,1280,2716,4050,5216,6134,6798,7171,7237,6981,6386,5507,4338,2971,1404,-231, -1884,-3475,-4947,-6184,-7170,-7862,-8229,-8250,-7943,-7296,-6410,-5271,-3926,-2441,-920,630,2153,3583,4838,5911, 6769,7308,7555,7478,7066,6354,5339,4070,2614,1023,-616,-2252,-3786,-5139,-6275,-7138,-7655,-7858,-7732,-7273, -6527,-5500,-4263,-2883,-1370,179,1720,3203,4544,5734,6714,7423,7842,7947,7716,7166,6313,5170,3817,2284, 644,-1011,-2612,-4086,-5377,-6388,-7107,-7511,-7579,-7282,-6693,-5802,-4707,-3409,-1969,-441,1100,2638,4042,5335, 6407,7260,7835,8118,8055,7702,7009,6008,4772,3318,1744,89,-1576,-3127,-4509,-5680,-6569,-7165,-7416,-7320, -6913,-6220,-5214,-4018,-2642,-1170,372,1906,3384,4739,5948,6921,7662,8086,8208,8021,7504,6641,5544,4201, 2672,1042,-626,-2242,-3734,-5046,-6098,-6866,-7307,-7406,-7197,-6654,-5802,-4752,-3470,-2051,-547,1001,2497,3920, 5212,6304,7181,7780,8084,8047,7683,7019,6055,4821,3368,1790,126,-1528,-3118,-4536,-5764,-6685,-7332,-7623, -7596,-7225,-6559,-5629,-4482,-3125,-1686,-149,1360,2841,4195,5392,6388,7136,7582,7749,7573,7068,6252,5179, 3807,2309,668,-1014,-2628,-4161,-5494,-6602,-7410,-7910,-8060,-7881,-7374,-6600,-5534,-4305,-2914,-1417,123,1616, 3057,4350,5492,6354,6977,7321,7337,7006,6393,5433,4252,2813,1248,-411,-2055,-3640,-5071,-6309,-7263,-7918, -8259,-8250,-7887,-7264,-6341,-5179,-3848,-2389,-872,662,2161,3546,4778,5820,6613,7132,7333,7208,6780,6021, 4977,3691,2214,642,-1023,-2643,-4159,-5483,-6600,-7411,-7920,-8077,-7912,-7429,-6653,-5617,-4369,-2955,-1437,110, 1645,3086,4437,5604,6530,7226,7600,7664,7415,6831,5950,4805,3434,1908,295,-1357,-2926,-4373,-5615,-6587, -7260,-7632,-7638,-7334,-6691,-5815,-4678,-3347,-1877,-364,1191,2697,4111,5362,6427,7262,7826,8055,7967,7555, 6839,5819,4543,3092,1500,-155,-1793,-3324,-4695,-5831,-6706,-7252,-7456,-7339,-6901,-6155,-5172,-3956,-2587,-1113, 414,1935,3379,4722,5879,6846,7514,7917,8005,7767,7208,6341,5220,3850,2293,657,-1012,-2593,-4098,-5357, -6405,-7140,-7554,-7647,-7389,-6802,-5969,-4862,-3573,-2150,-647,872,2373,3780,5027,6098,6939,7508,7783,7697, 7304,6622,5626,4393,2940,1354,-291,-1946,-3505,-4892,-6067,-6969,-7546,-7812,-7723,-7329,-6649,-5658,-4480,-3121, -1642,-120,1417,2877,4219,5414,6404,7128,7584,7702,7519,6995,6165,5058,3745,2228,591,-1030,-2640,-4123, -5411,-6464,-7216,-7661,-7754,-7505,-6953,-6108,-5049,-3776,-2328,-833,698,2232,3650,4952,6038,6909,7519,7853, 7828,7508,6837,5914,4712,3280,1711,88,-1548,-3101,-4508,-5694,-6635,-7250,-7541,-7483,-7116,-6432,-5480,-4312, -2963,-1517,20,1555,3033,4394,5608,6607,7353,7834,7994,7830,7346,6547,5485,4165,2680,1051,-611,-2216, -3723,-5064,-6129,-6936,-7414,-7556,-7395,-6894,-6089,-5062,-3811,-2414,-935,588,2066,3499,4806,5894,6788,7431, 7755,7760,7435,6799,5872,4681,3256,1709,49,-1591,-3190,-4639,-5857,-6818,-7506,-7822,-7844,-7520,-6898,-5966, -4816,-3498,-2083,-566,960,2432,3785,4986,6011,6788,7282,7479,7334,6887,6109,5058,3767,2284,675,-969, -2587,-4108,-5451,-6591,-7406,-7923,-8119,-7971,-7480,-6733,-5715,-4510,-3104,-1626,-96,1408,2861,4188,5342,6258, 6927,7306,7361,7068,6503,5603,4458,3063,1521,-95,-1737,-3327,-4763,-6007,-6997,-7679,-8037,-8065,-7754,-7146, -6227,-5111,-3788,-2356,-840,690,2212,3601,4862,5918,6742,7289,7519,7445,7049,6330,5317,4064,2623,1054, -596,-2228,-3739,-5098,-6247,-7078,-7626,-7821,-7699,-7262,-6515,-5500,-4300,-2909,-1421,125,1646,3100,4451,5622, 6581,7281,7698,7789,7567,7020,6167,5053,3708,2187,592,-1057,-2644,-4097,-5368,-6384,-7115,-7517,-7564,-7308, -6730,-5878,-4775,-3484,-2052,-551,994,2491,3926,5185,6252,7119,7690,7949,7914,7526,6849,5854,4610,3169, 1602,-39,-1670,-3205,-4602,-5778,-6660,-7241,-7493,-7399,-6997,-6293,-5335,-4136,-2789,-1327,219,1717,3169,4546, 5734,6710,7426,7859,8007,7804,7277,6474,5374,4042,2521,904,-725,-2331,-3828,-5120,-6158,-6924,-7366,-7486, -7249,-6695,-5870,-4811,-3526,-2121,-625,889,2395,3828,5092,6203,7073,7678,7970,7939,7591,6936,5976,4774, 3353,1799,156,-1500,-3059,-4471,-5675,-6605,-7213,-7503,-7486,-7128,-6446,-5521,-4360,-3036,-1571,-67,1456,2916, 4273,5475,6485,7220,7681,7834,7669,7188,6369,5289,3990,2463,853,-790,-2410,-3921,-5276,-6359,-7143,-7658, -7786,-7606,-7110,-6324,-5298,-4056,-2657,-1183,336,1840,3260,4561,5660,6537,7160,7491,7500,7186,6554,5631, 4443,3028,1469,-172,-1826,-3406,-4849,-6057,-7025,-7708,-8040,-8042,-7734,-7110,-6200,-5063,-3742,-2311,-804,728, 2209,3570,4797,5830,6613,7082,7277,7165,6709,5936,4908,3608,2143,538,-1122,-2726,-4235,-5582,-6678,-7496, -8012,-8210,-8051,-7584,-6817,-5813,-4570,-3193,-1704,-173,1332,2795,4108,5252,6206,6865,7250,7308,7030,6467, 5601,4395,3070,1510,-103,-1739,-3317,-4771,-5988,-6977,-7666,-8023,-8053,-7748,-7148,-6261,-5121,-3819,-2385,-845, 691,2177,3566,4828,5878,6715,7241,7478,7391,7000,6272,5264,4014,2577,988,-625,-2241,-3764,-5119,-6268, -7124,-7661,-7887,-7756,-7319,-6582,-5591,-4380,-3002,-1523,7,1528,2993,4322,5504,6442,7121,7546,7635,7403, 6864,6013,4892,3532,2005,394,-1250,-2844,-4285,-5566,-6567,-7318,-7730,-7786,-7526,-6962,-6090,-5009,-3713,-2318, -807,718,2223,3605,4884,5959,6801,7353,7619,7590,7218,6521,5546,4308,2877,1304,-340,-1961,-3513,-4885, -6079,-6946,-7537,-7790,-7727,-7327,-6617,-5650,-4462,-3098,-1646,-97,1419,2882,4230,5427,6405,7152,7562,7703, 7502,6986,6167,5075,3740,2247,643,-996,-2585,-4064,-5364,-6400,-7162,-7599,-7689,-7467,-6925,-6120,-5040,-3763, -2359,-866,676,2178,3604,4887,5983,6872,7471,7766,7769,7434,6790,5834,4617,3210,1656,16,-1593,-3152, -4557,-5755,-6692,-7309,-7592,-7561,-7186,-6519,-5574,-4428,-3104,-1649,-111,1404,2877,4238,5451,6450,7192,7663, 7834,7662,7162,6395,5305,4003,2493,883,-751,-2379,-3885,-5201,-6282,-7092,-7589,-7747,-7551,-7057,-6282,-5236, -3995,-2599,-1125,396,1901,3332,4611,5718,6615,7243,7560,7571,7252,6649,5691,4523,3118,1569,-59,-1714, -3278,-4700,-5929,-6898,-7545,-7886,-7891,-7582,-6954,-6036,-4911,-3604,-2164,-649,880,2335,3712,4936,5965,6724, 7246,7449,7324,6870,6126,5074,3810,2335,756,-893,-2502,-4009,-5360,-6448,-7261,-7775,-7939,-7794,-7292,-6541, -5542,-4303,-2894,-1410,111,1623,3070,4400,5530,6453,7145,7513,7571,7340,6760,5897,4750,3396,1885,286, -1341,-2892,-4334,-5556,-6531,-7221,-7561,-7569,-7299,-6664,-5771,-4642,-3341,-1904,-373,1165,2648,4066,5325,6385, 7197,7747,7980,7917,7513,6811,5826,4576,3141,1572,-39,-1640,-3157,-4507,-5620,-6472,-7000,-7219,-7099,-6654, -5876,-4928,-3690,-2335,-857,655,2178,3625,4959,6108,7079,7762,8165,8258,8023,7475,6633,5501,4170,2651, 1038,-605,-2197,-3660,-4926,-5950,-6678,-7079,-7160,-6910,-6374,-5522,-4430,-3177,-1768,-271,1242,2722,4091,5345, 6406,7224,7781,8040,7983,7597,6902,5916,4682,3234,1652,16,-1604,-3163,-4556,-5739,-6634,-7234,-7509,-7432, -7060,-6377,-5435,-4277,-2936,-1489,8,1503,2956,4285,5454,6399,7111,7545,7641,7455,6933,6105,4989,3646, 2155,555,-1091,-2709,-4159,-5463,-6505,-7277,-7722,-7843,-7625,-7104,-6279,-5231,-3993,-2580,-1111,404,1905,3300, 4605,5680,6561,7156,7453,7447,7122,6453,5517,4324,2933,1378,-263,-1871,-3409,-4803,-5995,-6903,-7509,-7812, -7795,-7419,-6745,-5815,-4646,-3294,-1860,-335,1175,2649,4005,5222,6223,6991,7456,7642,7465,7000,6229,5173, 3868,2415,821,-804,-2414,-3891,-5191,-6254,-7056,-7534,-7673,-7481,-6996,-6209,-5182,-3927,-2545,-1069,461,1972, 3391,4690,5799,6696,7334,7651,7701,7399,6791,5851,4681,3302,1764,132,-1483,-3041,-4454,-5677,-6625,-7300, -7607,-7630,-7293,-6666,-5775,-4645,-3347,-1914,-409,1100,2558,3932,5153,6171,6942,7435,7646,7506,7072,6315, 5293,4021,2531,964,-678,-2285,-3803,-5127,-6220,-7053,-7577,-7782,-7621,-7159,-6412,-5401,-4174,-2804,-1339,169, 1692,3136,4432,5562,6499,7151,7521,7566,7303,6734,5846,4722,3353,1835,232,-1406,-2959,-4374,-5631,-6599, -7274,-7629,-7665,-7388,-6777,-5895,-4801,-3503,-2077,-577,953,2416,3810,5073,6115,6925,7462,7691,7627,7210, 6509,5516,4276,2827,1261,-355,-1963,-3476,-4833,-5953,-6809,-7372,-7583,-7469,-7028,-6306,-5334,-4138,-2773,-1306, 201,1701,3149,4475,5625,6570,7260,7650,7744,7519,6980,6124,5000,3654,2160,555,-1099,-2664,-4126,-5396, -6429,-7167,-7570,-7655,-7413,-6851,-6023,-4948,-3689,-2295,-813,701,2168,3552,4801,5872,6687,7225,7480,7431, 7047,6341,5357,4145,2695,1124,-494,-2125,-3678,-5049,-6214,-7112,-7711,-7977,-7932,-7539,-6862,-5933,-4753,-3440, -1998,-501,990,2445,3773,4945,5918,6620,7057,7179,6981,6472,5655,4553,3252,1760,183,-1460,-3069,-4529, -5800,-6853,-7589,-8033,-8150,-7934,-7385,-6585,-5506,-4247,-2850,-1346,165,1676,3079,4343,5471,6342,6934,7256, 7258,6946,6309,5388,4216,2829,1286,-296,-1903,-3436,-4807,-5979,-6888,-7493,-7779,-7706,-7348,-6672,-5731,-4571, -3231,-1775,-251,1277,2758,4133,5347,6342,7114,7605,7776,7647,7189,6426,5380,4097,2645,1070,-543,-2127, -3578,-4885,-5938,-6714,-7196,-7327,-7142,-6641,-5825,-4811,-3559,-2190,-699,815,2322,3743,5068,6178,7063,7695, 8024,8060,7776,7153,6249,5091,3720,2166,525,-1077,-2633,-4065,-5262,-6222,-6881,-7220,-7254,-6923,-6313,-5417, -4297,-2993,-1572,-81,1407,2863,4238,5467,6453,7229,7720,7915,7766,7310,6566,5531,4240,2776,1182,-436, -2055,-3566,-4910,-6032,-6891,-7401,-7586,-7454,-7015,-6286,-5301,-4086,-2745,-1274,232,1727,3152,4441,5574,6495, 7139,7487,7562,7284,6705,5811,4656,3315,1776,153,-1479,-3040,-4466,-5711,-6706,-7406,-7774,-7821,-7514,-6933, -6070,-4972,-3681,-2263,-754,743,2239,3615,4855,5906,6700,7244,7489,7391,7013,6306,5317,4061,2631,1062, -539,-2157,-3663,-5023,-6149,-6997,-7558,-7781,-7667,-7227,-6504,-5517,-4308,-2950,-1484,37,1555,3002,4326,5505, 6443,7155,7545,7643,7429,6900,6050,4943,3606,2122,514,-1111,-2686,-4125,-5401,-6399,-7123,-7531,-7608,-7351, -6797,-5947,-4875,-3593,-2199,-699,816,2297,3681,4955,6017,6855,7418,7682,7630,7240,6563,5581,4368,2927, 1400,-245,-1858,-3399,-4790,-5944,-6847,-7449,-7702,-7648,-7252,-6574,-5640,-4470,-3118,-1705,-182,1328,2768,4086, 5258,6227,6962,7368,7510,7307,6799,5977,4864,3558,2062,451,-1173,-2753,-4246,-5540,-6591,-7362,-7811,-7931, -7717,-7179,-6383,-5318,-4100,-2693,-1214,307,1791,3212,4469,5578,6437,7023,7308,7312,6967,6333,5394,4216, 2794,1254,-369,-1968,-3520,-4899,-6084,-6996,-7635,-7927,-7891,-7530,-6863,-5949,-4774,-3452,-2008,-507,1001,2474, 3823,5026,6038,6791,7287,7456,7290,6838,6063,5019,3740,2265,704,-925,-2506,-3979,-5266,-6358,-7130,-7599, -7750,-7569,-7078,-6287,-5246,-4008,-2623,-1130,386,1886,3305,4608,5726,6604,7251,7595,7622,7327,6722,5824, 4683,3290,1783,171,-1439,-2975,-4402,-5592,-6527,-7189,-7535,-7514,-7203,-6569,-5671,-4548,-3244,-1790,-304,1220, 2691,4074,5281,6297,7082,7592,7778,7684,7238,6497,5477,4191,2746,1188,-448,-2046,-3539,-4876,-5970,-6795, -7319,-7490,-7366,-6912,-6149,-5152,-3948,-2587,-1148,397,1904,3298,4632,5758,6677,7312,7678,7740,7497,6887, 6028,4885,3553,2023,422,-1215,-2776,-4218,-5452,-6436,-7126,-7501,-7551,-7277,-6676,-5835,-4725,-3442,-2017,-531, 964,2438,3834,5053,6088,6901,7414,7663,7567,7149,6439,5436,4187,2774,1203,-418,-2030,-3548,-4895,-6011, -6890,-7424,-7649,-7535,-7133,-6426,-5437,-4250,-2925,-1462,53,1557,2994,4308,5473,6418,7090,7511,7596,7371, 6836,5980,4881,3564,2050,439,-1161,-2737,-4175,-5453,-6462,-7183,-7585,-7658,-7413,-6836,-6011,-4940,-3683,-2268, -784,725,2212,3608,4865,5916,6748,7319,7594,7535,7170,6506,5544,4327,2903,1367,-242,-1850,-3361,-4720, -5883,-6775,-7359,-7607,-7544,-7156,-6476,-5511,-4352,-3009,-1572,-61,1448,2894,4231,5414,6392,7116,7534,7671, 7489,6991,6172,5096,3788,2319,718,-894,-2476,-3934,-5230,-6235,-7015,-7443,-7584,-7370,-6852,-6027,-4986,-3738, -2349,-861,656,2128,3545,4823,5898,6775,7376,7665,7657,7305,6668,5732,4544,3151,1632,17,-1604,-3143, -4533,-5709,-6616,-7238,-7537,-7521,-7155,-6500,-5576,-4439,-3106,-1679,-178,1339,2790,4136,5322,6315,7062,7523, 7686,7558,7041,6274,5217,3937,2500,910,-723,-2303,-3781,-5078,-6167,-6958,-7430,-7586,-7417,-6931,-6152,-5123, -3897,-2534,-1048,461,1947,3381,4658,5772,6648,7269,7597,7625,7324,6725,5807,4659,3270,1734,130,-1478, -3053,-4443,-5651,-6594,-7259,-7605,-7615,-7297,-6675,-5769,-4661,-3362,-1943,-450,1053,2536,3881,5095,6126,6900, 7397,7586,7469,7024,6279,5255,4004,2545,975,-652,-2247,-3732,-5057,-6171,-6987,-7523,-7698,-7575,-7114,-6390, -5376,-4182,-2830,-1368,135,1631,3041,4346,5493,6377,7040,7404,7444,7178,6607,5740,4595,3243,1735,126, -1470,-3035,-4479,-5715,-6700,-7394,-7788,-7822,-7547,-6961,-6114,-5018,-3738,-2329,-850,660,2136,3519,4741,5776, 6585,7121,7331,7264,6850,6141,5149,3904,2469,925,-698,-2295,-3804,-5143,-6276,-7137,-7683,-7897,-7808,-7383, -6664,-5688,-4501,-3171,-1714,-201,1287,2720,4056,5210,6144,6831,7220,7350,7125,6575,5764,4672,3349,1842, 265,-1344,-2894,-4349,-5593,-6597,-7301,-7717,-7792,-7525,-6956,-6123,-5028,-3771,-2350,-859,661,2138,3562,4802, 5881,6727,7295,7564,7522,7171,6504,5555,4355,2964,1424,-160,-1767,-3268,-4623,-5757,-6637,-7203,-7459,-7381, -7002,-6310,-5357,-4174,-2849,-1389,116,1626,3072,4423,5602,6582,7298,7736,7881,7699,7203,6409,5325,4024, 2559,992,-622,-2177,-3635,-4905,-5937,-6692,-7136,-7246,-7013,-6487,-5682,-4645,-3397,-2003,-529,981,2468,3869, 5135,6216,7087,7695,7981,7960,7653,7004,6076,4900,3499,1972,383,-1250,-2758,-4152,-5333,-6239,-6883,-7174, -7146,-6803,-6164,-5245,-4105,-2803,-1373,121,1620,3071,4418,5607,6588,7328,7782,7936,7785,7313,6543,5493, 4207,2735,1152,-464,-2038,-3515,-4850,-5898,-6709,-7180,-7369,-7184,-6715,-5931,-4929,-3705,-2345,-883,616,2077, 3489,4775,5885,6762,7391,7713,7732,7427,6813,5920,4749,3364,1841,246,-1367,-2927,-4361,-5556,-6519,-7174, -7522,-7517,-7210,-6619,-5736,-4629,-3327,-1935,-426,1066,2527,3852,5076,6084,6852,7332,7540,7419,6980,6227, 5192,3931,2497,924,-686,-2289,-3790,-5122,-6229,-7067,-7578,-7798,-7653,-7191,-6483,-5491,-4298,-2947,-1496,3, 1486,2913,4199,5321,6228,6866,7238,7288,7024,6446,5570,4435,3072,1553,-52,-1658,-3238,-4649,-5872,-6866, -7563,-7962,-8008,-7726,-7152,-6302,-5219,-3934,-2547,-1077,422,1900,3269,4490,5540,6319,6859,7071,7001,6592, 5870,4887,3652,2222,667,-955,-2562,-4059,-5416,-6548,-7401,-7972,-8185,-8101,-7689,-6978,-6011,-4846,-3479,-2040, -532,952,2380,3691,4846,5759,6476,6880,6953,6741,6196,5356,4272,2941,1463,-124,-1725,-3293,-4751,-5989, -6990,-7712,-8115,-8193,-7963,-7394,-6567,-5512,-4231,-2829,-1329,184,1661,3058,4319,5387,6218,6791,7067,7036, 6683,6004,5061,3843,2453,931,-679,-2253,-3765,-5115,-6262,-7156,-7733,-7958,-7922,-7517,-6835,-5891,-4728,-3399, -1957,-436,1055,2506,3857,5039,6011,6722,7163,7318,7130,6628,5857,4782,3493,2025,449,-1136,-2700,-4161, -5416,-6445,-7174,-7620,-7734,-7530,-7000,-6211,-5128,-3894,-2488,-1029,479,1976,3385,4647,5747,6610,7216,7512, 7502,7190,6564,5638,4475,3100,1594,-16,-1614,-3129,-4505,-5667,-6592,-7204,-7497,-7456,-7116,-6476,-5539,-4406, -3095,-1657,-150,1342,2813,4137,5339,6340,7072,7560,7721,7573,7114,6340,5301,4043,2581,1025,-572,-2135, -3613,-4911,-5970,-6734,-7215,-7369,-7197,-6703,-5921,-4923,-3696,-2319,-853,648,2148,3550,4861,5949,6826,7467, 7808,7846,7570,6957,6068,4906,3538,2053,461,-1144,-2674,-4078,-5263,-6229,-6885,-7215,-7228,-6930,-6292,-5406, -4283,-2995,-1588,-101,1429,2875,4243,5458,6468,7246,7728,7935,7837,7398,6663,5674,4406,2969,1406,-192, -1779,-3258,-4595,-5664,-6506,-7005,-7208,-7079,-6620,-5887,-4902,-3681,-2341,-879,604,2087,3534,4841,5943,6870, 7520,7901,7961,7656,7117,6238,5117,3769,2269,675,-920,-2466,-3907,-5113,-6110,-6806,-7164,-7234,-6946,-6384, -5537,-4438,-3167,-1784,-275,1225,2687,4046,5255,6305,7101,7623,7864,7775,7389,6657,5677,4446,3039,1468, -119,-1713,-3203,-4558,-5688,-6547,-7099,-7337,-7245,-6849,-6114,-5169,-4004,-2668,-1201,277,1781,3215,4537,5663, 6590,7280,7688,7765,7534,7009,6177,5069,3733,2263,662,-931,-2506,-3935,-5179,-6193,-6927,-7342,-7428,-7185, -6653,-5816,-4769,-3514,-2139,-674,816,2313,3673,4927,5981,6813,7367,7621,7568,7220,6527,5573,4356,2953, 1417,-209,-1803,-3307,-4686,-5859,-6736,-7322,-7591,-7552,-7179,-6489,-5576,-4434,-3087,-1672,-181,1313,2744,4055, 5230,6178,6873,7311,7443,7243,6715,5914,4838,3518,2047,480,-1128,-2724,-4190,-5448,-6494,-7263,-7716,-7838, -7639,-7131,-6371,-5335,-4109,-2728,-1270,236,1712,3098,4339,5416,6286,6850,7140,7139,6806,6156,5230,4030, 2653,1124,-487,-2069,-3597,-4983,-6177,-7109,-7710,-8014,-8010,-7649,-7009,-6120,-4980,-3698,-2258,-760,704,2177, 3525,4706,5679,6417,6878,7073,6906,6431,5667,4636,3357,1901,330,-1276,-2841,-4302,-5604,-6695,-7460,-7953, -8114,-7940,-7444,-6697,-5674,-4446,-3066,-1615,-121,1365,2793,4059,5169,6060,6672,7025,7036,6752,6158,5265, 4133,2776,1281,-322,-1929,-3443,-4834,-6031,-6967,-7630,-7957,-7958,-7663,-7049,-6161,-5060,-3770,-2336,-850,649, 2090,3452,4674,5684,6460,6981,7167,7051,6631,5890,4896,3647,2210,659,-939,-2516,-4004,-5318,-6412,-7214, -7728,-7917,-7782,-7326,-6575,-5599,-4400,-3030,-1580,-79,1420,2841,4159,5253,6165,6829,7203,7273,7025,6460, 5614,4480,3133,1672,75,-1520,-3049,-4465,-5694,-6659,-7346,-7713,-7759,-7501,-6897,-6032,-4943,-3692,-2282,-776, 732,2182,3582,4815,5842,6647,7179,7422,7354,6960,6258,5280,4056,2647,1097,-496,-2060,-3548,-4891,-6001, -6833,-7394,-7590,-7501,-7065,-6364,-5408,-4219,-2873,-1436,85,1569,3020,4325,5468,6438,7119,7523,7629,7401, 6878,6054,4965,3657,2168,606,-1005,-2559,-3993,-5231,-6243,-6942,-7339,-7414,-7170,-6627,-5806,-4724,-3486,-2096, -594,918,2387,3757,5010,6081,6925,7465,7746,7703,7353,6678,5726,4535,3145,1596,18,-1572,-3065,-4444, -5583,-6446,-7042,-7315,-7250,-6872,-6180,-5272,-4129,-2792,-1339,143,1657,3102,4427,5608,6551,7268,7697,7822, 7644,7161,6363,5301,3983,2539,971,-634,-2193,-3630,-4927,-5948,-6702,-7154,-7273,-7057,-6569,-5760,-4727,-3500, -2124,-656,851,2341,3723,5000,6083,6938,7536,7832,7810,7500,6849,5944,4772,3404,1888,282,-1325,-2836, -4208,-5371,-6286,-6900,-7205,-7197,-6835,-6195,-5281,-4157,-2833,-1412,81,1569,3013,4378,5551,6529,7293,7754, 7926,7765,7309,6541,5495,4230,2796,1241,-356,-1929,-3405,-4686,-5735,-6549,-7016,-7184,-7010,-6528,-5762,-4748, -3527,-2164,-712,800,2292,3686,4953,6077,6950,7567,7905,7948,7638,7035,6140,4980,3644,2134,536,-1058, -2603,-3991,-5179,-6135,-6768,-7119,-7128,-6812,-6229,-5331,-4238,-2961,-1551,-52,1424,2894,4235,5453,6449,7193, 7689,7904,7773,7327,6601,5582,4333,2887,1324,-269,-1864,-3346,-4644,-5750,-6570,-7110,-7315,-7174,-6754,-6025, -5024,-3819,-2481,-1043,438,1932,3345,4625,5759,6669,7309,7652,7707,7442,6885,5999,4886,3549,2049,451, -1153,-2692,-4102,-5341,-6323,-7008,-7385,-7437,-7185,-6619,-5759,-4695,-3422,-2023,-541,940,2379,3750,4977,6005, 6781,7335,7557,7486,7071,6366,5381,4163,2726,1185,-407,-1998,-3498,-4851,-5967,-6812,-7382,-7615,-7514,-7112, -6435,-5486,-4321,-2989,-1553,-70,1411,2851,4143,5280,6206,6880,7270,7357,7145,6599,5781,4672,3338,1871, 290,-1348,-2870,-4298,-5562,-6599,-7306,-7728,-7821,-7597,-7046,-6235,-5189,-3948,-2566,-1111,391,1831,3235,4450, 5499,6306,6871,7114,7042,6691,6024,5067,3862,2480,923,-675,-2240,-3761,-5117,-6258,-7149,-7731,-8014,-7967, -7585,-6924,-6014,-4865,-3560,-2119,-648,824,2276,3607,4742,5713,6422,6860,6981,6792,6296,5501,4427,3152, 1663,121,-1492,-3052,-4496,-5758,-6797,-7538,-7983,-8102,-7904,-7391,-6596,-5550,-4332,-2955,-1475,14,1502,2893, 4134,5236,6093,6682,6994,7000,6675,6043,5128,3971,2610,1085,-480,-2049,-3562,-4945,-6093,-6993,-7602,-7913, -7869,-7530,-6862,-5956,-4825,-3519,-2081,-607,899,2357,3691,4886,5880,6630,7114,7276,7143,6693,5942,4923, 3653,2219,684,-911,-2458,-3901,-5189,-6226,-7011,-7484,-7625,-7454,-6964,-6184,-5179,-3957,-2595,-1134,369,1859, 3271,4560,5674,6571,7169,7518,7568,7301,6694,5807,4665,3341,1841,261,-1315,-2839,-4226,-5412,-6341,-6999, -7334,-7342,-7034,-6420,-5532,-4445,-3148,-1730,-256,1226,2692,4037,5235,6248,7033,7527,7726,7607,7173,6444, 5454,4204,2802,1233,-341,-1933,-3397,-4705,-5801,-6633,-7138,-7339,-7195,-6769,-6059,-5059,-3885,-2557,-1091,390, 1871,3283,4549,5679,6596,7233,7603,7665,7420,6845,5977,4852,3525,2027,458,-1122,-2673,-4067,-5320,-6288, -6980,-7359,-7416,-7138,-6572,-5736,-4665,-3415,-2015,-542,925,2384,3734,4966,5970,6748,7266,7521,7425,7026, 6331,5361,4125,2718,1174,-412,-1988,-3479,-4809,-5953,-6789,-7371,-7603,-7498,-7104,-6418,-5456,-4317,-2982,-1576, -84,1392,2812,4106,5246,6181,6849,7231,7315,7105,6569,5709,4649,3327,1861,278,-1323,-2876,-4291,-5556, -6546,-7256,-7683,-7786,-7573,-7038,-6209,-5176,-3930,-2545,-1090,391,1839,3215,4455,5490,6315,6884,7128,7095, 6722,6050,5103,3899,2503,995,-604,-2174,-3700,-5052,-6182,-7076,-7653,-7918,-7872,-7486,-6825,-5911,-4759,-3463, -2045,-556,925,2344,3668,4822,5788,6502,6919,7064,6888,6388,5604,4524,3260,1816,244,-1360,-2880,-4342, -5581,-6632,-7368,-7808,-7926,-7719,-7225,-6434,-5391,-4185,-2808,-1345,150,1633,3023,4293,5360,6224,6805,7119, 7132,6797,6183,5279,4107,2745,1235,-339,-1903,-3423,-4764,-5921,-6820,-7442,-7751,-7722,-7368,-6733,-5825,-4688, -3385,-1968,-489,1010,2457,3799,4996,6000,6756,7221,7389,7249,6809,6057,5022,3775,2350,824,-773,-2329, -3783,-5052,-6096,-6858,-7333,-7472,-7310,-6831,-6073,-5048,-3837,-2457,-1017,501,1984,3391,4658,5792,6657,7303, 7641,7685,7397,6805,5934,4820,3476,1991,431,-1156,-2644,-4047,-5229,-6171,-6805,-7141,-7143,-6837,-6214,-5340, -4257,-2952,-1542,-54,1449,2893,4260,5444,6471,7242,7758,7953,7843,7410,6694,5687,4443,3036,1496,-109, -1669,-3115,-4424,-5527,-6341,-6855,-7042,-6916,-6482,-5739,-4784,-3580,-2238,-806,685,2163,3570,4863,5994,6891, 7529,7893,7954,7699,7127,6283,5165,3843,2344,753,-819,-2358,-3792,-5012,-5982,-6660,-7058,-7115,-6859,-6283, -5452,-4387,-3129,-1741,-267,1194,2641,4015,5203,6240,7024,7546,7755,7672,7261,6566,5585,4358,2969,1418, -167,-1760,-3262,-4575,-5693,-6580,-7119,-7363,-7276,-6888,-6207,-5249,-4096,-2795,-1360,119,1593,3005,4287,5436, 6365,7025,7425,7503,7293,6751,5920,4831,3528,2034,473,-1106,-2662,-4080,-5338,-6344,-7063,-7470,-7577,-7330, -6809,-5983,-4964,-3722,-2340,-863,582,2063,3425,4669,5716,6525,7092,7366,7294,6955,6292,5360,4158,2759, 1253,-321,-1907,-3395,-4736,-5880,-6777,-7357,-7610,-7554,-7192,-6513,-5592,-4450,-3124,-1721,-229,1256,2677,4010, 5174,6123,6849,7268,7409,7220,6737,5930,4893,3601,2168,596,-977,-2518,-3967,-5223,-6246,-6997,-7427,-7576, -7384,-6894,-6103,-5071,-3846,-2482,-1035,459,1916,3309,4581,5641,6486,7087,7391,7359,7033,6401,5501,4328, 2949,1435,-127,-1710,-3230,-4602,-5747,-6675,-7307,-7604,-7604,-7259,-6631,-5763,-4621,-3348,-1925,-451,1030,2452, 3775,4942,5927,6648,7101,7264,7105,6652,5880,4838,3584,2143,592,-1010,-2580,-4038,-5322,-6398,-7194,-7662, -7841,-7692,-7219,-6475,-5472,-4280,-2945,-1495,-1,1448,2860,4117,5222,6089,6695,7022,7054,6752,6181,5272, 4142,2780,1284,-289,-1848,-3399,-4773,-5965,-6903,-7559,-7906,-7925,-7600,-7028,-6145,-5035,-3764,-2360,-894,607, 2059,3407,4607,5628,6394,6906,7098,6977,6559,5846,4831,3617,2195,675,-932,-2474,-3937,-5221,-6335,-7126, -7629,-7821,-7706,-7267,-6531,-5543,-4370,-3016,-1580,-74,1398,2808,4117,5238,6147,6810,7174,7239,6999,6439, 5598,4493,3185,1717,156,-1423,-2944,-4357,-5556,-6503,-7201,-7574,-7588,-7334,-6761,-5923,-4849,-3575,-2167,-688, 820,2268,3664,4868,5902,6709,7234,7469,7414,7010,6324,5340,4134,2737,1215,-379,-1934,-3404,-4716,-5827, -6693,-7233,-7450,-7369,-6954,-6247,-5320,-4158,-2821,-1392,95,1569,2989,4306,5457,6379,7038,7452,7558,7324, 6795,5990,4904,3606,2128,564,-1022,-2570,-3986,-5214,-6217,-6940,-7351,-7441,-7207,-6665,-5870,-4811,-3577,-2189, -731,760,2221,3608,4833,5883,6723,7275,7533,7485,7114,6462,5528,4323,2969,1439,-126,-1714,-3207,-4543, -5683,-6578,-7146,-7417,-7368,-7003,-6339,-5405,-4254,-2954,-1523,-44,1459,2873,4204,5361,6330,7026,7486,7611, 7431,6936,6148,5101,3822,2392,843,-736,-2279,-3708,-4977,-5992,-6714,-7165,-7282,-7072,-6552,-5780,-4764,-3534, -2158,-705,777,2260,3664,4936,5994,6850,7449,7767,7751,7445,6832,5945,4769,3410,1917,349,-1230,-2710, -4071,-5208,-6125,-6742,-7049,-7010,-6677,-6035,-5143,-4015,-2709,-1312,185,1696,3118,4447,5639,6619,7362,7818, 7980,7856,7381,6629,5628,4359,2955,1396,-173,-1721,-3170,-4457,-5491,-6273,-6755,-6921,-6767,-6294,-5536,-4542, -3348,-1998,-541,944,2406,3786,5068,6142,7037,7661,7994,8005,7714,7116,6249,5083,3754,2272,697,-895, -2409,-3819,-4965,-5909,-6572,-6894,-6935,-6630,-6055,-5198,-4111,-2841,-1460,16,1483,2936,4239,5451,6444,7204, 7672,7885,7742,7325,6586,5584,4331,2932,1360,-211,-1789,-3244,-4567,-5670,-6496,-7014,-7236,-7114,-6687,-5965, -5013,-3848,-2533,-1100,353,1823,3224,4499,5594,6474,7112,7475,7531,7248,6690,5812,4709,3379,1887,318, -1279,-2817,-4209,-5444,-6405,-7107,-7492,-7558,-7298,-6748,-5913,-4867,-3619,-2248,-790,682,2130,3467,4678,5697, 6496,6998,7230,7141,6762,6061,5080,3870,2472,947,-659,-2224,-3699,-5025,-6151,-6982,-7533,-7762,-7704,-7307, -6609,-5678,-4540,-3207,-1799,-312,1153,2562,3845,4992,5909,6593,6976,7078,6849,6304,5494,4427,3109,1667, 110,-1473,-3012,-4435,-5669,-6638,-7386,-7782,-7874,-7639,-7123,-6324,-5269,-4028,-2666,-1198,286,1736,3118,4342, 5393,6220,6767,7036,7001,6632,5987,5035,3864,2494,978,-610,-2158,-3643,-4982,-6117,-7000,-7596,-7838,-7789, -7408,-6742,-5830,-4702,-3408,-1973,-494,975,2407,3729,4880,5837,6533,6974,7112,6923,6422,5657,4600,3343, 1887,341,-1224,-2762,-4191,-5434,-6460,-7187,-7642,-7767,-7559,-7050,-6277,-5252,-4029,-2655,-1210,272,1746,3129, 4373,5455,6309,6918,7193,7198,6882,6266,5350,4215,2872,1388,-205,-1760,-3255,-4608,-5771,-6668,-7279,-7576, -7556,-7239,-6596,-5707,-4586,-3306,-1886,-410,1074,2505,3840,5024,6015,6741,7229,7391,7251,6803,6046,5035, 3782,2354,838,-736,-2264,-3727,-5013,-6049,-6821,-7295,-7443,-7297,-6805,-6064,-5069,-3872,-2501,-1070,424,1896, 3271,4552,5642,6526,7165,7485,7497,7236,6641,5762,4632,3307,1827,274,-1320,-2806,-4193,-5366,-6329,-6971, -7312,-7319,-7034,-6442,-5572,-4475,-3202,-1817,-354,1140,2575,3923,5120,6134,6893,7379,7572,7484,7042,6300, 5333,4077,2682,1151,-444,-1982,-3430,-4739,-5821,-6646,-7163,-7367,-7252,-6807,-6102,-5153,-3977,-2640,-1186,260, 1717,3144,4415,5533,6405,7054,7436,7467,7212,6657,5813,4688,3382,1899,351,-1236,-2752,-4170,-5371,-6353, -7043,-7420,-7474,-7206,-6658,-5830,-4770,-3510,-2144,-672,794,2246,3591,4809,5830,6623,7139,7388,7290,6897, 6204,5237,4036,2639,1127,-438,-2017,-3478,-4808,-5920,-6769,-7305,-7554,-7460,-7065,-6393,-5438,-4292,-2976,-1543, -80,1397,2816,4111,5253,6177,6854,7232,7334,7114,6598,5769,4691,3378,1936,369,-1207,-2742,-4139,-5378, -6384,-7113,-7511,-7606,-7381,-6884,-6053,-5029,-3796,-2446,-979,487,1956,3315,4549,5586,6399,6962,7224,7181, 6826,6159,5209,4032,2663,1145,-448,-1998,-3486,-4847,-5978,-6827,-7441,-7697,-7670,-7311,-6647,-5745,-4627,-3305, -1882,-414,1051,2470,3780,4937,5881,6593,7016,7145,6941,6449,5673,4650,3341,1913,377,-1211,-2734,-4188, -5445,-6464,-7216,-7661,-7771,-7591,-7096,-6326,-5315,-4092,-2734,-1290,222,1672,3059,4297,5358,6225,6817,7099, 7118,6793,6181,5270,4120,2779,1291,-286,-1845,-3344,-4680,-5843,-6753,-7356,-7649,-7658,-7293,-6670,-5771,-4659, -3373,-1965,-469,996,2438,3770,4964,5959,6695,7150,7327,7181,6738,6007,4993,3761,2321,803,-749,-2307, -3737,-4989,-6043,-6812,-7297,-7445,-7272,-6804,-6074,-5052,-3846,-2503,-1058,410,1889,3297,4559,5670,6546,7174, 7497,7509,7250,6663,5774,4681,3352,1881,326,-1246,-2747,-4104,-5302,-6226,-6867,-7200,-7226,-6923,-6329,-5476, -4386,-3118,-1723,-252,1237,2661,4004,5200,6192,6983,7467,7657,7552,7109,6399,5415,4184,2778,1257,-332, -1878,-3328,-4621,-5692,-6519,-7050,-7238,-7125,-6689,-5975,-5022,-3867,-2521,-1106,372,1843,3225,4516,5606,6493, 7150,7504,7558,7323,6765,5927,4797,3480,2013,463,-1129,-2628,-4043,-5248,-6235,-6918,-7297,-7354,-7114,-6545, -5733,-4648,-3415,-2054,-611,883,2314,3675,4880,5900,6680,7211,7419,7362,6964,6289,5336,4118,2717,1206, -365,-1907,-3397,-4684,-5771,-6628,-7162,-7427,-7332,-6941,-6256,-5331,-4172,-2867,-1441,19,1490,2905,4199,5330, 6278,6943,7360,7434,7213,6693,5895,4805,3539,2075,528,-1037,-2580,-3989,-5204,-6203,-6920,-7313,-7417,-7187, -6674,-5877,-4825,-3618,-2263,-811,673,2119,3468,4690,5750,6549,7107,7387,7331,6979,6314,5382,4208,2834, 1344,-230,-1805,-3273,-4627,-5760,-6622,-7219,-7511,-7441,-7092,-6439,-5527,-4428,-3125,-1697,-250,1221,2646,3951, 5100,6037,6741,7170,7280,7113,6623,5837,4784,3510,2065,536,-1055,-2588,-3994,-5270,-6282,-7058,-7499,-7632, -7444,-6968,-6175,-5161,-3957,-2618,-1172,307,1775,3122,4389,5466,6317,6874,7161,7166,6859,6213,5324,4155, 2817,1319,-241,-1804,-3294,-4655,-5809,-6702,-7314,-7622,-7619,-7291,-6652,-5767,-4661,-3355,-1961,-487,971,2410, 3747,4927,5904,6651,7108,7282,7139,6684,5944,4934,3673,2292,756,-794,-2345,-3778,-5051,-6090,-6871,-7341, -7501,-7339,-6878,-6140,-5130,-3929,-2588,-1145,341,1809,3213,4480,5580,6463,7066,7429,7452,7171,6594,5713, 4608,3279,1801,254,-1287,-2787,-4141,-5336,-6264,-6905,-7227,-7245,-6938,-6338,-5474,-4409,-3150,-1738,-270,1201, 2643,3991,5196,6192,6958,7457,7661,7546,7153,6439,5454,4238,2812,1304,-249,-1800,-3256,-4535,-5609,-6437, -6948,-7155,-6999,-6581,-5892,-4935,-3759,-2414,-1000,471,1936,3323,4582,5723,6608,7277,7620,7661,7426,6866, 6023,4916,3604,2158,601,-963,-2476,-3868,-5099,-6059,-6746,-7123,-7180,-6935,-6394,-5547,-4526,-3270,-1896,-443, 1027,2433,3783,5002,6024,6805,7341,7541,7470,7062,6373,5415,4223,2812,1323,-258,-1804,-3292,-4615,-5713, -6571,-7128,-7343,-7275,-6881,-6210,-5298,-4126,-2820,-1434,38,1505,2915,4199,5312,6229,6899,7294,7399,7185, 6659,5829,4740,3461,2006,455,-1107,-2636,-4052,-5281,-6279,-7002,-7402,-7517,-7299,-6770,-5966,-4947,-3720,-2362, -917,554,1991,3366,4609,5603,6412,6965,7237,7188,6816,6182,5259,4074,2681,1204,-371,-1925,-3394,-4736, -5878,-6744,-7332,-7613,-7573,-7215,-6565,-5668,-4538,-3246,-1836,-389,1090,2513,3815,4952,5908,6598,7036,7157, 6973,6482,5713,4646,3387,1976,430,-1144,-2699,-4095,-5348,-6411,-7114,-7568,-7693,-7526,-7045,-6276,-5266,-4064, -2697,-1259,206,1663,3032,4270,5339,6193,6773,7088,7067,6761,6130,5229,4100,2751,1248,-283,-1852,-3324, -4699,-5869,-6745,-7371,-7692,-7663,-7334,-6727,-5851,-4750,-3474,-2063,-624,879,2309,3637,4791,5760,6490,6973, 7125,6995,6557,5810,4784,3543,2113,616,-943,-2491,-3905,-5173,-6216,-6989,-7476,-7620,-7456,-7020,-6265,-5273, -4069,-2724,-1305,195,1648,3049,4337,5430,6313,6929,7255,7288,7018,6425,5581,4466,3154,1682,133,-1414, -2889,-4284,-5427,-6356,-6986,-7333,-7360,-7057,-6442,-5595,-4505,-3229,-1838,-361,1105,2541,3917,5094,6098,6880, 7379,7593,7469,7055,6361,5383,4172,2803,1294,-270,-1827,-3263,-4529,-5596,-6418,-6918,-7117,-6996,-6550,-5841, -4877,-3701,-2392,-939,519,2016,3394,4688,5793,6710,7352,7711,7788,7546,6987,6131,5058,3770,2286,754, -812,-2325,-3713,-4917,-5879,-6550,-6931,-7008,-6722,-6195,-5353,-4314,-3074,-1695,-245,1213,2662,4012,5212,6238, 6995,7521,7779,7653,7294,6597,5643,4441,3051,1539,-16,-1582,-3042,-4368,-5464,-6306,-6849,-7113,-7020,-6650, -5956,-5043,-3892,-2601,-1185,272,1744,3139,4434,5573,6480,7170,7537,7635,7432,6906,6091,5027,3748,2303, 743,-824,-2334,-3741,-4983,-5954,-6677,-7095,-7206,-6993,-6463,-5670,-4645,-3419,-2049,-589,866,2302,3659,4895, 5942,6748,7304,7588,7529,7157,6524,5602,4409,3052,1558,15,-1545,-3034,-4369,-5482,-6357,-6971,-7212,-7173, -6814,-6173,-5280,-4144,-2861,-1458,22,1478,2898,4194,5336,6288,7000,7409,7542,7368,6890,6110,5061,3786, 2364,828,-729,-2269,-3663,-4912,-5961,-6713,-7150,-7276,-7111,-6616,-5875,-4861,-3665,-2319,-876,588,2013,3418, 4647,5707,6535,7112,7406,7413,7062,6459,5552,4419,3051,1550,-13,-1572,-3070,-4412,-5566,-6487,-7128,-7439, -7436,-7115,-6511,-5651,-4542,-3294,-1900,-459,1014,2435,3741,4914,5887,6603,7046,7190,7031,6580,5805,4792, 3557,2131,611,-973,-2527,-3949,-5233,-6300,-7062,-7548,-7732,-7582,-7151,-6428,-5436,-4256,-2927,-1501,-30,1407, 2792,4049,5132,5994,6608,6937,6980,6674,6094,5203,4099,2767,1289,-265,-1805,-3315,-4696,-5881,-6816,-7460, -7813,-7845,-7556,-6957,-6106,-5042,-3769,-2377,-943,577,2004,3359,4512,5520,6272,6786,6969,6871,6442,5745, 4749,3528,2145,641,-956,-2458,-3896,-5192,-6260,-7075,-7593,-7779,-7667,-7227,-6499,-5542,-4369,-3040,-1632,-131, 1312,2717,4018,5127,6032,6672,7034,7113,6872,6322,5494,4401,3123,1659,119,-1438,-2942,-4326,-5504,-6484, -7143,-7530,-7589,-7339,-6755,-5948,-4884,-3645,-2241,-785,666,2097,3482,4673,5695,6501,7027,7242,7164,6785, 6104,5148,3958,2599,1093,-480,-2022,-3487,-4779,-5868,-6731,-7250,-7484,-7406,-7030,-6338,-5397,-4248,-2965,-1540, -39,1412,2809,4093,5243,6164,6821,7234,7325,7113,6597,5799,4732,3443,2006,465,-1076,-2597,-3975,-5211, -6217,-6898,-7324,-7432,-7197,-6671,-5872,-4847,-3642,-2260,-834,638,2092,3466,4670,5710,6509,7072,7350,7287, 6975,6322,5388,4206,2854,1367,-163,-1740,-3202,-4532,-5645,-6515,-7102,-7394,-7325,-6980,-6313,-5409,-4289,-3001, -1611,-157,1337,2739,4046,5195,6144,6846,7261,7391,7219,6727,5956,4919,3660,2247,713,-842,-2367,-3778, -5035,-6037,-6791,-7242,-7376,-7195,-6705,-5953,-4943,-3740,-2403,-945,489,1947,3305,4558,5616,6467,7039,7346, 7326,7008,6396,5501,4369,3006,1533,-27,-1557,-3063,-4399,-5538,-6443,-7080,-7371,-7368,-7049,-6451,-5573,-4466, -3194,-1834,-346,1097,2534,3841,4974,5967,6681,7151,7311,7169,6715,5966,4942,3702,2296,774,-773,-2320, -3736,-5002,-6073,-6845,-7322,-7498,-7346,-6878,-6146,-5165,-4002,-2680,-1259,227,1661,3067,4323,5394,6256,6873, 7200,7224,6940,6372,5497,4400,3074,1612,36,-1485,-3003,-4350,-5512,-6451,-7088,-7448,-7467,-7178,-6605,-5735, -4647,-3403,-2012,-565,910,2348,3667,4872,5871,6632,7116,7315,7206,6788,6081,5096,3889,2501,995,-567, -2109,-3539,-4818,-5906,-6705,-7212,-7408,-7314,-6880,-6177,-5203,-4061,-2732,-1299,174,1622,2995,4285,5400,6278, 6946,7313,7386,7132,6565,5727,4665,3353,1907,367,-1182,-2686,-4086,-5272,-6218,-6922,-7300,-7356,-7089,-6547, -5724,-4671,-3418,-2055,-625,882,2313,3663,4854,5866,6664,7182,7393,7327,6945,6271,5307,4105,2728,1254, -326,-1866,-3317,-4613,-5727,-6569,-7130,-7361,-7294,-6880,-6220,-5289,-4166,-2860,-1448,25,1475,2886,4190,5319, 6231,6896,7288,7391,7172,6649,5873,4799,3530,2072,542,-1023,-2534,-3939,-5134,-6132,-6841,-7254,-7374,-7121, -6596,-5809,-4797,-3573,-2201,-768,705,2149,3519,4729,5785,6613,7151,7421,7372,7037,6390,5460,4295,2963, 1462,-85,-1625,-3104,-4421,-5544,-6438,-6987,-7271,-7214,-6881,-6231,-5307,-4191,-2905,-1499,-34,1436,2851,4130, 5306,6273,6939,7385,7531,7346,6838,6059,5037,3787,2363,836,-724,-2230,-3653,-4913,-5921,-6664,-7117,-7243, -7047,-6563,-5807,-4817,-3624,-2267,-834,621,2083,3443,4696,5748,6571,7155,7456,7447,7120,6518,5615,4456, 3115,1653,99,-1463,-2942,-4297,-5445,-6345,-6990,-7284,-7277,-6962,-6359,-5496,-4406,-3132,-1761,-307,1172,2555, 3893,5048,6026,6738,7179,7330,7211,6726,5972,4965,3735,2310,768,-794,-2327,-3770,-5044,-6074,-6878,-7347, -7542,-7404,-6958,-6231,-5259,-4090,-2773,-1336,129,1552,2930,4178,5233,6114,6721,7053,7052,6762,6173,5307, 4179,2871,1396,-144,-1724,-3187,-4570,-5733,-6691,-7339,-7677,-7705,-7418,-6859,-6024,-4936,-3693,-2338,-882,599, 2012,3354,4526,5506,6260,6737,6954,6847,6418,5702,4717,3507,2115,597,-945,-2471,-3916,-5213,-6283,-7098, -7587,-7821,-7686,-7273,-6557,-5605,-4467,-3154,-1729,-263,1180,2586,3849,4975,5853,6498,6862,6935,6679,6136, 5304,4213,2918,1473,-51,-1608,-3103,-4475,-5672,-6620,-7281,-7680,-7739,-7462,-6933,-6100,-5052,-3801,-2443,-1000, 478,1923,3263,4479,5495,6296,6821,7047,6964,6592,5917,4981,3788,2435,937,-625,-2155,-3602,-4913,-5997, -6837,-7375,-7606,-7528,-7136,-6441,-5513,-4380,-3058,-1656,-183,1265,2660,3956,5092,6009,6705,7110,7215,6989, 6461,5656,4622,3339,1923,400,-1136,-2635,-4052,-5248,-6223,-6936,-7319,-7421,-7192,-6666,-5869,-4852,-3606,-2247, -796,683,2123,3480,4699,5739,6590,7141,7393,7376,7032,6382,5474,4316,2976,1510,-51,-1563,-3041,-4350, -5468,-6341,-6902,-7152,-7151,-6745,-6103,-5200,-4085,-2799,-1386,102,1534,2981,4284,5452,6399,7090,7526,7686, 7485,7015,6262,5242,3998,2575,1043,-467,-1986,-3403,-4626,-5615,-6345,-6790,-6911,-6740,-6219,-5479,-4449,-3239, -1883,-467,1007,2461,3839,5099,6172,7003,7607,7897,7880,7572,6981,6090,4966,3644,2177,644,-924,-2377, -3712,-4875,-5752,-6350,-6661,-6629,-6325,-5711,-4836,-3729,-2465,-1068,392,1877,3268,4597,5781,6747,7466,7946, 8097,7958,7509,6771,5780,4557,3132,1641,98,-1430,-2861,-4134,-5169,-5944,-6417,-6578,-6428,-5994,-5250,-4274, -3092,-1764,-363,1102,2566,3952,5202,6266,7143,7757,8072,8108,7837,7248,6365,5241,3924,2473,924,-636, -2108,-3490,-4641,-5586,-6243,-6585,-6621,-6353,-5775,-4927,-3853,-2617,-1259,195,1646,3039,4380,5571,6541,7278, 7762,7950,7837,7405,6697,5722,4481,3096,1574,1,-1512,-2980,-4271,-5330,-6159,-6668,-6908,-6798,-6385,-5693, -4762,-3597,-2320,-885,539,1984,3347,4603,5691,6589,7212,7556,7608,7330,6791,5947,4837,3539,2095,538, -1020,-2556,-3932,-5132,-6116,-6812,-7180,-7258,-7023,-6502,-5676,-4656,-3448,-2091,-652,794,2207,3533,4725,5731, 6502,7000,7246,7136,6750,6052,5090,3889,2521,1000,-533,-2098,-3540,-4864,-5978,-6819,-7366,-7655,-7561,-7191, -6531,-5615,-4515,-3224,-1800,-367,1067,2467,3750,4859,5757,6406,6816,6884,6666,6157,5331,4274,2995,1549, 19,-1552,-3064,-4441,-5688,-6664,-7396,-7806,-7909,-7704,-7203,-6421,-5394,-4190,-2844,-1413,40,1483,2818,4055, 5081,5882,6422,6671,6634,6296,5636,4717,3559,2203,718,-865,-2386,-3852,-5170,-6306,-7167,-7733,-8007,-7990, -7633,-6972,-6094,-4988,-3696,-2309,-841,599,2005,3318,4440,5389,6092,6513,6649,6461,5975,5215,4172,2915, 1530,-18,-1561,-3081,-4488,-5723,-6741,-7491,-7922,-8057,-7876,-7397,-6649,-5643,-4425,-3108,-1662,-194,1269,2630, 3841,4925,5786,6346,6624,6638,6327,5713,4814,3674,2355,895,-652,-2180,-3651,-4984,-6146,-7030,-7636,-7929, -7930,-7607,-6981,-6113,-5021,-3774,-2369,-911,559,1998,3313,4485,5460,6181,6652,6833,6691,6253,5511,4521, 3296,1878,385,-1146,-2660,-4061,-5312,-6348,-7111,-7597,-7746,-7587,-7127,-6402,-5401,-4243,-2887,-1455,7,1472, 2854,4106,5223,6084,6704,7056,7085,6798,6248,5370,4298,2996,1545,23,-1524,-2987,-4347,-5504,-6419,-7038, -7379,-7399,-7124,-6535,-5673,-4606,-3339,-1943,-491,987,2395,3737,4969,5937,6680,7219,7420,7321,6899,6198, 5231,4039,2652,1183,-358,-1867,-3321,-4588,-5643,-6449,-6950,-7138,-7020,-6600,-5890,-4945,-3768,-2457,-1051,436, 1895,3287,4558,5662,6555,7217,7553,7633,7401,6849,6024,4928,3644,2198,668,-858,-2352,-3723,-4899,-5869, -6543,-6926,-6995,-6747,-6175,-5383,-4317,-3099,-1742,-297,1176,2582,3945,5134,6148,6938,7443,7676,7627,7213, 6545,5609,4434,3068,1563,50,-1485,-2941,-4247,-5335,-6173,-6737,-6982,-6921,-6524,-5874,-4962,-3818,-2522,-1121, 333,1787,3168,4456,5571,6501,7167,7552,7637,7412,6909,6086,5036,3777,2325,815,-738,-2261,-3644,-4861, -5861,-6565,-6988,-7084,-6878,-6388,-5609,-4583,-3386,-2057,-614,856,2286,3622,4834,5875,6697,7234,7516,7475, 7118,6481,5547,4400,3059,1566,40,-1510,-2957,-4291,-5423,-6287,-6875,-7166,-7129,-6797,-6133,-5256,-4163,-2884, -1482,-41,1420,2815,4122,5257,6193,6901,7316,7449,7283,6809,6046,5000,3745,2341,833,-737,-2228,-3651, -4903,-5914,-6681,-7130,-7265,-7100,-6627,-5860,-4862,-3685,-2366,-935,517,1974,3328,4581,5635,6474,7046,7346, 7343,7028,6391,5516,4384,3066,1584,36,-1518,-2977,-4327,-5468,-6370,-7016,-7298,-7325,-7003,-6414,-5550,-4474, -3209,-1827,-381,1053,2474,3794,4945,5929,6665,7117,7284,7131,6688,5945,4962,3719,2338,826,-717,-2265, -3701,-4954,-5988,-6811,-7279,-7452,-7336,-6893,-6181,-5214,-4054,-2734,-1302,154,1607,2972,4213,5311,6173,6787, 7120,7167,6887,6311,5456,4329,3050,1596,43,-1493,-2977,-4350,-5528,-6467,-7116,-7465,-7512,-7226,-6667,-5820, -4780,-3521,-2132,-695,745,2207,3517,4712,5709,6462,6960,7177,7077,6676,5967,5014,3809,2418,916,-625, -2139,-3584,-4862,-5944,-6746,-7286,-7497,-7388,-6982,-6295,-5341,-4189,-2876,-1483,-15,1443,2854,4106,5228,6122, 6784,7150,7223,6990,6465,5629,4577,3280,1851,314,-1222,-2727,-4098,-5304,-6263,-6945,-7336,-7419,-7183,-6646, -5828,-4812,-3580,-2202,-773,702,2126,3484,4694,5711,6516,7052,7289,7212,6834,6181,5247,4077,2700,1235, -326,-1859,-3317,-4636,-5724,-6579,-7144,-7373,-7318,-6949,-6307,-5390,-4260,-2971,-1589,-137,1321,2744,4017,5137, 6068,6750,7133,7247,7030,6546,5746,4673,3426,1996,472,-1082,-2595,-4000,-5228,-6247,-6964,-7381,-7498,-7317, -6802,-6032,-5012,-3827,-2483,-1060,442,1824,3206,4406,5484,6288,6850,7116,7103,6749,6132,5214,4054,2711, 1243,-297,-1833,-3309,-4655,-5776,-6661,-7253,-7549,-7522,-7184,-6567,-5675,-4574,-3301,-1909,-457,999,2425,3720, 4858,5826,6533,6978,7100,6952,6486,5729,4715,3471,2068,562,-997,-2516,-3915,-5157,-6213,-6955,-7416,-7567, -7405,-6936,-6193,-5188,-4020,-2684,-1260,213,1650,3024,4270,5345,6190,6796,7104,7122,6827,6237,5346,4223, 2913,1450,-90,-1637,-3120,-4475,-5633,-6527,-7154,-7505,-7499,-7192,-6591,-5755,-4678,-3412,-2038,-604,888,2290, 3630,4793,5764,6495,6967,7154,7029,6598,5881,4885,3665,2282,770,-777,-2290,-3706,-4981,-6029,-6830,-7334, -7515,-7385,-6943,-6226,-5269,-4103,-2803,-1394,90,1523,2902,4193,5273,6145,6767,7128,7177,6911,6342,5508, 4432,3121,1659,124,-1401,-2886,-4263,-5433,-6383,-7049,-7413,-7453,-7190,-6615,-5800,-4754,-3495,-2129,-677,770, 2205,3559,4754,5755,6529,7019,7258,7151,6767,6095,5132,3943,2597,1104,-441,-1967,-3414,-4705,-5778,-6605, -7114,-7332,-7253,-6852,-6170,-5225,-4074,-2801,-1361,116,1570,2962,4237,5367,6276,6917,7310,7407,7199,6665, 5873,4808,3542,2111,579,-943,-2444,-3812,-5023,-6003,-6684,-7074,-7161,-6913,-6385,-5579,-4575,-3338,-1973,-527, 933,2381,3727,4943,5970,6771,7327,7605,7540,7184,6531,5600,4461,3094,1627,95,-1453,-2901,-4212,-5314, -6169,-6731,-6992,-6924,-6563,-5918,-5013,-3896,-2613,-1221,252,1708,3107,4392,5561,6477,7179,7579,7706,7519, 7027,6250,5221,3963,2556,1030,-510,-2029,-3417,-4674,-5660,-6393,-6821,-6963,-6780,-6291,-5500,-4523,-3325,-1979, -534,915,2342,3721,4958,5993,6843,7410,7688,7693,7340,6720,5849,4692,3349,1889,351,-1188,-2665,-4001, -5133,-6017,-6633,-6925,-6915,-6584,-5988,-5104,-4008,-2747,-1375,80,1535,2962,4253,5400,6366,7104,7531,7690, 7532,7066,6323,5309,4091,2686,1204,-365,-1877,-3308,-4547,-5605,-6382,-6838,-7022,-6871,-6411,-5691,-4713,-3540, -2218,-793,664,2098,3487,4721,5791,6634,7225,7557,7570,7271,6692,5824,4710,3378,1906,390,-1151,-2670, -4002,-5176,-6101,-6748,-7105,-7133,-6834,-6284,-5419,-4367,-3120,-1760,-322,1132,2555,3861,5016,6018,6763,7243, 7414,7293,6878,6153,5157,3962,2562,1058,-506,-2032,-3480,-4770,-5826,-6630,-7144,-7344,-7244,-6819,-6140,-5182, -4052,-2719,-1326,130,1564,2936,4205,5308,6167,6796,7161,7218,6944,6380,5547,4475,3169,1707,190,-1362, -2866,-4263,-5452,-6394,-7100,-7482,-7534,-7293,-6747,-5935,-4893,-3652,-2309,-874,605,2018,3353,4541,5550,6323, 6842,7044,6976,6581,5914,4945,3763,2390,901,-653,-2166,-3626,-4923,-6014,-6849,-7391,-7608,-7552,-7178,-6481, -5584,-4443,-3155,-1748,-284,1160,2566,3856,4962,5888,6551,6944,7048,6827,6313,5514,4450,3186,1748,233, -1308,-2805,-4224,-5416,-6385,-7095,-7511,-7619,-7392,-6875,-6090,-5059,-3850,-2500,-1069,384,1825,3199,4410,5446, 6262,6808,7056,7029,6686,6044,5133,3962,2624,1153,-377,-1928,-3380,-4677,-5815,-6681,-7253,-7522,-7474,-7145, -6501,-5588,-4486,-3213,-1804,-345,1119,2517,3816,4969,5915,6597,7036,7177,7006,6514,5757,4713,3482,2050, 552,-1004,-2515,-3916,-5160,-6165,-6916,-7362,-7511,-7321,-6845,-6093,-5110,-3921,-2571,-1137,299,1773,3134,4383, 5417,6264,6847,7161,7132,6851,6228,5353,4207,2892,1420,-119,-1668,-3127,-4475,-5618,-6520,-7144,-7448,-7427, -7111,-6508,-5631,-4531,-3281,-1892,-418,1036,2438,3756,4943,5911,6653,7089,7266,7135,6682,5963,4976,3741, 2355,844,-699,-2200,-3640,-4899,-5922,-6723,-7183,-7366,-7210,-6759,-6020,-5052,-3871,-2551,-1118,347,1789,3178, 4440,5528,6404,7013,7352,7389,7116,6541,5694,4577,3282,1830,299,-1243,-2733,-4085,-5251,-6171,-6825,-7174, -7197,-6916,-6341,-5500,-4431,-3195,-1805,-374,1086,2529,3850,5038,6040,6822,7282,7514,7395,7011,6297,5319, 4121,2752,1244,-299,-1828,-3258,-4548,-5624,-6430,-6954,-7161,-7065,-6647,-5951,-5006,-3867,-2558,-1140,301,1760, 3156,4418,5538,6411,7045,7438,7482,7245,6702,5881,4808,3494,2062,533,-1016,-2538,-3894,-5096,-6062,-6778, -7151,-7229,-6987,-6469,-5662,-4625,-3387,-2055,-607,845,2277,3609,4819,5835,6606,7130,7356,7300,6930,6236, 5293,4108,2742,1242,-307,-1839,-3293,-4604,-5718,-6562,-7138,-7373,-7331,-6953,-6282,-5377,-4267,-2972,-1574,-114, 1322,2709,4000,5125,6033,6718,7113,7215,7004,6481,5689,4650,3360,1940,426,-1120,-2642,-4040,-5268,-6258, -6984,-7420,-7514,-7303,-6806,-6033,-5023,-3817,-2471,-1047,437,1865,3228,4426,5465,6294,6843,7112,7085,6752, 6119,5197,4056,2715,1239,-314,-1842,-3313,-4625,-5769,-6642,-7226,-7500,-7486,-7139,-6510,-5607,-4512,-3238,-1842, -383,1075,2489,3781,4936,5893,6585,7023,7177,7014,6550,5782,4768,3533,2102,599,-941,-2453,-3867,-5112, -6143,-6880,-7350,-7497,-7325,-6850,-6120,-5120,-3927,-2589,-1186,273,1720,3090,4328,5387,6244,6838,7150,7141, 6846,6256,5365,4247,2940,1475,-68,-1627,-3087,-4448,-5601,-6509,-7123,-7452,-7453,-7158,-6566,-5699,-4603,-3369, -1968,-533,936,2342,3659,4846,5821,6544,7030,7202,7077,6633,5905,4918,3712,2293,799,-733,-2248,-3686, -4947,-5997,-6784,-7299,-7477,-7337,-6896,-6184,-5232,-4066,-2738,-1330,136,1592,2973,4243,5326,6202,6832,7186, 7204,6968,6395,5565,4455,3155,1717,191,-1376,-2840,-4209,-5376,-6328,-6972,-7336,-7356,-7098,-6526,-5696,-4627, -3406,-2027,-581,904,2318,3662,4866,5873,6635,7138,7364,7271,6875,6185,5240,4043,2685,1191,-360,-1869, -3319,-4613,-5665,-6505,-7009,-7247,-7135,-6728,-6033,-5110,-3950,-2638,-1218,234,1695,3087,4379,5477,6400,7048, 7450,7521,7290,6773,5965,4880,3630,2204,680,-868,-2377,-3740,-4947,-5921,-6618,-7003,-7089,-6848,-6331,-5526, -4489,-3269,-1901,-466,995,2436,3778,4980,6014,6821,7340,7602,7531,7169,6508,5572,4412,3058,1555,16, -1516,-2975,-4304,-5427,-6271,-6836,-7115,-7043,-6693,-6044,-5143,-4026,-2743,-1344,103,1552,2950,4260,5371,6283, 6964,7382,7464,7268,6773,5989,4933,3670,2253,739,-819,-2336,-3743,-4974,-5975,-6724,-7160,-7276,-7087,-6630, -5839,-4845,-3641,-2314,-890,564,2011,3360,4578,5630,6454,7016,7276,7262,6941,6305,5388,4248,2913,1426, -114,-1650,-3129,-4466,-5617,-6495,-7103,-7400,-7393,-7060,-6435,-5555,-4483,-3199,-1809,-354,1080,2493,3803,4962, 5906,6627,7073,7217,7055,6606,5843,4836,3590,2196,688,-859,-2382,-3806,-5053,-6057,-6839,-7313,-7462,-7293, -6840,-6109,-5120,-3940,-2600,-1186,293,1726,3104,4346,5423,6272,6876,7183,7222,6921,6340,5461,4333,3026, 1579,40,-1493,-2981,-4340,-5497,-6415,-7056,-7369,-7413,-7109,-6528,-5661,-4608,-3343,-1966,-524,936,2365,3688, 4871,5848,6590,7067,7281,7141,6708,6007,5031,3821,2405,907,-635,-2154,-3594,-4865,-5915,-6721,-7234,-7423, -7297,-6872,-6170,-5213,-4050,-2747,-1331,129,1582,2966,4212,5323,6205,6835,7179,7221,6978,6425,5573,4501, 3195,1761,211,-1338,-2837,-4193,-5401,-6336,-7020,-7380,-7448,-7188,-6640,-5820,-4775,-3540,-2177,-741,729,2149, 3488,4691,5706,6468,6972,7196,7134,6733,6053,5092,3921,2532,1049,-495,-2014,-3481,-4776,-5857,-6684,-7221, -7454,-7366,-6969,-6299,-5386,-4232,-2920,-1507,-53,1405,2805,4091,5216,6124,6789,7197,7269,7065,6545,5747, 4676,3412,1986,466,-1087,-2568,-3960,-5148,-6155,-6841,-7249,-7326,-7125,-6585,-5797,-4749,-3556,-2203,-764,719, 2129,3497,4725,5763,6573,7116,7374,7336,6976,6339,5424,4258,2921,1441,-99,-1633,-3100,-4421,-5530,-6385, -6964,-7230,-7179,-6820,-6179,-5286,-4163,-2870,-1482,-30,1437,2835,4154,5270,6229,6929,7348,7467,7294,6802, 6039,4988,3739,2323,802,-753,-2265,-3665,-4900,-5915,-6664,-7106,-7228,-7049,-6569,-5809,-4809,-3636,-2280,-853, 600,2041,3394,4634,5691,6523,7083,7390,7383,7057,6445,5547,4408,3077,1596,59,-1489,-2977,-4312,-5451, -6345,-6966,-7280,-7274,-6947,-6337,-5489,-4392,-3134,-1735,-300,1159,2578,3899,5059,6001,6731,7200,7339,7195, 6749,5998,5001,3759,2364,864,-682,-2208,-3633,-4888,-5931,-6720,-7201,-7366,-7231,-6788,-6041,-5077,-3886,-2569, -1149,314,1770,3135,4398,5465,6339,6932,7262,7290,7012,6425,5577,4464,3162,1716,170,-1371,-2847,-4214, -5385,-6309,-6932,-7282,-7319,-7029,-6442,-5613,-4544,-3291,-1917,-470,983,2398,3741,4940,5907,6673,7168,7376, 7258,6854,6158,5193,3975,2603,1101,-435,-1976,-3402,-4683,-5729,-6562,-7068,-7273,-7147,-6741,-6044,-5114,-3931, -2629,-1219,253,1717,3090,4357,5463,6353,7004,7351,7426,7190,6631,5792,4720,3440,2010,471,-1064,-2556, -3933,-5135,-6100,-6763,-7151,-7227,-6976,-6436,-5618,-4592,-3361,-2002,-553,903,2336,3669,4880,5882,6668,7195, 7438,7351,6969,6307,5360,4167,2814,1325,-219,-1762,-3199,-4516,-5599,-6452,-7005,-7243,-7173,-6799,-6143,-5227, -4088,-2796,-1404,56,1503,2908,4165,5319,6227,6898,7282,7383,7166,6670,5860,4812,3540,2133,590,-956, -2469,-3843,-5077,-6063,-6790,-7208,-7318,-7118,-6608,-5820,-4815,-3598,-2259,-827,629,2056,3406,4637,5672,6477, 7036,7302,7269,6904,6271,5354,4205,2856,1384,-159,-1701,-3178,-4499,-5626,-6492,-7095,-7371,-7335,-6992,-6364, -5483,-4376,-3085,-1713,-262,1201,2604,3902,5041,5989,6701,7110,7263,7087,6620,5845,4813,3571,2167,658, -916,-2423,-3829,-5077,-6115,-6852,-7305,-7436,-7286,-6802,-6046,-5059,-3895,-2547,-1119,348,1779,3144,4386,5456, 6281,6859,7154,7175,6857,6256,5371,4275,2925,1468,-73,-1602,-3090,-4428,-5588,-6479,-7114,-7437,-7429,-7125, -6544,-5681,-4581,-3322,-1938,-497,963,2383,3701,4860,5842,6567,7036,7203,7066,6634,5914,4896,3688,2292, 778,-770,-2282,-3709,-4969,-6029,-6815,-7305,-7473,-7337,-6899,-6181,-5214,-4059,-2735,-1309,155,1598,2974,4230, 5318,6191,6809,7145,7193,6916,6335,5496,4399,3103,1644,117,-1426,-2910,-4290,-5454,-6391,-7037,-7399,-7433, -7163,-6580,-5760,-4710,-3452,-2082,-643,826,2255,3583,4766,5765,6543,7045,7243,7153,6749,6060,5092,3896, 2530,1042,-514,-2042,-3472,-4758,-5837,-6647,-7172,-7391,-7293,-6896,-6184,-5259,-4101,-2816,-1394,64,1524,2906, 4191,5294,6212,6846,7227,7299,7079,6532,5729,4656,3370,1924,412,-1139,-2619,-4019,-5207,-6171,-6861,-7245, -7326,-7095,-6552,-5761,-4717,-3494,-2119,-694,771,2211,3549,4759,5777,6580,7122,7358,7285,6930,6268,5328, 4147,2803,1316,-220,-1775,-3217,-4525,-5634,-6494,-7050,-7303,-7242,-6878,-6224,-5313,-4178,-2906,-1493,-50,1410, 2812,4101,5227,6166,6837,7247,7354,7173,6658,5863,4824,3552,2136,617,-933,-2439,-3822,-5062,-6062,-6786, -7222,-7343,-7138,-6630,-5860,-4863,-3675,-2316,-877,560,1999,3376,4596,5652,6454,7020,7306,7259,6939,6309, 5407,4253,2914,1433,-90,-1650,-3101,-4441,-5565,-6458,-7060,-7356,-7329,-6992,-6382,-5494,-4398,-3121,-1748,-289, 1167,2582,3892,5040,5990,6710,7136,7289,7126,6674,5913,4893,3663,2253,744,-808,-2324,-3724,-4991,-6012, -6774,-7225,-7394,-7234,-6764,-6024,-5045,-3855,-2528,-1092,353,1799,3172,4427,5487,6345,6942,7244,7268,6961, 6376,5496,4382,3048,1610,53,-1484,-2976,-4310,-5468,-6387,-7031,-7345,-7367,-7080,-6495,-5626,-4564,-3298,-1947, -486,972,2401,3713,4878,5863,6606,7077,7260,7142,6715,5988,4985,3774,2398,890,-669,-2190,-3613,-4901, -5967,-6743,-7255,-7426,-7326,-6894,-6177,-5218,-4072,-2766,-1333,119,1567,2950,4214,5308,6181,6806,7163,7203, 6934,6383,5540,4465,3148,1700,176,-1374,-2865,-4235,-5412,-6361,-7032,-7401,-7441,-7181,-6633,-5812,-4759,-3520, -2156,-721,759,2184,3530,4708,5709,6492,7000,7211,7139,6756,6079,5103,3923,2560,1079,-487,-2013,-3448, -4729,-5822,-6643,-7174,-7393,-7327,-6912,-6238,-5289,-4156,-2852,-1442,29,1477,2865,4157,5283,6198,6855,7243, 7336,7110,6584,5791,4736,3461,2019,501,-1027,-2532,-3929,-5117,-6093,-6791,-7200,-7278,-7048,-6526,-5745,-4705, -3475,-2129,-686,771,2213,3564,4768,5796,6605,7155,7397,7342,7000,6344,5411,4258,2903,1439,-116,-1653, -3098,-4411,-5532,-6396,-6962,-7221,-7178,-6818,-6164,-5279,-4157,-2883,-1486,-22,1433,2818,4121,5251,6189,6883, 7290,7414,7229,6718,5955,4916,3660,2236,721,-836,-2346,-3760,-4975,-5986,-6726,-7184,-7307,-7123,-6633,-5871, -4881,-3688,-2338,-918,537,1982,3336,4569,5608,6433,7013,7299,7269,6959,6340,5449,4293,2963,1491,-40, -1597,-3064,-4409,-5554,-6457,-7055,-7368,-7351,-7050,-6429,-5563,-4448,-3209,-1816,-380,1091,2491,3805,4961,5922, 6629,7099,7247,7102,6639,5906,4902,3675,2262,761,-781,-2296,-3725,-4963,-5990,-6768,-7233,-7417,-7247,-6802, -6061,-5098,-3916,-2589,-1168,287,1744,3126,4375,5447,6319,6925,7268,7275,6991,6405,5553,4430,3131,1670, 143,-1406,-2895,-4242,-5395,-6333,-6974,-7303,-7325,-7042,-6466,-5625,-4541,-3299,-1940,-485,982,2394,3714,4894, 5888,6622,7109,7314,7192,6779,6061,5083,3879,2500,995,-557,-2083,-3507,-4801,-5861,-6661,-7174,-7394,-7269, -6862,-6148,-5203,-4057,-2751,-1322,117,1555,2943,4227,5310,6195,6830,7197,7238,6985,6443,5606,4518,3222, 1765,242,-1313,-2807,-4173,-5376,-6329,-7030,-7392,-7463,-7209,-6682,-5852,-4810,-3586,-2234,-785,678,2111,3425, 4632,5650,6438,6930,7159,7090,6712,6014,5092,3884,2544,1037,-502,-2037,-3476,-4790,-5884,-6713,-7259,-7502, -7435,-7044,-6368,-5437,-4305,-2998,-1598,-138,1310,2715,3999,5135,6046,6724,7119,7219,7003,6494,5703,4650, 3368,1958,438,-1095,-2613,-3989,-5202,-6175,-6898,-7310,-7403,-7180,-6672,-5886,-4854,-3636,-2280,-847,619,2069, 3418,4643,5694,6501,7047,7328,7284,6949,6312,5389,4255,2898,1427,-109,-1636,-3090,-4401,-5528,-6395,-6976, -7230,-7197,-6841,-6198,-5301,-4201,-2923,-1515,-55,1397,2806,4113,5264,6194,6903,7334,7477,7292,6825,6058, 5040,3788,2368,863,-670,-2195,-3611,-4835,-5848,-6608,-7056,-7195,-7001,-6525,-5787,-4804,-3602,-2261,-846,623, 2057,3417,4628,5712,6539,7137,7417,7408,7106,6493,5604,4461,3138,1684,134,-1392,-2865,-4210,-5372,-6277, -6904,-7205,-7213,-6905,-6317,-5441,-4369,-3116,-1739,-279,1167,2560,3878,5041,6017,6733,7207,7349,7214,6763, 6030,5029,3811,2395,902,-653,-2169,-3608,-4866,-5908,-6701,-7194,-7354,-7228,-6780,-6075,-5112,-3925,-2606,-1211, 244,1699,3081,4321,5398,6263,6882,7208,7249,6979,6414,5535,4432,3132,1674,139,-1399,-2893,-4255,-5423, -6366,-7011,-7357,-7401,-7135,-6556,-5711,-4657,-3418,-2045,-594,862,2275,3610,4815,5770,6525,7033,7245,7136, 6720,6027,5069,3867,2467,988,-554,-2080,-3513,-4803,-5878,-6684,-7218,-7433,-7327,-6923,-6232,-5296,-4145,-2834, -1434,21,1476,2876,4150,5236,6136,6788,7162,7223,6990,6449,5635,4548,3257,1842,313,-1243,-2746,-4113, -5306,-6304,-6960,-7353,-7420,-7204,-6665,-5860,-4822,-3599,-2236,-799,660,2088,3425,4631,5650,6443,6969,7213, 7153,6779,6107,5173,4008,2648,1141,-386,-1911,-3356,-4679,-5787,-6618,-7179,-7447,-7377,-6993,-6340,-5444,-4309, -3024,-1614,-176,1290,2699,3987,5096,6024,6695,7118,7212,7022,6527,5741,4684,3424,1988,489,-1055,-2573, -3954,-5172,-6165,-6878,-7308,-7409,-7195,-6718,-5923,-4925,-3707,-2357,-934,546,1985,3342,4588,5633,6459,7022, 7291,7266,6938,6297,5406,4264,2935,1447,-80,-1609,-3055,-4396,-5510,-6386,-6961,-7262,-7234,-6885,-6245,-5360, -4259,-2975,-1576,-124,1329,2740,4070,5210,6161,6883,7324,7478,7301,6838,6097,5089,3839,2449,953,-598, -2124,-3522,-4755,-5765,-6540,-6995,-7140,-6968,-6492,-5745,-4761,-3570,-2249,-810,644,2108,3459,4714,5776,6640, 7233,7534,7551,7255,6650,5761,4657,3347,1869,336,-1207,-2686,-4041,-5195,-6097,-6721,-7046,-7076,-6755,-6180, -5317,-4253,-2992,-1610,-171,1276,2692,4017,5187,6159,6878,7345,7546,7377,6963,6226,5241,4016,2617,1111, -425,-1964,-3397,-4674,-5718,-6511,-7005,-7204,-7071,-6652,-5934,-4994,-3827,-2520,-1104,343,1791,3167,4424,5516, 6385,7021,7349,7392,7136,6575,5717,4622,3335,1882,334,-1210,-2693,-4063,-5259,-6189,-6856,-7220,-7283,-7021, -6459,-5627,-4580,-3344,-1973,-514,931,2348,3678,4877,5878,6643,7146,7376,7268,6857,6184,5232,4023,2648, 1155,-371,-1906,-3361,-4649,-5721,-6546,-7107,-7312,-7217,-6817,-6143,-5215,-4065,-2766,-1365,103,1544,2945,4214, 5327,6233,6899,7264,7344,7118,6603,5784,4718,3431,2001,475,-1067,-2573,-3935,-5144,-6141,-6831,-7227,-7305, -7096,-6563,-5782,-4746,-3532,-2174,-736,719,2132,3503,4704,5733,6518,7054,7302,7262,6875,6224,5291,4137, 2764,1275,-280,-1813,-3279,-4587,-5693,-6562,-7152,-7413,-7363,-6998,-6354,-5470,-4338,-3064,-1675,-229,1235,2634, 3916,5049,5983,6666,7069,7167,6980,6485,5689,4645,3395,1967,450,-1112,-2626,-4019,-5259,-6276,-6994,-7431, -7560,-7376,-6896,-6133,-5126,-3928,-2591,-1160,306,1729,3093,4320,5372,6195,6767,7048,7046,6701,6086,5171, 4043,2696,1227,-322,-1842,-3323,-4664,-5809,-6697,-7295,-7601,-7590,-7259,-6630,-5755,-4666,-3390,-1991,-553,936, 2344,3672,4799,5770,6483,6948,7088,6941,6484,5753,4726,3495,2098,598,-976,-2466,-3878,-5133,-6169,-6931, -7405,-7552,-7401,-6938,-6182,-5203,-4015,-2682,-1271,212,1647,3024,4289,5361,6231,6825,7148,7177,6889,6303, 5442,4334,3035,1565,35,-1510,-2986,-4344,-5490,-6428,-7049,-7391,-7404,-7123,-6515,-5680,-4602,-3352,-1956,-505, 941,2358,3708,4870,5858,6619,7099,7272,7155,6739,6028,5043,3829,2457,956,-601,-2130,-3561,-4826,-5877, -6698,-7185,-7380,-7260,-6849,-6131,-5172,-4010,-2718,-1299,190,1631,3002,4268,5379,6265,6885,7251,7301,7056, 6498,5672,4583,3286,1840,306,-1224,-2720,-4076,-5274,-6237,-6884,-7267,-7335,-7072,-6516,-5698,-4656,-3430,-2051, -621,832,2270,3619,4793,5798,6571,7091,7329,7225,6868,6188,5231,4031,2672,1184,-340,-1893,-3336,-4631, -5707,-6544,-7091,-7342,-7236,-6865,-6175,-5249,-4115,-2819,-1427,25,1501,2884,4171,5285,6205,6866,7248,7338, 7126,6601,5795,4741,3472,2048,519,-1018,-2524,-3911,-5137,-6103,-6815,-7229,-7330,-7113,-6598,-5817,-4794,-3581, -2239,-784,645,2091,3428,4655,5683,6495,7035,7302,7242,6893,6247,5332,4179,2809,1328,-214,-1732,-3215, -4524,-5634,-6499,-7102,-7360,-7321,-6975,-6348,-5447,-4332,-3046,-1682,-207,1233,2650,3932,5055,6007,6693,7122, 7244,7070,6586,5806,4765,3520,2103,587,-953,-2482,-3876,-5111,-6142,-6881,-7320,-7462,-7283,-6788,-6033,-5041, -3859,-2526,-1106,368,1792,3177,4410,5459,6287,6868,7162,7157,6837,6235,5338,4220,2887,1426,-139,-1650, -3149,-4468,-5606,-6507,-7112,-7436,-7422,-7106,-6507,-5624,-4522,-3264,-1877,-430,1033,2457,3759,4933,5904,6639, 7089,7253,7113,6663,5931,4924,3703,2312,804,-745,-2266,-3677,-4932,-5983,-6752,-7224,-7392,-7267,-6805,-6080, -5092,-3939,-2607,-1173,292,1728,3090,4354,5446,6297,6930,7262,7304,7018,6431,5570,4486,3165,1715,181, -1354,-2842,-4215,-5370,-6292,-6960,-7309,-7333,-7040,-6472,-5640,-4566,-3311,-1936,-514,983,2401,3733,4905,5896, 6657,7150,7330,7230,6822,6125,5140,3928,2546,1072,-498,-2029,-3456,-4728,-5810,-6621,-7150,-7352,-7257,-6822, -6140,-5193,-4060,-2746,-1332,133,1577,2966,4249,5358,6246,6878,7244,7319,7075,6522,5717,4632,3351,1895, 372,-1183,-2677,-4061,-5234,-6204,-6882,-7266,-7355,-7083,-6539,-5734,-4705,-3471,-2098,-668,795,2233,3582,4775, 5801,6603,7119,7352,7279,6914,6247,5298,4117,2777,1277,-260,-1790,-3247,-4545,-5641,-6506,-7030,-7284,-7206, -6845,-6171,-5237,-4111,-2818,-1413,46,1511,2909,4176,5327,6266,6908,7323,7440,7231,6704,5908,4868,3607, 2180,659,-890,-2381,-3789,-5017,-5999,-6717,-7138,-7242,-7027,-6516,-5742,-4740,-3534,-2179,-745,703,2155,3504, 4735,5768,6572,7130,7407,7369,7018,6395,5478,4309,2965,1501,-43,-1591,-3057,-4388,-5510,-6388,-7001,-7268, -7236,-6900,-6282,-5401,-4296,-3021,-1641,-193,1278,2658,3971,5111,6068,6759,7175,7305,7157,6655,5885,4861, 3625,2198,664,-886,-2406,-3828,-5078,-6090,-6864,-7311,-7477,-7313,-6848,-6104,-5121,-3947,-2624,-1187,272,1692, 3055,4293,5333,6190,6775,7083,7059,6749,6143,5262,4126,2807,1334,-197,-1768,-3220,-4581,-5720,-6654,-7281, -7598,-7603,-7295,-6717,-5866,-4775,-3518,-2162,-710,762,2167,3492,4652,5615,6347,6804,6994,6866,6421,5687, 4688,3467,2074,559,-982,-2490,-3922,-5200,-6251,-7041,-7511,-7721,-7571,-7140,-6409,-5446,-4296,-2981,-1553,-92, 1341,2735,3984,5089,5951,6574,6917,6969,6693,6134,5282,4183,2877,1434,-88,-1631,-3115,-4474,-5650,-6579, -7224,-7598,-7638,-7344,-6801,-5956,-4899,-3644,-2283,-841,629,2066,3395,4593,5592,6373,6876,7085,6982,6592, 5901,4951,3749,2392,890,-660,-2181,-3617,-4909,-5977,-6801,-7317,-7530,-7433,-7025,-6318,-5382,-4241,-2919,-1515, -45,1394,2782,4066,5188,6087,6757,7146,7231,6989,6445,5630,4583,3297,1871,352,-1178,-2668,-4068,-5249, -6208,-6902,-7272,-7356,-7108,-6572,-5766,-4737,-3487,-2129,-683,792,2225,3569,4778,5801,6631,7163,7399,7361, 7001,6335,5415,4248,2905,1437,-121,-1629,-3091,-4387,-5495,-6348,-6894,-7129,-7109,-6696,-6043,-5132,-4011,-2720, -1307,174,1601,3036,4327,5480,6410,7089,7506,7645,7429,6942,6174,5145,3893,2469,940,-568,-2079,-3485, -4695,-5672,-6387,-6816,-6923,-6738,-6208,-5457,-4424,-3209,-1850,-436,1033,2482,3849,5094,6152,6970,7558,7832, 7799,7476,6873,5970,4836,3510,2043,511,-1047,-2491,-3815,-4963,-5830,-6415,-6710,-6667,-6349,-5724,-4842,-3730, -2464,-1066,390,1869,3255,4573,5743,6699,7403,7866,8005,7851,7387,6641,5643,4412,2987,1496,-42,-1563, -2985,-4241,-5265,-6026,-6485,-6637,-6473,-6024,-5273,-4289,-3105,-1776,-372,1087,2546,3924,5166,6221,7086,7686, 7989,8011,7729,7130,6239,5111,3790,2338,794,-760,-2229,-3597,-4738,-5668,-6311,-6643,-6665,-6387,-5800,-4945, -3864,-2624,-1264,186,1634,3025,4357,5539,6501,7228,7699,7878,7754,7311,6594,5612,4369,2982,1462,-105, -1613,-3070,-4352,-5401,-6217,-6717,-6942,-6821,-6400,-5698,-4762,-3593,-2311,-876,546,1987,3347,4596,5675,6564, 7178,7514,7551,7266,6718,5869,4755,3452,2008,456,-1095,-2624,-3993,-5183,-6156,-6842,-7199,-7265,-7023,-6494, -5661,-4634,-3423,-2065,-625,817,2227,3548,4735,5733,6496,6984,7221,7104,6709,6005,5040,3836,2467,948, -584,-2144,-3577,-4894,-5998,-6830,-7366,-7645,-7544,-7165,-6499,-5579,-4472,-3178,-1754,-323,1108,2506,3783,4884, 5777,6421,6819,6882,6655,6139,5309,4246,2968,1522,-7,-1573,-3079,-4450,-5690,-6659,-7381,-7782,-7877,-7665, -7158,-6371,-5341,-4134,-2787,-1356,94,1535,2865,4098,5117,5913,6445,6688,6644,6300,5634,4711,3551,2193, 708,-870,-2388,-3849,-5161,-6293,-7146,-7707,-7975,-7949,-7589,-6924,-6041,-4935,-3640,-2252,-787,651,2054,3363, 4480,5424,6121,6535,6666,6472,5979,5217,4171,2913,1525,-22,-1560,-3078,-4481,-5712,-6723,-7469,-7896,-8026, -7840,-7358,-6605,-5597,-4378,-3059,-1615,-150,1309,2668,3876,4956,5811,6367,6641,6648,6331,5714,4811,3672, 2349,889,-654,-2182,-3650,-4981,-6138,-7018,-7620,-7910,-7904,-7580,-6951,-6081,-4988,-3740,-2336,-880,587,2025, 3336,4506,5477,6195,6663,6838,6693,6250,5506,4514,3288,1870,377,-1152,-2666,-4064,-5313,-6346,-7105,-7589, -7735,-7576,-7112,-6386,-5384,-4226,-2870,-1437,22,1485,2866,4116,5230,6089,6706,7056,7082,6794,6241,5359, 4288,2986,1534,14,-1532,-2995,-4351,-5507,-6420,-7038,-7378,-7396,-7120,-6530,-5667,-4600,-3332,-1937,-485,990, 2399,3739,4970,5937,6679,7216,7416,7316,6894,6191,5224,4032,2644,1177,-364,-1870,-3324,-4591,-5646,-6449, -6950,-7137,-7019,-6598,-5888,-4943,-3767,-2455,-1051,437,1894,3286,4557,5661,6555,7217,1,-34,-306,-653, -821,-778,-713,-665,-369,319,1212,2088,2968,3926,4739,5086,4921,4413,3603,2331,519,-1613,-3792,-6057, -8490,-10921,-13019,-14610,-15673,-16181,-15886,-14559,-12369,-9634,-6595,-3274,268,3729,6823,9469,11708,13440,14551,14920, 14562,13489,11753,9358,6411,3311,205,-2994,-6107,-8914,-11270,-13329,-15188,-16655,-17452,-17590,-17225,-16372,-14762,-12357, -9376,-6066,-2490,1379,5418,9242,12649,15611,18021,19650,20309,19896,18556,16330,13246,9410,5296,1226,-2770,-6710, -10308,-13266,-15407,-16826,-17592,-17665,-16800,-15020,-12599,-9797,-6576,-3055,488,3844,7005,9960,12697,14948,16611,17646, 18288,18258,17314,15275,12631,9563,6148,2161,-2000,-5908,-9195,-12102,-14498,-16093,-16571,-16321,-15446,-14033,-11929,-9329, -6603,-4121,-1637,1049,3781,6068,8052,10082,12036,13348,14149,14630,14593,13850,12519,10763,8677,6292,3734,1163, -1451,-4005,-6233,-7968,-9385,-10402,-10653,-9889,-8625,-7122,-5166,-2471,329,2545,4559,6828,8703,9799,10560,11485, 12376,12877,12829,12767,12263,11005,9189,7041,4458,1576,-1078,-3382,-5415,-6732,-7261,-6972,-6285,-5679,-4895,-3488, -2040,-1328,-684,276,845,1271,2449,3472,3699,4006,4553,5339,6057,5897,5281,4608,3578,2248,727,-1075, -3060,-4557,-5278,-5792,-6252,-6546,-6503,-5873,-5023,-4424,-3739,-2860,-2151,-1271,-118,818,1488,2391,3662,4746, 5475,5995,6259,6201,5827,5246,4337,3008,1587,387,-703,-1953,-3558,-5174,-6146,-6752,-7447,-8059,-8373,-8470, -8352,-7642,-6406,-5190,-3925,-2494,-899,712,2330,3909,5116,5739,6191,6761,7111,6804,5887,4809,3689,2305, 617,-1173,-3067,-5171,-7256,-8836,-9845,-10784,-11580,-11661,-10984,-9780,-8302,-6725,-4985,-2875,-406,2136,4473,6578, 8511,10181,11355,11998,12260,12126,11365,9932,8074,5934,3428,497,-2572,-5487,-8154,-10513,-12346,-13473,-13895,-13626, -12806,-11551,-9773,-7532,-5011,-2519,-134,2341,4830,6970,8695,10206,11599,12624,13150,13234,12869,11845,10182,7988, 5519,2937,164,-2724,-5334,-7502,-9212,-10498,-11268,-11476,-11107,-10202,-8861,-7341,-5542,-3473,-1277,817,2920,5000, 6861,8322,9523,10396,10959,11090,10764,9799,8503,7038,5259,2973,503,-1812,-3824,-5732,-7508,-8845,-9472,-9600, -9411,-8783,-7589,-5960,-4225,-2460,-604,1295,3015,4405,5450,6359,7105,7485,7549,7585,7418,6945,6414,5663, 4400,2952,1536,-10,-1987,-4032,-5645,-6859,-7931,-8733,-9121,-8686,-7835,-7027,-5860,-4155,-2630,-1514,-386,1139, 2469,3196,3785,4730,5675,6232,6353,6368,6209,5660,4695,3376,1648,-266,-2200,-4043,-5770,-7412,-8665,-9334, -9748,-9908,-9548,-8704,-7785,-6783,-5310,-3546,-2008,-736,657,2333,3957,5246,6342,7312,8051,8460,8402,7819, 6746,5254,3422,1291,-976,-3205,-5354,-7362,-9133,-10372,-10979,-11143,-10911,-10294,-9221,-7721,-6014,-4252,-2460,-742, 963,2830,4678,6165,7386,8624,9601,9926,9844,9641,8921,7402,5569,3825,1980,-304,-2761,-4879,-6444,-7803, -8984,-9515,-9269,-8680,-7890,-6605,-4879,-3118,-1364,598,2549,4200,5733,7282,8492,9247,9850,10388,10547,10181, 9382,8394,7160,5400,3258,1235,-620,-2602,-4679,-6281,-7250,-8009,-8589,-8578,-7886,-6800,-5549,-4092,-2396,-560, 1243,2870,4328,5780,7150,8170,8894,9504,9925,9982,9637,8894,7811,6493,4829,2822,693,-1375,-3305,-4995, -6437,-7475,-8023,-8103,-7870,-7355,-6558,-5448,-4161,-2916,-1784,-429,1112,2507,3696,4964,6171,7115,7730,8126, 8185,7783,6953,5837,4413,2696,726,-1308,-3280,-4978,-6393,-7609,-8480,-8912,-8958,-8629,-7910,-7029,-6036,-4767, -3318,-1923,-605,709,1957,3178,4422,5436,6072,6523,6835,6671,5962,5010,3852,2162,125,-1830,-3666,-5553, -7387,-8865,-9775,-10175,-10243,-9970,-9194,-7965,-6579,-5077,-3339,-1529,177,1926,3731,5329,6771,8182,9387,10059, 10380,10592,10436,9621,8278,6738,5081,3129,896,-1256,-3086,-4705,-6192,-7268,-7738,-7795,-7657,-7154,-6163,-4844, -3427,-1894,-203,1546,3260,4908,6443,7768,8887,9775,10324,10430,10166,9560,8532,7076,5358,3498,1486,-556, -2489,-4288,-5805,-6885,-7556,-7884,-7788,-7244,-6355,-5226,-3923,-2488,-936,676,2146,3500,4931,6223,7124,7765, 8370,8723,8553,7992,7180,6007,4456,2705,842,-1117,-3036,-4754,-6213,-7369,-8182,-8602,-8630,-8229,-7555,-6617, -5341,-3903,-2575,-1156,499,2118,3454,4720,6030,7119,7840,8292,8459,8279,7713,6706,5303,3714,1937,-83, -2172,-4069,-5726,-7165,-8283,-8992,-9295,-9178,-8643,-7857,-6819,-5448,-3892,-2345,-786,862,2475,3971,5347,6535, 7493,8223,8638,8605,8159,7422,6346,4827,2975,1027,-911,-2898,-4866,-6568,-7818,-8667,-9224,-9394,-9029,-8218, -7173,-5920,-4417,-2741,-1062,542,2160,3750,5178,6410,7466,8294,8776,8894,8686,8056,6985,5633,4042,2141, 53,-1982,-3880,-5622,-7118,-8268,-9015,-9276,-9168,-8792,-8066,-6952,-5677,-4353,-2872,-1276,254,1698,3087,4343, 5420,6356,6954,7192,7174,6881,6110,4951,3580,1962,89,-1835,-3686,-5474,-7065,-8296,-9222,-9801,-9944,-9656, -9055,-8136,-6932,-5552,-4017,-2371,-790,704,2236,3691,4835,5757,6580,7092,7181,6909,6320,5348,4001,2359, 491,-1487,-3461,-5417,-7212,-8694,-9823,-10604,-10950,-10826,-10334,-9486,-8305,-6885,-5340,-3696,-1951,-215,1419,2971, 4448,5760,6817,7578,8052,8205,7959,7282,6220,4866,3270,1427,-565,-2529,-4340,-5954,-7342,-8357,-8901,-9032, -8816,-8227,-7294,-6092,-4713,-3207,-1632,-15,1594,3120,4520,5800,6907,7772,8370,8680,8593,8138,7369,6244, 4729,2992,1195,-681,-2584,-4280,-5672,-6759,-7500,-7830,-7739,-7228,-6365,-5264,-3950,-2413,-785,807,2390,4001, 5486,6812,8026,9057,9799,10252,10407,10155,9486,8507,7206,5546,3685,1741,-249,-2136,-3801,-5231,-6306,-6918, -7108,-6968,-6417,-5464,-4263,-2912,-1387,236,1870,3512,5072,6502,7824,8984,9854,10412,10702,10669,10191,9307, 8084,6560,4755,2771,689,-1341,-3215,-4853,-6191,-7142,-7676,-7790,-7514,-6871,-5947,-4765,-3388,-1907,-417,1111, 2629,4074,5390,6539,7526,8308,8766,8851,8598,8027,7060,5697,4056,2241,286,-1719,-3638,-5374,-6813,-7894, -8616,-8939,-8811,-8288,-7459,-6372,-5044,-3587,-2070,-499,1046,2503,3910,5205,6301,7153,7791,8122,8054,7597, 6787,5592,4080,2315,330,-1754,-3738,-5594,-7277,-8628,-9531,-10044,-10179,-9890,-9230,-8284,-7080,-5701,-4245,-2712, -1120,403,1842,3238,4502,5557,6378,6958,7177,7030,6527,5633,4345,2788,1026,-917,-2920,-4807,-6515,-7955, -9064,-9781,-10081,-9935,-9388,-8537,-7395,-5984,-4432,-2818,-1164,508,2133,3654,5059,6289,7315,8087,8534,8603, 8300,7620,6548,5130,3438,1565,-392,-2344,-4180,-5797,-7087,-8008,-8532,-8640,-8339,-7671,-6681,-5464,-4078,-2575, -983,590,2124,3607,5007,6247,7305,8138,8682,8900,8772,8236,7312,6068,4522,2696,729,-1240,-3160,-4924, -6419,-7565,-8347,-8683,-8604,-8162,-7381,-6267,-4960,-3525,-1970,-366,1214,2760,4238,5567,6730,7732,8450,8821, 8876,8592,7882,6784,5363,3674,1760,-239,-2226,-4124,-5785,-7114,-8126,-8761,-8935,-8707,-8153,-7258,-6087,-4738, -3263,-1691,-125,1405,2917,4334,5581,6658,7545,8140,8383,8281,7790,6906,5681,4149,2352,403,-1566,-3490, -5289,-6810,-7988,-8803,-9202,-9197,-8792,-8021,-6952,-5673,-4231,-2672,-1033,585,2162,3687,5089,6347,7381,8153, 8631,8772,8518,7873,6856,5513,3881,2046,100,-1850,-3688,-5302,-6658,-7653,-8215,-8374,-8157,-7562,-6641,-5476, -4109,-2607,-1051,540,2137,3670,5093,6402,7563,8480,9127,9486,9474,9081,8315,7167,5666,3925,2044,48, -1924,-3708,-5251,-6509,-7385,-7846,-7911,-7573,-6868,-5874,-4662,-3241,-1708,-172,1388,2940,4403,5735,6947,7948, 8689,9147,9274,8985,8310,7293,5918,4220,2319,306,-1755,-3725,-5487,-6992,-8144,-8874,-9202,-9140,-8676,-7857, -6795,-5537,-4103,-2602,-1077,451,1919,3293,4547,5635,6491,7077,7366,7316,6868,6057,4895,3399,1663,-241, -2235,-4184,-5995,-7562,-8827,-9715,-10197,-10263,-9934,-9250,-8268,-7037,-5634,-4135,-2586,-1020,497,1946,3273,4445, 5423,6176,6632,6754,6520,5927,4943,3599,1985,152,-1832,-3818,-5733,-7483,-8950,-10064,-10803,-11141,-11053,-10563, -9755,-8662,-7332,-5862,-4296,-2676,-1065,478,1973,3358,4551,5530,6284,6719,6793,6496,5832,4786,3419,1787, -50,-1969,-3839,-5603,-7166,-8403,-9261,-9737,-9802,-9444,-8719,-7700,-6406,-4921,-3342,-1683,16,1668,3243,4738, 6082,7222,8127,8757,9022,8938,8501,7646,6432,4955,3232,1359,-559,-2383,-4043,-5449,-6522,-7216,-7521,-7406, -6928,-6121,-5032,-3712,-2259,-710,881,2480,4026,5495,6857,8052,9034,9783,10220,10308,10028,9370,8342,6981, 5337,3500,1574,-356,-2191,-3821,-5152,-6131,-6729,-6919,-6700,-6123,-5221,-4069,-2732,-1250,313,1886,3446,4966, 6370,7637,8740,9615,10204,10473,10390,9912,9051,7856,6349,4590,2678,733,-1177,-2935,-4437,-5626,-6455,-6854, -6835,-6476,-5752,-4721,-3486,-2111,-620,917,2445,3940,5365,6660,7794,8752,9427,9797,9865,9569,8865,7811, 6423,4754,2870,901,-1082,-2968,-4643,-6016,-7062,-7719,-7952,-7794,-7284,-6436,-5334,-4047,-2620,-1105,410,1912, 3388,4760,5993,7063,7946,8547,8841,8793,8355,7563,6411,4933,3205,1323,-625,-2553,-4337,-5881,-7116,-7990, -8458,-8519,-8194,-7508,-6527,-5319,-3936,-2435,-874,695,2232,3697,5049,6260,7264,8012,8480,8612,8370,7747, 6757,5426,3810,1973,12,-1961,-3841,-5532,-6964,-8046,-8713,-8988,-8866,-8353,-7516,-6419,-5114,-3656,-2125,-561, 1003,2514,3901,5188,6298,7167,7772,8085,8027,7608,6824,5683,4195,2477,594,-1377,-3323,-5121,-6690,-7979, -8897,-9416,-9548,-9282,-8661,-7738,-6586,-5231,-3761,-2246,-694,847,2308,3671,4915,5965,6775,7307,7518,7351, 6816,5913,4669,3106,1345,-556,-2504,-4361,-6046,-7487,-8583,-9294,-9601,-9529,-9062,-8258,-7200,-5938,-4507,-3007, -1464,86,1574,2982,4276,5403,6310,6952,7300,7295,6914,6163,5055,3621,1930,57,-1903,-3833,-5646,-7231, -8512,-9436,-9958,-10064,-9789,-9155,-8212,-7019,-5646,-4151,-2591,-1007,548,2040,3436,4682,5746,6591,7157,7390, 7278,6805,5939,4716,3215,1487,-414,-2322,-4172,-5878,-7328,-8438,-9185,-9543,-9498,-9062,-8304,-7258,-5981,-4567, -3044,-1466,104,1627,3096,4441,5616,6587,7337,7762,7845,7576,6923,5895,4549,2940,1117,-792,-2685,-4492, -6092,-7398,-8340,-8918,-9070,-8825,-8227,-7313,-6125,-4761,-3280,-1714,-120,1463,2971,4398,5679,6765,7632,8217, 8466,8371,7915,7063,5858,4368,2626,727,-1218,-3093,-4821,-6294,-7448,-8216,-8596,-8562,-8152,-7410,-6367,-5092, -3672,-2135,-554,1039,2586,4067,5440,6656,7672,8442,8908,9045,8809,8196,7205,5901,4291,2495,583,-1328, -3148,-4771,-6107,-7104,-7709,-7910,-7706,-7135,-6244,-5101,-3763,-2267,-701,870,2452,3978,5408,6697,7820,8714, 9332,9634,9593,9155,8347,7185,5706,3966,2088,138,-1774,-3540,-5050,-6265,-7108,-7538,-7556,-7216,-6501,-5499, -4273,-2879,-1368,193,1762,3306,4777,6124,7332,8343,9097,9550,9703,9481,8867,7900,6592,4984,3167,1240, -716,-2589,-4263,-5662,-6730,-7413,-7680,-7564,-7070,-6236,-5149,-3845,-2395,-859,701,2254,3765,5186,6452,7562, 8450,9062,9366,9319,8902,8109,6949,5473,3752,1864,-91,-2030,-3830,-5393,-6665,-7573,-8074,-8185,-7892,-7264, -6328,-5151,-3791,-2323,-783,758,2285,3739,5094,6303,7323,8081,8576,8733,8531,7951,7013,5727,4158,2368, 459,-1492,-3356,-5041,-6480,-7586,-8290,-8618,-8540,-8081,-7306,-6267,-5001,-3582,-2076,-520,1042,2555,3988,5302, 6445,7376,8048,8417,8412,8054,7323,6220,4774,3082,1217,-743,-2683,-4480,-6076,-7363,-8293,-8832,-8972,-8712, -8103,-7183,-6022,-4666,-3194,-1663,-92,1459,2922,4295,5540,6585,7390,7931,8133,7986,7459,6575,5335,3810, 2069,187,-1729,-3571,-5249,-6681,-7783,-8516,-8851,-8806,-8369,-7606,-6579,-5335,-3930,-2440,-896,644,2138,3564, 4879,6019,6965,7649,8039,8085,7774,7100,6060,4695,3064,1245,-675,-2574,-4371,-5970,-7262,-8223,-8788,-8958, -8730,-8152,-7265,-6115,-4778,-3308,-1771,-191,1364,2857,4258,5520,6602,7463,8043,8302,8211,7749,6902,5704, 4210,2472,578,-1355,-3247,-4978,-6470,-7641,-8439,-8841,-8837,-8459,-7739,-6734,-5505,-4132,-2640,-1096,429,1916, 3344,4645,5787,6726,7428,7831,7897,7602,6943,5905,4553,2910,1083,-846,-2772,-4605,-6242,-7602,-8606,-9244, -9472,-9304,-8779,-7948,-6853,-5570,-4158,-2666,-1144,365,1826,3199,4447,5514,6370,6959,7223,7151,6718,5904, 4741,3274,1553,-316,-2252,-4140,-5884,-7399,-8594,-9420,-9862,-9894,-9562,-8876,-7904,-6698,-5333,-3841,-2309,-756, 759,2194,3546,4738,5745,6497,6971,7111,6895,6301,5353,4071,2509,751,-1117,-3005,-4791,-6398,-7721,-8720, -9338,-9555,-9387,-8852,-7994,-6887,-5572,-4111,-2572,-1011,562,2080,3509,4802,5935,6856,7505,7842,7847,7464, 6728,5643,4239,2594,790,-1090,-2939,-4660,-6137,-7343,-8179,-8613,-8666,-8345,-7662,-6692,-5492,-4125,-2635,-1088, 481,2017,3495,4859,6092,7122,7909,8422,8610,8437,7902,7008,5775,4242,2497,637,-1259,-3080,-4720,-6089, -7149,-7820,-8098,-7988,-7504,-6692,-5633,-4344,-2906,-1380,173,1729,3242,4666,5951,7087,8011,8673,9029,9042, 8687,7962,6880,5481,3820,1986,63,-1837,-3614,-5174,-6461,-7380,-7906,-8044,-7801,-7195,-6297,-5146,-3821,-2373, -852,685,2206,3652,5014,6233,7257,8049,8570,8758,8593,8068,7171,5933,4406,2658,776,-1144,-2990,-4676, -6127,-7235,-7968,-8329,-8284,-7865,-7132,-6120,-4887,-3504,-2019,-490,1049,2544,3959,5265,6402,7332,8019,8399, 8434,8119,7439,6393,5019,3391,1588,-320,-2215,-3991,-5572,-6861,-7820,-8381,-8555,-8339,-7771,-6894,-5771,-4450, -3008,-1489,64,1595,3052,4429,5671,6719,7548,8093,8326,8211,7728,6883,5697,4205,2504,644,-1258,-3101, -4795,-6249,-7379,-8157,-8541,-8539,-8140,-7414,-6411,-5187,-3789,-2289,-734,821,2334,3782,5113,6279,7247,7968, 8382,8459,8179,7540,6536,5205,3623,1838,-54,-1944,-3736,-5336,-6643,-7629,-8231,-8431,-8245,-7712,-6859,-5750, -4446,-3011,-1486,72,1610,3095,4486,5742,6826,7680,8269,8546,8479,8044,7240,6092,4650,2961,1119,-773, -2627,-4339,-5824,-7002,-7825,-8249,-8289,-7951,-7275,-6300,-5110,-3750,-2261,-724,810,2324,3770,5098,6267,7238, 7972,8409,8517,8273,7662,6684,5383,3799,2015,124,-1781,-3602,-5233,-6598,-7635,-8298,-8555,-8419,-7928,-7109, -6018,-4729,-3302,-1783,-233,1308,2810,4212,5489,6594,7489,8101,8407,8386,7990,7222,6126,4718,3052,1233, -652,-2520,-4240,-5754,-6955,-7801,-8258,-8324,-8011,-7359,-6405,-5226,-3871,-2392,-848,700,2217,3677,5031,6232, 7244,8020,8505,8679,8487,7918,7005,5750,4199,2452,578,-1325,-3145,-4791,-6177,-7236,-7925,-8219,-8116,-7658, -6869,-5816,-4552,-3131,-1624,-77,1468,2975,4388,5684,6819,7738,8393,8748,8768,8409,7693,6612,5224,3582, 1776,-128,-1999,-3747,-5286,-6537,-7438,-7948,-8070,-7813,-7194,-6294,-5139,-3807,-2348,-819,733,2257,3721,5090, 6319,7344,8130,8639,8829,8659,8120,7227,5985,4460,2701,823,-1095,-2944,-4634,-6060,-7172,-7916,-8270,-8229, -7817,-7074,-6068,-4842,-3444,-1958,-430,1098,2590,3997,5278,6407,7317,7983,8342,8370,8030,7334,6274,4904, 3283,1478,-424,-2316,-4086,-5665,-6959,-7911,-8483,-8654,-8447,-7887,-7023,-5898,-4591,-3154,-1637,-89,1438,2901, 4275,5522,6569,7386,7934,8150,8021,7525,6660,5462,3967,2239,375,-1536,-3385,-5082,-6544,-7674,-8453,-8846, -8828,-8450,-7739,-6749,-5535,-4153,-2666,-1132,419,1931,3368,4687,5850,6807,7517,7911,7985,7699,7042,6020, 4679,3083,1293,-608,-2494,-4278,-5867,-7180,-8155,-8748,-8955,-8762,-8239,-7388,-6290,-5000,-3583,-2084,-545,977, 2437,3819,5064,6127,6961,7530,7789,7706,7255,6446,5283,3829,2141,299,-1591,-3429,-5141,-6601,-7766,-8573, -8998,-9027,-8687,-7999,-7036,-5840,-4475,-2999,-1462,74,1587,3033,4367,5541,6535,7269,7719,7836,7600,6995, 6034,4750,3198,1441,-419,-2305,-4102,-5707,-7037,-8057,-8693,-8927,-8786,-8284,-7470,-6388,-5098,-3666,-2146,-591, 959,2464,3879,5154,6264,7151,7758,8070,8041,7651,6889,5791,4394,2753,953,-897,-2723,-4408,-5876,-7040, -7863,-8288,-8333,-7997,-7325,-6351,-5166,-3793,-2298,-746,818,2358,3836,5198,6411,7431,8211,8706,8873,8697, 8155,7254,6023,4518,2798,969,-892,-2668,-4270,-5623,-6650,-7327,-7606,-7501,-7034,-6249,-5194,-3943,-2534,-1040, 503,2020,3516,4927,6208,7332,8234,8871,9202,9197,8834,8090,7016,5624,3989,2180,288,-1570,-3308,-4841, -6082,-6964,-7477,-7592,-7338,-6732,-5834,-4704,-3384,-1941,-439,1085,2591,4023,5356,6552,7542,8310,8789,8952, 8754,8206,7296,6047,4511,2765,892,-1015,-2853,-4521,-5943,-7046,-7794,-8143,-8115,-7708,-6983,-5991,-4777,-3406, -1952,-437,1075,2547,3937,5198,6304,7202,7840,8190,8191,7839,7126,6062,4686,3062,1258,-627,-2497,-4258, -5807,-7090,-8022,-8587,-8759,-8542,-7970,-7109,-5998,-4705,-3279,-1773,-243,1261,2723,4085,5311,6340,7147,7678, 7905,7771,7290,6448,5270,3802,2105,270,-1593,-3409,-5068,-6490,-7600,-8349,-8711,-8685,-8281,-7558,-6553,-5315, -3925,-2432,-886,673,2195,3639,4961,6128,7086,7802,8221,8292,8030,7394,6404,5105,3538,1793,-58,-1905, -3648,-5196,-6480,-7427,-8006,-8188,-7990,-7445,-6588,-5467,-4173,-2740,-1231,311,1837,3301,4676,5920,6985,7819, 8392,8637,8532,8066,7247,6098,4653,2974,1154,-715,-2526,-4196,-5644,-6775,-7565,-7978,-8002,-7672,-7006,-6065, -4902,-3566,-2115,-603,940,2443,3883,5199,6372,7347,8078,8485,8550,8271,7637,6665,5346,3774,2005,142, -1714,-3481,-5068,-6408,-7414,-8055,-8303,-8181,-7718,-6934,-5902,-4660,-3288,-1813,-307,1201,2643,4009,5250,6323, 7157,7715,7978,7900,7451,6657,5520,4073,2397,575,-1306,-3149,-4864,-6358,-7556,-8410,-8869,-8946,-8661,-8044, -7134,-5989,-4663,-3224,-1726,-218,1281,2722,4053,5209,6181,6904,7341,7451,7207,6619,5675,4421,2920,1194, -640,-2508,-4295,-5894,-7248,-8301,-8975,-9258,-9145,-8685,-7905,-6863,-5613,-4220,-2725,-1195,322,1801,3195,4459, 5571,6451,7081,7409,7397,7017,6275,5200,3824,2196,391,-1467,-3316,-5029,-6526,-7749,-8632,-9140,-9256,-8986, -8388,-7488,-6361,-5032,-3569,-2040,-507,1011,2466,3822,5028,6040,6812,7305,7473,7302,6767,5871,4645,3134, 1449,-377,-2241,-4024,-5646,-7030,-8084,-8784,-9099,-9033,-8612,-7858,-6829,-5600,-4204,-2722,-1193,345,1841,3255, 4548,5673,6592,7243,7609,7645,7325,6642,5628,4299,2737,1001,-827,-2632,-4323,-5823,-7029,-7899,-8409,-8541, -8294,-7703,-6806,-5677,-4361,-2907,-1395,152,1666,3131,4495,5717,6760,7578,8121,8357,8238,7777,6960,5809, 4360,2708,907,-935,-2720,-4357,-5748,-6838,-7578,-7912,-7874,-7465,-6731,-5731,-4496,-3112,-1629,-90,1451,2954, 4372,5681,6842,7798,8499,8912,8998,8728,8090,7104,5796,4240,2490,651,-1180,-2921,-4460,-5739,-6679,-7245, -7433,-7244,-6706,-5864,-4779,-3506,-2097,-614,902,2399,3844,5193,6401,7432,8248,8798,9035,8919,8462,7636, 6475,5020,3335,1508,-361,-2200,-3886,-5344,-6508,-7310,-7743,-7789,-7468,-6826,-5898,-4745,-3432,-2009,-529,961, 2424,3802,5068,6193,7112,7806,8197,8272,8007,7378,6390,5097,3546,1799,-59,-1916,-3681,-5271,-6605,-7602, -8245,-8497,-8374,-7895,-7104,-6050,-4800,-3411,-1933,-412,1076,2521,3872,5096,6137,6966,7534,7792,7721,7297, 6519,5407,4007,2370,586,-1265,-3073,-4767,-6224,-7386,-8219,-8666,-8718,-8411,-7762,-6841,-5670,-4330,-2873,-1363, 183,1685,3126,4454,5628,6604,7353,7808,7942,7727,7156,6240,5003,3494,1787,-26,-1863,-3614,-5199,-6519, -7537,-8188,-8460,-8357,-7905,-7123,-6092,-4850,-3478,-1997,-477,1043,2516,3911,5173,6272,7152,7769,8094,8079, 7705,6986,5919,4561,2946,1178,-658,-2471,-4175,-5649,-6856,-7725,-8220,-8337,-8089,-7493,-6617,-5496,-4197,-2767, -1279,230,1718,3148,4470,5650,6642,7402,7870,8014,7818,7268,6361,5130,3620,1904,74,-1797,-3593,-5213, -6593,-7665,-8374,-8703,-8651,-8245,-7518,-6522,-5314,-3956,-2491,-989,521,1986,3368,4627,5731,6610,7240,7577, 7583,7237,6527,5485,4140,2543,780,-1060,-2889,-4609,-6122,-7368,-8262,-8798,-8943,-8716,-8147,-7276,-6162,-4868, -3428,-1925,-406,1126,2573,3940,5153,6182,6989,7522,7728,7617,7132,6312,5157,3712,2068,288,-1538,-3297, -4907,-6282,-7363,-8080,-8431,-8385,-7988,-7267,-6263,-5040,-3659,-2173,-632,924,2435,3869,5187,6344,7294,7988, 8389,8471,8192,7555,6579,5291,3757,2031,217,-1579,-3280,-4799,-6039,-6951,-7497,-7669,-7461,-6904,-6048,-4939, -3634,-2193,-672,877,2410,3899,5285,6527,7593,8421,8982,9234,9128,8683,7884,6746,5318,3677,1883,46, -1747,-3399,-4819,-5950,-6730,-7135,-7161,-6821,-6165,-5232,-4062,-2728,-1304,196,1695,3166,4557,5830,6959,7880, 8560,8950,9019,8736,8097,7111,5812,4261,2510,661,-1197,-2963,-4552,-5874,-6876,-7514,-7773,-7652,-7182,-6400, -5363,-4137,-2766,-1301,200,1683,3128,4463,5686,6717,7540,8096,8347,8261,7826,7035,5911,4502,2852,1058, -788,-2606,-4278,-5737,-6908,-7734,-8190,-8264,-7965,-7346,-6434,-5300,-3986,-2570,-1091,410,1875,3276,4565,5709, 6650,7358,7768,7874,7634,7035,6094,4847,3325,1611,-211,-2049,-3802,-5382,-6707,-7712,-8359,-8630,-8530,-8078, -7309,-6280,-5058,-3672,-2203,-697,803,2263,3635,4884,5957,6822,7423,7724,7688,7309,6570,5506,4137,2536, 781,-1051,-2849,-4527,-5997,-7177,-8032,-8508,-8607,-8339,-7731,-6845,-5719,-4412,-2986,-1486,35,1535,2972,4299, 5482,6478,7240,7715,7890,7716,7194,6311,5102,3635,1968,157,-1660,-3424,-5019,-6371,-7422,-8111,-8420,-8360, -7948,-7211,-6206,-4989,-3635,-2176,-669,834,2296,3681,4932,6020,6894,7513,7840,7843,7484,6783,5740,4409, 2823,1077,-746,-2549,-4250,-5731,-6947,-7829,-8342,-8496,-8260,-7693,-6842,-5739,-4456,-3040,-1562,-60,1437,2874, 4207,5403,6409,7190,7701,7895,7752,7262,6417,5251,3817,2171,389,-1422,-3175,-4770,-6130,-7201,-7907,-8252, -8216,-7831,-7122,-6145,-4946,-3599,-2137,-635,880,2355,3759,5053,6174,7087,7761,8132,8186,7895,7244,6252, 4966,3435,1714,-90,-1891,-3586,-5094,-6334,-7250,-7802,-7976,-7785,-7257,-6425,-5358,-4087,-2686,-1219,291,1790, 3222,4561,5760,6783,7585,8121,8343,8243,7782,6978,5850,4427,2806,1051,-773,-2528,-4150,-5549,-6653,-7414, -7806,-7818,-7483,-6824,-5888,-4742,-3419,-1997,-518,973,2429,3812,5083,6195,7104,7766,8154,8216,7935,7305, 6336,5058,3533,1812,2,-1804,-3524,-5076,-6364,-7324,-7942,-8180,-8052,-7574,-6791,-5771,-4544,-3175,-1727,-245, 1231,2666,4009,5212,6251,7066,7619,7867,7778,7352,6573,5465,4076,2456,689,-1129,-2915,-4567,-5998,-7141, -7944,-8376,-8437,-8133,-7512,-6593,-5449,-4136,-2716,-1223,278,1752,3147,4442,5585,6544,7247,7674,7780,7558, 6977,6054,4817,3340,1647,-131,-1935,-3646,-5196,-6498,-7470,-8095,-8345,-8228,-7756,-6984,-5955,-4731,-3350,-1888, -381,1128,2587,3961,5213,6286,7148,7755,8069,8041,7683,6972,5926,4586,3024,1300,-489,-2258,-3895,-5328, -6484,-7311,-7770,-7855,-7572,-6977,-6076,-4951,-3648,-2226,-738,772,2263,3682,4997,6173,7150,7898,8356,8508, 8332,7792,6914,5725,4260,2602,815,-987,-2716,-4295,-5626,-6648,-7330,-7635,-7577,-7166,-6444,-5454,-4263,-2909, -1466,25,1511,2960,4320,5558,6631,7497,8101,8422,8408,8041,7331,6295,4945,3372,1627,-189,-1987,-3683, -5172,-6391,-7284,-7819,-7965,-7765,-7224,-6403,-5333,-4083,-2711,-1273,205,1661,3053,4347,5507,6474,7214,7681, 7848,7676,7163,6301,5124,3670,2015,225,-1583,-3345,-4953,-6328,-7406,-8129,-8485,-8473,-8108,-7422,-6468,-5300, -3979,-2547,-1062,416,1865,3234,4488,5581,6463,7105,7459,7486,7174,6518,5522,4229,2686,971,-826,-2616, -4305,-5802,-7046,-7961,-8515,-8698,-8513,-7988,-7172,-6105,-4847,-3463,-1998,-503,988,2422,3754,4955,5976,6776, 7298,7514,7406,6947,6144,5022,3624,2014,271,-1519,-3259,-4856,-6217,-7304,-8037,-8402,-8411,-8057,-7385,-6431, -5271,-3929,-2508,-1010,504,1977,3378,4671,5804,6736,7433,7830,7917,7658,7049,6110,4868,3365,1691,-86, -1861,-3551,-5056,-6307,-7237,-7825,-8029,-7884,-7383,-6592,-5547,-4306,-2921,-1460,44,1542,2982,4335,5551,6588, 7413,7978,8228,8156,7735,6971,5884,4506,2915,1177,-623,-2376,-4003,-5412,-6542,-7346,-7772,-7824,-7537,-6906, -6005,-4867,-3568,-2161,-673,819,2287,3692,4975,6115,7047,7740,8159,8257,8012,7425,6494,5254,3752,2067, 272,-1526,-3252,-4807,-6111,-7106,-7747,-8022,-7925,-7484,-6737,-5734,-4527,-3173,-1734,-252,1222,2666,4013,5229, 6282,7112,7688,7964,7908,7510,6775,5706,4350,2769,1034,-774,-2546,-4194,-5633,-6806,-7640,-8111,-8220,-7961, -7384,-6511,-5412,-4132,-2732,-1266,222,1694,3095,4395,5545,6507,7227,7681,7817,7614,7064,6179,4986,3524, 1860,101,-1694,-3413,-4981,-6304,-7324,-7987,-8293,-8211,-7793,-7067,-6077,-4873,-3521,-2073,-575,919,2380,3747, 4993,6071,6939,7558,7877,7870,7532,6837,5813,4492,2938,1233,-556,-2328,-3975,-5433,-6626,-7491,-7988,-8123, -7888,-7323,-6470,-5380,-4109,-2706,-1237,260,1738,3150,4474,5641,6623,7382,7866,8045,7890,7389,6555,5403, 3985,2362,602,-1179,-2893,-4470,-5811,-6855,-7559,-7893,-7860,-7481,-6794,-5830,-4666,-3328,-1907,-420,1059,2513, 3884,5137,6220,7106,7745,8090,8119,7792,7131,6148,4848,3324,1621,-158,-1933,-3610,-5103,-6334,-7253,-7808, -7999,-7821,-7318,-6518,-5478,-4240,-2879,-1434,48,1514,2926,4228,5402,6393,7160,7649,7848,7707,7215,6393, 5249,3824,2192,429,-1373,-3123,-4731,-6124,-7221,-7977,-8370,-8401,-8072,-7433,-6519,-5384,-4090,-2684,-1218,245, 1694,3062,4318,5412,6301,6959,7329,7380,7096,6468,5510,4243,2734,1048,-729,-2514,-4198,-5701,-6953,-7898, -8486,-8711,-8565,-8085,-7306,-6272,-5054,-3684,-2244,-764,713,2139,3464,4679,5698,6504,7043,7294,7210,6799, 6018,4942,3572,1991,261,-1518,-3258,-4864,-6261,-7374,-8147,-8567,-8608,-8309,-7667,-6756,-5630,-4330,-2902,-1424, 73,1535,2941,4238,5376,6318,7031,7456,7572,7341,6769,5870,4660,3196,1552,-196,-1962,-3641,-5152,-6408, -7355,-7969,-8203,-8080,-7609,-6845,-5821,-4596,-3220,-1775,-268,1224,2679,4036,5265,6316,7169,7752,8041,8012, 7626,6911,5861,4534,2985,1288,-475,-2200,-3813,-5221,-6357,-7164,-7613,-7694,-7431,-6832,-5960,-4856,-3578,-2183, -714,781,2240,3649,4940,6087,7043,7763,8214,8348,8145,7601,6721,5535,4086,2445,697,-1079,-2788,-4331, -5637,-6649,-7309,-7612,-7547,-7135,-6422,-5456,-4266,-2937,-1511,-44,1425,2860,4204,5424,6479,7316,7906,8200, 8170,7809,7101,6065,4751,3200,1492,-292,-2058,-3710,-5156,-6350,-7220,-7731,-7874,-7662,-7129,-6302,-5235,-3989, -2622,-1169,307,1757,3147,4434,5584,6544,7268,7736,7890,7715,7194,6346,5182,3759,2131,395,-1380,-3094, -4660,-5999,-7037,-7741,-8091,-8064,-7697,-7020,-6085,-4936,-3630,-2212,-764,709,2143,3501,4736,5803,6680,7311, 7645,7668,7362,6712,5738,4461,2955,1279,-473,-2221,-3859,-5323,-6520,-7409,-7941,-8103,-7920,-7398,-6585,-5530, -4293,-2921,-1476,11,1486,2896,4219,5397,6399,7168,7678,7885,7773,7312,6519,5401,4025,2427,707,-1062, -2760,-4342,-5689,-6751,-7486,-7854,-7863,-7526,-6866,-5938,-4801,-3492,-2083,-609,865,2306,3685,4934,6028,6935, 7583,7957,8013,7739,7133,6189,4946,3464,1807,58,-1692,-3345,-4827,-6046,-6977,-7545,-7754,-7612,-7131,-6363, -5343,-4120,-2778,-1344,127,1583,2999,4312,5501,6520,7303,7833,8073,7970,7551,6774,5683,4324,2744,1019, -739,-2468,-4067,-5461,-6568,-7349,-7767,-7838,-7540,-6936,-6042,-4938,-3671,-2281,-827,634,2069,3440,4697,5798, 6710,7383,7782,7852,7611,7022,6099,4878,3402,1752,0,-1773,-3453,-4958,-6228,-7199,-7814,-8073,-7969,-7537, -6797,-5807,-4608,-3290,-1869,-407,1063,2471,3794,4999,6019,6837,7387,7652,7591,7207,6461,5417,4079,2537, 834,-925,-2648,-4249,-5651,-6778,-7582,-8031,-8119,-7855,-7266,-6398,-5313,-4043,-2660,-1210,266,1714,3103,4384, 5514,6453,7176,7619,7753,7553,7017,6160,4991,3560,1949,216,-1528,-3206,-4731,-6013,-7004,-7652,-7936,-7869, -7454,-6741,-5773,-4598,-3266,-1849,-375,1102,2532,3876,5092,6150,7006,7589,7897,7882,7530,6840,5822,4528, 3007,1327,-422,-2148,-3761,-5182,-6347,-7181,-7666,-7795,-7578,-7017,-6189,-5113,-3876,-2501,-1055,412,1858,3253, 4550,5698,6658,7389,7851,8014,7840,7333,6490,5351,3941,2334,611,-1141,-2824,-4364,-5674,-6698,-7385,-7724, -7695,-7324,-6656,-5721,-4579,-3278,-1881,-441,1013,2427,3770,4985,6045,6903,7514,7830,7845,7519,6861,5875, 4609,3105,1442,-314,-2049,-3684,-5137,-6340,-7222,-7764,-7939,-7768,-7270,-6478,-5438,-4228,-2872,-1449,6,1453, 2842,4134,5283,6258,7012,7494,7688,7547,7066,6256,5146,3747,2168,454,-1304,-3008,-4575,-5930,-6990,-7726, -8114,-8130,-7810,-7167,-6269,-5147,-3865,-2474,-1030,437,1863,3220,4466,5539,6421,7060,7417,7465,7181,6557, 5608,4365,2891,1237,-505,-2236,-3876,-5342,-6564,-7480,-8048,-8254,-8105,-7628,-6859,-5845,-4638,-3302,-1882,-407, 1040,2442,3760,4944,5952,6732,7252,7495,7404,6974,6221,5151,3810,2247,555,-1191,-2888,-4458,-5819,-6904, -7663,-8072,-8121,-7822,-7200,-6315,-5202,-3921,-2520,-1060,411,1861,3242,4508,5624,6541,7213,7618,7707,7470, 6894,5982,4779,3330,1699,-32,-1772,-3427,-4907,-6156,-7101,-7700,-7946,-7831,-7392,-6642,-5653,-4453,-3128,-1693, -230,1231,2645,3968,5163,6198,7001,7559,7822,7765,7363,6641,5598,4280,2740,1058,-672,-2379,-3969,-5361, -6474,-7267,-7712,-7801,-7536,-6954,-6102,-5021,-3772,-2390,-949,514,1955,3333,4612,5719,6642,7345,7778,7894, 7694,7146,6285,5104,3688,2076,368,-1379,-3033,-4538,-5816,-6799,-7442,-7732,-7658,-7267,-6560,-5596,-4437,-3126, -1717,-264,1201,2608,3937,5144,6179,7017,7591,7879,7861,7497,6795,5793,4496,2975,1294,-446,-2155,-3763, -5176,-6324,-7154,-7638,-7762,-7547,-6994,-6164,-5110,-3866,-2497,-1062,404,1841,3225,4505,5645,6599,7325,7785, 7939,7764,7259,6430,5291,3892,2310,605,-1129,-2802,-4326,-5614,-6622,-7300,-7614,-7585,-7202,-6527,-5586,-4439, -3132,-1730,-268,1189,2618,3968,5190,6254,7116,7722,8059,8074,7762,7102,6133,4876,3394,1740,16,-1695, -3309,-4732,-5911,-6776,-7297,-7466,-7280,-6766,-5964,-4929,-3714,-2363,-929,528,1979,3375,4674,5830,6801,7551, 8044,8229,8088,7621,6816,5709,4337,2760,1066,-668,-2345,-3888,-5213,-6259,-6981,-7353,-7358,-7029,-6393,-5484, -4369,-3085,-1699,-267,1193,2614,3957,5187,6260,7127,7759,8101,8138,7849,7218,6266,5031,3553,1907,170, -1564,-3203,-4660,-5885,-6790,-7363,-7577,-7444,-6982,-6231,-5239,-4058,-2728,-1325,119,1551,2930,4210,5371,6341, 7103,7600,7799,7687,7244,6458,5372,4016,2451,765,-986,-2688,-4262,-5624,-6715,-7485,-7908,-7965,-7685,-7085, -6230,-5150,-3893,-2527,-1111,343,1754,3095,4318,5403,6291,6938,7306,7376,7113,6515,5593,4377,2920,1295, -435,-2168,-3823,-5308,-6565,-7514,-8130,-8376,-8290,-7862,-7139,-6174,-5004,-3694,-2301,-858,580,1967,3277,4442, 5442,6226,6755,6998,6929,6515,5774,4724,3408,1876,205,-1526,-3221,-4805,-6173,-7284,-8073,-8524,-8617,-8366, -7795,-6951,-5873,-4631,-3264,-1839,-392,1035,2407,3655,4771,5693,6377,6792,6907,6699,6155,5288,4124,2716, 1126,-571,-2291,-3932,-5408,-6665,-7634,-8250,-8528,-8456,-8047,-7337,-6380,-5214,-3906,-2491,-1041,420,1831,3159, 4369,5412,6241,6820,7117,7102,6753,6063,5076,3808,2312,672,-1039,-2727,-4299,-5693,-6808,-7623,-8095,-8211, -7976,-7425,-6590,-5550,-4306,-2936,-1497,-37,1413,2803,4081,5212,6169,6896,7350,7506,7342,6848,6020,4891, 3515,1950,269,-1439,-3083,-4578,-5849,-6839,-7511,-7817,-7776,-7409,-6726,-5788,-4643,-3340,-1949,-494,972,2387, 3724,4959,6019,6871,7475,7800,7811,7496,6841,5877,4630,3153,1514,-192,-1890,-3486,-4907,-6061,-6919,-7429, -7594,-7420,-6904,-6113,-5094,-3883,-2538,-1129,316,1750,3125,4405,5542,6516,7251,7725,7901,7757,7284,6484, 5379,4014,2457,767,-947,-2629,-4158,-5480,-6513,-7230,-7588,-7603,-7276,-6649,-5760,-4647,-3386,-2010,-577,866, 2266,3599,4813,5874,6736,7353,7702,7727,7433,6807,5860,4633,3175,1542,-167,-1870,-3495,-4931,-6139,-7032, -7586,-7803,-7650,-7192,-6436,-5435,-4259,-2930,-1530,-92,1340,2726,4009,5163,6144,6907,7406,7618,7505,7067, 6301,5229,3890,2354,692,-1022,-2690,-4226,-5563,-6620,-7357,-7758,-7799,-7502,-6900,-6019,-4929,-3671,-2301,-872, 583,2007,3355,4596,5695,6590,7243,7626,7712,7468,6898,5998,4819,3400,1804,108,-1582,-3188,-4642,-5854, -6768,-7345,-7582,-7462,-7025,-6292,-5309,-4141,-2817,-1409,42,1482,2877,4185,5363,6367,7163,7695,7946,7881, 7481,6759,5730,4437,2924,1270,-428,-2102,-3656,-5014,-6100,-6878,-7314,-7398,-7145,-6569,-5736,-4677,-3442,-2088, -675,766,2181,3533,4774,5867,6769,7442,7839,7948,7726,7179,6298,5130,3723,2133,439,-1273,-2913,-4394, -5652,-6624,-7262,-7557,-7504,-7108,-6422,-5489,-4355,-3082,-1704,-272,1152,2527,3829,5001,6007,6798,7344,7603, 7558,7174,6477,5462,4167,2662,1008,-707,-2395,-3987,-5378,-6512,-7337,-7834,-7979,-7775,-7243,-6458,-5425,-4223, -2889,-1488,-59,1346,2709,3953,5069,5988,6684,7111,7234,7044,6527,5678,4542,3156,1580,-108,-1825,-3467, -4966,-6245,-7243,-7910,-8233,-8203,-7852,-7193,-6272,-5147,-3876,-2494,-1058,381,1788,3106,4316,5356,6190,6794, 7098,7101,6784,6126,5158,3921,2451,837,-861,-2540,-4122,-5514,-6662,-7500,-8014,-8161,-7964,-7454,-6663,-5636, -4420,-3075,-1657,-207,1240,2623,3902,5050,6022,6765,7246,7425,7299,6831,6053,4962,3620,2087,436,-1264, -2900,-4398,-5685,-6705,-7397,-7744,-7735,-7398,-6755,-5848,-4726,-3449,-2073,-622,837,2250,3594,4830,5899,6770, 7396,7743,7788,7507,6891,5969,4759,3321,1711,26,-1646,-3236,-4662,-5831,-6707,-7247,-7446,-7297,-6819,-6061, -5064,-3877,-2552,-1140,309,1735,3114,4401,5549,6533,7290,7791,7990,7879,7440,6675,5606,4285,2760,1104, -599,-2259,-3793,-5116,-6178,-6910,-7310,-7352,-7067,-6472,-5612,-4525,-3289,-1940,-516,911,2314,3644,4863,5924, 6800,7432,7800,7857,7596,7001,6095,4910,3479,1878,189,-1497,-3115,-4562,-5783,-6708,-7293,-7550,-7449,-7022, -6306,-5353,-4208,-2913,-1523,-101,1317,2691,3979,5133,6109,6880,7401,7637,7545,7140,6404,5365,4062,2555, 908,-789,-2466,-4006,-5358,-6438,-7221,-7663,-7745,-7498,-6940,-6111,-5052,-3838,-2496,-1088,338,1749,3074,4304, 5395,6289,6949,7338,7439,7221,6660,5792,4644,3254,1677,4,-1685,-3294,-4757,-5991,-6925,-7551,-7823,-7757, -7361,-6664,-5728,-4599,-3311,-1926,-500,929,2312,3622,4806,5812,6619,7172,7444,7408,7040,6357,5363,4098, 2630,1018,-670,-2330,-3878,-5238,-6340,-7140,-7600,-7711,-7493,-6955,-6150,-5112,-3897,-2563,-1140,295,1709,3076, 4321,5433,6361,7060,7501,7637,7466,6953,6126,5005,3646,2093,434,-1238,-2856,-4321,-5585,-6552,-7203,-7511, -7479,-7106,-6435,-5527,-4406,-3140,-1760,-339,1088,2476,3794,4987,6011,6833,7414,7726,7714,7385,6743,5779, 4545,3094,1486,-193,-1856,-3419,-4808,-5937,-6774,-7278,-7443,-7258,-6761,-5990,-4985,-3798,-2477,-1087,329,1743, 3100,4351,5470,6405,7128,7585,7738,7588,7118,6318,5229,3887,2356,710,-978,-2608,-4100,-5390,-6393,-7092, -7447,-7464,-7148,-6532,-5659,-4571,-3331,-1972,-567,859,2234,3541,4735,5776,6613,7216,7549,7564,7257,6631, 5701,4489,3047,1454,-228,-1896,-3479,-4890,-6065,-6944,-7491,-7690,-7549,-7083,-6343,-5371,-4206,-2905,-1528,-115, 1297,2656,3916,5039,5993,6733,7210,7400,7285,6840,6079,5016,3703,2192,553,-1132,-2766,-4275,-5588,-6629, -7360,-7757,-7800,-7521,-6923,-6066,-5003,-3770,-2435,-1028,396,1783,3112,4322,5385,6251,6868,7229,7295,7036, 6450,5559,4390,2986,1404,-255,-1921,-3503,-4933,-6120,-7021,-7591,-7829,-7728,-7299,-6580,-5627,-4470,-3179,-1796, -380,1035,2406,3692,4836,5830,6596,7114,7338,7263,6866,6151,5121,3850,2364,751,-929,-2561,-4081,-5398, -6469,-7225,-7641,-7713,-7453,-6896,-6071,-5015,-3801,-2465,-1067,369,1761,3095,4316,5399,6279,6940,7339,7435, 7211,6663,5801,4662,3290,1729,85,-1579,-3177,-4612,-5830,-6762,-7366,-7641,-7571,-7162,-6481,-5551,-4428,-3157, -1787,-372,1032,2406,3691,4857,5851,6641,7190,7449,7405,7043,6355,5360,4106,2635,1035,-636,-2282,-3817, -5164,-6258,-7062,-7531,-7647,-7432,-6909,-6099,-5093,-3895,-2581,-1189,227,1634,2961,4199,5289,6198,6877,7293, 7415,7225,6714,5886,4769,3413,1867,222,-1454,-3057,-4519,-5769,-6732,-7390,-7689,-7666,-7311,-6655,-5759,-4654, -3395,-2035,-626,782,2156,3456,4633,5644,6459,7025,7317,7298,6967,6320,5359,4131,2693,1100,-559,-2209, -3758,-5121,-6237,-7066,-7567,-7719,-7536,-7041,-6276,-5273,-4090,-2781,-1397,30,1440,2790,4031,5153,6091,6799, 7262,7429,7284,6814,6016,4945,3627,2112,477,-1178,-2793,-4251,-5525,-6516,-7198,-7527,-7535,-7201,-6577,-5689, -4609,-3355,-2005,-587,827,2217,3526,4731,5769,6614,7216,7544,7566,7278,6671,5749,4562,3140,1566,-84, -1739,-3296,-4683,-5832,-6686,-7231,-7418,-7266,-6800,-6062,-5079,-3914,-2611,-1234,181,1596,2953,4206,5337,6292, 7027,7506,7695,7590,7145,6393,5337,4036,2540,921,-746,-2360,-3848,-5148,-6162,-6887,-7264,-7305,-7023,-6432, -5579,-4523,-3298,-1957,-558,852,2235,3552,4759,5811,6660,7291,7640,7695,7424,6839,5944,4776,3367,1804, 153,-1502,-3080,-4503,-5682,-6582,-7163,-7394,-7298,-6873,-6165,-5233,-4087,-2810,-1451,-41,1361,2725,3989,5119, 6090,6846,7339,7554,7468,7050,6328,5294,4014,2526,904,-764,-2393,-3909,-5230,-6301,-7064,-7485,-7566,-7333, -6779,-5968,-4924,-3725,-2408,-1014,397,1782,3108,4315,5383,6247,6884,7266,7350,7108,6558,5693,4541,3159, 1610,-38,-1693,-3286,-4720,-5929,-6862,-7475,-7756,-7696,-7305,-6637,-5715,-4601,-3337,-1982,-585,814,2171,3445, 4591,5581,6361,6894,7137,7085,6714,6030,5033,3792,2332,743,-924,-2563,-4086,-5420,-6521,-7313,-7765,-7887, -7683,-7168,-6380,-5359,-4175,-2858,-1467,-62,1338,2664,3893,4983,5884,6557,6976,7099,6909,6387,5561,4464, 3109,1582,-46,-1693,-3281,-4733,-5963,-6918,-7554,-7867,-7824,-7474,-6827,-5932,-4825,-3571,-2219,-818,592,1969, 3261,4427,5437,6243,6818,7102,7081,6754,6106,5157,3937,2499,935,-714,-2349,-3871,-5227,-6332,-7163,-7648, -7801,-7612,-7123,-6352,-5361,-4190,-2882,-1501,-86,1317,2654,3902,5009,5942,6640,7096,7249,7107,6627,5847, 4779,3455,1952,333,-1314,-2903,-4377,-5622,-6606,-7286,-7627,-7635,-7310,-6693,-5819,-4736,-3488,-2142,-742,674, 2056,3365,4554,5583,6419,7013,7342,7355,7057,6449,5524,4328,2929,1367,-276,-1919,-3460,-4833,-5976,-6830, -7350,-7549,-7398,-6944,-6216,-5239,-4086,-2794,-1420,-8,1402,2750,3995,5122,6074,6797,7275,7463,7341,6900, 6138,5088,3806,2316,698,-939,-2543,-4019,-5297,-6313,-7021,-7401,-7440,-7145,-6567,-5715,-4657,-3435,-2108,-712, 705,2097,3410,4614,5658,6513,7134,7494,7539,7284,6706,5819,4657,3268,1718,88,-1554,-3109,-4499,-5661, -6552,-7118,-7352,-7234,-6823,-6115,-5158,-4028,-2742,-1386,29,1439,2797,4063,5204,6172,6925,7429,7649,7556, 7155,6426,5415,4145,2679,1076,-580,-2188,-3684,-4994,-6030,-6785,-7206,-7281,-7038,-6488,-5671,-4648,-3438,-2120, -736,669,2053,3361,4578,5637,6501,7149,7516,7602,7358,6808,5953,4815,3434,1906,273,-1377,-2952,-4370, -5573,-6495,-7103,-7370,-7318,-6933,-6270,-5366,-4254,-3000,-1658,-262,1133,2490,3747,4886,5856,6630,7148,7386, 7326,6945,6247,5255,4009,2567,968,-677,-2295,-3808,-5135,-6222,-7002,-7461,-7584,-7381,-6856,-6081,-5084,-3905, -2608,-1233,160,1542,2864,4075,5153,6034,6696,7100,7212,7013,6506,5679,4577,3237,1720,102,-1533,-3109, -4534,-5755,-6699,-7339,-7639,-7598,-7245,-6607,-5710,-4617,-3366,-2030,-646,758,2124,3400,4562,5572,6368,6923, 7198,7181,6852,6210,5261,4062,2643,1084,-547,-2154,-3663,-4995,-6097,-6896,-7376,-7513,-7331,-6841,-6082,-5085, -3916,-2611,-1240,168,1556,2887,4121,5225,6134,6831,7284,7431,7278,6811,6027,4972,3672,2183,589,-1035, -2605,-4053,-5289,-6258,-6921,-7265,-7251,-6938,-6325,-5458,-4392,-3164,-1825,-436,962,2330,3625,4792,5806,6628, 7210,7513,7531,7229,6621,5707,4524,3121,1577,-47,-1666,-3186,-4549,-5680,-6530,-7058,-7238,-7108,-6664,-5931, -4977,-3832,-2573,-1222,175,1550,2873,4112,5216,6143,6844,7306,7474,7355,6897,6159,5115,3824,2339,741, -902,-2488,-3964,-5230,-6249,-6961,-7343,-7397,-7121,-6548,-5735,-4691,-3488,-2181,-811,562,1928,3215,4394,5417, 6247,6852,7182,7218,6951,6364,5484,4315,2942,1404,-217,-1844,-3385,-4767,-5928,-6805,-7365,-7599,-7491,-7086, -6399,-5467,-4345,-3100,-1746,-364,1021,2358,3598,4717,5669,6406,6894,7110,7020,6609,5890,4888,3635,2176, 598,-1026,-2616,-4087,-5383,-6411,-7144,-7555,-7634,-7376,-6833,-6022,-5001,-3815,-2503,-1124,268,1644,2946,4161, 5205,6068,6704,7092,7168,6951,6411,5563,4443,3097,1585,-15,-1630,-3169,-4558,-5738,-6634,-7232,-7484,-7406, -7019,-6346,-5433,-4321,-3065,-1724,-332,1065,2411,3676,4827,5803,6577,7099,7353,7305,6944,6259,5303,4070, 2653,1085,-534,-2122,-3606,-4919,-5967,-6738,-7178,-7287,-7077,-6563,-5774,-4782,-3609,-2313,-950,447,1818,3128, 4337,5402,6287,6950,7352,7466,7272,6767,5960,4865,3538,2050,448,-1161,-2722,-4144,-5333,-6272,-6902,-7198, -7163,-6819,-6187,-5306,-4222,-2994,-1675,-281,1100,2446,3709,4852,5836,6620,7159,7435,7399,7060,6414,5467, 4261,2849,1292,-324,-1925,-3432,-4762,-5858,-6667,-7152,-7310,-7138,-6664,-5917,-4950,-3805,-2533,-1178,204,1567, 2884,4102,5176,6059,6738,7166,7304,7135,6657,5874,4808,3504,2018,428,-1188,-2761,-4189,-5424,-6394,-7068, -7411,-7423,-7110,-6525,-5674,-4618,-3415,-2107,-738,640,1989,3252,4410,5414,6207,6785,7084,7093,6794,6178, 5266,4101,2721,1181,-433,-2030,-3542,-4887,-6012,-6840,-7360,-7544,-7410,-6968,-6245,-5298,-4180,-2900,-1555,-172, 1200,2517,3744,4836,5757,6462,6933,7097,6969,6526,5788,4764,3488,2036,466,-1152,-2715,-4164,-5419,-6406, -7096,-7472,-7505,-7228,-6655,-5834,-4793,-3598,-2285,-925,472,1825,3118,4290,5313,6144,6751,7082,7137,6876, 6302,5431,4286,2932,1422,-182,-1775,-3291,-4654,-5790,-6660,-7205,-7423,-7321,-6900,-6212,-5279,-4171,-2918,-1575, -187,1189,2514,3767,4879,5824,6552,7039,7254,7164,6761,6057,5058,3819,2381,820,-785,-2364,-3817,-5079, -6107,-6832,-7242,-7316,-7076,-6533,-5744,-4719,-3545,-2248,-886,484,1851,3146,4325,5363,6226,6849,7213,7286, 7059,6522,5685,4566,3232,1733,141,-1467,-2995,-4382,-5550,-6441,-7025,-7285,-7214,-6840,-6178,-5277,-4181,-2961, -1630,-251,1123,2452,3699,4824,5788,6541,7056,7297,7232,6860,6172,5208,3994,2568,1017,-597,-2176,-3655, -4956,-6005,-6775,-7213,-7331,-7140,-6623,-5853,-4861,-3709,-2419,-1071,310,1675,2975,4166,5222,6087,6742,7121, 7229,7028,6518,5709,4615,3295,1803,216,-1404,-2940,-4347,-5545,-6487,-7113,-7411,-7385,-7051,-6422,-5554,-4482, -3258,-1943,-575,813,2144,3413,4553,5533,6301,6834,7101,7075,6736,6085,5149,3938,2546,997,-613,-2209, -3686,-5012,-6096,-6897,-7372,-7526,-7364,-6877,-6143,-5173,-4024,-2751,-1400,-20,1349,2666,3881,4949,5856,6537, 6962,7106,6934,6460,5686,4624,3340,1872,295,-1314,-2868,-4293,-5497,-6463,-7116,-7444,-7449,-7129,-6532,-5678, -4617,-3409,-2091,-710,669,2023,3296,4455,5463,6267,6835,7139,7146,6850,6233,5326,4166,2798,1268,-326, -1904,-3408,-4741,-5848,-6668,-7180,-7364,-7218,-6775,-6042,-5103,-3971,-2702,-1342,41,1416,2744,3977,5073,5987, 6692,7151,7318,7186,6740,6001,4974,3701,2246,681,-920,-2482,-3911,-5159,-6139,-6837,-7206,-7239,-6966,-6400, -5575,-4541,-3350,-2051,-686,695,2051,3331,4504,5527,6344,6944,7262,7300,7034,6448,5573,4436,3077,1569, -34,-1631,-3135,-4498,-5644,-6499,-7057,-7276,-7180,-6784,-6098,-5184,-4084,-2840,-1512,-140,1227,2547,3773,4881, 5802,6531,7003,7213,7107,6697,5988,4990,3744,2316,759,-841,-2410,-3867,-5135,-6145,-6882,-7286,-7360,-7125, -6588,-5802,-4802,-3623,-2337,-988,396,1743,3033,4210,5234,6082,6697,7045,7127,6892,6347,5498,4387,3052, 1568,-27,-1617,-3141,-4518,-5679,-6566,-7153,-7404,-7346,-6966,-6307,-5414,-4334,-3099,-1774,-407,965,2299,3539, 4656,5610,6363,6862,7097,7034,6668,6001,5036,3826,2419,881,-707,-2271,-3728,-5009,-6053,-6802,-7247,-7357, -7146,-6639,-5878,-4887,-3729,-2451,-1099,274,1635,2930,4124,5180,6042,6691,7077,7176,6977,6477,5664,4586, 3284,1807,236,-1360,-2891,-4271,-5450,-6376,-6989,-7283,-7249,-6907,-6284,-5418,-4350,-3139,-1813,-447,923,2250, 3507,4647,5618,6382,6937,7186,7163,6813,6172,5239,4053,2647,1132,-461,-2030,-3513,-4824,-5895,-6681,-7163, -7308,-7133,-6667,-5930,-4976,-3838,-2566,-1228,142,1504,2803,4011,5063,5951,6618,7030,7163,6998,6519,5751, 4688,3412,1956,398,-1204,-2731,-4131,-5341,-6297,-6945,-7272,-7277,-6976,-6377,-5539,-4494,-3297,-1997,-636,734, 2067,3336,4480,5474,6264,6826,7111,7118,6814,6200,5305,4142,2778,1256,-319,-1891,-3387,-4711,-5793,-6615, -7127,-7318,-7176,-6736,-6026,-5093,-3971,-2720,-1380,-6,1349,2669,3889,4969,5888,6578,7034,7192,7062,6625, 5876,4857,3610,2163,618,-976,-2521,-3938,-5158,-6145,-6824,-7174,-7223,-6943,-6388,-5568,-4536,-3361,-2069,-708, 658,2005,3270,4427,5431,6252,6834,7161,7194,6930,6352,5481,4349,3016,1506,-58,-1635,-3126,-4470,-5600, -6448,-6987,-7210,-7105,-6698,-6023,-5102,-4007,-2774,-1447,-80,1288,2604,3831,4926,5851,6568,7042,7237,7130, 6729,6021,5033,3792,2371,833,-747,-2314,-3735,-4984,-5993,-6713,-7112,-7190,-6933,-6417,-5619,-4620,-3446,-2170, -822,555,1903,3177,4363,5382,6227,6829,7178,7245,7010,6465,5635,4529,3199,1717,140,-1436,-2937,-4299, -5448,-6324,-6906,-7157,-7099,-6726,-6069,-5190,-4104,-2878,-1551,-194,1163,2486,3723,4834,5783,6520,7024,7251, 7190,6814,6137,5175,3963,2570,1045,-528,-2081,-3535,-4805,-5829,-6583,-7014,-7119,-6917,-6419,-5656,-4678,-3531, -2265,-928,446,1793,3076,4262,5302,6167,6794,7173,7279,7075,6563,5755,4680,3383,1923,358,-1221,-2738, -4120,-5295,-6210,-6824,-7113,-7099,-6751,-6142,-5277,-4226,-3023,-1724,-368,989,2313,3557,4678,5624,6382,6911, 7167,7120,6784,6137,5208,4024,2646,1131,-448,-2007,-3474,-4758,-5822,-6610,-7086,-7235,-7065,-6604,-5879,-4929, -3804,-2544,-1222,131,1475,2763,3956,5003,5881,6535,6939,7056,6881,6408,5627,4593,3320,1875,325,-1253, -2771,-4157,-5353,-6294,-6923,-7265,-7266,-6958,-6381,-5534,-4505,-3311,-2023,-661,685,2015,3269,4412,5391,6184, 6731,7022,7023,6713,6106,5217,4068,2708,1224,-343,-1898,-3372,-4679,-5760,-6566,-7067,-7243,-7099,-6667,-5962, -5032,-3920,-2670,-1348,16,1376,2667,3882,4957,5850,6550,6987,7149,7026,6590,5860,4847,3604,2181,650, -924,-2435,-3847,-5051,-6022,-6699,-7057,-7082,-6818,-6249,-5444,-4425,-3255,-1966,-625,742,2066,3339,4486,5490, 6296,6869,7185,7222,6947,6373,5518,4402,3062,1575,25,-1534,-3015,-4338,-5441,-6284,-6824,-7040,-6947,-6537, -5863,-4967,-3873,-2660,-1341,7,1359,2661,3873,4953,5877,6578,7045,7231,7119,6716,6014,5031,3809,2399, 882,-693,-2236,-3658,-4889,-5898,-6602,-7007,-7088,-6855,-6340,-5566,-4571,-3423,-2159,-824,534,1867,3128,4288, 5308,6127,6729,7073,7135,6897,6346,5511,4409,3100,1630,75,-1501,-2991,-4345,-5484,-6361,-6927,-7201,-7135, -6778,-6130,-5260,-4208,-2998,-1696,-358,991,2297,3518,4608,5537,6268,6763,6975,6910,6536,5854,4898,3700, 2310,792,-778,-2323,-3757,-5028,-6052,-6800,-7235,-7352,-7155,-6671,-5912,-4951,-3815,-2571,-1243,117,1448,2717, 3897,4924,5770,6393,6761,6856,6648,6133,5336,4270,2979,1524,-22,-1595,-3101,-4467,-5635,-6532,-7140,-7437, -7412,-7084,-6467,-5620,-4578,-3372,-2079,-735,615,1927,3169,4282,5228,5992,6511,6757,6719,6376,5737,4813, 3631,2268,765,-798,-2341,-3795,-5066,-6123,-6907,-7367,-7515,-7349,-6886,-6170,-5219,-4098,-2865,-1542,-176,1161, 2447,3628,4687,5559,6205,6614,6739,6571,6093,5317,4287,3030,1593,55,-1500,-3007,-4387,-5574,-6501,-7135, -7454,-7465,-7146,-6576,-5740,-4715,-3539,-2254,-906,443,1767,3009,4146,5118,5900,6446,6741,6732,6437,5843, 4958,3820,2478,994,-551,-2092,-3542,-4840,-5910,-6709,-7208,-7389,-7246,-6824,-6123,-5196,-4093,-2860,-1544,-191, 1151,2444,3646,4710,5611,6300,6729,6889,6760,6332,5593,4609,3368,1965,440,-1114,-2621,-4004,-5208,-6147, -6813,-7170,-7205,-6939,-6380,-5574,-4572,-3402,-2124,-788,570,1895,3154,4308,5300,6104,6683,7002,7041,6767, 6205,5361,4247,2930,1474,-67,-1606,-3073,-4390,-5471,-6304,-6841,-7047,-6944,-6539,-5872,-4977,-3893,-2667,-1363, -14,1326,2630,3834,4913,5828,6535,6991,7189,7091,6691,5992,5018,3816,2437,927,-629,-2135,-3541,-4765, -5752,-6450,-6833,-6904,-6674,-6146,-5374,-4388,-3243,-1984,-652,707,2026,3299,4454,5464,6293,6891,7236,7297, 7055,6526,5709,4631,3328,1879,339,-1198,-2679,-4008,-5131,-5988,-6555,-6814,-6744,-6373,-5736,-4873,-3800,-2598, -1303,27,1379,2685,3889,4983,5916,6639,7130,7347,7267,6908,6232,5287,4109,2735,1232,-323,-1849,-3271, -4513,-5537,-6263,-6693,-6809,-6614,-6119,-5382,-4419,-3299,-2047,-726,625,1948,3218,4379,5406,6235,6861,7231, 7323,7113,6610,5801,4748,3467,2029,498,-1059,-2531,-3891,-5048,-5944,-6546,-6839,-6815,-6495,-5891,-5053,-4020, -2834,-1549,-228,1127,2424,3651,4758,5693,6436,6956,7189,7157,6806,6174,5255,4084,2732,1241,-311,-1842, -3283,-4545,-5593,-6366,-6839,-6982,-6822,-6371,-5650,-4723,-3615,-2392,-1086,260,1593,2860,4038,5071,5931,6576, 6958,7081,6907,6429,5662,4630,3376,1950,413,-1132,-2627,-4000,-5174,-6098,-6734,-7057,-7077,-6776,-6200,-5388, -4369,-3194,-1928,-596,741,2046,3284,4398,5364,6131,6670,6940,6926,6616,6008,5122,3986,2661,1179,-357, -1892,-3343,-4635,-5696,-6496,-6992,-7179,-7047,-6637,-5948,-5036,-3949,-2732,-1429,-90,1241,2521,3707,4766,5645, 6306,6732,6886,6743,6305,5569,4563,3335,1930,416,-1135,-2630,-4019,-5211,-6167,-6831,-7186,-7238,-6972,-6425, -5634,-4645,-3492,-2224,-905,429,1750,2987,4118,5094,5885,6452,6759,6775,6500,5922,5063,3959,2639,1186, -350,-1894,-3344,-4646,-5741,-6559,-7124,-7329,-7229,-6840,-6182,-5294,-4225,-3011,-1724,-395,943,2221,3410,4485, 5376,6070,6519,6694,6590,6184,5481,4508,3311,1925,418,-1121,-2624,-4021,-5248,-6221,-6921,-7309,-7392,-7165, -6653,-5889,-4920,-3777,-2530,-1210,136,1448,2690,3837,4831,5650,6238,6576,6628,6391,5863,5041,3960,2667, 1227,-298,-1826,-3300,-4627,-5731,-6591,-7159,-7404,-7339,-6979,-6357,-5492,-4430,-3230,-1947,-607,732,2031,3232, 4315,5245,5973,6440,6664,6595,6227,5565,4618,3444,2086,596,-934,-2446,-3846,-5081,-6087,-6809,-7225,-7339, -7135,-6645,-5907,-4945,-3825,-2581,-1256,81,1407,2678,3836,4859,5705,6315,6693,6781,6567,6085,5298,4262, 2999,1574,63,-1460,-2932,-4260,-5390,-6270,-6864,-7147,-7116,-6781,-6183,-5332,-4295,-3106,-1820,-498,841,2155, 3375,4485,5436,6174,6690,6939,6906,6568,5932,5027,3888,2542,1073,-463,-1975,-3391,-4642,-5670,-6412,-6873, -7013,-6847,-6393,-5671,-4730,-3630,-2395,-1087,262,1589,2858,4037,5075,5923,6576,6970,7093,6924,6447,5688, 4673,3435,2025,518,-1010,-2500,-3850,-5015,-5916,-6546,-6865,-6865,-6566,-5990,-5173,-4167,-2995,-1722,-396,948, 2253,3489,4599,5559,6327,6863,7133,7123,6812,6221,5341,4205,2884,1434,-98,-1608,-3037,-4312,-5367,-6156, -6651,-6819,-6681,-6269,-5579,-4669,-3581,-2371,-1075,265,1595,2867,4054,5111,5991,6650,7075,7232,7093,6652, 5935,4931,3715,2321,826,-707,-2190,-3571,-4740,-5681,-6341,-6700,-6742,-6479,-5943,-5154,-4161,-3016,-1751,-441, 899,2207,3449,4573,5546,6340,6892,7191,7208,6932,6372,5518,4424,3123,1672,151,-1370,-2815,-4100,-5184, -6009,-6522,-6741,-6646,-6262,-5614,-4731,-3660,-2469,-1169,154,1480,2751,3939,5005,5899,6577,7031,7213,7101, 6693,5990,5025,3838,2453,968,-556,-2052,-3433,-4647,-5606,-6298,-6696,-6773,-6548,-6033,-5272,-4312,-3186,-1937, -624,699,2014,3255,4394,5384,6184,6776,7095,7144,6910,6366,5546,4475,3187,1760,251,-1281,-2729,-4035, -5140,-5989,-6552,-6804,-6741,-6392,-5764,-4900,-3858,-2675,-1395,-73,1258,2538,3741,4822,5736,6446,6915,7122, 7038,6665,5997,5065,3899,2547,1054,-480,-1970,-3365,-4598,-5587,-6305,-6731,-6848,-6660,-6175,-5446,-4502,-3392, -2160,-855,476,1780,3028,4182,5180,6009,6614,6974,7056,6844,6339,5553,4503,3242,1828,328,-1194,-2662, -3990,-5118,-6002,-6599,-6882,-6851,-6535,-5942,-5111,-4096,-2923,-1663,-338,983,2269,3473,4553,5485,6222,6715, 6952,6906,6560,5924,5016,3870,2534,1066,-459,-1964,-3371,-4616,-5653,-6408,-6866,-7021,-6858,-6421,-5721,-4801, -3721,-2510,-1216,105,1412,2674,3829,4851,5686,6318,6699,6810,6627,6165,5404,4390,3140,1741,243,-1279, -2757,-4090,-5246,-6151,-6782,-7110,-7120,-6830,-6270,-5466,-4472,-3320,-2071,-762,565,1858,3062,4167,5114,5866, 6387,6653,6637,6327,5728,4846,3735,2417,968,-552,-2055,-3467,-4736,-5784,-6561,-7059,-7226,-7096,-6688,-6007, -5108,-4047,-2831,-1541,-219,1092,2348,3527,4562,5418,6079,6501,6652,6502,6060,5340,4363,3150,1771,293, -1223,-2695,-4057,-5222,-6154,-6811,-7157,-7199,-6943,-6403,-5627,-4643,-3503,-2253,-942,388,1679,2915,4030,4989, 5773,6328,6627,6652,6381,5818,4970,3880,2597,1171,-342,-1843,-3263,-4538,-5614,-6428,-6950,-7155,-7065,-6670, -6024,-5142,-4086,-2899,-1620,-287,1025,2293,3478,4539,5429,6097,6548,6729,6612,6209,5531,4573,3389,2030, 561,-954,-2426,-3788,-4973,-5925,-6606,-6991,-7070,-6833,-6328,-5575,-4614,-3486,-2248,-949,371,1675,2915,4035, 5027,5831,6411,6743,6790,6557,6035,5217,4164,2905,1489,-5,-1506,-2942,-4229,-5322,-6159,-6702,-6952,-6892, -6538,-5917,-5065,-4023,-2850,-1573,-258,1066,2341,3527,4598,5511,6217,6694,6901,6825,6453,5800,4881,3732, 2390,937,-577,-2039,-3426,-4633,-5622,-6340,-6753,-6872,-6665,-6200,-5471,-4539,-3435,-2206,-914,400,1705,2945, 4088,5081,5903,6505,6857,6937,6737,6238,5471,4421,3178,1783,300,-1211,-2655,-3958,-5070,-5944,-6535,-6809, -6786,-6478,-5881,-5059,-4041,-2896,-1642,-340,980,2247,3451,4524,5447,6166,6661,6893,6844,6498,5871,4974, 3847,2516,1066,-439,-1923,-3329,-4564,-5570,-6317,-6770,-6923,-6774,-6330,-5638,-4743,-3658,-2460,-1178,130,1426, 2667,3820,4820,5656,6286,6662,6765,6585,6110,5365,4345,3129,1737,251,-1255,-2719,-4052,-5181,-6090,-6714, -7028,-7038,-6756,-6202,-5410,-4416,-3278,-2041,-741,567,1849,3043,4137,5073,5817,6323,6593,6579,6278,5672, 4804,3696,2392,955,-543,-2033,-3434,-4695,-5734,-6512,-6997,-7182,-7060,-6654,-5985,-5102,-4039,-2847,-1569,-258, 1056,2309,3465,4490,5349,6006,6421,6553,6415,5992,5265,4295,3100,1727,259,-1238,-2698,-4036,-5194,-6112, -6763,-7121,-7152,-6889,-6369,-5592,-4622,-3490,-2253,-947,370,1656,2876,3984,4950,5731,6285,6567,6597,6341, 5776,4948,3875,2596,1184,-311,-1800,-3208,-4466,-5527,-6324,-6836,-7045,-6956,-6569,-5922,-5051,-4002,-2807,-1544, -220,1087,2347,3524,4582,5463,6147,6588,6769,6663,6262,5584,4650,3471,2129,673,-808,-2266,-3626,-4800, -5739,-6413,-6793,-6859,-6641,-6125,-5381,-4426,-3296,-2076,-776,548,1840,3079,4198,5185,5994,6565,6889,6957, 6722,6194,5383,4339,3089,1689,205,-1271,-2697,-3969,-5059,-5887,-6426,-6668,-6610,-6250,-5637,-4781,-3754,-2587, -1322,-6,1301,2578,3769,4836,5735,6433,6899,7102,7040,6665,6025,5099,3957,2622,1175,-313,-1781,-3153, -4341,-5323,-6032,-6446,-6561,-6369,-5897,-5179,-4252,-3153,-1935,-654,660,1957,3190,4322,5316,6131,6727,7073, 7149,6941,6450,5662,4641,3404,2011,528,-963,-2401,-3692,-4815,-5680,-6255,-6543,-6519,-6218,-5631,-4812,-3816, -2672,-1412,-129,1186,2447,3636,4719,5629,6337,6829,7052,6995,6649,6016,5123,4001,2672,1235,-262,-1742, -3128,-4357,-5370,-6112,-6569,-6717,-6571,-6145,-5459,-4563,-3500,-2297,-1037,269,1557,2794,3929,4925,5748,6363, 6733,6838,6657,6184,5428,4424,3201,1826,350,-1152,-2585,-3916,-5047,-5950,-6571,-6887,-6902,-6637,-6077,-5298, -4320,-3196,-1963,-669,629,1892,3085,4168,5094,5823,6333,6581,6567,6255,5656,4799,3698,2398,967,-520, -1993,-3383,-4627,-5651,-6426,-6912,-7095,-6982,-6576,-5922,-5049,-3983,-2805,-1539,-234,1053,2301,3451,4465,5320, 5961,6373,6505,6352,5926,5217,4241,3060,1705,247,-1240,-2686,-4017,-5162,-6085,-6714,-7064,-7109,-6853,-6335, -5571,-4611,-3489,-2259,-968,330,1615,2815,3915,4865,5635,6168,6474,6480,6224,5654,4828,3762,2494,1088, -383,-1859,-3250,-4506,-5558,-6366,-6873,-7087,-6989,-6609,-5976,-5115,-4085,-2903,-1636,-339,958,2214,3375,4423, 5286,5963,6396,6562,6454,6060,5375,4433,3268,1930,486,-1001,-2451,-3791,-4962,-5897,-6577,-6957,-7032,-6817, -6319,-5575,-4637,-3528,-2326,-1036,272,1558,2772,3888,4858,5637,6216,6527,6577,6346,5806,5014,3962,2713, 1317,-148,-1630,-3039,-4316,-5391,-6215,-6762,-7013,-6962,-6615,-6012,-5170,-4155,-2997,-1744,-437,857,2116,3299, 4353,5241,5948,6396,6607,6524,6163,5503,4595,3449,2135,695,-787,-2245,-3606,-4792,-5759,-6468,-6875,-6980, -6785,-6331,-5615,-4698,-3599,-2393,-1109,194,1487,2718,3837,4824,5641,6232,6578,6671,6458,5965,5196,4185, 2959,1582,118,-1360,-2778,-4057,-5156,-6011,-6579,-6855,-6833,-6505,-5924,-5113,-4107,-2961,-1708,-401,894,2175, 3369,4436,5355,6072,6561,6802,6753,6427,5813,4930,3817,2521,1095,-363,-1829,-3198,-4405,-5393,-6119,-6567, -6710,-6541,-6105,-5419,-4513,-3442,-2239,-970,335,1632,2874,4013,5026,5852,6477,6851,6953,6777,6325,5580, 4596,3396,2038,577,-903,-2334,-3625,-4769,-5645,-6252,-6556,-6573,-6283,-5738,-4941,-3971,-2837,-1597,-311,992, 2261,3455,4547,5467,6204,6722,6975,6959,6643,6059,5206,4113,2821,1417,-64,-1521,-2907,-4139,-5161,-5929, -6413,-6579,-6459,-6054,-5405,-4533,-3483,-2295,-1042,260,1548,2791,3939,4939,5784,6431,6827,6964,6815,6386, 5677,4708,3526,2185,735,-754,-2181,-3509,-4643,-5570,-6212,-6556,-6606,-6360,-5837,-5083,-4124,-3017,-1797,-514, 787,2054,3257,4356,5299,6051,6579,6862,6886,6601,6052,5223,4161,2898,1493,30,-1429,-2822,-4071,-5110, -5911,-6406,-6630,-6546,-6173,-5539,-4689,-3655,-2491,-1231,57,1344,2595,3749,4781,5648,6313,6752,6907,6795, 6400,5721,4793,3640,2313,880,-596,-2033,-3363,-4520,-5459,-6124,-6503,-6579,-6362,-5882,-5144,-4202,-3111,-1898, -622,677,1949,3156,4261,5230,6003,6564,6884,6927,6693,6161,5370,4330,3090,1714,256,-1210,-2604,-3865, -4932,-5744,-6286,-6539,-6471,-6137,-5535,-4707,-3713,-2570,-1318,-39,1260,2507,3671,4713,5589,6267,6729,6922, 6839,6475,5821,4919,3779,2463,1046,-433,-1867,-3217,-4406,-5370,-6076,-6489,-6601,-6425,-5974,-5260,-4358,-3297, -2103,-850,443,1714,2920,4035,5007,5802,6373,6701,6770,6555,6058,5290,4270,3052,1683,218,-1251,-2656, -3954,-5039,-5896,-6474,-6755,-6745,-6445,-5871,-5086,-4102,-2971,-1752,-461,807,2057,3229,4279,5168,5873,6343, 6567,6506,6170,5543,4664,3542,2259,841,-621,-2083,-3449,-4645,-5628,-6370,-6812,-6970,-6814,-6401,-5729,-4842, -3785,-2621,-1359,-78,1198,2416,3534,4525,5334,5943,6312,6416,6228,5766,5031,4041,2843,1493,47,-1413, -2828,-4114,-5228,-6111,-6723,-7027,-7045,-6766,-6224,-5447,-4488,-3373,-2154,-868,411,1667,2858,3925,4846,5568, 6082,6339,6314,6020,5444,4589,3513,2235,837,-611,-2061,-3428,-4639,-5648,-6400,-6887,-7057,-6929,-6536,-5881, -5015,-3967,-2802,-1550,-259,1019,2265,3389,4413,5249,5883,6279,6420,6279,5859,5146,4201,3031,1707,275, -1184,-2596,-3894,-5028,-5925,-6552,-6887,-6943,-6691,-6175,-5420,-4474,-3368,-2153,-880,419,1675,2874,3965,4900, 5652,6191,6474,6497,6225,5672,4865,3808,2557,1192,-269,-1705,-3086,-4319,-5343,-6126,-6634,-6839,-6748,-6374, -5755,-4917,-3889,-2729,-1491,-189,1095,2330,3480,4501,5363,6028,6448,6617,6510,6124,5451,4525,3376,2074, 654,-799,-2217,-3543,-4684,-5618,-6277,-6638,-6724,-6513,-6021,-5301,-4366,-3286,-2082,-807,481,1746,2954,4052, 5010,5780,6335,6658,6706,6454,5945,5156,4132,2908,1537,93,-1343,-2746,-3989,-5044,-5854,-6398,-6646,-6591, -6250,-5665,-4840,-3838,-2694,-1461,-181,1101,2346,3502,4542,5419,6096,6548,6741,6666,6297,5664,4758,3639, 2339,933,-533,-1959,-3297,-4466,-5429,-6114,-6531,-6644,-6468,-6018,-5319,-4417,-3357,-2166,-912,383,1644,2853, 3964,4929,5714,6302,6635,6708,6501,6000,5245,4240,3031,1670,236,-1223,-2623,-3897,-4981,-5824,-6391,-6691, -6667,-6365,-5801,-5023,-4039,-2921,-1687,-423,864,2102,3273,4322,5208,5916,6398,6612,6559,6232,5618,4735, 3637,2350,954,-501,-1935,-3277,-4473,-5457,-6187,-6627,-6771,-6635,-6211,-5536,-4658,-3615,-2439,-1192,100,1361, 2575,3699,4684,5499,6088,6463,6564,6396,5920,5201,4217,3033,1691,260,-1199,-2596,-3892,-4987,-5864,-6461, -6774,-6797,-6519,-5980,-5220,-4257,-3140,-1929,-661,624,1871,3050,4115,5027,5752,6258,6513,6472,6178,5608, 4756,3678,2429,1040,-406,-1844,-3203,-4411,-5412,-6174,-6644,-6827,-6710,-6325,-5684,-4821,-3783,-2631,-1387,-102, 1177,2395,3525,4531,5366,5987,6392,6527,6384,5948,5256,4311,3141,1822,398,-1039,-2445,-3745,-4873,-5771, -6397,-6740,-6797,-6543,-6031,-5290,-4354,-3258,-2055,-785,498,1757,2941,4027,4956,5696,6232,6518,6526,6263, 5718,4909,3862,2616,1251,-194,-1624,-2994,-4230,-5243,-6030,-6531,-6744,-6650,-6291,-5668,-4832,-3812,-2673,-1437, -159,1123,2347,3487,4511,5365,6021,6438,6609,6503,6114,5439,4531,3390,2092,683,-766,-2171,-3471,-4618, -5530,-6189,-6559,-6641,-6427,-5944,-5228,-4310,-3222,-2029,-768,511,1766,2959,4064,5006,5778,6338,6638,6690, 6457,5939,5157,4136,2920,1571,146,-1299,-2678,-3915,-4951,-5765,-6308,-6534,-6490,-6149,-5570,-4756,-3752,-2619, -1396,-122,1152,2388,3537,4566,5434,6110,6553,6746,6669,6308,5671,4772,3656,2378,981,-460,-1884,-3197, -4357,-5307,-5991,-6403,-6515,-6345,-5893,-5204,-4312,-3259,-2082,-832,444,1695,2897,4002,4959,5742,6314,6650, 6723,6511,6032,5273,4281,3070,1733,307,-1132,-2528,-3780,-4861,-5692,-6278,-6568,-6548,-6252,-5705,-4920,-3947, -2835,-1635,-372,898,2136,3285,4324,5210,5905,6374,6583,6532,6195,5586,4721,3636,2363,971,-478,-1903, -3237,-4422,-5406,-6123,-6568,-6717,-6581,-6168,-5509,-4636,-3604,-2435,-1208,64,1315,2517,3626,4606,5398,6004, 6368,6462,6280,5828,5096,4133,2948,1621,210,-1228,-2617,-3905,-5000,-5859,-6466,-6786,-6795,-6534,-6013,-5251, -4311,-3211,-2013,-758,522,1757,2931,3981,4878,5607,6104,6341,6327,6029,5452,4615,3544,2305,933,-501, -1926,-3274,-4462,-5467,-6213,-6687,-6861,-6757,-6362,-5723,-4874,-3854,-2709,-1470,-196,1067,2286,3414,4408,5243, 5862,6255,6386,6245,5823,5135,4188,3049,1738,331,-1109,-2498,-3793,-4898,-5781,-6408,-6748,-6796,-6555,-6050, -5322,-4386,-3306,-2109,-843,429,1676,2854,3927,4858,5600,6122,6396,6412,6149,5612,4798,3759,2544,1178, -248,-1673,-3023,-4237,-5251,-6035,-6527,-6749,-6666,-6315,-5706,-4879,-3865,-2729,-1493,-231,1043,2260,3394,4408, 5268,5903,6320,6482,6378,5986,5318,4407,3286,1986,597,-837,-2236,-3537,-4677,-5590,-6238,-6621,-6696,-6490, -6025,-5315,-4399,-3331,-2149,-901,377,1637,2822,3912,4848,5618,6165,6468,6504,6286,5775,5004,3977,2779, 1439,20,-1412,-2763,-3992,-5026,-5834,-6372,-6612,-6557,-6244,-5656,-4851,-3862,-2743,-1517,-255,1021,2240,3390, 4418,5298,5967,6409,6601,6530,6170,5538,4662,3567,2294,900,-529,-1911,-3225,-4382,-5310,-5995,-6395,-6513, -6346,-5893,-5208,-4315,-3255,-2090,-847,418,1668,2869,3973,4921,5714,6288,6628,6698,6491,6011,5277,4288, 3112,1786,374,-1047,-2428,-3669,-4731,-5562,-6122,-6397,-6380,-6090,-5536,-4766,-3791,-2682,-1484,-225,1041,2273, 3422,4451,5336,6029,6491,6716,6662,6334,5737,4870,3789,2539,1160,-257,-1674,-2993,-4175,-5145,-5861,-6306, -6452,-6317,-5907,-5254,-4392,-3371,-2222,-986,273,1523,2732,3829,4791,5586,6175,6540,6631,6453,6003,5278, 4317,3138,1822,417,-1016,-2408,-3657,-4753,-5612,-6219,-6538,-6560,-6298,-5788,-5032,-4096,-3009,-1815,-574,691, 1925,3063,4118,5020,5721,6219,6453,6425,6131,5543,4716,3658,2422,1045,-379,-1798,-3136,-4324,-5325,-6063, -6545,-6721,-6626,-6249,-5620,-4770,-3774,-2623,-1403,-142,1099,2304,3413,4408,5217,5845,6231,6360,6216,5790, 5104,4175,3026,1733,339,-1089,-2469,-3753,-4859,-5738,-6371,-6717,-6761,-6535,-6037,-5322,-4391,-3316,-2135,-888, 376,1622,2788,3849,4767,5509,6027,6294,6311,6048,5512,4714,3683,2474,1133,-293,-1692,-3040,-4240,-5249, -6021,-6522,-6731,-6652,-6299,-5698,-4874,-3879,-2748,-1531,-274,985,2203,3336,4344,5183,5823,6241,6416,6303, 5909,5265,4362,3244,1961,586,-836,-2215,-3515,-4629,-5528,-6183,-6560,-6633,-6432,-5966,-5262,-4347,-3296,-2110, -873,395,1639,2820,3896,4843,5599,6159,6457,6498,6273,5771,5000,4004,2816,1480,89,-1328,-2678,-3887, -4920,-5723,-6246,-6478,-6434,-6117,-5535,-4728,-3758,-2637,-1419,-158,1100,2319,3460,4482,5349,6014,6470,6655, 6588,6229,5598,4730,3644,2379,1011,-401,-1813,-3096,-4243,-5168,-5851,-6248,-6366,-6189,-5744,-5075,-4187,-3148, -1977,-740,519,1772,2959,4050,4999,5774,6354,6687,6753,6556,6084,5344,4360,3189,1875,477,-942,-2292, -3530,-4580,-5412,-5982,-6252,-6234,-5942,-5390,-4627,-3668,-2566,-1378,-119,1144,2361,3504,4536,5413,6101,6564, 6776,6724,6393,5798,4959,3881,2636,1269,-148,-1547,-2858,-4026,-4985,-5697,-6137,-6298,-6160,-5754,-5109,-4250, -3224,-2082,-852,394,1642,2831,3927,4889,5688,6284,6641,6725,6553,6102,5386,4431,3286,1975,579,-841, -2206,-3465,-4533,-5402,-5992,-6299,-6328,-6071,-5569,-4817,-3882,-2805,-1617,-373,875,2105,3248,4291,5186,5894, 6374,6629,6606,6316,5736,4921,3868,2639,1279,-126,-1533,-2863,-4042,-5041,-5785,-6253,-6445,-6340,-5967,-5351, -4526,-3517,-2391,-1175,75,1315,2516,3632,4599,5406,6022,6408,6528,6384,5972,5282,4355,3209,1921,536, -879,-2264,-3530,-4626,-5509,-6144,-6496,-6550,-6325,-5849,-5123,-4212,-3147,-1983,-754,501,1731,2889,3950,4857, 5589,6098,6362,6374,6114,5561,4770,3748,2537,1193,-228,-1633,-2965,-4170,-5187,-5953,-6451,-6673,-6615,-6272, -5675,-4863,-3886,-2763,-1565,-312,923,2127,3253,4246,5073,5712,6119,6274,6158,5764,5102,4204,3088,1821, 435,-982,-2365,-3658,-4775,-5682,-6341,-6713,-6803,-6602,-6150,-5467,-4576,-3517,-2358,-1124,135,1360,2534,3603, 4529,5277,5817,6110,6153,5916,5411,4634,3633,2451,1126,-273,-1690,-3032,-4239,-5277,-6075,-6603,-6852,-6824, -6504,-5929,-5150,-4173,-3074,-1870,-625,629,1838,2972,3985,4838,5493,5935,6123,6037,5689,5070,4199,3118, 1853,488,-915,-2302,-3594,-4725,-5660,-6333,-6747,-6862,-6694,-6265,-5606,-4716,-3677,-2525,-1296,-42,1197,2386, 3469,4423,5202,5766,6094,6169,5961,5503,4759,3794,2634,1323,-66,-1470,-2819,-4033,-5081,-5911,-6460,-6727, -6718,-6434,-5899,-5126,-4168,-3071,-1873,-613,635,1852,2993,4032,4901,5588,6062,6271,6234,5913,5315,4483, 3426,2186,843,-551,-1938,-3238,-4391,-5340,-6039,-6482,-6621,-6485,-6075,-5431,-4577,-3557,-2397,-1188,71,1316, 2513,3607,4562,5360,5971,6319,6426,6258,5822,5117,4176,3035,1749,366,-1040,-2377,-3617,-4690,-5536,-6131, -6434,-6457,-6199,-5672,-4929,-3997,-2925,-1747,-501,759,1975,3127,4165,5060,5769,6250,6496,6489,6180,5633, 4817,3783,2568,1231,-163,-1551,-2863,-4038,-5007,-5752,-6214,-6399,-6298,-5930,-5311,-4480,-3483,-2356,-1138,91, 1336,2530,3638,4609,5429,6039,6418,6545,6405,5991,5311,4388,3268,1994,621,-781,-2155,-3406,-4498,-5370, -5992,-6330,-6387,-6174,-5694,-4980,-4073,-3015,-1850,-621,628,1850,2998,4048,4956,5685,6204,6467,6487,6226, 5685,4889,3886,2683,1349,-41,-1432,-2751,-3950,-4945,-5717,-6207,-6426,-6357,-6020,-5421,-4624,-3650,-2536,-1328, -95,1148,2345,3462,4452,5271,5905,6324,6473,6371,5983,5336,4451,3345,2081,721,-674,-2043,-3309,-4429, -5328,-5979,-6356,-6438,-6252,-5794,-5104,-4212,-3169,-2022,-801,454,1681,2836,3914,4834,5580,6114,6413,6456, 6223,5723,4962,3972,2793,1480,88,-1307,-2633,-3838,-4867,-5648,-6176,-6427,-6393,-6079,-5523,-4742,-3784,-2683, -1493,-254,979,2184,3312,4318,5164,5813,6248,6442,6355,5993,5388,4518,3441,2194,844,-554,-1934,-3224, -4347,-5269,-5953,-6352,-6476,-6319,-5895,-5237,-4377,-3345,-2199,-987,256,1489,2660,3727,4670,5439,5993,6324, 6397,6191,5720,4988,4013,2861,1557,174,-1220,-2558,-3777,-4829,-5655,-6203,-6482,-6482,-6192,-5667,-4910,-3967, -2889,-1707,-464,767,1980,3122,4142,4999,5679,6140,6366,6304,5990,5402,4559,3509,2275,937,-453,-1838, -3126,-4272,-5224,-5922,-6365,-6531,-6388,-6004,-5363,-4507,-3503,-2366,-1170,79,1311,2495,3575,4549,5338,5930, 6271,6378,6205,5771,5059,4138,2985,1720,339,-1066,-2405,-3641,-4703,-5548,-6126,-6440,-6464,-6226,-5711,-4979, -4052,-2987,-1801,-583,671,1880,3025,4075,4954,5655,6146,6387,6371,6077,5515,4710,3677,2465,1146,-245, -1625,-2932,-4104,-5067,-5787,-6267,-6444,-6349,-5972,-5365,-4549,-3553,-2432,-1233,12,1245,2437,3539,4504,5316, 5928,6303,6438,6295,5881,5211,4304,3178,1913,543,-845,-2201,-3451,-4533,-5411,-6033,-6374,-6426,-6216,-5730, -5026,-4122,-3071,-1912,-687,555,1770,2923,3967,4877,5592,6087,6363,6378,6111,5581,4791,3791,2595,1272, -108,-1492,-2809,-3988,-4986,-5742,-6246,-6466,-6405,-6072,-5484,-4691,-3718,-2609,-1421,-188,1044,2237,3339,4327, 5157,5784,6196,6352,6227,5856,5208,4317,3217,1968,620,-779,-2145,-3417,-4520,-5430,-6071,-6444,-6541,-6361, -5924,-5237,-4356,-3332,-2178,-961,272,1486,2636,3696,4608,5349,5886,6179,6210,5980,5470,4711,3742,2560, 1258,-120,-1509,-2834,-4043,-5062,-5852,-6377,-6632,-6595,-6294,-5746,-4977,-4026,-2940,-1755,-533,706,1890,3012, 4010,4844,5493,5925,6108,6031,5678,5061,4195,3126,1890,558,-843,-2203,-3478,-4597,-5521,-6201,-6608,-6728, -6580,-6161,-5502,-4647,-3623,-2504,-1294,-50,1165,2323,3405,4338,5098,5646,5978,6042,5849,5376,4661,3700, 2560,1261,-108,-1482,-2809,-4023,-5056,-5865,-6421,-6704,-6706,-6431,-5888,-5139,-4207,-3130,-1956,-718,514,1724, 2861,3871,4726,5411,5866,6084,6044,5724,5144,4313,3275,2069,736,-639,-2007,-3286,-4418,-5359,-6054,-6483, -6633,-6497,-6109,-5477,-4636,-3627,-2506,-1295,-61,1172,2353,3430,4393,5178,5757,6125,6228,6067,5634,4941, 4016,2904,1628,281,-1093,-2420,-3652,-4700,-5530,-6107,-6408,-6437,-6182,-5679,-4944,-4028,-2970,-1795,-564,678, 1891,3029,4068,4954,5652,6146,6398,6383,6105,5557,4768,3753,2552,1242,-123,-1495,-2775,-3923,-4883,-5602, -6069,-6253,-6153,-5783,-5167,-4350,-3372,-2242,-1042,190,1432,2612,3710,4691,5495,6107,6484,6611,6486,6078, 5418,4534,3425,2173,833,-547,-1879,-3108,-4191,-5043,-5653,-5991,-6053,-5839,-5356,-4652,-3756,-2708,-1544,-330, 923,2124,3271,4323,5220,5948,6457,6732,6741,6479,5971,5197,4200,3022,1736,358,-1002,-2315,-3482,-4466, -5219,-5716,-5921,-5866,-5528,-4949,-4153,-3183,-2083,-908,333,1564,2756,3849,4826,5653,6286,6688,6854,6744, 6369,5725,4853,3768,2535,1196,-182,-1528,-2777,-3874,-4767,-5403,-5777,-5869,-5684,-5245,-4568,-3691,-2668,-1530, -314,916,2126,3285,4329,5249,5983,6506,6804,6848,6611,6129,5378,4403,3238,1943,570,-804,-2122,-3309, -4321,-5109,-5638,-5887,-5868,-5565,-5020,-4256,-3307,-2236,-1061,158,1381,2572,3676,4666,5516,6154,6570,6751, 6671,6327,5705,4842,3784,2563,1218,-158,-1524,-2787,-3908,-4831,-5509,-5918,-6041,-5900,-5503,-4862,-4015,-3015, -1883,-689,535,1737,2894,3946,4872,5623,6177,6494,6558,6350,5872,5143,4201,3046,1760,397,-983,-2310, -3525,-4566,-5382,-5942,-6240,-6240,-5983,-5460,-4732,-3821,-2749,-1597,-388,836,2027,3147,4137,4985,5650,6100, 6296,6247,5926,5340,4498,3454,2243,915,-476,-1841,-3119,-4255,-5205,-5911,-6350,-6518,-6412,-6029,-5413,-4599, -3612,-2510,-1311,-89,1115,2278,3354,4290,5067,5627,5972,6061,5888,5438,4756,3819,2700,1426,65,-1316, -2647,-3875,-4917,-5763,-6348,-6674,-6712,-6477,-5985,-5268,-4370,-3314,-2156,-955,270,1466,2590,3605,4474,5178, 5651,5889,5870,5572,5025,4223,3202,2023,700,-661,-2026,-3328,-4470,-5434,-6166,-6629,-6819,-6728,-6377,-5787, -4982,-4000,-2910,-1710,-483,736,1906,2990,3953,4756,5345,5736,5860,5725,5320,4653,3758,2664,1414,70, -1299,-2630,-3856,-4936,-5793,-6399,-6750,-6811,-6597,-6131,-5429,-4551,-3514,-2366,-1150,79,1289,2431,3472,4355, 5065,5579,5855,5865,5615,5097,4333,3332,2175,855,-487,-1863,-3149,-4310,-5285,-6043,-6537,-6749,-6684,-6358, -5777,-4995,-4033,-2942,-1766,-546,687,1867,2976,3954,4776,5406,5801,5967,5868,5495,4860,3999,2921,1693, 353,-1007,-2343,-3579,-4670,-5545,-6187,-6546,-6649,-6467,-6023,-5345,-4486,-3457,-2316,-1104,122,1343,2482,3536, 4442,5194,5727,6028,6065,5842,5357,4628,3660,2510,1240,-118,-1476,-2784,-3956,-4951,-5734,-6255,-6494,-6466, -6164,-5615,-4853,-3902,-2822,-1655,-426,802,1995,3098,4099,4937,5596,6019,6210,6134,5798,5196,4354,3313, 2100,776,-581,-1916,-3159,-4269,-5176,-5833,-6227,-6351,-6197,-5784,-5130,-4275,-3282,-2146,-948,278,1493,2663, 3729,4656,5412,5969,6299,6377,6179,5729,5020,4087,2960,1694,350,-1000,-2319,-3503,-4528,-5325,-5883,-6159, -6157,-5878,-5365,-4626,-3701,-2639,-1478,-262,965,2166,3281,4282,5147,5817,6278,6487,6435,6131,5550,4740, 3723,2531,1215,-147,-1486,-2751,-3874,-4806,-5498,-5938,-6086,-5966,-5589,-4970,-4146,-3165,-2045,-861,366,1575, 2733,3802,4749,5519,6098,6444,6541,6370,5940,5251,4343,3228,1968,631,-730,-2047,-3263,-4310,-5134,-5724, -6039,-6078,-5843,-5353,-4652,-3754,-2708,-1571,-371,860,2044,3174,4185,5056,5745,6211,6452,6432,6144,5604, 4802,3799,2617,1321,-50,-1398,-2674,-3815,-4777,-5503,-5967,-6162,-6091,-5729,-5141,-4348,-3377,-2291,-1112,109, 1315,2478,3567,4514,5313,5892,6270,6397,6257,5847,5199,4302,3221,1966,633,-731,-2048,-3284,-4341,-5200, -5814,-6162,-6239,-6026,-5568,-4891,-4000,-2980,-1841,-653,570,1768,2906,3919,4808,5521,6025,6288,6295,6044, 5530,4758,3779,2620,1321,-29,-1387,-2683,-3834,-4817,-5567,-6059,-6280,-6225,-5915,-5350,-4572,-3614,-2541,-1364, -154,1061,2238,3325,4292,5113,5721,6133,6285,6179,5806,5168,4309,3247,2006,693,-666,-1997,-3236,-4325, -5205,-5841,-6227,-6327,-6143,-5708,-5051,-4198,-3167,-2047,-854,365,1578,2714,3752,4650,5382,5908,6209,6241, 6032,5529,4801,3835,2689,1418,73,-1291,-2578,-3763,-4755,-5549,-6070,-6322,-6295,-6012,-5462,-4720,-3782,-2719, -1563,-354,871,2050,3158,4144,4975,5617,6043,6217,6149,5793,5197,4361,3314,2111,787,-576,-1907,-3164, -4271,-5167,-5834,-6241,-6379,-6227,-5827,-5187,-4364,-3358,-2251,-1062,154,1358,2507,3568,4480,5234,5789,6114, 6176,5971,5517,4811,3868,2750,1490,153,-1209,-2520,-3707,-4724,-5539,-6096,-6370,-6380,-6120,-5614,-4889,-3975, -2917,-1766,-550,658,1841,2943,3944,4806,5470,5918,6132,6077,5773,5205,4387,3361,2173,863,-481,-1826, -3079,-4211,-5144,-5842,-6274,-6450,-6324,-5951,-5337,-4527,-3555,-2445,-1255,-50,1160,2319,3391,4336,5094,5666, 6013,6118,5941,5524,4844,3932,2820,1561,232,-1127,-2447,-3641,-4683,-5509,-6104,-6421,-6456,-6220,-5750,-5033, -4146,-3100,-1968,-766,459,1650,2761,3781,4659,5341,5817,6052,6032,5757,5215,4432,3431,2258,962,-395, -1739,-3014,-4150,-5103,-5823,-6297,-6485,-6405,-6051,-5463,-4671,-3717,-2609,-1437,-224,984,2144,3230,4185,4980, 5576,5959,6091,5950,5546,4900,4026,2926,1703,369,-983,-2311,-3527,-4595,-5441,-6059,-6395,-6470,-6262,-5804, -5123,-4249,-3211,-2085,-883,344,1542,2675,3697,4583,5306,5806,6074,6084,5835,5328,4567,3588,2432,1152, -203,-1530,-2814,-3975,-4953,-5701,-6197,-6416,-6360,-6032,-5473,-4694,-3744,-2675,-1500,-275,931,2113,3215,4186, 4997,5616,6017,6183,6082,5713,5087,4234,3172,1951,635,-712,-2042,-3285,-4355,-5237,-5872,-6243,-6341,-6167, -5731,-5072,-4211,-3191,-2064,-871,339,1543,2696,3734,4653,5380,5917,6213,6256,6034,5553,4825,3874,2735, 1469,122,-1226,-2519,-3684,-4696,-5462,-5983,-6230,-6207,-5924,-5382,-4629,-3694,-2629,-1461,-248,966,2147,3258, 4238,5081,5719,6162,6343,6283,5935,5329,4510,3467,2237,948,-409,-1737,-2985,-4086,-4994,-5655,-6065,-6192, -6040,-5636,-4997,-4164,-3167,-2040,-859,362,1570,2722,3774,4704,5460,6007,6336,6411,6221,5764,5059,4130, 3007,1755,415,-938,-2228,-3416,-4437,-5248,-5795,-6068,-6082,-5816,-5305,-4572,-3649,-2601,-1454,-242,977,2162, 3282,4286,5136,5810,6257,6469,6433,6129,5567,4757,3739,2554,1240,-110,-1442,-2709,-3826,-4746,-5451,-5880, -6044,-5925,-5546,-4936,-4132,-3147,-2040,-856,348,1557,2720,3794,4721,5512,6087,6436,6532,6370,5945,5271, 4358,3263,2014,687,-662,-1977,-3185,-4224,-5070,-5644,-5960,-5999,-5768,-5296,-4586,-3692,-2653,-1517,-315,897, 2093,3212,4214,5086,5786,6253,6502,6483,6209,5663,4883,3881,2701,1410,65,-1292,-2562,-3710,-4666,-5392, -5857,-6061,-5969,-5631,-5051,-4258,-3308,-2220,-1035,166,1377,2536,3611,4566,5349,5951,6324,6444,6315,5924, 5259,4386,3289,2052,722,-640,-1957,-3179,-4255,-5113,-5744,-6095,-6154,-5967,-5521,-4839,-3968,-2941,-1826,-632, 579,1771,2896,3928,4808,5517,6015,6275,6278,6033,5510,4752,3780,2612,1327,-29,-1380,-2670,-3830,-4816, -5565,-6067,-6305,-6258,-5951,-5391,-4631,-3680,-2612,-1447,-245,962,2126,3211,4178,4986,5611,6015,6172,6062, 5684,5065,4208,3130,1912,589,-775,-2115,-3353,-4438,-5325,-5980,-6353,-6455,-6287,-5873,-5218,-4367,-3348,-2242, -1040,166,1368,2504,3542,4445,5180,5698,5999,6044,5820,5338,4597,3643,2501,1227,-125,-1477,-2773,-3948, -4967,-5745,-6274,-6532,-6516,-6225,-5696,-4943,-4026,-2961,-1801,-590,614,1798,2902,3890,4720,5359,5789,5974, 5901,5568,4967,4133,3093,1880,565,-784,-2128,-3383,-4481,-5389,-6066,-6478,-6617,-6470,-6071,-5442,-4601,-3613, -2496,-1318,-93,1110,2265,3322,4250,5005,5555,5878,5958,5763,5313,4595,3674,2544,1292,-52,-1409,-2716, -3900,-4934,-5740,-6299,-6578,-6591,-6329,-5822,-5083,-4164,-3114,-1948,-744,482,1658,2781,3785,4639,5308,5773, 5992,5952,5645,5081,4271,3251,2067,773,-588,-1925,-3192,-4315,-5242,-5938,-6385,-6540,-6416,-6041,-5425,-4614, -3630,-2511,-1332,-101,1114,2276,3352,4294,5082,5670,6021,6122,5972,5555,4881,3967,2873,1631,299,-1062, -2368,-3580,-4615,-5456,-6034,-6345,-6383,-6146,-5657,-4945,-4046,-3005,-1853,-638,588,1775,2918,3937,4813,5510, 5991,6239,6233,5959,5428,4643,3644,2469,1179,-171,-1513,-2785,-3926,-4874,-5603,-6070,-6261,-6178,-5814,-5230, -4432,-3457,-2359,-1176,35,1254,2429,3518,4478,5286,5890,6276,6401,6279,5885,5233,4348,3273,2030,709, -662,-1982,-3206,-4269,-5133,-5747,-6092,-6152,-5961,-5503,-4814,-3927,-2913,-1771,-566,661,1859,3000,4038,4929, 5636,6145,6427,6441,6198,5675,4916,3944,2786,1493,146,-1214,-2493,-3669,-4642,-5402,-5906,-6126,-6072,-5753, -5184,-4424,-3473,-2382,-1221,-16,1215,2389,3482,4455,5272,5893,6309,6459,6366,5993,5371,4507,3435,2215, 894,-472,-1807,-3044,-4141,-5027,-5682,-6055,-6161,-5988,-5565,-4899,-4046,-3034,-1917,-715,505,1707,2849,3897, 4803,5542,6068,6364,6407,6185,5703,4976,4014,2871,1596,234,-1120,-2424,-3615,-4614,-5397,-5929,-6186,-6173, -5883,-5348,-4614,-3671,-2606,-1446,-241,975,2155,3258,4240,5077,5723,6151,6341,6259,5920,5325,4484,3424, 2219,906,-457,-1805,-3064,-4179,-5089,-5769,-6175,-6314,-6166,-5775,-5146,-4311,-3308,-2209,-1018,196,1400,2552, 3605,4537,5288,5835,6163,6238,6040,5585,4869,3938,2814,1539,194,-1168,-2477,-3678,-4714,-5525,-6080,-6367, -6392,-6120,-5622,-4883,-3980,-2931,-1775,-568,649,1844,2955,3959,4805,5479,5937,6157,6116,5806,5232,4421, 3398,2194,888,-466,-1817,-3084,-4203,-5144,-5850,-6291,-6455,-6337,-5974,-5356,-4531,-3555,-2448,-1266,-51,1167, 2327,3400,4353,5132,5709,6056,6163,6010,5577,4906,3988,2893,1636,293,-1071,-2383,-3594,-4652,-5482,-6066, -6383,-6427,-6194,-5707,-5004,-4101,-3059,-1908,-701,517,1713,2842,3868,4740,5434,5932,6170,6159,5872,5333, 4554,3551,2379,1087,-274,-1619,-2909,-4053,-5009,-5734,-6206,-6394,-6312,-5966,-5381,-4579,-3620,-2517,-1344,-118, 1095,2272,3355,4314,5113,5723,6102,6240,6111,5719,5063,4173,3098,1860,520,-842,-2162,-3390,-4465,-5328, -5948,-6286,-6361,-6168,-5704,-5018,-4142,-3114,-1985,-778,442,1642,2778,3810,4707,5418,5922,6205,6216,5970, 5464,4701,3727,2558,1270,-83,-1434,-2737,-3901,-4879,-5640,-6147,-6378,-6325,-6003,-5442,-4671,-3716,-2631,-1458, -252,967,2142,3232,4205,5032,5653,6065,6217,6117,5752,5125,4261,3202,1973,649,-721,-2061,-3299,-4387, -5281,-5921,-6305,-6402,-6238,-5805,-5143,-4291,-3281,-2148,-954,270,1472,2618,3665,4579,5308,5848,6145,6195, 5974,5489,4755,3804,2657,1379,35,-1325,-2623,-3805,-4812,-5600,-6132,-6388,-6356,-6066,-5530,-4781,-3846,-2768, -1603,-394,832,2018,3127,4117,4953,5606,6046,6227,6165,5830,5237,4400,3344,2137,827,-537,-1880,-3139, -4242,-5156,-5836,-6235,-6373,-6228,-5827,-5185,-4344,-3342,-2227,-1037,189,1391,2554,3625,4546,5312,5865,6197, 6275,6083,5643,4934,3997,2875,1604,262,-1097,-2411,-3610,-4636,-5445,-6002,-6295,-6307,-6050,-5533,-4803,-3878, -2817,-1663,-453,766,1960,3080,4090,4946,5619,6078,6298,6255,5945,5381,4566,3545,2354,1040,-320,-1676, -2946,-4076,-5014,-5719,-6158,-6316,-6204,-5834,-5224,-4411,-3421,-2320,-1131,95,1317,2470,3542,4490,5272,5849, 6206,6314,6151,5724,5044,4129,3025,1771,428,-933,-2261,-3482,-4540,-5370,-5963,-6281,-6328,-6085,-5610,-4899, -4008,-2962,-1810,-601,619,1819,2949,3978,4839,5540,6027,6270,6250,5982,5445,4655,3642,2458,1163,-194, -1552,-2836,-3983,-4952,-5677,-6150,-6345,-6251,-5919,-5308,-4515,-3542,-2451,-1273,-52,1169,2337,3429,4392,5193, 5805,6180,6314,6195,5797,5146,4263,3176,1934,598,-769,-2094,-3323,-4400,-5258,-5878,-6221,-6300,-6094,-5634, -4945,-4068,-3033,-1891,-687,534,1738,2880,3922,4813,5536,6051,6320,6340,6093,5583,4829,3848,2682,1390, 35,-1320,-2621,-3785,-4766,-5524,-6029,-6248,-6197,-5878,-5320,-4541,-3586,-2497,-1327,-104,1116,2296,3385,4363, 5189,5819,6225,6392,6292,5926,5300,4436,3370,2143,813,-553,-1888,-3129,-4227,-5112,-5762,-6139,-6243,-6075, -5638,-4978,-4124,-3107,-1976,-775,443,1649,2798,3848,4763,5497,6033,6332,6382,6156,5684,4945,3987,2838, 1559,210,-1149,-2462,-3642,-4654,-5431,-5965,-6227,-6207,-5910,-5377,-4623,-3680,-2615,-1454,-238,984,2177,3275, 4277,5114,5772,6201,6391,6314,5984,5386,4545,3498,2292,965,-401,-1746,-2999,-4111,-5029,-5695,-6113,-6246, -6109,-5708,-5071,-4224,-3241,-2110,-921,305,1514,2666,3731,4659,5417,5979,6303,6382,6196,5740,5030,4097, 2969,1708,361,-1002,-2322,-3526,-4559,-5371,-5934,-6222,-6233,-5970,-5459,-4732,-3820,-2758,-1605,-394,828,2020, 3143,4138,4998,5676,6133,6349,6307,5993,5428,4613,3579,2388,1079,-294,-1645,-2916,-4046,-4989,-5703,-6142, -6308,-6202,-5825,-5212,-4399,-3423,-2327,-1137,86,1292,2456,3530,4470,5247,5826,6174,6282,6122,5688,5012, 4099,2988,1723,381,-980,-2306,-3525,-4578,-5419,-6011,-6340,-6382,-6151,-5674,-4962,-4072,-3038,-1889,-683,534, 1728,2859,3871,4750,5447,5932,6170,6152,5877,5337,4545,3537,2364,1062,-303,-1666,-2949,-4101,-5070,-5807, -6277,-6474,-6387,-6054,-5467,-4672,-3715,-2615,-1430,-212,1006,2163,3252,4215,5016,5610,6003,6133,6003,5614, 4955,4068,2980,1738,404,-954,-2288,-3515,-4593,-5462,-6077,-6426,-6502,-6298,-5841,-5158,-4284,-3261,-2111,-911, 310,1520,2655,3696,4585,5296,5812,6093,6103,5870,5351,4583,3610,2432,1162,-202,-1564,-2851,-4016,-5003, -5761,-6270,-6494,-6435,-6124,-5565,-4781,-3830,-2750,-1577,-354,865,2044,3141,4128,4947,5573,5977,6148,6047, 5683,5057,4201,3132,1910,579,-786,-2124,-3365,-4458,-5334,-5988,-6367,-6477,-6297,-5870,-5204,-4343,-3325,-2196, -995,228,1433,2580,3638,4545,5293,5830,6140,6179,5967,5490,4758,3802,2662,1386,32,-1321,-2638,-3813, -4816,-5609,-6138,-6383,-6366,-6073,-5542,-4788,-3842,-2776,-1609,-385,836,2025,3129,4129,4971,5630,6065,6266, 6196,5864,5270,4429,3392,2189,865,-491,-1833,-3091,-4205,-5126,-5797,-6200,-6341,-6191,-5791,-5145,-4307,-3306, -2186,-988,234,1448,2611,3679,4610,5370,5932,6261,6343,6156,5711,5010,4071,2946,1669,326,-1034,-2347, -3544,-4571,-5384,-5953,-6231,-6242,-5983,-5479,-4745,-3823,-2772,-1607,-407,822,2018,3133,4141,5006,5682,6139, 6352,6312,6007,5437,4632,3608,2408,1101,-266,-1622,-2896,-4027,-4969,-5669,-6117,-6285,-6175,-5805,-5181,-4375, -3396,-2284,-1098,122,1333,2488,3565,4508,5288,5875,6224,6330,6168,5741,5061,4142,3035,1778,438,-938, -2265,-3490,-4540,-5384,-5984,-6304,-6343,-6116,-5639,-4933,-4040,-2993,-1850,-654,572,1768,2894,3908,4784,5479, 5962,6201,6195,5921,5375,4584,3575,2393,1090,-277,-1635,-2920,-4079,-5046,-5787,-6262,-6457,-6381,-6041,-5446, -4657,-3694,-2598,-1426,-205,1011,2182,3272,4229,5030,5631,6019,6151,6018,5622,4971,4087,2993,1756,411, -956,-2287,-3522,-4592,-5456,-6074,-6438,-6499,-6299,-5848,-5162,-4280,-3249,-2112,-907,315,1518,2658,3693,4601, 5320,5832,6098,6119,5882,5369,4608,3630,2470,1175,-179,-1546,-2839,-4007,-4990,-5750,-6245,-6473,-6419,-6102, -5542,-4760,-3816,-2720,-1547,-319,901,2074,3180,4165,4990,5618,6038,6196,6100,5739,5113,4256,3188,1961, 633,-722,-2059,-3311,-4406,-5290,-5938,-6313,-6417,-6233,-5794,-5136,-4275,-3257,-2120,-916,309,1512,2673,3726, 4640,5387,5924,6223,6286,6070,5591,4852,3895,2754,1479,124,-1234,-2536,-3715,-4727,-5511,-6046,-6295,-6270, -5980,-5442,-4680,-3744,-2673,-1507,-290,943,2133,3244,4249,5087,5748,6175,6371,6316,5973,5382,4550,3496, 2289,968,-393,-1737,-3002,-4112,-5024,-5696,-6105,-6244,-6103,-5701,-5057,-4223,-3211,-2092,-896,327,1540,2701, 3771,4694,5467,6021,6357,6436,6239,5791,5084,4151,3026,1756,409,-954,-2275,-3470,-4500,-5323,-5876,-6165, -6172,-5917,-5408,-4673,-3754,-2700,-1538,-328,897,2089,3210,4222,5077,5752,6217,6438,6396,6085,5516,4704, 3686,2481,1163,-198,-1552,-2825,-3962,-4907,-5607,-6055,-6222,-6106,-5738,-5124,-4301,-3331,-2212,-1031,192,1408, 2576,3645,4591,5371,5950,6312,6414,6255,5829,5149,4233,3115,1859,521,-851,-2175,-3399,-4448,-5286,-5887, -6206,-6247,-6021,-5534,-4828,-3935,-2890,-1746,-538,683,1883,3003,4024,4907,5602,6084,6322,6309,6041,5484, 4701,3699,2516,1210,-157,-1513,-2796,-3949,-4907,-5644,-6118,-6309,-6237,-5895,-5310,-4521,-3543,-2449,-1275,-57, 1158,2327,3408,4374,5171,5782,6159,6294,6158,5763,5116,4230,3130,1897,554,-811,-2149,-3389,-4461,-5324, -5947,-6296,-6368,-6168,-5714,-5033,-4152,-3120,-1985,-780,449,1648,2781,3814,4709,5432,5933,6210,6224,5987, 5473,4705,3721,2562,1269,-91,-1450,-2740,-3910,-4905,-5671,-6172,-6397,-6346,-6025,-5466,-4688,-3745,-2658,-1481, -264,952,2143,3239,4220,5035,5659,6071,6234,6132,5768,5147,4277,3205,1969,642,-718,-2069,-3313,-4407, -5295,-5948,-6335,-6439,-6264,-5841,-5168,-4315,-3291,-2171,-974,250,1465,2612,3663,4580,5320,5860,6150,6200, 5988,5498,4760,3806,2658,1373,16,-1353,-2657,-3845,-4861,-5649,-6179,-6441,-6429,-6138,-5597,-4845,-3908,-2838, -1669,-449,773,1955,3071,4071,4904,5563,5999,6196,6123,5773,5179,4338,3294,2073,758,-615,-1958,-3226, -4343,-5260,-5936,-6351,-6482,-6336,-5938,-5297,-4464,-3452,-2333,-1138,90,1306,2466,3535,4462,5224,5788,6114, 6196,6010,5554,4850,3909,2783,1512,159,-1213,-2523,-3719,-4757,-5576,-6131,-6420,-6426,-6163,-5647,-4915,-3995, -2935,-1765,-544,679,1879,3013,4022,4888,5563,6025,6248,6213,5907,5337,4522,3502,2302,985,-374,-1725, -3006,-4133,-5071,-5774,-6218,-6387,-6267,-5888,-5269,-4448,-3456,-2343,-1146,72,1297,2475,3556,4503,5290,5882, 6240,6339,6180,5763,5081,4164,3062,1805,460,-913,-2243,-3458,-4514,-5358,-5946,-6261,-6305,-6065,-5582,-4860, -3962,-2917,-1762,-545,678,1887,3022,4047,4924,5624,6115,6364,6350,6070,5529,4746,3734,2546,1242,-123, -1480,-2768,-3925,-4892,-5623,-6099,-6291,-6205,-5852,-5267,-4475,-3502,-2403,-1220,5,1224,2406,3495,4449,5251, 5862,6240,6372,6242,5847,5192,4299,3209,1963,626,-757,-2084,-3319,-4397,-5268,-5895,-6242,-6319,-6115,-5652, -4972,-4090,-3058,-1916,-713,517,1721,2859,3906,4799,5513,6023,6294,6316,6066,5556,4795,3807,2644,1346, -14,-1382,-2669,-3847,-4830,-5596,-6088,-6324,-6277,-5957,-5390,-4610,-3658,-2565,-1394,-174,1041,2225,3325,4307, 5127,5760,6175,6333,6229,5866,5237,4384,3308,2086,753,-619,-1962,-3209,-4300,-5187,-5842,-6219,-6318,-6137, -5714,-5056,-4191,-3173,-2043,-836,389,1596,2744,3793,4709,5450,5984,6290,6341,6126,5641,4901,3936,2790, 1513,157,-1202,-2508,-3695,-4710,-5490,-6017,-6273,-6253,-5960,-5425,-4664,-3740,-2671,-1500,-286,941,2129,3239, 4231,5066,5714,6153,6346,6268,5937,5338,4498,3448,2227,910,-459,-1803,-3066,-4179,-5099,-5772,-6191,-6320, -6181,-5784,-5141,-4301,-3309,-2188,-1002,226,1434,2587,3648,4583,5340,5895,6213,6288,6097,5642,4931,3990, 2862,1590,235,-1135,-2447,-3662,-4685,-5502,-6066,-6350,-6357,-6108,-5591,-4864,-3948,-2891,-1737,-521,696,1881, 3001,4011,4864,5538,5996,6219,6171,5863,5289,4475,3443,2251,938,-428,-1785,-3063,-4194,-5136,-5837,-6285, -6447,-6326,-5963,-5353,-4529,-3545,-2441,-1256,-36,1182,2344,3418,4366,5145,5728,6083,6197,6032,5608,4929, 4012,2897,1649,300,-1062,-2382,-3599,-4646,-5494,-6091,-6398,-6440,-6212,-5720,-5010,-4111,-3075,-1920,-702,517, 1713,2850,3874,4753,5451,5937,6186,6178,5906,5374,4582,3576,2395,1088,-263,-1613,-2904,-4049,-5009,-5738, -6217,-6406,-6315,-5966,-5376,-4580,-3607,-2509,-1326,-109,1114,2298,3379,4349,5152,5758,6139,6277,6150,5761, 5104,4217,3130,1894,561,-811,-2144,-3373,-4445,-5307,-5923,-6268,-6343,-6138,-5677,-4991,-4112,-3081,-1938,-727, 500,1698,2837,3879,4777,5491,6003,6279,6305,6057,5540,4785,3802,2633,1355,-9,-1362,-2663,-3835,-4813, -5570,-6073,-6302,-6238,-5919,-5359,-4587,-3638,-2549,-1375,-153,1072,2248,3346,4320,5143,5776,6181,6341,6246, 5885,5255,4390,3317,2096,769,-601,-1936,-3187,-4277,-5171,-5822,-6194,-6299,-6132,-5696,-5036,-4173,-3162,-2033, -832,393,1599,2750,3800,4713,5452,5977,6284,6333,6108,5619,4891,3929,2785,1500,143,-1211,-2531,-3715, -4722,-5511,-6043,-6301,-6286,-5993,-5460,-4708,-3774,-2698,-1536,-320,896,2086,3191,4182,5020,5671,6110,6293, 6220,5883,5288,4443,3393,2182,862,-513,-1863,-3132,-4236,-5157,-5834,-6246,-6383,-6244,-5843,-5206,-4368,-3371, -2250,-1055,172,1380,2537,3598,4525,5282,5844,6169,6249,6056,5596,4888,3944,2818,1544,192,-1177,-2493, -3700,-4738,-5552,-6111,-6413,-6421,-6157,-5649,-4924,-4012,-2956,-1787,-578,641,1837,2955,3963,4820,5500,5957, 6175,6130,5829,5262,4439,3406,2206,894,-473,-1828,-3096,-4231,-5175,-5881,-6321,-6488,-6377,-6000,-5387,-4569, -3584,-2476,-1290,-64,1153,2317,3398,4342,5131,5701,6064,6163,6004,5578,4895,3984,2873,1617,267,-1101, -2427,-3646,-4702,-5541,-6133,-6450,-6499,-6261,-5777,-5066,-4168,-3116,-1962,-752,476,1673,2805,3832,4708,5412, 5896,6143,6121,5848,5310,4522,3507,2332,1029,-331,-1686,-2973,-4126,-5083,-5822,-6295,-6486,-6402,-6055,-5467, -4664,-3690,-2590,-1408,-178,1044,2215,3301,4268,5075,5682,6067,6209,6082,5680,5029,4145,3046,1806,464, -892,-2222,-3457,-4530,-5401,-6013,-6361,-6438,-6226,-5761,-5077,-4196,-3164,-2019,-808,422,1626,2773,3813,4713, 5428,5944,6222,6237,5993,5493,4734,3753,2581,1290,-70,-1421,-2723,-3898,-4871,-5635,-6134,-6357,-6297,-5971, -5408,-4626,-3663,-2575,-1401,-180,1050,2231,3330,4311,5140,5775,6181,6346,6249,5887,5262,4397,3328,2101, 775,-597,-1934,-3170,-4267,-5153,-5795,-6173,-6269,-6094,-5662,-4996,-4131,-3113,-1972,-773,452,1660,2808,3868, 4786,5522,6063,6359,6415,6199,5709,4970,4015,2867,1590,242,-1126,-2438,-3625,-4625,-5414,-5945,-6196,-6172, -5876,-5342,-4584,-3644,-2569,-1402,-183,1039,2227,3336,4328,5161,5818,6253,6441,6369,6032,5436,4591,3536, 2325,1006,-369,-1714,-2966,-4083,-4998,-5674,-6090,-6217,-6079,-5674,-5034,-4198,-3197,-2083,-893,333,1540,2696, 3763,4687,5448,5998,6324,6403,6211,5751,5047,4106,2970,1697,346,-1020,-2341,-3547,-4580,-5390,-5962,-6257, -6268,-6007,-5501,-4773,-3853,-2798,-1648,-443,779,1973,3086,4088,4945,5619,6076,6284,6241,5931,5359,4541, 3515,2317,995,-373,-1732,-3011,-4140,-5089,-5789,-6229,-6403,-6292,-5922,-5310,-4491,-3510,-2401,-1221,-3,1207, 2366,3436,4381,5157,5740,6099,6196,6029,5601,4914,4002,2889,1629,291,-1078,-2400,-3629,-4687,-5522,-6115, -6438,-6474,-6246,-5767,-5053,-4169,-3122,-1975,-771,454,1649,2784,3803,4671,5373,5858,6098,6085,5812,5265, 4479,3464,2288,987,-375,-1736,-3018,-4163,-5129,-5864,-6328,-6520,-6440,-6091,-5499,-4698,-3730,-2636,-1457,-233, 987,2160,3248,4217,5020,5625,6002,6137,6005,5615,4959,4070,2985,1744,403,-965,-2293,-3528,-4600,-5452, -6074,-6421,-6493,-6283,-5824,-5140,-4259,-3228,-2087,-876,348,1550,2691,3733,4631,5351,5860,6135,6153,5905, 5399,4633,3644,2489,1194,-162,-1522,-2816,-3986,-4963,-5731,-6227,-6451,-6395,-6081,-5520,-4741,-3777,-2692,-1516, -295,928,2113,3206,4189,5021,5644,6049,6212,6119,5750,5120,4249,3188,1961,633,-737,-2071,-3319,-4416, -5306,-5945,-6330,-6427,-6252,-5824,-5162,-4297,-3280,-2148,-947,285,1496,2649,3702,4612,5352,5887,6188,6230, 6021,5542,4810,3837,2698,1418,62,-1303,-2606,-3785,-4786,-5572,-6108,-6361,-6333,-6048,-5510,-4748,-3814,-2740, -1566,-347,882,2064,3177,4172,5026,5674,6105,6298,6234,5899,5297,4464,3419,2207,883,-483,-1815,-3074, -4187,-5097,-5770,-6174,-6310,-6166,-5755,-5112,-4273,-3268,-2150,-951,272,1479,2643,3714,4638,5404,5966,6300, 6372,6182,5726,5028,4093,2967,1701,356,-1004,-2326,-3526,-4551,-5360,-5918,-6201,-6207,-5946,-5434,-4706,-3783, -2722,-1571,-354,868,2066,3182,4185,5042,5723,6173,6392,6353,6046,5480,4658,3629,2437,1124,-237,-1590, -2863,-3997,-4941,-5645,-6089,-6249,-6138,-5763,-5152,-4332,-3352,-2251,-1062,159,1369,2540,3607,4547,5325,5900, 6256,6357,6189,5764,5078,4166,3042,1786,441,-925,-2254,-3466,-4523,-5361,-5957,-6282,-6325,-6093,-5616,-4905, -4009,-2971,-1818,-618,601,1798,2916,3936,4816,5503,5991,6223,6206,5928,5379,4589,3582,2404,1091,-271, -1637,-2923,-4070,-5040,-5767,-6244,-6435,-6359,-6022,-5431,-4625,-3670,-2565,-1386,-168,1040,2208,3288,4256,5051, 5657,6042,6171,6039,5633,4983,4098,3001,1761,430,-938,-2266,-3504,-4576,-5435,-6056,-6409,-6471,-6274,-5813, -5131,-4249,-3218,-2082,-875,348,1557,2695,3726,4619,5340,5851,6111,6135,5888,5381,4619,3635,2474,1190, -173,-1524,-2819,-3980,-4960,-5721,-6220,-6442,-6385,-6065,-5500,-4718,-3763,-2680,-1507,-288,935,2121,3220,4201, 5023,5649,6054,6228,6131,5755,5142,4283,3212,1983,662,-703,-2033,-3284,-4368,-5244,-5890,-6272,-6367,-6191, -5757,-5091,-4223,-3209,-2071,-868,354,1564,2717,3765,4683,5427,5965,6267,6313,6098,5620,4886,3930,2791, 1513,174,-1189,-2496,-3670,-4673,-5463,-5981,-6229,-6201,-5915,-5373,-4611,-3679,-2603,-1434,-208,1014,2202,3310, 4308,5151,5803,6242,6432,6370,6029,5430,4598,3555,2341,1023,-330,-1688,-2931,-4049,-4955,-5631,-6032,-6164, -6013,-5602,-4967,-4122,-3124,-1999,-801,418,1637,2797,3861,4786,5543,6107,6439,6508,6321,5874,5162,4223, 3098,1837,490,-876,-2185,-3380,-4408,-5221,-5787,-6066,-6071,-5806,-5290,-4561,-3644,-2584,-1436,-218,1005,2195, 3310,4319,5179,5853,6304,6517,6477,6164,5592,4788,3753,2560,1245,-119,-1472,-2739,-3872,-4812,-5507,-5950, -6119,-6008,-5634,-5021,-4202,-3216,-2110,-924,291,1510,2667,3740,4682,5463,6043,6394,6486,6328,5897,5214, 4298,3192,1934,593,-775,-2098,-3318,-4360,-5206,-5793,-6110,-6154,-5923,-5449,-4736,-3841,-2798,-1654,-445,773, 1969,3088,4106,4980,5676,6149,6396,6383,6108,5557,4767,3759,2577,1268,-85,-1440,-2735,-3879,-4855,-5589, -6055,-6254,-6175,-5826,-5241,-4456,-3487,-2398,-1219,-2,1207,2378,3467,4417,5208,5812,6190,6320,6180,5787, 5127,4236,3136,1892,555,-808,-2150,-3380,-4449,-5315,-5939,-6297,-6368,-6166,-5719,-5031,-4152,-3129,-1998,-804, 415,1617,2751,3785,4675,5391,5893,6156,6171,5925,5398,4636,3653,2486,1193,-178,-1541,-2833,-4005,-4999, -5754,-6251,-6481,-6437,-6125,-5561,-4784,-3844,-2758,-1588,-371,835,2011,3111,4086,4897,5525,5927,6084,5981, 5607,4971,4107,3036,1810,474,-895,-2231,-3487,-4580,-5467,-6111,-6493,-6595,-6421,-5991,-5338,-4483,-3462,-2338, -1137,90,1290,2438,3484,4393,5128,5660,5951,5997,5776,5292,4551,3586,2442,1165,-189,-1560,-2859,-4037, -5053,-5836,-6364,-6620,-6601,-6312,-5766,-5017,-4079,-3015,-1844,-628,593,1776,2888,3881,4717,5366,5797,5989, 5913,5578,4983,4146,3099,1881,559,-801,-2144,-3401,-4510,-5426,-6093,-6507,-6635,-6490,-6085,-5455,-4604,-3596, -2478,-1282,-59,1151,2315,3376,4309,5075,5631,5955,6034,5835,5395,4681,3747,2626,1355,15,-1350,-2661, -3850,-4875,-5689,-6239,-6516,-6520,-6259,-5752,-5013,-4089,-3030,-1863,-637,583,1774,2893,3910,4767,5439,5908, 6121,6084,5782,5207,4398,3377,2179,870,-480,-1829,-3093,-4220,-5154,-5847,-6288,-6443,-6324,-5944,-5326,-4502, -3515,-2393,-1210,18,1236,2410,3482,4421,5207,5801,6152,6260,6102,5683,5004,4094,2988,1739,402,-964, -2271,-3479,-4529,-5361,-5953,-6263,-6301,-6064,-5568,-4853,-3954,-2909,-1765,-548,682,1877,3004,4029,4905,5608, 6081,6327,6323,6035,5501,4717,3713,2539,1239,-118,-1466,-2745,-3896,-4847,-5581,-6047,-6239,-6157,-5809,-5217, -4419,-3452,-2351,-1166,42,1258,2430,3517,4474,5279,5882,6259,6386,6255,5856,5203,4310,3221,1987,651, -713,-2051,-3275,-4344,-5201,-5822,-6167,-6235,-6039,-5583,-4898,-4024,-2990,-1857,-656,567,1766,2895,3927,4819, 5537,6044,6311,6333,6081,5559,4793,3815,2653,1354,1,-1350,-2641,-3813,-4795,-5559,-6051,-6279,-6229,-5905, -5339,-4569,-3625,-2541,-1364,-150,1063,2239,3337,4310,5118,5743,6156,6308,6208,5837,5212,4351,3278,2049, 725,-635,-1972,-3213,-4307,-5194,-5841,-6223,-6319,-6145,-5714,-5051,-4190,-3178,-2056,-861,365,1569,2707,3764, 4671,5406,5934,6228,6277,6054,5570,4832,3871,2726,1448,94,-1270,-2565,-3746,-4758,-5532,-6059,-6315,-6295, -6005,-5470,-4715,-3788,-2714,-1548,-337,877,2058,3165,4157,4994,5632,6061,6259,6179,5829,5239,4399,3351, 2136,822,-540,-1886,-3149,-4252,-5162,-5839,-6247,-6376,-6235,-5833,-5200,-4362,-3362,-2240,-1054,166,1377,2529, 3582,4510,5268,5818,6145,6222,6026,5569,4860,3913,2792,1523,172,-1186,-2495,-3692,-4724,-5539,-6088,-6372, -6383,-6115,-5607,-4876,-3958,-2907,-1752,-529,680,1871,2997,4001,4849,5521,5977,6202,6149,5844,5276,4462, 3437,2234,929,-427,-1779,-3046,-4171,-5106,-5801,-6244,-6416,-6292,-5922,-5305,-4475,-3496,-2384,-1209,15,1228, 2393,3460,4416,5198,5783,6126,6233,6067,5648,4957,4059,2939,1704,356,-1018,-2327,-3540,-4584,-5422,-5997, -6312,-6350,-6126,-5632,-4924,-4019,-2978,-1818,-615,613,1806,2934,3966,4838,5532,6018,6262,6250,5964,5421, 4639,3633,2453,1161,-196,-1546,-2826,-3978,-4929,-5643,-6122,-6306,-6226,-5867,-5278,-4487,-3514,-2417,-1239,-17, 1202,2372,3461,4414,5215,5820,6199,6333,6198,5800,5148,4264,3168,1931,595,-765,-2093,-3318,-4385,-5251, -5870,-6213,-6276,-6080,-5615,-4928,-4049,-3020,-1883,-678,542,1741,2875,3911,4808,5519,6012,6285,6302,6048, 5531,4764,3789,2621,1328,-25,-1380,-2672,-3831,-4817,-5567,-6067,-6296,-6245,-5929,-5360,-4590,-3639,-2551,-1386, -170,1040,2216,3308,4284,5101,5726,6131,6289,6175,5812,5182,4314,3239,2017,694,-672,-2014,-3264,-4353, -5247,-5888,-6264,-6368,-6200,-5780,-5113,-4256,-3250,-2120,-923,294,1490,2626,3673,4576,5311,5841,6136,6173, 5951,5454,4714,3765,2609,1333,-20,-1379,-2682,-3872,-4878,-5663,-6186,-6445,-6420,-6135,-5604,-4855,-3926,-2860, -1695,-491,728,1901,3008,3996,4821,5463,5894,6079,6003,5663,5061,4214,3166,1955,647,-724,-2065,-3321, -4424,-5337,-6013,-6423,-6551,-6414,-6013,-5374,-4538,-3536,-2432,-1242,-19,1182,2326,3394,4317,5070,5616,5945, 6012,5826,5365,4664,3723,2605,1331,-13,-1366,-2670,-3870,-4888,-5691,-6251,-6536,-6548,-6288,-5764,-5031,-4123, -3063,-1909,-689,525,1718,2843,3844,4689,5368,5821,6037,6002,5691,5121,4310,3288,2102,794,-557,-1906, -3166,-4285,-5217,-5910,-6344,-6499,-6378,-6002,-5389,-4566,-3578,-2476,-1283,-66,1151,2319,3383,4335,5113,5688, 6052,6157,6001,5578,4901,3989,2896,1644,318,-1034,-2344,-3558,-4597,-5423,-5999,-6307,-6347,-6103,-5614,-4900, -4000,-2962,-1805,-591,634,1832,2959,3987,4866,5557,6044,6295,6284,6012,5477,4700,3705,2522,1233,-113, -1462,-2728,-3864,-4814,-5530,-5998,-6189,-6100,-5742,-5147,-4344,-3383,-2274,-1091,126,1352,2520,3609,4578,5374, 5981,6358,6488,6365,5967,5319,4447,3361,2126,807,-554,-1867,-3083,-4153,-5001,-5612,-5953,-6020,-5817,-5352, -4662,-3783,-2750,-1603,-405,831,2020,3157,4199,5090,5809,6317,6591,6604,6350,5847,5087,4110,2947,1680, 324,-1018,-2315,-3468,-4447,-5194,-5692,-5904,-5856,-5532,-4965,-4186,-3232,-2148,-987,238,1456,2637,3721,4690, 5509,6139,6539,6704,6600,6234,5602,4742,3674,2461,1139,-220,-1549,-2782,-3870,-4756,-5392,-5769,-5866,-5690, -5264,-4600,-3738,-2729,-1607,-405,812,2012,3160,4197,5109,5839,6360,6658,6706,6474,6000,5264,4303,3156, 1879,525,-832,-2132,-3309,-4312,-5095,-5624,-5877,-5864,-5571,-5038,-4289,-3353,-2293,-1133,75,1283,2468,3564, 4544,5390,6025,6441,6625,6550,6210,5600,4752,3708,2504,1178,-178,-1529,-2780,-3889,-4805,-5480,-5889,-6019, -5884,-5495,-4866,-4032,-3046,-1927,-741,472,1663,2811,3857,4776,5525,6076,6395,6463,6261,5791,5075,4145, 3007,1737,392,-971,-2284,-3486,-4519,-5328,-5891,-6186,-6195,-5945,-5433,-4715,-3816,-2757,-1616,-416,796,1981, 3091,4078,4922,5583,6032,6233,6185,5873,5295,4468,3437,2240,929,-443,-1794,-3060,-4187,-5129,-5835,-6272, -6445,-6343,-5971,-5364,-4559,-3585,-2494,-1306,-94,1102,2256,3324,4259,5029,5587,5933,6024,5856,5415,4741, 3817,2711,1452,108,-1258,-2576,-3792,-4829,-5670,-6254,-6582,-6625,-6398,-5915,-5208,-4320,-3277,-2130,-938,276, 1464,2584,3593,4457,5156,5631,5868,5851,5559,5020,4227,3219,2052,745,-603,-1955,-3246,-4379,-5339,-6068, -6532,-6724,-6641,-6297,-5716,-4921,-3951,-2867,-1681,-463,746,1911,2987,3945,4745,5332,5721,5848,5714,5317, 4659,3772,2690,1451,122,-1234,-2554,-3772,-4844,-5699,-6305,-6655,-6724,-6514,-6058,-5366,-4497,-3470,-2333,-1125, 93,1296,2432,3468,4348,5055,5566,5840,5854,5606,5097,4340,3351,2202,896,-435,-1798,-3076,-4230,-5202, -5956,-6452,-6666,-6608,-6289,-5716,-4943,-3990,-2909,-1739,-529,696,1871,2969,3945,4764,5390,5784,5949,5852, 5483,4856,4001,2936,1718,388,-962,-2289,-3517,-4602,-5475,-6116,-6478,-6584,-6409,-5973,-5303,-4451,-3433,-2302, -1097,121,1336,2468,3517,4421,5168,5698,5998,6038,5820,5338,4615,3657,2514,1254,-94,-1443,-2741,-3908, -4901,-5682,-6201,-6445,-6420,-6125,-5584,-4831,-3888,-2815,-1659,-434,785,1973,3070,4068,4902,5557,5980,6173, 6097,5767,5168,4334,3300,2093,781,-569,-1895,-3134,-4236,-5141,-5799,-6193,-6322,-6173,-5768,-5119,-4271,-3286, -2158,-966,251,1460,2625,3689,4613,5364,5919,6250,6329,6135,5687,4985,4057,2938,1678,344,-998,-2309, -3490,-4510,-5306,-5863,-6142,-6143,-5871,-5362,-4631,-3712,-2655,-1500,-290,930,2124,3236,4232,5096,5766,6225, 6434,6386,6084,5509,4702,3691,2506,1199,-155,-1489,-2748,-3865,-4795,-5487,-5925,-6079,-5960,-5588,-4974,-4155, -3182,-2068,-888,333,1538,2692,3759,4702,5472,6049,6394,6492,6325,5899,5213,4310,3202,1948,620,-737, -2046,-3260,-4303,-5122,-5714,-6030,-6071,-5841,-5354,-4659,-3764,-2723,-1590,-394,832,2012,3139,4146,5016,5703, 6170,6411,6394,6108,5571,4772,3776,2599,1310,-55,-1396,-2669,-3806,-4766,-5489,-5955,-6150,-6082,-5724,-5139, -4352,-3384,-2302,-1127,90,1293,2453,3539,4487,5282,5861,6238,6368,6229,5822,5176,4284,3208,1959,630, -729,-2042,-3273,-4329,-5185,-5799,-6148,-6226,-6015,-5561,-4886,-4001,-2987,-1848,-664,556,1751,2888,3900,4786, 5498,6001,6264,6273,6023,5513,4745,3770,2613,1319,-26,-1379,-2672,-3821,-4801,-5551,-6043,-6265,-6212,-5904, -5342,-4567,-3612,-2543,-1369,-160,1052,2226,3313,4278,5098,5706,6117,6272,6165,5795,5159,4301,3243,2005, 698,-659,-1987,-3223,-4311,-5190,-5827,-6211,-6314,-6133,-5698,-5043,-4192,-3163,-2044,-855,362,1570,2707,3745, 4641,5375,5898,6200,6232,6024,5523,4798,3833,2688,1419,78,-1281,-2568,-3750,-4741,-5536,-6056,-6310,-6284, -6001,-5454,-4711,-3778,-2715,-1560,-354,869,2046,3154,4139,4969,5612,6039,6211,6146,5790,5196,4359,3315, 2114,790,-570,-1900,-3156,-4260,-5159,-5823,-6231,-6368,-6220,-5820,-5182,-4359,-3354,-2248,-1060,154,1358,2505, 3566,4478,5232,5785,6111,6173,5969,5518,4811,3869,2752,1490,155,-1205,-2516,-3702,-4719,-5533,-6091,-6366, -6375,-6117,-5610,-4885,-3972,-2917,-1766,-548,658,1840,2944,3943,4804,5469,5917,6133,6076,5772,5203,4386, 3360,2173,1,6,-74,-183,-431,-529,-405,-237,197,867,1498,2079,2408,2112,1316,85,-1678,-3632, -5383,-6905,-7869,-7950,-7299,-6160,-4543,-2628,-702,1080,2659,3835,4428,4448,3825,2514,696,-1381,-3518,-5502, -7067,-8049,-8443,-8226,-7495,-6462,-5141,-3590,-2032,-379,1382,2905,4151,5211,5536,4851,3631,1838,-691,-3215, -5193,-6841,-7914,-8057,-7517,-6401,-4606,-2496,-418,1688,3633,5291,6676,7421,7180,6288,4937,2984,654,-1550, -3547,-5063,-5743,-5725,-5120,-3895,-2345,-835,738,2473,4150,5566,6752,7556,7658,7131,6101,4487,2428,204, -1926,-3663,-4822,-5489,-5631,-5030,-3744,-2122,-176,2095,4226,5849,6949,7468,7438,6904,6029,4614,3091,1750, 241,-1221,-2345,-3373,-3913,-3679,-2988,-1880,-140,1872,4073,6169,7852,9106,9778,9719,8619,6827,4947,2833, 731,-1093,-2674,-3766,-4256,-3917,-3058,-2106,-836,472,1623,2924,4238,5303,6128,6495,6147,5255,3877,2095, 107,-1795,-3391,-4714,-5595,-5989,-5884,-5028,-3546,-1747,241,2146,3739,5038,5926,6177,5703,4707,3440,1745, -228,-2039,-3861,-5455,-6404,-6798,-6506,-5567,-4228,-2702,-1066,487,1742,2737,3568,4037,4136,3875,3028,1678, 211,-1420,-3030,-4436,-5705,-6655,-7066,-6871,-6089,-4852,-3123,-1014,1059,2998,4549,5264,5186,4506,3200,1543, -207,-2089,-3923,-5357,-6265,-6697,-6639,-5995,-4968,-3538,-1717,122,1820,3382,4654,5531,6050,6115,5454,4186, 2498,422,-1736,-3600,-5178,-6308,-6621,-6238,-5357,-3941,-2190,-360,1496,3260,4639,5481,5850,5659,4888,3752, 2284,492,-1335,-2930,-4263,-5136,-5396,-5221,-4538,-3284,-1667,77,1922,3701,5143,6226,6912,6998,6524,5584, 4228,2465,603,-1190,-2892,-4237,-5054,-5408,-5165,-4264,-2940,-1343,505,2284,3836,5062,5816,6026,5734,5017, 3802,2237,649,-919,-2319,-3325,-3958,-4215,-4017,-3362,-2426,-1201,288,1769,3125,4411,5339,5772,5740,5198, 4131,2750,1155,-529,-2130,-3434,-4380,-4921,-4937,-4478,-3670,-2521,-1108,309,1681,2995,3958,4499,4688,4347, 3500,2296,786,-949,-2660,-4102,-5243,-5943,-6066,-5729,-4972,-3719,-2161,-534,1104,2569,3663,4392,4718,4461, 3672,2545,1093,-582,-2121,-3514,-4694,-5403,-5615,-5417,-4785,-3765,-2529,-1197,252,1622,2748,3609,4129,4086, 3595,2734,1415,-134,-1694,-3229,-4543,-5404,-5856,-5868,-5382,-4464,-3282,-1885,-350,1083,2346,3432,4152,4393, 4243,3671,2621,1345,-44,-1517,-2873,-3886,-4576,-4880,-4649,-4017,-3100,-1848,-410,1007,2356,3549,4357,4763, 4784,4323,3388,2169,721,-876,-2307,-3462,-4343,-4781,-4662,-4155,-3276,-2051,-669,735,2124,3353,4244,4784, 4945,4598,3809,2738,1359,-176,-1604,-2847,-3851,-4429,-4565,-4345,-3738,-2769,-1591,-286,1119,2422,3465,4274, 4702,4608,4101,3235,1969,501,-954,-2362,-3579,-4377,-4765,-4755,-4251,-3312,-2152,-764,769,2201,3473,4524, 5165,5307,5034,4285,3076,1633,81,-1503,-2895,-3902,-4552,-4728,-4359,-3582,-2505,-1114,407,1853,3187,4328, 5044,5349,5248,4654,3597,2282,752,-895,-2391,-3608,-4530,-5004,-4926,-4421,-3504,-2194,-683,863,2408,3745, 4697,5255,5375,4916,4012,2817,1328,-288,-1745,-2996,-3985,-4510,-4570,-4256,-3508,-2382,-1044,415,1954,3338, 4430,5224,5561,5312,4618,3497,1957,233,-1445,-3021,-4298,-5096,-5413,-5260,-4594,-3508,-2189,-651,973,2461, 3722,4705,5202,5163,4672,3693,2284,673,-999,-2627,-3988,-4888,-5372,-5345,-4759,-3744,-2447,-874,795,2353, 3720,4816,5421,5539,5192,4289,2962,1396,-336,-2109,-3623,-4792,-5576,-5821,-5493,-4747,-3606,-2127,-502,1103, 2643,3918,4761,5142,5044,4326,3156,1671,-92,-1905,-3509,-4834,-5765,-6125,-5921,-5254,-4097,-2568,-864,893, 2626,4078,5137,5778,5866,5335,4348,2952,1204,-632,-2335,-3841,-4950,-5510,-5535,-5058,-4036,-2618,-1000,761, 2509,3981,5103,5827,5961,5511,4592,3215,1473,-351,-2115,-3708,-4898,-5551,-5716,-5339,-4394,-3074,-1506,273, 2038,3604,4907,5809,6145,5941,5224,3997,2385,639,-1147,-2826,-4122,-4963,-5368,-5186,-4453,-3337,-1887,-186, 1525,3109,4486,5463,5911,5839,5228,4057,2509,768,-1095,-2848,-4244,-5244,-5761,-5681,-5046,-3997,-2548,-849, 906,2583,4111,5230,5873,6042,5623,4616,3238,1561,-287,-2041,-3517,-4658,-5309,-5374,-4935,-4030,-2697,-1101, 571,2263,3804,4972,5712,6004,5682,4812,3527,1893,26,-1792,-3422,-4760,-5604,-5872,-5637,-4887,-3650,-2143, -497,1236,2826,4090,5015,5467,5332,4688,3594,2071,299,-1465,-3141,-4560,-5481,-5881,-5790,-5128,-3988,-2550, -904,846,2457,3814,4867,5426,5439,4957,3978,2529,839,-931,-2710,-4255,-5355,-6021,-6160,-5712,-4773,-3479, -1876,-149,1510,2984,4187,4898,5098,4819,4007,2705,1149,-582,-2358,-3936,-5155,-5980,-6294,-6032,-5302,-4185, -2690,-1052,567,2099,3385,4224,4624,4552,3907,2790,1373,-296,-2057,-3655,-4988,-5968,-6430,-6348,-5803,-4806, -3411,-1833,-198,1424,2810,3826,4439,4578,4144,3262,2010,446,-1248,-2833,-4248,-5343,-5919,-6011,-5656,-4799, -3558,-2123,-549,1028,2414,3515,4281,4584,4349,3701,2621,1174,-417,-1989,-3482,-4654,-5366,-5639,-5427,-4701, -3586,-2218,-637,981,2465,3739,4718,5218,5236,4824,3929,2631,1160,-397,-1924,-3180,-4045,-4514,-4490,-3958, -3051,-1837,-355,1178,2627,3958,4997,5612,5808,5560,4812,3662,2278,710,-868,-2228,-3290,-3985,-4169,-3854, -3154,-2069,-698,781,2249,3660,4808,5594,6009,5961,5412,4460,3190,1663,74,-1374,-2619,-3512,-3913,-3844, -3371,-2467,-1250,101,1520,2923,4104,5000,5565,5678,5298,4530,3385,1922,382,-1110,-2489,-3535,-4133,-4320, -4054,-3332,-2278,-992,453,1911,3224,4317,5103,5427,5297,4751,3742,2386,883,-683,-2176,-3381,-4202,-4627, -4574,-4037,-3126,-1938,-500,970,2343,3577,4492,4954,4997,4585,3675,2416,946,-660,-2216,-3540,-4550,-5188, -5330,-5003,-4292,-3210,-1834,-372,1099,2490,3595,4318,4632,4447,3730,2640,1243,-371,-1985,-3399,-4574,-5370, -5650,-5476,-4887,-3859,-2546,-1082,454,1936,3164,4073,4580,4574,4043,3106,1793,199,-1414,-2927,-4263,-5218, -5693,-5740,-5325,-4460,-3261,-1860,-316,1216,2559,3648,4373,4562,4276,3532,2324,795,-827,-2455,-3924,-5039, -5710,-5923,-5620,-4839,-3688,-2257,-649,971,2450,3718,4604,4986,4895,4312,3208,1779,170,-1522,-3083,-4321, -5170,-5573,-5428,-4797,-3794,-2433,-844,765,2313,3698,4725,5299,5414,4995,4054,2756,1181,-551,-2212,-3609, -4684,-5282,-5326,-4874,-3974,-2643,-1060,609,2272,3790,4947,5695,5976,5692,4870,3660,2093,326,-1384,-2922, -4179,-4956,-5202,-4940,-4195,-2987,-1504,155,1860,3453,4742,5671,6136,6024,5397,4332,2845,1118,-614,-2275, -3676,-4637,-5083,-5038,-4445,-3366,-1940,-298,1472,3125,4534,5635,6255,6295,5832,4858,3435,1744,-22,-1763, -3257,-4344,-4968,-5078,-4626,-3695,-2412,-820,906,2567,4068,5282,6026,6240,5958,5124,3810,2197,414,-1387, -3008,-4247,-5096,-5397,-5131,-4378,-3227,-1706,-18,1673,3258,4588,5487,5888,5768,5067,3864,2327,521,-1351, -3043,-4433,-5427,-5855,-5727,-5101,-4019,-2557,-910,789,2422,3813,4807,5373,5411,4851,3818,2403,669,-1170, -2888,-4381,-5497,-6074,-6121,-5644,-4676,-3327,-1736,-31,1665,3140,4293,5053,5286,4936,4105,2831,1188,-595, -2340,-3923,-5149,-5854,-6055,-5730,-4846,-3572,-2031,-317,1402,2929,4178,5051,5405,5214,4528,3355,1797,53, -1724,-3400,-4748,-5647,-6068,-5937,-5244,-4155,-2744,-1096,585,2148,3500,4507,5029,5052,4579,3591,2188,565, -1204,-2915,-4347,-5393,-5994,-6009,-5498,-4531,-3188,-1576,110,1737,3185,4299,4954,5138,4804,3933,2667,1134, -594,-2301,-3766,-4935,-5675,-5880,-5578,-4830,-3658,-2190,-597,1023,2545,3764,4605,5032,4915,4260,3196,1768, 98,-1588,-3133,-4439,-5325,-5708,-5601,-5020,-3970,-2608,-1052,596,2173,3493,4503,5090,5141,4683,3784,2474, 880,-779,-2383,-3782,-4808,-5367,-5466,-5071,-4202,-3012,-1593,-24,1514,2876,3987,4723,4983,4774,4098,2974, 1529,-48,-1683,-3179,-4330,-5089,-5403,-5173,-4485,-3444,-2097,-566,976,2428,3657,4543,4975,4952,4441,3447, 2124,604,-1038,-2552,-3800,-4694,-5151,-5096,-4587,-3681,-2438,-976,543,2016,3343,4343,4965,5167,4858,4092, 2966,1557,-24,-1560,-2904,-3973,-4614,-4772,-4471,-3747,-2623,-1257,227,1750,3144,4254,5049,5411,5270,4653, 3650,2286,711,-876,-2356,-3598,-4435,-4803,-4732,-4177,-3202,-1959,-525,990,2409,3611,4539,5069,5113,4713, 3896,2690,1228,-309,-1847,-3179,-4158,-4734,-4864,-4473,-3655,-2500,-1085,469,1991,3377,4502,5260,5542,5384, 4735,3646,2283,766,-818,-2230,-3341,-4092,-4389,-4182,-3536,-2520,-1195,326,1845,3300,4554,5433,5903,5935, 5445,4507,3254,1749,142,-1370,-2649,-3621,-4145,-4181,-3773,-2962,-1771,-373,1118,2611,3953,4971,5637,5860, 5547,4768,3607,2106,464,-1149,-2595,-3756,-4475,-4709,-4500,-3808,-2714,-1376,130,1689,3116,4296,5151,5560, 5460,4885,3875,2483,881,-740,-2290,-3575,-4443,-4879,-4843,-4293,-3340,-2084,-608,960,2469,3783,4808,5415, 5512,5151,4274,2966,1402,-279,-1956,-3409,-4501,-5154,-5322,-4958,-4153,-2983,-1538,37,1576,2993,4147,4880, 5156,4962,4213,3046,1579,-100,-1803,-3344,-4566,-5396,-5712,-5526,-4871,-3811,-2408,-861,734,2259,3544,4446, 4941,4919,4358,3326,1936,267,-1476,-3113,-4498,-5514,-6022,-6006,-5512,-4545,-3208,-1675,-22,1583,2970,4013, 4665,4796,4378,3485,2182,558,-1183,-2859,-4368,-5499,-6143,-6303,-5956,-5089,-3848,-2356,-707,963,2460,3679, 4499,4832,4625,3925,2757,1227,-462,-2169,-3776,-5036,-5862,-6209,-6031,-5330,-4192,-2745,-1079,639,2226,3586, 4572,5055,5014,4460,3381,1917,238,-1536,-3223,-4622,-5605,-6134,-6111,-5563,-4577,-3223,-1608,79,1724,3183, 4309,4971,5145,4768,3862,2528,919,-859,-2579,-4075,-5204,-5896,-6029,-5632,-4776,-3493,-1922,-229,1481,3059, 4313,5153,5518,5324,4583,3394,1857,104,-1650,-3240,-4526,-5363,-5652,-5428,-4704,-3521,-2036,-380,1330,2930, 4266,5237,5753,5726,5164,4144,2708,1020,-723,-2377,-3795,-4783,-5279,-5263,-4733,-3716,-2355,-763,928,2570, 3986,5074,5732,5850,5454,4570,3223,1584,-163,-1890,-3415,-4540,-5220,-5371,-4987,-4112,-2862,-1329,350,1991, 3466,4664,5452,5738,5535,4829,3649,2155,491,-1213,-2771,-3994,-4817,-5137,-4915,-4214,-3100,-1646,-14,1622, 3190,4502,5427,5896,5877,5320,4293,2902,1268,-461,-2082,-3437,-4448,-4955,-4913,-4402,-3435,-2098,-536,1078, 2655,4021,5046,5649,5774,5375,4494,3231,1666,-40,-1668,-3117,-4242,-4898,-5056,-4723,-3922,-2713,-1259,339, 1936,3394,4561,5375,5707,5516,4846,3753,2287,645,-1011,-2551,-3804,-4616,-4958,-4806,-4156,-3086,-1724,-181, 1423,2901,4161,5110,5585,5570,5085,4134,2793,1221,-424,-2017,-3357,-4326,-4849,-4903,-4438,-3564,-2362,-898, 670,2168,3523,4593,5253,5449,5185,4421,3245,1787,162,-1465,-2917,-4036,-4765,-4996,-4719,-4010,-2924,-1529, -11,1513,2933,4110,4915,5306,5223,4647,3635,2307,735,-896,-2394,-3651,-4544,-4959,-4893,-4373,-3453,-2190, -766,739,2192,3466,4420,4989,5127,4744,3935,2745,1248,-359,-1917,-3312,-4385,-5008,-5159,-4844,-4073,-2942, -1573,-69,1444,2794,3895,4646,4938,4745,4109,3043,1654,98,-1476,-2932,-4099,-4874,-5207,-5061,-4443,-3454, -2189,-715,799,2206,3437,4340,4822,4842,4406,3496,2236,745,-851,-2390,-3694,-4663,-5229,-5302,-4875,-4069, -2905,-1488,19,1487,2815,3862,4510,4717,4448,3681,2529,1096,-524,-2111,-3516,-4627,-5347,-5574,-5324,-4655, -3600,-2254,-769,749,2161,3345,4171,4580,4502,3940,2952,1635,87,-1510,-2991,-4247,-5124,-5550,-5498,-5000, -4065,-2812,-1359,195,1705,3018,4036,4666,4798,4426,3613,2377,867,-753,-2326,-3706,-4747,-5346,-5485,-5139, -4330,-3191,-1790,-235,1310,2703,3855,4635,4960,4784,4137,3042,1624,42,-1582,-3090,-4297,-5107,-5475,-5316, -4688,-3684,-2348,-796,790,2293,3598,4562,5091,5138,4679,3742,2432,882,-793,-2379,-3713,-4699,-5234,-5252, -4782,-3875,-2614,-1101,504,2080,3489,4591,5279,5512,5217,4422,3231,1743,62,-1580,-3044,-4215,-4954,-5196, -4940,-4222,-3097,-1679,-103,1513,3004,4215,5076,5489,5359,4730,3664,2220,549,-1163,-2749,-4066,-4985,-5407, -5329,-4747,-3715,-2361,-811,845,2406,3726,4738,5290,5337,4871,3940,2600,1003,-688,-2318,-3742,-4779,-5370, -5478,-5043,-4155,-2920,-1422,228,1831,3272,4416,5149,5382,5107,4328,3103,1558,-142,-1870,-3409,-4603,-5378, -5655,-5381,-4639,-3488,-2027,-388,1253,2773,4041,4911,5297,5200,4541,3411,1958,274,-1482,-3079,-4392,-5310, -5743,-5624,-5029,-3999,-2613,-1028,624,2211,3575,4584,5167,5264,4794,3851,2517,904,-837,-2505,-3933,-5012, -5609,-5676,-5238,-4329,-3022,-1481,184,1841,3315,4455,5204,5444,5152,4352,3128,1578,-146,-1841,-3352,-4554, -5280,-5511,-5236,-4446,-3261,-1807,-166,1495,3014,4273,5176,5603,5517,4930,3876,2429,780,-926,-2541,-3859, -4757,-5187,-5100,-4466,-3417,-2041,-442,1223,2810,4175,5215,5795,5875,5440,4504,3163,1564,-149,-1827,-3253, -4309,-4914,-5007,-4577,-3694,-2444,-943,676,2250,3663,4776,5468,5713,5454,4678,3487,1993,320,-1367,-2878, -4085,-4877,-5167,-4941,-4252,-3148,-1734,-162,1443,2948,4189,5059,5493,5415,4804,3755,2351,714,-971,-2539, -3847,-4768,-5199,-5134,-4587,-3592,-2274,-770,831,2365,3687,4676,5258,5357,4943,4072,2812,1258,-393,-2001, -3415,-4474,-5081,-5229,-4875,-4055,-2882,-1466,92,1640,3035,4145,4884,5158,4919,4220,3070,1595,-25,-1678, -3192,-4379,-5165,-5481,-5296,-4629,-3585,-2234,-719,837,2270,3503,4376,4806,4781,4268,3275,1955,409,-1222, -2772,-4054,-4986,-5469,-5451,-4953,-4045,-2806,-1327,218,1729,3077,4111,4746,4933,4615,3822,2627,1161,-454, -2038,-3442,-4523,-5194,-5358,-5056,-4307,-3167,-1764,-241,1301,2714,3861,4640,5004,4866,4258,3239,1893,330, -1264,-2736,-3956,-4780,-5141,-5055,-4482,-3491,-2203,-729,816,2295,3569,4525,5093,5177,4785,3941,2704,1220, -355,-1909,-3264,-4248,-4814,-4898,-4517,-3684,-2503,-1071,471,1994,3356,4455,5172,5436,5222,4554,3450,2064, 503,-1078,-2518,-3657,-4413,-4700,-4512,-3860,-2843,-1515,-25,1487,2915,4151,5017,5469,5481,4991,4047,2759, 1258,-347,-1864,-3143,-4080,-4578,-4582,-4128,-3258,-2026,-574,945,2456,3787,4804,5441,5619,5303,4514,3350, 1894,289,-1260,-2651,-3742,-4403,-4591,-4322,-3592,-2502,-1148,347,1864,3258,4409,5203,5563,5432,4823,3791, 2397,811,-805,-2320,-3582,-4424,-4833,-4759,-4216,-3247,-1978,-514,1024,2494,3752,4720,5238,5287,4848,3957, 2654,1117,-514,-2118,-3486,-4503,-5089,-5190,-4798,-3966,-2807,-1379,155,1666,3030,4130,4816,5065,4822,4083, 2914,1450,-178,-1821,-3311,-4486,-5256,-5561,-5350,-4694,-3637,-2266,-740,822,2285,3520,4385,4808,4753,4171, 3136,1754,126,-1555,-3122,-4453,-5385,-5854,-5793,-5279,-4312,-3019,-1505,77,1628,2971,4001,4612,4751,4377, 3526,2274,727,-943,-2561,-3996,-5088,-5719,-5868,-5531,-4710,-3504,-2042,-425,1194,2657,3848,4662,4981,4786, 4106,2975,1487,-164,-1843,-3380,-4615,-5425,-5757,-5576,-4914,-3816,-2430,-836,799,2326,3629,4590,5070,5048, 4529,3536,2149,537,-1145,-2753,-4101,-5070,-5576,-5575,-5058,-4125,-2824,-1277,371,1964,3391,4497,5174,5352, 5014,4176,2911,1367,-320,-1975,-3420,-4543,-5215,-5364,-4998,-4193,-2975,-1476,169,1795,3296,4505,5331,5669, 5500,4805,3684,2220,549,-1145,-2674,-3934,-4771,-5101,-4941,-4287,-3209,-1810,-223,1414,2975,4289,5246,5770, 5762,5228,4237,2853,1206,-504,-2132,-3518,-4514,-5037,-5051,-4552,-3603,-2283,-749,901,2497,3887,4970,5628, 5773,5407,4552,3275,1700,-7,-1683,-3167,-4303,-4987,-5176,-4849,-4043,-2864,-1407,221,1825,3284,4484,5291, 5613,5437,4750,3617,2144,466,-1233,-2816,-4086,-4958,-5335,-5181,-4530,-3476,-2072,-494,1138,2669,3965,4901, 5392,5386,4862,3861,2498,884,-827,-2452,-3808,-4829,-5366,-5381,-4916,-3994,-2716,-1204,396,1971,3366,4432, 5088,5287,4960,4139,2935,1414,-271,-1919,-3399,-4555,-5280,-5499,-5214,-4458,-3300,-1861,-275,1336,2802,3999, 4828,5205,5045,4413,3342,1915,276,-1380,-2917,-4187,-5055,-5436,-5331,-4724,-3706,-2370,-847,761,2269,3566, 4543,5091,5150,4717,3830,2547,1012,-622,-2199,-3568,-4574,-5139,-5222,-4800,-3927,-2720,-1247,334,1888,3283, 4399,5108,5360,5115,4385,3224,1781,160,-1466,-2924,-4058,-4804,-5056,-4799,-4104,-3018,-1645,-117,1419,2859, 4059,4896,5313,5254,4684,3697,2362,806,-837,-2347,-3630,-4536,-4989,-4943,-4426,-3498,-2232,-767,776,2278, 3580,4557,5153,5282,4894,4066,2841,1341,-280,-1852,-3235,-4277,-4892,-5018,-4679,-3876,-2720,-1326,200,1734, 3098,4214,4963,5270,5079,4422,3349,1950,377,-1210,-2678,-3864,-4649,-4998,-4846,-4226,-3221,-1922,-430,1103, 2543,3769,4679,5163,5171,4700,3778,2476,949,-664,-2226,-3545,-4501,-5037,-5066,-4620,-3747,-2544,-1103,427, 1932,3260,4306,4957,5154,4869,4111,2960,1533,-60,-1636,-3024,-4134,-4834,-5057,-4809,-4115,-3043,-1689,-174, 1353,2786,3967,4802,5206,5129,4547,3555,2214,643,-981,-2491,-3738,-4625,-5047,-4977,-4453,-3505,-2249,-780, 773,2266,3554,4530,5104,5195,4799,3943,2709,1202,-410,-1973,-3346,-4388,-4994,-5140,-4800,-4003,-2870,-1489, 54,1570,2957,4070,4821,5113,4907,4233,3139,1710,128,-1492,-2988,-4182,-4969,-5313,-5148,-4509,-3478,-2155, -635,930,2406,3646,4557,5019,5007,4498,3516,2192,647,-1002,-2544,-3846,-4788,-5289,-5303,-4829,-3939,-2707, -1248,309,1819,3178,4219,4864,5058,4743,3933,2747,1251,-398,-2022,-3458,-4579,-5267,-5469,-5175,-4422,-3273, -1848,-287,1296,2756,3924,4735,5105,4949,4307,3227,1809,187,-1472,-2991,-4251,-5100,-5476,-5353,-4751,-3713, -2380,-844,762,2272,3569,4522,5051,5085,4615,3690,2376,797,-851,-2460,-3842,-4863,-5426,-5508,-5067,-4178, -2932,-1434,184,1770,3189,4298,5013,5231,4942,4155,2929,1419,-242,-1918,-3399,-4546,-5269,-5510,-5227,-4478, -3324,-1889,-284,1325,2808,4045,4896,5292,5195,4585,3511,2103,464,-1225,-2809,-4096,-5004,-5438,-5356,-4774, -3775,-2430,-880,739,2297,3647,4642,5224,5294,4844,3904,2579,983,-717,-2370,-3792,-4852,-5449,-5543,-5146, -4279,-3018,-1529,82,1687,3107,4224,4953,5201,4925,4174,2988,1494,-186,-1836,-3338,-4525,-5279,-5537,-5304, -4576,-3446,-2031,-436,1191,2702,3965,4857,5310,5227,4657,3617,2204,581,-1103,-2688,-3996,-4898,-5344,-5266, -4700,-3692,-2349,-800,823,2377,3714,4738,5313,5407,4995,4099,2801,1254,-425,-2047,-3460,-4512,-5119,-5228, -4827,-3977,-2765,-1270,319,1887,3332,4484,5227,5514,5292,4567,3407,1935,289,-1377,-2873,-4057,-4830,-5103, -4868,-4165,-3045,-1626,-49,1560,3062,4309,5189,5618,5555,4986,3965,2597,999,-666,-2210,-3525,-4446,-4897, -4853,-4324,-3355,-2055,-543,1047,2584,3916,4933,5534,5657,5260,4411,3147,1605,-47,-1660,-3097,-4180,-4815, -4967,-4625,-3817,-2640,-1194,364,1931,3345,4474,5226,5496,5278,4573,3444,1985,361,-1284,-2786,-3992,-4793, -5132,-4960,-4333,-3299,-1970,-455,1100,2550,3791,4695,5150,5140,4629,3659,2320,753,-903,-2476,-3820,-4784, -5309,-5335,-4880,-3993,-2756,-1279,274,1798,3136,4171,4803,4955,4628,3819,2615,1130,-498,-2098,-3509,-4617, -5301,-5497,-5214,-4482,-3365,-1979,-446,1076,2484,3635,4431,4783,4664,4043,3018,1643,64,-1549,-3037,-4280, -5128,-5511,-5414,-4853,-3870,-2586,-1102,447,1919,3186,4136,4669,4716,4293,3408,2150,640,-957,-2506,-3847, -4837,-5386,-5457,-5046,-4206,-3014,-1597,-52,1449,2798,3878,4575,4814,4592,3897,2795,1386,-167,-1742,-3163, -4294,-5016,-5287,-5065,-4390,-3324,-1974,-450,1093,2535,3747,4610,5036,4994,4476,3519,2198,680,-910,-2412, -3665,-4562,-5018,-4971,-4459,-3549,-2291,-835,702,2185,3491,4482,5085,5227,4887,4083,2894,1429,-173,-1722, -3100,-4157,-4795,-4958,-4641,-3886,-2760,-1371,148,1679,3078,4214,4980,5322,5154,4523,3469,2081,504,-1100, -2578,-3779,-4598,-4940,-4798,-4194,-3184,-1873,-382,1179,2636,3888,4824,5332,5351,4903,4004,2725,1201,-407, -1945,-3282,-4261,-4795,-4865,-4437,-3594,-2411,-971,581,2098,3452,4537,5218,5435,5163,4416,3249,1790,175, -1439,-2879,-4018,-4747,-4994,-4744,-4059,-2981,-1609,-87,1455,2887,4078,4916,5310,5222,4653,3630,2270,687, -958,-2474,-3733,-4641,-5056,-4999,-4477,-3534,-2259,-774,785,2281,3600,4587,5173,5275,4871,4010,2766,1234, -399,-1978,-3382,-4431,-5045,-5173,-4801,-3992,-2803,-1367,201,1754,3155,4277,5025,5297,5075,4374,3244,1795, 176,-1455,-2928,-4114,-4892,-5189,-5004,-4341,-3282,-1934,-397,1186,2656,3902,4798,5253,5208,4675,3677,2325, 739,-912,-2482,-3810,-4754,-5244,-5226,-4714,-3786,-2508,-992,597,2140,3489,4519,5129,5256,4877,4025,2766, 1240,-421,-2045,-3466,-4547,-5206,-5360,-5023,-4226,-3056,-1612,-28,1544,2982,4156,4923,5247,5054,4364,3250, 1817,172,-1486,-2997,-4217,-5038,-5375,-5209,-4559,-3507,-2131,-566,1050,2571,3854,4782,5280,5269,4744,3768, 2420,831,-842,-2433,-3765,-4738,-5236,-5241,-4758,-3830,-2557,-1057,550,2105,3464,4532,5180,5351,5020,4202, 2983,1471,-179,-1808,-3268,-4380,-5075,-5275,-4971,-4193,-3035,-1603,-7,1594,3051,4243,5065,5410,5258,4609, 3517,2074,459,-1213,-2742,-3986,-4828,-5200,-5054,-4440,-3407,-2062,-516,1077,2584,3875,4831,5340,5373,4900, 3957,2654,1095,-565,-2155,-3510,-4511,-5071,-5125,-4682,-3796,-2561,-1077,503,2057,3436,4508,5185,5390,5081, 4292,3104,1596,-59,-1701,-3162,-4309,-5026,-5263,-4987,-4264,-3134,-1732,-180,1379,2826,3995,4812,5172,5044, 4419,3368,1974,374,-1268,-2783,-4056,-4923,-5329,-5256,-4690,-3702,-2402,-893,684,2189,3479,4439,4991,5055, 4615,3726,2437,904,-731,-2327,-3699,-4712,-5293,-5383,-4956,-4111,-2905,-1459,107,1639,3007,4085,4782,5015, 4758,4021,2881,1439,-159,-1776,-3217,-4360,-5097,-5374,-5141,-4454,-3380,-2020,-481,1064,2516,3729,4583,5003, 4954,4404,3417,2088,524,-1102,-2630,-3899,-4789,-5233,-5184,-4661,-3713,-2435,-954,599,2117,3430,4426,5023, 5156,4783,3956,2740,1260,-347,-1914,-3275,-4315,-4923,-5066,-4723,-3936,-2786,-1400,141,1671,3055,4175,4933, 5258,5088,4439,3379,1985,413,-1195,-2672,-3863,-4660,-4995,-4840,-4208,-3198,-1879,-384,1163,2625,3850,4745, 5226,5230,4751,3832,2537,1003,-586,-2132,-3422,-4371,-4876,-4915,-4471,-3614,-2414,-990,552,2032,3364,4387, 5039,5229,4945,4176,3018,1583,-4,-1591,-3002,-4107,-4801,-5033,-4784,-4069,-2996,-1644,-145,1374,2789,3947, 4743,5128,5018,4428,3395,2043,497,-1110,-2595,-3813,-4668,-5059,-4984,-4444,-3496,-2222,-774,761,2218,3484, 4432,4982,5062,4663,3806,2588,1098,-495,-2041,-3395,-4415,-4994,-5121,-4760,-3949,-2796,-1386,141,1673,3039, 4128,4845,5113,4882,4182,3071,1650,75,-1520,-2975,-4123,-4880,-5170,-4980,-4325,-3281,-1955,-452,1098,2532, 3746,4619,5058,5031,4522,3557,2243,708,-902,-2426,-3717,-4637,-5110,-5109,-4624,-3715,-2475,-1000,547,2069, 3402,4418,5044,5213,4880,4066,2853,1372,-248,-1845,-3256,-4329,-4987,-5156,-4843,-4079,-2935,-1528,10,1564, 2977,4129,4904,5231,5070,4428,3344,1950,361,-1263,-2759,-3991,-4823,-5186,-5072,-4477,-3474,-2159,-644,908, 2400,3671,4613,5132,5161,4688,3767,2451,902,-745,-2321,-3671,-4665,-5208,-5257,-4832,-3956,-2728,-1254,306, 1844,3203,4285,4945,5153,4867,4107,2920,1452,-173,-1791,-3245,-4379,-5089,-5325,-5080,-4350,-3246,-1852,-309, 1255,2712,3917,4756,5135,5047,4441,3393,2002,406,-1246,-2779,-4045,-4927,-5341,-5258,-4696,-3713,-2389,-858, 723,2251,3556,4531,5083,5148,4716,3821,2527,993,-654,-2229,-3603,-4636,-5216,-5301,-4901,-4055,-2840,-1380, 201,1748,3150,4267,4985,5248,4999,4264,3116,1643,1,-1627,-3103,-4277,-5019,-5289,-5046,-4355,-3251,-1846, -281,1310,2801,4026,4895,5305,5220,4648,3627,2241,646,-1003,-2544,-3826,-4737,-5171,-5115,-4572,-3598,-2303, -788,808,2332,3660,4684,5270,5374,4991,4122,2857,1319,-331,-1936,-3343,-4403,-5016,-5146,-4767,-3958,-2765, -1303,294,1852,3281,4420,5176,5438,5217,4519,3368,1909,283,-1361,-2848,-4042,-4826,-5134,-4925,-4270,-3187, -1819,-270,1299,2783,4026,4915,5362,5322,4788,3796,2450,867,-786,-2342,-3661,-4620,-5094,-5089,-4590,-3679, -2398,-898,689,2218,3576,4597,5223,5342,4977,4139,2899,1370,-261,-1877,-3296,-4382,-5039,-5200,-4879,-4101, -2944,-1525,25,1583,2978,4127,4898,5199,5018,4356,3264,1847,234,-1395,-2896,-4119,-4938,-5296,-5156,-4535, -3518,-2189,-662,898,2378,3638,4549,5031,5014,4534,3580,2268,708,-918,-2485,-3800,-4769,-5289,-5318,-4859, -3979,-2732,-1273,286,1796,3139,4181,4822,4994,4686,3905,2727,1266,-348,-1936,-3347,-4456,-5143,-5349,-5079, -4359,-3261,-1871,-342,1200,2622,3800,4606,4969,4832,4234,3189,1819,235,-1371,-2880,-4117,-4966,-5359,-5256, -4679,-3701,-2403,-918,634,2110,3367,4302,4841,4891,4465,3589,2344,835,-777,-2321,-3662,-4662,-5222,-5309, -4906,-4081,-2903,-1476,71,1591,2950,4048,4745,4986,4745,4036,2908,1489,-97,-1688,-3123,-4269,-5010,-5275, -5051,-4367,-3316,-1956,-440,1107,2537,3748,4594,5018,4959,4426,3450,2130,594,-1006,-2517,-3777,-4678,-5132, -5096,-4590,-3677,-2432,-981,576,2058,3366,4369,4970,5102,4750,3936,2747,1276,-334,-1897,-3276,-4330,-4968, -5125,-4794,-4019,-2882,-1478,49,1581,2963,4074,4843,5158,4978,4338,3281,1903,336,-1259,-2719,-3896,-4694, -5030,-4892,-4289,-3287,-1988,-503,1050,2498,3746,4670,5174,5191,4725,3814,2539,1018,-588,-2116,-3434,-4393, -4918,-4964,-4529,-3668,-2464,-1015,528,2050,3382,4436,5096,5304,5010,4267,3106,1653,63,-1524,-2941,-4040, -4743,-4965,-4702,-3984,-2906,-1541,-24,1516,2933,4103,4929,5309,5206,4618,3598,2249,686,-934,-2432,-3677, -4544,-4970,-4887,-4340,-3385,-2105,-602,944,2448,3724,4686,5247,5318,4895,4019,2759,1238,-385,-1952,-3315, -4317,-4899,-5001,-4614,-3792,-2611,-1194,351,1889,3259,4352,5074,5327,5097,4373,3247,1807,206,-1409,-2865, -4043,-4791,-5088,-4884,-4223,-3177,-1810,-276,1285,2748,3964,4831,5259,5202,4648,3655,2307,740,-903,-2442, -3737,-4651,-5123,-5093,-4583,-3654,-2387,-910,663,2178,3499,4502,5104,5225,4860,4007,2782,1284,-353,-1950, -3340,-4418,-5050,-5217,-4885,-4096,-2943,-1524,39,1591,3010,4155,4926,5234,5049,4362,3261,1838,226,-1419, -2911,-4122,-4923,-5262,-5085,-4457,-3414,-2065,-544,1027,2518,3760,4665,5143,5133,4620,3665,2344,790,-854, -2413,-3731,-4690,-5213,-5240,-4784,-3876,-2629,-1158,426,1966,3328,4362,5012,5183,4854,4049,2843,1341,-289, -1905,-3337,-4446,-5109,-5318,-5010,-4244,-3096,-1697,-130,1435,2874,4033,4829,5165,5005,4372,3286,1880,304, -1341,-2848,-4073,-4904,-5279,-5159,-4555,-3541,-2216,-702,879,2365,3647,4580,5093,5129,4666,3740,2451,904, -743,-2318,-3663,-4647,-5188,-5249,-4805,-3920,-2680,-1211,358,1901,3284,4333,5006,5207,4905,4130,2946,1475, -138,-1751,-3186,-4313,-5020,-5249,-4991,-4267,-3155,-1760,-223,1349,2782,3980,4793,5169,5070,4458,3416,2039, 452,-1180,-2710,-3977,-4846,-5250,-5163,-4598,-3611,-2303,-798,776,2272,3564,4524,5075,5138,4704,3810,2528, 1003,-621,-2190,-3561,-4570,-5146,-5231,-4847,-4002,-2814,-1371,178,1720,3085,4178,4874,5118,4884,4162,3014, 1582,-17,-1628,-3087,-4247,-4989,-5268,-5056,-4379,-3306,-1946,-407,1146,2595,3803,4657,5075,5016,4466,3468, 2121,566,-1054,-2579,-3838,-4727,-5178,-5136,-4616,-3699,-2416,-958,597,2095,3390,4388,4976,5094,4728,3908, 2701,1229,-382,-1934,-3319,-4365,-4983,-5128,-4788,-3997,-2850,-1452,88,1616,3003,4129,4869,5175,4981,4326, 3250,1852,285,-1310,-2775,-3940,-4713,-5036,-4868,-4256,-3229,-1915,-431,1108,2561,3776,4677,5132,5128,4651, 3719,2434,925,-665,-2182,-3488,-4425,-4926,-4955,-4521,-3637,-2433,-998,532,2022,3355,4381,5023,5201,4894, 4124,2960,1494,-81,-1642,-3048,-4131,-4812,-5010,-4738,-4012,-2916,-1549,-45,1470,2873,4014,4804,5149,5021, 4429,3407,2057,522,-1082,-2540,-3767,-4614,-4994,-4906,-4359,-3393,-2121,-648,878,2342,3611,4554,5080,5143, 4715,3846,2600,1102,-496,-2036,-3369,-4366,-4932,-5020,-4635,-3820,-2649,-1219,302,1804,3159,4235,4924,5152, 4909,4205,3093,1677,114,-1464,-2892,-4021,-4766,-5039,-4833,-4171,-3122,-1798,-288,1240,2668,3863,4722,5146, 5095,4567,3605,2281,744,-854,-2362,-3641,-4527,-4983,-4957,-4457,-3549,-2299,-835,714,2199,3504,4489,5080, 5205,4842,4021,2817,1345,-239,-1802,-3170,-4224,-4855,-5008,-4688,-3930,-2794,-1411,118,1622,3016,4139,4886, 5192,5025,4362,3295,1897,313,-1286,-2756,-3957,-4760,-5105,-4968,-4352,-3354,-2035,-540,1001,2447,3689,4590, 5066,5054,4570,3639,2345,807,-808,-2342,-3657,-4611,-5130,-5155,-4714,-3850,-2624,-1190,353,1855,3171,4216, 4862,5035,4739,3967,2789,1326,-274,-1864,-3280,-4386,-5071,-5291,-5017,-4290,-3192,-1809,-263,1270,2700,3874, 4672,5022,4884,4268,3223,1843,269,-1336,-2836,-4053,-4910,-5291,-5181,-4601,-3628,-2328,-832,727,2197,3474, 4431,4958,5013,4582,3691,2435,911,-705,-2255,-3600,-4606,-5156,-5246,-4822,-3989,-2784,-1332,237,1769,3150, 4238,4938,5177,4902,4164,3029,1585,-23,-1613,-3054,-4194,-4916,-5164,-4929,-4230,-3152,-1768,-240,1331,2774, 3976,4825,5237,5149,4592,3591,2234,679,-945,-2462,-3726,-4621,-5052,-4998,-4460,-3516,-2240,-748,820,2325, 3640,4632,5220,5316,4918,4058,2817,1308,-320,-1901,-3282,-4320,-4933,-5056,-4678,-3874,-2694,-1262,291,1830, 3212,4321,5049,5314,5103,4412,3301,1874,279,-1342,-2801,-3971,-4757,-5060,-4874,-4224,-3178,-1836,-304,1260, 2722,3958,4835,5287,5239,4706,3722,2403,841,-791,-2313,-3600,-4529,-5000,-4994,-4493,-3579,-2323,-837,714, 2221,3541,4552,5159,5294,4921,4115,2891,1420,-200,-1775,-3168,-4233,-4867,-5029,-4703,-3932,-2804,-1398,139, 1679,3068,4213,4976,5287,5115,4461,3382,1989,399,-1208,-2686,-3889,-4696,-5045,-4898,-4275,-3254,-1936,-426, 1126,2593,3822,4718,5200,5187,4696,3768,2469,952,-666,-2208,-3510,-4463,-4985,-5016,-4578,-3701,-2495,-1050, 496,2008,3333,4382,5012,5199,4889,4107,2937,1485,-125,-1708,-3120,-4219,-4914,-5130,-4859,-4124,-3033,-1654, -132,1395,2804,3950,4739,5097,4964,4349,3318,1950,382,-1228,-2716,-3944,-4789,-5189,-5087,-4540,-3578,-2299, -841,698,2159,3413,4353,4874,4934,4504,3617,2371,868,-741,-2282,-3625,-4638,-5209,-5310,-4917,-4088,-2912, -1497,41,1544,2899,3956,4640,4884,4620,3904,2788,1360,-205,-1793,-3220,-4343,-5074,-5346,-5119,-4459,-3399, -2083,-584,954,2369,3548,4400,4813,4757,4212,3252,1943,413,-1179,-2679,-3940,-4824,-5281,-5255,-4753,-3837, -2598,-1144,395,1888,3170,4153,4733,4856,4491,3675,2484,1017,-565,-2112,-3469,-4503,-5116,-5261,-4924,-4160, -3021,-1640,-133,1382,2754,3862,4619,4916,4750,4099,3041,1667,110,-1469,-2904,-4079,-4862,-5190,-5055,-4438, -3427,-2133,-643,895,2347,3578,4468,4939,4949,4463,3546,2269,760,-834,-2362,-3643,-4579,-5082,-5110,-4658, -3796,-2595,-1171,370,1858,3173,4193,4843,5014,4724,3957,2803,1371,-199,-1785,-3165,-4253,-4933,-5155,-4887, -4179,-3090,-1741,-218,1307,2715,3876,4671,5029,4916,4313,3285,1929,376,-1216,-2706,-3921,-4764,-5156,-5061, -4495,-3532,-2250,-789,750,2210,3480,4413,4953,5014,4602,3721,2489,993,-596,-2142,-3465,-4470,-5028,-5125, -4745,-3917,-2740,-1328,224,1732,3101,4183,4878,5128,4899,4187,3067,1655,74,-1513,-2946,-4079,-4819,-5084, -4869,-4201,-3127,-1785,-274,1273,2707,3908,4752,5181,5113,4577,3592,2267,734,-853,-2373,-3623,-4519,-4966, -4940,-4431,-3515,-2255,-792,765,2255,3564,4561,5148,5267,4900,4072,2846,1375,-228,-1789,-3170,-4213,-4831, -4968,-4626,-3832,-2681,-1266,262,1794,3184,4305,5041,5343,5142,4481,3391,1988,410,-1181,-2645,-3815,-4605, -4927,-4771,-4148,-3120,-1790,-299,1258,2716,3949,4829,5286,5275,4780,3820,2517,986,-629,-2161,-3472,-4415, -4918,-4943,-4480,-3584,-2356,-905,655,2149,3485,4510,5130,5289,4941,4150,2952,1473,-137,-1723,-3126,-4197, -4873,-5062,-4772,-4033,-2908,-1527,-4,1532,2940,4091,4866,5195,5058,4419,3361,1977,400,-1218,-2718,-3945, -4780,-5157,-5046,-4456,-3453,-2157,-646,911,2389,3650,4569,5061,5100,4628,3715,2416,880,-729,-2290,-3624, -4607,-5148,-5200,-4785,-3927,-2724,-1272,272,1800,3153,4204,4867,5081,4785,4043,2868,1425,-181,-1777,-3199, -4326,-5042,-5280,-5027,-4314,-3219,-1845,-302,1235,2665,3858,4678,5062,4954,4355,3344,1969,399,-1210,-2713, -3964,-4824,-5235,-5142,-4593,-3623,-2328,-842,708,2201,3473,4431,4973,5046,4637,3774,2526,1035,-570,-2118, -3480,-4487,-5067,-5170,-4792,-3964,-2786,-1359,190,1729,3097,4188,4886,5146,4911,4198,3078,1652,72,-1513, -2943,-4092,-4829,-5105,-4888,-4222,-3169,-1820,-305,1236,2671,3884,4736,5151,5087,4544,3574,2254,723,-877, -2377,-3645,-4550,-5006,-4961,-4464,-3548,-2295,-835,708,2191,3495,4490,5079,5206,4851,4015,2813,1340,-255, -1815,-3183,-4231,-4848,-4995,-4655,-3891,-2748,-1340,183,1702,3089,4208,4936,5226,5034,4378,3312,1915,355, -1229,-2673,-3852,-4641,-4970,-4814,-4216,-3199,-1890,-405,1137,2572,3803,4701,5159,5148,4673,3729,2449,913, -684,-2204,-3503,-4446,-4952,-4986,-4531,-3669,-2457,-1021,510,1992,3323,4342,4962,5125,4810,4044,2872,1417, -164,-1727,-3113,-4199,-4878,-5096,-4819,-4106,-3013,-1661,-153,1363,2757,3903,4694,5036,4910,4319,3286,1942, 380,-1211,-2691,-3900,-4757,-5153,-5053,-4512,-3547,-2280,-799,732,2184,3442,4369,4899,4939,4506,3630,2378, 887,-700,-2237,-3555,-4550,-5116,-5201,-4809,-3998,-2826,-1425,100,1603,2936,3994,4685,4925,4672,3964,2856, 1439,-136,-1700,-3114,-4257,-4995,-5250,-5052,-4384,-3329,-1993,-494,1040,2454,3653,4476,4888,4820,4271,3299, 1989,448,-1123,-2622,-3867,-4749,-5190,-5157,-4639,-3731,-2479,-1026,504,1980,3256,4236,4822,4932,4571,3753, 2561,1090,-501,-2044,-3392,-4427,-5040,-5172,-4841,-4068,-2929,-1527,-6,1509,2876,3993,4734,5023,4825,4171, 3102,1712,157,-1416,-2861,-4021,-4802,-5122,-4952,-4325,-3314,-1991,-495,1036,2479,3701,4578,5049,5034,4555, 3633,2356,851,-751,-2262,-3539,-4478,-4974,-4991,-4541,-3663,-2444,-1009,544,2046,3363,4400,5036,5208,4885, 4116,2945,1485,-105,-1661,-3049,-4122,-4782,-4977,-4685,-3955,-2860,-1480,41,1565,2966,4114,4897,5248,5115, 4506,3472,2112,557,-1048,-2523,-3732,-4572,-4947,-4843,-4275,-3296,-2009,-518,1036,2502,3754,4697,5216,5262, 4810,3919,2661,1156,-455,-1992,-3320,-4310,-4871,-4948,-4536,-3699,-2504,-1072,461,1978,3320,4373,5055,5273, 5002,4261,3118,1692,104,-1476,-2898,-4017,-4742,-4990,-4759,-4076,-3018,-1670,-152,1386,2806,3991,4817,5219, 5131,4560,3557,2218,659,-951,-2446,-3705,-4573,-5008,-4955,-4420,-3474,-2219,-741,801,2282,3556,4518,5072, 5159,4752,3892,2658,1166,-434,-2003,-3351,-4375,-4979,-5104,-4741,-3945,-2795,-1396,144,1658,3025,4120,4842, 5101,4876,4180,3076,1659,79,-1513,-2960,-4119,-4881,-5183,-4994,-4346,-3307,-1971,-449,1094,2541,3749,4605, 5038,4995,4455,3497,2174,635,-973,-2482,-3759,-4665,-5129,-5115,-4621,-3716,-2470,-1019,526,2021,3328,4337, 4936,5062,4707,3886,2688,1214,-390,-1960,-3343,-4403,-5036,-5198,-4883,-4111,-2977,-1576,-30,1494,2883,4006, 4749,5058,4877,4229,3158,1763,201,-1396,-2856,-4041,-4822,-5166,-5020,-4410,-3403,-2086,-596,952,2411,3636, 4547,5019,5020,4539,3607,2324,819,-773,-2304,-3597,-4547,-5064,-5101,-4657,-3778,-2564,-1130,422,1919,3247, 4275,4909,5089,4778,4004,2832,1397,-191,-1762,-3162,-4249,-4925,-5142,-4865,-4144,-3054,-1682,-185,1346,2747, 3889,4670,5035,4915,4312,3286,1936,397,-1193,-2674,-3881,-4732,-5120,-5033,-4474,-3507,-2232,-763,786,2237, 3500,4421,4944,4991,4572,3692,2454,960,-625,-2163,-3483,-4462,-5011,-5110,-4707,-3884,-2713,-1302,216,1720, 3057,4109,4790,5027,4783,4077,2944,1543,-15,-1594,-3001,-4121,-4841,-5091,-4880,-4211,-3159,-1822,-325,1206, 2608,3799,4624,5029,4950,4408,3421,2118,589,-990,-2480,-3724,-4588,-5018,-4982,-4454,-3528,-2282,-829,694, 2160,3447,4405,4976,5076,4711,3889,2691,1241,-333,-1872,-3202,-4222,-4836,-4958,-4622,-3854,-2716,-1325,186, 1701,3068,4170,4902,5185,4995,4344,3269,1894,339,-1228,-2664,-3820,-4586,-4893,-4728,-4109,-3087,-1778,-296, 1225,2662,3869,4733,5199,5183,4689,3760,2482,996,-586,-2090,-3364,-4279,-4778,-4802,-4359,-3492,-2284,-854, 670,2146,3454,4477,5092,5253,4935,4165,2992,1564,-26,-1569,-2963,-4036,-4705,-4891,-4636,-3913,-2823,-1468, 34,1534,2923,4055,4826,5160,5018,4404,3374,2014,471,-1103,-2563,-3768,-4589,-4972,-4880,-4333,-3367,-2098, -646,874,2329,3558,4481,4984,5018,4588,3712,2460,974,-610,-2137,-3459,-4439,-5003,-5076,-4691,-3870,-2700, -1289,223,1710,3044,4095,4759,4975,4718,3980,2857,1433,-128,-1684,-3097,-4197,-4916,-5174,-4956,-4291,-3246, -1911,-424,1087,2492,3676,4494,4881,4801,4249,3273,1946,426,-1159,-2639,-3884,-4761,-5188,-5138,-4628,-3696, -2446,-990,540,1999,3285,4253,4812,4919,4527,3699,2488,1024,-559,-2089,-3435,-4449,-5046,-5162,-4812,-4030, -2892,-1490,31,1538,2903,3983,4724,4989,4795,4117,3047,1651,106,-1471,-2896,-4055,-4822,-5133,-4955,-4333, -3298,-1977,-492,1045,2489,3704,4583,5021,5002,4484,3545,2245,722,-871,-2364,-3649,-4562,-5042,-5038,-4570, -3682,-2461,-1021,510,1999,3314,4311,4918,5064,4729,3950,2762,1306,-275,-1831,-3206,-4283,-4933,-5115,-4822, -4079,-2960,-1588,-63,1454,2835,3973,4740,5047,4900,4270,3215,1846,282,-1303,-2762,-3962,-4776,-5132,-5005, -4419,-3440,-2143,-654,878,2318,3563,4471,4951,4968,4503,3602,2335,827,-752,-2281,-3591,-4554,-5091,-5138, -4725,-3880,-2681,-1264,282,1773,3103,4145,4812,4995,4715,3960,2823,1379,-196,-1769,-3164,-4264,-4956,-5179, -4923,-4211,-3136,-1773,-267,1255,2658,3822,4623,4985,4868,4277,3285,1942,406,-1176,-2644,-3869,-4722,-5115, -5029,-4495,-3537,-2253,-791,749,2209,3473,4422,4961,5028,4623,3755,2521,1037,-549,-2078,-3405,-4408,-4962, -5062,-4683,-3856,-2695,-1278,253,1746,3101,4179,4868,5099,4855,4139,3035,1630,62,-1502,-2921,-4043,-4781, -5052,-4845,-4181,-3155,-1813,-329,1210,2614,3800,4648,5071,4999,4457,3495,2176,645,-938,-2436,-3679,-4583, -5018,-4982,-4488,-3579,-2343,-887,653,2115,3404,4386,4960,5062,4697,3875,2679,1214,-368,-1906,-3260,-4286, -4900,-5052,-4720,-3949,-2833,-1443,56,1584,2948,4042,4772,5067,4879,4229,3159,1783,227,-1346,-2782,-3948, -4742,-5060,-4909,-4298,-3295,-1991,-518,1010,2441,3653,4541,4992,4976,4488,3574,2300,791,-787,-2281,-3560, -4490,-4984,-5005,-4561,-3694,-2495,-1061,458,1939,3241,4261,4895,5055,4753,3991,2841,1414,-149,-1697,-3061, -4128,-4797,-4999,-4715,-3999,-2908,-1557,-57,1460,2849,3994,4776,5116,4985,4383,3355,2023,479,-1077,-2534, -3720,-4534,-4913,-4810,-4242,-3281,-2018,-552,968,2410,3642,4558,5061,5119,4691,3824,2600,1129,-459,-1966, -3274,-4243,-4795,-4850,-4468,-3650,-2491,-1083,431,1920,3240,4295,4968,5185,4920,4193,3085,1688,119,-1428, -2833,-3940,-4649,-4902,-4693,-4009,-2970,-1645,-157,1347,2752,3900,4725,5109,5031,4469,3501,2193,676,-902, -2379,-3611,-4475,-4921,-4870,-4375,-3450,-2222,-795,730,2185,3449,4411,4965,5075,4687,3859,2652,1194,-390, -1911,-3262,-4283,-4887,-5028,-4690,-3912,-2789,-1417,100,1597,2946,4020,4729,5010,4799,4121,3059,1683,142, -1430,-2861,-4007,-4783,-5095,-4929,-4321,-3312,-2017,-541,977,2406,3607,4475,4926,4911,4405,3469,2186,698, -889,-2384,-3650,-4578,-5060,-5072,-4623,-3738,-2538,-1108,423,1902,3199,4193,4806,4975,4645,3873,2717,1278, -284,-1828,-3205,-4261,-4908,-5114,-4820,-4090,-2993,-1639,-134,1371,2759,3879,4665,4988,4852,4242,3206,1858, 328,-1253,-2705,-3896,-4717,-5078,-4977,-4403,-3421,-2149,-678,854,2300,3539,4442,4953,4983,4535,3646,2412, 920,-653,-2180,-3478,-4437,-4970,-5040,-4630,-3799,-2617,-1204,315,1804,3142,4176,4856,5065,4798,4073,2936, 1520,-47,-1611,-3010,-4109,-4818,-5061,-4827,-4139,-3057,-1726,-221,1305,2715,3883,4676,5072,4980,4400,3390, 2078,552,-1032,-2520,-3749,-4598,-5010,-4952,-4414,-3482,-2221,-768,760,2226,3496,4446,5001,5077,4685,3821, 2609,1127,-448,-1993,-3326,-4330,-4923,-5031,-4669,-3885,-2715,-1319,203,1713,3071,4151,4850,5110,4887,4186, 3092,1699,136,-1433,-2869,-3994,-4743,-5025,-4841,-4188,-3158,-1829,-344,1183,2603,3815,4649,5089,5039,4526, 3563,2263,744,-828,-2338,-3591,-4493,-4967,-4945,-4472,-3561,-2326,-881,656,2136,3431,4417,5006,5128,4778, 3969,2776,1324,-253,-1792,-3160,-4206,-4830,-4994,-4677,-3930,-2807,-1423,81,1598,2964,4076,4808,5124,4937, 4289,3225,1852,303,-1265,-2716,-3893,-4681,-5018,-4882,-4290,-3293,-2002,-532,998,2435,3653,4545,5008,5011, 4527,3607,2329,837,-749,-2283,-3571,-4518,-5012,-5054,-4612,-3741,-2549,-1123,399,1860,3179,4190,4815,4983, 4675,3912,2769,1322,-239,-1787,-3172,-4254,-4936,-5140,-4881,-4168,-3089,-1722,-226,1296,2679,3818,4598,4936, 4813,4214,3182,1837,302,-1269,-2728,-3941,-4768,-5149,-5052,-4496,-3525,-2259,-790,729,2177,3418,4338,4850, 4904,4479,3606,2363,886,-677,-2190,-3515,-4477,-5021,-5107,-4724,-3889,-2725,-1324,192,1698,3039,4102,4765, 4993,4744,4040,2929,1525,-20,-1582,-2975,-4093,-4810,-5059,-4840,-4169,-3111,-1777,-287,1234,2645,3821,4643, 5040,4970,4419,3448,2136,625,-941,-2409,-3654,-4517,-4942,-4902,-4396,-3488,-2244,-799,721,2187,3463,4439, 5010,5103,4734,3924,2716,1270,-303,-1837,-3176,-4198,-4809,-4938,-4604,-3825,-2696,-1315,192,1685,3043,4132, 4858,5127,4933,4274,3206,1833,277,-1274,-2697,-3858,-4620,-4926,-4768,-4159,-3157,-1857,-381,1133,2559,3759, 4620,5074,5047,4551,3631,2349,861,-719,-2215,-3485,-4414,-4912,-4915,-4469,-3607,-2398,-979,540,2004,3303, 4305,4919,5065,4753,3976,2807,1374,-199,-1740,-3111,-4175,-4817,-5006,-4725,-4012,-2930,-1571,-77,1419,2798, 3919,4689,5015,4870,4271,3243,1896,361,-1196,-2646,-3844,-4676,-5036,-4922,-4361,-3391,-2122,-661,863,2299, 3537,4447,4958,4985,4543,3670,2423,947,-628,-2134,-3442,-4404,-4942,-5006,-4613,-3782,-2614,-1202,312,1795, 3127,4174,4846,5049,4782,4062,2949,1532,-18,-1572,-2971,-4077,-4794,-5044,-4826,-4146,-3085,-1755,-256,1257, 2662,3832,4651,5037,4954,4396,3409,2090,551,-1029,-2501,-3726,-4608,-5025,-4974,-4450,-3531,-2285,-830,700, 2152,3425,4381,4924,5018,4627,3790,2584,1113,-458,-1997,-3335,-4356,-4952,-5089,-4736,-3966,-2818,-1430,86, 1586,2943,4027,4745,5011,4798,4121,3027,1643,78,-1495,-2930,-4085,-4835,-5148,-4967,-4331,-3318,-2004,-510, 1007,2434,3634,4504,4938,4902,4390,3432,2152,630,-945,-2448,-3709,-4631,-5122,-5114,-4647,-3760,-2538,-1095, 436,1912,3210,4210,4815,4961,4620,3830,2657,1201,-373,-1927,-3290,-4352,-4986,-5158,-4856,-4094,-2988,-1612, -88,1426,2802,3934,4693,5003,4837,4204,3157,1797,252,-1323,-2772,-3947,-4748,-5106,-4966,-4378,-3388,-2083, -607,923,2362,3598,4505,4988,5007,4551,3645,2386,885,-708,-2224,-3520,-4473,-4994,-5028,-4595,-3736,-2533, -1104,431,1926,3252,4293,4928,5125,4824,4067,2923,1496,-80,-1625,-3013,-4103,-4785,-5000,-4744,-4033,-2953, -1588,-86,1448,2847,3996,4796,5150,5026,4442,3433,2089,546,-1042,-2513,-3722,-4566,-4964,-4872,-4325,-3370, -2099,-639,896,2355,3606,4545,5071,5126,4701,3828,2590,1103,-479,-2004,-3329,-4315,-4872,-4970,-4596,-3774, -2621,-1209,308,1800,3133,4204,4883,5118,4870,4160,3053,1648,81,-1489,-2909,-4025,-4767,-5039,-4830,-4167, -3125,-1799,-301,1227,2642,3807,4649,5042,4975,4429,3447,2139,619,-971,-2452,-3693,-4576,-5018,-4987,-4485, -3573,-2336,-898,626,2099,3375,4339,4911,5022,4643,3830,2635,1185,-390,-1932,-3282,-4300,-4919,-5054,-4717, -3945,-2819,-1439,69,1576,2935,4034,4759,5044,4855,4185,3112,1741,198,-1373,-2795,-3953,-4717,-5033,-4875, -4265,-3244,-1949,-464,1047,2472,3668,4536,4986,4968,4478,3560,2283,793,-780,-2277,-3547,-4465,-4957,-4980, -4532,-3661,-2456,-1034,482,1965,3263,4266,4892,5045,4735,3945,2785,1357,-198,-1743,-3102,-4166,-4823,-5011, -4737,-4010,-2926,-1569,-73,1434,2809,3932,4698,5030,4896,4282,3268,1931,408,-1164,-2618,-3808,-4624,-4995, -4883,-4316,-3358,-2099,-635,880,2318,3549,4467,4978,5008,4579,3697,2460,986,-584,-2102,-3391,-4370,-4905, -4983,-4579,-3762,-2594,-1188,329,1808,3136,4183,4840,5059,4798,4071,2969,1561,20,-1539,-2924,-4028,-4730, -4989,-4763,-4093,-3041,-1724,-251,1274,2674,3845,4658,5058,4969,4430,3453,2144,629,-935,-2423,-3640,-4505, -4924,-4888,-4378,-3460,-2218,-776,745,2197,3470,4425,4981,5079,4705,3872,2679,1222,-339,-1868,-3197,-4213, -4805,-4937,-4596,-3824,-2694,-1322,179,1671,3023,4108,4827,5097,4899,4226,3162,1781,239,-1320,-2752,-3897, -4669,-4975,-4817,-4198,-3194,-1891,-418,1095,2510,3709,4574,5005,4979,4485,3549,2273,775,-809,-2300,-3576, -4490,-4969,-4985,-4530,-3656,-2454,-1034,474,1944,3243,4233,4830,4994,4658,3885,2718,1277,-287,-1829,-3209, -4267,-4929,-5113,-4836,-4106,-3013,-1656,-150,1353,2732,3859,4620,4932,4784,4160,3117,1762,226,-1346,-2800, -3988,-4802,-5166,-5051,-4478,-3507,-2224,-759,757,2188,3431,4335,4826,4862,4408,3525,2277,782,-798,-2311, -3617,-4574,-5112,-5168,-4753,-3924,-2736,-1314,205,1707,3037,4091,4744,4949,4667,3942,2803,1392,-174,-1727, -3127,-4223,-4914,-5146,-4910,-4208,-3137,-1790,-283,1236,2643,3805,4612,4997,4902,4334,3343,2015,486,-1089, -2564,-3779,-4642,-5051,-4977,-4450,-3505,-2252,-787,745,2221,3488,4445,4996,5072,4672,3820,2599,1132,-448, -1985,-3319,-4320,-4901,-4999,-4632,-3831,-2676,-1267,253,1754,3104,4186,4886,5138,4911,4229,3137,1737,183, -1388,-2808,-3944,-4689,-4975,-4783,-4136,-3100,-1772,-277,1249,2677,3880,4734,5153,5097,4567,3609,2303,790, -791,-2285,-3544,-4444,-4897,-4875,-4389,-3481,-2241,-793,728,2199,3492,4477,5057,5183,4822,4016,2821,1367, -208,-1744,-3103,-4143,-4759,-4920,-4594,-3840,-2726,-1340,165,1671,3046,4155,4895,5193,5012,4365,3305,1927, 386,-1197,-2643,-3812,-4596,-4925,-4781,-4175,-3164,-1873,-385,1135,2570,3776,4661,5118,5111,4627,3709,2432, 934,-650,-2148,-3433,-4363,-4874,-4901,-4464,-3612,-2415,-992,532,2015,3322,4337,4963,5130,4819,4046,2899, 1459,-103,-1658,-3035,-4112,-4796,-4997,-4730,-4014,-2934,-1577,-78,1432,2808,3948,4722,5059,4929,4317,3300, 1951,407,-1169,-2629,-3834,-4664,-5045,-4948,-4399,-3452,-2181,-729,789,2226,3467,4382,4902,4938,4505,3629, 2395,911,-664,-2192,-3506,-4495,-5052,-5137,-4745,-3934,-2765,-1361,152,1637,2968,4013,4676,4894,4635,3912, 2800,1394,-163,-1717,-3115,-4229,-4942,-5202,-4984,-4324,-3280,-1964,-476,1030,2427,3589,4418,4809,4733,4183, 3216,1911,400,-1171,-2646,-3882,-4756,-5196,-5148,-4646,-3738,-2496,-1060,463,1915,3184,4141,4708,4801,4433, 3611,2420,969,-598,-2121,-3454,-4473,-5068,-5197,-4860,-4095,-2965,-1590,-94,1401,2755,3840,4564,4847,4650, 3990,2933,1573,34,-1515,-2933,-4085,-4852,-5161,-5005,-4386,-3381,-2083,-606,917,2341,3543,4408,4863,4845, 4357,3434,2160,663,-904,-2394,-3655,-4567,-5046,-5060,-4602,-3736,-2541,-1120,404,1868,3162,4166,4790,4945, 4636,3866,2721,1297,-258,-1804,-3164,-4217,-4872,-5075,-4792,-4073,-2983,-1629,-131,1377,2757,3887,4664,4996, 4860,4252,3228,1889,362,-1208,-2659,-3839,-4664,-5024,-4914,-4343,-3381,-2108,-652,868,2302,3552,4457,4967, 5009,4575,3698,2468,993,-575,-2081,-3377,-4344,-4889,-4962,-4565,-3742,-2575,-1167,360,1855,3181,4233,4900, 5128,4866,4153,3041,1633,77,-1475,-2877,-3979,-4692,-4936,-4704,-4036,-2975,-1640,-150,1371,2772,3943,4765, 5155,5074,4521,3539,2227,710,-854,-2330,-3560,-4425,-4857,-4811,-4292,-3376,-2132,-681,843,2312,3582,4543, 5102,5201,4814,3985,2771,1314,-264,-1796,-3142,-4154,-4757,-4877,-4524,-3741,-2603,-1210,301,1808,3164,4254, 4969,5238,5028,4348,3266,1882,328,-1238,-2667,-3813,-4576,-4879,-4712,-4084,-3070,-1758,-270,1249,2681,3876, 4733,5174,5139,4629,3685,2387,881,-705,-2211,-3482,-4396,-4880,-4884,-4417,-3530,-2312,-882,650,2129,3424, 4421,5017,5151,4808,4010,2817,1374,-213,-1764,-3132,-4179,-4827,-5005,-4711,-3969,-2856,-1493,17,1526,2899, 4024,4780,5092,4934,4292,3251,1883,333,-1255,-2719,-3909,-4716,-5074,-4946,-4360,-3368,-2082,-600,931,2381, 3606,4508,4984,5004,4536,3623,2349,846,-742,-2265,-3561,-4521,-5041,-5090,-4673,-3817,-2627,-1195,325,1819, 3147,4174,4815,5008,4715,3967,2817,1389,-182,-1750,-3145,-4239,-4932,-5160,-4901,-4203,-3117,-1766,-250,1267, 2673,3833,4635,5001,4884,4289,3276,1929,390,-1194,-2670,-3890,-4737,-5129,-5044,-4493,-3536,-2262,-799,727, 2195,3448,4381,4907,4974,4559,3698,2468,989,-591,-2121,-3453,-4442,-5008,-5113,-4727,-3910,-2748,-1336,185, 1694,3042,4107,4793,5035,4792,4082,2969,1565,3,-1564,-2971,-4099,-4825,-5096,-4884,-4226,-3179,-1843,-349, 1172,2585,3772,4605,5005,4939,4397,3424,2122,605,-970,-2457,-3703,-4588,-5028,-4989,-4491,-3576,-2339,-894, 625,2098,3383,4353,4932,5043,4681,3853,2655,1197,-372,-1911,-3259,-4287,-4893,-5036,-4700,-3935,-2797,-1414, 97,1603,2971,4067,4779,5066,4868,4211,3145,1769,227,-1336,-2765,-3925,-4695,-5018,-4859,-4250,-3248,-1943, -473,1053,2474,3691,4565,5017,5002,4515,3579,2309,799,-774,-2281,-3556,-4479,-4972,-4993,-4541,-3680,-2472, -1048,474,1946,3253,4262,4867,5022,4704,3934,2773,1337,-222,-1766,-3141,-4204,-4866,-5070,-4789,-4071,-2981, -1633,-137,1369,2749,3881,4649,4986,4851,4250,3226,1884,348,-1222,-2680,-3872,-4706,-5088,-4981,-4430,-3465, -2200,-729,790,2230,3470,4380,4891,4921,4488,3604,2365,893,-678,-2193,-3498,-4465,-5016,-5093,-4696,-3878, -2715,-1315,192,1683,3003,4047,4722,4944,4680,3968,2856,1453,-101,-1652,-3052,-4163,-4881,-5128,-4917,-4248, -3197,-1867,-379,1139,2543,3715,4526,4920,4834,4284,3310,2002,485,-1077,-2555,-3784,-4649,-5072,-5034,-4516, -3599,-2356,-915,609,2064,3329,4289,4848,4953,4575,3751,2558,1097,-471,-1996,-3331,-4343,-4941,-5066,-4726, -3952,-2820,-1429,80,1579,2932,4026,4745,5014,4811,4149,3079,1697,156,-1400,-2827,-3969,-4731,-5035,-4865, -4238,-3226,-1915,-429,1083,2505,3708,4572,5015,4997,4503,3576,2301,805,-775,-2268,-3533,-4448,-4930,-4936, -4480,-3605,-2391,-960,568,2051,3347,4365,4977,5130,4800,4029,2858,1413,-157,-1694,-3063,-4122,-4767,-4948, -4653,-3924,-2825,-1456,49,1554,2933,4064,4831,5160,5017,4401,3369,2016,477,-1103,-2558,-3746,-4562,-4927, -4809,-4240,-3264,-1988,-508,1024,2471,3707,4628,5125,5156,4702,3814,2562,1067,-520,-2031,-3337,-4310,-4853, -4915,-4501,-3667,-2475,-1057,465,1957,3283,4322,4986,5187,4911,4172,3041,1623,55,-1504,-2904,-4007,-4708, -4945,-4707,-4025,-2965,-1625,-122,1396,2807,3968,4783,5164,5063,4490,3492,2160,624,-965,-2440,-3672,-4528, -4944,-4880,-4344,-3403,-2148,-685,840,2302,3560,4503,5043,5121,4716,3857,2634,1157,-426,-1968,-3297,-4305, -4890,-5001,-4635,-3841,-2698,-1306,215,1716,3070,4150,4851,5100,4864,4168,3073,1665,105,-1465,-2892,-4032, -4779,-5069,-4874,-4225,-3196,-1867,-363,1164,2590,3780,4622,5040,4988,4452,3495,2188,662,-926,-2416,-3672, -4567,-5019,-5005,-4510,-3610,-2379,-938,595,2068,3363,4352,4941,5056,4694,3876,2689,1225,-358,-1910,-3276, -4316,-4945,-5100,-4779,-4017,-2891,-1500,26,1533,2902,4009,4742,5041,4855,4207,3139,1760,209,-1370,-2815, -3985,-4761,-5098,-4947,-4341,-3341,-2038,-556,975,2416,3633,4524,4988,4979,4496,3570,2297,798,-779,-2293, -3572,-4512,-5023,-5053,-4608,-3739,-2531,-1107,428,1917,3224,4243,4868,5037,4723,3950,2787,1361,-212,-1767, -3153,-4227,-4893,-5104,-4827,-4109,-3026,-1665,-174,1342,2731,3863,4637,4990,4861,4256,3234,1894,361,-1213, -2680,-3874,-4715,-5095,-5003,-4447,-3482,-2214,-749,782,2226,3474,4387,4900,4941,4515,3639,2404,918,-657, -2175,-3484,-4454,-4998,-5086,-4688,-3865,-2698,-1296,216,1708,3033,4080,4749,4977,4721,4015,2890,1496,-57, -1617,-3014,-4124,-4834,-5082,-4867,-4196,-3150,-1818,-327,1189,2585,3760,4578,4973,4887,4343,3362,2060,540, -1032,-2507,-3737,-4597,-5022,-4976,-4454,-3530,-2291,-846,666,2128,3397,4351,4912,5007,4634,3810,2615,1170, -395,-1920,-3241,-4253,-4856,-4977,-4639,-3870,-2736,-1351,153,1658,3014,4101,4826,5100,4903,4249,3176,1807, 262,-1295,-2717,-3861,-4619,-4922,-4751,-4130,-3112,-1809,-335,1181,2604,3800,4657,5112,5090,4593,3667,2393, 913,-656,-2149,-3412,-4317,-4808,-4823,-4374,-3506,-2303,-877,637,2107,3403,4413,5020,5174,4852,4081,2913, 1493,-86,-1617,-2996,-4056,-4717,-4900,-4631,-3907,-2815,-1467,26,1523,2903,4023,4787,5111,4966,4349,3319, 1969,436,-1129,-2575,-3766,-4577,-4951,-4854,-4300,-3333,-2069,-619,892,2339,3562,4471,4968,4995,4560,3682, 2436,960,-617,-2132,-3440,-4408,-4963,-5032,-4639,-3816,-2647,-1244,261,1741,3066,4106,4763,4969,4707,3968, 2846,1429,-123,-1671,-3067,-4161,-4871,-5121,-4899,-4231,-3184,-1856,-373,1130,2529,3699,4505,4885,4798,4239, 3262,1941,428,-1145,-2619,-3851,-4717,-5138,-5082,-4569,-3638,-2394,-945,576,2027,3301,4257,4809,4907,4509, 3678,2468,1010,-565,-2084,-3418,-4422,-5011,-5126,-4772,-3987,-2851,-1460,53,1551,2904,3975,4702,4962,4760, 4080,3012,1622,80,-1483,-2903,-4051,-4807,-5111,-4929,-4304,-3273,-1958,-475,1050,2483,3687,4549,4982,4955, 4436,3497,2202,688,-895,-2378,-3648,-4552,-5025,-5018,-4546,-3662,-2441,-1010,516,1993,3297,4288,4883,5023, 4687,3903,2721,1271,-298,-1843,-3211,-4273,-4915,-5091,-4796,-4051,-2936,-1568,-52,1457,2829,3958,4717,5021, 4867,4235,3181,1820,266,-1307,-2757,-3946,-4750,-5101,-4971,-4385,-3406,-2112,-630,896,2329,3562,4464,4937, 4949,4484,3582,2320,820,-750,-2270,-3570,-4522,-5051,-5096,-4681,-3834,-2640,-1225,309,1795,3120,4151,4809, 4989,4705,3950,2814,1377,-189,-1751,-3136,-4228,-4915,-5132,-4876,-4163,-3092,-1733,-232,1283,2678,3832,4628, 4983,4866,4274,3282,1945,415,-1158,-2618,-3837,-4681,-5073,-4982,-4448,-3491,-2212,-755,775,2229,3487,4429, 4961,5026,4618,3751,2519,1042,-534,-2058,-3378,-4372,-4922,-5018,-4638,-3817,-2654,-1243,280,1769,3115,4187, 4870,5096,4850,4139,3034,1634,74,-1484,-2894,-4013,-4744,-5013,-4803,-4141,-3114,-1778,-296,1233,2634,3812, 4654,5072,4998,4456,3492,2178,653,-924,-2414,-3652,-4547,-4982,-4943,-4449,-3540,-2306,-856,677,2134,3417, 4394,4962,5063,4694,3874,2680,1220,-356,-1887,-3236,-4259,-4868,-5017,-4685,-3915,-2799,-1414,81,1601,2959, 4051,4775,5066,4875,4224,3154,1781,231,-1336,-2766,-3929,-4717,-5033,-4879,-4268,-3268,-1967,-496,1025,2453, 3661,4541,4988,4969,4481,3565,2293,788,-784,-2275,-3549,-4476,-4967,-4985,-4541,-3674,-2478,-1046,468,1942, 3239,4255,4882,5041,4736,3973,2826,1398,-160,-1703,-3065,-4127,-4792,-4993,-4708,-3991,-2903,-1553,-55,1455, 2840,3979,4756,5091,4958,4356,3329,1996,458,-1096,-2547,-3729,-4541,-4918,-4812,-4246,-3284,-2022,-560,956, 2393,3624,4537,5035,5091,4662,3792,2569,1100,-482,-1986,-3290,-4254,-4803,-4859,-4475,-3657,-2498,-1092,417, 1903,3223,4273,4942,5155,4890,4164,3055,1660,96,-1447,-2849,-3952,-4659,-4909,-4697,-4016,-2975,-1650,-166, 1335,2737,3884,4706,5087,5007,4444,3476,2171,655,-918,-2391,-3618,-4481,-4923,-4871,-4373,-3450,-2222,-795, 726,2179,3439,4399,4950,5057,4668,3841,2633,1178,-402,-1921,-3266,-4285,-4886,-5025,-4685,-3907,-2785,-1412, 100,1596,2941,4014,4719,4997,4786,4108,3048,1671,133,-1436,-2864,-4008,-4779,-5090,-4923,-4314,-3306,-2012, -537,978,2405,3605,4471,4918,4899,4392,3457,2174,689,-893,-2387,-3651,-4576,-5057,-5067,-4617,-3731,-2531, -1103,425,1901,3196,4188,4798,4967,4634,3861,2707,1269,-291,-1833,-3206,-4260,-4906,-5109,-4815,-4087,-2989, -1637,-132,1370,2757,3874,4657,4981,4842,4233,3195,1849,320,-1259,-2709,-3898,-4716,-5076,-4973,-4398,-3418, -2146,-676,852,2297,3534,4438,4946,4975,4526,3636,2403,914,-658,-2183,-3478,-4437,-4967,-5037,-4627,-3795, -2615,-1202,315,1803,3141,4174,4851,5058,4792,4066,2931,1516,-50,-1612,-3010,-4108,-4816,-5058,-4823,-4136, -3053,-1722,-219,1305,2714,3882,4675,5068,4976,4396,3387,2076,549,-1033,-2519,-3748,-4597,-5008,-4950,-4411, -3480,-2219,-767,761,2227,3494,4445,4999,5076,4682,3819,2608,1127,-449,-1993,-3324,-4329,-4922,-5029,-4666, -3884,-2713,-1316,203,1712,3070,4150,4850,5109,4886,4184,3091,1699,1,-33,-335,-657,-561,-167,625, 1818,3006,3997,4617,4144,2592,310,-2735,-6068,-8850,-10767,-11405,-10692,-8898,-6313,-3334,-505,2248,4815,6830, 8303,9088,8808,7453,5043,1552,-2578,-6621,-10170,-12753,-13892,-13537,-11947,-9478,-6718,-3974,-1230,1187,3166,5386, 7712,9242,10060,10159,8669,5620,1723,-2864,-7587,-11524,-14349,-15719,-15387,-13871,-11358,-7587,-3326,642,4784,8983, 12137,13912,14327,12792,9526,5220,91,-5114,-9149,-11968,-13913,-14455,-13545,-12035,-9987,-7118,-3723,8,4067,8044, 11426,13768,14836,14323,11917,8038,3424,-1293,-5855,-9943,-13020,-14801,-15318,-14436,-12017,-8122,-3417,1444,6297,10468, 13331,14968,15106,13627,10956,7748,4320,699,-2768,-5956,-8822,-10953,-12064,-12302,-11422,-9320,-6236,-2265,2312,6559, 10369,13334,14858,15050,14019,11768,8217,3922,-452,-4687,-8201,-10471,-11415,-10930,-9242,-6641,-3462,-19,3371,6106, 8135,9810,10938,11332,10992,9683,7528,5002,2218,-535,-3129,-5469,-6849,-7216,-6685,-5306,-3396,-1068,1633,4360, 6996,9112,10605,11110,10441,9320,7625,5285,3125,1067,-868,-2072,-2986,-3091,-2463,-1714,-629,723,2112,3121, 4283,5503,6244,7151,7580,7384,6397,4896,2901,591,-1502,-2995,-4188,-4758,-4435,-3567,-2368,-946,779,1968, 2861,3749,4179,4503,4708,4704,4339,3307,1765,69,-1645,-2986,-3784,-4088,-3778,-3190,-2421,-1308,-288,800, 2009,2968,3969,4749,5084,5050,4490,3455,1967,128,-1619,-3342,-4929,-5936,-6560,-6740,-6129,-5065,-3548,-1692, 77,1474,2579,3434,3881,3918,3647,2759,1205,-509,-2557,-4736,-6398,-7375,-7789,-7433,-6540,-5302,-3934,-2490, -795,994,2713,4447,5816,6663,6736,5794,4234,2114,-597,-3252,-5622,-7531,-8683,-8981,-8532,-7517,-6036,-4152, -2091,-82,1873,3572,4862,5629,5727,5165,4012,2324,173,-2278,-4602,-6640,-8162,-8968,-9064,-8412,-7050,-5200, -3004,-558,1902,4213,6127,7488,8128,7879,6877,5076,2537,-166,-2842,-5341,-7225,-8321,-8588,-7995,-6632,-4768, -2624,-318,1928,3975,5765,7064,7726,7747,7078,5588,3515,1033,-1682,-4325,-6453,-7888,-8657,-8640,-7706,-6125, -4002,-1480,1099,3583,5790,7537,8583,8811,8225,6797,4665,2138,-638,-3340,-5587,-7240,-8180,-8235,-7506,-6125, -4208,-1951,412,2731,4926,6712,7913,8498,8326,7326,5672,3499,947,-1666,-3941,-5755,-6927,-7260,-6843,-5818, -4212,-2239,-157,1951,3957,5658,6971,7730,7774,7100,5811,3979,1766,-505,-2614,-4400,-5626,-6130,-5991,-5296, -4111,-2622,-996,704,2370,3898,5189,6115,6551,6419,5711,4419,2733,799,-1207,-3006,-4382,-5226,-5450,-5106, -4247,-3010,-1542,38,1618,3105,4438,5457,6030,6060,5529,4415,2808,907,-1098,-2991,-4503,-5483,-5928,-5817, -5246,-4303,-3076,-1689,-239,1205,2582,3749,4594,5004,4846,4082,2755,1022,-962,-2937,-4622,-5892,-6608,-6700, -6255,-5360,-4085,-2544,-826,966,2694,4199,5323,5938,5954,5294,4034,2255,146,-2022,-4022,-5660,-6793,-7322, -7242,-6568,-5346,-3722,-1839,199,2218,4034,5498,6456,6715,6212,5036,3218,941,-1479,-3811,-5823,-7266,-7988, -7973,-7269,-5964,-4225,-2193,23,2228,4258,5984,7182,7689,7482,6543,4889,2762,421,-1948,-4060,-5642,-6582, -6827,-6342,-5226,-3639,-1708,422,2557,4569,6323,7620,8299,8296,7524,6020,3970,1575,-961,-3322,-5256,-6612, -7246,-7110,-6284,-4879,-3008,-845,1399,3589,5572,7125,8088,8380,7898,6652,4808,2538,56,-2319,-4336,-5830, -6639,-6691,-6052,-4816,-3089,-1061,1107,3271,5250,6860,7960,8401,8073,7004,5299,3071,564,-1882,-4057,-5735, -6701,-6929,-6477,-5396,-3858,-2041,-62,1939,3812,5423,6640,7308,7303,6604,5253,3343,1102,-1224,-3367,-5123, -6295,-6777,-6588,-5779,-4463,-2796,-930,1039,2926,4597,5947,6812,7063,6642,5551,3890,1845,-375,-2549,-4421, -5812,-6594,-6730,-6239,-5199,-3758,-2011,-96,1809,3575,5070,6115,6585,6421,5571,4079,2140,-59,-2285,-4260, -5752,-6670,-6923,-6502,-5522,-4104,-2370,-484,1408,3196,4786,5998,6718,6820,6226,4965,3177,1013,-1273,-3404, -5156,-6379,-6920,-6766,-6004,-4730,-3081,-1199,765,2694,4434,5799,6694,6986,6567,5472,3786,1643,-679,-2896, -4815,-6226,-6963,-7009,-6412,-5253,-3677,-1843,128,2109,3928,5441,6536,7044,6860,5993,4483,2456,177,-2104, -4181,-5797,-6767,-7043,-6642,-5630,-4160,-2387,-434,1559,3423,5034,6259,6940,6985,6357,5053,3194,1003,-1311, -3501,-5294,-6516,-7075,-6923,-6099,-4762,-3053,-1112,890,2812,4532,5908,6792,7076,6707,5653,4014,1976,-280, -2501,-4412,-5829,-6621,-6703,-6127,-5009,-3467,-1653,273,2169,3921,5390,6430,6950,6840,6053,4649,2769,564, -1694,-3738,-5378,-6447,-6826,-6533,-5657,-4314,-2641,-800,1082,2890,4475,5696,6443,6579,6042,4889,3192,1103, -1113,-3211,-4988,-6243,-6853,-6816,-6189,-5051,-3545,-1808,37,1858,3501,4863,5806,6191,5943,5062,3596,1677, -476,-2617,-4550,-6036,-6932,-7203,-6843,-5908,-4543,-2874,-1026,854,2627,4168,5335,5982,6017,5410,4169,2423, 362,-1806,-3846,-5496,-6614,-7135,-7014,-6315,-5156,-3657,-1944,-168,1561,3134,4404,5221,5499,5151,4155,2630, 715,-1408,-3471,-5249,-6548,-7263,-7319,-6770,-5705,-4252,-2536,-714,1103,2807,4247,5304,5857,5799,5088,3797, 2030,-30,-2136,-4039,-5557,-6524,-6859,-6573,-5740,-4462,-2872,-1116,706,2460,4000,5217,5970,6129,5646,4556, 2939,954,-1156,-3152,-4839,-6014,-6576,-6523,-5877,-4741,-3255,-1533,299,2116,3790,5194,6188,6631,6450,5639, 4241,2404,348,-1716,-3554,-4939,-5754,-5949,-5519,-4566,-3213,-1590,188,1989,3695,5188,6328,6960,7010,6415, 5191,3471,1437,-710,-2703,-4319,-5400,-5864,-5685,-4924,-3699,-2131,-347,1516,3337,4999,6341,7227,7554,7218, 6229,4687,2742,593,-1504,-3308,-4653,-5406,-5520,-5022,-4016,-2586,-875,981,2865,4638,6134,7221,7762,7645, 6846,5443,3553,1379,-818,-2808,-4397,-5420,-5798,-5558,-4757,-3493,-1916,-139,1721,3520,5136,6403,7197,7372, 6871,5726,4011,1922,-307,-2433,-4230,-5496,-6136,-6134,-5521,-4397,-2898,-1150,728,2598,4316,5749,6745,7158, 6917,6000,4468,2493,297,-1906,-3852,-5333,-6230,-6483,-6105,-5181,-3837,-2192,-368,1495,3271,4816,5969,6589, 6581,5881,4538,2686,517,-1751,-3842,-5538,-6686,-7187,-7032,-6279,-5052,-3458,-1642,264,2138,3828,5172,6028, 6277,5830,4710,3023,932,-1345,-3535,-5405,-6783,-7523,-7589,-7023,-5917,-4394,-2601,-668,1271,3064,4558,5607, 6082,5876,4982,3474,1486,-768,-3017,-5038,-6614,-7577,-7868,-7502,-6528,-5078,-3294,-1314,720,2645,4315,5573, 6274,6295,5624,4294,2415,205,-2097,-4259,-6030,-7223,-7764,-7625,-6852,-5551,-3870,-1950,70,2033,3796,5208, 6107,6381,5971,4870,3176,1075,-1217,-3448,-5364,-6764,-7525,-7601,-7013,-5864,-4284,-2403,-373,1658,3546,5141, 6265,6802,6648,5784,4281,2303,58,-2213,-4233,-5794,-6759,-7041,-6643,-5651,-4175,-2359,-361,1676,3616,5296, 6563,7276,7335,6691,5392,3573,1403,-867,-2980,-4724,-5921,-6449,-6302,-5533,-4243,-2569,-666,1319,3250,4979, 6355,7246,7539,7147,6095,4454,2390,136,-2058,-3966,-5368,-6135,-6217,-5650,-4519,-2965,-1141,809,2757,4546, 6046,7118,7612,7454,6631,5185,3253,1050,-1180,-3194,-4777,-5751,-6054,-5697,-4734,-3307,-1557,375,2342,4202, 5820,7050,7751,7818,7217,5953,4150,2002,-266,-2407,-4176,-5395,-5969,-5860,-5128,-3886,-2265,-417,1505,3374, 5050,6384,7233,7495,7096,6029,4378,2315,36,-2199,-4142,-5606,-6453,-6615,-6126,-5082,-3602,-1841,55,1945, 3698,5175,6226,6741,6622,5839,4453,2576,405,-1819,-3852,-5485,-6548,-6942,-6670,-5809,-4465,-2783,-921,987, 2815,4403,5624,6342,6442,5874,4667,2908,779,-1479,-3629,-5446,-6737,-7389,-7381,-6760,-5627,-4111,-2361,-503, 1333,3009,4392,5346,5730,5475,4568,3069,1124,-1047,-3208,-5129,-6586,-7443,-7656,-7232,-6247,-4848,-3147,-1292, 587,2371,3917,5086,5732,5770,5153,3905,2148,73,-2097,-4127,-5784,-6905,-7396,-7234,-6489,-5270,-3702,-1921, -69,1727,3351,4652,5498,5782,5428,4437,2898,956,-1177,-3255,-5051,-6382,-7118,-7205,-6682,-5647,-4209,-2509, -685,1138,2843,4284,5331,5859,5765,5022,3697,1884,-198,-2321,-4241,-5766,-6726,-7053,-6759,-5915,-4624,-3019, -1241,594,2357,3927,5158,5915,6084,5618,4530,2915,937,-1164,-3166,-4845,-6019,-6587,-6529,-5883,-4744,-3245, -1512,338,2159,3829,5213,6163,6557,6322,5453,4008,2137,57,-2020,-3856,-5249,-6078,-6273,-5849,-4894,-3514, -1842,-9,1847,3604,5124,6263,6881,6895,6259,5007,3268,1221,-907,-2873,-4464,-5528,-5968,-5780,-5020,-3803, -2236,-457,1408,3228,4878,6197,7052,7324,6946,5919,4338,2360,201,-1889,-3684,-5000,-5714,-5777,-5232,-4167, -2695,-958,908,2783,4523,5986,7026,7520,7367,6561,5161,3290,1159,-996,-2938,-4473,-5437,-5760,-5460,-4588, -3267,-1621,219,2118,3932,5530,6760,7481,7575,7003,5799,4057,1966,-234,-2318,-4054,-5267,-5865,-5817,-5169, -4019,-2485,-705,1190,3066,4775,6179,7118,7465,7153,6173,4601,2605,393,-1789,-3695,-5137,-5978,-6163,-5714, -4717,-3295,-1576,306,2210,4003,5546,6680,7278,7236,6525,5187,3354,1207,-1014,-3055,-4701,-5801,-6250,-6041, -5238,-3957,-2315,-462,1463,3326,4972,6260,7042,7207,6693,5530,3823,1733,-513,-2655,-4478,-5792,-6481,-6506, -5910,-4790,-3261,-1468,452,2359,4107,5551,6538,6944,6677,5746,4212,2224,-2,-2220,-4192,-5718,-6641,-6904, -6520,-5557,-4145,-2410,-496,1454,3292,4871,6046,6659,6618,5901,4528,2644,439,-1837,-3944,-5661,-6809,-7305, -7129,-6338,-5043,-3389,-1504,467,2367,4055,5389,6208,6406,5921,4771,3059,954,-1318,-3509,-5377,-6729,-7458, -7505,-6907,-5768,-4213,-2377,-410,1546,3339,4830,5854,6296,6060,5134,3584,1567,-711,-2989,-5026,-6603,-7566, -7852,-7468,-6503,-5069,-3318,-1385,578,2438,4039,5235,5889,5905,5227,3905,2060,-123,-2401,-4515,-6250,-7424, -7938,-7774,-6991,-5693,-4023,-2122,-143,1787,3509,4877,5748,6010,5583,4501,2846,775,-1474,-3663,-5551,-6942, -7701,-7782,-7215,-6088,-4539,-2711,-750,1196,2988,4479,5530,6007,5831,4989,3537,1617,-558,-2758,-4735,-6281, -7234,-7528,-7165,-6214,-4801,-3068,-1149,803,2651,4266,5493,6204,6296,5717,4501,2756,669,-1537,-3615,-5328, -6506,-7042,-6911,-6167,-4917,-3298,-1449,482,2361,4049,5404,6282,6582,6232,5231,3674,1717,-437,-2540,-4358, -5708,-6452,-6545,-6004,-4926,-3428,-1656,258,2165,3937,5425,6496,7023,6921,6163,4805,2979,871,-1272,-3226, -4773,-5761,-6113,-5824,-4947,-3611,-1938,-81,1826,3649,5239,6466,7192,7316,6789,5635,3954,1921,-240,-2298, -4020,-5228,-5809,-5741,-5059,-3865,-2301,-501,1398,3252,4935,6301,7222,7583,7311,6394,4905,2983,838,-1300, -3192,-4630,-5481,-5692,-5259,-4284,-2873,-1179,665,2527,4274,5761,6857,7423,7375,6669,5349,3537,1425,-766, -2786,-4419,-5512,-5970,-5782,-5013,-3764,-2173,-374,1496,3303,4916,6187,6982,7202,6774,5704,4096,2101,-74, -2178,-3990,-5316,-6036,-6111,-5563,-4491,-3014,-1282,573,2411,4103,5508,6493,6941,6765,5947,4550,2697,582, -1566,-3508,-5038,-6005,-6332,-6028,-5154,-3833,-2197,-391,1454,3203,4729,5887,6556,6627,6063,4888,3207,1184, -952,-2980,-4675,-5859,-6440,-6392,-5749,-4615,-3115,-1378,456,2262,3906,5235,6127,6450,6144,5202,3694,1781, -340,-2435,-4270,-5645,-6448,-6621,-6181,-5212,-3828,-2156,-341,1495,3220,4694,5777,6343,6304,5623,4346,2594, 541,-1574,-3521,-5092,-6126,-6540,-6331,-5556,-4313,-2737,-965,873,2654,4239,5482,6260,6460,6018,4957,3358, 1386,-743,-2797,-4546,-5808,-6474,-6506,-5937,-4854,-3377,-1645,201,2043,3740,5148,6124,6555,6348,5499,4061, 2188,72,-2046,-3945,-5418,-6316,-6585,-6239,-5342,-4007,-2368,-554,1302,3080,4626,5803,6471,6521,5920,4690, 2942,868,-1310,-3353,-5034,-6191,-6723,-6610,-5911,-4716,-3159,-1375,500,2338,3988,5316,6175,6447,6076,5057, 3475,1497,-676,-2798,-4644,-6023,-6805,-6948,-6468,-5449,-4015,-2292,-421,1462,3226,4713,5782,6304,6192,5414, 4031,2171,34,-2140,-4126,-5701,-6724,-7112,-6860,-6035,-4742,-3103,-1267,637,2467,4083,5335,6077,6208,5678, 4504,2791,727,-1474,-3562,-5324,-6568,-7191,-7169,-6540,-5400,-3870,-2093,-199,1672,3379,4778,5719,6090,5805, 4871,3356,1408,-753,-2895,-4790,-6231,-7085,-7296,-6869,-5895,-4475,-2751,-862,1054,2856,4393,5516,6092,6036, 5312,3978,2159,48,-2125,-4120,-5733,-6790,-7217,-6995,-6189,-4895,-3254,-1396,531,2389,4038,5325,6105,6287, 5801,4670,2999,963,-1230,-3322,-5102,-6369,-7026,-7024,-6405,-5263,-3719,-1913,4,1905,3646,5078,6056,6460, 6218,5312,3824,1889,-278,-2437,-4356,-5822,-6691,-6903,-6474,-5477,-4038,-2294,-392,1530,3337,4885,6032,6640, 6625,5946,4653,2858,747,-1437,-3462,-5110,-6212,-6674,-6477,-5681,-4392,-2744,-878,1058,2929,4585,5888,6692, 6889,6432,5333,3681,1645,-552,-2675,-4489,-5804,-6505,-6541,-5950,-4820,-3285,-1483,436,2334,4065,5501,6489, 6911,6702,5841,4392,2490,342,-1818,-3761,-5273,-6205,-6489,-6128,-5196,-3814,-2115,-237,1671,3475,5034,6200, 6846,6876,6252,5012,3261,1182,-995,-3036,-4718,-5870,-6391,-6259,-5524,-4297,-2699,-883,1019,2858,4507,5814, 6655,6912,6532,5510,3948,1983,-167,-2261,-4073,-5419,-6164,-6265,-5744,-4693,-3235,-1506,349,2201,3908,5341, 6360,6847,6712,5938,4577,2756,661,-1475,-3410,-4941,-5915,-6261,-5965,-5108,-3801,-2171,-363,1491,3253,4794, 5972,6657,6745,6205,5055,3395,1401,-719,-2725,-4399,-5576,-6143,-6086,-5437,-4295,-2793,-1053,776,2564,4191, 5507,6385,6703,6397,5463,3983,2083,-18,-2095,-3925,-5309,-6121,-6300,-5866,-4898,-3516,-1857,-57,1758,3454, 4898,5955,6498,6442,5757,4471,2723,675,-1439,-3380,-4950,-5984,-6395,-6181,-5400,-4161,-2593,-831,990,2736, 4287,5502,6246,6422,5971,4906,3322,1363,-748,-2781,-4523,-5787,-6460,-6501,-5948,-4889,-3443,-1741,79,1884, 3539,4917,5875,6287,6083,5252,3852,2017,-60,-2140,-4002,-5452,-6345,-6618,-6280,-5395,-4087,-2470,-682,1145, 2867,4372,5511,6152,6202,5619,4441,2772,771,-1327,-3299,-4939,-6074,-6609,-6520,-5855,-4706,-3200,-1465,355, 2134,3747,5043,5897,6195,5873,4939,3450,1571,-507,-2551,-4333,-5670,-6445,-6593,-6140,-5164,-3791,-2139,-338, 1478,3171,4612,5654,6182,6103,5387,4097,2348,324,-1750,-3638,-5151,-6138,-6524,-6297,-5516,-4289,-2735,-979, 849,2615,4189,5421,6189,6372,5912,4842,3247,1301,-784,-2780,-4461,-5662,-6277,-6264,-5667,-4575,-3111,-1407, 418,2226,3879,5250,6202,6609,6398,5561,4161,2332,268,-1789,-3624,-5039,-5901,-6142,-5771,-4857,-3517,-1875, -67,1775,3519,5020,6148,6773,6798,6187,4975,3264,1246,-861,-2821,-4422,-5513,-5993,-5847,-5123,-3922,-2374, -605,1251,3065,4686,5980,6804,7053,6656,5622,4049,2093,-34,-2094,-3862,-5163,-5879,-5967,-5454,-4417,-2988, -1287,551,2397,4113,5554,6574,7057,6905,6106,4714,2860,741,-1414,-3357,-4891,-5874,-6220,-5931,-5076,-3760, -2123,-300,1580,3367,4920,6103,6778,6845,6260,5053,3335,1278,-894,-2948,-4663,-5867,-6456,-6408,-5758,-4600, -3076,-1303,575,2416,4083,5428,6311,6615,6270,5280,3729,1762,-397,-2527,-4392,-5805,-6627,-6808,-6368,-5384, -3975,-2273,-413,1466,3223,4704,5775,6305,6202,5439,4068,2227,110,-2061,-4042,-5630,-6663,-7069,-6840,-6028, -4747,-3128,-1308,580,2389,3983,5215,5955,6092,5579,4438,2774,754,-1404,-3463,-5200,-6430,-7069,-7055,-6438, -5309,-3786,-2012,-120,1744,3443,4823,5754,6107,5822,4894,3398,1486,-649,-2761,-4625,-6048,-6891,-7094,-6677, -5707,-4302,-2601,-735,1147,2910,4416,5515,6092,6055,5366,4073,2300,230,-1908,-3885,-5480,-6533,-6961,-6751, -5951,-4678,-3055,-1231,666,2494,4116,5380,6166,6357,5903,4817,3199,1213,-925,-2982,-4726,-5989,-6641,-6651, -6048,-4920,-3400,-1623,274,2141,3852,5254,6210,6606,6378,5511,4069,2202,100,-2001,-3880,-5330,-6211,-6458, -6082,-5141,-3761,-2077,-221,1666,3450,4978,6113,6730,6732,6085,4828,3087,1037,-1105,-3100,-4724,-5834,-6317, -6168,-5427,-4201,-2615,-814,1070,2892,4522,5807,6621,6861,6466,5435,3871,1924,-201,-2266,-4054,-5374,-6110, -6204,-5690,-4643,-3194,-1473,374,2219,3922,5342,6346,6809,6654,5862,4488,2663,581,-1529,-3447,-4954,-5917, -6251,-5955,-5106,-3803,-2180,-378,1471,3229,4761,5927,6592,6673,6117,4950,3282,1284,-826,-2829,-4504,-5674, -6243,-6190,-5546,-4413,-2912,-1176,650,2441,4060,5369,6230,6540,6229,5296,3811,1925,-161,-2225,-4038,-5411, -6215,-6393,-5964,-5003,-3622,-1955,-151,1672,3367,4798,5833,6351,6265,5556,4261,2511,484,-1601,-3514,-5055, -6068,-6474,-6261,-5493,-4263,-2704,-947,861,2614,4158,5359,6090,6254,5787,4717,3131,1187,-896,-2897,-4596, -5815,-6447,-6459,-5884,-4805,-3346,-1638,182,1980,3629,4982,5919,6315,6097,5255,3857,2034,-16,-2071,-3907, -5332,-6197,-6441,-6085,-5184,-3849,-2221,-431,1395,3119,4606,5722,6334,6360,5764,4571,2901,925,-1139,-3075, -4669,-5763,-6258,-6133,-5444,-4270,-2744,-989,849,2649,4267,5562,6398,6667,6311,5336,3829,1935,-133,-2153, -3903,-5200,-5926,-6035,-5550,-4551,-3154,-1482,325,2141,3834,5266,6297,6800,6700,5964,4652,2882,845,-1239, -3135,-4654,-5633,-6005,-5756,-4961,-3709,-2127,-352,1478,3240,4792,5992,6701,6835,6331,5224,3595,1624,-470, -2475,-4162,-5371,-5979,-5972,-5381,-4300,-2833,-1127,692,2484,4128,5470,6369,6717,6448,5549,4095,2229,152, -1910,-3736,-5143,-5989,-6223,-5856,-4955,-3629,-2002,-205,1620,3346,4823,5914,6485,6455,5783,4520,2772,732, -1385,-3347,-4942,-6021,-6490,-6330,-5604,-4405,-2861,-1104,727,2499,4079,5315,6081,6270,5836,4778,3198,1244, -866,-2903,-4657,-5948,-6649,-6731,-6204,-5167,-3727,-2021,-177,1651,3341,4745,5714,6133,5924,5081,3674,1822, -261,-2357,-4238,-5714,-6635,-6934,-6616,-5748,-4430,-2793,-970,893,2661,4194,5348,5982,6009,5393,4165,2445, 407,-1722,-3719,-5366,-6500,-7025,-6922,-6232,-5054,-3503,-1714,166,2004,3656,4973,5821,6092,5723,4722,3178, 1230,-895,-2975,-4792,-6144,-6913,-7044,-6550,-5520,-4061,-2321,-438,1444,3182,4640,5673,6156,6019,5238,3876, 2054,-33,-2146,-4074,-5600,-6583,-6935,-6659,-5812,-4504,-2867,-1026,866,2673,4257,5468,6177,6280,5735,4570, 2891,872,-1266,-3294,-4993,-6186,-6771,-6716,-6067,-4914,-3383,-1605,283,2136,3811,5173,6078,6406,6094,5149, 3641,1722,-401,-2490,-4321,-5704,-6509,-6679,-6228,-5238,-3824,-2116,-256,1612,3357,4839,5909,6451,6380,5669, 4368,2600,546,-1566,-3508,-5069,-6101,-6513,-6291,-5493,-4225,-2618,-801,1074,2877,4464,5694,6434,6582,6097, 4994,3371,1398,-722,-2746,-4450,-5675,-6307,-6296,-5689,-4570,-3073,-1321,544,2383,4056,5425,6350,6727,6470, 5586,4141,2276,189,-1887,-3735,-5153,-6005,-6230,-5834,-4888,-3520,-1838,-2,1862,3605,5094,6194,6764,6737, 6068,4808,3072,1041,-1074,-3029,-4619,-5691,-6154,-5981,-5234,-4005,-2429,-639,1227,3024,4614,5860,6628,6820, 6374,5317,3737,1792,-316,-2348,-4097,-5373,-6066,-6129,-5588,-4522,-3070,-1349,493,2321,3995,5380,6342,6760, 6558,5731,4333,2495,417,-1677,-3561,-5031,-5949,-6245,-5916,-5036,-3710,-2081,-275,1570,3313,4812,5939,6564, 6597,5997,4806,3126,1127,-975,-2947,-4591,-5733,-6280,-6193,-5529,-4373,-2859,-1117,716,2501,4102,5378,6205, 6469,6109,5139,3636,1737,-344,-2389,-4170,-5507,-6281,-6428,-5975,-4995,-3608,-1946,-141,1670,3345,4760,5771, 6256,6143,5398,4087,2328,299,-1773,-3664,-5180,-6162,-6543,-6311,-5521,-4277,-2714,-956,857,2594,4113,5282, 5980,6101,5601,4509,2914,976,-1091,-3073,-4744,-5942,-6556,-6553,-5971,-4885,-3428,-1731,75,1859,3476,4793, 5682,6025,5762,4880,3460,1635,-399,-2424,-4219,-5597,-6427,-6656,-6283,-5380,-4058,-2445,-675,1130,2821,4270, 5339,5910,5888,5249,4030,2341,359,-1700,-3613,-5173,-6220,-6680,-6526,-5807,-4625,-3096,-1362,457,2217,3781, 5020,5794,6007,5606,4594,3073,1176,-873,-2870,-4582,-5845,-6533,-6607,-6095,-5071,-3649,-1966,-149,1657,3328, 4714,5690,6136,5979,5198,3864,2093,83,-1954,-3795,-5248,-6162,-6476,-6183,-5342,-4056,-2451,-662,1180,2938, 4471,5635,6308,6392,5843,4698,3058,1097,-973,-2930,-4549,-5682,-6219,-6142,-5488,-4348,-2846,-1110,735,2534, 4166,5481,6361,6681,6385,5465,4011,2153,97,-1929,-3710,-5054,-5836,-6001,-5563,-4596,-3213,-1545,277,2114, 3833,5288,6345,6878,6809,6111,4834,3103,1094,-976,-2873,-4403,-5415,-5822,-5618,-4851,-3617,-2046,-274,1572, 3349,4919,6131,6863,7015,6541,5457,3872,1933,-139,-2124,-3813,-5024,-5659,-5681,-5121,-4056,-2607,-902,918, 2728,4381,5731,6654,7031,6789,5921,4493,2649,579,-1490,-3334,-4756,-5630,-5887,-5529,-4629,-3300,-1664,130, 1961,3675,5145,6226,6796,6772,6122,4880,3167,1156,-939,-2888,-4485,-5568,-6054,-5928,-5222,-4040,-2500,-749, 1085,2867,4451,5692,6463,6662,6230,5181,3606,1661,-441,-2484,-4238,-5533,-6249,-6344,-5838,-4811,-3381,-1686, 140,1960,3629,5010,5960,6368,6165,5327,3920,2084,3,-2089,-3981,-5468,-6398,-6714,-6405,-5549,-4247,-2622, -824,1019,2760,4275,5404,6038,6075,5477,4281,2587,575,-1538,-3531,-5190,-6339,-6888,-6805,-6138,-4976,-3436, -1670,186,1998,3625,4918,5750,6009,5641,4662,3137,1233,-854,-2897,-4676,-6010,-6771,-6905,-6444,-5445,-4036, -2341,-504,1343,3057,4500,5524,6021,5902,5149,3823,2039,-2,-2089,-3985,-5501,-6474,-6834,-6580,-5765,-4481, -2876,-1068,787,2568,4123,5316,6014,6124,5607,4489,2863,908,-1174,-3155,-4824,-6003,-6592,-6556,-5932,-4806, -3303,-1551,299,2114,3754,5082,5965,6294,6007,5105,3659,1812,-239,-2272,-4071,-5444,-6257,-6456,-6044,-5101, -3728,-2059,-237,1600,3316,4771,5829,6359,6294,5604,4340,2607,605,-1458,-3360,-4895,-5907,-6317,-6112,-5346, -4110,-2546,-776,1057,2817,4369,5581,6310,6465,6006,4944,3375,1451,-618,-2597,-4290,-5516,-6155,-6183,-5617, -4552,-3097,-1389,434,2233,3878,5220,6136,6511,6273,5426,4032,2220,186,-1851,-3666,-5082,-5947,-6200,-5846, -4952,-3627,-1998,-208,1609,3314,4778,5861,6439,6436,5813,4611,2941,966,-1089,-3010,-4591,-5665,-6148,-6021, -5323,-4155,-2635,-900,914,2671,4238,5480,6268,6497,6114,5128,3620,1738,-312,-2310,-4044,-5330,-6049,-6150, -5664,-4660,-3260,-1595,199,1992,3640,5018,5987,6428,6283,5520,4202,2450,447,-1590,-3436,-4905,-5848,-6192, -5937,-5132,-3887,-2318,-564,1237,2962,4464,5610,6271,6358,5831,4724,3121,1193,-848,-2781,-4405,-5554,-6126, -6087,-5479,-4389,-2928,-1237,557,2315,3906,5193,6047,6356,6071,5177,3751,1932,-88,-2087,-3844,-5189,-5982, -6175,-5777,-4861,-3535,-1921,-161,1619,3287,4702,5732,6266,6209,5540,4309,2620,656,-1373,-3248,-4768,-5786, -6216,-6039,-5311,-4128,-2607,-879,919,2648,4180,5374,6106,6268,5822,4789,3252,1368,-661,-2606,-4272,-5485, -6135,-6186,-5655,-4633,-3228,-1568,216,1982,3604,4953,5875,6269,6060,5248,3888,2107,108,-1908,-3715,-5124, -6004,-6280,-5956,-5098,-3815,-2222,-460,1338,3043,4509,5608,6217,6235,5649,4474,2830,880,-1168,-3084,-4666, -5762,-6269,-6172,-5508,-4372,-2877,-1152,660,2423,4009,5270,6079,6330,5964,4992,3506,1640,-401,-2392,-4129, -5427,-6171,-6311,-5856,-4890,-3514,-1862,-65,1742,3416,4822,5824,6300,6168,5420,4103,2352,338,-1715,-3581, -5067,-6030,-6391,-6151,-5356,-4116,-2548,-789,1032,2768,4287,5457,6139,6247,5730,4629,3033,1096,-959,-2921, -4577,-5759,-6364,-6356,-5764,-4675,-3213,-1498,325,2118,3741,5059,5936,6269,5980,5085,3648,1815,-226,-2248, -4034,-5406,-6235,-6452,-6072,-5162,-3825,-2195,-399,1424,3125,4574,5634,6175,6115,5436,4183,2476,484,-1567, -3457,-4993,-6021,-6454,-6283,-5546,-4352,-2816,-1069,756,2513,4069,5288,6037,6218,5774,4736,3180,1272,-788, -2771,-4466,-5699,-6360,-6402,-5850,-4799,-3354,-1654,170,1974,3621,4980,5908,6298,6078,5244,3864,2068,43, -1985,-3801,-5217,-6091,-6360,-6024,-5144,-3830,-2205,-405,1428,3156,4639,5736,6336,6339,5717,4521,2849,876, -1180,-3103,-4679,-5765,-6256,-6131,-5444,-4273,-2744,-989,850,2637,4225,5482,6280,6510,6118,5119,3601,1711, -349,-2353,-4087,-5377,-6089,-6196,-5699,-4685,-3268,-1580,244,2057,3731,5117,6092,6539,6379,5601,4263,2490, 465,-1592,-3457,-4933,-5882,-6222,-5948,-5118,-3835,-2230,-446,1396,3143,4652,5800,6448,6511,5951,4800,3163, 1204,-863,-2815,-4446,-5596,-6154,-6105,-5476,-4354,-2867,-1139,687,2476,4083,5373,6216,6507,6175,5237,3764, 1903,-148,-2165,-3938,-5275,-6057,-6226,-5798,-4843,-3471,-1823,-23,1788,3472,4888,5904,6404,6308,5594,4316, 2588,592,-1454,-3328,-4842,-5835,-6231,-6019,-5250,-4023,-2458,-702,1116,2857,4375,5548,6245,6373,5884,4803, 3233,1324,-713,-2665,-4321,-5512,-6129,-6141,-5570,-4507,-3065,-1375,431,2206,3828,5139,6028,6371,6109,5243, 3835,2031,15,-1993,-3774,-5146,-5978,-6202,-5838,-4942,-3628,-2019,-251,1541,3219,4650,5702,6255,6224,5587, 4375,2707,748,-1284,-3174,-4720,-5769,-6230,-6091,-5386,-4220,-2701,-978,825,2565,4110,5314,6063,6252,5843, 4837,3322,1451,-576,-2546,-4241,-5489,-6183,-6265,-5771,-4766,-3367,-1714,69,1839,3469,4813,5740,6153,5969, 5177,3840,2082,88,-1929,-3750,-5186,-6099,-6412,-6129,-5308,-4051,-2487,-745,1042,2740,4212,5317,5944,5995, 5434,4292,2669,734,-1300,-3224,-4826,-5948,-6493,-6433,-5808,-4702,-3235,-1546,245,1995,3567,4825,5637,5906, 5576,4646,3198,1372,-640,-2616,-4356,-5669,-6434,-6605,-6188,-5254,-3917,-2298,-533,1248,2906,4305,5312,5816, 5724,5033,3775,2073,115,-1899,-3745,-5230,-6207,-6602,-6392,-5642,-4443,-2907,-1185,610,2331,3842,5015,5717, 5862,5401,4348,2805,931,-1085,-3009,-4648,-5826,-6435,-6447,-5896,-4845,-3418,-1745,45,1814,3427,4747,5645, 6014,5780,4949,3580,1811,-170,-2148,-3918,-5276,-6113,-6353,-6008,-5135,-3832,-2228,-462,1342,3046,4498,5574, 6147,6140,5522,4335,2690,763,-1248,-3117,-4649,-5689,-6152,-6012,-5322,-4166,-2662,-939,859,2611,4173,5405, 6186,6412,6025,5047,3553,1697,-324,-2281,-3978,-5227,-5919,-6007,-5510,-4513,-3111,-1448,344,2137,3785,5152, 6104,6527,6362,5584,4256,2505,520,-1496,-3319,-4755,-5676,-5991,-5714,-4898,-3636,-2064,-300,1508,3227,4718, 5848,6481,6539,5975,4837,3217,1286,-755,-2673,-4282,-5410,-5966,-5915,-5298,-4196,-2729,-1022,784,2558,4154, 5438,6274,6552,6221,5290,3822,1976,-57,-2060,-3814,-5144,-5922,-6090,-5673,-4735,-3377,-1745,38,1829,3496, 4908,5914,6409,6315,5607,4336,2616,635,-1402,-3275,-4788,-5784,-6193,-5995,-5246,-4033,-2485,-735,1079,2821, 4350,5521,6218,6343,5860,4781,3206,1293,-743,-2698,-4354,-5551,-6170,-6190,-5633,-4578,-3133,-1445,361,2142, 3769,5094,5988,6333,6084,5216,3819,2008,-10,-2017,-3802,-5178,-6012,-6245,-5883,-4992,-3671,-2057,-277,1527, 3225,4669,5729,6290,6259,5617,4403,2725,759,-1281,-3178,-4725,-5772,-6227,-6072,-5353,-4167,-2632,-891,927, 2677,4228,5437,6177,6357,5930,4905,3379,1499,-531,-2491,-4174,-5412,-6086,-6154,-5641,-4619,-3206,-1524,285, 2084,3728,5081,6013,6404,6199,5379,4017,2234,231,-1783,-3594,-5013,-5897,-6183,-5868,-5018,-3731,-2133,-357, 1451,3163,4632,5734,6330,6347,5748,4572,2924,969,-1076,-2988,-4575,-5675,-6183,-6090,-5424,-4289,-2789,-1060, 751,2509,4080,5321,6114,6348,5974,5009,3524,1665,-362,-2352,-4080,-5379,-6128,-6263,-5808,-4838,-3456,-1790, 8,1807,3465,4849,5824,6273,6124,5368,4056,2319,329,-1690,-3532,-4999,-5953,-6307,-6068,-5280,-4047,-2485, -731,1076,2794,4299,5437,6096,6181,5655,4548,2960,1045,-983,-2912,-4534,-5687,-6271,-6245,-5648,-4563,-3101, -1405,397,2164,3751,5034,5885,6187,5893,4999,3580,1777,-228,-2208,-3957,-5292,-6089,-6285,-5893,-4975,-3651, -2030,-259,1532,3201,4610,5623,6145,6073,5398,4170,2496,549,-1454,-3302,-4802,-5804,-6228,-6052,-5322,-4139, -2617,-890,905,2628,4147,5325,6038,6187,5741,4705,3178,1310,-696,-2626,-4273,-5471,-6112,-6149,-5614,-4582, -3177,-1512,264,2020,3619,4934,5827,6196,5971,5153,3800,2046,67,-1908,-3683,-5063,-5924,-6194,-5872,-5018, -3739,-2157,-407,1377,3056,4497,5567,6141,6142,5542,4378,2748,830,-1177,-3052,-4600,-5665,-6159,-6054,-5396, -4266,-2788,-1087,694,2432,3977,5204,5976,6206,5832,4869,3404,1573,-421,-2369,-4061,-5318,-6035,-6160,-5701, -4737,-3381,-1749,18,1787,3423,4782,5747,6195,6058,5317,4032,2318,359,-1636,-3451,-4896,-5830,-6180,-5936, -5157,-3936,-2391,-660,1130,2831,4310,5437,6086,6172,5656,4558,2994,1109,-899,-2798,-4397,-5542,-6125,-6107, -5524,-4462,-3033,-1357,418,2170,3753,5031,5879,6191,5906,5024,3619,1830,-156,-2130,-3869,-5204,-5999,-6204, -5822,-4932,-3617,-2021,-265,1513,3166,4570,5596,6107,6050,5382,4163,2500,566,-1434,-3275,-4779,-5781,-6214, -6054,-5338,-4166,-2663,-943,845,2568,4087,5267,5982,6140,5698,4670,3152,1294,-706,-2637,-4282,-5487,-6141, -6197,-5680,-4669,-3268,-1614,169,1940,3553,4878,5787,6156,5935,5109,3755,1998,18,-1968,-3739,-5124,-5985, -6258,-5943,-5099,-3821,-2247,-495,1289,2975,4421,5495,6078,6093,5495,4333,2701,781,-1233,-3121,-4676,-5749, -6254,-6153,-5492,-4358,-2869,-1160,637,2387,3940,5173,5949,6173,5793,4820,3344,1507,-495,-2451,-4147,-5414, -6138,-6262,-5807,-4839,-3468,-1820,-27,1765,3417,4790,5753,6190,6040,5283,3977,2246,281,-1721,-3538,-4987, -5920,-6269,-6017,-5228,-3988,-2429,-680,1125,2849,4347,5480,6134,6213,5681,4568,2977,1068,-952,-2869,-4475, -5612,-6173,-6136,-5528,-4436,-2967,-1274,527,2291,3882,5158,5996,6292,5988,5084,3662,1853,-144,-2123,-3864, -5189,-5977,-6171,-5772,-4850,-3508,-1880,-96,1701,3379,4789,5803,6304,6221,5526,4273,2582,629,-1376,-3223, -4710,-5698,-6105,-5916,-5175,-3977,-2442,-706,1103,2837,4359,5532,6230,6363,5895,4836,3296,1418,-590,-2516, -4156,-5340,-5960,-5988,-5439,-4388,-2965,-1292,499,2268,3878,5186,6068,6419,6176,5334,3958,2189,205,-1779, -3550,-4918,-5759,-6001,-5653,-4776,-3471,-1861,-98,1701,3387,4820,5869,6414,6386,5756,4554,2913,983,-1016, -2881,-4408,-5447,-5916,-5791,-5100,-3948,-2445,-726,1072,2814,4356,5566,6310,6501,6086,5089,3590,1737,-269, -2209,-3890,-5123,-5806,-5894,-5403,-4410,-3022,-1368,413,2186,3807,5146,6066,6467,6281,5495,4164,2429,458, -1536,-3342,-4765,-5665,-5978,-5700,-4881,-3625,-2056,-310,1477,3162,4620,5702,6308,6339,5774,4638,3033,1128, -879,-2775,-4359,-5467,-6012,-5960,-5342,-4240,-2781,-1089,696,2442,3999,5240,6027,6273,5925,4989,3539,1726, -270,-2227,-3941,-5240,-5999,-6164,-5756,-4827,-3501,-1888,-139,1621,3254,4622,5589,6054,5937,5218,3959,2264, 314,-1676,-3503,-4974,-5948,-6338,-6135,-5396,-4204,-2684,-972,793,2489,3964,5095,5750,5851,5358,4292,2746, 882,-1113,-3018,-4638,-5803,-6410,-6425,-5881,-4846,-3432,-1781,-20,1715,3287,4563,5411,5731,5466,4610,3238, 1477,-490,-2439,-4178,-5520,-6336,-6570,-6226,-5364,-4079,-2497,-757,1005,2660,4061,5090,5618,5579,4947,3761, 2130,230,-1752,-3589,-5088,-6107,-6549,-6405,-5719,-4567,-3080,-1382,390,2097,3613,4794,5520,5707,5296,4310, 2839,1022,-946,-2851,-4493,-5700,-6369,-6440,-5947,-4959,-3583,-1942,-176,1580,3196,4525,5443,5843,5657,4883, 3576,1860,-74,-2033,-3792,-5179,-6053,-6345,-6056,-5242,-3993,-2439,-703,1070,2754,4208,5295,5902,5950,5396, 4283,2705,829,-1144,-3002,-4555,-5639,-6161,-6096,-5470,-4376,-2919,-1235,537,2272,3829,5067,5868,6133,5805, 4892,3475,1687,-274,-2207,-3901,-5186,-5932,-6089,-5672,-4746,-3406,-1794,-34,1730,3371,4745,5728,6197,6093, 5399,4151,2484,561,-1406,-3207,-4657,-5614,-5993,-5796,-5054,-3870,-2354,-642,1136,2837,4335,5484,6166,6286, 5812,4765,3238,1381,-604,-2499,-4105,-5266,-5871,-5886,-5337,-4306,-2892,-1238,528,2272,3854,5141,6004,6338, 6087,5245,3879,2130,174,-1776,-3506,-4855,-5678,-5911,-5567,-4703,-3423,-1844,-102,1667,3324,4739,5766,6308, 6273,5644,4459,2830,923,-1054,-2893,-4400,-5427,-5889,-5752,-5073,-3938,-2451,-754,1022,2739,4259,5449,6188, 6368,5953,4958,3471,1638,-346,-2262,-3910,-5130,-5795,-5873,-5389,-4405,-3042,-1405,353,2105,3710,5032,5948, 6345,6151,5368,4050,2325,372,-1599,-3378,-4776,-5666,-5973,-5691,-4877,-3639,-2077,-340,1440,3119,4555,5640, 6229,6251,5675,4539,2939,1044,-944,-2811,-4371,-5458,-5985,-5918,-5298,-4201,-2751,-1064,717,2452,4001,5235, 6016,6260,5902,4958,3515,1705,-281,-2220,-3916,-5197,-5940,-6091,-5667,-4738,-3407,-1787,-31,1729,3362,4727, 5690,6143,6012,5292,4019,2322,378,-1607,-3421,-4872,-5824,-6191,-5970,-5211,-4009,-2483,-764,1017,2705,4178, 5299,5949,6032,5525,4450,2903,1036,-951,-2837,-4440,-5587,-6184,-6183,-5621,-4571,-3151,-1478,298,2041,3617, 4888,5721,6023,5729,4854,3465,1690,-275,-2223,-3945,-5269,-6064,-6275,-5909,-5027,-3729,-2146,-399,1368,3018, 4414,5422,5935,5868,5204,4000,2356,438,-1540,-3366,-4852,-5849,-6280,-6120,-5415,-4255,-2758,-1047,721,2424, 3928,5093,5794,5948,5507,4493,2996,1163,-815,-2720,-4355,-5546,-6194,-6246,-5728,-4717,-3322,-1677,93,1846, 3434,4738,5621,5980,5753,4938,3604,1876,-70,-2019,-3763,-5129,-5983,-6255,-5949,-5113,-3850,-2285,-545,1225, 2898,4328,5381,5955,5957,5359,4213,2607,718,-1256,-3103,-4633,-5684,-6176,-6072,-5418,-4294,-2823,-1134,648, 2366,3894,5101,5866,6086,5714,4764,3319,1526,-439,-2352,-4017,-5258,-5965,-6088,-5629,-4668,-3315,-1692,69, 1826,3443,4785,5725,6158,6011,5271,4006,2326,406,-1550,-3327,-4739,-5654,-6003,-5754,-4983,-3768,-2237,-514, 1258,2944,4403,5508,6141,6210,5697,4609,3060,1210,-755,-2621,-4186,-5296,-5854,-5835,-5255,-4196,-2781,-1123, 635,2359,3912,5157,5977,6271,5972,5097,3722,1963,18,-1910,-3613,-4915,-5696,-5893,-5518,-4635,-3337,-1757, -26,1719,3352,4721,5707,6200,6118,5450,4241,2609,715,-1245,-3046,-4513,-5493,-5918,-5756,-5053,-3904,-2422, -738,1022,2702,4187,5327,6009,6153,5700,4683,3194,1374,-584,-2470,-4079,-5255,-5888,-5942,-5434,-4443,-3076, -1447,289,2020,3589,4876,5747,6100,5871,5056,3725,2007,74,-1865,-3598,-4950,-5793,-6055,-5752,-4927,-3677, -2133,-417,1334,2980,4384,5420,5969,5965,5370,4223,2639,767,-1187,-3018,-4535,-5578,-6067,-5974,-5333,-4230, -2776,-1105,647,2357,3879,5075,5828,6038,5664,4714,3270,1480,-471,-2375,-4024,-5256,-5957,-6079,-5634,-4691, -3353,-1742,-1,1744,3355,4688,5623,6051,5907,5170,3901,2229,312,-1635,-3407,-4814,-5729,-6068,-5831,-5064, -3859,-2332,-623,1141,2822,4284,5381,6014,6084,5569,4486,2945,1098,-857,-2721,-4289,-5402,-5963,-5943,-5367, -4315,-2889,-1231,538,2271,3827,5079,5892,6179,5885,5000,3610,1855,-91,-2012,-3708,-5011,-5778,-5974,-5604, -4714,-3417,-1835,-100,1653,3293,4678,5669,6168,6086,5421,4203,2559,654,-1311,-3120,-4585,-5567,-5976,-5810, -5103,-3941,-2451,-753,1011,2703,4190,5333,6015,6150,5693,4671,3172,1345,-615,-2498,-4119,-5291,-5922,-5972, -5460,-4455,-3072,-1437,320,2054,3631,4916,5777,6123,5878,5057,3715,1986,48,-1893,-3628,-4975,-5818,-6080, -5768,-4936,-3678,-2119,-396,1365,3017,4427,5462,6004,5983,5372,4208,2597,710,-1255,-3089,-4602,-5639,-6108, -6005,-5349,-4231,-2767,-1088,670,2375,3888,5073,5807,6005,5610,4644,3189,1385,-577,-2479,-4133,-5364,-6059, -6166,-5710,-4756,-3396,-1775,-24,1725,3333,4659,5573,5971,5793,5027,3735,2042,118,-1828,-3593,-4995,-5895, -6222,-5969,-5183,-3961,-2430,-706,1059,2736,4183,5270,5873,5925,5375,4271,2704,839,-1128,-2980,-4539,-5629, -6171,-6126,-5526,-4453,-3016,-1348,418,2145,3694,4927,5723,5985,5665,4763,3355,1585,-364,-2287,-3972,-5253, -6003,-6175,-5771,-4860,-3538,-1936,-187,1564,3189,4552,5519,5984,5881,5185,3955,2309,407,-1537,-3326,-4775, -5730,-6120,-5931,-5203,-4029,-2521,-813,959,2651,4130,5261,5925,6032,5551,4508,2990,1158,-796,-2668,-4253, -5401,-5998,-6009,-5473,-4449,-3053,-1407,352,2082,3645,4916,5761,6080,5828,4990,3640,1906,-26,-1960,-3670, -4998,-5804,-6043,-5694,-4840,-3565,-1994,-263,1485,3129,4519,5533,6052,6010,5381,4206,2603,720,-1228,-3044, -4526,-5543,-5997,-5865,-5190,-4056,-2576,-891,875,2571,4068,5236,5946,6111,5693,4707,3242,1441,-507,-2385, -4003,-5205,-5864,-5951,-5470,-4500,-3141,-1520,228,1962,3555,4854,5749,6130,5934,5158,3859,2157,237,-1698, -3441,-4814,-5691,-5987,-5707,-4902,-3670,-2130,-416,1339,2988,4409,5467,6044,6064,5505,4393,2833,972,-975, -2807,-4338,-5409,-5922,-5862,-5249,-4169,-2735,-1072,684,2389,3916,5126,5896,6132,5786,4872,3466,1696,-236, -2132,-3795,-5048,-5783,-5939,-5529,-4613,-3300,-1708,23,1769,3379,4722,5673,6118,5992,5291,4049,2400,505, -1430,-3200,-4620,-5559,-5925,-5719,-4983,-3814,-2316,-625,1122,2791,4250,5360,6011,6105,5622,4579,3075,1251, -684,-2543,-4120,-5246,-5842,-5853,-5308,-4291,-2896,-1260,485,2202,3749,5000,5831,6136,5866,5021,3673,1949, 30,-1884,-3576,-4887,-5687,-5911,-5573,-4720,-3458,-1902,-184,1557,3180,4562,5564,6076,6020,5383,4205,2604, 726,-1209,-3011,-4482,-5486,-5931,-5797,-5127,-4009,-2549,-877,872,2557,4040,5196,5900,6063,5643,4652,3192, 1395,-550,-2425,-4043,-5236,-5896,-5975,-5496,-4529,-3177,-1567,169,1897,3467,4758,5641,6015,5809,5026,3729, 2035,120,-1804,-3541,-4908,-5780,-6080,-5812,-5012,-3795,-2265,-553,1193,2847,4260,5313,5890,5897,5325,4200, 2628,770,-1178,-3015,-4535,-5604,-6120,-6054,-5445,-4364,-2938,-1279,469,2173,3693,4899,5665,5897,5542,4620, 3200,1434,-511,-2408,-4069,-5323,-6053,-6211,-5797,-4877,-3562,-1971,-235,1505,3111,4451,5397,5838,5704,4990, 3743,2087,188,-1750,-3523,-4939,-5873,-6242,-6030,-5290,-4106,-2604,-905,846,2525,3978,5090,5723,5813,5310, 4254,2735,905,-1043,-2888,-4458,-5575,-6160,-6157,-5606,-4574,-3180,-1531,214,1935,3487,4745,5569,5875,5596, 4740,3384,1653,-274,-2186,-3882,-5183,-5973,-6186,-5824,-4952,-3670,-2101,-374,1376,3008,4378,5372,5869,5806, 5157,3979,2368,499,-1435,-3221,-4679,-5667,-6102,-5950,-5266,-4125,-2649,-965,791,2481,3969,5115,5806,5960, 5521,4523,3054,1256,-676,-2543,-4141,-5310,-5948,-6007,-5507,-4522,-3155,-1535,211,1943,3517,4804,5674,6035, 5816,5018,3708,2011,99,-1819,-3542,-4886,-5722,-5999,-5701,-4878,-3636,-2092,-376,1373,3020,4425,5455,6016, 6016,5426,4297,2728,870,-1068,-2881,-4390,-5433,-5924,-5840,-5203,-4103,-2657,-985,777,2479,3990,5176,5921, 6121,5744,4800,3373,1597,-332,-2214,-3850,-5077,-5776,-5903,-5471,-4535,-3208,-1611,129,1863,3460,4777,5699, 6115,5963,5220,3961,2295,401,-1529,-3287,-4685,-5589,-5935,-5698,-4936,-3742,-2231,-529,1218,2879,4318,5400, 6015,6076,5554,4480,2946,1114,-826,-2671,-4219,-5323,-5883,-5864,-5289,-4242,-2827,-1186,564,2274,3812,5032, 5823,6092,5788,4907,3538,1805,-119,-2015,-3687,-4977,-5738,-5937,-5564,-4685,-3398,-1826,-105,1635,3256,4611, 5578,6058,5972,5297,4090,2463,587,-1341,-3119,-4553,-5521,-5921,-5754,-5049,-3899,-2419,-744,1000,2671,4137, 5260,5928,6055,5601,4590,3106,1309,-622,-2475,-4064,-5218,-5835,-5878,-5360,-4361,-2991,-1372,365,2073,3631, 4890,5734,6067,5830,5017,3703,2003,104,-1799,-3504,-4830,-5656,-5915,-5602,-4781,-3531,-1987,-284,1457,3088, 4471,5477,6007,5979,5378,4231,2659,815,-1104,-2898,-4376,-5392,-5863,-5763,-5123,-4027,-2586,-935,802,2482, 3970,5136,5866,6054,5673,4727,3296,1527,-392,-2259,-3882,-5091,-5774,-5879,-5432,-4493,-3165,-1574,142,1859, 3426,4722,5623,6017,5849,5106,3845,2193,310,-1595,-3327,-4707,-5598,-5921,-5682,-4924,-3735,-2233,-550,1176, 2821,4240,5303,5895,5940,5404,4334,2802,985,-936,-2752,-4276,-5358,-5904,-5875,-5307,-4262,-2866,-1245,488, 2180,3700,4910,5687,5945,5631,4751,3375,1649,-257,-2135,-3790,-5054,-5806,-5981,-5608,-4732,-3452,-1897,-194, 1524,3124,4461,5413,5874,5782,5112,3914,2303,444,-1467,-3231,-4655,-5606,-6008,-5834,-5137,-3996,-2523,-856, 874,2539,3985,5097,5753,5865,5406,4397,2915,1136,-780,-2610,-4176,-5315,-5921,-5956,-5447,-4461,-3103,-1491, 229,1931,3480,4735,5570,5896,5655,4847,3528,1837,-55,-1943,-3633,-4946,-5759,-6009,-5698,-4876,-3639,-2102, -404,1323,2948,4322,5333,5856,5825,5221,4079,2508,669,-1248,-3032,-4506,-5519,-5984,-5874,-5237,-4137,-2693, -1035,695,2374,3858,5018,5730,5913,5519,4570,3138,1376,-531,-2388,-4001,-5194,-5867,-5978,-5523,-4591,-3259, -1664,60,1775,3359,4653,5550,5937,5758,5008,3741,2078,200,-1704,-3431,-4797,-5675,-5988,-5731,-4967,-3763, -2249,-554,1183,2827,4243,5307,5890,5933,5396,4309,2780,957,-966,-2779,-4299,-5375,-5907,-5862,-5277,-4224, -2816,-1170,570,2266,3787,4995,5773,6019,5693,4805,3419,1685,-215,-2094,-3736,-4992,-5733,-5900,-5509,-4617, -3329,-1758,-39,1686,3283,4624,5575,6028,5917,5235,4024,2398,531,-1383,-3135,-4553,-5488,-5872,-5688,-4972, -3823,-2344,-669,1065,2725,4177,5277,5930,6032,5562,4539,3049,1252,-666,-2503,-4067,-5200,-5797,-5818,-5291, -4289,-2909,-1291,440,2141,3683,4926,5749,6052,5793,4963,3636,1937,39,-1850,-3526,-4837,-5644,-5881,-5558, -4722,-3482,-1946,-244,1484,3098,4465,5456,5962,5909,5278,4120,2533,680,-1234,-3016,-4479,-5471,-5921,-5799, -5145,-4040,-2593,-937,793,2458,3930,5071,5768,5925,5511,4539,3096,1324,-595,-2449,-4048,-5234,-5893,-5981, -5513,-4559,-3222,-1629,96,1798,3349,4625,5493,5855,5651,4880,3602,1935,54,-1843,-3553,-4906,-5775,-6077, -5809,-5026,-3818,-2298,-604,1129,2759,4157,5196,5756,5762,5199,4096,2561,742,-1171,-2965,-4453,-5509,-6014, -5951,-5353,-4295,-2884,-1249,487,2166,3666,4860,5615,5842,5496,4588,3202,1464,-432,-2296,-3920,-5148,-5864, -6013,-5607,-4703,-3403,-1833,-119,1597,3181,4499,5427,5861,5733,5037,3818,2200,343,-1558,-3292,-4681,-5599, -5962,-5757,-5028,-3865,-2381,-706,1024,2672,4098,5186,5807,5888,5399,4367,2888,1100,-802,-2614,-4151,-5249, -5824,-5838,-5298,-4287,-2917,-1300,423,2117,3638,4872,5679,5973,5692,4856,3519,1824,-63,-1934,-3591,-4868, -5645,-5862,-5518,-4674,-3423,-1888,-199,1515,3113,4459,5436,5925,5864,5231,4069,2493,654,-1244,-3008,-4446, -5426,-5855,-5720,-5053,-3940,-2499,-840,876,2532,3993,5115,5797,5941,5515,4545,3105,1344,-551,-2391,-3967, -5125,-5771,-5844,-5368,-4413,-3077,-1491,220,1921,3466,4727,5589,5938,5724,4948,3667,2005,133,-1748,-3437, -4770,-5612,-5901,-5625,-4840,-3633,-2125,-439,1276,2898,4285,5312,5867,5873,5308,4204,2666,850,-1054,-2846, -4330,-5367,-5866,-5796,-5189,-4126,-2712,-1079,642,2315,3806,4981,5724,5935,5579,4668,3282,1556,-332,-2190, -3803,-5029,-5734,-5886,-5477,-4577,-3283,-1717,-4,1707,3290,4596,5511,5935,5796,5084,3863,2241,385,-1506, -3235,-4617,-5525,-5889,-5682,-4952,-3793,-2319,-649,1075,2719,4141,5221,5840,5912,5413,4370,2881,1091,-813, -2621,-4152,-5255,-5820,-5827,-5290,-4278,-2905,-1293,428,2114,3639,4857,5659,5944,5665,4818,3486,1789,-93, -1961,-3622,-4900,-5676,-5902,-5557,-4712,-3458,-1917,-226,1494,3091,4440,5412,5895,5826,5185,4009,2425,593, -1303,-3060,-4493,-5463,-5891,-5754,-5089,-3971,-2526,-874,853,2515,3974,5097,5775,5916,5486,4501,3066,1298, -603,-2437,-4010,-5168,-5808,-5878,-5397,-4433,-3089,-1498,219,1920,3474,4731,5585,5925,5708,4919,3632,1967, 94,-1787,-3477,-4804,-5643,-5926,-5646,-4852,-3637,-2122,-434,1295,2918,4304,5317,5863,5859,5277,4157,2624, 798,-1100,-2882,-4359,-5389,-5876,-5806,-5191,-4123,-2699,-1060,666,2345,3838,5005,5740,5942,5579,4653,3251, 1514,-382,-2234,-3845,-5055,-5751,-5887,-5466,-4554,-3249,-1675,33,1747,3322,4623,5527,5938,5788,5068,3834, 2213,355,-1537,-3263,-4640,-5540,-5893,-5678,-4938,-3772,-2278,-609,1125,2768,4191,5254,5860,5914,5407,4351, 2844,1052,-845,-2653,-4175,-5270,-5828,-5822,-5276,-4257,-2875,-1258,465,2153,3669,4886,5674,5942,5637,4776, 3426,1720,-170,-2033,-3685,-4950,-5711,-5911,-5559,-4697,-3438,-1898,-205,1512,3108,4447,5402,5877,5786,5129, 3947,2350,511,-1386,-3141,-4568,-5524,-5941,-5786,-5107,-3982,-2522,-863,861,2516,3963,5069,5721,5841,5388, 4388,2933,1166,-735,-2557,-4122,-5262,-5878,-5933,-5446,-4470,-3125,-1524,192,1889,3432,4681,5513,5842,5600, 4796,3490,1810,-63,-1938,-3617,-4925,-5739,-5996,-5693,-4882,-3660,-2137,-454,1270,2882,4253,5249,5777,5747, 5147,4017,2463,638,-1259,-3031,-4495,-5504,-5972,-5871,-5248,-4157,-2730,-1082,641,2307,3783,4932,5635,5820, 5425,4494,3083,1339,-548,-2381,-3982,-5172,-5852,-5963,-5529,-4602,-3286,-1705,10,1715,3280,4562,5448,5829, 5651,4907,3661,2019,170,-1707,-3409,-4766,-5643,-5962,-5724,-4973,-3789,-2303,-629,1088,2718,4123,5169,5756, 5798,5269,4202,2695,898,-993,-2785,-4292,-5354,-5889,-5858,-5290,-4257,-2866,-1240,474,2152,3656,4848,5611, 5858,5542,4672,3320,1614,-258,-2113,-3739,-4986,-5731,-5910,-5538,-4673,-3401,-1849,-150,1558,3141,4465,5404, 5850,5750,5078,3897,2306,474,-1399,-3129,-4531,-5467,-5860,-5689,-5000,-3869,-2409,-751,965,2614,4055,5149, 5793,5896,5438,4436,2981,1219,-665,-2475,-4013,-5133,-5733,-5764,-5253,-4275,-2917,-1324,387,2071,3597,4829, 5654,5967,5723,4916,3616,1948,87,-1770,-3426,-4727,-5522,-5770,-5455,-4641,-3410,-1889,-192,1517,3122,4481, 5465,5971,5928,5324,4193,2650,835,-1043,-2794,-4238,-5234,-5691,-5581,-4945,-3859,-2431,-789,927,2586,4050, 5184,5883,6050,5654,4707,3295,1561,-321,-2146,-3720,-4902,-5560,-5661,-5214,-4293,-2979,-1404,299,1988,3542, 4814,5689,6062,5877,5132,3879,2245,394,-1481,-3176,-4520,-5390,-5703,-5456,-4703,-3519,-2027,-357,1355,2972, 4362,5396,5960,5988,5448,4372,2865,1073,-814,-2593,-4090,-5149,-5675,-5648,-5075,-4048,-2669,-1052,662,2326, 3818,5001,5755,5987,5653,4774,3412,1696,-176,-2022,-3646,-4884,-5622,-5798,-5421,-4557,-3295,-1754,-68,1630, 3196,4505,5431,5871,5755,5081,3883,2287,446,-1437,-3167,-4562,-5502,-5882,-5714,-5017,-3893,-2440,-790,921, 2552,3974,5058,5689,5779,5310,4291,2834,1065,-818,-2623,-4160,-5280,-5877,-5909,-5398,-4427,-3078,-1483,225, 1907,3423,4651,5461,5759,5493,4677,3364,1689,-173,-2028,-3676,-4956,-5745,-5979,-5664,-4849,-3621,-2099,-421, 1291,2885,4240,5214,5716,5663,5046,3906,2355,536,-1342,-3089,-4523,-5503,-5947,-5834,-5177,-4087,-2656,-1010, 708,2363,3823,4949,5636,5796,5385,4434,3014,1280,-598,-2415,-3985,-5144,-5796,-5878,-5419,-4473,-3151,-1571, 140,1836,3388,4659,5519,5881,5683,4916,3656,2014,166,-1698,-3378,-4700,-5548,-5844,-5583,-4809,-3618,-2111, -434,1284,2904,4291,5317,5872,5880,5322,4237,2715,917,-962,-2736,-4212,-5250,-5754,-5684,-5096,-4047,-2644, -1019,698,2366,3847,5020,5759,5976,5622,4726,3351,1646,-225,-2059,-3674,-4885,-5600,-5753,-5359,-4469,-3189, -1632,68,1775,3340,4636,5548,5967,5822,5120,3910,2303,470,-1407,-3121,-4497,-5399,-5766,-5567,-4856,-3706, -2245,-589,1127,2756,4170,5238,5846,5918,5418,4385,2908,1139,-749,-2543,-4061,-5153,-5725,-5735,-5209,-4211, -2853,-1252,452,2130,3629,4838,5625,5896,5612,4769,3447,1769,-94,-1946,-3592,-4858,-5634,-5852,-5525,-4687, -3446,-1921,-240,1467,3043,4372,5318,5791,5715,5068,3913,2349,530,-1341,-3075,-4493,-5457,-5888,-5757,-5107, -4003,-2571,-936,772,2413,3855,4959,5618,5752,5315,4340,2911,1165,-712,-2525,-4081,-5219,-5850,-5924,-5447, -4498,-3175,-1600,96,1773,3296,4540,5384,5713,5491,4712,3439,1797,-52,-1915,-3580,-4890,-5720,-6002,-5729, -4943,-3743,-2249,-575,1126,2724,4089,5085,5616,5602,5028,3927,2407,617,-1256,-3016,-4478,-5494,-5987,-5911, -5313,-4257,-2857,-1238,468,2128,3598,4747,5464,5661,5290,4374,2994,1285,-577,-2401,-3983,-5178,-5863,-6001, -5590,-4695,-3410,-1865,-179,1510,3058,4344,5234,5636,5487,4773,3566,1967,135,-1723,-3417,-4778,-5662,-6008, -5796,-5066,-3913,-2450,-800,905,2525,3924,4969,5560,5619,5114,4079,2608,850,-1013,-2787,-4277,-5357,-5899, -5891,-5356,-4350,-2986,-1389,317,1980,3476,4664,5440,5703,5406,4561,3238,1568,-274,-2099,-3718,-4960,-5701, -5900,-5550,-4707,-3464,-1942,-265,1424,3004,4320,5268,5734,5645,5001,3841,2279,475,-1383,-3097,-4488,-5425, -5823,-5671,-4998,-3888,-2451,-816,889,2522,3948,5040,5684,5806,5365,4387,2962,1230,-624,-2418,-3949,-5072, -5674,-5730,-5241,-4278,-2947,-1365,331,2007,3532,4765,5586,5906,5669,4876,3594,1953,119,-1719,-3369,-4650, -5456,-5709,-5414,-4624,-3414,-1909,-243,1457,3053,4408,5396,5908,5881,5286,4174,2648,856,-1010,-2755,-4195, -5186,-5646,-5553,-4928,-3859,-2449,-826,878,2527,3986,5124,5819,6001,5616,4689,3292,1579,-284,-2104,-3674, -4844,-5513,-5624,-5187,-4272,-2973,-1408,282,1972,3516,4790,5655,6031,5852,5117,3878,2263,431,-1422,-3106, -4441,-5303,-5619,-5389,-4642,-3476,-2001,-342,1359,2974,4360,5394,5964,5994,5458,4396,2894,1118,-748,-2519, -4003,-5049,-5577,-5542,-4977,-3956,-2579,-975,725,2387,3869,5043,5789,6023,5697,4829,3476,1789,-72,-1903, -3510,-4738,-5471,-5638,-5271,-4408,-3148,-1610,69,1756,3320,4624,5541,5967,5852,5175,3985,2400,579,-1286, -2993,-4379,-5300,-5677,-5507,-4818,-3693,-2247,-598,1101,2728,4148,5222,5837,5919,5447,4433,2977,1222,-649, -2438,-3961,-5065,-5652,-5673,-5166,-4188,-2843,-1257,436,2103,3611,4824,5621,5909,5646,4823,3515,1845,-9, -1850,-3500,-4777,-5557,-5791,-5470,-4653,-3429,-1915,-239,1453,3040,4374,5338,5816,5753,5129,3990,2432,627, -1241,-2974,-4402,-5380,-5819,-5700,-5060,-3972,-2554,-919,780,2419,3864,4982,5648,5791,5374,4411,2989,1254, -618,-2427,-3989,-5145,-5786,-5876,-5418,-4487,-3174,-1604,91,1766,3299,4548,5395,5739,5525,4762,3496,1852, 13,-1841,-3515,-4838,-5678,-5965,-5702,-4938,-3749,-2257,-593,1107,2707,4066,5077,5614,5611,5047,3960,2442, 655,-1213,-2970,-4439,-5474,-5968,-5910,-5323,-4280,-2889,-1271,431,2086,3562,4717,5439,5636,5276,4374,2999, 1291,-562,-2387,-3976,-5175,-5875,-6020,-5614,-4730,-3458,-1907,-224,1462,3013,4301,5199,5601,5455,4754,3547, 1944,120,-1738,-3434,-4795,-5686,-6036,-5828,-5106,-3960,-2500,-848,858,2471,3875,4928,5523,5580,5079,4050, 2580,817,-1040,-2821,-4319,-5397,-5951,-5948,-5406,-4405,-3041,-1439,264,1933,3427,4625,5401,5662,5366,4525, 3197,1530,-323,-2151,-3768,-5016,-5769,-5967,-5621,-4778,-3539,-2013,-331,1365,2944,4275,5223,5686,5600,4952, 3793,2228,414,-1446,-3169,-4569,-5510,-5916,-5764,-5089,-3977,-2535,-897,808,2446,3879,4977,5630,5750,5309, 4327,2898,1158,-709,-2504,-4043,-5172,-5777,-5831,-5345,-4377,-3040,-1460,251,1930,3456,4690,5516,5839,5599, 4808,3527,1882,38,-1804,-3456,-4747,-5555,-5817,-5522,-4724,-3518,-2006,-334,1373,2972,4328,5321,5838,5805, 5213,4103,2570,775,-1093,-2840,-4276,-5272,-5732,-5636,-5013,-3945,-2538,-914,792,2447,3901,5048,5739,5927, 5538,4614,3225,1511,-354,-2165,-3740,-4913,-5584,-5693,-5262,-4343,-3047,-1482,208,1896,3441,4707,5576,5957, 5776,5047,3812,2202,376,-1479,-3155,-4490,-5359,-5675,-5442,-4699,-3531,-2057,-396,1308,2924,4305,5342,5910, 5943,5408,4350,2863,1085,-781,-2545,-4024,-5070,-5593,-5563,-4997,-3975,-2602,-998,701,2363,3843,5021,5773, 6012,5688,4814,3470,1780,-75,-1905,-3514,-4731,-5459,-5632,-5253,-4393,-3136,-1600,80,1771,3332,4632,5553, 5983,5867,5192,4010,2431,615,-1246,-2952,-4336,-5261,-5645,-5472,-4781,-3655,-2211,-563,1140,2766,4174,5247, 5870,5961,5482,4471,3023,1270,-603,-2389,-3908,-5009,-5597,-5627,-5115,-4144,-2807,-1225,468,2137,3643,4858, 5662,5951,5690,4864,3566,1901,48,-1794,-3433,-4707,-5489,-5729,-5414,-4605,-3386,-1882,-211,1482,3064,4396, 5362,5853,5799,5176,4048,2498,699,-1168,-2906,-4333,-5309,-5757,-5645,-5008,-3928,-2514,-893,810,2452,3896, 5012,5693,5845,5438,4484,3075,1352,-511,-2319,-3874,-5032,-5677,-5772,-5326,-4397,-3093,-1537,157,1838,3375, 4629,5482,5844,5645,4886,3639,2008,172,-1679,-3353,-4672,-5514,-5815,-5557,-4796,-3618,-2134,-475,1221,2832, 4202,5219,5772,5780,5228,4145,2640,866,-1002,-2766,-4229,-5261,-5764,-5716,-5135,-4096,-2709,-1099,604,2262, 3741,4902,5632,5845,5500,4601,3241,1542,-316,-2142,-3735,-4944,-5643,-5800,-5404,-4524,-3252,-1711,-27,1660, 3224,4515,5422,5836,5696,4994,3787,2188,363,-1498,-3200,-4564,-5466,-5820,-5623,-4914,-3769,-2310,-665,1040, 2661,4066,5127,5724,5791,5293,4262,2791,1029,-849,-2632,-4143,-5229,-5790,-5799,-5268,-4269,-2909,-1312,387, 2059,3562,4760,5541,5810,5518,4669,3342,1666,-188,-2031,-3659,-4915,-5682,-5894,-5557,-4724,-3487,-1964,-289, 1415,2995,4326,5274,5742,5664,5017,3851,2283,468,-1404,-3138,-4546,-5503,-5919,-5780,-5115,-4011,-2578,-936, 765,2406,3844,4947,5607,5735,5298,4319,2884,1141,-732,-2539,-4087,-5225,-5844,-5911,-5435,-4480,-3149,-1569, 131,1815,3346,4589,5416,5745,5517,4733,3450,1804,-40,-1885,-3550,-4855,-5675,-5942,-5662,-4873,-3670,-2165, -493,1213,2823,4188,5186,5712,5692,5106,3999,2464,670,-1198,-2950,-4399,-5401,-5871,-5785,-5178,-4112,-2701, -1078,630,2288,3751,4895,5607,5792,5422,4496,3110,1394,-476,-2295,-3879,-5060,-5732,-5849,-5422,-4503,-3207, -1642,52,1738,3292,4569,5444,5832,5659,4930,3698,2082,252,-1600,-3285,-4629,-5494,-5821,-5588,-4847,-3680, -2199,-537,1172,2800,4192,5229,5801,5834,5304,4241,2747,977,-895,-2662,-4147,-5200,-5725,-5693,-5136,-4110, -2733,-1123,577,2245,3734,4923,5676,5918,5595,4720,3374,1676,-189,-2018,-3629,-4856,-5582,-5755,-5377,-4515, -3252,-1707,-25,1666,3236,4538,5460,5895,5781,5107,3923,2336,522,-1344,-3057,-4446,-5375,-5756,-5581,-4895, -3767,-2311,-663,1042,2673,4089,5168,5788,5879,5404,4394,2940,1183,-684,-2475,-3999,-5106,-5692,-5726,-5224, -4253,-2911,-1324,369,2044,3560,4777,5579,5875,5611,4793,3488,1825,-24,-1868,-3511,-4785,-5574,-5811,-5498, -4687,-3464,-1962,-289,1402,2983,4327,5297,5787,5736,5121,3991,2445,640,-1225,-2962,-4396,-5373,-5819,-5702, -5071,-3991,-2573,-941,756,2398,3843,4959,5637,5784,5375,4428,3019,1294,-568,-2371,-3927,-5084,-5732,-5827, -5378,-4452,-3150,-1588,101,1778,3312,4566,5420,5771,5575,4814,3561,1932,97,-1753,-3419,-4740,-5578,-5876, -5623,-4863,-3687,-2209,-552,1143,2745,4114,5129,5674,5679,5125,4052,2545,762,-1100,-2859,-4322,-5354,-5859, -5803,-5220,-4184,-2798,-1189,509,2162,3632,4795,5521,5733,5386,4496,3133,1435,-424,-2243,-3836,-5038,-5740, -5895,-5500,-4620,-3354,-1807,-127,1561,3120,4412,5313,5727,5589,4890,3689,2094,270,-1582,-3277,-4645,-5537, -5896,-5692,-4985,-3847,-2390,-744,963,2582,3989,5056,5660,5733,5245,4219,2756,996,-871,-2648,-4151,-5235, -5795,-5799,-5268,-4281,-2924,-1332,374,2044,3549,4753,5541,5819,5537,4703,3391,1721,-128,-1956,-3583,-4837, -5604,-5818,-5478,-4646,-3412,-1888,-214,1487,3076,4404,5361,5837,5764,5135,3986,2428,626,-1238,-2960,-4368, -5325,-5739,-5603,-4948,-3847,-2419,-783,923,2558,4006,5117,5777,5914,5484,4519,3096,1362,-504,-2298,-3844, -4978,-5605,-5673,-5197,-4247,-2928,-1350,345,2026,3555,4797,5635,5975,5755,4978,3711,2073,229,-1615,-3271, -4577,-5398,-5671,-5396,-4617,-3421,-1926,-261,1447,3047,4416,5418,5945,5932,5348,4247,2724,932,-936,-2687, -4138,-5152,-5635,-5561,-4953,-3899,-2503,-882,821,2474,3937,5084,5797,5988,5615,4700,3311,1599,-271,-2092, -3680,-4871,-5555,-5681,-5268,-4365,-3078,-1526,163,1854,3396,4677,5560,5948,5780,5050,3821,2211,375,-1486, -3179,-4532,-5416,-5755,-5538,-4804,-3650,-2177,-516,1189,2809,4202,5243,5819,5858,5331,4275,2785,1008,-867, -2648,-4142,-5207,-5751,-5733,-5183,-4172,-2806,-1205,499,2170,3659,4849,5614,5864,5543,4672,3326,1634,-235, -2069,-3689,-4928,-5666,-5857,-5494,-4634,-3378,-1848,-166,1528,3098,4409,5341,5786,5679,5013,3833,2250,429, -1440,-3165,-4556,-5493,-5891,-5725,-5041,-3920,-2476,-829,880,2513,3935,5019,5650,5749,5286,4284,2832,1081, -789,-2581,-4111,-5226,-5822,-5862,-5366,-4395,-3060,-1474,229,1911,3426,4650,5464,5766,5509,4696,3398,1737, -112,-1958,-3604,-4881,-5670,-5914,-5602,-4794,-3576,-2072,-399,1301,2888,4233,5211,5711,5667,5058,3927,2389, 588,-1281,-3023,-4453,-5436,-5883,-5775,-5136,-4050,-2631,-1004,704,2351,3802,4924,5602,5763,5356,4410,3008, 1281,-579,-2385,-3945,-5101,-5754,-5850,-5399,-4474,-3164,-1599,93,1779,3322,4581,5439,5798,5603,4846,3594, 1967,131,-1720,-3391,-4713,-5554,-5855,-5602,-4839,-3658,-2174,-512,1192,2797,4175,5192,5744,5758,5207,4126, 2625,843,-1027,-2794,-4266,-5295,-5798,-5748,-5160,-4121,-2730,-1120,579,2237,3709,4869,5607,5820,5477,4589, 3224,1528,-329,-2154,-3753,-4961,-5671,-5829,-5443,-4561,-3287,-1744,-60,1633,3191,4489,5389,5805,5669,4969, 3766,2175,350,-1504,-3206,-4576,-5475,-5837,-5648,-4940,-3808,-2351,-710,990,2613,4020,5080,5689,5764,5276, 4253,2786,1029,-838,-2623,-4131,-5217,-5786,-5799,-5276,-4289,-2935,-1355,340,2005,3506,4706,5489,5764,5487, 4655,3341,1679,-171,-2008,-3639,-4899,-5665,-5888,-5558,-4732,-3500,-1988,-320,1370,2945,4275,5226,5700,5625, 4995,3846,2294,493,-1365,-3089,-4497,-5455,-5878,-5750,-5104,-4014,-2588,-960,737,2373,3811,4918,5580,5711, 5290,4323,2907,1179,-685,-2480,-4022,-5160,-5782,-5852,-5384,-4440,-3127,-1558,129,1804,3329,4572,5409,5751, 5534,4767,3504,1871,40,-1802,-3458,-4757,-5578,-5853,-5578,-4805,-3610,-2114,-454,1245,2850,4213,5219,5745, 5740,5172,4079,2565,786,-1076,-2822,-4273,-5283,-5759,-5687,-5085,-4033,-2639,-1020,678,2334,3802,4957,5674, 5876,5519,4609,3234,1527,-327,-2136,-3720,-4904,-5588,-5719,-5304,-4412,-3128,-1578,106,1795,3348,4634,5526, 5924,5771,5062,3848,2247,428,-1429,-3121,-4476,-5356,-5699,-5487,-4762,-3606,-2140,-485,1214,2837,4236,5286, 5877,5934,5426,4384,2910,1147,-716,-2487,-3982,-5050,-5597,-5591,-5052,-4052,-2688,-1093,605,2271,3770,4967, 5741,6003,5703,4861,3526,1850,-4,-1836,-3456,-4700,-5449,-5646,-5298,-4457,-3214,-1692,-16,1675,3249,4571, 5512,5968,5884,5234,4070,2503,692,-1170,-2887,-4291,-5232,-5638,-5486,-4820,-3716,-2279,-641,1055,2689,4118, 5213,5856,5972,5525,4542,3107,1366,-502,-2297,-3834,-4961,-5574,-5628,-5145,-4192,-2865,-1286,409,2072,3600, 4832,5659,5973,5734,4935,3651,1995,148,-1696,-3349,-4641,-5442,-5702,-5405,-4614,-3416,-1915,-254,1440,3034, 4388,5377,5889,5854,5258,4144,2605,806,-1065,-2811,-4257,-5255,-5721,-5626,-5007,-3942,-2532,-909,795,2440, 3892,5028,5720,5891,5499,4562,3163,1436,-431,-2244,-3820,-4997,-5665,-5776,-5346,-4436,-3144,-1580,112,1795, 3339,4605,5473,5842,5654,4908,3664,2038,200,-1659,-3343,-4680,-5547,-5861,-5625,-4885,-3720,-2241,-586,1113, 2723,4105,5137,5699,5724,5188,4114,2613,828,-1047,-2820,-4304,-5356,-5874,-5839,-5273,-4249,-2876,-1268,434, 2086,3567,4739,5488,5712,5377,4502,3151,1451,-407,-2234,-3845,-5066,-5794,-5968,-5590,-4727,-3466,-1925,-242, 1450,3012,4317,5229,5658,5533,4850,3659,2072,252,-1611,-3319,-4694,-5607,-5979,-5804,-5108,-3982,-2537,-891, 811,2439,3856,4928,5551,5635,5156,4148,2691,930,-933,-2717,-4233,-5327,-5908,-5925,-5408,-4428,-3083,-1492, 203,1871,3376,4593,5388,5682,5413,4595,3290,1626,-225,-2062,-3697,-4961,-5739,-5964,-5634,-4811,-3583,-2066, -389,1309,2892,4231,5191,5677,5609,4983,3845,2296,497,-1362,-3088,-4504,-5469,-5900,-5776,-5129,-4038,-2613, -980,726,2370,3817,4930,5609,5752,5332,4377,2961,1231,-634,-2435,-3986,-5126,-5760,-5833,-5368,-4423,-3111, -1538,159,1839,3366,4623,5472,5821,5612,4849,3590,1963,122,-1722,-3388,-4698,-5526,-5813,-5541,-4764,-3573, -2083,-415,1286,2887,4255,5265,5810,5811,5249,4168,2658,880,-986,-2738,-4194,-5213,-5713,-5642,-5053,-4006, -2618,-1001,703,2360,3833,4992,5719,5924,5570,4667,3297,1596,-263,-2079,-3664,-4859,-5552,-5699,-5296,-4409, -3140,-1595,86,1774,3324,4609,5507,5919,5772,5069,3866,2267,444,-1413,-3109,-4465,-5358,-5711,-5508,-4794, -3652,-2195,-554,1146,2761,4157,5213,5809,5868,5367,4335,2867,1110,-756,-2529,-4033,-5108,-5665,-5669,-5137, -4144,-2793,-1207,492,2151,3644,4835,5609,5875,5580,4735,3417,1745,-103,-1938,-3557,-4802,-5558,-5767,-5427, -4598,-3368,-1849,-185,1505,3076,4396,5341,5805,5723,5075,3917,2355,544,-1320,-3038,-4441,-5389,-5799,-5656, -4996,-3894,-2469,-839,857,2490,3913,5008,5656,5781,5340,4365,2940,1204,-661,-2458,-4000,-5125,-5744,-5806, -5329,-4380,-3059,-1489,200,1877,3401,4634,5465,5790,5559,4773,3495,1854,12,-1832,-3485,-4782,-5594,-5864, -5580,-4795,-3596,-2102,-436,1262,2863,4221,5218,5741,5725,5140,4034,2512,720,-1147,-2899,-4344,-5349,-5822, -5740,-5129,-4071,-2668,-1051,652,2308,3775,4917,5633,5820,5449,4524,3139,1432,-429,-2251,-3830,-5015,-5692, -5819,-5400,-4496,-3200,-1648,51,1744,3297,4578,5458,5848,5686,4959,3731,2121,291,-1567,-3255,-4603,-5470, -5802,-5582,-4844,-3685,-2211,-559,1145,2770,4169,5215,5799,5844,5324,4266,2779,1005,-869,-2646,-4134,-5193, -5725,-5704,-5149,-4130,-2760,-1160,549,2211,3707,4890,5652,5899,5585,4719,3379,1690,-167,-2000,-3615,-4851, -5583,-5772,-5407,-4550,-3295,-1760,-76,1618,3190,4501,5428,5872,5761,5096,3911,2331,513,-1350,-3067,-4452, -5384,-5771,-5608,-4927,-3804,-2356,-717,992,2624,4051,5131,5762,5860,5395,4386,2937,1180,-690,-2485,-4016, -5125,-5710,-5749,-5239,-4266,-2926,-1343,351,2022,3539,4759,5566,5870,5609,4795,3494,1833,-19,-1863,-3513, -4790,-5586,-5825,-5515,-4708,-3484,-1971,-299,1405,2995,4343,5311,5804,5753,5135,4001,2457,652,-1218,-2957, -4391,-5371,-5819,-5710,-5075,-3994,-2577,-943,761,2411,3865,4991,5672,5833,5420,4470,3057,1324,-547,-2356, -3925,-5079,-5728,-5822,-5373,-4447,-3134,-1568,125,1812,3354,4615,5474,5834,5637,4885,3627,1997,156,-1702, -3380,-4707,-5555,-5850,-5598,-4832,-3647,-2158,-492,1207,2817,4194,5210,5763,5773,5218,4139,2632,845,-1020, -2785,-4256,-5292,-5800,-5751,-5172,-4136,-2745,-1129,576,2239,3719,4888,5620,5831,5483,4588,3217,1514,-348, -2174,-3768,-4976,-5681,-5831,-5440,-4558,-3289,-1744,-58,1628,3187,4483,5389,5802,5668,4970,3764,2166,337, -1528,-3229,-4600,-5495,-5855,-5654,-4944,-3800,-2339,-691,1009,2633,4039,5097,5698,5767,5274,4245,2779,1014, -855,-2639,-4147,-5235,-5799,-5804,-5275,-4276,-2914,-1318,381,2050,3551,4754,5534,5803,5511,4671,3348,1672, -181,-2013,-3636,-4891,-5648,-5860,-5522,-4690,-3455,-1930,-253,1440,3026,4352,5304,5771,5693,5053,3900,2331, 522,-1346,-3070,-4482,-5435,-5848,-5704,-5039,-3936,-2503,-866,839,2473,3908,5013,5667,5797,5365,4393,2966, 1224,-642,-2438,-3986,-5121,-5736,-5802,-5324,-4375,-3051,-1471,224,1900,3430,4672,5506,5836,5608,4833,3563, 1918,80,-1765,-3424,-4724,-5545,-5817,-5536,-4752,-3555,-2057,-390,1313,2914,4276,5277,5804,5789,5214,4111, 2589,798,-1069,-2813,-4264,-5273,-5744,-5665,-5059,-4009,-2614,-995,704,2355,3822,4970,5688,5880,5513,4604, 3225,1514,-340,-2158,-3742,-4926,-5611,-5739,-5319,-4427,-3136,-1587,100,1786,3329,4609,5494,5886,5727,5009, 3793,2185,359,-1495,-3180,-4530,-5407,-5741,-5527,-4797,-3646,-2181,-529,1171,2784,4180,5225,5811,5857,5338, 4292,2813,1044,-822,-2596,-4087,-5150,-5693,-5678,-5130,-4126,-2762,-1165,532,2193,3682,4868,5634,5890,5582, 4722,3388,1702,-157,-1987,-3605,-4846,-5588,-5778,-5420,-4573,-3327,-1798,-122,1569,3138,4452,5384,5834,5732, 5069,3900,2323,506,-1357,-3078,-4471,-5414,-5814,-5661,-4982,-3876,-2433,-792,910,2544,3966,5058,5698,5799, 5342,4343,2895,1143,-730,-2532,-4063,-5185,-5790,-5834,-5345,-4383,-3054,-1473,223,1899,3416,4646,5465,5776, 5525,4721,3428,1771,-86,-1932,-3588,-4877,-5683,-5940,-5641,-4842,-3632,-2127,-455,1245,2838,4192,5177,5685, 5644,5046,3920,2380,576,-1297,-3046,-4485,-5483,-5943,-5843,-5219,-4147,-2738,-1109,597,2249,3705,4843,5536, 5708,5310,4371,2972,1245,-626,-2435,-4009,-5176,-5842,-5945,-5509,-4591,-3294,-1727,-36,1652,3193,4467,5342, 5718,5532,4791,3552,1928,89,-1773,-3455,-4787,-5647,-5955,-5710,-4955,-3778,-2296,-632,1074,2689,4071,5102, 5665,5690,5147,4081,2586,810,-1060,-2823,-4300,-5344,-5864,-5822,-5249,-4214,-2831,-1218,490,2155,3641,4813, 5558,5790,5454,4572,3218,1523,-335,-2162,-3759,-4971,-5687,-5848,-5460,-4585,-3316,-1775,-87,1613,3179,4484, 5401,5829,5702,5015,3820,2233,407,-1453,-3161,-4532,-5435,-5803,-5613,-4904,-3764,-2306,-653,1055,2684,4096, 5163,5783,5867,5383,4369,2910,1151,-720,-2504,-4021,-5114,-5687,-5703,-5178,-4184,-2829,-1232,478,2155,3664, 4877,5672,5951,5672,4839,3526,1857,6,-1832,-3465,-4728,-5499,-5721,-5396,-4565,-3334,-1817,-132,1568,3155, 4487,5449,5931,5867,5231,4082,2525,717,-1153,-2891,-4306,-5270,-5701,-5567,-4915,-3818,-2392,-757,948,2591, 4034,5146,5819,5960,5539,4572,3149,1411,-462,-2271,-3826,-4973,-5606,-5685,-5217,-4272,-2948,-1377,322,2004, 3538,4778,5616,5959,5743,4968,3707,2071,226,-1625,-3290,-4607,-5436,-5723,-5450,-4676,-3484,-1990,-326,1378, 2988,4352,5357,5896,5890,5317,4216,2693,904,-967,-2725,-4177,-5198,-5681,-5614,-5012,-3960,-2565,-952,750, 2402,3871,5021,5741,5943,5579,4670,3291,1583,-281,-2101,-3694,-4886,-5576,-5712,-5297,-4400,-3117,-1569,117, 1798,3350,4628,5517,5914,5761,5048,3833,2228,403,-1455,-3150,-4504,-5392,-5736,-5523,-4799,-3643,-2179,-529, 1174,2792,4186,5226,5811,5863,5351,4306,2832,1067,-797,-2570,-4065,-5132,-5678,-5672,-5131,-4130,-2769,-1179, 517,2175,3665,4854,5629,5886,5587,4736,3403,1722,-134,-1966,-3590,-4834,-5583,-5777,-5427,-4583,-3344,-1820, -154,1536,3101,4413,5349,5804,5711,5059,3894,2332,520,-1340,-3063,-4465,-5409,-5813,-5666,-5000,-3898,-2466, -836,856,2487,3914,5000,5644,5761,5310,4330,2893,1154,-711,-2503,-4037,-5163,-5776,-5834,-5356,-4402,-3081, -1516,176,1848,3365,4595,5415,5736,5501,4708,3425,1781,-60,-1900,-3553,-4846,-5655,-5912,-5626,-4840,-3639, -2148,-491,1199,2792,4145,5129,5646,5623,5039,3931,2405,617,-1246,-2994,-4436,-5432,-5904,-5817,-5208,-4146, -2742,-1127,569,2219,3671,4809,5509,5687,5311,4387,2997,1292,-568,-2371,-3942,-5117,-5786,-5902,-5479,-4574, -3287,-1732,-51,1629,3177,4450,5324,5705,5538,4812,3581,1972,145,-1703,-3387,-4722,-5586,-5909,-5679,-4943, -3783,-2307,-655,1043,2657,4042,5081,5653,5690,5166,4111,2623,855,-1011,-2774,-4263,-5314,-5844,-5813,-5258, -4235,-2860,-1253,443,2104,3592,4772,5523,5767,5447,4582,3237,1552,-300,-2125,-3736,-4957,-5686,-5867,-5497, -4642,-3381,-1843,-161,1531,3107,4415,5344,5780,5669,5001,3820,2235,422,-1439,-3151,-4535,-5458,-5838,-5662, -4977,-3848,-2398,-750,954,2586,4008,5095,5721,5824,5361,4357,2909,1156,-713,-2504,-4031,-5138,-5730,-5758, -5252,-4277,-2935,-1342,358,2036,3554,4779,5590,5889,5631,4823,3521,1861,16,-1826,-3467,-4745,-5536,-5772, -5459,-4645,-3426,-1913,-236,1463,3053,4402,5379,5878,5830,5222,4090,2541,739,-1131,-2869,-4300,-5277,-5721, -5610,-4972,-3894,-2476,-850,852,2498,3953,5075,5764,5922,5521,4575,3162,1433,-434,-2244,-3810,-4974,-5621, -5712,-5261,-4332,-3021,-1453,239,1920,3457,4715,5571,5923,5728,4973,3722,2093,253,-1600,-3270,-4601,-5448, -5750,-5498,-4738,-3564,-2083,-420,1280,2885,4258,5275,5824,5830,5269,4189,2677,888,-982,-2746,-4218,-5248, -5755,-5702,-5121,-4084,-2696,-1088,611,2262,3736,4897,5629,5839,5490,4593,3226,1521,-349,-2172,-3772,-4983, -5690,-5841,-5446,-4563,-3292,-1747,-61,1622,3173,4461,5359,5768,5625,4926,3722,2123,297,-1564,-3265,-4634, -5541,-5902,-5703,-4991,-3849,-2385,-731,973,2594,3998,5060,5658,5719,5223,4192,2726,965,-904,-2680,-4177, -5267,-5824,-5828,-5299,-4308,-2952,-1363,341,2004,3505,4712,5500,5772,5487,4647,3332,1655,-193,-2030,-3654, -4907,-5665,-5876,-5537,-4701,-3465,-1941,-265,1430,3007,4332,5287,5761,5686,5055,3903,2351,544,-1323,-3047, -4452,-5406,-5824,-5683,-5022,-3921,-2491,-856,848,2483,3915,5020,5677,5806,5376,4410,2994,1263,-600,-2392, -3934,-5063,-5687,-5759,-5285,-4339,-3022,-1450,243,1921,3441,4688,5523,5859,5635,4861,3589,1952,112,-1732, -3386,-4684,-5502,-5774,-5493,-4713,-3520,-2031,-373,1321,2913,4267,5267,5795,5782,5208,4111,2596,805,-1057, -2809,-4258,-5269,-5749,-5671,-5066,-4014,-2621,-1000,692,2337,3799,4940,5653,5843,5473,4563,3185,1477,-378, -2195,-3773,-4958,-5644,-5773,-5359,-4461,-3178,-1632,51,1735,3279,4552,5439,5829,5666,4947,3727,2123,292, -1556,-3243,-4589,-5467,-5807,-5588,-4860,-3708,-2243,-593,1105,2720,4112,5158,5745,5794,5285,4240,2760,994, -878,-2654,-4145,-5211,-5752,-5735,-5187,-4179,-2811,-1216,482,2142,3632,4822,5591,5844,5537,4684,3353,1678, -174,-2007,-3620,-4865,-5607,-5808,-5453,-4607,-3363,-1836,-153,1541,3118,4434,5368,5825,5732,5073,3908,2339, 526,-1336,-3056,-4451,-5387,-5795,-5639,-4965,-3855,-2424,-785,917,2551,3976,5072,5718,5831,5380,4391,2956, 1210,-657,-2451,-3984,-5110,-5715,-5769,-5282,-4322,-2995,-1417,278,1950,3474,4702,5526,5846,5610,4815,3535, 1886,42,-1805,-3461,-4753,-5561,-5829,-5535,-4740,-3533,-2031,-367,1335,2926,4281,5270,5780,5750,5158,4035, 2501,709,-1159,-2905,-4345,-5341,-5809,-5718,-5102,-4033,-2628,-1006,700,2350,3810,4944,5645,5824,5433,4498, 3112,1389,-479,-2294,-3869,-5044,-5715,-5830,-5395,-4481,-3180,-1625,67,1754,3303,4569,5442,5813,5636,4895, 3656,2037,201,-1657,-3341,-4678,-5544,-5866,-5632,-4884,-3714,-2235,-572,1135,2751,4140,5168,5736,5769,5231, 4160,2673,888,-980,-2751,-4232,-5283,-5804,-5777,-5209,-4187,-2800,-1193,513,2181,3671,4848,5603,5838,5514, 4634,3280,1584,-278,-2112,-3719,-4945,-5670,-5843,-5468,-4599,-3333,-1793,-108,1591,3161,4469,5388,5825,5711, 5034,3845,2266,445,-1422,-3139,-4525,-5448,-5833,-5659,-4961,-3834,-2376,-732,981,2617,4041,5118,5744,5831, 5363,4351,2889,1135,-732,-2528,-4051,-5161,-5748,-5781,-5275,-4296,-2950,-1360,343,2020,3536,4759,5565,5861, 5593,4773,3466,1799,-57,-1901,-3548,-4824,-5608,-5842,-5529,-4708,-3485,-1974,-304,1397,2990,4334,5302,5800, 5743,5125,3986,2429,623,-1249,-2993,-4423,-5400,-5845,-5728,-5087,-4000,-2572,-936,770,2417,3865,4983,5655, 5803,5388,4426,3013,1282,-592,-2398,-3962,-5116,-5759,-5847,-5397,-4459,-3147,-1572,124,1810,3350,4605,5455, 5809,5597,4833,3568,1926,81,-1774,-3448,-4765,-5600,-5889,-5623,-4850,-3661,-2166,-504,1206,2812,4186,5195, 5742,5742,5178,4087,2570,777,-1097,-2859,-4327,-5353,-5849,-5782,-5193,-4138,-2741,-1117,588,2246,3722,4879, 5600,5811,5447,4553,3178,1469,-395,-2214,-3814,-5015,-5719,-5861,-5461,-4570,-3283,-1727,-33,1661,3222,4510, 5407,5811,5661,4952,3741,2133,309,-1550,-3248,-4611,-5507,-5853,-5649,-4932,-3781,-2318,-665,1038,2661,4070, 5124,5727,5793,5294,4262,2785,1019,-853,-2635,-4145,-5220,-5780,-5778,-5244,-4241,-2878,-1276,422,2092,3594, 4793,5569,5837,5547,4709,3388,1711,-140,-1980,-3606,-4861,-5627,-5832,-5491,-4657,-3414,-1884,-204,1492,3071, 4398,5348,5811,5734,5091,3940,2376,569,-1289,-3012,-4422,-5373,-5789,-5647,-4988,-3886,-2451,-811,893,2535, 3975,5077,5733,5857,5425,4452,3023,1287,-577,-2379,-3918,-5053,-5671,-5729,-5249,-4296,-2965,-1391,305,1982, 3505,4743,5577,5907,5686,4907,3633,1989,148,-1695,-3351,-4657,-5468,-5741,-5452,-4665,-3460,-1960,-280,1417, 3019,4380,5373,5893,5871,5292,4187,2667,876,-987,-2733,-4181,-5190,-5667,-5582,-4972,-3910,-2504,-879,825, 2479,3944,5083,5793,5978,5605,4682,3295,1582,-281,-2097,-3673,-4863,-5537,-5660,-5237,-4340,-3048,-1491,200, 1881,3434,4708,5593,5980,5817,5094,3864,2252,421,-1441,-3134,-4483,-5365,-5696,-5471,-4742,-3579,-2104,-449, 1255,2868,4260,5301,5876,5922,5403,4350,2866,1092,-780,-2554,-4052,-5121,-5662,-5652,-5102,-4096,-2733,-1131, 572,2231,3724,4912,5675,5923,5606,4748,3408,1712,-143,-1981,-3602,-4847,-5597,-5790,-5433,-4589,-3344,-1816, -140,1550,3116,4427,5360,5813,5711,5057,3880,2302,478,-1394,-3118,-4517,-5466,-5860,-5709,-5031,-3924,-2485, -846,857,2485,3908,4997,5637,5741,5287,4289,2851,1099,-772,-2571,-4108,-5234,-5843,-5890,-5396,-4443,-3107, -1524,174,1850,3367,4597,5417,5725,5473,4673,3380,1723,-128,-1973,-3620,-4903,-5702,-5951,-5651,-4853,-3639, -2131,-460,1245,2837,4193,5173,5683,5645,5042,3918,2384,578,-1289,-3034,-4468,-5457,-5913,-5813,-5172,-4096, -2678,-1043,668,2320,3778,4908,5604,5774,5377,4441,3036,1316,-552,-2363,-3933,-5097,-5757,-5854,-5409,-4476, -3167,-1597,106,1797,3347,4621,5486,5855,5669,4916,3670,2042,205,-1650,-3329,-4654,-5509,-5816,-5569,-4808, -3628,-2133,-463,1249,2867,4255,5284,5846,5864,5318,4245,2737,951,-921,-2691,-4168,-5211,-5724,-5666,-5090, -4052,-2661,-1044,668,2333,3814,4989,5732,5957,5615,4729,3368,1671,-190,-2019,-3633,-4849,-5569,-5732,-5348, -4469,-3199,-1650,44,1747,3311,4607,5524,5949,5813,5120,3921,2324,499,-1371,-3084,-4460,-5368,-5743,-5553, -4851,-3711,-2258,-608,1103,2730,4144,5216,5829,5907,5416,4392,2924,1163,-718,-2509,-4027,-5122,-5700,-5720, -5202,-4212,-2860,-1266,434,2110,3607,4818,5609,5885,5608,4773,3458,1789,-68,-1917,-3562,-4831,-5610,-5836, -5514,-4683,-3451,-1931,-252,1449,3025,4356,5305,5782,5710,5069,3921,2364,551,-1316,-3048,-4467,-5435,-5871, -5745,-5101,-4004,-2578,-944,758,2400,3842,4947,5609,5746,5315,4344,2920,1179,-693,-2504,-4060,-5200,-5834, -5913,-5441,-4497,-3178,-1606,86,1762,3285,4529,5376,5707,5490,4714,3445,1805,-38,-1898,-3563,-4875,-5707, -5993,-5724,-4941,-3744,-2254,-581,1118,2715,4080,5077,5611,5600,5028,3930,2413,626,-1245,-3004,-4467,-5484, -5978,-5906,-5310,-4257,-2859,-1241,462,2122,3592,4744,5461,5657,5289,4374,2997,1288,-571,-2393,-3975,-5171, -5859,-5998,-5589,-4695,-3410,-1866,-181,1507,3055,4342,5232,5633,5486,4772,3568,1967,137,-1722,-3415,-4776, -5661,-6006,-5795,-5066,-3913,-2449,3,12,-158,-67,246,642,1316,1816,2151,2091,1305,46,-1767,-3817, -5667,-7047,-7526,-6959,-5234,-2694,138,2772,4520,5107,4476,2746,457,-2048,-4231,-5849,-6567,-6261,-5179,-3439, -1400,638,2631,4250,5256,5413,4446,2819,874,-1023,-2557,-3677,-3928,-3188,-1878,-35,2241,4796,6835,7668, 7558,6721,5179,3544,1898,286,-1231,-2106,-2030,-1211,332,2512,4472,5516,5399,4708,3890,2794,1198,-837, -2880,-4527,-5472,-5666,-5208,-4026,-2228,-386,877,1135,1031,1182,1243,625,-813,-2733,-4796,-6692,-7683,-7435, -6058,-3922,-1541,625,2420,3784,4500,4284,3090,910,-1766,-4230,-5830,-6250,-5588,-3995,-1780,647,3067,5213, 6616,6878,5823,3800,1466,-882,-2965,-4597,-5297,-4844,-3490,-1634,337,2063,3553,4730,5335,5169,4248,2700, 877,-904,-2292,-3195,-3527,-3128,-2176,-717,1227,3434,5358,6540,6625,5787,4178,2088,-37,-1954,-3455,-4092, -3724,-2554,-926,870,2663,4199,5168,5504,5092,3940,2002,-421,-2786,-4713,-5828,-5821,-4759,-3112,-1158,852, 2641,3868,4219,3656,2356,384,-1720,-3569,-5042,-5965,-6215,-5618,-4148,-2096,168,2134,3491,4255,4265,3482, 2056,129,-1792,-3314,-4305,-4509,-3968,-2769,-916,1254,3407,5132,6015,6036,5249,3758,1782,-346,-2305,-3864, -4715,-4595,-3550,-1835,249,2360,4130,5336,5687,5067,3656,1643,-631,-2743,-4425,-5258,-5164,-4143,-2327,-107, 2110,4040,5302,5797,5359,4055,2125,-117,-2279,-3942,-4903,-5035,-4372,-3021,-1106,1047,2969,4426,5124,4960, 3967,2256,73,-2264,-4378,-5831,-6374,-5928,-4606,-2651,-372,1860,3573,4514,4555,3618,1968,-249,-2580,-4612, -6038,-6607,-6212,-5000,-3124,-916,1294,3164,4404,4735,4188,2790,866,-1265,-3276,-4774,-5533,-5506,-4546,-2830, -653,1641,3624,5035,5686,5447,4377,2615,443,-1756,-3634,-4775,-5044,-4424,-2992,-941,1279,3331,4836,5628, 5528,4575,2863,753,-1470,-3391,-4739,-5214,-4780,-3509,-1660,484,2562,4282,5351,5546,4893,3404,1317,-975, -3114,-4748,-5604,-5621,-4728,-3126,-1080,1095,3012,4333,4838,4382,3074,1114,-1197,-3446,-5227,-6268,-6339,-5520, -3892,-1757,549,2709,4343,5148,5022,3979,2234,119,-2010,-3767,-4819,-5011,-4333,-2887,-919,1274,3333,4918, 5813,5795,4906,3261,1135,-1093,-3027,-4388,-4929,-4651,-3598,-1913,116,2186,3934,5020,5280,4647,3198,1163, -1155,-3344,-5032,-5961,-5969,-5099,-3501,-1438,720,2651,3981,4497,4042,2729,723,-1576,-3818,-5586,-6583,-6650, -5802,-4146,-2024,273,2352,3915,4748,4659,3658,1959,-151,-2263,-4052,-5215,-5515,-4936,-3584,-1629,582,2713, 4412,5408,5597,4875,3383,1382,-799,-2793,-4230,-4891,-4607,-3445,-1582,649,2932,4845,6124,6536,6016,4667, 2703,459,-1655,-3321,-4230,-4242,-3388,-1800,258,2427,4351,5729,6318,5986,4753,2863,588,-1703,-3581,-4768, -5072,-4490,-3120,-1191,929,2879,4324,5031,4870,3818,2029,-157,-2430,-4420,-5791,-6297,-5898,-4708,-2919,-827, 1234,2971,4026,4250,3565,2132,134,-2051,-4037,-5494,-6151,-5906,-4748,-2934,-727,1527,3468,4814,5306,4873, 3552,1613,-631,-2797,-4481,-5427,-5468,-4631,-3020,-923,1326,3340,4863,5584,5391,4311,2509,326,-1878,-3751, -4907,-5188,-4560,-3113,-1103,1146,3271,4912,5830,5868,5002,3356,1252,-955,-2922,-4288,-4856,-4537,-3389,-1599, 515,2660,4467,5632,5947,5358,3932,1899,-379,-2513,-4159,-5039,-5055,-4177,-2582,-532,1638,3558,4898,5455, 5074,3858,1980,-231,-2451,-4226,-5311,-5500,-4797,-3298,-1291,972,3048,4647,5508,5446,4464,2745,578,-1663, -3579,-4874,-5283,-4794,-3483,-1571,630,2780,4500,5518,5670,4852,3254,1120,-1166,-3250,-4768,-5485,-5275,-4214, -2483,-379,1751,3553,4721,5042,4463,3063,1049,-1258,-3457,-5167,-6128,-6180,-5342,-3755,-1704,486,2458,3894, 4529,4268,3125,1265,-990,-3232,-5090,-6235,-6483,-5827,-4346,-2297,-34,2077,3720,4593,4569,3612,1921,-217, -2428,-4354,-5648,-6086,-5597,-4271,-2328,-50,2190,4015,5131,5379,4713,3225,1167,-1099,-3167,-4683,-5406,-5200, -4122,-2329,-157,2086,4033,5360,5859,5426,4152,2252,27,-2108,-3773,-4712,-4750,-3909,-2304,-191,2083,4129, 5657,6392,6194,5088,3284,1105,-1105,-2954,-4109,-4401,-3771,-2321,-294,2003,4206,5899,6871,6920,6055,4396, 2255,-6,-1991,-3385,-3928,-3531,-2325,-476,1686,3866,5647,6750,6980,6304,4785,2703,379,-1805,-3438,-4309, -4286,-3353,-1738,308,2455,4333,5629,6077,5602,4265,2260,-71,-2350,-4188,-5318,-5535,-4869,-3405,-1429,737, 2710,4179,4870,4677,3543,1703,-577,-2909,-4892,-6216,-6662,-6199,-4926,-3033,-868,1203,2855,3797,3858,3023, 1372,-805,-3105,-5181,-6677,-7347,-7091,-5966,-4192,-2033,144,1993,3182,3507,2938,1545,-445,-2687,-4813,-6437, -7306,-7262,-6350,-4692,-2573,-347,1661,3099,3717,3421,2229,384,-1843,-4045,-5838,-6894,-7085,-6353,-4833,-2782, -504,1614,3251,4127,4089,3155,1463,-647,-2846,-4730,-5990,-6359,-5868,-4519,-2567,-304,1890,3699,4784,5021, 4328,2856,843,-1350,-3313,-4738,-5375,-5096,-3981,-2165,8,2245,4189,5503,5968,5518,4246,2315,125,-1994, -3612,-4484,-4492,-3606,-1954,143,2386,4434,5964,6716,6546,5502,3790,1641,-496,-2296,-3418,-3679,-3032,-1620, 400,2639,4766,6418,7329,7352,6476,4804,2685,411,-1571,-2976,-3547,-3208,-2035,-256,1888,3970,5701,6791, 7009,6332,4831,2729,462,-1657,-3254,-4085,-4005,-3062,-1401,647,2784,4665,5946,6418,5963,4655,2718,461, -1760,-3510,-4578,-4766,-4055,-2575,-600,1571,3549,5050,5763,5602,4538,2743,531,-1706,-3643,-4892,-5312,-4803, -3498,-1606,577,2690,4343,5314,5388,4548,2915,767,-1499,-3542,-5002,-5652,-5386,-4287,-2529,-425,1705,3517, 4665,4958,4365,2905,917,-1370,-3495,-5159,-6054,-6089,-5251,-3693,-1682,423,2301,3642,4177,3783,2557,664, -1592,-3815,-5652,-6801,-7074,-6464,-5010,-3026,-802,1281,2893,3757,3716,2774,1090,-1049,-3267,-5167,-6426,-6851, -6358,-5024,-3079,-827,1390,3215,4339,4600,3943,2499,499,-1674,-3665,-5099,-5752,-5534,-4419,-2631,-485,1745, 3653,4952,5406,4950,3638,1703,-549,-2688,-4375,-5333,-5376,-4550,-2975,-873,1340,3349,4833,5509,5258,4106, 2273,43,-2200,-4063,-5233,-5559,-4953,-3579,-1639,579,2672,4294,5208,5209,4301,2645,491,-1750,-3740,-5129, -5677,-5317,-4118,-2281,-115,2037,3826,4943,5209,4551,3088,1046,-1207,-3288,-4829,-5595,-5421,-4353,-2591,-406, 1865,3864,5274,5866,5503,4292,2430,261,-1886,-3582,-4516,-4579,-3757,-2152,-57,2213,4301,5842,6624,6500, 5447,3703,1519,-692,-2590,-3845,-4229,-3710,-2387,-463,1719,3803,5460,6377,6425,5576,3897,1728,-598,-2681, -4190,-4895,-4662,-3589,-1827,268,2394,4183,5319,5581,4899,3397,1312,-1068,-3251,-4928,-5845,-5851,-4972,-3333, -1255,929,2895,4271,4828,4460,3242,1345,-870,-3066,-4818,-5858,-6010,-5260,-3724,-1657,610,2717,4349,5216, 5184,4247,2576,463,-1722,-3566,-4822,-5198,-4679,-3323,-1392,863,3049,4818,5857,6043,5300,3751,1657,-611, -2662,-4147,-4856,-4616,-3533,-1755,365,2552,4420,5649,6000,5444,4037,2001,-320,-2496,-4212,-5173,-5241,-4416, -2848,-833,1324,3240,4624,5210,4865,3654,1786,-496,-2757,-4648,-5828,-6143,-5542,-4162,-2197,-22,2030,3608, 4474,4406,3468,1769,-371,-2625,-4564,-5917,-6397,-5968,-4695,-2804,-547,1652,3494,4644,4920,4272,2832,826, -1351,-3352,-4821,-5502,-5280,-4176,-2377,-181,2077,4045,5392,5921,5505,4252,2384,173,-1956,-3614,-4573,-4654, -3877,-2314,-270,1917,3906,5360,6006,5774,4616,2774,533,-1739,-3676,-4925,-5311,-4820,-3527,-1649,496,2529, 4111,4995,4999,4061,2375,173,-2110,-4152,-5622,-6216,-5929,-4825,-3038,-906,1226,3001,4127,4423,3828,2379, 378,-1870,-3946,-5513,-6334,-6240,-5267,-3590,-1457,759,2716,4097,4682,4327,3165,1308,-867,-2999,-4709,-5701, -5815,-5041,-3496,-1423,833,2929,4509,5348,5287,4315,2629,497,-1680,-3539,-4775,-5163,-4668,-3346,-1448,751, 2870,4568,5573,5692,4922,3363,1269,-969,-3035,-4505,-5209,-5009,-3967,-2229,-142,1981,3784,4961,5291,4707, 3301,1304,-967,-3134,-4807,-5746,-5781,-4951,-3379,-1332,833,2793,4194,4788,4499,3315,1473,-707,-2894,-4676, -5781,-6021,-5357,-3935,-1950,285,2390,4011,4926,4945,4073,2443,344,-1821,-3712,-4996,-5432,-4987,-3704,-1794, 436,2640,4462,5583,5870,5240,3800,1792,-402,-2395,-3880,-4579,-4375,-3336,-1609,545,2721,4624,5927,6404, 5984,4701,2770,570,-1615,-3317,-4298,-4414,-3637,-2110,-97,2087,4044,5509,6193,5972,4868,3073,855,-1385, -3269,-4497,-4873,-4334,-3008,-1090,1069,3146,4761,5678,5695,4833,3195,1071,-1177,-3164,-4587,-5206,-4902,-3743, -1932,224,2414,4255,5413,5742,5149,3737,1757,-486,-2529,-4117,-4891,-4794,-3819,-2127,36,2252,4236,5615, 6199,5834,4630,2766,580,-1588,-3330,-4359,-4508,-3789,-2301,-275,1920,3931,5487,6249,6115,5095,3349,1151, -1098,-3020,-4343,-4782,-4331,-3063,-1212,944,3056,4731,5716,5819,4978,3385,1223,-1088,-3158,-4662,-5377,-5163, -4106,-2376,-266,1882,3697,4885,5229,4667,3240,1232,-1062,-3221,-4899,-5803,-5830,-4945,-3375,-1303,876,2819, 4225,4842,4543,3357,1514,-724,-2949,-4779,-5889,-6140,-5482,-4045,-2038,175,2275,3872,4721,4690,3738,2029, -103,-2353,-4296,-5624,-6124,-5699,-4440,-2576,-369,1778,3548,4608,4813,4113,2593,522,-1730,-3785,-5291,-6026, -5835,-4793,-3032,-917,1305,3211,4503,4952,4476,3163,1240,-1020,-3156,-4838,-5786,-5845,-5017,-3430,-1357,855, 2888,4358,5086,4850,3728,1944,-239,-2420,-4278,-5418,-5718,-5104,-3706,-1732,481,2606,4250,5187,5220,4345, 2688,571,-1669,-3628,-5008,-5526,-5152,-3951,-2083,84,2279,4090,5204,5491,4851,3391,1373,-889,-2977,-4525, -5331,-5218,-4230,-2531,-404,1792,3702,5054,5563,5143,3906,1991,-230,-2421,-4160,-5181,-5312,-4566,-3051,-1040, 1181,3187,4699,5437,5265,4186,2427,222,-2012,-3904,-5140,-5538,-5007,-3702,-1787,401,2505,4175,5123,5202, 4404,2793,686,-1542,-3557,-4999,-5642,-5368,-4228,-2461,-315,1875,3682,4889,5214,4642,3262,1289,-964,-3055, -4661,-5493,-5466,-4560,-2908,-811,1380,3352,4732,5319,4968,3764,1911,-297,-2496,-4269,-5346,-5560,-4874,-3415, -1451,770,2793,4353,5179,5090,4118,2394,253,-1988,-3891,-5190,-5634,-5174,-3904,-2038,129,2267,4017,5056, 5246,4541,3031,988,-1235,-3252,-4711,-5399,-5175,-4082,-2333,-177,2002,3887,5180,5620,5156,3848,1933,-267, -2392,-4022,-4905,-4932,-4063,-2483,-402,1782,3796,5233,5927,5684,4576,2790,622,-1566,-3370,-4525,-4808,-4195, -2814,-862,1330,3408,5029,5917,5926,5056,3410,1321,-898,-2843,-4204,-4751,-4394,-3194,-1381,776,2895,4653, 5767,6003,5341,3877,1820,-417,-2493,-4050,-4832,-4732,-3764,-2098,-16,2145,4038,5333,5828,5379,4129,2222, 3,-2176,-3902,-4915,-5055,-4325,-2832,-842,1343,3320,4818,5542,5375,4312,2551,386,-1834,-3729,-4962,-5351, -4863,-3560,-1667,514,2617,4260,5224,5310,4485,2884,781,-1478,-3459,-4901,-5550,-5274,-4158,-2396,-299,1848, 3652,4819,5130,4550,3130,1144,-1118,-3233,-4846,-5720,-5724,-4818,-3209,-1154,1011,2950,4302,4905,4554,3349, 1505,-715,-2901,-4711,-5802,-6028,-5373,-3914,-1932,260,2311,3875,4684,4620,3658,1957,-176,-2391,-4291,-5574, -6023,-5567,-4283,-2415,-217,1939,3684,4728,4920,4214,2708,639,-1543,-3578,-5041,-5739,-5534,-4464,-2704,-567, 1645,3507,4812,5258,4762,3477,1558,-670,-2788,-4410,-5346,-5373,-4530,-2933,-851,1374,3374,4848,5539,5304, 4175,2371,174,-1992,-3822,-4928,-5224,-4574,-3165,-1210,1015,3107,4717,5636,5634,4753,3093,982,-1236,-3169, -4532,-5037,-4658,-3417,-1582,613,2775,4585,5702,5995,5343,3889,1862,-363,-2442,-3965,-4742,-4594,-3591,-1897, 235,2418,4358,5685,6167,5743,4469,2539,309,-1872,-3618,-4614,-4740,-3997,-2478,-474,1729,3725,5193,5891, 5700,4578,2794,579,-1662,-3570,-4812,-5194,-4681,-3356,-1451,729,2826,4465,5396,5454,4621,2993,868,-1368, -3384,-4831,-5453,-5153,-4013,-2219,-72,2104,3929,5105,5411,4812,3402,1392,-869,-2954,-4562,-5395,-5369,-4429, -2779,-672,1526,3479,4856,5407,5035,3807,1925,-292,-2508,-4248,-5330,-5532,-4841,-3385,-1380,792,2829,4339, 5124,4993,3965,2197,16,-2229,-4159,-5459,-5909,-5468,-4193,-2331,-161,1955,3653,4642,4770,3986,2419,317, -1948,-3984,-5466,-6156,-5920,-4840,-3077,-947,1235,3099,4331,4705,4181,2830,873,-1383,-3491,-5127,-6017,-6029, -5147,-3523,-1451,771,2753,4180,4824,4553,3429,1614,-564,-2729,-4535,-5640,-5863,-5215,-3779,-1772,441,2533, 4131,5016,5002,4098,2423,320,-1883,-3807,-5125,-5621,-5195,-3941,-2092,109,2271,4044,5124,5338,4667,3199, 1164,-1057,-3088,-4603,-5320,-5158,-4145,-2441,-329,1856,3745,5038,5504,5061,3766,1856,-355,-2500,-4161,-5130, -5199,-4407,-2851,-823,1369,3373,4863,5561,5380,4306,2537,377,-1807,-3640,-4810,-5141,-4552,-3206,-1263,930, 3034,4677,5643,5693,4850,3276,1175,-1019,-2956,-4335,-4898,-4530,-3380,-1565,586,2754,4575,5717,6022,5441, 4019,2038,-180,-2245,-3806,-4618,-4535,-3567,-1923,173,2344,4259,5604,6141,5758,4540,2661,465,-1734,-3498, -4538,-4728,-4028,-2566,-597,1573,3564,5060,5785,5658,4605,2860,681,-1552,-3493,-4801,-5256,-4805,-3567,-1734, 413,2469,4141,5110,5157,4374,2773,679,-1555,-3614,-5062,-5755,-5548,-4501,-2745,-671,1491,3303,4498,4856, 4312,2946,993,-1241,-3340,-4968,-5861,-5876,-5014,-3423,-1371,825,2807,4229,4842,4579,3427,1607,-549,-2725, -4499,-5603,-5851,-5207,-3799,-1838,353,2429,4018,4891,4860,3955,2283,177,-2044,-3958,-5276,-5765,-5360,-4136, -2314,-138,1984,3737,4797,5021,4328,2848,816,-1405,-3433,-4938,-5692,-5520,-4493,-2790,-686,1503,3409,4705, 5178,4730,3473,1568,-626,-2757,-4429,-5369,-5450,-4647,-3084,-1031,1187,3197,4690,5417,5242,4171,2454,296, -1866,-3698,-4862,-5161,-4579,-3220,-1257,950,3057,4712,5670,5724,4913,3303,1253,-969,-2922,-4285,-4836,-4482, -3296,-1492,690,2872,4696,5856,6148,5557,4156,2155,-79,-2140,-3708,-4507,-4431,-3484,-1831,273,2454,4401, 5735,6267,5879,4637,2747,544,-1642,-3385,-4441,-4629,-3926,-2456,-462,1725,3731,5241,5978,5852,4793,3034, 868,-1389,-3311,-4582,-5024,-4572,-3296,-1437,723,2813,4478,5436,5535,4707,3129,992,-1278,-3314,-4800,-5482, -5244,-4166,-2404,-279,1841,3679,4873,5210,4651,3257,1276,-978,-3105,-4749,-5608,-5609,-4732,-3105,-1039,1142, 3109,4509,5134,4821,3668,1830,-366,-2551,-4338,-5427,-5657,-5004,-3556,-1558,640,2714,4297,5131,5083,4146, 2450,314,-1913,-3854,-5153,-5634,-5204,-3940,-2079,116,2224,3970,5024,5216,4499,2987,925,-1317,-3363,-4854, -5579,-5401,-4362,-2637,-542,1668,3515,4784,5205,4710,3393,1466,-781,-2929,-4587,-5566,-5618,-4830,-3248,-1208, 978,2967,4424,5088,4865,3724,1913,-270,-2470,-4311,-5465,-5789,-5195,-3820,-1886,322,2404,4005,4907,4903, 4010,2366,246,-1975,-3917,-5290,-5827,-5460,-4262,-2428,-277,1858,3654,4759,5024,4399,2949,940,-1291,-3342, -4868,-5638,-5513,-4521,-2823,-703,1479,3385,4727,5249,4852,3611,1727,-472,-2631,-4347,-5343,-5462,-4714,-3178, -1171,1033,3031,4563,5285,5132,4074,2329,162,-2033,-3903,-5141,-5505,-4972,-3663,-1759,427,2529,4178,5124, 5231,4425,2844,776,-1433,-3414,-4839,-5462,-5166,-4012,-2241,-92,2075,3902,5097,5439,4876,3530,1571,-634, -2700,-4270,-5105,-5055,-4132,-2489,-380,1813,3790,5184,5788,5465,4306,2491,322,-1827,-3568,-4616,-4800,-4092, -2649,-664,1531,3560,5109,5926,5845,4881,3173,1031,-1170,-3072,-4378,-4834,-4418,-3163,-1338,795,2878,4574, 5558,5719,4956,3423,1353,-901,-2956,-4441,-5181,-4983,-3978,-2285,-201,1946,3773,4980,5359,4856,3518,1558, -666,-2802,-4466,-5386,-5441,-4625,-3058,-1039,1127,3078,4493,5140,4904,3792,2007,-179,-2347,-4148,-5305,-5583, -4985,-3614,-1666,506,2571,4174,5051,5068,4184,2553,470,-1739,-3663,-5009,-5558,-5194,-3982,-2181,-39,2111, 3865,4974,5224,4572,3141,1130,-1072,-3104,-4637,-5389,-5265,-4299,-2610,-510,1658,3565,4854,5365,4950,3706, 1834,-349,-2488,-4167,-5160,-5268,-4502,-3015,-989,1208,3209,4710,5466,5328,4291,2559,415,-1751,-3611,-4817, -5177,-4639,-3321,-1398,789,2898,4552,5535,5643,4852,3276,1219,-991,-2951,-4354,-4953,-4656,-3521,-1738,400, 2557,4405,5583,5894,5359,3967,2014,-203,-2294,-3872,-4725,-4690,-3782,-2153,-98,2066,3981,5359,5922,5580, 4392,2541,321,-1857,-3646,-4731,-4955,-4313,-2881,-927,1239,3246,4770,5533,5434,4428,2683,546,-1697,-3631, -4950,-5418,-4975,-3751,-1921,236,2328,4031,5035,5181,4425,2894,817,-1416,-3455,-4922,-5617,-5438,-4370,-2638, -544,1649,3498,4752,5173,4690,3346,1432,-786,-2895,-4526,-5431,-5478,-4627,-3045,-970,1226,3215,4666,5318, 5093,3959,2159,2,-2192,-3993,-5120,-5387,-4776,-3357,-1411,808,2853,4468,5356,5352,4450,2796,671,-1541, -3494,-4853,-5354,-4986,-3782,-1964,182,2317,4099,5176,5419,4752,3277,1262,-975,-3042,-4561,-5321,-5189,-4160, -2477,-359,1807,3727,5023,5505,5097,3840,1943,-248,-2380,-4066,-5005,-5095,-4301,-2747,-696,1532,3555,5049, 5774,5612,4559,2814,654,-1520,-3372,-4580,-4897,-4328,-2988,-1070,1124,3223,4862,5801,5857,5020,3397,1281, -940,-2938,-4344,-4975,-4697,-3558,-1796,323,2453,4212,5357,5615,4974,3532,1512,-760,-2867,-4494,-5334,-5322, -4431,-2796,-737,1398,3306,4620,5143,4736,3479,1590,-635,-2835,-4604,-5669,-5868,-5181,-3725,-1753,432,2436, 3952,4720,4598,3584,1866,-313,-2514,-4407,-5671,-6067,-5611,-4317,-2441,-282,1843,3534,4531,4679,3920,2386, 323,-1897,-3887,-5343,-5986,-5718,-4633,-2874,-742,1417,3259,4490,4850,4351,2994,1046,-1158,-3256,-4896,-5743, -5752,-4873,-3274,-1206,979,2910,4326,4944,4663,3512,1687,-489,-2663,-4456,-5572,-5800,-5179,-3770,-1798,370, 2433,3979,4820,4779,3858,2166,80,-2127,-4051,-5363,-5856,-5450,-4215,-2384,-208,1909,3639,4717,4920,4250, 2790,762,-1426,-3437,-4922,-5646,-5452,-4432,-2692,-574,1593,3509,4781,5252,4826,3541,1680,-522,-2606,-4251, -5185,-5231,-4439,-2890,-851,1344,3321,4790,5507,5298,4234,2476,334,-1830,-3675,-4817,-5147,-4590,-3252,-1343, 816,2903,4501,5417,5455,4595,2981,877,-1339,-3297,-4694,-5268,-4951,-3821,-2025,85,2187,3966,5077,5362, 4741,3322,1338,-886,-2944,-4497,-5296,-5227,-4271,-2628,-550,1614,3522,4846,5404,5037,3844,2000,-169,-2293, -4009,-5011,-5152,-4429,-2923,-911,1277,3298,4824,5614,5517,4534,2847,750,-1424,-3273,-4510,-4898,-4391,-3097, -1191,980,3078,4768,5749,5879,5126,3589,1530,-645,-2644,-4060,-4723,-4473,-3392,-1654,444,2596,4411,5613, 5949,5406,4052,2104,-107,-2185,-3809,-4695,-4721,-3864,-2285,-225,1925,3861,5264,5859,5564,4396,2572,397, -1758,-3568,-4654,-4914,-4265,-2869,-933,1254,3290,4842,5678,5633,4723,3042,910,-1274,-3184,-4501,-4988,-4588, -3372,-1545,568,2702,4436,5458,5678,4974,3498,1433,-782,-2828,-4327,-5078,-4923,-3932,-2251,-144,1982,3821, 5084,5497,5036,3734,1796,-428,-2590,-4286,-5254,-5363,-4588,-3083,-1069,1088,3038,4457,5142,4898,3778,2001, -188,-2383,-4230,-5437,-5777,-5213,-3895,-1981,171,2220,3823,4715,4738,3889,2243,146,-2070,-4034,-5423,-6005, -5686,-4514,-2732,-588,1550,3324,4455,4723,4095,2677,695,-1542,-3586,-5142,-5951,-5859,-4904,-3241,-1136,1036, 2968,4299,4817,4431,3197,1346,-828,-2970,-4694,-5693,-5833,-5113,-3613,-1604,604,2607,4126,4893,4752,3729, 2002,-129,-2318,-4188,-5409,-5804,-5290,-3982,-2096,93,2212,3893,4868,4995,4210,2659,564,-1632,-3609,-5032, -5693,-5381,-4261,-2489,-349,1825,3666,4867,5218,4697,3339,1376,-810,-2865,-4462,-5291,-5271,-4343,-2717,-626, 1570,3534,4936,5553,5244,4130,2303,142,-1998,-3760,-4826,-5038,-4354,-2896,-894,1302,3364,4916,5744,5690, 4745,3060,929,-1261,-3165,-4478,-4925,-4495,-3257,-1403,752,2873,4581,5620,5749,5036,3518,1452,-769,-2796, -4288,-5007,-4825,-3789,-2061,25,2173,4028,5240,5647,5154,3839,1915,-315,-2434,-4083,-5024,-5072,-4254,-2702, -665,1507,3483,4931,5564,5335,4215,2424,255,-1920,-3740,-4871,-5161,-4554,-3162,-1225,952,3011,4615,5508, 5500,4623,2987,871,-1328,-3251,-4609,-5114,-4755,-3581,-1760,364,2472,4238,5319,5555,4899,3437,1432,-795, -2854,-4383,-5156,-5050,-4067,-2406,-328,1826,3696,4988,5481,5049,3802,1904,-278,-2433,-4144,-5146,-5261,-4517, -3035,-1025,1161,3147,4605,5320,5165,4104,2374,237,-1936,-3786,-4995,-5357,-4810,-3502,-1590,572,2646,4315, 5234,5330,4525,2951,891,-1292,-3266,-4638,-5256,-4965,-3834,-2056,81,2224,4031,5196,5517,4939,3591,1631, -571,-2642,-4205,-5031,-4984,-4092,-2454,-398,1764,3697,5051,5629,5278,4087,2257,85,-2069,-3805,-4849,-5054, -4374,-2953,-987,1161,3193,4666,5472,5352,4399,2688,574,-1614,-3505,-4792,-5229,-4807,-3544,-1723,400,2494, 4171,5160,5313,4577,3065,1017,-1212,-3222,-4668,-5391,-5191,-4143,-2432,-345,1795,3610,4840,5235,4732,3412, 1491,-723,-2809,-4457,-5360,-5399,-4568,-3008,-980,1183,3129,4523,5169,4913,3792,2027,-130,-2281,-4088,-5212, -5482,-4882,-3514,-1578,580,2625,4208,5056,5065,4175,2540,453,-1735,-3677,-5014,-5534,-5186,-3996,-2193,-78, 2042,3772,4865,5088,4432,2988,982,-1236,-3268,-4784,-5555,-5447,-4471,-2780,-706,1425,3318,4605,5090,4662, 3416,1545,-617,-2744,-4413,-5407,-5505,-4752,-3238,-1227,964,2936,4447,5166,5005,3968,2238,107,-2033,-3869, -5051,-5394,-4856,-3524,-1633,536,2627,4294,5245,5326,4507,2943,874,-1322,-3271,-4673,-5271,-4954,-3836,-2050, 63,2194,4003,5153,5457,4907,3503,1547,-652,-2737,-4317,-5135,-5104,-4177,-2556,-490,1670,3580,4940,5498, 5156,3974,2151,-22,-2162,-3933,-4978,-5151,-4482,-3025,-1044,1131,3146,4670,5461,5389,4393,2708,604,-1598, -3469,-4735,-5164,-4740,-3456,-1615,569,2656,4360,5341,5493,4750,3236,1171,-1045,-3052,-4511,-5190,-5005,-3936, -2194,-129,2034,3850,5076,5445,4930,3594,1668,-558,-2674,-4304,-5214,-5234,-4410,-2840,-814,1349,3299,4709, 5330,5042,3911,2096,-62,-2235,-4049,-5171,-5435,-4815,-3427,-1489,687,2747,4308,5173,5153,4219,2580,447, -1749,-3679,-5025,-5510,-5132,-3916,-2089,43,2150,3913,4970,5193,4515,3049,1037,-1192,-3227,-4711,-5465,-5328, -4309,-2616,-518,1616,3497,4788,5245,4802,3542,1646,-547,-2682,-4358,-5334,-5404,-4632,-3090,-1085,1113,3101, 4570,5249,5062,3981,2239,82,-2093,-3931,-5107,-5433,-4862,-3522,-1589,556,2648,4285,5194,5233,4408,2811, 727,-1459,-3422,-4800,-5378,-5077,-3905,-2119,15,2160,3944,5079,5346,4734,3351,1369,-854,-2890,-4447,-5255, -5169,-4240,-2588,-511,1678,3588,4933,5448,5076,3871,2028,-168,-2304,-3994,-5018,-5193,-4455,-3007,-1011,1186, 3189,4706,5462,5348,4348,2637,489,-1675,-3557,-4781,-5178,-4698,-3410,-1551,601,2681,4344,5309,5448,4663, 3127,1051,-1154,-3138,-4568,-5242,-4980,-3899,-2150,-50,2072,3886,5078,5405,4873,3510,1577,-638,-2738,-4347, -5211,-5218,-4340,-2758,-727,1435,3353,4739,5342,5037,3887,2099,-64,-2217,-3994,-5078,-5313,-4668,-3275,-1313, 866,2886,4434,5261,5229,4301,2634,562,-1622,-3516,-4815,-5306,-4889,-3656,-1835,311,2412,4124,5167,5347, 4646,3180,1148,-1048,-3049,-4544,-5256,-5101,-4088,-2395,-312,1829,3697,4924,5366,4910,3606,1729,-456,-2568, -4229,-5157,-5247,-4463,-2921,-908,1255,3218,4664,5336,5117,4036,2288,167,-1997,-3793,-4947,-5254,-4689,-3334, -1419,736,2793,4394,5297,5349,4492,2907,828,-1366,-3266,-4637,-5190,-4848,-3682,-1896,223,2336,4091,5194, 5473,4859,3456,1485,-719,-2765,-4288,-5076,-4984,-4050,-2401,-347,1795,3691,5017,5530,5155,3944,2094,-66, -2183,-3912,-4912,-5054,-4342,-2853,-881,1291,3283,4760,5525,5384,4379,2671,581,-1618,-3462,-4698,-5091,-4594, -3313,-1464,695,2773,4441,5372,5485,4711,3180,1115,-1066,-3061,-4480,-5132,-4884,-3804,-2076,23,2142,3953, 5126,5459,4906,3554,1614,-586,-2660,-4256,-5121,-5135,-4281,-2697,-658,1494,3416,4804,5379,5067,3917,2103, -72,-2228,-3992,-5073,-5316,-4648,-3263,-1324,851,2868,4405,5234,5158,4217,2548,457,-1733,-3634,-4954,-5426, -5023,-3809,-1979,120,2234,3935,4946,5146,4435,2945,924,-1311,-3321,-4794,-5532,-5349,-4333,-2654,-563,1578, 3404,4670,5091,4592,3316,1389,-799,-2902,-4569,-5486,-5553,-4772,-3225,-1216,962,2905,4343,5008,4777,3672, 1925,-221,-2383,-4193,-5351,-5660,-5087,-3735,-1806,356,2408,4002,4878,4919,4072,2445,386,-1814,-3754,-5111, -5670,-5340,-4148,-2362,-210,1890,3646,4772,5014,4391,2958,986,-1238,-3257,-4805,-5560,-5471,-4509,-2840,-748, 1393,3310,4605,5120,4720,3489,1644,-521,-2649,-4322,-5343,-5457,-4723,-3217,-1232,964,2959,4460,5198,5062, 4050,2329,187,-1968,-3808,-5012,-5382,-4862,-3543,-1662,510,2584,4246,5201,5320,4511,2963,895,-1292,-3250, -4660,-5297,-5007,-3889,-2120,-4,2110,3904,5090,5409,4857,3469,1523,-679,-2754,-4354,-5189,-5173,-4281,-2662, -609,1554,3452,4802,5382,5044,3872,2037,-137,-2284,-4038,-5105,-5319,-4650,-3217,-1239,916,2937,4484,5275, 5193,4219,2553,439,-1762,-3636,-4933,-5377,-4933,-3672,-1835,318,2392,4122,5119,5272,4528,3029,989,-1195, -3202,-4654,-5327,-5143,-4094,-2366,-285,1852,3687,4913,5303,4802,3494,1575,-624,-2707,-4336,-5234,-5277,-4445, -2891,-870,1304,3238,4670,5314,5058,3951,2147,7,-2127,-3935,-5048,-5311,-4690,-3316,-1401,774,2830,4397, 5299,5274,4387,2768,686,-1510,-3390,-4735,-5236,-4844,-3660,-1832,281,2388,4139,5210,5454,4804,3360,1369, -819,-2833,-4312,-5074,-4943,-3951,-2290,-201,1928,3818,5113,5583,5160,3933,2054,-107,-2238,-3909,-4882,-4975, -4212,-2714,-711,1451,3416,4883,5591,5436,4363,2647,524,-1652,-3481,-4667,-5030,-4483,-3173,-1298,857,2893, 4539,5430,5492,4673,3089,1022,-1147,-3113,-4495,-5097,-4815,-3691,-1942,137,2263,4036,5162,5456,4861,3461, 1507,-712,-2751,-4327,-5172,-5137,-4243,-2642,-591,1538,3443,4774,5308,4951,3752,1923,-224,-2379,-4106,-5147, -5361,-4673,-3237,-1275,863,2858,4354,5147,5023,4037,2356,254,-1914,-3771,-5040,-5472,-5014,-3777,-1945,189, 2269,3932,4906,5074,4316,2800,774,-1425,-3407,-4853,-5535,-5313,-4260,-2559,-494,1648,3447,4666,5054,4552, 3236,1333,-867,-2939,-4550,-5450,-5467,-4639,-3073,-1043,1101,3038,4426,5051,4798,3689,1947,-214,-2332,-4115, -5214,-5471,-4843,-3466,-1497,656,2682,4272,5114,5114,4237,2603,567,-1617,-3512,-4829,-5338,-4957,-3751,-1954, 188,2314,4050,5137,5351,4686,3261,1267,-934,-2925,-4414,-5154,-5033,-4026,-2380,-308,1832,3720,4975,5453, 5008,3746,1887,-283,-2389,-4037,-5008,-5127,-4370,-2876,-883,1287,3231,4705,5402,5226,4172,2431,294,-1854, -3691,-4862,-5210,-4677,-3347,-1467,670,2737,4356,5274,5349,4530,2962,889,-1307,-3243,-4646,-5237,-4905,-3808, -2028,73,2176,3965,5095,5368,4770,3381,1425,-781,-2858,-4400,-5221,-5186,-4242,-2647,-587,1564,3451,4765, 5305,4935,3732,1897,-273,-2404,-4144,-5182,-5369,-4676,-3228,-1261,885,2889,4383,5154,5042,4052,2356,253, -1940,-3808,-5062,-5475,-5002,-3745,-1891,271,2340,4029,4995,5134,4379,2878,837,-1355,-3347,-4770,-5424,-5202, -4124,-2392,-279,1839,3674,4874,5250,4717,3394,1474,-709,-2788,-4372,-5263,-5264,-4406,-2828,-792,1365,3297, 4700,5324,5036,3896,2112,-49,-2180,-3952,-5035,-5283,-4655,-3270,-1320,842,2886,4449,5282,5245,4318,2674, 582,-1595,-3501,-4815,-5283,-4898,-3663,-1858,275,2354,4096,5135,5348,4643,3171,1178,-1040,-3047,-4535,-5262, -5115,-4110,-2427,-331,1794,3649,4905,5337,4876,3611,1721,-465,-2558,-4230,-5170,-5222,-4450,-2907,-900,1276, 3233,4662,5334,5137,4047,2300,173,-1966,-3784,-4943,-5242,-4679,-3338,-1424,746,2784,4410,5278,5321,4494, 2893,825,-1354,-3288,-4641,-5214,-4895,-3723,-1933,171,2307,4046,5168,5434,4802,3395,1433,-781,-2802,-4354, -5146,-5076,-4132,-2474,-397,1736,3608,4921,5417,5027,3804,1974,-213,-2320,-4015,-5011,-5158,-4432,-2976,-1008, 1166,3137,4631,5394,5251,4250,2533,426,-1702,-3549,-4791,-5159,-4658,-3355,-1507,639,2712,4380,5336,5462, 4667,3157,1111,-1082,-3017,-4409,-5064,-4785,-3692,-1935,159,2263,4060,5228,5557,5036,3677,1760,-445,-2495, -4082,-4937,-4930,-4055,-2477,-411,1665,3583,4928,5525,5202,4064,2265,92,-2022,-3796,-4868,-5102,-4455,-3057, -1134,1013,3017,4520,5322,5258,4318,2644,567,-1628,-3509,-4796,-5270,-4864,-3642,-1840,289,2364,4048,5076, 5231,4522,3044,1022,-1158,-3144,-4618,-5328,-5176,-4158,-2462,-391,1722,3560,4799,5217,4729,3441,1554,-610, -2693,-4320,-5249,-5303,-4519,-3000,-991,1155,3081,4509,5160,4932,3844,2100,-29,-2166,-3966,-5107,-5428,-4838, -3495,-1603,524,2567,4139,5040,5044,4167,2572,506,-1669,-3615,-4956,-5485,-5141,-4011,-2221,-115,1968,3716, 4795,5047,4436,3007,1045,-1134,-3167,-4688,-5453,-5358,-4385,-2778,-733,1417,3291,4572,5095,4691,3499,1651, -506,-2581,-4270,-5253,-5402,-4669,-3189,-1208,939,2929,4418,5141,5011,3992,2298,202,-1951,-3772,-4994,-5366, -4849,-3565,-1713,450,2500,4164,5071,5175,4398,2866,832,-1340,-3303,-4685,-5323,-5066,-3981,-2227,-175,1953, 3761,4914,5230,4668,3310,1380,-812,-2846,-4429,-5277,-5265,-4397,-2806,-767,1361,3276,4633,5206,4900,3717, 1914,-227,-2340,-4095,-5144,-5368,-4717,-3305,-1360,803,2819,4340,5168,5081,4168,2498,411,-1764,-3639,-4905, -5355,-4919,-3684,-1866,259,2359,4070,5064,5259,4548,3056,1057,-1144,-3122,-4577,-5286,-5082,-4049,-2360,-285, 1839,3664,4915,5314,4824,3536,1636,-543,-2634,-4282,-5181,-5238,-4437,-2885,-879,1283,3207,4628,5270,5026, 3904,2164,4,-2135,-3930,-5053,-5354,-4760,-3416,-1485,658,2705,4290,5154,5152,4303,2668,615,-1566,-3483, -4796,-5333,-4976,-3789,-1989,117,2245,3968,5079,5320,4674,3256,1282,-915,-2916,-4430,-5192,-5064,-4090,-2423, -344,1804,3680,4967,5456,5034,3803,1937,-213,-2325,-3992,-4961,-5082,-4322,-2835,-854,1317,3273,4733,5455, 5307,4274,2548,425,-1735,-3560,-4745,-5111,-4596,-3275,-1409,728,2804,4422,5362,5441,4628,3080,1000,-1182, -3136,-4503,-5125,-4807,-3716,-1915,166,2264,4055,5202,5499,4925,3552,1599,-601,-2653,-4206,-5017,-4982,-4065, -2453,-404,1745,3614,4977,5534,5178,3989,2203,25,-2098,-3820,-4861,-5044,-4376,-2935,-977,1173,3173,4679, 5443,5361,4374,2684,595,-1591,-3463,-4731,-5172,-4708,-3455,-1638,503,2568,4233,5197,5310,4571,3053,1014, -1173,-3158,-4620,-5293,-5090,-4051,-2350,-296,1820,3631,4805,5169,4649,3331,1408,-789,-2871,-4473,-5378,-5405, -4584,-3041,-1041,1096,3002,4408,5026,4752,3630,1833,-311,-2429,-4203,-5328,-5572,-4948,-3588,-1677,479,2488, 4033,4899,4871,3981,2341,264,-1905,-3786,-5090,-5586,-5199,-3989,-2191,-99,1995,3723,4760,4965,4319,2882, 890,-1306,-3314,-4784,-5499,-5383,-4382,-2726,-659,1457,3299,4572,5051,4590,3364,1503,-648,-2749,-4410,-5355, -5447,-4678,-3178,-1191,961,2900,4347,5037,4852,3812,2106,-17,-2157,-3944,-5108,-5456,-4889,-3573,-1684,471, 2513,4120,5016,5087,4282,2719,678,-1464,-3391,-4734,-5322,-5009,-3880,-2090,-5,2118,3867,5000,5302,4715, 3343,1404,-775,-2794,-4331,-5128,-5067,-4153,-2546,-484,1656,3540,4860,5402,5043,3854,2024,-109,-2232,-3930, -4942,-5125,-4423,-3004,-1035,1105,3079,4566,5318,5216,4253,2554,449,-1695,-3542,-4785,-5195,-4731,-3465,-1647, 477,2531,4199,5159,5295,4549,3035,1011,-1184,-3137,-4554,-5209,-4993,-3925,-2226,-151,1959,3754,4947,5312, 4802,3490,1600,-586,-2656,-4241,-5090,-5116,-4279,-2710,-695,1450,3360,4741,5348,5087,3940,2188,65,-2039, -3807,-4882,-5156,-4516,-3137,-1204,935,2960,4494,5327,5309,4411,2769,713,-1441,-3343,-4630,-5125,-4730,-3535, -1758,364,2456,4162,5206,5400,4737,3296,1291,-892,-2889,-4387,-5101,-4955,-3988,-2305,-233,1869,3722,4969, 5416,4963,3702,1834,-346,-2435,-4072,-5016,-5097,-4324,-2829,-838,1300,3237,4678,5370,5152,4105,2368,249, -1877,-3686,-4838,-5184,-4638,-3293,-1424,684,2752,4323,5242,5281,4456,2874,824,-1353,-3292,-4654,-5233,-4911, -3775,-2009,82,2162,3908,4998,5267,4682,3284,1312,-889,-2926,-4463,-5259,-5197,-4271,-2670,-622,1509,3384, 4674,5193,4803,3598,1776,-397,-2502,-4228,-5245,-5405,-4700,-3256,-1295,833,2824,4306,5054,4925,3938,2228, 143,-2021,-3856,-5102,-5505,-5024,-3738,-1903,248,2314,3983,4933,5044,4288,2756,710,-1446,-3405,-4826,-5438, -5210,-4126,-2374,-295,1824,3615,4787,5139,4596,3251,1342,-817,-2864,-4460,-5307,-5309,-4469,-2893,-835,1301, 3213,4602,5190,4891,3746,1938,-180,-2306,-4069,-5136,-5369,-4700,-3308,-1383,768,2787,4309,5126,5067,4144, 2495,418,-1738,-3604,-4908,-5352,-4935,-3723,-1897,205,2286,3995,5002,5199,4497,3021,1024,-1169,-3171,-4607, -5326,-5152,-4125,-2450,-371,1750,3571,4826,5237,4767,3497,1610,-557,-2647,-4282,-5203,-5255,-4470,-2935,-955, 1230,3145,4550,5206,4984,3889,2169,22,-2105,-3896,-5043,-5330,-4761,-3406,-1509,633,2652,4245,5119,5120, 4276,2684,640,-1540,-3447,-4777,-5312,-4993,-3816,-2051,68,2154,3908,4996,5223,4599,3197,1241,-947,-2937, -4472,-5210,-5129,-4185,-2542,-469,1641,3512,4792,5294,4882,3669,1830,-309,-2428,-4078,-5057,-5196,-4475,-3000, -1047,1114,3077,4540,5272,5118,4099,2404,297,-1841,-3656,-4848,-5208,-4706,-3405,-1561,565,2622,4252,5179, 5296,4488,2951,910,-1252,-3190,-4580,-5211,-4934,-3839,-2101,-23,2069,3843,5007,5312,4748,3389,1464,-696, -2740,-4311,-5142,-5119,-4242,-2641,-634,1502,3373,4707,5271,4949,3774,2014,-156,-2260,-3989,-5052,-5255,-4618, -3221,-1273,854,2832,4334,5113,5036,4093,2436,355,-1800,-3669,-4920,-5406,-4965,-3753,-1950,164,2232,3904, 4893,5063,4317,2844,832,-1328,-3310,-4754,-5453,-5274,-4256,-2565,-516,1567,3406,4605,4996,4513,3225,1335, -824,-2879,-4484,-5390,-5455,-4640,-3098,-1115,1027,2933,4364,4996,4768,3678,1931,-190,-2289,-4071,-5182,-5475, -4856,-3525,-1619,523,2560,4102,4998,5005,4138,2549,482,-1652,-3537,-4855,-5357,-4996,-3833,-2048,54,2146, 3880,4957,5200,4574,3180,1225,-960,-2957,-4449,-5179,-5072,-4091,-2465,-408,1717,3578,4847,5351,4944,3745, 1903,-230,-2310,-3990,-4944,-5052,-4320,-2841,-867,1287,3252,4714,5449,5295,4268,2578,491,-1649,-3470,-4645, -5009,-4485,-3182,-1321,828,2853,4494,5411,5499,4704,3163,1134,-1008,-2944,-4313,-4936,-4655,-3549,-1810,271, 2381,4146,5284,5597,5032,3674,1748,-437,-2447,-4022,-4841,-4806,-3952,-2333,-317,1797,3687,5017,5562,5249, 4069,2239,109,-2016,-3745,-4794,-4987,-4338,-2922,-1009,1140,3126,4637,5408,5314,4362,2693,599,-1559,-3421, -4694,-5105,-4687,-3455,-1637,476,2533,4214,5163,5327,4609,3127,1095,-1090,-3072,-4499,-5188,-4988,-3943,-2253, -168,1917,3717,4927,5305,4795,3505,1597,-560,-2635,-4263,-5140,-5181,-4366,-2823,-820,1323,3233,4617,5239, 4997,3862,2117,-20,-2165,-3943,-5036,-5294,-4703,-3345,-1431,710,2732,4274,5114,5092,4232,2599,540,-1625, -3525,-4818,-5345,-4977,-3787,-2020,97,2188,3898,4969,5165,4512,3070,1105,-1088,-3082,-4572,-5303,-5180,-4224, -2549,-474,1629,3496,4738,5198,4765,3524,1661,-469,-2588,-4221,-5176,-5282,-4516,-3038,-1061,1095,3025,4485, 5184,4993,3959,2228,125,-1996,-3819,-4981,-5308,-4786,-3451,-1588,522,2591,4185,5096,5154,4345,2785,726, -1442,-3356,-4724,-5327,-5016,-3889,-2121,-50,2055,3809,4928,5182,4613,3216,1278,-903,-2939,-4468,-5260,-5215, -4288,-2679,-642,1479,3332,4652,5178,4824,3631,1819,-320,-2417,-4136,-5149,-5307,-4625,-3189,-1223,908,2888, 4369,5119,5009,4034,2354,288,-1867,-3703,-4950,-5348,-4883,-3611,-1786,345,2410,4037,5015,5116,4382,2884, 859,-1299,-3263,-4656,-5304,-5087,-4001,-2344,-253,1822,3640,4800,5172,4630,3321,1434,-720,-2778,-4351,-5239, -5231,-4407,-2846,-837,1279,3174,4563,5146,4868,3739,1975,-148,-2263,-4005,-5068,-5330,-4712,-3324,-1416,709, 2733,4263,5081,5068,4145,2532,484,-1680,-3546,-4835,-5294,-4881,-3698,-1906,192,2268,3968,5007,5219,4530, 3079,1108,-1044,-3027,-4473,-5178,-5022,-4016,-2358,-309,1797,3625,4879,5316,4870,3635,1763,-365,-2443,-4074, -5011,-5076,-4325,-2799,-829,1292,3233,4652,5322,5127,4072,2348,239,-1885,-3660,-4815,-5146,-4585,-3265,-1415, 730,2760,4348,5217,5255,4427,2850,827,-1321,-3242,-4569,-5148,-4834,-3699,-1953,124,2215,3947,5049,5322, 4724,3342,1415,-745,-2754,-4281,-5059,-4998,-4076,-2480,-443,1671,3549,4831,5353,4981,3786,1979,-170,-2249, -3928,-4937,-5082,-4392,-2971,-1026,1119,3076,4545,5300,5164,4182,2501,410,-1717,-3550,-4763,-5165,-4708,-3440, -1616,468,2523,4155,5094,5225,4458,2944,909,-1260,-3205,-4611,-5273,-5035,-3979,-2278,-219,1870,3636,4817, 5145,4606,3306,1387,-771,-2828,-4442,-5285,-5289,-4450,-2881,-873,1245,3139,4487,5095,4789,3670,1905,-229, -2315,-4065,-5141,-5387,-4754,-3383,-1452,670,2673,4199,5013,4963,4074,2438,383,-1756,-3624,-4902,-5403,-4993, -3785,-1993,130,2194,3891,4915,5102,4416,2966,986,-1193,-3143,-4626,-5334,-5172,-4174,-2508,-459,1642,3487, 4720,5145,4697,3425,1560,-586,-2666,-4291,-5225,-5303,-4521,-3016,-1025,1113,3039,4461,5131,4924,3870,2126, 28,-2082,-3884,-5023,-5322,-4763,-3442,-1567,570,2612,4200,5082,5137,4294,2729,690,-1482,-3383,-4712,-5279, -4934,-3798,-2024,68,2159,3906,5005,5254,4659,3273,1341,-828,-2846,-4374,-5144,-5073,-4116,-2500,-455,1661, 3528,4825,5339,4951,3763,1924,-207,-2298,-4009,-4995,-5139,-4426,-2980,-1039,1110,3082,4536,5273,5132,4143, 2433,357,-1782,-3623,-4853,-5239,-4721,-3467,-1622,502,2557,4193,5140,5229,4453,2925,886,-1265,-3221,-4618, -5253,-5008,-3920,-2207,-141,1975,3754,4915,5250,4717,3351,1449,-723,-2762,-4336,-5198,-5186,-4338,-2769,-739, 1382,3264,4632,5214,4907,3744,1947,-164,-2288,-4022,-5089,-5311,-4661,-3285,-1351,784,2765,4290,5107,5025, 4114,2452,378,-1790,-3631,-4914,-5379,-4968,-3751,-1930,154,2219,3912,4908,5088,4403,2937,941,-1241,-3220, -4667,-5362,-5190,-4168,-2487,-414,1678,3502,4737,5155,4678,3412,1528,-612,-2688,-4322,-5220,-5264,-4475,-2925, -948,1193,3119,4526,5174,4954,3873,2145,37,-2083,-3849,-4973,-5267,-4676,-3337,-1442,698,2724,4307,5170, 5181,4342,2743,699,-1445,-3361,-4673,-5209,-4868,-3705,-1934,164,2257,3963,5056,5315,4680,3267,1324,-839, -2845,-4364,-5106,-5010,-4082,-2451,-402,1709,3575,4852,5339,4930,3713,1875,-258,-2348,-4008,-4989,-5125,-4405, -2951,-998,1156,3103,4574,5289,5119,4128,2437,326,-1802,-3617,-4812,-5168,-4674,-3386,-1553,568,2601,4246, 5165,5262,4475,2942,914,-1241,-3177,-4554,-5173,-4893,-3812,-2075,-1,2075,3848,4995,5316,4765,3429,1503, -663,-2685,-4255,-5084,-5052,-4187,-2607,-589,1525,3399,4746,5315,4985,3833,2042,-84,-2168,-3900,-4961,-5153, -4506,-3105,-1177,956,2945,4447,5243,5165,4241,2596,530,-1632,-3469,-4726,-5181,-4751,-3525,-1719,398,2451, 4143,5148,5305,4582,3129,1123,-1013,-2975,-4399,-5080,-4902,-3877,-2191,-133,1959,3792,4995,5402,4929,3641, 1765,-368,-2433,-4051,-4954,-4988,-4177,-2664,-680,1451,3345,4782,5390,5173,4070,2332,215,-1902,-3694,-4803, -5088,-4507,-3163,-1301,825,2838,4391,5240,5242,4383,2788,708,-1445,-3334,-4652,-5204,-4849,-3707,-1931,132, 2216,3919,4990,5209,4596,3158,1209,-978,-2971,-4482,-5247,-5154,-4199,-2585,-562,1554,3398,4665,5150,4724, 3513,1676,-467,-2561,-4235,-5214,-5340,-4639,-3191,-1193,906,2875,4315,5032,4863,3845,2130,50,-2088,-3889, -5090,-5470,-4961,-3669,-1825,296,2331,3950,4863,4948,4153,2631,589,-1565,-3495,-4877,-5493,-5219,-4122,-2395, -335,1778,3536,4687,5000,4437,3091,1179,-998,-3023,-4569,-5400,-5368,-4490,-2903,-873,1252,3140,4475,5036, 4724,3560,1775,-343,-2437,-4164,-5186,-5383,-4714,-3293,-1345,790,2792,4302,5100,5025,4093,2443,385,-1756, -3580,-4841,-5272,-4836,-3609,-1775,336,2406,4093,5100,5267,4555,3072,1087,-1082,-3038,-4457,-5147,-4956,-3918, -2238,-154,1945,3754,4975,5376,4875,3595,1698,-441,-2530,-4128,-5025,-5067,-4260,-2716,-730,1416,3321,4715, 5342,5097,3994,2243,120,-2003,-3771,-4884,-5165,-4559,-3216,-1310,803,2817,4384,5221,5217,4351,2744,685, -1471,-3364,-4694,-5208,-4853,-3679,-1898,197,2282,3992,5064,5272,4623,3198,1237,-937,-2943,-4433,-5178,-5077, -4103,-2462,-404,1711,3562,4819,5283,4850,3606,1755,-391,-2478,-4130,-5111,-5220,-4483,-3003,-1034,1108,3065, 4496,5193,5022,3992,2274,174,-1954,-3775,-4953,-5286,-4776,-3483,-1616,512,2558,4167,5084,5156,4354,2807, 765,-1386,-3315,-4686,-5288,-4987,-3880,-2129,-37,2048,3823,4953,5254,4681,3308,1377,-776,-2812,-4346,-5153, -5111,-4203,-2603,-569,1558,3428,4753,5318,4963,3794,1994,-151,-2228,-3948,-4985,-5158,-4478,-3058,-1107,1027, 3024,4512,5284,5178,4211,2552,472,-1675,-3518,-4770,-5187,-4751,-3489,-1670,454,2496,4154,5148,5276,4539, 3043,1027,-1131,-3100,-4506,-5177,-4985,-3938,-2235,-175,1935,3732,4923,5289,4756,3468,1575,-587,-2641,-4246, -5127,-5132,-4326,-2767,-776,1358,3263,4648,5245,4990,3872,2099,-8,-2115,-3883,-4975,-5225,-4628,-3253,-1351, 783,2795,4338,5177,5145,4271,2664,596,-1557,-3443,-4733,-5239,-4861,-3673,-1883,205,2291,3975,5039,5241, 4590,3154,1196,-982,-2969,-4447,-5164,-5020,-4052,-2391,-333,1770,3595,4855,5305,4866,3626,1780,-367,-2440, -4085,-5032,-5123,-4357,-2865,-910,1237,3177,4608,5297,5121,4084,2362,272,-1844,-3635,-4808,-5128,-4596,-3281, -1416,708,2742,4359,5248,5316,4500,2968,918,-1237,-3147,-4484,-5076,-4776,-3651,-1885,182,2272,4026,5131, 5409,4834,3459,1530,-645,-2652,-4197,-4986,-4929,-4028,-2431,-391,1697,3564,4871,5414,5044,3871,2063,-78, -2174,-3875,-4894,-5084,-4391,-2966,-1044,1092,3054,4527,5281,5159,4201,2515,447,-1703,-3549,-4776,-5178,-4736, -3486,-1675,432,2481,4123,5090,5217,4463,2971,955,-1205,-3156,-4570,-5227,-5013,-3970,-2263,-202,1888,3689, 4871,5241,4713,3397,1498,-643,-2703,-4299,-5160,-5183,-4357,-2804,-804,1326,3229,4592,5214,4930,3810,2057, -63,-2169,-3926,-5020,-5284,-4663,-3288,-1388,723,2733,4263,5097,5069,4166,2548,490,-1657,-3546,-4842,-5340, -4956,-3774,-1991,111,2178,3879,4914,5113,4453,3007,1034,-1124,-3111,-4594,-5310,-5169,-4186,-2542,-493,1614, 3455,4691,5156,4710,3469,1606,-533,-2598,-4228,-5179,-5273,-4506,-3022,-1032,1102,3033,4475,5155,4961,3917, 2187,96,-2027,-3821,-4987,-5313,-4765,-3452,-1589,544,2571,4170,5051,5098,4282,2718,679,-1476,-3395,-4740, -5331,-5013,-3907,-2143,-82,2010,3764,4882,5147,4549,3161,1222,-959,-2974,-4509,-5299,-5247,-4340,-2732,-696, 1415,3293,4599,5123,4765,3563,1745,-382,-2471,-4178,-5190,-5354,-4668,-3233,-1281,856,2836,4320,5079,4960, 3999,2322,238,-1911,-3744,-4963,-5373,-4889,-3627,-1789,331,2399,4052,5013,5139,4387,2885,880,-1287,-3227, -4643,-5283,-5052,-3982,-2267,-202,1907,3704,4887,5247,4719,3407,1507,-667,-2707,-4298,-5145,-5155,-4314,-2750, -736,1402,3299,4673,5272,4988,3847,2084,-52,-2160,-3902,-4971,-5231,-4590,-3220,-1289,843,2861,4387,5213, 5170,4278,2640,576,-1579,-3447,-4726,-5188,-4812,-3596,-1793,301,2389,4090,5131,5331,4658,3208,1231,-951, -2919,-4389,-5102,-4944,-3934,-2259,-193,1925,3757,4989,5433,4972,3722,1847,-297,-2378,-4008,-4938,-5015,-4232, -2714,-741,1399,3327,4746,5417,5212,4153,2420,307,-1817,-3617,-4765,-5079,-4523,-3193,-1312,813,2843,4424, 5308,5339,4501,2927,861,-1290,-3207,-4547,-5118,-4781,-3652,-1864,209,2297,4036,5140,5390,4771,3384,1436, -748,-2763,-4282,-5048,-4972,-4038,-2431,-389,1731,3576,4887,5393,5008,3792,1982,-171,-2272,-3946,-4949,-5099, -4396,-2947,-991,1141,3106,4568,5289,5169,4164,2463,371,-1773,-3610,-4838,-5227,-4738,-3463,-1639,482,2520, 4155,5080,5173,4410,2887,849,-1317,-3267,-4679,-5315,-5068,-4004,-2284,-235,1856,3628,4778,5105,4567,3228, 1310,-863,-2908,-4485,-5338,-5333,-4475,-2910,-913,1210,3086,4444,5028,4724,3578,1799,-338,-2434,-4175,-5254, -5465,-4814,-3440,-1515,619,2604,4120,4934,4878,3962,2316,253,-1905,-3755,-5022,-5485,-5068,-3842,-2043,53, 2124,3815,4822,4989,4311,2863,864,-1301,-3273,-4726,-5401,-5255,-4228,-2557,-502,1592,3414,4645,5084,4600, 3345,1486,-660,-2733,-4350,-5261,-5327,-4535,-3023,-1034,1101,3017,4434,5081,4868,3806,2085,-33,-2148,-3909, -5039,-5344,-4766,-3427,-1546,589,2616,4188,5058,5090,4260,2681,635,-1493,-3392,-4710,-5261,-4918,-3778,-1985, 99,2193,3915,5012,5269,4662,3266,1320,-844,-2846,-4351,-5105,-5027,-4088,-2464,-412,1708,3560,4845,5353, 4965,3760,1932,-196,-2294,-3967,-4955,-5101,-4383,-2939,-972,1161,3111,4571,5289,5158,4163,2463,376,-1753, -3572,-4788,-5171,-4673,-3389,-1558,560,2593,4230,5162,5266,4491,2963,938,-1235,-3166,-4553,-5177,-4931,-3844, -2127,-66,2040,3810,4960,5293,4752,3422,1523,-651,-2697,-4251,-5080,-5072,-4209,-2634,-616,1509,3393,4750, 5320,5024,3864,2095,-26,-2121,-3862,-4892,-5133,-4471,-3082,-1156,982,2981,4487,5291,5229,4310,2659,598, -1543,-3414,-4673,-5134,-4709,-3501,-1711,399,2468,4150,5160,5332,4638,3174,1183,-1004,-2978,-4434,-5122,-4948, -3952,-2260,-195,1894,3714,4937,5349,4864,3593,1715,-450,-2520,-4138,-5041,-5099,-4303,-2788,-806,1327,3240, 4653,5303,5062,3988,2248,126,-1980,-3766,-4892,-5197,-4623,-3274,-1392,709,2755,4312,5187,5190,4346,2755, 710,-1458,-3364,-4697,-5247,-4901,-3740,-1973,118,2194,3911,4981,5219,4596,3189,1224,-962,-2970,-4479,-5244, -5155,-4213,-2589,-542,1573,3427,4693,5185,4771,3556,1722,-435,-2525,-4208,-5192,-5323,-4599,-3138,-1174,951, 2914,4375,5096,4933,3923,2211,131,-2013,-3823,-5038,-5406,-4898,-3600,-1761,375,2427,4071,4991,5082,4305, 2762,722,-1427,-3359,-4751,-5342,-5082,-3987,-2234,-155,1944,3713,4858,5180,4622,3258,1345,-806,-2838,-4405, -5224,-5200,-4334,-2746,-704,1424,3312,4667,5231,4905,3742,1937,-181,-2291,-4024,-5066,-5267,-4589,-3187,-1256, 875,2881,4379,5167,5087,4141,2488,413,-1727,-3576,-4852,-5274,-4843,-3611,-1793,314,2375,4057,5045,5216, 4490,3010,1010,-1163,-3143,-4561,-5254,-5060,-4023,-2339,-269,1840,3642,4863,5253,4761,3474,1590,-569,-2642, -4253,-5151,-5181,-4387,-2845,-863,1301,3199,4588,5217,4973,3866,2134,-3,-2117,-3889,-5010,-5276,-4690,-3333, -1437,696,2706,4270,5120,5106,4241,2642,595,-1568,-3456,-4770,-5282,-4941,-3754,-1987,118,2196,3926,4989, 5198,4554,3145,1188,-993,-2969,-4481,-5200,-5105,-4142,-2498,-435,1665,3516,4780,5257,4830,3607,1766,-369, -2467,-4109,-5068,-5185,-4452,-2971,-1014,1135,3082,4524,5234,5063,4030,2331,229,-1899,-3698,-4876,-5220,-4700, -3393,-1544,572,2612,4228,5136,5229,4416,2871,828,-1322,-3248,-4619,-5233,-4937,-3831,-2093,-18,2065,3822, 4965,5255,4677,3313,1390,-767,-2796,-4349,-5161,-5129,-4237,-2634,-623,1500,3365,4682,5232,4896,3708,1938, -215,-2312,-4024,-5067,-5257,-4601,-3195,-1253,871,2845,4329,5097,5003,4050,2388,308,-1836,-3686,-4928,-5388, -4935,-3706,-1901,206,2261,3920,4897,5049,4296,2817,806,-1346,-3314,-4740,-5423,-5229,-4199,-2502,-454,1623, 3446,4634,5010,4512,3218,1324,-828,-2871,-4467,-5354,-5402,-4579,-3030,-1044,1092,2986,4400,5016,4774,3673, 1924,-193,-2284,-4052,-5149,-5427,-4802,-3460,-1550,585,2610,4141,5018,5010,4134,2532,475,-1656,-3532,-4833, -5327,-4957,-3778,-1997,106,2190,3909,4972,5199,4561,3157,1199,-976,-2965,-4446,-5163,-5043,-4057,-2422,-368, 1751,3599,4857,5344,4922,3710,1866,-262,-2335,-4001,-4943,-5040,-4299,-2814,-844,1305,3260,4707,5425,5260, 4224,2526,442,-1688,-3499,-4662,-5010,-4480,-3171,-1309,835,2856,4481,5388,5461,4657,3110,1080,-1059,-2983, -4342,-4949,-4654,-3542,-1801,278,2380,4136,5264,5563,4987,3624,1694,-484,-2490,-4050,-4856,-4813,-3945,-2325, -306,1804,3680,5000,5536,5209,4025,2195,65,-2050,-3768,-4808,-4989,-4330,-2908,-991,1153,3131,4630,5391, 5285,4326,2656,561,-1589,-3440,-4703,-5107,-4678,-3438,-1619,493,2544,4214,5155,5308,4582,3094,1062,-1115, -3091,-4506,-5185,-4974,-3927,-2233,-151,1931,3723,4923,5292,4772,3476,1571,-585,-2652,-4270,-5138,-5168,-4347, -2802,-798,1341,3244,4619,5231,4980,3840,2090,-42,-2179,-3949,-5032,-5283,-4685,-3323,-1410,728,2744,4279, 5111,5082,4213,2578,519,-1640,-3530,-4818,-5336,-4961,-3767,-1995,118,2203,3906,4966,5158,4499,3055,1086, -1100,-3091,-4571,-5296,-5166,-4201,-2528,-455,1645,3503,4739,5193,4755,3510,1647,-482,-2596,-4224,-5171,-5269, -4501,-3017,-1041,1109,3036,4487,5180,4984,3945,2214,113,-2005,-3820,-4977,-5300,-4772,-3435,-1573,537,2601, 4188,5095,5146,4333,2770,713,-1449,-3359,-4719,-5317,-5001,-3875,-2104,-35,2067,3815,4929,5179,4607,3206, 1270,-909,-2938,-4464,-5253,-5202,-4273,-2664,-627,1489,3342,4658,5178,4820,3624,1811,-323,-2420,-4134,-5143, -5298,-4612,-3176,-1212,918,2895,4373,5121,5006,4029,2350,281,-1870,-3703,-4946,-5340,-4874,-3601,-1777,352, 2415,4041,5014,5115,4378,2879,854,-1301,-3263,-4655,-5301,-5080,-3995,-2336,-246,1828,3642,4801,5170,4627, 3318,1430,-723,-2780,-4351,-5236,-5226,-4401,-2840,-832,1283,3177,4564,5145,4866,3735,1972,-149,-2264,-4006, -5067,-5328,-4709,-3320,-1411,711,2734,4263,5082,5067,4145,2529,482,-1680,-3547,-4833,-5292,-4879,-3696,-1905, 192,2268,3969,5006,5219,4529,3080,1,11,-176,-173,301,784,1623,2324,2655,2536,1383,-283,-2476, -4823,-6651,-7787,-7791,-6646,-4384,-1430,1556,4174,5716,5959,4900,2617,-198,-3271,-5948,-7811,-8706,-8130,-6480, -4068,-1084,1766,4387,6206,6766,6194,4055,891,-2561,-5877,-7954,-8700,-8335,-6449,-3284,231,3260,5685,7528, 8031,6999,5140,2851,222,-2248,-3925,-4916,-5122,-3959,-1723,770,3115,5412,7384,8150,7694,6249,3956,1327, -1307,-3272,-4243,-4183,-2945,-1403,146,2104,4046,5748,6951,7223,6615,4932,2424,-556,-3345,-5157,-5869,-5352, -4032,-2265,26,2189,4193,5722,5993,4985,2893,506,-1648,-3410,-4284,-4669,-4938,-4644,-3618,-1668,623,2557, 4157,4968,4820,3900,1921,-640,-3207,-5105,-6358,-7184,-6871,-5152,-2247,877,3281,4898,5667,5536,4415,2683, 456,-2181,-4413,-5944,-6710,-6501,-5333,-3100,-428,1973,3900,5087,5581,5187,3514,1066,-1678,-4277,-6011,-6773, -6510,-5222,-3414,-1134,1000,2633,3921,4481,4338,3346,1447,-877,-3358,-5436,-6649,-6694,-5437,-3249,-642,2204, 4859,6868,8005,7883,6462,4066,1337,-1193,-3164,-4200,-4154,-2951,-975,1297,3484,5375,6793,7205,6755,5715, 3924,1945,-56,-1973,-3171,-3615,-3181,-1948,-313,1615,3407,4811,5653,5845,5429,4129,1973,-684,-3522,-5662, -6787,-6838,-5697,-3774,-1499,872,2952,4513,5303,5204,4018,2047,-248,-2602,-4488,-5629,-5889,-5144,-3688,-1632, 679,2834,4710,5916,6253,5527,3640,1189,-1451,-3793,-5177,-5646,-5259,-4096,-2378,-121,2256,4176,5379,5452, 4490,2789,635,-1664,-3937,-5624,-6404,-6173,-4938,-3045,-698,1780,3948,5519,6192,5827,4352,2077,-502,-3041, -5019,-6108,-6203,-5197,-3372,-989,1601,3786,5322,5980,5633,4465,2514,152,-2137,-4074,-5255,-5534,-4993,-3702, -1843,406,2682,4606,5892,6217,5523,3938,1695,-741,-2924,-4408,-5002,-4680,-3592,-1919,118,2190,4003,5255, 5613,5004,3483,1302,-1113,-3394,-5153,-6096,-6165,-5360,-3846,-1884,293,2268,3755,4557,4397,3303,1441,-924, -3292,-5246,-6463,-6708,-5994,-4488,-2403,-106,2079,3819,4779,4837,3954,2260,131,-2110,-4052,-5292,-5661,-5105, -3729,-1793,424,2596,4419,5603,5886,5206,3615,1385,-1049,-3281,-4908,-5621,-5364,-4186,-2309,-79,2160,4061, 5295,5660,4997,3414,1200,-1278,-3541,-5173,-5970,-5807,-4785,-3128,-1057,1094,3045,4515,5187,4999,3941,2113, -126,-2421,-4317,-5459,-5748,-5098,-3670,-1718,491,2608,4280,5213,5198,4210,2374,-15,-2541,-4759,-6307,-6955, -6638,-5456,-3613,-1399,827,2725,3984,4412,3900,2475,431,-1881,-4020,-5535,-6197,-5904,-4696,-2826,-523,1850, 3929,5426,6039,5697,4438,2433,106,-2153,-3951,-4947,-5054,-4267,-2760,-794,1359,3378,4952,5809,5736,4725, 2903,584,-1814,-3859,-5203,-5635,-5124,-3788,-1861,376,2568,4406,5558,5798,5072,3460,1287,-1033,-3110,-4524, -5096,-4727,-3470,-1582,669,2948,4876,6204,6644,6116,4704,2605,240,-1960,-3626,-4452,-4376,-3432,-1789,263, 2441,4409,5830,6465,6157,4928,2972,635,-1676,-3544,-4674,-4929,-4286,-2890,-970,1189,3243,4886,5814,5823, 4894,3131,835,-1563,-3653,-5042,-5531,-5101,-3830,-1950,250,2450,4262,5402,5642,4892,3287,1069,-1359,-3552, -5165,-5906,-5712,-4669,-2959,-849,1320,3232,4535,5012,4519,3102,1021,-1367,-3652,-5425,-6405,-6445,-5577,-3970, -1883,408,2545,4233,5151,5114,4120,2326,75,-2184,-4063,-5210,-5450,-4770,-3294,-1268,982,3161,4931,5999, 6177,5376,3752,1579,-747,-2802,-4240,-4839,-4522,-3386,-1616,514,2667,4536,5816,6254,5760,4357,2314,2, -2171,-3796,-4622,-4533,-3545,-1877,224,2436,4415,5848,6483,6153,4887,2871,473,-1872,-3762,-4889,-5105,-4416, -2966,-1027,1122,3135,4701,5523,5446,4424,2616,342,-2022,-4014,-5325,-5777,-5317,-4065,-2248,-130,1948,3694, 4788,5009,4298,2727,573,-1761,-3874,-5368,-6017,-5760,-4665,-2926,-823,1345,3229,4549,5043,4588,3229,1202, -1132,-3350,-5068,-5992,-6005,-5137,-3549,-1491,726,2754,4290,5026,4824,3660,1720,-631,-2976,-4897,-6048,-6300, -5619,-4153,-2159,62,2173,3858,4842,4913,4063,2411,246,-1988,-3926,-5200,-5608,-5133,-3828,-1931,276,2486, 4359,5602,5982,5394,3927,1858,-428,-2511,-4002,-4672,-4421,-3313,-1544,641,2897,4893,6319,6903,6528,5218, 3176,793,-1499,-3298,-4298,-4369,-3545,-1970,75,2294,4337,5873,6643,6478,5370,3503,1167,-1177,-3129,-4374, -4721,-4171,-2827,-923,1229,3333,5021,6015,6124,5279,3602,1385,-979,-3065,-4496,-5077,-4746,-3584,-1796,340, 2504,4354,5590,5957,5354,3848,1698,-716,-2949,-4632,-5476,-5406,-4474,-2861,-836,1291,3189,4528,5086,4696, 3383,1362,-1038,-3387,-5269,-6410,-6632,-5961,-4556,-2641,-526,1474,3025,3835,3734,2704,875,-1416,-3775,-5766, -7066,-7480,-6977,-5660,-3774,-1603,524,2279,3358,3556,2781,1170,-1021,-3394,-5507,-6992,-7616,-7297,-6141,-4328, -2157,57,1984,3307,3791,3334,1968,-50,-2361,-4543,-6196,-7052,-6998,-6058,-4428,-2341,-110,1912,3423,4153, 3949,2830,962,-1305,-3545,-5378,-6464,-6660,-5941,-4443,-2418,-149,2039,3801,4848,4989,4159,2514,358,-1913, -3839,-5088,-5452,-4883,-3504,-1531,745,2990,4899,6155,6550,5990,4575,2553,327,-1724,-3183,-3827,-3566,-2460, -705,1437,3663,5622,7018,7607,7243,5982,4026,1743,-448,-2173,-3132,-3196,-2388,-866,1133,3309,5327,6879, 7669,7535,6451,4585,2269,-87,-2059,-3317,-3687,-3136,-1799,81,2216,4288,5955,6939,7025,6161,4465,2220, -158,-2265,-3733,-4344,-4054,-2935,-1195,873,2975,4765,5955,6305,5705,4236,2133,-238,-2431,-4093,-4943,-4871, -3942,-2334,-292,1860,3797,5202,5819,5502,4258,2279,-71,-2375,-4230,-5323,-5515,-4810,-3354,-1408,747,2766, 4332,5165,5068,4043,2238,-56,-2398,-4392,-5706,-6136,-5682,-4430,-2607,-518,1542,3237,4272,4445,3675,2062, -125,-2496,-4634,-6163,-6862,-6640,-5580,-3864,-1756,414,2312,3641,4139,3688,2331,297,-2046,-4258,-5965,-6864, -6853,-5956,-4344,-2286,-69,1971,3499,4264,4099,3003,1172,-1084,-3325,-5149,-6252,-6463,-5774,-4333,-2363,-180, 1919,3595,4565,4639,3781,2106,-64,-2347,-4318,-5632,-6085,-5633,-4353,-2476,-274,1930,3811,5060,5445,4868, 3415,1327,-992,-3118,-4676,-5403,-5208,-4158,-2421,-279,1952,3945,5367,5983,5650,4388,2432,128,-2099,-3838, -4814,-4875,-4054,-2503,-474,1716,3745,5293,6079,5952,4898,3069,797,-1497,-3418,-4612,-4939,-4352,-2983,-1054, 1125,3263,5006,6070,6237,5456,3838,1666,-680,-2746,-4195,-4788,-4464,-3306,-1501,671,2877,4787,6092,6540, 6024,4602,2526,182,-2016,-3664,-4499,-4419,-3469,-1840,213,2380,4314,5705,6312,5976,4731,2765,433,-1855, -3687,-4781,-4961,-4252,-2792,-824,1349,3409,5022,5889,5848,4852,3060,774,-1592,-3605,-4932,-5385,-4905,-3616, -1722,482,2651,4466,5621,5873,5165,3588,1414,-953,-3089,-4620,-5297,-5065,-3978,-2240,-132,2023,3892,5164, 5612,5104,3702,1647,-717,-2934,-4649,-5562,-5566,-4699,-3123,-1099,1072,3054,4530,5231,5010,3854,1939,-379, -2696,-4593,-5753,-6014,-5353,-3912,-1929,287,2423,4125,5121,5183,4302,2588,359,-1990,-4014,-5378,-5871,-5441, -4193,-2348,-190,1947,3756,4912,5220,4573,3068,965,-1358,-3478,-5018,-5734,-5534,-4484,-2778,-671,1519,3453, 4830,5392,5014,3728,1744,-575,-2812,-4577,-5565,-5650,-4844,-3301,-1277,933,2999,4576,5394,5284,4217,2366, 47,-2298,-4256,-5492,-5835,-5255,-3884,-1963,217,2320,4027,5044,5169,4356,2713,530,-1791,-3835,-5245,-5803, -5449,-4272,-2468,-336,1814,3650,4871,5259,4696,3252,1189,-1142,-3306,-4932,-5747,-5656,-4704,-3062,-984,1209, 3195,4635,5290,4996,3771,1810,-529,-2831,-4663,-5754,-5927,-5194,-3712,-1735,450,2498,4094,4946,4903,3921, 2153,-93,-2399,-4359,-5629,-6031,-5532,-4227,-2347,-187,1937,3699,4805,5041,4324,2768,640,-1674,-3754,-5227, -5878,-5614,-4511,-2754,-626,1562,3482,4813,5319,4874,3518,1491,-846,-3065,-4779,-5689,-5695,-4812,-3234,-1190, 1000,3002,4494,5222,5018,3892,2013,-271,-2545,-4393,-5517,-5750,-5085,-3651,-1703,462,2537,4180,5127,5179, 4291,2598,401,-1916,-3917,-5264,-5756,-5340,-4105,-2270,-104,2063,3898,5104,5455,4840,3370,1277,-1046,-3170, -4726,-5449,-5255,-4200,-2473,-333,1892,3871,5292,5915,5597,4365,2432,148,-2048,-3772,-4737,-4796,-3971,-2425, -408,1786,3818,5373,6173,6071,5039,3251,1016,-1261,-3167,-4380,-4727,-4185,-2861,-981,1164,3264,4979,6018, 6168,5382,3752,1571,-777,-2849,-4299,-4898,-4584,-3436,-1656,485,2651,4526,5791,6214,5685,4267,2217,-99, -2260,-3880,-4689,-4589,-3621,-1969,102,2286,4263,5697,6356,6074,4890,2977,691,-1557,-3365,-4453,-4636,-3943, -2496,-541,1632,3692,5317,6217,6215,5268,3520,1281,-1042,-3030,-4345,-4788,-4310,-3023,-1145,1031,3180,4968, 6089,6334,5617,4054,1896,-459,-2578,-4098,-4778,-4538,-3458,-1725,368,2517,4393,5690,6160,5691,4327,2301, -32,-2251,-3980,-4924,-4957,-4136,-2595,-585,1582,3574,5068,5787,5598,4479,2593,297,-2011,-3910,-5099,-5395, -4790,-3404,-1486,675,2747,4402,5345,5392,4490,2778,529,-1831,-3876,-5273,-5810,-5427,-4224,-2410,-288,1837, 3624,4783,5079,4429,2915,792,-1562,-3727,-5321,-6104,-5967,-4981,-3317,-1240,935,2865,4250,4832,4466,3190, 1214,-1104,-3344,-5134,-6147,-6257,-5484,-3978,-1981,209,2256,3823,4644,4551,3507,1687,-588,-2906,-4842,-6077, -6425,-5853,-4495,-2585,-406,1707,3425,4459,4606,3808,2170,-14,-2358,-4425,-5864,-6446,-6115,-4949,-3159,-1016, 1150,3016,4281,4701,4181,2790,760,-1547,-3700,-5322,-6147,-6058,-5099,-3444,-1344,873,2894,4372,5065,4825, 3645,1736,-551,-2807,-4611,-5667,-5814,-5064,-3562,-1552,668,2755,4393,5290,5275,4330,2586,348,-1948,-3911, -5201,-5624,-5126,-3830,-1951,216,2357,4138,5262,5519,4829,3290,1170,-1153,-3246,-4750,-5426,-5189,-4116,-2387, -270,1898,3800,5131,5631,5178,3826,1800,-531,-2755,-4468,-5383,-5385,-4498,-2904,-851,1343,3354,4847,5570, 5368,4239,2364,87,-2187,-4044,-5184,-5431,-4778,-3354,-1410,774,2865,4546,5511,5585,4721,3039,842,-1480, -3498,-4868,-5383,-4992,-3776,-1958,179,2313,4125,5309,5622,4983,3474,1348,-1015,-3176,-4774,-5540,-5387,-4371, -2679,-589,1599,3533,4913,5477,5121,3845,1885,-418,-2638,-4382,-5364,-5439,-4623,-3092,-1069,1126,3171,4739, 5564,5487,4482,2707,479,-1784,-3684,-4895,-5241,-4681,-3336,-1437,725,2842,4570,5617,5785,4996,3382,1209, -1116,-3168,-4604,-5182,-4862,-3695,-1909,229,2390,4250,5503,5913,5369,3953,1894,-436,-2604,-4233,-5055,-4966, -4013,-2367,-291,1904,3883,5334,6007,5742,4573,2684,420,-1806,-3608,-4667,-4838,-4122,-2660,-689,1490,3565, 5194,6094,6094,5147,3401,1166,-1151,-3131,-4444,-4893,-4422,-3148,-1294,855,2976,4745,5848,6080,5368,3809, 1662,-677,-2787,-4303,-4983,-4759,-3679,-1960,138,2296,4191,5494,5993,5556,4223,2239,-66,-2255,-3954,-4877, -4905,-4064,-2518,-510,1646,3644,5140,5881,5703,4602,2742,472,-1817,-3699,-4867,-5159,-4544,-3156,-1242,925, 2997,4648,5598,5651,4770,3076,848,-1487,-3530,-4925,-5467,-5097,-3912,-2117,-1,2111,3903,5061,5378,4747, 3258,1167,-1163,-3312,-4905,-5695,-5573,-4606,-2960,-892,1269,3204,4598,5191,4849,3603,1654,-644,-2875,-4645, -5654,-5765,-4991,-3484,-1490,693,2738,4308,5139,5056,4029,2223,-33,-2341,-4271,-5518,-5882,-5338,-4011,-2122, 24,2110,3824,4848,5001,4226,2623,471,-1844,-3904,-5346,-5952,-5656,-4532,-2771,-655,1494,3352,4620,5054, 4544,3156,1122,-1189,-3365,-5007,-5857,-5791,-4863,-3227,-1151,1055,3054,4522,5215,4975,3807,1911,-377,-2634, -4455,-5541,-5720,-5004,-3532,-1554,641,2718,4351,5261,5273,4338,2617,408,-1886,-3851,-5149,-5599,-5136,-3879, -2027,118,2253,4031,5166,5439,4766,3241,1135,-1183,-3281,-4798,-5489,-5276,-4222,-2498,-380,1799,3725,5069, 5587,5161,3829,1817,-511,-2732,-4439,-5367,-5381,-4514,-2938,-896,1296,3308,4806,5549,5368,4267,2414,146, -2127,-4005,-5179,-5459,-4851,-3465,-1544,619,2703,4372,5340,5425,4565,2884,688,-1647,-3681,-5079,-5623,-5257, -4066,-2259,-122,2027,3851,5052,5376,4759,3265,1146,-1206,-3379,-4983,-5765,-5628,-4631,-2946,-860,1327,3259, 4646,5235,4876,3616,1664,-643,-2875,-4642,-5652,-5761,-4980,-3477,-1478,705,2744,4311,5134,5055,4046,2260, 26,-2265,-4198,-5449,-5824,-5289,-3962,-2086,85,2196,3930,4983,5147,4371,2760,588,-1752,-3821,-5281,-5882, -5581,-4441,-2661,-523,1646,3524,4782,5211,4696,3301,1270,-1039,-3198,-4820,-5644,-5558,-4615,-2980,-904,1291, 3271,4735,5423,5183,4032,2155,-105,-2328,-4135,-5201,-5381,-4674,-3206,-1234,956,3045,4684,5596,5611,4688, 2971,755,-1549,-3511,-4808,-5246,-4767,-3488,-1630,528,2654,4433,5539,5796,5106,3570,1450,-867,-2964,-4460, -5132,-4901,-3823,-2092,5,2173,4067,5383,5891,5469,4155,2179,-108,-2282,-3972,-4889,-4899,-4051,-2487,-448, 1735,3756,5275,6040,5885,4811,2975,729,-1536,-3398,-4554,-4820,-4188,-2784,-849,1329,3424,5094,6068,6146, 5287,3617,1425,-889,-2907,-4286,-4808,-4431,-3235,-1428,685,2813,4615,5791,6116,5501,4026,1949,-381,-2533, -4125,-4922,-4814,-3864,-2233,-177,1967,3893,5270,5850,5509,4241,2280,-30,-2284,-4082,-5120,-5264,-4524,-3055, -1084,1064,3071,4611,5415,5312,4283,2481,222,-2075,-4012,-5261,-5632,-5108,-3796,-1930,195,2267,3962,4987, 5133,4350,2743,585,-1736,-3805,-5267,-5897,-5622,-4524,-2791,-699,1426,3277,4532,4958,4439,3048,1002,-1315, -3501,-5173,-6048,-6015,-5131,-3538,-1502,664,2628,4077,4742,4492,3318,1429,-848,-3093,-4915,-6003,-6198,-5506, -4063,-2114,54,2110,3724,4627,4636,3722,2016,-181,-2457,-4420,-5725,-6172,-5717,-4468,-2620,-476,1665,3454, 4604,4898,4248,2752,665,-1638,-3721,-5231,-5926,-5708,-4643,-2916,-798,1390,3331,4694,5242,4854,3576,1625, -645,-2816,-4492,-5393,-5400,-4528,-2939,-891,1314,3341,4877,5659,5517,4462,2660,438,-1792,-3631,-4777,-5040, -4407,-3004,-1064,1122,3239,4954,5964,6099,5282,3662,1495,-793,-2801,-4177,-4709,-4334,-3139,-1326,816,2974, 4812,6035,6402,5826,4376,2303,-15,-2160,-3746,-4527,-4399,-3425,-1760,303,2469,4394,5772,6365,6024,4773, 2837,536,-1693,-3481,-4517,-4661,-3920,-2444,-467,1692,3721,5276,6105,6029,5016,3229,986,-1322,-3270,-4544, -4955,-4451,-3158,-1299,850,2945,4675,5722,5896,5127,3521,1348,-998,-3080,-4565,-5199,-4933,-3821,-2072,31, 2163,4012,5249,5658,5123,3714,1660,-671,-2872,-4540,-5429,-5411,-4524,-2942,-915,1247,3203,4646,5313,5056, 3878,1970,-322,-2588,-4444,-5570,-5793,-5129,-3703,-1752,423,2499,4124,5041,5056,4137,2410,193,-2119,-4104, -5431,-5891,-5440,-4179,-2325,-180,1946,3729,4853,5114,4439,2912,805,-1510,-3613,-5125,-5816,-5607,-4548,-2833, -737,1424,3324,4654,5178,4764,3468,1495,-793,-2982,-4689,-5632,-5664,-4829,-3275,-1239,948,2973,4502,5271, 5120,4044,2207,-43,-2318,-4187,-5358,-5637,-5012,-3618,-1687,499,2595,4275,5258,5352,4516,2867,689,-1603, -3618,-4992,-5518,-5138,-3940,-2123,9,2153,3979,5177,5531,4950,3498,1437,-870,-3003,-4590,-5381,-5267,-4297, -2649,-584,1581,3516,4914,5513,5184,3938,1989,-305,-2541,-4322,-5342,-5466,-4703,-3207,-1222,950,2975,4529, 5359,5271,4259,2474,241,-2031,-3954,-5193,-5558,-5023,-3705,-1830,315,2411,4123,5171,5349,4597,3021,893, -1406,-3460,-4905,-5528,-5243,-4130,-2388,-285,1863,3724,4995,5433,4937,3570,1550,-747,-2909,-4557,-5404,-5350, -4438,-2820,-774,1403,3377,4835,5515,5277,4118,2258,1,-2230,-4041,-5115,-5304,-4611,-3172,-1220,941,2996, 4615,5525,5544,4646,2950,771,-1503,-3461,-4772,-5238,-4807,-3569,-1745,375,2487,4258,5381,5656,4982,3469, 1368,-948,-3050,-4585,-5301,-5112,-4088,-2397,-326,1809,3692,5005,5508,5078,3762,1775,-521,-2728,-4436,-5376, -5434,-4612,-3087,-1094,1060,3037,4539,5286,5126,4051,2235,-9,-2259,-4128,-5299,-5596,-5014,-3656,-1767,380, 2448,4129,5111,5221,4402,2770,607,-1688,-3698,-5087,-5641,-5276,-4107,-2320,-202,1929,3750,4953,5308,4732, 3292,1238,-1068,-3205,-4788,-5568,-5455,-4484,-2840,-784,1381,3307,4692,5298,4986,3772,1865,-400,-2601,-4362, -5386,-5524,-4785,-3314,-1336,822,2860,4430,5285,5237,4268,2536,339,-1923,-3835,-5081,-5454,-4936,-3620,-1743, 420,2543,4285,5364,5571,4834,3272,1150,-1148,-3198,-4647,-5256,-4969,-3848,-2087,31,2178,4059,5329,5783, 5292,3937,1936,-349,-2509,-4152,-5022,-4991,-4108,-2515,-489,1686,3653,5117,5816,5595,4465,2600,347,-1898, -3734,-4849,-5072,-4412,-2994,-1055,1116,3189,4827,5749,5784,4867,3172,971,-1332,-3315,-4644,-5122,-4680,-3442, -1613,514,2632,4405,5536,5806,5152,3642,1553,-755,-2853,-4384,-5100,-4928,-3906,-2232,-167,1976,3865,5197, 5720,5310,4023,2053,-242,-2453,-4183,-5153,-5225,-4425,-2895,-896,1272,3283,4797,5564,5418,4346,2522,272, -2008,-3900,-5094,-5402,-4812,-3444,-1540,623,2705,4383,5374,5487,4658,3024,858,-1428,-3452,-4843,-5398,-5050, -3880,-2100,11,2146,3964,5173,5536,4965,3536,1487,-822,-2959,-4555,-5352,-5247,-4286,-2639,-568,1603,3555, 4962,5576,5266,4035,2111,-174,-2402,-4176,-5205,-5343,-4588,-3099,-1112,1071,3110,4683,5530,5469,4479,2719, 503,-1771,-3690,-4945,-5330,-4818,-3516,-1648,491,2591,4317,5371,5562,4814,3244,1114,-1189,-3256,-4723,-5366, -5100,-4004,-2265,-169,1973,3841,5113,5550,5050,3670,1640,-677,-2868,-4544,-5427,-5407,-4523,-2927,-897,1264, 3224,4667,5339,5092,3932,2048,-224,-2478,-4318,-5432,-5662,-5007,-3593,-1661,492,2533,4142,5045,5062,4149, 2447,259,-2038,-4016,-5351,-5833,-5411,-4175,-2354,-231,1890,3664,4795,5070,4404,2890,790,-1522,-3632,-5171, -5888,-5706,-4672,-2976,-893,1253,3157,4480,4998,4577,3275,1304,-981,-3183,-4885,-5829,-5879,-5055,-3523,-1524, 640,2629,4137,4894,4740,3679,1868,-356,-2603,-4468,-5636,-5930,-5335,-3971,-2060,99,2191,3878,4870,5000, 4183,2560,405,-1887,-3888,-5267,-5812,-5445,-4261,-2459,-330,1817,3648,4871,5241,4691,3270,1242,-1040,-3146, -4713,-5479,-5360,-4375,-2723,-660,1501,3436,4833,5445,5140,3946,2059,-182,-2369,-4124,-5134,-5262,-4517,-3038, -1064,1100,3136,4711,5559,5513,4542,2800,604,-1662,-3581,-4832,-5223,-4712,-3411,-1546,600,2699,4434,5501, 5695,4962,3403,1282,-1004,-3047,-4500,-5126,-4854,-3755,-2023,66,2198,4045,5312,5746,5264,3908,1926,-356, -2502,-4140,-5012,-4998,-4121,-2542,-526,1630,3586,5048,5736,5512,4379,2521,274,-1961,-3794,-4900,-5130,-4472, -3061,-1136,1025,3083,4703,5622,5655,4757,3070,884,-1397,-3360,-4685,-5158,-4723,-3507,-1692,420,2522,4289, 5410,5687,5037,3543,1472,-817,-2905,-4430,-5152,-4984,-3973,-2307,-244,1889,3774,5110,5639,5237,3958,2004, -279,-2483,-4208,-5182,-5258,-4473,-2957,-967,1189,3192,4705,5468,5338,4275,2474,241,-2022,-3907,-5097,-5415, -4841,-3500,-1609,522,2587,4256,5241,5353,4542,2922,773,-1510,-3524,-4924,-5500,-5163,-4018,-2261,-168,1961, 3771,4972,5340,4775,3353,1314,-988,-3121,-4727,-5537,-5464,-4533,-2905,-864,1288,3219,4625,5234,4927,3715, 1804,-463,-2687,-4463,-5509,-5670,-4951,-3495,-1537,607,2621,4182,5024,4966,3990,2246,36,-2229,-4158,-5419, -5816,-5328,-4047,-2201,-75,2017,3744,4810,5018,4298,2746,636,-1661,-3720,-5185,-5846,-5592,-4510,-2785,-684, 1459,3332,4619,5082,4612,3265,1270,-1016,-3181,-4837,-5714,-5695,-4821,-3225,-1201,968,2940,4410,5106,4894, 3770,1934,-305,-2533,-4352,-5456,-5680,-5018,-3613,-1668,497,2564,4206,5143,5196,4330,2666,506,-1763,-3721, -5046,-5528,-5110,-3876,-2041,98,2237,4035,5193,5499,4873,3402,1331,-949,-3032,-4552,-5263,-5078,-4043,-2336, -246,1913,3833,5182,5723,5335,4065,2124,-142,-2320,-4012,-4956,-5003,-4185,-2651,-647,1530,3534,5065,5847, 5723,4682,2889,673,-1564,-3443,-4629,-4944,-4368,-3015,-1117,1042,3137,4823,5828,5957,5154,3532,1378,-914, -2931,-4332,-4901,-4554,-3387,-1613,499,2625,4439,5636,5996,5430,3999,1949,-348,-2484,-4080,-4879,-4783,-3831, -2204,-159,1987,3911,5303,5911,5597,4394,2486,215,-2005,-3787,-4837,-5007,-4294,-2840,-885,1274,3297,4860, 5706,5646,4676,2923,709,-1570,-3502,-4779,-5186,-4691,-3404,-1561,577,2653,4376,5425,5608,4865,3299,1167, -1127,-3188,-4654,-5297,-5045,-3962,-2240,-162,1965,3804,5060,5496,5013,3658,1662,-630,-2795,-4456,-5350,-5350, -4490,-2931,-914,1235,3190,4644,5335,5105,3974,2117,-129,-2363,-4193,-5307,-5539,-4882,-3480,-1553,599,2641, 4258,5174,5197,4302,2614,437,-1836,-3794,-5118,-5585,-5159,-3930,-2110,3,2113,3881,5005,5294,4656,3173, 1109,-1175,-3257,-4782,-5506,-5335,-4321,-2649,-585,1559,3458,4797,5338,4953,3690,1750,-519,-2704,-4419,-5374, -5447,-4651,-3129,-1142,1015,3006,4508,5273,5138,4079,2292,67,-2178,-4044,-5227,-5538,-4959,-3612,-1727,414, 2481,4150,5134,5260,4462,2854,722,-1544,-3552,-4947,-5515,-5184,-4044,-2284,-187,1944,3753,4967,5343,4792, 3390,1366,-916,-3026,-4620,-5426,-5343,-4401,-2781,-743,1404,3337,4739,5347,5041,3840,1945,-296,-2511,-4265, -5300,-5447,-4727,-3279,-1322,822,2839,4398,5243,5194,4232,2501,318,-1936,-3851,-5112,-5515,-5037,-3769,-1937, 182,2275,3992,5059,5273,4560,3026,927,-1360,-3407,-4877,-5535,-5287,-4217,-2508,-430,1704,3561,4837,5292, 4821,3489,1494,-781,-2940,-4587,-5469,-5465,-4597,-3024,-1016,1138,3099,4552,5252,5039,3930,2104,-122,-2336, -4159,-5270,-5514,-4876,-3489,-1565,575,2629,4258,5194,5246,4382,2722,582,-1679,-3645,-4977,-5472,-5062,-3851, -2046,79,2199,3986,5138,5438,4808,3340,1277,-998,-3084,-4610,-5338,-5168,-4153,-2471,-404,1738,3641,4986, 5538,5160,3900,1978,-270,-2451,-4153,-5116,-5194,-4414,-2903,-920,1229,3222,4747,5532,5421,4396,2626,420, -1813,-3697,-4885,-5221,-4660,-3331,-1449,691,2778,4459,5469,5606,4814,3211,1072,-1204,-3215,-4614,-5184,-4851, -3700,-1935,160,2283,4105,5311,5686,5144,3731,1715,-567,-2689,-4278,-5095,-5015,-4078,-2470,-439,1703,3633, 5029,5660,5359,4173,2291,42,-2167,-3961,-5009,-5174,-4477,-3034,-1071,1077,3103,4672,5527,5487,4516,2780, 577,-1697,-3635,-4913,-5331,-4852,-3586,-1750,381,2471,4188,5253,5456,4730,3181,1072,-1219,-3276,-4746,-5416, -5178,-4113,-2405,-339,1785,3631,4895,5356,4886,3547,1572,-707,-2864,-4528,-5429,-5435,-4581,-3024,-1009,1145, 3111,4582,5277,5068,3946,2104,-135,-2369,-4198,-5313,-5562,-4923,-3526,-1598,554,2608,4233,5168,5216,4333, 2672,501,-1763,-3719,-5048,-5526,-5111,-3893,-2089,27,2138,3922,5063,5371,4752,3293,1246,-1018,-3095,-4615, -5340,-5164,-4154,-2475,-405,1744,3655,5005,5558,5188,3938,2010,-250,-2419,-4134,-5089,-5156,-4357,-2828,-826, 1337,3345,4866,5652,5534,4493,2717,506,-1734,-3601,-4784,-5104,-4528,-3188,-1303,834,2908,4584,5573,5710, 4918,3326,1201,-1067,-3077,-4476,-5048,-4728,-3590,-1835,258,2383,4189,5396,5764,5211,3807,1776,-511,-2636, -4242,-5058,-4986,-4062,-2447,-415,1722,3646,5036,5646,5327,4129,2230,-26,-2241,-4024,-5066,-5233,-4531,-3094, -1156,978,2976,4523,5360,5306,4337,2604,407,-1848,-3780,-5058,-5482,-5016,-3766,-1951,154,2225,3931,4981, 5193,4465,2918,811,-1477,-3543,-5023,-5695,-5465,-4409,-2706,-648,1470,3312,4580,5016,4547,3201,1214,-1063, -3213,-4876,-5763,-5769,-4920,-3365,-1373,766,2708,4155,4850,4629,3521,1702,-521,-2727,-4547,-5660,-5903,-5267, -3885,-1962,176,2227,3847,4782,4840,3983,2336,192,-2066,-4015,-5346,-5829,-5412,-4197,-2386,-255,1870,3659, 4820,5128,4516,3073,1027,-1228,-3293,-4809,-5522,-5347,-4332,-2651,-587,1560,3467,4812,5373,5017,3782,1880, -346,-2497,-4186,-5136,-5207,-4416,-2917,-926,1230,3226,4765,5553,5453,4449,2692,513,-1709,-3578,-4752,-5082, -4518,-3190,-1305,830,2910,4595,5611,5756,4979,3395,1280,-982,-2975,-4373,-4942,-4616,-3475,-1727,355,2469, 4286,5489,5872,5336,3946,1940,-319,-2430,-4026,-4845,-4773,-3857,-2257,-245,1889,3811,5202,5833,5541,4370, 2495,250,-1958,-3742,-4802,-4985,-4299,-2867,-926,1213,3218,4792,5641,5609,4652,2929,745,-1520,-3457,-4732, -5160,-4696,-3448,-1632,478,2553,4268,5329,5534,4823,3293,1194,-1080,-3136,-4610,-5282,-5059,-4011,-2318,-263, 1854,3702,4971,5432,4973,3649,1677,-598,-2753,-4425,-5333,-5357,-4523,-2978,-979,1162,3127,4587,5295,5093, 3981,2160,-63,-2290,-4122,-5253,-5514,-4889,-3510,-1604,538,2580,4202,5132,5186,4321,2673,524,-1726,-3692, -5027,-5522,-5130,-3934,-2144,-41,2063,3839,4981,5292,4681,3229,1178,-1094,-3178,-4720,-5466,-5314,-4329,-2679, -621,1519,3422,4773,5326,4961,3717,1793,-461,-2644,-4366,-5339,-5428,-4658,-3160,-1188,957,2949,4462,5241, 5123,4092,2332,130,-2100,-3978,-5172,-5509,-4957,-3644,-1769,357,2422,4095,5095,5228,4446,2859,745,-1524, -3532,-4946,-5536,-5223,-4094,-2348,-254,1876,3692,4912,5293,4761,3365,1348,-928,-3049,-4649,-5467,-5398,-4478, -2866,-832,1306,3244,4644,5262,4975,3791,1912,-325,-2528,-4294,-5340,-5510,-4812,-3372,-1432,714,2724,4299, 5151,5124,4183,2466,302,-1946,-3877,-5148,-5567,-5102,-3845,-2016,102,2200,3925,5004,5233,4531,3007,925, -1351,-3397,-4865,-5533,-5288,-4231,-2518,-452,1678,3536,4806,5264,4806,3482,1524,-740,-2884,-4536,-5416,-5429, -4569,-3020,-1019,1124,3069,4521,5226,5022,3919,2102,-113,-2332,-4155,-5279,-5529,-4909,-3529,-1615,518,2567, 4194,5127,5179,4314,2659,518,-1745,-3704,-5039,-5543,-5149,-3943,-2154,-29,2063,3835,4973,5271,4656,3200, 1144,-1117,-3195,-4718,-5443,-5286,-4292,-2630,-580,1554,3440,4781,5326,4963,3726,1819,-421,-2584,-4285,-5253, -5337,-4564,-3073,-1095,1045,3042,4571,5362,5252,4239,2488,303,-1921,-3791,-4972,-5305,-4752,-3431,-1553,580, 2648,4321,5333,5471,4695,3114,1002,-1251,-3242,-4637,-5202,-4884,-3750,-1987,87,2206,4015,5225,5609,5083, 3697,1708,-548,-2651,-4241,-5060,-4997,-4080,-2483,-459,1674,3598,5002,5634,5351,4192,2332,106,-2086,-3858, -4912,-5084,-4397,-2959,-1029,1112,3120,4689,5542,5514,4566,2865,694,-1548,-3463,-4730,-5146,-4677,-3427,-1608, 501,2574,4287,5344,5562,4868,3352,1278,-978,-3025,-4498,-5169,-4955,-3908,-2224,-174,1944,3788,5061,5520, 5068,3764,1808,-444,-2585,-4245,-5150,-5176,-4351,-2813,-822,1306,3267,4710,5419,5214,4119,2303,91,-2118, -3944,-5065,-5323,-4703,-3333,-1437,693,2725,4340,5272,5330,4473,2830,695,-1549,-3510,-4846,-5348,-4968,-3785, -2012,81,2180,3950,5097,5420,4820,3387,1355,-902,-2981,-4506,-5262,-5117,-4139,-2490,-450,1686,3581,4935, 5492,5138,3909,2007,-225,-2388,-4096,-5070,-5163,-4398,-2901,-936,1203,3186,4707,5495,5388,4379,2638,453, -1761,-3637,-4830,-5172,-4638,-3332,-1473,643,2707,4376,5385,5532,4770,3204,1109,-1147,-3151,-4566,-5157,-4857, -3745,-2013,74,2188,4005,5219,5608,5081,3705,1696,-564,-2678,-4281,-5106,-5048,-4143,-2548,-522,1606,3536, 4929,5567,5271,4109,2244,14,-2189,-3959,-5023,-5217,-4536,-3119,-1195,933,2938,4511,5374,5354,4415,2722, 554,-1697,-3633,-4912,-5355,-4910,-3673,-1864,242,2322,4046,5121,5347,4650,3134,1044,-1225,-3278,-4765,-5442, -5225,-4180,-2493,-435,1683,3536,4808,5271,4821,3504,1546,-704,-2850,-4514,-5414,-5440,-4605,-3067,-1082,1058, 3009,4471,5187,4994,3912,2103,-102,-2313,-4143,-5277,-5541,-4936,-3562,-1657,471,2518,4144,5088,5156,4303, 2660,525,-1732,-3695,-5043,-5546,-5152,-3965,-2180,-68,2036,3816,4963,5272,4661,3223,1177,-1072,-3151,-4680, -5427,-5286,-4304,-2657,-620,1512,3406,4747,5302,4938,3710,1816,-424,-2587,-4303,-5278,-5382,-4624,-3141,-1175, 961,2948,4466,5252,5143,4127,2371,186,-2045,-3920,-5122,-5469,-4934,-3616,-1761,361,2430,4095,5100,5242, 4466,2885,780,-1488,-3486,-4895,-5476,-5176,-4054,-2320,-245,1865,3673,4875,5269,4741,3366,1376,-878,-2986, -4578,-5410,-5351,-4442,-2849,-831,1297,3227,4629,5263,4982,3828,1968,-254,-2445,-4212,-5263,-5444,-4755,-3314, -1390,761,2775,4343,5206,5185,4248,2564,404,-1833,-3745,-5004,-5423,-4959,-3714,-1888,219,2302,4022,5094, 5322,4643,3141,1086,-1148,-3182,-4646,-5303,-5078,-4026,-2339,-282,1843,3697,4975,5448,5013,3716,1775,-463, -2586,-4233,-5120,-5138,-4296,-2748,-747,1384,3348,4810,5517,5326,4237,2440,245,-1957,-3769,-4881,-5136,-4528, -3157,-1262,868,2890,4513,5440,5498,4656,3029,904,-1333,-3290,-4629,-5134,-4757,-3584,-1818,271,2361,4125, 5263,5581,4972,3538,1505,-752,-2827,-4362,-5119,-4983,-4015,-2372,-346,1777,3660,4994,5536,5174,3936,2038, -201,-2367,-4084,-5065,-5178,-4424,-2950,-1007,1112,3075,4580,5357,5244,4233,2492,310,-1904,-3774,-4978,-5340, -4814,-3527,-1680,417,2466,4121,5118,5260,4489,2913,821,-1431,-3435,-4850,-5444,-5157,-4052,-2338,-253,1844, 3644,4848,5237,4716,3340,1348,-899,-3004,-4607,-5432,-5378,-4483,-2899,-893,1228,3147,4540,5171,4904,3755, 1915,-299,-2469,-4231,-5283,-5471,-4799,-3381,-1467,665,2666,4242,5108,5101,4181,2512,365,-1858,-3768,-5033, -5471,-5012,-3775,-1958,151,2234,3960,5045,5285,4615,3119,1061,-1181,-3205,-4677,-5340,-5114,-4071,-2385,-327, 1791,3652,4931,5413,4990,3700,1777,-461,-2586,-4229,-5126,-5155,-4322,-2793,-815,1320,3272,4733,5457,5277, 4212,2430,237,-1963,-3783,-4916,-5187,-4585,-3223,-1336,796,2830,4460,5407,5482,4638,3019,900,-1346,-3304, -4653,-5163,-4786,-3617,-1850,249,2337,4111,5256,5576,4983,3554,1530,-709,-2778,-4314,-5063,-4939,-3974,-2344, -318,1808,3694,5041,5600,5253,4037,2151,-81,-2236,-3955,-4944,-5063,-4315,-2837,-885,1241,3227,4750,5542, 5448,4444,2703,525,-1700,-3577,-4780,-5138,-4613,-3321,-1464,652,2707,4378,5381,5529,4767,3196,1101,-1148, -3143,-4558,-5141,-4856,-3756,-2036,35,2133,3946,5157,5554,5040,3676,1690,-560,-2669,-4274,-5116,-5070,-4174, -2593,-576,1552,3479,4890,5527,5265,4113,2258,39,-2159,-3936,-5000,-5192,-4524,-3101,-1180,949,2953,4524, 5390,5370,4437,2754,602,-1632,-3557,-4832,-5268,-4825,-3599,-1792,302,2373,4085,5160,5386,4711,3210,1154, -1101,-3136,-4621,-5307,-5103,-4067,-2406,-352,1769,3608,4885,5357,4918,3618,1671,-572,-2709,-4373,-5290,-5324, -4499,-2971,-988,1136,3086,4542,5246,5052,3963,2163,-35,-2247,-4055,-5190,-5461,-4862,-3511,-1626,492,2517, 4137,5066,5137,4290,2660,537,-1704,-3668,-5015,-5531,-5166,-4002,-2233,-149,1945,3715,4857,5176,4567,3145, 1114,-1144,-3216,-4758,-5516,-5382,-4419,-2779,-751,1362,3251,4589,5134,4787,3557,1665,-563,-2718,-4427,-5403, -5516,-4757,-3284,-1339,783,2762,4268,5053,4948,3950,2220,53,-2162,-4028,-5229,-5576,-5061,-3766,-1915,197, 2246,3918,4929,5084,4327,2766,678,-1566,-3562,-4970,-5567,-5271,-4164,-2440,-363,1742,3545,4757,5152,4636, 3277,1293,-940,-3037,-4616,-5443,-5382,-4485,-2902,-901,1225,3140,4533,5175,4906,3764,1930,-269,-2441,-4190, -5249,-5436,-4765,-3352,-1432,689,2692,4273,5139,5132,4222,2549,416,-1811,-3723,-4988,-5423,-4971,-3740,-1930, 177,2252,3965,5054,5287,4619,3124,1073,-1164,-3185,-4651,-5313,-5096,-4054,-2376,-329,1780,3628,4898,5380, 4951,3666,1743,-486,-2601,-4242,-5146,-5173,-4342,-2827,-839,1282,3231,4691,5413,5232,4176,2400,219,-1982, -3793,-4922,-5194,-4602,-3239,-1357,761,2798,4417,5357,5438,4597,2979,866,-1362,-3311,-4654,-5171,-4795,-3628, -1866,221,2301,4066,5201,5520,4933,3519,1508,-724,-2791,-4319,-5081,-4956,-3998,-2390,-367,1748,3635,4972, 5535,5197,3993,2112,-97,-2248,-3960,-4948,-5069,-4335,-2870,-929,1191,3164,4683,5473,5375,4382,2657,493, -1718,-3585,-4782,-5144,-4628,-3345,-1509,596,2634,4298,5302,5450,4694,3138,1054,-1181,-3173,-4590,-5180,-4910, -3821,-2117,-60,2034,3833,5034,5447,4932,3579,1606,-630,-2734,-4335,-5185,-5144,-4268,-2704,-710,1406,3319, 4728,5356,5100,3958,2118,-92,-2270,-4045,-5109,-5312,-4652,-3239,-1341,773,2775,4333,5198,5188,4268,2602, 456,-1768,-3682,-4962,-5408,-4972,-3769,-1971,117,2179,3886,4964,5207,4540,3055,1014,-1225,-3259,-4747,-5438, -5243,-4221,-2559,-515,1589,3434,4715,5186,4763,3482,1555,-676,-2807,-4467,-5378,-5425,-4608,-3085,-1118,1001, 2945,4402,5122,4942,3867,2091,-92,-2289,-4094,-5231,-5512,-4926,-3582,-1706,403,2427,4054,5000,5083,4253, 2646,534,-1685,-3653,-4991,-5517,-5162,-4002,-2241,-152,1938,3704,4861,5187,4602,3193,1181,-1056,-3120,-4659, -5416,-5284,-4319,-2690,-659,1465,3355,4706,5267,4933,3722,1850,-364,-2513,-4222,-5198,-5312,-4564,-3096,-1149, 978,2959,4480,5279,5185,4213,2495,337,-1868,-3739,-4940,-5289,-4779,-3493,-1643,462,2518,4191,5208,5373, 4618,3073,995,-1242,-3238,-4655,-5247,-4957,-3859,-2135,-63,2039,3851,5063,5468,4958,3607,1632,-596,-2697, -4289,-5127,-5079,-4187,-2613,-612,1515,3432,4834,5477,5217,4082,2252,53,-2118,-3882,-4947,-5146,-4485,-3087, -1170,950,2956,4530,5396,5392,4476,2809,672,-1555,-3466,-4739,-5183,-4748,-3529,-1726,371,2441,4149,5237, 5463,4795,3300,1252,-988,-3010,-4490,-5164,-4958,-3934,-2266,-231,1873,3715,4984,5460,5035,3755,1834,-391, -2512,-4161,-5077,-5108,-4297,-2784,-809,1306,3240,4702,5415,5238,4176,2399,223,-1976,-3794,-4926,-5200,-4616, -3254,-1377,738,2759,4378,5307,5381,4543,2937,820,-1402,-3357,-4698,-5219,-4842,-3690,-1929,147,2229,3980, 5117,5440,4856,3439,1434,-793,-2852,-4385,-5145,-5027,-4074,-2463,-451,1658,3535,4867,5427,5085,3882,2008, -200,-2344,-4056,-5045,-5168,-4434,-2976,-1041,1074,3042,4546,5334,5236,4242,2524,368,-1844,-3701,-4897,-5260, -4749,-3471,-1645,449,2479,4142,5148,5290,4542,2998,927,-1298,-3293,-4700,-5301,-5027,-3947,-2240,-195,1894, 3692,4889,5299,4789,3439,1471,-755,-2847,-4450,-5295,-5250,-4380,-2813,-831,1280,3190,4588,5217,4960,3822, 1995,-198,-2374,-4131,-5192,-5399,-4738,-3346,-1440,661,2654,4213,5075,5069,4163,2511,384,-1824,-3730,-5008, -5454,-5026,-3819,-2025,54,2113,3823,4903,5152,4495,3017,991,-1237,-3262,-4734,-5420,-5221,-4207,-2552,-505, 1596,3444,4727,5219,4808,3546,1627,-582,-2701,-4350,-5264,-5309,-4505,-2988,-1030,1092,3040,4506,5235,5065, 4025,2266,104,-2078,-3885,-5017,-5308,-4727,-3399,-1534,574,2598,4233,5178,5277,4461,2875,786,-1430,-3381, -4729,-5266,-4921,-3772,-2029,44,2138,3902,5067,5407,4835,3437,1442,-785,-2842,-4388,-5158,-5050,-4106,-2501, -487,1619,3510,4854,5428,5115,3922,2070,-138,-2280,-3992,-4995,-5133,-4405,-2966,-1039,1066,3044,4562,5374, 5297,4335,2631,484,-1718,-3593,-4810,-5189,-4703,-3438,-1612,484,2529,4195,5221,5400,4660,3130,1060,-1175, -3178,-4606,-5226,-4971,-3899,-2205,-154,1936,3748,4966,5378,4891,3559,1603,-619,-2725,-4336,-5195,-5186,-4319, -2777,-797,1315,3232,4643,5299,5063,3952,2142,-57,-2227,-4013,-5102,-5335,-4693,-3315,-1417,693,2702,4286, 5172,5191,4298,2653,524,-1700,-3622,-4919,-5395,-4977,-3782,-1999,87,2150,3871,4971,5233,4595,3129,1100, -1127,-3161,-4651,-5352,-5178,-4182,-2533,-503,1600,3450,4742,5257,4859,3609,1709,-507,-2637,-4310,-5240,-5305, -4516,-3017,-1055,1057,3018,4502,5241,5095,4068,2306,135,-2065,-3889,-5045,-5346,-4789,-3465,-1593,515,2550, 4189,5154,5258,4454,2872,788,-1437,-3401,-4761,-5312,-4968,-3841,-2102,-31,2058,3831,5000,5357,4802,3416, 1430,-791,-2866,-4413,-5205,-5114,-4188,-2590,-572,1545,3439,4806,5392,5088,3909,2054,-151,-2299,-4028,-5042, -5195,-4481,-3040,-1109,1014,2997,4527,5351,5287,4329,2635,490,-1717,-3592,-4817,-5209,-4730,-3477,-1654,438, 2486,4174,5209,5397,4681,3157,1099,-1125,-3139,-4571,-5212,-4966,-3910,-2220,-172,1927,3740,4976,5409,4941, 3618,1669,-561,-2665,-4288,-5158,-5147,-4303,-2760,-780,1332,3259,4680,5339,5122,4017,2213,25,-2153,-3936, -5025,-5268,-4638,-3264,-1385,727,2723,4306,5201,5228,4360,2729,611,-1604,-3535,-4844,-5320,-4935,-3748,-1976, 91,2159,3889,4997,5276,4646,3193,1178,-1055,-3098,-4606,-5323,-5163,-4184,-2544,-518,1582,3438,4739,5254, 4870,3629,1731,-473,-2602,-4283,-5225,-5308,-4530,-3045,-1098,1013,2971,4455,5200,5070,4058,2319,160,-2031, -3856,-5018,-5344,-4801,-3491,-1639,464,2502,4153,5131,5254,4481,2914,832,-1388,-3359,-4734,-5298,-4985,-3870, -2139,-72,2020,3799,4987,5361,4827,3458,1480,-737,-2804,-4372,-5170,-5091,-4182,-2602,-602,1508,3402,4776, 5382,5099,3942,2105,-78,-2226,-3960,-4986,-5160,-4461,-3045,-1133,974,2961,4511,5349,5311,4392,2715,583, -1623,-3508,-4754,-5167,-4707,-3466,-1659,429,2481,4176,5220,5437,4736,3243,1195,-1033,-3046,-4496,-5149,-4917, -3882,-2207,-166,1927,3752,4995,5448,5000,3702,1771,-440,-2555,-4190,-5079,-5104,-4277,-2753,-788,1328,3254, 4693,5383,5185,4105,2322,136,-2044,-3849,-4969,-5238,-4630,-3282,-1406,700,2713,4313,5226,5278,4428,2808, 696,-1525,-3469,-4795,-5297,-4922,-3766,-2007,66,2134,3873,5001,5292,4686,3258,1247,-982,-3037,-4557,-5301, -5169,-4204,-2587,-573,1528,3401,4719,5262,4905,3684,1802,-414,-2551,-4251,-5228,-5334,-4585,-3120,-1183,934, 2898,4401,5173,5067,4069,2340,181,-2020,-3873,-5059,-5411,-4883,-3586,-1749,351,2390,4045,5040,5184,4419, 2873,794,-1429,-3413,-4811,-5399,-5108,-4018,-2298,-241,1851,3643,4846,5241,4726,3373,1408,-816,-2907,-4497, -5320,-5269,-4378,-2812,-814,1304,3212,4609,5233,4967,3829,1994,-200,-2359,-4116,-5162,-5355,-4682,-3270,-1358, 754,2751,4312,5164,5145,4226,2561,432,-1781,-3675,-4941,-5372,-4927,-3704,-1901,188,2252,3967,5036,5266, 4595,3105,1065,-1164,-3191,-4656,-5327,-5123,-4099,-2429,-387,1719,3562,4833,5307,4873,3589,1665,-556,-2676, -4326,-5234,-5264,-4447,-2930,-959,1156,3097,4548,5252,5074,4006,2230,54,-2132,-3944,-5073,-5355,-4759,-3419, -1546,558,2580,4198,5137,5206,4375,2771,666,-1557,-3507,-4849,-5367,-5009,-3852,-2096,-25,2052,3805,4948, 5263,4670,3254,1256,-981,-3042,-4575,-5325,-5203,-4245,-2635,-611,1494,3362,4693,5245,4900,3691,1810,-387, -2534,-4243,-5229,-5345,-4608,-3148,-1209,903,2877,4388,5171,5080,4094,2376,222,-1981,-3836,-5042,-5403,-4897, -3613,-1776,331,2373,4046,5052,5210,4464,2919,847,-1379,-3371,-4772,-5373,-5090,-4003,-2288,-226,1869,3666, 4885,5285,4790,3447,1491,-728,-2816,-4408,-5243,-5196,-4314,-2754,-759,1358,3277,4674,5325,5077,3953,2141, -43,-2209,-3962,-5022,-5229,-4565,-3167,-1259,853,2853,4427,5303,5303,4409,2753,633,-1576,-3482,-4749,-5192, -4759,-3538,-1741,343,2407,4119,5204,5455,4792,3324,1297,-931,-2954,-4429,-5112,-4918,-3909,-2250,-215,1886, 3726,5008,5494,5089,3825,1912,-294,-2416,-4076,-5003,-5052,-4260,-2755,-800,1317,3256,4720,5441,5280,4231, 2469,294,-1887,-3709,-4850,-5147,-4574,-3244,-1385,714,2736,4357,5294,5376,4559,2968,874,-1346,-3304,-4651, -5191,-4855,-3718,-1979,81,2154,3912,5063,5390,4820,3420,1432,-792,-2857,-4405,-5175,-5090,-4153,-2564,-556, 1546,3428,4768,5349,5022,3833,1973,-232,-2377,-4099,-5103,-5235,-4518,-3079,-1156,952,2927,4448,5249,5181, 4219,2517,370,-1831,-3699,-4913,-5297,-4803,-3539,-1725,365,2410,4089,5115,5300,4579,3067,1013,-1210,-3206, -4621,-5250,-4997,-3932,-2234,-187,1908,3719,4953,5385,4911,3592,1654,-558,-2654,-4263,-5121,-5104,-4244,-2697, -714,1400,3316,4738,5397,5168,4063,2263,82,-2080,-3853,-4937,-5168,-4529,-3150,-1265,840,2849,4423,5311, 5331,4458,2827,714,-1500,-3414,-4716,-5186,-4781,-3592,-1821,263,2327,4058,5157,5427,4788,3334,1308,-921, -2965,-4460,-5173,-5007,-4012,-2373,-342,1759,3613,4906,5419,5019,3769,1862,-355,-2489,-4167,-5113,-5192,-4419, -2932,-988,1121,3070,4545,5287,5152,4118,2369,203,-1996,-3838,-5004,-5329,-4780,-3475,-1628,468,2496,4135, 5099,5209,4420,2842,744,-1483,-3456,-4834,-5397,-5083,-3961,-2225,-165,1921,3693,4865,5223,4666,3278,1295, -932,-3010,-4575,-5367,-5280,-4364,-2773,-767,1346,3239,4603,5204,4900,3733,1880,-311,-2467,-4199,-5226,-5383, -4683,-3249,-1325,793,2782,4323,5154,5108,4166,2473,332,-1874,-3757,-4998,-5397,-4916,-3662,-1844,260,2320, 4023,5067,5265,4558,3051,990,-1238,-3246,-4679,-5322,-5083,-4025,-2335,-286,1815,3637,4884,5329,4863,3555, 1622,-599,-2701,-4327,-5201,-5202,-4362,-2827,-847,1268,3194,4620,5302,5092,3996,2197,13,-2168,-3955,-5064, -5309,-4688,-3313,-1428,679,2694,4285,5189,5223,4360,2725,611,-1620,-3550,-4862,-5346,-4957,-3771,-1997,81, 2150,3885,4994,5281,4655,3215,1197,-1033,-3084,-4585,-5318,-5163,-4185,-2552,-523,1581,3438,4748,5277,4903, 3670,1774,-435,-2575,-4260,-5217,-5308,-4539,-3054,-1110,1014,2976,4465,5224,5099,4087,2347,184,-2010,-3849, -5022,-5351,-4810,-3503,-1647,449,2489,4137,5112,5240,4465,2903,828,-1387,-3354,-4727,-5293,-4986,-3870,-2147, -85,2000,3787,4973,5346,4815,3450,1483,-736,-2806,-4374,-5172,-5104,-4196,-2606,-603,1508,3412,4788,5400, 5116,3956,2118,-76,-2231,-3970,-4996,-5166,-4481,-3057,-1144,970,2953,4501,5333,5298,4372,2695,562,-1643, -3534,-4783,-5200,-4741,-3506,-1705,381,2430,4128,5179,5397,4706,3212,1165,-1062,-3078,-4530,-5195,-4974,-3942, -2263,-230,1865,3692,4943,5399,4953,3656,1729,-492,-2606,-4247,-5141,-5166,-4338,-2819,-857,1247,3172,4604, 5293,5096,4020,2238,62,-2113,-3911,-5025,-5297,-4696,-3350,-1479,615,2624,4216,5129,5181,4339,2723,622, -1595,-3533,-4861,-5367,-5001,-3838,-2087,-7,2057,3801,4930,5232,4628,3202,1193,-1031,-3082,-4605,-5350,-5214, -4253,-2632,-613,1487,3357,4679,5224,4874,3661,1785,-416,-2543,-4236,-5206,-5314,-4570,-3108,-1175,942,2903, 4405,5186,5092,4103,2394,243,-1941,-3790,-4979,-5335,-4808,-3524,-1683,414,2458,4120,5126,5276,4534,2989, 919,-1300,-3276,-4676,-5262,-4972,-3875,-2158,-100,1989,3789,4997,5392,4888,3544,1592,-631,-2713,-4295,-5117, -5070,-4182,-2616,-625,1484,3389,4780,5418,5160,4029,2212,24,-2137,-3893,-4953,-5148,-4485,-3083,-1180,934, 2930,4495,5360,5353,4444,2784,659,-1554,-3459,-4734,-5173,-4737,-3518,-1723,367,2425,4145,5217,5457,4789, 3313,1277,-948,-2969,-4440,-5117,-4921,-3903,-2244,-209,1889,3729,5007,5491,5071,3800,1889,-331,-2445,-4100, -5013,-5060,-4256,-2742,-782,1332,3277,4735,5455,5289,4229,2459,283,-1906,-3724,-4859,-5145,-4561,-3226,-1354, 756,2779,4396,5330,5409,4587,2982,878,-1345,-3292,-4638,-5159,-4808,-3659,-1911,159,2233,3994,5144,5468, 4886,3479,1478,-755,-2819,-4363,-5131,-5019,-4076,-2461,-439,1669,3552,4899,5466,5137,3934,2060,-151,-2308, -4029,-5027,-5159,-4431,-2978,-1043,1071,3047,4562,5360,5274,4291,2577,421,-1785,-3659,-4872,-5251,-4750,-3482, -1654,435,2481,4146,5159,5319,4584,3043,975,-1258,-3250,-4675,-5294,-5033,-3955,-2265,-210,1885,3683,4902, 5310,4811,3468,1507,-722,-2822,-4431,-5286,-5260,-4389,-2833,-843,1269,3182,4582,5227,4974,3842,2020,-174, -2355,-4115,-5190,-5404,-4754,-3367,-1467,642,2641,4213,5080,5091,4193,2535,406,-1812,-3728,-5017,-5476,-5055, -3852,-2063,19,2090,3817,4904,5158,4500,3042,1001,-1236,-3272,-4759,-5458,-5272,-4268,-2606,-573,1527,3377, 4664,5154,4754,3483,1576,-643,-2766,-4429,-5349,-5410,-4606,-3105,-1147,965,2913,4376,5103,4946,3904,2146, -17,-2205,-4027,-5175,-5471,-4907,-3576,-1713,393,2419,4048,5004,5101,4299,2710,616,-1607,-3566,-4923,-5467, -5124,-3985,-2243,-167,1915,3686,4847,5187,4621,3229,1233,-989,-3057,-4592,-5371,-5263,-4329,-2726,-718,1394, 3276,4624,5210,4890,3708,1853,-341,-2489,-4199,-5210,-5350,-4638,-3198,-1271,842,2819,4353,5168,5107,4154, 2457,318,-1888,-3761,-4985,-5373,-4879,-3620,-1798,300,2354,4029,5070,5252,4540,3016,957,-1267,-3259,-4686, -5303,-5048,-3973,-2279,-231,1861,3676,4904,5334,4858,3542,1603,-616,-2710,-4312,-5171,-5156,-4295,-2755,-763, 1344,3267,4685,5357,5133,4037,2241,63,-2115,-3888,-4977,-5207,-4578,-3194,-1304,810,2823,4406,5300,5336, 4458,2820,702,-1507,-3426,-4729,-5203,-4794,-3600,-1824,260,2324,4058,5156,5431,4801,3360,1341,-878,-2921, -4411,-5130,-4967,-3979,-2351,-324,1777,3639,4937,5460,5080,3847,1954,-249,-2377,-4056,-5004,-5086,-4318,-2836, -887,1225,3179,4664,5415,5279,4257,2514,353,-1840,-3675,-4837,-5159,-4611,-3304,-1457,642,2667,4304,5270, 5383,4594,3018,931,-1291,-3255,-4635,-5190,-4884,-3771,-2049,8,2089,3864,5034,5406,4859,3483,1503,-722, -2803,-4371,-5185,-5110,-4207,-2624,-625,1480,3373,4750,5345,5056,3888,2040,-164,-2325,-4068,-5102,-5270,-4581, -3153,-1244,865,2850,4383,5215,5172,4228,2544,399,-1810,-3701,-4948,-5363,-4898,-3672,-1865,222,2273,3956, 5005,5214,4518,3016,969,-1258,-3271,-4729,-5387,-5165,-4125,-2450,-405,1690,3513,4767,5209,4757,3455,1521, -703,-2817,-4452,-5335,-5353,-4516,-2981,-1008,1102,3031,4463,5154,4947,3852,2063,-119,-2302,-4086,-5197,-5451, -4844,-3482,-1600,504,2515,4121,5036,5092,4238,2617,503,-1707,-3654,-4969,-5469,-5091,-3914,-2148,-60,2018, 3765,4897,5196,4588,3161,1145,-1085,-3134,-4652,-5385,-5233,-4251,-2616,-582,1533,3406,4734,5269,4912,3684, 1804,-406,-2543,-4233,-5189,-5282,-4516,-3037,-1086,1033,3002,4503,5278,5162,4171,2442,285,-1911,-3765,-4946, -5277,-4747,-3450,-1596,506,2552,4208,5204,5347,4575,3017,939,-1290,-3273,-4670,-5245,-4938,-3828,-2098,-27, 2067,3865,5060,5445,4917,3554,1574,-650,-2739,-4315,-5135,-5071,-4168,-2585,-582,1539,3444,4832,5454,5180, 4029,2193,-2,-2164,-3915,-4963,-5146,-4472,-3064,-1145,972,2969,4527,5378,5358,4430,2755,619,-1600,-3499, -4759,-5188,-4740,-3511,-1704,389,2455,4151,5225,5436,4756,3254,1205,-1031,-3045,-4511,-5171,-4953,-3920,-2247, -210,1887,3722,4978,5442,5004,3717,1792,-430,-2544,-4183,-5085,-5104,-4284,-2766,-790,1321,3250,4702,5403, 5215,4144,2363,189,-2002,-3812,-4934,-5197,-4604,-3239,-1360,753,2770,4381,5303,5366,4520,2909,793,-1425, -3372,-4705,-5218,-4834,-3675,-1911,164,2243,3987,5117,5431,4839,3419,1411,-812,-2866,-4393,-5143,-5018,-4062, -2448,-435,1671,3543,4870,5423,5075,3868,1992,-214,-2355,-4061,-5043,-5162,-4423,-2962,-1026,1085,3051,4551, 5334,5232,4234,2513,358,-1851,-3703,-4896,-5255,-4741,-3460,-1633,459,2486,4148,5150,5289,4538,2992,920, -1302,-3296,-4700,-5297,-5021,-3939,-2233,-189,1899,3696,4890,5299,4788,3436,1466,-757,-2846,-4450,-5294,-5248, -4377,-2810,-829,1280,3190,4588,5216,4960,3821,0,1,1,0,-1,0,0,0,0, }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaEPianoProcessor.cpp000066400000000000000000000351411461511344300260330ustar00rootroot00000000000000/* * mdaEPianoProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaEPianoProcessor.h" #include "mdaEPianoController.h" #include "mdaEPianoData.h" #include namespace Steinberg { namespace Vst { namespace mda { #define NPARAMS 12 //number of parameters #define SILENCE 0.0001f //voice choking #define WAVELEN 422414 //wave data bytes float EPianoProcessor::programParams[][NPARAMS] = { { 0.500f, 0.500f, 0.500f, 0.500f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.000f }, { 0.500f, 0.500f, 1.000f, 0.800f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.500f }, { 0.500f, 0.500f, 0.000f, 0.000f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.246f, 0.000f }, { 0.500f, 0.500f, 0.500f, 0.500f, 0.250f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.246f, 0.000f }, { 0.500f, 0.500f, 0.500f, 0.500f, 0.750f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.246f, 0.000f } }; //----------------------------------------------------------------------------- EPianoProcessor::EPianoProcessor () : currentProgram (0) { setControllerClass (EPianoController::uid); allocParameters (NPARAMS); } //----------------------------------------------------------------------------- EPianoProcessor::~EPianoProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API EPianoProcessor::initialize (FUnknown* context) { tresult res = Base::initialize (context); if (res == kResultTrue) { addEventInput (USTRING("MIDI in"), 1); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); ParamValue defValues[] = {0.500f, 0.500f, 0.500f, 0.500f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.000f}; for (int32 i = 0; i < NPARAMS; i++) params[i] = defValues[i]; muffvel = tune = sizevel = 0; waves = epianoData; //Waveform data and keymapping kgrp[ 0].root = 36; kgrp[ 0].high = 39; //C1 kgrp[ 3].root = 43; kgrp[ 3].high = 45; //G1 kgrp[ 6].root = 48; kgrp[ 6].high = 51; //C2 kgrp[ 9].root = 55; kgrp[ 9].high = 57; //G2 kgrp[12].root = 60; kgrp[12].high = 63; //C3 kgrp[15].root = 67; kgrp[15].high = 69; //G3 kgrp[18].root = 72; kgrp[18].high = 75; //C4 kgrp[21].root = 79; kgrp[21].high = 81; //G4 kgrp[24].root = 84; kgrp[24].high = 87; //C5 kgrp[27].root = 91; kgrp[27].high = 93; //G5 kgrp[30].root = 96; kgrp[30].high =999; //C6 kgrp[0].pos = 0; kgrp[0].end = 8476; kgrp[0].loop = 4400; kgrp[1].pos = 8477; kgrp[1].end = 16248; kgrp[1].loop = 4903; kgrp[2].pos = 16249; kgrp[2].end = 34565; kgrp[2].loop = 6398; kgrp[3].pos = 34566; kgrp[3].end = 41384; kgrp[3].loop = 3938; kgrp[4].pos = 41385; kgrp[4].end = 45760; kgrp[4].loop = 1633; //was 1636; kgrp[5].pos = 45761; kgrp[5].end = 65211; kgrp[5].loop = 5245; kgrp[6].pos = 65212; kgrp[6].end = 72897; kgrp[6].loop = 2937; kgrp[7].pos = 72898; kgrp[7].end = 78626; kgrp[7].loop = 2203; //was 2204; kgrp[8].pos = 78627; kgrp[8].end = 100387; kgrp[8].loop = 6368; kgrp[9].pos = 100388; kgrp[9].end = 116297; kgrp[9].loop = 10452; kgrp[10].pos = 116298; kgrp[10].end = 127661; kgrp[10].loop = 5217; //was 5220; kgrp[11].pos = 127662; kgrp[11].end = 144113; kgrp[11].loop = 3099; kgrp[12].pos = 144114; kgrp[12].end = 152863; kgrp[12].loop = 4284; kgrp[13].pos = 152864; kgrp[13].end = 173107; kgrp[13].loop = 3916; kgrp[14].pos = 173108; kgrp[14].end = 192734; kgrp[14].loop = 2937; kgrp[15].pos = 192735; kgrp[15].end = 204598; kgrp[15].loop = 4732; kgrp[16].pos = 204599; kgrp[16].end = 218995; kgrp[16].loop = 4733; kgrp[17].pos = 218996; kgrp[17].end = 233801; kgrp[17].loop = 2285; kgrp[18].pos = 233802; kgrp[18].end = 248011; kgrp[18].loop = 4098; kgrp[19].pos = 248012; kgrp[19].end = 265287; kgrp[19].loop = 4099; kgrp[20].pos = 265288; kgrp[20].end = 282255; kgrp[20].loop = 3609; kgrp[21].pos = 282256; kgrp[21].end = 293776; kgrp[21].loop = 2446; kgrp[22].pos = 293777; kgrp[22].end = 312566; kgrp[22].loop = 6278; kgrp[23].pos = 312567; kgrp[23].end = 330200; kgrp[23].loop = 2283; kgrp[24].pos = 330201; kgrp[24].end = 348889; kgrp[24].loop = 2689; kgrp[25].pos = 348890; kgrp[25].end = 365675; kgrp[25].loop = 4370; kgrp[26].pos = 365676; kgrp[26].end = 383661; kgrp[26].loop = 5225; kgrp[27].pos = 383662; kgrp[27].end = 393372; kgrp[27].loop = 2811; kgrp[28].pos = 383662; kgrp[28].end = 393372; kgrp[28].loop = 2811; //ghost kgrp[29].pos = 393373; kgrp[29].end = 406045; kgrp[29].loop = 4522; kgrp[30].pos = 406046; kgrp[30].end = 414486; kgrp[30].loop = 2306; kgrp[31].pos = 406046; kgrp[31].end = 414486; kgrp[31].loop = 2306; //ghost kgrp[32].pos = 414487; kgrp[32].end = 422408; kgrp[32].loop = 2169; //extra xfade looping... for(int32 k=0; k<28; k++) { int32 p0 = kgrp[k].end; int32 p1 = kgrp[k].end - kgrp[k].loop; float xf = 1.0f; float dxf = -0.02f; while (xf > 0.0f) { waves[p0] = (short)((1.0f - xf) * (float)waves[p0] + xf * (float)waves[p1]); p0--; p1 --; xf += dxf; } } //initialise... for(int32 v=0; v 0.5; if (synthData.sustain==0) { for (auto& v : synthData.voice) { if (v.noteID = SustainNoteID) { v.dec = (float)exp (-iFs * exp (6.0 + 0.01 * (double)v.note - 5.0 * params[1])); } } } } } //----------------------------------------------------------------------------- void EPianoProcessor::setCurrentProgram (Steinberg::uint32 val) { currentProgram = val; } //----------------------------------------------------------------------------- void EPianoProcessor::setCurrentProgramNormalized (ParamValue val) { setCurrentProgram (std::min (kNumPrograms - 1, (int32)(val * kNumPrograms))); } //----------------------------------------------------------------------------- void EPianoProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* out0 = data.outputs[0].channelBuffers32[0]; float* out1 = data.outputs[0].channelBuffers32[1]; int32 frame=0, frames, v; float x, l, r, od=overdrive; int32 i; synthData.eventPos = 0; if (synthData.activevoices > 0 || synthData.hasEvents ()) { while (framesampleFrames) frames = sampleFrames; frames -= frame; frame += frames; while (--frames>=0) { VOICE *V = synthData.voice.data (); l = r = 0.0f; for(v=0; vfrac += V->delta; //integer-based linear interpolation V->pos += V->frac >> 16; V->frac &= 0xFFFF; if (V->pos > V->end) V->pos -= V->loop; //i = waves[V->pos]; //i = (i << 7) + (V->frac >> 9) * (waves[V->pos + 1] - i) + 0x40400000; //not working on intel mac !?! //x = V->env * (*(float *)&i - 3.0f); //fast int->float //x = V->env * (float)i / 32768.0f; i = waves[V->pos] + ((V->frac * (waves[V->pos + 1] - waves[V->pos])) >> 16); x = V->env * (float)i / 32768.0f; V->env = V->env * V->dec; //envelope if (x>0.0f) { x -= od * x * x; if (x < -V->env) x = -V->env; } //+= 0.5f * x * x; } //overdrive l += V->outl * x; r += V->outr * x; V++; } tl += tfrq * (l - tl); //treble boost tr += tfrq * (r - tr); r += treb * (r - tr); l += treb * (l - tl); lfo0 += dlfo * lfo1; //LFO for tremolo and autopan lfo1 -= dlfo * lfo0; l += l * lmod * lfo1; r += r * rmod * lfo1; //worth making all these local variables? *out0++ = l; *out1++ = r; } if (frame 0.5f) { lfo0 = -0.7071f; lfo1 = 0.7071f; } //reset LFO phase - good idea? noteEvent (synthData.events[synthData.eventPos]); ++synthData.eventPos; } } } if (fabs (tl) < 1.0e-10) tl = 0.0f; //anti-denormal if (fabs (tr) < 1.0e-10) tr = 0.0f; for(v=0; v 60) l += stretch * (float)k; //stretch s = size; if (velocity > 40) s += (int32)(sizevel * (float)(velocity - 40)); k = 0; while (note > (kgrp[k].high + s)) k += 3; //find keygroup l += (float)(note - kgrp[k].root); //pitch l = 32000.0f * iFs * (float)exp (0.05776226505 * l); synthData.voice[vl].delta = (int32)(65536.0f * l); synthData.voice[vl].frac = 0; if (velocity > 48) k++; //mid velocity sample if (velocity > 80) k++; //high velocity sample synthData.voice[vl].pos = kgrp[k].pos; synthData.voice[vl].end = kgrp[k].end - 1; synthData.voice[vl].loop = kgrp[k].loop; synthData.voice[vl].env = (3.0f + 2.0f * velsens) * (float)pow (0.0078f * velocity, velsens); //velocity if (note > 60) synthData.voice[vl].env *= (float)exp (0.01f * (float)(60 - note)); //new! high notes quieter l = 50.0f + params[4] * params[4] * muff + muffvel * (float)(velocity - 64); //muffle if (l < (55.0f + 0.4f * (float)note)) l = 55.0f + 0.4f * (float)note; if (l > 210.0f) l = 210.0f; synthData.voice[vl].ff = l * l * iFs; synthData.voice[vl].note = note; //note->pan if (note < 12) note = 12; if (note > 108) note = 108; l = volume; synthData.voice[vl].outr = l + l * width * (float)(note - 60); synthData.voice[vl].outl = l + l - synthData.voice[vl].outr; if (note < 44) note = 44; //limit max decay length synthData.voice[vl].dec = (float)exp (-iFs * exp (-1.0 + 0.03 * (double)note - 2.0f * params[0])); synthData.voice[vl].noteID = noteOn.noteId; } else //note off { auto& noteOff = event.noteOff; auto note = noteOff.pitch; for(v=0; v 0.5f) tfrq = 14000.0f; else tfrq = 5000.0f; //treble freq tfrq = 1.0f - (float)exp (-iFs * tfrq); rmod = lmod = params[4] + params[4] - 1.0f; //lfo depth if (params[4] < 0.5f) rmod = -rmod; dlfo = 6.283f * iFs * (float)exp (6.22f * params[5] - 2.61f); //lfo rate velsens = 1.0f + params[6] + params[6]; if (params[6] < 0.25f) velsens -= 0.75f - 3.0f * params[6]; width = 0.03f * params[7]; poly = 1 + (int32)(31.9f * params[8]); fine = params[9] - 0.5f; random = 0.077f * params[10] * params[10]; stretch = 0.0f; //0.000434f * (params[11] - 0.5f); parameter re-used for overdrive! overdrive = 1.8f * params[11]; if (modwhl > 0.05f) //over-ride pan/trem depth { rmod = lmod = modwhl; //lfo depth if (params[4] < 0.5f) rmod = -rmod; } } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaEPianoProcessor.h000066400000000000000000000077601461511344300255060ustar00rootroot00000000000000/* * mdaEPianoProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class EPianoProcessor : public BaseProcessor { public: using Base = BaseProcessor; EPianoProcessor (); ~EPianoProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'MDAe'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; bool hasProgram () const SMTG_OVERRIDE { return true; } Steinberg::uint32 getCurrentProgram () const SMTG_OVERRIDE { return currentProgram; } Steinberg::uint32 getNumPrograms () const SMTG_OVERRIDE { return kNumPrograms; } void setCurrentProgram (Steinberg::uint32 val) SMTG_OVERRIDE; void setCurrentProgramNormalized (ParamValue val) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new EPianoProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653544D, 0x4441656D, 0x64612065, 0x7069616E); #else inline static DECLARE_UID (uid, 0xFED93DB8, 0x5E81448F, 0xA3B14028, 0x879FA824); #endif //----------------------------------------------------------------------------- static float programParams[][12]; //----------------------------------------------------------------------------- struct VOICE //voice state { int32 delta; //sample playback int32 frac; int32 pos; int32 end; int32 loop; float env; //envelope float dec; float f0; //first-order LPF float f1; float ff; float outl; float outr; int32 note; //remember what note triggered this int32 noteID; }; //----------------------------------------------------------------------------- struct KGRP //keygroup { int32 root; //MIDI root note int32 high; //highest note int32 pos; int32 end; int32 loop; }; static const int32 kNumPrograms = 4; protected: void setParameter (ParamID index, ParamValue newValue, int32 sampleOffset) SMTG_OVERRIDE; void preProcess () SMTG_OVERRIDE; void processEvent (const Event& event) SMTG_OVERRIDE; void noteEvent (const Event& event); void recalculate () SMTG_OVERRIDE; float Fs, iFs; static constexpr int32 kNumVoices = 32; static constexpr int32 kEventBufferSize = 64; using SynthDataT = SynthData; SynthDataT synthData; KGRP kgrp[34]; int32 poly; short *waves; float width; int32 size; float lfo0, lfo1, dlfo, lmod, rmod; float treb, tfrq, tl, tr; float tune, fine, random, stretch, overdrive; float muff, muffvel, sizevel, velsens, volume, modwhl; Steinberg::uint32 currentProgram; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaImageController.cpp000066400000000000000000000060451461511344300260470ustar00rootroot00000000000000/* * mdaImageController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaImageController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- ImageController::ImageController () { } //----------------------------------------------------------------------------- ImageController::~ImageController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API ImageController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { auto* modeParam = new IndexedParameter (USTRING("Mode"), USTRING(""), 3, 0.15, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, kParam0); modeParam->setIndexString (0, UString128("SM->LR")); modeParam->setIndexString (1, UString128("MS->LR")); modeParam->setIndexString (2, UString128("LR->LR")); modeParam->setIndexString (3, UString128("LR->MS")); parameters.addParameter (modeParam); parameters.addParameter (new ScaledParameter (USTRING("S Width"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, kParam1, -200, 200, true)); parameters.addParameter (new ScaledParameter (USTRING("S Pan"), USTRING("L<->R"), 0, 0.5, ParameterInfo::kCanAutomate, kParam2, -100, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("M Level"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, kParam3, -200, 200, true)); parameters.addParameter (new ScaledParameter (USTRING("M Pan"), USTRING("L<->R"), 0, 0.15, ParameterInfo::kCanAutomate, kParam4, -100, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.15, ParameterInfo::kCanAutomate, kParam5, -20, 20, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API ImageController::terminate () { return BaseController::terminate (); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaImageController.h000066400000000000000000000042441461511344300255130ustar00rootroot00000000000000/* * mdaImageController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaImageProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class ImageController : public BaseController { public: ImageController (); ~ImageController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kParam5, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new ImageController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461496D, 0x64612069, 0x6D616765); #else inline static DECLARE_UID (uid, 0x18E85131, 0x09CE429D, 0x83E6621D, 0x74EF40FD); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaImageProcessor.cpp000066400000000000000000000101221461511344300256720ustar00rootroot00000000000000/* * mdaImageProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaImageProcessor.h" #include "mdaImageController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- ImageProcessor::ImageProcessor () { setControllerClass (ImageController::uid); allocParameters (6); } //----------------------------------------------------------------------------- ImageProcessor::~ImageProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API ImageProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.6f; //mode params[1] = 0.75f; //width params[2] = 0.5f; //skew params[3] = 0.75f; //centre params[4] = 0.5f; //balance params[5] = 0.5f; //output recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API ImageProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API ImageProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void ImageProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, c, d, ll=l2l, lr=l2r, rl=r2l, rr = r2r; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; d = rr*b + lr*a; c = ll*a + rl*b; *++out1 = c; *++out2 = d; } } //----------------------------------------------------------------------------- void ImageProcessor::recalculate () { float w, k, c, b, g; w = 4.f * params[1] - 2.f; //width k = 2.f * params[2]; //balance c = 4.f * params[3] - 2.f; //depth b = 2.f * params[4]; //pan g = (float)pow (10.0, 2.0 * params[5] - 1.0); switch (int (params[0]*3.9)) { case 0: //SM->LR r2l = g * c * (2.f - b); l2l = g * w * (2.f - k); r2r = g * c * b; l2r = -g * w * k; break; case 1: //MS->LR l2l = g * c * (2.f - b); r2l = g * w * (2.f - k); l2r = g * c * b; r2r = -g * w * k; break; case 2: //LR->LR g *= 0.5f; l2l = g * (c * (2.f - b) + w * (2.f - k)); r2l = g * (c * (2.f - b) - w * (2.f - k)); l2r = g * (c * b - w * k); r2r = g * (c * b + w * k); break; case 3: //LR->MS g *= 0.5f; l2l = g * (2.f - b) * (2.f - k); r2l = g * (2.f - b) * k; l2r = -g * b * (2.f - k); r2r = g * b * k; break; } } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaImageProcessor.h000066400000000000000000000044241461511344300253470ustar00rootroot00000000000000/* * mdaImageProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class ImageProcessor : public BaseProcessor { public: ImageProcessor (); ~ImageProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaI'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new ImageProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461496D, 0x64612069, 0x6D616765); #else inline static DECLARE_UID (uid, 0xE99952F1, 0x3CBD42DE, 0x98604990, 0xD4FB3212); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float l2l, l2r, r2l, r2r; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaJX10Controller.cpp000066400000000000000000000254141461511344300255100ustar00rootroot00000000000000/* * mdaJX10Controller.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaJX10Controller.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- JX10Controller::JX10Controller () { addBypassParameter = false; } //----------------------------------------------------------------------------- JX10Controller::~JX10Controller () { } //----------------------------------------------------------------------------- tresult PLUGIN_API JX10Controller::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { auto* presetParam = new IndexedParameter ( USTRING ("Factory Presets"), USTRING ("%"), JX10Processor::kNumPrograms - 1, 0, ParameterInfo::kIsProgramChange | ParameterInfo::kIsList, kPresetParam); parameters.addParameter (presetParam); ParamID pid = 0; parameters.addParameter (USTRING("OSC Mix"), USTRING(""), 0, 0.15, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("OSC Tune"), USTRING(""), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("OSC Fine"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); auto* glideModeParam = new IndexedParameter (USTRING("Glide"), nullptr, 5, 0, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); glideModeParam->setIndexString (0, UString128("Poly")); glideModeParam->setIndexString (1, UString128("Poly-Legato")); glideModeParam->setIndexString (2, UString128("Poly-Glide")); glideModeParam->setIndexString (3, UString128("Mono")); glideModeParam->setIndexString (4, UString128("Mono-Legato")); glideModeParam->setIndexString (5, UString128("Mono-Glide")); parameters.addParameter (glideModeParam); parameters.addParameter (USTRING("Gld Rate"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Gld Bend"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("VCF Freq"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("VCF Reso"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("VCF Env"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("VCF LFO"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("VCF Vel"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("VCF Att"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("VCF Dec"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("VCF Sus"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("VCF Rel"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("ENV Att"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("ENV Dec"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("ENV Sus"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("ENV Rel"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("LFO Rate"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Vibrato"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Noise"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Octave"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Tuning"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); midiCCParamID[kCtrlModWheel] = kModWheelParam; parameters.addParameter (USTRING("Mod Wheel"), USTRING(""), 0, 0, 0, kModWheelParam); midiCCParamID[kPitchBend] = kPitchBendParam; parameters.addParameter (USTRING("Pitch Bend"), USTRING(""), 0, 0.5, 0, kPitchBendParam); midiCCParamID[kCtrlBreath] = kBreathParam; midiCCParamID[kCtrlFilterResonance] = kBreathParam; parameters.addParameter (USTRING("Filter Mod+"), USTRING(""), 0, 0., 0, kBreathParam); midiCCParamID[3] = kCtrler3Param; parameters.addParameter (USTRING("Filter Mod-"), USTRING(""), 0, 0., 0, kCtrler3Param); midiCCParamID[kCtrlExpression] = kCtrler3Param; parameters.addParameter (USTRING("Filter Resonance"), USTRING(""), 0, 0.5, 0, kExpressionParam); midiCCParamID[kAfterTouch] = kAftertouchParam; parameters.addParameter (USTRING("Aftertouch"), USTRING(""), 0, 0.5, 0, kAftertouchParam); int32 i = 0; presetParam->setIndexString (i++, UString128("5th Sweep Pad")); presetParam->setIndexString (i++, UString128("Echo Pad [SA]")); presetParam->setIndexString (i++, UString128("Space Chimes [SA]")); presetParam->setIndexString (i++, UString128("Solid Backing")); presetParam->setIndexString (i++, UString128("Velocity Backing [SA]")); presetParam->setIndexString (i++, UString128("Rubber Backing [ZF]")); presetParam->setIndexString (i++, UString128("808 State Lead")); presetParam->setIndexString (i++, UString128("Mono Glide")); presetParam->setIndexString (i++, UString128("Detuned Techno Lead")); presetParam->setIndexString (i++, UString128("Hard Lead [SA]")); presetParam->setIndexString (i++, UString128("Bubble")); presetParam->setIndexString (i++, UString128("Monosynth")); presetParam->setIndexString (i++, UString128("Moogcury Lite")); presetParam->setIndexString (i++, UString128("Gangsta Whine")); presetParam->setIndexString (i++, UString128("Higher Synth [ZF]")); presetParam->setIndexString (i++, UString128("303 Saw Bass")); presetParam->setIndexString (i++, UString128("303 Square Bass")); presetParam->setIndexString (i++, UString128("Analog Bass")); presetParam->setIndexString (i++, UString128("Analog Bass 2")); presetParam->setIndexString (i++, UString128("Low Pulses")); presetParam->setIndexString (i++, UString128("Sine Infra-Bass")); presetParam->setIndexString (i++, UString128("Wobble Bass [SA]")); presetParam->setIndexString (i++, UString128("Squelch Bass")); presetParam->setIndexString (i++, UString128("Rubber Bass [ZF]")); presetParam->setIndexString (i++, UString128("Soft Pick Bass")); presetParam->setIndexString (i++, UString128("Fretless Bass")); presetParam->setIndexString (i++, UString128("Whistler")); presetParam->setIndexString (i++, UString128("Very Soft Pad")); presetParam->setIndexString (i++, UString128("Pizzicato")); presetParam->setIndexString (i++, UString128("Synth Strings")); presetParam->setIndexString (i++, UString128("Synth Strings 2")); presetParam->setIndexString (i++, UString128("Leslie Organ")); presetParam->setIndexString (i++, UString128("Click Organ")); presetParam->setIndexString (i++, UString128("Hard Organ")); presetParam->setIndexString (i++, UString128("Bass Clarinet")); presetParam->setIndexString (i++, UString128("Trumpet")); presetParam->setIndexString (i++, UString128("Soft Horn")); presetParam->setIndexString (i++, UString128("Brass Section")); presetParam->setIndexString (i++, UString128("Synth Brass")); presetParam->setIndexString (i++, UString128("Detuned Syn Brass [ZF]")); presetParam->setIndexString (i++, UString128("Power PWM")); presetParam->setIndexString (i++, UString128("Water Velocity [SA]")); presetParam->setIndexString (i++, UString128("Ghost [SA]")); presetParam->setIndexString (i++, UString128("Soft E.Piano")); presetParam->setIndexString (i++, UString128("Thumb Piano")); presetParam->setIndexString (i++, UString128("Steel Drums [ZF]")); presetParam->setIndexString (i++, UString128("Car Horn")); presetParam->setIndexString (i++, UString128("Helicopter")); presetParam->setIndexString (i++, UString128("Arctic Wind")); presetParam->setIndexString (i++, UString128("Thip")); presetParam->setIndexString (i++, UString128("Synth Tom")); presetParam->setIndexString (i++, UString128("Squelchy Frog")); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API JX10Controller::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API JX10Controller::setParamNormalized (ParamID tag, ParamValue value) { tresult res = BaseController::setParamNormalized (tag, value); if (res == kResultOk && tag == kPresetParam) // preset change { int32 program = parameters.getParameter (tag)->toPlain (value); for (int32 i = 0; i < 24; i++) { BaseController::setParamNormalized (i, JX10Processor::programParams[program][i]); } componentHandler->restartComponent (kParamValuesChanged); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API JX10Controller::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } //----------------------------------------------------------------------------- tresult PLUGIN_API JX10Controller::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaJX10Controller.h000066400000000000000000000044431461511344300251540ustar00rootroot00000000000000/* * mdaJX10Controller.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaJX10Processor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class JX10Controller : public BaseController { public: JX10Controller (); ~JX10Controller (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new JX10Controller; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653454D, 0x44416A6D, 0x6461206A, 0x78313000); #else inline static DECLARE_UID (uid, 0x91E8798D, 0xEDE644C9, 0xB9EB444B, 0x5F0A8AA7); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaJX10Processor.cpp000066400000000000000000000632451461511344300253500ustar00rootroot00000000000000/* * mdaJX10Processor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaJX10Processor.h" #include "mdaJX10Controller.h" #include namespace Steinberg { namespace Vst { namespace mda { #define NPARAMS 24 //number of parameters #define SILENCE 0.001f //voice choking #define PI 3.1415926535897932f #define TWOPI 6.2831853071795864f #define ANALOG 0.002f //oscillator drift float JX10Processor::programParams[kNumPrograms][NPARAMS] = { {1.0f, 0.37f, 0.25f, 0.3f, 0.32f, 0.5f, 0.9f, 0.6f, 0.12f, 0.0f, 0.5f, 0.9f, 0.89f, 0.9f, 0.73f, 0.0f, 0.5f, 1.0f, 0.71f, 0.81f, 0.65f, 0.0f, 0.5f, 0.5f}, {0.88f, 0.51f, 0.5f, 0.0f, 0.49f, 0.5f, 0.46f, 0.76f, 0.69f, 0.1f, 0.69f, 1.0f, 0.86f, 0.76f, 0.57f, 0.3f, 0.8f, 0.68f, 0.66f, 0.79f, 0.13f, 0.25f, 0.45f, 0.5f}, {0.88f, 0.51f, 0.5f, 0.16f, 0.49f, 0.5f, 0.49f, 0.82f, 0.66f, 0.08f, 0.89f, 0.85f, 0.69f, 0.76f, 0.47f, 0.12f, 0.22f, 0.55f, 0.66f, 0.89f, 0.34f, 0.0f, 1.0f, 0.5f}, {1.0f, 0.26f, 0.14f, 0.0f, 0.35f, 0.5f, 0.3f, 0.25f, 0.7f, 0.0f, 0.63f, 0.0f, 0.35f, 0.0f, 0.25f, 0.0f, 0.5f, 1.0f, 0.3f, 0.81f, 0.5f, 0.5f, 0.5f, 0.5f}, {0.41f, 0.5f, 0.79f, 0.0f, 0.08f, 0.32f, 0.49f, 0.01f, 0.34f, 0.0f, 0.93f, 0.61f, 0.87f, 1.0f, 0.93f, 0.11f, 0.48f, 0.98f, 0.32f, 0.81f, 0.5f, 0.0f, 0.5f, 0.5f}, {0.29f, 0.76f, 0.26f, 0.0f, 0.18f, 0.76f, 0.35f, 0.15f, 0.77f, 0.14f, 0.54f, 0.0f, 0.42f, 0.13f, 0.21f, 0.0f, 0.56f, 0.0f, 0.32f, 0.2f, 0.58f, 0.22f, 0.53f, 0.5f}, {1.0f, 0.65f, 0.24f, 0.4f, 0.34f, 0.85f, 0.65f, 0.63f, 0.75f, 0.16f, 0.5f, 0.0f, 0.3f, 0.0f, 0.25f, 0.17f, 0.5f, 1.0f, 0.03f, 0.81f, 0.5f, 0.0f, 0.68f, 0.5f}, {0.0f, 0.25f, 0.5f, 1.0f, 0.46f, 0.5f, 0.51f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.3f, 0.0f, 0.25f, 0.37f, 0.5f, 1.0f, 0.38f, 0.81f, 0.62f, 0.0f, 0.5f, 0.5f}, {0.84f, 0.51f, 0.15f, 0.45f, 0.41f, 0.42f, 0.54f, 0.01f, 0.58f, 0.21f, 0.67f, 0.0f, 0.09f, 1.0f, 0.25f, 0.2f, 0.85f, 1.0f, 0.3f, 0.83f, 0.09f, 0.4f, 0.49f, 0.5f}, {0.71f, 0.75f, 0.53f, 0.18f, 0.24f, 1.0f, 0.56f, 0.52f, 0.69f, 0.19f, 0.7f, 1.0f, 0.14f, 0.65f, 0.95f, 0.07f, 0.91f, 1.0f, 0.15f, 0.84f, 0.33f, 0.0f, 0.49f, 0.5f}, {0.0f, 0.25f, 0.43f, 0.0f, 0.71f, 0.48f, 0.23f, 0.77f, 0.8f, 0.32f, 0.63f, 0.4f, 0.18f, 0.66f, 0.14f, 0.0f, 0.38f, 0.65f, 0.16f, 0.48f, 0.5f, 0.0f, 0.67f, 0.5f}, {0.62f, 0.26f, 0.51f, 0.79f, 0.35f, 0.54f, 0.64f, 0.39f, 0.51f, 0.65f, 0.0f, 0.07f, 0.52f, 0.24f, 0.84f, 0.13f, 0.3f, 0.76f, 0.21f, 0.58f, 0.3f, 0.0f, 0.36f, 0.5f}, {0.81f, 1.0f, 0.21f, 0.78f, 0.15f, 0.35f, 0.39f, 0.17f, 0.69f, 0.4f, 0.62f, 0.0f, 0.47f, 0.19f, 0.37f, 0.0f, 0.5f, 0.2f, 0.33f, 0.38f, 0.53f, 0.0f, 0.12f, 0.5f}, {0.0f, 0.51f, 0.52f, 0.96f, 0.44f, 0.5f, 0.41f, 0.46f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.25f, 0.15f, 0.5f, 1.0f, 0.32f, 0.81f, 0.49f, 0.0f, 0.83f, 0.5f}, {0.48f, 0.51f, 0.22f, 0.0f, 0.0f, 0.5f, 0.5f, 0.47f, 0.73f, 0.3f, 0.8f, 0.0f, 0.1f, 0.0f, 0.07f, 0.0f, 0.42f, 0.0f, 0.22f, 0.21f, 0.59f, 0.16f, 0.98f, 0.5f}, {0.0f, 0.51f, 0.5f, 0.83f, 0.49f, 0.5f, 0.55f, 0.75f, 0.69f, 0.35f, 0.5f, 0.0f, 0.56f, 0.0f, 0.56f, 0.0f, 0.8f, 1.0f, 0.24f, 0.26f, 0.49f, 0.0f, 0.07f, 0.5f}, {0.75f, 0.51f, 0.5f, 0.83f, 0.49f, 0.5f, 0.55f, 0.75f, 0.69f, 0.35f, 0.5f, 0.14f, 0.49f, 0.0f, 0.39f, 0.0f, 0.8f, 1.0f, 0.24f, 0.26f, 0.49f, 0.0f, 0.07f, 0.5f}, {1.0f, 0.25f, 0.2f, 0.81f, 0.19f, 0.5f, 0.3f, 0.51f, 0.85f, 0.09f, 0.0f, 0.0f, 0.88f, 0.0f, 0.21f, 0.0f, 0.5f, 1.0f, 0.46f, 0.81f, 0.5f, 0.0f, 0.27f, 0.5f}, {1.0f, 0.25f, 0.2f, 0.72f, 0.19f, 0.86f, 0.48f, 0.43f, 0.94f, 0.0f, 0.8f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.61f, 1.0f, 0.32f, 0.81f, 0.5f, 0.0f, 0.27f, 0.5f}, {0.97f, 0.26f, 0.3f, 0.0f, 0.35f, 0.5f, 0.8f, 0.4f, 0.52f, 0.0f, 0.5f, 0.0f, 0.77f, 0.0f, 0.25f, 0.0f, 0.5f, 1.0f, 0.3f, 0.81f, 0.16f, 0.0f, 0.0f, 0.5f}, {0.0f, 0.25f, 0.5f, 0.65f, 0.35f, 0.5f, 0.33f, 0.76f, 0.53f, 0.0f, 0.5f, 0.0f, 0.3f, 0.0f, 0.25f, 0.0f, 0.55f, 0.25f, 0.3f, 0.81f, 0.52f, 0.0f, 0.14f, 0.5f}, {1.0f, 0.26f, 0.22f, 0.64f, 0.82f, 0.59f, 0.72f, 0.47f, 0.34f, 0.34f, 0.82f, 0.2f, 0.69f, 1.0f, 0.15f, 0.09f, 0.5f, 1.0f, 0.07f, 0.81f, 0.46f, 0.0f, 0.24f, 0.5f}, {1.0f, 0.26f, 0.22f, 0.71f, 0.35f, 0.5f, 0.67f, 0.7f, 0.26f, 0.0f, 0.5f, 0.48f, 0.69f, 1.0f, 0.15f, 0.0f, 0.5f, 1.0f, 0.07f, 0.81f, 0.46f, 0.0f, 0.24f, 0.5f}, {0.49f, 0.25f, 0.66f, 0.81f, 0.35f, 0.5f, 0.36f, 0.15f, 0.75f, 0.2f, 0.5f, 0.0f, 0.38f, 0.0f, 0.25f, 0.0f, 0.6f, 1.0f, 0.22f, 0.19f, 0.5f, 0.0f, 0.17f, 0.5f}, {0.37f, 0.51f, 0.77f, 0.71f, 0.22f, 0.5f, 0.33f, 0.47f, 0.71f, 0.16f, 0.59f, 0.0f, 0.0f, 0.0f, 0.25f, 0.04f, 0.58f, 0.0f, 0.22f, 0.15f, 0.44f, 0.33f, 0.15f, 0.5f}, {0.5f, 0.51f, 0.17f, 0.8f, 0.34f, 0.5f, 0.51f, 0.0f, 0.58f, 0.0f, 0.67f, 0.0f, 0.09f, 0.0f, 0.25f, 0.2f, 0.85f, 0.0f, 0.3f, 0.81f, 0.7f, 0.0f, 0.0f, 0.5f}, {0.23f, 0.51f, 0.38f, 0.0f, 0.35f, 0.5f, 0.33f, 1.0f, 0.5f, 0.0f, 0.5f, 0.0f, 0.29f, 0.0f, 0.25f, 0.68f, 0.39f, 0.58f, 0.36f, 0.81f, 0.64f, 0.38f, 0.92f, 0.5f}, {0.39f, 0.51f, 0.27f, 0.38f, 0.12f, 0.5f, 0.35f, 0.78f, 0.5f, 0.0f, 0.5f, 0.0f, 0.3f, 0.0f, 0.25f, 0.35f, 0.5f, 0.8f, 0.7f, 0.81f, 0.5f, 0.0f, 0.5f, 0.5f}, {0.0f, 0.25f, 0.5f, 0.0f, 0.35f, 0.5f, 0.23f, 0.2f, 0.75f, 0.0f, 0.5f, 0.0f, 0.22f, 0.0f, 0.25f, 0.0f, 0.47f, 0.0f, 0.3f, 0.81f, 0.5f, 0.8f, 0.5f, 0.5f}, {1.0f, 0.51f, 0.24f, 0.0f, 0.0f, 0.35f, 0.42f, 0.26f, 0.75f, 0.14f, 0.69f, 0.0f, 0.67f, 0.55f, 0.97f, 0.82f, 0.7f, 1.0f, 0.42f, 0.84f, 0.67f, 0.3f, 0.47f, 0.5f}, {0.75f, 0.51f, 0.29f, 0.0f, 0.49f, 0.5f, 0.55f, 0.16f, 0.69f, 0.08f, 0.2f, 0.76f, 0.29f, 0.76f, 1.0f, 0.46f, 0.8f, 1.0f, 0.39f, 0.79f, 0.27f, 0.0f, 0.68f, 0.5f}, {0.0f, 0.5f, 0.53f, 0.0f, 0.13f, 0.39f, 0.38f, 0.74f, 0.54f, 0.2f, 0.0f, 0.0f, 0.55f, 0.52f, 0.31f, 0.0f, 0.17f, 0.73f, 0.28f, 0.87f, 0.24f, 0.0f, 0.29f, 0.5f}, {0.5f, 0.77f, 0.52f, 0.0f, 0.35f, 0.5f, 0.44f, 0.5f, 0.65f, 0.16f, 0.0f, 0.0f, 0.0f, 0.18f, 0.0f, 0.0f, 0.75f, 0.8f, 0.0f, 0.81f, 0.49f, 0.0f, 0.44f, 0.5f}, {0.89f, 0.91f, 0.37f, 0.0f, 0.35f, 0.5f, 0.51f, 0.62f, 0.54f, 0.0f, 0.0f, 0.0f, 0.37f, 0.0f, 1.0f, 0.04f, 0.08f, 0.72f, 0.04f, 0.77f, 0.49f, 0.0f, 0.58f, 0.5f}, {1.0f, 0.51f, 0.51f, 0.37f, 0.0f, 0.5f, 0.51f, 0.1f, 0.5f, 0.11f, 0.5f, 0.0f, 0.0f, 0.0f, 0.25f, 0.35f, 0.65f, 0.65f, 0.32f, 0.79f, 0.49f, 0.2f, 0.35f, 0.5f}, {0.0f, 0.51f, 0.51f, 0.82f, 0.06f, 0.5f, 0.57f, 0.0f, 0.32f, 0.15f, 0.5f, 0.21f, 0.15f, 0.0f, 0.25f, 0.24f, 0.6f, 0.8f, 0.1f, 0.75f, 0.55f, 0.25f, 0.69f, 0.5f}, {0.12f, 0.9f, 0.67f, 0.0f, 0.35f, 0.5f, 0.5f, 0.21f, 0.29f, 0.12f, 0.6f, 0.0f, 0.35f, 0.36f, 0.25f, 0.08f, 0.5f, 1.0f, 0.27f, 0.83f, 0.51f, 0.1f, 0.25f, 0.5f}, {0.43f, 0.76f, 0.23f, 0.0f, 0.28f, 0.36f, 0.5f, 0.0f, 0.59f, 0.0f, 0.5f, 0.24f, 0.16f, 0.91f, 0.08f, 0.17f, 0.5f, 0.8f, 0.45f, 0.81f, 0.5f, 0.0f, 0.58f, 0.5f}, {0.4f, 0.51f, 0.25f, 0.0f, 0.3f, 0.28f, 0.39f, 0.15f, 0.75f, 0.0f, 0.5f, 0.39f, 0.3f, 0.82f, 0.25f, 0.33f, 0.74f, 0.76f, 0.41f, 0.81f, 0.47f, 0.23f, 0.5f, 0.5f}, {0.68f, 0.5f, 0.93f, 0.0f, 0.31f, 0.62f, 0.26f, 0.07f, 0.85f, 0.0f, 0.66f, 0.0f, 0.83f, 0.0f, 0.05f, 0.0f, 0.75f, 0.54f, 0.32f, 0.76f, 0.37f, 0.29f, 0.56f, 0.5f}, {1.0f, 0.27f, 0.22f, 0.0f, 0.35f, 0.5f, 0.82f, 0.13f, 0.75f, 0.0f, 0.0f, 0.24f, 0.3f, 0.88f, 0.34f, 0.0f, 0.5f, 1.0f, 0.48f, 0.71f, 0.37f, 0.0f, 0.35f, 0.5f}, {0.76f, 0.51f, 0.35f, 0.0f, 0.49f, 0.5f, 0.87f, 0.67f, 1.0f, 0.32f, 0.09f, 0.95f, 0.56f, 0.72f, 1.0f, 0.04f, 0.76f, 0.11f, 0.46f, 0.88f, 0.72f, 0.0f, 0.38f, 0.5f}, {0.75f, 0.51f, 0.24f, 0.45f, 0.16f, 0.48f, 0.38f, 0.58f, 0.75f, 0.16f, 0.81f, 0.0f, 0.3f, 0.4f, 0.31f, 0.37f, 0.5f, 1.0f, 0.54f, 0.85f, 0.83f, 0.43f, 0.46f, 0.5f}, {0.31f, 0.51f, 0.43f, 0.0f, 0.35f, 0.5f, 0.34f, 0.26f, 0.53f, 0.0f, 0.63f, 0.0f, 0.22f, 0.0f, 0.39f, 0.0f, 0.8f, 0.0f, 0.44f, 0.81f, 0.51f, 0.0f, 0.5f, 0.5f}, {0.72f, 0.82f, 1.0f, 0.0f, 0.35f, 0.5f, 0.37f, 0.47f, 0.54f, 0.0f, 0.5f, 0.0f, 0.45f, 0.0f, 0.39f, 0.0f, 0.39f, 0.0f, 0.48f, 0.81f, 0.6f, 0.0f, 0.71f, 0.5f}, {0.81f, 0.76f, 0.19f, 0.0f, 0.18f, 0.7f, 0.4f, 0.3f, 0.54f, 0.17f, 0.4f, 0.0f, 0.42f, 0.23f, 0.47f, 0.12f, 0.48f, 0.0f, 0.49f, 0.53f, 0.36f, 0.34f, 0.56f, 0.5f}, {0.57f, 0.49f, 0.31f, 0.0f, 0.35f, 0.5f, 0.46f, 0.0f, 0.68f, 0.0f, 0.5f, 0.46f, 0.3f, 1.0f, 0.23f, 0.3f, 0.5f, 1.0f, 0.31f, 1.0f, 0.38f, 0.0f, 0.5f, 0.5f}, {0.0f, 0.25f, 0.5f, 0.0f, 0.35f, 0.5f, 0.08f, 0.36f, 0.69f, 1.0f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, 0.96f, 0.5f, 1.0f, 0.92f, 0.97f, 0.5f, 1.0f, 0.0f, 0.5f}, {0.0f, 0.25f, 0.5f, 0.0f, 0.35f, 0.5f, 0.16f, 0.85f, 0.5f, 0.28f, 0.5f, 0.37f, 0.3f, 0.0f, 0.25f, 0.89f, 0.5f, 1.0f, 0.89f, 0.24f, 0.5f, 1.0f, 1.0f, 0.5f}, {1.0f, 0.37f, 0.51f, 0.0f, 0.35f, 0.5f, 0.0f, 1.0f, 0.97f, 0.0f, 0.5f, 0.02f, 0.2f, 0.0f, 0.2f, 0.0f, 0.46f, 0.0f, 0.3f, 0.81f, 0.5f, 0.78f, 0.48f, 0.5f}, {0.0f, 0.25f, 0.5f, 0.0f, 0.76f, 0.94f, 0.3f, 0.33f, 0.76f, 0.0f, 0.68f, 0.0f, 0.59f, 0.0f, 0.59f, 0.1f, 0.5f, 0.0f, 0.5f, 0.81f, 0.5f, 0.7f, 0.0f, 0.5f}, {0.5f, 0.41f, 0.23f, 0.45f, 0.77f, 0.0f, 0.4f, 0.65f, 0.95f, 0.0f, 0.5f, 0.33f, 0.5f, 0.0f, 0.25f, 0.0f, 0.7f, 0.65f, 0.18f, 0.32f, 1.0f, 0.0f, 0.06f, 0.5f}, }; //----------------------------------------------------------------------------- JX10Processor::JX10Processor () : currentProgram (0) { setControllerClass (JX10Controller::uid); allocParameters (NPARAMS); } //----------------------------------------------------------------------------- JX10Processor::~JX10Processor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API JX10Processor::initialize (FUnknown* context) { tresult res = Base::initialize (context); if (res == kResultTrue) { addEventInput (USTRING("MIDI in"), 1); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); const float* newParams = programParams[0]; if (newParams) { for (int32 i = 0; i < NPARAMS; i++) params[i] = newParams[i]; } //initialise... for(int32 v=0; v (kNumPrograms - 1, (int32)(newValue * kNumPrograms)); const float* newParams = programParams[currentProgram]; if (newParams) { for (int32 i = 0; i < NPARAMS; i++) params[i] = newParams[i]; } } else if (index == BaseController::kModWheelParam) // mod wheel { newValue *= 127.; modwhl = 0.000005f * (newValue*newValue); } else if (index == BaseController::kPitchBendParam) // pitch bend { if (newValue <= 1) newValue = (newValue - 0.5) * 0x2000; ipbend = (float)exp (0.000014102 * (double)newValue); pbend = 1.0f / ipbend; } else if (index == BaseController::kBreathParam) { newValue *= 127.; filtwhl = 0.02f * newValue; } else if (index == BaseController::kCtrler3Param) { newValue *= 127.; filtwhl = -0.03f * newValue; } else if (index == BaseController::kExpressionParam) { newValue *= 127.; rezwhl = 0.0065f * (float)(154 - newValue); } else if (index == BaseController::kAftertouchParam) { newValue *= 127.; press = 0.00001f * (float)(newValue * newValue); } } //----------------------------------------------------------------------------- void JX10Processor::setCurrentProgram (Steinberg::uint32 val) { currentProgram = val; } //----------------------------------------------------------------------------- void JX10Processor::setCurrentProgramNormalized (ParamValue val) { setCurrentProgram (std::min (kNumPrograms - 1, (int32)(val * kNumPrograms))); } //----------------------------------------------------------------------------- void JX10Processor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; int32 frame=0, frames, v; float oL, oR, e, vib, pwm, pb=pbend, ipb=ipbend, gl=glide; float x, y, hpf=0.997f, min=1.0f, w=0.0f, ww=noisemix; float ff, fe=filtenv, fq=filtq * rezwhl, fx=1.97f-0.85f*fq, fz=fzip; int32 k=K; Steinberg::uint32 r; vib = (float)sin(lfo); ff = filtf + filtwhl + (filtlfo + press) * vib; //have to do again here as way that pwm = 1.0f + vib * (modwhl + pwmdep); //below triggers on k was too cheap! vib = 1.0f + vib * (modwhl + vibrato); synthData.eventPos = 0; if (synthData.activevoices > 0 || synthData.hasEvents ()) { while (framesampleFrames) frames = sampleFrames; frames -= frame; frame += frames; while (--frames>=0) { VOICE *V = synthData.voice.data (); oL = oR = 0.0f; noise = (noise * 196314165) + 907633515; r = (noise & 0x7FFFFF) + 0x40000000; //generate noise + fast convert to float w = *(float *)&r; w = ww * (w - 3.0f); if (--k<0) { lfo += dlfo; if (lfo>PI) lfo -= TWOPI; vib = (float)sin(lfo); ff = filtf + filtwhl + (filtlfo + press) * vib; pwm = 1.0f + vib * (modwhl + pwmdep); vib = 1.0f + vib * (modwhl + vibrato); k = KMAX; } for(v=0; venv; if (e > SILENCE) { //Sinc-Loop Oscillator x = V->p + V->dp; if (x > min) { if (x > V->pmax) { x = V->pmax + V->pmax - x; V->dp = -V->dp; } V->p = x; x = V->sin0 * V->sinx - V->sin1; //sine osc V->sin1 = V->sin0; V->sin0 = x; x = x / V->p; } else { V->p = x = - x; V->dp = V->period * vib * pb * V->snaPitchbend; //set period for next cycle V->pmax = (float)floor(0.5f + V->dp) - 0.5f; V->dc = -0.5f * V->lev / V->pmax; V->pmax *= PI; V->dp = V->pmax / V->dp; V->sin0 = V->lev * (float)sin(x); V->sin1 = V->lev * (float)sin(x - V->dp); V->sinx = 2.0f * (float)cos(V->dp); if (x*x > .1f) x = V->sin0 / x; else x = V->lev; //was 0.01f; } y = V->p2 + V->dp2; //osc2 if (y > min) { if (y > V->pmax2) { y = V->pmax2 + V->pmax2 - y; V->dp2 = -V->dp2; } V->p2 = y; y = V->sin02 * V->sinx2 - V->sin12; V->sin12 = V->sin02; V->sin02 = y; y = y / V->p2; } else { V->p2 = y = - y; V->dp2 = V->period * V->detune * pwm * pb * V->snaPitchbend; V->pmax2 = (float)floor(0.5f + V->dp2) - 0.5f; V->dc2 = -0.5f * V->lev2 / V->pmax2; V->pmax2 *= PI; V->dp2 = V->pmax2 / V->dp2; V->sin02 = V->lev2 * (float)sin(y); V->sin12 = V->lev2 * (float)sin(y - V->dp2); V->sinx2 = 2.0f * (float)cos(V->dp2); if (y*y > .1f) y = V->sin02 / y; else y = V->lev2; } V->saw = V->saw * hpf + V->dc + x - V->dc2 - y; //integrated sinc = saw x = V->saw + w; V->env += V->envd * (V->envl - V->env); if (k==KMAX) //filter freq update at LFO rate { if ((V->env+V->envl)>3.0f) { V->envd=dec; V->envl=sus; } //envelopes V->fenv += V->fenvd * (V->fenvl - V->fenv); if ((V->fenv+V->fenvl)>3.0f) { V->fenvd=fdec; V->fenvl=fsus; } fz += 0.005f * (ff - fz); //filter zipper noise filter y = V->fc * (float)exp (fz + fe * V->fenv) * ipb; //filter cutoff if (y<0.005f) y =0.005f; V->ff = y; V->period += gl * (V->target - V->period); //glide if (V->target < V->period) V->period += gl * (V->target - V->period); } if (V->ff > fx) V->ff = fx; //stability limit V->f0 += V->ff * V->f1; //state-variable filter V->f1 -= V->ff * (V->f0 + fq * V->f1 - x - V->f2); V->f1 -= 0.2f * V->f1 * V->f1 * V->f1; //soft limit //was 0.08f V->f2 = x; float oneSample = V->env * V->f0 * V->snaVolume; oL += oneSample * V->snaPanLeft; oR += oneSample * V->snaPanRight; } V++; } *out1++ = oL; *out2++ = oR; } if (frame0; tmp--) //queue any held notes { synthData.voice[tmp].note = synthData.voice[tmp - 1].note; synthData.voice[tmp].noteID = synthData.voice[tmp - 1].noteID; } p = tune * (float)exp (-0.05776226505 * ((double)note.pitch + ANALOG * (double)v)); while (p<3.0f || (p * detune)<3.0f) p += p; synthData.voice[0].target = p; if ((_glide)==0) synthData.voice[v].period = p; synthData.voice[0].fc = (float)exp (filtvel * (float)(velocity - 64)) / p; synthData.voice[0].env += SILENCE + SILENCE; ///was missed out below if returned? synthData.voice[0].note = note.pitch; synthData.voice[0].noteID = note.noteId; synthData.voice[0].snaVolume = 1.f; synthData.voice[0].snaPanLeft = synthData.voice[v].snaPanRight = 1.f; synthData.voice[0].snaPitchbend = 1.f; return; } } else //polyphonic { for(tmp=0; tmp 0) held++; if (synthData.voice[tmp].env0.0f) { p = synthData.voice[v].pmax + synthData.voice[v].pmax - synthData.voice[v].p; synthData.voice[v].dp2 = -synthData.voice[v].dp; } else { p = synthData.voice[v].p; synthData.voice[v].dp2 = synthData.voice[v].dp; } synthData.voice[v].p2 = synthData.voice[v].pmax2 = p + PI * synthData.voice[v].period; synthData.voice[v].dc2 = 0.0f; synthData.voice[v].sin02 = synthData.voice[v].sin12 = synthData.voice[v].sinx2 = 0.0f; } if (!polyMode) //monophonic retriggering { synthData.voice[v].env += SILENCE + SILENCE; } else { //if (params[15] < 0.28f) //{ // voice[v].f0 = voice[v].f1 = voice[v].f2 = 0.0f; //reset filter // voice[v].env = SILENCE + SILENCE; // voice[v].fenv = 0.0f; //} //else synthData.voice[v].env += SILENCE + SILENCE; //anti-glitching trick } synthData.voice[v].envl = 2.0f; synthData.voice[v].envd = att; synthData.voice[v].fenvl = 2.0f; synthData.voice[v].fenvd = fatt; synthData.voice[v].snaVolume = 1.f; synthData.voice[v].snaPanLeft = synthData.voice[v].snaPanRight = 1.f; synthData.voice[v].snaPitchbend = 1.f; } else //note off { auto& note = event.noteOff; if ((!polyMode) && (synthData.voice[0].noteID==note.noteId)) //monophonic (and current note) { for(v= (synthData.numVoices-1); v>0; v--) { if (synthData.voice[v].noteID!=EndNoteID) held = v; //any other notes queued? } if (held>0) { synthData.voice[v].note = synthData.voice[held].note; synthData.voice[v].noteID = synthData.voice[held].noteID; clearVoice (synthData.voice[held]); p = tune * (float)exp (-0.05776226505 * ((double)synthData.voice[v].note + ANALOG * (double)v)); while (p<3.0f || (p * detune)<3.0f) p += p; synthData.voice[v].target = p; if ((_glide || legato)==0) synthData.voice[v].period = p; synthData.voice[v].fc = 1.0f / p; } else { clearVoice (synthData.voice[v]); } } else //polyphonic { for(v=0; v(5, (int32)(params[3] * 6)); noisemix = params[21] * params[21]; voltrim = (3.2f - params[0] - 1.5f * noisemix) * (1.5f - 0.5f * params[7]); noisemix *= 0.06f; oscmix = params[0]; semi = (float)floor(48.0f * params[1]) - 24.0f; cent = 15.876f * params[2] - 7.938f; cent = 0.1f * (float)floor(cent * cent * cent); detune = (float)pow (1.059463094359f, - semi - 0.01f * cent); tune = -23.376f - 2.0f * params[23] - 12.0f * (float)floor(params[22] * 4.9); tune = getSampleRate () * (float)pow (1.059463094359f, tune); vibrato = pwmdep = 0.2f * (params[20] - 0.5f) * (params[20] - 0.5f); if (params[20]<0.5f) vibrato = 0.0f; lfoHz = (float)exp (7.0f * params[19] - 4.0f); dlfo = lfoHz * (float)(ifs * TWOPI * KMAX); filtf = 8.0f * params[6] - 1.5f; filtq = (1.0f - params[7]) * (1.0f - params[7]); ////// + 0.02f; filtlfo = 2.5f * params[9] * params[9]; filtenv = 12.0f * params[8] - 6.0f; filtvel = 0.1f * params[10] - 0.05f; if (params[10]<0.05f) { veloff = 1; filtvel = 0; } else veloff = 0; att = 1.0f - (float)exp (-ifs * exp (5.5 - 7.5 * params[15])); dec = 1.0f - (float)exp (-ifs * exp (5.5 - 7.5 * params[16])); sus = params[17]; rel = 1.0f - (float)exp (-ifs * exp (5.5 - 7.5 * params[18])); if (params[18]<0.01f) rel = 0.1f; //extra fast release ifs *= KMAX; //lower update rate... fatt = 1.0f - (float)exp (-ifs * exp (5.5 - 7.5 * params[11])); fdec = 1.0f - (float)exp (-ifs * exp (5.5 - 7.5 * params[12])); fsus = params[13] * params[13]; frel = 1.0f - (float)exp (-ifs * exp (5.5 - 7.5 * params[14])); if (params[4]<0.02f) glide = 1.0f; else glide = 1.0f - (float)exp (-ifs * exp (6.0 - 7.0 * params[4])); glidedisp = (6.604f * params[5] - 3.302f); glidedisp *= glidedisp * glidedisp; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaJX10Processor.h000066400000000000000000000112571461511344300250110ustar00rootroot00000000000000/* * mdaJX10Processor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class JX10Processor : public BaseProcessor { public: using Base = BaseProcessor; JX10Processor (); ~JX10Processor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'MDAj'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; bool hasProgram () const SMTG_OVERRIDE { return true; } Steinberg::uint32 getCurrentProgram () const SMTG_OVERRIDE { return currentProgram; } Steinberg::uint32 getNumPrograms () const SMTG_OVERRIDE { return kNumPrograms; } void setCurrentProgram (Steinberg::uint32 val) SMTG_OVERRIDE; void setCurrentProgramNormalized (ParamValue val) SMTG_OVERRIDE; static const int32 kNumPrograms = 52; static float programParams[kNumPrograms][24]; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new JX10Processor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653544D, 0x44416A6D, 0x6461206A, 0x78313000); #else inline static DECLARE_UID (uid, 0x82CD49DE, 0x13D743BA, 0xABDAC299, 0x1CE06F7C); #endif //----------------------------------------------------------------------------- protected: struct VOICE //voice state { float period; float p; //sinc position float pmax; //loop length float dp; //delta float sin0; //sine osc float sin1; float sinx; float dc; //dc offset float detune; float p2; //sinc position float pmax2; //loop length float dp2; //delta float sin02; //sine osc float sin12; float sinx2; float dc2; //dc offset float fc; //filter cutoff root float ff; //filter cutoff float f0; //filter buffers float f1; float f2; float saw; //float vca; //current level ///eliminate osc1 level when separate amp & filter envs? //float env; //envelope //float att; //attack //float dec; //decay float env; float envd; float envl; float fenv; float fenvd; float fenvl; float lev; //osc levels float lev2; float target; //period target int32 note; //remember what note triggered this int32 noteID; // SNA addition float snaPitchbend;// SNA addition float snaVolume;// SNA addition float snaPanLeft; // SNA addition float snaPanRight; // SNA addition }; static constexpr int32 kEventBufferSize = 64; static constexpr int32 kNumVoices = 8; using SynthDataT = SynthData; void preProcess () SMTG_OVERRIDE; void processEvent (const Event& event) SMTG_OVERRIDE; void recalculate () SMTG_OVERRIDE; void noteEvent (const Event& event); void setParameter (ParamID index, ParamValue newValue, int32 sampleOffset) SMTG_OVERRIDE; void clearVoice (VOICE& v); SynthDataT synthData; static const int32 KMAX = 32; ///global internal variables float semi, cent; float tune, detune; float filtf, fzip, filtq, filtlfo, filtenv, filtvel, filtwhl; float oscmix, noisemix; float att, dec, sus, rel, fatt, fdec, fsus, frel; float lfo, dlfo, modwhl, press, pbend, ipbend, rezwhl; float velsens, volume, voltrim; float vibrato, pwmdep, lfoHz, glide, glidedisp; int32 K, lastnote, veloff, mode; Steinberg::uint32 noise; Steinberg::uint32 currentProgram; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLeslieController.cpp000066400000000000000000000104541461511344300262410ustar00rootroot00000000000000/* * mdaLeslieController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaLeslieController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- LeslieController::LeslieController () { } //----------------------------------------------------------------------------- LeslieController::~LeslieController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API LeslieController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { auto* speedParam = new IndexedParameter (USTRING("Speed"), USTRING(""), 2, 0.15, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, kParam0); speedParam->setIndexString (0, UString128("STOP")); speedParam->setIndexString (1, UString128("SLOW")); speedParam->setIndexString (2, UString128("FAST")); parameters.addParameter (speedParam); parameters.addParameter (new ScaledParameter (USTRING("Lo Width"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, kParam1, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Lo Throb"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, kParam2, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Hi Width"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, kParam3, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Hi Depth"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, kParam4, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Hi Throb"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, kParam5, 0, 100, true)); parameters.addParameter (USTRING("X-Over"), USTRING("Hz"), 0, 0.15, ParameterInfo::kCanAutomate, kParam6); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.15, ParameterInfo::kCanAutomate, kParam7, -20, 20, true)); parameters.addParameter (new ScaledParameter (USTRING("Speed"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, kParam8, 0, 200, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API LeslieController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API LeslieController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case kParam6: { result.printInt (10*int ((float)pow (10.0f,(float)(1.179f + valueNormalized)))); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API LeslieController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLeslieController.h000066400000000000000000000046641461511344300257140ustar00rootroot00000000000000/* * mdaLeslieController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaLeslieProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class LeslieController : public BaseController { public: LeslieController (); ~LeslieController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- enum ParameterIDs { kParam0, kParam1, kParam2, kParam3, kParam4, kParam5, kParam6, kParam7, kParam8, kNumParams }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new LeslieController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461486D, 0x6461206C, 0x65736C69); #else inline static DECLARE_UID (uid, 0x3AC7BB1E, 0xE8C74788, 0x8D29C9BF, 0x9D9A51F8); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLeslieProcessor.cpp000066400000000000000000000152551461511344300261010ustar00rootroot00000000000000/* * mdaLeslieProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaLeslieProcessor.h" #include "mdaLeslieController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- LeslieProcessor::LeslieProcessor () { setControllerClass (LeslieController::uid); allocParameters (9); } //----------------------------------------------------------------------------- LeslieProcessor::~LeslieProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API LeslieProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[LeslieController::kParam0] = 0.66f; params[LeslieController::kParam7] = 0.50f; params[LeslieController::kParam6] = 0.48f; params[LeslieController::kParam3] = 0.70f; params[LeslieController::kParam4] = 0.60f; params[LeslieController::kParam5] = 0.70f; params[LeslieController::kParam2] = 0.50f; params[LeslieController::kParam1] = 0.50f; params[LeslieController::kParam8] = 0.60f; size = 256; hpos = 0; hbuf = new float[size]; fbuf1 = fbuf2 = 0.0f; twopi = 6.2831853f; chp = dchp = clp = dclp = shp = dshp = slp = dslp = 0.0f; lspd = 0.0f; hspd = 0.0f; lphi = 0.0f; hphi = 1.6f; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API LeslieProcessor::terminate () { if (hbuf) delete [] hbuf; hbuf = nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API LeslieProcessor::setActive (TBool state) { if (state) memset (hbuf, 0, size * sizeof (float)); return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void LeslieProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, c, d, g=gain, h, l; float fo=filo, fb1=fbuf1, fb2=fbuf2; float hl=hlev, hs=hspd, ht, hm=hmom, hp=hphi, hw=hwid, hd=hdep; float ll=llev, ls=lspd, lt, lm=lmom, lp=lphi, lw=lwid; float hint, k0=0.03125f, k1=32.f; //k0 = 1/k1 int32 hdd, hdd2, k=0, hps=hpos; ht=hset*(1.f-hm); //target speeds lt=lset*(1.f-lm); chp = (float)cos(hp); chp *= chp * chp; //set LFO values clp = (float)cos(lp); shp = (float)sin(hp); slp = (float)sin(lp); --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1 + *++in2; //mono input if (k) k--; else //linear piecewise approx to LFO waveforms { ls = (lm * ls) + lt; //tend to required speed hs = (hm * hs) + ht; lp += k1 * ls; hp += k1 * hs; dchp = (float)cos(hp + k1*hs); dchp = k0 * (dchp * dchp * dchp - chp); //sin^3 level mod dclp = k0 * ((float)cos(lp + k1*ls) - clp); dshp = k0 * ((float)sin(hp + k1*hs) - shp); dslp = k0 * ((float)sin(lp + k1*ls) - slp); k= (int32)k1; } fb1 = fo * (fb1 - a) + a; //crossover fb2 = fo * (fb2 - fb1) + fb1; h = (g - hl * chp) * (a - fb2); //volume l = (g - ll * clp) * fb2; if (hps>0) hps--; else hps=200; //delay input pos hint = hps + hd * (1.0f + chp); //delay output pos hdd = (int)hint; hint = hint - hdd; //linear intrpolation hdd2 = hdd + 1; if (hdd>199) { if (hdd>200) hdd -= 201; hdd2 -= 201; } *(hbuf + hps) = h; //delay input a = *(hbuf + hdd); h += a + hint * ( *(hbuf + hdd2) - a); //delay output c = l + h; d = l + h; h *= hw * shp; l *= lw * slp; d += l - h; c += h - l; *++out1 = c; //output *++out2 = d; chp += dchp; clp += dclp; shp += dshp; slp += dslp; } lspd = ls; hspd = hs; hpos = hps; lphi = (float)fmod(lp+(k1 -k)*ls,twopi); hphi = (float)fmod(hp+(k1 -k)*hs,twopi); if (fabs (fb1)>1.0e-10) fbuf1=fb1; else fbuf1=0.0f; //catch denormals if (fabs (fb2)>1.0e-10) fbuf2=fb2; else fbuf2=0.0f; } //----------------------------------------------------------------------------- void LeslieProcessor::recalculate () { float ifs = 1.0f / (float)getSampleRate (); float spd = twopi * ifs * 2.0f * params[LeslieController::kParam8]; filo = 1.f - (float)pow (10.0f, (float)(params[LeslieController::kParam6] * (2.27f - 0.54f * params[LeslieController::kParam6]) - 1.92f)); switch ((int)(params[LeslieController::kParam0]*2.)) { case 0: { lset = 0.00f; hset = 0.00f; lmom = 0.12f; hmom = 0.10f; break; } case 1: { lset = 0.49f; hset = 0.66f; lmom = 0.27f; hmom = 0.18f; break; } case 2: { lset = 5.31f; hset = 6.40f; lmom = 0.14f; hmom = 0.09f; break; } } hmom = (float)pow (10.0f, -ifs / hmom); lmom = (float)pow (10.0f, -ifs / lmom); hset *= spd; lset *= spd; gain = 0.4f * (float)pow (10.0f, (float)(2.0f * params[LeslieController::kParam7] - 1.0f)); lwid = params[LeslieController::kParam1] * params[LeslieController::kParam1]; llev = gain * 0.9f * params[LeslieController::kParam2] * params[LeslieController::kParam2]; hwid = params[LeslieController::kParam3] * params[LeslieController::kParam3]; hdep = params[LeslieController::kParam4] * params[LeslieController::kParam4] * getSampleRate () / 760.0f; hlev = gain * 0.9f * params[LeslieController::kParam5] * params[LeslieController::kParam5]; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLeslieProcessor.h000066400000000000000000000051711461511344300255420ustar00rootroot00000000000000/* * mdaLeslieProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class LeslieProcessor : public BaseProcessor { public: LeslieProcessor (); ~LeslieProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaH'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new LeslieProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461486D, 0x6461206C, 0x65736C69); #else inline static DECLARE_UID (uid, 0xFBD3AD80, 0x9E2847E0, 0xB87CDEC3, 0x5C0469B1); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float filo; //crossover filter coeff float fbuf1, fbuf2; //filter buffers float twopi; //speed, target, momentum, phase, width, ampmod, freqmod... float hspd, hset, hmom, hphi, hwid, hlev, hdep; float lspd, lset, lmom, lphi, lwid, llev, gain; float *hbuf; //HF delay buffer int32 size, hpos; //buffer length & pointer float chp, dchp, clp, dclp, shp, dshp, slp, dslp; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLimiterController.cpp000066400000000000000000000075561461511344300264420ustar00rootroot00000000000000/* * mdaLimiterController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaLimiterController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- LimiterController::LimiterController () { } //----------------------------------------------------------------------------- LimiterController::~LimiterController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API LimiterController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (new ScaledParameter (USTRING("Thresh"), USTRING("dB"), 0, 0, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); parameters.addParameter (USTRING("Release"), USTRING("ms"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Attack"), UString128(kMicroSecondsString), 0, 0.5, ParameterInfo::kCanAutomate, pid++); auto* kneeParam = new IndexedParameter (USTRING("Knee"), nullptr, 1, 0, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); kneeParam->setIndexString (0, UString128("HARD")); kneeParam->setIndexString (1, UString128("SOFT")); parameters.addParameter (kneeParam); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API LimiterController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API LimiterController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 2: { float att = (float)pow (10.0, -2.0 * valueNormalized); result.printInt (-301030.1 / (getSampleRate () * log10(1.0 - att))); break; } case 3: { float rel = (float)pow (10.0, -2.0 - (3.0 * valueNormalized)); result.printInt (-301.0301 / (getSampleRate () * log10(1.0 - rel))); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API LimiterController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLimiterController.h000066400000000000000000000044001461511344300260700ustar00rootroot00000000000000/* * mdaLimiterController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaLimiterProcessor.h" using namespace Steinberg::Vst; namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class LimiterController : public BaseController { public: LimiterController (); ~LimiterController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new LimiterController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x64614C6D, 0x6461206C, 0x696D6974); #else inline static DECLARE_UID (uid, 0x886C856F, 0x7C164A28, 0x9AD212A9, 0x857386A0); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLimiterProcessor.cpp000066400000000000000000000120521461511344300262610ustar00rootroot00000000000000/* * mdaLimiterProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaLimiterProcessor.h" #include "mdaLimiterController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- LimiterProcessor::LimiterProcessor () { setControllerClass (LimiterController::uid); allocParameters (5); } //----------------------------------------------------------------------------- LimiterProcessor::~LimiterProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API LimiterProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING ("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING ("Stereo Out"), SpeakerArr::kStereo); params[0] = (float)0.60; // thresh params[1] = (float)0.60; // trim params[2] = (float)0.15; // attack params[3] = (float)0.50; // release params[4] = (float)0.40; // knee gain = 1.0; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API LimiterProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API LimiterProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void LimiterProcessor::checkSilence (ProcessData& /*data*/) { } //----------------------------------------------------------------------------- void LimiterProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float g, at, re, tr, th, lev, ol, or_; th = thresh; g = gain; at = att; re = rel; tr = trim; if (data.inputs[0].silenceFlags & 3) // don't process if input (stereo=3 (first 2 bits)) is silent { if (in1 != out1) memset (out1, 0, sampleFrames * sizeof (float)); if (in2 != out2) memset (out2, 0, sampleFrames * sizeof (float)); data.outputs[0].silenceFlags = 3; // keep computing the gain value if (params[4] > 0.5) // soft knee { while (--sampleFrames >= 0) { if (g > 1) { g = g - at * (g - 1); } else { g = g + re * (1 - g); } } } else { while (--sampleFrames >= 0) { // only below threshold g = g + (float)(re * (1.0 - g)); } } gain = g; return; } data.outputs[0].silenceFlags = 0; --in1; --in2; --out1; --out2; if (params[4] > 0.5) // soft knee { while (--sampleFrames >= 0) { ol = *++in1; or_ = *++in2; lev = (float)(1.0 / (1.0 + th * fabs (ol + or_))); if (g > lev) { g = g - at * (g - lev); } else { g = g + re * (lev - g); } *++out1 = (ol * tr * g); *++out2 = (or_ * tr * g); } } else { while (--sampleFrames >= 0) { ol = *++in1; or_ = *++in2; lev = (float)(0.5 * g * fabs (ol + or_)); if (lev > th) { g = g - (at * (lev - th)); } else // below threshold { g = g + (float)(re * (1.0 - g)); } *++out1 = (ol * tr * g); *++out2 = (or_ * tr * g); } } gain = g; } //----------------------------------------------------------------------------- void LimiterProcessor::recalculate () { if (params[4] > 0.5) // soft knee { thresh = static_cast (pow (10.0, 1.0 - (2.0 * params[0]))); } else // hard knee { thresh = static_cast (pow (10.0, (2.0 * params[0]) - 2.0)); } trim = static_cast (pow (10.0, (2.0 * params[1]) - 1.0)); att = static_cast (pow (10.0, -2.0 * params[2])); rel = static_cast (pow (10.0, -2.0 - (3.0 * params[3]))); } } // mda } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLimiterProcessor.h000066400000000000000000000045361461511344300257360ustar00rootroot00000000000000/* * mdaLimiterProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class LimiterProcessor : public BaseProcessor { public: LimiterProcessor (); ~LimiterProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaL'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; void checkSilence (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new LimiterProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x64614C6D, 0x6461206C, 0x696D6974); #else inline static DECLARE_UID (uid, 0xE13C8DA0, 0x72DE4A97, 0xA0890C28, 0x0BDA61F8); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float thresh, gain, att, rel, trim; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLoudnessController.cpp000066400000000000000000000066751461511344300266320ustar00rootroot00000000000000/* * mdaLoudnessController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaLoudnessController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- LoudnessController::LoudnessController () { } //----------------------------------------------------------------------------- LoudnessController::~LoudnessController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API LoudnessController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (USTRING("Loudness"), USTRING("dB"), 0, 0.15, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Output"), USTRING("dB"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); auto* linkParam = new IndexedParameter (USTRING("Link"), USTRING(""), 1, 0.5, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); linkParam->setIndexString (0, UString128("Off")); linkParam->setIndexString (1, UString128("On")); parameters.addParameter (linkParam); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API LoudnessController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API LoudnessController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 0: case 1: { float tmp = valueNormalized + valueNormalized - 1.0f; float igain = 60.0f * tmp * tmp; if (tmp<0.0f) igain *= -1.0f; result.printFloat (igain); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API LoudnessController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLoudnessController.h000066400000000000000000000043451461511344300262670ustar00rootroot00000000000000/* * mdaLoudnessController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaLoudnessProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class LoudnessController : public BaseController { public: LoudnessController (); ~LoudnessController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new LoudnessController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x64616C6D, 0x6461206C, 0x6F75646E); #else inline static DECLARE_UID (uid, 0x9184DDF5, 0x6A2B4C5B, 0xA51BF670, 0x2A8B1BB0); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLoudnessProcessor.cpp000066400000000000000000000137621461511344300264610ustar00rootroot00000000000000/* * mdaLoudnessProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaLoudnessProcessor.h" #include "mdaLoudnessController.h" #include namespace Steinberg { namespace Vst { namespace mda { static float loudness[14][3] = { {402.f, 0.0025f, 0.00f}, //-60dB {334.f, 0.0121f, 0.00f}, {256.f, 0.0353f, 0.00f}, {192.f, 0.0900f, 0.00f}, {150.f, 0.2116f, 0.00f}, {150.f, 0.5185f, 0.00f}, { 1.0f, 0.0f, 0.00f}, //0dB {33.7f, 5.5f, 1.00f}, {92.0f, 8.7f, 0.62f}, {63.7f, 18.4f, 0.44f}, {42.9f, 48.2f, 0.30f}, {37.6f, 116.2f, 0.18f}, {22.9f, 428.7f, 0.09f}, //+60dB { 0.0f, 0.0f, 0.00f} }; //----------------------------------------------------------------------------- LoudnessProcessor::LoudnessProcessor () { setControllerClass (LoudnessController::uid); allocParameters (3); } //----------------------------------------------------------------------------- LoudnessProcessor::~LoudnessProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API LoudnessProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.70f; //loudness params[1] = 0.50f; //output params[2] = 0.35f; //link recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API LoudnessProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API LoudnessProcessor::setActive (TBool state) { if (state) { Z0 = Z1 = Z2 = Z3 = 0.0f; } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void LoudnessProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; if ((data.inputs[0].silenceFlags & 3) && Z0 == 0 && Z1 == 0 && Z2 == 0 && Z3 == 0) // don't process if input is silent { if (in1 != out1) memset (out1, 0, sampleFrames * sizeof (float)); if (in2 != out2) memset (out2, 0, sampleFrames * sizeof (float)); data.outputs[0].silenceFlags = 3; return; } data.outputs[0].silenceFlags = 0; float a, b, c, d; float z0=Z0, z1=Z1, z2=Z2, z3=Z3; float a0=A0, a1=A1, a2=A2, g=gain; --in1; --in2; --out1; --out2; if (mode==0) //cut { while (--sampleFrames >= 0) { a = *++in1; b = *++in2; z0 += a0 * (a - z0 + 0.3f * z1); a -= z0; z1 += a0 * (a - z1); a -= z1; a -= z0 * a1; z2 += a0 * (b - z2 + 0.3f * z1); b -= z2; z3 += a0 * (b - z3); b -= z3; b -= z2 * a1; c = a * g; d = b * g; *++out1 = c; *++out2 = d; } } else //boost { while (--sampleFrames >= 0) { a = *++in1; b = *++in2; z0 += a0 * (a - z0); z1 += a0 * (z0 - z1); a += a1 * (z1 - a2 * z0); z2 += a0 * (b - z2); z3 += a0 * (z2 - z3); b += a1 * (z3 - a2 * z2); c = g * a; d = g * b; *++out1 = c; *++out2 = d; } } if (fabs (z1) < 1.0e-10 || fabs (z1)>100.0f) { Z0 = Z1 = 0.0f; } else { Z0 = z0; Z1 = z1; } //catch denormals if (fabs (z3) < 1.0e-10 || fabs (z3)>100.0f) { Z2 = Z3 = 0.0f; } else { Z2 = z2; Z3 = z3; } } //----------------------------------------------------------------------------- void LoudnessProcessor::recalculate () { float f, tmp; int32 i; tmp = params[0] + params[0] - 1.0f; igain = 60.0f * tmp * tmp; if (tmp<0.0f) igain *= -1.0f; tmp = params[1] + params[1] - 1.0f; ogain = 60.0f * tmp * tmp; if (tmp<0.0f) ogain *= -1.0f; f = 0.1f * igain + 6.0f; //coefficient index + fractional part i = (int32)f; f -= (float)i; tmp = loudness[i][0]; A0 = tmp + f * (loudness[i + 1][0] - tmp); tmp = loudness[i][1]; A1 = tmp + f * (loudness[i + 1][1] - tmp); tmp = loudness[i][2]; A2 = tmp + f * (loudness[i + 1][2] - tmp); A0 = 1.0f - (float)exp (-6.283153f * A0 / getSampleRate ()); if (igain>0) { //if (mode==0) suspend(); //don't click when switching mode mode=1; } else { //if (mode==1) suspend(); mode=0; } tmp = ogain; if (params[2]>0.5f) //linked gain { tmp -= igain; if (tmp>0.0f) tmp = 0.0f; //limit max gain } gain = (float)pow (10.0f, 0.05f * tmp); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaLoudnessProcessor.h000066400000000000000000000046171461511344300261250ustar00rootroot00000000000000/* * mdaLoudnessProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class LoudnessProcessor : public BaseProcessor { public: LoudnessProcessor (); ~LoudnessProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdal'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; void checkSilence (ProcessData& /*data*/) SMTG_OVERRIDE {} //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new LoudnessProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x64616C6D, 0x6461206C, 0x6F75646E); #else inline static DECLARE_UID (uid, 0xF2351D3C, 0xA6E94D47, 0x9E17EB3B, 0x6F30BA7C); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float Z0, Z1, Z2, Z3, A0, A1, A2, gain; float igain, ogain; int32 mode; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaMultiBandController.cpp000066400000000000000000000125251461511344300267040ustar00rootroot00000000000000/* * mdaMultiBandController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaMultiBandController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- MultiBandController::MultiBandController () { } //----------------------------------------------------------------------------- MultiBandController::~MultiBandController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API MultiBandController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; auto* listenParam = new IndexedParameter (USTRING("Listen"), USTRING(""), 3, 0., ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); listenParam->setIndexString (0, UString128("Low")); listenParam->setIndexString (1, UString128("Mid")); listenParam->setIndexString (2, UString128("High")); listenParam->setIndexString (3, UString128("Output")); parameters.addParameter (listenParam); parameters.addParameter (USTRING("L <> M"), USTRING("Hz"), 0, 0.15, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("M <> H"), USTRING("Hz"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("L Comp"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 30, true)); parameters.addParameter (new ScaledParameter (USTRING("M Comp"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 30, true)); parameters.addParameter (new ScaledParameter (USTRING("H Comp"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 30, true)); parameters.addParameter (new ScaledParameter (USTRING("L Out"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); parameters.addParameter (new ScaledParameter (USTRING("M Out"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); parameters.addParameter (new ScaledParameter (USTRING("H Out"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); parameters.addParameter (USTRING("Attack"), UString128(kMicroSecondsString), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Release"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Stereo Width"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Stereo"), USTRING(""), 1, 0.5, ParameterInfo::kCanAutomate, pid++); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API MultiBandController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API MultiBandController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 1: { float fi1 = (float)pow (10.0,valueNormalized - 1.70); result.printInt (getSampleRate () * fi1 * (0.098 + 0.09*fi1 + 0.5*(float)pow (fi1,8.2f))); break; } case 2: { float fi2 = (float)pow (10.0,valueNormalized - 1.05); result.printInt (getSampleRate () * fi2 * (0.015 + 0.15*fi2 + 0.9*(float)pow (fi2,8.2f))); break; } case 9: { float att2 = (float)pow (10.0, -0.05 -(2.0 * valueNormalized)); result.printInt (-301030.1 / (getSampleRate () * log10(1.0 - att2))); break; } case 10: { float rel2 = (float)pow (10.0, -2.0 - (3.0 * valueNormalized)); result.printInt (-301.0301 / (getSampleRate () * log10(1.0 - rel2))); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API MultiBandController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaMultiBandController.h000066400000000000000000000043531461511344300263510ustar00rootroot00000000000000/* * mdaMultiBandController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaMultiBandProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class MultiBandController : public BaseController { public: MultiBandController (); ~MultiBandController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new MultiBandController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x64614D6D, 0x6461206D, 0x756C7469); #else inline static DECLARE_UID (uid, 0x9C79B3F9, 0xD9C949CB, 0xA961571A, 0xFE118C95); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaMultiBandProcessor.cpp000066400000000000000000000140031461511344300265310ustar00rootroot00000000000000/* * mdaMultiBandProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaMultiBandProcessor.h" #include "mdaMultiBandController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- MultiBandProcessor::MultiBandProcessor () { setControllerClass (MultiBandController::uid); allocParameters (13); } //----------------------------------------------------------------------------- MultiBandProcessor::~MultiBandProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API MultiBandProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 1.00; //Listen: L/M/H/out params[1] = 0.103; //xover1 params[2] = 0.878; //xover2 params[3] = 0.54; //L drive (1) params[4] = 0.00; //M drive params[5] = 0.60; //H drive params[6] = 0.45; //L trim (2) params[7] = 0.50; //M trim params[8] = 0.50; //H trim params[9] = 0.22; //attack (3) params[10] = 0.602; //release (4) params[11] = 0.55; //width params[12] = 0.; //MS swap fb1 = fb2 = fb3 = 0.f; gain1 = gain2 = gain3 = 0.f; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API MultiBandProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API MultiBandProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void MultiBandProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, c, d, l=fb3, m, h, s, sl=slev, tmp1, tmp2, tmp3; float f1i=fi1, f1o=fo1, f2i=fi2, f2o=fo2, b1=fb1, b2=fb2; float g1=gain1, d1=driv1, t1=trim1, a1=att1, r1=1.f - rel1; float g2=gain2, d2=driv2, t2=trim2, a2=att2, r2=1.f - rel2; float g3=gain3, d3=driv3, t3=trim3, a3=att3, r3=1.f - rel3; int32 ms=mswap; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; //process from here... b = (ms)? -b : b; s = (a - b) * sl; //keep stereo component for later a += b; b2 = (f2i * a) + (f2o * b2); //crossovers b1 = (f1i * b2) + (f1o * b1); l = (f1i * b1) + (f1o * l); m=b2-l; h=a-b2; tmp1 = (l>0)? l : -l; //l g1 = (tmp1>g1)? g1+a1*(tmp1 -g1) : g1*r1; tmp1 = 1.f / (1.f + d1 * g1); tmp2 = (m > 0)? m : -m; g2 = (tmp2>g2)? g2+a2*(tmp2-g2) : g2*r2; tmp2 = 1.f / (1.f + d2 * g2); tmp3 = (h>0)? h : -h; g3 = (tmp3>g3)? g3+a3*(tmp3-g3) : g3*r3; tmp3 = 1.f / (1.f + d3 * g3); a = (l*tmp3*t1) + (m*tmp2*t2) + (h*tmp3*t3); c = a + s; // output d = (ms)? s - a : a - s; *++out1 = c; *++out2 = d; } gain1= (g1<1.0e-10)? 0.f : g1; gain2= (g2<1.0e-10)? 0.f : g2; gain3= (g3<1.0e-10)? 0.f : g3; // gain1=g1; gain2=g2; gain3=g3; if (fabs (b1) < 1.0e-10) { fb1=0.f; fb2=0.f; fb3=0.f; } else { fb1=b1; fb2=b2; fb3=l; } } //----------------------------------------------------------------------------- void MultiBandProcessor::recalculate () { //calcs here driv1 = (float)pow (10.0,(2.5 * params[3]) - 1.0); trim1 = (float)(0.5 + (4.0 - 2.0 * params[9]) * (params[3] * params[3] * params[3])); trim1 = (float)(trim1 * pow (10.0, 2.0 * params[6] - 1.0)); att1 = (float)pow (10.0, -0.05 -(2.5 * params[9])); rel1 = (float)pow (10.0, -2.0 - (3.5 * params[10])); driv2 = (float)pow (10.0,(2.5 * params[4]) - 1.0); trim2 = (float)(0.5 + (4.0 - 2.0 * params[9]) * (params[4] * params[4] * params[4])); trim2 = (float)(trim2 * pow (10.0, 2.0 * params[7] - 1.0)); att2 = (float)pow (10.0, -0.05 -(2.0 * params[9])); rel2 = (float)pow (10.0, -2.0 - (3.0 * params[10])); driv3 = (float)pow (10.0,(2.5 * params[5]) - 1.0); trim3 = (float)(0.5 + (4.0 - 2.0 * params[9]) * (params[5] * params[5] * params[5])); trim3 = (float)(trim3 * pow (10.0, 2.0 * params[8] - 1.0)); att3 = (float)pow (10.0, -0.05 -(1.5 * params[9])); rel3 = (float)pow (10.0, -2.0 - (2.5 * params[10])); int32 listen = std::min (3, params[0] * (4)); switch (listen) { case 0: trim2=0.0; trim3=0.0; slev=0.0; break; case 1: trim1=0.0; trim3=0.0; slev=0.0; break; case 2: trim1=0.0; trim2=0.0; slev=0.0; break; default: slev=params[11]; break; } fi1 = (float)pow (10.0,params[1] - 1.70); fo1= (float)(1.0 - fi1); fi2 = (float)pow (10.0,params[2] - 1.05); fo2= (float)(1.0 - fi2); if (params[12]>0.5) mswap=1; else mswap=0; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaMultiBandProcessor.h000066400000000000000000000047031461511344300262040ustar00rootroot00000000000000/* * mdaMultiBandProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class MultiBandProcessor : public BaseProcessor { public: MultiBandProcessor (); ~MultiBandProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaM'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new MultiBandProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x64614D6D, 0x6461206D, 0x756C7469); #else inline static DECLARE_UID (uid, 0x97C53059, 0x47FC442C, 0x8A858B04, 0x30C3AFE7); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float gain1, driv1, att1, rel1, trim1; float gain2, driv2, att2, rel2, trim2; float gain3, driv3, att3, rel3, trim3; float fi1, fb1, fo1, fi2, fb2, fo2, fb3, slev; int32 mswap; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaOverdriveController.cpp000066400000000000000000000064301461511344300267700ustar00rootroot00000000000000/* * mdaOverdriveController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaOverdriveController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- OverdriveController::OverdriveController () { } //----------------------------------------------------------------------------- OverdriveController::~OverdriveController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API OverdriveController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (new ScaledParameter (USTRING("Drive"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Muffle"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API OverdriveController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API OverdriveController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } //----------------------------------------------------------------------------- tresult PLUGIN_API OverdriveController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaOverdriveController.h000066400000000000000000000043531461511344300264370ustar00rootroot00000000000000/* * mdaOverdriveController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaOverdriveProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class OverdriveController : public BaseController { public: OverdriveController (); ~OverdriveController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new OverdriveController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x64614F6D, 0x6461206F, 0x76657264); #else inline static DECLARE_UID (uid, 0x6E19D9A6, 0x81594A9D, 0x8730820A, 0x2AF52AC4); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaOverdriveProcessor.cpp000066400000000000000000000072471461511344300266330ustar00rootroot00000000000000/* * mdaOverdriveProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaOverdriveProcessor.h" #include "mdaOverdriveController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- OverdriveProcessor::OverdriveProcessor () { setControllerClass (OverdriveController::uid); allocParameters (3); } //----------------------------------------------------------------------------- OverdriveProcessor::~OverdriveProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API OverdriveProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.0f; params[1] = 0.0f; params[2] = 0.5f; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API OverdriveProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API OverdriveProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void OverdriveProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, c, d; float i=params[0], g=gain, aa, bb; float f=filt, fa=filt1, fb=filt2; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; aa = (a > 0.0f)? (float)sqrt (a) : (float)-sqrt (-a); //overdrive bb = (b > 0.0f)? (float)sqrt (b) : (float)-sqrt (-b); fa = fa + f * (i * (aa - a) + a - fa); //filter fb = fb + f * (i * (bb - b) + b - fb); c = fa * g; d = fb * g; *++out1 = c; *++out2 = d; } if (fabs (fa) > 1.0e-10) filt1 = fa; else filt1 = 0.0f; //catch denormals if (fabs (fb) > 1.0e-10) filt2 = fb; else filt2 = 0.0f; } //----------------------------------------------------------------------------- void OverdriveProcessor::recalculate () { filt = (float)pow (10.0, -1.6 * params[1]); gain = (float)pow (10.0f, (float)(2.0f * params[2] - 1.0f)); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaOverdriveProcessor.h000066400000000000000000000045731461511344300262770ustar00rootroot00000000000000/* * mdaOverdriveProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class OverdriveProcessor : public BaseProcessor { public: OverdriveProcessor (); ~OverdriveProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaO'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new OverdriveProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x64614F6D, 0x6461206F, 0x76657264); #else inline static DECLARE_UID (uid, 0x203C7009, 0x042A4AC2, 0xA515CFF1, 0xDF647E92); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float filt1, filt2; //filter buffers float filt; //filter coeff. float gain; //output gain }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaParameter.cpp000066400000000000000000000154401461511344300247000ustar00rootroot00000000000000/* * mdaParameter.cpp * mda-vst3 * * Created by Arne Scheffler on 6/15/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaParameter.h" #include "pluginterfaces/base/futils.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- BaseParameter::BaseParameter (const TChar* title, const TChar* units, int32 stepCount, ParamValue defaultValueNormalized, int32 flags, int32 tag, UnitID unitID) { Steinberg::UString (info.title, USTRINGSIZE (info.title)).assign (title); Steinberg::UString uUnits (info.units, USTRINGSIZE (info.units)); if (units) { uUnits.assign (units); } info.stepCount = stepCount; info.defaultNormalizedValue = defaultValueNormalized; info.flags = flags; info.id = tag; info.unitId = unitID; } //----------------------------------------------------------------------------- bool BaseParameter::fromString (const TChar* string, ParamValue& _valueNormalized) const { UString wrapper ((TChar*)string, USTRINGSIZE (String128)); double value; if (wrapper.scanFloat (value)) { if (value < 0) value = 0; else if (value > 1) value = 1; _valueNormalized = toNormalized (value); return true; } return false; } //----------------------------------------------------------------------------- bool BaseParameter::setNormalized (ParamValue v) { return Parameter::setNormalized (v); } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- IndexedParameter::IndexedParameter (const TChar* title, const TChar* units, int32 stepCount, ParamValue defaultValueNormalized, int32 flags, int32 tag, UnitID unitID) : BaseParameter (title, units, stepCount, defaultValueNormalized, flags, tag, unitID) , indexString (nullptr) { indexString = new String128[stepCount+1]; for (int32 i = 0; i <= stepCount; i++) indexString[i][0] = 0; } //----------------------------------------------------------------------------- IndexedParameter::~IndexedParameter () { delete[] indexString; } //----------------------------------------------------------------------------- ParamValue IndexedParameter::toPlain (ParamValue _valueNormalized) const { return (ParamValue) (FromNormalized (_valueNormalized, info.stepCount)); } //----------------------------------------------------------------------------- ParamValue IndexedParameter::toNormalized (ParamValue plainValue) const { return ToNormalized (plainValue, info.stepCount); } //----------------------------------------------------------------------------- void IndexedParameter::toString (ParamValue _valueNormalized, String128 string) const { memcpy (string, indexString[(int32)toPlain (_valueNormalized)], 128 * sizeof (TChar)); } //----------------------------------------------------------------------------- bool IndexedParameter::fromString (const TChar* string, ParamValue& _valueNormalized) const { if (string[0] == 0) return false; for (int32 i = 0; i <= info.stepCount; i++) { int32 pos = 0; do { if (string[pos] != indexString[i][pos]) break; pos++; if (string[pos] == 0 && indexString[i][pos] == 0) { _valueNormalized = toNormalized (i); return true; } } while (string[pos] != 0 && indexString[i][pos] != 0); } UString128 str (string); int64 value; if (str.scanInt (value) && value <= info.stepCount) { _valueNormalized = toNormalized (value); return true; } return false; } //----------------------------------------------------------------------------- void IndexedParameter::setIndexString (int32 index, const String128 str) { if (index <= info.stepCount) memcpy (indexString[index], str, sizeof (String128)); } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- ScaledParameter::ScaledParameter ( const TChar* title, const TChar* units, int32 stepCount, ParamValue defaultValueNormalized, int32 flags, int32 tag, ParamValue minValue, ParamValue maxValue, bool printAsInteger, UnitID unitID) : BaseParameter (title, units, stepCount, defaultValueNormalized, flags, tag, unitID) , minValue (minValue) , maxValue (maxValue) , printAsInteger (printAsInteger) { setPrecision (2); } //----------------------------------------------------------------------------- ParamValue ScaledParameter::toPlain (ParamValue _valueNormalized) const { return _valueNormalized * (maxValue - minValue) + minValue; } //----------------------------------------------------------------------------- ParamValue ScaledParameter::toNormalized (ParamValue plainValue) const { return (plainValue - minValue) / (maxValue - minValue); } //----------------------------------------------------------------------------- void ScaledParameter::toString (ParamValue _valueNormalized, String128 string) const { UString wrapper (string, USTRINGSIZE (String128)); if (printAsInteger) wrapper.printInt (toPlain (_valueNormalized)); else wrapper.printFloat (toPlain (_valueNormalized), precision); } //----------------------------------------------------------------------------- bool ScaledParameter::fromString (const TChar* string, ParamValue& _valueNormalized) const { UString wrapper ((TChar*)string, USTRINGSIZE (String128)); double value; if (wrapper.scanFloat (value)) { if (value < minValue) value = minValue; else if (value > maxValue) value = maxValue; _valueNormalized = toNormalized (value); return true; } return false; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaParameter.h000066400000000000000000000066461461511344300243550ustar00rootroot00000000000000/* * mdaParameter.h * mda-vst3 * * Created by Arne Scheffler on 6/15/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "public.sdk/source/vst/vstparameters.h" #include "pluginterfaces/base/ustring.h" #include #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class BaseParameter : public Parameter { public: BaseParameter ( const TChar* title, const TChar* units, int32 stepCount, ParamValue defaultValueNormalized, int32 flags, int32 tag, UnitID unitID = kRootUnitId); bool fromString (const TChar* string, ParamValue& _valueNormalized) const SMTG_OVERRIDE; bool setNormalized (ParamValue v) SMTG_OVERRIDE; }; //----------------------------------------------------------------------------- class IndexedParameter : public BaseParameter { public: IndexedParameter ( const TChar* title, const TChar* units, int32 stepCount, ParamValue defaultValueNormalized, int32 flags, int32 tag, UnitID unitID = kRootUnitId); ParamValue toPlain (ParamValue _valueNormalized) const SMTG_OVERRIDE; ParamValue toNormalized (ParamValue plainValue) const SMTG_OVERRIDE; void toString (ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE; bool fromString (const TChar* string, ParamValue& _valueNormalized) const SMTG_OVERRIDE; void setIndexString (int32 index, const String128 str); protected: ~IndexedParameter (); String128* indexString; }; //----------------------------------------------------------------------------- class ScaledParameter : public BaseParameter { public: ScaledParameter ( const TChar* title, const TChar* units, int32 stepCount, ParamValue defaultValueNormalized, int32 flags, int32 tag, ParamValue minValue = 0., ParamValue maxValue = 1., bool printAsInteger = false, UnitID unitID = kRootUnitId); ParamValue toPlain (ParamValue _valueNormalized) const SMTG_OVERRIDE; ParamValue toNormalized (ParamValue plainValue) const SMTG_OVERRIDE; void toString (ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE; bool fromString (const TChar* string, ParamValue& _valueNormalized) const SMTG_OVERRIDE; protected: ParamValue minValue; ParamValue maxValue; bool printAsInteger; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaPianoController.cpp000066400000000000000000000143541461511344300260750ustar00rootroot00000000000000/* * mdaPianoController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaPianoController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- PianoController::PianoController () { addBypassParameter = false; } //----------------------------------------------------------------------------- PianoController::~PianoController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API PianoController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { auto* presetParam = new IndexedParameter ( USTRING ("Factory Presets"), USTRING ("%"), 4, 0.15, ParameterInfo::kIsProgramChange | ParameterInfo::kIsList, kPresetParam); presetParam->setIndexString (0, UString128("mda Piano")); presetParam->setIndexString (1, UString128("Plain Piano")); presetParam->setIndexString (2, UString128("Compressed Piano")); presetParam->setIndexString (3, UString128("Dance Piano")); presetParam->setIndexString (4, UString128("Convert Piano")); presetParam->setIndexString (4, UString128("Dark Piano")); presetParam->setIndexString (4, UString128("School Piano")); presetParam->setIndexString (4, UString128("Broken Piano")); parameters.addParameter (presetParam); ParamID pid = 0; parameters.addParameter (new ScaledParameter (USTRING("Envelope Decay"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Envelope Release"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Hardness Offset"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Velocity to Hardness"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Muffling Filter"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Velocity to Muffling"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Velocity Sensitivity"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Stereo Width"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 200)); parameters.addParameter (new ScaledParameter (USTRING("Polyphony"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 8, 32, true)); parameters.addParameter (new ScaledParameter (USTRING("Fine Tuning"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Random Detunging"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100)); parameters.addParameter (new ScaledParameter (USTRING("Stretch Tuning"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -50, 50)); midiCCParamID[kCtrlModWheel] = kModWheelParam; midiCCParamID[kCtrlSoftPedalOnOff] = kModWheelParam; parameters.addParameter (USTRING("Mod Wheel"), USTRING(""), 0, 0, 0, kModWheelParam); midiCCParamID[kCtrlSustainOnOff] = kSustainParam; midiCCParamID[kCtrlSustenutoOnOff] = kSustainParam; parameters.addParameter (new IndexedParameter (USTRING("Sustain"), USTRING(""), 1, 0, 0, kSustainParam)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API PianoController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API PianoController::setParamNormalized (ParamID tag, ParamValue value) { tresult res = BaseController::setParamNormalized (tag, value); if (res == kResultOk && tag == kPresetParam) // preset change { int32 program = parameters.getParameter (tag)->toPlain (value); for (int32 i = 0; i < PianoProcessor::NPARAMS; i++) { BaseController::setParamNormalized (i, PianoProcessor::programParams[program][i]); } componentHandler->restartComponent (kParamValuesChanged); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API PianoController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } //----------------------------------------------------------------------------- tresult PLUGIN_API PianoController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaPianoController.h000066400000000000000000000044521461511344300255400ustar00rootroot00000000000000/* * mdaPianoController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaPianoProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class PianoController : public BaseController { public: PianoController (); ~PianoController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new PianoController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653454D, 0x4441706D, 0x64612070, 0x69616E6F); #else inline static DECLARE_UID (uid, 0xBAC8AA21, 0x216D4754, 0xA7639173, 0xE3BB5F7A); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaPianoData.h000066400000000000000000145611651461511344300243040ustar00rootroot00000000000000/* mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ short pianoData[] = { 5,-7,5,-6,159,163,146,133,130,152, 220,299,641,1124,1413,673,-1277,-3818,-4550,-3574, -4184,-4621,-2371,1766,5508,7070,5589,2533,402,-1310, -3888,-5222,-4359,-2286,576,3457,4686,4558,4367,4075, 2627,388,-1822,-2927,-2607,-2215,-2378,-1702,276,1936, 1982,271,-2323,-3820,-3737,-2898,-1516,-111,-44,-692, -615,735,3539,7590,10471,10621,9317,7973,6920,5144, 1548,-2870,-5474,-5347,-3607,-1149,942,1338,-55,-2557, -5747,-8431,-9565,-9982,-9570,-6877,-2653,1239,4249,6622, 7942,8441,9684,10581,9585,6145,1062,-1929,-1043,1968, 5497,8929,10974,9605,4067,-4513,-12761,-17252,-18208,-17636, -15188,-9693,-3512,-142,-865,-4590,-8135,-7725,-3731,-266, 500,-508,-293,2952,7142,8944,8435,6936,3656,-502, -3734,-6394,-9007,-11102,-13117,-13610,-10553,-5788,-3041,-2599, -4153,-7912,-9881,-6770,-1104,3732,6269,6657,7614,9838, 10199,8602,8429,9740,10061,9535,9671,10392,11324,12168, 11668,10522,10551,9813,7274,5146,3686,2653,3030,4142, 4876,4778,3594,2028,1862,2695,2239,1074,916,887, 551,1064,2454,4026,4494,2399,-510,-1089,-656,-1555, -2029,-251,2823,6440,9894,12109,12878,11616,8593,6787, 7905,8837,6942,3701,1081,105,310,-471,-2725,-3712, -3537,-4235,-4576,-3718,-3550,-4950,-6422,-7312,-6540,-3594, -1373,-1003,-1500,-3167,-4774,-4140,-2069,-1787,-3868,-6360, -8055,-8570,-9408,-12014,-14291,-13900,-13254,-13628,-13276,-13281, -14085,-14237,-14689,-14943,-12358,-8735,-8009,-9719,-11330,-11954, -10746,-8090,-6585,-6560,-6821,-7483,-6551,-2612,907,2695, 4606,5350,3970,3420,4569,4272,1999,-309,-1242,307, 3178,3812,2531,2852,3719,3957,4619,3646,537,-1119, -757,-262,560,2257,4071,5635,6477,6268,7378,10491, 11112,7168,3752,3921,6070,9093,10085,7340,3762,1885, 1677,2521,3111,2059,1130,1872,1875,1609,3679,6605, 7793,7706,5753,2443,1882,2952,1660,-453,-853,189, 2475,4921,4309,793,-2267,-3170,-2349,-409,557,-242, 527,3111,4381,4579,4088,2861,3306,5163,5103,3860, 4117,4496,3346,2092,1370,1890,3754,4181,2104,643, 782,1265,2910,4668,4291,4337,6419,7288,5274,2104, 541,3072,7881,10235,9342,8714,8258,5700,2233,-1011, -3642,-3127,1066,5252,6727,5463,2655,61,-1893,-3795, -4767,-3542,-1572,-452,-283,-2095,-5466,-7438,-8239,-9425, -8576,-5229,-3226,-3817,-5374,-6961,-7078,-5053,-2837,-1463, -563,-1371,-3481,-3495,-1565,-388,487,1642,2388,3446, 2791,-3074,-11760,-18778,-22553,-21601,-15920,-9994,-6428,-3729, -3137,-5233,-6351,-6598,-8469,-9331,-7679,-5785,-1998,5274, 10939,11363,8884,6350,6177,7394,5748,23,-5034,-6776, -6316,-4275,-3116,-6066,-10256,-11662,-11161,-9683,-8209,-9041, -10166,-8179,-4274,-374,3632,7422,10111,10433,8391,6388, 6570,6141,3346,697,338,1671,3254,2219,-3802,-10970, -14195,-13986,-12619,-10324,-7488,-4908,-3577,-3781,-3651,-1213, 2553,5915,8338,8797,7667,6787,6621,5092,2717,2248, 4306,7779,11851,13271,10238,6869,6448,8170,10427,11927, 12046,10575,7653,4426,3699,6264,9229,11106,13281,15202, 15277,13622,10138,4426,-630,-2994,-3355,-1060,2571,2911, 38,-2150,-2588,-974,2471,4922,5329,5566,6648,8662, 12226,15620,16838,16836,16304,15384,14074,10960,5557,901, -984,-998,421,3106,3541,306,-2465,-3243,-2893,-1667, -1283,-2425,-2954,-2109,-1155,225,1366,891,762,1979, 2230,955,-1454,-6225,-11195,-11957,-10002,-9058,-8999,-10047, -13268,-16251,-17188,-16869,-15166,-13224,-12971,-14312,-15904,-16699, -15488,-12876,-12106,-14275,-16858,-17290,-15588,-13509,-13876,-16528, -17416,-14564,-10283,-6931,-4758,-3982,-3464,-3308,-6035,-8333, -4764,1528,4045,1957,-1509,-2565,209,3328,2890,847, 966,3263,5636,4747,-943,-6089,-5053,-727,491,-1603, -3824,-3970,-1671,676,2505,6281,11282,13317,11461,7581, 4085,2528,2734,3264,4678,8534,14143,18693,19522,15684, 9660,6370,6662,7297,5851,3409,2849,6457,10745,10775, 7800,6097,6297,6009,3152,-2049,-6079,-7165,-6311,-3290, 1129,4744,7158,9033,7597,2678,-1879,-3444,-3235,-2036, 645,2946,5105,7973,8385,5560,3087,3071,4091,4558, 3263,865,-573,-1117,-1181,-1033,-1512,-2087,301,6424, 11332,11267,8047,4104,158,-1242,888,4537,8343,10808, 10731,9918,10544,11076,9942,7352,4281,2711,3838,5320, 5390,5195,5178,5467,6489,6970,5179,1250,-3703,-8672, -11381,-10560,-8909,-7711,-5286,-1961,1007,2338,-44,-6358, -12520,-15615,-14899,-10177,-3569,2417,7176,10924,12543,11491, 7869,2364,-3431,-7855,-11097,-12800,-11931,-10632,-11273,-13241, -15078,-15064,-12363,-9834,-10892,-14078,-16785,-16811,-13268,-8761, -6901,-6278,-3399,1066,4699,5817,4455,2528,1598,1357, 481,24,-70,-1926,-5924,-11377,-16459,-16999,-12135,-7271, -5721,-6680,-8455,-8474,-7412,-7820,-9244,-8291,-3929,1985, 7492,11041,12584,13017,11747,7750,3504,2032,1683,-471, -5205,-10709,-12782,-9137,-4141,-2698,-4214,-6503,-7854,-7102, -5830,-6378,-7056,-4492,1190,7183,10877,11166,9058,6155, 3433,1460,1103,1705,3077,5253,7202,8323,10581,14116, 15305,12657,7695,3979,3748,4720,4299,4271,6812,11102, 16437,20930,22098,19799,15987,11727,7344,4366,3401,3123, 2631,1820,929,1637,4057,5046,3868,2612,2340,3813, 5876,5819,4663,6281,11291,17754,22563,22357,17623,11991, 8410,6429,5792,6171,5553,3971,2562,692,-1127,-578, 2018,3387,2085,-622,-3136,-3650,-1833,-109,359,29, 335,2768,5909,6640,4179,632,-2990,-5550,-5221,-3575, -4319,-8435,-12333,-13547,-13358,-13619,-14189,-12988,-10090,-7541, -7238,-9503,-13693,-17765,-19946,-20719,-19205,-15835,-13139,-13152, -15532,-16783,-14985,-11967,-10450,-11366,-13138,-13925,-13120,-11070, -9233,-8578,-6151,-861,3081,2223,-1850,-5856,-7921,-7634, -5784,-2975,662,4123,5962,5133,1946,-2295,-5880,-7500, -8166,-8887,-8543,-6938,-5019,-3093,-1794,-234,3637,8170, 9194,6280,3126,1826,2184,2705,2713,4533,8915,12979, 14323,13112,9323,4714,3113,5172,8185,9767,9045,7386, 7314,9151,10744,11248,10851,8285,4323,2569,3361,4681, 4345,770,-2985,-2423,2307,7975,11774,11644,8027,3860, 1241,-381,-2127,-3324,-3226,-1003,3338,7711,10328,10983, 9060,5160,1338,-2005,-4011,-4615,-5539,-5857,-3221,1345, 4586,4981,3280,1479,1390,2032,1536,157,-1246,-1798, -356,3648,8155,11193,11517,8864,5227,3449,4018,4774, 5975,7841,9937,12717,15415,15481,11571,5330,315,-812, 1066,2195,1623,1995,3279,2081,-1878,-5057,-6522,-7181, -8228,-10065,-10902,-9175,-6302,-3607,-2113,-2585,-1830,2863, 8294,10561,9552,6577,3562,2469,3605,3932,1280,-3302, -8996,-13755,-15670,-15028,-13299,-12187,-13147,-15136,-14667,-11398, -8972,-10661,-16191,-20555,-18402,-9983,-805,4570,6307,7135, 8503,9064,6952,2624,-1833,-5779,-8612,-9951,-10364,-9779, -8543,-7793,-8081,-8199,-7672,-8093,-10294,-14331,-18671,-18570, -12328,-4194,1736,4621,5645,7923,11910,13804,11604,6815, 1562,-2919,-4570,-4012,-3982,-4689,-4826,-4917,-5886,-6942, -7815,-8335,-8253,-8845,-9939,-8075,-3439,-333,344,979, 3049,5718,6746,4490,842,-247,1229,2938,4486,5819, 7004,8564,9671,9259,8945,10327,11536,10074,5401,-4, -370,6645,15070,19262,19160,16965,15552,16479,17530,15446, 11430,7791,4817,2845,1368,-1,61,1773,2693,2813, 3779,5064,5325,4270,2362,1874,4763,9352,12208,12578, 12247,13628,16633,17013,12868,8245,6600,6753,6525,5240, 3392,1573,426,-134,651,2779,3471,1635,-1199,-4329, -6517,-5499,-2016,1725,5277,7804,9154,10163,10071,6436, 721,-2825,-4187,-6012,-8553,-10070,-9629,-7888,-6495,-5864, -4169,-2442,-3333,-6944,-11339,-15133,-17555,-18040,-16692,-13784, -10483,-8964,-10009,-11662,-13431,-16107,-17617,-16311,-14300,-13511, -13057,-11235,-7539,-4594,-5790,-8742,-8272,-4904,-2952,-3821, -7033,-10702,-10893,-6889,-1135,3580,3723,-503,-4355,-5412, -5666,-6171,-6399,-7453,-9697,-11078,-10046,-7124,-4002,-2942, -4215,-4838,-2346,1684,4310,3891,1378,189,161,-447, -583,900,3352,6035,8744,10717,11602,11251,8839,5208, 2560,2779,5618,9278,11054,10439,10918,13046,13481,10272, 4716,-769,-2849,381,5462,7917,7416,5834,5050,5048, 4383,3188,3004,3168,1456,-1243,-1605,974,4638,7932, 9793,10545,10922,9956,6716,2890,-200,-2500,-2665,-1466, -680,-46,618,-6,-1574,-1952,-257,2009,3560,4579, 4599,4168,4269,3850,2366,-78,-1400,1377,7380,12695, 15248,14814,11396,7290,5051,5533,7671,8504,6370,3557, 3565,6504,10114,11907,9898,5204,2373,2323,1799,-559, -4366,-8284,-9356,-6715,-3533,-2798,-4464,-7080,-8841,-8731, -7268,-4574,-326,3352,5463,8806,12725,13343,9901,3825, -3006,-6388,-4589,-1958,-2280,-4544,-6980,-7982,-7212,-6819, -8835,-12676,-17625,-22069,-22726,-20270,-17143,-12960,-7674,-3857, -774,3606,6538,6236,4231,1815,-761,-2565,-3460,-3455, -2389,-1675,-2033,-2017,-2112,-4746,-9213,-13010,-16006,-17867, -17768,-16916,-15495,-12597,-9400,-6733,-2847,2699,7565,9435, 7758,4743,3625,4606,4683,3122,572,-3118,-6437,-6857, -5071,-3490,-3088,-4843,-8499,-11380,-12281,-11779,-9668,-7272, -6585,-5815,-3200,-46,1476,533,-1054,-432,2811,4926, 3650,1087,232,2358,5675,7531,7640,8059,8166,6364, 4263,2774,1019,-10,1579,5646,11510,17497,21206,22345, 21370,18241,14930,14082,13356,8940,2914,-210,430,2646, 3724,3217,4461,8329,9168,4839,326,-1557,-1881,-648, 1985,5982,11383,16165,18265,17706,16002,14021,12481,10699, 7550,4685,4245,4994,4820,4087,3207,3068,5131,5859, 560,-7115,-10280,-8145,-4016,-933,996,5048,10906,14209, 13509,10422,5360,-754,-3555,-2461,-510,1111,1245,-1190, -4730,-6205,-4618,-1395,257,-2207,-7070,-11078,-13491,-14039, -12200,-10797,-11656,-13010,-14009,-14666,-14311,-13765,-14230,-14217, -13195,-12064,-10610,-9656,-10859,-13169,-13531,-12043,-10549,-8966, -7870,-7735,-5943,-2355,-908,-2340,-4831,-6480,-5550,-2990, -765,971,1215,-1179,-3827,-4144,-3986,-5901,-8823,-10387, -10976,-10100,-6824,-2568,1337,2835,980,-1639,-3069,-3925, -2623,974,3107,2770,1523,588,912,3070,5826,7761, 9436,10516,10036,8912,8158,7094,6262,6652,7868,10192, 12645,11811,8434,6543,6783,7343,7686,6573,3736,1433, 1115,1756,2178,2182,1678,1699,2976,5305,7774,7551, 2685,-3655,-5917,-3380,2321,8833,12396,11337,8780,6580, 2827,-2535,-7418,-10008,-9416,-6824,-3903,-200,3773,5619, 5333,4998,3622,515,-2258,-4362,-6825,-7427,-3563,3041, 9144,12246,11701,10942,12503,12668,8583,2465,-2648,-3299, 1490,7408,10817,12903,13906,12442,10351,9099,8196,7507, 6252,3362,781,830,1047,-384,-2057,-3808,-6230,-7180, -5888,-5097,-4804,-4284,-3278,-882,1554,1943,2082,3683, 4667,4387,4331,4803,5117,4795,3024,331,-965,-920, -2032,-4910,-9072,-14194,-17785,-17283,-14240,-11140,-10045,-12109, -14087,-12462,-9461,-7749,-6173,-3829,-1177,751,1752,2641, 4286,5136,3319,330,-1568,-2868,-4421,-5021,-5046,-6048, -7795,-10140,-12758,-14714,-16472,-17358,-15986,-13655,-11643,-8786, -5051,-742,4374,8107,8670,7603,7096,5884,2483,-1230, -3398,-4539,-5023,-5148,-5010,-2972,-670,-1609,-4633,-7633, -10616,-12358,-12053,-11834,-11646,-9600,-6085,-2804,-712,-171, 55,2235,4984,5506,4374,2640,929,1008,3340,5258, 5912,6631,6043,4046,2481,1610,1352,2148,3320,6042, 12312,18312,19667,18054,16667,16570,17173,16025,11402,6044, 3650,4088,5178,5851,5416,4756,5681,6314,4561,3219, 3185,2041,313,79,2241,7144,12394,14100,12077,9127, 8284,11425,16063,17260,14499,11398,9495,7478,5171,3252, 1623,1282,1980,1778,605,-323,-1264,-991,904,1766, 2107,3633,4473,3805,3676,4761,6182,7163,5709,1603, -1954,-2056,-651,-1035,-2270,-3145,-2953,-368,2743,3698, 2401,-1240,-6749,-11655,-15493,-18284,-17731,-14883,-12834,-11923, -11351,-10707,-9510,-8407,-9398,-12806,-16570,-18796,-18262,-14759, -10782,-8175,-6504,-6222,-7554,-8079,-7359,-6630,-4993,-2987, -2808,-4117,-5040,-5873,-7694,-9374,-8418,-3924,985,823, -4546,-9455,-10804,-9892,-8083,-6419,-6300,-6494,-4724,-1480, 1736,3804,3286,547,-2184,-4575,-5598,-4242,-3345,-3823, -3139,-595,3414,9705,15099,15171,10818,6074,2660,632, 507,2223,5809,11556,16759,18666,17895,14313,8590,4395, 2666,1452,1024,1447,1472,2440,4885,6196,5625,4162, 1374,-1390,-1339,379,1582,3253,5184,6023,6938,8354, 8347,6875,5090,1822,-2182,-4656,-5296,-3621,254,2475, 1829,1444,1064,-853,-2646,-3526,-4112,-3899,-2828,-1163, 1508,3854,3829,3020,4485,7021,8352,8702,8032,6883, 7405,8247,7432,6378,4940,2906,3524,7681,12453,15776, 16540,14381,11204,8908,7038,4929,3266,1211,-2482,-5629, -5960,-4810,-2697,-182,800,445,-748,-3226,-5542,-6366, -6895,-6166,-2779,1517,5194,8198,10158,10261,9036,6957, 3806,-234,-3649,-5402,-5633,-5378,-5926,-6861,-7331,-8521, -9891,-10476,-11653,-13577,-14422,-14052,-12715,-9603,-6503,-4827, -2474,842,3272,4455,4279,2545,1091,1417,1574,247, -1413,-3002,-4720,-5559,-6089,-8105,-11208,-14809,-18258,-18775, -16046,-13167,-10612,-7772,-5166,-1938,1820,3662,3401,3288, 3156,2733,2382,616,-2758,-4636,-3458,-1439,410,1824, 1124,-1330,-4054,-7215,-10249,-11408,-11712,-12051,-11892,-12374, -12268,-8711,-3470,-262,833,1396,2673,4907,6124,4380, 707,-1522,-1251,296,2469,3875,3955,4184,4119,2893, 2907,4836,6332,7355,7958,7931,9368,12306,14309,15398, 16561,16749,14927,11113,5607,296,-1193,1297,4638,7348, 8623,7994,7188,7400,6704,4536,1836,-1268,-2695,-515, 3358,7037,11156,14965,16650,15778,13564,12004,11545,10164, 6580,2728,803,866,2715,5818,7820,7489,5090,1083, -2544,-2971,-1374,134,1768,3295,4350,5495,6306,5749, 4438,2392,-125,-1556,-2019,-2535,-2401,141,4467,7677, 7985,5026,136,-3565,-5416,-5915,-4740,-4099,-6861,-11311, -14570,-16141,-15456,-12431,-9699,-9321,-10884,-12957,-13633,-13040, -13822,-16122,-17213,-15883,-12857,-8706,-5689,-5286,-5509,-5014, -5425,-6472,-6145,-5405,-5260,-5214,-5588,-6186,-5672,-5057, -4839,-3656,-3213,-4660,-6211,-8473,-12234,-13869,-10994,-5694, -646,3089,4310,3359,1843,-593,-3849,-5690,-5866,-5267, -3525,-2064,-1731,479,3721,4084,2609,2146,2869,4701, 6809,6853,5465,5467,6500,6936,7692,9267,10790,12685, 14411,13505,11461,10646,9752,8301,6732,3906,180,-2456, -4153,-4837,-3291,127,4011,7054,7769,6124,4298,3293, 2247,1008,559,542,1210,3987,7540,9487,9491,7249, 3003,-1439,-4970,-6809,-6030,-4241,-3146,-1957,-947,-941, -1646,-2678,-3719,-4136,-3545,-2402,-691,1746,4042,6344, 9682,12188,11499,8645,5285,2286,990,1178,1608,3406, 7462,12311,15962,17561,16755,14519,11290,6657,1702,-1341, -2111,-1508,127,1749,2814,4030,4047,737,-3335,-4874, -5001,-5500,-5893,-6176,-5260,-1614,2644,5346,6665,6791, 6336,6735,6567,4215,1974,826,-557,-1856,-2139,-2622, -3508,-3824,-5004,-7755,-9573,-10081,-10884,-12057,-13599,-14648, -12711,-9318,-8181,-8293,-7238,-5285,-1831,2790,5566,5532, 4842,3929,2339,936,-339,-2045,-3407,-5127,-8087,-10256, -10336,-10853,-12500,-13499,-13424,-11932,-9380,-8042,-7422,-5147, -2571,-1198,574,2557,3404,3127,1442,-1621,-3740,-3259, -1569,413,2600,3535,2714,909,-2108,-5568,-7687,-9479, -12294,-14964,-16820,-17402,-14860,-9410,-3282,1970,5298,5435, 2987,-445,-3518,-4954,-4072,-2231,-844,624,2218,3712, 5492,6910,6672,4455,1322,-747,772,5112,8736,11244, 13502,14559,14588,14476,13402,11089,8844,6698,4449,3340, 3607,4647,7068,10443,11924,10436,7219,3511,1203,710, 364,944,4040,7195,7392,6782,8401,12030,15574,16127, 13252,9207,5984,4927,7035,9605,8960,6026,3372,1015, -499,173,2533,5457,7824,7721,5091,2648,1405,374, -31,471,1294,2952,4677,3808,1662,1024,954,572, 1189,2064,2703,4262,5452,4545,2610,538,-1833,-3168, -3380,-4666,-6518,-7133,-8390,-10868,-12200,-12301,-11506,-9832, -9347,-11667,-15281,-18006,-18522,-15995,-12157,-9921,-9196,-8612, -8841,-9678,-9613,-9222,-8695,-6004,-2567,-954,-430,-409, -1329,-2840,-5718,-10292,-13171,-12332,-10167,-8270,-6204,-4995, -4686,-3787,-3951,-6367,-7531,-6072,-4441,-3731,-3119,-1846, 386,2573,2788,853,-2141,-5009,-6227,-5503,-4620,-3315, 509,5504,8334,8083,6041,3885,2379,1193,-182,-487, 1834,6477,11773,16197,19405,21681,21165,15884,7974,1495, -2577,-4438,-3625,-1505,617,3016,5015,5728,5090,3558, 1991,884,-518,-1997,-1802,95,1814,3591,6296,8318, 8897,9203,8491,5881,3065,1264,214,-264,-809,-1632, -1658,-1920,-4110,-6538,-7637,-8317,-7801,-4462,-246,2176, 3730,5021,5456,5193,4306,3050,2720,3306,3716,4974, 7620,9458,10156,11176,11576,11036,11126,11153,9765,8504, 7782,6853,6713,7089,6078,4095,2425,916,24,381, 297,-820,-1494,-2200,-3445,-3469,-2109,-930,-107,-75, -755,73,2755,5009,5887,5793,5158,4814,4881,3993, 1754,-573,-2225,-3025,-3154,-3647,-4111,-3201,-2942,-6013, -10092,-12068,-12394,-12279,-12503,-13037,-12177,-9833,-7541,-5116, -1287,3157,6138,6677,4620,1537,117,211,-395,-1683, -2776,-4095,-5694,-7091,-8407,-9392,-8954,-7712,-7337,-8833, -11738,-12525,-8468,-2946,-809,-1453,-2180,-2648,-3418,-4117, -3945,-1971,1302,3401,3287,2526,2473,3071,3325,1572, -2474,-6564,-9473,-11100,-11072,-10556,-10606,-9817,-7482,-6306, -7321,-7651,-5096,-720,2112,834,-2938,-4786,-3719,-1976, -798,-493,-1041,-1105,74,1789,4202,6735,7949,8409, 8196,6427,5103,6589,9032,10414,10880,10376,9639,10015, 10550,10059,9782,9694,8197,5770,3127,801,1235,5318, 9212,10274,9930,8058,4860,2464,1082,590,2933,7357, 11146,13943,15364,14656,13438,12200,9115,4675,1993,1943, 3501,5688,6120,4527,4268,6145,7415,7833,8319,8128, 7030,4948,1695,-591,-209,1243,2207,2717,2202,884, 179,336,756,2102,3869,4038,3262,2761,1484,12, 591,2026,2368,1942,1316,831,277,-1951,-5746,-9004, -11552,-13696,-14200,-12541,-10756,-10327,-10545,-11059,-12419,-14673, -17352,-19458,-19518,-17213,-13666,-9794,-6374,-3238,150,2089, 1319,-839,-3246,-5872,-8018,-9035,-8869,-7221,-5353,-4972, -6000,-7461,-8043,-7065,-6020,-7557,-10613,-11406,-9048,-5322, -1471,1180,1705,1169,109,-2004,-4102,-5013,-5030,-3463, -145,2453,3462,3755,2689,-110,-2291,-2615,-2266,-1447, -59,1490,3616,6451,8876,10640,12414,13676,14371,14938, 13983,10979,8279,6676,5034,3858,3284,2394,1317,756, 784,1140,1497,1103,837,1652,1912,608,-597,-1034, -1673,-1662,429,3992,8109,11619,12813,12119,10145,6572, 2528,-800,-4421,-7931,-9752,-9822,-7630,-3541,-435,191, 13,-271,-1600,-3837,-5478,-5542,-3643,-806,1115,2656, 5302,7647,8521,9212,9589,8760,7319,6153,6325,7981, 9493,9873,10425,11787,12364,11693,10346,7871,4273,942, -987,-895,776,1558,884,668,732,-382,-2032,-2879, -2663,-1357,187,954,1043,816,655,1963,5034,7237, 6534,3565,590,-416,331,686,86,268,1067,222, -2525,-5030,-6100,-6068,-6335,-8770,-12656,-14929,-14665,-12927, -10695,-8585,-6548,-4141,-1850,-483,157,1045,2741,4267, 3717,415,-3505,-5414,-5236,-4794,-5506,-7390,-8396,-6963, -4918,-3915,-3516,-3765,-5231,-8000,-11280,-13478,-12655,-9378, -5885,-2893,-947,-30,1048,2396,2582,1278,-280,-1486, -2221,-2269,-1900,-1098,791,2381,934,-3198,-8065,-12085, -13116,-11794,-10709,-9664,-7115,-4398,-2887,-1484,139,1153, 562,-2671,-8021,-12304,-13099,-10728,-5623,1210,6210,7959, 8850,9049,7569,5123,2662,1306,2212,4502,7222,10776, 13535,13699,12267,10559,8485,6639,6077,6155,5849,5472, 5116,4292,3711,3974,4723,6258,7875,7922,6490,4366, 2811,3902,7565,10858,12186,12150,11575,11088,10664,9871, 8297,6141,3993,2382,1602,1726,2417,3653,5681,7897, 9817,11279,11819,10810,8128,4492,1524,-63,-900,-712, 859,3005,4961,6379,6125,3740,528,-1988,-2945,-2021, -559,43,782,3068,6300,8577,8393,5016,129,-3352, -4564,-4370,-3463,-3040,-3937,-4771,-5302,-7113,-10306,-13545, -15971,-17362,-18466,-19697,-19587,-17529,-15449,-14063,-12215,-9391, -6795,-5070,-4699,-5808,-5878,-3637,-1462,-485,-435,-2010, -4815,-7947,-11344,-13448,-12973,-11105,-8183,-4673,-2601,-3162, -4997,-7124,-9691,-11828,-12107,-10367,-7161,-3670,-924,1711, 4923,6597,4947,1754,-899,-2288,-2932,-4379,-6283,-6637, -4712,-1334,2477,5009,5078,3567,2018,1531,1998,3031, 4895,8342,13110,16635,17440,16599,14656,11174,6959,3426, 1141,662,1261,1994,3531,5876,7045,5891,2748,-1579, -5536,-7459,-7280,-5747,-2766,1371,5732,10084,13811,14691, 12292,8946,5948,2992,-579,-4016,-5086,-3516,-1971,-1666, -1102,-16,486,-63,-2093,-5555,-8416,-9061,-8204,-7005, -4597,-781,2892,4852,4740,4196,5337,7361,8433,8816, 8441,7057,6569,8062,10108,11617,12630,12859,12329,11088, 9261,7436,5835,4459,3258,1992,319,-1129,-1612,-1050, 514,2551,3182,1350,-660,-435,1655,3627,3654,1977, 623,584,1111,2276,4059,5119,5318,4839,3295,1623, 1096,736,-525,-1786,-2641,-3960,-5388,-5880,-6117,-6790, -7601,-9315,-12100,-14407,-15265,-13488,-8641,-3259,190,2240, 3270,2898,2030,911,-1801,-5413,-8093,-9660,-10250,-8589, -4654,-526,2529,3123,-259,-5204,-8634,-10056,-9732,-9030, -10019,-11555,-10954,-8571,-5418,-1983,532,1578,988,-868, -3144,-4625,-5038,-4382,-2147,1055,3226,3808,2745,-640, -5064,-7721,-8362,-8255,-8035,-7880,-6802,-4239,-2146,-1931, -3084,-4959,-6344,-6137,-5149,-4931,-5922,-7870,-9916,-10298, -8072,-3926,856,5051,7065,6749,5843,5780,6453,6381, 4651,3231,4636,7778,10064,10974,11103,11306,12212,12448, 10310,6750,3296,857,108,938,2343,3683,4817,5987, 7647,8898,8105,5749,4757,5965,7647,9765,12584,13734, 12538,10819,9501,8213,6219,3483,1089,396,1153,2924, 5569,8297,9670,9586,8772,7347,6055,5971,6421,6606, 7098,7680,7341,5947,3416,599,-615,-156,889,2194, 2846,2258,1772,1989,2095,1980,1911,1783,1834,2159, 2132,1957,2811,4487,5840,6712,6560,3836,-1026,-6367, -10819,-12850,-12567,-11863,-11448,-11306,-12184,-14093,-16552,-19351, -21238,-20825,-18364,-14403,-9105,-4126,-1365,-259,421,60, -1637,-3782,-6110,-8287,-9896,-10801,-9987,-7277,-4812,-3292, -2026,-2222,-4914,-8877,-13193,-17167,-18551,-16212,-11732,-7067, -2620,1223,3778,4887,4612,3175,1276,-1327,-4173,-5346, -4799,-3621,-1924,-379,-46,-240,-362,-844,-1138,-711, 219,1476,3133,5418,8110,10366,11249,10941,10661,10876, 11185,11939,13050,13038,11768,9672,6792,4177,3054,2616, 1606,-75,-2338,-4079,-3975,-2699,-1305,422,2306,3935, 5490,6043,5195,5157,6890,8349,8272,7102,5124,2704, 752,-552,-827,29,193,-1225,-2550,-3325,-3855,-3497, -3662,-5959,-8354,-8680,-7419,-5255,-2550,226,2920,5148, 5863,5493,6320,7879,8331,8119,7584,6813,7452,9739, 11612,13187,14965,15126,13040,9539,5522,2466,1411,981, 19,-776,-1122,-827,731,3028,4762,5954,6232,3997, 334,-1907,-1829,194,2858,4298,4259,4314,4794,5084, 5537,5351,3781,1873,695,290,855,1764,1516,-341, -2955,-6078,-9311,-11291,-11867,-11636,-10163,-7695,-5784,-4676, -4211,-4094,-2809,-700,266,-297,-1858,-4171,-6230,-7175, -6867,-5015,-2315,-1237,-2686,-3990,-3423,-2625,-3003,-4625, -6673,-7407,-6537,-5485,-5272,-6636,-9868,-12237,-10967,-7271, -3249,317,2271,2158,1185,-215,-2135,-4092,-5725,-6321, -4926,-2268,-599,-175,184,98,-1020,-2601,-4672,-6892, -7603,-6777,-5471,-3708,-2111,-1703,-2114,-3463,-5815,-7512, -8668,-10885,-12777,-12092,-9040,-4721,255,4228,5671,5675, 5250,4651,4425,4264,3991,4929,6775,7993,9357,11844, 13551,13413,12420,10937,9216,7490,4979,2164,516,325, 855,1233,993,1037,3678,8091,11069,12084,12444,12083, 10825,9496,7783,6025,5990,7489,8820,9756,9924,8622, 6374,3611,769,-287,945,2713,4106,5203,6137,7961, 11343,13742,12816,10185,7485,4585,1965,-54,-1230,-101, 3071,6281,8427,8519,5835,2348,-513,-3515,-5909,-5655, -3002,281,3546,5928,6882,7026,6487,5212,4316,4165, 3712,2862,1576,-699,-2563,-3376,-5053,-8202,-11410,-14664, -18205,-20435,-20868,-19921,-17595,-14460,-11525,-9062,-7660,-7464, -6923,-6103,-6242,-6770,-6455,-5573,-4266,-2313,-1058,-1508, -2820,-4416,-6174,-7332,-8244,-9841,-11476,-12530,-13182,-12788, -11409,-10408,-10003,-9492,-8660,-6999,-3681,486,3533,4662, 4314,2749,668,-1814,-5326,-8514,-8991,-6729,-3076,129, 1312,1600,2322,2835,2562,1755,295,-1812,-3072,-2329, 1150,7598,14291,17945,18859,18777,17334,14684,11579,7567, 3431,1024,61,-370,194,1480,2885,4163,3408,-43, -2858,-2863,-1881,-720,1145,2928,4620,6624,7792,8009, 8455,8482,6958,4703,2262,29,-588,197,639,949, 1346,21,-2992,-5884,-7919,-8344,-7040,-6295,-7030,-7619, -6611,-3279,1547,4647,4533,3892,4184,4096,3994,4802, 6236,8532,11648,13568,13880,14112,13823,12411,10321,7394, 4430,2860,2167,1120,611,1284,2216,2828,2365,474, -804,556,3311,5367,5885,4395,1799,240,108,678, 1997,2988,2790,3579,6305,8567,8807,7490,5304,3238, 1506,-798,-3254,-4935,-6707,-9224,-10307,-8773,-6128,-3592, -2074,-2460,-4083,-5909,-7783,-8411,-7105,-5111,-2733,137, 1528,39,-2776,-5247,-6812,-7211,-7363,-7461,-6081,-3499, -1429,-50,608,-352,-2407,-4892,-8273,-11156,-11371,-10247, -9591,-8453,-6252,-3348,-452,1000,475,-666,-2125,-4254, -5628,-6031,-6477,-6133,-4305,-2514,-1844,-1509,-1461,-1475, -842,-641,-1829,-3059,-3946,-4982,-5107,-4194,-3694,-3587, -3887,-5364,-7093,-8037,-9087,-10420,-10961,-11005,-10823,-8711, -5061,-2109,321,2585,4033,5043,5948,5270,2802,759, 949,4136,9311,13827,16436,17833,17161,13407,8450,3999, 18,-2573,-3227,-2889,-1634,645,3386,6504,9315,10030, 9240,8998,8764,7367,6269,6448,7577,9968,12608,13479, 12807,11142,7666,3266,-231,-2390,-2138,962,4489,6846, 8590,9333,8575,7616,6903,5954,5663,6279,6572,6540, 6540,6353,6578,7215,6754,5086,3527,1976,257,-685, -908,-637,311,726,-401,-1337,-724,386,1238,1911, 3035,5788,9659,12026,11792,9709,6041,1892,-1228,-4482, -8850,-12367,-13782,-13995,-13313,-12067,-11370,-11382,-11953,-13356, -14954,-16132,-17180,-17143,-14381,-9547,-4151,770,2912,1342, -1511,-3681,-5179,-5409,-4744,-4607,-5001,-5505,-6390,-7106, -7596,-9232,-11951,-14240,-16192,-17350,-15606,-11063,-6020,-1665, 1185,2176,2679,2761,772,-2438,-5237,-7500,-8456,-6961, -4062,-1062,2044,4268,4357,2771,-153,-3908,-6529,-7386, -7241,-5120,-1232,2139,4838,8152,11953,15781,18664,18240, 14501,10812,8282,5999,4685,4363,4095,4005,3709,2473, 1653,1851,1526,767,224,-1286,-3292,-3057,-622,1661, 3216,4563,6021,7869,8854,7414,5305,4902,5717,5910, 4490,1736,-200,169,841,-160,-2001,-3895,-5889,-6669, -5874,-5104,-5014,-5449,-6365,-7046,-6480,-4376,-1009,2612, 4925,5653,6235,7324,8509,9205,9071,9008,10612,13055, 13943,12999,11780,10630,8697,5704,2499,257,-780,-776, 271,1683,2285,2403,3247,4553,5366,5503,4359,1467, -1532,-3280,-3688,-1890,2116,6309,9439,11337,11484,10466, 9012,6026,1747,-1265,-2470,-3111,-3330,-3257,-3535,-3487, -3159,-3968,-5297,-5984,-6506,-6385,-4934,-3948,-3992,-3453, -2690,-2581,-2525,-2705,-3618,-4412,-4935,-5760,-5602,-3709, -2144,-2346,-3539,-4714,-4435,-2449,-1392,-2298,-3484,-4589, -5989,-6808,-7261,-8166,-8308,-7145,-5749,-4036,-1663,134, 732,678,-545,-2937,-5111,-6845,-8326,-8917,-8598,-7402, -4315,-325,2281,3258,2988,860,-2370,-4803,-5653,-4890, -3287,-2208,-1825,-1648,-2477,-4863,-7590,-9713,-10974,-11024, -10360,-9761,-8755,-7174,-5949,-4989,-3607,-2250,-1174,-29, 810,1096,1966,4061,6943,10248,13044,14404,14456,13252, 10741,7848,5382,3276,2053,2377,3044,2542,1036,-649, -1594,-416,2695,5937,8452,10069,10867,11872,12614,11878, 10404,8978,7307,6086,6227,6698,6608,6513,6536,6479, 6127,4874,3012,1780,1293,1325,2779,5578,7979,9639, 10932,11215,10115,8052,5473,3761,3773,4433,5191,6352, 6983,6431,5470,4068,1891,-186,-1969,-4448,-7084,-8266, -6922,-2508,4138,10387,14135,14945,12675,8952,6198,3961, 1407,157,-260,-1805,-3457,-3718,-3740,-4982,-7808,-11502, -14141,-15078,-15923,-17283,-17660,-16466,-14599,-12340,-10281,-8992, -7417,-5218,-3695,-2338,-613,-363,-1500,-1816,-1422,-1593, -2458,-4489,-8021,-11624,-14134,-15037,-13315,-10263,-8902,-8960, -8729,-8531,-8021,-6465,-5101,-4608,-3939,-3405,-3517,-3002, -1789,-1247,-1046,-404,125,98,-899,-2567,-2984,-1817, -1392,-2604,-4266,-5787,-6406,-4975,-2208,509,3173,6264, 9206,11747,13849,14958,14742,13158,10478,7823,5738,4191, 4003,4830,4718,3589,2986,3114,3073,2168,636,-576, -1511,-2904,-4346,-4138,-1628,2106,5851,8866,10143,9863, 8796,6838,4387,2451,1139,445,664,1484,2827,4259, 3881,1048,-2412,-5355,-7585,-8558,-8590,-8841,-9178,-8423, -6594,-4060,-1207,920,2089,3161,3834,3898,5064,7299, 8960,10452,12672,14643,15489,14515,11376,7733,5564,3943, 1994,1050,1584,2996,5288,7298,6764,4313,1893,-214, -1317,-964,-576,-534,-12,906,2496,5047,6951,7281, 7387,7678,7432,7376,7780,7391,5979,4288,1823,-1435, -4186,-5754,-6030,-5401,-4826,-4308,-2823,-1344,-1454,-2517, -3787,-5053,-5459,-5124,-5130,-5272,-4614,-3556,-2744,-2194, -1878,-1767,-2214,-3644,-5578,-6678,-6161,-4602,-2778,-1546, -1538,-2075,-2980,-4952,-7298,-8266,-7583,-6356,-5350,-4351, -2616,-747,-413,-1546,-2438,-2327,-2058,-2392,-3733,-6214, -8604,-9366,-8565,-7454,-6352,-4632,-1514,2301,4200,3104, 864,-911,-2267,-3195,-3793,-4419,-4974,-5551,-6051,-5655, -4385,-3168,-2849,-4294,-7612,-11260,-13537,-14612,-14790,-13034, -9366,-5249,-1252,2179,3962,4332,4061,3744,4102,4897, 5881,8223,11758,14103,14398,13509,11477,8239,4222,-102, -3532,-5312,-5559,-4219,-911,3554,7480,10215,11469,10860, 9353,7689,5877,5165,6734,8973,10456,11149,10546,9172, 8456,8196,7636,6466,3742,-81,-2029,-597,2785,6306, 9006,9836,9162,7964,5877,3464,2805,4076,6049,8674, 11564,12912,12412,10979,8736,5654,1767,-2176,-4763,-5552, -5394,-3967,-789,2093,2724,2264,2673,4207,6446,8335, 8270,6816,6182,6807,7684,7626,5937,3386,699,-2715, -6326,-8102,-8140,-8186,-8524,-9039,-10411,-13177,-16461,-19188, -20503,-19401,-16052,-11740,-7742,-4420,-1434,1731,4129,4035, 1494,-2362,-6358,-8987,-9763,-9548,-8926,-7831,-6325,-5396, -6039,-7341,-8201,-9292,-11300,-13313,-13781,-12242,-9765,-7295, -4891,-2288,149,1324,699,-920,-2298,-2450,-1275,-706, -2352,-4313,-4455,-3076,-1481,-1047,-2395,-4261,-5362,-5768, -5118,-2730,765,4340,7704,10500,12279,13633,14224,12356, 8566,5559,4763,5888,7648,8180,7547,7093,6254,4282, 2034,-142,-2071,-2742,-2126,-1673,-1678,-1020,438,2417, 4803,6612,6817,6165,5383,4548,4472,4788,4229,3699, 4094,4516,4426,3943,2694,714,-1543,-3896,-5888,-7053, -7471,-7393,-7315,-7960,-9128,-9297,-7711,-5242,-2340,1036, 4252,6985,9178,10165,10057,9736,9175,8340,7807,7737, 8371,9548,10033,9564,9203,8794,7138,4621,2457,1134, 621,808,1172,1580,1971,1576,481,-240,-346,244, 1897,3958,5597,7172,8684,9830,11016,11437,10040,7331, 4459,1955,-345,-2331,-3582,-3639,-2628,-1370,-638,-835, -2193,-4283,-5313,-4292,-2752,-2486,-3404,-4360,-4550,-4465, -4833,-5040,-4307,-2865,-1223,-39,56,-984,-2867,-5015, -6821,-7749,-7263,-5341,-3252,-2483,-3265,-4132,-4236,-4479, -5267,-5825,-5774,-5074,-3640,-2305,-1460,-290,1256,2157, 1149,-2379,-6952,-10276,-11783,-12170,-11308,-8533,-4181,338, 3603,4698,3736,1388,-1653,-4453,-5958,-6416,-5971,-3913, -854,1429,2299,1671,-623,-3757,-6761,-9408,-11530,-13421, -15176,-15350,-12773,-8806,-5529,-3688,-3575,-4897,-5549,-4005, -988,2858,7043,9869,10997,11501,11786,11948,12144,11039, 8080,5010,2164,-838,-2665,-2122,-72,2237,3940,4214, 3439,2912,3128,4343,6597,8772,9894,10531,10865,10478, 10085,9675,8055,5464,3876,4540,6746,8619,9148,8467, 6759,4221,1857,543,27,21,1214,3882,6488,8148, 9581,11286,12808,13531,12932,10669,7246,3806,1844,1817, 2764,3580,3333,1784,-484,-2509,-3644,-3490,-2092,-135, 1915,3879,5879,8089,9745,10041,9142,7799,6191,4323, 2714,2029,2232,2962,3571,2575,-580,-4634,-8395,-11435, -14160,-17337,-20246,-21332,-19881,-16492,-11663,-6434,-2793,-1574, -1905,-2665,-3054,-2769,-2807,-4251,-6327,-7955,-8130,-5992, -3102,-2387,-3761,-5206,-5992,-6809,-8978,-12623,-15513,-15971, -14481,-12100,-9361,-6963,-4939,-2641,-720,-423,-1346,-2105, -2228,-1835,-1404,-1630,-2446,-3285,-4267,-5085,-4942,-4011, -3045,-2553,-2850,-3451,-3235,-2115,-789,634,2294,4634, 7486,9814,10953,11459,11753,11201,9697,8317,7479,6549, 5679,5246,4734,3868,2847,2054,1799,1541,686,-366, -1120,-1742,-1803,-708,921,2476,4257,6249,7576,7832, 7118,5428,3213,1641,1438,2534,4250,5758,6474,5953, 3985,1293,-1620,-5474,-10270,-14014,-15173,-13870,-11091,-7811, -4762,-2141,336,2494,3586,3289,2525,2591,3963,5829, 7416,8560,9182,9757,10771,11516,11315,10395,8956,7040, 5345,4637,4848,4944,3790,1731,-10,-1059,-2029,-2776, -2541,-1230,884,3430,5684,6984,7258,6840,6635,7561, 8954,9760,9752,8938,7124,4733,2065,-839,-2867,-3213, -2214,-751,80,-454,-1520,-1829,-1715,-2248,-3502,-4850, -5733,-5734,-5198,-4842,-4097,-2267,-166,1080,885,-862, -2859,-3625,-4018,-4972,-5650,-5523,-5133,-4901,-4901,-5221, -5462,-5691,-6527,-7225,-6419,-4238,-1471,1043,1543,-375, -2205,-2618,-2708,-3144,-4019,-5597,-7168,-7848,-7776,-6831, -5064,-3709,-3505,-3986,-4870,-5452,-4667,-2680,-550,1182, 1900,631,-1920,-3805,-4217,-2991,-709,606,-261,-2460, -4690,-6090,-6745,-8092,-10920,-14147,-16074,-15928,-14390,-12586, -10509,-7118,-2589,1608,4344,5549,5833,6076,6651,6996, 6854,6782,7473,8991,10495,10629,8993,5921,1640,-2938, -5938,-6084,-3417,596,3835,5374,6327,7903,9698,10385, 9085,6553,4363,3270,3028,4062,7168,11216,14120,14863, 13492,10359,6404,2441,-750,-2229,-1924,-755,778,2657, 4607,6633,8972,10770,10723,9036,7370,7224,8952,10736, 10603,8889,6889,4954,3356,2351,927,-1172,-2774,-3131, -2082,238,2581,3571,3595,3513,3243,2829,2660,3082, 4663,7200,9602,11328,11937,10533,7935,5932,4172,995, -3035,-6240,-8720,-11092,-13256,-14829,-15359,-14858,-13917,-12390, -10313,-8726,-7546,-6349,-5907,-6287,-6007,-4599,-3361,-2893, -2867,-3133,-3610,-4062,-4470,-4731,-4696,-4680,-4950,-6027, -8419,-11200,-13015,-14262,-15390,-15249,-13169,-9952,-6433,-3084, -624,635,683,-559,-2369,-3921,-5175,-5914,-5811,-5398, -4830,-3467,-1600,-332,-343,-1657,-3561,-4663,-4665,-4709, -5056,-4377,-1524,3177,7858,10818,11953,11897,10974,9465, 7890,6421,5253,4953,5760,7062,8108,8196,6876,4546, 2054,-76,-1585,-2259,-2125,-1121,453,1924,3325,4389, 4046,2488,1578,2069,2951,3517,3967,5035,6974,8824, 9420,8794,7073,4364,1695,-658,-3434,-6564,-8990,-10146, -10032,-9089,-8206,-7676,-6874,-5615,-4180,-2421,-373,1380, 2829,4010,4369,4111,4107,4354,5104,7070,9654,12171, 14365,15008,13358,10638,7834,4917,2879,2314,1987,1062, -77,-1133,-1719,-1432,-752,123,1617,3079,3802,4445, 5596,7143,9232,11139,11164,9379,7348,6064,5632,5512, 4542,2624,1256,980,972,702,32,-1110,-2284,-3215, -3964,-3789,-2560,-1568,-1792,-2787,-4034,-5294,-5887,-5200, -2973,249,2727,3002,1491,-352,-1491,-1842,-2714,-5679, -9957,-13021,-13208,-10236,-5396,-1070,1321,2011,1211,-1047, -3905,-5992,-6384,-5143,-3577,-2298,-783,510,370,-965, -2407,-3976,-5916,-8208,-10365,-11175,-9817,-6663,-2840,199, 986,-183,-1278,-1390,-1479,-2217,-3578,-5096,-5221,-2677, 1640,5591,6953,4866,435,-4889,-10288,-14626,-16893,-17492, -17015,-15054,-11985,-9251,-7119,-5274,-4062,-2941,-1262,287, 1063,1416,2422,5811,11127,14900,14608,11337,7226,3642, 1436,455,-216,-713,-501,505,2275,4517,5823,5578, 4268,2401,1144,1635,3241,4770,6264,7852,9504,11437, 12653,12082,10559,9579,8842,7344,5107,2842,1867,2259, 2460,1940,1532,1315,1232,2409,5046,8001,10638,12589, 13194,12531,11199,9092,6847,5104,3347,2048,2438,3869, 4607,4245,3380,2614,2199,1319,-605,-2158,-2172,-1565, -1042,54,2066,5079,8932,12331,14240,14651,13447,10689, 7285,4114,1448,-659,-2487,-4157,-5008,-5116,-5877,-7876, -10445,-12994,-14557,-14010,-12216,-10658,-9659,-8851,-7485,-5328, -3630,-3671,-4556,-4910,-4580,-3648,-2513,-1832,-1700,-2095, -3085,-4120,-4989,-6652,-9214,-11776,-13823,-14776,-14199,-12627, -10773,-8483,-5871,-3681,-2430,-2163,-2896,-4113,-5085,-5674, -5622,-4840,-4115,-3555,-2387,-1360,-1653,-2858,-4102,-4944, -5268,-5116,-4704,-3953,-2842,-1743,-465,1160,2732,4177, 6170,8283,9441,9932,10092,9678,8663,7198,5565,4526, 4354,4385,4443,4521,4324,4368,4773,4240,2227,-31, -1644,-2583,-2683,-2175,-1235,561,2873,4681,6130,7348, 7489,6890,6445,5854,5267,5649,6711,7278,6416,3466, -954,-5062,-8185,-10275,-10420,-8788,-7355,-6868,-6583,-5834, -4184,-2098,-1435,-2242,-2527,-1807,-681,925,2930,4867, 7066,9347,10816,11584,12049,12238,12447,12404,10614,7398, 4701,2990,1733,479,-950,-2483,-3394,-3149,-1597,1442, 4740,6233,5527,3982,3022,3782,6179,8386,9369,9320, 8720,8289,8352,8081,6889,5085,2879,371,-1536,-2214, -1835,-510,1477,2807,2466,162,-3964,-8287,-10238,-9155, -6305,-3356,-1271,387,2301,3976,4496,4100,2423,-1372, -6086,-9155,-9554,-8310,-6863,-6061,-5929,-5492,-4206,-2557, -1674,-2279,-3799,-4759,-4892,-4904,-4361,-2916,-1074,911, 2135,1447,-1097,-4290,-7111,-8295,-7216,-5073,-3680,-4034, -5870,-7491,-6945,-4699,-3268,-3754,-5272,-6134,-4960,-2156, 560,2496,3616,3332,2025,990,173,-1186,-2977,-4819, -6503,-7972,-9860,-12216,-14009,-14956,-15581,-15465,-14062,-11950, -9311,-5506,-931,3101,5522,5808,5035,4906,5117,4584, 4015,4353,5052,5757,6334,6610,6762,6328,4245,1188, -983,-1794,-1912,-1357,-92,1803,4296,6606,7410,6822, 5934,5402,5938,7546,9086,10305,11712,12602,11949,9895, 6875,3636,1142,-580,-1625,-1572,-364,1617,4308,7138, 9164,10488,11186,10501,8901,7834,7312,6387,5025,3939, 4061,5958,8423,9448,8785,6863,4009,1267,-976,-3089, -4714,-5340,-4850,-2863,435,3866,6415,8218,9642,10616, 11146,11152,10363,9184,7811,5901,3910,2322,705,-818, -1854,-2914,-4348,-6051,-7992,-9700,-10883,-11791,-12513,-12443, -11594,-10711,-9800,-8219,-6186,-4433,-3398,-2963,-2289,-1291, -858,-1267,-2329,-4058,-5759,-6348,-6401,-6931,-7723,-8446, -9149,-9599,-10080,-10984,-11733,-11766,-10989,-9019,-6187,-3832, -2224,-1233,-1597,-3178,-4714,-5803,-6576,-6547,-5816,-4871, -3295,-1547,-887,-963,-1330,-2815,-5231,-7052,-7659,-6691, -4179,-997,2170,5253,7846,9444,10363,10037,7567,4348, 2447,2105,3167,5524,7924,9360,9868,9278,7672,5468, 2849,690,-114,-469,-1444,-2315,-2422,-1852,-451,1413, 2627,3118,3817,4873,6270,8126,9527,9395,7952,6044, 4530,4191,4587,4088,1966,-1453,-4898,-6239,-5221,-4535, -5773,-7643,-8549,-8160,-6871,-5413,-4026,-2494,-1546,-1961, -2897,-2983,-1607,1485,5640,9201,11605,13309,13904,13266, 12300,11563,10884,9471,6174,1398,-2456,-3152,-687,2607, 3944,2553,198,-1261,-1549,-709,1285,3716,5712,7204, 8403,9386,9923,9514,8184,6751,5649,5173,5469,5900, 6034,6366,6577,5587,3118,-165,-3501,-5448,-5143,-3941, -3562,-4331,-5453,-5331,-2935,350,2505,3051,1976,-412, -2207,-2042,-813,430,705,-1015,-3870,-6168,-7696,-8819, -8974,-8138,-6965,-5563,-3913,-2224,-715,81,-388,-1419, -2587,-4306,-5757,-5590,-4100,-2125,123,1809,2087,1177, -778,-3685,-6657,-9174,-11277,-12107,-10917,-8334,-5210,-2211, -365,262,255,-442,-1638,-2386,-2370,-1551,633,3484, 5082,4941,3644,1216,-2323,-7070,-12486,-16965,-19386,-19952, -18541,-15203,-11161,-7158,-3274,-601,-322,-1627,-2727,-2845, -1977,-320,1974,4840,7399,8356,8258,8351,8187,6956, 4832,2329,491,178,663,735,324,-84,-89,569, 1363,1718,2305,4002,6093,7649,8865,10071,11400,12567, 12487,10693,8193,6030,4255,2666,1011,-176,272,2254, 4446,6026,6923,7031,6734,6275,5393,4430,4350,5434, 7092,8760,9834,10205,10238,9947,9018,7688,6089,4055, 2195,835,-545,-2010,-2999,-3452,-3355,-2342,-410,2208, 5031,7255,8542,9454,10404,11001,10813,9490,7301,5542, 4635,3638,2624,2339,2049,1096,23,-1303,-3593,-6703, -10208,-13339,-15237,-15841,-15077,-12297,-8445,-5459,-3537,-2166, -1903,-2666,-3396,-4064,-4893,-5217,-4796,-4085,-3030,-1990, -1928,-3011,-5046,-7834,-10180,-11395,-12248,-12684,-11959,-10494, -8923,-7040,-5135,-3914,-3454,-4047,-5673,-7148,-7505,-6831, -5130,-2756,-1039,-931,-2211,-4189,-5503,-5253,-4542,-4618, -5214,-5761,-5591,-3810,-925,1207,1776,1482,1437,2516, 4435,6102,7028,7026,5920,4450,3950,4945,6865,8857, 9969,9790,8901,7571,5703,3597,1343,-1013,-2909,-4155, -4856,-4636,-2997,129,4116,7323,7806,5858,3880,3800, 5456,7491,8602,8128,6672,5121,3982,3740,3904,3062, 854,-2015,-4950,-6949,-7229,-6437,-5525,-5057,-5481,-6681, -7932,-9083,-9583,-8088,-4584,-680,2612,4976,6201,7042, 8579,10450,11673,11790,10853,9730,9669,10172,9810,8076, 4735,92,-3616,-4572,-3461,-1483,636,1983,2492,2997, 3738,4640,5614,5866,5003,4082,3772,4059,5556,8301, 11186,13230,13714,11993,8740,5314,2256,-56,-1389,-2357, -3094,-2955,-2209,-1584,-1186,-1270,-2033,-2811,-3316,-3851, -3827,-2461,-93,2628,4896,5419,4129,2003,-776,-4172, -7255,-9542,-10736,-10113,-7737,-4966,-2607,-996,-570,-1291, -2928,-4978,-6542,-7084,-6867,-5511,-2595,643,2681,3446, 3227,1936,122,-1826,-4117,-6518,-8443,-9445,-9037,-7311, -5635,-4798,-4660,-5462,-6701,-7032,-6215,-4654,-2067,1303, 4135,5802,6494,6340,5438,3612,410,-3510,-6930,-9456, -11027,-11759,-12454,-13369,-13590,-12780,-11698,-10789,-9789,-8270, -6034,-3781,-2455,-1977,-1356,14,1742,2941,3437,4312, 6232,7991,8570,8377,7467,5616,3550,1823,277,-1104, -2368,-3599,-4243,-3560,-1608,1395,4834,7560,9303,10438, 10723,10117,9082,7620,5894,5053,5383,5935,6524,7182, 7147,6151,4645,3401,3056,3193,2808,2247,2467,2994, 3587,4950,6742,7997,9005,10015,10498,10643,10613,9903, 8556,7136,5655,4300,3352,2126,191,-1568,-2834,-3745, -3620,-2142,81,2807,5526,7156,7693,7868,7719,7337, 7144,6947,6768,7107,7752,8270,8644,8330,6442,3345, -167,-3513,-5823,-7035,-8422,-10338,-11875,-12429,-11718,-9942, -8036,-6755,-6165,-6295,-6639,-5900,-4007,-2073,-844,-757, -2083,-3993,-5097,-5143,-4691,-4497,-4967,-5652,-6143,-6811, -7892,-9035,-10282,-11694,-12510,-12222,-10807,-8358,-5444,-2919, -1376,-1345,-3079,-5520,-7186,-7466,-6564,-5064,-4076,-4100, -4393,-4143,-3356,-2465,-2243,-3113,-4433,-5349,-5334,-3889, -1152,1706,3558,3659,2093,655,1038,2991,5054,6320, 6978,7656,8644,9376,9588,9785,9710,8628,6390,3167, -632,-3443,-3692,-2192,-756,-155,-385,-820,-397,1265, 3635,6103,7490,7179,6358,6039,5814,5632,5708,5278, 4242,3815,4452,5401,5828,4879,2173,-1625,-5680,-9247, -11106,-10822,-9453,-8010,-7024,-6869,-6852,-6151,-4943,-3539, -1952,-438,1152,3471,6259,9022,11867,14525,15908,15079, 12094,7921,4176,1602,-13,-670,-265,589,1459,2444, 3051,2891,2303,1283,54,-582,-508,-30,1470,4331, 7449,9934,11765,12952,13105,11734,9287,7199,6303,5685, 4597,3551,2699,1649,528,-648,-2273,-4007,-5176,-5597, -5095,-3593,-1377,1133,3264,3889,2835,1355,522,377, 448,-133,-1702,-3253,-3762,-3591,-3456,-3617,-4245,-5334, -6626,-7725,-7933,-6869,-5143,-3721,-2711,-1817,-1147,-1013, -1498,-2170,-2261,-1532,-486,472,1330,1920,1969,847, -1947,-5752,-9288,-11618,-12662,-12496,-11421,-9396,-6251,-2958, -514,1164,2250,2515,2261,1934,1862,2697,3941,3952, 2199,-405,-2838,-4815,-6614,-8982,-11868,-13949,-14587,-14075, -12656,-10929,-9608,-8323,-6617,-5141,-4271,-3925,-3940,-3781, -2984,-1462,1260,5336,9187,11282,11961,11371,8832,4913, 1131,-1930,-4058,-4905,-4706,-3642,-1698,607,2911,5075, 6429,6517,6182,5966,5724,5671,5769,5694,5867,6828, 8139,9311,10114,9879,8272,5973,3794,2258,1585,1548, 1637,1791,2017,2228,3004,4677,6535,7888,8915,9802, 10692,11801,12334,11470,9376,6670,3884,1819,1063,1312, 1748,1640,844,57,-65,190,452,834,1262,1712, 2386,3316,4804,7156,9678,11393,11792,10755,8785,7000, 6055,5790,5623,4870,3332,1614,-14,-2022,-4660,-7604, -10541,-12827,-13661,-12856,-10647,-7410,-4184,-2199,-1847,-2965, -4928,-6442,-6576,-5501,-4059,-3201,-3215,-3045,-1840,-564, -583,-2188,-5061,-8379,-10985,-12389,-12708,-11841,-9969,-8034, -6890,-6656,-6860,-6444,-5047,-3790,-3676,-4498,-5910,-7359, -8059,-7820,-6723,-4813,-3022,-2472,-3024,-3641,-3623,-2772, -1635,-1455,-2587,-4081,-5101,-5230,-4024,-1749,607,2303, 3085,3604,4687,5964,6781,7379,7952,8029,7933,8554, 9522,9686,8493,6101,2832,-861,-4252,-5960,-4824,-1778, 1135,3039,4024,4178,3879,3598,3355,3215,3278,3162, 3099,4019,5944,8083,9794,10375,9473,7526,4858,1769, -1028,-3030,-4201,-4593,-4564,-5254,-7200,-9402,-10748,-11041, -10643,-9978,-8989,-7103,-4284,-918,2795,6394,9175,10832, 11283,10516,8849,7174,6349,6408,6762,6777,6283,5373, 4184,3015,2098,1040,-750,-2820,-3880,-3069,-700,1895, 3522,4000,3929,3936,4524,5756,7357,9094,10797,12179, 12941,12860,11835,10050,7658,4531,1028,-2031,-4183,-5147, -4580,-2726,-681,843,1786,1842,806,-777,-2183,-2887, -2663,-1792,-213,2247,4688,5575,4436,1791,-1400,-4106, -5954,-7526,-8964,-9248,-7776,-5007,-2186,-930,-1876,-3844, -5603,-6813,-7177,-6481,-4842,-2335,511,2772,4475,5802, 5804,3765,472,-2985,-5873,-8061,-10041,-11760,-12246,-11296, -9596,-7469,-5266,-3619,-2384,-995,137,464,382,738, 2176,4334,5478,4654,2725,371,-2518,-5395,-7371,-8454, -9175,-9798,-10257,-10354,-10123,-10109,-10783,-11756,-12283,-11820, -10229,-8041,-5949,-3808,-1284,1636,4666,7227,8854,9266, 8276,6087,3669,1620,5,-1274,-1969,-1852,-1208,-445, 311,1184,2040,2535,2663,2801,3018,3230,3801,4945, 6142,6897,7124,7144,7462,8330,9448,10190,9798,7824, 4928,2407,950,351,-40,-596,-822,225,2607,5429, 8081,10397,11996,12314,11291,9302,7128,5656,5217,5529, 5947,5718,5127,5030,5099,4268,2540,277,-2225,-3972, -3978,-2357,252,3155,5310,6024,5831,5557,5798,6839, 8202,9322,10098,10133,9380,8872,8772,7831,5553,2605, -459,-3401,-5756,-7060,-7210,-6510,-5995,-6566,-8157,-9788, -10100,-8473,-5858,-4024,-3513,-3916,-4825,-5330,-4511,-2783, -1388,-928,-1392,-2514,-3697,-4454,-4705,-4935,-6119,-8412, -10614,-11707,-11710,-10694,-8684,-6282,-4390,-3546,-3778,-4869, -6139,-7082,-7802,-8493,-9215,-9571,-8514,-5746,-2441,43, 852,-126,-2005,-3753,-5020,-5671,-5575,-4974,-4230,-3432, -2841,-2785,-2888,-2223,-463,1931,4098,5622,6773,7732, 8548,9408,10086,9711,8013,5619,3483,2195,1717,1591, 1628,1981,2188,1547,86,-1317,-1678,-633,1181,2475, 2952,3051,3211,4094,5788,7129,7224,6602,6025,5886, 6319,7153,7911,8103,7034,4499,1233,-2139,-5497,-8576, -11313,-13512,-14420,-13463,-11021,-7932,-4965,-2712,-1193,-115, 430,497,944,2470,4986,7896,10077,10706,10612,10636, 10227,8771,6506,3871,1570,390,142,247,627,1029, 958,618,320,-297,-1426,-2414,-2236,-14,3909,8014, 11298,13721,14915,14680,13667,12107,9622,6419,3432,1508, 975,1433,1866,1904,1817,1303,-28,-1749,-3295,-4116, -3640,-2082,-263,1344,2352,2644,2749,2996,2807,1723, 270,-907,-1374,-1294,-1462,-2279,-3416,-4618,-5683,-6221, -6289,-6279,-6456,-6842,-7385,-7431,-6196,-3712,-917,1191, 2366,3168,3932,4139,3393,1901,-37,-1908,-3483,-5224, -7308,-9387,-11108,-11938,-11478,-10040,-7954,-5177,-2301,-218, 1049,1981,2458,2142,1320,647,679,1086,874,-89, -866,-914,-598,-675,-2314,-5823,-9780,-12482,-13626,-14036, -14532,-15240,-15196,-13336,-9851,-6048,-3063,-1202,-117,797, 1723,2638,3606,4371,4612,4559,4280,3361,2050,1033, 383,-69,-326,-520,-570,-213,464,1261,2174,2752, 2477,1682,1147,1458,3145,5946,8494,9956,10634,10855, 10664,10014,8432,5781,2867,400,-1253,-1587,-404,1706, 3941,5590,6172,6039,5875,5868,6232,7393,8855,9529, 9146,8277,7620,7532,7568,7027,5863,4249,2465,1426, 1667,2385,2708,2151,443,-1886,-3420,-3265,-1315,1789, 4896,7337,9051,9809,9612,9182,9042,9136,9246,8787, 7112,5138,4436,4888,5161,4057,1187,-2353,-5044,-6736, -7985,-8718,-8754,-8300,-7537,-6617,-5808,-5251,-4934,-4927, -4838,-4303,-3665,-3265,-2847,-2179,-1320,-696,-1081,-2803, -5377,-7876,-9130,-8558,-7218,-6524,-6503,-6567,-6776,-7133, -7380,-7462,-7268,-6820,-6673,-7183,-7978,-8674,-8773,-7898, -6475,-5322,-4565,-3788,-2850,-1562,-300,78,-507,-2013, -4751,-7987,-9919,-9592,-7529,-4816,-2530,-823,1209,3697, 5533,6098,5711,4966,4662,4967,5132,5227,6087,7450, 8376,8340,6967,4369,1809,75,-1066,-1794,-2142,-1948, -680,1574,3599,4619,4523,3133,1130,-169,-263,859, 3041,5635,8020,10569,13029,14073,12822,9611,5533,1886, -993,-3836,-6636,-8615,-9488,-9385,-8591,-7900,-7748,-7806, -7966,-8211,-7912,-6607,-4334,-1149,2396,5231,6996,7952, 8049,7596,7419,7540,7536,7301,6749,6165,6152,6384, 5787,3930,1094,-2227,-4915,-6099,-5743,-4099,-1660,733, 2846,5151,7333,8706,9193,8999,8489,8639,9941,11571, 12373,11706,9734,7334,4965,2534,375,-989,-1660,-1671, -880,26,342,248,105,90,189,162,-297,-850, -1034,-686,642,2750,4337,4630,3871,2556,1049,-667, -3285,-6629,-9045,-9457,-8239,-6450,-5481,-5829,-6268,-5684, -4450,-3223,-2197,-1374,-251,1538,3534,5084,5708,4861, 2633,-311,-3704,-7104,-9603,-10943,-11595,-11310,-9730,-7242, -4424,-2151,-1206,-1023,-782,-863,-1663,-2615,-3013,-2346, -387,2160,4243,5329,5175,3811,2004,-34,-3041,-6865, -10555,-13553,-15238,-15165,-14074,-12833,-11432,-10068,-8982,-7746, -6028,-4174,-2517,-1115,-53,849,1623,1910,2024,2580, 3199,3304,2836,1918,1060,1105,1988,2679,2250,366, -2173,-3639,-3402,-2258,-699,1340,3359,5152,6869,8123, 8692,8925,8743,7902,6764,5470,4251,3890,4547,5370, 5501,4418,1989,-600,-1411,86,2996,5939,7579,7918, 8027,8219,8140,7764,7075,6289,6133,6602,7037,7286, 7563,7568,7051,5912,4028,1688,-607,-2604,-3509,-2708, -1056,284,1329,2460,3924,5820,7406,7839,7525,7294, 7345,7701,8425,9129,9389,9118,8091,6423,4805,3407, 2025,698,-678,-2256,-3982,-6104,-8648,-10432,-10156,-8151, -5753,-4019,-3479,-3584,-3311,-2683,-2456,-3047,-4244,-5294, -5393,-4607,-3615,-2706,-2047,-2085,-2917,-4439,-6561,-8363, -8621,-7766,-6832,-5955,-5449,-5768,-6546,-7299,-7981,-8678, -9647,-10780,-11148,-9988,-7474,-4161,-1134,258,118,-451, -1327,-2896,-4832,-6814,-8458,-8880,-7923,-6290,-4453,-2789, -1575,-518,365,574,319,332,888,2303,4748,7029, 8130,8554,8465,7357,5622,4037,2903,2368,2285,2241, 2381,2756,2808,2441,1994,1260,147,-1010,-2322,-3542, -3220,-667,3106,6452,8258,8649,8852,9602,10294,10260, 9445,8005,6286,4669,3132,1466,-553,-3258,-6446,-8985, -10376,-11111,-11344,-10794,-9408,-7293,-4797,-2531,-1123,-971, -1761,-2033,-761,1374,3441,5548,8070,10832,13161,13959, 12371,8874,4771,1431,-188,-362,-467,-1224,-2194,-2696, -2133,-760,70,-169,-382,403,2141,4481,6782,8455, 9812,11455,13087,13984,13558,11412,8081,4844,2561,1547, 1563,1828,1937,2194,2455,2338,1849,667,-1447,-3415, -3956,-3130,-1800,-713,166,1648,3869,5580,5921,5164, 3584,1662,127,-1079,-2555,-4144,-5642,-7097,-8008,-8114, -7961,-7768,-7409,-7021,-6183,-4151,-1376,1113,2860,3822, 4225,4265,3504,1620,-674,-2820,-4876,-6649,-7784,-8216, -7708,-6235,-4791,-4267,-4640,-5544,-6336,-6191,-5255,-4315, -3533,-2656,-1568,94,2114,3792,5020,5729,5305,3780, 1863,-462,-3399,-6259,-8546,-10411,-12046,-13585,-14737,-14629, -12981,-10442,-7576,-5150,-4316,-4854,-5277,-4896,-3973,-2954, -2412,-2111,-1081,1112,3948,6493,7613,6742,4544,1828, -1097,-3629,-4837,-4483,-2867,-847,586,1360,1855,1938, 1903,2669,4199,5676,6699,7047,6842,7016,7817,8028, 6883,4918,3118,2272,2305,2476,2547,2950,3514,3859, 4134,4298,4235,4477,5221,5898,6315,6689,7067,7695, 8710,9595,9830,9054,7188,5039,3603,3138,3331,3587, 2979,1177,-827,-2054,-2352,-1705,-207,1617,3447,5040, 5955,6377,6779,7135,7328,7362,7028,6610,7017,8434, 9934,10777,10421,8262,4613,882,-1964,-3732,-4797,-5805, -6565,-6485,-5739,-4801,-3999,-3777,-4194,-4443,-4335,-4540, -5000,-5131,-4755,-3993,-3188,-3008,-3340,-3703,-4174,-4595, -4390,-3658,-3093,-2984,-3385,-4265,-5207,-6188,-7576,-8984, -9809,-10342,-10580,-10117,-9186,-8016,-6506,-4978,-3760,-3139, -3801,-5526,-6506,-5649,-3853,-2445,-2301,-3478,-4901,-5629, -5943,-6158,-6100,-6061,-6203,-5752,-4009,-1164,1968,4299, 5243,5173,4496,3485,2674,2203,1985,2687,4840,7394, 8650,8069,6578,5447,4992,4213,2151,-877,-3494,-4299, -2948,-725,772,1242,1319,1489,2195,3433,4578,5157, 5534,6578,8966,12230,14598,14468,11703,7398,3008,-414, -2853,-4874,-6479,-7054,-6429,-5221,-4655,-5567,-7357,-8690, -9092,-8692,-7673,-6509,-5275,-3353,-550,2710,6010,8659, 9983,10176,9815,9179,8476,7568,6030,4235,3181,2949, 2650,1436,-899,-3404,-4632,-4380,-3457,-2188,-596,1132, 3220,5759,8011,9416,10027,9955,9663,9699,9717,9288, 8721,8190,7538,6735,5859,4829,3664,2406,1261,583, 127,-668,-1447,-1526,-1236,-1228,-1334,-1192,-490,896, 2616,4229,5597,6252,5893,5028,3930,2090,-611,-3614, -6444,-8680,-9999,-10534,-10202,-8640,-6174,-3460,-857,931, 1278,647,43,140,897,1329,532,-890,-1681,-1572, -1179,-1030,-1557,-3016,-4961,-6522,-7255,-7294,-7079,-6886, -6615,-6135,-5607,-4895,-3839,-2685,-1349,469,2391,3882, 4970,5686,5816,5185,3571,779,-3031,-7227,-10659,-12047, -11293,-9756,-8586,-7877,-7677,-8052,-8797,-9643,-10206,-9898, -8782,-7333,-5689,-3762,-1590,612,2460,3481,3712,3473, 2878,2097,1369,813,431,76,-738,-2066,-3012,-2900, -1937,-658,500,1457,2565,3947,5273,6289,6869,6832, 6211,5177,3922,3142,3486,4701,6134,7114,6843,5256, 3359,2045,1501,1626,2102,2715,3540,4567,5582,6574, 7540,8032,7929,7692,7521,7501,7742,7923,7840,7658, 6980,5327,3121,1237,227,125,491,836,1115,1339, 1163,837,1201,2179,3029,3660,4343,5199,6485,8010, 9134,9715,9992,9880,9395,8639,7333,5679,4413,3655, 2853,1571,-500,-3205,-5484,-6306,-5756,-4611,-3638,-3287, -3323,-3200,-2857,-2612,-2914,-4255,-6364,-8110,-8621,-7777, -5787,-3368,-1204,424,1361,1306,45,-2423,-5405,-7606, -8383,-8437,-8695,-9107,-9029,-8021,-6291,-4981,-5198,-6947, -9264,-10712,-10238,-8177,-5675,-3535,-2218,-1948,-2288,-2552, -2910,-4230,-6745,-9388,-10438,-9208,-6753,-4565,-3114,-1964, -673,783,1680,1237,-241,-1599,-2011,-1303,429,2798, 5296,7343,8517,8809,8360,6978,4808,2663,1394,1412, 2428,3244,2621,580,-1577,-2722,-2790,-2493,-2272,-1616, 220,2979,5712,7837,9237,10034,10437,10413,9831,8770, 7379,5803,4445,3360,2216,1063,140,-1022,-3069,-5707, -8065,-9594,-10243,-10352,-10012,-8882,-7172,-5616,-4378,-3134, -1715,43,1952,3637,5422,7447,9100,10019,10400,10159, 8990,7076,4681,1962,-644,-2667,-3804,-3847,-3020,-2018, -1028,-18,767,1380,2092,2727,3319,4365,5836,7329, 8899,10381,11131,10908,10055,9144,8501,7752,6347,4573, 3231,2592,2541,2776,2614,1457,-380,-2145,-3437,-4038, -3761,-2700,-923,1408,4060,6594,8291,8674,7882,6173, 3494,107,-3379,-6386,-8499,-9291,-8624,-7071,-5378,-3992, -3047,-2354,-1804,-1534,-1569,-1766,-2141,-2368,-1785,-496, 734,1451,1552,979,-173,-1494,-2572,-3063,-3113,-3504, -4730,-6493,-8238,-9600,-10256,-9709,-7827,-5183,-2671,-607, 1225,2888,4080,4475,3813,2404,1033,138,-456,-957, -1463,-1980,-2638,-3881,-5968,-8258,-9908,-10692,-10752,-10439, -10272,-10315,-10001,-8985,-7701,-6592,-5650,-4697,-3631,-2598, -1541,53,2179,3973,4611,3864,2028,0,-1611,-2935, -3917,-3862,-2690,-1172,85,981,1703,2499,3241,3552, 3309,2791,2477,2899,4117,5325,5911,5975,5602,4966, 4639,4700,4588,4211,3903,3693,3429,2954,2092,1215, 1143,2284,4318,6533,8082,8516,8332,8345,8586,8582, 7861,6366,4672,3642,3696,4589,5564,5801,5018,3529, 1901,437,-770,-1529,-1628,-968,237,1630,2992,4204, 5097,5849,6691,7379,7623,7364,6880,6963,8332,10350, 11316,10039,6893,3436,1021,-201,-931,-1781,-2776,-3346, -2797,-1143,587,1145,-33,-2597,-5575,-7870,-8860,-8686, -7984,-7101,-5736,-3604,-1274,130,139,-796,-1853,-2582, -3144,-3813,-4377,-4636,-4775,-4953,-5260,-5944,-7104,-8477, -9491,-9733,-9131,-8258,-7741,-7443,-6668,-5130,-3368,-2451, -3011,-4640,-6640,-8368,-8979,-8071,-6344,-4729,-3656,-3315, -3677,-4304,-4706,-4671,-4342,-4017,-3540,-2367,-591,835, 1265,1045,865,1248,2238,3312,4261,5398,6712,7661, 7888,7486,6619,5283,3273,692,-1817,-3606,-4444,-4270, -3164,-1463,577,2729,4355,4897,4683,4434,4635,5433, 6623,7811,8838,9477,9570,9401,9073,7962,5853,3148, 123,-2705,-4585,-5465,-6014,-6635,-7224,-7635,-7870,-8120, -8579,-9024,-8871,-7672,-5309,-2118,1113,3951,6483,8542, 9670,9789,9126,7992,6659,5157,3486,1845,505,-357, -760,-900,-1001,-1077,-1130,-1320,-1541,-1284,-265,1280, 2950,4400,5559,6526,7444,8373,9159,9624,9628,9215, 8729,8545,8667,8642,8005,6504,4310,1898,-234,-1772, -2790,-3452,-3686,-3250,-1984,65,2561,4973,6838,7705, 7350,5966,4107,2361,1041,-84,-1526,-3140,-4392,-5237, -5861,-6023,-5430,-4204,-2761,-1750,-1526,-1786,-2133,-2620, -3172,-3460,-3281,-2533,-1193,489,2102,3457,4206,3738, 1806,-1412,-5217,-8301,-9806,-10065,-9664,-8746,-7273,-5306, -3275,-1871,-1206,-688,-115,165,13,-295,-201,856, 2494,3556,3374,2108,299,-1414,-2830,-4244,-5665,-6743, -7489,-8178,-8787,-9266,-9782,-10259,-10540,-10578,-10046,-8641, -6726,-4809,-2972,-1133,586,1575,1255,-62,-1301,-1683, -1236,-465,3,-230,-1017,-1838,-2188,-1829,-903,251, 1214,1672,1821,2291,3124,3661,3506,3012,2733,3004, 3702,4369,4821,5401,6290,6964,6511,4609,2052,200, -142,758,2093,3135,3702,4238,5304,6883,8326,8842, 8029,6336,4926,4693,5605,6975,7956,7969,7043,5796, 4910,4506,3934,2651,1159,315,156,156,188,391, 789,1300,1733,1900,2077,2946,4799,7213,9320,10547, 10850,10175,8604,6856,5708,5037,4316,3526,2993,3036, 3650,4318,4278,3145,1041,-1341,-3016,-3721,-3901,-3924, -3984,-4463,-5314,-5791,-5497,-4790,-4320,-4473,-4965,-5035, -4254,-2823,-1154,292,1103,1158,257,-1876,-4875,-7698, -9516,-10060,-9478,-8227,-6662,-4959,-3702,-3657,-4673,-5939, -6939,-7687,-8273,-8574,-8150,-6824,-5264,-4402,-4416,-4872, -5292,-5445,-5563,-5996,-6475,-6511,-5889,-4607,-2934,-1317, -306,-462,-1884,-3616,-4347,-3600,-1907,127,2181,4265, 6358,8052,8873,8810,7996,6412,4218,1856,-97,-1256, -1597,-1337,-751,-69,452,671,755,797,822,990, 1530,2644,4284,6054,7609,8932,9883,10032,9313,8245, 7354,6787,6367,5554,3994,1905,-200,-1917,-3265,-4763, -6701,-8738,-10336,-11085,-10754,-9597,-8003,-6055,-3821,-1647, 235,1972,3774,5544,6793,7189,7084,7031,6909,6332, 5333,4038,2426,686,-759,-1670,-1905,-1480,-824,-257, 153,344,483,861,1336,1694,2068,2713,3741,5213, 7079,9215,11407,13178,13883,13214,11332,8539,5474,2943, 1285,264,-407,-889,-1072,-752,-118,477,1018,1683, 2511,3471,4391,5029,5439,5666,5281,3892,1607,-1100, -3340,-4143,-3528,-2526,-1877,-1502,-1265,-1380,-2122,-3448, -4811,-5672,-5917,-5542,-4432,-2811,-917,1148,2982,3948, 3902,3035,1457,-651,-2884,-4635,-5605,-5997,-6302,-6707, -6990,-6827,-6062,-4955,-4074,-3583,-3099,-2381,-1433,-233, 859,1351,1150,505,-108,-157,495,1501,2309,2359, 1387,-379,-2673,-5437,-8265,-10244,-10823,-10347,-9621,-9352, -9483,-9228,-8075,-6418,-4935,-4039,-3871,-4109,-4037,-3127, -1467,214,784,-197,-1928,-3150,-3119,-2032,-836,-322, -536,-846,-663,19,879,1425,1438,1097,774,917, 1739,2947,4306,5656,6327,5813,4556,3452,2928,2856, 2881,2808,2709,2627,2464,2398,2825,3672,4436,4688, 4307,3801,4178,5764,7669,8885,8939,7948,6613,5643, 5289,5349,5433,5281,5116,5319,5749,5852,5111,3186, 422,-2083,-3505,-3667,-2649,-676,1766,4301,6515,7846, 8237,8133,7732,6943,5863,4814,4288,4546,5284,6250, 7433,8344,8424,7650,6118,3839,1361,-285,-671,-227, 264,394,353,242,-568,-2638,-5387,-7735,-9021,-9013, -7820,-5587,-2667,-166,766,321,-337,-554,-717,-1634, -3540,-5644,-6869,-6887,-6146,-5084,-4068,-3503,-3690,-4692, -6147,-7138,-7169,-6736,-6422,-6402,-6556,-6595,-6411,-6433, -6961,-7521,-7500,-6916,-6453,-6437,-6254,-5114,-3388,-2336, -2542,-3574,-4675,-5302,-5376,-5289,-5235,-4877,-3816,-2063, 57,2159,3894,5020,5302,4914,4548,4635,4999,5210, 4832,3794,2531,1458,594,-199,-901,-1380,-1465,-1082, -471,150,1055,2316,3465,4161,4345,4207,4400,5339, 6642,7761,8476,8942,9521,10069,9773,8354,6285,3909, 1197,-1499,-3751,-5564,-7002,-7919,-8397,-8654,-8823,-8776, -8177,-6959,-5530,-4096,-2324,-193,1880,3655,5141,6411, 7379,7659,6959,5441,3495,1575,289,55,662,1486, 2046,2142,1819,1182,156,-1250,-2554,-3329,-3407,-2537, -668,1772,4533,7452,10034,11765,12342,11876,11036,10329, 9518,8236,6640,4948,2977,814,-867,-1403,-680,734, 2022,2882,3547,4194,4743,4796,4031,2868,1925,1239, 771,787,1266,1848,2212,2090,1466,482,-762,-2225, -3715,-4944,-5810,-6065,-5475,-4370,-3257,-2102,-809,334, 904,595,-219,-489,291,1500,2142,1567,-301,-2900, -5544,-7567,-8228,-7390,-5897,-4861,-4596,-4506,-3836,-2554, -1520,-1432,-2069,-2871,-3359,-2961,-1447,662,2546,3683, 3793,3015,1833,716,-125,-1119,-2903,-5224,-7145,-8269, -8868,-9142,-9127,-8880,-8446,-7934,-7573,-7181,-6277,-4791, -3238,-2391,-2946,-4559,-5643,-5190,-3664,-2172,-1535,-1582, -1499,-1029,-659,-662,-947,-1439,-2062,-2601,-2612,-1585, 393,2368,3509,3964,4205,4214,3799,3017,2290,2092, 2269,2470,2932,3811,4445,4286,3440,2237,1034,278, 311,1307,3140,5132,6567,7231,7172,6467,5581,5101, 5008,5105,5328,5629,6211,7358,8622,9243,8885,7405, 4940,2139,-305,-1959,-2532,-2200,-1475,-460,1057,3001, 4956,6287,6359,5179,3600,2584,2757,4248,6362,7968, 8408,7698,6387,5480,5366,5538,5521,5337,5193,5224, 5342,5190,4647,3914,3091,1799,-369,-3222,-5582,-6241, -5338,-4170,-3640,-3700,-3923,-3844,-3270,-2663,-2399,-2335, -2384,-2598,-2790,-2672,-2188,-1872,-2582,-4207,-5640,-6113, -5862,-5348,-4781,-4320,-4049,-3804,-3686,-4037,-4954,-6242, -7592,-8827,-9973,-10650,-10044,-8203,-6093,-4541,-3871,-3933, -4146,-4304,-4812,-5807,-6769,-7200,-7000,-6331,-5475,-4567, -3579,-2688,-2099,-1723,-1376,-843,236,1744,3011,3876, 4852,5978,6592,6024,4259,2280,1014,323,-299,-814, -1031,-788,-20,936,1502,1520,1229,830,680,1046, 1695,2458,3557,4913,6279,7696,9130,10375,11082,10839, 9606,7934,6196,4264,2150,273,-1044,-2080,-3471,-5622, -8022,-9640,-10053,-9645,-8823,-7636,-6041,-3979,-1673,470, 2278,3478,3675,3023,2263,1990,2398,3230,4027,4615, 4953,4831,4141,3165,2089,958,-88,-906,-1536,-2116, -2744,-3313,-3405,-2735,-1363,739,3482,6285,8717,10850, 12545,13283,12709,10828,8088,5291,3082,1720,1267,1483, 2064,2893,3883,4875,5679,6042,5494,3745,1254,-962, -1796,-638,1891,4374,5761,5690,4383,2711,1410,653, 280,-154,-1222,-2829,-4109,-4411,-3873,-3263,-3220,-3473, -3239,-2411,-1565,-689,624,2064,2850,2442,949,-831, -2066,-2567,-2648,-2828,-3618,-4772,-5444,-5203,-4380,-3640, -3569,-4205,-4916,-5072,-4554,-3559,-2290,-1132,-554,-655, -960,-517,1037,2792,3616,3460,2825,1922,719,-969, -3040,-4998,-6530,-7745,-8566,-8766,-8283,-7115,-5666,-4820, -4963,-5522,-5919,-6149,-6305,-6447,-6387,-5806,-4783,-3655, -2467,-1348,-770,-971,-1946,-3602,-5099,-5294,-4099,-2379, -819,271,822,900,616,462,1056,2233,3153,3437, 3371,3312,3637,4386,4712,3814,2055,430,-304,66, 1083,2129,2910,3393,3780,4286,4725,4805,4554,3966, 3024,2322,2680,4181,6324,8730,10876,11882,11176,9000, 6287,4227,3356,3229,3110,2595,1814,1246,1101,1131, 1184,1213,978,556,553,1562,3540,5713,7087,7255, 6681,5966,5366,4904,4340,3603,3329,4079,5412,6700, 7913,9034,9537,8847,6965,4745,3188,2344,1574,693, -56,-491,-686,-971,-1685,-2626,-3385,-4029,-4630,-4831, -4402,-3483,-2310,-1356,-1071,-1340,-1917,-2704,-3574,-4541, -5588,-6065,-5405,-3950,-2577,-1821,-1662,-1678,-1701,-2315, -3935,-5987,-7700,-8876,-9397,-9131,-8275,-7164,-6221,-5792, -5785,-5903,-6046,-6161,-6189,-6299,-6417,-6211,-5808,-5621, -5679,-5777,-5821,-5675,-5257,-4752,-4193,-3239,-1667,225, 1772,2527,2779,3164,3739,4104,4015,3387,2376,1423, 835,693,1043,1610,1862,1549,725,-192,-607,-426, -238,-275,-64,752,1999,3290,4216,4843,5750,7035, 8082,8616,8920,9285,9814,10221,9900,8570,6270,3076, -559,-3813,-6084,-7303,-7645,-7507,-7183,-6552,-5563,-4594, -3880,-3402,-3158,-2913,-2342,-1520,-528,716,2028,3039, 3536,3515,3436,4021,5250,6278,6293,5046,3018,1137, -142,-1152,-2177,-3239,-4432,-5544,-5691,-4058,-694,3510, 7236,9633,10578,10188,8729,7043,5941,5584,5716,5786, 5312,4663,4658,5387,6211,6415,5674,4326,3109,2432, 2305,2621,2988,2898,2407,2008,1996,2503,3440,4282, 4448,3840,2801,1845,1095,59,-1502,-3103,-4307,-5033, -5143,-4435,-2942,-1040,574,1280,1068,366,-290,-412, -87,-67,-595,-1095,-1320,-1583,-1989,-2534,-3198,-3725, -4108,-4643,-5165,-5208,-4749,-4175,-3938,-4248,-4602,-4346, -3627,-2861,-1945,-719,573,1667,2429,2942,3410,3593, 2754,646,-2184,-4720,-5868,-5354,-4200,-3596,-3850,-4706, -5777,-6672,-7278,-7639,-7608,-7230,-6718,-6105,-5299,-4434, -3726,-3487,-3980,-4899,-5564,-5707,-5403,-4627,-3632,-2910, -2715,-3047,-3629,-3858,-3360,-2418,-1563,-1199,-1190,-680, 1096,3750,6074,7028,6224,4082,1594,-437,-1561,-1431, -234,1246,2445,3336,4074,4621,4517,3312,1429,-114, -829,-635,588,2693,5059,6980,7950,8080,8126,8352, 8385,8012,7383,6581,5888,5610,5534,5332,4888,3982, 2473,667,-871,-1616,-1343,-368,937,2555,4262,5496, 5993,5800,5043,4124,3558,3345,3199,3084,3270,4098, 5486,6746,7412,7626,7490,7040,6665,6548,6389,6019, 5497,4695,3679,2715,1814,834,-243,-1351,-2174,-2434, -2396,-2386,-2190,-1675,-1155,-1013,-1560,-2929,-4626,-5795, -6002,-5345,-4288,-3442,-2946,-2544,-2151,-1796,-1486,-1514, -2188,-3214,-3996,-4274,-4193,-4226,-4785,-5784,-6818,-7602, -7898,-7735,-7515,-7392,-7101,-6616,-6150,-5818,-5807,-6124, -6340,-6286,-6411,-7033,-7895,-8419,-8083,-6851,-5271,-3771, -2421,-1402,-806,-350,195,807,1336,1499,1252,1165, 1623,2307,2850,3211,3263,2816,1859,518,-732,-1282, -974,-141,740,1146,933,657,705,797,639,452, 726,1872,3907,6433,9046,11285,12369,11959,10610,9061, 7699,6567,5258,3340,976,-1458,-3595,-4899,-5091,-4542, -3880,-3659,-4264,-5333,-5816,-5116,-3610,-2238,-1849,-2479, -3308,-3523,-2645,-558,2241,4928,6977,8082,8169,7529, 6330,4337,1553,-1311,-3526,-4695,-4776,-4011,-2610,-789, 845,1762,2245,2729,3320,4091,4960,5517,5671,5796, 6167,6765,7240,7115,6451,5758,5234,4950,5218,5905, 6361,6239,5521,4228,2825,1964,1791,2176,2879,3559, 4173,4878,5334,5169,4624,3849,2585,915,-814,-2346, -3192,-2999,-2318,-1982,-2173,-2357,-1752,-288,1050,1418, 1042,477,5,-204,-109,120,233,-123,-1176,-2505, -3327,-3247,-2430,-1584,-1537,-2413,-3665,-5026,-6470,-7428, -7314,-6269,-4840,-3408,-2034,-443,1366,2797,3243,2519, 974,-401,-715,-68,851,1410,1073,-245,-1943,-3319, -4090,-4315,-4452,-5053,-6141,-7153,-7416,-6514,-4924,-3699, -3363,-3712,-4563,-5691,-6533,-6660,-5968,-4657,-3468,-3083, -3316,-3597,-3844,-4425,-5622,-7097,-7882,-7262,-5407,-2874, -80,2360,3749,3996,3413,2473,1686,1245,1084,1205, 1600,2153,2738,3115,3078,2913,3038,3086,2395,959, -514,-1178,-628,674,1940,2877,3492,3838,4177,4684, 5256,6050,7287,8607,9587,10128,10054,9291,8084,6627, 5018,3502,2154,1004,319,202,640,1661,2823,3193, 2625,2079,2369,3317,4238,4470,3984,3437,3357,3845, 4717,5410,5343,4656,3980,3822,4524,5871,7139,8008, 8602,8855,8512,7529,5978,4055,2254,1050,652,931, 1382,1623,1873,2257,2292,1525,-10,-1923,-3458,-4047, -4058,-4157,-4410,-4545,-4458,-4111,-3562,-3007,-2574,-2327, -2324,-2497,-2656,-2599,-2181,-1598,-1406,-1824,-2596,-3588, -4848,-6073,-6738,-6760,-6520,-6547,-6904,-7022,-6524,-5715, -5136,-5250,-6186,-7511,-8637,-9350,-9614,-9255,-8307,-7097, -5955,-5110,-4496,-3758,-2917,-2467,-2531,-2597,-2124,-937, 611,2003,2994,3240,2292,555,-685,-586,636,2066, 2698,2186,1122,375,282,585,639,98,-742,-1553, -2258,-2396,-1342,689,2950,4912,6311,7249,8032,8781, 9396,9865,10038,9688,8763,7212,5109,2924,1035,-742, -2356,-3226,-3101,-2329,-1416,-905,-1175,-2240,-3933,-5885, -7411,-8092,-7938,-6896,-5015,-2656,-76,2673,5252,7021, 7545,6795,5153,3154,1227,-233,-825,-747,-708,-1022, -1476,-1786,-1611,-760,353,1158,1548,1704,1915,2420, 3079,3691,4137,4325,4399,4790,5599,6403,6976,7360, 7254,6363,5152,4438,4458,4680,4408,3690,3239,3379, 3830,4499,5413,6221,6439,5750,4230,2664,1908,1965, 2086,1582,263,-1447,-2849,-3476,-3306,-2596,-1779,-1112, -439,462,1483,2327,2582,1786,28,-1875,-2991,-2784, -1421,299,1565,1850,933,-853,-2799,-4329,-5180,-5606, -6193,-7157,-7875,-7561,-6134,-4145,-2296,-1151,-752,-736, -785,-664,-223,377,1052,1843,2374,2231,1558,653, -521,-2025,-3531,-4493,-4689,-4491,-4295,-3899,-3207,-2956, -3955,-5956,-7859,-8580,-7754,-5991,-4158,-2634,-1631,-1441, -2106,-3380,-4926,-6301,-7339,-8247,-8877,-8750,-7914,-6723, -5282,-3720,-2309,-1122,-363,-459,-1319,-2040,-1664,26, 2269,3742,3932,3547,3355,3420,3290,2501,1212,226, 46,529,1290,1871,1831,1013,-253,-1276,-1429,-661, 425,1376,2448,4086,6278,8470,9899,10284,10124,9841, 9231,7960,6079,4160,2955,2721,2990,3147,2986,2545, 1915,1254,741,625,1038,1778,2517,3194,3932,4676, 5128,4930,3945,2644,1825,1838,2544,3675,4994,6289, 7282,7679,7612,7428,7151,6614,5822,4876,3868,3065, 2799,3151,3813,4300,4295,3920,3336,2538,1665,1022, 546,-152,-1242,-2611,-3863,-4510,-4534,-4335,-4169,-4090, -4187,-4363,-4176,-3339,-2122,-1184,-939,-1246,-1670,-1897, -1907,-2034,-2823,-4316,-5628,-5834,-4969,-3807,-3109,-3231, -4097,-5489,-7155,-8439,-8725,-8124,-7345,-7054,-7494,-8332, -8951,-9106,-8924,-8405,-7527,-6573,-5794,-5145,-4355,-3142, -1596,-304,313,316,-145,-806,-1204,-1192,-864,-219, 734,1764,2558,2803,2513,2057,1497,481,-880,-1801, -1789,-1232,-873,-1044,-1497,-1702,-1391,-461,1328,3839, 6352,8221,9303,9813,10060,10029,9289,7690,5655,3766, 2392,1811,2173,3136,3964,4069,3289,1747,-289,-2420, -4243,-5655,-6817,-7664,-7869,-7239,-5910,-4188,-2422,-800, 632,1826,2763,3547,4172,4414,4028,2887,1130,-607, -1436,-1079,-210,246,41,-329,-212,491,1324,1778, 1656,1062,298,-306,-341,639,2547,4596,5955,6400, 6340,6296,6283,6080,5659,5041,4204,3439,3296,4030, 5295,6363,6564,5841,4917,4580,5071,6208,7413,7771, 6792,4871,2769,985,-448,-1556,-2064,-1859,-1376,-1007, -648,-124,436,788,773,431,-49,-536,-882,-726, 111,1259,2159,2485,2231,1733,1250,516,-833,-2564, -4116,-5140,-5539,-5413,-4980,-4564,-4606,-5305,-6151,-6369, -5749,-4534,-2828,-636,1751,3627,4282,3430,1548,-350, -1300,-1051,-234,234,68,-292,-455,-532,-880,-1790, -3342,-5303,-7069,-7999,-7784,-6599,-5006,-3601,-2486,-1414, -456,-152,-1016,-2943,-5169,-6900,-7756,-7766,-7257,-6643, -6183,-5941,-5838,-5830,-5988,-6177,-5960,-5036,-3603,-2149, -1002,-159,498,1115,1827,2548,3113,3335,3092,2544, 2187,2421,3060,3450,3138,2202,947,-328,-1308,-1960, -2434,-2675,-2421,-1407,325,2385,4389,6173,7523,8112, 8062,7928,8121,8617,9017,8852,8055,6922,5578,4004, 2444,1386,1058,1309,1784,2127,2272,2416,2856,3642, 4204,3837,2626,1501,1246,1880,2880,3755,4322,4629, 4765,4949,5520,6342,6730,6389,5789,5445,5465,5605, 5519,5182,4872,4667,4436,4253,4359,4804,5266,5217, 4521,3661,3152,2979,2776,2234,1101,-753,-3083,-5184, -6312,-6157,-5066,-3614,-2238,-1380,-1357,-1856,-2318,-2579, -2739,-2743,-2553,-2331,-2297,-2440,-2411,-1930,-1338,-1366, -2208,-3347,-4219,-4686,-4991,-5372,-5749,-5923,-5981,-6160, -6665,-7580,-8781,-9948,-10878,-11287,-10737,-9109,-6959,-5149, -4142,-3748,-3519,-3211,-2870,-2559,-2246,-1924,-1614,-1326, -1073,-743,-154,576,1083,1316,1531,1821,2038,2119, 2097,1810,898,-711,-2611,-4272,-5180,-4947,-3667,-1831, 216,2412,4735,6942,8510,8900,8020,6393,4931,4360, 4741,5462,6017,6438,6697,6525,6038,5718,5628,5187, 3649,1031,-1754,-3818,-4963,-5425,-5513,-5557,-5763,-5955, -5739,-4736,-2787,-390,1444,2160,2025,1573,1347,1560, 1730,1209,114,-787,-878,-152,833,1531,1909,1996, 1477,257,-1123,-1886,-1593,-439,807,1556,1886,2040, 2115,2405,3233,4464,5631,6170,5842,5129,4651,4379, 3927,3216,2544,2437,3330,5025,6852,8244,9008,9188, 8901,8124,6817,5259,3822,2530,1342,513,283,450, 540,484,661,1096,997,-253,-2250,-3823,-3878,-2200, 315,2501,3672,3678,2819,1687,815,442,518,742, 844,848,813,418,-735,-2676,-5038,-7160,-8333,-8434, -7947,-7171,-5996,-4358,-2553,-1119,-356,-39,49,-114, -477,-757,-648,18,1115,2185,2869,3160,2957,1802, -513,-3451,-5903,-6972,-6647,-5638,-4648,-4079,-3953,-3874, -3475,-2898,-2486,-2296,-2315,-2663,-3289,-3894,-4182,-4201, -4474,-5453,-6759,-7597,-7795,-7788,-7902,-7958,-7474,-6363, -5228,-4606,-4222,-3665,-2881,-1977,-1221,-866,-732,-256, 1028,3064,5122,6140,5728,4367,2757,1381,460,-178, -822,-1483,-2093,-2516,-2411,-1808,-1234,-959,-746,-175, 1148,3181,5370,7284,8849,9859,10045,9489,8470,7268, 6163,5098,3878,2824,2397,2625,3221,3827,3947,3453, 2731,2129,1747,1615,1589,1504,1386,1294,1348,1822, 2802,3956,4913,5489,5595,5262,4628,4063,4101,4941, 6022,6622,6481,5720,4654,3795,3425,3416,3678,4278, 5149,6060,6682,6894,6770,6260,5108,3485,1972,817, -217,-1335,-2454,-3262,-3374,-2828,-2204,-2124,-2610,-3186, -3490,-3678,-3914,-3791,-2918,-1746,-1067,-1144,-1678,-2222, -2591,-2861,-2925,-2530,-1830,-1396,-1626,-2317,-2909,-3129, -3456,-4576,-6379,-8168,-9453,-9995,-9827,-9462,-9372,-9436, -9324,-8889,-8149,-7225,-6184,-5038,-4129,-3788,-3590,-2933, -2120,-1892,-2486,-3514,-4159,-3674,-2023,329,2849,4761, 5304,4413,2711,892,-558,-1656,-2857,-4307,-5576,-6003, -5057,-2865,-409,1470,2770,3741,4317,4463,4353,4234, 4341,4610,4732,4707,4881,5475,6533,7790,8674,8858, 8412,7356,5818,4250,2908,1586,-66,-2211,-4531,-6295, -6823,-6038,-4450,-2841,-1849,-1452,-1178,-894,-863,-1099, -1258,-1002,-253,645,1273,1530,1443,1002,486,269, 320,373,382,475,749,1022,877,130,-948,-1778, -1734,-567,1215,2763,3650,4002,4146,4417,4844,5087, 4830,3938,2435,893,214,842,2607,5041,7426,9204, 10129,10034,8915,7264,5796,4969,4943,5488,6006,6112, 5681,4571,2874,1140,-177,-959,-1303,-1401,-1235,-657, 60,352,85,-418,-752,-587,155,1171,2149,2915, 3353,3596,3891,4139,3938,2932,899,-1913,-4642,-6439, -6959,-6339,-5251,-4496,-4206,-4055,-4063,-4459,-5097,-5504, -5131,-3735,-1787,-99,1072,1986,2848,3677,4104,3626, 2347,858,-401,-1305,-1865,-2339,-3021,-3914,-4702,-4940, -4470,-3793,-3496,-3563,-3688,-3666,-3151,-2092,-1129,-876, -1305,-2139,-3186,-4327,-5544,-6662,-7356,-7561,-7404,-6940, -6347,-5885,-5699,-5982,-6832,-7708,-7890,-7149,-5643,-3763, -2132,-927,245,1598,2863,3689,3950,3870,3774,3591, 3132,2593,2141,1528,529,-826,-2381,-3749,-4482,-4469, -3711,-2279,-470,1353,2959,4213,5205,6268,7455,8360, 8599,8088,6991,5857,5221,5086,5188,5335,5425,5364, 5088,4441,3495,2630,1972,1462,1276,1519,1876,2003, 1843,1563,1443,1672,2172,2873,3746,4612,5276,5753, 6060,6123,5937,5519,4996,4543,4047,3341,2775,2835, 3605,4932,6458,7476,7545,6906,6108,5571,5379,5224, 4862,4387,3790,2897,1882,1038,279,-622,-1748,-2943, -3697,-3628,-3019,-2322,-1774,-1639,-2049,-2656,-3076,-3213, -3137,-3058,-3131,-3146,-2801,-1972,-688,596,974,87, -1393,-2567,-3044,-2993,-2978,-3467,-4468,-5865,-7571,-9262, -10561,-11245,-11131,-10288,-9125,-7946,-6862,-5985,-5292,-4710, -4461,-4785,-5551,-6515,-7274,-7147,-5724,-3379,-869,1096, 2197,2810,3437,4000,3920,2724,530,-1814,-3412,-4145, -4356,-4187,-3672,-2894,-1930,-1018,-406,45,662,1499, 2379,3025,3222,3048,2768,2576,2743,3612,5139,6900, 8448,9469,9985,10163,9704,8089,5547,2864,680,-615, -1048,-1113,-1323,-1901,-2856,-3830,-4210,-3819,-2902,-1759, -939,-945,-1466,-1814,-1791,-1490,-947,-236,511,997, 898,426,207,485,949,1308,1388,1024,175,-1156, -2710,-3639,-3240,-1601,685,2959,4556,5203,5002,4033, 2532,1071,112,-162,354,1540,2955,4053,4377,3959, 3473,3609,4440,5623,6734,7426,7795,8189,8576,8595, 8052,7111,6163,5394,4510,3218,1862,1091,1165,1790, 2273,1972,769,-965,-2786,-4056,-4170,-3150,-1507,368, 2259,3931,5182,5782,5501,4374,2690,1043,168,137, 162,-262,-950,-1737,-2636,-3613,-4589,-5418,-6044,-6662, -7297,-7539,-7013,-5774,-4072,-2353,-1064,-115,900,2000, 2840,3177,2881,2200,1632,1261,813,205,-565,-1609, -2901,-4308,-5526,-5981,-5395,-4174,-2935,-2027,-1584,-1462, -1537,-2024,-2878,-3448,-3431,-3275,-3412,-3870,-4348,-4431, -4188,-4297,-5167,-6582,-8010,-8888,-9007,-8630,-8029,-7282, -6642,-6341,-6167,-5727,-4841,-3487,-1868,-323,1144,2703, 4068,4833,4934,4597,4049,3355,2261,618,-1295,-3045, -4262,-4733,-4594,-4000,-2805,-1094,538,1615,2225,2654, 3128,3732,4468,5385,6419,7121,7178,6840,6465,6199, 6111,6033,5645,4967,4298,3828,3671,3759,3788,3524, 2881,1816,504,-541,-851,-294,821,1930,2806,3749, 4855,5745,6183,6189,5613,4471,3277,2656,2933,3807, 4478,4533,4307,4238,4530,5157,5769,5952,5760,5634, 5869,6383,6806,6844,6548,5927,4742,3088,1466,278, -277,-147,316,575,289,-709,-2149,-3200,-3312,-2782, -2335,-2546,-3376,-3998,-3718,-2852,-2179,-2048,-2303,-2466, -2085,-1130,14,950,1417,1302,663,-520,-2324,-4410, -6274,-7775,-8904,-9543,-9644,-9180,-8332,-7512,-6792,-5958, -5291,-5519,-6821,-8562,-9859,-10161,-9497,-8293,-6830,-5172, -3420,-1556,438,2045,2763,2749,2342,1655,890,169, -568,-1379,-2361,-3587,-4635,-4768,-3746,-1976,-145,1017, 1129,355,-876,-1946,-2148,-1281,132,1557,2756,3714, 4573,5451,6288,7172,8258,9381,10051,9791,8493,6629, 4930,3749,2982,2346,1514,317,-1030,-2190,-2962,-3143, -2664,-1836,-1019,-429,-273,-686,-1700,-3166,-4377,-4308, -2761,-459,1765,3441,4284,4044,2637,433,-1755,-3184, -3561,-3008,-1906,-726,189,774,1141,1558,2208,2761, 2784,2252,1452,833,874,1553,2327,2671,2445,1931, 1543,1389,1312,1471,2254,3648,5278,6877,8223,9036, 9127,8384,7003,5738,5364,6004,7150,8027,8099,7479, 6436,4938,3086,1308,-183,-1466,-2514,-3087,-2895,-1892, -571,489,1183,1686,2145,2688,3292,3600,3457,3188, 3067,3108,3174,3025,2564,2034,1379,147,-1754,-3896, -5671,-6557,-6539,-6160,-5855,-5698,-5651,-5533,-5033,-4043, -2734,-1239,328,1778,3056,4097,4646,4489,3502,1746, -170,-1565,-2385,-2880,-3107,-3024,-2626,-2061,-1730,-1928, -2471,-3017,-3367,-3486,-3349,-2846,-2021,-1338,-1324,-1855, -2394,-2752,-3122,-3602,-4112,-4573,-5059,-5759,-6645,-7448, -7932,-7977,-7701,-7571,-7952,-8519,-8669,-8069,-6746,-4810, -2411,185,2538,4042,4553,4548,4468,4247,3587,2347, 751,-779,-1969,-2653,-2647,-2154,-1845,-2109,-2538,-2454, -1572,-182,1131,2009,2525,3016,3862,5070,6056,6238, 5814,5408,5338,5644,6208,6772,7204,7434,7209,6378, 5099,3660,2397,1515,950,648,586,500,360,763, 2059,3610,4462,4215,3295,2657,2965,3985,5042,5612, 5419,4588,3692,3140,2958,3057,3292,3647,4308,5217, 6029,6670,7172,7334,7048,6598,6203,5773,5138,4397, 4006,4243,4609,4286,3090,1480,98,-470,-235,66, -141,-770,-1499,-2052,-2369,-2667,-3117,-3649,-4207,-4728, -4840,-4122,-2566,-628,1062,2054,2338,2248,1919,1159, -179,-2071,-4205,-6050,-7149,-7331,-6664,-5519,-4553,-4326, -5024,-6312,-7516,-8201,-8490,-8714,-9053,-9584,-10234,-10724, -10720,-9982,-8249,-5478,-2169,700,2267,2429,1771,812, -248,-1069,-1373,-1371,-1480,-1832,-2181,-2172,-1815,-1432, -1136,-824,-604,-845,-1745,-3059,-4117,-4292,-3491,-2038, -266,1490,2839,3667,4158,4545,5075,5958,7243,8815, 10221,10662,9686,7596,4995,2553,1013,707,1257,1930, 2132,1679,826,-169,-1318,-2525,-3544,-4199,-4356,-3969, -3190,-2107,-716,591,1334,1537,1511,1314,774,-166, -1238,-1960,-2169,-2041,-1603,-860,-253,-264,-761,-1225, -1226,-521,818,2318,3361,3632,3229,2443,1414,158, -983,-1488,-1190,-305,879,2110,3254,4182,4622,4419, 3842,3375,3284,3726,4795,6288,7703,8627,8984,9097, 9295,9343,8717,7286,5292,3136,1337,168,-418,-539, -411,-411,-649,-875,-819,-539,-325,-278,-76,638, 1816,3096,4151,4727,4742,4392,3828,3069,2236,1512, 940,379,-428,-1668,-3135,-4522,-5866,-7222,-8231,-8486, -7988,-6969,-5543,-3648,-1458,441,1447,1579,1388,1347, 1528,1713,1742,1622,1234,297,-1054,-2148,-2513,-2299, -1956,-1925,-2371,-3133,-3781,-3815,-3072,-2079,-1558,-1742, -2368,-3045,-3370,-3163,-2657,-2374,-2585,-3056,-3260,-3063, -2997,-3681,-5157,-7006,-8656,-9740,-10358,-10729,-10653,-9917, -8729,-7364,-5859,-4198,-2439,-732,672,1681,2333,2541, 2357,2243,2496,2752,2392,1094,-912,-2811,-3796,-3771, -3164,-2458,-1961,-1619,-1053,-137,879,1665,1956,1758, 1395,1274,1683,2749,4273,5789,7037,8040,8616,8417, 7411,5986,4749,4156,4078,3891,3204,2217,1490,1412, 1750,1943,1719,1220,780,798,1549,2837,4126,4962, 5113,4536,3612,2984,2943,3204,3269,3019,2841,3092, 3693,4356,4881,5246,5590,5881,5972,6011,6325,6841, 7090,6738,5910,5007,4348,4010,3897,3794,3387,2651, 2049,1916,2033,2053,1907,1504,511,-1362,-3873,-6032, -6894,-6384,-5004,-3117,-1074,518,1201,1049,608,420, 585,755,578,-41,-1092,-2417,-3705,-4661,-4999,-4526, -3454,-2375,-1873,-2300,-3648,-5540,-7449,-9075,-10264,-10938, -11173,-11109,-10909,-10581,-9819,-8319,-6266,-4091,-2003,-276, 626,401,-814,-2326,-3136,-2744,-1526,-245,573,705, 244,-591,-1539,-2138,-2062,-1550,-1148,-1209,-1838,-2850, -3853,-4564,-4866,-4643,-3660,-1767,867,3668,5935,7377, 8009,7809,7009,6276,6067,6208,6296,6102,5852,5968, 6397,6530,5943,4661,2872,800,-1322,-3138,-4091,-3817, -2659,-1451,-757,-590,-645,-612,-512,-564,-728,-662, -182,574,1273,1596,1371,509,-1003,-2819,-4176,-4412, -3393,-1577,247,1509,2198,2544,2634,2424,1899,1144, 314,-401,-821,-710,-38,862,1624,2140,2408,2413, 2176,1798,1453,1266,1291,1676,2640,4143,5858,7502, 8958,9990,10267,9712,8628,7564,6869,6413,5879,5134, 4210,3170,2076,965,-68,-805,-1163,-1261,-1152,-750, -43,838,1604,1892,1669,1329,1368,2168,3682,5333, 6408,6495,5542,3952,2381,1101,-210,-1868,-3734,-5433, -6553,-6836,-6523,-6055,-5627,-5177,-4505,-3551,-2606,-1900, -1200,-276,692,1485,2062,2445,2588,2326,1537,427, -659,-1642,-2413,-2617,-2136,-1308,-616,-459,-990,-1900, -2635,-2893,-2850,-2962,-3480,-4012,-3919,-3028,-1630,-153, 849,843,-205,-1863,-3612,-5141,-6428,-7609,-8660,-9391, -9665,-9592,-9407,-9167,-8604,-7518,-6121,-4856,-3847,-2845, -1548,157,2035,3529,4076,3466,2009,376,-832,-1437, -1534,-1383,-1374,-1627,-1794,-1478,-709,-9,8,-668, -1427,-1717,-1457,-750,350,1734,3149,4222,4813,5194, 5702,6338,6921,7267,7223,6775,6092,5376,4735,4118, 3354,2485,1788,1408,1358,1741,2491,3104,3099,2559, 2004,1896,2358,3104,3725,4005,3878,3346,2681,2273, 2418,3063,3791,4076,3765,3195,2924,3443,4742,6342, 7730,8604,8744,8029,6540,4652,3045,2353,2713,3836, 5294,6514,6940,6462,5449,4284,3229,2292,1235,-49, -1432,-2791,-4036,-4982,-5373,-4855,-3263,-1071,888,2030, 2184,1414,147,-995,-1610,-1630,-1289,-1077,-1326,-1938, -2540,-2670,-1993,-697,518,936,147,-1819,-4453,-7093, -9225,-10530,-10985,-10862,-10362,-9516,-8573,-7948,-7766,-7747, -7462,-6669,-5387,-3794,-2156,-895,-410,-762,-1675,-2674, -3113,-2585,-1383,-196,621,1135,1451,1473,966,-197, -1885,-3787,-5591,-6957,-7503,-6929,-5211,-2800,-483,1212, 2308,3092,3672,3910,3692,3322,3378,4187,5656,7436, 9000,9853,9721,8553,6644,4670,3208,2353,1876,1499, 959,116,-937,-1994,-2793,-3115,-2899,-2249,-1351,-389, 494,1219,1633,1603,1142,318,-743,-1737,-2303,-2374, -2199,-2063,-1962,-1647,-991,-229,414,907,1138,897, 236,-454,-759,-426,399,1235,1668,1635,1325,1056, 966,792,294,-312,-629,-447,300,1451,2585,3355, 3631,3587,3768,4730,6427,8265,9652,10271,10168,9550, 8477,7075,5751,4693,3773,3018,2512,2124,1779,1500, 1195,690,-102,-1057,-1803,-1982,-1527,-531,864,2299, 3318,4016,4897,6100,7071,7075,5841,3769,1616,17, -802,-1113,-1521,-2423,-3769,-5194,-6207,-6497,-6147,-5534, -4938,-4340,-3563,-2564,-1443,-309,756,1614,2022,1857, 1148,98,-835,-1129,-684,123,784,895,382,-410, -1100,-1502,-1693,-2066,-2941,-4061,-4727,-4437,-3238,-1722, -617,-163,-128,-289,-561,-830,-1078,-1496,-2222,-3296, -4774,-6519,-8191,-9411,-9947,-9997,-9992,-9996,-9644,-8606, -6841,-4625,-2507,-1060,-519,-641,-870,-741,-267,196, 459,486,283,30,-22,31,-104,-594,-1398,-2189, -2545,-2342,-1740,-973,-421,-414,-974,-1631,-1698,-729, 1035,2848,4181,4990,5457,5807,6168,6464,6570,6559, 6350,5706,4563,3184,2053,1649,2016,2813,3696,4270, 4066,3034,1712,747,580,1269,2375,3339,3976,4328, 4213,3387,1984,624,30,472,1588,2948,4215,5101, 5498,5568,5573,5823,6421,6963,6886,5987,4506,3007, 2199,2523,3912,5898,7791,8881,8824,7722,5977,4200, 2857,1822,620,-834,-2210,-3200,-3708,-3702,-3101,-1921, -469,871,1890,2361,1899,373,-1771,-3741,-4831,-4669, -3360,-1460,376,1656,2127,1814,968,-14,-736,-1208, -1810,-2819,-4189,-5640,-6819,-7710,-8637,-9658,-10393,-10555, -10174,-9421,-8323,-6937,-5632,-4943,-5003,-5335,-5363,-4968, -4461,-4130,-3835,-3110,-1709,7,1567,2754,3305,2870, 1345,-935,-3216,-4665,-4986,-4527,-3890,-3531,-3553,-3699, -3751,-3715,-3548,-2970,-1873,-410,1150,2574,3794,4778, 5339,5382,5286,5519,6248,7396,8583,9199,8913,7815, 6178,4370,2690,1173,-230,-1462,-2442,-3000,-2833,-1851, -389,1027,1921,1979,1418,781,249,-356,-1120,-1908, -2379,-2247,-1607,-735,113,630,564,-130,-1281,-2458, -3021,-2564,-1352,-47,947,1569,1767,1559,1154,868, 825,795,530,136,-105,12,502,950,786,-58, -967,-1183,-421,1031,2666,4123,5242,6015,6660,7461, 8412,9095,9072,8302,7283,6630,6484,6491,6358,6051, 5570,4795,3506,1639,-329,-1662,-2054,-1714,-1078,-570, -314,-48,601,1826,3483,5015,5775,5640,5147,4910, 5106,5345,4972,3721,1928,46,-1692,-3234,-4552,-5379, -5464,-5071,-4779,-4661,-4285,-3385,-2225,-1392,-1237,-1574, -1973,-2104,-1675,-570,847,1945,2332,2025,1386,940, 861,785,296,-668,-1780,-2510,-2591,-2301,-2041,-2000, -2222,-2636,-3033,-3156,-2696,-1501,27,1161,1564,1409, 926,190,-946,-2675,-4919,-7306,-9412,-10716,-10828,-9945, -8664,-7447,-6620,-6248,-6097,-5881,-5413,-4568,-3424,-2306, -1465,-978,-843,-908,-811,-290,626,1497,1607,689, -615,-1533,-1883,-1878,-1721,-1506,-1283,-1221,-1494,-1991, -2461,-2674,-2364,-1366,207,2099,3916,5174,5570,5235, 4634,4314,4631,5441,6147,6315,5919,5051,3792,2409, 1440,1478,2469,3593,4113,3896,3174,2388,2059,2359, 2967,3376,3265,2586,1582,627,31,25,678,1763, 2998,4234,5265,5861,5923,5492,4809,4266,4051,4063, 4190,4312,4278,4061,3855,4023,4974,6773,8833,10237, 10333,8945,6441,3600,1170,-454,-1227,-1412,-1305,-878, -60,885,1520,1546,911,-61,-988,-1727,-2198,-2306, -2181,-2099,-2169,-2325,-2309,-1767,-619,764,1869,2361, 2261,1859,1312,465,-719,-2080,-3681,-5661,-7757,-9352, -9816,-9024,-7597,-6406,-5846,-5909,-6504,-7556,-8905,-10150, -10628,-9940,-8317,-6214,-3884,-1634,-15,607,314,-424, -991,-1015,-566,51,413,203,-520,-1508,-2589,-3569, -4289,-4820,-5213,-5439,-5439,-5028,-3999,-2560,-1299,-583, -257,67,666,1553,2623,3869,5257,6591,7718,8666, 9368,9641,9278,8059,5959,3276,589,-1284,-1757,-1048, 13,744,992,977,940,933,796,389,-296,-1083, -1566,-1347,-556,207,429,-28,-822,-1406,-1527,-1381, -1244,-1299,-1511,-1617,-1518,-1483,-1637,-1664,-1175,-107, 1128,1854,1783,1349,1134,1260,1474,1323,448,-957, -2272,-2900,-2518,-1347,-107,697,1172,1638,2209,2785, 3250,3726,4449,5340,6118,6811,7612,8499,9282,9734, 9621,8815,7428,5756,4234,3198,2539,1908,1106,123, -816,-1245,-993,-455,-190,-361,-549,-72,1311,3202, 5100,6750,7874,8070,7165,5483,3678,2267,1140,-158, -1657,-2947,-3645,-3574,-2959,-2313,-2063,-2457,-3475,-4618, -5197,-4977,-4167,-3140,-2227,-1499,-779,55,942,1693, 2072,1938,1498,993,460,32,-28,236,429,74, -1118,-2876,-4393,-4974,-4488,-3246,-1809,-637,122,524, 751,1039,1379,1437,935,-127,-1625,-3362,-5069,-6595, -7885,-8804,-9102,-8623,-7630,-6836,-6692,-6936,-7036,-6790, -6262,-5586,-4805,-3793,-2629,-1776,-1582,-1863,-2053,-1684, -624,795,1961,2366,1749,152,-1855,-3376,-3817,-3238, -2206,-1467,-1372,-1712,-2103,-2250,-2022,-1455,-602,483, 1554,2381,3066,3843,4716,5490,5908,5874,5649,5482, 5168,4352,3105,1862,1127,1312,2441,4151,5779,6543, 6035,4619,2963,1564,784,640,789,841,687,514, 584,993,1634,2544,3837,5176,5954,5976,5482,4669, 3654,2499,1371,767,1205,2655,4676,6739,8315,9020, 8793,7939,7048,6549,6234,5633,4694,3701,2833,2159, 1772,1665,1721,1731,1508,1121,802,588,457,416, 263,-231,-1040,-2037,-3104,-3983,-4380,-4077,-2922,-978, 1343,3510,5048,5521,4580,2303,-595,-2984,-4094,-4084, -3636,-3269,-3220,-3538,-4061,-4726,-5630,-6731,-7868,-8946, -9790,-10184,-10123,-9676,-8874,-7852,-6845,-5986,-5204,-4225, -2884,-1436,-333,269,399,96,-340,-461,-251,-134, -553,-1630,-2912,-3739,-3883,-3645,-3498,-3778,-4370,-4793, -4814,-4679,-4599,-4453,-3926,-2674,-639,1715,3831,5537, 6957,8117,8750,8478,7378,6174,5466,5292,5336,5176, 4428,3062,1478,241,-201,100,613,855,787,625, 604,786,948,796,300,-354,-911,-1197,-1227,-1053, -567,178,717,549,-365,-1633,-2695,-3222,-3299,-3041, -2454,-1657,-775,351,1797,3149,3737,3181,1655,-115, -1382,-1932,-1875,-1421,-889,-543,-431,-459,-401,33, 700,1047,789,257,92,842,2612,4970,7216,8704, 9125,8787,8380,8304,8475,8570,8213,7242,5982,4905, 4128,3449,2575,1353,-53,-1411,-2537,-3080,-2653,-1216, 821,2827,4223,4928,5311,5684,6033,6187,5940,5083, 3701,2211,1150,823,970,935,332,-784,-2142,-3299, -3862,-3882,-3699,-3482,-3295,-3256,-3424,-3724,-3950,-3725, -2812,-1348,272,1636,2480,2827,2830,2517,1909,1158, 331,-570,-1372,-1947,-2387,-2799,-3185,-3430,-3257,-2437, -1046,527,1692,1905,1199,216,-376,-395,-92,85, -217,-1176,-2888,-5165,-7289,-8432,-8373,-7558,-6686,-6205, -6064,-6083,-6272,-6546,-6658,-6554,-6322,-5847,-4962,-3756, -2579,-1743,-1236,-766,-206,346,806,1000,588,-434, -1592,-2450,-2923,-2987,-2561,-1686,-742,-413,-1116,-2436, -3486,-3579,-2579,-857,995,2636,3925,4717,5012,5028, 4871,4538,4080,3572,3201,3196,3456,3594,3509,3464, 3814,4780,6118,7114,7154,6089,4179,1882,-286,-1911, -2558,-1977,-473,1327,3016,4367,5210,5493,5251,4584, 3706,2722,1646,832,762,1453,2492,3563,4590,5672, 6832,7736,7949,7407,6484,5734,5594,6008,6481,6541, 6011,4902,3497,2240,1465,1388,2141,3448,4624,5079, 4536,3061,1071,-893,-2445,-3377,-3798,-3884,-3498,-2418, -836,677,1600,1657,1071,523,509,919,1270,1188, 692,133,-313,-796,-1385,-1979,-2508,-2959,-3445,-4207, -5281,-6341,-7163,-7805,-8415,-9082,-9770,-10274,-10363,-9857, -8638,-6885,-5090,-3616,-2469,-1464,-475,327,476,-283, -1567,-2670,-2929,-2097,-624,678,1294,1021,-155,-1971, -4003,-5861,-7194,-7735,-7566,-6937,-5999,-4769,-3165,-1198, 825,2503,3637,4226,4428,4662,5302,6336,7400,7945, 7624,6708,5729,4860,3992,3159,2481,1955,1466,990, 766,1105,1843,2317,2009,927,-425,-1262,-1057,-29, 1100,1693,1524,816,-7,-599,-839,-893,-1211,-2022, -2993,-3523,-3278,-2310,-985,262,1184,1638,1474,855, 289,185,502,841,769,226,-420,-806,-825,-598, -430,-601,-1080,-1550,-1669,-1185,-103,1175,2117,2504, 2561,2825,3704,5074,6487,7710,8726,9489,9938,9980, 9558,8820,7864,6519,4709,2699,853,-572,-1324,-1268, -575,321,925,1074,1063,1255,1712,2413,3357,4398, 5286,5817,5927,5589,4783,3549,2197,1187,732,709, 832,796,467,-145,-1082,-2300,-3388,-3929,-3968,-3897, -4099,-4708,-5383,-5435,-4345,-2180,381,2467,3575,3731, 3110,1874,437,-698,-1332,-1548,-1526,-1485,-1545,-1714, -1929,-1986,-1697,-1133,-486,143,683,1056,1203,1045, 481,-355,-1072,-1362,-1266,-1227,-1746,-3005,-4737,-6359, -7244,-7086,-6206,-5308,-4982,-5402,-6215,-6855,-7028,-6841, -6502,-5993,-5137,-3914,-2671,-1961,-1960,-2217,-2141,-1539, -670,67,500,613,238,-686,-1830,-2756,-3226,-3099, -2473,-1707,-1206,-1217,-1696,-2228,-2238,-1430,96,1870, 3300,4130,4560,4685,4245,3173,1962,1248,1406,2308, 3496,4684,5861,6952,7720,7947,7544,6573,5129,3306, 1384,-172,-1065,-1245,-665,694,2529,4206,5075,4794, 3648,2418,1750,1735,2025,2192,2089,1961,2025,2237, 2534,2986,3730,4853,6235,7590,8594,8887,8232,6821, 5149,3609,2480,2068,2530,3667,5052,6194,6709,6505, 5755,4701,3625,2653,1709,679,-352,-1108,-1336,-1096, -793,-792,-1081,-1414,-1535,-1315,-869,-484,-332,-303, -143,286,841,1215,1233,924,314,-568,-1582,-2423, -2705,-2362,-1856,-1868,-2744,-4454,-6731,-9036,-10740,-11486, -11328,-10619,-9679,-8630,-7507,-6358,-5227,-4218,-3541,-3351, -3529,-3809,-3902,-3412,-2123,-354,1137,1731,1417,708, 47,-572,-1452,-2794,-4544,-6352,-7711,-8254,-7918,-6918, -5709,-4737,-4028,-3186,-1865,-40,1985,3759,4932,5388, 5269,4943,4766,4948,5558,6349,6728,6289,5285,4311, 3710,3386,2970,2214,1204,201,-458,-431,378,1562, 2459,2653,2201,1571,1181,912,395,-398,-1140,-1534, -1519,-1270,-986,-720,-554,-708,-1257,-1960,-2468,-2487, -1888,-825,361,1369,1976,2032,1607,941,254,-353, -923,-1546,-2063,-2143,-1717,-1061,-459,-14,261,276, -76,-740,-1422,-1670,-1081,434,2527,4702,6685,8432, 9822,10567,10470,9552,8159,6877,6143,5843,5500,4675, 3313,1713,290,-555,-619,-31,808,1509,1814,1693, 1411,1382,1913,2964,4137,4977,5183,4715,3734,2629, 1912,1912,2444,2917,2888,2451,1928,1291,250,-1275, -3031,-4560,-5401,-5442,-5036,-4642,-4431,-4259,-3782,-2730, -1122,666,2043,2547,2142,1140,-129,-1424,-2423,-2817, -2559,-1800,-838,-205,-271,-805,-1154,-904,-245,332, 604,663,491,-12,-739,-1366,-1675,-1702,-1509,-1188, -1022,-1437,-2723,-4621,-6361,-7279,-7263,-6634,-5803,-5051, -4528,-4434,-4939,-5912,-6867,-7254,-6824,-5811,-4679,-3753, -3082,-2566,-2174,-1826,-1339,-687,-151,-60,-438,-1022, -1684,-2527,-3490,-4168,-4126,-3354,-2335,-1602,-1217,-845, -220,601,1348,1777,1811,1476,869,205,-163,78, 993,2363,3874,5248,6359,7083,7255,6815,5963,5130, 4641,4443,4226,3812,3299,2767,2102,1193,251,-193, 314,1749,3473,4655,4829,4137,2940,1543,201,-772, -1114,-726,302,1894,3863,5843,7393,8213,8240,7524, 6241,4798,3685,3128,3097,3424,3851,4198,4586,5261, 6162,6860,6940,6285,5022,3510,2248,1612,1592,1884, 2116,2038,1429,243,-1088,-1925,-1986,-1475,-818,-404, -394,-686,-993,-1024,-744,-455,-433,-606,-643,-290, 433,1270,1765,1527,465,-1178,-2910,-4284,-5277,-6116, -6904,-7619,-8225,-8676,-8912,-8843,-8436,-7964,-7865,-8205, -8543,-8333,-7337,-5712,-3947,-2602,-1954,-1866,-1912,-1647, -870,236,1193,1470,827,-418,-1731,-2893,-4097,-5590, -7267,-8622,-9181,-8855,-7789,-6154,-4135,-2090,-489,406, 769,984,1304,1735,2239,2916,3880,5070,6289,7334, 8041,8146,7348,5624,3445,1550,447,189,550,1292, 2214,3059,3542,3438,2756,1884,1304,1127,979,476, -237,-594,-301,366,828,748,198,-633,-1579,-2414, -2833,-2645,-1953,-1093,-296,554,1460,2076,2034,1292, 149,-947,-1609,-1658,-1136,-295,467,805,587,-207, -1400,-2385,-2525,-1846,-1046,-776,-1117,-1573,-1525,-575, 1380,4001,6502,8260,9212,9589,9535,9120,8417,7523, 6619,5899,5344,4728,3839,2705,1659,1018,826,1016, 1499,1956,2169,2232,2167,1803,1208,840,1150,2134, 3338,4220,4486,4133,3513,3124,3214,3607,3944,3942, 3390,2190,478,-1413,-3089,-4229,-4712,-4606,-4079,-3475, -3118,-3058,-3050,-2740,-1961,-897,72,693,861,475, -462,-1699,-2779,-3284,-2983,-1965,-591,682,1410,1348, 640,-241,-826,-851,-427,86,425,548,379,-124, -799,-1361,-1630,-1681,-1784,-2161,-2845,-3763,-4774,-5564, -5771,-5382,-4708,-4096,-3822,-3961,-4378,-4927,-5593,-6262, -6704,-6717,-6237,-5421,-4508,-3518,-2345,-1043,130,765, 472,-648,-2013,-3218,-4277,-5154,-5530,-5083,-3776,-1917, 67,1731,2588,2281,1006,-646,-2109,-2947,-2855,-1871, -400,961,1803,2224,2564,2964,3378,3856,4480,5234, 6029,6748,7264,7384,6905,5777,4281,2886,1940,1632, 1974,2739,3589,4195,4293,3906,3347,2761,2042,1233, 511,-119,-701,-986,-532,907,3073,5247,6730,7277, 6997,6191,5328,4839,4764,4854,4814,4534,4237,4159, 4365,4815,5357,5665,5568,5318,5257,5426,5583,5457, 4903,3949,2748,1593,896,943,1537,2128,2242,1771, 1012,371,-51,-422,-925,-1691,-2591,-3144,-2809,-1489, 358,1974,2806,2785,2156,1142,0,-968,-1596,-1954, -2293,-2801,-3409,-3900,-4289,-4776,-5515,-6541,-7753,-8895, -9649,-9823,-9421,-8684,-7938,-7288,-6645,-6008,-5359,-4599, -3663,-2600,-1471,-319,760,1537,1769,1522,1023,235, -1134,-3097,-5164,-6737,-7475,-7332,-6604,-5686,-4904,-4496, -4432,-4391,-4045,-3243,-2025,-675,492,1481,2524,3702, 4925,6036,6792,7048,6849,6292,5427,4473,3752,3482, 3544,3516,3168,2781,2678,2831,3034,3051,2670,2037, 1621,1736,2217,2626,2494,1599,192,-1139,-1804,-1552, -655,285,810,755,151,-735,-1507,-1844,-1589,-812, 170,942,1182,797,98,-430,-560,-440,-254,-85, 50,122,47,-301,-930,-1709,-2458,-2936,-2941,-2548, -2003,-1447,-896,-193,970,2700,4835,7013,8744,9610, 9584,8882,7739,6500,5578,5184,5258,5464,5313,4620, 3700,2985,2673,2726,2943,3094,3020,2561,1680,733, 130,-58,162,940,2318,4002,5404,5960,5586,4688, 3725,3043,2860,3030,3080,2645,1653,229,-1372,-2757, -3580,-3687,-3226,-2624,-2228,-2096,-2208,-2464,-2569,-2300, -1726,-1154,-891,-965,-1181,-1514,-2095,-2735,-2853,-2119, -854,223,685,749,816,878,726,417,152,-28, -150,-226,-278,-317,-342,-439,-752,-1405,-2321,-3186, -3744,-4083,-4401,-4639,-4547,-4016,-3254,-2691,-2612,-3016, -3889,-5325,-7087,-8467,-8762,-7829,-6047,-4023,-2212,-851, -146,-212,-1010,-2370,-3895,-5099,-5710,-5714,-5135,-4133, -3019,-1954,-1004,-365,-156,-115,21,227,255,-85, -765,-1599,-2483,-3164,-3134,-2124,-437,1390,2890,3806, 4244,4539,4919,5385,5759,5747,5250,4546,3972,3760, 4010,4622,5321,5829,5893,5439,4710,4011,3329,2479, 1440,448,-157,-188,208,792,1338,1634,1613,1542, 1802,2587,3799,5110,6092,6503,6343,5788,5167,4723, 4411,4107,3817,3617,3657,4169,5152,6272,7089,7219, 6529,5294,3950,2842,2217,2150,2494,3042,3602,3956, 4048,3857,3190,1974,594,-536,-1396,-2037,-2353,-2208, -1546,-524,455,1028,1134,913,616,413,213,-22, -203,-428,-905,-1529,-1974,-2123,-2185,-2519,-3328,-4441, -5500,-6336,-6947,-7420,-7918,-8471,-9054,-9736,-10423,-10598, -9770,-7922,-5562,-3486,-2233,-1703,-1408,-1064,-717,-533, -558,-724,-1001,-1432,-1873,-2105,-2286,-2869,-4020,-5478, -6730,-7385,-7406,-7031,-6433,-5653,-4708,-3587,-2302,-1011, 138,1018,1548,1783,1935,2276,3145,4693,6451,7663, 7902,7139,5550,3618,2052,1387,1689,2558,3448,4141, 4638,4822,4576,3962,3061,2018,1148,635,416,350, 254,7,-218,-174,102,452,785,966,888,470, -379,-1461,-2199,-2157,-1388,-207,897,1424,1204,499, -162,-323,15,421,548,287,-415,-1391,-2213,-2736, -3170,-3568,-3690,-3216,-2182,-1136,-522,-65,757,2069, 3685,5456,7218,8666,9326,8802,7300,5578,4316,3878, 4362,5431,6440,6908,6697,5908,4851,3827,2974,2345, 1932,1576,1101,527,10,-210,156,1162,2547,4009, 5177,5693,5499,4815,3945,3178,2691,2434,2235,1934, 1453,865,301,-295,-1044,-1742,-2103,-2170,-2197,-2317, -2397,-2248,-1962,-1864,-2057,-2304,-2359,-2194,-2027,-2150, -2475,-2629,-2430,-1941,-1254,-481,215,699,869,750, 626,731,994,1262,1380,1196,752,194,-575,-1683, -2830,-3534,-3578,-3129,-2530,-2012,-1589,-1401,-1713,-2579, -3878,-5375,-6562,-6918,-6427,-5503,-4615,-4113,-4085,-4298, -4458,-4343,-3783,-2905,-2136,-1864,-2279,-3256,-4363,-5175, -5607,-5711,-5503,-5049,-4314,-3189,-1760,-307,935,1723, 1781,1001,-439,-2061,-3292,-3891,-4069,-3926,-3203,-1712, 384,2611,4352,5209,5154,4284,2890,1602,1102,1694, 3127,4654,5636,6137,6590,7036,7218,6924,6134,5050, 3993,3112,2454,2125,2113,2165,2027,1571,915,337, 11,-13,425,1429,2727,3921,4795,5217,5129,4725, 4266,3966,3889,3927,4027,4345,4976,5718,6325,6597, 6412,5798,4938,4081,3551,3554,3929,4429,4892,5094, 4855,4320,3848,3633,3537,3176,2342,1272,364,-133, -111,280,595,424,-233,-1021,-1364,-874,252,1389, 1972,1758,939,5,-764,-1407,-1966,-2351,-2439,-2147, -1651,-1302,-1301,-1660,-2508,-3992,-5981,-8048,-9712,-10649, -10846,-10431,-9551,-8518,-7605,-6723,-5615,-4353,-3274,-2722, -2851,-3396,-3760,-3409,-2213,-587,647,925,289,-985, -2640,-4308,-5636,-6438,-6656,-6399,-5950,-5508,-5102,-4775, -4584,-4471,-4254,-3734,-2866,-1749,-397,1207,2697,3558, 3766,3759,3992,4701,5638,6155,5808,4675,3207,2128, 2080,3026,4356,5477,6008,5851,5188,4225,3089,2047, 1267,631,18,-453,-615,-408,69,562,868,1057, 1257,1403,1266,593,-594,-1886,-2760,-2930,-2260,-775, 1073,2530,3032,2479,1273,45,-750,-1031,-960,-797, -768,-1052,-1853,-3185,-4573,-5359,-5271,-4464,-3233,-1865, -554,594,1574,2491,3450,4386,5224,5911,6240,6068, 5581,5100,4819,4879,5375,6141,6840,7150,6979,6468, 5701,4592,3224,1914,922,344,193,382,767,1224, 1617,1922,2403,3259,4253,4906,4955,4494,3899,3419, 2952,2383,1868,1565,1416,1261,946,468,36,-252, -486,-776,-1181,-1665,-2052,-2322,-2665,-3031,-3072,-2735, -2347,-2177,-2197,-2206,-2157,-2360,-3074,-3997,-4497,-4068, -2603,-457,1739,3540,4594,4478,3065,903,-1143,-2360, -2530,-2058,-1501,-1048,-665,-396,-290,-358,-669,-1311, -2335,-3629,-4797,-5415,-5487,-5272,-4996,-4848,-4880,-4891, -4720,-4354,-3882,-3532,-3507,-3623,-3507,-3121,-2753,-2747, -3286,-4308,-5579,-6853,-7747,-7725,-6619,-4840,-2946,-1358, -272,291,293,-327,-1404,-2548,-3442,-3936,-4029,-3820, -3319,-2357,-964,504,1648,2251,2284,1906,1364,977, 1046,1620,2419,3147,3697,4131,4597,5196,5864,6510, 7020,7173,6826,6101,5183,4232,3432,2760,1945,918, 76,-94,586,1759,2831,3388,3263,2495,1517,1084, 1546,2490,3279,3613,3699,4006,4750,5686,6368,6454, 5931,5102,4260,3567,3340,3799,4728,5656,6223,6212, 5625,4808,4188,3947,3982,4007,3830,3529,3280,3149, 3119,2942,2210,894,-428,-1077,-765,210,1152,1557, 1443,1085,740,558,433,156,-295,-821,-1387,-1816, -1817,-1279,-383,474,793,261,-1099,-2998,-4856,-6140, -6778,-7150,-7588,-8184,-8774,-9006,-8697,-8157,-7775,-7577, -7323,-6692,-5437,-3734,-2150,-1260,-1370,-2284,-3258,-3537, -2952,-1822,-752,-356,-858,-2065,-3688,-5271,-6247,-6525, -6477,-6345,-6096,-5714,-5239,-4709,-4124,-3465,-2759,-2006, -1108,-62,861,1480,1902,2302,2810,3500,4235,4735, 4807,4440,3799,3235,3091,3542,4574,5942,7174,7732, 7175,5496,3296,1398,260,-121,95,662,1270,1657, 1643,1271,811,505,404,433,480,367,-84,-920, -1850,-2274,-1813,-616,886,2271,3171,3484,3349,2898, 2118,1010,-286,-1517,-2527,-3364,-4115,-4690,-5023,-5109, -4812,-3957,-2651,-1223,38,920,1382,1631,1939,2442, 3112,3803,4489,5264,6060,6650,6955,7034,6956,6886, 6960,7003,6755,6215,5495,4676,3846,3008,2144,1364, 816,564,691,1157,1768,2468,3307,4083,4556,4772, 4887,4915,4667,3902,2666,1429,709,658,1222,2204, 3184,3631,3136,1619,-426,-2159,-2936,-2729,-1963,-1131, -463,-39,-73,-681,-1647,-2704,-3764,-4735,-5395,-5472, -4837,-3650,-2286,-1025,87,1052,1767,2114,2054,1648, 979,89,-819,-1332,-1248,-735,-51,603,1031,1085, 801,276,-450,-1335,-2262,-3042,-3680,-4391,-5273,-6092, -6511,-6374,-5637,-4411,-3015,-1813,-1122,-1164,-1818,-2669, -3448,-4149,-4822,-5420,-5816,-5969,-5891,-5490,-4662,-3601, -2764,-2479,-2786,-3451,-3994,-3926,-3189,-2250,-1768,-2025, -2628,-2950,-2780,-2379,-2086,-2030,-2009,-1597,-548,950, 2359,3185,3248,2680,1707,669,110,447,1664,3409, 5190,6564,7410,7858,8010,7830,7282,6240,4647,2783, 1248,712,1531,3189,4582,4996,4502,3534,2544,1817, 1336,1011,880,1010,1522,2491,3707,4729,5275,5305, 4865,4223,3834,3962,4559,5292,5702,5662,5389,5031, 4720,4817,5478,6356,6862,6609,5747,4953,4750,4967, 5012,4441,3225,1788,756,496,944,1753,2389,2532, 2362,2166,1936,1618,1229,683,-81,-802,-978,-297, 979,2147,2573,2042,726,-861,-2001,-2299,-1945,-1391, -1040,-1205,-2068,-3517,-5270,-6978,-8337,-9165,-9396,-9083, -8426,-7646,-6917,-6357,-5908,-5375,-4696,-4023,-3513,-3193, -3083,-3191,-3416,-3480,-3087,-2170,-1055,-313,-474,-1666, -3457,-5173,-6356,-6826,-6620,-6052,-5484,-5082,-4803,-4561, -4260,-3807,-3085,-2004,-721,361,917,841,304,-242, -262,461,1750,3276,4626,5414,5559,5313,5024,4922, 5025,5270,5679,6201,6549,6414,5680,4435,3013,1853, 1197,953,939,1060,1269,1479,1534,1366,1061,663, 55,-766,-1578,-2217,-2557,-2348,-1425,108,1961,3730, 5042,5661,5431,4329,2584,555,-1457,-3167,-4347,-4906, -4894,-4497,-4002,-3551,-3106,-2712,-2540,-2549,-2444,-1965, -1135,-238,586,1443,2387,3244,4033,5003,6161,7151, 7607,7489,7040,6550,6246,6253,6554,6865,6716,5815, 4302,2570,1049,144,89,814,1935,2966,3686,4106, 4206,3977,3588,3263,3171,3388,3849,4316,4496,4200, 3467,2588,1863,1337,892,513,309,349,514,629, 688,769,758,417,-260,-1070,-1839,-2552,-3299,-4033, -4436,-4332,-3942,-3569,-3246,-2861,-2421,-2009,-1673,-1291, -634,336,1273,1635,1063,-233,-1490,-1979,-1575,-697, 171,858,1504,2177,2670,2720,2111,623,-1769,-4575, -6915,-8124,-8074,-7098,-5607,-3919,-2365,-1295,-868,-1043, -1717,-2802,-4153,-5536,-6555,-6828,-6250,-5006,-3505,-2311, -1981,-2642,-3880,-4957,-5287,-4898,-4327,-3997,-3944,-3993, -3873,-3415,-2783,-2459,-2820,-3746,-4615,-4788,-4096,-2731, -1015,509,1271,1248,884,484,101,-139,-66,411, 1171,2036,3006,4207,5514,6566,6966,6498,5383,4338, 4003,4345,4851,5028,4642,3803,2970,2586,2812,3461, 4046,4090,3455,2455,1686,1589,2025,2390,2318,2001, 1880,2216,3012,4009,4775,4973,4624,4006,3500,3345, 3494,3750,3971,4203,4692,5643,6916,8121,8810,8694, 7731,6099,4170,2464,1466,1335,1915,2863,3717,4065, 3767,3012,2105,1262,569,117,114,626,1353,1804, 1683,1115,549,402,739,1321,1799,1825,1257,292, -741,-1498,-1770,-1656,-1571,-1956,-2974,-4416,-5907,-7237, -8339,-9005,-8994,-8422,-7707,-7226,-7128,-7181,-6936,-6223, -5187,-4099,-3317,-3196,-3714,-4490,-5032,-4982,-4327,-3308, -2157,-1152,-773,-1376,-2869,-4863,-6903,-8502,-9206,-8820, -7473,-5625,-3803,-2345,-1435,-1242,-1679,-2310,-2726,-2842, -2807,-2684,-2347,-1679,-727,405,1643,2806,3602,3919, 3932,3886,3861,3911,4206,4887,5839,6649,6960,6737, 6096,5150,4036,2980,2242,1957,2000,2172,2358,2429, 2204,1548,389,-1154,-2709,-3757,-3979,-3384,-2213,-763, 788,2357,3708,4504,4739,4709,4506,3842,2389,331, -1674,-3057,-3741,-3865,-3574,-3151,-2944,-3169,-3757,-4376, -4633,-4449,-4038,-3495,-2637,-1440,-254,536,938,1383, 2283,3654,5271,6885,8115,8690,8659,8173,7287,6150, 5103,4465,4253,4201,4076,3858,3600,3276,2821,2260, 1673,1192,1034,1426,2389,3606,4570,5067,5360,5760, 6130,5991,4974,3257,1462,158,-343,44,1079,2213, 2918,2990,2581,2003,1433,824,118,-645,-1391,-2000, -2342,-2431,-2434,-2450,-2581,-3016,-3741,-4429,-4618,-4034, -2815,-1479,-536,-222,-488,-1038,-1517,-1789,-1971,-2192, -2427,-2449,-1775,-78,2251,4263,5134,4570,2838,591, -1474,-2943,-3783,-4304,-4777,-5134,-5144,-4724,-3891,-2784, -1791,-1385,-1773,-2794,-4012,-4962,-5328,-5092,-4590,-4334, -4536,-4861,-4841,-4275,-3287,-2293,-1841,-2179,-3058,-3959, -4482,-4576,-4547,-4756,-5273,-5758,-5653,-4681,-3158,-1814, -1296,-1795,-2893,-3817,-4025,-3442,-2345,-1128,-176,394, 798,1349,2041,2522,2501,2209,2148,2566,3363,4325, 5289,6103,6556,6421,5708,4750,3926,3424,3247,3294, 3398,3475,3630,4062,4675,5040,4803,4020,2964,1888, 1103,996,1616,2611,3616,4463,5028,5076,4423,3184, 1826,885,732,1525,3129,5016,6508,7209,7185,6851, 6696,6888,7155,7250,7121,6700,5884,4730,3535,2726, 2567,2964,3565,3997,3906,3222,2260,1465,1076,1096, 1367,1612,1607,1283,808,573,887,1689,2698,3615, 4080,3756,2613,1036,-407,-1314,-1657,-1680,-1628,-1707, -2174,-3231,-4835,-6651,-8206,-9151,-9360,-8839,-7803,-6694, -5867,-5387,-5225,-5383,-5669,-5771,-5529,-5045,-4505,-3940, -3257,-2511,-1976,-1794,-1932,-2340,-3026,-4028,-5337,-6705, -7656,-7909,-7544,-6734,-5627,-4403,-3297,-2481,-2002,-1840, -2006,-2482,-3021,-3316,-3298,-3084,-2695,-2099,-1304,-377, 501,1205,1819,2549,3428,4289,4897,5096,4892,4443, 4076,4186,4901,5936,6850,7407,7520,7173,6464,5539, 4471,3359,2382,1601,875,-35,-1180,-2226,-2779,-2763, -2316,-1521,-457,686,1644,2230,2553,2927,3518,4210, 4738,4783,4062,2600,757,-992,-2315,-3142,-3597,-3734, -3538,-3117,-2671,-2460,-2778,-3719,-4915,-5797,-5965,-5299, -3894,-1967,165,2134,3713,5034,6299,7368,7883,7657, 6834,5887,5338,5348,5768,6429,7032,7116,6406,4997, 3295,1826,958,662,717,972,1402,2154,3368,4914, 6389,7290,7166,5973,4343,3117,2663,2765,2913,2695, 2163,1715,1661,2064,2762,3350,3467,3032,2209,1295, 586,126,-320,-998,-1986,-3180,-4181,-4488,-3877,-2544, -1024,-28,-15,-851,-2023,-2977,-3371,-3366,-3396,-3658, -3881,-3673,-2837,-1492,55,1420,2096,1779,912,412, 715,1390,1731,1358,407,-713,-1682,-2410,-2987,-3587, -4235,-4644,-4483,-3693,-2471,-1252,-624,-966,-2226,-4031, -5863,-7204,-7733,-7387,-6243,-4584,-2854,-1426,-523,-257, -665,-1761,-3449,-5257,-6505,-6848,-6357,-5308,-4085,-3091, -2588,-2656,-3086,-3563,-4008,-4513,-4968,-5162,-4979,-4287, -3071,-1610,-321,565,1038,1274,1428,1487,1496,1661, 2103,2873,3988,5164,5886,5893,5330,4525,3837,3531, 3651,4077,4624,5004,4892,4184,3146,2317,2172,2669, 3466,4309,4996,5227,4827,3945,2983,2391,2348,2644, 2938,3032,2794,2226,1561,1192,1417,2249,3305,4151, 4710,5124,5482,5932,6588,7318,7871,8057,7733,6884, 5702,4468,3485,3028,3132,3653,4346,4770,4545,3682, 2435,1100,92,-265,-71,376,885,1365,1733,1952, 2035,2134,2419,2910,3453,3843,3822,3265,2323,1165, -193,-1641,-2953,-3994,-4674,-4955,-4999,-5125,-5515,-6179, -6967,-7690,-8261,-8631,-8678,-8352,-7692,-6758,-5656,-4603, -3725,-3035,-2606,-2493,-2608,-2882,-3317,-3894,-4522,-4996, -5131,-5067,-5156,-5546,-6159,-6868,-7510,-7844,-7612,-6619, -4945,-3093,-1662,-921,-896,-1526,-2638,-4002,-5307,-6019, -5657,-4234,-2293,-515,747,1623,2321,2820,3005,2834, 2307,1558,921,765,1421,3037,5288,7547,9334,10338, 10361,9470,7934,6036,4074,2325,997,235,46,175, 285,66,-687,-1773,-2602,-2758,-2212,-1049,537,2164, 3459,4179,4326,4216,4095,3835,3187,2149,908,-201, -843,-932,-648,-342,-573,-1715,-3485,-5209,-6370,-6770, -6578,-6221,-5865,-5275,-4125,-2336,-247,1539,2702,3383, 3769,4054,4549,5471,6741,8010,8741,8558,7644,6570, 5690,5038,4482,3849,3066,2222,1479,1102,1370,2201, 3116,3648,3658,3433,3581,4464,5763,6702,6664,5576, 3916,2390,1460,1238,1542,2029,2530,3210,4118,4979, 5461,5290,4243,2318,-148,-2497,-3973,-4250,-3680,-2770, -1692,-508,566,1221,1191,401,-948,-2567,-4161,-5341, -5727,-5201,-3969,-2585,-1641,-1315,-1356,-1429,-1329,-995, -549,-44,557,1133,1535,1763,1801,1499,690,-634, -2120,-3062,-3069,-2474,-1833,-1394,-1196,-1233,-1553,-2213, -3088,-3939,-4683,-5333,-5795,-5973,-5829,-5309,-4508,-3709, -3022,-2376,-1850,-1626,-1831,-2500,-3429,-4252,-4732,-4824, -4557,-4136,-3854,-3829,-4018,-4282,-4458,-4501,-4486,-4416, -4342,-4487,-4911,-5339,-5444,-4953,-3645,-1666,469,2254, 3312,3346,2480,1334,696,1005,2085,3437,4740,5805, 6314,6133,5569,4952,4368,3804,3242,2712,2354,2263, 2425,2846,3515,4333,5220,5980,6221,5775,4899,3976, 3313,3066,3103,3192,3252,3174,2750,1966,1110,608, 833,1759,2983,4169,5151,5761,5968,5965,5962,6073, 6369,6746,7045,7209,7201,6947,6425,5664,4752,3934, 3439,3239,3220,3300,3341,3180,2696,1774,517,-630, -1216,-1070,-241,1085,2637,4159,5374,6021,6024,5490, 4563,3427,2154,683,-861,-2029,-2485,-2278,-1753,-1462, -1825,-2872,-4345,-6084,-7939,-9621,-10661,-10652,-9566,-7801, -5838,-4109,-3028,-2708,-2908,-3324,-3632,-3531,-3047,-2559, -2454,-2815,-3460,-4169,-4901,-5693,-6412,-6914,-7271,-7520, -7460,-6920,-5903,-4586,-3321,-2413,-1972,-2072,-2743,-3749, -4753,-5519,-5810,-5409,-4316,-2681,-790,867,1825,1898, 1176,5,-1046,-1529,-1265,-357,822,1907,2916,4146, 5758,7629,9271,10099,10013,9360,8344,7035,5670,4471, 3405,2263,913,-452,-1369,-1607,-1320,-767,-262,-74, -108,21,428,978,1599,2235,2727,2948,2935,2957, 3394,4242,4911,4671,3286,1243,-597,-1789,-2530,-3144, -3691,-4226,-4842,-5408,-5670,-5528,-5143,-4828,-4802,-4839, -4393,-3071,-904,1618,3831,5380,6341,6914,7241,7385, 7355,7203,6966,6570,5965,5348,4942,4675,4237,3400, 2278,1264,781,1007,1878,3114,4319,5199,5668,5735, 5461,4888,4023,3001,2130,1621,1645,2407,3812,5348, 6445,6792,6344,5314,3937,2358,805,-412,-1202,-1620, -1700,-1487,-1072,-497,40,282,188,-147,-589,-948, -1237,-1735,-2537,-3419,-4163,-4674,-4899,-4778,-4187,-3039, -1595,-320,539,913,733,87,-730,-1319,-1356,-867, -236,264,637,884,922,695,198,-446,-1036,-1569, -2150,-2698,-3081,-3304,-3359,-3232,-3079,-3154,-3624,-4545, -5712,-6695,-7080,-6566,-5078,-3070,-1313,-351,-395,-1395, -2953,-4448,-5395,-5611,-5178,-4348,-3425,-2751,-2655,-3195, -4074,-4952,-5654,-6175,-6573,-6798,-6675,-6153,-5376,-4377, -3157,-1841,-612,342,812,810,633,593,883,1626, 2794,4169,5393,6047,5971,5390,4656,3976,3455,3109, 2840,2583,2354,2139,2037,2307,3061,4107,5149,5989, 6557,6832,6662,5930,4792,3524,2409,1698,1456,1500, 1744,2255,2892,3275,3105,2442,1705,1381,1708,2666, 4068,5521,6616,7246,7468,7343,6990,6584,6232,5985, 5844,5750,5678,5620,5518,5331,4985,4318,3274,2017, 673,-690,-1812,-2238,-1663,-154,1853,3762,5117,5697, 5488,4764,3872,3072,2678,2831,3105,2913,2244,1450, 636,-303,-1406,-2500,-3366,-4121,-5180,-6604,-7968,-8896, -9349,-9448,-9288,-8779,-7743,-6269,-4698,-3278,-2231,-1771, -1762,-1896,-2093,-2444,-3026,-3920,-5099,-6356,-7373,-7758, -7247,-6155,-5158,-4645,-4656,-5092,-5689,-6150,-6317,-6099, -5524,-4897,-4471,-4205,-3961,-3618,-3072,-2477,-2178,-2309, -2625,-2648,-2057,-1046,-253,-115,-573,-1313,-1916,-2013, -1463,-302,1336,3193,4987,6696,8421,10061,11215,11374, 10280,8142,5547,3184,1591,862,683,771,1019,1254, 1269,1028,664,205,-489,-1464,-2292,-2329,-1307,468, 2439,4131,5248,5712,5548,4869,3941,3023,2138,1206, 315,-355,-727,-968,-1383,-2150,-3287,-4692,-6107,-7182, -7717,-7695,-7075,-5916,-4449,-2920,-1427,21,1497,2988, 4333,5442,6401,7164,7642,7882,7905,7541,6657,5320, 3870,2796,2339,2346,2638,3202,3950,4662,5100,5011, 4334,3378,2498,1856,1608,1879,2571,3486,4409,5185, 5763,6078,5965,5462,4876,4437,4216,4226,4242,3907, 3100,1947,553,-888,-1990,-2374,-1905,-843,335,1303, 1880,1837,1064,-251,-1745,-3062,-3989,-4621,-5095,-5240, -4770,-3681,-2216,-724,394,804,385,-730,-2141,-3283, -3690,-3166,-1889,-314,1080,2007,2268,1786,849,-14, -512,-722,-827,-879,-905,-1041,-1450,-2056,-2635,-3090, -3477,-3799,-4124,-4555,-5072,-5508,-5751,-5732,-5345,-4512, -3337,-2224,-1675,-1850,-2409,-2945,-3282,-3402,-3410,-3429, -3536,-3765,-4107,-4466,-4731,-4939,-5167,-5477,-5837,-6191, -6565,-6960,-7108,-6625,-5500,-4057,-2594,-1302,-315,361, 833,1203,1501,1761,2158,2947,4078,5218,6118,6608, 6400,5321,3610,1820,509,-28,202,1072,2433,3986, 5294,6039,6180,5954,5673,5421,5142,4912,4819,4714, 4421,3920,3325,2781,2405,2208,2144,2095,1864,1496, 1409,1917,2899,4036,5002,5555,5604,5213,4590,4197, 4559,5746,7355,8861,9750,9689,8762,7323,5670,4030, 2609,1605,1125,1049,1132,1315,1600,1725,1444,957, 714,1012,1854,2894,3756,4425,5051,5529,5586,5159, 4489,3848,3191,2236,999,-148,-932,-1337,-1502,-1842, -2909,-4889,-7426,-9877,-11574,-12051,-11276,-9567,-7356,-5075, -3016,-1300,-140,166,-553,-2159,-4158,-5862,-6783,-6872, -6256,-5167,-4065,-3487,-3620,-4181,-4822,-5510,-6335,-7204, -7857,-8117,-7973,-7366,-6233,-4769,-3473,-2795,-2820,-3279, -3698,-3712,-3288,-2732,-2316,-2026,-1754,-1508,-1447,-1735, -2365,-3106,-3641,-3706,-3019,-1426,877,3449,5838,7739, 9006,9598,9447,8596,7415,6349,5552,4927,4356,3843, 3511,3338,3030,2334,1274,61,-989,-1565,-1668,-1524, -1205,-621,190,1109,2023,2802,3368,3787,4105,4332, 4454,4360,3953,3324,2581,1701,685,-395,-1481,-2530, -3495,-4371,-5153,-5826,-6401,-6917,-7388,-7725,-7626,-6736, -5019,-2722,-77,2671,5141,6953,7881,7853,7036,5803, 4529,3525,3039,3208,3974,5038,6010,6643,6819,6372, 5227,3665,2240,1372,1176,1482,1990,2464,2788,2935, 3041,3362,4002,4834,5620,6144,6316,6174,5844,5502, 5258,4976,4389,3425,2230,991,-94,-712,-629,108, 1123,1918,2117,1648,642,-589,-1615,-2204,-2511,-2774, -2970,-2954,-2777,-2688,-2818,-2986,-2867,-2336,-1571,-900, -603,-835,-1534,-2439,-3211,-3549,-3250,-2327,-1048,238, 1262,1893,2038,1698,1028,272,-412,-940,-1335,-1704, -2017,-2047,-1695,-1235,-1138,-1696,-2834,-4235,-5575,-6586, -7025,-6778,-5944,-4761,-3494,-2337,-1425,-958,-1112,-1810, -2769,-3689,-4291,-4377,-3987,-3368,-2802,-2573,-2904,-3770, -4915,-6029,-6916,-7497,-7686,-7392,-6724,-6001,-5447,-5068, -4782,-4391,-3620,-2394,-858,834,2424,3561,4098,4200, 4186,4270,4393,4351,4097,3700,3075,2217,1497,1309, 1697,2371,2944,3209,3278,3401,3744,4424,5427,6474, 7193,7347,6815,5660,4184,2696,1465,868,1187,2212, 3360,4177,4534,4441,3878,2875,1656,621,168,576, 1891,3784,5686,7204,8269,8920,9188,9134,8759,7984, 6822,5518,4431,3832,3736,3906,3989,3694,2950,1896, 824,53,-213,16,576,1328,2251,3295,4253,4919, 5235,5227,4912,4417,4000,3914,4218,4721,4987,4529, 3143,1050,-1312,-3584,-5664,-7547,-9117,-10112,-10348,-9757, -8430,-6675,-4959,-3652,-2898,-2628,-2651,-2854,-3297,-3977, -4664,-5062,-4997,-4515,-3951,-3601,-3459,-3405,-3525,-4039, -5039,-6262,-7214,-7678,-7832,-7885,-7852,-7649,-7175,-6379, -5353,-4255,-3207,-2322,-1732,-1489,-1571,-1943,-2526,-3200, -3835,-4280,-4391,-4153,-3659,-3046,-2403,-1720,-921,-19, 878,1763,2777,4062,5528,6908,8001,8754,9050,8767, 8012,7054,5995,4810,3682,2878,2442,2194,1958,1676, 1344,872,211,-536,-1152,-1445,-1292,-671,343,1665, 3199,4661,5608,5779,5258,4335,3344,2592,2239,2226, 2329,2316,1986,1173,-200,-2074,-4341,-6851,-9223,-10784, -10961,-9698,-7491,-4996,-2641,-569,1082,2156,2646,2824, 3064,3535,4093,4471,4557,4498,4602,5091,5866,6598, 6978,6893,6380,5605,4781,4063,3463,2864,2155,1406, 805,498,560,1070,2092,3610,5401,7033,8046,8205, 7528,6280,4930,3936,3445,3384,3627,4002,4328,4365, 3882,2871,1670,725,282,280,438,464,303,32, -340,-812,-1321,-1818,-2312,-2775,-3132,-3217,-2859,-2111, -1300,-769,-691,-1038,-1555,-2080,-2679,-3334,-3768,-3748, -3272,-2467,-1461,-367,662,1340,1428,1018,400,-143, -442,-533,-575,-534,-300,-109,-311,-933,-1791,-2744, -3655,-4400,-4946,-5283,-5456,-5557,-5587,-5471,-5165,-4549, -3535,-2288,-1142,-446,-562,-1603,-3110,-4345,-4846,-4595, -3868,-3124,-2672,-2603,-2936,-3667,-4733,-6024,-7384,-8562, -9286,-9424,-9066,-8347,-7169,-5330,-2945,-599,1052,1769, 1836,1713,1696,1838,2139,2703,3623,4721,5523,5627, 4961,3645,1895,156,-959,-976,182,2096,4054,5521, 6408,6864,6896,6389,5379,4212,3325,2863,2777,3115, 3905,4909,5724,5992,5523,4400,2935,1497,403,-123, -66,397,1130,2068,3195,4507,5889,6981,7447,7352, 7159,7297,7748,8142,8155,7737,6939,5829,4572,3400, 2492,1994,1922,2121,2419,2666,2644,2238,1597,984, 576,476,785,1609,2997,4753,6478,7848,8616,8585, 7842,6660,5151,3324,1377,-446,-2106,-3645,-4972,-5928, -6473,-6766,-7006,-7202,-7271,-7143,-6737,-6088,-5324,-4491, -3604,-2920,-2766,-3141,-3745,-4279,-4622,-4729,-4546,-4054, -3378,-2749,-2435,-2677,-3573,-4989,-6702,-8506,-10053,-10861, -10701,-9662,-7979,-5964,-3971,-2321,-1299,-1059,-1545,-2545, -3776,-4868,-5503,-5577,-5157,-4385,-3494,-2737,-2283,-2157, -2248,-2404,-2555,-2596,-2234,-1143,758,3158,5479,7187, 8112,8402,8267,7814,7112,6296,5616,5263,5178,5114, 4850,4272,3374,2259,1062,-74,-947,-1309,-1029,-241, 688,1402,1772,1783,1502,1244,1466,2335,3588,4811, 5730,6272,6425,6097,5171,3669,1773,-214,-2058,-3746, -5359,-6756,-7679,-7983,-7723,-7077,-6279,-5449,-4547,-3565, -2501,-1310,-8,1224,2235,2930,3294,3435,3473,3493, 3687,4295,5456,7029,8568,9435,9212,7944,5963,3756, 1867,602,-54,-207,91,780,1807,3048,4274,5270, 5926,6160,6016,5705,5436,5312,5350,5393,5275,5026, 4826,4771,4840,4865,4609,4019,3265,2471,1639,842, 237,-56,-100,-173,-477,-871,-1119,-1208,-1262,-1374, -1572,-1813,-2001,-2044,-1883,-1567,-1319,-1335,-1544,-1691, -1652,-1635,-2024,-2964,-4068,-4655,-4247,-2854,-958,810, 2036,2571,2340,1384,48,-1104,-1594,-1343,-631,193, 828,932,330,-784,-2059,-3330,-4586,-5741,-6592,-6888, -6486,-5438,-4011,-2683,-1879,-1655,-1797,-2145,-2693,-3384, -4062,-4435,-4147,-3071,-1539,-215,276,-332,-1868,-3972, -6251,-8263,-9621,-10141,-9813,-8836,-7655,-6663,-5912,-5275, -4603,-3749,-2695,-1549,-399,747,1993,3441,4846,5575, 5262,4153,2788,1664,1088,1050,1330,1778,2343,2963, 3573,4064,4298,4238,3947,3538,3237,3250,3618,4263, 5074,5891,6521,6803,6557,5761,4720,3823,3246,2915, 2701,2544,2420,2222,1820,1291,890,817,1249,2312, 3906,5696,7363,8657,9390,9491,8972,7958,6733,5586, 4684,4219,4300,4730,5150,5347,5308,5078,4540,3461, 1835,93,-1255,-1972,-1956,-1091,650,3045,5608,7766, 9164,9724,9478,8519,7098,5545,4123,2899,1821,877, 79,-728,-1817,-3239,-4764,-6066,-6889,-7175,-7124,-6924, -6541,-5890,-5011,-4223,-3936,-4231,-4726,-4991,-4860,-4376, -3682,-2948,-2275,-1750,-1504,-1644,-2275,-3464,-5127,-6952, -8575,-9693,-10124,-9883,-9071,-7814,-6369,-5094,-4224,-3772, -3609,-3596,-3654,-3811,-4066,-4368,-4637,-4715,-4502,-4189, -4053,-4114,-4186,-4110,-3810,-3268,-2538,-1743,-1064,-560, -75,610,1607,2988,4725,6539,8030,8909,9038,8419, 7216,5704,4244,3191,2698,2655,2828,3031,3180,3226, 2960,2107,743,-692,-1795,-2372,-2340,-1715,-590,900, 2539,4157,5652,6805,7304,7042,6123,4742,3277,2134, 1421,872,53,-1327,-3172,-5076,-6676,-7690,-7918,-7439, -6570,-5585,-4629,-3762,-2981,-2387,-2099,-1971,-1690,-1141, -327,818,2314,4011,5655,6913,7551,7626,7389,7080, 6784,6303,5335,3903,2405,1220,510,248,336,693, 1294,2099,3081,4145,5010,5362,5212,4895,4735,4805, 4935,4923,4784,4733,4965,5501,6139,6530,6383,5582, 4188,2466,829,-400,-1004,-870,-157,670,1098,794, -269,-1663,-2711,-3037,-2762,-2257,-1761,-1295,-849,-531, -425,-576,-1108,-2056,-3101,-3806,-4049,-4000,-3856,-3680, -3362,-2755,-1873,-956,-281,50,158,168,81,-86, -129,103,535,906,877,228,-940,-2284,-3401,-3976, -3969,-3679,-3557,-3914,-4661,-5371,-5631,-5470,-5213,-5039, -4792,-4217,-3245,-2145,-1309,-955,-1111,-1695,-2420,-2937, -3153,-3226,-3315,-3556,-4073,-4978,-6324,-7930,-9463,-10648, -11294,-11177,-10231,-8635,-6614,-4327,-2014,-2,1369,1936, 1881,1515,982,399,82,332,1181,2402,3628,4496, 4778,4370,3324,2010,951,455,535,1094,2020,3196, 4398,5257,5502,5245,4831,4557,4596,4879,5224,5532, 5785,5821,5412,4540,3395,2211,1138,228,-414,-577, -96,1037,2622,4265,5625,6598,7146,7213,6918,6470, 5951,5393,4998,5054,5684,6673,7498,7743,7347,6450, 5219,3807,2292,763,-584,-1532,-1924,-1631,-680,656, 2093,3579,5091,6467,7506,8138,8408,8330,7792,6711, 5258,3721,2302,1141,268,-465,-1237,-2081,-2923,-3668, -4321,-4993,-5725,-6456,-7149,-7746,-7983,-7596,-6615,-5402, -4327,-3487,-2759,-2122,-1757,-1807,-2211,-2791,-3326,-3755, -4204,-4728,-5216,-5629,-6090,-6715,-7536,-8445,-9190,-9443, -8930,-7584,-5723,-3885,-2517,-1955,-2329,-3387,-4652,-5770, -6523,-6737,-6374,-5536,-4383,-3199,-2331,-1992,-2306,-3231, -4349,-5028,-4830,-3701,-1914,135,2182,4097,5722,6922, 7594,7551,6735,5518,4423,3775,3775,4445,5481,6421, 6883,6593,5465,3709,1767,144,-894,-1465,-1785,-1844, -1518,-751,408,1726,2920,3908,4831,5798,6784,7579, 7792,7139,5683,3770,1894,447,-514,-1244,-1982,-2761, -3387,-3662,-3758,-4121,-4902,-5741,-6196,-6135,-5728,-5180, -4516,-3683,-2740,-1740,-583,827,2422,4031,5422,6431, 7058,7339,7294,7087,6949,6860,6527,5595,3964,2031, 583,259,1052,2331,3342,3753,3734,3561,3399,3391, 3661,4164,4736,5262,5713,6091,6374,6488,6446,6339, 6226,6132,6027,5835,5493,4939,4041,2770,1359,109, -739,-994,-670,-150,64,-225,-768,-1101,-990,-700, -607,-843,-1307,-1739,-1798,-1378,-701,-140,-85,-750, -1929,-3203,-4309,-5077,-5285,-4848,-3840,-2382,-628,1094, 2350,2803,2412,1406,63,-1309,-2245,-2334,-1563,-259, 1087,1944,1985,1171,-375,-2391,-4455,-6162,-7198,-7346, -6639,-5392,-3987,-2737,-1868,-1449,-1496,-1978,-2681,-3222, -3324,-2851,-1850,-630,395,894,634,-558,-2662,-5428, -8384,-10868,-12332,-12570,-11669,-9897,-7644,-5343,-3464,-2447, -2367,-2726,-2918,-2660,-2011,-1106,-47,1054,2008,2696, 3216,3655,3863,3659,3112,2502,2138,2127,2250,2249, 2143,2116,2239,2453,2647,2869,3338,4171,5172,6060, 6738,7238,7554,7508,6825,5503,3937,2585,1641,1104, 924,1155,1800,2655,3444,4000,4307,4360,4173,3839, 3547,3583,4179,5278,6537,7559,8138,8345,8337,8160, 7772,7170,6396,5523,4646,3771,2809,1760,737,-154, -816,-1099,-870,-36,1397,3270,5293,7149,8552,9274, 9198,8342,6968,5527,4306,3354,2698,2369,2257,2261, 2275,2003,1067,-683,-3065,-5618,-7779,-9112,-9382,-8605, -7187,-5700,-4484,-3638,-3166,-3003,-3074,-3344,-3646,-3694, -3383,-2829,-2270,-2000,-2257,-3109,-4470,-6030,-7308,-8018, -8233,-8081,-7669,-7177,-6694,-6161,-5543,-4939,-4528,-4467, -4755,-5180,-5504,-5542,-5174,-4525,-3982,-3909,-4347,-5004, -5436,-5433,-5159,-4817,-4406,-3798,-2868,-1591,-208,849, 1365,1548,1833,2532,3614,4757,5666,6191,6305,6104, 5811,5626,5641,5814,5982,5975,5667,4932,3672,1991, 208,-1331,-2411,-2933,-2818,-1966,-383,1734,3989,5772, 6608,6574,6233,6008,5858,5472,4635,3431,2158,1140, 620,659,970,1006,335,-1116,-2992,-4688,-5775,-6260, -6373,-6333,-6302,-6320,-6294,-6034,-5256,-3752,-1683,494, 2401,3839,4776,5369,5809,6101,6140,5926,5633,5528, 5708,5940,5860,5206,3910,2278,970,465,728,1446, 2273,2947,3405,3751,4064,4348,4539,4519,4309,4143, 4259,4792,5769,7017,8188,8903,8852,7932,6388,4671, 3093,1771,734,46,-170,117,646,1061,1108,665, -181,-1207,-2224,-3007,-3177,-2476,-1054,586,1801,2118, 1519,283,-1355,-3174,-4817,-5880,-6065,-5348,-4061,-2663, -1430,-497,31,67,-343,-995,-1587,-1925,-1868,-1281, -230,928,1775,2116,1926,1289,366,-759,-2046,-3334, -4303,-4693,-4498,-4050,-3830,-4083,-4740,-5531,-6065,-5993, -5246,-3946,-2293,-638,607,1214,1212,739,-83,-1199, -2568,-4067,-5486,-6618,-7398,-7935,-8401,-8802,-8994,-8935, -8701,-8275,-7516,-6382,-5108,-4022,-3253,-2651,-1990,-1264, -709,-483,-356,156,1214,2471,3496,4104,4289,4111, 3659,2971,2074,1067,100,-600,-739,-130,1202,3041, 4989,6613,7644,7969,7582,6657,5472,4273,3308,2793, 2741,2953,3291,3703,4069,4215,4065,3676,3151,2512, 1843,1430,1535,2122,3027,4062,5042,5878,6622,7302, 7861,8250,8404,8224,7728,7074,6423,5814,5121,4123, 2762,1252,-124,-1071,-1320,-766,468,2066,3635,4865, 5718,6258,6503,6452,6168,5774,5481,5485,5750,6084, 6261,6037,5252,3942,2345,821,-346,-1230,-2198,-3508, -5060,-6492,-7427,-7691,-7403,-6786,-6028,-5223,-4371,-3445, -2528,-1830,-1570,-1894,-2719,-3708,-4455,-4774,-4735,-4533, -4340,-4228,-4265,-4601,-5290,-6210,-7200,-8104,-8743,-8906, -8401,-7178,-5442,-3659,-2414,-2156,-2927,-4359,-5904,-7082, -7612,-7483,-6939,-6206,-5368,-4491,-3680,-3085,-2830,-2912, -3154,-3245,-2906,-2016,-710,659,1688,2178,2317,2580, 3324,4455,5572,6363,6778,6954,6995,6934,6795,6541, 5972,4849,3129,1033,-935,-2166,-2319,-1586,-449,681, 1624,2407,3178,4014,4859,5501,5693,5419,4942,4498, 4101,3691,3221,2689,2235,2061,2168,2310,2138,1346, -197,-2360,-4796,-6948,-8277,-8640,-8306,-7597,-6716,-5727, -4580,-3259,-1925,-762,160,897,1632,2524,3569,4695, 5820,6803,7386,7319,6591,5510,4479,3686,3071,2595, 2277,2129,2149,2322,2551,2690,2652,2436,2161,1986, 2026,2400,3261,4577,6042,7304,8126,8419,8146,7411, 6563,6018,5872,5840,5598,5023,4135,3066,1958,843, -281,-1247,-1803,-1837,-1387,-640,154,749,960,707, 115,-520,-929,-1076,-1147,-1359,-1705,-1935,-1931,-1879, -2037,-2474,-3107,-3794,-4359,-4563,-4139,-3017,-1486,-49, 877,1133,778,37,-792,-1407,-1594,-1275,-523,534, 1646,2439,2481,1487,-456,-2856,-5136,-6900,-7968,-8289, -7877,-6764,-5093,-3235,-1638,-572,-109,-179,-589,-1068, -1364,-1361,-1219,-1279,-1721,-2448,-3321,-4318,-5536,-6960, -8313,-9244,-9650,-9613,-9165,-8375,-7329,-6129,-4998,-4262, -4095,-4361,-4723,-4765,-4202,-2917,-1026,1106,2949,4187, 4808,4825,4185,3014,1581,180,-897,-1396,-1239,-412, 980,2641,4194,5303,5780,5719,5438,5150,4846,4479, 4039,3625,3455,3668,4179,4774,5194,5204,4746,4011, 3268,2717,2421,2269,2095,1830,1551,1451,1791,2650, 3831,5084,6288,7424,8513,9477,10005,9724,8550,6731, 4731,3059,2087,1853,2077,2386,2507,2376,2060,1685, 1394,1319,1529,2030,2784,3733,4843,6044,7101,7705, 7657,7016,6110,5352,5004,5044,5208,5180,4769,3941, 2700,1041,-971,-3168,-5305,-7049,-8119,-8326,-7566,-5986, -4112,-2596,-1866,-2059,-2961,-4073,-4891,-5193,-5039,-4631, -4079,-3345,-2522,-1958,-2048,-2939,-4455,-6170,-7601,-8434, -8591,-8152,-7349,-6522,-5917,-5575,-5323,-4926,-4390,-4055, -4292,-5178,-6452,-7665,-8397,-8433,-7799,-6722,-5600,-4777, -4303,-3965,-3535,-2963,-2448,-2271,-2501,-2908,-3172,-3004, -2231,-918,611,2024,3259,4491,5784,6889,7498,7499, 6973,6140,5331,4791,4446,4050,3371,2323,994,-349, -1311,-1493,-758,591,2015,3140,3858,4186,4232,4116, 3894,3608,3292,3016,2986,3392,4172,5038,5623,5633, 4946,3678,2045,284,-1362,-2742,-3849,-4740,-5554,-6451, -7360,-7941,-7906,-7281,-6355,-5381,-4406,-3322,-2021,-480, 1228,2852,4093,4755,4833,4522,4181,4151,4556,5249, 5922,6271,6128,5472,4388,3067,1751,625,-162,-396, 96,1222,2608,3776,4410,4465,4130,3716,3555,3878, 4749,6020,7389,8559,9374,9747,9588,8788,7273,5125, 2702,525,-934,-1384,-852,271,1459,2303,2555,2078, 944,-529,-1907,-2782,-2907,-2250,-948,630,1887,2305, 1737,367,-1424,-3188,-4602,-5526,-5790,-5232,-3935,-2315, -934,-234,-337,-997,-1868,-2697,-3272,-3356,-2734,-1412, 283,1932,3229,3905,3723,2712,1206,-485,-2252,-4080, -5815,-7084,-7536,-7156,-6213,-5026,-3895,-3021,-2406,-1965, -1663,-1433,-1112,-585,56,473,292,-509,-1612,-2750, -3853,-4836,-5618,-6222,-6709,-7070,-7255,-7281,-7311,-7557, -8072,-8667,-9012,-8831,-8046,-6827,-5427,-3981,-2477,-918, 606,1915,2772,2986,2552,1728,912,356,90,57, 232,592,1050,1529,2031,2584,3147,3618,3915,4028, 4020,4057,4282,4637,4873,4790,4418,4008,3881,4222, 4966,5808,6324,6166,5306,3989,2549,1212,96,-662, -798,-99,1406,3412,5559,7545,9043,9738,9503,8557, 7382,6432,5881,5634,5416,5026,4551,4206,3978,3676, 3145,2348,1420,664,398,758,1666,2828,3844,4456, 4684,4767,4957,5405,6079,6840,7508,7926,8093,8114, 7882,7079,5592,3647,1578,-257,-1586,-2345,-2675,-2876, -3309,-4193,-5339,-6246,-6396,-5645,-4414,-3369,-2913,-3015, -3381,-3624,-3493,-3091,-2731,-2657,-2915,-3366,-3784,-4010, -4118,-4390,-5058,-6029,-6924,-7434,-7455,-6992,-6134,-5123, -4288,-3861,-3928,-4402,-5085,-5898,-6845,-7869,-8727,-9040, -8487,-7056,-5128,-3306,-2145,-1860,-2287,-3109,-4008,-4701, -5013,-4909,-4451,-3713,-2803,-1777,-544,1000,2771,4451, 5733,6557,7032,7246,7204,6894,6279,5299,4023,2721, 1762,1390,1570,2044,2497,2678,2465,1923,1318,1001, 1166,1742,2410,2899,3184,3410,3778,4421,5232,5858, 6029,5763,5271,4770,4398,4192,4056,3751,2943,1421, -698,-3072,-5339,-7269,-8736,-9555,-9475,-8426,-6649,-4647, -2900,-1724,-1164,-1037,-1045,-861,-204,1031,2667,4361, 5773,6775,7445,7770,7543,6646,5226,3642,2310,1505, 1250,1431,1917,2474,2835,2840,2455,1729,898,383, 625,1830,3779,5957,7946,9539,10540,10763,10207,9045, 7537,6042,4859,4139,3816,3657,3444,3122,2696,2079, 1223,255,-578,-992,-842,-270,425,981,1241,1185, 936,589,147,-353,-761,-959,-990,-1065,-1372,-1879, -2390,-2777,-3048,-3260,-3478,-3725,-3959,-4070,-3889,-3242, -2095,-733,422,1136,1536,1892,2297,2579,2528,2073, 1276,269,-894,-2245,-3780,-5359,-6678,-7398,-7382,-6700, -5450,-3766,-2032,-663,178,529,417,-96,-824,-1508, -2004,-2372,-2680,-2793,-2535,-1997,-1568,-1730,-2804,-4664, -6778,-8582,-9817,-10521,-10863,-10904,-10459,-9315,-7545,-5533, -3725,-2386,-1534,-1080,-921,-870,-697,-289,317,965, 1411,1466,1182,818,583,556,685,926,1321,1935, 2687,3396,3873,3936,3521,2788,2102,1923,2577,3943, 5443,6572,7163,7284,7066,6563,5724,4537,3137,1775, 697,128,153,702,1587,2519,3292,3927,4583,5362, 6286,7266,8058,8410,8261,7767,7147,6524,5850,5040, 4141,3322,2866,2992,3618,4304,4525,3946,2565,809, -615,-1088,-375,1274,3331,5285,6803,7699,8060,8125, 8087,7964,7653,7037,6186,5444,5136,5139,4966,4152, 2628,725,-1151,-2805,-4189,-5201,-5723,-5764,-5448,-4931, -4333,-3708,-3166,-2841,-2785,-2960,-3284,-3595,-3686,-3461, -3048,-2738,-2844,-3480,-4479,-5457,-6004,-5967,-5588,-5238, -5074,-5049,-5104,-5219,-5378,-5577,-5811,-6138,-6639,-7244, -7737,-7939,-7779,-7310,-6705,-6111,-5502,-4785,-3925,-3050, -2457,-2445,-3101,-4338,-5894,-7223,-7672,-6921,-5155,-2863, -577,1448,3204,4657,5640,6059,5968,5513,4860,4149, 3530,3283,3559,4155,4707,4926,4646,3890,2882,1844, 873,74,-361,-198,657,1941,3126,3763,3722,3206, 2648,2445,2720,3440,4514,5774,7007,7969,8341,7846, 6475,4484,2265,144,-1818,-3662,-5224,-6231,-6580,-6437, -6153,-6055,-6201,-6414,-6499,-6309,-5696,-4591,-3013,-1041, 1034,2815,4028,4626,4718,4577,4499,4617,4917,5303, 5650,5876,5920,5587,4659,3145,1307,-443,-1686,-2130, -1711,-570,1003,2653,4117,5247,5908,6074,5948,5875, 6206,7145,8498,9706,10207,9798,8693,7223,5587,3890, 2307,1066,323,182,596,1280,1903,2271,2303,1933, 1157,107,-929,-1626,-1782,-1324,-331,896,1925,2444, 2348,1672,499,-1097,-2990,-4761,-5850,-5975,-5331,-4420, -3742,-3406,-3137,-2689,-2079,-1445,-867,-299,423,1368, 2407,3326,3858,3713,2749,1010,-1316,-3785,-5795,-6989, -7314,-6859,-5812,-4476,-3172,-2147,-1466,-1044,-887,-1163, -1898,-2813,-3453,-3401,-2539,-1145,245,1166,1363,841, -218,-1732,-3707,-5998,-8254,-10037,-10994,-11057,-10511,-9705, -8860,-8107,-7452,-6748,-5829,-4688,-3465,-2361,-1555,-1121, -1047,-1204,-1296,-1098,-661,-147,350,821,1333,1952, 2549,2821,2516,1675,660,-46,-193,182,935,1933, 3064,4225,5291,6118,6627,6818,6635,6050,5181,4297, 3725,3659,3939,4102,3698,2559,987,-321,-685,103, 1770,3754,5523,6801,7556,7805,7601,7067,6386,5764, 5385,5285,5409,5696,6067,6359,6356,5880,4885,3519, 2053,784,8,-171,88,562,1213,2141,3374,4753, 5936,6643,6896,6924,6926,7038,7298,7604,7792,7699, 7232,6439,5467,4423,3321,2140,833,-641,-2256,-3886, -5257,-6020,-5995,-5327,-4376,-3492,-2826,-2355,-2029,-1960, -2320,-3130,-4184,-5098,-5522,-5345,-4685,-3792,-2980,-2585, -2794,-3556,-4554,-5307,-5552,-5422,-5229,-5191,-5423,-5915, -6497,-7019,-7472,-7920,-8353,-8600,-8385,-7609,-6404,-5069, -3941,-3276,-3089,-3298,-3936,-5002,-6283,-7402,-7999,-7862, -6985,-5560,-3812,-1982,-313,981,1737,1976,1975,2094, 2563,3419,4429,5177,5432,5291,4922,4426,3893,3404, 3021,2797,2714,2693,2676,2573,2283,1793,1197,588, 59,-283,-332,104,1234,2999,4951,6541,7407,7578, 7360,6985,6459,5742,4931,4172,3535,2917,2085,817, -979,-3155,-5376,-7261,-8608,-9377,-9484,-8832,-7445,-5556, -3596,-2075,-1358,-1452,-1918,-2103,-1585,-349,1423,3554, 5782,7715,8935,9117,8175,6397,4346,2563,1305,514, -18,-359,-414,-79,558,1176,1415,1291,1196,1499, 2327,3568,5024,6518,8016,9461,10611,11090,10642,9305, 7400,5428,3871,2981,2704,2809,3092,3355,3398,3104, 2481,1549,440,-547,-1162,-1418,-1439,-1222,-610,482, 1803,2822,3138,2704,1770,693,-291,-1190,-2114,-3117, -4184,-5197,-5919,-6180,-6017,-5549,-4885,-4079,-3056,-1767, -346,974,2049,2786,3105,2946,2281,1197,-105,-1430, -2663,-3685,-4359,-4567,-4260,-3633,-3092,-2993,-3374,-4002, -4511,-4629,-4334,-3767,-3070,-2333,-1593,-854,-187,346, 750,982,917,474,-386,-1687,-3326,-5078,-6771,-8375, -9860,-11028,-11564,-11217,-10041,-8359,-6643,-5344,-4695,-4555, -4580,-4558,-4487,-4441,-4408,-4167,-3405,-1984,-108,1768, 3102,3546,3090,1956,480,-873,-1627,-1533,-731,321, 1189,1707,1944,2090,2417,3119,4099,5066,5791,6213, 6421,6522,6430,5911,4881,3580,2413,1690,1468,1599, 1936,2354,2735,3017,3249,3509,3865,4377,4959,5439, 5762,6031,6390,6902,7460,7819,7764,7229,6357,5451, 4788,4434,4239,3942,3316,2372,1354,536,111,201, 766,1641,2646,3657,4614,5534,6381,7017,7297,7190, 6843,6628,6891,7641,8490,8926,8529,7180,5123,2816, 674,-1068,-2386,-3317,-3832,-3916,-3692,-3329,-2961,-2663, -2454,-2361,-2515,-3007,-3705,-4342,-4717,-4788,-4677,-4535, -4352,-4056,-3638,-3130,-2588,-2186,-2136,-2488,-3132,-3911, -4755,-5716,-6801,-7823,-8541,-8821,-8601,-7932,-7001,-5999, -5079,-4434,-4264,-4653,-5474,-6341,-6763,-6560,-5990,-5494, -5339,-5489,-5676,-5700,-5574,-5369,-5064,-4604,-3865,-2690, -1052,809,2509,3723,4301,4282,3802,3088,2408,2029, 2206,3078,4469,5825,6552,6448,5757,4827,3752,2399, 768,-804,-1786,-1793,-851,578,1983,3106,3885,4312, 4452,4422,4349,4433,4954,6106,7739,9292,10018,9416, 7545,4929,2218,-160,-2117,-3694,-4810,-5333,-5326,-5122, -5122,-5518,-6119,-6591,-6744,-6556,-6051,-5249,-4090,-2498, -533,1592,3589,5170,6174,6648,6728,6531,6148,5620, 4997,4428,4015,3574,2771,1464,-122,-1448,-2031,-1806, -1026,48,1246,2503,3833,5204,6488,7502,8124,8358, 8359,8299,8222,8138,8065,7938,7594,6936,6016,4984, 4015,3220,2635,2218,1844,1425,1016,676,321,-113, -496,-624,-356,336,1335,2429,3397,4008,4087,3608, 2607,1104,-776,-2833,-4825,-6489,-7592,-7981,-7503,-6101, -4022,-1741,212,1408,1713,1383,867,504,344,212, -3,-166,-75,190,372,193,-480,-1569,-2792,-3812, -4443,-4704,-4700,-4545,-4297,-4028,-3794,-3511,-3071,-2402, -1468,-354,685,1438,1918,2216,2283,1928,902,-928, -3411,-6061,-8170,-9199,-9148,-8449,-7586,-6868,-6508,-6585, -6990,-7496,-7818,-7752,-7318,-6661,-5831,-4779,-3537,-2253, -1160,-405,31,312,571,883,1204,1419,1391,1015, 286,-599,-1286,-1466,-1082,-277,768,1960,3267,4574, 5691,6465,6800,6613,5903,4824,3711,2999,2954,3474, 4178,4630,4564,4035,3337,2759,2386,2186,2138,2299, 2775,3580,4601,5695,6663,7287,7485,7355,7066,6811, 6722,6782,6884,6839,6401,5428,4144,2975,2250,2021, 2060,2095,1976,1693,1368,1263,1584,2251,3032,3828, 4705,5721,6807,7763,8404,8726,8822,8729,8448,7920, 7115,6137,5162,4211,3141,1818,267,-1275,-2429,-2950, -2913,-2581,-2229,-1999,-1852,-1745,-1780,-2189,-3126,-4534, -6042,-7093,-7291,-6577,-5171,-3386,-1546,-7,855,738, -396,-2274,-4361,-6096,-7201,-7782,-8032,-7943,-7409,-6470, -5421,-4740,-4815,-5652,-6820,-7705,-7892,-7370,-6444,-5514, -4903,-4722,-4866,-5204,-5753,-6571,-7492,-8073,-7878,-6862, -5423,-3966,-2614,-1288,-10,947,1254,836,41,-553, -499,350,1855,3681,5397,6603,7066,6771,5867,4571, 3211,2179,1736,1853,2199,2296,1831,930,42,-485, -604,-417,93,1083,2611,4439,6153,7444,8241,8604, 8587,8194,7464,6490,5405,4337,3408,2618,1891,1112, 86,-1435,-3499,-5725,-7539,-8563,-8768,-8366,-7567,-6544, -5479,-4518,-3662,-2793,-1813,-715,459,1737,3189,4766, 6261,7466,8218,8290,7554,6087,4123,1975,16,-1391, -2054,-1988,-1394,-523,413,1261,1931,2436,2829,3143, 3537,4225,5264,6521,7790,8794,9318,9365,9105,8695, 8148,7374,6350,5259,4357,3790,3530,3411,3157,2533, 1528,308,-894,-1805,-2157,-1771,-619,1104,3040,4754, 5870,6182,5672,4374,2311,-329,-3060,-5297,-6641,-6974, -6439,-5402,-4254,-3229,-2392,-1716,-1174,-796,-620,-675, -904,-1079,-944,-428,277,905,1204,1046,501,-208, -826,-1237,-1561,-2079,-3003,-4248,-5539,-6559,-7006,-6696, -5664,-4158,-2477,-836,622,1745,2351,2296,1598,508, -593,-1436,-1979,-2305,-2535,-2820,-3374,-4383,-5765,-7148, -8165,-8663,-8713,-8524,-8318,-8148,-7902,-7521,-7091,-6701, -6350,-5951,-5398,-4603,-3471,-1972,-332,1039,1777,1763, 1131,173,-863,-1805,-2426,-2502,-2043,-1273,-375,636, 1784,2985,3989,4510,4460,4046,3675,3668,4017,4440, 4673,4635,4371,4029,3787,3702,3691,3679,3633,3474, 3109,2510,1824,1356,1469,2323,3729,5244,6445,7178, 7576,7789,7786,7404,6613,5629,4821,4485,4634,5024, 5315,5253,4766,3962,2968,1879,815,-32,-419,-236, 450,1471,2661,3873,5013,6026,6857,7409,7609,7505, 7341,7470,8045,8702,8788,7902,6222,4301,2651,1449, 568,-137,-640,-739,-347,308,733,465,-652,-2396, -4300,-5910,-6954,-7345,-7105,-6288,-4979,-3391,-1943,-1058, -869,-1180,-1672,-2189,-2742,-3367,-4008,-4589,-5083,-5494, -5865,-6253,-6674,-7054,-7273,-7269,-7071,-6795,-6521,-6171, -5645,-5082,-4854,-5275,-6335,-7691,-8857,-9395,-9051,-7900, -6349,-4927,-4029,-3764,-3984,-4397,-4717,-4759,-4473,-3833, -2782,-1327,213,1378,1923,2010,2004,2180,2575,3071, 3608,4232,4908,5488,5824,5823,5365,4326,2692,702, -1181,-2481,-2896,-2388,-1147,507,2259,3795,4802,5164, 5104,4994,5123,5540,6113,6689,7207,7614,7845,7809, 7302,6122,4258,1940,-490,-2622,-4175,-5168,-5795,-6220, -6478,-6617,-6751,-6985,-7291,-7457,-7173,-6229,-4618,-2515, -197,2106,4210,5882,6893,7184,6904,6292,5521,4569, 3382,2043,790,-116,-542,-563,-376,-165,-51,-34, 41,378,1052,1977,3000,4015,4969,5842,6647,7395, 8018,8420,8549,8482,8383,8388,8440,8285,7649,6417, 4671,2720,974,-288,-1022,-1316,-1227,-786,5,1123, 2469,3828,4878,5338,5111,4307,3172,1963,820,-299, -1487,-2681,-3725,-4506,-4941,-4935,-4445,-3585,-2599,-1757, -1236,-1034,-1121,-1452,-1896,-2255,-2341,-1994,-1144,118, 1548,2826,3515,3230,1846,-381,-2903,-5094,-6557,-7212, -7136,-6454,-5328,-3966,-2645,-1615,-900,-397,-101,-80, -283,-486,-414,29,584,820,465,-395,-1480,-2533, -3440,-4226,-4947,-5631,-6291,-6903,-7412,-7835,-8241,-8652, -9013,-9203,-9065,-8475,-7448,-6067,-4455,-2811,-1472,-790, -868,-1395,-1869,-1958,-1680,-1284,-1039,-1072,-1293,-1506, -1517,-1206,-564,287,1170,1981,2725,3398,3890,4041, 3848,3521,3324,3371,3598,3885,4200,4588,4993,5156, 4774,3805,2605,1679,1309,1441,1842,2337,2911,3665, 4661,5778,6698,7093,6868,6278,5760,5632,5912,6377, 6751,6822,6560,6083,5533,4934,4199,3322,2453,1748, 1228,840,595,567,791,1215,1734,2358,3215,4461, 6043,7660,8939,9623,9591,8870,7690,6433,5427,4773, 4421,4323,4451,4727,4966,4917,4354,3208,1653,15, -1352,-2309,-2941,-3415,-3850,-4257,-4542,-4579,-4394,-4193, -4179,-4341,-4452,-4229,-3533,-2451,-1275,-350,45,-277, -1422,-3267,-5389,-7224,-8326,-8484,-7755,-6430,-4947,-3751, -3223,-3516,-4466,-5714,-6949,-7994,-8714,-8974,-8665,-7897, -6989,-6245,-5781,-5584,-5580,-5748,-6108,-6579,-6886,-6705, -5904,-4593,-3055,-1714,-957,-930,-1418,-1924,-1967,-1382, -308,1034,2534,4093,5499,6500,6946,6797,6075,4858, 3310,1714,405,-357,-517,-236,233,664,975,1204, 1436,1719,2064,2513,3157,4079,5244,6506,7647,8467, 8794,8560,7926,7185,6547,6024,5441,4559,3242,1553, -261,-1980,-3545,-5039,-6500,-7823,-8803,-9214,-8977,-8173, -6944,-5432,-3779,-2135,-565,959,2475,3870,4934,5554, 5820,5871,5738,5381,4738,3739,2401,929,-338,-1097, -1216,-775,-37,705,1263,1582,1714,1758,1792,1903, 2228,2899,3990,5478,7245,9118,10846,12086,12476,11853, 10355,8312,6110,4125,2595,1550,924,647,696,1002, 1430,1848,2206,2525,2849,3211,3620,4045,4392,4463, 4010,2907,1253,-610,-2151,-2937,-2971,-2594,-2136,-1760, -1587,-1733,-2215,-2910,-3611,-4094,-4217,-3903,-3135,-1981, -581,852,2047,2726,2756,2190,1193,-26,-1253,-2334, -3235,-4010,-4686,-5192,-5378,-5147,-4549,-3777,-3052,-2438, -1868,-1241,-539,139,594,628,222,-420,-966,-1168, -966,-492,-17,167,-151,-1058,-2551,-4452,-6373,-7871, -8734,-9057,-9106,-9062,-8903,-8475,-7711,-6766,-5888,-5250, -4870,-4581,-4141,-3432,-2574,-1905,-1749,-2126,-2669,-2940, -2738,-2163,-1510,-1027,-750,-526,-184,333,945,1486, 1843,2024,2171,2470,3005,3722,4484,5067,5218,4861, 4202,3559,3126,2934,2898,2935,2969,2957,2905,2902, 3054,3342,3620,3751,3781,3985,4637,5714,6871,7674, 7875,7514,6863,6222,5783,5587,5573,5694,5915,6168, 6217,5768,4643,2897,884,-835,-1802,-1841,-1001,536, 2494,4527,6298,7581,8245,8303,7851,7025,6032,5164, 4718,4832,5452,6404,7455,8266,8512,8001,6749,4996, 3177,1756,967,706,672,617,373,-219,-1344,-2984, -4781,-6207,-6855,-6582,-5525,-3984,-2353,-1094,-495,-476, -755,-1210,-1951,-3067,-4369,-5457,-5963,-5784,-5088,-4194, -3451,-3166,-3496,-4358,-5387,-6159,-6496,-6530,-6528,-6652, -6882,-7109,-7290,-7478,-7711,-7883,-7886,-7724,-7456,-7030, -6310,-5312,-4353,-3850,-3955,-4442,-4905,-5085,-4953,-4594, -4037,-3189,-1978,-457,1172,2661,3777,4369,4451,4240, 4051,4059,4234,4369,4225,3683,2828,1851,919,152, -375,-621,-572,-235,383,1284,2406,3540,4428,4929, 5113,5209,5475,6020,6732,7413,7950,8356,8650,8708, 8288,7255,5637,3551,1164,-1269,-3495,-5323,-6632,-7392, -7715,-7784,-7717,-7486,-7011,-6252,-5236,-3957,-2403,-664, 1087,2711,4144,5280,5983,6107,5578,4486,3113,1847, 1031,798,1029,1448,1790,1913,1786,1374,665,-242, -1113,-1691,-1733,-1063,359,2398,4785,7208,9311,10746, 11332,11208,10723,10084,9281,8203,6836,5245,3564,2048, 1031,744,1138,1939,2829,3609,4227,4655,4784,4474, 3727,2757,1848,1207,942,1055,1395,1721,1805,1535, 895,-35,-1139,-2291,-3361,-4210,-4719,-4768,-4360,-3630, -2722,-1715,-733,21,368,312,130,201,643,1195, 1395,904,-314,-2000,-3745,-5119,-5798,-5729,-5166,-4463, -3778,-3040,-2197,-1385,-895,-904,-1327,-1891,-2247,-2125, -1455,-426,588,1249,1405,1150,670,92,-609,-1576, -2899,-4453,-5963,-7216,-8126,-8668,-8833,-8683,-8344,-7944, -7499,-6913,-6102,-5144,-4336,-4036,-4366,-5011,-5423,-5253, -4595,-3790,-3113,-2592,-2115,-1667,-1344,-1234,-1325,-1559, -1801,-1833,-1422,-462,893,2293,3420,4170,4526,4456, 3992,3318,2705,2367,2367,2672,3185,3706,3966,3777, 3175,2396,1714,1362,1509,2205,3298,4447,5341,5807, 5865,5654,5405,5308,5393,5605,5915,6358,6988,7747, 8365,8491,7896,6571,4722,2668,779,-581,-1229,-1180, -541,601,2102,3675,4959,5645,5604,5023,4345,4035, 4359,5250,6326,7090,7247,6865,6309,5967,5989,6237, 6482,6599,6578,6446,6177,5712,4998,3988,2607,836, -1187,-3066,-4252,-4452,-3910,-3204,-2783,-2723,-2835,-2915, -2916,-2941,-3055,-3215,-3337,-3347,-3194,-2873,-2539,-2489, -2939,-3783,-4638,-5166,-5257,-4982,-4541,-4117,-3835,-3751, -3931,-4438,-5285,-6412,-7693,-8954,-9922,-10263,-9763,-8554, -7104,-5919,-5265,-5098,-5240,-5591,-6123,-6722,-7178,-7286, -6955,-6231,-5237,-4136,-3084,-2208,-1579,-1116,-671,-58, 809,1842,2864,3779,4552,5061,5097,4548,3565,2491, 1575,807,138,-369,-585,-395,188,948,1584,1933, 2023,2012,2091,2374,2871,3559,4448,5525,6699,7854, 8871,9601,9867,9537,8635,7320,5765,4047,2269,574, -987,-2541,-4259,-6089,-7688,-8690,-8973,-8650,-7875,-6759, -5355,-3706,-1920,-199,1201,2061,2315,2156,1938,1976, 2385,3053,3741,4242,4426,4213,3637,2818,1882,947, 110,-566,-1089,-1515,-1860,-2047,-1896,-1279,-121,1596, 3752,6072,8301,10242,11627,12145,11622,10159,8120,5999, 4217,3037,2510,2552,3013,3757,4618,5401,5897,5891, 5199,3843,2183,814,275,749,1945,3253,4094,4207, 3673,2795,1869,1044,279,-564,-1572,-2602,-3348,-3635, -3551,-3365,-3230,-3071,-2709,-2094,-1273,-285,768,1644, 1978,1601,658,-455,-1363,-1946,-2326,-2737,-3287,-3830, -4095,-3957,-3548,-3141,-2975,-3065,-3211,-3172,-2854,-2319, -1711,-1222,-984,-955,-876,-441,369,1238,1802,1933, 1673,1036,12,-1379,-2979,-4568,-5966,-7062,-7761,-7994, -7741,-7089,-6314,-5744,-5543,-5626,-5845,-6123,-6401,-6579, -6499,-6081,-5367,-4482,-3584,-2873,-2567,-2762,-3374,-4122, -4549,-4314,-3440,-2249,-1101,-224,318,594,801,1174, 1835,2636,3304,3688,3845,3913,3983,3970,3657,2930, 1976,1185,879,1121,1745,2486,3154,3669,4038,4254, 4278,4074,3649,3092,2638,2641,3406,4960,6997,9022, 10464,10845,10019,8339,6467,4985,4066,3534,3109,2659, 2232,1960,1868,1864,1831,1704,1517,1452,1831,2822, 4261,5695,6655,6919,6604,5981,5307,4713,4257,4057, 4316,5102,6256,7551,8767,9615,9725,8878,7233,5302, 3605,2341,1428,751,290,17,-176,-453,-927,-1577, -2334,-3117,-3764,-4081,-3966,-3467,-2791,-2219,-1965,-2067, -2459,-3045,-3733,-4415,-4894,-4913,-4386,-3522,-2684,-2099, -1808,-1792,-2128,-2963,-4308,-5888,-7304,-8245,-8586,-8402, -7894,-7339,-6962,-6834,-6873,-6936,-6944,-6899,-6854,-6838, -6806,-6706,-6555,-6388,-6209,-5980,-5676,-5280,-4789,-4196, -3427,-2353,-990,448,1640,2439,2941,3308,3565,3605, 3348,2814,2154,1588,1284,1286,1487,1666,1600,1211, 635,154,-5,156,473,855,1378,2131,3054,3994, 4824,5580,6375,7193,7909,8464,8929,9371,9729,9756, 9140,7700,5454,2593,-503,-3314,-5422,-6683,-7190,-7137, -6681,-5953,-5118,-4354,-3781,-3419,-3180,-2913,-2452,-1724, -724,442,1584,2507,3111,3468,3825,4368,5002,5352, 5077,4118,2750,1354,121,-955,-1944,-2856,-3608,-3944, -3447,-1834,754,3737,6426,8330,9254,9247,8579,7691, 6959,6511,6239,5950,5601,5370,5481,5887,6259,6238, 5734,4941,4176,3673,3492,3496,3461,3218,2818,2475, 2387,2645,3145,3618,3770,3503,2905,2110,1133,-76, -1451,-2778,-3814,-4406,-4437,-3832,-2683,-1283,-51,683, 858,657,363,153,-5,-271,-671,-1095,-1471,-1834, -2205,-2576,-2917,-3199,-3458,-3712,-3872,-3826,-3599,-3352, -3262,-3325,-3360,-3193,-2810,-2261,-1540,-659,277,1138, 1842,2357,2582,2292,1269,-426,-2360,-3903,-4630,-4584, -4237,-4085,-4379,-5059,-5922,-6722,-7285,-7509,-7381,-6991, -6474,-5908,-5342,-4851,-4571,-4636,-5062,-5648,-6073,-6119, -5758,-5099,-4360,-3797,-3556,-3568,-3611,-3430,-2961,-2339, -1764,-1278,-651,473,2190,4138,5638,6101,5360,3741, 1858,319,-466,-340,506,1661,2768,3676,4311,4523, 4118,3079,1713,504,-133,46,1091,2806,4760,6436, 7531,8096,8404,8575,8543,8230,7668,6959,6306,5829, 5489,5130,4580,3701,2477,1156,126,-297,-27,826, 2046,3411,4643,5463,5712,5441,4851,4228,3772,3519, 3444,3599,4116,5045,6187,7205,7838,8056,7946,7653, 7337,7048,6689,6174,5490,4665,3764,2882,2033,1168, 271,-579,-1234,-1604,-1744,-1714,-1541,-1323,-1287,-1659, -2536,-3751,-4899,-5541,-5496,-4898,-4068,-3310,-2761,-2378, -2097,-1891,-1827,-2032,-2532,-3169,-3690,-3995,-4190,-4479, -5018,-5771,-6575,-7238,-7646,-7822,-7877,-7855,-7711,-7437, -7110,-6827,-6682,-6671,-6742,-6910,-7255,-7757,-8197,-8230, -7645,-6517,-5116,-3689,-2410,-1390,-633,-20,526,990, 1289,1382,1375,1481,1810,2278,2707,2952,2880,2395, 1560,589,-201,-540,-370,139,697,1066,1224,1306, 1393,1438,1434,1538,2067,3240,5034,7170,9268,10896, 11661,11458,10542,9282,7922,6480,4832,2882,729,-1376, -3122,-4229,-4621,-4509,-4270,-4255,-4574,-4953,-4977,-4480, -3673,-3014,-2843,-3065,-3251,-2909,-1755,164,2475,4667, 6327,7228,7332,6700,5409,3510,1223,-1023,-2787,-3757, -3851,-3164,-1910,-405,943,1899,2537,3068,3642,4306, 4989,5562,5993,6368,6763,7126,7287,7126,6713,6247, 5879,5748,5920,6267,6485,6328,5736,4825,3866,3158, 2855,2947,3289,3740,4228,4669,4897,4810,4393,3619, 2468,1048,-415,-1656,-2434,-2678,-2622,-2524,-2403,-2036, -1246,-199,671,1069,1028,750,428,193,63,-62, -356,-947,-1797,-2596,-2980,-2794,-2230,-1734,-1718,-2283, -3264,-4435,-5487,-6060,-5932,-5187,-4061,-2754,-1349,95, 1389,2206,2294,1690,738,-34,-249,43,451,556, 100,-878,-2063,-3101,-3824,-4312,-4810,-5506,-6307,-6863, -6833,-6159,-5142,-4303,-4010,-4308,-5023,-5855,-6436,-6472, -5953,-5150,-4481,-4206,-4271,-4487,-4831,-5416,-6240,-6974, -7109,-6328,-4676,-2451,-97,1858,3032,3372,3087,2509, 1969,1647,1576,1753,2107,2540,2932,3173,3255,3266, 3220,2916,2172,1123,203,-140,225,1053,1957,2713, 3282,3762,4273,4909,5716,6746,7928,9043,9855,10198, 9972,9173,7938,6451,4886,3418,2188,1348,1012,1186, 1764,2540,3161,3324,3130,2978,3158,3587,3942,3994, 3822,3727,3952,4503,5154,5564,5516,5140,4819,4894, 5513,6523,7582,8422,8910,8921,8373,7279,5795,4200, 2819,1895,1528,1601,1867,2138,2350,2390,2027,1114, -242,-1730,-2964,-3746,-4177,-4464,-4654,-4660,-4440,-4010, -3479,-2988,-2649,-2501,-2526,-2633,-2670,-2512,-2174,-1856, -1807,-2158,-2848,-3781,-4832,-5770,-6373,-6650,-6792,-6985, -7178,-7161,-6859,-6460,-6287,-6564,-7291,-8223,-9049,-9553, -9624,-9228,-8440,-7454,-6451,-5539,-4698,-3874,-3135,-2630, -2329,-1971,-1301,-281,896,1925,2529,2488,1780,792, 152,257,960,1741,2093,1880,1372,935,724,618, 377,-102,-700,-1201,-1389,-1004,117,1821,3698,5383, 6715,7736,8566,9266,9815,10135,10101,9581,8515,6950, 5049,3063,1177,-510,-1828,-2544,-2617,-2242,-1775,-1593, -1934,-2849,-4211,-5705,-6908,-7484,-7285,-6271,-4520,-2253, 250,2723,4831,6204,6587,5988,4680,3045,1447,218, -469,-746,-915,-1131,-1309,-1282,-916,-230,564,1241, 1708,2047,2390,2834,3349,3861,4294,4630,4975,5474, 6114,6730,7180,7350,7127,6521,5800,5314,5129,5016, 4732,4341,4116,4201,4562,5124,5750,6146,6041,5343, 4257,3221,2572,2257,1911,1186,12,-1338,-2439,-3006, -2987,-2523,-1825,-1033,-161,775,1629,2137,2030,1201, -115,-1409,-2138,-1994,-1124,-42,705,735,-19,-1325, -2747,-3928,-4749,-5372,-6003,-6605,-6842,-6375,-5196,-3655, -2230,-1243,-734,-544,-437,-230,153,680,1264,1764, 1959,1709,1059,116,-1042,-2287,-3395,-4135,-4428,-4391, -4176,-3859,-3631,-3886,-4871,-6287,-7449,-7763,-7073,-5702, -4188,-2961,-2288,-2327,-3055,-4268,-5641,-6899,-7923,-8662, -8968,-8680,-7834,-6603,-5168,-3691,-2376,-1402,-923,-969, -1277,-1312,-647,703,2234,3341,3804,3868,3817,3662, 3230,2447,1543,917,798,1109,1554,1784,1552,860, -20,-655,-710,-169,745,1872,3276,5042,7002,8789, 10028,10582,10561,10077,9119,7698,6030,4525,3575,3254, 3299,3361,3237,2892,2397,1882,1519,1453,1743,2286, 2922,3579,4224,4730,4909,4620,3934,3183,2776,2924, 3578,4553,5656,6688,7444,7822,7876,7729,7407,6868, 6123,5265,4442,3861,3693,3916,4306,4564,4513,4144, 3535,2769,1978,1241,492,-416,-1517,-2689,-3696,-4305, -4513,-4493,-4411,-4356,-4319,-4187,-3780,-3038,-2177,-1540, -1313,-1422,-1658,-1875,-2104,-2526,-3298,-4274,-5004,-5120, -4675,-4092,-3833,-4129,-4971,-6190,-7478,-8410,-8713,-8502, -8177,-8088,-8356,-8809,-9164,-9263,-9062,-8549,-7786,-6921, -6057,-5147,-4064,-2772,-1450,-423,97,114,-217,-643, -902,-850,-466,210,1060,1882,2452,2638,2472,2053, 1392,471,-508,-1169,-1328,-1168,-1025,-1044,-1099,-927, -317,846,2603,4759,6870,8541,9640,10233,10399,10078, 9166,7716,6029,4474,3365,2887,3028,3488,3801,3578, 2676,1182,-674,-2595,-4336,-5758,-6818,-7427,-7452,-6817, -5619,-4067,-2405,-810,632,1875,2898,3680,4151,4180, 3635,2529,1128,-78,-681,-627,-270,-24,3,38, 338,892,1440,1701,1564,1122,612,344,622,1614, 3150,4754,5945,6577,6804,6837,6736,6465,6020,5432, 4806,4387,4446,5029,5854,6474,6562,6179,5748,5692, 6141,6889,7468,7370,6384,4743,2892,1181,-203,-1151, -1576,-1537,-1255,-896,-489,-21,413,680,678,424, 44,-300,-411,-126,551,1360,1968,2158,1935,1438, 768,-156,-1409,-2823,-4075,-4912,-5267,-5224,-4994,-4846, -5008,-5467,-5873,-5821,-5133,-3846,-2082,-45,1884,3203, 3516,2773,1411,93,-632,-657,-334,-112,-154,-323, -522,-837,-1455,-2509,-3973,-5592,-6922,-7555,-7319,-6362, -5027,-3680,-2499,-1537,-956,-1068,-2056,-3713,-5513,-6951, -7751,-7906,-7606,-7133,-6703,-6416,-6270,-6230,-6234,-6115, -5629,-4687,-3445,-2172,-1055,-141,639,1378,2115,2770, 3226,3386,3251,2989,2873,3039,3319,3362,2939,2068, 946,-185,-1139,-1827,-2221,-2220,-1678,-516,1170,3112, 4998,6603,7756,8382,8610,8729,8948,9207,9265,8896, 8079,6939,5593,4181,2934,2101,1794,1904,2202,2490, 2726,3005,3405,3825,3946,3529,2753,2117,2030,2518, 3296,4054,4632,5036,5340,5699,6195,6678,6866,6678, 6344,6116,6050,6018,5888,5658,5424,5210,5031,4954, 5052,5280,5423,5248,4730,4110,3598,3179,2647,1783, 427,-1404,-3398,-5024,-5850,-5746,-4918,-3753,-2665,-1994, -1858,-2081,-2385,-2623,-2757,-2760,-2658,-2545,-2494,-2452, -2282,-1977,-1782,-2010,-2714,-3610,-4405,-4982,-5424,-5806, -6126,-6364,-6622,-7038,-7704,-8620,-9657,-10612,-11242,-11281, -10531,-9091,-7365,-5836,-4776,-4129,-3679,-3282,-2914,-2572, -2240,-1907,-1579,-1257,-910,-468,96,689,1173,1527, 1823,2082,2240,2247,2028,1445,377,-1111,-2715,-3989, -4540,-4158,-2938,-1152,958,3236,5475,7353,8521,8739, 8063,6930,5938,5512,5677,6138,6605,6955,7094,6957, 6613,6210,5671,4670,2932,596,-1785,-3672,-4882,-5519, -5799,-5937,-6008,-5884,-5323,-4130,-2354,-429,1050,1806, 1957,1835,1726,1692,1507,981,257,-256,-230,288, 985,1542,1814,1688,1093,143,-765,-1174,-873,-46, 870,1555,1984,2289,2624,3157,3996,5006,5854,6220, 6051,5607,5146,4687,4157,3615,3305,3534,4473,5934, 7460,8656,9337,9473,9084,8207,6936,5479,4038,2731, 1655,932,627,598,643,699,796,783,293,-825, -2180,-3010,-2717,-1318,593,2267,3188,3240,2656,1836, 1148,789,731,801,834,748,440,-288,-1610,-3448, -5473,-7190,-8189,-8378,-7939,-7044,-5751,-4189,-2625,-1368, -569,-181,-85,-184,-352,-395,-120,543,1451,2301, 2826,2877,2275,850,-1299,-3667,-5545,-6443,-6367,-5736, -5013,-4489,-4175,-3887,-3481,-3043,-2722,-2610,-2722,-3068, -3562,-4041,-4406,-4745,-5286,-6141,-7089,-7777,-8099,-8202, -8195,-7985,-7401,-6488,-5558,-4828,-4224,-3553,-2757,-1935, -1246,-735,-215,638,2007,3696,5158,5802,5435,4331, 2958,1693,691,-112,-827,-1465,-1958,-2191,-2060,-1641, -1159,-715,-157,770,2252,4197,6235,8037,9425,10245, 10370,9848,8894,7750,6579,5413,4323,3510,3171,3290, 3658,3971,3955,3574,3022,2512,2151,1948,1833,1734, 1674,1719,1976,2554,3436,4400,5200,5660,5734,5491, 5111,4882,5082,5702,6390,6728,6538,5899,5079,4402, 4062,4078,4413,5023,5786,6508,6984,7103,6829,6124, 4960,3507,2052,754,-429,-1538,-2488,-3089,-3197,-2926, -2630,-2636,-2956,-3349,-3630,-3794,-3805,-3480,-2762,-1968, -1519,-1548,-1896,-2316,-2649,-2832,-2781,-2471,-2065,-1879, -2091,-2573,-3090,-3593,-4338,-5554,-7107,-8592,-9668,-10187, -10239,-10098,-9978,-9851,-9562,-9020,-8240,-7315,-6303,-5300, -4490,-3953,-3491,-2943,-2495,-2460,-2878,-3404,-3490,-2719, -1096,1015,3084,4498,4823,4058,2608,978,-493,-1803, -3098,-4334,-5162,-5162,-4116,-2240,-140,1658,3011,3969, 4543,4769,4793,4799,4908,5085,5233,5410,5783,6470, 7422,8395,9030,9089,8542,7458,6015,4459,2907,1278, -569,-2626,-4581,-5915,-6236,-5580,-4341,-3042,-2094,-1538, -1187,-963,-910,-960,-890,-521,124,829,1340,1552, 1456,1134,787,599,567,589,632,737,883,908, 611,-34,-775,-1183,-876,189,1632,2935,3824,4332, 4653,4951,5198,5197,4752,3829,2618,1599,1340,2125, 3812,5953,7997,9493,10178,9973,9013,7702,6530,5852, 5759,6023,6251,6129,5510,4346,2814,1290,87,-683, -1068,-1141,-921,-473,-19,146,-11,-287,-382,-93, 593,1493,2376,3088,3565,3870,4066,4018,3459,2172, 138,-2343,-4629,-6118,-6581,-6214,-5498,-4892,-4557,-4435, -4523,-4829,-5171,-5195,-4569,-3261,-1601,-37,1233,2258, 3113,3725,3847,3277,2155,857,-312,-1243,-1963,-2617, -3340,-4080,-4618,-4735,-4440,-4026,-3784,-3724,-3672,-3433, -2867,-2083,-1464,-1353,-1786,-2603,-3636,-4770,-5890,-6840, -7436,-7628,-7483,-7104,-6658,-6336,-6290,-6594,-7166,-7618, -7509,-6681,-5276,-3617,-2033,-632,692,1984,3088,3821, 4129,4150,4028,3761,3318,2769,2148,1343,265,-1052, -2428,-3540,-4077,-3916,-3076,-1663,72,1836,3429,4771, 5926,7030,8040,8696,8782,8286,7407,6521,5957,5747, 5741,5788,5780,5617,5227,4571,3746,2954,2320,1900, 1761,1880,2063,2119,2017,1883,1901,2183,2709,3422, 4238,5021,5657,6105,6353,6375,6172,5778,5289,4791, 4267,3748,3472,3715,4521,5696,6867,7588,7651,7212, 6620,6145,5821,5504,5068,4502,3778,2879,1910,977, 56,-934,-1996,-2946,-3478,-3435,-2989,-2449,-2072,-2029, -2335,-2770,-3102,-3243,-3243,-3212,-3174,-2992,-2500,-1657, -621,190,287,-426,-1522,-2462,-2986,-3217,-3520,-4184, -5265,-6692,-8296,-9781,-10864,-11361,-11176,-10419,-9359,-8236, -7196,-6311,-5617,-5160,-5058,-5387,-6029,-6700,-6994,-6509, -5079,-2967,-736,1084,2300,3104,3682,3912,3466,2172, 263,-1667,-3102,-3885,-4136,-3963,-3440,-2659,-1760,-920, -236,381,1084,1881,2627,3144,3342,3289,3179,3239, 3689,4670,6095,7677,9076,10032,10472,10378,9561,7855, 5526,3130,1157,-139,-820,-1206,-1635,-2264,-3047,-3705, -3886,-3493,-2716,-1862,-1295,-1229,-1460,-1618,-1525,-1186, -646,-4,587,927,903,701,640,846,1144,1326, 1218,717,-179,-1348,-2429,-2872,-2289,-776,1209,3119, 4462,5002,4757,3866,2617,1432,686,566,1102,2119, 3250,4093,4398,4277,4171,4478,5251,6261,7211,7902, 8361,8716,8916,8774,8223,7385,6463,5536,4500,3325, 2268,1678,1649,1909,1971,1451,295,-1232,-2691,-3562, -3495,-2536,-990,810,2596,4108,5159,5557,5168,4093, 2668,1364,559,220,-49,-536,-1222,-2042,-2970,-3951, -4894,-5723,-6406,-6986,-7387,-7360,-6714,-5500,-3946,-2372, -1024,108,1162,2124,2798,3032,2794,2284,1753,1260, 696,-14,-906,-2011,-3264,-4483,-5373,-5596,-5072,-4087, -3048,-2249,-1812,-1692,-1854,-2324,-2947,-3381,-3510,-3559, -3760,-4115,-4438,-4569,-4644,-5033,-5921,-7125,-8249,-8933, -9054,-8740,-8191,-7542,-6965,-6538,-6128,-5480,-4470,-3108, -1536,59,1610,3083,4267,4935,5045,4728,4107,3209, 1956,344,-1423,-2986,-4028,-4425,-4233,-3508,-2269,-727, 714,1792,2536,3128,3728,4414,5197,6069,6906,7438, 7526,7315,7023,6776,6586,6340,5903,5323,4760,4353, 4160,4093,3942,3534,2801,1783,712,-46,-191,326, 1277,2317,3292,4282,5259,6001,6333,6210,5619,4686, 3809,3399,3602,4156,4611,4753,4739,4830,5157,5666, 6113,6298,6280,6305,6531,6868,7081,6990,6574,5787, 4559,3054,1630,592,83,59,233,224,-211,-1105, -2186,-2953,-3125,-2908,-2758,-2985,-3473,-3750,-3499,-2923, -2455,-2297,-2319,-2209,-1714,-862,80,813,1119,895, 130,-1174,-2949,-4897,-6677,-8123,-9156,-9695,-9717,-9282, -8560,-7786,-7053,-6407,-6104,-6493,-7576,-8881,-9802,-9955, -9335,-8177,-6690,-4979,-3135,-1240,548,1907,2586,2648, 2284,1659,921,143,-689,-1587,-2576,-3565,-4213,-4094, -3119,-1637,-212,643,696,84,-805,-1460,-1439,-653, 582,1906,3103,4154,5128,6090,7032,7994,8989,9845, 10193,9749,8532,6928,5398,4177,3225,2349,1346,157, -1063,-2085,-2704,-2799,-2405,-1742,-1094,-683,-676,-1153, -2062,-3130,-3759,-3383,-1966,1,1925,3338,3918,3507, 2172,289,-1507,-2669,-2972,-2524,-1616,-598,264,897, 1385,1873,2393,2733,2679,2249,1690,1337,1439,1917, 2421,2632,2478,2135,1853,1733,1802,2204,3114,4452, 5966,7408,8553,9180,9146,8461,7404,6533,6327,6817, 7602,8140,8087,7436,6307,4783,3030,1328,-169,-1416, -2317,-2692,-2416,-1548,-430,562,1306,1891,2417,2941, 3399,3617,3567,3416,3321,3287,3219,2978,2505,1852, 923,-463,-2262,-4123,-5605,-6411,-6560,-6371,-6140,-5961, -5786,-5459,-4801,-3772,-2456,-955,596,2028,3230,4093, 4429,4091,3050,1489,-146,-1449,-2311,-2814,-3003,-2907, -2584,-2205,-2034,-2217,-2628,-3042,-3312,-3368,-3163,-2691, -2090,-1669,-1689,-2065,-2514,-2925,-3359,-3850,-4374,-4908, -5489,-6184,-6950,-7614,-8009,-8100,-8026,-8051,-8307,-8553, -8405,-7634,-6214,-4239,-1890,511,2570,3942,4571,4709, 4578,4169,3363,2132,668,-702,-1743,-2317,-2389,-2164, -2023,-2125,-2210,-1889,-1022,177,1331,2216,2891,3585, 4475,5451,6159,6344,6150,5944,5967,6262,6722,7182, 7497,7549,7178,6334,5139,3832,2669,1795,1216,894, 767,736,871,1453,2528,3643,4227,4096,3590,3316, 3639,4405,5151,5500,5292,4666,3982,3521,3356,3441, 3715,4169,4849,5665,6418,7020,7414,7505,7280,6898, 6470,5975,5381,4807,4501,4507,4464,3922,2814,1483, 394,-128,-167,-159,-436,-974,-1583,-2101,-2514,-2918, -3389,-3887,-4344,-4622,-4448,-3604,-2161,-489,955,1857, 2177,2068,1594,658,-792,-2626,-4522,-6083,-6986,-7115, -6588,-5770,-5145,-5106,-5738,-6773,-7770,-8454,-8870,-9217, -9632,-10136,-10620,-10845,-10530,-9466,-7560,-4929,-2053,354, 1732,2010,1547,742,-137,-832,-1201,-1365,-1545,-1803, -1987,-1932,-1653,-1330,-1053,-849,-838,-1225,-2049,-3051, -3747,-3717,-2897,-1521,98,1683,2978,3899,4551,5130, 5847,6845,8101,9418,10368,10440,9383,7443,5148,3093, 1788,1395,1623,1949,1948,1471,639,-386,-1520,-2632, -3525,-4047,-4107,-3686,-2880,-1788,-542,566,1271,1532, 1498,1212,619,-229,-1097,-1684,-1878,-1744,-1345,-804, -417,-421,-693,-882,-668,79,1237,2443,3260,3457, 3078,2314,1320,239,-630,-951,-627,196,1294,2466, 3527,4305,4642,4518,4155,3895,3982,4537,5554,6849, 8069,8918,9348,9536,9598,9357,8530,7075,5206,3264, 1618,479,-141,-364,-397,-464,-622,-732,-665,-461, -259,-54,351,1126,2197,3308,4199,4675,4699,4374, 3808,3076,2283,1547,873,137,-824,-2092,-3521,-4919, -6243,-7425,-8205,-8330,-7788,-6721,-5224,-3363,-1386,250, 1192,1496,1517,1556,1674,1761,1711,1465,928,23, -1073,-1935,-2294,-2254,-2134,-2231,-2632,-3186,-3569,-3483, -2918,-2249,-1918,-2073,-2540,-3015,-3226,-3089,-2795,-2661, -2819,-3112,-3277,-3320,-3592,-4431,-5824,-7438,-8887,-9935, -10572,-10824,-10590,-9818,-8633,-7214,-5634,-3946,-2211,-571, 786,1779,2395,2638,2616,2594,2671,2593,1984,693, -1011,-2534,-3357,-3412,-2971,-2370,-1828,-1312,-647,210, 1083,1730,1993,1933,1800,1899,2466,3548,4941,6328, 7501,8358,8729,8434,7532,6351,5316,4683,4349,3957, 3304,2523,1958,1826,1960,1996,1780,1437,1239,1456, 2199,3286,4326,4971,5042,4590,3928,3464,3356,3432, 3432,3316,3310,3608,4147,4732,5229,5626,5978,6259, 6425,6574,6852,7162,7217,6838,6124,5353,4741,4346, 4102,3839,3395,2805,2333,2144,2109,2006,1697,1036, -178,-1997,-4088,-5737,-6351,-5858,-4576,-2859,-1095,255, 904,939,728,611,641,601,273,-420,-1445,-2649, -3767,-4525,-4715,-4288,-3471,-2730,-2514,-3073,-4357,-6068, -7833,-9364,-10491,-11153,-11411,-11359,-11075,-10525,-9536,-7996, -6039,-3955,-2024,-560,118,-111,-1030,-2070,-2550,-2182, -1238,-245,380,466,67,-621,-1341,-1773,-1757,-1476, -1304,-1500,-2129,-3021,-3874,-4428,-4543,-4085,-2892,-942, 1526,4046,6111,7464,8055,7943,7402,6890,6696,6721, 6713,6566,6426,6500,6659,6501,5752,4418,2642,639, -1303,-2834,-3566,-3338,-2462,-1527,-932,-704,-646,-576, -498,-505,-529,-354,114,734,1235,1377,1023,113, -1264,-2731,-3704,-3732,-2770,-1210,351,1499,2186,2535, 2593,2352,1838,1142,416,-165,-440,-261,336,1100, 1771,2242,2487,2490,2292,2001,1754,1675,1857,2414, 3452,4911,6547,8104,9401,10233,10394,9889,8973,8045, 7327,6729,6055,5228,4267,3213,2109,1019,67,-609, -959,-1038,-869,-440,217,969,1584,1845,1784,1714, 1995,2846,4162,5485,6264,6189,5270,3840,2327,907, -570,-2251,-4004,-5521,-6495,-6788,-6587,-6189,-5738,-5192, -4450,-3535,-2631,-1834,-1010,-80,831,1575,2117,2429, 2454,2096,1334,326,-689,-1583,-2188,-2310,-1931,-1309, -834,-809,-1282,-2000,-2592,-2875,-2981,-3175,-3549,-3802, -3539,-2678,-1468,-299,378,204,-814,-2334,-3956,-5450, -6773,-7945,-8915,-9558,-9825,-9789,-9579,-9195,-8500,-7418, -6114,-4853,-3701,-2507,-1103,527,2158,3339,3680,3092, 1868,504,-551,-1135,-1313,-1305,-1353,-1494,-1502,-1170, -585,-139,-186,-670,-1164,-1291,-950,-194,902,2199, 3479,4497,5180,5695,6241,6820,7300,7540,7434,6995, 6356,5670,5000,4311,3540,2753,2147,1832,1840,2189, 2748,3153,3122,2758,2419,2420,2816,3397,3871,4055, 3907,3476,2991,2742,2910,3412,3930,4120,3919,3615, 3632,4267,5455,6833,7995,8660,8644,7896,6542,4951, 3676,3170,3510,4457,5619,6530,6796,6352,5436,4344, 3256,2178,1007,-297,-1654,-2958,-4075,-4822,-4975,-4311, -2826,-932,710,1642,1732,1085,60,-875,-1407,-1496, -1351,-1305,-1562,-2029,-2406,-2344,-1688,-678,129,202, -747,-2643,-5073,-7472,-9384,-10578,-11054,-10980,-10510,-9766, -8982,-8420,-8116,-7860,-7371,-6482,-5211,-3717,-2272,-1223, -835,-1111,-1798,-2468,-2649,-2120,-1117,-105,649,1129, 1344,1208,570,-630,-2253,-4015,-5595,-6681,-6970,-6265, -4625,-2468,-385,1237,2386,3216,3786,4034,3974,3891, 4193,5078,6443,7972,9246,9860,9581,8439,6744,5007, 3621,2689,2059,1504,830,-46,-1041,-1975,-2629,-2850, -2602,-1979,-1140,-250,559,1189,1504,1419,948,171, -763,-1600,-2091,-2195,-2087,-1948,-1759,-1375,-764,-87, 488,888,1013,776,265,-219,-362,-27,640,1286, 1629,1617,1395,1180,1025,786,363,-63,-220,58, 785,1796,2790,3506,3870,4071,4530,5571,7114,8696, 9854,10348,10216,9574,8531,7247,5998,4932,4018,3268, 2711,2271,1891,1534,1126,561,-186,-981,-1528,-1570, -1052,-67,1211,2497,3530,4374,5284,6257,6869,6629, 5414,3573,1692,235,-662,-1234,-1882,-2851,-4081,-5292, -6118,-6351,-6072,-5543,-4933,-4249,-3402,-2395,-1291,-212, 768,1491,1795,1604,977,133,-553,-740,-387,198, 639,648,197,-471,-1084,-1522,-1867,-2370,-3158,-3993, -4389,-4012,-2970,-1735,-811,-372,-286,-404,-638,-929, -1283,-1828,-2668,-3834,-5313,-6943,-8445,-9536,-10082,-10212, -10184,-10013,-9445,-8286,-6560,-4543,-2671,-1364,-773,-692, -710,-512,-113,269,485,502,350,165,77,11, -214,-710,-1388,-1995,-2241,-2048,-1549,-955,-560,-573, -941,-1266,-1051,-46,1526,3138,4399,5239,5786,6199, 6557,6803,6872,6773,6430,5715,4643,3458,2548,2236, 2536,3175,3824,4151,3861,2974,1920,1214,1168,1770, 2685,3511,4056,4274,4038,3239,2066,1030,655,1102, 2106,3324,4450,5258,5681,5853,5986,6275,6715,7005, 6765,5890,4631,3492,2992,3418,4694,6400,7924,8722, 8553,7517,5947,4315,2943,1747,463,-935,-2206,-3097, -3509,-3411,-2763,-1646,-348,820,1634,1864,1264,-148, -1969,-3554,-4344,-4078,-2891,-1245,317,1398,1787,1508, 778,-70,-793,-1424,-2204,-3288,-4614,-5972,-7148,-8138, -9080,-9962,-10537,-10618,-10216,-9441,-8375,-7135,-6032,-5419, -5336,-5436,-5338,-4959,-4482,-4053,-3544,-2669,-1322,224, 1610,2587,2901,2321,849,-1166,-3093,-4326,-4680,-4416, -3986,-3724,-3701,-3751,-3732,-3596,-3258,-2548,-1419,-10, 1476,2865,4063,4990,5534,5718,5834,6208,6948,7933, 8827,9195,8795,7695,6140,4423,2752,1199,-190,-1361, -2216,-2599,-2329,-1417,-159,1009,1708,1760,1330,767, 213,-407,-1118,-1761,-2085,-1920,-1360,-622,49,400, 255,-389,-1349,-2227,-2546,-2075,-1042,80,972,1533, 1718,1573,1278,1048,950,842,596,298,141,256, 590,819,603,-26,-603,-586,206,1544,3055,4445, 5569,6426,7174,7980,8792,9287,9185,8532,7715,7147, 6913,6786,6554,6148,5534,4603,3245,1516,-180,-1330, -1716,-1491,-997,-530,-163,291,1090,2317,3783,5055, 5707,5697,5407,5254,5313,5258,4657,3374,1668,-132, -1833,-3350,-4572,-5297,-5425,-5182,-4914,-4657,-4169,-3326, -2359,-1683,-1507,-1682,-1881,-1821,-1281,-249,942,1836, 2150,1925,1449,1069,877,633,71,-817,-1759,-2364, -2486,-2327,-2184,-2201,-2400,-2708,-2946,-2887,-2316,-1208, 72,1005,1347,1178,638,-229,-1500,-3263,-5414,-7624, -9465,-10535,-10616,-9885,-8783,-7717,-6951,-6518,-6226,-5862, -5280,-4407,-3341,-2321,-1537,-1051,-836,-748,-522,7, 750,1329,1273,497,-538,-1310,-1660,-1711,-1607,-1449, -1314,-1335,-1586,-1969,-2278,-2301,-1828,-777,728,2457, 4065,5170,5566,5390,5027,4892,5208,5819,6300,6338, 5897,5044,3904,2750,2026,2106,2860,3682,4045,3844, 3279,2711,2491,2712,3117,3344,3145,2504,1636,855, 423,521,1176,2205,3368,4493,5394,5899,5930,5563, 5022,4583,4377,4356,4427,4495,4467,4361,4359,4747, 5773,7363,9006,9996,9843,8449,6170,3630,1426,-101, -899,-1147,-1046,-622,92,849,1307,1247,664,-191, -1037,-1715,-2142,-2277,-2234,-2187,-2214,-2238,-2048,-1420, -350,849,1774,2185,2100,1699,1063,136,-1088,-2534, -4212,-6117,-7966,-9266,-9596,-8945,-7819,-6868,-6435,-6549, -7151,-8129,-9263,-10168,-10358,-9577,-7997,-5969,-3775,-1756, -325,263,116,-380,-755,-738,-383,46,226,-53, -750,-1689,-2709,-3632,-4345,-4866,-5223,-5382,-5266,-4743, -3735,-2450,-1313,-565,-91,391,1086,2031,3162,4439, 5787,7062,8160,9042,9612,9704,9150,7808,5730,3242, 888,-692,-1136,-646,143,730,979,1019,996,938, 735,312,-299,-924,-1243,-1029,-431,107,212,-180, -800,-1262,-1393,-1325,-1266,-1336,-1484,-1546,-1488,-1456, -1483,-1339,-781,168,1166,1753,1761,1497,1346,1390, 1410,1084,226,-960,-1992,-2410,-2018,-1035,13,787, 1344,1888,2484,3066,3597,4172,4916,5769,6562,7309, 8111,8924,9567,9844,9595,8756,7430,5882,4473,3425, 2649,1907,1063,149,-627,-964,-798,-425,-218,-233, -138,530,1901,3659,5393,6835,7720,7759,6874,5361, 3718,2303,1046,-293,-1689,-2830,-3426,-3400,-2971,-2543, -2451,-2872,-3718,-4591,-4991,-4741,-4005,-3079,-2195,-1405, -621,203,1017,1665,1966,1857,1487,1029,562,208, 120,212,177,-338,-1485,-2971,-4168,-4567,-4092,-3003, -1733,-656,86,537,832,1101,1300,1193,592,-512, -2006,-3682,-5319,-6778,-7973,-8762,-8976,-8570,-7803,-7188, -7010,-7088,-7056,-6751,-6212,-5516,-4683,-3690,-2667,-1939, -1703,-1772,-1731,-1243,-267,904,1790,1985,1312,-103, -1759,-2979,-3336,-2902,-2143,-1596,-1508,-1727,-1968,-1996, -1706,-1107,-249,783,1798,2653,3415,4221,5043,5717, 6065,6055,5859,5606,5161,4350,3265,2258,1751,2037, 3070,4500,5760,6261,5751,4517,3081,1861,1137,908, 926,917,813,751,915,1370,2066,2999,4168,5286, 5916,5916,5440,4664,3695,2653,1764,1424,1965,3345, 5174,6984,8336,8934,8758,8077,7337,6810,6353,5673, 4758,3813,2995,2368,1985,1832,1801,1728,1495,1157, 862,639,478,343,78,-469,-1272,-2215,-3146,-3843, -4053,-3589,-2363,-520,1559,3429,4665,4887,3875,1811, -668,-2710,-3754,-3905,-3670,-3475,-3523,-3859,-4405,-5117, -6020,-7073,-8163,-9161,-9892,-10208,-10107,-9638,-8852,-7872, -6881,-5969,-5068,-4000,-2707,-1398,-397,155,282,69, -234,-336,-254,-314,-822,-1801,-2873,-3571,-3754,-3658, -3648,-3936,-4413,-4743,-4773,-4651,-4495,-4187,-3456,-2080, -102,2104,4124,5805,7187,8223,8702,8405,7483,6481, 5836,5578,5449,5105,4273,2984,1587,536,149,329, 684,862,828,731,736,854,911,711,249,-314, -787,-1030,-1037,-838,-391,183,516,255,-584,-1665, -2559,-3021,-3071,-2781,-2195,-1405,-470,664,1967,3059, 3431,2826,1464,-46,-1140,-1635,-1611,-1248,-812,-508, -380,-329,-179,229,751,1005,843,561,671,1577, 3294,5429,7411,8729,9178,9013,8751,8687,8755,8690, 8215,7263,6097,5049,4200,3401,2434,1213,-132,-1385, -2325,-2657,-2120,-723,1150,2949,4248,5001,5467,5852, 6138,6181,5820,4940,3657,2336,1393,1013,950,724, 51,-1025,-2245,-3249,-3764,-3845,-3729,-3562,-3423,-3404, -3538,-3735,-3790,-3422,-2479,-1085,406,1644,2426,2763, 2747,2417,1821,1076,256,-606,-1383,-1973,-2429,-2825, -3140,-3254,-2955,-2109,-827,531,1470,1622,1059,289, -189,-253,-114,-141,-607,-1666,-3354,-5427,-7262,-8240, -8227,-7585,-6869,-6435,-6280,-6291,-6438,-6620,-6676,-6536, -6230,-5673,-4773,-3632,-2542,-1724,-1155,-638,-89,416, 783,842,383,-535,-1537,-2292,-2696,-2709,-2296,-1562, -871,-717,-1340,-2372,-3108,-3020,-2020,-438,1276,2827, 4038,4798,5113,5148,4995,4678,4252,3805,3504,3496, 3677,3789,3782,3866,4312,5216,6309,7009,6861,5757, 3928,1806,-139,-1515,-1978,-1382,-11,1636,3192,4430, 5194,5432,5179,4551,3713,2772,1828,1196,1214,1865, 2839,3888,4927,5984,7022,7761,7898,7427,6673,6090, 5979,6264,6548,6466,5869,4815,3559,2467,1838,1848, 2532,3610,4513,4751,4112,2702,875,-932,-2372,-3262, -3663,-3674,-3196,-2127,-699,614,1390,1464,1055,683, 692,984,1193,1054,602,87,-380,-891,-1484,-2086, -2636,-3147,-3727,-4536,-5561,-6565,-7390,-8073,-8716,-9366, -9965,-10338,-10288,-9670,-8431,-6764,-5063,-3614,-2442,-1422, -500,141,180,-499,-1545,-2372,-2468,-1707,-480,562, 979,589,-578,-2287,-4176,-5877,-7067,-7545,-7368,-6725, -5745,-4448,-2808,-900,999,2590,3714,4369,4714,5088, 5763,6702,7570,7944,7613,6792,5861,4977,4116,3308, 2630,2078,1584,1180,1045,1335,1865,2131,1761,806, -281,-888,-655,193,1085,1525,1348,728,15,-517, -795,-979,-1384,-2116,-2884,-3235,-2922,-2009,-807,321, 1144,1520,1381,902,478,400,616,810,682,212, -320,-644,-680,-540,-471,-651,-1029,-1349,-1333,-798, 199,1322,2170,2611,2855,3305,4222,5508,6836,8015, 8986,9699,10079,10052,9595,8808,7757,6351,4584,2687, 955,-344,-1006,-958,-375,371,903,1110,1214,1483, 1989,2717,3627,4571,5348,5796,5839,5453,4642,3494, 2282,1371,912,807,807,675,285,-376,-1313,-2415, -3364,-3883,-4017,-4062,-4299,-4786,-5194,-4987,-3810,-1794, 481,2321,3309,3426,2829,1714,440,-597,-1215,-1471, -1513,-1521,-1595,-1737,-1874,-1851,-1546,-1007,-386,209, 698,1019,1113,909,364,-374,-996,-1293,-1341,-1501, -2145,-3368,-4920,-6307,-7035,-6912,-6230,-5554,-5351,-5730, -6384,-6880,-6993,-6796,-6419,-5846,-4969,-3830,-2739,-2099, -1997,-2076,-1891,-1314,-556,82,438,462,49,-802, -1810,-2615,-2991,-2854,-2320,-1690,-1294,-1312,-1656,-1965, -1792,-925,510,2099,3388,4188,4592,4632,4161,3225, 2240,1714,1928,2764,3881,5038,6168,7156,7798,7917, 7450,6442,4993,3242,1477,83,-694,-781,-158,1124, 2756,4176,4860,4588,3636,2620,2041,1975,2151,2252, 2192,2140,2242,2481,2828,3351,4152,5267,6566,7780, 8611,8760,8074,6753,5219,3829,2861,2562,3027,4055, 5254,6216,6625,6399,5670,4671,3633,2649,1669,650, -302,-970,-1193,-1054,-865,-893,-1128,-1372,-1430,-1211, -827,-495,-330,-236,-26,375,837,1120,1089,749, 137,-699,-1612,-2330,-2582,-2374,-2119,-2337,-3304,-4983, -7112,-9190,-10691,-11347,-11216,-10565,-9650,-8616,-7511,-6380, -5281,-4335,-3713,-3506,-3586,-3721,-3635,-3024,-1790,-245, 999,1497,1249,634,-26,-741,-1719,-3089,-4748,-6367, -7538,-7973,-7634,-6729,-5640,-4687,-3856,-2853,-1444,331, 2215,3846,4940,5405,5387,5188,5112,5336,5870,6473, 6688,6247,5364,4487,3882,3462,2955,2186,1241,366, -144,-47,672,1667,2398,2541,2162,1629,1233,881, 339,-377,-1019,-1359,-1362,-1163,-921,-708,-621,-814, -1307,-1884,-2248,-2170,-1563,-574,496,1388,1902,1923, 1530,914,266,-332,-903,-1465,-1871,-1893,-1506,-928, -388,11,233,210,-123,-678,-1168,-1208,-500,998, 3003,5097,7014,8664,9916,10535,10376,9510,8268,7119, 6381,5940,5430,4525,3212,1748,495,-229,-277,216, 922,1512,1784,1736,1592,1691,2256,3215,4230,4916, 5039,4583,3713,2779,2197,2188,2571,2882,2796,2369, 1808,1079,-19,-1507,-3131,-4486,-5234,-5314,-5006,-4660, -4405,-4114,-3512,-2412,-882,709,1876,2272,1880,950, -224,-1381,-2240,-2565,-2318,-1646,-839,-334,-370,-738, -938,-685,-136,344,579,600,395,-81,-721,-1275, -1561,-1603,-1466,-1271,-1278,-1833,-3094,-4777,-6270,-7061, -7061,-6521,-5791,-5141,-4723,-4704,-5189,-6018,-6762,-6990, -6544,-5620,-4581,-3702,-3032,-2502,-2074,-1677,-1185,-613, -189,-156,-520,-1080,-1739,-2532,-3359,-3879,-3778,-3091, -2206,-1519,-1071,-621,9,759,1411,1776,1783,1470, 950,433,217,545,1456,2754,4169,5456,6483,7118, 7240,6827,6080,5345,4866,4602,4315,3881,3359,2792, 2110,1283,528,271,831,2113,3563,4512,4607,3948, 2837,1552,354,-471,-702,-257,794,2346,4200,6015, 7405,8113,8085,7387,6211,4929,3941,3437,3393,3666, 4049,4415,4852,5504,6272,6805,6779,6104,4928,3575, 2459,1868,1786,1951,2054,1863,1212,133,-999,-1696, -1749,-1334,-804,-477,-469,-692,-908,-907,-682,-460, -429,-515,-461,-94,549,1220,1538,1189,136,-1396, -2999,-4332,-5364,-6235,-7024,-7719,-8301,-8725,-8927,-8846, -8504,-8140,-8061,-8276,-8421,-8072,-7049,-5514,-3908,-2683, -2038,-1838,-1731,-1365,-613,338,1090,1224,581,-571, -1826,-3015,-4276,-5748,-7277,-8435,-8856,-8471,-7398,-5800, -3886,-1991,-500,396,852,1166,1537,1999,2564,3307, 4285,5421,6543,7470,8032,7987,7125,5496,3535,1841, 833,584,906,1579,2399,3126,3503,3363,2758,2008, 1472,1218,980,502,-71,-329,-73,441,763,633, 98,-681,-1537,-2248,-2563,-2346,-1700,-894,-104,706, 1494,1970,1861,1167,157,-784,-1334,-1348,-876,-164, 449,687,428,-317,-1330,-2108,-2193,-1652,-1035,-822, -1036,-1267,-1003,74,1998,4418,6693,8338,9274,9652, 9600,9193,8502,7640,6771,6043,5421,4729,3820,2759, 1820,1240,1065,1235,1634,2010,2205,2251,2152,1818, 1363,1151,1508,2397,3439,4188,4403,4119,3641,3350, 3421,3703,3903,3769,3125,1913,280,-1479,-3023,-4074, -4528,-4446,-4005,-3496,-3166,-3041,-2920,-2530,-1766,-799, 58,584,677,271,-604,-1704,-2617,-2986,-2649,-1705, -467,640,1245,1174,577,-148,-618,-627,-278,142, 423,492,294,-178,-784,-1292,-1576,-1704,-1895,-2316, -2996,-3869,-4777,-5442,-5597,-5258,-4684,-4173,-3962,-4101, -4494,-5022,-5644,-6239,-6596,-6550,-6062,-5258,-4325,-3312, -2166,-959,56,529,193,-827,-2073,-3219,-4214,-4962, -5194,-4666,-3378,-1621,193,1643,2325,1994,840,-622, -1883,-2554,-2398,-1480,-156,1070,1885,2363,2760,3190, 3643,4162,4794,5525,6271,6923,7340,7358,6821,5732, 4359,3102,2271,2016,2329,3000,3727,4220,4275,3921, 3385,2774,2053,1276,578,-13,-484,-601,-24,1402, 3407,5361,6687,7178,6944,6261,5533,5098,4985,4997, 4913,4668,4433,4394,4603,5013,5470,5723,5660,5483, 5442,5549,5606,5397,4811,3885,2773,1749,1156,1186, 1648,2083,2111,1665,991,389,-61,-487,-1025,-1747, -2493,-2853,-2411,-1156,486,1885,2595,2557,1956,1008, -45,-947,-1577,-1997,-2399,-2915,-3493,-3990,-4433,-4979, -5749,-6754,-7892,-8932,-9598,-9723,-9342,-8666,-7953,-7284, -6619,-5946,-5244,-4442,-3488,-2425,-1312,-203,791,1471, 1659,1406,867,0,-1396,-3268,-5168,-6580,-7220,-7087, -6442,-5625,-4925,-4527,-4392,-4240,-3799,-2956,-1777,-487, 674,1713,2789,3956,5131,6161,6843,7058,6848,6296, 5482,4611,3957,3681,3664,3575,3262,2938,2849,2962, 3099,3047,2681,2151,1827,1924,2292,2545,2301,1420, 157,-981,-1518,-1269,-497,291,709,617,62,-712, -1365,-1611,-1331,-615,248,901,1076,731,138,-305, -425,-328,-173,-28,79,112,-9,-376,-987,-1717, -2385,-2781,-2761,-2389,-1858,-1281,-665,142,1387,3137, 5195,7209,8769,9543,9496,8819,7753,6633,5797,5411, 5403,5479,5245,4586,3762,3125,2837,2858,3006,3083, 2941,2454,1642,810,285,161,456,1274,2589,4112, 5325,5786,5446,4651,3797,3192,2990,3043,2961,2444, 1438,57,-1442,-2702,-3434,-3529,-3147,-2635,-2283,-2164, -2253,-2435,-2466,-2189,-1678,-1195,-977,-1041,-1255,-1595, -2112,-2599,-2598,-1885,-760,192,643,761,838,867, 717,447,202,23,-103,-183,-242,-293,-349,-500, -870,-1531,-2389,-3192,-3739,-4094,-4387,-4561,-4428,-3930, -3272,-2818,-2811,-3270,-4179,-5553,-7111,-8239,-8382,-7441, -5761,-3871,-2186,-940,-325,-437,-1221,-2487,-3871,-4958, -5498,-5459,-4889,-3940,-2866,-1835,-947,-352,-109,-20, 117,264,223,-135,-787,-1573,-2350,-2866,-2710,-1702, -110,1589,2985,3879,4368,4718,5104,5522,5814,5755, 5295,4675,4188,4034,4284,4837,5449,5861,5864,5424, 4742,4040,3321,2459,1475,581,55,32,389,911, 1394,1665,1702,1739,2090,2887,4030,5223,6104,6460, 6304,5810,5246,4813,4495,4207,3949,3808,3922,4454, 5360,6347,7020,7054,6370,5217,3985,2979,2414,2355, 2665,3151,3632,3928,3969,3706,3002,1850,562,-523, -1350,-1937,-2188,-2005,-1357,-424,443,956,1058,877, 619,413,204,-28,-239,-510,-975,-1538,-1957,-2153, -2307,-2715,-3520,-4564,-5565,-6381,-7002,-7506,-8021,-8579, -9160,-9779,-10301,-10301,-9402,-7623,-5434,-3522,-2316,-1724, -1367,-1013,-694,-532,-562,-729,-1013,-1423,-1832,-2103, -2389,-3041,-4162,-5502,-6620,-7193,-7201,-6838,-6247,-5466, -4509,-3373,-2107,-858,237,1080,1618,1912,2159,2609, 3533,4989,6551,7583,7719,6945,5460,3716,2330,1752, 2024,2790,3594,4233,4669,4797,4529,3912,3040,2063, 1252,755,518,410,285,70,-98,-39,216,535, 818,944,821,377,-421,-1358,-1947,-1855,-1129,-68, 887,1324,1122,528,-11,-139,126,434,488,180, -503,-1395,-2156,-2671,-3089,-3417,-3446,-2948,-2001,-1042, -382,201,1103,2416,4003,5711,7352,8624,9128,8587, 7222,5690,4589,4239,4682,5599,6446,6809,6562,5815, 4827,3857,3036,2415,1977,1587,1111,586,157,41, 459,1440,2751,4093,5128,5569,5373,4738,3945,3242, 2765,2475,2232,1896,1410,837,268,-339,-1051,-1689, -2032,-2128,-2179,-2280,-2326,-2186,-1959,-1894,-2056,-2254, -2293,-2163,-2053,-2166,-2416,-2501,-2279,-1795,-1132,-399, 251,696,863,798,733,841,1072,1288,1349,1138, 689,110,-675,-1721,-2748,-3360,-3391,-2993,-2461,-1992, -1637,-1536,-1898,-2756,-3992,-5349,-6376,-6661,-6215,-5390, -4604,-4153,-4095,-4233,-4314,-4137,-3591,-2815,-2170,-1992, -2424,-3330,-4334,-5082,-5476,-5546,-5324,-4841,-4060,-2930, -1560,-189,947,1620,1601,822,-525,-2003,-3124,-3692, -3834,-3593,-2781,-1288,696,2744,4322,5092,5007,4186, 2950,1865,1509,2112,3420,4791,5719,6258,6712,7101, 7210,6875,6101,5074,4067,3226,2606,2281,2215,2195, 2008,1561,964,452,185,227,705,1675,2894,4010, 4814,5190,5120,4768,4368,4103,4027,4068,4203,4547, 5143,5817,6347,6557,6344,5754,4960,4201,3745,3752, 4080,4524,4912,5052,4817,4337,3904,3668,3493,3074, 2266,1278,452,10,16,314,525,325,-259,-902, -1122,-630,374,1351,1817,1585,833,-32,-773,-1395, -1921,-2267,-2327,-2060,-1646,-1380,-1446,-1883,-2796,-4271, -6161,-8093,-9633,-10489,-10653,-10246,-9417,-8431,-7509,-6585, -5492,-4307,-3324,-2831,-2917,-3324,-3529,-3096,-1958,-517, 525,714,74,-1159,-2724,-4278,-5513,-6259,-6470,-6254, -5851,-5434,-5045,-4725,-4510,-4341,-4053,-3489,-2607,-1477, -136,1377,2743,3567,3843,3936,4230,4895,5684,6061, 5677,4630,3344,2456,2477,3341,4523,5500,5941,5763, 5113,4178,3102,2113,1330,678,92,-327,-454,-251, 184,630,924,1113,1280,1358,1151,467,-629,-1778, -2521,-2597,-1895,-498,1159,2435,2842,2313,1222,122, -604,-891,-875,-784,-827,-1181,-1997,-3229,-4444,-5098, -4965,-4173,-2984,-1666,-394,734,1733,2678,3630,4541, 5340,5961,6240,6083,5661,5243,5022,5122,5596,6282, 6879,7114,6918,6390,5600,4510,3211,1977,1040,497, 352,523,885,1321,1716,2072,2591,3405,4293,4855, 4875,4459,3914,3432,2953,2408,1925,1616,1435,1245, 918,468,59,-233,-492,-803,-1207,-1661,-2040,-2332, -2661,-2956,-2969,-2678,-2347,-2195,-2200,-2214,-2224,-2477, -3130,-3896,-4225,-3700,-2251,-214,1838,3475,4361,4153, 2801,815,-1031,-2128,-2312,-1923,-1419,-988,-634,-392, -312,-421,-778,-1450,-2454,-3658,-4719,-5295,-5386,-5211, -4981,-4850,-4849,-4818,-4629,-4274,-3843,-3532,-3482,-3535, -3402,-3070,-2795,-2868,-3427,-4411,-5607,-6756,-7486,-7361, -6280,-4596,-2812,-1310,-287,218,185,-419,-1425,-2479, -3299,-3744,-3816,-3576,-3025,-2058,-736,625,1677,2230, 2269,1944,1487,1189,1299,1846,2588,3281,3835,4301, 4789,5377,6018,6617,7059,7155,6799,6090,5201,4280, 3482,2776,1957,1015,298,205,846,1900,2847,3317, 3170,2479,1662,1347,1790,2631,3343,3683,3846,4209, 4923,5763,6338,6377,5884,5117,4340,3741,3583,4025, 4859,5683,6162,6116,5576,4847,4288,4049,4039,4021, 3840,3560,3322,3178,3087,2824,2074,862,-296,-835, -534,320,1134,1490,1394,1080,770,576,409,116, -323,-825,-1336,-1688,-1642,-1132,-333,382,580,-6, -1335,-3118,-4845,-6073,-6746,-7173,-7632,-8200,-8719,-8902, -8615,-8125,-7747,-7496,-7156,-6448,-5208,-3622,-2191,-1413, -1522,-2299,-3093,-3275,-2711,-1703,-798,-515,-1043,-2213, -3739,-5182,-6087,-6384,-6371,-6238,-5985,-5601,-5126,-4583, -3976,-3305,-2591,-1821,-923,79,962,1586,2037,2468, 2999,3669,4341,4777,4821,4475,3910,3447,3379,3856, 4845,6097,7164,7564,6945,5344,3301,1542,475,107, 290,790,1323,1646,1616,1284,879,602,495,495, 493,328,-135,-906,-1694,-1996,-1505,-360,1048,2326, 3153,3439,3291,2819,2018,928,-320,-1511,-2511,-3345, -4060,-4601,-4902,-4930,-4567,-3702,-2446,-1089,109,965, 1452,1750,2100,2623,3289,3973,4661,5415,6163,6717, 7009,7089,7033,6982,7024,7010,6731,6190,5474,4664, 3836,3006,2173,1437,925,713,858,1308,1906,2600, 3399,4121,4569,4781,4878,4854,4547,3780,2635,1526, 889,871,1406,2281,3110,3418,2861,1416,-452,-2005, -2701,-2521,-1837,-1082,-478,-128,-216,-820,-1749,-2768, -3773,-4668,-5237,-5245,-4604,-3471,-2166,-932,153,1079, 1744,2056,1980,1576,926,93,-722,-1169,-1076,-595, 35,625,995,1023,731,206,-515,-1384,-2281,-3055, -3717,-4433,-5264,-5999,-6345,-6159,-5419,-4245,-2936,-1832, -1226,-1287,-1889,-2686,-3438,-4130,-4779,-5342,-5711,-5844, -5737,-5310,-4511,-3536,-2790,-2545,-2825,-3394,-3824,-3710, -3035,-2220,-1816,-2035,-2531,-2785,-2624,-2272,-2000,-1902, -1791,-1311,-279,1111,2386,3121,3160,2624,1739,844, 418,813,1999,3648,5315,6618,7438,7868,7989,7772, 7179,6116,4579,2858,1499,1082,1858,3322,4521,4860, 4397,3505,2583,1888,1422,1124,1027,1199,1738,2674, 3799,4734,5231,5252,4856,4306,3995,4142,4687,5326, 5678,5643,5397,5084,4849,4983,5590,6352,6755,6494, 5730,5040,4835,4950,4885,4278,3133,1827,908,686, 1091,1798,2348,2481,2336,2143,1902,1580,1178,632, -69,-678,-768,-110,1033,2041,2363,1817,587,-849, -1875,-2155,-1863,-1403,-1152,-1399,-2284,-3700,-5374,-6995, -8281,-9055,-9260,-8952,-8314,-7556,-6847,-6288,-5814,-5270, -4612,-3975,-3494,-3195,-3092,-3178,-3343,-3337,-2914,-2049, -1053,-447,-685,-1837,-3508,-5101,-6200,-6630,-6444,-5930, -5404,-5008,-4716,-4447,-4110,-3620,-2876,-1816,-616,375, 874,805,344,-86,-23,707,1948,3394,4651,5377, 5525,5327,5091,5017,5125,5370,5756,6216,6485,6291, 5548,4355,3017,1926,1291,1045,1021,1130,1316,1489, 1515,1343,1036,617,7,-774,-1535,-2113,-2371,-2090, -1147,343,2109,3775,4985,5512,5224,4123,2423,452, -1481,-3102,-4212,-4736,-4728,-4364,-3900,-3458,-3029,-2664, -2485,-2446,-2285,-1789,-983,-112,717,1577,2503,3361, 4179,5142,6234,7141,7551,7442,7032,6590,6319,6326, 6570,6780,6544,5628,4171,2535,1126,315,296,982, 2022,2989,3674,4068,4156,3946,3598,3318,3255,3471, 3890,4287,4407,4090,3388,2562,1865,1340,899,544, 358,392,532,635,691,744,687,325,-336,-1121, -1876,-2584,-3306,-3979,-4332,-4233,-3877,-3517,-3186,-2799, -2365,-1957,-1603,-1183,-515,391,1215,1481,907,-278, -1389,-1798,-1405,-582,244,925,1558,2178,2593,2556, 1866,345,-1972,-4605,-6768,-7862,-7788,-6846,-5418,-3811, -2349,-1353,-971,-1164,-1838,-2902,-4199,-5484,-6391,-6592, -6003,-4820,-3436,-2373,-2113,-2742,-3863,-4812,-5094,-4753, -4249,-3949,-3884,-3895,-3744,-3309,-2760,-2518,-2881,-3708, -4442,-4524,-3809,-2482,-874,522,1226,1231,913,546, 203,8,118,602,1348,2206,3183,4358,5589,6541, 6867,6405,5386,4460,4163,4451,4867,4974,4582,3806, 3063,2739,2959,3536,4022,4014,3411,2498,1814,1729, 2099,2401,2336,2082,2022,2379,3139,4055,4738,4901, 4575,4015,3562,3422,3560,3806,4040,4315,4846,5786, 6989,8091,8682,8500,7524,5943,4121,2539,1622,1511, 2054,2917,3672,3952,3643,2920,2059,1258,608,207, 230,707,1356,1739,1613,1105,617,508,825,1346, 1746,1716,1149,229,-732,-1434,-1705,-1654,-1654,-2097, -3118,-4514,-5950,-7227,-8259,-8857,-8834,-8306,-7654,-7208, -7084,-7067,-6771,-6057,-5064,-4056,-3359,-3268,-3744,-4430, -4879,-4785,-4137,-3158,-2084,-1192,-919,-1562,-3023,-4930, -6845,-8307,-8910,-8491,-7184,-5424,-3690,-2308,-1461,-1285, -1676,-2234,-2609,-2719,-2678,-2526,-2162,-1485,-541,573, 1769,2871,3626,3943,3985,3965,3963,4048,4373,5046, 5936,6665,6929,6688,6043,5118,4049,3053,2356,2075, 2097,2240,2384,2403,2126,1433,281,-1193,-2636,-3579, -3743,-3143,-1999,-584,935,2458,3738,4493,4728,4684, 4419,3688,2235,266,-1619,-2932,-3595,-3724,-3474,-3113, -2958,-3191,-3736,-4284,-4497,-4307,-3889,-3316,-2448,-1300, -176,600,1061,1582,2514,3867,5437,6970,8118,8644, 8598,8108,7237,6152,5165,4552,4318,4230,4085,3860, 3590,3253,2797,2253,1702,1277,1179,1599,2534,3678, 4585,5081,5392,5762,6049,5827,4805,3170,1488,284, -153,225,1183,2215,2850,2903,2517,1964,1397,781, 82,-659,-1374,-1950,-2283,-2388,-2410,-2450,-2613,-3045, -3714,-4311,-4428,-3837,-2685,-1442,-572,-287,-533,-1038, -1486,-1755,-1939,-2139,-2319,-2242,-1489,174,2348,4173, 4913,4315,2645,514,-1444,-2861,-3709,-4246,-4704,-5017, -4994,-4559,-3748,-2710,-1816,-1482,-1885,-2853,-3983,-4851, -5180,-4966,-4528,-4311,-4480,-4733,-4659,-4089,-3164,-2269, -1887,-2225,-3042,-3874,-4361,-4476,-4496,-4724,-5197,-5589, -5417,-4464,-3042,-1825,-1387,-1863,-2849,-3653,-3798,-3216, -2162,-1008,-95,481,920,1472,2119,2553,2548,2324, 2318,2746,3524,4457,5382,6136,6528,6366,5677,4775, 3998,3521,3344,3379,3479,3569,3746,4165,4713,5004, 4740,3977,2968,1960,1255,1193,1797,2741,3691,4483, 4983,4976,4320,3145,1890,1051,970,1779,3318,5090, 6489,7158,7164,6890,6772,6942,7169,7232,7073,6625, 5809,4698,3575,2832,2688,3047,3579,3934,3803,3145, 2249,1511,1148,1160,1393,1596,1570,1269,857,690, 1022,1799,2750,3583,3964,3599,2484,984,-380,-1244, -1596,-1657,-1657,-1800,-2327,-3397,-4953,-6684,-8150,-9026, -9196,-8678,-7693,-6643,-5855,-5394,-5239,-5370,-5606,-5665, -5413,-4941,-4408,-3838,-3168,-2467,-1973,-1817,-1971,-2398, -3097,-4093,-5356,-6639,-7514,-7733,-7359,-6557,-5473,-4288, -3219,-2434,-1975,-1829,-1995,-2439,-2930,-3193,-3168,-2946, -2545,-1946,-1162,-262,591,1294,1930,2667,3520,4337, 4905,5086,4898,4503,4209,4364,5063,6037,6888,7397, 7475,7116,6416,5501,4449,3361,2394,1593,836,-78, -1175,-2151,-2657,-2623,-2168,-1380,-343,756,1681,2269, 2621,3020,3599,4244,4698,4674,3922,2484,703,-975, -2249,-3054,-3495,-3622,-3440,-3055,-2663,-2513,-2864,-3762, -4863,-5650,-5746,-5038,-3631,-1743,323,2242,3815,5137, 6363,7361,7820,7586,6818,5952,5453,5469,5865,6467, 6979,6988,6259,4887,3258,1864,1036,748,802,1068, 1531,2310,3507,4985,6359,7160,6991,5854,4341,3200, 2758,2810,2894,2664,2173,1778,1749,2143,2779,3296, 3372,2935,2145,1273,585,104,-378,-1072,-2041,-3162, -4067,-4302,-3687,-2422,-1016,-120,-143,-941,-2037,-2921, -3304,-3336,-3392,-3621,-3783,-3524,-2677,-1361,118,1389, 1993,1703,944,526,808,1395,1658,1264,345,-732, -1669,-2390,-2978,-3572,-4174,-4523,-4330,-3552,-2398,-1288, -757,-1137,-2371,-4105,-5836,-7081,-7542,-7163,-6033,-4426, -2768,-1411,-564,-341,-775,-1865,-3485,-5178,-6338,-6644, -6161,-5156,-4002,-3073,-2612,-2682,-3083,-3539,-3980,-4464, -4880,-5033,-4807,-4093,-2896,-1488,-248,609,1085,1333, 1493,1563,1606,1797,2256,3031,4106,5197,5846,5835, 5299,4547,3913,3637,3753,4152,4649,4969,4827,4145, 3187,2444,2335,2812,3568,4361,4987,5170,4769,3934, 3039,2491,2442,2698,2951,3008,2759,2217,1613,1302, 1555,2359,3361,4180,4737,5157,5535,6003,6645,7333, 7841,7985,7634,6792,5650,4475,3554,3130,3229,3711, 4328,4674,4414,3562,2357,1092,157,-176,4,429, 920,1382,1740,1959,2061,2182,2474,2947,3452,3789, 3725,3158,2226,1072,-269,-1683,-2963,-3973,-4636,-4927, -5010,-5169,-5571,-6221,-6978,-7672,-8212,-8544,-8562,-8219, -7554,-6630,-5559,-4536,-3678,-3012,-2606,-2499,-2614,-2891, -3326,-3894,-4493,-4936,-5078,-5056,-5173,-5564,-6161,-6835, -7422,-7693,-7406,-6399,-4776,-3013,-1656,-964,-963,-1584, -2660,-3968,-5182,-5798,-5391,-4001,-2138,-430,802,1671, 2350,2823,2988,2809,2301,1607,1047,972,1686,3295, 5466,7628,9326,10255,10239,9346,7836,5978,4066,2367, 1079,334,127,211,267,15,-722,-1735,-2484,-2590, -2025,-875,662,2233,3474,4165,4323,4228,4093,3802, 3141,2119,921,-130,-740,-842,-611,-388,-690,-1830, -3528,-5165,-6261,-6641,-6472,-6122,-5733,-5089,-3911,-2145, -127,1594,2740,3428,3844,4174,4706,5624,6842,8024, 8675,8471,7599,6570,5709,5050,4472,3827,3056,2241, 1546,1218,1495,2281,3136,3633,3668,3517,3719,4578, 5779,6611,6520,5456,3881,2441,1563,1353,1633,2099, 2605,3282,4151,4948,5358,5124,4047,2145,-231,-2456, -3837,-4095,-3550,-2657,-1597,-454,557,1148,1078,284, -1036,-2604,-4124,-5227,-5563,-5038,-3863,-2562,-1669,-1341, -1353,-1394,-1271,-935,-487,17,600,1154,1541,1751, 1760,1428,612,-673,-2070,-2933,-2938,-2392,-1796,-1388, -1212,-1269,-1604,-2259,-3111,-3947,-4678,-5302,-5736,-5890, -5725,-5200,-4423,-3643,-2961,-2329,-1832,-1639,-1863,-2516, -3398,-4177,-4629,-4712,-4464,-4079,-3824,-3810,-3989,-4235, -4402,-4445,-4432,-4373,-4326,-4478,-4867,-5238,-5281,-4737, -3421,-1485,575,2276,3263,3281,2472,1428,879,1210, 2253,3557,4818,5822,6286,6110,5569,4966,4387,3826, 3274,2763,2427,2353,2529,2959,3625,4430,5284,5985, 6185,5743,4903,4023,3393,3150,3163,3228,3261,3149, 2716,1959,1161,726,982,1889,3074,4221,5169,5762, 5978,5998,6014,6138,6427,6785,7064,7212,7185,6915, 6387,5633,4750,3965,3483,3279,3247,3302,3309,3118, 2609,1694,492,-579,-1107,-927,-95,1206,2718,4188, 5352,5962,5945,5410,4493,3361,2083,627,-862,-1975, -2412,-2227,-1762,-1537,-1941,-2991,-4459,-6174,-7980,-9584, -10541,-10479,-9391,-7661,-5756,-4093,-3054,-2735,-2914,-3294, -3563,-3448,-2991,-2552,-2479,-2845,-3478,-4183,-4912,-5688, -6386,-6879,-7225,-7440,-7345,-6785,-5771,-4484,-3263,-2394, -1986,-2102,-2760,-3736,-4700,-5416,-5657,-5225,-4122,-2512, -684,890,1787,1832,1126,11,-970,-1399,-1115,-225, 926,2004,3036,4290,5898,7714,9273,10046,9952,9301, 8287,7000,5659,4465,3381,2225,894,-418,-1293,-1515, -1238,-715,-244,-61,-68,84,494,1040,1652,2273, 2750,2970,2980,3035,3478,4271,4849,4548,3172,1200, -578,-1757,-2509,-3126,-3676,-4215,-4817,-5352,-5591,-5451, -5086,-4788,-4742,-4715,-4206,-2856,-712,1746,3898,5415, 6367,6938,7264,7403,7366,7210,6961,6555,5959,5357, 4947,4652,4183,3346,2261,1306,870,1120,1981,3181, 4342,5192,5641,5697,5418,4843,3992,3007,2173,1706, 1769,2540,3903,5371,6403,6704,6243,5217,3850,2294, 780,-404,-1170,-1573,-1645,-1434,-1022,-465,42,269, 174,-153,-580,-939,-1255,-1771,-2562,-3417,-4136,-4627, -4828,-4682,-4072,-2939,-1537,-301,524,870,684,64, -711,-1257,-1273,-798,-189,297,660,894,917,682, 189,-441,-1031,-1566,-2137,-2675,-3054,-3270,-3323,-3211, -3089,-3193,-3679,-4587,-5703,-6619,-6939,-6386,-4917,-2982, -1305,-405,-479,-1464,-2965,-4389,-5286,-5481,-5052,-4251, -3373,-2750,-2685,-3221,-4076,-4929,-5617,-6133,-6516,-6714, -6570,-6044,-5260,-4253,-3036,-1741,-544,376,834,849, 704,697,1018,1770,2923,4257,5423,6033,5947,5383, 4668,4005,3490,3141,2868,2613,2389,2191,2121,2418, 3175,4200,5213,6026,6573,6819,6624,5891,4772,3534, 2450,1763,1521,1567,1817,2313,2912,3254,3072,2437, 1752,1475,1826,2783,4155,5563,6625,7234,7447,7325, 6986,6594,6250,6008,5862,5764,5691,5621,5507,5304, 4931,4244,3201,1957,634,-686,-1744,-2110,-1508,-18, 1931,3778,5080,5627,5422,4723,3863,3101,2730,2862, 3081,2864,2205,1415,593,-348,-1438,-2517,-3396,-4181, -5248,-6639,-7960,-8858,-9294,-9381,-9197,-8659,-7613,-6161, -4620,-3238,-2224,-1773,-1756,-1887,-2092,-2457,-3055,-3953, -5113,-6332,-7296,-7637,-7130,-6085,-5137,-4651,-4669,-5090, -5652,-6083,-6228,-5999,-5436,-4830,-4407,-4135,-3879,-3526, -2989,-2423,-2144,-2267,-2545,-2530,-1942,-984,-246,-131, -577,-1277,-1829,-1888,-1315,-148,1481,3317,5099,6801, 8504,10092,11173,11268,10155,8044,5510,3217,1669,945, 755,830,1058,1268,1269,1023,655,185,-505,-1440, -2195,-2177,-1144,597,2517,4159,5240,5681,5510,4843, 3936,3025,2136,1211,336,-318,-701,-973,-1416,-2197, -3329,-4708,-6084,-7118,-7623,-7573,-6941,-5788,-4331,-2812, -1325,122,1595,3076,4407,5510,6453,7198,7663,7888, 7885,7498,6606,5289,3883,2846,2401,2407,2701,3258, 3984,4666,5068,4955,4288,3362,2512,1899,1681,1961, 2646,3543,4445,5200,5761,6052,5930,5440,4873,4448, 4229,4219,4200,3839,3027,1877,506,-889,-1940,-2283, -1805,-770,369,1301,1838,1766,989,-304,-1763,-3046, -3958,-4584,-5035,-5146,-4659,-3580,-2145,-698,366,740, 310,-785,-2143,-3222,-3580,-3043,-1787,-251,1099,1985, 2222,1747,845,18,-467,-680,-791,-853,-894,-1046, -1458,-2051,-2622,-3077,-3462,-3787,-4118,-4547,-5050,-5467, -5690,-5650,-5245,-4411,-3266,-2200,-1683,-1852,-2384,-2899, -3222,-3342,-3358,-3388,-3502,-3735,-4073,-4423,-4690,-4904, -5141,-5454,-5810,-6160,-6521,-6885,-6986,-6486,-5371,-3945, -2501,-1230,-259,413,888,1264,1568,1841,2258,3050, 4164,5271,6132,6575,6331,5247,3567,1832,575,73, 318,1187,2530,4044,5312,6034,6176,5967,5698,5447, 5175,4951,4846,4727,4425,3925,3337,2804,2436,2238, 2166,2105,1875,1535,1483,2001,2969,4076,5009,5544, 5583,5206,4623,4287,4675,5844,7410,8860,9697,9607, 8684,7259,5626,4009,2616,1633,1159,1073,1152,1329, 1594,1698,1425,972,766,1082,1915,2931,3782,4448, 5061,5515,5554,5128,4469,3825,3150,2194,978,-143, -921,-1332,-1533,-1929,-3035,-5009,-7492,-9864,-11484,-11915, -11126,-9427,-7244,-5000,-2969,-1286,-170,97,-635,-2219, -4166,-5809,-6694,-6768,-6160,-5105,-4053,-3511,-3648,-4196, -4837,-5527,-6342,-7186,-7809,-8046,-7880,-7256,-6128,-4698, -3447,-2793,-2815,-3242,-3626,-3623,-3208,-2671,-2265,-1979, -1714,-1483,-1440,-1736,-2352,-3063,-3559,-3580,-2858,-1259, 1018,3555,5907,7772,9008,9575,9409,8572,7419,6374, 5581,4957,4384,3876,3542,3350,3016,2308,1252,61, -952,-1511,-1613,-1467,-1138,-553,252,1165,2069,2842, 3404,3820,4135,4357,4466,4359,3950,3321,2573,1686, 670,-407,-1487,-2532,-3492,-4363,-5140,-5809,-6383,-6894, -7347,-7644,-7501,-6584,-4858,-2564,60,2767,5189,6957, 7851,7810,7004,5796,4553,3581,3123,3303,4055,5089, 6026,6630,6776,6309,5174,3647,2261,1423,1235,1533, 2024,2488,2807,2963,3087,3423,4065,4882,5645,6149, 6313,6172,5848,5510,5258,4950,4345,3382,2198,981, -69,-655,-555,163,1141,1897,2072,1596,604,-595, -1593,-2176,-2491,-2752,-2939,-2923,-2760,-2678,-2801,-2949, -2815,-2289,-1546,-901,-628,-871,-1559,-2438,-3177,-3482, -3167,-2248,-986,275,1278,1888,2022,1684,1024,279, -393,-916,-1315,-1682,-1979,-2000,-1663,-1240,-1176,-1750, -2879,-4255,-5565,-6540,-6952,-6691,-5858,-4690,-3442,-2302, -1413,-970,-1131,-1817,-2755,-3647,-4223,-4298,-3918,-3323, -2787,-2588,-2931,-3791,-4915,-6013,-6882,-7443,-7614,-7319, -6668,-5960,-5410,-5025,-4723,-4305,-3510,-2277,-751,918, 2475,3590,4121,4236,4233,4315,4423,4368,4109,3701, 3075,2240,1550,1380,1760,2412,2967,3236,3320,3461, 3818,4505,5494,6511,7199,7326,6780,5633,4178,2717, 1524,958,1284,2284,3396,4184,4520,4413,3844,2852, 1663,667,255,692,2007,3871,5736,7230,8282,8924, 9185,9120,8732,7949,6797,5516,4456,3872,3767,3914, 3969,3658,2913,1877,830,84,-168,65,620,1374, 2297,3325,4265,4917,5225,5211,4904,4424,4028,3952, 4247,4717,4940,4446,3050,966,-1377,-3632,-5695,-7555, -9095,-10060,-10268,-9664,-8344,-6614,-4928,-3644,-2900,-2632, -2653,-2860,-3302,-3967,-4631,-5010,-4937,-4470,-3925,-3586, -3448,-3405,-3544,-4071,-5063,-6255,-7184,-7646,-7804,-7853, -7810,-7596,-7110,-6309,-5284,-4195,-3159,-2290,-1711,-1477, -1562,-1934,-2511,-3177,-3800,-4229,-4331,-4093,-3601,-2990, -2347,-1662,-861,38,937,1831,2856,4142,5595,6959, 8035,8770,9044,8755,8006,7052,5994,4819,3708,2913, 2474,2217,1972,1683,1340,864,205,-524,-1121,-1393, -1225,-597,417,1733,3251,4681,5598,5756,5238,4333, 3364,2630,2279,2258,2343,2309,1952,1117,-265,-2139, -4399,-6881,-9194,-10691,-10828,-9563,-7377,-4910,-2575,-526, 1104,2169,2664,2862,3116,3584,4129,4497,4585,4541, 4660,5149,5908,6614,6974,6877,6364,5594,4778,4063, 3459,2855,2146,1411,824,534,616,1143,2175,3685, 5446,7039,8020,8160,7484,6255,4936,3963,3479,3417, 3651,4010,4314,4328,3835,2836,1660,740,308,298, 441,458,298,25,-346,-815,-1319,-1816,-2305,-2761, -3105,-3174,-2813,-2080,-1289,-776,-709,-1052,-1566,-2090, -2686,-3325,-3738,-3702,-3225,-2421,-1418,-334,673,1330, 1412,1007,405,-123,-414,-508,-549,-506,-284,-115, -330,-956,-1811,-2754,-3652,-4391,-4933,-5267,-5439,-5536, -5559,-5432,-5116,-4490,-3480,-2252,-1132,-468,-602,-1629, -3097,-4295,-4775,-4525,-3819,-3101,-2667,-2612,-2954,-3687, -4751,-6034,-7378,-8533,-9233,-9356,-8990,-8256,-7062,-5222, -2865,-561,1060,1774,1854,1748,1739,1888,2200,2768, 3679,4749,5516,5598,4920,3606,1883,187,-883,-873, 280,2165,4089,5536,6414,6863,6883,6371,5372,4229, 3360,2910,2833,3176,3957,4939,5723,5965,5486,4368, 2920,1502,430,-80,-21,444,1177,2118,3244,4550, 5914,6985,7441,7357,7183,7325,7763,8138,8137,7710, 6907,5803,4556,3396,2502,2012,1940,2134,2425,2659, 2627,2219,1586,986,592,507,832,1667,3054,4792, 6495,7844,8588,8544,7800,6617,5106,3281,1342,-470, -2125,-3657,-4975,-5923,-6466,-6760,-6997,-7188,-7250,-7113, -6704,-6054,-5292,-4459,-3584,-2917,-2773,-3144,-3739,-4264, -4597,-4696,-4507,-4018,-3353,-2740,-2445,-2702,-3606,-5022, -6726,-8509,-10024,-10803,-10623,-9580,-7904,-5905,-3929,-2298, -1296,-1068,-1554,-2545,-3761,-4834,-5455,-5523,-5102,-4334, -3452,-2709,-2264,-2141,-2229,-2379,-2521,-2547,-2166,-1061, 837,3218,5513,7196,8109,8398,8262,7809,7111,6305, 5634,5282,5191,5119,4845,4261,3358,2247,1057,-66, -922,-1270,-986,-208,706,1411,1774,1786,1515,1274, 1511,2381,3624,4835,5740,6272,6415,6073,5139,3636, 1746,-230,-2070,-3755,-5358,-6739,-7645,-7940,-7674,-7033, -6241,-5410,-4506,-3522,-2454,-1263,29,1253,2256,2944, 3308,3450,3493,3521,3726,4343,5502,7058,8571,9408, 9167,7897,5928,3739,1867,615,-34,-181,121,813, 1840,3074,4290,5278,5927,6155,6012,5705,5443,5321, 5357,5394,5275,5029,4831,4777,4841,4857,4595,4003, 3252,2459,1630,838,240,-49,-96,-175,-477,-866, -1110,-1200,-1257,-1370,-1567,-1805,-1991,-2030,-1868,-1557, -1317,-1335,-1539,-1683,-1651,-1644,-2040,-2974,-4056,-4619, -4198,-2807,-923,825,2034,2557,2320,1367,46,-1086, -1564,-1313,-606,207,825,917,311,-801,-2073,-3339, -4588,-5732,-6572,-6855,-6447,-5400,-3986,-2670,-1875,-1654, -1795,-2143,-2689,-3374,-4042,-4401,-4100,-3028,-1512,-212, 257,-359,-1894,-3992,-6257,-8251,-9593,-10099,-9767,-8796, -7624,-6639,-5888,-5249,-4571,-3714,-2658,-1511,-364,780, 2029,3469,4856,5569,5248,4143,2789,1679,1111,1073, 1351,1799,2361,2978,3583,4070,4302,4240,3951,3548, 3252,3273,3643,4287,5093,5903,6527,6800,6548,5756, 4719,3830,3253,2922,2708,2548,2420,2219,1818,1295, 900,838,1279,2347,3935,5717,7373,8659,9383,9477, 8955,7944,6725,5585,4691,4233,4313,4740,5151,5343, 5302,5064,4519,3435,1814,85,-1249,-1953,-1927,-1051, 688,3075,5625,7768,9155,9704,9454,8497,7078,5532, 4114,2892,1815,871,70,-741,-1834,-3253,-4771,-6066, -6882,-7165,-7113,-6913,-6526,-5874,-5001,-4220,-3942,-4231, -4718,-4976,-4841,-4357,-3666,-2934,-2265,-1746,-1506,-1654, -2290,-3482,-5139,-6955,-8569,-9677,-10101,-9856,-9045,-7790, -6349,-5081,-4215,-3764,-3601,-3586,-3646,-3803,-4056,-4356, -4623,-4697,-4486,-4178,-4043,-4103,-4172,-4092,-3790,-3249, -2519,-1726,-1050,-544,-55,632,1634,3018,4752,6557, 8038,8908,9030,8410,7208,5702,4250,3203,2712,2669, 2839,3038,3184,3225,2951,2096,737,-688,-1787,-2357, -2320,-1693,-565,923,2560,4173,5663,6807,7297,7033, 6113,4735,3275,2135,1420,864,41,-1341,-3182,-5080, -6672,-7676,-7900,-7422,-6554,-5570,-4617,-3750,-2969,-2378, -2091,-1958,-1674,-1121,-305,843,2338,4031,5667,6919, 7553,7626,7391,7081,6783,6295,5323,3894,2404,1222, 516,256,343,703,1306,2111,3093,4153,5013,5359, 5211,4897,4739,4809,4938,4926,4789,4742,4974,5508, 6141,6525,6372,5567,4175,2457,826,-396,-993,-858, -149,669,1089,782,-277,-1660,-2703,-3024,-2751,-2247, -1754,-1288,-844,-530,-425,-579,-1113,-2059,-3099,-3801, -4041,-3994,-3851,-3671,-3352,-2744,-1864,-949,-276,53, 158,170,83,-80,-122,110,538,905,871,220, -945,-2284,-3394,-3968,-3961,-3675,-3557,-3916,-4661,-5365, -5622,-5461,-5206,-5029,-4779,-4202,-3232,-2136,-1304,-953, -1111,-1693,-2414,-2928,-3144,-3218,-3310,-3555,-4074,-4980, -6327,-7930,-9458,-10638,-11278,-11155,-10208,-8611,-6593,-4309, -1999,7,1371,1937,1883,1518,986,406,95,348, 1196,2414,3636,4498,4776,4365,3320,2010,957,464, 546,1106,2032,3205,4405,5259,5503,5248,4836,4565, 4603,4887,5230,5537,5788,5820,5409,4537,3394,2209, 1139,231,-406,-566,-84,1049,2631,4271,5630,6600, 7146,7214,6917,6471,5954,5396,5005,5062,5693,6677, 7498,7740,7342,6443,5214,3801,2286,760,-582,-1527, -1916,-1622,-669,663,2101,3585,5097,6470,7507,8138, 8405,8327,7787,6705,5255,3718,2299,1141,266,-467, -1238,-2083,-2923,-3669,-4322,-4994,-5726,-6457,-7147,-7742, -7975,-7587,-6606,-5396,-4322,-3483,-2755,-2118,-1755,-1806, -2211,-2788,-3324,-3752,-4203,-4727,-5214,-5629,-6090,-6715, -7535,-8444,-9184,-9435,-8919,-7573,-5714,-3879,-2515,-1955, -2331,-3387,-4650,-5766,-6517,-6729,-6366,-5527,-4375,-3193, -2327,-1991,-2306,-3229,-4344,-5019,-4818,-3689,-1902,143, 2189,4101,5725,6924,7595,7548,6734,5519,4426,3782, 3781,4451,5485,6422,6882,6589,5461,3706,1766,145, -891,-1462,-1782,-1839,-1511,-743,414,1730,2924,3913, 4835,5801,6786,7578,7788,7135,5679,3768,1892,447, -512,-1244,-1982,-2758,-3383,-3659,-3757,-4120,-4902,-5738, -6192,-6130,-5723,-5174,-4510,-3677,-2734,-1733,-576,833, 2425,4034,5424,6432,7059,7338,7295,7089,6949,6859, 6525,5591,3961,2030,586,262,1054,2333,3340,3753, 3733,3561,3400,3394,3662,4167,4738,5263,5714,6092, 6374,6488,6445,6338,6226,6132,6026,5833,5491,4936, 4038,2768,1357,109,-737,-991,-667,-149,63,-222, -767,-1098,-988,-698,-607,-841,-1307,-1738,-1795,-1376, -699,-139,-86,-750,-1928,-3203,-4308,-5074,-5282,-4844, -3835,-2377,-625,1096,2350,2800,2408,1403,63,-1308, -2241,-2331,-1559,-255,1088,1942,1981,1167,-377,-2392, -4455,-6160,-7195,-7342,-6636,-5389,-3984,-2736,-1867,-1449, -1495,-1978,-2678,-3221,-3323,-2847,-1847,-626,394,892, 631,-559,-2664,-5428,-8385,-10866,-12328,-12565,-11664,-9893, -7641,-5340,-3462,-2446,-2366,-2724,-2916,-2657,-2009,-1104, -46,1053,2008,2696,3215,3655,3863,3659,3112,2502, 2138,2127,2250,2249,2143,2116,2241,2453,2647,2871, 3338,4172,5174,6060,6737,7239,7553,7507,6823,5502, 3936,2584,1642,1104,925,1154,1800,2653,3444,3999, 4305,4360,4172,3839,3546,3583,4178,5279,6536,7559, 8137,8344,8336,8159,7771,7169,6395,5523,4644,3770, 2809,1759,737,-153,-816,-1097,-869,-34,1397,3270, 5293,7149,8550,9272,9197,8340,6966,5526,4306,3353, 2698,2368,2257,2259,2274,2002,1064,-683,-3064,-5619, -7779,-9111,-9380,-8603,-7187,-5699,-4485,-3637,-3166,-3002, -3073,-3344,-3645,-3693,-3381,-2828,-2270,-1998,-2258,-3109, -4469,-6028,-7308,-8017,-8232,-8081,-7669,-7176,-6695,-6160, -5542,-4939,-4527,-4465,-4754,-5180,-5503,-5541,-5173,-4523, -3981,-3908,-4345,-5002,-5436,-5433,-5158,-4816,-4404,-3797, -2868,-1589,-207,847,1364,1548,1832,2532,3613,4757, 5665,6190,6305,6104,5811,5625,5639,5813,5980,5974, 5666,4930,3671,1990,206,-1331,-2409,-2932,-2817,-1964, -382,1734,3988,5771,6607,6573,6231,6007,5857,5471, 4634,3430,2158,1139,619,658,968,1005,334,-1115, -2992,-4687,-5776,-6259,-6373,-6333,-6301,-6319,-6294,-6034, -5255,-3751,-1683,494,2401,3838,4775,5368,-131,-328, -466,-420,-155,163,469,599,408,-229,-1026,-1432, -1164,-26,1862,3536,4497,4394,3348,949,-3171,-6531, -6692,-3731,753,4208,5103,3280,-144,-2710,-2305,50, 1017,-403,-3357,-6473,-8332,-8258,-6904,-5707,-5259,-6069, -8295,-10586,-11177,-9333,-5646,-1692,1324,3243,5441,8145, 10247,10645,8590,5070,1555,-1144,-3909,-7014,-9435,-10682, -9439,-5744,-1388,1750,2814,2276,951,470,2324,5914, 9130,10256,8688,4858,471,-3113,-5599,-6250,-5334,-3096, 2,2766,4178,4058,3348,2829,2337,1692,1024,162, -1417,-4029,-6471,-7859,-7624,-6615,-6119,-6029,-6609,-6597, -4452,270,5609,9018,10091,8775,6445,5284,5829,7136, 7203,4935,2276,1250,1837,2208,1414,1114,3147,7295, 11156,13828,15963,17948,19550,19901,19498,20415,22189,22886, 20893,16573,12114,9385,9627,11477,12578,11137,6784,1338, -2515,-3137,-1573,-380,-790,-1806,-2772,-3486,-4527,-5822, -6593,-6403,-5528,-3831,-1601,-178,374,507,68,-1638, -3567,-4114,-3363,-1948,-1900,-4239,-7922,-10758,-11411,-10802, -11102,-13573,-16703,-17639,-16334,-14843,-14032,-13253,-12008,-10687, -9733,-9021,-8304,-8503,-9624,-10713,-11971,-13272,-13964,-13889, -13415,-12753,-12038,-11531,-11752,-12088,-10772,-7800,-5823,-5387, -4913,-3327,-551,2263,4084,4318,2636,423,-937,-1915, -2962,-3570,-3012,-2135,-1837,-1224,-44,1126,1150,-108, -2402,-5277,-7248,-7619,-6405,-3951,-1044,1422,2813,3105, 2541,1630,552,-1291,-3033,-3339,-1340,3141,9261,14847, 17185,16666,15322,14126,12898,11456,9238,5893,2428,-498, -2148,-1873,-194,2249,4657,6408,7406,7564,6751,3981, -104,-2710,-1931,1427,4998,6824,5463,1225,-3720,-7291, -8077,-6229,-3116,-222,1827,4025,6631,9455,11685,11747, 9552,6129,3314,2266,3162,5611,8197,9510,9073,6972, 3245,-1936,-7422,-11465,-12185,-9415,-5222,-1356,144,-1783, -5542,-8795,-10488,-10770,-10265,-9473,-9209,-10230,-11924,-12460, -11233,-8496,-4786,-1753,329,1838,2416,1669,2,-860, 69,3238,6832,8938,9490,7909,4564,1527,567,1428, 2837,3980,4576,4595,5395,7163,8837,9633,9374,7814, 5462,4272,5579,9127,12687,13704,12176,9981,7966,6137, 4304,2473,915,507,1193,1188,-262,-2626,-4877,-5536, -3373,496,3343,4478,5180,6021,6770,7098,7406,8737, 10979,11877,9869,6057,2427,58,-1306,-1539,-715,301, 994,1365,1328,1263,1835,3390,6314,10126,13035,14109, 13964,13399,14047,16227,17428,16308,13938,11875,10641,10636, 10615,8521,5048,2072,591,223,-348,-1654,-3275,-4817, -6654,-8770,-10188,-11148,-12018,-12441,-12169,-11505,-10220,-7366, -4225,-2901,-3450,-4777,-5806,-5717,-4486,-3124,-3431,-5442, -8638,-11620,-13011,-14248,-16108,-18389,-20393,-20851,-18981,-15869, -13807,-12994,-12277,-11800,-11820,-11397,-9692,-7898,-7188,-7461, -9110,-11210,-12672,-12833,-11891,-11084,-11354,-12732,-13454,-13267, -12674,-11498,-9976,-8749,-7307,-4208,95,4119,6404,5555, 1681,-3012,-6226,-6796,-5579,-3527,-1466,226,1999,3654, 5201,6515,6713,5180,2792,1207,1282,3135,5980,8086, 8172,6397,4133,2924,2481,1446,-1062,-3657,-5031,-4400, -1334,3167,7694,11030,13962,17372,20143,20636,17952,12592, 6356,2302,2752,6142,9661,10365,7226,2174,-3056,-6539, -6780,-3647,400,2926,4183,4676,4624,4049,2474,303, -1831,-3458,-5120,-7199,-8615,-8965,-7981,-5719,-2461,1861, 6268,8205,5855,1398,-1095,-194,2926,5901,7445,7511, 5951,3980,2170,606,-1005,-3800,-6754,-7920,-6905,-5029, -3107,-1284,355,1927,2596,1291,-1825,-6023,-10333,-13725, -14763,-12014,-7632,-4326,-3609,-5291,-7098,-6833,-4087,-95, 4115,7322,8339,8017,8084,9404,10694,10407,8835,7340, 6747,6054,5036,4323,4433,5841,8036,9577,9650,9422, 9600,9188,8033,7338,8109,10034,11755,12097,10924,9575, 9771,11913,14647,15345,12898,8681,5123,3024,1830,1742, 1720,641,-641,-1188,-2066,-3785,-5644,-6256,-4464,-637, 2737,3829,3405,2751,3266,4615,5485,4756,3049,1218, -1220,-3449,-4844,-5580,-6077,-6521,-6490,-6134,-5195,-3442, -2060,-1097,-70,1135,3514,7559,12507,15412,15229,13026, 10333,8995,8891,8666,7540,5910,4226,2504,1774,1960, 1383,-296,-2531,-4156,-5401,-6306,-7120,-9016,-11152,-12619, -12995,-11694,-9005,-6618,-5799,-6249,-7250,-7475,-5625,-2761, -738,-364,-1044,-1972,-3581,-5420,-7196,-9134,-11126,-13340, -15122,-15644,-15106,-14442,-14137,-14111,-14597,-14646,-13110,-10916, -9143,-7909,-7010,-6982,-7940,-8735,-8472,-7397,-6739,-7217, -8952,-11309,-13541,-15304,-15922,-15519,-14461,-12227,-8852,-4989, -1022,2539,4174,2057,-2573,-6660,-7847,-6402,-3397,615, 4267,6815,7247,5265,2537,113,-1867,-3224,-3598,-2457, 196,3333,4832,4342,3862,4467,5880,6759,6029,3357, -791,-5029,-8133,-7506,-2345,4147,8838,10746,11089,10690, 10114,10372,10938,11164,10903,10411,10476,11173,11511,9811, 6447,2550,-1132,-3637,-5299,-5676,-3342,1285,5737,7692, 8001,7433,4796,-312,-5858,-8200,-6189,-1819,1757,3438, 3838,2598,200,-1702,-2169,-1449,184,2657,5140,7362, 9125,9553,9366,9726,11100,12315,11291,7081,1181,-2763, -3811,-3827,-3171,-1379,982,2530,2585,1303,-913,-3068, -4734,-6026,-7383,-8898,-9599,-9323,-8418,-7680,-7638,-7934, -8493,-8477,-6557,-3526,-1031,846,3433,6601,8301,7607, 4940,2119,1137,2519,5012,6722,6756,5333,4229,4010, 3705,3559,4223,5392,5578,4467,2773,810,-448,-257, 1754,5289,8271,9451,9317,9443,9847,9296,8745,9053, 9368,8371,5782,2569,-320,-2156,-3315,-4389,-5430,-6560, -7039,-6412,-5300,-4601,-4948,-5166,-4074,-913,3815,7604, 8242,5748,2377,-173,-1447,-1579,-1445,-1676,-2621,-4754, -6822,-7261,-6080,-5546,-6415,-6890,-5912,-2677,2595,8073, 11928,13755,14462,14873,15298,15330,14395,12732,10890,9361, 9243,10886,12184,10716,6956,3182,569,-393,65,575, -583,-3046,-5628,-7419,-7927,-7881,-7905,-7779,-7715,-7851, -7365,-5588,-3871,-3194,-2796,-2355,-1955,-1912,-1920,-2208, -3333,-4803,-6994,-9820,-12095,-13414,-13471,-12670,-12101,-12457, -13451,-14279,-15290,-15467,-13567,-10476,-7738,-6033,-4516,-2968, -1769,-1332,-2290,-4130,-6854,-10404,-13275,-14657,-14480,-13416, -11696,-9734,-8189,-6730,-5568,-4953,-4980,-5314,-5172,-4461, -2714,-115,2505,3506,2185,1090,2615,5531,5896,2171, -3166,-7666,-9737,-8612,-4461,1244,5747,7632,6942,4934, 2818,1155,158,-806,-1882,-2411,-1765,-839,-683,-629, 212,1292,2697,5035,7687,8796,8097,7665,8796,11366, 13959,15230,14549,11557,6866,2402,-64,-598,482,3829, 7637,9477,8912,6902,4378,1741,-530,-2102,-2595,-2185, -1404,100,2045,3474,4015,4060,3904,2270,-875,-3424, -3746,-1498,2300,6210,8652,9274,8987,8407,7782,6437, 3957,1438,307,610,1033,831,234,51,1083,2788, 3314,1277,-2553,-6208,-8426,-8853,-8516,-8345,-8537,-9041, -9662,-10860,-12157,-12887,-12085,-9428,-6529,-4505,-3238,-1907, -118,1456,2533,2834,2294,1390,570,701,1621,2553, 3644,5500,8181,10108,10018,8490,6655,5401,4780,3990, 2613,1301,593,-44,-336,400,1718,3371,5191,6877, 8424,9748,10564,10741,10269,9236,8150,7802,8327,8210, 6045,1861,-3234,-7163,-8451,-7946,-7222,-6808,-6541,-6458, -5556,-3163,66,2771,4024,4263,4249,4532,4781,3976, 1750,-1045,-3654,-5494,-6470,-7037,-7712,-8991,-10688,-11895, -10953,-7084,-1377,4280,8203,10411,12040,13247,13845,13794, 13154,12226,11013,10776,12121,13934,14030,11953,8869,5749, 3994,4052,5120,5983,5775,4147,1223,-2006,-4222,-5405, -6166,-7359,-8851,-9447,-9037,-8378,-7533,-6169,-4889,-4243, -3938,-3236,-2048,-1074,-682,-843,-1777,-3632,-6161,-8053, -8218,-7779,-8126,-9576,-11867,-14218,-15386,-15215,-14611,-13454, -10494,-5349,342,4123,4503,1773,-2715,-7155,-9749,-9517, -7502,-5790,-5409,-6261,-8042,-9694,-9625,-7891,-6126,-5562, -6211,-7483,-8328,-7386,-4412,-565,2292,3634,4583,5692, 5341,2724,-1185,-4676,-6497,-6406,-4658,-2536,-620,1247, 2782,3528,3336,2938,2429,1118,-993,-3234,-4156,-3104, -964,564,230,-1845,-4994,-7723,-8139,-5460,-788,4148, 7845,9771,10386,9560,7352,4853,3425,3807,5145,5870, 4872,2634,1202,1814,3958,6265,7365,6968,5267,2908, 371,-2024,-3085,-2167,687,4180,6447,6895,6131,4653, 2578,-13,-2280,-3393,-2514,252,3784,6922,9205,10876, 11436,10088,7257,3838,860,-138,1106,3471,5383,5513, 4264,3025,2526,2468,2681,3268,3361,2151,-512,-4296, -8029,-10584,-11296,-10611,-9601,-9059,-9899,-11063,-11597,-11814, -11776,-10695,-7342,-2489,1910,3992,3197,892,-1451,-3049, -3583,-2926,-858,1719,3993,5493,5853,5643,5076,4690, 5158,6058,6529,5849,4334,2718,944,-223,-289,349, 1448,2480,2854,2732,3264,4480,5689,6752,7255,7546, 8090,8900,9248,8016,5138,1409,-2085,-4172,-4805,-5099, -5907,-7275,-8629,-8762,-7156,-4874,-3303,-2370,-1171,623, 2800,4860,7166,8975,8399,5181,1525,-671,-1713,-2892, -4698,-6497,-7723,-7570,-5823,-3390,-1589,-646,255,2228, 6286,11360,15674,17879,17454,16031,15367,15424,15478,15327, 15402,15190,14000,11800,9676,8656,8355,8041,7142,5807, 4708,3843,2414,-223,-3432,-5733,-6160,-5525,-5148,-5199, -5458,-6080,-6470,-5636,-3904,-2652,-2882,-4155,-5043,-4634, -3164,-1464,-150,418,-471,-3615,-8309,-12783,-15538,-16144, -15491,-14461,-12962,-10896,-8823,-7347,-6157,-4786,-3286,-2141, -2315,-4730,-8585,-11613,-11984,-9565,-6101,-3599,-3213,-4589, -6891,-9613,-12372,-14819,-16171,-15378,-12063,-7449,-3514,-1054, 99,360,509,772,587,-502,-2683,-5524,-7834,-8073, -6270,-3131,216,2477,2469,-82,-3622,-6122,-6114,-3487, -310,1390,1323,112,-1481,-3399,-5864,-8280,-9272,-8343, -6082,-3108,-135,2415,4520,6045,6833,6347,4506,2534, 1223,1090,2304,3789,5087,6303,7316,7796,7579,6695, 5580,4799,4355,3829,3252,2924,2915,3484,4795,6791, 8676,9366,7869,4174,-158,-3567,-4424,-2043,1799,5208, 7076,7864,8455,8769,8780,8072,6926,5771,5130,5312, 5482,5126,3959,2584,2465,3671,5238,6730,7521,7120, 5653,3564,1443,-466,-2047,-3672,-6113,-9267,-11989,-13256, -13348,-13137,-12976,-13226,-13189,-12066,-9761,-6946,-4883,-3608, -2334,-1214,-850,-1158,-1857,-2772,-3449,-2564,53,3178, 5426,5895,5083,3602,2598,2756,3683,4943,5791,5925, 5596,5063,4371,3271,2026,682,149,1785,4694,6927, 7041,5604,4397,4671,7128,10721,13120,12549,9256,5562, 3153,1587,-109,-2214,-4234,-5776,-6235,-5904,-5970,-6713, -7689,-7685,-6398,-3412,1465,6593,9996,10300,7853,4935, 3052,2207,1613,843,-612,-2574,-3705,-4008,-4204,-4759, -5791,-6345,-5147,-1463,3448,7704,10699,12646,14401,16332, 17829,18277,17625,16696,15615,15122,15960,16625,15807,13509, 10809,8366,7142,7757,8923,9010,6860,2809,-1577,-4721, -6210,-6505,-5393,-3374,-1972,-1577,-3099,-6852,-11132,-13518, -12583,-9438,-5716,-2907,-1785,-2289,-3468,-4347,-5079,-5970, -7659,-10093,-12446,-14614,-15985,-15724,-14027,-11931,-10270,-8882, -7926,-7622,-7938,-9008,-10858,-12558,-12423,-10265,-6657,-3507, -2719,-3525,-4625,-5773,-6836,-8299,-10859,-14447,-17833,-18557, -15450,-9597,-3983,-879,-282,-1863,-4280,-6424,-7158,-5984, -4146,-1875,-37,389,88,-411,-965,-1908,-2838,-2899, -1848,-74,586,42,-775,-1583,-1546,-728,-146,-1162, -3872,-6455,-7850,-7791,-6010,-2827,1004,4210,6332,6679, 5132,2665,485,-399,-404,60,1444,3804,6508,8817, 10343,10425,8697,5906,3111,1727,1980,3545,5465,6713, 7133,6669,5420,3468,1905,1199,946,867,613,591, 1049,1321,1105,980,2217,5103,8264,10755,11456,10103, 7313,4084,1989,1597,2781,4571,5795,5959,5509,5326, 5393,5526,6034,7222,8742,9428,8974,7481,4193,-744, -6126,-9951,-11468,-11648,-11712,-12614,-13646,-13928,-13425,-12083, -10163,-8140,-6172,-4355,-2882,-2074,-1839,-2371,-3435,-3653, -2211,26,1511,1906,1738,1663,2327,3331,4607,6185, 7469,8008,7808,7805,8578,9573,9854,8273,5203,2632, 1951,2490,3310,4006,3720,3468,4588,7012,9740,11046, 10472,9033,8010,8396,9431,9786,8262,4876,883,-2535, -4924,-6831,-8043,-8684,-9072,-8737,-7376,-4548,-1129,1769, 3850,5096,6232,7409,7497,6047,3522,1035,223,1324, 2231,947,-2367,-6687,-10500,-11698,-9591,-5535,-1460,1532, 3608,5700,8025,10370,12535,14458,15866,16442,16210,15196, 13341,11743,11467,12269,13464,14491,14346,12353,9135,5726, 3654,3658,4428,4442,3194,890,-1262,-2277,-2285,-2527, -4199,-7209,-10716,-13158,-13360,-11774,-9423,-6841,-4242,-1932, -44,744,-1134,-5510,-10283,-13327,-13447,-11122,-7656,-5749, -6987,-10129,-12712,-13133,-12120,-10766,-10058,-10910,-13102,-14589, -13128,-8742,-3952,-635,624,26,-1682,-3680,-6175,-9612, -12989,-14550,-13508,-10812,-8279,-6903,-6759,-7330,-8311,-8923, -8257,-6560,-4685,-3513,-3183,-2813,-1813,-154,802,318, -1373,-3238,-4194,-3910,-1910,1026,2952,2456,384,-1240, -2137,-3085,-4497,-5875,-6430,-6801,-7058,-6667,-5605,-3587, -914,1930,3662,3468,1644,-1305,-4245,-5770,-4808,-1773, 2038,5237,7488,8886,8580,6266,3524,1671,1277,2149, 3579,5443,6920,7425,6720,5302,4239,4178,4255,3613, 2410,1012,128,-357,-519,149,1700,3315,4529,5751, 7054,7877,7532,6600,5917,5512,5335,5232,4905,4614, 4346,3870,3601,4201,5929,7965,9078,9566,10104,11018, 12100,12096,10556,7266,2268,-3308,-7909,-10583,-11683,-11381, -10542,-10155,-10025,-10344,-11248,-11876,-11734,-10181,-7515,-4679, -3125,-2771,-2543,-2832,-3421,-3947,-3691,-2434,-806,692, 1488,1699,1883,2036,2430,3377,5246,7987,10372,10941, 9177,6405,3903,2210,2027,3032,4237,4762,4619,4352, 4236,4344,4812,6222,8691,11351,13346,13964,12836,10283, 7595,5828,4463,2478,-347,-3459,-6307,-8098,-8199,-7096, -5455,-4144,-3791,-3695,-2935,-933,2134,5324,7593,7908, 6397,4285,2460,1224,304,-478,-1153,-1857,-2900,-4794, -7376,-9715,-9931,-6667,-992,4596,8195,9152,8146,6997, 7629,10167,13207,15345,16300,16731,17052,17070,16617,15515, 13851,12296,11375,11030,10461,9218,7156,4809,3138,2948, 4182,5550,4970,1063,-4731,-9729,-11468,-9961,-7096,-4902, -4531,-5050,-4739,-3235,-1503,-1309,-3292,-6739,-10624,-12886, -12053,-8706,-5565,-4106,-3944,-5191,-7454,-10540,-13593,-15876, -17478,-17278,-14746,-10446,-6045,-3787,-4170,-6315,-8081,-7814, -5747,-3692,-3755,-5433,-7580,-9406,-10097,-9384,-7961,-7507, -8527,-10070,-11169,-11219,-10464,-9562,-8557,-7470,-6214,-4552, -2981,-2446,-3252,-4542,-5652,-6181,-5184,-2578,379,2514, 3873,4648,3836,1127,-2894,-7100,-10025,-11101,-10109,-7375, -4023,-1433,-197,436,615,194,-766,-1997,-2512,-1934, -969,-147,-81,-484,-656,-96,1063,2557,4300,5588, 5470,3918,2285,1683,2392,4025,6152,8138,9387,9651, 8836,6888,3751,126,-2467,-3129,-2061,3,1622,1794, 564,-420,218,2567,5723,8069,8859,8199,7056,6193, 5477,4799,4167,3334,2422,1632,1557,2487,3760,4811, 6029,8121,10803,13587,15743,15664,12830,8522,4609,1617, -1073,-3642,-6021,-7813,-9030,-9941,-10681,-11447,-12063,-12505, -12496,-11749,-10162,-8114,-6483,-5399,-4547,-3620,-2780,-2250, -2337,-3183,-4232,-4601,-4143,-2597,-194,2082,3326,3314, 3184,3978,5652,7611,9029,9314,8416,6912,5603,4404, 3345,2865,3099,3691,3784,3501,3214,3528,5295,8455, 12203,14918,15619,14372,11794,8861,6065,4024,3116,2656, 1891,-142,-3250,-6131,-8193,-8833,-7910,-5702,-2939,-466, 1217,2309,3328,4501,5700,6601,6921,6208,4156,1101, -1541,-2881,-3637,-4846,-6322,-6982,-6095,-4341,-2671,-1574, -681,794,2816,5562,8134,9337,9346,9378,10845,13788, 17556,20413,20416,17288,12661,8985,7630,8554,10890,13101, 13704,12116,9475,8027,7734,6688,3911,281,-3135,-5396, -5940,-5398,-4922,-4543,-3654,-2276,-977,-559,-1722,-4800, -8809,-11646,-11446,-8126,-3983,-1427,-954,-2306,-4692,-7075, -8615,-9700,-11585,-13828,-15277,-14749,-12222,-9122,-6466,-5663, -6845,-8707,-9632,-9114,-8077,-6954,-5938,-5429,-5308,-5408, -5365,-5681,-7185,-9050,-10128,-10064,-9747,-9471,-8798,-8151, -7709,-7060,-6002,-4900,-4700,-5666,-7466,-9300,-9862,-8331, -4889,-759,2911,5721,7486,7123,3910,-1212,-6421,-9888, -10610,-8864,-6444,-4661,-3867,-3802,-3998,-4117,-3970,-3765, -3534,-2884,-1894,-1310,-1305,-1791,-2418,-2516,-1531,318, 1964,2486,1811,425,-1186,-2156,-1679,239,2756,4753, 5737,6405,7581,9073,9785,8619,5706,2221,-433,-1467, -1283,-1155,-1761,-2768,-3461,-3246,-2035,-246,1517,3080, 4732,6886,9035,10145,9690,7879,4815,1206,-1239,-1590, 13,2063,3361,3841,4127,5379,7719,10328,12497,13721, 14295,14146,13178,10967,7073,2109,-2698,-5398,-5618,-4685, -4702,-7219,-11060,-14281,-15624,-14755,-12346,-9132,-6102,-4095, -3308,-3622,-4208,-4672,-4652,-4475,-4428,-3808,-2974,-2355, -2459,-2888,-2662,-1891,-572,1343,3405,4990,5698,6362, 7971,9951,10571,8805,5625,2637,899,704,1652,3008, 4323,5393,5966,6284,6959,8363,10315,12277,13348,13362, 12386,10082,6789,3872,2278,1368,576,-417,-1703,-3971, -7047,-9721,-10440,-8505,-4685,-221,3844,6400,7122,6304, 4513,2667,1574,2104,3142,2669,-22,-3558,-5850,-6534, -6079,-4852,-3659,-3667,-4790,-5286,-4014,-1558,1252,3880, 6648,9249,11312,13503,15719,16929,16319,14545,12550,10831, 10028,10579,11889,12762,13577,15266,16583,15822,12382,6932, 1299,-2875,-3886,-1607,1958,4262,3967,2048,-511,-2600, -3606,-4074,-5052,-6766,-7780,-7462,-6395,-4671,-2772,-1602, -1780,-2778,-3705,-4478,-5352,-7209,-9751,-11779,-12462,-11618, -9994,-8269,-7462,-8015,-9285,-10367,-10825,-10918,-10700,-9677, -7951,-5768,-3746,-2592,-2776,-4622,-7187,-9926,-12020,-12500, -11191,-8808,-6521,-4890,-4259,-5295,-7871,-10982,-13444,-14727, -14552,-12207,-8540,-4970,-2581,-938,767,2249,3311,3319, 2075,74,-2131,-4047,-5848,-7657,-8821,-8473,-6426,-3576, -1397,-1260,-3161,-5680,-7520,-7282,-5357,-2896,-707,406, 554,112,-403,-902,-1399,-1620,-1880,-2148,-2059,-1412, -277,519,830,802,1695,4308,7571,10314,10987,9148, 5972,3461,2759,2994,2851,1225,-1481,-3710,-4607,-4241, -3457,-2312,-520,1744,4654,7448,9337,9718,8185,5622, 3212,2262,2608,2943,2611,1485,402,382,1756,4851, 8289,10399,10581,10026,10631,12435,14388,14838,13305,10077, 6257,3047,354,-2263,-4858,-6825,-8084,-9098,-9816,-10608, -11654,-12337,-11816,-9493,-6713,-4640,-3878,-4407,-5554,-6786, -6580,-4495,-1972,-634,-1399,-3438,-5527,-6385,-5089,-2288, 1026,4009,6171,7541,7633,6845,5604,4461,3889,3478, 3546,3825,3330,1944,874,1276,2736,4602,6803,8914, 10107,9904,9442,9679,10522,11478,11774,11108,9032,5908, 3015,913,-784,-2239,-3144,-4299,-6347,-7987,-7784,-5197, -1009,3201,6206,6824,5432,3239,1532,761,547,829, 1358,2005,2188,1341,-318,-2735,-5411,-7244,-7853,-7277, -6133,-4693,-3108,-1336,1155,4758,9446,13541,15432,14717, 12451,10168,9098,10400,13365,16233,18036,18549,18303,17647, 16675,14832,11155,6528,2937,1828,2882,4658,6351,7093, 6236,3828,1187,-450,-1736,-3220,-4747,-5776,-5672,-4770, -3634,-2543,-2130,-2535,-3651,-4310,-4249,-4039,-4324,-5716, -7660,-8936,-8582,-7203,-6317,-6395,-7554,-9164,-10736,-12311, -13024,-12505,-10861,-8770,-6429,-4291,-3492,-4223,-6298,-9015, -11229,-11839,-10264,-7449,-4532,-2427,-2042,-3542,-6390,-9551, -12019,-13582,-14123,-14143,-13259,-11765,-10348,-8882,-7095,-4464, -1460,1184,2790,2881,1947,343,-1370,-2717,-3907,-4993, -6050,-6142,-5090,-3820,-3671,-5216,-6998,-7899,-7606,-6591, -5237,-3408,-1738,-572,411,1439,1918,1089,-639,-2650, -4201,-4518,-3574,-1702,-23,655,348,-237,-13,1508, 4127,6789,8538,9519,10123,10418,9463,6814,3027,-1169, -3920,-4164,-2482,-865,-902,-2097,-3235,-2612,13,3740, 7751,10263,10109,7507,4462,2590,1487,1042,1318,1818, 2327,2768,3351,3365,2741,2867,4405,7632,11416,14587, 16448,16065,13975,11761,10486,9215,6501,2775,-1069,-4180, -5865,-6214,-5960,-6578,-8330,-10872,-13088,-13520,-11847,-8880, -6433,-5088,-4275,-3767,-3573,-4230,-5535,-6558,-6894,-6201, -4684,-2817,-1830,-2291,-3071,-2762,-265,3397,6622,8448, 8049,5695,2692,859,876,2079,3656,4556,4314,3244, 2535,2862,3397,4105,5435,7570,9803,11299,12099,12099, 11445,10643,9955,9234,7818,5542,2777,-321,-3165,-5066, -5538,-5034,-4060,-2720,-1191,323,1298,2022,3019,3589, 2956,1394,265,299,1218,2645,4130,4983,4091,903, -3760,-8416,-11224,-11559,-9699,-6520,-3206,-361,1735,3046, 3789,4567,5443,5549,5391,6625,9692,13474,16410,17933, 18212,17977,17829,17407,16727,15146,12427,9590,7402,6541, 6577,7244,8029,7889,7011,5588,3893,1897,-292,-1959, -3309,-4041,-3785,-2398,-479,209,-924,-3345,-5759,-7098, -7261,-6427,-5505,-4850,-3959,-3113,-2828,-3529,-5406,-8446, -11940,-13545,-12295,-9380,-6898,-5910,-5835,-6522,-7767,-9356, -10403,-10431,-9836,-9074,-8457,-7942,-7255,-6171,-4618,-3278, -2450,-2464,-3784,-6184,-9129,-12020,-14590,-16252,-16214,-14370, -11426,-8683,-6797,-5729,-4855,-3815,-2883,-1680,-150,953, 1249,807,-168,-1870,-3618,-4274,-3858,-3475,-4422,-6134, -7601,-8446,-8521,-7932,-6528,-4811,-2834,-353,1670,2327, 1472,-397,-2202,-3402,-3185,-1869,-866,-1048,-2550,-4351, -5356,-4771,-2442,990,4486,6704,7636,8261,9094,10251, 10686,9659,7027,3518,401,-1902,-3261,-3886,-3685,-2749, -1554,-169,1295,2664,3339,3433,4227,5779,7174,7171, 5328,2672,168,-666,520,2315,3166,2413,1165,480, 1415,4352,8186,11803,14234,15605,16075,15066,13174,10849, 8394,6057,4299,3614,2990,1209,-2428,-6860,-10391,-12074, -11522,-9474,-7535,-7069,-8141,-8903,-8120,-6227,-4404,-3665, -4256,-6046,-7808,-8136,-7221,-5970,-5151,-4341,-2713,-791, 715,1725,2370,2475,2413,2947,3978,4748,4421,3138, 1663,1019,1973,3703,4787,4305,2784,1562,1512,3029, 5870,9539,12633,13863,13611,12570,11378,10398,9003,7388, 5408,3262,1039,-1155,-2940,-4124,-3952,-2443,-589,485, 507,-72,-1008,-1597,-991,486,2374,4275,6011,7193, 7149,5735,2809,-1161,-5393,-8632,-9808,-8999,-6772,-4366, -2974,-2770,-3196,-3159,-2552,-2005,-1455,-407,1912,5544, 9938,14132,16947,17893,17553,17413,18092,18950,18918,17440, 15294,13566,12610,12300,12330,12306,11674,10587,9372,7733, 5546,2979,487,-1351,-1672,-307,1829,3377,3159,1073, -2773,-7118,-9477,-8697,-5743,-2873,-1503,-1399,-2021,-3275, -5054,-7191,-9648,-11825,-12225,-10577,-7950,-5824,-5382,-6164, -7392,-8321,-8969,-10102,-11488,-12524,-12764,-12287,-11446,-10011, -7908,-5406,-3334,-2300,-2137,-2686,-3809,-5670,-8258,-11160, -13870,-15685,-16121,-15168,-13347,-11604,-10369,-9626,-8908,-7707, -6441,-5531,-4703,-3009,-616,1378,2440,2510,1984,381, -2368,-5459,-7914,-8951,-8752,-7842,-7056,-7145,-7772,-8513, -8598,-7400,-4511,-520,2222,2745,1423,-715,-2780,-4204, -4553,-4287,-3960,-4011,-4579,-4905,-4674,-3871,-1991,1157, 5267,8995,11481,12469,11585,9477,7118,5218,3768,2288, 746,-759,-2146,-3041,-2804,-1272,268,891,1042,1656, 2970,4453,5729,6455,6237,5205,3915,2581,1154,-246, -1209,-1319,-244,2020,4619,6280,6586,6524,7629,10385, 13912,17042,18762,18344,15684,12070,9434,8073,6939,5292, 2938,-65,-3417,-6420,-8708,-10144,-10730,-10251,-8675,-6982, -6000,-5988,-7209,-9061,-10368,-10149,-8380,-6553,-5821,-6206, -6838,-6620,-5213,-2980,-1033,-134,-101,-421,-488,-30, 1076,2436,3164,3353,3295,3176,2724,2094,1899,1988, 1913,1718,1814,2877,4872,7248,9805,12517,14995,16068, 15007,12261,8949,5949,3993,3398,3385,3152,2813,2433, 1792,709,-1027,-3327,-5427,-6468,-5595,-2964,20,2214, 3710,4817,5370,5275,4688,3154,617,-2049,-3652,-3984, -3831,-3461,-3185,-3368,-4135,-5246,-6005,-6347,-6695,-7147, -7246,-6098,-3243,1042,6104,10471,13159,14380,15070,15917, 16779,17004,16005,14483,14152,15723,18423,19968,18732,15459, 11664,8698,6789,5946,6086,6462,6803,6668,6104,5375, 4506,3310,1269,-1136,-2719,-2933,-2393,-2172,-2301,-2604, -3349,-4077,-3928,-3260,-3940,-6484,-9504,-11221,-10728,-8383, -5742,-4027,-3268,-3195,-3941,-5646,-8175,-10942,-13208,-14696, -15120,-14237,-12142,-9784,-8203,-7223,-5970,-4184,-2543,-1408, -1227,-2745,-5799,-9572,-12659,-13896,-13650,-12823,-11751,-10821, -10710,-11774,-13101,-13873,-13375,-10913,-6989,-2967,-92,1379, 1805,1349,410,-334,-523,-741,-2150,-4618,-6973,-8421, -9128,-9550,-9354,-8799,-8262,-7406,-5826,-3645,-1372,481, 1734,1925,1062,-190,-1941,-4322,-6418,-7209,-6738,-6014, -5386,-4545,-3285,-1514,831,4066,7748,10697,11983,11367, 9532,7243,5171,3665,2645,2257,2272,1786,277,-1939, -3659,-3936,-2713,-170,3089,6042,7328,6632,4977,3245, 2291,2144,1970,1422,713,397,550,695,1020,1607, 2615,4027,5727,7899,10294,12562,14160,15290,16418,17021, 16381,14064,10774,7621,4695,2156,436,-751,-2157,-4520, -7122,-8813,-8944,-7609,-6200,-6115,-7500,-9365,-10572,-10929, -10613,-9542,-8176,-7121,-6478,-5593,-4666,-4374,-4538,-4596, -3743,-2338,-1242,-473,127,751,1446,2227,2931,3245, 3173,2562,1411,88,-1217,-1817,-1104,936,3993,7636, 11087,13563,14567,14004,11989,9186,6662,5456,5932,7402, 8756,9143,8294,6534,4191,1337,-2009,-5289,-6990,-6130, -3457,-332,2023,2994,2881,2945,3598,3434,2024,365, -389,-202,102,260,50,-597,-1279,-1901,-2385,-2967, -4200,-6361,-8992,-11158,-12154,-10951,-7054,-1477,3877,7374, 8498,8184,8149,8946,9900,11011,12777,15580,19108,21733, 21970,19985,16592,12674,9823,9232,10246,11305,11228,10297, 9343,8383,7517,6530,5252,3598,1847,958,1078,1621, 1736,919,-245,-1331,-1817,-1809,-2311,-4019,-6518,-8443, -9039,-8741,-7820,-6485,-4933,-3693,-3082,-2569,-2525,-3400, -5159,-7905,-11112,-14072,-15747,-15560,-13852,-11231,-8498,-6182, -4678,-4120,-4211,-4937,-5716,-5736,-4815,-3576,-3659,-5774, -8806,-11447,-12952,-13275,-12624,-11758,-11496,-12043,-12887,-12991, -11697,-9142,-5972,-2954,-411,1465,2305,1982,891,-430, -1527,-2386,-3158,-3878,-5040,-6814,-9128,-11123,-11661,-10297, -7370,-4209,-1952,-718,-174,379,897,898,-100,-2081, -4430,-6758,-8241,-8241,-7100,-5554,-4000,-2160,-288,1009, 1955,3205,5089,7128,8779,9734,9410,7927,5705,3155, 1144,70,187,564,9,-1147,-1746,-1187,130,1776, 3671,5189,6029,5673,4056,2207,515,-468,-299,799, 2146,2654,2002,483,-721,-509,1077,3783,6912,9863, 12349,14049,15219,16069,16432,15902,14078,11510,8903,6809, 5095,3583,2330,1027,-705,-2379,-3544,-4582,-5884,-7201, -8328,-9192,-9529,-9380,-9401,-9786,-9737,-8784,-7253,-5752, -4414,-3613,-3760,-4675,-5615,-5427,-4207,-3035,-1735,394, 2898,4566,4407,2580,261,-1588,-2910,-3775,-3796,-2672, -121,3148,6074,8066,9097,9593,9499,9049,8502,7963, 7694,8199,9566,11059,11376,10347,8699,7025,4884,1837, -1354,-3388,-3557,-2679,-1575,-532,141,757,1659,2741, 3096,2035,44,-1673,-2240,-1847,-390,1961,3747,4275, 3606,1731,-1157,-4490,-7337,-9406,-10575,-10432,-9018,-6864, -5176,-4454,-4066,-3601,-2357,-288,2475,5452,7856,10020, 12401,14927,17041,18291,18785,18074,16432,14763,13478,12836, 12626,12688,12715,12461,12110,11455,10303,8187,5346,2970, 2177,3208,5077,6403,6426,5313,3620,1680,-225,-1665, -2543,-3408,-4503,-5746,-7099,-8333,-8622,-7488,-5141,-2254, 191,1018,-180,-3103,-6809,-9919,-11707,-11862,-11140,-10675, -10741,-10984,-10920,-10486,-9400,-7662,-6092,-5105,-4582,-3959, -3309,-3201,-3718,-4949,-6389,-7657,-8710,-9884,-11547,-13153, -14243,-14497,-13845,-12686,-11555,-10922,-10544,-9320,-6909,-3545, -123,2273,3007,1759,-441,-2168,-2771,-2683,-3209,-4918, -7475,-10027,-11483,-11438,-10068,-7965,-5191,-1910,834,2266, 1710,-281,-2686,-4767,-5633,-5231,-4532,-4446,-5096,-5959, -6584,-6506,-5166,-2570,269,2293,3889,5395,6653,7495, 7773,7550,6675,5405,4135,2861,1510,409,46,442, 1035,1651,2330,2689,2453,2399,3223,4464,5152,4577, 3223,1872,793,400,961,2007,2234,1117,-390,-1081, -434,1058,3113,5811,9141,12611,15066,15850,15341,14291, 13416,12618,11833,11014,10174,8966,7216,5428,3789,2195, 816,-226,-1140,-2636,-5243,-8059,-9651,-9885,-9992,-10235, -9900,-8608,-6829,-5564,-5294,-6420,-8179,-9271,-8919,-7441, -5260,-2295,892,3246,4128,3317,1288,-1463,-4334,-6157, -6517,-5573,-3771,-1173,1623,3155,3482,3415,3477,3918, 4736,6045,7742,9458,10757,11274,11107,10346,9726,9757, 9545,8420,6256,3475,667,-1592,-2604,-2202,-642,1518, 3370,4209,3397,1344,-1196,-3353,-4163,-3537,-1667,1060, 3879,5631,5505,3801,1243,-1063,-2549,-3218,-3437,-3751, -4134,-4538,-5154,-6148,-7514,-8780,-9447,-8902,-7098,-4404, -1544,909,3247,5706,8430,11359,14055,15698,15903,15344, 14873,14965,15662,16379,16707,16389,15305,13784,12112,10630, 9439,8232,6913,5918,5502,5239,5242,5753,6980,8697, 9627,8767,5980,1910,-2282,-5663,-7384,-7120,-5709,-4481, -4198,-4345,-4359,-3888,-3168,-2632,-2046,-1988,-2951,-4799, -7122,-9175,-10482,-11076,-11198,-10815,-9751,-8887,-9352,-10708, -11456,-10419,-7926,-4904,-2414,-1488,-2254,-3992,-5561,-6281, -6611,-6944,-7833,-9601,-11691,-13186,-13659,-13588,-13466,-13406, -13011,-12064,-10435,-7648,-4289,-1638,-34,1335,2658,3145, 1987,-741,-4054,-6745,-8264,-8286,-7424,-6758,-6928,-7599, -7634,-6593,-4523,-2026,-79,559,-288,-1861,-3338,-4293, -4730,-5026,-5398,-5676,-5541,-5297,-5370,-5453,-4877,-2961, 164,3308,5477,6439,6475,5745,4846,4420,4489,4364, 3848,3331,2641,1673,1095,1455,2241,2335,1486,866, 1269,2475,3703,4369,4062,3103,2496,2296,1722,345, -1183,-2027,-1874,-982,69,821,1302,2335,4649,7643, 10045,11486,12341,13008,13127,12553,11797,11235,10926,10589, 10092,9561,9060,8671,7633,5113,1564,-2084,-4874,-6581, -7393,-7550,-7341,-6810,-6506,-6654,-7310,-8566,-10180,-11718, -12360,-11497,-9236,-5986,-2414,696,2504,2676,1526,-280, -2126,-3868,-5178,-5606,-4939,-3318,-1662,-910,-1034,-1142, -466,794,1970,2652,3026,3751,5214,7458,9827,11807, 13043,13319,12663,11021,8776,6327,4050,2456,1999,2713, 4096,5138,5174,4211,2624,843,-705,-1796,-2280,-2007, -1213,-315,573,1618,2596,2926,2409,1422,701,367, 52,-546,-1209,-1520,-1570,-1713,-2186,-3730,-6606,-10005, -12696,-13572,-12059,-8701,-4920,-1712,558,1999,2956,3829, 5296,7894,11118,13767,15288,15875,15981,15605,15053,15148, 16176,17165,16686,14412,11076,7742,5164,3956,4409,6192, 8468,10390,11341,11309,10445,8816,6413,3514,954,-829, -2311,-3887,-5036,-5088,-4225,-3298,-2636,-1991,-1776,-2611, -3977,-4588,-3973,-2794,-2584,-4096,-6681,-9072,-10471,-10647, -10079,-9592,-9519,-9988,-10580,-10709,-9806,-8023,-6075,-4474, -3203,-2210,-2098,-3127,-4797,-6640,-8246,-9160,-9001,-8152, -8240,-10281,-13787,-16886,-18005,-16433,-12658,-8465,-5419,-3621, -2152,-976,-456,-319,-305,-740,-2004,-3574,-4742,-5460, -6074,-6832,-7694,-8160,-7690,-6324,-4803,-3838,-3675,-3568, -2768,-1740,-1243,-1845,-3706,-6102,-7616,-7366,-6002,-5083, -5301,-5889,-5709,-4445,-2285,167,2277,3897,4704,4582, 3835,3148,3018,3301,3504,3628,4017,4440,4365,3320, 1558,48,-365,629,2561,4426,5412,5383,4807,4102, 3254,1998,498,-667,-1108,-811,-542,-744,-1007,-912, -134,1371,3324,5622,8229,10200,10770,10139,9253,9056, 9778,10973,12038,13010,13968,14808,14971,13601,10411,6228, 2484,148,-705,-526,47,370,-19,-1423,-3909,-7281, -10860,-13616,-14765,-14139,-12078,-9217,-6534,-4719,-3597,-2426, -1060,123,737,623,-372,-2125,-4016,-5106,-5103,-4337, -3182,-2006,-1190,-1052,-1577,-2579,-3741,-4241,-3233,-322, 4124,8849,12525,14329,13927,11926,9378,7173,5625,4975, 5250,6283,7344,7498,6786,5660,4220,2427,814,61, 143,419,165,-502,-817,-231,1159,2314,2448,1463, 46,-1097,-1498,-726,883,2457,2981,2373,1251,-244, -2178,-4444,-6414,-7585,-8403,-9447,-10348,-10419,-9622,-8206, -6015,-3098,-365,1363,2046,2389,3365,5460,8496,12023, 15286,17753,19194,19284,17904,15958,14411,13158,11910,10635, 9327,7637,5876,5265,6634,9350,12025,13551,13464,11609, 8650,5625,3090,1545,945,757,54,-1396,-2723,-3058, -2718,-2725,-3114,-3228,-2718,-2191,-2259,-2831,-3778,-4709, -5145,-5340,-5606,-6446,-8053,-9980,-11607,-12152,-11217,-9314, -7917,-7594,-7994,-8530,-8325,-6779,-4130,-1914,-1551,-2865, -4663,-6079,-6915,-7826,-9367,-11379,-13215,-14181,-14350,-14372, -14342,-13393,-11300,-8300,-5006,-2381,-1189,-1435,-2592,-3792, -3937,-3122,-2304,-2294,-3528,-5534,-7269,-7864,-7279,-6403, -5867,-5569,-5047,-4037,-2799,-1887,-1985,-3039,-4299,-5333, -6074,-6700,-7159,-7206,-6877,-6258,-5391,-4086,-2469,-1276, -646,-298,62,669,1882,3448,4234,3791,2933,2832, 3612,4354,4083,2801,1467,1128,1891,2901,3206,3055, 3515,4677,5731,5878,4990,3329,1343,-486,-1818,-2524, -2800,-2791,-2338,-1314,323,2303,4156,5523,5994,5660, 4924,4463,4748,6051,8510,11442,13990,15604,16132,15437, 13417,10481,7715,6155,5896,6473,7396,7813,6923,4917, 2520,103,-2601,-5639,-8796,-11550,-13201,-13545,-12756,-11202, -9261,-7196,-5148,-3275,-1724,-723,-752,-1937,-3517,-4311, -3506,-1848,-545,-114,-757,-2214,-4234,-6154,-7381,-7862, -7477,-5982,-3005,868,4426,7031,8503,9207,9423,9286, 9163,8758,7988,7136,6555,6644,7715,9253,9749,8171, 5030,1846,-106,-536,291,1982,3516,4048,3330,1847, 292,-1095,-1660,-1166,-68,1097,1851,2038,1595,829, 473,1015,2027,2527,2173,601,-2602,-6399,-9212,-10113, -9534,-8407,-7415,-7055,-7134,-7315,-7177,-6504,-5183,-3117, -621,1891,4322,7136,10592,14114,17037,18818,18857,17327, 15088,13122,11443,10092,9352,9250,9372,9261,9030,8964, 9365,10244,11239,11864,11803,10645,8271,5285,2571,781, 399,1301,2272,1976,129,-2395,-4579,-5294,-4241,-2387, -906,-479,-1186,-2705,-4587,-6156,-6888,-6768,-6439,-6507, -6848,-7447,-8362,-9768,-11158,-11858,-11594,-10019,-7643,-5538, -4421,-4095,-3668,-3013,-2745,-3204,-4330,-6068,-8318,-10369, -11572,-12217,-12676,-13088,-13220,-13166,-12756,-11361,-9026,-6344, -4323,-3509,-3831,-4439,-4207,-3281,-2707,-3056,-3991,-4473, -4275,-4319,-5433,-7052,-7911,-7367,-5478,-3132,-1467,-1172, -2291,-4075,-5642,-6727,-7373,-7518,-6997,-6197,-5613,-5157, -4874,-4749,-4812,-4734,-4187,-3122,-1493,261,1596,2012, 1550,1083,1134,1770,2461,2773,2882,2771,2547,2295, 1880,1467,1462,2299,3775,5691,7534,8400,7483,4819, 1398,-1725,-4114,-5359,-5107,-3281,-568,1885,3501,4109, 3385,1397,-652,-1447,-313,2319,5423,8315,10293,11420, 11998,12185,11989,11342,10580,9942,9606,9851,10521,11029, 10859,10318,10163,10126,9330,6890,2973,-1742,-6722,-10752, -12663,-12263,-10463,-8567,-7035,-6117,-5864,-5978,-6255,-6459, -6194,-4671,-1738,1270,3059,3176,1802,-543,-3189,-5199, -6124,-6458,-6977,-7643,-7764,-6967,-4962,-1742,1930,4789, 5877,5657,5122,5306,6609,8434,9737,10183,10338,10330, 9833,8542,6580,4877,4265,4523,4970,5006,4258,2849, 1754,1757,2448,3189,3250,2277,400,-1572,-2461,-1841, -97,2003,3630,4031,3198,1927,970,721,820,530, -299,-1636,-3290,-5008,-6552,-7609,-8005,-7493,-6860,-6992, -8023,-9379,-10154,-9879,-8196,-4693,192,5199,8967,11279, 12742,13684,14411,15045,15537,15217,13996,12431,10727,9327, 8898,9688,10952,11549,11405,10948,10607,10396,10274,10317, 10207,9689,8692,7263,5348,3089,1343,551,630,982, 821,-18,-1145,-1980,-2224,-2209,-2461,-2938,-3087,-2849, -2979,-3986,-5477,-6303,-6053,-5583,-5854,-7439,-9942,-12047, -12550,-11403,-9395,-7337,-5723,-4383,-3176,-2648,-2914,-3759, -4748,-5656,-6632,-7607,-8801,-10019,-11157,-12302,-13080,-13175, -12406,-11167,-9975,-8915,-8096,-7431,-6742,-5696,-4280,-3368, -3422,-4231,-5047,-5422,-5570,-5532,-5501,-5450,-5263,-4821, -3968,-3058,-2663,-2999,-3757,-4697,-5562,-6037,-6168,-6372, -6921,-7367,-7109,-6425,-5756,-5523,-5658,-5759,-5272,-3954, -2354,-1282,-878,-571,47,526,701,1100,1815,2277, 1924,1267,613,-279,-992,-513,1710,4885,7923,10013, 10308,8693,5695,2437,-314,-2198,-2655,-1727,-301,831, 1417,1608,1092,-251,-1714,-2372,-1972,-796,990,2997, 4788,6266,7563,8910,10145,10798,10602,9609,8377,7432, 7371,8460,10462,12865,15033,16366,16322,14930,12473,8912, 4495,338,-2330,-3270,-3276,-3715,-5343,-7632,-9545,-10487, -10162,-9308,-8794,-8368,-7293,-5116,-2065,1236,3822,4883, 4027,1358,-2070,-5324,-7707,-8541,-7904,-6552,-5316,-4387, -3819,-3934,-4360,-4365,-3139,-574,3060,6883,9162,9240, 8130,7545,8222,9530,10542,10461,8964,6799,5052,4379, 4397,4578,4916,5238,5222,4696,3837,2649,1286,276, 24,300,567,714,848,991,1421,2322,3197,3539, 3066,1771,92,-1262,-1874,-1397,-114,835,390,-1759, -4613,-6976,-8355,-8891,-9318,-10040,-10772,-11006,-10371,-8924, -6700,-3485,848,5805,10153,12797,13182,12071,10832,10569, 11680,13162,13819,13603,12844,11826,10583,9350,8656,8997, 10587,12338,12941,12218,10934,9894,8909,7767,6769,6209, 5817,5041,4067,3122,2276,1478,649,9,-638,-1575, -2586,-3082,-2661,-1971,-1750,-2238,-3291,-4306,-4933,-5295, -5927,-7084,-8348,-9420,-10198,-10539,-10281,-9354,-8073,-6653, -4868,-2951,-2007,-2706,-4401,-6122,-7336,-7936,-7816,-7381, -7766,-9338,-11181,-12292,-12679,-12767,-12276,-11061,-9381,-7629, -6096,-5051,-5147,-6074,-6876,-7208,-7174,-6784,-5709,-4472, -4003,-4285,-4578,-4359,-3899,-3425,-3020,-3100,-3570,-4035, -4241,-4500,-5390,-6639,-7586,-7950,-7966,-7510,-6426,-5321, -4864,-5069,-5580,-6089,-6159,-5364,-3523,-1032,1437,3171, 3548,2361,193,-2035,-3780,-4518,-3941,-1936,919,3721, 5710,6824,7304,7133,6236,5026,3984,3382,3120,3091, 2833,1925,771,143,327,445,-171,-1281,-2543,-3502, -3783,-3195,-1754,448,3365,6559,9117,10031,9075,6964, 4441,2684,2834,4963,8284,11329,13490,14508,14329,13754, 13610,13921,13785,12354,9862,7050,4802,3449,2512,1091, -1316,-4234,-7193,-9774,-11959,-13460,-13360,-11196,-7443,-3199, 264,2078,2108,886,-507,-1272,-1379,-1345,-1831,-3152, -4860,-6216,-6844,-6647,-6008,-5444,-5284,-5507,-5603,-4756, -2385,1126,4597,7136,8617,9416,9684,9268,8197,7196, 7171,8080,9049,9104,7835,5753,4002,3792,5043,6480, 6659,5102,2512,88,-1097,-874,173,1395,2623,3930, 4828,4336,2533,702,135,560,933,922,894,1075, 1068,744,382,72,-445,-1588,-3643,-6443,-9611,-12254, -13502,-13180,-11561,-9501,-7625,-6056,-4248,-1621,1633,4644, 6843,8528,9990,10828,10956,10946,11223,11646,11806,12027, 12346,12271,11412,10285,9877,10374,11256,11841,11892,11008, 9408,8118,7659,7663,7628,7506,7102,6176,5031,3965, 2805,1331,-68,-585,-358,-144,-500,-1179,-1809,-2459, -3044,-3319,-3369,-3710,-4672,-6090,-7654,-9066,-9654,-9274, -8492,-8030,-7657,-6835,-5706,-4767,-4310,-4376,-4775,-5278, -5566,-5509,-5692,-6697,-8313,-9869,-10922,-11427,-11362,-10889, -10368,-10025,-9469,-8346,-7058,-6287,-6311,-7102,-8404,-9506, -9337,-7808,-6194,-5495,-5445,-5431,-5323,-4930,-4079,-2939, -2094,-1824,-1904,-2466,-3624,-5255,-6855,-7763,-7612,-6590, -5425,-5056,-5850,-7211,-8472,-9714,-10491,-9979,-7786,-4205, -371,2470,3548,2842,746,-2068,-4526,-5914,-6073,-5096, -3145,-789,1060,2146,2891,3719,4640,5271,5458,5202, 4604,4182,4135,4282,4235,4298,4831,5172,4070,1064, -2867,-6238,-7760,-6809,-4034,-992,1372,2945,4088,4822, 5152,5265,5043,4346,3407,2856,3168,4379,6320,8711, 11141,13027,13728,13246,12290,11557,11505,12072,13088,14262, 14955,14132,10988,5799,60,-4536,-6936,-7512,-7784,-8692, -9869,-10211,-9264,-7266,-4667,-2032,-105,718,775,495, -258,-1423,-2222,-2059,-1347,-1312,-2672,-5155,-7677,-9113, -9195,-8244,-6740,-5033,-3300,-1767,-394,1265,3586,6378, 8501,9254,8870,7869,6910,6516,7119,8266,9041,8928, 8196,7486,6600,5033,3368,2537,2557,2776,2812,2491, 1662,860,857,2128,3973,5272,5327,3845,1254,-1219, -2236,-1500,155,1893,3412,4376,4407,3284,1441,-828, -3375,-5562,-6958,-7836,-8902,-10352,-11732,-12415,-12075,-10537, -8099,-5356,-2745,-309,1928,3798,5315,6657,8043,9050, 9328,9433,10174,11556,12769,13094,12541,11666,10956,10617, 10661,10714,10409,10039,10102,10530,10561,9937,8931,7838, 7095,7156,7708,7617,6251,4031,1980,633,-52,93, 868,1320,990,194,-670,-1722,-3085,-4532,-5821,-6530, -6462,-5879,-5598,-6357,-7924,-9334,-9564,-8589,-6928,-5243, -4237,-4136,-4418,-4394,-4184,-4608,-5884,-7498,-8896,-9946, -10480,-10216,-9601,-9265,-9481,-9934,-9991,-9505,-8632,-7753, -7147,-7007,-7457,-8223,-8961,-9612,-10041,-10071,-9343,-7740, -5359,-2920,-1515,-1640,-2910,-4248,-5043,-5396,-5303,-4612, -3418,-2208,-1794,-2707,-5043,-8221,-10958,-12214,-12093,-11447, -10259,-8240,-5671,-3226,-1533,-673,-347,-392,-819,-1775, -3269,-5029,-6553,-6997,-6025,-3677,-611,2056,3513,3563, 2539,906,-521,-695,1145,4509,7957,9895,9744,8222, 6383,4649,2485,-336,-3161,-4998,-5450,-4853,-3655,-1990, -206,1510,3072,4143,4136,2755,754,-404,354,2742, 5438,7315,7941,7778,7264,6446,6038,7027,9648,12721, 14700,15472,15676,15952,16172,15834,14581,11776,7599,2942, -1147,-4133,-6066,-6988,-7103,-6799,-6415,-6341,-6606,-6976, -6529,-4425,-1296,1394,2475,2056,888,-509,-1582,-2030, -2198,-2695,-3946,-5668,-7414,-8835,-9510,-9194,-7726,-5377, -2417,456,2278,2780,2614,2973,4365,6304,8242,9465, 9621,9016,8349,8385,8891,9008,8320,7202,5892,4286, 2607,1430,1338,2006,2804,3555,4199,4587,4606,4065, 2779,1270,515,755,1240,1268,1025,1248,2014,3127, 4305,4910,4191,2096,-391,-2340,-3699,-5028,-6605,-8259, -9828,-11053,-11700,-11584,-10591,-8957,-6838,-4389,-2062,-146, 1273,2291,2849,3508,5111,7690,10282,11945,12446,12085, 11467,11171,11432,11999,12120,11448,10551,10071,10020,9915, 9603,9388,9412,9729,10145,10201,9367,7824,6174,4866, 4158,4021,4230,4294,3759,2736,1844,1215,526,-454, -1667,-3222,-4761,-5377,-4905,-4202,-4411,-5785,-7645,-9055, -9307,-8318,-6617,-4976,-3980,-3576,-3549,-3674,-4226,-5548, -7063,-7962,-7976,-7694,-7787,-8423,-9331,-10122,-10778,-11073, -10320,-8495,-6187,-4600,-4726,-6335,-8628,-10794,-12360,-12737, -11608,-9662,-7542,-5597,-4185,-3863,-4958,-6731,-7896,-7576, -5614,-2830,-557,547,703,113,-1427,-4081,-7068,-9158, -10148,-10720,-11313,-11651,-11430,-10252,-7734,-4330,-1157,449, 176,-1570,-3804,-5357,-6001,-6069,-5486,-4172,-2418,-1252, -1308,-1967,-2335,-2289,-2354,-2370,-1902,-681,1574,4410, 7090,9111,10365,10795,9676,6775,2722,-1564,-4550,-5227, -3447,-537,1367,1258,-408,-2110,-2887,-2347,-730,1139, 2568,3214,3231,3039,3021,3529,4300,4726,4606,4260, 4274,4750,5852,7920,11025,14665,17555,18936,18766,17283, 14831,12107,9993,8497,6769,4348,1298,-1720,-4225,-6099, -7225,-7489,-6887,-5928,-5153,-4850,-4496,-3181,-950,1124, 2334,2795,2626,1376,-994,-3569,-5185,-5466,-5206,-5324, -6159,-7309,-8190,-8149,-6826,-4792,-2663,-806,706,1867, 2683,3337,3950,4904,6665,9109,11369,12358,11791,10081, 7936,6074,4733,4215,4337,4499,4389,3996,3710,3646, 3834,4092,4031,3623,2938,2250,1889,1742,1631,1384, 1318,1656,2403,3432,4176,4442,4395,4160,3442,1857, -379,-2844,-5264,-7263,-8550,-9058,-9118,-9105,-9302,-9563, -9469,-8838,-7367,-5162,-2804,-1052,-58,759,1876,3441, 5247,6935,8567,10289,12023,13201,13180,12130,10669,9662, 9640,10461,11582,11950,11303,10237,9973,10853,11219,10791, 10117,9555,9005,8298,7796,7730,7771,7494,6502,5335, 4489,3962,3542,2893,1659,-146,-1896,-3223,-4156,-4840, -5722,-7097,-8376,-8557,-7320,-5736,-5148,-5670,-6111,-5618, -4507,-3430,-2962,-3220,-4138,-5409,-6986,-8933,-10914,-12247, -12462,-11695,-10180,-8343,-6926,-6412,-6789,-7725,-8886,-10263, -11230,-11185,-10075,-8775,-8334,-8875,-9795,-10396,-10446,-10112, -9727,-9430,-8770,-7618,-6237,-4502,-2294,329,2561,3270, 1934,-1456,-6005,-10330,-13193,-13998,-13325,-11808,-9893,-8056, -6681,-6039,-5985,-6258,-6443,-6014,-5180,-4451,-4154,-4052, -3780,-3411,-2794,-2145,-1874,-2701,-4897,-7523,-9117,-8518, -5505,-1030,3496,6765,8302,8417,7850,7373,7108,6737, 5762,4310,2840,1486,283,-695,-1199,-1278,-1525,-2339, -3285,-3514,-2758,-1433,181,1974,3891,5426,5795,4594, 2317,311,-425,475,2574,5049,7163,8610,9907,11507, 13665,16119,18198,19598,20011,19000,16653,13628,10939,8892, 7234,5370,2890,-2,-3059,-5836,-7916,-8968,-8740,-7317, -5109,-2938,-1396,-423,170,550,825,1033,910,134, -1058,-2475,-4112,-5906,-7414,-8044,-7817,-7183,-6757,-6711, -6733,-6489,-5706,-4296,-2330,-98,2180,4441,6657,8780, 10579,11692,11986,11442,10261,8637,7025,5973,5694,5931, 6082,5830,5443,5188,4931,4309,3543,3196,3411,3868, 3804,3095,2129,1237,792,1230,2804,4723,5995,6515, 6425,5781,4354,2411,744,-551,-1596,-2826,-4598,-6600, -8284,-9319,-10067,-10709,-10842,-10070,-8668,-7617,-7070,-6533, -5662,-4326,-2268,344,2687,4376,5923,7843,10181,12203, 12980,12386,11409,11228,12139,13447,14016,13578,12681,12038, 11748,11374,10804,10197,9833,9943,10304,10518,10287,9497, 8452,7450,6860,6826,7304,8085,8404,7497,5163,2081, -787,-2690,-3314,-3419,-3956,-4963,-5801,-6164,-6643,-7508, -8300,-8330,-6948,-4331,-1331,624,545,-1453,-4493,-7538, -9916,-11065,-10813,-9730,-8481,-7660,-7704,-8480,-9449,-9812, -9471,-9016,-8786,-8735,-8603,-8476,-8445,-8345,-8135,-8062, -8443,-9526,-11305,-13352,-14730,-14838,-13436,-10607,-6794,-2824, 278,2072,2372,1305,-769,-3252,-5517,-7355,-8912,-10302, -11083,-10712,-9378,-7752,-6676,-6701,-7697,-9360,-10932,-11460, -9926,-6355,-2214,701,1296,-170,-2726,-5146,-6781,-7690, -8236,-8533,-8159,-6851,-5015,-3046,-1151,819,2907,4727, 6164,6910,6807,6135,5493,5261,5304,5495,5350,4149, 1588,-1891,-4837,-6079,-5350,-3169,-838,684,1143,1189, 1667,2490,2889,2325,1301,464,-9,-123,126,776, 2130,4273,6902,9498,11626,13242,14529,15603,16568,17609, 18394,18386,17229,15051,12212,9027,5962,3368,1325,-535, -2574,-4668,-6327,-7125,-7103,-6459,-4923,-2429,182,1759, 1736,759,-333,-1078,-1489,-1679,-1876,-2443,-3287,-4200, -5171,-6118,-7132,-8151,-8896,-9019,-8386,-7509,-6466,-4689, -1957,1026,3409,5348,7172,8893,9967,10045,9506,9042, 8914,8812,8259,7152,5871,5218,5597,6527,7100,6750, 5435,3660,2388,1930,1901,1804,1630,1903,2731,3677, 4114,4051,4160,4871,6012,6917,6840,5542,3489,1533, -3,-1389,-2709,-3884,-4889,-5972,-7179,-8316,-9239,-9777, -9986,-9910,-9677,-9408,-8700,-7199,-5136,-3263,-2007,-945, 649,3001,5576,7562,8645,9115,9881,11434,13152,14000, 13552,12486,11677,11398,11650,12140,12337,11878,10964,10143, 9492,9015,8655,8523,8650,8831,9295,10142,10803,10643, 9410,7414,5410,4198,4117,4310,3487,1065,-2307,-5462, -7769,-8982,-9005,-8092,-6729,-5082,-3372,-2004,-1380,-1595, -2250,-3012,-3880,-5003,-6310,-7525,-8371,-8714,-8551,-8135, -7602,-7388,-8011,-9610,-11466,-12574,-12326,-10503,-7737,-5120, -3530,-3286,-4351,-6656,-9761,-12752,-14824,-15567,-15280,-14571, -13595,-12022,-9408,-5756,-1795,1041,1731,422,-2156,-4954, -6885,-7225,-6166,-4804,-4148,-4615,-6225,-8411,-10494,-11906, -12678,-12879,-12248,-10499,-7783,-4929,-2854,-1952,-1956,-2172, -2262,-2815,-4611,-7486,-10104,-11091,-9983,-7390,-4656,-2937, -2598,-3055,-3296,-2450,-352,2502,5342,7463,8492,8447, 7590,6322,5010,3529,1630,-446,-1957,-2591,-2702,-2818, -2982,-2480,-842,1432,2910,2887,1889,543,-802,-1640, -1580,-775,109,692,1102,1651,2472,3579,5427,8155, 11240,13876,15678,16724,17214,17358,17146,16483,15488,14358, 12815,10340,6874,3186,155,-1819,-3021,-4047,-5022,-5290, -4462,-2939,-1374,-494,-525,-934,-964,-603,-353,-542, -951,-968,-636,-543,-1299,-3284,-6026,-8369,-9544,-9604, -9234,-8768,-8100,-7120,-5856,-4344,-2392,90,3065,6054, 8409,9436,8981,7841,7163,7164,7486,7710,7919,8322, 8701,8635,7793,6354,4770,3637,3272,3176,2668,1776, 1270,1537,2283,2983,3331,3582,4316,5549,6922,7657, 7204,5942,4525,3232,2109,1151,273,-668,-1807,-3019, -4175,-5391,-6896,-8451,-9628,-10460,-10752,-10095,-8539,-6967, -6305,-6503,-6687,-6030,-4181,-1494,1217,3364,5079,6734, 8386,9703,10281,10280,10295,10931,12366,14148,15321,14996, 13199,10710,8561,7587,8171,9727,11136,11627,11045,9861, 8649,8023,8158,8847,9867,11049,12090,12385,11204,8383, 4584,990,-1582,-3175,-4385,-5632,-6586,-6921,-6462,-5319, -3773,-2259,-1238,-1010,-1704,-3137,-4661,-5484,-5318,-4464, -3570,-3289,-4007,-5623,-7762,-9844,-11395,-12272,-12332,-11611, -10505,-9318,-7749,-5414,-2668,-695,-840,-3704,-8484,-13254, -16361,-17278,-16351,-14303,-11775,-9234,-7100,-5858,-5641,-5996, -6315,-6066,-4860,-2989,-1381,-944,-1540,-2534,-3473,-4536, -5727,-6764,-8017,-10185,-12963,-14758,-14170,-11343,-7691,-4617, -2956,-2796,-3479,-4124,-4630,-5094,-5508,-5899,-6113,-6230, -6415,-6702,-7152,-7645,-7813,-7337,-6105,-4304,-2044,411, 2551,4081,5229,6687,8189,8760,7607,5045,2190,77, -667,-453,-270,-492,-772,-617,-99,94,-97,-184, 182,844,1216,776,-484,-1913,-2581,-2096,-988,-24, 662,1595,3108,5061,6906,8633,10573,12740,14984,16852, 17853,17796,17049,16225,15270,13629,11087,8182,5561,3389, 1498,-266,-1698,-2361,-2246,-1833,-1798,-2461,-3274,-3322, -2324,-825,390,821,520,44,65,337,100,-1025, -2567,-4021,-5644,-7658,-9663,-10830,-10801,-9912,-8410,-6581, -4690,-2676,-594,1370,2950,4121,5110,6049,7012,7716, 8054,8143,8286,8739,9320,9524,9039,8031,6990,5944, 4674,3153,1714,962,1061,1705,2263,2490,2751,3467, 4722,6035,6882,7030,6703,6142,5483,4907,4465,3856, 2937,1733,484,-704,-2084,-3593,-5007,-6213,-7239,-7868, -7949,-7820,-8158,-9089,-10154,-10531,-9661,-7656,-5176,-3187, -2103,-1587,-910,218,1845,4078,6747,9376,11414,12715, 13278,13122,12370,11546,11017,10868,11126,11642,11937,11494, 10248,8696,7563,7342,7945,8800,9463,9987,10804,12220, 13921,14938,14471,12544,9554,5905,1831,-1911,-4115,-4339, -3404,-2407,-2100,-2643,-3905,-5072,-5199,-4295,-3273,-2927, -2981,-2783,-2208,-1538,-1200,-1188,-1688,-3117,-5737,-9340, -12816,-14992,-15100,-13222,-10321,-6998,-3725,-1315,-770,-2384, -5199,-8116,-10335,-11430,-11563,-11390,-11601,-12014,-11964,-11263, -10244,-9487,-9140,-9057,-9128,-8796,-7519,-5138,-2241,368, 1800,1245,-968,-3566,-5682,-7350,-9079,-10749,-11590,-11128, -9803,-8583,-8031,-8191,-8538,-8129,-6581,-4656,-3548,-3572, -4166,-4783,-5286,-5781,-6332,-6815,-7218,-7794,-8747,-9793, -10031,-8767,-5960,-2457,584,2556,3760,4728,5518,5728, 5152,4132,3382,3280,3369,2718,1084,-643,-1272,-647, 252,748,851,714,483,420,417,-135,-1270,-2251, -2413,-2006,-1754,-1912,-2015,-1392,43,1766,3262,4528, 6109,8453,11322,14062,16188,17594,17931,17027,15365,13517, 11989,10940,10316,9478,7711,5062,2258,303,-602,-1000, -1368,-1860,-2257,-2261,-2038,-1897,-1972,-1871,-1216,160, 1756,2694,2602,1584,-126,-2325,-4746,-6723,-7888,-8541, -8914,-9041,-8810,-8358,-7577,-6298,-4604,-2961,-1629,-169, 1491,3053,4346,5393,6202,6892,7777,8999,9980,10344, 10286,9989,9218,7732,5891,4100,2614,1582,1111,1266, 1818,2452,3057,3533,3812,4081,4636,5526,6492,7275, 7718,7806,7219,5830,3903,2009,707,251,463,746, 279,-1489,-4191,-6783,-8386,-9095,-9312,-9062,-8220,-7193, -6698,-7098,-8087,-8834,-8870,-7766,-5511,-2591,210,2328, 3900,5004,5852,6985,8681,10691,12402,13258,12917,11869, 11321,11777,12650,12686,11207,8945,6896,5638,5313,6090, 7934,10345,12821,14773,15709,15498,14370,12863,11083,8930, 6453,3918,1923,697,124,-128,-556,-1430,-2665,-4049, -5702,-7507,-8268,-6908,-3714,-50,2839,4373,4096,1903, -1760,-5947,-9391,-11263,-11523,-10772,-9820,-9209,-8737,-7733, -6028,-4269,-3415,-4025,-5681,-7337,-8397,-8961,-9369,-9562, -9356,-8820,-8627,-9441,-11140,-12985,-14119,-14149,-12853,-10380, -7355,-4291,-1567,148,46,-1606,-3368,-4041,-3813,-3949, -5297,-7369,-9042,-9499,-9032,-8493,-8608,-9294,-9734,-9458, -8526,-7302,-6062,-4858,-3717,-2748,-2471,-3425,-5441,-7621, -9079,-9754,-10027,-10044,-9568,-8392,-6887,-5453,-4117,-2559, -580,1603,3405,4275,4215,3716,3315,3253,3154,2694, 2031,1450,1143,957,840,785,834,1201,1691,1657, 599,-1051,-2206,-2276,-1606,-1174,-1432,-2282,-3343,-3899, -3578,-2399,-648,1415,3734,6081,8303,10395,12351,13944, 14884,15227,15209,15011,14620,13967,12930,11427,9526,7818, 6727,6049,5045,3279,1154,-847,-2240,-2808,-2761,-2473, -2146,-1622,-713,451,1622,2508,2830,2262,866,-761, -2116,-3264,-4620,-6230,-7681,-8459,-8419,-7940,-7550,-7393, -7197,-6743,-5817,-4214,-2313,-794,216,1221,2724,4646, 6562,8065,9203,10196,10863,10875,10032,8579,6953,5586, 4724,4100,3584,3013,2190,1183,377,419,1400,3117, 5273,7169,8064,7702,6739,6079,5884,5787,5426,5145, 5219,5249,4612,2797,-22,-2782,-4264,-4303,-3911,-4025, -4964,-6502,-7909,-8547,-8319,-7938,-8129,-8806,-9322,-9151, -8224,-6540,-4148,-1585,331,1139,1417,2161,3935,6390, 8800,10932,12904,14422,15021,14399,12713,10498,8541,7404, 7013,6882,6718,6689,7260,8896,11305,13561,15068,15670, 15323,13841,11313,8727,7394,7726,8901,9594,8796,6179, 2301,-1726,-5018,-7317,-8556,-8292,-6300,-3232,-129,1972, 2790,2812,2486,1566,-644,-3974,-7189,-8930,-9030,-8376, -7675,-7130,-6599,-5940,-5455,-5592,-6645,-8082,-8794,-8083, -6345,-4841,-4481,-5297,-6688,-8099,-9504,-10968,-12235,-12881, -12894,-12621,-12194,-11402,-9777,-7256,-4531,-2653,-2224,-2727, -3317,-3571,-3655,-3826,-4097,-4500,-4929,-5342,-6029,-7454, -9559,-11326,-11806,-10812,-8894,-6976,-5468,-4423,-3798,-3574, -3869,-4565,-5380,-6097,-6943,-8167,-9362,-10018,-9958,-9343, -8452,-7435,-6375,-5146,-3517,-1616,172,1627,2536,2797, 2426,1794,1385,1504,2067,2765,3327,3244,2490,1643, 1268,1397,1615,1614,1406,1051,709,242,-681,-1972, -3210,-4148,-4694,-4583,-3783,-2702,-1900,-1419,-743,872, 3661,6969,9853,11836,12929,13328,13398,13430,13430,13192, 12711,12289,12307,12485,12115,10653,8209,5602,3390,1831, 694,-356,-1218,-1671,-1725,-1471,-801,306,1345,1912, 2120,2041,1635,941,144,-848,-2153,-3696,-5189,-6018, -6124,-6042,-6316,-7042,-7696,-7788,-7368,-7051,-7040,-6572, -4924,-2240,771,3262,4826,5517,5915,6685,8139,9841, 10872,10982,10556,9710,8078,5493,2711,873,374,861, 1798,2830,3578,3707,3220,2737,3074,4585,6783,8493, 8933,8233,7078,6168,5913,5943,5423,3953,1959,269, -652,-1138,-1691,-2419,-3204,-3930,-4767,-5987,-7505,-8853, -9560,-9561,-9046,-8240,-7352,-6604,-6218,-6212,-6308,-6064, -4789,-2199,1052,3826,5691,7478,9956,12936,15198,15513, 13714,10845,8133,6239,5239,5082,5881,7853,10399,12291, 12704,11661,10142,9277,9643,10951,12401,13539,14390,15015, 15010,13712,10925,7390,3853,608,-2402,-5076,-6807,-6950, -5387,-2764,-125,1834,3027,3344,2545,486,-2340,-4828, -5915,-5342,-4009,-3122,-3529,-5067,-6755,-7788,-8083,-8104, -8169,-8019,-7341,-6158,-4955,-4223,-4079,-4575,-5636,-6957, -8326,-9749,-11104,-12067,-12570,-12709,-12195,-10942,-9338,-8055, -7396,-7216,-7057,-6313,-4794,-2982,-1679,-1488,-2257,-3336, -4240,-4956,-5805,-6935,-8315,-9663,-10389,-10269,-9402,-8080, -6517,-5232,-4687,-4672,-4688,-4598,-4799,-5439,-6297,-7128, -8009,-9078,-10144,-10659,-10363,-9383,-7899,-6187,-4669,-3377, -2265,-1469,-1056,-860,-577,-23,904,2012,2710,2661, 1976,1338,1339,1938,2667,3105,3244,3115,2674,2077, 1370,640,-157,-1043,-1873,-2762,-3735,-4708,-5442,-5654, -5337,-4500,-3152,-1212,1356,4116,6438,7877,8593,9397, 10597,11612,11889,11813,12137,12867,13614,14079,14005,12981, 10945,8623,6721,5117,3423,1754,602,143,121,38, -246,-243,403,1410,2104,2190,1920,1490,739,-462, -1708,-2374,-2388,-2207,-2301,-2984,-4383,-6247,-7984,-9085, -9299,-8785,-7897,-6812,-5559,-4437,-3837,-3525,-2627,-502, 2769,6182,8799,10138,10352,10054,9583,8952,8062,6961, 5926,4888,3698,2577,1930,1860,1981,1951,1641,1341, 1697,3088,5276,7278,8280,8486,8500,8605,8173,6657, 4571,3012,2764,3625,4433,3902,1825,-759,-2776,-3893, -4468,-5039,-5692,-6272,-6808,-7391,-7944,-8224,-8055,-7438, -6910,-7287,-8649,-10047,-10219,-8704,-5839,-2161,2134,6639, 10507,12635,12549,10767,8419,6712,6433,7283,8339,9134, 9870,10525,10571,9829,8519,7080,6232,6626,8306,10495, 12522,14324,16120,17742,18364,17232,14446,10462,6025,1958, -938,-2234,-2193,-1388,-654,-389,-370,-232,76,224, -38,-654,-1320,-1705,-1821,-1754,-1750,-2175,-3171,-4387, -5296,-6052,-7089,-8239,-8955,-8740,-7566,-5670,-3717,-2671, -3135,-4888,-6990,-8483,-8911,-8542,-8255,-8740,-9896,-10922, -11245,-11111,-10867,-10675,-10511,-10151,-9215,-7547,-5609,-3971, -2874,-2343,-2406,-3031,-3902,-4707,-5362,-6082,-7004,-7843, -8413,-8617,-8546,-8328,-7983,-7485,-6632,-5345,-4026,-3420, -3920,-5121,-6567,-7963,-8873,-9227,-9400,-9622,-9551,-8853, -8039,-7568,-7308,-6578,-5135,-3572,-2474,-1931,-1749,-1662, -1483,-985,-265,411,973,1488,2093,2613,2886,2826, 2601,2709,3352,4021,4056,3448,2491,1340,-239,-2362, -4360,-5401,-5667,-5757,-5875,-5693,-4876,-3317,-1194,968, 2765,4014,5017,6178,7573,8908,9828,10462,11139,12148, 13393,14260,14326,13673,12706,11583,10107,8300,6289,4482, 3141,2133,1590,1654,2231,2751,2685,1989,824,-213, -453,244,1458,2143,1928,1121,105,-975,-2246,-3417, -4102,-4116,-3750,-3965,-5430,-7688,-9450,-9827,-9182,-8321, -7526,-6524,-4894,-2637,-189,2031,3957,5750,7462,9009, 9891,9662,8611,7690,7469,7479,6937,5701,4195,2679, 1176,-98,-739,-298,1405,3815,5776,6440,6265,6342, 7058,7901,8143,7699,6853,6018,5577,5599,5652,5099, 3946,2522,1025,-674,-2801,-4897,-6157,-6075,-4824,-3440, -2773,-3259,-4744,-6904,-9537,-12028,-13536,-13438,-11916,-9498, -6373,-2936,158,2395,3788,4826,5631,6153,6565,7112, 7798,8432,9185,10237,11389,11908,11134,9079,6373,4061, 3057,3752,6063,9459,13162,16291,18168,18723,18146,16599, 14101,11060,8285,6404,5474,4784,3791,2424,1007,20, -210,108,147,-532,-1352,-1625,-1100,-59,981,1337, 444,-1229,-2892,-4134,-5022,-5613,-5843,-6043,-6426,-6617, -6104,-4933,-3969,-3850,-4616,-5823,-6867,-7284,-6891,-6383, -6552,-7424,-8497,-9118,-9465,-10164,-11297,-12312,-12435,-11362, -9441,-7446,-6034,-5167,-4671,-4406,-4243,-4031,-3708,-3640, -4033,-4755,-5587,-6512,-7679,-8671,-8855,-8197,-7252,-6387, -5448,-4501,-4056,-4366,-5165,-5866,-6192,-6312,-6782,-7853, -9030,-9764,-9809,-9477,-9047,-8493,-7641,-6452,-5303,-4464, -4059,-4175,-4478,-4270,-3178,-1775,-909,-753,-887,-651, -49,629,1254,1840,2534,3367,4364,5342,5923,5965, 5164,3462,1255,-971,-2806,-4130,-4976,-5552,-6003,-6064, -5453,-4164,-2828,-2030,-1496,-541,1332,3799,5868,6755, 6771,7135,8436,10337,12375,14038,14908,14718,13655,11954, 9945,8206,7289,7333,7631,7316,6166,4614,3289,2479, 1930,1441,1179,1552,2423,3004,2534,1279,269,46, 312,360,-41,-598,-947,-1004,-1274,-2162,-3668,-5532, -7289,-8722,-9747,-10271,-10067,-8911,-6941,-4582,-2592,-1540, -966,68,2166,4819,7219,9079,10248,10600,9918,8518, 7090,5889,4828,3836,2949,2093,1104,322,203,970, 2403,4027,5408,6276,6629,6538,6115,5785,6083,7138, 8509,9524,9698,8676,6407,3153,-234,-2597,-3327,-2724, -1501,-145,764,636,-751,-3128,-5864,-8514,-10553,-11690, -12012,-11801,-11174,-9869,-7825,-5654,-3932,-2986,-2499,-1950, -969,620,2635,4796,6970,9245,11366,12488,12015,10183, 7823,5597,3835,3043,3376,4584,6290,8324,10757,13278, 15420,16685,16782,15773,13899,11846,10322,9803,10051,10038, 8830,6321,3668,1964,1022,94,-949,-1430,-998,11, 1122,1756,1737,983,-409,-1827,-2718,-3010,-3205,-3595, -4038,-4393,-4539,-4612,-4743,-4872,-5026,-5331,-5862,-6255, -6112,-5410,-4765,-5027,-6103,-7168,-7760,-8268,-9065,-9958, -10661,-11055,-11068,-10710,-10139,-9619,-9026,-8055,-6613,-4943, -3735,-3466,-4066,-4833,-5213,-5462,-5939,-6559,-6890,-6991, -7174,-7299,-7218,-6976,-6511,-5735,-4734,-3957,-3717,-4204, -5379,-6725,-7948,-8869,-9363,-9308,-8847,-8535,-8719,-9131, -8985,-7913,-6656,-6092,-6140,-6057,-5428,-4431,-3509,-3200, -3441,-3689,-3520,-2926,-2243,-1750,-1386,-634,805,2655, 4562,6034,6774,6742,6027,4677,2864,1142,-166,-1366, -2964,-5003,-6679,-6994,-5754,-4012,-3124,-3297,-3784,-3714, -2854,-1493,192,2080,4222,6524,8647,10238,10882,10751, 10561,10931,11722,12215,12151,11628,10805,9718,8422,7323, 6633,6229,5789,5050,4139,3306,2829,2842,3093,3142, 2644,1691,598,-93,-94,348,841,1312,1840,2045, 1326,-389,-2505,-4503,-6114,-7200,-7632,-7775,-8137,-8781, -9201,-8903,-7873,-6389,-4719,-2944,-1036,1122,3562,5888, 7677,8755,9211,9351,9128,8226,6543,4442,2674,1773, 1816,2376,2956,3213,2961,2321,1538,1004,1251,2654, 5033,7549,9429,10519,10788,10265,8981,7120,4887,2686, 1150,483,702,1473,2242,2636,2522,1907,590,-1645, -4765,-8081,-10317,-10969,-10520,-9530,-8328,-7142,-6577,-7181, -8660,-9871,-9657,-8045,-5584,-2748,218,3169,5933,8355, 9957,10414,9707,8040,6026,4449,3732,3642,3884,4618, 6009,7851,9530,10780,11853,12882,13567,13635,13325,13119, 13243,13547,13354,12276,10588,8726,6825,4880,3234,2033, 1163,727,977,1813,2549,2474,1473,90,-1037,-1792, -2254,-2317,-2007,-1605,-1550,-2042,-3046,-4205,-5046,-5430, -5346,-4861,-4274,-4007,-4199,-4582,-4970,-5505,-6297,-7032, -7151,-6858,-7072,-8227,-9737,-10811,-11312,-11441,-11213,-10487, -9215,-7734,-6473,-5755,-5555,-5596,-5488,-5079,-4729,-4932, -5748,-6707,-7378,-7602,-7498,-7322,-7146,-6595,-5529,-4260, -3440,-3456,-3956,-4537,-5158,-6060,-7198,-8060,-8244,-8025, -8170,-8890,-9555,-9565,-8978,-8358,-8022,-7817,-7394,-6420, -4895,-3369,-2891,-3835,-5380,-6334,-6102,-5148,-4271,-3741, -3369,-2708,-1594,-19,2071,4512,6729,7980,7983,6993, 5284,3155,1011,-648,-1674,-2255,-2467,-2413,-2596,-3625, -5381,-6929,-7405,-6592,-4915,-3013,-1279,202,1654,3352, 5341,7090,8160,8595,8884,9609,10815,12006,12608,12407, 11601,10485,9434,8666,7996,7254,6709,6785,7313,7646, 7146,5565,3562,2031,1418,1606,2091,2411,2394,2226, 2071,1903,1757,1668,1643,1534,926,-244,-1783,-3414, -5016,-6524,-7668,-8303,-8379,-8111,-7958,-8179,-8521,-8249, -6709,-3704,427,4450,7091,7993,7814,7363,6808,6179, 5584,5429,5974,6822,7269,6693,4958,2531,175,-1535, -2137,-1275,835,3403,5764,7704,9124,10046,10494,10203, 8829,6650,4446,3087,3031,4088,5462,6265,6162,5376, 4259,2771,680,-1825,-4136,-5754,-6567,-6642,-6117,-5549, -5451,-6002,-7182,-8873,-10776,-12253,-12605,-11506,-9227,-6195, -2673,948,4073,6217,7079,6843,6056,5313,4875,4649, 4644,4943,5479,5936,6249,6648,7206,7797,8511,9665, 11287,12827,13652,13861,14162,14682,14661,13650,11922,10145, 8720,7687,6965,6260,5463,4674,4045,3560,2961,2124, 1239,479,24,-108,-135,-256,-499,-775,-1237,-1943, -2760,-3292,-3281,-2979,-2952,-3495,-4207,-4450,-3997,-3328, -3273,-3971,-4791,-5379,-5810,-6377,-7141,-7998,-8706,-9176, -9606,-10080,-10569,-10772,-10315,-9178,-7745,-6547,-5703,-5003, -4360,-4160,-4890,-6274,-7398,-7775,-7561,-7305,-7228,-7177, -6947,-6342,-5261,-3968,-3094,-3081,-3702,-4427,-4966,-5276, -5531,-5782,-6095,-6728,-7929,-9329,-10188,-10148,-9502,-8796, -8341,-8059,-7607,-6739,-5509,-4365,-3805,-3931,-4522,-5247, -6048,-6951,-7768,-8044,-7431,-5699,-2959,71,2435,3613, 3851,4061,4862,5851,6208,5671,4501,3133,1992,1224, 470,-713,-2227,-3763,-5072,-6060,-6721,-6987,-6741,-5753, -4132,-2293,-675,568,1630,2703,3868,5279,7166,9342, 11104,11888,11678,10773,9753,9143,9168,9479,9604,9416, 9134,9052,9038,8529,7304,5763,4656,4309,4400,4333, 3631,2613,1971,2074,2717,3339,3503,3145,2426,1525, 805,576,606,331,-622,-2101,-3790,-5543,-7328,-9007, -10426,-11289,-11080,-9393,-6423,-3141,-758,306,605,1039, 2200,3885,5356,6169,6643,7391,8497,9410,9431,8177, 5684,2500,-451,-2291,-2540,-1339,788,3270,5525,7255, 8349,8675,8153,6850,5332,4429,4605,5598,6941,8208, 8907,8602,7504,6253,5044,3447,1301,-762,-2010,-2320, -2106,-1937,-2180,-2922,-4048,-5460,-7183,-9216,-11406,-13168, -13778,-12818,-10526,-7703,-4955,-2564,-467,1320,2522,3063, 3113,3065,3238,3719,4413,5105,5634,5820,5503,4861, 4329,4610,6052,8230,10306,11749,12716,13477,14039,14022, 13132,11774,10742,10574,11162,11804,11526,9972,7838,6170, 5351,4978,4590,4114,3541,2821,1887,885,123,-223, -248,-293,-591,-1083,-1606,-2089,-2465,-2833,-3270,-3593, -3444,-2680,-1776,-1557,-2392,-3686,-4587,-4850,-4778,-4877, -5510,-6614,-7821,-8871,-9707,-10338,-10753,-10907,-10603,-9739, -8463,-7017,-5574,-4408,-3939,-4364,-5596,-7229,-8620,-9311, -9153,-8516,-7911,-7689,-7695,-7534,-6968,-6042,-4976,-4053, -3479,-3302,-3403,-3876,-4742,-5773,-6684,-7328,-7732,-8107, -8985,-10519,-12111,-12887,-12324,-10593,-8435,-6414,-4781,-3792, -3760,-4653,-6064,-7532,-8696,-9392,-9519,-9160,-8396,-7163, -5585,-3868,-2301,-973,275,1625,3127,4651,5915,6712, 6951,6818,6325,5170,3146,642,-1552,-2935,-3620,-4209, -5072,-6074,-6948,-7471,-7509,-6982,-5843,-4155,-2044,285, 2643,4761,6457,7654,8383,8943,9640,10505,11172,11397, 11093,10346,9636,9527,10205,11159,11582,11006,9706,8367, 7350,6492,5668,4993,4651,4857,5524,5977,5400,3734, 1801,614,615,1729,3505,5124,5581,4427,2133,-502, -3024,-5325,-7267,-8790,-9804,-10124,-9618,-8421,-7091,-6253, -6087,-6131,-5677,-4252,-1981,623,3082,5283,7336,9300, 10799,11206,10075,7620,4749,2304,778,71,-22,581, 1913,3620,5135,5992,6037,5404,4533,3905,3985,4922, 6374,8023,9595,10786,11137,10447,9086,7376,5510,3715, 2404,1899,2134,2585,2567,1690,185,-1507,-3136,-4849, -7036,-9559,-11825,-13131,-13219,-12430,-11440,-10512,-9308,-7570, -5457,-3452,-1897,-832,16,996,2225,3421,4173,4347, 4044,3472,2951,2882,3560,5033,6893,8448,9425,10207, 11184,12348,13317,13669,13344,12714,12484,12974,13740,13942, 13151,11827,10776,10141,9610,8846,7698,6300,5067,4318, 3972,3726,3187,2163,817,-391,-1064,-1231,-1269,-1395, -1670,-2111,-2612,-2980,-2952,-2580,-2097,-1820,-1934,-2282, -2636,-2864,-3073,-3591,-4566,-6028,-7743,-9359,-10618,-11497, -12061,-12114,-11517,-10289,-8747,-7437,-6687,-6475,-6402,-6126, -5756,-5853,-6832,-8313,-9567,-10131,-9973,-9356,-8532,-7735, -7099,-6624,-6253,-5846,-5402,-4764,-3793,-2760,-2117,-2314, -3408,-5115,-7034,-8904,-10650,-11999,-12570,-12241,-11281,-10123, -8807,-7367,-5959,-4918,-4646,-5252,-6422,-7700,-8761,-9386, -9419,-8990,-8438,-7975,-7637,-7305,-6816,-6024,-4669,-2632, -147,2418,4741,6434,7218,7160,6376,5058,3715,2909, 2624,2146,824,-1297,-3580,-5469,-6850,-7788,-8300,-8368, -7898,-6866,-5226,-3195,-1137,759,2493,4173,5843,7385, 8408,8771,8727,8633,8734,9270,10307,11480,12150,11845, 10629,9197,8273,8096,8349,8574,8567,8225,7739,7287, 6745,5766,4207,2554,1565,1705,2891,4601,6136,6806, 6372,5144,3406,1270,-1204,-3473,-4965,-5664,-5858,-5895, -5970,-6246,-6932,-8121,-9591,-10568,-10300,-8686,-6013,-2765, 689,3953,6614,8326,8826,8244,6964,5540,4439,3793, 3461,3220,3142,3441,4115,4642,4448,3487,2342,1605, 1611,2204,3081,4312,6072,8238,10137,11113,11011,10065, 8617,7061,5815,5182,5121,5421,5906,6235,5889,4738, 3075,1226,-815,-3217,-5838,-8038,-9187,-9357,-9365,-9972, -11177,-12188,-12241,-11098,-9077,-6763,-4649,-3016,-1859,-891, 33,700,769,428,346,844,1889,3048,3915,4399, 4748,5353,6460,8105,9935,11348,11952,11738,11239,11155, 11684,12646,13553,13943,13650,12941,12215,11572,11101,10621, 9896,8861,7880,7407,7234,6666,5289,3426,1825,879, 443,111,-272,-676,-1078,-1455,-1824,-2232,-2787,-3421, -3615,-2856,-1185,532,1232,637,-790,-2489,-4151,-5680, -6910,-7798,-8612,-9746,-11128,-12069,-12046,-11175,-9894,-8520, -7173,-6002,-5243,-5226,-6003,-7091,-7948,-8365,-8448,-8290, -8181,-8472,-9184,-9998,-10373,-9920,-8798,-7477,-6094,-4504, -2837,-1528,-920,-1137,-2144,-3907,-6279,-8716,-10486,-11249, -11282,-10988,-10546,-9862,-8885,-7919,-7221,-6973,-7100,-7321, -7323,-6951,-6484,-6410,-7151,-8593,-10035,-10738,-10604,-10026, -9260,-8204,-6895,-5356,-3561,-1540,472,2225,3720,4951, 5828,6297,6341,5943,5036,3717,2279,934,-283,-1553, -3155,-5298,-7688,-9610,-10374,-9660,-7763,-5395,-3231,-1599, -295,792,1730,2676,3740,5054,6607,8237,9624,10462, 10718,10438,9755,8906,8270,8171,8645,9583,10621,11211, 10921,9818,8417,7189,6154,5156,4259,3759,3915,4655, 5609,6345,6734,6864,6562,5419,3477,1485,172,-373, -454,-555,-974,-1760,-2994,-4676,-6697,-8942,-11196,-12713, -12629,-10686,-7491,-4011,-1000,1403,3301,4492,4692,4122, 3514,3463,3943,4604,5250,5941,6571,6750,6155,4756, 2942,1426,629,589,1040,1683,2481,3579,5214,7217, 8971,9745,9278,8137,7078,6516,6575,7065,7709,8291, 8651,8644,8149,7163,5603,3608,1479,-476,-2050,-3289, -4481,-5953,-7824,-9831,-11476,-12307,-12174,-11121,-9465,-7857, -6736,-5905,-4810,-3376,-2083,-1511,-1776,-2304,-2375,-1665, -388,1024,2265,3029,3364,3819,4877,6313,7584,8431, 9109,9893,10803,11452,11685,11751,11927,12236,12486,12564, 12494,12293,11955,11499,11215,11328,11519,11142,9853,8007, 6261,5022,4357,4078,3862,3238,1978,325,-1153,-2050, -2461,-2759,-3038,-3030,-2581,-1789,-892,44,918,1508, 1523,914,-333,-2160,-4426,-6896,-9101,-10431,-10660,-10229, -9772,-9630,-9629,-9436,-8953,-8179,-7159,-6269,-5942,-6106, -6192,-5985,-5904,-6401,-7622,-9288,-10810,-11717,-11929,-11599, -10781,-9475,-7559,-5054,-2443,-582,-110,-1041,-2854,-4796, -6288,-7215,-7706,-8013,-8391,-8976,-9673,-10162,-10303,-10097, -9592,-8901,-8010,-6926,-5829,-5146,-5278,-6314,-7881,-9277, -9938,-9945,-9751,-9776,-10065,-10248,-9922,-8905,-7329,-5446, -3445,-1498,290,1874,3211,4325,5211,5928,6465,6608, 6090,4789,2905,764,-1527,-3974,-6300,-7851,-8275,-7840, -7087,-6417,-5880,-5401,-4842,-4092,-2982,-1271,1076,3762, 6186,7757,8256,8006,7606,7473,7549,7481,7346,7719, 9034,10906,12325,12440,11234,9379,7660,6406,5604,5255, 5377,5947,6767,7510,7860,7719,7101,6076,4866,3713, 2964,2895,3452,4155,4383,3749,2404,758,-980,-3071, -5663,-8538,-10996,-12147,-11627,-9731,-7257,-5008,-3371,-2157, -1203,-481,35,435,806,1419,2523,4137,6069,7709, 8328,7706,6249,4467,2771,1452,737,659,1069,1766, 2619,3645,4787,5722,6088,5902,5676,5876,6526,7368, 8109,8564,8629,8370,8191,8452,9105,9550,9087,7579, 5544,3589,1798,17,-1806,-3612,-5457,-7366,-9158,-10402, -10832,-10607,-10032,-9204,-8016,-6596,-5410,-4730,-4545,-4605, -4631,-4453,-3972,-3197,-2188,-1114,-161,641,1388,2188, 2912,3494,4196,5376,7113,8956,10428,11235,11208,10524, 9750,9509,10061,11221,12499,13310,13414,12904,12109,11405, 11019,10880,10702,10403,10006,9435,8533,7246,5717,4324, 3321,2615,1935,904,-695,-2617,-4132,-4599,-3873,-2313, -525,964,2100,2973,3381,2866,1316,-859,-3051,-4835, -6027,-6736,-7282,-7942,-8732,-9512,-10089,-10332,-10238,-9741, -8842,-7722,-6446,-5027,-3668,-2851,-3181,-4892,-7542,-10099, -11768,-12439,-12410,-11909,-10909,-9410,-7608,-5712,-4148,-3278, -3128,-3283,-3324,-3228,-3251,-3753,-4838,-6220,-7533,-8584, -9342,-9754,-9726,-9432,-9186,-9105,-8842,-8015,-6798,-5715, -5298,-5669,-6540,-7577,-8538,-9424,-10193,-10757,-10924,-10522, -9725,-9024,-8723,-8558,-7995,-6737,-4894,-2916,-952,1285, 3970,6624,8166,7927,6311,4435,3101,2233,1345,148, -1296,-2821,-4289,-5691,-7001,-8008,-8561,-8644,-8218,-7205, -5501,-3106,-436,1898,3447,4212,4536,4777,5130,5563, 5903,6135,6731,8200,10325,12149,12657,11578,9584,7618, 6355,5958,6227,6826,7462,8040,8617,9128,9228,8429, 6700,4711,3344,3144,4107,5653,7053,7722,7398,6256, 4675,2889,807,-1731,-4482,-6850,-8207,-8444,-7987,-7314, -6652,-6064,-5602,-5229,-4732,-4010,-3297,-2819,-2323,-1110, 1081,3774,6064,7305,7402,6496,5100,3786,2948,2707, 2836,2905,2718,2515,2608,2868,3066,3234,3547,4072, 4687,5296,5836,6322,6765,7133,7495,7943,8514,9193, 9838,10356,10633,10533,9794,8243,6115,3700,1214,-1178, -3273,-4980,-6421,-7623,-8533,-9111,-9277,-8915,-8111,-7182, -6464,-6156,-6227,-6414,-6390,-5859,-4886,-3850,-3140,-2907, -2989,-2979,-2461,-1365,40,1544,3113,4690,6059,7012, 7533,7864,8259,8854,9600,10264,10582,10608,10648,10974, 11544,12080,12330,12197,11879,11574,11287,10977,10758,10817, 10967,10758,10000,8814,7394,5752,3740,1453,-775,-2437, -3290,-3345,-2861,-2087,-1101,97,1453,2729,3437,3157, 1980,537,-571,-1306,-1940,-2777,-3838,-5199,-7031,-9120, -10964,-12034,-12075,-11117,-9446,-7443,-5343,-3480,-2406,-2591, -3979,-6003,-7947,-9253,-9834,-10007,-10224,-10765,-11213,-10944, -9807,-8284,-6930,-5856,-4802,-3618,-2672,-2502,-3062,-3799, -4270,-4598,-5273,-6490,-7819,-8727,-9102,-9206,-9357,-9541, -9324,-8362,-6853,-5515,-5008,-5454,-6586,-7877,-8893,-9427, -9411,-8957,-8444,-8398,-9122,-10449,-11731,-12231,-11660,-10312, -8555,-6479,-3889,-906,1927,3932,4740,4585,4109,3959, 4356,4970,5166,4444,2834,794,-1300,-3333,-5362,-7432, -9242,-10156,-9761,-8151,-5820,-3555,-1958,-1215,-1090,-917, -73,1342,2647,3565,4450,5656,7294,9091,10498,10971, 10357,9032,7599,6649,6495,6949,7552,7989,8407,9049, 9732,9880,9004,7275,5346,3977,3779,4762,6453,8152, 9256,9512,9012,8023,6600,4664,2214,-371,-2548,-3946, -4453,-4310,-4092,-4333,-5166,-6261,-7158,-7575,-7407,-6790, -5819,-4585,-3133,-1533,-5,1335,2477,3487,4318,4851, 4991,4721,4215,3686,3326,3258,3375,3506,3449,3165, 2814,2612,2740,3082,3510,3974,4438,4826,5114,5357, 5674,6245,7214,8492,9811,10941,11814,12448,12614,12000, 10351,7736,4612,1625,-748,-2411,-3497,-4216,-4800,-5511, -6568,-7869,-8973,-9303,-8601,-7210,-5734,-4839,-4753,-5233, -5876,-6341,-6454,-6137,-5417,-4442,-3399,-2539,-1860,-1181, -276,1054,2704,4317,5628,6659,7498,8030,8247,8287, 8527,9310,10418,11377,11785,11673,11319,10893,10471,10142, 10160,10749,11832,13011,13774,13885,13351,12268,10732,8681, 6145,3395,1011,-513,-1080,-1013,-882,-1014,-1128,-796, -62,582,878,1127,1820,2985,3945,3991,2901,863, -1631,-4179,-6626,-8874,-10461,-10894,-10283,-9242,-8383,-7707, -6810,-5494,-4181,-3525,-3849,-4948,-6216,-7120,-7746,-8431, -9283,-10110,-10670,-10841,-10540,-9836,-8806,-7594,-6438,-5424, -4577,-3913,-3301,-2638,-2190,-2650,-4196,-6164,-7706,-8414, -8413,-8059,-7750,-7644,-7629,-7563,-7404,-7268,-7253,-7387, -7568,-7531,-7123,-6513,-6172,-6581,-7691,-9216,-10678,-11628, -11975,-11995,-11947,-11690,-10909,-9343,-7057,-4534,-2395,-1043, -319,358,1480,3250,5274,6867,7442,6853,5438,3615, 1536,-903,-3588,-6058,-7735,-8182,-7471,-6207,-5144,-4753, -4999,-5462,-5573,-4997,-3748,-2061,-243,1665,3681,5610, 7252,8357,8685,8163,7174,6383,6284,6914,7828,8491, 8697,8672,8828,9142,9234,8779,7729,6416,5254,4707, 5059,6251,7923,9542,10667,10965,10378,9010,7114,5078, 3294,2039,1356,942,448,-367,-1496,-2826,-4212,-5520, -6630,-7315,-7475,-7163,-6526,-5644,-4545,-3348,-2141,-1058, -169,706,1680,2769,3763,4363,4422,4032,3603,3478, 3644,3866,3886,3763,3644,3549,3332,2960,2748,2962, 3472,3876,3834,3444,3136,3441,4710,6820,9356,11586, 13068,13683,13412,12423,11057,9661,8251,6693,4901,2873, 807,-1071,-2697,-4149,-5550,-6684,-7219,-7071,-6592,-6261, -6121,-6016,-5881,-5776,-5772,-5963,-6425,-6880,-6923,-6497, -5881,-5287,-4538,-3394,-1957,-642,309,1052,1847,2974, 4356,5612,6475,7120,8037,9284,10372,10796,10575,10149, 9776,9384,8901,8556,8783,9865,11837,14064,15541,15836, 15229,14133,12458,10170,7779,5887,4766,4245,3930,3225, 1629,-624,-2572,-3359,-2935,-1738,-75,1792,3578,4930, 5535,5316,4370,2825,667,-2001,-4660,-6646,-7616,-7896, -8051,-8346,-8615,-8483,-7728,-6414,-4983,-4083,-4066,-4807, -5753,-6479,-6844,-7009,-7354,-8063,-9083,-10151,-10895,-11063, -10623,-9715,-8480,-6948,-5164,-3445,-2387,-2361,-3305,-4744, -6049,-6768,-6690,-6106,-5501,-5397,-6098,-7233,-8104,-8345, -8217,-8145,-8151,-7955,-7302,-6254,-5241,-4811,-5327,-6666, -8303,-9695,-10524,-10871,-11027,-11239,-11417,-11331,-10984,-10536, -9992,-9222,-8239,-7082,-5582,-3420,-587,2351,4735,6153, 6566,6239,5460,4347,2868,983,-1054,-2762,-3694,-3914, -3850,-4004,-4649,-5801,-7216,-8422,-8869,-8292,-6749,-4585, -2233,7,1999,3640,4743,5252,5290,5155,5078,5177, 5677,6677,7969,9170,9878,9912,9332,8329,7206,6198, 5514,5197,5252,5778,6790,8025,8985,9535,9914,10232, 10252,9664,8503,7136,5864,4979,4426,3896,3121,2070, 834,-628,-2266,-3884,-5229,-6094,-6499,-6476,-6221,-5930, -5557,-4925,-3973,-2975,-2123,-1301,-384,538,1333,2086, 2930,3609,3765,3336,2677,2299,2609,3633,4933,5851, 5878,4995,3666,2407,1437,825,684,1104,2078,3420, 4779,5838,6667,7751,9343,11099,12477,13266,13621,13392, 12300,10392,7960,5511,3547,2264,1238,-275,-2359,-4309, -5465,-5884,-6069,-6157,-5955,-5403,-4785,-4574,-5056,-6094, -7188,-7827,-7834,-7388,-6848,-6300,-5630,-4867,-4061,-3392, -3017,-2807,-2278,-1051,677,2477,4180,5953,7798,9270, 9974,9858,9141,8098,7034,6428,6620,7714,9470,11270, 12557,13112,13225,13313,13605,13978,13977,13314,12102,10775, 9668,8749,7561,5610,2955,154,-2094,-3206,-2996,-1723, -46,1447,2669,3823,4975,5778,5758,4730,2854,578, -1623,-3400,-4705,-5668,-6358,-6860,-7196,-7262,-7017,-6593, -6292,-6237,-6248,-5972,-5234,-4303,-3782,-4321,-6036,-8242, -9971,-10681,-10601,-10326,-10032,-9474,-8478,-7239,-6054,-5156, -4740,-4846,-5264,-5638,-5714,-5445,-5007,-4641,-4577,-4974, -5797,-6766,-7590,-8147,-8477,-8597,-8325,-7462,-6104,-4890, -4478,-5028,-6194,-7538,-8747,-9455,-9523,-9201,-8936,-9053, -9547,-10295,-11200,-12177,-12976,-13187,-12604,-11218,-9072,-6214, -2951,6,2135,3390,3941,3874,3366,2888,2777,2914, 2814,2144,1029,-220,-1349,-2419,-3822,-5705,-7660,-9055, -9623,-9436,-8446,-6671,-4426,-2197,-348,916,1463,1436, 1321,1636,2530,3824,5391,7107,8697,9707,9815,9138, 8075,6958,5959,5158,4675,4630,5101,6023,7085,7960, 8523,8882,9168,9394,9566,9712,9711,9356,8603,7618, 6550,5544,4832,4424,3747,2301,234,-1848,-3446,-4455, -4940,-5053,-5090,-5286,-5579,-5740,-5690,-5391,-4534,-2954, -1047,342,750,513,208,166,371,653,1105,2134, 3876,5653,6537,6279,5284,4149,3225,2568,2071,1542, 1003,714,916,1423,1958,2625,3708,5340,7309,9191, 10692,11888,12903,13583,13568,12725,11264,9558,7829,6065, 4131,2128,258,-1354,-2642,-3536,-4049,-4273,-4382,-4446, -4470,-4624,-5150,-5979,-6756,-7297,-7639,-7707,-7271,-6273, -5168,-4548,-4846,-5980,-7287,-7894,-7127,-4955,-1923,1167, 3600,5070,5786,6202,6590,6789,6615,6218,6042,6418, 7370,8581,9530,9888,9765,9606,9914,10822,12192,13776, 15080,15606,15224,14248,13085,11807,10108,7755,5024,2535, 735,-305,-852,-1168,-1161,-434,1251,3539,5555,6407, 5811,4306,2722,1555,737,-7,-830,-1815,-3041,-4519, -5977,-7010,-7383,-7278,-6967,-6415,-5446,-4262,-3459,-3511, -4339,-5589,-6952,-8174,-8955,-9144,-9037,-8989,-8989,-8775, -8288,-7809,-7484,-7264,-7011,-6706,-6320,-5769,-5049,-4325, -3977,-4275,-5047,-5899,-6579,-7157,-7666,-7867,-7565,-6868, -6262,-5998,-5902,-5778,-5702,-5953,-6589,-7427,-8198,-8521, -8196,-7435,-6886,-7189,-8424,-10159,-11933,-13459,-14494,-14762, -14132,-12660,-10594,-8359,-6231,-4194,-2297,-910,-271,-22, 436,1354,2541,3638,4356,4526,4074,3053,1575,-343, -2660,-5033,-6891,-7899,-8221,-8092,-7591,-6838,-6037,-5241, -4398,-3528,-2767,-2151,-1606,-931,128,1834,4161,6504, 8195,8898,8689,7994,7286,6698,5969,5033,4265,4105, 4589,5310,5955,6630,7440,8237,8672,8667,8568,8784, 9451,10282,10797,10518,9397,7941,6640,5623,4762,3865, 2924,1976,933,-440,-2259,-4227,-5778,-6479,-6376,-5772, -4876,-3785,-2720,-2089,-2045,-2380,-2720,-2801,-2490,-1792, -981,-265,443,1378,2590,3885,5006,5782,6126,6012, 5451,4476,3219,1955,961,330,7,14,438,1215, 2098,2995,4093,5714,7888,10347,12713,14542,15440,15311, 14412,13154,11739,10112,8165,5925,3569,1440,-3,-599, -703,-1027,-2018,-3559,-5226,-6496,-7075,-7028,-6635,-6142, -5747,-5629,-5814,-6189,-6728,-7528,-8632,-9792,-10475,-10271, -8987,-6756,-4137,-1848,-289,811,1894,3080,4106,4704, 5090,5703,6758,7917,8553,8438,7866,7311,7117,7533, 8697,10365,12146,13736,15078,16315,17354,17888,17579,16277, 14012,11095,8130,5613,3732,2335,1297,680,653,1183, 1977,2703,3277,3749,4158,4489,4678,4672,4305,3372, 1753,-262,-2145,-3605,-4797,-5826,-6506,-6623,-6206,-5451, -4650,-4106,-4106,-4724,-5713,-6726,-7598,-8322,-8776,-8788, -8425,-8065,-8176,-8882,-9824,-10375,-10237,-9575,-8636,-7542, -6397,-5487,-5041,-4995,-5244,-5766,-6534,-7356,-7971,-8220, -7960,-7160,-6193,-5651,-5800,-6434,-7173,-7623,-7631,-7415, -7257,-7162,-6932,-6533,-6261,-6348,-6877,-7848,-9256,-10960, -12641,-13986,-14903,-15341,-15216,-14469,-13219,-11588,-9818,-8260, -7162,-6492,-5789,-4513,-2466,-13,2186,3781,4792,5374, 5451,4744,3196,1077,-1119,-2938,-4229,-5089,-5652,-6021, -6334,-6757,-7294,-7799,-8008,-7649,-6723,-5525,-4400,-3379, -2104,-291,1950,4268,6332,7879,8655,8668,8106,7186, 6163,5426,5227,5432,5722,5833,5764,5732,5967,6506, 7265,8162,9235,10475,11534,12000,11811,11219,10523,9976, 9705,9661,9567,9030,7754,5727,3246,707,-1487,-3044, -3956,-4483,-4696,-4499,-3967,-3372,-3044,-3124,-3431,-3638, -3547,-3242,-2964,-2796,-2622,-2265,-1636,-607,916,2719, 4277,5123,5365,5472,5659,5774,5457,4479,2935,1275, 109,-215,187,792,1097,1127,1288,2157,4002,6676, 9778,12756,14984,15848,15267,13875,12494,11407,10332,9118, 7978,7111,6365,5337,3742,1550,-994,-3366,-4944,-5468, -5243,-4713,-4149,-3700,-3486,-3659,-4347,-5549,-7063,-8503, -9504,-9887,-9642,-8925,-8058,-7392,-6956,-6395,-5307,-3652, -1802,-104,1335,2591,3727,4816,5896,6881,7524,7588, 7103,6418,5880,5726,6108,7135,8852,11156,13824,16370, 18185,18818,18168,16576,14675,12961,11436,9863,8253,6781, 5493,4284,3122,2149,1605,1641,2214,3116,4108,4998, 5672,5977,5755,4888,3417,1584,-303,-1920,-3010,-3533, -3550,-3263,-2957,-2945,-3390,-4106,-4786,-5239,-5613,-6081, -6637,-7139,-7368,-7331,-7261,-7446,-8090,-9091,-10074,-10565, -10296,-9338,-8011,-6732,-5769,-5272,-5284,-5693,-6354,-7093, -7762,-8231,-8223,-7573,-6477,-5553,-5322,-5733,-6450,-7090, -7506,-7699,-7714,-7483,-6861,-5946,-5028,-4482,-4513,-5111, -6212,-7659,-9227,-10606,-11579,-12200,-12660,-13138,-13577,-13765, -13588,-13107,-12509,-11934,-11413,-10825,-9796,-8042,-5621,-2917, -427,1570,3024,3906,4099,3654,2914,2142,1284,258, -789,-1682,-2431,-3111,-3875,-4867,-6159,-7584,-8802,-9522, -9615,-9089,-7938,-6231,-4251,-2289,-477,1170,2749,4293, 5645,6542,7008,7358,7650,7483,6546,5156,3987,3478, 3678,4421,5433,6364,6996,7391,7709,8100,8662,9412, 10243,10973,11636,12266,12768,12879,12327,11045,9193,7146, 5352,3961,2611,708,-1578,-3331,-3840,-3299,-2505,-2022, -2053,-2532,-3258,-3931,-4201,-4005,-3589,-3366,-3505,-3757, -3695,-2926,-1430,400,2025,3142,3787,4276,4902,5635, 6026,5676,4651,3448,2383,1313,110,-1026,-1692,-1641, -849,693,2856,5238,7416,9217,10590,11559,12245,12623, 12684,12570,12481,12455,12368,11955,10874,8882,6076,2981, 312,-1457,-2295,-2462,-2294,-2067,-2016,-2268,-2793,-3484, -4269,-5205,-6286,-7217,-7703,-7813,-7971,-8405,-8931,-9199, -9038,-8553,-7888,-7072,-5957,-4463,-2693,-706,1418,3458, 5029,5869,6047,5696,4979,4153,3616,3743,4527,5822, 7535,9582,11750,13748,15323,16295,16681,16598,16049,15107, 13929,12711,11587,10428,9019,7268,5318,3507,2252,1941, 2573,3773,5025,5926,6279,6138,5657,4855,3698,2318, 1001,9,-506,-607,-531,-648,-1187,-2065,-2935,-3510, -3786,-4004,-4308,-4633,-4902,-5183,-5668,-6501,-7491,-8381, -9146,-9761,-10009,-9630,-8772,-7835,-7100,-6585,-6208,-6038, -6105,-6359,-6768,-7330,-7860,-7987,-7508,-6692,-5989,-5723, -5924,-6448,-7134,-7805,-8245,-8235,-7679,-6714,-5628,-4670, -3941,-3567,-3691,-4407,-5658,-7157,-8551,-9569,-10016,-10028, -10119,-10716,-11682,-12672,-13504,-14182,-14604,-14504,-13858,-12903, -11825,-10523,-8830,-6680,-4197,-1762,92,1136,1613,1852, 1898,1720,1449,1261,1238,1349,1433,1036,-268,-2378, -4763,-6892,-8527,-9510,-9681,-9153,-8353,-7721,-7286,-6603, -5229,-3121,-780,1295,3096,4813,6397,7410,7433,6444, 5015,3982,3778,4344,5224,5834,5772,5136,4513,4371, 4789,5657,6827,8043,9025,9826,10831,12267,13795,14699, 14460,13159,11366,9677,8278,6979,5473,3655,1663,-152, -1347,-1717,-1523,-1237,-1167,-1348,-1706,-2253,-3017,-3802, -4322,-4485,-4345,-3925,-3280,-2617,-2234,-2199,-2099,-1325, 386,2673,4868,6415,7103,6974,6138,4729,2996,1283, -178,-1252,-1707,-1278,-55,1358,2386,3007,3569,4348, 5364,6681,8390,10347,12157,13563,14587,15181,15041,13983, 12197,10190,8306,6561,4839,3195,1841,850,91,-503, -888,-1080,-1384,-2098,-3157,-4204,-4966,-5483,-5799,-5922, -6012,-6355,-7166,-8383,-9712,-10708,-11041,-10616,-9359,-7290, -4681,-2139,-193,1073,1956,2707,3230,3297,2985,2630, 2526,2832,3617,4858,6306,7658,8772,9925,11456,13256, 14786,15673,16120,16356,16160,15315,13966,12391,10743,8956, 7158,5721,4980,4877,5143,5557,5942,6141,6091,5819, 5387,4803,4021,3151,2490,2261,2278,2060,1314,232, -756,-1419,-1785,-1903,-1789,-1608,-1623,-1963,-2632,-3665, -5022,-6472,-7686,-8543,-9144,-9471,-9289,-8582,-7633,-6857, -6573,-6767,-7076,-7133,-6976,-6865,-6891,-6880,-6700,-6462, -6344,-6356,-6419,-6517,-6771,-7317,-8053,-8674,-8781,-8169, -7021,-5802,-4964,-4568,-4286,-3935,-3722,-3979,-4793,-5906, -6887,-7454,-7738,-8035,-8510,-9098,-9837,-10944,-12350,-13670, -14537,-15018,-15265,-15118,-14337,-12781,-10569,-8181,-6257,-5125, -4482,-3756,-2661,-1323,-85,804,1387,1906,2519,3006, 2977,2294,1135,-282,-1825,-3338,-4684,-5929,-7331,-8972, -10464,-11173,-10676,-9040,-6788,-4571,-2861,-1684,-622,793, 2578,4267,5319,5540,5224,4837,4753,5054,5545,5853, 5654,4891,3841,2989,2741,3187,4089,5207,6598,8326, 10163,11716,12821,13557,13964,13991,13677,13029,11885,10076, 7739,5446,3809,2962,2484,1908,1138,338,-378,-1035, -1593,-1912,-2054,-2284,-2757,-3199,-3292,-3211,-3472,-4205, -4961,-5155,-4500,-3031,-963,1451,3801,5562,6426,6416, 5650,4273,2612,1204,466,510,1016,1441,1486,1179, 667,152,-88,304,1569,3574,5855,8046,10078,11936, 13431,14286,14441,14026,13246,12242,11025,9696,8328,6954, 5639,4542,3737,2941,1703,3,-1539,-2285,-2353,-2359, -2579,-2847,-3037,-3310,-3873,-4808,-6159,-7868,-9651,-11105, -11838,-11650,-10584,-8874,-6749,-4545,-2783,-1764,-1252,-758, -157,281,490,838,1602,2579,3347,3737,3925,4253, 5051,6474,8416,10579,12676,14456,15747,16480,16571,15858, 14414,12712,11254,10175,9339,8657,8197,7997,7896,7577, 6925,6212,5806,5788,5879,5758,5360,4832,4338,3864, 3260,2422,1466,615,-13,-360,-364,-55,436,932, 1172,760,-532,-2426,-4239,-5545,-6569,-7591,-8451,-8803, -8467,-7707,-7021,-6786,-7062,-7594,-8032,-8113,-7729,-6966, -6040,-5307,-5039,-5225,-5694,-6241,-6768,-7223,-7657,-8217, -8773,-8903,-8429,-7692,-7181,-6896,-6471,-5614,-4468,-3508, -3200,-3630,-4498,-5317,-5750,-5749,-5535,-5478,-5898,-6887, -8285,-9850,-11407,-12933,-14319,-15287,-15579,-15098,-13967,-12493, -11157,-10404,-10238,-10077,-9219,-7464,-5231,-3171,-1736,-1010, -769,-592,33,1262,2746,3860,4086,3312,1861,87, -1888,-3983,-6007,-7825,-9372,-10391,-10499,-9612,-8218,-6917, -5874,-4845,-3656,-2416,-1254,-30,1396,2969,4416,5513, 6162,6332,6001,5301,4538,4041,3816,3551,3009,2288, 1800,2018,3164,5116,7464,9776,11704,13011,13736,14063, 14038,13520,12539,11407,10410,9525,8506,7201,5661,4064, 2558,1253,291,-182,-115,196,311,15,-557,-1332, -2371,-3650,-4917,-5869,-6250,-5800,-4446,-2566,-828,436, 1415,2380,3277,3793,3731,3301,2985,3016,3189,3127, 2662,1910,1174,658,250,-300,-994,-1437,-1054,391, 2607,5069,7378,9410,11032,12009,12241,12097,12070,12295, 12481,12298,11709,10853,9773,8444,6832,4975,2986,1173, -66,-514,-399,-225,-308,-528,-713,-1000,-1797,-3315, -5330,-7357,-8984,-10068,-10670,-10822,-10442,-9496,-8218,-7014, -6126,-5399,-4643,-3863,-3068,-2228,-1415,-693,-15,624, 1027,1012,778,911,1874,3626,5795,8087,10362,12462, 14089,14868,14716,13979,13211,12687,12241,11646,10973,10467, 10199,9927,9437,8680,7742,6934,6647,6944,7390,7470, 7047,6266,5330,4302,3230,2281,1536,929,448,262, 592,1420,2401,3012,2814,1829,451,-927,-2156,-3319, -4499,-5654,-6602,-7211,-7424,-7367,-7417,-7830,-8408,-8738, -8575,-8033,-7306,-6606,-6030,-5548,-5169,-4902,-4793,-4979, -5662,-6909,-8322,-9227,-9280,-8829,-8408,-8161,-7901,-7495, -6983,-6338,-5568,-4982,-4875,-5099,-5118,-4577,-3631,-2818, -2618,-3181,-4466,-6248,-8101,-9542,-10383,-10887,-11599,-12783, -14102,-14912,-14918,-14328,-13490,-12614,-11791,-11017,-10266,-9482, -8546,-7488,-6412,-5356,-4208,-2897,-1501,-89,1306,2616, 3707,4315,4088,2864,811,-1639,-4071,-6099,-7385,-7837, -7841,-7989,-8424,-8758,-8619,-8045,-7240,-6216,-4849,-3203, -1516,86,1632,3083,4343,5309,5902,6096,5839,5139, 4144,2978,1700,519,-94,226,1463,3281,5167,6790, 8176,9554,10982,12138,12733,12908,13082,13402,13534,13049, 11658,9525,7213,5259,3837,2808,2151,2057,2531,3117, 3117,2180,482,-1453,-3137,-4314,-4956,-5107,-4796,-4127, -3388,-2864,-2547,-2161,-1437,-419,584,1282,1703,2151, 2834,3673,4323,4388,3719,2604,1538,698,-121,-1057, -1828,-2013,-1443,-270,1166,2602,3951,5285,6645,7907, 8913,9710,10578,11640,12692,13428,13662,13371,12547,11216, 9322,6934,4537,2798,2065,2060,2234,2282,2157,1878, 1367,449,-912,-2551,-4148,-5440,-6431,-7325,-8244,-9053, -9510,-9576,-9403,-9186,-8851,-8110,-6866,-5424,-4192,-3383, -2985,-2806,-2634,-2445,-2279,-2077,-1714,-1050,5,1527, 3498,5664,7693,9350,10593,11504,12181,12687,12968,12927, 12542,11997,11488,11133,10958,10754,10199,9278,8420,8133, 8486,9106,9541,9503,8863,7635,6093,4684,3583,2663, 1837,1294,1271,1744,2389,2823,2891,2663,2358,2145, 2051,1865,1238,-51,-1789,-3443,-4600,-5284,-5842,-6552, -7341,-8006,-8489,-8805,-8824,-8445,-7816,-7180,-6575,-5850, -4944,-4057,-3550,-3839,-5096,-6933,-8563,-9303,-9005,-8103, -7234,-6960,-7471,-8351,-8942,-8887,-8326,-7444,-6259,-4913, -3788,-3188,-3003,-2947,-2919,-3041,-3452,-4108,-4940,-6031, -7524,-9321,-11020,-12263,-13017,-13475,-13808,-13986,-13889,-13426, -12667,-11869,-11329,-11146,-11179,-11091,-10559,-9426,-7808,-5894, -3778,-1619,183,1323,1937,2368,2725,2745,2121,898, -636,-2181,-3586,-4896,-6219,-7489,-8312,-8457,-8175,-8007, -8280,-8647,-8463,-7376,-5607,-3611,-1621,380,2480,4438, 5671,5833,5212,4401,3677,2917,2045,1217,716,687, 1013,1558,2231,3010,3994,5422,7337,9403,11230,12686, 13847,14628,14653,13630,11794,9859,8505,7768,7202,6506, 5818,5390,5221,5000,4347,3144,1498,-331,-1971,-3085, -3638,-3734,-3461,-2950,-2461,-2334,-2659,-3125,-3313,-2993, -2240,-1233,7,1515,3123,4366,4786,4282,3241,2261, 1552,926,228,-457,-858,-828,-470,-35,321,678, 1158,1835,2690,3711,5001,6626,8520,10485,12194,13370, 13903,13884,13315,12148,10479,8611,6970,5861,5306,5148, 5162,5061,4561,3625,2491,1378,357,-618,-1541,-2442, -3423,-4563,-5797,-6989,-8112,-9139,-9866,-10015,-9448,-8283, -6873,-5638,-4888,-4678,-4827,-5067,-5178,-5056,-4745,-4377, -3966,-3293,-2128,-512,1278,2962,4400,5650,6903,8358, 9948,11332,12162,12391,12243,11931,11502,10975,10302,9508, 8916,8948,9647,10558,11179,11319,11041,10439,9529,8446, 7404,6427,5411,4282,3147,2269,1893,2045,2447,2729, 2709,2497,2430,2763,3369,3735,3366,2247,783,-547, -1585,-2458,-3341,-4408,-5725,-7219,-8639,-9575,-9700,-9019, -7879,-6740,-5884,-5349,-5027,-4861,-4879,-5092,-5363,-5543, -5644,-5878,-6454,-7287,-8029,-8377,-8394,-8450,-8767,-9116, -9183,-8797,-7975,-6843,-5588,-4394,-3334,-2564,-2191,-2192, -2361,-2509,-2698,-3337,-4851,-7099,-9389,-11026,-11841,-12180, -12429,-12544,-12256,-11650,-11360,-11920,-13092,-14074,-14235,-13567, -12412,-11090,-9711,-8205,-6552,-4863,-3325,-2018,-860,303, 1455,2314,2499,1866,772,-245,-1048,-1970,-3182,-4398, -5296,-5993,-6908,-8213,-9575,-10436,-10446,-9682,-8345,-6568, -4486,-2251,-70,1792,2994,3399,3280,3237,3571,3983, 3930,3287,2273,1187,212,-588,-978,-598,721,2797, 5148,7368,9287,10907,12162,12855,12855,12255,11422,10759, 10403,10235,9992,9552,9018,8492,7935,7123,5863,4184, 2432,1018,41,-643,-1094,-1300,-1335,-1475,-1949,-2660, -3316,-3751,-3967,-3911,-3399,-2319,-805,806,2249,3335, 3844,3650,2867,1922,1225,898,809,813,864,908, 883,675,249,-326,-864,-1121,-800,339,2236,4497, 6710,8693,10341,11553,12322,12640,12504,11992,11289,10544, 9805,9086,8517,8100,7590,6775,5772,4898,4243,3731, 3235,2570,1561,213,-1218,-2488,-3619,-4855,-6349,-7885, -8940,-9085,-8442,-7532,-6717,-6065,-5560,-5343,-5506,-5942, -6459,-6867,-6946,-6520,-5613,-4495,-3431,-2526,-1742,-941, 86,1585,3728,6355,8926,10718,11381,11190,10760,10504, 10361,10101,9686,9308,9189,9447,10047,10852,11637,12082, 12007,11527,10876,10244,9636,8907,7832,6295,4583,3296, 2771,2804,3000,3147,3200,3184,3112,2992,2877,2940, 3444,4257,4744,4281,2757,630,-1538,-3405,-4883,-6038, -6883,-7320,-7370,-7386,-7683,-8006,-7792,-6863,-5679,-4925, -4810,-4950,-4840,-4438,-4184,-4459,-5230,-6122,-6786,-7190, -7525,-7995,-8652,-9264,-9511,-9314,-8941,-8602,-8110,-7039, -5264,-3248,-1670,-799,-461,-531,-1173,-2528,-4339,-6063, -7272,-7964,-8467,-9018,-9631,-10208,-10670,-11049,-11513,-12245, -13153,-13846,-14059,-13908,-13640,-13283,-12557,-11225,-9321,-7270, -5549,-4250,-3174,-2117,-1076,-231,372,805,1146,1383, 1418,1087,299,-836,-2200,-3824,-5707,-7588,-9039,-9780, -9834,-9416,-8781,-8002,-6996,-5650,-4027,-2396,-919,488, 1934,3327,4364,4838,4687,3951,2737,1248,-179,-1229, -1680,-1444,-510,1070,3086,5195,7056,8472,9390,9802, 9847,9846,10088,10678,11505,12309,12774,12643,11900,10752, 9504,8340,7285,6247,5111,3986,3092,2508,2033,1338, 335,-764,-1680,-2330,-2866,-3428,-3851,-3822,-3222,-2202, -952,345,1479,2177,2297,1986,1587,1348,1311,1484, 1877,2343,2577,2398,1915,1266,407,-758,-2005,-2682, -2244,-728,1289,3172,4644,5807,6951,8199,9446,10492, 11214,11633,11805,11779,11555,11087,10369,9580,8946,8490, 8016,7466,7002,6643,6133,5258,4145,2974,1737,316, -1343,-3175,-4959,-6277,-6780,-6559,-6126,-5931,-6063,-6354, -6565,-6567,-6378,-6144,-6054,-6219,-6681,-7320,-7745,-7575, -6766,-5725,-4816,-3948,-2744,-923,1416,3928,6191,7888, 8957,9549,9827,9855,9654,9438,9427,9581,9625,9427, 9307,9733,10844,12197,13164,13420,13147,12599,11725,10392, 8885,7766,7236,6932,6351,5314,3987,2822,2266,2438, 3023,3532,3805,4126,4762,5525,5885,5539,4575,3290, 1860,265,-1506,-3250,-4616,-5482,-6026,-6553,-7177,-7692, -7848,-7588,-7022,-6326,-5618,-4932,-4312,-3880,-3826,-4235, -4880,-5316,-5315,-5163,-5401,-6271,-7585,-8977,-10155,-10961, -11308,-11021,-9908,-7981,-5698,-3723,-2414,-1735,-1476,-1524, -1814,-2245,-2784,-3476,-4311,-5213,-6163,-7138,-7973,-8570, -9032,-9572,-10331,-11289,-12315,-13312,-14187,-14847,-15179,-15004, -14174,-12726,-10987,-9362,-8093,-7176,-6499,-5848,-5002,-3826, -2319,-693,744,1786,2376,2426,1829,635,-902,-2436, -3760,-4928,-6020,-7050,-8003,-8822,-9406,-9635,-9433,-8778, -7644,-6039,-4037,-1836,235,1925,3191,4086,4383,3751, 2282,640,-520,-1037,-1068,-764,-146,784,1916,3083, 4126,4934,5537,6074,6746,7729,9035,10460,11754,12763, 13342,13380,12874,11987,10978,10047,9239,8461,7676,7009, 6546,6075,5178,3708,1919,205,-1143,-1996,-2452,-2769, -3035,-2986,-2394,-1450,-615,-156,-62,-171,-254,-81, 404,1103,1861,2555,3032,3121,2841,2366,1790,1062, 175,-750,-1532,-1913,-1724,-1086,-312,499,1516,2882, 4440,5876,7058,8035,8926,9764,10558,11267,11732,11748, 11233,10307,9337,8746,8779,9373,10079,10303,9611,8052, 6177,4584,3405,2274,856,-672,-1924,-2862,-3820,-4929, -5827,-6155,-6032,-5886,-5886,-5859,-5647,-5349,-5288,-5728, -6714,-7981,-9078,-9593,-9428,-8796,-7927,-6792,-5327,-3593, -1836,-251,1305,3200,5500,7654,8911,8983,8345,7708, 7400,7425,7742,8302,8982,9658,10304,10894,11399,11822, 12192,12499,12603,12314,11587,10557,9462,8449,7451,6274, 4961,3877,3307,3131,3048,2984,3157,3735,4589,5378, 5808,5835,5522,4954,4156,3114,1769,175,-1462,-2982, -4328,-5519,-6444,-6952,-7056,-6937,-6795,-6727,-6683,-6564, -6287,-5824,-5177,-4351,-3446,-2735,-2567,-3103,-4286,-5833, -7434,-8895,-10097,-10896,-11152,-10893,-10266,-9316,-8020,-6502, -5035,-3899,-3130,-2594,-2223,-2106,-2327,-2786,-3323,-3858, -4381,-4819,-5171,-5654,-6488,-7669,-8982,-10236,-11485,-12820, -14043,-14768,-14845,-14533,-14103,-13546,-12751,-11833,-11036,-10462, -9920,-9108,-7869,-6270,-4555,-3006,-1706,-580,392,1089, 1310,1009,289,-604,-1397,-2056,-2887,-4177,-5837,-7524, -9011,-10201,-10973,-11027,-10165,-8475,-6277,-3971,-1884,-199, 1007,1629,1616,1099,427,-44,-143,51,310,409, 310,219,390,836,1326,1682,2009,2622,3721,5243, 6943,8522,9820,10852,11658,12139,12134,11736,11259,10842, 10445,10081,9941,10042,10020,9382,7870,5669,3293,1293, -108,-999,-1464,-1512,-1262,-977,-840,-871,-1101,-1531, -1913,-1887,-1358,-561,267,1078,1801,2236,2307,2278, 2450,2732,2635,1782,410,-807,-1351,-1251,-917,-697, -694,-707,-451,219,1301,2717,4366,6048,7508,8520, 8986,9047,9044,9303,9780,10080,10056,10023,10356,10948, 11305,11140,10554,9787,8916,7845,6488,4946,3502,2324, 1235,-50,-1637,-3307,-4657,-5303,-5159,-4539,-3957,-3789, -3972,-4294,-4754,-5492,-6464,-7396,-8104,-8675,-9277,-9869, -10175,-9904,-8924,-7312,-5325,-3242,-1235,688,2497,4054, 5192,5863,6214,6496,6808,7056,7119,7129,7341,7854, 8543,9259,9983,10758,11578,12327,12821,12976,12834,12441, 11730,10651,9268,7795,6491,5501,4796,4272,3916,3752, 3672,3592,3685,4176,5041,5976,6667,6896,6519,5526, 4040,2277,555,-834,-1751,-2316,-2813,-3537,-4643,-6038, -7372,-8229,-8463,-8193,-7502,-6376,-4928,-3519,-2539,-2150, -2305,-2834,-3596,-4539,-5710,-7098,-8486,-9633,-10408,-10813, -10830,-10367,-9368,-7978,-6563,-5509,-4924,-4582,-4184,-3695, -3287,-3063,-2905,-2661,-2328,-2109,-2376,-3328,-4753,-6234, -7505,-8614,-9709,-10800,-11786,-12593,-13244,-13747,-14120,-14342, -14320,-14022,-13484,-12819,-12004,-10956,-9689,-8369,-7143,-6000, -4865,-3693,-2495,-1372,-494,92,536,972,1267,1067, 46,-1843,-4258,-6633,-8560,-9922,-10723,-10822,-10104,-8735, -7138,-5620,-4247,-3039,-2137,-1675,-1560,-1456,-1113,-513, 171,746,984,768,301,-51,-170,-282,-516,-651, -341,524,1759,3158,4641,6151,7516,8489,8973,9198, 9496,9980,10472,10860,11320,12026,12759,13007,12399,10917, 8885,6857,5270,4164,3181,2032,798,-146,-537,-487, -345,-427,-800,-1346,-1939,-2451,-2621,-2105,-811,794, 1995,2408,2232,1878,1635,1619,1723,1704,1468,1069, 561,-150,-1117,-2086,-2566,-2246,-1350,-340,548,1404, 2440,3688,4901,5768,6255,6584,6939,7432,8108,8902, 9595,10042,10313,10524,10676,10772,10931,11238,11488,11238, 10200,8491,6510,4573,2832,1346,132,-878,-1741,-2449, -3044,-3568,-3952,-3975,-3595,-3140,-3008,-3390,-4249,-5438, -6836,-8282,-9591,-10595,-11119,-11074,-10541,-9654,-8437,-6858, -5022,-3134,-1332,377,1917,3157,4050,4655,5098,5502, 5920,6291,6473,6478,6535,6926,7770,8891,10084,11193, 12108,12727,12980,12813,12256,11476,10713,10058,9321,8239, 6848,5451,4344,3630,3282,3342,3879,4820,5813,6425, 6487,6110,5580,5092,4684,4281,3787,3167,2447,1583, 369,-1380,-3439,-5319,-6662,-7469,-7952,-8198,-8073,-7329, -5961,-4403,-3178,-2488,-2183,-2149,-2461,-3202,-4361,-5754, -7171,-8368,-9189,-9646,-9768,-9567,-9133,-8644,-8252,-7949, -7620,-7116,-6390,-5512,-4613,-3785,-2965,-2040,-1176,-796, -1206,-2213,-3330,-4275,-5126,-6101,-7225,-8339,-9313,-10214, -11179,-12208,-13257,-14281,-15038,-15236,-14811,-13912,-12789,-11637, -10634,-9933,-9577,-9329,-8810,-7747,-6172,-4422,-2725,-1044, 668,2110,2732,2258,881,-973,-3027,-5071,-6832,-8071, -8669,-8701,-8441,-8142,-7802,-7210,-6354,-5468,-4808,-4438, -4151,-3642,-2678,-1384,-234,425,688,848,884,463, -479,-1574,-2242,-2156,-1302,74,1528,2660,3335,3656, 3808,4084,4786,5964,7452,8959,10101,10734,11145,11815, 12809,13644,13686,12771,11302,9715,8147,6618,5292,4344, 3724,3208,2566,1663,515,-637,-1374,-1528,-1367,-1253, -1260,-1169,-874,-409,181,826,1435,1900,2217,2420, 2474,2388,2184,1787,1051,5,-1095,-1938,-2296,-2065, -1346,-472,236,723,1136,1610,2202,2966,3980,5114, 6087,6722,7042,7194,7345,7662,8284,9211,10312,11432, 12369,12873,12850,12406,11689,10731,9477,7917,6239,4634, 3176,1826,555,-629,-1654,-2300,-2429,-2164,-1864,-1801, -1914,-2055,-2335,-3117,-4566,-6395,-8118,-9472,-10470,-11150, -11409,-11083,-10191,-8952,-7618,-6303,-4939,-3363,-1574,198, 1667,2717,3457,4008,4387,4553,4601,4806,5397,6307, 7198,7839,8260,8743,9553,10661,11815,12781,13425,13645, 13318,12334,10747,8843,7135,6065,5720,5795,5898,5822, 5589,5343,5171,5050,4982,5034,5261,5621,5967,6132, 6062,5818,5375,4538,3152,1352,-518,-2265,-3963,-5671, -7192,-8109,-8110,-7247,-5936,-4669,-3689,-3014,-2536,-2267, -2351,-2892,-3802,-4845,-5718,-6292,-6713,-7187,-7738,-8238, -8616,-8913,-9174,-9296,-9114,-8589,-7888,-7185,-6417,-5345, -3948,-2520,-1533,-1244,-1462,-1808,-2120,-2428,-2811,-3372, -4161,-5125,-6202,-7510,-9144,-10928,-12472,-13535,-14153,-14353, -14065,-13323,-12402,-11779,-11826,-12413,-12966,-12899,-12044,-10613, -8852,-6854,-4642,-2405,-456,897,1443,1164,326,-682, -1760,-3040,-4461,-5667,-6371,-6722,-7004,-7203,-7134,-6901, -6825,-7058,-7376,-7355,-6680,-5273,-3392,-1629,-572,-345, -604,-929,-1144,-1262,-1371,-1448,-1355,-1029,-620,-282, 30,517,1204,1784,2008,1993,2091,2590,3646,5282, 7270,9207,10776,11811,12290,12345,12210,12045,11874,11576, 11024,10140,8969,7649,6321,5087,3917,2789,1774,981, 427,29,-308,-606,-887,-1195,-1463,-1461,-1002,-107, 961,1931,2672,3096,3097,2672,1982,1270,679,232, -105,-371,-658,-1085,-1542,-1719,-1404,-712,40,716, 1438,2336,3239,3831,4037,4065,4244,4760,5504,6248, 6939,7729,8773,9982,11127,11992,12596,13050,13274,12991, 12039,10585,8985,7504,6133,4689,3115,1583,371,-382, -776,-915,-813,-487,-105,59,-310,-1358,-2877,-4416, -5716,-6924,-8209,-9483,-10510,-11128,-11269,-10934,-10104,-8847, -7270,-5510,-3840,-2555,-1742,-1129,-308,888,2295,3568, 4423,4800,4807,4591,4358,4427,5126,6523,8356,10130, 11505,12441,13029,13230,12866,11922,10677,9581,8934,8672, 8461,8040,7420,6766,6261,5930,5598,5080,4523,4278, 4535,5163,5918,6658,7313,7714,7632,6947,5732,4174, 2414,463,-1638,-3696,-5323,-6191,-6274,-5841,-5268,-4792, -4373,-3881,-3355,-3010,-2986,-3226,-3516,-3737,-3998,-4381, -4823,-5224,-5688,-6406,-7396,-8417,-9170,-9523,-9457,-9058, -8624,-8286,-7755,-6729,-5422,-4406,-3896,-3589,-3016,-2099, -1161,-503,-280,-561,-1359,-2613,-4235,-6045,-7738,-9103, -10136,-10846,-11230,-11374,-11487,-11747,-12223,-12929,-13843,-14657, -14897,-14367,-13332,-12161,-10910,-9350,-7288,-4893,-2615,-915, -70,-84,-693,-1522,-2236,-2649,-2777,-2808,-2993,-3541, -4567,-5938,-7296,-8223,-8447,-8046,-7371,-6709,-6112,-5532, -4897,-4170,-3301,-2377,-1668,-1446,-1763,-2277,-2527,-2296, -1715,-970,-161,528,761,437,-132,-495,-550,-377, 34,786,1920,3347,4954,6518,7862,8919,9748,10479, 11187,11888,12488,12782,12639,12121,11309,10213,8848,7376, 6073,5169,4597,4016,3117,1907,671,-334,-1001,-1369, -1474,-1253,-619,321,1223,1770,1982,2125,2340,2564, 2658,2543,2238,1753,1080,234,-710,-1527,-1915,-1763, -1268,-756,-283,305,1001,1617,2008,2239,2466,2760, 3090,3394,3670,4044,4704,5731,6977,8177,9230,10205, 11204,12259,13236,13830,13810,13187,12118,10676,8912,6947, 5096,3658,2723,2170,1726,1271,888,685,641,644, 654,566,175,-728,-2304,-4458,-6773,-8657,-9708,-9973, -9859,-9813,-9927,-9909,-9455,-8613,-7660,-6710,-5562,-3954, -1977,-139,1075,1586,1656,1606,1642,1867,2369,3184, 4261,5516,6840,8148,9377,10486,11417,11943,11889,11344, 10726,10370,10234,10095,9871,9573,9170,8597,7864,7018, 6032,4990,4185,3901,4152,4799,5769,6966,8123,8828, 8817,8148,7129,6000,4700,3032,1025,-945,-2422,-3298, -3788,-4102,-4330,-4496,-4522,-4363,-4105,-3877,-3765,-3725, -3615,-3390,-3173,-3076,-3176,-3563,-4318,-5438,-6726,-7794, -8307,-8292,-8108,-8094,-8303,-8541,-8647,-8606,-8413,-8034, -7335,-6134,-4365,-2253,-331,812,838,-93,-1425,-2621, -3518,-4291,-5110,-5957,-6756,-7526,-8320,-9045,-9634,-10249, -11147,-12417,-13921,-15384,-16458,-16755,-16003,-14247,-11962,-9770, -8080,-6944,-6134,-5386,-4531,-3546,-2526,-1659,-1159,-1151, -1574,-2169,-2685,-3133,-3742,-4670,-5845,-7061,-7989,-8291, -7934,-7176,-6333,-5597,-5060,-4710,-4477,-4328,-4267,-4268, -4173,-3792,-3101,-2300,-1603,-1068,-654,-372,-296,-498, -928,-1363,-1544,-1323,-806,-234,259,805,1622,2741, 4025,5385,6856,8388,9786,10863,11529,11813,11861,11814, 11703,11451,11011,10430,9710,8730,7415,5846,4250,2868, 1825,1028,365,-170,-532,-659,-592,-419,-160,254, 922,1796,2634,3180,3310,3097,2694,2188,1536,696, -228,-1025,-1537,-1737,-1646,-1269,-658,41,620,974, 1109,1108,1155,1379,1752,2147,2522,2902,3326,3804, 4285,4811,5680,7211,9341,11510,13036,13635,13524,13170, 12822,12370,11532,10154,8385,6619,5110,3845,2791,2134, 2077,2481,2960,3160,2910,2214,1146,-194,-1600,-2828, -3756,-4492,-5329,-6513,-8049,-9632,-10825,-11316,-11064,-10334, -9395,-8326,-7020,-5518,-4083,-2999,-2294,-1787,-1326,-955, -712,-386,316,1456,2793,4087,5228,6271,7300,8319, 9202,9758,9898,9810,9869,10272,10873,11319,11374,11067, 10586,9926,8974,7767,6478,5332,4519,4160,4315,4998, 6076,7222,8101,8549,8612,8437,8090,7470,6473,5127, 3554,1960,636,-244,-834,-1520,-2497,-3552,-4293,-4523, -4424,-4271,-4104,-3810,-3316,-2729,-2278,-2249,-2802,-3796, -4866,-5605,-5786,-5519,-5195,-5223,-5766,-6760,-8048,-9385, -10412,-10783,-10424,-9513,-8339,-7031,-5545,-3891,-2281,-988, -242,-132,-624,-1589,-2815,-3950,-4571,-4464,-3876,-3381, -3523,-4558,-6436,-8786,-11060,-12801,-13936,-14708,-15300,-15635, -15530,-14882,-13769,-12421,-11113,-9993,-8999,-7977,-6896,-5787, -4689,-3635,-2664,-1809,-1209,-1053,-1444,-2285,-3388,-4571, -5696,-6611,-7152,-7203,-6815,-6187,-5614,-5321,-5357,-5610, -5918,-6134,-6101,-5724,-5045,-4235,-3498,-2959,-2605,-2311, -1989,-1679,-1398,-1150,-963,-866,-895,-1092,-1495,-1931, -2054,-1607,-668,480,1690,3006,4443,5836,6933,7711, 8382,9167,10122,11144,12023,12577,12689,12318,11527,10464, 9265,8015,6800,5698,4663,3543,2272,1047,168,-266, -437,-537,-563,-315,366,1373,2346,2983,3326,3558, 3643,3295,2312,920,-300,-877,-824,-545,-432,-614, -916,-1071,-903,-396,304,989,1483,1719,1666,1353, 990,911,1265,1913,2571,3199,3997,5114,6489,7939, 9438,11081,12839,14307,14903,14347,12875,10994,9181,7728, 6757,6220,5938,5693,5347,4836,4132,3388,2821,2544, 2409,2109,1450,553,-346,-1236,-2393,-4057,-6142,-8174, -9712,-10574,-10791,-10511,-9889,-9011,-7933,-6800,-5820,-5100, -4688,-4520,-4412,-4156,-3644,-2801,-1578,-79,1458,2751, 3698,4429,5146,5901,6585,7042,7351,7882,8902,10234, 11411,12066,12090,11652,11017,10348,9640,8746,7552,6244, 5245,4914,5231,5870,6495,7064,7687,8316,8735,8738, 8369,7811,7204,6550,5812,5052,4342,3534,2315,594, -1295,-2838,-3660,-3682,-3134,-2451,-2047,-2102,-2519,-3117, -3705,-4107,-4164,-3895,-3465,-3098,-2970,-3178,-3689,-4306, -4865,-5450,-6334,-7689,-9386,-10938,-11714,-11290,-9762,-7665, -5619,-4067,-3151,-2782,-2768,-2898,-3008,-2984,-2751,-2291, -1722,-1229,-961,-1057,-1632,-2688,-4116,-5802,-7671,-9581, -11340,-12811,-13916,-14594,-14807,-14621,-14164,-13563,-12936,-12304, -11592,-10689,-9573,-8293,-6818,-5104,-3373,-2067,-1508,-1635, -2108,-2683,-3374,-4213,-4996,-5459,-5541,-5406,-5267,-5262, -5416,-5663,-5898,-6030,-6037,-5979,-5879,-5680,-5353,-4988, -4720,-4571,-4339,-3794,-2981,-2170,-1576,-1182,-926,-883, -1196,-1833,-2492,-2785,-2495,-1778,-1015,-466,-33,531, 1402,2490,3595,4623,5699,6978,8417,9758,10741,11340, 11805,12325,12695,12518,11659,10427,9261,8363,7560,6543, 5208,3693,2161,708,-474,-1100,-948,-100,1064,2063, 2612,2756,2775,2909,3143,3255,3067,2635,2093,1463, 621,-416,-1289,-1570,-1208,-577,-98,124,239,370, 525,663,806,1038,1403,1674,1563,1028,341,-7, 432,1824,3925,6233,8332,10041,11365,12317,12828,12810, 12298,11543,10818,10232,9717,9176,8530,7768,6938,6052, 5175,4459,4084,4047,4109,3992,3631,3159,2611,1799, 452,-1528,-3894,-6175,-7919,-8919,-9256,-9177,-8934,-8611, -8093,-7353,-6663,-6450,-6850,-7490,-7754,-7305,-6227,-4807, -3303,-1848,-515,589,1356,1858,2304,2869,3587,4411, 5369,6535,7941,9399,10570,11248,11512,11552,11430,11079, 10383,9315,8036,6852,6104,5992,6429,7073,7559,7738, 7655,7464,7339,7393,7727,8345,9011,9300,8863,7637, 5876,4024,2500,1489,903,471,-41,-655,-1258,-1719, -1991,-2187,-2503,-3090,-3875,-4615,-4979,-4742,-3934,-2836, -1850,-1291,-1412,-2300,-3765,-5445,-7060,-8481,-9547,-10040, -9932,-9451,-8852,-8248,-7624,-6967,-6355,-5881,-5583,-5327, -4903,-4228,-3421,-2597,-1802,-1056,-461,-138,-220,-856, -2104,-3782,-5555,-7184,-8697,-10174,-11509,-12536,-13283,-13943, -14657,-15334,-15685,-15459,-14639,-13413,-11972,-10361,-8618,-6929, -5587,-4743,-4329,-4111,-3880,-3649,-3602,-3875,-4359,-4787, -5014,-5139,-5368,-5747,-6081,-6111,-5826,-5530,-5545,-5855, -6235,-6512,-6644,-6647,-6482,-6050,-5323,-4413,-3601,-3144, -3018,-2982,-2825,-2538,-2274,-2218,-2384,-2542,-2510,-2367, -2279,-2177,-1812,-1159,-477,19,481,1285,2635,4331, 5947,7243,8263,9149,9944,10622,11228,11817,12363,12783, 12836,12177,10659,8568,6480,4821,3635,2681,1805,1079, 657,545,576,651,881,1446,2333,3267,3890,3980, 3501,2698,1992,1634,1512,1306,826,132,-611,-1234, -1584,-1497,-878,153,1220,1863,1919,1547,985,357, -273,-823,-1139,-1014,-277,1055,2713,4311,5626,6777, 8040,9446,10668,11364,11510,11436,11517,11793,11935,11567, 10610,9336,8114,7165,6502,6048,5808,5801,5936,6057, 6026,5743,5100,4008,2420,383,-1877,-3945,-5453,-6276, -6609,-6772,-6951,-7142,-7267,-7377,-7654,-8219,-8901,-9322, -9212,-8572,-7581,-6463,-5376,-4350,-3369,-2406,-1479,-669, -51,473,1071,1837,2817,4093,5738,7662,9519,10860, 11408,11171,10390,9450,8784,8629,8857,9077,8929,8290, 7334,6417,5901,5976,6583,7444,8207,8683,8929,9118, 9318,9380,9055,8279,7204,5933,4560,3319,2497,2163, 2151,2228,2114,1496,267,-1326,-2886,-4088,-4767,-4895, -4513,-3649,-2431,-1203,-454,-506,-1292,-2472,-3713,-4913, -6029,-6934,-7484,-7724,-7825,-7917,-8032,-8122,-8112,-7967, -7764,-7639,-7632,-7529,-7036,-6057,-4803,-3521,-2310,-1184, -225,332,264,-406,-1330,-2113,-2706,-3370,-4391,-5804, -7478,-9230,-10954,-12608,-14130,-15353,-16026,-16009,-15391,-14419, -13267,-11959,-10538,-9177,-8125,-7421,-6753,-5814,-4686,-3798, -3514,-3804,-4379,-4933,-5323,-5530,-5521,-5292,-4950,-4716, -4782,-5219,-5840,-6351,-6543,-6473,-6365,-6366,-6367,-6129, -5627,-5093,-4747,-4521,-4203,-3756,-3404,-3315,-3359,-3249, -2836,-2259,-1843,-1855,-2319,-2978,-3396,-3251,-2532,-1517, -484,462,1329,2089,2695,3225,3974,5205,6914,8815, 10542,11846,12615,12866,12739,12399,11912,11183,10122,8734, 7050,5152,3296,1908,1310,1440,1873,2096,1895,1493, 1347,1720,2459,3174,3649,3956,4161,4116,3599,2521, 1072,-302,-1160,-1324,-957,-383,212,832,1450,1878, 1856,1362,594,-205,-861,-1281,-1402,-1155,-477,521, 1540,2331,2946,3710,4874,6335,7786,8990,9923,10734, 11559,12316,12681,12344,11362,10115,8954,8051,7434,7152, 7294,7837,8476,8852,8727,8043,6862,5316,3577,1824, 277,-901,-1739,-2386,-2986,-3656,-4507,-5527,-6480,-7100, -7429,-7733,-8185,-8691,-9104,-9309,-9145,-8407,-7071,-5504, -4294,-3816,-3972,-4295,-4255,-3511,-2036,-96,1884,3559, 4863,5915,6839,7679,8387,8957,9457,9930,10215,10105, 9632,9073,8614,8166,7575,6870,6246,5969,6220,7000, 8080,9151,9992,10449,10453,10003,9146,8012,6865,6001, 5562,5470,5521,5622,5709,5487,4571,2925,939,-892, -2246,-3039,-3377,-3345,-2975,-2301,-1483,-771,-430,-596, -1184,-1987,-2862,-3790,-4775,-5647,-6110,-6071,-5791,-5703, -6041,-6681,-7391,-8082,-8771,-9300,-9364,-8803,-7798,-6725, -5795,-4940,-3986,-2899,-1867,-1120,-762,-682,-602,-374, -137,-226,-897,-2183,-3926,-5932,-8076,-10181,-11962,-13176, -13872,-14355,-14835,-15158,-14985,-14147,-12842,-11396,-10061,-8922, -7871,-6861,-6031,-5549,-5400,-5345,-5154,-4824,-4595,-4695, -5043,-5307,-5246,-4917,-4607,-4639,-5139,-5909,-6558,-6801, -6637,-6270,-5836,-5405,-5119,-5123,-5410,-5774,-5901,-5564, -4760,-3734,-2912,-2565,-2638,-2911,-3265,-3655,-3910,-3791, -3232,-2422,-1732,-1509,-1763,-2050,-1833,-943,263,1295, 2002,2675,3680,5131,6864,8623,10265,11723,12843,13382, 13167,12267,11010,9755,8650,7649,6650,5623,4616,3648, 2713,1831,1069,644,830,1643,2699,3573,4143,4502, 4699,4570,3916,2737,1324,186,-310,-215,150,575, 1048,1505,1783,1747,1386,820,211,-342,-761,-987, -994,-811,-474,-51,335,596,786,1159,1952,3186, 4720,6410,8153,9803,11101,11820,11904,11415,10516,9409, 8399,7847,8007,8798,9812,10612,10905,10582,9679,8495, 7467,6741,6034,4951,3416,1792,550,-119,-413,-687, -1264,-2314,-3775,-5425,-6908,-7955,-8439,-8409,-7991,-7420, -7036,-7081,-7478,-7866,-7943,-7665,-7150,-6525,-5815,-4931, -3829,-2593,-1297,86,1574,3022,4255,5219,6061,6990, 8096,9194,10001,10352,10208,9664,8868,7895,6783,5676, 4963,5125,6253,7875,9340,10299,10702,10578,9939,8886, 7774,7049,6928,7268,7723,8016,8072,7914,7473,6615, 5352,3847,2327,983,-110,-1000,-1724,-2123,-1949,-1188, -263,237,57,-603,-1354,-2017,-2685,-3399,-3960,-4165, -4068,-3948,-4036,-4381,-4904,-5577,-6449,-7501,-8538,-9211, -9252,-8698,-7883,-7244,-6964,-6867,-6574,-5791,-4583,-3314, -2227,-1262,-278,612,1081,926,266,-586,-1457,-2442, -3771,-5559,-7719,-9989,-12001,-13487,-14410,-14843,-14853,-14482, -13816,-12957,-12009,-11010,-9932,-8792,-7739,-7035,-6793,-6784, -6584,-5967,-5185,-4644,-4499,-4619,-4819,-5019,-5293,-5753, -6257,-6420,-6008,-5304,-4893,-5106,-5776,-6486,-6834,-6656, -6093,-5463,-4972,-4643,-4470,-4473,-4618,-4718,-4528,-4039, -3536,-3351,-3565,-3902,-3996,-3645,-3024,-2465,-2158,-2039, -1942,-1852,-1886,-2005,-1848,-989,639,2671,4636,6280, 7617,8750,9782,10684,11343,11707,11816,11712,11346,10633, 9535,8129,6595,5062,3604,2321,1396,1033,1316,2091, 3016,3786,4260,4400,4218,3789,3230,2607,1949,1347, 958,925,1199,1547,1792,1881,1759,1401,856,317, -67,-264,-342,-349,-288,-178,-105,-212,-608,-1282, -1959,-2103,-1214,789,3389,5808,7475,8292,8550,8605, 8678,8792,8849,8789,8642,8525,8554,8864,9543,10503, 11416,11847,11537,10534,9071,7502,6199,5362,4938,4722, 4509,4081,3237,1862,102,-1649,-3063,-4086,-4900,-5649, -6219,-6372,-6170,-6064,-6426,-7156,-7892,-8441,-8842,-9102, -9070,-8647,-7862,-6889,-5921,-5028,-4157,-3220,-2171,-1046, 106,1371,2950,4956,7172,9036,10009,10011,9384,8453, 7321,6072,4993,4535,5008,6212,7578,8580,9091,9274, 9295,9135,8739,8182,7680,7427,7517,7900,8432,8953, 9334,9452,9088,8019,6307,4437,2988,2121,1546,937, 299,-109,-123,164,445,391,-92,-818,-1468,-1902, -2194,-2459,-2684,-2762,-2708,-2689,-2957,-3647,-4573,-5395, -5931,-6297,-6645,-7037,-7465,-7919,-8368,-8732,-8900,-8768, -8214,-7216,-6023,-5000,-4268,-3543,-2482,-1078,274,1106, 1266,950,463,-72,-844,-2154,-4025,-6179,-8335,-10352, -12184,-13692,-14592,-14688,-14049,-13025,-12095,-11566,-11410,-11328, -10995,-10284,-9233,-7917,-6474,-5242,-4691,-5009,-5851,-6517, -6510,-5890,-5126,-4707,-4796,-5202,-5644,-5986,-6225,-6338, -6299,-6123,-5885,-5701,-5647,-5691,-5699,-5478,-4996,-4498, -4289,-4421,-4714,-4975,-5132,-5140,-4898,-4351,-3621,-2949, -2537,-2448,-2652,-3037,-3386,-3528,-3474,-3278,-2879,-2171, -1110,248,1696,2969,4002,4918,5952,7263,8809,10399, 11796,12741,12999,12493,11334,9776,8117,6544,5126,3924, 3069,2713,2889,3431,4015,4293,4112,3667,3335,3228, 3139,2804,2280,1892,1938,2431,3036,3358,3162,2423, 1358,358,-144,53,776,1577,2047,1950,1190,-21, -1224,-2024,-2368,-2463,-2396,-2010,-1123,205,1721,3220, 4684,6089,7179,7592,7294,6662,6209,6257,6828,7766, 8837,9859,10710,11308,11527,11307,10790,10218,9742,9330, 8822,8208,7701,7422,7156,6480,5190,3511,1892,590, -505,-1614,-2691,-3455,-3737,-3726,-3798,-4221,-5032,-6092, -7184,-8108,-8785,-9191,-9228,-8783,-7951,-7191,-6957,-7250, -7644,-7652,-7022,-5706,-3723,-1152,1749,4507,6539,7536, 7697,7480,7216,6928,6458,5782,5134,4890,5326,6340, 7457,8204,8477,8436,8265,8007,7684,7386,7262,7437, 7974,8786,9617,10172,10329,10162,9662,8700,7256,5614, 4212,3346,3014,2940,2816,2545,2158,1661,999,180, -556,-888,-725,-332,-158,-468,-1240,-2173,-2865,-3078, -2963,-2935,-3200,-3664,-4142,-4612,-5186,-5899,-6584,-7061, -7402,-7855,-8495,-9079,-9221,-8779,-7976,-7135,-6323,-5394, -4292,-3122,-2017,-1010,-11,1024,1962,2465,2137,750, -1487,-3955,-6015,-7479,-8585,-9642,-10795,-11966,-12990,-13706, -14015,-13886,-13315,-12384,-11318,-10405,-9742,-9203,-8608,-7901, -7152,-6501,-6091,-5937,-5904,-5863,-5785,-5706,-5640,-5580, -5523,-5517,-5673,-6099,-6690,-7120,-7081,-6548,-5777,-5065, -4598,-4457,-4607,-4912,-5269,-5610,-5890,-6025,-5940,-5604, -5080,-4456,-3791,-3223,-2987,-3266,-3921,-4483,-4576,-4210, -3706,-3356,-3149,-2895,-2477,-1916,-1286,-667,-60,712, 1965,3895,6288,8636,10472,11623,12148,12106,11517,10536, 9389,8169,6838,5480,4492,4296,4872,5613,5819,5229, 4098,2885,1981,1622,1886,2636,3576,4332,4553,4126, 3221,2218,1496,1247,1358,1535,1646,1799,2096,2411, 2442,2074,1462,759,-133,-1383,-2807,-3850,-3980,-3099, -1573,83,1503,2617,3507,4209,4576,4482,4128,3988, 4409,5338,6434,7427,8278,9060,9731,10111,10151,10030, 10048,10315,10671,10861,10786,10526,10152,9679,9040,8109, 6812,5296,3869,2686,1659,740,61,-249,-365,-723, -1680,-3200,-4856,-6111,-6649,-6584,-6315,-6242,-6497,-7008, -7663,-8390,-9169,-9981,-10630,-10746,-10019,-8394,-6090,-3433, -685,1892,3948,5179,5587,5466,5189,5033,5078,5260, 5505,5827,6275,6801,7255,7459,7369,7138,6954,6852, 6741,6601,6635,7157,8269,9660,10756,11147,10878,10252, 9503,8703,7876,7124,6557,6133,5693,5082,4291,3484, 2860,2458,2102,1642,1124,724,566,579,535,221, -366,-1009,-1473,-1762,-2046,-2426,-2784,-2931,-2860,-2812, -3095,-3841,-4930,-6047,-6918,-7404,-7525,-7487,-7575,-7944, -8521,-9057,-9211,-8694,-7353,-5305,-3016,-1108,25,507, 752,1028,1261,1254,894,169,-955,-2508,-4412,-6493, -8528,-10240,-11397,-11987,-12271,-12524,-12811,-12947,-12723,-12115, -11270,-10351,-9432,-8616,-8051,-7811,-7692,-7370,-6724,-5946, -5325,-5014,-5010,-5230,-5536,-5833,-6182,-6674,-7229,-7507, -7148,-6161,-5004,-4251,-4112,-4404,-4848,-5330,-5773,-6023, -5976,-5727,-5429,-5109,-4695,-4199,-3837,-3879,-4353,-4958, -5234,-4913,-4142,-3310,-2837,-2888,-3297,-3671,-3728,-3498, -3213,-2979,-2624,-1949,-890,669,2881,5634,8383,10393, 11203,10894,9996,9114,8572,8377,8375,8395,8350,8161, 7648,6681,5389,4177,3443,3271,3369,3370,3257,3348, 3813,4366,4569,4243,3514,2652,1900,1401,1249,1532, 2247,3207,4084,4506,4265,3436,2247,909,-464,-1789, -2886,-3450,-3251,-2362,-1143,7,872,1461,1875,2119, 2173,2179,2388,2922,3759,4727,5603,6265,6795,7366, 8008,8525,8701,8591,8598,9141,10288,11669,12740,13109, 12668,11560,10054,8493,7198,6339,5903,5722,5518,5008, 4040,2685,1163,-274,-1501,-2541,-3386,-3879,-3867,-3479, -3137,-3272,-4015,-5177,-6540,-8055,-9736,-11370,-12479,-12612, -11713,-10098,-8116,-5926,-3657,-1524,257,1590,2459,2889, 3012,3118,3480,4171,5073,6027,6890,7483,7547,6941, 5923,5045,4756,5083,5706,6346,6964,7655,8394,9030, 9476,9755,9955,10094,10145,10055,9717,9005,7996,7025, 6408,6102,5788,5230,4475,3691,2976,2379,1988,1915, 2079,2188,1920,1144,60,-881,-1274,-1058,-588,-388, -792,-1681,-2610,-3247,-3561,-3660,-3640,-3607,-3787,-4391, -5455,-6750,-7958,-8868,-9409,-9556,-9292,-8709,-7944,-7050, -5975,-4684,-3267,-1873,-572,569,1350,1564,1296,921, 657,276,-657,-2346,-4550,-6778,-8631,-9969,-10871,-11448, -11780,-11966,-12071,-12043,-11789,-11355,-10929,-10627,-10350,-9910, -9150,-8027,-6719,-5676,-5245,-5348,-5603,-5783,-5960,-6325, -6859,-7330,-7440,-7048,-6308,-5530,-4976,-4780,-4960,-5409, -5886,-6111,-5914,-5371,-4779,-4479,-4648,-5091,-5359,-5179, -4764,-4614,-4966,-5520,-5762,-5412,-4621,-3712,-2909,-2355, -2262,-2816,-3963,-5295,-6220,-6284,-5386,-3731,-1753,140, 1761,3152,4394,5478,6350,7054,7734,8463,9100,9468, 9548,9496,9423,9210,8614,7574,6328,5213,4441,4060, 4033,4271,4597,4875,5033,4951,4518,3718,2716,1817, 1302,1249,1602,2328,3427,4735,5792,6053,5309,3828, 2155,748,-220,-831,-1282,-1651,-1844,-1732,-1294,-653, -2,438,585,562,564,712,1091,1820,2946,4251, 5271,5675,5523,5185,5008,5149,5640,6510,7788,9373, 10925,12097,12683,12639,12054,11176,10289,9593,9122,8842, 8748,8778,8666,8034,6635,4636,2478,591,-842,-1730, -1915,-1418,-615,-36,-14,-622,-1776,-3329,-5098,-6906, -8699,-10463,-12000,-12866,-12671,-11460,-9696,-7897,-6301,-4897, -3636,-2590,-1820,-1200,-434,702,2184,3754,5072,5911, 6233,6153,5842,5432,4990,4607,4456,4618,4952,5260, 5563,6109,7018,8037,8760,9039,9095,9256,9651,10184, 10615,10635,10034,8878,7472,6257,5534,5292,5358,5503, 5425,4871,3843,2671,1782,1439,1537,1734,1815,1745, 1478,871,-67,-1080,-1827,-2094,-1945,-1635,-1485,-1730, -2307,-2936,-3408,-3785,-4274,-4973,-5904,-7026,-8207,-9167, -9617,-9486,-8973,-8374,-7775,-6998,-5843,-4365,-2884,-1714, -871,-130,711,1577,2161,2133,1334,-152,-2012,-3874, -5515,-6902,-8007,-8810,-9397,-9996,-10761,-11581,-12168,-12399, -12451,-12492,-12336,-11570,-10054,-8207,-6718,-6013,-6079,-6607, -7158,-7387,-7239,-6870,-6524,-6356,-6353,-6462,-6625,-6757, -6691,-6337,-5898,-5733,-5967,-6289,-6236,-5676,-4874,-4186, -3813,-3843,-4324,-5195,-6218,-7025,-7278,-6853,-5854,-4537, -3302,-2572,-2558,-3136,-3995,-4889,-5705,-6346,-6594,-6275, -5433,-4306,-3147,-2066,-1035,-40,830,1513,2173,3120, 4527,6228,7872,9142,9823,9883,9500,8952,8380,7679, 6735,5700,5024,5035,5617,6317,6682,6526,5860,4782, 3482,2266,1437,1129,1259,1689,2359,3247,4246,5141, 5721,5855,5463,4487,3067,1595,511,-67,-307,-363, -286,-152,-205,-640,-1340,-1902,-1987,-1520,-624,503, 1623,2519,3093,3341,3320,3090,2762,2526,2647,3291, 4365,5638,6948,8241,9452,10376,10776,10616,10180,9914, 10091,10660,11312,11678,11584,11130,10437,9440,7971,6014, 3862,1972,688,70,23,481,1337,2231,2660,2240, 937,-974,-3173,-5407,-7494,-9223,-10347,-10773,-10662,-10319, -9991,-9771,-9577,-9131,-8143,-6647,-5052,-3698,-2563,-1417, -98,1361,2830,4158,5121,5521,5314,4713,4091,3769, 3877,4293,4729,4940,4916,4874,5044,5501,6244,7258, 8486,9720,10640,10944,10609,9920,9221,8705,8384,8193, 8049,7818,7280,6380,5366,4565,4117,3930,3788,3520, 3136,2761,2530,2460,2350,1911,1093,184,-468,-758, -849,-952,-1090,-1162,-1184,-1365,-1844,-2488,-3098,-3738, -4612,-5716,-6780,-7557,-8066,-8474,-8890,-9266,-9428,-9135, -8249,-6862,-5300,-3871,-2676,-1563,-373,807,1650,1895, 1560,797,-258,-1445,-2517,-3300,-3920,-4712,-5944,-7637, -9525,-11208,-12372,-12888,-12848,-12491,-11985,-11379,-10655,-9823, -8987,-8290,-7825,-7595,-7540,-7591,-7676,-7634,-7290,-6655, -5978,-5631,-5827,-6467,-7258,-7928,-8270,-8117,-7407,-6261, -5014,-4019,-3514,-3629,-4294,-5228,-6041,-6509,-6650,-6625, -6507,-6164,-5421,-4363,-3401,-2970,-3248,-4076,-5106,-5972, -6427,-6401,-6064,-5646,-5246,-4796,-4231,-3608,-3055,-2639, -2313,-1909,-1193,52,1902,4173,6431,8181,9095,9163, 8630,7852,7146,6711,6614,6811,7221,7740,8203,8382, 8102,7355,6310,5161,4009,2874,1843,1164,1134,1833, 3006,4238,5179,5670,5711,5386,4798,4072,3385,2928, 2789,2820,2715,2218,1346,324,-619,-1413,-2085,-2542, -2499,-1748,-428,1029,2135,2620,2514,2012,1365,828, 658,1037,1950,3179,4405,5373,6028,6525,7015,7487, 7865,8183,8642,9457,10598,11800,12759,13313,13441,13189, 12549,11403,9679,7527,5305,3470,2412,2252,2787,3616, 4320,4552,4132,3141,1869,557,-776,-2255,-3925,-5615, -7020,-7997,-8674,-9282,-9883,-10387,-10720,-10844,-10653,-10011, -8841,-7211,-5354,-3545,-1985,-741,247,1080,1901,2823, 3806,4665,5222,5334,4878,3910,2889,2447,2834,3757, 4703,5405,5926,6451,7057,7769,8541,9314,10016,10492, 10597,10328,9849,9350,8905,8506,8089,7549,6874,6197, 5698,5344,4904,4321,3825,3642,3679,3630,3276,2644, 1880,1127,537,202,104,131,120,-79,-469,-909, -1295,-1635,-1998,-2485,-3124,-3868,-4660,-5433,-6167,-6971, -7993,-9211,-10288,-10708,-10175,-8806,-7014,-5235,-3784,-2783, -2207,-1860,-1467,-843,-20,781,1275,1281,769,-162, -1335,-2602,-3901,-5290,-6850,-8515,-10052,-11246,-12007,-12307, -12132,-11537,-10721,-9988,-9597,-9634,-9956,-10180,-9911,-9032, -7789,-6622,-5900,-5723,-5977,-6485,-7112,-7766,-8389,-8888, -9059,-8642,-7549,-6036,-4637,-3845,-3868,-4565,-5575,-6492, -6992,-6979,-6598,-6087,-5620,-5227,-4836,-4414,-4075,-4033, -4430,-5188,-6010,-6546,-6606,-6245,-5697,-5203,-4883,-4758, -4850,-5178,-5622,-5889,-5654,-4739,-3241,-1459,324,2029, 3659,5079,6011,6334,6198,5890,5651,5617,5877,6508, 7519,8711,9707,10081,9584,8300,6605,4968,3676,2810, 2354,2286,2562,3081,3651,4059,4224,4226,4154,4033, 3950,4035,4357,4825,5218,5250,4683,3461,1853,288, -931,-1717,-2076,-2015,-1526,-687,262,1006,1339,1233, 807,244,-230,-369,1,830,1851,2754,3440,4025, 4583,4958,4925,4546,4240,4486,5528,7335,9624,11908, 13631,14459,14424,13774,12719,11389,9953,8590,7366,6267, 5353,4808,4746,5020,5305,5347,5085,4583,3831,2699, 1220,-251,-1323,-1980,-2598,-3582,-5102,-7048,-9043,-10588, -11352,-11403,-11033,-10466,-9795,-9063,-8302,-7443,-6330,-4857, -3105,-1301,312,1626,2677,3513,4040,4128,3798,3290, 2886,2701,2731,2950,3325,3791,4281,4784,5339,6014, 6829,7755,8681,9455,9971,10247,10331,10235,9955,9476, 8812,8070,7444,7063,6866,6649,6253,5696,5084,4553, 4195,4009,3834,3477,2906,2271,1757,1470,1385,1374, 1265,907,273,-481,-1088,-1334,-1184,-861,-727,-1079, -1998,-3347,-4863,-6319,-7600,-8643,-9330,-9531,-9219,-8551, -7771,-7037,-6341,-5615,-4827,-3975,-3118,-2305,-1538,-739, 212,1308,2217,2489,1847,366,-1612,-3623,-5290,-6467, -7253,-7911,-8637,-9421,-10109,-10593,-10901,-11109,-11282,-11431, -11442,-11084,-10156,-8723,-7164,-5987,-5552,-5877,-6647,-7446, -8044,-8453,-8719,-8766,-8455,-7753,-6806,-5880,-5214,-4944, -5073,-5525,-6187,-6861,-7246,-7058,-6290,-5241,-4315,-3799, -3801,-4195,-4762,-5369,-5943,-6289,-6179,-5653,-5016,-4581, -4471,-4630,-4970,-5424,-5929,-6412,-6791,-6935,-6691,-5928, -4623,-2923,-1107,542,1833,2646,2975,2973,2921,3086, 3606,4459,5542,6795,8162,9448,10289,10342,9555,8246, 6842,5657,4844,4481,4541,4769,4793,4423,3800,3212, 2839,2704,2822,3257,4064,5175,6319,7101,7201,6500, 5174,3610,2241,1278,624,145,-141,-172,0,273, 585,879,1000,706,-32,-837,-1212,-895,14,1237, 2462,3404,3876,3873,3476,2785,1970,1397,1494,2494, 4261,6413,8576,10541,12239,13541,14204,14093,13317,12135, 10797,9545,8654,8276,8269,8267,7929,7177,6236,5469, 5137,5183,5307,5211,4750,3908,2753,1423,38,-1361, -2777,-4160,-5465,-6725,-8000,-9206,-10169,-10763,-11000,-10899, -10431,-9584,-8419,-7052,-5586,-4094,-2611,-1133,323,1642, 2666,3276,3422,3165,2723,2383,2338,2574,2939,3268, 3451,3539,3716,4180,4982,6019,7159,8275,9216,9848, 10182,10345,10393,10213,9693,8939,8262,7933,7970,8128, 8076,7604,6733,5674,4730,4146,4000,4147,4338,4360, 4134,3639,2884,1952,1046,429,290,606,1103,1411, 1310,830,154,-514,-1085,-1660,-2505,-3783,-5357,-6858, -7906,-8300,-8108,-7637,-7266,-7204,-7367,-7490,-7294,-6622, -5518,-4218,-2913,-1593,-181,1212,2243,2567,2062,910, -501,-1748,-2610,-3147,-3572,-4078,-4826,-5973,-7553,-9327, -10881,-11892,-12273,-12093,-11466,-10504,-9339,-8173,-7240,-6717, -6668,-7027,-7627,-8257,-8724,-8897,-8718,-8206,-7460,-6673, -6048,-5746,-5853,-6314,-6930,-7411,-7560,-7318,-6717,-5857, -4984,-4366,-4108,-4149,-4383,-4763,-5285,-5877,-6306,-6318, -5817,-4965,-4104,-3551,-3484,-3951,-4882,-6062,-7164,-7918, -8198,-7975,-7288,-6203,-4814,-3292,-1901,-918,-525,-674, -970,-903,-256,798,2011,3320,4725,6142,7371,8204, 8541,8408,7957,7417,7041,6968,7133,7281,7129,6515, 5462,4201,3073,2333,2056,2140,2502,3204,4287,5578, 6685,7266,7192,6498,5353,4018,2784,1890,1449,1460, 1784,2129,2219,1926,1263,309,-725,-1525,-1831,-1561, -842,81,941,1598,2111,2579,2943,2958,2418,1375, 183,-671,-760,129,1927,4285,6732,8834,10321,11160, 11531,11655,11654,11588,11482,11289,10932,10400,9745,8989, 8150,7339,6760,6542,6614,6758,6794,6640,6211,5446, 4443,3399,2450,1539,494,-777,-2191,-3626,-5072,-6576, -8106,-9495,-10571,-11275,-11597,-11483,-10859,-9736,-8308,-6859, -5555,-4351,-3090,-1703,-282,969,1835,2174,2037,1735, 1621,1800,2126,2350,2346,2179,2073,2273,2889,3898, 5138,6411,7523,8370,8911,9130,9082,8957,8998,9293, 9667,9814,9548,8886,7990,7052,6300,5914,5886,5969, 5848,5423,4880,4437,4165,3926,3461,2636,1617,808, 593,1054,1871,2523,2654,2216,1394,432,-484,-1302, -2066,-2818,-3574,-4343,-5110,-5812,-6402,-6944,-7528,-8180, -8796,-9158,-9077,-8481,-7388,-5923,-4298,-2790,-1582,-742, -240,-44,-78,-200,-258,-206,-123,-157,-418,-1041, -2166,-3828,-5884,-8030,-9897,-11234,-11950,-11979,-11278,-10035, -8711,-7779,-7486,-7818,-8553,-9337,-9802,-9761,-9275,-8544, -7780,-7151,-6769,-6672,-6811,-7119,-7523,-7971,-8401,-8626, -8409,-7665,-6584,-5556,-4910,-4732,-4863,-5135,-5472,-5892, -6366,-6746,-6784,-6298,-5305,-4106,-3144,-2762,-3120,-4175, -5670,-7190,-8341,-8906,-8875,-8354,-7406,-6103,-4680,-3562, -3112,-3368,-4015,-4519,-4442,-3639,-2277,-691,826,2113, 3101,3809,4323,4763,5224,5764,6390,7052,7700,8276, 8622,8542,7961,6973,5763,4502,3303,2280,1643,1616, 2313,3573,5002,6149,6702,6557,5844,4911,4141,3687, 3512,3530,3673,3825,3851,3659,3230,2552,1583,342, -997,-2085,-2522,-2132,-1069,320,1674,2654,3007,2688, 1934,1095,387,-186,-629,-832,-636,-1,983,2179, 3481,4873,6358,7853,9227,10357,11142,11523,11538,11336, 11064,10756,10361,9859,9304,8741,8191,7723,7467,7510, 7737,7851,7579,6902,6041,5208,4481,3857,3265,2551, 1538,167,-1450,-3133,-4831,-6606,-8387,-9913,-10922,-11345, -11267,-10770,-9955,-8977,-7973,-6969,-5894,-4676,-3315,-1883, -483,718,1536,1901,1885,1580,1105,662,538,922, 1724,2602,3161,3277,3222,3432,4176,5382,6752,7968, 8815,9240,9368,9413,9520,9653,9632,9284,8619,7881, 7364,7161,7160,7190,7114,6835,6306,5591,4844,4133, 3435,2738,2169,1931,2124,2621,3158,3539,3629,3302, 2486,1331,198,-585,-939,-999,-995,-1151,-1686,-2695, -4110,-5738,-7331,-8605,-9320,-9373,-8848,-7980,-7034,-6133, -5288,-4503,-3847,-3361,-2987,-2582,-2010,-1219,-234,833, 1783,2349,2274,1400,-203,-2256,-4376,-6239,-7648,-8590, -9138,-9324,-9129,-8632,-8095,-7879,-8185,-8937,-9808,-10399, -10424,-9835,-8827,-7733,-6885,-6473,-6465,-6710,-7090,-7612, -8270,-8898,-9191,-8919,-8079,-6917,-5832,-5161,-4995,-5204, -5625,-6156,-6709,-7140,-7248,-6898,-6087,-4916,-3622,-2572, -2132,-2486,-3561,-5010,-6384,-7380,-7909,-8016,-7745,-7155, -6348,-5551,-5037,-4967,-5287,-5745,-5996,-5777,-5075,-4067, -2972,-1900,-855,115,872,1332,1582,1830,2316,3216, 4600,6338,8096,9391,9867,9441,8318,6874,5482,4355, 3618,3331,3411,3656,3987,4450,5026,5537,5761,5602, 5109,4446,3843,3589,3887,4661,5554,6163,6258,5787, 4783,3332,1624,-10,-1202,-1703,-1465,-644,488,1598, 2351,2541,2248,1739,1250,889,642,422,140,-255, -633,-720,-372,323,1212,2267,3544,5074,6763,8382, 9677,10497,10836,10834,10695,10550,10427,10294,10108,9854, 9550,9224,8910,8652,8489,8380,8200,7875,7433,6957, 6516,6085,5609,5076,4455,3676,2580,985,-1154,-3549, -5720,-7338,-8379,-9031,-9486,-9875,-10270,-10597,-10586,-9945, -8607,-6834,-5035,-3521,-2396,-1587,-939,-339,173,486, 596,617,700,941,1315,1675,1873,1871,1776,1793, 2156,3007,4285,5781,7241,8399,9065,9243,9114,8888, 8698,8556,8409,8297,8347,8568,8767,8715,8348,7754, 7029,6200,5300,4401,3610,3096,2984,3257,3694,4036, 4147,3990,3556,2907,2191,1578,1196,1079,1175,1335, 1354,1046,312,-904,-2583,-4554,-6473,-7913,-8551,-8377, -7662,-6813,-6195,-5997,-6189,-6555,-6784,-6640,-6056,-5072, -3761,-2208,-530,1087,2341,2880,2504,1350,-177,-1675, -2904,-3830,-4591,-5295,-5927,-6441,-6874,-7285,-7717,-8244, -8928,-9712,-10368,-10609,-10294,-9507,-8493,-7539,-6886,-6635, -6750,-7188,-7921,-8821,-9604,-9934,-9571,-8523,-7126,-5925, -5315,-5358,-5864,-6641,-7538,-8316,-8650,-8343,-7445,-6189, -4854,-3700,-2980,-2884,-3377,-4177,-4924,-5471,-5879,-6217, -6488,-6658,-6693,-6583,-6362,-6176,-6218,-6577,-7080,-7394, -7237,-6576,-5570,-4424,-3356,-2598,-2309,-2407,-2590,-2517, -2040,-1172,44,1579,3336,5136,6772,8005,8571,8347, 7478,6297,5142,4269,3865,3995,4530,5205,5714,5823, 5516,4947,4280,3620,3057,2800,3091,4002,5280,6422, 6997,6912,6342,5533,4609,3578,2436,1272,273,-351, -451,-37,672,1379,1869,2058,1959,1659,1290,1003, 836,663,318,-176,-647,-964,-1144,-1196,-973,-269, 1001,2695,4483,6035,7201,8045,8669,9127,9436,9631, 9745,9818,9876,9966,10101,10197,10100,9708,9029,8237, 7618,7434,7733,8272,8620,8457,7764,6789,5847,5106, 4490,3767,2692,1131,-863,-3073,-5210,-7019,-8350,-9238, -9834,-10247,-10470,-10396,-9927,-9016,-7764,-6439,-5276,-4302, -3399,-2511,-1687,-1009,-451,43,471,785,940,895, 668,378,203,284,716,1539,2692,4029,5375,6538, 7372,7814,7879,7683,7433,7367,7665,8368,9276,10037, 10333,10038,9245,8183,7097,6169,5487,5067,4839,4739, 4729,4771,4787,4651,4262,3620,2864,2270,2106,2425, 2971,3421,3604,3470,3069,2417,1448,94,-1585,-3304, -4714,-5590,-5901,-5757,-5440,-5283,-5527,-6235,-7251,-8243, -8824,-8725,-7912,-6566,-4897,-3037,-1137,485,1458,1600, 1101,359,-304,-795,-1160,-1449,-1711,-2047,-2573,-3326, -4287,-5439,-6734,-8048,-9176,-9901,-10114,-9823,-9111,-8170, -7306,-6796,-6761,-7126,-7775,-8603,-9451,-10000,-9931,-9165, -7939,-6713,-5856,-5542,-5771,-6440,-7343,-8192,-8767,-8954, -8719,-8078,-7095,-5905,-4726,-3816,-3409,-3622,-4348,-5255, -5846,-5796,-5224,-4580,-4277,-4441,-4977,-5717,-6550,-7360, -7956,-8134,-7842,-7231,-6557,-5943,-5328,-4659,-4101,-3941, -4222,-4711,-5061,-5008,-4436,-3358,-1901,-164,1817,3876, 5607,6584,6685,6122,5313,4625,4328,4526,5162,6025, 6760,7013,6662,5875,4967,4146,3445,2886,2634,2878, 3657,4778,5889,6641,6889,6730,6353,5863,5256,4494, 3602,2698,1915,1347,1018,897,967,1211,1562,1917, 2212,2406,2443,2226,1711,1018,394,-11,-271,-588, -1087,-1651,-1975,-1722,-715,922,2759,4302,5317,5892, 6257,6631,7180,7979,8942,9848,10414,10511,10279,9934, 9602,9325,9111,8950,8829,8766,8803,8952,9109,9087, 8785,8276,7750,7344,7016,6577,5834,4705,3147,1140, -1166,-3447,-5394,-6871,-7920,-8622,-9014,-9184,-9276,-9358, -9329,-8999,-8219,-7073,-5786,-4495,-3251,-2145,-1296,-723, -346,-107,-32,-151,-417,-685,-754,-447,243,1155, 2068,2842,3500,4157,4859,5472,5819,5925,6049,6475, 7332,8546,9786,10613,10756,10222,9261,8185,7254,6660, 6497,6680,6939,6972,6659,6105,5429,4599,3582,2582, 1992,2112,2877,3920,4814,5300,5318,4915,4141,3066, 1800,524,-556,-1302,-1715,-1942,-2181,-2597,-3260,-4181, -5336,-6631,-7849,-8725,-9101,-8981,-8415,-7392,-5914,-4135, -2406,-1124,-504,-469,-745,-1034,-1127,-962,-548,68, 685,957,572,-570,-2326,-4354,-6266,-7745,-8593,-8741, -8259,-7395,-6566,-6202,-6467,-7161,-7929,-8571,-9107,-9569, -9844,-9749,-9174,-8177,-7024,-6085,-5650,-5797,-6440,-7409, -8455,-9231,-9420,-8960,-8099,-7200,-6494,-6006,-5619,-5309, -5212,-5434,-5780,-5865,-5451,-4676,-3870,-3321,-3167,-3441, -4152,-5240,-6516,-7659,-8340,-8418,-7987,-7227,-6265,-5230, -4404,-4100,-4476,-5419,-6550,-7367,-7506,-6894,-5688,-4135, -2452,-807,648,1782,2525,2925,3103,3180,3298,3595, 4159,4979,5902,6676,7088,7052,6617,5916,5075,4197, 3397,2831,2712,3206,4190,5246,5933,6149,6133,6121, 6119,6037,5817,5416,4786,3979,3159,2507,2093,1828, 1594,1402,1389,1670,2247,2965,3546,3700,3245,2220, 924,-225,-945,-1201,-1173,-1079,-1016,-930,-727,-330, 330,1243,2287,3308,4240,5114,5970,6772,7485,8129, 8745,9286,9666,9818,9751,9534,9284,9092,9007,9030, 9119,9176,9156,9113,9113,9140,9153,9155,9125,8911, 8315,7271,5894,4316,2554,628,-1331,-3112,-4552,-5620, -6421,-7174,-8064,-9074,-9965,-10377,-10080,-9123,-7751,-6220, -4747,-3520,-2655,-2142,-1865,-1711,-1659,-1739,-1876,-1858, -1453,-628,376,1171,1526,1504,1378,1421,1793,2459, 3256,4098,5046,6156,7334,8365,9045,9313,9245,8940, 8488,8021,7728,7762,8103,8519,8726,8572,8029,7071, 5669,4007,2541,1771,1944,2924,4266,5437,6080,6104, 5657,4930,4016,2976,2033,1451,1281,1327,1312,1075, 583,-180,-1287,-2789,-4547,-6249,-7586,-8415,-8750,-8643, -8107,-7166,-5956,-4756,-3883,-3537,-3616,-3742,-3540,-2891, -1923,-781,401,1426,2019,1935,1128,-221,-1802,-3366, -4774,-5918,-6621,-6688,-6135,-5345,-4895,-5156,-6094,-7404, -8715,-9713,-10204,-10160,-9661,-8848,-7929,-7176,-6787,-6758, -6992,-7427,-8019,-8584,-8858,-8753,-8404,-8027,-7759,-7603, -7433,-7184,-6976,-6934,-7032,-7077,-6896,-6392,-5546,-4449, -3388,-2726,-2686,-3279,-4379,-5760,-7088,-7972,-8187,-7798, -7024,-6080,-5192,-4638,-4648,-5276,-6356,-7523,-8368,-8617, -8245,-7383,-6187,-4830,-3524,-2430,-1600,-1005,-587,-270, 54,561,1379,2481,3717,4876,5749,6203,6271,6125, 5941,5729,5372,4792,4082,3477,3233,3503,4193,5021, 5685,5998,5939,5679,5519,5675,6052,6307,6129,5475, 4498,3411,2427,1722,1400,1508,2018,2806,3629,4204, 4328,3972,3263,2380,1493,725,131,-284,-552,-730, -855,-949,-999,-970,-801,-426,192,1067,2164,3357, 4459,5307,5871,6304,6848,7645,8564,9307,9684,9724, 9551,9285,9012,8796,8689,8734,8937,9278,9687,10114, 10485,10690,10625,10239,9576,8755,7904,7040,6032,4713, 3048,1201,-573,-2105,-3430,-4772,-6298,-7908,-9308,-10215, -10457,-9998,-8940,-7540,-6151,-5058,-4383,-4104,-4090,-4149, -4107,-3831,-3255,-2380,-1307,-270,412,519,105,-464, -790,-710,-290,384,1355,2657,4140,5504,6509,7047, 7151,6973,6771,6807,7199,7893,8760,9605,10184,10285, 9876,9118,8139,6967,5644,4349,3394,3061,3396,4149, 4948,5526,5823,5852,5567,4894,3927,2991,2434,2390, 2765,3350,3847,3962,3456,2222,325,-1962,-4166,-5782, -6588,-6758,-6644,-6531,-6513,-6551,-6575,-6589,-6621,-6609, -6398,-5905,-5171,-4184,-2811,-1131,448,1465,1734,1338, 464,-676,-1843,-2825,-3504,-3839,-3832,-3582,-3353,-3450, -4055,-5105,-6368,-7561,-8486,-9048,-9233,-9094,-8727,-8244, -7764,-7399,-7253,-7420,-7916,-8584,-9109,-9197,-8806,-8136, -7493,-7089,-7037,-7345,-7911,-8549,-9045,-9236,-9014,-8351, -7307,-6022,-4747,-3781,-3337,-3418,-3905,-4676,-5569,-6352, -6809,-6873,-6660,-6272,-5754,-5184,-4767,-4768,-5310,-6255, -7347,-8327,-8942,-8986,-8414,-7391,-6273,-5396,-4882,-4584, -4242,-3746,-3173,-2660,-2213,-1641,-719,615,2193,3677, 4708,5130,5092,4876,4712,4685,4755,4820,4774,4561, 4240,3946,3824,3957,4304,4781,5331,5922,6469,6832, 6862,6515,5884,5147,4465,3879,3315,2704,2171,1974, 2309,3095,3991,4600,4729,4437,3897,3278,2654,2036, 1428,863,363,-70,-437,-733,-960,-1118,-1198,-1161, -898,-311,599,1669,2621,3272,3711,4209,5017,6171, 7458,8533,9133,9229,8978,8604,8258,8043,8027,8284, 8802,9431,10005,10485,10883,11127,11102,10791,10323,9882, 9550,9258,8838,8139,7078,5692,4068,2249,214,-2010, -4201,-6037,-7295,-7985,-8241,-8219,-7998,-7616,-7158,-6755, -6452,-6200,-5945,-5681,-5380,-4890,-4021,-2761,-1426,-459, -135,-470,-1230,-1991,-2362,-2166,-1441,-301,1091,2516, 3701,4409,4569,4342,4083,4145,4682,5604,6787,8131, 9418,10329,10677,10554,10173,9590,8732,7603,6398,5392, 4809,4749,5141,5756,6274,6411,6052,5282,4354,3597, 3275,3444,3955,4588,5176,5611,5814,5669,5009,3709, 1872,-141,-1910,-3168,-3853,-4049,-3977,-3970,-4313,-5089, -6197,-7376,-8280,-8611,-8263,-7287,-5779,-3929,-2115,-767, -97,-7,-232,-532,-779,-966,-1120,-1257,-1370,-1411, -1351,-1295,-1462,-2038,-3019,-4209,-5376,-6365,-7082,-7461, -7498,-7294,-7024,-6838,-6837,-7111,-7694,-8474,-9168,-9476, -9224,-8449,-7410,-6475,-5971,-6070,-6757,-7836,-8993,-9881, -10237,-9967,-9165,-8019,-6748,-5566,-4647,-4108,-4054,-4521, -5348,-6158,-6548,-6362,-5788,-5122,-4592,-4319,-4331,-4552, -4855,-5180,-5599,-6242,-7098,-7972,-8572,-8653,-8156,-7283, -6427,-5905,-5775,-5856,-5904,-5767,-5442,-4950,-4225,-3160, -1776,-321,875,1637,2058,2381,2819,3440,4145,4718, 4965,4879,4595,4246,3884,3550,3341,3387,3742,4384, 5247,6190,6958,7286,7068,6418,5604,4904,4462,4194, 3887,3406,2870,2586,2757,3286,3889,4322,4524,4559, 4493,4343,4082,3617,2897,1991,1087,350,-125,-334, -374,-414,-590,-922,-1268,-1390,-1120,-466,386,1230, 2041,2913,3891,4886,5784,6543,7173,7660,7924,7896, 7625,7298,7174,7430,8028,8811,9633,10330,10698,10634, 10244,9800,9634,9938,10596,11244,11470,11093,10174,8861, 7234,5293,3110,902,-1071,-2658,-3842,-4669,-5238,-5711, -6245,-6893,-7578,-8146,-8432,-8312,-7772,-6934,-5951,-4914, -3902,-3053,-2553,-2494,-2774,-3144,-3333,-3204,-2779,-2155, -1397,-568,234,948,1561,2014,2191,2055,1764,1656, 2093,3293,5175,7334,9184,10267,10478,10012,9161,8209, 7425,6997,6949,7129,7297,7281,7088,6787,6362,5707, 4846,3990,3374,3125,3268,3771,4535,5384,6144,6668, 6791,6319,5216,3722,2252,1136,463,118,-119,-462, -1070,-2023,-3351,-4943,-6542,-7875,-8744,-9035,-8667,-7664, -6220,-4669,-3333,-2407,-1965,-1943,-2171,-2380,-2386,-2141, -1682,-1061,-397,125,296,-15,-795,-1924,-3173,-4280, -5043,-5353,-5254,-4958,-4798,-5046,-5717,-6597,-7463,-8208, -8808,-9204,-9336,-9143,-8574,-7704,-6780,-6121,-5981,-6478, -7563,-8963,-10196,-10784,-10558,-9741,-8714,-7752,-6946,-6303, -5846,-5654,-5819,-6335,-6999,-7455,-7395,-6777,-5824,-4861, -4132,-3745,-3710,-4016,-4638,-5475,-6355,-7071,-7481,-7549, -7355,-7111,-7016,-7139,-7401,-7672,-7796,-7670,-7296,-6822, -6413,-6099,-5686,-4948,-3888,-2763,-1840,-1162,-568,159, 1125,2219,3178,3780,3945,3781,3489,3214,2971,2729, 2548,2590,3016,3859,4992,6129,6938,7192,6849,6090, 5274,4734,4538,4491,4311,3883,3323,2844,2613,2694, 3060,3639,4303,4885,5214,5180,4781,4120,3352,2634, 2045,1591,1258,1019,735,259,-413,-1109,-1604,-1808, -1770,-1575,-1222,-615,312,1493,2714,3738,4443,4878, 5172,5422,5685,6000,6386,6800,7155,7412,7633,7941, 8355,8755,9000,9056,9036,9129,9486,10170,11114,12070, 12721,12829,12294,11127,9431,7413,5367,3608,2300,1392, 690,-21,-1012,-2511,-4529,-6670,-8283,-8951,-8770,-8131, -7351,-6577,-5888,-5337,-4917,-4600,-4425,-4448,-4641,-4859, -4891,-4534,-3707,-2532,-1296,-314,196,198,-145,-574, -882,-985,-819,-217,986,2693,4532,6103,7214,7862, 8106,8012,7704,7342,7083,7076,7432,8117,8862,9304, 9145,8275,6831,5170,3728,2838,2650,3131,4044,5034, 5824,6288,6395,6148,5630,5037,4575,4288,4088,3870, 3602,3278,2840,2184,1211,-138,-1819,-3656,-5398,-6819, -7782,-8218,-8066,-7311,-6122,-4881,-4004,-3723,-3942,-4300, -4459,-4232,-3555,-2473,-1223,-165,407,432,55,-525, -1207,-1979,-2788,-3425,-3617,-3254,-2588,-2133,-2339,-3321, -4830,-6416,-7666,-8352,-8502,-8320,-7995,-7587,-7104,-6626, -6342,-6406,-6819,-7460,-8217,-8974,-9584,-9894,-9800,-9304, -8506,-7583,-6738,-6143,-5983,-6356,-7135,-7961,-8420,-8250, -7454,-6273,-5112,-4313,-3963,-3929,-4074,-4352,-4761,-5269, -5763,-6097,-6154,-5995,-5852,-5982,-6467,-7179,-7867,-8267, -8243,-7860,-7362,-6991,-6827,-6784,-6678,-6348,-5765,-5011, -4214,-3396,-2447,-1275,43,1293,2256,2810,2924,2697, 2312,1975,1830,1909,2151,2502,2986,3659,4499,5382, 6127,6597,6747,6643,6379,5992,5448,4773,4102,3598, 3373,3378,3461,3519,3581,3698,3905,4235,4707,5204, 5478,5319,4746,4000,3363,2993,2867,2791,2523,1892, 929,-162,-1162,-1939,-2363,-2287,-1687,-756,204,1015, 1676,2237,2689,3004,3260,3635,4267,5130,6010,6690, 7089,7297,7419,7477,7425,7245,7018,6957,7318,8253, 9656,11177,12416,13139,13288,12902,12133,11274,10556,9962, 9271,8292,7032,5699,4498,3403,2136,414,-1770,-4082, -6059,-7334,-7752,-7409,-6602,-5660,-4846,-4369,-4436,-5115, -6137,-6987,-7250,-6774,-5661,-4198,-2778,-1747,-1227,-1103, -1184,-1355,-1604,-1925,-2225,-2293,-1909,-964,438,2036, 3537,4689,5359,5592,5554,5433,5436,5789,6639,7862, 9097,9976,10335,10164,9484,8344,6923,5531,4490,4000, 4058,4496,5104,5703,6123,6220,5951,5436,4922,4631, 4640,4871,5218,5629,6064,6370,6256,5406,3728,1519, -679,-2416,-3562,-4298,-4881,-5401,-5771,-5859,-5674,-5417, -5343,-5550,-5870,-5978,-5576,-4591,-3214,-1837,-829,-337, -306,-588,-1040,-1532,-1929,-2110,-2036,-1714,-1191,-643, -376,-660,-1532,-2801,-4169,-5365,-6250,-6812,-7093,-7076, -6755,-6215,-5656,-5350,-5532,-6275,-7377,-8453,-9151,-9351, -9151,-8723,-8233,-7798,-7463,-7206,-7019,-6981,-7188,-7638, -8148,-8437,-8303,-7767,-7017,-6272,-5678,-5304,-5124,-5013, -4853,-4634,-4488,-4532,-4730,-4937,-5067,-5123,-5193,-5412, -5894,-6625,-7414,-7950,-8000,-7630,-7162,-6891,-6910,-7134, -7448,-7721,-7746,-7325,-6423,-5151,-3683,-2202,-877,108, 651,835,889,1016,1261,1501,1577,1436,1176,1050, 1370,2268,3545,4797,5724,6279,6567,6647,6499,6112, 5590,5070,4585,4109,3672,3417,3455,3702,3913,3937, 3832,3796,3963,4294,4655,4936,5119,5230,5279,5203, 4896,4288,3422,2455,1545,715,-114,-951,-1618,-1896, -1708,-1166,-439,306,908,1215,1153,868,733,1190, 2460,4296,6076,7172,7331,6746,5882,5190,4901,5023, 5471,6176,7083,8107,9156,10144,10967,11530,11838,11974, 12000,11896,11654,11367,11129,10909,10589,10017,8971,7266, 4926,2285,-160,-2041,-3281,-4002,-4367,-4505,-4482,-4399, -4443,-4769,-5405,-6248,-7103,-7740,-7928,-7496,-6422,-4897, -3322,-2148,-1645,-1825,-2468,-3265,-3919,-4192,-3922,-3088, -1872,-606,399,1029,1378,1603,1799,2025,2351,2905, 3827,5108,6517,7734,8592,9095,9323,9320,9069,8487, 7521,6330,5311,4852,5075,5726,6363,6583,6220,5409, 4486,3826,3603,3784,4255,4951,5869,6937,7862,8206, 7661,6265,4393,2534,1019,-24,-654,-1070,-1561,-2337, -3374,-4493,-5552,-6509,-7269,-7620,-7346,-6444,-5165,-3880, -2890,-2342,-2213,-2327,-2433,-2374,-2232,-2205,-2323,-2345, -1961,-1139,-196,444,510,-48,-1118,-2461,-3770,-4794, -5419,-5653,-5540,-5168,-4681,-4324,-4352,-4887,-5846,-7021, -8170,-9025,-9321,-8965,-8188,-7450,-7101,-7186,-7517,-7866, -8099,-8174,-8130,-8059,-8033,-8048,-7993,-7780,-7438,-7087, -6831,-6665,-6521,-6310,-5942,-5398,-4774,-4276,-4088,-4206, -4471,-4747,-5089,-5608,-6220,-6636,-6662,-6431,-6295,-6479, -6921,-7434,-7899,-8272,-8505,-8545,-8404,-8135,-7715,-7040, -5977,-4559,-3002,-1617,-652,-214,-205,-324,-280,-61, 110,70,-75,-57,317,1020,1912,2908,3989,5086, 6013,6535,6542,6097,5386,4686,4241,4122,4231,4389, 4456,4328,3943,3353,2785,2550,2803,3419,4125,4699, 5107,5467,5867,6212,6283,5863,4902,3552,2143,1023, 376,144,142,144,4,-315,-750,-1153,-1361,-1312, -1025,-493,327,1400,2563,3611,4442,5060,5464,5594, 5347,4747,4048,3636,3826,4678,5981,7400,8615,9387, 9630,9467,9231,9305,9930,11053,12346,13404,13944,13899, 13315,12245,10734,8882,6869,4899,3114,1596,407,-425, -960,-1309,-1676,-2284,-3250,-4505,-5815,-6891,-7541,-7708, -7414,-6711,-5690,-4553,-3618,-3204,-3422,-4072,-4756,-5129, -4995,-4339,-3383,-2487,-1855,-1414,-994,-571,-278,-263, -478,-612,-272,726,2256,3999,5608,6824,7539,7822, 7862,7817,7721,7539,7281,7058,6982,7097,7328,7477, 7292,6617,5534,4364,3481,3077,3136,3590,4389,5491, 6725,7754,8206,7910,6990,5821,4833,4258,4022,3825, 3342,2427,1185,-185,-1614,-3139,-4681,-6019,-6944,-7324, -7083,-6245,-5014,-3772,-2939,-2738,-3059,-3555,-3902,-3960, -3762,-3379,-2821,-2069,-1169,-256,463,745,415,-463, -1607,-2684,-3456,-3817,-3766,-3411,-2988,-2789,-2969,-3452, -4061,-4716,-5501,-6479,-7477,-8137,-8260,-7946,-7479,-7117, -6988,-7104,-7403,-7788,-8186,-8499,-8586,-8343,-7847,-7328, -7051,-7133,-7490,-7950,-8337,-8474,-8156,-7290,-6077,-4985, -4418,-4429,-4758,-5070,-5160,-5043,-4912,-4952,-5154,-5355, -5440,-5463,-5588,-5924,-6414,-6929,-7402,-7890,-8459,-9030, -9387,-9367,-8960,-8218,-7173,-5893,-4556,-3371,-2431,-1737, -1277,-1023,-934,-991,-1192,-1496,-1732,-1618,-982,44, 1128,2016,2714,3370,4083,4812,5425,5794,5819,5492, 4956,4506,4406,4660,4964,4982,4555,3746,2778,1944, 1554,1829,2784,4187,5678,6817,7228,6819,5897,4942, 4284,3959,3818,3697,3448,2960,2216,1313,420,-313, -846,-1266,-1636,-1899,-1880,-1417,-504,734,2074,3226, 3917,4082,3884,3549,3256,3148,3338,3847,4550,5241, 5787,6205,6555,6828,6963,6987,7096,7577,8615,10165, 11977,13716,15002,15484,15026,13799,12134,10330,8551,6950, 5733,5048,4791,4604,4033,2783,915,-1187,-3033,-4323, -5043,-5374,-5532,-5646,-5687,-5558,-5253,-4892,-4633,-4607, -4873,-5336,-5761,-5834,-5379,-4496,-3495,-2654,-2076,-1727, -1570,-1638,-1942,-2369,-2679,-2578,-1845,-465,1302,3033, 4353,5140,5503,5622,5610,5568,5662,6112,7004,8135, 9105,9565,9366,8519,7186,5717,4519,3871,3799,4100, 4480,4768,5013,5361,5845,6341,6670,6697,6441,6133, 6048,6255,6528,6540,6111,5224,3939,2322,500,-1344, -3026,-4424,-5471,-6054,-6022,-5344,-4289,-3371,-3029,-3401, -4253,-5117,-5542,-5351,-4652,-3666,-2549,-1441,-537,-48, -75,-503,-1080,-1591,-1940,-2142,-2239,-2213,-2042,-1806, -1650,-1693,-1952,-2388,-2984,-3772,-4738,-5725,-6440,-6656, -6461,-6230,-6323,-6783,-7369,-7817,-8025,-8005,-7835,-7609, -7438,-7346,-7324,-7386,-7556,-7818,-8084,-8242,-8253,-8160, -7967,-7588,-6965,-6206,-5560,-5210,-5125,-5148,-5191,-5285, -5405,-5402,-5153,-4717,-4288,-4072,-4206,-4722,-5517,-6342, -6964,-7366,-7753,-8312,-9033,-9724,-10109,-9910,-8963,-7384, -5609,-4156,-3298,-2912,-2709,-2533,-2428,-2427,-2441,-2354, -2174,-1992,-1806,-1445,-756,204,1219,2121,2825,3291, 3563,3828,4310,5044,5818,6319,6354,5907,5108,4146, 3254,2642,2400,2435,2582,2779,3116,3669,4390,5110, 5674,5978,5949,5602,5095,4696,4621,4846,5141,5230, 4864,3868,2268,383,-1290,-2324,-2542,-2108,-1362,-579, 124,739,1278,1694,1903,1890,1776,1809,2213,2967, 3785,4367,4663,4846,5050,5205,5129,4742,4223,3933, 4222,5285,7092,9374,11683,13510,14467,14515,13945,13110, 12208,11330,10535,9850,9276,8810,8417,7896,6924,5289, 3125,878,-983,-2249,-3005,-3454,-3712,-3812,-3823,-3895, -4167,-4659,-5274,-5878,-6357,-6590,-6507,-6123,-5493,-4672, -3767,-2972,-2510,-2476,-2786,-3289,-3853,-4291,-4312,-3638, -2270,-586,852,1681,1934,1918,1941,2154,2644,3461, 4579,5866,7133,8211,8973,9280,9017,8195,6990,5749, 4876,4609,4875,5327,5557,5386,4984,4680,4652,4816, 5001,5144,5358,5801,6529,7409,8160,8481,8182,7256, 5806,3977,2008,203,-1208,-2185,-2816,-3177,-3309,-3302, -3368,-3708,-4355,-5106,-5662,-5830,-5629,-5197,-4633,-3929, -3043,-2054,-1209,-797,-967,-1605,-2354,-2819,-2810,-2392, -1743,-1065,-596,-532,-893,-1521,-2173,-2674,-2949,-3035, -3092,-3330,-3846,-4567,-5347,-6074,-6685,-7135,-7362,-7347, -7218,-7154,-7202,-7291,-7345,-7380,-7439,-7517,-7584,-7705, -7986,-8396,-8682,-8565,-8055,-7471,-7089,-6931,-6879,-6796, -6594,-6287,-5974,-5782,-5747,-5750,-5601,-5211,-4652,-4104, -3737,-3666,-3970,-4703,-5793,-7012,-8094,-8898,-9438,-9753, -9857,-9741,-9397,-8786,-7853,-6607,-5235,-4062,-3383,-3285, -3620,-4084,-4351,-4179,-3523,-2575,-1700,-1230,-1219,-1433, -1540,-1287,-561,595,1996,3409,4614,5432,5810,5809, 5571,5255,4939,4555,4012,3369,2818,2580,2743,3190, 3655,3916,3948,3926,4011,4234,4513,4808,5168,5676, 6310,6901,7181,6912,6010,4603,2962,1387,147,-624, -940,-898,-630,-238,211,628,871,796,392,-113, -294,219,1476,3118,4581,5434,5550,5089,4347,3570, 2900,2437,2334,2736,3690,5084,6694,8273,9701,10945, 11956,12636,12938,12942,12810,12656,12503,12334,12142,11897, 11496,10755,9502,7750,5743,3809,2167,872,-110,-790, -1148,-1268,-1387,-1798,-2671,-3944,-5316,-6407,-6985,-6973, -6389,-5390,-4329,-3622,-3495,-3853,-4365,-4720,-4806,-4684, -4457,-4149,-3689,-3006,-2143,-1337,-859,-769,-869,-840, -477,258,1298,2520,3799,5026,6110,7010,7708,8145, 8204,7844,7209,6569,6181,6162,6429,6717,6727,6335, 5667,4937,4253,3676,3364,3568,4464,5941,7597,8933, 9598,9487,8740,7639,6442,5278,4191,3177,2225,1360, 604,-69,-728,-1463,-2352,-3394,-4462,-5380,-5944,-6042, -5700,-5036,-4184,-3314,-2630,-2293,-2332,-2603,-2893,-3032, -2944,-2636,-2175,-1684,-1296,-1096,-1089,-1229,-1419,-1546, -1556,-1519,-1549,-1720,-1987,-2267,-2576,-3037,-3753,-4707, -5740,-6600,-7070,-7103,-6838,-6509,-6331,-6415,-6764,-7265, -7736,-8030,-8096,-8000,-7868,-7838,-7967,-8175,-8293,-8200, -7865,-7382,-6901,-6619,-6668,-6984,-7335,-7475,-7285,-6750, -5919,-4960,-4138,-3658,-3518,-3541,-3598,-3748,-4202,-5110, -6426,-7881,-9131,-9917,-10152,-9882,-9230,-8381,-7552,-6913, -6527,-6312,-6096,-5695,-5059,-4351,-3815,-3545,-3432,-3320, -3136,-2927,-2798,-2814,-2893,-2827,-2386,-1453,-101,1479, 3046,4351,5175,5441,5232,4732,4165,3718,3480,3481, 3717,4086,4366,4299,3784,2990,2279,1986,2243,2909, 3707,4437,5099,5828,6677,7475,7905,7673,6729,5318, 3818,2545,1654,1179,1073,1184,1292,1174,738,66, -651,-1253,-1599,-1536,-925,265,1831,3362,4428,4850, 4724,4231,3484,2600,1795,1338,1425,2046,3017,4114, 5184,6152,7041,7929,8843,9759,10643,11462,12163,12697, 13060,13325,13568,13755,13645,12915,11435,9462,7512,5958, 4868,4151,3668,3231,2621,1710,540,-773,-2140,-3464, -4589,-5326,-5569,-5339,-4788,-4172,-3811,-3940,-4547,-5339, -5914,-6006,-5631,-5019,-4402,-3847,-3343,-2936,-2711,-2703, -2862,-3036,-3044,-2741,-2109,-1237,-240,832,1994,3214, 4345,5230,5807,6067,6091,6056,6196,6657,7356,8012, 8308,8065,7344,6357,5305,4329,3546,3086,3066,3546, 4479,5713,7036,8183,8887,9013,8605,7843,6944,6097, 5454,5097,4955,4790,4324,3415,2076,399,-1424,-3091, -4284,-4830,-4789,-4446,-4148,-4051,-4068,-4027,-3852,-3604, -3386,-3256,-3209,-3187,-3104,-2881,-2530,-2159,-1863,-1660, -1558,-1567,-1676,-1774,-1696,-1360,-890,-540,-527,-925, -1611,-2368,-3076,-3720,-4322,-4870,-5346,-5744,-6055,-6253, -6322,-6259,-6141,-6146,-6472,-7167,-8014,-8631,-8773,-8463, -7929,-7446,-7193,-7191,-7352,-7554,-7692,-7690,-7542,-7370, -7354,-7589,-7959,-8164,-7859,-6880,-5370,-3756,-2566,-2126, -2432,-3265,-4347,-5412,-6306,-6994,-7516,-7933,-8307,-8639, -8877,-8956,-8844,-8557,-8155,-7684,-7140,-6505,-5799,-5106, -4549,-4192,-3986,-3841,-3731,-3771,-4072,-4550,-4892,-4730, -3926,-2636,-1156,224,1347,2210,2857,3289,3499,3545, 3557,3638,3814,4092,4469,4850,5042,4802,4013,2819, 1618,857,803,1435,2539,3867,5201,6331,7068,7284, 6983,6339,5632,5104,4804,4631,4468,4270,3971,3448, 2625,1586,511,-480,-1325,-1919,-2096,-1739,-876,327, 1608,2682,3358,3628,3618,3427,3042,2458,1775,1224, 1050,1396,2195,3202,4136,4786,5088,5178,5377,6024, 7247,8896,10669,12259,13464,14181,14407,14214,13658,12758, 11625,10505,9628,9055,8645,8162,7425,6389,5081,3574, 1983,471,-796,-1731,-2349,-2738,-2973,-3129,-3301,-3606, -4102,-4736,-5349,-5784,-5989,-5994,-5822,-5452,-4872,-4147, -3460,-3050,-3097,-3613,-4371,-4975,-5087,-4575,-3554,-2271, -989,77,798,1219,1495,1811,2309,3033,3930,4916, 5933,6934,7804,8360,8463,8087,7333,6370,5363,4416, 3603,3053,2999,3590,4680,5874,6764,7152,7123,6928, 6790,6794,6928,7130,7332,7451,7378,7007,6251,5076, 3591,2016,513,-854,-2034,-2911,-3379,-3493,-3461,-3495, -3686,-3989,-4279,-4436,-4394,-4125,-3658,-3098,-2644,-2508, -2746,-3156,-3431,-3326,-2819,-2149,-1646,-1454,-1458,-1454, -1323,-1081,-799,-577,-545,-847,-1556,-2572,-3632,-4441, -4832,-4834,-4647,-4539,-4712,-5191,-5824,-6391,-6777,-7033, -7308,-7688,-8116,-8433,-8498,-8249,-7714,-7052,-6517,-6344, -6617,-7237,-7997,-8669,-9109,-9254,-9091,-8636,-7901,-6896, -5727,-4636,-3870,-3525,-3514,-3672,-3920,-4324,-4943,-5679, -6349,-6858,-7251,-7621,-8043,-8523,-9014,-9399,-9522,-9239, -8512,-7426,-6199,-5148,-4548,-4470,-4737,-5069,-5304,-5452, -5558,-5601,-5475,-5105,-4501,-3731,-2854,-1913,-980,-163, 443,828,1139,1574,2213,3018,3900,4730,5342,5544, 5186,4272,3016,1762,878,592,898,1622,2592,3643, 4575,5207,5450,5346,5037,4760,4759,5137,5795,6471, 6848,6687,5926,4733,3389,2137,1085,203,-603,-1329, -1788,-1739,-1107,-72,1056,1994,2575,2766,2660,2387, 2034,1678,1450,1469,1747,2190,2624,2883,2884,2653, 2318,2123,2376,3290,4874,6906,9022,10875,12224,12972, 13148,12894,12433,12023,11855,11962,12178,12220,11837,10950, 9687,8256,6824,5457,4167,2980,1933,1062,387,-134, -598,-1083,-1658,-2401,-3340,-4398,-5336,-5900,-5985,-5680, -5159,-4602,-4130,-3815,-3727,-3945,-4458,-5105,-5613,-5706, -5280,-4477,-3591,-2829,-2201,-1631,-1122,-794,-692,-651, -385,327,1542,3149,4916,6551,7767,8340,8201,7496, 6516,5575,4908,4608,4602,4713,4813,4891,4982,5067, 5089,5083,5202,5550,6054,6543,6950,7360,7867,8382, 8668,8472,7704,6498,5123,3822,2730,1860,1104,303, -627,-1617,-2504,-3182,-3623,-3823,-3802,-3663,-3551,-3529, -3552,-3527,-3401,-3190,-2959,-2819,-2894,-3198,-3532,-3597, -3200,-2421,-1525,-800,-398,-334,-533,-845,-1064,-1076, -987,-1083,-1580,-2403,-3228,-3760,-3936,-3873,-3759,-3759, -3975,-4442,-5168,-6134,-7221,-8155,-8623,-8448,-7756,-6893, -6190,-5829,-5843,-6188,-6778,-7472,-8090,-8509,-8746,-8884, -8936,-8788,-8305,-7490,-6526,-5626,-4939,-4496,-4253,-4134, -4068,-4017,-4010,-4089,-4323,-4796,-5546,-6514,-7539,-8422, -9044,-9377,-9425,-9152,-8526,-7585,-6523,-5618,-5065,-4910, -5097,-5547,-6123,-6596,-6727,-6407,-5709,-4854,-4095,-3589, -3368,-3367,-3440,-3372,-2950,-2083,-860,513,1848,3049, 4054,4784,5124,4948,4228,3176,2191,1647,1644,1987, 2390,2679,2847,2980,3158,3387,3602,3759,3887,4091, 4481,5115,5961,6875,7619,7960,7717,6831,5432,3807, 2253,948,-27,-597,-705,-386,175,718,1051,1161, 1168,1213,1331,1488,1674,1943,2346,2819,3176,3208, 2808,2078,1292,713,504,729,1385,2440,3783,5249, 6677,7965,9061,9978,10740,11333,11744,12025,12312,12734, 13245,13583,13454,12769,11667,10350,8961,7565,6251,5193, 4523,4201,3964,3484,2560,1223,-297,-1714,-2822,-3564, -3991,-4172,-4157,-4032,-3936,-3951,-4059,-4190,-4348,-4622, -5055,-5541,-5828,-5710,-5175,-4396,-3592,-2943,-2577,-2566, -2859,-3266,-3514,-3351,-2616,-1296,423,2203,3743,4926, 5763,6260,6415,6258,5901,5511,5258,5229,5423,5728, 5958,5894,5420,4665,3940,3527,3584,4142,5119,6282, 7303,7907,8045,7929,7826,7831,7847,7728,7323,6549, 5460,4207,2965,1897,1086,480,-123,-954,-2044,-3133, -3843,-3960,-3580,-3032,-2681,-2674,-2896,-3170,-3431,-3696, -3920,-3998,-3880,-3610,-3259,-2877,-2468,-2003,-1494,-1022, -668,-478,-463,-651,-1046,-1576,-2072,-2363,-2352,-2110, -1850,-1827,-2143,-2714,-3401,-4158,-4992,-5862,-6663,-7242, -7512,-7479,-7197,-6720,-6158,-5712,-5590,-5894,-6560,-7363, -8061,-8515,-8711,-8697,-8534,-8312,-8128,-7993,-7819,-7499, -6966,-6255,-5471,-4750,-4190,-3794,-3504,-3360,-3491,-3975, -4757,-5708,-6755,-7821,-8776,-9401,-9484,-8968,-8061,-7116, -6406,-6019,-5929,-6089,-6438,-6858,-7188,-7277,-6993,-6288, -5309,-4414,-3968,-4135,-4796,-5630,-6239,-6270,-5520,-4036, -2144,-293,1152,2086,2625,2940,3105,3124,2982,2739, 2532,2470,2551,2671,2714,2683,2679,2740,2753,2586, 2265,1997,2032,2493,3340,4454,5693,6883,7835,8356, 8296,7607,6380,4856,3371,2215,1536,1305,1367,1495, 1461,1106,456,-229,-556,-299,451,1398,2259,2901, 3292,3416,3225,2691,1924,1164,650,493,618,852, 1102,1467,2113,3073,4174,5200,6087,6930,7813,8753, 9766,10888,12094,13196,13935,14136,13806,13082,12166,11232, 10379,9644,9020,8480,7999,7493,6804,5792,4482,3028, 1585,244,-919,-1795,-2286,-2388,-2242,-2097,-2188,-2644, -3442,-4411,-5276,-5793,-5866,-5566,-5062,-4523,-4062,-3738, -3590,-3638,-3877,-4217,-4535,-4743,-4754,-4456,-3752,-2602, -1070,602,2066,3066,3576,3790,3961,4261,4749,5394, 6065,6573,6739,6483,5890,5203,4690,4439,4315,4130, 3897,3836,4170,4913,5874,6801,7524,7968,8111,8016, 7822,7666,7608,7588,7414,6880,5951,4758,3484,2259, 1137,158,-638,-1213,-1601,-1899,-2203,-2515,-2745,-2792, -2681,-2568,-2643,-2962,-3472,-4057,-4550,-4741,-4474,-3752, -2744,-1745,-1032,-736,-802,-1065,-1375,-1634,-1785,-1767, -1557,-1198,-829,-605,-595,-758,-1056,-1535,-2280,-3246, -4238,-5053,-5600,-5926,-6094,-6117,-6002,-5812,-5654,-5631, -5789,-6084,-6407,-6692,-6980,-7330,-7712,-7992,-8089,-8048, -8024,-8145,-8372,-8493,-8278,-7661,-6719,-5595,-4448,-3478, -2848,-2627,-2818,-3412,-4348,-5465,-6535,-7378,-7926,-8140, -7944,-7369,-6696,-6321,-6448,-6930,-7436,-7694,-7635,-7335, -6881,-6308,-5702,-5196,-4923,-4944,-5252,-5760,-6300,-6684, -6809,-6634,-6109,-5163,-3829,-2297,-846,302,1078,1525, 1720,1748,1728,1821,2128,2613,3102,3426,3530,3441, 3206,2857,2389,1767,1082,632,762,1617,2977,4403, 5551,6374,6982,7361,7398,7050,6460,5838,5310,4891, 4520,4068,3424,2578,1632,760,109,-234,-235,81, 633,1320,2040,2735,3306,3560,3323,2623,1729,999, 660,695,938,1242,1514,1695,1746,1711,1735,2005, 2631,3648,5027,6684,8411,9934,11087,11884,12418,12754, 12870,12734,12382,11943,11579,11378,11305,11238,11000,10424, 9423,8033,6406,4732,3208,2025,1289,948,797,607, 257,-282,-1026,-1997,-3114,-4163,-4931,-5326,-5357,-5052, -4468,-3733,-3102,-2859,-3198,-4082,-5184,-6017,-6241,-5828, -5032,-4182,-3496,-2983,-2527,-2010,-1340,-459,615,1737, 2695,3395,3928,4462,5060,5649,6102,6308,6239,5898, 5322,4608,3956,3584,3589,3905,4384,4882,5321,5698, 6048,6409,6798,7223,7683,8145,8500,8576,8272,7660, 6947,6273,5577,4716,3644,2481,1378,413,-377,-933, -1182,-1156,-1044,-1072,-1358,-1888,-2586,-3319,-3961,-4431, -4693,-4692,-4353,-3678,-2847,-2127,-1690,-1524,-1543,-1731, -2091,-2484,-2653,-2399,-1728,-842,-49,372,323,-93, -660,-1234,-1807,-2423,-3082,-3699,-4177,-4508,-4762,-4986, -5159,-5274,-5382,-5551,-5786,-6013,-6159,-6218,-6277,-6428, -6673,-6956,-7247,-7574,-8009,-8596,-9243,-9690,-9634,-8916, -7641,-6118,-4664,-3510,-2862,-2876,-3535,-4572,-5570,-6197, -6362,-6196,-5915,-5732,-5788,-6116,-6634,-7233,-7790,-8157, -8192,-7868,-7311,-6749,-6338,-6038,-5729,-5426,-5323,-5571, -6096,-6664,-7071,-7257,-7281,-7190,-6941,-6405,-5458,-4155, -2786,-1704,-1061,-761,-609,-444,-147,395,1235,2273, 3248,3870,3995,3676,3032,2157,1182,367,28,310, 1070,1972,2737,3279,3667,4059,4588,5273,5990,6535, 6798,6811,6691,6478,6090,5422,4489,3415,2348,1398, 659,194,31,182,649,1366,2135,2689,2825,2569, 2149,1791,1564,1457,1486,1647,1824,1851,1641,1241, 784,375,88,36,380,1253,2656,4416,6247,7858, 9053,9804,10226,10473,10659,10862,11189,11740,12452,13055, 13258,12976,12353,11559,10650,9556,8235,6786,5428,4374, 3748,3537,3552,3453,2912,1771,152,-1585,-3018,-3866, -4088,-3872,-3504,-3202,-3066,-3116,-3345,-3752,-4293,-4831, -5215,-5432,-5568,-5639,-5545,-5189,-4640,-4107,-3723,-3438, -3118,-2682,-2079,-1254,-154,1162,2501,3634,4446,4933, 5129,5137,5087,5056,5019,4896,4674,4423,4178,3922, 3686,3639,3955,4598,5319,5853,6155,6366,6657,7084, 7605,8117,8497,8647,8517,8068,7245,6081,4745,3515, 2613,2073,1740,1425,1059,714,426,90,-461,-1286, -2257,-3162,-3842,-4220,-4274,-4034,-3615,-3185,-2870,-2691, -2614,-2611,-2654,-2711,-2796,-2904,-2921,-2657,-2007,-1104, -277,195,261,59,-261,-645,-1119,-1660,-2164,-2559, -2848,-3100,-3373,-3716,-4146,-4613,-5040,-5410,-5729,-5930, -5873,-5526,-5068,-4795,-4903,-5433,-6338,-7516,-8751,-9762, -10284,-10141,-9338,-8116,-6871,-5926,-5350,-5031,-4833,-4746, -4842,-5130,-5456,-5579,-5393,-5045,-4792,-4819,-5162,-5769, -6553,-7366,-8000,-8283,-8192,-7822,-7301,-6737,-6187,-5706, -5380,-5300,-5507,-5964,-6538,-7055,-7415,-7618,-7678,-7566, -7218,-6594,-5763,-4947,-4377,-4100,-3983,-3820,-3403,-2608, -1461,-160,1031,1949,2588,2981,3085,2840,2302,1676, 1164,854,760,865,1110,1405,1678,1902,2119,2403, 2845,3518,4401,5378,6302,7056,7557,7679,7293,6366, 5090,3826,2885,2309,1940,1645,1424,1348,1407,1515, 1596,1636,1672,1744,1855,1954,2032,2143,2333,2561, 2666,2481,1926,1076,146,-598,-977,-911,-397,512, 1688,2919,4038,5044,6021,6954,7691,8119,8384,8816, 9682,10967,12365,13501,14116,14088,13411,12245,10908,9737, 8947,8536,8343,8123,7672,6919,5936,4852,3727,2552, 1371,318,-532,-1221,-1814,-2291,-2543,-2528,-2415,-2445, -2757,-3322,-4000,-4628,-5088,-5337,-5386,-5268,-5040,-4803, -4680,-4762,-5023,-5272,-5239,-4749,-3884,-2854,-1800,-722, 398,1482,2395,3073,3600,4075,4499,4755,4760,4556, 4282,4072,3978,3970,3978,3955,3922,3940,4048,4244, 4523,4930,5522,6307,7176,7956,8529,8866,8913,8526, 7640,6439,5280,4440,4004,3886,3863,3695,3275,2664, 1955,1157,227,-797,-1757,-2488,-2932,-3126,-3162,-3124, -3071,-3056,-3109,-3235,-3391,-3495,-3508,-3461,-3411,-3373, -3301,-3080,-2599,-1876,-1107,-533,-267,-242,-361,-625, -1033,-1447,-1641,-1526,-1269,-1228,-1714,-2736,-4017,-5150, -5808,-5874,-5431,-4722,-4052,-3647,-3594,-3904,-4584,-5592, -6782,-7935,-8841,-9360,-9429,-9076,-8470,-7853,-7397,-7106, -6880,-6622,-6323,-6041,-5799,-5583,-5378,-5165,-4923,-4673, -4523,-4621,-5013,-5604,-6271,-6943,-7603,-8169,-8479,-8353, -7727,-6744,-5725,-5020,-4850,-5210,-5906,-6691,-7381,-7832, -7938,-7681,-7210,-6785,-6607,-6673,-6813,-6904,-6923,-6847, -6582,-6013,-5109,-3975,-2796,-1713,-764,96,874,1486, 1832,1892,1738,1506,1320,1223,1183,1146,1084,981, 812,615,520,684,1218,2125,3296,4537,5672,6588, 7170,7320,7016,6368,5578,4825,4193,3691,3343,3146, 3006,2758,2274,1600,937,556,625,1102,1783,2432, 2923,3206,3279,3131,2791,2333,1790,1141,382,-394, -971,-1086,-641,228,1224,2063,2625,2976,3245,3567, 4069,4883,6105,7672,9357,10871,11989,12623,12839,12774, 12551,12231,11855,11501,11261,11132,10982,10637,10025,9198, 8234,7142,5890,4527,3231,2207,1509,1020,587,106, -427,-981,-1518,-2066,-2648,-3206,-3611,-3789,-3837,-3953, -4224,-4582,-4911,-5144,-5287,-5389,-5492,-5605,-5690,-5660, -5419,-4912,-4109,-3003,-1681,-332,830,1699,2315,2800, 3212,3534,3742,3889,4079,4341,4588,4676,4527,4168, 3698,3256,3003,3068,3486,4210,5153,6200,7188,7949, 8399,8560,8476,8153,7594,6888,6246,5873,5804,5880, 5866,5612,5099,4398,3566,2648,1674,717,-132,-782, -1200,-1458,-1689,-1970,-2278,-2536,-2713,-2882,-3158,-3558, -3954,-4177,-4122,-3782,-3218,-2591,-2107,-1892,-1894,-1937, -1854,-1575,-1138,-623,-144,182,303,203,-151,-827, -1824,-2981,-4005,-4601,-4640,-4226,-3612,-3050,-2716,-2685, -2949,-3480,-4279,-5301,-6366,-7220,-7707,-7871,-7894,-7923, -7985,-8005,-7936,-7810,-7658,-7447,-7132,-6736,-6332,-5963, -5602,-5178,-4680,-4224,-4022,-4211,-4742,-5458,-6224,-6956, -7572,-7934,-7903,-7453,-6727,-5979,-5452,-5277,-5432,-5792, -6235,-6682,-7054,-7217,-7102,-6806,-6558,-6506,-6655,-6910, -7203,-7500,-7743,-7819,-7619,-7078,-6234,-5219,-4180,-3205, -2324,-1560,-897,-284,321,934,1492,1888,2048,1967, 1697,1345,990,622,219,-148,-303,-88,534,1469, 2575,3709,4724,5474,5866,5947,5887,5862,5897,5901, 5787,5533,5151,4673,4130,3525,2841,2094,1370,853, 705,950,1516,2326,3272,4104,4491,4232,3400,2311, 1307,585,185,93,267,593,909,1055,954,676, 429,430,761,1374,2191,3204,4441,5867,7352,8702, 9754,10463,10908,11194,11369,11457,11544,11744,12085,12460, 12670,12530,11969,11041,9868,8580,7330,6283,5520,4964, 4420,3721,2870,1972,1142,416,-227,-827,-1399,-1911, -2303,-2569,-2782,-3044,-3393,-3780,-4111,-4359,-4585,-4901, -5353,-5860,-6282,-6513,-6489,-6147,-5448,-4428,-3221,-2051, -1112,-445,49,511,1059,1747,2526,3286,3932,4417, 4682,4635,4238,3577,2863,2320,2117,2318,2888,3735, 4704,5642,6444,7033,7356,7413,7300,7154,7072,7054, 7032,6960,6847,6703,6542,6372,6169,5851,5306,4455, 3336,2127,1089,414,152,151,138,-131,-724,-1521, -2329,-3033,-3587,-3953,-4052,-3815,-3312,-2789,-2534,-2683, -3124,-3579,-3804,-3674,-3171,-2350,-1343,-344,436,828, 774,335,-374,-1256,-2186,-2988,-3462,-3525,-3247,-2831, -2508,-2386,-2420,-2516,-2683,-3034,-3657,-4486,-5321,-5997, -6482,-6836,-7106,-7287,-7384,-7466,-7634,-7926,-8247,-8425, -8331,-7948,-7317,-6509,-5637,-4861,-4352,-4217,-4448,-4933, -5505,-6044,-6500,-6852,-7073,-7127,-7013,-6793,-6570,-6406, -6298,-6203,-6122,-6131,-6298,-6548,-6697,-6631,-6423,-6256, -6258,-6428,-6730,-7102,-7467,-7775,-7993,-8087,-7998,-7681, -7165,-6538,-5884,-5248,-4642,-4042,-3417,-2678,-1713,-518, 705,1643,2064,1947,1435,731,27,-520,-792,-741, -404,81,567,984,1391,1913,2613,3407,4119,4623, 4940,5202,5507,5845,6141,6327,6343,6100,5484,4462, 3180,1936,1050,736,1010,1698,2557,3370,3962,4205, 4054,3561,2880,2210,1711,1424,1320,1347,1445,1505, 1386,1009,438,-153,-594,-786,-693,-293,425,1460, 2726,4061,5286,6275,6989,7516,8037,8694,9471,10247, 10950,11582,12148,12609,12869,12838,12496,11891,11116,10277, 9462,8690,7926,7167,6420,5683,4933,4155,3377,2615, 1847,1056,270,-446,-1006,-1350,-1484,-1505,-1572,-1823, -2303,-2956,-3699,-4471,-5229,-5895,-6355,-6521,-6412,-6121, -5736,-5293,-4805,-4266,-3683,-3074,-2455,-1780,-941,134, 1356,2500,3368,3862,3957,3694,3176,2572,2088,1903, 2061,2473,2966,3426,3897,4497,5248,6003,6562,6806, 6791,6694,6674,6748,6877,7060,7315,7584,7732,7643, 7277,6687,5979,5248,4550,3929,3447,3130,2882,2508, 1859,951,-50,-973,-1698,-2211,-2543,-2705,-2659,-2439, -2228,-2285,-2731,-3460,-4201,-4674,-4715,-4311,-3521,-2476, -1387,-491,56,231,92,-273,-788,-1366,-1914,-2331, -2564,-2602,-2499,-2343,-2191,-2045,-1916,-1903,-2118,-2584, -3208,-3844,-4386,-4804,-5131,-5405,-5643,-5892,-6237,-6748, -7419,-8147,-8736,-8970,-8736,-8106,-7258,-6364,-5559,-4964, -4681,-4738,-5034,-5428,-5796,-6072,-6234,-6287,-6263,-6217, -6244,-6404,-6655,-6856,-6872,-6696,-6444,-6284,-6259,-6273, -6194,-6005,-5823,-5800,-5983,-6300,-6652,-6986,-7272,-7457, -7484,-7356,-7168,-7061,-7122,-7306,-7461,-7388,-6955,-6151, -5072,-3851,-2586,-1363,-332,367,702,758,640,375, -33,-510,-872,-935,-652,-151,387,828,1120,1281, 1371,1513,1862,2505,3439,4569,5701,6613,7138,7226, 6925,6311,5476,4509,3552,2793,2393,2359,2584,2925, 3280,3599,3841,3955,3889,3625,3211,2793,2532,2512, 2665,2817,2793,2498,1945,1208,405,-337,-890,-1150, -1059,-639,5,749,1500,2210,2876,3498,4107,4796, 5663,6711,7835,8885,9756,10436,11007,11582,12178,12664, 12869,12734,12326,11746,11067,10335,9599,8922,8372,7945, 7517,6906,5996,4835,3600,2495,1651,1102,815,730, 767,786,620,144,-627,-1559,-2531,-3479,-4329,-4955, -5257,-5260,-5143,-5145,-5402,-5849,-6233,-6301,-5958,-5280, -4359,-3262,-2076,-924,96,954,1649,2191,2575,2754, 2656,2296,1844,1539,1538,1829,2308,2905,3604,4345, 4967,5316,5387,5351,5428,5743,6250,6841,7402,7825, 8041,8040,7840,7496,7092,6742,6531,6466,6460,6397, 6192,5763,5036,4016,2828,1699,836,303,10,-181, -364,-568,-817,-1159,-1665,-2341,-3098,-3779,-4267,-4509, -4474,-4165,-3613,-2883,-2067,-1294,-721,-448,-468,-694, -1031,-1419,-1806,-2100,-2225,-2168,-1996,-1793,-1628,-1555, -1621,-1872,-2263,-2675,-2965,-3078,-3110,-3219,-3480,-3860, -4319,-4863,-5544,-6375,-7263,-8020,-8466,-8534,-8292,-7856, -7328,-6765,-6208,-5727,-5405,-5285,-5348,-5535,-5771,-5988, -6129,-6137,-6001,-5832,-5834,-6133,-6653,-7171,-7477,-7479, -7207,-6740,-6192,-5708,-5452,-5513,-5870,-6370,-6782,-6918, -6742,-6399,-6103,-6012,-6168,-6525,-6986,-7456,-7842,-8098, -8192,-8104,-7828,-7342,-6579,-5516,-4241,-2927,-1775,-956, -548,-490,-637,-845,-1010,-1064,-961,-678,-271,100, 278,176,-157,-533,-694,-443,268,1351,2646,3989, 5206,6141,6670,6741,6399,5770,5041,4398,3950,3703, 3627,3674,3763,3803,3744,3599,3441,3343,3328,3363, 3396,3427,3521,3722,3921,3917,3576,2908,2044,1190, 499,6,-343,-578,-671,-600,-419,-202,23,306, 722,1295,1985,2712,3424,4176,5055,6064,7115,8153, 9203,10229,11093,11628,11798,11745,11654,11588,11489,11278, 10933,10534,10163,9805,9301,8492,7340,5991,4700,3692, 3071,2801,2770,2837,2840,2611,2038,1174,220,-644, -1356,-1938,-2436,-2883,-3311,-3762,-4302,-4965,-5692,-6342, -6778,-6960,-6915,-6660,-6170,-5405,-4361,-3130,-1875,-752, 126,717,1009,1015,825,607,507,604,896,1326, 1826,2326,2764,3092,3280,3361,3474,3768,4328,5111, 5967,6702,7175,7351,7266,6993,6646,6386,6370,6660, 7158,7663,7969,7943,7546,6816,5830,4722,3672,2847, 2327,2054,1892,1711,1439,1030,447,-303,-1177,-2069, -2838,-3419,-3854,-4191,-4376,-4298,-3918,-3294,-2583,-1977, -1591,-1435,-1462,-1613,-1842,-2073,-2195,-2142,-1956,-1738, -1592,-1597,-1753,-2022,-2352,-2665,-2836,-2749,-2434,-2080, -1943,-2138,-2605,-3193,-3803,-4404,-5042,-5739,-6489,-7221, -7813,-8156,-8209,-7999,-7606,-7142,-6712,-6396,-6245,-6225, -6244,-6176,-5974,-5704,-5498,-5473,-5673,-6083,-6623,-7129, -7426,-7445,-7264,-7020,-6809,-6664,-6588,-6571,-6596,-6637, -6693,-6778,-6858,-6838,-6635,-6273,-5877,-5637,-5682,-6038, -6626,-7311,-7992,-8591,-9010,-9119,-8831,-8158,-7214,-6190, -5268,-4524,-3925,-3426,-3001,-2648,-2329,-1999,-1620,-1213, -847,-591,-481,-522,-748,-1178,-1725,-2170,-2267,-1866, -980,240,1579,2849,3931,4762,5294,5458,5246,4798, 4373,4165,4186,4327,4470,4540,4476,4211,3736,3175, 2762,2681,2934,3368,3819,4204,4473,4562,4436,4104, 3624,3099,2627,2210,1738,1115,390,-250,-616,-663, -523,-372,-305,-288,-241,-120,88,419,936,1669, 2580,3638,4830,6105,7330,8343,9041,9425,9613,9805, 10176,10776,11485,12061,12313,12195,11749,11018,10057,8965, 7898,7010,6370,5916,5526,5117,4673,4215,3765,3342, 2951,2551,2072,1485,815,127,-505,-1039,-1498,-1976, -2588,-3386,-4332,-5335,-6279,-7028,-7477,-7550,-7197,-6419, -5325,-4126,-3050,-2217,-1646,-1276,-1045,-885,-724,-462, -61,397,805,1086,1237,1284,1271,1283,1435,1845, 2532,3390,4253,4987,5534,5891,6087,6124,6023,5865, 5796,5952,6402,7064,7726,8201,8410,8366,8056,7460, 6641,5768,5026,4507,4185,3959,3765,3569,3301,2855, 2179,1308,324,-673,-1619,-2455,-3124,-3560,-3714,-3587, -3231,-2765,-2389,-2251,-2330,-2480,-2531,-2403,-2131,-1807, -1535,-1395,-1415,-1555,-1727,-1880,-2019,-2161,-2309,-2439, -2505,-2452,-2236,-1869,-1469,-1224,-1298,-1748,-2491,-3385, -4306,-5131,-5728,-6054,-6213,-6364,-6626,-7034,-7505,-7848, -7850,-7427,-6723,-6005,-5506,-5293,-5281,-5349,-5475,-5694, -5994,-6279,-6454,-6498,-6483,-6479,-6503,-6513,-6500,-6500, -6557,-6689,-6878,-7076,-7211,-7206,-7013,-6617,-6069,-5472, -4983,-4785,-5004,-5584,-6347,-7098,-7740,-8266,-8639,-8717, -8389,-7742,-7013,-6449,-6144,-5999,-5839,-5528,-4991,-4238, -3344,-2411,-1546,-880,-521,-480,-690,-1053,-1500,-2003, -2497,-2823,-2791,-2308,-1433,-355,756,1820,2773,3496, 3884,4001,4048,4203,4510,4894,5212,5327,5201,4909, 4547,4180,3848,3591,3431,3396,3501,3726,4039,4407, 4796,5127,5277,5167,4842,4424,3994,3512,2908,2186, 1453,861,519,448,534,586,450,101,-378,-836, -1090,-1015,-545,304,1422,2626,3749,4668,5334,5782, 6140,6601,7326,8345,9543,10706,11622,12178,12384,12318, 12061,11637,11040,10348,9666,9051,8493,7976,7472,6969, 6449,5928,5445,5012,4595,4145,3646,3133,2676,2319, 2045,1767,1386,794,-85,-1232,-2525,-3833,-5057,-6075, -6725,-6870,-6526,-5898,-5254,-4747,-4370,-4034,-3641,-3147, -2569,-1928,-1248,-602,-94,200,273,181,-6,-195, -238,2,562,1368,2289,3179,3905,4393,4657,4772, 4831,4900,5027,5285,5699,6230,6782,7286,7716,8064, 8305,8404,8338,8097,7660,7044,6358,5777,5451,5417, 5569,5705,5607,5140,4278,3106,1813,624,-283,-860, -1213,-1497,-1822,-2200,-2558,-2786,-2831,-2728,-2585,-2476, -2385,-2270,-2117,-1936,-1741,-1529,-1312,-1166,-1220,-1551, -2091,-2646,-2975,-2936,-2546,-1985,-1457,-1107,-996,-1103, -1362,-1730,-2144,-2535,-2892,-3264,-3705,-4248,-4869,-5530, -6207,-6871,-7425,-7725,-7662,-7257,-6679,-6119,-5696,-5427, -5287,-5290,-5476,-5845,-6266,-6531,-6502,-6218,-5847,-5589, -5575,-5811,-6195,-6613,-7021,-7411,-7731,-7907,-7891,-7663, -7205,-6535,-5759,-5074,-4697,-4743,-5162,-5770,-6383,-6928, -7382,-7701,-7810,-7690,-7435,-7218,-7165,-7271,-7442,-7544, -7466,-7139,-6534,-5655,-4535,-3274,-2052,-1107,-641,-717, -1240,-1998,-2723,-3209,-3354,-3173,-2785,-2334,-1891,-1450, -941,-302,477,1329,2151,2843,3388,3826,4196,4498, 4729,4862,4863,4716,4479,4244,4044,3848,3621,3419, 3323,3397,3685,4200,4868,5497,5883,5925,5657,5169, 4557,3896,3268,2778,2497,2397,2342,2169,1759,1092, 262,-542,-1128,-1369,-1284,-990,-598,-148,348,882, 1452,2037,2594,3108,3641,4313,5208,6309,7499,8639, 9636,10485,11187,11674,11831,11616,11144,10606,10148,9789, 9483,9175,8829,8398,7859,7219,6505,5761,5055,4491, 4171,4132,4289,4469,4484,4207,3573,2626,1488,273, -964,-2165,-3231,-4101,-4764,-5233,-5540,-5739,-5881,-5974, -5971,-5790,-5351,-4648,-3764,-2856,-2063,-1464,-1097,-996, -1160,-1501,-1853,-1996,-1753,-1111,-243,617,1329,1873, 2296,2636,2904,3119,3328,3592,3926,4302,4704,5171, 5775,6515,7266,7825,8041,7909,7581,7241,6990,6858, 6840,6901,6962,6944,6813,6567,6227,5804,5289,4644, 3842,2879,1837,853,56,-498,-872,-1184,-1518,-1899, -2341,-2810,-3215,-3386,-3185,-2641,-1992,-1535,-1407,-1533, -1771,-2008,-2208,-2364,-2473,-2516,-2491,-2420,-2347,-2306, -2296,-2246,-2084,-1821,-1562,-1417,-1445,-1624,-1899,-2244, -2677,-3233,-3930,-4769,-5686,-6523,-7107,-7332,-7205,-6872, -6515,-6237,-6042,-5909,-5838,-5888,-6095,-6395,-6625,-6628, -6337,-5845,-5341,-5016,-4995,-5308,-5908,-6696,-7523,-8223, -8637,-8673,-8334,-7735,-7067,-6492,-6084,-5853,-5763,-5772, -5857,-6038,-6337,-6706,-7001,-7094,-6986,-6791,-6672,-6783, -7206,-7873,-8553,-8971,-8963,-8501,-7650,-6522,-5291,-4132, -3171,-2495,-2147,-2100,-2286,-2626,-3007,-3293,-3396,-3345, -3241,-3156,-3078,-2935,-2651,-2152,-1409,-486,479,1355, 2070,2623,3054,3414,3757,4096,4392,4571,4572,4353, 3923,3372,2850,2526,2545,2993,3789,4693,5391,5691, 5611,5311,4980,4744,4610,4542,4497,4425,4269,3976, 3510,2865,2072,1227,475,-86,-445,-660,-773,-810, -785,-692,-526,-307,-40,268,603,991,1479,2110, 2906,3863,4979,6220,7500,8683,9626,10225,10473,10461, 10320,10204,10237,10414,10598,10589,10249,9592,8739,7827, 6948,6175,5601,5320,5363,5641,5949,6072,5907,5485, 4869,4107,3218,2235,1245,337,-479,-1273,-2147,-3135, -4171,-5144,-5954,-6508,-6687,-6412,-5739,-4863,-4013,-3362, -2962,-2752,-2636,-2554,-2502,-2490,-2511,-2521,-2440,-2168, -1642,-883,3,862,1507,1801,1728,1479,1358,1603, 2271,3216,4194,5015,5626,6051,6319,6483,6616,6782, 7004,7231,7362,7324,7168,7043,7076,7273,7520,7640, 7501,7096,6505,5815,5097,4423,3840,3317,2746,2019, 1142,196,-704,-1472,-2039,-2363,-2449,-2360,-2183,-2012, -1906,-1887,-1936,-1988,-2002,-2009,-2060,-2130,-2156,-2102, -2011,-2002,-2183,-2542,-2898,-3033,-2838,-2364,-1749,-1161, -743,-612,-790,-1217,-1806,-2501,-3271,-4054,-4759,-5321, -5719,-5961,-6072,-6079,-6002,-5905,-5876,-5998,-6275,-6610, -6852,-6867,-6588,-6047,-5406,-4865,-4551,-4494,-4662,-5029, -5570,-6246,-6996,-7702,-8193,-8310,-8022,-7446,-6804,-6321, -6137,-6254,-6519,-6727,-6744,-6565,-6253,-5911,-5646,-5522, -5555,-5761,-6163,-6763,-7467,-8121,-8605,-8837,-8786,-8459, -7883,-7105,-6209,-5318,-4529,-3862,-3302,-2872,-2624,-2585, -2713,-2940,-3215,-3491,-3729,-3871,-3859,-3649,-3258,-2766, -2268,-1810,-1360,-817,-76,881,1977,3040,3878,4375, 4492,4296,3914,3480,3096,2838,2773,2928,3271,3718, 4161,4524,4774,4916,4966,4982,5046,5205,5429,5653, 5788,5771,5588,5242,4728,4059,3268,2447,1719,1152, 741,420,147,-71,-198,-228,-248,-365,-577,-751, -762,-554,-118,530,1387,2413,3530,4616,5575,6401, 7154,7886,8601,9258,9842,10365,10838,11203,11374,11289, 10940,10368,9639,8834,8054,7412,7002,6884,7024,7261, 7396,7304,6966,6464,5926,5474,5139,4853,4481,3883, 2961,1700,219,-1282,-2611,-3666,-4451,-5018,-5399,-5585, -5510,-5152,-4591,-3979,-3470,-3168,-3116,-3277,-3539,-3750, -3755,-3467,-2944,-2326,-1737,-1249,-874,-575,-316,-82, 151,426,763,1166,1633,2177,2837,3618,4474,5272, 5869,6193,6299,6301,6328,6471,6773,7193,7627,7963, 8122,8085,7898,7672,7514,7464,7467,7415,7208,6809, 6242,5546,4744,3846,2887,1922,1011,218,-403,-837, -1104,-1255,-1375,-1534,-1757,-1994,-2159,-2202,-2122,-1949, -1725,-1517,-1413,-1489,-1757,-2168,-2622,-3003,-3214,-3213, -3007,-2600,-2024,-1365,-779,-411,-381,-725,-1385,-2206, -3001,-3616,-3964,-4078,-4108,-4212,-4478,-4896,-5396,-5876, -6271,-6571,-6825,-7047,-7168,-7056,-6640,-5990,-5276,-4689, -4363,-4340,-4600,-5075,-5674,-6288,-6815,-7169,-7320,-7308, -7204,-7098,-7069,-7163,-7376,-7628,-7789,-7737,-7416,-6867, -6213,-5619,-5210,-5062,-5203,-5615,-6211,-6871,-7464,-7908, -8178,-8313,-8394,-8462,-8468,-8294,-7821,-7008,-5962,-4889, -3997,-3416,-3173,-3206,-3406,-3644,-3793,-3782,-3642,-3500, -3480,-3633,-3911,-4157,-4207,-3976,-3453,-2624,-1482,-117, 1243,2339,3025,3338,3400,3328,3190,3047,2962,2992, 3130,3325,3520,3677,3796,3918,4094,4315,4546,4772, 5034,5365,5737,6087,6348,6503,6559,6486,6162,5521, 4631,3681,2856,2270,1935,1770,1668,1511,1216,761, 188,-415,-930,-1243,-1289,-1067,-637,-82,540,1190, 1847,2499,3154,3853,4637,5525,6494,7521,8576,9621, 10536,11161,11363,11137,10636,10084,9670,9447,9331,9168, 8869,8457,8012,7618,7342,7217,7235,7323,7379,7328, 7151,6884,6557,6128,5492,4566,3316,1793,136,-1444, -2746,-3620,-4031,-4068,-3898,-3723,-3683,-3798,-3991,-4170, -4256,-4214,-4070,-3878,-3683,-3519,-3382,-3210,-2915,-2473, -1947,-1458,-1119,-992,-1013,-1021,-861,-449,203,1009, 1854,2626,3264,3770,4197,4602,5005,5394,5780,6172, 6565,6944,7273,7499,7591,7572,7520,7520,7620,7802, 8012,8195,8290,8216,7870,7203,6300,5330,4449,3724, 3127,2563,1949,1253,498,-237,-864,-1347,-1670,-1825, -1851,-1802,-1706,-1572,-1400,-1217,-1114,-1213,-1588,-2185, -2830,-3303,-3471,-3328,-2948,-2447,-1927,-1461,-1111,-932, -957,-1188,-1595,-2102,-2592,-2942,-3089,-3040,-2907,-2864, -3068,-3590,-4386,-5306,-6165,-6838,-7263,-7410,-7272,-6876, -6309,-5697,-5178,-4879,-4832,-4958,-5142,-5330,-5520,-5716, -5900,-6035,-6118,-6201,-6383,-6761,-7338,-7964,-8425,-8591, -8480,-8168,-7724,-7207,-6682,-6230,-5911,-5717,-5609,-5573, -5654,-5935,-6445,-7116,-7801,-8384,-8790,-8969,-8900,-8587, -8057,-7384,-6701,-6118,-5640,-5205,-4772,-4358,-4014,-3743, -3498,-3288,-3213,-3382,-3811,-4398,-4968,-5368,-5501,-5313, -4804,-3982,-2896,-1674,-506,451,1140,1603,1928,2175, 2367,2497,2578,2647,2721,2797,2886,3023,3199,3342, 3380,3339,3350,3565,4043,4711,5418,6033,6487,6769, 6860,6718,6337,5777,5166,4622,4198,3866,3549,3177, 2755,2326,1892,1395,764,21,-718,-1279,-1499,-1334, -894,-374,26,187,143,71,228,820,1871,3215, 4605,5857,6902,7739,8401,8911,9306,9611,9849,10002, 10032,9901,9634,9307,8995,8699,8383,8007,7583,7188, 6945,6943,7189,7620,8104,8480,8562,8210,7410,6254, 4888,3486,2199,1070,67,-837,-1650,-2330,-2834,-3138, -3294,-3402,-3569,-3865,-4269,-4656,-4859,-4788,-4496,-4125, -3801,-3559,-3380,-3233,-3092,-2951,-2802,-2631,-2397,-2095, -1748,-1394,-1039,-642,-133,504,1208,1880,2465,2997, 3540,4130,4756,5353,5853,6190,6338,6355,6363,6478, 6758,7173,7624,8005,8239,8326,8313,8227,8062,7769, 7322,6775,6217,5705,5226,4716,4072,3232,2198,1067, 12,-799,-1270,-1404,-1276,-1019,-785,-701,-799,-1010, -1278,-1572,-1906,-2297,-2715,-3047,-3178,-3052,-2733,-2345, -2006,-1766,-1628,-1590,-1675,-1907,-2246,-2549,-2639,-2468, -2152,-1867,-1744,-1847,-2198,-2805,-3652,-4652,-5642,-6429, -6863,-6930,-6703,-6306,-5885,-5598,-5535,-5676,-5887,-5977, -5819,-5430,-4986,-4699,-4668,-4859,-5204,-5662,-6197,-6726, -7166,-7484,-7728,-7986,-8298,-8575,-8666,-8465,-7969,-7260, -6487,-5800,-5319,-5137,-5310,-5798,-6468,-7143,-7698,-8064, -8238,-8270,-8222,-8155,-8095,-8037,-7936,-7716,-7284,-6628, -5856,-5080,-4353,-3711,-3233,-3029,-3184,-3659,-4281,-4850, -5253,-5509,-5683,-5780,-5689,-5265,-4478,-3437,-2330,-1336, -552,26,455,801,1121,1468,1865,2279,2636,2861, 2905,2771,2522,2250,2084,2153,2509,3091,3755,4381, 4919,5380,5822,6253,6577,6669,6478,6085,5695,5481, 5452,5453,5305,4911,4277,3473,2604,1797,1163,735, 462,245,18,-243,-526,-796,-1011,-1129,-1121,-960, -636,-161,455,1232,2192,3314,4511,5649,6580,7222, 7625,7936,8307,8797,9348,9845,10162,10181,9824,9115, 8237,7463,7006,6932,7166,7555,7948,8274,8539,8775, 8954,8958,8659,8013,7087,5979,4782,3580,2465,1516, 766,173,-364,-922,-1531,-2184,-2847,-3452,-3929,-4243, -4395,-4414,-4325,-4182,-4043,-3933,-3844,-3774,-3743,-3756, -3732,-3585,-3260,-2800,-2344,-2040,-1936,-1947,-1902,-1613, -984,-89,885,1768,2498,3113,3642,4068,4393,4664, 4932,5223,5548,5926,6364,6846,7329,7733,7975,8007, 7877,7710,7640,7724,7902,8024,7975,7725,7303,6718, 5922,4882,3682,2486,1446,635,93,-178,-211,-84, 71,105,-103,-553,-1124,-1675,-2126,-2448,-2617,-2612, -2441,-2184,-1977,-1917,-1983,-2084,-2183,-2313,-2517,-2768, -2929,-2851,-2505,-1999,-1511,-1192,-1137,-1383,-1917,-2649, -3444,-4152,-4684,-5037,-5280,-5509,-5769,-6027,-6237,-6388, -6472,-6452,-6294,-5994,-5630,-5319,-5121,-5001,-4903,-4827, -4816,-4923,-5160,-5508,-5956,-6532,-7242,-8010,-8692,-9122, -9188,-8900,-8366,-7718,-7044,-6411,-5919,-5694,-5809,-6211, -6710,-7088,-7252,-7275,-7289,-7411,-7674,-8050,-8464,-8790, -8891,-8718,-8294,-7669,-6894,-6028,-5158,-4381,-3801,-3498, -3503,-3781,-4236,-4758,-5282,-5775,-6156,-6307,-6152,-5707, -5106,-4526,-4059,-3641,-3128,-2436,-1594,-710,96,742, 1227,1599,1905,2149,2270,2200,1927,1543,1223,1169, 1504,2195,3054,3846,4415,4748,4923,5035,5161,5376, 5733,6211,6684,6973,6958,6614,6023,5336,4697,4185, 3781,3394,2931,2381,1811,1278,818,431,85,-283, -730,-1233,-1672,-1879,-1742,-1252,-518,296,1036,1664, 2234,2841,3558,4409,5361,6343,7295,8137,8802,9240, 9434,9418,9245,8921,8452,7900,7402,7102,7071,7299, 7727,8272,8829,9288,9553,9561,9289,8795,8198,7571, 6890,6105,5195,4214,3278,2493,1854,1239,500,-396, -1333,-2161,-2790,-3185,-3400,-3547,-3722,-3922,-4100,-4238, -4331,-4347,-4261,-4078,-3859,-3675,-3533,-3379,-3213,-3095, -3084,-3157,-3174,-2959,-2416,-1584,-596,361,1151,1726, 2119,2401,2644,2957,3437,4120,4926,5690,6258,6603, 6807,6930,6978,6981,7018,7183,7492,7888,8287,8648, 8929,9049,8898,8394,7547,6462,5297,4198,3266,2539, 2022,1706,1560,1491,1364,1071,604,24,-605,-1245, -1829,-2226,-2291,-2000,-1518,-1101,-951,-1129,-1583,-2180, -2758,-3161,-3280,-3091,-2665,-2152,-1738,-1533,-1527,-1618, -1711,-1779,-1869,-2029,-2253,-2522,-2884,-3409,-4088,-4775, -5297,-5585,-5700,-5765,-5866,-6018,-6166,-6235,-6167,-5963, -5650,-5254,-4790,-4313,-3927,-3739,-3830,-4222,-4882,-5738, -6660,-7481,-8049,-8309,-8322,-8207,-8040,-7818,-7516,-7162, -6818,-6537,-6354,-6263,-6229,-6237,-6293,-6413,-6613,-6897, -7221,-7554,-7923,-8343,-8749,-9025,-9014,-8591,-7737,-6591, -5390,-4410,-3858,-3761,-3959,-4227,-4422,-4559,-4721,-4970, -5288,-5588,-5778,-5799,-5665,-5444,-5197,-4910,-4532,-3996, -3249,-2308,-1239,-166,758,1401,1716,1718,1492,1196, 986,968,1178,1556,1981,2349,2619,2818,3014,3290, 3711,4250,4821,5316,5709,6077,6516,7005,7385,7476, 7205,6645,5963,5328,4856,4578,4442,4330,4105,3644, 2892,1921,908,42,-538,-802,-857,-833,-797,-742, -652,-525,-339,-24,467,1124,1896,2739,3634,4583, 5584,6618,7620,8441,8934,9046,8860,8533,8185,7858, 7572,7366,7309,7453,7784,8244,8762,9256,9621,9770, 9675,9404,9085,8815,8582,8270,7730,6911,5920,4943, 4099,3366,2649,1888,1101,345,-358,-1014,-1634,-2227, -2770,-3251,-3652,-3932,-4052,-4012,-3855,-3648,-3473,-3406, -3482,-3666,-3878,-4048,-4126,-4057,-3791,-3334,-2776,-2237, -1770,-1324,-837,-315,180,627,1081,1649,2389,3251, 4129,4916,5537,5927,6070,6023,5898,5848,6007,6436, 7073,7779,8426,8937,9292,9470,9408,9066,8492,7765, 6934,6028,5144,4427,3996,3828,3747,3517,2993,2208, 1296,419,-298,-799,-1075,-1116,-951,-683,-473,-484, -780,-1275,-1786,-2164,-2365,-2441,-2451,-2437,-2415,-2385, -2321,-2204,-2048,-1889,-1758,-1660,-1595,-1566,-1609,-1790, -2157,-2681,-3259,-3769,-4127,-4340,-4529,-4834,-5291,-5837, -6348,-6696,-6792,-6609,-6154,-5463,-4658,-3931,-3455,-3317, -3508,-3967,-4574,-5196,-5731,-6171,-6579,-7007,-7428,-7769, -7967,-7987,-7851,-7637,-7445,-7320,-7221,-7043,-6716,-6287, -5902,-5720,-5832,-6229,-6827,-7492,-8095,-8552,-8846,-8974, -8911,-8611,-8050,-7279,-6415,-5594,-4936,-4522,-4374,-4441, -4600,-4725,-4755,-4733,-4747,-4845,-5036,-5357,-5817,-6326, -6688,-6695,-6215,-5309,-4194,-3116,-2238,-1585,-1070,-584, -105,311,604,771,848,881,912,1008,1225,1536, 1842,2058,2176,2267,2438,2787,3353,4106,4948,5741, 6361,6746,6888,6814,6599,6374,6264,6301,6386,6364, 6141,5718,5166,4544,3859,3084,2228,1385,678,181, -116,-273,-374,-473,-597,-751,-930,-1070,-1036,-683, -14,846,1774,2729,3733,4796,5866,6809,7479,7803, 7809,7621,7382,7191,7088,7073,7134,7270,7473,7733, 8060,8449,8834,9122,9258,9298,9333,9401,9429,9283, 8889,8277,7533,6727,5910,5146,4501,3994,3545,3020, 2293,1300,116,-1055,-2002,-2633,-2978,-3115,-3112,-3045, -3039,-3195,-3507,-3853,-4120,-4314,-4483,-4597,-4589,-4405, -4078,-3707,-3406,-3207,-3073,-2951,-2792,-2544,-2165,-1617, -856,100,1129,2073,2834,3413,3881,4287,4590,4733, 4735,4745,4927,5376,6084,6964,7861,8595,9051,9193, 9048,8694,8231,7764,7386,7140,7006,6887,6638,6143, 5379,4438,3457,2602,1982,1560,1188,763,304,-68, -286,-396,-499,-649,-835,-1036,-1236,-1434,-1642,-1900, -2217,-2533,-2755,-2799,-2664,-2434,-2209,-2056,-1982,-1945, -1935,-1965,-2050,-2177,-2306,-2384,-2400,-2427,-2587,-2981, -3633,-4448,-5264,-5949,-6426,-6683,-6745,-6634,-6369,-5947, -5375,-4696,-4061,-3657,-3589,-3843,-4307,-4830,-5287,-5600, -5768,-5886,-6104,-6519,-7116,-7773,-8319,-8617,-8621,-8361, -7916,-7392,-6875,-6418,-6092,-5981,-6126,-6472,-6917,-7390, -7897,-8440,-8926,-9195,-9137,-8774,-8230,-7662,-7187,-6839, -6575,-6301,-5932,-5445,-4916,-4457,-4187,-4191,-4482,-4956, -5470,-5914,-6262,-6557,-6811,-6937,-6813,-6383,-5697,-4878, -4062,-3330,-2710,-2194,-1771,-1417,-1082,-693,-195,372, 854,1072,970,665,380,289,461,874,1470,2147, 2790,3338,3812,4251,4682,5111,5517,5868,6130,6314, 6485,6695,6910,7027,6952,6681,6252,5698,5027,4266, 3482,2751,2103,1537,1049,663,391,172,-116,-542, -1074,-1570,-1851,-1788,-1365,-674,166,1103,2112,3143, 4103,4912,5557,6060,6411,6573,6569,6502,6496,6595, 6744,6881,6999,7130,7308,7569,7901,8301,8756,9235, 9642,9857,9806,9503,9058,8621,8287,8033,7756,7389, 6956,6480,5918,5175,4217,3121,2006,967,47,-706, -1241,-1540,-1662,-1755,-1976,-2406,-3010,-3674,-4241,-4565, -4586,-4385,-4101,-3850,-3699,-3676,-3762,-3916,-4063,-4136, -4097,-3935,-3614,-3079,-2324,-1405,-420,546,1431,2181, 2718,2999,3060,3008,3035,3338,4013,4978,6015,6898, 7474,7742,7807,7811,7855,7969,8129,8310,8483,8605, 8631,8479,8073,7401,6557,5713,5000,4447,3980,3487, 2915,2301,1711,1189,754,424,209,91,23,-35, -123,-345,-780,-1379,-1967,-2334,-2387,-2189,-1891,-1687, -1699,-1917,-2229,-2485,-2563,-2458,-2247,-2002,-1757,-1562, -1478,-1540,-1732,-2052,-2551,-3263,-4140,-5038,-5787,-6281, -6479,-6397,-6102,-5667,-5192,-4776,-4478,-4314,-4251,-4226, -4186,-4121,-4082,-4128,-4299,-4601,-5025,-5550,-6181,-6879, -7560,-8126,-8471,-8507,-8206,-7621,-6877,-6175,-5736,-5701, -6069,-6679,-7269,-7643,-7784,-7811,-7864,-8007,-8208,-8410, -8537,-8514,-8303,-7917,-7390,-6772,-6149,-5597,-5132,-4734, -4396,-4168,-4139,-4375,-4864,-5503,-6142,-6647,-6922,-6907, -6610,-6146,-5702,-5409,-5242,-5058,-4699,-4116,-3363,-2553, -1772,-1073,-492,-65,184,243,121,-78,-215,-205, -13,372,929,1560,2136,2558,2840,3087,3409,3840, 4333,4825,5311,5826,6361,6849,7215,7444,7554,7522, 7283,6814,6198,5562,4989,4489,4019,3506,2918,2320, 1785,1307,797,195,-473,-1095,-1574,-1846,-1861,-1580, -973,-87,924,1864,2632,3249,3794,4331,4872,5403, 5872,6210,6352,6284,6076,5869,5809,6002,6470,7105, 7744,8275,8655,8904,9069,9162,9172,9119,9064,9022, 9008,9036,9077,9045,8841,8393,7680,6772,5791,4847, 4009,3275,2612,1991,1413,867,306,-322,-1012,-1715, -2379,-2947,-3386,-3689,-3866,-3923,-3863,-3700,-3525,-3436, -3523,-3836,-4350,-4946,-5394,-5460,-5046,-4242,-3247,-2263, -1432,-795,-333,6,297,610,995,1486,2094,2810, 3595,4349,4980,5461,5818,6122,6437,6777,7136,7489, 7802,8092,8411,8737,8949,8924,8649,8215,7744,7303, 6865,6358,5720,4958,4148,3397,2795,2378,2112,1906, 1659,1319,901,477,116,-185,-471,-775,-1081,-1327, -1461,-1503,-1511,-1563,-1699,-1924,-2209,-2515,-2798,-2967, -2912,-2571,-1996,-1343,-844,-681,-909,-1448,-2185,-2981, -3725,-4345,-4819,-5150,-5374,-5552,-5701,-5771,-5711,-5520, -5262,-5025,-4843,-4694,-4493,-4180,-3786,-3453,-3322,-3484, -3957,-4688,-5581,-6480,-7205,-7632,-7748,-7655,-7474,-7260, -7020,-6787,-6614,-6548,-6597,-6743,-6941,-7145,-7339,-7537, -7735,-7903,-8033,-8159,-8337,-8590,-8825,-8869,-8563,-7900, -7013,-6078,-5247,-4655,-4400,-4470,-4733,-5024,-5250,-5426, -5613,-5820,-5995,-6101,-6167,-6246,-6374,-6499,-6498,-6276, -5808,-5169,-4448,-3705,-2966,-2266,-1658,-1210,-955,-840, -780,-731,-708,-697,-588,-274,235,813,1325,1698, 1917,2024,2109,2287,2660,3286,4115,4991,5763,6341, 6737,7020,7258,7442,7500,7367,7071,6680,6262,5836, 5411,5009,4623,4201,3651,2929,2044,1084,190,-511, -970,-1215,-1314,-1311,-1210,-993,-614,-20,790,1722, 2628,3389,3982,4443,4803,5059,5167,5102,4931,4804, 4868,5202,5781,6506,7224,7792,8143,8286,8290,8255, 8292,8472,8804,9240,9698,10073,10248,10142,9751,9179, 8569,8015,7508,6998,6421,5767,5072,4395,3755,3117, 2405,1574,645,-323,-1259,-2065,-2652,-2969,-3032,-2941, -2842,-2836,-3000,-3367,-3914,-4564,-5191,-5639,-5791,-5619, -5201,-4677,-4168,-3717,-3317,-2944,-2566,-2162,-1714,-1192, -567,140,890,1630,2307,2885,3364,3778,4219,4758, 5385,6028,6577,6962,7189,7376,7644,8040,8520,8972, 9282,9371,9211,8813,8227,7531,6807,6140,5583,5130, 4718,4288,3817,3319,2814,2317,1838,1362,884,420, 6,-307,-480,-521,-497,-503,-648,-995,-1502,-2062, -2566,-2938,-3131,-3104,-2856,-2442,-1956,-1505,-1191,-1072, -1163,-1460,-1950,-2562,-3183,-3724,-4113,-4335,-4481,-4690, -5044,-5517,-5993,-6325,-6411,-6219,-5779,-5170,-4528,-3994, -3665,-3562,-3639,-3849,-4164,-4572,-5045,-5541,-6042,-6544, -7002,-7326,-7448,-7373,-7204,-7077,-7074,-7193,-7354,-7452, -7437,-7352,-7296,-7349,-7537,-7856,-8303,-8830,-9343,-9703, -9791,-9563,-9058,-8376,-7629,-6927,-6355,-5973,-5783,-5711, -5671,-5593,-5489,-5423,-5453,-5589,-5810,-6090,-6418,-6769, -7073,-7253,-7266,-7110,-6805,-6377,-5813,-5125,-4375,-3668, -3106,-2746,-2534,-2376,-2200,-1973,-1685,-1348,-1001,-682, -395,-131,127,390,643,852,1031,1231,1523,1953, 2529,3276,4167,5102,5933,6545,6882,6968,6924,6909, 7021,7214,7347,7312,7076,6664,6121,5496,4826,4124, 3387,2615,1821,1041,319,-320,-874,-1332,-1652,-1748, -1537,-1002,-231,634,1484,2266,2940,3442,3724,3787, 3701,3602,3653,3934,4420,4993,5536,5981,6314,6550, 6722,6881,7067,7306,7597,7938,8330,8775,9253,9702, 10036,10165,10050,9725,9284,8821,8410,8089,7850,7660, 7454,7116,6518,5619,4478,3234,2035,1016,256,-261, -607,-853,-1086,-1383,-1772,-2220,-2692,-3178,-3689,-4211, -4688,-5037,-5193,-5161,-5029,-4898,-4815,-4758,-4661,-4453, -4104,-3620,-3048,-2444,-1855,-1291,-755,-222,371,1039, 1738,2436,3111,3740,4297,4757,5125,5442,5790,6242, 6811,7432,8025,8539,8953,9256,9413,9349,9028,8484, 7824,7199,6727,6431,6236,6021,5691,5192,4536,3739, 2878,2095,1531,1219,1090,1042,1007,933,768,480, 69,-440,-1012,-1609,-2176,-2639,-2888,-2846,-2544,-2107, -1678,-1381,-1275,-1340,-1518,-1747,-1967,-2123,-2228,-2334, -2523,-2867,-3387,-4030,-4690,-5272,-5727,-6038,-6186,-6136, -5874,-5434,-4895,-4359,-3912,-3623,-3534,-3657,-3945,-4294, -4592,-4801,-4974,-5190,-5496,-5866,-6259,-6640,-6987,-7264, -7417,-7391,-7198,-6914,-6650,-6511,-6570,-6847,-7309,-7879, -8460,-8963,-9300,-9422,-9357,-9175,-8915,-8595,-8213,-7768, -7300,-6859,-6466,-6142,-5899,-5716,-5551,-5375,-5201,-5096, -5156,-5441,-5938,-6539,-7081,-7421,-7493,-7308,-6926,-6452, -5998,-5619,-5305,-5012,-4671,-4240,-3745,-3272,-2895,-2630, -2408,-2141,-1786,-1356,-892,-469,-186,-94,-144,-199, -130,127,557,1104,1712,2355,3048,3787,4510,5124, 5588,5957,6327,6745,7183,7553,7787,7872,7832,7678, 7401,7012,6520,5957,5359,4748,4072,3272,2328,1275, 198,-760,-1432,-1675,-1448,-860,-114,606,1192,1610, 1901,2128,2337,2548,2791,3084,3404,3737,4076,4415, 4755,5094,5403,5671,5885,6056,6215,6417,6719,7174, 7783,8488,9169,9675,9906,9856,9631,9380,9231,9231, 9352,9527,9668,9694,9525,9101,8405,7463,6365,5247, 4229,3381,2725,2228,1839,1463,989,370,-356,-1086, -1722,-2229,-2637,-2988,-3321,-3667,-4042,-4436,-4805,-5089, -5231,-5200,-5022,-4772,-4534,-4332,-4127,-3839,-3426,-2907, -2310,-1654,-967,-288,366,997,1616,2228,2809,3319, 3748,4124,4521,5028,5690,6464,7265,8010,8620,9023, 9189,9132,8922,8656,8423,8255,8138,8032,7880,7629, 7230,6647,5877,4998,4113,3348,2791,2472,2379,2454, 2576,2557,2245,1633,835,12,-685,-1188,-1494,-1648, -1701,-1718,-1747,-1805,-1869,-1892,-1842,-1725,-1583,-1485, -1469,-1517,-1593,-1693,-1852,-2133,-2566,-3134,-3807,-4527, -5207,-5746,-6041,-6032,-5754,-5313,-4843,-4454,-4205,-4112, -4152,-4255,-4316,-4261,-4093,-3908,-3835,-3973,-4374,-5018, -5776,-6452,-6889,-7024,-6901,-6631,-6357,-6187,-6166,-6275, -6484,-6788,-7195,-7682,-8199,-8691,-9104,-9376,-9461,-9359, -9117,-8819,-8569,-8402,-8270,-8063,-7694,-7150,-6505,-5888, -5406,-5123,-5062,-5192,-5450,-5757,-6051,-6322,-6617,-6946, -7238,-7376,-7270,-6946,-6510,-6093,-5788,-5608,-5501,-5379, -5167,-4845,-4428,-3932,-3379,-2820,-2332,-1976,-1748,-1602, -1489,-1383,-1266,-1104,-889,-627,-328,19,432,911, 1446,2027,2618,3192,3762,4379,5067,5770,6385,6821, 7070,7194,7276,7391,7571,7754,7841,7743,7385,6726, 5798,4675,3450,2235,1140,255,-353,-669,-741,-626, -379,-65,256,578,880,1121,1284,1416,1589,1888, 2346,2902,3426,3810,4008,4040,3984,3950,4038,4295, 4727,5296,5934,6572,7155,7631,7985,8213,8330,8372, 8423,8565,8821,9151,9502,9830,10098,10237,10149,9775, 9150,8393,7626,6921,6279,5680,5086,4459,3785,3076, 2341,1611,929,331,-202,-715,-1255,-1832,-2424,-2996, -3520,-3981,-4382,-4705,-4937,-5090,-5195,-5251,-5252,-5210, -5144,-5048,-4875,-4561,-4067,-3404,-2651,-1911,-1257,-706, -229,201,595,977,1436,2062,2851,3711,4546,5304, 5975,6570,7081,7488,7771,7935,8024,8116,8273,8507, 8757,8923,8891,8585,7997,7195,6310,5490,4857,4446, 4208,4080,4007,3900,3676,3287,2736,2087,1432,840, 326,-119,-495,-796,-1038,-1242,-1440,-1647,-1853,-2025, -2126,-2119,-1994,-1782,-1538,-1312,-1152,-1108,-1233,-1556, -2090,-2806,-3608,-4330,-4824,-5056,-5103,-5090,-5113,-5202, -5306,-5352,-5290,-5107,-4827,-4496,-4160,-3880,-3714,-3689, -3778,-3972,-4268,-4670,-5156,-5669,-6119,-6410,-6475,-6308, -5988,-5646,-5450,-5529,-5926,-6554,-7236,-7796,-8141,-8309, -8425,-8616,-8904,-9208,-9440,-9544,-9505,-9336,-9061,-8691, -8224,-7677,-7107,-6570,-6092,-5689,-5389,-5238,-5284,-5526, -5913,-6351,-6743,-7015,-7136,-7098,-6926,-6687,-6469,-6340, -6310,-6322,-6311,-6234,-6064,-5769,-5348,-4835,-4279,-3726, -3249,-2902,-2697,-2595,-2506,-2347,-2080,-1729,-1365,-1055, -857,-782,-750,-600,-221,376,1114,1913,2705,3430, 4024,4463,4785,5061,5390,5862,6503,7250,7967,8503, 8769,8749,8480,7977,7248,6324,5262,4121,2980,1943, 1130,622,412,375,369,320,239,164,122,150, 299,621,1126,1747,2350,2815,3047,3045,2914,2783, 2727,2786,3006,3406,3963,4619,5292,5881,6314,6569, 6689,6760,6878,7121,7518,8035,8592,9089,9472,9739, 9897,9957,9951,9910,9843,9702,9416,8934,8282,7559, 6867,6241,5651,5051,4419,3775,3145,2516,1865,1196, 516,-171,-848,-1503,-2138,-2725,-3224,-3603,-3877,-4119, -4394,-4728,-5097,-5447,-5713,-5813,-5674,-5293,-4737,-4109, -3496,-2945,-2463,-2073,-1791,-1585,-1378,-1056,-495,360, 1432,2562,3570,4330,4835,5163,5414,5670,6014,6505, 7162,7921,8648,9201,9480,9451,9165,8717,8203,7702, 7231,6780,6362,6010,5751,5575,5417,5199,4883,4477, 4010,3485,2895,2253,1625,1100,730,499,315,52, -373,-945,-1556,-2045,-2266,-2158,-1764,-1224,-720,-433, -440,-715,-1144,-1604,-2024,-2374,-2657,-2915,-3201,-3572, -4041,-4539,-4950,-5202,-5292,-5265,-5204,-5136,-5014,-4753, -4315,-3783,-3345,-3168,-3306,-3681,-4170,-4634,-4991,-5218, -5317,-5305,-5223,-5130,-5072,-5086,-5190,-5376,-5612,-5885, -6194,-6541,-6933,-7356,-7789,-8193,-8542,-8843,-9121,-9374, -9582,-9718,-9705,-9456,-8966,-8320,-7623,-6956,-6366,-5903, -5623,-5530,-5583,-5725,-5922,-6145,-6375,-6582,-6701,-6707, -6620,-6507,-6439,-6456,-6548,-6653,-6683,-6586,-6369,-6071, -5723,-5354,-5000,-4696,-4445,-4198,-3886,-3496,-3067,-2655, -2306,-2055,-1934,-1946,-2036,-2064,-1901,-1502,-913,-257, 363,917,1430,1914,2358,2732,3045,3368,3810,4448, 5271,6202,7168,8089,8844,9304,9376,9038,8354,7464, 6519,5618,4811,4107,3478,2882,2269,1641,1041,534, 165,-41,-97,-18,222,622,1129,1644,2071,2340, 2440,2375,2183,1966,1863,1981,2349,2899,3499,4012, 4398,4685,4902,5085,5275,5516,5849,6288,6785,7282, 7734,8126,8483,8826,9153,9455,9727,9966,10147,10220, 10131,9861,9441,8921,8354,7781,7244,6761,6327,5900, 5414,4805,4045,3175,2285,1471,772,155,-436,-1006, -1522,-1972,-2404,-2882,-3465,-4140,-4845,-5477,-5908,-6049, -5885,-5485,-4967,-4451,-4018,-3724,-3619,-3680,-3776,-3729, -3413,-2778,-1866,-806,239,1145,1846,2343,2694,2996, 3362,3877,4577,5442,6385,7293,8056,8600,8897,8981, 8919,8762,8527,8211,7825,7419,7089,6916,6885,6888, 6798,6515,6027,5417,4800,4275,3879,3585,3332,3060, 2682,2117,1356,487,-334,-944,-1263,-1347,-1315,-1268, -1220,-1129,-964,-767,-636,-657,-867,-1231,-1641,-1976, -2158,-2230,-2322,-2558,-3006,-3661,-4432,-5155,-5675,-5898, -5816,-5481,-4977,-4432,-3986,-3750,-3741,-3889,-4075,-4219, -4327,-4440,-4581,-4741,-4875,-4944,-4947,-4902,-4847,-4829, -4874,-4980,-5146,-5373,-5640,-5908,-6175,-6485,-6884,-7379, -7926,-8487,-9029,-9539,-9983,-10293,-10382,-10201,-9772,-9173, -8478,-7761,-7115,-6640,-6389,-6329,-6348,-6340,-6274,-6203, -6189,-6248,-6352,-6488,-6661,-6854,-7028,-7110,-7040,-6835, -6591,-6433,-6406,-6479,-6562,-6563,-6401,-6059,-5569,-4999, -4451,-4010,-3699,-3504,-3380,-3290,-3217,-3158,-3076,-2926, -2674,-2316,-1864,-1336,-754,-179,321,668,836,896, 1005,1295,1834,2637,3685,4891,6103,7149,7919,8393, 8603,8615,8479,8211,7797,7274,6711,6139,5513,4775, 3899,2936,2002,1207,618,271,164,263,516,864, 1207,1445,1549,1553,1513,1493,1538,1646,1802,1978, 2168,2362,2562,2799,3088,3416,3741,4030,4281,4546, 4861,5228,5636,6065,6478,6865,7258,7691,8183,8702, 9180,9561,9839,10024,10103,10046,9844,9523,9154,8819, 8562,8367,8153,7836,7350,6684,5873,4974,4066,3237, 2559,2052,1664,1304,856,231,-595,-1581,-2632,-3637, -4473,-5025,-5246,-5191,-4988,-4768,-4627,-4612,-4711,-4888, -5075,-5170,-5071,-4742,-4208,-3563,-2906,-2283,-1693,-1105, -488,145,735,1240,1702,2222,2891,3747,4764,5861, 6909,7757,8287,8455,8316,8012,7742,7670,7837,8124, 8333,8294,7959,7424,6862,6428,6181,6100,6084,6010, 5779,5387,4897,4375,3812,3169,2424,1623,838,158, -340,-630,-738,-710,-609,-519,-511,-619,-831,-1051, -1175,-1166,-1068,-955,-917,-1026,-1328,-1853,-2576,-3395, -4154,-4757,-5175,-5400,-5425,-5243,-4905,-4511,-4171,-3981, -3959,-4064,-4216,-4356,-4468,-4552,-4596,-4597,-4568,-4541, -4546,-4585,-4614,-4618,-4621,-4651,-4714,-4787,-4852,-4913, -5015,-5232,-5612,-6156,-6840,-7621,-8440,-9227,-9878,-10292, -10414,-10262,-9907,-9434,-8926,-8457,-8076,-7766,-7474,-7131, -6729,-6326,-6029,-5919,-5995,-6201,-6455,-6689,-6836,-6871, -6805,-6680,-6550,-6489,-6528,-6641,-6772,-6874,-6918,-6873, -6711,-6403,-5973,-5493,-5032,-4629,-4294,-4040,-3919,-3959, -4118,-4259,-4229,-3930,-3384,-2712,-2072,-1567,-1221,-1001, -870,-806,-768,-682,-446,-21,589,1359,2262,3263, 4294,5262,6097,6792,7363,7807,8130,8358,8506,8551, 8425,8055,7402,6471,5345,4174,3144,2392,1923,1647, 1461,1312,1194,1125,1117,1145,1178,1209,1265,1375, 1559,1757,1879,1901,1869,1859,1936,2107,2346,2625, 2934,3261,3564,3813,4025,4232,4473,4771,5139,5582, 6096,6676,7283,7882,8426,8876,9207,9412,9508,9531, 9524,9532,9592,9710,9835,9862,9692,9288,8676,7922, 7098,6303,5647,5193,4931,4752,4502,4027,3236,2136, 851,-426,-1523,-2339,-2867,-3190,-3399,-3582,-3813,-4122, -4495,-4858,-5118,-5242,-5261,-5243,-5215,-5135,-4935,-4569, -4032,-3387,-2770,-2316,-2061,-1924,-1754,-1360,-623,425, 1634,2821,3836,4626,5265,5837,6366,6843,7257,7613, 7918,8160,8302,8327,8262,8145,7973,7727,7411,7106, 6891,6823,6905,7062,7160,7087,6774,6193,5374,4417, 3454,2620,2011,1622,1359,1115,820,479,111,-258, -584,-805,-881,-806,-619,-399,-209,-104,-122,-281, -603,-1110,-1779,-2536,-3278,-3910,-4390,-4710,-4858,-4821, -4629,-4371,-4153,-4040,-4031,-4098,-4209,-4336,-4448,-4501, -4471,-4379,-4287,-4247,-4257,-4295,-4377,-4503,-4626,-4673, -4579,-4328,-4001,-3736,-3659,-3843,-4304,-5001,-5842,-6719, -7527,-8192,-8707,-9138,-9531,-9873,-10085,-10091,-9870,-9472, -8973,-8424,-7880,-7379,-6969,-6688,-6555,-6513,-6482,-6423, -6365,-6366,-6459,-6587,-6666,-6645,-6536,-6419,-6395,-6530, -6808,-7125,-7344,-7380,-7178,-6743,-6155,-5554,-5073,-4803, -4748,-4845,-5010,-5169,-5223,-5093,-4768,-4285,-3723,-3168, -2702,-2370,-2166,-2046,-1978,-1944,-1920,-1841,-1614,-1167, -517,214,912,1541,2135,2775,3549,4479,5480,6437, 7306,8055,8617,8918,8921,8626,8086,7376,6576,5750, 4972,4266,3637,3083,2599,2169,1801,1526,1346,1229, 1158,1148,1213,1345,1507,1637,1695,1676,1620,1577, 1588,1664,1810,2044,2369,2725,3007,3140,3132,3067, 3063,3234,3633,4211,4899,5623,6314,6915,7377,7666, 7798,7867,8001,8305,8803,9420,10002,10404,10543,10382, 9951,9338,8672,8090,7717,7590,7624,7656,7523,7127, 6450,5558,4581,3623,2717,1817,857,-149,-1082,-1777, -2166,-2344,-2511,-2868,-3494,-4291,-5053,-5606,-5860,-5799, -5479,-5017,-4561,-4272,-4235,-4387,-4559,-4595,-4407,-4013, -3455,-2774,-2004,-1190,-356,500,1382,2273,3144,3957, 4680,5325,5940,6563,7179,7706,8058,8189,8113,7872, 7531,7178,6923,6873,7074,7450,7844,8111,8161,7974, 7558,6953,6239,5509,4840,4274,3824,3445,3060,2603, 2047,1397,704,68,-400,-640,-662,-513,-260,7, 241,407,450,299,-55,-554,-1114,-1692,-2311,-2976, -3595,-4055,-4312,-4382,-4323,-4216,-4131,-4124,-4201,-4336, -4485,-4573,-4534,-4365,-4149,-4013,-4047,-4246,-4528,-4787, -4944,-4949,-4819,-4570,-4210,-3797,-3444,-3258,-3277,-3471, -3766,-4111,-4522,-5065,-5770,-6599,-7487,-8363,-9128,-9702, -10042,-10158,-10091,-9885,-9582,-9194,-8735,-8234,-7757,-7374, -7149,-7079,-7082,-7047,-6919,-6721,-6501,-6306,-6167,-6109, -6172,-6394,-6771,-7212,-7562,-7689,-7574,-7290,-6926,-6554, -6203,-5887,-5626,-5465,-5446,-5561,-5744,-5887,-5892,-5707, -5333,-4814,-4252,-3768,-3445,-3296,-3260,-3237,-3161,-3001, -2773,-2471,-2095,-1686,-1313,-1023,-804,-557,-150,522, 1442,2518,3657,4779,5816,6730,7487,8048,8386,8506, 8426,8179,7784,7246,6600,5906,5224,4585,3976,3369, 2785,2284,1910,1685,1598,1597,1600,1573,1525,1483, 1451,1411,1363,1351,1423,1597,1856,2140,2373,2484, 2433,2238,1985,1810,1851,2173,2754,3492,4260,4926, 5396,5616,5618,5538,5617,6066,6916,7982,8955,9592, 9830,9797,9672,9546,9426,9292,9131,8947,8786,8691, 8699,8782,8855,8782,8434,7743,6750,5595,4440,3428, 2633,2042,1575,1115,538,-238,-1194,-2217,-3172,-3942, -4471,-4793,-4958,-4985,-4891,-4739,-4623,-4625,-4756,-4977, -5228,-5433,-5506,-5373,-4998,-4409,-3682,-2922,-2208,-1563, -938,-273,484,1375,2404,3551,4730,5774,6551,7019, 7216,7211,7075,6872,6675,6584,6688,6989,7400,7786, 8054,8177,8171,8051,7816,7477,7075,6679,6322,5993, 5643,5218,4684,4040,3302,2480,1622,843,241,-120, -246,-198,-38,213,518,793,934,850,512,-4, -585,-1138,-1633,-2083,-2506,-2890,-3227,-3523,-3811,-4118, -4420,-4635,-4693,-4590,-4381,-4143,-3968,-3916,-4018,-4238, -4507,-4742,-4887,-4927,-4887,-4820,-4765,-4696,-4543,-4251, -3838,-3400,-3058,-2889,-2916,-3104,-3414,-3837,-4400,-5122, -5970,-6881,-7810,-8697,-9459,-10001,-10239,-10135,-9762,-9272, -8842,-8587,-8509,-8521,-8514,-8392,-8081,-7584,-6998,-6480, -6130,-5980,-5993,-6114,-6324,-6644,-7046,-7431,-7685,-7731, -7566,-7262,-6904,-6565,-6284,-6085,-5982,-5992,-6093,-6219, -6268,-6173,-5940,-5643,-5346,-5089,-4888,-4738,-4605,-4463, -4278,-4024,-3703,-3364,-3066,-2844,-2696,-2583,-2457,-2304, -2129,-1906,-1571,-1054,-323,603,1653,2742,3807,4796, 5681,6456,7119,7661,8081,8353,8421,8262,7884,7338, 6698,6014,5298,4583,3943,3455,3158,2996,2838,2594, 2279,1956,1667,1414,1199,1079,1145,1448,1942,2457, 2768,2739,2388,1863,1380,1139,1237,1627,2153,2639, 2956,3089,3131,3219,3420,3713,4049,4415,4849,5414, 6117,6910,7720,8464,9049,9386,9409,9156,8786,8494, 8426,8629,9057,9574,10004,10208,10119,9743,9170,8526, 7906,7328,6763,6175,5551,4896,4197,3423,2546,1552, 490,-548,-1495,-2339,-3052,-3553,-3801,-3851,-3828,-3863, -4022,-4307,-4660,-5021,-5345,-5582,-5680,-5603,-5361,-5028, -4707,-4450,-4238,-3982,-3570,-2926,-2016,-823,589,2073, 3432,4497,5193,5580,5771,5858,5910,5966,6071,6277, 6600,6992,7353,7594,7686,7690,7701,7748,7804,7822, 7780,7672,7522,7359,7154,6833,6359,5718,4924,4008, 3015,2025,1162,555,274,303,556,892,1168,1289, 1211,954,600,260,31,-108,-258,-534,-1011,-1668, -2416,-3117,-3648,-3979,-4168,-4258,-4266,-4215,-4143,-4070, -4017,-4001,-4013,-4080,-4226,-4456,-4730,-4979,-5132,-5171, -5109,-4970,-4762,-4492,-4189,-3878,-3553,-3196,-2802,-2443, -2242,-2339,-2822,-3657,-4706,-5783,-6752,-7559,-8202,-8701, -9050,-9253,-9337,-9368,-9406,-9464,-9505,-9476,-9339,-9069, -8652,-8097,-7445,-6792,-6272,-5991,-5981,-6198,-6550,-6946, -7316,-7585,-7685,-7579,-7313,-7008,-6804,-6756,-6809,-6858, -6813,-6664,-6459,-6258,-6097,-5978,-5901,-5864,-5855,-5828, -5759,-5630,-5446,-5219,-4946,-4608,-4224,-3877,-3642,-3532, -3489,-3440,-3357,-3265,-3169,-3023,-2764,-2331,-1717,-970, -169,621,1421,2290,3269,4314,5321,6220,7010,7675, 8172,8432,8401,8065,7467,6709,5950,5384,5133,5136, 5162,4953,4375,3489,2515,1691,1202,1118,1389,1853, 2303,2573,2598,2422,2152,1900,1715,1602,1555,1582, 1687,1853,2040,2211,2352,2466,2528,2488,2351,2210, 2253,2643,3395,4374,5402,6328,7038,7504,7740,7789, 7719,7665,7749,8010,8404,8849,9282,9671,9981,10143, 10119,9923,9635,9347,9102,8890,8667,8386,7993,7448, 6721,5796,4697,3510,2359,1333,444,-337,-1011,-1539, -1937,-2279,-2662,-3138,-3664,-4143,-4479,-4643,-4691,-4717, -4784,-4906,-5074,-5283,-5531,-5787,-5973,-5962,-5636,-4939, -3887,-2579,-1154,235,1461,2446,3196,3746,4156,4486, 4807,5155,5531,5928,6318,6670,6949,7130,7216,7249, 7281,7348,7457,7605,7785,8007,8272,8543,8704,8588, 8108,7299,6311,5305,4381,3576,2907,2387,2004,1725, 1522,1371,1271,1244,1280,1327,1340,1289,1169,995, 765,446,4,-542,-1128,-1719,-2307,-2888,-3414,-3794, -3952,-3886,-3686,-3510,-3477,-3594,-3802,-4021,-4184,-4275, -4327,-4401,-4551,-4784,-5067,-5338,-5479,-5366,-4943,-4287, -3550,-2862,-2291,-1884,-1703,-1805,-2188,-2780,-3475,-4198, -4906,-5586,-6237,-6876,-7471,-7979,-8397,-8785,-9185,-9591, -9927,-10084,-9987,-9620,-9026,-8312,-7610,-7052,-6726,-6625, -6654,-6708,-6754,-6799,-6884,-6995,-7082,-7108,-7071,-7035, -7072,-7176,-7248,-7188,-6982,-6697,-6428,-6231,-6103,-6024, -5991,-6009,-6068,-6135,-6174,-6126,-5951,-5638,-5233,-4837, -4554,-4415,-4354,-4292,-4187,-4065,-3972,-3928,-3896,-3798, -3554,-3152,-2653,-2160,-1742,-1370,-934,-310,609,1877, 3407,4929,6127,6832,7087,7074,6991,6977,7065,7229, 7385,7423,7254,6842,6207,5427,4612,3880,3284,2809, 2441,2207,2145,2252,2448,2615,2659,2532,2249,1868, 1497,1267,1284,1569,2019,2454,2701,2661,2366,1935, 1501,1144,943,978,1307,1922,2722,3568,4342,4993, 5507,5869,6092,6234,6377,6611,6967,7421,7915,8389, 8793,9114,9339,9462,9483,9434,9382,9419,9586,9849, 10100,10189,9997,9471,8643,7605,6473,5360,4359,3514, 2809,2180,1541,814,-41,-991,-1928,-2724,-3303,-3634, -3719,-3618,-3463,-3433,-3651,-4126,-4768,-5463,-6127,-6691, -7079,-7208,-6994,-6418,-5554,-4534,-3442,-2322,-1209,-144, 821,1626,2236,2718,3174,3697,4319,5010,5682,6231, 6567,6635,6463,6200,6036,6115,6470,7016,7634,8226, 8713,9015,9075,8891,8514,8022,7487,6930,6328,5625, 4810,3946,3169,2601,2252,2032,1864,1715,1589,1504, 1475,1510,1594,1681,1677,1480,1045,408,-314,-978, -1490,-1872,-2218,-2604,-3021,-3382,-3628,-3769,-3826,-3805, -3708,-3581,-3503,-3561,-3782,-4150,-4625,-5129,-5560,-5834, -5900,-5732,-5341,-4761,-4076,-3384,-2755,-2224,-1874,-1817, -2068,-2495,-2916,-3227,-3452,-3710,-4135,-4783,-5607,-6515, -7418,-8257,-8959,-9480,-9798,-9917,-9832,-9575,-9221,-8856, -8528,-8226,-7919,-7589,-7252,-6960,-6776,-6721,-6745,-6786, -6824,-6888,-7023,-7224,-7424,-7528,-7469,-7272,-7006,-6749, -6552,-6434,-6374,-6335,-6279,-6209,-6168,-6201,-6302,-6383, -6316,-6011,-5512,-5006,-4710,-4712,-4911,-5122,-5195,-5058, -4717,-4245,-3781,-3488,-3477,-3730,-4066,-4250,-4098,-3526, -2585,-1443,-272,832,1802,2607,3286,3916,4559,5239, 5925,6556,7074,7463,7738,7893,7872,7618,7108,6396, 5609,4867,4247,3811,3584,3537,3569,3544,3371,3053, 2642,2207,1832,1585,1509,1633,1956,2423,2905,3224, 3225,2876,2302,1676,1141,804,699,812,1103,1552, 2117,2724,3281,3735,4059,4289,4513,4816,5225,5716, 6262,6851,7421,7872,8144,8255,8269,8266,8329,8508, 8832,9309,9899,10488,10921,11072,10880,10390,9714,8983, 8278,7629,7022,6417,5766,5011,4088,2965,1701,438, -670,-1511,-2036,-2241,-2197,-2060,-2005,-2151,-2539,-3145, -3904,-4726,-5540,-6308,-6989,-7486,-7659,-7417,-6796,-5967, -5101,-4272,-3476,-2693,-1924,-1178,-422,426,1404,2461, 3471,4301,4863,5153,5253,5266,5269,5299,5393,5589, 5901,6306,6766,7275,7826,8379,8825,9040,8985,8725, 8357,7967,7585,7170,6631,5922,5070,4176,3353,2692, 2252,2048,2043,2150,2258,2275,2192,2042,1861,1659, 1428,1173,905,591,167,-418,-1140,-1903,-2592,-3101, -3382,-3472,-3454,-3398,-3315,-3209,-3135,-3180,-3405,-3839, -4446,-5114,-5702,-6065,-6125,-5916,-5530,-5048,-4516,-3975, -3479,-3106,-2891,-2786,-2684,-2508,-2279,-2091,-2052,-2234, -2667,-3328,-4162,-5096,-6044,-6931,-7707,-8351,-8849,-9198, -9399,-9467,-9445,-9420,-9398,-9288,-8973,-8438,-7814,-7291, -6992,-6918,-6970,-7036,-7065,-7076,-7121,-7229,-7394,-7561, -7651,-7602,-7396,-7061,-6697,-6453,-6430,-6615,-6863,-6996, -6916,-6635,-6236,-5837,-5557,-5475,-5604,-5868,-6118,-6194, -6012,-5601,-5088,-4616,-4299,-4206,-4331,-4589,-4879,-5098, -5169,-5038,-4697,-4171,-3510,-2749,-1924,-1085,-306,347, 880,1387,2019,2880,3958,5121,6202,7064,7617,7848, 7798,7521,7067,6514,5974,5577,5400,5391,5402,5282, 4949,4415,3753,3061,2445,1999,1758,1714,1853,2169, 2605,3038,3335,3413,3249,2872,2342,1755,1248,928, 827,901,1109,1413,1742,2018,2190,2272,2348,2542, 2923,3498,4208,4969,5678,6246,6610,6754,6736,6650, 6632,6812,7231,7812,8449,9066,9627,10097,10413,10522, 10450,10300,10185,10149,10123,9972,9590,8956,8120,7154, 6076,4890,3616,2333,1183,280,-354,-707,-787,-680, -559,-623,-1003,-1705,-2649,-3724,-4797,-5748,-6480,-6917, -7053,-6984,-6838,-6706,-6601,-6446,-6093,-5449,-4541,-3492, -2428,-1411,-424,564,1536,2438,3208,3798,4181,4356, 4382,4367,4419,4614,4976,5456,5976,6483,6953,7375, 7740,8056,8337,8610,8869,9028,8967,8601,7946,7100, 6189,5338,4644,4140,3772,3453,3123,2798,2538,2381, 2313,2278,2237,2176,2115,2064,1982,1772,1339,687, -101,-917,-1664,-2268,-2678,-2857,-2810,-2626,-2447,-2389, -2498,-2779,-3238,-3833,-4466,-5002,-5349,-5508,-5550,-5547, -5528,-5452,-5250,-4928,-4542,-4160,-3822,-3496,-3114,-2638, -2109,-1653,-1426,-1495,-1832,-2369,-3016,-3683,-4322,-4971, -5693,-6513,-7379,-8172,-8768,-9134,-9328,-9421,-9469,-9468, -9362,-9099,-8674,-8139,-7585,-7139,-6896,-6899,-7130,-7476, -7763,-7837,-7652,-7301,-6961,-6779,-6816,-7030,-7341,-7625, -7745,-7599,-7204,-6681,-6196,-5885,-5819,-5961,-6201,-6400, -6479,-6436,-6311,-6116,-5841,-5475,-5055,-4693,-4517,-4607, -4915,-5320,-5672,-5857,-5806,-5544,-5153,-4695,-4177,-3609, -3072,-2642,-2336,-2069,-1703,-1110,-236,916,2279,3689, 4938,5865,6416,6632,6619,6492,6345,6256,6289,6457, 6694,6872,6834,6502,5894,5110,4285,3535,2908,2431, 2166,2169,2412,2796,3188,3470,3579,3498,3250,2865, 2408,1995,1721,1628,1675,1757,1753,1632,1440,1236, 1059,968,1045,1382,2010,2849,3717,4437,4912,5139, 5177,5126,5111,5250,5597,6124,6733,7309,7777,8135, 8440,8744,9052,9352,9654,9989,10387,10823,11192,11363, 11270,10912,10300,9450,8363,7062,5619,4189,2963,2111, 1680,1553,1536,1453,1182,678,-7,-776,-1547,-2311, -3079,-3850,-4596,-5263,-5805,-6237,-6613,-6950,-7198,-7320, -7285,-7048,-6561,-5811,-4824,-3669,-2462,-1292,-219,680, 1364,1878,2316,2766,3250,3731,4125,4363,4437,4450, 4571,4897,5420,6056,6720,7363,7958,8453,8796,8983, 9037,8959,8725,8309,7733,7083,6444,5857,5302,4759, 4219,3696,3244,2917,2730,2643,2642,2739,2932,3107, 3103,2815,2254,1510,698,-61,-676,-1106,-1370,-1514, -1599,-1684,-1795,-1948,-2164,-2484,-2938,-3481,-3992,-4362, -4562,-4672,-4817,-5096,-5486,-5848,-6018,-5900,-5514,-4971, -4407,-3903,-3485,-3135,-2788,-2394,-1974,-1610,-1400,-1433, -1748,-2278,-2917,-3582,-4237,-4881,-5555,-6301,-7138,-8023, -8851,-9490,-9823,-9786,-9427,-8900,-8404,-8101,-8044,-8172, -8331,-8366,-8200,-7856,-7452,-7121,-6956,-6955,-7064,-7245, -7483,-7755,-8000,-8130,-8045,-7703,-7184,-6663,-6309,-6211, -6343,-6607,-6875,-7037,-7027,-6832,-6500,-6102,-5699,-5337, -5067,-4950,-5038,-5344,-5791,-6204,-6412,-6356,-6094,-5725, -5336,-4974,-4684,-4520,-4494,-4543,-4534,-4315,-3786,-2931, -1830,-603,643,1811,2808,3574,4105,4472,4763,5043, 5366,5760,6239,6756,7236,7574,7620,7291,6616,5738, 4818,4002,3392,3028,2907,3003,3235,3468,3585,3532, 3320,3033,2761,2579,2520,2595,2760,2907,2883,2593, 2068,1433,856,468,319,415,722,1171,1698,2257, 2782,3195,3455,3590,3673,3789,4008,4360,4832,5355, 5845,6280,6677,7039,7311,7448,7495,7597,7925,8571, 9519,10621,11649,12377,12634,12368,11669,10691,9579,8447, 7374,6390,5509,4751,4130,3636,3220,2813,2370,1897, 1402,837,132,-709,-1565,-2293,-2848,-3324,-3861,-4563, -5428,-6367,-7223,-7845,-8144,-8112,-7767,-7155,-6374,-5533, -4680,-3812,-2907,-1968,-1019,-106,746,1529,2213,2733, 3041,3169,3207,3266,3425,3730,4190,4798,5478,6161, 6798,7341,7781,8138,8425,8631,8744,8752,8652,8445, 8097,7560,6820,5942,5059,4318,3807,3532,3433,3432, 3475,3541,3612,3635,3532,3231,2728,2091,1432,867, 469,242,100,-81,-389,-826,-1301,-1704,-1978,-2152, -2295,-2495,-2819,-3256,-3735,-4200,-4629,-5021,-5373,-5657, -5836,-5907,-5885,-5745,-5446,-4988,-4415,-3806,-3245,-2811, -2548,-2422,-2309,-2074,-1691,-1307,-1161,-1435,-2131,-3130, -4254,-5349,-6295,-7043,-7609,-8033,-8334,-8530,-8658,-8759, -8868,-8991,-9093,-9122,-9005,-8695,-8199,-7638,-7173,-6927, -6925,-7101,-7352,-7610,-7839,-8015,-8078,-7978,-7717,-7356, -7000,-6758,-6684,-6766,-6967,-7224,-7434,-7469,-7255,-6810, -6232,-5666,-5250,-5061,-5106,-5351,-5728,-6140,-6446,-6521, -6334,-5972,-5566,-5254,-5119,-5168,-5351,-5592,-5795,-5875, -5776,-5448,-4851,-4010,-3008,-1951,-937,-47,681,1263, 1755,2225,2732,3333,4062,4914,5823,6691,7402,7828, 7865,7493,6814,6019,5313,4828,4593,4557,4594,4549, 4336,3987,3588,3236,3004,2919,2994,3242,3613,3957, 4111,3982,3571,2961,2298,1717,1293,1041,928,941, 1065,1281,1568,1905,2243,2503,2619,2597,2564,2700, 3102,3721,4432,5116,5669,6012,6119,6029,5822,5636, 5638,5965,6680,7737,8984,10227,11301,12119,12627,12768, 12543,12012,11247,10329,9371,8497,7791,7249,6774,6251, 5612,4879,4133,3455,2886,2399,1958,1521,1043,474, -212,-1014,-1921,-2895,-3875,-4806,-5657,-6408,-7020,-7442, -7648,-7649,-7447,-7042,-6445,-5671,-4758,-3767,-2773,-1801, -846,80,916,1571,1999,2222,2330,2444,2667,3053, 3570,4134,4681,5163,5582,5992,6457,6999,7600,8207, 8741,9157,9410,9480,9327,8899,8178,7248,6282,5486, 5002,4836,4880,4981,4984,4809,4488,4116,3786,3537, 3343,3151,2908,2589,2202,1751,1259,786,405,154, 2,-143,-394,-795,-1289,-1733,-2019,-2165,-2323,-2661, -3245,-4001,-4768,-5381,-5709,-5728,-5536,-5279,-5066,-4926, -4813,-4665,-4420,-4059,-3589,-3029,-2364,-1624,-933,-455, -330,-615,-1252,-2083,-2921,-3668,-4304,-4842,-5318,-5791, -6323,-6942,-7629,-8299,-8850,-9196,-9296,-9142,-8785,-8307, -7805,-7377,-7115,-7065,-7207,-7459,-7719,-7889,-7917,-7797, -7564,-7265,-6962,-6721,-6627,-6730,-7019,-7396,-7719,-7854, -7714,-7307,-6712,-6079,-5559,-5237,-5134,-5233,-5483,-5802, -6092,-6255,-6222,-5988,-5624,-5247,-4973,-4888,-5032,-5378, -5820,-6238,-6527,-6622,-6486,-6096,-5456,-4613,-3682,-2818, -2145,-1718,-1474,-1252,-866,-215,680,1736,2881,4034, 5082,5912,6450,6704,6731,6614,6441,6301,6242,6235, 6196,6024,5672,5171,4598,4059,3652,3410,3303,3313, 3475,3780,4149,4450,4571,4446,4062,3468,2777,2124, 1634,1383,1381,1553,1770,1911,1912,1763,1510,1247, 1089,1161,1514,2116,2848,3550,4104,4488,4717,4822, 4818,4703,4488,4279,4223,4464,5069,6041,7291,8664, 9959,10994,11673,11981,11978,11766,11441,11059,10648,10220, 9769,9248,8609,7836,6977,6148,5447,4919,4521,4176, 3818,3395,2862,2219,1497,703,-156,-1072,-2009,-2930, -3822,-4685,-5530,-6359,-7125,-7756,-8173,-8302,-8082,-7519, -6696,-5746,-4800,-3923,-3111,-2321,-1536,-776,-91,470, 884,1205,1529,1931,2416,2895,3267,3502,3679,3938, 4407,5138,6066,7051,7942,8638,9060,9177,8993,8580, 8064,7579,7198,6887,6570,6209,5808,5421,5118,4939, 4859,4779,4599,4269,3828,3394,3082,2914,2808,2617, 2231,1671,1079,605,338,233,179,68,-150,-477, -882,-1355,-1906,-2530,-3163,-3729,-4191,-4538,-4801,-5013, -5219,-5446,-5700,-5934,-6077,-6065,-5841,-5372,-4669,-3815, -2937,-2182,-1630,-1311,-1222,-1332,-1578,-1874,-2158,-2411, -2678,-3016,-3497,-4158,-5002,-5985,-6994,-7911,-8630,-9088, -9236,-9081,-8694,-8223,-7839,-7673,-7761,-8055,-8428,-8717, -8784,-8574,-8144,-7624,-7175,-6903,-6854,-7012,-7342,-7784, -8241,-8578,-8674,-8463,-7980,-7363,-6783,-6368,-6152,-6099, -6142,-6251,-6410,-6583,-6698,-6668,-6441,-6035,-5529,-5076, -4843,-4940,-5365,-6006,-6696,-7269,-7595,-7589,-7249,-6647, -5891,-5125,-4527,-4222,-4193,-4273,-4230,-3886,-3187,-2206, -1064,119,1233,2191,2951,3544,4051,4537,5018,5475, 5893,6250,6520,6664,6637,6415,6013,5484,4884,4275, 3743,3395,3312,3496,3886,4339,4699,4825,4658,4236, 3679,3143,2737,2499,2433,2492,2568,2556,2392,2084, 1698,1296,905,563,376,451,830,1468,2260,3049, 3661,4005,4084,3957,3707,3401,3100,2906,2943,3289, 3933,4803,5807,6861,7885,8832,9672,10391,10978,11401, 11632,11672,11560,11337,11007,10540,9935,9215,8442,7710, 7109,6663,6342,6058,5700,5192,4545,3834,3124,2454, 1829,1206,501,-354,-1345,-2406,-3492,-4598,-5709,-6762, -7635,-8186,-8332,-8105,-7606,-6958,-6282,-5644,-5053,-4463, -3805,-3040,-2158,-1211,-294,482,1031,1317,1383,1352, 1384,1621,2130,2867,3694,4464,5117,5702,6311,7002, 7731,8369,8765,8847,8646,8285,7922,7648,7465,7290, 7056,6743,6381,6024,5715,5449,5214,5006,4826,4643, 4406,4088,3684,3195,2663,2163,1795,1604,1562,1594, 1615,1532,1268,781,118,-595,-1238,-1734,-2083,-2322, -2528,-2799,-3211,-3794,-4519,-5289,-5958,-6395,-6537,-6387, -5995,-5444,-4825,-4203,-3630,-3160,-2795,-2498,-2236,-1983, -1733,-1476,-1221,-1014,-951,-1148,-1694,-2562,-3632,-4755, -5795,-6658,-7283,-7639,-7749,-7682,-7540,-7456,-7547,-7864, -8355,-8853,-9159,-9140,-8763,-8156,-7507,-7003,-6741,-6725, -6895,-7190,-7585,-8032,-8442,-8676,-8619,-8268,-7736,-7183, -6731,-6449,-6358,-6439,-6662,-6944,-7155,-7170,-6924,-6428, -5776,-5125,-4636,-4458,-4650,-5153,-5806,-6438,-6920,-7177, -7188,-6999,-6684,-6310,-5955,-5706,-5612,-5643,-5696,-5636, -5363,-4868,-4194,-3387,-2490,-1539,-603,218,889,1448, 1969,2539,3242,4101,5046,5950,6663,7056,7061,6709, 6109,5430,4859,4500,4367,4413,4564,4733,4866,4940, 4921,4779,4526,4191,3831,3518,3343,3355,3516,3708, 3789,3678,3355,2842,2199,1484,791,267,64,268, 837,1634,2467,3140,3521,3603,3464,3209,2934,2704, 2546,2478,2534,2752,3130,3639,4247,4922,5666,6536, 7556,8670,9757,10665,11288,11595,11643,11534,11338,11073, 10752,10373,9942,9464,8966,8485,8036,7601,7149,6663, 6146,5609,5062,4529,4017,3501,2935,2262,1409,323, -996,-2456,-3886,-5112,-6023,-6615,-6971,-7209,-7411,-7607, -7726,-7625,-7180,-6397,-5407,-4375,-3423,-2597,-1889,-1272, -743,-326,-24,194,386,628,984,1484,2119,2839, 3569,4262,4908,5520,6120,6719,7288,7768,8113,8309, 8358,8274,8077,7791,7441,7078,6770,6561,6449,6378, 6284,6131,5911,5601,5178,4650,4054,3471,3002,2722, 2640,2689,2763,2761,2609,2265,1754,1165,601,142, -170,-360,-491,-645,-912,-1381,-2093,-3005,-4015,-4986, -5760,-6222,-6347,-6177,-5827,-5438,-5115,-4894,-4754,-4632, -4444,-4131,-3671,-3054,-2299,-1483,-737,-225,-99,-440, -1200,-2191,-3164,-3960,-4544,-4957,-5281,-5586,-5913,-6293, -6739,-7236,-7768,-8291,-8757,-9083,-9189,-9044,-8672,-8153, -7613,-7192,-6978,-6990,-7231,-7675,-8233,-8739,-9008,-8924, -8505,-7897,-7320,-6949,-6868,-7045,-7383,-7754,-8035,-8107, -7896,-7404,-6718,-5993,-5405,-5063,-5006,-5190,-5508,-5849, -6149,-6391,-6558,-6643,-6664,-6640,-6588,-6529,-6497,-6540, -6674,-6841,-6921,-6819,-6478,-5922,-5223,-4462,-3736,-3148, -2710,-2340,-1915,-1350,-599,352,1476,2682,3860,4882, 5625,6003,6005,5722,5318,4948,4713,4659,4778,5006, 5245,5401,5402,5238,4943,4569,4160,3773,3510,3489, 3734,4132,4498,4681,4613,4301,3783,3126,2388,1631, 937,432,242,426,935,1600,2216,2648,2843,2824, 2682,2526,2409,2329,2257,2170,2076,2013,2021,2128, 2372,2808,3482,4402,5510,6686,7805,8788,9585,10181, 10571,10773,10839,10822,10757,10678,10591,10474,10261,9875, 9283,8553,7820,7232,6912,6842,6852,6731,6334,5641, 4746,3798,2891,2052,1218,299,-778,-2007,-3306,-4552, -5629,-6479,-7098,-7534,-7828,-7961,-7888,-7564,-6983,-6191, -5291,-4393,-3576,-2884,-2331,-1918,-1617,-1356,-1057,-673, -191,356,920,1472,2002,2516,3038,3612,4272,5021, 5819,6591,7254,7746,8019,8053,7868,7552,7241,7066, 7092,7274,7502,7626,7547,7243,6747,6134,5498,4928, 4493,4207,4038,3944,3876,3786,3608,3311,2896,2414, 1973,1673,1528,1477,1425,1322,1142,869,445,-181, -1031,-2059,-3129,-4066,-4734,-5092,-5183,-5110,-5021,-5061, -5288,-5658,-6019,-6184,-5998,-5435,-4571,-3532,-2458,-1501, -811,-488,-547,-898,-1391,-1879,-2272,-2567,-2799,-3011, -3253,-3591,-4069,-4697,-5469,-6349,-7254,-8051,-8607,-8846, -8761,-8407,-7906,-7410,-7076,-7003,-7194,-7570,-8035,-8477, -8747,-8742,-8451,-7974,-7487,-7141,-7018,-7127,-7424,-7813, -8184,-8416,-8431,-8224,-7830,-7281,-6635,-6016,-5557,-5335, -5373,-5621,-5957,-6205,-6247,-6091,-5848,-5667,-5628,-5758, -6043,-6437,-6873,-7248,-7452,-7438,-7237,-6905,-6489,-6028, -5578,-5213,-4985,-4868,-4762,-4534,-4078,-3360,-2403,-1268, -43,1199,2389,3416,4156,4531,4570,4431,4301,4311, 4524,4914,5369,5743,5941,5932,5737,5405,4972,4465, 3967,3649,3649,3982,4516,5052,5410,5480,5247,4784, 4188,3527,2866,2269,1779,1417,1202,1148,1265,1510, 1829,2168,2467,2702,2860,2894,2771,2517,2221,1977, 1821,1700,1546,1355,1240,1372,1881,2768,3914,5113, 6181,7032,7686,8223,8740,9311,9956,10607,11123,11361, 11293,11003,10596,10157,9747,9397,9106,8871,8676,8500, 8314,8078,7734,7248,6639,5954,5234,4505,3759,2958, 2040,954,-307,-1695,-3107,-4429,-5579,-6512,-7188,-7586, -7720,-7643,-7415,-7071,-6606,-6003,-5316,-4641,-4027,-3486, -3003,-2564,-2140,-1704,-1247,-798,-402,-59,289,727, 1312,2057,2916,3804,4642,5378,5992,6472,6777,6886, 6857,6823,6920,7218,7662,8105,8379,8383,8108,7631, 7079,6550,6115,5821,5661,5562,5440,5243,4953,4563, 4075,3506,2922,2456,2233,2273,2493,2778,2991,3015, 2769,2238,1462,535,-408,-1225,-1833,-2250,-2557,-2880, -3305,-3848,-4495,-5204,-5895,-6449,-6759,-6760,-6460,-5905, -5141,-4224,-3258,-2380,-1734,-1408,-1393,-1588,-1867,-2079, -2094,-1901,-1594,-1323,-1267,-1583,-2328,-3413,-4660,-5873, -6875,-7531,-7792,-7702,-7375,-7010,-6826,-6914,-7211,-7601, -7984,-8317,-8575,-8709,-8656,-8393,-7974,-7509,-7143,-6996, -7106,-7443,-7916,-8397,-8741,-8835,-8647,-8236,-7718,-7223, -6811,-6494,-6292,-6252,-6366,-6508,-6515,-6320,-5957,-5522, -5148,-4954,-5020,-5359,-5915,-6566,-7145,-7522,-7633,-7494, -7169,-6740,-6304,-5975,-5855,-5981,-6275,-6548,-6611,-6342, -5727,-4840,-3775,-2616,-1436,-316,668,1464,2047,2438, 2676,2857,3102,3514,4128,4861,5538,5992,6151,6042, 5723,5254,4730,4266,3993,4018,4332,4806,5264,5563, 5657,5597,5435,5183,4839,4392,3851,3268,2721,2284, 1984,1816,1734,1706,1745,1893,2194,2653,3179,3585, 3681,3395,2810,2112,1487,1066,896,931,1109,1373, 1672,2001,2413,2987,3733,4608,5544,6491,7412,8263, 8997,9603,10097,10479,10741,10867,10840,10668,10402,10118, 9895,9764,9693,9615,9481,9255,8937,8550,8122,7678, 7250,6833,6362,5745,4919,3887,2680,1330,-134,-1634, -3051,-4269,-5228,-5924,-6421,-6795,-7085,-7275,-7301,-7103, -6677,-6089,-5405,-4686,-4006,-3432,-2990,-2657,-2419,-2249, -2092,-1863,-1468,-814,85,1083,2001,2728,3263,3678, 4060,4455,4867,5308,5788,6299,6835,7368,7830,8146, 8286,8251,8067,7764,7409,7092,6905,6882,6971,7057, 7002,6695,6082,5204,4211,3336,2807,2721,3023,3523, 3988,4225,4161,3832,3296,2636,1952,1343,883,576, 337,50,-366,-924,-1621,-2476,-3488,-4578,-5595,-6383, -6832,-6906,-6629,-6065,-5309,-4502,-3806,-3328,-3108,-3089, -3130,-3053,-2756,-2241,-1595,-939,-406,-143,-260,-779, -1636,-2682,-3760,-4746,-5547,-6071,-6254,-6146,-5932,-5832, -6003,-6463,-7110,-7783,-8334,-8666,-8736,-8557,-8202,-7779, -7408,-7182,-7158,-7327,-7666,-8098,-8488,-8699,-8681,-8486, -8216,-7959,-7736,-7536,-7365,-7264,-7268,-7323,-7313,-7155, -6817,-6319,-5731,-5184,-4830,-4778,-5035,-5527,-6128,-6687, -7062,-7193,-7118,-6907,-6627,-6338,-6142,-6152,-6414,-6871, -7392,-7802,-7932,-7679,-7054,-6135,-5036,-3902,-2873,-2039, -1413,-958,-592,-211,289,967,1800,2706,3585,4315, 4803,5052,5156,5177,5121,4950,4649,4301,4066,4093, 4401,4889,5389,5730,5817,5672,5402,5147,5009,4945, 4807,4464,3893,3169,2422,1797,1402,1316,1546,2026, 2652,3266,3682,3786,3591,3200,2730,2262,1846,1501, 1226,1019,892,848,878,971,1142,1429,1890,2564, 3427,4425,5482,6497,7372,8061,8584,9034,9476,9886, 10203,10386,10437,10384,10274,10136,9986,9837,9707,9591, 9478,9369,9263,9133,8943,8664,8272,7741,7057,6223, 5228,4053,2709,1267,-162,-1461,-2575,-3546,-4471,-5398, -6298,-7071,-7576,-7719,-7475,-6912,-6168,-5426,-4838,-4468, -4307,-4288,-4298,-4209,-3929,-3425,-2713,-1852,-948,-128, 510,954,1286,1609,1973,2385,2879,3517,4330,5249, 6130,6823,7228,7331,7212,7011,6880,6932,7181,7573, 7999,8301,8357,8116,7615,6927,6134,5309,4543,3968, 3687,3712,3928,4184,4372,4434,4334,4039,3548,2947, 2389,2016,1883,1949,2071,2085,1835,1212,184,-1193, -2737,-4178,-5254,-5838,-5986,-5861,-5634,-5417,-5269,-5191, -5145,-5109,-5041,-4889,-4603,-4153,-3509,-2655,-1686,-823, -275,-122,-327,-819,-1522,-2317,-3064,-3673,-4085,-4285, -4332,-4371,-4547,-4951,-5563,-6283,-6988,-7568,-7963,-8145, -8125,-7959,-7713,-7459,-7287,-7283,-7489,-7883,-8358,-8721, -8823,-8644,-8289,-7928,-7701,-7662,-7796,-8046,-8317,-8496, -8503,-8309,-7909,-7350,-6726,-6147,-5690,-5400,-5290,-5362, -5596,-5945,-6317,-6603,-6720,-6666,-6472,-6178,-5868,-5686, -5778,-6189,-6840,-7583,-8236,-8613,-8593,-8159,-7431,-6607, -5860,-5244,-4710,-4194,-3673,-3159,-2682,-2203,-1609,-802, 227,1382,2472,3301,3784,3962,3971,3962,4018,4140, 4288,4425,4507,4534,4553,4619,4770,5002,5300,5638, 5975,6201,6196,5918,5409,4757,4083,3481,2970,2525, 2153,1914,1906,2184,2680,3239,3685,3902,3863,3638, 3316,2956,2580,2213,1861,1525,1213,928,682,496, 400,443,682,1152,1871,2787,3771,4670,5413,6041, 6642,7297,8024,8758,9387,9843,10109,10203,10171,10050, 9881,9733,9680,9727,9835,9970,10127,10270,10317,10182, 9844,9349,8750,8091,7390,6633,5770,4744,3552,2219, 771,-754,-2290,-3720,-4896,-5729,-6239,-6478,-6514,-6401, -6187,-5926,-5683,-5508,-5412,-5373,-5356,-5286,-5036,-4496, -3659,-2663,-1740,-1089,-777,-706,-677,-496,-57,669, 1658,2794,3895,4777,5334,5558,5551,5489,5550,5823, 6304,6935,7634,8279,8728,8919,8884,8660,8251,7652, 6919,6184,5581,5201,5077,5150,5303,5394,5293,4943, 4382,3757,3259,3033,3104,3395,3755,4040,4161,4056, 3644,2855,1703,314,-1111,-2358,-3279,-3840,-4086,-4123, -4147,-4326,-4703,-5224,-5778,-6206,-6353,-6140,-5557,-4648, -3535,-2418,-1523,-981,-782,-812,-951,-1139,-1364,-1629, -1916,-2162,-2313,-2390,-2490,-2738,-3214,-3908,-4723,-5523, -6187,-6635,-6839,-6842,-6745,-6656,-6653,-6789,-7088,-7518, -7979,-8355,-8532,-8457,-8166,-7778,-7436,-7255,-7295,-7548, -7958,-8422,-8820,-9031,-8976,-8629,-8051,-7343,-6621,-6011, -5622,-5535,-5744,-6136,-6515,-6683,-6563,-6216,-5784,-5413, -5191,-5147,-5253,-5459,-5749,-6168,-6742,-7409,-8035,-8457, -8527,-8204,-7615,-6974,-6465,-6144,-5948,-5780,-5567,-5245, -4735,-3999,-3043,-1921,-798,149,844,1343,1771,2237, 2771,3311,3744,3986,4031,3967,3895,3868,3909,4058, 4353,4783,5308,5881,6405,6739,6782,6491,5935,5262, 4615,4057,3585,3171,2805,2527,2420,2521,2784,3115, 3429,3685,3883,4018,4068,3983,3706,3238,2657,2067, 1532,1085,744,515,374,288,273,389,687,1196, 1890,2670,3443,4177,4913,5678,6470,7262,8037,8746, 9301,9624,9681,9523,9289,9145,9203,9478,9895,10336, 10679,10819,10724,10452,10132,9898,9818,9820,9732,9397, 8746,7797,6605,5226,3683,2028,374,-1153,-2460,-3486, -4199,-4640,-4928,-5192,-5507,-5890,-6298,-6628,-6776,-6687, -6367,-5856,-5236,-4603,-4060,-3673,-3461,-3363,-3250,-2992, -2533,-1892,-1118,-253,640,1488,2235,2854,3320,3602, 3701,3706,3798,4166,4909,5970,7142,8135,8740,8891, 8658,8184,7627,7147,6857,6782,6836,6887,6819,6599, 6249,5766,5151,4463,3832,3395,3226,3335,3668,4126, 4603,4991,5179,5053,4518,3593,2439,1277,283,-459, -979,-1379,-1773,-2253,-2890,-3702,-4634,-5561,-6346,-6874, -7075,-6889,-6301,-5410,-4381,-3407,-2651,-2202,-2059,-2109, -2204,-2221,-2104,-1856,-1520,-1192,-1010,-1107,-1524,-2208, -3037,-3868,-4562,-5042,-5289,-5361,-5372,-5455,-5674,-6026, -6460,-6922,-7388,-7836,-8232,-8513,-8598,-8441,-8079,-7634, -7282,-7192,-7462,-8051,-8796,-9449,-9779,-9694,-9274,-8691, -8093,-7560,-7122,-6834,-6735,-6842,-7109,-7426,-7616,-7539, -7163,-6566,-5895,-5305,-4902,-4764,-4930,-5371,-5995,-6675, -7274,-7674,-7823,-7781,-7676,-7630,-7693,-7830,-7939,-7915, -7715,-7363,-6938,-6511,-6084,-5577,-4904,-4080,-3191,-2329, -1538,-788,-33,731,1467,2096,2531,2746,2795,2776, 2752,2752,2801,2955,3298,3888,4687,5546,6271,6704, 6775,6496,5982,5402,4901,4518,4189,3818,3379,2932, 2565,2350,2327,2513,2887,3373,3849,4211,4390,4360, 4124,3728,3228,2691,2165,1689,1278,922,594,296, 61,-57,-39,81,297,667,1246,2043,3011,4042, 4998,5785,6407,6898,7298,7652,8007,8341,8622,8831, 8983,9131,9325,9571,9824,10009,10082,10079,10093,10185, 10394,10702,11001,11132,10929,10287,9197,7726,6022,4293, 2754,1521,591,-142,-839,-1649,-2685,-3923,-5172,-6166, -6728,-6859,-6692,-6388,-6060,-5759,-5505,-5305,-5170,-5107, -5109,-5116,-5036,-4769,-4233,-3411,-2377,-1277,-298,416, 825,983,1017,1062,1215,1550,2161,3086,4223,5355, 6297,6957,7318,7422,7355,7205,7062,7012,7124,7404, 7778,8098,8195,7932,7257,6258,5135,4136,3464,3232, 3440,3956,4564,5080,5392,5457,5288,4929,4451,3942, 3445,2954,2460,1986,1538,1070,496,-258,-1236,-2425, -3723,-4956,-5963,-6626,-6865,-6684,-6154,-5428,-4705,-4172, -3905,-3841,-3821,-3684,-3349,-2812,-2150,-1496,-1002,-755, -767,-984,-1373,-1917,-2560,-3215,-3756,-4035,-4010,-3802, -3652,-3783,-4281,-5070,-5964,-6752,-7298,-7593,-7695,-7656, -7514,-7327,-7172,-7131,-7253,-7533,-7942,-8423,-8889,-9256, -9444,-9395,-9101,-8600,-7982,-7394,-6995,-6919,-7196,-7701, -8203,-8467,-8331,-7790,-6997,-6174,-5528,-5159,-5032,-5078, -5248,-5512,-5839,-6176,-6446,-6605,-6693,-6800,-7001,-7330, -7728,-8069,-8260,-8257,-8081,-7820,-7568,-7349,-7110,-6799, -6359,-5767,-5061,-4291,-3448,-2501,-1468,-440,467,1154, 1561,1702,1672,1583,1546,1635,1875,2254,2751,3368, 4086,4846,5562,6140,6497,6613,6526,6295,5931,5456, 4918,4372,3863,3451,3152,2926,2770,2734,2864,3177, 3642,4171,4641,4897,4845,4507,4008,3503,3105,2839, 2637,2371,1934,1327,643,-4,-489,-698,-567,-121, 533,1255,1968,2675,3367,4023,4621,5164,5705,6295, 6923,7512,8007,8395,8689,8901,9035,9067,8988,8864, 8841,9089,9682,10537,11442,12174,12570,12538,12094,11343, 10447,9532,8626,7667,6608,5474,4345,3284,2239,1082, -270,-1778,-3280,-4565,-5454,-5875,-5878,-5596,-5200,-4863, -4742,-4942,-5460,-6130,-6668,-6825,-6488,-5706,-4657,-3571, -2648,-1982,-1551,-1274,-1082,-924,-775,-578,-230,373, 1238,2285,3382,4373,5121,5562,5734,5732,5708,5825, 6204,6862,7685,8474,9023,9221,9046,8512,7683,6691, 5716,4927,4441,4293,4441,4785,5210,5565,5724,5624, 5312,4901,4529,4283,4186,4231,4357,4452,4373,3959, 3098,1824,324,-1139,-2366,-3309,-4025,-4607,-5085,-5415, -5540,-5475,-5309,-5162,-5101,-5079,-4948,-4566,-3902,-3044, -2146,-1408,-959,-823,-945,-1253,-1667,-2078,-2395,-2545, -2501,-2312,-2112,-2079,-2327,-2854,-3575,-4355,-5078,-5689, -6169,-6495,-6634,-6577,-6377,-6159,-6095,-6324,-6872,-7625, -8368,-8905,-9152,-9127,-8882,-8514,-8137,-7823,-7610,-7515, -7559,-7749,-8026,-8293,-8436,-8365,-8073,-7629,-7135,-6673, -6285,-5978,-5737,-5540,-5398,-5344,-5401,-5533,-5681,-5820, -5950,-6118,-6379,-6758,-7228,-7693,-8013,-8097,-7976,-7795, -7689,-7694,-7776,-7857,-7828,-7565,-6997,-6125,-5028,-3826, -2647,-1609,-812,-292,6,189,348,533,731,885, 981,1099,1383,1932,2755,3733,4690,5476,6047,6416, 6602,6601,6422,6096,5637,5073,4448,3856,3412,3186, 3148,3202,3274,3362,3512,3743,4034,4337,4596,4768, 4854,4851,4726,4435,3954,3338,2675,2018,1367,711, 77,-428,-665,-566,-176,414,1084,1685,2110,2344, 2503,2801,3444,4494,5797,7042,7912,8251,8141,7805, 7471,7300,7357,7641,8138,8808,9588,10383,11111,11706, 12108,12292,12279,12091,11749,11279,10728,10148,9569,8941, 8152,7067,5614,3838,1921,111,-1365,-2403,-3045,-3413, -3631,-3794,-3975,-4267,-4731,-5354,-6058,-6714,-7169,-7295, -7014,-6333,-5372,-4348,-3501,-2990,-2839,-2931,-3098,-3156, -2946,-2382,-1495,-424,633,1499,2097,2494,2780,3022, 3268,3581,4043,4717,5582,6525,7423,8161,8677,8945, 8942,8637,8035,7205,6311,5593,5261,5352,5693,6013, 6092,5848,5366,4844,4464,4298,4348,4563,4901,5322, 5754,6046,5988,5449,4457,3187,1859,663,-304,-1057, -1691,-2318,-3007,-3759,-4531,-5267,-5924,-6415,-6597,-6369, -5740,-4866,-3956,-3182,-2639,-2334,-2179,-2075,-1994,-1971, -2033,-2150,-2225,-2125,-1820,-1434,-1170,-1187,-1548,-2222, -3087,-3964,-4695,-5187,-5401,-5342,-5109,-4857,-4775,-4982, -5502,-6279,-7177,-8019,-8633,-8895,-8786,-8448,-8092,-7874, -7839,-7930,-8065,-8186,-8268,-8308,-8334,-8366,-8387,-8350, -8209,-7967,-7692,-7437,-7214,-6996,-6724,-6371,-5953,-5551, -5265,-5170,-5249,-5428,-5657,-5943,-6298,-6649,-6887,-6978, -7006,-7088,-7310,-7664,-8064,-8424,-8703,-8860,-8837,-8604, -8184,-7586,-6781,-5763,-4598,-3414,-2385,-1651,-1248,-1080, -971,-793,-557,-338,-193,-83,105,477,1071,1864, 2831,3905,4983,5898,6480,6646,6441,6002,5496,5061, 4757,4558,4386,4170,3881,3524,3151,2886,2848,3066, 3463,3912,4308,4640,4964,5294,5545,5579,5286,4640, 3727,2735,1870,1239,857,665,554,432,254,48, -106,-148,-30,291,855,1672,2675,3721,4688,5517, 6178,6639,6854,6804,6553,6253,6112,6317,6925,7834, 8854,9784,10465,10812,10882,10866,10974,11324,11886,12495, 12941,13046,12718,11958,10810,9365,7738,6061,4458,3014, 1782,791,31,-554,-1049,-1578,-2247,-3116,-4136,-5165, -6042,-6629,-6863,-6746,-6344,-5775,-5189,-4742,-4541,-4594, -4793,-4938,-4860,-4482,-3812,-2960,-2088,-1305,-607,33, 579,941,1072,1053,1095,1438,2204,3328,4628,5871, 6866,7523,7858,7953,7908,7791,7608,7388,7182,7044, 7003,7013,6966,6750,6314,5701,5059,4543,4239,4179, 4373,4803,5416,6097,6639,6825,6553,5889,5038,4236, 3613,3138,2665,2043,1224,237,-874,-2070,-3305,-4478, -5470,-6168,-6486,-6375,-5868,-5094,-4258,-3575,-3175,-3046, -3087,-3173,-3207,-3135,-2919,-2544,-2029,-1454,-937,-608, -589,-930,-1575,-2355,-3074,-3593,-3856,-3866,-3697,-3496, -3421,-3558,-3896,-4385,-4997,-5725,-6532,-7293,-7843,-8086, -8060,-7883,-7695,-7614,-7677,-7856,-8099,-8338,-8511,-8558, -8441,-8220,-8004,-7905,-7963,-8144,-8359,-8488,-8411,-8051, -7421,-6653,-5981,-5586,-5507,-5622,-5755,-5797,-5755,-5709, -5736,-5845,-5969,-6069,-6177,-6379,-6715,-7158,-7652,-8145, -8627,-9069,-9377,-9449,-9240,-8755,-8022,-7113,-6112,-5094, -4135,-3303,-2618,-2079,-1699,-1491,-1451,-1549,-1704,-1754, -1533,-984,-186,717,1617,2483,3351,4230,5051,5704, 6089,6156,5934,5548,5176,4955,4897,4873,4707,4309, 3719,3064,2514,2251,2423,3051,3997,5005,5801,6170, 6059,5611,5056,4577,4234,3989,3755,3442,2981,2359, 1642,940,351,-102,-446,-696,-807,-679,-226,560, 1603,2745,3776,4526,4930,5048,5013,4954,5006,5258, 5722,6299,6875,7379,7811,8182,8485,8721,8941,9257, 9802,10630,11678,12808,13822,14466,14529,13948,12826,11371, 9786,8232,6871,5827,5111,4601,4073,3299,2158,689, -891,-2300,-3365,-4089,-4578,-4941,-5221,-5401,-5451,-5391, -5296,-5264,-5375,-5637,-5951,-6138,-6020,-5512,-4677,-3698, -2767,-2005,-1462,-1149,-1041,-1087,-1175,-1135,-798,-72, 996,2245,3470,4515,5294,5804,6098,6257,6355,6497, 6793,7268,7829,8308,8531,8381,7835,7013,6116,5353, 4865,4700,4778,4966,5166,5366,5589,5847,6093,6244, 6218,6028,5774,5568,5433,5296,5028,4542,3790,2770, 1497,32,-1512,-2977,-4221,-5130,-5612,-5635,-5251,-4636, -4061,-3768,-3847,-4180,-4516,-4613,-4387,-3877,-3172,-2387, -1663,-1122,-853,-895,-1184,-1595,-2014,-2377,-2640,-2781, -2788,-2693,-2558,-2459,-2466,-2629,-2967,-3468,-4123,-4889, -5656,-6257,-6595,-6716,-6786,-6970,-7300,-7673,-7967,-8120, -8139,-8064,-7969,-7915,-7927,-7998,-8114,-8260,-8415,-8543, -8604,-8576,-8458,-8231,-7856,-7355,-6833,-6412,-6161,-6064, -6057,-6078,-6087,-6037,-5886,-5621,-5316,-5095,-5083,-5346, -5862,-6512,-7147,-7674,-8088,-8472,-8914,-9404,-9811,-9951, -9650,-8835,-7635,-6333,-5190,-4336,-3755,-3360,-3077,-2885, -2774,-2710,-2646,-2559,-2424,-2191,-1760,-1064,-153,859, 1839,2692,3369,3895,4361,4859,5401,5898,6209,6219, 5897,5289,4522,3784,3231,2909,2787,2806,2934,3206, 3645,4189,4728,5169,5439,5497,5351,5093,4861,4763, 4805,4866,4777,4366,3537,2344,984,-247,-1089,-1406, -1246,-767,-148,499,1119,1678,2133,2455,2672,2891, 3212,3692,4302,4932,5462,5854,6154,6404,6555,6546, 6409,6286,6392,6924,7962,9420,11068,12606,13757,14325, 14289,13805,13071,12217,11336,10507,9742,9047,8416,7785, 7024,5991,4600,2936,1211,-337,-1551,-2404,-2969,-3324, -3542,-3716,-3961,-4368,-4947,-5616,-6239,-6707,-6939,-6895, -6568,-6000,-5263,-4467,-3733,-3182,-2886,-2832,-2942,-3096, -3146,-2918,-2295,-1282,-61,1087,1944,2480,2808,3079, 3409,3891,4563,5398,6320,7196,7904,8359,8496,8280, 7734,6979,6222,5669,5416,5428,5559,5630,5560,5416, 5311,5292,5322,5348,5382,5489,5747,6152,6614,6980, 7072,6746,5952,4734,3218,1596,76,-1202,-2195,-2926, -3429,-3744,-3944,-4135,-4414,-4784,-5154,-5392,-5410,-5196, -4795,-4258,-3616,-2894,-2174,-1610,-1371,-1512,-1939,-2441, -2792,-2876,-2699,-2348,-1955,-1671,-1616,-1811,-2175,-2573, -2909,-3153,-3341,-3568,-3936,-4468,-5116,-5791,-6415,-6924, -7288,-7505,-7601,-7632,-7667,-7728,-7801,-7880,-7977,-8100, -8238,-8385,-8555,-8748,-8899,-8906,-8696,-8322,-7928,-7649, -7512,-7450,-7360,-7174,-6904,-6617,-6387,-6238,-6119,-5939, -5655,-5298,-4962,-4769,-4816,-5157,-5789,-6638,-7569,-8431, -9130,-9642,-9957,-10072,-9972,-9628,-9004,-8100,-6992,-5836, -4830,-4154,-3893,-3981,-4221,-4370,-4248,-3820,-3202,-2578, -2124,-1888,-1765,-1551,-1070,-255,846,2111,3368,4454, 5249,5699,5826,5726,5509,5226,4856,4373,3822,3339, 3069,3071,3283,3562,3770,3867,3922,4019,4191,4418, 4694,5057,5528,6057,6496,6646,6358,5605,4479,3173, 1908,866,146,-235,-323,-186,104,468,810,1012, 1017,878,769,946,1596,2699,3978,5081,5768,5967, 5762,5335,4876,4531,4401,4558,5062,5938,7117,8439, 9753,10953,11982,12768,13244,13401,13302,13055,12751,12450, 12164,11872,11497,10918,10024,8756,7177,5468,3829,2403, 1257,401,-215,-658,-1001,-1387,-1982,-2854,-3938,-5074, -6045,-6677,-6866,-6606,-6007,-5292,-4718,-4436,-4422,-4529, -4597,-4549,-4383,-4108,-3719,-3193,-2530,-1780,-1069,-514, -157,97,423,939,1649,2503,3442,4430,5407,6296, 7035,7589,7911,7934,7647,7166,6700,6420,6395,6556, 6726,6722,6479,6038,5487,4925,4466,4252,4428,5055, 6035,7119,7993,8419,8303,7732,6877,5891,4863,3824, 2797,1825,938,120,-650,-1390,-2134,-2945,-3814,-4643, -5301,-5674,-5704,-5392,-4813,-4083,-3353,-2771,-2445,-2395, -2524,-2693,-2798,-2788,-2649,-2402,-2118,-1893,-1771,-1744, -1783,-1852,-1913,-1961,-2013,-2095,-2224,-2429,-2710,-3082, -3596,-4293,-5121,-5944,-6598,-6965,-7031,-6906,-6764,-6757, -6965,-7360,-7823,-8225,-8468,-8528,-8458,-8365,-8346,-8417, -8519,-8562,-8471,-8239,-7915,-7602,-7401,-7378,-7498,-7636, -7650,-7437,-6971,-6314,-5606,-5012,-4644,-4499,-4501,-4587, -4804,-5264,-6039,-7095,-8286,-9373,-10119,-10417,-10281,-9784, -9052,-8266,-7579,-7059,-6661,-6288,-5848,-5334,-4823,-4415, -4157,-4006,-3886,-3740,-3579,-3425,-3296,-3138,-2823,-2206, -1238,18,1430,2834,4042,4890,5297,5284,4979,4568, 4212,4000,3970,4090,4264,4350,4204,3789,3234,2757, 2547,2689,3127,3725,4369,5026,5729,6453,7056,7323, 7090,6343,5247,4059,3013,2235,1761,1541,1458,1368, 1135,712,180,-328,-681,-775,-512,152,1175,2410, 3599,4488,4943,4992,4747,4306,3764,3290,3110,3341, 3960,4839,5847,6861,7821,8706,9521,10287,11018,11709, 12339,12877,13281,13541,13685,13718,13572,13125,12240,10908, 9304,7690,6273,5160,4359,3761,3215,2569,1732,689, -524,-1836,-3115,-4196,-4961,-5363,-5422,-5230,-4956,-4815, -4926,-5263,-5664,-5917,-5881,-5574,-5111,-4590,-4073,-3592, -3175,-2838,-2600,-2443,-2298,-2059,-1632,-994,-178,764, 1783,2841,3880,4809,5534,6007,6241,6307,6342,6493, 6838,7310,7743,7943,7794,7310,6604,5817,5077,4485, 4128,4090,4420,5090,5988,6954,7783,8290,8377,8059, 7446,6697,5965,5355,4896,4531,4102,3436,2455,1187, -273,-1795,-3162,-4165,-4703,-4825,-4697,-4509,-4348,-4201, -4020,-3773,-3512,-3310,-3191,-3134,-3103,-3040,-2900,-2685, -2439,-2225,-2088,-2039,-2052,-2079,-2045,-1889,-1609,-1302, -1130,-1243,-1656,-2261,-2916,-3533,-4090,-4602,-5068,-5478, -5836,-6141,-6379,-6549,-6656,-6739,-6906,-7263,-7805,-8378, -8783,-8884,-8694,-8356,-8041,-7862,-7845,-7946,-8077,-8151, -8115,-7987,-7852,-7829,-7961,-8151,-8175,-7828,-7035,-5912, -4728,-3811,-3399,-3551,-4144,-4998,-5925,-6776,-7482,-8049, -8514,-8909,-9226,-9411,-9412,-9222,-8878,-8422,-7891,-7317, -6728,-6150,-5614,-5171,-4847,-4617,-4457,-4385,-4456,-4680, -4934,-5003,-4693,-3926,-2771,-1420,-85,1077,2012,2731, 3249,3579,3767,3881,3995,4168,4431,4742,4993,5025, 4705,4011,3083,2188,1634,1590,2063,2936,4018,5099, 5993,6569,6756,6586,6196,5755,5387,5119,4897,4655, 4333,3888,3278,2507,1624,725,-100,-773,-1196,-1261, -916,-190,797,1859,2792,3447,3784,3856,3732,3453, 3077,2707,2499,2601,3067,3808,4655,5448,6076,6509, 6844,7278,7997,9063,10385,11766,13014,13977,14549,14689, 14426,13805,12900,11838,10791,9895,9187,8611,8013,7253, 6267,5085,3760,2376,1040,-168,-1190,-2003,-2630,-3103, -3470,-3808,-4191,-4647,-5140,-5599,-5955,-6161,-6196,-6040, -5685,-5165,-4557,-3989,-3627,-3583,-3825,-4173,-4376,-4227, -3650,-2709,-1555,-386,619,1368,1894,2301,2706,3195, 3808,4529,5316,6132,6916,7578,8013,8127,7896,7369, 6652,5858,5097,4465,4079,4075,4500,5247,6069,6713, 7052,7124,7064,6995,6979,7022,7086,7119,7069,6848, 6368,5561,4441,3095,1637,191,-1132,-2247,-3078,-3573, -3782,-3850,-3911,-4037,-4211,-4353,-4373,-4219,-3909,-3506, -3111,-2851,-2828,-3034,-3317,-3465,-3340,-2959,-2470,-2054, -1810,-1713,-1665,-1594,-1477,-1342,-1253,-1315,-1636,-2236, -3024,-3828,-4466,-4832,-4950,-4960,-5040,-5312,-5776,-6323, -6819,-7207,-7517,-7814,-8148,-8491,-8747,-8817,-8652,-8295, -7858,-7496,-7360,-7513,-7917,-8448,-8960,-9317,-9436,-9297, -8896,-8226,-7331,-6342,-5438,-4764,-4381,-4260,-4343,-4608, -5066,-5695,-6401,-7068,-7619,-8062,-8453,-8838,-9224,-9579, -9799,-9752,-9375,-8687,-7759,-6762,-5918,-5401,-5260,-5392, -5612,-5807,-5951,-6033,-6026,-5868,-5493,-4881,-4078,-3153, -2174,-1223,-385,287,818,1315,1881,2562,3353,4180, 4909,5372,5438,5062,4295,3315,2371,1707,1481,1698, 2240,2969,3760,4479,4995,5251,5277,5188,5138,5264, 5597,6062,6481,6657,6441,5793,4782,3582,2392,1344, 451,-289,-839,-1098,-962,-415,401,1262,1989,2485, 2726,2748,2622,2427,2252,2193,2332,2671,3118,3541, 3843,3971,3951,3894,3986,4427,5357,6766,8497,10295, 11882,13050,13712,13902,13732,13370,12992,12726,12587,12474, 12223,11702,10869,9791,8575,7306,6022,4754,3539,2411, 1425,607,-74,-695,-1325,-2022,-2826,-3724,-4646,-5437, -5939,-6081,-5904,-5536,-5129,-4779,-4536,-4464,-4609,-4936, -5306,-5528,-5444,-4996,-4272,-3438,-2622,-1869,-1194,-633, -224,46,314,755,1481,2522,3822,5241,6555,7531, 7998,7935,7471,6811,6150,5645,5368,5286,5306,5362, 5427,5499,5564,5607,5669,5832,6123,6493,6875,7245, 7616,7992,8297,8359,8021,7247,6140,4892,3667,2563, 1605,731,-162,-1117,-2060,-2878,-3487,-3863,-4010,-3964, -3813,-3667,-3597,-3586,-3561,-3480,-3357,-3233,-3167,-3218, -3361,-3481,-3421,-3075,-2475,-1805,-1262,-957,-901,-1029, -1230,-1387,-1441,-1466,-1641,-2079,-2716,-3362,-3860,-4140, -4233,-4266,-4367,-4618,-5072,-5765,-6651,-7581,-8341,-8742, -8686,-8246,-7637,-7119,-6841,-6849,-7114,-7554,-8070,-8557, -8944,-9212,-9364,-9375,-9179,-8716,-8008,-7165,-6336,-5640, -5144,-4857,-4720,-4669,-4677,-4756,-4942,-5288,-5831,-6560, -7419,-8301,-9071,-9620,-9887,-9850,-9509,-8869,-8009,-7100, -6337,-5854,-5707,-5871,-6248,-6692,-7020,-7069,-6770,-6194, -5499,-4854,-4372,-4075,-3912,-3767,-3467,-2859,-1905,-682, 645,1918,3042,3977,4653,4964,4835,4309,3564,2864, 2428,2322,2464,2707,2939,3124,3286,3446,3599,3744, 3915,4155,4492,4969,5609,6367,7112,7647,7794,7453, 6625,5414,4004,2611,1417,531,11,-123,77,468, 867,1155,1318,1404,1485,1603,1759,1961,2263,2673, 3106,3417,3471,3227,2785,2324,2014,1990,2325,3019, 4026,5270,6646,8023,9297,10401,11323,12051,12570,12899, 13114,13321,13589,13862,13967,13719,13069,12099,10913,9611, 8298,7081,6047,5253,4658,4104,3369,2338,1035,-374, -1680,-2745,-3544,-4082,-4365,-4459,-4475,-4489,-4536,-4627, -4772,-4975,-5260,-5610,-5922,-6039,-5844,-5340,-4628,-3865, -3209,-2773,-2591,-2611,-2689,-2642,-2292,-1526,-345,1108, 2606,3953,5049,5856,6356,6543,6466,6232,5976,5819, 5829,5983,6188,6297,6169,5764,5202,4682,4400,4491, 4995,5812,6737,7535,8032,8216,8195,8116,8053,7955, 7688,7156,6330,5248,4018,2795,1696,784,25,-702, -1517,-2413,-3231,-3766,-3898,-3682,-3334,-3098,-3084,-3239, -3465,-3710,-3935,-4079,-4079,-3917,-3650,-3339,-2998,-2631, -2248,-1847,-1462,-1151,-966,-941,-1098,-1425,-1862,-2286, -2551,-2609,-2522,-2435,-2489,-2767,-3259,-3898,-4627,-5426, -6249,-6991,-7539,-7843,-7897,-7726,-7379,-6964,-6657,-6608, -6875,-7405,-8059,-8659,-9084,-9304,-9341,-9251,-9089,-8899, -8680,-8384,-7960,-7399,-6722,-6006,-5358,-4853,-4491,-4260, -4213,-4428,-4938,-5716,-6669,-7691,-8668,-9461,-9913,-9902, -9434,-8674,-7876,-7239,-6869,-6765,-6879,-7138,-7439,-7643, -7627,-7326,-6750,-6044,-5446,-5163,-5254,-5642,-6105,-6353, -6124,-5304,-3944,-2281,-641,734,1767,2486,2941,3177, 3227,3150,3027,2929,2909,2970,3043,3066,3052,3031, 3001,2922,2759,2562,2472,2638,3137,3955,5001,6116, 7143,7924,8304,8170,7504,6415,5102,3815,2784,2120, 1794,1703,1669,1512,1150,652,207,45,280,843, 1560,2259,2831,3219,3380,3261,2873,2341,1842,1502, 1382,1469,1703,2056,2592,3383,4391,5484,6534,7490, 8389,9277,10189,11151,12164,13151,13990,14531,14660,14363, 13739,12945,12103,11284,10528,9854,9231,8607,7921,7076, 5983,4648,3192,1751,423,-719,-1597,-2157,-2414,-2488, -2569,-2821,-3322,-4041,-4834,-5520,-5953,-6079,-5927,-5588, -5168,-4754,-4415,-4191,-4105,-4161,-4301,-4419,-4428,-4267, -3844,-3082,-1950,-529,953,2233,3159,3739,4092,4393, 4769,5270,5855,6417,6807,6906,6686,6232,5711,5295, 5030,4854,4708,4627,4704,5050,5674,6456,7224,7855, 8274,8453,8435,8306,8146,7979,7749,7350,6678,5699, 4501,3232,2010,906,-38,-797,-1374,-1804,-2149,-2474, -2780,-2996,-3070,-3042,-3022,-3117,-3386,-3801,-4250,-4587, -4670,-4399,-3781,-2955,-2144,-1547,-1250,-1233,-1398,-1621, -1809,-1906,-1886,-1736,-1484,-1236,-1097,-1091,-1223,-1531, -2054,-2784,-3653,-4542,-5318,-5904,-6297,-6522,-6608,-6582, -6495,-6416,-6424,-6558,-6803,-7107,-7436,-7781,-8140,-8479, -8733,-8856,-8879,-8897,-8975,-9057,-8999,-8671,-8032,-7139, -6095,-5049,-4189,-3656,-3506,-3759,-4386,-5290,-6309,-7265, -8023,-8511,-8677,-8508,-8104,-7677,-7426,-7443,-7671,-7941, -8080,-8018,-7770,-7378,-6912,-6453,-6079,-5881,-5918,-6178, -6582,-6994,-7273,-7310,-7021,-6362,-5341,-4030,-2592,-1227, -88,748,1293,1609,1796,1961,2204,2555,2969,3353, 3616,3708,3621,3376,3002,2525,1983,1495,1280,1549, 2338,3486,4722,5820,6676,7279,7608,7616,7321,6825, 6264,5729,5244,4772,4231,3554,2747,1904,1145,576, 258,226,469,926,1510,2144,2769,3264,3463,3263, 2730,2076,1534,1252,1243,1435,1717,2009,2258,2446, 2621,2906,3409,4179,5245,6587,8113,9668,11068,12172, 12967,13500,13804,13886,13752,13452,13084,12761,12533,12345, 12104,11675,10949,9874,8488,6914,5303,3818,2607,1744, 1189,805,432,-33,-663,-1470,-2426,-3458,-4421,-5164, -5600,-5695,-5472,-5024,-4484,-4043,-3912,-4203,-4844,-5584, -6098,-6157,-5756,-5061,-4280,-3554,-2915,-2324,-1702,-959, -31,1030,2089,3025,3790,4420,4993,5553,6064,6447, 6632,6569,6252,5745,5171,4668,4378,4369,4610,5008, 5474,5925,6335,6724,7127,7562,8011,8446,8815,9008, 8928,8555,7948,7206,6408,5559,4609,3541,2424,1335, 351,-456,-1014,-1310,-1412,-1459,-1597,-1899,-2377,-2988, -3638,-4224,-4655,-4877,-4836,-4509,-3932,-3233,-2590,-2153, -1954,-1954,-2111,-2377,-2622,-2664,-2389,-1829,-1142,-538, -211,-227,-527,-994,-1549,-2164,-2817,-3465,-4071,-4591, -5001,-5319,-5571,-5765,-5909,-6054,-6245,-6477,-6701,-6876, -7007,-7140,-7328,-7583,-7888,-8231,-8637,-9121,-9657,-10126, -10321,-10051,-9271,-8089,-6725,-5424,-4406,-3866,-3900,-4454, -5291,-6116,-6694,-6944,-6945,-6847,-6799,-6914,-7218,-7652, -8133,-8550,-8773,-8727,-8435,-7978,-7486,-7068,-6739,-6472, -6297,-6317,-6572,-7001,-7459,-7812,-7993,-7994,-7816,-7421, -6749,-5780,-4582,-3342,-2289,-1541,-1058,-720,-385,76, 744,1607,2541,3349,3853,3962,3685,3108,2333,1522, 898,676,926,1531,2277,2980,3577,4111,4657,5260, 5904,6506,6965,7205,7235,7104,6819,6347,5657,4764, 3746,2730,1826,1112,656,489,618,1027,1622,2221, 2638,2773,2645,2377,2102,1901,1793,1789,1876,1967, 1960,1805,1536,1235,987,890,1059,1605,2604,4018, 5687,7381,8889,10063,10871,11393,11754,12043,12333,12702, 13195,13748,14180,14295,14025,13421,12594,11591,10406,9044, 7607,6269,5188,4454,4033,3750,3347,2602,1427,-75, -1637,-2950,-3806,-4166,-4157,-3973,-3799,-3745,-3857,-4133, -4541,-5003,-5428,-5752,-5953,-6037,-6002,-5809,-5435,-4931, -4412,-3945,-3511,-3043,-2488,-1779,-850,301,1579,2833, 3916,4727,5242,5509,5600,5607,5591,5540,5418,5220, 4974,4715,4484,4339,4390,4732,5315,5959,6506,6917, 7258,7617,8032,8473,8861,9109,9145,8895,8321,7433, 6295,5036,3858,2919,2243,1752,1339,940,550,154, -312,-928,-1717,-2606,-3441,-4077,-4437,-4506,-4333,-4016, -3658,-3347,-3134,-3021,-2978,-2988,-3043,-3120,-3153,-3051, -2712,-2105,-1361,-684,-246,-112,-236,-530,-942,-1436, -1967,-2477,-2913,-3269,-3583,-3916,-4312,-4771,-5242,-5667, -6032,-6322,-6464,-6388,-6142,-5886,-5801,-6025,-6609,-7519, -8622,-9711,-10542,-10912,-10720,-9998,-8944,-7825,-6869,-6182, -5744,-5506,-5447,-5565,-5798,-6021,-6105,-6014,-5837,-5745, -5878,-6263,-6849,-7556,-8250,-8759,-8966,-8863,-8521,-8032, -7487,-6962,-6529,-6270,-6255,-6491,-6918,-7422,-7892,-8244, -8439,-8458,-8279,-7879,-7253,-6496,-5760,-5178,-4769,-4450, -4072,-3477,-2562,-1384,-120,1039,1980,2668,3081,3185, 2967,2501,1958,1495,1193,1083,1159,1384,1672,1972, 2265,2574,2962,3503,4229,5103,6030,6896,7588,7995, 8010,7577,6730,5622,4486,3536,2847,2358,2001,1772, 1676,1679,1737,1807,1878,1957,2045,2132,2217,2318, 2437,2562,2655,2622,2367,1846,1134,403,-144,-366, -197,383,1326,2492,3703,4865,5973,7024,7967,8722, 9285,9785,10425,11352,12537,13764,14759,15295,15239,14600, 13548,12349,11254,10417,9833,9391,8924,8294,7454,6426, 5267,4014,2744,1536,457,-472,-1261,-1919,-2421,-2731, -2872,-2956,-3136,-3499,-4031,-4642,-5215,-5651,-5902,-5953, -5846,-5655,-5463,-5359,-5391,-5498,-5535,-5329,-4770,-3889, -2835,-1711,-562,590,1679,2626,3398,4036,4564,4959, 5178,5201,5055,4830,4634,4515,4469,4453,4449,4477, 4560,4723,4984,5349,5844,6490,7262,8065,8778,9298, 9552,9464,8973,8099,7004,5944,5111,4573,4268,4035, 3713,3224,2578,1814,944,-11,-1006,-1923,-2643,-3130, -3415,-3541,-3564,-3546,-3549,-3606,-3712,-3819,-3877,-3883, -3866,-3829,-3762,-3604,-3272,-2737,-2069,-1411,-904,-623, -557,-675,-935,-1277,-1585,-1747,-1747,-1726,-1924,-2511, -3471,-4576,-5515,-6063,-6145,-5828,-5290,-4766,-4470,-4508, -4902,-5636,-6646,-7798,-8886,-9723,-10200,-10277,-9998,-9487, -8921,-8432,-8048,-7720,-7398,-7074,-6766,-6482,-6224,-5996, -5781,-5576,-5411,-5374,-5563,-5990,-6582,-7249,-7920,-8529, -8979,-9147,-8930,-8325,-7485,-6657,-6095,-5958,-6244,-6820, -7511,-8127,-8517,-8613,-8428,-8088,-7779,-7611,-7560,-7559, -7546,-7483,-7308,-6927,-6268,-5323,-4176,-2953,-1783,-730, 205,1016,1633,1980,2063,1957,1771,1599,1483,1401, 1333,1264,1159,1010,894,925,1204,1795,2715,3880, 5104,6218,7102,7653,7788,7501,6890,6130,5387,4740, 4214,3820,3535,3273,2925,2427,1830,1295,1011,1089, 1500,2084,2667,3132,3402,3439,3255,2904,2428,1847, 1175,446,-233,-667,-666,-192,628,1559,2395,3030, 3484,3865,4309,4969,5947,7277,8868,10514,11983,13087, 13753,14029,14020,13825,13515,13154,12808,12524,12287,12005, 11549,10854,9949,8891,7698,6369,4973,3663,2584,1773, 1152,602,40,-551,-1161,-1776,-2395,-3002,-3550,-3949, -4179,-4326,-4520,-4808,-5141,-5441,-5669,-5825,-5937,-6034, -6116,-6124,-5991,-5657,-5060,-4155,-2968,-1613,-261,930, 1881,2606,3169,3612,3947,4202,4418,4636,4874,5056, 5081,4897,4546,4129,3766,3595,3722,4192,4970,5964, 7024,7989,8734,9180,9324,9195,8827,8260,7590,6986, 6606,6460,6409,6266,5916,5346,4595,3712,2727,1691, 691,-174,-852,-1334,-1682,-1980,-2275,-2566,-2843,-3097, -3349,-3662,-4022,-4338,-4491,-4401,-4064,-3540,-2954,-2487, -2245,-2170,-2107,-1939,-1625,-1193,-706,-262,39,123, -45,-496,-1252,-2267,-3374,-4316,-4844,-4877,-4522,-3998, -3518,-3244,-3250,-3551,-4146,-5011,-6052,-7086,-7918,-8457, -8731,-8843,-8893,-8924,-8911,-8825,-8669,-8468,-8205,-7858, -7450,-7020,-6587,-6141,-5672,-5213,-4859,-4751,-4971,-5496, -6225,-7031,-7775,-8341,-8628,-8554,-8117,-7445,-6758,-6269, -6097,-6229,-6564,-6983,-7395,-7707,-7843,-7780,-7599,-7442, -7416,-7537,-7764,-8041,-8317,-8510,-8501,-8192,-7567,-6687, -5647,-4559,-3507,-2543,-1683,-907,-199,473,1115,1667, 2043,2189,2111,1854,1501,1109,699,299,0,-59, 249,949,1935,3067,4221,5254,6033,6482,6638,6640, 6622,6617,6563,6391,6079,5652,5135,4523,3818,3056, 2294,1625,1175,1061,1320,1917,2760,3663,4361,4618, 4315,3523,2497,1524,804,402,299,428,682,920, 1020,936,744,616,722,1126,1814,2748,3904,5265, 6784,8335,9752,10889,11690,12210,12540,12739,12872,13027, 13273,13585,13864,13958,13717,13074,12086,10846,9496,8202, 7082,6172,5438,4748,3960,3050,2102,1206,399,-331, -1009,-1634,-2176,-2609,-2936,-3217,-3530,-3899,-4291,-4653, -4958,-5263,-5641,-6109,-6597,-6989,-7165,-7054,-6610,-5817, -4730,-3500,-2315,-1315,-531,112,714,1378,2147,2972, 3757,4408,4873,5085,4987,4562,3914,3254,2796,2663, 2908,3517,4377,5340,6293,7138,7764,8110,8197,8133, 8026,7941,7889,7831,7740,7615,7453,7260,7044,6763, 6322,5634,4679,3522,2325,1305,613,262,113,-56, -442,-1086,-1884,-2700,-3429,-4002,-4351,-4407,-4165,-3749, -3361,-3191,-3317,-3648,-3976,-4092,-3877,-3299,-2427,-1413, -441,291,645,573,113,-635,-1552,-2482,-3242,-3688, -3776,-3569,-3225,-2935,-2806,-2823,-2950,-3214,-3674,-4340, -5155,-5984,-6700,-7256,-7672,-7981,-8195,-8343,-8484,-8691, -8972,-9227,-9315,-9137,-8689,-8004,-7167,-6299,-5564,-5096, -4978,-5189,-5648,-6222,-6786,-7262,-7610,-7816,-7880,-7800, -7608,-7389,-7208,-7076,-6984,-6940,-6981,-7123,-7299,-7386, -7325,-7183,-7083,-7114,-7297,-7607,-7988,-8356,-8653,-8842, -8894,-8753,-8387,-7838,-7179,-6481,-5791,-5110,-4407,-3637, -2733,-1632,-392,785,1649,2036,1934,1454,788,123, -391,-641,-579,-257,207,706,1203,1729,2355,3109, 3921,4652,5214,5627,5979,6326,6653,6915,7051,6981, 6609,5869,4783,3511,2330,1518,1243,1504,2155,2965, 3722,4264,4478,4321,3844,3188,2532,2013,1691,1554, 1546,1581,1551,1358,952,393,-155,-546,-688,-528, -34,799,1929,3258,4641,5911,6959,7788,8486,9175, 9924,10741,11565,12339,13021,13598,14030,14244,14167,13784, 13140,12328,11445,10561,9686,8818,7958,7110,6264,5415, 4553,3686,2822,1955,1076,234,-505,-1082,-1456,-1636, -1745,-1930,-2279,-2817,-3508,-4296,-5117,-5900,-6557,-7000, -7171,-7081,-6794,-6379,-5869,-5304,-4701,-4054,-3366,-2621, -1786,-785,399,1650,2779,3638,4132,4227,3962,3469, 2931,2523,2374,2523,2907,3407,3946,4526,5197,5956, 6689,7229,7501,7560,7528,7535,7625,7780,7981,8224, 8435,8498,8332,7916,7303,6573,5795,5042,4383,3857, 3447,3053,2533,1782,836,-167,-1098,-1878,-2469,-2842, -2999,-2970,-2838,-2760,-2919,-3384,-4037,-4661,-5027,-4993, -4533,-3713,-2661,-1587,-714,-170,22,-104,-483,-1013, -1600,-2146,-2565,-2805,-2865,-2786,-2634,-2470,-2335,-2264, -2328,-2602,-3095,-3723,-4368,-4945,-5414,-5790,-6114,-6421, -6751,-7179,-7754,-8444,-9123,-9617,-9767,-9503,-8865,-8002, -7094,-6296,-5731,-5459,-5478,-5734,-6112,-6482,-6762,-6929, -6993,-7002,-7012,-7073,-7227,-7434,-7589,-7590,-7439,-7235, -7083,-7018,-6975,-6870,-6701,-6575,-6596,-6786,-7094,-7443, -7776,-8053,-8219,-8240,-8133,-7988,-7916,-7968,-8079,-8107, -7900,-7350,-6457,-5323,-4042,-2707,-1451,-418,293,672, 767,647,363,-38,-453,-735,-754,-486,-26,480, 921,1245,1464,1646,1914,2393,3142,4152,5305,6414, 7285,7786,7854,7525,6880,5997,4996,4042,3310,2908, 2844,3023,3332,3672,3994,4236,4326,4228,3955,3573, 3201,2965,2915,2995,3054,2940,2576,1978,1218,410, -314,-838,-1058,-934,-506,148,921,1722,2513,3278, 4012,4742,5548,6513,7642,8830,9941,10899,11696,12377, 12996,13563,13992,14155,13996,13564,12948,12218,11446,10688, 9988,9364,8799,8199,7431,6416,5205,3952,2819,1941, 1362,1033,880,819,719,437,-120,-944,-1930,-2955, -3935,-4789,-5411,-5735,-5821,-5825,-5914,-6167,-6520,-6773, -6740,-6347,-5618,-4629,-3456,-2208,-994,108,1060,1829, 2409,2784,2928,2815,2498,2136,1904,1925,2220,2729, 3372,4098,4827,5419,5778,5942,6041,6214,6561,7072, 7658,8198,8597,8796,8781,8581,8269,7908,7574,7334, 7207,7129,6988,6677,6125,5293,4208,3003,1883,996, 389,9,-252,-490,-762,-1092,-1520,-2089,-2799,-3560, -4233,-4707,-4908,-4818,-4462,-3886,-3137,-2296,-1524,-975, -712,-716,-919,-1239,-1618,-1997,-2291,-2422,-2373,-2205, -2024,-1892,-1857,-1970,-2240,-2612,-2987,-3274,-3445,-3573, -3764,-4074,-4495,-5010,-5641,-6412,-7291,-8162,-8876,-9291, -9361,-9134,-8699,-8142,-7540,-6963,-6485,-6168,-6042,-6089, -6250,-6453,-6647,-6782,-6800,-6709,-6638,-6727,-7038,-7488, -7919,-8167,-8148,-7871,-7415,-6915,-6502,-6291,-6356,-6668, -7095,-7429,-7530,-7389,-7122,-6898,-6850,-7025,-7383,-7837, -8291,-8663,-8905,-8982,-8855,-8492,-7876,-6986,-5842,-4523, -3191,-2034,-1203,-754,-637,-726,-878,-1002,-1021,-888, -601,-244,52,177,76,-188,-435,-448,-79,695, 1820,3182,4589,5832,6756,7270,7336,7001,6394,5685, 5036,4552,4272,4170,4181,4227,4237,4169,4037,3892, 3796,3782,3821,3865,3922,4033,4190,4295,4189,3762, 3040,2177,1338,627,78,-314,-561,-650,-584,-412, -184,94,459,947,1577,2327,3144,3991,4889,5871, 6942,8088,9268,10422,11474,12313,12851,13076,13089,13024, 12940,12798,12534,12164,11745,11313,10824,10155,9194,7960, 6596,5304,4272,3589,3236,3118,3086,2971,2615,1967, 1100,157,-746,-1541,-2213,-2789,-3317,-3837,-4388,-5010, -5709,-6427,-7058,-7497,-7687,-7604,-7253,-6643,-5764,-4640, -3356,-2068,-910,19,655,973,1017,893,747,714, 848,1155,1594,2110,2625,3078,3423,3644,3807,4032, 4436,5059,5850,6674,7380,7848,8033,7960,7721,7437, 7261,7311,7605,8039,8444,8659,8564,8097,7286,6252, 5146,4114,3274,2674,2295,2040,1782,1429,925,255, -563,-1474,-2391,-3213,-3872,-4364,-4698,-4828,-4693,-4270, -3634,-2937,-2341,-1946,-1767,-1780,-1919,-2115,-2289,-2371, -2324,-2170,-1996,-1887,-1912,-2085,-2368,-2690,-2956,-3077, -2999,-2751,-2490,-2430,-2660,-3122,-3722,-4389,-5080,-5799, -6567,-7360,-8093,-8663,-8992,-9032,-8813,-8424,-7970,-7550, -7245,-7067,-6987,-6932,-6822,-6615,-6383,-6239,-6270,-6508, -6937,-7449,-7895,-8151,-8176,-8028,-7818,-7631,-7484,-7391, -7365,-7382,-7426,-7489,-7551,-7572,-7496,-7279,-6946,-6623, -6464,-6565,-6933,-7511,-8202,-8896,-9480,-9837,-9867,-9517, -8804,-7849,-6819,-5861,-5047,-4368,-3791,-3299,-2880,-2497, -2108,-1692,-1277,-935,-711,-618,-681,-937,-1358,-1830, -2158,-2130,-1632,-687,573,1943,3248,4375,5237,5769, 5938,5773,5405,5039,4838,4828,4919,5007,5016,4896, 4597,4135,3628,3271,3216,3461,3878,4307,4665,4911, 4979,4830,4485,4000,3455,2915,2389,1816,1133,413, -182,-535,-638,-564,-443,-362,-309,-224,-59,221, 649,1262,2092,3125,4315,5611,6939,8197,9253,10019, 10506,10824,11142,11600,12210,12852,13343,13537,13370,12861, 12070,11061,9935,8844,7921,7209,6645,6140,5650,5164, 4678,4187,3703,3223,2726,2169,1527,809,74,-612, -1211,-1768,-2374,-3113,-4011,-5030,-6074,-7015,-7732,-8130, -8140,-7712,-6865,-5740,-4538,-3446,-2565,-1917,-1474,-1180, -958,-717,-400,11,475,897,1197,1370,1451,1498, 1600,1865,2353,3061,3912,4789,5562,6139,6519,6729, 6785,6724,6634,6650,6880,7349,7969,8573,9006,9190, 9100,8734,8096,7273,6408,5650,5082,4692,4398,4131, 3843,3467,2920,2162,1223,188,-861,-1863,-2742,-3427, -3859,-4011,-3893,-3575,-3169,-2827,-2675,-2705,-2776,-2749, -2584,-2314,-2018,-1775,-1655,-1681,-1812,-1982,-2151,-2308, -2459,-2607,-2723,-2752,-2641,-2385,-2033,-1700,-1553,-1720, -2224,-2987,-3899,-4840,-5678,-6310,-6722,-6984,-7214,-7521, -7931,-8342,-8575,-8490,-8058,-7406,-6750,-6281,-6043,-5983, -6040,-6183,-6417,-6709,-6978,-7148,-7216,-7229,-7238,-7255, -7263,-7267,-7291,-7365,-7503,-7677,-7840,-7931,-7879,-7636, -7215,-6670,-6111,-5695,-5573,-5825,-6398,-7138,-7886,-8554, -9085,-9402,-9407,-9055,-8440,-7774,-7240,-6891,-6640,-6349, -5914,-5288,-4478,-3538,-2572,-1713,-1068,-709,-646,-839, -1218,-1709,-2226,-2664,-2878,-2732,-2171,-1263,-156,1012, 2133,3109,3841,4281,4501,4659,4886,5213,5559,5807, 5873,5748,5470,5108,4728,4382,4106,3946,3936,4074, 4320,4648,5030,5410,5710,5820,5682,5347,4909,4407, 3819,3126,2373,1650,1075,727,592,583,544,351, -9,-455,-837,-1003,-836,-286,628,1791,3028,4187, 5161,5914,6496,7020,7641,8490,9585,10804,11953,12856, 13426,13665,13623,13347,12863,12215,11477,10746,10077,9458, 8865,8296,7736,7168,6600,6061,5556,5065,4559,4023, 3488,2996,2576,2217,1842,1332,592,-408,-1627,-2981, -4349,-5602,-6597,-7204,-7335,-7033,-6475,-5860,-5311,-4844, -4408,-3931,-3369,-2728,-2039,-1344,-700,-189,114,205, 133,-8,-107,-40,293,910,1748,2677,3560,4290, 4815,5133,5294,5385,5494,5688,6006,6460,7007,7564, 8093,8557,8912,9123,9176,9062,8774,8310,7691,7025, 6480,6172,6102,6147,6137,5905,5330,4380,3156,1856, 673,-264,-928,-1396,-1779,-2154,-2527,-2863,-3085,-3147, -3076,-2944,-2801,-2666,-2520,-2345,-2149,-1940,-1729,-1551, -1473,-1580,-1915,-2412,-2889,-3141,-3064,-2698,-2190,-1708, -1388,-1291,-1398,-1661,-2038,-2477,-2908,-3315,-3752,-4277, -4895,-5574,-6282,-6992,-7646,-8142,-8375,-8283,-7902,-7376, -6852,-6418,-6124,-5991,-6016,-6210,-6547,-6897,-7085,-7031, -6793,-6507,-6319,-6341,-6579,-6955,-7383,-7818,-8217,-8520, -8664,-8598,-8304,-7796,-7118,-6386,-5776,-5460,-5514,-5892, -6460,-7084,-7656,-8109,-8393,-8470,-8372,-8189,-8032,-7995, -8069,-8171,-8184,-8016,-7600,-6911,-5958,-4780,-3501,-2316, -1433,-1009,-1085,-1556,-2231,-2883,-3326,-3464,-3307,-2944, -2481,-1995,-1470,-854,-116,728,1619,2458,3188,3802, 4307,4713,5029,5264,5388,5361,5213,4997,4764,4533, 4298,4061,3887,3854,4001,4333,4850,5471,6027,6364, 6385,6106,5604,4972,4307,3678,3167,2834,2642,2465, 2174,1684,989,178,-585,-1128,-1354,-1284,-1002,-593, -101,442,1030,1662,2310,2938,3553,4229,5046,6055, 7230,8480,9692,10779,11688,12384,12823,12939,12735,12311, 11814,11341,10921,10539,10152,9726,9228,8628,7928,7151, 6359,5647,5109,4798,4721,4795,4857,4742,4352,3633, 2615,1412,117,-1220,-2509,-3648,-4581,-5307,-5842,-6209, -6444,-6581,-6632,-6548,-6266,-5742,-4987,-4086,-3166,-2364, -1755,-1385,-1290,-1444,-1724,-1957,-1978,-1673,-1031,-180, 698,1465,2085,2567,2942,3241,3504,3771,4081,4450, 4861,5319,5880,6564,7319,8025,8526,8719,8623,8354, 8040,7797,7664,7631,7655,7673,7619,7456,7168,6779, 6290,5688,4948,4041,2995,1897,882,55,-568,-1043, -1447,-1843,-2280,-2749,-3196,-3524,-3613,-3382,-2884,-2318, -1916,-1779,-1874,-2088,-2320,-2523,-2682,-2782,-2819,-2796, -2735,-2669,-2614,-2556,-2463,-2292,-2050,-1822,-1709,-1762, -1956,-2258,-2661,-3181,-3824,-4604,-5497,-6419,-7227,-7783, -8003,-7914,-7642,-7322,-7040,-6829,-6686,-6629,-6698,-6889, -7121,-7265,-7204,-6907,-6463,-6039,-5793,-5825,-6168,-6787, -7582,-8391,-9045,-9406,-9403,-9061,-8496,-7870,-7310,-6876, -6603,-6490,-6505,-6617,-6827,-7121,-7440,-7679,-7763,-7704, -7603,-7592,-7786,-8220,-8812,-9376,-9691,-9595,-9065,-8163, -7008,-5758,-4572,-3594,-2908,-2544,-2477,-2645,-2963,-3312, -3578,-3695,-3677,-3589,-3479,-3344,-3126,-2742,-2146,-1335, -367,640,1563,2335,2954,3447,3876,4285,4650,4929, 5074,5029,4764,4313,3778,3312,3077,3196,3691,4445, 5241,5855,6146,6117,5891,5616,5388,5233,5123,5019, 4884,4659,4289,3748,3031,2188,1327,564,-23,-416, -654,-791,-852,-826,-720,-540,-291,23,376,758, 1207,1789,2559,3496,4572,5790,7116,8450,9654,10608, 11240,11548,11600,11530,11475,11523,11643,11712,11584,11171, 10479,9608,8669,7754,6966,6403,6128,6141,6343,6545, 6579,6371,5918,5250,4408,3426,2366,1307,308,-643, -1600,-2606,-3672,-4753,-5744,-6539,-7039,-7149,-6837,-6182, -5344,-4514,-3841,-3389,-3120,-2960,-2859,-2798,-2779,-2773, -2716,-2534,-2162,-1574,-795,85,922,1545,1848,1853, 1751,1790,2155,2847,3754,4703,5545,6217,6704,7027, 7235,7407,7605,7830,8019,8109,8068,7967,7914,7973, 8128,8284,8308,8112,7684,7064,6336,5582,4862,4195, 3550,2839,1995,1042,62,-861,-1640,-2216,-2555,-2659, -2594,-2452,-2308,-2214,-2188,-2204,-2234,-2265,-2288,-2319, -2362,-2384,-2364,-2337,-2385,-2576,-2874,-3138,-3206,-2980, -2494,-1901,-1364,-1009,-916,-1107,-1552,-2187,-2943,-3752, -4550,-5271,-5872,-6322,-6604,-6738,-6759,-6711,-6655,-6668, -6804,-7056,-7328,-7493,-7441,-7129,-6604,-6012,-5511,-5218, -5179,-5384,-5803,-6397,-7108,-7858,-8524,-8953,-9033,-8753, -8216,-7641,-7222,-7047,-7094,-7248,-7365,-7342,-7155,-6860, -6546,-6310,-6208,-6276,-6533,-6992,-7610,-8295,-8917,-9365, -9566,-9482,-9106,-8469,-7650,-6736,-5814,-4969,-4245,-3646, -3204,-2968,-2929,-3048,-3278,-3557,-3832,-4049,-4149,-4089, -3853,-3450,-2941,-2401,-1867,-1309,-642,217,1261,2370, 3394,4210,4716,4856,4678,4315,3909,3552,3315,3263, 3428,3782,4239,4691,5064,5323,5476,5550,5599,5692, 5861,6080,6285,6403,6359,6130,5726,5155,4423,3584, 2729,1963,1346,884,522,226,-1,-130,-180,-223, -346,-539,-679,-648,-391,96,814,1748,2850,4035, 5178,6209,7119,7955,8747,9505,10203,10836,11399,11876, 12215,12354,12239,11853,11226,10441,9602,8811,8166,7761, 7645,7754,7942,8028,7890,7525,7014,6475,5998,5614, 5258,4789,4062,2999,1621,58,-1498,-2873,-3981,-4814, -5407,-5793,-5952,-5831,-5440,-4879,-4277,-3780,-3497,-3455, -3591,-3801,-3954,-3906,-3588,-3051,-2421,-1814,-1307,-900, -567,-281,-19,255,574,959,1407,1922,2529,3259, 4107,4993,5795,6398,6750,6890,6933,6998,7173,7488, 7910,8338,8659,8793,8733,8548,8342,8196,8124,8080, 7971,7710,7263,6636,5865,4980,4016,2994,1966,1010, 186,-464,-921,-1210,-1395,-1554,-1748,-1985,-2209,-2346, -2361,-2271,-2106,-1894,-1705,-1625,-1724,-2014,-2442,-2908, -3280,-3465,-3443,-3204,-2748,-2127,-1466,-902,-575,-583, -961,-1662,-2515,-3309,-3905,-4263,-4423,-4509,-4661,-4965, -5418,-5937,-6418,-6813,-7135,-7408,-7616,-7682,-7505,-7045, -6382,-5687,-5127,-4823,-4824,-5112,-5613,-6224,-6839,-7359, -7704,-7854,-7855,-7772,-7688,-7686,-7807,-8030,-8254,-8357, -8247,-7892,-7339,-6689,-6085,-5677,-5551,-5732,-6171,-6772, -7417,-8007,-8477,-8782,-8938,-9015,-9058,-9011,-8758,-8204, -7337,-6259,-5188,-4318,-3754,-3505,-3516,-3687,-3887,-3996, -3980,-3879,-3780,-3781,-3935,-4182,-4377,-4378,-4092,-3493, -2562,-1327,72,1420,2519,3242,3584,3657,3591,3470, 3355,3299,3341,3480,3661,3843,4002,4144,4292,4489, 4731,4985,5243,5538,5892,6277,6632,6901,7055,7080, 6927,6512,5806,4883,3922,3091,2485,2108,1893,1733, 1515,1174,689,94,-521,-1020,-1294,-1307,-1066,-611, -28,632,1335,2042,2740,3471,4268,5149,6121,7160, 8246,9360,10429,11336,11940,12126,11900,11417,10887,10475, 10217,10037,9816,9490,9068,8611,8210,7938,7824,7836, 7902,7930,7855,7659,7360,6971,6449,5703,4655,3291, 1670,-57,-1682,-3001,-3882,-4310,-4377,-4249,-4109,-4088, -4206,-4380,-4519,-4574,-4531,-4396,-4216,-4025,-3841,-3656, -3419,-3080,-2622,-2089,-1593,-1256,-1129,-1113,-1046,-811, -351,341,1192,2077,2886,3565,4120,4595,5032,5454, 5878,6306,6737,7160,7550,7878,8100,8189,8181,8144, 8170,8290,8464,8653,8813,8873,8732,8303,7573,6639, 5650,4733,3940,3257,2616,1928,1153,346,-410,-1046, -1522,-1838,-2010,-2061,-2020,-1922,-1774,-1590,-1421,-1356, -1491,-1885,-2474,-3089,-3530,-3688,-3544,-3170,-2675,-2158, -1688,-1315,-1110,-1113,-1337,-1751,-2275,-2785,-3169,-3369, -3393,-3343,-3376,-3630,-4170,-4946,-5815,-6628,-7261,-7657, -7789,-7669,-7334,-6839,-6268,-5743,-5382,-5235,-5266,-5405, -5612,-5866,-6137,-6390,-6599,-6754,-6897,-7099,-7425,-7855, -8308,-8662,-8830,-8784,-8549,-8165,-7684,-7155,-6649,-6248, -5982,-5854,-5874,-6079,-6482,-7057,-7707,-8321,-8817,-9141, -9270,-9207,-8946,-8485,-7860,-7139,-6401,-5709,-5096,-4596, -4225,-3978,-3822,-3715,-3641,-3638,-3753,-4010,-4390,-4806, -5132,-5260,-5115,-4655,-3878,-2825,-1597,-340,785,1656, 2231,2572,2768,2874,2912,2921,2935,2990,3095,3247, 3422,3583,3696,3770,3846,3986,4243,4637,5145,5704, 6224,6635,6903,7000,6916,6649,6189,5560,4843,4156, 3571,3095,2706,2371,2066,1731,1296,719,42,-628, -1145,-1387,-1318,-990,-526,-60,332,661,1011,1488, 2169,3079,4165,5323,6461,7531,8512,9400,10148,10684, 10941,10925,10714,10410,10108,9860,9649,9406,9089,8700, 8267,7853,7534,7371,7393,7555,7764,7916,7930,7756, 7373,6760,5890,4769,3440,1976,480,-925,-2121,-2997, -3517,-3729,-3740,-3699,-3727,-3876,-4112,-4364,-4537,-4561, -4431,-4202,-3951,-3728,-3544,-3359,-3105,-2752,-2334,-1933, -1625,-1450,-1368,-1263,-1033,-623,-29,711,1517,2286, 2948,3494,3971,4429,4892,5350,5790,6206,6585,6913, 7177,7365,7472,7526,7579,7677,7834,8025,8208,8348, 8396,8294,7949,7319,6477,5575,4750,4056,3454,2854, 2182,1413,584,-207,-865,-1346,-1640,-1755,-1743,-1674, -1587,-1489,-1374,-1256,-1206,-1336,-1713,-2286,-2890,-3317, -3448,-3284,-2904,-2422,-1931,-1497,-1177,-1022,-1064,-1300, -1691,-2158,-2593,-2895,-3017,-2969,-2858,-2845,-3078,-3622, -4428,-5348,-6200,-6860,-7269,-7401,-7255,-6861,-6304,-5705, -5199,-4905,-4855,-4972,-5147,-5330,-5518,101,188,205, 204,169,123,43,32,73,144,168,58,-245, -575,-600,-134,539,1034,1175,931,439,339,1247, 2637,3124,2421,1775,1669,1555,1167,840,757,202, -1724,-5000,-8212,-9759,-9151,-7456,-6259,-5442,-4110,-2456, -966,378,1510,1435,-669,-4842,-9345,-12650,-14428,-15011, -14972,-14399,-13068,-11154,-9180,-7104,-4284,-828,1774,2455, 1929,1088,-112,-1712,-3250,-4152,-4513,-4525,-4025,-2672, -167,3284,6405,7881,7918,7549,7073,6593,6794,8159, 9680,10065,9572,9424,9987,10695,10994,10704,9961,8828, 7151,4838,2083,-541,-3032,-5798,-8432,-9426,-8120,-5374, -2617,-522,612,536,-286,-1120,-1925,-2855,-3603,-3699, -3105,-2198,-1502,-1303,-1238,-578,892,2288,2916,3307, 3820,3673,2120,-234,-1932,-2184,-1306,224,2179,4174, 5895,7397,8796,9964,10770,10791,9684,7848,6187,5281, 5094,5109,5110,5153,5261,5591,6748,8729,10574,11297, 10465,7988,4620,1730,172,-135,318,877,916,259, -774,-1636,-2105,-2162,-1506,-335,354,112,-214,193, 1104,1847,2413,3450,5079,6771,8044,8675,8661,8583, 8922,9310,8974,7708,6036,4402,3006,1785,183,-1664, -2600,-1787,92,1888,2715,2403,1059,-1266,-3885,-5466, -5611,-5424,-5810,-6534,-6960,-6750,-5852,-4432,-2586,-589, 311,-1197,-4272,-6227,-5607,-3463,-1834,-1723,-2427,-2784, -2371,-1243,149,1227,1401,229,-2455,-5810,-8336,-9486, -10007,-10632,-11420,-12176,-12632,-12050,-9529,-5793,-2959,-2343, -3360,-4650,-5277,-5034,-4447,-4014,-3677,-3271,-3235,-3727, -4220,-4326,-4856,-6850,-9578,-11248,-11235,-10515,-9650,-8288, -6261,-4186,-2742,-1690,-444,1078,1855,686,-2352,-5852, -8630,-10747,-12535,-13762,-14140,-13762,-12894,-11132,-8328,-4919, -1533,1156,2534,2369,901,-1149,-3078,-4191,-4383,-3966, -3153,-1657,530,2592,4123,5507,6829,7667,8021,8614, 9854,11006,10889,9221,6932,5364,5141,5609,6182,7026, 8323,9207,8521,6178,3143,152,-2782,-5288,-6652,-6846, -6329,-5317,-4160,-3488,-3577,-4070,-4325,-4096,-3379,-2535, -2073,-2369,-3307,-4484,-5516,-5881,-4858,-2551,-325,800, 1334,1850,2015,1085,-870,-3060,-4866,-5953,-5713,-3874, -1235,1361,3592,5373,6919,8644,10501,12326,13924,14669, 13996,12130,9913,8312,7931,8906,10729,12634,13996,14262, 13616,12861,12275,11493,10533,9993,10131,10197,9199,7135, 5233,4423,4458,4388,3916,3570,3513,3627,4093,5089, 6255,7099,7602,8126,8978,9854,10280,10172,10082,10696, 12018,13184,13535,13341,12812,11326,8420,5097,3073,2758, 3086,2945,2141,775,-748,-1472,-852,612,1698,1191, -1273,-4529,-6593,-6589,-5455,-4601,-4172,-3875,-4268,-5598, -6670,-6037,-4082,-2680,-3035,-4425,-5137,-4223,-1944,657, 2564,3559,3622,2959,2393,2690,3263,2728,507,-2524, -5381,-7816,-9711,-10572,-10411,-10063,-10193,-10640,-10806,-10177, -9141,-8782,-9592,-10802,-11335,-10945,-9763,-7692,-5344,-4019, -4273,-5555,-7053,-8195,-9012,-9790,-10709,-12142,-14168,-16030, -16718,-15543,-12796,-9752,-7519,-6202,-5416,-5069,-5370,-5871, -6200,-7341,-10556,-15061,-18756,-20406,-20068,-18196,-15119,-11302, -7278,-3507,-341,1771,2744,2522,1022,-1191,-2832,-3164, -2462,-1473,-363,1069,2430,3531,5041,7462,10251,12528, 14011,14626,14109,12632,11014,9963,9801,10379,11127,12087, 13516,15049,15713,14851,12577,9502,6191,3138,1099,224, -204,-918,-1936,-2684,-2929,-2933,-2996,-3258,-3683,-4212, -5004,-6498,-8480,-10594,-12616,-14134,-14315,-12516,-9023,-4877, -731,2676,4159,3019,317,-2156,-3341,-3881,-4770,-6135, -7383,-7968,-7912,-7316,-5841,-2985,888,4665,7398,8817, 9120,8319,6624,5197,5097,5986,6871,7540,8701,10585, 12505,13333,12635,11179,10178,9877,9750,9486,9297,9165, 8671,7668,6748,6459,6505,6316,5842,5228,4530,3816, 3500,4149,5543,6402,5279,2721,1175,2479,5979,9543, 12020,13492,13843,12916,11372,10604,11160,12173,12101,10288, 7205,4266,2938,3358,4738,6224,6749,5630,3414,1666, 934,-27,-2299,-5237,-7473,-8226,-7453,-5506,-3189,-1627, -1509,-2523,-3796,-4708,-4826,-4361,-3981,-3992,-4266,-4631, -4534,-3209,-478,2602,4380,5000,5863,7182,7998,7717, 6317,3902,748,-2559,-4956,-5659,-4843,-3588,-3024,-3461, -4496,-5751,-7008,-7871,-8041,-7601,-7567,-8519,-9514,-9354, -7959,-5610,-3056,-1343,-1163,-2419,-4613,-7073,-9245,-11172, -13481,-16191,-18375,-19239,-18851,-16964,-13485,-9310,-5860,-3731, -2535,-2102,-3247,-6355,-10588,-14919,-18907,-22101,-23701,-22949, -19936,-15540,-10994,-7515,-5374,-4010,-3000,-2256,-1650,-1311, -1870,-3860,-6452,-8047,-8130,-7234,-5299,-1951,2587,7311, 11206,13782,14995,14713,13243,11443,10217,10040,10834,12222, 14067,16000,17340,17434,16600,15676,14884,13503,11061,8127, 5669,3718,1566,-1089,-3645,-5135,-5273,-4469,-3199,-1945, -1294,-2028,-4436,-7635,-10433,-12494,-13735,-13773,-12233,-9237, -5903,-3497,-2301,-1493,-18,2198,4270,5309,5079,3242, -303,-4552,-7997,-9610,-9528,-8354,-6159,-2896,475,2685, 3568,3900,3985,3540,2503,1550,1670,3169,5031,5780, 5399,5193,6044,7323,8242,8790,9191,9049,8508,8518, 9376,10241,10259,9143,7217,5091,3579,3413,4650,6380, 7296,6274,3389,466,-770,-165,1097,2063,2559,2300, 1640,2049,4522,8260,11464,12970,13017,12561,11933,11119, 10288,9700,9062,8006,6817,6525,7747,9512,9915,8215, 5230,2217,-548,-2702,-3862,-4240,-4550,-5177,-5895,-6057, -5152,-3545,-2425,-2375,-2996,-3708,-4638,-5653,-6017,-5748, -5769,-6314,-6429,-5247,-2881,304,4174,8007,10418,10595, 9423,8125,7112,6176,5031,3397,1252,-975,-2724,-3609, -3208,-1698,-528,-1177,-3284,-5422,-6850,-7693,-7977,-7591, -6848,-6082,-5103,-3681,-1957,-551,152,263,-154,-1502, -4194,-7977,-11751,-14591,-16789,-19056,-20659,-20105,-16673,-11230, -5517,-1438,92,-1174,-4699,-9002,-13036,-16383,-18960,-20696, -21338,-20866,-19677,-18161,-16179,-13263,-9456,-5822,-3376,-2016, -1341,-1703,-3651,-6975,-10616,-13365,-14285,-13124,-9953,-5442, -461,3981,7200,9266,10457,10876,10419,9329,8873,9972, 11700,12744,13288,14201,15708,17238,18321,18985,19219,18615, 16796,13667,9492,4819,142,-3950,-6243,-5630,-3010,-708, -160,-890,-2118,-3842,-6126,-8169,-9159,-9403,-9966,-11252, -12812,-13633,-12769,-10108,-6283,-1777,2846,6599,8739,9119, 7876,4818,218,-4294,-6969,-7680,-7328,-6502,-5205,-3549, -1977,-656,726,2271,3534,3856,2869,1400,985,2121, 4071,6128,7777,8254,7299,6323,7235,10048,12851,14147, 13846,12402,10307,8522,7679,7480,7413,6934,5584,3731, 2682,3086,3829,3471,2073,500,-1006,-2370,-3001,-2548, -1905,-1883,-1839,-578,2124,5702,9338,11967,12553,11142, 8809,6850,6055,6434,7325,7895,7988,7923,7854,7707, 7629,7654,6980,4744,1134,-2360,-4577,-5552,-5803,-5873, -6106,-6480,-6768,-6500,-5294,-3245,-1274,-665,-1927,-4281, -6711,-8644,-9288,-8192,-6098,-4277,-3065,-1504,1194,4459, 7284,9255,10293,10170,8940,6935,4706,3050,2496,2607, 2422,1840,1301,776,334,347,495,-271,-2303,-4540, -5500,-4985,-4131,-3795,-3721,-3250,-1848,432,3002,5144, 6258,5780,2831,-2737,-9261,-14597,-17933,-19472,-18947,-16064, -11754,-7597,-4273,-1721,-242,-387,-2278,-5277,-8214,-10538, -12807,-15701,-18893,-21102,-21402,-20274,-18306,-15243,-10905,-6422, -3332,-1839,-1738,-3348,-6730,-10959,-14456,-15863,-15173,-13462, -11263,-8260,-4474,-743,1836,3454,4941,6540,7809,8633, 9203,9500,9391,9164,9491,10824,13194,16425,19829,22539, 23590,22159,18315,13541,9631,6874,4374,1985,613,334, -42,-989,-1678,-1809,-1961,-2152,-2102,-2301,-3461,-5787, -8932,-12403,-15233,-16204,-14768,-11058,-5793,-50,4330,6346, 7016,7733,8103,6676,3332,-774,-4820,-8137,-9461,-8037, -4967,-2229,-1009,-1106,-1562,-1341,15,1876,3326,3772, 2951,1104,-539,-571,957,2923,4511,5709,6849,8117, 9725,11595,12955,12883,11345,9282,7793,7313,7298,7047, 6468,5884,5268,4431,3677,3477,3610,2852,530,-2436, -4706,-5876,-5850,-4399,-1958,498,2598,4562,6641,8781, 10502,11105,10449,9120,7832,6847,6403,7075,8760,10165, 10118,8973,7955,7628,7623,7466,6775,5001,2080,-1352, -4100,-5681,-6316,-6137,-5126,-3631,-2169,-1138,-999,-1606, -2005,-2066,-2974,-5673,-9015,-11045,-11101,-9851,-8004,-5561, -2397,1058,3957,5866,6819,7124,6962,6102,4842,4146, 4086,3720,2512,1169,403,-32,-542,-855,-617,-223, -561,-2237,-4822,-7263,-8931,-9660,-9191,-6886,-2766,1866, 5567,7740,8249,6493,2205,-3526,-8486,-11453,-13120,-14264, -14945,-14583,-12930,-10322,-7541,-5177,-3178,-1683,-1399,-2544, -4624,-7522,-11620,-16303,-20136,-22495,-23779,-23721,-21197,-16320, -10804,-6350,-3576,-2425,-2997,-5068,-7853,-10385,-11897,-12106, -11855,-12134,-12698,-12665,-11575,-9242,-5480,-446,4257,6626, 6741,5965,5073,4213,4038,5375,8312,11962,15360,18155, 20412,22093,22622,21500,19369,17518,16341,15146,13335,10837, 7479,3516,221,-924,130,2298,4254,4859,3562,626, -3004,-6195,-8482,-10320,-12132,-13759,-14497,-13028,-8882,-3180, 2268,6318,8460,8087,5850,3664,2604,1817,292,-1848, -3846,-5257,-5933,-5740,-4716,-3316,-1877,-693,36,565, 1103,1217,614,-407,-1252,-1580,-1463,-568,1433,3744, 5226,5927,6905,8588,10243,11138,11140,10380,9118,7801, 6729,6089,6226,7099,7967,7963,6847,5089,3187,1313, -341,-1806,-3476,-5457,-6910,-6719,-4712,-2117,-51,1308, 2658,4406,5913,6409,6220,6528,7573,8272,7940,7236, 7253,8021,9077,10106,10960,11505,11521,10746,9302,7705, 6005,3616,467,-2203,-3195,-2825,-2248,-1654,-507,954, 1848,2030,1857,1081,-966,-4064,-7254,-9532,-10298,-9283, -7188,-4751,-2165,108,1248,1481,2287,4321,6343,7092, 6858,6430,5482,3935,2575,1872,1505,1325,1797,2926, 3636,2938,737,-2381,-5610,-8175,-9673,-9832,-8201,-4635, -106,3676,5853,6674,6257,4424,1516,-1526,-4335,-7252, -10392,-12993,-14454,-14819,-14224,-12655,-10047,-6617,-3357,-1288, -294,88,-905,-4275,-9906,-15844,-20282,-22604,-22690,-20694, -17299,-13801,-11252,-9793,-9083,-8576,-7568,-6273,-5799,-6710, -8639,-11141,-13558,-15000,-14982,-13936,-12184,-9320,-5512,-2168, -248,597,655,-258,-1495,-1680,-1,2950,6034,8394, 9875,10956,12365,14320,16584,18702,20124,20018,17824,14393, 11434,9384,7261,4761,2582,1311,1069,2001,3837,5387, 5078,2409,-1728,-6190,-10150,-13131,-14823,-15099,-13966,-11806, -9081,-6049,-2645,906,3662,4586,4046,3329,3053,2849, 2044,420,-1549,-3302,-4368,-4393,-3292,-1394,503,1422, 1498,1478,1479,1138,767,935,1447,1351,306,-647, 24,2715,6240,8739,9468,9440,9742,10242,10299,10013, 9909,9854,9309,8828,9342,10616,11686,12147,12017,10820, 8127,4472,1116,-1108,-1998,-2166,-2752,-4067,-5081,-4820, -3634,-2154,-191,2192,3797,3918,3469,3561,4002,4070, 3976,4324,5049,5799,6724,8092,9630,10939,11584,11201, 9852,8022,5916,3431,686,-1839,-3802,-4984,-4552,-2030, 1110,3084,3406,2757,1514,-528,-3248,-5912,-7661,-8029, -7524,-7129,-6977,-6523,-5581,-4309,-2539,81,3142,5512, 6688,7240,7341,6513,4861,3486,3279,3999,5154,6670, 8241,9133,8668,6338,2139,-2720,-6560,-8706,-9437,-8909, -7074,-4436,-1666,1203,3877,5530,5855,5270,4170,2457, -132,-3324,-6757,-10380,-14069,-16954,-17594,-15221,-10191,-4196, 573,3006,3115,1135,-2483,-6557,-9850,-12341,-14834,-17178, -18426,-18278,-17257,-15897,-14060,-11597,-8794,-6132,-4075,-2988, -3148,-4895,-8323,-12445,-15333,-15911,-14412,-11858,-9324,-7623, -7184,-7444,-7028,-5279,-2993,-1417,-1066,-1470,-1633,-906, 726,2732,4887,7357,9799,11737,13726,16382,19080,20412, 19499,16509,12585,8668,5613,4109,3916,4247,4736,5348, 5892,5995,5046,2425,-1852,-6601,-10218,-12664,-14590,-15695, -15086,-13013,-10906,-9292,-7450,-4745,-1474,1517,3340,3424, 2238,804,-372,-1169,-1521,-1669,-2309,-3547,-4374,-3936, -2685,-1513,-455,840,1767,1487,198,-1034,-1568,-1612, -1497,-1156,-278,1163,2886,4715,6641,8624,9941,9961, 9324,9049,9284,9758,10578,11755,12867,13556,13844,13905, 13646,12815,11408,9564,7424,5310,3117,839,-973,-1661, -1501,-1430,-1454,-480,1612,3390,3863,3794,4068,4537, 4955,5493,6064,6137,5744,5661,6242,7486,9273,11249, 12579,12966,12378,10384,7011,3233,327,-1349,-2050,-1698, -165,1756,2788,2511,1392,-116,-1791,-3232,-4181,-4860, -5717,-6843,-8165,-9472,-10510,-11088,-10826,-8984,-5398,-1342, 1637,2969,3114,2414,1011,-375,-664,749,3243,5678, 7596,9325,10759,11002,9439,6354,2694,-860,-3791,-5217, -4754,-3204,-2070,-1963,-2073,-1188,1038,4205,7649,10142, 10402,8103,3613,-2043,-7340,-11128,-13244,-14043,-13423,-11058, -7518,-4060,-1201,700,983,-667,-3240,-5251,-6359,-7656, -10151,-13948,-18240,-21514,-22308,-20308,-16463,-12174,-8757,-7193, -7727,-9314,-10395,-10759,-11054,-11584,-12116,-12783,-13650,-13951, -12860,-10817,-9302,-9024,-9218,-8720,-7055,-4894,-3332,-2801, -2577,-2060,-1522,-1170,-166,2394,6359,10490,13814,16328, 17949,18202,17242,15650,13745,11455,9065,7704,8088,9629, 10804,10687,9648,8363,6661,4117,1121,-1747,-4507,-7288, -9861,-11649,-12369,-12020,-10741,-8866,-6685,-4513,-2649,-1178, 101,1411,2368,2413,1522,437,-476,-1498,-2599,-3059, -2821,-2689,-2788,-2295,-1011,184,553,317,-164,-877, -1854,-2905,-3587,-3271,-1928,-385,734,1554,2480,3436, 4085,4541,5202,5941,6540,7431,8841,10245,11047,11438, 11983,12905,13754,13885,12917,10986,8552,6141,3922,2218, 1287,755,-4,-1001,-1699,-1843,-1521,-572,1083,2801, 3814,4071,4033,3905,3433,2524,1944,2785,5235,8257, 10615,11992,12690,12525,10780,7822,5103,3461,2535,1945, 1960,2461,2684,2134,1061,-30,-705,-832,-590,-384, -774,-2203,-4869,-8330,-11391,-12875,-12673,-11501,-9767,-7364, -4446,-1739,69,730,126,-1590,-3485,-4132,-2639,743, 4979,8662,10684,10760,9434,7460,5689,4985,5209,5020, 3239,80,-3089,-5194,-5961,-5418,-3582,-573,3323,7400, 10856,12864,12558,9393,4060,-1536,-5563,-7506,-8074,-8084, -7817,-7430,-7236,-7008,-5590,-2339,1587,4035,3439,268, -3751,-7405,-10660,-13699,-16024,-17136,-17230,-16619,-15001,-12347, -9965,-9020,-9254,-9809,-10514,-11451,-12258,-12216,-11418,-10728, -10843,-11728,-12687,-12905,-12086,-10708,-9405,-8226,-6959,-5782, -5171,-5087,-5309,-5986,-6767,-6464,-4187,-395,3984,8405, 12234,14659,15236,14577,13712,13122,12774,12480,12162,12012, 11962,11867,11778,11967,12232,11701,9608,6420,3230,498, -1977,-4407,-6759,-8758,-10142,-10841,-10794,-9968,-8412,-6410, -4430,-2773,-1313,-190,487,1151,1908,2000,894,-793, -1893,-2031,-1549,-824,-28,640,1049,1267,1344,1176, 700,23,-804,-1542,-1730,-1391,-997,-705,-177,490, 777,926,1916,3708,5025,5249,5290,6112,7389,8600, 9753,11037,12314,13258,13602,13145,12075,10815,9578,8430, 7358,6281,4811,2529,-135,-2064,-2718,-2459,-1645,-228, 1503,2770,2960,2263,1367,688,416,738,1919,4192, 7271,10226,12030,12329,11397,9876,8464,7683,7597,7764, 7450,6204,4435,2959,2051,1485,1173,1358,1948,2407, 2312,1754,766,-1258,-4688,-8805,-12196,-13793,-13319,-11112, -8085,-5496,-4459,-5264,-7254,-9027,-9301,-7926,-6192,-4790, -2934,-224,2349,3782,4530,5527,6612,7119,7231,7516, 7726,6692,3665,-903,-5685,-8975,-9378,-6849,-2575,1867, 5214,6870,7363,7677,8043,7605,5741,3067,310,-2531, -5471,-7852,-8994,-8827,-7696,-5868,-3403,-732,1518,2864, 2935,1465,-1452,-5278,-8954,-11342,-12377,-12856,-13332,-13554, -13006,-11984,-11276,-11000,-10824,-10807,-11105,-11387,-11209,-10626, -10081,-10147,-11054,-12325,-13177,-13421,-13110,-11707,-9298,-7009, -6067,-6598,-7736,-8826,-9552,-9557,-8544,-6724,-4543,-1792, 1630,5381,8627,10846,11992,12319,12341,12334,12163,12095, 12729,13936,14627,14388,13963,13877,13594,12654,11344,9514, 6623,2998,-209,-2388,-4067,-5913,-7761,-9145,-9893,-10061, -9732,-8876,-7260,-5142,-3517,-2813,-2414,-1575,-647,-542, -1408,-2357,-2644,-2341,-1634,-762,-60,55,-474,-1193, -1476,-1080,-385,-116,-339,-581,-766,-1262,-1841,-1868, -1192,-254,388,549,454,470,919,1843,3231,5171, 7473,9439,10517,11104,11844,12730,13398,13851,14305,14357, 13580,12209,10810,9301,7232,4531,1932,426,388,1675, 3296,4264,4229,3146,1073,-1169,-2210,-1427,367,2189, 3922,5862,7615,8589,9069,9757,10566,10645,9696,8525, 8202,8739,8920,7516,4735,2158,878,1134,2746,5195, 7384,7980,6362,3068,-903,-4592,-7315,-8717,-8966,-8659, -8292,-7972,-7491,-7040,-7296,-8820,-10937,-12005,-11130,-8999, -6985,-5828,-5466,-5485,-4994,-2885,976,5290,8718,10870, 11482,10164,7099,3155,-537,-3367,-5243,-6437,-7073,-6612, -4556,-1456,1567,4072,6233,7859,8444,8004,6939,5014, 1697,-2322,-5780,-7991,-8973,-8725,-7251,-4989,-2458,-38, 1738,2307,1694,186,-2139,-4917,-7396,-9113,-10349,-11279, -11618,-11569,-11983,-13079,-13905,-13632,-12542,-11414,-10565,-10124, -10238,-11006,-12136,-13125,-13542,-13337,-12657,-11552,-10061,-8683, -8045,-8124,-8335,-8471,-9163,-10711,-12127,-12211,-10897,-8673, -6051,-3219,-94,3160,5959,7766,8847,9918,10928,11271, 11101,11395,12410,13607,14752,15837,16590,16670,16238,15591, 14523,12737,10291,7387,4427,1925,7,-1907,-4390,-6908, -8350,-8523,-8078,-7174,-5572,-4009,-3347,-3457,-3684,-3754, -3672,-3374,-2833,-2261,-1843,-1514,-1383,-1465,-1436,-1176, -1022,-1157,-1129,-700,-494,-1114,-2030,-2293,-1859,-1397, -1224,-1111,-935,-1043,-1709,-2601,-3061,-2841,-2182,-1158, 559,3003,5250,6376,6530,6840,8039,9914,12003,14052, 15711,16366,15356,12738,9577,7146,5969,5715,5816,6076, 6375,6383,6027,5562,4791,3030,409,-1674,-2101,-1172, 422,2411,4400,5657,5992,6061,6785,8607,11295,13765, 14664,13521,11048,8356,6026,4510,3925,3860,4093,5284, 7841,10599,11508,9844,6495,2458,-1465,-4170,-5013,-4555, -4088,-4478,-5926,-7972,-9663,-10131,-9397,-8234,-7321,-7160, -8246,-10365,-12164,-12604,-11819,-10303,-7825,-4279,-193,3836, 7339,9797,10586,9503,7097,4210,1338,-1421,-3940,-5884, -6895,-6890,-6111,-4440,-1451,2610,6489,8975,9873,9435, 7658,4768,1428,-1715,-4564,-6898,-8114,-7774,-5989,-3252, -572,1085,1694,1720,1057,-599,-2440,-3278,-3391,-4168, -6273,-8921,-11129,-12560,-13187,-12958,-12166,-11151,-10121,-9591, -9982,-10978,-11861,-12529,-13466,-14450,-14727,-14170,-13058,-11260, -8975,-7264,-7050,-8034,-9271,-10363,-11535,-12888,-14012,-14499, -13913,-12179,-9797,-7145,-4075,-720,2254,4240,5498,6365, 6776,6781,7122,8380,10290,12125,13564,14708,15741,16651, 17198,17254,17111,16840,15703,13099,9706,6434,3359,137, -2865,-4919,-5857,-6097,-5910,-5378,-4723,-4419,-4611,-4874, -4665,-3851,-2901,-2585,-2977,-3211,-2704,-1929,-1449,-970, -72,779,862,325,-319,-1072,-1907,-2431,-2274,-1649, -903,-277,112,10,-775,-2131,-3554,-4189,-3466,-2073, -1165,-1069,-1220,-1185,-916,-152,1598,4186,7020,9864, 12600,14762,15595,15099,13748,11759,9295,7000,5938,6611, 8607,10549,10693,8738,6155,4368,3507,2970,2432,1775, 840,-202,-727,-506,144,930,2022,3823,6561,10067, 13401,15438,15516,13494,9760,5523,2690,2469,4360,7001, 9433,11017,11148,9896,8583,8056,7670,6599,4899,2969, 838,-1328,-3309,-4972,-6197,-6729,-6622,-6321,-5917,-5320, -5120,-6277,-8804,-11501,-13513,-14808,-14930,-13098,-9580,-5678, -2243,1015,4347,7462,9706,10448,9442,7170,4401,1338, -2087,-5205,-6978,-7242,-6563,-4959,-2096,1777,5823,9137, 10979,10696,8301,4594,669,-2576,-4484,-5120,-5017,-4576, -3891,-3135,-2583,-2073,-1072,286,1155,952,-1,-1147, -2299,-3573,-5289,-7678,-10079,-11574,-12002,-11640,-10563,-9053, -8153,-8631,-9921,-11108,-12237,-13796,-15339,-15849,-15154,-13944, -12592,-11027,-9351,-7997,-7336,-7587,-8682,-10197,-11676,-13247, -14872,-15638,-14922,-13274,-11306,-8811,-5573,-2388,-204,1173, 2483,3786,4633,5176,5948,7257,8911,10383,11375,12103, 13195,14912,16893,18599,19566,19306,17576,14827,11930,9278, 6556,3763,1439,-309,-1963,-3646,-4851,-5222,-5047,-4841, -4846,-4954,-4962,-4787,-4573,-4616,-4860,-5079,-4882,-3855, -1928,66,928,341,-964,-2170,-2990,-3257,-2619,-1244, 174,739,-6,-1509,-2522,-2357,-1554,-1071,-1154,-1432, -1744,-2091,-2223,-2237,-2925,-4398,-5241,-4042,-924,3089, 7196,10596,12277,12196,11368,10627,10063,9689,9510,9496, 9687,10223,10748,10576,9610,8453,7325,5924,4620,4354, 4918,4654,2610,-547,-3693,-5848,-5999,-3561,901,5866, 9867,12150,12638,11829,10369,8585,6716,5478,5395,5996, 6429,6679,7341,8418,9272,9663,9842,10161,10530,10277, 8669,5684,2203,-813,-2993,-4229,-4353,-3611,-2752,-2264, -2176,-2746,-4271,-6499,-8928,-11208,-13274,-14920,-15722,-15282, -13289,-9826,-5724,-1848,1823,5529,8632,10064,9946,8970, 7120,3802,-660,-4911,-7730,-8559,-7248,-4067,72,4018, 6955,8483,8886,8559,7481,5305,2406,6,-1246,-2091, -3256,-4346,-4561,-4027,-3294,-2322,-804,940,2171,2415, 1771,564,-1086,-3207,-5656,-7849,-9144,-9561,-9481,-9036, -8085,-7121,-7012,-7986,-9410,-10817,-12376,-14087,-15444,-16166, -16212,-15395,-13557,-11082,-8730,-7103,-6354,-6458,-7386,-9204, -11784,-14377,-15860,-15882,-15003,-13742,-12089,-10101,-8119,-6214, -4100,-1728,468,2163,3382,4144,4449,4511,4848,5934, 8015,10604,12948,14843,16797,19118,20813,20742,19140,17167, 15258,13125,10744,8343,5674,2646,-197,-2263,-3422,-3768, -3407,-2712,-2495,-3342,-5066,-6850,-7644,-6876,-5100,-3676, -3254,-3331,-3327,-3148,-2748,-2080,-1626,-2026,-2963,-3252, -2301,-907,-278,-824,-2108,-3325,-3713,-3036,-1471,627, 2393,2623,910,-1788,-4206,-5805,-6642,-6623,-5517,-3563, -1098,1815,4895,7442,8864,8990,8259,7767,8516,10354, 12013,12588,12205,11130,9331,7510,6919,8087,10214,11953, 12245,10700,7539,3610,-224,-3388,-5323,-5575,-4221,-1889, 925,3945,6494,7832,8147,8251,8360,8046,7290,6706, 6455,6039,5191,4508,4792,6251,8398,10551,12206,13159, 13156,11847,9223,6185,3557,1358,-468,-1603,-1787,-1367, -863,-472,-190,-393,-1825,-4650,-8048,-10815,-12519,-13725, -14958,-15991,-16018,-14645,-11849,-7609,-2156,3536,8003,10354, 10620,9105,6189,2341,-1503,-4424,-5937,-6061,-5092,-3241, -712,2106,4603,6359,7374,7650,7076,5872,4501,2951, 941,-1349,-3307,-4628,-5483,-5799,-5017,-3022,-506,1571, 2584,2495,1649,448,-968,-2801,-4832,-6422,-7267,-7570, -7420,-6782,-6125,-6004,-6259,-6522,-7258,-9147,-11784,-14031, -15422,-16239,-16459,-15536,-13261,-10261,-7610,-6173,-6134,-7027, -8180,-9329,-10546,-11877,-13165,-14258,-14946,-14956,-14227,-13060, -11470,-9084,-6101,-3349,-1477,-336,501,1102,1343,1453, 2044,3560,5865,8453,10870,13050,14927,16482,17988,19783, 21430,21725,19855,16409,12746,9770,7632,5986,4444,2895, 1546,425,-603,-1543,-2275,-3129,-4553,-6082,-6602,-5860, -4718,-3964,-3739,-4051,-4844,-5666,-5612,-4324,-2341,-619, -17,-774,-2164,-3182,-3645,-4032,-4458,-4401,-3505,-1989, -176,1662,2805,2297,-9,-3276,-6325,-8319,-8705,-7358, -4845,-2324,-925,-740,-744,314,2694,5631,8319,10498, 12022,12469,11524,9710,8083,7384,7671,8777,10662,13019, 15066,15799,14748,12161,8599,4624,1069,-1181,-1878,-1668, -1453,-1279,-517,1053,2984,4883,6826,8780,10120,10131, 8752,6790,5209,4378,4173,4453,5326,6695,8281,10114, 12307,14159,14497,12814,9842,6773,4281,2522,1601,1305, 1035,485,-118,-511,-648,-686,-881,-1676,-3433,-6277, -9979,-14082,-17538,-19395,-19497,-18095,-14971,-9960,-4043,1226, 4991,7280,8171,7400,5122,2081,-786,-2979,-4371,-4779, -4297,-3386,-2320,-859,1296,4041,6697,8350,8781,8425, 7467,5620,2870,-146,-2694,-4494,-5509,-5553,-4518,-2741, -691,1150,2345,2543,1750,476,-757,-1845,-3176,-4996, -6835,-7680,-7077,-5678,-4389,-3609,-3450,-4350,-6523,-9370, -12002,-13939,-15148,-15637,-15479,-14773,-13613,-12177,-10621,-9021, -7512,-6585,-6869,-8033,-9201,-10106,-11376,-13367,-15490,-16691, -16448,-14888,-12530,-10039,-8019,-6716,-5851,-4793,-3133,-1230, 152,621,538,755,1678,3252,5465,8454,11866,15003, 17385,19013,20163,20700,20095,17990,15037,12359,10599,9519, 8574,7380,5586,2989,159,-1832,-2656,-2809,-2836,-2863, -2925,-3247,-4066,-5253,-6291,-6669,-6525,-6226,-5653,-4283, -2086,-131,306,-954,-3078,-5205,-6860,-7390,-6240,-3752, -1084,709,1281,812,-401,-2050,-3554,-4277,-4210,-4024, -4381,-5177,-5809,-6097,-6343,-6338,-5114,-2129,1871,5623, 8351,9887,10045,8849,7061,5717,5419,6263,8117,10607, 12977,14425,14755,14162,13067,11790,10334,8386,5917,3181, 580,-1422,-2391,-2185,-1127,124,1479,3343,5755,7988, 9272,9435,8671,7164,5134,3346,2763,3679,5525,7466, 9173,10638,11672,12057,11956,11587,10879,9649,8034,6392, 4834,3196,1602,662,845,2020,3347,3953,3535,2113, -376,-4041,-8654,-13388,-17229,-19552,-20001,-18434,-15215,-11190, -6966,-2746,1127,3792,4711,4318,3476,2482,1116,-611, -2378,-3707,-4325,-4347,-3994,-3009,-893,2269,5531,7966, 9198,9162,7918,5851,3642,1684,-214,-2280,-4047,-4834, -4421,-3188,-1580,229,2062,3330,3275,1681,-729,-2792, -4036,-4635,-4837,-4700,-4237,-3570,-2944,-2545,-2695,-3691, -5721,-8363,-10531,-11436,-11629,-12225,-13427,-14445,-14570,-13633, -11747,-9242,-6861,-5579,-5911,-7505,-9491,-10981,-11758,-12233, -12923,-13922,-14885,-15398,-15074,-13553,-11123,-8850,-7402,-6344, -4923,-3377,-2504,-2420,-2548,-2441,-1916,-742,1515,4980, 9072,12692,14960,15939,16380,16831,17108,17175,17163,16779, 15457,13227,10790,8647,6562,4125,1794,343,-171,-300, -329,-378,-781,-2031,-4203,-6671,-8483,-8813,-7529,-5164, -2644,-870,-528,-1602,-3427,-5220,-6357,-6560,-5812,-4289, -2531,-1308,-1087,-1596,-2196,-2453,-2239,-1622,-796,-285, -698,-2138,-4190,-6405,-8500,-10008,-9968,-7857,-4317,-676, 2095,3774,4624,4937,4965,5006,5261,5705,6254,6953, 7958,9386,11034,12499,13593,14202,14188,13376,12011,10488, 8851,6610,3612,634,-1282,-1839,-1351,-91,1944,4363, 6428,7636,7801,7072,5997,5140,4793,4971,5397,5722, 5907,6381,7499,8957,10226,11200,12153,12988,12938,11592, 9345,7003,5010,3400,2331,2196,3269,5154,6821,7493, 6884,4895,1525,-2817,-7296,-11280,-14650,-17244,-18435,-17813, -15681,-12824,-9885,-6964,-3978,-1016,1350,2627,2923,2648, 1753,-6,-2324,-4352,-5499,-5786,-5247,-3738,-1444,981, 3058,4882,6697,8307,9003,8089,5676,2746,217,-1673, -3038,-3655,-3292,-2167,-712,836,2190,2694,1851,18, -1811,-2899,-3177,-2927,-2490,-2090,-2027,-2534,-3287,-3477, -2803,-2165,-2795,-4916,-7520,-9585,-10988,-12001,-12532,-12473, -12051,-11552,-10815,-9575,-8040,-6846,-6503,-6915,-7627,-8380, -9227,-10141,-10977,-11923,-13332,-14894,-15647,-14798,-12563,-9861, -7632,-6345,-5988,-6187,-6441,-6369,-5782,-4663,-3072,-1201, 868,3169,5572,7905,10136,12137,13642,14648,15719,17355, 18966,19459,18426,16114,13003,9634,6749,5095,4777,5078, 5129,4468,2969,647,-2169,-4860,-6572,-6808,-5903,-4619, -3529,-2754,-2422,-2800,-3952,-5336,-6255,-6462,-6005,-4896, -3496,-2630,-2978,-4251,-5371,-5397,-4172,-2180,36,1740, 2206,952,-1650,-4488,-6605,-7823,-8454,-8596,-8109,-6936, -5230,-3125,-928,831,1773,1996,2075,2457,3148,3922, 4726,5755,7066,8323,9231,10162,11823,14077,15835,16108, 14938,12763,9859,6675,3962,2214,1370,1198,1467,2043, 2796,3621,4357,4864,5250,5625,5740,5365,4793,4647, 4902,4961,4642,4616,5586,7542,9902,11959,13251,13508, 12714,10994,8683,6389,4727,3847,3718,4609,6471,8484, 9723,9920,9228,7517,4404,87,-4457,-8272,-11045,-13164, -14956,-16205,-16517,-15549,-13291,-9854,-5895,-2488,-381,500, 920,1194,921,-192,-1815,-3363,-4659,-5723,-6268,-5664, -3669,-979,1543,3775,6056,8083,8862,7772,5324,2520, 115,-1372,-1614,-938,-233,-70,-229,-292,-186,-25, 8,-315,-967,-1752,-2505,-3130,-3335,-2869,-2093,-1651, -1605,-1581,-1505,-1810,-2684,-4045,-5917,-8167,-10048,-10882, -10848,-10708,-10852,-11135,-11215,-10905,-10139,-8894,-7344,-5966, -5412,-6047,-7672,-9566,-11179,-12449,-13354,-13645,-13310,-12743, -12119,-11138,-9783,-8683,-8457,-8900,-9256,-8968,-7967,-6382, -4405,-2413,-751,380,1212,2288,4046,6596,9850,13587, 17157,19473,19794,18440,16468,14660,13134,11966,11303,11167, 11097,10438,8769,6082,2863,-170,-2409,-3445,-3177,-2116, -1172,-1033,-1795,-3268,-5085,-6407,-6317,-4975,-3637,-3320, -3933,-4763,-5407,-5869,-6166,-6086,-5297,-3770,-1998,-563, 360,943,1042,220,-1584,-3841,-5973,-7611,-8426,-8228, -7307,-6280,-5575,-5060,-4352,-3230,-1893,-791,-61,626, 1363,1683,1510,1657,2969,5322,7941,10371,12569,14391, 15397,15325,14280,12537,10336,8026,6063,4863,4352,3972, 3262,2453,2234,2758,3443,3968,4509,5123,5409,4970, 4024,3104,2533,2379,2761,3928,5871,8076,9998,11524, 12729,13204,12103,9459,6589,4817,4334,4696,5708,7228, 8794,9991,10788,11280,11280,10329,7994,4354,0,-4236, -7767,-10529,-12607,-13987,-14700,-14767,-13794,-11421,-8208,-5299, -3229,-1766,-555,390,850,607,-531,-2602,-5052,-6943, -7426,-6228,-3729,-685,2143,4144,5092,5198,4945,4816, 4692,4007,2658,1329,651,504,461,449,569,643, 470,167,-82,-393,-978,-1877,-2812,-3253,-2976,-2210, -1225,-151,715,774,-309,-2003,-3390,-4191,-4819,-5604, -6561,-7747,-9212,-10604,-11421,-11540,-11190,-10514,-9498,-8209, -6942,-6204,-6376,-7338,-8526,-9580,-10679,-11852,-12543,-12309, -11423,-10582,-10250,-10511,-11353,-12417,-12990,-12489,-11056,-9233, -7546,-6328,-5719,-5680,-5928,-5818,-4614,-1991,1586,5276, 8690,11790,14211,15265,14854,13851,13428,14088,15516,16915, 17485,16847,14918,11933,8554,5727,3939,2918,2250,1836, 1496,804,-557,-2079,-2949,-3090,-3005,-3099,-3223,-3123, -2957,-3265,-4328,-5689,-6660,-7034,-6972,-6368,-4901,-2776, -752,657,1401,1496,809,-496,-1908,-3006,-3802,-4672, -5790,-6851,-7314,-6977,-6225,-5421,-4362,-2954,-1703,-1154, -1199,-1459,-1886,-2378,-2212,-766,1570,4055,6478,8979, 11383,13194,14003,13788,13019,12277,11573,10484,8822,7055, 5672,4634,3892,3558,3621,3832,4107,4605,5246,5567, 5148,3983,2371,706,-380,-286,1260,3923,6818,9045, 10329,10967,11246,11050,10090,8440,6469,4672,3676,3913, 5222,6897,8422,9865,11388,12750,13295,12616,10721,7810, 4104,-129,-4090,-7100,-9069,-10619,-12280,-13724,-14138,-13115, -10849,-7649,-4088,-1202,207,163,-558,-1520,-2739,-4128, -5319,-5939,-5798,-4873,-3336,-1475,509,2319,3531,4016, 4179,4336,4343,4003,3478,2881,2126,1315,1054,1719, 2813,3329,2756,1364,-216,-1427,-2101,-2323,-2185,-1765, -1210,-779,-510,-288,-86,-28,-53,-118,-472,-1492, -3011,-4445,-5558,-6735,-8248,-9895,-11097,-11342,-10634,-9374, -7949,-6629,-5866,-6168,-7609,-9368,-10412,-10420,-9825,-9211, -8845,-8910,-9519,-10518,-11589,-12469,-13030,-13157,-12673,-11356, -9473,-7981,-7854,-8986,-10338,-10979,-10635,-9163,-6354,-2405, 1478,4188,5461,5812,6236,7474,9531,11955,14347,16314, 17382,17405,16785,16032,14987,13319,11466,9974,8694,7115, 5384,4018,3028,1939,539,-854,-1758,-1846,-1259,-557, -269,-699,-1974,-3906,-5907,-7168,-7469,-7265,-6860,-5918, -4371,-2736,-1596,-893,-211,485,833,575,-285,-1571, -3029,-4464,-5734,-6675,-7130,-7007,-6275,-4889,-3230,-2092, -1978,-2672,-3618,-4468,-5001,-4833,-3792,-2181,-429,1423, 3590,6073,8555,10605,11956,12586,12689,12454,12069,11517, 10522,8778,6491,4569,3911,4447,5410,6283,6998,7379, 6942,5626,3928,2246,642,-711,-1363,-828,957,3432, 5906,7945,9455,10337,10476,9970,9133,8043,6453,4477, 2898,2655,3902,6013,8384,10539,12144,12997,13190,12902, 12127,10665,8326,5158,1520,-2253,-6023,-9580,-12342,-13685, -13616,-12553,-10773,-8292,-5452,-3013,-1645,-1493,-2277,-3467, -4444,-4909,-5044,-5147,-5284,-5251,-4672,-3202,-1064,1004, 2436,3270,3707,3592,2894,2106,1936,2543,3414,3952, 4006,3797,3544,3142,2327,1231,275,-446,-1155,-1764, -1930,-1620,-1223,-1003,-828,-568,-358,-173,311,1173, 1855,1466,-420,-3199,-5818,-7542,-8534,-9227,-9491,-8910, -7807,-7036,-6894,-7117,-7617,-8612,-9808,-10365,-9899,-8779, -7639,-6970,-7218,-8528,-10613,-12703,-13745,-13129,-11376,-9698, -8926,-9131,-10111,-11645,-13176,-13891,-13359,-11915,-10117,-8206, -6243,-4444,-3006,-1827,-567,1029,2921,4919,7045,9527, 12294,14640,15904,16144,15891,15542,15256,15058,14752,13928, 12388,10368,8195,5963,3804,2090,1224,1194,1592,1960, 2028,1731,1029,-116,-1689,-3465,-5091,-6389,-7284,-7533, -7001,-6039,-5194,-4469,-3399,-1815,-146,1091,1761,1677, 539,-1568,-3910,-5546,-6093,-5939,-5682,-5497,-5057,-4129, -3046,-2440,-2565,-3378,-4701,-6093,-6816,-6443,-5250,-3909, -2703,-1395,254,2265,4681,7402,10103,12291,13395,13220, 12180,10825,9286,7557,5917,4924,4942,5860,7304,8748, 9502,9058,7480,5423,3503,1868,393,-946,-1801,-1696, -454,1621,4215,6959,9382,10825,10900,9811,8130,6315, 4747,3762,3440,3527,3857,4611,6071,8171,10475,12438, 13761,14631,15195,14996,13224,9803,5545,1194,-3048,-6962, -9882,-11258,-11283,-10506,-9282,-7825,-6292,-4826,-3658,-2972, -2847,-3215,-4151,-5538,-6809,-7206,-6705,-5764,-4479,-2639, -620,663,925,821,999,1439,1749,1794,1912,2483, 3460,4469,5127,5253,4769,3747,2554,1729,1403,1155, 593,-155,-875,-1629,-2405,-2890,-2604,-1422,259,1865, 3059,3677,3518,2257,-141,-3061,-5638,-7270,-7728,-7074, -5866,-5079,-5419,-6754,-8357,-9517,-9918,-9529,-8519,-7304, -6521,-6666,-7868,-9702,-11388,-12198,-11977,-11050,-9918,-9069, -8762,-8906,-9364,-10323,-11904,-13596,-14482,-14316,-13467,-12363, -11130,-9847,-8736,-7904,-7173,-6227,-4887,-3091,-804,1910, 4654,6992,8658,9874,11148,12670,14163,15407,16468,17324, 17436,16283,14183,11798,9521,7305,5244,3814,3387,3745, 4231,4262,3753,2922,2039,1183,318,-705,-2196,-4285, -6457,-7849,-8092,-7486,-6405,-4991,-3267,-1427,182,1354, 1944,1678,380,-1695,-3851,-5310,-5708,-5305,-4587,-3833, -3262,-3072,-3197,-3289,-3205,-3276,-3890,-4972,-6017,-6579, -6621,-6389,-5993,-5225,-3739,-1341,1850,5458,8938,11467, 12377,11826,10570,9152,7711,6471,5901,6133,6723,7244, 7756,8606,9727,10408,9813,7703,4713,1803,-538,-2221, -3024,-2595,-1068,999,3252,5587,7679,8961,9158,8602, 7708,6624,5357,4097,3206,2793,2534,2314,2656,4332, 7356,10864,13855,15952,17054,16774,14872,11705,8061,4440, 967,-2365,-5454,-8049,-9750,-10207,-9331,-7442,-5380,-4036, -3729,-4031,-4468,-5032,-5898,-6895,-7533,-7565,-7115,-6206, -4776,-3030,-1501,-650,-508,-747,-958,-819,-198,841, 2015,2937,3372,3525,3783,4206,4483,4449,4270,4094, 3815,3230,2219,705,-1215,-3056,-4097,-3846,-2383,-201, 2190,4222,5190,4547,2464,-41,-1840,-2503,-2447,-2333, -2547,-3340,-4769,-6473,-7757,-8199,-7926,-7353,-6660,-5881, -5372,-5631,-6814,-8471,-9931,-10884,-11348,-11354,-10705,-9439, -8148,-7507,-7696,-8463,-9620,-11089,-12489,-13243,-13204,-12809, -12540,-12493,-12530,-12489,-12119,-11250,-9859,-8142,-6414,-4844, -3237,-1356,613,2258,3509,4810,6733,9339,12225,14896, 16880,17707,17301,16125,14770,13368,11794,9940,8009,6384, 5319,4819,4729,4876,5126,5223,4833,3902,2733,1454, -232,-2657,-5437,-7698,-8873,-8723,-7336,-5140,-2817,-969, 197,827,1085,851,-113,-1696,-3199,-3949,-4022,-3988, -4072,-4043,-3732,-3330,-3141,-3030,-2636,-1981,-1768,-2699, -4658,-6835,-8550,-9433,-9206,-7757,-5422,-2776,-46,2930, 6042,8630,10145,10528,10077,9025,7576,6087,5143,5258, 6382,7884,9286,10572,11691,12123,11284,9154,6236,3202, 536,-1236,-1829,-1494,-708,361,1762,3430,5037,6396, 7583,8620,9194,8783,7110,4671,2358,820,180,423, 1564,3477,5882,8634,11630,14556,16736,17539,16906,15029, 12082,8384,4400,667,-2512,-5050,-6858,-7692,-7437,-6324, -4863,-3654,-3167,-3659,-4965,-6438,-7357,-7521,-7349,-7182, -6877,-6139,-5064,-4099,-3481,-3096,-2742,-2382,-2034,-1533, -665,415,1226,1540,1531,1464,1499,1993,3415,5623, 7569,7962,6407,3608,605,-1820,-3257,-3499,-2614,-1038, 495,1401,1679,1716,1741,1711,1655,1712,1796,1574, 824,-373,-1892,-3705,-5562,-6939,-7431,-7086,-6244,-5182, -4201,-3720,-4174,-5676,-7776,-9634,-10574,-10531,-9946,-9328, -8852,-8519,-8291,-8184,-8202,-8454,-9106,-10101,-10989,-11339, -11326,-11535,-12312,-13459,-14446,-14808,-14357,-13035,-11051,-8964, -7465,-6805,-6494,-5859,-4572,-2770,-680,1584,4043,6571, 9072,11605,14058,15973,16743,16311,15327,14448,13551,12083, 10049,8115,6762,5968,5623,5815,6506,7280,7553,6976, 5544,3431,818,-2031,-4666,-6567,-7525,-7632,-6925,-5359, -3332,-1679,-962,-857,-723,-402,-261,-542,-1184,-2081, -3236,-4383,-5125,-5197,-4551,-3423,-2217,-1233,-646,-679, -1482,-2883,-4598,-6541,-8602,-10220,-10684,-9837,-8082,-5777, -2970,291,3620,6413,8157,8700,8225,7132,5798,4686, 4292,4814,6207,8213,10357,11957,12468,11869,10641,9205, 7629,5871,3982,2068,280,-1152,-1813,-1460,-154,1780, 3992,6164,7959,8924,8870,8064,6873,5341,3309,1015, -707,-1138,-337,1196,3324,6105,9392,12715,15524,17443, 18102,17182,14704,11174,7331,3736,583,-1982,-3640,-4191, -3991,-3722,-3679,-3665,-3695,-4129,-5151,-6377,-7216,-7331, -6878,-6229,-5704,-5566,-5878,-6388,-6529,-5809,-4173,-2206, -685,-17,-277,-1253,-2384,-2931,-2342,-616,1798,4320, 6459,7747,7772,6425,4267,2163,715,-25,-319,-341, -133,18,-91,-341,-351,2,633,1557,2827,4176, 4893,4332,2472,-19,-2316,-3961,-4901,-5256,-5086,-4509, -3848,-3428,-3325,-3575,-4395,-5929,-7695,-8809,-8992,-8686, -8422,-8325,-8363,-8641,-9169,-9496,-9102,-8053,-7123,-7187, -8294,-9760,-10977,-11913,-12825,-13703,-14318,-14508,-14202,-13288, -11880,-10538,-9747,-9490,-9271,-8701,-7708,-6347,-4528,-2151, 555,3123,5359,7629,10247,12968,15080,16136,16206,15540, 14299,12696,10994,9347,7948,7105,7090,7871,9023,9910, 10014,9146,7367,4847,1925,-746,-2574,-3602,-4369,-5185, -5741,-5645,-4919,-3745,-2344,-1025,-85,394,457,23, -994,-2395,-3700,-4536,-4830,-4661,-4140,-3220,-1926,-540, 411,518,-196,-1550,-3494,-5871,-8168,-9902,-10981,-11265, -10329,-7895,-4405,-834,2040,4032,5144,5354,4821,4060, 3730,4180,5077,5891,6535,7370,8570,9902,11067,11871, 12063,11354,9738,7688,5661,3720,1731,-213,-1468,-1568, -645,866,2712,4796,6797,8174,8625,8235,7222,5706, 3796,1668,-355,-1928,-2622,-1990,96,3339,7121,10750, 13738,15857,16959,16762,15169,12487,9362,6248,3410,1275, 125,-297,-688,-1554,-2790,-4053,-5043,-5515,-5401,-4903, -4480,-4556,-5347,-6692,-8107,-8977,-8971,-8051,-6297,-4023, -2110,-1476,-2170,-3427,-4420,-4844,-4678,-3846,-2286,-192, 1982,3820,5057,5516,5193,4308,3373,2952,3049,3027, 2379,1267,133,-919,-1865,-2305,-1806,-413,1289,2756, 3876,4720,4995,4284,2520,238,-1744,-2900,-3196,-2841, -2261,-2067,-2577,-3477,-4116,-4291,-4375,-4734,-5315,-5895, -6481,-7234,-8124,-8883,-9243,-9223,-9003,-8618,-7955,-7114, -6574,-6635,-7283,-8420,-9910,-11393,-12341,-12670,-12793,-13005, -13179,-13084,-12738,-12324,-11922,-11516,-11090,-10600,-9971,-9114, -7838,-6022,-3843,-1543,865,3523,6443,9520,12475,14676, 15466,14707,13039,11364,10113,9250,8868,9041,9615,10162, 10424,10351,9981,9247,8051,6460,4680,2858,866,-1331, -3352,-4664,-5204,-5356,-5257,-4549,-3093,-1400,-187,245, 44,-543,-1459,-2593,-3665,-4381,-4692,-4732,-4437,-3519, -1984,-278,1168,2042,1943,413,-2503,-6001,-8932,-10589, -10903,-10247,-9056,-7483,-5513,-3332,-1272,396,1646,2450, 2808,2879,3009,3318,3757,4380,5350,6624,7951,9230, 10579,11904,12764,12683,11544,9633,7415,5273,3343,1681, 418,-278,-375,147,1482,3626,6082,8075,9032,8942, 8027,6422,4325,2034,-145,-2018,-3299,-3459,-2012,1114, 5217,9166,12207,14190,15095,14833,13586,12050,10852,9958, 8873,7256,5143,2666,115,-2015,-3147,-3057,-2244,-1676, -1948,-2850,-3975,-5292,-6872,-8315,-8965,-8591,-7492,-6043, -4535,-3414,-3194,-3966,-5241,-6325,-6706,-6173,-4816,-3101, -1531,-426,199,755,1674,2885,3864,4269,4368,4584, 4797,4500,3396,1650,-347,-2061,-2873,-2471,-1153,523, 2119,3342,3963,3923,3359,2615,1985,1517,978,211, -624,-1263,-1676,-2074,-2538,-2976,-3278,-3395,-3320,-3187, -3376,-4132,-5301,-6530,-7590,-8391,-8795,-8659,-8008,-7175, -6639,-6588,-6719,-6731,-6883,-7555,-8648,-9719,-10488,-11050, -11499,-11842,-12166,-12594,-13042,-13182,-12790,-12049,-11467,-11340, -11468,-11345,-10744,-9834,-8499,-6203,-2764,1137,4683,7547, 9752,11207,11793,11745,11433,11024,10630,10385,10379,10560, 10815,11025,11131,11184,11223,11067,10381,9117,7551,5774, 3585,1058,-1290,-2955,-3835,-4105,-3916,-3438,-2848,-2150, -1209,-164,575,533,-482,-2182,-4000,-5359,-5940,-5635, -4451,-2537,-400,1292,2158,2188,1452,-57,-2265,-4779, -7007,-8544,-9344,-9484,-8980,-7910,-6522,-5145,-3821,-2379, -841,391,1009,1175,1254,1443,1817,2551,3825,5505, 7177,8504,9643,10895,12150,12842,12537,11294,9508,7415, 5167,3126,1687,791,205,132,1058,3020,5403,7553, 9095,9854,9595,8011,5124,1596,-1512,-3332,-3586,-2523, -536,1854,4043,5843,7500,9252,10976,12411,13525,14324, 14389,13368,11376,8896,6314,3901,1973,800,529,943, 1381,1019,-510,-2843,-5189,-6813,-7381,-7050,-6346,-5772, -5436,-5123,-4858,-4937,-5482,-6216,-6767,-6935,-6628,-5847, -4709,-3540,-2727,-2431,-2379,-2012,-934,884,3124,5191, 6380,6336,5314,3922,2496,1077,-174,-893,-897,-399, 214,829,1503,2247,2791,2869,2624,2546,2827,3056, 2775,2044,1101,-8,-1132,-1790,-1757,-1420,-1362,-1679, -2060,-2342,-2697,-3398,-4500,-5731,-6677,-7179,-7341,-7303, -7010,-6574,-6339,-6447,-6666,-6837,-7042,-7316,-7550,-7799, -8386,-9472,-10767,-11789,-12281,-12301,-12022,-11656,-11427,-11536, -12109,-13063,-14053,-14560,-14223,-12975,-10920,-8245,-5182,-2086, 866,3569,5826,7389,8242,8760,9333,9986,10388,10293, 9941,9818,10201,10921,11702,12414,12876,12760,11922,10605, 9210,7803,6159,4157,1965,-180,-2083,-3470,-4011,-3470, -2059,-501,544,938,785,-25,-1537,-3358,-4790,-5483, -5522,-4965,-3666,-1720,278,1661,2186,1980,1286,189, -1270,-2971,-4719,-6370,-7773,-8638,-8632,-7766,-6565,-5562, -4776,-3878,-2836,-1943,-1355,-966,-595,-186,332,1069, 2094,3373,4888,6664,8596,10367,11538,11934,11775,11399, 10791,9607,7675,5218,2675,513,-747,-597,1066,3789, 6723,8950,9848,9296,7712,5684,3692,1940,459,-697, -1328,-1291,-838,-358,158,1199,3127,5819,8884,11742, 13764,14432,13702,12161,10430,8813,7460,6517,5988,5609, 5021,3962,2470,820,-888,-2738,-4531,-5619,-5593,-4829, -4147,-3973,-4255,-4904,-5864,-6775,-7149,-6887,-6363,-5919, -5676,-5586,-5630,-5782,-5919,-5702,-4821,-3281,-1445,421, 2345,4110,5198,5165,4199,2928,1945,1448,1279,1196, 999,656,342,316,673,1249,1767,2179,2609,3055, 3351,3292,2922,2392,1762,990,216,-313,-441,-233, -12,-126,-724,-1650,-2653,-3542,-4174,-4505,-4705,-5011, -5506,-5987,-6343,-6670,-6916,-6813,-6277,-5698,-5581,-6088, -6953,-7794,-8475,-9117,-9729,-10128,-10180,-9995,-9855,-9969, -10392,-11302,-12835,-14659,-15970,-16244,-15606,-14406,-12749,-10669, -8375,-6044,-3569,-807,1977,4250,5671,6337,6682,7057, 7526,8085,8822,9691,10460,10896,11144,11582,12319,13025, 13249,12856,11866,10228,7990,5480,3072,1001,-714,-1881, -2172,-1468,-168,1014,1510,1171,116,-1354,-2822,-3959, -4702,-5134,-5195,-4663,-3494,-1923,-361,869,1679,2051, 1877,983,-558,-2340,-3937,-5190,-6126,-6750,-7116,-7275, -7115,-6429,-5303,-4243,-3545,-3154,-3000,-3088,-3200,-2863, -1835,-354,1072,2113,2874,3862,5533,7897,10476,12615, 13739,13517,11994,9714,7216,4679,2309,761,695,2034, 3984,5809,7245,8172,8325,7668,6649,5869,5433,4901, 3745,1890,-190,-1933,-2962,-3043,-2052,-103,2406,5044, 7543,9637,11016,11414,10962,10236,9771,9662,9733,9819, 9793,9373,8169,6037,3392,971,-728,-1694,-2160,-2424, -2694,-3067,-3544,-4100,-4731,-5396,-5987,-6305,-6177,-5710, -5347,-5553,-6342,-7309,-8036,-8340,-8137,-7312,-5866,-4089, -2347,-763,656,1806,2542,2894,2940,2788,2480,2077, 1670,1387,1222,965,514,128,251,880,1578,2097, 2532,2958,3123,2785,2179,1712,1517,1527,1655,1827, 1863,1476,625,-339,-988,-1280,-1537,-2018,-2627,-3164, -3653,-4268,-4968,-5513,-5738,-5734,-5585,-5246,-4776,-4592, -5117,-6258,-7499,-8405,-8844,-8823,-8392,-7736,-7285,-7434, -8118,-8992,-9868,-10860,-12116,-13558,-14943,-16080,-16740,-16637, -15561,-13543,-10940,-8266,-5830,-3661,-1661,218,1929,3385, 4476,5165,5623,6221,7112,7975,8564,9096,9993,11395, 13064,14563,15373,15119,13796,11705,9223,6662,4280,2385, 1253,883,1010,1301,1566,1797,1933,1675,722,-799, -2431,-3852,-4997,-5687,-5577,-4619,-3237,-1867,-667,324, 1030,1427,1574,1457,807,-694,-2878,-4935,-6079,-6223, -5921,-5718,-5663,-5590,-5476,-5393,-5260,-4880,-4295,-3759, -3492,-3418,-3320,-3133,-2889,-2375,-1139,1098,4185,7676, 10937,13264,13993,12916,10558,7937,5876,4621,4006,3776, 3785,3981,4322,4804,5466,6324,7269,8067,8469,8365, 7672,6320,4373,2084,-211,-2186,-3435,-3456,-2053,319, 2768,4574,5590,6123,6562,7168,8006,9047,10167,11201, 11933,12165,11786,10715,9003,6982,5162,3792,2739,1742, 796,-35,-883,-2018,-3343,-4350,-4608,-4279,-3890,-3748, -3832,-4147,-4887,-6053,-7297,-8289,-8890,-9064,-8755,-7911, -6666,-5291,-4005,-2746,-1387,-86,826,1304,1693,2208, 2617,2542,1961,1215,561,82,-56,329,1099,1780, 2002,1845,1619,1480,1414,1466,1648,1898,2111,2233, 2266,2189,1982,1570,959,395,108,-12,-285,-888, -1782,-2892,-4091,-5036,-5373,-5074,-4427,-3790,-3396,-3499, -4205,-5265,-6232,-6876,-7291,-7662,-8018,-8215,-8070,-7501, -6734,-6163,-6112,-6716,-7893,-9396,-11018,-12751,-14632,-16357, -17336,-17238,-16286,-14949,-13398,-11554,-9450,-7276,-5181,-3056, -896,990,2276,2983,3349,3554,3716,4109,5137,6921, 9151,11432,13457,15036,15884,15645,14330,12423,10484,8578, 6505,4415,2939,2536,3009,3734,4186,4119,3457,2273, 873,-412,-1552,-2724,-3990,-5085,-5625,-5386,-4379,-2787, -948,714,1821,2134,1737,968,97,-882,-1984,-3041, -3774,-4163,-4494,-5018,-5696,-6257,-6381,-5831,-4684,-3405, -2609,-2726,-3732,-5218,-6645,-7486,-7282,-5701,-2815,791, 4344,7199,9206,10467,10990,10694,9682,8368,7190,6301, 5647,5098,4547,3906,3340,3340,4344,6218,8268,9758, 10360,10037,8764,6594,3935,1474,-238,-1123,-1384,-1160, -432,647,1586,2065,2287,2675,3455,4630,6233,8223, 10147,11346,11645,11395,10963,10419,9720,8972,8257,7452, 6307,4740,2954,1207,-305,-1502,-2325,-2669,-2604,-2379, -2214,-2168,-2283,-2774,-3890,-5494,-7086,-8233,-8785,-8779, -8366,-7800,-7331,-6904,-6213,-5056,-3508,-1829,-290,866, 1493,1617,1451,1182,944,739,568,532,766,1211, 1619,1772,1634,1327,1015,825,927,1369,1943,2321, 2306,1946,1493,1173,1236,1835,2694,3125,2631,1362, -29,-1110,-1963,-2788,-3532,-3965,-4003,-3762,-3400,-3032, -2789,-2866,-3371,-4222,-5222,-6262,-7322,-8187,-8491,-8151, -7451,-6679,-5893,-5122,-4699,-5073,-6313,-8019,-9761,-11393, -13033,-14612,-15871,-16583,-16789,-16635,-16115,-15011,-13119,-10543, -7647,-4882,-2715,-1428,-896,-691,-390,121,708,1385, 2430,4138,6531,9330,12095,14354,15630,15590,14369,12497, 10604,9023,7731,6617,5629,4887,4537,4596,4927,5215, 5099,4339,2958,1246,-568,-2414,-4174,-5441,-5765,-5103, -3840,-2445,-1141,-84,510,576,408,361,493,570, 317,-459,-1847,-3721,-5638,-6879,-6923,-5860,-4357,-3092, -2320,-2074,-2493,-3798,-5768,-7706,-8967,-9288,-8591,-6846, -4236,-1277,1471,3731,5611,7202,8405,9166,9598,9647, 9075,7786,6024,4292,2993,2352,2462,3409,5185,7467, 9554,10784,10891,9941,8182,6068,4159,2820,1989,1425, 983,638,310,-84,-451,-493,7,1026,2383,3913, 5419,6740,7809,8664,9374,9946,10361,10659,10837,10841, 10568,9854,8591,6844,4783,2639,741,-504,-892,-698, -475,-526,-795,-1197,-1788,-2564,-3418,-4342,-5450,-6657, -7670,-8344,-8798,-9121,-9139,-8623,-7582,-6262,-4855,-3381, -1859,-572,37,-123,-581,-689,-217,524,1101,1322, 1165,718,302,316,812,1400,1674,1636,1523,1397, 1135,764,551,712,1171,1718,2248,2807,3345,3580, 3213,2231,959,-232,-1251,-2175,-2936,-3371,-3416,-3134, -2633,-2036,-1595,-1609,-2223,-3261,-4505,-5869,-7213,-8149, -8310,-7705,-6667,-5642,-4988,-4782,-4844,-5012,-5296,-5783, -6643,-8049,-10122,-12571,-14794,-16393,-17305,-17603,-17230,-16210, -14675,-12671,-10199,-7417,-4904,-3343,-2951,-3278,-3650,-3625, -3041,-1859,-70,2220,4832,7548,10130,12320,13835,14452, 14166,13266,12038,10501,8768,7289,6427,6106,6065,6256, 6791,7447,7575,6613,4554,1978,-405,-2177,-3141,-3435, -3400,-3386,-3531,-3683,-3484,-2725,-1550,-226,1064,2087, 2454,1931,610,-1157,-3050,-4817,-6094,-6407,-5583,-4016, -2346,-1192,-956,-1740,-3290,-5146,-6853,-8121,-8851,-9039, -8696,-7864,-6608,-5003,-3078,-779,1899,4751,7322,9228, 10202,10054,8800,6809,4717,3047,2060,1927,2817,4555, 6595,8347,9471,9851,9559,8823,7981,7270,6617,5792, 4717,3517,2353,1307,406,-284,-627,-553,-138,576, 1616,2879,4015,4718,5147,5796,6897,8265,9620,10890, 11971,12542,12255,11134,9556,7886,6275,4767,3457,2441, 1692,1131,768,614,487,145,-466,-1077,-1497,-1927, -2820,-4448,-6509,-8322,-9412,-9747,-9450,-8606,-7438,-6298, -5412,-4713,-4002,-3179,-2302,-1464,-758,-265,-22,50, 44,4,-21,73,357,846,1509,2075,2191,1793, 1189,730,458,256,153,312,801,1528,2370,3198, 3811,4029,3813,3237,2341,1097,-449,-1953,-2945,-3179, -2756,-1998,-1193,-605,-496,-1039,-2101,-3200,-4013,-4650, -5433,-6404,-7217,-7516,-7266,-6609,-5667,-4690,-4040,-3870, -3934,-4048,-4436,-5532,-7445,-9858,-12363,-14775,-16837,-18144, -18301,-17252,-15377,-13173,-10985,-8959,-7302,-6246,-5863,-5918, -6051,-6007,-5559,-4475,-2711,-538,1741,4138,6835,9706, 12252,13910,14379,13667,12055,10063,8434,7672,7748,8319, 8942,9258,9116,8571,7706,6614,5412,4167,2854,1468, 141,-1087,-2335,-3643,-4724,-5181,-4763,-3436,-1403,866, 2682,3417,2936,1559,-255,-2112,-3722,-4704,-4828,-4236, -3287,-2343,-1624,-1287,-1439,-2084,-3023,-4043,-5094,-6217, -7373,-8424,-9264,-9823,-9913,-9124,-7129,-4045,-364,3306, 6441,8509,9038,8060,6354,4836,3865,3251,2884,2937, 3568,4635,5837,6944,7841,8464,8812,8955,8951,8824, 8475,7726,6534,5046,3454,1889,542,-176,-43,567, 982,952,812,945,1438,2165,3016,4009,5267,6856, 8617,10217,11373,11932,11830,11146,10170,9192,8274,7293, 6144,4844,3474,2186,1279,1039,1423,1963,2128,1718, 815,-468,-2071,-3860,-5530,-6822,-7652,-8090,-8236,-8197, -8060,-7802,-7268,-6362,-5155,-3920,-2942,-2249,-1685,-1198, -952,-1013,-1133,-993,-592,-104,471,1182,1835,2115, 1944,1574,1255,970,600,159,-209,-370,-149,631, 1989,3579,4808,5139,4474,3280,2120,1154,259,-571, -1158,-1418,-1475,-1355,-1020,-580,-333,-470,-933,-1646, -2587,-3635,-4584,-5331,-5937,-6468,-6874,-6964,-6514,-5514, -4223,-3021,-2184,-1848,-2156,-3253,-5138,-7615,-10431,-13227, -15464,-16702,-16879,-16256,-15125,-13720,-12269,-10934,-9709,-8566, -7620,-7128,-7220,-7680,-8036,-7801,-6650,-4516,-1527,1923, 5232,7917,9801,10917,11294,11000,10304,9658,9407,9547, 9826,9979,9889,9532,8970,8401,8079,8074,8049,7580, 6490,4879,2789,272,-2310,-4270,-5166,-4982,-3892,-2132, -81,1675,2614,2547,1704,541,-596,-1630,-2500,-2958, -2872,-2509,-2305,-2346,-2377,-2184,-1797,-1318,-921,-983, -1922,-3812,-6287,-8706,-10576,-11623,-11677,-10591,-8344,-5233, -1866,1152,3530,5218,6137,6135,5354,4345,3676,3495, 3625,3805,3901,3944,4119,4684,5777,7253,8649,9585, 9999,9984,9533,8653,7427,6018,4579,3256,2230,1650, 1500,1528,1364,816,64,-474,-473,168,1390,2938, 4456,5657,6633,7722,9015,10196,10986,11415,11537,11152, 10074,8451,6724,5267,4239,3633,3393,3405,3480,3404, 3070,2522,1809,858,-421,-1869,-3223,-4435,-5643,-6838, -7802,-8371,-8616,-8611,-8210,-7274,-5950,-4706,-3920,-3579, -3370,-3012,-2478,-1948,-1623,-1544,-1548,-1359,-709,401, 1593,2367,2494,2076,1282,301,-581,-1034,-934,-418, 282,1065,1940,2866,3701,4234,4288,3781,2809,1682, 773,232,-51,-264,-446,-542,-556,-531,-454,-336, -325,-612,-1240,-2072,-2987,-3998,-5177,-6430,-7408,-7726, -7201,-5932,-4154,-2266,-869,-464,-1135,-2472,-4105,-5987, -8122,-10341,-12442,-14321,-15754,-16352,-15888,-14560,-12867,-11246, -9941,-9105,-8889,-9339,-10221,-11003,-11102,-10282,-8655,-6374, -3544,-533,2057,3955,5375,6635,7774,8675,9371,9983, 10459,10565,10175,9429,8648,8185,8274,8921,9896,10733, 10934,10218,8597,6320,3691,944,-1604,-3423,-4034,-3401, -2147,-962,-98,496,795,741,470,218,35,-203, -655,-1405,-2433,-3453,-3994,-3725,-2739,-1426,-218,603, 865,453,-771,-2878,-5643,-8457,-10630,-11811,-11906,-10902, -8992,-6664,-4390,-2282,-304,1447,2808,3757,4352,4571, 4356,3835,3317,2987,2785,2611,2603,3143,4500,6409, 8211,9408,9943,9935,9460,8627,7759,7072,6468,5738, 4863,3963,3029,1966,882,67,-300,-288,-98,160, 544,1127,1899,2875,4161,5829,7703,9386,10543,11083, 11092,10672,9906,8894,7792,6804,6060,5611,5385,5154, 4677,4011,3442,3183,3095,2812,2082,844,-811,-2655, -4357,-5670,-6621,-7358,-7902,-8191,-8194,-7881,-7216,-6234, -5124,-4182,-3677,-3636,-3823,-3899,-3676,-3165,-2416,-1449, -401,496,1123,1568,1817,1614,842,-156,-879,-1130, -992,-544,165,982,1740,2401,2980,3422,3598,3393, 2830,2161,1641,1329,1062,724,336,-94,-568,-879, -642,196,1077,1299,636,-652,-2229,-3885,-5405,-6488, -6923,-6781,-6254,-5440,-4314,-2953,-1645,-723,-412,-752, -1752,-3416,-5714,-8419,-11081,-13199,-14474,-14812,-14257,-13032, -11668,-10708,-10347,-10485,-11043,-11924,-12757,-12981,-12274,-10811, -9059,-7414,-5966,-4511,-2819,-828,1309,3448,5529,7391, 8773,9551,9687,9222,8418,7742,7598,8079,9075,10470, 11973,12992,12913,11565,9320,6779,4433,2555,1200,243, -499,-1133,-1570,-1602,-1143,-394,320,843,1222,1461, 1318,629,-453,-1666,-2872,-3897,-4344,-3766,-2165,-173, 1445,2243,2134,1212,-400,-2465,-4653,-6710,-8475,-9780, -10407,-10224,-9398,-8264,-6985,-5483,-3649,-1594,377,2041, 3262,3926,3945,3393,2536,1738,1300,1392,2068,3195, 4471,5623,6562,7298,7839,8216,8571,8971,9246,9076, 8306,7142,5895,4808,3922,3129,2306,1459,678,60, -387,-674,-798,-648,-50,1165,2934,4857,6520,7792, 8714,9259,9443,9429,9410,9331,8968,8264,7397,6614, 6026,5644,5486,5469,5380,5040,4431,3738,3111,2463, 1539,162,-1577,-3404,-5100,-6481,-7340,-7611,-7473,-7182, -6815,-6309,-5719,-5246,-5092,-5177,-5219,-5061,-4684,-4030, -3027,-1803,-677,118,621,939,1055,863,313,-467, -1128,-1319,-1005,-386,340,1045,1567,1777,1830,2066, 2606,3187,3467,3313,2785,1980,1058,264,-166,-180, 117,581,1117,1615,1878,1660,857,-319,-1536,-2663, -3811,-5023,-6071,-6648,-6600,-5944,-4749,-3188,-1550,-132, 774,837,-260,-2464,-5246,-7873,-9840,-11047,-11609,-11638, -11290,-10875,-10744,-11010,-11519,-12082,-12567,-12892,-12949,-12687, -12177,-11570,-10925,-10180,-9262,-8163,-6775,-4781,-2019,1165, 3988,5815,6575,6571,6174,5778,5789,6467,7694,9131, 10460,11500,12202,12489,12257,11455,10173,8622,6989,5402, 3988,2719,1420,-2,-1245,-1805,-1436,-375,902,1956, 2467,2296,1487,246,-1190,-2547,-3538,-3918,-3581,-2612, -1239,276,1613,2378,2323,1464,64,-1523,-3051,-4504, -5969,-7410,-8635,-9523,-10042,-10053,-9309,-7747,-5591,-3204, -990,656,1473,1593,1473,1494,1638,1703,1658,1667, 1884,2297,2863,3597,4488,5460,6437,7392,8323,9116, 9509,9334,8699,7894,7158,6538,5923,5231,4362,3175, 1630,35,-1116,-1585,-1532,-1130,-397,572,1579,2592, 3845,5411,6971,8094,8578,8617,8503,8436,8407,8282, 8002,7631,7173,6591,6020,5740,5795,5875,5707,5333, 4881,4274,3323,1953,242,-1640,-3461,-4932,-5846,-6223, -6249,-6199,-6236,-6315,-6318,-6243,-6241,-6386,-6497,-6368, -5914,-5116,-3944,-2495,-1098,-183,89,-60,-324,-541, -683,-738,-735,-679,-564,-440,-344,-263,-53,486, 1414,2481,3263,3475,3174,2659,2119,1554,953,484, 386,632,988,1318,1619,1854,1936,1846,1632,1206, 342,-1090,-2932,-4800,-6308,-7209,-7275,-6334,-4479,-2237, -329,734,859,224,-997,-2675,-4549,-6229,-7461,-8255, -8706,-8934,-9175,-9684,-10527,-11468,-12159,-12428,-12317,-12042, -11836,-11983,-12583,-13401,-13950,-13790,-12736,-10902,-8544,-5976, -3450,-1178,659,1908,2551,2760,2872,3317,4327,5769, 7290,8600,9652,10500,11118,11489,11725,11886,11751,11045, 9744,8034,6076,4005,2046,509,-377,-549,-71,904, 2069,2927,3037,2325,1071,-378,-1757,-2864,-3484,-3423, -2697,-1599,-516,333,938,1336,1534,1561,1422,927, -240,-2090,-4244,-6255,-7931,-9189,-9888,-9887,-9235,-8111, -6681,-5088,-3558,-2283,-1312,-574,69,716,1259,1500, 1407,1164,969,928,1177,1934,3197,4623,5740,6366, 6746,7202,7819,8465,8996,9304,9263,8752,7817,6666, 5519,4376,3096,1616,130,-1012,-1592,-1603,-1151,-360, 589,1558,2565,3733,5025,6175,6963,7411,7742,8057, 8273,8315,8184,7877,7384,6807,6383,6328,6631,7050, 7253,7060,6478,5633,4629,3477,2119,488,-1302,-2899, -3915,-4308,-4425,-4615,-4921,-5278,-5769,-6520,-7390,-7971, -7921,-7247,-6203,-5055,-3988,-3138,-2538,-2092,-1609,-1053, -608,-449,-502,-604,-743,-1010,-1366,-1564,-1363,-772, 3,826,1659,2382,2776,2748,2449,2073,1740,1506, 1367,1236,985,630,414,647,1400,2454,3444,3977, 3786,2808,1164,-898,-3050,-4939,-6245,-6753,-6352,-5085, -3282,-1466,-118,459,172,-816,-2003,-2864,-3264,-3548, -4146,-5164,-6399,-7630,-8746,-9583,-10009,-10102,-10054,-10011, -10104,-10524,-11392,-12650,-14017,-15121,-15603,-15208,-13910,-11925, -9592,-7334,-5495,-4181,-3150,-2128,-1117,-216,695,1823, 3124,4322,5344,6340,7413,8545,9773,11113,12339,13110, 13194,12587,11383,9642,7463,5148,3085,1712,1267,1634, 2438,3269,3783,3705,2942,1732,534,-351,-1000,-1618, -2162,-2432,-2384,-2111,-1619,-836,242,1433,2401,2886, 2819,2183,967,-790,-2872,-4871,-6441,-7498,-8141,-8440, -8418,-8199,-7872,-7294,-6228,-4685,-3019,-1644,-746,-314, -224,-259,-182,104,519,913,1209,1491,1930,2601, 3417,4245,5041,5851,6697,7565,8435,9210,9684,9668, 9207,8461,7449,6111,4525,2922,1429,95,-921,-1346, -1134,-553,12,436,943,1823,3068,4401,5551,6389, 6936,7235,7338,7321,7240,7085,6854,6671,6716,6979, 7278,7537,7824,8088,8036,7383,6107,4492,2871,1477, 419,-320,-853,-1358,-1962,-2750,-3737,-4831,-5887,-6734, -7257,-7428,-7296,-6992,-6572,-6005,-5318,-4598,-3885,-3082, -2141,-1227,-611,-418,-637,-1178,-1827,-2226,-2140,-1666, -1082,-555,-74,377,800,1254,1825,2459,2888,2882, 2387,1612,841,254,-112,-243,-7,783,2121,3692, 5044,5691,5215,3538,1097,-1365,-3304,-4536,-5040,-4846, -4180,-3406,-2759,-2228,-1713,-1258,-993,-930,-968,-1055, -1302,-1902,-2951,-4354,-5849,-7128,-7953,-8199,-7928,-7459, -7235,-7546,-8430,-9770,-11433,-13185,-14647,-15438,-15461,-14883, -13936,-12744,-11384,-9987,-8656,-7372,-6059,-4743,-3533,-2506, -1543,-500,606,1567,2302,3096,4351,6214,8451,10682, 12557,13728,13898,12995,11317,9363,7567,6136,5118,4483, 4151,4007,3974,3997,3979,3794,3333,2604,1781,979, 176,-708,-1625,-2416,-2883,-2891,-2300,-1081,528,2040, 3002,3238,2863,2125,1260,354,-678,-1982,-3599,-5320, -6776,-7704,-8108,-8122,-7818,-7213,-6394,-5530,-4712,-3877, -2970,-2116,-1553,-1290,-1063,-626,-48,401,607,715, 912,1284,1828,2521,3267,4002,4848,6024,7478,8859, 9811,10198,10097,9628,8806,7632,6181,4635,3171,1868, 745,-176,-820,-1094,-1015,-602,127,1056,2030,2996, 4010,5043,5917,6477,6716,6664,6356,5944,5693,5828, 6362,7151,8029,8790,9169,8982,8305,7351,6314,5286, 4331,3523,2893,2341,1704,826,-300,-1516,-2660,-3666, -4542,-5266,-5845,-6432,-7099,-7676,-7853,-7504,-6677,-5500, -4179,-3051,-2370,-2071,-1879,-1647,-1505,-1597,-1875,-2138, -2224,-2093,-1825,-1502,-1138,-663,-13,829,1854,2918, 3644,3575,2604,1086,-430,-1512,-1813,-1159,317,2176, 3908,5198,5884,5807,4866,3227,1330,-352,-1558,-2340, -2863,-3206,-3386,-3450,-3439,-3240,-2648,-1619,-494,329, 690,547,-174,-1490,-3145,-4653,-5602,-5922,-5824,-5555, -5293,-5207,-5464,-6187,-7350,-8813,-10436,-12046,-13414,-14284, -14595,-14477,-14131,-13667,-13061,-12247,-11182,-9810,-8129,-6355, -4844,-3868,-3410,-3259,-3155,-2782,-1806,-95,2204,4814, 7421,9738,11510,12513,12681,12145,11125,9881,8689,7746, 7090,6569,5966,5206,4583,4430,4732,5096,5129,4656, 3678,2243,559,-962,-1954,-2355,-2334,-2075,-1648,-1020, -124,984,2100,2939,3299,3137,2584,1797,836,-380, -1928,-3667,-5161,-6134,-6646,-6920,-7039,-7001,-6782,-6382, -5788,-5031,-4286,-3679,-3153,-2557,-1895,-1287,-776,-297, 133,403,471,421,400,565,1073,2023,3347,4858, 6332,7598,8656,9529,10157,10369,10061,9311,8225,6858, 5260,3668,2367,1376,504,-322,-944,-1158,-903,-175, 983,2383,3711,4703,5306,5545,5440,5081,4711,4598, 4908,5617,6562,7559,8444,9034,9158,8752,8027,7411, 7118,6925,6487,5715,4754,3748,2820,2065,1497,934, 135,-990,-2331,-3704,-4962,-6063,-6965,-7556,-7742,-7500, -6885,-6000,-4978,-4031,-3385,-3071,-2847,-2441,-1868,-1448, -1424,-1800,-2402,-3037,-3508,-3564,-2936,-1594,137,1805, 3096,3820,3778,2828,1187,-547,-1773,-2183,-1769,-668, 873,2530,3953,4889,5260,5115,4558,3762,2910,2076, 1115,-133,-1598,-2980,-3969,-4376,-4118,-3237,-1955,-626, 445,1043,1068,537,-447,-1697,-2940,-3898,-4422,-4515, -4248,-3767,-3387,-3461,-4112,-5131,-6282,-7455,-8637,-9754, -10774,-11829,-13065,-14327,-15221,-15370,-14718,-13503,-11994,-10351, -8725,-7335,-6414,-6091,-6253,-6551,-6568,-5956,-4541,-2389, 182,2791,5152,7166,8796,10030,10918,11502,11679,11198, 10045,8610,7390,6627,6293,6254,6354,6458,6524,6531, 6350,5724,4563,3072,1596,365,-603,-1376,-1974,-2318, -2267,-1739,-791,383,1601,2640,3302,3495,3274,2712, 1800,600,-693,-1932,-3158,-4388,-5432,-6048,-6268,-6316, -6329,-6304,-6212,-6080,-5863,-5457,-4778,-3869,-2897,-2035, -1402,-1022,-819,-721,-670,-614,-532,-433,-250,238, 1218,2622,4196,5757,7217,8452,9323,9773,9879,9783, 9471,8796,7656,6166,4550,2961,1447,89,-939,-1404, -1202,-378,879,2267,3403,3958,3909,3566,3318,3368, 3679,4159,4742,5339,5867,6342,6920,7674,8380,8729, 8644,8295,7874,7444,6919,6274,5584,4955,4415,3934, 3512,3063,2347,1144,-504,-2270,-3823,-5021,-5853,-6351, -6612,-6772,-6879,-6840,-6550,-5992,-5156,-4048,-2798,-1703, -1069,-1108,-1802,-2901,-4051,-4901,-5155,-4612,-3272,-1405, 553,2181,3155,3251,2491,1210,-72,-996,-1450,-1439, -1016,-349,369,1080,1896,2913,4020,4928,5387,5334, 4797,3788,2315,525,-1260,-2717,-3653,-4028,-3809,-2965, -1608,-161,853,1127,690,-208,-1205,-1956,-2329,-2493, -2693,-2949,-3146,-3265,-3403,-3574,-3732,-3901,-4226,-4832, -5761,-7021,-8602,-10447,-12397,-14188,-15441,-15754,-14986,-13437, -11666,-10217,-9390,-9141,-9136,-9035,-8789,-8518,-8182,-7587, -6603,-5214,-3417,-1193,1319,3820,6106,8097,9640,10477, 10515,9979,9211,8455,7826,7368,7103,7046,7145,7286, 7370,7337,7148,6694,5881,4734,3390,1963,531,-753, -1669,-2126,-2188,-1935,-1336,-387,776,1895,2765,3344, 3601,3424,2717,1588,315,-838,-1802,-2648,-3408,-4090, -4706,-5286,-5822,-6237,-6444,-6427,-6255,-5951,-5470,-4799, -4025,-3233,-2467,-1802,-1392,-1336,-1514,-1677,-1680,-1559, -1349,-940,-164,1010,2385,3709,4918,6079,7191,8193, 9107,9992,10671,10715,9834,8123,5970,3803,1998,789, 171,-16,71,360,812,1372,1958,2437,2719,2801, 2787,2816,2954,3231,3620,4043,4475,5027,5833,6836, 7775,8377,8575,8393,7890,7237,6692,6395,6308,6302, 6240,6026,5517,4595,3345,2017,807,-260,-1283,-2347, -3466,-4607,-5759,-6881,-7791,-8184,-7850,-6852,-5399,-3735, -2157,-1123,-1047,-1949,-3400,-4838,-5834,-6116,-5568,-4316, -2744,-1221,48,945,1401,1475,1320,1022,563,-67, -739,-1261,-1478,-1354,-949,-337,521,1736,3271,4853, 6083,6604,6205,4888,2947,879,-883,-2121,-2747,-2759, -2317,-1711,-1130,-583,-75,256,228,-134,-603,-951, -1125,-1277,-1618,-2242,-3038,-3704,-3851,-3325,-2382,-1580, -1423,-2102,-3473,-5271,-7331,-9480,-11389,-12763,-13506,-13710, -13504,-12984,-12262,-11489,-10797,-10252,-9877,-9705,-9761,-9933, -10002,-9784,-9226,-8212,-6590,-4333,-1678,1016,3463,5526, 7150,8263,8808,8857,8643,8376,8089,7727,7379,7249, 7415,7762,8116,8348,8349,8010,7285,6240,4996,3653, 2218,751,-590,-1591,-2136,-2199,-1746,-780,484,1644, 2428,2876,3147,3230,2997,2417,1608,728,-161,-1054, -1899,-2635,-3296,-3974,-4714,-5468,-6067,-6369,-6401,-6238, -5900,-5363,-4644,-3811,-2990,-2373,-2144,-2285,-2573,-2706, -2541,-2130,-1615,-1121,-732,-451,-110,603,1887,3630, 5549,7406,9026,10224,10857,10865,10240,9012,7368,5624, 4079,2912,2108,1555,1131,861,871,1144,1518,1868, 2226,2572,2737,2592,2307,2168,2319,2755,3472,4478, 5601,6565,7175,7407,7358,7200,7114,7158,7291,7441, 7558,7556,7332,6825,6066,5186,4390,3841,3464,2972, 2075,683,-1149,-3297,-5529,-7398,-8425,-8395,-7437,-5876, -4197,-2926,-2351,-2415,-2881,-3559,-4377,-5214,-5773,-5817, -5346,-4506,-3474,-2383,-1357,-519,78,492,841,1136, 1205,811,-86,-1259,-2336,-2940,-2800,-1834,-245,1549, 3248,4718,5854,6406,6106,4936,3253,1559,257,-516, -847,-971,-1127,-1397,-1604,-1534,-1079,-361,348,803, 889,576,-163,-1239,-2332,-3063,-3262,-3000,-2420,-1638, -864,-399,-492,-1175,-2327,-3783,-5421,-7153,-8881,-10406, -11588,-12388,-12784,-12711,-12188,-11444,-10771,-10310,-10108,-10231, -10687,-11270,-11644,-11579,-11075,-10177,-8850,-7047,-4818,-2365, 82,2369,4392,5970,6939,7332,7399,7398,7440,7481, 7493,7523,7624,7834,8165,8613,9061,9244,8936,8106, 6853,5293,3606,2033,714,-376,-1227,-1665,-1529,-896, -27,867,1672,2309,2737,2978,3046,2906,2517,1895, 1120,310,-393,-966,-1572,-2422,-3524,-4692,-5706,-6358, -6447,-5967,-5276,-4775,-4544,-4399,-4201,-3955,-3674,-3329, -2902,-2477,-2188,-2097,-2183,-2365,-2536,-2559,-2267,-1494, -150,1674,3733,5752,7518,8879,9733,10071,9938,9409, 8550,7480,6297,5035,3724,2521,1703,1424,1555,1833, 2091,2246,2229,2025,1708,1420,1278,1381,1807,2525, 3378,4169,4770,5186,5499,5761,5990,6281,6768,7466, 8154,8464,8172,7412,6570,5967,5786,6035,6557,7001, 6917,6007,4328,2138,-276,-2637,-4644,-6040,-6719,-6724, -6164,-5186,-4072,-3229,-2991,-3371,-4051,-4631,-4917,-5016, -5089,-5223,-5392,-5442,-5132,-4331,-3133,-1839,-672,292, 1055,1507,1408,606,-730,-2166,-3270,-3757,-3488,-2429, -751,1117,2722,3821,4442,4689,4635,4347,3910,3359, 2615,1621,457,-660,-1531,-2012,-1990,-1411,-463,475, 1035,1104,767,143,-673,-1575,-2333,-2717,-2649,-2265, -1777,-1242,-680,-201,-6,-233,-884,-1949,-3414,-5166, -6997,-8687,-10057,-10964,-11347,-11316,-11107,-10869,-10634,-10450, -10451,-10712,-11187,-11774,-12353,-12747,-12761,-12230,-11094,-9430, -7462,-5383,-3273,-1129,967,2841,4335,5383,5991,6221, 6249,6301,6503,6786,7083,7482,8109,8873,9544,9911, 9852,9295,8234,6781,5179,3681,2380,1208,120,-772, -1227,-1087,-426,471,1297,1861,2133,2204,2256,2431, 2702,2871,2767,2328,1536,441,-795,-1965,-2970,-3818, -4486,-4882,-5004,-5004,-5033,-5127,-5210,-5202,-5056,-4730, -4204,-3542,-2875,-2398,-2254,-2499,-3051,-3678,-4075,-4027, -3500,-2613,-1511,-199,1386,3170,4949,6561,7947,9070, 9781,9877,9301,8248,7010,5788,4714,3880,3330,3063, 2979,2921,2765,2434,1864,1160,618,532,948,1656, 2356,2825,2992,2898,2718,2752,3271,4299,5574,6706, 7404,7588,7378,6952,6507,6190,6082,6210,6626,7366, 8322,9070,9041,7892,5784,3256,860,-1147,-2687,-3734, -4340,-4655,-4779,-4694,-4397,-4051,-3855,-3861,-3969,-4108, -4312,-4634,-5092,-5658,-6224,-6603,-6556,-5849,-4425,-2564, -769,556,1236,1181,397,-855,-2080,-2878,-3170,-3067, -2683,-2083,-1348,-517,435,1518,2640,3708,4580,5063, 4992,4341,3251,1954,685,-369,-1063,-1290,-1041,-453, 219,688,828,717,455,48,-533,-1189,-1770,-2211, -2461,-2401,-1923,-1109,-229,445,748,599,-17,-1011, -2229,-3576,-5048,-6610,-8082,-9193,-9778,-9897,-9764,-9640, -9660,-9834,-10184,-10747,-11452,-12114,-12642,-13068,-13350,-13304, -12761,-11690,-10201,-8401,-6414,-4354,-2256,-169,1711,3101, 3888,4240,4447,4710,5102,5643,6324,7086,7829,8505, 9135,9737,10201,10252,9672,8489,6930,5261,3702,2402, 1434,782,382,175,121,173,258,389,715,1336, 2151,2910,3423,3671,3653,3266,2415,1220,-6,-971, -1620,-2104,-2601,-3156,-3740,-4345,-4930,-5388,-5586,-5458, -5049,-4455,-3800,-3240,-2933,-2913,-3076,-3314,-3586,-3904, -4239,-4469,-4425,-4032,-3323,-2309,-938,784,2729,4698, 6524,8028,8973,9178,8712,7900,7096,6466,6067,5930, 5912,5657,4877,3674,2474,1671,1390,1466,1668,1847, 1966,2026,1991,1862,1678,1506,1493,1876,2854,4292, 5721,6636,6876,6569,5935,5247,4865,5058,5799,6822, 7885,8840,9555,9843,9520,8518,6952,5074,3177,1490, 75,-1096,-2065,-2883,-3580,-4113,-4377,-4279,-3849,-3255, -2784,-2752,-3357,-4493,-5826,-6966,-7628,-7630,-6888,-5538, -3931,-2466,-1349,-621,-317,-417,-784,-1236,-1669,-2073, -2439,-2736,-2941,-3011,-2824,-2232,-1160,325,1959,3370, 4303,4682,4549,3965,3101,2202,1431,781,191,-252, -375,-131,339,826,1131,1102,704,65,-637,-1253, -1715,-2015,-2136,-2026,-1664,-1042,-203,680,1315,1401, 862,-94,-1229,-2431,-3669,-4930,-6105,-7049,-7693,-8069, -8245,-8328,-8474,-8841,-9468,-10222,-10920,-11546,-12189,-12897, -13556,-14002,-14055,-13524,-12350,-10688,-8822,-6929,-5047,-3219, -1515,-50,1095,1970,2683,3269,3693,4045,4569,5454, 6664,7971,9133,9971,10383,10306,9760,8872,7801,6668, 5567,4575,3712,2894,2026,1099,233,-359,-542,-333, 188,1002,2011,2957,3562,3742,3574,3160,2583,1980, 1461,997,406,-409,-1372,-2343,-3218,-3981,-4597,-4986, -5079,-4907,-4598,-4285,-3964,-3589,-3263,-3158,-3273,-3459, -3637,-3894,-4303,-4845,-5408,-5804,-5702,-4750,-2866,-510, 1679,3364,4548,5380,6010,6537,6990,7349,7609,7773, 7777,7557,7056,6252,5192,4028,3042,2508,2485,2751, 2968,2888,2422,1684,940,450,321,598,1308,2383, 3576,4567,5176,5400,5278,4848,4267,3842,3864,4466, 5571,6912,8160,9099,9614,9677,9343,8759,8033,7157, 6055,4674,3030,1177,-705,-2245,-3100,-3236,-2898,-2365, -1864,-1611,-1831,-2646,-3916,-5293,-6436,-7152,-7352,-7038, -6343,-5437,-4482,-3604,-2857,-2198,-1571,-989,-595,-590, -1060,-1870,-2754,-3442,-3792,-3789,-3419,-2676,-1629,-415, 819,2018,3107,3878,4110,3778,3099,2348,1706,1223, 897,709,639,683,870,1157,1403,1408,1036,333, -500,-1264,-1842,-2173,-2202,-1939,-1455,-802,23,933, 1655,1863,1434,543,-497,-1488,-2403,-3308,-4229,-5107, -5850,-6428,-6836,-7071,-7197,-7388,-7810,-8513,-9476,-10661, -11897,-12931,-13593,-13938,-14088,-14044,-13613,-12644,-11214,-9520, -7700,-5829,-4038,-2500,-1340,-539,50,594,1225,2046, 3138,4487,5936,7254,8318,9121,9618,9716,9451,9074, 8773,8477,7962,7121,5998,4647,3163,1773,728,145, -3,193,612,1132,1653,2127,2571,2994,3329,3494, 3441,3191,2870,2537,2034,1160,-77,-1419,-2538,-3253, -3587,-3713,-3861,-4177,-4561,-4730,-4475,-3828,-2992,-2280, -2031,-2411,-3305,-4386,-5360,-6111,-6586,-6643,-6122,-5004, -3488,-1891,-471,703,1676,2534,3418,4479,5750,7038, 8004,8424,8280,7696,6873,6042,5403,5062,4942,4880, 4740,4460,3967,3173,2138,1091,307,-52,73,686, 1702,2930,3998,4580,4568,4114,3528,3106,3019,3310, 3908,4685,5478,6204,6886,7597,8379,9203,9955,10395, 10285,9521,8170,6370,4280,2161,409,-643,-959,-760, -393,-157,-252,-777,-1681,-2768,-3801,-4647,-5329,-5926, -6455,-6809,-6834,-6440,-5652,-4590,-3460,-2463,-1696,-1159, -869,-890,-1270,-1944,-2760,-3527,-4078,-4269,-3980,-3217, -2145,-1007,66,1069,2049,2893,3346,3267,2800,2245, 1796,1484,1313,1274,1335,1462,1688,1995,2200,2077, 1543,721,-201,-1104,-1867,-2305,-2262,-1773,-1045,-317, 304,853,1364,1710,1725,1370,742,-120,-1191,-2321, -3258,-3910,-4380,-4774,-5069,-5246,-5434,-5807,-6409,-7192, -8115,-9156,-10282,-11461,-12633,-13667,-14414,-14740,-14574,-13861, -12649,-11106,-9407,-7702,-6184,-5055,-4320,-3740,-3054,-2137, -991,340,1800,3272,4578,5610,6403,7080,7790,8604, 9402,9927,10006,9684,9118,8371,7363,6060,4604,3238, 2183,1519,1215,1148,1160,1077,920,923,1350,2228, 3262,4017,4253,4045,3597,3047,2488,1953,1388,659, -305,-1399,-2456,-3388,-4143,-4625,-4698,-4330,-3619,-2733, -1906,-1405,-1476,-2226,-3509,-4919,-6015,-6568,-6598,-6256, -5697,-5052,-4438,-3866,-3231,-2396,-1263,185,1852,3507, 4928,6017,6758,7120,7090,6736,6262,5952,6003,6357, 6770,6981,6780,6029,4742,3133,1600,563,194,411, 999,1754,2477,3004,3258,3309,3262,3181,3110,3105, 3181,3295,3382,3436,3582,4022,4885,6190,7830,9558, 10972,11640,11322,10126,8460,6758,5232,3925,2877,2129, 1616,1233,929,740,595,283,-361,-1316,-2417,-3505, -4475,-5303,-6028,-6627,-7000,-6969,-6418,-5387,-4098,-2897, -2020,-1480,-1172,-1117,-1447,-2155,-2997,-3735,-4284,-4586, -4488,-3892,-2921,-1827,-745,293,1212,1909,2309,2431, 2317,1991,1524,1098,929,1163,1728,2360,2802,2935, 2777,2360,1711,906,64,-720,-1381,-1840,-2025,-1919, -1552,-912,-29,923,1691,2089,2080,1725,1117,366, -451,-1269,-2012,-2636,-3132,-3520,-3829,-4087,-4261,-4388, -4600,-5060,-5893,-7071,-8467,-9977,-11565,-13122,-14382,-14980, -14768,-13939,-12822,-11648,-10552,-9648,-8932,-8228,-7333,-6241, -5107,-4031,-2922,-1669,-303,1038,2217,3182,4054,5029, 6232,7630,8981,9946,10296,10057,9461,8737,7991,7234, 6442,5568,4561,3442,2341,1452,911,738,842,1147, 1610,2173,2734,3185,3462,3571,3596,3648,3746,3739, 3376,2518,1208,-365,-2003,-3448,-4366,-4512,-3932,-2975, -2065,-1475,-1270,-1444,-1977,-2764,-3614,-4350,-4939,-5390, -5706,-5897,-6004,-6065,-6052,-5894,-5456,-4604,-3276,-1534, 406,2229,3613,4374,4602,4602,4634,4854,5352,6159, 7145,7961,8280,8038,7340,6261,4886,3452,2293,1628, 1448,1566,1725,1791,1804,1890,2148,2611,3212,3752, 3950,3631,2881,1984,1275,1045,1505,2651,4216,5841, 7365,8794,10052,10845,10877,10177,9075,7875,6721,5659, 4706,3878,3188,2647,2263,2030,1872,1629,1137,317, -764,-2014,-3330,-4592,-5654,-6436,-6919,-7066,-6785,-6032, -4910,-3645,-2510,-1711,-1381,-1506,-1928,-2482,-3095,-3757, -4402,-4884,-5030,-4734,-3980,-2882,-1602,-376,583,1169, 1367,1252,984,739,654,787,1080,1433,1816,2267, 2773,3164,3236,2963,2444,1730,804,-270,-1255,-1910, -2164,-2075,-1698,-1070,-269,566,1279,1772,2003,1922, 1527,932,299,-308,-955,-1709,-2531,-3242,-3601,-3483, -2997,-2468,-2304,-2789,-3940,-5525,-7264,-8971,-10572,-12003, -13126,-13802,-13960,-13649,-13085,-12481,-11993,-11616,-11194,-10532, -9544,-8309,-6983,-5761,-4773,-4014,-3326,-2436,-1170,390, 2008,3533,4943,6247,7359,8165,8721,9146,9450,9523, 9290,8747,7936,6908,5729,4497,3345,2452,1922,1715, 1660,1636,1577,1462,1378,1551,2135,3042,4060,4959, 5495,5405,4578,3143,1443,-184,-1555,-2562,-3101,-3122, -2733,-2178,-1714,-1480,-1490,-1706,-2092,-2566,-2989,-3256, -3446,-3797,-4489,-5482,-6550,-7437,-7897,-7736,-6893,-5531, -3910,-2237,-708,434,1062,1307,1500,1935,2710,3772, 5047,6390,7509,8093,8030,7513,6907,6432,6010,5424, 4564,3491,2382,1464,940,919,1331,1987,2728,3430, 3949,4115,3816,3078,2067,1037,302,129,597,1612, 2993,4553,6120,7546,8720,9549,10012,10068,9679,8886, 7831,6736,5779,5049,4489,4027,3657,3397,3213,3055, 2802,2242,1199,-285,-1927,-3462,-4797,-5892,-6641,-6906, -6699,-6147,-5382,-4464,-3429,-2408,-1664,-1402,-1670,-2342, -3238,-4191,-5010,-5493,-5512,-5067,-4245,-3219,-2177,-1274, -589,-103,204,332,285,139,13,38,289,753, 1407,2160,2866,3374,3598,3525,3140,2412,1339,102, -972,-1617,-1799,-1686,-1472,-1247,-979,-518,260,1250, 2103,2499,2363,1821,1005,23,-973,-1791,-2329,-2596, -2591,-2283,-1716,-1104,-813,-1205,-2372,-4048,-5830,-7462, -8852,-9986,-10900,-11685,-12436,-13105,-13541,-13628,-13364,-12801, -12013,-11129,-10314,-9628,-9000,-8325,-7575,-6760,-5845,-4744, -3399,-1859,-299,1125,2420,3661,4885,6081,7266,8412, 9399,9959,9871,9199,8243,7274,6420,5753,5275,4838, 4240,3384,2367,1376,598,199,306,949,2002,3238, 4446,5424,5960,5837,4971,3552,1973,621,-354,-989, -1353,-1499,-1539,-1643,-1884,-2132,-2191,-2000,-1642,-1286, -1097,-1223,-1750,-2708,-4049,-5622,-7143,-8214,-8485,-7858, -6605,-5188,-4029,-3310,-2936,-2621,-2128,-1365,-372,736, 1832,2850,3805,4712,5550,6319,7005,7568,7904,7883, 7450,6640,5513,4175,2817,1728,1153,1174,1705,2561, 3469,4115,4301,4038,3481,2763,1907,961,128,-296, -128,567,1637,2968,4473,5988,7328,8378,9112,9531, 9588,9245,8538,7617,6649,5798,5196,4895,4828,4864, 4885,4772,4413,3744,2743,1467,15,-1522,-3106,-4610, -5833,-6607,-6845,-6555,-5774,-4625,-3364,-2337,-1789,-1737, -2061,-2644,-3373,-4152,-4889,-5459,-5686,-5427,-4701,-3753, -2850,-2102,-1473,-907,-445,-230,-350,-694,-999,-1031, -683,29,1021,2091,2934,3365,3440,3337,3149,2808, 2201,1342,373,-568,-1336,-1826,-2007,-1926,-1579,-916, 49,1161,2172,2796,2834,2268,1251,15,-1142,-1899, -2069,-1767,-1286,-857,-544,-364,-429,-848,-1568,-2452, -3459,-4645,-6011,-7466,-8907,-10264,-11468,-12440,-13073,-13300, -13152,-12735,-12199,-11727,-11422,-11238,-10978,-10444,-9597,-8559, -7483,-6421,-5392,-4441,-3536,-2484,-1016,876,2896,4726, 6208,7317,8055,8450,8545,8417,8195,8010,7904,7785, 7465,6816,5802,4459,2930,1443,296,-222,45,1001, 2315,3595,4571,5151,5327,5125,4606,3876,3059,2274, 1589,1025,478,-235,-1173,-2147,-2818,-2901,-2309,-1239, -87,693,754,3,-1335,-2882,-4328,-5529,-6407,-6901, -7011,-6862,-6609,-6291,-5854,-5289,-4693,-4117,-3486,-2688, -1732,-788,0,645,1317,2225,3480,4987,6461,7620, 8281,8367,7906,7003,5824,4546,3371,2501,2046,1986, 2290,2925,3705,4315,4533,4321,3771,2966,2010,1078, 321,-197,-428,-282,304,1313,2649,4196,5777,7185, 8251,8881,9046,8800,8280,7649,7051,6552,6180,5903, 5674,5519,5545,5769,5963,5754,4935,3601,1972,211, -1585,-3284,-4718,-5769,-6300,-6226,-5576,-4564,-3502,-2666, -2210,-2139,-2327,-2667,-3163,-3833,-4608,-5352,-5875,-5947, -5412,-4377,-3232,-2344,-1815,-1553,-1457,-1490,-1591,-1643, -1560,-1351,-1026,-539,161,1016,1865,2541,3007,3325, 3495,3439,3112,2497,1578,374,-932,-2025,-2614,-2573, -1921,-815,475,1610,2301,2436,2136,1592,920,184, -462,-859,-978,-918,-813,-727,-617,-461,-304,-209, -254,-540,-1176,-2249,-3746,-5511,-7288,-8809,-9937,-10691, -11218,-11690,-12162,-12565,-12803,-12843,-12671,-12257,-11614,-10876, -10221,-9727,-9351,-8962,-8433,-7662,-6548,-5077,-3326,-1401, 586,2475,4019,5056,5650,6056,6555,7257,8075,8833, 9336,9415,8975,8032,6695,5100,3439,1933,880,550, 973,1859,2764,3397,3710,3839,3932,4091,4385,4767, 5016,4799,3919,2479,817,-685,-1756,-2267,-2221,-1735, -975,-111,632,969,731,10,-954,-1958,-2908,-3778, -4565,-5296,-5988,-6606,-7010,-7068,-6733,-6080,-5309,-4630, -4124,-3759,-3447,-3086,-2564,-1819,-807,486,2005,3665, 5303,6695,7628,8010,7836,7138,6072,4943,4033,3419, 3050,2924,3097,3524,4040,4429,4577,4506,4272,3827, 3059,1970,754,-281,-854,-871,-377,504,1619,2843, 4155,5518,6796,7763,8272,8363,8153,7726,7184,6685, 6348,6179,6105,6153,6437,6962,7471,7546,6906,5590, 3840,1950,132,-1512,-2933,-4074,-4901,-5345,-5292,-4725, -3810,-2844,-2119,-1818,-1991,-2557,-3329,-4085,-4703,-5178, -5483,-5497,-5145,-4504,-3768,-3110,-2610,-2304,-2185,-2207, -2257,-2187,-1935,-1596,-1331,-1159,-931,-464,338,1414, 2581,3619,4312,4485,4065,3120,1807,405,-781,-1558, -1865,-1741,-1234,-435,456,1179,1553,1599,1482,1329, 1182,1001,712,258,-307,-812,-1085,-1017,-639,-62, 556,1012,1079,637,-231,-1285,-2344,-3404,-4548,-5777, -7051,-8321,-9544,-10656,-11568,-12213,-12576,-12661,-12459,-11989, -11384,-10928,-10846,-11086,-11346,-11309,-10823,-9883,-8542,-6900, -5130,-3389,-1784,-389,741,1659,2540,3564,4824,6312, 7900,9323,10238,10343,9581,8209,6657,5308,4337,3711, 3277,2904,2537,2185,1904,1829,2106,2733,3607,4604, 5546,6168,6202,5548,4306,2759,1226,7,-711,-918, -798,-539,-239,60,324,525,623,568,307,-206, -1035,-2138,-3341,-4437,-5339,-6039,-6499,-6618,-6366,-5884, -5410,-5107,-4995,-4997,-5005,-4901,-4552,-3876,-2836,-1421, 331,2273,4082,5455,6301,6714,6818,6670,6258,5624, 4898,4202,3641,3355,3463,3941,4576,5071,5258,5180, 4907,4414,3643,2615,1461,379,-424,-785,-666,-172, 584,1538,2669,3963,5352,6614,7512,7915,7793,7269, 6612,6129,5993,6178,6524,6910,7336,7800,8189,8319, 8034,7280,6063,4421,2476,461,-1348,-2741,-3643,-4086, -4141,-3880,-3358,-2693,-2120,-1872,-2068,-2621,-3324,-3979, -4487,-4805,-4910,-4817,-4618,-4425,-4275,-4078,-3729,-3230, -2686,-2234,-1984,-1982,-2180,-2435,-2606,-2596,-2324,-1664, -524,980,2517,3724,4356,4359,3823,2900,1793,782, 86,-272,-452,-587,-652,-548,-265,173,755,1408, 1932,2086,1793,1201,541,8,-327,-478,-475,-319, -7,438,886,1128,1055,740,344,-29,-410,-932, -1756,-2958,-4508,-6273,-8022,-9507,-10539,-11085,-11272,-11286, -11232,-11166,-11180,-11348,-11690,-12170,-12638,-12804,-12381,-11274, -9684,-7989,-6537,-5498,-4807,-4236,-3494,-2339,-670,1419, 3652,5687,7264,8301,8823,8869,8523,7995,7500,7091, 6630,5943,5002,3911,2784,1779,1164,1172,1823,2903, 4117,5163,5821,5995,5723,5143,4391,3511,2529,1575, 810,294,-37,-267,-355,-174,291,843,1240,1340, 1154,714,-3,-993,-2153,-3337,-4398,-5201,-5630,-5645, -5393,-5129,-5069,-5317,-5790,-6274,-6538,-6434,-5978,-5261, -4338,-3154,-1637,149,1982,3578,4764,5515,5884,5927, 5699,5289,4805,4315,3903,3722,3900,4394,4998,5482, 5699,5623,5317,4865,4275,3505,2529,1400,278,-622, -1122,-1109,-535,543,1910,3256,4373,5249,5929,6415, 6609,6440,5962,5458,5166,5168,5479,6079,6850,7649, 8347,8790,8826,8342,7325,5858,4088,2177,323,-1224, -2228,-2622,-2568,-2348,-2161,-2043,-2005,-2093,-2310,-2563, -2798,-3045,-3362,-3729,-4090,-4418,-4696,-4837,-4729,-4333, -3685,-2920,-2268,-1926,-1961,-2327,-2929,-3569,-3958,-3852, -3163,-2004,-625,681,1709,2410,2860,3132,3194,2953, 2426,1738,1008,316,-260,-634,-771,-641,-237,364, 1015,1534,1774,1674,1291,765,291,15,-20,114, 270,302,199,92,132,358,684,992,1254,1430, 1400,1015,237,-914,-2412,-4180,-5978,-7435,-8263,-8485, -8423,-8440,-8742,-9370,-10247,-11217,-12053,-12500,-12435,-11919, -11113,-10191,-9364,-8804,-8497,-8265,-7875,-7169,-6064,-4510, -2541,-396,1566,3099,4224,5164,6072,6944,7686,8201, 8399,8188,7517,6416,5053,3674,2518,1753,1469,1649, 2175,2886,3635,4316,4870,5241,5372,5245,4839,4156, 3285,2398,1617,942,330,-149,-345,-128,477,1234, 1847,2100,1902,1299,442,-483,-1350,-2110,-2767,-3306, -3695,-3931,-4051,-4134,-4312,-4738,-5423,-6175,-6724,-6938, -6852,-6493,-5819,-4772,-3359,-1682,85,1738,3110,4068, 4535,4553,4318,4046,3862,3787,3768,3756,3790,3953, 4323,4901,5552,6010,6078,5757,5132,4227,3053,1752, 573,-302,-848,-1063,-881,-230,824,2055,3197,4083, 4680,5027,5152,5090,4891,4625,4405,4374,4676,5378, 6425,7633,8731,9466,9660,9235,8243,6832,5208,3584, 2138,970,92,-550,-1051,-1448,-1728,-1890,-2004,-2113, -2170,-2151,-2122,-2245,-2664,-3385,-4251,-4994,-5349,-5159, -4502,-3658,-2937,-2516,-2428,-2632,-3055,-3569,-4011,-4234, -4196,-3932,-3445,-2712,-1753,-695,297,1155,1920,2582, 3010,3039,2634,1912,1060,262,-296,-465,-250,156, 528,776,920,978,978,920,814,675,540,468, 496,570,555,336,-53,-399,-476,-195,412,1235, 2101,2722,2790,2169,993,-445,-1879,-3117,-4067,-4711, -5123,-5480,-6001,-6839,-8009,-9363,-10636,-11529,-11864,-11696, -11258,-10810,-10519,-10456,-10589,-10787,-10831,-10530,-9839,-8821, -7563,-6173,-4754,-3379,-2042,-676,837,2545,4340,5992, 7300,8113,8382,8170,7599,6731,5615,4407,3336,2581, 2215,2195,2429,2827,3290,3744,4198,4706,5223,5562, 5496,4938,4003,2954,2008,1248,677,366,390,705, 1169,1654,2033,2162,1947,1426,742,29,-626,-1175, -1575,-1875,-2182,-2556,-2927,-3242,-3556,-4025,-4768,-5760, -6797,-7603,-7976,-7858,-7236,-6149,-4721,-3165,-1673,-302, 951,2049,2900,3417,3590,3489,3258,3055,2986,3087, 3353,3772,4333,4990,5658,6224,6562,6510,5970,4983, 3745,2487,1352,399,-337,-790,-860,-491,241,1190, 2231,3224,4013,4448,4459,4115,3605,3179,3043,3325, 4018,5008,6167,7383,8517,9337,9604,9241,8422,7437, 6470,5517,4505,3424,2300,1137,-3,-921,-1396,-1388, -1109,-863,-849,-1108,-1606,-2312,-3138,-3921,-4485,-4748, -4700,-4371,-3844,-3286,-2902,-2791,-2944,-3262,-3638,-3950, -4133,-4232,-4352,-4485,-4476,-4075,-3173,-1925,-610,547, 1455,2057,2307,2200,1823,1326,865,519,312,268, 387,604,825,924,813,547,301,265,504,914, 1255,1353,1185,771,144,-555,-1070,-1143,-692,166, 1228,2235,2885,2957,2461,1610,668,-141,-688,-976, -1184,-1558,-2251,-3264,-4541,-5999,-7486,-8744,-9555,-9895, -9940,-9948,-10128,-10501,-10944,-11320,-11553,-11564,-11309,-10882, -10424,-9961,-9395,-8624,-7671,-6589,-5349,-3863,-2067,-7, 2188,4270,5943,7013,7490,7531,7284,6830,6187,5380, 4510,3704,3042,2574,2363,2490,2956,3627,4312,4910, 5397,5702,5664,5183,4333,3305,2336,1641,1297,1244, 1373,1589,1824,2038,2174,2179,2038,1752,1294,674, -10,-591,-921,-987,-902,-851,-1001,-1444,-2182,-3146, -4224,-5303,-6302,-7175,-7852,-8176,-7991,-7284,-6196,-4900, -3501,-2051,-655,567,1528,2183,2504,2521,2340,2146, 2095,2243,2609,3225,4088,5065,5905,6450,6728,6800, 6613,6044,5065,3815,2476,1203,139,-538,-706,-386, 285,1173,2158,3063,3672,3830,3523,2918,2299,1954, 2077,2698,3688,4821,5873,6745,7456,8049,8533,8879, 9034,8892,8349,7389,6131,4761,3419,2197,1197,547, 314,425,623,593,157,-637,-1585,-2458,-3117,-3530, -3756,-3872,-3900,-3829,-3660,-3430,-3155,-2867,-2689,-2779, -3177,-3757,-4331,-4803,-5140,-5280,-5144,-4662,-3816,-2651, -1339,-120,784,1267,1354,1173,886,669,650,817, 1052,1210,1207,1021,701,342,62,-2,275,887, 1589,2033,2023,1565,790,-114,-904,-1324,-1209,-593, 328,1279,2010,2351,2257,1844,1351,1024,1006,1236, 1481,1471,1034,177,-960,-2172,-3315,-4385,-5439,-6454, -7316,-7944,-8428,-8945,-9568,-10202,-10724,-11063,-11217,-11185, -11009,-10799,-10690,-10739,-10852,-10797,-10352,-9422,-8055,-6383, -4530,-2546,-463,1612,3484,4979,6039,6712,7032,6989, 6606,5976,5193,4314,3435,2738,2419,2578,3152,3955, 4738,5330,5648,5666,5409,4969,4430,3813,3118,2414, 1860,1604,1698,2054,2499,2848,2933,2685,2202,1661, 1163,705,289,5,-34,127,325,383,230,-126, -725,-1637,-2837,-4147,-5393,-6485,-7380,-8013,-8305,-8194, -7621,-6576,-5154,-3545,-2007,-747,165,747,1047,1140, 1139,1138,1182,1320,1643,2244,3139,4207,5261,6166, 6856,7278,7352,6972,6106,4825,3287,1731,447,-299, -367,176,1059,1943,2557,2786,2701,2467,2216,1979, 1773,1700,1880,2305,2868,3479,4135,4917,5893,7027, 8175,9140,9688,9676,9073,7983,6633,5315,4269,3549, 3073,2711,2369,1996,1612,1207,717,55,-756,-1584, -2324,-2945,-3437,-3742,-3836,-3757,-3557,-3248,-2839,-2424, -2213,-2371,-2907,-3697,-4575,-5391,-5982,-6195,-5926,-5188, -4130,-2962,-1893,-1085,-632,-468,-398,-227,125,603, 1085,1436,1503,1203,632,36,-360,-440,-148,495, 1363,2170,2571,2334,1506,417,-514,-1013,-1027,-684, -174,343,771,1046,1160,1143,1085,1101,1241,1476, 1758,2036,2229,2190,1782,1020,74,-845,-1637,-2361, -3135,-4049,-5103,-6224,-7308,-8261,-8987,-9461,-9749,-9960, -10152,-10315,-10473,-10706,-11059,-11474,-11833,-12018,-11906,-11390, -10397,-8996,-7338,-5551,-3669,-1690,336,2309,4110,5583, 6510,6749,6371,5646,4860,4170,3591,3116,2841,2879, 3246,3851,4548,5208,5685,5853,5674,5190,4481,3689, 2991,2516,2284,2270,2434,2722,3038,3266,3280,3000, 2465,1818,1203,716,427,387,559,802,958,1017, 1030,967,690,62,-966,-2331,-3882,-5408,-6712,-7696, -8314,-8509,-8208,-7430,-6308,-4993,-3595,-2272,-1220,-559, -244,-93,35,172,250,251,284,596,1408,2711, 4305,5900,7200,7951,8015,7413,6308,4904,3464,2258, 1464,1086,1059,1297,1681,2030,2178,2124,2016,2006, 2086,2131,2022,1742,1387,1118,1103,1490,2371,3667, 5146,6544,7705,8560,9051,9114,8766,8118,7307,6450, 5663,5024,4525,4097,3689,3298,2919,2501,1972,1288, 464,-431,-1342,-2238,-3036,-3623,-3885,-3793,-3385,-2756, -2054,-1514,-1403,-1869,-2830,-4022,-5108,-5822,-6088,-5977, -5585,-4985,-4285,-3651,-3206,-2954,-2727,-2293,-1520,-501, 507,1213,1452,1199,553,-252,-876,-1035,-635,147, 997,1690,2122,2228,1976,1432,761,138,-316,-523, -439,-134,187,343,317,227,207,331,620,1034, 1490,1868,2073,2101,2035,1951,1825,1594,1266,874, 371,-329,-1243,-2306,-3464,-4684,-5898,-6979,-7773,-8228, -8420,-8533,-8767,-9229,-9862,-10514,-11054,-11457,-11779,-12084, -12357,-12463,-12238,-11589,-10489,-8918,-6937,-4694,-2387,-186, 1794,3467,4713,5433,5625,5386,4834,4106,3388,2889, 2722,2890,3354,4001,4689,5293,5722,5906,5748,5205, 4405,3595,2986,2676,2649,2805,3033,3261,3440,3515, 3422,3169,2794,2311,1702,1053,547,339,453,776, 1181,1552,1815,1947,1912,1588,803,-502,-2179,-3936, -5513,-6759,-7611,-8058,-8125,-7853,-7285,-6440,-5316,-3971, -2606,-1507,-847,-622,-733,-1078,-1508,-1798,-1708,-1076, 118,1768,3645,5430,6796,7479,7436,6847,5994,5128, 4371,3729,3127,2515,1941,1537,1426,1598,1938,2304, 2604,2750,2664,2304,1712,1033,449,115,131,563, 1422,2615,3987,5342,6501,7394,8023,8370,8392,8104, 7609,7050,6534,6054,5542,4984,4493,4210,4152,4121, 3836,3128,2052,773,-590,-1903,-2947,-3511,-3539,-3138, -2464,-1712,-1124,-951,-1332,-2199,-3286,-4245,-4845,-5033, -4922,-4748,-4760,-5039,-5421,-5620,-5417,-4765,-3737,-2468, -1179,-165,392,498,256,-216,-783,-1229,-1323,-964, -246,595,1305,1715,1800,1639,1343,1023,780,645, 566,447,245,-12,-251,-381,-343,-162,74,296, 559,938,1370,1675,1757,1705,1666,1737,1939,2207, 2407,2364,1971,1234,224,-933,-2078,-3121,-4060,-4931, -5738,-6448,-7038,-7518,-7925,-8302,-8702,-9149,-9684,-10344, -11138,-11947,-12610,-13031,-13197,-13074,-12560,-11533,-9945,-7868, -5506,-3112,-856,1126,2729,3852,4432,4491,4144,3573, 2978,2544,2444,2764,3460,4318,5069,5528,5687,5644, 5482,5172,4653,3995,3409,3056,2965,3079,3329,3606, 3799,3863,3808,3657,3390,2948,2298,1522,810,360, 301,658,1322,2068,2661,2963,2948,2624,1970,978, -291,-1738,-3256,-4761,-6140,-7260,-8012,-8322,-8112,-7352, -6104,-4556,-3021,-1868,-1360,-1521,-2135,-2850,-3333,-3352, -2826,-1815,-481,995,2458,3791,4924,5810,6410,6674, 6567,6148,5534,4798,3948,3046,2287,1896,1934,2270, 2680,3011,3219,3265,3070,2574,1814,951,203,-238, -273,111,833,1749,2757,3837,4976,6074,7002,7703, 8129,8218,7946,7414,6784,6200,5765,5523,5510,5702, 5975,6078,5756,4857,3407,1621,-144,-1488,-2165,-2185, -1790,-1334,-1091,-1132,-1378,-1731,-2092,-2383,-2583,-2750, -2962,-3273,-3732,-4400,-5232,-6032,-6542,-6593,-6132,-5173, -3845,-2442,-1311,-680,-587,-858,-1206,-1394,-1367,-1185, -924,-592,-200,215,624,975,1214,1318,1332,1318, 1308,1286,1190,950,530,-5,-462,-645,-508,-171, 185,474,674,763,766,765,884,1197,1659,2135, 2504,2711,2782,2749,2594,2254,1665,824,-202,-1276, -2288,-3217,-4095,-4912,-5585,-6087,-6497,-6894,-7287,-7689, -8181,-8895,-9868,-10974,-12020,-12873,-13488,-13844,-13871,-13434, -12408,-10755,-8554,-6020,-3440,-1146,620,1823,2533,2837, 2837,2648,2410,2253,2310,2673,3338,4152,4887,5374, 5585,5591,5449,5197,4860,4430,3941,3492,3189,3104, 3276,3677,4152,4504,4579,4349,3860,3202,2456,1714, 1085,702,663,968,1494,2060,2531,2899,3181,3332, 3238,2831,2056,850,-837,-2922,-5077,-6846,-7886,-8139, -7734,-6858,-5707,-4511,-3536,-2983,-2892,-3132,-3500,-3797, -3875,-3714,-3379,-2877,-2100,-978,405,1874,3284,4549, 5575,6275,6565,6414,5886,5115,4250,3425,2800,2547, 2705,3105,3505,3758,3824,3670,3284,2722,2062,1363, 671,96,-231,-260,-11,507,1302,2347,3565,4870, 6144,7205,7819,7842,7323,6552,5915,5689,5941,6537, 7221,7730,7828,7371,6376,5039,3622,2347,1340,634, 182,-133,-402,-689,-1051,-1491,-1896,-2065,-1887,-1464, -1067,-971,-1333,-2173,-3376,-4679,-5762,-6413,-6597,-6379, -5845,-5057,-4127,-3200,-2463,-2016,-1840,-1823,-1826,-1746, -1543,-1276,-1028,-842,-689,-506,-252,93,539,1071, 1578,1883,1853,1525,1080,689,410,206,54,-25, -23,11,23,33,88,189,309,448,638,924, 1317,1789,2262,2647,2874,2966,2964,2880,2643,2150, 1354,323,-789,-1818,-2674,-3368,-3961,-4517,-5051,-5532, -5921,-6231,-6568,-7113,-8015,-9272,-10715,-12139,-13385,-14314, -14794,-14723,-14051,-12760,-10894,-8612,-6182,-3902,-2019,-665, 190,700,1041,1319,1557,1745,1940,2265,2807,3517, 4240,4867,5355,5670,5704,5408,4884,4335,3874,3516, 3310,3344,3647,4136,4639,4928,4862,4460,3878,3311, 2841,2439,2023,1567,1135,856,837,1104,1648,2476, 3508,4482,5006,4793,3809,2199,178,-1952,-3845,-5255, -6135,-6538,-6535,-6213,-5677,-5049,-4470,-4055,-3861,-3888, -4037,-4194,-4308,-4381,-4371,-4187,-3720,-2893,-1676,-107, 1634,3284,4599,5425,5740,5662,5346,4882,4323,3770, 3370,3229,3351,3636,3923,4066,4006,3812,3567,3286, 2900,2343,1599,701,-234,-1001,-1321,-955,138,1703, 3320,4645,5531,5954,5957,5698,5409,5309,5525,6044, 6758,7527,8126,8324,8020,7280,6315,5390,4682,4181, 3724,3140,2309,1258,188,-697,-1302,-1606,-1581,-1229, -684,-194,-14,-280,-955,-1907,-3024,-4195,-5231,-5905, -6110,-5929,-5541,-5092,-4672,-4286,-3870,-3387,-2878,-2414, -2042,-1794,-1704,-1769,-1894,-1916,-1715,-1286,-725,-159, 329,739,1082,1330,1421,1351,1164,933,721,582, 505,430,297,97,-116,-264,-291,-199,-53,75, 183,343,653,1151,1767,2368,2823,3084,3192,3190, 3070,2793,2333,1694,855,-178,-1273,-2203,-2869,-3346, -3753,-4103,-4344,-4501,-4723,-5201,-6064,-7350,-8992,-10826, -12603,-14043,-14928,-15175,-14799,-13859,-12457,-10733,-8831,-6890, -5051,-3460,-2245,-1406,-794,-267,183,514,787,1175, 1830,2729,3727,4631,5256,5488,5341,4943,4455,4028, 3766,3723,3863,4081,4263,4351,4352,4324,4343,4429, 4509,4454,4146,3500,2541,1451,533,41,84,667, 1692,2936,4133,5041,5472,5294,4474,3123,1456,-299, -1928,-3258,-4228,-4882,-5307,-5538,-5555,-5330,-4906,-4415, -4064,-4002,-4197,-4515,-4874,-5237,-5504,-5512,-5143,-4363, -3191,-1703,-40,1586,2933,3817,4242,4359,4328,4270, 4243,4218,4117,3882,3571,3337,3353,3680,4213,4716, 4953,4752,4048,2926,1597,302,-767,-1432,-1501,-866, 337,1732,2893,3570,3772,3695,3597,3701,4115,4817, 5689,6533,7154,7450,7464,7340,7197,7083,6965,6787, 6501,6062,5420,4524,3368,2065,819,-165,-757,-903, -639,-131,357,583,421,-104,-863,-1689,-2477,-3204, -3877,-4502,-5076,-5549,-5808,-5765,-5441,-4945,-4403,-3873, -3386,-2983,-2692,-2509,-2431,-2469,-2565,-2535,-2229,-1710, -1164,-701,-314,14,290,526,751,968,1127,1152, 1024,809,640,585,576,467,196,-156,-462,-621, -624,-516,-348,-132,167,601,1154,1716,2210,2653, 3058,3348,3431,3309,3039,2614,1956,1023,-104,-1206, -2049,-2505,-2637,-2618,-2584,-2611,-2801,-3290,-4193,-5559, -7329,-9291,-11159,-12717,-13890,-14624,-14843,-14538,-13768,-12599, -11079,-9316,-7512,-5879,-4556,-3589,-2941,-2480,-2061,-1540, -825,121,1242,2353,3264,3872,4170,4236,4238,4300, 4411,4498,4502,4395,4165,3867,3644,3659,3976,4503, 5024,5367,5454,5269,4744,3808,2558,1297,364,-28, 170,877,1920,3070,4112,4887,5319,5348,4954,4176, 3067,1708,235,-1200,-2453,-3434,-4121,-4549,-4745,-4702, -4443,-4087,-3814,-3777,-4053,-4634,-5401,-6118,-6514,-6417, -5825,-4893,-3836,-2793,-1770,-691,466,1612,2628,3420, 3955,4231,4245,3992,3552,3096,2853,3009,3602,4477, 5383,6032,6158,5581,4367,2804,1293,180,-361,-388, -66,433,937,1320,1540,1673,1817,2061,2453,3019, 3751,4547,5264,5813,6192,6419,6528,6628,6866,7295, 7777,8086,8015,7482,6518,5254,3922,2748,1872,1289, 910,658,537,570,691,743,632,355,-52,-585, -1250,-1992,-2751,-3521,-4310,-5021,-5496,-5635,-5438,-5000, -4488,-4081,-3863,-3755,-3604,-3348,-3072,-2886,-2807,-2738, -2563,-2238,-1812,-1364,-940,-561,-251,-23,164,378, 649,917,1115,1195,1146,1017,888,771,560,190, -258,-626,-811,-797,-647,-442,-217,54,412,881, 1467,2142,2820,3392,3786,3959,3849,3401,2609,1577, 502,-419,-1063,-1373,-1381,-1196,-981,-892,-1043,-1532, -2413,-3671,-5214,-6925,-8736,-10583,-12316,-13712,-14570,-14779, -14350,-13373,-12012,-10497,-9083,-7973,-7203,-6585,-5884,-4975, -3913,-2811,-1743,-761,96,852,1571,2253,2878,3454, 3977,4392,4607,4594,4377,4007,3585,3270,3242,3610, 4331,5189,5897,6245,6157,5665,4834,3762,2625,1630, 921,556,566,966,1715,2689,3698,4544,5085,5291, 5234,4957,4402,3465,2116,498,-1084,-2308,-3031,-3311, -3297,-3150,-3011,-3036,-3322,-3852,-4494,-5114,-5637,-6026, -6230,-6215,-6019,-5693,-5248,-4648,-3832,-2742,-1358,216, 1717,2829,3363,3319,2874,2304,1911,1942,2517,3540, 4719,5723,6303,6361,5936,5118,4054,2975,2111,1542, 1199,1012,961,978,916,721,498,430,644,1172, 1926,2713,3329,3703,3924,4132,4428,4874,5494,6257, 7064,7777,8254,8434,8289,7830,7063,6058,4970,4015, 3299,2762,2279,1794,1354,1070,1015,1141,1270,1209, 882,335,-371,-1177,-2032,-2857,-3556,-4107,-4538,-4870, -5062,-5044,-4824,-4520,-4289,-4195,-4174,-4099,-3911,-3633, -3351,-3121,-2928,-2708,-2402,-2009,-1602,-1283,-1079,-905, -677,-382,-8,422,830,1114,1238,1236,1147,971, 703,357,-7,-311,-531,-709,-892,-1042,-1079,-959, -665,-175,558,1502,2503,3379,3983,4210,4020,3458, 2652,1757,919,253,-173,-370,-407,-368,-288,-142, 38,90,-233,-1134,-2665,-4675,-6931,-9160,-11092,-12501, -13319,-13616,-13540,-13195,-12646,-11981,-11280,-10569,-9816,-8955, -7945,-6813,-5644,-4566,-3652,-2866,-2117,-1309,-365,731, 1903,2992,3797,4165,4090,3703,3240,2920,2819,2891, 3154,3691,4506,5423,6194,6590,6473,5856,4905,3872, 2940,2175,1568,1135,893,886,1183,1827,2787,3910, 4972,5729,5986,5694,4956,3899,2625,1301,155,-653, -1143,-1419,-1577,-1730,-2029,-2541,-3184,-3788,-4226,-4523, -4795,-5163,-5680,-6311,-6927,-7312,-7232,-6528,-5216,-3515, -1774,-317,644,1078,1110,932,728,664,913,1590, 2661,3898,4993,5722,5992,5826,5333,4686,4083,3663, 3419,3185,2782,2157,1424,781,376,237,294,472, 756,1151,1605,1984,2180,2222,2279,2547,3091,3851, 4742,5713,6651,7397,7858,8058,8070,7915,7574,7027, 6262,5335,4388,3580,2994,2601,2323,2109,1961,1898, 1871,1784,1534,1064,397,-395,-1224,-2009,-2668,-3207, -3699,-4160,-4503,-4649,-4638,-4592,-4601,-4650,-4676,-4632, -4503,-4297,-4029,-3711,-3370,-3046,-2767,-2555,-2386,-2224, -2034,-1804,-1515,-1154,-710,-204,286,651,833,895, 943,990,977,863,673,428,73,-440,-1071,-1677, -2088,-2132,-1732,-939,95,1189,2169,2915,3381,3615, 3662,3532,3174,2543,1671,724,-61,-470,-442,-69, 523,1199,1767,1956,1537,470,-1096,-2975,-4993,-6966, -8727,-10133,-11146,-11841,-12359,-12798,-13107,-13137,-12768,-12019, -11056,-10091,-9264,-8564,-7888,-7148,-6329,-5454,-4473,-3296, -1933,-511,846,2038,2907,3274,3114,2631,2135,1881, 1985,2425,3109,3916,4716,5389,5889,6223,6349,6188, 5703,4952,4025,3021,2025,1163,583,415,721,1506, 2689,4018,5149,5818,5951,5596,4883,3989,3125,2455, 1986,1554,991,263,-530,-1224,-1672,-1862,-1910,-1975, -2197,-2712,-3586,-4747,-6001,-7122,-7893,-8129,-7742,-6796, -5439,-3872,-2397,-1372,-982,-1086,-1327,-1367,-1038,-369, 514,1490,2461,3346,4083,4624,4948,5081,5114,5115, 5087,4955,4651,4150,3482,2699,1889,1198,809,787, 1003,1236,1336,1291,1168,1054,1031,1160,1435,1806, 2260,2855,3649,4613,5644,6577,7305,7793,8076,8159, 8013,7603,6964,6187,5382,4641,4035,3591,3277,3074, 2972,2914,2814,2615,2301,1875,1317,627,-151,-934, -1636,-2213,-2677,-3089,-3462,-3762,-3997,-4223,-4494,-4764, -4939,-4957,-4830,-4593,-4279,-3944,-3640,-3395,-3196,-3050, -2949,-2829,-2626,-2337,-1992,-1596,-1147,-722,-431,-273, -124,178,693,1297,1754,1884,1651,1124,394,-435, -1215,-1788,-2083,-2128,-1952,-1548,-906,-42,997,2132, 3176,3894,4150,3981,3475,2686,1666,603,-187,-437, -89,691,1622,2420,2867,2837,2340,1498,440,-800, -2254,-3896,-5628,-7314,-8858,-10200,-11299,-12101,-12586,-12766, -12629,-12197,-11595,-10987,-10502,-10169,-9928,-9628,-9074,-8099, -6689,-5006,-3270,-1662,-315,692,1333,1607,1604,1488, 1422,1482,1664,1985,2470,3123,3897,4717,5511,6213, 6737,6966,6771,6046,4810,3289,1861,860,439,576, 1181,2097,3085,3902,4418,4686,4848,5004,5119,5055, 4710,4103,3332,2481,1600,743,21,-414,-454,-137, 264,349,-166,-1300,-2857,-4580,-6189,-7384,-7941,-7816, -7174,-6254,-5277,-4395,-3704,-3260,-3052,-2971,-2835,-2501, -1926,-1157,-291,572,1317,1900,2441,3105,3913,4729, 5386,5744,5757,5466,5004,4488,3953,3396,2849,2375, 2040,1849,1761,1696,1581,1400,1202,1014,852,774, 847,1088,1465,1975,2663,3560,4614,5697,6686,7491, 8032,8292,8296,8067,7623,7013,6340,5707,5169,4740, 4424,4226,4116,4034,3904,3664,3287,2780,2168,1473, 742,69,-486,-983,-1497,-2016,-2494,-2927,-3367,-3839, -4321,-4754,-5062,-5165,-5030,-4739,-4464,-4318,-4286,-4266, -4175,-3972,-3650,-3229,-2782,-2427,-2260,-2272,-2303,-2176, -1824,-1289,-647,18,639,1161,1546,1766,1769,1494, 959,273,-449,-1146,-1786,-2303,-2597,-2542,-2016,-987, 413,1906,3164,3931,4097,3738,3039,2208,1430,853, 560,550,775,1199,1781,2397,2878,3087,2996,2647, 2073,1255,155,-1264,-3001,-4929,-6854,-8597,-10019,-11035, -11613,-11815,-11791,-11736,-11802,-12013,-12248,-12357,-12252,-11885, -11202,-10142,-8705,-7034,-5370,-3874,-2577,-1491,-646,-31, 411,711,870,908,906,957,1190,1774,2830,4271, 5769,6943,7531,7492,6942,6044,4941,3801,2834,2175, 1831,1757,1898,2195,2565,2967,3441,4035,4731,5424, 5934,6073,5741,4950,3848,2677,1708,1148,1061,1352, 1805,2164,2207,1768,801,-617,-2277,-3952,-5402,-6388, -6791,-6711,-6404,-6096,-5850,-5604,-5299,-4936,-4537,-4110, -3670,-3224,-2790,-2335,-1831,-1240,-529,318,1276,2274, 3249,4151,4906,5404,5580,5476,5202,4862,4509,4131, 3716,3311,2983,2752,2564,2369,2165,1952,1691,1342, 960,653,483,463,613,970,1564,2393,3401,4498, 5591,6583,7373,7903,8173,8169,7868,7337,6750,6268, 5913,5634,5389,5205,5104,5050,4934,4662,4233,3687, 3051,2373,1726,1179,753,394,5,-523,-1234,-2058, -2814,-3370,-3702,-3888,-4050,-4271,-4537,-4786,-4945,-4971, -4852,-4610,-4297,-3962,-3618,-3283,-3026,-2929,-2985,-3071, -3054,-2856,-2466,-1926,-1321,-725,-162,407,1017,1636, 2148,2383,2189,1494,382,-902,-2063,-2862,-3171,-2979, -2304,-1202,148,1488,2554,3191,3389,3230,2797,2200, 1609,1183,982,971,1075,1253,1515,1909,2462,3111, 3692,4011,3923,3372,2367,935,-836,-2774,-4653,-6269, -7534,-8489,-9221,-9770,-10201,-10668,-11294,-12057,-12774,-13225, -13281,-12928,-12246,-11385,-10446,-9371,-8064,-6524,-4856,-3226, -1847,-885,-402,-339,-554,-843,-982,-764,-90,990, 2374,3902,5323,6370,6911,6955,6613,6032,5368,4747, 4180,3587,2905,2191,1597,1319,1490,2109,3046,4122, 5157,5980,6421,6332,5689,4641,3476,2514,2007,2024, 2430,2993,3478,3671,3411,2684,1613,372,-926,-2225, -3423,-4417,-5157,-5675,-6016,-6188,-6188,-6030,-5754,-5411, -5054,-4704,-4398,-4168,-3994,-3775,-3399,-2824,-2084,-1190, -170,912,1983,2981,3859,4539,4949,5095,5067,4966, 4792,4520,4170,3842,3609,3466,3351,3196,2962,2642, 2256,1824,1358,885,455,123,-13,120,544,1233, 2156,3248,4394,5464,6362,7052,7512,7715,7649,7357, 6931,6475,6103,5934,5992,6145,6198,6028,5640,5130, 4640,4246,3927,3590,3183,2689,2110,1462,788,130, -498,-1077,-1571,-1989,-2389,-2825,-3296,-3792,-4319,-4820, -5143,-5160,-4892,-4511,-4206,-4047,-3970,-3863,-3687,-3490, -3324,-3214,-3173,-3186,-3211,-3147,-2881,-2318,-1440,-325, 843,1839,2497,2747,2549,1862,724,-640,-1899,-2755, -3083,-2909,-2320,-1437,-401,616,1466,2054,2392,2560, 2604,2503,2203,1737,1227,806,573,594,911,1497, 2301,3250,4207,4911,5100,4668,3673,2261,664,-886, -2234,-3395,-4471,-5555,-6663,-7744,-8745,-9638,-10441,-11179, -11851,-12448,-12968,-13376,-13564,-13391,-12777,-11686,-10164,-8339, -6427,-4664,-3261,-2389,-2122,-2318,-2661,-2803,-2537,-1867, -922,192,1401,2614,3725,4668,5437,6041,6451,6602, 6470,6051,5340,4343,3146,1940,1022,678,1023,1953, 3219,4511,5510,6014,5982,5527,4810,4017,3348,2972, 2927,3123,3439,3773,4030,4103,3910,3436,2725,1851, 859,-250,-1467,-2707,-3821,-4685,-5285,-5669,-5855,-5867, -5741,-5528,-5294,-5141,-5120,-5143,-5067,-4854,-4551,-4154, -3592,-2814,-1855,-777,356,1479,2488,3304,3898,4280, 4495,4590,4583,4496,4364,4209,4029,3864,3770,3753, 3697,3483,3070,2499,1829,1163,598,165,-155,-351, -335,12,779,1902,3180,4396,5404,6115,6511,6635, 6622,6613,6651,6677,6638,6553,6468,6397,6295,6101, 5830,5557,5340,5183,5031,4770,4288,3575,2776,2067, 1505,1053,670,317,-93,-651,-1378,-2171,-2891,-3426, -3777,-4060,-4375,-4685,-4896,-4956,-4889,-4706,-4409,-4048, -3706,-3444,-3320,-3405,-3705,-4095,-4394,-4462,-4210,-3563, -2495,-1111,360,1630,2436,2636,2265,1518,601,-349, -1228,-1936,-2408,-2595,-2447,-1982,-1305,-547,201,931, 1649,2284,2702,2768,2435,1778,958,207,-226,-167, 390,1319,2430,3498,4310,4751,4840,4658,4238,3564, 2636,1535,356,-851,-2106,-3390,-4630,-5724,-6638,-7429, -8202,-9062,-10111,-11376,-12739,-13932,-14647,-14712,-14103,-12899, -11294,-9545,-7876,-6465,-5424,-4777,-4452,-4306,-4156,-3851, -3330,-2661,-1958,-1263,-523,347,1390,2618,4009,5435, 6627,7322,7372,6765,5636,4236,2880,1798,1147,1048, 1547,2491,3550,4420,4957,5157,5094,4840,4453,4021, 3666,3466,3437,3531,3717,3959,4199,4380,4435,4319, 3977,3362,2473,1374,170,-1045,-2196,-3211,-4030,-4625, -5023,-5264,-5373,-5381,-5367,-5388,-5447,-5526,-5622,-5683, -5620,-5327,-4787,-4065,-3258,-2398,-1428,-309,865,1920, 2733,3294,3638,3820,3926,4034,4161,4257,4281,4246, 4186,4124,4098,4092,3988,3617,2917,1977,987,145, -436,-741,-772,-464,213,1163,2181,3096,3856,4470, 4972,5409,5814,6187,6499,6705,6739,6587,6313,6073, 6003,6125,6323,6425,6311,5991,5569,5121,4664,4193, 3723,3279,2848,2376,1826,1219,618,59,-475,-1016, -1582,-2165,-2765,-3371,-3936,-4440,-4882,-5196,-5255,-4983, -4438,-3797,-3286,-3097,-3317,-3875,-4575,-5192,-5549,-5534, -5118,-4309,-3164,-1794,-418,708,1433,1747,1703,1353, 790,154,-452,-1040,-1658,-2260,-2700,-2817,-2496,-1722, -623,559,1573,2230,2440,2226,1715,1053,387,-110, -285,-99,390,1075,1852,2620,3291,3848,4338,4739, 4928,4745,4119,3107,1855,552,-629,-1603,-2360,-2974, -3590,-4368,-5459,-6939,-8722,-10594,-12311,-13660,-14477,-14659, -14200,-13239,-12046,-10875,-9852,-8944,-8077,-7221,-6397,-5647, -5008,-4497,-4146,-3952,-3827,-3610,-3119,-2194,-768,1073, 3073,4888,6216,6889,6886,6296,5305,4147,3062,2263, 1869,1870,2179,2697,3297,3840,4246,4502,4593,4492, 4251,3998,3798,3627,3491,3472,3652,3998,4393,4705, 4851,4817,4626,4271,3709,2892,1843,657,-538,-1616, -2493,-3167,-3696,-4142,-4522,-4847,-5130,-5363,-5518,-5623, -5756,-5970,-6188,-6233,-5960,-5376,-4602,-3741,-2835,-1896, -910,102,1073,1905,2536,2975,3274,3461,3554,3615, 3751,4021,4376,4722,4963,5030,4877,4441,3657,2580, 1440,504,-82,-330,-323,-160,90,412,853,1456, 2219,3076,3929,4686,5274,5658,5856,5915,5932,6006, 6156,6323,6438,6491,6507,6477,6380,6236,6046,5774, 5429,5076,4772,4456,3991,3332,2590,1927,1439,1105, 829,493,-6,-721,-1631,-2644,-3608,-4371,-4825,-4928, -4715,-4284,-3770,-3313,-3055,-3114,-3555,-4320,-5199,-5906, -6227,-6078,-5520,-4683,-3716,-2732,-1793,-910,-68,694, 1271,1536,1439,983,230,-705,-1661,-2470,-2976,-3037, -2585,-1701,-609,400,1111,1464,1527,1399,1141,814, 495,257,84,-50,-78,143,702,1561,2582,3597, 4464,5058,5279,5057,4407,3469,2461,1600,1023,718, 522,174,-523,-1634,-3137,-4972,-7023,-9058,-10788,-12033, -12816,-13226,-13344,-13264,-13031,-12615,-11936,-10973,-9800,-8548, -7371,-6427,-5831,-5628,-5750,-6010,-6132,-5880,-5137,-3891, -2208,-239,1764,3539,4872,5635,5806,5515,4954,4306, 3673,3100,2639,2402,2467,2795,3235,3652,3983,4194, 4256,4180,4026,3866,3741,3653,3578,3535,3601,3872, 4346,4868,5245,5359,5213,4878,4448,3934,3254,2353, 1296,227,-741,-1571,-2269,-2827,-3268,-3666,-4107,-4611, -5114,-5549,-5881,-6120,-6299,-6409,-6399,-6199,-5789,-5178, -4399,-3486,-2482,-1423,-351,632,1374,1811,2015,2136, 2317,2658,3213,3936,4677,5259,5560,5533,5205,4647, 3956,3243,2582,1948,1275,569,-39,-387,-408,-152, 282,837,1486,2205,2926,3588,4146,4572,4871,5117, 5409,5756,6078,6303,6418,6432,6355,6257,6234,6329, 6471,6539,6425,6102,5604,5018,4412,3864,3428,3117, 2898,2700,2448,2043,1379,406,-800,-2072,-3209,-4015, -4332,-4160,-3689,-3209,-2920,-2870,-3038,-3411,-3971,-4623, -5227,-5670,-5905,-5960,-5862,-5592,-5085,-4327,-3364,-2207, -932,270,1168,1595,1489,889,-45,-1035,-1824,-2284, -2443,-2363,-2078,-1606,-1021,-414,135,593,943,1162, 1220,1098,780,277,-330,-830,-982,-661,105,1180, 2382,3515,4380,4802,4725,4269,3684,3191,2926,2912, 3042,3140,3008,2520,1632,351,-1241,-2985,-4687,-6252, -7701,-9109,-10506,-11804,-12844,-13505,-13745,-13557,-12912,-11827, -10461,-9103,-8032,-7393,-7185,-7319,-7627,-7881,-7874,-7477, -6628,-5359,-3772,-2011,-213,1509,3013,4113,4673,4713, 4433,4080,3788,3537,3259,2993,2860,2943,3206,3548, 3882,4127,4211,4114,3892,3648,3467,3392,3434,3579, 3784,4017,4301,4680,5131,5521,5690,5582,5255,4782, 4200,3517,2744,1921,1086,279,-459,-1108,-1701,-2318, -2998,-3684,-4281,-4763,-5178,-5580,-5968,-6320,-6627,-6822, -6768,-6352,-5573,-4519,-3344,-2255,-1428,-920,-607,-281, 194,799,1464,2139,2828,3528,4208,4792,5223,5477, 5523,5328,4931,4395,3748,2997,2174,1357,639,116, -127,-53,264,675,1062,1421,1800,2256,2805,3431, 4086,4706,5198,5493,5626,5705,5817,5966,6122,6282, 6486,6751,7002,7106,6964,6544,5920,5238,4700,4425, 4399,4510,4613,4558,4211,3467,2346,1028,-260,-1358, -2192,-2710,-2906,-2842,-2666,-2538,-2565,-2753,-3014,-3279, -3542,-3866,-4317,-4937,-5683,-6378,-6788,-6773,-6315,-5447, -4228,-2796,-1378,-229,496,763,637,248,-248,-746, -1205,-1605,-1919,-2112,-2148,-1999,-1651,-1112,-400,400, 1112,1517,1479,1033,335,-449,-1149,-1552,-1467,-819, 242,1423,2437,3096,3380,3383,3268,3168,3179,3344, 3661,4034,4329,4397,4161,3648,2932,2067,1051,-122, -1433,-2858,-4455,-6302,-8349,-10350,-11982,-13026,-13435,-13271, -12672,-11804,-10817,-9834,-8995,-8484,-8399,-8660,-9056,-9350, -9364,-8981,-8161,-6958,-5482,-3852,-2199,-626,820,2084, 3045,3599,3771,3690,3484,3275,3162,3188,3288,3383, 3481,3636,3844,4020,4085,4008,3811,3564,3358,3245, 3229,3299,3465,3751,4170,4677,5161,5501,5672,5699, 5582,5289,4850,4366,3912,3454,2888,2141,1241,314, -510,-1148,-1608,-2001,-2486,-3159,-4018,-4973,-5880,-6590, -7002,-7075,-6839,-6382,-5793,-5122,-4380,-3645,-3036,-2586, -2192,-1725,-1138,-478,215,947,1716,2460,3165,3869, 4588,5256,5743,5915,5708,5138,4355,3554,2862,2271, 1724,1215,796,530,424,423,473,607,903,1394, 2031,2723,3406,4018,4465,4686,4733,4759,4904,5247, 5787,6418,6978,7314,7351,7103,6667,6137,5619,5254, 5162,5369,5756,6106,6193,5892,5185,4177,3051,1974, 1012,163,-576,-1192,-1670,-2014,-2244,-2372,-2361,-2201, -2002,-1974,-2269,-2895,-3794,-4851,-5905,-6774,-7268,-7269, -6764,-5852,-4716,-3556,-2494,-1582,-847,-307,14,99, -24,-296,-698,-1261,-1944,-2542,-2805,-2606,-1980,-1055, -18,883,1410,1431,959,173,-658,-1276,-1538,-1429, -1010,-376,363,1080,1651,1977,2055,2044,2178,2579, 3140,3656,3999,4171,4242,4265,4277,4287,4252,4062, 3611,2821,1666,152,-1695,-3809,-6040,-8195,-10087,-11525, -12316,-12409,-11967,-11284,-10608,-10058,-9680,-9511,-9540,-9717, -9976,-10245,-10392,-10248,-9680,-8675,-7345,-5841,-4264,-2669, -1163,114,1110,1840,2339,2646,2822,2917,2981,3054, 3195,3391,3607,3802,3937,4000,4013,3987,3862,3588, 3218,2901,2785,2914,3241,3708,4225,4647,4877,4987, 5125,5344,5583,5724,5674,5399,4916,4275,3556,2860, 2262,1777,1365,947,455,-169,-986,-1990,-3098,-4207, -5223,-6042,-6545,-6674,-6520,-6259,-6015,-5756,-5397,-4914, -4361,-3804,-3287,-2843,-2458,-2054,-1515,-801,48,1001, 2030,3065,4008,4776,5302,5561,5547,5295,4856,4312, 3764,3287,2853,2362,1769,1130,550,152,39,233, 651,1171,1721,2266,2740,3051,3167,3178,3262,3598, 4247,5102,5960,6637,7036,7100,6827,6340,5848,5533, 5480,5685,6055,6419,6646,6694,6589,6326,5861,5210, 4455,3654,2780,1772,655,-419,-1245,-1701,-1803,-1648, -1338,-993,-782,-873,-1365,-2243,-3398,-4632,-5717,-6496, -6921,-7021,-6835,-6395,-5746,-4965,-4117,-3172,-2076,-949, -73,291,114,-466,-1267,-2104,-2792,-3146,-3059,-2527, -1643,-595,345,910,958,544,-105,-728,-1148,-1296, -1198,-942,-652,-414,-209,36,351,716,1116,1536, 1922,2258,2570,2889,3191,3427,3579,3716,3968,4423, 5010,5494,5622,5219,4242,2730,791,-1421,-3708,-5912, -7864,-9387,-10372,-10852,-10944,-10755,-10379,-9972,-9743,-9810, -10114,-10516,-10897,-11206,-11399,-11365,-10993,-10241,-9166,-7835, -6341,-4818,-3402,-2174,-1131,-224,569,1226,1695,1980, 2148,2303,2560,2973,3492,3951,4188,4164,3967,3684, 3367,3084,2925,2910,2961,2995,3016,3091,3296,3657, 4133,4630,5075,5440,5714,5841,5764,5462,4952,4343, 3813,3496,3366,3273,3067,2686,2100,1279,251,-863, -1973,-3035,-4013,-4874,-5592,-6139,-6464,-6541,-6407,-6131, -5782,-5424,-5092,-4771,-4461,-4196,-3999,-3792,-3403,-2694, -1696,-530,655,1751,2707,3500,4106,4526,4792,4930, 4965,4920,4783,4452,3840,3001,2106,1289,649,275, 244,541,1026,1465,1675,1640,1490,1372,1404,1674, 2234,3066,4035,4956,5682,6102,6175,6003,5774,5633, 5581,5587,5655,5807,6014,6219,6386,6539,6723,6901, 6926,6651,6035,5129,3990,2688,1354,177,-656,-1030, -946,-546,-102,108,-26,-456,-1071,-1798,-2607,-3481, -4405,-5337,-6192,-6875,-7321,-7449,-7184,-6471,-5339,-3908, -2396,-1111,-317,-127,-509,-1323,-2303,-3094,-3415,-3195, -2604,-1874,-1177,-606,-201,12,51,-62,-300,-615, -890,-1014,-976,-898,-886,-917,-883,-710,-382,70, 610,1168,1638,1929,2024,1998,1980,2081,2369,2878, 3624,4543,5482,6261,6745,6792,6241,5021,3256,1166, -1079,-3299,-5279,-6867,-8052,-8876,-9353,-9492,-9374,-9190, -9173,-9468,-10037,-10690,-11268,-11710,-11977,-12011,-11779,-11310, -10617,-9656,-8420,-6993,-5507,-4076,-2837,-1917,-1298,-813, -290,346,1055,1741,2340,2845,3274,3620,3834,3894, 3834,3724,3608,3496,3384,3244,3032,2755,2515,2456, 2664,3126,3774,4512,5197,5647,5773,5634,5389,5151, 4951,4776,4625,4492,4390,4324,4245,4026,3558,2848, 1977,1018,-8,-1131,-2348,-3556,-4591,-5330,-5791,-6021, -6029,-5826,-5533,-5316,-5242,-5282,-5365,-5406,-5313,-5036, -4554,-3833,-2898,-1850,-819,106,901,1615,2365,3231, 4130,4881,5380,5610,5530,5046,4186,3178,2295,1707, 1449,1462,1615,1749,1742,1543,1177,754,440,389, 669,1242,1979,2741,3440,4067,4639,5108,5403,5534, 5586,5626,5643,5610,5518,5406,5355,5493,5931,6635, 7414,7999,8176,7880,7154,6067,4744,3408,2270,1410, 824,494,379,391,430,424,343,187,-62,-428, -946,-1664,-2649,-3951,-5502,-7009,-8048,-8317,-7820,-6771, -5404,-3946,-2663,-1773,-1341,-1321,-1644,-2183,-2725,-3067, -3123,-2910,-2497,-1983,-1474,-1063,-781,-607,-492,-387, -303,-293,-392,-586,-852,-1155,-1420,-1530,-1400,-1052, -576,-48,483,962,1302,1431,1335,1096,879,877, 1221,1927,2913,4053,5216,6295,7154,7616,7513,6788, 5483,3685,1549,-658,-2690,-4363,-5600,-6454,-7068,-7558, -7961,-8284,-8563,-8863,-9255,-9822,-10596,-11465,-12201,-12639, -12724,-12453,-11831,-10894,-9723,-8448,-7216,-6126,-5184,-4341, -3537,-2742,-1926,-1060,-159,692,1416,1969,2357,2647, 2981,3425,3883,4162,4157,3903,3526,3115,2714,2364, 2142,2168,2492,3035,3661,4270,4774,5094,5237,5264, 5214,5102,4978,4913,4912,4900,4842,4804,4836,4892, 4824,4496,3863,2970,1876,616,-752,-2103,-3267,-4127, -4650,-4889,-4958,-4979,-5052,-5223,-5496,-5820,-6098,-6206, -6054,-5637,-5062,-4471,-3942,-3439,-2888,-2252,-1477,-471, 823,2277,3633,4673,5276,5371,5014,4415,3838,3413, 3116,2902,2773,2699,2604,2390,1995,1461,916,497, 302,355,617,1000,1391,1768,2219,2826,3567,4312, 4971,5470,5711,5610,5228,4768,4452,4419,4688,5219, 5965,6840,7704,8357,8590,8311,7585,6605,5592,4707, 3955,3235,2471,1691,999,508,323,485,928,1450, 1769,1657,1019,-104,-1609,-3351,-5093,-6562,-7511,-7820, -7509,-6699,-5592,-4430,-3446,-2789,-2494,-2491,-2632,-2773, -2849,-2856,-2833,-2804,-2733,-2543,-2201,-1773,-1367,-1018, -673,-337,-97,-46,-201,-536,-987,-1443,-1764,-1845, -1660,-1231,-638,-23,476,777,865,784,611,401, 171,-12,48,565,1598,3025,4619,6116,7265,7920, 8038,7647,6780,5504,3919,2153,327,-1415,-2942,-4187, -5115,-5718,-6077,-6390,-6819,-7389,-8073,-8892,-9878,-10959, -11947,-12633,-12882,-12679,-12167,-11506,-10805,-10087,-9293,-8369, -7357,-6348,-5365,-4375,-3382,-2475,-1722,-1075,-418,304, 1058,1815,2560,3256,3826,4166,4201,3942,3498,3019, 2621,2369,2278,2325,2492,2809,3282,3813,4263,4592, 4862,5079,5170,5105,4963,4830,4746,4743,4854,5093, 5414,5728,5923,5861,5436,4607,3421,2033,688,-458, -1397,-2158,-2737,-3148,-3516,-3990,-4611,-5252,-5748,-6001, -5990,-5780,-5519,-5363,-5373,-5473,-5506,-5343,-4922,-4208, -3149,-1767,-212,1280,2517,3390,3885,4064,4042,3948, 3898,3934,3998,3987,3824,3499,3058,2603,2222,1943, 1685,1353,943,570,344,292,413,746,1345,2170, 3103,4021,4787,5225,5230,4848,4273,3783,3621,3887, 4491,5268,6049,6728,7255,7626,7882,8044,8056,7852, 7399,6668,5640,4397,3111,2000,1240,890,940,1347, 2025,2771,3249,3147,2358,1006,-682,-2457,-4082,-5369, -6221,-6654,-6690,-6375,-5801,-5127,-4495,-3978,-3569,-3257, -3041,-2933,-2916,-2934,-2963,-3036,-3146,-3187,-3023,-2598, -1962,-1238,-598,-205,-117,-248,-460,-718,-1064,-1489, -1854,-2011,-1879,-1474,-877,-198,431,833,882,567, 19,-571,-1005,-1125,-875,-296,581,1791,3289,4880, 6297,7327,7906,8049,7767,7032,5834,4262,2527,852, -621,-1818,-2694,-3284,-3745,-4247,-4902,-5769,-6834,-7974, -9047,-9996,-10831,-11550,-12084,-12361,-12390,-12254,-12004,-11590, -10931,-10012,-8942,-7883,-6909,-6024,-5243,-4573,-3929,-3190, -2319,-1353,-326,744,1767,2610,3187,3516,3661,3643, 3448,3118,2773,2521,2372,2293,2300,2450,2771,3237, 3770,4278,4662,4852,4832,4667,4465,4307,4245,4337, 4665,5249,5962,6542,6759,6533,5934,5090,4146,3252, 2466,1732,955,115,-784,-1753,-2760,-3676,-4365,-4783, -4978,-5028,-5019,-5031,-5147,-5464,-5993,-6573,-6933,-6869, -6315,-5363,-4167,-2882,-1662,-600,330,1183,1964,2641, 3186,3588,3853,4001,4041,3991,3861,3666,3435,3229, 3069,2911,2628,2084,1289,439,-227,-546,-429,131, 1039,2086,3038,3677,3942,3928,3796,3664,3592,3600, 3684,3832,4065,4413,4894,5445,6028,6672,7406,8153, 8727,8912,8576,7718,6453,4962,3493,2320,1627,1479, 1803,2451,3196,3769,3967,3719,3043,1954,507,-1105, -2618,-3836,-4715,-5318,-5732,-5992,-6059,-5884,-5473,-4897, -4280,-3754,-3405,-3243,-3239,-3374,-3599,-3788,-3813,-3658, -3403,-3074,-2603,-1955,-1223,-593,-248,-266,-588,-1081, -1609,-2046,-2291,-2288,-2003,-1471,-789,-120,352,529, 412,62,-462,-1046,-1537,-1792,-1747,-1420,-809,146, 1491,3130,4849,6374,7479,8051,8048,7503,6539,5326, 4019,2730,1585,674,-58,-775,-1581,-2463,-3376,-4320, -5324,-6364,-7376,-8328,-9248,-10179,-11098,-11912,-12497,-12778, -12723,-12341,-11702,-10945,-10169,-9390,-8608,-7895,-7302,-6750, -6088,-5234,-4215,-3106,-1966,-860,173,1123,1965,2614, 3011,3170,3163,3054,2863,2588,2253,1955,1850,2039, 2499,3107,3713,4196,4436,4365,4044,3660,3439,3514, 3878,4432,5054,5630,6072,6328,6375,6229,5937,5568, 5198,4858,4475,3921,3089,1958,608,-768,-1928,-2708, -3096,-3216,-3289,-3505,-3909,-4474,-5167,-5915,-6593,-7093, -7348,-7301,-6945,-6336,-5561,-4702,-3793,-2839,-1835,-790, 261,1237,2067,2704,3101,3254,3272,3353,3619,4025, 4399,4558,4396,3891,3101,2167,1273,558,97,-61, 108,557,1158,1743,2216,2568,2853,3093,3285,3436, 3566,3668,3702,3642,3534,3516,3757,4354,5293,6456, 7629,8595,9212,9417,9161,8398,7182,5743,4425,3462, 2934,2829,3086,3563,4067,4397,4435,4160,3621,2861, 1917,794,-483,-1838,-3132,-4198,-4952,-5423,-5690,-5771, -5641,-5313,-4886,-4475,-4136,-3898,-3810,-3902,-4124,-4352, -4466,-4399,-4116,-3619,-2948,-2215,-1540,-1033,-781,-837, -1164,-1640,-2085,-2336,-2348,-2171,-1860,-1442,-929,-393, 33,256,262,48,-388,-994,-1643,-2195,-2517,-2489, -2004,-1014,395,2027,3677,5188,6405,7173,7437,7272, 6844,6283,5624,4869,4027,3124,2190,1257,347,-547, -1458,-2403,-3371,-4345,-5366,-6500,-7763,-9076,-10298,-11300, -12043,-12538,-12774,-12740,-12468,-12039,-11539,-11017,-10484,-9946, -9383,-8745,-7991,-7125,-6163,-5128,-4042,-2921,-1779,-625, 497,1532,2351,2832,2946,2763,2428,2102,1917,1957, 2227,2663,3149,3573,3840,3928,3858,3652,3395,3257, 3389,3799,4367,4932,5369,5618,5703,5757,5926,6222, 6538,6764,6825,6656,6195,5418,4389,3235,2095,1058, 190,-489,-998,-1411,-1830,-2352,-3017,-3818,-4684,-5477, -6068,-6429,-6659,-6861,-7042,-7088,-6841,-6240,-5334,-4222, -3017,-1857,-867,-100,464,904,1309,1798,2447,3222, 3989,4604,5002,5131,4919,4335,3483,2575,1816,1311, 1043,915,854,849,939,1148,1485,1928,2425,2918, 3344,3640,3720,3549,3203,2837,2583,2530,2772,3432, 4564,6021,7495,8664,9340,9465,9092,8351,7403,6404, 5495,4746,4213,3956,3973,4188,4506,4813,5009,5004, 4727,4162,3364,2421,1347,117,-1199,-2438,-3471,-4275, -4854,-5187,-5248,-5076,-4758,-4398,-4105,-3981,-4068,-4328, -4642,-4870,-4918,-4741,-4346,-3759,-3055,-2367,-1824,-1496, -1368,-1393,-1552,-1821,-2123,-2364,-2477,-2412,-2140,-1682, -1104,-486,95,535,699,476,-154,-1062,-2009,-2751, -3153,-3160,-2729,-1866,-646,780,2232,3571,4704,5589, 6238,6679,6895,6862,6576,6072,5402,4629,3813,3009, 2244,1515,780,-22,-933,-1970,-3127,-4388,-5744,-7151, -8491,-9654,-10596,-11305,-11787,-12076,-12227,-12275,-12208,-11969, -11552,-11026,-10484,-9968,-9468,-8942,-8318,-7480,-6364,-5027, -3597,-2169,-824,338,1178,1617,1686,1537,1383,1399, 1669,2143,2687,3145,3406,3443,3314,3114,2932,2872, 3006,3298,3622,3892,4090,4262,4436,4633,4878,5200, 5627,6170,6771,7274,7495,7326,6773,5961,5088,4293, 3583,2911,2259,1626,960,205,-607,-1366,-2017,-2601, -3199,-3875,-4661,-5527,-6368,-7059,-7495,-7630,-7448,-6923, -6079,-5059,-4078,-3306,-2763,-2322,-1841,-1243,-490,449, 1543,2667,3631,4299,4636,4704,4572,4283,3874,3386, 2862,2322,1812,1389,1059,798,618,625,937,1529, 2262,2968,3494,3703,3524,3005,2324,1720,1405,1490, 1989,2862,4024,5329,6607,7698,8469,8826,8737,8292, 7644,6919,6188,5510,4970,4653,4585,4711,4932,5150, 5323,5407,5353,5111,4656,3954,3001,1828,525,-809, -2073,-3137,-3864,-4210,-4260,-4189,-4124,-4118,-4180,-4327, -4569,-4879,-5174,-5335,-5276,-4995,-4564,-4059,-3517,-2965, -2451,-2030,-1751,-1672,-1821,-2149,-2543,-2880,-3075,-3034, -2688,-2040,-1193,-320,391,811,849,462,-292,-1229, -2127,-2825,-3252,-3371,-3160,-2636,-1850,-847,327,1590, 2825,3951,4920,5702,6258,6556,6583,6377,5987,5479, 4911,4351,3866,3435,2923,2188,1212,73,-1148,-2400, -3656,-4916,-6189,-7468,-8687,-9753,-10620,-11292,-11788,-12085, -12152,-12013,-11768,-11537,-11379,-11286,-11194,-10973,-10469,-9586, -8315,-6756,-5102,-3564,-2327,-1494,-1016,-696,-337,121, 628,1134,1638,2139,2567,2831,2894,2807,2673,2589, 2619,2799,3060,3288,3405,3409,3342,3266,3281,3526, 4075,4854,5665,6304,6705,6925,7020,6982,6791,6476, 6092,5638,5078,4405,3659,2886,2124,1442,876,382, -125,-729,-1493,-2451,-3594,-4842,-6010,-6887,-7325,-7329, -7051,-6657,-6234,-5823,-5454,-5132,-4792,-4356,-3759,-2977, -2026,-940,217,1343,2335,3116,3651,3973,4155,4256, 4291,4198,3877,3276,2463,1607,894,435,305,536, 1080,1807,2551,3141,3431,3351,2940,2327,1677,1137, 825,831,1224,2011,3106,4351,5575,6651,7489,8015, 8182,8013,7606,7089,6569,6088,5646,5265,4988,4872, 4947,5205,5577,5924,6119,6097,5834,5271,4352,3133, 1779,478,-660,-1569,-2216,-2643,-2934,-3172,-3414,-3698, -4025,-4373,-4725,-5060,-5332,-5512,-5561,-5447,-5139,-4641, -4014,-3340,-2688,-2150,-1852,-1888,-2235,-2755,-3288,-3684, -3813,-3586,-3004,-2174,-1259,-418,225,595,643,366, -185,-918,-1724,-2477,-3056,-3368,-3420,-3267,-2913,-2299, -1367,-158,1188,2488,3614,4489,5106,5518,5786,5935, 5967,5886,5744,5579,5348,4969,4412,3728,2962,2100, 1104,-1,-1157,-2364,-3682,-5135,-6661,-8093,-9256,-10034, -10441,-10603,-10728,-10983,-11404,-11896,-12337,-12628,-12697,-12433, -11739,-10662,-9373,-8039,-6766,-5608,-4614,-3823,-3194,-2612, -1954,-1155,-273,563,1216,1611,1777,1852,1981,2225, 2541,2846,3098,3244,3227,3034,2753,2521,2446,2559, 2843,3273,3820,4435,5044,5578,5995,6321,6608,6875, 7082,7152,6995,6561,5887,5111,4395,3842,3477,3245, 3035,2690,2080,1176,31,-1252,-2549,-3757,-4799,-5597, -6101,-6324,-6340,-6265,-6221,-6271,-6369,-6383,-6190,-5730, -5038,-4207,-3312,-2377,-1426,-504,363,1228,2157,3112, 3959,4561,4832,4729,4258,3505,2614,1737,1011,584, 563,927,1527,2196,2793,3236,3445,3339,2882,2159, 1372,733,387,392,748,1422,2343,3401,4481,5504, 6386,7045,7455,7641,7620,7397,7000,6491,5938,5424, 5039,4894,5053,5477,6020,6515,6823,6878,6638,6075, 5233,4219,3139,2070,1086,243,-448,-1032,-1542,-1988, -2385,-2760,-3167,-3643,-4186,-4748,-5295,-5783,-6100,-6085, -5671,-4957,-4109,-3281,-2617,-2230,-2150,-2329,-2706,-3227, -3778,-4172,-4229,-3895,-3252,-2456,-1648,-897,-241,243, 471,432,160,-320,-985,-1768,-2547,-3217,-3685,-3860, -3666,-3102,-2271,-1292,-219,908,1996,2929,3640,4181, 4680,5220,5722,6054,6168,6085,5860,5567,5272,4992, 4687,4268,3625,2673,1394,-153,-1815,-3406,-4780,-5895, -6785,-7505,-8099,-8630,-9222,-9996,-10956,-11950,-12762,-13238, -13310,-12973,-12283,-11375,-10418,-9524,-8709,-7926,-7096,-6166, -5132,-4055,-3039,-2175,-1475,-886,-366,89,513,979, 1522,2107,2644,3027,3180,3101,2864,2568,2312,2187, 2240,2432,2674,2905,3135,3426,3843,4440,5214,6033, 6709,7115,7247,7161,6902,6480,5957,5466,5130,4983, 4969,4971,4839,4445,3730,2716,1490,173,-1101,-2225, -3117,-3778,-4311,-4837,-5388,-5902,-6309,-6593,-6752,-6756, -6570,-6226,-5784,-5317,-4836,-4301,-3641,-2791,-1714,-448, 899,2190,3306,4156,4640,4679,4295,3587,2711,1847, 1172,820,863,1252,1852,2502,3070,3450,3553,3317, 2770,2049,1320,718,332,219,393,800,1389,2156, 3101,4151,5176,6084,6820,7307,7477,7320,6903,6343, 5773,5312,5047,5034,5292,5754,6280,6756,7096,7209, 7036,6617,6049,5377,4556,3562,2497,1527,773,251, -111,-424,-781,-1253,-1883,-2656,-3520,-4435,-5325,-6042, -6400,-6303,-5826,-5116,-4279,-3440,-2770,-2448,-2522,-2878, -3328,-3736,-4062,-4294,-4395,-4287,-3915,-3298,-2519,-1690, -908,-248,247,530,525,174,-499,-1376,-2280,-3063, -3627,-3895,-3831,-3475,-2934,-2329,-1694,-960,-65,973, 2049,3056,3886,4488,4871,5095,5246,5390,5569,5810, 6092,6321,6356,6081,5428,4388,3025,1465,-109,-1505, -2590,-3357,-3959,-4607,-5458,-6547,-7803,-9113,-10346,-11372, -12119,-12577,-12760,-12713,-12505,-12204,-11836,-11356,-10690,-9821, -8802,-7707,-6590,-5521,-4602,-3906,-3392,-2904,-2298,-1517, -611,303,1090,1663,2035,2280,2480,2628,2682,2657, 2594,2496,2347,2138,1944,1891,2070,2481,3105,3914, 4828,5713,6428,6874,6985,6783,6396,6010,5776,5746, 5883,6090,6268,6316,6130,5632,4838,3869,2866,1896, 951,35,-850,-1756,-2723,-3678,-4505,-5165,-5661,-5999, -6189,-6273,-6302,-6325,-6344,-6325,-6230,-6003,-5565,-4799, -3654,-2219,-664,872,2264,3374,4051,4224,3945,3343, 2587,1848,1313,1104,1244,1649,2186,2744,3224,3510, 3529,3295,2907,2431,1867,1226,617,178,-8,76, 424,1051,1936,3023,4219,5374,6293,6818,6924,6723, 6397,6056,5716,5394,5167,5130,5318,5687,6146,6620, 7070,7431,7596,7460,7008,6294,5424,4493,3588,2774, 2126,1698,1474,1342,1099,568,-314,-1458,-2705,-3916, -4949,-5680,-6043,-6027,-5676,-5085,-4385,-3712,-3184,-2878, -2818,-2986,-3315,-3706,-4083,-4398,-4625,-4726,-4629,-4240, -3517,-2522,-1440,-498,152,457,425,94,-439,-1044, -1626,-2171,-2707,-3209,-3607,-3820,-3799,-3526,-2993,-2224, -1275,-219,859,1836,2589,3074,3342,3543,3853,4383, 5128,5978,6771,7326,7480,7131,6324,5234,4058,2930, 1934,1074,290,-501,-1354,-2304,-3388,-4645,-6041,-7429, -8630,-9577,-10351,-11067,-11764,-12391,-12846,-13027,-12875,-12395, -11667,-10800,-9884,-8988,-8177,-7471,-6817,-6118,-5319,-4462, -3605,-2771,-1936,-1103,-327,340,912,1449,1970,2431, 2773,2946,2912,2644,2181,1651,1232,1058,1203,1688, 2495,3509,4517,5313,5802,6003,5981,5844,5723,5743, 5928,6205,6474,6671,6769,6755,6592,6256,5781,5225, 4592,3857,3022,2102,1073,-72,-1254,-2325,-3200,-3904, -4465,-4884,-5172,-5407,-5683,-6053,-6489,-6912,-7236,-7364, -7176,-6571,-5511,-4043,-2313,-548,1011,2176,2851,3091, 3023,2750,2332,1851,1457,1316,1476,1842,2268,2664, 3017,3327,3568,3668,3548,3154,2511,1714,885,154, -367,-557,-322,318,1236,2267,3298,4273,5135,5798, 6183,6261,6093,5810,5503,5217,4996,4888,4959,5255, 5785,6465,7157,7698,7958,7869,7446,6753,5890,5023, 4310,3831,3551,3373,3213,3010,2663,2031,1047,-217, -1592,-2898,-4005,-4823,-5308,-5496,-5448,-5215,-4823,-4302, -3735,-3237,-2910,-2830,-3055,-3571,-4250,-4882,-5278,-5356, -5132,-4657,-3979,-3163,-2302,-1500,-843,-379,-128,-64, -144,-358,-745,-1321,-2052,-2849,-3586,-4152,-4437,-4315, -3736,-2825,-1822,-943,-277,183,526,853,1268,1840, 2607,3578,4691,5808,6717,7222,7263,6955,6453,5860, 5236,4627,4043,3405,2614,1637,532,-594,-1675,-2697, -3708,-4770,-5931,-7223,-8602,-9914,-11027,-11900,-12525,-12853, -12866,-12608,-12186,-11696,-11169,-10601,-9998,-9346,-8614,-7782, -6887,-6007,-5196,-4453,-3736,-3024,-2301,-1521,-631,359, 1354,2203,2783,2991,2783,2239,1560,983,669,663, 947,1480,2198,2976,3672,4196,4551,4784,4961,5143, 5370,5631,5884,6092,6264,6434,6593,6696,6711,6668, 6597,6440,6090,5497,4693,3746,2701,1567,374,-783, -1763,-2472,-2911,-3208,-3539,-4037,-4713,-5506,-6339,-7145, -7846,-8297,-8327,-7830,-6829,-5456,-3891,-2304,-838,367, 1205,1673,1876,1933,1884,1743,1542,1347,1261,1367, 1714,2269,2915,3501,3913,4106,4045,3682,3024,2164, 1244,413,-209,-551,-565,-218,440,1290,2207,3141, 4057,4883,5507,5848,5878,5624,5182,4720,4410,4349, 4560,5015,5681,6459,7195,7732,7967,7863,7454,6830, 6130,5508,5089,4903,4868,4863,4749,4432,3891,3155, 2287,1311,194,-1072,-2383,-3561,-4476,-5070,-5317,-5202, -4772,-4169,-3571,-3124,-2911,-2972,-3291,-3788,-4352,-4876, -5270,-5434,-5303,-4917,-4433,-3961,-3480,-2895,-2146,-1294, -500,83,382,344,-68,-823,-1794,-2788,-3608,-4115, -4226,-3946,-3401,-2790,-2263,-1890,-1686,-1592,-1473,-1137, -447,582,1768,2916,3942,4804,5479,5964,6317,6582, 6736,6716,6486,6070,5496,4778,3961,3130,2344,1592, 810,-58,-1054,-2209,-3540,-5026,-6560,-7989,-9234,-10302, -11165,-11777,-12134,-12296,-12343,-12302,-12138,-11810,-11291,-10580, -9721,-8822,-8021,-7402,-6923,-6467,-5921,-5227,-4333,-3191, -1842,-449,772,1658,2141,2253,2074,1711,1293,930, 743,791,1048,1425,1834,2244,2661,3100,3573,4030, 4409,4700,4968,5276,5589,5827,5962,6056,6191,6405, 6694,7019,7293,7415,7321,6939,6246,5286,4151,2963, 1850,902,139,-441,-873,-1219,-1610,-2220,-3169,-4399, -5702,-6867,-7764,-8315,-8461,-8186,-7543,-6613,-5451,-4127, -2757,-1483,-396,445,1009,1283,1319,1210,1060,930, 887,1025,1415,2052,2814,3540,4082,4357,4334,4043, 3533,2861,2081,1252,456,-176,-534,-568,-273,356, 1296,2410,3475,4342,4974,5352,5428,5187,4709,4191, 3864,3885,4278,4954,5764,6536,7114,7439,7532,7431, 7179,6854,6559,6326,6110,5881,5689,5610,5625,5595, 5368,4875,4128,3154,1973,619,-815,-2196,-3368,-4177, -4521,-4436,-4085,-3678,-3348,-3140,-3093,-3232,-3507,-3805, -4062,-4311,-4599,-4906,-5165,-5324,-5349,-5180,-4729,-3963, -2940,-1796,-707,137,563,463,-123,-985,-1867,-2574, -3010,-3155,-3079,-2927,-2845,-2884,-3000,-3102,-3097,-2938, -2595,-2052,-1319,-472,411,1305,2211,3120,4007,4863, 5646,6276,6677,6819,6739,6497,6136,5684,5173,4642, 4136,3651,3080,2297,1260,4,-1387,-2823,-4239,-5590, -6847,-7989,-9035,-10029,-10979,-11819,-12434,-12717,-12629,-12226, -11641,-11007,-10376,-9801,-9363,-9103,-8929,-8651,-8089,-7180, -5965,-4574,-3152,-1835,-709,193,831,1180,1264,1173, 1032,931,880,869,919,1064,1280,1518,1772,2106, 2564,3115,3669,4145,4503,4743,4897,5010,5131,5308, 5575,5943,6435,7031,7612,8006,8073,7765,7104,6144, 5017,3942,3086,2471,2026,1651,1256,752,77,-796, -1859,-3086,-4422,-5755,-6922,-7776,-8257,-8408,-8257,-7770, -6926,-5788,-4488,-3173,-1966,-977,-293,47,126,76, 31,77,254,570,1009,1556,2198,2915,3618,4165, 4422,4362,4049,3545,2846,1949,960,52,-613,-940, -859,-327,608,1762,2892,3795,4326,4456,4283,3988, 3745,3629,3638,3776,4095,4617,5258,5874,6365,6709, 6919,6999,6952,6806,6608,6387,6167,6006,5986,6132, 6370,6571,6604,6339,5690,4637,3277,1800,407,-809, -1823,-2588,-3070,-3323,-3443,-3494,-3507,-3498,-3481,-3459, -3420,-3378,-3410,-3620,-4075,-4753,-5517,-6148,-6446,-6279, -5614,-4548,-3307,-2151,-1260,-709,-516,-634,-944,-1305, -1590,-1769,-1902,-2073,-2318,-2617,-2915,-3168,-3368,-3515, -3586,-3536,-3329,-2964,-2493,-1962,-1344,-575,370,1449, 2562,3610,4528,5285,5835,6117,6164,6105,6060,6060, 6059,5987,5754,5293,4617,3806,2898,1868,727,-441, -1571,-2703,-3957,-5391,-6949,-8495,-9865,-10953,-11695,-12047, -12033,-11783,-11459,-11171,-10967,-10852,-10801,-10745,-10593,-10257, -9677,-8813,-7656,-6295,-4900,-3621,-2531,-1625,-877,-275, 181,503,724,838,844,785,725,706,736,835, 1050,1412,1893,2435,3008,3550,3938,4084,4029,3934, 3988,4285,4817,5509,6294,7076,7714,8084,8130,7855, 7299,6556,5769,5079,4516,4056,3686,3372,3023,2523, 1802,887,-143,-1258,-2523,-3951,-5420,-6743,-7770,-8389, -8553,-8282,-7656,-6771,-5727,-4599,-3501,-2578,-1905,-1454, -1155,-977,-898,-825,-638,-281,210,755,1341,2012, 2798,3620,4322,4751,4798,4386,3522,2370,1196,200, -499,-827,-725,-233,524,1369,2156,2786,3206,3395, 3402,3311,3224,3215,3290,3449,3709,4092,4588,5157, 5747,6271,6629,6753,6639,6365,6057,5841,5796,5951, 6286,6744,7204,7519,7556,7262,6628,5669,4469,3209, 2060,1074,216,-598,-1415,-2205,-2889,-3376,-3602,-3544, -3263,-2885,-2557,-2431,-2658,-3311,-4274,-5268,-6028,-6435, -6474,-6166,-5549,-4740,-3890,-3119,-2495,-2046,-1746,-1530, -1363,-1256,-1238,-1321,-1481,-1680,-1905,-2196,-2564,-2922, -3166,-3298,-3424,-3595,-3765,-3832,-3710,-3360,-2768,-1948, -952,141,1246,2262,3116,3777,4272,4683,5107,5577, 6043,6424,6659,6697,6489,6040,5467,4891,4350,3798, 3163,2365,1337,48,-1469,-3130,-4838,-6498,-7997,-9214, -10057,-10526,-10736,-10822,-10883,-10989,-11180,-11448,-11708,-11815, -11678,-11321,-10781,-10055,-9143,-8070,-6897,-5693,-4540,-3505, -2618,-1837,-1092,-383,176,488,556,480,356,231, 167,278,635,1171,1749,2266,2667,2924,3028,3021, 2973,2968,3116,3522,4217,5133,6089,6880,7392,7655, 7738,7662,7402,6975,6490,6038,5624,5236,4912,4684, 4510,4274,3846,3153,2179,946,-487,-2038,-3606,-5101, -6431,-7467,-8066,-8146,-7785,-7155,-6405,-5617,-4831,-4072, -3367,-2740,-2222,-1844,-1631,-1559,-1539,-1436,-1143,-605, 194,1231,2388,3488,4363,4882,4964,4583,3804,2786, 1729,821,197,-99,-106,115,511,1012,1535,2032, 2472,2799,2959,2956,2854,2733,2687,2806,3147,3680, 4300,4942,5556,6062,6325,6271,5972,5607,5364,5362, 5614,6068,6658,7277,7768,7995,7911,7545,6986,6373, 5796,5204,4464,3464,2248,946,-314,-1434,-2279,-2722, -2732,-2423,-2026,-1764,-1759,-2036,-2576,-3320,-4164,-4964, -5598,-5974,-6044,-5836,-5469,-5049,-4619,-4148,-3619,-3072, -2562,-2110,-1728,-1440,-1295,-1294,-1379,-1482,-1592,-1717, -1856,-2022,-2264,-2640,-3126,-3654,-4120,-4421,-4463,-4163, -3524,-2662,-1762,-933,-177,549,1269,1996,2755,3581, 4423,5175,5759,6175,6429,6511,6432,6279,6128,5984, 5816,5616,5332,4811,3889,2539,894,-845,-2524,-4092, -5518,-6737,-7683,-8381,-8920,-9389,-9848,-10340,-10879,-11416, -11842,-12082,-12122,-11955,-11559,-10961,-10250,-9506,-8720,-7806, -6708,-5479,-4254,-3140,-2154,-1304,-668,-294,-164,-213, -326,-360,-210,151,663,1228,1732,2068,2210,2197, 2087,1977,2006,2244,2657,3178,3790,4519,5337,6151, 6859,7367,7614,7608,7428,7158,6855,6539,6236,5989, 5827,5774,5819,5850,5709,5276,4489,3313,1802,111, -1580,-3141,-4518,-5662,-6530,-7094,-7361,-7326,-6996,-6421, -5692,-4879,-4073,-3373,-2873,-2621,-2602,-2720,-2825,-2776, -2466,-1791,-721,618,1965,3095,3909,4410,4595,4458, 4011,3330,2533,1750,1094,634,399,379,564,935, 1437,1959,2351,2520,2502,2389,2240,2101,2060,2252, 2756,3513,4351,5073,5536,5683,5553,5274,5008,4877, 4956,5267,5779,6369,6863,7154,7304,7442,7624,7820, 7949,7929,7676,7118,6230,5047,3661,2214,869,-203, -880,-1167,-1173,-1067,-982,-1009,-1217,-1655,-2284,-2978, -3629,-4221,-4763,-5213,-5510,-5636,-5617,-5478,-5213,-4816, -4312,-3757,-3210,-2737,-2398,-2204,-2094,-1958,-1725,-1425, -1155,-989,-979,-1178,-1645,-2340,-3087,-3705,-4117,-4335, -4380,-4251,-3948,-3496,-2960,-2397,-1825,-1215,-512,349, 1365,2426,3378,4144,4729,5170,5471,5656,5812,6049, 6383,6730,6970,7025,6849,6417,5678,4567,3096,1435, -210,-1712,-3004,-4088,-5039,-5956,-6863,-7737,-8559,-9354, -10123,-10821,-11383,-11758,-11960,-12041,-12020,-11867,-11571,-11131, -10519,-9691,-8615,-7334,-5953,-4629,-3495,-2657,-2155,-1900, -1733,-1521,-1217,-832,-396,64,526,962,1322,1553, 1615,1530,1360,1209,1184,1351,1712,2237,2898,3653, 4446,5234,5980,6629,7097,7294,7195,6902,6550,6245, 6056,6035,6203,6514,6831,7001,6933,6591,5950,4999, 3771,2354,829,-746,-2291,-3735,-5038,-6156,-6975,-7353, -7226,-6689,-5943,-5182,-4528,-4041,-3782,-3783,-3978,-4210, -4301,-4135,-3656,-2873,-1865,-721,497,1725,2808,3583, 3991,4076,3900,3505,2916,2181,1442,864,561,546, 765,1153,1601,1966,2108,1994,1681,1298,1019,1025, 1406,2081,2853,3543,4070,4400,4530,4504,4424,4401, 4496,4693,4918,5127,5327,5518,5700,5930,6294,6836, 7499,8153,8667,8916,8765,8149,7139,5906,4615,3356, 2218,1308,713,389,188,-2,-221,-480,-799,-1212, -1705,-2238,-2807,-3423,-4069,-4695,-5255,-5659,-5804,-5646, -5265,-4833,-4495,-4281,-4124,-3937,-3684,-3379,-3021,-2574, -2024,-1455,-1009,-789,-819,-1087,-1556,-2144,-2748,-3276, -3660,-3895,-4025,-4109,-4176,-4216,-4154,-3893,-3383,-2660, -1820,-915,53,1045,1949,2677,3209,3595,3929,4305, 4797,5423,6133,6832,7401,7740,7775,7458,6792,5845, 4722,3496,2214,913,-337,-1492,-2570,-3631,-4722,-5844, -6950,-7971,-8832,-9501,-10036,-10546,-11126,-11757,-12306,-12645, -12708,-12458,-11863,-10956,-9850,-8668,-7489,-6356,-5347,-4548, -3979,-3575,-3217,-2808,-2299,-1691,-1030,-378,197,645, 950,1122,1173,1115,984,840,720,657,737,1083, 1761,2674,3654,4582,5407,6076,6512,6658,6556,6362, 6226,6201,6299,6516,6813,7119,7378,7572,7675,7610, 7317,6790,6021,4954,3554,1863,4,-1838,-3496,-4850, -5811,-6331,-6447,-6253,-5865,-5413,-5026,-4811,-4797,-4921, -5086,-5225,-5288,-5191,-4847,-4211,-3310,-2221,-1026,210, 1424,2498,3290,3710,3728,3386,2791,2124,1586,1304, 1300,1497,1788,2034,2099,1917,1574,1214,946,826, 894,1170,1627,2165,2659,3038,3304,3518,3739,3994, 4268,4523,4732,4852,4859,4796,4723,4712,4850,5229, 5886,6744,7658,8492,9127,9449,9370,8876,8044,7034, 6011,5053,4159,3319,2554,1904,1394,1016,741,517, 259,-109,-625,-1284,-2065,-2900,-3692,-4354,-4824,-5108, -5243,-5264,-5195,-5098,-5044,-5053,-5084,-5036,-4816,-4390, -3794,-3116,-2461,-1923,-1546,-1331,-1274,-1366,-1577,-1864, -2188,-2533,-2902,-3296,-3699,-4094,-4466,-4772,-4915,-4807, -4410,-3756,-2915,-1972,-1051,-254,399,946,1443,1947, 2493,3116,3857,4738,5708,6648,7423,7940,8140,8005, 7586,6986,6288,5501,4603,3583,2424,1123,-251,-1578, -2781,-3873,-4889,-5850,-6771,-7674,-8594,-9562,-10567,-11544, -12388,-13014,-13352,-13342,-12942,-12206,-11258,-10230,-9228,-8320, -7515,-6785,-6105,-5451,-4834,-4254,-3638,-2925,-2130,-1346, -645,-31,489,865,1028,962,718,397,112,-19, 99,508,1186,2057,3025,3968,4765,5336,5685,5872, 5989,6079,6144,6203,6284,6414,6592,6828,7149,7565, 8024,8429,8656,8593,8147,7264,5962,4322,2470,558, -1243,-2777,-3924,-4654,-5017,-5109,-5047,-4931,-4822,-4789, -4872,-5044,-5260,-5506,-5762,-5944,-5924,-5587,-4856,-3725, -2310,-795,608,1728,2465,2795,2768,2507,2178,1957, 1940,2093,2300,2451,2494,2398,2154,1791,1397,1083, 953,1009,1176,1370,1555,1740,1957,2226,2540,2907, 3329,3791,4252,4621,4783,4679,4372,4013,3764,3743, 4000,4543,5340,6299,7275,8119,8769,9202,9384,9284, 8903,8269,7428,6460,5472,4560,3789,3162,2680,2351, 2137,1948,1657,1188,530,-282,-1181,-2060,-2804,-3363, -3764,-4065,-4313,-4537,-4766,-5030,-5309,-5527,-5607,-5515, -5264,-4867,-4334,-3717,-3112,-2595,-2207,-1954,-1780,-1642, -1518,-1441,-1464,-1655,-2032,-2566,-3196,-3859,-4464,-4924, -5167,-5164,-4910,-4410,-3697,-2882,-2109,-1507,-1090,-768, -408,92,770,1626,2618,3664,4677,5602,6410,7065, 7531,7820,7951,7887,7586,7032,6277,5375,4337,3156, 1885,634,-501,-1487,-2370,-3246,-4203,-5288,-6499,-7803, -9131,-10410,-11551,-12460,-13047,-13256,-13119,-12736,-12195,-11513, -10705,-9853,-9062,-8371,-7743,-7142,-6558,-5979,-5347,-4603, -3714,-2707,-1667,-711,30,458,562,407,99,-263, -560,-675,-525,-110,490,1175,1897,2651,3400,4088, 4673,5141,5478,5673,5746,5728,5670,5645,5735,6004, 6471,7116,7874,8636,9250,9566,9449,8809,7676,6203, 4574,2903,1232,-363,-1748,-2824,-3585,-4064,-4296,-4337, -4271,-4218,-4314,-4652,-5229,-5941,-6627,-7096,-7187,-6822, -6006,-4824,-3416,-1990,-777,96,652,992,1221,1419, 1630,1870,2126,2359,2516,2553,2451,2235,1957,1685, 1482,1365,1304,1263,1210,1126,1018,938,993,1272, 1788,2457,3144,3730,4122,4278,4216,3988,3681,3381, 3162,3101,3267,3695,4352,5162,6061,7002,7909,8680, 9209,9438,9336,8902,8183,7282,6330,5456,4764,4287, 3985,3766,3518,3163,2678,2073,1366,579,-236,-999, -1642,-2166,-2611,-3025,-3444,-3902,-4422,-4969,-5442,-5730, -5799,-5687,-5456,-5163,-4839,-4496,-4128,-3720,-3290,-2874, -2487,-2096,-1692,-1330,-1123,-1165,-1478,-2022,-2744,-3568, -4346,-4918,-5179,-5136,-4866,-4491,-4093,-3713,-3356,-3005, -2648,-2275,-1869,-1379,-729,105,1044,1998,2935,3865, 4795,5699,6530,7241,7798,8138,8205,7956,7392,6573, 5597,4563,3558,2636,1794,990,158,-748,-1763,-2932, -4268,-5717,-7189,-8606,-9921,-11078,-12012,-12662,-12997,-13013, -12748,-12260,-11632,-10942,-10276,-9711,-9276,-8922,-8554,-8049, -7313,-6331,-5185,-3977,-2808,-1782,-1010,-546,-359,-355, -447,-589,-754,-898,-923,-759,-406,82,670,1355, 2131,2956,3759,4446,4926,5151,5140,4983,4787,4665, 4718,5047,5683,6571,7548,8445,9148,9617,9804,9639, 9077,8120,6824,5269,3581,1872,274,-1073,-2036,-2553, -2710,-2695,-2727,-2973,-3508,-4302,-5255,-6227,-7040,-7524, -7580,-7213,-6505,-5576,-4544,-3542,-2661,-1913,-1271,-689, -118,467,1049,1586,1996,2207,2226,2153,2089,2077, 2109,2142,2130,2032,1811,1479,1102,758,505,419, 575,969,1529,2157,2772,3314,3711,3899,3879,3716, 3485,3219,2951,2736,2663,2813,3234,3939,4888,5991, 7118,8110,8832,9223,9275,9011,8509,7862,7168,6517, 5983,5606,5367,5159,4837,4323,3663,2961,2285,1645, 1047,486,-58,-617,-1214,-1850,-2519,-3200,-3853,-4428, -4891,-5218,-5412,-5475,-5405,-5248,-5093,-4999,-4927,-4754, -4384,-3819,-3118,-2381,-1707,-1200,-934,-946,-1234,-1760, -2435,-3135,-3736,-4169,-4437,-4567,-4582,-4504,-4366,-4219, -4078,-3911,-3664,-3311,-2869,-2373,-1840,-1261,-606,148, 1009,1982,3071,4233,5404,6491,7374,7966,8225,8166, 7846,7332,6675,5940,5215,4547,3911,3237,2483,1644, 720,-338,-1576,-2985,-4510,-6101,-7696,-9212,-10535,-11554, -12186,-12399,-12261,-11954,-11642,-11387,-11180,-10978,-10734,-10425, -10026,-9467,-8686,-7686,-6552,-5392,-4280,-3251,-2366,-1687, -1226,-943,-803,-773,-830,-950,-1099,-1229,-1236,-985, -425,377,1298,2241,3119,3811,4229,4372,4316,4169, 4043,4023,4166,4496,5011,5689,6502,7435,8451,9413, 10145,10507,10401,9774,8636,7088,5343,3650,2202,1089, 329,-134,-419,-691,-1096,-1720,-2590,-3661,-4808,-5847, -6601,-6994,-7088,-6959,-6663,-6239,-5733,-5157,-4495,-3731, -2867,-1959,-1093,-336,269,726,1046,1273,1481,1711, 1963,2215,2447,2613,2621,2420,2039,1572,1107,713, 440,349,473,779,1199,1677,2208,2776,3305,3679, 3828,3741,3470,3080,2659,2291,2050,2014,2285,2926, 3896,5058,6228,7251,8030,8515,8683,8582,8324,8038, 7777,7513,7205,6857,6478,6057,5586,5075,4532,3942, 3338,2786,2334,1941,1507,943,217,-622,-1497,-2331, -3065,-3648,-4065,-4351,-4571,-4800,-5061,-5330,-5573,-5730, -5742,-5549,-5124,-4493,-3725,-2908,-2164,-1612,-1317,-1277, -1451,-1764,-2164,-2606,-3037,-3403,-3709,-3992,-4259,-4481, -4608,-4618,-4525,-4362,-4139,-3875,-3598,-3328,-3065,-2771, -2373,-1796,-985,53,1268,2576,3888,5118,6179,6962, 7426,7637,7672,7563,7289,6855,6304,5711,5147,4666, 4242,3764,3121,2256,1138,-255,-1920,-3760,-5582,-7224, -8598,-9682,-10483,-11021,-11326,-11463,-11542,-11644,-11772,-11873, -11865,-11684,-11300,-10724,-9984,-9135,-8219,-7243,-6207,-5148, -4121,-3169,-2326,-1666,-1278,-1182,-1319,-1583,-1876,-2070, -2035,-1710,-1133,-384,452,1289,2040,2645,3094,3417, 3629,3711,3653,3494,3337,3335,3609,4210,5133,6329, 7682,8998,10073,10723,10822,10329,9331,8010,6592,5271, 4183,3378,2816,2380,1902,1251,390,-614,-1662,-2700, -3696,-4580,-5301,-5881,-6366,-6745,-6958,-6974,-6790,-6398, -5796,-5002,-4096,-3185,-2356,-1664,-1129,-721,-341,103, 628,1170,1651,2035,2330,2535,2592,2469,2184,1781, 1324,895,548,328,271,392,690,1144,1720,2359, 2973,3474,3773,3800,3513,2961,2300,1741,1443,1445, 1745,2317,3112,4054,5039,5951,6713,7290,7683,7919, 8049,8123,8152,8107,7968,7728,7362,6851,6246,5651, 5154,4764,4442,4135,3791,3374,2841,2162,1358,487, -362,-1116,-1745,-2261,-2708,-3137,-3588,-4079,-4631,-5209, -5730,-6074,-6158,-5958,-5526,-4930,-4231,-3505,-2841,-2323, -1983,-1786,-1692,-1689,-1786,-1988,-2295,-2672,-3083,-3484, -3850,-4162,-4390,-4484,-4408,-4219,-4050,-3995,-4037,-4098, -4094,-3969,-3682,-3182,-2441,-1494,-392,812,2078,3366, 4606,5712,6600,7201,7475,7459,7250,6966,6687,6449, 6266,6124,5984,5756,5325,4596,3540,2172,555,-1187, -2918,-4524,-5939,-7143,-8143,-8963,-9660,-10299,-10885,-11373, -11725,-11932,-12006,-11959,-11789,-11506,-11110,-10589,-9910,-9039, -7969,-6745,-5463,-4250,-3246,-2558,-2194,-2068,-2066,-2131, -2230,-2288,-2231,-2026,-1689,-1217,-590,180,1025,1847, 2550,3072,3367,3392,3151,2748,2353,2166,2353,3005, 4119,5577,7152,8595,9705,10348,10467,10098,9411,8615, 7834,7099,6406,5765,5156,4530,3815,2973,2028,1050, 101,-807,-1702,-2612,-3568,-4551,-5471,-6215,-6718,-6969, -6970,-6737,-6310,-5748,-5118,-4464,-3823,-3201,-2604,-2034, -1488,-937,-331,330,1001,1599,2053,2333,2467,2484, 2393,2169,1797,1303,768,304,27,8,265,782, 1492,2271,2956,3424,3623,3553,3248,2770,2209,1686, 1335,1261,1491,1958,2563,3224,3897,4573,5232,5839, 6411,6987,7559,8052,8375,8474,8360,8085,7698,7245, 6776,6353,6033,5808,5614,5363,4993,4480,3848,3135, 2389,1644,944,337,-153,-592,-1108,-1775,-2557,-3365, -4137,-4840,-5431,-5849,-6045,-6000,-5736,-5316,-4821,-4305, -3801,-3302,-2815,-2362,-1984,-1736,-1657,-1752,-2009,-2398, -2845,-3236,-3501,-3654,-3747,-3817,-3877,-3964,-4091,-4220, -4326,-4416,-4510,-4584,-4565,-4364,-3930,-3258,-2340,-1178, 170,1603,2992,4237,5249,5976,6410,6589,6612,6592, 6601,6690,6879,7113,7271,7219,6885,6255,5343,4171, 2787,1306,-156,-1548,-2903,-4242,-5560,-6806,-7917,-8860, -9634,-10237,-10704,-11105,-11499,-11870,-12159,-12300,-12228,-11882, -11238,-10334,-9269,-8123,-6951,-5825,-4840,-4063,-3470,-3030, -2731,-2581,-2566,-2632,-2702,-2703,-2564,-2223,-1628,-770, 279,1374,2300,2869,2996,2717,2191,1628,1221,1125, 1446,2232,3428,4862,6297,7544,8474,9062,9361,9446, 9378,9196,8919,8536,8044,7443,6772,6075,5383,4686, 3975,3219,2358,1379,333,-751,-1871,-3009,-4104,-5065, -5803,-6277,-6501,-6510,-6362,-6115,-5811,-5455,-5039,-4545, -3967,-3327,-2663,-2004,-1380,-772,-125,575,1278,1907, 2377,2632,2665,2469,2032,1421,781,260,-45,-88, 160,686,1400,2160,2828,3290,3461,3321,2962,2535, 2145,1820,1590,1513,1609,1830,2103,2395,2739,3199, 3805,4534,5327,6140,6915,7579,8052,8283,8275,8079, 7779,7486,7279,7154,7037,6866,6619,6289,5851,5298, 4674,4047,3459,2925,2447,2013,1575,1066,423,-366, -1275,-2240,-3176,-4002,-4651,-5109,-5423,-5639,-5760,-5730, -5506,-5097,-4548,-3916,-3271,-2717,-2314,-2067,-1959,-1975, -2103,-2304,-2521,-2724,-2918,-3114,-3289,-3416,-3500,-3587, -3719,-3891,-4086,-4311,-4592,-4912,-5191,-5316,-5185,-4727, -3930,-2837,-1515,-74,1344,2610,3613,4327,4805,5142, 5441,5790,6220,6717,7223,7656,7909,7915,7678,7265, 6715,5998,5067,3931,2633,1221,-261,-1737,-3123,-4383, -5512,-6518,-7431,-8296,-9152,-10014,-10838,-11559,-12120,-12488, -12629,-12491,-12055,-11367,-10515,-9588,-8620,-7611,-6562,-5529, -4588,-3827,-3321,-3112,-3173,-3401,-3656,-3803,-3701,-3221, -2335,-1169,52,1119,1879,2235,2165,1748,1176,678, 433,533,996,1768,2720,3741,4796,5859,6856,7700, 8344,8806,9113,9273,9254,9069,8768,8392,7947,7442, 6903,6376,5856,5256,4494,3542,2422,1189,-68,-1266, -2371,-3380,-4268,-4995,-5541,-5918,-6153,-6252,-6200,-5990, -5661,-5281,-4913,-4530,-4057,-3470,-2819,-2126,-1346,-463, 466,1352,2078,2534,2659,2465,2011,1395,743,191, -125,-98,258,832,1467,2051,2519,2841,2977,2923, 2737,2505,2291,2113,1977,1869,1771,1662,1569,1565, 1748,2147,2733,3469,4313,5185,5986,6639,7115,7423, 7593,7661,7680,7694,7724,7745,7712,7590,7331,6912, 6356,5745,5204,4795,4489,4206,3881,3482,2995,2392, 1677,892,84,-746,-1623,-2534,-3434,-4256,-4946,-5464, -5771,-5859,-5742,-5447,-5006,-4472,-3916,-3424,-3031,-2718, -2471,-2320,-2288,-2363,-2498,-2652,-2811,-2963,-3077,-3128, -3118,-3096,-3143,-3308,-3605,-4029,-4576,-5186,-5748,-6126, -6197,-5871,-5131,-4072,-2862,-1659,-537,479,1376,2147, 2823,3477,4158,4850,5499,6070,6579,7056,7490,7850, 8078,8110,7898,7437,6742,5826,4690,3382,2000,661, -571,-1700,-2773,-3843,-4962,-6154,-7393,-8597,-9690,-10634, -11406,-11980,-12348,-12534,-12553,-12389,-11994,-11321,-10364,-9205, -7946,-6679,-5523,-4644,-4191,-4178,-4468,-4849,-5097,-5044, -4618,-3828,-2762,-1584,-489,364,895,1116,1072,844, 533,241,56,81,380,925,1625,2415,3290,4257, 5280,6268,7137,7846,8379,8725,8869,8841,8716,8581, 8472,8365,8203,7920,7479,6886,6167,5328,4344,3226, 2029,828,-333,-1452,-2528,-3527,-4369,-5007,-5454,-5750, -5908,-5939,-5877,-5771,-5644,-5477,-5251,-4941,-4464,-3717, -2688,-1509,-343,696,1528,2060,2237,2060,1631,1100, 590,205,40,144,468,896,1335,1736,2072,2309, 2457,2563,2662,2732,2722,2598,2371,2086,1773,1468, 1227,1121,1207,1514,2037,2721,3483,4225,4872,5406, 5849,6239,6628,7043,7476,7870,8150,8253,8160,7923, 7610,7248,6866,6481,6120,5802,5500,5182,4839,4481, 4100,3669,3165,2566,1857,1023,73,-960,-2015,-3024, -3925,-4651,-5163,-5461,-5572,-5522,-5310,-4948,-4487,-4008, -3574,-3198,-2882,-2641,-2529,-2562,-2700,-2871,-3005,-3044, -2956,-2765,-2525,-2317,-2258,-2443,-2912,-3641,-4523,-5357, -5969,-6297,-6350,-6150,-5710,-5063,-4258,-3358,-2424,-1513, -645,203,1071,1918,2683,3367,4025,4700,5417,6141, 6852,7527,8110,8488,8561,8296,7741,6982,6107,5166, 4187,3180,2141,1066,-58,-1252,-2522,-3853,-5186,-6440, -7582,-8628,-9621,-10591,-11518,-12348,-13000,-13352,-13259,-12640, -11543,-10159,-8743,-7505,-6557,-5957,-5716,-5766,-5960,-6138, -6147,-5880,-5291,-4425,-3406,-2367,-1413,-626,-83,176, 216,159,75,-50,-208,-321,-290,-57,392,1052, 1896,2867,3906,4919,5837,6601,7173,7564,7861,8119, 8349,8523,8634,8687,8697,8629,8433,8078,7562,6894, 6081,5135,4083,2955,1748,473,-798,-1956,-2918,-3675, -4262,-4711,-5053,-5338,-5622,-5945,-6272,-6515,-6583,-6398, -5913,-5115,-4038,-2775,-1472,-311,556,1062,1225,1145, 935,682,447,269,193,236,382,586,810,1063, 1356,1669,1969,2251,2519,2746,2863,2784,2489,2045, 1559,1138,869,807,954,1253,1628,2039,2457,2865, 3274,3740,4301,4934,5581,6207,6780,7276,7645,7857, 7920,7862,7728,7540,7282,6950,6577,6206,5878,5615, 5408,5216,4993,4713,4365,3917,3308,2512,1560,513, -567,-1643,-2661,-3577,-4346,-4948,-5349,-5550,-5554,-5387, -5066,-4599,-4032,-3496,-3144,-3040,-3151,-3353,-3527,-3618, -3573,-3347,-2944,-2474,-2085,-1885,-1917,-2194,-2711,-3405, -4172,-4913,-5560,-6050,-6320,-6381,-6265,-6003,-5562,-4904, -4074,-3185,-2329,-1533,-789,-87,593,1279,2027,2880, 3840,4853,5844,6752,7497,7999,8223,8195,7968,7602, 7155,6661,6088,5336,4340,3157,1920,724,-417,-1508, -2551,-3583,-4692,-5976,-7475,-9115,-10707,-12067,-13066,-13600, -13590,-13053,-12102,-10903,-9656,-8570,-7801,-7407,-7306,-7353, -7410,-7381,-7196,-6801,-6189,-5400,-4514,-3598,-2710,-1902, -1220,-704,-379,-261,-343,-568,-831,-1016,-1048,-897, -552,-26,680,1541,2484,3407,4248,4999,5659,6237, 6749,7209,7626,7995,8300,8526,8679,8770,8801,8762, 8628,8330,7799,7019,6026,4875,3614,2294,994,-184, -1149,-1888,-2472,-2985,-3516,-4138,-4880,-5698,-6478,-7074, -7373,-7307,-6858,-6070,-5041,-3892,-2746,-1704,-849,-239, 110,253,294,305,301,287,265,242,215,197, 232,389,711,1195,1761,2280,2664,2854,2836,2642, 2329,1948,1566,1270,1118,1091,1124,1174,1247,1378, 1593,1891,2277,2752,3295,3885,4502,5150,5794,6387, 6895,7319,7656,7863,7896,7751,7498,7218,6929,6612, 6285,6022,5876,5821,5785,5697,5496,5128,4586,3908, 3139,2285,1335,281,-845,-1988,-3105,-4123,-4917,-5364, -5445,-5249,-4889,-4462,-4042,-3710,-3561,-3621,-3814,-4020, -4129,-4070,-3821,-3415,-2921,-2445,-2061,-1820,-1772,-1935, -2280,-2765,-3357,-4051,-4811,-5536,-6103,-6438,-6545,-6451, -6156,-5647,-4972,-4244,-3573,-3005,-2510,-2023,-1467,-759, 152,1232,2399,3537,4558,5419,6117,6684,7184,7661, 8063,8286,8247,7929,7359,6569,5614,4603,3643,2791, 2040,1330,561,-397,-1659,-3258,-5133,-7137,-9091,-10824, -12166,-12953,-13129,-12778,-12070,-11195,-10343,-9626,-9083,-8707, -8480,-8375,-8335,-8289,-8154,-7846,-7342,-6672,-5869,-4954, -3964,-2992,-2157,-1521,-1101,-886,-882,-1057,-1314,-1524, -1598,-1498,-1221,-788,-246,378,1086,1868,2677,3463, 4207,4912,5571,6154,6636,7026,7369,7710,8067,8437, 8799,9130,9374,9437,9203,8604,7658,6472,5196,3950, 2826,1865,1061,371,-274,-967,-1785,-2761,-3845,-4953, -5992,-6851,-7408,-7558,-7281,-6658,-5832,-4920,-4011,-3162, -2404,-1734,-1153,-656,-257,11,133,130,12,-203, -428,-520,-385,-42,423,941,1467,1952,2320,2520, 2551,2464,2310,2123,1918,1703,1483,1272,1104,1018, 1027,1091,1178,1305,1531,1881,2322,2808,3349,3971, 4649,5343,6013,6638,7187,7587,7776,7738,7533,7258, 6998,6800,6664,6563,6447,6302,6172,6087,6004,5856, 5628,5324,4906,4284,3381,2221,894,-488,-1840,-3046, -3965,-4502,-4670,-4585,-4380,-4177,-4050,-4012,-4045,-4130, -4249,-4368,-4429,-4366,-4127,-3737,-3280,-2814,-2358,-1943, -1645,-1528,-1630,-1953,-2484,-3208,-4068,-4942,-5678,-6159, -6345,-6265,-5996,-5646,-5331,-5081,-4841,-4539,-4121,-3559, -2846,-2017,-1106,-156,770,1660,2549,3466,4413,5392, 6388,7307,8012,8422,8525,8336,7866,7173,6393,5690, 5169,4828,4569,4222,3624,2672,1304,-469,-2531,-4697, -6783,-8634,-10129,-11194,-11805,-11966,-11753,-11295,-10727,-10169, -9706,-9359,-9124,-8995,-8965,-8987,-8979,-8837,-8476,-7878, -7078,-6122,-5080,-4047,-3132,-2415,-1923,-1637,-1510,-1508, -1587,-1695,-1781,-1784,-1659,-1406,-1054,-623,-84,595, 1403,2266,3102,3866,4529,5056,5452,5783,6146,6625, 7242,7964,8715,9392,9871,10063,9938,9509,8799,7856, 6785,5742,4859,4158,3551,2929,2226,1378,340,-899, -2264,-3627,-4849,-5823,-6476,-6808,-6879,-6756,-6460,-5981, -5331,-4559,-3729,-2885,-2044,-1279,-703,-393,-320,-399, -539,-671,-746,-712,-540,-246,138,587,1066,1520, 1912,2219,2432,2517,2472,2347,2204,2059,1869,1613, 1356,1187,1134,1144,1161,1170,1213,1322,1516,1824, 2279,2893,3640,4449,5231,5919,6482,6910,7209,7401, 7495,7482,7386,7253,7105,6919,6669,6409,6234,6223, 6366,6584,6763,6788,6565,6011,5111,3936,2590,1187, -158,-1343,-2290,-2952,-3355,-3571,-3675,-3720,-3782,-3901, -4057,-4209,-4335,-4429,-4498,-4525,-4475,-4307,-3959,-3414, -2714,-1996,-1417,-1109,-1122,-1438,-1993,-2715,-3494,-4190, -4710,-5052,-5288,-5481,-5649,-5770,-5823,-5793,-5645,-5354, -4924,-4382,-3754,-3098,-2457,-1842,-1210,-486,387,1438, 2670,4050,5455,6696,7598,8078,8175,7984,7614,7185, 6820,6590,6522,6568,6618,6507,6075,5238,3986,2350, 416,-1688,-3815,-5804,-7526,-8917,-9971,-10672,-10975,-10909, -10596,-10203,-9845,-9577,-9428,-9415,-9507,-9633,-9691,-9615, -9353,-8866,-8144,-7218,-6210,-5235,-4336,-3536,-2887,-2427, -2127,-1923,-1786,-1737,-1803,-1945,-2076,-2094,-1924,-1543, -969,-257,534,1341,2100,2766,3290,3660,3961,4323, 4842,5530,6345,7259,8234,9148,9828,10153,10119,9778, 9223,8568,7917,7336,6836,6375,5884,5284,4500,3484, 2270,969,-325,-1579,-2784,-3906,-4888,-5681,-6287,-6698, -6842,-6646,-6136,-5408,-4575,-3729,-2927,-2199,-1595,-1178, -972,-929,-975,-1032,-1027,-944,-791,-571,-273,110, 545,988,1421,1847,2215,2460,2542,2467,2307,2155, 2038,1925,1797,1666,1542,1403,1234,1064,928,859, 918,1176,1629,2209,2835,3468,4100,4727,5333,5917, 6479,6993,7400,7626,7640,7467,7173,6825,6507,6314, 6299,6458,6763,7134,7484,7710,7678,7283,6513,5442, 4215,2964,1766,650,-363,-1241,-1967,-2513,-2892,-3143, -3305,-3409,-3512,-3709,-4035,-4452,-4846,-5084,-5084,-4816, -4309,-3626,-2875,-2184,-1675,-1399,-1355,-1508,-1811,-2220, -2674,-3126,-3575,-4029,-4478,-4928,-5383,-5796,-6074,-6127, -5951,-5608,-5198,-4801,-4458,-4189,-3980,-3749,-3355,-2679, -1690,-431,1019,2566,4053,5318,6255,6822,7045,7017, 6882,6792,6834,7028,7312,7595,7811,7902,7756,7241, 6294,4959,3313,1410,-677,-2797,-4776,-6492,-7888,-8914, -9558,-9868,-9938,-9848,-9675,-9540,-9560,-9743,-9996,-10192, -10260,-10191,-9990,-9631,-9094,-8409,-7633,-6801,-5924,-5034, -4179,-3399,-2755,-2320,-2133,-2154,-2298,-2473,-2611,-2661, -2566,-2238,-1663,-932,-187,464,997,1435,1796,2100, 2427,2891,3567,4448,5477,6565,7610,8500,9139,9504, 9626,9569,9431,9279,9111,8894,8588,8173,7650,7008, 6234,5331,4310,3179,1951,645,-711,-2071,-3370,-4537, -5517,-6256,-6710,-6851,-6677,-6233,-5604,-4893,-4185,-3537, -2966,-2484,-2104,-1843,-1701,-1648,-1621,-1567,-1461,-1273, -980,-588,-126,364,842,1277,1639,1896,2048,2135, 2200,2253,2285,2269,2179,2007,1762,1470,1177,945, 812,791,864,1010,1217,1495,1870,2353,2925,3578, 4300,5066,5838,6551,7108,7432,7506,7370,7097,6786, 6544,6461,6572,6861,7257,7664,7991,8166,8160,7953, 7534,6902,6054,5009,3820,2563,1352,287,-573,-1206, -1645,-1990,-2332,-2723,-3178,-3699,-4257,-4788,-5213,-5437, -5414,-5162,-4728,-4186,-3620,-3109,-2701,-2396,-2180,-2042, -1986,-2009,-2147,-2452,-2939,-3563,-4245,-4895,-5444,-5845, -6058,-6069,-5921,-5705,-5519,-5431,-5461,-5564,-5636,-5551, -5181,-4471,-3445,-2154,-682,830,2234,3420,4360,5066, 5575,5920,6154,6371,6658,7051,7522,8025,8484,8811, 8923,8747,8239,7334,5986,4243,2261,197,-1837,-3747, -5412,-6731,-7696,-8383,-8895,-9288,-9594,-9850,-10094,-10334, -10541,-10705,-10814,-10861,-10829,-10700,-10446,-10022,-9414,-8639, -7740,-6771,-5790,-4861,-4063,-3485,-3172,-3100,-3183,-3305, -3376,-3331,-3119,-2714,-2140,-1489,-884,-411,-98,101, 285,556,985,1615,2453,3437,4467,5461,6369,7158, 7823,8372,8809,9128,9332,9455,9526,9533,9446,9245, 8927,8498,7974,7338,6559,5609,4486,3203,1781,278, -1222,-2634,-3888,-4930,-5704,-6176,-6353,-6275,-5990,-5537, -4961,-4333,-3724,-3187,-2761,-2470,-2300,-2217,-2185,-2151, -2048,-1835,-1493,-1058,-617,-218,140,485,838,1208, 1579,1922,2204,2394,2491,2492,2395,2208,1958,1693, 1449,1247,1097,999,945,913,878,870,959,1220, 1712,2422,3288,4223,5132,5906,6450,6736,6815,6767, 6662,6559,6496,6489,6564,6742,7032,7420,7856,8262, 8558,8670,8534,8103,7374,6408,5307,4182,3117,2161, 1362,735,221,-286,-865,-1545,-2309,-3106,-3843,-4432, -4830,-5049,-5108,-5029,-4848,-4590,-4286,-3946,-3556,-3105, -2613,-2142,-1768,-1562,-1573,-1831,-2331,-3012,-3757,-4433, -4937,-5212,-5275,-5228,-5188,-5223,-5358,-5596,-5921,-6268, -6535,-6601,-6358,-5767,-4858,-3704,-2396,-1034,288,1477, 2470,3253,3874,4385,4824,5232,5666,6176,6805,7536, 8306,9012,9549,9809,9698,9137,8119,6713,5031,3194, 1316,-501,-2196,-3717,-5038,-6150,-7072,-7837,-8476,-8994, -9397,-9717,-10000,-10276,-10553,-10815,-11031,-11151,-11139,-10957, -10547,-9882,-8991,-7953,-6876,-5878,-5067,-4506,-4219,-4147, -4167,-4152,-4022,-3729,-3286,-2777,-2296,-1898,-1597,-1386, -1233,-1095,-910,-604,-132,507,1290,2176,3096,3996, 4856,5679,6441,7131,7736,8256,8694,9037,9287,9457, 9559,9601,9590,9510,9317,8964,8432,7709,6772,5612, 4252,2754,1206,-311,-1736,-3023,-4140,-5046,-5680,-5986, -5966,-5697,-5265,-4746,-4227,-3780,-3441,-3205,-3035,-2882, -2725,-2551,-2362,-2142,-1885,-1610,-1322,-1016,-683,-311, 106,568,1055,1527,1929,2219,2385,2428,2358,2215, 2064,1958,1896,1834,1699,1454,1118,752,433,247, 260,515,999,1656,2415,3220,4014,4731,5331,5806, 6131,6287,6290,6201,6102,6056,6090,6247,6571,7073, 7690,8303,8790,9049,9015,8666,8058,7278,6411,5537, 4732,4032,3407,2780,2087,1311,472,-403,-1286,-2139, -2906,-3536,-4010,-4353,-4630,-4872,-5063,-5150,-5071,-4791, -4319,-3699,-3011,-2352,-1841,-1572,-1587,-1868,-2337,-2892, -3436,-3896,-4218,-4377,-4415,-4417,-4494,-4712,-5070,-5552, -6107,-6648,-7066,-7275,-7220,-6866,-6207,-5292,-4206,-3018, -1781,-578,498,1381,2053,2562,2995,3441,3979,4663, 5523,6527,7594,8606,9429,9968,10163,9976,9398,8472, 7254,5819,4238,2576,882,-768,-2304,-3700,-4939,-6008, -6906,-7633,-8203,-8661,-9067,-9480,-9954,-10512,-11095,-11589, -11873,-11844,-11453,-10757,-9874,-8915,-7979,-7147,-6493,-6035, -5734,-5509,-5264,-4953,-4567,-4117,-3638,-3182,-2807,-2540, -2375,-2285,-2213,-2106,-1917,-1620,-1218,-716,-100,643, 1484,2367,3244,4096,4926,5723,6438,7040,7531,7951, 8335,8699,9050,9392,9698,9910,9978,9885,9614,9154, 8506,7655,6600,5318,3814,2169,515,-1037,-2421,-3581, -4458,-5025,-5305,-5351,-5236,-5027,-4766,-4488,-4216,-3961, -3728,-3514,-3301,-3082,-2858,-2644,-2470,-2337,-2192,-1977, -1660,-1231,-687,-82,492,967,1313,1544,1708,1856, 2022,2208,2359,2426,2388,2227,1941,1554,1122,696, 329,79,2,113,395,827,1409,2115,2888,3665, 4387,4990,5417,5639,5660,5525,5342,5243,5329,5628, 6126,6765,7449,8081,8573,8847,8866,8643,8253,7776, 7277,6777,6273,5740,5152,4469,3678,2795,1858,937, 92,-675,-1398,-2099,-2781,-3456,-4125,-4742,-5225,-5504, -5516,-5239,-4705,-4009,-3288,-2648,-2169,-1917,-1925,-2165, -2543,-2931,-3234,-3422,-3527,-3576,-3612,-3693,-3876,-4188, -4625,-5172,-5789,-6427,-7009,-7456,-7685,-7623,-7244,-6564, -5617,-4496,-3332,-2235,-1290,-532,60,556,1036,1567, 2212,3017,3995,5109,6303,7494,8569,9435,10012,10231, 10086,9626,8912,7965,6793,5414,3865,2200,493,-1139, -2583,-3785,-4762,-5559,-6232,-6871,-7573,-8374,-9248,-10119, -10899,-11501,-11855,-11904,-11627,-11084,-10411,-9723,-9082,-8508, -8013,-7586,-7183,-6765,-6312,-5827,-5305,-4763,-4239,-3781, -3420,-3160,-2987,-2876,-2798,-2719,-2602,-2426,-2193,-1875, -1417,-780,8,874,1765,2647,3481,4229,4891,5508, 6107,6681,7220,7742,8264,8774,9230,9616,9947,10216, 10362,10318,10030,9471,8626,7506,6150,4625,2999,1351, -207,-1563,-2661,-3496,-4092,-4490,-4733,-4862,-4909,-4874, -4742,-4495,-4157,-3807,-3546,-3408,-3360,-3341,-3288,-3174, -2972,-2665,-2260,-1793,-1317,-871,-476,-115,240,606, 989,1392,1796,2162,2459,2638,2659,2510,2234,1889, 1496,1069,624,212,-95,-246,-200,70,574,1284, 2118,2966,3720,4300,4659,4799,4764,4636,4521,4523, 4728,5160,5768,6450,7099,7634,8027,8276,8380,8362, 8287,8194,8068,7858,7518,7038,6428,5726,4974,4207, 3455,2718,1994,1264,488,-381,-1358,-2398,-3420,-4334, -5034,-5436,-5499,-5241,-4750,-4156,-3576,-3085,-2729,-2539, -2506,-2581,-2709,-2852,-2980,-3066,-3094,-3077,-3045,-3047, -3141,-3380,-3793,-4380,-5118,-5942,-6751,-7425,-7848,-7945, -7712,-7202,-6488,-5622,-4675,-3735,-2906,-2250,-1745,-1312, -864,-323,369,1243,2295,3485,4722,5933,7069,8102, 8989,9685,10150,10328,10167,9647,8787,7619,6190,4597, 2987,1489,170,-978,-1987,-2903,-3808,-4782,-5862,-7013, -8165,-9225,-10130,-10825,-11263,-11428,-11359,-11123,-10775,-10372, -9972,-9608,-9259,-8868,-8395,-7866,-7323,-6779,-6221,-5655, -5102,-4571,-4090,-3695,-3421,-3259,-3197,-3209,-3240,-3210, -3065,-2775,-2339,-1782,-1142,-435,329,1129,1930,2707, 3448,4150,4802,5404,5959,6487,7022,7591,8203,8844, 9478,10060,10546,10899,11036,10858,10307,9398,8205,6827, 5354,3865,2420,1046,-232,-1384,-2399,-3269,-3944,-4380, -4579,-4594,-4499,-4347,-4173,-4020,-3931,-3910,-3916,-3898, -3813,-3625,-3352,-3035,-2710,-2400,-2098,-1798,-1490,-1149, -743,-262,267,786,1263,1706,2112,2450,2674,2748, 2677,2464,2102,1599,999,375,-169,-529,-621,-402, 99,805,1617,2425,3108,3566,3774,3798,3744,3707, 3766,3974,4339,4824,5354,5875,6361,6808,7200,7528, 7816,8081,8320,8488,8537,8421,8133,7705,7178,6592, 6019,5510,5064,4611,4077,3401,2534,1448,192,-1117, -2354,-3415,-4236,-4760,-4965,-4894,-4637,-4290,-3914,-3540, -3213,-2986,-2892,-2915,-3016,-3126,-3183,-3136,-2991,-2787, -2573,-2415,-2388,-2563,-2966,-3590,-4394,-5297,-6205,-7018, -7621,-7912,-7859,-7504,-6945,-6267,-5557,-4898,-4336,-3866, -3439,-3005,-2519,-1953,-1269,-455,471,1485,2574,3737, 4971,6250,7524,8719,9721,10391,10635,10432,9824,8903, 7769,6522,5259,4061,2957,1942,959,-69,-1219,-2502, -3870,-5257,-6583,-7787,-8811,-9628,-10218,-10600,-10806,-10879, -10851,-10737,-10545,-10297,-10017,-9723,-9400,-9021,-8559,-8011, -7389,-6716,-6030,-5384,-4818,-4371,-4073,-3917,-3843,-3789, -3739,-3698,-3640,-3508,-3250,-2852,-2336,-1728,-1048,-306, 474,1265,2035,2762,3432,4027,4544,5009,5478,6018, 6702,7547,8495,9436,10258,10884,11245,11303,11058,10535, 9767,8806,7691,6434,5055,3604,2139,724,-583,-1715, -2598,-3214,-3596,-3811,-3946,-4055,-4162,-4261,-4323,-4331, -4298,-4235,-4117,-3942,-3737,-3531,-3335,-3135,-2907,-2643, -2342,-2012,-1653,-1250,-799,-311,224,815,1433,2016, 2513,2878,3051,2962,2589,1969,1198,410,-255,-680, -774,-537,-45,596,1269,1868,2321,2609,2763,2846, 2921,3030,3196,3449,3805,4214,4605,4961,5325,5731, 6209,6746,7307,7820,8226,8477,8557,8449,8163,7775, 7390,7086,6887,6744,6570,6288,5832,5161,4264,3158, 1900,569,-753,-1984,-3020,-3786,-4248,-4423,-4361,-4141, -3861,-3609,-3426,-3330,-3322,-3381,-3469,-3532,-3514,-3372, -3098,-2721,-2310,-1962,-1763,-1807,-2145,-2775,-3618,-4565, -5518,-6375,-7020,-7374,-7445,-7291,-6991,-6629,-6262,-5902, -5524,-5106,-4646,-4167,-3694,-3223,-2734,-2193,-1553,-767, 206,1397,2805,4359,5961,7476,8771,9732,10283,10400, 10137,9583,8844,8029,7216,6418,5601,4714,3725,2624, 1404,60,-1388,-2867,-4287,-5602,-6807,-7879,-8762,-9422, -9856,-10109,-10248,-10333,-10396,-10438,-10435,-10352,-10170,-9872, -9462,-8946,-8343,-7681,-7005,-6334,-5688,-5116,-4675,-4384, -4214,-4115,-4048,-3995,-3950,-3888,-3779,-3589,-3282,-2826, -2219,-1477,-653,185,963,1629,2161,2590,2998,3449, 3980,4626,5427,6383,7414,8424,9345,10126,10752,11205, 11454,11465,11219,10701,9884,8786,7466,6016,4534,3093, 1758,590,-392,-1217,-1922,-2505,-2959,-3315,-3606,-3839, -3998,-4089,-4135,-4143,-4103,-4020,-3913,-3794,-3653,-3470, -3243,-3005,-2779,-2563,-2353,-2132,-1854,-1456,-891,-150, 735,1679,2531,3140,3415,3342,2962,2332,1558,776, 133,-251,-338,-166,162,568,991,1381,1702,1952, 2158,2363,2589,2831,3063,3257,3412,3546,3706,3960, 4362,4917,5593,6323,7032,7630,8043,8245,8270,8188, 8046,7884,7758,7698,7699,7736,7752,7678,7437,6966, 6226,5212,3971,2598,1197,-143,-1331,-2298,-2998,-3416, -3573,-3536,-3404,-3280,-3229,-3278,-3411,-3588,-3760,-3874, -3851,-3630,-3194,-2608,-1994,-1488,-1201,-1213,-1541,-2122, -2867,-3701,-4533,-5284,-5898,-6360,-6686,-6884,-6944,-6864, -6661,-6365,-6003,-5586,-5151,-4748,-4426,-4200,-4023,-3814, -3463,-2879,-2006,-819,661,2345,4103,5773,7213,8336, 9117,9585,9781,9745,9525,9174,8726,8206,7609,6920, 6114,5179,4091,2827,1390,-149,-1708,-3213,-4589,-5784, -6795,-7656,-8350,-8889,-9307,-9644,-9933,-10182,-10370,-10482, -10508,-10415,-10159,-9728,-9167,-8546,-7921,-7298,-6678,-6081, -5540,-5067,-4677,-4393,-4242,-4211,-4258,-4330,-4373,-4319, -4091,-3636,-2994,-2256,-1509,-809,-193,320,744,1136, 1565,2070,2650,3313,4067,4904,5799,6738,7720,8736, 9738,10639,11344,11790,11935,11736,11203,10385,9340,8123, 6814,5489,4203,2982,1839,787,-146,-959,-1668,-2276, -2759,-3114,-3376,-3607,-3839,-4052,-4197,-4238,-4165,-4004, -3795,-3563,-3357,-3226,-3191,-3233,-3304,-3320,-3171,-2773, -2096,-1181,-114,988,1982,2732,3135,3160,2854,2330, 1719,1131,644,314,150,116,165,270,423,634, 929,1302,1709,2092,2400,2589,2649,2616,2562,2561, 2685,2973,3441,4061,4789,5551,6276,6894,7350,7607, 7689,7651,7575,7524,7536,7626,7795,8025,8269,8449, 8469,8237,7700,6860,5778,4504,3112,1689,353,-784, -1648,-2227,-2551,-2693,-2741,-2807,-2974,-3270,-3654,-4042, -4330,-4427,-4298,-3950,-3432,-2812,-2187,-1666,-1347,-1273, -1428,-1766,-2243,-2831,-3506,-4219,-4911,-5544,-6111,-6577, -6892,-7006,-6905,-6627,-6228,-5793,-5434,-5224,-5172,-5234, -5350,-5405,-5248,-4776,-3964,-2856,-1514,0,1640,3304, 4863,6217,7319,8151,8723,9057,9206,9245,9219,9122, 8914,8552,8008,7261,6311,5178,3893,2461,919,-637, -2111,-3447,-4631,-5664,-6559,-7340,-8034,-8659,-9227,-9727, -10129,-10416,-10580,-10608,-10508,-10300,-9999,-9612,-9135,-8556, -7888,-7160,-6436,-5790,-5285,-4957,-4808,-4819,-4918,-5015, -5017,-4876,-4592,-4179,-3675,-3133,-2583,-2034,-1503,-1004, -525,-51,414,866,1304,1770,2329,3019,3850,4807, 5875,7032,8235,9409,10443,11240,11737,11909,11768,11353, 10705,9854,8833,7682,6453,5198,3969,2801,1736,796, -14,-723,-1374,-1991,-2574,-3115,-3594,-3974,-4207,-4267, -4159,-3927,-3663,-3445,-3336,-3387,-3600,-3914,-4213,-4379, -4309,-3927,-3204,-2209,-1080,31,1008,1751,2214,2414, 2406,2245,1987,1665,1298,899,497,148,-74,-129, -23,213,554,973,1418,1805,2063,2148,2096,1974, 1849,1794,1866,2108,2532,3130,3851,4626,5370,6002, 6470,6769,6918,6961,6940,6933,7024,7237,7537,7887, 8278,8671,8968,9053,8824,8240,7313,6112,4740,3333, 2021,897,24,-592,-1017,-1357,-1716,-2151,-2654,-3192, -3730,-4203,-4529,-4636,-4512,-4205,-3786,-3287,-2752,-2258, -1870,-1624,-1515,-1529,-1679,-2000,-2517,-3222,-4067,-4954, -5746,-6334,-6676,-6780,-6674,-6416,-6097,-5834,-5698,-5688, -5783,-5964,-6197,-6403,-6480,-6312,-5810,-4952,-3780,-2364, -805,785,2324,3749,5014,6087,6968,7671,8217,8644, 8973,9212,9346,9339,9142,8711,8033,7121,5987,4673, 3265,1850,472,-856,-2128,-3335,-4468,-5529,-6510,-7390, -8157,-8795,-9305,-9715,-10070,-10390,-10646,-10782,-10769,-10586, -10204,-9609,-8864,-8065,-7324,-6711,-6258,-5953,-5762,-5648, -5565,-5497,-5432,-5334,-5153,-4876,-4529,-4134,-3689,-3195, -2667,-2127,-1599,-1122,-717,-376,-71,238,626,1167, 1908,2845,3951,5160,6413,7646,8814,9850,10690,11300, 11658,11743,11539,11042,10276,9305,8201,7042,5899,4822, 3822,2891,2011,1150,279,-611,-1520,-2389,-3125,-3647, -3913,-3938,-3777,-3514,-3260,-3140,-3245,-3584,-4074,-4584, -4968,-5130,-5023,-4641,-4025,-3233,-2328,-1382,-477,321, 997,1553,1965,2183,2178,1974,1611,1149,656,206, -117,-260,-205,24,368,770,1181,1537,1769,1835, 1737,1527,1300,1168,1202,1415,1796,2334,2994,3725, 4438,5051,5548,5924,6161,6248,6235,6211,6272,6494, 6895,7455,8116,8779,9321,9620,9577,9143,8352,7314, 6155,4979,3867,2875,2034,1343,746,158,-482,-1189, -1936,-2664,-3309,-3818,-4161,-4336,-4368,-4296,-4138,-3874, -3500,-3024,-2477,-1919,-1457,-1190,-1182,-1442,-1930,-2602, -3392,-4208,-4973,-5603,-6037,-6229,-6195,-6005,-5766,-5572, -5495,-5567,-5787,-6129,-6542,-6924,-7163,-7167,-6896,-6341, -5494,-4383,-3075,-1637,-152,1288,2618,3824,4903,5869, 6746,7553,8288,8927,9434,9758,9841,9655,9219,8577, 7770,6807,5706,4512,3259,1945,572,-823,-2171,-3392, -4444,-5358,-6180,-6953,-7705,-8452,-9171,-9815,-10331,-10684, -10841,-10775,-10488,-10024,-9450,-8820,-8191,-7623,-7144,-6752, -6440,-6191,-5985,-5818,-5690,-5591,-5490,-5338,-5096,-4751, -4315,-3804,-3250,-2713,-2235,-1846,-1553,-1335,-1131,-879, -545,-104,481,1246,2198,3294,4485,5735,7013,8281, 9473,10505,11294,11773,11917,11746,11297,10615,9761,8832, 7919,7075,6289,5488,4587,3532,2346,1099,-122,-1199, -2024,-2537,-2753,-2741,-2623,-2518,-2531,-2709,-3029,-3461, -3958,-4441,-4824,-5051,-5095,-4957,-4649,-4176,-3518,-2700, -1783,-846,58,878,1556,2030,2260,2226,1970,1548, 1034,529,142,-61,-56,149,493,883,1239,1510, 1676,1714,1621,1437,1224,1054,992,1075,1322,1752, 2349,3064,3813,4500,5036,5366,5511,5525,5477,5464, 5582,5907,6446,7158,7971,8771,9429,9828,9909,9664, 9132,8392,7538,6679,5878,5120,4359,3558,2705,1823, 947,112,-662,-1379,-2057,-2705,-3295,-3779,-4130,-4338, -4375,-4217,-3865,-3354,-2741,-2103,-1526,-1099,-888,-944, -1294,-1898,-2665,-3473,-4220,-4829,-5253,-5476,-5505,-5388, -5222,-5106,-5106,-5246,-5520,-5923,-6419,-6931,-7360,-7609, -7599,-7288,-6695,-5867,-4854,-3704,-2481,-1232,7,1230, 2437,3643,4850,6021,7098,8015,8738,9264,9602,9769, 9775,9615,9255,8662,7834,6803,5608,4299,2950,1629, 364,-829,-1942,-2983,-3976,-4957,-5978,-7014,-7995,-8850, -9557,-10086,-10416,-10549,-10497,-10292,-9969,-9559,-9090,-8589, -8077,-7584,-7147,-6810,-6577,-6427,-6319,-6221,-6119,-5974, -5721,-5334,-4867,-4387,-3919,-3473,-3078,-2746,-2468,-2225, -2020,-1839,-1634,-1348,-939,-404,261,1092,2145,3413, 4828,6303,7750,9081,10186,10948,11321,11353,11163,10850, 10483,10078,9648,9163,8546,7726,6668,5393,3987,2571, 1289,227,-575,-1127,-1460,-1644,-1763,-1894,-2084,-2352, -2697,-3104,-3566,-4058,-4526,-4909,-5176,-5313,-5311,-5139, -4740,-4096,-3255,-2281,-1250,-246,634,1318,1741,1873, 1737,1411,1005,618,307,114,67,169,389,680, 986,1265,1465,1540,1464,1254,960,672,489,484, 696,1124,1733,2440,3147,3770,4248,4527,4597,4510, 4375,4346,4546,5036,5763,6613,7465,8221,8805,9189, 9381,9395,9246,8965,8568,8066,7449,6727,5949,5156, 4348,3512,2658,1809,968,135,-694,-1525,-2334,-3074, -3706,-4187,-4469,-4512,-4307,-3862,-3234,-2515,-1827,-1289, -979,-922,-1112,-1529,-2149,-2880,-3589,-4180,-4603,-4842, -4912,-4856,-4747,-4659,-4652,-4782,-5095,-5582,-6194,-6830, -7378,-7743,-7871,-7751,-7420,-6936,-6336,-5619,-4757,-3747, -2614,-1387,-79,1279,2618,3881,5057,6142,7127,7997, 8745,9357,9797,10010,9963,9664,9129,8355,7378,6287, 5162,4044,2941,1833,706,-450,-1633,-2830,-4015,-5170, -6281,-7322,-8244,-9000,-9575,-9995,-10274,-10383,-10303,-10038, -9638,-9172,-8693,-8230,-7817,-7498,-7281,-7134,-7010,-6873, -6706,-6487,-6201,-5842,-5412,-4958,-4537,-4166,-3823,-3495, -3174,-2878,-2627,-2447,-2340,-2269,-2160,-1951,-1566,-925, 37,1302,2790,4393,5958,7326,8427,9249,9805,10167, 10449,10709,10926,11051,11023,10774,10248,9442,8396,7167, 5826,4479,3222,2123,1219,504,-38,-444,-762,-1042, -1328,-1649,-2012,-2416,-2869,-3372,-3907,-4452,-4974,-5421, -5727,-5815,-5635,-5163,-4418,-3474,-2428,-1394,-460,294, 841,1172,1280,1185,943,630,323,103,33,136, 369,669,980,1248,1427,1479,1369,1089,703,318, 53,12,242,735,1415,2137,2752,3185,3411,3462, 3413,3366,3402,3575,3893,4367,4991,5721,6476,7186, 7819,8356,8778,9068,9207,9190,9037,8761,8370,7886, 7311,6643,5911,5154,4397,3627,2810,1925,975,-26, -1056,-2064,-2985,-3744,-4267,-4499,-4433,-4096,-3545,-2885, -2228,-1671,-1271,-1082,-1127,-1400,-1870,-2477,-3128,-3712, -4127,-4313,-4303,-4196,-4096,-4073,-4174,-4420,-4806,-5301, -5843,-6369,-6842,-7244,-7561,-7764,-7833,-7749,-7494,-7056, -6441,-5662,-4725,-3636,-2444,-1214,16,1264,2556,3870, 5153,6360,7461,8407,9161,9679,9927,9908,9660,9227, 8654,7963,7161,6267,5308,4290,3187,2010,791,-449, -1684,-2906,-4119,-5324,-6474,-7516,-8414,-9136,-9671,-10011, -10147,-10074,-9832,-9489,-9110,-8754,-8454,-8222,-8051,-7906, -7739,-7534,-7280,-6987,-6666,-6345,-6031,-5699,-5323,-4915, -4482,-4014,-3538,-3136,-2903,-2882,-3045,-3279,-3445,-3418, -3100,-2448,-1480,-268,1081,2459,3774,4977,6055,7007, 7857,8656,9429,10150,10771,11246,11520,11541,11270,10713, 9897,8858,7672,6435,5240,4142,3153,2281,1537,912, 398,-18,-359,-646,-925,-1259,-1716,-2320,-3043,-3810, -4553,-5203,-5704,-6002,-6065,-5846,-5320,-4544,-3623,-2641, -1672,-792,-87,396,658,734,661,468,221,16, -49,66,356,761,1183,1494,1595,1460,1138,715, 292,-30,-156,-37,306,791,1319,1801,2186,2457, 2617,2677,2679,2676,2720,2863,3139,3555,4092,4710, 5378,6066,6756,7421,8007,8479,8832,9059,9146,9081, 8881,8575,8179,7716,7216,6710,6171,5550,4803,3910, 2866,1711,503,-694,-1822,-2801,-3563,-4063,-4265,-4155, -3764,-3171,-2505,-1882,-1397,-1156,-1210,-1503,-1934,-2405, -2853,-3233,-3496,-3628,-3652,-3629,-3627,-3687,-3831,-4060, -4356,-4701,-5107,-5576,-6079,-6588,-7075,-7495,-7817,-8003, -8011,-7826,-7472,-6985,-6362,-5589,-4697,-3712,-2631,-1433, -106,1335,2846,4333,5683,6840,7802,8573,9136,9486, 9628,9588,9383,9031,8545,7928,7179,6319,5372,4354, 3259,2087,863,-398,-1704,-3050,-4400,-5691,-6846,-7826, -8602,-9154,-9469,-9566,-9517,-9398,-9255,-9121,-9007,-8884, -8715,-8488,-8226,-7971,-7750,-7587,-7457,-7306,-7066,-6691, -6163,-5516,-4825,-4174,-3662,-3378,-3352,-3543,-3859,-4174, -4367,-4355,-4087,-3539,-2732,-1752,-692,390,1463,2525, 3570,4608,5663,6744,7832,8894,9889,10736,11327,11606, 11596,11346,10878,10207,9347,8336,7225,6068,4933,3893, 2990,2251,1678,1242,901,601,297,-61,-523,-1124, -1890,-2803,-3760,-4630,-5335,-5842,-6133,-6179,-5949,-5442, -4712,-3827,-2859,-1911,-1083,-462,-101,-5,-109,-297, -436,-422,-213,156,598,1018,1334,1480,1414,1159, 788,399,63,-157,-201,-60,231,619,1038,1418, 1721,1940,2067,2110,2102,2088,2101,2196,2405,2723, 3139,3642,4215,4865,5580,6322,7037,7677,8191,8546, 8739,8788,8731,8623,8504,8370,8189,7923,7563,7116, 6550,5793,4837,3699,2402,1005,-385,-1665,-2735,-3492, -3878,-3892,-3610,-3140,-2607,-2112,-1751,-1575,-1592,-1765, -2029,-2317,-2591,-2830,-3025,-3180,-3286,-3349,-3388,-3436, -3523,-3654,-3835,-4074,-4401,-4851,-5407,-6004,-6573,-7067, -7474,-7773,-7946,-7996,-7948,-7818,-7587,-7217,-6676,-5946, -5013,-3904,-2642,-1244,242,1759,3241,4625,5856,6911, 7787,8479,8975,9273,9389,9345,9151,8818,8363,7801, 7144,6382,5514,4542,3451,2210,815,-694,-2228,-3686, -4994,-6114,-7021,-7728,-8272,-8691,-9019,-9257,-9385,-9387, -9272,-9058,-8795,-8573,-8446,-8410,-8444,-8507,-8530,-8409, -8069,-7496,-6750,-5934,-5162,-4524,-4081,-3868,-3885,-4095, -4412,-4722,-4919,-4924,-4705,-4277,-3692,-3013,-2277,-1501, -687,177,1137,2223,3414,4649,5873,7079,8250,9330, 10245,10947,11398,11587,11507,11174,10620,9861,8910,7815, 6660,5547,4555,3740,3109,2646,2308,2026,1720,1322, 810,170,-592,-1459,-2406,-3401,-4385,-5266,-5948,-6340, -6368,-6026,-5364,-4492,-3554,-2689,-2006,-1546,-1288,-1182, -1169,-1157,-1053,-792,-379,119,603,997,1258,1353, 1275,1047,723,359,29,-171,-199,-74,157,467, 817,1146,1396,1561,1667,1742,1792,1812,1789,1752, 1766,1895,2165,2583,3142,3826,4589,5358,6077,6725, 7282,7739,8079,8296,8397,8425,8430,8446,8480,8512, 8506,8410,8151,7675,6908,5799,4388,2827,1277,-152, -1361,-2268,-2834,-3073,-3040,-2834,-2548,-2258,-2026,-1891, -1855,-1901,-2013,-2169,-2362,-2575,-2780,-2957,-3085,-3143, -3125,-3066,-3037,-3098,-3250,-3489,-3826,-4254,-4747,-5263, -5775,-6262,-6706,-7090,-7411,-7693,-7943,-8136,-8215,-8147, -7914,-7500,-6875,-6016,-4933,-3677,-2285,-818,670,2134, 3529,4842,6049,7091,7908,8497,8870,9056,9088,9015, 8890,8732,8516,8180,7648,6859,5812,4558,3170,1713, 251,-1159,-2484,-3708,-4836,-5888,-6862,-7708,-8349,-8750, -8928,-8931,-8801,-8612,-8473,-8459,-8575,-8781,-9018,-9216, -9301,-9179,-8788,-8140,-7319,-6432,-5606,-4953,-4550,-4411, -4462,-4608,-4777,-4940,-5067,-5105,-5023,-4813,-4500,-4101, -3620,-3051,-2403,-1664,-810,176,1265,2443,3691,4975, 6247,7471,8626,9682,10580,11249,11643,11725,11481,10939, 10152,9196,8172,7187,6286,5484,4778,4179,3701,3341, 3063,2799,2464,1977,1278,360,-749,-1997,-3284,-4471, -5394,-5939,-6086,-5885,-5399,-4737,-4032,-3399,-2906,-2573, -2368,-2231,-2102,-1928,-1665,-1273,-757,-170,402,870, 1162,1254,1171,955,673,387,148,-3,-56,-27, 84,282,553,873,1195,1463,1640,1715,1704,1627, 1501,1365,1281,1307,1485,1807,2253,2816,3484,4229, 5010,5771,6447,6986,7364,7603,7739,7829,7948,8166, 8485,8851,9191,9427,9455,9181,8551,7562,6278,4803, 3251,1763,460,-591,-1373,-1903,-2208,-2321,-2293,-2174, -2018,-1878,-1793,-1793,-1883,-2047,-2245,-2451,-2638,-2786, -2857,-2838,-2768,-2704,-2689,-2728,-2828,-3003,-3267,-3607, -3996,-4412,-4838,-5267,-5695,-6123,-6559,-7003,-7446,-7863, -8220,-8460,-8528,-8382,-8026,-7487,-6789,-5904,-4800,-3485, -2008,-438,1162,2709,4114,5310,6267,7000,7563,8029, 8444,8834,9180,9428,9506,9359,8975,8366,7560,6606, 5546,4394,3153,1813,384,-1093,-2552,-3931,-5185,-6251, -7068,-7605,-7881,-7940,-7880,-7822,-7886,-8120,-8503,-8962, -9393,-9705,-9812,-9661,-9244,-8621,-7879,-7098,-6349,-5708, -5237,-4947,-4826,-4821,-4881,-4974,-5065,-5123,-5127,-5077, -4962,-4787,-4543,-4206,-3734,-3110,-2371,-1559,-692,247, 1310,2533,3883,5304,6724,8082,9313,10337,11079,11499, 11618,11466,11070,10462,9673,8754,7787,6867,6060,5418, 4967,4712,4608,4533,4343,3913,3181,2160,903,-487, -1884,-3158,-4194,-4911,-5273,-5299,-5063,-4665,-4211,-3796, -3493,-3328,-3249,-3167,-3003,-2709,-2288,-1773,-1202,-596, -7,490,843,1036,1091,1032,871,629,358,119, -42,-99,-35,155,447,782,1102,1362,1551,1666, 1699,1650,1528,1358,1164,1003,949,1069,1394,1913, 2586,3359,4169,4941,5600,6099,6427,6619,6743,6894, 7166,7624,8238,8899,9501,9959,10205,10163,9787,9065, 8043,6792,5411,4008,2657,1414,344,-492,-1067,-1417, -1593,-1643,-1624,-1582,-1572,-1636,-1781,-1966,-2149,-2317, -2464,-2575,-2626,-2602,-2534,-2461,-2419,-2440,-2538,-2702, -2904,-3125,-3362,-3629,-3943,-4302,-4707,-5165,-5674,-6217, -6751,-7234,-7656,-8031,-8357,-8599,-8721,-8677,-8409,-7850, -6970,-5779,-4342,-2768,-1187,296,1633,2821,3892,4884, 5817,6687,7481,8180,8762,9200,9469,9558,9469,9217, 8824,8310,7665,6861,5860,4613,3128,1474,-241,-1896, -3362,-4548,-5427,-6017,-6371,-6572,-6725,-6935,-7267,-7725, -8279,-8856,-9385,-9793,-10015,-9997,-9723,-9227,-8595,-7917, -7263,-6675,-6168,-5743,-5407,-5175,-5062,-5054,-5124,-5242, -5369,-5453,-5445,-5332,-5126,-4863,-4576,-4256,-3855,-3339, -2697,-1919,-969,178,1507,2945,4414,5861,7234,8493, 9608,10531,11191,11529,11520,11169,10506,9615,8636,7720, 6979,6458,6151,6015,5979,5956,5833,5485,4824,3839, 2575,1138,-337,-1702,-2831,-3655,-4159,-4393,-4429,-4352, -4241,-4145,-4080,-4036,-3983,-3894,-3732,-3469,-3096,-2630, -2088,-1486,-852,-240,278,648,842,875,772,579, 343,126,-45,-157,-179,-85,126,425,769,1103, 1390,1611,1742,1743,1596,1322,969,635,436,446, 681,1151,1825,2601,3359,4019,4541,4915,5169,5363, 5570,5854,6258,6808,7500,8273,9043,9729,10232,10492, 10470,10140,9488,8531,7332,5996,4636,3344,2183,1177, 369,-222,-615,-866,-1020,-1139,-1264,-1424,-1630,-1863, -2090,-2271,-2380,-2418,-2411,-2382,-2356,-2354,-2379,-2427, -2484,-2547,-2612,-2685,-2792,-2969,-3235,-3605,-4046,-4488, -4880,-5235,-5618,-6073,-6625,-7259,-7940,-8579,-9078,-9354, -9341,-9010,-8366,-7455,-6337,-5076,-3737,-2403,-1104,154, 1398,2642,3859,4992,5994,6854,7574,8161,8607,8938, 9206,9429,9591,9628,9449,8962,8126,6959,5528,3911, 2182,465,-1089,-2367,-3349,-4073,-4596,-4994,-5352,-5769, -6303,-6944,-7632,-8309,-8919,-9407,-9738,-9901,-9893,-9701, -9331,-8819,-8227,-7601,-6971,-6391,-5920,-5597,-5435,-5390, -5404,-5439,-5475,-5484,-5457,-5391,-5309,-5254,-5216,-5139, -4961,-4652,-4193,-3569,-2796,-1903,-883,305,1679,3198, 4794,6398,7915,9240,10282,10972,11278,11200,10771,10073, 9244,8438,7783,7351,7144,7134,7249,7359,7312,6993, 6349,5388,4172,2808,1418,113,-1021,-1953,-2683,-3212, -3568,-3790,-3930,-4028,-4115,-4213,-4309,-4360,-4319,-4155, -3861,-3455,-2947,-2343,-1674,-1012,-434,16,332,521, 592,549,413,218,1,-198,-332,-353,-235,36, 437,906,1363,1713,1872,1813,1578,1222,806,423, 179,152,363,768,1310,1913,2505,3029,3455,3785, 4034,4242,4471,4769,5176,5721,6426,7257,8143,9006, 9762,10337,10661,10685,10390,9777,8881,7773,6536,5263, 4049,2980,2083,1353,779,331,-41,-384,-725,-1065, -1382,-1640,-1824,-1946,-2035,-2118,-2212,-2322,-2425,-2486, -2466,-2375,-2272,-2219,-2252,-2366,-2548,-2767,-2999,-3219, -3414,-3598,-3794,-4046,-4407,-4938,-5633,-6446,-7296,-8101, -8787,-9275,-9509,-9469,-9176,-8670,-7992,-7163,-6194,-5074, -3810,-2434,-1002,423,1779,3001,4051,4934,5692,6376, 7050,7747,8451,9114,9701,10162,10395,10272,9743,8816, 7555,6058,4457,2875,1412,132,-925,-1800,-2555,-3232, -3868,-4509,-5175,-5868,-6580,-7306,-8017,-8673,-9244,-9698, -9985,-10048,-9859,-9456,-8915,-8322,-7739,-7223,-6794,-6453, -6174,-5933,-5727,-5578,-5504,-5502,-5545,-5607,-5666,-5692, -5682,-5638,-5558,-5423,-5221,-4944,-4559,-4002,-3231,-2240, -1014,447,2107,3891,5678,7337,8736,9778,10397,10580, 10354,9820,9150,8543,8122,7915,7881,7974,8132,8260, 8246,8008,7507,6739,5725,4527,3249,1986,806,-254, -1156,-1885,-2460,-2921,-3302,-3635,-3945,-4236,-4496,-4700, -4805,-4765,-4571,-4248,-3827,-3322,-2750,-2139,-1522,-945, -438,-42,210,303,236,32,-266,-568,-779,-829, -683,-343,130,643,1113,1459,1624,1574,1340,993, 622,295,65,-12,82,347,748,1220,1679,2073, 2397,2662,2877,3061,3250,3506,3886,4420,5101,5914, 6833,7807,8751,9578,10217,10593,10649,10362,9751,8874, 7832,6740,5696,4744,3862,3024,2216,1468,816,275, -167,-531,-827,-1085,-1343,-1613,-1893,-2161,-2374,-2493, -2508,-2454,-2378,-2308,-2281,-2313,-2403,-2555,-2744,-2908, -2996,-3002,-2964,-2936,-2975,-3141,-3488,-4058,-4814,-5663, -6503,-7284,-7984,-8585,-9063,-9414,-9615,-9630,-9425,-8989, -8308,-7367,-6186,-4837,-3418,-2005,-661,561,1633,2545, 3341,4123,4984,5950,7000,8090,9123,9963,10501,10665, 10439,9833,8895,7724,6432,5111,3812,2584,1437,376, -593,-1460,-2219,-2915,-3599,-4337,-5168,-6076,-7004,-7874, -8623,-9209,-9602,-9797,-9814,-9689,-9454,-9122,-8702,-8218, -7722,-7254,-6826,-6448,-6147,-5945,-5827,-5770,-5755,-5762, -5768,-5760,-5759,-5783,-5814,-5833,-5834,-5827,-5789,-5655, -5332,-4702,-3672,-2251,-528,1388,3367,5246,6857,8099, 8920,9331,9398,9212,8893,8571,8354,8280,8348,8531, 8762,8946,9010,8906,8586,8028,7230,6239,5122,3965, 2829,1769,813,-47,-821,-1519,-2151,-2734,-3267,-3744, -4149,-4460,-4670,-4787,-4808,-4718,-4504,-4158,-3683,-3096, -2424,-1716,-1039,-487,-135,-2,-64,-272,-558,-831, -1004,-1008,-834,-500,-55,437,883,1212,1375,1364, 1205,945,639,355,150,60,110,306,608,956, 1286,1555,1766,1939,2096,2241,2375,2518,2743,3140, 3753,4586,5588,6691,7794,8788,9578,10110,10379,10395, 10192,9795,9218,8476,7610,6661,5667,4681,3749,2912, 2200,1610,1107,647,203,-237,-686,-1124,-1527,-1854, -2078,-2177,-2155,-2064,-1986,-1998,-2114,-2304,-2521,-2710, -2819,-2818,-2711,-2548,-2394,-2307,-2330,-2485,-2786,-3222, -3769,-4407,-5119,-5872,-6622,-7346,-8046,-8716,-9309,-9757, -9975,-9908,-9516,-8806,-7831,-6656,-5358,-4053,-2840,-1766, -820,37,893,1852,2963,4208,5536,6862,8094,9140, 9934,10430,10616,10499,10077,9359,8377,7213,5973,4763, 3652,2655,1761,934,118,-724,-1607,-2538,-3515,-4511, -5479,-6385,-7211,-7943,-8563,-9054,-9395,-9558,-9540,-9377, -9111,-8757,-8341,-7891,-7438,-7013,-6656,-6377,-6182,-6057, -5975,-5890,-5786,-5653,-5521,-5447,-5484,-5651,-5929,-6278, -6622,-6859,-6859,-6512,-5754,-4556,-2930,-1013,985,2883, 4578,5993,7064,7774,8155,8286,8274,8212,8183,8249, 8440,8747,9101,9414,9602,9620,9439,9043,8442,7680, 6805,5862,4896,3935,2976,2008,1061,163,-664,-1400, -2047,-2624,-3152,-3639,-4090,-4490,-4813,-4996,-4985,-4760, -4350,-3783,-3095,-2350,-1645,-1070,-687,-512,-526,-657, -832,-1008,-1126,-1132,-980,-645,-185,289,688,963, 1110,1128,1024,839,639,460,319,232,219,295, 473,745,1059,1348,1551,1632,1604,1513,1428,1429, 1602,2006,2641,3468,4420,5428,6434,7403,8310,9093, 9692,10088,10289,10287,10043,9558,8882,8069,7169,6251, 5388,4615,3921,3274,2652,2016,1339,639,-27,-589, -1012,-1282,-1428,-1490,-1523,-1587,-1713,-1897,-2126,-2358, -2563,-2708,-2758,-2699,-2540,-2341,-2181,-2095,-2077,-2135, -2288,-2532,-2850,-3251,-3749,-4347,-5056,-5899,-6845,-7821, -8740,-9515,-10044,-10229,-10036,-9510,-8746,-7850,-6924,-6023, -5145,-4261,-3357,-2443,-1485,-432,741,2023,3390,4806, 6212,7541,8729,9690,10329,10594,10486,10062,9401,8584, 7683,6748,5823,4929,4051,3170,2279,1383,464,-511, -1547,-2604,-3655,-4684,-5658,-6542,-7322,-7998,-8562,-8995, -9260,-9337,-9241,-9013,-8688,-8308,-7920,-7561,-7259,-7016, -6825,-6639,-6414,-6125,-5786,-5441,-5155,-4999,-5046,-5329, -5821,-6439,-7061,-7560,-7825,-7747,-7258,-6330,-4992,-3342, -1506,380,2169,3724,4968,5891,6515,6900,7138,7328, 7542,7836,8218,8654,9095,9490,9769,9892,9857,9691, 9407,8974,8370,7618,6763,5858,4917,3952,2980,2039, 1172,394,-338,-1065,-1808,-2554,-3278,-3937,-4478,-4848, -5016,-4968,-4695,-4213,-3581,-2894,-2232,-1667,-1272,-1086, -1082,-1193,-1327,-1403,-1382,-1266,-1055,-742,-360,20, 357,645,865,985,989,874,669,424,210,100, 151,350,633,927,1174,1335,1376,1292,1117,925, 779,731,830,1112,1592,2250,3041,3912,4842,5823, 6824,7801,8701,9450,9979,10230,10186,9890,9425,8870, 8277,7672,7042,6383,5683,4932,4126,3275,2424,1622, 914,340,-89,-392,-603,-772,-949,-1171,-1444,-1750, -2051,-2310,-2507,-2633,-2678,-2644,-2541,-2402,-2272,-2186, -2151,-2141,-2120,-2078,-2056,-2131,-2383,-2872,-3618,-4577, -5675,-6825,-7905,-8794,-9415,-9752,-9831,-9689,-9359,-8883, -8307,-7659,-6958,-6218,-5468,-4703,-3880,-2947,-1866,-607, 842,2431,4042,5572,6955,8143,9076,9716,10044,10069, 9822,9372,8796,8143,7439,6706,5951,5166,4337,3469, 2551,1575,548,-519,-1614,-2713,-3798,-4848,-5844,-6757, -7569,-8227,-8684,-8922,-8965,-8861,-8680,-8478,-8299,-8172, -8068,-7935,-7736,-7441,-7025,-6497,-5920,-5370,-4929,-4677, -4670,-4954,-5526,-6291,-7107,-7835,-8366,-8606,-8462,-7873, -6843,-5427,-3750,-1993,-318,1195,2513,3602,4451,5102, 5621,6080,6538,7023,7528,8026,8501,8943,9342,9675, 9912,10028,10007,9809,9420,8853,8151,7368,6551,5722, 4882,4041,3215,2398,1562,693,-212,-1151,-2104,-3030, -3860,-4502,-4887,-4985,-4798,-4377,-3836,-3268,-2748,-2323, -2011,-1807,-1707,-1680,-1694,-1709,-1703,-1625,-1441,-1144, -755,-313,121,471,691,762,692,520,308,127, 33,60,212,469,787,1085,1288,1353,1289,1125, 916,719,564,460,418,462,628,961,1496,2249, 3199,4289,5439,6554,7569,8427,9072,9482,9676,9699, 9604,9436,9213,8916,8507,7945,7232,6404,5516,4611, 3723,2888,2146,1534,1059,701,405,120,-200,-581, -1002,-1406,-1736,-1976,-2136,-2238,-2311,-2387,-2488,-2599, -2672,-2656,-2513,-2246,-1905,-1561,-1309,-1242,-1420,-1858, -2538,-3411,-4405,-5456,-6506,-7492,-8336,-8969,-9342,-9458, -9383,-9175,-8877,-8516,-8127,-7723,-7288,-6775,-6135,-5329, -4317,-3079,-1648,-75,1576,3227,4792,6197,7387,8329, 9013,9433,9608,9575,9375,9054,8636,8138,7556,6894, 6166,5389,4567,3702,2786,1821,768,-382,-1628,-2913, -4146,-5246,-6179,-6939,-7510,-7888,-8097,-8192,-8246,-8335, -8479,-8633,-8724,-8692,-8518,-8179,-7672,-7023,-6278,-5526, -4871,-4426,-4273,-4459,-4972,-5746,-6683,-7645,-8458,-8978, -9109,-8804,-8065,-6972,-5637,-4173,-2687,-1276,14,1179, 2236,3187,3994,4662,5254,5822,6391,6971,7567,8165, 8749,9281,9720,10031,10189,10187,10023,9694,9207,8598, 7924,7231,6560,5918,5279,4588,3799,2868,1784,586, -634,-1782,-2780,-3565,-4096,-4374,-4425,-4279,-3981,-3587, -3162,-2758,-2427,-2210,-2117,-2117,-2166,-2211,-2193,-2068, -1819,-1438,-954,-437,23,353,508,491,352,167, 8,-61,-12,138,356,591,817,1021,1198,1326, 1377,1341,1216,1021,768,470,162,-81,-171,-48, 342,1016,1922,2955,4030,5096,6090,6957,7694,8310, 8794,9155,9427,9616,9721,9709,9536,9173,8603,7826, 6921,5982,5096,4310,3641,3066,2548,2053,1548,1034, 514,25,-387,-695,-923,-1117,-1339,-1624,-1959,-2305, -2609,-2833,-2927,-2860,-2640,-2299,-1880,-1444,-1065,-821, -770,-965,-1434,-2155,-3074,-4110,-5172,-6182,-7077,-7793, -8300,-8609,-8767,-8831,-8831,-8782,-8708,-8615,-8471,-8231, -7845,-7275,-6493,-5472,-4203,-2699,-1029,691,2352,3879, 5230,6388,7371,8176,8785,9166,9326,9308,9157,8887, 8518,8072,7572,7038,6468,5827,5072,4165,3088,1849, 501,-872,-2195,-3405,-4449,-5284,-5924,-6419,-6811,-7146, -7470,-7829,-8222,-8621,-8967,-9183,-9202,-8982,-8503,-7784, -6891,-5924,-5030,-4359,-4026,-4078,-4518,-5271,-6208,-7177, -8045,-8701,-9069,-9099,-8775,-8133,-7220,-6095,-4831,-3511, -2210,-987,114,1092,1969,2790,3564,4291,4971,5636, 6320,7040,7777,8495,9155,9711,10100,10269,10210,9977, 9632,9240,8852,8484,8112,7688,7170,6519,5725,4781, 3687,2473,1198,-70,-1264,-2291,-3094,-3646,-3937,-3996, -3868,-3603,-3263,-2921,-2661,-2538,-2558,-2684,-2832,-2910, -2840,-2592,-2190,-1699,-1194,-727,-341,-79,41,42, -27,-106,-158,-160,-117,-41,64,219,429,696, 1007,1319,1559,1659,1576,1310,899,417,-47,-430, -672,-709,-480,19,740,1606,2542,3475,4376,5227, 6015,6730,7402,8064,8704,9268,9698,9931,9914,9641, 9172,8581,7936,7266,6599,5945,5273,4559,3811,3073, 2394,1797,1293,875,534,238,-42,-354,-727,-1164, -1640,-2122,-2568,-2926,-3151,-3209,-3074,-2742,-2262,-1716, -1187,-744,-471,-454,-748,-1324,-2115,-3045,-4029,-4986, -5866,-6631,-7258,-7728,-8045,-8263,-8454,-8664,-8896,-9121, -9290,-9356,-9269,-8988,-8458,-7655,-6584,-5293,-3842,-2281, -656,957,2485,3900,5195,6331,7245,7910,8342,8576, 8662,8656,8607,8525,8398,8211,7931,7510,6900,6076, 5030,3795,2441,1048,-312,-1571,-2668,-3583,-4325,-4926, -5439,-5918,-6427,-7014,-7693,-8418,-9102,-9631,-9900,-9837, -9415,-8666,-7693,-6637,-5660,-4880,-4399,-4264,-4476,-4991, -5740,-6635,-7563,-8394,-9012,-9345,-9368,-9076,-8494,-7692, -6745,-5684,-4526,-3318,-2142,-1060,-98,734,1465,2157, 2883,3686,4564,5496,6439,7336,8126,8767,9229,9517, 9652,9650,9550,9417,9292,9178,9046,8842,8510,8018, 7360,6540,5556,4410,3129,1753,367,-923,-2009,-2795, -3259,-3435,-3400,-3237,-3041,-2900,-2869,-2954,-3126,-3326, -3478,-3510,-3378,-3085,-2693,-2265,-1847,-1457,-1104,-803, -566,-400,-312,-311,-382,-480,-560,-581,-514,-335, -28,376,814,1219,1550,1744,1740,1524,1126,591, -9,-564,-953,-1105,-997,-653,-130,498,1164,1830, 2511,3248,4088,5024,6002,6940,7773,8459,8973,9303, 9455,9460,9357,9154,8841,8408,7868,7234,6517,5740, 4943,4167,3454,2845,2340,1924,1561,1223,882,526, 123,-362,-957,-1632,-2299,-2861,-3249,-3421,-3368,-3100, -2644,-2066,-1456,-898,-471,-256,-309,-650,-1254,-2046, -2933,-3821,-4652,-5390,-6005,-6490,-6879,-7225,-7583,-7995, -8468,-8961,-9406,-9735,-9908,-9895,-9667,-9196,-8491,-7558, -6384,-4995,-3472,-1877,-235,1400,2928,4255,5354,6222, 6869,7344,7700,8009,8295,8560,8774,8911,8936,8795, 8441,7828,6952,5837,4546,3149,1736,420,-709,-1614, -2327,-2930,-3502,-4125,-4864,-5744,-6725,-7726,-8644,-9396, -9881,-10023,-9805,-9259,-8448,-7457,-6411,-5457,-4749,-4381, -4367,-4668,-5222,-5950,-6770,-7595,-8336,-8929,-9329,-9481, -9318,-8833,-8085,-7147,-6103,-5032,-3993,-3019,-2132,-1321, -560,181,964,1862,2886,3976,5041,6016,6876,7594, 8165,8604,8947,9187,9320,9380,9436,9513,9589,9632, 9612,9472,9135,8553,7707,6612,5298,3825,2300,875, -307,-1173,-1736,-2061,-2236,-2336,-2431,-2561,-2734,-2925, -3111,-3274,-3385,-3429,-3403,-3294,-3078,-2764,-2374,-1942, -1499,-1090,-752,-522,-408,-407,-495,-617,-743,-840, -851,-709,-387,97,682,1272,1754,2035,2067,1857, 1441,917,390,-57,-386,-592,-687,-693,-603,-393, -33,469,1104,1878,2780,3762,4752,5685,6532,7286, 7950,8527,9003,9357,9575,9654,9586,9360,8996,8507, 7898,7185,6402,5591,4823,4168,3651,3248,2916,2616, 2299,1918,1449,880,194,-584,-1389,-2132,-2722,-3091, -3217,-3100,-2760,-2242,-1609,-953,-389,-25,81,-76, -486,-1099,-1821,-2558,-3248,-3876,-4432,-4929,-5390,-5844, -6331,-6863,-7428,-8002,-8572,-9116,-9584,-9923,-10098,-10070, -9788,-9224,-8362,-7203,-5800,-4233,-2592,-966,577,1994, 3243,4297,5161,5866,6456,6989,7507,8037,8572,9083, 9506,9750,9723,9357,8637,7622,6414,5121,3841,2665, 1648,788,48,-628,-1303,-2033,-2878,-3886,-5047,-6281, -7490,-8554,-9346,-9764,-9783,-9446,-8828,-8018,-7120,-6221, -5412,-4784,-4428,-4382,-4636,-5144,-5843,-6664,-7523,-8327, -8970,-9368,-9464,-9248,-8761,-8076,-7270,-6437,-5636,-4869, -4103,-3325,-2529,-1709,-848,79,1081,2144,3224,4277, 5259,6147,6918,7546,8018,8352,8576,8744,8923,9178, 9529,9927,10282,10488,10444,10060,9314,8259,6988,5604, 4208,2891,1731,761,-31,-668,-1164,-1551,-1863,-2114, -2344,-2593,-2867,-3139,-3377,-3551,-3650,-3660,-3571,-3367, -3049,-2636,-2161,-1676,-1233,-874,-648,-612,-769,-1049, -1320,-1467,-1425,-1184,-766,-224,373,927,1354,1609, 1686,1617,1447,1203,905,566,191,-204,-592,-915, -1105,-1122,-957,-613,-97,550,1306,2143,3034,3938, 4819,5643,6409,7120,7783,8392,8918,9308,9529,9575, 9444,9131,8641,7999,7261,6502,5790,5170,4670,4288, 3983,3701,3390,3016,2540,1930,1179,317,-602,-1505, -2305,-2914,-3251,-3289,-3059,-2610,-2019,-1393,-836,-426, -210,-195,-384,-754,-1240,-1771,-2322,-2878,-3417,-3930, -4418,-4892,-5368,-5869,-6399,-6980,-7627,-8334,-9063,-9752, -10322,-10701,-10818,-10615,-10083,-9250,-8157,-6831,-5311,-3704, -2122,-656,649,1768,2702,3498,4236,5000,5833,6734, 7654,8521,9240,9734,9958,9877,9482,8775,7790,6634, 5466,4410,3508,2753,2096,1468,785,-33,-1013,-2148, -3418,-4770,-6130,-7387,-8425,-9151,-9530,-9567,-9305,-8797, -8099,-7259,-6359,-5527,-4882,-4532,-4518,-4833,-5418,-6179, -7015,-7831,-8531,-9033,-9303,-9336,-9162,-8812,-8333,-7789, -7197,-6564,-5890,-5185,-4451,-3690,-2896,-2037,-1086,-26, 1124,2309,3448,4467,5332,6011,6489,6810,7081,7418, 7878,8470,9145,9816,10384,10768,10903,10737,10250,9479, 8493,7361,6141,4896,3687,2581,1626,832,171,-404, -919,-1372,-1758,-2093,-2409,-2723,-3045,-3373,-3688,-3940, -4057,-3973,-3681,-3231,-2679,-2108,-1622,-1305,-1189,-1257, -1448,-1677,-1842,-1874,-1736,-1453,-1094,-707,-291,136, 548,911,1205,1411,1499,1452,1276,988,610,167, -303,-761,-1134,-1366,-1428,-1316,-1033,-593,-12,689, 1470,2279,3093,3899,4705,5527,6363,7181,7949,8622, 9129,9426,9495,9345,9009,8535,7947,7283,6633,6065, 5603,5248,4985,4772,4550,4249,3813,3201,2411,1472, 431,-638,-1612,-2379,-2881,-3101,-3045,-2757,-2329,-1851, -1382,-961,-637,-439,-382,-484,-744,-1122,-1570,-2049, -2522,-2967,-3374,-3762,-4151,-4580,-5087,-5698,-6407,-7187, -8016,-8870,-9708,-10456,-11016,-11281,-11181,-10688,-9821,-8669, -7332,-5909,-4488,-3144,-1922,-834,138,1043,1937,2885, 3929,5065,6259,7436,8487,9305,9807,9967,9809,9364, 8678,7837,6954,6132,5425,4817,4243,3630,2917,2063, 1059,-98,-1380,-2743,-4138,-5515,-6806,-7910,-8724,-9196, -9309,-9082,-8560,-7814,-6928,-6027,-5256,-4749,-4560,-4670, -5034,-5601,-6286,-7001,-7680,-8266,-8710,-8990,-9106,-9059, -8841,-8479,-8023,-7532,-7053,-6590,-6105,-5554,-4869,-4010, -2980,-1804,-550,690,1819,2782,3559,4169,4675,5161, 5675,6241,6881,7602,8398,9234,10023,10657,11056,11181, 11018,10588,9919,9055,8067,7013,5909,4780,3698,2711, 1838,1081,457,-44,-461,-854,-1289,-1797,-2372,-2973, -3512,-3883,-4010,-3893,-3584,-3173,-2735,-2328,-2001,-1787, -1690,-1687,-1755,-1855,-1925,-1927,-1856,-1714,-1496,-1207, -841,-422,5,423,833,1204,1489,1635,1629,1490, 1227,834,340,-182,-667,-1060,-1318,-1409,-1327,-1099, -753,-316,208,826,1536,2319,3162,4065,5020,5981, 6906,7761,8504,9069,9411,9509,9377,9050,8574,8012, 7439,6920,6514,6250,6111,6041,5951,5740,5339,4723, 3904,2923,1848,758,-263,-1142,-1821,-2276,-2510,-2533, -2363,-2035,-1613,-1163,-761,-477,-341,-337,-444,-650, -926,-1258,-1616,-1977,-2327,-2658,-2965,-3253,-3578,-4020, -4644,-5458,-6426,-7483,-8554,-9565,-10428,-11042,-11312,-11189, -10671,-9821,-8759,-7590,-6392,-5221,-4133,-3150,-2240,-1341, -397,651,1846,3205,4665,6108,7395,8435,9168,9578, 9695,9568,9246,8779,8242,7706,7204,6729,6237,5679, 5036,4306,3452,2432,1231,-133,-1621,-3176,-4707,-6116, -7292,-8147,-8608,-8664,-8383,-7853,-7153,-6394,-5694,-5127, -4736,-4551,-4601,-4878,-5351,-5970,-6674,-7365,-7944,-8343, -8537,-8545,-8442,-8289,-8141,-8026,-7920,-7753,-7451,-6962, -6270,-5404,-4391,-3261,-2073,-902,177,1108,1879,2519, 3079,3613,4183,4850,5643,6533,7478,8434,9339,10117, 10715,11106,11296,11277,11039,10586,9909,8997,7896,6726, 5607,4612,3775,3083,2492,1930,1338,680,-48,-819, -1572,-2267,-2851,-3255,-3449,-3452,-3307,-3076,-2805,-2532, -2295,-2113,-1982,-1906,-1895,-1933,-1978,-2005,-1993,-1926, -1791,-1589,-1321,-984,-577,-121,363,834,1258,1587, 1767,1757,1570,1260,867,417,-40,-458,-801,-1055, -1204,-1251,-1202,-1050,-782,-392,120,762,1533,2416, 3390,4421,5488,6529,7474,8263,8851,9183,9242,9056, 8684,8209,7746,7387,7168,7066,7040,7034,6976,6806, 6480,5981,5297,4428,3405,2283,1144,84,-805,-1464, -1892,-2117,-2162,-2054,-1828,-1522,-1171,-831,-575,-442, -438,-556,-774,-1039,-1306,-1558,-1774,-1942,-2066,-2187, -2371,-2699,-3216,-3958,-4930,-6066,-7266,-8460,-9566,-10468, -11058,-11274,-11106,-10604,-9856,-8985,-8087,-7226,-6419,-5647, -4871,-4026,-3042,-1879,-538,937,2474,3982,5384,6599, 7570,8269,8710,8923,8968,8884,8686,8397,8066,7730, 7408,7079,6694,6197,5548,4692,3587,2230,667,-1016, -2704,-4282,-5652,-6744,-7522,-7979,-8133,-8015,-7649,-7068, -6362,-5658,-5081,-4740,-4687,-4900,-5303,-5814,-6355,-6858, -7281,-7604,-7830,-7987,-8116,-8248,-8397,-8553,-8682,-8714, -8583,-8249,-7712,-6978,-6042,-4935,-3770,-2678,-1712,-879, -173,440,1026,1659,2373,3163,4002,4871,5787,6746, 7717,8670,9596,10417,11029,11373,11432,11190,10667,9916, 9030,8098,7205,6396,5665,4978,4295,3574,2792,1951, 1075,194,-652,-1415,-2062,-2562,-2905,-3087,-3120,-3048, -2924,-2773,-2621,-2495,-2399,-2321,-2267,-2238,-2241,-2269, -2308,-2327,-2294,-2185,-1992,-1704,-1313,-838,-300,236, 713,1091,1348,1482,1487,1361,1129,829,491,132, -231,-590,-918,-1190,-1372,-1451,-1425,-1293,-1044,-664, -127,603,1538,2646,3852,5069,6193,7125,7805,8229, 8438,8461,8330,8083,7796,7544,7386,7344,7418,7551, 7650,7634,7463,7095,6519,5750,4823,3769,2639,1514, 472,-399,-1067,-1537,-1824,-1935,-1878,-1671,-1373,-1064, -822,-689,-666,-742,-897,-1091,-1280,-1424,-1502,-1510, -1469,-1427,-1443,-1582,-1924,-2542,-3444,-4583,-5878,-7216, -8460,-9495,-10252,-10691,-10805,-10640,-10281,-9821,-9331,-8849, -8361,-7840,-7227,-6450,-5474,-4316,-2994,-1545,-23,1502, 2972,4334,5542,6555,7345,7899,8222,8354,8357,8287, 8209,8184,8209,8219,8139,7891,7400,6636,5615,4393, 3012,1479,-173,-1863,-3494,-4962,-6165,-7028,-7528,-7668, -7472,-7027,-6461,-5894,-5423,-5122,-5028,-5116,-5337,-5632, -5958,-6280,-6570,-6815,-7031,-7254,-7506,-7811,-8186,-8612, -9008,-9272,-9329,-9137,-8682,-7996,-7164,-6272,-5362,-4458, -3590,-2788,-2039,-1320,-627,42,696,1353,2056,2846, 3755,4794,5949,7172,8376,9452,10299,10857,11118,11104, 10865,10460,9942,9353,8734,8113,7485,6832,6138,5373, 4524,3601,2632,1653,704,-163,-913,-1519,-1980,-2302, -2509,-2628,-2680,-2684,-2644,-2573,-2489,-2408,-2343,-2318, -2350,-2429,-2531,-2622,-2659,-2609,-2447,-2170,-1792,-1338, -846,-352,103,502,843,1120,1317,1411,1385,1233, 988,695,395,105,-194,-522,-878,-1241,-1582,-1839, -1930,-1787,-1394,-760,86,1114,2284,3530,4746,5809, 6652,7257,7627,7793,7804,7710,7571,7458,7426,7512, 7702,7929,8116,8219,8211,8049,7688,7108,6336,5406, 4352,3209,2059,1000,108,-583,-1062,-1330,-1414,-1372, -1252,-1079,-901,-791,-785,-882,-1055,-1251,-1402,-1467, -1429,-1268,-1008,-731,-529,-493,-705,-1210,-2030,-3134, -4425,-5749,-6974,-8023,-8839,-9417,-9777,-9961,-10024,-10011, -9947,-9825,-9639,-9352,-8904,-8272,-7484,-6538,-5417,-4117, -2655,-1075,553,2129,3530,4681,5570,6244,6759,7155, 7468,7751,8030,8304,8558,8768,8892,8880,8692,8307, 7705,6823,5624,4143,2448,620,-1208,-2897,-4329,-5437, -6196,-6616,-6733,-6604,-6310,-5944,-5606,-5384,-5310,-5364, -5502,-5669,-5803,-5875,-5908,-5963,-6107,-6381,-6776,-7284, -7872,-8469,-8970,-9307,-9461,-9423,-9193,-8785,-8229,-7562, -6816,-6008,-5166,-4309,-3488,-2766,-2166,-1650,-1165,-638, -1,789,1751,2880,4140,5453,6729,7898,8910,9707, 10254,10550,10624,10535,10339,10075,9759,9388,8959,8458, 7855,7123,6255,5283,4260,3242,2253,1324,484,-260, -894,-1407,-1793,-2080,-2287,-2409,-2444,-2405,-2330,-2267, -2266,-2342,-2472,-2629,-2787,-2906,-2944,-2896,-2792,-2627, -2382,-2032,-1588,-1076,-551,-73,305,576,778,944, 1073,1156,1182,1143,1033,850,574,190,-299,-863, -1438,-1943,-2310,-2482,-2398,-2027,-1378,-471,659,1907, 3135,4256,5208,5948,6462,6771,6937,7015,7049,7073, 7135,7277,7500,7796,8122,8424,8636,8693,8550,8187, 7613,6833,5864,4770,3641,2538,1506,623,-44,-497, -768,-876,-863,-791,-734,-746,-861,-1079,-1361,-1627, -1794,-1801,-1631,-1294,-837,-357,37,231,140,-290, -1037,-2016,-3114,-4230,-5307,-6306,-7193,-7957,-8591,-9090, -9453,-9704,-9875,-10007,-10103,-10138,-10080,-9879,-9452,-8740, -7747,-6498,-5040,-3460,-1863,-340,1051,2271,3323,4229, 5005,5662,6217,6688,7104,7515,7962,8450,8925,9324, 9568,9596,9340,8749,7806,6521,4936,3131,1249,-566, -2200,-3558,-4565,-5209,-5543,-5665,-5670,-5630,-5603,-5626, -5689,-5751,-5765,-5715,-5597,-5452,-5352,-5369,-5532,-5834, -6245,-6739,-7282,-7831,-8359,-8839,-9239,-9511,-9610,-9499, -9160,-8620,-7930,-7153,-6340,-5560,-4867,-4269,-3768,-3351, -2960,-2510,-1938,-1197,-267,840,2102,3463,4826,6083, 7181,8106,8845,9396,9769,10011,10167,10240,10234,10154, 9987,9693,9238,8622,7871,7008,6063,5069,4086,3133, 2189,1248,361,-382,-933,-1303,-1551,-1717,-1845,-1946, -2025,-2079,-2128,-2212,-2353,-2544,-2759,-2962,-3116,-3187, -3163,-3025,-2776,-2440,-2044,-1614,-1179,-778,-426,-130, 130,390,647,897,1130,1327,1450,1462,1328,1028, 558,-62,-781,-1517,-2176,-2657,-2862,-2747,-2320,-1615, -688,383,1529,2673,3713,4582,5256,5735,6046,6239, 6366,6482,6630,6846,7140,7508,7937,8391,8798,9077, 9176,9070,8751,8199,7405,6413,5292,4129,3022,2051, 1263,683,317,123,36,-12,-93,-282,-619,-1064, -1526,-1894,-2076,-2016,-1700,-1198,-622,-93,306,542, 569,354,-109,-794,-1651,-2623,-3637,-4634,-5556,-6368, -7057,-7616,-8085,-8520,-8977,-9470,-9968,-10408,-10707,-10790, -10610,-10150,-9411,-8413,-7202,-5837,-4375,-2880,-1416,-44, 1194,2268,3167,3917,4556,5130,5701,6313,6976,7686, 8441,9196,9864,10341,10526,10346,9740,8702,7287,5601, 3770,1937,255,-1149,-2247,-3086,-3733,-4249,-4678,-5045, -5341,-5551,-5653,-5658,-5592,-5484,-5351,-5215,-5115,-5088, -5148,-5300,-5546,-5901,-6368,-6935,-7568,-8203,-8789,-9263, -9572,-9660,-9502,-9111,-8545,-7870,-7158,-6481,-5898,-5423, -5042,-4744,-4484,-4154,-3657,-2980,-2125,-1086,120,1442, 2799,4103,5285,6297,7145,7880,8550,9156,9662,10040, 10275,10386,10394,10301,10104,9791,9322,8689,7909,7005, 6008,4950,3884,2862,1913,1073,368,-191,-610,-911, -1129,-1281,-1390,-1497,-1631,-1807,-2029,-2306,-2618,-2923, -3163,-3298,-3313,-3215,-3018,-2747,-2428,-2084,-1729,-1394, -1093,-825,-580,-317,-5,373,804,1240,1619,1873, 1934,1766,1376,777,8,-838,-1652,-2339,-2814,-3015, -2904,-2492,-1809,-902,143,1232,2278,3210,3981,4571, 4998,5289,5500,5681,5876,6127,6462,6896,7420,7999, 8574,9082,9456,9642,9601,9311,8744,7901,6840,5661, 4489,3456,2658,2114,1773,1539,1328,1072,707,215, -358,-933,-1442,-1818,-2011,-1986,-1760,-1377,-872,-295, 270,729,992,1002,728,185,-570,-1445,-2340,-3171, -3910,-4566,-5175,-5778,-6411,-7093,-7806,-8514,-9195,-9834, -10392,-10803,-10997,-10936,-10595,-9968,-9083,-7957,-6628,-5185, -3727,-2325,-1021,155,1179,2030,2737,3350,3945,4572, 5299,6212,7309,8490,9610,10531,11122,11282,10967,10205, 9074,7678,6135,4576,3095,1703,408,-767,-1796,-2667, -3406,-4016,-4499,-4864,-5120,-5271,-5337,-5334,-5264,-5135, -4972,-4819,-4726,-4736,-4870,-5129,-5518,-6056,-6733,-7494, -8240,-8873,-9309,-9516,-9504,-9296,-8906,-8371,-7771,-7182, -6671,-6288,-6055,-5923,-5783,-5546,-5151,-4558,-3763,-2803, -1739,-607,576,1793,3010,4174,5253,6227,7098,7856, 8508,9074,9563,9972,10289,10502,10587,10532,10315,9914, 9316,8548,7657,6676,5630,4558,3505,2518,1638,910, 360,-21,-285,-490,-672,-862,-1077,-1332,-1630,-1983, -2377,-2771,-3105,-3340,-3451,-3434,-3305,-3090,-2833,-2569, -2316,-2088,-1895,-1723,-1527,-1253,-877,-399,158,753, 1313,1760,2029,2087,1904,1470,801,-39,-963,-1850, -2576,-3053,-3235,-3119,-2719,-2069,-1225,-258,748,1692, 2504,3153,3659,4049,4350,4596,4825,5060,5349,5747, 6275,6929,7682,8479,9215,9758,10004,9894,9420,8646, 7678,6646,5676,4849,4181,3644,3201,2815,2427,1989, 1477,891,255,-417,-1096,-1709,-2157,-2358,-2270,-1913, -1348,-679,-20,516,843,926,783,442,-52,-657, -1315,-1972,-2603,-3205,-3797,-4399,-5038,-5724,-6475,-7293, -8139,-8993,-9813,-10524,-11057,-11371,-11435,-11219,-10704,-9908, -8872,-7628,-6206,-4709,-3287,-2045,-1029,-246,347,865, 1434,2155,3084,4231,5551,6959,8347,9559,10455,10964, 11083,10829,10232,9332,8188,6878,5486,4097,2761,1489, 283,-845,-1856,-2708,-3409,-3987,-4466,-4863,-5165,-5331, -5349,-5231,-5027,-4798,-4608,-4498,-4506,-4655,-4956,-5427, -6060,-6828,-7658,-8436,-9050,-9433,-9549,-9411,-9099,-8711, -8307,-7930,-7610,-7357,-7164,-7012,-6860,-6655,-6354,-5941, -5396,-4693,-3815,-2795,-1683,-521,669,1860,3005,4074, 5054,5956,6786,7549,8250,8888,9451,9922,10283,10520, 10616,10543,10261,9769,9073,8199,7198,6121,5027,3976, 3021,2187,1504,987,608,317,66,-183,-450,-765, -1148,-1592,-2072,-2549,-2965,-3271,-3435,-3470,-3412,-3303, -3178,-3049,-2918,-2796,-2688,-2577,-2444,-2247,-1925,-1440, -814,-115,582,1207,1700,2004,2070,1865,1383,655, -233,-1173,-2050,-2754,-3204,-3362,-3236,-2856,-2271,-1549, -744,107,965,1760,2425,2918,3240,3428,3534,3646, 3868,4292,4949,5807,6780,7765,8634,9280,9632,9682, 9456,8999,8365,7604,6800,6032,5351,4784,4333,3971, 3620,3191,2638,1947,1129,223,-688,-1484,-2069,-2375, -2390,-2144,-1708,-1160,-587,-67,341,590,650,516, 222,-178,-641,-1138,-1639,-2122,-2596,-3098,-3666,-4328, -5080,-5886,-6734,-7635,-8587,-9544,-10433,-11184,-11736,-11998, -11906,-11423,-10570,-9414,-8066,-6677,-5396,-4308,-3430,-2728, -2128,-1545,-902,-118,872,2078,3469,4961,6442,7810, 8995,9936,10569,10857,10785,10359,9613,8621,7462,6222, 4966,3725,2513,1332,186,-909,-1906,-2766,-3479,-4075, -4566,-4926,-5131,-5174,-5060,-4811,-4504,-4229,-4076,-4114, -4368,-4840,-5487,-6244,-7031,-7766,-8375,-8805,-9036,-9085, -8999,-8825,-8614,-8395,-8171,-7964,-7805,-7691,-7606,-7523, -7378,-7127,-6739,-6200,-5514,-4699,-3761,-2718,-1594,-438, 713,1840,2925,3936,4867,5752,6614,7432,8189,8884, 9517,10078,10517,10775,10819,10627,10200,9558,8738,7787, 6750,5682,4646,3722,2965,2375,1924,1567,1242,897, 516,105,-340,-839,-1376,-1905,-2377,-2746,-2980,-3096, -3131,-3117,-3082,-3056,-3053,-3066,-3080,-3066,-3015,-2894, -2655,-2267,-1710,-994,-176,652,1388,1925,2204,2194, 1900,1364,641,-173,-996,-1759,-2409,-2900,-3178,-3194, -2930,-2403,-1663,-783,134,959,1584,1972,2161,2231, 2289,2439,2760,3275,3973,4838,5819,6829,7789,8615, 9230,9582,9637,9408,8949,8336,7671,7064,6564,6165, 5831,5522,5174,4710,4078,3274,2345,1361,388,-508, -1259,-1781,-2027,-1996,-1730,-1303,-805,-325,72,364, 527,557,470,284,30,-283,-645,-1043,-1471,-1944, -2434,-2911,-3400,-3976,-4702,-5613,-6691,-7898,-9152,-10313, -11234,-11817,-12016,-11806,-11211,-10312,-9241,-8130,-7080,-6158, -5386,-4727,-4117,-3509,-2845,-2071,-1142,-27,1276,2742, 4309,5879,7341,8615,9641,10373,10784,10879,10661,10153, 9386,8410,7298,6109,4906,3725,2574,1438,320,-760, -1788,-2720,-3502,-4091,-4464,-4606,-4525,-4266,-3934,-3646, -3493,-3511,-3717,-4109,-4653,-5299,-5982,-6657,-7284,-7801, -8162,-8359,-8423,-8400,-8319,-8206,-8089,-7985,-7909,-7867, -7858,-7863,-7830,-7720,-7494,-7137,-6653,-6042,-5297,-4419, -3436,-2379,-1279,-176,883,1898,2905,3920,4915,5867, 6773,7649,8491,9289,10011,10604,11007,11168,11066,10703, 10099,9302,8381,7396,6418,5499,4695,4033,3515,3085, 2686,2275,1826,1326,795,243,-324,-881,-1384,-1801, -2124,-2370,-2541,-2636,-2679,-2721,-2799,-2927,-3092,-3263, -3395,-3427,-3297,-2954,-2386,-1639,-791,52,814,1440, 1891,2157,2229,2082,1680,1033,200,-718,-1615,-2376, -2900,-3111,-2982,-2550,-1921,-1203,-487,154,668,1033, 1245,1346,1408,1519,1749,2152,2770,3607,4626,5758, 6881,7865,8616,9087,9281,9246,9047,8733,8362,8002, 7709,7482,7281,7050,6723,6250,5619,4826,3886,2845, 1762,723,-173,-842,-1248,-1405,-1376,-1223,-975,-660, -299,65,389,629,744,705,528,268,-41,-378, -695,-950,-1159,-1371,-1648,-2071,-2714,-3621,-4791,-6150, -7567,-8889,-10000,-10818,-11291,-11405,-11192,-10710,-10026,-9219, -8371,-7572,-6883,-6302,-5792,-5307,-4751,-4045,-3173,-2140, -939,436,1944,3518,5097,6609,7975,9128,10023,10621, 10893,10838,10486,9904,9147,8272,7313,6274,5148,3946, 2669,1342,42,-1124,-2108,-2877,-3403,-3674,-3719,-3604, -3394,-3160,-2992,-2968,-3116,-3418,-3850,-4381,-5000,-5665, -6309,-6868,-7303,-7599,-7778,-7880,-7926,-7922,-7888,-7846, -7815,-7831,-7907,-8007,-8079,-8091,-8013,-7817,-7489,-7028, -6463,-5794,-5013,-4114,-3135,-2125,-1120,-125,861,1854, 2864,3890,4927,5974,7024,8056,9022,9879,10582,11089, 11341,11301,10971,10400,9660,8831,7984,7161,6395,5707, 5099,4562,4078,3611,3120,2590,2027,1433,811,185, -407,-919,-1305,-1552,-1695,-1792,-1906,-2095,-2379,-2738, -3125,-3466,-3692,-3755,-3644,-3369,-2954,-2411,-1757,-1004, -178,669,1452,2074,2458,2535,2291,1745,969,61, -844,-1622,-2190,-2532,-2647,-2526,-2175,-1636,-1008,-418, 54,367,513,530,499,504,636,977,1575,2421, 3453,4576,5685,6670,7470,8074,8474,8664,8681,8580, 8433,8312,8256,8261,8281,8233,8030,7616,6995,6205, 5291,4293,3270,2265,1317,475,-210,-702,-1009,-1140, -1101,-889,-539,-131,248,543,702,692,513,245, -5,-161,-212,-188,-134,-132,-272,-619,-1198,-2016, -3079,-4357,-5763,-7181,-8483,-9554,-10319,-10760,-10891,-10749, -10400,-9915,-9368,-8814,-8297,-7824,-7390,-6962,-6486,-5920, -5232,-4381,-3350,-2142,-763,776,2428,4102,5685,7081, 8241,9162,9851,10311,10526,10501,10247,9799,9167,8339, 7306,6090,4740,3326,1931,624,-542,-1516,-2258,-2748, -2990,-3035,-2953,-2822,-2705,-2674,-2773,-3006,-3352,-3802, -4338,-4933,-5548,-6139,-6647,-7027,-7279,-7435,-7537,-7606, -7658,-7710,-7762,-7836,-7944,-8077,-8222,-8354,-8426,-8395, -8242,-7965,-7557,-7027,-6404,-5700,-4914,-4052,-3157,-2265, -1378,-469,489,1511,2606,3768,4969,6177,7365,8478, 9439,10183,10686,10949,10976,10764,10345,9778,9118,8408, 7681,6982,6356,5822,5352,4887,4375,3782,3099,2344, 1572,872,323,-72,-372,-624,-848,-1083,-1373,-1729, -2134,-2552,-2946,-3302,-3615,-3874,-4059,-4116,-3979,-3599, -2986,-2183,-1267,-321,581,1364,1939,2229,2208,1898, 1340,606,-215,-1021,-1713,-2216,-2476,-2459,-2185,-1748, -1269,-848,-541,-380,-362,-431,-514,-543,-460,-204, 291,1053,2024,3097,4177,5182,6031,6685,7133,7420, 7615,7777,7935,8109,8312,8520,8686,8745,8659,8396, 7949,7329,6584,5752,4842,3848,2797,1756,794,-12, -582,-878,-925,-779,-510,-214,24,172,220,161, 31,-106,-212,-240,-157,33,269,462,523,392, 21,-637,-1594,-2796,-4153,-5557,-6897,-8064,-8982,-9642, -10079,-10316,-10369,-10252,-9995,-9645,-9274,-8932,-8636,-8362, -8068,-7697,-7204,-6552,-5704,-4624,-3309,-1818,-238,1363, 2934,4405,5746,6952,8029,8954,9692,10212,10506,10556, 10345,9847,9066,8031,6781,5380,3930,2534,1247,117, -807,-1496,-1959,-2220,-2325,-2319,-2259,-2231,-2298,-2485, -2801,-3232,-3736,-4279,-4838,-5398,-5925,-6369,-6698,-6923, -7092,-7229,-7338,-7432,-7524,-7644,-7807,-8015,-8235,-8443, -8615,-8712,-8702,-8574,-8327,-7963,-7491,-6920,-6280,-5609, -4924,-4220,-3480,-2703,-1860,-897,221,1477,2802,4124, 5395,6602,7732,8753,9613,10240,10597,10685,10529,10179, 9704,9176,8659,8193,7767,7350,6875,6295,5608,4852, 4074,3330,2656,2058,1521,1043,621,259,-57,-349, -635,-944,-1313,-1745,-2237,-2780,-3341,-3866,-4293,-4546, -4566,-4324,-3834,-3146,-2314,-1381,-402,538,1348,1921, 2174,2073,1649,992,234,-506,-1142,-1618,-1892,-1950, -1807,-1530,-1198,-888,-681,-628,-731,-943,-1172,-1322, -1312,-1089,-637,37,896,1868,2852,3763,4543,5177, 5690,6134,6545,6956,7378,7786,8145,8442,8688,8884, 9006,9025,8918,8637,8136,7405,6483,5422,4283,3140, 2088,1199,521,88,-110,-142,-88,0,70,96, 70,-20,-173,-342,-440,-388,-171,178,587,960, 1205,1252,1038,537,-226,-1218,-2386,-3655,-4930,-6146, -7233,-8140,-8842,-9348,-9651,-9761,-9725,-9616,-9496,-9400, -9346,-9306,-9221,-9027,-8688,-8182,-7494,-6596,-5500,-4252, -2885,-1427,71,1547,2981,4372,5711,6988,8175,9226, 10055,10594,10822,10750,10366,9664,8666,7439,6069,4652, 3278,2021,939,49,-637,-1104,-1367,-1487,-1539,-1596, -1701,-1873,-2136,-2502,-2969,-3509,-4077,-4631,-5148,-5607, -5983,-6266,-6479,-6653,-6804,-6955,-7123,-7302,-7496,-7715, -7980,-8286,-8591,-8819,-8916,-8864,-8683,-8399,-8060,-7695, -7315,-6895,-6423,-5895,-5312,-4650,-3880,-3003,-2032,-967, 211,1542,2988,4463,5878,7164,8232,9013,9509,9776, 9885,9885,9817,9694,9506,9239,8897,8469,7947,7339, 6679,5984,5268,4553,3850,3160,2502,1916,1446,1105, 851,624,366,41,-376,-885,-1470,-2116,-2799,-3479, -4119,-4663,-5014,-5089,-4844,-4295,-3494,-2525,-1480,-458, 453,1168,1600,1697,1468,983,346,-324,-911,-1344, -1580,-1625,-1515,-1306,-1063,-864,-794,-899,-1158,-1509, -1858,-2097,-2128,-1911,-1475,-892,-226,502,1273,2046, 2785,3475,4113,4685,5214,5718,6197,6641,7067,7490, 7918,8369,8807,9148,9317,9266,8962,8413,7643,6682, 5579,4426,3322,2349,1559,984,635,463,373,295, 175,1,-222,-482,-747,-951,-1007,-864,-546,-112, 369,827,1181,1389,1406,1205,746,16,-957,-2100, -3334,-4579,-5751,-6763,-7584,-8221,-8683,-8996,-9208,-9363, -9493,-9631,-9798,-9980,-10116,-10132,-9971,-9621,-9085,-8391, -7554,-6586,-5488,-4286,-3010,-1660,-234,1254,2778,4308, 5791,7181,8429,9480,10259,10693,10759,10473,9858,8934, 7757,6433,5070,3756,2558,1526,684,33,-442,-745, -911,-1016,-1132,-1319,-1607,-1988,-2433,-2915,-3432,-3973, -4524,-5034,-5460,-5794,-6040,-6210,-6323,-6439,-6612,-6847, -7140,-7494,-7880,-8245,-8541,-8741,-8850,-8883,-8860,-8794, -8670,-8472,-8189,-7844,-7464,-7080,-6697,-6302,-5858,-5290, -4527,-3532,-2316,-921,586,2128,3620,4969,6115,7047, 7806,8422,8916,9293,9547,9672,9683,9608,9464,9236, 8918,8498,7949,7275,6508,5708,4927,4204,3543,2959, 2474,2088,1788,1553,1340,1099,772,319,-261,-964, -1783,-2664,-3546,-4356,-5002,-5382,-5422,-5105,-4453,-3528, -2455,-1372,-391,421,1013,1297,1242,898,377,-200, -697,-1008,-1099,-1028,-870,-693,-563,-536,-638,-875, -1207,-1573,-1904,-2134,-2218,-2154,-1946,-1611,-1169,-625, 19,751,1519,2255,2910,3474,3976,4444,4914,5412, 5949,6528,7147,7794,8434,9017,9461,9696,9679,9383, 8791,7942,6926,5833,4756,3794,3022,2448,2035,1723, 1447,1143,786,388,-22,-413,-740,-971,-1084,-1038, -804,-408,96,647,1170,1581,1822,1858,1659,1191, 460,-507,-1645,-2835,-3961,-4957,-5800,-6496,-7064,-7534, -7946,-8339,-8734,-9130,-9516,-9862,-10142,-10319,-10358,-10232, -9922,-9443,-8839,-8132,-7327,-6412,-5369,-4200,-2940,-1591, -116,1501,3198,4882,6490,7953,9186,10119,10718,10958, 10823,10319,9486,8391,7125,5809,4556,3436,2482,1700, 1091,634,296,34,-192,-415,-663,-967,-1360,-1860, -2459,-3095,-3694,-4198,-4581,-4849,-5038,-5208,-5395,-5613, -5869,-6157,-6461,-6783,-7122,-7463,-7801,-8130,-8422,-8642, -8755,-8755,-8644,-8448,-8211,-7989,-7820,-7731,-7676,-7566, -7315,-6869,-6204,-5306,-4195,-2927,-1573,-173,1256,2667, 3987,5163,6164,6989,7669,8250,8754,9183,9524,9768, 9909,9930,9813,9554,9156,8613,7938,7176,6376,5587, 4852,4203,3658,3214,2872,2642,2505,2400,2225,1890, 1348,608,-294,-1316,-2386,-3429,-4356,-5059,-5440,-5426, -5005,-4235,-3227,-2098,-1009,-125,468,755,755,520, 154,-212,-473,-574,-535,-416,-289,-201,-166,-196, -305,-505,-788,-1130,-1488,-1821,-2082,-2220,-2219,-2071, -1774,-1330,-775,-154,499,1160,1789,2356,2841,3269, 3699,4173,4714,5336,6066,6907,7812,8695,9455,9983, 10185,10030,9565,8871,8040,7148,6260,5432,4714,4116, 3615,3169,2737,2285,1797,1261,705,164,-325,-730, -1007,-1118,-1025,-724,-250,341,992,1610,2073,2303, 2280,1999,1463,703,-209,-1188,-2164,-3091,-3920,-4635, -5273,-5878,-6462,-7027,-7583,-8128,-8663,-9175,-9644,-10023, -10264,-10342,-10258,-10040,-9719,-9295,-8754,-8112,-7365,-6478, -5435,-4248,-2918,-1442,188,1972,3818,5597,7223,8648, 9784,10549,10891,10820,10399,9702,8789,7725,6590,5442, 4342,3364,2573,1986,1578,1297,1075,836,521,101, -414,-982,-1565,-2141,-2669,-3126,-3524,-3872,-4189,-4488, -4756,-4984,-5179,-5371,-5587,-5868,-6257,-6753,-7287,-7756, -8090,-8271,-8324,-8295,-8222,-8149,-8106,-8095,-8114,-8160, -8217,-8251,-8209,-8026,-7630,-6993,-6120,-5026,-3760,-2401, -1014,365,1700,2945,4067,5062,5933,6715,7440,8133, 8773,9311,9702,9947,10075,10087,9954,9635,9135,8471, 7679,6823,5991,5243,4622,4136,3787,3567,3464,3427, 3374,3209,2846,2235,1361,259,-1006,-2331,-3589,-4632, -5301,-5506,-5252,-4617,-3729,-2747,-1819,-1042,-469,-129, -1,-28,-143,-288,-418,-485,-462,-363,-227,-91, 6,31,-25,-165,-398,-731,-1145,-1570,-1930,-2188, -2335,-2357,-2237,-1975,-1586,-1065,-444,190,744,1199, 1567,1879,2193,2572,3068,3742,4605,5603,6660,7697, 8628,9351,9795,9919,9742,9321,8731,8049,7356,6686, 6054,5466,4925,4428,3949,3462,2924,2309,1628,916, 214,-428,-945,-1269,-1356,-1178,-757,-149,556,1239, 1792,2158,2305,2218,1902,1393,732,-41,-864,-1663, -2404,-3099,-3765,-4415,-5063,-5716,-6380,-7051,-7722,-8365, -8951,-9463,-9873,-10169,-10347,-10416,-10377,-10220,-9939,-9545, -9058,-8484,-7792,-6933,-5857,-4540,-2993,-1261,602,2521, 4410,6151,7657,8890,9815,10373,10533,10308,9738,8883, 7848,6755,5709,4775,3998,3398,2931,2523,2118,1687, 1240,798,352,-109,-598,-1129,-1710,-2310,-2882,-3362, -3714,-3948,-4112,-4261,-4446,-4696,-5031,-5442,-5895,-6369, -6852,-7305,-7669,-7906,-8021,-8045,-8020,-8005,-8022,-8082, -8194,-8363,-8567,-8774,-8943,-9012,-8896,-8514,-7863,-6979, -5913,-4713,-3437,-2145,-863,388,1586,2706,3725,4652, 5546,6415,7237,7995,8677,9253,9696,10003,10146,10078, 9779,9277,8619,7840,7009,6193,5446,4824,4378,4144, 4107,4208,4356,4424,4275,3805,2971,1792,360,-1155, -2576,-3762,-4613,-5066,-5114,-4808,-4242,-3534,-2791,-2102, -1527,-1087,-795,-663,-670,-746,-812,-811,-723,-571, -391,-212,-57,49,79,20,-135,-401,-768,-1203, -1675,-2125,-2470,-2641,-2624,-2431,-2091,-1645,-1150,-659, -224,108,326,485,678,980,1468,2168,3061,4092, 5195,6303,7338,8220,8889,9312,9459,9352,9046,8613, 8102,7550,6995,6482,6032,5628,5228,4786,4244,3560, 2750,1871,969,108,-619,-1137,-1404,-1399,-1124,-642, -35,615,1232,1728,2048,2160,2057,1750,1293,750, 174,-423,-1045,-1683,-2339,-3012,-3697,-4380,-5062,-5760, -6477,-7203,-7914,-8578,-9159,-9620,-9949,-10159,-10295,-10385, -10436,-10407,-10270,-10009,-9595,-8987,-8164,-7115,-5835,-4345, -2676,-860,1067,3046,4993,6767,8227,9272,9874,10044, 9849,9379,8740,8012,7244,6467,5689,4938,4254,3678, 3207,2808,2430,2034,1584,1059,470,-155,-787,-1403, -1971,-2442,-2789,-3036,-3226,-3404,-3617,-3906,-4280,-4702, -5143,-5605,-6087,-6566,-6987,-7290,-7448,-7498,-7486,-7464, -7499,-7631,-7841,-8108,-8433,-8794,-9128,-9356,-9415,-9273, -8906,-8321,-7533,-6573,-5485,-4313,-3094,-1869,-672,459, 1512,2521,3514,4506,5496,6488,7435,8284,9002,9591, 10046,10338,10416,10229,9761,9043,8169,7240,6363,5645, 5179,5003,5093,5361,5657,5827,5749,5339,4580,3515, 2214,778,-672,-2014,-3120,-3893,-4300,-4364,-4130,-3674, -3113,-2555,-2050,-1638,-1334,-1123,-979,-892,-852,-824, -768,-642,-445,-203,55,286,463,555,527,344, 4,-479,-1051,-1605,-2029,-2266,-2309,-2180,-1922,-1583, -1227,-898,-634,-469,-391,-332,-211,30,447,1060, 1866,2824,3887,5001,6119,7172,8076,8756,9185,9372, 9322,9084,8738,8369,8018,7705,7428,7159,6849,6448, 5920,5247,4429,3484,2460,1446,528,-202,-694,-908, -835,-506,-19,518,1045,1522,1907,2173,2295,2254, 2065,1742,1308,824,332,-177,-722,-1292,-1890,-2533, -3232,-3992,-4793,-5583,-6319,-6983,-7574,-8101,-8575,-9010, -9430,-9816,-10122,-10319,-10405,-10375,-10217,-9942,-9553,-8989, -8156,-6985,-5464,-3649,-1641,438,2470,4349,6009,7414, 8524,9281,9675,9737,9522,9104,8538,7873,7165,6470, 5825,5267,4813,4413,4003,3537,2996,2398,1772,1136, 500,-114,-683,-1184,-1596,-1911,-2144,-2349,-2570,-2851, -3218,-3668,-4174,-4715,-5255,-5754,-6153,-6424,-6577,-6641, -6651,-6673,-6749,-6908,-7156,-7480,-7860,-8282,-8708,-9088, -9376,-9518,-9444,-9119,-8566,-7834,-6980,-6034,-5008,-3906, -2771,-1641,-536,529,1557,2569,3582,4593,5604,6645, 7709,8735,9630,10316,10720,10764,10427,9766,8903,7980, 7140,6488,6086,5942,6023,6255,6546,6775,6827,6602, 6041,5142,3958,2582,1135,-245,-1448,-2423,-3140,-3572, -3712,-3604,-3329,-2969,-2585,-2212,-1868,-1568,-1357,-1253, -1223,-1211,-1167,-1047,-827,-522,-165,195,514,728, 772,630,304,-171,-718,-1246,-1665,-1907,-1966,-1896, -1745,-1550,-1351,-1192,-1092,-1050,-1047,-1064,-1053,-959, -726,-305,319,1155,2177,3320,4505,5643,6646,7469, 8079,8466,8654,8682,8603,8472,8326,8197,8101,8016, 7879,7630,7216,6595,5777,4818,3775,2700,1674,781, 78,-392,-602,-575,-362,-2,446,923,1367,1727, 1965,2058,2007,1839,1617,1371,1095,765,362,-136, -750,-1449,-2170,-2870,-3537,-4192,-4870,-5578,-6317,-7044, -7703,-8268,-8737,-9139,-9526,-9932,-10346,-10725,-11019,-11188, -11193,-10967,-10427,-9526,-8287,-6747,-4968,-3057,-1093,868, 2772,4537,6075,7304,8172,8679,8864,8787,8520,8135, 7686,7199,6703,6228,5776,5344,4908,4441,3916,3333, 2689,2014,1347,713,119,-409,-849,-1185,-1434,-1641, -1882,-2223,-2681,-3217,-3775,-4323,-4846,-5329,-5747,-6069, -6280,-6378,-6411,-6437,-6486,-6611,-6851,-7213,-7660,-8159, -8669,-9135,-9519,-9792,-9916,-9865,-9639,-9251,-8703,-7993, -7117,-6101,-5007,-3909,-2865,-1903,-1011,-141,783,1840, 3051,4386,5762,7088,8281,9245,9898,10188,10106,9674, 8986,8176,7400,6775,6368,6199,6252,6491,6823,7129, 7290,7201,6805,6097,5125,3952,2665,1366,115,-1034, -2014,-2772,-3286,-3548,-3585,-3454,-3202,-2879,-2568,-2321, -2158,-2087,-2090,-2115,-2084,-1940,-1661,-1266,-804,-338, 53,290,348,231,-27,-389,-814,-1233,-1580,-1818, -1943,-1980,-1940,-1836,-1704,-1595,-1552,-1597,-1732,-1919, -2088,-2160,-2083,-1821,-1343,-636,270,1328,2468,3612, 4692,5638,6391,6930,7282,7515,7675,7794,7913,8054, 8208,8320,8330,8193,7886,7393,6711,5862,4889,3842, 2780,1753,830,91,-396,-610,-583,-374,-66,256, 539,789,1032,1277,1497,1644,1669,1557,1337,1044, 697,297,-147,-635,-1178,-1774,-2416,-3113,-3848,-4605, -5350,-6037,-6622,-7122,-7590,-8087,-8654,-9291,-9965,-10636, -11251,-11736,-12039,-12131,-11975,-11521,-10734,-9612,-8181,-6478, -4589,-2619,-651,1259,3037,4595,5861,6801,7440,7826, 7997,7980,7820,7558,7217,6854,6508,6168,5796,5361, 4846,4234,3547,2826,2117,1466,902,417,0,-347, -636,-906,-1201,-1558,-1991,-2498,-3075,-3703,-4323,-4874, -5319,-5636,-5827,-5917,-5948,-5969,-6035,-6190,-6447,-6802, -7226,-7681,-8138,-8598,-9072,-9557,-9988,-10275,-10354,-10200, -9816,-9241,-8519,-7688,-6814,-5947,-5118,-4341,-3594,-2805, -1881,-778,514,1968,3523,5085,6541,7787,8740,9335, 9535,9353,8880,8253,7610,7079,6735,6601,6674,6913, 7233,7538,7738,7778,7605,7183,6505,5595,4506,3305, 2052,807,-359,-1362,-2140,-2663,-2936,-2996,-2916,-2773, -2627,-2535,-2531,-2595,-2666,-2672,-2563,-2325,-1982,-1575, -1123,-668,-269,34,207,228,96,-175,-527,-885, -1189,-1409,-1538,-1562,-1506,-1418,-1347,-1319,-1359,-1489, -1708,-1996,-2301,-2551,-2669,-2594,-2294,-1756,-989,-35, 1033,2133,3176,4109,4891,5522,6041,6491,6908,7315, 7695,8016,8284,8497,8664,8784,8786,8573,8088,7337, 6381,5315,4247,3244,2341,1555,905,417,102,-51, -69,26,224,507,844,1184,1474,1674,1762,1753, 1683,1574,1435,1266,1027,672,178,-445,-1153,-1876, -2569,-3219,-3818,-4371,-4889,-5392,-5903,-6451,-7068,-7782, -8577,-9411,-10220,-10964,-11612,-12116,-12410,-12416,-12068,-11330, -10228,-8839,-7246,-5492,-3623,-1713,161,1933,3519,4839, 5874,6639,7163,7492,7695,7798,7800,7737,7608,7401, 7099,6692,6187,5604,4943,4220,3494,2822,2227,1715, 1286,934,647,384,94,-268,-739,-1335,-2015,-2701, -3320,-3826,-4219,-4528,-4775,-4962,-5098,-5203,-5290,-5390, -5525,-5727,-6024,-6414,-6893,-7482,-8168,-8867,-9472,-9909, -10139,-10152,-9950,-9566,-9043,-8445,-7825,-7215,-6633,-6085, -5523,-4870,-4054,-3020,-1750,-249,1429,3164,4823,6297, 7498,8350,8817,8910,8712,8343,7927,7559,7307,7199, 7248,7430,7694,7993,8271,8459,8506,8361,7975,7337, 6449,5344,4094,2810,1599,541,-312,-951,-1409,-1714, -1926,-2098,-2245,-2373,-2496,-2613,-2705,-2736,-2665,-2479, -2177,-1779,-1317,-844,-407,-56,172,259,205,35, -209,-480,-730,-914,-999,-978,-894,-793,-718,-688, -734,-900,-1206,-1638,-2136,-2586,-2877,-2929,-2716,-2270, -1664,-958,-169,709,1658,2614,3497,4257,4893,5435, 5930,6416,6923,7467,8031,8561,9011,9339,9474,9362, 9014,8469,7764,6939,6046,5127,4219,3330,2468,1678, 1043,633,450,431,519,662,824,999,1189,1385, 1571,1741,1896,2013,2076,2049,1888,1570,1127,581, -25,-642,-1246,-1829,-2384,-2893,-3366,-3808,-4231,-4685, -5248,-5953,-6787,-7724,-8730,-9750,-10703,-11512,-12125,-12502, -12604,-12382,-11808,-10876,-9614,-8081,-6349,-4512,-2656,-846, 857,2384,3677,4736,5602,6319,6909,7382,7737,7973, 8084,8076,7966,7746,7380,6855,6192,5447,4690,3999, 3434,2993,2646,2350,2057,1733,1346,876,323,-282, -916,-1540,-2122,-2669,-3175,-3625,-4004,-4296,-4491,-4589, -4610,-4590,-4602,-4712,-4955,-5342,-5879,-6534,-7256,-7996, -8693,-9263,-9629,-9780,-9730,-9520,-9194,-8813,-8433,-8098, -7807,-7542,-7251,-6843,-6215,-5297,-4068,-2564,-863,935, 2707,4317,5672,6714,7433,7842,7989,7957,7827,7651, 7477,7360,7349,7469,7727,8093,8505,8888,9156,9229, 9037,8548,7789,6830,5755,4638,3534,2505,1589,806, 161,-358,-797,-1196,-1570,-1911,-2226,-2507,-2727,-2857, -2872,-2753,-2491,-2101,-1634,-1162,-748,-419,-175,-18, 30,-49,-252,-528,-786,-936,-922,-768,-547,-332, -194,-179,-307,-575,-960,-1425,-1914,-2372,-2759,-3022, -3099,-2948,-2576,-2021,-1326,-535,293,1108,1878,2574, 3179,3732,4312,4979,5740,6537,7291,7953,8500,8927, 9221,9365,9356,9171,8783,8190,7437,6568,5626,4656, 3718,2884,2204,1682,1290,1012,821,696,639,665, 777,970,1233,1529,1808,2029,2181,2260,2245,2099, 1808,1378,824,211,-390,-942,-1423,-1829,-2173,-2491, -2822,-3198,-3661,-4262,-5036,-5985,-7051,-8170,-9285,-10361, -11361,-12216,-12813,-13072,-12958,-12454,-11576,-10397,-8995,-7408, -5691,-3930,-2214,-597,874,2173,3298,4279,5151,5945, 6668,7308,7816,8150,8289,8219,7929,7442,6827,6170, 5531,4964,4491,4100,3751,3410,3057,2684,2289,1864, 1398,868,267,-371,-1031,-1699,-2349,-2939,-3434,-3790, -4002,-4088,-4084,-4030,-3984,-4014,-4189,-4543,-5068,-5736, -6509,-7310,-8048,-8640,-9057,-9285,-9335,-9237,-9053,-8855, -8711,-8667,-8710,-8779,-8777,-8602,-8169,-7426,-6340,-4927, -3292,-1573,131,1761,3254,4556,5623,6414,6915,7146, 7167,7063,6938,6882,6946,7141,7465,7907,8427,8932, 9326,9521,9470,9169,8648,7948,7104,6148,5138,4143, 3233,2440,1746,1120,509,-119,-746,-1333,-1856,-2299, -2654,-2907,-3056,-3081,-2955,-2657,-2217,-1710,-1206,-781, -511,-415,-457,-581,-744,-908,-1019,-1033,-932,-739, -505,-285,-126,-59,-98,-261,-562,-987,-1513,-2128, -2738,-3198,-3407,-3350,-3080,-2662,-2150,-1594,-1022,-450, 126,714,1333,1997,2708,3464,4249,5035,5804,6549, 7265,7930,8518,8992,9313,9424,9275,8866,8253,7516, 6718,5912,5116,4334,3581,2870,2229,1692,1264,930, 686,533,478,539,717,999,1348,1705,2006,2229, 2342,2312,2115,1743,1239,682,145,-327,-734,-1085, -1390,-1662,-1920,-2187,-2504,-2926,-3506,-4279,-5247,-6390, -7655,-8971,-10236,-11377,-12337,-13042,-13429,-13451,-13086,-12347, -11289,-10001,-8548,-6971,-5357,-3817,-2408,-1098,155,1378, 2585,3770,4899,5906,6730,7335,7702,7828,7750,7506, 7135,6687,6211,5733,5277,4841,4434,4066,3732,3423, 3117,2777,2370,1887,1327,682,-40,-815,-1593,-2311, -2903,-3342,-3614,-3728,-3714,-3617,-3506,-3461,-3565,-3861, -4363,-5053,-5876,-6728,-7505,-8137,-8567,-8768,-8783,-8717, -8669,-8706,-8853,-9097,-9380,-9643,-9818,-9830,-9626,-9157, -8395,-7335,-6011,-4477,-2797,-1071,606,2155,3484,4525, 5234,5645,5843,5928,5985,6072,6223,6480,6864,7363, 7940,8540,9083,9462,9592,9452,9071,8520,7873,7166, 6407,5608,4784,3985,3242,2564,1927,1293,616,-117, -874,-1593,-2224,-2735,-3097,-3260,-3190,-2911,-2495,-2025, -1584,-1242,-1028,-925,-901,-927,-995,-1089,-1180,-1231, -1181,-997,-708,-376,-61,169,242,108,-226,-718, -1302,-1911,-2464,-2905,-3197,-3312,-3271,-3115,-2876,-2580, -2222,-1783,-1259,-683,-100,472,1049,1670,2366,3140, 3996,4922,5858,6732,7506,8161,8683,9028,9145,9031, 8716,8246,7665,7016,6313,5578,4838,4113,3418,2762, 2161,1608,1099,678,393,283,364,615,981,1380, 1734,2001,2165,2215,2127,1905,1564,1134,654,187, -232,-578,-850,-1053,-1192,-1313,-1468,-1724,-2130,-2711, -3487,-4460,-5605,-6902,-8325,-9778,-11132,-12272,-13108,-13563, -13596,-13244,-12580,-11658,-10553,-9359,-8139,-6892,-5593,-4247, -2873,-1483,-72,1338,2693,3926,5007,5919,6626,7110, 7377,7455,7363,7127,6790,6391,5963,5535,5141,4810, 4534,4291,4057,3796,3479,3082,2571,1920,1152,315, -540,-1357,-2088,-2682,-3072,-3229,-3177,-2989,-2775,-2660, -2755,-3093,-3640,-4345,-5140,-5937,-6650,-7204,-7559,-7752, -7852,-7926,-8028,-8206,-8468,-8805,-9186,-9577,-9954,-10275, -10459,-10403,-10030,-9301,-8228,-6868,-5316,-3668,-2002,-387, 1095,2362,3348,4019,4408,4614,4767,4960,5239,5632, 6138,6730,7381,8049,8670,9177,9497,9594,9474,9162, 8702,8125,7464,6764,6076,5435,4846,4286,3702,3037, 2252,1349,389,-552,-1393,-2066,-2536,-2815,-2916,-2845, -2624,-2305,-1938,-1574,-1276,-1094,-1041,-1099,-1228,-1374, -1482,-1496,-1375,-1115,-746,-315,81,340,402,284, 24,-335,-761,-1231,-1726,-2227,-2684,-3029,-3230,-3292, -3233,-3069,-2814,-2493,-2127,-1738,-1335,-920,-474,41, 666,1423,2307,3281,4285,5260,6183,7033,7775,8363, 8741,8891,8825,8572,8201,7771,7305,6781,6182,5519, 4803,4038,3250,2495,1816,1243,812,549,464,550, 779,1105,1464,1787,2046,2201,2210,2078,1826,1477, 1072,659,279,-49,-319,-517,-645,-709,-747,-796, -921,-1192,-1666,-2398,-3417,-4719,-6219,-7797,-9341,-10733, -11853,-12622,-13050,-13160,-12972,-12535,-11915,-11153,-10270,-9273, -8167,-6967,-5671,-4275,-2808,-1329,124,1536,2868,4067, 5091,5932,6592,7048,7269,7263,7090,6825,6531,6228, 5930,5646,5392,5181,5013,4869,4697,4440,4036,3448, 2666,1723,697,-297,-1155,-1807,-2205,-2344,-2274,-2093, -1926,-1877,-2017,-2361,-2879,-3510,-4187,-4858,-5478,-6017, -6454,-6763,-6935,-7003,-7058,-7191,-7463,-7878,-8404,-8999, -9605,-10166,-10626,-10910,-10927,-10592,-9878,-8821,-7485,-5945, -4295,-2650,-1108,240,1324,2134,2713,3140,3500,3852, 4241,4695,5224,5835,6528,7288,8064,8780,9343,9661, 9711,9534,9194,8764,8302,7858,7439,7023,6582,6093, 5530,4861,4074,3176,2195,1172,182,-696,-1413,-1945, -2281,-2404,-2314,-2049,-1686,-1325,-1071,-984,-1047,-1191, -1344,-1450,-1472,-1390,-1206,-941,-613,-256,88,380, 579,654,589,401,103,-305,-807,-1350,-1872,-2314, -2626,-2800,-2858,-2840,-2771,-2666,-2515,-2301,-2044,-1755, -1429,-1053,-588,1,748,1655,2688,3783,4870,5887, 6784,7520,8073,8456,8673,8747,8706,8578,8358,8023, 7571,7008,6335,5576,4767,3933,3117,2378,1759,1295, 1021,950,1047,1263,1550,1854,2121,2298,2364,2336, 2232,2043,1750,1377,955,533,166,-88,-190,-145, 3,185,321,313,64,-506,-1406,-2583,-3962,-5463, -7004,-8483,-9799,-10882,-11706,-12262,-12572,-12646,-12504,-12153, -11605,-10899,-10060,-9104,-8043,-6869,-5559,-4112,-2575,-1022, 480,1894,3186,4319,5278,6054,6621,6966,7093,7046, 6880,6639,6364,6123,5964,5889,5893,5953,5983,5867, 5512,4882,4011,2990,1936,958,128,-508,-958,-1238, -1362,-1344,-1264,-1232,-1330,-1599,-2041,-2614,-3256,-3911, -4536,-5082,-5511,-5807,-5985,-6084,-6160,-6270,-6477,-6831, -7341,-7976,-8710,-9514,-10315,-10981,-11369,-11394,-11023,-10274, -9213,-7917,-6474,-4973,-3502,-2128,-901,136,954,1557, 1996,2361,2756,3266,3914,4678,5529,6421,7298,8092, 8724,9152,9365,9391,9278,9095,8877,8630,8352,8046, 7713,7346,6937,6451,5835,5037,4045,2912,1744,651, -281,-982,-1439,-1672,-1722,-1635,-1473,-1316,-1218,-1211, -1287,-1398,-1487,-1538,-1541,-1497,-1398,-1219,-947,-601, -208,185,516,714,757,659,435,116,-289,-750, -1228,-1685,-2084,-2395,-2614,-2746,-2796,-2779,-2725,-2665, -2612,-2554,-2460,-2273,-1954,-1467,-803,23,975,2007, 3066,4096,5063,5938,6691,7305,7786,8152,8407,8555, 8598,8525,8324,7987,7492,6821,5996,5094,4199,3371, 2653,2068,1636,1367,1246,1251,1357,1537,1765,2016, 2255,2419,2448,2308,2009,1591,1108,633,229,-47, -147,-52,206,541,845,1005,939,592,-49,-958, -2084,-3384,-4817,-6310,-7757,-9068,-10190,-11099,-11785,-12249, -12509,-12585,-12482,-12192,-11718,-11075,-10277,-9325,-8215,-6945, -5556,-4081,-2556,-1041,413,1803,3120,4309,5284,5956, 6301,6369,6264,6112,6011,6013,6105,6272,6469,6634, 6702,6623,6334,5800,5024,4082,3073,2098,1232,509, -41,-397,-571,-636,-655,-700,-832,-1094,-1500,-2018, -2605,-3225,-3841,-4411,-4896,-5253,-5451,-5509,-5490,-5475, -5565,-5837,-6335,-7052,-7920,-8855,-9777,-10609,-11269,-11669, -11745,-11449,-10794,-9817,-8606,-7235,-5785,-4369,-3097,-2023, -1178,-547,-55,407,929,1561,2318,3171,4080,5007, 5918,6781,7555,8185,8641,8897,8969,8908,8787,8673, 8578,8495,8407,8289,8087,7742,7206,6451,5488,4376, 3204,2078,1094,304,-296,-736,-1046,-1237,-1317,-1323, -1304,-1303,-1356,-1467,-1608,-1742,-1850,-1879,-1797,-1604, -1330,-993,-620,-238,121,423,630,716,665,466, 130,-296,-753,-1198,-1592,-1922,-2177,-2351,-2468,-2571, -2694,-2841,-2991,-3115,-3175,-3140,-2980,-2657,-2153,-1479, -660,272,1269,2267,3225,4130,4973,5749,6451,7070, 7624,8111,8486,8709,8747,8574,8195,7653,7011,6308, 5549,4743,3947,3221,2584,2067,1693,1483,1435,1539, 1766,2075,2395,2635,2709,2578,2252,1798,1294,812, 423,175,97,182,407,736,1104,1429,1612,1565, 1242,644,-215,-1299,-2563,-3944,-5378,-6761,-8015,-9112, -10055,-10860,-11541,-12078,-12434,-12551,-12405,-12027,-11489,-10844, -10087,-9194,-8128,-6855,-5394,-3805,-2150,-481,1109,2510, 3646,4489,5042,5356,5515,5615,5740,5944,6224,6567, 6934,7270,7507,7568,7405,6996,6345,5485,4515,3563, 2711,1996,1416,966,651,455,338,252,143,-58, -409,-924,-1560,-2258,-2938,-3526,-3981,-4290,-4453,-4481, -4434,-4397,-4449,-4651,-5050,-5654,-6431,-7343,-8356,-9401, -10380,-11176,-11680,-11794,-11482,-10787,-9792,-8609,-7358,-6132, -4986,-3960,-3075,-2336,-1723,-1173,-608,39,803,1666, 2609,3613,4641,5652,6586,7360,7922,8272,8456,8552, 8642,8770,8941,9124,9264,9293,9176,8901,8459,7843, 7064,6158,5155,4103,3076,2126,1298,635,156,-181, -414,-576,-711,-861,-1024,-1195,-1375,-1551,-1698,-1781, -1765,-1657,-1476,-1230,-906,-512,-85,315,629,811, 844,732,503,193,-160,-516,-842,-1126,-1360,-1563, -1766,-1991,-2242,-2510,-2792,-3082,-3350,-3532,-3561,-3404, -3047,-2503,-1812,-1044,-253,558,1397,2262,3156,4070, 4972,5834,6644,7375,7975,8401,8644,8707,8594,8316, 7913,7425,6841,6145,5343,4476,3615,2861,2301,1970, 1846,1894,2067,2313,2575,2782,2858,2761,2486,2069, 1573,1085,671,365,192,177,335,665,1112,1576, 1942,2102,1999,1627,1032,256,-683,-1772,-2984,-4284, -5623,-6942,-8185,-9308,-10270,-11043,-11620,-12016,-12259,-12370, -12348,-12177,-11840,-11301,-10507,-9436,-8094,-6531,-4852,-3166, -1550,-57,1257,2331,3129,3678,4051,4347,4668,5083, 5601,6175,6733,7210,7559,7758,7779,7580,7136,6472, 5655,4758,3870,3074,2416,1913,1560,1338,1210,1115, 976,716,300,-258,-912,-1600,-2260,-2836,-3296,-3640, -3869,-3980,-3985,-3906,-3805,-3789,-3971,-4418,-5135,-6083, -7187,-8375,-9540,-10553,-11307,-11726,-11785,-11477,-10842,-9979, -8991,-7955,-6922,-5928,-5018,-4256,-3636,-3096,-2556,-1943, -1195,-287,775,1919,3045,4090,5005,5764,6376,6876, 7293,7659,8004,8332,8646,8942,9204,9407,9495,9423, 9189,8789,8202,7436,6537,5565,4575,3630,2793,2070, 1432,867,396,27,-268,-522,-759,-986,-1218,-1458, -1691,-1888,-2015,-2041,-1940,-1717,-1381,-964,-525,-127, 204,444,573,585,480,278,22,-241,-482,-672, -824,-975,-1173,-1450,-1817,-2258,-2725,-3163,-3521,-3776, -3905,-3885,-3707,-3379,-2934,-2428,-1884,-1290,-610,194, 1124,2133,3160,4146,5045,5853,6584,7238,7784,8195, 8443,8514,8413,8144,7704,7083,6299,5395,4476,3660, 3019,2579,2333,2252,2285,2411,2593,2774,2901,2892, 2693,2299,1768,1190,665,285,89,88,262,553, 908,1292,1646,1905,2038,2023,1842,1464,857,7, -1054,-2283,-3606,-4935,-6200,-7358,-8401,-9334,-10174,-10925, -11584,-12144,-12579,-12864,-12958,-12808,-12364,-11587,-10476,-9088, -7504,-5826,-4185,-2680,-1356,-229,706,1472,2104,2666, 3235,3855,4524,5241,5971,6662,7250,7695,7960,8002, 7769,7253,6512,5655,4802,4046,3443,2988,2652,2387, 2164,1963,1756,1498,1135,625,-2,-697,-1412,-2091, -2689,-3156,-3464,-3584,-3528,-3339,-3116,-2978,-3039,-3366, -3969,-4822,-5867,-7035,-8239,-9376,-10360,-11118,-11581,-11685, -11435,-10883,-10101,-9197,-8299,-7502,-6828,-6243,-5700,-5140, -4523,-3818,-2997,-2056,-1029,30,1080,2106,3081,3962, 4724,5375,5942,6453,6935,7416,7910,8405,8865,9250, 9521,9646,9604,9386,8991,8429,7726,6937,6102,5252, 4402,3583,2821,2141,1566,1089,680,302,-54,-412, -786,-1163,-1513,-1808,-2026,-2146,-2155,-2030,-1751,-1339, -872,-434,-77,158,272,288,245,159,66,-15, -77,-124,-174,-271,-477,-817,-1278,-1809,-2340,-2806, -3179,-3464,-3683,-3842,-3921,-3889,-3738,-3485,-3135,-2681, -2100,-1389,-562,346,1296,2247,3153,4019,4877,5740, 6585,7347,7952,8340,8501,8444,8179,7730,7123,6385, 5553,4697,3916,3293,2886,2696,2697,2833,3024,3183, 3237,3140,2865,2434,1907,1372,906,554,325,216, 215,318,534,870,1291,1728,2100,2332,2381,2229, 1866,1283,484,-507,-1630,-2802,-3968,-5093,-6155,-7162, -8153,-9148,-10132,-11075,-11953,-12689,-13204,-13445,-13372,-12932, -12118,-10981,-9634,-8190,-6727,-5305,-3974,-2767,-1704,-793, -19,670,1358,2105,2940,3878,4872,5841,6703,7394, 7857,8071,8026,7728,7220,6575,5873,5200,4610,4122, 3721,3397,3145,2948,2773,2553,2228,1755,1124,348, -512,-1342,-2033,-2529,-2817,-2927,-2890,-2751,-2554,-2365, -2260,-2332,-2657,-3288,-4219,-5380,-6660,-7940,-9116,-10089, -10769,-11099,-11103,-10847,-10418,-9903,-9356,-8816,-8292,-7779, -7271,-6745,-6162,-5487,-4696,-3803,-2832,-1799,-737,312, 1301,2209,3027,3751,4405,5046,5705,6389,7079,7746, 8351,8873,9292,9594,9763,9785,9649,9341,8857,8227, 7513,6760,5998,5234,4478,3759,3104,2534,2045,1601, 1160,680,159,-384,-908,-1359,-1698,-1922,-2011,-1939, -1701,-1339,-920,-529,-250,-104,-31,13,57,133, 240,353,449,514,515,412,195,-122,-524,-983, -1461,-1911,-2311,-2684,-3049,-3409,-3721,-3940,-4026,-3964, -3756,-3412,-2969,-2457,-1880,-1216,-453,392,1311,2291, 3305,4314,5286,6207,7044,7741,8252,8556,8628,8452, 8009,7328,6489,5610,4817,4211,3828,3645,3606,3641, 3682,3687,3627,3499,3281,2961,2539,2049,1541,1076, 700,444,307,289,415,693,1097,1569,2050,2456, 2702,2740,2566,2199,1655,944,108,-805,-1754,-2694, -3617,-4579,-5650,-6828,-8081,-9356,-10577,-11663,-12539,-13159, -13483,-13470,-13085,-12344,-11309,-10082,-8764,-7424,-6129,-4954, -3948,-3076,-2282,-1516,-730,152,1171,2309,3493,4649, 5700,6599,7308,7791,8034,8049,7843,7430,6862,6229, 5612,5089,4718,4499,4362,4239,4085,3851,3494,2996, 2355,1593,760,-75,-847,-1500,-1997,-2290,-2349,-2191, -1889,-1547,-1274,-1180,-1363,-1868,-2677,-3734,-4962,-6234, -7428,-8445,-9236,-9802,-10135,-10245,-10172,-9971,-9683,-9343, -8994,-8648,-8294,-7899,-7416,-6822,-6096,-5226,-4253,-3255, -2278,-1330,-412,469,1315,2127,2909,3666,4414,5172, 5960,6771,7544,8233,8822,9302,9672,9939,10080,10036, 9779,9343,8786,8154,7474,6771,6063,5376,4742,4178, 3677,3202,2685,2076,1364,598,-129,-741,-1198,-1471, -1563,-1508,-1355,-1142,-905,-687,-526,-426,-363,-284, -151,45,283,515,691,778,774,694,568,407, 194,-99,-486,-947,-1444,-1945,-2442,-2908,-3318,-3632, -3832,-3925,-3927,-3844,-3684,-3428,-3040,-2509,-1866,-1144, -370,455,1349,2330,3408,4568,5740,6804,7655,8227, 8484,8441,8147,7644,7003,6319,5667,5100,4680,4429, 4295,4226,4188,4158,4106,4009,3844,3578,3190,2696, 2145,1591,1086,674,375,219,231,421,785,1289, 1832,2298,2603,2721,2665,2462,2136,1713,1220,669, 54,-641,-1436,-2341,-3369,-4532,-5838,-7252,-8711,-10124, -11400,-12463,-13237,-13658,-13694,-13345,-12640,-11656,-10526,-9391, -8331,-7360,-6468,-5626,-4791,-3951,-3079,-2143,-1112,16, 1240,2530,3803,4982,6011,6832,7383,7628,7582,7306, 6889,6420,5978,5601,5307,5097,4957,4858,4744,4575, 4322,3941,3385,2646,1756,790,-150,-972,-1603,-1980, -2076,-1921,-1608,-1241,-935,-785,-874,-1236,-1860,-2706, -3717,-4837,-5997,-7111,-8086,-8838,-9353,-9668,-9848,-9932, -9966,-9956,-9881,-9728,-9511,-9234,-8874,-8384,-7746,-6983, -6122,-5209,-4303,-3430,-2571,-1708,-855,-20,785,1567, 2365,3208,4090,4979,5848,6670,7426,8103,8697,9202, 9589,9802,9792,9560,9148,8620,8038,7465,6932,6439, 5964,5485,4979,4426,3800,3067,2224,1335,494,-214, -728,-1042,-1200,-1270,-1300,-1297,-1260,-1216,-1154,-1052, -914,-757,-574,-368,-155,42,222,381,511,609, 671,660,539,301,-36,-450,-903,-1371,-1837,-2300, -2776,-3256,-3686,-4009,-4200,-4254,-4183,-4020,-3826,-3605, -3318,-2930,-2418,-1758,-924,87,1270,2583,3928,5177, 6232,7031,7539,7766,7744,7516,7125,6625,6090,5581, 5166,4877,4701,4592,4522,4482,4443,4384,4279,4090, 3768,3291,2686,2018,1363,791,370,143,122,285, 590,979,1403,1816,2144,2332,2378,2324,2199,2021, 1799,1530,1193,770,260,-362,-1137,-2120,-3359,-4839, -6473,-8145,-9738,-11136,-12243,-12995,-13365,-13375,-13084,-12564, -11870,-11055,-10183,-9329,-8525,-7759,-7021,-6300,-5551,-4689, -3675,-2499,-1175,247,1693,3082,4323,5362,6154,6688, 6957,6993,6849,6594,6268,5934,5661,5490,5425,5438, 5490,5522,5438,5135,4572,3777,2816,1787,790,-86, -782,-1257,-1494,-1486,-1265,-912,-549,-300,-271,-504, -978,-1659,-2512,-3475,-4495,-5514,-6458,-7270,-7938,-8460, -8872,-9235,-9561,-9818,-9983,-10065,-10062,-9950,-9721,-9375, -8897,-8291,-7587,-6812,-5997,-5190,-4396,-3592,-2762,-1921, -1072,-234,575,1356,2150,3016,3965,4944,5902,6822, 7691,8452,9042,9419,9566,9479,9206,8842,8462,8120, 7841,7590,7309,6944,6452,5819,5061,4214,3328,2457, 1653,947,358,-107,-484,-806,-1062,-1249,-1351,-1354, -1284,-1193,-1109,-1046,-982,-876,-679,-409,-105,189, 418,561,640,682,689,631,471,209,-137,-569, -1079,-1637,-2214,-2771,-3245,-3593,-3819,-3949,-4033,-4111, -4203,-4288,-4321,-4238,-3986,-3522,-2824,-1895,-765,526, 1908,3268,4493,5510,6278,6787,7048,7092,6969,6717, 6365,5956,5555,5216,4969,4832,4794,4825,4872,4893, 4853,4710,4403,3903,3239,2490,1757,1129,655,352, 215,240,413,693,1027,1370,1677,1902,2011,2026, 1969,1874,1785,1746,1742,1714,1593,1308,790,-17, -1132,-2532,-4150,-5873,-7576,-9167,-10556,-11676,-12477,-12937, -13072,-12925,-12541,-11993,-11369,-10741,-10150,-9600,-9071,-8518, -7871,-7077,-6107,-4960,-3660,-2253,-795,654,2050,3359, 4521,5460,6095,6394,6416,6272,6066,5886,5789,5792, 5876,6017,6187,6319,6318,6115,5657,4929,3989,2941, 1890,930,128,-464,-813,-911,-789,-502,-155,126, 238,123,-217,-748,-1433,-2220,-3066,-3931,-4785,-5589, -6309,-6941,-7520,-8076,-8618,-9119,-9544,-9866,-10059,-10109, -10036,-9865,-9598,-9227,-8750,-8183,-7535,-6812,-6036,-5228, -4392,-3548,-2741,-1993,-1285,-578,171,998,1952,3052, 4249,5451,6556,7490,8199,8675,8933,9010,8972,8894, 8829,8804,8795,8735,8556,8215,7721,7121,6463,5763, 5023,4227,3384,2550,1783,1129,607,209,-111,-387, -617,-795,-922,-1003,-1033,-1013,-937,-804,-616,-386, -156,51,245,447,668,893,1096,1227,1233,1072, 754,320,-188,-727,-1253,-1725,-2132,-2476,-2770,-3025, -3267,-3524,-3816,-4152,-4475,-4696,-4728,-4520,-4056,-3332, -2358,-1177,129,1475,2787,3982,5002,5812,6402,6776, 6934,6885,6673,6355,6011,5713,5504,5414,5450,5583, 5722,5798,5780,5636,5330,4866,4268,3580,2854,2141, 1501,1011,730,647,740,973,1272,1562,1774,1876, 1881,1836,1800,1828,1944,2140,2372,2580,2700,2674, 2446,1961,1164,27,-1387,-2984,-4701,-6457,-8111,-9537, -10666,-11463,-11914,-12060,-12000,-11834,-11618,-11350,-11030,-10671, -10271,-9818,-9312,-8743,-8047,-7143,-5998,-4650,-3164,-1595, -13,1506,2880,4021,4868,5407,5677,5760,5756,5751, 5808,5970,6221,6514,6813,7083,7252,7234,6951,6360, 5496,4455,3354,2318,1443,759,282,32,19,190, 455,705,849,825,599,191,-347,-961,-1615,-2296, -3010,-3750,-4486,-5207,-5912,-6590,-7252,-7899,-8487,-8973, -9348,-9612,-9775,-9853,-9850,-9743,-9518,-9152,-8623,-7956, -7204,-6415,-5629,-4891,-4232,-3643,-3089,-2511,-1833,-972, 98,1333,2639,3903,5027,5964,6721,7338,7838,8236, 8532,8741,8890,9013,9108,9148,9109,8972,8719,8335, 7820,7185,6449,5641,4801,3987,3239,2571,1979,1446, 947,478,42,-331,-606,-758,-804,-799,-784,-771, -747,-692,-571,-375,-124,172,505,842,1156,1395, 1505,1439,1199,822,369,-90,-521,-901,-1228,-1527, -1824,-2136,-2491,-2915,-3398,-3912,-4417,-4852,-5138,-5203, -5020,-4590,-3915,-3017,-1933,-691,649,1992,3232,4311, 5186,5807,6151,6252,6182,6023,5838,5679,5583,5571, 5643,5779,5946,6106,6213,6218,6055,5685,5110,4369, 3552,2765,2093,1585,1258,1116,1119,1214,1344,1461, 1516,1498,1434,1369,1347,1412,1575,1824,2138,2488, 2852,3182,3373,3273,2801,1945,737,-735,-2353,-4019, -5647,-7179,-8545,-9669,-10509,-11077,-11417,-11572,-11597,-11536, -11425,-11298,-11165,-11008,-10812,-10532,-10088,-9407,-8450,-7213, -5737,-4135,-2511,-935,542,1847,2910,3696,4215,4522, 4709,4872,5085,5401,5818,6308,6807,7247,7573,7718, 7617,7221,6533,5604,4540,3477,2534,1770,1217,886, 749,753,843,965,1055,1053,920,646,271,-145, -594,-1099,-1684,-2359,-3103,-3866,-4614,-5329,-6013,-6666, -7283,-7864,-8411,-8913,-9362,-9763,-10094,-10282,-10252,-9973, -9471,-8825,-8131,-7490,-6962,-6519,-6083,-5611,-5084,-4460, -3698,-2790,-1754,-624,551,1726,2871,3924,4869,5701, 6416,7003,7468,7850,8184,8489,8777,9052,9279,9375, 9284,9011,8599,8077,7482,6853,6186,5481,4747,4002, 3264,2557,1909,1314,786,347,0,-257,-435,-571, -708,-857,-989,-1057,-1019,-856,-580,-223,174,590, 983,1280,1423,1412,1263,1000,676,353,63,-189, -413,-633,-889,-1224,-1649,-2156,-2719,-3319,-3930,-4512, -5008,-5377,-5572,-5540,-5240,-4650,-3763,-2628,-1346,-17, 1290,2502,3539,4351,4935,5308,5489,5503,5408,5298, 5245,5291,5451,5715,6048,6383,6648,6774,6688,6347, 5771,5049,4286,3571,2952,2450,2054,1767,1587,1517, 1527,1561,1563,1491,1337,1127,945,882,997,1295, 1740,2276,2848,3385,3786,3945,3802,3314,2483,1364, 24,-1469,-3045,-4625,-6130,-7481,-8622,-9508,-10124,-10511, -10752,-10923,-11078,-11247,-11422,-11571,-11671,-11690,-11549,-11158, -10460,-9442,-8145,-6628,-4999,-3365,-1819,-431,760,1725, 2463,3004,3404,3739,4107,4583,5182,5864,6578,7239, 7759,8077,8155,7944,7425,6646,5720,4762,3863,3100, 2507,2069,1757,1558,1463,1441,1446,1439,1381,1251, 1057,825,535,143,-384,-1044,-1785,-2536,-3221,-3811, -4348,-4897,-5506,-6192,-6960,-7766,-8552,-9228,-9705,-9949, -9973,-9814,-9513,-9118,-8695,-8300,-7958,-7641,-7308,-6919, -6449,-5873,-5192,-4423,-3548,-2528,-1382,-176,1014,2126, 3125,4002,4773,5465,6128,6786,7406,7965,8459,8876, 9192,9379,9435,9366,9181,8909,8568,8143,7613,6984, 6274,5503,4696,3913,3194,2557,2001,1517,1097,723, 380,51,-273,-593,-874,-1062,-1119,-1019,-765,-392, 44,480,855,1136,1301,1344,1282,1146,987,839, 698,549,379,177,-62,-333,-651,-1046,-1544,-2158, -2889,-3686,-4448,-5088,-5557,-5822,-5842,-5567,-4981,-4124, -3061,-1863,-607,643,1833,2885,3720,4290,4583,4660, 4623,4596,4668,4885,5229,5653,6099,6493,6796,6980, 7008,6847,6474,5911,5222,4510,3848,3285,2849,2545, 2348,2232,2155,2065,1907,1662,1341,1000,727,607, 679,931,1342,1887,2508,3121,3673,4119,4371,4323, 3924,3172,2113,813,-646,-2181,-3706,-5129,-6386,-7432, -8251,-8867,-9337,-9732,-10126,-10563,-11039,-11509,-11922,-12235, -12386,-12301,-11919,-11218,-10196,-8874,-7333,-5726,-4185,-2768, -1499,-420,448,1113,1633,2113,2659,3326,4125,5027, 5957,6808,7503,8003,8271,8262,7963,7423,6724,5951, 5177,4469,3852,3306,2808,2375,2041,1833,1755,1789, 1887,1953,1903,1703,1354,898,369,-197,-751,-1250, -1694,-2128,-2604,-3166,-3869,-4721,-5664,-6608,-7473,-8194, -8736,-9114,-9358,-9460,-9421,-9270,-9044,-8770,-8507,-8297, -8118,-7911,-7620,-7211,-6661,-5947,-5079,-4097,-3044,-1971, -921,88,1057,1985,2881,3754,4611,5446,6249,6983, 7629,8172,8610,8962,9236,9419,9510,9502,9381,9133, 8751,8224,7571,6835,6070,5318,4603,3951,3377,2863, 2375,1893,1399,879,337,-186,-630,-928,-1031,-954, -754,-480,-159,175,495,783,1007,1140,1185,1158, 1086,994,911,846,785,720,639,522,320,-5, -478,-1105,-1860,-2687,-3524,-4318,-5030,-5611,-6012,-6168, -6003,-5477,-4623,-3515,-2254,-963,234,1271,2122,2774, 3216,3478,3627,3763,3953,4239,4627,5099,5631,6169, 6636,6973,7153,7134,6869,6384,5772,5138,4565,4102, 3757,3507,3312,3115,2880,2608,2309,1964,1568,1156, 789,525,421,503,782,1236,1822,2489,3185,3849, 4397,4719,4714,4333,3600,2564,1302,-76,-1482,-2853, -4132,-5259,-6188,-6928,-7545,-8140,-8778,-9459,-10172,-10892, -11589,-12220,-12725,-13020,-13019,-12659,-11924,-10851,-9536,-8079, -6590,-5176,-3923,-2855,-1952,-1190,-521,117,797,1602, 2573,3659,4748,5750,6608,7261,7677,7873,7867,7694, 7373,6909,6300,5606,4876,4145,3461,2890,2491,2290, 2265,2344,2422,2406,2229,1919,1542,1157,791,462, 159,-152,-502,-910,-1393,-1966,-2642,-3427,-4313,-5261, -6199,-7068,-7819,-8413,-8825,-9072,-9184,-9191,-9147,-9097, -9071,-9069,-9052,-8973,-8786,-8451,-7945,-7301,-6571,-5771, -4904,-4000,-3085,-2158,-1205,-240,738,1727,2709,3657, 4537,5343,6078,6749,7372,7945,8434,8837,9167,9410, 9529,9497,9275,8850,8278,7631,6984,6370,5787,5226, 4678,4119,3516,2882,2233,1577,910,276,-265,-671, -917,-1012,-980,-835,-604,-326,-12,306,573,744, 802,765,693,656,685,764,860,935,948,880, 746,548,264,-151,-747,-1525,-2441,-3425,-4406,-5312, -6049,-6519,-6660,-6450,-5893,-5039,-3993,-2872,-1759,-719, 190,928,1494,1900,2170,2372,2603,2940,3421,4052, 4763,5461,6064,6506,6752,6799,6664,6373,5966,5503, 5057,4676,4378,4142,3924,3680,3398,3083,2735,2345, 1902,1422,915,448,112,-16,84,402,903,1554, 2314,3125,3883,4463,4768,4736,4341,3616,2655,1545, 351,-875,-2071,-3182,-4167,-5011,-5733,-6407,-7101,-7875, -8784,-9803,-10837,-11799,-12630,-13259,-13602,-13594,-13199,-12425, -11337,-10068,-8761,-7517,-6402,-5441,-4608,-3843,-3061,-2225, -1319,-333,747,1880,2987,4015,4934,5751,6482,7113, 7582,7822,7797,7492,6938,6226,5467,4755,4154,3694, 3368,3157,3013,2897,2781,2625,2410,2158,1884,1595, 1309,1054,833,622,384,96,-265,-724,-1301,-2028, -2901,-3874,-4858,-5773,-6568,-7213,-7703,-8071,-8352,-8578, -8796,-9018,-9238,-9438,-9568,-9575,-9440,-9184,-8827,-8379, -7840,-7219,-6525,-5776,-4980,-4141,-3251,-2307,-1316,-282, 767,1764,2669,3495,4279,5056,5843,6626,7384,8077, 8661,9093,9352,9446,9369,9125,8750,8317,7877,7445, 7005,6541,6022,5421,4762,4087,3408,2707,1976,1231, 508,-113,-567,-824,-896,-806,-610,-385,-185,-6, 165,314,423,490,521,543,585,661,758,867, 985,1104,1216,1282,1216,952,454,-266,-1177,-2219, -3322,-4388,-5319,-6038,-6507,-6684,-6520,-6005,-5194,-4198, -3146,-2152,-1293,-599,-60,351,666,947,1283,1752, 2379,3127,3915,4663,5321,5840,6193,6384,6431,6340, 6133,5849,5533,5235,4984,4782,4593,4384,4137,3845, 3506,3106,2626,2053,1412,762,195,-184,-297,-145, 247,843,1579,2384,3198,3938,4494,4773,4729,4358, 3692,2814,1819,790,-230,-1212,-2116,-2923,-3646,-4327, -5039,-5871,-6869,-8026,-9300,-10604,-11797,-12766,-13421,-13695, -13557,-13060,-12292,-11368,-10415,-9513,-8680,-7886,-7069,-6192, -5253,-4278,-3296,-2321,-1348,-361,684,1817,3011,4198, 5312,6271,6998,7442,7598,7483,7139,6658,6109,5557, 5052,4624,4267,3967,3712,3506,3320,3111,2854,2554, 2243,1952,1696,1494,1351,1246,1153,1029,810,436, -120,-858,-1727,-2644,-3529,-4340,-5064,-5709,-6289,-6819, -7305,-7751,-8163,-8558,-8943,-9302,-9582,-9732,-9743,-9621, -9394,-9114,-8794,-8412,-7938,-7364,-6684,-5912,-5071,-4169, -3208,-2225,-1269,-366,500,1360,2242,3173,4153,5151, 6103,6942,7639,8200,8628,8923,9090,9127,9030,8814, 8519,8202,7888,7570,7217,6797,6271,5618,4857,4028, 3161,2296,1493,807,264,-125,-365,-473,-477,-419, -319,-183,-15,158,300,375,369,307,252,277, 417,654,941,1236,1504,1707,1815,1762,1492,958, 163,-843,-1979,-3163,-4297,-5289,-6054,-6515,-6618,-6354, -5777,-5003,-4156,-3356,-2670,-2103,-1627,-1223,-850,-457, -5,537,1192,1952,2780,3599,4334,4937,5408,5754, 5978,6075,6051,5923,5716,5481,5271,5137,5075,5025, 4924,4730,4425,3997,3456,2815,2086,1312,582,-21, -408,-510,-301,165,819,1596,2433,3252,3961,4465, 4687,4602,4233,3637,2884,2041,1182,376,-327,-943, -1513,-2091,-2769,-3644,-4780,-6150,-7645,-9132,-10483,-11592, -12380,-12844,-13042,-13023,-12811,-12419,-11881,-11224,-10469,-9660, -8835,-8005,-7174,-6369,-5578,-4760,-3863,-2848,-1683,-391, 974,2347,3647,4798,5753,6473,6922,7100,7062,6867, 6564,6193,5792,5410,5080,4806,4577,4360,4117,3802, 3402,2973,2585,2279,2074,1987,1977,1970,1923,1816, 1621,1298,816,185,-549,-1329,-2099,-2825,-3490,-4109, -4726,-5360,-5993,-6603,-7183,-7734,-8243,-8690,-9053,-9320, -9507,-9606,-9628,-9599,-9511,-9321,-8998,-8529,-7924,-7226, -6477,-5710,-4955,-4197,-3395,-2540,-1654,-739,215,1208, 2230,3280,4333,5338,6256,7058,7713,8190,8501,8681, 8754,8746,8697,8632,8566,8476,8314,8020,7571,6969, 6245,5448,4615,3779,2960,2169,1427,802,352,73, -59,-70,-3,97,202,301,367,373,316,226, 157,159,254,464,773,1150,1546,1939,2296,2549, 2585,2308,1681,738,-419,-1678,-2927,-4051,-4960,-5598, -5939,-5978,-5730,-5271,-4713,-4152,-3656,-3236,-2863,-2483, -2069,-1616,-1122,-583,20,719,1513,2364,3217,4009, 4670,5168,5516,5740,5837,5826,5755,5669,5604,5592, 5637,5702,5734,5673,5485,5137,4622,3953,3156,2289, 1428,661,73,-282,-369,-162,326,1019,1828,2685, 3509,4193,4618,4721,4499,4027,3413,2785,2241,1827, 1501,1188,811,281,-468,-1453,-2651,-4003,-5417,-6806, -8121,-9331,-10398,-11280,-11969,-12440,-12648,-12584,-12285,-11806, -11211,-10561,-9919,-9300,-8706,-8126,-7520,-6814,-5956,-4932, -3750,-2440,-1063,342,1754,3126,4362,5364,6091,6541, 6751,6775,6688,6575,6454,6310,6148,5970,5751,5467, 5117,4701,4239,3775,3363,3044,2870,2836,2876,2912, 2898,2799,2598,2298,1900,1402,816,195,-413,-986, -1556,-2154,-2810,-3529,-4271,-4992,-5665,-6265,-6794,-7284, -7754,-8211,-8649,-9032,-9322,-9487,-9521,-9424,-9208,-8887, -8461,-7947,-7378,-6777,-6143,-5486,-4808,-4096,-3326,-2491, -1600,-645,409,1574,2798,3983,5046,5953,6688,7261, 7709,8079,8400,8680,8896,9045,9137,9182,9152,9022, 8777,8389,7851,7185,6419,5578,4686,3769,2884,2117, 1522,1114,874,739,668,638,631,643,670,676, 616,476,287,129,88,207,494,941,1510,2120, 2692,3158,3444,3434,3039,2248,1157,-86,-1332,-2465, -3422,-4170,-4703,-5005,-5087,-4992,-4771,-4466,-4144,-3850, -3580,-3296,-2982,-2622,-2213,-1737,-1166,-470,327,1188, 2087,2961,3741,4371,4843,5166,5360,5457,5503,5545, 5616,5740,5925,6138,6334,6441,6397,6163,5744,5159, 4439,3607,2688,1738,852,148,-267,-323,-3,639, 1490,2414,3259,3884,4221,4280,4122,3850,3571,3346, 3185,3062,2931,2738,2441,1993,1351,517,-476,-1615, -2872,-4211,-5594,-6983,-8324,-9559,-10613,-11403,-11886,-12088, -12080,-11923,-11653,-11294,-10874,-10436,-9993,-9541,-9074,-8568, -7942,-7125,-6093,-4851,-3432,-1912,-382,1096,2453,3617, 4545,5223,5679,5980,6201,6389,6550,6664,6695,6616, 6424,6132,5750,5290,4791,4308,3892,3590,3431,3398, 3426,3438,3390,3257,3031,2738,2411,2076,1728,1333, 861,322,-263,-869,-1491,-2151,-2843,-3534,-4193,-4820, -5432,-6046,-6663,-7278,-7869,-8403,-8837,-9150,-9358,-9476, -9487,-9354,-9069,-8665,-8175,-7656,-7173,-6736,-6301,-5805, -5200,-4473,-3623,-2638,-1526,-349,836,2008,3125,4125, 4980,5710,6351,6927,7441,7884,8252,8564,8844,9094, 9301,9427,9436,9273,8896,8331,7633,6847,6007,5136, 4254,3404,2645,2035,1595,1307,1135,1042,991,958, 926,852,693,431,101,-220,-435,-449,-213,281, 970,1748,2506,3143,3565,3692,3482,2949,2155,1151, 12,-1129,-2153,-3008,-3697,-4222,-4578,-4756,-4777,-4689, -4552,-4413,-4294,-4182,-4043,-3833,-3534,-3135,-2626,-2000, -1246,-376,563,1498,2347,3045,3566,3939,4209,4419, 4608,4806,5024,5269,5525,5785,6050,6309,6525,6635, 6563,6240,5603,4663,3523,2328,1220,346,-173,-286, -37,470,1123,1810,2424,2891,3186,3326,3369,3379, 3386,3401,3417,3403,3335,3227,3090,2896,2586,2097, 1384,433,-729,-2043,-3445,-4883,-6314,-7681,-8928,-10001, -10836,-11399,-11711,-11825,-11797,-11673,-11495,-11295,-11102,-10926, -10734,-10463,-10035,-9407,-8530,-7381,-6020,-4540,-3005,-1497, -108,1122,2188,3093,3852,4488,5034,5522,5978,6366, 6630,6719,6606,6311,5897,5440,5004,4610,4278,4022, 3851,3740,3656,3566,3452,3310,3145,2958,2764,2553, 2295,1947,1516,1040,548,47,-469,-1014,-1611,-2266, -2961,-3650,-4299,-4923,-5558,-6239,-6960,-7684,-8359,-8928, -9349,-9597,-9685,-9635,-9461,-9196,-8884,-8572,-8294,-8048, -7789,-7461,-7013,-6395,-5617,-4733,-3771,-2726,-1600,-420, 769,1908,2919,3777,4521,5184,5797,6385,6949,7475, 7952,8387,8791,9138,9365,9415,9267,8927,8430,7810, 7082,6270,5393,4492,3623,2852,2239,1815,1573,1468, 1438,1408,1306,1083,739,297,-179,-620,-941,-1057, -894,-434,252,1046,1844,2568,3134,3475,3545,3321, 2809,2042,1107,99,-906,-1839,-2643,-3300,-3808,-4168, -4397,-4517,-4577,-4621,-4685,-4767,-4851,-4885,-4796,-4532, -4081,-3461,-2704,-1859,-994,-165,604,1317,1972,2549, 3033,3402,3652,3810,3953,4166,4491,4941,5502,6123, 6698,7104,7230,6994,6381,5429,4247,3008,1909,1068, 520,268,272,450,745,1128,1553,1969,2329,2591, 2743,2824,2886,2950,3031,3130,3239,3352,3444,3485, 3422,3200,2773,2132,1250,129,-1161,-2553,-4011,-5487, -6906,-8196,-9280,-10098,-10641,-10960,-11139,-11243,-11334,-11451, -11591,-11706,-11751,-11694,-11474,-11026,-10326,-9376,-8190,-6818, -5392,-4019,-2729,-1512,-363,718,1751,2736,3666,4520, 5270,5874,6290,6494,6506,6370,6142,5877,5609,5333, 5042,4745,4468,4249,4105,4017,3947,3846,3700,3518, 3328,3133,2921,2677,2385,2038,1630,1164,667,172, -332,-866,-1433,-2003,-2583,-3208,-3913,-4703,-5574,-6466, -7292,-7977,-8483,-8813,-9015,-9127,-9167,-9136,-9039,-8902, -8746,-8587,-8434,-8260,-8006,-7616,-7071,-6362,-5510,-4543, -3483,-2360,-1210,-74,998,1958,2803,3566,4289,5003, 5717,6419,7088,7708,8265,8747,9154,9485,9701,9726, 9530,9124,8523,7749,6852,5894,4956,4132,3492,3061, 2823,2718,2644,2518,2284,1927,1456,897,301,-252, -678,-913,-899,-618,-92,624,1440,2250,2955,3487, 3805,3858,3633,3159,2471,1614,667,-267,-1117,-1830, -2375,-2761,-3044,-3308,-3605,-3941,-4300,-4636,-4887,-5016, -5008,-4872,-4614,-4232,-3707,-3054,-2295,-1456,-576,295, 1107,1802,2321,2634,2767,2813,2900,3160,3672,4423, 5312,6205,6973,7490,7688,7552,7099,6367,5437,4430, 3444,2548,1815,1304,1018,933,1013,1212,1493,1807, 2091,2307,2449,2535,2601,2693,2838,3033,3247,3460, 3667,3861,4015,4097,4042,3765,3204,2365,1265,-65, -1544,-3050,-4505,-5871,-7078,-8050,-8774,-9293,-9693,-10050, -10419,-10832,-11278,-11703,-12040,-12232,-12222,-11963,-11444,-10679, -9707,-8614,-7479,-6339,-5201,-4043,-2837,-1576,-296,954, 2125,3174,4083,4858,5498,5979,6288,6428,6413,6283, 6097,5888,5671,5446,5209,4982,4788,4638,4507,4373, 4219,4057,3917,3808,3702,3537,3269,2893,2449,2004, 1612,1270,938,579,169,-307,-862,-1513,-2255,-3074, -3964,-4888,-5774,-6568,-7242,-7781,-8161,-8412,-8585,-8701, -8754,-8754,-8727,-8716,-8727,-8723,-8658,-8474,-8117,-7575, -6868,-6017,-5065,-4062,-3041,-2018,-1002,-9,936,1830, 2684,3511,4307,5059,5772,6466,7160,7858,8543,9193, 9742,10102,10193,9988,9507,8805,7956,7048,6170,5397, 4782,4340,4052,3861,3708,3514,3215,2784,2223,1561, 847,165,-387,-741,-882,-811,-524,-12,689,1503, 2342,3110,3689,3983,3952,3624,3077,2394,1657,927, 244,-374,-923,-1418,-1890,-2361,-2839,-3315,-3758,-4146, -4466,-4724,-4944,-5132,-5236,-5190,-4942,-4437,-3653,-2660, -1608,-646,131,683,1017,1171,1239,1347,1596,2027, 2655,3472,4432,5421,6294,6959,7383,7528,7371,6932, 6262,5424,4498,3584,2781,2162,1738,1483,1362,1351, 1421,1556,1729,1909,2064,2171,2228,2276,2357,2490, 2684,2931,3243,3618,4022,4390,4643,4689,4444,3873, 2993,1855,535,-892,-2339,-3716,-4936,-5953,-6763,-7424, -8009,-8603,-9280,-10043,-10816,-11504,-12031,-12365,-12506,-12469, -12246,-11835,-11253,-10521,-9660,-8700,-7670,-6573,-5394,-4136, -2829,-1510,-219,1008,2148,3176,4080,4808,5330,5659, 5844,5933,5958,5958,5911,5787,5575,5303,5017,4766, 4579,4474,4428,4383,4303,4187,4016,3781,3501,3179, 2827,2469,2148,1894,1691,1477,1205,832,345,-251, -939,-1711,-2557,-3458,-4383,-5291,-6127,-6821,-7341,-7724, -8013,-8238,-8427,-8609,-8795,-8966,-9120,-9248,-9319,-9268, -9042,-8650,-8137,-7525,-6812,-6011,-5132,-4183,-3177,-2146, -1136,-190,689,1499,2251,2983,3739,4539,5408,6346, 7311,8228,9022,9618,9959,10017,9773,9251,8527,7713, 6922,6229,5679,5276,5001,4778,4536,4245,3885,3450, 2923,2290,1546,744,-22,-659,-1089,-1262,-1148,-754, -117,687,1547,2332,2953,3343,3477,3385,3136,2787, 2369,1884,1328,712,65,-576,-1155,-1634,-2027,-2393, -2788,-3259,-3818,-4438,-5070,-5630,-6012,-6126,-5937,-5447, -4704,-3800,-2860,-2011,-1338,-877,-600,-441,-306,-120, 167,590,1191,1986,2947,3997,5026,5927,6601,6991, 7096,6940,6555,5971,5244,4462,3702,3022,2449,1999, 1669,1468,1390,1408,1493,1611,1707,1751,1738,1690, 1652,1674,1791,2026,2389,2875,3454,4062,4606,4969, 5042,4739,4051,3060,1903,696,-493,-1632,-2700,-3693, -4620,-5486,-6324,-7173,-8062,-8984,-9896,-10719,-11406,-11943, -12345,-12607,-12723,-12663,-12421,-11997,-11415,-10715,-9926,-9048, -8039,-6879,-5586,-4208,-2802,-1454,-209,929,1951,2854, 3642,4314,4861,5276,5553,5703,5741,5679,5526,5324, 5108,4920,4787,4717,4691,4664,4587,4436,4223,3962, 3681,3394,3110,2837,2587,2374,2200,2059,1908,1690, 1362,901,308,-408,-1229,-2139,-3086,-4002,-4831,-5555, -6162,-6658,-7071,-7445,-7822,-8195,-8546,-8856,-9119,-9322, -9451,-9509,-9496,-9403,-9193,-8836,-8344,-7708,-6908,-5973, -4978,-3994,-3057,-2181,-1368,-616,94,804,1573,2446, 3448,4581,5794,6975,8008,8808,9330,9580,9565,9308, 8867,8320,7731,7152,6635,6209,5882,5633,5424,5213, 4962,4613,4116,3444,2600,1627,627,-238,-850,-1152, -1131,-840,-361,223,852,1476,2052,2557,2969,3260, 3377,3283,2987,2546,2009,1418,821,298,-99,-389, -639,-937,-1391,-2064,-2926,-3858,-4729,-5444,-5943,-6168, -6110,-5797,-5265,-4565,-3792,-3045,-2428,-1997,-1729,-1569, -1458,-1323,-1087,-692,-103,688,1644,2702,3772,4758, 5589,6223,6623,6788,6733,6460,5988,5357,4652,3958, 3328,2797,2384,2089,1878,1754,1741,1815,1882,1854, 1711,1479,1229,1068,1074,1280,1700,2301,3026,3797, 4494,4996,5216,5108,4693,4038,3235,2368,1468,538, -405,-1359,-2323,-3285,-4236,-5189,-6155,-7157,-8186,-9193, -10090,-10834,-11427,-11889,-12213,-12423,-12534,-12518,-12335,-11977, -11450,-10757,-9894,-8877,-7722,-6465,-5151,-3838,-2568,-1361, -214,895,1973,2974,3828,4491,4964,5277,5459,5536, 5539,5495,5422,5343,5286,5254,5232,5190,5117,4991, 4803,4567,4300,4006,3692,3404,3178,3026,2934,2891, 2873,2810,2621,2274,1770,1113,323,-544,-1412,-2233, -3001,-3712,-4364,-4985,-5600,-6181,-6696,-7128,-7501,-7855, -8207,-8546,-8855,-9116,-9321,-9449,-9477,-9371,-9096,-8612, -7934,-7107,-6189,-5266,-4425,-3694,-3051,-2456,-1848,-1159, -352,598,1712,2960,4270,5551,6726,7733,8518,9059, 9363,9441,9310,8992,8530,8001,7495,7091,6846,6752, 6744,6711,6547,6169,5551,4751,3827,2839,1873,1014, 330,-139,-397,-467,-361,-93,332,912,1612,2340, 2983,3444,3646,3584,3316,2936,2526,2137,1809,1570, 1396,1233,999,636,94,-638,-1532,-2528,-3541,-4446, -5145,-5583,-5747,-5645,-5295,-4761,-4135,-3520,-3006,-2659, -2482,-2399,-2308,-2163,-1937,-1601,-1126,-481,347,1351, 2451,3537,4517,5342,5996,6456,6714,6763,6589,6200, 5638,4974,4300,3702,3230,2902,2718,2642,2607,2563, 2452,2230,1882,1459,1062,794,737,935,1369,1972, 2674,3392,4061,4632,5036,5210,5137,4824,4322,3693, 3000,2294,1584,831,-1,-927,-1924,-2964,-4042,-5153, -6254,-7293,-8250,-9123,-9902,-10575,-11172,-11727,-12206,-12544, -12688,-12631,-12373,-11921,-11284,-10498,-9598,-8597,-7485,-6279, -5032,-3767,-2480,-1205,10,1142,2168,3058,3785,4340, 4739,5021,5210,5326,5386,5424,5459,5502,5545,5566, 5544,5461,5316,5078,4746,4362,3987,3678,3484,3426, 3466,3535,3561,3502,3343,3067,2674,2171,1567,875, 128,-637,-1396,-2133,-2849,-3554,-4245,-4891,-5473,-5987, -6432,-6833,-7235,-7681,-8161,-8653,-9128,-9519,-9763,-9816, -9653,-9274,-8708,-8025,-7288,-6557,-5888,-5328,-4846,-4362, -3803,-3124,-2305,-1364,-336,782,2015,3353,4731,6044, 7189,8086,8679,8955,8949,8732,8384,8009,7712,7557, 7544,7619,7685,7649,7447,7057,6484,5781,5010,4189, 3306,2389,1498,682,22,-401,-549,-415,-28,553, 1247,1953,2563,2994,3201,3193,3039,2833,2636,2485, 2393,2326,2257,2180,2068,1837,1388,679,-266,-1359, -2470,-3492,-4327,-4918,-5249,-5342,-5227,-4935,-4522,-4072, -3673,-3388,-3234,-3181,-3162,-3109,-2970,-2704,-2285,-1731, -1057,-236,733,1799,2870,3886,4813,5601,6188,6521, 6577,6357,5910,5326,4731,4239,3907,3728,3644,3573, 3447,3219,2901,2513,2066,1582,1111,738,540,567, 842,1331,1964,2667,3360,3965,4436,4756,4892,4840, 4657,4387,4042,3628,3131,2527,1804,960,6,-1022, -2070,-3099,-4114,-5128,-6136,-7127,-8087,-9012,-9903,-10729, -11438,-12003,-12406,-12637,-12688,-12569,-12277,-11816,-11198,-10447, -9572,-8561,-7407,-6148,-4840,-3521,-2228,-1003,134,1185, 2143,2973,3632,4111,4446,4687,4887,5091,5326,5573, 5785,5921,5949,5849,5631,5341,5010,4659,4336,4080, 3919,3865,3888,3937,3969,3954,3875,3718,3459,3109, 2691,2195,1598,900,124,-681,-1473,-2220,-2904,-3521, -4076,-4561,-4999,-5455,-5977,-6582,-7274,-8013,-8702,-9236, -9560,-9669,-9590,-9358,-9009,-8585,-8121,-7634,-7129,-6622, -6147,-5698,-5244,-4746,-4171,-3474,-2611,-1533,-238,1233, 2798,4334,5682,6719,7409,7794,7955,7990,7982,7976, 7991,8020,8045,8072,8102,8105,8026,7840,7538,7105, 6531,5794,4867,3780,2640,1572,690,89,-199,-205, 20,425,959,1539,2062,2451,2674,2724,2638,2511, 2434,2452,2565,2729,2894,2986,2966,2810,2454,1843, 990,-43,-1156,-2235,-3174,-3904,-4401,-4680,-4765,-4691, -4512,-4288,-4076,-3916,-3818,-3776,-3762,-3737,-3660,-3510, -3279,-2956,-2514,-1911,-1102,-63,1148,2404,3565,4535, 5252,5700,5891,5857,5656,5356,5028,4738,4529,4411, 4357,4305,4191,3966,3604,3105,2513,1902,1330,860, 551,470,626,978,1470,2041,2614,3132,3584,3968, 4275,4506,4654,4721,4683,4511,4185,3709,3114,2418, 1640,791,-113,-1045,-1997,-2980,-3995,-5042,-6116,-7197, -8259,-9263,-10156,-10913,-11553,-12083,-12476,-12717,-12803,-12708, -12409,-11915,-11252,-10456,-9557,-8537,-7369,-6082,-4722,-3344, -2018,-810,238,1120,1870,2516,3073,3569,4044,4514, 4965,5372,5699,5925,6011,5944,5749,5477,5176,4884, 4625,4417,4259,4154,4101,4084,4097,4116,4111,4063, 3969,3831,3617,3286,2784,2102,1302,472,-311,-1003, -1586,-2076,-2516,-2963,-3467,-4062,-4753,-5525,-6352,-7172, -7908,-8515,-8965,-9254,-9396,-9408,-9303,-9073,-8716,-8258, -7765,-7315,-6993,-6810,-6691,-6514,-6174,-5593,-4727,-3597, -2270,-797,746,2232,3552,4640,5501,6179,6726,7160, 7476,7671,7760,7788,7817,7898,8053,8261,8462,8565, 8499,8242,7776,7085,6184,5111,3924,2740,1687,886, 397,206,271,531,911,1326,1688,1937,2068,2109, 2076,2024,2030,2154,2402,2734,3086,3378,3545,3524, 3286,2812,2104,1177,114,-956,-1914,-2692,-3281,-3707, -4015,-4230,-4356,-4393,-4347,-4236,-4100,-4005,-3992,-4051, -4153,-4266,-4324,-4250,-3982,-3468,-2696,-1692,-507,757, 1969,3019,3861,4474,4853,5016,5027,4951,4847,4762, 4742,4800,4890,4936,4863,4632,4233,3682,3027,2326, 1671,1150,807,641,630,764,1019,1359,1747,2167, 2611,3064,3506,3912,4263,4540,4709,4741,4618,4347, 3951,3466,2919,2314,1634,859,-21,-989,-2005,-3038, -4082,-5141,-6229,-7343,-8435,-9446,-10356,-11133,-11751,-12227, -12583,-12809,-12895,-12833,-12595,-12152,-11490,-10617,-9560,-8361, -7054,-5697,-4357,-3120,-2044,-1122,-305,465,1226,1998, 2762,3484,4139,4716,5198,5544,5723,5752,5669,5509, 5311,5116,4931,4748,4554,4348,4160,4038,4007,4074, 4211,4364,4473,4473,4318,3990,3498,2876,2175,1473, 844,314,-134,-551,-1021,-1580,-2202,-2852,-3521,-4224, -4981,-5794,-6639,-7474,-8239,-8847,-9236,-9388,-9320,-9070, -8705,-8326,-8009,-7815,-7783,-7887,-7997,-7973,-7715,-7181, -6388,-5406,-4284,-3043,-1707,-318,1064,2363,3510,4476, 5260,5877,6338,6667,6894,7062,7224,7443,7737,8110, 8523,8890,9114,9109,8812,8216,7360,6316,5151,3958, 2853,1942,1302,962,888,989,1168,1348,1494,1597, 1643,1608,1530,1484,1541,1729,2069,2553,3091,3561, 3870,3961,3816,3430,2866,2182,1396,523,-383,-1248, -2030,-2710,-3274,-3693,-3950,-4055,-4044,-3968,-3897,-3902, -4013,-4217,-4493,-4797,-5044,-5146,-5038,-4674,-4054,-3198, -2130,-932,284,1405,2341,3041,3515,3812,3988,4108, 4242,4445,4712,4992,5215,5325,5292,5089,4705,4175, 3555,2901,2276,1740,1328,1041,853,745,723,809, 1020,1351,1782,2271,2771,3229,3625,3962,4235,4434, 4546,4558,4453,4211,3847,3395,2874,2280,1612,866, 16,-943,-1985,-3074,-4202,-5342,-6470,-7574,-8614,-9540, -10337,-11043,-11697,-12300,-12806,-13152,-13291,-13179,-12790,-12154, -11312,-10291,-9127,-7894,-6668,-5510,-4453,-3483,-2574,-1678, -758,199,1172,2110,2953,3671,4270,4754,5114,5359, 5507,5562,5535,5438,5259,4983,4647,4318,4078,3993, 4093,4326,4591,4805,4904,4855,4676,4390,4023,3590, 3116,2613,2100,1595,1110,632,156,-316,-784,-1268, -1806,-2453,-3265,-4254,-5355,-6443,-7378,-8069,-8486,-8646, -8607,-8469,-8304,-8179,-8133,-8169,-8269,-8406,-8551,-8644, -8595,-8341,-7859,-7150,-6240,-5161,-3943,-2616,-1222,182, 1507,2668,3622,4372,4946,5383,5720,6016,6321,6689, 7158,7741,8395,9025,9503,9724,9636,9233,8550,7628, 6540,5399,4302,3335,2584,2098,1871,1837,1884,1919, 1876,1732,1530,1323,1175,1148,1278,1560,1970,2469, 2989,3460,3820,4043,4125,4054,3812,3386,2777,2016, 1144,225,-673,-1487,-2157,-2647,-2967,-3143,-3206,-3209, -3232,-3336,-3542,-3853,-4257,-4710,-5147,-5473,-5595,-5425, -4936,-4171,-3201,-2129,-1059,-57,828,1556,2110,2526, 2875,3230,3638,4097,4571,5023,5403,5634,5682,5560, 5291,4918,4469,3961,3417,2852,2300,1808,1409,1126, 977,939,990,1137,1396,1757,2176,2620,3070,3495, 3879,4204,4460,4631,4699,4652,4509,4309,4055,3715, 3268,2695,1983,1124,141,-926,-2023,-3100,-4147,-5193, -6228,-7235,-8216,-9180,-10131,-11059,-11920,-12630,-13111,-13301, -13190,-12806,-12199,-11434,-10559,-9620,-8649,-7654,-6662,-5687, -4699,-3668,-2583,-1480,-434,520,1391,2203,2983,3746, 4469,5086,5533,5764,5783,5639,5381,5066,4760,4523, 4390,4391,4515,4709,4901,5031,5085,5091,5061,4985, 4834,4570,4171,3639,3044,2484,2029,1699,1479,1300, 1057,654,49,-752,-1715,-2788,-3913,-4995,-5950,-6696, -7200,-7487,-7618,-7656,-7680,-7725,-7800,-7911,-8072,-8283, -8525,-8760,-8931,-8971,-8810,-8435,-7833,-6989,-5923,-4683, -3322,-1894,-483,801,1874,2716,3359,3851,4263,4672, 5133,5684,6336,7087,7898,8698,9397,9893,10090,9935, 9433,8649,7673,6617,5602,4719,4023,3531,3209,2981, 2771,2532,2242,1912,1592,1326,1138,1060,1126,1327, 1634,2014,2448,2917,3397,3847,4210,4417,4412,4184, 3759,3168,2420,1541,613,-262,-1017,-1614,-2026,-2251, -2338,-2373,-2438,-2608,-2919,-3376,-3956,-4609,-5241,-5731, -5981,-5948,-5622,-5018,-4207,-3294,-2384,-1558,-851,-246, 311,881,1487,2106,2699,3258,3811,4346,4824,5205, 5468,5585,5549,5375,5071,4657,4164,3628,3076,2541, 2065,1662,1345,1120,981,928,986,1184,1515,1947, 2409,2840,3217,3545,3843,4099,4306,4470,4583,4636, 4622,4532,4306,3901,3318,2579,1729,815,-116,-1039, -1966,-2921,-3916,-4954,-6039,-7179,-8376,-9607,-10775,-11765, -12496,-12918,-13055,-12987,-12767,-12420,-11955,-11368,-10648,-9796, -8837,-7811,-6768,-5744,-4753,-3779,-2812,-1842,-850,197, 1302,2410,3419,4240,4826,5152,5249,5186,5054,4921, 4806,4701,4586,4470,4393,4401,4519,4746,5027,5269, 5392,5358,5172,4839,4382,3869,3383,2984,2701,2557, 2505,2453,2286,1922,1330,533,-411,-1442,-2506,-3554, -4537,-5401,-6089,-6570,-6865,-7044,-7184,-7322,-7462,-7613, -7807,-8062,-8379,-8749,-9134,-9463,-9642,-9600,-9292,-8704, -7839,-6718,-5417,-4040,-2684,-1418,-303,623,1349,1910, 2381,2843,3357,3978,4760,5725,6807,7884,8823,9508, 9866,9874,9561,8984,8242,7439,6664,5970,5362,4821, 4331,3881,3454,3043,2650,2271,1905,1557,1245,994, 856,871,1033,1315,1703,2176,2702,3248,3759,4176, 4440,4494,4301,3864,3213,2408,1530,670,-105,-728, -1155,-1393,-1483,-1501,-1571,-1813,-2264,-2904,-3676,-4472, -5181,-5719,-6041,-6121,-5972,-5624,-5118,-4505,-3841,-3178, -2546,-1936,-1338,-733,-113,534,1207,1876,2523,3161, 3789,4367,4837,5151,5302,5309,5188,4959,4644,4253, 3786,3256,2715,2198,1727,1327,1029,853,807,892, 1104,1397,1720,2047,2354,2636,2927,3253,3607,3962, 4288,4556,4754,4848,4790,4547,4113,3516,2825,2126, 1465,822,137,-661,-1614,-2720,-3947,-5250,-6569,-7852, -9054,-10137,-11065,-11814,-12371,-12751,-12963,-13005,-12857,-12505, -11941,-11195,-10344,-9491,-8701,-7959,-7196,-6355,-5383,-4255, -3012,-1735,-507,645,1710,2654,3442,4064,4517,4798, 4908,4884,4764,4586,4394,4232,4155,4221,4458,4809, 5177,5455,5570,5501,5261,4905,4504,4123,3800,3553, 3399,3334,3327,3328,3249,3010,2575,1922,1064,87, -925,-1932,-2913,-3835,-4650,-5315,-5821,-6178,-6410,-6553, -6665,-6811,-7045,-7376,-7814,-8342,-8910,-9449,-9887,-10137, -10133,-9847,-9279,-8427,-7300,-5982,-4610,-3319,-2203,-1298, -601,-70,377,839,1417,2194,3196,4363,5580,6755, 7794,8608,9148,9410,9406,9179,8785,8279,7719,7133, 6551,5996,5485,5004,4530,4051,3571,3098,2638,2204, 1804,1429,1097,856,762,853,1125,1549,2091,2715, 3365,3969,4463,4764,4791,4509,3946,3175,2325,1514, 838,347,40,-124,-216,-322,-517,-857,-1388,-2103, -2925,-3749,-4486,-5088,-5527,-5799,-5897,-5825,-5588,-5211, -4732,-4201,-3673,-3170,-2666,-2132,-1551,-920,-243,480, 1239,1990,2702,3371,3975,4463,4822,5071,5222,5263, 5182,4964,4606,4104,3510,2914,2376,1914,1540,1270, 1115,1076,1145,1276,1426,1562,1697,1877,2137,2504, 2977,3519,4044,4470,4755,4884,4864,4716,4485,4187, 3838,3463,3075,2642,2096,1382,478,-596,-1795,-3028, -4225,-5387,-6567,-7782,-9006,-10180,-11211,-12009,-12509,-12709, -12685,-12505,-12211,-11840,-11414,-10933,-10390,-9795,-9130,-8332, -7373,-6279,-5118,-3926,-2711,-1493,-290,894,2033,3036, 3814,4321,4559,4573,4445,4281,4149,4098,4162,4353, 4654,5008,5353,5621,5745,5698,5486,5165,4810,4492, 4254,4118,4072,4084,4128,4163,4131,3986,3710,3280, 2683,1916,988,-51,-1112,-2127,-3038,-3801,-4406,-4872, -5200,-5409,-5559,-5720,-5949,-6274,-6728,-7325,-8024,-8764, -9477,-10064,-10422,-10456,-10108,-9398,-8407,-7236,-6015,-4868, -3888,-3120,-2537,-2038,-1525,-931,-221,631,1652,2824, 4075,5322,6471,7448,8214,8749,9054,9157,9089,8877, 8554,8138,7661,7165,6673,6204,5753,5294,4806,4290, 3765,3256,2762,2268,1768,1287,902,697,731,1024, 1556,2263,3073,3862,4504,4904,5020,4830,4364,3721, 3025,2398,1908,1570,1355,1212,1077,891,621,232, -294,-957,-1736,-2566,-3363,-4071,-4664,-5120,-5419,-5552, -5529,-5370,-5112,-4811,-4499,-4166,-3783,-3317,-2765,-2143, -1481,-801,-113,594,1326,2059,2779,3453,4056,4569, 4979,5265,5402,5367,5143,4733,4195,3606,3054,2599, 2260,2021,1823,1632,1460,1324,1214,1133,1129,1247, 1516,1926,2456,3055,3622,4042,4290,4406,4466,4524, 4593,4645,4639,4520,4254,3852,3346,2762,2112,1381, 537,-451,-1585,-2845,-4210,-5632,-7041,-8355,-9508,-10434, -11114,-11587,-11915,-12132,-12256,-12272,-12169,-11916,-11513,-11014, -10469,-9886,-9238,-8463,-7527,-6432,-5198,-3849,-2436,-1025, 309,1494,2464,3161,3581,3767,3785,3729,3689,3742, 3920,4212,4577,4957,5274,5474,5554,5524,5394,5186, 4930,4672,4466,4335,4282,4298,4382,4489,4578,4614, 4532,4263,3792,3148,2362,1455,458,-578,-1563,-2440, -3182,-3785,-4227,-4507,-4657,-4750,-4873,-5122,-5571,-6254, -7147,-8161,-9134,-9917,-10438,-10641,-10483,-9995,-9263,-8374, -7416,-6495,-5690,-5031,-4491,-4000,-3493,-2895,-2157,-1270, -252,869,2073,3328,4577,5727,6711,7495,8058,8424, 8641,8725,8675,8492,8190,7801,7368,6925,6500,6110, 5737,5346,4910,4402,3802,3102,2329,1551,877,437, 311,523,1033,1745,2544,3311,3947,4387,4590,4531, 4236,3803,3343,2924,2569,2284,2081,1945,1825,1694, 1516,1211,708,33,-746,-1580,-2413,-3186,-3850,-4387, -4819,-5158,-5395,-5523,-5525,-5420,-5248,-5035,-4769,-4426, -3983,-3452,-2868,-2264,-1653,-1041,-411,271,1040,1897, 2775,3583,4246,4727,5008,5092,4995,4736,4360,3943, 3563,3261,3019,2785,2506,2136,1690,1242,906,744, 766,937,1212,1551,1897,2233,2571,2928,3288,3631, 3945,4226,4462,4613,4653,4589,4445,4247,4037,3823, 3552,3131,2482,1589,479,-793,-2144,-3512,-4862,-6166, -7390,-8502,-9485,-10321,-11009,-11546,-11920,-12129,-12196,-12160, -12046,-11876,-11657,-11370,-10985,-10469,-9788,-8901,-7777,-6400, -4849,-3268,-1784,-472,623,1464,2051,2436,2688,2864, 3034,3250,3524,3845,4204,4576,4920,5188,5355,5390, 5300,5135,4928,4694,4467,4310,4260,4317,4469,4671, 4851,4958,4969,4879,4660,4276,3706,2948,2011,951, -138,-1156,-2030,-2684,-3081,-3273,-3368,-3446,-3581,-3863, -4380,-5160,-6138,-7221,-8295,-9225,-9900,-10270,-10340,-10126, -9677,-9094,-8442,-7757,-7103,-6544,-6078,-5664,-5226,-4692, -4015,-3180,-2210,-1126,44,1270,2513,3726,4855,5857, 6708,7405,7957,8340,8527,8516,8330,8032,7714,7450, 7249,7070,6878,6634,6274,5745,5040,4176,3201,2217, 1377,806,554,623,977,1534,2190,2850,3435,3902, 4205,4305,4200,3936,3593,3262,3011,2860,2779,2734, 2681,2581,2405,2125,1720,1173,484,-308,-1124,-1894, -2589,-3199,-3731,-4222,-4681,-5076,-5357,-5503,-5501,-5386, -5193,-4943,-4641,-4289,-3896,-3473,-3026,-2540,-1980,-1316, -493,485,1527,2516,3340,3914,4242,4402,4472,4497, 4496,4453,4343,4143,3853,3480,3027,2527,2033,1610, 1300,1109,1028,1022,1054,1125,1259,1487,1831,2267, 2740,3183,3546,3807,3985,4114,4227,4347,4478,4619, 4730,4745,4627,4351,3894,3243,2386,1352,186,-1065, -2381,-3718,-5040,-6318,-7513,-8586,-9497,-10226,-10778,-11167, -11445,-11659,-11839,-12007,-12152,-12232,-12191,-11961,-11478,-10724, -9708,-8452,-7024,-5527,-4039,-2638,-1413,-408,388,1011, 1504,1900,2236,2565,2921,3310,3738,4203,4649,5006, 5233,5315,5267,5129,4962,4798,4643,4520,4446,4428, 4479,4623,4866,5153,5415,5576,5588,5394,4965,4284, 3376,2301,1169,116,-753,-1370,-1732,-1900,-1968,-2043, -2228,-2587,-3147,-3915,-4870,-5954,-7062,-8069,-8882,-9443, -9741,-9794,-9640,-9327,-8919,-8479,-8054,-7680,-7352,-7028, -6642,-6147,-5550,-4845,-4015,-3067,-2027,-908,288,1560, 2864,4121,5256,6225,6985,7520,7825,7930,7902,7817, 7743,7753,7853,7961,7976,7827,7486,6940,6192,5280, 4277,3271,2341,1582,1084,908,1054,1454,1986,2548, 3063,3481,3776,3934,3948,3840,3654,3451,3300,3245, 3274,3334,3362,3312,3169,2918,2556,2111,1598,1001, 312,-430,-1162,-1857,-2528,-3186,-3816,-4390,-4867,-5180, -5290,-5235,-5100,-4959,-4869,-4826,-4772,-4642,-4378,-3942, -3330,-2560,-1671,-720,217,1076,1805,2411,2933,3423, 3891,4306,4609,4758,4739,4560,4266,3913,3540,3171, 2816,2455,2071,1681,1319,1030,874,877,1016,1253, 1566,1913,2254,2573,2848,3071,3271,3498,3758,4045, 4344,4633,4882,5060,5133,5076,4863,4485,3956,3277, 2417,1343,77,-1298,-2713,-4111,-5427,-6595,-7578,-8394, -9066,-9626,-10114,-10587,-11081,-11607,-12123,-12552,-12824,-12877, -12658,-12146,-11360,-10351,-9163,-7821,-6381,-4946,-3621,-2456, -1476,-687,-58,484,1004,1541,2096,2645,3167,3656, 4102,4483,4789,5006,5119,5120,5033,4893,4712,4514, 4328,4206,4206,4366,4698,5162,5649,6038,6239,6193, 5859,5236,4371,3357,2304,1326,513,-77,-437,-625, -717,-807,-990,-1331,-1863,-2604,-3545,-4630,-5751,-6796, -7675,-8346,-8806,-9068,-9181,-9179,-9079,-8903,-8699,-8482, -8253,-7987,-7659,-7259,-6802,-6298,-5728,-5065,-4265,-3266, -2049,-662,800,2235,3537,4618,5448,6058,6501,6814, 7030,7205,7404,7660,7963,8269,8504,8573,8397,7949, 7253,6370,5373,4343,3360,2496,1824,1415,1332,1536, 1900,2320,2704,2998,3206,3350,3426,3433,3395,3350, 3331,3353,3432,3556,3653,3645,3519,3307,3049,2770, 2450,2076,1613,1029,312,-520,-1417,-2293,-3061,-3681, -4132,-4406,-4551,-4660,-4810,-5021,-5266,-5483,-5609,-5568, -5326,-4898,-4334,-3680,-2985,-2291,-1602,-882,-103,716, 1525,2265,2903,3418,3806,4073,4235,4302,4292,4207, 4030,3759,3386,2929,2430,1934,1484,1126,908,842, 894,1023,1198,1390,1585,1776,1965,2178,2437,2719, 3011,3324,3669,4019,4353,4663,4926,5119,5222,5207, 5022,4630,4002,3130,2027,723,-709,-2134,-3434,-4567, -5549,-6399,-7172,-7913,-8640,-9358,-10088,-10827,-11562,-12268, -12891,-13329,-13491,-13329,-12844,-12078,-11088,-9939,-8676,-7368, -6105,-4947,-3913,-2988,-2142,-1360,-617,94,761,1367, 1930,2489,3046,3577,4058,4466,4762,4903,4879,4712, 4447,4139,3851,3674,3696,3940,4378,4938,5528,6037, 6376,6471,6274,5790,5068,4179,3209,2284,1509,943, 597,434,364,285,118,-204,-732,-1465,-2371,-3381, -4417,-5410,-6293,-7032,-7637,-8141,-8567,-8898,-9097,-9154, -9079,-8907,-8685,-8476,-8325,-8221,-8097,-7901,-7577,-7067, -6345,-5419,-4288,-2957,-1484,9,1377,2537,3465,4173, 4717,5183,5620,6061,6524,7011,7512,8017,8484,8818, 8891,8642,8086,7289,6339,5330,4352,3477,2755,2235, 1957,1916,2064,2309,2552,2727,2830,2887,2936,2998, 3085,3211,3353,3484,3582,3626,3620,3591,3571,3571, 3583,3572,3491,3269,2854,2230,1430,526,-363,-1138, -1774,-2282,-2705,-3096,-3507,-3949,-4414,-4858,-5214,-5447, -5565,-5582,-5503,-5327,-5056,-4697,-4239,-3669,-2990,-2229, -1418,-601,187,935,1629,2255,2817,3320,3762,4137, 4412,4537,4495,4298,3963,3527,3039,2554,2128,1792, 1547,1382,1280,1244,1259,1311,1388,1481,1596,1762, 1982,2238,2513,2793,3067,3358,3710,4146,4632,5122, 5556,5846,5916,5733,5297,4625,3739,2674,1486,227, -1035,-2213,-3237,-4118,-4922,-5700,-6483,-7310,-8199,-9152, -10143,-11129,-12033,-12763,-13234,-13397,-13239,-12788,-12107,-11261, -10306,-9267,-8152,-7014,-5908,-4855,-3864,-2958,-2122,-1342, -616,51,705,1401,2162,2942,3673,4283,4714,4946, 4964,4785,4481,4134,3832,3651,3654,3892,4348,4967, 5653,6289,6758,6972,6906,6570,5981,5197,4329,3510, 2826,2337,2056,1930,1875,1782,1554,1155,619,-10, -716,-1508,-2391,-3333,-4283,-5199,-6044,-6779,-7371,-7832, -8160,-8340,-8386,-8342,-8276,-8247,-8293,-8416,-8563,-8630, -8529,-8208,-7632,-6810,-5791,-4603,-3271,-1870,-518,689, 1692,2487,3134,3711,4291,4909,5582,6308,7069,7824, 8508,9037,9333,9339,9026,8415,7586,6646,5696,4836, 4135,3607,3247,3018,2879,2795,2752,2726,2727,2774, 2899,3091,3309,3493,3598,3610,3559,3508,3522,3634, 3860,4157,4418,4533,4441,4144,3685,3101,2463,1825, 1202,587,-12,-600,-1198,-1812,-2409,-2962,-3472,-3943, -4359,-4710,-5008,-5261,-5439,-5510,-5455,-5275,-4951,-4470, -3877,-3236,-2573,-1897,-1225,-548,162,916,1681,2418, 3105,3697,4154,4455,4580,4534,4339,4017,3623,3230, 2872,2559,2278,2013,1762,1548,1409,1364,1411,1504, 1601,1686,1756,1825,1919,2078,2315,2627,3032,3539, 4138,4789,5410,5916,6246,6355,6201,5785,5135,4280, 3263,2157,1044,3,-929,-1767,-2551,-3334,-4164,-5087, -6119,-7247,-8438,-9635,-10746,-11696,-12433,-12919,-13151,-13147, -12918,-12468,-11807,-10967,-9990,-8924,-7823,-6758,-5787,-4906, -4080,-3286,-2511,-1728,-907,-34,902,1877,2814,3612, 4199,4541,4625,4486,4197,3859,3542,3333,3301,3496, 3944,4615,5398,6153,6719,7000,6959,6643,6138,5546, 4926,4328,3802,3369,3039,2807,2648,2501,2297,2004, 1621,1154,602,-42,-795,-1690,-2722,-3796,-4794,-5652, -6345,-6870,-7252,-7501,-7654,-7768,-7892,-8052,-8284,-8610, -8969,-9258,-9387,-9310,-8981,-8359,-7453,-6348,-5135,-3883, -2647,-1501,-503,340,1060,1710,2349,3052,3870,4799, 5794,6805,7748,8519,9018,9192,9048,8620,7983,7258, 6547,5905,5320,4777,4252,3744,3276,2889,2630,2524, 2568,2715,2895,3022,3053,3005,2915,2848,2857,2969, 3195,3505,3845,4141,4342,4421,4379,4223,3962,3616, 3213,2768,2272,1712,1093,443,-205,-823,-1400,-1954, -2508,-3065,-3632,-4191,-4712,-5161,-5511,-5733,-5809,-5748, -5589,-5340,-4995,-4565,-4087,-3588,-3061,-2463,-1765,-959, -76,825,1672,2406,2990,3425,3732,3925,3987,3911, 3721,3455,3136,2779,2422,2100,1826,1606,1455,1376, 1357,1360,1342,1292,1232,1190,1170,1191,1296,1520, 1878,2384,3030,3772,4542,5260,5838,6215,6332,6158, 5705,5034,4211,3308,2413,1593,850,144,-559,-1325, -2204,-3200,-4278,-5415,-6611,-7840,-9057,-10213,-11263,-12159, -12835,-13252,-13406,-13314,-12976,-12393,-11609,-10710,-9760,-8816, -7933,-7140,-6396,-5642,-4836,-3960,-3005,-1976,-875,262, 1382,2409,3248,3803,4015,3892,3544,3125,2792,2640, 2690,2958,3451,4125,4872,5575,6134,6466,6541,6392, 6092,5729,5335,4907,4476,4058,3661,3321,3075,2920, 2812,2701,2537,2266,1842,1257,526,-336,-1314,-2361, -3395,-4355,-5155,-5755,-6168,-6460,-6700,-6943,-7227,-7582, -8021,-8538,-9082,-9564,-9906,-10050,-9946,-9560,-8893,-7973, -6879,-5723,-4588,-3538,-2627,-1867,-1229,-627,49,880, 1897,3072,4327,5544,6601,7426,8008,8339,8449,8385, 8218,7961,7580,7051,6398,5669,4935,4271,3743,3386, 3187,3105,3089,3077,3020,2896,2730,2577,2489,2485, 2575,2757,3017,3323,3616,3866,4063,4220,4336,4391, 4347,4178,3890,3506,3064,2582,2071,1538,987,422, -147,-717,-1301,-1925,-2609,-3332,-4030,-4630,-5084,-5381, -5541,-5614,-5643,-5635,-5565,-5415,-5190,-4878,-4452,-3897, -3219,-2441,-1604,-745,95,905,1660,2334,2900,3343, 3640,3771,3745,3587,3329,3021,2709,2425,2174,1964, 1808,1711,1646,1585,1502,1384,1218,1021,832,687, 611,659,890,1330,1986,2816,3725,4601,5332,5836, 6080,6078,5862,5479,4973,4380,3740,3091,2461,1853, 1236,550,-231,-1098,-2068,-3154,-4322,-5541,-6819,-8157, -9506,-10761,-11824,-12621,-13108,-13290,-13227,-12962,-12507,-11877, -11128,-10349,-9614,-8952,-8354,-7755,-7082,-6256,-5250,-4082, -2787,-1428,-78,1161,2165,2834,3136,3115,2882,2567, 2306,2224,2372,2705,3169,3724,4332,4934,5482,5931, 6238,6369,6318,6131,5857,5508,5091,4656,4266,3943, 3709,3581,3545,3556,3546,3431,3135,2646,1977,1139, 168,-857,-1862,-2782,-3568,-4207,-4690,-5042,-5331,-5635, -6010,-6486,-7063,-7729,-8463,-9195,-9820,-10243,-10394,-10228, -9732,-8951,-7986,-6980,-6054,-5272,-4635,-4082,-3508,-2812, -1954,-945,180,1388,2611,3758,4788,5716,6558,7286, 7867,8276,8484,8454,8180,7708,7100,6424,5760,5190, 4751,4441,4207,3988,3744,3476,3216,2995,2817,2666, 2554,2509,2538,2634,2805,3055,3357,3661,3941,4201, 4430,4593,4651,4584,4394,4105,3761,3403,3050,2691, 2302,1857,1344,749,74,-661,-1424,-2170,-2859,-3470, -3993,-4430,-4785,-5083,-5336,-5537,-5662,-5685,-5607,-5440, -5181,-4805,-4314,-3720,-3020,-2222,-1362,-485,374,1196, 1951,2589,3084,3418,3591,3610,3516,3345,3132,2904, 2679,2465,2303,2225,2214,2207,2148,1992,1720,1339, 895,478,204,140,303,694,1304,2089,2967,3842, 4629,5250,5660,5853,5869,5762,5559,5243,4817,4318, 3773,3223,2708,2213,1674,1032,249,-675,-1737,-2940, -4269,-5689,-7157,-8608,-9946,-11075,-11940,-12517,-12776,-12748, -12518,-12148,-11681,-11180,-10714,-10326,-9994,-9622,-9107,-8358, -7326,-6028,-4531,-2973,-1495,-200,835,1572,2032,2245, 2256,2169,2078,2052,2148,2398,2778,3258,3810,4404, 4993,5546,6021,6356,6511,6488,6310,6003,5613,5200, 4815,4505,4309,4246,4312,4435,4529,4514,4332,3959, 3393,2646,1759,796,-170,-1079,-1879,-2547,-3062,-3436, -3722,-3987,-4336,-4859,-5595,-6516,-7533,-8536,-9384,-9929, -10121,-9990,-9626,-9120,-8552,-7967,-7420,-6905,-6374,-5782, -5104,-4326,-3447,-2509,-1532,-531,495,1580,2756,3993, 5193,6275,7171,7811,8175,8304,8237,8003,7647,7225, 6769,6309,5887,5527,5203,4878,4544,4211,3886,3576, 3297,3061,2868,2704,2592,2560,2637,2830,3129,3487, 3859,4202,4478,4653,4713,4676,4576,4434,4281,4133, 3971,3755,3457,3057,2563,1984,1335,643,-65,-777, -1474,-2146,-2775,-3340,-3842,-4297,-4711,-5067,-5343,-5535, -5648,-5692,-5656,-5524,-5286,-4906,-4365,-3668,-2868,-2013, -1143,-277,571,1374,2090,2668,3070,3282,3304,3181, 2989,2821,2723,2686,2674,2682,2710,2725,2669,2474, 2105,1574,962,400,-5,-194,-145,134,598,1200, 1919,2723,3538,4282,4888,5314,5551,5625,5579,5436, 5201,4879,4510,4132,3767,3418,3056,2637,2105,1414, 548,-506,-1742,-3148,-4708,-6352,-7947,-9379,-10561,-11415, -11906,-12085,-12051,-11912,-11772,-11695,-11688,-11693,-11630,-11425, -11014,-10344,-9370,-8102,-6634,-5105,-3623,-2256,-1084,-168, 497,955,1226,1349,1398,1445,1538,1699,1953,2342, 2871,3484,4139,4794,5391,5874,6193,6317,6236,5976, 5611,5230,4897,4655,4525,4514,4600,4737,4877,4979, 4974,4799,4405,3778,2944,1961,929,-30,-805,-1345, -1663,-1844,-2020,-2316,-2823,-3586,-4561,-5655,-6758,-7760, -8550,-9083,-9379,-9499,-9503,-9432,-9286,-9055,-8714,-8245, -7684,-7093,-6501,-5908,-5277,-4573,-3774,-2863,-1829,-684, 561,1883,3221,4483,5573,6437,7059,7458,7664,7720, 7653,7481,7230,6916,6571,6216,5865,5529,5205,4887, 4556,4198,3815,3431,3057,2722,2475,2367,2405,2582, 2877,3231,3567,3845,4066,4240,4368,4448,4495,4525, 4544,4542,4500,4392,4189,3867,3455,2979,2448,1856, 1212,531,-173,-894,-1598,-2244,-2806,-3304,-3779,-4256, -4725,-5147,-5490,-5732,-5861,-5888,-5838,-5703,-5438,-5007, -4409,-3664,-2800,-1872,-941,-41,812,1571,2143,2470, 2585,2571,2514,2473,2517,2670,2876,3050,3158,3179, 3087,2860,2497,2006,1407,770,205,-190,-379,-354, -116,339,971,1706,2486,3261,3965,4535,4941,5192, 5309,5315,5228,5071,4881,4660,4405,4164,3971,3802, 3595,3262,2716,1883,731,-708,-2336,-4042,-5717,-7258, -8542,-9499,-10154,-10579,-10870,-11111,-11367,-11669,-12013,-12334, -12547,-12579,-12353,-11824,-11007,-9937,-8654,-7228,-5771,-4371, -3080,-1947,-1024,-320,185,523,722,828,897,995, 1186,1523,2029,2695,3459,4222,4901,5448,5832,6043, 6097,6018,5818,5526,5198,4897,4694,4646,4774,5061, 5429,5757,5928,5849,5467,4787,3879,2884,1957,1212, 699,390,206,25,-261,-730,-1386,-2191,-3110,-4097, -5092,-6038,-6891,-7625,-8227,-8698,-9040,-9236,-9275,-9170, -8949,-8644,-8284,-7900,-7509,-7109,-6672,-6149,-5498,-4690, -3710,-2572,-1318,-9,1308,2594,3794,4858,5747,6455, 6985,7344,7536,7572,7480,7307,7094,6881,6689,6503, 6282,5987,5602,5144,4645,4133,3651,3242,2945,2770, 2731,2825,3005,3226,3449,3663,3849,4014,4189,4380, 4565,4697,4764,4797,4828,4852,4837,4744,4522,4142, 3639,3089,2522,1937,1312,652,-29,-713,-1367,-1971, -2534,-3080,-3623,-4157,-4644,-5043,-5357,-5606,-5799,-5930, -5967,-5849,-5499,-4902,-4098,-3162,-2182,-1223,-346,394, 969,1385,1668,1845,1966,2104,2295,2558,2869,3191, 3460,3607,3594,3419,3107,2667,2110,1469,813,228, -196,-388,-343,-105,305,877,1559,2277,2987,3661, 4258,4727,5028,5156,5134,4999,4820,4656,4570,4593, 4714,4875,4982,4914,4572,3897,2880,1545,-11,-1663, -3279,-4739,-5993,-7043,-7908,-8615,-9219,-9794,-10402,-11052, -11701,-12293,-12771,-13078,-13153,-12942,-12430,-11641,-10626,-9428, -8090,-6679,-5270,-3941,-2762,-1806,-1110,-665,-406,-246, -104,75,328,685,1159,1750,2443,3201,3960,4662, 5260,5690,5902,5894,5679,5305,4863,4502,4353,4471, 4836,5347,5855,6216,6318,6112,5640,4997,4273,3544, 2899,2385,2002,1698,1421,1133,792,346,-235,-924, -1698,-2549,-3471,-4445,-5453,-6431,-7292,-7987,-8509,-8864, -9057,-9114,-9057,-8929,-8788,-8668,-8555,-8387,-8121,-7716, -7171,-6484,-5671,-4721,-3622,-2408,-1135,172,1499,2761, 3872,4796,5547,6117,6508,6757,6906,6979,6999,7005, 7001,6958,6823,6562,6164,5654,5090,4543,4061,3643, 3279,2976,2765,2676,2704,2830,3011,3196,3348,3475, 3621,3797,3996,4202,4387,4537,4661,4757,4820,4838, 4761,4550,4214,3788,3318,2830,2312,1745,1125,447, -261,-956,-1587,-2147,-2657,-3156,-3676,-4221,-4795,-5366, -5880,-6280,-6528,-6596,-6445,-6052,-5420,-4609,-3709,-2817, -2000,-1291,-687,-185,210,519,798,1098,1438,1812, 2235,2688,3107,3425,3594,3575,3345,2937,2410,1811, 1186,587,59,-352,-602,-666,-533,-187,362,1068, 1861,2659,3376,3930,4256,4352,4290,4161,4047,4026, 4156,4437,4831,5259,5602,5746,5593,5102,4281,3179, 1848,389,-1068,-2426,-3651,-4726,-5664,-6539,-7416,-8308, -9191,-10052,-10888,-11672,-12385,-13000,-13453,-13669,-13603,-13221, -12522,-11536,-10313,-8923,-7487,-6120,-4897,-3856,-3008,-2346, -1841,-1465,-1184,-964,-777,-566,-233,296,1027,1941, 2963,3936,4719,5218,5391,5266,4942,4563,4269,4137, 4220,4527,4987,5477,5891,6151,6205,6048,5727,5299, 4804,4293,3805,3367,2988,2659,2356,2064,1768,1434, 1028,522,-109,-885,-1803,-2821,-3890,-4944,-5919,-6752, -7404,-7888,-8250,-8527,-8736,-8876,-8962,-9008,-9019,-8980, -8893,-8741,-8459,-7991,-7353,-6586,-5691,-4642,-3428,-2080, -686,648,1842,2871,3730,4434,5042,5596,6083,6475, 6767,6961,7072,7125,7117,6999,6739,6344,5841,5299, 4760,4270,3850,3497,3208,3007,2905,2896,2951,3035, 3122,3210,3307,3438,3627,3877,4157,4429,4664,4832, 4914,4950,4971,4943,4827,4605,4283,3874,3385,2828, 2224,1586,948,345,-204,-719,-1222,-1737,-2307,-2973, -3725,-4504,-5239,-5879,-6364,-6630,-6652,-6441,-6037,-5463, -4756,-3975,-3203,-2501,-1899,-1412,-1011,-659,-312,70, 532,1082,1675,2267,2806,3241,3528,3651,3615,3439, 3129,2675,2090,1422,739,106,-423,-773,-867,-678, -209,486,1298,2093,2766,3244,3507,3597,3569,3492, 3464,3563,3829,4277,4865,5482,6003,6318,6336,6032, 5445,4630,3641,2537,1362,152,-1031,-2141,-3177,-4174, -5147,-6091,-7029,-8004,-9030,-10087,-11140,-12141,-12986,-13582, -13858,-13792,-13404,-12728,-11823,-10757,-9581,-8307,-6977,-5695, -4555,-3609,-2908,-2469,-2249,-2158,-2078,-1887,-1484,-815, 110,1215,2351,3346,4060,4458,4590,4521,4348,4175, 4091,4150,4358,4688,5087,5496,5845,6092,6213,6200, 6047,5793,5479,5126,4716,4277,3862,3529,3289,3128, 2993,2802,2496,2061,1496,792,-52,-1006,-2022,-3053, -4048,-4951,-5734,-6393,-6962,-7467,-7900,-8240,-8485,-8645, -8751,-8858,-8990,-9103,-9122,-8981,-8630,-8042,-7235,-6265, -5176,-3986,-2727,-1464,-263,832,1823,2719,3529,4256, 4935,5566,6127,6587,6940,7194,7335,7344,7227,6983, 6596,6096,5563,5070,4645,4288,3990,3733,3497,3291, 3141,3065,3050,3095,3197,3338,3514,3722,3954,4192, 4418,4625,4820,4998,5153,5271,5318,5257,5058,4722, 4276,3749,3202,2675,2193,1749,1315,851,338,-218, -845,-1570,-2390,-3266,-4134,-4957,-5670,-6191,-6477,-6512, -6298,-5885,-5331,-4713,-4105,-3562,-3084,-2672,-2301,-1934, -1520,-1031,-462,154,798,1438,2039,2583,3061,3451, 3736,3879,3813,3498,2949,2231,1418,606,-101,-610, -844,-770,-394,221,957,1661,2220,2580,2744,2762, 2706,2676,2757,3004,3430,3998,4639,5276,5845,6273, 6493,6488,6260,5807,5133,4280,3297,2242,1174,147, -811,-1709,-2589,-3513,-4537,-5682,-6911,-8203,-9499,-10706, -11739,-12576,-13217,-13636,-13803,-13697,-13281,-12538,-11493,-10203, -8766,-7337,-6072,-5075,-4403,-4036,-3870,-3762,-3578,-3216, -2616,-1783,-783,281,1310,2211,2908,3353,3567,3645, 3673,3721,3822,3972,4156,4404,4742,5124,5501,5844, 6107,6226,6182,6015,5758,5442,5098,4743,4406,4135, 3962,3874,3819,3719,3496,3128,2645,2057,1377,603, -275,-1236,-2243,-3248,-4192,-5015,-5705,-6280,-6775,-7214, -7626,-8017,-8388,-8736,-9064,-9357,-9577,-9664,-9557,-9224, -8655,-7879,-6945,-5904,-4798,-3668,-2531,-1414,-353,625, 1526,2381,3227,4062,4854,5586,6227,6731,7060,7214, 7218,7079,6830,6506,6131,5731,5336,4953,4583,4228, 3889,3581,3313,3112,3003,2990,3042,3123,3220,3324, 3451,3627,3868,4150,4460,4778,5076,5308,5435,5429, 5284,5021,4688,4310,3903,3483,3085,2724,2388,2045, 1664,1205,614,-128,-1006,-1980,-2999,-3997,-4892,-5602, -6060,-6255,-6227,-6038,-5749,-5426,-5092,-4737,-4358,-3965, -3563,-3148,-2727,-2276,-1791,-1270,-693,-50,656,1405, 2165,2880,3479,3891,4042,3886,3420,2697,1815,915, 128,-437,-710,-681,-406,46,586,1089,1457,1667, 1750,1773,1784,1840,1988,2256,2629,3107,3702,4396, 5110,5749,6248,6538,6555,6291,5792,5135,4397,3638, 2895,2171,1435,632,-283,-1307,-2414,-3593,-4809,-6019, -7226,-8462,-9738,-11028,-12248,-13269,-13981,-14310,-14211,-13685, -12774,-11574,-10228,-8902,-7755,-6900,-6339,-5983,-5726,-5465, -5085,-4532,-3815,-2960,-2023,-1067,-122,777,1542,2097, 2462,2709,2895,3055,3228,3422,3643,3917,4266,4683, 5145,5580,5912,6102,6122,5982,5744,5483,5249,5056, 4880,4708,4555,4440,4358,4286,4190,4023,3737,3313, 2756,2078,1286,396,-561,-1545,-2499,-3374,-4128,-4765, -5323,-5863,-6419,-6993,-7575,-8138,-8663,-9133,-9512,-9777, -9896,-9828,-9554,-9068,-8369,-7498,-6534,-5544,-4554,-3566, -2590,-1624,-653,334,1337,2343,3333,4271,5107,5796, 6316,6671,6875,6948,6918,6811,6627,6364,6033,5658, 5247,4825,4436,4100,3821,3592,3411,3262,3145,3051, 2994,3002,3093,3264,3508,3815,4171,4545,4900,5202, 5414,5501,5457,5307,5065,4756,4405,4059,3758,3525, 3359,3210,3008,2670,2126,1371,452,-580,-1649,-2673, -3591,-4368,-4980,-5413,-5672,-5783,-5783,-5699,-5543,-5318, -5028,-4691,-4333,-3990,-3680,-3386,-3080,-2711,-2219,-1589, -816,114,1165,2215,3126,3784,4105,4048,3644,2972, 2157,1340,648,159,-105,-167,-67,141,418,724, 1012,1236,1361,1386,1350,1303,1298,1414,1707,2214, 2907,3720,4542,5272,5829,6149,6251,6189,6018,5766, 5446,5049,4552,3942,3234,2455,1624,753,-152,-1096, -2094,-3177,-4391,-5767,-7309,-8984,-10671,-12184,-13331,-13992, -14141,-13830,-13161,-12266,-11273,-10285,-9376,-8625,-8060,-7639, -7278,-6893,-6414,-5806,-5070,-4237,-3349,-2425,-1485,-570, 265,972,1505,1859,2079,2239,2421,2690,3064,3500, 3953,4404,4840,5249,5600,5852,5969,5957,5858,5706, 5524,5344,5186,5047,4933,4859,4830,4840,4864,4846, 4733,4482,4067,3482,2757,1953,1117,257,-609,-1457, -2258,-2991,-3654,-4265,-4863,-5499,-6183,-6909,-7637,-8321, -8931,-9425,-9752,-9881,-9812,-9555,-9110,-8501,-7790,-7039, -6273,-5472,-4610,-3675,-2674,-1622,-524,588,1670,2691, 3632,4469,5189,5800,6301,6682,6918,6994,6936,6781, 6553,6260,5928,5584,5242,4929,4633,4342,4042,3739, 3464,3244,3098,3025,3019,3097,3276,3541,3881,4291, 4739,5169,5501,5667,5653,5492,5243,4961,4707,4532, 4444,4408,4400,4382,4277,4001,3526,2864,2029,1068, 66,-921,-1866,-2741,-3528,-4202,-4742,-5134,-5384,-5491, -5461,-5307,-5073,-4817,-4593,-4435,-4350,-4314,-4264,-4106, -3747,-3115,-2198,-1068,163,1376,2438,3230,3681,3784, 3595,3191,2643,2028,1420,887,493,270,222,343, 603,917,1171,1285,1244,1076,847,657,627,814, 1184,1697,2318,3023,3752,4423,4983,5419,5739,5978, 6160,6268,6231,6006,5589,5032,4409,3793,3231,2728, 2231,1646,883,-127,-1409,-2954,-4729,-6632,-8525,-10268, -11707,-12709,-13221,-13287,-13014,-12527,-11928,-11290,-10656,-10045, -9483,-8992,-8575,-8191,-7770,-7234,-6531,-5669,-4709,-3718, -2740,-1813,-983,-285,277,711,1045,1330,1617,1950, 2358,2845,3366,3872,4343,4769,5153,5481,5721,5856, 5867,5754,5572,5375,5209,5109,5078,5096,5149,5221, 5290,5325,5299,5173,4906,4495,3962,3314,2576,1785, 967,170,-565,-1243,-1897,-2542,-3201,-3917,-4705,-5552, -6433,-7305,-8127,-8827,-9331,-9617,-9719,-9667,-9490,-9209, -8837,-8380,-7829,-7171,-6417,-5587,-4667,-3658,-2591,-1503, -431,626,1687,2720,3680,4532,5259,5835,6252,6509, 6620,6627,6565,6446,6270,6039,5753,5435,5116,4809, 4511,4204,3872,3506,3152,2873,2692,2634,2724,2978, 3374,3872,4380,4803,5095,5246,5248,5123,4924,4726, 4602,4576,4624,4722,4833,4882,4822,4638,4317,3834, 3204,2463,1626,713,-248,-1232,-2208,-3135,-3954,-4599, -5022,-5218,-5220,-5091,-4926,-4821,-4848,-5009,-5249,-5489, -5641,-5604,-5293,-4671,-3770,-2681,-1507,-324,799,1786, 2555,3035,3165,2954,2515,1971,1405,913,566,397, 395,526,726,908,978,900,676,381,125,-16, 0,186,498,880,1296,1738,2245,2852,3534,4226, 4871,5412,5792,5980,5976,5799,5486,5085,4666,4321, 4106,3998,3890,3638,3106,2207,937,-650,-2464,-4398, -6332,-8161,-9774,-11077,-12010,-12568,-12769,-12677,-12391,-12009, -11607,-11229,-10884,-10571,-10264,-9921,-9500,-8963,-8284,-7458, -6505,-5493,-4498,-3574,-2746,-2033,-1418,-880,-401,27, 416,792,1187,1635,2168,2765,3366,3919,4419,4837, 5134,5313,5384,5347,5237,5109,5000,4917,4887,4921, 5013,5159,5328,5469,5536,5503,5363,5096,4687,4149, 3519,2840,2166,1524,910,318,-256,-861,-1557,-2363, -3265,-4224,-5192,-6139,-7019,-7781,-8402,-8900,-9275,-9506, -9621,-9644,-9566,-9355,-9010,-8532,-7952,-7293,-6573,-5782, -4881,-3843,-2706,-1543,-408,695,1755,2756,3657,4437, 5089,5609,5985,6220,6328,6337,6267,6144,6006,5868, 5702,5478,5185,4820,4379,3871,3336,2872,2571,2463, 2539,2788,3177,3628,4068,4450,4725,4855,4856,4775, 4681,4614,4591,4629,4734,4877,5010,5082,5077,5017, 4900,4692,4354,3873,3246,2454,1467,312,-914,-2062, -3007,-3672,-4047,-4201,-4239,-4268,-4363,-4552,-4810,-5118, -5482,-5863,-6182,-6348,-6282,-5927,-5259,-4308,-3154,-1886, -605,586,1572,2249,2557,2512,2206,1773,1346,1045, 925,958,1041,1097,1101,1036,909,743,571,401, 237,100,27,33,93,201,389,706,1176,1802, 2579,3437,4265,4951,5407,5591,5540,5355,5139,4959, 4864,4883,5000,5166,5306,5305,5050,4443,3434,2057, 386,-1494,-3462,-5385,-7161,-8705,-9945,-10850,-11422,-11700, -11775,-11739,-11664,-11589,-11522,-11422,-11246,-10973,-10605,-10128, -9517,-8768,-7912,-6995,-6050,-5118,-4235,-3426,-2706,-2094, -1588,-1145,-712,-264,213,731,1284,1883,2523,3174, 3790,4318,4728,5004,5162,5226,5208,5123,5003,4893, 4847,4886,5014,5218,5478,5752,5967,6053,5985,5771, 5433,5012,4528,4013,3510,3052,2630,2192,1671,1032, 289,-547,-1455,-2406,-3367,-4321,-5258,-6142,-6942,-7640, -8224,-8684,-9019,-9229,-9331,-9356,-9309,-9163,-8885,-8472, -7929,-7270,-6499,-5618,-4639,-3586,-2473,-1334,-196,927, 2021,3034,3907,4598,5113,5486,5753,5941,6080,6205, 6330,6425,6442,6326,6058,5654,5127,4506,3863,3302, 2906,2721,2738,2931,3250,3621,3966,4246,4457,4589, 4649,4669,4695,4751,4829,4904,4951,4956,4960,5031, 5194,5421,5652,5791,5730,5405,4807,3968,2947,1825, 688,-377,-1301,-2024,-2526,-2841,-3042,-3210,-3399,-3668, -4025,-4455,-4971,-5552,-6130,-6621,-6924,-6899,-6447,-5577, -4408,-3091,-1774,-601,343,1035,1471,1665,1688,1622, 1531,1458,1424,1432,1443,1406,1307,1173,1047,963, 912,852,756,589,336,35,-231,-379,-344,-82, 425,1140,1968,2818,3600,4245,4688,4897,4915,4815, 4691,4644,4738,4971,5314,5712,6097,6381,6456,6221, 5592,4544,3102,1358,-552,-2497,-4359,-6035,-7448,-8566, -9428,-10092,-10593,-10958,-11220,-11415,-11564,-11676,-11724,-11656, -11445,-11099,-10624,-10011,-9261,-8408,-7501,-6591,-5711,-4892, -4151,-3492,-2920,-2416,-1937,-1445,-921,-372,211,836, 1501,2191,2888,3540,4103,4547,4844,4985,4998,4923, 4806,4690,4632,4690,4888,5191,5530,5847,6086,6202, 6162,5992,5747,5469,5175,4874,4573,4254,3901,3514, 3090,2597,1993,1256,417,-490,-1461,-2480,-3509,-4485, -5377,-6183,-6892,-7500,-8018,-8452,-8816,-9112,-9299,-9358, -9302,-9134,-8836,-8412,-7883,-7253,-6505,-5611,-4569,-3420, -2197,-957,228,1321,2296,3115,3757,4263,4698,5118, 5545,5968,6356,6659,6834,6838,6645,6254,5696,5032, 4357,3786,3407,3223,3188,3240,3341,3465,3611,3795, 4032,4299,4549,4742,4836,4822,4736,4635,4562,4561, 4662,4888,5240,5676,6105,6408,6487,6293,5819,5110, 4239,3287,2298,1295,331,-514,-1183,-1650,-1915,-2040, -2156,-2392,-2818,-3448,-4248,-5138,-6014,-6756,-7242,-7378, -7115,-6470,-5526,-4411,-3255,-2183,-1276,-549,26,477, 841,1135,1352,1458,1447,1354,1239,1157,1147,1198, 1275,1347,1393,1361,1192,870,422,-75,-519,-801, -851,-652,-217,426,1208,2008,2739,3339,3761,4000, 4086,4070,4023,4017,4139,4457,4972,5625,6308,6904, 7289,7360,7047,6327,5238,3844,2209,417,-1397,-3106, -4645,-6013,-7178,-8135,-8928,-9611,-10205,-10723,-11167,-11524, -11792,-11977,-12044,-11928,-11605,-11114,-10506,-9786,-8964,-8094, -7236,-6432,-5695,-5018,-4393,-3817,-3286,-2778,-2261,-1716, -1135,-501,202,972,1777,2569,3293,3874,4248,4418, 4442,4387,4321,4300,4349,4491,4712,4993,5300,5586, 5802,5935,6003,5999,5910,5744,5544,5335,5123,4911, 4699,4474,4205,3857,3400,2808,2060,1173,204,-776, -1738,-2689,-3630,-4539,-5395,-6187,-6900,-7529,-8061,-8503, -8847,-9086,-9221,-9285,-9302,-9249,-9070,-8712,-8147,-7379, -6445,-5378,-4213,-3008,-1830,-728,265,1118,1836,2480, 3131,3821,4544,5286,5965,6473,6745,6779,6602,6280, 5877,5433,4970,4507,4070,3695,3414,3225,3129,3130, 3240,3460,3775,4128,4425,4602,4618,4482,4259,4057, 3974,4052,4283,4613,5007,5435,5878,6293,6602,6713, 6560,6124,5421,4506,3469,2413,1437,617,11,-366, -563,-672,-800,-1075,-1603,-2415,-3448,-4567,-5616,-6466, -7037,-7304,-7275,-6987,-6476,-5766,-4913,-4003,-3114,-2260, -1430,-669,-50,388,668,809,833,788,756,802, 945,1175,1435,1652,1756,1684,1421,1009,506,-40, -553,-941,-1125,-1070,-771,-244,457,1231,1967,2557, 2944,3123,3138,3066,3018,3065,3258,3660,4283,5063, 5910,6726,7381,7761,7804,7485,6798,5784,4503,3017, 1419,-210,-1797,-3267,-4588,-5762,-6806,-7742,-8595,-9379, -10110,-10777,-11343,-11780,-12068,-12187,-12123,-11864,-11441,-10901, -10269,-9546,-8760,-7954,-7150,-6391,-5727,-5167,-4670,-4212, -3762,-3257,-2647,-1917,-1080,-171,737,1570,2294,2899, 3357,3649,3795,3863,3915,3993,4112,4268,4468,4709, 4991,5300,5589,5799,5906,5915,5858,5774,5696,5628, 5561,5501,5439,5351,5193,4940,4567,4067,3461,2769, 2005,1170,255,-727,-1740,-2743,-3705,-4609,-5434,-6155, -6770,-7307,-7796,-8241,-8634,-8984,-9290,-9531,-9662,-9616, -9323,-8722,-7841,-6800,-5715,-4664,-3686,-2791,-1950,-1123, -256,656,1594,2545,3500,4397,5176,5778,6178,6407, 6498,6469,6342,6121,5784,5321,4763,4187,3686,3338, 3182,3221,3410,3667,3929,4151,4314,4396,4387,4298, 4154,3989,3851,3797,3884,4136,4535,5041,5625,6228, 6771,7137,7220,6958,6349,5469,4453,3458,2595,1938, 1509,1277,1166,1062,832,381,-322,-1226,-2237,-3293, -4335,-5278,-6042,-6595,-6936,-7070,-6989,-6683,-6160,-5432, -4529,-3550,-2596,-1738,-1045,-552,-247,-79,16,110, 250,463,747,1096,1468,1789,1985,2011,1829,1422, 844,205,-394,-867,-1136,-1149,-918,-480,126,812, 1446,1926,2226,2351,2330,2233,2163,2204,2402,2784, 3376,4169,5109,6092,6981,7668,8079,8169,7906,7294, 6372,5214,3896,2487,1060,-340,-1702,-3008,-4237,-5397, -6500,-7553,-8547,-9454,-10243,-10900,-11423,-11818,-12081,-12184, -12084,-11772,-11281,-10654,-9923,-9128,-8344,-7635,-7028,-6527, -6110,-5722,-5282,-4733,-4048,-3242,-2374,-1484,-583,301, 1112,1799,2348,2766,3060,3251,3383,3512,3678,3880, 4119,4403,4719,5018,5265,5437,5526,5556,5563,5577, 5624,5699,5781,5821,5808,5753,5668,5538,5351,5066, 4661,4141,3524,2818,2031,1154,163,-917,-2002,-2995, -3846,-4565,-5182,-5748,-6343,-7014,-7743,-8462,-9097,-9591, -9898,-9981,-9818,-9394,-8751,-7984,-7187,-6412,-5674,-4939, -4154,-3274,-2295,-1249,-183,860,1835,2730,3558,4341, 5086,5733,6201,6467,6523,6363,6032,5595,5076,4517, 4009,3635,3426,3383,3464,3611,3787,3963,4123,4240, 4268,4186,4003,3749,3483,3272,3203,3358,3765,4406, 5207,6034,6733,7176,7300,7093,6583,5828,4961,4153, 3520,3072,2767,2560,2398,2210,1915,1461,843,74, -824,-1804,-2812,-3819,-4809,-5729,-6501,-7047,-7311,-7283, -6984,-6451,-5721,-4865,-3980,-3162,-2461,-1914,-1529,-1274, -1100,-932,-697,-369,62,581,1124,1593,1914,2028, 1891,1506,918,236,-397,-890,-1207,-1312,-1177,-819, -300,268,786,1194,1446,1531,1479,1356,1228,1178, 1287,1607,2158,2928,3848,4846,5867,6816,7553,7978, 8069,7839,7332,6602,5694,4630,3443,2185,890,-425, -1751,-3065,-4332,-5531,-6651,-7694,-8675,-9610,-10493,-11278, -11893,-12279,-12422,-12333,-12034,-11561,-10957,-10296,-9649,-9058, -8538,-8087,-7673,-7265,-6819,-6294,-5669,-4938,-4102,-3181, -2225,-1291,-411,377,1016,1496,1840,2118,2387,2679, 2996,3318,3632,3929,4197,4435,4642,4814,4945,5038, 5103,5167,5270,5423,5593,5728,5795,5788,5745,5713, 5696,5650,5517,5249,4809,4185,3398,2495,1538,571, -365,-1234,-2007,-2696,-3359,-4073,-4880,-5781,-6755,-7721, -8568,-9206,-9588,-9736,-9723,-9611,-9408,-9099,-8666,-8115, -7465,-6735,-5944,-5104,-4218,-3296,-2357,-1405,-416,623, 1699,2764,3768,4655,5373,5873,6127,6142,5961,5643, 5252,4840,4429,4027,3685,3475,3416,3491,3681,3941, 4201,4384,4412,4245,3902,3447,2992,2666,2571,2757, 3233,3957,4827,5698,6418,6870,6997,6831,6457,5962, 5427,4907,4447,4066,3764,3520,3295,3060,2801,2490, 2069,1500,775,-112,-1135,-2250,-3404,-4540,-5569,-6403, -6984,-7276,-7264,-6976,-6471,-5805,-5058,-4335,-3721,-3232, -2859,-2590,-2362,-2098,-1744,-1275,-685,-8,679,1273, 1689,1883,1834,1530,1009,377,-251,-791,-1138,-1248, -1145,-879,-490,-34,408,770,1001,1056,932,692, 451,312,348,582,1041,1736,2627,3644,4695,5678, 6510,7156,7591,7809,7796,7544,7046,6313,5381,4309, 3153,1945,715,-507,-1713,-2933,-4187,-5449,-6683,-7880, -9028,-10075,-10957,-11622,-12024,-12163,-12087,-11860,-11521,-11090, -10594,-10085,-9617,-9223,-8890,-8571,-8224,-7787,-7206,-6460, -5579,-4635,-3689,-2778,-1918,-1132,-436,155,640,1048, 1432,1835,2280,2743,3154,3477,3726,3933,4108,4260, 4419,4613,4819,4994,5118,5213,5306,5408,5510,5626, 5774,5943,6122,6282,6350,6253,5908,5304,4520,3689, 2899,2189,1541,900,233,-494,-1325,-2262,-3264,-4275, -5256,-6186,-7033,-7780,-8413,-8911,-9262,-9483,-9585,-9537, -9313,-8933,-8439,-7873,-7272,-6651,-6000,-5284,-4462,-3529, -2495,-1368,-177,1032,2213,3289,4200,4927,5466,5811, 5949,5875,5610,5201,4728,4271,3897,3662,3611,3761, 4065,4420,4712,4847,4753,4426,3914,3323,2791,2451, 2394,2641,3151,3845,4611,5345,5962,6418,6683,6742, 6619,6368,6043,5678,5300,4932,4619,4386,4215,4061, 3900,3715,3466,3098,2557,1817,869,-252,-1486,-2749, -3969,-5069,-5960,-6543,-6775,-6704,-6410,-5966,-5446,-4934, -4491,-4129,-3845,-3622,-3405,-3100,-2648,-2043,-1310,-516, 272,983,1532,1847,1896,1697,1294,762,192,-311, -676,-861,-842,-621,-259,167,583,911,1070,1020, 792,477,177,-27,-80,54,402,956,1673,2524, 3470,4456,5426,6327,7082,7647,7992,8086,7927,7526, 6913,6142,5280,4361,3389,2350,1226,-7,-1330,-2704, -4092,-5461,-6783,-8027,-9159,-10122,-10846,-11289,-11471,-11448, -11303,-11087,-10819,-10524,-10239,-9987,-9765,-9529,-9234,-8836, -8294,-7599,-6770,-5858,-4932,-4048,-3249,-2541,-1880,-1221, -561,70,663,1215,1728,2208,2661,3044,3329,3552, 3772,4006,4266,4548,4789,4931,4962,4947,4942,5004, 5190,5517,5949,6383,6732,6940,6969,6817,6493,6048, 5541,5021,4504,3998,3480,2904,2238,1487,656,-240, -1180,-2156,-3153,-4145,-5104,-6023,-6883,-7659,-8307,-8769, -9021,-9101,-9060,-8930,-8729,-8476,-8176,-7806,-7340,-6766, -6066,-5226,-4265,-3215,-2084,-886,342,1558,2729,3808, 4721,5407,5818,5933,5751,5338,4821,4349,4030,3918, 4018,4305,4698,5078,5294,5268,5009,4566,4007,3429, 2941,2623,2522,2660,3028,3575,4217,4877,5485,5989, 6358,6576,6637,6562,6378,6120,5830,5541,5271,5033, 4863,4786,4778,4791,4754,4590,4235,3653,2824,1766, 517,-844,-2213,-3470,-4509,-5279,-5761,-5953,-5908,-5721, -5478,-5241,-5043,-4892,-4781,-4661,-4472,-4160,-3694,-3046, -2237,-1348,-470,332,1006,1478,1694,1640,1336,849, 301,-194,-542,-691,-622,-378,-42,309,616,831, 913,838,634,348,41,-218,-370,-388,-270,1, 466,1142,2006,3016,4090,5110,5995,6731,7306,7697, 7897,7900,7708,7335,6820,6189,5453,4610,3667,2618, 1440,107,-1360,-2881,-4383,-5824,-7153,-8316,-9282,-10017, -10491,-10719,-10768,-10737,-10708,-10704,-10709,-10691,-10625,-10487, -10229,-9826,-9294,-8655,-7932,-7157,-6371,-5597,-4865,-4173, -3488,-2764,-1989,-1196,-445,218,765,1204,1586,1982, 2424,2901,3380,3792,4099,4294,4360,4307,4217,4188, 4276,4503,4857,5295,5775,6231,6585,6797,6876,6838, 6698,6490,6250,5978,5642,5232,4757,4234,3655,3026, 2352,1614,796,-117,-1130,-2229,-3364,-4460,-5461,-6349, -7104,-7702,-8146,-8463,-8670,-8791,-8859,-8881,-8824,-8653, -8359,-7956,-7453,-6855,-6152,-5328,-4364,-3241,-1955,-551, 906,2319,3549,4461,4993,5166,5045,4742,4391,4102, 3963,4023,4256,4602,4980,5279,5407,5342,5095,4685, 4142,3559,3046,2677,2495,2515,2732,3107,3587,4134, 4711,5261,5738,6099,6305,6358,6280,6102,5845,5549, 5264,5046,4938,4961,5100,5304,5491,5564,5434,5034, 4344,3382,2192,836,-565,-1875,-2999,-3885,-4514,-4905, -5119,-5234,-5311,-5373,-5435,-5517,-5597,-5623,-5558,-5377, -5015,-4413,-3596,-2640,-1644,-699,95,670,987,1040, 845,459,-2,-391,-629,-697,-620,-430,-172,108, 370,575,694,701,591,364,30,-358,-717,-962, -1035,-910,-594,-93,590,1438,2399,3422,4437,5357, 6117,6707,7148,7460,7632,7637,7489,7205,6796,6266, 5622,4817,3813,2608,1211,-346,-1987,-3593,-5071,-6367, -7470,-8376,-9073,-9572,-9925,-10200,-10455,-10723,-11003,-11239, -11346,-11291,-11087,-10743,-10277,-9744,-9191,-8626,-8034,-7396, -6677,-5864,-5005,-4165,-3380,-2665,-2023,-1440,-882,-313, 290,938,1611,2268,2848,3284,3534,3613,3582,3517, 3471,3505,3668,3979,4380,4799,5207,5581,5920,6228, 6485,6662,6743,6704,6563,6364,6116,5807,5459,5090, 4721,4322,3852,3272,2539,1645,625,-475,-1603,-2711, -3764,-4732,-5592,-6341,-7003,-7597,-8108,-8500,-8748,-8869, -8899,-8860,-8783,-8702,-8600,-8414,-8078,-7526,-6710,-5597, -4195,-2600,-970,549,1853,2871,3549,3886,3961,3871, 3713,3611,3643,3835,4158,4557,4945,5237,5380,5357, 5180,4831,4331,3771,3251,2829,2542,2406,2426,2609, 2945,3409,3957,4539,5091,5556,5882,6043,6047,5915, 5671,5360,5071,4882,4832,4936,5200,5580,5976,6261, 6327,6101,5543,4696,3650,2473,1216,-57,-1256,-2266, -3025,-3571,-3980,-4300,-4579,-4870,-5193,-5534,-5872,-6163, -6349,-6358,-6106,-5559,-4762,-3790,-2740,-1738,-902,-308, 38,179,165,34,-176,-434,-673,-808,-794,-631, -353,-35,264,510,676,736,673,477,147,-275, -718,-1106,-1366,-1455,-1355,-1057,-567,90,894,1828, 2825,3807,4692,5424,6012,6502,6915,7238,7462,7585, 7605,7492,7201,6685,5913,4867,3561,2065,461,-1166, -2716,-4079,-5214,-6161,-6993,-7763,-8487,-9161,-9785,-10339, -10775,-11072,-11245,-11312,-11269,-11132,-10954,-10752,-10461,-10016, -9422,-8720,-7943,-7120,-6303,-5543,-4890,-4318,-3779,-3208, -2544,-1769,-912,-36,786,1485,2041,2458,2731,2882, 2962,3013,3062,3149,3289,3482,3741,4097,4524,4974, 5423,5842,6209,6506,6697,6757,6693,6545,6371,6223, 6117,6012,5860,5612,5244,4744,4092,3307,2419,1464, 471,-543,-1578,-2628,-3680,-4697,-5629,-6418,-7031,-7462, -7743,-7941,-8126,-8352,-8630,-8940,-9247,-9461,-9463,-9141, -8455,-7416,-6064,-4494,-2862,-1320,41,1151,1953,2454, 2721,2846,2936,3078,3312,3632,4027,4463,4884,5231, 5456,5525,5426,5175,4811,4362,3853,3327,2862,2555, 2432,2468,2649,2982,3465,4068,4722,5316,5740,5946, 5942,5769,5495,5186,4913,4745,4743,4933,5299,5777, 6268,6683,6933,6939,6642,6029,5151,4095,2941,1753, 594,-442,-1281,-1902,-2354,-2741,-3176,-3715,-4358,-5063, -5754,-6321,-6679,-6789,-6651,-6265,-5629,-4789,-3838,-2881, -2004,-1290,-792,-509,-404,-416,-509,-655,-819,-946, -978,-872,-615,-261,111,427,659,798,812,683, 421,57,-382,-855,-1292,-1612,-1755,-1693,-1414,-938, -285,514,1391,2269,3110,3882,4561,5154,5709,6265, 6826,7370,7850,8190,8303,8104,7550,6655,5489,4156, 2757,1354,-6,-1294,-2517,-3685,-4790,-5839,-6836,-7756, -8563,-9233,-9767,-10180,-10525,-10845,-11150,-11392,-11512,-11487, -11301,-10923,-10354,-9670,-8959,-8283,-7674,-7135,-6620,-6072, -5465,-4788,-4026,-3177,-2277,-1373,-499,301,991,1535, 1945,2244,2457,2592,2656,2678,2720,2840,3059,3377, 3800,4311,4852,5357,5773,6064,6244,6342,6399,6436, 6480,6552,6622,6624,6534,6347,6064,5710,5294,4790, 4175,3438,2576,1582,466,-717,-1902,-3028,-4022,-4838, -5461,-5917,-6280,-6630,-7015,-7488,-8073,-8737,-9391,-9927, -10227,-10199,-9792,-8967,-7763,-6313,-4771,-3276,-1929,-803, 84,759,1271,1660,1969,2243,2553,2959,3469,4016, 4513,4918,5238,5458,5545,5468,5240,4867,4373,3814, 3250,2741,2361,2199,2291,2614,3112,3721,4357,4950, 5427,5698,5722,5546,5253,4935,4675,4530,4535,4709, 5056,5550,6133,6728,7221,7485,7429,7027,6322,5389, 4332,3282,2328,1491,751,97,-489,-1052,-1659,-2371, -3205,-4120,-5031,-5828,-6432,-6793,-6894,-6735,-6315,-5659, -4842,-3954,-3081,-2299,-1679,-1261,-1028,-945,-976,-1057, -1133,-1176,-1175,-1090,-899,-594,-206,198,556,827, 973,969,807,478,17,-508,-1034,-1505,-1844,-1982, -1886,-1564,-1043,-394,301,967,1586,2181,2790,3448, 4197,5039,5941,6840,7653,8274,8623,8663,8390,7833, 7047,6103,5048,3920,2723,1448,103,-1249,-2551,-3758, -4830,-5753,-6563,-7312,-8057,-8806,-9538,-10216,-10801,-11248, -11522,-11608,-11493,-11213,-10819,-10352,-9856,-9374,-8922,-8473, -8000,-7475,-6878,-6195,-5435,-4615,-3759,-2871,-1962,-1065, -230,515,1148,1638,1952,2103,2134,2112,2115,2233, 2500,2878,3315,3772,4217,4625,4991,5308,5588,5862, 6121,6336,6506,6634,6701,6704,6672,6628,6574,6489, 6346,6122,5769,5222,4439,3441,2297,1087,-126,-1266, -2260,-3064,-3672,-4120,-4496,-4924,-5509,-6275,-7166,-8110, -9031,-9836,-10405,-10642,-10493,-9966,-9102,-7964,-6642,-5270, -3976,-2829,-1862,-1072,-409,173,695,1178,1633,2085, 2579,3140,3740,4326,4846,5261,5541,5669,5616,5360, 4903,4295,3620,2977,2462,2169,2168,2441,2891,3420, 3982,4533,5013,5352,5497,5415,5133,4745,4372,4117, 4066,4263,4689,5279,5962,6658,7251,7616,7683,7445, 6944,6248,5446,4636,3876,3183,2558,1975,1379,729, 8,-809,-1731,-2745,-3807,-4826,-5708,-6381,-6783,-6894, -6724,-6304,-5677,-4926,-4145,-3403,-2748,-2231,-1878,-1673, -1593,-1615,-1681,-1723,-1694,-1583,-1398,-1132,-771,-331, 144,596,959,1149,1096,805,334,-266,-900,-1444, -1820,-1986,-1940,-1726,-1419,-1081,-746,-417,-67,358, 915,1652,2570,3612,4682,5698,6606,7347,7895,8253, 8422,8389,8134,7649,6921,5959,4811,3552,2259,976, -259,-1407,-2460,-3437,-4374,-5324,-6313,-7322,-8311,-9240, -10032,-10639,-11062,-11310,-11388,-11347,-11213,-10996,-10721,-10407, -10054,-9659,-9215,-8727,-8237,-7724,-7121,-6398,-5569,-4638, -3612,-2550,-1540,-650,61,576,915,1139,1310,1453, 1597,1780,2016,2312,2659,3021,3374,3734,4125,4550, 4988,5390,5716,5966,6151,6286,6382,6450,6514,6614, 6768,6939,7085,7150,7026,6626,5934,4994,3881,2689, 1516,466,-403,-1097,-1660,-2141,-2605,-3132,-3809,-4695, -5771,-6954,-8118,-9145,-9940,-10440,-10602,-10422,-9910,-9115, -8119,-7022,-5891,-4788,-3756,-2827,-2014,-1310,-685,-116, 406,889,1379,1949,2642,3427,4218,4912,5431,5718, 5760,5577,5206,4689,4074,3425,2825,2390,2189,2255, 2584,3123,3763,4384,4898,5236,5365,5268,4968,4545, 4117,3816,3742,3934,4371,4995,5709,6396,6977,7396, 7603,7567,7310,6896,6390,5829,5250,4698,4192,3708, 3204,2623,1921,1070,72,-1041,-2201,-3335,-4402,-5337, -6050,-6479,-6610,-6460,-6077,-5542,-4929,-4287,-3662,-3108, -2657,-2327,-2112,-2013,-2020,-2095,-2164,-2167,-2050,-1770, -1325,-760,-128,481,950,1190,1185,930,469,-76, -578,-982,-1248,-1377,-1425,-1470,-1520,-1563,-1581,-1513, -1300,-937,-407,291,1126,2051,3034,4031,5007,5938, 6797,7562,8185,8587,8706,8528,8079,7390,6508,5479, 4362,3241,2184,1178,156,-919,-2032,-3166,-4321,-5475, -6592,-7621,-8522,-9301,-9963,-10498,-10894,-11142,-11250,-11214, -11056,-10828,-10595,-10374,-10147,-9898,-9610,-9237,-8722,-8039, -7190,-6197,-5131,-4067,-3073,-2202,-1453,-808,-272,151, 486,768,1017,1241,1443,1641,1856,2110,2424,2809, 3244,3721,4224,4707,5106,5370,5511,5580,5645,5762, 5978,6295,6688,7102,7461,7688,7706,7458,6914,6086, 5056,3950,2897,1978,1236,656,179,-281,-796,-1404, -2143,-3070,-4193,-5462,-6786,-8028,-9057,-9807,-10273,-10467, -10393,-10052,-9457,-8652,-7694,-6642,-5596,-4635,-3794,-3071, -2450,-1898,-1362,-781,-145,541,1295,2143,3044,3907, 4639,5177,5480,5518,5310,4886,4290,3600,2920,2361, 2035,2017,2297,2790,3402,4029,4560,4898,4974,4807, 4481,4098,3737,3477,3385,3495,3828,4361,5008,5678, 6294,6776,7067,7174,7115,6925,6650,6325,5983,5658, 5351,5037,4663,4185,3564,2766,1796,673,-556,-1817, -3011,-4074,-4976,-5674,-6127,-6334,-6325,-6111,-5708,-5162, -4560,-3964,-3420,-2989,-2726,-2641,-2704,-2867,-3027,-3072, -2932,-2573,-1987,-1264,-561,6,399,605,613,464, 240,8,-200,-391,-588,-820,-1087,-1374,-1652,-1888, -2052,-2114,-2048,-1844,-1506,-1042,-462,236,1054,2006, 3084,4229,5350,6391,7297,7996,8414,8515,8330,7943, 7421,6792,6080,5276,4366,3374,2352,1283,160,-995, -2173,-3354,-4508,-5631,-6724,-7759,-8699,-9486,-10078,-10475, -10707,-10811,-10832,-10834,-10860,-10892,-10891,-10833,-10686,-10409, -9975,-9390,-8653,-7771,-6789,-5789,-4821,-3916,-3079,-2308, -1604,-965,-412,31,355,576,728,858,1026,1277, 1626,2072,2588,3119,3622,4066,4410,4636,4745,4781, 4836,5020,5385,5904,6504,7103,7627,8003,8159,8032, 7614,6945,6101,5180,4291,3522,2914,2447,2058,1662, 1176,524,-304,-1264,-2327,-3499,-4763,-6073,-7346,-8473, -9359,-9956,-10257,-10253,-9962,-9429,-8709,-7866,-6989,-6150, -5384,-4695,-4075,-3505,-2953,-2374,-1728,-997,-172,733, 1720,2756,3762,4610,5210,5497,5443,5066,4456,3762, 3102,2557,2223,2179,2411,2838,3371,3924,4400,4700, 4785,4669,4388,4012,3648,3382,3272,3342,3601,4040, 4594,5183,5739,6226,6593,6805,6875,6837,6741,6632, 6535,6449,6355,6222,6005,5657,5154,4483,3618,2566, 1392,170,-1037,-2191,-3270,-4251,-5085,-5708,-6063,-6118, -5895,-5439,-4841,-4218,-3685,-3335,-3212,-3291,-3474,-3634, -3681,-3564,-3272,-2828,-2291,-1715,-1147,-663,-301,-47, 128,256,342,359,294,158,-23,-250,-545,-901, -1265,-1574,-1795,-1940,-2038,-2100,-2102,-1990,-1716,-1237, -526,404,1494,2669,3877,5051,6088,6914,7527,7952, 8196,8263,8158,7888,7453,6869,6164,5363,4497,3584, 2618,1575,443,-777,-2070,-3395,-4680,-5857,-6899,-7791, -8512,-9066,-9491,-9828,-10101,-10348,-10605,-10865,-11088,-11221, -11220,-11066,-10753,-10279,-9685,-9021,-8284,-7444,-6510,-5541, -4588,-3676,-2814,-2022,-1341,-799,-412,-173,-23,121, 320,620,1057,1603,2174,2708,3170,3517,3736,3858, 3926,3983,4096,4338,4768,5397,6171,6969,7659,8131, 8334,8272,7970,7490,6897,6245,5595,5002,4494,4065, 3683,3306,2902,2416,1770,935,-67,-1222,-2524,-3915, -5308,-6616,-7786,-8745,-9417,-9762,-9806,-9607,-9206,-8656, -8011,-7309,-6603,-5947,-5373,-4878,-4428,-3965,-3414,-2714, -1845,-813,344,1580,2796,3850,4627,5082,5209,5024, 4580,3968,3338,2826,2507,2421,2581,2947,3430,3914, 4309,4576,4687,4605,4356,4010,3651,3357,3210,3261, 3497,3848,4289,4799,5302,5723,6029,6227,6352,6440, 6532,6651,6792,6928,7042,7089,7015,6784,6394,5861, 5211,4450,3571,2536,1318,-35,-1422,-2743,-3888,-4768, -5315,-5501,-5367,-5028,-4621,-4248,-3979,-3841,-3842,-3926, -4026,-4081,-4043,-3882,-3600,-3222,-2792,-2361,-1947,-1543, -1144,-747,-368,-43,212,378,435,382,251,90, -98,-322,-574,-842,-1153,-1517,-1922,-2305,-2590,-2714, -2624,-2277,-1681,-906,1,1023,2121,3224,4293,5317, 6258,7042,7624,7994,8165,8155,8001,7733,7367,6888, 6298,5607,4819,3903,2843,1637,306,-1093,-2472,-3739, -4837,-5776,-6593,-7317,-7961,-8534,-9054,-9557,-10048,-10503, -10890,-11173,-11330,-11349,-11235,-11004,-10673,-10232,-9683,-9009, -8185,-7214,-6143,-5059,-4070,-3235,-2549,-1989,-1548,-1220, -980,-762,-482,-89,424,1032,1674,2245,2661,2898, 2990,2984,2957,3002,3203,3592,4155,4848,5624,6418, 7153,7731,8088,8203,8097,7811,7402,6941,6458,5986, 5560,5209,4928,4682,4425,4104,3658,3016,2146,1051, -233,-1645,-3085,-4495,-5843,-7054,-8038,-8759,-9213,-9374, -9262,-8935,-8457,-7910,-7369,-6890,-6502,-6191,-5894,-5544, -5084,-4457,-3613,-2523,-1234,150,1497,2689,3638,4274, 4575,4574,4319,3882,3384,2954,2672,2582,2703,3004, 3418,3855,4233,4492,4574,4457,4217,3931,3630,3359, 3200,3212,3416,3758,4137,4491,4810,5072,5274,5452, 5645,5871,6142,6440,6729,6969,7134,7215,7234,7228, 7201,7104,6855,6379,5628,4606,3351,1926,417,-1057, -2346,-3326,-3967,-4306,-4425,-4393,-4285,-4188,-4176,-4234, -4306,-4361,-4382,-4357,-4299,-4192,-4023,-3808,-3553,-3233, -2850,-2419,-1955,-1478,-1036,-666,-389,-193,-52,67, 180,257,276,227,79,-217,-663,-1190,-1721,-2209, -2611,-2895,-3040,-3008,-2754,-2265,-1567,-708,259,1320, 2440,3556,4610,5544,6327,6935,7380,7675,7845,7920, 7920,7831,7600,7190,6599,5822,4868,3765,2529,1185, -186,-1476,-2626,-3634,-4542,-5395,-6219,-7028,-7807,-8518, -9144,-9688,-10167,-10607,-10981,-11268,-11475,-11585,-11548,-11345, -10976,-10421,-9661,-8735,-7709,-6632,-5588,-4674,-3940,-3389, -2988,-2664,-2346,-1954,-1455,-852,-190,478,1093,1594, 1929,2080,2095,2043,2006,2055,2267,2681,3270,3970, 4737,5529,6287,6949,7474,7812,7922,7821,7562,7192, 6774,6388,6079,5861,5725,5636,5533,5349,5030,4545, 3886,3031,1954,669,-766,-2271,-3765,-5178,-6446,-7496, -8264,-8705,-8821,-8707,-8461,-8148,-7827,-7564,-7397,-7317, -7249,-7089,-6759,-6206,-5398,-4337,-3061,-1638,-186,1158, 2289,3107,3582,3751,3686,3453,3119,2772,2535,2479, 2614,2917,3317,3733,4075,4262,4282,4161,3922,3623, 3371,3236,3223,3297,3433,3604,3767,3912,4063,4249, 4484,4766,5068,5358,5613,5833,6031,6230,6445,6705, 7030,7401,7758,8008,8044,7778,7156,6191,4963,3588, 2169,808,-422,-1457,-2250,-2821,-3238,-3558,-3808,-3994, -4134,-4243,-4330,-4394,-4442,-4488,-4545,-4600,-4600,-4483, -4232,-3876,-3465,-3051,-2677,-2342,-2023,-1699,-1372,-1048, -714,-377,-61,197,374,450,397,187,-182,-677, -1227,-1772,-2291,-2759,-3129,-3363,-3437,-3293,-2883,-2223, -1377,-402,644,1713,2753,3724,4589,5330,5964,6520, 7033,7497,7894,8182,8296,8180,7818,7228,6433,5476, 4413,3296,2143,966,-215,-1362,-2437,-3436,-4385,-5292, -6150,-6951,-7691,-8364,-8980,-9560,-10126,-10689,-11224,-11674, -11979,-12088,-11951,-11526,-10831,-9945,-8958,-7958,-7026,-6219, -5550,-5022,-4602,-4208,-3742,-3163,-2481,-1724,-947,-211, 415,888,1190,1337,1373,1350,1326,1369,1504,1762, 2202,2863,3689,4571,5427,6197,6824,7257,7491,7542, 7436,7224,6971,6726,6523,6381,6296,6250,6230,6214, 6137,5939,5569,4979,4133,3029,1675,131,-1498,-3093, -4546,-5773,-6728,-7392,-7764,-7891,-7870,-7803,-7749,-7757, -7855,-8006,-8135,-8169,-8034,-7663,-7005,-6039,-4815,-3425, -1975,-574,680,1704,2426,2811,2884,2751,2531,2353, 2302,2417,2688,3058,3429,3713,3877,3935,3910,3830, 3727,3620,3526,3470,3443,3426,3404,3379,3379,3458, 3649,3920,4213,4496,4743,4915,5007,5051,5100,5236, 5537,6020,6651,7350,8005,8500,8737,8644,8189,7409, 6382,5219,4021,2857,1729,646,-356,-1234,-1958,-2506, -2892,-3176,-3414,-3648,-3890,-4148,-4397,-4612,-4766,-4849, -4843,-4735,-4541,-4294,-4006,-3688,-3396,-3159,-2932,-2656, -2314,-1910,-1457,-995,-569,-199,116,352,470,432, 235,-99,-550,-1103,-1728,-2351,-2913,-3386,-3726,-3847, -3701,-3289,-2633,-1813,-922,-16,877,1723,2535,3344, 4168,4998,5809,6572,7259,7818,8203,8388,8348,8072, 7583,6911,6090,5168,4186,3157,2084,957,-220,-1399, -2490,-3461,-4336,-5146,-5896,-6608,-7336,-8117,-8948,-9816, -10669,-11444,-12054,-12411,-12458,-12192,-11641,-10868,-9994,-9153, -8412,-7781,-7247,-6760,-6270,-5744,-5162,-4503,-3756,-2938, -2089,-1277,-561,17,439,682,740,659,540,485, 552,785,1210,1816,2575,3435,4318,5132,5817,6355, 6734,6951,7036,7011,6899,6725,6539,6388,6315,6330, 6432,6603,6786,6897,6839,6551,5970,5051,3809,2333, 730,-915,-2493,-3874,-4983,-5792,-6336,-6678,-6890,-7054, -7254,-7538,-7895,-8280,-8642,-8925,-9056,-8948,-8516,-7721, -6598,-5231,-3730,-2257,-960,73,820,1284,1511,1598, 1664,1792,2006,2282,2578,2853,3092,3284,3410,3478, 3528,3585,3641,3665,3627,3514,3350,3180,3043,2978, 3022,3189,3452,3754,4041,4254,4338,4276,4129,4005, 4014,4228,4659,5290,6071,6889,7621,8202,8602,8774, 8662,8265,7620,6752,5703,4558,3410,2318,1301,382, -422,-1090,-1632,-2083,-2494,-2911,-3359,-3816,-4226,-4545, -4750,-4856,-4889,-4874,-4808,-4687,-4534,-4375,-4220,-4054, -3840,-3579,-3270,-2897,-2446,-1943,-1436,-963,-534,-146, 189,434,530,421,96,-426,-1108,-1871,-2616,-3245, -3702,-3956,-3994,-3815,-3455,-2953,-2334,-1635,-916,-199, 557,1389,2290,3246,4235,5203,6093,6869,7497,7944, 8192,8247,8116,7812,7353,6740,5962,5034,3995,2882, 1736,596,-505,-1508,-2360,-3081,-3764,-4503,-5358,-6338, -7430,-8590,-9731,-10752,-11571,-12112,-12335,-12275,-11984,-11518, -10928,-10290,-9680,-9133,-8647,-8209,-7778,-7292,-6716,-6030, -5221,-4316,-3371,-2439,-1579,-871,-363,-69,25,-20, -126,-213,-211,-47,301,814,1468,2240,3078,3925, 4726,5433,6005,6418,6659,6726,6657,6507,6330,6192, 6151,6234,6441,6759,7161,7554,7817,7839,7521,6819, 5785,4496,3027,1460,-105,-1558,-2795,-3767,-4495,-5024, -5416,-5743,-6093,-6528,-7096,-7795,-8543,-9203,-9653,-9778, -9510,-8847,-7847,-6601,-5246,-3915,-2733,-1763,-1004,-397, 106,545,943,1308,1636,1915,2157,2374,2576,2779, 2995,3215,3433,3630,3767,3795,3696,3486,3224,2981, 2844,2887,3107,3413,3715,3960,4098,4100,3978,3792, 3603,3468,3453,3607,3978,4554,5267,6059,6890,7675, 8328,8800,9040,8997,8654,8022,7156,6148,5092,4062, 3111,2253,1465,722,39,-595,-1208,-1809,-2397,-2976, -3502,-3920,-4229,-4438,-4571,-4651,-4695,-4708,-4717,-4720, -4672,-4543,-4351,-4130,-3887,-3614,-3294,-2908,-2435,-1870, -1250,-633,-81,375,689,772,578,151,-437,-1129, -1862,-2553,-3115,-3499,-3700,-3737,-3648,-3466,-3192,-2806, -2309,-1718,-1037,-261,621,1597,2617,3637,4616,5512, 6302,6984,7559,8003,8302,8430,8358,8045,7468,6657, 5668,4567,3444,2403,1492,712,8,-683,-1425,-2259, -3213,-4308,-5532,-6830,-8113,-9303,-10311,-11086,-11600,-11841, -11823,-11601,-11258,-10855,-10440,-10047,-9699,-9375,-9040,-8644, -8132,-7463,-6626,-5660,-4636,-3617,-2668,-1870,-1268,-877, -664,-577,-567,-607,-655,-625,-443,-84,431,1090, 1870,2733,3621,4475,5235,5826,6196,6364,6360,6225, 6031,5870,5818,5958,6306,6797,7345,7877,8324,8594, 8591,8249,7555,6527,5232,3775,2270,817,-483,-1534, -2306,-2848,-3273,-3712,-4266,-4999,-5909,-6935,-7956,-8842, -9475,-9768,-9690,-9270,-8563,-7647,-6615,-5556,-4540,-3590, -2706,-1892,-1146,-463,143,629,981,1228,1423,1635, 1938,2349,2811,3235,3563,3770,3826,3730,3524,3287, 3086,2969,2975,3119,3367,3659,3925,4110,4173,4123, 3976,3760,3523,3315,3186,3175,3337,3714,4329,5150, 6072,7001,7869,8580,9053,9254,9189,8864,8297,7545, 6698,5818,4959,4165,3430,2702,1933,1142,364,-385, -1087,-1717,-2277,-2768,-3189,-3548,-3873,-4154,-4362,-4495, -4564,-4580,-4564,-4541,-4522,-4489,-4408,-4261,-4057,-3765, -3331,-2741,-2027,-1265,-529,109,593,844,828,568, 122,-438,-1046,-1641,-2178,-2631,-3007,-3297,-3484,-3563, -3546,-3450,-3250,-2889,-2329,-1613,-808,47,937,1847, 2766,3694,4642,5603,6539,7398,8120,8617,8817,8710, 8335,7718,6909,5996,5078,4225,3475,2814,2192,1572, 899,102,-874,-2018,-3288,-4660,-6072,-7414,-8612,-9637, -10434,-10945,-11168,-11178,-11075,-10938,-10812,-10698,-10569,-10395, -10149,-9804,-9336,-8721,-7936,-7009,-6001,-4993,-4030,-3135, -2366,-1786,-1395,-1173,-1080,-1075,-1098,-1107,-1070,-935, -624,-92,652,1552,2530,3494,4342,5002,5452,5699, 5752,5663,5515,5397,5373,5497,5795,6270,6907,7654, 8387,8967,9269,9218,8781,7961,6802,5435,4038,2758, 1664,779,75,-521,-1099,-1741,-2525,-3494,-4624,-5839, -7019,-8031,-8786,-9250,-9434,-9373,-9113,-8672,-8050,-7262, -6342,-5334,-4297,-3301,-2421,-1687,-1105,-652,-295,18, 358,773,1272,1838,2418,2909,3234,3388,3404,3315, 3166,3010,2888,2853,2926,3072,3266,3499,3755,3991, 4139,4133,3969,3698,3372,3040,2772,2621,2622,2822, 3283,4006,4918,5915,6879,7714,8369,8800,8974,8905, 8664,8292,7785,7170,6493,5763,4985,4179,3374,2577, 1798,1039,302,-402,-1053,-1650,-2215,-2750,-3230,-3621, -3923,-4138,-4285,-4393,-4480,-4572,-4704,-4862,-5003,-5062, -4993,-4758,-4345,-3766,-3057,-2258,-1450,-729,-161,221, 395,362,160,-154,-545,-975,-1430,-1902,-2388,-2880, -3340,-3698,-3910,-3963,-3863,-3618,-3249,-2780,-2240,-1651, -1019,-312,519,1489,2588,3763,4952,6086,7090,7877, 8371,8543,8419,8044,7503,6878,6208,5523,4892,4340, 3843,3367,2841,2177,1314,237,-1048,-2495,-4006,-5473, -6796,-7927,-8859,-9591,-10124,-10483,-10708,-10850,-10955,-11053, -11129,-11152,-11080,-10868,-10486,-9943,-9265,-8468,-7573,-6614, -5629,-4663,-3765,-2984,-2367,-1941,-1714,-1669,-1742,-1850, -1912,-1848,-1596,-1134,-468,362,1287,2237,3131,3906, 4512,4919,5118,5118,4967,4750,4599,4639,4928,5487, 6271,7195,8137,8941,9462,9604,9337,8680,7738,6657, 5571,4579,3750,3087,2511,1902,1171,280,-747,-1855, -3008,-4185,-5334,-6392,-7322,-8111,-8745,-9186,-9390,-9326, -8987,-8380,-7546,-6580,-5590,-4652,-3827,-3162,-2639,-2186, -1719,-1199,-635,-56,544,1163,1755,2275,2686,2949, 3049,3016,2900,2763,2684,2702,2804,2976,3215,3510, 3810,4062,4250,4329,4241,3980,3590,3119,2658,2331, 2217,2336,2692,3270,4038,4918,5811,6657,7413,8026, 8471,8763,8881,8820,8605,8257,7779,7183,6497,5742, 4964,4209,3481,2757,2029,1294,537,-227,-942,-1569, -2110,-2562,-2921,-3186,-3395,-3604,-3837,-4106,-4423,-4773, -5106,-5359,-5456,-5343,-5002,-4461,-3770,-3011,-2251,-1542, -936,-457,-106,137,279,300,173,-99,-506,-1019, -1590,-2158,-2695,-3155,-3484,-3648,-3670,-3602,-3492,-3356, -3169,-2902,-2525,-1985,-1243,-295,831,2077,3371,4643, 5813,6818,7611,8122,8311,8218,7922,7484,6993,6550, 6181,5852,5534,5196,4775,4221,3474,2497,1304,-44, -1486,-2952,-4347,-5596,-6674,-7585,-8339,-8967,-9516,-10003, -10425,-10772,-11032,-11207,-11301,-11295,-11140,-10812,-10325,-9708, -8961,-8060,-7030,-5957,-4922,-4001,-3265,-2754,-2447,-2299, -2270,-2309,-2368,-2373,-2252,-1957,-1466,-759,130,1135, 2153,3076,3808,4287,4507,4492,4291,4011,3808,3824, 4159,4835,5772,6826,7860,8725,9284,9473,9319,8901, 8311,7649,6989,6366,5772,5176,4551,3865,3087,2209, 1243,218,-849,-1953,-3110,-4330,-5579,-6772,-7800,-8580, -9077,-9272,-9175,-8822,-8260,-7548,-6777,-6027,-5323,-4681, -4104,-3573,-3045,-2473,-1835,-1138,-413,288,918,1455, 1896,2231,2437,2507,2480,2406,2333,2310,2378,2562, 2852,3237,3673,4070,4327,4403,4297,4016,3591,3093, 2603,2209,1977,1949,2133,2501,3008,3646,4402,5224, 6027,6767,7443,8023,8454,8686,8718,8577,8289,7897, 7429,6887,6267,5591,4906,4212,3470,2659,1823,1009, 242,-455,-1055,-1546,-1930,-2217,-2466,-2771,-3179,-3686, -4237,-4770,-5227,-5566,-5748,-5756,-5580,-5228,-4744,-4186, -3584,-2947,-2307,-1688,-1105,-582,-173,72,126,-6, -319,-774,-1281,-1773,-2227,-2626,-2948,-3205,-3431,-3644, -3811,-3920,-3971,-3956,-3853,-3602,-3132,-2407,-1427,-223, 1145,2564,3907,5085,6051,6759,7192,7375,7365,7222, 7020,6825,6673,6571,6494,6368,6110,5660,5015,4179, 3149,1948,638,-706,-2014,-3257,-4437,-5548,-6570,-7490, -8306,-9014,-9619,-10142,-10604,-11022,-11394,-11696,-11875,-11857, -11597,-11094,-10398,-9575,-8651,-7632,-6580,-5587,-4726,-4029, -3524,-3212,-3069,-3075,-3170,-3271,-3286,-3137,-2764,-2131, -1243,-161,977,2016,2821,3307,3443,3298,3014,2752, 2657,2828,3291,4032,4983,6005,6944,7688,8212,8522, 8637,8597,8452,8214,7877,7457,6964,6415,5824,5216, 4597,3943,3219,2373,1377,239,-1028,-2397,-3800,-5161, -6411,-7462,-8249,-8747,-8955,-8894,-8622,-8228,-7766,-7271, -6750,-6205,-5652,-5098,-4513,-3882,-3218,-2523,-1790,-1024, -268,425,1005,1454,1750,1873,1844,1759,1698,1693, 1783,2030,2433,2922,3423,3868,4184,4306,4214,3947, 3572,3156,2741,2351,2013,1788,1738,1887,2183,2591, 3136,3832,4632,5474,6275,6994,7610,8084,8369,8471, 8426,8264,8015,7711,7355,6919,6357,5654,4843,3977, 3096,2235,1449,784,244,-198,-577,-934,-1314,-1768, -2328,-2977,-3643,-4272,-4827,-5261,-5542,-5689,-5733,-5679, -5502,-5181,-4722,-4132,-3427,-2664,-1920,-1265,-751,-395, -202,-177,-299,-527,-829,-1188,-1567,-1924,-2232,-2511, -2794,-3105,-3444,-3798,-4139,-4416,-4589,-4603,-4386,-3883, -3101,-2062,-800,612,2041,3342,4428,5279,5890,6278, 6495,6615,6706,6818,6958,7101,7221,7258,7139,6824, 6337,5716,4947,4004,2911,1703,428,-855,-2090,-3253, -4335,-5338,-6270,-7141,-7963,-8754,-9513,-10219,-10848,-11374, -11766,-11996,-12037,-11834,-11366,-10684,-9864,-8957,-7979,-6946, -5917,-5007,-4303,-3842,-3645,-3695,-3887,-4094,-4199,-4106, -3713,-2976,-1962,-812,316,1279,1963,2316,2361,2208, 2015,1918,2012,2335,2863,3528,4270,5055,5855,6621, 7293,7833,8227,8482,8605,8583,8421,8158,7840,7483, 7097,6699,6285,5830,5299,4639,3783,2697,1418,19, -1441,-2907,-4293,-5508,-6506,-7272,-7811,-8130,-8248,-8206, -8033,-7748,-7390,-7017,-6626,-6180,-5653,-5066,-4430,-3731, -2939,-2060,-1171,-366,304,815,1136,1269,1261,1193, 1160,1226,1431,1783,2252,2778,3275,3695,4024,4231, 4286,4186,3941,3587,3181,2782,2418,2095,1843,1706, 1728,1943,2363,2955,3660,4413,5183,5940,6622,7192, 7650,7999,8262,8443,8535,8512,8351,8045,7583,6949, 6164,5282,4378,3545,2845,2278,1812,1402,989,537, 29,-549,-1191,-1842,-2469,-3095,-3735,-4356,-4904,-5351, -5681,-5864,-5878,-5716,-5397,-4926,-4300,-3572,-2830,-2135, -1521,-1020,-678,-504,-474,-540,-666,-834,-1025,-1229, -1428,-1631,-1881,-2235,-2701,-3245,-3819,-4369,-4834,-5137, -5196,-4948,-4370,-3478,-2341,-1058,244,1468,2550,3465, 4211,4819,5327,5753,6125,6475,6808,7094,7340,7551, 7684,7674,7489,7112,6537,5788,4892,3867,2742,1559, 364,-794,-1875,-2891,-3884,-4894,-5921,-6938,-7924,-8852, -9695,-10442,-11080,-11583,-11920,-12077,-12036,-11734,-11147,-10299, -9254,-8096,-6926,-5864,-5041,-4553,-4418,-4578,-4887,-5154, -5209,-4961,-4401,-3564,-2545,-1488,-533,236,789,1135, 1314,1372,1374,1404,1519,1754,2127,2657,3311,4026, 4771,5543,6303,6989,7548,7979,8272,8413,8400,8277, 8116,7979,7876,7780,7642,7414,7058,6519,5783,4854, 3721,2413,995,-465,-1890,-3223,-4443,-5505,-6347,-6967, -7398,-7660,-7770,-7753,-7665,-7538,-7356,-7111,-6802,-6373, -5748,-4944,-4033,-3073,-2128,-1284,-595,-84,243,421, 492,514,567,706,958,1333,1798,2312,2833,3309, 3698,3989,4169,4226,4169,3988,3676,3261,2792,2335, 1942,1670,1550,1609,1866,2302,2848,3452,4087,4716, 5310,5881,6463,7051,7629,8168,8612,8893,8946,8745, 8331,7763,7086,6357,5644,4967,4321,3728,3197,2709, 2232,1760,1279,769,210,-400,-1058,-1749,-2465,-3204, -3956,-4672,-5274,-5706,-5954,-6030,-5925,-5612,-5106,-4470, -3778,-3100,-2497,-1989,-1579,-1283,-1095,-999,-974,-970, -947,-921,-913,-953,-1097,-1397,-1879,-2543,-3348,-4187, -4926,-5451,-5694,-5635,-5292,-4687,-3843,-2836,-1762,-678, 385,1378,2260,3024,3703,4309,4845,5337,5830,6333, 6814,7238,7583,7831,7924,7796,7432,6872,6157,5330, 4434,3487,2496,1479,434,-634,-1712,-2788,-3869,-4963, -6048,-7081,-8067,-9021,-9960,-10877,-11714,-12372,-12747,-12754, -12331,-11486,-10349,-9109,-7933,-6951,-6274,-5930,-5862,-5970, -6129,-6203,-6104,-5779,-5217,-4465,-3604,-2713,-1857,-1104, -526,-132,140,339,485,583,671,817,1070,1448, 1961,2621,3405,4253,5084,5830,6467,6966,7303,7493, 7613,7705,7782,7862,7972,8087,8158,8145,8013,7713, 7204,6473,5538,4433,3176,1791,332,-1121,-2486,-3684, -4696,-5519,-6165,-6658,-7051,-7390,-7682,-7915,-8069,-8094, -7937,-7581,-7025,-6290,-5392,-4394,-3422,-2574,-1884,-1352, -984,-744,-571,-432,-282,-76,200,527,911,1370, 1891,2429,2939,3384,3735,3969,4069,4016,3802,3429, 2948,2437,1981,1638,1458,1459,1610,1846,2117,2419, 2766,3184,3703,4338,5074,5862,6644,7367,7979,8428, 8677,8711,8530,8183,7737,7214,6620,5987,5361,4767, 4222,3725,3271,2834,2397,1945,1466,938,337,-361, -1153,-2006,-2884,-3747,-4558,-5256,-5780,-6093,-6174,-6036, -5714,-5261,-4699,-4059,-3422,-2890,-2512,-2270,-2099,-1931, -1730,-1485,-1196,-884,-614,-467,-513,-775,-1246,-1907, -2708,-3566,-4391,-5093,-5583,-5804,-5753,-5460,-4951,-4244, -3377,-2411,-1437,-511,354,1155,1885,2560,3212,3867, 4535,5222,5919,6581,7154,7590,7861,7952,7856,7582, 7162,6640,6025,5317,4493,3547,2503,1412,339,-677, -1634,-2552,-3469,-4459,-5595,-6917,-8377,-9833,-11116,-12105, -12714,-12877,-12570,-11857,-10879,-9798,-8771,-7941,-7381,-7087, -6991,-7012,-7049,-7009,-6827,-6478,-5966,-5319,-4573,-3782, -3000,-2262,-1596,-1027,-600,-326,-175,-100,-47,42, 227,541,1002,1616,2369,3200,4026,4782,5432,5958, 6370,6695,6967,7216,7455,7688,7928,8176,8410,8608, 8756,8783,8612,8207,7537,6592,5445,4160,2772,1335, -41,-1270,-2325,-3232,-4034,-4766,-5472,-6167,-6834,-7432, -7909,-8199,-8246,-8029,-7573,-6927,-6153,-5302,-4429,-3609, -2897,-2308,-1850,-1507,-1242,-1008,-791,-584,-356,-80, 248,634,1111,1711,2396,3070,3627,4006,4185,4163, 3965,3652,3278,2891,2558,2302,2111,1974,1876,1802, 1782,1863,2057,2371,2815,3392,4093,4891,5722,6518, 7240,7872,8364,8659,8762,8697,8454,8055,7583,7088, 6557,5979,5401,4886,4451,4079,3743,3403,3016,2554, 2006,1370,638,-203,-1153,-2159,-3161,-4107,-4919,-5509, -5826,-5859,-5661,-5306,-4873,-4412,-3976,-3617,-3344,-3124, -2926,-2690,-2355,-1913,-1420,-934,-509,-203,-61,-150, -497,-1051,-1745,-2547,-3405,-4235,-4951,-5459,-5698,-5673, -5430,-4992,-4374,-3616,-2789,-1973,-1221,-540,120,809, 1550,2345,3198,4088,4946,5709,6352,6881,7301,7622, 7863,8026,8048,7863,7451,6827,6014,5073,4114,3224, 2425,1705,1023,302,-552,-1641,-3002,-4588,-6304,-8045, -9674,-11004,-11882,-12274,-12200,-11744,-11046,-10264,-9515,-8870, -8378,-8052,-7861,-7773,-7735,-7673,-7517,-7239,-6834,-6293, -5617,-4847,-4038,-3237,-2494,-1865,-1388,-1078,-922,-871, -849,-769,-570,-242,194,734,1377,2093,2836,3571, 4253,4845,5351,5790,6143,6424,6687,6977,7316,7713, 8145,8588,9001,9317,9453,9342,8921,8177,7175,6016, 4787,3545,2329,1188,140,-840,-1792,-2746,-3720,-4715, -5693,-6587,-7331,-7883,-8192,-8210,-7953,-7489,-6891,-6227, -5527,-4812,-4118,-3470,-2887,-2395,-2008,-1724,-1533,-1408, -1296,-1130,-846,-394,219,928,1654,2349,2967,3425, 3689,3774,3740,3625,3441,3224,3000,2761,2502,2225, 1965,1752,1589,1475,1445,1564,1871,2339,2932,3635, 4426,5245,6035,6766,7424,7971,8369,8586,8595,8417, 8101,7701,7244,6769,6284,5801,5350,4959,4644,4388, 4146,3856,3481,3004,2385,1559,525,-630,-1811,-2927, -3902,-4672,-5169,-5375,-5367,-5242,-5051,-4831,-4615,-4416, -4229,-4044,-3850,-3590,-3217,-2725,-2143,-1520,-937,-444, -93,52,-38,-369,-921,-1656,-2513,-3412,-4263,-4967, -5450,-5663,-5605,-5326,-4907,-4441,-3968,-3474,-2938,-2339, -1651,-871,-34,820,1664,2477,3250,3991,4725,5479, 6252,6999,7647,8123,8365,8328,8023,7490,6794,6023, 5279,4662,4202,3839,3454,2924,2145,1036,-424,-2174, -4075,-5973,-7739,-9249,-10400,-11137,-11460,-11412,-11090,-10610, -10087,-9600,-9173,-8833,-8594,-8451,-8392,-8367,-8310,-8150, -7846,-7366,-6720,-5940,-5089,-4254,-3500,-2867,-2374,-2028, -1807,-1657,-1543,-1440,-1286,-1039,-682,-220,333,959, 1648,2384,3107,3756,4297,4739,5099,5390,5647,5945, 6349,6891,7535,8217,8873,9425,9763,9841,9663,9222, 8513,7601,6590,5572,4600,3664,2717,1722,661,-461, -1638,-2859,-4059,-5157,-6118,-6899,-7447,-7754,-7865,-7793, -7520,-7060,-6466,-5784,-5053,-4320,-3647,-3115,-2752,-2538, -2418,-2330,-2204,-1979,-1623,-1136,-552,105,794,1466, 2076,2608,3045,3357,3532,3586,3567,3507,3396,3213, 2955,2620,2259,1944,1688,1477,1327,1269,1342,1564, 1952,2499,3183,3958,4787,5617,6393,7071,7628,8060, 8344,8459,8406,8197,7862,7443,6966,6465,5998,5628, 5391,5272,5213,5141,4969,4601,4009,3200,2198,1045, -174,-1347,-2388,-3255,-3918,-4359,-4607,-4724,-4766,-4776, -4778,-4770,-4737,-4675,-4545,-4308,-3971,-3548,-3019,-2391, -1702,-1001,-367,87,266,138,-274,-920,-1722,-2580, -3382,-4032,-4515,-4862,-5098,-5232,-5261,-5167,-4935,-4571, -4081,-3487,-2827,-2138,-1433,-744,-90,562,1275,2068, 2963,3984,5093,6179,7125,7822,8194,8245,8026,7603, 7078,6580,6189,5934,5800,5717,5555,5183,4517,3516, 2156,483,-1380,-3292,-5142,-6822,-8231,-9325,-10092,-10533, -10651,-10494,-10166,-9781,-9424,-9150,-8990,-8924,-8931,-8976, -8982,-8881,-8625,-8185,-7575,-6849,-6068,-5284,-4529,-3843, -3275,-2846,-2529,-2288,-2104,-1976,-1872,-1735,-1511,-1155, -648,-3,725,1458,2148,2769,3285,3676,3970,4230, 4509,4864,5358,6008,6763,7573,8383,9096,9610,9859, 9845,9615,9217,8700,8095,7432,6718,5930,5067,4117, 3042,1838,576,-678,-1905,-3099,-4240,-5282,-6183,-6924, -7466,-7753,-7748,-7458,-6954,-6331,-5675,-5029,-4434,-3936, -3566,-3333,-3200,-3093,-2941,-2697,-2347,-1908,-1393,-801, -159,472,1055,1611,2155,2653,3058,3338,3489,3540, 3522,3443,3290,3047,2733,2384,2029,1698,1411,1186, 1069,1102,1311,1694,2229,2863,3555,4282,5052,5846, 6614,7293,7846,8228,8400,8351,8102,7702,7231,6777, 6398,6140,6027,6036,6093,6125,6078,5878,5435,4722, 3790,2712,1571,445,-613,-1568,-2383,-3046,-3565,-3957, -4242,-4452,-4609,-4734,-4848,-4958,-5056,-5081,-4945,-4592, -4020,-3271,-2424,-1582,-853,-319,-31,5,-185,-558, -1081,-1687,-2307,-2924,-3526,-4091,-4603,-5050,-5376,-5519, -5455,-5195,-4774,-4260,-3730,-3233,-2801,-2420,-2017,-1525, -880,-30,1053,2307,3612,4853,5933,6757,7247,7407, 7314,7091,6850,6677,6623,6689,6817,6931,6947,6779, 6326,5536,4419,3025,1386,-454,-2390,-4262,-5948,-7372, -8482,-9256,-9706,-9881,-9856,-9706,-9509,-9368,-9346,-9420, -9518,-9582,-9592,-9528,-9356,-9040,-8580,-8009,-7338,-6586, -5791,-5023,-4340,-3770,-3337,-3056,-2905,-2826,-2756,-2640, -2431,-2095,-1620,-999,-282,446,1114,1671,2102,2405, 2629,2847,3136,3555,4135,4869,5729,6628,7458,8165, 8724,9113,9328,9394,9362,9261,9048,8672,8144,7505, 6763,5918,4987,3971,2862,1656,384,-933,-2267,-3572, -4781,-5834,-6679,-7259,-7535,-7508,-7228,-6781,-6254,-5731, -5263,-4865,-4534,-4259,-4046,-3884,-3723,-3506,-3208,-2852, -2439,-1952,-1382,-769,-150,463,1067,1632,2130,2553, 2897,3161,3334,3402,3361,3213,2966,2630,2234,1834, 1476,1188,1003,923,918,986,1190,1585,2147,2825, 3603,4458,5334,6176,6923,7499,7848,7942,7819,7544, 7163,6765,6468,6324,6314,6404,6548,6670,6688,6554, 6245,5754,5093,4265,3279,2192,1075,-1,-971,-1773, -2395,-2863,-3233,-3601,-4007,-4443,-4880,-5289,-5611,-5767, -5706,-5402,-4869,-4167,-3381,-2596,-1884,-1310,-899,-642, -513,-511,-650,-955,-1422,-2043,-2779,-3549,-4267,-4865, -5285,-5492,-5493,-5312,-5008,-4680,-4412,-4228,-4115,-4022, -3851,-3487,-2867,-1972,-818,526,1922,3217,4300,5125, 5694,6048,6230,6291,6303,6353,6502,6751,7067,7391, 7646,7752,7638,7239,6502,5391,3935,2214,334,-1575, -3409,-5058,-6424,-7462,-8193,-8683,-9006,-9210,-9328,-9396, -9447,-9525,-9649,-9795,-9904,-9951,-9936,-9816,-9537,-9087, -8489,-7779,-6994,-6193,-5429,-4763,-4249,-3917,-3746,-3682, -3639,-3539,-3327,-2972,-2465,-1821,-1092,-379,197,598, 865,1068,1268,1534,1919,2438,3084,3816,4580,5343, 6102,6842,7528,8132,8629,8996,9236,9362,9378,9266, 9021,8654,8179,7607,6932,6144,5223,4149,2903,1504, 17,-1469,-2887,-4173,-5259,-6091,-6636,-6902,-6927,-6771, -6492,-6153,-5795,-5435,-5109,-4846,-4643,-4480,-4326,-4147, -3920,-3647,-3303,-2861,-2337,-1784,-1238,-687,-117,480, 1105,1724,2289,2755,3090,3295,3382,3340,3174,2925, 2633,2320,1978,1620,1303,1054,846,694,663,794, 1103,1632,2384,3290,4263,5232,6102,6768,7168,7327, 7322,7218,7055,6881,6735,6641,6607,6663,6818,7023, 7199,7279,7206,6934,6428,5690,4778,3776,2756,1788, 914,157,-487,-1060,-1623,-2235,-2929,-3676,-4397,-5009, -5457,-5704,-5740,-5568,-5225,-4755,-4203,-3602,-2987,-2373, -1773,-1211,-719,-362,-207,-286,-622,-1205,-1963,-2796, -3582,-4216,-4621,-4787,-4773,-4675,-4585,-4563,-4628,-4768, -4936,-5055,-5028,-4757,-4191,-3336,-2251,-1015,272,1519, 2640,3554,4237,4740,5112,5376,5586,5801,6069,6425, 6892,7445,8004,8457,8697,8644,8248,7461,6296,4832, 3162,1395,-372,-2070,-3614,-4935,-6017,-6877,-7539,-8042, -8413,-8673,-8865,-9054,-9283,-9534,-9773,-9979,-10123,-10169, -10065,-9770,-9285,-8632,-7844,-7008,-6210,-5535,-5052,-4774, -4646,-4583,-4490,-4272,-3890,-3378,-2806,-2225,-1671,-1179, -760,-409,-120,115,350,640,1028,1519,2100,2743, 3429,4150,4906,5671,6424,7143,7783,8313,8738,9054, 9267,9379,9404,9361,9253,9046,8685,8156,7454,6544, 5395,4044,2570,1047,-458,-1878,-3146,-4211,-5063,-5706, -6102,-6236,-6179,-6019,-5809,-5584,-5375,-5198,-5051,-4900, -4716,-4501,-4273,-4035,-3769,-3466,-3115,-2715,-2257,-1726, -1117,-468,201,873,1510,2089,2586,2973,3219,3316, 3283,3162,3014,2849,2645,2356,1970,1516,1048,623, 334,275,482,920,1553,2353,3246,4141,4954,5646, 6209,6626,6853,6884,6792,6660,6542,6482,6505,6642, 6911,7271,7618,7844,7885,7702,7276,6633,5856,5043, 4250,3512,2839,2213,1572,859,59,-809,-1702,-2576, -3404,-4148,-4739,-5141,-5368,-5455,-5439,-5321,-5081,-4703, -4174,-3498,-2715,-1904,-1139,-511,-139,-118,-433,-973, -1623,-2298,-2928,-3435,-3760,-3908,-3953,-3998,-4125,-4371, -4711,-5088,-5456,-5751,-5877,-5750,-5352,-4688,-3800,-2743, -1582,-397,740,1759,2582,3179,3592,3900,4178,4495, 4921,5481,6165,6945,7743,8447,8957,9200,9131,8718, 7960,6888,5574,4074,2437,746,-887,-2381,-3713,-4864, -5812,-6575,-7192,-7675,-8038,-8348,-8671,-9047,-9497,-9978, -10399,-10656,-10679,-10444,-9976,-9331,-8601,-7885,-7236,-6695, -6299,-6036,-5843,-5643,-5376,-5014,-4567,-4063,-3534,-3006, -2525,-2114,-1767,-1465,-1195,-932,-654,-350,-23,346, 795,1347,1989,2698,3453,4236,5030,5790,6471,7062, 7566,7996,8371,8718,9059,9364,9567,9640,9571,9325, 8870,8207,7334,6238,4934,3457,1889,333,-1118,-2409, -3499,-4358,-4980,-5388,-5634,-5768,-5819,-5797,-5718,-5598, -5455,-5314,-5175,-5025,-4864,-4677,-4476,-4272,-4045,-3763, -3405,-2960,-2402,-1731,-990,-259,409,999,1509,1930, 2301,2659,2983,3206,3295,3244,3034,2678,2204,1664, 1109,601,209,13,32,241,630,1218,1983,2844, 3707,4505,5176,5671,5971,6071,6018,5900,5806,5833, 6032,6387,6816,7247,7621,7871,7933,7794,7494,7061, 6543,6004,5487,4979,4455,3888,3246,2495,1616,635, -364,-1300,-2149,-2905,-3578,-4191,-4753,-5244,-5633,-5875, -5918,-5711,-5223,-4470,-3557,-2620,-1785,-1142,-747,-647, -829,-1199,-1647,-2085,-2448,-2717,-2914,-3061,-3207,-3402, -3679,-4051,-4496,-4988,-5496,-5960,-6286,-6414,-6298,-5900, -5206,-4261,-3169,-2044,-977,-32,754,1376,1857,2242, 2600,3024,3567,4248,5057,5966,6912,7815,8591,9165, 9459,9412,9035,8381,7495,6380,5041,3536,1938,309, -1251,-2620,-3747,-4652,-5383,-5988,-6537,-7098,-7727,-8427, -9131,-9761,-10268,-10608,-10718,-10565,-10189,-9687,-9161,-8663, -8213,-7818,-7477,-7171,-6876,-6564,-6203,-5788,-5322,-4822, -4309,-3804,-3339,-2929,-2562,-2227,-1940,-1698,-1479,-1268, -1055,-774,-370,162,792,1485,2228,3003,3757,4451, 5092,5700,6274,6833,7390,7932,8444,8923,9362,9732, 10002,10136,10071,9742,9127,8239,7115,5816,4389,2889, 1387,-18,-1270,-2348,-3256,-3985,-4534,-4923,-5186,-5362, -5470,-5509,-5455,-5306,-5112,-4972,-4931,-4937,-4922,-4855, -4715,-4478,-4136,-3695,-3172,-2594,-2004,-1417,-843,-266, 327,937,1547,2142,2685,3122,3405,3496,3397,3132, 2734,2239,1687,1123,597,167,-91,-123,91,550, 1230,2070,2964,3775,4412,4852,5114,5234,5259,5257, 5306,5485,5819,6279,6788,7252,7604,7815,7882,7827, 7674,7460,7233,7021,6784,6447,5985,5412,4755,4023, 3225,2403,1585,773,-47,-885,-1763,-2684,-3623,-4524, -5299,-5855,-6111,-6019,-5586,-4891,-4059,-3216,-2455,-1848, -1440,-1250,-1241,-1355,-1540,-1756,-1955,-2106,-2205,-2284, -2388,-2560,-2826,-3201,-3704,-4330,-5033,-5715,-6267,-6601, -6661,-6423,-5921,-5216,-4345,-3365,-2376,-1493,-762,-181, 270,651,1050,1536,2138,2876,3755,4729,5737,6739, 7698,8545,9209,9650,9829,9687,9180,8328,7210,5879, 4404,2881,1426,120,-1014,-1996,-2864,-3691,-4532,-5420, -6359,-7316,-8215,-8989,-9591,-9993,-10183,-10177,-10020,-9761, -9446,-9114,-8803,-8526,-8249,-7948,-7616,-7267,-6913,-6530, -6084,-5575,-5034,-4496,-3989,-3508,-3076,-2733,-2494,-2321, -2188,-2053,-1848,-1547,-1164,-704,-167,436,1092,1791, 2511,3216,3880,4492,5060,5597,6128,6692,7332,8037, 8763,9432,9989,10412,10660,10685,10445,9912,9071,7972, 6705,5368,4009,2643,1305,65,-1054,-2074,-2982,-3727, -4261,-4591,-4777,-4867,-4895,-4892,-4898,-4937,-5009,-5078, -5112,-5073,-4941,-4723,-4436,-4098,-3737,-3366,-2970,-2531, -2038,-1472,-806,-73,660,1345,1976,2547,3031,3388, 3570,3546,3319,2904,2340,1667,961,333,-105,-286, -172,215,828,1578,2373,3098,3645,3985,4143,4205, 4276,4435,4700,5071,5516,5988,6433,6815,7120,7343, 7502,7627,7727,7797,7834,7818,7687,7411,6991,6451, 5855,5264,4704,4173,3638,3035,2319,1436,334,-931, -2216,-3401,-4406,-5183,-5650,-5738,-5494,-5041,-4468,-3835, -3212,-2650,-2208,-1931,-1819,-1830,-1896,-1965,-1983,-1930, -1840,-1758,-1718,-1765,-1961,-2351,-2933,-3656,-4457,-5269, -5996,-6551,-6839,-6805,-6474,-5915,-5208,-4436,-3679,-2997, -2406,-1891,-1428,-999,-558,-54,549,1252,2041,2934, 3937,5025,6164,7315,8415,9346,9973,10207,10025,9457, 8588,7527,6349,5114,3894,2769,1750,773,-237,-1309, -2440,-3610,-4792,-5938,-6986,-7893,-8638,-9200,-9570,-9770, -9852,-9848,-9755,-9584,-9373,-9161,-8962,-8754,-8514,-8232, -7898,-7476,-6973,-6410,-5824,-5243,-4689,-4224,-3853,-3551, -3294,-3079,-2922,-2813,-2694,-2495,-2197,-1787,-1278,-690, -41,635,1302,1934,2534,3121,3687,4215,4733,5292, 5925,6659,7505,8409,9285,10036,10591,10902,10943,10707, 10203,9483,8590,7539,6351,5057,3690,2307,955,-308, -1422,-2329,-3021,-3525,-3863,-4100,-4318,-4550,-4768,-4934, -5044,-5110,-5129,-5096,-5005,-4865,-4705,-4550,-4368,-4115, -3784,-3411,-3003,-2547,-2024,-1426,-755,-26,751,1541, 2279,2901,3351,3584,3543,3193,2576,1805,1006,299, -203,-411,-306,55,575,1167,1756,2251,2604,2836, 3004,3157,3337,3584,3913,4313,4739,5146,5498,5797, 6088,6419,6791,7180,7547,7849,8036,8064,7930,7648, 7258,6841,6487,6222,6009,5786,5471,4984,4275,3347, 2228,948,-424,-1784,-3016,-4026,-4755,-5164,-5248,-5056, -4684,-4224,-3759,-3351,-3040,-2840,-2736,-2690,-2648,-2581, -2466,-2268,-1986,-1678,-1430,-1301,-1372,-1695,-2268,-3032, -3908,-4807,-5638,-6286,-6668,-6781,-6664,-6367,-5936,-5448, -4957,-4459,-3945,-3428,-2932,-2473,-2056,-1662,-1244,-750, -119,702,1738,2966,4349,5792,7172,8374,9290,9839, 9993,9788,9288,8577,7753,6903,6055,5205,4306,3323, 2256,1124,-99,-1414,-2751,-4033,-5224,-6314,-7293,-8122, -8754,-9179,-9419,-9531,-9588,-9628,-9652,-9650,-9608,-9514, -9348,-9100,-8760,-8340,-7866,-7345,-6761,-6130,-5513,-4962, -4513,-4179,-3934,-3750,-3609,-3496,-3379,-3233,-3023,-2717, -2303,-1778,-1157,-473,222,872,1439,1903,2296,2710, 3210,3796,4470,5271,6207,7214,8195,9082,9835,10422, 10824,11038,11041,10801,10297,9520,8488,7253,5906,4517, 3153,1873,731,-250,-1110,-1865,-2514,-3053,-3495,-3862, -4169,-4411,-4591,-4732,-4840,-4895,-4883,-4832,-4760,-4672, -4533,-4335,-4109,-3877,-3626,-3349,-3035,-2629,-2079,-1374, -515,485,1552,2510,3210,3579,3614,3333,2787,2051, 1251,552,89,-84,-14,217,543,905,1244,1529, 1783,2033,2284,2561,2874,3197,3488,3731,3931,4125, 4377,4721,5172,5721,6331,6925,7425,7771,7924,7909, 7799,7636,7440,7255,7133,7099,7117,7100,6976,6698, 6205,5441,4400,3130,1725,299,-1062,-2276,-3264,-3967, -4351,-4444,-4328,-4090,-3807,-3561,-3406,-3350,-3345,-3356, -3355,-3274,-3053,-2674,-2171,-1631,-1182,-931,-938,-1226, -1753,-2452,-3250,-4070,-4833,-5477,-5973,-6315,-6509,-6543, -6412,-6137,-5753,-5298,-4820,-4354,-3926,-3573,-3328,-3164, -2996,-2706,-2209,-1461,-437,861,2373,3982,5539,6902, 7986,8760,9235,9449,9439,9223,8843,8353,7787,7147, 6418,5605,4706,3692,2523,1195,-230,-1690,-3105,-4394, -5516,-6476,-7289,-7945,-8453,-8825,-9093,-9311,-9499,-9659, -9776,-9848,-9856,-9756,-9508,-9128,-8668,-8155,-7591,-6995, -6390,-5811,-5289,-4837,-4483,-4253,-4129,-4075,-4053,-4006, -3877,-3620,-3209,-2651,-2010,-1365,-770,-247,192,572, 941,1356,1848,2428,3107,3882,4728,5616,6536,7491, 8469,9418,10264,10932,11356,11485,11289,10792,10039,9077, 7947,6714,5446,4208,3024,1907,869,-66,-907,-1657, -2300,-2831,-3257,-3600,-3896,-4184,-4462,-4683,-4792,-4779, -4685,-4551,-4403,-4272,-4186,-4161,-4179,-4195,-4130,-3905, -3447,-2714,-1727,-577,614,1718,2593,3115,3254,3059, 2621,2051,1476,977,613,398,311,303,341,428, 581,817,1135,1514,1916,2272,2528,2670,2738,2782, 2852,3003,3286,3721,4288,4940,5614,6260,6820,7228, 7436,7479,7413,7303,7215,7189,7245,7390,7598,7809, 7950,7937,7680,7124,6258,5138,3838,2426,977,-398, -1569,-2454,-3048,-3374,-3486,-3468,-3428,-3444,-3559,-3757, -3975,-4122,-4124,-3944,-3587,-3087,-2496,-1891,-1386,-1068, -969,-1089,-1406,-1880,-2474,-3149,-3867,-4588,-5255,-5823, -6264,-6553,-6634,-6497,-6184,-5752,-5276,-4856,-4579,-4468, -4484,-4560,-4597,-4476,-4088,-3390,-2409,-1207,168,1686, 3258,4751,6060,7136,7959,8527,8852,8989,9003,8929, 8766,8505,8110,7549,6808,5894,4819,3602,2255,811, -658,-2072,-3371,-4528,-5532,-6386,-7108,-7713,-8227,-8686, -9104,-9464,-9755,-9965,-10082,-10090,-9991,-9806,-9524,-9129, -8619,-8013,-7339,-6651,-6017,-5495,-5120,-4899,-4822,-4831, -4839,-4761,-4564,-4248,-3834,-3359,-2871,-2391,-1909,-1438, -995,-570,-136,300,737,1173,1645,2211,2912,3750, 4707,5759,6877,8022,9132,10116,10877,11359,11531,11406, 11026,10426,9623,8653,7561,6384,5175,3989,2863,1821, 883,56,-678,-1361,-2011,-2620,-3181,-3690,-4112,-4401, -4527,-4501,-4359,-4172,-4018,-3964,-4052,-4285,-4599,-4884, -5033,-4948,-4544,-3791,-2754,-1568,-388,667,1510,2088, 2392,2466,2372,2169,1884,1542,1167,782,417,150, 35,71,237,513,871,1270,1659,1960,2112,2126, 2068,2005,1996,2099,2349,2764,3331,4012,4750,5465, 6063,6489,6749,6864,6873,6822,6787,6846,7029,7306, 7634,7988,8347,8621,8684,8433,7835,6909,5705,4314, 2878,1530,350,-595,-1277,-1732,-2063,-2371,-2716,-3103, -3509,-3909,-4253,-4480,-4522,-4362,-4034,-3598,-3087,-2543, -2031,-1620,-1350,-1222,-1231,-1390,-1722,-2239,-2937,-3780, -4670,-5462,-6048,-6391,-6502,-6398,-6126,-5779,-5470,-5273, -5197,-5225,-5343,-5523,-5702,-5784,-5651,-5214,-4453,-3389, -2076,-605,917,2396,3770,5001,6054,6924,7612,8137, 8533,8821,9012,9101,9055,8826,8383,7722,6848,5767, 4519,3166,1786,427,-888,-2145,-3317,-4394,-5379,-6265, -7049,-7738,-8321,-8794,-9188,-9549,-9891,-10178,-10364,-10418, -10302,-9985,-9463,-8798,-8082,-7403,-6823,-6370,-6049,-5826, -5658,-5508,-5370,-5241,-5090,-4871,-4570,-4216,-3836,-3424, -2973,-2492,-2010,-1543,-1109,-730,-407,-112,201,604, 1156,1897,2827,3906,5074,6290,7492,8623,9629,10453, 11052,11400,11485,11292,10829,10113,9193,8136,7024,5924, 4871,3887,2973,2099,1230,352,-534,-1435,-2303,-3053, -3604,-3917,-4005,-3913,-3718,-3523,-3453,-3595,-3959,-4466, -4992,-5399,-5581,-5485,-5104,-4477,-3663,-2724,-1736,-774, 83,807,1415,1895,2190,2249,2100,1788,1366,895, 450,109,-78,-81,82,371,731,1110,1452,1700, 1805,1750,1581,1394,1299,1363,1600,1993,2524,3169, 3875,4558,5150,5624,5969,6178,6242,6210,6172,6223, 6428,6799,7322,7946,8580,9101,9387,9341,8917,8134, 7093,5915,4713,3561,2511,1610,868,238,-357,-971, -1627,-2305,-2955,-3519,-3957,-4247,-4377,-4360,-4241,-4043, -3748,-3346,-2852,-2290,-1718,-1247,-975,-959,-1213,-1702, -2373,-3152,-3965,-4739,-5383,-5826,-6033,-6015,-5829,-5573, -5344,-5218,-5236,-5403,-5691,-6056,-6405,-6635,-6654,-6413, -5901,-5117,-4080,-2843,-1461,-21,1383,2686,3875,4947, 5902,6751,7513,8200,8789,9252,9548,9623,9446,9026, 8401,7609,6658,5570,4382,3130,1828,487,-868,-2170, -3335,-4329,-5188,-5957,-6680,-7387,-8098,-8796,-9433,-9951, -10318,-10501,-10473,-10238,-9840,-9334,-8769,-8191,-7655,-7195, -6812,-6492,-6217,-5976,-5774,-5610,-5467,-5324,-5143,-4885, -4531,-4102,-3620,-3110,-2614,-2169,-1804,-1527,-1317,-1118, -871,-540,-99,481,1234,2169,3251,4425,5653,6908, 8153,9316,10319,11092,11573,11728,11571,11145,10495,9678, 8778,7885,7055,6279,5484,4595,3562,2402,1173,-38, -1109,-1940,-2476,-2729,-2759,-2674,-2596,-2635,-2839,-3189, -3652,-4181,-4694,-5104,-5353,-5411,-5274,-4960,-4475,-3804, -2973,-2043,-1089,-165,682,1400,1929,2221,2249,2043, 1661,1179,692,301,75,48,215,519,874,1209, 1471,1634,1678,1601,1443,1256,1106,1065,1169,1433, 1868,2459,3159,3890,4564,5093,5414,5545,5543,5482, 5457,5560,5863,6378,7064,7851,8634,9285,9685,9773, 9539,9019,8280,7410,6515,5670,4866,4066,3234,2370, 1488,616,-208,-957,-1636,-2273,-2879,-3427,-3870,-4189, -4365,-4371,-4188,-3819,-3293,-2663,-2012,-1428,-992,-767, -811,-1148,-1741,-2498,-3306,-4061,-4685,-5124,-5360,-5403, -5299,-5132,-4997,-4965,-5069,-5307,-5671,-6126,-6605,-7013, -7258,-7261,-6981,-6430,-5641,-4664,-3549,-2354,-1121,112, 1323,2508,3685,4857,5989,7031,7925,8632,9145,9477, 9643,9650,9488,9124,8525,7692,6659,5472,4181,2854, 1554,315,-845,-1925,-2932,-3886,-4832,-5817,-6818,-7771, -8611,-9307,-9830,-10168,-10325,-10305,-10133,-9848,-9476,-9040, -8567,-8080,-7604,-7178,-6841,-6597,-6421,-6284,-6160,-6032, -5860,-5590,-5205,-4744,-4270,-3812,-3384,-3008,-2688,-2421, -2189,-1992,-1815,-1613,-1330,-924,-392,268,1094,2134, 3384,4775,6227,7651,8963,10054,10815,11195,11239,11058, 10756,10397,9998,9575,9099,8494,7692,6656,5404,4018, 2618,1342,278,-530,-1089,-1429,-1624,-1756,-1902,-2106, -2393,-2759,-3191,-3676,-4185,-4667,-5066,-5343,-5483,-5482, -5309,-4911,-4270,-3430,-2457,-1420,-404,497,1206,1663, 1835,1739,1446,1062,689,384,190,132,218,421, 697,986,1251,1443,1515,1444,1247,966,693,522, 527,746,1179,1790,2494,3197,3814,4286,4563,4635, 4547,4405,4365,4549,5018,5722,6554,7395,8150,8739, 9130,9329,9348,9200,8913,8503,7984,7348,6603,5802, 4990,4170,3327,2472,1626,793,-33,-851,-1664,-2451, -3169,-3778,-4238,-4502,-4527,-4307,-3854,-3221,-2494,-1798, -1250,-929,-861,-1039,-1449,-2064,-2795,-3505,-4099,-4531, -4779,-4859,-4812,-4706,-4615,-4597,-4708,-4994,-5454,-6041, -6659,-7195,-7558,-7692,-7586,-7270,-6799,-6209,-5500,-4648, -3649,-2527,-1313,-22,1317,2638,3885,5044,6116,7091, 7955,8698,9305,9739,9946,9894,9591,9051,8274,7301, 6215,5096,3986,2893,1798,685,-452,-1617,-2795,-3958, -5092,-6184,-7211,-8122,-8873,-9447,-9869,-10155,-10276,-10212, -9967,-9587,-9140,-8678,-8228,-7825,-7508,-7285,-7132,-6999, -6851,-6673,-6444,-6152,-5790,-5359,-4905,-4486,-4117,-3778, -3457,-3146,-2858,-2613,-2434,-2326,-2253,-2141,-1930,-1547, -912,39,1291,2766,4360,5916,7277,8373,9192,9750, 10113,10396,10655,10871,10996,10970,10728,10212,9416,8377, 7156,5824,4485,3234,2139,1236,521,-20,-426,-746, -1031,-1323,-1652,-2022,-2436,-2898,-3408,-3949,-4498,-5023, -5474,-5785,-5879,-5704,-5237,-4496,-3555,-2508,-1470,-527, 238,797,1140,1263,1182,951,646,345,127,57, 156,385,679,982,1244,1418,1469,1362,1086,704, 324,64,26,256,748,1426,2148,2764,3200,3429, 3483,3435,3386,3417,3583,3894,4360,4978,5702,6455, 7164,7798,8337,8762,9055,9194,9175,9019,8739,8342, 7852,7270,6597,5861,5100,4342,3569,2751,1869,923, -73,-1097,-2097,-3011,-3764,-4283,-4511,-4442,-4102,-3548, -2885,-2224,-1664,-1261,-1069,-1110,-1379,-1847,-2451,-3101, -3686,-4104,-4295,-4291,-4186,-4088,-4064,-4160,-4402,-4782, -5271,-5809,-6331,-6802,-7204,-7522,-7727,-7796,-7714,-7460, -7024,-6411,-5634,-4700,-3616,-2428,-1202,23,1268,2557, 3868,5149,6354,7454,8398,9151,9668,9916,9895,9647, 9214,8640,7949,7147,6254,5296,4280,3180,2005,788, -447,-1680,-2899,-4109,-5312,-6460,-7501,-8398,-9120,-9655, -9997,-10134,-10063,-9823,-9482,-9105,-8751,-8451,-8220,-8049, -7904,-7737,-7532,-7277,-6984,-6662,-6342,-6028,-5695,-5320, -4912,-4480,-4012,-3537,-3134,-2902,-2881,-3044,36,107, 212,263,244,263,391,565,713,707,601,408, -165,-1105,-1539,-1163,-857,-1685,-3245,-4156,-3993,-2726, -1512,-1420,-1944,-2476,-3107,-3096,-2095,-1138,-425,308, 650,747,55,-1226,-1479,-1156,-1448,-2890,-5459,-6926, -5853,-3560,-1536,-565,-778,-1735,-2997,-3664,-3643,-4306, -5345,-5989,-6684,-6931,-6125,-4501,-2861,-2103,-2461,-2863, -3031,-3232,-2596,-891,645,926,478,750,1902,2702, 3166,4500,6441,7401,6322,4795,4498,4409,4232,4138, 3539,2845,2584,1916,1542,3054,5188,6553,7181,7139, 6214,4805,4459,4856,4452,3921,4419,4863,4674,4676, 4319,2488,-685,-3795,-5554,-5905,-5932,-5815,-5040,-4227, -4199,-4653,-4134,-2432,-953,438,2211,3319,3577,3614, 3472,3196,3056,2538,1117,-919,-2529,-2518,-549,1763, 2925,3409,3762,3910,4597,5597,5258,3962,4093,6084, 7854,8318,8336,8081,7202,5954,3875,1029,-200,613, 752,-16,-346,691,3625,6107,6310,5208,3852,2888, 2327,2447,4194,6439,7376,7425,6170,3978,3181,4364, 6045,6398,5108,3532,2836,3170,4510,4834,2262,-834, -2249,-3416,-5344,-6354,-4990,-2430,-1066,-1437,-1738,-1893, -2660,-3393,-4304,-6147,-8731,-10206,-9724,-8099,-6042,-3836, -2969,-5435,-9932,-12583,-11867,-10882,-11317,-10697,-7920,-5615, -4344,-2384,-1378,-3556,-7048,-10698,-13940,-15527,-15157,-13492, -11042,-8364,-6701,-6564,-7587,-8762,-9351,-9416,-9179,-9010, -8774,-7872,-6870,-6368,-5149,-3206,-2545,-2998,-2908,-2280, -950,2073,5724,8254,9524,10154,9728,7319,4686,4299, 4922,4905,5541,7728,10586,12394,12680,12599,11799,9655, 8332,9339,10453,10189,9787,9650,9091,7935,6721,5073, 2200,-392,-1920,-3601,-5560,-7443,-8273,-6720,-3943,-2044, -891,-449,-969,-790,1028,2140,304,-1930,-1814,-954, -1336,-2266,-2740,-2885,-2616,-1958,-1824,-2334,-1705,327, 1289,561,265,1814,3528,3564,2404,1386,1086,1334, 2119,3175,3826,3429,2408,1412,26,-1074,-197,2275, 3837,2965,399,-1675,-878,2244,4716,4744,3092,2163, 2982,3988,4549,6014,8437,10398,11724,12506,11977,10745, 10715,11248,10189,8326,7283,5918,3812,3416,5091,5905, 4520,2506,2279,4489,6497,6295,4959,2891,-476,-3395, -3610,-2266,-2494,-3812,-3830,-3917,-5583,-6970,-7876,-9950, -12055,-12448,-12059,-11909,-10920,-8267,-5369,-4442,-5380,-6921, -8873,-10768,-11976,-11948,-10919,-10013,-9301,-8483,-8264,-8264, -7354,-6426,-6929,-7612,-7152,-7134,-8377,-8740,-7486,-6124, -5675,-5970,-6128,-6246,-6743,-6085,-3180,-10,1551,3060, 5724,7259,6292,5305,5044,3955,3662,5915,8325,8596, 8185,8403,8255,6901,5496,5171,4876,4723,6287,8193, 7767,5929,5260,6064,6230,3918,523,-1792,-3105,-4029, -4794,-5931,-7014,-6842,-5212,-4017,-4602,-4453,-1716,611, 492,361,1092,1379,913,277,-299,-1723,-3527,-3126, -1019,-540,-1273,-1087,-284,622,1671,2805,3799,4285, 4139,2808,1002,1015,3547,6768,8124,6026,2276,400, 447,476,697,1545,1914,1377,796,215,-363,61, 1195,1712,1918,3075,3903,3191,3380,6044,8631,8956, 8270,8274,9135,10579,12174,13214,13055,11428,9485,8899, 9070,8230,6018,3290,1199,212,815,2804,4041,4110, 4632,4686,3175,1199,-541,-1515,-2202,-3677,-4789,-4523, -4031,-4123,-4592,-5543,-7501,-10153,-12865,-14831,-15041,-13087, -10577,-9161,-7737,-6116,-6560,-8394,-9241,-9862,-11016,-11765, -11780,-11747,-12330,-12917,-12090,-10534,-9622,-9074,-9048,-9763, -10537,-10578,-9590,-8492,-8387,-8485,-7600,-6677,-6788,-7305, -7346,-6724,-5016,-1381,2713,4354,3994,4378,5339,5041, 3963,3663,4892,7095,8990,9745,9277,8778,9360,9828, 8513,6559,6512,7764,7763,6488,5730,6268,7707,8710, 8333,7161,5346,3243,2023,985,-1524,-4890,-6309,-5505, -5047,-5258,-4665,-3417,-1765,877,3209,3231,2395,2674, 2687,1155,-455,-217,1486,2413,1240,-1411,-3539,-3310, -1739,-405,741,1117,51,-1450,-1940,-753,1288,2640, 2870,2659,2772,2698,1431,611,1647,2961,3112,2611, 1971,1069,311,458,1295,1738,1242,674,1331,2735, 3794,4667,5095,4175,3398,5069,7939,9673,10641,11664, 12337,12344,12294,12736,13571,13524,11368,8063,5575,4374, 3347,2634,2793,2854,2343,1858,1575,1185,681,-27, -1161,-2622,-3688,-3733,-3029,-1567,327,919,-356,-2188, -4512,-7839,-10856,-12452,-12652,-11594,-9955,-8636,-8123,-7971, -7413,-6537,-6286,-6714,-7303,-7988,-8300,-7841,-6800,-6363, -7384,-8571,-8666,-8255,-8454,-9600,-10768,-10379,-8641,-7709, -8161,-8786,-9151,-9326,-9761,-11302,-12212,-9967,-5746,-2707, -1419,-82,1144,702,-277,-484,-675,-277,1988,4749, 6026,6160,6228,6905,8050,8406,7303,6058,6138,7341, 8361,8039,6935,6497,7569,9147,8499,6249,5611,6108, 4883,2077,-421,-2027,-3193,-4606,-6544,-8168,-8213,-6353, -3568,-1061,421,62,-1507,-2339,-1243,1254,2716,1444, -815,-1735,-2135,-2664,-1862,-461,-368,-1211,-2220,-3593, -4794,-4781,-3350,-1171,701,1988,2735,2728,2315,2522, 4111,5513,4505,2347,2212,3396,3104,2181,1990,1398, -196,-1317,-192,2164,3712,4309,4174,3303,3360,5141, 6912,8091,8636,8708,9191,10298,11746,13349,14650,15202, 15276,14785,12956,10514,8936,8603,8260,6824,5203,4398, 4108,4283,4605,4181,2814,706,-1217,-2591,-3640,-3105, -287,2519,3692,4055,3189,123,-3391,-5196,-6302,-8298, -10389,-11361,-11071,-10230,-9982,-10601,-11101,-10351,-9510,-10194, -11246,-11090,-9933,-8661,-8235,-8837,-9172,-8750,-8710,-9568, -10535,-11324,-11917,-11311,-9430,-8379,-9415,-10668,-10919,-11843, -13443,-13799,-12722,-10432,-6726,-3461,-2334,-2471,-2010,-129, 1317,738,51,2071,5569,7249,7064,7737,9596,10597, 10516,9806,8728,8622,9416,9505,8975,8284,7360,7358, 8744,9990,9851,8242,6441,6265,7665,7936,5367,1973, -1303,-5439,-8342,-8147,-7044,-6934,-7202,-7020,-6930,-6976, -5824,-3580,-2600,-3141,-3438,-3668,-5215,-6872,-5951,-2792, -467,-551,-2253,-4125,-5289,-5843,-5563,-4495,-4159,-4734, -4468,-2842,-1003,818,2324,2448,1515,1109,2261,4258, 5422,5579,5172,3897,2700,3077,4267,4477,3606,3286, 3772,3386,2858,3789,5293,6618,7728,7751,6754,6304, 7336,9571,11909,13481,14363,15078,15479,15205,14504,13585, 11659,8639,6338,5479,4237,2900,4069,6881,7364,4695, 1108,-1796,-3724,-4436,-4111,-3314,-1565,1413,3891,4361, 3761,2791,1122,-1162,-4241,-7431,-8966,-8809,-8473,-8261, -8292,-9127,-9688,-9097,-8478,-8735,-9452,-9646,-8549,-6295, -4629,-4858,-5686,-5566,-5584,-7536,-10752,-12522,-11007,-7572, -6164,-7419,-8386,-8780,-10536,-13043,-14598,-15071,-14466,-12779, -10588,-8673,-7355,-5781,-3833,-2687,-2634,-3190,-3506,-2161, 904,4055,5785,6253,6837,8743,11582,13007,11641,8926, 7325,7569,8701,9817,10384,10017,9240,8556,8257,9350, 11336,11787,10465,8900,7176,4408,923,-1441,-2096,-2820, -5068,-7827,-9550,-9968,-8738,-5832,-2952,-1758,-2287,-3624, -4887,-5516,-5072,-3910,-3270,-3307,-3588,-3720,-2978,-1991, -2248,-3625,-5647,-7943,-8572,-6704,-4604,-3817,-3182,-1774, -448,444,1754,3401,4324,4772,4550,2846,1189,1510, 3027,4185,4794,4828,3752,2102,1773,3132,4473,4823, 4722,5278,6583,7018,5986,5797,7679,9511,10213,10643, 11075,12247,15015,17480,17310,14953,11923,9133,6809,5187, 5127,6674,8139,8528,8160,7150,5096,2680,1305,341, -1322,-2070,-538,2007,4306,5491,4713,3106,2638,2076, -723,-4758,-7107,-6858,-6586,-8239,-9993,-9767,-8151,-7219, -8089,-9663,-10458,-10525,-9574,-7443,-5845,-5974,-6643,-7094, -8400,-10514,-11487,-10817,-9814,-8990,-8108,-7985,-9257,-10361, -10212,-10443,-12207,-14470,-15089,-13298,-11110,-10182,-10073,-10112, -9643,-8403,-7029,-5727,-4259,-3391,-3495,-3207,-1026,2412, 5114,6289,6814,7421,7814,8017,8772,10164,10990,10044, 8230,7269,6936,7369,9644,12254,12867,12282,11526,9973, 8044,6980,6355,4477,1432,-1852,-5827,-9107,-9484,-7349, -5347,-4905,-5534,-6082,-5178,-3572,-3212,-4034,-4791,-5308, -5350,-4225,-2308,-1199,-1403,-2126,-3523,-5329,-6059,-6343, -7141,-7154,-6192,-6018,-6467,-6034,-3815,-612,1592,1997, 2156,2848,3135,3117,3356,3619,4185,5202,5352,3747, 2453,3488,5380,6134,6117,5974,5830,6200,7113,7892, 8097,7636,7053,7243,8116,8874,10358,13393,16808,18619, 17584,14530,11757,10166,9050,7295,5160,5386,8185,9470, 7811,5813,4840,3516,976,-1605,-3022,-3341,-2050,872, 3288,3833,3745,4181,4542,3491,1067,-1626,-4217,-6469, -7236,-6500,-6136,-6552,-6526,-5981,-6458,-8388,-9810,-8518, -5690,-4195,-4480,-5293,-5808,-5925,-5724,-5701,-6475,-7236, -6867,-6080,-5763,-5394,-5460,-7494,-10068,-10895,-10684,-10758, -10923,-10998,-11542,-12204,-11959,-10587,-8997,-7913,-7389,-7507, -7858,-7575,-6382,-4436,-2278,-1026,-344,1091,2882,4340, 6718,9593,10810,10516,9905,8268,5675,4630,6913,10117, 11270,10630,9662,9777,11220,12610,12798,11422,8329,4741, 2271,192,-1928,-3422,-5052,-6979,-7572,-6652,-5866,-5753, -5579,-5034,-4921,-5756,-6625,-6248,-4626,-3227,-3452,-4432, -4697,-4587,-4315,-4160,-4779,-5616,-5813,-6206,-7919,-9662, -9167,-6808,-4656,-3185,-2078,-1732,-1862,-773,1498,2726, 2227,1282,1129,2024,2734,2248,1803,2852,4654,5332, 4144,2974,4210,6872,8044,6909,5091,4159,3960,3911, 4460,6042,8541,11663,14478,15674,15208,13957,12749,11516, 9465,7622,7627,8503,9013,9869,10539,9093,6049,4022, 3205,1472,-1160,-2206,-1156,376,1534,2425,3773,5897, 7208,6088,3126,-79,-2363,-2835,-2090,-1989,-3178,-4655, -5710,-6403,-6578,-5835,-5557,-6422,-6208,-4443,-3367,-3490, -3910,-5153,-6880,-7376,-6710,-5993,-5298,-4784,-4928,-5688, -6512,-6998,-7355,-8126,-9325,-10496,-11661,-13018,-13693,-12586, -11023,-10943,-11255,-10806,-10881,-11706,-11629,-9889,-7294,-5366, -5380,-6167,-5637,-3368,-290,3525,7068,7998,7559,7353, 7505,8080,9294,9911,8714,7793,8955,10484,11173,12095, 13714,14826,14308,12653,11069,9778,8485,6524,3132,-632, -2888,-3401,-3371,-3946,-4931,-5237,-4888,-5217,-5925,-5578, -4973,-4857,-4498,-3910,-4430,-6103,-6534,-4237,-1399,-1079, -2872,-4518,-5062,-5069,-5537,-6523,-6958,-6017,-4313,-3591, -4347,-4174,-1639,785,1185,440,-499,-759,458,2008, 2454,2141,2143,2661,2695,2391,2826,3814,4906,5962, 6594,6603,5573,3675,3005,4071,4552,4275,5923,9799, 12624,12892,12784,13061,12225,10685,9888,9150,8617,9607, 10936,10726,9570,8578,7969,7385,5814,3214,368,-2075, -3419,-2408,507,2548,2875,2948,3183,2814,2177,1807, 916,-745,-2155,-2996,-3820,-4697,-5707,-6905,-7800,-8090, -7184,-5303,-4102,-3931,-3827,-4519,-6630,-7824,-6720,-5402, -5365,-5547,-4942,-4733,-5449,-5669,-5138,-5001,-5364,-6102, -7896,-10050,-10974,-10129,-8624,-8083,-8686,-9927,-11661,-12917, -11943,-9074,-6940,-7460,-9180,-9417,-8697,-8258,-6881,-4146, -1580,331,2001,3232,4466,6442,8686,9177,7281,5701, 6395,7795,8381,9096,10547,11606,12013,13166,15015,15138, 13286,11887,11095,8815,4777,1355,195,450,169,-1754, -4535,-6432,-6453,-5215,-4595,-5501,-6045,-5141,-4647,-5889, -7227,-6371,-4100,-2717,-2698,-3388,-4561,-4833,-3578,-2962, -3965,-5053,-5574,-6120,-5824,-4061,-2643,-2726,-2397,-620, 425,-140,-537,535,2594,3682,2806,1851,2006,1875, 1589,2203,2888,3331,4702,6696,7146,5920,4869,4182, 2820,1246,1097,2624,4754,6985,9356,11135,11033,9961, 10187,11262,11252,10373,9771,9119,8693,9488,10991,11655, 10855,8895,6123,3178,1003,98,-260,-676,-538,436, 1559,2336,2869,3233,3102,1935,834,1207,1667,415, -2047,-4275,-6074,-7457,-7783,-7050,-6048,-4877,-3622,-3592, -4913,-5452,-4889,-4805,-5117,-4960,-4925,-5866,-7057,-6473, -3663,-1437,-1769,-3677,-5817,-7166,-7130,-6555,-6559,-7202, -7983,-8924,-10784,-12365,-11599,-9491,-8364,-8692,-9475,-9833, -9762,-9678,-9001,-8008,-8275,-8740,-6736,-2920,-368,488, 1634,3720,5099,4892,4217,3531,3447,5045,6658,6020, 5061,6693,10374,13605,14771,14360,13881,13446,11937,9391, 7341,6281,5241,3509,1264,-1349,-3657,-4052,-3213,-3150, -3848,-5231,-7074,-7587,-6221,-5151,-5429,-5873,-5356,-4429, -4612,-5359,-5180,-4298,-3788,-4060,-5056,-6403,-7090,-6291, -4771,-4453,-5092,-4760,-3792,-3489,-3199,-2124,-823,212, 1074,1958,2242,1248,169,266,696,498,541,1951, 4383,6310,6941,6622,5116,2529,915,1414,2709,4022, 5467,6428,6920,8224,10539,12141,11813,10805,10306,9676, 8991,9556,11247,12653,12809,12037,11606,11122,9251,6547, 4156,2388,1583,1799,2276,2568,2852,3078,2915,2607, 3016,4273,4998,4473,3636,2598,386,-2966,-5650,-5923, -4842,-4403,-4880,-5797,-6484,-5633,-3630,-2773,-3510,-4628, -5858,-7593,-8568,-7205,-4835,-3875,-4057,-4173,-4931,-6246, -6220,-4731,-3432,-3902,-6205,-8096,-8258,-8229,-9103,-10019, -10428,-10338,-9356,-8156,-8581,-9994,-9451,-7581,-8136,-10939, -11845,-9648,-6846,-4744,-3148,-1535,-13,1320,2915,4332, 4416,3773,3588,3190,2265,2226,3754,6347,9438,12188, 13425,12959,12399,13358,14663,14206,11986,9459,7402,5476, 3393,1840,948,169,-468,-1430,-3406,-5041,-4783,-3532, -3298,-4357,-5224,-5421,-5761,-5532,-4085,-3349,-4075,-4197, -3268,-3174,-4534,-5513,-5165,-4656,-4685,-4925,-5268,-5782, -5860,-4992,-3789,-3078,-2627,-1487,239,1609,2268,2097, 298,-2383,-3102,-905,1984,3742,5000,6037,5909,4607, 3698,3783,3259,1614,676,1237,2351,4006,6206,7943, 8555,8868,9540,9421,8223,7897,8726,9017,8937,9911, 11601,12244,11160,9422,8029,6561,4515,2663,2009,2637, 3207,2505,954,-406,-546,1350,3948,5225,5700,5528, 3685,1598,1123,875,-979,-3327,-4731,-5887,-7149,-6865, -4602,-2317,-1597,-2626,-4937,-6941,-7020,-5422,-4280,-5231, -6547,-5692,-3968,-4160,-5260,-4752,-3167,-2645,-3857,-5255, -5805,-6148,-6640,-7051,-7987,-9701,-10647,-9792,-8442,-8036, -8217,-8195,-8428,-9255,-9717,-9657,-9761,-9337,-7672,-6312, -6269,-5905,-3578,202,3243,4327,3874,2588,1702,1938, 2265,2499,3461,4955,6495,7874,9170,10986,13188,14644, 14908,14028,12012,9827,8701,8527,7716,5444,3127,1936, 924,-402,-1308,-1993,-2708,-3310,-3961,-4880,-5982,-6466, -5659,-4561,-4295,-4259,-4347,-5179,-5648,-4554,-3363,-3928, -5440,-5768,-4808,-4322,-4699,-5226,-6143,-7446,-7742,-6311, -3642,-781,976,1065,44,-1367,-2163,-1951,-1574,-1330, -284,1769,3370,3920,5036,6726,6282,3709,2094,1831, 1423,1149,1605,2817,4691,6532,7522,7743,7792,7899, 7703,7055,6741,7428,9129,11187,12817,13366,12529,10448, 8500,8070,8271,7897,6932,5504,3876,2412,1347,1205, 2246,3754,4774,4278,2669,2901,5688,7416,5608,1890, -1133,-2900,-4476,-5665,-5494,-4926,-4823,-4531,-4212,-4700, -5414,-5227,-4602,-4916,-6336,-7464,-7575,-7126,-6347,-5439, -5039,-5176,-5160,-4475,-3634,-4013,-5293,-5508,-5457,-7025, -9063,-9544,-8509,-7173,-6529,-7039,-8584,-10009,-9893,-8820, -8652,-9394,-10016,-10376,-10629,-10443,-9315,-7162,-4703,-2304, -6,842,386,761,2250,3246,2853,1573,796,1312, 2846,5183,7910,10420,12550,14051,14790,14943,14414,13353, 12269,11163,9809,8125,5869,3690,3107,3727,3159,803, -1274,-2561,-3853,-4701,-4582,-4562,-5174,-5377,-4980,-4728, -4305,-3642,-4172,-5872,-6851,-6143,-4408,-3065,-2977,-3569, -4562,-6572,-8668,-8644,-6539,-4491,-3498,-2467,-865,144, 104,-439,-1380,-2576,-3122,-2598,-1569,-481,1144,3574, 5555,6113,5967,5301,3739,2207,1664,1563,1313,1455, 2926,5601,7753,8048,6833,5253,4448,4677,5456,7045, 9779,12116,12149,10376,9308,10474,12492,12752,10814,8269, 6343,5357,5321,5595,5063,3648,2693,2699,2674,2941, 4745,6986,7920,7640,6423,3997,1132,-663,-1275,-2296, -4445,-6045,-5724,-4622,-4098,-3924,-3608,-3518,-4153,-5245, -6156,-6782,-6995,-6442,-6117,-6866,-7471,-6747,-4957,-3503, -3266,-3891,-4984,-6467,-7364,-7232,-7259,-7716,-7759,-7365, -7732,-9405,-10563,-9725,-8576,-8742,-9489,-10661,-12316,-13075, -12392,-11351,-10566,-9669,-8570,-7116,-4787,-2077,-225,610, 1385,1990,1859,1054,-69,-232,1757,4497,6398,8092, 9953,11641,13379,15059,15681,15124,14029,12453,10554,9157, 8971,8845,7189,4992,4012,3503,2110,191,-1377,-3027, -5159,-6510,-5635,-3692,-2661,-2989,-4341,-6031,-6897,-6373, -5095,-4072,-3768,-3530,-3261,-4025,-5704,-7064,-7736,-7928, -7586,-6352,-4452,-3159,-2495,-989,735,577,-1352,-3014, -3298,-2647,-1898,-1333,-525,1164,3620,5399,5607,5247, 4658,2903,467,-975,-376,2161,5193,6621,5958,4237, 3021,3452,4800,5829,6327,6555,6689,7309,8685,10452, 11727,12038,12006,11627,10266,8538,7987,8471,8420,6819, 4357,2596,1932,2021,2947,4144,4996,5827,6829,7133, 6276,4980,4090,2972,716,-1642,-3136,-4231,-4437,-3417, -2901,-3770,-4638,-4470,-3635,-3304,-4132,-5322,-6072,-6849, -7962,-8474,-7303,-5363,-4216,-3568,-3508,-4647,-5667,-5337, -4750,-4912,-5546,-6698,-8122,-8805,-8226,-7168,-7035,-7727, -8098,-8203,-8847,-10098,-11328,-11904,-11687,-11545,-11956,-12207, -11361,-9366,-6871,-4308,-1751,153,525,-165,-361,356, 950,604,134,768,2372,4319,6877,9984,12306,13235, 13465,13704,13982,13820,13130,11790,9683,8073,8368,9146, 8421,6531,4372,1917,-822,-2672,-2817,-2388,-2560,-2864, -2797,-3014,-4199,-5820,-6114,-4624,-3185,-2873,-2926,-2926, -2985,-3070,-3827,-5622,-7269,-7563,-6667,-5779,-5098,-3520, -1361,-212,-424,-937,-1176,-1189,-1427,-2267,-3284,-3504, -1992,1185,4527,6242,5837,3857,1625,816,1427,2093, 2359,2707,3142,3106,2737,2976,3936,4879,5217,4541, 3597,3882,5484,7350,9038,10116,10271,10324,10721,10847, 10727,10894,10918,10237,9150,7601,5360,3529,3555,4347, 3938,3244,3889,5494,6923,7632,7626,6970,5521,3669, 2255,1107,-114,-1111,-1947,-2823,-3707,-4182,-3703,-2635, -2020,-2122,-2986,-5005,-7214,-7811,-6843,-6110,-6365,-6551, -5897,-5265,-5225,-5094,-4620,-4274,-4487,-5386,-6554,-7467, -7956,-8106,-7945,-7513,-7067,-7323,-8476,-9240,-8887,-8445, -8837,-9891,-11451,-13040,-13818,-13692,-12639,-10883,-8941,-7149, -5612,-4158,-2216,-159,571,-389,-1739,-1916,-1099,-420, 525,2341,3957,5158,7447,10877,13453,13881,13009,12348, 11776,10897,10425,10616,10883,10959,10290,8098,4821,2141, 1228,1053,-84,-1505,-1711,-1623,-2594,-4063,-5018,-5303, -5277,-5141,-4771,-4201,-3512,-2538,-1784,-2277,-4204,-6350, -7193,-6617,-5922,-5630,-5633,-5886,-4792,-1604,1021,919, -607,-2276,-4066,-5177,-4606,-2482,74,2131,3228,3117, 2479,2328,2743,3074,3022,2334,1372,1226,1913,2794, 3510,3804,3937,4130,3730,2763,2468,3658,5715,7004, 7020,7125,7876,8708,9858,11289,11901,11590,11232,11054, 10536,9253,7737,6391,4775,3393,3327,4022,4526,5347, 6910,8163,7718,6189,5677,6266,6240,4854,2651,480, -1165,-2206,-2287,-1456,-825,-1009,-1519,-2305,-3385,-4119, -4547,-5277,-6003,-6175,-6071,-6430,-6872,-6409,-5155,-4195, -4041,-4543,-5405,-6078,-6423,-6626,-6498,-6168,-6418,-7556, -8678,-8475,-7096,-6272,-6669,-7548,-8678,-10090,-11150,-11582, -11934,-12913,-14139,-14016,-11972,-9268,-6861,-5234,-4489,-3734, -2434,-1428,-1499,-2293,-2773,-2494,-2222,-2024,-523,2315, 5906,9071,10377,10878,10853,10317,10511,11353,11753,12191, 12921,12590,10839,8857,7224,6019,5048,3828,2186,444, -606,-578,-537,-1857,-4409,-6300,-5952,-4284,-3327,-3271, -3316,-3506,-3610,-3113,-2702,-3383,-5002,-6648,-7843,-8538, -8070,-5805,-2831,-687,-65,-1245,-3222,-4317,-4233,-3838, -3482,-2930,-1843,-606,70,709,1900,3042,3503,3100, 1918,771,524,1267,2380,2916,2880,2801,2547,2234, 2393,2908,3213,3048,2955,3937,5195,5347,5500,7153, 9107,9866,10066,10761,11845,12504,12218,10907,8497,5921, 4506,4332,4694,5100,5353,5325,5238,5636,6955,8431, 8661,7712,6736,5800,4212,2135,619,197,181,-105, -466,-796,-1374,-2027,-2340,-2305,-2384,-3310,-4962,-6328, -6772,-6182,-4906,-4172,-4364,-4722,-5007,-5249,-4856,-3986, -3824,-4765,-6259,-7438,-7524,-6583,-5996,-6743,-7447,-6567, -5436,-5549,-6400,-7488,-8811,-10223,-11956,-13631,-14059,-13186, -12066,-11123,-10255,-9092,-7340,-5103,-2976,-2029,-2431,-3220, -3990,-4727,-4639,-3431,-1555,1041,4129,6325,6621,6266, 7330,9564,11090,11361,11299,11600,12330,13055,12943,11632, 9276,7065,6227,6308,5775,4327,2681,989,-796,-2465, -3545,-3755,-3594,-3808,-4586,-5390,-5192,-3355,-1169,-646, -2124,-4527,-6656,-8253,-9025,-8420,-6670,-4685,-3000,-2217, -2561,-2878,-2710,-2793,-3103,-3275,-3495,-3786,-3554,-2034, 321,1864,2052,1929,2079,2209,1913,1535,1887,2667, 2850,2596,2443,2267,2407,3124,3604,3174,2416,2405, 2963,3288,3578,4186,4328,3867,4343,6708,9769,11548, 11895,12023,11840,10565,9061,8241,7313,6177,5472,4886, 4223,4049,4546,5486,6831,8121,8734,8247,6834,5303, 4515,4456,3899,2373,1177,594,-432,-1190,-549,327, 14,-1353,-3120,-4337,-4250,-3575,-3847,-5192,-6084,-5793, -5314,-5278,-4989,-4419,-4120,-4074,-4385,-5035,-5466,-5755, -6324,-7157,-7935,-8076,-7168,-5611,-4350,-4290,-5481,-6985, -8192,-9187,-10323,-11985,-13501,-13716,-13227,-13146,-12945,-11436, -8532,-5444,-3722,-3693,-4835,-6399,-6982,-5780,-4292,-3749, -3183,-1557,698,2671,4105,5146,5869,6714,8205,9944, 11472,12861,13775,13452,11870,10011,9356,10094,10404,9214, 7323,5573,4196,3216,2388,1291,-407,-2592,-4533,-5716, -5799,-4456,-2506,-999,-80,-287,-2337,-5215,-7090,-7396, -7058,-7041,-7053,-6484,-5454,-4229,-3145,-2722,-2902,-3376, -4045,-4792,-5360,-4813,-3040,-1609,-1047,-298,563,613, 469,1091,2041,2387,1881,1398,1926,3016,3467,3240, 2948,2550,2105,2503,3611,4032,3670,3530,3043,1838, 1561,2914,4422,5680,7540,9619,10718,10725,10758,11225, 11324,10533,9147,7542,6115,4871,3846,3895,5232,6840, 7782,7663,6789,6607,7710,8427,7380,5380,3856,3060, 2572,2434,2530,2070,1028,124,-595,-1209,-1657,-2000, -2322,-2988,-4124,-4979,-5088,-4885,-4760,-5085,-5873,-5906, -4656,-3402,-3284,-4078,-5014,-5733,-6481,-7366,-7994,-7849, -6822,-5307,-4281,-4426,-5565,-6504,-6236,-5856,-7162,-9950, -12737,-14693,-15244,-14183,-12359,-10796,-9326,-7565,-6243,-6168, -6553,-6227,-5846,-6362,-6905,-6179,-4102,-1872,-646,-436, -332,255,1800,4446,7215,9098,10050,10397,10646,11136, 11645,11803,11509,11028,10421,9316,7943,7194,7316,7602, 6612,3997,508,-2795,-4505,-4674,-3709,-2453,-1470,-782, -760,-1452,-2200,-2950,-4333,-6055,-7005,-7143,-7272,-7009, -5665,-4074,-3129,-3055,-3854,-5089,-5649,-5192,-4518,-4191, -4016,-3569,-2731,-1591,-495,261,528,327,-70,299, 1823,2986,2800,2431,2515,2212,1525,1532,2443,3554, 4187,4163,3561,2632,1906,1499,1221,1573,3003,4815, 5835,6046,6946,9364,11935,13024,12549,10989,8894,7277, 6706,6593,6206,5395,4933,5494,6472,7266,8038,8656, 8601,7773,6564,5543,5110,5140,5088,4222,2924,2391, 2504,2172,1238,172,-801,-1251,-1135,-1216,-2076,-3336, -4045,-4152,-4594,-5499,-6033,-5490,-3825,-2200,-1991,-3209, -4939,-6027,-5808,-5372,-5993,-6918,-6982,-6679,-6497,-5785, -4169,-2611,-2597,-4388,-6792,-8992,-10920,-12403,-13246,-13663, -13654,-12545,-10103,-7841,-7026,-7006,-7538,-8668,-8803,-7290, -5815,-5206,-4771,-4236,-3812,-3725,-3388,-1876,711,3144, 4439,4836,5646,7339,9360,11303,12402,11951,10666,9578, 8872,8949,10010,11014,10806,9405,7493,4983,1701,-1107, -2428,-2790,-2808,-2660,-2587,-2155,-963,-79,-468,-1964, -3876,-5749,-7078,-7350,-6483,-5383,-5102,-5309,-4951,-3981, -3447,-3972,-4889,-5367,-5455,-5379,-4921,-4017,-2817,-1661, -1253,-1564,-1769,-1122,252,1315,1577,2027,2785,2598, 1517,898,1305,2413,3717,4673,4656,3441,2237,2386, 3121,3141,2364,1410,980,1502,2871,4751,6975,8998, 10457,11210,11196,10885,10635,10241,9071,7011,5193,4738, 5337,6271,7157,7446,7398,7873,8592,8553,7660,6520, 5921,6035,6084,5493,4550,3835,3761,3759,2688,590, -798,-329,584,262,-880,-2048,-3621,-5212,-5689,-5259, -4582,-3907,-3709,-4205,-4632,-4426,-3746,-3238,-3708,-5195, -6784,-7842,-8207,-7635,-6212,-4908,-4528,-4064,-2632,-1981, -3719,-6634,-9141,-11439,-13327,-13766,-12817,-11310,-9786,-8713, -8721,-9498,-9536,-8501,-7404,-6712,-6419,-6557,-6869,-6932, -6264,-4544,-2874,-2354,-2281,-1677,-498,1089,3309,6112, 8816,10370,10476,9717,8920,8917,9851,11037,11834,12125, 11887,10954,9417,7796,6063,3410,99,-2244,-2774,-2115, -1199,-521,-199,-13,-233,-1289,-2851,-4139,-4796,-5294, -6164,-6860,-6443,-5141,-4007,-3737,-4221,-4789,-5207,-5573, -5540,-5187,-4992,-4593,-3678,-3146,-3637,-4196,-3472,-1550, 271,1245,1217,433,-229,73,941,1663,2118,2363, 2562,2608,2509,2960,3940,4226,3368,1983,546,-170, 359,1416,2008,2331,3266,5176,7780,10106,11009,10673, 10391,10399,9622,7888,6140,5247,5542,6371,6529,6390, 6987,8009,8553,8518,8017,7176,6374,6305,6769,6973, 6879,6406,4910,2967,2177,2469,2729,2724,2383,1138, -841,-2348,-2546,-2074,-2323,-3599,-4895,-5101,-4264,-3469, -3080,-2777,-2722,-3053,-3416,-4217,-5688,-6942,-7580,-8010, -7984,-6720,-4310,-2067,-1208,-1554,-2827,-5417,-8522,-10418, -10714,-10521,-10773,-11273,-11571,-11576,-11045,-9862,-8712,-8136, -8053,-8438,-9063,-9203,-8336,-6747,-5455,-5135,-5299,-5423, -5627,-5462,-3889,-772,2481,4306,5060,5958,7059,7813, 8333,8664,8956,9726,10818,11675,12399,13032,12784,10958, 7923,4769,2312,745,-87,-563,-997,-1126,-609,406, 935,9,-1830,-3045,-3834,-4930,-5796,-6058,-5803,-4845, -3791,-3747,-4791,-5990,-6268,-5376,-4367,-4194,-4598,-5040, -5495,-5919,-5507,-3943,-2473,-1678,-1098,-1104,-1651,-1302, 210,1401,1297,475,69,812,2345,3552,3662,3246, 3469,4078,3963,2991,1744,843,705,754,361,355, 1620,3616,5681,7757,9498,10291,10278,10017,9643,8865, 7745,6510,5381,5102,5839,6891,7774,8381,8202,7138, 6160,6275,7624,8768,8416,6937,5456,4856,5201,5645, 5212,4243,3499,2990,2351,1561,993,572,-360,-1656, -2613,-3198,-3793,-4316,-4364,-3835,-3361,-3208,-2671,-1797, -1603,-2630,-4678,-7162,-9073,-9375,-7895,-5628,-3710,-2280, -1753,-2743,-4146,-4630,-4863,-6053,-7911,-9572,-10639,-11343, -11774,-11413,-10053,-8652,-8395,-9248,-10226,-10501,-9728,-8157, -6780,-6312,-6425,-6798,-7419,-7716,-7168,-6012,-4532,-2842, -1275,378,2415,4451,5915,6438,6068,5971,7321,9484, 11062,12012,12888,13390,13250,12633,11081,8186,5272,3743, 2683,1089,-172,-366,273,1220,1695,1061,-554,-2424, -3702,-4054,-3868,-3788,-4062,-4333,-4749,-5779,-6433,-5458, -3809,-3216,-3871,-5226,-6542,-6568,-5336,-4581,-5162,-5612, -4753,-3371,-2482,-2024,-1510,-979,-628,-542,-574,-496, -216,353,1264,2122,2616,2899,3148,3518,3961,3871, 2954,1608,357,-363,-507,-306,415,1825,3373,4709, 6238,8339,10473,11246,10092,8041,6536,6270,6973,7550, 7359,6936,6551,6210,6372,7226,8169,8446,8137,7767, 7468,7022,6679,6524,6383,6197,5785,5089,4636,4623, 4492,3842,2682,1436,778,413,-492,-1775,-2789,-3750, -4890,-5217,-3692,-1253,224,-29,-1501,-3450,-5392,-7001, -7794,-7487,-6552,-5553,-4676,-4239,-4039,-3173,-1889,-1581, -2704,-4613,-6819,-8784,-9785,-9782,-9485,-9307,-9219,-9650, -10656,-11243,-10733,-9662,-8694,-8102,-8124,-8148,-7600,-7125, -7349,-8120,-8838,-8670,-7129,-4879,-3120,-1731,117,1983, 2814,3098,3691,4288,5245,7342,9621,10845,11559,12526, 13531,13791,12858,10959,8531,6065,4022,2555,1851,2185, 3062,3243,1810,-486,-1635,-988,-182,-732,-2278,-3749, -4633,-4964,-4868,-4505,-4368,-4554,-4506,-4210,-4271,-4703, -5039,-5286,-5593,-5824,-5853,-5801,-5609,-4727,-3272,-2338, -2298,-2243,-1830,-1484,-1309,-1094,-585,27,243,225, 817,2264,3783,4443,4032,3140,2374,2118,2093,1370, -16,-1108,-1563,-1037,1122,4099,6384,7507,7858,8033, 8331,8554,8566,8485,8234,7559,6576,5816,5886,6597, 7257,7338,7220,7708,8348,8178,7699,7718,7540,6610, 5874,5946,6489,6883,6550,5515,4419,3861,3933,4123, 3854,2826,1041,-1107,-3089,-4630,-4856,-3292,-1218,-105, -53,-836,-2255,-3457,-3997,-4600,-5691,-6582,-6941,-7129, -6884,-5600,-3656,-2021,-1181,-1722,-3507,-5127,-5694,-5859, -6403,-7407,-8546,-9294,-9574,-9885,-10392,-10808,-10810,-10284, -9392,-8459,-7910,-7852,-7812,-7707,-8213,-9302,-9975,-9558, -8215,-6472,-4893,-3620,-2434,-1131,-36,307,547,1952, 4055,5354,5889,6987,9406,12363,14407,14599,12918,10311, 8403,7750,7457,6719,5452,4031,2833,2083,1753,1574, 1156,483,55,-214,-1087,-2554,-3456,-3373,-3500,-4287, -4760,-4549,-4345,-4235,-3948,-3856,-4045,-4435,-5217,-6145, -6450,-5875,-4905,-4345,-4487,-4370,-3434,-2340,-1644,-1266, -1335,-2023,-2700,-2236,-672,712,1237,1269,1583,2642, 3831,4464,4565,4083,2570,473,-1198,-1797,-1202,118, 1241,2014,3160,4693,5853,6642,7756,8869,8964,8392, 8025,7576,7060,6942,6748,6028,5606,6191,7296,8080, 8296,8099,7685,7233,6868,6738,7045,7425,7134,6223, 5241,4443,4509,5795,7144,7076,5642,3531,1145,-1105, -2666,-3092,-2587,-1764,-1083,-1046,-1590,-1762,-1146,-756, -1665,-3713,-5884,-7230,-7501,-6792,-5646,-4736,-4094,-3324, -2618,-2493,-3067,-3910,-4338,-4376,-4778,-5786,-6837,-7562, -8185,-9105,-10351,-11160,-10920,-10045,-9231,-8812,-8281,-7332, -6940,-7915,-9508,-10541,-10449,-9264,-7844,-7191,-7141,-6541, -4833,-2739,-1090,-432,-985,-1783,-1122,1324,4405,7026, 8961,10636,12027,12495,11953,11369,11060,10521,9604,8356, 6860,5585,4734,4022,3259,2645,2334,1945,1055,108, -284,-424,-953,-2166,-3390,-3954,-4203,-4317,-3711,-2989, -3439,-4570,-5069,-4722,-4340,-4559,-5410,-6438,-6883,-6225, -5041,-4096,-3208,-2617,-2846,-3273,-3057,-2371,-1721,-1526, -1906,-2210,-1704,-562,875,2609,4281,4987,4531,3473, 2020,603,88,158,-337,-1037,-796,374,1728,3017, 4289,5346,6135,7003,8108,8842,8733,8277,7699,6752, 5824,5620,6343,7349,8095,8184,7782,7448,7747,8670, 9400,9557,9170,8249,6773,5228,4577,5636,7721,9278, 9520,8472,6502,4446,3144,2380,1082,-965,-2494,-2505, -1699,-950,-278,202,348,-27,-1407,-3581,-5446,-6366, -6503,-6365,-6220,-5688,-4621,-3595,-3361,-3791,-3967,-3671, -3617,-3971,-4443,-4992,-5383,-5793,-6980,-9000,-11111,-12420, -12245,-10702,-9015,-8287,-8683,-9363,-9363,-8811,-8749,-9692, -10970,-11585,-11387,-10519,-8885,-6808,-5040,-3981,-3840,-4625, -5217,-4527,-2920,-1143,1100,3883,6408,8172,9602,10983, 11965,12343,12282,11856,11085,9996,8712,7846,7590,6793, 5003,3404,2768,2742,2867,2556,1360,-164,-1173,-1601, -1946,-2304,-2598,-3315,-4339,-4658,-4092,-3362,-3142,-3685, -4818,-5865,-6365,-6300,-6030,-5855,-5635,-5308,-5052,-4793, -4091,-2849,-1678,-1447,-2334,-3555,-4189,-3906,-2732,-1029, 594,1873,3033,4114,4690,4299,3334,2387,1304,91, -710,-883,-642,-96,492,896,1392,2738,4960,6950, 8009,8553,8610,7909,7104,6907,7230,7683,7917,7682, 6937,5921,5419,6571,9065,10921,10853,9409,7713,6366, 5777,5913,6259,6717,7673,8803,9123,8594,8092,7697, 6576,4237,1493,-357,-1138,-1430,-1208,-449,362,953, 1161,543,-1051,-2890,-4147,-4870,-5377,-5728,-5980,-6052, -5344,-4016,-3265,-3714,-4852,-5366,-4455,-2747,-1870,-2438, -3705,-5248,-7035,-8552,-9307,-9661,-10033,-10292,-10344,-10001, -8830,-7464,-7201,-8004,-9062,-10394,-11837,-12345,-11486,-10026, -8621,-7325,-6189,-5596,-5853,-6504,-6681,-5961,-4580,-3229, -1955,-181,2295,5191,7911,9648,10297,10637,11135,11719, 12095,11986,11297,9922,8237,7135,6815,6568,5861,4678, 3346,2439,2201,2146,1581,516,-599,-1614,-2677,-3401, -3264,-2685,-2453,-2814,-3618,-4507,-4989,-4812,-4459,-4730, -5772,-6878,-7304,-6830,-5793,-4688,-3553,-2521,-2204,-2775, -3634,-4387,-4687,-4358,-3877,-3355,-2058,-2,2009,3456, 4224,4136,3213,2240,1883,1639,915,51,-520,-948, -1323,-1251,-136,2031,4321,5821,6129,5502,5245,6461, 8323,9197,8844,8005,7006,5722,4748,5052,6608,8408, 9566,9867,9563,9043,8372,7602,6887,6040,5417,5840, 7061,8117,8940,9712,9962,9374,8220,6303,3305,470, -458,100,553,438,289,583,1386,1769,814,-1083, -3124,-4751,-5481,-5190,-4439,-3989,-4272,-5145,-5848,-5681, -4692,-3647,-3028,-2615,-2495,-2932,-3504,-3746,-4268,-5750, -7767,-9426,-10294,-10540,-10186,-9181,-7974,-7090,-6800,-7653, -9619,-11440,-12033,-11553,-10786,-10176,-9525,-8763,-8052,-7315, -6636,-6477,-6960,-7651,-7835,-6820,-4706,-2292,-224,1417, 3045,5158,7575,9639,10819,11304,11438,11159,10663,10493, 10344,9651,8692,7681,6332,5009,4570,4840,4808,3735, 1904,373,-402,-718,-988,-1315,-1735,-2298,-2990,-3549, -3714,-3467,-3086,-3134,-3964,-5287,-6516,-7254,-7254,-6647, -6021,-5467,-4699,-3674,-2774,-2579,-3411,-4677,-5573,-5762, -5424,-4690,-3377,-1442,614,1935,2025,1641,2168,3512, 4018,3152,1641,-112,-1741,-2352,-1627,-329,822,1625, 1886,1637,1898,3402,5521,7412,8517,8619,7966,7050, 6204,5742,5694,5621,5880,7190,8908,9615,9155,8851, 9131,8960,7753,6086,4827,4704,6017,8102,9747,10497, 10536,10054,9094,7852,6315,4217,1751,105,22,967, 2094,2900,3013,2128,470,-1064,-1745,-1888,-2209,-2907, -3805,-4638,-5044,-5003,-4890,-4876,-4746,-4295,-3628,-3278, -3140,-2516,-1623,-1560,-2598,-4405,-6682,-8802,-9857,-9537, -8526,-7593,-7038,-7167,-7829,-8282,-8564,-9325,-10571,-11631, -11896,-11117,-9783,-8541,-7691,-7496,-7847,-8144,-8015,-7841, -7808,-7493,-6664,-5744,-4789,-2954,-20,3131,5475,6840, 7828,8832,9964,11088,11818,11597,10616,9676,9015,8384, 7968,7901,7635,6691,5322,4019,2890,2167,2065,1891, 897,-587,-1751,-2184,-1960,-1702,-2067,-2507,-2470,-2475, -3253,-4609,-5777,-6339,-6469,-6623,-6767,-6233,-4636,-2867, -2211,-2739,-3974,-5395,-6178,-5892,-5127,-4360,-3660,-3230, -2917,-1995,-79,2149,3721,4342,4022,2546,463,-679, -341,318,182,-491,-852,-681,-405,-143,564,2070, 4224,6220,7229,7271,6720,6209,6095,6042,5700,5284, 5101,5524,6879,8732,10058,10077,9033,7846,6849,5953, 5479,5680,6037,6488,7617,9273,10825,11665,11281,9289, 6345,3955,2920,2692,2578,2497,2552,2587,2287,1606, 1044,762,290,-514,-1383,-2360,-3362,-4024,-4294,-4384, -4463,-4766,-5438,-6024,-5628,-3932,-1972,-851,-736,-1540, -3009,-4494,-5483,-6269,-7381,-8455,-8522,-7594,-6783,-6497, -6414,-6805,-8102,-9780,-10895,-11169,-10823,-10108,-9494,-9433, -9541,-9060,-8110,-7415,-7453,-8184,-8957,-9249,-9058,-8200, -6486,-4641,-3166,-1450,728,2786,4616,6897,9265,10472, 10247,9576,9292,9591,10277,10462,9645,8587,7984,7486, 6591,5490,4736,4440,3893,2639,1070,-103,-618,-837, -1145,-1554,-1873,-1970,-1785,-1617,-2010,-3299,-5160,-6912, -7759,-7402,-6286,-5113,-4154,-3519,-3632,-4656,-5440,-4967, -4024,-3973,-5049,-6316,-6838,-6251,-4611,-2427,-433,1083, 2234,2728,2343,1643,1164,968,1023,1134,749,-331, -1610,-2338,-1935,-727,461,1338,2293,3569,4946,6212, 7135,7180,6285,5141,4357,4202,5049,6592,7674,7881, 8045,8836,9654,9516,8301,6686,5229,4372,4660,6150, 8212,10022,11080,11292,10682,9458,8018,6632,5536,4926, 4497,3750,2890,2412,2373,2656,3006,2818,1615,-122, -1238,-1227,-829,-1115,-2362,-3954,-5183,-5914,-6143,-5636, -4609,-3664,-2743,-1771,-1322,-1502,-1812,-2562,-4306,-6345, -7355,-7223,-6680,-6075,-5608,-5811,-6713,-7595,-8048,-8374, -9039,-10024,-10712,-10786,-10630,-10327,-9539,-8417,-7630,-7630, -8430,-9390,-9749,-9118,-8172,-8120,-8761,-8582,-6964,-4870, -2765,-303,2378,4657,6202,7185,7900,8493,9234,10093, 10468,10172,9585,9070,8822,8872,8789,7999,6610,5529, 5057,4412,3146,1810,767,-120,-943,-1351,-772,557, 1262,401,-1664,-4060,-5780,-6061,-5358,-4886,-5047,-5305, -5367,-5218,-4636,-3715,-3165,-3337,-3806,-4500,-5644,-6916, -7484,-6801,-5035,-2990,-1464,-648,-294,122,985,1962, 2599,2720,2296,1305,126,-509,-430,-557,-1466,-2326, -2123,-708,1319,3233,4611,5315,5312,5077,5173,5345, 5029,4518,4398,4761,5683,7176,8785,9718,9741,9094, 7791,6096,4835,4369,4786,6237,8169,9388,9567,9404, 9495,9823,9900,9122,7401,5552,4523,4369,4466,4373, 4015,3441,2678,1838,1299,1408,1709,1452,587,-507, -1755,-3095,-4199,-4841,-5401,-6107,-6086,-4666,-2680,-1210, -637,-1037,-2126,-3258,-4159,-4992,-5609,-5642,-5220,-5216, -5999,-6574,-6105,-5424,-5807,-7367,-9120,-10240,-10565,-10342, -9876,-9425,-9223,-9210,-9163,-8972,-8764,-8585,-8353,-8317, -8857,-9721,-10396,-10479,-9324,-7054,-4945,-3543,-1920,428, 2844,4635,6054,7347,8274,8741,8912,8966,9197,9732, 10020,9597,8625,7847,7895,8413,8231,6837,4536,1977, 161,-178,702,1715,1941,1530,863,-72,-1258,-2479, -3470,-4038,-4284,-4659,-5409,-6188,-6277,-5325,-3869,-2772, -2261,-2388,-3658,-5646,-6746,-6390,-5678,-5428,-5300,-4924, -4327,-3275,-1675,-205,576,875,1147,1725,2436,2707, 2248,1207,-290,-1769,-2423,-2179,-1654,-1011,-41,1150, 2371,3621,4744,5204,4937,4524,4098,3419,2874,3320, 5054,7435,9299,9803,8988,7711,6761,6203,5781,5623, 5682,5772,6167,7159,8535,9756,10445,10368,9641,8525, 7453,6979,7060,7047,6378,5097,3883,3437,3556,3471, 2865,2163,2009,2411,2511,1685,321,-964,-2497,-4612, -6335,-6438,-5136,-3553,-2338,-1783,-1853,-1999,-1941,-2025, -2563,-3507,-4598,-5407,-5595,-5228,-4721,-4488,-4560,-4982, -5833,-7114,-8443,-9060,-8804,-8555,-9198,-10148,-10449,-10014, -9273,-8542,-8038,-7906,-8121,-8595,-9343,-10199,-10592,-10248, -9713,-9391,-8844,-7423,-5116,-2484,18,1979,3099,3812, 5219,7345,8953,9427,8900,8063,7761,8461,9567,10289, 10508,10258,9097,6957,4677,3122,2414,2243,2308,2446, 2431,1806,667,16,107,43,-741,-2045,-3806,-5699, -6731,-6265,-4903,-3872,-3406,-3220,-3418,-3852,-4034,-4098, -4664,-5675,-6516,-6728,-6272,-5441,-4533,-3933,-3731,-3365, -2179,-352,1243,2061,2456,2794,2554,1490,146,-927, -1559,-1813,-1895,-1975,-1752,-714,1225,3357,4714,4986, 4290,2905,1754,1802,2904,4249,5581,6796,7571,7818, 7843,7908,7853,7391,6257,4721,4108,5126,6822,7876, 8172,8345,8869,9459,9455,8990,8753,8748,8383,7575, 6796,6296,5777,5063,4179,3105,2315,2504,3515,4479, 4645,3609,1578,-562,-2159,-3242,-4190,-4902,-4900,-4196, -3470,-2999,-2342,-1431,-944,-1478,-2844,-4290,-5073,-4923, -4199,-3773,-3924,-4249,-4580,-5067,-5656,-6175,-6507,-6879, -7669,-8837,-9807,-10253,-10179,-9584,-8695,-8238,-8651,-9127, -8811,-8082,-7888,-8663,-10146,-11409,-11558,-10759,-9757,-8715, -7499,-6236,-4931,-3094,-405,2480,4654,6010,6683,6628, 6277,6388,7203,8524,10027,11271,11683,10892,9120,7304, 6222,5722,5243,4470,3395,2095,1223,1539,2665,3282, 2802,1601,-174,-2183,-3615,-4054,-4172,-4786,-5432,-5092, -3879,-2874,-2592,-2983,-3820,-4557,-4915,-5204,-5668,-5952, -5800,-5534,-5598,-5838,-5761,-5018,-3605,-1850,-161,1085, 1516,1519,1930,2533,2205,772,-987,-2508,-3502,-3641, -2698,-766,1549,3100,3113,2165,1673,2041,2308,1941, 1632,2101,3397,5038,6488,7558,8068,7855,7088,6133, 5256,4765,4867,5375,5864,6185,6522,7186,8169,9039, 9171,8505,7865,8043,8824,9326,8908,7678,6289,5065, 3846,3040,3187,4016,4833,5144,4679,3639,2685,1989, 817,-1164,-3156,-4388,-4886,-4673,-3695,-2399,-1524,-1380, -1762,-2316,-3009,-3732,-3965,-3537,-3126,-3479,-4418,-4926, -4470,-3739,-3592,-4254,-5487,-6793,-7578,-7870,-8147,-8643, -9270,-9880,-9999,-9325,-8262,-7491,-7361,-7851,-8747,-9589, -9931,-9930,-10036,-10308,-10524,-10661,-10634,-9947,-8279,-5765, -2809,224,2595,3483,3159,2974,3763,5359,7200,8786, 9698,9847,9570,9486,9965,10388,9711,7813,5642,4167, 3496,3418,3446,3216,3040,3341,3552,2856,1471,-9, -1563,-3068,-4095,-4518,-4589,-4393,-3714,-2824,-2522,-3171, -4184,-4669,-4314,-3902,-4186,-5000,-5782,-6291,-6516,-6560, -6284,-5387,-4228,-3537,-3226,-2303,-184,2320,3815,3658, 2269,409,-1306,-2363,-2644,-2388,-1901,-1098,86,1224, 1969,2422,2478,1980,1267,652,356,1003,2795,4821, 6036,6412,6646,7085,7382,7066,6112,5075,4611,4856, 5420,6057,6813,7521,7849,7574,7105,7266,8323,9558, 10172,10020,9305,8059,6608,5758,5521,5025,4242,4070, 4637,5247,5470,5377,5067,4199,2446,74,-2158,-3510, -3618,-2893,-2260,-2260,-2649,-2794,-2471,-2011,-1852,-2207, -3030,-3920,-4349,-4089,-3447,-3112,-3358,-3808,-4155,-4402, -4482,-4574,-5244,-6539,-7956,-9028,-9530,-9412,-8995,-8567, -8089,-7685,-7893,-8684,-9181,-8945,-8499,-8330,-8653,-9733, -11435,-12929,-13382,-12246,-9650,-6610,-4449,-3411,-2676,-1392, 481,2309,3498,4153,4834,5877,7074,8387,9793,10643, 10737,10494,10085,9107,7484,5873,4996,4716,4366,3889, 3807,4354,5063,4955,3573,1456,-343,-1451,-2312,-3143, -3326,-2826,-2661,-3237,-3874,-3939,-3410,-2713,-2577,-3321, -4520,-5462,-5650,-5200,-4852,-5217,-6185,-7046,-7126,-6266, -4659,-2595,-426,1422,2593,2717,1938,992,253,-678, -1994,-2985,-2903,-1659,86,1451,1888,1726,1576,1268, 609,177,390,922,1567,2501,3873,5441,6679,7295, 7304,6614,5345,4395,4576,5608,6376,6337,5974,5837, 5976,6318,6912,7692,8468,9196,9723,9721,9117,8559, 8391,7816,6437,4993,4155,4048,4829,6247,7292,7112, 5857,4245,2834,1755,850,-201,-1369,-2379,-2993,-2925, -2189,-1448,-1407,-1902,-2449,-2776,-2820,-2763,-2977,-3381, -3549,-3556,-3699,-3663,-3150,-2618,-2662,-3336,-4448,-5851, -7250,-8271,-8643,-8211,-7415,-7201,-8070,-9346,-9811,-8948, -7379,-6267,-6248,-7355,-9228,-11077,-11979,-11950,-11733,-11656, -11284,-10130,-8393,-6606,-5104,-3601,-1753,-69,841,1297, 2156,3707,5537,7015,7974,8944,10114,10878,10647,9698, 8624,7482,6173,5020,4514,4662,5327,6192,6357,5252, 3511,2175,1492,1165,533,-823,-2445,-3481,-3508,-2919, -2376,-2277,-2530,-2879,-3260,-3829,-4198,-3828,-3172,-3323, -4561,-6138,-7163,-7409,-7227,-6791,-5847,-4324,-2435,-462, 1276,2435,2590,1650,230,-975,-1836,-2349,-2112,-1125, -127,332,562,1042,1520,1635,1215,138,-909,-931, 285,2027,3591,4723,5504,5917,5862,5523,5330,5582, 5981,6069,5895,5581,5062,4815,5461,6462,6926,6999, 7281,7918,8908,10049,10765,10435,9068,7295,5842,5283, 5678,6340,6569,6418,6374,6640,6861,6396,5234,3857, 2445,983,-201,-807,-1000,-1157,-1502,-1859,-1932,-1725, -1641,-1829,-2024,-2081,-2282,-2954,-3916,-4423,-3903,-2601, -1424,-1057,-1681,-3269,-5096,-5890,-5347,-4683,-5138,-6635, -8191,-9001,-9077,-8755,-8215,-7467,-6495,-5974,-6521,-7657, -8524,-9139,-9878,-10887,-11882,-12312,-11981,-11186,-10154,-8851, -7370,-5878,-4448,-3169,-2123,-1131,201,1739,2986,4074, 5453,7227,9226,10902,11326,10134,8148,6824,6741,6997, 6739,6278,6125,6058,5710,5258,5054,5002,4433,2940, 926,-699,-1469,-1585,-1448,-1415,-1897,-2800,-3369,-3290, -2965,-2695,-2570,-2633,-2777,-3067,-3791,-4937,-6089,-7008, -7704,-8040,-7535,-6037,-3726,-1166,597,1065,929,882, 697,92,-764,-1571,-2111,-2004,-1145,75,1133,1714, 1698,1176,279,-719,-1284,-854,368,1586,2413,2959, 3385,3940,4787,5650,6169,6148,5650,5072,4891,5290, 5945,6058,5249,4321,4336,5407,6873,8261,9406,9960, 9752,9145,8536,8018,7455,6767,6039,5696,6090,6885, 7360,7342,7227,6982,6205,4939,3688,2639,1750,1058, 484,-145,-1092,-2233,-2729,-1849,-294,260,-888,-2802, -4208,-4374,-3568,-2706,-2232,-1968,-1910,-2375,-3149,-3466, -3191,-2838,-2954,-3831,-5291,-6808,-7877,-8389,-8496,-8397, -8046,-7438,-6856,-6539,-6469,-6697,-7305,-8120,-9049,-10254, -11550,-12278,-12018,-11198,-10766,-10867,-10441,-8749,-6516,-5030, -4300,-3685,-3037,-2225,-691,1586,4063,6344,8095,8841, 8723,8437,8400,8526,8475,7927,6859,5907,5789,6373, 7001,7144,6563,5453,4430,3603,2608,1584,906,424, -225,-1145,-2073,-2607,-2677,-2631,-2784,-2958,-2750,-2150, -1571,-1432,-2191,-3859,-5848,-7369,-8040,-7976,-7512,-6670, -5293,-3621,-2042,-680,381,934,819,23,-1209,-2265, -2536,-1925,-851,285,1134,1336,654,-326,-710,-341, 79,-11,-502,-615,111,1358,2592,3593,4213,4328, 4175,4408,5238,6145,6493,5996,4914,4083,3888,3954, 4156,4903,6073,7137,8019,8904,9526,9479,8786,8028, 7543,7144,6501,5828,5887,7039,8333,8578,7574,6266, 5701,5978,6223,5688,4296,2444,765,-347,-806,-483, 254,595,139,-951,-2173,-2944,-2934,-2493,-2161,-2175, -2484,-2908,-3112,-2798,-2358,-2296,-2194,-1703,-1748,-2971, -4631,-5744,-6274,-6866,-7774,-8579,-8583,-7699,-6596,-5896, -5763,-6207,-7015,-7696,-8166,-8852,-9780,-10668,-11594,-12409, -12499,-11642,-10307,-8906,-7806,-7444,-7687,-7670,-6476,-4264, -2012,-297,1102,2714,4587,6318,7543,8247,8489,8327, 7786,7069,6584,6791,7447,7907,7943,7506,6813,6220, 5880,5450,4569,3300,2187,1569,1215,615,-544,-1967, -3050,-3593,-3611,-3027,-2014,-1110,-756,-1096,-2086,-3403, -4785,-6195,-7542,-8354,-8445,-8177,-7569,-6057,-3644,-1255, 121,111,-794,-1692,-2102,-2032,-1574,-942,-528,-509, -539,-125,611,1027,637,-351,-1166,-1307,-914,-303, 445,1098,1353,1395,1821,2944,4256,5135,5658,6207, 6641,6515,5658,4393,3505,3590,4337,4866,5086,5758, 7283,9111,10346,10432,9480,8201,7352,7094,7365,7993, 8416,8142,7524,7251,7414,7918,8662,9066,8406,6582, 4362,2805,2349,2388,2069,1440,1098,788,-94,-1220, -1821,-1786,-1500,-1388,-1875,-2801,-3469,-3508,-3091,-2671, -2478,-2349,-2049,-1649,-1421,-1659,-2614,-4222,-5980,-7299, -8022,-8253,-8031,-7495,-7049,-7033,-7185,-6978,-6319,-5907, -6559,-8262,-10319,-11895,-12596,-12491,-11996,-11494,-11167,-10968, -10872,-10761,-10358,-9481,-8347,-7113,-5714,-4281,-2588,-153, 2720,5082,6363,6827,7066,7366,7717,7836,7641,7540, 7767,8028,8154,8217,8065,7494,6596,5668,5107,5008, 4848,4181,3194,2081,644,-1170,-2701,-3228,-2765,-2028, -1547,-1292,-1043,-810,-831,-1337,-2436,-4202,-6489,-8682, -9721,-9046,-7221,-5443,-4221,-3307,-2627,-2213,-1839,-1463, -1326,-1635,-2185,-2437,-1871,-649,368,532,108,-265, -388,-401,-566,-915,-919,-233,359,84,-517,-556, 218,1548,3079,4324,4987,5304,5621,5966,6033,5451, 4116,2744,2279,2776,3900,5616,7557,8817,8849,8081, 7522,7882,8690,8953,8381,7465,6812,6642,6879,7445, 8285,9177,9666,9264,7932,6307,5158,4735,4661,4388, 3623,2531,1434,716,460,249,-274,-898,-1201,-1327, -1704,-2296,-2743,-3054,-3478,-3799,-3602,-2756,-1466,-429, -370,-1302,-2562,-3699,-4514,-5120,-5895,-7001,-8118,-8686, -8440,-7521,-6336,-5423,-5132,-5497,-6616,-8351,-9881,-10527, -10636,-10872,-11419,-11983,-12073,-11606,-11137,-11038,-11188,-11231, -10986,-10389,-9231,-7317,-5002,-2812,-887,1110,3174,4746, 5537,5848,6081,6372,6630,6890,7402,8196,8723,8462, 7661,6898,6367,6113,6248,6568,6557,5832,4390,2643, 1241,388,-439,-1592,-2602,-3057,-2877,-1938,-400,882, 1097,23,-2119,-4552,-6236,-6907,-7353,-8018,-8327,-7595, -5999,-4383,-3453,-3126,-2816,-2511,-2570,-2825,-2786,-2438, -1812,-860,2,122,-552,-1240,-1215,-553,25,57, -292,-666,-887,-1026,-1055,-786,-265,238,704,1517, 3090,5178,6763,6938,5769,4050,2732,2345,2688,3333, 4109,4948,5633,6066,6551,7280,8089,8847,9277,8904, 7672,6377,5841,6371,7524,8461,8852,8997,9054,8766, 8149,7597,7204,6662,5916,5085,4264,3653,3274,2739, 1774,710,27,-92,235,438,-107,-1437,-2952,-3832, -3770,-3179,-2611,-2137,-1659,-1300,-1203,-1297,-1280,-1216, -1663,-3146,-5327,-7170,-8061,-8041,-7462,-6624,-5861,-5418, -5405,-5748,-6141,-6513,-7412,-8935,-10249,-10769,-10815,-10849, -10879,-10850,-10967,-11332,-11820,-12249,-12261,-11767,-11044,-10082, -8475,-6247,-3908,-1585,594,2258,3236,3682,3863,4320, 5479,6944,7907,8094,7813,7363,6989,6925,7206,7586, 7733,7280,6365,5805,6037,6123,4848,2351,-195,-1813, -2452,-2366,-1756,-902,-99,568,966,733,-432,-2291, -4097,-5414,-6513,-7526,-8122,-7763,-6451,-4877,-3877,-3705, -3907,-4019,-3868,-3450,-2805,-2052,-1402,-1163,-1393,-1619, -1269,-478,44,-101,-591,-950,-753,-84,355,43, -879,-1953,-2554,-2080,-625,1204,2971,4545,5444,5273, 4375,3570,3388,3659,3781,3434,2938,2817,3305,4385, 5882,7356,8402,8760,8354,7521,6744,6404,6584,7004, 7312,7494,7753,8256,8934,9399,9090,8064,7127,6980, 7204,6953,6082,4985,3874,2889,2211,1887,1969,2239, 1939,772,-598,-1506,-2015,-2371,-2561,-2659,-2928,-3250, -3209,-2442,-1003,286,433,-453,-1554,-2701,-4076,-5414, -6392,-6995,-7211,-6999,-6474,-5751,-5009,-4719,-5169,-6059, -6999,-7899,-8776,-9486,-9870,-9964,-9985,-10228,-10653,-10944, -11092,-11546,-12445,-13272,-13327,-12465,-10923,-8853,-6295,-3798, -2153,-1468,-869,537,2576,4327,5232,5452,5547,6005, 6879,7773,8071,7532,6703,6426,6947,7644,8017,8123, 8022,7441,6068,3988,1672,-172,-998,-1121,-1151,-1008, -348,628,1406,1580,976,-230,-1940,-4043,-6006,-7038, -6920,-6207,-5576,-5385,-5555,-5656,-5216,-4295,-3424,-3116, -3334,-3510,-3078,-2098,-1247,-949,-1044,-1200,-1273,-1247, -955,-179,753,1206,731,-542,-2020,-2981,-2915,-1914, -518,820,1861,2503,2940,3548,4240,4709,4891,4626, 3736,2528,1715,1872,3023,4520,5520,6000,6691,7646, 8134,7863,7298,6788,6460,6488,6895,7528,8293,8781, 8597,8180,8236,8634,8921,8977,8767,8010,6665,5208, 4356,4352,4684,4576,3797,2803,2062,1602,1287,894, 192,-833,-1976,-2941,-3449,-3264,-2521,-1627,-888,-227, 379,554,-36,-1181,-2401,-3580,-4898,-6146,-6657,-6269, -5577,-5134,-4911,-4750,-4730,-5052,-5782,-6607,-7230,-7872, -8778,-9552,-9617,-9091,-8566,-8642,-9664,-11531,-13366,-14097, -13530,-12291,-11181,-10501,-9730,-8191,-6037,-3948,-2326,-1130, -21,1292,2618,3628,4506,5624,6721,7131,6740,6215, 6096,6396,6956,7745,8591,9136,9056,8368,7227,5740, 4126,2527,1005,-382,-1265,-1211,-68,1662,2869,2707, 1438,-74,-1241,-2146,-3097,-4217,-5281,-5917,-6081,-5968, -5636,-5093,-4676,-4613,-4654,-4614,-4381,-3674,-2565,-1677, -1418,-1725,-2378,-2795,-2292,-1011,193,936,1294,1067, 25,-1345,-2217,-2121,-1439,-1082,-1296,-1375,-673,637, 2043,3288,4208,4592,4388,3852,3279,2845,2514,2198, 2122,2719,3972,5299,6327,7019,7285,7020,6442,6121, 6413,7115,7656,7660,7199,6815,7092,7983,8992,9636, 9794,9435,8579,7564,7051,6995,6694,5909,5095,4599, 4316,3954,3545,3308,3162,2534,1200,-196,-1161,-1899, -2619,-3055,-2948,-2324,-1343,-343,394,815,778,55, -1239,-2681,-3925,-4762,-5066,-5121,-5326,-5640,-5567,-4843, -3862,-3447,-4244,-6027,-7730,-8355,-7886,-7243,-7192,-7644, -8149,-8716,-9600,-10683,-11576,-12230,-12755,-13148,-13187,-12611, -11446,-9935,-8279,-6688,-5403,-4302,-3004,-1417,209,1773, 3342,4641,5279,5294,4994,4817,5282,6329,7112,7295, 7506,8221,9215,9894,9580,8007,5658,3344,1550,514, 343,702,1114,1479,1831,1977,1828,1473,893,-74, -1496,-3204,-4649,-5159,-4846,-4567,-4860,-5373,-5641,-5743, -5768,-5334,-4190,-2800,-2042,-2359,-3316,-4013,-3906,-3051, -1758,-505,266,419,130,-128,-100,-67,-445,-1203, -1928,-2250,-2176,-1861,-1234,-281,850,1969,2824,3464, 4064,4351,3829,2705,1676,1359,1894,2883,3834,4624, 5170,5228,5057,5470,6579,7417,7367,6841,6417,6218, 6243,6534,7186,8085,8770,8991,8945,8984,9078,9016, 8608,7862,6993,6287,5834,5493,5187,5014,4950,4828, 4448,3723,2734,1585,385,-774,-1928,-2976,-3411,-2679, -1113,258,678,294,-40,165,404,-247,-1815,-3547, -4840,-5481,-5327,-4557,-3821,-3546,-3708,-4270,-5116,-5832, -6213,-6332,-6361,-6483,-6851,-7200,-7302,-7482,-8095,-9069, -10161,-11241,-12212,-12974,-13447,-13258,-12150,-10815,-10041,-9696, -9049,-7676,-5653,-3374,-1374,27,1024,1968,2990,4001, 4661,4711,4378,4321,4916,6022,7368,8880,10219,10715, 9914,8186,6462,5237,4174,2883,1667,1036,1097,1475, 1928,2425,2836,2742,1841,373,-1034,-1948,-2337,-2466, -2772,-3621,-4903,-6155,-6840,-6467,-5139,-3816,-3310,-3501, -3854,-4108,-4159,-4031,-3732,-3153,-2365,-1714,-1268,-639, 194,683,484,-96,-586,-954,-1404,-1905,-2139,-2089, -2063,-1864,-892,928,2713,3605,3535,2956,2355,2022, 2137,2511,2837,2962,2939,2917,3107,3776,4885,5926, 6381,6388,6310,6200,6111,6164,6291,6402,6581,6990, 7590,8187,8636,8963,9401,9753,9400,8238,7163,6820, 6874,6626,5905,5163,5073,5752,6384,6074,4797,2966, 1111,-226,-881,-1288,-1792,-2128,-1998,-1466,-631,430, 1356,1681,1142,-197,-1856,-3093,-3599,-3636,-3626,-3741, -3784,-3700,-3762,-4213,-4822,-5174,-5225,-5399,-5882,-6381, -6589,-6447,-6136,-6002,-6541,-7898,-9598,-10906,-11430,-11478, -11686,-12261,-12788,-12816,-12375,-11710,-10817,-9483,-7822,-6316, -5112,-3605,-1407,834,2240,2667,2486,2157,2193,2745, 3721,5099,6724,8135,9040,9491,9562,9242,8467,7223, 5631,3958,2489,1534,1464,2362,3442,3621,2772,1628, 928,832,900,743,265,-642,-2186,-4006,-5274,-5596, -5345,-5092,-4871,-4480,-4107,-4074,-4251,-4227,-4102,-4230, -4496,-4393,-3731,-2667,-1557,-812,-595,-507,-177,251, 404,66,-768,-1885,-2897,-3410,-3078,-1881,-406,610, 1152,1476,1594,1677,2128,2738,2852,2435,2076,2029, 2178,2362,2564,3054,4006,4976,5326,5198,5233,5703, 6227,6312,5863,5290,5274,6012,7028,7745,8001,8076, 8425,9150,9712,9512,8530,7276,6276,5761,5790,6265, 6852,7158,6955,6194,5166,4360,3725,2667,985,-823, -2024,-2347,-2059,-1341,-295,778,1401,1435,947,49, -1002,-1768,-2085,-2185,-2430,-3037,-3696,-3765,-3228,-2961, -3535,-4591,-5463,-5761,-5664,-5412,-5074,-4732,-4808,-5606, -6698,-7430,-7800,-8233,-9044,-10187,-11347,-12119,-12377,-12379, -12359,-12304,-12197,-11949,-11259,-9794,-7557,-5090,-2930,-1275, -66,512,408,222,683,1776,2856,3559,4313,5682, 7546,9219,10218,10359,9477,7648,5608,4252,3837,3956, 4050,3748,3120,2477,1977,1732,1937,2428,2630,2184, 1156,-197,-1493,-2426,-3234,-4265,-5126,-5267,-4888,-4437, -4051,-3842,-4085,-4622,-5012,-4983,-4630,-4227,-3957,-3724, -3351,-2830,-2045,-809,632,1352,830,-417,-1599,-2316, -2588,-2611,-2499,-2122,-1405,-647,-198,56,527,1337, 2133,2504,2277,1739,1478,1761,2271,2488,2312,2149, 2553,3548,4603,5174,5230,5096,5116,5330,5501,5599, 5761,5810,5642,5640,6393,7852,9315,9952,9609,8793, 8046,7465,7076,6918,6829,6578,6442,6747,7228,7435, 7159,6538,5660,4385,2449,148,-1539,-1864,-1164,-386, -3,234,567,888,979,775,353,-323,-1252,-2122, -2551,-2416,-1944,-1702,-2170,-3199,-4164,-4711,-4911,-4887, -4669,-4440,-4543,-4958,-5188,-4982,-4909,-5527,-6553,-7390, -8127,-9106,-10010,-10405,-10516,-10912,-11809,-12997,-13890,-13914, -12990,-11356,-9314,-7243,-5543,-4251,-3033,-1776,-693,-64, -80,-508,-482,577,2439,4660,6937,8743,9509,9174, 8246,7353,6902,6705,6252,5443,4553,3741,3063,2698, 2730,2806,2708,2671,2885,2968,2519,1553,333,-998, -2366,-3530,-4126,-4000,-3625,-3653,-4215,-4806,-4906,-4447, -3883,-3859,-4459,-5136,-5416,-5214,-4588,-3599,-2315,-899, 261,696,316,-574,-1392,-1651,-1568,-1789,-2413,-2851, -2561,-1681,-719,-115,155,426,874,1289,1577,1871, 2063,1822,1314,1126,1535,2290,2899,3128,3153,3274, 3706,4492,5396,5880,5548,4702,4153,4307,4938,5608, 6227,7018,8025,8814,8884,8484,8196,8173,8033,7395, 6462,5825,5898,6623,7628,8424,8648,8114,6824,5017, 3231,1995,1132,157,-755,-1020,-637,-57,640,1427, 1744,1113,-87,-984,-1121,-835,-768,-1046,-1363,-1676, -2207,-2844,-3335,-3704,-4046,-4355,-4680,-5002,-4952,-4441, -3979,-3924,-4250,-4936,-6008,-7098,-7655,-7568,-7397,-7840, -9054,-10617,-11954,-12862,-13431,-13630,-13383,-12862,-12124,-10847, -8827,-6405,-4171,-2676,-2157,-2456,-3057,-3321,-2617,-865, 1314,3137,4549,5817,6884,7568,7859,7939,7862,7516, 6826,5964,5182,4562,4026,3401,2628,2173,2570,3543, 4213,3984,3019,1789,748,59,-544,-1383,-2375,-3190, -3660,-3986,-4292,-4464,-4198,-3508,-3157,-3767,-5042,-6108, -6360,-5809,-4928,-4077,-3178,-2237,-1410,-763,-267,-30, -328,-1147,-2012,-2474,-2500,-2351,-2197,-2033,-1877,-1698, -1210,-241,821,1269,949,429,421,1060,1724,1824, 1496,1294,1429,1758,2142,2666,3457,4408,5002,4797, 4140,3768,3821,4031,4385,4939,5516,5941,6350,7040, 8138,9123,9242,8520,7574,6656,5838,5596,6276,7360, 8059,8248,8251,8245,8093,7447,6020,3987,2005,638, -17,-121,198,759,1208,1194,783,377,217,118, -104,-260,-291,-522,-1024,-1390,-1356,-1317,-1753,-2766, -3974,-4836,-5015,-4587,-3873,-3313,-3288,-3873,-4685,-5286, -5492,-5466,-5501,-5752,-6272,-7146,-8227,-9101,-9673,-10456, -11775,-13396,-14686,-14998,-14056,-12145,-9920,-7823,-6153,-5157, -4856,-4934,-4855,-4268,-3289,-2295,-1322,4,1837,3710, 5221,6194,6609,6839,7382,8116,8317,7519,6078,4807, 4080,3652,3344,3290,3663,4214,4391,3897,3087,2547, 2399,2165,1411,191,-1236,-2613,-3513,-3638,-3201,-2786, -2809,-3173,-3619,-4122,-4730,-5304,-5601,-5708,-5802,-5606, -4659,-3139,-1722,-908,-820,-1139,-1155,-705,-545,-1232, -2275,-2898,-2895,-2584,-2224,-1695,-992,-409,-246,-297, -75,436,870,1157,1429,1481,1085,586,544,1151, 2081,2900,3399,3641,3753,3757,3749,3932,4270,4360, 4019,3604,3645,4522,6073,7536,8259,8363,8278,8042, 7555,7015,6669,6425,6173,6168,6833,8021,9056,9495, 9350,8593,7200,5337,3576,2414,1874,1664,1448,1132, 862,749,851,1120,1233,896,204,-407,-589,-295, 182,405,145,-542,-1603,-2811,-3637,-3738,-3376,-3096, -3198,-3683,-4147,-4165,-3825,-3665,-3982,-4572,-5143,-5563, -5816,-5834,-5741,-5992,-6993,-8817,-11097,-13157,-14358,-14327, -13410,-12349,-11416,-10256,-8634,-7013,-6104,-6061,-6243,-5901, -4950,-3798,-2722,-1638,-382,995,2302,3501,4839,6386, 7695,8332,8315,7679,6454,5237,4722,4784,4795,4546, 4205,3892,3779,3937,4238,4435,4305,3639,2364,802, -475,-1059,-1220,-1627,-2455,-2979,-2619,-1983,-2140,-3128, -4210,-4997,-5570,-5808,-5582,-5147,-4746,-4306,-3627,-2676, -1645,-856,-508,-480,-710,-1290,-2088,-2655,-2680,-2288, -1864,-1728,-1776,-1692,-1337,-827,-230,472,1096,1230, 720,44,-105,451,1194,1576,1645,1764,2059,2554, 3265,4023,4398,4091,3332,2786,2780,3100,3582,4304, 5192,6037,6796,7505,8005,8170,7958,7372,6514,5699, 5344,5721,6796,8174,9241,9588,9245,8526,7767,7005, 6048,4843,3593,2568,1836,1436,1456,1811,2120,1892, 1041,74,-324,50,741,1194,1142,630,-58,-640, -1026,-1305,-1671,-2198,-2735,-3176,-3613,-3850,-3508,-2786, -2532,-3187,-4368,-5242,-5172,-4402,-3816,-3849,-4211,-4692, -5605,-7160,-9101,-11035,-12602,-13472,-13516,-12896,-11911,-10854, -9873,-9003,-8355,-7973,-7590,-6870,-5823,-4810,-4119,-3671, -3234,-2348,-674,1438,3370,5017,6476,7292,7098,6522, 6447,6804,6719,5793,4559,3870,3934,4319,4650,4830, 4819,4666,4509,4306,3764,2682,1247,-60,-896,-1138, -1057,-1066,-1303,-1632,-1999,-2606,-3457,-4181,-4527,-4762, -5211,-5716,-5820,-5324,-4429,-3371,-2338,-1411,-822,-843, -1382,-1790,-1721,-1467,-1483,-1829,-2346,-2821,-2951,-2445, -1429,-437,40,15,-124,-100,115,418,622,576, 336,214,458,1059,1850,2680,3317,3586,3523,3289, 2994,2735,2670,2819,3013,3165,3568,4573,6077,7455, 8132,8060,7451,6632,5881,5461,5532,6185,7214,7990, 8478,8950,9544,10042,10101,9354,7783,5976,4608,3971, 3844,3729,3257,2590,2034,1464,791,414,744,1395, 1572,1066,421,237,586,948,690,-249,-1413,-2329, -2800,-2794,-2591,-2559,-2752,-3011,-3370,-3933,-4506,-4851, -4868,-4458,-3724,-3139,-3093,-3530,-4358,-5726,-7809,-10207, -12040,-12825,-12903,-12924,-12891,-12497,-11941,-11594,-11245,-10361, -8909,-7528,-6855,-6928,-7204,-6984,-5928,-4227,-2371,-755, 701,2228,3845,5456,6817,7512,7401,6910,6536,6237, 5719,5012,4503,4452,4723,5041,5404,5857,6093,5653, 4534,3231,2165,1420,831,341,-5,-303,-699,-1204, -1666,-1948,-2247,-2797,-3606,-4621,-5679,-6426,-6451,-5735, -4703,-3855,-3386,-3159,-2882,-2299,-1462,-788,-706,-1225, -1981,-2644,-3000,-2931,-2533,-2203,-2009,-1735,-1271,-759, -305,83,382,456,145,-398,-658,-364,268,984, 1631,2116,2510,2970,3434,3664,3555,3170,2539,1812, 1488,1949,3090,4667,6287,7322,7421,7043,6947,7130, 7068,6513,5870,5686,6104,6832,7684,8799,9965,10478, 10042,8938,7715,6919,6760,6720,6079,4848,3584,2751, 2413,2336,2221,1804,1162,704,738,1120,1459,1497, 1433,1357,946,15,-997,-1497,-1429,-1364,-1640,-1998, -2115,-2298,-2920,-3857,-4632,-4929,-4724,-4153,-3366,-2488, -1820,-1885,-2965,-4810,-6769,-8290,-9249,-9915,-10695,-11694, -12746,-13457,-13319,-12287,-11011,-10223,-9919,-9565,-8968,-8442, -8148,-7821,-7198,-6318,-5272,-3976,-2263,-256,1642,3196, 4477,5628,6547,7032,6965,6406,5612,4822,4326,4322, 4748,5373,5966,6312,6215,5685,4912,4110,3440,2926, 2391,1633,690,-111,-429,-227,100,-58,-887,-2149, -3512,-4591,-5061,-5020,-5036,-5328,-5539,-5414,-4940,-4230, -3305,-2393,-1720,-1370,-1395,-1720,-2010,-2074,-2128,-2381, -2763,-3047,-3060,-2633,-1797,-914,-295,-63,-150,-307, -457,-657,-737,-433,-44,-44,-125,478,1859,3270, 4038,3929,3157,2187,1468,1170,1245,1712,2622,3731, 4656,5269,5928,6823,7530,7486,6669,5607,4813,4724, 5550,6945,8116,8537,8476,8615,9095,9355,9098,8571, 8034,7470,6642,5662,4900,4533,4243,3547,2506,1644, 1267,1255,1376,1550,1792,2030,2089,1726,1038,354, -125,-475,-737,-791,-659,-585,-792,-1358,-2348,-3694, -5008,-5504,-4707,-3194,-2036,-1734,-1964,-2296,-2668,-3205, -3988,-5055,-6420,-8029,-9625,-10872,-11660,-12080,-12208,-12151, -11924,-11432,-10709,-10044,-9629,-9415,-9291,-9104,-8687,-7962, -7036,-5990,-4755,-3309,-1596,350,2329,4079,5477,6394, 6560,5994,5159,4575,4437,4757,5336,5788,5888,5782, 5732,5886,6143,6051,5216,3866,2599,1765,1398,1402, 1520,1457,1068,377,-547,-1423,-2037,-2565,-3230,-3971, -4739,-5507,-5910,-5609,-4887,-4284,-3930,-3509,-2860,-2215, -1821,-1582,-1356,-1314,-1736,-2534,-3269,-3501,-3051,-2226, -1618,-1507,-1504,-1097,-372,112,89,-191,-599,-1175, -1680,-1551,-643,655,1924,2924,3381,3117,2451,2013, 2004,1950,1459,776,680,1685,3430,5110,6191,6657, 6662,6295,5649,5077,4994,5434,5957,6210,6385,6866, 7708,8540,9056,9176,9063,8818,8418,7954,7584,7233, 6727,6035,5259,4398,3359,2324,1745,1792,2002,1950, 1855,2120,2542,2504,1748,547,-468,-720,-145,731, 1230,985,4,-1390,-2739,-3658,-4049,-4020,-3790,-3548, -3224,-2711,-2131,-1724,-1598,-1797,-2483,-3561,-4721,-5942, -7385,-8877,-10133,-11051,-11614,-11729,-11572,-11343,-11039,-10698, -10476,-10344,-10083,-9706,-9316,-8932,-8523,-8093,-7469,-6396, -4683,-2297,321,2406,3606,4198,4525,4756,4967,5148, 5114,4806,4470,4496,4971,5719,6434,6889,6882,6244, 5133,4044,3436,3263,3111,2719,2175,1743,1467,1212, 813,214,-487,-1207,-2067,-3219,-4367,-4911,-4789,-4633, -4913,-5288,-5168,-4502,-3538,-2541,-1765,-1461,-1629,-1994, -2159,-2151,-2284,-2613,-2830,-2845,-2817,-2695,-2177,-1117, 110,749,306,-873,-1846,-2023,-1606,-1121,-764,-265, 529,1458,2253,2917,3370,3238,2324,1004,-12,-198, 452,1572,2823,3965,4806,5253,5488,5704,5740,5436, 5034,4878,5035,5295,5605,6163,7094,8054,8538,8473, 8283,8317,8569,8805,8710,8188,7521,7056,6675,5920, 4721,3426,2334,1764,1980,2774,3444,3514,2951,1926, 873,276,293,745,1305,1605,1472,1047,475,-281, -1214,-2177,-3038,-3642,-3826,-3669,-3374,-2931,-2337,-1782, -1450,-1253,-1281,-1782,-2800,-4108,-5469,-6923,-8377,-9516, -10123,-10394,-10630,-10946,-11211,-11336,-11191,-10594,-9799,-9335, -9538,-10127,-10508,-10289,-9444,-8075,-6309,-4447,-2692,-1095, 388,1831,3229,4365,4857,4531,3819,3505,3859,4500, 5091,5625,6204,6613,6534,5972,5416,5167,4931,4394, 3634,2916,2426,2262,2400,2528,2232,1337,210,-618, -1099,-1605,-2381,-3337,-4202,-4817,-5228,-5467,-5333,-4612, -3583,-2932,-2922,-3062,-2707,-1843,-1160,-1235,-1960,-2832, -3490,-3777,-3490,-2589,-1533,-845,-581,-555,-636,-764, -940,-1235,-1644,-2046,-2231,-1808,-571,1071,2355,2894, 2887,2522,1827,1020,319,-56,131,843,1640,2310, 3079,4050,4979,5521,5459,4915,4373,4204,4386,4754, 5194,5605,5957,6497,7237,7853,8128,8110,7981,7962, 8261,8803,9179,8973,8002,6417,4726,3544,3174,3368, 3651,3730,3555,3123,2483,1843,1396,1114,934,971, 1310,1720,1840,1605,1193,646,-143,-1119,-2054,-2798, -3363,-3687,-3635,-3328,-2978,-2525,-1751,-870,-390,-637, -1577,-2948,-4279,-5264,-6048,-6995,-8181,-9382,-10333,-10955, -11257,-11055,-10361,-9661,-9663,-10343,-11015,-11180,-10918,-10601, -10319,-9825,-8927,-7627,-6013,-4082,-1950,52,1587,2505, 2843,2818,2788,3026,3612,4293,4690,4813,5008,5565, 6284,6665,6400,5679,4990,4558,4139,3603,3281,3409, 3499,3005,2137,1515,1356,1315,909,-59,-1388,-2724, -3770,-4343,-4421,-4337,-4518,-4877,-4994,-4730,-4106,-3128, -2095,-1471,-1447,-1950,-2706,-3249,-3256,-3002,-2949,-3016, -2836,-2201,-1274,-468,-156,-342,-799,-1472,-2277,-2904, -2903,-2154,-898,428,1405,1908,2080,2102,1966,1589, 938,183,-330,-266,430,1480,2506,3321,3902,4276, 4495,4619,4642,4462,4070,3770,3963,4715,5702,6468, 6767,6672,6437,6455,7054,8167,9190,9626,9515,8945, 7976,6822,5816,5117,4697,4484,4424,4332,3995,3413, 2776,2256,1851,1513,1278,1256,1439,1795,2173,2229, 1785,1135,686,369,-264,-1399,-2623,-3477,-3864,-3860, -3402,-2435,-1345,-717,-756,-1164,-1479,-1571,-1765,-2486, -3818,-5483,-7120,-8410,-9176,-9473,-9558,-9633,-9736,-9866, -10057,-10305,-10563,-10694,-10715,-10821,-11202,-11601,-11269,-9833, -7767,-5823,-4246,-2825,-1350,37,945,1468,2029,2619, 2876,2909,3167,3818,4693,5612,6232,6243,5829,5387, 5157,5168,5187,4874,4182,3427,2945,2857,3023,3179, 3073,2590,1702,498,-657,-1309,-1579,-2032,-2993,-4213, -5154,-5434,-5088,-4456,-3859,-3375,-2893,-2451,-2230,-2230, -2327,-2493,-2804,-3228,-3591,-3699,-3379,-2513,-1314,-351, -118,-552,-1255,-1917,-2396,-2653,-2654,-2354,-1830,-1082, -40,1134,1979,2189,1853,1254,623,174,11,16, 65,261,820,1822,3035,4014,4379,4139,3606,3181, 3198,3707,4400,4935,5169,5166,5054,5017,5256,5870, 6771,7763,8700,9349,9383,8774,7985,7446,7006,6347, 5615,5258,5262,5221,4778,3986,3216,2641,2186,1846, 1731,1837,1938,1861,1699,1674,1941,2385,2496,1835, 552,-886,-2141,-2909,-3034,-2842,-2766,-2807,-2644,-2129, -1406,-773,-415,-272,-331,-1008,-2562,-4395,-5650,-6279, -6855,-7699,-8614,-9229,-9374,-9253,-9143,-9142,-9347,-9886, -10723,-11559,-12067,-12140,-11634,-10672,-9556,-8400,-7087,-5553, -3822,-2046,-631,108,326,514,1052,1884,2734,3486, 4114,4535,4750,4911,5241,5788,6238,6185,5453,4417, 3730,3711,4055,4241,4071,3637,3128,2710,2401,2110, 1644,878,-83,-1113,-2250,-3406,-4199,-4413,-4330,-4287, -4255,-4007,-3533,-2881,-2174,-1707,-1798,-2419,-3242,-3805, -3914,-3598,-2992,-2269,-1638,-1205,-870,-642,-699,-1201, -1998,-2787,-3198,-2981,-2207,-1215,-356,240,705,1203, 1644,1790,1507,852,-3,-701,-803,-162,889,1851, 2486,2851,3070,3116,2968,2931,3413,4224,4719,4644, 4334,4107,4069,4263,4646,5210,6101,7206,8109,8622, 8856,8839,8498,7914,7311,6897,6830,6878,6648,6046, 5262,4430,3732,3464,3528,3291,2469,1561,1241,1591, 2192,2615,2835,3011,2943,2316,1204,170,-414,-808, -1389,-2238,-3092,-3525,-3267,-2464,-1479,-616,-91,56, -121,-563,-1203,-2046,-3080,-4265,-5525,-6755,-7763,-8222, -8106,-7768,-7680,-8105,-8870,-9631,-10195,-10687,-11277,-11868, -12176,-12053,-11473,-10428,-8903,-7028,-5248,-4043,-3417,-2827, -1894,-688,488,1361,1748,1838,2136,2949,4049,4979, 5506,5681,5645,5412,5086,4874,4842,4830,4693,4421, 4022,3616,3423,3530,3679,3526,2920,2025,1032,76, -771,-1567,-2414,-3401,-4303,-4783,-4668,-4089,-3253,-2484, -2127,-2268,-2579,-2826,-3053,-3361,-3701,-3888,-3669,-2977, -2061,-1211,-630,-562,-1103,-1831,-2208,-2291,-2440,-2713, -2846,-2548,-1708,-649,262,1019,1612,1746,1206,286, -477,-739,-409,234,743,1079,1391,1615,1671,1836, 2358,3026,3559,3894,4119,4171,3981,3653,3438,3453, 3628,4038,4949,6362,7646,8119,7880,7580,7668,8036, 8239,8044,7622,7232,6880,6437,5942,5597,5403,5075, 4306,3214,2205,1674,1763,2265,2745,2919,2836,2688, 2619,2605,2542,2165,1396,367,-769,-1896,-2779,-3126, -2889,-2321,-1823,-1549,-1213,-531,279,660,353,-524, -1762,-3168,-4504,-5537,-6155,-6468,-6742,-7092,-7469,-7772, -7927,-8020,-8377,-9373,-10876,-12252,-12882,-12623,-11847,-10951, -10095,-9250,-8314,-7150,-5770,-4342,-3112,-2156,-1422,-906, -477,196,1232,2362,3322,4033,4431,4592,4763,5070, 5413,5593,5453,5037,4557,4243,4118,4200,4430,4472, 4092,3601,3359,3248,2955,2312,1249,-157,-1592,-2795, -3595,-3905,-3850,-3740,-3628,-3208,-2459,-1884,-1946,-2628, -3503,-4048,-4101,-3871,-3517,-2998,-2309,-1684,-1359,-1275, -1201,-1143,-1332,-1922,-2708,-3310,-3505,-3236,-2397,-1103, 134,816,927,758,451,33,-287,-215,164,469, 452,303,378,740,1144,1323,1450,1971,3001,4040, 4463,4150,3491,2933,2678,2758,3161,3878,4775,5558, 6063,6383,6755,7316,7979,8435,8431,8022,7506,7170, 7233,7561,7667,7224,6397,5526,4659,3766,3080,2825, 2905,2927,2653,2329,2336,2756,3342,3719,3609,3004, 2129,1255,450,-369,-1208,-1955,-2521,-2857,-2902,-2496, -1544,-292,651,910,543,-148,-864,-1506,-2274,-3406, -4781,-5942,-6565,-6570,-6198,-5926,-6106,-6761,-7827,-9127, -10267,-11023,-11543,-11937,-12122,-12082,-11872,-11239,-10027,-8539, -7164,-6014,-5113,-4425,-3817,-3061,-2025,-773,367,1117, 1579,2154,2988,3886,4641,5130,5259,5157,4992,4902, 4992,5163,5100,4638,4059,3888,4240,4703,4773,4421, 3933,3459,2797,1684,252,-1152,-2338,-3257,-3762,-3633, -3008,-2360,-2024,-2024,-2282,-2808,-3428,-3779,-3770,-3627, -3571,-3503,-3166,-2439,-1590,-966,-666,-640,-1016,-1907, -3033,-3857,-3877,-3062,-1974,-1236,-804,-357,133,429, 350,19,-206,-91,290,621,688,506,178,-123, -185,190,1017,2083,3073,3742,3885,3487,2888,2639, 2890,3224,3287,3238,3424,3960,4705,5542,6412,7191, 7673,7727,7478,7255,7352,7802,8374,8629,8267,7549, 6897,6383,5879,5315,4632,3853,3158,2668,2397,2422, 2801,3335,3675,3677,3416,3097,2978,2947,2473,1312, -177,-1528,-2422,-2692,-2455,-2048,-1674,-1257,-692,35, 749,1127,875,14,-1300,-2848,-4159,-4835,-4959,-4945, -5006,-5180,-5540,-6153,-6908,-7644,-8338,-9169,-10281,-11548, -12569,-12941,-12582,-11760,-10823,-9951,-9121,-8308,-7539,-6653, -5487,-4236,-3294,-2787,-2278,-1268,146,1396,2172,2690, 3207,3771,4308,4778,5126,5268,5164,4920,4701,4606, 4531,4384,4324,4493,4759,4945,5053,4987,4497,3368, 1674,-112,-1444,-2150,-2460,-2608,-2583,-2343,-2058,-2041, -2339,-2684,-2831,-2903,-3289,-4032,-4644,-4558,-3686,-2452, -1405,-810,-659,-862,-1348,-2009,-2700,-3310,-3622,-3407, -2695,-1821,-1132,-714,-486,-383,-435,-548,-338,329, 981,1084,628,-85,-690,-832,-445,200,895,1587, 2187,2551,2730,2894,3128,3374,3425,3058,2454,2176, 2499,3316,4364,5297,5812,6021,6249,6566,6882,7275, 7762,8193,8372,8266,8046,7928,8008,8025,7593,6621, 5389,4316,3713,3588,3601,3409,3046,2822,2976,3446, 4006,4415,4464,3995,3063,1966,1034,289,-485,-1370, -2169,-2622,-2553,-1957,-972,172,1159,1615,1303,343, -790,-1652,-2239,-2893,-3609,-4146,-4483,-4806,-5059,-5078, -5022,-5404,-6540,-8200,-9760,-10766,-11329,-11752,-12129,-12329, -12212,-11682,-10747,-9649,-8640,-7889,-7310,-6644,-5688,-4599, -3586,-2632,-1631,-613,276,1074,1927,2831,3619,4129, 4373,4588,4951,5287,5235,4738,4144,3926,4131,4495, 4876,5428,6039,6201,5539,4220,2709,1419,474,-275, -1040,-1788,-2354,-2542,-2208,-1604,-1303,-1603,-2252,-2971, -3721,-4404,-4772,-4642,-3940,-2879,-1916,-1257,-827,-672, -990,-1767,-2721,-3484,-3664,-3110,-2328,-1872,-1742,-1706, -1666,-1513,-1108,-476,194,702,850,529,-82,-579, -656,-379,-63,33,-12,192,816,1652,2463,3062, 3325,3181,2742,2236,1946,2055,2560,3250,3777,4027, 4160,4505,5218,6098,6731,6935,6908,7016,7425,7985, 8534,8902,8862,8374,7694,7068,6595,6192,5584,4643, 3652,3034,2895,3052,3372,3834,4302,4492,4309,4007, 3882,3780,3196,2020,591,-752,-1860,-2551,-2540,-1809, -759,98,512,607,673,789,736,219,-779,-2018, -3121,-3736,-3798,-3567,-3477,-3775,-4306,-4847,-5412,-6269, -7449,-8761,-10020,-11076,-11857,-12328,-12371,-11942,-11304,-10833, -10509,-9930,-8967,-7908,-7126,-6560,-5825,-4733,-3505,-2488, -1606,-632,293,1104,1885,2658,3408,4172,4861,5164, 4908,4208,3503,3289,3781,4619,5249,5584,5783,5859, 5722,5292,4487,3396,2169,898,-385,-1439,-1949,-1843, -1427,-1107,-1135,-1445,-1888,-2499,-3392,-4420,-5164,-5322, -4759,-3616,-2347,-1444,-1099,-1218,-1671,-2329,-2928,-3134, -2863,-2485,-2421,-2725,-3064,-3086,-2647,-1865,-1054,-504, -250,-177,-180,-146,-97,-113,-173,-326,-668,-1065, -1141,-650,313,1376,2068,2206,2084,2027,2090,2201, 2320,2365,2269,2116,2152,2631,3501,4328,4725,4753, 4868,5308,5899,6472,7067,7646,7985,8003,7941,8106, 8426,8477,7992,7069,6028,5050,4229,3689,3470,3489, 3554,3507,3427,3576,4101,4780,5244,5111,4197,2729, 1173,-32,-725,-1083,-1449,-1833,-1860,-1256,-285,589, 1087,1146,887,399,-367,-1313,-1990,-2297,-2622,-3142, -3518,-3513,-3313,-3360,-3928,-4942,-6102,-7237,-8399,-9570, -10618,-11443,-12005,-12170,-11983,-11710,-11395,-10900,-10236,-9551, -8942,-8380,-7658,-6576,-5250,-4074,-3346,-2883,-2263,-1200, 217,1651,2815,3621,4068,4117,3850,3547,3453,3660, 3967,4181,4398,4820,5577,6374,6863,6746,5990,4889, 3683,2410,1074,-164,-998,-1229,-1002,-654,-438,-479, -982,-2060,-3455,-4781,-5617,-5624,-4786,-3622,-2724,-2340, -2339,-2434,-2408,-2237,-2109,-2166,-2381,-2747,-3266,-3754, -3898,-3528,-2811,-2176,-1874,-1722,-1417,-881,-296,172, 381,206,-417,-1203,-1633,-1409,-775,-209,48,227, 615,1186,1747,2168,2403,2392,2097,1717,1636,2008, 2573,2976,3147,3225,3407,3846,4477,5137,5766,6322, 6709,6935,7246,7835,8574,9249,9663,9569,8945,8069, 7238,6677,6357,5861,4847,3624,2923,3034,3710,4459, 5058,5485,5727,5626,5045,4174,3289,2239,866,-541, -1504,-1813,-1579,-1041,-445,42,441,810,1050,980, 476,-351,-1189,-1830,-2260,-2567,-2772,-2848,-2810,-2834, -3170,-3930,-4902,-5867,-6879,-8093,-9588,-11039,-11981,-12339, -12364,-12338,-12386,-12432,-12313,-11905,-11203,-10242,-9118,-8078, -7341,-6862,-6419,-5727,-4540,-2897,-1239,65,1064,1986, 2832,3444,3689,3637,3463,3368,3443,3678,4079,4674, 5442,6265,6907,7132,6905,6328,5387,4035,2394,846, -132,-262,271,880,994,445,-552,-1774,-3035,-4035, -4452,-4298,-3980,-3847,-3853,-3708,-3281,-2679,-2104,-1692, -1584,-1852,-2453,-3098,-3358,-3190,-3002,-3151,-3476,-3574, -3229,-2473,-1505,-633,-88,57,-187,-587,-788,-773, -780,-926,-1137,-1205,-930,-319,396,1000,1429,1618, 1548,1460,1621,1923,2154,2273,2324,2314,2259,2292, 2634,3382,4276,4754,4670,4544,4967,5949,7019,7817, 8315,8625,8811,8913,9037,9212,9186,8681,7641,6324, 5082,4222,3863,3838,3933,4101,4483,5162,5928,6384, 6277,5603,4545,3372,2238,1065,-76,-872,-1114,-945, -634,-286,167,739,1204,1248,783,74,-542,-977, -1308,-1645,-2009,-2309,-2375,-2281,-2255,-2502,-3105,-4039, -5280,-6695,-8068,-9151,-9863,-10445,-11223,-12206,-13018,-13302, -13004,-12310,-11540,-10920,-10444,-9961,-9444,-8887,-8264,-7451, -6378,-5088,-3703,-2321,-973,325,1515,2399,2810,2801, 2747,2915,3141,3206,3235,3563,4393,5577,6730,7562, 7905,7522,6275,4504,2911,1955,1656,1786,2002,1982, 1585,789,-251,-1187,-1718,-2071,-2642,-3459,-4228,-4622, -4508,-3940,-3195,-2597,-2271,-2193,-2281,-2289,-2087,-1903, -2071,-2665,-3434,-4026,-4202,-3947,-3368,-2617,-1927,-1479, -1170,-755,-271,-58,-282,-732,-1100,-1317,-1454,-1425, -1002,-270,352,492,312,308,751,1453,1995,2160, 2012,1713,1518,1654,2092,2606,2993,3124,3020,2945, 3232,3951,4866,5658,6156,6403,6713,7346,8253,9134, 9642,9689,9504,9283,8825,7877,6604,5440,4586,4057, 3828,3945,4434,5204,6041,6626,6723,6360,5731,4959, 3971,2705,1304,151,-451,-532,-324,-7,366,737, 1002,1066,948,749,495,59,-610,-1348,-1818,-1809, -1403,-1009,-1042,-1597,-2424,-3263,-3970,-4621,-5437,-6473, -7660,-8925,-10199,-11373,-12276,-12689,-12573,-12237,-12024,-11859, -11446,-10854,-10406,-10163,-9880,-9336,-8436,-7253,-5917,-4460, -2923,-1538,-428,533,1507,2328,2741,2640,2219,1830, 1845,2427,3582,5199,6880,7950,7989,7177,6005,4948, 4244,3879,3644,3373,2944,2344,1757,1425,1277,929, 79,-1115,-2253,-3079,-3587,-3760,-3646,-3528,-3625,-3771, -3573,-2873,-2032,-1535,-1542,-1804,-2120,-2577,-3181,-3711, -3938,-3879,-3705,-3509,-3206,-2559,-1581,-620,-106,-161, -625,-1168,-1452,-1373,-1107,-857,-750,-826,-915,-741, -223,460,1059,1394,1343,1050,927,1280,1938,2383, 2370,2101,1964,2123,2444,2741,3025,3360,3804,4311, 4812,5246,5740,6466,7355,8190,8848,9365,9815,10093, 9898,9112,7879,6554,5479,4763,4342,4160,4310,4872, 5639,6330,6838,7077,6931,6321,5250,3837,2480,1531, 985,624,299,54,30,389,1087,1676,1709,1224, 563,-28,-469,-759,-840,-660,-423,-503,-941,-1416, -1684,-1882,-2238,-2815,-3602,-4595,-5755,-7085,-8467,-9707, -10715,-11540,-12159,-12367,-12146,-11737,-11481,-11460,-11500,-11403, -11100,-10584,-9864,-8957,-7943,-6892,-5776,-4402,-2632,-716, 850,1717,1838,1356,616,170,556,1853,3570,5028, 5973,6524,6753,6654,6405,6172,5824,5142,4242,3514, 3285,3459,3573,3199,2371,1477,681,-66,-813,-1492, -2090,-2679,-3292,-3893,-4251,-4099,-3513,-2792,-2234,-1957, -1898,-1921,-1914,-1920,-2188,-2839,-3686,-4392,-4610,-4258, -3513,-2590,-1721,-1201,-1151,-1320,-1269,-894,-531,-581, -1058,-1618,-1844,-1582,-973,-406,-127,-59,50,235, 450,690,1004,1336,1641,1819,1782,1667,1718,1954, 2203,2322,2363,2525,2908,3392,3790,4084,4467,5082, 5873,6805,7841,8839,9626,10125,10175,9665,8789,7811, 6847,5899,4949,4132,3832,4334,5422,6418,6902,7021, 6993,6791,6261,5383,4324,3229,2099,1039,312,175, 587,1178,1552,1571,1352,1001,587,214,22,0, -21,-208,-508,-686,-680,-687,-864,-1152,-1416,-1690, -2126,-2826,-3805,-5026,-6447,-7995,-9384,-10295,-10777,-11120, -11461,-11701,-11855,-12026,-12126,-11910,-11368,-10868,-10719,-10833, -10741,-9996,-8487,-6417,-4054,-1890,-495,-91,-396,-794, -775,-230,502,1193,1925,2945,4187,5351,6221,6688, 6688,6273,5646,5057,4706,4621,4623,4545,4241,3656, 2943,2333,1907,1545,953,-28,-1173,-2156,-2849,-3323, -3602,-3651,-3577,-3493,-3324,-2908,-2185,-1381,-931,-1205, -2130,-3224,-3958,-4105,-3867,-3671,-3664,-3600,-3229,-2587, -1844,-1191,-816,-752,-870,-1116,-1488,-1751,-1640,-1280, -972,-848,-811,-698,-434,-122,141,363,588,846, 1131,1398,1547,1573,1593,1710,1852,1932,2033,2269, 2643,2928,2925,2802,2996,3763,4842,5818,6610,7449, 8492,9516,10217,10404,10039,9177,7929,6578,5460,4854, 4756,4917,5139,5505,6109,6788,7362,7649,7521,6901, 5725,4190,2784,1922,1571,1462,1447,1541,1648,1603, 1423,1231,1096,900,588,282,166,196,99,-166, -398,-474,-542,-650,-643,-504,-530,-1083,-2216,-3631, -4969,-6069,-7003,-7931,-8880,-9840,-10817,-11689,-12156,-11984, -11313,-10730,-10824,-11589,-12516,-13025,-12737,-11622,-9877,-7884, -6051,-4530,-3295,-2339,-1719,-1429,-1314,-1219,-1020,-560, 314,1632,3178,4560,5419,5704,5714,5727,5731,5688, 5614,5465,5162,4789,4449,4189,4055,3985,3693,2905, 1765,706,-5,-425,-912,-1781,-2963,-3988,-4362,-3976, -3164,-2397,-1908,-1629,-1536,-1715,-2084,-2423,-2692,-3048, -3560,-4065,-4338,-4226,-3690,-2905,-2171,-1681,-1443,-1297, -1185,-1170,-1282,-1454,-1531,-1424,-1265,-1227,-1228,-1040, -664,-367,-330,-323,-29,542,1043,1183,1057,975, 1105,1381,1707,1982,2129,2175,2118,2011,2049,2323, 2649,2855,3098,3740,4842,6151,7510,8821,9842,10270, 10053,9444,8742,8019,7136,6130,5271,4764,4624,4917, 5712,6804,7749,8147,7941,7331,6516,5511,4382,3387, 2724,2364,2126,1960,1922,1988,1965,1725,1316,998, 950,1047,1008,704,295,-62,-348,-500,-350,137, 620,679,177,-682,-1579,-2238,-2646,-3138,-4131,-5729, -7634,-9295,-10282,-10538,-10364,-10143,-10141,-10529,-11309,-12259, -13012,-13334,-13129,-12515,-11618,-10395,-8757,-6866,-5112,-3791, -3051,-2805,-2814,-2778,-2487,-1807,-711,616,1853,2794, 3498,4174,4954,5745,6244,6115,5510,5002,4999,5342, 5576,5436,5000,4438,3921,3547,3271,2910,2284,1295, 17,-1328,-2479,-3173,-3339,-3161,-2942,-2804,-2645,-2276, -1761,-1389,-1406,-1782,-2248,-2678,-3224,-3871,-4266,-4160, -3687,-3229,-2914,-2615,-2176,-1609,-1208,-1192,-1413,-1528, -1444,-1346,-1303,-1260,-1225,-1248,-1283,-1150,-691,-113, 194,212,242,412,603,777,1039,1359,1575,1615, 1652,1871,2202,2377,2273,1975,1688,1567,1747,2384, 3515,4943,6286,7345,8250,9136,9861,10168,9925,9217, 8200,7026,5845,4974,4729,5140,5883,6595,7237,7829, 8208,8145,7562,6621,5617,4714,3954,3417,3120,2961, 2748,2423,2065,1751,1604,1760,2058,2081,1578,706, -112,-436,-154,435,858,857,539,157,-110,-157, 5,141,-150,-1147,-2798,-4672,-6276,-7389,-8060,-8456, -8777,-9109,-9502,-9982,-10626,-11438,-12337,-13125,-13630,-13749, -13327,-12212,-10466,-8448,-6785,-5843,-5423,-5036,-4437,-3715, -3072,-2595,-2176,-1562,-547,842,2312,3507,4284,4688, 4873,5015,5182,5420,5701,5844,5576,5020,4629,4681, 4991,5105,4775,4083,3272,2396,1301,9,-1106,-1855, -2359,-2802,-3215,-3353,-2994,-2311,-1784,-1598,-1589,-1671, -1960,-2454,-2914,-3268,-3664,-4082,-4261,-3956,-3363,-2889, -2631,-2416,-2147,-1867,-1599,-1338,-1162,-1197,-1478,-1801, -1905,-1699,-1364,-1106,-925,-767,-603,-439,-248,-2, 301,517,491,376,533,1073,1735,2185,2317,2156, 1821,1382,953,762,1005,1591,2218,2874,3824,5145, 6666,8089,9201,9841,9934,9509,8702,7674,6587,5645, 5089,5031,5388,5994,6765,7546,8123,8239,7799,6983, 6175,5684,5444,5060,4289,3305,2472,2042,2056,2400, 2808,2886,2445,1664,854,329,254,519,786,742, 344,-139,-342,-132,353,814,1076,1032,563,-410, -1736,-3117,-4318,-5327,-6295,-7257,-7968,-8252,-8301,-8510, -9188,-10438,-12061,-13502,-14216,-14151,-13620,-12877,-11992,-10962, -9776,-8537,-7389,-6393,-5613,-5183,-5083,-4990,-4414,-3227, -1758,-537,268,947,1877,2932,3802,4381,4849,5226, 5300,4996,4596,4511,4789,5127,5311,5357,5224,4813, 4159,3436,2686,1734,459,-880,-1902,-2504,-2837,-2990, -2951,-2745,-2448,-2121,-1816,-1668,-1772,-2175,-2795,-3387, -3676,-3706,-3747,-3881,-3974,-3889,-3645,-3319,-2886,-2338, -1804,-1543,-1667,-1905,-1956,-1814,-1723,-1785,-1866,-1836, -1681,-1442,-1104,-681,-326,-235,-397,-614,-614,-313, 246,898,1448,1739,1798,1769,1688,1479,1150,783, 495,405,594,1102,1955,3221,4832,6457,7762,8675, 9276,9526,9275,8446,7211,5982,5172,5013,5456,6186, 6791,7082,7151,7183,7267,7429,7591,7492,6862,5690, 4330,3308,2988,3237,3530,3481,3137,2687,2203,1747, 1481,1461,1513,1397,996,353,-246,-503,-280,282, 854,1136,1182,1229,1276,1038,225,-1161,-2817,-4254, -5159,-5593,-5796,-5952,-6252,-6997,-8299,-9836,-11084,-11892, -12574,-13410,-14091,-14113,-13380,-12217,-11005,-9839,-8786,-8009, -7573,-7264,-6746,-5968,-5132,-4342,-3536,-2712,-1920,-1020, 153,1529,2803,3702,4145,4306,4418,4525,4594,4648, 4773,4966,5203,5439,5655,5779,5626,5022,4034,2974, 2035,1073,-77,-1236,-2075,-2484,-2580,-2468,-2140,-1727, -1479,-1559,-1888,-2165,-2260,-2320,-2571,-2999,-3461,-3839, -4052,-4037,-3804,-3452,-3091,-2771,-2493,-2212,-1901,-1603, -1408,-1433,-1681,-2047,-2284,-2163,-1712,-1192,-848,-736, -754,-780,-819,-868,-801,-472,35,469,795,1154, 1561,1929,2156,2090,1648,983,382,46,27,281, 741,1496,2721,4404,6258,7904,9072,9531,9190,8255, 7228,6610,6533,6625,6499,6163,5905,5987,6475,7265, 8064,8517,8489,8001,7149,6142,5295,4852,4779,4753, 4455,3816,3092,2656,2714,3003,3034,2621,2059,1656, 1324,854,347,55,7,27,154,697,1710,2662, 2799,2007,759,-480,-1530,-2347,-2955,-3436,-3899,-4447, -5067,-5673,-6354,-7313,-8634,-10167,-11652,-12869,-13640,-13801, -13358,-12587,-11774,-11106,-10569,-9977,-9186,-8317,-7561,-6928, -6362,-5852,-5388,-4769,-3749,-2410,-1115,-44,943,2020, 3068,3749,4005,4053,4103,4203,4370,4661,5111,5593, 5946,6097,6071,5942,5658,5030,3959,2602,1217,8, -875,-1370,-1559,-1656,-1747,-1795,-1785,-1727,-1635,-1572, -1591,-1760,-2168,-2740,-3186,-3343,-3367,-3472,-3701,-3914, -3891,-3533,-2952,-2360,-1885,-1583,-1539,-1758,-2040,-2203, -2192,-1992,-1626,-1292,-1168,-1179,-1163,-1004,-809,-781, -918,-989,-787,-361,188,796,1418,1879,2050,1980, 1812,1613,1277,637,-257,-1041,-1188,-384,1283,3316, 5164,6519,7330,7740,7972,8116,8120,7916,7561,7064, 6385,5641,5236,5627,6726,7799,8196,8061,7877,7751, 7500,7143,6839,6542,6029,5239,4449,3999,3919,3912, 3675,3288,3006,2953,3027,2963,2525,1634,535,-376, -713,-354,480,1397,2093,2477,2542,2244,1641,858, 51,-780,-1659,-2470,-3004,-3180,-3222,-3543,-4303,-5437, -6911,-8670,-10401,-11632,-12241,-12537,-12833,-13060,-12956,-12467, -11726,-10950,-10247,-9586,-8968,-8419,-7938,-7448,-6878,-6212, -5465,-4557,-3428,-2073,-662,570,1527,2243,2719,3056, 3392,3738,3963,4061,4242,4656,5251,5919,6495,6767, 6630,6047,5027,3753,2590,1683,885,39,-778,-1387, -1652,-1636,-1500,-1378,-1373,-1525,-1746,-1893,-1984,-2137, -2404,-2689,-2987,-3437,-3988,-4324,-4213,-3717,-3131,-2721, -2481,-2331,-2227,-2147,-2095,-2089,-2074,-2036,-1993,-1930, -1729,-1358,-1034,-980,-1195,-1487,-1599,-1405,-1003,-607, -350,-237,-16,647,1736,2662,2867,2359,1458,367, -843,-1789,-1864,-892,562,1836,2786,3731,4907,6196, 7344,8157,8488,8237,7474,6521,5820,5666,5994,6469, 6757,6882,7033,7337,7729,8059,8142,7861,7306,6779, 6467,6270,5877,5153,4297,3665,3444,3537,3835,4202, 4339,3902,2899,1724,775,169,-124,-132,228,876, 1535,2028,2400,2683,2650,2024,899,-314,-1201,-1547, -1516,-1474,-1641,-2086,-2836,-3941,-5275,-6635,-8011,-9383, -10652,-11686,-12417,-12829,-12920,-12756,-12434,-11992,-11479,-10848, -10106,-9467,-9095,-8895,-8632,-8114,-7291,-6280,-5192,-4033, -2799,-1618,-571,433,1427,2239,2682,2789,2765,2825, 3147,3825,4772,5655,6208,6453,6568,6506,6088,5317, 4336,3266,2153,1064,124,-524,-811,-884,-1001,-1279, -1586,-1734,-1667,-1520,-1469,-1563,-1816,-2284,-2927,-3503, -3790,-3831,-3798,-3725,-3606,-3466,-3273,-2939,-2472,-2131, -2205,-2592,-2794,-2459,-1867,-1558,-1655,-1806,-1767,-1634, -1569,-1486,-1286,-1123,-1253,-1680,-2018,-1802,-852,539, 1861,2679,2804,2266,1280,228,-533,-881,-988,-1039, -1021,-672,199,1606,3380,5206,6585,7200,7236,7138, 7093,6991,6672,6228,5914,5900,6147,6524,6979,7414, 7615,7520,7408,7556,7880,8050,7820,7160,6284,5387, 4582,4037,3969,4359,4820,4971,4707,4146,3475,2795, 2028,1159,331,-201,-259,231,1165,2170,2836,3001, 2711,2095,1310,568,31,-257,-433,-631,-880,-1108, -1417,-2058,-3141,-4521,-5955,-7324,-8647,-9931,-11053,-11912, -12531,-12854,-12781,-12374,-11863,-11378,-10950,-10626,-10438,-10250, -9886,-9239,-8483,-7818,-7192,-6341,-5121,-3641,-2129,-826, 119,776,1250,1560,1746,2029,2580,3266,3882,4484, 5218,6041,6706,7046,7008,6539,5641,4509,3457,2625, 1899,1152,468,-77,-573,-1077,-1402,-1288,-880,-662, -941,-1484,-1831,-1876,-1985,-2467,-3158,-3659,-3798,-3730, -3583,-3368,-3108,-2911,-2889,-2990,-3005,-2716,-2185,-1810, -1775,-1977,-2201,-2281,-2081,-1541,-891,-547,-790,-1489, -2276,-2763,-2702,-1995,-750,557,1395,1656,1725,1894, 2026,1842,1165,116,-953,-1715,-1988,-1658,-725,614, 1961,3177,4420,5677,6693,7188,7122,6738,6370,6175, 6162,6303,6557,6798,6881,6819,6768,7076,7794,8589, 9171,9291,8891,8069,7156,6441,5969,5596,5295,5190, 5324,5561,5695,5638,5316,4568,3333,1901,775,265, 326,769,1409,2075,2630,2983,3031,2767,2240,1571, 964,596,451,352,222,53,-221,-726,-1507,-2491, -3634,-4929,-6452,-8179,-9918,-11339,-12149,-12464,-12577,-12677, -12676,-12512,-12240,-11960,-11637,-11224,-10896,-10748,-10620,-10236, -9505,-8475,-7202,-5688,-4170,-2909,-1927,-1021,-120,599, 1015,1241,1561,2097,2772,3515,4471,5701,6857,7442, 7327,6888,6511,6253,5781,4842,3622,2474,1564,815, 199,-229,-465,-624,-781,-897,-872,-752,-802,-1191, -1810,-2488,-3092,-3454,-3452,-3230,-3159,-3386,-3731,-3946, -3886,-3534,-3009,-2456,-2101,-2194,-2727,-3251,-3186,-2446, -1423,-683,-546,-952,-1647,-2355,-2781,-2750,-2401,-2011, -1683,-1219,-419,660,1747,2458,2595,2206,1510,640, -305,-1176,-1829,-2118,-1954,-1267,-62,1541,3223,4663, 5709,6220,6254,6166,6326,6719,7047,7067,6847,6565, 6380,6406,6731,7349,8075,8627,8900,8965,8895,8676, 8228,7561,6728,5913,5427,5439,5837,6330,6609,6517, 6049,5268,4236,3058,1946,1157,854,990,1353,1810, 2327,2814,3031,2813,2347,1975,1792,1597,1275,947, 717,552,443,401,277,-221,-1273,-2732,-4328,-5931, -7509,-8953,-10103,-10958,-11699,-12346,-12670,-12529,-12105,-11754, -11678,-11791,-11846,-11768,-11665,-11510,-11003,-10005,-8757,-7610, -6574,-5391,-3897,-2374,-1275,-763,-560,-310,115,731, 1583,2601,3592,4464,5250,6011,6706,7191,7372,7214, 6728,5936,4970,4064,3293,2468,1480,502,-157,-366, -249,-60,35,-22,-350,-996,-1757,-2261,-2325,-2156, -2159,-2562,-3252,-3896,-4207,-4040,-3438,-2734,-2359,-2550, -3140,-3680,-3716,-3163,-2393,-1765,-1393,-1222,-1202,-1266, -1381,-1620,-2058,-2580,-2921,-2893,-2539,-1939,-1093,-30, 1001,1724,2124,2357,2361,1888,868,-430,-1653,-2476, -2628,-2036,-892,441,1670,2674,3475,4205,4987,5793, 6448,6783,6767,6534,6275,6161,6257,6445,6608,6792, 7210,7933,8716,9207,9313,9156,8755,8022,7094,6347, 6059,6183,6465,6747,7006,7153,6959,6288,5274,4136, 2996,2072,1625,1647,1834,1964,2064,2250,2528,2742, 2771,2623,2390,2056,1566,1058,856,1060,1424,1545, 1251,714,114,-667,-1874,-3431,-4992,-6446,-7927,-9454, -10741,-11509,-11710,-11637,-11610,-11744,-11935,-12118,-12241,-12248, -12180,-12142,-12105,-11844,-11148,-9955,-8484,-6988,-5599,-4407, -3534,-2952,-2406,-1696,-915,-280,202,756,1594,2703, 3861,4877,5721,6400,6850,7018,6971,6808,6527,5916, 4825,3389,2051,1118,670,640,810,843,482,-223, -907,-1192,-1031,-783,-850,-1395,-2329,-3298,-3868,-3798, -3313,-2921,-2882,-3057,-3266,-3503,-3740,-3812,-3624,-3272, -2919,-2570,-2124,-1617,-1171,-936,-1065,-1554,-2201,-2735, -3022,-3091,-2996,-2723,-2247,-1551,-583,650,1879,2685, 2822,2288,1223,-132,-1310,-1898,-1951,-1801,-1624,-1269, -514,594,1775,2819,3787,4708,5412,5826,6051,6202, 6240,6111,5880,5710,5745,6068,6671,7487,8366,8994, 9192,9073,8796,8317,7591,6818,6330,6342,6753,7259, 7559,7616,7456,6955,6034,4931,4058,3531,3076,2460, 1854,1643,1899,2302,2590,2748,2820,2754,2469,2026, 1637,1471,1501,1595,1660,1671,1612,1490,1348,1063, 368,-925,-2658,-4459,-6078,-7475,-8674,-9640,-10357,-10912, -11370,-11645,-11667,-11570,-11642,-12056,-12739,-13302,-13398,-13004, -12324,-11457,-10364,-9123,-7924,-6830,-5789,-4747,-3820,-3158, -2708,-2250,-1646,-847,123,1222,2270,3108,3773,4513, 5456,6506,7376,7784,7513,6502,5072,3805,3109,2889, 2656,2064,1184,335,-179,-277,-74,180,206,-144, -851,-1719,-2492,-2923,-3007,-2965,-2975,-3027,-3083,-3179, -3337,-3510,-3727,-4016,-4259,-4215,-3777,-3089,-2431,-1910, -1501,-1290,-1412,-1725,-1958,-2091,-2422,-3106,-3858,-4209, -3830,-2746,-1337,32,1162,1858,2032,1812,1360,711, -105,-933,-1630,-2090,-2269,-2143,-1673,-876,100,1022, 1898,2873,3974,4965,5544,5660,5551,5461,5343,5096, 4936,5204,5934,6822,7596,8262,8871,9198,8923,8109, 7221,6714,6650,6869,7153,7421,7605,7669,7558,7270, 6830,6198,5410,4579,3768,3000,2369,2103,2242,2552, 2737,2683,2522,2415,2389,2330,2162,1923,1683,1473, 1367,1478,1858,2354,2562,2191,1390,466,-545,-1806, -3365,-5025,-6595,-8027,-9201,-9931,-10207,-10293,-10484,-10846, -11362,-12002,-12670,-13185,-13426,-13440,-13301,-12928,-12211,-11134, -9833,-8522,-7326,-6343,-5683,-5272,-4799,-3979,-2831,-1675, -868,-513,-299,316,1564,3230,4885,6158,6824,6905, 6625,6267,6025,5819,5388,4583,3547,2470,1494,856, 727,916,1008,821,477,103,-342,-940,-1634,-2180, -2488,-2689,-2852,-2858,-2659,-2512,-2720,-3312,-4021,-4484, -4519,-4219,-3820,-3463,-3194,-2929,-2482,-1810,-1131,-805, -1021,-1695,-2601,-3510,-4233,-4562,-4282,-3419,-2294,-1245, -308,615,1473,1934,1754,1135,471,-105,-755,-1492, -2037,-2195,-2084,-1869,-1521,-801,331,1614,2749,3669, 4423,4987,5277,5241,4915,4469,4198,4402,5134,6203, 7276,8067,8502,8626,8451,8010,7485,7148,7109,7201, 7261,7287,7450,7780,8073,8082,7747,7160,6395,5462, 4519,3845,3541,3368,3042,2675,2516,2607,2804,2943, 2946,2735,2301,1840,1596,1629,1808,1996,2210,2429, 2569,2611,2589,2369,1706,512,-1072,-2833,-4505,-5909, -7010,-7858,-8474,-8939,-9406,-9969,-10552,-11066,-11507,-12054, -12872,-13765,-14248,-14002,-13096,-11885,-10726,-9879,-9379,-8899, -8076,-6843,-5505,-4433,-3803,-3491,-3275,-2941,-2245,-979, 668,2202,3311,4079,4805,5620,6386,6905,7108,6991, 6458,5553,4463,3481,2774,2321,1972,1650,1441,1394, 1390,1233,797,49,-859,-1662,-2043,-1962,-1720,-1706, -1998,-2393,-2703,-2968,-3297,-3623,-3811,-3942,-4174,-4437, -4360,-3645,-2521,-1530,-974,-746,-762,-1167,-2022,-3034, -3834,-4262,-4341,-4066,-3426,-2434,-1247,-106,750,1242, 1402,1346,1157,808,235,-520,-1282,-1854,-2120,-2156, -2083,-1843,-1208,-80,1311,2643,3707,4466,4829,4671, 4129,3656,3643,4107,4837,5672,6548,7357,7892,8086, 8112,8125,8029,7717,7293,7011,6977,7230,7737,8289, 8566,8445,8080,7644,7176,6642,5998,5272,4529,3863, 3375,3176,3237,3374,3420,3262,2934,2603,2440,2372, 2185,1925,1789,1847,1978,2194,2583,3150,3642,3686, 3098,2019,689,-676,-1971,-3205,-4501,-5886,-7139,-7917, -8136,-8139,-8447,-9295,-10490,-11726,-12776,-13441,-13561,-13249, -12849,-12659,-12615,-12347,-11548,-10254,-8804,-7580,-6709,-6183, -5861,-5563,-5101,-4315,-3246,-2140,-1140,-212,784,1884, 3098,4388,5587,6445,6818,6837,6736,6501,5886,4819, 3656,2875,2572,2498,2434,2388,2291,1909,1136,261, -304,-492,-620,-940,-1397,-1766,-1943,-1990,-2009,-2104, -2349,-2788,-3407,-4123,-4713,-4934,-4671,-3995,-3126,-2228, -1436,-861,-595,-693,-1261,-2265,-3396,-4159,-4378,-4238, -3935,-3381,-2467,-1344,-336,377,891,1258,1342,1102, 709,320,-134,-803,-1594,-2297,-2756,-2804,-2319,-1294, 95,1561,2753,3489,3736,3609,3354,3272,3451,3764, 4138,4666,5369,6227,7137,7857,8170,8066,7735,7361, 7086,7006,7188,7555,7866,7997,8106,8381,8686,8676, 8238,7555,6803,6038,5313,4712,4341,4154,4020,3844, 3639,3420,3213,3102,3101,3011,2608,1942,1394,1365, 1883,2541,3016,3294,3508,3657,3643,3416,2894,1948, 453,-1421,-3215,-4472,-5074,-5313,-5642,-6344,-7413,-8622, -9744,-10599,-11160,-11603,-12150,-12870,-13571,-13954,-13914,-13450, -12525,-11233,-9969,-9158,-8761,-8345,-7611,-6723,-6034,-5580, -5065,-4266,-3264,-2266,-1250,-98,1187,2443,3621,4822, 6011,6925,7230,6831,5991,5090,4456,4094,3848,3596, 3288,2910,2477,2064,1704,1364,980,540,28,-570, -1181,-1586,-1570,-1289,-1194,-1474,-1889,-2274,-2807,-3620, -4485,-5034,-5113,-4744,-4001,-3011,-1970,-1155,-739,-739, -1073,-1691,-2523,-3397,-4120,-4538,-4535,-4091,-3314,-2408, -1518,-734,-104,403,825,1156,1341,1294,886,66, -1078,-2267,-3087,-3218,-2716,-1865,-861,192,1196,2010, 2546,2896,3106,3100,2857,2671,2928,3708,4713,5658, 6411,6955,7284,7443,7495,7466,7338,7139,7005,7060, 7324,7675,8081,8556,9016,9198,8864,8099,7333,6850, 6534,6088,5431,4749,4269,4065,4081,4210,4299,4154, 3666,2930,2271,1985,2022,2113,2089,2039,2149,2544, 3260,4191,4940,4971,4118,2766,1424,258,-788,-1704, -2405,-3056,-3980,-5236,-6493,-7327,-7723,-8102,-8879,-10068, -11337,-12408,-13197,-13673,-13794,-13550,-13047,-12440,-11784,-10989, -10066,-9219,-8588,-8154,-7725,-7106,-6306,-5470,-4730,-4083, -3442,-2631,-1383,285,2041,3586,4862,5842,6347,6301, 5970,5738,5663,5441,4897,4226,3721,3420,3206,3011, 2766,2385,1899,1330,699,86,-428,-785,-945,-905, -754,-663,-796,-1292,-2102,-3058,-3979,-4686,-5025,-4955, -4523,-3806,-2856,-1847,-1042,-644,-685,-1114,-1812,-2709, -3635,-4290,-4426,-4104,-3662,-3246,-2801,-2218,-1484,-647, 300,1261,1926,1947,1315,352,-635,-1509,-2197,-2650, -2814,-2656,-2091,-1119,96,1184,1863,2082,2093,2103, 2144,2208,2420,2941,3759,4602,5267,5804,6393,7032, 7493,7517,7161,6730,6521,6629,6982,7526,8121,8537, 8672,8666,8743,8845,8718,8236,7478,6573,5681,5062, 4955,5223,5356,5018,4423,4012,3892,3808,3516,3016, 2426,1855,1374,1157,1488,2476,3765,4729,4964,4600, 3986,3415,2902,2319,1576,645,-509,-1817,-2968,-3776, -4349,-4932,-5632,-6508,-7543,-8659,-9758,-10781,-11784,-12784, -13613,-13900,-13585,-13011,-12501,-12041,-11496,-10880,-10260,-9613, -8841,-7965,-7215,-6772,-6578,-6364,-5834,-4811,-3329,-1672, -91,1376,2701,3834,4752,5467,5920,6060,5926,5636, 5262,4851,4446,4116,3867,3641,3400,3151,2807,2225, 1414,604,43,-225,-316,-307,-215,-73,-113,-546, -1327,-2205,-3051,-3901,-4680,-5123,-5039,-4484,-3615,-2588, -1580,-871,-705,-1065,-1694,-2326,-2837,-3197,-3473,-3776, -4120,-4359,-4238,-3578,-2472,-1265,-253,522,1175,1673, 1771,1278,333,-680,-1556,-2298,-2848,-2943,-2444,-1538, -592,123,627,1008,1291,1492,1691,1906,2047,2121, 2385,3089,4121,5172,6027,6630,6893,6793,6525,6435, 6692,7047,7154,7001,6998,7468,8313,9126,9538,9473, 9120,8622,7966,7265,6791,6595,6395,5939,5338,4925, 4915,5170,5400,5326,4722,3609,2364,1501,1273,1564, 2158,2885,3543,3969,4155,4315,4595,4802,4574,3831, 2870,1972,1124,211,-769,-1708,-2514,-3201,-3860,-4589, -5427,-6423,-7609,-8969,-10363,-11547,-12318,-12695,-12878,-13004, -13065,-13006,-12720,-12100,-11171,-10167,-9352,-8818,-8498,-8298, -8107,-7766,-7140,-6235,-5173,-3998,-2622,-1028,580,1969, 3108,4126,5031,5658,5878,5767,5540,5287,5001,4728, 4572,4534,4420,4083,3539,2866,2156,1449,858,478, 311,288,339,408,403,247,-155,-879,-1931,-3146, -4273,-5042,-5194,-4631,-3642,-2770,-2291,-2033,-1697,-1290, -1125,-1332,-1760,-2239,-2806,-3527,-4217,-4606,-4596,-4247, -3588,-2661,-1560,-428,599,1442,1922,1808,1033,-87, -1096,-1786,-2215,-2393,-2287,-1955,-1512,-1038,-508,161, 878,1342,1283,861,619,989,1848,2727,3389,3955, 4583,5206,5737,6207,6603,6760,6594,6241,5981,6018, 6441,7220,8100,8714,8873,8765,8716,8820,8845,8603, 8058,7280,6378,5599,5234,5466,6081,6554,6443,5727, 4723,3779,3039,2461,2025,1794,1836,2121,2558,3096, 3684,4241,4632,4774,4704,4453,4002,3330,2464,1502, 503,-398,-1064,-1468,-1882,-2578,-3615,-4864,-6187,-7480, -8622,-9550,-10354,-11251,-12299,-13212,-13670,-13623,-13270,-12770, -12142,-11369,-10624,-10118,-9852,-9673,-9460,-9185,-8795,-8197, -7358,-6337,-5177,-3866,-2415,-848,732,2169,3350,4204, 4715,4900,4875,4822,4840,4906,4910,4826,4712,4473, 3933,3147,2468,2048,1601,913,241,9,334,868, 1190,1084,520,-422,-1609,-2776,-3681,-4272,-4593,-4640, -4413,-4030,-3605,-3150,-2595,-1960,-1454,-1334,-1590,-2036, -2535,-3092,-3799,-4584,-5174,-5320,-4999,-4322,-3267,-1834, -286,809,1105,833,465,178,-233,-922,-1771,-2517, -2927,-2859,-2310,-1531,-879,-484,-295,-232,-223,-149, 134,599,1013,1261,1500,2025,2944,4058,5022,5581, 5720,5591,5381,5233,5339,5763,6316,6693,6792,6871, 7273,8055,8946,9485,9416,8796,7876,6942,6283,6000, 6042,6228,6402,6477,6382,6029,5437,4730,3965,3150, 2347,1779,1618,1770,2037,2358,2793,3357,3934,4442, 4824,4979,4723,3951,2904,2000,1442,1108,740,194, -528,-1376,-2341,-3373,-4384,-5353,-6350,-7454,-8665,-9937, -11183,-12294,-13122,-13580,-13610,-13285,-12790,-12259,-11706,-11166, -10812,-10673,-10531,-10207,-9812,-9493,-9174,-8547,-7512,-6279, -5008,-3553,-1803,12,1461,2385,2970,3469,4002,4485, 4810,4933,4909,4873,4933,5017,4910,4426,3572,2552, 1646,1026,723,746,1084,1568,1837,1619,951,154, -569,-1354,-2325,-3296,-3955,-4256,-4408,-4473,-4261,-3693, -2986,-2438,-2094,-1792,-1458,-1221,-1317,-1923,-3047,-4376, -5378,-5706,-5406,-4785,-3987,-3031,-1930,-845,78,736, 1057,948,336,-663,-1682,-2303,-2377,-2134,-1880,-1731, -1608,-1390,-1108,-777,-413,-75,71,-46,-244,-172, 412,1466,2638,3544,4039,4231,4382,4725,5255,5718, 5860,5698,5470,5412,5648,6217,7123,8184,9022,9341, 9203,8837,8346,7743,7155,6760,6609,6631,6743,6876, 6984,6917,6517,5767,4886,4109,3515,3010,2448,1889, 1580,1706,2232,3016,3899,4659,5054,5021,4704,4288, 3841,3358,2898,2520,2136,1569,805,44,-610,-1314, -2220,-3195,-4093,-5029,-6281,-7862,-9435,-10693,-11638,-12395, -12924,-13105,-12932,-12543,-12138,-11823,-11557,-11233,-10831,-10498, -10354,-10412,-10456,-10227,-9512,-8321,-6864,-5434,-4094,-2682, -1135,336,1493,2334,3028,3598,3934,4104,4423,5070, 5769,6074,5788,5085,4214,3290,2411,1762,1495,1587, 1883,2140,2195,2048,1798,1473,964,119,-1025,-2161, -2945,-3326,-3534,-3804,-4118,-4251,-4001,-3374,-2530,-1645, -906,-561,-804,-1588,-2571,-3415,-4083,-4679,-5221,-5488, -5231,-4419,-3182,-1768,-443,482,825,623,111,-421, -810,-1061,-1315,-1630,-2004,-2271,-2130,-1507,-750,-323, -388,-723,-1009,-1070,-829,-285,445,1103,1522,1871, 2381,3141,4003,4766,5268,5430,5309,5054,4831,4829, 5236,5971,6806,7568,8251,8879,9286,9264,8824,8219, 7688,7324,7188,7278,7470,7517,7351,7135,7005,6874, 6500,5827,4997,4090,3088,2136,1623,1765,2354,3006, 3575,4125,4637,4945,4936,4717,4471,4302,4131,3795, 3213,2539,1953,1463,953,369,-251,-942,-1790,-2817, -4038,-5495,-7153,-8718,-9871,-10641,-11369,-12191,-12789,-12873, -12504,-12033,-11609,-11232,-10940,-10850,-11025,-11273,-11295,-10977, -10429,-9790,-9052,-8025,-6620,-4921,-3171,-1622,-404,494, 1219,1839,2418,3077,3957,5068,6080,6537,6329,5714, 5010,4319,3584,2814,2176,1897,2034,2394,2745,2939, 2868,2419,1645,778,56,-508,-1113,-1968,-3029,-4024, -4673,-4810,-4443,-3736,-2944,-2230,-1663,-1234,-988,-1009, -1376,-2120,-3187,-4464,-5657,-6319,-6112,-5156,-3899,-2761, -1864,-1139,-511,34,430,506,139,-619,-1513,-2165, -2307,-1962,-1434,-1071,-1009,-1117,-1247,-1355,-1370,-1163, -787,-478,-375,-302,37,702,1587,2566,3525,4297, 4724,4873,4906,4890,4782,4639,4736,5313,6281,7336, 8210,8832,9193,9259,9055,8748,8572,8538,8463,8194, 7845,7674,7799,8087,8280,8244,7967,7437,6580,5406, 4154,3133,2515,2329,2525,2968,3433,3790,4180,4680, 5118,5252,5139,5037,5029,4890,4368,3574,2882,2498, 2303,2055,1603,952,125,-905,-2146,-3519,-4891,-6258, -7711,-9253,-10742,-11967,-12705,-12910,-12807,-12654,-12545,-12398, -12157,-11940,-11898,-12027,-12199,-12268,-12252,-12126,-11706,-10745, -9168,-7264,-5472,-4075,-3013,-2090,-1180,-241,808,2008, 3221,4302,5195,5909,6406,6525,6123,5251,4162,3204, 2659,2609,2882,3147,3183,3015,2841,2741,2632,2392, 1967,1290,301,-950,-2224,-3214,-3771,-3985,-4064,-4070, -3888,-3347,-2434,-1358,-481,-132,-481,-1480,-2818,-4029, -4775,-5114,-5327,-5429,-5203,-4537,-3513,-2309,-1062,-13, 480,282,-304,-899,-1291,-1479,-1460,-1303,-1201,-1323, -1529,-1575,-1373,-1108,-997,-1093,-1225,-1257,-1184,-1049, -800,-301,507,1478,2423,3266,3975,4421,4441,4097, 3743,3753,4227,4962,5733,6450,7106,7676,8153,8569, 8870,8973,8884,8731,8554,8268,7871,7635,7835,8391, 8884,8994,8729,8230,7554,6645,5501,4335,3463,3038, 2935,2958,3028,3206,3562,4057,4580,5054,5403,5547, 5428,5052,4498,3967,3684,3612,3492,3109,2541,1979, 1501,968,181,-960,-2337,-3832,-5407,-7087,-8726,-10069, -10979,-11605,-12156,-12621,-12781,-12583,-12177,-11784,-11571,-11715, -12237,-12907,-13385,-13418,-12944,-12020,-10760,-9391,-8113,-6891, -5648,-4381,-3260,-2369,-1556,-542,847,2517,4096,5282, 5950,6106,5817,5201,4505,3987,3724,3514,3190,2816, 2617,2702,2985,3317,3559,3498,2968,2039,1054,287, -397,-1304,-2496,-3674,-4513,-4834,-4518,-3615,-2449,-1485, -976,-853,-954,-1232,-1731,-2449,-3332,-4326,-5302,-5990, -6096,-5465,-4240,-2876,-1831,-1236,-897,-644,-536,-624, -816,-961,-1110,-1334,-1579,-1663,-1526,-1322,-1213,-1215, -1219,-1210,-1257,-1422,-1662,-1880,-1909,-1528,-646,558, 1700,2472,2904,3185,3354,3329,3195,3230,3637,4274, 4880,5326,5764,6384,7213,8002,8518,8718,8702,8567, 8336,8033,7765,7711,7963,8445,8920,9184,9163,8875, 8347,7569,6595,5645,4897,4320,3738,3111,2630,2596, 3082,3807,4413,4785,5039,5252,5308,5155,4920,4706, 4475,4178,3838,3517,3255,3055,2898,2644,2080,1103, -159,-1545,-2970,-4422,-5888,-7351,-8836,-10264,-11417,-12067, -12162,-11838,-11432,-11305,-11570,-12040,-12473,-12869,-13305,-13674, -13722,-13327,-12551,-11479,-10163,-8748,-7538,-6694,-6077,-5330, -4234,-2791,-1114,687,2368,3615,4325,4736,5112,5427, 5466,5083,4385,3595,2949,2673,2828,3198,3477,3514, 3366,3249,3270,3313,3100,2401,1229,-228,-1766,-3138, -4020,-4215,-3924,-3536,-3214,-2799,-2112,-1295,-675,-459, -726,-1496,-2668,-3966,-5048,-5643,-5706,-5372,-4806,-4110, -3355,-2603,-1883,-1252,-839,-745,-894,-1040,-1062,-1080, -1313,-1683,-1853,-1634,-1198,-870,-797,-946,-1241,-1650, -2130,-2540,-2628,-2187,-1279,-220,669,1280,1718,2104, 2444,2680,2800,2901,3097,3395,3727,4101,4633,5421, 6364,7222,7790,8117,8331,8373,8121,7683,7413,7609, 8179,8732,9036,9125,9125,9065,8908,8618,8104,7329, 6360,5340,4401,3612,3107,2983,3184,3538,3898,4226, 4554,4893,5225,5439,5432,5174,4782,4367,4029,3884, 3998,4206,4151,3661,2966,2354,1808,1063,-37,-1469, -3162,-5049,-6943,-8524,-9631,-10351,-10844,-11142,-11210,-11123, -11106,-11315,-11786,-12459,-13228,-13943,-14334,-14145,-13381,-12297, -11243,-10449,-9900,-9397,-8702,-7636,-6219,-4632,-3140,-1864, -637,803,2444,3914,4846,5214,5195,4906,4430,3959, 3704,3621,3467,3125,2770,2736,3127,3768,4343,4586, 4313,3523,2367,1073,-174,-1293,-2287,-3158,-3792,-4081, -3953,-3375,-2396,-1287,-490,-305,-653,-1234,-1911,-2738, -3748,-4731,-5339,-5408,-5077,-4624,-4180,-3655,-2961,-2166, -1496,-1095,-907,-838,-907,-1175,-1573,-1876,-1886,-1521, -930,-456,-382,-690,-1180,-1715,-2259,-2682,-2755,-2375, -1729,-1094,-539,69,769,1418,1841,2055,2198,2394, 2606,2739,2827,3019,3527,4424,5536,6566,7269,7610, 7683,7622,7536,7525,7619,7821,8104,8396,8658,8865, 9117,9448,9674,9583,9128,8459,7652,6668,5621,4784, 4283,3931,3555,3277,3340,3780,4417,5018,5414,5515, 5327,5027,4825,4809,4860,4817,4619,4377,4219,4182, 4158,4041,3749,3197,2270,940,-663,-2350,-4026,-5692, -7319,-8668,-9569,-10023,-10114,-9978,-9874,-10162,-11019,-12247, -13302,-13760,-13704,-13472,-13277,-13067,-12771,-12365,-11826,-11071, -10121,-9138,-8245,-7383,-6305,-4823,-2975,-1028,729,2102, 3035,3668,4198,4699,5039,5026,4608,3947,3254,2722, 2493,2732,3393,4149,4611,4673,4500,4263,3938,3288, 2118,527,-1095,-2374,-3215,-3715,-3838,-3497,-2729,-1776, -943,-469,-428,-748,-1283,-1971,-2828,-3744,-4444,-4751, -4824,-4895,-4913,-4625,-3909,-2979,-2124,-1486,-1091,-974, -1159,-1561,-1940,-2029,-1712,-1161,-681,-451,-462,-633, -934,-1385,-1941,-2447,-2710,-2640,-2308,-1863,-1420,-964, -367,395,1172,1701,1910,1898,1797,1665,1644,1962, 2747,3769,4701,5442,6063,6583,6907,7038,7123,7269, 7431,7510,7541,7640,7955,8481,9100,9611,9848,9777, 9458,9019,8561,8073,7400,6408,5234,4243,3712,3589, 3718,3995,4330,4603,4758,4876,5037,5246,5357,5278, 5057,4809,4583,4402,4365,4546,4833,4944,4721,4281, 3825,3279,2292,666,-1440,-3616,-5506,-6866,-7626,-7933, -8110,-8466,-9126,-9973,-10805,-11482,-11992,-12424,-12857,-13343, -13758,-13860,-13528,-12925,-12363,-12012,-11801,-11482,-10873,-9880, -8548,-6965,-5240,-3574,-2153,-945,311,1806,3360,4494, 4897,4697,4241,3795,3437,3138,2888,2759,2900,3366, 3998,4518,4855,5085,5133,4712,3659,2176,604,-826, -2068,-3051,-3571,-3502,-2902,-2067,-1335,-896,-712,-708, -910,-1377,-2016,-2654,-3242,-3889,-4609,-5206,-5441,-5194, -4495,-3547,-2663,-2095,-1854,-1779,-1763,-1858,-2060,-2142, -1867,-1317,-807,-535,-461,-526,-766,-1182,-1625,-1945, -2175,-2443,-2716,-2793,-2509,-1870,-1018,-139,600,1095, 1285,1202,990,868,998,1407,2012,2743,3497,4186, 4807,5456,6164,6757,6987,6849,6630,6609,6854,7275, 7773,8268,8664,8954,9217,9540,9873,10018,9748,9077, 8202,7278,6327,5424,4761,4432,4310,4157,3963,3961, 4290,4812,5233,5378,5300,5118,4960,4905,4908,4834, 4625,4402,4365,4621,5127,5648,5858,5449,4259,2434, 381,-1462,-2866,-3907,-4857,-5864,-6836,-7602,-8163,-8694, -9329,-10052,-10823,-11649,-12516,-13216,-13497,-13351,-13047,-12914, -13086,-13403,-13513,-13094,-12224,-11222,-10362,-9521,-8403,-6948, -5322,-3665,-1956,-212,1413,2681,3462,3836,3970,3935, 3697,3230,2697,2393,2444,2748,3189,3779,4528,5254, 5652,5541,4899,3784,2291,659,-851,-2077,-2877,-3104, -2794,-2278,-1871,-1642,-1418,-1062,-743,-722,-1095,-1740, -2549,-3452,-4346,-5057,-5378,-5256,-4807,-4171,-3473,-2849, -2471,-2419,-2557,-2640,-2524,-2238,-1882,-1541,-1252,-1026, -867,-771,-697,-717,-946,-1414,-2007,-2573,-3037,-3307, -3202,-2611,-1666,-757,-166,94,209,316,424,514, 603,723,902,1229,1861,2833,3933,4807,5299,5564, 5798,5991,6099,6189,6387,6676,6938,7162,7473,7997, 8728,9485,10024,10155,9870,9362,8823,8276,7646,6860, 5965,5096,4452,4159,4148,4263,4388,4500,4597,4673, 4849,5212,5607,5648,5122,4282,3657,3614,4136,4956, 5767,6324,6476,6135,5318,4115,2726,1320,-48,-1469, -2991,-4399,-5342,-5770,-6076,-6744,-7898,-9219,-10312,-11019, -11458,-11838,-12231,-12617,-12945,-13282,-13643,-13863,-13761,-13444, -13116,-12844,-12464,-11802,-10828,-9607,-8145,-6495,-4755,-2982, -1237,363,1640,2548,3181,3581,3610,3229,2663,2234, 2064,2116,2370,2917,3808,4912,5827,6157,5778,4861, 3608,2185,749,-491,-1413,-2052,-2479,-2657,-2518,-2115, -1615,-1132,-723,-489,-556,-1001,-1784,-2776,-3806,-4622, -5050,-5023,-4637,-4167,-3838,-3647,-3479,-3271,-3100,-2972, -2811,-2549,-2250,-2050,-1931,-1743,-1350,-853,-450,-299, -465,-1000,-1826,-2650,-3113,-3137,-2936,-2717,-2437,-1970, -1327,-671,-157,121,178,74,-77,-166,-60,355, 1096,1993,2814,3454,3968,4479,5032,5564,5934,6002, 5811,5642,5778,6232,6857,7554,8282,8939,9393,9660, 9863,10026,9952,9454,8550,7507,6639,6130,5861,5521, 4946,4277,3860,3876,4270,4830,5393,5810,5906,5512, 4733,3928,3577,3854,4503,5091,5435,5751,6238,6739, 6822,6203,4982,3452,1880,395,-847,-1769,-2502,-3289, -4263,-5386,-6562,-7664,-8546,-9221,-9849,-10562,-11289,-11887, -12307,-12680,-13076,-13392,-13532,-13541,-13585,-13690,-13678,-13335, -12633,-11694,-10615,-9327,-7689,-5799,-3933,-2234,-665,776, 1974,2811,3241,3262,2882,2240,1642,1410,1703,2469, 3503,4564,5460,6015,6119,5752,5012,4012,2813,1488, 220,-815,-1586,-2180,-2556,-2511,-1940,-1124,-428,-74, -87,-466,-1207,-2162,-3063,-3713,-4092,-4278,-4297,-4197, -4094,-4053,-4017,-3832,-3452,-3045,-2835,-2897,-3051,-3017, -2638,-1995,-1313,-781,-473,-384,-525,-880,-1355,-1865, -2367,-2803,-3094,-3190,-3055,-2640,-1925,-1099,-538,-412, -542,-650,-626,-509,-327,-67,257,660,1204,1938, 2848,3808,4626,5086,5131,4960,4928,5183,5546,5802, 5948,6223,6844,7826,8894,9683,10044,10075,9913,9557, 9024,8489,8133,7872,7334,6287,5009,4087,3857,4204, 4785,5262,5495,5516,5408,5200,4922,4567,4165,3851, 3781,4057,4673,5557,6530,7234,7344,6809,5873,4848, 3861,2836,1712,596,-418,-1373,-2442,-3628,-4748,-5679, -6507,-7426,-8443,-9372,-10131,-10760,-11319,-11809,-12243,-12633, -12986,-13294,-13559,-13801,-14009,-14106,-13971,-13476,-12603,-11482, -10229,-8823,-7190,-5351,-3420,-1488,311,1693,2385,2454, 2198,1863,1493,1198,1237,1782,2715,3750,4679,5398, 5856,6008,5860,5417,4658,3587,2233,744,-629,-1626, -2137,-2187,-1847,-1203,-437,130,197,-242,-926,-1565, -2064,-2506,-2972,-3485,-3981,-4326,-4369,-4125,-3795,-3564, -3472,-3456,-3501,-3609,-3641,-3404,-2872,-2268,-1765,-1367, -1009,-667,-385,-301,-566,-1191,-1961,-2622,-3049,-3194, -3011,-2557,-2043,-1683,-1506,-1338,-1033,-657,-388,-418, -751,-1067,-945,-287,557,1259,1862,2570,3368,4045, 4482,4752,4961,5062,4948,4709,4666,5150,6188,7456, 8496,9042,9187,9240,9467,9844,10163,10152,9713,8914, 7912,6834,5882,5252,4998,4951,4928,4938,5158,5611, 5988,5946,5431,4706,4073,3679,3576,3831,4498,5420, 6292,6867,7086,7036,6762,6308,5661,4844,3882,2800, 1659,583,-392,-1343,-2393,-3514,-4581,-5537,-6500,-7536, -8534,-9356,-10030,-10649,-11152,-11488,-11807,-12323,-13022,-13624, -13972,-14103,-14125,-14074,-13886,-13447,-12682,-11560,-10081,-8270, -6191,-3988,-1952,-313,838,1447,1509,1234,960,921, 1117,1467,1964,2659,3500,4378,5164,5812,6261,6425, 6183,5430,4103,2383,674,-590,-1210,-1316,-1132,-839, -523,-244,-75,-49,-185,-470,-922,-1545,-2304,-3074, -3633,-3812,-3693,-3531,-3491,-3554,-3647,-3738,-3794,-3775, -3687,-3554,-3350,-3033,-2610,-2083,-1382,-557,43,33, -557,-1262,-1676,-1844,-2065,-2452,-2810,-2909,-2667,-2218, -1746,-1329,-985,-765,-769,-983,-1197,-1202,-952,-582, -240,48,429,1158,2295,3538,4391,4614,4394,4079, 3905,3979,4367,5062,5867,6510,6904,7263,7878,8779, 9672,10262,10469,10418,10206,9799,9136,8281,7368,6487, 5743,5257,5148,5393,5822,6221,6399,6245,5723,4962, 4269,3919,3909,4090,4398,4911,5601,6277,6789,7119, 7305,7258,6884,6250,5512,4736,3838,2790,1673,637, -264,-1120,-2129,-3344,-4622,-5790,-6798,-7666,-8403,-9007, -9581,-10227,-10919,-11523,-12036,-12551,-13080,-13525,-13877,-14185, -14448,-14591,-14458,-13886,-12722,-10974,-8846,-6635,-4554,-2725, -1257,-243,296,477,530,641,866,1122,1329,1564, 2060,2957,4157,5383,6378,6957,6979,6371,5215,3807, 2457,1346,487,-162,-610,-827,-759,-387,112,443, 441,151,-312,-934,-1696,-2398,-2779,-2853,-2902,-3160, -3522,-3686,-3526,-3263,-3261,-3642,-4146,-4384,-4191,-3669, -3018,-2337,-1683,-1127,-731,-527,-510,-630,-851,-1179, -1688,-2338,-2859,-2936,-2554,-2063,-1784,-1725,-1675,-1486, -1204,-966,-863,-933,-1156,-1478,-1677,-1428,-549,744, 1955,2708,3026,3162,3297,3482,3720,3997,4220,4363, 4545,4927,5507,6201,6960,7789,8652,9409,9964,10347, 10605,10620,10200,9317,8186,7101,6292,5852,5774,5973, 6307,6541,6524,6245,5819,5348,4859,4368,3975,3866, 4098,4524,4994,5501,6060,6596,7025,7312,7412,7206, 6642,5865,5074,4350,3641,2847,1918,854,-299,-1458, -2582,-3721,-4856,-5858,-6672,-7389,-8134,-8947,-9762,-10476, -10970,-11302,-11666,-12246,-12982,-13723,-14411,-15058,-15523,-15500, -14761,-13329,-11434,-9354,-7350,-5582,-4072,-2767,-1638,-746, -119,247,367,253,42,65,641,1778,3179,4475, 5493,6233,6671,6649,6103,5200,4200,3174,2035,816, -171,-588,-381,123,481,523,351,172,39,-165, -591,-1271,-2030,-2606,-2870,-2923,-2911,-2875,-2846,-2953, -3341,-3929,-4390,-4473,-4196,-3812,-3505,-3242,-2783,-2033, -1196,-597,-337,-348,-635,-1174,-1744,-2059,-2057,-2010, -2153,-2429,-2585,-2433,-1968,-1301,-714,-535,-889,-1511, -2006,-2127,-1902,-1444,-821,-89,637,1245,1747,2242, 2760,3203,3453,3520,3550,3682,3937,4240,4583,5050, 5660,6359,7152,8126,9245,10275,10893,10951,10537,9816, 8919,7998,7235,6744,6508,6483,6646,6852,6925,6750, 6349,5819,5295,4874,4582,4342,4153,4113,4361,4893, 5571,6244,6800,7173,7355,7397,7277,6919,6366,5797, 5295,4738,3929,2865,1701,571,-489,-1517,-2555,-3622, -4688,-5683,-6613,-7532,-8431,-9164,-9622,-9875,-10136,-10627, -11450,-12544,-13740,-14893,-15809,-16184,-15794,-14753,-13441,-12114, -10667,-8931,-6967,-5061,-3460,-2215,-1305,-789,-700,-915, -1088,-889,-187,847,1926,2903,3859,4913,6001,6791, 6913,6312,5268,4135,3094,2150,1310,656,302,211, 228,278,425,700,873,598,-155,-1034,-1659,-1957, -2113,-2214,-2276,-2389,-2647,-2982,-3256,-3448,-3672,-3989, -4340,-4582,-4575,-4160,-3319,-2297,-1471,-1089,-1063,-1115, -1033,-853,-809,-1072,-1607,-2208,-2673,-2885,-2761,-2266, -1605,-1118,-1013,-1215,-1520,-1779,-1994,-2142,-2124,-1909, -1563,-1143,-619,50,779,1428,1913,2249,2530,2807, 3127,3423,3606,3647,3616,3679,3997,4676,5700,6925, 8177,9309,10187,10683,10683,10212,9427,8557,7812,7352, 7184,7151,7078,6983,6969,6994,6874,6494,5942,5373, 4885,4478,4150,3943,3969,4308,4904,5584,6138,6509, 6770,6997,7166,7206,7077,6804,6432,5965,5283,4339, 3283,2328,1481,551,-524,-1624,-2678,-3807,-5121,-6477, -7522,-8029,-8129,-8205,-8560,-9292,-10311,-11483,-12733,-13993, -15090,-15804,-16054,-15920,-15527,-14878,-13776,-12061,-9846,-7581, -5723,-4451,-3613,-2923,-2325,-1970,-1887,-1842,-1560,-987, -197,844,2211,3741,5031,5784,6033,5969,5686,5146, 4372,3426,2371,1344,592,288,364,623,852,911, 714,295,-192,-613,-908,-1162,-1517,-2017,-2477,-2662, -2500,-2287,-2414,-2983,-3755,-4446,-4904,-5032,-4777,-4256, -3732,-3352,-3046,-2635,-2029,-1343,-792,-573,-751,-1238, -1863,-2448,-2804,-2816,-2543,-2164,-1858,-1659,-1550,-1532, -1623,-1802,-2034,-2285,-2495,-2549,-2324,-1859,-1310,-810, -374,52,508,1048,1687,2310,2749,2934,2957,2920, 2837,2712,2697,3062,3955,5266,6731,8066,9091,9760, 10075,10042,9677,9092,8466,7958,7631,7456,7351,7253, 7212,7279,7325,7143,6643,5985,5395,4893,4407,4021, 3956,4244,4665,5032,5349,5712,6172,6633,6970,7156, 7293,7435,7453,7111,6360,5417,4597,4009,3521,2896, 1964,705,-729,-2179,-3570,-4858,-5866,-6370,-6446,-6532, -7069,-8062,-9124,-9990,-10833,-11926,-13277,-14629,-15763,-16575, -16914,-16594,-15577,-14084,-12381,-10617,-8863,-7181,-5654,-4410, -3579,-3226,-3216,-3248,-3034,-2461,-1563,-446,744,1937, 3113,4204,5115,5753,6070,5949,5269,4131,2962,2165, 1780,1553,1299,1014,796,698,722,777,690,342, -261,-986,-1598,-1875,-1779,-1555,-1516,-1803,-2322,-2927, -3513,-3968,-4232,-4370,-4520,-4703,-4778,-4603,-4140,-3400, -2489,-1626,-1055,-891,-1070,-1441,-1847,-2197,-2441,-2555, -2555,-2445,-2197,-1830,-1491,-1369,-1546,-1932,-2298,-2480, -2496,-2466,-2420,-2286,-2033,-1691,-1328,-974,-579,-37, 712,1563,2294,2685,2677,2424,2135,1908,1797,1958, 2608,3756,5137,6442,7560,8511,9255,9656,9645,9329, 8900,8481,8098,7722,7432,7369,7559,7804,7813,7522, 7082,6620,6111,5505,4863,4351,4115,4207,4503,4750, 4787,4786,5103,5787,6526,7030,7323,7548,7650,7392, 6763,6077,5679,5574,5446,4953,3969,2604,1077,-416, -1727,-2788,-3628,-4361,-5061,-5726,-6293,-6735,-7153,-7736, -8643,-9932,-11519,-13184,-14638,-15725,-16471,-16903,-16901,-16282, -15027,-13333,-11436,-9498,-7721,-6366,-5559,-5172,-4898,-4508, -4002,-3485,-3013,-2454,-1574,-284,1273,2838,4188,5117, 5479,5356,5036,4706,4295,3685,2910,2111,1471,1130, 1141,1374,1519,1341,859,251,-307,-702,-885,-896, -910,-1069,-1388,-1799,-2193,-2487,-2712,-2982,-3391,-3957, -4612,-5188,-5464,-5287,-4694,-3930,-3217,-2577,-1970,-1473, -1244,-1357,-1741,-2234,-2628,-2758,-2642,-2410,-2194,-1996, -1769,-1582,-1595,-1904,-2337,-2600,-2598,-2506,-2486,-2535, -2548,-2462,-2331,-2144,-1785,-1120,-200,748,1471,1886, 2050,2008,1728,1279,934,993,1505,2315,3302,4414, 5611,6828,7960,8825,9209,9100,8777,8536,8343,8017, 7584,7366,7569,7969,8167,7964,7483,6962,6476,5969, 5408,4918,4635,4531,4431,4214,3994,4008,4384,5076, 5910,6651,7070,7117,6933,6748,6686,6751,6866,6900, 6660,6023,5054,3986,2968,1937,730,-663,-2029,-3121, -3888,-4436,-4861,-5206,-5547,-6087,-6967,-8127,-9397,-10728, -12223,-13926,-15597,-16883,-17508,-17388,-16573,-15199,-13553,-11932, -10467,-9086,-7789,-6667,-5846,-5394,-5276,-5273,-5040,-4307, -3105,-1682,-273,1016,2182,3257,4216,4984,5412,5380, 4897,4125,3301,2675,2368,2321,2325,2213,1945,1523, 1010,542,285,233,181,-56,-466,-890,-1183,-1288, -1278,-1320,-1587,-2089,-2700,-3297,-3883,-4503,-5064,-5352, -5165,-4537,-3725,-2981,-2353,-1822,-1442,-1362,-1628,-2081, -2425,-2515,-2420,-2261,-2049,-1766,-1516,-1466,-1656,-1901, -2041,-2083,-2098,-2128,-2204,-2360,-2560,-2703,-2745,-2707, -2475,-1844,-825,234,945,1307,1549,1769,1788,1462, 950,624,760,1342,2140,3004,4036,5329,6715,7869, 8582,8887,8915,8744,8467,8201,8048,8054,8217,8466, 8627,8515,8118,7613,7194,6903,6642,6314,5851,5254, 4597,4008,3714,3916,4568,5340,5861,6052,6135,6326, 6603,6869,7101,7335,7512,7496,7287,7001,6655,6133, 5292,4128,2737,1310,26,-1016,-1846,-2544,-3197,-3804, -4300,-4666,-4998,-5490,-6367,-7797,-9724,-11854,-13771,-15232, -16176,-16667,-16793,-16519,-15722,-14370,-12619,-10779,-9190,-8056, -7408,-7095,-6850,-6465,-5928,-5310,-4602,-3719,-2608,-1311, 158,1741,3221,4315,4855,4878,4561,4120,3769,3628, 3597,3447,3059,2533,2086,1825,1695,1517,1192,797, 494,292,32,-344,-666,-743,-656,-648,-858,-1240, -1710,-2320,-3116,-3980,-4702,-5120,-5192,-4935,-4396,-3677, -2923,-2263,-1822,-1716,-1953,-2301,-2479,-2410,-2266,-2196, -2120,-1929,-1682,-1577,-1741,-2006,-2081,-1863,-1600,-1636, -2009,-2455,-2730,-2893,-3092,-3232,-3090,-2576,-1790,-889, -43,603,1018,1257,1335,1201,871,492,267,329, 706,1396,2397,3650,5051,6378,7375,7915,8112,8152, 8101,8007,8050,8336,8668,8731,8453,8095,7931,7995, 8127,8111,7798,7152,6288,5404,4688,4286,4211,4364, 4592,4798,4980,5206,5512,5881,6257,6548,6731,6879, 7109,7453,7803,7988,7861,7353,6517,5512,4496,3524, 2468,1207,-180,-1433,-2307,-2738,-2851,-2872,-3065,-3641, -4646,-5931,-7355,-8917,-10708,-12682,-14588,-16127,-17068,-17252, -16696,-15602,-14246,-12842,-11527,-10390,-9433,-8628,-7948,-7419, -7057,-6815,-6577,-6101,-5085,-3441,-1489,235,1487,2398, 3159,3749,4056,4136,4143,4134,4020,3753,3413,3073, 2770,2507,2281,2045,1745,1394,1049,697,325,-35, -265,-278,-163,-114,-250,-502,-806,-1266,-2053,-3143, -4226,-4888,-5015,-4830,-4571,-4196,-3579,-2836,-2312,-2219, -2416,-2572,-2509,-2302,-2117,-2043,-2065,-2081,-2014,-1917, -1866,-1842,-1767,-1609,-1428,-1350,-1521,-1944,-2464,-2887, -3197,-3418,-3452,-3115,-2449,-1685,-992,-316,372,928, 1161,1075,813,483,142,-153,-229,127,1040,2387, 3824,5003,5811,6361,6808,7261,7760,8241,8566,8632, 8474,8252,8119,8171,8445,8819,9055,8940,8491,7857, 7164,6475,5869,5394,5021,4706,4520,4588,4903,5298, 5576,5661,5654,5740,6044,6573,7209,7758,8063,8106, 8038,7985,7897,7607,6932,5802,4333,2798,1464,444, -273,-800,-1223,-1602,-1932,-2218,-2560,-3191,-4276,-5795, -7659,-9832,-12152,-14215,-15542,-16076,-16159,-16051,-15678,-14851, -13576,-12058,-10622,-9519,-8860,-8583,-8489,-8375,-8071,-7447, -6437,-5085,-3563,-2055,-663,583,1700,2659,3359,3779, 4027,4231,4338,4208,3871,3562,3463,3454,3284,2866, 2406,2093,1869,1519,952,395,125,199,417,555, 552,452,248,-198,-972,-2029,-3162,-4061,-4494,-4487, -4253,-4005,-3745,-3391,-2987,-2710,-2634,-2605,-2443,-2192, -2039,-2034,-2071,-2072,-2076,-2102,-2098,-1939,-1610,-1246, -1019,-1019,-1197,-1482,-1879,-2421,-3008,-3410,-3492,-3314, -2974,-2504,-1903,-1177,-359,465,1089,1248,903,286, -315,-683,-665,-194,606,1481,2257,2969,3749,4654, 5628,6585,7396,7925,8102,8007,7849,7830,8037,8394, 8721,8919,8993,8983,8897,8702,8309,7663,6807,5938, 5310,5060,5118,5248,5241,5086,4930,4917,5098,5451, 5915,6312,6524,6690,7081,7734,8373,8740,8817,8644, 8131,7187,5951,4701,3600,2566,1492,426,-422,-857, -840,-615,-585,-1045,-2070,-3533,-5256,-7111,-9033,-10995, -12883,-14490,-15663,-16334,-16445,-15893,-14743,-13327,-12076,-11182, -10552,-10071,-9758,-9621,-9466,-9015,-8137,-6952,-5721,-4563, -3316,-1851,-316,982,1894,2555,3121,3589,3865,3934, 3852,3713,3639,3679,3708,3536,3135,2691,2322,1926, 1363,720,277,238,519,879,1122,1173,1004,537, -263,-1279,-2255,-3030,-3574,-3933,-4099,-4060,-3874,-3675, -3554,-3452,-3253,-2940,-2611,-2352,-2201,-2162,-2207,-2276, -2339,-2396,-2397,-2234,-1851,-1353,-985,-877,-983,-1237, -1608,-2052,-2474,-2891,-3351,-3776,-3956,-3694,-2945,-1874, -751,136,605,606,271,-164,-491,-590,-476,-276, -104,92,467,1131,2097,3261,4461,5485,6179,6610, 6971,7346,7649,7790,7816,7883,8087,8455,8950,9443, 9659,9378,8673,7902,7355,6993,6624,6160,5694,5343, 5129,5018,5000,5098,5281,5429,5444,5389,5473,5892, 6644,7517,8250,8675,8814,8821,8786,8607,8022,6925, 5507,4042,2703,1599,861,581,649,747,584,106, -517,-1227,-2214,-3731,-5743,-7929,-10030,-12019,-13865,-15292, -15970,-15838,-15157,-14251,-13350,-12571,-11927,-11366,-10883,-10548, -10365,-10153,-9638,-8771,-7712,-6620,-5472,-4126,-2578,-1048, 218,1170,1929,2617,3161,3453,3534,3592,3731,3894, 3996,4032,3984,3739,3193,2420,1636,1045,729,685, 873,1206,1538,1732,1690,1329,620,-301,-1180,-1879, -2432,-2920,-3327,-3592,-3708,-3746,-3739,-3656,-3468,-3192, -2836,-2442,-2134,-2039,-2160,-2403,-2619,-2660,-2457,-2109, -1778,-1532,-1311,-1076,-857,-706,-678,-898,-1486,-2404, -3374,-4059,-4268,-3958,-3157,-2093,-1133,-556,-321,-203, -51,86,95,-51,-307,-582,-771,-709,-286,432, 1232,1958,2702,3651,4781,5844,6527,6779,6818,6887, 7117,7499,8007,8557,9026,9308,9381,9271,9037,8774, 8510,8175,7628,6861,6111,5673,5632,5760,5763,5538, 5243,5054,5006,5053,5215,5603,6180,6742,7173,7676, 8442,9327,9898,9858,9253,8296,7148,5868,4579,3437, 2557,2001,1738,1614,1460,1237,1030,816,339,-704, -2439,-4673,-7028,-9221,-11205,-12988,-14356,-15032,-15002,-14589, -14107,-13611,-13007,-12365,-11863,-11558,-11344,-11104,-10791,-10333, -9674,-8767,-7645,-6357,-4958,-3519,-2110,-794,379,1318, 1921,2232,2458,2789,3237,3678,4028,4264,4349,4164, 3635,2865,2024,1303,860,754,927,1242,1569,1775, 1768,1518,1063,448,-268,-1036,-1708,-2202,-2591,-3029, -3532,-3949,-4173,-4187,-3976,-3555,-3084,-2789,-2723,-2768, -2784,-2768,-2753,-2731,-2669,-2616,-2614,-2562,-2256,-1623, -851,-282,-188,-614,-1440,-2470,-3442,-4063,-4170,-3894, -3536,-3215,-2792,-2136,-1346,-674,-325,-314,-500,-690, -801,-871,-981,-1137,-1230,-1093,-617,163,1143,2223, 3287,4188,4774,5032,5206,5605,6273,6929,7315,7507, 7775,8219,8674,8963,9081,9056,8806,8241,7511,6917, 6612,6483,6293,5936,5476,5112,4967,4988,4998,4867, 4653,4546,4709,5141,5777,6582,7554,8610,9498,9866, 9562,8819,7998,7191,6220,4999,3770,2832,2249,1918, 1787,1851,2026,2123,1923,1240,-37,-1849,-4015,-6296, -8514,-10526,-12180,-13402,-14183,-14563,-14588,-14292,-13793,-13276, -12902,-12659,-12441,-12167,-11873,-11587,-11267,-10770,-9986,-8882, -7529,-6024,-4477,-2998,-1706,-706,18,581,1080,1575, 2132,2836,3605,4196,4418,4281,3880,3271,2499,1747, 1223,989,985,1181,1529,1872,1976,1765,1356,912, 491,55,-472,-1096,-1782,-2497,-3215,-3785,-4025,-3932, -3731,-3621,-3579,-3492,-3329,-3136,-2902,-2643,-2497,-2641, -3067,-3529,-3684,-3305,-2464,-1480,-737,-405,-432,-690, -1102,-1649,-2329,-3116,-3842,-4217,-4119,-3723,-3258,-2744, -2121,-1489,-1077,-899,-743,-494,-344,-548,-1102,-1681, -1940,-1770,-1267,-580,216,1042,1814,2465,3054,3705, 4434,5117,5604,5872,6084,6461,7110,7918,8595,8928, 8913,8767,8695,8645,8408,7946,7456,7114,6821,6406, 5924,5620,5611,5673,5504,5059,4504,4087,3994,4291, 4924,5771,6741,7758,8676,9315,9601,9570,9264,8649, 7729,6580,5361,4205,3240,2606,2398,2568,2933,3242, 3256,2852,2041,839,-810,-2891,-5194,-7437,-9401,-11024, -12297,-13205,-13742,-13982,-14016,-13865,-13539,-13148,-12851,-12707, -12615,-12513,-12396,-12191,-11744,-10918,-9726,-8295,-6744,-5202, -3835,-2789,-2034,-1372,-656,139,957,1793,2665,3514, 4140,4344,4112,3575,2891,2181,1601,1322,1351,1514, 1633,1652,1607,1585,1601,1572,1406,1055,512,-243, -1147,-2007,-2622,-2943,-3127,-3364,-3722,-4107,-4323,-4161, -3578,-2852,-2461,-2598,-3027,-3408,-3650,-3816,-3860,-3613, -3026,-2281,-1615,-1108,-716,-465,-529,-1050,-1941,-2842, -3450,-3738,-3863,-3917,-3859,-3637,-3244,-2687,-1984,-1251, -681,-451,-593,-1039,-1607,-2039,-2124,-1885,-1589,-1426, -1256,-735,208,1258,2062,2582,3042,3557,4065,4525, 5049,5781,6635,7439,8052,8426,8635,8851,9127,9332, 9275,8919,8398,7852,7378,7056,6901,6835,6729,6477, 6018,5387,4738,4235,3959,3951,4249,4896,5815,6819, 7776,8687,9547,10210,10445,10150,9391,8280,6970,5636, 4497,3706,3278,3176,3345,3726,4118,4214,3802,2873, 1515,-211,-2268,-4505,-6704,-8742,-10575,-12141,-13323,-14091, -14544,-14773,-14774,-14522,-14162,-13965,-14052,-14291,-14465,-14424, -14107,-13472,-12471,-11139,-9624,-8137,-6772,-5548,-4488,-3605, -2842,-2037,-991,296,1630,2755,3538,3950,3971,3658, 3189,2764,2438,2177,1942,1735,1533,1360,1362,1679, 2180,2461,2214,1534,791,239,-148,-579,-1181,-1918, -2687,-3424,-4053,-4426,-4372,-3965,-3488,-3203,-3127,-3154, -3243,-3449,-3766,-4119,-4375,-4377,-3987,-3225,-2311,-1514, -988,-727,-744,-1056,-1573,-2089,-2492,-2904,-3522,-4287, -4822,-4751,-4080,-3155,-2337,-1771,-1404,-1146,-997,-1032, -1284,-1642,-1959,-2176,-2301,-2297,-2037,-1444,-601,249, 940,1440,1861,2348,2988,3725,4462,5161,5824,6421, 6954,7523,8217,8911,9372,9519,9447,9251,8951,8577, 8254,8090,8056,8009,7822,7454,6907,6244,5544,4938, 4518,4272,4159,4248,4685,5534,6651,7824,8927,9882, 10532,10723,10431,9720,8651,7337,5999,4909,4252,4037, 4146,4429,4768,5057,5130,4793,3935,2638,1067,-695, -2703,-4898,-7066,-9026,-10715,-12078,-13001,-13452,-13576,-13610, -13670,-13775,-13932,-14174,-14475,-14683,-14652,-14315,-13634,-12554, -11180,-9755,-8514,-7506,-6610,-5718,-4797,-3772,-2512,-972, 623,1891,2642,3021,3346,3743,4051,4020,3617,3038, 2487,2086,1916,2042,2379,2679,2749,2607,2389,2196, 2061,1953,1727,1192,322,-656,-1509,-2195,-2790,-3292, -3549,-3489,-3229,-2969,-2786,-2679,-2694,-2941,-3468,-4105, -4491,-4343,-3722,-2969,-2392,-2028,-1692,-1215,-675,-319, -316,-684,-1334,-2139,-2963,-3669,-4112,-4195,-3915,-3442, -2928,-2406,-1837,-1241,-782,-622,-771,-1138,-1622,-2104, -2389,-2320,-1939,-1458,-1031,-644,-204,325,916,1536, 2180,2824,3415,3946,4491,5152,5922,6745,7572,8375, 9014,9317,9295,9129,9012,8977,8960,8948,8919,8818, 8589,8250,7839,7351,6753,6046,5279,4596,4163,4034, 4141,4496,5225,6376,7733,8985,9967,10623,10852,10533, 9714,8608,7428,6302,5363,4792,4645,4814,5112,5395, 5583,5595,5339,4733,3753,2394,656,-1408,-3611,-5735, -7638,-9286,-10642,-11609,-12134,-12353,-12545,-12879,-13332,-13802, -14257,-14720,-15095,-15083,-14480,-13411,-12242,-11275,-10537,-9898, -9176,-8223,-6983,-5547,-4116,-2842,-1678,-552,541,1594, 2611,3436,3830,3702,3271,2870,2701,2678,2643,2527, 2411,2377,2413,2463,2521,2633,2783,2823,2566,1998, 1296,604,-114,-978,-1963,-2849,-3333,-3287,-2864,-2448, -2327,-2563,-2980,-3393,-3718,-3955,-4087,-4078,-3971,-3835, -3627,-3198,-2503,-1672,-949,-496,-352,-508,-960,-1619, -2307,-2903,-3429,-3918,-4277,-4330,-3971,-3287,-2456,-1666, -1105,-896,-1038,-1359,-1672,-1906,-2082,-2189,-2191,-2059, -1839,-1562,-1212,-732,-127,509,1061,1487,1866,2307, 2867,3578,4481,5537,6557,7321,7808,8166,8494,8716, 8768,8751,8813,8943,9032,9041,8990,8840,8530,8078, 7553,6950,6213,5354,4517,3881,3561,3594,4024,4866, 6045,7372,8643,9682,10351,10555,10199,9348,8305,7336, 6506,5730,5078,4760,4876,5240,5572,5772,5863,5826, 5448,4525,3087,1320,-625,-2659,-4702,-6639,-8335,-9626, -10436,-10846,-11161,-11683,-12514,-13500,-14382,-14989,-15230,-15060, -14577,-14019,-13577,-13248,-12836,-12128,-11101,-9940,-8872,-7932, -6926,-5687,-4248,-2752,-1294,68,1254,2127,2622,2835, 2950,3078,3206,3214,2984,2599,2308,2299,2479,2622, 2620,2590,2713,2983,3190,3131,2717,1950,879,-314, -1319,-1892,-2081,-2123,-2202,-2321,-2478,-2696,-2959,-3175, -3343,-3558,-3887,-4261,-4539,-4596,-4365,-3850,-3146,-2401, -1757,-1284,-959,-732,-626,-761,-1246,-2055,-2968,-3751, -4255,-4422,-4214,-3674,-2971,-2329,-1860,-1543,-1347,-1308, -1447,-1654,-1801,-1921,-2119,-2351,-2397,-2121,-1609,-1051, -564,-163,152,403,680,1108,1687,2392,3231,4202, 5224,6166,6898,7399,7757,8058,8323,8545,8749,8967, 9168,9297,9337,9342,9342,9191,8739,8022,7238,6466, 5595,4581,3685,3236,3364,3955,4838,5931,7183,8444, 9472,10100,10246,9958,9366,8621,7780,6866,5972,5311, 5046,5181,5549,5938,6244,6449,6498,6225,5466,4165, 2388,300,-1902,-3955,-5582,-6645,-7336,-8067,-9093,-10341, -11575,-12597,-13335,-13861,-14248,-14510,-14648,-14631,-14469,-14188, -13763,-13148,-12406,-11717,-11155,-10542,-9573,-8119,-6420,-4816, -3446,-2207,-1011,113,1082,1859,2412,2715,2808,2857, 2962,3061,3005,2740,2380,2107,2090,2401,2951,3522, 3867,3832,3373,2588,1671,819,116,-463,-938,-1340, -1700,-2035,-2276,-2325,-2287,-2408,-2831,-3420,-3955,-4342, -4578,-4645,-4510,-4222,-3883,-3492,-2942,-2188,-1389,-792, -515,-546,-872,-1503,-2344,-3192,-3829,-4145,-4166,-3973, -3645,-3244,-2807,-2340,-1854,-1443,-1233,-1308,-1599,-1960, -2243,-2401,-2456,-2371,-2068,-1609,-1184,-895,-672,-459, -254,-40,333,1024,1963,2934,3799,4629,5490,6289, 6888,7281,7571,7856,8186,8514,8787,8994,9197,9433, 9668,9776,9619,9156,8472,7644,6687,5590,4475,3616, 3250,3436,4028,4859,5858,7016,8208,9220,9858,10090, 9965,9512,8750,7817,6940,6267,5766,5381,5174,5299, 5830,6645,7424,7725,7242,6003,4318,2528,800,-817, -2260,-3476,-4589,-5809,-7225,-8636,-9800,-10714,-11565,-12482, -13405,-14150,-14571,-14654,-14466,-14173,-13948,-13840,-13733,-13453, -12901,-12107,-11185,-10194,-9076,-7728,-6163,-4531,-3016,-1702, -631,179,832,1499,2240,2886,3223,3219,2971,2592, 2183,1963,2152,2721,3371,3803,3956,3926,3760,3443, 2995,2430,1749,953,127,-556,-952,-1082,-1150,-1333, -1644,-2026,-2448,-2884,-3307,-3679,-4001,-4281,-4522,-4639, -4540,-4203,-3632,-2847,-1923,-1062,-527,-446,-716,-1128, -1605,-2193,-2857,-3406,-3753,-3963,-4049,-3867,-3363,-2718, -2161,-1768,-1499,-1353,-1391,-1659,-2047,-2342,-2391,-2199, -1902,-1638,-1434,-1256,-1089,-939,-803,-635,-351,144, 892,1761,2617,3422,4240,5097,5898,6508,6911,7233, 7595,7975,8307,8585,8912,9348,9818,10166,10276,10127, 9698,8941,7887,6708,5573,4604,3888,3479,3386,3665, 4398,5584,6942,8062,8777,9229,9610,9859,9766,9200, 8266,7167,6089,5263,4907,5182,6000,7021,7817,8113, 7842,7112,6085,4911,3668,2336,880,-669,-2164,-3444, -4512,-5576,-6826,-8261,-9688,-10922,-11911,-12663,-13177,-13518, -13829,-14119,-14246,-14152,-13965,-13840,-13741,-13515,-13043,-12283, -11235,-9892,-8338,-6775,-5412,-4299,-3270,-2155,-929,306, 1395,2183,2589,2610,2389,2183,2167,2301,2482,2673, 2918,3215,3552,3894,4156,4189,3888,3283,2530,1817, 1205,633,116,-256,-497,-757,-1151,-1599,-1941,-2178, -2473,-2921,-3475,-4048,-4609,-5067,-5216,-4919,-4258,-3450, -2673,-2012,-1462,-1035,-808,-858,-1196,-1695,-2232,-2769, -3301,-3792,-4132,-4212,-3950,-3404,-2763,-2248,-1943,-1793, -1738,-1812,-2027,-2284,-2411,-2319,-2096,-1914,-1826,-1747, -1621,-1500,-1422,-1312,-1084,-716,-233,368,1112,1942, 2801,3662,4499,5229,5798,6266,6691,7028,7239,7482, 7977,8753,9543,10075,10299,10346,10296,10052,9433,8351, 7000,5684,4613,3856,3479,3527,3930,4528,5240,6094, 7116,8234,9276,10054,10359,10022,9026,7663,6418,5683, 5512,5728,6134,6640,7170,7615,7880,7906,7595,6820, 5597,4210,2957,1842,695,-549,-1866,-3220,-4606,-6019, -7399,-8709,-9899,-10987,-11972,-12762,-13253,-13475,-13577,-13721, -13976,-14302,-14614,-14751,-14529,-13840,-12801,-11685,-10640,-9651, -8620,-7456,-6080,-4490,-2853,-1416,-359,380,982,1526, 1897,2012,1969,1946,2031,2176,2395,2771,3315,3867, 4228,4316,4154,3793,3304,2772,2274,1809,1335,795, 210,-320,-665,-824,-934,-1150,-1578,-2193,-2925,-3660, -4315,-4848,-5212,-5280,-4950,-4311,-3595,-2973,-2427,-1877, -1358,-1025,-998,-1246,-1667,-2198,-2806,-3431,-3908,-4087, -3967,-3621,-3159,-2715,-2384,-2203,-2119,-2088,-2149,-2281, -2363,-2309,-2218,-2175,-2134,-2021,-1880,-1814,-1846,-1868, -1737,-1420,-1031,-694,-343,245,1189,2312,3302,4034, 4603,5078,5469,5820,6218,6665,7113,7602,8240,9036, 9835,10467,10811,10796,10351,9441,8186,6905,5900,5178, 4570,3979,3506,3320,3567,4343,5640,7233,8654,9483, 9691,9468,8983,8295,7460,6611,5931,5587,5646,6040, 6637,7289,7795,7957,7766,7352,6830,6137,5203,4086, 2908,1678,397,-851,-2015,-3198,-4552,-6091,-7665,-9102, -10279,-11112,-11627,-11950,-12306,-12892,-13666,-14339,-14631,-14534, -14276,-14009,-13696,-13238,-12610,-11828,-10820,-9560,-8134,-6660, -5203,-3801,-2519,-1383,-399,388,946,1283,1424,1435, 1446,1620,2012,2532,3054,3494,3785,3921,3973,4039, 4064,3858,3361,2735,2151,1614,1064,547,170,-9, -89,-249,-613,-1206,-1977,-2822,-3628,-4314,-4843,-5167, -5213,-4962,-4500,-3951,-3358,-2671,-1947,-1358,-1065,-1086, -1345,-1782,-2369,-2994,-3481,-3705,-3661,-3476,-3303,-3130, -2834,-2453,-2207,-2209,-2305,-2294,-2173,-2052,-1999,-1997, -2028,-2070,-2062,-1942,-1791,-1775,-1895,-1990,-1911,-1618, -1150,-569,122,925,1762,2506,3154,3795,4429,4918, 5194,5364,5614,6083,6861,7972,9212,10217,10691,10624, 10237,9774,9333,8793,7976,6838,5526,4268,3300,2826, 2972,3652,4630,5744,6932,8067,8914,9272,9150,8650, 7890,7018,6289,5909,5858,5991,6227,6552,6937,7306, 7566,7648,7543,7199,6532,5546,4453,3516,2749,1916, 782,-691,-2372,-4053,-5559,-6782,-7760,-8636,-9523,-10443, -11376,-12238,-12928,-13417,-13765,-14020,-14203,-14345,-14434,-14380, -14063,-13454,-12642,-11653,-10484,-9194,-7894,-6551,-5059,-3496, -2132,-1167,-576,-195,112,418,737,1047,1342,1662, 2036,2429,2809,3160,3490,3805,4064,4127,3905,3409, 2807,2226,1698,1219,861,686,639,507,136,-443, -1122,-1852,-2651,-3490,-4246,-4789,-5112,-5324,-5391,-5123, -4444,-3536,-2692,-2071,-1684,-1534,-1621,-1893,-2275,-2746, -3246,-3647,-3806,-3707,-3513,-3379,-3330,-3257,-3068,-2821, -2641,-2552,-2486,-2417,-2391,-2387,-2316,-2161,-2028,-2020, -2121,-2259,-2395,-2497,-2475,-2255,-1878,-1471,-1106,-674, 0,975,2068,2962,3476,3672,3716,3821,4228,5043, 6101,7086,7857,8528,9183,9781,10226,10487,10491,10097, 9243,8041,6722,5426,4249,3317,2806,2872,3522,4563, 5752,6921,7917,8558,8702,8420,7947,7472,7039,6607, 6167,5786,5613,5782,6281,6914,7403,7588,7446,7072, 6648,6300,5971,5502,4796,3797,2503,1018,-431,-1723, -2941,-4181,-5415,-6563,-7668,-8800,-9910,-10847,-11545,-12086, -12610,-13159,-13719,-14204,-14499,-14551,-14431,-14228,-13919,-13413, -12630,-11525,-10157,-8697,-7248,-5807,-4415,-3222,-2342,-1676, -1061,-456,38,389,678,1002,1342,1656,1961,2374, 2942,3561,4002,4159,4106,3908,3518,2949,2386,2021, 1837,1707,1539,1303,944,468,-48,-559,-1157,-1982, -2989,-3978,-4726,-5129,-5243,-5151,-4846,-4269,-3475,-2669, -2075,-1735,-1633,-1770,-2079,-2416,-2682,-2911,-3149,-3380, -3514,-3524,-3459,-3371,-3261,-3077,-2882,-2795,-2843,-2859, -2680,-2342,-2040,-1912,-1955,-2127,-2363,-2490,-2378,-2165, -2131,-2348,-2585,-2568,-2185,-1472,-554,373,1108,1567, 1849,2139,2563,3113,3688,4219,4751,5400,6182,7017, 7862,8751,9635,10341,10704,10662,10238,9465,8344,6922, 5370,3979,3047,2755,3104,3896,4829,5679,6416,7107, 7751,8206,8317,8070,7551,6849,6159,5764,5799,6087, 6370,6558,6682,6778,6882,7008,7133,7182,7089,6792, 6213,5333,4235,3071,1947,863,-253,-1484,-2851,-4241, -5462,-6486,-7476,-8565,-9665,-10590,-11328,-12000,-12640,-13161, -13520,-13793,-14099,-14431,-14594,-14409,-13853,-13037,-11998,-10696, -9201,-7737,-6445,-5283,-4185,-3172,-2293,-1530,-863,-318, 69,364,643,951,1318,1799,2442,3176,3800,4114, 4110,3954,3812,3686,3456,3078,2663,2340,2109,1929, 1783,1619,1324,830,183,-560,-1430,-2448,-3516,-4420, -4982,-5151,-5012,-4633,-4034,-3297,-2634,-2223,-2049,-1982, -1985,-2091,-2294,-2536,-2836,-3179,-3411,-3387,-3170,-3018, -3075,-3287,-3462,-3456,-3221,-2833,-2460,-2241,-2213,-2290, -2335,-2227,-1959,-1734,-1791,-2153,-2598,-2880,-2920,-2713, -2273,-1677,-1073,-540,-67,367,809,1291,1815,2339, 2804,3188,3579,4120,4847,5649,6428,7274,8297,9465, 10548,11267,11428,10952,9866,8387,6866,5607,4688,4074, 3737,3680,3975,4667,5657,6712,7555,8044,8148,7931, 7534,7128,6797,6550,6406,6373,6352,6218,6021,6011, 6319,6793,7165,7325,7330,7225,6949,6433,5693,4841, 3932,2896,1686,426,-733,-1805,-2921,-4132,-5361,-6529, -7653,-8748,-9725,-10507,-11154,-11746,-12298,-12816,-13361,-13941, -14446,-14706,-14617,-14163,-13403,-12441,-11294,-9999,-8687,-7494, -6400,-5248,-4032,-2910,-2067,-1498,-1095,-783,-453,31, 672,1338,1892,2345,2825,3337,3759,3986,4039,4003, 3909,3704,3393,3067,2806,2613,2449,2318,2206,2013, 1616,1000,190,-822,-2022,-3219,-4115,-4587,-4682,-4536, -4274,-3928,-3464,-2863,-2272,-1884,-1775,-1922,-2257,-2650, -2887,-2842,-2637,-2572,-2786,-3136,-3401,-3476,-3353,-3102, -2884,-2823,-2854,-2823,-2646,-2359,-2022,-1708,-1531,-1573, -1861,-2299,-2704,-2909,-2869,-2675,-2443,-2161,-1776,-1299, -810,-353,75,472,848,1272,1803,2397,2899,3213, 3377,3626,4233,5332,6806,8385,9749,10653,11027,10958, 10584,9899,8814,7437,6063,4940,4132,3658,3666,4254, 5240,6237,6936,7299,7467,7566,7615,7562,7444,7302, 7076,6701,6280,5991,5907,5961,6111,6354,6681,7021, 7313,7522,7594,7419,6964,6289,5499,4629,3693,2677, 1601,550,-469,-1581,-2881,-4277,-5553,-6634,-7619,-8550, -9363,-10035,-10673,-11386,-12155,-12941,-13708,-14348,-14647,-14524, -14103,-13546,-12895,-12072,-10968,-9623,-8207,-6874,-5674,-4620, -3749,-3024,-2382,-1796,-1267,-740,-168,458,1087,1669, 2204,2751,3320,3815,4139,4281,4296,4248,4123,3838, 3435,3115,3036,3127,3218,3206,3009,2495,1628,583, -424,-1352,-2293,-3243,-4070,-4590,-4656,-4230,-3485,-2756, -2341,-2258,-2328,-2345,-2266,-2158,-2116,-2196,-2372,-2593, -2830,-3017,-3072,-2974,-2863,-2889,-3062,-3231,-3250,-3061, -2671,-2162,-1707,-1440,-1385,-1471,-1629,-1846,-2127,-2447, -2708,-2784,-2622,-2279,-1860,-1486,-1290,-1236,-1076,-550, 296,1140,1658,1834,1872,1915,2033,2326,2967,4027, 5373,6757,8028,9183,10223,11026,11372,11137,10333,9079, 7578,6124,5018,4414,4278,4491,4921,5434,5920,6363, 6804,7242,7597,7760,7701,7509,7297,7065,6751,6365, 6045,5929,5979,6071,6241,6568,7021,7444,7710,7773, 7614,7210,6609,5935,5248,4475,3584,2627,1676,660, -523,-1872,-3266,-4524,-5530,-6333,-7102,-7969,-8942,-9961, -10932,-11773,-12472,-13089,-13660,-14134,-14411,-14409,-14106,-13537, -12687,-11562,-10223,-8881,-7694,-6656,-5645,-4654,-3796,-3105, -2491,-1857,-1213,-583,47,682,1254,1772,2327,2968, 3609,4118,4401,4392,4118,3751,3538,3572,3738,3832, 3762,3576,3391,3274,3084,2543,1557,275,-1080,-2325, -3305,-3855,-3954,-3780,-3542,-3336,-3141,-2913,-2628,-2296, -1985,-1821,-1907,-2177,-2461,-2610,-2591,-2498,-2470,-2560, -2742,-2967,-3201,-3329,-3242,-2988,-2744,-2541,-2216,-1687, -1176,-1008,-1280,-1769,-2177,-2365,-2386,-2317,-2231,-2159, -2172,-2255,-2273,-2040,-1505,-797,-96,475,826,963, 977,1027,1199,1498,1923,2524,3391,4565,5982,7545, 9123,10499,11360,11509,10959,9977,8860,7730,6623,5690, 5100,4855,4839,4991,5331,5801,6289,6761,7197,7520, 7659,7634,7545,7426,7201,6847,6429,6058,5862,5890, 6076,6332,6644,7056,7509,7825,7864,7650,7277,6805, 6318,5858,5355,4654,3665,2493,1298,124,-1036,-2164, -3206,-4155,-5114,-6172,-7272,-8306,-9216,-10060,-10906,-11747, -12587,-13397,-14070,-14467,-14548,-14341,-13868,-13106,-12097,-10956, -9779,-8613,-7508,-6521,-5652,-4828,-3978,-3088,-2252,-1618, -1217,-853,-250,656,1643,2459,3029,3404,3647,3830, 4004,4130,4115,3949,3727,3586,3620,3850,4173,4395, 4310,3779,2796,1523,253,-800,-1649,-2412,-3071,-3505, -3694,-3740,-3630,-3258,-2711,-2282,-2205,-2370,-2483,-2418, -2277,-2231,-2315,-2432,-2466,-2438,-2467,-2646,-2963,-3314, -3574,-3601,-3279,-2682,-2080,-1678,-1503,-1524,-1689,-1877, -1939,-1848,-1737,-1784,-2036,-2373,-2621,-2708,-2636,-2356, -1851,-1241,-732,-405,-130,207,562,787,831,763, 696,819,1375,2485,3988,5661,7344,8902,10124,10807, 10941,10605,9921,9020,8042,7058,6124,5384,4996,4942, 5069,5287,5609,6027,6458,6869,7251,7527,7592,7489, 7341,7164,6872,6437,5998,5739,5774,6050,6457,6854, 7161,7359,7455,7445,7388,7329,7223,6976,6526,5857, 4986,3992,2985,2010,1026,-23,-1147,-2292,-3409,-4474, -5485,-6436,-7332,-8246,-9246,-10318,-11329,-12178,-12936,-13719, -14440,-14840,-14731,-14166,-13379,-12581,-11815,-10998,-10024,-8850, -7583,-6412,-5493,-4851,-4333,-3762,-3058,-2276,-1476,-678, 76,724,1285,1915,2684,3400,3782,3757,3529,3313, 3167,3169,3433,3948,4490,4763,4592,4065,3433,2805, 2070,1070,-151,-1377,-2390,-3089,-3481,-3616,-3607,-3542, -3404,-3138,-2814,-2614,-2638,-2762,-2828,-2796,-2676,-2481, -2267,-2194,-2420,-2916,-3471,-3837,-3902,-3726,-3404,-3003, -2637,-2424,-2377,-2364,-2262,-2042,-1783,-1612,-1655,-1941, -2351,-2672,-2812,-2803,-2736,-2661,-2548,-2313,-1889,-1326, -755,-280,76,269,191,-137,-484,-574,-257,501, 1706,3274,4951,6537,7986,9241,10109,10432,10244,9691, 8950,8108,7208,6298,5492,4970,4812,4926,5146,5403, 5719,6108,6552,6998,7392,7602,7539,7251,6857,6425, 6044,5820,5824,5981,6154,6292,6427,6590,6786,7010, 7258,7488,7604,7489,7100,6547,5984,5446,4790,3871, 2774,1692,714,-233,-1232,-2319,-3464,-4586,-5583,-6403, -7179,-8137,-9377,-10715,-11875,-12739,-13391,-13899,-14226,-14381, -14392,-14237,-13775,-12894,-11680,-10433,-9390,-8547,-7760,-6926, -6069,-5250,-4485,-3753,-3071,-2458,-1869,-1126,-80,1112, 2113,2702,2892,2814,2681,2706,2969,3307,3555,3741, 4026,4428,4765,4843,4624,4134,3398,2449,1390,308, -735,-1719,-2586,-3244,-3569,-3558,-3341,-3127,-3059,-3138, -3263,-3324,-3223,-2943,-2582,-2282,-2187,-2376,-2793,-3290, -3680,-3826,-3714,-3483,-3315,-3318,-3367,-3266,-2978,-2636, -2322,-2040,-1817,-1712,-1740,-1846,-1992,-2178,-2387,-2588, -2769,-2936,-3019,-2888,-2447,-1767,-1045,-462,-158,-129, -264,-479,-778,-1085,-1171,-836,-54,1102,2541,4126, 5688,7131,8403,9395,9929,9938,9549,8929,8155,7300, 6491,5841,5367,5044,4851,4818,5011,5458,6048,6614, 7045,7306,7340,7104,6700,6368,6255,6260,6190,6018, 5847,5761,5800,6009,6368,6691,6884,7012,7208,7461, 7588,7377,6857,6239,5679,5116,4397,3513,2546,1528, 451,-629,-1597,-2388,-3142,-4095,-5320,-6656,-7874,-8885, -9786,-10717,-11686,-12624,-13470,-14175,-14620,-14668,-14317,-13711, -12976,-12186,-11397,-10570,-9574,-8373,-7211,-6390,-5979,-5710, -5271,-4533,-3516,-2345,-1191,-179,658,1317,1788,2116, 2349,2496,2568,2673,2963,3455,4001,4442,4719,4855, 4877,4758,4489,3989,3149,2011,765,-382,-1316,-2016, -2476,-2714,-2840,-3015,-3322,-3647,-3753,-3516,-3053,-2574, -2270,-2214,-2404,-2702,-2972,-3147,-3262,-3368,-3475,-3576, -3654,-3718,-3738,-3661,-3434,-3090,-2751,-2517,-2353,-2159, -1902,-1675,-1590,-1709,-2044,-2511,-2949,-3223,-3299,-3182, -2841,-2254,-1511,-824,-370,-209,-308,-589,-967,-1328, -1567,-1562,-1212,-521,445,1708,3296,5030,6607,7842, 8745,9310,9498,9330,8947,8436,7793,7005,6150,5387, 4835,4588,4725,5228,5883,6395,6624,6681,6751,6899, 6967,6801,6484,6239,6141,6088,5986,5868,5796,5771, 5775,5887,6199,6673,7085,7234,7168,7077,7064,7041, 6822,6315,5537,4584,3601,2733,1990,1271,493,-344, -1279,-2389,-3627,-4818,-5794,-6615,-7503,-8631,-9974,-11300, -12363,-13060,-13514,-13932,-14329,-14540,-14427,-13937,-13068,-11906, -10687,-9679,-8948,-8400,-7910,-7402,-6789,-6023,-5148,-4199, -3148,-1975,-831,47,571,880,1151,1456,1789,2113, 2435,2786,3190,3620,4032,4448,4870,5199,5250,4888, 4112,3040,1905,932,223,-336,-960,-1734,-2533,-3188, -3600,-3763,-3701,-3459,-3111,-2784,-2610,-2608,-2718,-2830, -2895,-2933,-3002,-3182,-3464,-3721,-3838,-3819,-3772,-3776, -3821,-3786,-3595,-3295,-2970,-2615,-2200,-1801,-1574,-1619, -1900,-2318,-2813,-3322,-3656,-3614,-3205,-2643,-2067,-1504, -1012,-696,-593,-671,-904,-1286,-1742,-2099,-2183,-1913, -1272,-272,1078,2681,4288,5660,6725,7635,8537,9312, 9625,9312,8545,7619,6728,5957,5384,5089,5063,5180, 5397,5743,6179,6576,6777,6756,6613,6504,6497,6536, 6516,6343,6021,5702,5577,5653,5772,5835,5904,6045, 6270,6550,6847,7144,7416,7587,7473,6962,6151,5349, 4772,4351,3858,3141,2215,1178,183,-656,-1398,-2245, -3337,-4597,-5886,-7114,-8209,-9143,-9993,-10941,-12063,-13222, -14150,-14659,-14729,-14425,-13859,-13099,-12173,-11167,-10283,-9673, -9261,-8864,-8376,-7750,-6909,-5846,-4672,-3504,-2431,-1535, -852,-329,178,743,1275,1620,1764,1850,2095,2637, 3473,4388,5089,5433,5423,5121,4600,3977,3370,2785, 2159,1418,511,-562,-1670,-2557,-3066,-3249,-3292,-3323, -3305,-3152,-2897,-2693,-2600,-2581,-2611,-2725,-2928,-3122, -3231,-3311,-3435,-3563,-3627,-3664,-3746,-3857,-3883,-3754, -3472,-3036,-2467,-1881,-1466,-1366,-1597,-2039,-2517,-2924, -3255,-3470,-3411,-2989,-2392,-1887,-1467,-982,-460,-176, -341,-903,-1603,-2182,-2457,-2360,-1934,-1269,-441,543, 1735,3158,4736,6316,7679,8648,9169,9296,9108,8660, 7977,7104,6212,5569,5347,5485,5734,5914,6036,6203, 6462,6712,6847,6873,6879,6848,6698,6426,6173,6063, 6089,6133,6064,5825,5508,5349,5572,6143,6781,7230, 7404,7355,7179,6973,6799,6602,6250,5647,4816,3939, 3240,2757,2314,1657,700,-429,-1571,-2681,-3739,-4733, -5701,-6712,-7799,-8926,-10115,-11387,-12627,-13609,-14206,-14412, -14241,-13707,-12942,-12095,-11328,-10768,-10429,-10138,-9653,-8914, -8019,-7096,-6185,-5285,-4363,-3362,-2261,-1176,-334,157, 390,519,627,824,1286,2123,3182,4155,4800,5120, 5247,5310,5309,5201,4961,4564,3966,3152,2189,1172, 172,-782,-1619,-2268,-2691,-2920,-2989,-2915,-2728,-2494, -2329,-2302,-2361,-2432,-2539,-2756,-3015,-3130,-3042,-2962, -3109,-3434,-3718,-3876,-3982,-4025,-3836,-3354,-2705,-2096, -1684,-1544,-1630,-1822,-2039,-2326,-2717,-3146,-3474,-3544, -3235,-2541,-1653,-862,-397,-312,-534,-914,-1298,-1592, -1865,-2203,-2507,-2511,-2039,-1175,-104,1076,2418,3963, 5599,7100,8242,8917,9116,8913,8431,7790,7121,6558, 6178,5969,5850,5763,5757,5954,6356,6801,7076,7080, 6893,6684,6596,6675,6836,6939,6846,6485,5937,5497, 5408,5633,5945,6165,6295,6419,6665,7043,7440,7637, 7519,7159,6707,6252,5784,5294,4813,4338,3809,3159, 2341,1338,273,-721,-1648,-2578,-3531,-4453,-5401,-6507, -7828,-9290,-10811,-12243,-13326,-13824,-13791,-13521,-13241,-12968, -12599,-12136,-11623,-11094,-10535,-9960,-9393,-8860,-8279,-7487, -6360,-4970,-3582,-2434,-1639,-1184,-996,-890,-626,-94, 623,1395,2165,2921,3604,4165,4625,5042,5410,5615, 5576,5341,5031,4617,3940,2956,1849,817,-116,-1003, -1810,-2412,-2713,-2721,-2558,-2375,-2283,-2285,-2318,-2384, -2535,-2723,-2814,-2771,-2678,-2662,-2814,-3177,-3671,-4084, -4230,-4116,-3877,-3576,-3216,-2826,-2447,-2041,-1597,-1298, -1404,-1977,-2762,-3410,-3659,-3509,-3131,-2696,-2214,-1628, -1003,-515,-317,-412,-713,-1098,-1486,-1875,-2253,-2549, -2635,-2400,-1830,-945,264,1833,3620,5339,6741,7723, 8312,8580,8608,8445,8110,7606,6971,6311,5813,5678, 5940,6399,6753,6808,6627,6460,6535,6845,7191,7326, 7174,6872,6620,6506,6448,6296,6035,5799,5693,5697, 5794,6020,6432,6919,7293,7481,7486,7327,7034,6729, 6491,6261,5914,5452,4983,4511,3891,3010,1942,877, 8,-617,-1164,-1861,-2822,-4043,-5529,-7189,-8807,-10158, -11192,-11992,-12613,-13039,-13255,-13281,-13085,-12631,-11988,-11391, -11041,-10912,-10791,-10459,-9825,-8881,-7672,-6289,-4963,-3937, -3261,-2755,-2248,-1735,-1284,-869,-363,312,1109,1901, 2596,3222,3880,4583,5209,5621,5828,5910,5889,5696, 5285,4638,3748,2693,1623,609,-374,-1259,-1865,-2108, -2089,-2016,-2007,-2096,-2257,-2447,-2550,-2467,-2249,-2076, -2128,-2439,-2869,-3187,-3299,-3342,-3536,-3897,-4200,-4221, -3884,-3254,-2558,-2021,-1699,-1529,-1522,-1780,-2280,-2820, -3209,-3382,-3355,-3139,-2717,-2130,-1493,-960,-621,-496, -515,-628,-845,-1213,-1720,-2311,-2873,-3224,-3141,-2487, -1342,67,1513,2885,4187,5488,6797,7942,8637,8674, 8156,7482,7005,6805,6722,6592,6416,6265,6181,6192, 6340,6596,6840,6997,7077,7109,7076,6989,6920,6903, 6857,6670,6323,5933,5692,5673,5810,6000,6198,6473, 6844,7174,7303,7237,7096,6932,6762,6662,6673,6644, 6332,5672,4799,3879,2989,2222,1668,1298,904,240, -775,-2053,-3414,-4747,-6074,-7440,-8804,-10075,-11222,-12193, -12849,-13046,-12803,-12368,-12051,-11982,-12049,-12047,-11890,-11562, -11032,-10248,-9211,-8012,-6821,-5787,-4966,-4304,-3684,-3051, -2447,-1940,-1480,-915,-203,542,1241,1936,2684,3449, 4179,4822,5324,5694,5964,6104,6037,5730,5179,4349, 3228,1952,793,-25,-490,-787,-1136,-1630,-2140,-2410, -2345,-2118,-2018,-2125,-2282,-2356,-2341,-2319,-2355,-2498, -2781,-3162,-3594,-4021,-4332,-4382,-4135,-3703,-3214,-2695, -2202,-1850,-1739,-1852,-2138,-2567,-3052,-3404,-3510,-3375, -3070,-2676,-2260,-1867,-1482,-1015,-468,-60,-100,-689, -1590,-2422,-2949,-3157,-3182,-3108,-2852,-2257,-1213,284, 2080,3848,5299,6347,7046,7473,7676,7693,7577,7387, 7138,6791,6381,6065,6005,6161,6346,6442,6516,6664, 6816,6906,6978,7071,7099,6994,6828,6681,6519,6249, 5899,5639,5586,5724,5977,6274,6548,6736,6769,6653, 6513,6547,6835,7227,7418,7252,6789,6130,5359,4589, 3960,3534,3217,2838,2244,1449,591,-218,-1050,-2063, -3370,-4954,-6634,-8218,-9573,-10665,-11458,-11911,-12061,-12053, -12086,-12264,-12499,-12622,-12559,-12326,-11933,-11359,-10590,-9673, -8690,-7715,-6798,-5932,-5126,-4416,-3790,-3204,-2627,-2046, -1483,-914,-277,481,1376,2298,3043,3569,4098,4860, 5781,6518,6761,6459,5802,5044,4352,3687,2928,2040, 1117,260,-489,-1086,-1468,-1669,-1818,-1976,-2095,-2143, -2152,-2109,-1989,-1858,-1869,-2069,-2387,-2780,-3243,-3708, -4047,-4186,-4147,-3959,-3604,-3049,-2392,-1872,-1695,-1881, -2212,-2444,-2514,-2557,-2734,-3061,-3393,-3510,-3208,-2469, -1537,-762,-336,-206,-220,-327,-595,-1086,-1743,-2458, -3133,-3654,-3822,-3431,-2471,-1136,315,1747,3126,4385, 5476,6407,7161,7631,7762,7640,7410,7151,6897,6648, 6418,6263,6251,6354,6473,6570,6701,6887,7043,7110, 7126,7184,7238,7103,6713,6235,5871,5735,5835,6072, 6308,6440,6438,6296,6068,5920,6044,6494,7095,7552, 7654,7385,6926,6471,6081,5668,5165,4621,4125,3666, 3197,2717,2273,1819,1212,287,-1012,-2581,-4250,-5863, -7301,-8497,-9429,-10122,-10651,-11119,-11577,-11995,-12317,-12523, -12644,-12675,-12551,-12194,-11580,-10835,-10108,-9428,-8680,-7758, -6706,-5732,-5038,-4592,-4147,-3496,-2686,-1899,-1262,-763, -290,294,1106,2146,3266,4286,5102,5708,6084,6218, 6155,5946,5566,4972,4200,3339,2461,1610,804,96, -497,-994,-1437,-1823,-2108,-2208,-2117,-1955,-1861,-1874, -1922,-1982,-2115,-2414,-2894,-3515,-4137,-4525,-4487,-4092, -3618,-3308,-3172,-3036,-2769,-2420,-2148,-2072,-2221,-2577, -3049,-3476,-3691,-3637,-3382,-3003,-2555,-2045,-1482,-918, -418,-91,-80,-484,-1252,-2186,-3050,-3645,-3894,-3845, -3512,-2843,-1827,-583,749,2115,3470,4684,5660,6382, 6886,7196,7312,7236,6998,6715,6503,6417,6390,6345, 6281,6265,6346,6535,6809,7108,7340,7435,7339,7022, 6536,6069,5882,6047,6361,6550,6503,6280,6003,5779, 5699,5785,6006,6330,6701,7013,7163,7170,7112,6988, 6741,6325,5772,5174,4624,4175,3854,3663,3523,3299, 2830,2001,810,-597,-2038,-3478,-4942,-6368,-7571,-8451, -9102,-9761,-10548,-11375,-12038,-12428,-12580,-12619,-12659,-12692, -12593,-12217,-11546,-10715,-9903,-9178,-8517,-7859,-7136,-6300, -5380,-4510,-3811,-3321,-2982,-2643,-2152,-1448,-584,401, 1476,2570,3555,4363,5032,5601,6003,6136,5961,5546, 4987,4351,3698,3042,2318,1440,487,-318,-849,-1204, -1569,-1990,-2310,-2343,-2069,-1669,-1385,-1388,-1715,-2295, -2935,-3440,-3741,-3910,-4037,-4163,-4229,-4151,-3890,-3485, -3026,-2604,-2332,-2291,-2473,-2723,-2909,-3034,-3225,-3519, -3772,-3797,-3513,-2971,-2250,-1440,-683,-154,32,-162, -675,-1390,-2185,-2971,-3653,-4100,-4182,-3884,-3261,-2395, -1365,-191,1125,2515,3807,4850,5632,6214,6598,6752, 6749,6713,6706,6660,6484,6162,5813,5623,5765,6233, 6810,7233,7374,7254,6943,6551,6247,6156,6258,6452, 6619,6639,6475,6207,5974,5820,5711,5644,5690,5883, 6133,6367,6623,6945,7259,7386,7172,6639,5973,5393, 4979,4682,4443,4272,4190,4151,4015,3559,2630,1305, -161,-1529,-2739,-3877,-5042,-6242,-7409,-8471,-9380,-10117, -10738,-11330,-11952,-12545,-12961,-13061,-12843,-12487,-12144,-11794, -11380,-10878,-10275,-9520,-8604,-7609,-6647,-5821,-5179,-4721, -4380,-4019,-3502,-2830,-2098,-1351,-492,589,1838,3081, 4104,4787,5216,5558,5862,6011,5883,5467,4840,4124, 3433,2823,2213,1444,476,-541,-1359,-1822,-1925,-1784, -1556,-1357,-1300,-1461,-1768,-2074,-2306,-2570,-3002,-3568, -4088,-4396,-4456,-4321,-4083,-3807,-3527,-3263,-3034,-2835, -2660,-2541,-2541,-2742,-3162,-3694,-4141,-4327,-4194,-3793, -3196,-2441,-1572,-756,-217,-63,-269,-752,-1432,-2218, -3014,-3696,-4140,-4271,-4128,-3764,-3125,-2147,-867,517, 1818,2906,3766,4493,5191,5900,6498,6837,6882,6661, 6223,5691,5338,5396,5804,6317,6727,6974,7058,6971, 6740,6451,6244,6202,6320,6474,6524,6428,6297,6233, 6193,6067,5784,5410,5116,5100,5385,5802,6200,6546, 6857,7109,7183,6932,6351,5616,4966,4560,4458,4604, 4834,4910,4675,4160,3517,2812,1963,858,-448,-1826, -3167,-4389,-5429,-6340,-7258,-8266,-9322,-10315,-11174,-11854, -12313,-12541,-12583,-12530,-12500,-12543,-12527,-12220,-11541,-10662, -9819,-9062,-8316,-7519,-6708,-5975,-5417,-5059,-4823,-4524, -3968,-3113,-2100,-1091,-125,895,2037,3241,4310,5083, 5527,5692,5646,5475,5304,5177,4961,4466,3615,2511, 1358,362,-359,-841,-1179,-1431,-1578,-1596,-1523,-1445, -1418,-1482,-1698,-2128,-2714,-3310,-3763,-4023,-4141,-4230, -4314,-4321,-4162,-3847,-3467,-3103,-2803,-2578,-2473,-2593, -2973,-3515,-4035,-4395,-4548,-4445,-4030,-3320,-2421,-1510, -779,-365,-297,-458,-754,-1226,-1934,-2786,-3605,-4248, -4601,-4536,-4014,-3149,-2157,-1215,-380,465,1498,2742, 4021,5121,5927,6399,6534,6358,5976,5592,5409,5518, 5877,6307,6596,6667,6654,6724,6835,6824,6629,6383, 6264,6333,6519,6687,6758,6712,6555,6314,6038,5759, 5466,5174,5012,5163,5671,6370,7002,7348,7314,6949, 6416,5922,5578,5343,5155,5009,4950,5000,5100,5095, 4855,4340,3603,2659,1501,217,-992,-1993,-2869,-3822, -4957,-6257,-7574,-8731,-9611,-10256,-10796,-11346,-11897,-12348, -12576,-12580,-12500,-12439,-12308,-11918,-11183,-10235,-9280,-8434, -7717,-7141,-6667,-6207,-5720,-5236,-4773,-4319,-3814,-3150, -2185,-864,639,2029,3087,3815,4369,4872,5357,5781, 6063,6141,5968,5525,4826,3972,3103,2291,1463,588, -225,-792,-1032,-1008,-886,-809,-830,-956,-1184,-1492, -1873,-2309,-2759,-3158,-3506,-3837,-4143,-4314,-4246,-3973, -3620,-3272,-2899,-2495,-2182,-2161,-2489,-3047,-3682,-4237, -4570,-4597,-4321,-3799,-3142,-2461,-1789,-1096,-418,67, 151,-248,-1042,-2041,-2987,-3671,-4035,-4143,-4061,-3793, -3365,-2843,-2274,-1529,-426,1048,2640,3996,4912,5402, 5625,5719,5749,5737,5702,5672,5720,5903,6240,6609, 6853,6890,6799,6698,6647,6632,6624,6602,6590,6665, 6869,7120,7263,7138,6678,5979,5331,4999,5037,5313, 5694,6131,6577,6910,7024,6917,6698,6424,6090,5695, 5308,5036,4976,5140,5428,5659,5638,5245,4534,3715, 2994,2338,1540,499,-709,-1926,-3078,-4168,-5250,-6370, -7517,-8565,-9403,-10049,-10597,-11099,-11581,-12084,-12564,-12844, -12750,-12299,-11668,-11024,-10439,-9852,-9149,-8302,-7456,-6792, -6407,-6214,-6055,-5805,-5357,-4606,-3546,-2316,-1115,-41, 937,1906,2926,3933,4795,5402,5786,6036,6191,6204, 5993,5498,4745,3853,2891,1905,991,316,-49,-218, -353,-507,-625,-689,-755,-911,-1189,-1566,-1982,-2405, -2848,-3325,-3787,-4159,-4383,-4398,-4159,-3677,-3061,-2493, -2147,-2135,-2452,-2942,-3384,-3701,-3997,-4347,-4622,-4611, -4232,-3548,-2668,-1700,-760,-42,254,29,-617,-1421, -2134,-2647,-3002,-3307,-3654,-4036,-4302,-4237,-3725,-2828, -1712,-496,759,2021,3207,4183,4856,5204,5317,5330, 5382,5557,5837,6079,6183,6233,6422,6758,7047,7083, 6870,6581,6384,6380,6586,6950,7354,7634,7669,7426, 6968,6407,5887,5540,5430,5527,5701,5875,6100,6457, 6900,7242,7257,6878,6261,5709,5437,5437,5546,5622, 5641,5630,5588,5496,5339,5067,4605,3925,3096,2207, 1281,321,-738,-1974,-3351,-4642,-5650,-6421,-7180,-8065, -9042,-10005,-10855,-11526,-12000,-12300,-12469,-12521,-12444,-12208, -11748,-11009,-10039,-9045,-8278,-7841,-7635,-7462,-7170,-6731, -6229,-5689,-5034,-4185,-3184,-2118,-1000,195,1412,2525, 3450,4223,4928,5609,6189,6534,6571,6318,5833,5166, 4369,3522,2681,1900,1232,729,372,95,-99,-201, -276,-421,-635,-809,-918,-1137,-1665,-2486,-3382,-4064, -4362,-4290,-3987,-3589,-3141,-2708,-2393,-2251,-2240,-2337, -2574,-2961,-3488,-4096,-4674,-5021,-4906,-4251,-3216,-2110, -1215,-673,-439,-389,-424,-538,-775,-1189,-1800,-2539, -3247,-3772,-4104,-4325,-4394,-4091,-3271,-2040,-685,560, 1611,2502,3269,3949,4525,4931,5139,5217,5303,5495, 5818,6212,6570,6810,6894,6811,6569,6272,6123,6256, 6680,7192,7547,7611,7475,7311,7168,6970,6614,6106, 5593,5287,5326,5667,6137,6556,6821,6891,6781,6559, 6350,6210,6054,5806,5537,5420,5499,5658,5759,5709, 5525,5308,5148,4998,4689,4103,3213,2104,901,-295, -1411,-2391,-3261,-4137,-5153,-6325,-7491,-8449,-9166,-9828, -10598,-11446,-12180,-12657,-12823,-12678,-12245,-11586,-10835,-10154, -9603,-9136,-8689,-8244,-7835,-7515,-7267,-6981,-6540,-5868, -4961,-3932,-2890,-1841,-723,432,1557,2631,3704,4722, 5556,6094,6362,6452,6401,6155,5612,4808,3936,3198, 2646,2138,1544,892,330,-35,-165,-78,113,212, 71,-338,-980,-1791,-2657,-3411,-3895,-4043,-3943,-3757, -3577,-3334,-2938,-2411,-1922,-1660,-1756,-2298,-3212,-4165, -4764,-4866,-4630,-4243,-3754,-3141,-2427,-1693,-1058,-619, -390,-309,-306,-394,-676,-1246,-2065,-3009,-3870,-4437, -4600,-4394,-3926,-3231,-2313,-1230,-104,964,1945,2814, 3520,3987,4212,4327,4543,5012,5682,6330,6707,6718, 6495,6280,6209,6254,6345,6472,6641,6845,7102,7418, 7745,7945,7836,7380,6739,6164,5841,5787,5867,5957, 6049,6211,6481,6768,6904,6810,6562,6303,6119,6018, 5949,5891,5841,5755,5576,5387,5365,5604,5915,6003, 5718,5117,4364,3566,2736,1843,892,-119,-1212,-2344, -3435,-4415,-5279,-6094,-6975,-8019,-9196,-10349,-11279,-11883, -12208,-12362,-12361,-12142,-11699,-11123,-10518,-9940,-9407,-8949, -8615,-8415,-8267,-8005,-7534,-6934,-6325,-5700,-4942,-3958, -2807,-1605,-437,700,1824,2965,4123,5170,5914,6267, 6290,6135,5930,5669,5277,4735,4084,3339,2481,1585, 828,385,282,413,621,744,618,156,-525,-1196, -1756,-2264,-2832,-3492,-4114,-4470,-4353,-3778,-2994,-2296, -1846,-1706,-1881,-2309,-2879,-3516,-4156,-4661,-4861,-4675, -4234,-3729,-3269,-2822,-2310,-1684,-998,-375,33,150, -11,-468,-1224,-2170,-3086,-3774,-4183,-4384,-4446,-4292, -3753,-2782,-1536,-289,738,1457,1908,2237,2651,3268, 4030,4782,5372,5744,5933,6063,6220,6348,6319,6105, 5858,5816,6114,6656,7189,7534,7688,7740,7687,7473, 7099,6677,6340,6085,5893,5834,5993,6307,6587,6681, 6578,6406,6329,6406,6529,6532,6341,5996,5614,5324, 5211,5277,5474,5731,5930,5957,5785,5517,5234,4891, 4321,3436,2343,1234,249,-616,-1451,-2304,-3169,-4069, -5096,-6277,-7516,-8657,-9657,-10553,-11362,-11990,-12320,-12308, -12013,-11563,-11101,-10718,-10389,-10022,-9577,-9146,-8835,-8657, -8491,-8189,-7706,-7130,-6512,-5813,-4999,-4065,-2980,-1701, -247,1229,2554,3637,4463,5047,5437,5699,5905,6074, 6140,5959,5372,4377,3219,2240,1632,1348,1218,1093, 889,646,514,557,587,324,-350,-1312,-2356,-3273, -3923,-4269,-4330,-4115,-3592,-2843,-2145,-1780,-1849,-2251, -2810,-3369,-3875,-4305,-4602,-4686,-4592,-4445,-4313,-4088, -3600,-2818,-1887,-1031,-414,-107,-82,-262,-580,-1068, -1803,-2747,-3768,-4651,-5158,-5102,-4493,-3548,-2583,-1822, -1254,-671,53,822,1460,1975,2535,3239,4033,4775, 5367,5766,5924,5833,5591,5360,5287,5420,5715,6076, 6427,6786,7171,7526,7695,7559,7127,6592,6187,6029, 6056,6147,6209,6221,6178,6090,6017,6083,6322,6590, 6667,6457,6084,5754,5584,5505,5397,5278,5241,5303, 5413,5550,5739,5933,5969,5718,5157,4374,3492,2626, 1846,1114,325,-585,-1550,-2437,-3263,-4182,-5329,-6672, -8044,-9268,-10276,-11054,-11618,-11967,-12114,-12056,-11808,-11422, -10992,-10608,-10320,-10116,-9902,-9589,-9200,-8846,-8565,-8286, -7944,-7545,-7071,-6381,-5361,-3996,-2404,-790,598,1620, 2349,3059,3931,4929,5815,6335,6392,6059,5528,4984, 4465,3859,3086,2261,1600,1227,1089,1057,1059,1095, 1142,1056,625,-217,-1321,-2453,-3406,-4062,-4351,-4257, -3824,-3175,-2532,-2141,-2122,-2401,-2768,-3073,-3321,-3618, -4013,-4457,-4860,-5124,-5155,-4869,-4288,-3572,-2922,-2386, -1819,-1069,-221,376,418,-153,-1130,-2217,-3203,-3970, -4464,-4669,-4591,-4274,-3768,-3121,-2401,-1684,-1086,-633, -230,280,1024,1994,3022,3888,4498,4914,5229,5427, 5431,5250,5018,4911,5023,5343,5836,6449,7053,7436, 7447,7143,6788,6598,6578,6558,6435,6236,6031,5867, 5791,5859,6032,6203,6317,6361,6323,6201,6046,5928, 5834,5671,5363,5000,4756,4774,5035,5385,5655,5774, 5780,5714,5513,5114,4509,3760,2943,2139,1430,815, 198,-545,-1476,-2535,-3645,-4791,-6005,-7301,-8607,-9797, -10745,-11408,-11784,-11933,-11930,-11803,-11577,-11336,-11171,-11047, -10821,-10393,-9853,-9361,-9094,-9110,-9298,-9386,-9071,-8219, -6983,-5675,-4533,-3522,-2439,-1173,204,1514,2653,3651, 4555,5309,5822,6057,6055,5853,5471,4903,4141,3265, 2437,1831,1507,1402,1438,1583,1787,1890,1653,925, -200,-1451,-2571,-3393,-3842,-3882,-3588,-3202,-2966,-2890, -2800,-2573,-2323,-2290,-2630,-3260,-3926,-4400,-4629,-4724, -4821,-4961,-5052,-4936,-4490,-3701,-2658,-1537,-573,55, 250,48,-436,-1115,-1968,-2944,-3849,-4429,-4557,-4317, -3918,-3527,-3157,-2768,-2349,-1943,-1508,-933,-183,645, 1484,2365,3315,4238,4919,5213,5125,4802,4479,4403, 4674,5176,5708,6145,6491,6748,6910,6999,7062,7098, 7074,6934,6659,6313,6056,6011,6132,6215,6162,6071, 6068,6184,6356,6481,6480,6304,5988,5636,5359,5181, 5057,4959,4908,4977,5207,5553,5881,6023,5903,5570, 5123,4637,4098,3482,2819,2191,1622,1034,343,-472, -1398,-2469,-3687,-5014,-6417,-7827,-9124,-10122,-10704,-10923, -11025,-11263,-11671,-11982,-11901,-11384,-10682,-10122,-9866,-9869, -9989,-10058,-9999,-9806,-9493,-9033,-8395,-7610,-6724,-5750, -4626,-3314,-1899,-544,688,1850,2998,4058,4924,5543, 5955,6204,6215,5885,5220,4387,3547,2781,2170,1852, 1949,2370,2825,2954,2542,1669,629,-302,-1063,-1735, -2403,-3036,-3471,-3560,-3295,-2829,-2388,-2128,-2092,-2250, -2532,-2835,-3059,-3234,-3541,-4090,-4756,-5265,-5452,-5348, -5040,-4506,-3680,-2625,-1543,-612,52,362,222,-355, -1209,-2116,-2910,-3467,-3767,-3894,-3944,-3916,-3727,-3365, -2935,-2590,-2366,-2156,-1752,-995,78,1294,2445,3394, 4070,4408,4435,4332,4338,4531,4800,5033,5227,5448, 5764,6198,6701,7129,7350,7359,7230,7067,6944,6862, 6764,6586,6347,6154,6125,6281,6511,6659,6671,6626, 6606,6595,6481,6208,5828,5458,5173,5006,4976,5068, 5240,5446,5667,5875,5995,5938,5669,5279,4876,4487, 4020,3407,2726,2160,1804,1508,963,-33,-1468,-3103, -4601,-5758,-6647,-7516,-8504,-9524,-10409,-11066,-11479,-11621, -11460,-11061,-10630,-10368,-10301,-10297,-10248,-10178,-10141,-10122, -10011,-9748,-9365,-8918,-8343,-7563,-6563,-5398,-4162,-2905, -1608,-260,1087,2296,3320,4251,5181,6047,6626,6662, 6066,5032,3972,3271,3006,3003,3085,3172,3220,3140, 2901,2561,2145,1536,607,-562,-1660,-2401,-2727,-2782, -2730,-2671,-2614,-2526,-2386,-2236,-2125,-2104,-2218,-2506, -2959,-3517,-4126,-4716,-5215,-5563,-5670,-5423,-4748,-3687, -2420,-1256,-464,-83,24,-60,-384,-979,-1732,-2471, -3066,-3449,-3597,-3529,-3334,-3157,-3104,-3189,-3306,-3250, -2832,-2008,-935,152,1123,1950,2649,3255,3763,4155, 4375,4411,4352,4355,4562,4974,5463,5864,6153,6443, 6797,7149,7365,7397,7286,7070,6827,6620,6491,6409, 6347,6311,6368,6558,6806,6963,6947,6810,6659,6483, 6193,5775,5343,5055,4997,5127,5301,5378,5346,5363, 5593,5990,6241,6051,5448,4726,4191,3922,3807,3691, 3471,3048,2319,1300,150,-936,-1927,-2932,-4080,-5391, -6756,-8039,-9141,-10013,-10599,-10879,-10891,-10773,-10660,-10573, -10484,-10376,-10276,-10232,-10270,-10345,-10353,-10193,-9898,-9626, -9427,-9100,-8387,-7285,-6039,-4884,-3823,-2761,-1622,-321, 1214,2900,4490,5674,6240,6205,5814,5352,4947,4562, 4130,3703,3425,3402,3590,3828,3929,3747,3239,2491, 1638,763,-75,-814,-1403,-1862,-2239,-2515,-2613,-2503, -2284,-2099,-2008,-1944,-1843,-1780,-1912,-2369,-3148,-4087, -4953,-5560,-5816,-5691,-5224,-4481,-3564,-2596,-1657,-809, -163,141,19,-485,-1205,-1910,-2409,-2640,-2675,-2661, -2757,-3042,-3455,-3776,-3820,-3582,-3203,-2778,-2248,-1505, -547,495,1468,2285,2889,3287,3571,3832,4083,4274, 4378,4456,4643,5016,5509,5989,6405,6776,7104,7333, 7437,7378,7153,6839,6603,6529,6537,6488,6393,6431, 6738,7185,7454,7344,6959,6560,6330,6217,6074,5812, 5474,5158,4965,4962,5214,5660,6098,6287,6122,5724, 5306,5039,4929,4882,4804,4622,4292,3806,3215,2570, 1896,1192,447,-462,-1686,-3170,-4667,-5990,-7157,-8264, -9259,-9960,-10264,-10271,-10204,-10208,-10292,-10390,-10419,-10360, -10246,-10155,-10150,-10293,-10527,-10633,-10380,-9751,-8954,-8228, -7678,-7222,-6637,-5661,-4202,-2431,-626,1030,2508,3805, 4854,5537,5816,5752,5431,4946,4424,4042,3936,4095, 4351,4502,4457,4238,3919,3513,2961,2219,1351,495, -228,-803,-1285,-1718,-2107,-2393,-2517,-2434,-2140,-1698, -1266,-1041,-1159,-1625,-2355,-3203,-4052,-4805,-5360,-5651, -5658,-5372,-4736,-3722,-2469,-1297,-531,-286,-417,-690, -948,-1141,-1296,-1487,-1767,-2118,-2457,-2722,-2947,-3217, -3534,-3777,-3781,-3476,-2929,-2257,-1525,-751,70,937, 1789,2526,3051,3392,3680,3969,4195,4270,4257,4366, 4765,5397,6011,6424,6691,6996,7369,7660,7675,7393, 6968,6584,6373,6377,6596,6929,7185,7252,7184,7129, 7164,7258,7270,7048,6547,5897,5346,5095,5157,5379, 5621,5861,6043,6031,5782,5485,5364,5450,5573,5541, 5296,4948,4632,4380,4107,3737,3281,2775,2201,1490, 565,-628,-2071,-3674,-5260,-6604,-7597,-8280,-8798,-9277, -9759,-10158,-10307,-10147,-9837,-9680,-9863,-10300,-10738,-10958, -10904,-10644,-10288,-9953,-9709,-9542,-9370,-9063,-8480,-7575, -6399,-5026,-3501,-1802,39,1878,3425,4462,4965,5092, 5020,4854,4650,4465,4370,4400,4524,4677,4795,4818, 4666,4291,3734,3098,2494,1931,1320,622,-140,-933, -1696,-2313,-2603,-2485,-2077,-1598,-1245,-1065,-1040,-1161, -1463,-1998,-2808,-3870,-5002,-5880,-6199,-5891,-5151,-4260, -3394,-2612,-1945,-1411,-1025,-823,-834,-995,-1172,-1255, -1280,-1400,-1725,-2202,-2660,-3012,-3298,-3599,-3880,-3960, -3687,-3143,-2562,-2061,-1505,-743,210,1180,1993,2578, 2942,3171,3368,3599,3833,4009,4131,4329,4714,5295, 6031,6793,7368,7548,7333,6970,6744,6725,6760,6705, 6580,6515,6569,6714,6923,7196,7513,7737,7663,7194, 6475,5821,5473,5441,5561,5684,5739,5712,5629,5563, 5555,5568,5553,5522,5506,5485,5411,5260,5031,4705, 4318,4010,3876,3872,3771,3295,2336,1051,-308,-1590, -2801,-4025,-5329,-6647,-7834,-8740,-9272,-9437,-9367,-9275, -9364,-9702,-10186,-10625,-10849,-10845,-10742,-10670,-10634,-10561, -10424,-10282,-10206,-10166,-10044,-9692,-9004,-7906,-6387,-4547, -2605,-752,892,2279,3340,3998,4272,4289,4199,4114, 4095,4225,4501,4810,4980,4923,4678,4345,4026,3775, 3556,3225,2630,1735,669,-329,-1105,-1640,-2024,-2306, -2437,-2352,-1993,-1402,-787,-463,-656,-1380,-2437,-3538, -4484,-5244,-5826,-6105,-5913,-5252,-4393,-3647,-3103,-2626, -2112,-1664,-1407,-1313,-1268,-1198,-1106,-1078,-1238,-1639, -2206,-2744,-3127,-3378,-3585,-3783,-3915,-3906,-3712,-3292, -2644,-1835,-1021,-316,305,997,1815,2603,3099,3183, 3021,2902,3030,3417,3972,4643,5362,5998,6412,6610, 6726,6869,7017,7074,6944,6616,6208,5935,5998,6405, 6975,7473,7746,7776,7566,7174,6730,6367,6109,5903, 5727,5614,5617,5710,5762,5654,5402,5211,5256,5525, 5800,5842,5566,5104,4694,4510,4564,4711,4796,4719, 4429,3933,3309,2653,1977,1119,-115,-1749,-3538,-5134, -6355,-7200,-7761,-8143,-8429,-8725,-9065,-9420,-9750,-10091, -10470,-10814,-10977,-10911,-10712,-10516,-10413,-10453,-10649,-10936, -11161,-11147,-10773,-10014,-8884,-7399,-5616,-3681,-1758,23, 1483,2472,2990,3190,3306,3530,3919,4360,4669,4760, 4693,4604,4593,4685,4808,4806,4528,3973,3325,2787, 2287,1551,468,-726,-1674,-2204,-2380,-2294,-1972,-1440, -815,-335,-226,-616,-1450,-2511,-3556,-4461,-5206,-5732, -5922,-5699,-5155,-4504,-3927,-3463,-3072,-2699,-2314,-1910, -1497,-1137,-949,-1014,-1261,-1495,-1625,-1777,-2152,-2766, -3401,-3818,-3941,-3885,-3775,-3652,-3471,-3159,-2640,-1879, -933,64,974,1664,2020,2078,2051,2164,2501,2965, 3414,3797,4152,4559,5075,5701,6355,6883,7120,6997, 6589,6101,5778,5758,5990,6315,6625,6930,7259,7552, 7662,7468,6996,6474,6156,6098,6131,6070,5869,5585, 5302,5116,5125,5347,5645,5793,5644,5279,4937,4769, 4759,4811,4828,4754,4584,4389,4286,4321,4377,4212, 3648,2700,1475,68,-1425,-2903,-4270,-5447,-6368,-7027, -7481,-7824,-8156,-8587,-9144,-9742,-10254,-10596,-10745,-10712, -10563,-10407,-10367,-10489,-10728,-11010,-11328,-11682,-11935,-11837, -11202,-10025,-8381,-6393,-4315,-2505,-1176,-225,660,1633, 2535,3131,3378,3472,3640,3961,4338,4617,4721,4703, 4690,4751,4793,4692,4421,4043,3541,2803,1759,491, -742,-1664,-2135,-2209,-2000,-1576,-1006,-471,-186,-269, -699,-1432,-2447,-3620,-4661,-5284,-5463,-5401,-5301,-5215, -5042,-4659,-4064,-3402,-2865,-2515,-2266,-1979,-1620,-1266, -1031,-988,-1148,-1484,-1934,-2404,-2786,-3055,-3258,-3507, -3838,-4177,-4340,-4157,-3585,-2725,-1770,-895,-216,252, 605,989,1460,1961,2351,2516,2509,2561,2896,3571, 4422,5197,5769,6193,6522,6694,6590,6268,5919,5703, 5702,5944,6400,6931,7332,7443,7291,7090,7010,7046, 7070,6965,6660,6180,5669,5333,5304,5514,5749,5818, 5688,5466,5293,5236,5252,5238,5113,4885,4618,4400, 4323,4418,4629,4851,4987,4979,4757,4220,3325,2157, 805,-668,-2162,-3486,-4492,-5211,-5805,-6409,-7032,-7653, -8287,-8931,-9508,-9915,-10147,-10311,-10444,-10440,-10227,-9947, -9906,-10337,-11197,-12169,-12813,-12844,-12290,-11376,-10272,-8989, -7457,-5721,-3985,-2444,-1180,-124,823,1642,2250,2673, 3051,3493,3920,4195,4318,4404,4539,4713,4906,5111, 5265,5227,4827,4034,2965,1807,687,-347,-1241,-1863, -2039,-1697,-982,-241,178,122,-308,-929,-1625,-2382, -3194,-4017,-4721,-5207,-5448,-5457,-5261,-4917,-4533,-4192, -3893,-3560,-3109,-2530,-1930,-1461,-1206,-1163,-1289,-1463, -1570,-1631,-1745,-2013,-2496,-3192,-3958,-4508,-4596,-4235, -3707,-3269,-2911,-2443,-1786,-1022,-271,387,899,1225, 1404,1527,1692,1943,2272,2686,3245,4010,4895,5708, 6226,6374,6194,5860,5608,5610,5872,6238,6507,6593, 6579,6645,6909,7297,7629,7750,7585,7173,6657,6229, 6012,5943,5876,5762,5662,5611,5570,5524,5519,5562, 5557,5390,5084,4777,4546,4353,4200,4175,4346,4685, 5064,5349,5447,5270,4714,3743,2452,1076,-185,-1263, -2247,-3247,-4282,-5215,-5902,-6376,-6867,-7600,-8581,-9546, -10142,-10214,-9940,-9641,-9510,-9566,-9801,-10258,-10935,-11697, -12352,-12779,-12930,-12748,-12170,-11183,-9869,-8352,-6744,-5154, -3660,-2325,-1177,-226,616,1448,2235,2848,3197,3343, 3446,3679,4105,4594,4979,5231,5454,5678,5760,5471, 4674,3443,2015,671,-362,-967,-1163,-1051,-771,-444, -169,9,63,-57,-442,-1139,-2074,-3047,-3859,-4394, -4711,-4915,-5035,-5070,-5038,-4964,-4754,-4268,-3535,-2798, -2334,-2197,-2186,-2063,-1719,-1247,-852,-737,-980,-1524, -2200,-2825,-3298,-3633,-3913,-4126,-4194,-4031,-3650,-3124, -2520,-1879,-1238,-610,-10,531,938,1124,1094,1014, 1166,1710,2585,3555,4393,4971,5246,5303,5369,5616, 5965,6169,6143,6014,5943,5992,6180,6526,6993,7446, 7718,7758,7644,7486,7312,7086,6777,6433,6145,5961, 5843,5767,5756,5830,5936,5964,5862,5674,5447,5177, 4825,4391,3990,3813,4031,4623,5321,5766,5812,5604, 5342,5016,4404,3353,2007,649,-528,-1481,-2236,-2902, -3611,-4489,-5534,-6654,-7682,-8457,-8923,-9125,-9161,-9107, -9019,-8996,-9154,-9562,-10158,-10835,-11522,-12191,-12783,-13165, -13138,-12569,-11527,-10267,-9008,-7763,-6416,-4918,-3356,-1913, -726,189,947,1629,2232,2719,3045,3250,3463,3818, 4370,5091,5868,6515,6802,6540,5755,4676,3544,2457, 1415,482,-169,-459,-463,-303,-23,353,684,718, 324,-386,-1170,-1839,-2372,-2861,-3421,-4094,-4790,-5304, -5442,-5150,-4596,-4070,-3755,-3620,-3504,-3258,-2836,-2307, -1762,-1285,-950,-796,-798,-924,-1215,-1724,-2392,-3018, -3463,-3737,-3909,-3967,-3894,-3720,-3431,-2901,-2052,-1064, -281,85,101,3,14,283,825,1530,2242,2838, 3288,3667,4097,4647,5225,5650,5826,5832,5794,5782, 5815,5913,6098,6379,6718,7057,7349,7571,7743,7872, 7909,7742,7330,6835,6509,6399,6320,6103,5822,5733, 5986,6408,6642,6471,5950,5307,4741,4358,4149,4070, 4110,4296,4634,5089,5602,6054,6252,6017,5324,4321, 3252,2272,1418,634,-132,-924,-1784,-2783,-3958,-5231, -6378,-7218,-7760,-8139,-8438,-8631,-8670,-8580,-8494,-8624, -9134,-9966,-10894,-11708,-12323,-12747,-13011,-13057,-12810,-12224, -11323,-10158,-8796,-7312,-5848,-4496,-3203,-1865,-545,532, 1203,1519,1679,1888,2259,2833,3620,4580,5563,6340, 6752,6776,6484,5937,5145,4115,2931,1738,739,131, 25,316,683,811,653,401,234,167,55,-242, -819,-1696,-2761,-3736,-4373,-4642,-4708,-4700,-4647,-4539, -4417,-4289,-4096,-3794,-3437,-3067,-2636,-2071,-1422,-858, -567,-634,-961,-1341,-1658,-1966,-2377,-2921,-3537,-4099, -4441,-4397,-3881,-3044,-2201,-1600,-1277,-1129,-1003,-779, -403,32,438,825,1255,1745,2261,2793,3377,4031, 4659,5088,5254,5300,5426,5665,5856,5869,5787,5848, 6201,6740,7214,7461,7552,7664,7878,8072,8059,7755, 7230,6651,6189,5988,6083,6372,6669,6825,6784,6588, 6323,6026,5628,5055,4399,3890,3721,3895,4320,4912, 5573,6147,6442,6345,5870,5140,4373,3737,3227,2685, 1947,1009,-2,-993,-2001,-3127,-4364,-5563,-6540,-7199, -7549,-7646,-7579,-7520,-7650,-8005,-8477,-8964,-9516,-10238, -11109,-11986,-12670,-13028,-13053,-12832,-12419,-11804,-10976,-9923, -8632,-7071,-5328,-3608,-2131,-1002,-261,113,288,564, 1129,1917,2743,3538,4401,5354,6286,7018,7358,7148, 6330,5098,3832,2859,2247,1856,1495,1104,755,540, 521,683,956,1152,1083,653,-70,-896,-1662,-2358, -3068,-3754,-4232,-4397,-4371,-4327,-4342,-4411,-4498,-4489, -4263,-3760,-3092,-2448,-1962,-1625,-1375,-1129,-826,-519, -430,-787,-1584,-2557,-3390,-3918,-4120,-4045,-3734,-3250, -2739,-2358,-2135,-1938,-1609,-1157,-746,-502,-368,-140, 333,981,1601,2081,2499,2997,3631,4278,4776,5040, 5127,5170,5275,5466,5704,5941,6123,6219,6315,6598, 7160,7847,8350,8467,8237,7844,7439,7069,6765,6539, 6400,6398,6568,6850,7083,7156,7065,6820,6371,5651, 4737,3914,3518,3674,4207,4839,5385,5794,6054,6112, 5987,5740,5405,4950,4385,3797,3277,2802,2212,1307, 47,-1396,-2762,-3919,-4877,-5644,-6199,-6567,-6819,-6977, -7030,-7071,-7289,-7762,-8422,-9179,-10013,-10865,-11567,-12039, -12361,-12658,-12938,-13061,-12833,-12107,-10866,-9222,-7425,-5744, -4352,-3241,-2299,-1453,-746,-280,-39,207,754,1745, 3075,4525,5844,6767,7122,6941,6451,5887,5323,4666, 3861,2984,2190,1587,1200,1040,1061,1159,1270,1389, 1456,1341,936,265,-562,-1444,-2260,-2878,-3219,-3391, -3622,-4049,-4559,-4888,-4874,-4573,-4208,-3958,-3803,-3601, -3256,-2769,-2165,-1462,-728,-159,-15,-408,-1195,-2060, -2732,-3140,-3408,-3649,-3809,-3739,-3390,-2901,-2485,-2228, -2064,-1886,-1648,-1350,-1006,-647,-329,-53,296,852, 1597,2363,2958,3321,3567,3854,4275,4767,5161,5313, 5243,5153,5220,5463,5802,6193,6673,7254,7792,8090, 8084,7900,7683,7442,7100,6659,6254,6067,6201,6608, 7126,7551,7688,7396,6682,5760,4935,4377,4036,3833, 3829,4109,4599,5148,5637,5938,5938,5649,5281,5041, 4937,4816,4548,4114,3498,2668,1621,427,-836,-2103, -3306,-4375,-5260,-5886,-6191,-6250,-6243,-6337,-6621,-7146, -7878,-8641,-9228,-9625,-10072,-10808,-11795,-12774,-13486,-13831, -13785,-13351,-12588,-11585,-10367,-8888,-7153,-5382,-3887,-2905, -2452,-2326,-2197,-1777,-915,308,1676,2974,4138,5157, 5966,6489,6698,6610,6244,5627,4830,3979,3192,2511, 1911,1391,1056,1078,1429,1826,1943,1677,1143,545, 3,-493,-1011,-1577,-2163,-2739,-3316,-3879,-4331,-4538, -4479,-4342,-4342,-4531,-4725,-4686,-4302,-3637,-2842,-2057, -1381,-890,-625,-594,-795,-1239,-1876,-2566,-3123,-3440, -3530,-3481,-3386,-3291,-3160,-2931,-2580,-2184,-1909,-1831, -1844,-1723,-1348,-802,-248,231,685,1167,1671,2173, 2674,3198,3747,4234,4528,4615,4616,4664,4796,5002, 5315,5729,6179,6596,7006,7465,7918,8189,8133,7763, 7215,6654,6280,6250,6538,6959,7331,7583,7703,7659, 7364,6775,5968,5133,4468,4104,4041,4226,4575,4963, 5263,5404,5433,5435,5438,5426,5386,5340,5244,5007, 4593,4058,3399,2529,1350,-93,-1588,-2870,-3790,-4352, -4667,-4921,-5259,-5716,-6205,-6611,-6909,-7179,-7547,-8109, -8883,-9796,-10705,-11509,-12222,-12920,-13570,-14012,-14013,-13423, -12261,-10717,-9056,-7506,-6213,-5257,-4608,-4118,-3600,-2952, -2195,-1359,-370,856,2257,3610,4704,5474,5991,6361, 6586,6524,6038,5189,4196,3290,2585,2116,1909,1949, 2112,2204,2089,1782,1443,1202,1035,758,244,-504, -1363,-2168,-2774,-3135,-3352,-3577,-3892,-4261,-4612,-4899, -5061,-5044,-4845,-4485,-3959,-3212,-2293,-1422,-856,-698, -855,-1138,-1415,-1734,-2206,-2800,-3313,-3582,-3601,-3465, -3242,-2966,-2701,-2542,-2502,-2485,-2372,-2139,-1821,-1441, -1025,-631,-269,111,601,1218,1917,2579,3109,3468, 3695,3869,4067,4303,4511,4623,4663,4778,5141,5795, 6585,7277,7730,7930,7902,7660,7268,6857,6547,6378, 6383,6623,7098,7636,8005,8066,7811,7289,6564,5757, 5052,4602,4428,4440,4516,4592,4680,4827,5033,5233, 5329,5289,5186,5133,5210,5375,5486,5360,4859,3937, 2693,1336,103,-924,-1797,-2615,-3433,-4189,-4759,-5082, -5268,-5501,-5869,-6337,-6835,-7337,-7832,-8345,-8955,-9786, -10891,-12186,-13404,-14229,-14459,-14123,-13391,-12419,-11248,-9899, -8520,-7330,-6480,-5903,-5388,-4763,-3986,-3115,-2169,-1115, 54,1279,2507,3725,4911,5930,6584,6749,6415,5672, 4759,3961,3444,3145,2908,2644,2367,2140,2013,2015, 2086,2099,1917,1470,803,73,-550,-1044,-1540,-2120, -2673,-3039,-3252,-3547,-4078,-4723,-5239,-5499,-5468,-5154, -4615,-3968,-3304,-2653,-2025,-1458,-1058,-908,-1031,-1382, -1885,-2451,-2960,-3296,-3409,-3341,-3210,-3113,-3064,-3024, -2963,-2850,-2649,-2379,-2136,-2021,-1972,-1804,-1387,-774, -138,419,923,1417,1935,2479,3025,3482,3736,3762, 3680,3659,3797,4094,4535,5112,5788,6484,7103,7534, 7711,7629,7342,6926,6496,6197,6177,6495,7057,7647, 8053,8154,7964,7570,7086,6567,6030,5485,4980,4594, 4396,4416,4624,4896,5063,4990,4742,4560,4664,5054, 5536,5875,5948,5763,5369,4814,4107,3243,2214,1062, -144,-1316,-2325,-3047,-3477,-3814,-4287,-4913,-5510,-5872, -5989,-6072,-6325,-6815,-7513,-8426,-9572,-10893,-12225,-13374, -14149,-14421,-14193,-13561,-12651,-11584,-10491,-9507,-8679,-7930, -7151,-6309,-5475,-4720,-4049,-3373,-2525,-1344,177,1857, 3453,4780,5669,6016,5924,5664,5423,5124,4612,3918, 3263,2840,2655,2593,2556,2506,2453,2398,2296,2060, 1612,968,248,-392,-867,-1191,-1482,-1865,-2376,-2986, -3639,-4286,-4852,-5245,-5424,-5425,-5288,-4968,-4435,-3735, -2974,-2243,-1615,-1192,-1103,-1364,-1806,-2198,-2459,-2649, -2862,-3112,-3349,-3502,-3486,-3289,-3006,-2788,-2715,-2759, -2810,-2762,-2572,-2274,-1951,-1644,-1297,-839,-258,402, 1093,1774,2361,2774,2993,3058,3049,3042,3121,3325, 3663,4139,4791,5603,6439,7093,7398,7339,7018,6584, 6221,6079,6209,6534,6914,7233,7476,7696,7910,8006, 7823,7282,6499,5737,5213,4978,4929,4906,4823,4666, 4456,4231,4100,4205,4537,4913,5151,5259,5390,5623, 5820,5743,5253,4403,3385,2363,1387,455,-451,-1333, -2172,-2948,-3649,-4257,-4734,-5035,-5168,-5202,-5273,-5523, -6023,-6792,-7863,-9243,-10795,-12221,-13245,-13780,-13923,-13797, -13445,-12904,-12264,-11545,-10669,-9585,-8438,-7504,-6949,-6662, -6339,-5691,-4633,-3284,-1808,-307,1166,2572,3828,4847, 5521,5790,5699,5404,5020,4574,4043,3510,3104,2898, 2861,2925,3033,3086,2945,2545,1987,1440,984,586, 210,-140,-486,-903,-1444,-2088,-2742,-3344,-3908,-4460, -4985,-5416,-5647,-5558,-5110,-4389,-3584,-2873,-2356,-2027, -1803,-1613,-1474,-1493,-1751,-2182,-2642,-2989,-3172,-3209, -3165,-3114,-3073,-3012,-2935,-2863,-2809,-2744,-2666,-2599, -2550,-2453,-2202,-1752,-1137,-439,264,931,1546,2084, 2477,2678,2702,2601,2455,2395,2607,3203,4124,5163, 6036,6543,6695,6691,6689,6672,6543,6325,6176,6218, 6453,6847,7367,7926,8313,8327,7950,7370,6835,6507, 6341,6147,5783,5311,4902,4648,4523,4435,4318,4180, 4108,4213,4534,4976,5406,5754,5982,6004,5719,5166, 4507,3862,3174,2336,1358,365,-581,-1517,-2462,-3325, -3967,-4330,-4439,-4373,-4230,-4167,-4404,-5122,-6331,-7809, -9245,-10423,-11343,-12134,-12888,-13553,-13958,-13928,-13394,-12503, -11523,-10659,-9928,-9274,-8701,-8224,-7767,-7193,-6422,-5431, -4217,-2781,-1190,406,1863,3118,4172,5010,5552,5708, 5485,5010,4442,3937,3591,3447,3477,3604,3706,3660, 3419,3034,2601,2198,1850,1555,1266,899,429,-67, -473,-805,-1218,-1866,-2748,-3727,-4594,-5161,-5374,-5324, -5147,-4876,-4487,-3972,-3375,-2764,-2215,-1796,-1560,-1531, -1694,-1965,-2239,-2464,-2666,-2875,-3067,-3193,-3213,-3123, -2950,-2778,-2674,-2673,-2739,-2831,-2911,-2914,-2746,-2401, -1992,-1569,-986,-114,913,1796,2294,2359,2121,1806, 1623,1699,2072,2707,3498,4288,4967,5561,6142,6655, 6904,6779,6371,5935,5741,5935,6462,7082,7551,7799, 7930,8039,8088,7991,7748,7451,7145,6792,6385,5994, 5698,5472,5180,4757,4304,4006,3941,4078,4360,4737, 5172,5581,5859,5950,5880,5703,5423,5014,4474,3847, 3158,2369,1410,240,-1087,-2363,-3278,-3610,-3430,-3090, -2939,-3103,-3515,-4090,-4817,-5700,-6735,-7925,-9252,-10603, -11802,-12714,-13281,-13502,-13407,-13030,-12424,-11681,-10943,-10332, -9873,-9506,-9118,-8634,-8002,-7189,-6178,-4988,-3651,-2179, -588,1047,2589,3882,4814,5311,5370,5086,4653,4285, 4113,4126,4213,4227,4111,3932,3780,3684,3560,3280, 2806,2247,1759,1452,1305,1202,1009,630,34,-749, -1643,-2536,-3331,-3993,-4523,-4926,-5184,-5235,-4994,-4498, -3907,-3359,-2861,-2396,-2009,-1781,-1705,-1694,-1724,-1872, -2190,-2599,-2923,-3032,-2934,-2779,-2720,-2754,-2748,-2636, -2507,-2487,-2601,-2804,-3044,-3219,-3131,-2619,-1712,-613, 422,1173,1535,1583,1521,1519,1566,1558,1511,1626, 2148,3092,4211,5207,5903,6274,6350,6200,5956,5808, 5879,6120,6402,6669,6978,7384,7820,8144,8277,8243, 8101,7891,7648,7432,7247,7042,6745,6337,5829,5254, 4691,4279,4109,4131,4235,4411,4748,5242,5704,5914, 5825,5588,5425,5443,5552,5515,5092,4182,2878,1418, 62,-1004,-1734,-2186,-2468,-2619,-2657,-2636,-2673,-2869, -3265,-3902,-4794,-5923,-7214,-8602,-9999,-11256,-12220,-12809, -13027,-12936,-12638,-12227,-11785,-11351,-10944,-10544,-10133,-9692, -9207,-8661,-8028,-7231,-6173,-4792,-3088,-1173,705,2259, 3346,4025,4432,4676,4799,4805,4692,4495,4330,4300, 4401,4543,4633,4584,4316,3832,3272,2823,2572,2449, 2333,2161,1932,1631,1206,608,-141,-970,-1806,-2642, -3481,-4251,-4774,-4923,-4785,-4551,-4317,-4024,-3593,-3042, -2467,-1969,-1643,-1538,-1618,-1764,-1892,-2025,-2206,-2422, -2619,-2784,-2885,-2823,-2519,-2061,-1747,-1854,-2384,-3040, -3464,-3503,-3239,-2797,-2221,-1499,-673,158,888,1432, 1704,1630,1273,863,692,942,1594,2493,3467,4362, 5070,5560,5851,5988,5986,5897,5836,5885,6054,6322, 6710,7221,7753,8119,8233,8185,8132,8160,8224,8221, 8078,7820,7536,7254,6882,6325,5611,4891,4346,4143, 4329,4753,5149,5324,5279,5162,5163,5378,5780,6218, 6497,6469,6081,5371,4405,3254,2036,865,-146,-935, -1483,-1816,-1988,-2037,-2010,-1978,-2045,-2309,-2878,-3812, -5063,-6512,-8015,-9439,-10651,-11542,-12086,-12349,-12440,-12440, -12372,-12178,-11796,-11255,-10727,-10414,-10330,-10261,-9971,-9345, -8346,-6985,-5342,-3605,-1932,-384,1050,2344,3412,4139, 4448,4422,4294,4283,4419,4606,4774,4927,5034,4980, 4694,4264,3869,3588,3369,3132,2878,2652,2499,2397, 2262,1944,1324,421,-583,-1527,-2356,-3098,-3766,-4297, -4640,-4796,-4776,-4555,-4101,-3487,-2925,-2598,-2466,-2296, -1948,-1544,-1358,-1532,-1987,-2501,-2880,-2997,-2813,-2422, -2030,-1822,-1848,-2042,-2324,-2653,-3005,-3325,-3548,-3582, -3299,-2609,-1595,-517,363,907,1114,1038,775,477, 319,427,837,1473,2210,2999,3842,4660,5275,5554, 5527,5374,5288,5361,5595,5929,6294,6639,6977,7341, 7706,7978,8069,8000,7906,7942,8154,8402,8458,8155, 7486,6614,5780,5198,4925,4866,4874,4845,4758,4631, 4534,4557,4735,5046,5464,5952,6405,6649,6550,6121, 5447,4584,3570,2466,1363,337,-528,-1163,-1544,-1709, -1704,-1540,-1300,-1209,-1496,-2257,-3407,-4772,-6153,-7434, -8620,-9741,-10768,-11606,-12175,-12461,-12451,-12162,-11737,-11423, -11377,-11502,-11569,-11447,-11158,-10727,-10106,-9212,-8027,-6578, -4917,-3139,-1386,189,1476,2383,2925,3221,3451,3750, 4111,4421,4591,4671,4747,4842,4863,4704,4362,3948, 3581,3291,3061,2930,2945,3011,2897,2483,1879,1275, 707,48,-836,-1912,-3000,-3888,-4428,-4621,-4586,-4502, -4458,-4400,-4214,-3831,-3257,-2586,-2005,-1702,-1736,-2022, -2375,-2627,-2724,-2738,-2733,-2672,-2488,-2190,-1898,-1778, -1914,-2287,-2825,-3441,-3965,-4186,-3954,-3288,-2369,-1439, -665,-105,264,451,456,289,31,-162,-111,306, 1057,1984,2865,3564,4071,4465,4769,4973,5038,4983, 4929,5046,5422,5992,6568,6972,7125,7094,7052,7185, 7567,8076,8494,8675,8569,8204,7646,7032,6473,6026, 5695,5451,5252,5005,4673,4325,4096,4061,4210,4498, 4894,5367,5860,6282,6518,6450,6077,5514,4853,4023, 2948,1702,503,-458,-1100,-1383,-1304,-977,-675,-635, -933,-1460,-2092,-2838,-3802,-5051,-6526,-8052,-9433,-10502, -11201,-11584,-11756,-11790,-11763,-11748,-11797,-11898,-11990,-12017, -11981,-11918,-11776,-11359,-10457,-9060,-7396,-5704,-4078,-2521, -1097,80,996,1761,2440,2983,3340,3599,3893,4280, 4692,4990,5029,4778,4381,4030,3827,3730,3630,3438, 3184,2976,2889,2896,2864,2645,2121,1270,188,-929, -1864,-2531,-3041,-3576,-4182,-4731,-5034,-5000,-4682,-4210, -3687,-3178,-2741,-2435,-2300,-2291,-2359,-2494,-2710,-2948, -3081,-3000,-2667,-2164,-1690,-1477,-1650,-2148,-2787,-3391, -3844,-4087,-4090,-3840,-3331,-2571,-1655,-794,-208,10, -69,-275,-453,-500,-403,-195,133,654,1412,2336, 3229,3887,4193,4210,4118,4130,4368,4808,5300,5694, 5926,6041,6117,6243,6478,6868,7396,7973,8456,8691, 8617,8323,7977,7667,7339,6955,6581,6273,5976,5576, 5055,4525,4129,3932,3940,4151,4523,4970,5392,5729, 6001,6276,6537,6624,6292,5443,4211,2864,1645,707, 72,-347,-628,-769,-733,-565,-404,-390,-594,-1056, -1875,-3122,-4687,-6257,-7581,-8642,-9564,-10376,-10989,-11337, -11468,-11496,-11516,-11580,-11751,-12060,-12476,-12838,-12934,-12619, -11890,-10859,-9661,-8340,-6876,-5291,-3664,-2140,-895,3, 672,1312,2032,2784,3465,3989,4336,4507,4551,4568, 4630,4687,4597,4261,3764,3343,3217,3381,3625,3735, 3608,3257,2743,2133,1483,795,33,-812,-1722,-2659, -3548,-4251,-4650,-4747,-4660,-4483,-4220,-3844,-3373,-2862, -2430,-2235,-2361,-2722,-3089,-3266,-3186,-2903,-2502,-2109, -1815,-1643,-1598,-1739,-2142,-2790,-3523,-4109,-4339,-4151, -3625,-2947,-2283,-1695,-1171,-720,-397,-279,-397,-688, -973,-1022,-692,-12,811,1592,2236,2730,3067,3262, 3414,3697,4168,4679,5030,5164,5190,5225,5336,5554, 5903,6398,7011,7617,8070,8319,8395,8341,8185,7965, 7751,7622,7524,7309,6859,6205,5483,4855,4446,4288, 4245,4148,4011,4045,4398,5002,5663,6239,6673,6873, 6706,6113,5224,4240,3283,2344,1382,458,-273,-653, -649,-371,-13,254,294,25,-592,-1535,-2703,-3989, -5329,-6688,-7995,-9129,-9953,-10397,-10529,-10564,-10717,-11081, -11585,-12100,-12554,-12940,-13249,-13402,-13287,-12815,-11953,-10709, -9175,-7536,-6046,-4833,-3780,-2689,-1478,-260,807,1624, 2196,2648,3148,3747,4328,4720,4837,4709,4420,4083, 3825,3731,3779,3872,3912,3852,3697,3488,3292,3097, 2797,2254,1448,476,-519,-1452,-2301,-3097,-3847,-4502, -4919,-4990,-4696,-4161,-3573,-3122,-2909,-2905,-2993,-3104, -3235,-3372,-3443,-3350,-3026,-2504,-1917,-1467,-1337,-1609, -2163,-2762,-3251,-3640,-3983,-4215,-4195,-3837,-3208,-2464, -1761,-1183,-826,-765,-994,-1330,-1531,-1433,-1041,-496, 59,563,999,1353,1692,2119,2667,3249,3766,4165, 4428,4538,4539,4528,4605,4796,5121,5630,6342,7099, 7626,7794,7762,7784,7977,8228,8347,8275,8056,7736, 7306,6790,6276,5826,5411,4930,4360,3812,3477,3503, 3889,4503,5141,5687,6118,6429,6576,6510,6202,5619, 4750,3653,2442,1295,411,-71,-174,-63,79,210, 375,542,527,121,-739,-1987,-3463,-4990,-6381,-7496, -8288,-8843,-9311,-9761,-10154,-10448,-10699,-11055,-11663,-12512, -13392,-13993,-14105,-13731,-13010,-12097,-11103,-10048,-8884,-7561, -6122,-4704,-3426,-2319,-1365,-526,311,1243,2234,3145, 3837,4237,4363,4319,4244,4238,4276,4269,4175,4028, 3914,3905,3995,4115,4134,3940,3564,3129,2691,2180, 1486,547,-594,-1807,-2913,-3753,-4238,-4396,-4347,-4186, -3893,-3450,-2989,-2745,-2848,-3217,-3602,-3793,-3726,-3451, -3046,-2554,-2058,-1679,-1503,-1519,-1681,-2002,-2513,-3170, -3811,-4254,-4373,-4107,-3492,-2693,-1970,-1507,-1330,-1362, -1506,-1636,-1609,-1371,-1022,-714,-498,-278,47,465, 888,1299,1815,2534,3344,3975,4242,4188,4020,3936, 4045,4357,4840,5422,5998,6450,6761,7020,7354,7794, 8230,8518,8585,8483,8319,8192,8128,8015,7698,7138, 6427,5678,4929,4273,3869,3817,4020,4281,4542,4908, 5460,6130,6723,7047,6985,6532,5788,4878,3895,2897, 1944,1119,481,98,36,325,844,1331,1502,1232, 560,-384,-1473,-2659,-3952,-5309,-6590,-7595,-8203,-8450, -8544,-8744,-9214,-9965,-10890,-11825,-12618,-13194,-13559,-13723, -13680,-13391,-12810,-11893,-10683,-9325,-7977,-6749,-5683,-4732, -3753,-2621,-1329,-33,1080,1939,2606,3188,3720,4150, 4401,4463,4387,4276,4219,4274,4409,4515,4478,4309, 4164,4196,4336,4369,4132,3635,2983,2200,1236,76, -1157,-2302,-3221,-3818,-4018,-3840,-3435,-3029,-2803,-2808, -3006,-3316,-3602,-3744,-3709,-3546,-3300,-2941,-2443,-1868, -1369,-1070,-1039,-1304,-1896,-2744,-3593,-4114,-4129,-3740, -3217,-2757,-2374,-2032,-1763,-1645,-1675,-1718,-1634,-1382, -1047,-771,-644,-630,-625,-510,-177,420,1235,2122, 2873,3336,3486,3448,3430,3584,3877,4175,4406,4647, 4978,5400,5875,6393,6933,7430,7783,7960,8026,8120, 8341,8646,8867,8828,8486,7936,7297,6630,5969,5329, 4724,4202,3838,3720,3905,4384,5060,5760,6313,6644, 6772,6759,6606,6193,5395,4252,2983,1855,1074,692, 625,725,899,1133,1411,1657,1693,1341,503,-774, -2297,-3800,-5036,-5897,-6448,-6836,-7198,-7634,-8209,-8915, -9670,-10410,-11162,-12004,-12914,-13734,-14229,-14232,-13755,-12945, -11981,-11010,-10076,-9150,-8151,-7002,-5739,-4491,-3377,-2341, -1232,10,1232,2201,2838,3239,3534,3803,4067,4282, 4408,4424,4373,4318,4314,4354,4400,4446,4512,4603, 4661,4611,4371,3861,2988,1748,307,-1044,-2076,-2733, -3074,-3171,-3082,-2898,-2769,-2797,-2972,-3177,-3334,-3505, -3772,-4039,-4055,-3633,-2854,-1987,-1297,-908,-868,-1153, -1693,-2371,-3048,-3572,-3798,-3681,-3314,-2882,-2525,-2299, -2186,-2155,-2129,-1983,-1639,-1196,-886,-858,-1050,-1270, -1313,-1087,-621,-15,650,1300,1852,2273,2596,2920, 3272,3585,3755,3768,3752,3883,4250,4815,5445,5994, 6398,6690,6948,7236,7600,8044,8490,8823,8974,8960, 8865,8735,8526,8115,7425,6488,5503,4727,4299,4171, 4195,4293,4506,4905,5510,6231,6900,7317,7337,6926, 6190,5296,4374,3462,2550,1712,1070,751,801,1183, 1762,2327,2612,2405,1667,571,-628,-1759,-2798,-3773, -4660,-5422,-6061,-6584,-6980,-7296,-7714,-8475,-9618,-10920, -12065,-12888,-13427,-13758,-13898,-13790,-13384,-12681,-11768,-10794, -9880,-9031,-8125,-7044,-5775,-4434,-3116,-1868,-703,348, 1251,2027,2700,3260,3657,3887,4038,4213,4415,4532, 4464,4279,4163,4243,4486,4785,5103,5398,5503,5180, 4330,3110,1793,588,-421,-1261,-1959,-2496,-2803,-2823, -2618,-2398,-2386,-2657,-3128,-3667,-4161,-4485,-4497,-4111, -3382,-2505,-1715,-1155,-883,-958,-1404,-2108,-2829,-3306, -3409,-3239,-3027,-2920,-2905,-2900,-2833,-2647,-2325,-1906, -1502,-1238,-1195,-1355,-1574,-1678,-1556,-1263,-921,-612, -294,120,677,1329,1982,2527,2882,3023,3015,2993, 3103,3415,3873,4337,4697,4958,5225,5618,6159,6720, 7155,7435,7679,8023,8483,8950,9293,9395,9183,8691, 8057,7407,6764,6080,5321,4577,4037,3838,3991,4437, 5084,5815,6454,6862,7036,7066,6963,6596,5843,4749, 3512,2364,1484,1031,1077,1507,2048,2429,2541,2432, 2197,1818,1193,246,-972,-2281,-3415,-4188,-4636,-4955, -5351,-5894,-6531,-7240,-8072,-9097,-10284,-11478,-12524,-13312, -13793,-13949,-13785,-13392,-12926,-12446,-11867,-11075,-10095,-9046, -8005,-6900,-5647,-4279,-2941,-1743,-678,282,1132,1863, 2480,3020,3513,3957,4265,4330,4134,3818,3638,3779, 4232,4805,5285,5577,5671,5551,5160,4465,3498,2355, 1131,-70,-1127,-1877,-2219,-2218,-2076,-2006,-2115,-2403, -2855,-3471,-4190,-4807,-5065,-4813,-4100,-3145,-2231,-1587, -1320,-1412,-1759,-2207,-2585,-2782,-2840,-2910,-3104,-3383, -3591,-3568,-3287,-2839,-2382,-2042,-1856,-1809,-1822,-1826, -1784,-1705,-1639,-1626,-1652,-1606,-1333,-783,-53,657, 1182,1500,1714,1955,2271,2610,2893,3072,3170,3297, 3575,4053,4616,5086,5379,5601,5921,6377,6913,7483, 8052,8541,8866,9024,9111,9162,9079,8714,8013,7066, 6049,5139,4468,4101,4044,4225,4521,4880,5339,5966, 6709,7357,7639,7359,6529,5365,4178,3215,2537,2047, 1672,1476,1574,1963,2461,2819,2879,2610,2046,1227, 233,-783,-1693,-2494,-3238,-3897,-4376,-4690,-5010,-5559, -6427,-7519,-8688,-9850,-10970,-11983,-12808,-13395,-13710,-13768, -13626,-13365,-12983,-12436,-11738,-10951,-10106,-9134,-7941,-6551, -5131,-3869,-2838,-1938,-1002,63,1179,2182,2960,3473, 3719,3713,3565,3459,3524,3768,4091,4436,4830,5297, 5777,6102,6095,5679,4904,3894,2742,1515,334,-624, -1201,-1398,-1348,-1242,-1255,-1538,-2168,-3080,-4045,-4786, -5087,-4861,-4219,-3430,-2767,-2340,-2118,-1994,-1908,-1852, -1873,-2018,-2313,-2738,-3220,-3598,-3710,-3513,-3160,-2851, -2669,-2525,-2325,-2057,-1785,-1591,-1552,-1704,-1988,-2213, -2176,-1848,-1402,-1019,-717,-376,76,605,1120,1556, 1885,2097,2211,2330,2570,2952,3364,3681,3881,4057, 4315,4703,5192,5731,6262,6739,7149,7558,8047,8635, 9221,9647,9749,9432,8764,7943,7157,6489,5868,5165, 4388,3797,3686,4126,4923,5798,6584,7182,7498,7456, 7071,6429,5599,4597,3521,2573,1960,1744,1852,2135, 2448,2702,2880,2936,2771,2281,1477,512,-434,-1269, -1985,-2568,-3029,-3403,-3782,-4284,-5009,-5950,-7003,-8075, -9168,-10332,-11512,-12514,-13163,-13486,-13631,-13706,-13706,-13586, -13288,-12763,-11971,-10941,-9776,-8616,-7550,-6579,-5589,-4439, -3093,-1685,-417,634,1506,2223,2747,3046,3138,3116, 3096,3178,3408,3783,4280,4872,5509,6059,6381,6363, 5977,5230,4157,2865,1545,458,-168,-313,-191,-123, -340,-899,-1726,-2691,-3607,-4249,-4498,-4429,-4230,-4023, -3783,-3429,-2948,-2408,-1925,-1617,-1585,-1851,-2306,-2741, -2994,-3106,-3226,-3425,-3589,-3556,-3257,-2781,-2292,-1924, -1751,-1780,-1944,-2099,-2146,-2092,-2034,-2021,-1989,-1828, -1482,-987,-450,36,413,687,917,1199,1565,1966, 2331,2613,2796,2905,3013,3225,3628,4178,4679,4955, 5078,5325,5903,6734,7579,8265,8766,9110,9316,9415, 9418,9271,8824,8008,6912,5756,4788,4185,3979,4089, 4426,4963,5688,6514,7224,7587,7509,7037,6307,5442, 4513,3580,2774,2255,2074,2143,2342,2612,2916,3153, 3162,2824,2183,1411,658,-25,-648,-1235,-1782,-2245, -2633,-3024,-3523,-4196,-5073,-6143,-7366,-8625,-9763,-10673, -11404,-12099,-12838,-13533,-14005,-14125,-13877,-13375,-12759,-12111, -11421,-10657,-9807,-8882,-7844,-6676,-5380,-4008,-2642,-1349, -185,820,1622,2158,2423,2515,2593,2735,2909,3108, 3437,4022,4863,5778,6525,6932,6857,6212,5074,3752, 2604,1840,1465,1338,1254,1004,473,-290,-1118,-1837, -2395,-2895,-3445,-4022,-4456,-4573,-4319,-3800,-3198,-2659, -2269,-2044,-1931,-1858,-1828,-1943,-2281,-2797,-3318,-3669, -3750,-3568,-3205,-2800,-2474,-2261,-2089,-1899,-1744,-1736, -1887,-2089,-2231,-2286,-2237,-2021,-1611,-1128,-773,-620, -509,-226,291,896,1382,1659,1776,1858,2044,2384, 2822,3228,3489,3581,3598,3724,4106,4733,5436,6059, 6556,7023,7587,8284,9019,9614,9915,9885,9592,9074, 8278,7208,6055,5077,4432,4146,4207,4615,5318,6165, 6951,7485,7686,7565,7181,6563,5716,4711,3728,2990, 2602,2527,2654,2896,3163,3358,3379,3203,2873,2438, 1900,1234,484,-216,-723,-992,-1142,-1400,-1944,-2757, -3698,-4628,-5513,-6403,-7356,-8401,-9507,-10627,-11690,-12612, -13286,-13639,-13710,-13608,-13401,-13050,-12551,-11983,-11400,-10756, -9954,-8929,-7697,-6331,-4904,-3474,-2117,-925,60,891, 1584,2056,2222,2137,2001,2031,2384,3123,4219,5487, 6564,7105,6974,6316,5427,4598,3967,3512,3122,2696, 2200,1663,1161,725,275,-326,-1136,-2050,-2901,-3555, -3971,-4144,-4130,-4031,-3891,-3636,-3166,-2536,-1974,-1674, -1660,-1848,-2171,-2606,-3065,-3415,-3579,-3588,-3527,-3411, -3163,-2731,-2210,-1801,-1669,-1838,-2157,-2426,-2503,-2382, -2169,-1990,-1911,-1884,-1787,-1502,-1028,-481,-17,270, 399,524,830,1350,1922,2318,2464,2493,2579,2773, 3021,3280,3556,3897,4332,4823,5330,5876,6532,7327, 8163,8913,9523,9972,10188,10038,9438,8463,7291,6151, 5229,4613,4329,4386,4784,5458,6252,6984,7523,7787, 7699,7214,6384,5384,4459,3762,3306,3021,2858,2817, 2951,3249,3560,3659,3415,2897,2267,1655,1122,705, 434,235,-42,-502,-1098,-1720,-2334,-2983,-3711,-4530, -5445,-6473,-7625,-8878,-10115,-11219,-12141,-12879,-13380,-13582, -13533,-13370,-13215,-13051,-12780,-12325,-11681,-10859,-9853,-8688, -7428,-6134,-4779,-3311,-1769,-361,672,1194,1212,905, 600,678,1347,2489,3772,4898,5720,6190,6335,6233, 5987,5633,5138,4503,3848,3339,3058,2892,2618,2094, 1369,592,-165,-914,-1667,-2369,-2994,-3555,-4046,-4369, -4382,-4047,-3474,-2867,-2393,-2120,-2000,-1967,-1987,-2117, -2447,-2971,-3539,-3929,-3990,-3722,-3244,-2725,-2336,-2186, -2238,-2310,-2237,-2057,-1959,-2086,-2371,-2599,-2578,-2294, -1889,-1547,-1324,-1160,-971,-723,-407,-23,417,866, 1259,1548,1740,1911,2126,2366,2563,2701,2860,3112, 3438,3785,4155,4605,5191,5943,6838,7813,8764,9575, 10135,10325,10062,9382,8450,7434,6424,5476,4687,4240, 4303,4889,5760,6595,7206,7569,7690,7532,7075,6380, 5553,4691,3875,3234,2925,2994,3300,3606,3743,3673, 3424,3040,2595,2183,1860,1591,1304,957,575,190, -199,-649,-1175,-1737,-2304,-2908,-3650,-4583,-5694,-6942, -8278,-9608,-10768,-11644,-12279,-12782,-13190,-13488,-13682,-13764, -13647,-13272,-12710,-12160,-11713,-11223,-10430,-9158,-7428,-5420, -3438,-1827,-841,-489,-526,-589,-408,61,712,1475, 2379,3415,4470,5361,5971,6242,6182,5851,5394,4958, 4629,4402,4204,3934,3520,2964,2356,1795,1268,659, -135,-1092,-2069,-2898,-3497,-3861,-4012,-3985,-3829,-3584, -3227,-2717,-2108,-1611,-1475,-1798,-2435,-3069,-3449,-3533, -3482,-3454,-3453,-3365,-3112,-2732,-2333,-2022,-1876,-1904, -2071,-2308,-2513,-2569,-2443,-2221,-2024,-1894,-1784,-1622, -1395,-1131,-848,-535,-170,244,661,1025,1313,1547, 1763,1979,2180,2359,2545,2764,2978,3114,3190,3372, 3858,4688,5698,6703,7653,8585,9465,10155,10496,10383, 9805,8830,7622,6428,5504,4985,4849,4992,5339,5889, 6594,7302,7829,8037,7854,7272,6370,5350,4491,3948, 3697,3641,3707,3819,3876,3807,3620,3371,3096,2789, 2476,2201,1968,1713,1377,979,587,215,-165,-536, -872,-1238,-1795,-2675,-3843,-5122,-6337,-7434,-8469,-9509, -10552,-11559,-12467,-13161,-13491,-13408,-13113,-12934,-13064,-13390, -13600,-13383,-12579,-11201,-9419,-7504,-5731,-4257,-3117,-2304, -1789,-1493,-1294,-1058,-668,-9,963,2185,3448,4499, 5189,5539,5680,5718,5700,5618,5446,5177,4839,4486, 4170,3922,3703,3397,2853,2007,995,53,-683,-1311, -2032,-2899,-3736,-4255,-4282,-3872,-3254,-2665,-2235,-1997, -1945,-2053,-2242,-2449,-2687,-3005,-3385,-3703,-3823,-3690, -3342,-2897,-2512,-2260,-2135,-2092,-2112,-2196,-2306,-2378, -2368,-2295,-2220,-2167,-2076,-1895,-1669,-1488,-1341,-1113, -714,-219,200,465,647,877,1203,1582,1937,2216, 2376,2408,2356,2343,2483,2755,3082,3466,4052,4959, 6133,7412,8646,9699,10390,10586,10302,9694,8903,7974, 6955,6005,5315,4994,5078,5561,6355,7244,7940,8265, 8185,7771,7101,6277,5470,4840,4453,4255,4156,4116, 4110,4090,3977,3737,3445,3221,3085,2954,2721,2372, 1956,1537,1165,915,818,792,645,203,-547,-1458, -2334,-3077,-3796,-4707,-5950,-7479,-9052,-10378,-11265,-11720, -11904,-12050,-12338,-12828,-13446,-14024,-14355,-14267,-13716,-12775, -11537,-10032,-8312,-6546,-5010,-3900,-3235,-2891,-2683,-2414, -1928,-1145,-114,1012,2078,2992,3785,4544,5273,5832, 6042,5862,5499,5244,5222,5310,5291,5064,4661,4179, 3707,3266,2802,2193,1334,235,-968,-2085,-2930,-3401, -3518,-3421,-3249,-3039,-2750,-2373,-2006,-1801,-1820,-2020, -2315,-2680,-3103,-3479,-3652,-3560,-3314,-3063,-2848,-2622, -2350,-2104,-1992,-2037,-2138,-2190,-2175,-2145,-2123,-2115, -2120,-2127,-2063,-1844,-1479,-1101,-842,-675,-492,-228, 103,484,903,1305,1619,1844,2050,2275,2452,2466, 2320,2138,2075,2249,2740,3587,4743,6047,7315,8444, 9411,10160,10582,10555,10068,9222,8164,7045,6046,5405, 5286,5655,6288,6969,7603,8114,8375,8266,7793,7116, 6417,5800,5311,4990,4811,4694,4541,4320,4078,3896, 3839,3882,3878,3649,3139,2500,1994,1797,1864,1975, 1915,1610,1139,625,196,-108,-356,-741,-1474,-2662, -4198,-5820,-7242,-8330,-9124,-9745,-10303,-10851,-11427,-12077, -12811,-13577,-14250,-14683,-14761,-14384,-13488,-12085,-10350,-8593, -7156,-6158,-5455,-4822,-4156,-3499,-2916,-2386,-1792,-992, 83,1364,2636,3674,4384,4813,5077,5266,5436,5596, 5686,5616,5377,5100,4932,4888,4837,4601,4110,3392, 2510,1487,372,-717,-1636,-2334,-2845,-3209,-3393,-3333, -3046,-2664,-2336,-2131,-2054,-2116,-2317,-2600,-2897,-3176, -3435,-3627,-3653,-3491,-3233,-3002,-2826,-2667,-2504,-2336, -2185,-2078,-2063,-2159,-2327,-2467,-2493,-2386,-2202,-2018, -1850,-1690,-1517,-1325,-1096,-822,-529,-253,13,339, 780,1289,1746,2044,2137,2035,1808,1538,1357,1391, 1714,2296,3078,4042,5205,6517,7853,9028,9863,10246, 10146,9626,8797,7810,6847,6099,5697,5673,5974,6494, 7103,7653,8001,8040,7773,7334,6900,6553,6215,5781, 5242,4709,4321,4151,4186,4322,4398,4267,3890,3373, 2888,2574,2450,2419,2337,2108,1743,1370,1114,1021, 1014,973,775,318,-456,-1533,-2786,-4061,-5271,-6405, -7452,-8368,-9089,-9657,-10227,-10971,-11960,-13117,-14243,-15065, -15388,-15189,-14581,-13692,-12617,-11414,-10152,-8899,-7738,-6757, -6002,-5470,-5038,-4510,-3723,-2679,-1542,-484,471,1416, 2387,3294,4039,4594,4967,5153,5148,5027,4934,4966, 5099,5240,5290,5186,4875,4348,3643,2806,1858,792, -330,-1379,-2218,-2790,-3111,-3232,-3188,-3015,-2766,-2504, -2305,-2238,-2345,-2608,-2931,-3203,-3375,-3483,-3574,-3649, -3683,-3640,-3498,-3246,-2919,-2588,-2351,-2271,-2328,-2428, -2480,-2488,-2507,-2549,-2556,-2479,-2326,-2128,-1902,-1675, -1498,-1397,-1328,-1186,-892,-428,150,744,1237,1564, 1729,1757,1657,1439,1170,947,865,1007,1441,2211, 3312,4672,6151,7560,8736,9560,9963,9913,9419,8577, 7583,6697,6137,5992,6200,6587,6966,7249,7450,7614, 7761,7853,7812,7537,6976,6217,5477,4982,4814,4851, 4892,4810,4589,4275,3928,3628,3431,3317,3190,2940, 2548,2088,1700,1500,1510,1634,1730,1714,1581,1328, 891,172,-884,-2192,-3550,-4742,-5652,-6314,-6866,-7474, -8281,-9366,-10663,-11971,-13087,-13969,-14678,-15183,-15320,-14951, -14119,-13018,-11830,-10667,-9614,-8733,-8015,-7364,-6663,-5891, -5076,-4244,-3380,-2470,-1495,-418,766,1961,3002,3764, 4237,4506,4661,4766,4869,5007,5191,5389,5572,5704, 5733,5565,5123,4400,3476,2455,1393,311,-738,-1650, -2314,-2689,-2810,-2733,-2536,-2336,-2236,-2276,-2390,-2485, -2550,-2654,-2856,-3132,-3408,-3621,-3740,-3735,-3614,-3408, -3168,-2917,-2680,-2465,-2295,-2187,-2175,-2270,-2438,-2597, -2641,-2521,-2288,-2046,-1873,-1785,-1749,-1733,-1692,-1565, -1296,-878,-356,184,688,1150,1551,1832,1919,1767, 1409,967,604,449,569,986,1734,2857,4314,5942, 7511,8803,9623,9851,9521,8856,8161,7636,7300,7059, 6839,6666,6640,6856,7293,7827,8281,8499,8409,8020, 7431,6813,6332,6048,5894,5729,5446,5060,4711,4522, 4494,4484,4351,4075,3733,3371,2981,2562,2186,1912, 1760,1743,1904,2246,2611,2705,2317,1469,367,-772, -1819,-2710,-3459,-4142,-4843,-5614,-6456,-7381,-8449,-9707, -11108,-12513,-13744,-14649,-15111,-15092,-14651,-13939,-13117,-12288, -11461,-10604,-9721,-8854,-8051,-7325,-6663,-6012,-5293,-4398, -3287,-2054,-830,328,1423,2418,3224,3779,4105,4295, 4455,4655,4919,5243,5609,5949,6179,6226,6075,5733, 5160,4304,3191,1950,734,-311,-1095,-1612,-1929,-2125, -2241,-2285,-2272,-2231,-2187,-2164,-2204,-2344,-2587,-2879, -3128,-3303,-3440,-3579,-3698,-3717,-3580,-3302,-2956,-2619, -2356,-2227,-2247,-2369,-2505,-2585,-2557,-2426,-2248,-2104, -2040,-2014,-1970,-1904,-1845,-1805,-1730,-1533,-1175,-661, -42,609,1191,1604,1801,1792,1629,1318,859,291, -217,-386,32,1102,2665,4400,6005,7285,8167,8699, 8960,9010,8869,8549,8081,7519,6953,6543,6486,6849, 7456,7991,8266,8321,8254,8108,7895,7650,7385,7053, 6612,6119,5693,5415,5246,5092,4905,4718,4599,4540, 4448,4173,3641,2915,2183,1678,1546,1787,2247,2717, 3021,3063,2807,2275,1540,691,-208,-1116,-1982,-2733, -3325,-3815,-4371,-5163,-6269,-7665,-9255,-10883,-12334,-13431, -14141,-14563,-14762,-14706,-14356,-13737,-12956,-12118,-11291,-10511, -9802,-9150,-8522,-7869,-7144,-6314,-5353,-4239,-2982,-1662, -396,735,1668,2381,2907,3331,3713,4043,4310,4578, 4928,5390,5906,6365,6641,6625,6254,5522,4519,3401, 2305,1295,370,-462,-1150,-1635,-1912,-2027,-2057,-2068, -2105,-2176,-2256,-2340,-2442,-2589,-2783,-3029,-3324,-3652, -3924,-4019,-3886,-3596,-3275,-3011,-2824,-2696,-2614,-2573, -2562,-2552,-2535,-2514,-2479,-2395,-2254,-2109,-2039,-2085, -2205,-2293,-2248,-2032,-1694,-1314,-930,-477,135,911, 1673,2142,2131,1656,875,-20,-794,-1160,-887,-14, 1188,2450,3681,4929,6181,7333,8248,8802,8919,8610, 8017,7385,6947,6803,6902,7101,7294,7470,7670,7910, 8145,8285,8252,8035,7717,7409,7139,6828,6389,5849, 5337,5003,4910,5012,5189,5282,5129,4645,3901,3092, 2408,1955,1757,1813,2095,2495,2874,3128,3218,3071, 2603,1808,820,-138,-879,-1356,-1679,-2034,-2568,-3342, -4371,-5641,-7091,-8623,-10139,-11551,-12775,-13741,-14395,-14715, -14716,-14454,-14000,-13411,-12728,-11996,-11288,-10683,-10190,-9732, -9170,-8407,-7436,-6319,-5119,-3870,-2620,-1427,-326,684, 1570,2245,2679,2951,3193,3522,4018,4686,5422,6071, 6513,6722,6693,6384,5785,4941,3947,2884,1816,813, -34,-661,-1074,-1363,-1623,-1876,-2057,-2123,-2105,-2074, -2098,-2222,-2469,-2835,-3237,-3564,-3761,-3838,-3838,-3776, -3666,-3518,-3316,-3067,-2833,-2727,-2778,-2864,-2817,-2611, -2386,-2283,-2303,-2342,-2345,-2330,-2308,-2271,-2231,-2249, -2333,-2374,-2177,-1592,-639,473,1443,1992,2008,1554, 837,83,-508,-855,-968,-875,-516,232,1422,2952, 4597,6075,7163,7795,8057,8096,7989,7753,7427,7121, 6953,6966,7134,7398,7679,7889,7991,8029,8105,8240, 8354,8305,7999,7457,6790,6139,5624,5357,5373,5575, 5760,5754,5499,5051,4475,3818,3123,2463,1955,1712, 1811,2225,2812,3334,3583,3475,3046,2402,1665,970, 406,-28,-399,-775,-1197,-1729,-2459,-3465,-4739,-6202, -7750,-9291,-10751,-12061,-13147,-13947,-14427,-14565,-14384,-13965, -13446,-12929,-12457,-12035,-11628,-11178,-10618,-9935,-9154,-8299, -7328,-6171,-4831,-3407,-2043,-867,71,792,1345,1775, 2166,2628,3222,3902,4602,5307,6012,6626,7024,7122, 6896,6330,5465,4449,3452,2532,1668,850,126,-485, -1002,-1391,-1577,-1561,-1488,-1527,-1725,-1973,-2175,-2364, -2639,-3018,-3402,-3666,-3772,-3755,-3654,-3511,-3372,-3276, -3230,-3184,-3057,-2817,-2545,-2377,-2369,-2457,-2524,-2472, -2273,-1979,-1745,-1756,-2076,-2576,-2996,-3098,-2751,-1967, -932,70,827,1303,1577,1686,1563,1142,450,-363, -1073,-1480,-1438,-887,112,1403,2810,4202,5506,6622, 7411,7792,7819,7650,7455,7333,7313,7380,7487,7565, 7588,7606,7723,8005,8423,8838,9084,9027,8650,8061, 7446,6921,6523,6247,6103,6101,6194,6292,6281,6084, 5631,4900,3966,3037,2365,2088,2174,2497,2922,3337, 3639,3734,3578,3192,2644,2049,1517,1103,788,509, 208,-167,-683,-1414,-2392,-3581,-4934,-6449,-8112,-9812, -11343,-12509,-13255,-13663,-13845,-13866,-13741,-13502,-13184,-12824, -12436,-12051,-11683,-11310,-10848,-10190,-9293,-8156,-6832,-5418, -4046,-2825,-1761,-830,-39,591,1090,1545,2073,2717, 3466,4316,5250,6169,6874,7203,7164,6902,6534,6029, 5301,4346,3284,2263,1364,607,3,-448,-764,-988, -1145,-1229,-1265,-1335,-1532,-1877,-2317,-2762,-3116,-3303, -3336,-3328,-3402,-3563,-3715,-3760,-3646,-3379,-3027,-2723, -2608,-2718,-2927,-2998,-2761,-2274,-1758,-1466,-1525,-1890, -2408,-2881,-3147,-3128,-2880,-2471,-1932,-1222,-349,580, 1365,1811,1841,1492,872,105,-680,-1337,-1726,-1731, -1288,-393,879,2375,3863,5127,6029,6555,6820,7007, 7220,7442,7565,7531,7388,7229,7164,7266,7575,8027, 8495,8853,9060,9105,8985,8694,8236,7660,7068,6601, 6382,6444,6685,6927,6998,6799,6310,5587,4715,3820, 3068,2597,2446,2558,2827,3174,3502,3693,3650,3389, 3021,2655,2309,1953,1591,1256,977,734,490,163, -377,-1268,-2528,-4055,-5699,-7361,-8956,-10386,-11559,-12454, -13118,-13537,-13676,-13567,-13329,-13111,-12972,-12879,-12762,-12585, -12299,-11821,-11059,-10019,-8828,-7606,-6359,-5035,-3681,-2475, -1569,-942,-454,36,631,1371,2251,3192,4116,4983, 5773,6462,6990,7284,7298,7020,6470,5703,4827,3928, 3024,2105,1199,428,-95,-348,-424,-450,-533,-747, -1123,-1602,-2043,-2316,-2421,-2489,-2672,-3025,-3450,-3777, -3863,-3679,-3334,-3024,-2933,-3097,-3364,-3501,-3348,-2945, -2451,-2022,-1737,-1618,-1647,-1792,-2043,-2405,-2829,-3177, -3299,-3127,-2675,-1984,-1104,-149,708,1343,1728,1847, 1628,1015,93,-903,-1706,-2095,-1956,-1297,-265,927, 2098,3158,4109,4976,5770,6462,6978,7253,7287,7179, 7055,7010,7061,7178,7354,7641,8082,8614,9082,9349, 9366,9147,8703,8101,7497,7073,6921,6993,7175,7371, 7488,7417,7073,6435,5589,4683,3870,3278,2977,2924, 3000,3115,3245,3395,3529,3575,3469,3229,2894,2490, 2063,1725,1576,1587,1594,1412,988,347,-523,-1685, -3127,-4729,-6354,-7951,-9498,-10892,-11959,-12612,-12930,-13065, -13143,-13225,-13323,-13414,-13448,-13398,-13283,-13090,-12737,-12107, -11147,-9902,-8501,-7088,-5784,-4668,-3758,-2980,-2237,-1482, -747,-55,643,1454,2413,3454,4476,5404,6188,6778, 7132,7252,7160,6863,6330,5507,4424,3238,2178,1400, 922,672,498,242,-172,-670,-1067,-1252,-1287,-1354, -1627,-2136,-2765,-3304,-3578,-3547,-3361,-3215,-3216,-3335, -3509,-3691,-3804,-3772,-3575,-3270,-2915,-2523,-2107,-1741, -1526,-1539,-1800,-2252,-2757,-3180,-3425,-3470,-3305,-2903, -2262,-1409,-401,649,1534,2011,1945,1372,471,-515, -1325,-1780,-1876,-1711,-1338,-726,156,1233,2366,3454, 4451,5307,5972,6431,6711,6841,6841,6748,6647,6627, 6773,7133,7682,8320,8895,9268,9381,9252,8922,8438, 7886,7426,7214,7294,7560,7831,7966,7900,7600,7044, 6288,5491,4798,4241,3748,3309,3020,2973,3127,3339, 3501,3572,3535,3345,3012,2629,2317,2133,2051,2021, 1996,1924,1765,1498,1069,359,-738,-2218,-3928,-5666, -7288,-8727,-9949,-10954,-11736,-12308,-12687,-12904,-13015,-13132, -13354,-13699,-14052,-14209,-14044,-13551,-12782,-11796,-10647,-9423, -8208,-7050,-5955,-4950,-4075,-3334,-2671,-1995,-1235,-358, 640,1693,2690,3580,4423,5295,6188,6965,7457,7514, 7061,6172,5099,4146,3454,2923,2352,1658,908,266, -141,-298,-314,-352,-552,-970,-1558,-2188,-2700,-3011, -3149,-3207,-3250,-3296,-3368,-3498,-3684,-3890,-4095,-4255, -4278,-4064,-3630,-3082,-2550,-2116,-1840,-1775,-1909,-2157, -2456,-2830,-3314,-3831,-4169,-4109,-3542,-2543,-1335,-172, 736,1275,1420,1221,761,126,-592,-1280,-1820,-2117, -2118,-1819,-1236,-423,531,1545,2585,3627,4607,5397, 5892,6097,6126,6075,5987,5930,6035,6408,7015,7714, 8373,8912,9243,9250,8896,8334,7823,7541,7503,7623, 7815,8000,8108,8078,7889,7549,7062,6444,5744,5016, 4318,3727,3339,3205,3266,3388,3451,3421,3329,3210, 3063,2873,2645,2408,2196,2054,2031,2158,2366,2483, 2310,1770,917,-170,-1481,-3007,-4657,-6310,-7857,-9209, -10259,-10969,-11419,-11773,-12148,-12586,-13091,-13633,-14119,-14449, -14567,-14458,-14103,-13480,-12586,-11470,-10232,-8984,-7848,-6891, -6114,-5411,-4634,-3697,-2662,-1709,-951,-322,386,1372, 2667,4098,5411,6395,6938,7071,6937,6683,6362,5908, 5251,4398,3436,2489,1692,1168,923,819,679,419, 63,-370,-879,-1447,-1989,-2417,-2706,-2885,-2964,-2954, -2932,-3032,-3337,-3800,-4245,-4499,-4489,-4268,-3949,-3606, -3244,-2820,-2328,-1833,-1495,-1472,-1835,-2503,-3288,-3988, -4436,-4488,-4078,-3287,-2303,-1295,-337,504,1100,1313, 1129,676,102,-517,-1148,-1699,-2051,-2141,-1984,-1606, -985,-94,1009,2188,3286,4216,4941,5431,5661,5644, 5475,5332,5399,5790,6483,7323,8108,8692,9005,9044, 8849,8518,8197,7998,7938,7963,8027,8129,8295,8472, 8547,8402,8005,7402,6664,5867,5149,4611,4251,3967, 3710,3530,3479,3529,3582,3565,3427,3155,2803,2494, 2334,2325,2419,2562,2717,2844,2888,2800,2516,1918, 911,-482,-2137,-3857,-5474,-6882,-8046,-8968,-9695,-10315, -10916,-11532,-12133,-12705,-13281,-13904,-14527,-14969,-15014,-14576, -13738,-12707,-11708,-10844,-10055,-9187,-8142,-6969,-5842,-4913, -4222,-3685,-3150,-2443,-1442,-144,1304,2659,3794,4735, 5581,6344,6943,7287,7325,7038,6430,5574,4633,3772, 3073,2527,2093,1757,1523,1344,1121,748,183,-523, -1230,-1765,-2032,-2086,-2092,-2204,-2447,-2757,-3070,-3383, -3698,-3975,-4189,-4349,-4447,-4378,-3992,-3281,-2441,-1734, -1308,-1194,-1405,-1947,-2728,-3534,-4149,-4446,-4382,-3962, -3225,-2250,-1190,-220,514,957,1126,1062,798,347, -250,-907,-1500,-1925,-2132,-2116,-1867,-1326,-454,697, 1965,3148,4101,4735,4999,4934,4729,4645,4850,5339, 6018,6789,7557,8188,8591,8779,8833,8779,8606,8348, 8115,8016,8095,8348,8692,8981,9075,8927,8596,8152, 7623,7024,6363,5679,5036,4517,4180,4030,3998,3995, 3927,3745,3484,3226,3017,2829,2627,2460,2395,2462, 2641,2918,3268,3580,3659,3343,2583,1456,90,-1373, -2843,-4287,-5691,-6994,-8068,-8814,-9299,-9762,-10435,-11381, -12466,-13493,-14293,-14743,-14823,-14642,-14371,-14086,-13694,-13031, -12043,-10826,-9567,-8436,-7542,-6877,-6334,-5758,-5025,-4093, -3020,-1897,-778,350,1530,2766,4029,5232,6241,6936, 7286,7340,7145,6682,5927,4989,4095,3440,3041,2802, 2615,2396,2059,1525,840,174,-319,-663,-975,-1327, -1669,-1936,-2117,-2248,-2390,-2610,-2961,-3450,-4010,-4523, -4847,-4852,-4489,-3826,-3015,-2228,-1589,-1195,-1125,-1427, -2082,-2950,-3773,-4310,-4478,-4329,-3907,-3207,-2284,-1298, -416,280,775,1036,1038,824,460,-11,-590,-1255, -1907,-2405,-2596,-2358,-1660,-579,711,1974,2982,3622, 3918,3994,4012,4102,4332,4709,5212,5841,6586,7377, 8082,8566,8768,8714,8498,8251,8103,8119,8285,8533, 8769,8968,9154,9320,9355,9135,8649,7996,7274,6556, 5904,5386,5025,4784,4591,4393,4181,3983,3812,3664, 3484,3196,2781,2359,2133,2238,2616,3073,3462,3742, 3905,3907,3688,3185,2333,1089,-498,-2220,-3770,-4934, -5745,-6402,-7129,-8041,-9119,-10239,-11276,-12138,-12836,-13452, -14067,-14656,-15089,-15218,-14956,-14308,-13350,-12246,-11206,-10357, -9643,-8915,-8113,-7309,-6573,-5863,-5068,-4122,-3054,-1915, -708,589,1944,3283,4566,5753,6729,7323,7409,7027, 6369,5669,5080,4625,4243,3872,3479,3045,2581,2127, 1698,1266,786,250,-311,-861,-1315,-1575,-1633,-1625, -1734,-2012,-2422,-2950,-3607,-4313,-4892,-5174,-5087,-4629, -3868,-2958,-2108,-1507,-1244,-1334,-1739,-2389,-3163,-3896, -4427,-4642,-4485,-3984,-3235,-2368,-1507,-740,-95,442, 860,1108,1119,839,250,-603,-1572,-2410,-2863,-2808, -2292,-1458,-456,573,1509,2277,2850,3230,3428,3471, 3485,3660,4142,4899,5774,6609,7311,7830,8156,8319, 8361,8315,8210,8111,8104,8238,8503,8861,9258,9622, 9828,9757,9374,8787,8164,7606,7079,6511,5909,5378, 5014,4835,4778,4744,4622,4314,3809,3236,2776,2529, 2450,2436,2459,2589,2904,3421,4060,4631,4850,4508, 3624,2425,1162,-54,-1199,-2250,-3211,-4194,-5306,-6496, -7577,-8427,-9142,-9935,-10935,-12082,-13200,-14147,-14831,-15190, -15193,-14882,-14355,-13697,-12931,-12071,-11190,-10387,-9694,-9041, -8339,-7552,-6710,-5858,-5022,-4168,-3206,-2014,-534,1143, 2819,4314,5516,6349,6757,6799,6652,6448,6182,5780, 5253,4708,4239,3864,3536,3212,2832,2360,1796,1168, 531,-44,-503,-801,-945,-979,-997,-1119,-1463,-2073, -2878,-3735,-4480,-4986,-5161,-4971,-4454,-3700,-2831,-2012, -1426,-1198,-1353,-1828,-2525,-3307,-3994,-4406,-4462,-4225, -3825,-3335,-2737,-2016,-1186,-302,554,1239,1565,1411, 818,-29,-928,-1728,-2327,-2643,-2627,-2264,-1570,-617, 418,1306,1902,2219,2382,2512,2676,2924,3333,3939, 4697,5484,6208,6866,7468,7953,8213,8192,7985,7784, 7748,7934,8312,8783,9226,9541,9715,9792,9804,9688, 9352,8762,7989,7169,6470,6026,5848,5782,5621,5291, 4905,4581,4310,3992,3571,3061,2536,2086,1843,1946, 2471,3321,4200,4772,4879,4601,4105,3504,2816,2013, 1071,-27,-1251,-2499,-3624,-4562,-5372,-6177,-7078,-8105, -9228,-10400,-11571,-12699,-13727,-14570,-15098,-15222,-14979,-14522, -13986,-13406,-12763,-12078,-11360,-10588,-9747,-8919,-8223,-7693, -7214,-6596,-5678,-4417,-2881,-1218,437,1986,3361,4516, 5428,6090,6477,6578,6442,6153,5778,5365,4966,4615, 4305,3996,3659,3261,2746,2081,1328,641,142,-152, -288,-327,-335,-421,-708,-1267,-2046,-2926,-3793,-4554, -5094,-5269,-5024,-4417,-3578,-2674,-1902,-1452,-1420,-1739, -2247,-2778,-3256,-3656,-3997,-4278,-4450,-4392,-3984,-3207, -2180,-1104,-135,651,1214,1467,1321,761,-78,-992, -1804,-2397,-2671,-2539,-2014,-1253,-466,212,763,1204, 1539,1798,2027,2261,2521,2872,3421,4218,5168,6086, 6828,7324,7560,7590,7560,7616,7778,7944,8043,8162, 8456,8980,9609,10115,10331,10228,9872,9342,8727,8142, 7672,7291,6893,6439,6021,5776,5719,5735,5635,5252, 4518,3562,2671,2108,1987,2249,2763,3370,3922,4332, 4615,4818,4914,4787,4339,3599,2689,1716,723,-299, -1330,-2327,-3243,-4098,-4952,-5887,-6944,-8141,-9463,-10844, -12141,-13188,-13921,-14378,-14629,-14724,-14668,-14428,-13951,-13233, -12360,-11489,-10739,-10164,-9738,-9371,-8933,-8309,-7455,-6392, -5150,-3741,-2176,-519,1098,2557,3810,4865,5685,6196, 6384,6337,6170,5932,5656,5401,5201,5000,4693,4228, 3625,2940,2228,1571,1034,660,449,368,353,312, 142,-229,-845,-1708,-2757,-3827,-4689,-5138,-5075,-4570, -3856,-3183,-2665,-2254,-1909,-1689,-1698,-1943,-2361,-2894, -3513,-4127,-4590,-4771,-4620,-4143,-3375,-2382,-1276,-200, 710,1324,1508,1198,484,-399,-1220,-1842,-2214,-2318, -2165,-1816,-1348,-801,-196,421,937,1210,1232,1190, 1358,1862,2600,3380,4111,4810,5485,6103,6646,7093, 7371,7436,7335,7205,7197,7422,7914,8578,9226,9665, 9861,9912,9912,9845,9639,9233,8624,7877,7143,6612, 6429,6565,6796,6827,6480,5785,4925,4079,3352,2788, 2420,2292,2409,2721,3176,3713,4253,4698,4972,5034, 4881,4510,3913,3123,2193,1197,221,-650,-1387,-2061, -2831,-3809,-4999,-6316,-7674,-8988,-10198,-11286,-12303,-13291, -14198,-14861,-15153,-15078,-14732,-14190,-13509,-12788,-12148,-11657, -11286,-10962,-10613,-10168,-9556,-8741,-7723,-6513,-5145,-3643, -2027,-348,1276,2698,3827,4650,5174,5434,5513,5538, 5568,5575,5506,5351,5093,4673,4066,3378,2730,2137, 1541,971,587,509,670,853,844,506,-193,-1178, -2283,-3319,-4151,-4710,-4979,-4962,-4720,-4335,-3864,-3329, -2771,-2282,-1987,-1975,-2234,-2682,-3252,-3904,-4579,-5153, -5467,-5405,-4928,-4061,-2877,-1556,-370,413,701,610, 310,-123,-699,-1397,-2091,-2598,-2781,-2590,-2108,-1516, -988,-610,-371,-210,-53,180,513,911,1324,1769, 2325,3073,3984,4918,5685,6155,6333,6324,6278,6327, 6551,6924,7319,7640,7917,8284,8829,9476,10010,10207, 9972,9379,8606,7869,7343,7094,7058,7107,7134,7051, 6796,6333,5688,4933,4132,3350,2694,2278,2153,2270, 2549,2949,3445,3992,4516,4924,5128,5033,4577,3816, 2947,2156,1515,947,348,-358,-1207,-2201,-3295,-4439, -5585,-6734,-7930,-9205,-10542,-11863,-13063,-14054,-14754,-15094, -15063,-14751,-14288,-13767,-13236,-12765,-12411,-12133,-11838,-11468, -11039,-10546,-9886,-8948,-7746,-6363,-4825,-3127,-1352,317, 1695,2742,3535,4177,4715,5141,5427,5567,5615,5628, 5604,5456,5086,4455,3624,2742,1976,1455,1217,1250, 1458,1652,1622,1253,607,-184,-1050,-1980,-2918,-3733, -4312,-4651,-4782,-4693,-4351,-3816,-3236,-2740,-2340,-2012, -1800,-1830,-2219,-2979,-3978,-4943,-5580,-5728,-5416,-4766, -3885,-2850,-1758,-737,81,588,712,428,-202,-996, -1710,-2141,-2251,-2156,-1986,-1798,-1579,-1312,-1003,-666, -342,-99,15,61,203,613,1350,2309,3272,4056, 4608,4997,5350,5746,6146,6437,6547,6527,6527,6700, 7135,7823,8661,9474,10056,10280,10150,9768,9256,8714, 8235,7897,7730,7701,7742,7764,7670,7369,6825,6091, 5288,4523,3843,3234,2704,2347,2273,2533,3077,3796, 4524,5081,5332,5267,4980,4573,4095,3580,3068,2554, 1975,1277,492,-325,-1165,-2097,-3138,-4232,-5373,-6644, -8100,-9652,-11119,-12368,-13354,-14071,-14482,-14583,-14430,-14123, -13760,-13402,-13049,-12687,-12349,-12083,-11906,-11737,-11432,-10848, -9892,-8590,-7080,-5512,-3939,-2348,-777,657,1858,2817, 3583,4178,4622,5011,5471,5983,6354,6378,5990,5287, 4426,3552,2802,2301,2099,2121,2236,2315,2276,2089, 1745,1213,458,-508,-1560,-2511,-3228,-3713,-4056,-4320, -4459,-4359,-3956,-3304,-2542,-1838,-1367,-1283,-1643,-2344, -3192,-4006,-4706,-5256,-5569,-5518,-5001,-4063,-2857,-1603, -526,180,428,287,-82,-507,-895,-1231,-1549,-1851, -2061,-2065,-1795,-1329,-882,-653,-663,-780,-835,-718, -371,181,831,1452,2015,2608,3304,4084,4842,5460, 5855,6002,5960,5868,5881,6120,6623,7322,8097,8849, 9504,9976,10170,10049,9685,9221,8796,8512,8393,8392, 8406,8342,8190,7983,7725,7352,6796,6053,5168,4227, 3339,2672,2396,2560,3028,3615,4193,4707,5090,5277, 5263,5112,4897,4636,4292,3825,3236,2589,1947,1319, 673,-26,-809,-1723,-2809,-4083,-5527,-7100,-8698,-10159, -11370,-12350,-13176,-13829,-14191,-14199,-13940,-13569,-13198,-12885, -12681,-12615,-12639,-12623,-12431,-12010,-11377,-10548,-9487,-8145, -6552,-4815,-3108,-1586,-317,727,1627,2447,3256,4114, 5030,5887,6478,6650,6409,5892,5239,4521,3794,3150, 2710,2548,2630,2817,2959,2944,2694,2185,1472,681, -75,-812,-1614,-2504,-3388,-4105,-4506,-4508,-4131,-3516, -2845,-2240,-1747,-1409,-1310,-1515,-2035,-2834,-3827,-4833, -5578,-5808,-5447,-4635,-3627,-2627,-1738,-996,-393,46, 256,148,-273,-883,-1465,-1819,-1857,-1643,-1353,-1150, -1092,-1127,-1179,-1182,-1084,-871,-605,-363,-138,180, 700,1432,2304,3218,4041,4661,5040,5235,5325,5342, 5339,5444,5809,6475,7322,8172,8888,9400,9677,9722, 9601,9425,9270,9129,8951,8733,8552,8497,8569,8659, 8643,8441,8005,7310,6378,5316,4300,3505,3033,2901, 3055,3392,3798,4212,4625,5007,5279,5380,5346,5253, 5082,4739,4204,3586,3031,2595,2210,1757,1156,379, -584,-1739,-3062,-4486,-5954,-7444,-8952,-10426,-11733,-12726, -13326,-13578,-13606,-13520,-13379,-13198,-13019,-12909,-12899,-12958, -13013,-12990,-12819,-12406,-11633,-10423,-8849,-7132,-5518,-4123, -2915,-1819,-767,312,1473,2686,3846,4859,5681,6270, 6546,6433,5937,5169,4333,3650,3262,3165,3226,3291, 3274,3173,3025,2836,2569,2158,1542,690,-356,-1482, -2523,-3331,-3842,-4100,-4168,-4038,-3661,-3020,-2215,-1448, -962,-946,-1446,-2335,-3360,-4266,-4912,-5287,-5431,-5310, -4867,-4098,-3104,-2024,-1022,-301,-12,-150,-531,-927, -1207,-1347,-1381,-1361,-1363,-1421,-1476,-1441,-1313,-1182, -1137,-1165,-1188,-1143,-1013,-768,-350,286,1111,2024, 2907,3673,4238,4532,4563,4458,4430,4643,5126,5788, 6505,7192,7817,8364,8820,9172,9397,9466,9391,9226, 9012,8769,8569,8542,8747,9052,9244,9172,8829,8253, 7461,6491,5452,4520,3837,3444,3284,3282,3406,3657, 4035,4489,4941,5312,5529,5551,5367,5013,4579,4185, 3890,3647,3337,2888,2338,1753,1111,319,-699,-1949, -3386,-4957,-6607,-8236,-9714,-10935,-11878,-12587,-13097,-13394, -13459,-13327,-13109,-12935,-12919,-13121,-13496,-13865,-14008,-13784, -13161,-12187,-10958,-9604,-8237,-6899,-5593,-4343,-3193,-2125, -1022,246,1713,3225,4552,5504,6011,6095,5824,5338, 4809,4361,4012,3704,3403,3172,3089,3166,3334,3472, 3449,3152,2548,1719,814,-79,-1001,-2009,-3040,-3914, -4442,-4507,-4103,-3352,-2499,-1801,-1401,-1299,-1442,-1809, -2388,-3144,-4002,-4862,-5551,-5862,-5652,-4939,-3922,-2878, -2023,-1417,-1020,-789,-714,-774,-909,-1062,-1233,-1415, -1550,-1571,-1486,-1374,-1306,-1284,-1286,-1319,-1412,-1558, -1679,-1668,-1413,-845,18,1022,1949,2657,3133,3436, 3604,3673,3756,3991,4415,4948,5498,6048,6648,7331, 8031,8623,9015,9195,9201,9080,8881,8690,8595,8667, 8907,9232,9509,9602,9446,9044,8423,7621,6726,5860, 5101,4444,3857,3390,3176,3304,3714,4234,4706,5068, 5319,5448,5432,5298,5096,4856,4576,4266,3951,3647, 3364,3073,2710,2169,1367,287,-1026,-2481,-3997,-5538, -7093,-8627,-10072,-11323,-12250,-12758,-12862,-12732,-12607,-12654, -12892,-13251,-13643,-14019,-14315,-14419,-14221,-13671,-12812,-11717, -10457,-9161,-7998,-7008,-6059,-4964,-3637,-2102,-437,1227, 2696,3819,4587,5108,5450,5576,5425,5000,4417,3841, 3419,3251,3318,3490,3614,3620,3552,3472,3369,3126, 2599,1712,502,-879,-2216,-3276,-3907,-4084,-3933,-3615, -3201,-2679,-2061,-1484,-1143,-1172,-1610,-2401,-3409,-4427, -5215,-5616,-5610,-5275,-4720,-4038,-3302,-2577,-1920,-1405, -1092,-989,-1021,-1089,-1165,-1296,-1485,-1638,-1637,-1460, -1225,-1070,-1079,-1249,-1532,-1873,-2178,-2310,-2134,-1593, -788,80,844,1459,1963,2390,2729,2970,3166,3379, 3652,3984,4387,4892,5536,6314,7133,7841,8355,8668, 8806,8762,8578,8391,8380,8611,8991,9352,9583,9670, 9641,9501,9220,8767,8119,7292,6357,5421,4589,3955, 3589,3510,3664,3941,4265,4597,4923,5226,5456,5548, 5460,5216,4897,4589,4364,4254,4223,4150,3885,3389, 2751,2054,1254,227,-1090,-2656,-4391,-6195,-7915,-9356, -10427,-11168,-11664,-11962,-12116,-12213,-12377,-12700,-13195,-13809, -14418,-14849,-14927,-14571,-13844,-12928,-12024,-11236,-10510,-9697, -8677,-7410,-5948,-4411,-2902,-1452,12,1537,3007,4199, 4955,5281,5271,5033,4681,4340,4088,3882,3656,3427, 3316,3439,3773,4165,4410,4341,3866,3009,1892,669, -541,-1665,-2634,-3378,-3826,-3928,-3661,-3048,-2229,-1454, -985,-941,-1267,-1835,-2558,-3397,-4257,-4956,-5329,-5337, -5077,-4665,-4151,-3533,-2844,-2173,-1630,-1276,-1091,-1056, -1160,-1377,-1604,-1697,-1565,-1259,-925,-737,-787,-1057, -1473,-1933,-2320,-2502,-2395,-2012,-1463,-852,-222,424, 1060,1605,2003,2274,2509,2749,2969,3167,3421,3855, 4531,5399,6325,7140,7727,8054,8177,8198,8211,8279, 8419,8622,8874,9146,9411,9659,9887,10050,10046,9788, 9273,8558,7695,6747,5844,5111,4568,4164,3883,3806, 3993,4388,4857,5274,5537,5589,5475,5303,5176,5109, 5049,4937,4772,4595,4451,4331,4162,3856,3329,2530, 1411,-12,-1644,-3361,-5075,-6724,-8206,-9398,-10207,-10649, -10845,-10969,-11220,-11754,-12555,-13425,-14096,-14429,-14469,-14338, -14116,-13806,-13397,-12876,-12211,-11388,-10443,-9434,-8377,-7193, -5793,-4149,-2358,-578,1021,2321,3296,4020,4575,4964, 5115,4970,4566,4032,3537,3233,3215,3493,3961,4423, 4691,4709,4522,4166,3575,2650,1388,-42,-1401,-2493, -3234,-3594,-3560,-3157,-2499,-1788,-1228,-946,-981,-1309, -1874,-2594,-3379,-4096,-4627,-4928,-5052,-5045,-4857,-4404, -3706,-2914,-2213,-1706,-1413,-1346,-1475,-1693,-1829,-1753, -1469,-1104,-804,-665,-706,-914,-1256,-1681,-2104,-2421, -2536,-2416,-2103,-1677,-1179,-603,39,680,1230,1632, 1878,1986,2034,2152,2451,2974,3680,4483,5293,6025, 6624,7084,7421,7659,7828,7963,8085,8218,8397,8660, 9017,9427,9821,10106,10208,10099,9804,9364,8808,8122, 7300,6397,5538,4852,4415,4241,4279,4450,4677,4901, 5103,5267,5395,5471,5478,5397,5242,5066,4920,4839, 4821,4850,4867,4783,4516,4034,3328,2337,996,-683, -2551,-4373,-5942,-7163,-8050,-8692,-9232,-9815,-10486,-11219, -11937,-12594,-13170,-13665,-14080,-14397,-14549,-14477,-14193,-13792, -13353,-12899,-12392,-11750,-10881,-9720,-8294,-6709,-5078,-3481, -1949,-475,959,2312,3456,4241,4600,4606,4390,4080, 3766,3519,3397,3443,3661,4019,4431,4793,5007,4987, 4657,3962,2909,1606,230,-1048,-2096,-2805,-3108,-3012, -2624,-2108,-1628,-1301,-1172,-1250,-1528,-1980,-2547,-3161, -3792,-4399,-4900,-5183,-5167,-4843,-4281,-3611,-2981,-2501, -2207,-2069,-2041,-2053,-2026,-1883,-1616,-1285,-988,-800, -756,-868,-1111,-1431,-1768,-2075,-2329,-2511,-2557,-2400, -2004,-1403,-696,-8,549,931,1133,1208,1252,1376, 1654,2111,2717,3414,4135,4841,5513,6147,6692,7082, 7291,7377,7446,7588,7848,8207,8622,9036,9419,9762, 10063,10289,10371,10228,9820,9179,8379,7511,6663,5915, 5337,4944,4700,4563,4545,4673,4919,5188,5389,5487, 5489,5428,5334,5233,5132,5031,4950,4934,5025,5221, 5429,5479,5165,4370,3107,1511,-209,-1863,-3337,-4612, -5734,-6749,-7663,-8472,-9206,-9922,-10669,-11446,-12227,-12972, -13607,-14048,-14264,-14300,-14267,-14246,-14243,-14176,-13912,-13384, -12633,-11749,-10742,-9557,-8165,-6617,-4970,-3257,-1535,91, 1510,2629,3397,3827,3981,3922,3706,3413,3161,3067, 3176,3472,3917,4448,4961,5313,5350,4986,4211,3085, 1727,313,-954,-1918,-2502,-2709,-2620,-2363,-2053,-1748, -1475,-1281,-1253,-1446,-1862,-2466,-3205,-3975,-4642,-5081, -5227,-5088,-4719,-4215,-3690,-3254,-2964,-2810,-2725,-2620, -2441,-2193,-1905,-1616,-1356,-1146,-1001,-935,-963,-1119, -1420,-1836,-2293,-2684,-2925,-2939,-2673,-2140,-1467,-827, -323,31,271,436,565,696,865,1113,1496,2060, 2803,3638,4451,5149,5687,6079,6356,6566,6751,6956, 7198,7466,7762,8131,8595,9139,9692,10160,10439,10449, 10197,9762,9204,8546,7803,7010,6243,5588,5104,4812, 4697,4703,4775,4888,5031,5201,5383,5539,5578,5417, 5079,4719,4536,4644,5015,5519,5975,6207,6088,5578, 4695,3511,2140,685,-788,-2249,-3621,-4808,-5759,-6547, -7343,-8265,-9297,-10322,-11230,-11982,-12598,-13100,-13513,-13878, -14212,-14505,-14700,-14756,-14648,-14397,-14034,-13554,-12912,-12043, -10919,-9543,-7958,-6232,-4442,-2674,-1013,467,1690,2605, 3195,3474,3476,3267,2980,2763,2721,2898,3303,3910, 4640,5323,5743,5734,5250,4367,3210,1909,623,-502, -1382,-1998,-2349,-2436,-2289,-1986,-1622,-1286,-1062,-1046, -1306,-1837,-2562,-3363,-4105,-4662,-4945,-4950,-4754,-4463, -4171,-3911,-3685,-3478,-3286,-3088,-2861,-2615,-2370,-2130, -1865,-1558,-1219,-923,-751,-789,-1068,-1541,-2086,-2565, -2867,-2950,-2837,-2569,-2181,-1698,-1160,-651,-258,-26, 73,109,156,294,590,1093,1781,2559,3318,4002, 4616,5172,5655,6035,6283,6408,6481,6624,6914,7366, 7928,8552,9181,9736,10156,10421,10532,10455,10128,9548, 8804,8025,7312,6702,6169,5672,5209,4847,4676,4747, 5013,5370,5675,5814,5712,5390,4969,4638,4547,4729, 5098,5527,5943,6307,6554,6567,6220,5455,4314,2933, 1488,122,-1104,-2205,-3236,-4263,-5331,-6437,-7536,-8567, -9493,-10319,-11083,-11807,-12473,-13053,-13539,-13944,-14268,-14500, -14638,-14696,-14681,-14557,-14261,-13731,-12939,-11895,-10610,-9091, -7365,-5528,-3711,-2005,-446,909,1967,2669,3007,3013, 2784,2484,2304,2387,2779,3443,4261,5058,5660,5956, 5890,5451,4677,3657,2491,1277,126,-845,-1565,-2007, -2157,-2009,-1622,-1146,-771,-641,-801,-1237,-1881,-2618, -3311,-3856,-4219,-4425,-4499,-4467,-4384,-4269,-4103,-3869, -3606,-3382,-3237,-3137,-2998,-2747,-2354,-1865,-1377,-987, -766,-745,-919,-1250,-1676,-2130,-2545,-2853,-2996,-2943, -2694,-2261,-1722,-1201,-825,-629,-548,-488,-391,-238, -13,302,722,1271,1965,2766,3589,4333,4921,5313, 5531,5660,5795,5992,6260,6591,7009,7554,8239,9013, 9743,10291,10581,10610,10426,10077,9625,9129,8603,7989, 7236,6395,5623,5106,4927,5034,5286,5539,5700,5722, 5612,5399,5121,4830,4590,4501,4642,5031,5602,6237, 6778,7048,6932,6436,5655,4693,3619,2477,1320,173, -966,-2122,-3294,-4446,-5542,-6576,-7574,-8561,-9526,-10418, -11203,-11889,-12495,-13031,-13494,-13890,-14229,-14517,-14759,-14940, -15008,-14874,-14470,-13781,-12828,-11638,-10232,-8621,-6839,-4942, -3041,-1283,200,1298,1951,2197,2154,1990,1871,1926, 2230,2795,3547,4367,5118,5676,5978,5999,5721,5126, 4229,3096,1831,573,-520,-1299,-1686,-1704,-1445,-1037, -641,-426,-494,-820,-1304,-1849,-2392,-2917,-3403,-3832, -4159,-4338,-4355,-4245,-4084,-3933,-3822,-3759,-3716,-3645, -3467,-3151,-2725,-2255,-1791,-1361,-1004,-771,-697,-806, -1113,-1584,-2114,-2561,-2822,-2862,-2704,-2409,-2064,-1732, -1433,-1151,-897,-700,-597,-580,-580,-469,-155,366, 1014,1722,2465,3215,3907,4477,4907,5200,5371,5451, 5506,5646,5989,6597,7423,8299,9043,9575,9934,10200, 10424,10579,10588,10351,9825,9060,8183,7325,6588,6040, 5705,5569,5574,5674,5836,5984,6006,5815,5433,4981, 4611,4430,4495,4825,5385,6044,6641,7037,7183,7078, 6737,6183,5443,4548,3536,2442,1312,183,-935,-2061, -3203,-4337,-5444,-6525,-7583,-8604,-9546,-10378,-11095,-11719, -12272,-12785,-13291,-13814,-14313,-14732,-15018,-15146,-15099,-14865, -14418,-13706,-12692,-11352,-9712,-7828,-5806,-3812,-2030,-605, 403,996,1239,1273,1280,1409,1708,2157,2742,3442, 4212,4969,5629,6113,6333,6208,5680,4762,3522,2132, 837,-135,-703,-922,-908,-755,-545,-366,-297,-370, -588,-957,-1466,-2072,-2689,-3227,-3613,-3813,-3860,-3845, -3849,-3885,-3924,-3950,-3949,-3900,-3781,-3573,-3273,-2876, -2380,-1809,-1238,-781,-555,-622,-918,-1301,-1666,-1989, -2285,-2530,-2653,-2603,-2384,-2051,-1680,-1345,-1096,-956, -918,-935,-929,-830,-615,-298,101,605,1255,2070, 2975,3793,4353,4616,4676,4686,4771,5005,5419,5975, 6596,7210,7811,8433,9101,9786,10389,10797,10957,10877, 10575,10060,9359,8558,7752,7031,6476,6157,6078,6180, 6353,6472,6430,6170,5733,5235,4824,4602,4601,4803, 5169,5658,6207,6729,7136,7370,7394,7188,6756,6128, 5349,4459,3477,2431,1352,269,-818,-1935,-3102,-4307, -5499,-6622,-7641,-8551,-9357,-10087,-10782,-11470,-12135,-12749, -13310,-13829,-14309,-14727,-15062,-15293,-15370,-15200,-14681,-13741, -12364,-10606,-8605,-6551,-4626,-2954,-1612,-640,-9,382, 651,891,1137,1421,1794,2325,3060,3973,4957,5850, 6488,6731,6508,5842,4848,3685,2509,1449,598,-11, -379,-514,-440,-237,-34,46,-52,-355,-826,-1404, -1991,-2498,-2878,-3147,-3356,-3537,-3689,-3764,-3770,-3795, -3916,-4099,-4221,-4168,-3913,-3480,-2918,-2309,-1737,-1271, -947,-779,-780,-943,-1225,-1592,-1996,-2358,-2575,-2583, -2414,-2173,-1948,-1762,-1583,-1390,-1210,-1097,-1072,-1126, -1198,-1196,-988,-475,313,1218,2055,2715,3200,3543, 3798,4025,4264,4513,4769,5060,5438,5922,6506,7203, 7990,8811,9571,10208,10684,10961,10996,10746,10206,9435, 8559,7746,7129,6763,6632,6662,6745,6764,6649,6388, 6016,5580,5145,4791,4602,4623,4842,5210,5667,6164, 6657,7084,7385,7509,7414,7078,6530,5838,5067,4248, 3370,2417,1376,242,-959,-2191,-3413,-4590,-5695,-6700, -7613,-8477,-9310,-10118,-10875,-11559,-12156,-12698,-13242,-13852, -14508,-15155,-15714,-16075,-16092,-15622,-14629,-13187,-11426,-9503, -7588,-5828,-4280,-2943,-1832,-975,-383,-19,183,322, 544,994,1750,2770,3901,4959,5805,6358,6563,6377, 5825,5003,4011,2939,1867,939,296,-4,-27,94, 213,239,152,-24,-292,-673,-1173,-1736,-2268,-2686, -2965,-3123,-3212,-3284,-3400,-3613,-3912,-4216,-4401,-4397, -4222,-3935,-3565,-3096,-2532,-1926,-1377,-981,-808,-864, -1110,-1448,-1771,-2016,-2186,-2317,-2422,-2459,-2368,-2125, -1772,-1411,-1177,-1156,-1333,-1583,-1754,-1727,-1472,-1017, -425,236,906,1536,2108,2629,3096,3469,3736,3933, 4125,4353,4635,4994,5451,6022,6706,7502,8399,9341, 10218,10886,11219,11173,10781,10148,9394,8652,8031,7600, 7356,7271,7262,7241,7128,6888,6537,6113,5679,5288, 4988,4802,4759,4893,5217,5688,6227,6757,7202,7503, 7632,7588,7372,6992,6483,5887,5200,4399,3465,2415, 1285,112,-1065,-2232,-3381,-4504,-5600,-6654,-7653,-8575, -9379,-10052,-10613,-11131,-11707,-12428,-13316,-14311,-15290,-16096, -16568,-16571,-16061,-15113,-13844,-12349,-10670,-8862,-7036,-5332, -3861,-2688,-1850,-1337,-1068,-890,-625,-155,561,1480, 2502,3549,4572,5506,6220,6555,6432,5895,5072,4110, 3130,2222,1459,893,544,382,346,384,442,438, 266,-118,-654,-1220,-1706,-2067,-2324,-2518,-2695,-2890, -3125,-3396,-3677,-3949,-4208,-4448,-4602,-4578,-4314,-3818, -3158,-2471,-1899,-1519,-1305,-1188,-1128,-1157,-1315,-1607, -1980,-2340,-2585,-2634,-2469,-2143,-1784,-1528,-1458,-1543, -1707,-1871,-1993,-2030,-1931,-1677,-1289,-797,-219,412, 1047,1623,2111,2529,2902,3231,3514,3743,3916,4063, 4264,4608,5170,5969,6960,8052,9124,10042,10679,10951, 10845,10429,9824,9173,8601,8184,7922,7768,7664,7569, 7452,7281,7014,6639,6181,5701,5260,4911,4699,4656, 4812,5162,5644,6155,6612,6984,7270,7462,7537,7481, 7288,6956,6465,5810,5005,4080,3083,2059,1018,-70, -1232,-2450,-3689,-4923,-6126,-7211,-8064,-8663,-9119,-9602, -10238,-11078,-12110,-13266,-14429,-15469,-16284,-16807,-16979,-16758, -16139,-15117,-13706,-11952,-10007,-8101,-6437,-5101,-4066,-3289, -2727,-2321,-1984,-1605,-1088,-366,586,1738,2989,4175, 5135,5765,6030,5950,5575,4960,4160,3256,2355,1581, 1026,726,634,650,660,573,346,5,-389,-782, -1157,-1529,-1914,-2263,-2519,-2670,-2782,-2960,-3279,-3734, -4244,-4685,-4943,-4960,-4757,-4400,-3966,-3513,-3045,-2539, -2008,-1537,-1240,-1180,-1356,-1705,-2117,-2460,-2635,-2631, -2488,-2264,-2035,-1867,-1796,-1815,-1905,-2056,-2221,-2350, -2385,-2290,-2035,-1630,-1147,-652,-153,371,926,1487, 2024,2508,2886,3114,3206,3232,3276,3425,3774,4415, 5364,6528,7734,8821,9681,10250,10485,10402,10077,9631, 9165,8748,8415,8176,8021,7926,7853,7752,7558,7228, 6766,6233,5707,5238,4873,4676,4687,4885,5204,5566, 5955,6355,6751,7107,7395,7593,7682,7627,7380,6910, 6253,5506,4753,4001,3197,2275,1178,-108,-1524,-2942, -4244,-5344,-6202,-6821,-7324,-7864,-8558,-9417,-10389,-11429, -12537,-13711,-14897,-15977,-16812,-17272,-17260,-16717,-15675,-14253, -12604,-10858,-9131,-7532,-6160,-5080,-4313,-3815,-3465,-3110, -2613,-1901,-973,133,1338,2544,3666,4632,5371,5809, 5884,5573,4937,4119,3293,2591,2067,1679,1375,1137, 969,860,752,573,270,-149,-649,-1142,-1526,-1751, -1859,-1958,-2144,-2467,-2905,-3400,-3873,-4267,-4561,-4768, -4893,-4905,-4755,-4416,-3897,-3248,-2560,-1964,-1577,-1443, -1524,-1750,-2038,-2306,-2492,-2559,-2510,-2355,-2140,-1928, -1799,-1797,-1925,-2133,-2335,-2464,-2504,-2468,-2355,-2159, -1878,-1535,-1137,-675,-133,492,1162,1794,2292,2587, 2667,2604,2507,2496,2684,3159,3947,4980,6140,7295, 8342,9187,9763,10040,10039,9827,9493,9118,8766,8483, 8306,8237,8232,8194,8042,7750,7339,6844,6303,5768, 5302,4966,4807,4819,4944,5109,5306,5594,6013,6517, 7015,7421,7695,7800,7702,7397,6970,6516,6097,5664, 5092,4281,3204,1924,549,-826,-2112,-3243,-4211,-5052, -5805,-6484,-7104,-7724,-8433,-9328,-10463,-11808,-13251,-14646, -15860,-16799,-17381,-17539,-17212,-16380,-15090,-13472,-11704,-9967, -8432,-7215,-6323,-5662,-5116,-4599,-4061,-3451,-2719,-1825, -721,582,1978,3283,4334,5051,5406,5424,5188,4792, 4272,3648,2981,2376,1923,1646,1509,1429,1296,1025, 611,137,-300,-639,-872,-1042,-1214,-1451,-1761,-2109, -2450,-2777,-3128,-3539,-4013,-4501,-4931,-5216,-5263,-5021, -4535,-3909,-3255,-2653,-2166,-1861,-1768,-1872,-2102,-2372, -2571,-2636,-2567,-2422,-2249,-2079,-1956,-1935,-2026,-2205, -2412,-2577,-2652,-2653,-2632,-2602,-2537,-2402,-2166,-1801, -1268,-576,195,914,1471,1816,1958,1932,1791,1639, 1637,1932,2541,3391,4397,5506,6652,7728,8621,9243, 9558,9602,9468,9243,8977,8721,8538,8474,8501,8532, 8465,8231,7837,7345,6820,6303,5823,5425,5131,4914, 4738,4629,4664,4906,5336,5885,6447,6921,7230,7362, 7369,7325,7284,7238,7134,6879,6408,5699,4787,3727, 2573,1358,92,-1189,-2404,-3452,-4285,-4944,-5509,-6066, -6698,-7489,-8474,-9646,-10992,-12485,-14045,-15523,-16747,-17559, -17847,-17556,-16721,-15483,-14019,-12477,-10951,-9541,-8322,-7334, -6580,-6032,-5615,-5181,-4553,-3640,-2475,-1171,171,1484, 2698,3744,4566,5111,5333,5212,4809,4245,3669,3193, 2860,2632,2426,2178,1866,1501,1118,761,465,224, -9,-286,-609,-916,-1155,-1328,-1511,-1770,-2143,-2623, -3188,-3788,-4360,-4834,-5114,-5132,-4864,-4359,-3724,-3078, -2513,-2097,-1875,-1864,-2018,-2232,-2397,-2442,-2371,-2220, -2034,-1868,-1767,-1765,-1855,-1982,-2089,-2161,-2219,-2298, -2408,-2537,-2645,-2684,-2596,-2336,-1873,-1214,-437,325, 958,1405,1665,1755,1692,1535,1395,1413,1695,2279, 3118,4137,5268,6446,7559,8469,9085,9404,9484,9408, 9256,9116,9043,9057,9116,9156,9105,8920,8605,8219, 7830,7446,7036,6567,6049,5525,5065,4769,4718,4934, 5348,5824,6246,6567,6829,7077,7320,7539,7728,7870, 7918,7833,7600,7211,6644,5865,4861,3663,2353,1048, -159,-1233,-2180,-3011,-3735,-4365,-4938,-5514,-6203,-7117, -8344,-9880,-11639,-13450,-15094,-16375,-17206,-17582,-17503,-16947, -15946,-14611,-13093,-11564,-10193,-9105,-8315,-7724,-7194,-6632, -5987,-5231,-4327,-3245,-1984,-585,876,2272,3448,4280, 4735,4860,4748,4510,4247,4012,3781,3494,3129,2734, 2370,2063,1790,1505,1180,835,507,204,-94,-374, -584,-712,-827,-1015,-1318,-1743,-2295,-2956,-3664,-4324, -4815,-5065,-5037,-4753,-4266,-3665,-3062,-2578,-2294,-2211, -2265,-2365,-2430,-2419,-2340,-2227,-2103,-1978,-1881,-1860, -1911,-1961,-1952,-1913,-1934,-2070,-2298,-2558,-2793,-2966, -3026,-2920,-2598,-2061,-1368,-617,84,651,1042,1242, 1267,1160,988,855,868,1121,1666,2508,3587,4790, 5988,7054,7876,8409,8705,8855,8936,8998,9084,9203, 9287,9260,9129,8978,8867,8778,8637,8371,7929,7311, 6601,5917,5384,5061,4952,5003,5150,5351,5598,5882, 6194,6513,6819,7097,7347,7589,7838,8063,8183,8110, 7781,7188,6374,5407,4339,3184,1958,713,-461,-1478, -2277,-2849,-3261,-3665,-4226,-5046,-6145,-7489,-9036,-10753, -12569,-14346,-15894,-17018,-17604,-17606,-17062,-16093,-14886,-13617, -12383,-11231,-10204,-9343,-8651,-8082,-7577,-7059,-6402,-5479, -4240,-2752,-1168,343,1647,2677,3435,3959,4281,4433, 4460,4390,4225,3968,3651,3328,3027,2732,2427,2117, 1796,1444,1055,667,331,72,-101,-199,-261,-364, -565,-891,-1364,-2012,-2808,-3637,-4338,-4793,-4957,-4862, -4557,-4108,-3598,-3137,-2824,-2670,-2612,-2570,-2507,-2410, -2306,-2222,-2167,-2125,-2073,-2008,-1933,-1849,-1756,-1667, -1640,-1726,-1953,-2288,-2649,-2960,-3174,-3234,-3070,-2663, -2080,-1410,-725,-75,473,838,985,950,790,578, 412,411,685,1292,2212,3341,4522,5576,6425,7103, 7680,8199,8636,8964,9161,9235,9218,9167,9155,9228, 9364,9471,9437,9203,8781,8225,7595,6955,6371,5897, 5551,5337,5272,5358,5555,5779,5975,6151,6344,6608, 6969,7408,7856,8233,8474,8565,8522,8341,7975,7366, 6467,5305,3992,2678,1481,464,-349,-978,-1485,-1954, -2442,-3007,-3731,-4721,-6054,-7724,-9647,-11672,-13592,-15193, -16312,-16914,-17054,-16795,-16163,-15213,-14056,-12825,-11660,-10691, -9985,-9505,-9112,-8660,-8040,-7175,-6038,-4686,-3238,-1800, -426,856,1979,2880,3543,4006,4308,4467,4477,4357, 4167,3972,3784,3562,3274,2940,2586,2215,1811,1374, 947,620,442,399,419,414,323,97,-306,-919, -1717,-2605,-3430,-4054,-4398,-4475,-4356,-4126,-3840,-3537, -3256,-3024,-2843,-2682,-2530,-2387,-2280,-2224,-2207,-2200, -2176,-2116,-2002,-1825,-1603,-1405,-1312,-1374,-1573,-1885, -2276,-2695,-3058,-3275,-3289,-3092,-2710,-2181,-1537,-822, -128,427,746,785,586,266,-2,-78,113,571, 1238,2040,2897,3769,4664,5590,6506,7326,7966,8392, 8624,8724,8785,8889,9062,9276,9469,9602,9643,9572, 9363,9005,8492,7855,7168,6542,6072,5796,5673,5609, 5555,5516,5540,5654,5857,6136,6470,6814,7161,7546, 7986,8435,8790,8962,8888,8521,7846,6900,5780,4596, 3430,2312,1277,388,-269,-673,-914,-1177,-1649,-2448, -3615,-5120,-6880,-8773,-10695,-12543,-14215,-15578,-16505,-16914, -16794,-16202,-15281,-14222,-13215,-12356,-11668,-11129,-10686,-10259, -9730,-9005,-8058,-6923,-5658,-4301,-2895,-1493,-168,1013, 1997,2771,3349,3744,3980,4086,4100,4057,3985,3886, 3738,3499,3161,2752,2289,1789,1289,881,646,600, 681,795,842,729,391,-182,-934,-1770,-2576,-3257, -3758,-4074,-4218,-4214,-4108,-3954,-3785,-3591,-3347,-3076, -2827,-2633,-2507,-2446,-2445,-2477,-2486,-2430,-2294,-2080, -1797,-1498,-1291,-1249,-1380,-1635,-1975,-2374,-2796,-3195, -3514,-3660,-3534,-3091,-2392,-1572,-787,-171,169,222, 82,-117,-267,-317,-240,-47,250,670,1258,2052, 3023,4081,5103,5990,6703,7259,7691,8022,8272,8465, 8641,8847,9115,9432,9714,9859,9795,9501,9021,8458, 7907,7410,6951,6518,6133,5832,5635,5538,5539,5609, 5706,5801,5911,6098,6421,6907,7512,8140,8680,9049, 9221,9196,8958,8453,7634,6529,5261,3978,2815,1872, 1204,798,553,317,-39,-601,-1415,-2506,-3900,-5602, -7553,-9627,-11663,-13513,-15023,-16044,-16499,-16419,-15941,-15232, -14451,-13709,-13052,-12488,-12011,-11606,-11190,-10639,-9875,-8916, -7818,-6595,-5244,-3792,-2332,-972,232,1283,2159,2824, 3290,3602,3815,3969,4092,4184,4219,4144,3918,3535, 3005,2387,1787,1325,1067,1013,1128,1322,1466,1438, 1175,687,23,-733,-1487,-2166,-2743,-3217,-3583,-3833, -3970,-4004,-3942,-3792,-3564,-3286,-2991,-2729,-2552,-2489, -2521,-2592,-2629,-2567,-2390,-2140,-1870,-1611,-1370,-1166, -1039,-1038,-1218,-1608,-2189,-2853,-3435,-3770,-3759,-3395, -2757,-2007,-1323,-807,-459,-224,-82,-45,-102,-209, -331,-412,-361,-103,369,1013,1785,2660,3602,4565, 5486,6283,6881,7272,7540,7812,8144,8537,8965,9375, 9695,9873,9908,9812,9606,9306,8915,8424,7858,7284, 6798,6465,6273,6144,6009,5849,5701,5611,5626,5760, 6035,6428,6914,7466,8068,8694,9289,9734,9892,9664, 9050,8132,7019,5822,4661,3641,2837,2258,1858,1561, 1291,988,580,-54,-1047,-2481,-4320,-6416,-8590,-10682, -12566,-14101,-15154,-15692,-15788,-15577,-15169,-14649,-14099,-13583, -13134,-12739,-12366,-11963,-11454,-10779,-9911,-8856,-7641,-6292, -4853,-3398,-2011,-755,327,1216,1898,2404,2821,3226, 3626,3973,4223,4336,4259,3943,3416,2776,2146,1634, 1312,1208,1281,1435,1568,1598,1472,1147,626,-20, -712,-1380,-1998,-2561,-3072,-3526,-3916,-4196,-4319,-4268, -4070,-3793,-3512,-3301,-3183,-3129,-3100,-3074,-3050,-3014, -2947,-2844,-2680,-2415,-2016,-1539,-1124,-935,-1064,-1503, -2152,-2872,-3500,-3898,-4010,-3870,-3557,-3120,-2576,-1970, -1398,-953,-686,-595,-636,-736,-842,-932,-998,-991, -837,-470,118,908,1854,2856,3784,4549,5151,5649, 6115,6600,7109,7597,8025,8398,8752,9096,9388,9569, 9594,9429,9083,8616,8107,7634,7235,6899,6583,6256, 5941,5685,5513,5390,5292,5226,5230,5342,5618,6102, 6795,7630,8483,9211,9675,9776,9492,8890,8079,7127, 6079,4999,4002,3189,2597,2226,2037,1945,1818,1514, 904,-124,-1623,-3524,-5652,-7821,-9890,-11744,-13277,-14408, -15116,-15447,-15478,-15287,-14953,-14571,-14207,-13878,-13559,-13225, -12860,-12429,-11863,-11090,-10073,-8837,-7435,-5942,-4459,-3072, -1851,-835,-2,711,1375,2030,2689,3322,3853,4196, 4294,4130,3738,3176,2552,1996,1607,1426,1422,1531, 1673,1762,1724,1519,1166,718,218,-330,-942,-1608, -2286,-2921,-3466,-3863,-4068,-4102,-4041,-3951,-3839,-3693, -3517,-3334,-3167,-3065,-3082,-3216,-3384,-3444,-3273,-2850, -2249,-1633,-1161,-925,-946,-1190,-1626,-2204,-2836,-3405, -3807,-3975,-3894,-3597,-3150,-2629,-2102,-1627,-1246,-967, -785,-713,-779,-980,-1254,-1466,-1481,-1228,-732,-71, 677,1469,2265,3032,3754,4446,5100,5691,6195,6646, 7104,7623,8202,8767,9218,9485,9578,9551,9428,9210, 8884,8490,8082,7681,7281,6895,6566,6326,6135,5922, 5642,5317,5030,4894,5006,5396,6027,6820,7693,8548, 9263,9721,9874,9723,9279,8557,7615,6546,5460,4478, 3702,3202,2984,2963,2998,2931,2618,1963,918,-528, -2351,-4442,-6625,-8712,-10571,-12137,-13367,-14247,-14794,-15058, -15101,-14968,-14722,-14451,-14216,-14018,-13821,-13592,-13275,-12794, -12058,-11031,-9748,-8307,-6817,-5396,-4125,-3026,-2061,-1187, -350,505,1402,2292,3088,3703,4071,4150,3944,3508, 2965,2443,2042,1805,1720,1731,1766,1778,1759,1716, 1630,1447,1121,631,-3,-729,-1479,-2167,-2732,-3173, -3526,-3828,-4074,-4216,-4193,-3986,-3661,-3355,-3204,-3251, -3437,-3656,-3810,-3844,-3700,-3354,-2846,-2265,-1719,-1286, -1035,-1017,-1261,-1743,-2371,-2998,-3498,-3812,-3957,-3949, -3782,-3465,-3016,-2473,-1892,-1374,-1027,-916,-1028,-1281, -1575,-1780,-1826,-1709,-1475,-1128,-639,17,799,1607, 2369,3049,3664,4234,4782,5343,5950,6607,7271,7877, 8377,8762,9048,9263,9392,9391,9224,8911,8511,8096, 7719,7411,7163,6937,6669,6318,5874,5387,4942,4632, 4526,4653,5036,5654,6448,7319,8183,8966,9574,9900, 9869,9464,8724,7744,6659,5609,4723,4084,3729,3626, 3693,3793,3768,3467,2811,1769,354,-1390,-3372,-5453, -7491,-9367,-11015,-12387,-13443,-14177,-14615,-14805,-14797,-14671, -14537,-14469,-14467,-14469,-14387,-14136,-13646,-12868,-11810,-10547, -9185,-7826,-6542,-5371,-4316,-3338,-2378,-1368,-290,829, 1903,2805,3425,3723,3739,3553,3253,2921,2607,2328, 2088,1893,1774,1756,1840,1979,2082,2032,1766,1313, 774,227,-319,-898,-1532,-2199,-2841,-3394,-3798,-3991, -3954,-3756,-3520,-3351,-3279,-3296,-3408,-3602,-3823,-3977, -3978,-3770,-3341,-2748,-2109,-1554,-1175,-1017,-1080,-1331, -1708,-2149,-2627,-3129,-3621,-3989,-4104,-3900,-3427,-2823, -2230,-1737,-1382,-1172,-1109,-1190,-1376,-1598,-1792,-1908, -1905,-1730,-1351,-788,-113,571,1197,1759,2315,2923, 3591,4273,4946,5609,6269,6905,7513,8098,8643,9095, 9390,9503,9453,9280,9034,8774,8537,8346,8170,7962, 7670,7264,6751,6177,5615,5138,4802,4641,4686,4977, 5534,6329,7268,8232,9103,9771,10136,10130,9738,9007, 8037,6974,5979,5190,4687,4466,4462,4582,4697,4679, 4413,3812,2849,1548,-33,-1839,-3802,-5822,-7772,-9536, -11017,-12165,-12972,-13483,-13771,-13932,-14043,-14170,-14329,-14494, -14605,-14565,-14310,-13793,-13013,-11989,-10805,-9583,-8423,-7350, -6324,-5297,-4216,-3044,-1773,-462,770,1803,2582,3143, 3534,3776,3843,3711,3412,3034,2693,2462,2371,2406, 2511,2610,2631,2551,2404,2226,2016,1717,1264,630, -125,-909,-1640,-2282,-2801,-3156,-3311,-3289,-3170,-3039, -2959,-2971,-3104,-3354,-3663,-3904,-3956,-3761,-3359,-2865, -2371,-1908,-1478,-1095,-810,-702,-832,-1205,-1755,-2384, -2983,-3453,-3709,-3713,-3488,-3107,-2640,-2138,-1657,-1261, -1005,-936,-1056,-1318,-1613,-1834,-1899,-1784,-1518,-1156, -739,-282,218,769,1358,1969,2594,3223,3843,4456, 5090,5779,6523,7281,7999,8604,9039,9281,9354,9324, 9262,9198,9144,9078,8965,8777,8507,8145,7692,7154, 6555,5925,5330,4860,4589,4565,4805,5328,6123,7116, 8161,9096,9801,10192,10195,9799,9069,8142,7177,6304, 5621,5196,5037,5075,5194,5296,5291,5085,4602,3797, 2659,1188,-575,-2525,-4519,-6438,-8185,-9675,-10857,-11721, -12321,-12756,-13132,-13512,-13913,-14307,-14659,-14887,-14893,-14601, -14016,-13214,-12312,-11414,-10556,-9693,-8737,-7637,-6406,-5105, -3798,-2531,-1322,-173,911,1889,2685,3228,3475,3459, 3287,3087,2926,2805,2706,2626,2576,2562,2583,2619, 2668,2700,2666,2497,2149,1630,978,236,-557,-1355, -2077,-2625,-2916,-2960,-2863,-2774,-2804,-2971,-3230,-3511, -3760,-3937,-4012,-3974,-3835,-3605,-3258,-2770,-2177,-1580, -1100,-825,-780,-968,-1362,-1887,-2453,-2995,-3452,-3771, -3876,-3731,-3355,-2827,-2242,-1717,-1357,-1216,-1260,-1422, -1629,-1820,-1943,-1978,-1924,-1785,-1550,-1221,-810,-330, 206,758,1286,1789,2309,2893,3574,4351,5210,6082, 6883,7558,8095,8491,8757,8920,9026,9102,9160,9198, 9215,9177,9045,8797,8436,7974,7411,6756,6045,5337, 4722,4301,4171,4377,4922,5760,6789,7866,8834,9565, 9969,9977,9592,8903,8074,7243,6488,5854,5410,5212, 5234,5377,5520,5574,5468,5117,4423,3341,1904,196, -1677,-3609,-5485,-7198,-8650,-9789,-10644,-11315,-11935,-12602, -13337,-14058,-14653,-15019,-15126,-14984,-14656,-14227,-13749,-13218, -12572,-11765,-10817,-9788,-8722,-7597,-6378,-5065,-3689,-2312, -995,198,1213,1997,2529,2854,3045,3147,3163,3082, 2924,2743,2616,2578,2609,2664,2729,2814,2914,2970, 2887,2590,2053,1308,430,-450,-1195,-1722,-2047,-2245, -2392,-2541,-2713,-2905,-3117,-3341,-3578,-3827,-4073,-4271, -4348,-4243,-3935,-3465,-2900,-2316,-1782,-1352,-1065,-945, -1021,-1322,-1823,-2443,-3070,-3581,-3881,-3914,-3685,-3267, -2774,-2297,-1902,-1624,-1481,-1467,-1550,-1678,-1814,-1943, -2049,-2072,-1948,-1660,-1260,-821,-396,-6,361,734, 1154,1667,2306,3071,3929,4821,5686,6472,7130,7642, 8038,8364,8640,8874,9074,9255,9399,9480,9486,9417, 9246,8921,8420,7775,7034,6226,5404,4667,4161,3997, 4217,4787,5626,6627,7665,8601,9312,9707,9759,9488, 8961,8269,7508,6767,6140,5708,5524,5574,5766,5981, 6132,6147,5917,5323,4302,2894,1191,-692,-2595,-4337, -5785,-6968,-8012,-9038,-10088,-11148,-12155,-13041,-13752,-14273, -14624,-14838,-14919,-14838,-14597,-14224,-13752,-13187,-12530,-11799, -10991,-10047,-8890,-7525,-6049,-4581,-3197,-1914,-756,271, 1150,1856,2367,2699,2900,3015,3056,3015,2896,2733, 2584,2532,2633,2883,3196,3447,3509,3315,2869,2225, 1472,710,20,-564,-1049,-1462,-1804,-2067,-2260,-2422, -2612,-2882,-3234,-3634,-4016,-4309,-4464,-4459,-4299,-4014, -3630,-3153,-2580,-1971,-1431,-1068,-942,-1064,-1423,-1963, -2584,-3163,-3596,-3829,-3845,-3675,-3368,-2983,-2568,-2170, -1834,-1598,-1498,-1543,-1710,-1922,-2096,-2175,-2140,-1981, -1716,-1393,-1070,-772,-492,-214,91,482,1030,1748, 2579,3444,4297,5129,5907,6585,7132,7566,7934,8265, 8567,8838,9081,9310,9517,9675,9736,9646,9352,8842, 8146,7307,6391,5487,4717,4205,4041,4247,4784,5574, 6526,7522,8430,9140,9569,9687,9496,9039,8390,7659, 6954,6361,5934,5704,5693,5904,6277,6672,6878,6685, 5987,4834,3387,1809,214,-1324,-2759,-4101,-5386,-6667, -7944,-9170,-10284,-11282,-12194,-13035,-13754,-14275,-14562,-14638, -14567,-14412,-14221,-13987,-13665,-13205,-12588,-11810,-10862,-9753, -8496,-7116,-5656,-4198,-2827,-1615,-589,278,1041,1742, 2342,2760,2956,2951,2814,2626,2492,2511,2726,3071, 3423,3671,3769,3710,3500,3146,2661,2060,1375,661, 11,-502,-870,-1148,-1407,-1687,-2002,-2357,-2746,-3150, -3535,-3881,-4169,-4377,-4471,-4425,-4209,-3800,-3218,-2533, -1852,-1298,-971,-917,-1114,-1484,-1952,-2463,-2960,-3372, -3649,-3764,-3699,-3450,-3055,-2599,-2177,-1854,-1652,-1590, -1659,-1823,-2005,-2115,-2105,-1976,-1778,-1558,-1345,-1145, -958,-764,-538,-232,194,760,1459,2249,3087,3931, 4745,5495,6158,6718,7181,7582,7954,8309,8650,8988, 9334,9672,9950,10092,10040,9756,9220,8440,7487,6478, 5540,4769,4244,4017,4113,4541,5273,6216,7199,8062, 8729,9193,9441,9426,9118,8544,7781,6960,6244,5795, 5700,5951,6443,6982,7337,7359,7009,6324,5357,4184, 2892,1530,108,-1341,-2734,-4012,-5219,-6447,-7741,-9042, -10265,-11344,-12251,-12969,-13506,-13893,-14166,-14324,-14361,-14296, -14165,-13979,-13708,-13292,-12656,-11759,-10635,-9352,-7983,-6603, -5277,-4043,-2871,-1723,-605,418,1270,1899,2280,2420, 2406,2376,2415,2533,2702,2912,3165,3442,3705,3896, 3942,3789,3432,2921,2330,1702,1079,514,50,-326, -668,-1022,-1391,-1753,-2099,-2459,-2873,-3334,-3812,-4265, -4630,-4819,-4756,-4423,-3886,-3250,-2614,-2040,-1585,-1293, -1198,-1307,-1603,-2028,-2507,-2977,-3389,-3696,-3832,-3767, -3516,-3132,-2707,-2333,-2076,-1944,-1918,-1981,-2098,-2194, -2205,-2132,-2014,-1886,-1758,-1634,-1519,-1398,-1238,-1011, -704,-303,223,875,1626,2436,3269,4089,4846,5508, 6067,6544,6950,7311,7683,8125,8653,9209,9713,10086, 10278,10273,10051,9572,8807,7812,6725,5703,4864,4296, 4059,4153,4517,5083,5815,6686,7624,8510,9204,9584, 9564,9125,8360,7475,6711,6229,6066,6173,6466,6849, 7221,7472,7515,7293,6764,5930,4856,3658,2437,1212, -44,-1350,-2697,-4059,-5435,-6804,-8125,-9364,-10504,-11521, -12372,-13026,-13487,-13811,-14056,-14262,-14454,-14616,-14676,-14528, -14106,-13432,-12562,-11562,-10492,-9380,-8205,-6912,-5505,-4060, -2684,-1464,-454,337,944,1402,1720,1907,2015,2113, 2254,2465,2759,3127,3518,3847,4039,4049,3874,3540, 3104,2623,2123,1613,1080,543,52,-358,-691,-972, -1265,-1636,-2116,-2697,-3325,-3936,-4461,-4834,-4999,-4919, -4596,-4097,-3522,-2947,-2407,-1934,-1586,-1430,-1481,-1712, -2084,-2551,-3041,-3456,-3722,-3795,-3683,-3426,-3092,-2758, -2494,-2326,-2242,-2221,-2240,-2275,-2290,-2267,-2213,-2145, -2063,-1974,-1892,-1825,-1745,-1619,-1421,-1139,-771,-321, 229,928,1774,2679,3530,4250,4854,5368,5820,6244, 6674,7138,7655,8235,8873,9512,10062,10426,10517,10291, 9733,8899,7908,6903,5990,5215,4594,4156,3957,4073, 4555,5375,6422,7518,8443,9021,9190,9003,8556,7950, 7290,6695,6274,6097,6183,6488,6903,7285,7519,7537, 7338,6923,6308,5505,4537,3439,2254,1017,-242,-1524, -2837,-4198,-5600,-7010,-8376,-9623,-10673,-11482,-12102,-12632, -13162,-13709,-14212,-14569,-14724,-14688,-14506,-14201,-13764,-13184, -12442,-11518,-10408,-9147,-7781,-6369,-4962,-3615,-2385,-1314, -423,276,783,1124,1356,1554,1773,2056,2409,2814, 3223,3580,3839,3992,4053,4021,3869,3564,3111,2571, 2017,1482,985,547,192,-89,-360,-702,-1173,-1769, -2457,-3178,-3856,-4409,-4790,-4968,-4928,-4678,-4262,-3735, -3143,-2539,-2008,-1645,-1490,-1544,-1784,-2168,-2624,-3049, -3359,-3513,-3516,-3402,-3220,-2995,-2746,-2523,-2383,-2317, -2271,-2209,-2139,-2080,-2042,-2024,-2015,-2002,-1959,-1897, -1847,-1827,-1804,-1715,-1508,-1163,-679,-80,604,1351, 2123,2872,3550,4146,4661,5098,5477,5862,6338,6967, 7760,8648,9483,10100,10402,10401,10153,9719,9127,8382, 7478,6443,5391,4489,3887,3679,3894,4485,5333,6300, 7256,8078,8621,8804,8646,8225,7650,7049,6566,6290, 6218,6305,6500,6772,7063,7300,7412,7349,7077,6590, 5904,5063,4136,3165,2147,1026,-253,-1684,-3194,-4671, -6042,-7263,-8344,-9327,-10263,-11160,-11992,-12721,-13326,-13800, -14161,-14430,-14600,-14654,-14566,-14317,-13878,-13216,-12347,-11302, -10124,-8843,-7490,-6100,-4713,-3404,-2275,-1383,-716,-221, 170,516,863,1223,1584,1946,2309,2671,3022,3349, 3633,3850,3939,3854,3584,3171,2673,2154,1670,1268, 954,697,428,88,-359,-923,-1590,-2323,-3067,-3774, -4387,-4840,-5106,-5176,-5035,-4662,-4085,-3416,-2792,-2307, -2004,-1898,-1994,-2251,-2602,-2974,-3302,-3537,-3646,-3635, -3551,-3437,-3312,-3170,-3008,-2844,-2702,-2592,-2510,-2446, -2387,-2321,-2244,-2169,-2133,-2146,-2200,-2272,-2321,-2296, -2165,-1929,-1594,-1176,-669,-49,692,1517,2328,3009, 3506,3858,4176,4580,5142,5864,6690,7524,8298,8976, 9556,10025,10321,10366,10105,9544,8716,7677,6527,5414, 4490,3879,3665,3879,4469,5305,6238,7124,7829,8248, 8343,8169,7831,7424,7010,6628,6311,6120,6111,6300, 6632,6987,7232,7291,7170,6911,6551,6113,5581,4914, 4049,2964,1713,380,-974,-2322,-3638,-4899,-6102,-7257, -8371,-9433,-10412,-11276,-12012,-12642,-13201,-13710,-14158,-14497, -14676,-14688,-14560,-14291,-13830,-13121,-12169,-11021,-9722,-8333, -6924,-5576,-4339,-3254,-2337,-1575,-927,-369,93,485, 855,1227,1599,1963,2355,2800,3270,3677,3941,4030, 3947,3714,3356,2937,2531,2185,1905,1656,1397,1085, 690,208,-342,-966,-1682,-2482,-3289,-4005,-4546,-4865, -4940,-4775,-4398,-3875,-3280,-2715,-2279,-2026,-1965,-2066, -2270,-2516,-2756,-2980,-3188,-3349,-3431,-3431,-3376,-3285, -3158,-3019,-2903,-2823,-2739,-2610,-2442,-2268,-2129,-2059, -2072,-2141,-2213,-2241,-2226,-2216,-2235,-2248,-2174,-1930, -1480,-853,-125,591,1207,1709,2148,2597,3094,3627, 4188,4773,5408,6110,6874,7673,8480,9251,9912,10360, 10502,10295,9747,8896,7809,6586,5395,4428,3851,3728, 4010,4579,5291,6030,6728,7339,7787,8003,7967,7720, 7325,6862,6465,6237,6205,6314,6480,6644,6779,6892, 6991,7062,7071,6964,6698,6234,5555,4689,3683,2584, 1429,238,-984,-2251,-3549,-4825,-6016,-7117,-8172,-9197, -10168,-11039,-11798,-12449,-13006,-13480,-13880,-14211,-14451,-14544, -14435,-14088,-13479,-12599,-11479,-10200,-8855,-7532,-6276,-5104, -4022,-3044,-2188,-1454,-833,-312,123,509,885,1286, 1748,2273,2831,3351,3751,3981,4039,3967,3815,3607, 3337,3021,2704,2415,2161,1927,1682,1377,954,395, -282,-1063,-1938,-2846,-3672,-4302,-4678,-4780,-4627,-4260, -3762,-3225,-2747,-2404,-2218,-2153,-2177,-2283,-2464,-2695, -2925,-3105,-3197,-3210,-3186,-3181,-3206,-3238,-3227,-3133, -2951,-2722,-2506,-2348,-2253,-2190,-2124,-2038,-1956,-1948, -2058,-2256,-2453,-2546,-2476,-2223,-1814,-1321,-804,-290, 216,711,1185,1658,2154,2671,3176,3668,4197,4815, 5528,6312,7158,8067,9007,9888,10565,10893,10766,10170, 9206,8047,6876,5838,5033,4519,4314,4421,4813,5436, 6179,6903,7473,7804,7876,7742,7483,7189,6913,6688, 6530,6424,6346,6289,6293,6403,6619,6872,7070,7151, 7093,6881,6489,5911,5176,4314,3339,2256,1092,-92, -1271,-2452,-3649,-4852,-6038,-7180,-8251,-9244,-10149,-10961, -11669,-12287,-12847,-13391,-13902,-14321,-14572,-14605,-14382,-13870, -13089,-12090,-10940,-9713,-8469,-7251,-6071,-4930,-3863,-2921, -2145,-1526,-1016,-551,-87,425,999,1596,2151,2652, 3114,3528,3842,4016,4062,4012,3883,3681,3427,3166, 2921,2705,2501,2297,2052,1689,1150,429,-432,-1386, -2355,-3233,-3898,-4286,-4402,-4299,-4035,-3662,-3218,-2774, -2406,-2186,-2132,-2221,-2387,-2555,-2666,-2716,-2753,-2833, -2969,-3123,-3228,-3244,-3169,-3051,-2938,-2838,-2731,-2586, -2393,-2167,-1946,-1788,-1747,-1844,-2053,-2298,-2493,-2577, -2539,-2389,-2148,-1819,-1424,-984,-535,-92,344,779, 1220,1689,2183,2670,3112,3522,3971,4569,5400,6472, 7691,8882,9865,10512,10773,10645,10160,9367,8346,7230, 6160,5269,4670,4446,4614,5096,5741,6392,6930,7304, 7520,7622,7642,7583,7443,7231,6972,6696,6448,6281, 6224,6274,6417,6630,6878,7114,7296,7374,7281,6976, 6469,5809,5026,4146,3183,2154,1077,-37,-1203,-2427, -3686,-4933,-6113,-7200,-8186,-9070,-9879,-10643,-11386,-12119, -12842,-13522,-14090,-14455,-14565,-14421,-14052,-13474,-12684,-11693, -10543,-9289,-7997,-6744,-5602,-4605,-3742,-2973,-2285,-1657, -1059,-463,131,720,1319,1920,2509,3047,3516,3899, 4169,4307,4304,4199,4026,3806,3570,3380,3273,3220, 3131,2919,2522,1910,1099,166,-792,-1727,-2613,-3388, -3939,-4194,-4148,-3848,-3399,-2951,-2639,-2479,-2397,-2337, -2291,-2284,-2323,-2416,-2556,-2721,-2862,-2949,-2983,-2994, -3011,-3046,-3081,-3069,-2966,-2750,-2445,-2112,-1821,-1633, -1572,-1630,-1780,-1996,-2223,-2400,-2482,-2446,-2297,-2055, -1758,-1464,-1187,-884,-479,47,635,1179,1588,1863, 2069,2309,2681,3249,4048,5069,6240,7453,8609,9630, 10426,10876,10901,10481,9680,8611,7441,6364,5552,5085, 4949,5074,5375,5783,6237,6673,7054,7365,7586,7675, 7623,7476,7277,7037,6754,6486,6309,6244,6274,6384, 6597,6888,7187,7419,7528,7476,7235,6809,6237,5562, 4809,3983,3086,2120,1069,-82,-1329,-2619,-3861,-4991, -6007,-6952,-7867,-8778,-9705,-10638,-11526,-12325,-13025,-13631, -14110,-14403,-14471,-14312,-13923,-13284,-12383,-11264,-10034,-8806, -7641,-6551,-5537,-4612,-3783,-3037,-2335,-1652,-987,-342, 274,875,1485,2106,2713,3268,3736,4077,4248,4237, 4104,3945,3840,3802,3799,3779,3696,3539,3314,2992, 2491,1737,754,-341,-1429,-2399,-3144,-3601,-3770,-3734, -3581,-3365,-3117,-2856,-2603,-2373,-2205,-2145,-2201,-2328, -2460,-2543,-2577,-2601,-2661,-2769,-2904,-3037,-3135,-3152, -3063,-2873,-2620,-2325,-1996,-1681,-1476,-1456,-1604,-1832, -2041,-2187,-2253,-2259,-2234,-2197,-2151,-2063,-1882,-1549, -1066,-507,27,467,790,1007,1170,1360,1631,2029, 2601,3393,4406,5606,6937,8298,9529,10449,10931,10922, 10458,9656,8680,7682,6774,6044,5553,5320,5308,5474, 5777,6167,6587,6981,7300,7518,7618,7609,7512,7341, 7097,6803,6511,6288,6188,6228,6383,6629,6934,7253, 7509,7628,7582,7377,7039,6596,6087,5512,4821,3969, 2968,1882,743,-443,-1643,-2795,-3874,-4903,-5924,-6951, -7971,-8962,-9906,-10802,-11660,-12485,-13247,-13895,-14358,-14574, -14520,-14219,-13687,-12915,-11931,-10828,-9703,-8605,-7551,-6550, -5605,-4708,-3852,-3053,-2329,-1686,-1086,-457,245,1012, 1775,2461,3010,3408,3690,3891,4025,4075,4040,3948, 3867,3847,3905,4002,4051,3946,3596,2955,2052,990, -83,-1066,-1913,-2617,-3153,-3499,-3655,-3642,-3475,-3207, -2922,-2701,-2576,-2525,-2505,-2488,-2473,-2478,-2508,-2545, -2584,-2657,-2788,-2971,-3169,-3330,-3379,-3255,-2961,-2574, -2206,-1930,-1778,-1742,-1786,-1847,-1893,-1913,-1950,-2051, -2220,-2395,-2494,-2464,-2301,-2007,-1597,-1131,-693,-321, 9,309,551,714,827,956,1188,1646,2452,3613, 5004,6462,7861,9078,9963,10421,10456,10134,9537,8745, 7867,7022,6301,5762,5437,5327,5396,5609,5923,6287, 6656,6996,7266,7429,7470,7401,7241,7008,6716,6414, 6177,6083,6157,6364,6636,6904,7125,7281,7360,7361, 7290,7141,6887,6497,5955,5255,4414,3470,2477,1468, 424,-677,-1821,-2952,-4047,-5101,-6120,-7103,-8064,-9038, -10025,-11006,-11938,-12801,-13570,-14198,-14598,-14711,-14522,-14075, -13425,-12640,-11762,-10799,-9740,-8625,-7537,-6547,-5684,-4933, -4249,-3565,-2830,-2057,-1291,-551,178,904,1600,2251, 2825,3263,3505,3562,3518,3466,3474,3593,3827,4111, 4318,4333,4118,3697,3102,2348,1432,402,-648,-1611, -2413,-3018,-3400,-3572,-3586,-3508,-3369,-3189,-3014,-2904, -2871,-2871,-2845,-2776,-2686,-2609,-2590,-2679,-2896,-3199, -3487,-3664,-3682,-3551,-3312,-3029,-2776,-2594,-2460,-2325, -2170,-2025,-1926,-1910,-2003,-2187,-2406,-2590,-2697,-2721, -2662,-2521,-2298,-1983,-1577,-1111,-661,-293,-62,20, -20,-96,-82,152,684,1549,2731,4152,5657,7081, 8303,9240,9826,10018,9838,9362,8686,7903,7089,6347, 5769,5404,5256,5294,5468,5723,6035,6397,6779,7108, 7315,7368,7278,7064,6766,6459,6221,6095,6079,6148, 6261,6399,6558,6739,6938,7131,7285,7357,7305,7093, 6723,6229,5637,4951,4151,3232,2235,1222,215,-816, -1904,-3022,-4113,-5147,-6128,-7086,-8074,-9131,-10237,-11311, -12270,-13081,-13731,-14191,-14447,-14507,-14379,-14022,-13392,-12519, -11502,-10453,-9450,-8524,-7652,-6801,-5957,-5154,-4403,-3690, -2981,-2244,-1448,-584,332,1219,1955,2456,2717,2828, 2912,3044,3239,3475,3739,4016,4279,4485,4571,4483, 4171,3621,2856,1935,926,-102,-1075,-1933,-2617,-3098, -3363,-3442,-3405,-3341,-3316,-3324,-3313,-3239,-3099,-2913, -2730,-2622,-2656,-2840,-3117,-3387,-3584,-3678,-3665,-3580, -3476,-3386,-3284,-3116,-2871,-2599,-2345,-2130,-1973,-1908, -1932,-2024,-2158,-2321,-2502,-2674,-2798,-2826,-2718,-2455, -2042,-1532,-1018,-616,-391,-345,-421,-558,-678,-679, -457,65,922,2086,3449,4887,6289,7564,8601,9299, 9615,9575,9240,8688,8010,7303,6631,6051,5617,5353, 5253,5316,5545,5908,6327,6714,7002,7146,7130,6980, 6766,6565,6408,6285,6170,6064,6004,6025,6131,6303, 6514,6739,6953,7133,7265,7314,7231,6968,6536,5987, 5364,4662,3861,2962,1994,991,-27,-1043,-2037,-3003, -3979,-5027,-6163,-7315,-8423,-9466,-10462,-11410,-12316,-13162, -13888,-14394,-14615,-14554,-14237,-13694,-12984,-12164,-11284,-10336, -9332,-8333,-7435,-6697,-6089,-5502,-4824,-3999,-3037,-2006, -999,-86,702,1358,1861,2208,2444,2640,2852,3114, 3447,3833,4222,4547,4759,4837,4761,4511,4070,3420, 2552,1522,445,-540,-1353,-1981,-2446,-2780,-3031,-3245, -3429,-3528,-3486,-3299,-3028,-2767,-2601,-2581,-2694,-2873, -3052,-3212,-3353,-3475,-3572,-3639,-3684,-3690,-3631,-3490, -3271,-3009,-2748,-2516,-2302,-2091,-1912,-1824,-1874,-2047, -2306,-2597,-2857,-3007,-2982,-2766,-2380,-1873,-1333,-879, -590,-482,-530,-699,-932,-1119,-1138,-905,-392,416, 1505,2820,4258,5694,6999,8070,8834,9265,9383,9232, 8862,8331,7690,6995,6322,5763,5411,5319,5468,5786, 6165,6498,6733,6877,6960,6982,6925,6793,6633,6479, 6340,6215,6112,6039,6011,6039,6135,6318,6576,6855, 7070,7174,7192,7157,7053,6814,6396,5806,5072,4239, 3363,2495,1656,823,-43,-984,-2034,-3167,-4314,-5405, -6430,-7446,-8518,-9653,-10790,-11836,-12723,-13437,-13985,-14378, -14582,-14546,-14229,-13627,-12788,-11819,-10841,-9950,-9181,-8507, -7877,-7221,-6489,-5660,-4751,-3772,-2740,-1708,-778,-27, 553,1017,1407,1749,2077,2424,2786,3163,3560,3966, 4352,4688,4930,4994,4800,4312,3581,2704,1782,900, 95,-652,-1374,-2058,-2654,-3122,-3436,-3570,-3530,-3362, -3151,-2972,-2860,-2827,-2847,-2906,-2979,-3075,-3207,-3372, -3547,-3685,-3772,-3805,-3810,-3784,-3718,-3592,-3401,-3133, -2803,-2456,-2155,-1950,-1874,-1955,-2190,-2532,-2882,-3139, -3227,-3106,-2788,-2338,-1851,-1403,-1043,-819,-760,-861, -1075,-1342,-1572,-1656,-1493,-1029,-259,801,2095,3503, 4879,6126,7216,8136,8833,9229,9263,8942,8361,7654, 6945,6330,5886,5652,5608,5717,5936,6217,6493,6705, 6831,6867,6834,6771,6705,6628,6500,6316,6122,5981, 5907,5897,5945,6042,6181,6359,6573,6816,7058,7257, 7358,7299,7031,6556,5949,5310,4685,4051,3358,2578, 1712,796,-126,-1048,-2009,-3067,-4208,-5382,-6553,-7692, -8772,-9792,-10785,-11784,-12753,-13604,-14241,-14592,-14615,-14305, -13730,-12987,-12167,-11349,-10596,-9940,-9355,-8774,-8119,-7339, -6424,-5400,-4326,-3277,-2315,-1474,-752,-123,444,957, 1386,1721,2014,2348,2795,3372,4025,4646,5105,5310, 5243,4951,4501,3945,3322,2643,1895,1043,105,-844, -1700,-2381,-2850,-3123,-3238,-3242,-3166,-3045,-2908,-2792, -2723,-2713,-2761,-2863,-2996,-3130,-3252,-3358,-3455,-3548, -3631,-3700,-3746,-3737,-3642,-3436,-3112,-2708,-2287,-1927, -1716,-1708,-1890,-2194,-2531,-2827,-3021,-3047,-2880,-2533, -2089,-1624,-1184,-812,-571,-534,-724,-1083,-1479,-1770, -1842,-1645,-1183,-494,396,1491,2778,4178,5569,6849, 7924,8708,9135,9206,8979,8522,7911,7240,6638,6218, 6026,6020,6128,6286,6462,6650,6824,6966,7056,7092, 7066,6972,6819,6643,6487,6376,6295,6204,6079,5944, 5871,5936,6180,6547,6919,7184,7310,7311,7198,6992, 6716,6361,5880,5255,4546,3835,3168,2512,1802,982, 36,-1019,-2128,-3235,-4319,-5383,-6451,-7534,-8642,-9780, -10934,-12044,-13011,-13733,-14146,-14223,-13980,-13489,-12851,-12175, -11542,-10983,-10483,-9959,-9333,-8584,-7736,-6830,-5893,-4931, -3941,-2938,-1966,-1101,-415,74,415,700,1031,1487, 2097,2823,3585,4279,4816,5154,5327,5381,5316,5110, 4743,4227,3570,2768,1854,885,-63,-924,-1640,-2186, -2562,-2783,-2856,-2801,-2678,-2558,-2487,-2468,-2498,-2580, -2706,-2852,-2969,-3044,-3101,-3197,-3355,-3545,-3710,-3811, -3818,-3687,-3397,-2993,-2553,-2155,-1879,-1766,-1811,-1969, -2205,-2493,-2789,-3010,-3084,-2956,-2607,-2069,-1470,-971, -681,-615,-735,-984,-1286,-1586,-1836,-1993,-1979,-1710, -1151,-313,759,2020,3415,4855,6232,7416,8296,8804, 8946,8776,8385,7886,7381,6938,6586,6339,6201,6183, 6283,6479,6718,6936,7066,7085,7026,6963,6939,6953, 6945,6863,6677,6409,6131,5939,5892,5978,6140,6322, 6512,6723,6962,7198,7356,7367,7215,6930,6553,6107, 5626,5124,4602,4027,3371,2613,1748,801,-178,-1163, -2157,-3163,-4170,-5189,-6290,-7514,-8834,-10165,-11415,-12478, -13246,-13661,-13761,-13641,-13386,-13050,-12641,-12166,-11640,-11096, -10541,-9959,-9326,-8629,-7819,-6858,-5750,-4583,-3476,-2536, -1818,-1306,-920,-543,-93,455,1105,1828,2571,3275, 3902,4437,4878,5220,5451,5531,5443,5188,4777,4197, 3438,2535,1560,587,-332,-1147,-1800,-2248,-2485,-2556, -2531,-2475,-2431,-2422,-2462,-2549,-2649,-2719,-2761,-2795, -2847,-2951,-3140,-3415,-3702,-3900,-3952,-3864,-3664,-3370, -3018,-2643,-2276,-1947,-1727,-1709,-1928,-2314,-2734,-3051, -3173,-3071,-2781,-2364,-1884,-1395,-968,-677,-573,-651, -874,-1181,-1515,-1825,-2064,-2162,-2025,-1606,-898,97, 1376,2862,4387,5770,6909,7761,8311,8564,8566,8371, 8018,7558,7073,6657,6400,6336,6432,6596,6742,6822, 6853,6891,6989,7129,7236,7247,7155,7000,6828,6664, 6507,6340,6165,6027,5978,6037,6200,6447,6751,7051, 7268,7373,7353,7218,6991,6719,6429,6103,5711,5243, 4692,4045,3284,2429,1522,624,-213,-994,-1817,-2774, -3902,-5188,-6586,-8027,-9399,-10609,-11606,-12388,-12944,-13275, -13397,-13320,-13061,-12663,-12209,-11784,-11419,-11079,-10680,-10127, -9350,-8358,-7230,-6075,-4997,-4076,-3323,-2687,-2117,-1588, -1079,-544,58,743,1489,2241,2960,3639,4275,4850, 5318,5651,5834,5860,5713,5384,4859,4148,3279,2306, 1302,339,-522,-1212,-1689,-1959,-2090,-2162,-2230,-2311, -2395,-2460,-2479,-2454,-2417,-2429,-2536,-2738,-2978,-3205, -3394,-3576,-3768,-3925,-3968,-3828,-3499,-3040,-2562,-2168, -1920,-1838,-1923,-2161,-2492,-2819,-3050,-3123,-3025,-2768, -2374,-1901,-1431,-1042,-781,-662,-682,-842,-1133,-1510, -1926,-2313,-2577,-2583,-2228,-1491,-439,815,2174,3548, 4869,6089,7141,7914,8310,8331,8092,7752,7421,7147, 6940,6784,6665,6584,6557,6601,6720,6884,7037,7148, 7206,7215,7180,7116,7040,6944,6796,6584,6345,6140, 6013,5993,6077,6247,6474,6726,6959,7122,7187,7159, 7077,6969,6855,6730,6552,6250,5780,5136,4372,3562, 2787,2097,1482,869,165,-703,-1753,-2954,-4261,-5621, -6985,-8311,-9573,-10730,-11718,-12458,-12902,-13057,-12992,-12815, -12634,-12502,-12389,-12215,-11923,-11476,-10838,-9998,-9006,-7942, -6891,-5925,-5074,-4321,-3634,-2998,-2404,-1827,-1230,-583, 110,844,1606,2371,3111,3814,4466,5040,5497,5818, 5992,5989,5771,5319,4645,3778,2779,1745,803,38, -550,-1035,-1477,-1868,-2152,-2295,-2326,-2319,-2331,-2376, -2434,-2477,-2511,-2574,-2708,-2919,-3187,-3491,-3803,-4058, -4182,-4119,-3877,-3511,-3091,-2678,-2333,-2117,-2071,-2192, -2443,-2758,-3045,-3217,-3229,-3088,-2834,-2499,-2105,-1679, -1258,-887,-625,-556,-754,-1197,-1763,-2293,-2679,-2878, -2865,-2618,-2102,-1271,-117,1296,2822,4278,5522,6477, 7145,7559,7760,7784,7671,7465,7207,6928,6675,6504, 6451,6495,6586,6694,6810,6920,7010,7079,7134,7161, 7132,7036,6891,6706,6489,6261,6064,5954,5958,6069, 6250,6444,6606,6712,6760,6770,6797,6891,7033,7128, 7069,6811,6374,5804,5152,4496,3911,3398,2888,2311, 1643,888,46,-892,-1946,-3149,-4515,-6007,-7503,-8876, -10058,-11015,-11714,-12158,-12405,-12554,-12671,-12782,-12850,-12830, -12680,-12376,-11902,-11255,-10465,-9581,-8657,-7726,-6819,-5956, -5158,-4428,-3762,-3126,-2501,-1880,-1255,-599,118,902, 1724,2528,3269,3960,4638,5309,5888,6238,6276,6010, 5511,4867,4143,3368,2542,1680,830,56,-599,-1120, -1510,-1789,-1985,-2117,-2191,-2215,-2209,-2190,-2173,-2191, -2288,-2484,-2775,-3131,-3502,-3824,-4032,-4093,-3994,-3738, -3361,-2928,-2525,-2242,-2137,-2191,-2332,-2482,-2624,-2787, -2981,-3141,-3176,-3014,-2630,-2076,-1469,-951,-610,-455, -466,-650,-1010,-1510,-2059,-2584,-2999,-3192,-3029,-2461, -1540,-369,954,2328,3654,4853,5879,6699,7290,7643, 7779,7733,7562,7336,7113,6913,6752,6653,6634,6683, 6770,6874,6990,7111,7210,7270,7291,7264,7155,6937, 6645,6370,6180,6103,6139,6253,6365,6406,6370,6310, 6287,6352,6543,6844,7148,7325,7297,7093,6772,6381, 5941,5464,4960,4451,3946,3449,2949,2432,1860,1177, 313,-776,-2086,-3560,-5093,-6564,-7882,-8999,-9905,-10616, -11185,-11668,-12099,-12463,-12737,-12909,-12958,-12860,-12597,-12163, -11576,-10886,-10143,-9357,-8514,-7611,-6710,-5887,-5179,-4548, -3924,-3250,-2539,-1844,-1208,-611,30,796,1697,2673, 3637,4510,5231,5751,6050,6131,6016,5718,5248,4623, 3873,3046,2192,1355,574,-111,-693,-1192,-1609,-1928, -2121,-2186,-2160,-2099,-2056,-2059,-2122,-2270,-2524,-2893, -3348,-3814,-4185,-4347,-4269,-4025,-3731,-3458,-3206,-2962, -2716,-2499,-2372,-2391,-2566,-2843,-3147,-3395,-3504,-3416, -3148,-2771,-2326,-1821,-1291,-815,-492,-389,-555,-1004, -1661,-2380,-2991,-3389,-3523,-3363,-2886,-2113,-1102,83, 1377,2701,3955,5049,5929,6581,7017,7258,7329,7259, 7095,6898,6729,6616,6556,6520,6503,6532,6643,6827, 7040,7231,7345,7326,7162,6890,6587,6353,6261,6315, 6419,6461,6385,6228,6065,5957,5943,6051,6275,6551, 6808,7003,7113,7126,7023,6806,6477,6047,5541,5014, 4532,4133,3806,3516,3193,2737,2059,1119,-60,-1420, -2865,-4311,-5695,-6959,-8049,-8962,-9757,-10508,-11236,-11887, -12399,-12749,-12945,-13022,-13012,-12894,-12607,-12116,-11458,-10717, -9959,-9210,-8470,-7720,-6930,-6095,-5263,-4510,-3877,-3351, -2872,-2361,-1755,-1019,-134,877,1934,2940,3836,4605, 5235,5685,5920,5936,5739,5355,4813,4172,3475,2732, 1938,1112,314,-389,-960,-1411,-1772,-2044,-2176,-2137, -1978,-1818,-1768,-1902,-2212,-2643,-3103,-3505,-3806,-4020, -4157,-4207,-4152,-3991,-3734,-3400,-3040,-2740,-2571,-2555, -2657,-2817,-2997,-3189,-3392,-3556,-3595,-3441,-3087,-2569, -1938,-1282,-725,-395,-356,-598,-1075,-1717,-2415,-3056, -3538,-3773,-3698,-3303,-2630,-1744,-695,497,1781,3051, 4189,5127,5857,6383,6710,6867,6915,6906,6843,6704, 6499,6282,6135,6137,6329,6656,6988,7212,7269,7167, 6947,6701,6521,6453,6482,6553,6597,6548,6404,6222, 6051,5917,5829,5822,5919,6099,6323,6562,6804,7007, 7108,7034,6769,6347,5851,5366,4954,4646,4428,4258, 4083,3830,3406,2711,1720,513,-787,-2090,-3359,-4585, -5776,-6921,-8000,-8980,-9850,-10610,-11276,-11875,-12404,-12819, -13056,-13079,-12919,-12640,-12282,-11853,-11350,-10761,-10066,-9261, -8376,-7479,-6635,-5889,-5263,-4746,-4282,-3789,-3206,-2523, -1753,-888,111,1229,2374,3416,4280,4939,5417,5741, 5915,5901,5672,5237,4659,4007,3326,2629,1877,1036, 141,-676,-1287,-1641,-1769,-1737,-1637,-1573,-1603,-1741, -1967,-2251,-2572,-2930,-3339,-3766,-4117,-4315,-4341,-4230, -4031,-3781,-3513,-3255,-3022,-2834,-2719,-2711,-2835,-3079, -3407,-3733,-3961,-3998,-3796,-3363,-2757,-2059,-1360,-785, -444,-397,-638,-1116,-1742,-2420,-3054,-3562,-3856,-3885, -3639,-3125,-2352,-1344,-173,1054,2230,3283,4190,4975, 5662,6233,6643,6844,6831,6626,6310,6021,5902,6009, 6290,6622,6901,7065,7093,7004,6846,6681,6567,6528, 6545,6564,6547,6490,6418,6328,6197,6001,5766,5555, 5456,5527,5760,6081,6409,6706,6935,7027,6912,6580, 6099,5575,5127,4840,4725,4723,4716,4603,4301,3787, 3092,2246,1252,107,-1158,-2475,-3753,-4922,-5981,-6989, -8000,-9016,-9980,-10851,-11594,-12179,-12572,-12795,-12894,-12907, -12849,-12714,-12454,-12017,-11379,-10608,-9790,-8988,-8200,-7421, -6682,-6037,-5519,-5089,-4656,-4127,-3448,-2616,-1670,-654, 417,1535,2654,3685,4539,5168,5564,5750,5761,5646, 5451,5165,4718,4059,3206,2245,1278,399,-310,-821, -1159,-1379,-1505,-1544,-1521,-1505,-1565,-1745,-2055,-2479, -2962,-3418,-3776,-4017,-4168,-4255,-4268,-4173,-3962,-3674, -3367,-3083,-2851,-2714,-2730,-2927,-3269,-3671,-4030,-4243, -4245,-4009,-3535,-2864,-2099,-1384,-847,-552,-503,-676, -1045,-1586,-2254,-2964,-3589,-4005,-4122,-3896,-3360,-2595, -1714,-788,163,1182,2298,3466,4569,5483,6134,6499, 6593,6478,6259,6080,6044,6164,6384,6625,6835,6976, 7046,7074,7059,6984,6860,6754,6725,6773,6844,6895, 6894,6816,6642,6388,6104,5834,5601,5460,5498,5758, 6181,6631,6986,7148,7073,6785,6385,5988,5665,5416, 5243,5156,5129,5108,5029,4830,4448,3841,3016,2018, 905,-252,-1385,-2466,-3530,-4641,-5814,-7007,-8148,-9174, -10043,-10755,-11354,-11878,-12318,-12630,-12795,-12834,-12769,-12585, -12226,-11676,-10959,-10139,-9288,-8481,-7774,-7174,-6638,-6125, -5624,-5127,-4609,-4033,-3339,-2462,-1383,-146,1138,2338, 3347,4134,4752,5272,5703,6002,6127,6061,5783,5285, 4596,3797,2966,2124,1284,493,-156,-590,-804,-870, -884,-911,-988,-1144,-1393,-1733,-2123,-2527,-2921,-3296, -3642,-3928,-4110,-4153,-4052,-3820,-3500,-3143,-2807,-2555, -2454,-2561,-2874,-3313,-3766,-4125,-4289,-4211,-3899,-3413, -2816,-2157,-1483,-864,-405,-199,-312,-756,-1441,-2221, -2933,-3470,-3781,-3856,-3710,-3390,-2937,-2355,-1599,-637, 528,1832,3133,4254,5075,5589,5874,6008,6053,6056, 6063,6117,6242,6437,6680,6904,7046,7089,7065,7013, 6963,6930,6915,6924,6978,7088,7216,7279,7203,6951, 6543,6074,5683,5494,5536,5755,6084,6451,6778,6988, 7033,6920,6696,6405,6082,5758,5483,5318,5305,5405, 5505,5483,5252,4811,4201,3487,2705,1852,901,-171, -1339,-2541,-3724,-4873,-5997,-7098,-8141,-9080,-9891,-10585, -11181,-11710,-12187,-12588,-12856,-12927,-12756,-12353,-11789,-11157, -10497,-9789,-9027,-8268,-7594,-7048,-6621,-6275,-5934,-5487, -4842,-3979,-2952,-1844,-722,377,1441,2472,3458,4345, 5078,5629,6004,6214,6261,6132,5793,5231,4479,3612, 2702,1809,1026,434,37,-219,-389,-514,-621,-746, -913,-1137,-1437,-1809,-2220,-2645,-3078,-3515,-3902,-4159, -4243,-4137,-3850,-3431,-2988,-2637,-2462,-2506,-2742,-3085, -3445,-3790,-4095,-4309,-4341,-4132,-3678,-3015,-2217,-1397, -705,-274,-185,-431,-933,-1540,-2121,-2614,-3025,-3377, -3673,-3868,-3865,-3577,-2970,-2086,-1010,175,1402,2581, 3619,4444,5031,5404,5615,5738,5846,5998,6195,6387, 6547,6700,6880,7059,7161,7138,7014,6887,6847,6923, 7100,7338,7560,7664,7588,7327,6937,6502,6116,5858, 5768,5816,5958,6170,6451,6756,6995,7071,6939,6633, 6243,5895,5683,5611,5618,5636,5633,5598,5510,5342, 5075,4687,4151,3457,2637,1733,752,-332,-1520,-2759, -3968,-5081,-6076,-6985,-7871,-8772,-9669,-10507,-11241,-11841, -12292,-12576,-12690,-12650,-12459,-12087,-11513,-10770,-9956,-9190, -8561,-8096,-7739,-7400,-7014,-6563,-6024,-5376,-4597,-3687, -2676,-1595,-462,700,1836,2882,3803,4610,5315,5894, 6295,6482,6431,6133,5622,4951,4179,3366,2568,1847, 1231,731,345,65,-127,-272,-407,-565,-753,-971, -1256,-1679,-2260,-2915,-3514,-3947,-4146,-4097,-3845,-3485, -3113,-2791,-2552,-2429,-2446,-2616,-2916,-3316,-3775,-4227, -4537,-4568,-4244,-3600,-2774,-1948,-1267,-788,-522,-440, -520,-732,-1060,-1508,-2076,-2696,-3261,-3699,-3981,-4059, -3849,-3287,-2408,-1333,-192,925,1963,2879,3657,4290, 4778,5121,5352,5529,5724,5967,6254,6545,6783,6926, 6952,6868,6728,6616,6620,6786,7068,7360,7555,7612, 7543,7390,7167,6871,6502,6116,5822,5710,5796,6028, 6324,6597,6770,6799,6707,6552,6374,6180,5977,5789, 5655,5595,5603,5627,5622,5556,5420,5224,4973,4637, 4152,3454,2538,1469,336,-800,-1898,-2936,-3922,-4914, -5953,-7010,-8019,-8936,-9769,-10540,-11262,-11920,-12453,-12772, -12815,-12598,-12169,-11598,-10956,-10329,-9765,-9259,-8791,-8361, -7984,-7637,-7264,-6801,-6198,-5436,-4534,-3534,-2472,-1368, -234,910,2031,3108,4111,4991,5683,6145,6381,6404, 6224,5840,5269,4566,3827,3136,2511,1913,1312,757, 327,64,-42,-47,-42,-136,-410,-876,-1502,-2209, -2901,-3469,-3827,-3964,-3922,-3758,-3506,-3175,-2793,-2425, -2171,-2137,-2396,-2920,-3569,-4147,-4504,-4574,-4376,-3970, -3432,-2824,-2191,-1581,-1061,-696,-489,-418,-472,-697, -1135,-1764,-2494,-3208,-3799,-4162,-4219,-3967,-3441,-2689, -1753,-704,355,1347,2246,3027,3659,4122,4455,4753, 5118,5581,6074,6475,6696,6745,6686,6595,6544,6567, 6659,6798,6966,7179,7433,7676,7824,7810,7603,7228, 6783,6386,6131,6030,6053,6147,6287,6454,6614,6729, 6751,6668,6509,6329,6171,6046,5937,5835,5742,5655, 5575,5532,5564,5649,5681,5538,5168,4610,3911,3110, 2227,1277,272,-793,-1895,-2984,-4016,-4996,-5938,-6870, -7838,-8873,-9925,-10879,-11636,-12167,-12474,-12567,-12461,-12178, -11752,-11223,-10653,-10115,-9645,-9238,-8890,-8592,-8295,-7926, -7442,-6852,-6176,-5401,-4512,-3497,-2391,-1226,-35,1156, 2330,3449,4463,5293,5871,6165,6222,6113,5886,5537, 5063,4468,3776,3012,2215,1471,894,554,429,426, 436,352,99,-338,-900,-1509,-2106,-2688,-3253,-3768, -4123,-4208,-3996,-3551,-3012,-2539,-2251,-2214,-2417,-2808, -3318,-3865,-4328,-4599,-4629,-4439,-4091,-3648,-3152,-2627, -2068,-1479,-913,-465,-221,-231,-502,-1008,-1696,-2469, -3204,-3778,-4130,-4257,-4156,-3774,-3078,-2130,-1070,-51, 832,1548,2121,2638,3194,3819,4473,5079,5576,5942, 6187,6347,6438,6462,6406,6310,6269,6386,6674,7045, 7383,7627,7765,7789,7674,7423,7093,6759,6471,6255, 6145,6165,6296,6462,6587,6629,6599,6549,6514,6505, 6479,6384,6197,5939,5683,5505,5450,5510,5639,5771, 5843,5807,5648,5378,4978,4429,3709,2831,1845,819, -171,-1116,-2046,-2992,-3957,-4961,-6039,-7186,-8335,-9416, -10389,-11237,-11917,-12363,-12550,-12498,-12261,-11903,-11492,-11080, -10674,-10264,-9861,-9499,-9199,-8925,-8601,-8181,-7671,-7083, -6401,-5593,-4652,-3591,-2416,-1121,257,1616,2825,3807, 4572,5164,5603,5890,6043,6072,5921,5518,4854,4017, 3146,2386,1817,1435,1181,986,820,685,558,390, 105,-352,-1016,-1844,-2701,-3429,-3923,-4158,-4132,-3857, -3396,-2874,-2454,-2271,-2367,-2701,-3166,-3652,-4083,-4414, -4619,-4686,-4628,-4463,-4185,-3763,-3180,-2473,-1737,-1089, -620,-380,-370,-576,-983,-1580,-2338,-3172,-3936,-4474, -4664,-4472,-3954,-3225,-2422,-1653,-946,-269,407,1078, 1729,2384,3075,3793,4490,5097,5563,5852,5955,5915, 5811,5735,5748,5879,6125,6457,6817,7160,7444,7616, 7618,7434,7119,6773,6492,6336,6293,6307,6313,6289, 6257,6245,6277,6356,6461,6527,6487,6325,6094,5872, 5688,5538,5429,5380,5396,5463,5561,5678,5772,5782, 5630,5261,4677,3940,3127,2307,1484,639,-242,-1154, -2085,-3032,-4027,-5123,-6321,-7556,-8748,-9839,-10775,-11496, -11977,-12248,-12333,-12238,-11987,-11645,-11292,-10961,-10658,-10365, -10070,-9751,-9403,-9051,-8703,-8347,-7940,-7434,-6754,-5840, -4678,-3330,-1905,-517,742,1830,2769,3644,4498,5287, 5884,6201,6215,5960,5512,4951,4331,3660,2964,2304, 1771,1417,1233,1158,1120,1060,905,556,-44,-879, -1834,-2761,-3516,-3993,-4145,-3998,-3635,-3181,-2781,-2556, -2554,-2734,-3005,-3300,-3622,-3982,-4359,-4692,-4928,-5016, -4908,-4576,-4055,-3441,-2812,-2170,-1494,-830,-318,-113, -287,-815,-1596,-2479,-3299,-3922,-4299,-4417,-4280,-3918, -3400,-2796,-2152,-1509,-903,-341,233,902,1705,2583, 3438,4180,4759,5167,5422,5536,5527,5441,5369,5410, 5608,5951,6390,6852,7235,7441,7442,7296,7105,6940, 6813,6686,6544,6387,6238,6126,6086,6134,6238,6339, 6400,6410,6363,6262,6128,5987,5816,5589,5337,5139, 5064,5115,5271,5473,5647,5725,5684,5517,5207,4734, 4112,3387,2628,1871,1142,421,-339,-1203,-2194,-3284, -4432,-5633,-6877,-8120,-9287,-10306,-11118,-11688,-12025,-12168, -12177,-12072,-11887,-11682,-11476,-11225,-10875,-10460,-10064,-9760, -9569,-9462,-9345,-9074,-8522,-7667,-6594,-5420,-4227,-3036, -1829,-585,692,1940,3073,4040,4839,5461,5878,6056, 5999,5726,5263,4648,3946,3222,2568,2067,1776,1672, 1679,1714,1691,1500,1028,247,-743,-1762,-2638,-3261, -3588,-3648,-3511,-3284,-3060,-2891,-2749,-2625,-2589,-2736, -3092,-3558,-4002,-4355,-4614,-4788,-4888,-4913,-4810,-4494, -3920,-3131,-2232,-1356,-639,-200,-104,-333,-819,-1493, -2286,-3088,-3740,-4111,-4170,-3994,-3692,-3334,-2950,-2541, -2099,-1611,-1054,-411,336,1185,2098,3000,3823,4502, 4973,5189,5181,5065,4997,5080,5334,5701,6098,6476, 6805,7063,7222,7296,7315,7294,7202,7026,6796,6578, 6422,6352,6352,6370,6361,6350,6374,6441,6509,6518, 6437,6253,5993,5705,5443,5248,5131,5092,5125,5237, 5425,5644,5799,5803,5633,5317,4895,4381,3798,3173, 2538,1915,1277,583,-203,-1095,-2117,-3279,-4558,-5893, -7214,-8449,-9518,-10347,-10916,-11277,-11532,-11758,-11935,-11958, -11745,-11337,-10890,-10544,-10335,-10241,-10199,-10143,-10009,-9748, -9342,-8786,-8093,-7271,-6322,-5241,-4030,-2731,-1399,-89, 1167,2351,3440,4388,5142,5690,6039,6165,6018,5599, 4978,4261,3546,2928,2502,2331,2387,2536,2598,2432, 1975,1261,397,-479,-1276,-1965,-2552,-3010,-3262,-3263, -3065,-2783,-2529,-2377,-2363,-2479,-2682,-2929,-3208,-3540, -3945,-4403,-4831,-5118,-5183,-5005,-4593,-3952,-3121,-2194, -1314,-596,-143,-35,-280,-810,-1497,-2224,-2865,-3334, -3616,-3745,-3755,-3644,-3409,-3097,-2772,-2463,-2123,-1668, -1033,-204,780,1830,2828,3637,4187,4493,4637,4721, 4823,4971,5166,5394,5650,5952,6305,6684,7041,7320, 7465,7473,7392,7283,7163,7027,6871,6709,6568,6485, 6492,6583,6694,6773,6803,6793,6735,6605,6402,6139, 5844,5560,5337,5219,5214,5297,5440,5618,5790,5898, 5906,5785,5527,5151,4706,4220,3695,3140,2587,2075, 1570,957,114,-1018,-2374,-3781,-5085,-6240,-7288,-8287, -9236,-10090,-10804,-11337,-11640,-11687,-11534,-11286,-11036,-10833, -10691,-10600,-10536,-10477,-10399,-10271,-10057,-9739,-9293,-8713, -7989,-7107,-6077,-4913,-3658,-2350,-1028,292,1571,2765, 3835,4785,5594,6170,6395,6211,5675,4943,4222,3689, 3403,3296,3276,3259,3198,3051,2779,2357,1765,1006, 105,-830,-1649,-2233,-2568,-2713,-2737,-2685,-2596,-2496, -2393,-2298,-2262,-2326,-2511,-2822,-3258,-3791,-4343,-4835, -5190,-5340,-5218,-4786,-4063,-3126,-2118,-1219,-574,-233, -166,-334,-726,-1288,-1915,-2496,-2952,-3242,-3355,-3331, -3245,-3175,-3144,-3109,-2988,-2687,-2134,-1335,-390,577, 1484,2307,3029,3611,4045,4345,4537,4654,4754,4912, 5174,5522,5896,6252,6583,6903,7198,7427,7539,7530, 7422,7257,7074,6911,6781,6685,6632,6646,6736,6874, 6993,7050,7025,6919,6733,6471,6156,5829,5545,5346, 5272,5305,5382,5444,5512,5640,5823,5956,5909,5635, 5201,4723,4308,3992,3740,3459,3043,2438,1649,710, -344,-1469,-2612,-3770,-4981,-6245,-7493,-8632,-9600,-10356, -10860,-11101,-11144,-11098,-11025,-10933,-10827,-10733,-10678,-10656, -10643,-10612,-10527,-10350,-10079,-9748,-9330,-8736,-7892,-6854, -5726,-4579,-3407,-2182,-883,525,2028,3495,4734,5597, 6034,6081,5847,5467,5050,4640,4261,3967,3810,3793, 3851,3877,3765,3432,2885,2171,1355,510,-284,-965, -1515,-1958,-2291,-2486,-2536,-2474,-2352,-2215,-2093,-2014, -2014,-2145,-2467,-2992,-3679,-4418,-5058,-5464,-5555,-5325, -4817,-4096,-3235,-2333,-1489,-805,-373,-249,-437,-866, -1399,-1900,-2285,-2534,-2681,-2806,-2981,-3216,-3436,-3546, -3483,-3252,-2877,-2364,-1701,-894,10,925,1776,2519, 3126,3585,3918,4174,4393,4581,4743,4924,5192,5571, 5997,6412,6787,7127,7393,7549,7579,7492,7316,7105, 6932,6822,6760,6735,6788,6940,7153,7326,7368,7247, 7012,6751,6519,6296,6049,5782,5534,5350,5284,5369, 5581,5831,6014,6046,5907,5651,5377,5156,4987,4821, 4626,4362,3985,3480,2878,2210,1489,691,-238,-1348, -2636,-4021,-5397,-6686,-7845,-8843,-9645,-10200,-10503,-10635, -10692,-10727,-10747,-10748,-10735,-10710,-10684,-10676,-10705,-10750, -10748,-10603,-10242,-9680,-9011,-8337,-7666,-6926,-6009,-4837, -3393,-1758,-79,1510,2922,4093,4966,5501,5712,5641, 5358,4981,4639,4416,4336,4374,4455,4480,4378,4129, 3753,3250,2615,1867,1073,309,-379,-979,-1490,-1911, -2219,-2389,-2411,-2286,-2039,-1746,-1528,-1504,-1741,-2227, -2890,-3628,-4352,-4964,-5375,-5514,-5355,-4897,-4161,-3222, -2238,-1404,-851,-607,-617,-772,-976,-1190,-1416,-1666, -1934,-2218,-2510,-2804,-3078,-3317,-3496,-3550,-3417,-3069, -2538,-1885,-1145,-336,508,1326,2069,2716,3260,3685, 3999,4239,4427,4572,4732,4996,5399,5887,6361,6772, 7127,7429,7655,7747,7670,7450,7176,6950,6830,6849, 6988,7173,7315,7376,7390,7399,7388,7319,7150,6851, 6435,5986,5640,5487,5500,5610,5764,5913,5984,5924, 5773,5635,5564,5531,5465,5328,5112,4842,4541,4214, 3847,3423,2931,2349,1637,751,-328,-1602,-3036,-4513, -5896,-7081,-8041,-8791,-9377,-9841,-10198,-10426,-10503,-10460, -10400,-10431,-10603,-10861,-11080,-11156,-11068,-10870,-10617,-10343, -10060,-9768,-9406,-8879,-8120,-7114,-5877,-4442,-2840,-1119, 611,2189,3463,4352,4861,5060,5046,4922,4772,4659, 4619,4652,4724,4788,4784,4673,4423,4021,3502,2919, 2301,1642,930,176,-569,-1265,-1863,-2283,-2442,-2334, -2055,-1744,-1505,-1388,-1430,-1659,-2095,-2739,-3555,-4437, -5216,-5709,-5800,-5481,-4856,-4083,-3300,-2590,-1984,-1503, -1179,-1028,-1024,-1109,-1212,-1317,-1459,-1689,-2020,-2404, -2783,-3122,-3417,-3637,-3727,-3624,-3318,-2859,-2318,-1714, -1018,-216,633,1440,2126,2674,3094,3406,3653,3865, 4064,4265,4510,4852,5313,5876,6468,6985,7319,7420, 7333,7172,7037,6951,6882,6810,6760,6774,6877,7042, 7236,7424,7561,7557,7336,6923,6439,6027,5766,5653, 5643,5683,5709,5688,5630,5586,5568,5560,5545,5513, 5458,5371,5250,5078,4836,4546,4267,4041,3848,3587, 3140,2439,1488,330,-958,-2294,-3612,-4901,-6152,-7315, -8302,-9038,-9495,-9712,-9802,-9898,-10094,-10392,-10720,-10988, -11141,-11179,-11145,-11082,-11002,-10899,-10786,-10677,-10545,-10332, -9970,-9385,-8493,-7234,-5657,-3900,-2112,-399,1149,2423, 3350,3925,4208,4302,4319,4337,4405,4534,4707,4855, 4899,4809,4606,4348,4059,3740,3346,2817,2113,1256, 338,-517,-1226,-1756,-2119,-2320,-2329,-2134,-1782,-1394, -1123,-1122,-1480,-2158,-3032,-3938,-4747,-5383,-5764,-5813, -5516,-4966,-4319,-3678,-3085,-2557,-2118,-1794,-1572,-1414, -1299,-1244,-1265,-1379,-1615,-1974,-2407,-2824,-3172,-3449, -3662,-3787,-3785,-3633,-3317,-2833,-2207,-1494,-758,-26, 705,1438,2128,2687,3035,3187,3254,3370,3613,4004, 4522,5117,5709,6205,6575,6833,7010,7106,7115,7038, 6880,6672,6485,6431,6574,6881,7241,7531,7670,7626, 7422,7116,6770,6437,6156,5955,5834,5772,5740,5717, 5664,5572,5473,5430,5484,5580,5622,5527,5303,5028, 4805,4682,4635,4604,4528,4340,4002,3510,2892,2156, 1273,169,-1178,-2695,-4219,-5585,-6692,-7526,-8126,-8565, -8916,-9249,-9597,-9954,-10294,-10612,-10896,-11106,-11182,-11130, -11019,-10935,-10927,-10989,-11100,-11205,-11199,-10951,-10378,-9460, -8213,-6666,-4905,-3083,-1350,186,1450,2376,2957,3311, 3601,3910,4227,4495,4686,4795,4831,4832,4837,4843, 4791,4610,4267,3785,3218,2585,1844,951,-34,-954, -1655,-2080,-2227,-2112,-1774,-1336,-956,-792,-926,-1386, -2126,-3025,-3936,-4739,-5342,-5679,-5718,-5480,-5033,-4485, -3943,-3458,-3026,-2618,-2222,-1850,-1521,-1283,-1189,-1245, -1404,-1602,-1838,-2153,-2560,-3020,-3438,-3722,-3844,-3834, -3732,-3534,-3214,-2747,-2114,-1332,-464,374,1087,1621, 1976,2206,2407,2653,2974,3348,3747,4156,4585,5063, 5603,6159,6635,6939,7025,6905,6646,6369,6208,6234, 6416,6669,6941,7224,7470,7584,7507,7274,6963,6663, 6426,6260,6123,5971,5788,5588,5430,5368,5411,5505, 5577,5566,5440,5227,5013,4880,4832,4802,4740,4638, 4525,4426,4348,4255,4048,3602,2875,1885,675,-702, -2147,-3544,-4805,-5887,-6761,-7427,-7933,-8369,-8815,-9296, -9795,-10260,-10645,-10906,-11028,-11030,-10960,-10899,-10922,-11058, -11284,-11539,-11773,-11919,-11856,-11424,-10537,-9222,-7587,-5787, -4001,-2401,-1059,70,1067,1953,2672,3196,3550,3822, 4086,4361,4610,4791,4895,4944,4958,4932,4841,4648, 4314,3815,3146,2291,1265,167,-824,-1530,-1887,-1927, -1722,-1360,-954,-655,-588,-819,-1349,-2122,-3033,-3936, -4686,-5181,-5410,-5438,-5338,-5138,-4829,-4400,-3888,-3373, -2920,-2534,-2179,-1834,-1522,-1292,-1187,-1219,-1398,-1705, -2085,-2476,-2831,-3133,-3407,-3679,-3924,-4051,-3954,-3598, -3012,-2272,-1473,-715,-75,451,913,1354,1777,2165, 2480,2716,2929,3222,3680,4302,4989,5630,6154,6536, 6757,6806,6701,6511,6330,6254,6338,6586,6935,7269, 7489,7555,7512,7437,7380,7310,7174,6937,6623,6275, 5960,5754,5700,5754,5805,5782,5690,5578,5477,5401, 5327,5223,5070,4884,4706,4586,4553,4603,4703,4798, 4810,4642,4225,3528,2567,1384,52,-1342,-2691,-3888, -4879,-5688,-6384,-7037,-7678,-8309,-8918,-9482,-9953,-10312, -10556,-10692,-10720,-10668,-10606,-10639,-10862,-11318,-11911,-12447, -12706,-12550,-11974,-11048,-9853,-8445,-6880,-5246,-3657,-2218, -964,128,1079,1864,2479,2972,3411,3811,4146,4398, 4581,4733,4888,5047,5191,5273,5220,4933,4379,3589, 2622,1548,473,-464,-1150,-1522,-1551,-1273,-834,-445, -280,-394,-762,-1336,-2043,-2803,-3553,-4244,-4820,-5210, -5371,-5325,-5134,-4854,-4521,-4157,-3772,-3343,-2865,-2367, -1914,-1574,-1382,-1331,-1380,-1474,-1591,-1756,-2017,-2399, -2899,-3448,-3915,-4182,-4178,-3936,-3543,-3084,-2580,-2005, -1351,-662,-6,571,1039,1379,1613,1818,2073,2406, 2820,3335,3970,4688,5393,5966,6319,6426,6352,6221, 6148,6194,6356,6568,6744,6872,7011,7207,7440,7647, 7773,7766,7585,7256,6875,6549,6313,6152,6031,5924, 5834,5767,5727,5698,5673,5626,5523,5340,5095,4836, 4607,4456,4416,4486,4653,4883,5103,5214,5111,4717, 4006,3021,1852,615,-610,-1785,-2880,-3884,-4800,-5630, -6364,-7036,-7724,-8479,-9243,-9874,-10245,-10346,-10273,-10170, -10157,-10300,-10621,-11104,-11690,-12280,-12747,-12995,-12950,-12564, -11820,-10741,-9404,-7904,-6340,-4796,-3354,-2064,-934,69, 994,1833,2529,3041,3400,3675,3939,4240,4596,4965, 5297,5561,5733,5755,5533,4979,4101,2994,1803,698, -158,-666,-846,-793,-608,-374,-182,-107,-198,-470, -951,-1642,-2463,-3271,-3945,-4444,-4781,-4983,-5082,-5095, -5019,-4813,-4445,-3935,-3375,-2877,-2501,-2235,-2011,-1765, -1480,-1203,-1041,-1082,-1358,-1809,-2332,-2837,-3276,-3629, -3865,-3961,-3899,-3665,-3264,-2739,-2148,-1527,-893,-271, 287,725,1018,1192,1323,1528,1923,2543,3304,4066, 4709,5182,5496,5714,5903,6094,6265,6369,6399,6400, 6433,6551,6770,7076,7417,7718,7901,7937,7858,7707, 7490,7216,6915,6633,6394,6219,6107,6052,6036,6043, 6047,6009,5893,5690,5423,5111,4778,4473,4293,4324, 4572,4956,5330,5565,5595,5429,5070,4489,3652,2598, 1427,257,-836,-1814,-2686,-3499,-4344,-5276,-6278,-7255, -8092,-8723,-9135,-9362,-9451,-9457,-9465,-9576,-9845,-10269, -10812,-11428,-12058,-12609,-12971,-13054,-12778,-12115,-11121,-9924, -8626,-7259,-5827,-4369,-2958,-1664,-541,400,1205,1911, 2495,2931,3267,3594,3972,4436,4993,5607,6154,6475, 6453,6051,5318,4364,3316,2272,1313,533,23,-211, -226,-93,118,305,351,178,-216,-768,-1393,-2027, -2643,-3245,-3840,-4404,-4868,-5135,-5147,-4917,-4558,-4198, -3890,-3614,-3330,-2996,-2591,-2122,-1655,-1268,-1018,-913, -958,-1169,-1543,-2035,-2555,-3035,-3426,-3694,-3821,-3818, -3688,-3413,-2961,-2336,-1607,-899,-344,-7,165,296, 504,858,1369,1989,2628,3214,3732,4209,4675,5135, 5542,5848,6030,6111,6145,6174,6237,6364,6570,6837, 7134,7421,7677,7871,7992,8017,7931,7719,7416,7088, 6799,6570,6381,6230,6151,6185,6310,6420,6386,6153, 5754,5289,4852,4519,4324,4285,4394,4626,4951,5328, 5681,5882,5808,5407,4725,3853,2896,1952,1066,228, -619,-1532,-2530,-3604,-4711,-5795,-6761,-7536,-8105,-8496, -8746,-8879,-8939,-8998,-9146,-9469,-10009,-10718,-11473,-12142, -12671,-13029,-13167,-13027,-12601,-11899,-10929,-9711,-8332,-6897, -5476,-4085,-2729,-1451,-348,516,1145,1615,2005,2402, 2890,3531,4311,5133,5867,6401,6659,6600,6231,5587, 4730,3723,2667,1696,951,511,368,423,533,565, 483,340,185,-6,-322,-809,-1467,-2253,-3076,-3811, -4335,-4624,-4736,-4744,-4686,-4576,-4420,-4229,-3989,-3680, -3290,-2826,-2318,-1802,-1331,-983,-831,-893,-1114,-1422, -1782,-2198,-2666,-3159,-3618,-3946,-4031,-3817,-3351,-2747, -2130,-1618,-1256,-994,-730,-409,-49,328,728,1166, 1648,2164,2716,3304,3903,4456,4924,5281,5524,5684, 5828,5977,6093,6157,6239,6443,6779,7151,7463,7693, 7880,8042,8148,8140,7970,7646,7242,6854,6561,6433, 6477,6621,6759,6810,6736,6545,6252,5876,5420,4911, 4449,4158,4128,4342,4728,5209,5683,6023,6111,5911, 5466,4871,4221,3566,2893,2165,1348,430,-573,-1652, -2777,-3925,-5043,-6051,-6871,-7452,-7784,-7929,-8006,-8131, -8354,-8686,-9121,-9671,-10330,-11063,-11802,-12455,-12931,-13166, -13141,-12869,-12366,-11636,-10666,-9443,-8005,-6447,-4875,-3390, -2094,-1075,-352,142,557,1041,1665,2421,3254,4125, 5000,5829,6513,6926,6958,6567,5794,4802,3812,2977, 2334,1828,1395,1038,792,678,673,730,789,750, 509,43,-588,-1294,-2021,-2741,-3400,-3921,-4256,-4436, -4532,-4588,-4610,-4594,-4519,-4346,-4022,-3547,-2990,-2454, -2000,-1630,-1313,-1036,-834,-778,-959,-1407,-2063,-2768, -3362,-3742,-3877,-3777,-3498,-3115,-2706,-2334,-2013,-1704, -1366,-1016,-689,-392,-78,312,792,1324,1864,2408, 2971,3547,4103,4589,4967,5230,5407,5550,5695,5868, 6062,6253,6432,6631,6898,7266,7710,8120,8371,8396, 8221,7918,7566,7233,6967,6788,6711,6743,6869,7019, 7118,7099,6916,6548,6007,5352,4710,4242,4066,4203, 4567,5021,5451,5783,5965,5975,5825,5546,5158,4679, 4140,3571,2965,2285,1456,427,-800,-2122,-3379,-4466, -5366,-6091,-6632,-7002,-7251,-7434,-7604,-7821,-8172,-8693, -9346,-10065,-10810,-11538,-12162,-12639,-12991,-13249,-13351,-13168, -12618,-11688,-10411,-8877,-7240,-5689,-4328,-3175,-2214,-1421, -784,-286,164,739,1585,2690,3908,5077,6055,6707, 6944,6803,6410,5862,5195,4438,3646,2893,2236,1730, 1395,1224,1179,1211,1266,1282,1183,895,389,-287, -1052,-1810,-2479,-3012,-3423,-3767,-4102,-4438,-4710,-4841, -4790,-4592,-4346,-4105,-3847,-3510,-3069,-2530,-1930,-1331, -839,-579,-642,-1021,-1604,-2232,-2785,-3209,-3503,-3664, -3658,-3478,-3177,-2842,-2534,-2261,-2000,-1735,-1462,-1168, -844,-498,-131,279,761,1324,1949,2581,3153,3619, 3991,4337,4704,5053,5309,5431,5477,5548,5709,5966, 6305,6713,7176,7623,7967,8144,8140,7999,7773,7481, 7143,6813,6599,6580,6752,7033,7312,7462,7370,6987, 6369,5657,5008,4509,4204,4108,4217,4488,4865,5270, 5593,5736,5684,5506,5282,5060,4830,4552,4173,3638, 2912,1994,917,-283,-1539,-2769,-3892,-4852,-5616,-6150, -6472,-6663,-6832,-7076,-7452,-7972,-8589,-9219,-9805,-10387, -11037,-11798,-12603,-13307,-13780,-13942,-13769,-13255,-12420,-11301, -9948,-8426,-6842,-5362,-4149,-3285,-2715,-2280,-1805,-1146, -231,919,2187,3425,4525,5433,6110,6509,6609,6426, 5999,5387,4654,3869,3113,2452,1926,1566,1400,1435, 1597,1727,1665,1351,857,294,-265,-827,-1394,-1972, -2557,-3143,-3699,-4170,-4497,-4649,-4667,-4657,-4707,-4789, -4776,-4549,-4084,-3446,-2720,-2000,-1393,-982,-805,-866, -1155,-1633,-2212,-2772,-3202,-3461,-3562,-3544,-3446,-3278, -3056,-2786,-2499,-2218,-1993,-1835,-1678,-1416,-1021,-540, -37,479,995,1507,2016,2556,3120,3655,4111,4469, 4718,4864,4949,5040,5195,5447,5792,6192,6616,7043, 7475,7878,8155,8228,8067,7713,7268,6877,6671,6713, 6948,7257,7538,7723,7749,7562,7139,6520,5803,5122, 4597,4311,4291,4487,4789,5083,5296,5418,5475,5489, 5467,5422,5364,5269,5080,4756,4287,3659,2836,1785, 529,-839,-2157,-3264,-4095,-4689,-5131,-5500,-5868,-6276, -6698,-7089,-7448,-7830,-8314,-8947,-9721,-10570,-11415,-12215, -12953,-13595,-14052,-14199,-13905,-13113,-11890,-10415,-8885,-7469, -6278,-5348,-4635,-4029,-3405,-2689,-1858,-890,239,1506, 2806,4007,5009,5764,6270,6538,6566,6309,5739,4932, 4055,3280,2686,2296,2114,2102,2149,2120,1955,1695, 1422,1149,808,337,-269,-973,-1710,-2385,-2920,-3298, -3598,-3904,-4231,-4547,-4825,-5037,-5124,-5031,-4751,-4301, -3686,-2937,-2154,-1497,-1095,-976,-1075,-1308,-1629,-2036, -2513,-2981,-3343,-3519,-3511,-3365,-3147,-2916,-2723,-2586, -2488,-2374,-2193,-1929,-1596,-1226,-838,-439,-11,460, 993,1589,2224,2839,3352,3723,3983,4197,4405,4596, 4746,4867,5033,5325,5791,6399,7038,7574,7914,8034, 7953,7709,7377,7053,6815,6723,6822,7107,7502,7855, 8032,7964,7637,7076,6373,5675,5116,4753,4571,4533, 4588,4692,4826,4983,5143,5260,5295,5268,5245,5275, 5337,5360,5250,4906,4252,3275,2076,826,-335,-1380, -2335,-3201,-3964,-4596,-5081,-5452,-5769,-6097,-6470,-6899, -7379,-7896,-8457,-9095,-9865,-10797,-11865,-12953,-13869,-14407, -14447,-14023,-13245,-12209,-10996,-9700,-8470,-7423,-6591,-5901, -5237,-4513,-3688,-2767,-1757,-649,551,1800,3050,4248, 5310,6095,6495,6482,6100,5458,4724,4067,3572,3203, 2896,2630,2414,2259,2162,2113,2063,1925,1625,1136, 499,-181,-801,-1349,-1871,-2389,-2856,-3240,-3587,-3998, -4492,-4983,-5334,-5453,-5321,-4970,-4449,-3823,-3163,-2518, -1938,-1484,-1211,-1163,-1339,-1691,-2149,-2623,-3016,-3260, -3337,-3308,-3238,-3161,-3068,-2966,-2862,-2736,-2555,-2333, -2127,-1956,-1766,-1466,-1019,-460,134,711,1259,1802, 2350,2877,3339,3687,3891,3962,3979,4055,4261,4614, 5091,5668,6301,6915,7414,7719,7793,7662,7382,7039, 6741,6607,6716,7035,7449,7835,8077,8101,7889,7497, 7001,6468,5923,5402,4973,4694,4588,4634,4763,4882, 4923,4878,4803,4803,4961,5261,5569,5740,5702,5462, 5032,4405,3600,2655,1610,484,-663,-1739,-2636,-3321, -3861,-4355,-4870,-5386,-5826,-6139,-6372,-6635,-7030,-7609, -8399,-9400,-10581,-11819,-12966,-13873,-14417,-14519,-14184,-13491, -12565,-11528,-10492,-9536,-8665,-7827,-6983,-6152,-5361,-4595, -3799,-2913,-1846,-526,1005,2577,3984,5075,5778,6086, 6065,5838,5499,5065,4532,3958,3460,3108,2894,2771, 2698,2645,2565,2423,2192,1848,1357,733,71,-506, -954,-1341,-1752,-2224,-2749,-3332,-3951,-4537,-5004,-5308, -5438,-5390,-5158,-4743,-4159,-3459,-2740,-2101,-1628,-1374, -1365,-1574,-1898,-2220,-2499,-2747,-2977,-3178,-3320,-3375, -3321,-3168,-2976,-2822,-2748,-2726,-2689,-2571,-2357,-2074, -1746,-1374,-936,-410,192,850,1519,2147,2662,3018, 3219,3302,3344,3407,3550,3819,4240,4814,5508,6242, 6891,7337,7510,7417,7150,6844,6633,6589,6729,6996, 7310,7615,7875,8066,8142,8026,7664,7093,6441,5856, 5427,5169,5038,4956,4842,4672,4486,4363,4370,4515, 4758,5017,5241,5429,5598,5714,5669,5360,4763,3944, 2990,1981,983,29,-896,-1804,-2665,-3437,-4100,-4643, -5050,-5311,-5461,-5596,-5821,-6229,-6870,-7780,-8952,-10298, -11646,-12804,-13629,-14085,-14198,-14019,-13599,-13007,-12284,-11438, -10469,-9446,-8492,-7717,-7134,-6630,-6015,-5150,-4017,-2680, -1216,309,1804,3160,4290,5141,5676,5871,5777,5491, 5095,4633,4137,3689,3367,3201,3155,3166,3165,3076, 2834,2437,1950,1457,983,537,115,-290,-718,-1211, -1788,-2414,-3049,-3666,-4245,-4776,-5212,-5499,-5555,-5326, -4836,-4170,-3468,-2849,-2367,-2012,-1762,-1619,-1609,-1747, -2021,-2371,-2717,-2993,-3157,-3206,-3179,-3127,-3061,-2978, -2887,-2814,-2747,-2680,-2604,-2526,-2414,-2200,-1835,-1331, -715,-31,670,1338,1929,2413,2743,2897,2902,2843, 2833,2983,3373,4032,4874,5720,6394,6820,7024,7072, 7030,6925,6788,6669,6634,6756,7049,7452,7888,8260, 8448,8355,8007,7545,7111,6754,6448,6133,5773,5387, 5045,4799,4634,4503,4387,4325,4371,4549,4855,5232, 5590,5840,5929,5814,5477,4949,4293,3557,2746,1862, 924,-46,-1032,-2011,-2921,-3671,-4200,-4489,-4583,-4575, -4596,-4790,-5290,-6167,-7357,-8681,-9949,-11065,-12023,-12843, -13515,-13976,-14130,-13902,-13312,-12497,-11625,-10796,-10044,-9373, -8784,-8238,-7649,-6916,-5989,-4862,-3554,-2085,-516,1033, 2443,3652,4634,5343,5710,5737,5489,5072,4602,4192, 3919,3801,3801,3839,3820,3678,3407,3048,2652,2256, 1884,1533,1168,747,283,-168,-596,-1066,-1667,-2414, -3245,-4056,-4737,-5185,-5372,-5318,-5103,-4765,-4315,-3767, -3183,-2638,-2179,-1840,-1657,-1659,-1819,-2053,-2286,-2506, -2720,-2911,-3041,-3100,-3083,-2994,-2864,-2744,-2683,-2692, -2735,-2775,-2775,-2684,-2461,-2111,-1659,-1089,-372,465, 1295,1936,2282,2345,2239,2098,2072,2277,2745,3399, 4119,4833,5516,6139,6637,6946,7030,6906,6662,6455, 6436,6660,7071,7541,7944,8214,8354,8404,8371,8228, 7967,7637,7289,6929,6554,6194,5863,5530,5164,4785, 4466,4275,4257,4407,4691,5049,5423,5741,5937,5978, 5879,5657,5306,4826,4243,3566,2779,1857,782,-416, -1626,-2653,-3313,-3570,-3549,-3459,-3480,-3707,-4147,-4780, -5587,-6563,-7690,-8927,-10195,-11395,-12420,-13186,-13643,-13768, -13574,-13126,-12514,-11838,-11175,-10587,-10082,-9610,-9099,-8493, -7751,-6829,-5711,-4424,-3011,-1482,134,1732,3150,4265, 5024,5405,5426,5190,4870,4615,4483,4440,4419,4363, 4259,4127,3975,3783,3512,3147,2708,2250,1848,1555, 1351,1118,765,251,-411,-1199,-2057,-2890,-3632,-4257, -4747,-5071,-5198,-5110,-4806,-4339,-3803,-3277,-2783,-2348, -2020,-1829,-1744,-1748,-1856,-2080,-2367,-2641,-2832,-2908, -2885,-2820,-2759,-2707,-2642,-2566,-2532,-2581,-2707,-2855, -2956,-2911,-2604,-1990,-1136,-203,636,1249,1590,1710, 1729,1738,1755,1784,1917,2307,3005,3902,4819,5600, 6156,6458,6527,6432,6306,6259,6346,6551,6825,7139, 7483,7839,8161,8380,8455,8397,8250,8049,7817,7572, 7328,7059,6712,6256,5727,5209,4765,4450,4299,4307, 4448,4705,5062,5441,5723,5822,5768,5662,5585,5536, 5421,5099,4455,3461,2225,935,-240,-1205,-1927,-2416, -2692,-2818,-2877,-2954,-3118,-3429,-3937,-4671,-5646,-6838, -8163,-9515,-10783,-11865,-12675,-13158,-13311,-13199,-12906,-12511, -12076,-11632,-11183,-10732,-10271,-9779,-9214,-8558,-7772,-6783, -5520,-3986,-2263,-482,1184,2585,3622,4313,4735,4962, 5033,4985,4863,4736,4669,4685,4751,4791,4741,4563, 4237,3802,3355,2993,2734,2532,2332,2107,1830,1450, 915,226,-557,-1379,-2211,-3040,-3807,-4414,-4770,-4853, -4745,-4537,-4262,-3889,-3414,-2894,-2411,-2023,-1774,-1682, -1721,-1827,-1959,-2118,-2310,-2500,-2643,-2726,-2718,-2580, -2327,-2085,-2019,-2215,-2601,-2996,-3227,-3204,-2931,-2459, -1832,-1089,-292,467,1088,1490,1635,1544,1330,1170, 1227,1592,2254,3108,4002,4799,5419,5847,6107,6218, 6222,6186,6189,6289,6509,6837,7236,7654,8025,8290, 8421,8446,8429,8414,8389,8312,8147,7904,7589,7188, 6681,6087,5474,4935,4586,4500,4658,4920,5145,5262, 5292,5318,5429,5658,5960,6218,6302,6112,5616,4835, 3833,2704,1553,477,-452,-1181,-1700,-2022,-2185,-2246, -2273,-2357,-2588,-3048,-3786,-4798,-6041,-7434,-8857,-10157, -11207,-11967,-12463,-12744,-12843,-12790,-12613,-12323,-11937,-11502, -11113,-10826,-10597,-10286,-9759,-8947,-7831,-6421,-4786,-3067, -1414,111,1495,2686,3595,4169,4445,4520,4535,4588, 4708,4857,4985,5059,5039,4884,4598,4256,3925,3626, 3348,3092,2870,2686,2515,2309,1995,1490,768,-103, -1026,-1922,-2749,-3486,-4098,-4553,-4822,-4900,-4783,-4482, -4044,-3562,-3135,-2794,-2505,-2216,-1942,-1761,-1757,-1957, -2295,-2644,-2863,-2876,-2698,-2420,-2173,-2048,-2079,-2251, -2520,-2839,-3161,-3408,-3483,-3308,-2844,-2108,-1198,-293, 426,856,995,928,761,617,622,852,1305,1940, 2706,3532,4328,4995,5446,5659,5686,5653,5672,5792, 6005,6295,6641,7017,7375,7693,7950,8118,8180,8182, 8210,8303,8415,8435,8260,7833,7196,6469,5816,5348, 5078,4947,4876,4810,4729,4663,4650,4736,4955,5293, 5698,6087,6357,6415,6208,5729,5003,4083,3035,1947, 897,-47,-811,-1351,-1661,-1782,-1762,-1672,-1642,-1841, -2383,-3259,-4389,-5663,-6981,-8266,-9474,-10557,-11470,-12179, -12643,-12835,-12768,-12525,-12239,-12043,-11975,-11967,-11906,-11713, -11344,-10773,-9973,-8923,-7620,-6090,-4399,-2659,-1004,447, 1616,2465,3030,3417,3732,4029,4318,4576,4767,4883, 4943,4948,4853,4622,4289,3938,3628,3367,3170,3063, 3005,2889,2621,2195,1652,1022,303,-526,-1474,-2482, -3405,-4113,-4550,-4759,-4814,-4769,-4646,-4450,-4157,-3731, -3193,-2654,-2254,-2079,-2130,-2327,-2562,-2743,-2835,-2852, -2797,-2661,-2449,-2220,-2077,-2098,-2308,-2684,-3162,-3627, -3928,-3926,-3561,-2897,-2081,-1272,-579,-57,274,407, 367,223,88,93,336,846,1569,2398,3199,3874, 4389,4766,5029,5182,5234,5254,5347,5592,5982,6436, 6849,7143,7307,7400,7521,7752,8091,8450,8714,8776, 8598,8199,7658,7087,6569,6137,5785,5497,5235,4952, 4645,4384,4257,4294,4481,4792,5199,5641,6037,6312, 6398,6240,5829,5204,4408,3444,2338,1186,140,-665, -1169,-1372,-1342,-1196,-1091,-1170,-1506,-2085,-2848,-3772, -4887,-6199,-7617,-8993,-10192,-11135,-11777,-12133,-12280,-12333, -12353,-12368,-12391,-12439,-12496,-12511,-12440,-12250,-11864,-11155, -10061,-8646,-7045,-5382,-3753,-2237,-897,244,1207,2014, 2668,3167,3549,3894,4254,4616,4898,5022,4961,4749, 4460,4185,3972,3810,3647,3458,3263,3102,2989,2883, 2687,2286,1613,707,-294,-1270,-2132,-2857,-3479,-4048, -4551,-4914,-5055,-4954,-4649,-4216,-3727,-3258,-2876,-2625, -2508,-2509,-2597,-2746,-2923,-3054,-3053,-2868,-2532,-2158, -1898,-1865,-2094,-2523,-3048,-3544,-3898,-4042,-3939,-3568, -2959,-2198,-1423,-768,-326,-127,-133,-239,-328,-316, -174,110,562,1204,1999,2828,3540,4037,4317,4438, 4502,4634,4910,5286,5664,5966,6184,6345,6500,6706, 7016,7432,7906,8360,8687,8800,8681,8418,8096,7752, 7382,7000,6631,6279,5897,5445,4956,4529,4241,4125, 4183,4406,4755,5152,5530,5877,6182,6416,6491,6296, 5738,4815,3651,2451,1381,522,-109,-536,-778,-860, -822,-742,-715,-846,-1228,-1926,-2938,-4214,-5636,-7051, -8325,-9407,-10308,-11017,-11514,-11807,-11958,-12054,-12151,-12295, -12524,-12822,-13108,-13246,-13111,-12636,-11831,-10759,-9478,-8031, -6473,-4888,-3352,-1955,-779,162,959,1728,2496,3205, 3792,4239,4552,4744,4836,4877,4878,4790,4582,4264, 3924,3683,3604,3662,3742,3713,3490,3089,2558,1949, 1257,466,-407,-1318,-2232,-3105,-3870,-4437,-4749,-4832, -4739,-4515,-4183,-3774,-3328,-2918,-2640,-2571,-2707,-2936, -3127,-3184,-3078,-2822,-2473,-2125,-1875,-1774,-1846,-2110, -2572,-3149,-3693,-4051,-4120,-3870,-3365,-2740,-2105,-1521, -1021,-646,-444,-413,-519,-674,-744,-596,-171,475, 1219,1939,2546,3009,3342,3609,3891,4243,4650,5027, 5304,5461,5548,5647,5826,6118,6523,7020,7560,8049, 8410,8604,8646,8570,8414,8222,8025,7821,7571,7210, 6710,6100,5481,4973,4629,4423,4287,4206,4232,4436, 4834,5371,5934,6402,6679,6682,6359,5730,4880,3912, 2908,1923,1009,240,-306,-564,-543,-353,-148,-54, -173,-591,-1338,-2362,-3564,-4875,-6240,-7568,-8748,-9699, -10380,-10792,-11013,-11179,-11426,-11793,-12240,-12696,-13102,-13426, -13616,-13590,-13262,-12583,-11572,-10283,-8809,-7285,-5861,-4587, -3400,-2218,-1048,41,990,1792,2469,3065,3627,4152, 4575,4824,4869,4743,4519,4282,4104,4016,4001,4011, 4002,3928,3786,3582,3327,2987,2509,1858,1036,89, -891,-1819,-2664,-3433,-4106,-4609,-4856,-4811,-4512,-4070, -3627,-3295,-3116,-3075,-3136,-3249,-3366,-3430,-3376,-3162, -2799,-2353,-1942,-1692,-1697,-1973,-2434,-2946,-3409,-3779, -4020,-4084,-3917,-3498,-2884,-2202,-1593,-1154,-928,-915, -1050,-1196,-1215,-1035,-666,-180,345,840,1280,1690, 2135,2639,3175,3692,4147,4499,4724,4832,4877,4933, 5075,5351,5778,6333,6935,7474,7854,8057,8158,8261, 8397,8513,8524,8403,8154,7794,7339,6821,6297,5798, 5312,4805,4311,3944,3810,3944,4300,4805,5358,5852, 6228,6460,6514,6326,5868,5156,4236,3168,2071,1098, 394,6,-119,-77,45,179,272,254,2,-619, -1636,-2939,-4349,-5726,-6967,-7993,-8781,-9387,-9883,-10298, -10643,-10966,-11358,-11878,-12519,-13212,-13819,-14160,-14105,-13659, -12922,-11997,-10936,-9753,-8463,-7093,-5705,-4370,-3144,-2039, -1033,-89,850,1806,2723,3496,4056,4399,4550,4567, 4535,4509,4488,4436,4348,4265,4221,4220,4237,4232, 4140,3911,3546,3091,2557,1892,1047,30,-1073,-2155, -3102,-3820,-4246,-4393,-4327,-4110,-3780,-3414,-3138,-3057, -3181,-3410,-3610,-3675,-3561,-3272,-2859,-2407,-2008,-1736, -1610,-1646,-1870,-2289,-2836,-3393,-3841,-4084,-4042,-3689, -3103,-2452,-1900,-1541,-1373,-1355,-1404,-1410,-1292,-1059, -786,-519,-252,53,411,816,1265,1787,2414,3111, 3746,4173,4351,4368,4351,4405,4597,4946,5420,5944, 6437,6856,7209,7546,7911,8286,8596,8766,8804,8752, 8660,8539,8367,8094,7668,7079,6372,5641,4989,4487, 4196,4139,4284,4552,4906,5357,5900,6436,6816,6924, 6720,6210,5460,4561,3583,2591,1674,938,450,226, 264,529,880,1102,1039,646,-61,-1043,-2231,-3522, -4828,-6084,-7190,-8037,-8572,-8890,-9168,-9555,-10123,-10862, -11690,-12500,-13186,-13686,-13964,-14013,-13834,-13391,-12646,-11612, -10382,-9080,-7802,-6597,-5465,-4362,-3239,-2062,-844,340, 1403,2285,3001,3584,4048,4379,4568,4630,4610,4567, 4547,4569,4610,4625,4587,4512,4454,4442,4430,4290, 3947,3403,2687,1783,702,-467,-1591,-2575,-3337,-3794, -3904,-3737,-3442,-3185,-3061,-3099,-3264,-3482,-3664,-3734, -3665,-3473,-3173,-2762,-2268,-1782,-1430,-1290,-1391,-1742, -2320,-3007,-3600,-3905,-3854,-3536,-3106,-2681,-2304,-1989, -1767,-1658,-1613,-1550,-1399,-1173,-931,-731,-595,-498, -373,-115,340,991,1753,2507,3129,3529,3708,3765, 3851,4036,4299,4569,4838,5151,5531,5969,6441,6938, 7423,7825,8109,8300,8453,8611,8793,8964,9023,8877, 8493,7927,7276,6603,5938,5302,4738,4312,4078,4081, 4347,4830,5419,5982,6430,6712,6810,6705,6369,5758, 4862,3787,2703,1771,1106,735,639,743,946,1171, 1357,1406,1196,617,-354,-1636,-3057,-4406,-5514,-6339, -6938,-7414,-7867,-8375,-8980,-9672,-10427,-11229,-12068,-12909, -13685,-14271,-14520,-14366,-13847,-13068,-12142,-11144,-10126,-9086, -7987,-6787,-5526,-4280,-3094,-1933,-743,456,1560,2442, 3082,3536,3888,4173,4397,4549,4636,4661,4648,4623, 4622,4639,4666,4712,4777,4823,4776,4567,4147,3451, 2442,1188,-127,-1305,-2216,-2828,-3156,-3243,-3177,-3073, -3031,-3086,-3231,-3421,-3623,-3818,-3980,-4022,-3821,-3325, -2633,-1936,-1406,-1140,-1180,-1510,-2045,-2646,-3178,-3537, -3647,-3500,-3184,-2831,-2542,-2338,-2204,-2104,-1977,-1752, -1438,-1129,-944,-936,-1032,-1092,-991,-691,-213,374, 1003,1608,2142,2602,2999,3342,3626,3845,3977,4053, 4173,4437,4854,5364,5887,6369,6781,7120,7420,7737, 8115,8525,8883,9122,9226,9214,9100,8875,8505,7946, 7202,6351,5541,4915,4535,4375,4384,4544,4866,5346, 5937,6538,7016,7233,7102,6624,5882,4998,4068,3154, 2297,1568,1074,898,1043,1415,1851,2160,2161,1761, 992,-22,-1156,-2311,-3409,-4383,-5227,-5956,-6586,-7099, -7534,-7996,-8630,-9513,-10596,-11723,-12721,-13484,-13983,-14234, -14238,-13987,-13482,-12753,-11876,-10934,-9975,-8990,-7924,-6735, -5441,-4104,-2787,-1543,-404,619,1529,2325,2983,3491, 3868,4142,4349,4514,4634,4667,4607,4527,4522,4628, 4825,5078,5322,5445,5295,4771,3873,2719,1474,298, -711,-1538,-2181,-2614,-2822,-2838,-2760,-2724,-2835,-3127, -3548,-3999,-4356,-4495,-4335,-3867,-3179,-2425,-1762,-1324, -1196,-1391,-1846,-2428,-2955,-3282,-3369,-3294,-3172,-3075, -3010,-2928,-2774,-2516,-2174,-1816,-1520,-1351,-1334,-1427, -1522,-1512,-1363,-1115,-801,-431,-4,494,1061,1668, 2252,2733,3048,3205,3276,3364,3556,3874,4274,4684, 5050,5388,5755,6196,6683,7148,7550,7894,8233,8603, 8999,9342,9532,9489,9200,8704,8081,7396,6696,5986, 5282,4669,4273,4183,4398,4850,5437,6053,6585,6945, 7103,7058,6786,6228,5374,4309,3203,2244,1575,1265, 1314,1623,2003,2272,2335,2197,1878,1356,583,-445, -1634,-2812,-3811,-4547,-5078,-5534,-6017,-6584,-7257,-8052, -8978,-10027,-11154,-12254,-13193,-13859,-14221,-14286,-14099,-13726, -13244,-12670,-11962,-11084,-10074,-8994,-7865,-6657,-5356,-4013, -2719,-1531,-456,520,1388,2137,2781,3332,3800,4154, 4349,4358,4217,4057,4039,4250,4638,5079,5453,5678, 5680,5424,4907,4138,3134,1958,730,-404,-1313,-1918, -2223,-2298,-2278,-2300,-2468,-2815,-3318,-3922,-4504,-4886, -4920,-4551,-3873,-3062,-2324,-1820,-1630,-1737,-2039,-2385, -2668,-2857,-2991,-3129,-3297,-3453,-3521,-3422,-3146,-2757, -2379,-2102,-1937,-1856,-1818,-1795,-1754,-1698,-1645,-1605, -1532,-1344,-972,-428,213,817,1294,1647,1953,2263, 2568,2846,3088,3287,3466,3690,4027,4469,4930,5327, 5663,5995,6384,6851,7379,7917,8411,8813,9104,9269, 9329,9268,9027,8534,7787,6887,5980,5202,4645,4347, 4299,4460,4768,5199,5743,6369,6965,7364,7396,6968, 6131,5077,4025,3134,2452,1965,1671,1597,1757,2079, 2419,2618,2559,2201,1568,723,-240,-1226,-2149,-2975, -3693,-4301,-4793,-5225,-5720,-6405,-7321,-8392,-9528,-10664, -11743,-12679,-13405,-13891,-14136,-14156,-13987,-13659,-13188,-12574, -11822,-10957,-9982,-8879,-7638,-6302,-4974,-3747,-2652,-1638, -625,430,1489,2417,3109,3538,3745,3786,3749,3746, 3852,4084,4399,4766,5176,5600,5951,6098,5926,5408, 4603,3589,2435,1235,153,-655,-1131,-1333,-1382,-1430, -1613,-2032,-2690,-3488,-4245,-4765,-4910,-4644,-4080,-3425, -2856,-2452,-2206,-2070,-2001,-1995,-2079,-2282,-2600,-2977, -3328,-3559,-3595,-3438,-3174,-2905,-2674,-2459,-2232,-1995, -1791,-1676,-1689,-1817,-1977,-2046,-1942,-1662,-1283,-888, -502,-101,350,839,1300,1688,1998,2253,2461,2663, 2927,3274,3628,3919,4146,4400,4742,5171,5648,6139, 6634,7118,7582,8046,8541,9056,9505,9755,9699,9315, 8686,7942,7189,6471,5765,5067,4462,4117,4163,4601, 5298,6066,6734,7195,7382,7257,6826,6139,5268,4295, 3340,2555,2061,1882,1955,2176,2434,2647,2753,2691, 2392,1825,1038,137,-768,-1601,-2312,-2885,-3364,-3816, -4311,-4923,-5706,-6648,-7696,-8798,-9934,-11066,-12112,-12970, -13563,-13900,-14050,-14083,-14012,-13796,-13379,-12738,-11883,-10850, -9714,-8574,-7488,-6425,-5300,-4055,-2718,-1396,-190,855, 1735,2421,2886,3141,3244,3289,3362,3513,3775,4167, 4680,5261,5813,6224,6400,6258,5754,4909,3812,2602, 1446,522,-37,-249,-290,-406,-752,-1355,-2144,-2999, -3769,-4301,-4521,-4485,-4311,-4067,-3749,-3342,-2874,-2411, -2039,-1838,-1867,-2112,-2472,-2819,-3065,-3221,-3351,-3470, -3515,-3399,-3099,-2680,-2267,-1970,-1837,-1851,-1950,-2042, -2083,-2064,-2012,-1942,-1820,-1580,-1206,-736,-247,201, 578,885,1163,1471,1838,2227,2569,2830,3017,3179, 3378,3662,4054,4507,4918,5230,5508,5908,6514,7260, 7994,8602,9067,9396,9590,9649,9551,9241,8647,7780, 6760,5758,4937,4420,4254,4406,4811,5397,6095,6800, 7332,7537,7359,6849,6110,5240,4324,3464,2774,2346, 2193,2257,2449,2693,2909,3000,2866,2467,1851,1122, 384,-302,-942,-1538,-2091,-2580,-3025,-3501,-4098,-4866, -5817,-6926,-8121,-9299,-10366,-11275,-12065,-12794,-13476,-14029, -14342,-14350,-14072,-13580,-12961,-12270,-11516,-10683,-9761,-8749, -7634,-6408,-5082,-3694,-2325,-1058,61,1016,1777,2294, 2571,2707,2827,2992,3202,3485,3920,4563,5362,6141, 6704,6906,6652,5930,4860,3695,2703,2019,1617,1367, 1119,735,158,-559,-1306,-1996,-2616,-3192,-3728,-4179, -4451,-4461,-4193,-3725,-3197,-2723,-2362,-2125,-1988,-1941, -2001,-2206,-2553,-2982,-3381,-3626,-3659,-3485,-3176,-2824, -2514,-2267,-2063,-1904,-1827,-1866,-1990,-2131,-2217,-2216, -2094,-1833,-1460,-1071,-750,-503,-247,107,576,1079, 1498,1782,1970,2159,2422,2765,3140,3475,3708,3841, 3967,4218,4661,5253,5891,6491,7046,7596,8199,8860, 9495,9974,10177,10067,9677,9044,8182,7156,6116,5253, 4696,4485,4612,5052,5724,6477,7139,7564,7680,7481, 7013,6332,5485,4555,3692,3054,2716,2647,2765,2976, 3176,3286,3250,3051,2692,2198,1600,926,235,-381, -841,-1151,-1443,-1867,-2497,-3307,-4218,-5159,-6097,-7048, -8047,-9120,-10233,-11318,-12305,-13134,-13728,-14039,-14088,-13948, -13674,-13271,-12754,-12166,-11520,-10766,-9841,-8724,-7445,-6058, -4627,-3210,-1885,-716,267,1081,1710,2111,2267,2264, 2272,2467,2959,3764,4798,5872,6705,7048,6843,6228, 5433,4673,4048,3545,3090,2622,2128,1629,1122,594, 4,-679,-1473,-2316,-3088,-3677,-4046,-4206,-4193,-4067, -3857,-3529,-3057,-2518,-2076,-1861,-1880,-2071,-2394,-2802, -3198,-3475,-3594,-3591,-3505,-3324,-3023,-2616,-2196,-1901, -1828,-1963,-2186,-2358,-2394,-2298,-2139,-1988,-1874,-1760, -1568,-1240,-799,-336,60,354,577,811,1151,1611, 2089,2448,2642,2753,2890,3089,3328,3595,3903,4279, 4728,5229,5773,6381,7079,7854,8636,9335,9884,10232, 10297,9997,9316,8348,7253,6207,5365,4834,4644,4775, 5195,5834,6567,7227,7668,7799,7584,7037,6232,5320, 4475,3815,3368,3101,2971,2973,3113,3338,3511,3484, 3193,2698,2108,1528,1016,611,304,28,-328,-824, -1425,-2072,-2750,-3481,-4278,-5145,-6107,-7195,-8391,-9629, -10808,-11860,-12736,-13403,-13827,-13994,-13954,-13810,-13626,-13387, -13019,-12476,-11756,-10865,-9794,-8571,-7253,-5873,-4433,-2945, -1494,-243,643,1087,1129,973,916,1221,1971,3044, 4198,5211,5949,6367,6482,6355,6061,5641,5114,4520, 3954,3491,3145,2849,2471,1921,1202,410,-375,-1143, -1900,-2605,-3222,-3740,-4145,-4359,-4287,-3929,-3411,-2893, -2479,-2203,-2063,-2043,-2133,-2342,-2701,-3168,-3615,-3875, -3857,-3588,-3176,-2752,-2430,-2272,-2250,-2257,-2206,-2111, -2079,-2187,-2374,-2488,-2410,-2143,-1794,-1482,-1241,-1033, -807,-530,-187,210,636,1052,1415,1698,1917,2123, 2359,2597,2797,2971,3175,3443,3762,4122,4542,5063, 5712,6501,7402,8342,9217,9919,10343,10401,10054,9344, 8410,7402,6427,5567,4920,4626,4778,5330,6085,6802, 7333,7628,7667,7430,6923,6215,5400,4578,3848,3326, 3101,3158,3375,3581,3649,3542,3277,2902,2488,2099, 1758,1451,1137,782,391,-21,-450,-928,-1467,-2051, -2672,-3365,-4197,-5193,-6332,-7585,-8886,-10140,-11221,-12065, -12704,-13200,-13579,-13840,-13975,-13970,-13781,-13396,-12880,-12338, -11787,-11104,-10109,-8707,-6967,-5075,-3287,-1865,-973,-584, -488,-410,-154,340,1035,1873,2833,3857,4832,5616, 6120,6319,6234,5922,5503,5095,4765,4498,4233,3901, 3453,2899,2302,1719,1114,403,-449,-1390,-2296,-3057, -3607,-3936,-4065,-4026,-3847,-3543,-3130,-2636,-2145,-1810, -1781,-2096,-2625,-3135,-3448,-3549,-3545,-3517,-3449,-3283, -3001,-2651,-2313,-2063,-1954,-1988,-2124,-2300,-2437,-2454, -2333,-2140,-1964,-1822,-1675,-1485,-1255,-992,-682,-325, 59,450,830,1180,1480,1730,1952,2173,2392,2595, 2781,2974,3166,3329,3502,3811,4379,5211,6183,7167, 8118,9026,9815,10358,10545,10321,9688,8723,7589,6510, 5694,5241,5130,5301,5690,6251,6897,7493,7891,7979, 7694,7057,6184,5274,4526,4035,3786,3716,3760,3827, 3831,3728,3532,3286,3004,2695,2390,2120,1868,1574, 1211,813,422,51,-321,-701,-1112,-1616,-2306,-3237, -4383,-5623,-6821,-7933,-9001,-10064,-11102,-12055,-12855,-13419, -13671,-13630,-13462,-13380,-13476,-13649,-13650,-13240,-12294,-10870, -9138,-7316,-5616,-4186,-3086,-2306,-1783,-1441,-1178,-861, -359,411,1436,2610,3761,4711,5358,5712,5863,5894, 5848,5728,5522,5238,4914,4585,4275,3979,3666,3255, 2646,1810,847,-69,-859,-1583,-2340,-3125,-3792,-4156, -4128,-3764,-3229,-2710,-2323,-2107,-2055,-2150,-2341,-2578, -2847,-3158,-3474,-3705,-3751,-3580,-3247,-2852,-2505,-2265, -2142,-2111,-2140,-2210,-2286,-2333,-2329,-2272,-2194,-2102, -1976,-1794,-1584,-1393,-1195,-910,-510,-73,299,583, 825,1097,1421,1775,2106,2356,2486,2529,2546,2609, 2773,3044,3414,3898,4582,5533,6700,7937,9082,9995, 10550,10657,10334,9702,8881,7945,6976,6116,5530,5311, 5477,5978,6703,7463,8028,8251,8101,7645,6974,6203, 5471,4889,4506,4293,4192,4149,4114,4045,3898,3673, 3417,3203,3032,2843,2571,2219,1826,1440,1108,875, 728,595,344,-142,-882,-1765,-2637,-3438,-4277,-5316, -6613,-8070,-9491,-10679,-11509,-11984,-12235,-12453,-12785,-13265, -13810,-14261,-14448,-14250,-13629,-12625,-11309,-9759,-8076,-6423, -5001,-3954,-3290,-2895,-2588,-2201,-1623,-819,182,1281, 2352,3292,4097,4822,5465,5918,6068,5927,5660,5462, 5401,5391,5289,5031,4637,4171,3690,3200,2650,1942, 1021,-73,-1207,-2223,-2988,-3423,-3545,-3455,-3272,-3039, -2737,-2388,-2087,-1943,-1987,-2183,-2478,-2838,-3215,-3514, -3629,-3535,-3316,-3074,-2849,-2608,-2348,-2137,-2049,-2079, -2140,-2172,-2168,-2151,-2131,-2117,-2106,-2064,-1941,-1704, -1382,-1050,-785,-582,-367,-88,259,647,1047,1422, 1735,1978,2185,2371,2499,2501,2391,2284,2327,2620, 3207,4092,5227,6488,7723,8821,9722,10362,10655,10530, 9994,9142,8117,7075,6198,5676,5620,5979,6563,7196, 7771,8195,8353,8177,7701,7056,6393,5807,5351,5045, 4842,4682,4512,4312,4103,3951,3886,3861,3756,3468, 2994,2451,2026,1837,1838,1851,1714,1388,953,499, 92,-258,-628,-1173,-2042,-3277,-4764,-6291,-7640,-8705, -9512,-10159,-10742,-11317,-11919,-12577,-13291,-14005,-14591,-14910, -14852,-14335,-13340,-11923,-10270,-8639,-7274,-6249,-5469,-4784, -4110,-3456,-2840,-2229,-1535,-660,431,1671,2869,3840, 4520,4962,5251,5446,5591,5702,5746,5655,5434,5194, 5042,4969,4843,4534,3992,3235,2314,1262,147,-917, -1805,-2478,-2969,-3298,-3424,-3315,-3024,-2679,-2392,-2212, -2154,-2234,-2445,-2733,-3033,-3309,-3536,-3673,-3659,-3492, -3247,-3019,-2840,-2679,-2509,-2335,-2189,-2105,-2110,-2206, -2351,-2464,-2471,-2358,-2175,-1990,-1815,-1640,-1450,-1244, -1009,-741,-448,-153,149,508,950,1429,1838,2088, 2146,2039,1828,1603,1482,1583,1966,2598,3424,4436, 5634,6943,8225,9313,10052,10343,10166,9595,8747,7773, 6856,6174,5842,5869,6195,6715,7298,7786,8057,8037, 7757,7334,6909,6534,6147,5684,5165,4687,4351,4205, 4225,4315,4330,4155,3774,3288,2846,2555,2417,2346, 2221,1973,1620,1275,1045,958,927,829,552,19, -818,-1933,-3202,-4478,-5683,-6802,-7818,-8700,-9417,-10024, -10653,-11448,-12458,-13580,-14608,-15308,-15535,-15274,-14616,-13683, -12566,-11331,-10056,-8821,-7697,-6758,-6027,-5477,-4980,-4367, -3521,-2469,-1350,-292,693,1667,2636,3521,4237,4760, 5099,5258,5244,5144,5079,5122,5236,5338,5346,5193, 4837,4276,3537,2651,1651,564,-534,-1543,-2350,-2888, -3173,-3268,-3212,-3034,-2784,-2539,-2376,-2345,-2474,-2735, -3038,-3285,-3447,-3565,-3659,-3716,-3711,-3636,-3478,-3222, -2898,-2587,-2380,-2317,-2362,-2439,-2484,-2499,-2513,-2532, -2518,-2430,-2266,-2052,-1824,-1612,-1448,-1340,-1241,-1063, -733,-248,324,888,1348,1653,1797,1802,1685,1470, 1221,1037,1014,1230,1741,2583,3735,5113,6562,7907, 9006,9751,10065,9926,9369,8517,7573,6769,6286,6185, 6392,6752,7108,7383,7581,7734,7852,7894,7786,7452, 6877,6153,5476,5030,4868,4874,4874,4759,4523,4214, 3888,3606,3407,3269,3113,2842,2441,1998,1654,1493, 1505,1599,1663,1623,1460,1159,657,-139,-1255,-2572, -3884,-5017,-5900,-6577,-7169,-7839,-8710,-9824,-11094,-12348, -13431,-14292,-14950,-15357,-15387,-14939,-14069,-12956,-11769,-10620, -9584,-8715,-7987,-7306,-6579,-5794,-4965,-4105,-3206,-2261, -1248,-143,1042,2203,3195,3925,4385,4646,4792,4896, 5005,5145,5321,5512,5685,5788,5759,5522,5024,4276, 3344,2309,1222,135,-882,-1744,-2361,-2704,-2803,-2718, -2537,-2364,-2286,-2331,-2434,-2518,-2591,-2716,-2933,-3200, -3454,-3649,-3747,-3720,-3582,-3372,-3130,-2875,-2632,-2424, -2270,-2178,-2179,-2280,-2440,-2565,-2572,-2434,-2209,-1988, -1830,-1744,-1706,-1680,-1612,-1447,-1149,-723,-209,328, 835,1288,1660,1899,1941,1760,1409,1004,687,576, 750,1247,2083,3270,4746,6350,7851,9037,9738,9874, 9516,8879,8228,7717,7365,7109,6906,6779,6798,7037, 7474,7976,8367,8517,8376,7970,7398,6812,6355,6070, 5882,5675,5384,5029,4712,4521,4460,4419,4270,3991, 3645,3277,2882,2471,2108,1857,1735,1752,1934,2251, 2528,2512,2051,1192,115,-1002,-2038,-2928,-3682,-4374, -5090,-5880,-6749,-7713,-8818,-10093,-11475,-12826,-13983,-14799, -15175,-15089,-14615,-13899,-13080,-12237,-11387,-10523,-9649,-8791, -7989,-7263,-6594,-5910,-5130,-4182,-3060,-1838,-615,552, 1640,2598,3356,3875,4194,4400,4579,4789,5056,5377, 5723,6029,6223,6240,6052,5655,5025,4133,3007,1773, 587,-413,-1159,-1660,-1971,-2156,-2265,-2312,-2301,-2255, -2214,-2213,-2274,-2419,-2655,-2937,-3183,-3354,-3484,-3614, -3718,-3713,-3549,-3255,-2913,-2595,-2358,-2246,-2264,-2373, -2493,-2553,-2513,-2378,-2210,-2079,-2016,-1982,-1932,-1869, -1815,-1766,-1659,-1423,-1034,-506,113,743,1283,1654, 1828,1811,1625,1281,806,277,-132,-180,341,1471, 3037,4730,6269,7486,8324,8822,9054,9072,8895,8546, 8063,7509,6984,6644,6648,7019,7579,8055,8296,8344, 8274,8121,7900,7639,7346,6991,6549,6072,5667,5392, 5210,5049,4872,4707,4595,4512,4368,4044,3492,2793, 2125,1689,1604,1852,2288,2714,2966,2956,2664,2112, 1362,498,-405,-1309,-2162,-2898,-3491,-4016,-4636,-5495, -6645,-8057,-9632,-11215,-12604,-13646,-14319,-14707,-14856,-14741, -14342,-13702,-12922,-12095,-11272,-10493,-9782,-9125,-8479,-7797, -7042,-6182,-5184,-4037,-2768,-1460,-215,893,1807,2508, 3035,3459,3828,4145,4420,4716,5090,5550,6034,6443, 6662,6585,6158,5393,4388,3282,2193,1183,262,-546, -1200,-1653,-1917,-2038,-2079,-2097,-2135,-2203,-2281,-2366, -2474,-2631,-2836,-3088,-3381,-3689,-3924,-3986,-3840,-3555, -3246,-2993,-2812,-2686,-2601,-2557,-2546,-2540,-2520,-2487, -2437,-2347,-2211,-2081,-2025,-2070,-2172,-2234,-2167,-1940, -1601,-1216,-808,-321,302,1046,1738,2131,2065,1559, 782,-56,-728,-988,-659,226,1433,2711,3961,5207, 6434,7537,8381,8860,8925,8601,8029,7438,7037,6907, 6995,7181,7380,7570,7775,8001,8206,8308,8247,8023, 7714,7405,7110,6764,6306,5780,5307,5015,4943,5035, 5176,5215,5007,4496,3763,2990,2349,1931,1762,1841, 2129,2514,2865,3082,3126,2932,2428,1623,653,-266, -978,-1456,-1811,-2214,-2794,-3608,-4668,-5958,-7417,-8945, -10441,-11817,-13000,-13916,-14517,-14791,-14763,-14481,-14003,-13394, -12706,-11982,-11282,-10676,-10169,-9681,-9084,-8293,-7305,-6176, -4958,-3697,-2446,-1260,-167,830,1693,2344,2768,3051, 3319,3677,4191,4855,5565,6175,6581,6757,6690,6341, 5705,4837,3833,2771,1711,723,-101,-711,-1123,-1421, -1680,-1918,-2080,-2139,-2124,-2105,-2150,-2295,-2553,-2913, -3296,-3607,-3795,-3866,-3860,-3791,-3670,-3504,-3295,-3055, -2843,-2750,-2786,-2840,-2774,-2578,-2380,-2292,-2304,-2327, -2323,-2309,-2288,-2250,-2213,-2231,-2295,-2281,-2011,-1379, -435,615,1505,1985,1962,1505,811,92,-469,-796, -884,-748,-329,482,1718,3244,4838,6252,7290,7889, 8128,8148,8030,7792,7474,7183,7035,7063,7231,7482, 7745,7945,8047,8096,8176,8299,8376,8277,7932,7379, 6729,6107,5625,5385,5406,5585,5732,5701,5432,4971, 4378,3712,3025,2393,1925,1727,1864,2291,2850,3315, 3509,3366,2922,2279,1555,877,321,-116,-496,-884, -1332,-1909,-2690,-3729,-5010,-6467,-8013,-9549,-10989,-12260, -13301,-14058,-14494,-14591,-14387,-13969,-13460,-12944,-12465,-12031, -11608,-11134,-10554,-9856,-9059,-8176,-7175,-5997,-4650,-3233, -1891,-741,176,884,1429,1866,2284,2775,3379,4056, 4755,5459,6147,6720,7066,7111,6838,6244,5375,4371, 3385,2468,1599,777,60,-535,-1030,-1400,-1579,-1570, -1513,-1564,-1760,-2001,-2211,-2422,-2711,-3078,-3430,-3669, -3762,-3742,-3638,-3495,-3361,-3270,-3218,-3154,-3010,-2773, -2523,-2372,-2364,-2437,-2480,-2405,-2202,-1934,-1746,-1792, -2115,-2581,-2939,-2975,-2581,-1794,-789,176,911,1373, 1628,1699,1532,1080,393,-381,-1040,-1390,-1289,-693, 327,1624,3033,4423,5700,6764,7500,7852,7876,7717, 7532,7417,7402,7466,7562,7633,7659,7692,7826,8111, 8509,8888,9090,9000,8611,8030,7427,6908,6517,6252, 6121,6124,6210,6286,6243,6006,5520,4772,3852,2966, 2343,2098,2194,2513,2931,3330,3601,3657,3470,3071, 2529,1950,1438,1034,717,424,105,-296,-848,-1611, -2611,-3816,-5188,-6713,-8362,-10025,-11509,-12632,-13351,-13738, -13900,-13899,-13758,-13511,-13194,-12835,-12445,-12054,-11677,-11285, -10790,-10095,-9170,-8019,-6693,-5283,-3921,-2712,-1661,-740, 38,655,1155,1633,2187,2848,3608,4467,5390,6263, 6911,7203,7152,6882,6489,5952,5200,4243,3193,2184, 1290,539,-53,-491,-798,-1014,-1165,-1252,-1303,-1392, -1603,-1950,-2378,-2801,-3136,-3316,-3353,-3355,-3436,-3591, -3720,-3737,-3608,-3345,-3011,-2734,-2638,-2741,-2911,-2937, -2683,-2216,-1744,-1495,-1575,-1934,-2428,-2868,-3106,-3067, -2803,-2381,-1820,-1091,-223,671,1406,1811,1813,1448, 825,69,-692,-1314,-1653,-1603,-1114,-193,1085,2563, 4012,5229,6098,6612,6886,7082,7289,7486,7582,7537, 7400,7259,7214,7332,7643,8079,8524,8865,9057,9081, 8935,8626,8166,7602,7031,6591,6396,6463,6685,6895, 6934,6707,6197,5467,4605,3737,3021,2580,2447,2563, 2830,3166,3473,3635,3577,3317,2955,2587,2235,1881, 1527,1195,916,669,411,49,-538,-1467,-2744,-4272, -5912,-7559,-9128,-10529,-11678,-12554,-13189,-13578,-13697,-13584, -13353,-13141,-12999,-12898,-12768,-12569,-12252,-11741,-10957,-9912, -8722,-7494,-6234,-4912,-3582,-2412,-1524,-892,-388,119, 728,1482,2366,3303,4220,5082,5862,6528,7025,7288, 7271,6966,6400,5633,4757,3854,2945,2030,1143,394, -109,-357,-438,-476,-577,-805,-1183,-1647,-2066,-2327, -2440,-2528,-2727,-3074,-3473,-3765,-3824,-3638,-3316,-3037, -2962,-3115,-3349,-3453,-3287,-2894,-2417,-2003,-1728,-1616, -1652,-1806,-2065,-2424,-2829,-3146,-3240,-3044,-2573,-1870, -994,-60,768,1379,1739,1823,1570,942,33,-926, -1677,-2011,-1831,-1157,-132,1046,2208,3263,4210,5068, 5851,6522,7013,7267,7294,7190,7074,7034,7086,7208, 7395,7693,8134,8649,9090,9329,9324,9088,8640,8048, 7462,7055,6914,6989,7169,7353,7448,7347,6975,6327, 5486,4596,3808,3241,2955,2902,2974,3091,3225,3372, 3493,3522,3405,3160,2820,2419,2008,1692,1549,1543, 1521,1319,882,224,-676,-1862,-3311,-4909,-6528,-8114, -9633,-10983,-12014,-12648,-12957,-13088,-13167,-13249,-13339,-13418, -13445,-13389,-13260,-13041,-12658,-12003,-11027,-9780,-8390,-6995, -5710,-4606,-3699,-2917,-2170,-1417,-687,10,726,1555, 2517,3547,4554,5466,6232,6798,7132,7236,7129,6810, 6249,5410,4336,3178,2147,1387,912,650,455,185, -224,-701,-1076,-1258,-1309,-1403,-1695,-2202,-2807,-3314, -3569,-3541,-3372,-3239,-3242,-3357,-3527,-3700,-3801,-3759, -3557,-3248,-2890,-2500,-2092,-1740,-1541,-1570,-1839,-2282, -2771,-3176,-3408,-3438,-3253,-2833,-2176,-1312,-310,710, 1549,1983,1888,1304,413,-542,-1315,-1747,-1831,-1649, -1255,-628,257,1333,2463,3540,4521,5360,6013,6461, 6727,6846,6842,6752,6660,6656,6819,7188,7732,8354, 8906,9262,9361,9217,8875,8390,7854,7415,7216,7299, 7557,7809,7922,7836,7521,6961,6211,5427,4743,4186, 3694,3270,3002,2964,3111,3313,3469,3533,3482,3283, 2954,2583,2283,2103,2020,1987,1957,1879,1710,1425, 968,227,-892,-2380,-4083,-5808,-7416,-8839,-10043,-11029, -11794,-12352,-12719,-12932,-13050,-13177,-13401,-13733,-14061,-14193, -14006,-13494,-12712,-11719,-10569,-9347,-8136,-6982,-5896,-4901, -4033,-3293,-2620,-1931,-1162,-281,717,1766,2757,3648, 4498,5369,6247,6993,7450,7472,6997,6109,5057,4125, 3435,2890,2310,1616,877,252,-139,-294,-323,-377, -592,-1015,-1597,-2214,-2711,-3013,-3150,-3211,-3257,-3307, -3381,-3510,-3694,-3898,-4097,-4243,-4248,-4023,-3587,-3044, -2522,-2100,-1837,-1781,-1918,-2167,-2473,-2855,-3336,-3829, -4131,-4034,-3449,-2451,-1258,-116,766,1282,1411,1202, 735,100,-608,-1280,-1802,-2083,-2070,-1753,-1158,-341, 615,1632,2674,3711,4674,5442,5923,6125,6152,6098, 6014,5972,6093,6471,7073,7766,8418,8939,9243,9230, 8875,8325,7828,7554,7520,7641,7826,8001,8098,8059, 7860,7508,7014,6394,5693,4967,4278,3704,3331,3202, 3259,3373,3430,3397,3305,3185,3036,2845,2617,2378, 2169,2037,2023,2148,2342,2434,2242,1691,828,-268, -1592,-3126,-4773,-6418,-7949,-9280,-10310,-11008,-11459,-11816, -12194,-12633,-13136,-13668,-14141,-14455,-14559,-14436,-14067,-13430, -12524,-11401,-10167,-8932,-7809,-6858,-6075,-5360,-4572,-3636, -2613,-1671,-914,-270,464,1468,2761,4173,5461,6422, 6948,7071,6934,6676,6344,5877,5212,4357,3399,2463, 1682,1169,925,812,662,397,39,-397,-906,-1468, -2001,-2422,-2707,-2883,-2961,-2956,-2946,-3057,-3364,-3818, -4245,-4484,-4468,-4248,-3930,-3584,-3216,-2789,-2300,-1820, -1500,-1494,-1863,-2528,-3304,-3987,-4412,-4441,-4016,-3223, -2241,-1237,-289,534,1109,1305,1113,660,88,-529, -1153,-1690,-2027,-2106,-1940,-1551,-920,-23,1080,2254, 3344,4265,4978,5453,5672,5654,5493,5364,5447,5848, 6540,7368,8138,8709,9011,9041,8842,8516,8201,8004, 7945,7971,8037,8141,8304,8471,8531,8375,7970,7363, 6625,5834,5124,4591,4229,3947,3696,3520,3470,3517, 3566,3545,3402,3130,2782,2481,2326,2320,2412,2552, 2705,2829,2866,2767,2467,1853,832,-568,-2222,-3934, -5543,-6941,-8097,-9012,-9737,-10356,-10956,-11569,-12167,-12740, -13319,-13938,-14546,-14966,-14991,-14543,-13704,-12678,-11684,-10818, -10021,-9143,-8094,-6927,-5810,-4889,-4199,-3654,-3106,-2384, -1373,-75,1364,2710,3841,4781,5623,6377,6964,7296, 7322,7023,6409,5554,4618,3762,3067,2523,2092,1758, 1524,1341,1110,727,158,-542,-1238,-1764,-2027,-2085, -2098,-2214,-2455,-2762,-3074,-3388,-3701,-3976,-4189,-4345, -4434,-4352,-3957,-3247,-2418,-1723,-1306,-1200,-1418,-1964, -2740,-3535,-4137,-4422,-4348,-3919,-3177,-2203,-1152,-193, 531,969,1132,1062,793,339,-256,-909,-1494,-1912, -2113,-2088,-1829,-1279,-402,749,2013,3188,4129,4751, 5007,4944,4747,4674,4886,5376,6053,6820,7582,8207, 8605,8789,8838,8780,8604,8348,8120,8024,8108,8361, 8700,8980,9065,8914,8581,8137,7604,7001,6339,5659, 5022,4507,4173,4024,3991,3984,3912,3729,3470,3215, 3005,2816,2617,2454,2394,2461,2640,2917,3264,3566, 3631,3303,2539,1412,47,-1416,-2888,-4330,-5728,-7022, -8088,-8830,-9319,-9789,-10467,-11412,-12491,-13509,-14297,-14739, -14816,-14635,-14364,-14074,-13673,-13002,-12012,-10796,-9543,-8419, -7529,-6864,-6315,-5733,-4996,-4064,-2991,-1868,-748,380, 1563,2800,4060,5256,6256,6944,7287,7336,7135,6667, 5910,4976,4089,3439,3041,2800,2610,2388,2046,1511, 828,165,-325,-671,-984,-1336,-1674,-1940,-2120,-2252, -2396,-2619,-2972,-3461,-4017,-4525,-4842,-4841,-4473,-3809, -3000,-2216,-1582,-1196,-1133,-1440,-2095,-2957,-3772,-4304, -4468,-4314,-3887,-3185,-2263,-1281,-402,288,779,1037, 1037,820,455,-16,-596,-1259,-1906,-2398,-2582,-2336, -1633,-554,733,1991,2994,3629,3924,4001,4021,4112, 4342,4721,5226,5856,6601,7388,8087,8567,8765,8711, 8496,8252,8105,8122,8288,8535,8770,8969,9154,9317, 9348,9125,8637,7984,7262,6546,5896,5379,5018,4777, 4584,4386,4175,3978,3806,3657,3475,3186,2773,2355, 2133,2239,2616,3070,3459,3737,3899,3898,3675,3169, 2312,1067,-518,-2236,-3781,-4943,-5754,-6412,-7141,-8054, -9131,-10249,-11283,-12144,-12842,-13458,-14072,-14659,-15088,-15213, -14949,-14299,-13341,-12238,-11200,-10352,-9636,-8908,-8106,-7302, -6567,-5856,-5059,-4112,-3044,-1905,-697,598,1953,3292, 4574,5758,6731,7322,7405,7023,6365,5666,5078,4623, 4240,3869,3476,3042,2579,2125,1695,1263,781,247, -313,-862,-1315,-1574,-1632,-1625,-1735,-2013,-2423,-2952, -3609,-4314,-4892,-5172,-5083,-4625,-3864,-2955,-2106,-1506, -1243,-1334,-1740,-2390,-3163,-3895,-4426,-4640,-4482,-3981, -3232,-2365,-1505,-738,-94,442,859,1108,1118,838, 249,-602,-1571,-2409,-2861,-2807,-2291,-1457,-455,44, 195,336,619,1042,1021,364,-730,-2193,-3981,-5060, -5280,-5371,-4980,-2998,246,3247,4518,3961,2898,1868, 124,-1272,-1088,-622,-923,-2079,-3780,-4867,-5206,-4514, -2194,943,3387,5299,6566,5377,2544,514,-359,-288, 319,1014,1528,1123,-952,-3592,-4140,-2356,-121,1676, 3146,4162,3816,2311,1429,1857,2985,4359,5597,6292, 6301,5593,5003,5453,6933,9235,11737,13304,13583,13173, 11838,8523,4234,1760,2719,5805,7864,6920,4196,2127, 924,-603,-1864,-1918,-1618,-1236,-885,-1235,-1966,-3400, -5958,-8129,-8237,-6762,-5358,-4560,-4604,-5140,-5469,-6097, -6977,-6939,-5662,-3965,-3172,-4076,-6395,-8654,-10489,-12607, -13130,-9846,-4003,1168,3929,4158,2491,-52,-2669,-5081, -6263,-6079,-5343,-4142,-3122,-2285,-1316,-1528,-3145,-3825, -1659,1797,4218,4523,3255,2082,521,-1741,-3067,-3543, -4966,-7136,-8392,-8470,-7582,-5981,-4259,-2897,-2357,-2449, -2414,-1993,-1207,333,2242,3369,2927,999,-1350,-3230, -4846,-6082,-5433,-2506,421,1344,633,-620,-979,-52, 1294,2599,3331,2914,1972,888,-470,-1561,-1455,-563, 317,730,-10,-1828,-2743,-1892,389,3762,6374,6783, 5895,5235,4698,4173,3995,4321,6231,9656,12330,12603, 10539,7099,3828,2028,2204,4216,7173,9693,11004,11272, 10371,8685,7090,5839,4718,3824,3670,3641,2448,443, -1960,-4384,-5815,-5446,-3565,-1497,-331,-457,-1464,-3131, -5138,-6279,-6221,-5283,-3585,-2167,-2608,-5153,-8961,-12590, -14598,-14636,-12401,-7723,-3043,-1080,-949,-829,-967,-1880, -3132,-4059,-4363,-4678,-4935,-4928,-5609,-6964,-7375,-6028, -3702,-1113,1012,1913,2068,1894,1662,2377,3655,3510, 1431,-1935,-5900,-9325,-11240,-11224,-9515,-7227,-5724,-5067, -4409,-4017,-3840,-2848,-1130,1080,3763,5555,5134,3259, 1220,-308,-561,297,896,1275,1968,2179,1825,1884, 2558,3251,4069,4976,5339,5281,4681,3735,3870,4956, 5568,4508,2278,472,36,954,1999,3094,4921,6751, 7989,8543,8140,6792,5544,5110,5571,7413,9996,11351, 10658,8716,7026,6109,4918,3363,2848,3678,4883,5962, 7061,8119,8947,8833,7323,5663,4990,4947,4747,3239, 638,-1447,-2975,-4754,-6203,-5716,-3186,-947,-313,-275, -477,-2232,-5208,-6838,-5825,-3743,-2355,-2573,-4468,-6952, -9588,-11863,-13134,-13418,-12621,-10707,-7906,-5225,-3434,-2559, -2625,-3209,-3611,-3473,-2910,-2951,-4557,-6753,-7926,-7832, -7060,-5515,-3585,-2329,-1759,-1134,64,2371,5414,7495, 7454,5914,3181,-576,-4177,-6981,-8634,-8757,-7574,-6114, -5343,-5302,-5888,-6280,-5192,-2613,627,3294,4268,3706, 2880,2601,2893,3413,3633,3892,4394,3814,1447,-995, -1780,-938,635,1979,2628,2513,1869,1773,3020,5074, 6715,7209,6408,4775,3561,2696,1502,547,943,3316, 6927,9733,10780,10610,9601,8214,6943,6500,7300,8935, 10328,10511,9610,8472,7513,6333,4120,2260,2615,3949, 4499,4969,6436,7986,8100,7308,7196,7729,7659,6453, 5170,4518,3516,1213,-1932,-4559,-5868,-5917,-5135,-4350, -4350,-5586,-7552,-9075,-9741,-9615,-8878,-8053,-7882,-8080, -7809,-8125,-9681,-11572,-12692,-12469,-10870,-8435,-6476,-5235, -4359,-4133,-4111,-3246,-1961,-1421,-2154,-4089,-6233,-7274, -7043,-6381,-5776,-5599,-6084,-6138,-5273,-3779,-1326,1719, 4720,7688,9640,9286,6838,3350,-341,-2746,-2941,-2094, -2099,-3827,-6251,-7705,-7728,-6296,-3546,-370,2480,4480, 4905,3690,1836,620,958,2312,3442,3397,1938,-303, -2090,-2375,-1722,-1304,-1241,-1066,-266,761,930,545, 379,945,2655,4456,4476,2259,-376,-1890,-2957,-3602, -2386,1052,4629,6623,7592,8248,8360,7327,5895,5800, 7378,9247,10172,10377,10332,9751,8565,7184,6650,7183, 7598,7569,7645,7833,8332,9350,9989,9511,9209,9934, 10903,11656,11450,9396,6169,3101,777,-516,-617,-632, -1431,-2446,-3450,-4680,-5906,-7372,-8752,-9229,-8855,-8099, -7362,-7560,-9265,-11831,-14571,-16554,-16381,-14410,-12547,-11459, -10948,-10603,-9469,-7604,-6077,-5251,-5085,-5063,-4926,-5125, -5535,-5664,-5841,-6573,-7195,-6618,-5537,-4802,-4228,-2814, 495,5067,9048,10853,10105,8188,6314,4860,4316,4517, 4886,4670,3215,513,-2463,-4341,-4615,-2882,497,3486, 4415,3518,2537,2417,3128,4379,4936,4335,3498,3317, 2927,1011,-1818,-3692,-3648,-2772,-2422,-2318,-2143,-2453, -3126,-3030,-1347,1331,3200,3239,2043,252,-2461,-5555, -7031,-6203,-4137,-1434,1413,3328,4126,4340,3961,3382, 3702,5002,6696,7987,7885,6954,6568,6895,7371,7403, 6896,6229,5997,6292,6878,7273,6826,5715,5361,6287, 7855,9419,9960,9056,7453,5719,3947,2377,1035,-287, -1502,-2419,-3077,-3649,-4498,-6250,-8471,-10307,-10855,-9126, -6297,-4930,-5991,-8390,-10588,-12143,-13008,-12999,-12471,-12121, -12366,-12668,-12043,-10227,-8094,-6847,-6386,-5810,-4804,-4243, -4816,-5998,-6543,-5589,-3948,-3107,-3610,-5114,-6736,-7288, -5562,-1637,2696,6376,9242,10533,9641,7626,6028,5758, 7082,9427,11106,10145,6251,1782,-327,-448,-326,-189, 647,2465,4317,4887,4293,3863,4016,3998,4316,5421, 5709,4156,1774,-582,-2487,-3430,-3790,-3939,-3865,-3940, -4512,-5302,-5741,-5304,-3563,-1459,-266,-285,-1609,-3799, -6114,-8396,-9642,-8527,-5499,-2032,471,1557,1878,2263, 3087,4011,4772,5254,5502,6114,7348,8756,9468,8743, 7549,7133,7622,8453,9244,9505,8696,7247,6117,5981, 6893,8296,9779,10766,10953,10665,10520,9976,7912,4722, 2009,896,1249,1684,974,-665,-2843,-5248,-6916,-7002, -5903,-4731,-4486,-5566,-7136,-7879,-7993,-8796,-10795,-12700, -13619,-14098,-14499,-14936,-15102,-14331,-12598,-10315,-8753,-8995, -10128,-10699,-10401,-9355,-7343,-5628,-5988,-7811,-9637,-10916, -11272,-10560,-8344,-3395,2982,6443,5829,4134,3837,4906, 6766,9053,11217,12507,12164,10321,7964,5347,2968,1886, 2319,3789,5351,5983,5770,5594,5785,6107,6743,7619, 8096,8321,7772,5808,3052,691,-516,-953,-1632,-3010, -4777,-6599,-8313,-9576,-10129,-9218,-6620,-3653,-1735,-1786, -3983,-7576,-10933,-12389,-11601,-9898,-8175,-6224,-3915,-1879, -585,-138,-156,274,2010,4807,7904,10547,12208,12530, 11480,9829,9050,9992,11913,13174,13110,12259,11444,10606, 9574,8978,9206,10385,12446,14592,16029,15986,14058,10430, 6500,4546,5218,6770,7056,5322,2543,-423,-3027,-4368, -4927,-5713,-6004,-5211,-4445,-4783,-6345,-8349,-9699,-10095, -10356,-11088,-12277,-14464,-17230,-18617,-17832,-16093,-14814,-13848, -12193,-10619,-10582,-11468,-11290,-9366,-7012,-5677,-6452,-9430, -12859,-15021,-14746,-11926,-7925,-4439,-1710,597,2278,3419, 4293,5403,7199,9373,11219,12157,11942,11029,9850,8335, 6581,5410,5101,5249,5701,6116,6112,6151,6631,7435, 8175,8487,8309,7622,6599,5659,4825,3728,2230,896, -201,-2104,-5254,-8728,-11092,-11438,-9792,-6893,-4378,-3363, -3873,-5207,-6536,-7879,-9598,-11134,-11467,-10742,-9539,-7784, -5476,-3655,-3028,-3177,-3136,-1791,891,3825,6390,8330, 9678,10672,11124,11324,12153,13335,13853,14077,14982,15633, 14752,12943,10797,9571,10697,13667,16884,18641,17924,15598, 13610,12731,11936,10780,9659,8839,7717,5766,3620,1603, -834,-3215,-3914,-2854,-2088,-3151,-5295,-6707,-6598,-6263, -6729,-7806,-9110,-10712,-12914,-15728,-18135,-18946,-17765,-15247, -13101,-12883,-14689,-16688,-17194,-15513,-12048,-8673,-7342,-8236, -10467,-13333,-16080,-17462,-16796,-14167,-10537,-7258,-5038,-3826, -2951,-1518,379,2445,4817,7397,9581,10760,10801,9852, 8197,6671,5795,5349,4955,4486,4054,4107,4647,5061, 5350,5834,6599,7403,8211,8226,7002,5780,5621,6152, 6191,4561,1409,-2103,-5313,-7816,-9006,-8848,-8131,-7223, -6372,-6189,-5785,-5000,-5845,-8864,-12128,-14216,-14973,-14407, -12857,-10702,-8565,-7450,-7232,-6714,-5491,-4109,-2641,-549, 2288,5598,8456,10220,10791,10196,9853,11631,14837,17303, 18020,17095,15273,13111,11686,12083,13848,15535,16851,18411, 20245,20874,19173,16133,14083,13958,14418,14155,12626,10136, 7394,4874,2653,575,-1223,-2409,-2825,-2665,-2644,-3110, -3650,-3777,-3419,-3865,-6548,-10901,-14629,-16277,-16161,-15407, -15034,-15648,-17140,-18656,-19334,-18735,-16738,-13701,-10536,-8614, -8546,-9998,-12372,-14520,-15713,-15756,-14587,-13009,-11511,-10003, -8605,-7594,-6757,-5139,-2198,1597,5227,7796,9298,10348, 11265,12109,12125,10985,9717,9077,8564,7538,6177,4733, 4096,5328,7804,9814,10453,9831,8348,6701,6038,7104, 9226,10454,9640,7407,4558,1581,-1366,-4194,-6198,-7067, -7159,-6310,-4512,-2920,-3018,-4865,-7378,-9784,-11692,-12624, -12662,-12562,-12715,-12452,-11325,-10050,-9554,-9972,-10219,-9109, -6457,-2759,975,3530,4221,4174,5229,8031,11451,14028, 15360,16051,16281,15914,14917,13370,12074,12191,13787,15913, 17537,18009,17541,16932,16812,17005,16846,16154,15217,14470, 13200,10605,7622,5353,4066,3295,1808,-866,-3678,-5228, -5065,-3653,-2130,-1966,-3489,-6279,-9750,-12554,-13829,-14122, -14189,-14483,-15482,-17327,-19644,-21750,-22280,-20754,-18383,-15927, -13825,-12818,-12851,-13350,-14433,-16110,-17016,-16367,-15039,-13825, -13126,-12819,-12242,-10932,-9060,-7124,-5222,-2438,1594,5418, 7740,8457,8488,8730,9402,10154,10603,10319,8677,6005, 3905,3598,4941,6790,8238,8832,8342,7290,6859,7339, 7954,8413,9203,10063,10220,9331,7374,4483,729,-3474, -6395,-6469,-4633,-3033,-2665,-3027,-3676,-4929,-6627,-8287, -9823,-11403,-12657,-12614,-11582,-10768,-11243,-12933,-14233,-13571, -10881,-7593,-5347,-4110,-2825,-1216,669,2766,5080,7665, 10771,14063,16464,17488,17062,15617,14587,14420,14715,15303, 16095,16790,17620,18461,18381,17735,17646,18554,19733,19818, 18116,15553,13529,12199,11284,10435,8650,5454,1958,-1024, -2941,-2895,-1414,51,457,-528,-2847,-6063,-9118,-10620, -10427,-9872,-10239,-11824,-14331,-17020,-19324,-21192,-22118,-21115, -18020,-14465,-12619,-12654,-13265,-13445,-13373,-13905,-14922,-15102, -13991,-12744,-12185,-11964,-11906,-12230,-12095,-10314,-6788,-2517, 1080,3316,4798,6102,7642,9653,11619,12467,11693,9856, 7942,6602,6143,6449,7093,7286,6790,6705,7410,7903, 7585,6948,6981,8206,10235,12264,13328,12541,9552,5320, 1217,-1774,-3344,-4257,-5118,-4981,-3409,-1921,-2024,-3946, -6908,-9370,-10559,-10642,-10099,-9993,-11367,-13538,-15225,-16026, -16050,-15351,-13857,-11489,-8687,-6551,-5571,-5196,-4439,-2047, 1969,6047,9518,12467,14717,15655,15194,13955,12804,12697, 13951,15816,16971,16658,15806,15492,16160,17872,19831,20721, 20107,18847,17825,17234,16805,16272,15223,13130,9717,5288, 976,-1866,-2379,-1029,431,848,-85,-1797,-3606,-5791, -8273,-9676,-9322,-8534,-9259,-11932,-15527,-19001,-21578,-22921, -22918,-21780,-20167,-18313,-16340,-14766,-14211,-14940,-16061,-16658, -16524,-15606,-14187,-13336,-13988,-15482,-16320,-15746,-13853,-11295, -8499,-5760,-3472,-1342,1536,5240,8670,11070,12065,11711, 11062,10762,10396,9750,9062,8626,8767,9398,10244,10814, 10326,8507,6770,6933,8639,10635,12234,13118,13380,12930, 11419,8708,4772,357,-2895,-3588,-2353,-1003,-768,-1885, -3733,-5461,-6635,-7471,-8264,-8819,-9033,-9683,-11391,-13696, -15869,-17058,-16593,-14837,-12838,-11314,-10198,-9237,-8400,-7651, -6632,-4495,-788,4186,9213,12665,13876,13661,13051,12866, 13587,14878,15893,15970,15356,14783,14952,16013,17187,18279, 19406,19725,18745,17195,16785,18153,19600,19382,17278,14198, 10798,7057,3370,864,279,871,1523,1430,223,-1959, -4177,-5590,-6038,-5776,-5314,-5348,-6465,-8788,-11832,-14934, -18267,-21488,-22932,-21745,-18811,-15848,-14225,-14196,-14968,-15745, -15977,-15184,-13378,-11930,-11849,-13117,-14884,-15734,-15288,-14648, -14175,-13277,-11802,-9889,-7289,-3978,-393,2615,4521,6186, 8557,10736,11436,10633,9153,8029,8003,8986,10140,10438, 9736,8582,7517,6897,6874,7124,7344,8274,10676,13622, 15346,14590,11610,7877,4432,1760,87,-800,-835,-385, -651,-2161,-4142,-5762,-6814,-7072,-6759,-6882,-7745,-9454, -11675,-13548,-14951,-16111,-16534,-15574,-13617,-11807,-10975,-11285, -12248,-12551,-10705,-6542,-1607,2323,5078,7346,9243,10392, 10949,11750,13112,14045,13618,12679,12581,13552,15029,16359, 17075,16989,16217,15631,15908,16752,17768,18978,19955,19661, 17692,14459,10651,7366,5442,4893,4990,4566,3009,962, -722,-1983,-3011,-3872,-4494,-4369,-3496,-2899,-3571,-5845, -9486,-13707,-17460,-19648,-19356,-17338,-15522,-14888,-15074,-15414, -15504,-14876,-13535,-12353,-12208,-13096,-13822,-13790,-13778,-14200, -15127,-16277,-16734,-15923,-14037,-11763,-9632,-7575,-5138,-1904, 1885,5321,7271,7411,6940,6835,7246,8136,8984,9324, 9693,10564,11236,10759,8987,6823,5529,5778,7481,10094, 12770,14604,14993,13919,11673,8655,5572,3459,2786,2632, 2051,998,-242,-1668,-2873,-3487,-3689,-3871,-4285,-4709, -5132,-6535,-9666,-13361,-15290,-14748,-13078,-11810,-11421,-11581, -12298,-13437,-13846,-12592,-9898,-6309,-2642,222,2405,4764, 7591,10329,12031,12329,12065,11979,11991,12353,13377,14769, 15948,16593,16741,16569,16070,15540,15662,17131,19501,21247, 21134,19230,16652,14427,12444,10491,8799,7683,6883,5477, 3828,2634,1365,-703,-2847,-3786,-3042,-1161,484,594, -1284,-4769,-9012,-12485,-14427,-15216,-15457,-15903,-16530,-16371, -15247,-14085,-13375,-13270,-13666,-13980,-13641,-12879,-12501,-13016, -14409,-15944,-16700,-16392,-15725,-15626,-16110,-15986,-14028,-10417, -6465,-3455,-1212,1089,3288,4820,5584,5695,5665,6173, 7448,9172,10698,11297,10813,9514,7551,5567,4724,5377, 7227,9798,12342,13851,13555,11557,9238,7982,7292,5820, 3973,3145,3050,2288,322,-2182,-3862,-4111,-3452,-2520, -2194,-3265,-5615,-8590,-11487,-13575,-14065,-13079,-11973,-11916, -12999,-14278,-14937,-14860,-13998,-12516,-10671,-8786,-6958,-4584, -1315,2347,5813,8519,10236,11223,11542,10941,10116,10615, 12706,15062,16615,17081,16694,15930,15206,15295,16703,18727, 20212,20835,20802,20245,19263,17506,14851,12289,10838,10300, 9930,9186,7515,4638,1096,-1953,-3292,-2368,-192,1737, 2193,990,-1174,-3598,-5906,-8314,-11137,-13913,-15807,-16341, -15629,-14406,-13917,-14666,-15559,-15335,-14115,-12990,-12721,-13093, -13359,-13239,-13026,-13173,-14160,-15801,-17101,-17223,-16452,-15330, -13947,-11951,-9103,-5953,-3164,-520,1865,3200,3595,4014, 5067,6298,7360,8916,11100,12440,11251,7937,4886,3492, 3664,4782,6311,8142,10050,11511,11897,10824,8979,7562, 6973,6844,6536,5780,4487,2510,-84,-2309,-2921,-2007, -752,-170,-1056,-3126,-5335,-7404,-9011,-9526,-9262,-9463, -10871,-12772,-13804,-13768,-13669,-13893,-13699,-12781,-11696,-10791, -9472,-7157,-3752,251,4005,6851,8476,8670,7817,7278, 8405,10918,13355,14770,15177,14978,14609,14285,14001,14111, 15020,16580,18329,19991,20910,20332,18324,15442,12840,11904, 12593,13328,12602,10128,6323,2195,-991,-2400,-1931,-671, 117,565,1200,1606,938,-1427,-5067,-8360,-10335,-11174, -11691,-12612,-13997,-15103,-14982,-14069,-13369,-13031,-12753,-12387, -12236,-12366,-12322,-12301,-12966,-14216,-15081,-15167,-15528,-16914, -18115,-17805,-16129,-14096,-11952,-9076,-5216,-1391,703,757, 149,433,2310,5364,8245,10302,11617,11736,10247,7790, 5397,3905,3863,5255,7540,9929,11638,11985,10918,9252, 8184,8291,8951,9096,8393,6923,4508,1500,-480,-417, 960,2007,1751,448,-1146,-2520,-3881,-5185,-5977,-6325, -6980,-8216,-9629,-10949,-12018,-12742,-13019,-12862,-12659,-13054, -13896,-14071,-12600,-9419,-5292,-1194,1826,3729,4837,5326, 5746,6579,7854,9478,11053,12380,13687,14603,14411,13342, 12549,12775,14298,16846,19215,20444,20072,17942,15417,14152, 14513,15566,15976,15030,12948,10371,7676,4798,1604,-1318, -2656,-1590,788,2469,2435,1253,-304,-2061,-3812,-5187, -6536,-8367,-10404,-12016,-12771,-13221,-14081,-14868,-14676,-13720, -12791,-12299,-12206,-12099,-11725,-11537,-12193,-13366,-14126,-14348, -14854,-16262,-18244,-19525,-19092,-16903,-13556,-10088,-7246,-5243, -4054,-3646,-3402,-2169,386,3422,6328,8953,10807,10895, 9142,6650,4608,3782,4258,5606,7568,9471,10173,9393, 8306,8329,9666,11416,12231,11501,9809,7647,5345,3756, 3272,3480,3807,3708,3000,1843,528,-837,-2009,-2640, -2839,-3156,-4251,-6407,-8545,-9548,-9651,-9514,-9765,-10799, -12414,-14117,-15104,-14755,-12972,-10418,-7753,-5065,-2302,291, 2257,3418,4031,4550,5482,7253,9626,11713,12614,12111, 10760,9587,9724,11893,15177,17398,17607,17092,17154,17596, 17363,16191,15289,15576,16409,16676,15837,13499,9595,5225, 2035,793,975,1492,1767,1955,2303,2387,1340,-767, -2797,-3958,-4573,-5596,-7377,-9294,-10717,-11828,-13030,-14279, -15043,-14763,-13446,-12326,-12467,-13258,-13600,-13401,-13083,-12705, -12436,-13027,-14885,-17523,-19670,-20212,-19364,-17919,-15701,-12778, -9937,-8146,-7749,-7671,-6576,-4368,-1719,1256,4756,7883, 9192,8184,5702,3582,2836,3247,4315,5448,6095,6240, 6158,6273,7079,8738,10414,11186,10928,10162,9087,7545, 5816,4717,4758,5393,5450,4449,2990,1841,1151,850, 838,516,-601,-2361,-4192,-5335,-5554,-5489,-5752,-6566, -8245,-10425,-12173,-13340,-14059,-14023,-12998,-11260,-9055,-6405, -3469,-897,262,-23,108,2267,5781,8609,9743,9681, 9293,9199,9470,10018,10842,11826,12914,14175,15695,16890, 16885,15781,14667,14880,16661,18332,18593,17774,16376,14318, 11377,7944,4673,2434,1911,2489,2911,2918,2891,3060, 2886,1672,-94,-1368,-1911,-2575,-3915,-5793,-8110,-10452, -12152,-12762,-12076,-11009,-11092,-12111,-12787,-12546,-11895,-11392, -10937,-10368,-10291,-11629,-14275,-16989,-18738,-19333,-18894,-17658, -15768,-13505,-11669,-10944,-11129,-11021,-9564,-6676,-2775,1416, 4813,6567,6558,5511,4818,5029,5443,5465,5151,4799, 4706,4785,4929,5600,7224,9335,11022,11755,11170,9452, 7633,6562,6362,6757,7076,6681,5469,4010,3043,2995, 3371,3100,1958,714,-409,-1694,-2851,-3203,-3009,-3376, -4739,-6477,-7759,-8704,-10508,-13438,-16041,-16707,-15108,-12304, -9547,-7635,-6466,-5450,-4347,-2497,398,3030,4487,5436, 6639,7951,8528,7953,6880,6831,8464,10949,12984,13726, 13496,13493,13893,13952,13789,14219,15558,17103,17695,16971, 15517,13835,11620,8763,5962,3884,2666,2233,2442,3085, 3482,2852,1484,640,884,1388,990,-535,-2658,-4898, -7078,-9090,-10645,-11277,-11197,-11447,-12348,-13258,-13486,-12796, -11585,-10545,-9762,-9266,-9686,-11338,-13751,-16252,-18127,-18917, -18520,-17031,-14971,-13612,-13785,-14806,-15104,-13876,-11176,-7692, -4151,-1036,1466,3153,4031,4482,5034,5778,6467,6597, 5675,4204,3189,2829,3391,5368,8314,10634,11092,10148, 9143,8839,8984,8835,8494,8242,7492,6126,4925,4632, 5195,5706,5005,3177,1674,1081,480,-586,-1709,-2523, -2782,-2617,-2488,-2858,-4565,-7834,-11473,-13866,-14320,-13438, -12426,-12091,-11911,-10772,-8761,-6953,-5873,-4680,-2190,1499, 4823,6508,6890,7065,7329,7407,7523,8427,10294,12282, 13419,13701,13859,13888,13540,13494,14347,15678,16755,17435, 17970,18459,18264,16375,13106,9861,7570,6318,5543,4702, 3964,3538,3125,2470,2023,2278,2906,3056,2171,490, -1284,-2979,-4731,-6391,-7661,-8648,-9989,-11643,-12904,-13541, -13588,-13108,-12217,-10617,-8679,-7725,-8686,-11177,-14054,-16260, -17054,-16606,-15873,-15344,-15184,-15669,-16643,-17354,-16989,-15171, -12390,-9363,-6367,-3438,-1189,-129,735,2456,4811,6805, 7145,5648,3601,2069,1255,1494,3179,5757,7878,8495, 8013,7860,8656,9379,9326,8790,8074,7330,6854,6672, 6454,5917,4989,4137,3876,4120,3963,2451,-88,-2303, -2850,-1489,246,463,-1019,-3024,-4807,-6679,-9249,-12032, -13576,-13346,-12470,-11896,-11544,-11314,-11154,-10779,-9622,-7188, -3788,-432,2155,3997,5129,5485,5364,5484,6532,8491, 10381,11372,11747,12188,12703,12669,12073,11728,12357,14215, 16465,18127,19059,19130,17942,15714,13244,11208,9712,8524, 7103,5373,3969,3094,2560,2599,3235,3772,3730,2980, 1850,704,-248,-1253,-2652,-4142,-5410,-6522,-7958,-10280, -12975,-14466,-14069,-12445,-10344,-8399,-7389,-7901,-9778,-12092, -13671,-14086,-13995,-13974,-13885,-13764,-14221,-15800,-17883,-18753, -17411,-14788,-12389,-10476,-8673,-6903,-5395,-3598,-714,2860, 5774,6718,5712,3970,2667,2267,2586,3310,4075,4830, 5612,6497,7640,8808,9310,8983,8324,8203,8977,9721, 8869,6631,5141,5652,7146,7787,6868,5166,3526,1809, 82,-1010,-1027,-306,424,828,672,-541,-2799,-5897, -8942,-10715,-11159,-11235,-11418,-11559,-11715,-12190,-12943,-13266, -11998,-8736,-4902,-2045,-65,1578,2956,3776,4133,4611, 5884,7991,10189,11843,13070,13554,12957,11706,10695,10771, 12323,14854,17370,19129,19769,19279,18019,16576,15333,14420, 13473,11741,9325,7182,5754,4777,4055,3660,3828,4395, 4605,3953,2710,1379,281,-510,-955,-1212,-1807,-3741, -7384,-11302,-13635,-14059,-13468,-12412,-10743,-8956,-8207,-9245, -11441,-13291,-13971,-13759,-13108,-12477,-12439,-13486,-15531,-17785, -18949,-18324,-16637,-15046,-14045,-13526,-12776,-10944,-7962,-4316, -675,2230,3709,3801,3592,3960,4424,3920,2467,1689, 2864,5097,6531,6543,6091,6374,7582,9042,9870,9825, 9134,7891,6636,6175,6543,7085,7340,7191,6690,5756, 4035,1454,-824,-1496,-756,363,1195,1572,1301,34, -2558,-5931,-8531,-9621,-9841,-10115,-10786,-11770,-12795,-13643, -14169,-13864,-12336,-9989,-7324,-4644,-2389,-708,455,1045, 1371,2212,4091,6699,9445,11577,12481,12114,10855,9380, 8835,9918,12158,14469,16187,17243,17977,18480,18354,17597, 16886,16360,15295,13395,11150,8999,6988,5145,4202,4783, 6211,6673,5377,3380,1827,1193,1199,1336,1558,1479, 241,-2608,-6421,-9981,-12394,-13199,-12434,-10749,-9130,-8385, -9018,-10758,-12576,-13306,-12546,-11112,-10332,-10837,-12192,-13946, -15900,-17188,-16965,-16042,-15898,-16939,-17959,-17264,-14541,-11341, -9016,-7069,-4291,-871,2122,3731,3783,3103,2651,2640, 2950,3642,4318,4417,4356,4965,6336,7860,8875,9195, 9314,9445,8976,7775,6710,6538,7296,8224,8571,8402, 8006,6933,4801,2217,277,-290,520,1797,2566,2509, 1690,183,-1882,-4012,-5687,-6796,-7795,-9125,-10698,-11959, -12945,-13974,-14751,-14748,-13691,-11757,-9437,-7126,-5052,-3446, -2703,-2639,-2136,-297,2854,6088,8338,9691,10459,10365, 9541,8917,9251,10269,11322,12425,13919,15782,17148,17376, 17190,17526,18293,18354,16986,14483,11627,9220,7606,6802, 6691,6931,6855,6066,4523,2702,1569,1578,2202,2807, 3237,2954,879,-2889,-7034,-10083,-11326,-11075,-10365,-9715, -9316,-9951,-11785,-13448,-13418,-11895,-10405,-10493,-12260,-13919, -14148,-13780,-13980,-14932,-16142,-17110,-17750,-18291,-18670,-18605, -18021,-16540,-13598,-9571,-5644,-2886,-1496,-644,603,1946, 2619,2735,2979,3361,3517,3413,3479,4335,6057,7863, 9040,9638,9762,9531,8889,7922,7130,7214,8260,9428, 10091,10106,9261,7567,5364,3308,2235,2313,2937,3386, 3396,3158,2684,1694,192,-1359,-2435,-3441,-5074,-6972, -8497,-9731,-11379,-13460,-14957,-15010,-13715,-11802,-9952,-8218, -6836,-6280,-6103,-5215,-3154,-428,2156,4348,6430,8415, 9572,9662,9235,9043,9415,10515,11914,12858,13476,14476, 15819,17208,18592,19762,20282,19761,18056,15647,13634,12229, 10913,9920,9663,9553,8706,6792,4484,3044,2963,3594, 4352,5176,5629,4659,1713,-2530,-6025,-7213,-6937,-7100, -8547,-10558,-12050,-12500,-12112,-11576,-11213,-11139,-11556,-12033, -12057,-11929,-12388,-13361,-14003,-13902,-13738,-14487,-16535,-18838, -20194,-20347,-19404,-17568,-14887,-11689,-8641,-6358,-4809,-3282, -1323,594,1896,2471,2602,2591,2403,2166,2404,3367, 4987,6888,8460,9390,9612,9126,7901,6615,6410,7603, 9122,10056,10309,9978,9014,7250,5183,3881,3735,3912, 3727,3444,3454,3437,2909,1765,501,-304,-978,-1980, -3077,-4192,-5949,-8652,-11485,-13581,-14515,-14096,-12972,-12047, -11289,-10443,-9647,-8928,-8257,-7442,-5752,-2923,122,2501, 4370,5783,6623,7105,7561,8386,9382,9876,9797,9953, 11009,12671,14448,16224,18069,19797,20421,19255,17135,15455, 14534,13829,13045,12426,12056,11403,9456,6219,3480,2883, 4340,6614,8026,7707,5959,3587,1509,254,-568,-1972, -4240,-6569,-8148,-9003,-9684,-10615,-11361,-11144,-10183,-9500, -9850,-10984,-11970,-12185,-11941,-11698,-11425,-11259,-11803,-13444, -15795,-18076,-19565,-19828,-19112,-17866,-16050,-13730,-11375,-9422, -7581,-5420,-3083,-947,551,1559,2236,2233,1382,649, 1103,2782,4831,6609,7918,8671,8598,7482,6115,5945, 7075,8408,9436,10199,10440,10018,9107,7844,6632,5855, 5283,4767,4599,4614,4536,4146,3136,1796,1022,1265, 1740,1442,-40,-2327,-4727,-7278,-9911,-11956,-12900,-12896, -12454,-11914,-11463,-11237,-11263,-11417,-10995,-9279,-6663,-4266, -2393,-707,1107,3028,4602,5696,6818,8203,9057,8728, 7853,7704,8875,10950,13143,15341,17643,19468,19882,18736, 16838,15294,14931,15746,16812,16696,14495,10854,7323,5471, 5572,6692,7568,7563,7098,6874,6585,5493,3801,2319, 1297,264,-1318,-3619,-6114,-8118,-9427,-10182,-10360,-10005, -9508,-9626,-10604,-11877,-12509,-12192,-11509,-10871,-10217,-10046, -10999,-12948,-15218,-17210,-18580,-19528,-20081,-19554,-17717,-15788, -14331,-12673,-10503,-7915,-5265,-2890,-928,448,816,82, -780,-840,101,1953,4097,5840,6861,7135,6825,6206, 5704,5864,6830,8068,8903,9495,10290,10713,9879,8202, 6621,5929,6110,6339,6181,5719,5057,4084,3035,2519, 2669,3163,3433,3023,1927,288,-2196,-5511,-8713,-10604, -10971,-10810,-11109,-11754,-12127,-12277,-12691,-13086,-12495,-10605, -8199,-6244,-4898,-3518,-1588,662,2747,4456,5774,6690, 7203,7169,6553,6004,6472,8347,11609,15424,18053,18205, 16488,14913,14993,16591,18240,18554,17452,15709,13673,11364, 8998,7220,6592,7089,7677,7566,7213,6902,6183,5199, 4422,3968,3597,2576,327,-2569,-5007,-6867,-8412,-9191, -9049,-8766,-9176,-10398,-11659,-12122,-11995,-11805,-11419,-10560, -9637,-9548,-10548,-12264,-14177,-16033,-17655,-18771,-19118,-18877, -18359,-17622,-16779,-15554,-13316,-10186,-7020,-4415,-2498,-1423, -1281,-1824,-2272,-1647,158,2093,3390,4311,5258,5986, 5924,5150,4443,4606,5738,7272,8748,9845,10210,9677, 8514,7468,7175,7395,7348,6873,6514,6372,5742,4263, 2738,2361,3352,4616,5066,4656,3552,1572,-1291,-4396, -6903,-8356,-8855,-9125,-9909,-11100,-12186,-12918,-13273,-13177, -12651,-11857,-10719,-9176,-7354,-5453,-3800,-2238,152,3367, 6159,7181,6013,3753,2569,3840,6757,9707,11992,13480, 14154,14394,14381,14614,15747,17459,18666,18810,18153,16804, 14629,11964,9653,8544,8600,8796,8679,8424,7998,7222, 6362,6040,6443,6788,6002,4011,1654,-631,-2815,-4587, -5782,-6559,-7071,-7581,-8549,-9915,-11189,-11968,-12086,-11631, -10739,-9605,-8615,-8479,-9561,-11348,-13017,-14357,-15569,-16652, -17426,-17951,-18498,-19011,-18899,-17389,-14475,-11108,-8182,-6084, -4626,-3532,-2986,-3026,-2980,-2226,-811,778,2388,4076, 5369,5467,4372,3387,3629,4768,5855,6806,7985,9157, 9614,9135,8070,7200,7246,7905,8304,8118,7411,6345, 5095,3747,2772,2878,4118,5626,6554,6457,4982,2566, 154,-1904,-3646,-5134,-6592,-8004,-8929,-9403,-10250,-11813, -13365,-13826,-12794,-11195,-10594,-11154,-11359,-9862,-6627,-2722, 598,2825,3729,3267,2179,1779,2737,4550,6459,8135, 9598,10840,11480,11644,12249,13780,15672,17357,18662,19233, 18650,16935,14653,12573,11298,10697,10294,9625,8698,7802, 7377,7385,7527,7749,8012,7950,6963,5040,2870,1028, -547,-2102,-3425,-4204,-4824,-5951,-7654,-9481,-10889,-11577, -11532,-10972,-9930,-8689,-8027,-8521,-9889,-11201,-11822,-12177, -12988,-14428,-16097,-17749,-19395,-20471,-19978,-18031,-15597,-13199, -10740,-8183,-6037,-5007,-5189,-5548,-4847,-3180,-1211,534, 1822,2939,3790,3811,3103,2676,3112,4196,5617,7003, 7915,8314,8353,7993,7588,7689,8247,8949,9454,9307, 8221,6371,4464,3494,3860,4935,5711,5909,5936,6165, 6130,4812,2119,-564,-2082,-2657,-3402,-5114,-7527,-9692, -11011,-11537,-11403,-11026,-11386,-12914,-14481,-14668,-13059,-10211, -6812,-3523,-984,278,387,106,251,1066,2427,4116, 5758,7079,7966,8478,8810,9372,10814,13188,15855,17804, 18503,18386,17811,16773,15513,14453,13740,12972,11773,10307, 9022,8315,8181,8224,8364,8752,9162,9001,7841,5908, 4027,2627,1452,215,-749,-1315,-2434,-4599,-7202,-9402, -10682,-11060,-10760,-9923,-8918,-8563,-9056,-9717,-9945,-9781, -9675,-10270,-11763,-13516,-15061,-16874,-19070,-20749,-21005,-19622, -17090,-14392,-12088,-10237,-8829,-8058,-7796,-7482,-6512,-4761, -2525,-437,1139,1991,2138,1936,1785,1919,2519,3491, 4668,5953,7015,7181,6481,5977,6616,8273,9717,9809, 8783,7860,7475,6812,5385,3992,3594,4246,5477,6606, 7100,6586,5220,3798,3069,2831,2039,133,-2588,-5305, -7197,-8044,-8154,-8109,-8693,-10246,-12406,-14584,-15926,-15692, -13736,-10776,-7855,-5404,-3504,-2407,-2151,-2171,-1577,76, 2339,4300,5381,5769,5871,5955,6466,7877,10134,12911, 15321,16570,16976,17342,17594,17304,16688,16238,15852,14966, 13247,11205,9786,9059,8565,8615,9425,10319,10653,10081, 8587,6684,5031,3826,3058,2784,2600,1607,-633,-3731, -6595,-8275,-8894,-9210,-9498,-9606,-9391,-9004,-8957,-9380, -9671,-9426,-8953,-8867,-9551,-11128,-13378,-15947,-18508,-20330, -20749,-19724,-17780,-15442,-13173,-11567,-10852,-10708,-10411,-9343, -7531,-5530,-3708,-1765,252,1369,934,-183,-336,1080, 2980,4108,4428,4485,4668,5044,5502,6056,6655,7321, 8255,9318,9859,9124,7291,5293,4105,4113,5041,6112, 6439,5916,5272,5046,5180,5498,5703,5111,3400,738, -2069,-3916,-4585,-4741,-4998,-5746,-7294,-9583,-12196,-14622, -16195,-16034,-14129,-11511,-9022,-7034,-5668,-4967,-4746,-4271, -2643,-90,1999,3034,3527,3792,3819,3998,4877,6613, 9004,11335,13099,14339,15268,15992,16453,16724,17041,17259, 16891,15637,13762,11854,10220,9118,8749,9263,10416,11469, 11425,9957,7945,6425,5825,5844,5768,5120,4052,2614, 577,-1988,-4518,-6487,-7715,-8303,-8609,-8930,-9229,-9549, -9861,-9863,-9346,-8472,-7804,-7702,-8117,-9229,-11627,-15099, -18215,-19647,-19528,-18791,-17842,-16432,-14498,-12867,-12362,-12739, -12771,-11526,-9051,-6141,-3727,-2382,-1994,-1675,-978,-68, 832,1694,2426,3166,4019,4670,4760,4323,3985,4573, 6377,8506,9877,10172,9392,7890,6493,5869,6051,6654, 7027,6596,5556,4836,5058,6127,7309,7779,7433,6472, 4549,1842,-434,-1492,-1683,-1775,-2170,-3153,-5008,-7957, -11454,-14193,-15291,-14751,-13245,-11593,-10180,-9041,-8261,-7779, -6990,-5387,-3200,-1000,695,1676,2065,2155,2143,2322, 3241,5058,7285,9232,10775,12048,13245,14333,15154,15948, 17067,18166,18326,16888,14296,11753,10233,9895,10393,11077, 11536,11610,11196,10197,8926,7928,7427,7244,7229,7151, 6493,4797,2279,-217,-2177,-3842,-5482,-6861,-7540,-7723, -8344,-9611,-10541,-10258,-9044,-7736,-6858,-6733,-7308,-8451, -10455,-13407,-16592,-18964,-19646,-18643,-17070,-16010,-15669,-15815, -15997,-15452,-13951,-12090,-10376,-8639,-6760,-4968,-3601,-2938, -2724,-2277,-1218,377,2101,3190,3258,2745,2198,1953, 2688,4715,7207,8764,8875,8273,7790,7505,7266,7205, 7342,7129,6279,5222,4542,4720,5695,6874,7852,8396, 8111,6713,4542,2466,1175,889,1235,1308,512,-1290, -4060,-7427,-10517,-12533,-13255,-13103,-12700,-12319,-11895,-11332, -10627,-9724,-8378,-6318,-3904,-1944,-829,-211,278,694, 990,1320,2138,3815,5966,7783,8807,9437,10531,12320, 14432,16528,18120,18653,17897,16235,14346,12876,11884,11255, 11277,12018,12566,12068,10903,9963,9507,9272,8986,8701, 8685,8742,8174,6616,4250,1707,-153,-1235,-2431,-4174, -5976,-7432,-8498,-9238,-9659,-9625,-8896,-7548,-5924,-4781, -5153,-7327,-10417,-13242,-15170,-16155,-16509,-16760,-17139,-17279, -17028,-16716,-16688,-16528,-15585,-13864,-11921,-9928,-7866,-6311, -5786,-5756,-5133,-3412,-1013,959,1743,1542,987,468, 489,1457,3165,4970,6222,6837,7069,7304,7663,7974, 8132,8148,7797,6902,5639,4573,4273,4900,6245,7753, 8752,8761,7756,5996,4158,3107,3163,3814,4137,3626, 2209,33,-2758,-5739,-8312,-10028,-10788,-11197,-11965,-12925, -13341,-12937,-12050,-10975,-9616,-7670,-5325,-3337,-2219,-1692, -1425,-1337,-910,354,2062,3367,3979,4401,5375,6999, 8777,10758,13201,15694,17366,17826,17018,15466,14167,13470, 13066,12652,12304,12239,12373,12102,11106,9926,9354,9448, 9883,10259,10122,9401,8425,7446,6289,4660,2758,1004, -451,-1851,-3418,-5334,-7745,-9968,-10595,-9289,-7216,-5586, -4746,-4703,-5450,-7011,-9108,-11120,-12697,-13985,-15133,-15850, -15992,-16089,-16675,-17604,-18186,-17727,-16241,-14222,-12327,-10988, -10240,-9745,-9065,-7650,-5398,-2946,-1097,-206,-96,-373, -553,-341,325,1438,2768,3937,4665,5122,5713,6653, 7674,8518,8993,8771,7712,6101,4509,3639,4190,5865, 7628,8665,8746,8009,6830,5493,4355,4119,4989,6015, 6072,4971,3174,1088,-1159,-3487,-5514,-7017,-8414,-9845, -11047,-12006,-13069,-13960,-13937,-12632,-10372,-8000,-6351,-5419, -4737,-4009,-3165,-2309,-1443,-303,1076,2039,2134,1968, 2569,4301,6760,9415,11887,13893,15276,16039,16131,15304, 14009,13259,13377,13602,13329,12690,11864,10961,10347,10229, 10292,10163,9891,9939,10385,10504,9574,7899,6391,5542, 5017,4228,2858,772,-2084,-5214,-7785,-9101,-9063,-8163, -7014,-5978,-5105,-4638,-4998,-6330,-8285,-10181,-11569,-12374, -12794,-13360,-14497,-16096,-17644,-18525,-18287,-17050,-15548,-14509, -13947,-13615,-13175,-12199,-10550,-8409,-6019,-3891,-2579,-2108, -1970,-1785,-1317,-570,267,1175,2040,2563,2674,2942, 4154,6317,8504,9653,9506,8579,7142,5311,3922,3920, 5257,7155,8644,9202,8647,7255,5776,5011,5165,5803, 6436,6861,6908,6313,4945,2902,521,-1524,-2744,-3510, -4770,-6973,-9541,-11630,-13029,-13812,-13679,-12402,-10509,-8688, -7299,-6722,-6681,-6169,-4679,-2773,-1296,-442,38,322, 376,367,876,2375,4752,7698,10700,13061,14291,14424, 14265,14465,14813,14769,14322,13899,13724,13485,12818,11682, 10587,10045,10132,10655,11309,11667,11296,10169,8834,8025, 7939,8102,7972,7006,5081,2583,-158,-3067,-5741,-7586, -8296,-7801,-6395,-4844,-3863,-3876,-4990,-6629,-7936,-8546, -8817,-9277,-10349,-12077,-14033,-15853,-17180,-17602,-17098,-16190, -15504,-15455,-15776,-15642,-14779,-13512,-11907,-9726,-7258,-5405, -4630,-4424,-3945,-2913,-1655,-595,113,359,170,11, 379,1568,3550,6054,8350,9525,9162,7534,5575,4187, 3893,4824,6329,7388,7819,7992,7758,6766,5438,4724, 5065,6157,7319,7847,7406,6308,5028,3811,2460,1059, -41,-958,-2377,-4877,-8121,-11027,-12735,-13195,-12805,-11910, -10921,-10191,-9653,-8986,-8102,-7096,-5935,-4315,-2380,-905, -542,-1212,-2092,-2142,-945,1105,3430,5861,8283,10275, 11811,12830,13280,13408,13618,13994,14527,14943,14770,13740, 12139,10613,9867,10203,11098,11711,11716,11154,10274,9552, 9170,9071,9256,9423,9304,8833,7701,5472,2206,-1510, -4729,-6548,-6707,-5849,-4912,-4347,-4231,-4640,-5507,-6308, -6453,-6164,-6361,-7596,-9485,-11388,-13187,-14817,-15919,-16186, -15898,-15697,-16021,-16746,-17398,-17440,-16444,-14572,-12551,-10860, -9428,-8304,-7542,-6676,-5362,-3842,-2503,-1505,-1032,-1391, -2325,-2772,-1827,433,3219,5681,7230,7652,7198,6236, 5037,4008,3700,4533,6197,7576,7821,7211,6464,5806, 5159,4816,5235,6359,7466,7843,7400,6431,5254,4473, 4230,4019,3303,1636,-937,-3705,-6195,-8537,-10617,-11843, -11970,-11425,-10825,-10670,-10838,-10658,-9734,-8073,-5987,-4118, -2887,-2258,-2132,-2369,-2684,-2680,-2055,-654,1424,3943, 6600,8770,10001,10505,11028,12037,13414,14812,15599,15434, 14430,13061,11868,11198,11077,11249,11393,11369,11304,11208, 10727,9688,8798,8877,9795,10759,11235,11023,9747,7121, 3442,-178,-2515,-3632,-4086,-4195,-4268,-4572,-4892,-5000, -4997,-4968,-4747,-4527,-5001,-6475,-8474,-10415,-12011,-13044, -13392,-13559,-14203,-15360,-16559,-17370,-17704,-17482,-16581,-15116, -13522,-12315,-11595,-10992,-10029,-8270,-5794,-3465,-2273,-2428, -3156,-3665,-3862,-3781,-2809,-562,2323,4821,6222,6369, 5760,5000,4359,4048,4404,5278,6261,7074,7368,6874, 5820,4864,4725,5525,6532,7024,6936,6633,6398,6286, 6203,6113,6042,5861,5231,3743,1367,-1610,-4509,-6698, -8112,-9119,-9973,-10781,-11620,-12205,-12198,-11536,-10338,-8824, -7208,-5659,-4281,-3316,-3040,-3517,-4321,-4636,-3836,-2041, 230,2543,4355,5467,6307,7590,9491,11523,12974,13776, 14353,14646,14181,13096,12105,11485,11201,11286,11640,11910, 11653,10837,9639,8401,7933,8859,10641,12045,12430,11773, 10092,7542,4731,2218,265,-1162,-2270,-3144,-4014,-4975, -5615,-5444,-4566,-3615,-3255,-3727,-4877,-6447,-8071,-9296, -10085,-10796,-11492,-12088,-13084,-14838,-16750,-17859,-17649,-16531, -15552,-15257,-15201,-14833,-14082,-12961,-11333,-9007,-6374,-4237, -3212,-3369,-4291,-5303,-5597,-4792,-3110,-954,1304,3350, 4793,5257,4776,3856,3447,4020,5189,6310,6815,6600, 6022,5610,5459,5412,5514,5885,6416,6783,6697,6233, 5850,5863,6411,7331,8019,7884,6838,4980,2604,296, -1567,-3216,-4921,-6752,-8477,-9811,-10862,-11814,-12356,-12114, -11230,-9875,-7917,-5705,-4246,-4144,-4822,-5335,-5250,-4649, -3664,-2417,-1192,91,1563,2965,4341,6002,8006,9982, 11571,12823,13869,14339,13900,12894,12072,11827,12130,12667, 12923,12503,11341,9817,8670,8329,8689,9700,11255,12582, 12886,12132,10610,8683,6766,5183,3764,2024,-206,-2447, -3999,-4579,-4525,-4188,-3598,-2849,-2494,-3207,-4890,-6568, -7401,-7472,-7478,-8014,-9323,-11171,-13083,-14719,-15830,-16300, -16136,-15681,-15408,-15588,-16225,-16767,-16331,-14641,-12119,-9312, -6874,-5257,-4566,-4755,-5489,-6356,-6777,-6111,-4013,-1217, 1035,2290,2694,2663,2719,3099,3754,4654,5588,6236, 6395,6065,5481,5050,5117,5577,6235,6944,7225,6697, 5681,5067,5317,6148,7150,8234,8939,8655,7569,6237, 4765,2988,1001,-870,-2455,-3873,-5395,-7337,-9706,-11919, -12968,-12431,-10990,-9306,-7616,-6302,-5636,-5585,-5799,-5740, -5269,-4742,-4158,-3295,-2290,-1310,-221,995,2259,3783, 5915,8523,10920,12467,13071,12988,12537,12188,12291,12856, 13515,13843,13591,12711,11262,9581,8320,8215,9436,11053, 12063,12270,12189,11977,11422,10427,9151,7843,6430,4400, 1680,-1062,-3012,-3749,-3378,-2504,-1984,-2168,-2852,-3694, -4429,-5038,-5373,-5398,-5537,-6385,-7966,-10029,-12142,-13619, -14146,-14056,-14049,-14575,-15577,-16600,-17272,-17556,-17209,-15835, -13407,-10395,-7654,-6123,-6067,-6924,-7759,-7960,-7456,-6200, -4247,-2206,-838,-85,502,923,1214,1905,3236,4717, 5634,5753,5346,4751,4236,4300,5082,6060,6719,6752, 6115,5266,4829,4944,5383,5970,6701,7721,8893,9289, 8465,6928,5376,4095,3072,2181,1036,-832,-3474,-6444, -9224,-11266,-12137,-11774,-10667,-9543,-8636,-7837,-7136,-6696, -6593,-6536,-6203,-5484,-4586,-3846,-3322,-2913,-2617,-1959, -347,2144,4807,7152,9060,10426,11144,11079,10702,11052, 12372,13876,14665,14337,13169,11728,10330,9239,8745,8931, 9682,10725,11564,11691,11346,11267,11628,11986,11725,10441, 8215,5478,2684,394,-1025,-1630,-1637,-1428,-1425,-1946, -2940,-3882,-4142,-3737,-3239,-3245,-4090,-5682,-7409,-8842, -10240,-11562,-12247,-12239,-12277,-13080,-14627,-16383,-17962,-18853, -18279,-16119,-13298,-10723,-8797,-7815,-7823,-8367,-8866,-8826, -7940,-6384,-4578,-2999,-2046,-1681,-1467,-1016,-115,1386, 3274,4740,5065,4566,4111,4194,4479,4772,5199,5726, 6180,6423,6285,5642,4758,4264,4619,5705,7082,8385, 9192,9203,8483,7353,6447,6181,6072,5295,3732,1522, -1217,-4178,-6983,-9203,-10472,-10873,-10585,-9730,-8621,-7942, -7926,-8131,-7916,-7071,-6090,-5456,-4998,-4517,-4306,-4464, -4557,-3987,-2270,508,3576,6004,7319,7898,8355,9004, 9858,10971,12449,13951,14759,14392,13050,11423,10144,9500, 9515,9883,10014,9910,9948,10278,10854,11698,12555,12994, 12668,11444,9296,6444,3690,2075,1556,1062,111,-940, -1856,-2612,-3132,-3262,-3053,-2711,-2481,-2628,-3387,-4837, -6701,-8365,-9407,-9748,-9655,-9623,-10320,-12034,-14334,-16508, -18087,-18721,-17978,-15951,-13500,-11460,-10089,-9366,-9351,-9871, -10159,-9431,-7816,-6072,-4830,-4347,-4280,-3952,-3085,-1768, -285,1035,2125,3131,3904,4072,3768,3555,3763,4349, 5107,5851,6441,6505,5726,4543,3775,3872,4719,5895, 6978,7796,8132,7902,7603,7659,7862,7794,7382,6840, 5940,4155,1315,-2056,-5103,-7304,-8551,-9102,-9295,-9187, -8826,-8551,-8579,-8786,-8601,-7525,-5909,-4797,-4676,-5198, -5881,-6326,-6067,-4913,-2970,-545,1887,3817,4916,5336, 5833,6944,8614,10657,12679,13840,13801,13182,12591,11941, 11152,10552,10358,10267,9800,9075,8730,9249,10622,12291, 13571,13894,13070,11503,9743,7992,6356,4978,3857,2711, 1399,16,-1286,-2402,-3114,-3035,-2198,-1435,-1342,-1933, -3139,-4816,-6469,-7537,-7823,-7530,-7341,-7876,-9275,-11330, -13831,-16335,-18122,-18715,-17898,-15958,-13770,-12305,-11931,-12143, -12027,-11280,-10290,-9342,-8364,-7378,-6597,-6088,-5723,-5143, -4214,-3113,-1910,-443,1101,2238,2626,2523,2460,2666, 3194,4202,5434,6171,6014,5161,4239,3795,3881,4200, 4643,5244,5957,6661,7113,7060,6822,7049,7911,8766, 8894,8310,7288,5699,3254,196,-2804,-5122,-6477,-7039, -7491,-8293,-9166,-9663,-9742,-9370,-8365,-6942,-5802,-5331, -5447,-6038,-6946,-7580,-7118,-5428,-3168,-1263,-25,936, 1871,2839,4090,5737,7727,9808,11541,12525,12681,12348, 12193,12437,12532,12016,11048,9799,8517,7888,8327,9558, 11030,12396,13292,13600,13141,11939,10527,9363,8403,7442, 6350,4934,3136,1065,-850,-2024,-2167,-1538,-647,-81, -400,-1599,-3061,-4388,-5452,-6132,-6192,-5597,-4921,-5289, -7308,-10426,-13469,-15605,-16721,-16940,-16331,-15278,-14511,-14119, -13715,-13166,-12551,-11875,-11076,-10066,-9008,-8237,-7739,-7325, -6983,-6601,-5860,-4533,-2779,-1092,113,596,526,473, 1132,2412,3520,4179,4756,5311,5348,4696,3869,3428, 3621,4326,5002,5264,5328,5580,5899,5948,6052,6696, 7895,9137,9910,9920,9023,7080,4504,2079,105,-1669, -3411,-4985,-6353,-7680,-9092,-10176,-10288,-9354,-7840,-6322, -5583,-5923,-6744,-7355,-7690,-7670,-6962,-5599,-4045,-2811, -2098,-1556,-766,517,2413,4700,6787,8212,9107,9877, 10874,11986,12829,13267,13186,12336,10807,9193,8034,7608, 8081,9295,10837,12144,12862,12932,12476,11651,10886,10518, 10416,10034,8688,6304,3734,1754,288,-811,-1171,-579, 408,870,174,-1443,-3276,-4760,-5397,-4930,-3815,-3003, -3250,-4674,-6869,-9403,-11871,-13743,-14768,-15214,-15344,-15200, -14966,-14805,-14573,-14087,-13482,-12894,-11958,-10501,-9180,-8687, -8905,-9182,-8855,-7660,-6065,-4651,-3517,-2491,-1598,-1114, -1093,-875,178,1772,3174,4100,4604,4682,4364,3818, 3415,3441,3692,4082,4740,5352,5282,4681,4199,4200, 4912,6344,8014,9348,10120,10189,9401,7772,5722,3988, 2794,1611,-110,-2488,-5089,-7376,-8984,-9698,-9435,-8399, -7240,-6431,-6186,-6645,-7577,-8339,-8307,-7431,-6287,-5475, -5041,-4790,-4458,-3665,-2224,-397,1489,3180,4503,5659, 6882,8214,9779,11621,13120,13713,13388,12449,11119,9487, 7967,7435,8291,9846,11035,11499,11607,11723,11826,11762, 11777,11982,11962,11306,9973,7905,5249,2618,870,357, 730,1472,1923,1332,-293,-2102,-3470,-4194,-4143,-3377, -2391,-1956,-2516,-3916,-5681,-7630,-9678,-11611,-13172,-14031, -14059,-13961,-14461,-15249,-15575,-15025,-13873,-12747,-11894,-10984, -10211,-10032,-10199,-10062,-9443,-8325,-6790,-5225,-4085,-3555, -3354,-3051,-2476,-1610,-415,970,2308,3460,4218,4255, 3629,2944,2805,3304,4040,4523,4745,4819,4513,3754, 3011,3003,4045,5793,7657,9107,9714,9393,8659,7980, 7322,6577,5621,4233,2224,-445,-3531,-6291,-7973,-8393, -7907,-7088,-6526,-6605,-7237,-7878,-8077,-7813,-7358,-6841, -6329,-6123,-6300,-6450,-5923,-4542,-2863,-1496,-343,958, 2314,3384,4390,6031,8462,10931,12759,13610,13242,11911, 10383,9229,8479,8230,8630,9390,10126,10550,10699,10730, 10744,11045,11956,13056,13463,12715,10821,8172,5607,3656, 2546,2375,2835,3143,2633,1144,-778,-2172,-2825,-3241, -3481,-3060,-1981,-1181,-1514,-2903,-4787,-6733,-8483,-9825, -10878,-11916,-12938,-13859,-14732,-15460,-15707,-15305,-14314,-13082, -12047,-11469,-11355,-11535,-11549,-10990,-9971,-8802,-7635,-6402, -5212,-4504,-4481,-4523,-3987,-2841,-1301,331,1753,2750, 3266,3259,2862,2493,2537,3205,4305,5170,5265,4549, 3503,2705,2431,2809,3938,5555,7099,8162,8625,8651, 8501,8407,8579,8841,8440,6775,3984,850,-1902,-4044, -5559,-6189,-6036,-5994,-6686,-7550,-7910,-7840,-7593,-7298, -7150,-7106,-7111,-7131,-7180,-7177,-6709,-5410,-3747,-2469, -1674,-1052,-394,704,2543,5000,7740,10185,11858,12664, 12758,12111,10996,9927,9332,9420,9971,10356,10143,9710, 9638,9997,10575,11597,13247,14728,14784,13235,10988,8930, 7353,6202,5396,4896,4635,4305,3549,2127,258,-1437, -2382,-2549,-2134,-1481,-976,-831,-1281,-2364,-3710,-5089, -6496,-7782,-8824,-9976,-11599,-13423,-14860,-15485,-15405,-14955, -14364,-13667,-13028,-12653,-12643,-12839,-12750,-12150,-11054,-9634, -8293,-7357,-6743,-6303,-6008,-5782,-5263,-4090,-2280,-423, 969,1768,2001,1883,1827,2156,2989,4093,4823,4972, 4843,4333,3256,2267,2258,3243,4460,5362,6045,6751, 7291,7651,8313,9369,10321,10700,9956,7906,5158,2627, 582,-1140,-2644,-3907,-4875,-5611,-6397,-7181,-7592,-7551, -7222,-6842,-6739,-7067,-7647,-8120,-8114,-7537,-6502,-5305, -4447,-4099,-3740,-3016,-2235,-1334,364,3122,6255,8793, 10349,11238,11566,11218,10511,10020,10121,10622,10826,10206, 9053,8148,8127,9087,10652,12231,13509,14272,14186,13104, 11414,9677,8280,7351,6947,6895,6615,5684,4202,2515, 875,-532,-1479,-1717,-1252,-581,-296,-556,-1193,-1934, -2642,-3366,-4267,-5451,-6957,-8631,-10320,-12077,-13693,-14632, -14711,-14248,-13703,-13431,-13413,-13374,-13369,-13518,-13392,-12630, -11469,-10265,-9110,-8107,-7574,-7707,-7902,-7241,-5874,-4463, -3099,-1620,-381,208,306,365,833,1905,3216,4250, 4683,4562,4091,3400,2682,2348,2753,3636,4328,4430, 4280,4560,5499,6941,8587,10007,10800,10889,10264,8806, 6814,4863,3120,1443,-191,-1682,-3135,-4791,-6312,-6908, -6566,-6141,-6207,-6623,-7078,-7496,-7959,-8366,-8243,-7381, -6286,-5473,-5115,-5117,-5146,-4959,-4416,-3328,-1374,1550, 4800,7290,8523,8980,9323,9848,10517,11179,11571,11415, 10593,9358,8261,7633,7650,8461,10047,11986,13576,14152, 13680,12680,11442,10208,9311,8848,8691,8636,8230,7047, 5209,3142,1411,405,0,-232,-401,-355,-235,-422, -1002,-1513,-1604,-1700,-2418,-3604,-4995,-6879,-9130,-11043, -12264,-13006,-13459,-13509,-13175,-12883,-13073,-13647,-14195,-14229, -13619,-12624,-11545,-10507,-9586,-8985,-8879,-9109,-9040,-8052, -6385,-4843,-3685,-2745,-2093,-1730,-1462,-909,196,1762, 3340,4225,4085,3357,2845,2765,2865,3144,3551,3649, 3246,2746,2714,3350,4439,5846,7645,9532,10721,10684, 9783,8808,8008,7050,5646,3875,1890,-143,-2017,-3664, -4943,-5493,-5387,-5242,-5539,-6315,-7111,-7626,-8014,-8288, -8079,-7218,-6084,-5293,-5313,-5996,-6730,-6977,-6328,-4528, -1990,490,2585,4272,5582,6702,7819,8963,10177,11315, 11895,11630,10539,8997,7635,7006,7269,8307,9767,11378, 12880,13728,13303,11967,10872,10473,10314,10153,10117,9998, 9262,7753,5955,4267,2769,1640,1034,790,570,79, -528,-811,-752,-611,-582,-750,-1244,-2085,-3426,-5449, -7827,-9798,-10972,-11603,-12065,-12348,-12445,-12669,-13319,-14182, -14817,-14809,-14000,-12759,-11772,-11216,-10829,-10527,-10475,-10543, -10068,-8682,-6875,-5460,-4696,-4352,-4169,-3911,-3197,-1720, 260,1829,2474,2614,2709,2759,2742,2811,3116,3633, 3898,3478,2486,1544,1373,2297,3818,5387,6942,8356, 9327,9676,9510,9274,9212,8859,7612,5656,3527,1434, -499,-2128,-3289,-3917,-4143,-4307,-4736,-5649,-6982,-8210, -8796,-8448,-7356,-6177,-5592,-5757,-6451,-7379,-8046,-7970, -7088,-5582,-3581,-1352,437,1496,2494,4137,6163,7960, 9503,10928,11832,11615,10319,8626,7282,6674,6938,8088, 9809,11339,12178,12411,12129,11498,10884,10583,10716,11101, 11335,11016,9927,8358,6901,5675,4411,3165,2292,1735, 1207,504,-246,-718,-647,-120,372,409,-2,-710, -1976,-4071,-6446,-8280,-9229,-9662,-10219,-10918,-11530,-12280, -13427,-14482,-14851,-14457,-13638,-12729,-11939,-11489,-11661,-12190, -12313,-11555,-10084,-8432,-7254,-6761,-6541,-6202,-5726,-5062, -4045,-2543,-713,779,1323,1228,1314,1876,2625,3242, 3677,3912,3698,2841,1731,1045,1153,1999,3217,4425, 5554,6686,7737,8668,9455,9957,10049,9693,8938,7601, 5484,3071,991,-535,-1478,-1732,-1821,-2633,-4267,-5919, -7094,-7811,-8110,-7745,-6625,-5511,-5405,-6279,-7325,-8066, -8416,-8250,-7443,-6123,-4665,-3278,-2059,-942,269,1915, 4088,6516,8846,10635,11308,10795,9651,8398,7351,6765, 7035,8237,9749,10901,11393,11310,11021,10927,11043,11167, 11344,11646,11922,11741,10746,9282,8055,7195,6205,4935, 3759,2918,2093,958,-117,-497,-146,481,1102,1494, 1300,340,-1257,-3153,-4846,-6123,-7103,-7867,-8449,-9160, -10289,-11825,-13384,-14347,-14199,-13271,-12435,-12235,-12495,-12713, -12766,-12829,-12622,-11694,-10181,-8767,-8042,-7962,-8007,-7705, -6957,-5908,-4626,-3148,-1829,-1038,-683,-264,434,1385, 2564,3578,3850,3457,2872,2273,1651,1174,1155,1578, 2177,2928,4047,5354,6383,7176,8275,9775,10924,10892, 9789,8217,6408,4393,2636,1591,1089,669,-165,-1671, -3613,-5429,-6667,-7196,-7077,-6459,-5721,-5443,-5785,-6445, -7274,-8104,-8546,-8267,-7423,-6375,-5542,-5018,-4429,-3472, -2030,-67,2355,5044,7753,9814,10541,9949,8790,7895, 7527,7382,7497,8258,9455,10275,10365,10201,10235,10512, 10861,11178,11550,11965,12069,11701,11019,10200,9317,8453, 7600,6675,5542,4128,2547,1120,225,95,544,1097, 1546,1930,1970,1102,-669,-2558,-3721,-4144,-4521,-5365, -6704,-8246,-9715,-11211,-12578,-13145,-12819,-12279,-12100,-12330, -12823,-13366,-13568,-13209,-12368,-11358,-10413,-9595,-9188,-9273, -9285,-8621,-7397,-6140,-5117,-4239,-3474,-2980,-2483,-1411, 133,1394,2126,2715,3285,3471,2975,2133,1522,1330, 1467,1674,1778,1963,2535,3425,4522,6030,7978,9782, 10870,10946,10039,8564,6963,5614,4797,4360,3780,2745, 1219,-661,-2592,-4293,-5528,-6062,-5860,-5297,-4873,-5059, -5874,-6716,-7153,-7529,-7952,-7940,-7266,-6409,-6160,-6503, -6607,-5779,-4099,-1883,768,3724,6453,8283,8940,8734, 8193,7714,7537,7713,8102,8592,9064,9364,9464,9535, 9753,10146,10551,11014,11648,12114,11968,11405,10938,10756, 10636,10156,9126,7956,6907,5535,3533,1557,558,721, 1428,2075,2479,2464,1849,832,-239,-1137,-1742,-2097, -2554,-3612,-5413,-7439,-9085,-10293,-11219,-11607,-11447,-11325, -11860,-12814,-13505,-13698,-13618,-13206,-12279,-11304,-10914,-11017, -11078,-10650,-9666,-8510,-7653,-6987,-6240,-5479,-4886,-4455, -3756,-2514,-926,550,1728,2520,2821,2706,2378,2086, 1992,2024,1950,1750,1379,929,847,1578,3137,5258, 7559,9343,10108,9966,9397,8659,7709,6804,6373,6386, 5996,4519,2310,194,-1446,-2876,-4163,-4863,-4748,-4364, -4416,-5086,-6007,-6762,-7226,-7376,-7241,-6979,-6805,-6827, -7200,-7884,-8218,-7621,-6103,-3803,-945,1963,4378,5951, 6731,7046,7230,7334,7327,7430,7919,8622,8877,8471, 8182,8570,9303,9835,10147,10571,11121,11496,11457,11138, 10854,10825,11104,11316,10860,9591,7877,6025,4088,2370, 1573,1906,2555,2732,2559,2264,1667,834,201,46, 135,-138,-1154,-2705,-4451,-6212,-7799,-8915,-9399,-9480, -9807,-10849,-12203,-13142,-13389,-13189,-12904,-12656,-12368,-12098, -11992,-11971,-11727,-11143,-10298,-9286,-8315,-7606,-7205,-6934, -6637,-6132,-5190,-3704,-1951,-434,707,1457,1734,1637, 1579,1984,2693,2925,2247,1175,381,-45,-155,345, 1952,4487,6887,8244,8672,8678,8532,8333,8146,7999, 7983,7980,7437,5945,3792,1609,-204,-1599,-2529,-2953, -3123,-3417,-4046,-5004,-5958,-6516,-6686,-6660,-6386,-5975, -5953,-6807,-8176,-9158,-9221,-8561,-7428,-5564,-2819,129, 2454,3868,4664,5311,5995,6694,7287,7557,7680,8044, 8376,8165,7747,7894,8628,9415,9962,10389,10771,10802, 10439,10223,10626,11446,12174,12347,11833,10666,8868,6657, 4722,3665,3423,3447,3334,3009,2613,2137,1517,1007, 1077,1624,1900,1270,-194,-1943,-3555,-4789,-5651,-6383, -7215,-8144,-9191,-10360,-11472,-12251,-12550,-12495,-12396,-12316, -12216,-12267,-12564,-12736,-12357,-11507,-10584,-9753,-8950,-8186, -7872,-8202,-8380,-7596,-5999,-4358,-3019,-1908,-887,-66, 419,767,1335,2257,3115,3157,2191,798,-385,-1033, -958,-116,1412,3399,5295,6552,7087,7265,7436,7695, 8016,8517,9139,9247,8335,6688,4917,3187,1464,-38, -854,-1029,-1357,-2403,-3803,-4983,-5729,-5962,-5786,-5534, -5395,-5290,-5463,-6404,-8105,-9678,-10110,-9415,-8172,-6589, -4500,-2087,78,1621,2705,3744,4850,5758,6446,7152, 7750,7914,7606,7231,7279,7816,8528,9168,9687,10038, 10028,9584,9272,9716,10838,11980,12701,12843,12315,11124, 9390,7518,6096,5385,5177,4971,4298,3205,2242,1817, 1820,2108,2534,2790,2532,1611,284,-889,-1820,-2843, -3913,-4760,-5530,-6704,-8311,-9745,-10546,-11012,-11491,-11847, -11905,-11810,-11950,-12551,-13273,-13385,-12620,-11512,-10592,-9948, -9476,-9121,-9043,-9168,-9007,-8156,-6695,-5152,-4103,-3478, -2776,-1835,-843,213,1459,2693,3340,2967,1854,678, -315,-1196,-1450,-534,1193,2802,3863,4642,5358,5982, 6487,7067,7874,8865,9785,10030,9101,7318,5610,4393, 3389,2270,1224,512,-134,-1326,-3050,-4572,-5270,-5224, -4902,-4534,-4233,-4293,-5043,-6426,-7992,-9215,-9814,-9812, -9183,-7719,-5697,-3780,-2259,-897,572,2081,3412,4570, 5707,6670,7070,6915,6600,6548,7019,7854,8596,9005, 9120,9021,8795,8543,8580,9308,10738,12198,12929,12790, 12060,10950,9604,8462,7913,7553,6708,5418,4197,3324, 2749,2402,2386,2820,3322,3302,2645,1753,1032,454, -321,-1359,-2282,-3012,-3932,-5331,-7058,-8600,-9460,-9728, -9963,-10426,-10985,-11466,-11935,-12591,-13222,-13192,-12306,-11249, -10654,-10383,-10165,-10120,-10234,-10028,-9118,-7919,-7059,-6488, -5853,-5123,-4341,-3374,-2059,-416,1339,2739,3213,2613, 1483,494,-221,-822,-1114,-602,741,2180,2884,3005, 3390,4344,5490,6595,7723,8872,9774,9896,9053,7817, 6722,5772,4901,4133,3430,2534,1108,-778,-2484,-3541, -4065,-4233,-4038,-3601,-3260,-3460,-4422,-5892,-7422,-8675, -9480,-9729,-9357,-8335,-6927,-5548,-4378,-3161,-1546,496, 2339,3588,4555,5412,5841,5787,5765,6244,7151,7995, 8548,8804,8634,8000,7349,7347,8290,9790,11080,11738, 12011,12084,11769,11109,10432,10005,9662,8902,7513,5877, 4630,3923,3552,3280,3101,3208,3592,3644,2961,1989, 1453,1381,1097,295,-610,-1471,-2716,-4420,-6007,-7082, -7748,-8281,-8734,-9211,-9981,-11083,-12175,-12864,-12917,-12387, -11704,-11282,-11196,-11221,-11142,-10976,-10842,-10484,-9494,-8208, -7504,-7560,-7697,-7216,-6045,-4640,-3208,-1446,569,2161, 2616,2013,1003,161,-399,-781,-735,-145,572,981, 1137,1408,2020,2894,3999,5454,7119,8468,9082,8924, 8375,7834,7369,6878,6371,5780,4944,3793,2182,185, -1629,-2715,-3165,-3334,-3285,-2900,-2466,-2766,-4026,-5610, -6950,-7995,-8804,-9273,-9246,-8768,-8162,-7521,-6506,-4910, -3016,-1173,597,2225,3412,3921,3901,4055,4912,6253, 7437,8078,8181,7900,7381,6828,6614,7049,8171,9559, 10430,10540,10558,11029,11556,11504,11087,10847,10640,9785, 8223,6629,5471,4689,4202,4021,4014,4005,3763,3274, 2805,2491,2288,2190,2055,1624,869,-240,-1822,-3588, -4920,-5490,-5724,-6298,-7403,-8583,-9530,-10492,-11604,-12404, -12364,-11624,-11038,-11230,-11794,-12042,-11817,-11448,-11089,-10462, -9452,-8625,-8438,-8706,-8888,-8640,-7848,-6459,-4454,-2091, -82,1016,1293,1111,624,31,-409,-506,-253,127, 338,195,-145,-180,532,1790,3140,4602,6225,7533, 8062,7964,7794,7896,8048,7906,7580,7239,6596,5293, 3357,1309,-382,-1541,-2193,-2298,-1950,-1614,-1787,-2543, -3563,-4589,-5706,-6905,-7866,-8392,-8656,-8917,-9161,-9086, -8215,-6402,-4106,-2114,-736,347,1341,1897,2075,2841, 4555,6423,7479,7561,7211,6931,6699,6439,6505,7123, 7985,8741,9281,9600,9877,10348,10961,11498,11816,11797, 11309,10238,8737,7388,6468,5809,5200,4769,4661,4591, 4062,3097,2421,2550,3161,3475,3047,2278,1528,546, -972,-2526,-3425,-3653,-3896,-4773,-6225,-7707,-8951,-10038, -10863,-11172,-11055,-10925,-11089,-11477,-11874,-12189,-12331,-12035, -11246,-10230,-9344,-8914,-9193,-9823,-10108,-9812,-9015,-7671, -5706,-3298,-1239,-221,-64,-120,-103,-133,-219,-101, 248,382,-38,-774,-1221,-1073,-398,600,1931,3555, 5038,5963,6403,6720,7053,7353,7703,8179,8610,8519, 7649,6133,4190,2263,846,-129,-930,-1271,-972,-647, -1059,-2153,-3208,-3770,-4280,-5285,-6472,-7374,-8184,-9210, -10147,-10204,-8988,-6960,-4964,-3477,-2538,-1888,-1212,-318, 817,2258,3934,5435,6341,6592,6482,6318,6140,6051, 6338,7000,7641,7903,7916,8174,9018,10001,10617,11010, 11581,12054,11726,10424,8850,7843,7438,7021,6311,5594, 5107,4618,3819,2992,2748,3165,3719,3956,3757,3044, 1948,789,-201,-925,-1406,-1844,-2553,-3709,-5150,-6560, -7836,-8985,-9799,-10026,-9886,-10024,-10750,-11671,-12225,-12350, -12320,-12036,-11223,-10082,-9257,-9253,-9896,-10556,-10848,-10751, -10099,-8610,-6462,-4329,-2852,-2017,-1399,-945,-693,-340, 177,554,604,318,-313,-1070,-1527,-1498,-1043,-219, 1057,2706,4090,4654,4770,5267,6223,7116,7700,8358, 9190,9535,8733,7006,5149,3606,2386,1377,677,408, 329,3,-704,-1593,-2195,-2341,-2506,-3277,-4688,-6384, -8035,-9336,-9988,-9777,-8686,-7214,-6025,-5180,-4370,-3508, -2699,-1830,-485,1499,3485,4673,5072,5355,5871,6323, 6324,6082,6276,6964,7409,7246,7030,7408,8368,9478, 10495,11325,11843,11920,11493,10640,9695,8996,8640,8280, 7660,6743,5725,4731,3867,3419,3665,4296,4601,4363, 3856,3322,2650,1732,857,467,411,2,-1105,-2607, -4060,-5311,-6548,-7703,-8287,-8369,-8690,-9506,-10456,-11309, -12018,-12422,-12298,-11596,-10600,-9757,-9414,-9698,-10438,-11136, -11434,-11274,-10558,-9152,-7314,-5681,-4666,-3906,-2870,-1775, -1142,-734,-56,796,1083,409,-696,-1419,-1610,-1593, -1338,-611,561,1872,2811,3163,3393,4031,5109,6338, 7536,8643,9569,9900,9193,7663,6030,4805,3973,3265, 2516,1813,1075,162,-592,-736,-427,-296,-911,-2248, -3834,-5385,-7038,-8675,-9543,-9129,-8008,-7254,-7079,-6816, -6028,-5016,-4058,-2977,-1524,300,2009,3207,3929,4438, 5000,5676,6209,6444,6579,6696,6618,6374,6322,6823, 7872,9042,10075,11008,11656,11629,11049,10489,10349,10479, 10288,9449,8365,7457,6469,5255,4351,4258,4713,5052, 4961,4627,4181,3576,2923,2449,2231,2120,1848,1178, 61,-1356,-2771,-4008,-5123,-6004,-6451,-6714,-7427,-8714, -10059,-11016,-11635,-12078,-12000,-11073,-9894,-9461,-9895,-10540, -10949,-11234,-11551,-11662,-11062,-9728,-8272,-7218,-6476,-5644, -4456,-3122,-2003,-1093,-197,538,719,149,-853,-1606, -1798,-1693,-1461,-916,3,914,1405,1529,1796,2594, 3846,5356,6994,8554,9548,9457,8518,7657,7272,6810, 5767,4420,3332,2546,1652,621,104,428,1039,1127, 283,-1324,-3113,-4738,-6141,-7293,-8030,-8205,-7947,-7727, -7805,-7801,-7336,-6498,-5458,-4165,-2613,-1033,278,1186, 2051,3178,4369,5206,5722,6235,6638,6434,5659,5157, 5523,6502,7560,8512,9408,10138,10489,10470,10472,10660, 10956,11161,10981,10213,9061,7874,6743,5778,5216,5206, 5528,5575,5111,4583,4263,3828,3239,2968,3206,3486, 3105,2045,846,-259,-1488,-2849,-3849,-4213,-4345,-4996, -6463,-8212,-9584,-10482,-11088,-11397,-11191,-10436,-9608,-9396, -9952,-10761,-11259,-11403,-11525,-11554,-11112,-10205,-9297,-8659, -8113,-7247,-5875,-4328,-2975,-1725,-507,259,232,-402, -1086,-1426,-1672,-1873,-1539,-593,185,144,-382,-517, 265,1647,3074,4479,5961,7344,8277,8536,8275,8060, 8152,8041,7155,5606,4002,2770,1940,1472,1432,1781, 2153,1967,972,-470,-1916,-3387,-4907,-6047,-6529,-6754, -7277,-8067,-8491,-8305,-7886,-7441,-6593,-5178,-3631,-2417, -1563,-731,399,1870,3409,4706,5567,5924,5896,5535, 4975,4750,5272,6231,7102,7774,8449,9072,9382,9464, 9890,10790,11545,11603,11106,10415,9575,8442,7175,6344, 6223,6358,6177,5647,5098,4720,4323,3797,3442,3601, 4143,4417,3830,2539,1281,350,-511,-1416,-2120,-2515, -2869,-3792,-5482,-7395,-8914,-9856,-10397,-10621,-10417,-9803, -9354,-9626,-10353,-10901,-11183,-11445,-11658,-11530,-11008,-10552, -10521,-10430,-9689,-8475,-7240,-5992,-4462,-2637,-1025,-334, -699,-1487,-1892,-1695,-1346,-1184,-1062,-864,-794,-1064, -1557,-1690,-913,576,2081,3280,4375,5470,6414,7112, 7832,8697,9149,8593,7306,5956,4678,3384,2342,2047, 2524,3073,3024,2384,1439,299,-965,-2248,-3434,-4421, -5128,-5791,-6701,-7801,-8632,-8800,-8434,-7882,-7117,-6038, -4993,-4311,-3767,-2757,-1108,729,2288,3610,4710,5248, 5034,4463,4245,4686,5365,5876,6356,6941,7496,7897, 8155,8587,9531,10741,11542,11579,11154,10609,9945,8967, 7821,7127,7126,7284,6949,6078,5128,4582,4352,4107, 3984,4335,4905,4961,4162,2937,1928,1209,460,-215, -468,-585,-1274,-2761,-4579,-6222,-7683,-8958,-9744,-9813, -9386,-9056,-9298,-9968,-10475,-10624,-10793,-11212,-11596,-11566, -11096,-10708,-10919,-11430,-11387,-10344,-8618,-6876,-5291,-3641, -2211,-1674,-1952,-2263,-2065,-1570,-1177,-900,-681,-812, -1530,-2326,-2422,-1828,-997,-243,563,1577,2710,3790, 4906,6151,7541,8782,9330,8835,7587,6216,5088,4141, 3399,3180,3545,3913,3681,2945,2082,1205,170,-987, -1936,-2571,-3394,-4820,-6408,-7492,-8048,-8302,-8336,-8060, -7442,-6792,-6480,-6273,-5600,-4194,-2298,-461,1041,2356, 3479,4016,3911,3720,3967,4666,5334,5598,5630,5871, 6401,6879,7206,7791,9001,10456,11347,11308,10836,10431, 9952,9151,8426,8251,8335,7984,7141,6198,5434,4834, 4379,4237,4639,5259,5433,4955,4119,3297,2602,1894, 1261,1036,1163,1047,117,-1645,-3666,-5254,-6300,-7316, -8416,-9053,-8906,-8510,-8707,-9570,-10349,-10611,-10697,-10869, -10882,-10677,-10681,-11249,-12015,-12333,-12022,-11218,-9867,-7995, -6031,-4558,-3841,-3656,-3445,-2895,-2076,-1342,-989,-958, -1002,-1287,-1938,-2538,-2552,-1990,-1337,-1010,-796,-176, 887,2029,3377,5219,7153,8468,8819,8440,7730,6784, 5595,4577,4226,4440,4694,4539,3957,3326,2835,2215, 1374,555,-64,-788,-2049,-3819,-5469,-6488,-6963,-7285, -7611,-7754,-7634,-7501,-7558,-7541,-6849,-5219,-3172,-1530, -396,824,2119,2887,3043,3217,3853,4687,5173,5212, 5206,5348,5519,5750,6366,7512,8932,10048,10581,10746, 10741,10467,9967,9549,9456,9543,9395,8670,7565,6546, 5886,5461,5039,4826,5222,6015,6236,5366,4079,3338, 3235,3085,2636,2371,2420,2193,1256,-212,-1832,-3445, -4999,-6244,-6890,-7154,-7456,-7931,-8539,-9179,-9640,-9910, -10066,-10039,-9828,-9771,-10268,-11369,-12521,-12886,-12279,-11270, -10175,-8852,-7348,-6129,-5498,-5106,-4320,-3140,-2143,-1573, -1241,-1088,-1246,-1697,-2105,-2125,-1856,-1709,-1899,-2132, -1994,-1459,-698,362,2044,4261,6344,7626,7984,7817, 7461,6839,5974,5309,5146,5300,5308,4810,3996,3511, 3495,3371,2759,1992,1375,559,-969,-2937,-4444,-5075, -5385,-5962,-6734,-7340,-7719,-8081,-8463,-8395,-7506,-6053, -4510,-3085,-1742,-514,435,1110,1823,2764,3765,4500, 4756,4644,4520,4541,4630,4860,5559,6939,8553,9480, 9556,9562,9987,10335,10123,9722,9820,10295,10223,9159, 7743,6659,5980,5645,5628,5787,5995,6037,5705,5133, 4528,3905,3388,3150,3181,3437,3604,3189,2060,625, -729,-2032,-3454,-4774,-5514,-5765,-6266,-7388,-8588,-9203, -9281,-9230,-9172,-9019,-8987,-9489,-10601,-11843,-12589,-12632, -12255,-11674,-10801,-9703,-8746,-8086,-7444,-6395,-4910,-3564, -2800,-2367,-1934,-1622,-1627,-1822,-1908,-1694,-1396,-1514, -2166,-2856,-3053,-2667,-1998,-997,761,3186,5307,6387, 6670,6815,7002,6877,6359,5945,5966,6028,5575,4730, 4143,4157,4380,4343,3987,3428,2570,1315,-180,-1577, -2581,-3284,-3952,-4710,-5600,-6570,-7473,-8300,-8913,-8827, -7854,-6527,-5451,-4597,-3511,-2087,-926,-295,544,2102, 3669,4329,4122,3772,3798,4016,4118,4368,5177,6446, 7706,8540,8848,8919,9070,9431,9945,10509,10886,10810, 10153,9108,8103,7391,6819,6274,6042,6351,6774,6602, 5801,4997,4546,4239,3857,3615,3861,4415,4582,3951, 2804,1565,387,-743,-1812,-2693,-3447,-4423,-5845,-7284, -8169,-8458,-8484,-8413,-8225,-8091,-8481,-9556,-10901,-11856, -12153,-12025,-11878,-11824,-11547,-10877,-10133,-9555,-8783,-7429, -5712,-4394,-3831,-3510,-2953,-2339,-2070,-2055,-1769,-1111, -806,-1426,-2564,-3451,-3793,-3706,-3222,-2081,-160,1966, 3591,4590,5242,5754,6219,6579,6681,6576,6329,5872, 5238,4653,4441,4731,5096,4989,4562,4165,3541,2225, 540,-624,-1022,-1371,-2362,-3714,-4802,-5694,-6861,-8213, -9027,-8843,-7945,-7036,-6441,-5924,-5163,-4050,-2783,-1543, -248,1152,2465,3299,3495,3296,3114,3017,3157,3885, 5124,6208,6712,6876,7245,7964,8624,9005,9520,10382, 11067,11001,10211,9193,8383,7782,7199,6775,6758,7034, 7101,6648,5905,5214,4608,4068,3864,4224,4859,5161, 4825,4029,3149,2387,1654,835,-10,-825,-1778,-3279, -5227,-6829,-7458,-7378,-7227,-7339,-7491,-7602,-8111,-9297, -10562,-11161,-11154,-11209,-11677,-12140,-12051,-11583,-11256,-10845, -9819,-8241,-6689,-5670,-5145,-4678,-4066,-3436,-2802,-2093, -1362,-788,-709,-1422,-2707,-3839,-4353,-4336,-3867,-2772, -1103,543,1620,2418,3555,4940,5903,6167,6237,6475, 6476,5787,4827,4427,4813,5428,5630,5402,5079,4688, 3979,2881,1645,741,397,125,-710,-2111,-3624,-5024, -6308,-7396,-8052,-8139,-7959,-7804,-7515,-6877,-6155,-5561, -4736,-3228,-1160,682,1682,1971,2103,2338,2527,2604, 2864,3643,4663,5339,5569,5791,6279,6931,7592,8408, 9431,10333,10746,10624,10132,9414,8653,7913,7333,7221, 7545,7807,7513,6656,5690,5085,4705,4321,4204,4638, 5295,5441,4802,3899,3457,3410,3100,2363,1563,722, -618,-2610,-4630,-5840,-6175,-6286,-6568,-6875,-7122,-7520, -8214,-9123,-9938,-10448,-10703,-11033,-11679,-12400,-12698,-12543, -12216,-11740,-10766,-9292,-7948,-7245,-6871,-6216,-5313,-4538, -3731,-2527,-1160,-507,-1023,-2161,-3056,-3569,-4065,-4459, -4296,-3425,-2177,-1062,-212,761,2216,3884,5194,5827, 6009,6121,6134,5735,5137,4948,5322,5870,6128,6071, 5789,5195,4296,3476,3039,2775,2282,1373,262,-761, -1883,-3437,-5234,-6572,-7081,-7153,-7449,-7980,-8219,-7985, -7521,-6816,-5648,-4018,-2219,-732,227,850,1331,1672, 1958,2369,2984,3772,4410,4662,4794,5208,5856,6484, 7110,7989,9276,10554,11084,10743,10176,9799,9403,8798, 8311,8408,8874,8846,7988,6871,6148,5766,5403,5156, 5269,5602,5681,5272,4629,4200,4230,4475,4441,3905, 2987,1851,456,-1331,-3154,-4286,-4674,-4996,-5609,-6198, -6528,-6868,-7599,-8500,-8961,-9088,-9593,-10596,-11525,-12045, -12382,-12757,-12844,-12149,-10811,-9603,-9035,-8860,-8514,-7659, -6503,-5364,-4224,-2890,-1562,-881,-1244,-2213,-2986,-3391, -3789,-4204,-4342,-4036,-3449,-2749,-1857,-567,1023,2564, 3868,4901,5564,5701,5276,4751,4831,5487,5966,5984, 5883,5945,5986,5578,4760,4089,3882,3812,3511,2826, 1776,502,-893,-2386,-3733,-4704,-5425,-6181,-7062,-7897, -8398,-8513,-8358,-7835,-6667,-4949,-3294,-2214,-1531,-729, 252,966,1233,1567,2442,3478,3927,3808,3832,4303, 4878,5386,6121,7379,8899,10002,10346,10157,9818,9531, 9341,9193,9103,9233,9400,9042,8018,6898,6325,6302, 6262,5923,5687,5722,5544,4915,4393,4534,5095,5379, 5147,4721,4158,3079,1428,-236,-1418,-2223,-3061,-4034, -4844,-5296,-5630,-6166,-6945,-7571,-7707,-7744,-8429,-9800, -11157,-11908,-12188,-12375,-12415,-11906,-10995,-10324,-10113,-10075, -9758,-8889,-7618,-6238,-4738,-3247,-2211,-1830,-1839,-1968, -2249,-2843,-3614,-4032,-3982,-3994,-4240,-4206,-3311,-1604, 242,1705,2769,3679,4389,4726,4732,4685,4878,5356, 5859,6165,6261,6187,5914,5422,4974,4910,5118,5104, 4566,3699,2842,1954,653,-922,-2073,-2653,-3369,-4740, -6367,-7508,-8010,-8338,-8592,-8259,-7116,-5668,-4461,-3562, -2742,-1814,-873,-110,516,1265,2223,3104,3482,3278, 3058,3369,4043,4727,5550,6903,8510,9494,9514,9224, 9256,9509,9596,9590,9782,10007,9700,8788,7892,7452, 7293,7094,6770,6463,6216,5845,5190,4591,4557,5142, 5799,5932,5602,5315,5051,4186,2678,1158,143,-516, -1329,-2578,-3828,-4620,-5053,-5444,-5831,-6077,-6227,-6700, -7770,-9129,-10285,-11163,-11796,-11995,-11638,-11100,-10940,-11219, -11408,-11108,-10435,-9716,-8857,-7503,-5688,-4024,-3067,-2716, -2520,-2223,-1985,-2159,-2784,-3518,-4149,-4628,-4856,-4670, -3911,-2595,-1095,238,1473,2625,3354,3514,3501,3935, 4855,5579,5721,5717,5990,6149,5790,5237,5150,5619, 6023,5827,5164,4428,3740,2937,1932,866,-60,-867, -1885,-3398,-5157,-6573,-7392,-7942,-8395,-8354,-7471,-6200, -5272,-4785,-4156,-3057,-1969,-1226,-411,828,2075,2703, 2643,2391,2405,2691,3170,4015,5296,6675,7706,8138, 8173,8395,8978,9474,9672,9865,10166,10204,9631,8677, 8089,8144,8327,8036,7360,6773,6425,6018,5328,4705, 4754,5426,6067,6249,6113,5859,5369,4555,3637,2867, 2100,1054,-281,-1594,-2649,-3602,-4447,-4854,-4722,-4513, -4853,-5944,-7409,-8606,-9438,-10197,-10856,-11179,-11079,-10818, -10862,-11405,-12019,-12114,-11588,-10670,-9595,-8365,-6962,-5677, -4764,-3944,-2928,-2054,-1867,-2303,-2784,-3132,-3768,-4829, -5626,-5457,-4457,-3269,-2207,-1131,85,1146,1781,2095, 2505,3294,4339,5128,5358,5273,5317,5453,5416,5227, 5334,5916,6384,6079,5302,4766,4464,3889,2939,2076, 1584,952,-396,-2219,-3874,-5261,-6517,-7563,-8145,-8047, -7434,-6796,-6393,-5994,-5347,-4473,-3538,-2509,-1136,424, 1518,1723,1423,1298,1597,2093,2624,3431,4650,5910, 6607,6673,6788,7561,8648,9364,9581,9671,9826,9799, 9373,8818,8615,8688,8642,8395,8027,7452,6611,5674, 5039,5003,5345,5626,5786,6006,6199,6083,5563,4915, 4507,4283,3709,2444,722,-899,-1988,-2621,-3173,-3649, -3787,-3733,-4075,-5150,-6575,-7784,-8677,-9462,-9966,-9993, -9919,-10341,-11284,-12074,-12178,-11936,-11828,-11629,-10839,-9546, -8220,-7166,-6261,-5121,-3749,-2604,-2048,-2137,-2613,-3150, -3834,-4843,-5733,-5757,-4887,-3812,-3072,-2441,-1472,-400, 209,586,1463,2805,3863,4255,4310,4484,4780,4894, 4837,4976,5467,5999,6140,5823,5404,5160,4876,4338, 3751,3381,3070,2288,876,-828,-2450,-3998,-5553,-6907, -7578,-7455,-7128,-7190,-7466,-7362,-6658,-5658,-4678,-3560, -2022,-418,417,350,91,252,861,1577,2224,2963, 3792,4441,4896,5418,6165,7014,7789,8475,9139,9567, 9489,9061,8770,8844,9108,9243,9052,8671,8233,7664, 6808,5759,5030,5095,5655,5950,5763,5556,5672,5909, 5883,5672,5584,5394,4560,3155,1706,417,-811,-1935, -2560,-2474,-2221,-2605,-3702,-4997,-6052,-6820,-7511,-8292, -8976,-9317,-9511,-10023,-10978,-11931,-12305,-12166,-12109,-12220, -11865,-10806,-9628,-8805,-7926,-6454,-4611,-3220,-2614,-2483, -2558,-3010,-3992,-5106,-5659,-5450,-4885,-4444,-4132,-3580, -2721,-1919,-1303,-502,713,1982,2832,3215,3477,3880, 4227,4292,4391,4859,5516,5925,5850,5567,5499,5566, 5300,4749,4443,4573,4583,3804,2248,528,-988,-2509, -4122,-5468,-6175,-6416,-6748,-7404,-8022,-8138,-7665,-6730, -5405,-3913,-2627,-1804,-1336,-920,-456,-30,407,942, 1625,2410,3072,3420,3688,4319,5442,6659,7462,7889, 8409,9024,9178,8791,8549,8923,9566,9840,9583,9127, 8591,7777,6851,6273,6126,6063,5811,5517,5476,5675, 5834,5832,5880,6182,6588,6588,5670,3980,2314,1272, 602,-209,-1028,-1344,-1338,-1827,-3037,-4316,-5074,-5566, -6326,-7254,-7863,-8150,-8609,-9520,-10571,-11270,-11535,-11772, -12200,-12463,-12219,-11659,-11072,-10392,-9232,-7415,-5438,-4002, -3226,-2836,-2799,-3241,-4055,-4812,-5073,-4913,-4817,-4910, -4818,-4320,-3632,-3097,-2523,-1475,-13,1184,1739,2032, 2575,3301,3705,3732,3935,4664,5469,5788,5642,5459, 5466,5459,5323,5310,5517,5693,5536,4879,3679,2108, 443,-1070,-2249,-3148,-4064,-5184,-6461,-7613,-8223,-8149, -7729,-7173,-6240,-4867,-3512,-2780,-2609,-2246,-1312,-345, 137,446,1019,1735,2184,2374,2796,3711,4845,5897, 6833,7625,8071,8110,8045,8259,8857,9563,10001,9938, 9586,9336,9131,8525,7521,6749,6694,6910,6553,5638, 5033,5201,5690,6054,6398,6937,7402,7171,6035,4615, 3538,2742,1890,1002,368,88,-296,-1189,-2371,-3272, -3830,-4440,-5278,-6083,-6605,-7049,-7818,-8878,-9791,-10308, -10642,-11153,-11852,-12366,-12519,-12523,-12407,-11762,-10272,-8251, -6455,-5243,-4343,-3536,-3152,-3466,-4136,-4506,-4400,-4353, -4780,-5268,-5264,-4839,-4411,-4033,-3385,-2305,-1075,-77, 648,1245,1746,2196,2699,3239,3797,4392,4929,5250, 5320,5227,5078,4976,5072,5603,6411,6778,6205,5095, 4137,3388,2364,943,-375,-1322,-2332,-3896,-5751,-7153, -7771,-7909,-7807,-7354,-6571,-5729,-4979,-4314,-3678,-2970, -2152,-1343,-624,-11,513,867,927,985,1732,3216, 4577,5244,5586,6180,7003,7486,7456,7580,8391,9470, 10032,9910,9558,9345,9129,8630,8062,7809,7730,7284, 6298,5297,4927,5160,5566,5992,6607,7310,7625,7190, 6193,5215,4533,3855,3014,2198,1662,1258,567,-534, -1607,-2288,-2777,-3438,-4257,-4959,-5457,-6126,-7216,-8282, -8770,-8937,-9430,-10414,-11460,-12156,-12615,-13126,-13344,-12668, -11107,-9292,-7737,-6517,-5492,-4627,-4060,-3870,-3931,-4065, -4169,-4327,-4674,-5107,-5372,-5371,-5193,-4802,-4022,-2941, -1994,-1318,-621,256,958,1221,1443,2253,3594,4627, 4775,4499,4434,4606,4755,4932,5381,6118,6756,6866, 6451,5761,5027,4422,3846,3014,1951,753,-754,-2630, -4488,-5842,-6606,-7143,-7578,-7498,-6736,-5938,-5717,-5714, -5096,-3673,-2227,-1500,-1297,-964,-370,70,175,412, 1325,2697,3826,4504,5028,5613,6106,6382,6710,7519, 8658,9488,9680,9511,9423,9523,9509,9256,9012,8923, 8583,7677,6458,5500,5209,5417,5708,6101,6827,7575, 7753,7229,6501,6009,5600,4894,4035,3503,3193,2535, 1351,141,-585,-968,-1498,-2311,-3153,-3854,-4544,-5383, -6295,-7044,-7469,-7743,-8254,-9272,-10602,-11797,-12691,-13304, -13474,-12975,-11870,-10503,-9189,-7890,-6583,-5565,-5073,-4723, -4138,-3644,-3773,-4425,-4932,-4980,-5026,-5476,-5863,-5537, -4596,-3528,-2711,-2204,-1818,-1315,-668,76,927,1942, 3021,3779,3922,3723,3685,3909,4222,4654,5360,6211, 6639,6361,5903,5850,5987,5719,4917,4043,3461,2687, 1011,-1366,-3462,-4672,-5310,-6006,-6800,-7235,-7153,-6946, -6801,-6420,-5540,-4333,-3270,-2613,-2151,-1652,-1300,-1200, -1021,-340,882,2182,3000,3386,3795,4416,5000,5464, 6096,7113,8198,8726,8685,8681,9065,9484,9581,9537, 9662,9664,8972,7677,6468,5815,5553,5378,5450,6036, 6883,7431,7403,6974,6513,6272,6095,5688,5064,4454, 3883,3191,2214,1146,423,55,-423,-1229,-2133,-2991, -3881,-4825,-5519,-5728,-5860,-6489,-7524,-8483,-9438,-10786, -12362,-13421,-13501,-12922,-12277,-11641,-10693,-9351,-7877,-6706, -6004,-5493,-4819,-4104,-3770,-4024,-4606,-5085,-5461,-5853, -5995,-5542,-4713,-4035,-3733,-3512,-3013,-2355,-1806,-1132, 83,1589,2612,2734,2423,2560,3233,3749,3862,4103, 4886,5858,6310,6042,5672,5779,6187,6367,6151,5684, 4961,3761,2028,170,-1360,-2546,-3714,-4955,-6004,-6600, -6890,-7193,-7418,-7089,-6011,-4697,-3803,-3397,-3029,-2572, -2310,-2210,-1757,-640,648,1448,1771,2205,2897,3504, 3991,4690,5693,6727,7393,7599,7739,8142,8724,9266, 9640,9860,10049,10026,9373,8136,6886,6121,5851,5770, 5802,6147,6752,7122,7027,6837,6816,6774,6499,6151, 5924,5565,4708,3620,2868,2516,2091,1313,352,-460, -1141,-1983,-3061,-4033,-4529,-4501,-4492,-5108,-6292,-7502, -8553,-9727,-11172,-12495,-13157,-13125,-12823,-12357,-11506,-10328, -9197,-8315,-7465,-6260,-4916,-4165,-4199,-4495,-4655,-4905, -5481,-6082,-6018,-5201,-4440,-4410,-4814,-4812,-4100,-3153, -2446,-1771,-731,524,1434,1737,1738,1940,2415,2941, 3470,4092,4758,5192,5205,5073,5362,6089,6690,6807, 6637,6470,6119,5056,3366,1788,663,-458,-1911,-3442, -4694,-5711,-6698,-7495,-7617,-6910,-5907,-5128,-4627,-4244, -3881,-3555,-3284,-2878,-2101,-1035,-65,493,714,1094, 1887,2785,3452,4086,5010,6019,6592,6671,6854,7479, 8246,8915,9613,10304,10601,10213,9359,8487,7693,6855, 6154,5948,6209,6580,6703,6572,6517,6786,7185,7293, 6965,6512,6288,6111,5482,4468,3683,3433,3286,2674, 1532,366,-516,-1327,-2236,-2954,-3228,-3329,-3726,-4444, -5153,-5845,-7001,-8793,-10613,-11716,-12125,-12472,-12964,-13087, -12418,-11343,-10487,-9847,-8808,-7118,-5442,-4658,-4757,-5114, -5277,-5269,-5367,-5557,-5511,-5223,-5056,-5189,-5408,-5349, -4907,-4297,-3628,-2629,-1277,-220,95,78,438,1290, 2064,2443,2795,3429,4011,4174,4137,4388,5047,5800, 6322,6703,7033,7073,6541,5537,4410,3449,2590,1475, -81,-1887,-3565,-4945,-6125,-7064,-7304,-6683,-5856,-5497, -5499,-5333,-4867,-4391,-4038,-3473,-2563,-1700,-1163,-746, -251,310,892,1590,2559,3663,4491,4904,5143,5486, 6048,6773,7496,8273,9275,10268,10668,10204,9265,8492, 8074,7627,6902,6260,6155,6440,6534,6298,6217,6606, 7141,7328,7120,6830,6573,6128,5465,5010,4959,4863, 4204,3088,2106,1499,753,-524,-1804,-2359,-2266,-2248, -2747,-3497,-4071,-4658,-5839,-7625,-9365,-10524,-11137,-11696, -12495,-13190,-13261,-12712,-11837,-10759,-9357,-7761,-6540,-6032, -5844,-5512,-5216,-5318,-5614,-5547,-5053,-4778,-5180,-5862, -6138,-5888,-5420,-4854,-4108,-3137,-2239,-1683,-1337,-870, -205,600,1319,1852,2332,2880,3256,3267,3215,3633, 4632,5648,6206,6506,6890,7107,6755,6066,5535,5222, 4642,3397,1663,-203,-2093,-3845,-5156,-5862,-6087,-6089, -6068,-6024,-5883,-5692,-5510,-5246,-4688,-3782,-2856,-2318, -2135,-1889,-1251,-385,328,915,1794,3023,4012,4288, 4114,4266,5086,6173,7079,7925,8964,9946,10370,10116, 9561,9135,8756,8141,7462,7103,6928,6554,6032,5884, 6440,7228,7465,7116,6833,6905,6974,6607,5958,5593, 5707,5789,5277,4245,3192,2424,1609,395,-866,-1500, -1458,-1349,-1632,-2194,-2827,-3716,-5057,-6460,-7483,-8333, -9531,-11092,-12418,-13018,-13088,-13012,-12662,-11663,-10148,-8661, -7616,-7071,-6726,-6345,-5925,-5566,-5283,-5041,-4875,-5012, -5583,-6185,-6273,-5921,-5584,-5343,-4828,-3904,-3083,-2786, -2619,-1980,-933,-2,654,1249,1843,2188,2206,2195, 2497,3200,4117,5016,5720,6191,6415,6446,6494,6683, 6877,6764,6052,4744,3166,1488,-348,-2243,-3784,-4600, -4833,-5102,-5763,-6356,-6355,-5953,-5672,-5580,-5239,-4362, -3382,-2976,-3053,-2913,-2233,-1306,-454,403,1446,2451, 2931,2963,3130,3694,4400,5078,5963,7312,8771,9603, 9642,9446,9540,9797,9665,8875,7887,7305,7120,6856, 6349,6061,6468,7198,7454,7150,6883,6949,6994,6703, 6314,6262,6436,6328,5888,5405,4775,3653,2090,765, 184,122,-46,-515,-1054,-1486,-1908,-2551,-3536,-4684, -5746,-6777,-8094,-9761,-11382,-12481,-13020,-13204,-12928,-11942, -10545,-9493,-9023,-8603,-7773,-6830,-6204,-5830,-5382,-4936, -4819,-5196,-5785,-6140,-6158,-6042,-5840,-5485,-5021,-4572, -4257,-3998,-3512,-2714,-1759,-784,96,748,1097,1117, 1014,1260,2072,3062,3771,4198,4669,5340,5918,6102, 6228,6798,7646,7976,7268,5850,4415,3099,1513,-372, -1973,-2910,-3505,-4293,-5275,-5951,-6148,-6193,-6179,-5821, -5084,-4399,-4162,-4245,-4099,-3481,-2722,-2088,-1422,-414, 903,1931,2120,1797,1874,2705,3793,4579,5227,6262, 7651,8664,9028,9230,9651,10004,9806,9108,8427,7936, 7392,6818,6544,6659,6863,6909,6896,7029,7252,7218, 6802,6301,6179,6600,7162,7244,6723,5968,5243,4368, 3170,1993,1343,1066,642,41,-389,-608,-979,-1713, -2538,-3130,-3767,-5002,-6845,-8805,-10419,-11582,-12386,-12812, -12718,-12154,-11459,-10844,-10269,-9621,-8775,-7807,-6944,-6227, -5606,-5230,-5273,-5608,-5931,-6044,-6030,-6045,-5969,-5632, -5262,-5193,-5370,-5257,-4420,-3146,-2136,-1582,-1078,-386, 212,324,214,612,1669,2685,3128,3283,3674,4346, 4952,5423,6123,7126,7931,8113,7739,7015,5994,4605, 2928,1354,191,-774,-1975,-3479,-4826,-5478,-5563,-5716, -6073,-6089,-5434,-4654,-4512,-4953,-5104,-4463,-3468,-2657, -1905,-929,80,675,858,1065,1556,2168,2785,3502, 4437,5516,6531,7414,8263,9125,9800,10026,9713,9165, 8862,8709,8171,7278,6668,6733,7130,7288,7144,7058, 7062,6845,6466,6375,6738,7217,7405,7253,7050,6794, 6138,5025,3878,3073,2563,2070,1381,630,80,-235, -448,-697,-1037,-1536,-2386,-3780,-5565,-7375,-8981,-10349, -11437,-12104,-12248,-12087,-11992,-11897,-11437,-10543,-9532,-8707, -7965,-6997,-5955,-5502,-5849,-6354,-6338,-5864,-5614,-5863, -6088,-5919,-5764,-5975,-6216,-5904,-4960,-3848,-3026,-2445, -1903,-1424,-1108,-842,-371,396,1209,1714,1925,2220, 2784,3383,3788,4281,5376,6921,8024,8055,7515,7152, 6915,6097,4540,2974,1888,897,-504,-2207,-3675,-4610, -5164,-5494,-5540,-5364,-5250,-5310,-5470,-5602,-5468,-4974, -4295,-3540,-2627,-1627,-802,-412,-266,198,1041,1674, 1871,2164,3078,4430,5637,6473,7285,8306,9187,9578, 9648,9596,9353,8764,7953,7410,7337,7450,7420,7227, 7044,6977,6897,6638,6354,6364,6752,7268,7587,7579, 7364,7029,6474,5743,5051,4433,3737,2841,1848,1103, 722,472,233,113,127,-72,-971,-2609,-4348,-5714, -7032,-8677,-10296,-11204,-11382,-11560,-12159,-12630,-12305,-11316, -10260,-9388,-8516,-7552,-6779,-6492,-6541,-6501,-6189,-5796, -5604,-5678,-5858,-6031,-6312,-6669,-6704,-6078,-5055,-4302, -4027,-3663,-2853,-2099,-1878,-1850,-1275,-61,940,1118, 914,1076,1638,2262,2865,3647,4761,6034,7063,7632, 7789,7638,7284,6726,5938,5011,3989,2586,767,-1015, -2346,-3240,-3996,-4686,-4992,-4881,-4886,-5394,-6053,-6198, -5716,-5108,-4719,-4284,-3493,-2527,-1717,-1149,-691,-223, 185,478,884,1610,2542,3431,4237,5134,6338,7720, 8787,9299,9440,9432,9307,8948,8407,7989,7880,7896, 7813,7619,7383,7089,6704,6327,6261,6654,7166,7375, 7338,7405,7640,7595,7044,6424,6148,5842,4891,3433, 2245,1771,1642,1322,961,937,1162,1061,210,-1224, -2746,-4122,-5489,-6920,-8323,-9492,-10398,-11272,-12183,-12691, -12404,-11622,-10825,-10076,-9175,-8168,-7552,-7545,-7506,-6770, -5753,-5331,-5613,-5961,-5960,-5964,-6377,-6899,-6884,-6232, -5364,-4754,-4526,-4386,-4002,-3396,-2769,-2141,-1400,-597, -9,230,313,530,804,1074,1617,2728,4220,5446, 6081,6521,7169,7738,7784,7396,6950,6527,5697,4121, 2145,408,-846,-1787,-2595,-3318,-3883,-4370,-4895,-5394, -5702,-5791,-5777,-5726,-5521,-4896,-3896,-2958,-2394,-2044, -1588,-954,-362,8,292,737,1384,2149,3025,4112, 5452,6786,7793,8498,9080,9398,9188,8610,8278,8469, 8712,8464,7946,7657,7564,7225,6561,6115,6349,6930, 7179,7036,6937,7166,7573,7774,7573,7194,6872,6424, 5546,4288,3095,2382,2065,1801,1652,1851,2088,1743, 724,-401,-1241,-2177,-3668,-5358,-6637,-7657,-9006,-10729, -12108,-12512,-12074,-11496,-11123,-10783,-10189,-9380,-8690,-8317, -7940,-7206,-6276,-5619,-5528,-5828,-6165,-6470,-6798,-6906, -6569,-6053,-5771,-5711,-5515,-5020,-4523,-4273,-3916,-3013, -1810,-958,-721,-761,-632,-326,-94,154,778,1867, 3135,4192,4916,5547,6292,7060,7669,8014,8022,7557, 6509,5037,3540,2282,1115,-119,-1358,-2352,-2949,-3376, -4009,-4873,-5593,-5912,-5950,-5926,-5747,-5207,-4464,-3902, -3460,-2777,-1916,-1304,-1133,-1007,-481,214,565,788, 1561,3030,4645,5882,6763,7617,8437,8820,8679,8396, 8434,8832,9130,8884,8243,7732,7538,7334,6874,6460, 6474,6756,6799,6594,6669,7128,7499,7534,7556,7823, 7900,7187,5845,4607,3852,3358,2773,2237,2179,2556, 2720,2210,1245,394,-85,-571,-1594,-3182,-4867,-6403, -7950,-9552,-10874,-11529,-11600,-11495,-11349,-11013,-10593,-10293, -10033,-9434,-8321,-7124,-6469,-6325,-6236,-6075,-6113,-6497, -6919,-6920,-6483,-6059,-5972,-6086,-6073,-5799,-5432,-5065, -4476,-3538,-2551,-1834,-1490,-1398,-1367,-1299,-1099,-592, 224,1141,1923,2512,3154,4183,5516,6629,7268,7647, 7916,7897,7297,6177,4947,3771,2435,1035,-4,-651, -1378,-2493,-3672,-4401,-4749,-5218,-5885,-6251,-5999,-5400, -4938,-4701,-4308,-3506,-2572,-1947,-1733,-1614,-1250,-752, -461,-268,426,1882,3575,4812,5598,6403,7267,7774, 7916,8161,8652,9021,8925,8552,8345,8289,7969,7313, 6781,6698,6861,6794,6383,6066,6283,6896,7408,7598, 7724,8048,8248,7716,6448,5134,4341,3970,3621,3228, 3007,2924,2665,2225,1888,1703,1358,616,-382,-1457, -2778,-4641,-6776,-8525,-9529,-10000,-10435,-11015,-11434,-11445, -11205,-10967,-10643,-9981,-8910,-7798,-7052,-6706,-6545,-6503, -6552,-6634,-6685,-6574,-6337,-6200,-6268,-6386,-6426,-6361, -6217,-5858,-5015,-3815,-2896,-2629,-2644,-2429,-1974,-1625, -1445,-1116,-549,-34,378,1056,2154,3372,4365,5224, 6284,7462,8177,8089,7451,6719,6040,5203,3987,2605, 1506,784,31,-1128,-2506,-3478,-3939,-4458,-5290,-5924, -5922,-5541,-5312,-5254,-4857,-3951,-3009,-2465,-2204,-1952, -1743,-1724,-1697,-1182,-50,1279,2371,3246,4234,5408, 6417,6931,7173,7659,8439,9007,8949,8509,8285,8392, 8342,7846,7248,6997,6994,6782,6274,5914,6009,6414, 6957,7621,8261,8518,8172,7407,6676,6138,5553,4800, 4126,3801,3741,3523,2932,2373,2301,2556,2599,2111, 1167,-22,-1405,-3058,-4856,-6455,-7660,-8544,-9315,-10117, -10835,-11272,-11442,-11405,-11046,-10237,-9159,-8269,-7766,-7357, -6856,-6580,-6740,-6948,-6704,-6128,-5803,-6016,-6419,-6650, -6757,-6789,-6519,-5817,-4956,-4354,-4064,-3709,-3092,-2493, -2221,-2221,-2150,-1716,-1071,-658,-540,-210,757,2120, 3308,4208,5278,6630,7671,7890,7525,7159,6878,6254, 5150,4025,3203,2438,1370,88,-1057,-1955,-2803,-3747, -4577,-5069,-5329,-5598,-5851,-5706,-4918,-3838,-3129,-2963, -2920,-2621,-2217,-2119,-2219,-1876,-807,457,1389,2100, 3007,4172,5247,5991,6606,7305,7950,8360,8545,8617, 8623,8504,8254,8093,8103,7938,7284,6371,5774,5765, 6118,6469,6837,7428,8106,8469,8255,7618,6966,6562, 6283,5855,5204,4501,3937,3488,3067,2854,3019,3344, 3382,2974,2286,1385,67,-1658,-3278,-4440,-5443,-6709, -8146,-9299,-10026,-10639,-11283,-11593,-11225,-10407,-9555,-8820, -8219,-7788,-7584,-7520,-7300,-6762,-6096,-5732,-5925,-6431, -6699,-6576,-6475,-6665,-6782,-6339,-5439,-4726,-4519,-4365, -3786,-3052,-2672,-2629,-2461,-1995,-1592,-1531,-1533,-1125, -291,713,1760,2953,4360,5715,6634,7092,7335,7448, 7291,6722,5892,5220,4732,3936,2569,1092,120,-423, -1190,-2475,-3784,-4569,-4978,-5385,-5730,-5665,-5050,-4202, -3602,-3349,-3215,-3088,-2986,-2869,-2589,-2064,-1417,-771, -7,1023,2153,3077,3797,4621,5742,6877,7557,7722, 7767,8010,8440,8764,8764,8548,8338,8060,7471,6565, 5783,5579,5899,6363,6832,7396,7902,8010,7751,7515, 7518,7444,6963,6272,5720,5191,4408,3545,3127,3327, 3752,3946,3842,3561,3080,2301,1212,-87,-1365,-2525, -3724,-5056,-6430,-7687,-8869,-10101,-11167,-11488,-10874,-9987, -9570,-9587,-9390,-8680,-7941,-7634,-7488,-6992,-6266,-5864, -6037,-6432,-6593,-6585,-6729,-6942,-6847,-6386,-5844,-5475, -5227,-4828,-4213,-3651,-3317,-3064,-2682,-2280,-2166,-2386, -2438,-1925,-1142,-501,204,1471,3245,4794,5608,5971, 6450,7095,7449,7222,6635,6062,5511,4756,3779,2788, 1890,993,-68,-1270,-2447,-3561,-4612,-5340,-5473,-5145, -4744,-4486,-4237,-3831,-3392,-3222,-3345,-3461,-3219,-2570, -1810,-1306,-971,-362,696,1924,2975,3873,4874,5896, 6560,6854,7162,7685,8206,8546,8840,9145,9074,8324, 7262,6503,6181,6062,6021,6217,6715,7263,7528,7506, 7477,7633,7900,7976,7632,6987,6267,5504,4677,3982, 3727,3927,4166,4133,4037,4140,4085,3331,1997,794, 187,-267,-1361,-3150,-4989,-6494,-7791,-9038,-10043,-10454, -10315,-10082,-10013,-9944,-9652,-9153,-8644,-8251,-7784,-7082, -6413,-6161,-6293,-6427,-6401,-6486,-6825,-7062,-6836,-6357, -6094,-6117,-5977,-5354,-4551,-4081,-3920,-3627,-3039,-2496, -2455,-2827,-3061,-2835,-2292,-1611,-713,463,1760,2948, 3998,5017,5928,6535,6844,7009,7009,6692,6042,5258, 4609,4118,3526,2520,1114,-345,-1518,-2478,-3527,-4612, -5252,-5151,-4643,-4331,-4324,-4246,-3974,-3800,-3800,-3665, -3293,-2936,-2729,-2464,-1879,-1085,-321,490,1598,2908, 4046,4735,5104,5533,6215,7028,7767,8365,8818,9096, 8961,8253,7296,6616,6333,6209,6093,6123,6398,6694, 6718,6698,7108,7841,8268,8005,7422,7048,6807,6136, 4967,3984,3760,4164,4576,4618,4413,4187,3922,3454, 2819,2262,1835,1166,-109,-1786,-3420,-4893,-6412,-7922, -9022,-9489,-9657,-9991,-10391,-10419,-10034,-9625,-9412,-9121, -8389,-7405,-6758,-6695,-6835,-6748,-6504,-6510,-6870,-7172, -7090,-6801,-6609,-6520,-6367,-6065,-5633,-5049,-4342,-3697, -3331,-3279,-3370,-3450,-3443,-3388,-3242,-2819,-1972,-823, 338,1303,2233,3482,4939,5974,6274,6254,6399,6612, 6460,5920,5396,5031,4507,3633,2507,1226,-206,-1712, -3014,-3816,-4176,-4430,-4670,-4734,-4579,-4333,-4203,-4236, -4203,-3909,-3502,-3305,-3356,-3340,-2905,-2101,-1242,-392, 646,1838,2808,3330,3693,4377,5390,6334,7079,7868, 8710,9091,8672,7831,7291,7223,7137,6664,6048,5781, 6024,6372,6437,6396,6704,7408,8034,8208,7950,7508, 6881,5957,5019,4557,4637,4811,4707,4455,4364,4381, 4173,3731,3428,3388,3224,2452,1096,-357,-1652,-3047, -4755,-6439,-7595,-8196,-8717,-9446,-10113,-10390,-10292,-10012, -9658,-9235,-8708,-8112,-7525,-7017,-6713,-6697,-6828,-6914, -6895,-6805,-6724,-6799,-7011,-7087,-6796,-6272,-5861,-5562, -4971,-4078,-3489,-3567,-3944,-4048,-3813,-3609,-3619,-3538, -3054,-2245,-1278,-150,1119,2376,3476,4390,5189,5835, 6152,6140,6031,6043,6167,6106,5587,4669,3607,2495, 1188,-321,-1760,-2747,-3239,-3621,-4139,-4557,-4605,-4418, -4358,-4390,-4191,-3792,-3653,-3922,-4173,-3986,-3409,-2774, -2165,-1321,-131,1001,1611,1774,2131,3172,4630,5833, 6550,7158,7887,8469,8522,8149,7787,7582,7285,6834, 6457,6268,6088,5770,5549,5839,6680,7569,8020,8030, 7892,7647,7052,6125,5385,5225,5347,5216,4785,4431, 4397,4467,4338,4100,4037,4123,4054,3549,2558,1204, -264,-1687,-3031,-4376,-5710,-6901,-7891,-8727,-9351,-9708, -9973,-10222,-10201,-9654,-8792,-8170,-7973,-7779,-7280,-6787, -6702,-6905,-6921,-6655,-6499,-6727,-7123,-7297,-7126,-6709, -6179,-5613,-5065,-4620,-4325,-4090,-3869,-3769,-3892,-4143, -4244,-4009,-3539,-3057,-2518,-1647,-302,1226,2454,3257, 3971,4801,5447,5673,5767,6096,6548,6673,6273,5599, 4844,3844,2462,960,-241,-1050,-1808,-2775,-3713,-4193, -4165,-4056,-4179,-4318,-4082,-3638,-3603,-4165,-4728,-4646, -3914,-3057,-2386,-1757,-1033,-382,103,608,1400,2470, 3543,4474,5480,6650,7614,7960,7848,7788,7998,8136, 7854,7281,6785,6401,5928,5419,5296,5810,6709,7459, 7818,7855,7695,7432,7087,6593,6060,5712,5582,5444, 5130,4722,4413,4249,4206,4356,4698,4882,4581,3936, 3307,2664,1592,-23,-1678,-2912,-3870,-5010,-6402,-7692, -8575,-9137,-9619,-10000,-10057,-9728,-9181,-8660,-8272,-7960, -7649,-7330,-6972,-6603,-6374,-6418,-6706,-7051,-7186,-7043, -6868,-6824,-6673,-6127,-5316,-4725,-4564,-4496,-4191,-3871, -3907,-4238,-4464,-4393,-4193,-3977,-3514,-2552,-1249,-13, 995,1926,2922,3830,4373,4664,5150,6003,6808,7006, 6596,6100,5725,5089,3900,2455,1254,409,-444,-1588, -2790,-3565,-3787,-3712,-3592,-3479,-3438,-3646,-4168,-4633, -4630,-4222,-3814,-3546,-3105,-2304,-1465,-1031,-880,-479, 377,1477,2599,3693,4784,5808,6620,7125,7401,7690, 8159,8573,8508,7885,7063,6408,5958,5659,5628,6014, 6646,7187,7564,7844,7895,7546,7004,6722,6789,6772, 6280,5552,5085,4965,4875,4608,4361,4472,4897,5236, 5200,4833,4280,3601,2720,1599,316,-958,-2170,-3389, -4683,-5983,-7170,-8222,-9054,-9439,-9322,-9079,-9066,-9144, -8892,-8206,-7540,-7246,-7111,-6772,-6351,-6225,-6507,-6881, -7007,-6932,-6912,-6929,-6714,-6180,-5586,-5209,-4994,-4607, -4054,-3799,-4050,-4437,-4545,-4442,-4477,-4629,-4394,-3423, -2074,-970,-257,444,1440,2509,3278,3808,4511,5470, 6347,6791,6817,6634,6293,5653,4802,4036,3273,2110, 476,-1090,-2011,-2368,-2603,-2922,-3167,-3242,-3302,-3561, -4052,-4532,-4701,-4465,-4023,-3608,-3236,-2765,-2242,-1929, -1810,-1480,-631,556,1722,2727,3672,4537,5247,5950, 6838,7752,8340,8455,8309,8074,7620,6787,5849,5404, 5696,6320,6762,6936,7090,7357,7585,7586,7386,7152, 7026,6915,6618,6108,5563,5122,4799,4599,4598,4816, 5091,5233,5303,5375,5214,4564,3537,2586,1907,1156, -112,-1781,-3361,-4606,-5687,-6796,-7859,-8549,-8790,-8913, -9125,-9233,-8965,-8427,-7972,-7696,-7319,-6725,-6282,-6329, -6676,-6857,-6745,-6679,-6935,-7206,-6995,-6364,-5793,-5536, -5344,-4851,-4157,-3768,-3934,-4358,-4625,-4737,-4878,-4941, -4610,-3872,-3054,-2281,-1391,-406,416,1004,1676,2744, 4060,5159,5770,6027,6245,6575,6872,6778,6172,5268, 4287,3183,1805,332,-826,-1477,-1880,-2288,-2650,-2919, -3217,-3704,-4290,-4716,-4835,-4706,-4399,-3964,-3540,-3326, -3347,-3296,-2838,-1999,-1120,-359,453,1484,2619,3600, 4397,5255,6401,7681,8684,9090,8918,8451,7916,7323, 6737,6372,6337,6523,6773,7052,7366,7612,7663,7648, 7782,7982,7950,7584,7108,6754,6434,5916,5240,4781, 4843,5294,5694,5766,5681,5688,5659,5351,4786,4173, 3535,2616,1263,-304,-1726,-3029,-4443,-5945,-7189,-7962, -8470,-9059,-9689,-9978,-9717,-9192,-8816,-8604,-8198,-7520, -6997,-6955,-7185,-7301,-7272,-7333,-7534,-7644,-7541,-7328, -7034,-6538,-5849,-5192,-4784,-4639,-4621,-4671,-4879,-5264, -5678,-5811,-5416,-4605,-3850,-3409,-3029,-2325,-1289,-224, 732,1745,2875,3910,4706,5363,6067,6787,7286,7389, 7136,6566,5592,4274,2885,1655,614,-293,-986,-1352, -1558,-1995,-2807,-3715,-4303,-4427,-4298,-4236,-4278,-4215, -3980,-3767,-3737,-3768,-3496,-2779,-1881,-1089,-413,278, 1027,1875,2947,4315,5775,6987,7846,8438,8752,8636, 8079,7351,6879,6793,6810,6655,6477,6606,7041,7401, 7435,7366,7556,7964,8195,8012,7584,7129,6609,5946, 5359,5152,5304,5512,5534,5480,5613,5921,6030,5749, 5336,5075,4803,4050,2704,1217,-32,-1229,-2669,-4244, -5605,-6640,-7535,-8390,-9078,-9472,-9606,-9532,-9219,-8725, -8208,-7808,-7549,-7366,-7176,-7009,-7021,-7315,-7710,-7865, -7671,-7410,-7273,-7068,-6491,-5590,-4811,-4557,-4745,-5033, -5286,-5511,-5644,-5575,-5316,-5046,-4838,-4540,-3986,-3261, -2461,-1545,-506,543,1471,2299,3207,4287,5367,6216, 6800,7212,7450,7291,6475,5099,3662,2607,1925,1292, 522,-249,-903,-1550,-2316,-3092,-3685,-3997,-4067,-4009, -3930,-3940,-4110,-4357,-4419,-4100,-3511,-2966,-2583,-2178, -1557,-845,-226,404,1438,3030,4773,6107,6935,7555, 8093,8308,8046,7525,7117,6941,6826,6665,6552,6621, 6760,6792,6767,7009,7615,8163,8214,7856,7509,7294, 6922,6229,5572,5355,5463,5504,5383,5312,5440,5675, 5856,5938,5895,5704,5339,4764,3922,2855,1637,290, -1152,-2546,-3784,-4976,-6266,-7570,-8530,-8941,-9057,-9215, -9376,-9233,-8676,-8005,-7634,-7550,-7443,-7228,-7092,-7183, -7460,-7779,-8034,-8111,-7841,-7193,-6405,-5769,-5371,-5157, -5096,-5195,-5397,-5552,-5552,-5466,-5437,-5529,-5578,-5318, -4682,-3967,-3406,-2829,-1944,-819,173,893,1611,2649, 3990,5341,6435,7142,7427,7228,6600,5737,4830,3929, 3058,2296,1671,1068,241,-899,-2038,-2718,-2925,-3069, -3413,-3780,-3905,-3910,-4118,-4502,-4655,-4302,-3675,-3185, -2993,-2863,-2525,-2009,-1457,-744,375,1893,3435,4694, 5791,6889,7704,7879,7553,7303,7386,7483,7241,6815, 6539,6483,6504,6528,6626,6937,7451,7941,8155,8050, 7768,7434,7062,6620,6200,5899,5668,5437,5290,5343, 5553,5734,5770,5829,6094,6364,6195,5505,4660,3968, 3268,2181,706,-806,-2158,-3444,-4771,-6067,-7200,-8091, -8714,-8996,-8972,-8826,-8693,-8528,-8220,-7752,-7259,-6964, -6988,-7248,-7569,-7880,-8176,-8294,-7980,-7246,-6493,-6078, -5948,-5785,-5462,-5191,-5239,-5497,-5673,-5662,-5624,-5677, -5782,-5759,-5464,-4935,-4244,-3476,-2753,-2181,-1688,-995, 95,1442,2749,3977,5260,6464,7142,7021,6393,5780, 5381,4977,4314,3466,2645,1904,1028,-115,-1230,-1926, -2188,-2421,-2862,-3365,-3697,-3978,-4389,-4689,-4528,-4061, -3745,-3706,-3659,-3409,-3077,-2869,-2670,-2120,-1023,476, 2069,3466,4613,5607,6428,6957,7193,7277,7350,7393, 7261,6921,6539,6261,6089,6070,6294,6768,7275,7547, 7601,7689,7813,7694,7188,6571,6221,6134,5959,5541, 5143,5031,5185,5453,5685,5857,5979,6052,6062,5934, 5571,4949,4095,3111,2111,1053,-241,-1814,-3451,-4844, -5923,-6840,-7710,-8403,-8759,-8857,-8890,-8839,-8495,-7819, -7124,-6844,-7068,-7507,-7838,-7986,-8067,-8126,-8012,-7621, -7095,-6620,-6215,-5866,-5665,-5633,-5599,-5413,-5241,-5412, -5891,-6265,-6223,-5892,-5589,-5387,-5035,-4379,-3677,-3245, -3029,-2589,-1543,-35,1475,2815,4131,5353,6106,6232, 6055,5963,5930,5672,5145,4542,3865,2931,1740,588, -204,-641,-1042,-1662,-2388,-2970,-3332,-3626,-4010,-4361, -4415,-4138,-3758,-3561,-3593,-3709,-3762,-3716,-3498,-2931, -1928,-644,714,2059,3375,4554,5404,5951,6486,7128, 7596,7581,7198,6834,6656,6495,6231,6012,6064,6456, 6993,7385,7535,7561,7545,7489,7366,7143,6787,6336, 5862,5520,5396,5352,5232,5113,5241,5669,6100,6239, 6132,6021,5933,5682,5149,4399,3568,2618,1368,-209, -1835,-3183,-4228,-5244,-6423,-7561,-8370,-8775,-8831,-8584, -8113,-7631,-7347,-7258,-7215,-7229,-7485,-7965,-8326,-8260, -7835,-7414,-7253,-7188,-6855,-6216,-5676,-5536,-5583,-5446, -5228,-5359,-5901,-6338,-6334,-6065,-5808,-5541,-5151,-4735, -4543,-4535,-4345,-3725,-2699,-1444,-72,1408,2879,4072, 4778,5117,5401,5824,6223,6254,5805,5083,4345,3608, 2753,1784,903,262,-258,-857,-1534,-2189,-2818,-3469, -4004,-4175,-3997,-3808,-3785,-3793,-3746,-3791,-4058,-4388, -4375,-3773,-2739,-1628,-592,473,1701,3016,4186,5084, 5791,6428,6965,7280,7298,7057,6673,6259,6016,6070, 6289,6443,6520,6714,7106,7505,7646,7489,7262,7124, 7013,6710,6173,5651,5379,5252,5097,5002,5159,5554, 5888,5954,5885,5926,6052,6082,5895,5434,4636,3546, 2345,1211,124,-1096,-2568,-4172,-5613,-6663,-7412,-8108, -8708,-8798,-8246,-7554,-7315,-7486,-7628,-7563,-7594,-7903, -8221,-8235,-8009,-7832,-7766,-7601,-7204,-6694,-6246,-5885, -5557,-5341,-5400,-5765,-6207,-6411,-6322,-6105,-5893,-5694, -5466,-5269,-5278,-5500,-5571,-5077,-3956,-2568,-1301,-152, 1048,2226,3201,4017,4785,5461,5870,5969,5869,5630, 5110,4245,3287,2545,2037,1506,762,-87,-842,-1509, -2238,-3039,-3704,-3952,-3777,-3497,-3437,-3634,-3938,-4235, -4480,-4621,-4571,-4294,-3798,-3018,-1941,-736,389,1409, 2467,3684,4954,5963,6486,6656,6758,6864,6802,6458, 6063,5949,6108,6277,6362,6541,6889,7208,7309,7281, 7286,7301,7179,6847,6355,5833,5421,5179,5112,5205, 5353,5376,5253,5242,5626,6223,6510,6279,5887,5681, 5468,4823,3731,2596,1656,643,-763,-2465,-4109,-5468, -6556,-7426,-7967,-8077,-7862,-7605,-7492,-7467,-7444,-7448, -7590,-7815,-7949,-7943,-7917,-7990,-8109,-8010,-7517,-6821, -6265,-5930,-5642,-5379,-5381,-5762,-6239,-6408,-6196,-5826, -5515,-5350,-5384,-5642,-6005,-6168,-5937,-5391,-4686,-3849, -2807,-1553,-293,772,1685,2672,3824,4907,5600,5851, 5878,5810,5521,4927,4202,3545,3031,2587,2052,1288, 298,-803,-1783,-2432,-2762,-2943,-3102,-3244,-3295,-3284, -3426,-3907,-4532,-4881,-4750,-4355,-4030,-3706,-3073,-2066, -917,217,1393,2661,3925,4994,5776,6309,6661,6828, 6771,6529,6305,6246,6287,6324,6418,6628,6839,6929, 7027,7368,7837,7926,7421,6720,6357,6339,6230,5796, 5300,5112,5205,5295,5266,5296,5589,6050,6391,6468, 6378,6216,5931,5495,4926,4255,3442,2351,905,-768, -2411,-3856,-5139,-6287,-7071,-7305,-7208,-7189,-7371,-7520, -7426,-7246,-7260,-7479,-7664,-7742,-7843,-8029,-8153,-8041, -7644,-7071,-6395,-5744,-5362,-5407,-5760,-6117,-6179,-5917, -5606,-5462,-5423,-5359,-5355,-5593,-6045,-6380,-6308,-5871, -5286,-4634,-3868,-2950,-1889,-763,376,1518,2655,3768, 4770,5508,5854,5772,5370,4935,4730,4642,4316,3627, 2822,2113,1363,343,-822,-1743,-2180,-2279,-2339,-2536, -2812,-3068,-3336,-3720,-4157,-4465,-4560,-4538,-4492,-4275, -3752,-2998,-2157,-1166,78,1482,2756,3798,4786,5764, 6415,6488,6258,6220,6502,6730,6553,6125,5952,6243, 6717,7044,7213,7384,7584,7655,7512,7214,6898,6645, 6389,6031,5641,5353,5184,5061,5010,5175,5596,6035, 6207,6169,6203,6364,6380,6091,5668,5311,4850,3935, 2501,845,-770,-2292,-3677,-4853,-5736,-6315,-6706,-6988, -7130,-7141,-7123,-7165,-7202,-7150,-7089,-7296,-7842,-8384, -8510,-8121,-7496,-6926,-6461,-6053,-5771,-5709,-5838,-6022, -6059,-5831,-5455,-5159,-5075,-5180,-5416,-5724,-6008,-6154, -6191,-6176,-5979,-5410,-4569,-3807,-3215,-2475,-1277,272, 1770,2933,3813,4545,5141,5466,5429,5223,5140,5191, 5113,4724,4063,3237,2249,1123,96,-600,-1026,-1409, -1768,-1996,-2145,-2421,-2898,-3374,-3655,-3823,-4126,-4554, -4768,-4512,-3973,-3550,-3224,-2540,-1225,438,1925,2999, 3830,4667,5495,6127,6466,6590,6633,6609,6462,6275, 6255,6460,6737,6954,7161,7472,7764,7780,7560,7414, 7447,7381,6995,6420,5948,5687,5499,5295,5178,5292, 5606,5934,6095,6135,6205,6329,6449,6550,6622,6527, 6039,5113,3940,2682,1255,-386,-2018,-3316,-4185,-4860, -5583,-6315,-6813,-6916,-6702,-6463,-6441,-6632,-6918,-7300, -7771,-8150,-8229,-7993,-7542,-6986,-6415,-6039,-6010,-6176, -6199,-5973,-5693,-5545,-5462,-5261,-4934,-4767,-5024,-5605, -6080,-6165,-6008,-5931,-5983,-5892,-5531,-5028,-4447,-3636, -2487,-1118,240,1518,2712,3666,4228,4473,4687,5051, 5437,5578,5432,5180,4825,4127,3026,1845,995,487, -26,-702,-1320,-1611,-1646,-1784,-2285,-3006,-3535,-3715, -3785,-4039,-4480,-4819,-4832,-4562,-4082,-3307,-2194,-947, 199,1277,2463,3682,4658,5275,5704,6110,6391,6376, 6123,5929,6026,6323,6550,6647,6766,7000,7266,7403, 7435,7476,7493,7356,7033,6620,6189,5736,5322,5111, 5199,5404,5499,5462,5434,5573,5871,6140,6269,6403, 6686,6959,6837,6102,4953,3710,2455,1153,-158,-1447, -2752,-4007,-5068,-5775,-6150,-6329,-6385,-6301,-6175,-6257, -6716,-7440,-8054,-8220,-7998,-7723,-7571,-7377,-6942,-6437, -6254,-6420,-6584,-6440,-6061,-5651,-5336,-5094,-4968,-5057, -5327,-5560,-5680,-5803,-6012,-6187,-6172,-6048,-6035,-6072, -5771,-4917,-3686,-2411,-1211,24,1295,2333,2941,3295, 3779,4532,5285,5654,5571,5303,5069,4734,4006,2897, 1796,1044,558,116,-349,-767,-1175,-1653,-2139,-2452, -2599,-2836,-3340,-3970,-4448,-4690,-4805,-4865,-4710,-4127, -3180,-2145,-1167,-131,1112,2454,3608,4468,5108,5568, 5802,5876,5918,5986,6065,6129,6238,6427,6652,6835, 6941,7035,7250,7599,7792,7574,7062,6592,6301,6037, 5675,5351,5245,5317,5398,5394,5316,5238,5259,5508, 6013,6614,7039,7120,6891,6467,5895,5094,3977,2666, 1429,259,-1111,-2731,-4224,-5119,-5379,-5399,-5540,-5784, -5984,-6177,-6546,-7125,-7686,-7982,-8011,-7867,-7554,-7135, -6836,-6819,-6949,-6931,-6647,-6318,-6107,-5890,-5507,-5091, -4954,-5167,-5449,-5528,-5450,-5458,-5671,-5969,-6151,-6230, -6377,-6626,-6616,-5972,-4756,-3425,-2343,-1422,-424,641, 1592,2359,3056,3785,4491,5071,5500,5748,5651,5095, 4235,3400,2801,2320,1688,889,209,-221,-568,-1009, -1446,-1740,-1952,-2305,-2849,-3459,-4024,-4492,-4791,-4898, -4812,-4525,-4042,-3368,-2459,-1289,41,1320,2403,3373, 4312,5053,5394,5451,5542,5840,6161,6277,6215,6177, 6293,6548,6851,7116,7326,7512,7640,7624,7440,7093, 6603,6097,5801,5815,5925,5791,5381,5042,4996,5112, 5197,5316,5727,6463,7118,7291,7050,6748,6541,6215, 5537,4488,3190,1707,101,-1425,-2668,-3583,-4262,-4735, -4938,-4949,-5098,-5631,-6397,-7047,-7392,-7505,-7563,-7593, -7467,-7166,-6918,-6958,-7195,-7249,-6902,-6411,-6099,-5950, -5703,-5309,-5048,-5163,-5448,-5511,-5268,-5026,-5067,-5426, -5927,-6409,-6783,-6940,-6744,-6215,-5527,-4767,-3827,-2641, -1429,-527,81,777,1776,2912,3911,4644,5139,5422, 5455,5220,4776,4237,3683,3101,2442,1711,1024,418, -98,-488,-730,-907,-1244,-1822,-2467,-2958,-3359,-3857, -4431,-4853,-4969,-4820,-4559,-4197,-3580,-2581,-1273,97, 1310,2311,3169,3899,4507,5040,5467,5698,5754,5796, 5957,6169,6254,6197,6277,6711,7326,7700,7633,7373, 7209,7084,6794,6373,6100,6096,6137,5920,5451,5000, 4728,4681,4874,5293,5782,6148,6359,6575,6907,7192, 7206,6890,6332,5618,4672,3322,1597,-133,-1462,-2305, -2922,-3525,-4031,-4296,-4539,-5112,-5981,-6731,-7046,-7058, -7091,-7230,-7294,-7183,-7053,-7106,-7309,-7381,-7133,-6689, -6253,-5892,-5625,-5541,-5636,-5672,-5419,-4995,-4757,-4870, -5145,-5407,-5683,-6093,-6630,-7079,-7169,-6830,-6168,-5391, -4602,-3810,-2996,-2203,-1396,-437,687,1815,2826,3719, 4489,4991,5137,5062,4968,4846,4501,3842,3004,2240, 1681,1211,703,204,-155,-381,-658,-1128,-1737,-2344, -2882,-3371,-3837,-4284,-4727,-5123,-5280,-4983,-4209,-3237, -2321,-1389,-225,1121,2296,3031,3515,4127,4885,5466, 5644,5594,5609,5757,5892,6012,6261,6678,7110,7414, 7528,7434,7183,6866,6669,6690,6806,6743,6367,5790, 5311,5109,5046,4897,4754,4882,5334,5804,6012,6113, 6450,7027,7476,7507,7155,6585,5791,4571,2926,1219, -89,-926,-1584,-2282,-2937,-3452,-3991,-4693,-5432,-6030, -6457,-6769,-6924,-6881,-6784,-6896,-7273,-7633,-7682,-7392, -6948,-6617,-6490,-6397,-6189,-5938,-5781,-5697,-5532,-5227, -4928,-4764,-4765,-4978,-5477,-6164,-6778,-7113,-7142,-6966, -6654,-6175,-5539,-4865,-4280,-3727,-2948,-1810,-526,611, 1534,2400,3277,4072,4606,4867,4965,4907,4642,4181, 3599,2947,2251,1598,1144,916,683,200,-462,-986, -1223,-1422,-1961,-2802,-3557,-4034,-4424,-4919,-5363,-5427, -4989,-4222,-3340,-2397,-1394,-366,659,1664,2605,3446, 4146,4671,5033,5247,5323,5276,5238,5455,6051,6733, 7058,6959,6792,6847,7026,7047,6883,6769,6805,6810, 6523,5933,5379,5140,5072,4910,4690,4671,4912,5193, 5328,5506,6034,6898,7716,8194,8252,7845,6963,5692, 4281,2924,1684,537,-465,-1250,-1856,-2485,-3360,-4429, -5382,-5954,-6210,-6386,-6643,-6966,-7293,-7588,-7810,-7918, -7902,-7810,-7656,-7441,-7182,-6932,-6776,-6753,-6709,-6473, -6009,-5503,-5154,-4994,-4964,-5139,-5629,-6367,-7050,-7418, -7465,-7371,-7253,-7073,-6778,-6357,-5809,-5107,-4230,-3228, -2180,-1085,123,1341,2365,3142,3848,4615,5259,5413, 5047,4503,4090,3758,3291,2639,1975,1463,1085,710, 273,-193,-620,-1001,-1451,-2054,-2801,-3623,-4436,-5126, -5564,-5681,-5529,-5182,-4589,-3673,-2593,-1584,-702,254, 1472,2831,3890,4387,4517,4658,4956,5263,5462,5716, 6202,6747,7030,7018,6980,7098,7293,7408,7438,7455, 7433,7275,6951,6520,6082,5726,5479,5300,5173,5064, 4918,4777,4824,5259,6051,6879,7511,7963,8256,8244, 7710,6629,5261,3953,2870,1979,1162,301,-666,-1724, -2786,-3697,-4376,-4909,-5427,-5943,-6339,-6602,-6881,-7303, -7760,-8006,-7958,-7785,-7644,-7549,-7421,-7273,-7201,-7218, -7159,-6855,-6310,-5697,-5192,-4893,-4883,-5209,-5748,-6229, -6546,-6823,-7179,-7492,-7529,-7311,-7115,-7047,-6862,-6296, -5388,-4391,-3499,-2644,-1636,-407,901,2076,3020,3765, 4360,4724,4808,4684,4426,4038,3553,3077,2639,2168, 1581,991,596,410,214,-199,-825,-1467,-2036,-2717, -3685,-4735,-5416,-5535,-5368,-5253,-5151,-4759,-3992,-3036, -1988,-811,491,1736,2684,3290,3674,3990,4336,4718, 5114,5526,5944,6275,6467,6600,6747,6898,7039,7192, 7412,7633,7640,7334,6891,6554,6401,6289,6037,5644, 5243,4948,4724,4555,4519,4750,5330,6191,7172,8044, 8531,8424,7797,6955,6161,5400,4532,3515,2497,1577, 654,-402,-1546,-2554,-3294,-3868,-4428,-4989,-5486,-5938, -6419,-6930,-7334,-7542,-7600,-7565,-7410,-7193,-7109,-7303, -7611,-7663,-7293,-6709,-6191,-5778,-5371,-4959,-4724,-4875, -5351,-5840,-6111,-6244,-6475,-6863,-7244,-7443,-7434,-7267, -6974,-6571,-6103,-5548,-4819,-3872,-2760,-1616,-496,655, 1863,2974,3743,4097,4277,4520,4723,4588,4073,3504, 3132,2827,2321,1645,1121,919,875,696,234,-447, -1233,-2098,-3006,-3824,-4421,-4812,-5110,-5373,-5499,-5333, -4850,-4070,-3012,-1753,-479,622,1479,2187,2831,3389, 3813,4185,4647,5212,5740,6026,6065,6093,6313,6699, 7074,7304,7420,7455,7409,7285,7140,6985,6763,6486, 6221,6035,5795,5308,4596,4005,3883,4300,5043,5875, 6707,7475,8009,8130,7871,7409,6883,6288,5567,4766, 3910,2923,1773,619,-373,-1244,-2102,-2928,-3594,-4060, -4511,-5168,-6018,-6774,-7146,-7133,-7042,-7100,-7242,-7309, -7330,-7459,-7707,-7854,-7677,-7155,-6485,-5878,-5450,-5216, -5133,-5148,-5204,-5288,-5487,-5874,-6373,-6760,-6933,-7061, -7318,-7540,-7421,-7010,-6635,-6417,-6082,-5313,-4155,-2935, -1851,-790,384,1611,2642,3319,3735,4093,4407,4544, 4424,4093,3622,3062,2475,2014,1775,1697,1578,1308, 864,248,-517,-1366,-2160,-2815,-3394,-4051,-4794,-5437, -5761,-5702,-5376,-4829,-3985,-2842,-1577,-457,381,1027, 1667,2366,3093,3796,4403,4849,5123,5320,5585,5959, 6319,6543,6716,6998,7375,7615,7513,7198,6996,7022, 7108,7104,6968,6660,6104,5335,4572,4064,3902,4081, 4594,5393,6299,7051,7476,7634,7702,7713,7523,7028, 6363,5735,5135,4295,3081,1721,576,-214,-828,-1497, -2276,-3088,-3869,-4627,-5382,-6079,-6559,-6745,-6759,-6748, -6794,-6971,-7351,-7835,-8092,-7933,-7521,-7167,-6911,-6517, -5928,-5409,-5211,-5261,-5278,-5171,-5161,-5477,-6024,-6490, -6708,-6815,-7025,-7311,-7496,-7479,-7331,-7117,-6793,-6268, -5491,-4513,-3373,-2138,-930,152,1087,1922,2721,3469, 4031,4308,4317,4108,3698,3144,2629,2353,2321,2294, 2052,1620,1153,709,202,-447,-1200,-1938,-2653,-3410, -4233,-5027,-5663,-6004,-5958,-5487,-4630,-3624,-2750,-2040, -1270,-287,729,1533,2143,2773,3476,4102,4525,4776, 4982,5245,5600,6047,6532,6917,7072,7008,6874,6841, 6953,7108,7212,7281,7272,6991,6285,5304,4438,3977, 3869,3934,4153,4639,5393,6240,6846,7092,7154,7271, 7427,7422,7127,6590,5867,4928,3839,2793,1886,1046, 203,-561,-1204,-1893,-2870,-4079,-5110,-5646,-5798,-5928, -6227,-6560,-6765,-6928,-7261,-7744,-8095,-8083,-7784,-7449, -7206,-6934,-6508,-5993,-5546,-5273,-5154,-5147,-5239,-5433, -5677,-5958,-6275,-6603,-6903,-7094,-7209,-7357,-7579,-7701, -7537,-7062,-6392,-5602,-4650,-3541,-2417,-1421,-497,537, 1708,2804,3571,3918,3961,3849,3644,3371,3093,2889, 2749,2580,2351,2124,1847,1383,762,200,-181,-601, -1371,-2502,-3682,-4605,-5215,-5587,-5735,-5616,-5206,-4570, -3799,-2970,-2131,-1305,-494,353,1290,2244,2990,3420, 3684,4026,4496,4971,5389,5823,6324,6741,6878,6717, 6517,6593,6995,7445,7677,7683,7592,7356,6807,5958, 5059,4369,3983,3909,4157,4652,5178,5577,5904,6355, 6926,7377,7539,7510,7470,7353,6861,5873,4672,3714, 3101,2566,1831,906,-35,-939,-1914,-2974,-3950,-4625, -4968,-5156,-5412,-5787,-6211,-6613,-6979,-7290,-7522,-7670, -7729,-7672,-7441,-7026,-6545,-6135,-5783,-5421,-5068,-4873, -4925,-5116,-5294,-5447,-5643,-5916,-6198,-6430,-6657,-7013, -7462,-7779,-7732,-7337,-6781,-6185,-5525,-4763,-3921,-2943, -1734,-366,893,1880,2633,3270,3729,3850,3654,3404, 3326,3396,3405,3198,2814,2436,2167,1975,1778,1513, 1069,376,-516,-1462,-2387,-3343,-4306,-5062,-5399,-5317, -5021,-4707,-4376,-3870,-3089,-2130,-1197,-342,571,1555, 2378,2817,3030,3379,4030,4805,5453,5916,6250,6456, 6515,6516,6600,6799,7067,7399,7828,8270,8421,8028, 7216,6355,5720,5247,4781,4375,4287,4599,5067,5389, 5564,5849,6425,7175,7767,8020,7969,7714,7253,6578, 5781,5038,4442,3904,3258,2424,1426,306,-849,-1862, -2621,-3213,-3791,-4349,-4804,-5132,-5445,-5864,-6365,-6806, -7089,-7268,-7434,-7555,-7483,-7160,-6722,-6319,-5919,-5463, -5045,-4828,-4842,-4942,-5003,-5046,-5106,-5190,-5350,-5704, -6279,-6890,-7284,-7378,-7319,-7257,-7176,-6911,-6376,-5684, -4966,-4143,-3055,-1690,-271,968,1918,2555,2929,3164, 3402,3669,3824,3754,3490,3198,3024,2947,2813,2552, 2303,2179,2033,1567,661,-444,-1449,-2332,-3216,-4072, -4671,-4884,-4853,-4811,-4775,-4537,-3940,-3043,-1997,-945, 5,730,1232,1679,2289,3039,3730,4281,4839,5505, 6111,6345,6186,5991,6117,6580,7119,7539,7895,8267, 8508,8367,7768,6922,6160,5639,5284,4984,4754,4634, 4626,4730,4999,5475,6119,6808,7433,7892,8069,7870, 7391,6852,6440,6134,5732,5093,4295,3460,2573,1555, 426,-625,-1450,-2130,-2796,-3426,-3920,-4313,-4745,-5253, -5735,-6137,-6501,-6871,-7196,-7382,-7401,-7285,-7028,-6568, -5953,-5415,-5178,-5198,-5202,-4994,-4684,-4516,-4574,-4764, -5017,-5340,-5755,-6226,-6663,-6972,-7115,-7125,-7060,-6975, -6882,-6686,-6200,-5278,-3968,-2599,-1463,-522,435,1429, 2242,2717,3003,3318,3660,3801,3637,3325,3101,3034, 3009,2949,2890,2857,2723,2309,1583,659,-358,-1390, -2305,-2991,-3500,-4016,-4635,-5145,-5228,-4818,-4168,-3518, -2832,-1961,-964,-107,425,765,1257,2086,3081,3945, 4573,5070,5509,5776,5809,5759,5821,6126,6672,7337, 7955,8365,8450,8223,7805,7323,6813,6292,5783,5365, 5050,4739,4372,4135,4320,4978,5801,6487,6990,7381, 7621,7610,7403,7169,6982,6759,6403,5887,5264,4521, 3631,2598,1546,598,-264,-1110,-1895,-2512,-3016,-3568, -4192,-4735,-5087,-5385,-5837,-6469,-7079,-7442,-7468,-7230, -6903,-6598,-6322,-6055,-5808,-5574,-5329,-5065,-4846,-4692, -4574,-4504,-4647,-5112,-5757,-6239,-6389,-6407,-6625,-7073, -7473,-7605,-7520,-7351,-7028,-6356,-5308,-4120,-3021,-2014, -1018,-45,817,1554,2213,2762,3101,3187,3155,3094, 2973,2770,2634,2750,3092,3325,3133,2502,1709,1033, 444,-296,-1271,-2254,-3025,-3653,-4320,-4995,-5435,-5406, -4942,-4248,-3519,-2837,-2196,-1581,-1002,-420,244,1027, 1924,2866,3765,4477,4841,4870,4811,4924,5238,5637, 6107,6735,7430,7933,8027,7815,7545,7328,7100,6741, 6234,5640,5026,4419,3933,3760,3988,4491,5081,5671, 6241,6700,6935,6990,7022,7088,7081,6912,6633,6316, 5923,5319,4431,3382,2389,1570,814,-37,-992,-1876, -2561,-3053,-3458,-3857,-4340,-4968,-5711,-6387,-6823,-7038, -7203,-7343,-7307,-6985,-6558,-6331,-6362,-6322,-5947,-5330, -4812,-4605,-4633,-4711,-4830,-5078,-5410,-5679,-5878,-6121, -6490,-6925,-7335,-7704,-7970,-7978,-7631,-7011,-6278,-5489, -4566,-3466,-2309,-1296,-488,298,1226,2169,2761,2821, 2591,2455,2567,2772,2904,2982,3110,3248,3232,2929, 2386,1766,1187,585,-128,-989,-1969,-3014,-3987,-4696, -5064,-5161,-5078,-4745,-4128,-3414,-2880,-2538,-2166,-1556, -720,208,1158,2131,3068,3791,4153,4224,4241,4414, 4786,5302,5924,6584,7114,7411,7535,7628,7732,7754, 7601,7276,6803,6169,5396,4621,4069,3889,4027,4324, 4689,5124,5661,6182,6517,6631,6698,6874,7106,7235, 7159,6877,6420,5807,5123,4474,3813,2951,1834,688, -197,-773,-1291,-1936,-2629,-3160,-3564,-4104,-4930,-5831, -6466,-6739,-6827,-6881,-6930,-6952,-6960,-6921,-6758,-6423, -5966,-5511,-5130,-4854,-4676,-4644,-4788,-4998,-5102,-5090, -5167,-5539,-6133,-6659,-7001,-7326,-7769,-8158,-8159,-7664, -6910,-6213,-5640,-4969,-4001,-2798,-1592,-530,387,1158, 1710,2002,2130,2202,2264,2391,2660,3013,3261,3262, 3081,2906,2776,2546,2095,1455,753,2,-928,-2088, -3261,-4151,-4640,-4855,-4882,-4707,-4360,-3985,-3697,-3444, -3089,-2552,-1799,-823,323,1470,2371,2902,3160,3339, 3588,3952,4394,4886,5440,5994,6432,6707,6950,7299, 7725,8010,7956,7609,7125,6547,5844,5067,4409,4030, 3948,4095,4427,4874,5270,5490,5627,5916,6445,6957, 7137,7007,6878,6917,6911,6602,5987,5285,4593,3825, 2884,1839,850,60,-525,-993,-1466,-2050,-2810,-3693, -4550,-5207,-5648,-6011,-6378,-6680,-6837,-6938,-7109,-7282, -7192,-6722,-6102,-5657,-5475,-5369,-5135,-4829,-4678,-4794, -4976,-4997,-4914,-5005,-5423,-6085,-6779,-7356,-7737,-7897, -7899,-7827,-7686,-7361,-6782,-6026,-5161,-4181,-3030,-1749, -579,229,654,939,1292,1692,1987,2188,2430,2738, 2988,3060,3017,2984,2964,2889,2713,2379,1810,965, -106,-1263,-2356,-3277,-3982,-4417,-4541,-4430,-4270,-4236, -4320,-4322,-4025,-3409,-2566,-1575,-493,576,1421,1915, 2192,2517,3014,3575,4064,4478,4873,5276,5674,6085, 6583,7135,7588,7838,7947,7973,7761,7113,6138,5253, 4771,4623,4499,4297,4181,4303,4637,5036,5384,5688, 6023,6376,6679,6881,6989,7021,6979,6860,6660,6312, 5665,4685,3589,2651,1952,1349,723,74,-514,-1103, -1857,-2819,-3771,-4412,-4719,-5001,-5515,-6162,-6650,-6862, -6936,-6989,-6983,-6815,-6448,-5981,-5556,-5276,-5177,-5154, -5057,-4798,-4464,-4283,-4386,-4700,-5069,-5470,-5994,-6641, -7193,-7451,-7513,-7610,-7787,-7835,-7562,-6947,-6094,-5078, -3944,-2783,-1738,-908,-273,237,687,1102,1507,1923, 2305,2561,2689,2755,2884,3087,3258,3307,3258,3141, 2828,2125,1009,-262,-1405,-2289,-2947,-3413,-3692,-3824, -3974,-4280,-4647,-4792,-4527,-3914,-3097,-2150,-1153,-264, 380,898,1506,2204,2785,3147,3464,3953,4557,5023, 5259,5475,5967,6754,7583,8122,8275,8142,7840,7383, 6818,6236,5686,5174,4751,4493,4424,4459,4518,4656, 4964,5443,5923,6201,6277,6395,6736,7177,7410,7354, 7164,6910,6416,5542,4477,3580,3014,2604,2088,1353, 503,-333,-1111,-1832,-2517,-3182,-3836,-4438,-4935,-5352, -5818,-6398,-6918,-7092,-6880,-6544,-6325,-6197,-5990,-5697, -5451,-5300,-5107,-4767,-4355,-4074,-4061,-4289,-4657,-5077, -5508,-5921,-6320,-6713,-7123,-7542,-7888,-8052,-7954,-7590, -6952,-6034,-4914,-3805,-2902,-2170,-1470,-741,-64,469, 902,1353,1826,2168,2301,2327,2473,2787,3136,3417, 3645,3746,3492,2759,1698,578,-437,-1309,-1976,-2397, -2681,-3091,-3751,-4476,-4931,-4935,-4610,-4196,-3744,-3097, -2183,-1210,-453,65,566,1220,1984,2694,3232,3567, 3771,3983,4345,4935,5680,6427,7052,7541,7942,8183, 8089,7629,7058,6623,6291,5834,5192,4603,4334,4361, 4476,4567,4721,5020,5382,5640,5762,5920,6285,6844, 7371,7655,7574,7139,6490,5841,5310,4805,4172,3431, 2757,2205,1596,756,-234,-1113,-1744,-2223,-2753,-3411, -4121,-4790,-5416,-5986,-6433,-6672,-6677,-6537,-6386,-6285, -6209,-6116,-5961,-5680,-5256,-4775,-4393,-4206,-4179,-4229, -4357,-4611,-4971,-5331,-5637,-5987,-6538,-7250,-7867,-8168, -8159,-7956,-7549,-6847,-5906,-4933,-4087,-3327,-2549,-1786, -1092,-437,246,888,1329,1512,1577,1710,1996,2374, 2809,3318,3862,4150,3872,3024,1986,1145,535,-46, -725,-1431,-2084,-2680,-3297,-3968,-4598,-4987,-5005,-4688, -4144,-3505,-2905,-2395,-1870,-1144,-194,733,1395,1834, 2269,2758,3147,3364,3602,4137,4995,5899,6588,7047, 7432,7780,7949,7830,7502,7099,6660,6151,5582,5041, 4622,4408,4436,4646,4841,4850,4709,4683,4994,5582, 6167,6592,6902,7180,7337,7219,6788,6194,5674,5281, 4884,4354,3708,2991,2229,1421,609,-116,-731,-1318, -1936,-2603,-3332,-4119,-4919,-5593,-5999,-6148,-6207,-6324, -6474,-6535,-6464,-6351,-6243,-6010,-5551,-4997,-4609,-4473, -4423,-4336,-4270,-4315,-4453,-4633,-4911,-5374,-6025,-6735, -7336,-7786,-8068,-8126,-7844,-7250,-6535,-5884,-5263,-4514, -3644,-2811,-2077,-1326,-492,261,700,776,703,801, 1256,2000,2798,3428,3804,3912,3736,3300,2708,2027, 1305,609,15,-506,-1160,-2086,-3164,-4090,-4652,-4900, -5029,-5102,-5003,-4648,-4120,-3576,-3018,-2299,-1358,-350, 495,1097,1521,1875,2229,2636,3133,3736,4421,5170, 5974,6734,7311,7672,7924,8146,8231,7987,7365,6582, 5943,5572,5379,5207,4999,4815,4703,4631,4574,4604, 4825,5273,5865,6472,6966,7268,7341,7222,6992,6731, 6463,6139,5714,5201,4603,3891,3027,2106,1322,739, 197,-490,-1317,-2162,-2979,-3815,-4639,-5327,-5788,-6081, -6342,-6639,-6935,-7147,-7240,-7205,-7030,-6689,-6257,-5878, -5620,-5406,-5139,-4870,-4687,-4598,-4537,-4525,-4706,-5191, -5929,-6719,-7388,-7894,-8281,-8520,-8486,-8114,-7553,-7034, -6611,-6105,-5331,-4287,-3126,-2036,-1183,-677,-464,-346, -94,349,895,1487,2161,2924,3590,3855,3647,3198, 2816,2557,2247,1748,1094,378,-410,-1323,-2304,-3200, -3892,-4369,-4673,-4873,-5010,-5059,-4918,-4491,-3795,-2966, -2135,-1326,-529,204,773,1135,1405,1806,2440,3197, 3874,4431,5007,5748,6609,7401,7965,8249,8251,8010, 7589,7090,6608,6225,5951,5719,5476,5202,4883,4540, 4295,4312,4614,5057,5513,5983,6486,6880,7002,6909, 6801,6802,6813,6680,6331,5813,5191,4484,3710,2975, 2359,1822,1221,491,-329,-1205,-2127,-3041,-3826,-4402, -4845,-5295,-5817,-6331,-6722,-6958,-7085,-7150,-7102,-6857, -6479,-6166,-6017,-5896,-5618,-5189,-4770,-4490,-4325,-4241, -4298,-4600,-5187,-5955,-6744,-7396,-7792,-7896,-7820,-7782, -7865,-7895,-7590,-6862,-5882,-4882,-3930,-2977,-2082,-1442, -1176,-1108,-925,-431,309,1136,1907,2542,3000,3263, 3346,3302,3180,3027,2844,2574,2104,1364,426,-530, -1350,-2049,-2743,-3483,-4148,-4608,-4879,-5077,-5191,-5052, -4519,-3673,-2741,-1955,-1361,-844,-278,328,909,1442, 1946,2427,2912,3501,4279,5203,6116,6927,7619,8118, 8286,8096,7735,7426,7233,7039,6766,6440,6117,5762, 5305,4795,4426,4364,4604,4997,5427,5840,6196,6438, 6577,6705,6877,7061,7152,7076,6835,6431,5859,5153, 4452,3881,3449,3009,2373,1523,624,-216,-1040,-1906, -2744,-3427,-3938,-4429,-5055,-5744,-6295,-6615,-6760,-6820, -6825,-6762,-6652,-6510,-6333,-6087,-5808,-5529,-5187,-4670, -4043,-3615,-3697,-4247,-4925,-5446,-5830,-6221,-6657,-7051, -7356,-7608,-7835,-7971,-7880,-7428,-6604,-5524,-4411,-3494, -2859,-2459,-2152,-1831,-1422,-909,-239,592,1452,2124, 2490,2682,2907,3224,3498,3560,3385,3078,2702,2192, 1472,584,-282,-993,-1615,-2297,-3078,-3867,-4552,-5035, -5191,-4983,-4535,-4024,-3511,-2929,-2240,-1511,-849,-272, 288,845,1329,1692,2052,2618,3476,4497,5494,6380, 7130,7678,7942,7933,7792,7668,7594,7509,7358,7112, 6739,6209,5580,5012,4694,4663,4794,4986,5237,5548, 5837,6013,6111,6301,6672,7089,7312,7241,6974,6643, 6254,5759,5213,4731,4334,3903,3292,2490,1601,712, -129,-894,-1568,-2206,-2917,-3714,-4466,-5033,-5476,-5940, -6427,-6732,-6709,-6496,-6401,-6542,-6755,-6753,-6429,-5856, -5209,-4616,-4158,-3895,-3875,-4081,-4454,-4897,-5289,-5558, -5778,-6113,-6676,-7368,-7936,-8181,-8076,-7679,-7037,-6160, -5163,-4271,-3694,-3410,-3185,-2764,-2113,-1387,-736,-119, 521,1158,1702,2117,2478,2851,3230,3527,3663,3542, 3156,2567,1938,1391,899,285,-548,-1511,-2422,-3237, -3984,-4601,-4948,-4976,-4812,-4585,-4295,-3824,-3157,-2394, -1651,-1000,-442,25,394,718,1134,1761,2597,3572, 4595,5593,6445,7024,7289,7378,7490,7688,7865,7876, 7725,7482,7131,6590,5899,5272,4940,4918,5011,5045, 5037,5101,5259,5454,5682,6003,6405,6778,7009,7077, 6981,6709,6306,5913,5660,5478,5130,4513,3753,3042, 2422,1749,905,-28,-829,-1443,-2012,-2729,-3605,-4487, -5189,-5636,-5865,-5995,-6162,-6420,-6699,-6919,-7035,-7029, -6825,-6344,-5636,-4908,-4393,-4194,-4231,-4326,-4376,-4434, -4587,-4830,-5110,-5477,-6069,-6890,-7705,-8171,-8145,-7723, -7109,-6456,-5823,-5250,-4758,-4316,-3857,-3370,-2845,-2259, -1556,-795,-150,292,671,1202,1905,2573,3049,3320, 3437,3413,3232,2916,2557,2209,1787,1184,359,-589, -1543,-2419,-3200,-3856,-4353,-4697,-4915,-4995,-4834,-4384, -3738,-3033,-2369,-1732,-1136,-676,-407,-208,175,896, 1869,2878,3821,4729,5586,6252,6649,6904,7223,7643, 8029,8223,8183,7913,7451,6872,6328,5930,5657,5436, 5252,5154,5134,5114,5052,5056,5298,5802,6350,6675, 6729,6688,6726,6786,6706,6455,6137,5840,5566,5237, 4750,4044,3201,2396,1735,1177,565,-203,-1106,-2031, -2884,-3627,-4273,-4795,-5124,-5293,-5486,-5903,-6490,-6988, -7183,-7083,-6811,-6414,-5875,-5284,-4804,-4556,-4494,-4459, -4329,-4120,-3933,-3904,-4163,-4767,-5603,-6427,-7053,-7447, -7641,-7596,-7257,-6702,-6137,-5731,-5439,-5087,-4563,-3922, -3287,-2699,-2146,-1603,-1093,-600,-42,646,1402,2091, 2597,2921,3109,3209,3231,3201,3131,2956,2565,1921, 1132,345,-410,-1223,-2115,-2966,-3635,-4142,-4599,-4988, -5106,-4800,-4156,-3439,-2816,-2275,-1815,-1475,-1249,-996, -538,172,1073,2075,3074,3957,4636,5155,5666,6292, 6979,7558,7923,8114,8203,8127,7788,7236,6722,6428, 6309,6157,5839,5407,5045,4904,4984,5176,5376,5588, 5860,6186,6490,6676,6680,6562,6467,6483,6549,6469, 6125,5614,5089,4579,4005,3356,2729,2195,1639,869, -162,-1251,-2161,-2833,-3343,-3764,-4135,-4515,-4997,-5585, -6185,-6698,-7032,-7107,-6866,-6374,-5860,-5543,-5430,-5329, -5050,-4605,-4156,-3831,-3631,-3553,-3697,-4170,-4932,-5786, -6481,-6901,-7083,-7094,-6970,-6755,-6510,-6277,-5995,-5560, -4970,-4345,-3790,-3306,-2848,-2400,-1956,-1433,-730,111, 890,1452,1835,2221,2671,3052,3251,3317,3362,3335, 3073,2537,1855,1189,539,-172,-956,-1802,-2694,-3643, -4540,-5171,-5390,-5224,-4796,-4208,-3565,-3011,-2670,-2530, -2392,-2025,-1371,-544,331,1208,2096,2959,3745,4427, 5079,5833,6717,7595,8257,8564,8551,8377,8195,8039, 7864,7601,7229,6820,6457,6135,5801,5465,5231,5231, 5485,5849,6146,6318,6452,6607,6752,6837,6910,7037, 7162,7115,6823,6345,5807,5301,4866,4479,4044,3444, 2626,1646,613,-390,-1328,-2128,-2715,-3092,-3423,-3923, -4694,-5605,-6402,-6905,-7126,-7150,-7058,-6878,-6666,-6500, -6380,-6204,-5864,-5346,-4728,-4137,-3689,-3489,-3637,-4123, -4803,-5483,-6056,-6515,-6865,-7088,-7183,-7202,-7191,-7083, -6755,-6185,-5540,-5006,-4624,-4268,-3835,-3324,-2769,-2145, -1436,-674,44,653,1172,1670,2178,2669,3107,3448, 3622,3571,3310,2967,2598,2159,1579,878,95,-781, -1817,-2972,-4056,-4813,-5098,-4968,-4609,-4222,-3885,-3584, -3323,-3112,-2907,-2586,-2040,-1254,-330,554,1274,1861, 2477,3276,4278,5340,6283,7020,7597,8065,8383,8477, 8380,8246,8162,8077,7868,7496,7031,6560,6114,5739, 5506,5477,5618,5820,5994,6107,6169,6236,6389,6676, 7033,7307,7338,7142,6834,6510,6194,5865,5537,5242, 4947,4477,3678,2579,1405,388,-379,-959,-1442,-1927, -2503,-3236,-4108,-4993,-5733,-6250,-6563,-6709,-6736,-6716, -6750,-6870,-6950,-6801,-6357,-5721,-5033,-4368,-3818,-3524, -3595,-3977,-4462,-4884,-5239,-5623,-6103,-6599,-6989,-7209, -7257,-7127,-6821,-6397,-5963,-5565,-5194,-4844,-4495,-4081, -3530,-2842,-2116,-1469,-906,-361,233,886,1537,2116, 2612,3043,3360,3463,3328,3071,2845,2688,2456,1969, 1160,106,-1070,-2246,-3297,-4115,-4631,-4811,-4687,-4395, -4127,-4051,-4120,-4107,-3803,-3220,-2542,-1927,-1360,-751, -72,635,1356,2169,3122,4181,5214,6116,6845,7389, 7764,8008,8175,8282,8321,8269,8111,7824,7379,6822, 6266,5883,5736,5751,5761,5695,5604,5596,5711,5901, 6123,6399,6734,7055,7186,7034,6699,6372,6171,6086, 6042,5935,5621,4990,4067,3030,2069,1244,545,-43, -558,-1090,-1769,-2651,-3631,-4509,-5177,-5655,-6024,-6308, -6504,-6680,-6939,-7262,-7474,-7376,-6926,-6252,-5527,-4890, -4427,-4164,-4063,-4067,-4160,-4376,-4730,-5196,-5711,-6215, -6668,-7035,-7223,-7165,-6906,-6599,-6362,-6180,-5936,-5566, -5118,-4656,-4169,-3620,-3004,-2386,-1838,-1341,-793,-118, 664,1445,2082,2487,2687,2787,2898,3048,3143,3096, 2902,2569,2017,1113,-144,-1511,-2653,-3392,-3803,-4059, -4260,-4420,-4530,-4597,-4602,-4496,-4236,-3823,-3313,-2771, -2237,-1726,-1213,-626,107,1000,1994,3016,4029,5000, 5854,6505,6946,7289,7671,8093,8398,8441,8220,7862, 7481,7104,6716,6354,6100,5955,5836,5669,5483,5354, 5343,5492,5820,6267,6662,6835,6744,6525,6355,6298, 6330,6385,6433,6382,6079,5435,4532,3605,2809,2133, 1510,914,339,-293,-1076,-2002,-2965,-3832,-4498,-4950, -5267,-5584,-6012,-6549,-7094,-7489,-7622,-7494,-7174,-6732, -6194,-5607,-5073,-4673,-4404,-4207,-4058,-4028,-4245,-4732, -5331,-5865,-6258,-6554,-6768,-6875,-6856,-6741,-6595,-6442, -6267,-6028,-5663,-5156,-4578,-4057,-3680,-3368,-2937,-2282, -1484,-718,-37,620,1282,1836,2155,2285,2428,2734, 3155,3524,3624,3344,2668,1699,587,-502,-1457,-2249, -2887,-3386,-3786,-4139,-4474,-4744,-4839,-4727,-4470,-4159, -3825,-3437,-2987,-2511,-2080,-1642,-1028,-121,992,2092, 3054,3901,4697,5444,6127,6769,7372,7867,8187,8308, 8263,8091,7800,7445,7122,6913,6771,6547,6146,5684, 5357,5255,5338,5553,5876,6238,6500,6536,6395,6235, 6202,6326,6553,6762,6862,6765,6429,5874,5160,4385, 3651,3034,2528,2046,1462,676,-289,-1292,-2154,-2805, -3337,-3855,-4395,-4924,-5469,-6071,-6703,-7221,-7468,-7439, -7245,-6994,-6688,-6283,-5769,-5198,-4665,-4251,-4019,-3989, -4141,-4417,-4808,-5300,-5797,-6146,-6296,-6341,-6454,-6667, -6833,-6785,-6519,-6151,-5807,-5489,-5143,-4770,-4407,-4067, -3678,-3142,-2415,-1544,-663,70,565,859,1098,1438, 1937,2534,3112,3550,3747,3616,3103,2273,1303,404, -371,-1113,-1888,-2632,-3251,-3751,-4199,-4611,-4876,-4903, -4707,-4414,-4137,-3912,-3716,-3482,-3144,-2620,-1893,-1030, -141,739,1648,2587,3480,4277,5036,5844,6675,7373, 7778,7906,7885,7828,7753,7669,7574,7447,7209,6799, 6253,5722,5353,5233,5358,5624,5882,6033,6044,5966, 5883,5867,5946,6125,6393,6706,6931,6912,6548,5930, 5287,4776,4368,3937,3395,2768,2062,1233,298,-629, -1414,-2028,-2537,-3047,-3632,-4326,-5086,-5795,-6356,-6770, -7111,-7405,-7567,-7509,-7248,-6883,-6485,-6009,-5401,-4746, -4252,-4093,-4241,-4519,-4783,-5013,-5262,-5558,-5883,-6195, -6456,-6650,-6785,-6837,-6754,-6503,-6113,-5705,-5403,-5261, -5195,-5004,-4543,-3832,-3014,-2206,-1442,-789,-344,-96, 144,608,1319,2119,2809,3305,3581,3604,3333,2781, 2061,1306,586,-112,-809,-1541,-2310,-3123,-3877,-4400, -4617,-4609,-4559,-4542,-4505,-4398,-4252,-4092,-3854,-3417, -2737,-1914,-1082,-305,456,1274,2167,3116,4103,5088, 5985,6686,7131,7354,7472,7605,7793,7993,8096,7999, 7634,7064,6464,5996,5736,5629,5624,5730,5908,6021, 5931,5675,5464,5481,5736,6110,6484,6768,6886,6787, 6499,6109,5716,5367,5059,4741,4313,3670,2794,1835, 978,309,-273,-896,-1577,-2237,-2841,-3469,-4185,-4939, -5611,-6132,-6536,-6897,-7250,-7518,-7573,-7328,-6826,-6201, -5589,-5064,-4668,-4406,-4275,-4268,-4377,-4565,-4760,-4931, -5142,-5488,-5945,-6363,-6572,-6548,-6373,-6139,-5903,-5691, -5587,-5597,-5604,-5416,-4914,-4162,-3339,-2599,-2005,-1554, -1210,-889,-476,92,790,1557,2330,3029,3512,3649, 3459,3089,2696,2289,1783,1109,297,-577,-1464,-2318, -3086,-3694,-4072,-4246,-4315,-4387,-4501,-4615,-4658,-4580, -4339,-3908,-3326,-2677,-2025,-1379,-690,105,1034,2106, 3260,4356,5234,5819,6223,6619,7088,7551,7927,8188, 8324,8276,7981,7469,6882,6408,6150,6097,6156,6210, 6148,5942,5668,5450,5372,5458,5703,6084,6513,6819, 6860,6656,6390,6218,6144,6038,5795,5393,4876,4268, 3553,2744,1908,1166,552,5,-594,-1304,-2082,-2842, -3519,-4096,-4634,-5223,-5894,-6566,-7101,-7417,-7535,-7477, -7207,-6707,-6080,-5501,-5092,-4848,-4660,-4470,-4326,-4280, -4321,-4447,-4717,-5152,-5676,-6104,-6290,-6242,-6058,-5848, -5715,-5730,-5879,-6021,-5971,-5659,-5160,-4581,-3953,-3293, -2693,-2257,-1997,-1775,-1390,-755,67,939,1730,2381, 2860,3152,3254,3210,3070,2855,2516,1989,1267,388, -567,-1501,-2314,-2931,-3357,-3671,-3946,-4214,-4471,-4702, -4871,-4883,-4674,-4260,-3792,-3399,-3044,-2582,-1897,-1000, 19,1090,2160,3156,4009,4696,5284,5834,6407,7021, 7645,8157,8398,8303,7959,7539,7155,6854,6656,6593, 6611,6587,6396,6013,5566,5250,5223,5456,5775,6042, 6247,6408,6499,6494,6422,6360,6320,6270,6156,5908, 5451,4796,4059,3372,2792,2226,1572,810,56,-615, -1229,-1869,-2543,-3182,-3779,-4418,-5166,-5975,-6695,-7208, -7484,-7525,-7345,-6974,-6529,-6113,-5767,-5448,-5114,-4752, -4400,-4112,-3986,-4114,-4510,-5040,-5490,-5725,-5757,-5694, -5643,-5631,-5657,-5737,-5900,-6097,-6162,-5942,-5438,-4798, -4184,-3686,-3315,-3034,-2774,-2440,-1957,-1315,-562,228, 1004,1695,2247,2646,2951,3203,3381,3382,3159,2721, 2099,1301,370,-577,-1384,-1967,-2403,-2850,-3383,-3934, -4389,-4672,-4779,-4744,-4632,-4508,-4370,-4152,-3813,-3345, -2736,-1936,-933,163,1208,2100,2845,3537,4265,5067, 5894,6680,7396,7992,8345,8359,8085,7730,7490,7411, 7420,7401,7267,6989,6608,6203,5864,5651,5578,5642, 5823,6071,6286,6375,6337,6307,6404,6603,6739,6687, 6484,6215,5881,5448,4909,4333,3750,3126,2435,1693, 958,270,-357,-926,-1461,-2014,-2655,-3426,-4281,-5150, -5937,-6581,-7008,-7167,-7091,-6907,-6736,-6605,-6407,-6020, -5435,-4805,-4305,-4032,-3967,-4080,-4343,-4711,-5058,-5254, -5261,-5165,-5084,-5116,-5291,-5591,-5913,-6117,-6094,-5840, -5434,-4960,-4481,-4064,-3766,-3567,-3348,-2983,-2447,-1817, -1169,-504,192,879,1484,1989,2461,2939,3366,3618, 3596,3250,2639,1888,1144,487,-136,-809,-1530,-2237, -2877,-3424,-3876,-4227,-4453,-4545,-4553,-4584,-4678,-4728, -4566,-4116,-3440,-2638,-1759,-828,88,920,1640,2338, 3125,4056,5106,6142,7008,7574,7822,7858,7841,7862, 7894,7887,7849,7813,7719,7447,6976,6456,6099,5966, 5966,5984,5992,6005,6033,6079,6174,6336,6528,6692, 6784,6770,6660,6455,6172,5841,5483,5071,4555,3895, 3126,2348,1639,1000,414,-110,-570,-1041,-1665,-2532, -3569,-4565,-5345,-5877,-6265,-6596,-6872,-7080,-7192,-7160, -6926,-6475,-5870,-5218,-4635,-4229,-4083,-4213,-4508,-4777, -4908,-4888,-4801,-4728,-4731,-4853,-5130,-5530,-5906,-6094, -6031,-5787,-5469,-5137,-4817,-4536,-4302,-4097,-3874,-3561, -3093,-2479,-1805,-1182,-660,-181,368,1070,1892,2668, 3214,3451,3450,3292,2985,2518,1946,1363,795,163, -602,-1458,-2243,-2853,-3276,-3596,-3888,-4165,-4435,-4700, -4938,-5091,-5058,-4757,-4181,-3370,-2448,-1598,-941,-415, 196,1049,2094,3187,4237,5232,6125,6793,7171,7340, 7475,7672,7916,8124,8217,8147,7902,7526,7131,6805, 6575,6408,6264,6126,6010,5910,5858,5880,6014,6236, 6474,6632,6678,6651,6618,6572,6455,6236,5958,5650, 5241,4631,3814,2930,2165,1613,1222,874,438,-165, -953,-1857,-2757,-3566,-4278,-4920,-5488,-5974,-6436,-6909, -7316,-7491,-7308,-6815,-6172,-5509,-4930,-4534,-4392,-4482, -4664,-4781,-4742,-4566,-4363,-4265,-4343,-4584,-4919,-5270, -5556,-5728,-5749,-5607,-5336,-5022,-4795,-4702,-4670,-4529, -4184,-3688,-3189,-2764,-2397,-2001,-1525,-962,-303,457, 1307,2130,2773,3146,3279,3267,3179,3018,2761,2350, 1754,998,179,-601,-1316,-1967,-2519,-2913,-3174,-3455, -3909,-4520,-5077,-5360,-5291,-4947,-4425,-3817,-3178,-2577, -2035,-1510,-894,-80,955,2148,3357,4421,5231,5789, 6202,6588,7026,7494,7904,8180,8297,8258,8077,7784, 7483,7258,7115,6940,6665,6347,6095,5959,5909,5914, 6000,6190,6434,6641,6732,6708,6637,6597,6626,6685, 6669,6427,5881,5125,4328,3629,3048,2555,2137,1758, 1313,691,-116,-997,-1828,-2543,-3179,-3798,-4442,-5140, -5864,-6570,-7152,-7473,-7426,-7023,-6399,-5761,-5270,-4999, -4916,-4914,-4873,-4753,-4585,-4391,-4187,-4017,-3989,-4196, -4616,-5078,-5377,-5431,-5318,-5194,-5134,-5101,-5048,-4961, -4829,-4603,-4261,-3854,-3470,-3156,-2903,-2639,-2283,-1751, -1015,-151,690,1400,1987,2496,2927,3208,3303,3271, 3175,2985,2564,1859,977,121,-562,-1064,-1464,-1858, -2339,-2929,-3609,-4286,-4861,-5228,-5311,-5107,-4703,-4230, -3785,-3413,-3068,-2622,-1942,-1019,46,1151,2232,3219, 4048,4694,5253,5837,6488,7119,7615,7924,8080,8142, 8124,8018,7857,7662,7448,7203,6925,6617,6287,5987, 5816,5850,6044,6254,6368,6384,6374,6405,6509,6675, 6860,6987,6958,6705,6207,5538,4834,4224,3730,3305, 2893,2437,1882,1227,505,-228,-918,-1547,-2129,-2730, -3449,-4336,-5330,-6267,-6963,-7299,-7295,-7068,-6725,-6318, -5904,-5592,-5462,-5457,-5408,-5191,-4828,-4445,-4158,-4048, -4133,-4364,-4660,-4915,-5084,-5173,-5209,-5229,-5262,-5328, -5396,-5385,-5209,-4874,-4501,-4222,-4051,-3891,-3657,-3346, -2969,-2501,-1893,-1138,-324,431,1065,1603,2104,2593, 3030,3321,3384,3177,2719,2091,1414,783,229,-269, -721,-1183,-1735,-2446,-3291,-4120,-4762,-5119,-5226,-5171, -5018,-4811,-4592,-4393,-4150,-3728,-3032,-2109,-1095,-91, 857,1737,2563,3362,4160,4923,5618,6242,6816,7305, 7652,7824,7873,7884,7900,7884,7754,7457,7038,6610, 6270,6057,5962,5963,6014,6056,6033,5966,5934,6012, 6233,6537,6825,6993,6968,6730,6306,5777,5219,4701, 4250,3863,3476,2983,2330,1581,884,340,-81,-512, -1075,-1798,-2651,-3613,-4649,-5655,-6481,-7000,-7183,-7074, -6795,-6501,-6310,-6233,-6174,-6037,-5787,-5453,-5076,-4700, -4395,-4250,-4296,-4472,-4641,-4721,-4735,-4784,-4943,-5169, -5370,-5460,-5446,-5360,-5216,-4999,-4730,-4488,-4328,-4228, -4122,-3933,-3603,-3115,-2506,-1865,-1266,-692,-59,658, 1418,2121,2695,3099,3294,3213,2857,2331,1804,1361, 987,612,183,-352,-1034,-1876,-2783,-3611,-4248,-4653, -4854,-4944,-5018,-5126,-5209,-5154,-4888,-4412,-3782,-3057, -2236,-1347,-422,468,1285,2082,2935,3838,4712,5466, 6070,6548,6937,7284,7598,7860,8018,8037,7883,7564, 7148,6745,6453,6289,6209,6151,6055,5895,5718,5616, 5662,5837,6086,6391,6727,6982,6995,6723,6299,5896, 5590,5317,4979,4529,3974,3340,2675,2039,1483,1011, 597,208,-231,-837,-1713,-2829,-4025,-5098,-5912,-6453, -6757,-6870,-6853,-6791,-6772,-6804,-6794,-6617,-6244,-5781, -5372,-5089,-4899,-4760,-4642,-4558,-4515,-4525,-4583,-4708, -4881,-5085,-5287,-5445,-5507,-5433,-5229,-4983,-4821,-4778, -4762,-4659,-4457,-4206,-3911,-3549,-3122,-2675,-2216,-1697, -1053,-269,613,1496,2254,2770,2993,2954,2729,2424, 2128,1889,1695,1466,1090,475,-373,-1309,-2166,-2860, -3405,-3871,-4302,-4682,-4995,-5231,-5393,-5446,-5325,-4983, -4440,-3775,-3077,-2369,-1638,-850,10,946,1928,2879, 3729,4448,5074,5640,6191,6747,7303,7793,8099,8133, 7941,7650,7372,7134,6924,6739,6602,6475,6276,5975, 5641,5422,5425,5667,6062,6463,6733,6806,6722,6577, 6429,6262,6056,5808,5510,5126,4589,3892,3134,2467, 1991,1697,1473,1193,756,108,-774,-1875,-3071,-4163, -5002,-5561,-5943,-6260,-6564,-6837,-7034,-7096,-6999,-6756, -6439,-6126,-5840,-5547,-5265,-5045,-4896,-4746,-4548,-4366, -4321,-4471,-4735,-4998,-5189,-5293,-5302,-5232,-5124,-5029, -4969,-4937,-4891,-4791,-4602,-4338,-4045,-3785,-3568,-3359, -3067,-2609,-1957,-1136,-208,754,1622,2226,2493,2486, 2381,2332,2375,2425,2362,2105,1648,1032,296,-499, -1292,-1998,-2596,-3125,-3646,-4184,-4714,-5198,-5561,-5717, -5625,-5347,-4970,-4531,-4024,-3443,-2799,-2054,-1159,-134, 891,1785,2520,3191,3890,4641,5413,6173,6869,7442, 7823,7975,7913,7708,7487,7351,7325,7313,7188,6866, 6401,5928,5591,5466,5525,5711,5980,6280,6534,6643, 6600,6496,6442,6462,6479,6395,6137,5697,5085,4352, 3599,2963,2551,2356,2253,2072,1668,971,11,-1083, -2121,-3003,-3763,-4486,-5158,-5733,-6195,-6581,-6904,-7102, -7108,-6929,-6664,-6418,-6220,-6037,-5806,-5505,-5156,-4809, -4521,-4352,-4324,-4441,-4638,-4854,-5025,-5096,-5067,-4995, -4955,-4961,-4986,-4967,-4868,-4700,-4496,-4271,-4061,-3891, -3804,-3787,-3715,-3392,-2712,-1752,-719,208,942,1460, 1794,2008,2188,2385,2587,2743,2793,2679,2348,1791, 1096,387,-251,-846,-1459,-2101,-2756,-3423,-4114,-4760, -5228,-5431,-5405,-5277,-5128,-4950,-4665,-4211,-3566,-2758, -1863,-955,-78,745,1504,2212,2923,3710,4607,5579, 6483,7166,7534,7657,7676,7723,7821,7909,7928,7843, 7637,7296,6825,6317,5913,5726,5765,5929,6125,6299, 6412,6449,6442,6464,6560,6701,6832,6864,6710,6267, 5542,4698,3967,3503,3283,3168,3017,2744,2311,1700, 922,13,-925,-1809,-2601,-3342,-4098,-4870,-5582,-6156, -6541,-6740,-6812,-6803,-6748,-6662,-6540,-6371,-6126,-5783, -5363,-4931,-4583,-4387,-4351,-4413,-4488,-4555,-4624,-4698, -4751,-4768,-4788,-4856,-4950,-4988,-4883,-4620,-4289,-4030, -3933,-4002,-4158,-4255,-4145,-3759,-3125,-2325,-1435,-563, 165,694,1069,1416,1807,2214,2580,2859,3006,2972, 2736,2320,1793,1255,752,263,-316,-1047,-1883,-2724, -3475,-4090,-4549,-4884,-5126,-5284,-5336,-5267,-5072,-4750, -4252,-3536,-2654,-1746,-952,-320,254,931,1796,2803, 3837,4814,5679,6368,6845,7142,7368,7614,7885,8133, 8288,8272,8043,7625,7135,6677,6337,6138,6078,6141, 6263,6353,6343,6248,6195,6322,6644,7032,7294,7302, 7033,6533,5881,5189,4575,4131,3875,3735,3599,3351, 2932,2358,1692,984,253,-520,-1361,-2239,-3108,-3928, -4683,-5333,-5833,-6156,-6355,-6514,-6672,-6785,-6773,-6598, -6302,-5941,-5556,-5158,-4793,-4531,-4398,-4366,-4363,-4344, -4309,-4271,-4294,-4426,-4653,-4865,-4936,-4823,-4589,-4305, -4049,-3888,-3886,-4041,-4254,-4380,-4294,-3960,-3422,-2752, -2028,-1311,-660,-110,356,816,1326,1884,2405,2787, 2972,2966,2827,2629,2401,2118,1723,1185,524,-218, -990,-1776,-2558,-3278,-3858,-4288,-4656,-5033,-5383,-5575, -5508,-5179,-4649,-4000,-3320,-2670,-2079,-1498,-860,-110, 769,1763,2812,3811,4666,5342,5885,6375,6862,7342, 7772,8116,8337,8393,8238,7878,7407,6966,6668,6538, 6500,6444,6312,6129,5971,5920,6021,6279,6652,7045, 7330,7396,7192,6744,6163,5584,5111,4748,4462,4212, 3969,3702,3369,2937,2422,1848,1223,501,-349,-1298, -2245,-3093,-3836,-4491,-5070,-5584,-6028,-6407,-6694,-6877, -6955,-6908,-6705,-6348,-5922,-5542,-5269,-5072,-4892,-4683, -4452,-4250,-4134,-4139,-4264,-4495,-4767,-4967,-4986,-4799, -4491,-4185,-3987,-3932,-4021,-4204,-4404,-4516,-4457,-4191, -3742,-3181,-2603,-2068,-1572,-1066,-483,188,886,1497, 1961,2309,2580,2771,2851,2833,2762,2640,2402,1973, 1342,576,-227,-987,-1666,-2284,-2896,-3551,-4240,-4892, -5391,-5660,-5665,-5425,-5000,-4472,-3946,-3501,-3097,-2612, -1959,-1133,-193,788,1768,2692,3539,4273,4908,5501, 6126,6811,7495,8048,8363,8401,8213,7906,7598,7358, 7191,7054,6901,6693,6420,6108,5840,5738,5882,6243, 6689,7080,7328,7398,7264,6930,6476,6014,5618,5280, 4960,4632,4312,4006,3716,3435,3116,2683,2091,1360, 561,-275,-1144,-2016,-2835,-3556,-4189,-4789,-5395,-5989, -6500,-6853,-7011,-6986,-6818,-6567,-6301,-6056,-5850,-5636, -5366,-5005,-4596,-4265,-4120,-4173,-4378,-4650,-4900,-5032, -4987,-4791,-4512,-4234,-4029,-3986,-4142,-4414,-4631,-4664, -4513,-4267,-3995,-3699,-3353,-2936,-2453,-1904,-1281,-598, 86,720,1263,1696,2014,2267,2518,2782,2985,3009, 2793,2363,1799,1170,535,-78,-692,-1342,-2059,-2878, -3770,-4609,-5240,-5555,-5587,-5441,-5215,-4956,-4671,-4362, -4022,-3601,-3031,-2261,-1331,-337,620,1473,2212,2883, 3587,4401,5301,6184,6950,7547,7924,8051,7971,7813, 7697,7660,7613,7478,7214,6836,6393,5971,5675,5591, 5742,6088,6523,6916,7157,7217,7136,6965,6733,6436, 6063,5630,5211,4851,4560,4308,4064,3822,3569,3241, 2773,2132,1351,501,-330,-1095,-1817,-2528,-3249,-3995, -4768,-5531,-6182,-6627,-6840,-6882,-6838,-6772,-6718,-6659, -6514,-6220,-5781,-5286,-4829,-4480,-4282,-4282,-4480,-4794, -5063,-5144,-4990,-4687,-4380,-4176,-4124,-4203,-4356,-4509, -4601,-4612,-4550,-4423,-4248,-4046,-3840,-3593,-3231,-2694, -2011,-1276,-592,-23,441,861,1294,1761,2228,2647, 2953,3077,2968,2644,2190,1732,1322,912,384,-318, -1177,-2126,-3093,-3970,-4674,-5135,-5356,-5375,-5272,-5142, -5061,-5007,-4858,-4498,-3913,-3154,-2289,-1398,-564,159, 818,1505,2311,3266,4316,5348,6217,6842,7233,7459, 7586,7677,7769,7865,7901,7799,7515,7046,6480,5965, 5647,5586,5726,5975,6260,6544,6797,6989,7060,6996, 6821,6571,6262,5882,5464,5060,4729,4487,4301,4146, 3959,3670,3222,2631,1943,1222,508,-175,-840,-1542, -2339,-3236,-4151,-4962,-5589,-6034,-6364,-6624,-6822,-6961, -7043,-7072,-6986,-6717,-6245,-5647,-5070,-4659,-4496,-4575, -4785,-5002,-5105,-5053,-4877,-4644,-4417,-4245,-4181,-4240, -4374,-4493,-4523,-4462,-4382,-4347,-4363,-4377,-4301,-4081, -3704,-3201,-2599,-1963,-1377,-895,-480,-35,510,1156, 1810,2362,2713,2841,2790,2660,2494,2284,2017,1681, 1243,628,-218,-1255,-2332,-3290,-4027,-4522,-4827,-5009, -5140,-5269,-5401,-5482,-5409,-5092,-4530,-3805,-3028,-2301, -1666,-1087,-452,307,1217,2250,3343,4402,5322,6029, 6518,6866,7170,7519,7904,8206,8299,8161,7844,7410, 6904,6424,6067,5891,5883,6004,6221,6485,6744,6955, 7102,7172,7133,6963,6672,6289,5866,5459,5129,4902, 4767,4663,4496,4180,3703,3141,2591,2078,1555,957, 257,-531,-1393,-2291,-3182,-3999,-4694,-5239,-5667,-6047, -6435,-6839,-7197,-7391,-7322,-6966,-6419,-5827,-5322,-4976, -4809,-4798,-4900,-5024,-5061,-4943,-4709,-4456,-4284,-4214, -4202,-4213,-4223,-4223,-4179,-4125,-4106,-4161,-4270,-4372, -4377,-4197,-3818,-3327,-2844,-2435,-2067,-1663,-1176,-599, 54,740,1398,1964,2380,2624,2715,2723,2739,2773, 2753,2588,2216,1601,753,-258,-1306,-2253,-3008,-3563, -3974,-4344,-4741,-5138,-5458,-5612,-5542,-5250,-4787,-4229, -3649,-3095,-2591,-2100,-1530,-772,210,1324,2430,3411, 4248,4959,5584,6162,6734,7300,7810,8187,8388,8383, 8177,7800,7334,6865,6472,6193,6044,6039,6162,6382, 6636,6883,7098,7263,7323,7206,6905,6489,6071,5753, 5541,5397,5241,5027,4742,4398,4020,3628,3229,2819, 2379,1875,1258,492,-404,-1362,-2266,-3015,-3606,-4143, -4728,-5384,-6053,-6644,-7109,-7395,-7422,-7153,-6663,-6117, -5646,-5336,-5196,-5182,-5195,-5162,-5056,-4896,-4710,-4536, -4417,-4368,-4366,-4334,-4225,-4069,-3945,-3940,-4069,-4262, -4411,-4441,-4352,-4164,-3905,-3603,-3292,-2999,-2703,-2352, -1883,-1275,-567,155,803,1333,1739,2035,2268,2492, 2743,3002,3186,3192,2927,2343,1510,576,-323,-1128, -1851,-2515,-3139,-3743,-4332,-4887,-5337,-5582,-5565,-5312, -4926,-4535,-4193,-3881,-3542,-3102,-2482,-1667,-713,290, 1275,2208,3062,3837,4564,5299,6045,6756,7380,7877, 8223,8378,8331,8086,7701,7257,6835,6483,6214,6052, 6021,6153,6440,6808,7137,7332,7356,7228,6996,6718, 6443,6210,6005,5806,5590,5344,5051,4701,4335,4030, 3803,3573,3225,2706,2037,1261,421,-410,-1174,-1847, -2474,-3114,-3819,-4615,-5462,-6270,-6902,-7252,-7305,-7125, -6800,-6424,-6080,-5818,-5660,-5574,-5479,-5315,-5095,-4893, -4768,-4721,-4695,-4620,-4472,-4271,-4081,-3947,-3902,-3960, -4105,-4279,-4396,-4404,-4310,-4151,-3972,-3810,-3677,-3544, -3350,-3020,-2543,-1940,-1249,-544,81,561,911,1227, 1608,2080,2592,3041,3339,3409,3215,2758,2106,1357, 604,-108,-808,-1533,-2315,-3144,-3964,-4669,-5163,-5406, -5437,-5341,-5186,-5023,-4856,-4669,-4401,-3987,-3391,-2630, -1769,-877,5,880,1746,2592,3424,4264,5116,5977, 6786,7454,7932,8214,8325,8286,8087,7743,7296,6808, 6368,6077,6005,6146,6419,6724,7005,7211,7296,7223, 7033,6819,6646,6519,6382,6174,5872,5506,5137,4822, 4582,4410,4256,4055,3733,3242,2584,1823,1054,352, -260,-822,-1419,-2116,-2940,-3872,-4852,-5788,-6549,-7031, -7196,-7115,-6910,-6704,-6540,-6391,-6222,-6002,-5752,-5508, -5300,-5163,-5092,-5050,-4982,-4838,-4614,-4346,-4108,-3965, -3958,-4065,-4215,-4326,-4359,-4319,-4227,-4106,-3995,-3939, -3961,-3987,-3889,-3589,-3096,-2477,-1831,-1239,-749,-355, 0,399,901,1512,2167,2769,3205,3380,3272,2941, 2497,2015,1510,942,268,-540,-1463,-2444,-3368,-4128, -4654,-4968,-5117,-5186,-5234,-5272,-5259,-5153,-4943,-4613, -4130,-3485,-2731,-1931,-1129,-335,459,1271,2144,3095, 4069,4993,5815,6559,7232,7800,8197,8352,8256,7948, 7512,7020,6544,6183,6020,6085,6329,6632,6884,7021, 7042,6994,6935,6890,6844,6759,6605,6362,6022,5616, 5221,4925,4762,4700,4632,4455,4096,3576,2956,2294, 1634,1039,552,118,-396,-1106,-2029,-3099,-4199,-5193, -5970,-6488,-6802,-6968,-7035,-7030,-6968,-6847,-6653,-6381, -6074,-5795,-5619,-5553,-5529,-5464,-5313,-5085,-4804,-4502, -4231,-4062,-4047,-4154,-4290,-4355,-4313,-4185,-4030,-3930, -3942,-4048,-4176,-4232,-4145,-3875,-3426,-2866,-2305,-1839, -1478,-1186,-863,-416,204,966,1744,2405,2872,3127, 3174,3063,2868,2646,2363,1919,1247,387,-577,-1561, -2493,-3285,-3893,-4335,-4664,-4918,-5109,-5261,-5382,-5445, -5384,-5132,-4689,-4124,-3513,-2889,-2223,-1488,-682,164, 1032,1931,2867,3825,4780,5711,6582,7348,7953,8339, 8455,8285,7881,7361,6879,6544,6402,6421,6540,6694, 6849,6953,7001,7023,7075,7165,7230,7186,6989,6673, 6297,5918,5590,5363,5247,5210,5163,4998,4656,4119, 3478,2858,2358,1986,1663,1280,736,-8,-947,-2016, -3107,-4100,-4926,-5565,-6070,-6486,-6818,-7012,-7033,-6911, -6695,-6436,-6177,-5957,-5826,-5775,-5748,-5655,-5458,-5154, -4784,-4441,-4203,-4112,-4136,-4199,-4232,-4182,-4048,-3867, -3717,-3671,-3748,-3928,-4126,-4220,-4116,-3816,-3396,-2955, -2556,-2240,-2005,-1778,-1452,-940,-252,525,1285,1937, 2430,2774,3007,3178,3288,3282,3115,2746,2167,1408, 516,-451,-1411,-2265,-2941,-3456,-3890,-4310,-4708,-5043, -5275,-5384,-5371,-5238,-4991,-4632,-4162,-3606,-2996,-2336, -1620,-856,-39,826,1726,2647,3613,4661,5747,6764, 7577,8124,8380,8342,8053,7633,7230,6939,6792,6743, 6741,6750,6763,6805,6900,7043,7210,7360,7444,7412, 7234,6915,6508,6113,5829,5703,5695,5693,5592,5333, 4922,4400,3846,3361,3007,2752,2506,2158,1624,894, 9,-961,-1947,-2903,-3798,-4615,-5350,-5983,-6487,-6831, -6985,-6952,-6782,-6551,-6350,-6230,-6196,-6195,-6136,-5962, -5676,-5341,-4995,-4693,-4484,-4409,-4423,-4435,-4352,-4179, -3962,-3765,-3657,-3691,-3859,-4083,-4253,-4280,-4132,-3842, -3510,-3216,-3003,-2852,-2707,-2482,-2094,-1535,-881,-217, 429,1062,1654,2173,2606,2969,3266,3461,3504,3314, 2843,2126,1273,388,-465,-1266,-2006,-2692,-3318,-3872, -4343,-4753,-5109,-5376,-5503,-5485,-5360,-5159,-4854,-4415, -3861,-3246,-2599,-1933,-1237,-507,285,1191,2240,3417, 4658,5850,6860,7583,7966,8061,7964,7778,7555,7328, 7120,6944,6801,6683,6603,6596,6687,6893,7171,7427, 7549,7489,7258,6909,6531,6219,6053,6029,6058,6022, 5840,5484,5012,4522,4101,3783,3540,3332,3091,2744, 2245,1615,886,71,-827,-1755,-2677,-3601,-4537,-5402, -6087,-6516,-6715,-6748,-6676,-6563,-6483,-6486,-6543,-6562, -6458,-6219,-5892,-5531,-5194,-4940,-4813,-4782,-4757,-4645, -4430,-4153,-3881,-3689,-3648,-3762,-3965,-4160,-4244,-4173, -3972,-3740,-3569,-3482,-3414,-3308,-3153,-2927,-2596,-2134, -1573,-975,-380,188,744,1316,1927,2546,3082,3440, 3574,3486,3191,2703,2047,1281,470,-319,-1077,-1817, -2542,-3223,-3812,-4304,-4714,-5056,-5326,-5503,-5563,-5495, -5292,-4948,-4483,-3942,-3378,-2838,-2319,-1765,-1087,-212, 886,2144,3448,4681,5762,6620,7210,7542,7681,7705, 7655,7547,7384,7154,6880,6625,6459,6446,6589,6866, 7214,7516,7630,7509,7212,6867,6582,6408,6366,6401, 6399,6268,5996,5625,5204,4780,4418,4155,3976,3799, 3553,3199,2764,2271,1716,1072,324,-540,-1519,-2579, -3654,-4635,-5421,-5962,-6275,-6417,-6467,-6517,-6609,-6743, -6851,-6865,-6728,-6448,-6089,-5737,-5464,-5294,-5218,-5180, -5078,-4835,-4461,-4075,-3808,-3715,-3759,-3872,-3978,-4032, -3998,-3892,-3758,-3630,-3535,-3483,-3473,-3471,-3391,-3167, -2812,-2401,-1996,-1583,-1129,-604,-9,649,1362,2088, 2754,3268,3575,3655,3524,3223,2773,2187,1493,737, -47,-827,-1583,-2291,-2932,-3510,-4021,-4472,-4872,-5227, -5485,-5565,-5416,-5087,-4675,-4263,-3889,-3559,-3233,-2823, -2238,-1424,-366,882,2220,3501,4625,5563,6315,6880, 7283,7570,7758,7807,7680,7394,7032,6676,6443,6425, 6653,7029,7385,7587,7595,7436,7189,6930,6744,6677, 6714,6773,6740,6562,6238,5842,5446,5096,4813,4596, 4403,4180,3905,3587,3256,2920,2539,2061,1442,646, -342,-1483,-2655,-3708,-4544,-5150,-5570,-5862,-6088,-6316, -6580,-6865,-7068,-7084,-6882,-6544,-6198,-5947,-5828,-5800, -5766,-5623,-5342,-4969,-4585,-4260,-4018,-3896,-3903,-3997, -4088,-4087,-3970,-3794,-3647,-3579,-3591,-3621,-3631,-3597, -3503,-3331,-3079,-2790,-2501,-2205,-1864,-1424,-860,-175, 604,1410,2154,2764,3224,3516,3612,3510,3243,2841, 2301,1622,844,42,-723,-1414,-2039,-2655,-3302,-3963, -4572,-5062,-5403,-5554,-5485,-5244,-4939,-4670,-4461,-4288, -4098,-3812,-3342,-2601,-1596,-406,864,2119,3284,4307, 5191,5972,6689,7325,7771,7929,7795,7466,7063,6713, 6530,6582,6831,7168,7459,7604,7575,7414,7203,7037, 6973,7010,7094,7129,7041,6810,6493,6153,5825,5517, 5239,4995,4745,4465,4163,3890,3678,3501,3281,2943, 2419,1675,710,-418,-1587,-2667,-3552,-4217,-4710,-5130, -5582,-6091,-6591,-6951,-7088,-7025,-6848,-6645,-6470,-6346, -6275,-6239,-6168,-5993,-5677,-5246,-4805,-4461,-4258,-4184, -4179,-4190,-4156,-4064,-3924,-3773,-3652,-3592,-3598,-3645, -3673,-3633,-3530,-3393,-3252,-3108,-2946,-2751,-2492,-2133, -1650,-1032,-283,546,1358,2060,2633,3105,3451,3608, 3542,3275,2834,2247,1556,850,184,-453,-1109,-1827, -2596,-3384,-4132,-4757,-5187,-5381,-5373,-5242,-5074,-4930, -4851,-4830,-4803,-4663,-4298,-3649,-2743,-1670,-539,577, 1674,2766,3863,4938,5947,6802,7407,7670,7607,7327, 6985,6710,6591,6671,6916,7200,7384,7416,7337,7219, 7106,7033,7042,7116,7196,7193,7077,6870,6618,6358, 6101,5841,5546,5226,4882,4535,4234,4015,3895,3839, 3769,3587,3180,2476,1500,395,-670,-1589,-2374,-3093, -3792,-4483,-5156,-5796,-6355,-6762,-6957,-6967,-6864,-6740, -6666,-6669,-6709,-6698,-6569,-6319,-5976,-5575,-5182,-4870, -4667,-4549,-4470,-4396,-4294,-4145,-3975,-3842,-3768,-3719, -3675,-3653,-3650,-3626,-3546,-3432,-3333,-3278,-3240,-3165, -3002,-2723,-2306,-1757,-1094,-360,410,1206,1985,2680, 3215,3543,3635,3507,3192,2750,2242,1723,1186,596, -84,-861,-1709,-2593,-3450,-4188,-4711,-4977,-5030,-4982, -4945,-4978,-5076,-5207,-5278,-5192,-4871,-4316,-3594,-2779, -1906,-947,115,1286,2547,3852,5101,6163,6908,7272, 7314,7172,6977,6841,6823,6935,7125,7302,7394,7389, 7323,7255,7225,7247,7304,7364,7382,7336,7238,7109, 6955,6761,6533,6279,5989,5617,5152,4680,4341,4213, 4258,4360,4378,4197,3767,3108,2296,1412,528,-310, -1102,-1898,-2735,-3606,-4461,-5239,-5865,-6288,-6510,-6601, -6646,-6703,-6770,-6848,-6912,-6919,-6802,-6533,-6172,-5815, -5506,-5242,-4996,-4789,-4634,-4495,-4328,-4142,-3980,-3858, -3770,-3697,-3642,-3587,-3500,-3387,-3291,-3252,-3264,-3280, -3280,-3245,-3151,-2978,-2702,-2312,-1808,-1184,-436,418, 1328,2180,2849,3286,3502,3529,3389,3134,2819,2490, 2117,1631,975,166,-761,-1747,-2706,-3505,-4049,-4339, -4474,-4580,-4726,-4931,-5163,-5378,-5494,-5446,-5210,-4825, -4347,-3812,-3204,-2449,-1483,-270,1130,2602,3992,5163, 6013,6520,6738,6797,6811,6857,6960,7094,7204,7248, 7254,7264,7274,7271,7275,7314,7384,7442,7443,7379, 7283,7207,7190,7193,7103,6842,6411,5887,5354,4905, 4636,4565,4643,4742,4756,4605,4240,3671,2990,2302, 1631,927,140,-739,-1691,-2676,-3641,-4500,-5181,-5657, -5976,-6221,-6449,-6679,-6879,-7037,-7126,-7122,-7007,-6799, -6535,-6246,-5950,-5671,-5427,-5204,-4968,-4725,-4492,-4306, -4175,-4079,-3991,-3875,-3732,-3578,-3439,-3322,-3242,-3226, -3260,-3293,-3288,-3259,-3237,-3210,-3114,-2900,-2536,-1998, -1271,-385,576,1491,2258,2828,3187,3360,3385,3328, 3251,3162,2989,2623,2002,1147,143,-889,-1841,-2616, -3175,-3551,-3828,-4101,-4420,-4760,-5065,-5287,-5388,-5356, -5233,-5069,-4897,-4670,-4294,-3702,-2824,-1634,-183,1381, 2850,4063,4970,5610,6063,6392,6630,6819,6989,7155, 7285,7331,7293,7235,7239,7322,7440,7531,7549,7495, 7395,7323,7350,7471,7614,7673,7579,7295,6827,6235, 5640,5199,4992,4980,5041,5079,5039,4887,4590,4167, 3694,3216,2709,2104,1355,465,-539,-1596,-2601,-3478, -4195,-4766,-5231,-5643,-6024,-6374,-6685,-6944,-7114,-7157, -7073,-6915,-6741,-6557,-6345,-6094,-5816,-5535,-5250,-4961, -4709,-4539,-4451,-4371,-4245,-4065,-3868,-3679,-3508,-3377, -3301,-3279,-3275,-3255,-3242,-3264,-3341,-3438,-3485,-3434, -3228,-2814,-2167,-1304,-327,631,1447,2055,2470,2746, 2958,3161,3356,3487,3459,3204,2670,1870,894,-113, -998,-1702,-2256,-2747,-3216,-3694,-4153,-4579,-4928,-5157, -5249,-5248,-5240,-5301,-5430,-5512,-5378,-4912,-4101,-2998, -1670,-213,1237,2526,3561,4369,5007,5538,5999,6412, 6736,6932,6986,6971,6975,7040,7151,7271,7360,7393, 7345,7224,7107,7097,7242,7490,7722,7825,7725,7404, 6907,6331,5804,5415,5201,5140,5146,5122,5016,4829, 4597,4357,4104,3820,3430,2883,2164,1305,348,-670, -1679,-2592,-3360,-4001,-4585,-5150,-5675,-6136,-6538,-6867, -7093,-7189,-7182,-7132,-7072,-6984,-6823,-6588,-6295,-5973, -5649,-5360,-5135,-4976,-4852,-4717,-4533,-4319,-4111,-3928, -3753,-3578,-3430,-3322,-3242,-3167,-3118,-3152,-3285,-3477, -3668,-3797,-3764,-3464,-2861,-2041,-1147,-282,484,1107, 1589,1993,2405,2858,3311,3659,3781,3599,3131,2449, 1626,757,-58,-738,-1318,-1888,-2522,-3187,-3794,-4252, -4542,-4699,-4794,-4909,-5107,-5397,-5720,-5969,-6032,-5802, -5211,-4238,-2975,-1605,-295,900,1997,2997,3882,4660, 5339,5898,6296,6519,6621,6697,6811,6983,7170,7317, 7368,7300,7150,6991,6929,7023,7269,7581,7845,7959, 7859,7542,7064,6543,6103,5789,5585,5429,5282,5141, 5014,4878,4726,4585,4471,4332,4054,3592,2962,2199, 1312,347,-607,-1481,-2267,-3002,-3719,-4417,-5067,-5643, -6126,-6510,-6794,-6990,-7119,-7216,-7273,-7252,-7111,-6871, -6590,-6302,-6015,-5745,-5516,-5317,-5125,-4930,-4735,-4543, -4341,-4136,-3943,-3765,-3583,-3379,-3164,-2969,-2861,-2900, -3093,-3385,-3693,-3938,-4014,-3814,-3301,-2573,-1786,-1062, -418,168,729,1294,1896,2548,3198,3712,3954,3872, 3508,2968,2345,1709,1082,439,-274,-1055,-1845,-2561, -3162,-3635,-3968,-4154,-4265,-4426,-4740,-5205,-5737,-6192, -6440,-6367,-5924,-5142,-4115,-2968,-1792,-629,533,1696, 2811,3802,4622,5264,5725,6036,6278,6532,6824,7111, 7334,7445,7436,7301,7099,6942,6951,7171,7514,7846, 8079,8170,8092,7840,7473,7075,6708,6402,6120,5856, 5611,5397,5217,5076,4985,4946,4927,4859,4661,4285, 3756,3090,2308,1456,598,-226,-1042,-1880,-2723,-3513, -4225,-4850,-5397,-5864,-6273,-6640,-6942,-7154,-7256,-7253, -7164,-7003,-6802,-6570,-6323,-6073,-5841,-5624,-5395,-5130, -4884,-4696,-4548,-4392,-4203,-3987,-3740,-3436,-3076,-2744, -2571,-2628,-2891,-3263,-3638,-3924,-4025,-3878,-3493,-2955, -2364,-1791,-1263,-756,-203,480,1309,2173,2920,3452, 3743,3812,3698,3432,3056,2602,2079,1462,727,-123, -1012,-1827,-2479,-2948,-3247,-3424,-3589,-3857,-4307,-4906, -5548,-6099,-6456,-6541,-6316,-5813,-5105,-4243,-3242,-2101, -856,414,1628,2719,3639,4353,4890,5323,5757,6232, 6713,7115,7363,7430,7337,7157,6986,6918,7008,7253, 7574,7872,8088,8196,8182,8038,7794,7508,7223,6932, 6604,6253,5921,5627,5392,5244,5195,5220,5257,5233, 5095,4813,4390,3860,3244,2561,1805,982,105,-806, -1688,-2502,-3241,-3928,-4574,-5175,-5710,-6191,-6620,-6964, -7167,-7221,-7172,-7096,-7001,-6862,-6669,-6451,-6225,-5973, -5679,-5364,-5102,-4932,-4837,-4759,-4640,-4407,-4025,-3534, -3038,-2654,-2455,-2473,-2712,-3115,-3553,-3866,-3942,-3793, -3496,-3167,-2862,-2551,-2157,-1636,-978,-196,679,1579, 2385,3005,3409,3645,3751,3743,3628,3404,3042,2482, 1702,768,-179,-1008,-1662,-2112,-2380,-2565,-2808,-3214, -3790,-4448,-5105,-5690,-6148,-6431,-6505,-6350,-5962,-5350, -4504,-3419,-2156,-833,408,1497,2429,3202,3849,4467, 5140,5846,6477,6941,7197,7265,7179,7019,6891,6875, 6994,7214,7493,7766,7978,8106,8152,8122,8024,7869, 7660,7389,7031,6605,6181,5817,5553,5403,5371,5414, 5446,5387,5247,5057,4818,4476,4006,3422,2749,1979, 1121,216,-660,-1471,-2225,-2960,-3699,-4419,-5088,-5690, -6217,-6635,-6923,-7080,-7141,-7150,-7129,-7098,-7031,-6889, -6633,-6288,-5919,-5607,-5398,-5289,-5247,-5217,-5128,-4891, -4445,-3830,-3187,-2695,-2480,-2545,-2810,-3151,-3463,-3669, -3730,-3674,-3580,-3492,-3397,-3233,-2955,-2511,-1872,-1056, -150,730,1512,2159,2679,3088,3426,3702,3892,3912, 3677,3142,2342,1407,492,-292,-901,-1331,-1620,-1869, -2198,-2679,-3277,-3916,-4536,-5135,-5694,-6162,-6505,-6699, -6675,-6338,-5629,-4600,-3392,-2158,-1012,1,891,1725, 2555,3416,4308,5170,5927,6487,6812,6930,6906,6820, 6756,6778,6905,7105,7325,7538,7742,7913,8025,8087, 8134,8149,8050,7769,7345,6886,6467,6107,5808,5602, 5509,5494,5477,5420,5340,5261,5141,4929,4588,4117, 3515,2801,2011,1188,373,-428,-1223,-2006,-2782,-3572, -4375,-5136,-5776,-6252,-6578,-6817,-7022,-7214,-7350,-7414, -7391,-7280,-7051,-6699,-6280,-5923,-5737,-5721,-5794,-5832, -5731,-5397,-4827,-4131,-3482,-3009,-2768,-2748,-2905,-3133, -3327,-3430,-3466,-3494,-3562,-3667,-3751,-3731,-3545,-3169, -2576,-1800,-942,-141,542,1167,1785,2400,2987,3525, 3951,4157,4037,3578,2857,2023,1202,489,-77,-511, -862,-1212,-1633,-2129,-2661,-3194,-3747,-4359,-5026,-5721, -6359,-6836,-7047,-6896,-6364,-5515,-4486,-3429,-2414,-1471, -578,302,1235,2256,3330,4338,5183,5823,6267,6522, 6595,6578,6580,6672,6821,6971,7112,7264,7449,7661, 7877,8079,8233,8293,8213,7974,7612,7191,6777,6411, 6101,5854,5666,5537,5456,5420,5416,5409,5349,5208, 4975,4631,4156,3540,2820,2079,1366,653,-115,-964, -1841,-2711,-3555,-4356,-5063,-5628,-6062,-6423,-6748,-7055, -7346,-7581,-7679,-7570,-7268,-6854,-6461,-6205,-6128,-6194, -6299,-6324,-6167,-5771,-5166,-4483,-3877,-3427,-3142,-3003, -2992,-3059,-3119,-3119,-3116,-3204,-3411,-3674,-3889,-3972, -3873,-3561,-3043,-2386,-1699,-1049,-443,177,875,1663, 2486,3253,3861,4207,4219,3890,3321,2653,1997,1396, 848,350,-113,-571,-1024,-1450,-1846,-2264,-2787,-3464, -4268,-5120,-5931,-6589,-6980,-7009,-6670,-6067,-5326,-4521, -3671,-2796,-1928,-1027,-32,1086,2263,3374,4323,5071, 5624,6003,6249,6409,6533,6646,6748,6838,6926,7058, 7252,7511,7808,8105,8336,8441,8395,8225,7981,7681, 7319,6917,6544,6246,6013,5811,5640,5555,5566,5626, 5648,5579,5406,5117,4719,4242,3706,3120,2485,1795, 1045,231,-647,-1574,-2501,-3356,-4064,-4621,-5115,-5625, -6164,-6678,-7120,-7444,-7580,-7461,-7135,-6758,-6483,-6368, -6385,-6484,-6592,-6615,-6450,-6053,-5494,-4881,-4326,-3888, -3574,-3347,-3178,-3042,-2923,-2834,-2839,-2996,-3298,-3641, -3911,-4033,-3988,-3768,-3388,-2913,-2432,-1970,-1469,-846, -62,865,1850,2777,3522,3966,4088,3952,3651,3242, 2738,2174,1604,1051,515,10,-412,-731,-1002,-1348, -1867,-2592,-3485,-4451,-5377,-6152,-6678,-6904,-6828,-6497, -6010,-5443,-4812,-4106,-3303,-2387,-1350,-213,962,2096, 3114,3994,4714,5280,5708,6045,6298,6438,6468,6478, 6560,6739,6970,7224,7522,7841,8114,8277,8322,8256, 8108,7894,7621,7291,6909,6507,6140,5852,5677,5617, 5637,5676,5679,5630,5525,5328,5008,4605,4191,3791, 3337,2755,2020,1170,240,-723,-1643,-2439,-3096,-3686, -4321,-5034,-5788,-6481,-7046,-7416,-7550,-7444,-7175,-6888, -6714,-6700,-6797,-6931,-7034,-7023,-6838,-6465,-5974,-5471, -5023,-4636,-4275,-3913,-3554,-3222,-2936,-2760,-2770,-2976, -3305,-3648,-3912,-4054,-4033,-3865,-3633,-3425,-3232,-2968, -2536,-1893,-1065,-97,941,1939,2769,3348,3673,3799, 3778,3603,3248,2729,2111,1494,943,499,176,-52, -265,-576,-1079,-1799,-2702,-3707,-4710,-5582,-6210,-6571, -6721,-6714,-6553,-6245,-5817,-5283,-4592,-3702,-2647,-1514, -393,696,1759,2788,3720,4498,5103,5555,5880,6075, 6157,6188,6263,6421,6657,6942,7265,7598,7873,8058, 8177,8266,8289,8171,7912,7576,7207,6806,6391,6034, 5806,5717,5718,5749,5756,5715,5599,5403,5162,4920, 4705,4473,4120,3579,2850,1997,1099,223,-580,-1291, -1944,-2611,-3384,-4272,-5189,-6013,-6665,-7097,-7274,-7210, -7021,-6867,-6850,-6943,-7089,-7232,-7309,-7252,-7039,-6722, -6379,-6043,-5696,-5303,-4869,-4399,-3896,-3386,-2959,-2738, -2776,-2996,-3274,-3513,-3673,-3747,-3759,-3745,-3748,-3762, -3745,-3624,-3294,-2699,-1889,-967,-11,940,1826,2583, 3181,3633,3890,3883,3605,3144,2589,2000,1449,1044, 829,726,580,281,-206,-899,-1784,-2786,-3784,-4661, -5357,-5865,-6239,-6518,-6691,-6684,-6464,-6052,-5471,-4714, -3804,-2807,-1771,-694,419,1529,2571,3518,4349,5007, 5448,5678,5803,5924,6085,6272,6483,6740,7047,7369, 7662,7914,8142,8345,8477,8480,8342,8070,7688,7241, 6773,6381,6131,6038,6034,6014,5929,5796,5649,5499, 5369,5293,5247,5132,4832,4303,3607,2821,2007,1225, 527,-85,-707,-1448,-2352,-3371,-4417,-5380,-6144,-6619, -6807,-6808,-6764,-6787,-6895,-7058,-7242,-7398,-7464,-7401, -7215,-6982,-6781,-6611,-6385,-6028,-5516,-4900,-4254,-3655, -3190,-2941,-2931,-3065,-3226,-3329,-3374,-3400,-3451,-3572, -3769,-3976,-4088,-4024,-3764,-3316,-2690,-1909,-1022,-87, 856,1767,2608,3310,3781,3938,3787,3407,2908,2389, 1936,1623,1476,1433,1345,1084,597,-83,-912,-1825, -2733,-3567,-4329,-5035,-5668,-6173,-6518,-6715,-6759,-6596, -6194,-5578,-4832,-4009,-3102,-2073,-941,234,1375,2440, 3385,4154,4716,5094,5362,5581,5785,5988,6199,6441, 6722,7022,7316,7605,7923,8250,8513,8626,8566,8347, 7988,7531,7075,6727,6525,6407,6293,6149,5979,5797, 5626,5518,5518,5597,5648,5565,5286,4819,4193,3480, 2783,2172,1655,1150,535,-277,-1290,-2414,-3524,-4515, -5320,-5875,-6170,-6290,-6396,-6585,-6839,-7074,-7251,-7359, -7376,-7316,-7226,-7183,-7171,-7124,-6953,-6603,-6067,-5385, -4652,-4010,-3563,-3326,-3225,-3173,-3120,-3061,-3036,-3069, -3170,-3356,-3618,-3909,-4113,-4144,-4001,-3728,-3325,-2748, -1990,-1120,-160,871,1922,2843,3492,3817,3838,3589, 3157,2693,2357,2199,2149,2103,1990,1752,1360,788, 59,-765,-1603,-2412,-3207,-4008,-4801,-5511,-6069,-6449, -6657,-6699,-6552,-6211,-5716,-5086,-4296,-3317,-2187,-1000, 176,1318,2385,3301,4011,4536,4941,5276,5559,5799, 6024,6257,6500,6748,7034,7400,7838,8275,8620,8809, 8819,8647,8334,7964,7632,7380,7179,6977,6742,6480, 6216,5984,5818,5757,5835,6008,6133,6057,5751,5293, 4776,4230,3690,3217,2816,2384,1777,936,-107,-1269, -2442,-3483,-4302,-4885,-5309,-5652,-5975,-6291,-6593,-6843, -7010,-7083,-7087,-7075,-7128,-7268,-7431,-7476,-7310,-6931, -6401,-5778,-5123,-4521,-4070,-3764,-3529,-3295,-3077,-2917, -2835,-2833,-2928,-3131,-3403,-3673,-3888,-4039,-4110,-4066, -3865,-3487,-2924,-2162,-1191,-49,1139,2195,2967,3404, 3542,3453,3207,2905,2668,2559,2542,2527,2432,2231, 1922,1490,920,243,-495,-1276,-2126,-3033,-3921,-4699, -5342,-5877,-6303,-6577,-6675,-6606,-6372,-5951,-5311,-4460, -3440,-2311,-1130,44,1144,2118,2953,3661,4257,4751, 5147,5448,5666,5836,6005,6227,6552,7002,7541,8053, 8426,8625,8682,8615,8421,8163,7936,7787,7633,7378, 7013,6616,6258,5987,5852,5878,6022,6186,6262,6177, 5918,5510,5034,4586,4231,3965,3703,3325,2719,1874, 858,-243,-1361,-2393,-3237,-3893,-4450,-5007,-5559,-6026, -6364,-6574,-6700,-6779,-6864,-7013,-7249,-7531,-7753,-7820, -7675,-7344,-6880,-6343,-5790,-5277,-4819,-4393,-3979,-3593, -3280,-3046,-2887,-2802,-2838,-2996,-3234,-3467,-3661,-3842, -4055,-4263,-4349,-4206,-3795,-3120,-2192,-1049,178,1294, 2160,2731,3038,3117,3038,2905,2822,2805,2793,2744, 2656,2539,2364,2080,1668,1125,464,-310,-1161,-2047, -2909,-3725,-4474,-5147,-5732,-6205,-6545,-6747,-6788,-6610, -6166,-5464,-4577,-3557,-2446,-1301,-198,809,1738,2634, 3467,4140,4608,4911,5123,5299,5473,5716,6088,6600, 7182,7712,8097,8310,8383,8381,8341,8288,8222,8113, 7913,7585,7157,6707,6298,6003,5888,5963,6151,6289, 6278,6107,5835,5512,5178,4889,4707,4607,4456,4103, 3505,2698,1767,779,-209,-1152,-2028,-2863,-3678,-4447, -5108,-5610,-5952,-6168,-6307,-6431,-6628,-6934,-7319,-7677, -7915,-7985,-7907,-7699,-7384,-6974,-6506,-6036,-5587,-5118, -4598,-4076,-3644,-3346,-3148,-3016,-2953,-2977,-3058,-3167, -3341,-3631,-4020,-4410,-4684,-4765,-4574,-4037,-3153,-2032, -845,247,1157,1845,2304,2574,2709,2769,2786,2778, 2752,2719,2696,2684,2629,2472,2181,1776,1237,541, -282,-1146,-1973,-2768,-3564,-4342,-5053,-5684,-6250,-6733, -7052,-7098,-6839,-6308,-5594,-4755,-3811,-2780,-1709,-638, 419,1466,2449,3268,3861,4232,4458,4619,4809,5125, 5596,6163,6710,7167,7529,7798,7977,8086,8191,8334, 8472,8476,8265,7863,7364,6878,6457,6181,6098,6188, 6338,6407,6315,6092,5796,5507,5295,5199,5192,5171, 5013,4655,4116,3447,2686,1855,981,94,-832,-1818, -2844,-3789,-4529,-5027,-5359,-5623,-5864,-6106,-6398,-6788, -7239,-7643,-7911,-8038,-8056,-7982,-7799,-7536,-7219,-6842, -6370,-5794,-5191,-4643,-4193,-3836,-3550,-3320,-3133,-2984, -2888,-2875,-2993,-3305,-3804,-4386,-4875,-5133,-5083,-4679, -3928,-2936,-1870,-855,78,912,1577,2030,2313,2512, 2652,2706,2698,2706,2776,2861,2883,2810,2646,2373, 1944,1340,599,-192,-963,-1703,-2457,-3257,-4089,-4908, -5691,-6371,-6874,-7127,-7106,-6837,-6366,-5736,-4982,-4128, -3165,-2073,-863,360,1458,2325,2961,3408,3719,3957, 4227,4630,5162,5725,6224,6630,6963,7248,7510,7791, 8105,8409,8624,8665,8481,8087,7566,7046,6641,6422, 6393,6472,6526,6459,6256,5989,5720,5504,5384,5388, 5462,5471,5301,4951,4515,4050,3532,2899,2133,1250, 258,-831,-1941,-2936,-3720,-4295,-4712,-5031,-5319,-5647, -6060,-6532,-7007,-7410,-7713,-7921,-8065,-8140,-8130,-8005, -7767,-7424,-6969,-6408,-5811,-5270,-4821,-4438,-4086,-3750, -3418,-3074,-2744,-2557,-2640,-3009,-3575,-4189,-4754,-5152, -5283,-5064,-4522,-3745,-2848,-1907,-962,-58,729,1346, 1785,2097,2325,2467,2539,2600,2713,2868,3014,3086, 3043,2847,2487,1981,1399,784,136,-563,-1314,-2116, -2978,-3918,-4885,-5747,-6389,-6782,-6980,-7018,-6874,-6523, -5990,-5291,-4405,-3305,-2048,-770,376,1311,2029,2565, 2971,3337,3760,4269,4822,5344,5787,6155,6480,6788, 7129,7550,8051,8538,8867,8935,8742,8372,7915,7463, 7100,6917,6900,6919,6841,6622,6333,6065,5859,5743, 5712,5732,5744,5683,5536,5329,5088,4807,4450,3958, 3296,2460,1464,336,-821,-1868,-2697,-3327,-3838,-4284, -4687,-5098,-5565,-6065,-6529,-6928,-7289,-7631,-7922,-8123, -8233,-8258,-8153,-7865,-7398,-6847,-6324,-5876,-5487,-5096, -4665,-4183,-3660,-3116,-2630,-2326,-2326,-2633,-3157,-3765, -4366,-4875,-5181,-5198,-4913,-4371,-3648,-2793,-1876,-967, -131,601,1207,1659,1945,2111,2260,2454,2682,2894, 3073,3213,3270,3178,2907,2521,2091,1648,1164,588, -107,-935,-1864,-2859,-3850,-4754,-5513,-6103,-6547,-6863, -7040,-7037,-6801,-6287,-5487,-4427,-3201,-1956,-829,124, 916,1569,2104,2605,3161,3789,4378,4843,5194,5504, 5829,6191,6639,7203,7841,8419,8789,8886,8733,8432, 8092,7800,7586,7457,7362,7234,7011,6717,6442,6241, 6099,5981,5903,5872,5842,5756,5626,5524,5471,5393, 5202,4840,4281,3505,2535,1458,386,-603,-1486,-2249, -2905,-3456,-3944,-4431,-4933,-5437,-5884,-6283,-6695,-7158, -7619,-7987,-8222,-8320,-8263,-8029,-7650,-7227,-6849,-6527, -6209,-5821,-5325,-4723,-4047,-3354,-2752,-2352,-2217,-2349, -2717,-3274,-3922,-4509,-4910,-5091,-5065,-4817,-4312,-3567, -2676,-1763,-899,-120,544,1070,1450,1729,1976,2248, 2564,2891,3166,3353,3420,3363,3207,2997,2767,2502, 2140,1642,993,208,-708,-1709,-2692,-3569,-4354,-5113, -5855,-6501,-6971,-7232,-7262,-6971,-6310,-5338,-4213,-3086, -2029,-1074,-239,504,1204,1915,2633,3326,3917,4351, 4640,4889,5198,5635,6217,6922,7658,8263,8613,8710, 8663,8549,8398,8222,8071,7951,7798,7562,7268,6981, 6743,6548,6382,6237,6107,5973,5828,5704,5655,5708, 5806,5843,5739,5479,5045,4395,3523,2519,1517,594, -277,-1127,-1922,-2612,-3206,-3744,-4248,-4699,-5120,-5576, -6112,-6702,-7278,-7771,-8126,-8294,-8266,-8085,-7853,-7636, -7437,-7214,-6933,-6575,-6108,-5483,-4712,-3891,-3168,-2655, -2385,-2345,-2539,-2946,-3505,-4111,-4645,-5021,-5196,-5151, -4856,-4299,-3536,-2666,-1793,-979,-283,257,660,1020, 1425,1859,2263,2616,2926,3166,3276,3264,3217,3198, 3180,3073,2811,2389,1819,1118,306,-574,-1466,-2325, -3160,-4027,-4945,-5852,-6624,-7161,-7411,-7317,-6840,-6047, -5101,-4154,-3253,-2379,-1522,-685,157,1051,1948,2714, 3246,3581,3840,4141,4536,5066,5731,6473,7175,7721, 8080,8290,8409,8464,8457,8414,8351,8239,8033,7736, 7432,7211,7061,6908,6711,6492,6285,6087,5878,5724, 5700,5824,6002,6127,6132,5988,5647,5091,4365,3558, 2708,1818,893,-22,-894,-1699,-2412,-2998,-3444,-3823, -4252,-4805,-5476,-6181,-6830,-7379,-7784,-8023,-8088,-8021, -7911,-7847,-7826,-7775,-7605,-7283,-6809,-6177,-5395,-4544, -3751,-3109,-2647,-2394,-2409,-2679,-3117,-3641,-4208,-4767, -5193,-5352,-5199,-4783,-4168,-3418,-2612,-1839,-1178,-639, -176,296,820,1371,1859,2245,2536,2769,2944,3055, 3151,3286,3423,3450,3273,2918,2446,1865,1178,451, -266,-1010,-1867,-2864,-3944,-5025,-6021,-6820,-7296,-7381, -7093,-6552,-5889,-5192,-4479,-3703,-2838,-1876,-838,198, 1128,1851,2342,2678,2981,3349,3821,4416,5123,5872, 6541,7056,7443,7769,8076,8318,8456,8501,8461,8333, 8124,7877,7652,7475,7323,7167,6977,6733,6428,6094, 5810,5659,5679,5829,6026,6199,6289,6240,5999,5578, 5044,4437,3748,2924,1967,951,0,-830,-1532,-2128, -2619,-3055,-3516,-4104,-4827,-5603,-6331,-6938,-7392,-7667, -7795,-7866,-7953,-8064,-8152,-8178,-8135,-7961,-7579,-6966, -6186,-5348,-4530,-3780,-3142,-2675,-2451,-2507,-2815,-3294, -3875,-4504,-5076,-5417,-5415,-5113,-4629,-4059,-3420,-2762, -2149,-1595,-1036,-425,203,777,1270,1685,2019,2271, 2473,2693,2963,3260,3481,3554,3458,3219,2866,2413, 1906,1391,862,232,-597,-1651,-2862,-4108,-5268,-6225, -6862,-7141,-7114,-6912,-6619,-6222,-5666,-4939,-4065,-3063, -1956,-838,126,829,1314,1714,2124,2593,3131,3758, 4451,5127,5735,6281,6795,7270,7683,8025,8290,8444, 8458,8341,8169,8013,7895,7794,7666,7490,7249,6942, 6560,6151,5810,5651,5693,5853,6023,6157,6252,6286, 6213,6012,5691,5252,4645,3850,2912,1925,961,73, -673,-1248,-1709,-2171,-2747,-3446,-4213,-4991,-5735,-6398, -6918,-7273,-7489,-7670,-7895,-8164,-8403,-8551,-8599,-8537, -8285,-7792,-7095,-6306,-5492,-4652,-3831,-3136,-2688,-2525, -2638,-3011,-3594,-4264,-4856,-5233,-5354,-5255,-4989,-4589, -4103,-3585,-3063,-2501,-1859,-1154,-462,138,630,1045, 1404,1710,1991,2310,2705,3108,3404,3522,3507,3386, 3156,2843,2538,2283,1976,1448,621,-460,-1688,-2970, -4191,-5230,-6002,-6504,-6803,-6981,-7037,-6912,-6540,-5908, -5046,-4016,-2921,-1885,-995,-268,337,871,1376,1896, 2464,3085,3739,4367,4960,5555,6179,6801,7341,7762, 8083,8307,8402,8359,8245,8171,8168,8173,8099,7911, 7613,7224,6787,6387,6100,5936,5871,5884,5968,6104, 6247,6349,6388,6373,6279,6027,5524,4753,3823,2875, 1981,1150,397,-215,-719,-1235,-1872,-2630,-3425,-4204, -4946,-5624,-6184,-6597,-6911,-7217,-7563,-7933,-8279,-8571, -8779,-8851,-8732,-8406,-7900,-7242,-6433,-5499,-4523,-3648, -2999,-2639,-2589,-2844,-3340,-3948,-4501,-4888,-5104,-5187, -5140,-4951,-4646,-4268,-3812,-3239,-2548,-1818,-1143,-553, -36,412,778,1097,1470,1953,2494,2965,3273,3412, 3421,3356,3275,3213,3171,3097,2896,2461,1725,711, -480,-1716,-2889,-3934,-4837,-5618,-6296,-6854,-7229,-7342, -7142,-6648,-5907,-4977,-3959,-2987,-2144,-1401,-693,-9, 607,1170,1732,2331,2938,3527,4128,4791,5515,6230, 6876,7406,7780,7990,8089,8157,8253,8372,8472,8502, 8430,8248,7964,7591,7152,6732,6417,6230,6089,5956, 5882,5942,6131,6353,6544,6684,6733,6593,6170,5489, 4651,3789,2952,2164,1455,846,297,-291,-984,-1769, -2578,-3375,-4135,-4823,-5387,-5845,-6273,-6720,-7174,-7602, -7997,-8370,-8712,-8958,-9045,-8947,-8669,-8175,-7416,-6431, -5358,-4362,-3564,-3023,-2797,-2895,-3237,-3676,-4092,-4455, -4773,-5028,-5164,-5156,-5034,-4811,-4456,-3933,-3266,-2546, -1866,-1288,-820,-414,-15,431,951,1520,2071,2522, 2828,2983,3046,3081,3160,3317,3523,3650,3541,3140, 2495,1669,692,-390,-1491,-2542,-3555,-4575,-5572,-6433, -7049,-7380,-7401,-7112,-6564,-5839,-5021,-4169,-3332,-2525, -1767,-1037,-343,305,897,1445,1973,2527,3169,3939, 4770,5537,6174,6698,7131,7445,7650,7818,8039,8314, 8539,8626,8559,8393,8148,7824,7451,7089,6774,6480, 6184,5918,5759,5757,5914,6179,6498,6784,6943,6873, 6539,5999,5324,4577,3809,3084,2452,1877,1278,602, -151,-945,-1754,-2559,-3322,-4007,-4607,-5146,-5676,-6202, -6691,-7130,-7565,-8039,-8521,-8945,-9270,-9463,-9434,-9073, -8347,-7360,-6277,-5243,-4358,-3694,-3291,-3157,-3250,-3491, -3786,-4100,-4428,-4761,-5070,-5292,-5369,-5261,-4939,-4424, -3805,-3182,-2613,-2102,-1639,-1210,-771,-232,428,1121, 1699,2086,2328,2502,2667,2861,3121,3448,3779,3981, 3960,3683,3212,2599,1867,1020,70,-964,-2102,-3319, -4522,-5579,-6410,-6988,-7294,-7288,-6967,-6428,-5808,-5153, -4423,-3574,-2674,-1845,-1147,-540,31,577,1095,1655, 2348,3185,4061,4852,5520,6074,6525,6889,7209,7548, 7925,8285,8544,8668,8676,8599,8435,8199,7918,7619, 7288,6889,6438,6038,5792,5742,5851,6093,6449,6830, 7077,7075,6825,6404,5877,5271,4630,4022,3477,2914, 2261,1511,732,-44,-830,-1629,-2404,-3113,-3760,-4378, -4972,-5530,-6023,-6461,-6908,-7446,-8086,-8741,-9312,-9721, -9883,-9701,-9134,-8260,-7237,-6204,-5259,-4486,-3959,-3665, -3511,-3455,-3540,-3791,-4150,-4543,-4927,-5278,-5514,-5520, -5261,-4801,-4275,-3793,-3387,-3012,-2601,-2113,-1542,-880, -159,521,1056,1405,1639,1857,2123,2457,2863,3309, 3700,3928,3967,3871,3675,3338,2812,2123,1327,412, -700,-2006,-3361,-4582,-5565,-6317,-6853,-7143,-7165,-6958, -6583,-6052,-5362,-4533,-3653,-2831,-2124,-1522,-995,-497, 30,671,1459,2333,3196,3965,4639,5227,5737,6183, 6627,7104,7586,7988,8258,8428,8554,8639,8638,8532, 8348,8106,7758,7263,6690,6179,5833,5682,5733,5989, 6387,6784,7035,7079,6935,6643,6253,5803,5330,4847, 4341,3788,3151,2424,1660,912,176,-584,-1378,-2163, -2908,-3601,-4214,-4719,-5139,-5577,-6110,-6742,-7450,-8227, -9014,-9677,-10040,-10016,-9630,-8957,-8094,-7136,-6190,-5352, -4680,-4167,-3765,-3473,-3350,-3457,-3782,-4235,-4705,-5112, -5368,-5397,-5200,-4872,-4548,-4270,-3999,-3680,-3288,-2786, -2135,-1365,-612,-14,408,736,1050,1376,1721,2112, 2576,3080,3526,3818,3961,4022,4034,3961,3729,3307, 2675,1816,723,-534,-1841,-3088,-4216,-5199,-5994,-6566, -6910,-7036,-6929,-6560,-5933,-5145,-4333,-3596,-2942,-2357, -1835,-1337,-774,-66,764,1618,2420,3156,3846,4478, 5053,5606,6166,6728,7240,7660,7991,8267,8506,8702, 8833,8885,8844,8680,8342,7808,7170,6575,6150,5923, 5904,6095,6439,6808,7059,7142,7085,6920,6667,6364, 6042,5680,5231,4666,4043,3414,2775,2073,1295,486, -313,-1117,-1927,-2685,-3312,-3786,-4164,-4569,-5096,-5779, -6595,-7501,-8425,-9252,-9822,-10030,-9881,-9443,-8792,-8007, -7163,-6336,-5548,-4792,-4096,-3573,-3331,-3375,-3628,-4013, -4459,-4864,-5095,-5098,-4965,-4834,-4762,-4685,-4513,-4222, -3817,-3302,-2669,-1947,-1239,-655,-217,135,476,848, 1265,1735,2232,2709,3116,3441,3725,3995,4231,4366, 4347,4149,3727,3023,2046,891,-303,-1502,-2711,-3894, -4956,-5843,-6528,-6967,-7089,-6856,-6350,-5707,-5038,-4401, -3815,-3284,-2776,-2231,-1599,-868,-68,733,1491,2216, 2928,3623,4284,4915,5546,6170,6720,7161,7524,7881, 8241,8579,8883,9132,9245,9132,8780,8247,7622,6992, 6457,6132,6077,6225,6469,6699,6874,7006,7086,7079, 6954,6739,6490,6209,5848,5376,4829,4269,3702,3063, 2312,1474,603,-261,-1104,-1865,-2469,-2908,-3276,-3684, -4206,-4877,-5736,-6762,-7830,-8756,-9419,-9809,-9953,-9852, -9491,-8913,-8206,-7421,-6552,-5612,-4701,-4011,-3658,-3622, -3793,-4062,-4359,-4623,-4797,-4876,-4910,-4957,-5023,-5059, -4994,-4790,-4436,-3925,-3283,-2609,-2015,-1524,-1076,-622, -176,248,678,1153,1638,2071,2440,2805,3220,3671, 4080,4392,4570,4568,4314,3789,3037,2134,1119,0, -1222,-2522,-3812,-4976,-5928,-6596,-6917,-6881,-6567,-6129, -5668,-5196,-4700,-4196,-3689,-3128,-2471,-1738,-989,-255, 471,1195,1918,2637,3370,4108,4813,5438,5954,6409, 6852,7305,7764,8236,8726,9163,9425,9398,9065,8536, 7935,7355,6844,6458,6264,6271,6397,6546,6698,6859, 7002,7077,7049,6947,6775,6530,6210,5847,5481,5089, 4599,3981,3248,2441,1556,604,-320,-1087,-1630,-2009, -2359,-2778,-3314,-3998,-4864,-5904,-6999,-7990,-8767,-9342, -9764,-10028,-10057,-9789,-9230,-8428,-7450,-6399,-5436,-4711, -4265,-4048,-4005,-4102,-4276,-4427,-4510,-4585,-4740,-4975, -5188,-5296,-5271,-5112,-4807,-4354,-3805,-3256,-2754,-2286, -1805,-1295,-778,-282,183,625,1042,1418,1785,2215, 2743,3324,3853,4282,4587,4744,4684,4404,3957,3369, 2600,1589,345,-1041,-2458,-3807,-4968,-5828,-6342,-6543, -6525,-6360,-6099,-5771,-5402,-4983,-4489,-3895,-3216,-2523, -1859,-1207,-515,221,981,1751,2551,3378,4148,4776, 5254,5670,6125,6661,7267,7900,8531,9085,9450,9524, 9308,8895,8390,7859,7348,6939,6676,6534,6462,6477, 6616,6833,7021,7111,7114,7072,6979,6815,6567,6302, 6070,5845,5510,4972,4250,3401,2475,1502,563,-205, -724,-1064,-1382,-1799,-2361,-3076,-3954,-4937,-5917,-6845, -7749,-8642,-9436,-10000,-10272,-10248,-9907,-9231,-8284,-7246, -6293,-5546,-5017,-4667,-4450,-4326,-4270,-4262,-4302,-4420, -4648,-4956,-5235,-5390,-5422,-5342,-5128,-4774,-4344,-3922, -3517,-3063,-2525,-1941,-1375,-859,-394,10,347,662, 1038,1534,2131,2764,3360,3871,4267,4533,4688,4734, 4642,4351,3787,2922,1773,417,-1043,-2500,-3808,-4843, -5551,-5989,-6262,-6406,-6392,-6220,-5946,-5614,-5199,-4651, -4009,-3370,-2793,-2225,-1599,-878,-82,768,1659,2532, 3285,3861,4315,4752,5253,5834,6514,7300,8111,8794, 9225,9385,9336,9133,8786,8312,7789,7324,6980,6730, 6542,6456,6532,6741,6952,7070,7099,7079,7004,6865, 6703,6585,6514,6405,6174,5774,5159,4311,3293,2266, 1400,751,259,-160,-568,-1020,-1565,-2227,-2994,-3848, -4754,-5701,-6708,-7781,-8838,-9717,-10282,-10487,-10339,-9839, -9049,-8138,-7292,-6584,-5975,-5443,-5004,-4675,-4437,-4280, -4243,-4363,-4618,-4919,-5189,-5379,-5470,-5455,-5332,-5125, -4877,-4589,-4228,-3766,-3204,-2597,-2005,-1482,-1058,-720, -420,-83,355,904,1507,2100,2675,3233,3749,4173, 4503,4795,5037,5080,4764,4055,3030,1798,415,-1026, -2388,-3536,-4440,-5147,-5695,-6082,-6301,-6368,-6295,-6060, -5660,-5167,-4657,-4176,-3700,-3167,-2543,-1833,-1037,-156, 785,1679,2400,2918,3335,3804,4385,5053,5789,6618, 7492,8286,8855,9172,9303,9276,9074,8698,8235,7771, 7337,6967,6700,6589,6625,6752,6895,7011,7072,7046, 6930,6783,6700,6751,6885,6956,6826,6444,5837,5051, 4136,3193,2356,1693,1156,665,182,-286,-777,-1327, -1959,-2652,-3433,-4365,-5494,-6756,-8004,-9086,-9893,-10350, -10422,-10141,-9601,-8931,-8228,-7533,-6856,-6211,-5627,-5114, -4697,-4410,-4309,-4392,-4595,-4833,-5048,-5229,-5353,-5399, -5384,-5347,-5287,-5127,-4791,-4282,-3700,-3141,-2628,-2156, -1737,-1400,-1107,-753,-275,297,862,1384,1896,2426, 2975,3535,4109,4675,5148,5404,5347,4935,4180,3110, 1819,446,-864,-2042,-3105,-4073,-4918,-5570,-5999,-6236, -6323,-6241,-5963,-5558,-5169,-4868,-4572,-4135,-3513,-2761, -1929,-1029,-108,722,1397,1945,2434,2925,3476,4139, 4924,5803,6701,7531,8234,8775,9135,9285,9215,8954, 8596,8194,7747,7286,6915,6742,6757,6857,6942,6969, 6935,6842,6718,6645,6713,6907,7120,7242,7182,6910, 6403,5693,4869,4054,3306,2625,1987,1384,828,339, -88,-498,-942,-1497,-2230,-3181,-4352,-5668,-7001,-8218, -9207,-9886,-10220,-10235,-10001,-9597,-9072,-8453,-7768,-7061, -6373,-5723,-5155,-4761,-4594,-4613,-4695,-4773,-4869,-5015, -5196,-5357,-5485,-5587,-5628,-5534,-5238,-4773,-4240,-3728, -3271,-2860,-2489,-2141,-1763,-1315,-819,-324,122,559, 1024,1537,2096,2713,3436,4246,4988,5461,5582,5395, 4935,4177,3122,1893,652,-531,-1697,-2850,-3917,-4814, -5481,-5908,-6099,-6111,-6021,-5888,-5741,-5565,-5316,-4937, -4394,-3684,-2840,-1926,-1033,-259,374,926,1473,2029, 2586,3193,3939,4847,5808,6704,7498,8194,8763,9133, 9260,9172,8908,8495,8001,7548,7237,7098,7062,7054, 7019,6950,6838,6695,6572,6567,6723,6992,7262,7428, 7429,7244,6868,6329,5691,5012,4310,3577,2830,2120, 1514,1037,663,354,48,-351,-979,-1909,-3088,-4390, -5709,-6993,-8156,-9068,-9646,-9944,-10080,-10056,-9791,-9262, -8571,-7818,-7074,-6365,-5764,-5319,-5043,-4875,-4768,-4712, -4719,-4811,-4987,-5230,-5494,-5722,-5820,-5716,-5417,-5029, -4645,-4269,-3861,-3447,-3075,-2739,-2334,-1828,-1286,-826, -470,-145,224,680,1242,1938,2769,3679,4546,5229, 5627,5713,5495,5005,4282,3369,2305,1112,-181,-1487, -2702,-3733,-4561,-5181,-5576,-5762,-5835,-5914,-6017,-6032, -5867,-5515,-5027,-4406,-3637,-2768,-1908,-1144,-489,79, 599,1118,1694,2368,3136,3966,4834,5732,6661,7578, 8374,8947,9243,9277,9095,8757,8352,7986,7743,7610, 7520,7406,7246,7039,6801,6596,6506,6586,6800,7050, 7270,7435,7528,7491,7286,6927,6474,5937,5262,4447, 3591,2843,2253,1787,1430,1174,968,678,151,-684, -1781,-3036,-4339,-5623,-6834,-7905,-8783,-9456,-9936,-10173, -10101,-9728,-9155,-8494,-7790,-7084,-6469,-5997,-5629,-5258, -4885,-4627,-4571,-4683,-4873,-5117,-5403,-5676,-5817,-5763, -5552,-5274,-4989,-4717,-4427,-4086,-3695,-3255,-2774,-2266, -1780,-1369,-1055,-797,-534,-189,317,1051,1976,2963, 3872,4637,5236,5621,5734,5571,5176,4575,3735,2623, 1293,-98,-1391,-2501,-3424,-4159,-4712,-5122,-5459,-5760, -6009,-6164,-6178,-6018,-5656,-5089,-4351,-3535,-2750,-2045, -1420,-827,-252,302,852,1444,2116,2869,3705,4640, 5679,6747,7700,8425,8882,9070,9010,8769,8483,8288, 8177,8065,7887,7672,7430,7139,6816,6561,6477,6570, 6747,6929,7103,7283,7452,7558,7536,7361,7050,6605, 5977,5169,4285,3474,2832,2369,2068,1895,1740,1462, 946,204,-702,-1758,-2964,-4264,-5540,-6725,-7829,-8842, -9665,-10152,-10254,-10050,-9676,-9203,-8649,-8042,-7432,-6868, -6345,-5822,-5323,-4930,-4734,-4757,-4943,-5211,-5493,-5712, -5812,-5784,-5689,-5570,-5420,-5218,-4980,-4720,-4389,-3925, -3342,-2763,-2305,-1994,-1775,-1577,-1355,-1058,-593,106, 1004,1982,2910,3748,4490,5108,5554,5780,5754,5424, 4761,3782,2589,1305,41,-1129,-2166,-3037,-3737,-4309, -4835,-5367,-5859,-6224,-6392,-6344,-6084,-5619,-5003,-4328, -3648,-2962,-2275,-1627,-1053,-539,-29,508,1077,1715, 2513,3522,4681,5846,6881,7706,8290,8624,8713,8651, 8558,8520,8512,8428,8219,7923,7611,7295,6977,6703, 6559,6561,6641,6742,6880,7082,7308,7498,7621,7675, 7585,7236,6593,5777,4941,4186,3536,3028,2695,2522, 2387,2128,1679,1074,367,-452,-1447,-2640,-3968,-5326, -6646,-7850,-8847,-9545,-9917,-10010,-9885,-9604,-9215,-8770, -8271,-7694,-7022,-6323,-5713,-5278,-5025,-4933,-4989,-5178, -5431,-5627,-5690,-5661,-5622,-5612,-5603,-5550,-5429,-5213, -4866,-4373,-3795,-3240,-2803,-2515,-2349,-2234,-2074,-1776, -1299,-658,96,912,1767,2656,3556,4403,5110,5616, 5889,5868,5496,4764,3762,2612,1402,218,-839,-1727, -2512,-3296,-4097,-4833,-5452,-5947,-6300,-6455,-6366,-6055, -5608,-5090,-4509,-3846,-3127,-2437,-1852,-1369,-936,-489, -4,576,1353,2386,3599,4807,5868,6740,7421,7900, 8189,8365,8518,8641,8676,8603,8449,8228,7923,7544, 7172,6894,6726,6626,6547,6507,6579,6797,7109,7425, 7680,7859,7886,7647,7095,6325,5525,4804,4206,3732, 3384,3124,2887,2620,2303,1923,1428,760,-111,-1180, -2439,-3856,-5328,-6688,-7803,-8634,-9217,-9619,-9837,-9860, -9701,-9396,-8977,-8419,-7714,-6951,-6258,-5731,-5389,-5210, -5184,-5260,-5363,-5428,-5454,-5475,-5531,-5624,-5724,-5790, -5767,-5584,-5210,-4676,-4105,-3616,-3269,-3027,-2846,-2690, -2519,-2272,-1901,-1412,-830,-142,671,1599,2572,3529, 4447,5263,5857,6103,5949,5444,4692,3782,2765,1701, 677,-249,-1120,-2023,-2972,-3873,-4639,-5262,-5774,-6140, -6285,-6200,-5949,-5587,-5091,-4433,-3692,-2995,-2427,-1989, -1634,-1318,-951,-397,419,1458,2592,3721,4791,5761, 6572,7195,7659,8042,8394,8681,8824,8798,8665,8482, 8255,7951,7607,7292,7043,6823,6606,6459,6462,6639, 6959,7366,7782,8080,8128,7900,7464,6906,6274,5611, 4988,4476,4088,3762,3449,3163,2932,2725,2437,1963, 1238,256,-942,-2287,-3703,-5081,-6316,-7336,-8154,-8807, -9318,-9656,-9795,-9717,-9404,-8874,-8183,-7440,-6754,-6183, -5754,-5485,-5378,-5365,-5340,-5254,-5183,-5220,-5370,-5575, -5765,-5895,-5898,-5708,-5339,-4893,-4463,-4061,-3696,-3386, -3179,-3041,-2905,-2694,-2389,-2013,-1590,-1082,-417,448, 1459,2526,3589,4604,5447,5954,6056,5827,5372,4743, 3952,3062,2145,1220,261,-736,-1738,-2686,-3559,-4355, -5049,-5598,-5973,-6169,-6174,-5951,-5474,-4814,-4117,-3527, -3076,-2706,-2376,-2064,-1718,-1227,-491,477,1559,2631, 3650,4620,5517,6298,6959,7534,8028,8406,8645,8752, 8762,8678,8509,8295,8059,7775,7407,6973,6582,6355, 6338,6506,6815,7230,7677,8014,8130,7994,7682,7279, 6808,6276,5691,5104,4573,4132,3797,3571,3448,3367, 3210,2874,2293,1460,398,-854,-2199,-3517,-4736,-5874, -6937,-7887,-8668,-9270,-9680,-9847,-9708,-9279,-8660,-7976, -7328,-6787,-6377,-6078,-5837,-5597,-5342,-5125,-5045,-5140, -5338,-5548,-5745,-5913,-5995,-5890,-5580,-5177,-4793,-4456, -4126,-3806,-3551,-3377,-3217,-3011,-2780,-2573,-2346,-2000, -1452,-687,278,1392,2583,3730,4692,5375,5755,5859, 5719,5350,4794,4131,3400,2557,1571,507,-508,-1428, -2321,-3246,-4161,-4961,-5582,-6002,-6188,-6092,-5719,-5159, -4560,-4039,-3633,-3331,-3083,-2829,-2476,-1965,-1295,-498, 409,1410,2442,3430,4347,5223,6069,6856,7501,7960, 8264,8484,8652,8757,8762,8652,8442,8125,7694,7170, 6675,6354,6276,6419,6715,7100,7506,7833,8002,8022, 7933,7728,7369,6867,6291,5699,5115,4584,4191,3998, 3961,3962,3871,3620,3164,2481,1571,476,-710,-1921, -3122,-4316,-5507,-6659,-7728,-8659,-9370,-9757,-9759,-9442, -8971,-8491,-8025,-7547,-7066,-6640,-6264,-5886,-5496,-5192, -5065,-5118,-5286,-5510,-5749,-5942,-6020,-5944,-5733,-5444, -5136,-4827,-4514,-4200,-3910,-3655,-3430,-3236,-3107,-3057, -2999,-2793,-2356,-1702,-839,234,1474,2714,3773,4570, 5152,5562,5768,5718,5417,4931,4320,3591,2757,1861, 935,-17,-1004,-2038,-3092,-4112,-5000,-5649,-5974,-5975, -5723,-5327,-4880,-4448,-4082,-3802,-3603,-3409,-3112,-2649, -2025,-1317,-565,259,1194,2223,3255,4233,5156,6010, 6734,7284,7704,8075,8421,8704,8889,8956,8845,8510, 7981,7402,6908,6564,6396,6416,6613,6926,7271,7560, 7786,7954,8054,8035,7818,7397,6840,6221,5596,5032, 4626,4431,4394,4397,4357,4219,3916,3366,2581,1658, 706,-269,-1351,-2601,-3967,-5338,-6624,-7752,-8643,-9208, -9420,-9368,-9160,-8875,-8528,-8132,-7706,-7257,-6774,-6260, -5766,-5396,-5202,-5183,-5288,-5479,-5706,-5898,-5973,-5919, -5796,-5662,-5502,-5263,-4937,-4585,-4265,-3981,-3708,-3487, -3398,-3453,-3541,-3486,-3188,-2635,-1852,-873,241,1382, 2465,3446,4295,4960,5400,5608,5592,5359,4916,4322, 3657,2964,2206,1319,281,-872,-2047,-3165,-4178,-5028, -5601,-5815,-5706,-5437,-5150,-4887,-4638,-4411,-4218,-4009, -3718,-3319,-2846,-2298,-1652,-889,-30,918,1950,3024, 4048,4921,5633,6242,6819,7389,7940,8419,8776,8961, 8915,8615,8118,7557,7056,6677,6433,6331,6391,6585, 6833,7099,7405,7744,8005,8064,7896,7570,7123,6546, 5876,5253,4835,4664,4661,4696,4661,4511,4228,3801, 3240,2586,1864,1045,42,-1184,-2575,-4023,-5436,-6736, -7814,-8575,-9023,-9259,-9355,-9321,-9138,-8845,-8498,-8076, -7536,-6905,-6319,-5896,-5668,-5571,-5568,-5665,-5837,-6011, -6101,-6108,-6069,-6029,-5949,-5790,-5532,-5169,-4742,-4323, -4009,-3864,-3875,-3975,-4073,-4079,-3934,-3574,-2962,-2116, -1118,-55,1024,2121,3180,4087,4734,5108,5278,5288, 5130,4807,4372,3874,3291,2539,1571,414,-845,-2120, -3300,-4269,-4951,-5335,-5480,-5459,-5333,-5160,-4987,-4826, -4662,-4451,-4174,-3864,-3545,-3178,-2676,-1988,-1147,-214, 789,1835,2841,3708,4446,5154,5900,6654,7367,8012, 8547,8879,8919,8682,8295,7881,7470,7056,6674,6412, 6331,6394,6547,6781,7111,7512,7893,8118,8107,7857, 7401,6810,6179,5646,5306,5149,5076,5000,4898,4761, 4556,4254,3898,3514,3047,2384,1462,310,-999,-2417, -3886,-5295,-6509,-7448,-8135,-8647,-9031,-9271,-9327,-9202, -8923,-8512,-7988,-7388,-6797,-6302,-5965,-5790,-5745,-5776, -5823,-5865,-5918,-6006,-6125,-6213,-6191,-6024,-5739,-5384, -4977,-4555,-4214,-4072,-4131,-4266,-4360,-4386,-4334,-4153, -3768,-3152,-2339,-1364,-264,893,2013,3006,3816,4431, 4835,5034,5074,5025,4925,4713,4308,3664,2785,1696, 445,-881,-2142,-3220,-4031,-4596,-4976,-5212,-5306,-5275, -5179,-5056,-4903,-4718,-4543,-4404,-4247,-3974,-3513,-2887, -2125,-1247,-282,698,1607,2407,3156,3968,4872,5805, 6667,7415,8046,8514,8748,8728,8522,8212,7836,7411, 6991,6641,6389,6235,6218,6407,6816,7328,7788,8066, 8119,7945,7554,7017,6463,6033,5751,5558,5369,5188, 5041,4913,4761,4580,4397,4207,3934,3459,2711,1680, 424,-961,-2378,-3738,-4991,-6102,-7059,-7852,-8479,-8936, -9220,-9336,-9244,-8919,-8400,-7813,-7291,-6860,-6484,-6162, -5946,-5841,-5798,-5780,-5816,-5951,-6155,-6326,-6364,-6229, -5946,-5566,-5154,-4775,-4487,-4312,-4246,-4275,-4388,-4534, -4624,-4576,-4349,-3939,-3341,-2531,-1496,-311,876,1927, 2806,3535,4118,4533,4817,5042,5223,5279,5092,4631, 3914,2953,1783,505,-739,-1842,-2778,-3575,-4235,-4714, -4974,-5057,-5052,-5005,-4914,-4792,-4703,-4697,-4694,-4549, -4158,-3558,-2838,-2060,-1247,-430,360,1135,1951,2847, 3804,4768,5714,6628,7437,8033,8378,8533,8563,8476, 8233,7837,7366,6890,6466,6150,6042,6209,6624,7147, 7608,7894,7968,7847,7563,7171,6745,6369,6080,5850, 5629,5389,5154,4950,4814,4767,4784,4771,4619,4249, 3647,2821,1769,514,-854,-2194,-3424,-4571,-5692,-6769, -7708,-8434,-8940,-9235,-9298,-9117,-8747,-8287,-7823,-7383, -6979,-6599,-6253,-5967,-5771,-5716,-5808,-6010,-6224,-6363, -6395,-6319,-6131,-5810,-5394,-4986,-4682,-4493,-4380,-4329, -4387,-4553,-4738,-4834,-4792,-4579,-4143,-3442,-2497,-1416, -317,731,1679,2497,3172,3743,4276,4801,5272,5569, 5585,5315,4805,4070,3099,1947,745,-384,-1421,-2391, -3266,-3953,-4387,-4591,-4647,-4635,-4626,-4677,-4785,-4901, -4915,-4764,-4453,-4008,-3437,-2753,-2006,-1287,-617,64, 847,1761,2771,3829,4866,5827,6677,7381,7922,8319, 8599,8739,8666,8335,7813,7241,6726,6352,6207,6336, 6691,7143,7561,7868,8006,7935,7701,7420,7178,6955, 6681,6334,5979,5679,5420,5195,5048,5033,5139,5260, 5262,5064,4624,3938,3038,1978,820,-382,-1613,-2861, -4107,-5330,-6473,-7466,-8237,-8715,-8905,-8885,-8754,-8548, -8240,-7817,-7329,-6857,-6445,-6094,-5826,-5697,-5738,-5911, -6112,-6256,-6322,-6305,-6180,-5918,-5558,-5186,-4861,-4591, -4372,-4255,-4304,-4494,-4723,-4908,-5019,-5008,-4759,-4193, -3350,-2384,-1420,-499,391,1249,2054,2805,3531,4266, 4947,5457,5714,5694,5418,4897,4151,3236,2218,1095, -110,-1304,-2318,-3056,-3556,-3898,-4137,-4292,-4415,-4574, -4786,-4995,-5096,-5026,-4782,-4408,-3936,-3385,-2798,-2223, -1670,-1059,-306,600,1611,2658,3698,4685,5586,6416, 7201,7908,8456,8755,8786,8568,8127,7521,6893,6431, 6259,6376,6674,7028,7353,7614,7777,7820,7749,7610, 7455,7276,7037,6706,6307,5900,5540,5276,5163,5207, 5354,5507,5574,5495,5223,4722,4008,3150,2222,1214, 71,-1228,-2608,-3956,-5199,-6307,-7249,-7967,-8433,-8688, -8803,-8784,-8609,-8269,-7817,-7331,-6855,-6404,-6045,-5863, -5870,-5984,-6111,-6233,-6350,-6417,-6347,-6123,-5803,-5468, -5123,-4766,-4438,-4239,-4240,-4423,-4699,-4988,-5225,-5309, -5147,-4713,-4067,-3291,-2454,-1597,-763,36,845,1723, 2664,3585,4385,5006,5443,5714,5797,5633,5176,4445, 3505,2413,1222,20,-1063,-1926,-2562,-3034,-3404,-3701, -3971,-4272,-4605,-4899,-5058,-5047,-4884,-4592,-4212,-3814, -3449,-3072,-2580,-1921,-1152,-332,541,1497,2502,3500, 4461,5413,6384,7331,8144,8681,8856,8685,8274,7741, 7200,6768,6532,6522,6677,6923,7185,7407,7552,7629, 7683,7727,7719,7601,7359,7024,6628,6189,5759,5430, 5307,5384,5561,5716,5780,5735,5579,5280,4832,4250, 3538,2660,1577,317,-1026,-2367,-3675,-4925,-6040,-6947, -7638,-8172,-8572,-8796,-8783,-8546,-8167,-7724,-7249,-6757, -6336,-6087,-6027,-6065,-6139,-6238,-6363,-6455,-6453,-6340, -6128,-5808,-5391,-4948,-4584,-4365,-4325,-4450,-4709,-5040, -5345,-5511,-5438,-5110,-4610,-4048,-3461,-2807,-2059,-1226, -354,554,1505,2460,3355,4157,4853,5429,5823,5950, 5774,5291,4518,3507,2355,1187,105,-825,-1574,-2146, -2593,-3007,-3471,-3979,-4438,-4751,-4900,-4927,-4882,-4762, -4564,-4309,-4045,-3753,-3354,-2782,-2068,-1289,-499,303, 1146,2059,3076,4208,5404,6552,7528,8229,8603,8639, 8377,7922,7430,7048,6826,6729,6718,6794,6958,7146, 7291,7399,7539,7732,7881,7874,7677,7331,6887,6398, 5948,5645,5532,5560,5643,5726,5792,5841,5835,5711, 5453,5094,4610,3914,2947,1767,503,-781,-2092,-3407, -4635,-5712,-6647,-7456,-8107,-8530,-8723,-8696,-8466,-8070, -7594,-7131,-6747,-6456,-6251,-6133,-6123,-6222,-6389,-6544, -6607,-6550,-6390,-6121,-5725,-5229,-4750,-4446,-4399,-4561, -4830,-5128,-5379,-5520,-5511,-5365,-5128,-4791,-4341,-3774, -3108,-2363,-1541,-656,261,1181,2114,3065,3996,4814, 5444,5845,5974,5785,5234,4355,3284,2204,1227,385, -373,-1075,-1722,-2331,-2935,-3534,-4058,-4440,-4665,-4769, -4802,-4786,-4751,-4698,-4579,-4320,-3893,-3359,-2790,-2203, -1570,-891,-171,637,1628,2850,4215,5533,6648,7479, 8015,8251,8188,7908,7548,7237,7019,6871,6774,6728, 6736,6796,6904,7101,7395,7702,7891,7877,7693,7398, 7015,6561,6124,5816,5666,5609,5583,5588,5638,5729, 5819,5861,5805,5617,5271,4742,3994,3033,1921,706, -563,-1857,-3126,-4339,-5498,-6579,-7490,-8139,-8503,-8648, -8622,-8425,-8059,-7599,-7167,-6829,-6576,-6382,-6282,-6320, -6481,-6688,-6860,-6923,-6811,-6483,-5990,-5459,-5020,-4742, -4641,-4708,-4895,-5130,-5344,-5497,-5583,-5610,-5559,-5376, -5026,-4546,-4005,-3402,-2702,-1886,-1013,-131,775,1763, 2839,3917,4871,5583,5967,5976,5620,4984,4173,3287, 2398,1562,787,56,-697,-1493,-2296,-2990,-3508,-3870, -4161,-4412,-4606,-4739,-4836,-4899,-4862,-4648,-4259,-3794, -3349,-2932,-2493,-1975,-1359,-596,386,1605,2978,4352, 5607,6658,7416,7811,7895,7806,7682,7557,7396,7180, 6949,6767,6669,6664,6759,6979,7303,7647,7891,7952, 7824,7571,7246,6887,6531,6212,5960,5770,5648,5613, 5661,5762,5880,5996,6090,6104,5937,5535,4922,4170, 3302,2293,1128,-141,-1454,-2766,-4048,-5259,-6341,-7237, -7894,-8282,-8419,-8360,-8173,-7890,-7535,-7131,-6727,-6416, -6282,-6341,-6533,-6771,-6976,-7066,-6948,-6598,-6114,-5647, -5281,-5017,-4835,-4769,-4839,-5014,-5227,-5414,-5553,-5643, -5681,-5638,-5470,-5150,-4696,-4155,-3568,-2952,-2292,-1551, -654,424,1618,2825,3953,4911,5573,5842,5713,5304, 4759,4145,3477,2743,1959,1145,299,-579,-1444,-2191, -2754,-3177,-3564,-3953,-4308,-4608,-4853,-5006,-4991,-4783, -4456,-4128,-3826,-3537,-3239,-2910,-2492,-1872,-963,239, 1634,3054,4353,5452,6317,6939,7331,7542,7623,7611, 7499,7279,6991,6707,6505,6443,6542,6789,7120,7424, 7627,7719,7716,7599,7349,7001,6652,6362,6104,5844, 5609,5478,5489,5600,5758,5930,6077,6154,6107,5915, 5557,5017,4319,3474,2493,1379,144,-1200,-2599,-3959, -5167,-6184,-7022,-7681,-8129,-8342,-8347,-8179,-7855,-7398, -6907,-6547,-6417,-6504,-6707,-6924,-7095,-7170,-7096,-6854, -6477,-6038,-5617,-5280,-5055,-4949,-4933,-4969,-5057,-5222, -5467,-5708,-5844,-5822,-5688,-5483,-5198,-4812,-4363,-3899, -3424,-2838,-2024,-949,309,1621,2877,3979,4813,5291, 5433,5353,5149,4823,4347,3742,3038,2228,1326,392, -455,-1153,-1740,-2280,-2817,-3336,-3801,-4215,-4563,-4801, -4864,-4731,-4471,-4207,-4008,-3886,-3801,-3667,-3387,-2852, -2008,-888,409,1774,3093,4280,5269,6056,6684,7198, 7574,7733,7662,7433,7160,6908,6689,6550,6558,6740, 7036,7337,7558,7685,7722,7677,7551,7337,7049,6717, 6376,6057,5811,5659,5588,5590,5685,5881,6115,6267, 6292,6203,6029,5735,5276,4643,3853,2895,1753,442, -960,-2333,-3596,-4752,-5823,-6779,-7538,-8027,-8218,-8133, -7833,-7426,-7037,-6744,-6582,-6565,-6700,-6937,-7155,-7238, -7141,-6911,-6617,-6305,-5966,-5584,-5226,-4991,-4906,-4915, -4962,-5098,-5349,-5636,-5815,-5839,-5751,-5602,-5398,-5159, -4934,-4725,-4444,-3964,-3213,-2206,-1004,315,1638,2826, 3759,4419,4864,5155,5299,5258,4985,4488,3836,3080, 2255,1395,573,-147,-783,-1389,-2013,-2644,-3265,-3854, -4345,-4644,-4703,-4593,-4437,-4310,-4235,-4218,-4261,-4297, -4173,-3749,-2990,-1990,-861,337,1577,2810,3960,4982, 5856,6581,7136,7472,7579,7475,7230,6932,6683,6554, 6570,6684,6849,7052,7279,7495,7638,7671,7606,7469, 7265,6971,6601,6210,5878,5653,5538,5516,5594,5761, 5963,6121,6204,6227,6220,6142,5921,5499,4851,3991, 2966,1837,628,-650,-2000,-3377,-4701,-5871,-6819,-7526, -7985,-8138,-7972,-7601,-7229,-6997,-6888,-6857,-6910,-7065, -7255,-7357,-7318,-7181,-6991,-6736,-6398,-6005,-5627,-5308, -5072,-4958,-5002,-5190,-5450,-5688,-5825,-5850,-5789,-5696, -5599,-5512,-5473,-5465,-5369,-5025,-4352,-3396,-2284,-1105, 98,1274,2341,3249,3998,4594,5006,5180,5128,4871, 4411,3759,2986,2218,1523,875,219,-480,-1214,-1970, -2733,-3444,-4022,-4368,-4463,-4395,-4304,-4285,-4361,-4509, -4675,-4775,-4716,-4435,-3917,-3165,-2212,-1123,28,1214, 2409,3597,4731,5720,6468,6939,7173,7227,7136,6932, 6699,6543,6510,6574,6686,6849,7065,7287,7458,7551, 7575,7523,7371,7109,6758,6357,5982,5705,5556,5515, 5542,5602,5674,5772,5927,6140,6327,6364,6210,5922, 5528,4954,4160,3196,2139,979,-339,-1799,-3286,-4666, -5853,-6787,-7423,-7723,-7729,-7555,-7334,-7149,-7021,-6971, -7016,-7139,-7280,-7374,-7410,-7392,-7311,-7126,-6801,-6362, -5908,-5519,-5236,-5071,-5065,-5224,-5474,-5676,-5733,-5671, -5565,-5500,-5517,-5644,-5827,-5956,-5918,-5649,-5141,-4413, -3482,-2406,-1263,-133,953,2001,3005,3907,4613,5055, 5222,5151,4865,4383,3779,3158,2581,2024,1420,705, -130,-1051,-1966,-2749,-3311,-3648,-3827,-3918,-3967,-4026, -4165,-4418,-4719,-4939,-4960,-4771,-4419,-3920,-3228,-2333, -1283,-126,1112,2398,3651,4766,5685,6376,6823,7050, 7095,7007,6862,6740,6679,6681,6725,6831,6997,7186, 7372,7567,7753,7823,7669,7329,6957,6648,6384,6108, 5838,5643,5557,5553,5600,5705,5890,6132,6361,6499, 6508,6379,6124,5733,5202,4527,3689,2651,1384,-70, -1610,-3107,-4457,-5595,-6445,-6952,-7151,-7169,-7126,-7066, -6990,-6915,-6907,-6980,-7101,-7223,-7331,-7403,-7399,-7266, -6972,-6538,-6030,-5556,-5218,-5082,-5132,-5280,-5419,-5460, -5410,-5323,-5262,-5257,-5340,-5530,-5793,-6034,-6129,-6005, -5655,-5106,-4393,-3543,-2568,-1506,-391,745,1894,2993, 3942,4633,5025,5120,4966,4660,4316,3990,3632,3153, 2519,1761,911,-22,-987,-1855,-2499,-2897,-3125,-3299, -3474,-3673,-3914,-4207,-4512,-4764,-4900,-4908,-4783,-4505, -4029,-3349,-2477,-1431,-224,1091,2413,3642,4715,5607, 6276,6676,6846,6891,6916,6928,6863,6728,6633,6688, 6893,7165,7416,7631,7789,7850,7786,7598,7337,7051, 6760,6455,6148,5872,5667,5551,5527,5621,5836,6100, 6324,6458,6532,6555,6496,6316,6019,5591,4987,4132, 2988,1591,53,-1513,-2981,-4256,-5286,-6035,-6517,-6783, -6911,-6942,-6914,-6875,-6864,-6893,-6964,-7100,-7322,-7559, -7665,-7538,-7187,-6715,-6231,-5804,-5497,-5343,-5329,-5386, -5428,-5387,-5255,-5103,-5016,-5048,-5198,-5454,-5754,-6019, -6175,-6194,-6051,-5714,-5176,-4502,-3753,-2893,-1837,-595, 721,1964,3025,3859,4441,4760,4863,4818,4715,4598, 4426,4108,3576,2831,1923,935,-29,-865,-1519,-1999, -2355,-2632,-2879,-3147,-3460,-3806,-4129,-4398,-4625,-4812, -4909,-4824,-4536,-4077,-3461,-2620,-1512,-189,1196,2500, 3638,4613,5437,6097,6563,6829,6941,6938,6850,6732, 6676,6746,6920,7145,7378,7606,7788,7882,7870,7781, 7655,7474,7208,6865,6495,6160,5901,5726,5647,5679, 5824,6029,6224,6361,6464,6561,6650,6700,6674,6513, 6128,5442,4458,3236,1823,290,-1260,-2674,-3844,-4766, -5495,-6059,-6445,-6630,-6641,-6566,-6523,-6583,-6759,-7017, -7312,-7565,-7674,-7578,-7278,-6848,-6395,-6006,-5752,-5639, -5604,-5553,-5453,-5321,-5188,-5047,-4918,-4878,-5009,-5318, -5675,-5949,-6095,-6157,-6154,-6064,-5840,-5465,-4924,-4165, -3158,-1948,-639,651,1822,2783,3484,3941,4255,4510, 4725,4854,4840,4647,4248,3620,2774,1798,852,43, -619,-1198,-1708,-2115,-2421,-2698,-3033,-3444,-3848,-4176, -4436,-4685,-4931,-5105,-5114,-4893,-4429,-3706,-2731,-1570, -330,915,2139,3312,4352,5186,5807,6254,6531,6629, 6582,6488,6467,6551,6700,6868,7045,7245,7443,7588, 7660,7685,7655,7534,7293,6961,6588,6217,5884,5650, 5546,5559,5640,5722,5805,5912,6070,6261,6452,6628, 6789,6869,6734,6263,5451,4372,3106,1728,304,-1100, -2436,-3649,-4674,-5447,-5962,-6251,-6377,-6398,-6395,-6473, -6700,-7069,-7468,-7738,-7803,-7683,-7452,-7151,-6796,-6450, -6196,-6074,-6026,-5935,-5759,-5511,-5253,-5041,-4920,-4932, -5083,-5315,-5558,-5779,-5978,-6152,-6277,-6343,-6350,-6263, -5972,-5361,-4423,-3264,-2016,-782,379,1398,2213,2835, 3368,3898,4413,4804,4969,4902,4635,4178,3514,2666, 1745,892,182,-410,-933,-1410,-1852,-2269,-2657,-3011, -3322,-3633,-4003,-4428,-4837,-5147,-5312,-5305,-5071,-4576, -3821,-2859,-1765,-571,692,1967,3165,4198,5020,5617, 6001,6205,6292,6337,6380,6450,6549,6685,6859,7052, 7233,7397,7554,7706,7779,7704,7458,7117,6757,6406, 6083,5818,5658,5596,5591,5603,5602,5608,5668,5835, 6132,6509,6860,7072,7062,6791,6261,5481,4468,3255, 1924,535,-876,-2279,-3570,-4588,-5240,-5590,-5776,-5920, -6069,-6263,-6560,-6958,-7365,-7658,-7790,-7748,-7554,-7255, -6962,-6761,-6656,-6561,-6412,-6194,-5941,-5669,-5391,-5144, -5000,-5007,-5123,-5267,-5385,-5497,-5665,-5901,-6169,-6431, -6654,-6779,-6686,-6252,-5452,-4392,-3243,-2119,-1055,-50, 866,1696,2464,3198,3881,4461,4882,5092,5038,4697, 4107,3387,2643,1922,1217,523,-131,-701,-1183,-1604, -1987,-2331,-2652,-3006,-3445,-3949,-4462,-4909,-5226,-5369, -5324,-5067,-4589,-3890,-2974,-1866,-604,711,1979,3113, 4083,4868,5426,5772,5987,6171,6355,6492,6566,6624, 6729,6898,7116,7351,7581,7768,7873,7867,7728,7461, 7109,6735,6419,6213,6088,5969,5789,5592,5459,5431, 5491,5653,5955,6392,6851,7175,7284,7199,6950,6497, 5797,4829,3623,2231,734,-753,-2095,-3192,-4016,-4582, -4938,-5160,-5381,-5717,-6181,-6684,-7107,-7380,-7505,-7504, -7389,-7199,-7013,-6904,-6871,-6811,-6627,-6329,-6010,-5725, -5463,-5223,-5067,-5039,-5092,-5126,-5100,-5084,-5177,-5432, -5835,-6308,-6729,-6982,-6973,-6670,-6097,-5315,-4380,-3350, -2298,-1315,-438,399,1288,2242,3176,3971,4553,4911, 5038,4923,4591,4108,3537,2895,2188,1450,752,124, -429,-892,-1257,-1569,-1918,-2362,-2870,-3389,-3893,-4386, -4840,-5191,-5381,-5371,-5147,-4699,-4019,-3087,-1926,-628, 676,1887,2953,3854,4576,5141,5575,5887,6089,6222, 6333,6449,6560,6677,6847,7118,7458,7753,7891,7860, 7726,7527,7269,6978,6712,6527,6382,6190,5921,5616, 5363,5228,5254,5456,5792,6170,6528,6851,7154,7380, 7431,7234,6760,6034,5046,3782,2283,716,-715,-1880, -2772,-3460,-3981,-4390,-4771,-5233,-5805,-6378,-6827,-7094, -7218,-7264,-7261,-7218,-7161,-7136,-7131,-7084,-6915,-6620, -6258,-5909,-5631,-5451,-5358,-5292,-5168,-4980,-4817,-4787, -4929,-5213,-5605,-6084,-6595,-7015,-7196,-7064,-6642,-6015, -5264,-4447,-3607,-2751,-1861,-913,100,1146,2172,3117, 3908,4476,4805,4921,4855,4622,4225,3670,2983,2233, 1523,898,360,-120,-525,-874,-1233,-1669,-2176,-2716, -3265,-3809,-4338,-4809,-5196,-5470,-5552,-5352,-4823,-4011, -3003,-1883,-687,553,1737,2759,3595,4295,4924,5442, 5788,5969,6071,6169,6290,6452,6686,6998,7331,7614, 7785,7810,7705,7516,7322,7177,7073,6945,6720,6388, 6010,5679,5441,5288,5216,5271,5476,5800,6149,6486, 6853,7256,7590,7713,7531,7031,6217,5080,3674,2157, 737,-450,-1400,-2184,-2858,-3456,-4035,-4652,-5300,-5901, -6375,-6700,-6899,-7003,-7054,-7122,-7247,-7387,-7429,-7310, -7046,-6738,-6466,-6246,-6060,-5884,-5715,-5546,-5342,-5086, -4828,-4676,-4694,-4914,-5321,-5879,-6480,-6962,-7214,-7214, -7003,-6615,-6087,-5474,-4828,-4127,-3306,-2330,-1248,-145, 912,1896,2790,3567,4179,4590,4785,4756,4522,4108, 3557,2912,2232,1577,1016,565,173,-236,-699,-1176, -1618,-2045,-2541,-3144,-3784,-4384,-4911,-5365,-5688,-5754, -5493,-4919,-4096,-3098,-2000,-868,258,1360,2405,3341, 4131,4760,5225,5528,5694,5786,5886,6079,6404,6808, 7171,7391,7487,7522,7532,7501,7426,7337,7253,7133, 6919,6589,6193,5829,5543,5331,5177,5117,5187,5367, 5623,5952,6393,6933,7462,7848,7969,7727,7076,6062, 4807,3462,2157,978,-43,-922,-1697,-2433,-3190,-4000, -4792,-5443,-5901,-6214,-6472,-6721,-6968,-7194,-7390,-7511, -7523,-7426,-7258,-7041,-6807,-6597,-6443,-6328,-6187,-5961, -5638,-5246,-4873,-4629,-4583,-4761,-5151,-5695,-6292,-6783, -7075,-7172,-7139,-7003,-6754,-6373,-5880,-5272,-4524,-3630, -2631,-1586,-518,561,1600,2519,3294,3953,4458,4713, 4649,4332,3898,3423,2910,2344,1759,1215,737,311, -97,-515,-937,-1371,-1841,-2387,-3030,-3746,-4471,-5122, -5608,-5848,-5803,-5494,-4945,-4172,-3222,-2184,-1132,-59, 1074,2226,3248,3995,4465,4771,5019,5258,5503,5786, 6141,6527,6850,7055,7167,7249,7330,7394,7421,7416, 7366,7256,7049,6748,6386,6031,5722,5464,5255,5087, 4968,4919,4994,5289,5820,6492,7158,7696,8019,8029, 7646,6858,5774,4573,3410,2356,1396,486,-423,-1367, -2332,-3237,-4012,-4642,-5171,-5632,-6031,-6370,-6692,-7017, -7322,-7529,-7585,-7502,-7344,-7179,-7044,-6934,-6837,-6747, -6610,-6362,-5956,-5460,-4995,-4674,-4567,-4707,-5058,-5518, -5971,-6373,-6735,-7039,-7210,-7218,-7115,-6954,-6696,-6256, -5607,-4809,-3933,-3007,-2014,-936,195,1305,2309,3140, 3780,4199,4390,4369,4162,3816,3367,2880,2381,1870, 1345,840,410,61,-249,-609,-1065,-1632,-2277,-3002, -3803,-4609,-5281,-5685,-5802,-5707,-5457,-5029,-4369,-3491, -2452,-1309,-102,1091,2150,2979,3568,4004,4378,4734, 5089,5462,5850,6200,6477,6694,6874,7031,7164,7287, 7417,7532,7551,7429,7197,6922,6655,6409,6149,5843, 5502,5167,4881,4691,4657,4846,5302,6002,6817,7574, 8082,8215,7947,7361,6590,5728,4815,3855,2873,1886, 899,-104,-1118,-2079,-2916,-3606,-4188,-4717,-5221,-5706, -6172,-6610,-6978,-7212,-7297,-7267,-7169,-7050,-6974,-6987, -7066,-7076,-6899,-6524,-6040,-5549,-5098,-4725,-4503,-4511, -4745,-5107,-5480,-5818,-6151,-6500,-6833,-7071,-7172,-7136, -6967,-6670,-6237,-5693,-5027,-4209,-3236,-2157,-1040,84, 1206,2253,3106,3692,4045,4247,4325,4230,3931,3498, 3037,2581,2087,1558,1077,730,484,230,-142,-673, -1354,-2142,-2981,-3784,-4475,-5012,-5396,-5630,-5697,-5548, -5137,-4438,-3485,-2356,-1158,-12,1014,1897,2635,3248, 3756,4208,4651,5115,5562,5923,6167,6346,6541,6777, 7021,7242,7419,7523,7531,7454,7322,7158,6972,6757, 6510,6220,5871,5432,4933,4489,4277,4414,4888,5591, 6388,7140,7713,7990,7946,7644,7182,6599,5894,5086, 4205,3236,2176,1077,32,-906,-1764,-2550,-3247,-3856, -4434,-5043,-5695,-6295,-6732,-6952,-7008,-7012,-7025,-7058, -7112,-7214,-7339,-7389,-7258,-6914,-6422,-5881,-5381,-5003, -4779,-4696,-4729,-4868,-5107,-5439,-5834,-6231,-6575,-6852, -7068,-7217,-7230,-7074,-6800,-6463,-6028,-5398,-4536,-3497, -2383,-1250,-111,1006,2015,2827,3423,3851,4140,4266, 4196,3937,3529,3029,2511,2045,1687,1431,1215,954, 578,64,-577,-1314,-2089,-2851,-3573,-4256,-4893,-5436, -5790,-5873,-5658,-5160,-4398,-3397,-2260,-1125,-111,763, 1544,2275,2957,3592,4176,4688,5108,5444,5737,6028, 6318,6590,6839,7089,7325,7493,7529,7448,7331,7261, 7237,7192,7056,6773,6309,5693,5034,4493,4198,4218, 4563,5169,5920,6655,7236,7601,7767,7762,7585,7238, 6727,6091,5345,4463,3422,2290,1201,250,-560,-1304, -2047,-2818,-3599,-4364,-5087,-5724,-6214,-6508,-6633,-6682, -6747,-6879,-7101,-7374,-7593,-7627,-7443,-7123,-6756,-6343, -5859,-5384,-5042,-4874,-4810,-4799,-4879,-5116,-5498,-5917, -6276,-6567,-6829,-7071,-7250,-7319,-7274,-7118,-6831,-6365, -5697,-4837,-3821,-2692,-1523,-395,642,1575,2407,3117, 3662,4002,4108,3986,3673,3244,2792,2408,2143,1961, 1756,1458,1061,600,84,-510,-1199,-1944,-2710,-3490, -4273,-5016,-5619,-5987,-6049,-5772,-5171,-4326,-3383,-2447, -1538,-615,312,1177,1953,2661,3331,3935,4427,4809, 5121,5419,5761,6149,6537,6861,7070,7153,7142,7124, 7168,7278,7388,7442,7383,7125,6603,5870,5110,4502, 4143,4056,4231,4655,5259,5940,6559,7012,7294,7464, 7547,7507,7281,6833,6170,5324,4340,3310,2330,1434, 604,-185,-967,-1785,-2676,-3630,-4541,-5248,-5685,-5943, -6147,-6370,-6593,-6817,-7093,-7411,-7682,-7784,-7685,-7459, -7161,-6807,-6377,-5916,-5486,-5143,-4920,-4829,-4871,-5035, -5284,-5581,-5903,-6235,-6558,-6837,-7060,-7254,-7425,-7515, -7430,-7117,-6584,-5865,-4988,-3982,-2904,-1830,-780,258, 1296,2273,3077,3601,3836,3836,3675,3414,3121,2860, 2644,2447,2233,1996,1701,1310,829,304,-218,-795, -1526,-2437,-3428,-4352,-5105,-5631,-5894,-5860,-5545,-4990, -4270,-3449,-2579,-1697,-812,79,984,1864,2639,3244, 3702,4109,4533,4990,5452,5897,6314,6662,6870,6922, 6903,6940,7126,7412,7672,7809,7780,7551,7086,6402, 5624,4917,4423,4193,4249,4549,4992,5459,5909,6374, 6858,7288,7580,7705,7664,7438,6978,6243,5314,4366, 3525,2779,2028,1206,312,-636,-1626,-2620,-3540,-4289, -4816,-5168,-5446,-5745,-6089,-6449,-6791,-7108,-7376,-7554, -7619,-7567,-7379,-7059,-6632,-6173,-5739,-5344,-5003,-4779, -4710,-4789,-4946,-5145,-5388,-5659,-5939,-6221,-6527,-6865, -7210,-7471,-7543,-7384,-7015,-6486,-5834,-5077,-4219,-3247, -2144,-929,295,1394,2295,2988,3464,3699,3693,3549, 3403,3298,3195,3020,2763,2475,2201,1943,1671,1347, 915,329,-419,-1313,-2294,-3289,-4211,-4955,-5430,-5601, -5495,-5193,-4757,-4201,-3495,-2644,-1704,-754,175,1071, 1891,2554,3063,3528,4063,4684,5302,5829,6236,6513, 6657,6716,6787,6946,7200,7537,7899,8209,8333,8155, 7662,6970,6246,5601,5073,4699,4538,4610,4860,5191, 5550,5962,6470,7048,7590,7960,8067,7908,7522,6950, 6254,5524,4833,4171,3469,2654,1726,704,-371,-1422, -2343,-3089,-3697,-4223,-4682,-5072,-5424,-5796,-6210,-6617, -6955,-7208,-7386,-7470,-7414,-7194,-6848,-6428,-5970,-5507, -5103,-4823,-4695,-4684,-4737,-4817,-4918,-5055,-5270,-5596, -6032,-6507,-6933,-7222,-7348,-7339,-7224,-6988,-6587,-6008, -5282,-4422,-3398,-2192,-896,331,1368,2177,2761,3147, 3389,3550,3635,3613,3470,3250,3033,2847,2674,2485, 2289,2077,1800,1350,657,-248,-1248,-2240,-3176,-4018, -4682,-5095,-5264,-5258,-5122,-4821,-4291,-3518,-2578,-1579, -613,238,946,1558,2171,2839,3529,4195,4825,5414, 5903,6209,6313,6327,6404,6651,7050,7511,7949,8301, 8490,8428,8054,7442,6746,6100,5570,5158,4863,4691, 4650,4744,4995,5417,5988,6631,7236,7704,7947,7921, 7655,7239,6777,6322,5853,5296,4604,3780,2869,1879, 840,-204,-1159,-1975,-2675,-3304,-3852,-4317,-4741,-5181, -5631,-6060,-6456,-6829,-7147,-7363,-7431,-7332,-7081,-6695, -6215,-5736,-5360,-5117,-4965,-4821,-4660,-4542,-4532,-4649, -4877,-5203,-5607,-6062,-6501,-6867,-7107,-7229,-7263,-7229, -7105,-6832,-6341,-5580,-4552,-3346,-2121,-983,57,1017, 1848,2481,2920,3237,3487,3613,3566,3387,3187,3038, 2937,2864,2804,2724,2551,2197,1601,787,-159,-1156, -2116,-2967,-3685,-4296,-4832,-5230,-5375,-5197,-4742,-4104, -3335,-2476,-1581,-737,-12,594,1191,1902,2744,3606, 4362,4967,5422,5723,5869,5932,6041,6288,6702,7230, 7779,8219,8443,8402,8130,7700,7189,6648,6113,5607, 5163,4793,4501,4353,4461,4877,5510,6191,6795,7274, 7579,7688,7610,7428,7198,6918,6564,6113,5541,4830, 3967,2987,1957,952,6,-874,-1679,-2387,-2999,-3556, -4090,-4598,-5053,-5484,-5948,-6459,-6952,-7326,-7495,-7443, -7223,-6918,-6588,-6260,-5951,-5664,-5389,-5116,-4865,-4672, -4560,-4543,-4671,-4987,-5435,-5891,-6251,-6527,-6808,-7127, -7434,-7647,-7711,-7602,-7277,-6687,-5823,-4773,-3647,-2534, -1460,-441,487,1302,1994,2549,2937,3135,3174,3109, 2986,2859,2784,2805,2912,2996,2916,2574,1997,1296, 546,-257,-1144,-2068,-2960,-3771,-4502,-5113,-5509,-5586, -5331,-4812,-4139,-3416,-2697,-2017,-1374,-722,-10,793, 1677,2590,3455,4182,4687,4944,5046,5150,5362,5707, 6169,6728,7314,7798,8063,8088,7956,7733,7439,7047, 6552,5973,5348,4747,4261,4003,4044,4376,4900,5500, 6083,6576,6924,7125,7217,7252,7231,7121,6905,6585, 6156,5569,4800,3884,2906,1944,1022,120,-774,-1621, -2355,-2955,-3458,-3932,-4436,-4993,-5615,-6247,-6787,-7172, -7408,-7510,-7465,-7274,-6994,-6721,-6505,-6282,-5960,-5534, -5111,-4804,-4652,-4634,-4729,-4927,-5210,-5513,-5816,-6128, -6488,-6904,-7333,-7717,-7990,-8080,-7910,-7468,-6806,-5989, -5051,-4010,-2909,-1834,-835,93,979,1786,2394,2712, 2762,2702,2677,2737,2844,2955,3062,3143,3136,2963, 2589,2050,1428,751,-7,-883,-1857,-2860,-3809,-4604, -5141,-5377,-5339,-5071,-4603,-4013,-3424,-2903,-2397,-1789, -1030,-137,826,1805,2729,3487,4001,4291,4458,4637, 4921,5336,5857,6443,7000,7435,7724,7907,8021,8042, 7917,7621,7159,6556,5848,5121,4519,4157,4084,4261, 4615,5074,5572,6049,6447,6729,6929,7094,7244,7336, 7309,7132,6781,6266,5629,4915,4131,3239,2237,1202, 244,-569,-1254,-1875,-2476,-3057,-3625,-4223,-4901,-5626, -6280,-6750,-7021,-7157,-7223,-7240,-7209,-7110,-6924,-6635, -6248,-5807,-5378,-5028,-4801,-4697,-4716,-4822,-4963,-5095, -5267,-5559,-5990,-6484,-6960,-7410,-7829,-8142,-8224,-8006, -7521,-6874,-6144,-5330,-4387,-3308,-2156,-1032,-16,834, 1482,1917,2163,2299,2395,2507,2683,2916,3138,3256, 3236,3118,2942,2683,2288,1721,1008,168,-794,-1868, -2970,-3937,-4634,-5030,-5167,-5077,-4817,-4475,-4131,-3796, -3388,-2827,-2084,-1174,-135,948,1926,2668,3157,3486, 3768,4086,4463,4912,5415,5937,6423,6843,7212,7562, 7895,8136,8187,8000,7594,7008,6305,5554,4881,4395, 4157,4165,4372,4715,5107,5471,5791,6119,6495,6871, 7139,7252,7255,7215,7106,6849,6399,5782,5048,4212, 3279,2277,1300,438,-274,-882,-1459,-2072,-2756,-3519, -4313,-5042,-5646,-6123,-6515,-6831,-7069,-7238,-7353,-7390, -7284,-6992,-6567,-6124,-5746,-5452,-5206,-4987,-4830,-4783, -4823,-4876,-4942,-5104,-5445,-5956,-6555,-7140,-7638,-7982, -8149,-8146,-7990,-7687,-7199,-6511,-5641,-4623,-3494,-2309, -1170,-214,492,980,1347,1655,1929,2183,2446,2710, 2935,3083,3154,3177,3161,3080,2897,2559,2015,1238, 249,-871,-2001,-3018,-3834,-4395,-4686,-4760,-4723,-4669, -4611,-4500,-4237,-3736,-2974,-2016,-968,63,985,1713, 2241,2665,3100,3570,4029,4471,4912,5354,5790,6241, 6734,7259,7737,8093,8284,8284,8053,7548,6811,6007, 5329,4868,4588,4417,4348,4421,4638,4959,5332,5716, 6089,6438,6751,7003,7179,7275,7293,7211,6991,6595, 5988,5166,4211,3252,2382,1618,930,280,-367,-1057, -1813,-2634,-3460,-4195,-4775,-5249,-5719,-6217,-6676,-7011, -7213,-7300,-7270,-7099,-6795,-6410,-6015,-5672,-5416,-5234, -5069,-4873,-4653,-4493,-4485,-4657,-4983,-5422,-5948,-6527, -7070,-7492,-7776,-7973,-8105,-8109,-7892,-7404,-6649,-5677, -4557,-3391,-2285,-1318,-518,129,652,1093,1498,1893, 2260,2558,2764,2916,3060,3226,3383,3489,3502,3379, 3034,2378,1423,286,-868,-1904,-2745,-3355,-3765,-4054, -4304,-4554,-4764,-4842,-4690,-4258,-3565,-2676,-1697,-742, 98,807,1451,2075,2661,3170,3619,4048,4499,4940, 5344,5744,6235,6867,7549,8127,8471,8543,8359,7960, 7409,6782,6151,5575,5095,4743,4538,4479,4552,4733, 5013,5377,5779,6134,6404,6645,6924,7241,7500,7596, 7502,7220,6730,6013,5136,4251,3483,2829,2204,1533, 787,-12,-821,-1613,-2362,-3074,-3750,-4376,-4946,-5479, -5999,-6504,-6930,-7178,-7198,-7037,-6794,-6549,-6306,-6050, -5782,-5520,-5253,-4943,-4610,-4338,-4232,-4331,-4592,-4963, -5400,-5867,-6343,-6806,-7262,-7705,-8089,-8318,-8315,-8033, -7468,-6636,-5619,-4531,-3486,-2548,-1715,-961,-274,338, 873,1341,1757,2103,2345,2507,2682,2942,3271,3593, 3827,3899,3700,3150,2275,1216,139,-829,-1633,-2266, -2785,-3285,-3828,-4387,-4838,-5052,-4969,-4631,-4115,-3447, -2639,-1746,-887,-127,553,1216,1890,2543,3108,3539, 3856,4152,4535,5059,5701,6402,7093,7705,8168,8428, 8434,8180,7736,7221,6702,6161,5590,5053,4664,4483, 4486,4592,4767,4999,5284,5571,5842,6136,6503,6940, 7366,7670,7734,7513,7052,6453,5826,5199,4549,3865, 3173,2495,1789,1007,152,-700,-1469,-2138,-2772,-3427, -4109,-4803,-5466,-6064,-6542,-6853,-6981,-6958,-6857,-6732, -6597,-6438,-6235,-5957,-5596,-5175,-4776,-4477,-4319,-4305, -4411,-4619,-4911,-5272,-5680,-6144,-6685,-7294,-7881,-8319, -8504,-8420,-8061,-7439,-6601,-5657,-4705,-3796,-2937,-2119, -1335,-590,103,705,1173,1492,1695,1878,2132,2508, 2971,3455,3886,4130,4043,3556,2769,1877,1035,272, -456,-1180,-1890,-2581,-3262,-3930,-4527,-4948,-5100,-4960, -4579,-4036,-3404,-2739,-2052,-1307,-476,375,1138,1770, 2292,2743,3121,3456,3824,4320,4990,5765,6526,7180, 7699,8070,8263,8247,8027,7652,7170,6610,6015,5458, 5015,4724,4603,4631,4734,4819,4865,4945,5177,5595, 6116,6621,7044,7369,7536,7492,7216,6782,6280,5777, 5274,4724,4098,3388,2608,1790,973,202,-512,-1187, -1863,-2571,-3317,-4092,-4861,-5547,-6072,-6412,-6604,-6726, -6822,-6877,-6853,-6757,-6586,-6316,-5938,-5494,-5082,-4778, -4578,-4449,-4380,-4387,-4480,-4675,-4993,-5442,-6030,-6708, -7384,-7947,-8311,-8431,-8288,-7880,-7258,-6534,-5788,-5005, -4156,-3268,-2396,-1558,-764,-59,460,758,894,1043, 1371,1921,2593,3230,3711,3959,3935,3640,3142,2525, 1841,1141,466,-188,-884,-1696,-2599,-3483,-4200,-4678, -4929,-5013,-4943,-4689,-4257,-3707,-3091,-2378,-1539,-632, 211,896,1428,1862,2236,2604,3032,3575,4222,4939, 5690,6430,7076,7576,7915,8119,8162,7976,7538,6934, 6313,5805,5438,5173,4959,4773,4629,4531,4485,4522, 4698,5054,5555,6102,6597,6965,7159,7171,7034,6809, 6527,6199,5801,5322,4745,4071,3308,2499,1716,1014, 369,-287,-1030,-1845,-2677,-3495,-4277,-4975,-5532,-5947, -6270,-6550,-6804,-7008,-7122,-7120,-6986,-6730,-6381,-6009, -5668,-5380,-5113,-4849,-4614,-4443,-4359,-4371,-4533,-4898, -5479,-6188,-6894,-7493,-7940,-8215,-8276,-8094,-7710,-7233, -6713,-6117,-5379,-4474,-3460,-2447,-1571,-927,-521,-263, -26,302,764,1350,2013,2685,3274,3643,3706,3504, 3176,2829,2461,2005,1415,709,-76,-930,-1838,-2727, -3500,-4102,-4535,-4826,-4990,-5025,-4898,-4563,-3995,-3254, -2430,-1598,-795,-62,546,1013,1394,1789,2282,2884, 3534,4183,4836,5540,6305,7055,7671,8057,8178,8051, 7732,7292,6820,6394,6039,5730,5430,5125,4826,4536, 4313,4247,4401,4735,5167,5645,6116,6506,6738,6804, 6788,6753,6700,6565,6294,5874,5328,4679,3967,3248, 2583,1971,1350,661,-103,-929,-1803,-2674,-3474,-4143, -4703,-5204,-5685,-6149,-6548,-6844,-7018,-7090,-7068,-6914, -6643,-6333,-6070,-5848,-5584,-5232,-4848,-4507,-4260,-4138, -4181,-4428,-4897,-5539,-6258,-6918,-7414,-7704,-7826,-7866, -7873,-7802,-7539,-6986,-6171,-5219,-4244,-3291,-2424,-1742, -1309,-1054,-803,-415,150,846,1583,2267,2817,3192, 3393,3444,3383,3243,3044,2752,2306,1674,870,-15, -890,-1698,-2450,-3166,-3823,-4369,-4770,-5010,-5089,-4961, -4576,-3935,-3136,-2329,-1613,-986,-394,181,726,1236, 1737,2239,2753,3333,4037,4870,5756,6593,7309,7842, 8127,8128,7924,7627,7336,7065,6794,6485,6135,5746, 5315,4874,4521,4361,4433,4698,5077,5493,5879,6186, 6404,6563,6704,6836,6924,6897,6719,6383,5905,5325, 4691,4090,3558,3048,2458,1735,920,82,-748,-1588, -2400,-3131,-3753,-4317,-4896,-5486,-6013,-6408,-6652,-6775, -6802,-6756,-6658,-6518,-6339,-6119,-5843,-5514,-5116,-4655, -4176,-3804,-3702,-3937,-4417,-4965,-5468,-5928,-6379,-6807, -7183,-7496,-7741,-7870,-7789,-7427,-6764,-5859,-4845,-3889, -3117,-2564,-2165,-1816,-1432,-954,-363,343,1096,1790, 2331,2718,3008,3263,3477,3587,3532,3316,2958,2474, 1839,1067,241,-553,-1299,-2041,-2803,-3553,-4219,-4729, -4997,-4975,-4697,-4247,-3703,-3092,-2424,-1729,-1063,-455, 107,632,1103,1523,1958,2507,3237,4122,5072,5989, 6789,7399,7771,7911,7888,7778,7659,7529,7356,7102, 6735,6260,5715,5185,4790,4599,4601,4747,4980,5258, 5535,5774,5979,6191,6465,6772,7001,7053,6917,6651, 6287,5846,5364,4887,4423,3935,3369,2683,1888,1036, 195,-599,-1345,-2050,-2746,-3455,-4160,-4804,-5351,-5824, -6228,-6516,-6639,-6627,-6587,-6614,-6664,-6625,-6400,-5980, -5431,-4849,-4333,-3977,-3836,-3916,-4166,-4522,-4908,-5274, -5619,-6014,-6512,-7085,-7608,-7943,-7996,-7736,-7186,-6418, -5539,-4682,-3975,-3476,-3115,-2725,-2215,-1605,-969,-333, 314,946,1519,2011,2448,2849,3205,3482,3636,3610, 3365,2924,2366,1781,1193,545,-219,-1092,-1999,-2860, -3631,-4273,-4722,-4927,-4893,-4688,-4367,-3914,-3323,-2624, -1899,-1226,-644,-153,258,631,1050,1599,2333,3224, 4194,5149,5996,6662,7110,7365,7516,7642,7755,7792, 7701,7475,7117,6641,6067,5495,5061,4836,4778,4796, 4836,4911,5047,5241,5485,5776,6118,6464,6731,6862, 6837,6675,6405,6079,5751,5444,5093,4614,4000,3313, 2623,1916,1148,331,-460,-1183,-1877,-2601,-3376,-4154, -4846,-5383,-5751,-5995,-6194,-6404,-6623,-6828,-6964,-6977, -6804,-6418,-5857,-5226,-4672,-4301,-4142,-4131,-4177,-4253, -4390,-4615,-4928,-5329,-5869,-6552,-7270,-7795,-7966,-7773, -7323,-6731,-6084,-5450,-4886,-4397,-3936,-3455,-2930,-2352, -1724,-1065,-433,127,638,1173,1770,2374,2882,3249, 3463,3524,3424,3195,2877,2502,2044,1457,724,-125, -1036,-1946,-2784,-3505,-4083,-4513,-4778,-4869,-4758,-4437, -3914,-3255,-2565,-1930,-1374,-895,-511,-195,175,740, 1535,2464,3419,4343,5197,5907,6436,6826,7168,7518, 7837,8043,8077,7909,7552,7067,6547,6079,5699,5402, 5189,5047,4969,4937,4940,5001,5184,5522,5941,6312, 6533,6626,6658,6655,6585,6425,6191,5920,5619,5249, 4775,4175,3476,2739,2028,1368,700,-37,-863,-1728, -2569,-3344,-4024,-4578,-4986,-5288,-5568,-5923,-6355,-6764, -7027,-7076,-6910,-6563,-6079,-5548,-5058,-4699,-4476,-4328, -4190,-4036,-3914,-3908,-4106,-4554,-5224,-5992,-6691,-7208, -7490,-7525,-7305,-6884,-6376,-5901,-5481,-5064,-4591,-4048, -3467,-2882,-2319,-1779,-1248,-708,-127,504,1168,1825, 2404,2833,3109,3270,3345,3341,3253,3071,2752,2247, 1564,782,-24,-849,-1702,-2549,-3310,-3933,-4423,-4775, -4908,-4744,-4299,-3697,-3063,-2481,-1990,-1603,-1306,-1014, -612,-23,752,1661,2610,3506,4298,4970,5568,6152, 6750,7309,7750,8024,8136,8074,7832,7425,6965,6575, 6291,6031,5732,5396,5089,4887,4830,4914,5104,5352, 5630,5918,6191,6410,6529,6537,6477,6433,6408,6323, 6087,5696,5219,4707,4158,3570,2960,2356,1725,986, 95,-881,-1796,-2562,-3172,-3666,-4088,-4492,-4938,-5461, -6017,-6522,-6874,-7011,-6915,-6620,-6222,-5844,-5554,-5319, -5051,-4694,-4290,-3924,-3660,-3547,-3650,-4014,-4620,-5356, -6058,-6602,-6944,-7088,-7058,-6895,-6652,-6365,-6031,-5622, -5122,-4570,-4016,-3498,-3012,-2539,-2057,-1527,-904,-192, 535,1182,1710,2168,2594,2969,3232,3377,3432,3394, 3201,2807,2247,1596,899,150,-651,-1496,-2365,-3222, -3986,-4554,-4844,-4822,-4535,-4070,-3527,-3013,-2610,-2347, -2149,-1862,-1373,-699,68,873,1699,2527,3304,4006, 4684,5395,6159,6910,7543,7964,8136,8095,7937,7730, 7506,7247,6926,6567,6199,5845,5511,5212,4993,4921, 5026,5263,5544,5777,5958,6118,6266,6383,6466,6547, 6618,6602,6419,6076,5651,5205,4763,4332,3895,3370, 2688,1849,927,-11,-905,-1701,-2339,-2818,-3217,-3671, -4266,-4978,-5677,-6233,-6570,-6713,-6708,-6599,-6424,-6236, -6058,-5850,-5544,-5106,-4581,-4053,-3609,-3350,-3352,-3641, -4151,-4757,-5344,-5849,-6254,-6549,-6719,-6774,-6739,-6626, -6383,-5974,-5456,-4946,-4509,-4116,-3712,-3257,-2755,-2198, -1568,-890,-213,400,945,1455,1961,2448,2869,3191, 3397,3446,3319,3044,2692,2288,1788,1153,402,-437, -1367,-2372,-3357,-4147,-4599,-4686,-4505,-4191,-3852,-3531, -3252,-3008,-2775,-2477,-2035,-1420,-668,111,837,1500, 2156,2885,3724,4641,5541,6321,6947,7434,7779,7949, 7944,7843,7727,7600,7392,7076,6681,6255,5836,5458, 5185,5071,5108,5234,5382,5515,5633,5746,5898,6117, 6379,6604,6703,6636,6441,6175,5883,5586,5284,4982, 4647,4214,3576,2711,1713,748,-72,-734,-1292,-1802, -2335,-2956,-3684,-4461,-5175,-5737,-6124,-6359,-6472,-6503, -6512,-6554,-6583,-6479,-6151,-5634,-5024,-4411,-3867,-3493, -3388,-3571,-3938,-4351,-4746,-5153,-5600,-6048,-6428,-6686, -6802,-6757,-6555,-6235,-5859,-5478,-5108,-4748,-4384,-3986, -3508,-2936,-2300,-1673,-1089,-538,30,624,1226,1798, 2305,2727,3046,3211,3213,3090,2906,2709,2445,2012, 1342,446,-592,-1682,-2713,-3573,-4172,-4472,-4505,-4357, -4146,-3979,-3887,-3809,-3614,-3228,-2689,-2108,-1548,-983, -371,296,988,1727,2574,3521,4488,5369,6113,6702, 7138,7425,7610,7720,7767,7729,7584,7325,6951,6494, 6018,5612,5350,5233,5200,5168,5124,5112,5175,5325, 5532,5787,6072,6329,6475,6450,6269,6026,5824,5696, 5602,5477,5211,4734,4018,3146,2250,1425,712,106, -437,-975,-1594,-2337,-3166,-3982,-4678,-5216,-5622,-5943, -6198,-6402,-6611,-6837,-7006,-6985,-6696,-6195,-5574,-4951, -4417,-4034,-3832,-3771,-3824,-4003,-4308,-4719,-5185,-5655, -6097,-6463,-6692,-6746,-6622,-6389,-6136,-5907,-5677,-5382, -5006,-4580,-4129,-3641,-3101,-2533,-1984,-1463,-919,-315, 364,1057,1685,2169,2477,2657,2783,2906,2998,3005, 2883,2599,2097,1326,296,-862,-1962,-2831,-3428,-3804, -4050,-4211,-4303,-4346,-4344,-4270,-4077,-3755,-3327,-2847, -2352,-1862,-1357,-799,-148,625,1515,2470,3431,4342, 5162,5851,6386,6799,7155,7491,7762,7872,7774,7520, 7188,6822,6438,6068,5768,5556,5397,5250,5102,4991, 4963,5055,5289,5620,5954,6173,6218,6119,5989,5913, 5901,5920,5926,5874,5673,5223,4522,3704,2915,2219, 1585,990,417,-183,-871,-1677,-2534,-3334,-3998,-4529, -4943,-5296,-5666,-6099,-6557,-6947,-7158,-7153,-6950,-6586, -6102,-5560,-5024,-4568,-4220,-3976,-3825,-3797,-3940,-4275, -4747,-5247,-5686,-6035,-6281,-6428,-6462,-6409,-6302,-6158, -5966,-5722,-5413,-5027,-4559,-4079,-3655,-3289,-2879,-2339, -1674,-966,-287,356,971,1507,1914,2175,2377,2619, 2935,3233,3377,3242,2778,2021,1067,51,-912,-1748, -2438,-2993,-3435,-3801,-4110,-4348,-4475,-4452,-4287,-4020, -3705,-3355,-2967,-2551,-2127,-1677,-1123,-378,541,1526, 2468,3337,4152,4905,5582,6193,6756,7249,7600,7780, 7800,7690,7474,7178,6862,6595,6374,6134,5810,5435, 5116,4951,4947,5068,5298,5590,5845,5968,5950,5874, 5836,5885,6022,6192,6301,6268,6048,5638,5064,4391, 3706,3075,2510,1980,1423,766,-20,-889,-1731,-2444, -3027,-3536,-4036,-4547,-5065,-5604,-6157,-6654,-6982,-7088, -7001,-6795,-6504,-6115,-5642,-5114,-4599,-4166,-3873,-3759, -3821,-4024,-4335,-4737,-5173,-5558,-5817,-5964,-6070,-6201, -6320,-6324,-6163,-5885,-5580,-5285,-4974,-4629,-4279,-3940, -3571,-3093,-2472,-1735,-962,-257,301,697,1011,1358, 1790,2294,2801,3229,3486,3479,3152,2531,1719,858, 39,-729,-1467,-2178,-2813,-3353,-3807,-4195,-4475,-4576, -4494,-4289,-4057,-3828,-3602,-3356,-3049,-2625,-2029,-1287, -472,364,1224,2116,2986,3790,4541,5294,6049,6719, 7189,7432,7500,7477,7414,7326,7216,7061,6823,6478, 6039,5575,5192,4975,4960,5096,5289,5459,5550,5550, 5493,5464,5526,5684,5898,6130,6315,6352,6155,5739, 5226,4719,4257,3806,3317,2762,2119,1381,571,-255, -1030,-1704,-2279,-2796,-3329,-3920,-4568,-5216,-5795,-6271, -6653,-6940,-7114,-7134,-6976,-6675,-6278,-5806,-5269,-4703, -4220,-3940,-3901,-4048,-4278,-4532,-4798,-5077,-5371,-5663, -5930,-6148,-6300,-6352,-6291,-6117,-5850,-5536,-5244,-5028, -4876,-4687,-4333,-3782,-3091,-2355,-1650,-1017,-516,-153, 154,547,1101,1770,2431,2977,3342,3477,3345,2949, 2362,1675,961,252,-456,-1170,-1902,-2647,-3341,-3883, -4211,-4340,-4352,-4321,-4263,-4175,-4050,-3891,-3663,-3298, -2770,-2100,-1353,-593,169,955,1789,2679,3602,4505, 5344,6062,6596,6930,7128,7275,7429,7561,7611,7533, 7287,6867,6357,5880,5545,5361,5296,5326,5418,5498, 5484,5359,5214,5175,5301,5567,5889,6169,6329,6324, 6160,5881,5547,5200,4863,4518,4114,3577,2883,2079, 1272,549,-85,-687,-1307,-1929,-2526,-3119,-3752,-4421, -5067,-5627,-6083,-6469,-6802,-7056,-7149,-7014,-6652,-6128, -5539,-4987,-4539,-4231,-4059,-3995,-4026,-4153,-4336,-4534, -4760,-5054,-5429,-5798,-6041,-6104,-6026,-5855,-5647,-5452, -5317,-5259,-5222,-5084,-4732,-4159,-3453,-2747,-2122,-1612, -1216,-882,-513,-31,581,1285,2013,2684,3203,3472, 3461,3235,2885,2480,2004,1406,677,-138,-975,-1796, -2549,-3178,-3631,-3896,-4031,-4119,-4200,-4278,-4317,-4266, -4090,-3759,-3287,-2729,-2129,-1506,-847,-106,749,1720, 2758,3775,4660,5347,5852,6265,6671,7082,7449,7715, 7857,7846,7649,7259,6754,6278,5951,5797,5766,5776, 5745,5621,5409,5191,5068,5087,5245,5536,5896,6199, 6332,6273,6112,5938,5799,5667,5478,5164,4723,4179, 3551,2852,2106,1386,743,170,-401,-1030,-1722,-2427, -3079,-3662,-4210,-4776,-5381,-5992,-6534,-6927,-7128,-7130, -6931,-6537,-6014,-5466,-4998,-4650,-4395,-4198,-4057,-3988, -3997,-4100,-4324,-4670,-5101,-5503,-5764,-5829,-5733,-5582, -5454,-5408,-5461,-5547,-5556,-5383,-5011,-4498,-3913,-3307, -2732,-2272,-1948,-1677,-1325,-810,-142,631,1415,2114, 2651,3009,3201,3246,3165,2972,2659,2195,1565,791, -72,-963,-1778,-2441,-2933,-3302,-3608,-3866,-4093,-4284, -4440,-4506,-4399,-4110,-3719,-3332,-2964,-2531,-1943,-1184, -287,693,1704,2674,3535,4263,4886,5446,5995,6561, 7118,7602,7890,7924,7723,7382,7003,6671,6431,6298, 6239,6184,6041,5772,5414,5105,4971,5048,5262,5519, 5755,5937,6059,6097,6072,6028,5989,5932,5818,5602, 5247,4739,4114,3458,2844,2261,1648,984,301,-350, -964,-1575,-2199,-2820,-3418,-4024,-4688,-5403,-6091,-6641, -6994,-7136,-7058,-6787,-6398,-5990,-5612,-5254,-4902,-4548, -4210,-3934,-3785,-3828,-4078,-4476,-4902,-5217,-5358,-5366, -5331,-5318,-5337,-5391,-5503,-5645,-5725,-5611,-5259,-4740, -4181,-3674,-3251,-2910,-2625,-2331,-1937,-1400,-743,-22, 714,1416,2020,2493,2836,3097,3282,3336,3204,2860, 2324,1622,803,-59,-863,-1520,-2035,-2486,-2958,-3445, -3874,-4177,-4342,-4397,-4363,-4266,-4122,-3924,-3647,-3249, -2711,-2023,-1178,-225,758,1683,2485,3188,3867,4592, 5346,6089,6774,7348,7745,7893,7784,7531,7271,7105, 7044,7002,6898,6690,6378,6014,5665,5407,5280,5274, 5378,5562,5767,5911,5961,5971,6028,6151,6268,6281, 6160,5936,5649,5282,4815,4283,3720,3135,2502,1822, 1133,474,-136,-696,-1228,-1769,-2367,-3047,-3803,-4597, -5366,-6028,-6511,-6772,-6824,-6731,-6567,-6380,-6146,-5806, -5329,-4782,-4281,-3925,-3761,-3789,-3982,-4276,-4585,-4811, -4906,-4893,-4850,-4860,-4976,-5197,-5455,-5660,-5716,-5583, -5287,-4885,-4441,-4020,-3670,-3409,-3179,-2884,-2453,-1908, -1305,-674,-23,632,1245,1791,2289,2752,3149,3422, 3491,3307,2856,2216,1515,841,196,-460,-1135,-1804, -2427,-2982,-3448,-3807,-4061,-4211,-4282,-4322,-4375,-4403, -4303,-3990,-3457,-2768,-1969,-1105,-238,575,1319,2026, 2781,3621,4546,5482,6319,6962,7346,7498,7520,7516, 7526,7522,7482,7410,7295,7076,6719,6286,5907,5674, 5577,5545,5541,5562,5609,5670,5751,5869,6030,6193, 6310,6336,6269,6121,5908,5636,5300,4905,4434,3864, 3188,2460,1756,1125,563,51,-430,-915,-1477,-2197, -3068,-3983,-4795,-5421,-5887,-6251,-6537,-6744,-6855,-6843, -6678,-6316,-5795,-5201,-4635,-4194,-3950,-3928,-4099,-4341, -4518,-4570,-4540,-4500,-4500,-4570,-4755,-5063,-5406,-5645, -5690,-5557,-5311,-5013,-4693,-4395,-4138,-3920,-3705,-3431, -3041,-2528,-1953,-1381,-843,-316,229,853,1559,2278, 2873,3233,3350,3276,3043,2664,2170,1611,1025,407, -276,-1013,-1747,-2393,-2895,-3271,-3575,-3846,-4106,-4360, -4585,-4740,-4758,-4568,-4136,-3494,-2713,-1905,-1190,-586, 13,737,1632,2634,3646,4615,5488,6199,6691,6975, 7149,7309,7492,7666,7761,7738,7579,7300,6947,6601, 6317,6110,5950,5804,5668,5566,5512,5517,5593,5751, 5964,6152,6251,6266,6247,6218,6142,5985,5748,5462, 5093,4580,3905,3132,2384,1764,1289,899,493,-4, -646,-1417,-2252,-3061,-3796,-4452,-5045,-5568,-6031,-6465, -6848,-7086,-7061,-6737,-6197,-5588,-5016,-4564,-4292,-4231, -4328,-4446,-4473,-4389,-4248,-4138,-4132,-4269,-4528,-4844, -5142,-5359,-5458,-5414,-5239,-4983,-4732,-4561,-4465,-4351, -4120,-3752,-3308,-2879,-2485,-2096,-1667,-1163,-570,111, 879,1668,2366,2866,3140,3225,3186,3056,2834,2492, 2003,1361,606,-171,-896,-1537,-2094,-2556,-2905,-3202, -3564,-4046,-4556,-4928,-5037,-4874,-4495,-3975,-3384,-2793, -2236,-1700,-1120,-422,453,1494,2616,3688,4600,5296, 5803,6205,6587,6992,7388,7706,7892,7929,7824,7610, 7340,7075,6863,6679,6461,6195,5925,5720,5605,5576, 5625,5751,5939,6142,6296,6354,6332,6300,6303,6333, 6321,6175,5813,5237,4528,3815,3183,2650,2205,1804, 1396,890,235,-528,-1327,-2089,-2771,-3395,-4007,-4648, -5335,-6019,-6622,-7044,-7191,-7007,-6554,-5967,-5414,-5015, -4802,-4730,-4704,-4642,-4513,-4335,-4141,-3977,-3903,-3976, -4231,-4616,-4987,-5195,-5213,-5132,-5047,-4996,-4941,-4863, -4755,-4587,-4327,-3979,-3607,-3273,-2981,-2706,-2397,-1980, -1399,-653,158,918,1577,2137,2616,2978,3184,3241, 3179,3020,2717,2201,1474,654,-104,-708,-1175,-1582, -2012,-2518,-3108,-3751,-4362,-4823,-5056,-5040,-4797,-4403, -3955,-3535,-3167,-2778,-2256,-1524,-598,434,1499,2520, 3427,4177,4787,5343,5925,6526,7072,7484,7735,7860, 7889,7831,7700,7525,7323,7097,6832,6540,6237,5948, 5715,5614,5687,5867,6030,6106,6117,6135,6205,6333, 6492,6632,6693,6588,6271,5744,5089,4439,3882,3419, 3001,2586,2115,1553,895,191,-502,-1147,-1747,-2341, -2980,-3727,-4606,-5541,-6371,-6931,-7154,-7083,-6822,-6459, -6060,-5694,-5442,-5334,-5295,-5187,-4932,-4577,-4245,-4035, -3988,-4103,-4331,-4603,-4830,-4977,-5057,-5102,-5130,-5163, -5212,-5242,-5182,-4973,-4651,-4322,-4080,-3914,-3741,-3492, -3165,-2764,-2262,-1631,-889,-119,588,1201,1738,2234, 2690,3062,3272,3252,2980,2489,1859,1206,610,88, -388,-843,-1326,-1904,-2626,-3438,-4186,-4734,-5017,-5082, -5006,-4845,-4642,-4426,-4203,-3903,-3416,-2685,-1770,-789, 174,1090,1945,2747,3519,4282,5011,5672,6264,6788, 7217,7508,7649,7691,7699,7693,7636,7462,7144,6733, 6331,6032,5850,5777,5785,5827,5851,5827,5778,5785, 5901,6135,6420,6670,6788,6714,6436,6001,5487,4957, 4461,4023,3635,3234,2716,2062,1350,708,200,-222, -684,-1273,-2012,-2875,-3835,-4834,-5772,-6508,-6938,-7048, -6907,-6638,-6371,-6198,-6113,-6029,-5866,-5605,-5269,-4900, -4550,-4288,-4187,-4254,-4415,-4557,-4629,-4662,-4737,-4900, -5106,-5278,-5352,-5325,-5227,-5069,-4847,-4597,-4380,-4233, -4128,-4002,-3783,-3431,-2937,-2340,-1720,-1128,-546,92, 810,1551,2221,2748,3099,3236,3107,2728,2213,1711, 1282,907,519,73,-482,-1184,-2019,-2892,-3665,-4249, -4618,-4804,-4893,-4966,-5054,-5105,-5012,-4713,-4217,-3578, -2844,-2022,-1142,-242,623,1437,2238,3084,3959,4792, 5507,6080,6536,6913,7244,7537,7774,7902,7889,7708, 7380,6971,6590,6318,6165,6085,6014,5908,5749,5595, 5521,5586,5773,6032,6337,6644,6851,6822,6543,6135, 5753,5451,5166,4813,4358,3799,3171,2518,1905,1374, 920,518,123,-342,-985,-1885,-2991,-4147,-5168,-5936, -6437,-6710,-6804,-6783,-6727,-6706,-6722,-6681,-6482,-6107, -5662,-5274,-5002,-4819,-4679,-4566,-4491,-4456,-4473,-4536, -4667,-4841,-5040,-5231,-5377,-5423,-5334,-5130,-4901,-4754, -4711,-4681,-4568,-4365,-4114,-3815,-3453,-3028,-2582,-2116, -1589,-935,-151,721,1581,2303,2779,2970,2911,2686, 2385,2101,1866,1664,1413,1010,378,-461,-1376,-2210, -2884,-3418,-3879,-4301,-4670,-4972,-5198,-5348,-5380,-5236, -4877,-4330,-3667,-2971,-2265,-1532,-741,115,1047,2017, 2950,3782,4488,5101,5661,6209,6759,7301,7765,8042, 8057,7860,7570,7298,7062,6855,6672,6535,6399,6194, 5894,5576,5377,5398,5648,6038,6425,6681,6746,6659, 6515,6368,6200,5992,5740,5437,5040,4497,3804,3061, 2413,1951,1661,1435,1146,697,41,-851,-1950,-3131, -4201,-5020,-5568,-5944,-6258,-6555,-6819,-7005,-7057,-6953, -6708,-6393,-6083,-5796,-5505,-5229,-5010,-4860,-4710,-4516, -4343,-4309,-4462,-4722,-4982,-5169,-5268,-5274,-5204,-5098, -5003,-4945,-4914,-4866,-4762,-4570,-4307,-4020,-3763,-3543, -3332,-3036,-2573,-1914,-1095,-169,783,1639,2231,2490, 2481,2381,2334,2374,2418,2350,2090,1629,1011,277, -514,-1302,-2004,-2601,-3128,-3649,-4186,-4715,-5195,-5551, -5702,-5610,-5331,-4952,-4513,-4004,-3425,-2783,-2036,-1140, -120,900,1792,2526,3197,3896,4644,5416,6173,6869, 7440,7819,7971,7909,7703,7484,7350,7321,7311,7188, 68,57,-54,-107,-87,98,321,492,435,88, 3,340,464,304,-6,-150,-194,-210,80,618, 923,788,177,-313,-84,13,-435,-580,136,667, 84,-593,-445,269,317,-523,-1097,-934,-644,-829, -1187,-1261,-1371,-1551,-1768,-1708,-1271,-531,21,-33, -92,569,1700,3234,5164,7400,8778,8318,7012,6228, 5682,5167,4043,2202,634,235,582,905,1268,1985, 2480,3156,3923,3835,2644,393,-2121,-4809,-7371,-8596, -8384,-7610,-7043,-7223,-7659,-8214,-9068,-9665,-9683,-9439, -9920,-11238,-12322,-12915,-12803,-10736,-7260,-4693,-4257,-4509, -4675,-5952,-7364,-7277,-5867,-4407,-3270,-1991,72,1660, 2083,2465,3658,4474,4691,6174,8869,10247,11004,13176, 15375,15251,13263,11905,11597,10308,7840,6031,6156,7252, 7870,8489,9331,8715,6680,3421,-332,-3016,-3064,-539, 2237,2978,1898,-682,-4245,-6823,-6594,-4414,-3054,-2881, -3720,-6129,-9086,-11294,-12498,-11792,-9178,-6917,-7859,-10572, -11206,-9651,-7230,-4291,-1735,-10,1321,2811,5140,7421, 8797,9478,9558,8299,5051,2387,2094,2650,2256,1720, 2615,4802,6796,8398,9504,9083,6547,2637,-1493,-4535, -5780,-5488,-4289,-2871,-1654,-760,-40,432,345,45, -1276,-4704,-9316,-12649,-13701,-12628,-9577,-4963,-1536,-887, -2105,-3836,-5401,-6817,-7258,-4702,-655,1306,1704,3050, 5425,6324,5687,6178,8061,9799,11217,13139,15430,17581, 19881,21300,20558,19106,18097,15598,10782,7072,6203,6604, 7452,9686,11931,11666,7980,2024,-2435,-3517,-3260,-3394, -2443,-848,-1348,-4246,-7046,-8623,-8874,-7903,-6929,-7774, -10345,-12990,-14092,-13758,-13034,-12782,-13087,-13097,-12727,-12207, -10857,-8970,-7292,-5928,-4875,-4651,-4284,-1912,1558,2688, 2010,1987,2235,1070,-1153,-2707,-3696,-5735,-8371,-9506, -8442,-6128,-3525,-200,2546,2671,1649,1261,617,-763, -1903,-2453,-3143,-4457,-4994,-3573,-798,2371,5196,5745, 2800,-1731,-5301,-8048,-9897,-9079,-5482,-1407,520,547, 876,2412,2925,1543,1529,3714,3898,2075,2962,6260, 7979,7955,8349,8578,7670,7447,8768,10531,12491,14871, 17505,19383,20198,21187,21397,18255,12141,7600,7448,8616, 8608,9788,12108,11563,7212,2948,525,-1617,-2854,-1271, 863,-149,-3511,-5687,-5584,-5507,-6140,-6098,-5726,-7094, -10205,-12097,-11614,-11175,-11673,-12153,-13217,-14628,-14852,-13170, -11175,-10660,-10558,-9431,-8355,-8218,-7160,-3935,-1109,-943, -687,1307,3037,2816,1926,1461,-623,-5154,-8347,-8253, -7638,-7915,-6198,-1938,252,-216,494,2334,3161,2582, 1022,-1485,-4583,-7244,-8615,-7762,-4143,76,3375,4449, 1884,-2702,-6580,-9369,-11466,-11521,-8488,-5522,-5302,-5367, -3450,-1202,-564,-133,1122,1447,-118,-1341,71,3669, 6442,7046,7529,8258,8084,7656,8189,9068,9897,12474, 17166,20857,22804,24395,24857,22875,18996,15156,12812,11955, 12956,15576,16638,14365,10707,8497,6682,4248,3541,4793, 4773,1895,-1861,-3449,-3309,-3581,-4054,-4188,-4927,-7133, -9228,-9677,-10112,-11397,-12560,-13692,-14902,-15848,-16132,-14788, -13029,-12302,-12025,-10608,-8734,-8345,-7996,-6380,-5667,-5320, -2905,-264,459,1228,3549,3927,136,-4421,-6318,-6924, -8095,-8859,-7550,-5482,-5001,-4935,-2692,1001,2946,2876, 2210,-105,-4777,-8857,-10206,-9246,-6248,-1229,3391,4379, 2539,318,-2594,-6416,-8946,-8846,-7567,-7638,-8517,-7340, -4183,-1841,-1148,-429,285,-399,-1082,-282,957,1429, 2160,4830,7952,8361,6988,6816,7470,6871,6193,8258, 12276,16403,20658,24106,24748,22116,18286,15583,13725,12791, 14458,17650,18308,15408,13003,12243,10390,8337,8269,8453, 6475,3680,2334,2112,1683,958,498,25,-1627,-4037, -4883,-4406,-5696,-8892,-10960,-11022,-11638,-13641,-14461,-13232, -12160,-11886,-11426,-10437,-9245,-8176,-7446,-7396,-7885,-7647, -5898,-3234,-543,2278,5340,5788,2255,-1603,-3049,-4224, -6713,-8236,-8024,-8605,-10376,-10213,-6369,-1135,2226,3509, 3208,501,-4201,-8294,-10317,-10322,-8100,-4042,-418,1116, 1484,1544,967,-1284,-4907,-8002,-9550,-9933,-9068,-7389, -6151,-5411,-3659,-1275,-299,-580,-647,-287,-335,-970, -761,1839,5631,8021,8899,9564,8330,4652,2214,3325, 6680,11710,17934,22539,23019,20846,18838,17493,16623,16714, 17470,17650,16855,15874,15209,14520,13722,13181,12219,9776, 6864,6086,7104,6407,3212,811,490,-320,-2242,-2967, -2341,-2520,-4240,-6486,-8230,-9305,-10124,-10686,-10969,-11667, -12948,-13734,-13463,-12034,-9535,-7232,-7020,-8985,-10921,-11111, -9678,-7350,-4005,299,3203,2728,1039,1036,1387,207, -1441,-2856,-5326,-8956,-11706,-11837,-9775,-6790,-2999,613, 1147,-2431,-6483,-8038,-9371,-11604,-12434,-11200,-9033,-6039, -2723,-725,-386,-898,-2381,-5142,-7994,-9510,-9515,-8714, -8132,-7436,-5835,-3828,-2951,-2927,-2303,-1964,-3498,-5068, -4143,-1206,2151,5896,9318,9517,6022,2250,986,2072, 4325,7847,13006,17749,19126,18157,18099,18933,18832,18127, 17558,16871,16709,17697,18585,17683,15811,14718,13796,11703, 9684,9562,9882,7873,4750,3400,3069,1689,290,383, 931,-190,-2869,-4975,-5941,-6878,-8222,-9132,-9939,-12026, -14630,-15786,-15481,-14219,-12129,-10493,-10692,-12285,-13681,-13272, -11218,-9061,-7146,-4157,-771,867,1689,3333,4768,5389, 6018,5113,570,-5209,-7735,-7321,-6606,-5230,-2237,774, 1545,269,-1136,-2568,-4807,-7103,-8459,-8369,-7351,-5650, -2928,-165,1089,789,-264,-2182,-5065,-7436,-8774,-9749, -10138,-9868,-9272,-8032,-5719,-3288,-2908,-4971,-7284,-7794, -6524,-4446,-1045,3973,7956,7893,4476,1150,272,1141, 2214,4016,7449,11145,13809,15874,17543,18077,17844,17903, 17774,17500,18189,19254,19560,19318,19316,19571,18828,16865, 15301,14877,13511,10307,7936,7254,5902,4060,3414,3242, 2184,754,-10,-566,-1119,-961,-1093,-2929,-6454,-10252, -12235,-12135,-11960,-12550,-12759,-11760,-11298,-12745,-14572,-15273, -14863,-13517,-11535,-10148,-9859,-8587,-5163,-1237,2017,4413, 5644,4706,911,-3434,-6226,-8221,-9772,-9313,-6387,-3550, -2354,-1471,-836,-2500,-6112,-8684,-9317,-10073,-11188,-9956, -6097,-3312,-2878,-2470,-1406,-1150,-2134,-3819,-6424,-9393, -10890,-10889,-10316,-8668,-5555,-2657,-2813,-6492,-10312,-10835, -8899,-6693,-3506,876,3515,3318,2324,1879,1514,392, -406,813,3596,6522,9208,12223,14782,15337,15520,16727, 17351,17282,18363,20257,20494,19782,20532,21929,21797,20682, 20167,19664,17231,13843,11231,9395,8685,9012,8976,7010, 3595,1437,1787,2555,2113,1534,1574,242,-3590,-7853, -10530,-11722,-12313,-12286,-11914,-12371,-14011,-15271,-14933,-13997, -13461,-13235,-13575,-14583,-15351,-14523,-11588,-6944,-2073,1585, 3828,4569,3237,540,-2502,-5678,-7648,-7217,-6046,-5621, -4020,-236,2133,688,-2581,-4923,-6037,-7501,-9141,-8879, -6907,-5481,-4926,-4054,-2579,-831,851,722,-2575,-7159, -10154,-10998,-10012,-7154,-3747,-2454,-3900,-6502,-8583,-9392, -9431,-8436,-5652,-1828,1356,2680,2586,1983,329,-1956, -3046,-2564,-1557,76,2895,5609,7063,8495,10891,12847, 13248,13646,15746,17987,18219,17275,17438,18808,20443,21985, 22388,20835,18443,17081,16565,15427,14075,13694,13301,10695, 6750,4464,4133,3989,4593,6764,7903,5602,2022,-455, -2891,-5711,-7442,-7947,-8774,-10992,-13251,-13402,-12299,-12132, -12814,-13109,-13452,-14942,-16829,-17734,-16890,-13524,-8378,-3592, -377,1653,3222,3300,417,-4249,-7378,-7784,-7837,-8109, -6032,-2118,-195,-1303,-3035,-4310,-6263,-8165,-8289,-8015, -9182,-10338,-9321,-7029,-4719,-2219,-546,-1582,-4996,-8290, -9776,-10071,-9777,-8292,-5839,-4658,-5784,-7587,-8988,-10275, -11266,-11016,-9196,-6309,-2907,444,2440,2039,465,-187, -606,-2196,-3345,-1722,1723,3920,4130,4392,6276,9175, 11729,13585,15327,16064,15673,16266,18335,20018,21266,22865, 23652,22512,20717,19855,19687,19630,19824,19841,18215,14567, 10795,8344,6746,5989,6904,8459,7994,5695,4482,4180, 2220,-1046,-3232,-4017,-5475,-8364,-10887,-11468,-10664,-10162, -10878,-12352,-13828,-15346,-17184,-19019,-20057,-19223,-15835,-10859, -6083,-2022,1727,3669,2128,-1425,-4428,-6577,-7999,-7295, -4311,-1859,-1726,-2265,-1825,-1432,-1922,-2553,-3526,-5908, -8715,-9545,-8179,-6131,-3938,-1144,933,105,-2939,-5221, -5863,-6546,-7552,-7044,-5251,-4269,-4286,-5257,-7704,-10365, -11151,-10648,-10637,-10335,-7932,-3888,-809,-406,-1582,-2615, -3515,-4109,-3281,-1522,-786,-1223,-903,782,2767,4673, 7288,10415,12392,12625,12777,14436,16743,18522,20638,22955, 23573,22253,21065,21317,22208,23268,24335,23860,20732,17258, 15302,12972,9301,7292,8171,8812,7361,5752,5756,6178, 5125,2820,433,-2174,-5275,-7952,-9580,-10678,-11279,-10954, -10184,-10356,-11993,-14225,-16075,-18195,-20823,-22150,-20982,-17796, -13026,-6608,-297,2827,2439,707,-944,-2130,-2753,-2840, -2495,-2310,-2366,-1451,621,2156,2722,2991,1315,-3334, -7735,-8464,-6964,-5963,-4680,-1742,894,695,-1514,-3448, -4846,-6142,-6652,-6068,-5554,-5720,-5192,-4294,-5247,-8354, -11583,-13467,-14123,-13169,-10325,-7307,-5638,-4989,-4557,-4372, -4660,-4567,-3735,-3242,-3827,-4498,-3892,-2118,-623,583, 3015,5914,6706,5901,6628,9827,13391,15924,17671,18617, 18601,18528,19127,19624,20150,22061,24416,24497,22153,19880, 18538,16569,13842,11761,10332,8757,7161,6554,7079,7337, 6851,6310,5218,2199,-1791,-4673,-6864,-9198,-10245,-9727, -9422,-9868,-10052,-10248,-12094,-16175,-20948,-24021,-24272,-22138, -18155,-13022,-8015,-4547,-2855,-2115,-1538,-737,-488,-1734, -4150,-6083,-5744,-3556,-1322,212,1636,2524,1047,-2883, -6833,-9083,-9756,-9092,-6695,-3663,-2105,-2011,-1655,-1641, -3455,-5746,-6450,-6023,-5467,-4297,-2632,-2215,-3872,-6680, -9263,-11095,-11693,-10887,-9776,-9215,-8366,-6545,-4676,-3971, -3874,-2886,-1425,-1453,-3444,-4928,-3506,-787,786,1812, 3186,3981,3963,4786,6640,8606,11030,14012,16437,17249, 16933,17121,18382,19619,20365,21794,23698,24015,23041,22628, 22001,19559,16650,14972,13316,10690,8453,7771,7752,7525, 7839,8232,7001,4496,2723,1242,-2296,-7070,-9436,-8837, -7734,-6738,-5032,-3897,-6023,-11348,-16802,-20053,-21173,-20608, -18888,-16824,-14628,-11487,-7382,-3416,-623,834,1446,998, -1191,-3760,-4595,-3490,-1450,1061,3694,4601,2700,-256, -2703,-5292,-8173,-8996,-6858,-4346,-2984,-1237,796,636, -2339,-5292,-6348,-5978,-4837,-3303,-1761,-714,-827,-2238, -4651,-7549,-9545,-9505,-9063,-10109,-10953,-9628,-7291,-5459, -3846,-2411,-2029,-2755,-3624,-4064,-3714,-2625,-779,1182, 2071,1779,1434,2005,3396,5185,7381,9805,11736,12687, 13482,14830,16126,16766,17722,19755,21770,22569,22869,23678, 24230,23395,21348,18896,16447,14177,12459,10890,8734,7295, 7623,8126,7669,7370,7551,5794,761,-4992,-8473,-9283, -8380,-6398,-4426,-4460,-6781,-10004,-13261,-16639,-19732,-21403, -21334,-20501,-19536,-17969,-14797,-10273,-6143,-2894,-733,-682, -2637,-4587,-5584,-5856,-4565,-1436,1333,1952,1409,924, -709,-4603,-9099,-10969,-9545,-7433,-5752,-3349,-880,-576, -2307,-4144,-5637,-6782,-6341,-4264,-2859,-3274,-3778,-3488, -3871,-5692,-7280,-7890,-9126,-11215,-12151,-11203,-9829,-8300, -5913,-3709,-3405,-4478,-5014,-4656,-4139,-3072,-1081,392, 376,60,364,652,528,1108,3219,5712,6960,7547, 9303,11969,13693,14391,15598,17605,18950,19818,21483,23484, 24400,24192,23501,21863,19285,17497,16521,13912,9568,6692, 6715,7934,9416,10864,10615,7599,3021,-1015,-3766,-5772, -6690,-5476,-3157,-2850,-4821,-6595,-8063,-10974,-14873,-18032, -20273,-22184,-23557,-23308,-20785,-16338,-11225,-6942,-4478,-3466, -3034,-3027,-4057,-5600,-5597,-3071,383,2662,3710,4238, 3445,134,-4345,-7528,-8658,-8284,-6312,-3389,-1564,-1784, -2741,-3161,-3523,-4172,-3997,-2748,-2081,-2328,-1922,-846, -708,-1602,-2362,-3480,-6250,-9573,-11357,-11186,-10188,-8828, -7284,-6304,-6103,-6030,-5891,-5775,-5115,-3455,-1705,-934, -922,-794,-409,-51,-100,122,1541,3368,4400,5543, 7850,10290,11860,13158,14347,15108,16330,18816,21420,22975, 23523,24182,25593,26785,26813,25592,23113,19360,15359,12736, 11704,11922,13502,15306,14846,11497,7695,5020,2121,-1311, -3111,-2334,-1410,-2136,-3109,-3143,-3384,-4872,-7556,-11316, -15875,-19908,-22270,-23184,-23161,-21411,-17242,-12409,-9126,-7298, -5920,-5276,-5955,-7215,-7547,-6329,-3926,-862,2427,4297, 3338,418,-2641,-5177,-7129,-7805,-6705,-5027,-4222,-4065, -3779,-3781,-4640,-5005,-4013,-3739,-5327,-6058,-4362,-2610, -2115,-1757,-1642,-3194,-6065,-8624,-10171,-10825,-10802,-9976, -8702,-8254,-8571,-8265,-7418,-7203,-7103,-5753,-3873,-3185, -3255,-2797,-1938,-1543,-1353,-641,34,323,1424,3998, 6482,7279,7538,9187,11702,13371,14312,15778,17627,18534, 19134,21323,24713,27386,28414,27774,25224,21315,17846,15762, 14224,13436,14877,17395,17345,14047,10802,8993,6761,3680, 1418,311,-788,-1747,-1369,-403,-490,-1384,-2438,-4879, -9910,-15611,-19361,-21582,-23213,-23307,-21122,-17831,-14532,-11234, -8366,-7250,-8244,-9772,-9847,-8021,-5686,-3007,536,3151, 2884,860,-1250,-3460,-5384,-5835,-5391,-5883,-6814,-6492, -5065,-4357,-4666,-4538,-4039,-4794,-6464,-6764,-5220,-3445, -1870,-82,659,-817,-3325,-5227,-6704,-8456,-9471,-8811, -7848,-8213,-9004,-8941,-8314,-7504,-6358,-5345,-5154,-5063, -3959,-2709,-2755,-3539,-3329,-2291,-1897,-1748,-410,1426, 2173,2029,2690,4974,7787,9810,10971,11667,12045,12621, 14223,16878,20264,24157,27836,29321,27427,23786,20901,19318, 18056,17288,18013,19296,19209,17982,16723,14686,11715,9616, 8305,5776,2572,1116,1477,2113,2593,3079,2930,1036, -2551,-6523,-10850,-16230,-21145,-23065,-22000,-20003,-17513,-14028, -10790,-9674,-10665,-12019,-12396,-11377,-8818,-5070,-1718,-147, 253,504,107,-1279,-2646,-3288,-4116,-5827,-7114,-6749, -5481,-4646,-3991,-3467,-4099,-5862,-6855,-6325,-5667,-5228, -3305,26,1647,359,-1474,-2189,-3064,-4729,-5933,-6425, -7158,-7821,-7674,-7424,-7869,-8123,-7287,-6453,-6354,-5586, -3448,-2136,-3145,-4457,-3897,-2650,-2180,-1867,-1296,-1112, -1307,-1209,-464,1091,3325,5859,8175,8915,7713,6818, 8250,11110,14305,18362,22783,25111,24680,23085,21208,19158, 17549,17286,17924,17858,17013,16787,17061,16350,14333,12040, 9532,6648,4296,3093,2264,1466,1838,3735,5326,5033, 3525,1511,-2635,-9315,-15866,-20069,-21793,-21501,-19129,-15821, -13650,-13348,-13731,-13920,-13978,-13352,-11001,-7437,-4381,-2480, -1257,-142,658,883,484,-543,-2028,-3279,-3825,-4116, -4464,-4033,-2500,-1626,-2919,-5306,-6620,-6448,-5973,-5546, -4220,-2053,-813,-923,-832,-507,-1274,-2688,-4017,-5614, -7001,-6964,-6508,-7628,-9638,-10466,-9911,-9046,-8263,-7195, -5960,-5339,-5454,-5609,-5347,-4821,-3867,-2487,-1837,-2707, -3949,-3937,-2513,-539,1516,3802,5501,5635,4842,4463, 4783,6033,9136,13900,18228,20578,21660,22553,22811,21815, 20252,19277,18815,18376,18389,19003,19232,18551,17528,16364, 14042,10700,8067,6277,3968,1576,1062,2506,4237,5792, 7130,6556,2505,-3744,-9717,-14777,-18739,-20383,-18965,-16470, -15633,-16329,-16453,-16000,-15994,-15770,-14529,-12713,-10207,-6911, -4171,-2509,-919,954,2040,1599,-92,-1619,-2044,-2187, -2617,-2207,-723,-343,-1962,-3670,-4256,-4401,-4634,-4629, -4174,-3430,-2182,-273,1095,592,-838,-1428,-1631,-2696, -4064,-4707,-5181,-6396,-7969,-8923,-9031,-8671,-7867,-6628, -6025,-6637,-7092,-6356,-5077,-4203,-3427,-2554,-2480,-3385, -4356,-4748,-4403,-2849,5,2782,3666,3038,2490,2646, 3101,3909,5802,8967,12398,15403,18053,20336,21480,21204, 20637,20077,18989,18018,18035,18593,18762,18287,17834,17633, 16867,14901,12205,9049,5159,1879,777,1120,2282,5145, 8654,9261,5817,1030,-3293,-7889,-12703,-16132,-17236,-16982, -16776,-16821,-16841,-17080,-17346,-17088,-16515,-15954,-14685,-12120, -8860,-5877,-3039,79,2407,2450,781,-234,130,642, 634,603,651,501,291,-109,-1358,-3253,-4540,-4555, -4026,-3638,-2801,-1312,-291,-478,-1110,-1306,-1400,-1867, -2135,-2373,-3816,-6240,-7747,-7797,-7768,-8229,-8120,-7406, -7457,-8156,-8414,-7915,-6636,-4480,-2134,-1089,-2004,-3777, -4889,-5093,-4762,-3279,-558,1466,1805,1751,1798,1450, 1286,2130,3670,5356,7459,10356,13825,16841,18260,18570, 19186,19771,19277,18263,17734,17671,17832,18164,18498,18722, 19102,19222,17589,13176,7624,3684,1898,1246,2067,4915, 8185,9590,8685,6382,3048,-1118,-5316,-8875,-11718,-13819, -14869,-15215,-15974,-17085,-17329,-16841,-17330,-19117,-19939,-18200, -14786,-11075,-7422,-4228,-2124,-1102,-371,152,105,-94, 198,844,1287,1372,1407,1279,379,-1519,-3420,-4432, -4701,-4057,-2451,-1308,-1553,-2080,-1735,-958,-688,-824, -657,-589,-1922,-4311,-6046,-6666,-7045,-6918,-6015,-6149, -8229,-10150,-10408,-9678,-8339,-6037,-3664,-2896,-3753,-5092, -6179,-6808,-6444,-4783,-2730,-1459,-555,562,1116,240, -1005,-774,744,2052,3045,5046,8324,11406,13398,14881, 16233,17337,18270,18744,17969,16192,15153,15983,17733,19277, 20777,21929,21078,17218,11870,7279,4088,2059,1701,3315, 5992,8267,9386,9024,6921,3913,1395,-1057,-4875,-9144, -11676,-12438,-12928,-13533,-14210,-15429,-17319,-19110,-19842,-19244, -17964,-15960,-12723,-9152,-6697,-4980,-3088,-1663,-1220,-1135, -990,-630,482,1960,2605,2070,741,-814,-2001,-2696, -3309,-3467,-2840,-2404,-2860,-3488,-3523,-3094,-2304,-893, 457,262,-1479,-3155,-3822,-4192,-4422,-4050,-3836,-5098, -7594,-9747,-10565,-9994,-8457,-6659,-5311,-4541,-4023,-4088, -5339,-7068,-7514,-6065,-4137,-2911,-1764,-222,774,426, -648,-1271,-1069,-128,1451,3203,4693,6434,8889,11546, 13928,16233,18331,19307,18402,16199,14749,15303,16985,18986, 21587,24111,24838,23031,19198,14101,9071,5922,5126,5526, 6123,6887,8162,9517,9720,8567,6720,3898,-86,-3718, -5968,-7830,-9742,-10735,-11436,-13435,-16241,-18133,-18844,-19447, -20039,-19707,-18072,-15573,-12502,-9196,-6700,-5649,-5186,-4302, -3043,-1818,-550,954,2317,2636,1781,489,-695,-1501, -1520,-897,-781,-1749,-2691,-2824,-2685,-2498,-1550,229, 1234,241,-1489,-2074,-1528,-1014,-1003,-1334,-1991,-3058, -4386,-5989,-7809,-8968,-8390,-6521,-5345,-5227,-4673,-3854, -4390,-5967,-6963,-6876,-6033,-4632,-2843,-1272,-520,-758, -1560,-2228,-2579,-2294,-1188,-456,-596,86,2705,5965, 8776,11484,13988,15592,15795,14624,12946,11967,12545,15088, 18998,22385,23579,22857,21176,18397,14370,10366,7540,5884, 5187,5665,7259,8836,9675,10191,9657,7144,3694,1180, -489,-2542,-4945,-6877,-8586,-10509,-12409,-14137,-16159,-18634, -20384,-20479,-19488,-18218,-16314,-13506,-10743,-9150,-8364,-7321, -5781,-3918,-1782,258,1436,1668,1631,1139,102,-394, 199,790,-19,-2058,-3505,-3221,-2140,-1539,-1258,-701, -434,-846,-1342,-1714,-1931,-1288,81,665,-149,-1321, -2341,-3835,-6070,-7972,-8241,-7239,-6441,-5810,-4562,-3654, -4234,-5560,-6372,-6694,-6497,-5243,-3657,-3002,-2890,-2184, -1083,-756,-1207,-1469,-1518,-1874,-2225,-1926,-953,831, 4146,8746,12694,14372,14040,12978,11989,11061,10844,12470, 15616,18919,21529,23227,23571,22246,19803,16830,13108,9150, 6573,6417,7714,8933,9769,10317,10140,9318,8102,6362, 3858,1136,-805,-1993,-3681,-6153,-8258,-9846,-12368,-15872, -18335,-19351,-19779,-19569,-18381,-16733,-15173,-13769,-12684,-11785, -10469,-8108,-4871,-2386,-2041,-2306,-1285,226,807,879, 1138,1012,-129,-1747,-3040,-3553,-3140,-2133,-1231,-903, -1238,-1648,-1845,-2191,-2303,-1326,477,1565,1371,885, 507,-857,-3366,-5595,-6454,-6357,-5774,-4498,-3462,-3923, -5059,-5354,-4951,-5097,-5728,-5718,-5102,-4627,-4216,-3592, -2877,-2162,-976,252,28,-1923,-4183,-5280,-5000,-3664, -786,3493,7457,9664,10238,9922,8875,7841,8023,9299, 10857,12798,15873,19811,22856,23604,22354,20081,17015,13281, 10069,8210,7384,7593,8865,10066,10289,10093,9900,9015, 7006,4676,3194,2372,1111,-812,-2588,-4185,-6693,-10190, -13592,-16399,-17976,-17800,-16933,-17041,-17909,-17856,-16563,-15056, -13501,-11137,-8279,-6258,-5519,-4832,-3492,-1873,-146,1401, 2326,2370,1531,194,-1183,-2096,-1973,-913,20,-90, -838,-1305,-1657,-2241,-2632,-2190,-829,834,2316,3061, 2205,-18,-2027,-2910,-3500,-4383,-4820,-4357,-3735,-3777, -4383,-4970,-5257,-5213,-4765,-4387,-5014,-6400,-6918,-6018, -4649,-2955,-609,1271,1278,-458,-3119,-5711,-6980,-6074, -3270,96,2787,4972,7246,8877,8736,7509,6814,6834, 7393,9092,12124,15740,19192,21842,22948,22175,20151,17629, 14892,11989,9477,8519,9391,10520,10798,10767,11123,11144, 9808,7708,6075,5125,4705,4593,3805,1315,-2266,-5524, -8360,-11113,-13063,-13770,-14332,-15953,-17807,-18484,-18052,-17297, -16042,-13959,-11813,-10366,-9318,-8117,-6764,-5160,-2921,-418, 1081,1029,434,124,-391,-1535,-2385,-2166,-1352,-524, 32,-429,-2126,-3787,-4137,-3078,-1490,-242,1084,2531, 2816,1459,-277,-1556,-2571,-3095,-2793,-2631,-3409,-4349, -4664,-4651,-4800,-4810,-4166,-3567,-4326,-6313,-7909,-8002, -6563,-3776,-514,1309,1071,-11,-1378,-3479,-5975,-7210, -6337,-4327,-2038,722,3844,6182,6987,6459,5138,4069, 4194,5551,7661,10305,13704,17680,20920,22045,21233,19836, 18232,15836,12851,10496,9624,9948,10738,11530,11754,10867, 9249,7830,6904,6458,6669,7026,6263,4031,1216,-1362, -3768,-6195,-8353,-10059,-11671,-13814,-16094,-17600,-18468,-18569, -17395,-15824,-15018,-14519,-13272,-11412,-9689,-8084,-6285,-4146, -1783,62,846,462,-797,-1745,-1514,-651,-169,27, 338,113,-1164,-2811,-3965,-4119,-3064,-1103,952,2085, 2027,1468,900,23,-1168,-1804,-1622,-1597,-2612,-4122, -4923,-4701,-3893,-2813,-2198,-2965,-4734,-6296,-7354,-8214, -7946,-5700,-2569,-552,226,755,718,-890,-3676,-6141, -7289,-6811,-4733,-1749,974,3183,5076,6095,5367,3453, 2080,2317,3776,5822,8658,12438,16029,18682,20610,21385, 20332,17930,15252,12930,11422,11255,12173,13015,12709,11304, 10135,9791,9377,8773,8840,9167,8625,7184,5441,3375, 1042,-773,-2168,-4115,-6939,-9780,-11667,-12915,-14485,-15981, -16432,-16099,-15602,-14911,-14185,-13830,-13227,-11334,-8369,-5702, -3945,-2366,-850,-316,-867,-1436,-1431,-965,-84,864, 971,-115,-1600,-2633,-3317,-3984,-3967,-2410,-53,1423, 1437,819,464,477,529,451,-44,-1237,-2710,-3867, -4471,-4296,-3045,-1191,-622,-2085,-3939,-5047,-6048,-7372, -8250,-7539,-5325,-2754,-588,761,863,-346,-2199,-4180, -6466,-8189,-7880,-5685,-2942,-288,2132,3684,3685,2536, 1270,589,599,1300,3119,6317,10269,14432,18110,20099, 19858,18740,17693,16391,15099,14280,14226,14337,13863,12768, 11664,10859,10536,10842,11334,11092,10027,9002,8479,7675, 5942,3861,2053,190,-2193,-4919,-7754,-10701,-13082,-14244, -14880,-16045,-17336,-17839,-17678,-17662,-17530,-16334,-13978,-11134, -8326,-5939,-4544,-4102,-3625,-2887,-2525,-2221,-1161,527, 1482,728,-952,-2367,-3224,-3731,-3577,-2445,-1119,-312, 83,91,136,926,2219,2717,1589,-481,-2118,-2848, -3207,-3434,-2865,-1438,-484,-641,-1593,-3321,-5654,-7550, -8259,-8113,-7267,-5452,-2874,-515,679,698,-87,-1960, -4840,-7343,-8158,-7499,-6026,-3963,-1537,579,1947,2561, 2211,531,-1513,-2174,-897,1598,5002,9329,13628,16651, 17914,17968,17519,16984,16743,16838,16456,15192,13692,12917, 12734,12232,11456,11242,11593,11903,11695,11057,10213,9216, 8521,8238,7341,5151,2536,365,-2002,-5126,-8063,-9870, -10879,-11978,-13495,-15184,-16841,-18192,-18589,-17836,-16443,-14531, -11677,-8631,-7068,-6846,-6361,-5244,-4239,-3177,-1273,944, 2125,1588,-123,-1790,-2819,-3020,-2443,-1954,-2324,-2667, -1901,-592,247,939,2044,2917,2621,1273,-316,-1818, -3024,-3285,-2307,-817,318,872,637,-779,-3087,-5366, -6895,-7945,-8522,-7570,-4864,-1948,-159,545,524,-600, -2486,-4241,-5857,-7329,-7818,-6509,-3927,-1485,366,1843, 2304,1022,-1329,-3162,-3559,-2208,1014,5122,8652,11125, 13076,15010,16492,16887,16753,16916,17116,16679,15651,14419, 13127,12375,12469,12724,12408,11855,11668,11609,11098,10173, 9616,9951,10061,8876,6846,4530,1834,-966,-3284,-5207, -6874,-8145,-9377,-11362,-14124,-16692,-18226,-18805,-18695,-17387, -14641,-11648,-9903,-9455,-9362,-8830,-7374,-4903,-2194,-445, 65,291,362,-339,-1398,-1883,-1825,-2122,-2938,-3447, -3364,-2879,-1887,-291,1569,2844,3084,2400,920,-1081, -2628,-3034,-2542,-1781,-710,815,2076,1920,4,-2699, -5273,-7321,-8253,-7732,-6351,-4753,-2797,-587,609,268, -776,-1993,-3737,-6066,-7935,-8232,-6912,-4459,-1560,642, 815,-789,-2387,-3329,-4314,-4899,-3648,-695,2657,5585, 8004,10050,11851,13586,15276,16383,16538,16386,16387,15804, 14223,12907,12878,13324,13132,12565,12275,12043,11407,10817, 10891,11323,11643,11646,10933,9082,6433,4066,2279,348, -1811,-3386,-4276,-5885,-9164,-13101,-16260,-18140,-18542,-17360, -15606,-14495,-13938,-13224,-12451,-11773,-10618,-8398,-5800,-3980, -2735,-1384,-387,-361,-668,-612,-658,-1321,-2338,-3374, -4262,-4506,-3484,-1424,568,1819,2637,3299,3048,1394, -717,-2231,-2801,-2196,-490,1486,2830,3240,2665,1025, -1642,-4612,-6558,-6924,-6461,-5706,-4321,-2252,-120,1524, 2104,777,-2152,-4992,-6527,-6895,-6694,-5632,-3276,-725, 400,-190,-1533,-2877,-4116,-4961,-4928,-4035,-2291,224, 2890,5092,7012,9414,12119,14084,15056,15671,16065,15810, 14956,14210,13924,13939,13903,13566,12804,11790,11151,11315, 11682,11651,11686,12332,12860,12105,9906,7326,5243,3748, 2707,1894,539,-2078,-5599,-9083,-12248,-14920,-16412,-16630, -16590,-16780,-16666,-16102,-15559,-15072,-14024,-12091,-9838,-8008, -6398,-4837,-3609,-2450,-848,331,70,-1035,-1950,-2757, -3885,-4867,-4989,-3985,-2262,-311,1629,2853,2702,1632, 305,-1326,-3022,-3584,-2187,209,2111,2996,3045,2483, 1297,-527,-3092,-6103,-8198,-8227,-6518,-4396,-2398,-307, 1299,1095,-1127,-3946,-5935,-7087,-7546,-6816,-5066,-3318, -2084,-1391,-1623,-2871,-4167,-4752,-4997,-5425,-5370,-4054, -1987,-137,1713,4340,7464,10236,12288,13522,13865,13897, 14357,15004,15014,14434,14098,14238,13975,12786,11479,10915, 10912,11328,12358,13456,13607,12629,11119,9550,8137,7203, 6796,6327,4846,2154,-799,-3644,-6845,-10077,-12316,-13439, -14324,-15400,-16395,-17114,-17402,-16826,-15452,-13991,-12995,-12049, -10444,-8384,-6479,-4735,-2825,-1050,3,268,-195,-1506, -3227,-4484,-4920,-4960,-4485,-2621,349,2658,3031,1924, 505,-626,-1509,-2248,-2548,-2023,-646,1250,2998,3822, 3603,2530,326,-3021,-6378,-8144,-7776,-6050,-3717,-1146, 991,1741,767,-1292,-3578,-5523,-6444,-6055,-5139,-4271, -3113,-1831,-1390,-2180,-3247,-3737,-3857,-4324,-5168,-5751, -5558,-4489,-2261,684,3303,5678,8339,10804,12280,12943, 13456,14045,14592,15144,15714,15847,15077,13534,11984,10970, 10841,11738,13142,13888,13476,12594,11837,10898,9782,9144, 9323,9543,8745,6752,3901,569,-2555,-4925,-6836,-9018, -11494,-13605,-14994,-15997,-16944,-17412,-17008,-16167,-15339,-14589, -13903,-12965,-11096,-8403,-5936,-4204,-2482,-352,1030,402, -1721,-3830,-5100,-5493,-4923,-3344,-1415,251,1551,2162, 1749,713,-275,-1176,-2244,-3016,-2542,-639,1721,3471, 4464,4606,3241,382,-3061,-6053,-7660,-7268,-5235,-2706, -688,490,879,254,-1644,-4062,-5490,-5508,-4930,-4400, -3866,-3373,-3094,-2760,-2250,-2161,-2833,-3794,-4527,-5261, -6227,-6651,-5796,-4008,-1866,809,4008,6847,8494,9266, 10104,11392,13007,14808,16216,16337,15237,13910,12764,11699, 11182,11783,13107,14108,14079,13199,11988,10871,10419,10931, 11708,11627,10691,9650,8316,5904,2818,164,-1760,-3721, -6366,-9300,-11712,-13399,-14559,-15430,-16280,-17012,-16869,-15795, -15012,-14993,-14741,-13293,-10807,-7910,-4920,-2063,-173,60, -1067,-2740,-4405,-5517,-5523,-4679,-3684,-2387,-528,1219, 1823,1321,501,-461,-1807,-3233,-3797,-2847,-695,1976, 4319,5362,4701,2852,411,-2473,-5278,-6842,-6375,-4318, -1959,-304,416,194,-678,-1709,-2657,-3567,-4215,-4303, -3919,-3460,-3082,-2511,-1830,-1650,-1985,-2227,-2413,-3406, -5263,-6917,-7482,-6848,-5022,-2400,187,2171,3718,5253, 6829,8388,10229,12567,14798,15958,15716,14453,12814,11796, 12116,13141,13824,13996,14036,13889,13090,11767,11008,11484, 12457,12753,12287,11533,10703,9664,8155,5978,3284,679, -1507,-3626,-6132,-8907,-11290,-12993,-14362,-15459,-15873,-15821, -16164,-17040,-17617,-17187,-15514,-12659,-9140,-5896,-3606,-2128, -1339,-1737,-3375,-5052,-5684,-5556,-5232,-4449,-2790,-719, 944,1850,1809,486,-1634,-3255,-3875,-3905,-3161,-1007, 2078,4509,5278,4451,2440,-219,-2874,-4661,-5126,-4630, -3647,-2330,-1116,-532,-456,-580,-1219,-2492,-3546,-3741, -3549,-3632,-3896,-3667,-2860,-1957,-1091,-373,-647,-2294, -4286,-5655,-6611,-7320,-7020,-5257,-2912,-1301,-499,373, 2011,4390,7262,10042,12005,13187,13968,14041,13036,11931, 12063,13189,14063,14110,13807,13592,13367,12981,12580,12278, 12041,12100,12574,12934,12703,12081,11260,9980,8053,5971, 4187,2194,-671,-4015,-6925,-8995,-10377,-11464,-12533,-13776, -15193,-16545,-17626,-18316,-18257,-16756,-13752,-10358,-7611,-5513, -3834,-2862,-2859,-3677,-5026,-6412,-6903,-6062,-4455,-2652, -784,1107,2339,1958,143,-2002,-3741,-4778,-4572,-2737, 154,2834,4349,4458,3485,1874,27,-1740,-3186,-4128, -4206,-3345,-2174,-1405,-1107,-1033,-1042,-1114,-1379,-2161, -3376,-4425,-4724,-4344,-3827,-3180,-1886,-252,295,-981, -3155,-5009,-6132,-6574,-6504,-6105,-5496,-4792,-3958,-3125, -2184,-242,3085,6609,8991,10236,11028,11663,12041,12335, 12766,13179,13393,13573,13790,13749,13445,13267,13027,12362, 11735,11957,12808,13261,13016,12577,12334,12191,11691,10631, 8906,6399,3493,786,-1716,-4265,-6386,-7629,-8622,-10370, -12875,-15326,-17148,-18428,-19222,-19136,-17947,-15830,-12910,-9623, -6921,-5240,-4222,-3843,-4559,-6082,-7269,-7449,-6767,-5321, -2914,54,2159,2385,1074,-1001,-3343,-5064,-5190,-3827, -1963,-7,2117,3815,4227,3224,1602,177,-879,-1638, -2211,-2700,-2972,-2622,-1768,-1159,-1055,-814,-259,-309, -1746,-3930,-5391,-5503,-4685,-3363,-1877,-693,-212,-567, -1699,-3344,-4788,-5309,-5032,-4924,-5620,-6544,-6853,-6551, -5755,-3940,-1108,1802,4150,6015,7552,8879,10041,10979, 11558,11834,12221,13148,14192,14421,13805,13173,12965,12999, 13085,13104,12965,12759,12756,12937,13077,13170,13443,13771, 13192,11082,8101,5375,3136,1038,-848,-2380,-3900,-5835, -8240,-10823,-13342,-15757,-17781,-18973,-19288,-18636,-16810,-14097, -11251,-8629,-6334,-4780,-4537,-5607,-7235,-8553,-8821,-7507, -4731,-1654,376,1310,1468,513,-1687,-4107,-5297,-4837, -3307,-1354,585,2160,3163,3574,3238,2054,708,110, -54,-739,-1951,-2807,-2806,-2021,-872,164,763,654, -352,-2048,-3871,-5173,-5192,-3778,-1920,-708,-313,-479, -1192,-2270,-3005,-3007,-2809,-3268,-4540,-6023,-7176,-7762, -7475,-6311,-4791,-3018,-570,2358,4735,6075,6923,7998, 9375,10710,11816,12698,13273,13564,13670,13474,13036,12966, 13483,13755,13168,12275,11886,12072,12490,13175,14209,15073, 14991,13886,12182,10052,7607,5326,3568,2136,624,-1020, -2848,-5179,-8182,-11381,-14096,-16241,-17993,-19227,-19516,-18344, -15663,-12091,-8779,-6706,-6076,-6433,-7314,-8621,-9853,-9705, -7580,-4560,-1941,-111,693,322,-881,-2453,-4095,-5290, -5180,-3565,-1359,219,991,1622,2247,2342,1980,1621, 1172,268,-1016,-2188,-2867,-2767,-1740,-206,987,1188, 357,-1206,-3133,-4728,-5044,-3929,-2425,-1572,-1482,-1694, -1821,-1699,-1420,-1304,-1697,-2474,-3094,-3738,-5162,-7143, -8409,-8348,-7444,-6136,-4256,-1871,370,2006,3263,4557, 6050,7800,9666,11105,11758,12018,12346,12668,12889,13250, 13777,13966,13425,12496,11772,11411,11450,12256,13554,14456, 14805,15000,14636,13140,10888,8786,7336,6262,4984,3311, 1520,-201,-2160,-4642,-7777,-11429,-14931,-17533,-19063,-19522, -18505,-15725,-12062,-9039,-7514,-7453,-8201,-9154,-9877,-10037, -9375,-7663,-4881,-1846,32,261,-488,-1628,-3018,-4289, -4779,-4226,-3139,-2072,-1058,1,934,1714,2449,2855, 2528,1549,239,-1220,-2431,-2662,-1512,347,1686,1745, 703,-735,-1872,-2449,-2752,-3086,-3248,-2820,-2073,-1673, -1761,-1789,-1327,-730,-480,-523,-694,-1387,-2931,-4943, -6772,-7928,-8195,-7600,-6303,-4731,-3346,-2009,-370,1395, 3023,4853,6929,8493,9322,9943,10623,11387,12297,13211, 13693,13626,13371,13142,12611,11625,10957,11453,12806,13996, 14648,14974,14980,14557,13735,12491,10815,9093,7808,6982, 5977,4512,2989,1540,-737,-4583,-9353,-13717,-16878,-18549, -18688,-17439,-15225,-12633,-10254,-8855,-8928,-10015,-11037,-11461, -11244,-10063,-7663,-4730,-2467,-1356,-1108,-1469,-2379,-3412, -4011,-4193,-4238,-3938,-3121,-2278,-1573,-288,1827,3613, 3723,2152,114,-1297,-1848,-1589,-761,67,614,970, 940,231,-715,-1322,-1714,-2199,-2600,-2668,-2524,-2419, -2450,-2456,-2115,-1460,-647,140,481,-95,-1463,-3040, -4659,-6287,-7433,-7715,-7358,-6925,-6559,-5772,-4256,-2326, -399,1409,3013,4379,5804,7211,8202,8940,10047,11611, 12988,13533,13261,12686,12125,11660,11372,11285,11568,12397, 13602,14550,14839,14847,14970,14826,13771,11842,9878,8655, 8175,8059,7899,7123,5194,2020,-2158,-6909,-11510,-15157, -17250,-17593,-16518,-14541,-12242,-10526,-10156,-10921,-11973,-12641, -12572,-11728,-10208,-8092,-5696,-3645,-2534,-2461,-2872,-2851, -2347,-2515,-3832,-5225,-5617,-4939,-3354,-1017,1309,2706, 2943,2284,1042,-302,-1188,-1230,-660,-70,379,847, 1113,833,166,-461,-889,-1144,-1308,-1601,-2173,-2854, -3266,-3283,-3065,-2545,-1426,15,842,540,-444,-1499, -2526,-3696,-5040,-6465,-7643,-8377,-8454,-8029,-7433,-6479, -4655,-2246,-208,1084,2151,3445,4946,6494,8071,9743, 11320,12572,13243,13112,12417,11901,11939,12109,12064,12085, 12596,13528,14573,15597,16398,16508,15626,14093,12517,11129, 10243,10253,10742,10832,10045,8301,5271,693,-4855,-10124, -13860,-15702,-16162,-15691,-14455,-12954,-12019,-12131,-13173,-14500, -15001,-14131,-12409,-10707,-9307,-7966,-6501,-4987,-3538,-2296, -1719,-2253,-3697,-5327,-6445,-6545,-5355,-3160,-878,716, 1589,1917,1567,511,-631,-1077,-778,-203,337,736, 872,716,375,-16,-332,-410,-289,-347,-1061,-2388, -3596,-4030,-3745,-3104,-2292,-1402,-577,35,196,-291, -1283,-2272,-2982,-3810,-5318,-7156,-8394,-8829,-8790,-8316, -7214,-5548,-3743,-2230,-1089,-137,929,2450,4607,6947, 8714,9980,11099,11863,12060,12055,12064,11819,11352,11062, 11176,11827,13083,14580,15610,15942,15815,15345,14268,12548, 11051,10804,11724,12823,13338,12915,11252,8026,3384,-1972, -7161,-11206,-13309,-13498,-12767,-12228,-12317,-12899,-13711,-14420, -14646,-14314,-13723,-13132,-12476,-11457,-9833,-7603,-5069,-2968, -2015,-2192,-2976,-4175,-5617,-6633,-6442,-5056,-3168,-1355, 114,1007,1129,695,90,-495,-779,-405,493,1148, 1049,516,230,418,747,906,863,598,16,-886, -2059,-3310,-4011,-3653,-2686,-1912,-1389,-809,-227,117, 106,-241,-771,-1478,-2602,-4191,-5983,-7672,-8752,-8782, -7980,-7030,-6128,-5112,-4068,-3207,-2324,-869,1144,3131, 4784,6432,8269,10018,11254,11738,11575,11105,10774,10604, 10406,10382,11126,12760,14530,15583,15766,15322,14347,13044, 11892,11296,11387,12265,13916,15528,15770,13848,10081,5228, 96,-4391,-7400,-8941,-9849,-10799,-11797,-12580,-13047,-13291, -13470,-13780,-14334,-14843,-14814,-14113,-12838,-10870,-8230,-5606, -3767,-2991,-3084,-3829,-4932,-5993,-6619,-6488,-5485,-3722, -1698,-394,-283,-556,-453,-278,-405,-441,-119,217, 348,310,161,131,498,1164,1640,1484,768,-108, -1004,-2018,-2982,-3473,-3352,-2864,-2274,-1743,-1315,-869, -253,382,619,248,-589,-1898,-3772,-5847,-7283,-7707, -7644,-7712,-7754,-7305,-6341,-5335,-4525,-3715,-2662,-1205, 677,2700,4578,6406,8344,10076,11042,11020,10341,9593, 9183,9348,10149,11374,12774,14242,15470,15835,15070,13567, 11960,10797,10603,11797,14154,16533,17581,16786,14505,11235, 7402,3575,80,-3121,-5907,-7974,-9449,-10569,-11307,-11668, -11935,-12441,-13474,-14876,-15890,-15977,-15192,-13754,-11734,-9283, -6716,-4537,-3442,-3781,-4932,-5904,-6315,-6337,-5995,-5105, -3800,-2622,-1834,-1341,-1029,-757,-336,190,392,94, -242,-169,123,296,561,1202,1886,2056,1659,979, 122,-801,-1624,-2281,-2699,-2815,-2792,-2854,-2911,-2438, -1151,372,1156,977,350,-425,-1532,-2987,-4506,-5798, -6810,-7450,-7630,-7593,-7604,-7409,-6639,-5620,-4909,-4323, -3314,-1713,332,2698,5175,7384,8991,9823,9923,9491, 8740,8114,8212,9075,10571,12757,15055,16149,15473,13686, 11690,10257,10074,11284,13235,15182,16675,17417,17001,15344, 12938,10296,7380,3830,-115,-3513,-5818,-7271,-8324,-9190, -9957,-10770,-11754,-13059,-14755,-16460,-17322,-16700,-14766,-12284, -9780,-7535,-5842,-5058,-5218,-5837,-6361,-6477,-6128,-5546, -5081,-4655,-3956,-3072,-2331,-1681,-855,-18,283,-96, -607,-761,-671,-527,-159,629,1591,2216,2157,1488, 705,223,44,-227,-966,-2114,-3128,-3545,-3435,-2979, -2086,-926,135,963,1287,837,-84,-1019,-1970,-3113, -4407,-5653,-6611,-7150,-7381,-7395,-7112,-6773,-6651,-6545, -5990,-4924,-3423,-1411,1014,3463,5749,7810,9187,9231, 8066,6701,6154,6904,8875,11488,13852,15234,15298,14097, 12154,10441,9928,10742,12146,13479,14767,16162,17260,17566, 16926,15282,12741,9712,6465,3078,-353,-3280,-5073,-5830, -6357,-7276,-8608,-10256,-12300,-14608,-16527,-17317,-16684,-14931, -12622,-10347,-8517,-7253,-6580,-6486,-6680,-6609,-6107,-5705, -5754,-5746,-5264,-4581,-3913,-3099,-2045,-882,-7,182, -276,-1032,-1577,-1358,-333,704,1125,1231,1407,1495, 1405,1345,1274,934,272,-685,-1909,-3113,-3809,-3767, -3164,-2259,-1222,-219,510,818,762,493,-101,-1121, -2438,-3719,-4802,-5639,-6169,-6489,-6879,-7361,-7543,-7298, -7049,-7082,-6959,-5916,-3737,-887,2162,5057,7133,7772, 7014,5592,4559,4796,6627,9405,11889,13353,13815,13593, 12822,11632,10500,9932,10209,11328,12916,14457,15718,16841, 17787,18005,17066,15001,12211,9008,5470,2010,-483,-1780, -2608,-3583,-4785,-6382,-8656,-11435,-14115,-16048,-16688,-16016, -14590,-12970,-11446,-10042,-8742,-7726,-7228,-7046,-6712,-6159, -5806,-5828,-6033,-6162,-5795,-4629,-3014,-1737,-1141,-901, -853,-1093,-1406,-1342,-844,-254,205,561,845,1089, 1395,1855,2250,2220,1669,792,-327,-1648,-2788,-3366, -3366,-2997,-2441,-1735,-818,244,1019,1111,590,-161, -805,-1472,-2472,-3685,-4698,-5321,-5751,-6110,-6373,-6680, -7273,-8219,-9108,-9204,-7961,-5234,-1474,2098,4281,4944, 4773,4324,3928,3986,4777,6421,8740,11017,12483,12966, 12773,12143,11263,10390,9849,9993,10790,11832,13029,14718, 16713,18161,18564,17999,16489,13987,10785,7424,4531,2536, 1467,766,-322,-2221,-4746,-7425,-10032,-12460,-14459,-15569, -15513,-14603,-13410,-12287,-11354,-10433,-9284,-8019,-7035,-6549, -6464,-6577,-6735,-6746,-6358,-5468,-4324,-3299,-2492,-1877, -1566,-1458,-1252,-945,-764,-708,-497,-126,152,393, 988,2002,2866,3053,2719,2209,1537,609,-532,-1778, -2803,-3237,-3009,-2331,-1512,-722,54,753,1048,883, 591,171,-696,-1908,-3120,-4057,-4442,-4107,-3703,-4320, -6194,-8450,-10070,-10603,-10014,-8269,-5423,-2155,489,2042, 2764,2930,2701,2547,3004,4236,6090,8181,10028,11230, 11840,12139,12017,11275,10267,9567,9416,9724,10488,11896, 13934,16239,18253,19295,18848,16923,14304,11774,9481,7366, 5654,4484,3515,2116,-19,-2747,-5778,-8707,-11131,-12815, -13855,-14507,-14752,-14451,-13719,-12700,-11413,-9925,-8590,-7821, -7684,-7783,-7749,-7496,-7051,-6443,-5743,-4978,-4179,-3572, -3221,-2704,-1823,-1084,-895,-1125,-1393,-1391,-1034,-467, 165,904,1703,2380,2886,3081,2747,1978,1027,-118, -1464,-2582,-3028,-2838,-2352,-1925,-1614,-1005,156,1414, 1855,1153,-186,-1519,-2443,-2766,-2500,-1953,-1732,-2441, -4237,-6633,-8902,-10570,-11258,-10612,-8675,-5959,-3252,-1217, -105,322,544,918,1461,2150,3197,4853,6893,8719, 10065,11001,11594,11816,11525,10582,9244,8222,8235,9416, 11386,13729,16130,18049,18913,18558,17218,15187,12883,10973, 9753,8835,7734,6253,4381,2006,-870,-3823,-6351,-8432, -10506,-12613,-14171,-14859,-14840,-14248,-13129,-11806,-10568,-9560, -9007,-9005,-9062,-8666,-7873,-7115,-6652,-6355,-5960,-5386, -4662,-3760,-2807,-2080,-1671,-1427,-1359,-1583,-1780,-1469, -783,-251,195,1116,2453,3498,3716,3147,2185,1233, 478,-181,-1018,-2072,-2976,-3291,-2856,-1768,-207,1270, 1906,1388,203,-947,-1684,-1888,-1504,-693,34,-5, -1202,-3528,-6504,-9205,-10751,-10934,-10151,-8726,-6718,-4504, -2757,-1863,-1551,-1193,-554,260,1247,2396,3577,4948, 6842,9002,10705,11592,11661,10989,9771,8427,7469,7407, 8537,10671,13229,15694,17519,18273,17946,16765,15180,13874, 13126,12463,11362,9926,8390,6592,4372,1911,-583,-3078, -5668,-8343,-10881,-12907,-14097,-14315,-13677,-12671,-11872,-11329, -10775,-10154,-9652,-9293,-8870,-8284,-7690,-7260,-6997,-6644, -5934,-4941,-4076,-3548,-3055,-2289,-1508,-1268,-1650,-2162, -2376,-2080,-1148,252,1601,2440,2751,2779,2765,2783, 2661,2064,717,-1140,-2701,-3381,-3196,-2371,-1068,364, 1407,1591,752,-707,-1848,-1965,-1145,11,945,1297, 853,-556,-2987,-5944,-8500,-10087,-10535,-9829,-8363,-6899, -5782,-4728,-3619,-2714,-2102,-1578,-970,-253,604,1804, 3570,5799,8088,9976,11122,11326,10586,9192,7613,6488, 6553,8085,10485,12844,14771,16199,16897,16777,16221,15648, 15077,14430,13727,12849,11552,9886,8238,6757,4967,2420, -678,-3796,-6668,-9293,-11435,-12783,-13279,-13230,-13008,-12761, -12365,-11712,-10870,-10188,-9940,-9892,-9537,-8790,-8003,-7427, -7045,-6737,-6310,-5557,-4360,-2974,-2028,-1887,-2300,-2824, -3082,-2752,-1836,-927,-437,41,947,2034,2906,3462, 3750,3624,2701,873,-1265,-2846,-3390,-2853,-1517,-83, 775,873,443,-369,-1373,-2042,-1828,-715,867,2234, 2659,1772,-128,-2501,-4908,-7054,-8621,-9308,-9173,-8642, -7915,-6824,-5468,-4377,-3795,-3400,-2905,-2410,-1954,-1232, 61,1977,4440,7157,9461,10620,10447,9417,8066,6780, 6103,6479,7879,9895,11971,13587,14598,15266,15869,16314, 16275,15698,14994,14420,13736,12773,11797,10899,9683,7741, 5056,1937,-1196,-4046,-6515,-8680,-10532,-11974,-12782,-12837, -12443,-12033,-11703,-11398,-11192,-10931,-10289,-9380,-8742,-8589, -8663,-8520,-7766,-6425,-5078,-4213,-3718,-3287,-2951,-2859, -2892,-2798,-2502,-2139,-1875,-1619,-1064,-31,1483,3205, 4544,4838,3978,2419,627,-1083,-2285,-2590,-1944,-717, 440,929,530,-479,-1581,-2290,-2297,-1434,115,1734, 2669,2672,1947,646,-1202,-3409,-5564,-7268,-8337,-8795, -8695,-8107,-7257,-6267,-5164,-4265,-3964,-4194,-4407,-4121, -3190,-1621,645,3479,6381,8525,9393,9079,8078,7036, 6423,6314,6612,7475,8938,10543,11892,13150,14459,15554, 16126,16107,15631,15031,14632,14517,14475,14110,13134,11594, 9716,7487,4871,2075,-714,-3659,-6588,-8801,-9971,-10593, -11278,-12021,-12449,-12321,-11708,-10893,-10274,-10072,-10127,-10094, -9804,-9319,-8646,-7675,-6495,-5507,-4918,-4546,-4200,-3732, -3061,-2368,-2134,-2591,-3228,-3346,-2786,-1741,-219,1805, 3762,4899,5007,4198,2639,721,-879,-1547,-1204,-277, 675,1149,827,-181,-1319,-2030,-2204,-1831,-867,516, 1907,2898,3206,2679,1493,3,-1675,-3607,-5652,-7393, -8338,-8385,-7904,-7152,-6073,-4952,-4468,-4875,-5674,-6244, -6147,-5022,-2829,-60,2721,5150,6905,7723,7670,7193, 6738,6456,6285,6233,6544,7452,8911,10647,12353,13771, 14641,14950,14922,14877,15038,15333,15394,15069,14556,14137, 13602,12387,10188,7270,4192,1353,-1143,-3393,-5573,-7721, -9609,-10967,-11727,-11943,-11760,-11288,-10701,-10428,-10716,-11218, -11322,-10749,-9721,-8649,-7844,-7322,-6864,-6321,-5621,-4737, -3743,-2930,-2619,-2882,-3529,-4187,-4504,-4168,-2877,-722, 1686,3671,4779,4661,3366,1609,292,-286,-284,108, 702,1167,1144,455,-746,-1894,-2452,-2336,-1766,-897, 198,1405,2460,3014,2884,2249,1257,-258,-2348,-4652, -6638,-7937,-8237,-7496,-6268,-5291,-4920,-5193,-6071,-7265, -8047,-7672,-6053,-3759,-1305,1117,3271,4814,5753,6358, 6670,6524,5921,5230,4975,5469,6715,8340,9781,10859, 11901,13087,14074,14539,14587,14485,14485,14818,15472,16022, 15882,14925,13438,11586,9279,6654,4159,1924,-491,-3294, -6130,-8470,-10056,-10820,-10931,-10796,-10776,-11028,-11433,-11754, -11800,-11533,-10955,-10184,-9496,-9030,-8582,-7986,-7252,-6298, -5070,-3836,-3011,-2781,-3266,-4453,-5715,-6037,-4953,-2957, -704,1481,3224,4033,3679,2526,1330,638,526,851, 1369,1711,1622,1133,318,-759,-1814,-2371,-2247,-1653, -943,-180,804,1957,3000,3616,3546,2609,821,-1571, -4112,-6190,-7231,-7135,-6320,-5451,-5025,-5223,-6099,-7486, -8731,-9049,-8345,-7059,-5459,-3461,-1101,1366,3570,5144, 5847,5778,5384,5154,5193,5287,5431,5967,7086,8592, 10207,11671,12736,13383,13768,14002,14238,14782,15754,16750, 17220,17023,16271,15099,13679,12071,10172,7836,4985,1766, -1422,-4203,-6455,-8152,-9243,-9918,-10564,-11260,-11777,-12056, -12266,-12395,-12249,-11793,-11233,-10831,-10688,-10518,-9847,-8508, -6791,-5188,-4045,-3490,-3701,-4726,-6074,-6960,-6827,-5567, -3406,-974,1017,2227,2677,2551,1988,1283,957,1281, 1904,2320,2348,2020,1354,453,-470,-1227,-1763,-2044, -2084,-1800,-996,387,2086,3596,4434,4378,3370,1435, -1095,-3479,-4964,-5401,-5180,-4803,-4666,-4945,-5562,-6339, -7216,-8219,-9172,-9563,-8846,-7006,-4640,-2307,-146,1786, 3274,4225,4762,4953,4773,4441,4261,4394,5003,6214, 7819,9357,10494,11212,11655,12071,12754,13749,14834,15731, 16329,16691,16813,16665,16305,15728,14644,12732,10050,7066, 4165,1333,-1444,-3854,-5650,-7058,-8381,-9645,-10729,-11524, -11917,-11923,-11782,-11766,-11909,-12084,-12200,-12233,-11912,-10813, -8920,-6818,-5148,-4227,-4212,-5021,-6195,-7202,-7674,-7306, -5924,-3838,-1735,-131,853,1301,1255,947,894,1348, 1948,2285,2346,2323,2164,1753,1148,372,-590,-1576, -2356,-2780,-2659,-1720,88,2341,4228,5003,4455,3039, 1366,-212,-1598,-2772,-3655,-4068,-3980,-3736,-3853,-4502, -5565,-6947,-8429,-9502,-9736,-9114,-7865,-6123,-4018,-1849, 133,1914,3389,4208,4220,3759,3337,3324,3848,4831, 6036,7204,8117,8744,9309,10102,11194,12352,13278,13892, 14449,15153,15904,16559,17064,17349,17202,16349,14623,12151, 9307,6509,3950,1597,-654,-2879,-4980,-6877,-8556,-9927, -10746,-10921,-10752,-10747,-11201,-12041,-12961,-13588,-13635,-12859, -11219,-9042,-6958,-5487,-4865,-5090,-5966,-7135,-8093,-8296, -7424,-5796,-4080,-2654,-1528,-707,-185,187,553,874, 1201,1656,2119,2334,2309,2311,2447,2359,1547,-89, -2012,-3412,-3738,-2940,-1359,509,2248,3531,4163,4081, 3334,2087,611,-829,-1930,-2489,-2593,-2548,-2597,-2924, -3770,-5152,-6668,-7926,-8888,-9611,-9857,-9233,-7733,-5702, -3407,-1019,1060,2294,2638,2558,2456,2596,3104,3847, 4534,5106,5754,6548,7351,8161,9155,10336,11435,12205, 12731,13263,13978,14991,16244,17395,18057,18076,17474,16099, 13939,11477,9205,7127,4958,2553,-16,-2650,-5170,-7215, -8428,-8800,-8804,-9011,-9673,-10756,-12122,-13455,-14291,-14296, -13373,-11548,-9154,-6965,-5734,-5629,-6237,-7098,-7872,-8233, -8017,-7299,-6165,-4751,-3488,-2721,-2196,-1421,-420,379, 739,804,877,1237,2000,3043,3936,4072,3200,1637, -147,-1809,-3017,-3397,-2837,-1524,164,1855,3286,4162, 4177,3343,2047,797,-120,-682,-1011,-1243,-1467,-1794, -2353,-3179,-4186,-5372,-6829,-8513,-10023,-10786,-10405,-8910, -6713,-4404,-2408,-897,154,853,1268,1545,1984,2685, 3349,3725,3993,4485,5265,6220,7265,8321,9283,10104, 10717,11168,11761,12777,14194,15728,17101,18067,18353,17785, 16571,15127,13669,12113,10250,7908,5121,2121,-785,-3299, -5170,-6336,-6923,-7146,-7410,-8335,-10167,-12378,-14130,-14924, -14649,-13428,-11557,-9460,-7634,-6591,-6533,-7185,-7983,-8391, -8242,-7768,-7199,-6642,-6068,-5295,-4096,-2644,-1516,-982, -791,-669,-484,-1,1041,2508,3823,4468,4368,3636, 2321,561,-1279,-2703,-3329,-2934,-1617,180,1891,3148, 3764,3620,2877,2021,1402,958,474,-71,-554,-848, -894,-923,-1354,-2462,-4177,-6203,-8168,-9757,-10632,-10441, -9171,-7330,-5551,-4059,-2717,-1506,-557,200,942,1617, 2057,2342,2680,3092,3640,4460,5523,6598,7563,8323, 8763,9009,9456,10428,11925,13679,15299,16513,17255,17615, 17705,17518,16899,15819,14481,12882,10682,7669,4229,1088, -1244,-2746,-3657,-4216,-4767,-5773,-7466,-9661,-11968,-13931, -14974,-14643,-13147,-11233,-9631,-8620,-8086,-7858,-7781,-7803, -7929,-8142,-8323,-8276,-7847,-6949,-5620,-4175,-3093,-2582, -2382,-2148,-1846,-1395,-541,782,2270,3623,4602,4904, 4283,2833,929,-1033,-2576,-3152,-2537,-1182,250,1424, 2309,2927,3235,3122,2591,1884,1235,656,195,53, 280,630,699,118,-1270,-3235,-5371,-7399,-8995,-9776, -9718,-9116,-8191,-6989,-5611,-4245,-2983,-1785,-682,183, 757,1144,1401,1569,1918,2770,4033,5250,6048,6403, 6581,6923,7567,8433,9509,10913,12593,14176,15289,15968, 16510,17108,17683,18027,17857,16858,14910,12269,9296,6250, 3376,1080,-266,-850,-1309,-2281,-4072,-6556,-9228,-11554, -13128,-13767,-13556,-12840,-11965,-11037,-10014,-8942,-8069,-7675, -7867,-8425,-8923,-9072,-8796,-8113,-7073,-5881,-4864,-4162, -3687,-3434,-3319,-3068,-2519,-1640,-233,1772,3804,5033, 5114,4247,2780,1049,-593,-1784,-2289,-2134,-1517,-577, 554,1701,2653,3182,3134,2569,1715,879,361,354, 823,1466,1888,1737,883,-553,-2379,-4377,-6255,-7779, -8827,-9325,-9240,-8700,-7996,-7183,-5985,-4271,-2546,-1418, -904,-630,-366,-26,525,1376,2388,3386,4257,4898, 5170,5156,5306,6011,7224,8681,10120,11322,12276,13190, 14243,15393,16552,17733,18793,19196,18415,16453,13693,10543, 7531,5268,3941,3185,2404,1155,-724,-3033,-5431,-7724, -9748,-11385,-12629,-13357,-13346,-12668,-11658,-10480,-9273,-8446, -8296,-8674,-9150,-9416,-9395,-9118,-8578,-7744,-6630,-5459, -4624,-4401,-4640,-4872,-4755,-4115,-2737,-635,1612,3360, 4320,4502,3984,2929,1610,300,-855,-1752,-2199,-2002, -1150,164,1588,2697,3162,2868,2003,1059,530,570, 983,1537,2138,2647,2675,1866,352,-1407,-3049,-4527, -5965,-7381,-8591,-9333,-9450,-8914,-7833,-6460,-5050,-3754, -2703,-2036,-1772,-1648,-1201,-207,1067,2191,2990,3468, 3636,3695,3939,4443,5240,6400,7751,8921,9816,10581, 11315,12245,13725,15821,18075,19755,20222,19167,16924,14219, 11754,9862,8447,7224,6015,4701,3092,1131,-1000,-3125, -5277,-7619,-10005,-11863,-12772,-12818,-12366,-11618,-10695,-9795, -9139,-8838,-8914,-9317,-9810,-10054,-9813,-9022,-7798,-6498, -5607,-5388,-5668,-6083,-6317,-6038,-5003,-3321,-1378,530, 2222,3433,3946,3852,3408,2574,1184,-505,-1803,-2228, -1840,-918,286,1524,2455,2791,2459,1631,730,314, 626,1411,2262,2888,3077,2824,2320,1564,395,-1120, -2786,-4491,-6152,-7667,-8864,-9427,-9071,-8005,-6726,-5539, -4594,-4000,-3663,-3255,-2573,-1653,-601,536,1591,2288, 2560,2616,2691,2916,3524,4681,6113,7257,7798,7898, 8052,8841,10569,13039,15745,18106,19604,19859,18876,17167, 15385,13817,12313,10784,9350,8089,6869,5477,3758,1699, -665,-3252,-5837,-8132,-9968,-11304,-12079,-12158,-11599,-10694, -9780,-9127,-8965,-9396,-10135,-10645,-10563,-9876,-8782,-7580, -6581,-6090,-6247,-6820,-7314,-7298,-6663,-5586,-4304,-2803, -927,1100,2753,3737,4061,3673,2637,1291,-82,-1298, -1972,-1735,-682,675,1764,2221,2079,1626,1132,744, 622,878,1486,2239,2850,3156,3185,2998,2609,1914, 734,-986,-3080,-5212,-7008,-8144,-8552,-8367,-7781,-6999, -6264,-5721,-5293,-4832,-4304,-3639,-2607,-1152,255,1055, 1192,1089,1137,1523,2357,3591,4859,5711,5927,5649, 5421,5907,7419,9709,12271,14750,16879,18328,18928,18779, 18025,16733,15100,13567,12384,11435,10450,9298,7936,6196, 4029,1669,-716,-3240,-5895,-8339,-10160,-11110,-11227,-10811, -10178,-9534,-9210,-9524,-10298,-10962,-11089,-10571,-9562,-8468, -7675,-7213,-6989,-7025,-7304,-7660,-7850,-7660,-6953,-5684, -3984,-2109,-151,1830,3428,4080,3668,2555,1156,-141, -984,-1186,-827,-110,734,1450,1789,1676,1289,921, 743,770,986,1334,1786,2318,2884,3424,3840,3909, 3343,2030,159,-1909,-3908,-5668,-7016,-7724,-7721,-7275, -6897,-6816,-6834,-6679,-6262,-5523,-4286,-2683,-1314,-613, -519,-617,-476,156,1331,2756,3896,4357,4254,4002, 3863,4034,4809,6256,8188,10481,12990,15335,17153,18243, 18433,17776,16743,15785,14893,13930,12934,12022,11140,10046, 8554,6650,4399,1795,-1122,-4145,-6844,-8750,-9650,-9717, -9415,-9249,-9499,-10026,-10523,-10880,-11104,-11076,-10639,-9824, -8865,-8045,-7554,-7436,-7544,-7738,-8031,-8428,-8665,-8377, -7360,-5638,-3384,-938,1191,2614,3220,3018,2112,907, -42,-464,-477,-227,235,734,1020,1077,1104,1176, 1183,1002,670,453,612,1155,1890,2702,3545,4305, 4659,4252,3019,1278,-748,-2842,-4567,-5594,-6038,-6241, -6475,-6946,-7616,-8091,-7951,-7054,-5596,-4074,-3044,-2617, -2493,-2386,-2054,-1229,92,1477,2481,3027,3277,3313, 3119,2828,2770,3289,4610,6674,9094,11486,13689,15588, 16910,17486,17455,17040,16397,15629,14816,14020,13279,12660, 12126,11299,9664,7055,3830,579,-2302,-4636,-6342,-7401, -7940,-8274,-8695,-9304,-10044,-10742,-11191,-11269,-11018,-10618, -10122,-9422,-8574,-7880,-7520,-7502,-7861,-8543,-9278,-9747, -9641,-8667,-6803,-4412,-1941,212,1697,2261,1935,1175, 619,422,270,72,77,293,477,648,950,1235, 1331,1240,960,514,141,101,500,1337,2505,3782, 4853,5356,4996,3722,1826,-102,-1559,-2484,-3147,-3880, -4898,-6213,-7522,-8394,-8470,-7682,-6429,-5359,-4767,-4444, -4122,-3786,-3411,-2806,-1835,-573,793,1996,2727,2823, 2461,1999,1657,1582,2031,3249,5145,7389,9652,11732, 13587,15217,16526,17205,17048,16295,15438,14809,14518,14557, 14656,14371,13384,11583,9021,5934,2727,-130,-2291,-3807, -5001,-6073,-7028,-7916,-8815,-9692,-10432,-10957,-11220,-11244, -11067,-10552,-9651,-8678,-7934,-7454,-7361,-7886,-8964,-10161, -10928,-10786,-9599,-7639,-5361,-3109,-1191,101,703,862, 819,643,424,317,278,188,149,345,694,1015, 1261,1451,1458,1086,359,-405,-740,-311,896,2556, 4184,5284,5464,4671,3325,2075,1278,761,64,-1145, -2781,-4510,-6039,-7168,-7767,-7794,-7360,-6661,-5941,-5426, -5223,-5237,-5134,-4623,-3772,-2706,-1354,236,1581,2227, 2164,1651,1022,646,746,1307,2237,3515,5206,7334, 9749,12116,14117,15495,16080,15994,15561,15048,14770,15061, 15753,16201,15977,15030,13305,10795,7877,5088,2666,532, -1373,-2973,-4260,-5402,-6567,-7761,-8844,-9731,-10508,-11214, -11675,-11656,-11069,-10005,-8727,-7650,-7206,-7528,-8455,-9697, -10874,-11525,-11344,-10318,-8644,-6640,-4665,-2960,-1575,-542, 32,175,179,259,307,186,15,22,220,552, 1061,1682,2032,1717,723,-541,-1448,-1380,-237,1450, 3001,3988,4336,4266,4093,3881,3512,2997,2383,1522, 241,-1485,-3411,-5072,-6179,-6780,-7001,-6841,-6423,-6005, -5782,-5853,-6114,-6208,-5811,-4819,-3284,-1533,-86,786, 1247,1428,1270,842,456,312,407,811,1780,3473, 5762,8315,10785,12808,14115,14689,14695,14480,14518,15050, 15848,16570,17052,17082,16357,14820,12683,10253,7768,5387, 3180,1164,-658,-2243,-3551,-4654,-5765,-7099,-8641,-10109, -11212,-11801,-11760,-10992,-9650,-8234,-7351,-7239,-7758,-8680, -9827,-10899,-11552,-11551,-10834,-9491,-7821,-6095,-4390,-2866, -1780,-1088,-512,-10,214,77,-289,-636,-590,96, 1245,2250,2481,1832,753,-266,-1003,-1261,-862,61, 1193,2237,2993,3417,3726,4093,4406,4488,4266,3694, 2696,1282,-394,-2206,-4017,-5474,-6224,-6320,-6160,-6126, -6330,-6698,-7102,-7384,-7321,-6712,-5563,-4138,-2728,-1411, -230,625,1011,1013,731,178,-492,-911,-686,349, 2166,4563,7164,9511,11356,12625,13369,13748,14080,14648, 15533,16590,17576,18209,18266,17745,16734,15184,13052,10566, 8055,5654,3418,1502,-10,-1231,-2457,-4044,-6053,-8170, -10051,-11458,-12130,-11941,-11066,-9875,-8743,-8003,-7859,-8293, -9185,-10332,-11448,-12232,-12390,-11769,-10598,-9291,-8009,-6639, -5039,-3253,-1619,-638,-533,-991,-1412,-1448,-1048,-185, 988,2002,2386,2101,1378,440,-418,-832,-719,-343, 93,618,1288,2037,2730,3320,3882,4486,5042,5256, 4904,3954,2495,667,-1221,-2784,-3817,-4387,-4758,-5149, -5655,-6272,-6926,-7484,-7754,-7607,-7062,-6258,-5254,-4028, -2563,-1061,184,946,1039,424,-574,-1435,-1877,-1738, -778,1037,3341,5644,7626,9143,10280,11248,12114,12925, 13833,14922,16059,17048,17779,18267,18462,18085,16877,14941, 12601,10078,7660,5680,4173,2872,1539,-32,-2032,-4447, -6929,-9028,-10501,-11303,-11425,-10891,-9823,-8569,-7693,-7670, -8454,-9539,-10448,-11068,-11491,-11799,-11972,-11835,-11141,-9765, -7809,-5616,-3658,-2362,-1872,-1986,-2343,-2515,-2100,-1010, 339,1379,1904,2017,1766,1188,504,-18,-289,-363, -261,23,400,723,1070,1618,2450,3539,4717,5623, 5913,5526,4532,3072,1457,19,-1124,-1983,-2632,-3307, -4152,-5077,-5925,-6595,-7082,-7480,-7807,-7830,-7328,-6358, -5081,-3523,-1753,-135,793,730,-99,-1190,-2150,-2693, -2485,-1401,291,2188,3999,5599,6961,8200,9436,10630, 11684,12674,13750,14934,16150,17386,18465,19051,18934,18020, 16290,13972,11694,9901,8456,7016,5498,3976,2339,309, -2227,-5055,-7680,-9610,-10544,-10473,-9746,-8935,-8447,-8317, -8371,-8555,-8920,-9472,-10179,-11029,-11995,-12816,-13000,-12198, -10484,-8310,-6237,-4703,-3885,-3629,-3637,-3599,-3205,-2320, -1189,-74,925,1626,1777,1446,931,463,162,73, 108,115,-2,-200,-287,-36,649,1788,3257,4719, 5715,5947,5462,4551,3537,2539,1489,401,-554,-1339, -2168,-3166,-4143,-4942,-5683,-6513,-7393,-8141,-8504,-8283, -7409,-5971,-4135,-2183,-599,161,18,-786,-1876,-2757, -3056,-2734,-1948,-782,711,2303,3742,5034,6331,7660, 8854,9823,10706,11828,13403,15260,16948,18143,18754,18783, 18191,17001,15374,13510,11669,10163,9138,8280,6963,4864, 2193,-749,-3674,-6169,-7884,-8794,-9102,-9133,-9120,-9022, -8713,-8296,-8005,-8044,-8628,-9828,-11352,-12715,-13470,-13370, -12441,-10919,-9163,-7527,-6279,-5516,-5165,-5012,-4755,-4148, -3134,-1846,-540,446,926,999,892,704,499,466, 650,691,251,-489,-1052,-1172,-818,38,1351,2843, 4172,5077,5404,5208,4739,4153,3402,2475,1501,571, -308,-1128,-1884,-2661,-3561,-4614,-5833,-7177,-8428,-9202, -9125,-8100,-6443,-4614,-2905,-1510,-723,-766,-1461,-2289, -2852,-3082,-3066,-2731,-1934,-711,783,2391,3833,4868, 5612,6460,7592,8957,10496,12148,13876,15684,17361,18484, 18761,18247,17147,15736,14349,13276,12574,11925,10862,9119, 6757,3991,1116,-1497,-3639,-5405,-6955,-8257,-9111,-9348, -8991,-8262,-7538,-7206,-7536,-8554,-10006,-11476,-12625,-13300, -13334,-12593,-11271,-9834,-8613,-7671,-6992,-6563,-6251,-5806, -4999,-3775,-2361,-1192,-511,-172,85,343,611,936, 1230,1236,811,61,-756,-1360,-1509,-1083,-190,950, 2152,3307,4298,4933,5128,4992,4664,4153,3378,2361, 1336,642,291,-88,-796,-1857,-3264,-4989,-6806,-8334, -9181,-9102,-8150,-6659,-5047,-3621,-2558,-1854,-1443,-1435, -1960,-2832,-3557,-3722,-3271,-2390,-1271,-37,1192,2292, 3239,4097,4923,5808,6943,8478,10455,12750,15022,16837, 17844,18003,17533,16744,16015,15623,15444,15049,14145,12726, 10863,8660,6385,4173,1860,-711,-3319,-5548,-7161,-8119, -8412,-8068,-7315,-6603,-6426,-7001,-8171,-9580,-10968,-12157, -12887,-12906,-12261,-11223,-10157,-9311,-8731,-8288,-7817,-7184, -6312,-5244,-4115,-3076,-2262,-1681,-1194,-622,135,975, 1541,1609,1345,903,197,-697,-1352,-1443,-1052,-404, 388,1325,2408,3543,4527,5157,5331,5047,4412,3599, 2807,2198,1864,1770,1660,1141,-121,-2093,-4338,-6262, -7590,-8339,-8549,-8166,-7224,-5902,-4454,-3143,-2209,-1796, -1918,-2424,-3048,-3522,-3720,-3592,-3035,-2050,-873,285, 1357,2199,2676,2968,3527,4722,6662,9183,11872,14166, 15635,16282,16428,16466,16650,16919,16987,16697,16130,15341, 14226,12764,11101,9319,7253,4682,1711,-1227,-3750,-5636, -6736,-7073,-6831,-6272,-5761,-5712,-6339,-7555,-9107,-10595, -11615,-12065,-12056,-11640,-10985,-10440,-10181,-10003,-9543,-8680, -7610,-6605,-5760,-4979,-4214,-3510,-2870,-2142,-1161,-12, 1005,1614,1726,1411,832,199,-342,-789,-1140,-1249, -948,-265,630,1693,2946,4213,5122,5351,4887,4048, 3321,3027,3099,3286,3357,3090,2283,920,-813,-2749, -4766,-6570,-7772,-8233,-8041,-7295,-6146,-4879,-3771,-2959, -2470,-2300,-2471,-2963,-3614,-4085,-4116,-3617,-2590,-1232, 17,711,739,491,628,1575,3288,5488,7897,10175, 12022,13374,14303,15013,15735,16464,16937,17040,16885,16545, 16043,15442,14667,13495,11787,9596,6997,4039,904,-1946, -4034,-5225,-5702,-5656,-5260,-4882,-5057,-6044,-7550,-9029, -10121,-10766,-11092,-11226,-11247,-11237,-11244,-11179,-10902,-10324, -9423,-8324,-7307,-6598,-6166,-5757,-5112,-4161,-2981,-1746, -587,426,1186,1485,1279,847,473,99,-438,-1050, -1506,-1619,-1198,-109,1438,2921,3948,4422,4423,4112, 3722,3473,3467,3659,3905,4065,3985,3473,2386,703, -1420,-3628,-5506,-6860,-7614,-7698,-7203,-6419,-5563,-4617, -3586,-2698,-2331,-2720,-3636,-4467,-4729,-4335,-3431,-2288, -1315,-833,-841,-1062,-1139,-741,347,2070,4094,6059, 7871,9612,11265,12699,13850,14788,15581,16188,16526,16597, 16580,16639,16661,16311,15412,13998,12065,9466,6252,2877, -65,-2189,-3391,-3815,-3821,-3823,-4094,-4722,-5710,-6956, -8196,-9150,-9716,-10030,-10357,-10876,-11468,-11800,-11708,-11277, -10622,-9798,-8915,-8182,-7699,-7379,-7009,-6357,-5318,-3988, -2586,-1382,-491,172,726,1172,1340,1059,336,-609, -1488,-2044,-2032,-1319,-160,1057,2137,3016,3559,3697, 3553,3345,3266,3404,3737,4192,4678,4952,4627,3468, 1674,-310,-2187,-3935,-5536,-6824,-7562,-7600,-6943,-5771, -4477,-3504,-3110,-3280,-3835,-4515,-4952,-4796,-4025,-3041, -2342,-2098,-2085,-2115,-2157,-2113,-1684,-698,679,2187, 3782,5547,7435,9304,10981,12337,13398,14280,15026,15550, 15864,16180,16647,17156,17487,17315,16237,14086,11196,8063, 4968,2180,71,-1152,-1723,-2114,-2653,-3398,-4303,-5299, -6266,-7098,-7830,-8539,-9235,-9942,-10671,-11330,-11772,-11829, -11427,-10712,-10009,-9538,-9229,-8930,-8523,-7898,-7038,-6054, -5056,-4050,-2960,-1730,-412,753,1418,1463,1041,279, -707,-1602,-2011,-1817,-1227,-451,485,1541,2477,3016, 3087,2871,2662,2774,3324,4108,4787,5151,5196,4971, 4395,3333,1706,-342,-2516,-4572,-6279,-7257,-7198,-6251, -5054,-4219,-3905,-3984,-4304,-4711,-4959,-4851,-4353,-3662, -3112,-2874,-2818,-2794,-2774,-2742,-2618,-2339,-1811,-890, 456,2043,3693,5401,7265,9203,10912,12140,12922,13471, 13994,14668,15571,16641,17744,18598,18712,17736,15732,12977, 9883,6988,4645,2856,1434,282,-673,-1584,-2569,-3575, -4456,-5160,-5797,-6534,-7460,-8509,-9570,-10496,-11116,-11322, -11204,-11003,-10873,-10742,-10456,-10005,-9499,-8999,-8489,-7934, -7352,-6668,-5681,-4263,-2562,-940,270,919,1040,744, 152,-618,-1402,-1992,-2129,-1586,-504,602,1321,1693, 1941,2077,2104,2243,2674,3301,3897,4373,4807,5303, 5773,5817,5016,3307,1005,-1482,-3762,-5407,-6106,-5917, -5249,-4617,-4334,-4451,-4803,-5069,-5029,-4789,-4539,-4271, -3880,-3414,-3071,-3000,-3140,-3252,-3195,-3031,-2835,-2529, -1985,-1124,134,1818,3786,5816,7724,9332,10488,11172, 11618,12217,13267,14804,16588,18197,19239,19427,18622,16883, 14495,11916,9494,7348,5474,3848,2394,934,-525,-1710, -2428,-2892,-3484,-4381,-5517,-6738,-7924,-8933,-9652,-10114, -10444,-10744,-11029,-11190,-11093,-10739,-10228,-9715,-9399,-9362, -9315,-8838,-7858,-6627,-5279,-3768,-2111,-538,568,919, 580,-120,-923,-1677,-2076,-1868,-1156,-357,180,480, 767,1114,1459,1785,2047,2210,2402,2839,3599,4600, 5692,6588,6823,6020,4178,1713,-729,-2622,-3808,-4431, -4688,-4690,-4589,-4601,-4821,-5132,-5360,-5373,-5135,-4719, -4280,-3948,-3739,-3606,-3492,-3410,-3401,-3448,-3455,-3420, -3404,-3308,-2819,-1661,119,2216,4314,6176,7544,8314, 8752,9309,10308,11815,13714,15790,17716,19054,19431,18752, 17335,15622,13846,11984,9981,7919,5867,3864,2138,892, 23,-698,-1405,-2230,-3336,-4684,-5974,-6939,-7624,-8339, -9254,-10172,-10744,-10882,-10781,-10672,-10571,-10369,-10119,-9995, -10015,-9964,-9662,-9057,-8107,-6706,-4869,-2851,-1105,-33, 213,-150,-740,-1248,-1513,-1537,-1409,-1173,-818,-391, 16,413,895,1375,1562,1369,1089,1184,1932,3268, 4868,6277,7073,7059,6242,4754,2826,800,-961,-2238, -2981,-3361,-3664,-4053,-4459,-4794,-5086,-5334,-5389,-5145, -4731,-4401,-4214,-4054,-3851,-3643,-3451,-3277,-3226,-3446, -3941,-4427,-4480,-3870,-2657,-983,1020,3065,4697,5693, 6207,6581,7241,8523,10474,12799,15045,16866,18077,18647, 18615,18068,17110,15819,14210,12232,9894,7507,5608,4323, 3265,2077,851,-187,-1091,-2065,-3160,-4300,-5417,-6503, -7552,-8517,-9288,-9795,-10089,-10282,-10392,-10360,-10180,-9975, -9948,-10229,-10669,-10841,-10354,-9133,-7405,-5487,-3632,-2106, -1140,-786,-843,-1002,-1063,-1071,-1183,-1399,-1501,-1254, -637,183,922,1255,1067,591,222,205,634,1591, 3084,4820,6291,7103,7167,6565,5409,3883,2240,732, -460,-1346,-2092,-2754,-3306,-3829,-4393,-4846,-5008,-4937, -4852,-4838,-4789,-4597,-4272,-3862,-3408,-3037,-2929,-3165, -3700,-4412,-5058,-5289,-4791,-3477,-1600,310,1808,2827, 3527,4043,4545,5405,6958,9116,11367,13304,14931,16404, 17741,18659,18824,18191,16976,15379,13541,11614,9757,8017, 6388,4883,3527,2344,1339,457,-465,-1627,-3009,-4347, -5440,-6389,-7373,-8392,-9257,-9768,-9889,-9766,-9599,-9550, -9737,-10235,-10949,-11573,-11722,-11160,-9904,-8216,-6478,-4994, -3820,-2803,-1864,-1175,-926,-1113,-1529,-1891,-2005,-1811, -1277,-435,452,931,824,339,-237,-685,-744,-139, 1129,2739,4320,5660,6594,6925,6579,5722,4598,3397, 2239,1147,80,-972,-1911,-2685,-3299,-3752,-4097,-4448, -4802,-5031,-5093,-5088,-5006,-4626,-3855,-3008,-2561,-2722, -3338,-4172,-5044,-5729,-5835,-5088,-3640,-2011,-691,181, 784,1381,2151,3122,4241,5516,7044,8882,10945,13064, 15112,16898,18126,18590,18337,17567,16484,15153,13537,11665, 9743,8039,6632,5375,4127,2942,1873,817,-292,-1416, -2591,-3910,-5318,-6655,-7804,-8669,-9090,-9034,-8718,-8559, -8941,-9940,-11100,-11905,-12225,-12156,-11735,-10936,-9804,-8438, -6924,-5316,-3755,-2509,-1794,-1611,-1817,-2203,-2495,-2424, -1885,-1004,-81,553,723,463,-117,-827,-1340,-1300, -596,658,2267,3959,5358,6213,6572,6615,6382,5784, 4825,3676,2525,1393,206,-970,-1897,-2455,-2810,-3265, -3937,-4673,-5287,-5690,-5807,-5502,-4728,-3663,-2724,-2395, -2883,-3944,-5087,-5882,-6123,-5825,-5117,-4168,-3173,-2279, -1500,-747,79,961,1784,2558,3571,5081,7069,9332, 11671,13903,15872,17480,18605,19089,18876,18062,16808,15298, 13708,12100,10447,8789,7240,5854,4551,3330,2327,1515, 525,-971,-2869,-4774,-6362,-7467,-8011,-8093,-8038,-8180, -8651,-9383,-10218,-10994,-11625,-12078,-12290,-12217,-11849,-11127, -9926,-8240,-6342,-4640,-3406,-2742,-2611,-2813,-3042,-3013, -2625,-1934,-1034,-80,638,765,195,-733,-1494,-1797, -1650,-1068,21,1529,3102,4389,5281,5896,6341,6555, 6380,5745,4735,3542,2341,1185,139,-646,-1105,-1456, -2037,-3029,-4314,-5483,-6069,-5880,-5098,-4043,-3033,-2456, -2589,-3351,-4317,-5076,-5485,-5624,-5593,-5340,-4783,-3968, -3062,-2212,-1504,-963,-505,77,943,2078,3403,4999, 6999,9347,11781,14066,16074,17655,18572,18738,18290,17490, 16519,15382,13972,12266,10422,8657,7153,6063,5361,4708, 3688,2130,209,-1803,-3668,-5144,-6065,-6520,-6796,-7139, -7613,-8180,-8815,-9508,-10236,-10970,-11714,-12422,-12877,-12768, -11974,-10666,-9096,-7437,-5819,-4502,-3806,-3769,-4022,-4084, -3710,-2967,-2031,-1043,-154,416,420,-169,-1045,-1781, -2120,-1999,-1450,-556,595,1910,3212,4296,5140,5874, 6495,6731,6320,5313,4058,2879,1980,1396,1026,651, -23,-1208,-2806,-4389,-5441,-5710,-5307,-4524,-3695,-3130, -2960,-3086,-3406,-3963,-4743,-5468,-5821,-5766,-5467,-5027, -4447,-3748,-3074,-2553,-2161,-1732,-1163,-481,314,1344, 2767,4657,6960,9501,12038,14259,15922,17048,17785,18191, 18204,17692,16607,15067,13274,11476,9966,8923,8209,7494, 6523,5197,3498,1521,-469,-2145,-3379,-4336,-5229,-6022, -6547,-6847,-7172,-7720,-8510,-9439,-10414,-11435,-12449,-13186, -13284,-12610,-11325,-9741,-8154,-6777,-5757,-5196,-5065,-5118, -4978,-4383,-3373,-2232,-1210,-435,17,33,-421,-1167, -1851,-2190,-2135,-1818,-1296,-501,575,1803,3106,4475, 5726,6505,6598,6078,5173,4181,3463,3185,3118,2804, 1941,585,-967,-2414,-3619,-4521,-4997,-4940,-4443,-3797, -3293,-3019,-3013,-3370,-4050,-4812,-5404,-5724,-5778,-5610, -5272,-4850,-4414,-3940,-3390,-2863,-2517,-2338,-2121,-1620, -674,771,2685,4902,7174,9327,11392,13461,15422,17000, 17986,18312,17950,16929,15444,13841,12500,11595,10916,10092, 8999,7750,6423,4928,3194,1354,-385,-1896,-3154,-4207, -5073,-5691,-6011,-6185,-6541,-7331,-8480,-9776,-11101,-12333, -13225,-13468,-12901,-11678,-10192,-8845,-7782,-7002,-6539,-6371, -6239,-5813,-4983,-3872,-2668,-1580,-807,-454,-487,-761, -1119,-1492,-1843,-2103,-2215,-2128,-1720,-808,722,2647, 4382,5436,5774,5657,5348,5017,4785,4686,4616,4365, 3772,2809,1556,115,-1364,-2686,-3670,-4223,-4331,-4056, -3540,-3020,-2773,-2942,-3394,-3912,-4428,-4946,-5376,-5619, -5681,-5574,-5228,-4628,-3949,-3488,-3386,-3503,-3560,-3356, -2821,-1928,-638,981,2717,4459,6344,8613,11260,13919, 16036,17252,17615,17369,16738,15848,14813,13821,13004,12280, 11453,10413,9190,7881,6538,5053,3297,1381,-386,-1868, -3111,-4090,-4648,-4804,-4885,-5269,-6118,-7404,-9007,-10677, -12083,-12971,-13218,-12812,-11877,-10661,-9484,-8616,-8154,-7943, -7716,-7295,-6615,-5651,-4434,-3173,-2184,-1631,-1361,-1083, -741,-582,-868,-1575,-2454,-3151,-3285,-2624,-1251,464, 2088,3353,4194,4638,4771,4810,4965,5206,5355,5339, 5161,4732,3912,2670,1159,-390,-1753,-2772,-3372,-3529, -3353,-3096,-2956,-2921,-2909,-2979,-3309,-3952,-4705,-5325, -5696,-5787,-5566,-5052,-4419,-3945,-3857,-4135,-4451,-4429, -3995,-3356,-2694,-2029,-1190,58,1794,3939,6431,9201, 11985,14300,15784,16471,16675,16573,16182,15556,14847,14138, 13401,12571,11625,10630,9592,8391,6902,5127,3180,1193, -606,-1969,-2793,-3200,-3401,-3589,-3960,-4775,-6192,-8057, -9933,-11411,-12339,-12687,-12432,-11663,-10649,-9793,-9361,-9254, -9139,-8738,-7993,-7013,-5985,-5094,-4368,-3620,-2692,-1661, -778,-272,-286,-855,-1842,-2890,-3535,-3458,-2682,-1490, -149,1189,2366,3212,3708,4050,4421,4826,5225,5636, 6040,6207,5848,4917,3583,2137,816,-326,-1326,-2103, -2547,-2702,-2705,-2626,-2455,-2257,-2259,-2675,-3518,-4525, -5288,-5483,-5185,-4769,-4513,-4372,-4259,-4237,-4342,-4416, -4283,-3988,-3713,-3553,-3360,-2852,-1829,-235,1901,4472, 7229,9874,12159,13940,15173,15885,16196,16235,16061,15637, 14977,14231,13564,12975,12307,11409,10257,8844,7098,4998, 2794,918,-379,-1181,-1627,-1816,-1973,-2412,-3364,-4873, -6795,-8809,-10474,-11397,-11534,-11219,-10844,-10597,-10446,-10268, -9959,-9458,-8791,-8067,-7430,-6929,-6384,-5525,-4282,-2876, -1591,-633,-167,-287,-943,-1885,-2732,-3183,-3155,-2694, -1834,-627,677,1738,2395,2792,3199,3780,4532,5357, 6099,6615,6788,6518,5719,4527,3300,2250,1245,100, -1085,-1952,-2219,-1992,-1630,-1427,-1497,-1872,-2550,-3393, -4133,-4542,-4604,-4516,-4459,-4462,-4479,-4473,-4384,-4173, -3950,-3873,-3995,-4210,-4384,-4422,-4174,-3409,-1969,71, 2438,4891,7346,9742,11881,13538,14694,15447,15857,15919, 15665,15228,14777,14400,14059,13635,12970,11925,10455,8631, 6582,4463,2489,937,67,-133,-73,-276,-1024,-2346, -4128,-6077,-7782,-8983,-9714,-10202,-10622,-10950,-11071,-10920, -10542,-10064,-9583,-9167,-8889,-8737,-8468,-7754,-6515,-4991, -3493,-2213,-1258,-725,-696,-1167,-2000,-2850,-3335,-3291, -2820,-2105,-1222,-241,620,1170,1506,2008,2917,4086, 5139,5849,6275,6521,6558,6270,5616,4627,3356,1918, 560,-482,-1074,-1223,-1093,-948,-1003,-1351,-1930,-2536, -3013,-3382,-3736,-4081,-4327,-4476,-4615,-4710,-4598,-4221, -3783,-3575,-3707,-4087,-4580,-5043,-5294,-5167,-4557,-3432, -1820,189,2464,4856,7241,9531,11601,13229,14271,14815, 15068,15181,15178,15062,14910,14798,14663,14302,13485,12099, 10188,7920,5609,3694,2549,2119,1942,1569,851,-209, -1579,-3124,-4642,-5994,-7187,-8297,-9357,-10279,-10854,-10925, -10574,-10131,-9897,-9904,-9954,-9918,-9799,-9515,-8834,-7615, -5995,-4330,-2949,-1958,-1334,-1157,-1540,-2319,-3045,-3344, -3168,-2703,-2183,-1706,-1261,-779,-202,526,1397,2309, 3190,4075,4965,5773,6418,6843,6920,6433,5292,3768, 2329,1241,495,28,-223,-364,-542,-881,-1367,-1850, -2194,-2456,-2782,-3239,-3793,-4350,-4773,-4931,-4783,-4432, -4040,-3703,-3511,-3632,-4148,-4876,-5493,-5815,-5827,-5533, -4887,-3766,-2101,7,2359,4786,7176,9343,11116,12445, 13393,13990,14244,14304,14437,14835,15391,15752,15545,14585, 12935,10859,8714,6843,5459,4581,4003,3401,2553,1514, 480,-469,-1496,-2825,-4428,-6015,-7389,-8574,-9558,-10162, -10270,-10057,-9866,-9906,-10138,-10404,-10595,-10665,-10499,-9890, -8722,-7095,-5301,-3694,-2588,-2141,-2212,-2478,-2697,-2825, -2890,-2858,-2726,-2573,-2416,-2131,-1584,-811,-42,571, 1150,1924,2970,4180,5405,6474,7144,7195,6589,5527, 4299,3145,2246,1662,1247,792,257,-250,-653,-945, -1193,-1468,-1797,-2190,-2726,-3462,-4243,-4747,-4818,-4571, -4206,-3814,-3479,-3353,-3551,-4005,-4574,-5184,-5789,-6247, -6353,-5964,-5063,-3718,-2025,-25,2293,4837,7320,9382, 10814,11679,12216,12678,13250,14057,15117,16157,16650,16226, 14970,13320,11675,10153,8709,7381,6268,5360,4502,3582, 2679,1893,1111,75,-1319,-2951,-4641,-6224,-7526,-8452, -9051,-9405,-9522,-9466,-9470,-9786,-10435,-11145,-11548,-11407, -10664,-9368,-7705,-6000,-4634,-3814,-3422,-3147,-2865,-2676, -2652,-2757,-2910,-3022,-2976,-2712,-2294,-1825,-1393,-1011, -613,-69,755,1961,3499,5086,6313,6895,6863,6435, 5774,4949,4076,3317,2713,2119,1438,755,216,-122, -308,-452,-668,-1057,-1660,-2440,-3255,-3909,-4311,-4478, -4451,-4235,-3847,-3393,-3075,-3120,-3606,-4357,-5099,-5691, -6168,-6534,-6627,-6274,-5432,-4103,-2208,269,3056,5599, 7411,8456,9150,9940,11010,12330,13787,15152,16127,16483, 16167,15323,14174,12903,11599,10286,8965,7662,6490,5576, 4903,4272,3473,2488,1389,132,-1409,-3179,-4903,-6340, -7416,-8111,-8402,-8422,-8489,-8887,-9692,-10731,-11636,-12055, -11821,-11001,-9824,-8535,-7302,-6200,-5232,-4402,-3763,-3370, -3173,-3113,-3192,-3357,-3405,-3167,-2754,-2443,-2349,-2364, -2289,-1989,-1354,-328,1077,2672,4152,5276,5947,6190, 6101,5785,5316,4740,4086,3354,2552,1754,1114,753, 605,453,150,-265,-706,-1207,-1879,-2737,-3593,-4187, -4411,-4365,-4148,-3777,-3318,-3022,-3134,-3601,-4134,-4587, -5101,-5849,-6749,-7482,-7684,-7086,-5624,-3509,-1108,1187, 3100,4563,5692,6706,7887,9405,11170,12862,14197,15137, 15736,15950,15666,14897,13809,12585,11315,10028,8795,7726, 6856,6120,5413,4703,3926,2957,1640,-50,-1952,-3787, -5274,-6221,-6620,-6772,-7081,-7726,-8622,-9630,-10627,-11416, -11813,-11729,-11232,-10461,-9534,-8475,-7277,-6059,-5028,-4334, -3968,-3808,-3721,-3618,-3428,-3125,-2794,-2580,-2600,-2823, -3072,-3115,-2817,-2136,-1063,318,1817,3174,4225,4995, 5616,6099,6254,5932,5278,4571,3923,3252,2527,1915, 1565,1387,1184,887,559,186,-374,-1227,-2257,-3166, -3706,-3859,-3798,-3678,-3586,-3506,-3353,-3078,-2844,-2946, -3530,-4518,-5757,-7060,-8094,-8405,-7722,-6231,-4382,-2544, -876,613,1984,3318,4689,6163,7796,9535,11235,12782, 14127,15149,15682,15699,15278,14503,13472,12324,11156,9979, 8809,7803,7147,6796,6437,5707,4467,2829,991,-851, -2464,-3647,-4379,-4864,-5387,-6117,-7043,-8062,-9047,-9943, -10745,-11385,-11725,-11682,-11250,-10433,-9282,-7970,-6759,-5873, -5354,-5047,-4755,-4381,-3950,-3499,-3038,-2655,-2578,-2931, -3496,-3843,-3742,-3304,-2705,-1909,-806,521,1831,2995, 4060,5044,5780,6075,5931,5521,4992,4388,3741,3078, 2457,2004,1847,1910,1897,1516,765,-135,-977,-1685, -2272,-2770,-3196,-3554,-3834,-3969,-3797,-3220,-2443,-1931, -2068,-2909,-4273,-5844,-7225,-8054,-8173,-7671,-6728,-5486, -4107,-2732,-1419,-100,1289,2727,4200,5781,7554,9479, 11333,12860,13993,14819,15348,15496,15162,14339,13143,11805, 10550,9558,8928,8626,8431,7999,7059,5589,3827,2076, 527,-766,-1818,-2678,-3439,-4250,-5173,-6134,-7013,-7872, -8889,-10069,-11104,-11698,-11824,-11551,-10880,-9806,-8548,-7489, -6869,-6566,-6227,-5654,-4919,-4189,-3547,-3057,-2845,-2973, -3340,-3733,-3983,-4010,-3799,-3370,-2763,-1950,-834,542, 1937,3127,4083,4891,5571,5964,5870,5300,4492,3737, 3184,2851,2725,2746,2708,2385,1755,1014,350,-187, -671,-1237,-1993,-2901,-3757,-4255,-4158,-3505,-2599,-1808, -1435,-1700,-2656,-4074,-5526,-6689,-7457,-7837,-7807,-7324, -6425,-5290,-4139,-3085,-2046,-853,578,2186,3881,5633, 7439,9227,10921,12506,13932,15031,15567,15363,14489,13269, 12069,11147,10640,10516,10488,10235,9518,8310,6813,5277, 3805,2352,928,-320,-1313,-2201,-3137,-4096,-4988,-5877, -6960,-8317,-9778,-11053,-11892,-12158,-11888,-11255,-10461,-9662, -8959,-8408,-7934,-7371,-6602,-5680,-4772,-4067,-3640,-3440, -3377,-3464,-3770,-4222,-4541,-4502,-4117,-3516,-2767,-1855, -768,486,1876,3318,4636,5587,5994,5852,5333,4675, 4135,3872,3818,3748,3490,3044,2547,2120,1778,1457, 1033,380,-583,-1801,-3040,-3947,-4227,-3878,-3158,-2381, -1762,-1467,-1654,-2396,-3596,-5004,-6324,-7301,-7814,-7903, -7655,-7151,-6505,-5811,-5021,-3995,-2669,-1169,331,1806, 3393,5213,7243,9379,11539,13548,15057,15700,15433,14635, 13774,13062,12487,12051,11769,11522,11076,10292,9211,7980, 6683,5311,3842,2362,1006,-109,-966,-1669,-2404,-3334, -4524,-5930,-7446,-8957,-10287,-11186,-11507,-11383,-11116,-10845, -10497,-9992,-9361,-8696,-8032,-7315,-6488,-5585,-4717,-4004, -3570,-3480,-3684,-4022,-4332,-4514,-4529,-4387,-4110,-3709, -3125,-2197,-818,894,2608,3966,4803,5166,5199,5053, 4866,4735,4650,4482,4121,3613,3150,2925,2962,3031, 2818,2170,1155,-67,-1334,-2474,-3277,-3586,-3392,-2838, -2127,-1455,-1047,-1139,-1856,-3039,-4334,-5418,-6231,-6866, -7321,-7488,-7381,-7131,-6743,-6054,-5008,-3799,-2680,-1675, -577,872,2791,5110,7626,10079,12205,13745,14530,14620, 14294,13846,13454,13157,12883,12547,12140,11708,11205,10482, 9428,8105,6657,5160,3662,2308,1298,658,130,-629, -1779,-3241,-4836,-6399,-7794,-8939,-9846,-10526,-10935,-11053, -10950,-10718,-10404,-10011,-9518,-8901,-8119,-7181,-6167,-5209, -4477,-4098,-4015,-4027,-4018,-4042,-4207,-4511,-4828,-4984, -4827,-4233,-3145,-1653,7,1532,2684,3446,4007,4547, 5025,5265,5177,4822,4346,3881,3542,3444,3611,3867, 3898,3536,2846,1918,735,-655,-1961,-2830,-3105,-2894, -2388,-1745,-1150,-835,-997,-1643,-2547,-3452,-4285,-5135, -6035,-6858,-7429,-7643,-7474,-6992,-6340,-5661,-5027,-4417, -3740,-2811,-1385,653,3167,5804,8210,10225,11821,12959, 13605,13815,13761,13613,13434,13203,12932,12684,12475,12202, 11674,10730,9352,7724,6133,4820,3853,3130,2457,1679, 725,-438,-1818,-3342,-4868,-6293,-7579,-8688,-9543,-10093, -10396,-10576,-10719,-10798,-10667,-10203,-9428,-8506,-7595,-6758, -6001,-5351,-4820,-4361,-3945,-3638,-3623,-4026,-4746,-5421, -5669,-5366,-4620,-3588,-2373,-1118,26,1066,2171,3363, 4401,5012,5153,4990,4681,4310,3941,3716,3781,4122, 4506,4678,4476,3865,2853,1497,10,-1284,-2091,-2319, -2107,-1706,-1341,-1105,-995,-993,-1161,-1591,-2297,-3219, -4265,-5371,-6402,-7111,-7298,-7038,-6631,-6342,-6217,-6132, -5933,-5454,-4545,-3110,-1166,1144,3588,5931,8015,9797, 11278,12408,13109,13358,13270,13079,13017,13158,13364,13409, 13125,12470,11446,10128,8697,7370,6274,5388,4590,3803, 3007,2145,1099,-220,-1794,-3446,-4945,-6170,-7171,-8061, -8887,-9607,-10220,-10760,-11100,-11002,-10413,-9601,-8887,-8331, -7773,-7088,-6264,-5343,-4415,-3689,-3427,-3749,-4479,-5214, -5602,-5586,-5337,-4962,-4389,-3552,-2528,-1400,-163,1200, 2568,3716,4468,4782,4744,4482,4137,3854,3749,3922, 4409,5054,5494,5386,4621,3385,1992,690,-362,-1061, -1390,-1441,-1380,-1303,-1181,-940,-630,-451,-647,-1336, -2422,-3676,-4842,-5707,-6187,-6338,-6312,-6255,-6306,-6534, -6838,-6955,-6620,-5754,-4450,-2833,-948,1194,3529,5896, 8052,9789,11025,11789,12187,12405,12661,13069,13538,13873, 13904,13595,13003,12190,11155,9900,8590,7459,6600,5912, 5244,4521,3671,2568,1127,-505,-2031,-3273,-4317,-5374, -6536,-7732,-8852,-9808,-10454,-10650,-10434,-10069,-9813,-9670, -9408,-8787,-7792,-6614,-5492,-4595,-4045,-3897,-4117,-4541, -4979,-5300,-5454,-5457,-5345,-5093,-4575,-3699,-2528,-1212, 152,1549,2883,3913,4412,4374,4032,3672,3511,3671, 4168,4900,5605,5958,5747,4994,3922,2774,1721,837, 86,-571,-1076,-1322,-1249,-908,-447,-46,119,-108, -799,-1891,-3111,-4110,-4717,-5029,-5251,-5511,-5865,-6296, -6716,-7042,-7215,-7156,-6756,-5940,-4709,-3046,-914,1560, 4021,6116,7768,9070,10108,10904,11538,12139,12779,13398, 13847,14026,13958,13639,12977,11941,10684,9502,8595,7932, 7348,6721,5967,4974,3697,2283,978,-114,-1144,-2338, -3781,-5341,-6789,-7930,-8698,-9189,-9560,-9892,-10157,-10303, -10258,-9923,-9204,-8153,-6992,-5967,-5205,-4689,-4363,-4226, -4335,-4664,-5055,-5341,-5485,-5550,-5520,-5275,-4685,-3702, -2375,-809,811,2226,3208,3640,3582,3280,3070,3206, 3729,4471,5180,5661,5838,5722,5321,4650,3786,2822, 1816,809,-113,-817,-1130,-976,-459,115,446,390, -11,-669,-1498,-2351,-3055,-3568,-4002,-4486,-5015,-5464, -5810,-6188,-6724,-7318,-7715,-7711,-7222,-6199,-4603,-2548, -305,1849,3775,5497,7051,8381,9426,10273,11083,11951, 12819,13558,14056,14204,13923,13215,12233,11245,10454,9884, 9372,8707,7794,6727,5694,4783,3916,2969,1843,523, -963,-2545,-4075,-5369,-6351,-7135,-7924,-8792,-9622,-10218, -10483,-10430,-10090,-9489,-8667,-7702,-6727,-5883,-5236,-4790, -4542,-4479,-4568,-4774,-5066,-5407,-5741,-5987,-6024,-5668, -4728,-3225,-1471,148,1372,2110,2435,2535,2605,2784, 3151,3724,4400,4990,5382,5614,5771,5808,5545,4860, 3814,2588,1353,297,-371,-511,-202,248,537,562, 404,148,-226,-784,-1478,-2170,-2785,-3337,-3815,-4160, -4426,-4819,-5509,-6424,-7309,-7923,-8142,-7896,-7139,-5884, -4214,-2285,-282,1655,3452,5055,6415,7551,8585,9705, 10989,12298,13325,13834,13806,13444,12991,12559,12121,11630, 11039,10286,9353,8352,7461,6790,6248,5581,4573,3229, 1720,234,-1132,-2369,-3519,-4629,-5749,-6867,-7939,-8919, -9738,-10270,-10428,-10245,-9800,-9137,-8310,-7436,-6638,-5976, -5464,-5063,-4707,-4426,-4389,-4748,-5436,-6186,-6691,-6762, -6310,-5312,-3865,-2258,-864,105,711,1156,1589,2019, 2430,2858,3343,3836,4285,4759,5367,6006,6368,6164, 5365,4195,2922,1747,834,310,166,232,330,409, 484,536,447,109,-477,-1180,-1829,-2341,-2706,-2982, -3259,-3653,-4261,-5109,-6119,-7117,-7900,-8327,-8367,-8018, -7207,-5840,-3995,-1999,-202,1290,2604,3899,5292,6834, 8470,10067,11427,12358,12804,12932,12989,13085,13107,12895, 12362,11550,10627,9803,9160,8637,8113,7491,6703,5689, 4451,3089,1735,463,-727,-1903,-3123,-4396,-5675,-6912, -8083,-9146,-9984,-10402,-10323,-9906,-9396,-8901,-8367,-7728, -7005,-6246,-5467,-4737,-4267,-4302,-4907,-5843,-6712,-7220, -7240,-6753,-5802,-4551,-3288,-2253,-1437,-674,118,855, 1414,1797,2102,2423,2857,3522,4425,5399,6167,6476, 6219,5495,4523,3487,2493,1609,926,513,402,509, 689,825,836,656,241,-366,-1012,-1503,-1775,-1946, -2202,-2616,-3126,-3698,-4415,-5378,-6548,-7713,-8625,-9064, -8878,-8049,-6742,-5225,-3728,-2382,-1175,79,1594,3402, 5316,7086,8561,9735,10690,11522,12250,12824,13148,13180, 12926,12443,11800,11104,10486,10010,9577,9044,8353,7541, 6647,5629,4425,3100,1826,714,-329,-1492,-2860,-4348, -5833,-7248,-8504,-9427,-9875,-9939,-9868,-9823,-9721,-9394, -8770,-7883,-6809,-5683,-4771,-4370,-4610,-5358,-6271,-7003, -7365,-7336,-6963,-6322,-5523,-4650,-3716,-2699,-1642,-688, 22,437,645,864,1324,2108,3085,4080,4989,5731, 6157,6163,5747,5015,4104,3125,2153,1328,840,774, 979,1173,1172,968,638,253,-146,-554,-951,-1300, -1578,-1788,-1959,-2198,-2639,-3426,-4618,-6109,-7581,-8648, -9069,-8836,-8156,-7308,-6474,-5645,-4661,-3374,-1815,-126, 1612,3348,5002,6509,7875,9178,10450,11580,12364,12726, 12797,12718,12506,12124,11622,11126,10715,10327,9848,9222, 8492,7652,6639,5491,4368,3378,2458,1431,158,-1354, -2989,-4617,-6108,-7323,-8197,-8787,-9262,-9741,-10169,-10371, -10150,-9422,-8290,-7004,-5858,-5088,-4840,-5104,-5683,-6293, -6749,-7033,-7199,-7234,-7037,-6484,-5562,-4425,-3309,-2353, -1581,-1015,-655,-379,18,661,1514,2466,3425,4371, 5264,5990,6360,6207,5534,4540,3512,2641,2011,1643, 1509,1487,1452,1365,1227,1023,721,306,-192,-699, -1087,-1211,-1052,-824,-881,-1494,-2666,-4142,-5595,-6809, -7691,-8207,-8358,-8237,-7976,-7614,-7029,-6070,-4760,-3302, -1852,-380,1209,2877,4529,6147,7748,9250,10515,11456, 12067,12411,12538,12460,12200,11883,11632,11435,11163,10701, 10054,9264,8371,7442,6566,5786,5048,4196,3059,1596, -56,-1702,-3186,-4457,-5561,-6579,-7601,-8649,-9660,-10463, -10804,-10484,-9586,-8430,-7353,-6508,-5900,-5521,-5404,-5564, -5948,-6457,-6989,-7455,-7723,-7619,-7055,-6110,-5032,-4072, -3321,-2718,-2188,-1691,-1228,-777,-257,440,1367,2508, 3754,4898,5728,6117,6024,5526,4790,3993,3274,2687, 2211,1823,1593,1600,1764,1832,1563,939,184,-426, -747,-766,-534,-184,7,-264,-1086,-2248,-3467,-4596, -5640,-6625,-7478,-8096,-8448,-8549,-8364,-7835,-7005,-6023, -4972,-3794,-2431,-909,728,2431,4165,5904,7597,9119, 10318,11157,11681,11942,12002,11984,11989,12023,11990,11755, 11223,10445,9607,8875,8294,7792,7241,6546,5601,4315, 2737,1135,-231,-1338,-2376,-3575,-5032,-6645,-8175,-9402, -10188,-10481,-10295,-9716,-8912,-8076,-7281,-6519,-5840,-5416, -5406,-5802,-6450,-7129,-7633,-7820,-7657,-7220,-6582,-5801, -4948,-4119,-3414,-2877,-2481,-2160,-1815,-1324,-569,517, 1865,3237,4356,5095,5547,5810,5798,5394,4658,3804, 3032,2470,2196,2226,2453,2608,2391,1725,837,104, -259,-269,-45,266,479,421,44,-590,-1366,-2233, -3233,-4388,-5593,-6672,-7513,-8080,-8385,-8426,-8206,-7726, -7028,-6180,-5219,-4105,-2793,-1286,375,2162,4073,6000, 7725,9042,9928,10523,10994,11429,11838,12186,12408,12415, 12087,11426,10615,9937,9562,9393,9142,8565,7622,6432, 5151,3906,2780,1776,772,-424,-1936,-3714,-5542,-7172, -8451,-9346,-9887,-10110,-10010,-9550,-8741,-7723,-6745,-6031, -5695,-5714,-6010,-6508,-7086,-7566,-7814,-7815,-7621,-7203, -6478,-5509,-4568,-3940,-3685,-3595,-3389,-2940,-2270,-1395, -312,907,2100,3199,4242,5191,5837,5961,5514,4688, 3818,3193,2928,2962,3123,3194,2976,2409,1621,887, 427,264,282,380,498,592,601,440,66,-519, -1286,-2219,-3324,-4540,-5715,-6710,-7483,-8055,-8401,-8445, -8168,-7674,-7099,-6493,-5759,-4746,-3374,-1677,232,2236, 4189,5913,7250,8207,8996,9843,10796,11699,12333,12530, 12299,11801,11257,10846,10651,10584,10440,10027,9263,8232, 7126,6136,5302,4539,3670,2532,1105,-481,-2124,-3812, -5526,-7131,-8450,-9393,-9937,-10052,-9706,-8938,-7970,-7115, -6537,-6180,-5971,-5969,-6270,-6834,-7482,-7976,-8147,-7935, -7372,-6574,-5745,-5119,-4791,-4632,-4425,-4052,-3558,-3004, -2355,-1522,-440,895,2388,3835,4970,5574,5576,5113, 4486,4013,3831,3853,3890,3818,3593,3206,2669,2043, 1455,1017,752,642,644,737,884,1005,980,729, 252,-381,-1142,-2090,-3255,-4535,-5725,-6675,-7374,-7837, -8056,-8052,-7910,-7729,-7510,-7111,-6332,-5043,-3305,-1342, 579,2286,3739,5018,6283,7640,9032,10291,11270,11864, 12003,11788,11500,11402,11486,11544,11388,10957,10342,9662, 8944,8172,7403,6700,5990,5119,4016,2749,1406,-83, -1845,-3827,-5776,-7404,-8560,-9239,-9504,-9408,-9004,-8381, -7651,-6894,-6216,-5796,-5802,-6258,-6962,-7612,-7978,-7992, -7717,-7269,-6760,-6261,-5813,-5414,-5040,-4712,-4468,-4314, -4146,-3749,-2898,-1536,141,1816,3208,4170,4674,4791, 4663,4479,4377,4383,4403,4340,4154,3881,3549,3117, 2549,1919,1405,1115,998,967,988,1082,1212,1286, 1215,961,525,-106,-1003,-2197,-3568,-4895,-5982,-6741, -7228,-7605,-8007,-8437,-8771,-8820,-8431,-7561,-6302,-4786, -3165,-1603,-152,1296,2937,4795,6678,8316,9574,10462, 11046,11414,11676,11932,12190,12359,12319,12027,11573,11087, 10615,10080,9419,8668,7934,7253,6568,5797,4822,3514, 1814,-188,-2285,-4279,-6029,-7474,-8599,-9375,-9711,-9521, -8862,-7963,-7095,-6461,-6199,-6345,-6785,-7285,-7662,-7870, -7952,-7953,-7841,-7529,-6978,-6283,-5664,-5310,-5267,-5415, -5553,-5474,-4968,-3905,-2372,-661,913,2190,3144,3827, 4285,4546,4664,4738,4831,4912,4895,4749,4495,4147, 3690,3146,2574,2061,1675,1433,1327,1319,1373,1473, 1640,1832,1886,1603,899,-137,-1313,-2476,-3536,-4444, -5192,-5873,-6645,-7564,-8466,-9042,-9081,-8612,-7829,-6914, -5945,-4912,-3754,-2378,-701,1264,3337,5239,6790,8005, 9009,9905,10698,11343,11825,12163,12357,12405,12316,12112, 11791,11320,10694,9997,9368,8895,8517,8075,7403,6435, 5181,3663,1900,-42,-2066,-4086,-5997,-7622,-8745,-9220, -9047,-8427,-7692,-7113,-6763,-6584,-6536,-6627,-6870,-7234, -7648,-8008,-8203,-8113,-7658,-6909,-6128,-5631,-5558,-5811, -6168,-6376,-6238,-5666,-4656,-3305,-1786,-315,961,2004, 2826,3456,3944,4336,4656,4892,5046,5131,5106,4895, 4492,4011,3571,3176,2739,2238,1773,1461,1358,1456, 1726,2105,2456,2543,2178,1383,397,-510,-1261,-1954, -2725,-3653,-4776,-6037,-7250,-8163,-8614,-8643,-8417,-8111, -7781,-7344,-6641,-5567,-4138,-2425,-532,1378,3156,4755, 6208,7544,8726,9681,10414,11018,11582,12109,12492,12607, 12411,11984,11469,10968,10520,10155,9874,9566,9095,8433, 7642,6768,5709,4270,2326,-8,-2414,-4579,-6294,-7464, -8083,-8225,-8046,-7736,-7390,-6996,-6577,-6262,-6239,-6581, -7172,-7788,-8210,-8291,-7987,-7386,-6694,-6132,-5835,-5860, -6159,-6564,-6828,-6742,-6230,-5359,-4224,-2907,-1517,-190, 937,1805,2499,3159,3836,4442,4880,5136,5251,5240, 5090,4829,4550,4288,3940,3376,2635,1932,1508,1482, 1805,2291,2710,2883,2717,2250,1651,1114,695,268, -360,-1307,-2540,-3901,-5201,-6281,-7053,-7555,-7908,-8206, -8425,-8460,-8204,-7594,-6663,-5503,-4129,-2510,-672,1232, 3023,4604,5969,7155,8218,9210,10167,11093,11889,12378, 12447,12208,11903,11667,11454,11166,10775,10345,9949,9624, 9350,9040,8540,7638,6181,4173,1817,-557,-2668,-4428, -5843,-6916,-7611,-7897,-7767,-7317,-6741,-6275,-6091,-6246, -6697,-7320,-7920,-8270,-8220,-7812,-7241,-6723,-6374,-6211, -6238,-6474,-6866,-7221,-7275,-6889,-6132,-5133,-3972,-2726, -1523,-457,478,1380,2313,3228,3984,4485,4758,4904, 5026,5157,5244,5200,4940,4380,3533,2626,1982,1787, 1986,2372,2694,2801,2684,2452,2240,2113,2033,1858, 1413,603,-509,-1732,-2884,-3930,-4921,-5874,-6739,-7446, -7983,-8367,-8578,-8559,-8289,-7763,-6952,-5793,-4249,-2431, -574,1097,2534,3854,5218,6648,8042,9298,10330,11079, 11531,11779,11933,12031,11991,11741,11310,10818,10412,10224, 10273,10408,10357,9876,8905,7523,5832,3900,1780,-432, -2548,-4388,-5852,-6875,-7375,-7321,-6861,-6322,-6026,-6075, -6400,-6882,-7406,-7866,-8131,-8102,-7776,-7293,-6826,-6499, -6367,-6457,-6767,-7214,-7602,-7690,-7380,-6765,-5972,-5066, -4078,-3035,-1941,-787,383,1490,2412,3069,3504,3872, 4333,4907,5433,5693,5567,5047,4247,3396,2738,2419, 2420,2557,2616,2518,2354,2288,2386,2553,2650,2604, 2372,1907,1193,295,-674,-1664,-2707,-3818,-4935,-5923, -6703,-7333,-7922,-8489,-8914,-9034,-8732,-7991,-6873,-5520, -4090,-2678,-1263,239,1846,3490,5088,6557,7817,8852, 9743,10575,11322,11862,12032,11807,11364,10939,10666,10575, 10639,10808,10980,10974,10614,9873,8849,7586,5991,3984, 1657,-762,-2952,-4672,-5825,-6436,-6555,-6336,-6046,-5925, -6080,-6453,-6943,-7462,-7912,-8158,-8111,-7787,-7320,-6887, -6630,-6609,-6820,-7177,-7546,-7780,-7804,-7632,-7328,-6918, -6352,-5527,-4402,-3077,-1755,-600,323,1030,1624,2261, 3074,4063,4998,5588,5667,5308,4735,4178,3728,3374, 3101,2898,2693,2443,2216,2151,2295,2544,2732,2790, 2740,2596,2341,1918,1261,350,-717,-1794,-2780,-3686, -4575,-5524,-6559,-7596,-8473,-9049,-9251,-9052,-8504,-7745, -6896,-5941,-4765,-3287,-1595,107,1669,3099,4476,5854, 7240,8587,9792,10730,11295,11427,11202,10864,10663,10660, 10750,10837,10919,11036,11130,11098,10851,10292,9313,7828, 5835,3490,1055,-1206,-3084,-4454,-5283,-5643,-5679,-5607, -5633,-5874,-6333,-6922,-7514,-7963,-8129,-7965,-7565,-7137, -6881,-6857,-6985,-7149,-7290,-7419,-7570,-7738,-7904,-8020, -7949,-7489,-6534,-5231,-3904,-2824,-2030,-1370,-654,239, 1335,2557,3724,4604,5050,5100,4933,4713,4509,4271, 3928,3480,3020,2650,2431,2349,2341,2353,2413,2576, 2825,3043,3106,2916,2458,1791,987,146,-635,-1357, -2159,-3198,-4486,-5846,-7033,-7887,-8434,-8789,-8995,-8987, -8704,-8137,-7290,-6143,-4745,-3249,-1826,-506,842,2363, 4060,5798,7403,8731,9705,10302,10572,10636,10627,10615, 10601,10584,10598,10697,10931,11273,11589,11701,11441,10687, 9374,7535,5308,2931,659,-1333,-2917,-3994,-4546,-4727, -4807,-5051,-5564,-6259,-6953,-7482,-7769,-7793,-7603,-7335, -7172,-7190,-7263,-7221,-7055,-6939,-7043,-7419,-7974,-8486, -8720,-8534,-7910,-6964,-5929,-5018,-4307,-3693,-2974,-1989, -757,566,1806,2829,3601,4173,4598,4865,4905,4731, 4445,4124,3772,3396,3035,2717,2455,2266,2194,2316, 2663,3112,3413,3364,2995,2521,2107,1744,1310,719, -59,-1042,-2225,-3526,-4769,-5836,-6742,-7567,-8325,-8929, -9241,-9161,-8694,-7940,-7018,-6021,-4983,-3880,-2640,-1181, 527,2381,4186,5796,7166,8287,9159,9781,10155,10310, 10323,10262,10184,10164,10339,10774,11372,11929,12255,12242, 11816,10842,9243,7129,4777,2466,416,-1204,-2319,-2979, -3387,-3825,-4475,-5298,-6088,-6661,-6980,-7128,-7218,-7327, -7439,-7490,-7400,-7144,-6803,-6554,-6572,-6935,-7568,-8235, -8666,-8687,-8333,-7794,-7261,-6779,-6270,-5648,-4868,-3940, -2906,-1777,-573,640,1771,2768,3615,4271,4665,4787, 4732,4656,4597,4445,4068,3479,2869,2460,2349,2492, 2791,3136,3387,3443,3310,3118,2983,2894,2736,2388, 1784,955,-5,-1014,-2053,-3141,-4303,-5520,-6714,-7779, -8563,-8949,-8953,-8712,-8352,-7908,-7323,-6546,-5546,-4316, -2865,-1209,578,2359,4020,5561,6995,8240,9156,9689, 9911,9961,9929,9872,9887,10111,10589,11272,12024,12673, 13044,12951,12228,10786,8740,6415,4203,2363,939,-182, -1166,-2132,-3091,-3982,-4734,-5327,-5786,-6186,-6601,-7065, -7501,-7734,-7615,-7184,-6666,-6348,-6404,-6791,-7316,-7791, -8139,-8336,-8386,-8293,-8116,-7908,-7645,-7224,-6587,-5817, -5019,-4170,-3144,-1895,-525,780,1880,2731,3393,3948, 4439,4837,5074,5069,4754,4164,3492,2967,2737,2778, 2950,3103,3179,3197,3219,3291,3405,3492,3474,3287, 2900,2360,1778,1189,477,-485,-1706,-3086,-4501,-5824, -6944,-7761,-8248,-8498,-8645,-8722,-8647,-8317,-7704,-6834, -5765,-4518,-3078,-1462,269,2061,3843,5515,6961,8067, 8797,9211,9396,9425,9379,9361,9502,9943,10776,11902, 12990,13656,13662,12931,11570,9827,7979,6209,4593,3116, 1694,262,-1118,-2264,-3052,-3573,-4095,-4816,-5708,-6574, -7212,-7517,-7487,-7188,-6770,-6442,-6389,-6627,-6995,-7317, -7561,-7799,-8079,-8331,-8450,-8408,-8255,-8041,-7797,-7484, -7016,-6324,-5390,-4249,-2974,-1717,-597,375,1301,2276, 3289,4199,4828,5085,4981,4605,4106,3657,3365,3226, 3155,3058,2944,2922,3061,3296,3510,3639,3676,3613, 3452,3224,2992,2761,2420,1793,788,-515,-1926,-3287, -4524,-5613,-6544,-7308,-7920,-8398,-8727,-8856,-8738,-8371, -7794,-7024,-6045,-4816,-3324,-1611,220,2059,3815,5421, 6835,7966,8690,8952,8847,8609,8508,8779,9514,10651, 11985,13179,13859,13825,13206,12279,11208,9974,8499,6788, 4971,3222,1670,409,-538,-1274,-2017,-2945,-4073,-5232, -6166,-6700,-6864,-6818,-6688,-6545,-6438,-6397,-6453,-6635, -6939,-7308,-7657,-7919,-8068,-8111,-8117,-8179,-8320,-8418, -8277,-7787,-7010,-6082,-5092,-4089,-3116,-2153,-1089,167, 1550,2847,3838,4423,4666,4703,4628,4457,4199,3909, 3636,3370,3121,2991,3070,3303,3546,3677,3674,3605, 3561,3600,3694,3746,3649,3323,2728,1837,690,-574, -1828,-3038,-4208,-5316,-6317,-7159,-7809,-8274,-8603,-8829, -8894,-8679,-8107,-7241,-6184,-4959,-3528,-1873,-38,1914, 3875,5681,7101,7899,8009,7686,7404,7545,8203,9246, 10454,11617,12563,13180,13467,13469,13206,12598,11540,10019, 8189,6328,4700,3410,2362,1376,322,-844,-2093,-3322, -4421,-5309,-5955,-6363,-6573,-6597,-6445,-6229,-6135,-6283, -6622,-6999,-7287,-7455,-7546,-7623,-7768,-8055,-8469,-8841, -8952,-8692,-8141,-7499,-6890,-6297,-5621,-4759,-3658,-2347, -910,518,1789,2782,3490,4000,4388,4628,4639,4396, 3999,3593,3313,3203,3225,3303,3388,3437,3424,3375, 3366,3474,3697,3955,4115,4068,3786,3311,2678,1856, 797,-476,-1812,-3038,-4134,-5162,-6130,-6994,-7738,-8378, -8898,-9186,-9132,-8747,-8173,-7538,-6799,-5751,-4195,-2124, 226,2516,4425,5707,6322,6455,6430,6559,7022,7788, 8708,9627,10522,11462,12458,13357,13912,13942,13404,12364, 10954,9408,7947,6633,5392,4145,2890,1656,452,-772, -2067,-3368,-4521,-5400,-5953,-6194,-6190,-6056,-5981,-6130, -6485,-6842,-7035,-7054,-7029,-7117,-7397,-7839,-8333,-8745, -8973,-8986,-8815,-8536,-8238,-7967,-7631,-7047,-6127,-4947, -3640,-2313,-1010,250,1452,2532,3412,4027,4349,4390, 4212,3914,3620,3459,3455,3505,3467,3319,3166,3116, 3192,3338,3493,3671,3902,4139,4260,4188,3930,3488, 2796,1809,617,-598,-1706,-2739,-3811,-4982,-6163,-7198, -7968,-8439,-8710,-8908,-9082,-9189,-9116,-8668,-7628,-5905, -3653,-1253,882,2531,3694,4495,5078,5548,5986,6432, 6914,7489,8272,9366,10722,12090,13164,13768,13890,13576, 12880,11889,10726,9491,8223,6950,5706,4513,3340,2105, 704,-846,-2382,-3663,-4534,-5027,-5321,-5562,-5811,-6078, -6334,-6524,-6602,-6582,-6549,-6642,-6951,-7439,-7937,-8299, -8509,-8631,-8733,-8843,-8936,-8933,-8757,-8394,-7862,-7146, -6216,-5103,-3880,-2596,-1220,232,1609,2688,3349,3676, 3816,3872,3871,3815,3732,3664,3592,3463,3274,3123, 3087,3145,3229,3330,3503,3793,4161,4483,4598,4399, 3928,3310,2624,1855,948,-115,-1337,-2706,-4115,-5346, -6236,-6802,-7254,-7836,-8626,-9496,-10198,-10432,-9971,-8791, -7070,-5103,-3157,-1366,282,1797,3089,4032,4608,4943, 5216,5589,6211,7173,8435,9849,11226,12370,13166,13590, 13648,13311,12581,11556,10439,9399,8462,7508,6395,5070, 3557,1921,300,-1137,-2285,-3159,-3861,-4501,-5137,-5713, -6090,-6199,-6119,-6024,-6063,-6274,-6594,-6935,-7262,-7581, -7866,-8092,-8292,-8546,-8867,-9133,-9198,-9029,-8742,-8435, -8059,-7461,-6551,-5345,-3929,-2408,-912,439,1560,2393, 2959,3359,3679,3905,3981,3912,3800,3727,3678,3584, 3412,3215,3071,3074,3262,3604,4030,4424,4638,4611, 4419,4209,4031,3771,3260,2389,1173,-268,-1724,-2942, -3783,-4352,-4929,-5759,-6898,-8192,-9338,-10073,-10287,-10012, -9286,-8156,-6706,-5034,-3216,-1362,362,1773,2755,3338, 3709,4100,4646,5374,6273,7379,8697,10128,11486,12579, 13259,13467,13243,12719,12061,11393,10751,10058,9178,7995, 6502,4861,3305,1959,771,-378,-1545,-2684,-3686,-4497, -5096,-5446,-5554,-5530,-5554,-5747,-6076,-6410,-6654,-6829, -7043,-7347,-7716,-8086,-8401,-8637,-8807,-8923,-8986,-8996, -8948,-8779,-8358,-7570,-6429,-5080,-3690,-2336,-1032,185, 1254,2118,2760,3205,3496,3686,3831,3973,4061,3991, 3712,3327,3031,2956,3114,3441,3829,4132,4265,4263, 4282,4458,4778,5027,4918,4289,3192,1869,608,-422, -1224,-1927,-2665,-3570,-4725,-6076,-7414,-8560,-9441,-10036, -10290,-10100,-9377,-8138,-6515,-4701,-2901,-1270,106,1213, 2045,2642,3100,3561,4158,5005,6165,7605,9201,10751, 11986,12701,12920,12875,12799,12730,12531,12081,11365,10402, 9207,7843,6441,5104,3844,2579,1222,-225,-1624,-2785, -3629,-4211,-4624,-4938,-5178,-5365,-5544,-5756,-5981,-6200, -6433,-6725,-7097,-7496,-7815,-8010,-8164,-8398,-8725,-9058, -9311,-9440,-9363,-9004,-8355,-7487,-6436,-5190,-3769,-2298, -942,186,1076,1785,2400,2977,3517,3966,4243,4259, 3998,3567,3198,3100,3288,3580,3764,3759,3666,3680, 3932,4418,5005,5499,5688,5407,4671,3702,2748,1922, 1184,433,-393,-1314,-2333,-3454,-4687,-6029,-7423,-8737, -9785,-10400,-10489,-10034,-9082,-7736,-6150,-4492,-2881,-1380, -62,942,1553,1869,2184,2795,3831,5211,6751,8279, 9649,10753,11554,12114,12553,12931,13205,13229,12877,12175, 11287,10346,9362,8266,7027,5665,4231,2748,1261,-137, -1337,-2306,-3114,-3813,-4359,-4708,-4892,-5003,-5143,-5371, -5693,-6081,-6480,-6819,-7033,-7171,-7361,-7688,-8105,-8530, -8910,-9224,-9454,-9567,-9503,-9170,-8510,-7548,-6333,-4944, -3520,-2253,-1234,-368,548,1605,2668,3499,3946,4021, 3851,3625,3496,3528,3667,3770,3704,3460,3194,3134, 3427,4027,4732,5313,5619,5617,5375,4987,4463,3794, 3045,2310,1604,863,47,-852,-1878,-3132,-4659,-6336, -7901,-9132,-9942,-10342,-10349,-9931,-9014,-7612,-5895,-4137, -2589,-1391,-573,-67,301,781,1589,2764,4162,5559, 6827,7994,9140,10263,11279,12104,12711,13084,13178,12979, 12578,12071,11465,10690,9688,8472,7110,5664,4207,2789, 1426,109,-1143,-2271,-3180,-3795,-4124,-4298,-4493,-4801, -5192,-5586,-5921,-6193,-6424,-6637,-6849,-7104,-7443,-7840, -8233,-8609,-9017,-9501,-9981,-10231,-10038,-9366,-8380,-7288, -6228,-5231,-4230,-3125,-1852,-453,896,1996,2701,3024, 3116,3203,3435,3762,3973,3914,3596,3196,2904,2825, 2983,3371,3925,4517,4996,5283,5399,5391,5241,4881, 4301,3629,3024,2540,2068,1445,559,-586,-1920,-3369, -4916,-6519,-8047,-9337,-10279,-10772,-10688,-9937,-8599,-6946, -5332,-4019,-3069,-2372,-1763,-1124,-377,538,1607,2744, 3882,5050,6321,7692,9054,10265,11247,11978,12462,12750, 12892,12899,12737,12344,11674,10741,9640,8478,7279,5969, 4494,2922,1394,20,-1155,-2099,-2785,-3263,-3651,-4048, -4484,-4897,-5217,-5464,-5731,-6073,-6426,-6688,-6838,-6944, -7133,-7534,-8182,-8986,-9746,-10258,-10387,-10136,-9612,-8970, -8357,-7780,-7059,-5978,-4507,-2875,-1392,-222,648,1324, 1920,2490,3042,3547,3906,3999,3784,3385,3006,2802, 2794,2937,3189,3586,4136,4742,5224,5453,5411,5199, 4922,4621,4271,3899,3527,3092,2488,1676,709,-375, -1627,-3151,-4941,-6846,-8622,-10009,-10780,-10799,-10130,-9032, -7787,-6619,-5608,-4731,-3906,-3088,-2271,-1459,-634,219, 1145,2216,3467,4877,6362,7776,9000,10018,10905,11702, 12370,12821,13012,12976,12746,12305,11670,10898,9987,8877, 7519,5963,4346,2817,1461,287,-749,-1689,-2520,-3178, -3624,-3929,-4242,-4655,-5145,-5636,-6031,-6252,-6279,-6200, -6199,-6495,-7190,-8147,-9038,-9600,-9833,-9911,-9961,-9995, -9952,-9722,-9182,-8265,-7020,-5583,-4141,-2863,-1817,-912, 27,1045,2015,2778,3283,3597,3755,3718,3473,3108, 2777,2619,2685,2967,3442,4045,4626,5023,5179,5173, 5115,5065,4998,4859,4602,4225,3765,3295,2836,2298, 1512,310,-1381,-3472,-5680,-7653,-9134,-10017,-10292,-10032, -9407,-8624,-7795,-6933,-6009,-5038,-4121,-3351,-2691,-2009, -1199,-241,855,2082,3412,4783,6140,7453,8715,9894, 10925,11738,12306,12645,12805,12858,12833,12645,12132,11236, 10065,8780,7441,6040,4591,3147,1753,449,-709,-1612, -2196,-2568,-2953,-3538,-4325,-5093,-5570,-5660,-5511,-5368, -5438,-5804,-6414,-7130,-7818,-8369,-8759,-9062,-9435,-9942, -10448,-10678,-10428,-9749,-8857,-7885,-6830,-5696,-4535,-3374, -2215,-1066,42,1076,1996,2764,3334,3654,3682,3438, 3033,2653,2485,2609,2978,3472,3958,4337,4605,4826, 5042,5239,5353,5308,5075,4744,4463,4324,4282,4203, 3919,3244,2016,212,-1966,-4163,-6077,-7603,-8728,-9436, -9726,-9614,-9153,-8440,-7600,-6752,-5957,-5231,-4555,-3892, -3168,-2327,-1372,-355,690,1809,3082,4539,6092,7572, 8835,9846,10677,11402,12043,12592,13026,13278,13238,12830, 12107,11214,10241,9157,7863,6313,4602,2981,1697,778, 67,-635,-1429,-2320,-3243,-4068,-4635,-4833,-4744,-4631, -4763,-5180,-5723,-6192,-6539,-6861,-7278,-7845,-8534,-9264, -9927,-10421,-10644,-10554,-10181,-9592,-8840,-7947,-6947,-5868, -4743,-3603,-2442,-1228,32,1243,2277,3024,3402,3399, 3130,2817,2644,2665,2803,2983,3210,3523,3910,4324, 4735,5105,5351,5386,5181,4850,4610,4625,4887,5223, 5393,5193,4505,3320,1725,-152,-2170,-4166,-5958,-7429, -8535,-9220,-9432,-9190,-8642,-8018,-7451,-6906,-6285,-5567, -4806,-4067,-3356,-2625,-1810,-857,278,1628,3157,4709, 6112,7316,8388,9430,10489,11497,12293,12778,13010,13121, 13163,13037,12592,11768,10600,9144,7516,5930,4612,3615, 2761,1808,652,-624,-1800,-2679,-3229,-3549,-3769,-4003, -4304,-4649,-4982,-5250,-5461,-5686,-6030,-6550,-7220,-7971, -8733,-9448,-10044,-10457,-10608,-10482,-10108,-9536,-8796,-7953, -7101,-6241,-5248,-3982,-2474,-933,426,1509,2270,2712, 2893,2919,2891,2869,2850,2803,2757,2821,3115,3656, 4329,4913,5229,5229,5014,4744,4586,4625,4893,5338, 5814,6084,5972,5452,4585,3367,1746,-234,-2366,-4390, -6087,-7359,-8215,-8712,-8907,-8837,-8549,-8116,-7596,-6986, -6291,-5605,-5042,-4583,-4046,-3237,-2136,-891,351,1574, 2854,4228,5652,7043,8342,9508,10476,11201,11768,12356, 13029,13629,13883,13565,12645,11330,9947,8715,7662,6668, 5584,4343,2959,1541,248,-791,-1555,-2149,-2691,-3212, -3668,-4049,-4360,-4589,-4744,-4900,-5139,-5514,-6019,-6617, -7290,-8070,-8953,-9781,-10355,-10582,-10527,-10305,-9999,-9637, -9186,-8588,-7759,-6649,-5280,-3730,-2172,-793,282,1106, 1804,2409,2834,2991,2894,2656,2430,2357,2540,3001, 3678,4384,4870,4995,4820,4564,4420,4458,4654,4968, 5384,5861,6318,6601,6504,5903,4824,3329,1484,-574, -2591,-4337,-5750,-6904,-7870,-8572,-8864,-8715,-8277,-7763, -7311,-6940,-6597,-6206,-5689,-5003,-4141,-3179,-2214,-1256, -194,1107,2672,4340,5854,7049,7963,8808,9765,10890, 12089,13164,13866,14035,13668,12938,12080,11230,10376,9443, 8375,7147,5765,4309,2922,1716,693,-225,-1094,-1877, -2528,-3024,-3415,-3751,-4045,-4269,-4416,-4535,-4733,-5120, -5752,-6590,-7527,-8436,-9209,-9766,-10081,-10195,-10235,-10319, -10390,-10253,-9743,-8858,-7712,-6428,-5076,-3719,-2412,-1171, 9,1094,1980,2542,2706,2517,2181,1986,2114,2524, 3073,3626,4105,4451,4604,4543,4351,4183,4164,4308, 4580,5019,5664,6423,7029,7186,6762,5834,4567,3069, 1378,-461,-2358,-4193,-5818,-7082,-7908,-8298,-8330,-8179, -8035,-7971,-7865,-7552,-7010,-6368,-5760,-5224,-4688,-4002, -3033,-1731,-181,1397,2783,3902,4868,5884,7095,8491, 9943,11286,12362,13044,13302,13251,13037,12706,12206,11486, 10552,9465,8270,7011,5710,4375,3038,1796,729,-175, -1003,-1789,-2498,-3087,-3537,-3846,-4008,-4035,-4027,-4161, -4604,-5366,-6295,-7188,-7938,-8526,-9023,-9498,-9970,-10424, -10811,-11032,-10968,-10554,-9817,-8888,-7908,-6900,-5724,-4271, -2657,-1132,109,1010,1569,1785,1737,1609,1617,1848, 2253,2708,3151,3583,3991,4274,4303,4070,3731,3509, 3586,4016,4708,5518,6284,6859,7124,7026,6578,5811, 4692,3154,1216,-900,-2890,-4543,-5800,-6707,-7356,-7847, -8241,-8487,-8475,-8175,-7736,-7367,-7152,-7004,-6757,-6244, -5375,-4190,-2833,-1487,-294,720,1672,2758,4095,5633, 7216,8688,9951,11001,11868,12552,12988,13112,12969,12653, 12178,11476,10543,9473,8313,7046,5693,4350,3114,2024, 1039,63,-953,-1934,-2727,-3202,-3363,-3355,-3354,-3481, -3797,-4326,-5043,-5828,-6528,-7083,-7583,-8186,-8957,-9775, -10428,-10815,-10997,-11043,-10927,-10615,-10125,-9454,-8528,-7258, -5675,-3966,-2375,-1096,-189,423,860,1156,1296,1344, 1468,1789,2305,2922,3518,3968,4149,4014,3656,3305, 3194,3417,3894,4485,5112,5756,6405,7001,7433,7543, 7139,6092,4487,2627,797,-887,-2452,-3934,-5315,-6513, -7410,-7919,-8045,-7917,-7730,-7657,-7751,-7921,-7985,-7720, -7025,-6004,-4899,-3898,-3006,-2115,-1127,-19,1209,2575, 4077,5642,7152,8541,9792,10897,11822,12503,12904,13046, 12993,12785,12373,11665,10656,9468,8265,7123,6009,4841, 3617,2368,1107,-141,-1268,-2083,-2482,-2572,-2606,-2793, -3167,-3635,-4090,-4521,-4980,-5508,-6119,-6834,-7646,-8496, -9285,-9897,-10304,-10607,-10924,-11248,-11419,-11246,-10644,-9673, -8432,-6993,-5440,-3911,-2542,-1401,-496,131,455,565, 662,941,1469,2177,2905,3479,3767,3776,3613,3428, 3327,3335,3389,3495,3765,4325,5195,6241,7217,7869, 8020,7646,6854,5755,4419,2894,1234,-549,-2408,-4184, -5615,-6493,-6858,-6981,-7150,-7474,-7890,-8260,-8454,-8387, -8041,-7449,-6696,-5888,-5110,-4359,-3560,-2625,-1540,-345, 945,2352,3907,5539,7092,8440,9594,10641,11612,12426, 12976,13230,13210,12912,12294,11422,10469,9577,8740,7807, 6630,5182,3601,2101,847,-122,-845,-1353,-1702,-2009, -2384,-2819,-3194,-3451,-3667,-4016,-4602,-5377,-6208,-6980, -7663,-8285,-8873,-9465,-10112,-10783,-11350,-11659,-11636,-11279, -10604,-9618,-8335,-6833,-5237,-3701,-2397,-1471,-949,-674, -404,28,656,1383,2055,2556,2902,3191,3468,3659, 3659,3449,3122,2854,2821,3143,3859,4888,6004,6932, 7508,7750,7770,7607,7156,6237,4784,2901,841,-1115, -2761,-4016,-4911,-5544,-6061,-6597,-7222,-7855,-8326,-8519, -8473,-8284,-7966,-7471,-6821,-6132,-5492,-4856,-4112,-3175, -2035,-737,673,2176,3730,5236,6611,7886,9171,10489, 11707,12614,13064,13059,12755,12344,11918,11448,10883,10172, 9220,7926,6352,4739,3322,2167,1209,364,-414,-1116, -1692,-2099,-2340,-2497,-2683,-3018,-3539,-4181,-4845,-5481, -6088,-6694,-7342,-8054,-8824,-9612,-10352,-10993,-11514,-11883, -11977,-11629,-10772,-9472,-7888,-6274,-4901,-3894,-3146,-2485, -1808,-1115,-446,171,744,1286,1829,2404,2984,3471, 3702,3571,3153,2685,2458,2614,3091,3737,4442,5166, 5931,6737,7502,8074,8321,8120,7351,6004,4239,2365, 657,-800,-2067,-3192,-4159,-4981,-5727,-6453,-7145,-7731, -8122,-8280,-8233,-8030,-7705,-7272,-6778,-6290,-5823,-5260, -4432,-3303,-1997,-674,607,1884,3238,4707,6273,7872, 9411,10745,11699,12208,12388,12440,12472,12467,12341,11983, 11286,10234,8958,7630,6340,5090,3850,2634,1495,504, -281,-826,-1179,-1437,-1713,-2063,-2497,-2987,-3489,-3976, -4475,-5052,-5735,-6474,-7181,-7807,-8430,-9196,-10156,-11165, -11935,-12217,-11924,-11121,-9974,-8679,-7425,-6322,-5342,-4392, -3443,-2549,-1784,-1192,-717,-176,586,1526,2425,3073, 3397,3434,3260,2980,2732,2644,2747,2984,3283,3671, 4281,5204,6360,7514,8395,8821,8737,8147,7106,5722, 4159,2579,1115,-203,-1428,-2585,-3627,-4548,-5416,-6282, -7077,-7651,-7919,-7934,-7833,-7710,-7568,-7377,-7099,-6687, -6073,-5242,-4259,-3217,-2184,-1136,29,1411,3042,4842, 6641,8226,9476,10404,11136,11775,12336,12775,13024,12998, 12660,12061,11276,10341,9256,8043,6735,5358,3963,2678, 1639,890,336,-169,-697,-1190,-1565,-1849,-2156,-2596, -3182,-3841,-4454,-4955,-5378,-5831,-6451,-7326,-8458,-9712, -10875,-11701,-12014,-11813,-11289,-10627,-9832,-8815,-7605,-6361, -5252,-4350,-3631,-3026,-2446,-1753,-855,206,1268,2137, 2680,2922,3017,3093,3155,3115,2934,2708,2578,2647, 2981,3638,4643,5910,7217,8273,8876,9008,8733,8069, 7025,5694,4269,2897,1603,354,-882,-2104,-3309,-4464, -5489,-6291,-6846,-7202,-7436,-7621,-7796,-7930,-7916,-7672, -7189,-6548,-5874,-5236,-4612,-3888,-2930,-1647,-81,1629, 3333,4935,6397,7731,8954,10058,11042,11890,12529,12875, 12928,12796,12580,12237,11628,10658,9391,8002,6640,5381, 4219,3119,2078,1180,496,13,-346,-656,-1007,-1488, -2130,-2830,-3398,-3714,-3852,-4068,-4595,-5483,-6615,-7815, -8959,-9982,-10833,-11459,-11816,-11829,-11462,-10726,-9662,-8420, -7246,-6329,-5685,-5150,-4497,-3612,-2566,-1503,-499,420, 1224,1866,2355,2762,3111,3306,3239,2919,2496,2179, 2124,2406,3041,4012,5217,6508,7687,8567,9019,8996, 8542,7766,6786,5704,4578,3407,2141,760,-697,-2115, -3363,-4363,-5129,-5744,-6303,-6889,-7484,-7958,-8153,-8025, -7693,-7315,-6988,-6697,-6383,-5960,-5309,-4326,-3021,-1526, 2,1476,2905,4376,5936,7491,8875,9990,10856,11569, 12203,12753,13105,13144,12854,12305,11530,10540,9402,8200, 6947,5607,4219,2964,2039,1472,1110,720,147,-584, -1319,-1910,-2303,-2535,-2697,-2895,-3260,-3891,-4762,-5753, -6754,-7774,-8885,-10082,-11183,-11913,-12089,-11740,-11054,-10197, -9285,-8442,-7750,-7154,-6501,-5659,-4650,-3594,-2595,-1673, -787,100,990,1824,2505,2954,3137,3052,2737,2297, 1885,1665,1758,2243,3139,4358,5702,6959,7941,8539, 8727,8573,8174,7617,6942,6104,5015,3628,2045,502, -817,-1913,-2882,-3805,-4731,-5667,-6549,-7277,-7748,-7918, -7842,-7667,-7551,-7564,-7599,-7449,-6995,-6269,-5393,-4420, -3302,-1991,-518,1041,2622,4177,5675,7075,8322,9445, 10515,11518,12312,12765,12877,12776,12570,12251,11701,10791, 9503,8002,6532,5258,4232,3427,2782,2176,1458,584, -286,-937,-1309,-1527,-1773,-2103,-2465,-2816,-3215,-3754, -4504,-5493,-6722,-8128,-9553,-10766,-11542,-11808,-11662,-11272, -10782,-10261,-9699,-9062,-8335,-7539,-6707,-5845,-4940,-4007, -3063,-2080,-1023,58,1063,1911,2540,2886,2888,2577, 2085,1580,1217,1156,1527,2359,3555,4882,6056,6942, 7569,8033,8365,8509,8378,7909,7088,5972,4662,3279, 1946,757,-299,-1355,-2558,-3873,-5089,-6016,-6616,-7008, -7319,-7587,-7798,-7948,-8033,-8026,-7896,-7631,-7223,-6673, -5944,-4952,-3662,-2177,-670,744,2091,3493,5040,6668, 8179,9421,10400,11202,11869,12399,12802,13062,13050,12576, 11588,10263,8903,7711,6710,5792,4852,3881,2909,1984, 1162,469,-114,-615,-1065,-1468,-1801,-2031,-2159,-2306, -2660,-3375,-4497,-5914,-7415,-8791,-9912,-10721,-11226,-11468, -11507,-11362,-11035,-10544,-9946,-9296,-8603,-7861,-7086,-6294, -5447,-4486,-3401,-2242,-1063,103,1206,2115,2666,2769, 2429,1796,1158,799,841,1262,1975,2875,3875,4876, 5805,6669,7513,8281,8804,8897,8479,7675,6721,5767, 4809,3772,2602,1294,-101,-1500,-2798,-3908,-4809,-5546, -6194,-6792,-7320,-7686,-7842,-7892,-7998,-8196,-8321,-8161, -7670,-6925,-6010,-4964,-3810,-2591,-1306,104,1703,3436, 5115,6558,7736,8775,9843,10976,12045,12856,13263,13192, 12705,11952,11069,10128,9158,8160,7109,5995,4884,3887, 3040,2275,1505,714,-48,-705,-1156,-1326,-1272,-1175, -1269,-1709,-2515,-3614,-4887,-6226,-7527,-8694,-9665,-10427, -10993,-11353,-11465,-11302,-10923,-10434,-9911,-9364,-8767,-8098, -7373,-6626,-5844,-4910,-3707,-2260,-743,615,1648,2246, 2364,2056,1512,1015,786,871,1180,1594,2078,2716, 3620,4780,6038,7174,8027,8521,8665,8504,8131,7643, 7075,6336,5323,4033,2620,1264,23,-1183,-2408,-3586, -4604,-5412,-6041,-6529,-6916,-7270,-7653,-8074,-8441,-8602, -8459,-8060,-7531,-6969,-6349,-5524,-4380,-2942,-1357,223, 1703,3066,4376,5722,7168,8683,10138,11371,12248,12724, 12853,12739,12425,11918,11216,10326,9279,8150,7068,6121, 5266,4376,3379,2309,1267,380,-251,-587,-658,-575, -499,-603,-1011,-1743,-2707,-3797,-4973,-6228,-7505,-8685, -9656,-10376,-10887,-11235,-11401,-11300,-10921,-10397,-9888,-9436, -9004,-8557,-8056,-7402,-6454,-5115,-3454,-1713,-207,821, 1336,1488,1467,1355,1184,1000,861,805,860,1128, 1759,2788,4060,5309,6327,7081,7678,8180,8522,8607, 8403,7934,7244,6351,5301,4158,2944,1626,209,-1201, -2465,-3482,-4230,-4826,-5445,-6163,-6903,-7510,-7906,-8117, -8240,-8327,-8372,-8335,-8120,-7607,-6722,-5533,-4191,-2865, -1611,-388,891,2313,3900,5611,7319,8854,10116,11116, 11911,12508,12841,12831,12461,11805,10992,10124,9269,8434, 7583,6670,5647,4473,3197,1991,1056,488,203,60, -7,-15,-45,-255,-784,-1623,-2656,-3767,-4921,-6121, -7333,-8477,-9465,-10261,-10837,-11167,-11195,-10906,-10409,-9946, -9713,-9695,-9663,-9356,-8640,-7528,-6075,-4400,-2729,-1323, -308,402,960,1390,1586,1466,1094,666,401,442, 817,1471,2323,3302,4334,5340,6289,7175,7939,8481, 8725,8678,8443,8111,7652,6935,5864,4500,3024,1600, 323,-772,-1716,-2614,-3561,-4542,-5437,-6127,-6614,-6976, -7319,-7713,-8164,-8578,-8783,-8630,-8087,-7250,-6296,-5336, -4387,-3374,-2195,-802,748,2356,3963,5566,7169,8717, 10108,11275,12172,12749,12940,12723,12219,11644,11134,10638, 10003,9150,8098,6912,5647,4371,3166,2128,1368,936, 756,694,648,585,439,76,-597,-1514,-2514,-3530, -4613,-5853,-7230,-8571,-9659,-10366,-10691,-10674,-10427,-10147, -10065,-10251,-10533,-10614,-10277,-9487,-8369,-7086,-5728,-4320, -2890,-1503,-295,621,1181,1378,1245,907,561,398, 459,687,1048,1597,2399,3432,4569,5650,6569,7296, 7874,8365,8785,9083,9126,8793,8033,6942,5702,4466, 3301,2183,1051,-136,-1356,-2532,-3555,-4356,-4957,-5461, -5998,-6659,-7432,-8148,-8599,-8733,-8619,-8323,-7873,-7280, -6567,-5749,-4798,-3667,-2357,-931,527,2013,3594,5333, 7180,8945,10384,11394,12020,12361,12486,12427,12217,11918, 11560,11089,10378,9369,8150,6866,5587,4326,3155,2247, 1707,1475,1380,1284,1128,896,585,176,-372,-1088, -1995,-3152,-4602,-6228,-7743,-8857,-9463,-9676,-9733,-9842, -10077,-10400,-10718,-10938,-10967,-10728,-10218,-9492,-8568,-7392, -5919,-4248,-2617,-1248,-245,391,716,817,774,621, 393,179,124,364,944,1791,2750,3678,4513,5304, 6128,7016,7908,8675,9182,9319,9061,8476,7688,6814, 5914,4932,3765,2400,981,-295,-1336,-2196,-2977,-3738, -4502,-5311,-6173,-7014,-7723,-8223,-8505,-8624,-8642,-8538, -8217,-7613,-6789,-5894,-5010,-4078,-2974,-1643,-103,1610, 3465,5386,7228,8802,9977,10803,11413,11873,12152,12235, 12185,12048,11773,11249,10420,9308,7995,6600,5268,4122, 3230,2606,2205,1900,1578,1254,1047,1016,1035,860, 280,-782,-2220,-3820,-5361,-6648,-7584,-8213,-8683,-9132, -9601,-10035,-10377,-10646,-10895,-11128,-11283,-11230,-10822,-9973, -8725,-7243,-5696,-4186,-2788,-1564,-569,133,483,471, 202,-112,-275,-211,66,538,1159,1831,2479,3154, 3999,5067,6255,7342,8133,8596,8826,8910,8834,8525, 7951,7122,6063,4818,3480,2176,1026,60,-789,-1656, -2637,-3681,-4632,-5430,-6159,-6910,-7657,-8278,-8691,-8897, -8905,-8687,-8232,-7621,-6984,-6382,-5723,-4834,-3601,-2055, -307,1549,3437,5268,6922,8310,9415,10274,10959,11508, 11919,12195,12347,12335,12027,11300,10182,8863,7572,6438, 5446,4533,3668,2848,2120,1604,1417,1543,1817,1979, 1781,1098,-23,-1386,-2768,-4022,-5144,-6181,-7131,-7938, -8561,-9015,-9382,-9769,-10253,-10834,-11399,-11761,-11793,-11475, -10861,-9975,-8811,-7384,-5798,-4195,-2710,-1461,-595,-198, -200,-366,-460,-379,-184,21,182,370,721,1338, 2206,3219,4291,5355,6341,7167,7817,8360,8840,9191, 9231,8812,7965,6900,5807,4738,3670,2603,1568,562, -461,-1508,-2522,-3439,-4279,-5134,-6050,-6993,-7828,-8418, -8707,-8763,-8685,-8518,-8252,-7905,-7509,-7018,-6297,-5237, -3838,-2197,-409,1462,3343,5109,6619,7825,8799,9673, 10541,11392,12138,12625,12723,12383,11682,10779,9838,8916, 7978,6929,5720,4424,3244,2408,2037,2072,2315,2535, 2532,2207,1597,780,-198,-1359,-2684,-4035,-5229,-6181, -6915,-7513,-8074,-8655,-9274,-9937,-10617,-11232,-11682,-11930, -11978,-11798,-11296,-10353,-8945,-7208,-5413,-3864,-2716,-1934, -1383,-982,-710,-543,-429,-351,-339,-386,-353,-39, 620,1512,2443,3306,4143,5040,6016,7010,7925,8664, 9158,9321,9102,8536,7749,6880,5973,4994,3919,2796, 1726,754,-174,-1127,-2132,-3163,-4201,-5262,-6301,-7193, -7837,-8238,-8477,-8633,-8722,-8725,-8615,-8392,-8055,-7542, -6751,-5599,-4075,-2264,-344,1508,3165,4576,5815,7030, 8328,9679,10922,11856,12360,12440,12231,11896,11510,11036, 10360,9371,8051,6548,5141,4068,3369,2951,2745,2729, 2838,2935,2855,2492,1818,868,-292,-1575,-2847,-3964, -4853,-5579,-6285,-7061,-7873,-8613,-9220,-9782,-10430,-11201, -11975,-12515,-12600,-12161,-11251,-9939,-8364,-6766,-5364,-4220, -3242,-2342,-1545,-957,-660,-637,-747,-830,-792,-609, -281,201,808,1490,2203,2999,3969,5104,6271,7306, 8132,8733,9110,9245,9086,8633,7948,7102,6130,5083, 4047,3100,2237,1368,391,-715,-1889,-3065,-4177,-5184, -6080,-6863,-7492,-7939,-8230,-8432,-8598,-8756,-8892,-8922, -8690,-8034,-6898,-5388,-3706,-2053,-532,881,2285,3791, 5436,7136,8695,9902,10711,11268,11742,12157,12401,12350, 11958,11237,10228,8998,7653,6325,5141,4206,3581,3248, 3154,3245,3417,3465,3164,2462,1505,494,-487,-1475, -2514,-3566,-4545,-5397,-6140,-6809,-7433,-8059,-8779,-9694, -10759,-11772,-12475,-12680,-12365,-11662,-10725,-9631,-8399,-7076, -5735,-4461,-3320,-2374,-1708,-1373,-1289,-1257,-1140,-943, -737,-536,-294,55,558,1231,2070,3055,4132,5221, 6240,7145,7943,8613,9075,9228,9019,8482,7728,6890, 6058,5252,4440,3586,2669,1671,576,-582,-1746,-2890, -4019,-5061,-5926,-6567,-7023,-7399,-7785,-8253,-8789,-9281, -9516,-9294,-8576,-7525,-6362,-5220,-4082,-2820,-1328,378, 2172,3901,5472,6855,8085,9180,10146,11003,11754,12299, 12500,12286,11734,10968,10017,8844,7481,6120,5014,4316, 3994,3912,3930,3934,3829,3548,3060,2390,1598,729, -239,-1338,-2505,-3554,-4344,-4897,-5399,-6031,-6875,-7910, -9058,-10210,-11225,-11960,-12329,-12354,-12116,-11633,-10844,-9723, -8358,-6905,-5528,-4341,-3399,-2695,-2177,-1791,-1493,-1263, -1086,-961,-879,-775,-535,-88,543,1303,2154,3090, 4105,5179,6263,7296,8196,8852,9174,9151,8857,8395, 7814,7139,6398,5635,4862,4040,3139,2138,1006,-282, -1654,-2948,-3982,-4696,-5185,-5648,-6275,-7126,-8070,-8857, -9301,-9383,-9196,-8820,-8280,-7592,-6774,-5777,-4522,-2978, -1236,516,2128,3593,5010,6440,7837,9099,10172,11075, 11846,12431,12704,12558,11977,11021,9808,8474,7188,6128, 5405,4994,4744,4530,4347,4238,4155,3957,3521,2806, 1847,723,-440,-1490,-2323,-2935,-3440,-4021,-4816,-5835, -6980,-8131,-9219,-10230,-11139,-11888,-12386,-12553,-12331,-11708, -10721,-9478,-8143,-6858,-5708,-4680,-3762,-2973,-2344,-1886, -1589,-1427,-1356,-1296,-1150,-892,-544,-126,394,1082, 1970,3026,4171,5338,6459,7453,8244,8770,9032,9053, 8845,8418,7815,7143,6532,6017,5476,4698,3565,2134, 637,-667,-1672,-2453,-3144,-3857,-4679,-5649,-6713,-7700, -8441,-8885,-9110,-9232,-9299,-9214,-8838,-8121,-7128,-5963, -4656,-3193,-1597,60,1674,3202,4661,6065,7406,8695, 9947,11136,12141,12755,12812,12334,11474,10415,9299,8208, 7207,6335,5616,5065,4738,4634,4691,4761,4663,4233, 3435,2395,1323,379,-414,-1102,-1726,-2351,-3061,-3901, -4842,-5850,-6917,-8052,-9237,-10420,-11479,-12263,-12661,-12653, -12270,-11551,-10594,-9518,-8390,-7205,-5990,-4869,-3938,-3213, -2675,-2285,-2001,-1782,-1611,-1472,-1339,-1166,-911,-529, 52,891,1946,3071,4161,5220,6301,7377,8284,8807, 8876,8637,8322,8074,7887,7660,7279,6639,5673,4415, 3030,1738,688,-141,-912,-1791,-2817,-3900,-4918,-5833, -6697,-7524,-8254,-8817,-9225,-9508,-9627,-9480,-9032,-8337, -7453,-6362,-5017,-3460,-1827,-260,1169,2519,3905,5402, 7002,8637,10167,11397,12178,12459,12291,11791,11085,10236, 9238,8110,6982,6049,5457,5220,5227,5322,5339,5125, 4613,3853,2985,2131,1338,604,-88,-762,-1446,-2145, -2867,-3639,-4528,-5605,-6882,-8265,-9613,-10778,-11680,-12286, -12593,-12592,-12269,-11636,-10738,-9653,-8476,-7283,-6136,-5117, -4293,-3643,-3081,-2555,-2135,-1928,-1925,-1956,-1848,-1552, -1139,-671,-120,620,1622,2852,4191,5484,6601,7438, 7928,8115,8162,8262,8479,8661,8576,8086,7254,6256, 5218,4180,3157,2184,1262,325,-688,-1752,-2783,-3745, -4686,-5653,-6628,-7529,-8275,-8845,-9271,-9596,-9790,-9746, -9358,-8619,-7586,-6337,-4970,-3599,-2303,-1058,267,1804, 3565,5419,7190,8761,10086,11135,11859,12211,12186,11778, 10995,9907,8695,7576,6713,6166,5906,5842,5830,5712, 5414,4957,4389,3735,3017,2244,1444,675,2,-550, -1048,-1610,-2349,-3292,-4410,-5668,-7031,-8411,-9689,-10767, -11610,-12233,-12617,-12663,-12281,-11510,-10537,-9532,-8542,-7512, -6413,-5324,-4375,-3656,-3150,-2789,-2509,-2283,-2124,-2008, -1882,-1738,-1554,-1213,-517,613,2029,3440,4616,5499, 6168,6745,7300,7864,8413,8858,9071,8973,8561,7921, 7168,6360,5480,4522,3519,2528,1580,641,-338,-1390, -2475,-3531,-4533,-5479,-6371,-7196,-7961,-8697,-9385,-9892, -10057,-9800,-9169,-8295,-7336,-6367,-5371,-4283,-3035,-1580, 63,1820,3590,5312,6981,8590,10062,11263,12057,12355, 12125,11435,10451,9381,8415,7660,7148,6804,6541,6317, 6138,5955,5661,5175,4519,3777,3004,2233,1519,933, 492,113,-363,-1073,-2029,-3130,-4288,-5513,-6858,-8311, -9721,-10890,-11714,-12209,-12425,-12375,-12049,-11451,-10634,-9658, -8564,-7400,-6279,-5341,-4630,-4042,-3442,-2824,-2324,-2087, -2146,-2373,-2537,-2430,-1934,-1068,53,1268,2409,3376, 4196,4985,5838,6737,7577,8261,8750,9051,9155,9029, 8666,8102,7405,6613,5749,4851,3960,3064,2108,1043, -96,-1211,-2235,-3162,-4035,-4946,-5970,-7099,-8202,-9099, -9661,-9860,-9746,-9419,-8968,-8421,-7754,-6923,-5897,-4679, -3298,-1805,-232,1419,3167,5030,6975,8860,10446,11514, 11993,11964,11574,10929,10118,9268,8513,7920,7464,7111, 6854,6684,6538,6296,5839,5140,4312,3536,2917,2409, 1906,1376,879,421,-95,-786,-1689,-2797,-4099,-5551, -7071,-8517,-9746,-10712,-11468,-12066,-12456,-12505,-12122,-11374, -10432,-9460,-8553,-7701,-6823,-5861,-4851,-3899,-3132,-2667, -2586,-2816,-3121,-3220,-2966,-2390,-1613,-731,193,1107, 1997,2897,3840,4821,5794,6715,7542,8247,8797,9130, 9188,8974,8559,8021,7438,6822,6137,5315,4328,3214, 2079,1035,127,-683,-1518,-2495,-3655,-4932,-6197,-7334, -8258,-8926,-9320,-9492,-9534,-9474,-9233,-8723,-7946,-7010, -6020,-4986,-3830,-2454,-803,1096,3166,5295,7342,9126, 10468,11269,11577,11530,11245,10738,10019,9204,8506,8071, 7857,7711,7516,7243,6878,6394,5794,5138,4482,3851, 3244,2664,2155,1771,1479,1145,600,-263,-1408,-2704, -4027,-5352,-6712,-8114,-9474,-10664,-11560,-12077,-12185,-11935, -11459,-10915,-10373,-9751,-8906,-7807,-6559,-5334,-4290,-3553, -3186,-3142,-3260,-3353,-3305,-3075,-2671,-2100,-1400,-616, 218,1086,1973,2879,3829,4851,5921,6974,7904,8608, 9012,9137,9077,8951,8796,8551,8099,7388,6466,5444, 4424,3469,2607,1837,1076,180,-955,-2274,-3608,-4826, -5899,-6862,-7741,-8517,-9103,-9412,-9446,-9282,-8969,-8494, -7862,-7159,-6425,-5552,-4359,-2746,-778,1366,3513,5566, 7478,9152,10428,11192,11459,11319,10894,10325,9744,9250, 8900,8659,8444,8175,7847,7504,7147,6696,6062,5276, 4482,3853,3432,3136,2866,2561,2146,1564,823,-23, -967,-2083,-3447,-5040,-6722,-8296,-9577,-10490,-11067,-11391, -11552,-11612,-11563,-11305,-10723,-9788,-8576,-7265,-6048,-5062, -4356,-3912,-3665,-3555,-3525,-3485,-3341,-3050,-2606,-2008, -1303,-578,110,817,1660,2716,3931,5150,6235,7119, 7804,8317,8695,8990,9220,9346,9267,8871,8140,7211, 6284,5483,4794,4091,3283,2361,1368,310,-843,-2091, -3354,-4549,-5681,-6783,-7804,-8603,-9058,-9181,-9112,-8993, -8871,-8691,-8369,-7835,-7054,-5989,-4596,-2883,-913,1227, 3447,5635,7613,9186,10208,10692,10787,10667,10438,10118, 9719,9308,8978,8754,8599,8441,8213,7833,7248,6509, 5751,5114,4636,4258,3902,3513,3093,2688,2317,1927, 1403,603,-546,-2034,-3742,-5451,-6950,-8167,-9138,-9965, -10713,-11383,-11890,-12120,-11986,-11469,-10609,-9504,-8303,-7152, -6134,-5282,-4633,-4251,-4108,-4059,-3947,-3706,-3351,-2941, -2526,-2097,-1603,-998,-264,638,1739,2978,4189,5213, 6017,6725,7466,8251,8959,9427,9593,9497,9185,8677, 8018,7306,6636,5996,5293,4456,3525,2587,1671,700, -421,-1725,-3148,-4564,-5846,-6909,-7731,-8300,-8644,-8844, -9006,-9157,-9203,-9058,-8712,-8205,-7509,-6499,-5046,-3141, -901,1471,3772,5820,7516,8816,9727,10281,10510,10438, 10149,9785,9494,9344,9299,9255,9084,8716,8185,7599, 7039,6517,6006,5479,4922,4355,3856,3525,3386,3329, 3149,2681,1853,674,-767,-2307,-3790,-5144,-6389,-7591, -8788,-9927,-10901,-11619,-12045,-12171,-11967,-11383,-10446,-9302, -8136,-7106,-6287,-5666,-5193,-4845,-4576,-4308,-3975,-3598, -3294,-3129,-2986,-2650,-2004,-1117,-140,842,1817,2797, 3769,4727,5679,6646,7608,8461,9055,9316,9314,9172, 8946,8616,8128,7481,6756,6022,5293,4566,3836,3074, 2185,1051,-348,-1870,-3308,-4566,-5671,-6647,-7465,-8096, -8543,-8851,-9069,-9254,-9433,-9553,-9478,-9065,-8207,-6867, -5109,-3069,-887,1344,3536,5564,7274,8544,9321,9657, 9709,9647,9592,9597,9651,9656,9509,9202,8825,8469, 8132,7749,7261,6648,5926,5166,4526,4147,4055,4124, 4152,3954,3431,2614,1606,480,-764,-2105,-3488,-4850, -6165,-7467,-8783,-10047,-11115,-11873,-12262,-12280,-11919,-11170, -10138,-9060,-8161,-7491,-6930,-6339,-5692,-5081,-4611,-4323, -4174,-4087,-3975,-3765,-3380,-2774,-1969,-1097,-289,472, 1307,2299,3425,4579,5685,6679,7526,8186,8652,8955, 9128,9149,8952,8506,7893,7248,6670,6167,5657,5049, 4280,3324,2203,957,-380,-1783,-3190,-4515,-5670,-6592, -7265,-7742,-8151,-8622,-9180,-9731,-10127,-10265,-10081,-9519, -8558,-7204,-5476,-3398,-1059,1352,3585,5424,6772,7679, 8284,8721,9056,9310,9481,9543,9475,9299,9102,8965, 8873,8714,8350,7710,6864,6005,5330,4900,4657,4528, 4491,4480,4341,3946,3288,2452,1510,465,-707,-1987, -3314,-4658,-6042,-7516,-9060,-10507,-11619,-12228,-12331,-12068, -11572,-10940,-10245,-9544,-8848,-8125,-7346,-6534,-5809,-5322, -5110,-5047,-4978,-4807,-4508,-4082,-3546,-2953,-2351,-1724, -1001,-117,935,2087,3228,4287,5261,6176,7051,7844, 8456,8800,8871,8714,8413,8045,7669,7282,6845,6332, 5738,5074,4327,3427,2290,916,-591,-2092,-3451,-4587, -5482,-6203,-6863,-7560,-8301,-9009,-9634,-10168,-10591,-10839, -10794,-10303,-9268,-7683,-5644,-3327,-964,1227,3090,4583, 5776,6794,7684,8368,8756,8866,8853,8887,9027,9189, 9264,9200,8976,8554,7902,7093,6292,5656,5248,5012, 4866,4772,4705,4614,4391,3922,3188,2304,1417,541, -434,-1611,-3014,-4620,-6362,-8105,-9669,-10883,-11647,-11992, -12048,-11941,-11707,-11301,-10708,-9962,-9114,-8218,-7378,-6718, -6278,-6019,-5840,-5631,-5333,-4974,-4621,-4295,-3935,-3451, -2814,-2045,-1177,-245,725,1732,2805,3963,5153,6260, 7167,7822,8252,8500,8604,8563,8377,8069,7696,7308, 6943,6583,6155,5542,4633,3432,2053,635,-725,-1991, -3162,-4225,-5170,-5992,-6727,-7437,-8182,-8972,-9785,-10585, -11290,-11701,-11552,-10690,-9206,-7361,-5378,-3359,-1328,681, 2583,4248,5599,6638,7395,7890,8178,8392,8660,9023, 9399,9624,9584,9289,8836,8283,7629,6892,6189,5682, 5422,5334,5296,5224,5060,4762,4315,3765,3204,2653, 2034,1219,100,-1354,-3060,-4864,-6610,-8166,-9436,-10405, -11121,-11633,-11948,-12010,-11762,-11210,-10445,-9600,-8800,-8110, -7520,-7012,-6568,-6167,-5808,-5523,-5326,-5153,-4885,-4462, -3916,-3328,-2740,-2105,-1361,-483,556,1735,2979,4183, 5280,6246,7087,7797,8331,8627,8666,8508,8287,8112, 8011,7903,7673,7248,6616,5777,4741,3538,2245,946, -324,-1580,-2801,-3866,-4677,-5281,-5897,-6736,-7846,-9099, -10271,-11167,-11661,-11699,-11260,-10327,-8959,-7296,-5458,-3466, -1330,811,2724,4240,5332,6123,6779,7368,7888,8368, 8861,9345,9710,9848,9715,9343,8786,8104,7393,6793, 6384,6170,6066,5945,5718,5390,5028,4702,4423,4167, 3874,3426,2683,1563,132,-1463,-3078,-4639,-6119,-7521, -8821,-9966,-10871,-11451,-11656,-11513,-11124,-10617,-10063,-9466, -8811,-8125,-7456,-6879,-6451,-6162,-5956,-5749,-5465,-5104, -4709,-4310,-3894,-3446,-2905,-2206,-1337,-364,642,1712, 2894,4153,5363,6395,7185,7740,8091,8266,8324,8361, 8438,8547,8566,8393,7998,7454,6820,6070,5098,3864, 2447,1017,-261,-1312,-2164,-2903,-3608,-4392,-5387,-6644, -8032,-9298,-10268,-10922,-11285,-11335,-10996,-10191,-8905,-7205, -5239,-3170,-1141,731,2354,3685,4741,5602,6350,7036, 7713,8414,9110,9691,10013,9987,9643,9097,8484,7911, 7453,7139,6931,6724,6410,5994,5587,5297,5151,5120, 5106,4959,4543,3802,2776,1559,237,-1158,-2640,-4213, -5842,-7427,-8806,-9864,-10591,-11028,-11216,-11188,-10969,-10552, -9967,-9279,-8579,-7959,-7471,-7082,-6720,-6341,-5984,-5697, -5469,-5204,-4848,-4431,-3990,-3519,-2974,-2312,-1516,-578, 509,1750,3096,4417,5545,6375,6935,7362,7771,8161, 8456,8613,8685,8737,8766,8698,8465,8029,7350,6377, 5116,3690,2315,1162,262,-490,-1241,-2096,-3088,-4196, -5402,-6678,-7968,-9175,-10217,-11020,-11500,-11560,-11121,-10176, -8784,-7050,-5105,-3098,-1177,532,1966,3136,4113,5002, 5894,6833,7802,8721,9445,9832,9858,9602,9209,8800, 8455,8185,7932,7598,7142,6616,6131,5800,5668,5691, 5762,5744,5553,5192,4676,3989,3093,1981,652,-884, -2559,-4243,-5821,-7244,-8503,-9585,-10440,-10980,-11153,-11015, -10695,-10297,-9836,-9301,-8719,-8154,-7651,-7212,-6818,-6468, -6172,-5925,-5677,-5351,-4923,-4478,-4114,-3809,-3402,-2726, -1743,-550,719,1984,3198,4308,5269,6077,6755,7322, 7775,8090,8287,8461,8718,9055,9318,9327,8969,8245, 7230,6052,4845,3708,2700,1812,978,128,-771,-1731, -2768,-3921,-5222,-6633,-8052,-9377,-10510,-11352,-11791,-11753, -11219,-10202,-8744,-6948,-4991,-3086,-1392,39,1254,2356, 3455,4625,5859,7069,8121,8886,9302,9404,9330,9229, 9153,9050,8826,8439,7924,7371,6860,6459,6211,6108, 6068,6007,5919,5841,5759,5558,5101,4324,3283,2067, 731,-728,-2315,-3982,-5633,-7158,-8462,-9508,-10266,-10714, -10858,-10761,-10538,-10249,-9854,-9311,-8681,-8111,-7695,-7399, -7102,-6721,-6296,-5907,-5594,-5334,-5103,-4889,-4626,-4212, -3574,-2696,-1651,-525,626,1815,3037,4221,5251,6044, 6597,6979,7303,7672,8141,8713,9289,9687,9759,9459, 8856,8040,7083,6053,5015,4029,3107,2237,1409,600, -248,-1218,-2359,-3658,-5090,-6608,-8129,-9544,-10746,-11614, -12023,-11865,-11132,-9920,-8371,-6642,-4919,-3374,-2047,-818, 470,1878,3357,4796,6067,7088,7842,8368,8751,9067, 9329,9466,9387,9077,8625,8162,7753,7370,6977,6594, 6290,6145,6167,6264,6308,6256,6117,5837,5324,4533, 3523,2352,1024,-499,-2198,-3955,-5605,-7034,-8224,-9209, -9991,-10517,-10730,-10657,-10399,-10042,-9643,-9228,-8824,-8447, -8065,-7627,-7127,-6629,-6243,-6016,-5901,-5783,-5579,-5264, -4849,-4326,-3681,-2896,-1946,-792,547,1940,3195,4195, 4920,5447,5899,6396,7000,7705,8449,9114,9588,9795, 9707,9329,8703,7894,6975,6017,5084,4206,3382,2598, 1832,1044,180,-823,-2023,-3427,-4986,-6650,-8357,-9960, -11243,-12005,-12132,-11648,-10696,-9473,-8149,-6829,-5541,-4245, -2861,-1327,312,1911,3327,4513,5534,6488,7386,8138, 8680,9010,9183,9236,9158,8910,8513,8057,7615,7197, 6797,6465,6290,6300,6403,6482,6479,6405,6274,6035, 5581,4822,3764,2480,1040,-522,-2169,-3827,-5411,-6869, -8168,-9231,-9959,-10321,-10391,-10305,-10176,-10037,-9847,-9550, -9126,-8604,-8042,-7519,-7101,-6813,-6602,-6391,-6157,-5921, -5703,-5489,-5216,-4786,-4096,-3109,-1880,-530,807,1995, 2940,3662,4261,4860,5523,6256,7046,7869,8653,9298, 9707,9823,9645,9218,8591,7816,6962,6104,5286,4502, 3725,2965,2247,1537,743,-252,-1544,-3170,-5066,-7068, -8953,-10471,-11430,-11752,-11545,-11020,-10363,-9600,-8650,-7439, -6001,-4467,-2935,-1425,75,1543,2911,4137,5246,6272, 7191,7926,8456,8826,9079,9194,9109,8806,8344,7852, 7438,7119,6847,6612,6460,6434,6509,6627,6749,6824, 6754,6437,5836,4990,3960,2759,1369,-212,-1937,-3714, -5413,-6894,-8051,-8867,-9412,-9783,-10060,-10251,-10302,-10164, -9841,-9403,-8930,-8486,-8079,-7691,-7297,-6909,-6571,-6320, -6191,-6163,-6153,-6030,-5656,-4956,-3965,-2797,-1559,-332, 783,1734,2528,3235,3938,4688,5502,6379,7294,8199, 9005,9603,9904,9914,9692,9281,8707,7999,7203,6368, 5547,4774,4084,3506,3032,2539,1778,508,-1318,-3471, -5594,-7442,-8938,-10072,-10836,-11226,-11263,-11007,-10499,-9740, -8733,-7501,-6105,-4639,-3163,-1665,-124,1385,2760,3974, 5075,6113,7078,7914,8561,8972,9164,9158,8979,8678, 8324,7954,7568,7184,6863,6659,6605,6684,6859,7064, 7201,7192,7016,6674,6165,5448,4466,3170,1573,-217, -2031,-3708,-5168,-6412,-7483,-8400,-9144,-9690,-10031,-10164, -10101,-9904,-9665,-9420,-9102,-8672,-8161,-7644,-7191,-6851, -6664,-6630,-6699,-6766,-6681,-6342,-5711,-4825,-3767,-2636, -1515,-459,492,1316,2041,2752,3545,4439,5407,6402, 7380,8290,9036,9522,9728,9734,9615,9329,8765,7904, 6891,5981,5348,5001,4789,4514,4002,3137,1862,195, -1758,-3791,-5689,-7345,-8766,-9941,-10796,-11259,-11348,-11145, -10694,-9998,-9049,-7879,-6523,-5034,-3505,-2017,-593,783, 2125,3426,4672,5821,6819,7615,8194,8568,8754,8772, 8650,8397,8023,7583,7168,6849,6667,6625,6676,6754, 6834,6942,7087,7212,7215,6987,6453,5570,4358,2889, 1286,-342,-1946,-3504,-4987,-6344,-7512,-8440,-9121,-9588, -9895,-10086,-10172,-10151,-10017,-9737,-9289,-8710,-8104,-7609, -7319,-7224,-7256,-7347,-7428,-7407,-7172,-6637,-5824,-4850, -3825,-2796,-1791,-867,-73,622,1328,2170,3190,4299, 5344,6255,7083,7911,8745,9452,9865,9905,9571,8915, 8048,7164,6458,6049,5879,5769,5527,5031,4235,3117, 1683,-11,-1878,-3811,-5692,-7369,-8754,-9847,-10667,-11199, -11429,-11351,-10954,-10241,-9258,-8085,-6784,-5410,-4000,-2581, -1146,304,1745,3120,4374,5475,6416,7220,7882,8359, 8591,8553,8305,7961,7615,7306,7056,6860,6689,6534, 6446,6497,6722,7071,7419,7611,7526,7120,6421,5477, 4318,2959,1437,-186,-1845,-3469,-4976,-6264,-7276,-8062, -8729,-9341,-9861,-10222,-10373,-10317,-10064,-9635,-9063,-8439, -7912,-7613,-7555,-7637,-7747,-7817,-7816,-7687,-7330,-6663, -5721,-4687,-3754,-2969,-2232,-1448,-601,287,1207,2147, 3074,3972,4900,5937,7088,8247,9225,9824,9944,9635, 9043,8347,7693,7191,6878,6704,6577,6394,6061,5470, 4555,3304,1762,13,-1827,-3656,-5406,-7022,-8451,-9641, -10552,-11144,-11391,-11268,-10803,-10086,-9209,-8209,-7055,-5730, -4283,-2796,-1326,92,1458,2782,4070,5292,6382,7264, 7871,8182,8250,8185,8080,7950,7757,7465,7093,6723, 6472,6395,6495,6752,7123,7516,7784,7832,7644,7258, 6666,5801,4621,3163,1539,-133,-1758,-3265,-4622,-5803, -6799,-7672,-8516,-9329,-9992,-10366,-10398,-10168,-9786,-9317, -8788,-8259,-7851,-7693,-7799,-8052,-8261,-8298,-8105,-7680, -7063,-6335,-5586,-4864,-4137,-3332,-2437,-1497,-603,189, 899,1634,2522,3637,4954,6358,7684,8749,9424,9673, 9560,9191,8680,8154,7737,7487,7389,7358,7276,7047, 6587,5835,4771,3431,1887,217,-1535,-3358,-5194,-6923, -8403,-9568,-10419,-10949,-11176,-11124,-10808,-10231,-9408,-8381, -7193,-5882,-4515,-3154,-1784,-333,1205,2737,4135,5314, 6255,6987,7542,7925,8150,8247,8224,8048,7707,7271, 6871,6628,6563,6633,6796,7048,7385,7755,8055,8172, 8042,7669,7038,6075,4735,3134,1496,-30,-1436,-2780, -4091,-5348,-6501,-7540,-8483,-9307,-9921,-10235,-10225,-9921, -9402,-8808,-8290,-7995,-7973,-8141,-8362,-8494,-8449,-8230, -7901,-7523,-7098,-6576,-5903,-5069,-4125,-3175,-2330,-1642, -1073,-484,255,1227,2426,3826,5326,6758,7947,8789, 9242,9330,9128,8752,8338,8018,7874,7889,7950,7941, 7787,7436,6857,6053,5017,3736,2209,471,-1387,-3268, -5081,-6716,-8096,-9215,-10115,-10781,-11128,-11089,-10707,-10081, -9307,-8423,-7418,-6268,-4961,-3515,-1970,-371,1201,2641, 3870,4915,5865,6749,7477,7950,8152,8154,8027,7802, 7482,7115,6819,6677,6683,6763,6895,7142,7561,8066, 8479,8628,8435,7898,7058,5976,4707,3310,1851,394, -1014,-2367,-3674,-4943,-6180,-7387,-8498,-9379,-9878,-9940, -9646,-9168,-8701,-8386,-8267,-8290,-8360,-8396,-8376,-8326, -8285,-8234,-8084,-7750,-7203,-6472,-5616,-4709,-3862,-3164, -2616,-2140,-1614,-925,10,1225,2671,4231,5757,7103, 8130,8745,8962,8900,8706,8502,8367,8335,8372,8421, 8427,8364,8209,7926,7427,6621,5481,4050,2429,712, -1050,-2839,-4615,-6305,-7799,-9021,-9939,-10538,-10786,-10702, -10390,-9966,-9440,-8707,-7681,-6391,-4957,-3482,-2002,-519, 950,2339,3611,4779,5855,6785,7467,7845,7961,7925, 7822,7671,7450,7157,6848,6617,6547,6692,7037,7534, 8090,8570,8849,8859,8584,8029,7187,6090,4822,3492, 2168,872,-426,-1779,-3234,-4778,-6313,-7656,-8613,-9128, -9278,-9208,-9041,-8854,-8682,-8539,-8437,-8370,-8337,-8357, -8449,-8581,-8667,-8605,-8310,-7772,-7052,-6247,-5444,-4718, -4111,-3625,-3214,-2772,-2168,-1304,-143,1298,2925,4549, 5980,7081,7809,8213,8391,8450,8448,8399,8323,8283, 8354,8526,8692,8729,8578,8219,7613,6725,5556,4177, 2659,1010,-797,-2731,-4646,-6350,-7727,-8799,-9634,-10254, -10634,-10763,-10661,-10330,-9759,-8921,-7832,-6558,-5195,-3815, -2426,-985,515,2019,3425,4649,5655,6441,7023,7426, 7673,7764,7688,7439,7074,6703,6436,6337,6438,6733, 7192,7749,8308,8759,9015,8992,8616,7886,6928,5915, 4924,3916,2795,1467,-91,-1805,-3537,-5146,-6501,-7534, -8248,-8693,-8945,-9055,-9048,-8932,-8733,-8525,-8395,-8399, -8534,-8750,-8981,-9137,-9122,-8858,-8346,-7656,-6902,-6170, -5511,-4976,-4589,-4305,-3992,-3475,-2620,-1409,45,1600, 3138,4576,5828,6809,7478,7876,8096,8203,8217,8186, 8218,8392,8684,8968,9097,9017,8777,8403,7860,7060, 5947,4521,2851,1028,-864,-2735,-4486,-6048,-7389,-8510, -9450,-10229,-10782,-11011,-10900,-10495,-9848,-9014,-8040,-6936, -5685,-4271,-2737,-1163,366,1804,3118,4305,5346,6224, 6915,7387,7609,7602,7420,7125,6795,6491,6267,6201, 6382,6842,7509,8222,8802,9106,9076,8773,8304,7753, 7142,6456,5625,4542,3154,1520,-224,-1945,-3541,-4953, -6155,-7144,-7921,-8474,-8795,-8893,-8799,-8587,-8374,-8285, -8371,-8593,-8879,-9164,-9382,-9465,-9322,-8868,-8141,-7321, -6622,-6134,-5813,-5569,-5326,-5013,-4520,-3733,-2628,-1311, 105,1578,3080,4509,5729,6624,7163,7438,7598,7762, 7957,8155,8349,8567,8803,9020,9163,9198,9098,8812, 8265,7376,6117,4553,2817,1032,-722,-2395,-3982,-5511, -6970,-8268,-9304,-10047,-10508,-10711,-10672,-10400,-9901,-9187, -8256,-7123,-5810,-4386,-2935,-1496,-68,1361,2748,4008, 5067,5901,6527,6969,7222,7250,7048,6679,6267,5965, 5908,6150,6650,7296,7924,8387,8621,8652,8567,8430, 8253,7976,7511,6790,5789,4517,3029,1416,-209,-1765, -3245,-4650,-5923,-6960,-7698,-8156,-8399,-8481,-8428,-8285, -8175,-8234,-8512,-8926,-9323,-9593,-9678,-9530,-9117,-8486, -7783,-7183,-6786,-6561,-6381,-6146,-5820,-5375,-4750,-3881, -2735,-1346,168,1680,3092,4325,5308,6031,6550,6941, 7254,7528,7781,8014,8232,8456,8720,9024,9311,9473, 9395,8994,8254,7221,5964,4540,2982,1331,-375,-2097, -3792,-5396,-6842,-8069,-9058,-9830,-10406,-10761,-10831,-10576, -10035,-9279,-8363,-7304,-6091,-4733,-3269,-1769,-294,1122, 2465,3715,4834,5780,6497,6927,7023,6807,6399,5990, 5761,5804,6091,6539,7046,7517,7887,8133,8289,8435, 8611,8731,8662,8327,7732,6928,5910,4650,3173,1578, -33,-1606,-3124,-4554,-5821,-6824,-7506,-7881,-8020,-8002, -7917,-7885,-8023,-8390,-8913,-9422,-9736,-9775,-9577,-9222, -8766,-8256,-7751,-7329,-7038,-6864,-6748,-6592,-6304,-5798, -5010,-3934,-2640,-1215,243,1643,2910,3997,4898,5649, 6268,6745,7085,7325,7523,7750,8071,8499,8991,9439, 9727,9773,9544,9048,8328,7399,6251,4870,3282,1564, -176,-1857,-3461,-4993,-6449,-7773,-8886,-9741,-10327,-10652, -10724,-10538,-10092,-9405,-8507,-7427,-6200,-4873,-3504,-2119, -693,807,2344,3789,5002,5898,6429,6592,6439,6124, 5840,5749,5884,6153,6450,6736,7049,7406,7773,8104, 8395,8660,8886,9006,8928,8599,8013,7199,6175,4931, 3482,1902,273,-1357,-2961,-4458,-5704,-6578,-7049,-7205, -7218,-7268,-7455,-7795,-8242,-8730,-9183,-9523,-9685,-9638, -9378,-8955,-8452,-7973,-7595,-7351,-7234,-7207,-7174,-7010, -6598,-5880,-4878,-3679,-2375,-1038,286,1582,2829,3975, 4955,5718,6257,6597,6825,7070,7424,7902,8446,8983, 9443,9786,10008,10080,9943,9526,8805,7799,6566,5164, 3631,2002,321,-1375,-3046,-4648,-6136,-7453,-8559,-9460, -10174,-10643,-10783,-10571,-10065,-9353,-8486,-7493,-6405,-5239, -3965,-2505,-825,980,2702,4099,5062,5628,5894,5963, 5916,5839,5818,5901,6063,6263,6472,6716,7025,7396, 7793,8181,8547,8880,9147,9274,9181,8849,8293,7529, 6541,5316,3839,2129,277,-1534,-3138,-4425,-5361,-5971, -6328,-6544,-6737,-7004,-7392,-7894,-8445,-8964,-9391,-9657, -9719,-9563,-9205,-8730,-8264,-7921,-7761,-7758,-7823,-7838, -7708,-7359,-6760,-5929,-4929,-3828,-2633,-1318,93,1504, 2790,3836,4619,5189,5645,6063,6470,6877,7318,7822, 8368,8920,9441,9884,10184,10254,10037,9539,8809,7879, 6737,5363,3792,2126,459,-1184,-2805,-4388,-5894,-7274, -8510,-9557,-10336,-10753,-10766,-10453,-9973,-9449,-8875,-8156, -7178,-5894,-4331,-2555,-684,1092,2585,3694,4439,4913, 5216,5403,5505,5562,5619,5711,5849,6021,6223,6473, 6789,7187,7656,8147,8570,8872,9056,9142,9132,8982, 8604,7896,6802,5358,3660,1828,-1,-1688,-3098,-4164, -4922,-5459,-5855,-6187,-6529,-6951,-7490,-8126,-8764,-9302, -9657,-9775,-9644,-9313,-8888,-8497,-8247,-8174,-8228,-8306, -8310,-8185,-7933,-7565,-7044,-6299,-5295,-4067,-2693,-1274, 105,1372,2461,3362,4120,4762,5289,5712,6106,6555, 7121,7766,8416,9009,9520,9943,10232,10303,10100,9636, 8944,8014,6832,5436,3908,2349,794,-779,-2428,-4155, -5855,-7383,-8620,-9512,-10071,-10354,-10427,-10375,-10245,-10002, -9529,-8717,-7524,-5999,-4265,-2458,-706,880,2201,3203, 3905,4382,4720,4985,5208,5379,5475,5516,5570,5718, 5999,6382,6807,7230,7623,7988,8342,8689,9016,9296, 9458,9385,8943,8063,6767,5173,3413,1614,-94,-1597, -2827,-3769,-4450,-4951,-5373,-5808,-6317,-6946,-7700,-8483, -9134,-9521,-9615,-9493,-9269,-9031,-8813,-8643,-8535,-8500, -8515,-8534,-8538,-8515,-8392,-8048,-7402,-6472,-5345,-4109, -2806,-1447,-105,1118,2142,2970,3663,4277,4824,5313, 5800,6360,7017,7714,8369,8956,9496,9982,10339,10450, 10230,9691,8901,7932,6830,5611,4272,2787,1143,-651, -2516,-4321,-5927,-7250,-8278,-9048,-9642,-10135,-10530,-10772, -10788,-10511,-9899,-8939,-7629,-6026,-4272,-2527,-925,459, 1605,2550,3327,3941,4386,4676,4843,4933,5002,5113, 5308,5601,5959,6319,6641,6930,7239,7627,8107,8641, 9161,9569,9740,9569,8983,7957,6548,4901,3170,1463, -136,-1509,-2558,-3295,-3835,-4336,-4916,-5621,-6417,-7251, -8049,-8687,-9088,-9272,-9330,-9318,-9230,-9040,-8789,-8585, -8520,-8595,-8728,-8848,-8907,-8864,-8670,-8243,-7523,-6525, -5348,-4087,-2777,-1451,-175,952,1883,2655,3340,3981, 4589,5167,5725,6306,6958,7693,8475,9243,9916,10407, 10657,10617,10297,9770,9115,8347,7429,6272,4821,3108, 1239,-642,-2414,-4001,-5382,-6582,-7636,-8556,-9357,-10059, -10636,-10997,-11024,-10651,-9874,-8745,-7351,-5802,-4204,-2639, -1157,201,1397,2406,3206,3783,4163,4404,4586,4777, 5003,5256,5518,5796,6066,6306,6536,6818,7220,7779, 8451,9125,9693,10073,10185,9926,9228,8089,6580,4849, 3085,1469,121,-912,-1680,-2337,-3040,-3850,-4715,-5557, -6342,-7087,-7794,-8393,-8792,-8979,-9014,-8952,-8812,-8618, -8434,-8344,-8400,-8580,-8795,-8961,-9028,-8960,-8706,-8204, -7415,-6371,-5152,-3859,-2579,-1356,-223,804,1725,2547, 3275,3910,4462,4982,5549,6244,7076,7988,8886,9649, 10180,10458,10570,10582,10491,10237,9753,8990,7930,6583, 4991,3218,1384,-376,-1968,-3381,-4653,-5843,-7016,-8177, -9250,-10134,-10755,-11053,-10970,-10484,-9656,-8571,-7291,-5852, -4305,-2743,-1258,86,1247,2191,2903,3403,3759,4072, 4410,4769,5088,5334,5524,5694,5867,6063,6317,6692, 7230,7911,8664,9410,10072,10532,10620,10177,9173,7764, 6183,4621,3179,1892,776,-172,-1009,-1825,-2678,-3572, -4476,-5356,-6187,-6960,-7658,-8226,-8591,-8734,-8721,-8623, -8493,-8374,-8309,-8335,-8467,-8700,-8982,-9216,-9304,-9178, -8801,-8167,-7296,-6245,-5093,-3907,-2720,-1544,-400,683, 1632,2366,2907,3382,3931,4632,5480,6404,7315,8144, 8853,9442,9919,10297,10579,10763,10807,10623,10118,9241, 8017,6528,4886,3195,1545,5,-1408,-2752,-4105,-5506, -6912,-8224,-9347,-10225,-10820,-11072,-10954,-10497,-9747,-8738, -7482,-6014,-4426,-2864,-1453,-244,773,1611,2282,2820, 3306,3794,4259,4621,4851,5005,5164,5335,5496,5638, 5850,6268,6973,7916,8943,9844,10463,10691,10453,9738, 8632,7313,5939,4607,3361,2228,1193,236,-657,-1533, -2438,-3391,-4373,-5339,-6229,-7000,-7626,-8101,-8401,-8524, -8493,-8376,-8253,-8185,-8214,-8366,-8642,-8987,-9316,-9518, -9499,-9227,-8748,-8117,-7344,-6398,-5255,-3965,-2642,-1406, -348,511,1209,1817,2411,3067,3840,4728,5659,6553, 7351,8044,8669,9279,9872,10412,10866,11189,11283,11017, 10321,9247,7928,6489,5013,3543,2100,684,-730,-2186, -3714,-5260,-6728,-8047,-9182,-10095,-10729,-11020,-10942,-10519, -9779,-8726,-7384,-5856,-4323,-2943,-1751,-685,307,1208, 1969,2584,3106,3609,4109,4545,4842,4979,4989,4944, 4946,5119,5561,6305,7307,8431,9476,10247,10638,10614, 10198,9440,8420,7238,5992,4770,3632,2604,1657,738, -194,-1160,-2163,-3198,-4243,-5236,-6124,-6880,-7484,-7925, -8179,-8236,-8143,-8002,-7934,-8022,-8273,-8618,-8962,-9228, -9410,-9521,-9541,-9397,-9016,-8378,-7503,-6408,-5144,-3827, -2603,-1570,-730,-11,666,1354,2108,2958,3878,4809, 5668,6417,7076,7724,8440,9238,10047,10769,11321,11621, 11571,11106,10264,9182,7993,6737,5418,4048,2644,1210, -286,-1862,-3482,-5056,-6510,-7837,-9057,-10116,-10875,-11206, -11069,-10519,-9660,-8591,-7354,-5987,-4579,-3249,-2061,-1029, -136,669,1443,2207,2947,3618,4162,4511,4622,4522, 4339,4235,4361,4809,5571,6568,7678,8771,9696,10320, 10564,10423,9944,9180,8211,7128,6023,4963,3968,3020, 2079,1112,93,-965,-2034,-3091,-4159,-5214,-6170,-6919, -7398,-7629,-7711,-7738,-7760,-7815,-7931,-8112,-8348,-8620, -8899,-9181,-9468,-9717,-9814,-9630,-9105,-8292,-7265,-6091, -4864,-3715,-2735,-1918,-1183,-432,386,1262,2162,3057, 3917,4700,5394,6047,6756,7591,8542,9526,10418,11124, 11591,11764,11594,11068,10258,9293,8254,7125,5858,4472, 3036,1583,118,-1390,-2978,-4632,-6279,-7802,-9102,-10097, -10745,-11024,-10917,-10421,-9581,-8486,-7245,-5945,-4667,-3503, -2479,-1573,-700,228,1230,2231,3102,3739,4092,4175, 4061,3865,3732,3803,4173,4845,5775,6859,7974,8999, 9817,10324,10468,10243,9709,8979,8153,7256,6295,5299, 4309,3373,2482,1563,540,-591,-1790,-3010,-4172,-5195, -6003,-6555,-6900,-7134,-7343,-7513,-7619,-7683,-7777,-7952, -8210,-8551,-8969,-9432,-9863,-10130,-10097,-9693,-8969,-8039, -7002,-5934,-4914,-3998,-3179,-2379,-1513,-562,411,1327, 2160,2928,3657,4360,5050,5788,6657,7689,8811,9869, 10716,11297,11623,11709,11547,11131,10455,9538,8453,7294, 6102,4873,3576,2175,646,-999,-2725,-4476,-6166,-7701, -9011,-10043,-10733,-11024,-10874,-10295,-9387,-8298,-7159,-6055, -5027,-4069,-3123,-2118,-1009,177,1351,2377,3123,3533, 3651,3578,3431,3325,3350,3579,4084,4897,5967,7139, 8236,9130,9772,10143,10228,10018,9548,8884,8086,7214, 6331,5487,4685,3881,2983,1914,683,-608,-1868,-3040, -4097,-4996,-5705,-6241,-6662,-7004,-7260,-7399,-7427,-7429, -7527,-7800,-8230,-8769,-9364,-9928,-10325,-10414,-10130,-9535, -8752,-7901,-7045,-6179,-5298,-4415,-3534,-2621,-1649,-644, 324,1173,1875,2481,3096,3817,4684,5672,6725,7780, 8798,9762,10602,11222,11579,11661,11467,11012,10327,9471, 8520,7517,6454,5281,3963,2501,917,-760,-2510,-4294, -6055,-7703,-9115,-10170,-10774,-10907,-10615,-9992,-9170,-8288, -7431,-6597,-5724,-4733,-3590,-2336,-1044,205,1334,2241, 2837,3095,3072,2905,2746,2713,2889,3337,4067,5007, 6056,7120,8112,8952,9582,9926,9942,9648,9129,8507, 7855,7191,6512,5820,5077,4192,3115,1891,618,-619, -1777,-2860,-3861,-4759,-5517,-6126,-6596,-6919,-7074,-7068, -7010,-7074,-7373,-7892,-8543,-9221,-9819,-10246,-10425,-10326, -9960,-9387,-8703,-7988,-7277,-6529,-5683,-4710,-3648,-2579, -1588,-713,57,745,1393,2051,2773,3601,4540,5567, 6649,7755,8837,9833,10658,11231,11508,11508,11287,10883, 10307,9573,8709,7743,6695,5558,4295,2872,1264,-512, -2410,-4369,-6298,-8028,-9366,-10198,-10549,-10531,-10265,-9844, -9313,-8701,-8014,-7220,-6269,-5139,-3856,-2495,-1134,144, 1232,1993,2362,2403,2292,2190,2185,2331,2658,3198, 3976,4965,6060,7139,8105,8887,9402,9588,9468,9158, 8778,8378,7944,7435,6820,6091,5237,4231,3083,1856, 634,-531,-1641,-2738,-3825,-4824,-5636,-6193,-6499,-6614, -6631,-6663,-6783,-7058,-7533,-8198,-8948,-9627,-10111,-10344, -10335,-10147,-9844,-9452,-8962,-8361,-7635,-6777,-5793,-4742, -3701,-2735,-1866,-1088,-373,312,990,1689,2441,3293, 4290,5411,6586,7727,8770,9684,10427,10953,11229,11266, 11091,10746,10231,9538,8697,7794,6878,5893,4721,3256, 1489,-492,-2555,-4555,-6353,-7830,-8909,-9593,-9959,-10088, -10018,-9783,-9424,-8971,-8401,-7621,-6571,-5277,-3844,-2419, -1120,-14,841,1407,1679,1729,1697,1697,1786,2003, 2419,3092,4009,5077,6164,7147,7942,8500,8830,8963, 8940,8814,8636,8403,8061,7557,6880,6064,5166,4217, 3213,2123,930,-329,-1582,-2769,-3838,-4735,-5400,-5812, -5997,-6047,-6080,-6235,-6592,-7139,-7797,-8465,-9056,-9513, -9810,-9961,-9993,-9927,-9750,-9446,-8982,-8337,-7545,-6657, -5712,-4747,-3791,-2876,-2048,-1326,-678,-43,619,1352, 2189,3157,4268,5473,6664,7758,8743,9626,10387,10956, 11261,11287,11068,10666,10154,9588,8992,8345,7562,6521, 5138,3419,1471,-566,-2587,-4493,-6153,-7463,-8399,-9030, -9458,-9745,-9886,-9868,-9686,-9309,-8679,-7740,-6512,-5114, -3692,-2354,-1162,-166,586,1065,1279,1300,1240,1227, 1376,1765,2409,3280,4307,5385,6390,7204,7792,8207, 8521,8770,8936,8972,8838,8539,8123,7618,7025,6329, 5539,4647,3633,2475,1188,-166,-1506,-2728,-3732,-4451, -4898,-5140,-5271,-5407,-5650,-6052,-6605,-7226,-7819,-8340, -8813,-9248,-9613,-9846,-9934,-9893,-9731,-9428,-8952,-8298, -7491,-6596,-5652,-4686,-3743,-2883,-2152,-1534,-949,-317, 407,1239,2171,3204,4313,5467,6625,7767,8863,9845, 10605,11054,11196,11123,10952,10741,10492,10163,9714,9102, 8241,7033,5471,3620,1593,-463,-2406,-4132,-5580,-6742, -7652,-8380,-9002,-9519,-9870,-9975,-9793,-9320,-8570,-7566, -6341,-4962,-3539,-2210,-1075,-193,424,768,863,792, 709,796,1169,1830,2688,3625,4553,5425,6224,6936, 7563,8097,8527,8840,9011,9024,8873,8587,8200,7759, 7277,6706,5988,5084,3968,2660,1219,-236,-1552,-2597, -3339,-3833,-4177,-4471,-4763,-5077,-5447,-5907,-6449,-7032, -7601,-8132,-8636,-9103,-9490,-9749,-9864,-9847,-9708,-9415, -8919,-8206,-7336,-6381,-5403,-4467,-3647,-2956,-2341,-1715, -1027,-287,463,1231,2090,3115,4315,5639,6969,8190, 9226,10035,10590,10903,11036,11072,11070,11048,10988,10829, 10464,9801,8785,7393,5654,3692,1677,-245,-1986,-3524, -4874,-6080,-7158,-8100,-8901,-9548,-9988,-10134,-9937,-9410, -8602,-7546,-6271,-4852,-3401,-2063,-989,-276,80,183, 188,225,388,733,1273,1984,2801,3645,4460,5252, 6028,6768,7449,8025,8471,8765,8902,8886,8743,8526, 8294,8050,7723,7199,6390,5298,3984,2545,1101,-226, -1343,-2199,-2820,-3300,-3714,-4104,-4488,-4881,-5310,-5797, -6345,-6918,-7490,-8045,-8562,-9021,-9411,-9726,-9961,-10060, -9925,-9506,-8840,-8047,-7220,-6392,-5564,-4746,-3965,-3232, -2547,-1909,-1302,-689,-12,799,1806,3008,4359,5751, 7057,8175,9061,9723,10197,10527,10760,10963,11181,11391, 11505,11396,10944,10092,8864,7344,5619,3775,1923,173, -1428,-2898,-4288,-5616,-6851,-7936,-8831,-9524,-9998,-10216, -10111,-9618,-8725,-7505,-6081,-4605,-3246,-2137,-1349,-880, -644,-518,-381,-158,167,596,1153,1840,2608,3394, 4175,4967,5782,6582,7292,7828,8168,8362,8475,8542, 8588,8617,8609,8474,8088,7378,6372,5154,3821,2456, 1142,-31,-1004,-1782,-2415,-2946,-3401,-3803,-4195,-4635, -5148,-5708,-6250,-6755,-7257,-7796,-8389,-9001,-9547,-9938, -10122,-10081,-9813,-9358,-8769,-8102,-7376,-6576,-5711,-4846, -4053,-3379,-2815,-2322,-1818,-1205,-427,540,1692,2991, 4377,5741,6947,7902,8598,9116,9565,10012,10468,10927, 11358,11679,11785,11581,10999,10013,8689,7159,5543,3896, 2235,568,-1049,-2560,-3958,-5273,-6526,-7715,-8794,-9686, -10304,-10546,-10336,-9648,-8556,-7218,-5822,-4530,-3419,-2531, -1894,-1492,-1237,-1015,-743,-402,-3,436,949,1575, 2319,3144,4019,4913,5765,6491,7041,7428,7714,7964, 8215,8466,8717,8918,8957,8715,8146,7283,6209,5011, 3748,2458,1207,88,-821,-1523,-2085,-2597,-3124,-3672, -4209,-4699,-5139,-5569,-6043,-6596,-7239,-7947,-8648,-9263, -9734,-10031,-10146,-10099,-9906,-9546,-9000,-8288,-7461,-6587, -5737,-4964,-4301,-3747,-3291,-2871,-2377,-1692,-755,418, 1756,3138,4453,5629,6622,7409,8018,8544,9105,9767, 10494,11171,11675,11920,11871,11523,10862,9886,8642,7211, 5657,4029,2383,777,-745,-2175,-3570,-5013,-6515,-7967, -9214,-10137,-10665,-10744,-10339,-9500,-8361,-7100,-5867,-4779, -3877,-3149,-2592,-2159,-1797,-1455,-1130,-825,-500,-81, 492,1227,2085,3009,3939,4800,5515,6054,6452,6800, 7192,7653,8138,8567,8871,9007,8944,8638,8047,7168, 6049,4786,3507,2314,1254,329,-488,-1239,-1942,-2599, -3199,-3705,-4109,-4464,-4860,-5362,-5982,-6687,-7415,-8120, -8778,-9368,-9857,-10206,-10379,-10356,-10138,-9733,-9147,-8400, -7535,-6659,-5875,-5246,-4765,-4369,-3980,-3515,-2886,-2023, -894,447,1861,3183,4308,5223,5993,6702,7403,8140, 8948,9806,10605,11247,11672,11869,11825,11493,10827,9814, 8506,7042,5554,4097,2659,1220,-236,-1755,-3378,-5086, -6781,-8339,-9618,-10494,-10877,-10751,-10184,-9301,-8243,-7150, -6120,-5173,-4331,-3615,-3022,-2534,-2142,-1832,-1572,-1307, -950,-406,357,1277,2234,3119,3881,4522,5072,5568, 6049,6535,7035,7563,8114,8630,9018,9188,9072,8634, 7881,6876,5733,4579,3489,2459,1450,457,-484,-1323, -2015,-2570,-3039,-3476,-3907,-4360,-4857,-5418,-6054,-6754, -7480,-8181,-8819,-9397,-9916,-10324,-10533,-10501,-10214,-9705, -9038,-8268,-7451,-6668,-6031,-5600,-5304,-5011,-4594,-3971, -3110,-2014,-745,583,1814,2853,3725,4531,5355,6212, 7068,7919,8796,9695,10544,11249,11730,11930,11807,11328, 10522,9474,8272,6996,5705,4420,3113,1727,204,-1503, -3372,-5294,-7102,-8630,-9761,-10440,-10664,-10468,-9933,-9169, -8273,-7335,-6410,-5510,-4644,-3876,-3286,-2898,-2664,-2472, -2203,-1784,-1195,-463,370,1242,2092,2868,3548,4128, 4650,5142,5628,6151,6768,7481,8201,8793,9133,9156, 8858,8306,7582,6735,5783,4745,3653,2559,1517,543, -345,-1122,-1761,-2268,-2701,-3139,-3632,-4170,-4719,-5283, -5885,-6549,-7270,-8028,-8766,-9445,-10023,-10436,-10598,-10456, -10026,-9394,-8651,-7868,-7143,-6597,-6268,-6066,-5823,-5407, -4759,-3896,-2864,-1733,-576,546,1602,2574,3454,4288, 5116,5967,6874,7859,8914,9966,10899,11608,12021,12099, 11827,11236,10406,9435,8418,7385,6331,5195,3905,2404, 674,-1252,-3268,-5230,-6984,-8393,-9361,-9894,-10064,-9942, -9565,-8941,-8094,-7104,-6095,-5174,-4412,-3837,-3432,-3149, -2909,-2618,-2216,-1683,-1021,-256,580,1447,2269,2970, 3513,3941,4365,4893,5574,6363,7181,7944,8585,9032, 9242,9200,8909,8408,7745,6953,6028,4976,3857,2766, 1780,913,137,-567,-1192,-1744,-2252,-2757,-3265,-3772, -4279,-4822,-5441,-6150,-6919,-7738,-8583,-9390,-10036,-10389, -10380,-10025,-9420,-8712,-8039,-7494,-7098,-6823,-6585,-6290, -5858,-5272,-4541,-3662,-2644,-1541,-430,625,1594,2468, 3276,4056,4876,5813,6889,8064,9270,10408,11347,11969, 12228,12138,11762,11175,10465,9691,8888,8046,7106,5962, 4520,2773,798,-1260,-3263,-5097,-6693,-8001,-8996,-9641, -9927,-9852,-9431,-8711,-7805,-6862,-6003,-5283,-4697,-4221, -3843,-3544,-3288,-2999,-2566,-1907,-1063,-157,686,1406, 1998,2487,2939,3423,4000,4707,5540,6434,7278,7982, 8533,8940,9172,9184,8949,8480,7809,6964,5987,4940, 3906,2937,2042,1199,411,-295,-918,-1476,-2002,-2524, -3029,-3501,-3965,-4483,-5119,-5905,-6841,-7879,-8891,-9699, -10161,-10231,-9971,-9521,-9015,-8541,-8144,-7824,-7560,-7336, -7089,-6740,-6236,-5567,-4746,-3792,-2753,-1684,-643,312, 1155,1900,2619,3419,4388,5547,6837,8153,9417,10531, 11365,11835,11931,11736,11377,10952,10521,10059,9489,8702, 7621,6237,4594,2754,801,-1170,-3087,-4910,-6577,-7993, -9046,-9655,-9828,-9636,-9174,-8521,-7729,-6864,-6040,-5377, -4911,-4603,-4364,-4105,-3757,-3262,-2597,-1785,-908,-100, 549,1062,1532,2017,2552,3167,3891,4711,5569,6411, 7202,7930,8565,9048,9305,9293,9013,8506,7818,6973, 6019,5024,4041,3113,2251,1456,701,-26,-718,-1357, -1908,-2349,-2693,-3015,-3435,-4068,-4952,-6011,-7121,-8164, -9026,-9597,-9840,-9794,-9525,-9132,-8739,-8413,-8152,-7927, -7717,-7511,-7264,-6892,-6321,-5539,-4593,-3555,-2526,-1574, -711,64,763,1444,2204,3131,4265,5609,7073,8504, 9742,10668,11235,11492,11541,11490,11401,11283,11077,10694, 10054,9132,7949,6559,4978,3181,1181,-904,-2925,-4766, -6374,-7713,-8721,-9322,-9496,-9302,-8823,-8136,-7340,-6567, -5942,-5525,-5272,-5064,-4794,-4396,-3847,-3164,-2404,-1638, -942,-345,177,676,1204,1784,2404,3061,3787,4596, 5476,6371,7217,7978,8618,9084,9329,9334,9087,8596, 7897,7060,6164,5279,4423,3594,2761,1886,977,130, -542,-1002,-1296,-1526,-1820,-2274,-2932,-3801,-4856,-6005, -7109,-8032,-8713,-9131,-9302,-9263,-9063,-8764,-8453,-8209, -8074,-8009,-7919,-7727,-7407,-6923,-6235,-5366,-4401,-3422, -2495,-1680,-995,-401,193,902,1823,3003,4410,5953, 7444,8698,9631,10299,10802,11195,11472,11614,11632,11549, 11364,11025,10448,9583,8432,7013,5351,3488,1482,-568, -2561,-4416,-6070,-7433,-8411,-8938,-9021,-8742,-8218,-7568, -6940,-6455,-6134,-5898,-5653,-5322,-4869,-4307,-3663,-2998, -2337,-1696,-1081,-505,37,559,1078,1631,2251,2965, 3767,4634,5529,6424,7290,8086,8758,9239,9443,9346, 8992,8464,7850,7204,6510,5720,4818,3835,2840,1892, 1047,365,-96,-359,-553,-830,-1290,-1961,-2818,-3810, -4887,-5993,-7035,-7907,-8511,-8820,-8876,-8769,-8580,-8386, -8256,-8208,-8197,-8174,-8085,-7854,-7429,-6816,-6031,-5107, -4122,-3204,-2469,-1943,-1519,-1010,-271,735,1964,3329, 4735,6106,7378,8481,9371,10063,10606,11043,11375,11612, 11755,11803,11708,11397,10811,9928,8758,7324,5658,3798, 1791,-290,-2362,-4322,-6029,-7330,-8130,-8449,-8394,-8107, -7722,-7350,-7035,-6769,-6509,-6214,-5856,-5423,-4922,-4363, -3754,-3103,-2448,-1832,-1275,-771,-299,187,735,1349, 1994,2670,3417,4285,5274,6311,7268,8053,8608,8927, 9033,8954,8721,8374,7946,7399,6669,5740,4675,3583, 2589,1775,1168,726,395,117,-177,-564,-1119,-1884, -2850,-3952,-5099,-6188,-7125,-7838,-8281,-8464,-8481,-8445, -8415,-8393,-8387,-8435,-8544,-8627,-8547,-8193,-7542,-6675, -5740,-4880,-4172,-3610,-3150,-2701,-2154,-1417,-468,670, 1954,3321,4691,5990,7162,8178,9022,9718,10310,10826, 11280,11655,11925,12031,11902,11515,10897,10068,8991,7615, 5926,3962,1787,-483,-2657,-4545,-6023,-7065,-7689,-7968, -8011,-7919,-7766,-7587,-7370,-7116,-6835,-6521,-6131,-5635, -5042,-4411,-3799,-3236,-2694,-2137,-1566,-1006,-490,-27, 413,917,1555,2352,3298,4352,5430,6432,7275,7909, 8344,8636,8837,8952,8930,8696,8208,7483,6589,5586, 4531,3516,2639,1962,1471,1123,867,634,324,-156, -881,-1850,-2977,-4114,-5177,-6140,-6980,-7606,-7962,-8085, -8076,-8049,-8118,-8318,-8594,-8837,-8930,-8794,-8393,-7762, -6998,-6224,-5523,-4926,-4422,-3976,-3524,-2998,-2332,-1492, -466,717,2014,3350,4644,5820,6859,7770,8592,9355, 10058,10694,11230,11624,11853,11919,11834,11590,11143,10426, 9359,7882,6019,3902,1693,-454,-2391,-4025,-5323,-6291, -6933,-7285,-7418,-7444,-7450,-7457,-7398,-7205,-6888,-6489, -6040,-5552,-5039,-4489,-3901,-3303,-2707,-2129,-1595,-1138, -762,-409,12,602,1403,2369,3388,4364,5260,6080, 6803,7416,7936,8392,8763,8965,8914,8592,8025,7276, 6389,5413,4407,3471,2717,2203,1897,1681,1434,1089, 604,-44,-863,-1841,-2941,-4080,-5151,-6051,-6703,-7093, -7284,-7407,-7595,-7909,-8321,-8751,-9088,-9232,-9118,-8748, -8191,-7543,-6884,-6261,-5709,-5240,-4832,-4436,-3981,-3390, -2607,-1626,-482,764,2033,3252,4390,5451,6456,7423, 8350,9207,9939,10529,10988,11351,11659,11918,12062,11980, 11555,10721,9471,7858,5945,3830,1655,-423,-2256,-3763, -4932,-5806,-6450,-6929,-7279,-7511,-7628,-7636,-7548,-7358, -7069,-6717,-6340,-5920,-5422,-4823,-4151,-3486,-2915,-2472, -2131,-1812,-1459,-1018,-428,349,1265,2212,3106,3939, 4753,5576,6384,7125,7758,8272,8661,8881,8843,8498, 7862,7000,6019,5042,4175,3470,2932,2534,2235,1989, 1733,1390,863,80,-941,-2106,-3286,-4358,-5230,-5860, -6269,-6548,-6818,-7177,-7645,-8186,-8708,-9118,-9339,-9339, -9114,-8693,-8138,-7532,-6951,-6440,-6037,-5718,-5406,-5004, -4438,-3685,-2759,-1699,-570,560,1670,2786,3928,5080, 6196,7202,8055,8768,9391,9999,10616,11207,11719,12103, 12299,12211,11747,10847,9503,7773,5781,3686,1630,-272, -1941,-3335,-4475,-5409,-6178,-6786,-7210,-7457,-7561,-7576, -7546,-7472,-7309,-7017,-6595,-6058,-5425,-4751,-4122,-3626, -3282,-3017,-2731,-2344,-1833,-1229,-558,181,994,1856, 2718,3558,4376,5186,5998,6816,7607,8287,8733,8857, 8652,8169,7486,6673,5794,4910,4106,3468,3036,2781, 2631,2488,2217,1703,900,-139,-1292,-2429,-3432,-4242, -4854,-5325,-5737,-6160,-6643,-7192,-7796,-8403,-8929,-9288, -9425,-9317,-8996,-8522,-7985,-7479,-7073,-6786,-6571,-6313, -5899,-5301,-4559,-3731,-2857,-1936,-930,187,1398,2633, 3821,4909,5892,6788,7607,8348,9039,9747,10505,11263, 11933,12425,12647,12500,11908,10841,9361,7589,5666,3711, 1811,15,-1632,-3079,-4285,-5258,-6029,-6615,-7028,-7316, -7550,-7755,-7885,-7855,-7613,-7167,-6586,-5970,-5397,-4892, -4462,-4089,-3745,-3405,-3045,-2633,-2122,-1485,-749,20, 776,1514,2262,3064,3951,4922,5921,6864,7676,8294, 8659,8725,8493,7992,7273,6400,5479,4635,3985,3582, 3411,3362,3275,3004,2462,1652,653,-431,-1491,-2443, -3248,-3902,-4442,-4933,-5439,-5991,-6606,-7285,-8010,-8700, -9226,-9478,-9432,-9143,-8729,-8322,-8016,-7798,-7595,-7326, -6972,-6549,-6063,-5494,-4821,-4050,-3186,-2226,-1159,10, 1244,2463,3590,4592,5497,6328,7100,7851,8644,9530, 10505,11466,12256,12741,12853,12541,11799,10669,9230,7587, 5826,3981,2105,294,-1351,-2756,-3892,-4793,-5520,-6164, -6775,-7333,-7766,-8009,-8030,-7845,-7502,-7059,-6559,-6032, -5527,-5089,-4739,-4452,-4167,-3824,-3381,-2837,-2223,-1589, -968,-348,304,1027,1852,2767,3754,4784,5812,6775, 7599,8229,8612,8666,8342,7676,6808,5916,5143,4577, 4242,4093,4025,3909,3634,3131,2398,1485,485,-498, -1409,-2221,-2912,-3471,-3944,-4427,-5026,-5791,-6681,-7564, -8299,-8807,-9067,-9125,-9031,-8839,-8615,-8397,-8190,-7978, -7736,-7441,-7093,-6708,-6273,-5736,-5059,-4263,-3371,-2366, -1244,-36,1194,2361,3374,4237,5009,5760,6557,7462, 8499,9634,10771,11763,12472,12830,12811,12435,11726,10695, 9351,7730,5905,3986,2130,458,-992,-2247,-3362,-4384, -5326,-6164,-6875,-7441,-7853,-8076,-8082,-7874,-7487,-7001, -6514,-6091,-5747,-5459,-5175,-4848,-4450,-3979,-3456,-2921, -2397,-1874,-1322,-712,-27,741,1578,2494,3503,4608, 5755,6837,7731,8322,8534,8336,7792,7038,6247,5561, 5084,4824,4699,4595,4432,4164,3747,3140,2324,1330, 295,-627,-1350,-1899,-2376,-2890,-3517,-4285,-5170,-6101, -6975,-7713,-8265,-8627,-8841,-8944,-8939,-8826,-8647,-8455, -8267,-8070,-7840,-7577,-7274,-6916,-6487,-5961,-5306,-4493, -3510,-2388,-1191,5,1121,2103,2940,3671,4398,5231, 6240,7413,8655,9847,10906,11788,12457,12858,12932,12610, 11852,10694,9235,7589,5864,4139,2481,929,-499,-1800, -2983,-4068,-5085,-6025,-6836,-7451,-7823,-7943,-7833,-7551, -7185,-6830,-6521,-6253,-5975,-5649,-5258,-4826,-4387,-3946, -3491,-3002,-2490,-1965,-1429,-881,-279,433,1304,2341, 3534,4838,6136,7249,8004,8316,8232,7865,7333,6734, 6141,5636,5295,5143,5123,5094,4919,4511,3861,3013, 2072,1165,390,-216,-703,-1186,-1764,-2474,-3292,-4172, -5069,-5936,-6722,-7378,-7884,-8247,-8480,-8589,-8603,-8558, -8459,-8298,-8101,-7900,-7709,-7520,-7310,-7039,-6657,-6120, -5381,-4414,-3265,-2041,-874,127,967,1726,2493,3325, 4256,5271,6353,7495,8700,9934,11123,12154,12902,13272, 13221,12755,11908,10735,9315,7746,6123,4511,2951,1469, 72,-1264,-2568,-3838,-5031,-6064,-6854,-7359,-7595,-7628, -7540,-7384,-7180,-6933,-6655,-6359,-6047,-5707,-5324,-4902, -4460,-3999,-3509,-2990,-2487,-2047,-1668,-1278,-739,71, 1188,2524,3928,5263,6426,7340,7924,8136,8002,7607, 7067,6513,6069,5818,5763,5811,5798,5586,5124,4442, 3643,2835,2086,1435,877,358,-183,-791,-1494,-2301, -3185,-4095,-4982,-5798,-6520,-7139,-7643,-8030,-8301,-8455, -8500,-8454,-8339,-8165,-7967,-7813,-7738,-7716,-7645,-7412, -6927,-6161,-5168,-4068,-2995,-2011,-1098,-229,613,1434, 2248,3080,3980,4990,6131,7393,8745,10111,11360,12368, 13052,13357,13250,12751,11887,10714,9338,7870,6408,4983, 3560,2085,553,-980,-2439,-3757,-4893,-5824,-6522,-6986, -7249,-7367,-7373,-7285,-7112,-6867,-6586,-6324,-6086,-5819, -5445,-4936,-4353,-3802,-3360,-3045,-2822,-2603,-2290,-1790, -1033,-2,1255,2638,4040,5368,6495,7294,7690,7692, 7399,6973,6590,6358,6285,6304,6321,6234,5975,5535, 4943,4255,3549,2891,2312,1803,1315,784,176,-518, -1291,-2134,-3022,-3915,-4762,-5529,-6207,-6807,-7340,-7789, -8122,-8284,-8241,-8048,-7846,-7766,-7841,-8005,-8135,-8121, -7884,-7408,-6723,-5896,-4981,-4012,-3031,-2084,-1196,-367, 393,1110,1854,2683,3644,4766,6043,7419,8839,10253, 11546,12572,13211,13403,13158,12554,11686,10632,9458,8205, 6885,5483,3983,2384,744,-839,-2274,-3515,-4586,-5510, -6271,-6817,-7128,-7223,-7181,-7095,-7027,-6965,-6869,-6680, -6354,-5885,-5318,-4742,-4252,-3899,-3664,-3496,-3333,-3103, -2727,-2136,-1276,-119,1299,2847,4335,5583,6456,6916, 7040,6956,6785,6618,6523,6534,6616,6659,6564,6295, 5881,5367,4793,4187,3594,3046,2555,2102,1639,1091, 415,-380,-1240,-2091,-2889,-3657,-4446,-5281,-6115,-6857, -7415,-7733,-7827,-7780,-7708,-7700,-7795,-7976,-8176,-8322, -8347,-8200,-7866,-7360,-6696,-5883,-4958,-3989,-3054,-2204, -1444,-742,-57,646,1404,2262,3269,4464,5849,7365, 8917,10383,11629,12523,13002,13070,12787,12257,11569,10746, 9745,8542,7165,5675,4132,2566,997,-537,-2003,-3346, -4500,-5414,-6068,-6483,-6726,-6885,-7033,-7182,-7284,-7256, -7061,-6707,-6245,-5735,-5228,-4775,-4408,-4149,-4001,-3953, -3928,-3789,-3377,-2577,-1405,31,1587,3084,4356,5296, 5883,6172,6278,6316,6361,6451,6566,6655,6685,6625, 6450,6133,5675,5128,4571,4064,3631,3244,2826,2314, 1705,1031,348,-322,-1007,-1756,-2607,-3557,-4543,-5468, -6245,-6814,-7160,-7326,-7402,-7486,-7617,-7790,-7984,-8180, -8367,-8502,-8518,-8347,-7959,-7372,-6638,-5821,-4951,-4055, -3175,-2375,-1681,-1063,-468,165,901,1804,2936,4320, 5911,7573,9131,10468,11518,12244,12665,12823,12729,12380, 11779,10948,9919,8733,7432,6039,4534,2901,1189,-481, -1986,-3243,-4239,-5015,-5629,-6145,-6602,-6982,-7254,-7410, -7453,-7365,-7134,-6754,-6242,-5660,-5112,-4694,-4468,-4438, -4545,-4664,-4638,-4329,-3635,-2536,-1129,411,1890,3149, 4122,4832,5323,5651,5882,6085,6299,6530,6753,6907, 6910,6722,6381,5981,5586,5224,4872,4481,4019,3495, 2943,2401,1886,1384,831,166,-643,-1595,-2628,-3638, -4541,-5298,-5916,-6390,-6725,-6938,-7071,-7205,-7410,-7697, -8013,-8293,-8500,-8612,-8579,-8346,-7905,-7281,-6525,-5704, -4849,-3976,-3142,-2426,-1859,-1399,-935,-330,513,1655, 3052,4600,6177,7697,9095,10340,11386,12176,12665,12850, 12745,12397,11865,11176,10317,9248,7941,6411,4737,3024, 1368,-144,-1477,-2635,-3636,-4497,-5229,-5837,-6346,-6783, -7140,-7371,-7435,-7293,-6938,-6414,-5801,-5212,-4772,-4589, -4675,-4926,-5170,-5230,-4973,-4349,-3385,-2157,-776,628, 1925,2999,3802,4368,4803,5207,5639,6101,6524,6827, 6962,6935,6789,6580,6352,6121,5870,5546,5106,4578, 4043,3584,3212,2864,2454,1928,1263,456,-466,-1455, -2458,-3412,-4247,-4928,-5464,-5884,-6200,-6434,-6647,-6898, -7213,-7586,-7967,-8279,-8480,-8557,-8487,-8251,-7823,-7182, -6341,-5388,-4463,-3686,-3096,-2654,-2269,-1829,-1241,-447, 564,1781,3153,4629,6162,7692,9134,10388,11358,12017, 12409,12615,12670,12549,12195,11576,10660,9467,8067,6540, 4939,3328,1764,310,-994,-2135,-3130,-4011,-4797,-5506, -6157,-6746,-7216,-7472,-7434,-7087,-6493,-5817,-5247,-4905, -4822,-4956,-5212,-5467,-5604,-5502,-5058,-4241,-3121,-1824, -497,719,1738,2561,3246,3869,4494,5131,5728,6192, 6473,6594,6642,6682,6704,6657,6493,6206,5835,5411, 4969,4542,4154,3816,3517,3192,2750,2143,1373,478, -474,-1446,-2403,-3290,-4047,-4649,-5110,-5471,-5789,-6115, -6464,-6816,-7174,-7547,-7929,-8296,-8590,-8733,-8649,-8290, -7657,-6825,-5937,-5126,-4466,-3948,-3514,-3096,-2636,-2102, -1469,-688,305,1554,3026,4617,6203,7666,8931,9991, 10884,11622,12189,12556,12709,12625,12268,11615,10668,9465, 8070,6572,5036,3499,2000,603,-617,-1665,-2617,-3571, -4556,-5538,-6412,-7053,-7379,-7377,-7084,-6587,-6002,-5463, -5096,-4982,-5127,-5450,-5817,-6065,-6051,-5675,-4936,-3913, -2761,-1637,-629,279,1154,2035,2909,3716,4400,4959, 5429,5825,6139,6375,6550,6673,6703,6598,6357,6021, 5643,5264,4912,4612,4360,4103,3802,3434,2958,2324, 1506,530,-501,-1472,-2320,-3055,-3705,-4273,-4764,-5185, -5553,-5875,-6170,-6509,-6957,-7532,-8138,-8628,-8877,-8822, -8481,-7933,-7267,-6557,-5849,-5181,-4590,-4094,-3695,-3358, -3015,-2554,-1880,-948,238,1628,3129,4637,6082,7413, 8625,9707,10677,11528,12211,12654,12822,12721,12349,11701, 10768,9560,8124,6572,5046,3649,2392,1203,34,-1138, -2334,-3555,-4753,-5822,-6654,-7160,-7310,-7145,-6743,-6210, -5675,-5299,-5208,-5436,-5870,-6305,-6538,-6475,-6114,-5514, -4751,-3881,-2957,-2020,-1072,-100,873,1802,2649,3393, 4034,4595,5096,5553,5972,6313,6515,6565,6502,6354, 6129,5828,5492,5163,4888,4689,4539,4363,4074,3613, 2981,2210,1342,420,-489,-1351,-2170,-2951,-3670,-4277, -4732,-5059,-5349,-5706,-6195,-6805,-7477,-8106,-8598,-8902, -8999,-8877,-8550,-8052,-7409,-6692,-5995,-5400,-4934,-4579, -4275,-3935,-3473,-2821,-1946,-861,385,1724,3100,4482, 5851,7182,8434,9560,10545,11390,12091,12607,12886,12860, 12480,11746,10697,9429,8064,6728,5479,4309,3150,1923, 610,-753,-2130,-3492,-4777,-5880,-6665,-7034,-6987,-6631, -6158,-5764,-5580,-5646,-5912,-6253,-6547,-6711,-6687,-6463, -6058,-5497,-4822,-4050,-3174,-2211,-1216,-252,648,1482, 2269,3020,3740,4410,5002,5509,5928,6250,6454,6529, 6463,6282,6022,5735,5488,5322,5223,5128,4958,4655, 4213,3663,3040,2340,1545,637,-338,-1296,-2147,-2841, -3374,-3787,-4150,-4551,-5035,-5601,-6228,-6900,-7573,-8189, -8675,-8972,-9038,-8858,-8451,-7870,-7185,-6508,-5949,-5552, -5275,-5028,-4712,-4261,-3658,-2914,-2028,-992,204,1526, 2906,4273,5598,6877,8084,9213,10276,11273,12140,12734, 12950,12758,12211,11392,10387,9269,8105,6948,5825,4730, 3612,2376,952,-638,-2292,-3846,-5125,-6002,-6446,-6514, -6329,-6046,-5814,-5742,-5853,-6093,-6374,-6615,-6779,-6849, -6808,-6624,-6261,-5714,-5009,-4191,-3307,-2402,-1513,-632, 239,1083,1893,2666,3395,4077,4718,5294,5765,6085, 6219,6175,6023,5844,5699,5602,5526,5433,5287,5088, 4853,4593,4270,3813,3171,2356,1425,449,-486,-1308, -1990,-2549,-3017,-3451,-3900,-4395,-4953,-5581,-6265,-6980, -7699,-8363,-8864,-9092,-9008,-8650,-8137,-7575,-7049,-6592, -6217,-5910,-5636,-5347,-4993,-4523,-3914,-3148,-2216,-1117, 103,1382,2650,3882,5118,6402,7726,9033,10246,11289, 12091,12588,12726,12500,11944,11123,10152,9160,8236,7358, 6451,5421,4180,2669,917,-928,-2644,-4041,-5018,-5584, -5823,-5858,-5815,-5783,-5797,-5876,-6022,-6237,-6496,-6756, -6956,-7034,-6952,-6701,-6281,-5720,-5048,-4286,-3456,-2592, -1731,-895,-92,692,1487,2313,3163,3991,4708,5235, 5559,5719,5784,5808,5811,5785,5708,5583,5454,5367, 5316,5255,5129,4879,4460,3850,3079,2196,1282,408, -377,-1064,-1671,-2213,-2699,-3133,-3556,-4048,-4682,-5457, -6319,-7183,-7957,-8531,-8835,-8868,-8680,-8349,-7936,-7496, -7073,-6692,-6370,-6119,-5920,-5698,-5365,-4847,-4123,-3236, -2265,-1259,-218,902,2127,3427,4771,6145,7539,8920, 10218,11319,12099,12481,12459,12084,11466,10749,10038,9383, 8757,8040,7085,5804,4216,2407,529,-1228,-2710,-3847, -4647,-5162,-5454,-5596,-5658,-5706,-5791,-5953,-6195,-6491, -6790,-7031,-7171,-7195,-7100,-6873,-6483,-5918,-5200,-4391, -3579,-2827,-2125,-1414,-617,299,1297,2266,3117,3816, 4382,4842,5200,5455,5609,5665,5639,5561,5472,5406, 5400,5450,5518,5506,5326,4944,4392,3720,2968,2156, 1307,465,-305,-965,-1498,-1923,-2292,-2690,-3211,-3909, -4764,-5691,-6596,-7395,-8039,-8492,-8734,-8769,-8599,-8242, -7785,-7356,-7037,-6837,-6694,-6535,-6296,-5943,-5474,-4890, -4186,-3367,-2462,-1510,-521,542,1726,3041,4465,5980, 7545,9065,10395,11386,11944,12077,11884,11523,11138,10797, 10469,10056,9438,8521,7271,5733,4010,2228,487,-1117, -2485,-3548,-4300,-4776,-5053,-5222,-5375,-5560,-5786,-6035, -6292,-6555,-6839,-7119,-7328,-7391,-7249,-6879,-6339,-5732, -5126,-4529,-3906,-3217,-2437,-1578,-667,286,1234,2117, 2910,3617,4242,4765,5155,5380,5442,5408,5361,5359, 5418,5518,5621,5687,5682,5574,5338,4966,4441,3764, 2968,2093,1216,432,-191,-644,-991,-1342,-1796,-2387, -3092,-3891,-4756,-5657,-6557,-7380,-8022,-8413,-8534,-8422, -8166,-7866,-7578,-7338,-7153,-7002,-6842,-6633,-6337,-5943, -5450,-4861,-4174,-3405,-2592,-1763,-892,97,1303,2771, 4446,6206,7876,9291,10345,11000,11315,11417,11426,11416, 11393,11291,11016,10513,9744,8683,7339,5752,4008,2223, 521,-978,-2192,-3106,-3781,-4295,-4699,-5001,-5211,-5380, -5586,-5890,-6283,-6706,-7067,-7295,-7353,-7246,-7006,-6669, -6266,-5822,-5328,-4756,-4084,-3320,-2503,-1670,-817,79, 1014,1951,2835,3604,4209,4628,4881,5015,5092,5155, 5237,5343,5465,5579,5673,5748,5797,5760,5550,5103, 4427,3606,2754,1969,1299,737,257,-169,-571,-984, -1459,-2067,-2843,-3756,-4739,-5721,-6611,-7317,-7786,-8015, -8051,-7967,-7825,-7654,-7479,-7323,-7194,-7074,-6930,-6708, -6351,-5865,-5288,-4670,-4066,-3516,-2971,-2329,-1459,-271, 1251,3010,4825,6509,7933,9026,9819,10390,10823,11165, 11429,11610,11695,11655,11425,10920,10066,8847,7326,5650, 3962,2343,821,-575,-1784,-2740,-3432,-3913,-4247,-4508, -4767,-5090,-5500,-5969,-6424,-6787,-7017,-7125,-7132,-7059, -6914,-6687,-6354,-5902,-5354,-4752,-4115,-3436,-2699,-1892, -1003,-19,1017,2005,2839,3482,3952,4301,4572,4790, 4959,5064,5121,5194,5352,5595,5854,6042,6061,5863, 5462,4901,4213,3456,2698,2006,1415,938,566,242, -107,-557,-1154,-1920,-2846,-3863,-4873,-5784,-6536,-7112, -7516,-7741,-7803,-7739,-7615,-7498,-7440,-7430,-7414,-7320, -7086,-6682,-6151,-5586,-5092,-4737,-4480,-4183,-3684,-2865, -1683,-185,1508,3239,4871,6323,7564,8572,9349,9940, 10440,10943,11448,11867,12092,12056,11717,11047,10050,8778, 7313,5722,4076,2443,898,-477,-1606,-2453,-3042,-3466, -3845,-4267,-4748,-5253,-5725,-6127,-6469,-6756,-6987,-7149, -7220,-7182,-7024,-6761,-6399,-5967,-5506,-5029,-4497,-3833, -3008,-2049,-1045,-60,876,1742,2518,3191,3733,4119, 4367,4513,4612,4732,4919,5180,5498,5812,6049,6153, 6084,5822,5376,4775,4060,3301,2591,2003,1565,1256, 1004,705,269,-333,-1097,-1984,-2942,-3921,-4885,-5776, -6512,-7034,-7339,-7459,-7466,-7464,-7523,-7653,-7790,-7831, -7684,-7333,-6831,-6293,-5858,-5600,-5480,-5372,-5145,-4709, -4002,-2983,-1656,-80,1617,3280,4777,6043,7086,7967, 8760,9525,10286,11014,11640,12080,12268,12166,11777,11106, 10151,8903,7391,5715,4013,2426,1027,-144,-1094,-1868, -2521,-3104,-3652,-4182,-4686,-5161,-5594,-5995,-6383,-6750, -7040,-7187,-7179,-7053,-6876,-6685,-6473,-6185,-5777,-5232, -4571,-3824,-3010,-2137,-1212,-242,749,1684,2475,3074, 3490,3775,3984,4172,4382,4643,4961,5316,5675,6009, 6259,6351,6224,5857,5282,4573,3847,3200,2678,2277, 1970,1700,1404,1034,537,-119,-927,-1863,-2895,-3948, -4922,-5712,-6249,-6544,-6708,-6879,-7139,-7472,-7779,-7941, -7895,-7654,-7280,-6856,-6458,-6140,-5932,-5839,-5811,-5741, -5506,-4980,-4093,-2863,-1394,185,1746,3185,4439,5538, 6555,7551,8533,9463,10308,11055,11684,12163,12432,12419, 12063,11326,10222,8819,7247,5631,4090,2701,1478,387, -604,-1485,-2250,-2895,-3437,-3931,-4447,-5014,-5583,-6087, -6465,-6704,-6844,-6930,-6989,-7017,-6977,-6833,-6582,-6232, -5791,-5280,-4690,-3998,-3174,-2227,-1206,-179,794,1640, 2315,2821,3196,3482,3726,3965,4238,4572,4983,5460, 5937,6309,6489,6437,6153,5682,5094,4470,3881,3374, 2956,2612,2323,2078,1844,1528,1007,202,-848,-1999, -3081,-3971,-4634,-5127,-5539,-5948,-6391,-6848,-7276,-7619, -7816,-7821,-7623,-7279,-6866,-6478,-6200,-6088,-6119,-6227, -6289,-6167,-5748,-4974,-3870,-2538,-1133,248,1578,2870, 4111,5274,6358,7393,8392,9350,10270,11146,11928,12529, 12833,12741,12220,11312,10118,8765,7348,5919,4498,3111, 1817,683,-274,-1071,-1763,-2423,-3101,-3787,-4439,-5011, -5485,-5869,-6178,-6439,-6665,-6842,-6954,-6973,-6899,-6756, -6562,-6298,-5939,-5458,-4831,-4057,-3149,-2155,-1139,-171, 712,1499,2146,2622,2945,3194,3439,3744,4142,4646, 5229,5798,6244,6487,6516,6354,6045,5625,5103,4498, 3887,3387,3074,2941,2888,2774,2451,1854,1004,-3, -1041,-1993,-2803,-3475,-4050,-4595,-5156,-5755,-6365,-6933, -7388,-7674,-7746,-7584,-7222,-6785,-6412,-6217,-6229,-6390, -6584,-6678,-6575,-6225,-5628,-4795,-3752,-2539,-1229,102, 1404,2655,3835,4936,5972,6997,8070,9214,10385,11457, 12277,12754,12876,12655,12116,11300,10226,8936,7501,6028, 4605,3309,2172,1172,252,-635,-1491,-2301,-3042,-3707, -4305,-4839,-5314,-5742,-6127,-6445,-6668,-6802,-6884,-6939, -6969,-6936,-6794,-6522,-6121,-5596,-4936,-4139,-3216,-2215, -1202,-233,629,1333,1840,2168,2408,2699,3116,3656, 4251,4828,5336,5780,6165,6432,6510,6339,5914,5314, 4679,4145,3787,3618,3573,3537,3382,3022,2427,1642, 755,-152,-1009,-1780,-2466,-3096,-3704,-4349,-5070,-5849, -6610,-7234,-7605,-7669,-7476,-7135,-6776,-6502,-6389,-6453, -6636,-6833,-6936,-6887,-6670,-6267,-5651,-4821,-3786,-2571, -1256,30,1201,2265,3296,4362,5523,6787,8089,9346, 10492,11466,12214,12688,12857,12681,12136,11238,10077,8768, 7408,6081,4832,3660,2547,1481,468,-476,-1337,-2128, -2862,-3557,-4213,-4799,-5299,-5709,-6040,-6311,-6544,-6751, -6927,-7054,-7111,-7074,-6919,-6645,-6271,-5774,-5103,-4227, -3183,-2073,-1050,-228,378,845,1254,1671,2119,2580, 3042,3538,4112,4763,5429,6010,6408,6553,6412,6004, 5437,4884,4475,4241,4149,4109,4034,3858,3537,3035, 2358,1553,707,-84,-768,-1356,-1926,-2584,-3379,-4285, -5221,-6086,-6768,-7181,-7294,-7162,-6910,-6667,-6526,-6501, -6552,-6648,-6778,-6927,-7048,-7056,-6852,-6371,-5614,-4637, -3538,-2412,-1324,-297,707,1761,2902,4126,5405,6708, 8010,9283,10480,11530,12342,12827,12920,12613,11970,11087, 10039,8877,7645,6386,5141,3947,2831,1787,796,-140, -1024,-1869,-2677,-3429,-4091,-4648,-5101,-5491,-5852,-6195, -6505,-6742,-6893,-6988,-7075,-7158,-7164,-6986,-6553,-5851, -4953,-3976,-3011,-2104,-1280,-557,60,583,1024,1407, 1784,2209,2745,3427,4227,5048,5744,6194,6347,6231, 5921,5519,5115,4778,4572,4501,4507,4498,4363,4038, 3515,2861,2153,1464,847,311,-206,-792,-1523,-2432, -3473,-4525,-5447,-6142,-6581,-6801,-6853,-6785,-6663,-6532, -6430,-6412,-6525,-6766,-7068,-7322,-7416,-7262,-6839,-6180, -5364,-4481,-3585,-2667,-1694,-674,376,1454,2582,3786, 5095,6501,7954,9358,10614,11639,12364,12740,12759,12453, 11872,11073,10098,8992,7799,6581,5393,4266,3198,2164, 1132,104,-871,-1741,-2493,-3161,-3799,-4420,-4981,-5427, -5746,-5986,-6216,-6498,-6835,-7173,-7422,-7501,-7357,-6980, -6408,-5694,-4889,-4020,-3112,-2200,-1347,-626,-90,267, 545,879,1368,2042,2854,3729,4573,5300,5826,6092, 6082,5851,5513,5190,4969,4872,4878,4928,4927,4783, 4445,3927,3313,2722,2235,1845,1474,1009,358,-496, -1495,-2537,-3540,-4461,-5258,-5892,-6327,-6547,-6569,-6451, -6285,-6180,-6233,-6466,-6806,-7149,-7397,-7478,-7368,-7076, -6632,-6057,-5355,-4538,-3648,-2742,-1850,-942,12,1058, 2240,3564,5008,6524,8031,9425,10612,11559,12232,12607, 12667,12408,11828,10996,10027,9006,7964,6889,5750,4563, 3392,2305,1319,402,-511,-1436,-2339,-3159,-3853,-4394, -4796,-5108,-5413,-5778,-6229,-6727,-7170,-7470,-7604,-7575, -7395,-7066,-6572,-5886,-5017,-4044,-3084,-2241,-1571,-1073, -706,-398,-57,420,1092,1953,2923,3877,4695,5296, 5628,5687,5535,5291,5075,4984,5040,5176,5269,5202, 4938,4526,4054,3615,3250,2944,2634,2254,1765,1135, 361,-537,-1524,-2569,-3618,-4598,-5406,-5958,-6221,-6254, -6167,-6086,-6108,-6268,-6535,-6862,-7189,-7456,-7623,-7658, -7530,-7222,-6749,-6136,-5424,-4660,-3884,-3119,-2355,-1538, -587,560,1887,3322,4801,6303,7801,9228,10484,11471, 12105,12366,12313,12030,11568,10925,10097,9110,8009,6854, 5705,4613,3588,2590,1570,505,-583,-1610,-2494,-3183, -3693,-4105,-4526,-5000,-5512,-6010,-6469,-6892,-7286,-7618, -7834,-7883,-7718,-7314,-6683,-5865,-4936,-4002,-3175,-2523, -2049,-1716,-1438,-1103,-613,87,990,2020,3063,3966, 4611,4942,5010,4938,4868,4891,5016,5188,5313,5316, 5165,4892,4568,4254,3968,3701,3428,3129,2787,2396, 1939,1357,569,-454,-1629,-2808,-3863,-4701,-5286,-5636, -5802,-5857,-5891,-5975,-6140,-6393,-6716,-7066,-7401,-7671, -7834,-7835,-7630,-7224,-6682,-6082,-5486,-4898,-4284,-3597, -2820,-1941,-950,174,1474,2956,4573,6224,7790,9154, 10257,11096,11683,12027,12133,11971,11528,10825,9923,8923, 7909,6941,5990,4984,3874,2683,1489,379,-608,-1478, -2237,-2888,-3456,-3988,-4485,-4966,-5453,-5968,-6497,-7024, -7513,-7907,-8136,-8130,-7846,-7300,-6556,-5705,-4843,-4050, -3399,-2923,-2616,-2393,-2114,-1645,-912,86,1233,2321, 3180,3754,4087,4266,4401,4578,4804,5031,5205,5282, 5260,5152,4980,4766,4518,4234,3942,3686,3504,3368, 3179,2833,2274,1481,474,-671,-1839,-2909,-3793,-4464, -4934,-5242,-5439,-5570,-5681,-5821,-6048,-6405,-6860,-7325, -7695,-7879,-7870,-7723,-7478,-7143,-6727,-6237,-5683,-5101, -4523,-3945,-3305,-2507,-1478,-198,1288,2898,4525,6083, 7504,8778,9920,10898,11619,11997,12014,11722,11217,10591, 9890,9112,8235,7248,6159,4998,3814,2652,1541,498, -462,-1339,-2120,-2796,-3370,-3863,-4330,-4822,-5382,-6018, -6699,-7347,-7883,-8244,-8383,-8263,-7865,-7215,-6392,-5530, -4772,-4210,-3865,-3678,-3501,-3179,-2596,-1745,-723,344, 1315,2090,2660,3110,3509,3879,4202,4460,4667,4850, 5017,5131,5139,5009,4776,4492,4212,3991,3862,3815, 3794,3710,3462,2967,2224,1286,244,-824,-1870,-2850, -3700,-4344,-4758,-4976,-5090,-5219,-5445,-5796,-6229,-6671, -7080,-7429,-7689,-7833,-7848,-7725,-7460,-7076,-6613,-6143, -5719,-5357,-4981,-4477,-3746,-2767,-1582,-261,1143,2623, 4170,5766,7338,8776,9968,10853,11416,11685,11706,11534, 11203,10728,10103,9313,8375,7330,6215,5084,3958,2843, 1739,659,-347,-1213,-1926,-2518,-3038,-3544,-4087,-4679, -5349,-6085,-6844,-7557,-8136,-8482,-8513,-8184,-7543,-6737, -5959,-5342,-4949,-4741,-4593,-4340,-3873,-3188,-2358,-1469, -577,298,1132,1875,2481,2959,3356,3723,4083,4433, 4751,5013,5185,5220,5091,4823,4507,4262,4152,4173, 4245,4279,4206,3991,3613,3051,2294,1352,278,-846, -1902,-2784,-3445,-3897,-4208,-4458,-4716,-5022,-5385,-5774, -6181,-6608,-7048,-7447,-7726,-7810,-7679,-7387,-7036,-6725, -6492,-6291,-6033,-5664,-5165,-4541,-3790,-2901,-1841,-579, 886,2515,4224,5905,7455,8784,9842,10631,11193,11557, 11726,11689,11424,10944,10282,9490,8592,7601,6524,5368, 4172,2994,1880,854,-66,-865,-1539,-2111,-2621,-3121, -3691,-4389,-5233,-6183,-7131,-7916,-8371,-8408,-8063,-7482, -6856,-6329,-5944,-5670,-5439,-5184,-4856,-4413,-3828,-3108, -2289,-1428,-569,260,1033,1707,2256,2717,3156,3627, 4134,4630,5017,5205,5191,5038,4829,4637,4490,4401, 4388,4447,4538,4597,4560,4346,3904,3203,2280,1220, 145,-838,-1683,-2396,-3000,-3496,-3882,-4170,-4418,-4707, -5109,-5641,-6246,-6824,-7262,-7503,-7555,-7466,-7319,-7165, -7012,-6847,-6648,-6398,-6094,-5728,-5292,-4766,-4117,-3262, -2131,-723,877,2563,4232,5801,7238,8508,9583,10441, 11082,11502,11690,11658,11442,11049,10474,9723,8821,7801, 6685,5518,4348,3197,2090,1045,111,-647,-1198,-1603, -2002,-2568,-3404,-4480,-5639,-6696,-7487,-7930,-8024,-7836, -7479,-7073,-6700,-6397,-6155,-5936,-5691,-5377,-4975,-4479, -3868,-3112,-2236,-1335,-526,142,718,1285,1890,2527, 3179,3793,4321,4721,4966,5055,5017,4892,4722,4552, 4441,4448,4587,4811,5026,5105,4949,4525,3874,3083, 2220,1304,343,-621,-1498,-2214,-2730,-3068,-3324,-3619, -4030,-4569,-5187,-5803,-6345,-6751,-7011,-7146,-7201,-7211, -7182,-7098,-6937,-6725,-6505,-6314,-6139,-5933,-5615,-5110, -4373,-3393,-2178,-754,818,2458,4092,5655,7089,8358, 9427,10276,10918,11380,11662,11747,11611,11229,10621,9850, 8981,8042,6994,5799,4494,3198,2054,1159,521,62, -342,-849,-1585,-2563,-3704,-4889,-5964,-6795,-7315,-7539, -7553,-7429,-7209,-6931,-6651,-6428,-6278,-6159,-5984,-5669, -5172,-4506,-3734,-2941,-2192,-1514,-884,-260,390,1089, 1827,2549,3203,3785,4291,4686,4913,4939,4802,4588, 4405,4359,4485,4743,5033,5242,5314,5241,5021,4626, 4042,3265,2323,1297,297,-558,-1213,-1693,-2075,-2435, -2851,-3366,-3964,-4589,-5171,-5675,-6098,-6464,-6770,-6987, -7091,-7080,-6981,-6838,-6700,-6604,-6548,-6490,-6380,-6173, -5808,-5234,-4436,-3430,-2230,-827,751,2410,4031,5537, 6903,8138,9248,10208,10964,11469,11725,11762,11627,11354, 10932,10315,9454,8338,7021,5638,4339,3230,2393,1818, 1393,950,333,-522,-1576,-2725,-3872,-4940,-5862,-6567, -7009,-7185,-7144,-6977,-6791,-6665,-6609,-6589,-6537,-6366, -6019,-5510,-4900,-4247,-3601,-2971,-2336,-1671,-992,-327, 331,1029,1802,2633,3437,4109,4555,4749,4749,4645, 4531,4482,4527,4654,4844,5079,5331,5561,5713,5703, 5451,4927,4162,3232,2253,1342,575,-40,-549,-1031, -1538,-2076,-2623,-3166,-3722,-4301,-4888,-5453,-5951,-6345, -6613,-6743,-6750,-6681,-6599,-6551,-6543,-6546,-6530,-6487, -6398,-6221,-5887,-5324,-4489,-3400,-2119,-716,773,2317, 3886,5446,6933,8257,9354,10212,10853,11321,11673,11922, 12033,11917,11473,10649,9500,8158,6806,5603,4622,3850, 3225,2667,2097,1445,655,-315,-1451,-2674,-3874,-4938, -5759,-6281,-6533,-6601,-6595,-6611,-6685,-6783,-6825,-6747, -6544,-6251,-5888,-5441,-4886,-4260,-3602,-2967,-2386,-1841, -1270,-608,186,1110,2073,2934,3599,4048,4312,4440, 4481,4488,4483,4474,4502,4625,4882,5262,5688,6014, 6108,5896,5404,4706,3908,3105,2352,1653,998,383, -197,-749,-1276,-1793,-2326,-2897,-3528,-4206,-4874,-5454, -5891,-6186,-6372,-6488,-6534,-6509,-6440,-6384,-6394,-6489, -6621,-6704,-6649,-6400,-5940,-5287,-4461,-3471,-2315,-977, 541,2194,3871,5443,6826,7974,8914,9727,10500,11247, 11898,12341,12431,12077,11306,10251,9068,7879,6779,5815, 4991,4307,3728,3174,2554,1784,801,-390,-1706,-2991, -4083,-4896,-5461,-5863,-6173,-6416,-6607,-6754,-6863,-6940, -6988,-6972,-6831,-6516,-6046,-5479,-4897,-4373,-3920,-3487, -2995,-2387,-1633,-759,168,1077,1922,2653,3236,3675, 3981,4137,4144,4041,3940,3969,4183,4564,5038,5513, 5875,6026,5906,5536,5009,4403,3755,3086,2403,1711, 1046,449,-62,-535,-1046,-1639,-2308,-2999,-3680,-4332, -4942,-5499,-5960,-6279,-6431,-6447,-6404,-6380,-6426,-6550, -6719,-6887,-6989,-6966,-6799,-6506,-6113,-5600,-4895,-3924, -2669,-1165,491,2148,3658,4961,6111,7208,8323,9444, 10513,11431,12070,12328,12169,11649,10845,9841,8748,7663, 6677,5870,5259,4761,4246,3591,2730,1668,477,-742, -1917,-2998,-3946,-4733,-5341,-5783,-6103,-6354,-6597,-6862, -7133,-7338,-7391,-7243,-6916,-6483,-6034,-5625,-5281,-4965, -4585,-4065,-3403,-2647,-1840,-1005,-128,779,1665,2442, 3034,3404,3553,3529,3434,3375,3457,3731,4169,4672, 5135,5484,5683,5723,5596,5296,4825,4218,3539,2876, 2279,1738,1214,673,110,-448,-1009,-1608,-2273,-2997, -3752,-4488,-5146,-5665,-6011,-6186,-6245,-6274,-6346,-6495, -6695,-6880,-7000,-7051,-7065,-7085,-7097,-7014,-6724,-6136, -5213,-3995,-2588,-1137,264,1607,2904,4184,5494,6848, 8192,9440,10535,11421,12009,12206,11976,11349,10430,9382, 8384,7548,6887,6337,5805,5203,4481,3631,2652,1559, 373,-855,-2041,-3092,-3955,-4620,-5131,-5560,-5974,-6424, -6893,-7287,-7508,-7530,-7384,-7143,-6884,-6633,-6377,-6093, -5761,-5374,-4924,-4398,-3778,-3043,-2196,-1252,-254,743, 1643,2324,2715,2858,2868,2869,2947,3137,3423,3785, 4209,4685,5155,5523,5705,5670,5438,5057,4588,4065, 3508,2936,2373,1827,1305,806,311,-210,-796,-1485, -2287,-3149,-3969,-4648,-5141,-5471,-5710,-5923,-6134,-6338, -6505,-6608,-6657,-6707,-6822,-7031,-7301,-7536,-7607,-7398, -6859,-6025,-4997,-3870,-2696,-1490,-233,1089,2462,3851, 5254,6690,8154,9577,10813,11692,12102,12026,11556,10846, 10050,9270,8553,7918,7342,6783,6200,5553,4788,3854, 2753,1529,268,-916,-1931,-2761,-3467,-4120,-4772,-5435, -6055,-6572,-6950,-7185,-7291,-7292,-7220,-7094,-6917,-6691, -6429,-6128,-5803,-5478,-5132,-4680,-4028,-3146,-2099,-996, 32,891,1560,2046,2356,2525,2613,2687,2823,3073, 3451,3929,4448,4941,5348,5615,5705,5619,5389,5059, 4643,4140,3580,3015,2508,2080,1698,1302,801,149, -639,-1508,-2367,-3122,-3737,-4244,-4696,-5135,-5548,-5889, -6101,-6164,-6136,-6133,-6249,-6530,-6933,-7335,-7614,-7698, -7558,-7194,-6628,-5880,-4959,-3898,-2774,-1657,-545,646, 2002,3537,5206,6921,8547,9935,10972,11592,11802,11654, 11248,10685,10039,9374,8755,8233,7794,7346,6767,5978, 4973,3821,2619,1456,383,-579,-1455,-2298,-3150,-3990, -4766,-5445,-6002,-6429,-6748,-6996,-7184,-7270,-7207,-7020, -6772,-6550,-6404,-6312,-6195,-5949,-5502,-4838,-3987,-3000, -1947,-912,11,770,1347,1748,1992,2123,2230,2400, 2677,3077,3565,4076,4558,4981,5326,5576,5699,5650, 5408,5001,4506,4005,3563,3207,2899,2575,2160,1586, 850,48,-721,-1422,-2072,-2720,-3401,-4101,-4747,-5239, -5531,-5636,-5643,-5672,-5803,-6044,-6360,-6724,-7109,-7467, -7717,-7776,-7586,-7146,-6494,-5711,-4877,-4037,-3178,-2247, -1167,154,1752,3545,5364,7070,8585,9840,10782,11349, 11516,11314,10867,10332,9829,9426,9104,8774,8328,7708, 6895,5912,4832,3747,2714,1736,771,-219,-1226,-2199, -3092,-3889,-4597,-5251,-5864,-6398,-6808,-7041,-7099,-7035, -6919,-6815,-6758,-6750,-6756,-6723,-6571,-6227,-5655,-4884, -3960,-2931,-1872,-872,-27,601,1019,1281,1481,1708, 1996,2323,2680,3072,3514,4018,4562,5080,5499,5731, 5721,5486,5112,4717,4378,4126,3920,3672,3288,2758, 2141,1514,923,345,-292,-1035,-1877,-2739,-3520,-4155, -4625,-4943,-5138,-5251,-5340,-5453,-5643,-5949,-6370,-6860, -7342,-7710,-7848,-7700,-7316,-6812,-6279,-5753,-5195,-4536, -3711,-2680,-1431,37,1708,3528,5391,7165,8715,9912, 10674,11009,11007,10795,10514,10268,10089,9918,9648,9192, 8540,7750,6882,5980,5044,4059,3016,1956,921,-74, -1019,-1920,-2814,-3702,-4538,-5301,-5955,-6434,-6714,-6823, -6834,-6820,-6833,-6883,-6953,-7030,-7083,-7052,-6857,-6435, -5764,-4868,-3831,-2764,-1769,-933,-278,225,629,976, 1294,1582,1844,2125,2477,2949,3559,4250,4905,5377, 5580,5532,5354,5174,5049,4945,4786,4513,4142,3723, 3294,2875,2433,1933,1338,638,-143,-977,-1827,-2640, -3357,-3942,-4380,-4651,-4769,-4811,-4887,-5106,-5509,-6062, -6644,-7134,-7441,-7539,-7463,-7277,-7028,-6725,-6372,-5957, -5453,-4818,-4002,-2952,-1643,-60,1786,3797,5764,7487, 8833,9741,10256,10513,10646,10732,10765,10709,10544,10265, 9878,9375,8754,8028,7206,6284,5285,4262,3259,2302, 1381,445,-535,-1555,-2585,-3568,-4441,-5160,-5709,-6083, -6314,-6441,-6503,-6559,-6657,-6814,-7020,-7240,-7372,-7303, -6967,-6364,-5546,-4611,-3648,-2722,-1876,-1127,-466,104, 547,843,1011,1159,1424,1889,2543,3280,3954,4472, 4819,5038,5184,5273,5310,5287,5186,4989,4730,4437, 4139,3843,3522,3140,2673,2123,1488,764,-51,-934, -1847,-2712,-3402,-3834,-4033,-4116,-4211,-4418,-4768,-5235, -5762,-6282,-6735,-7076,-7282,-7348,-7299,-7176,-6996,-6771, -6506,-6213,-5861,-5355,-4557,-3372,-1795,71,2070,4017, 5740,7149,8242,9079,9705,10158,10458,10622,10671,10634, 10517,10311,9984,9500,8841,8031,7130,6205,5284,4381, 3480,2556,1583,537,-559,-1646,-2676,-3637,-4495,-5185, -5679,-5982,-6133,-6216,-6329,-6531,-6832,-7199,-7550,-7766, -7755,-7478,-6987,-6368,-5662,-4857,-3948,-2967,-2007,-1192, -620,-290,-111,53,321,755,1332,1965,2579,3137, 3646,4105,4495,4807,5036,5160,5166,5082,4952,4806, 4648,4441,4179,3884,3586,3269,2876,2343,1624,725, -278,-1248,-2076,-2715,-3160,-3442,-3641,-3845,-4118,-4495, -4959,-5451,-5936,-6410,-6842,-7166,-7323,-7314,-7184,-7027, -6941,-6967,-7024,-6964,-6640,-5952,-4857,-3392,-1670,171, 2000,3710,5262,6634,7782,8674,9333,9799,10131,10369, 10533,10610,10580,10387,9988,9406,8699,7928,7121,6291, 5442,4576,3684,2740,1720,621,-538,-1692,-2773,-3735, -4525,-5080,-5390,-5545,-5696,-5958,-6360,-6822,-7245,-7559, -7744,-7814,-7784,-7632,-7281,-6669,-5810,-4785,-3732,-2801, -2086,-1596,-1257,-968,-646,-248,218,729,1266,1820, 2392,2974,3534,4017,4395,4661,4841,4973,5053,5040, 4912,4705,4495,4334,4225,4119,3939,3613,3088,2354, 1441,444,-492,-1278,-1885,-2354,-2740,-3082,-3384,-3680, -4013,-4426,-4943,-5534,-6117,-6594,-6882,-6964,-6893,-6795, -6793,-6955,-7230,-7484,-7585,-7412,-6878,-5972,-4745,-3276, -1634,100,1855,3546,5081,6373,7420,8271,8976,9568, 10054,10423,10659,10749,10667,10407,9986,9429,8776,8060, 7310,6535,5737,4918,4056,3100,1990,735,-591,-1843, -2874,-3617,-4129,-4521,-4897,-5296,-5702,-6097,-6470,-6820, -7172,-7540,-7894,-8143,-8172,-7889,-7281,-6425,-5457,-4516, -3701,-3042,-2493,-2010,-1569,-1165,-777,-372,85,627, 1234,1844,2407,2923,3422,3901,4337,4683,4907,4994, 4956,4833,4680,4581,4580,4649,4686,4582,4264,3717, 3001,2196,1348,487,-337,-1065,-1663,-2120,-2453,-2713, -2983,-3364,-3902,-4565,-5244,-5820,-6213,-6390,-6408,-6383, -6430,-6612,-6928,-7312,-7671,-7894,-7895,-7608,-7001,-6041, -4752,-3229,-1587,97,1754,3319,4733,5978,7062,8004, 8827,9526,10074,10461,10689,10775,10710,10476,10061,9473, 8778,8079,7450,6866,6218,5385,4319,3068,1738,446, -717,-1691,-2489,-3169,-3789,-4353,-4821,-5192,-5509,-5839, -6265,-6819,-7441,-7994,-8341,-8405,-8181,-7718,-7070,-6292, -5449,-4621,-3883,-3279,-2791,-2369,-1955,-1511,-1035,-531, -17,502,1030,1573,2134,2730,3352,3937,4383,4622, 4666,4600,4530,4533,4623,4773,4913,4969,4883,4633, 4221,3663,2972,2161,1262,374,-403,-996,-1390,-1652, -1912,-2286,-2829,-3507,-4229,-4881,-5374,-5680,-5840,-5932, -6016,-6134,-6336,-6656,-7078,-7542,-7953,-8198,-8173,-7817, -7097,-6034,-4708,-3208,-1636,-78,1437,2911,4335,5652, 6799,7754,8562,9285,9937,10472,10795,10850,10643,10251, 9777,9329,8932,8526,8020,7340,6437,5334,4123,2911, 1762,661,-424,-1468,-2397,-3146,-3687,-4060,-4375,-4742, -5225,-5834,-6510,-7174,-7748,-8177,-8408,-8390,-8110,-7597, -6920,-6158,-5389,-4683,-4085,-3580,-3106,-2618,-2100,-1579, -1093,-661,-249,203,765,1461,2227,2950,3535,3926, 4138,4239,4305,4387,4507,4658,4826,4987,5117,5171, 5110,4883,4440,3754,2876,1943,1110,448,-27,-368, -685,-1079,-1600,-2244,-2960,-3665,-4284,-4769,-5101,-5300, -5418,-5509,-5629,-5830,-6146,-6602,-7171,-7760,-8215,-8396, -8219,-7696,-6895,-5869,-4647,-3258,-1742,-171,1363,2788, 4084,5293,6456,7581,8629,9522,10180,10556,10652,10551, 10372,10202,10057,9873,9548,9011,8291,7454,6550,5573, 4488,3287,2007,745,-387,-1326,-2063,-2627,-3074,-3478, -3922,-4471,-5118,-5817,-6526,-7210,-7797,-8193,-8323,-8171, -7778,-7235,-6618,-5988,-5385,-4817,-4252,-3661,-3067,-2532, -2100,-1745,-1389,-971,-450,194,938,1704,2401,2967, 3386,3682,3904,4089,4234,4352,4479,4661,4927,5258, 5548,5651,5477,5016,4322,3503,2690,1988,1424,978, 600,208,-271,-860,-1537,-2250,-2945,-3576,-4110,-4506, -4738,-4824,-4853,-4944,-5174,-5577,-6125,-6753,-7355,-7847, -8175,-8289,-8135,-7672,-6881,-5791,-4487,-3078,-1671,-320, 985,2310,3704,5166,6610,7880,8855,9511,9921,10196, 10419,10593,10667,10610,10421,10113,9715,9231,8630,7887, 6978,5885,4639,3326,2062,922,-60,-870,-1518,-2044, -2505,-2978,-3526,-4193,-4978,-5832,-6653,-7331,-7793,-7998, -7963,-7763,-7471,-7099,-6631,-6053,-5389,-4703,-4061,-3514, -3075,-2720,-2398,-2027,-1539,-935,-258,430,1094,1745, 2378,2948,3391,3684,3837,3916,4016,4213,4547,4988, 5449,5814,5978,5857,5446,4829,4129,3453,2875,2391, 1960,1545,1108,606,16,-668,-1433,-2233,-2973,-3542, -3888,-4062,-4152,-4256,-4433,-4707,-5080,-5554,-6118,-6746, -7387,-7965,-8382,-8504,-8208,-7503,-6525,-5443,-4364,-3281, -2117,-786,718,2325,3910,5364,6633,7690,8548,9236, 9791,10226,10525,10675,10711,10668,10559,10376,10097,9662, 9016,8146,7082,5887,4640,3397,2213,1138,222,-511, -1068,-1516,-1982,-2594,-3389,-4295,-5202,-6027,-6705,-7212, -7556,-7761,-7850,-7813,-7601,-7185,-6591,-5902,-5229,-4656, -4205,-3829,-3457,-3045,-2589,-2104,-1579,-993,-343,364, 1108,1838,2464,2916,3172,3288,3366,3517,3811,4278, 4857,5419,5821,5989,5914,5633,5193,4645,4054,3493, 3013,2627,2296,1942,1475,841,47,-827,-1660,-2362, -2892,-3261,-3518,-3725,-3917,-4098,-4281,-4506,-4865,-5439, -6217,-7071,-7808,-8271,-8401,-8214,-7795,-7237,-6586,-5808, -4855,-3698,-2344,-846,716,2260,3719,5066,6303,7408, 8324,9034,9576,9988,10279,10480,10627,10720,10724,10585, 10270,9768,9078,8179,7077,5816,4494,3232,2133,1260, 591,37,-502,-1109,-1829,-2666,-3563,-4445,-5234,-5925, -6567,-7168,-7675,-7998,-8084,-7922,-7551,-7051,-6505,-5966, -5454,-4988,-4558,-4154,-3765,-3373,-2958,-2491,-1926,-1233, -430,402,1172,1782,2182,2386,2497,2647,2928,3341, 3846,4403,4949,5414,5722,5808,5647,5272,4779,4268, 3816,3465,3202,2951,2599,2058,1334,516,-279,-1004, -1669,-2297,-2865,-3308,-3573,-3659,-3658,-3714,-3964,-4463, -5182,-6017,-6828,-7491,-7940,-8190,-8275,-8215,-8000,-7605, -6997,-6165,-5121,-3900,-2548,-1117,365,1885,3389,4788, 6020,7054,7893,8577,9148,9624,10004,10293,10510,10658, 10722,10655,10386,9865,9069,7997,6732,5423,4213,3195, 2381,1702,1049,360,-380,-1146,-1914,-2686,-3486,-4331, -5202,-6048,-6805,-7414,-7829,-8031,-8022,-7837,-7515,-7092, -6622,-6133,-5640,-5172,-4770,-4464,-4209,-3897,-3430,-2771, -1960,-1096,-282,411,952,1335,1594,1807,2040,2349, 2760,3278,3884,4517,5096,5503,5643,5512,5201,4843, 4541,4315,4096,3820,3462,3034,2549,2015,1392,650, -186,-1057,-1872,-2505,-2879,-3011,-3013,-3030,-3187,-3540, -4078,-4738,-5451,-6146,-6773,-7322,-7796,-8157,-8351,-8341, -8109,-7669,-7058,-6269,-5289,-4112,-2752,-1257,280,1788, 3222,4543,5722,6752,7626,8340,8912,9389,9804,10193, 10581,10935,11130,11046,10620,9854,8828,7684,6557,5517, 4562,3663,2813,2018,1268,547,-161,-879,-1639,-2469, -3382,-4348,-5298,-6147,-6841,-7367,-7725,-7932,-7983,-7851, -7514,-7020,-6482,-6012,-5661,-5412,-5215,-4984,-4634,-4113, -3426,-2629,-1784,-989,-305,259,706,1017,1206,1375, 1669,2167,2847,3605,4306,4836,5151,5285,5290,5220, 5113,4977,4780,4512,4218,3956,3708,3413,2989,2354, 1498,515,-457,-1275,-1841,-2151,-2289,-2368,-2504,-2753, -3122,-3573,-4085,-4670,-5331,-6034,-6709,-7301,-7766,-8092, -8283,-8311,-8150,-7786,-7207,-6401,-5377,-4150,-2775,-1321, 167,1670,3130,4472,5646,6617,7376,7988,8561,9191, 9894,10589,11141,11440,11421,11083,10481,9690,8785,7811, 6800,5789,4808,3877,3026,2272,1618,998,299,-531, -1457,-2414,-3358,-4280,-5166,-5991,-6734,-7352,-7779,-7962, -7881,-7577,-7154,-6730,-6386,-6158,-6005,-5840,-5587,-5229, -4757,-4156,-3415,-2568,-1688,-912,-337,11,195,339, 586,1031,1664,2385,3071,3658,4142,4540,4862,5085, 5180,5131,4962,4746,4559,4449,4400,4335,4132,3693, 2986,2063,1067,157,-573,-1116,-1509,-1785,-1985,-2168, -2376,-2654,-3041,-3529,-4096,-4730,-5404,-6076,-6705,-7271, -7762,-8160,-8434,-8513,-8352,-7945,-7325,-6525,-5561,-4416, -3078,-1570,30,1603,3008,4162,5089,5893,6668,7486, 8372,9280,10116,10787,11207,11336,11201,10854,10331,9641, 8788,7795,6743,5735,4835,4041,3328,2651,1959,1204, 369,-507,-1389,-2272,-3187,-4176,-5214,-6185,-6960,-7462, -7694,-7701,-7553,-7311,-7042,-6784,-6570,-6415,-6307,-6192, -5990,-5603,-4963,-4102,-3152,-2293,-1643,-1212,-921,-665, -365,18,488,1037,1646,2281,2908,3516,4090,4570, 4872,4958,4871,4733,4660,4699,4805,4889,4850,4618, 4165,3508,2708,1846,980,200,-431,-904,-1251,-1502, -1698,-1901,-2171,-2549,-3012,-3526,-4058,-4624,-5245,-5919, -6611,-7271,-7831,-8215,-8401,-8426,-8322,-8066,-7594,-6835, -5773,-4447,-2938,-1368,141,1485,2618,3576,4475,5430, 6471,7538,8543,9431,10183,10777,11182,11356,11276,10940, 10358,9574,8665,7724,6821,5994,5216,4436,3641,2871, 2152,1458,735,-77,-1018,-2080,-3208,-4315,-5320,-6156, -6790,-7223,-7448,-7462,-7298,-7039,-6805,-6697,-6731,-6825, -6829,-6612,-6116,-5398,-4559,-3727,-3011,-2457,-2022,-1636, -1246,-852,-471,-103,314,852,1537,2319,3084,3712, 4131,4352,4437,4466,4514,4624,4811,5023,5176,5189, 5020,4663,4126,3428,2623,1791,996,301,-237,-620, -900,-1146,-1419,-1736,-2080,-2440,-2827,-3285,-3863,-4550, -5279,-5979,-6612,-7166,-7639,-8039,-8368,-8595,-8647,-8420, -7839,-6878,-5617,-4205,-2788,-1457,-234,895,1981,3061, 4142,5221,6296,7351,8369,9328,10188,10869,11274,11353, 11131,10674,10076,9397,8659,7841,6955,6057,5203,4449, 3791,3184,2551,1815,944,-34,-1079,-2162,-3269,-4378, -5428,-6304,-6893,-7168,-7192,-7077,-6949,-6939,-7081,-7292, -7425,-7371,-7079,-6588,-5975,-5314,-4651,-3991,-3351,-2764, -2269,-1891,-1606,-1347,-1019,-553,72,839,1664,2422, 3015,3418,3659,3816,3971,4170,4413,4678,4936,5151, 5283,5275,5057,4589,3921,3147,2364,1644,1010,440, -65,-494,-846,-1142,-1400,-1644,-1932,-2300,-2778,-3367, -4027,-4688,-5299,-5860,-6423,-7030,-7689,-8325,-8825,-9074, -8984,-8524,-7728,-6696,-5541,-4348,-3144,-1927,-713,466, 1590,2668,3722,4800,5965,7205,8417,9477,10288,10816, 11076,11119,10978,10655,10136,9437,8613,7749,6913,6141, 5438,4774,4114,3445,2757,2013,1156,150,-1011,-2283, -3566,-4722,-5616,-6187,-6468,-6586,-6682,-6851,-7104,-7363, -7547,-7612,-7553,-7372,-7073,-6649,-6083,-5396,-4652,-3945, -3346,-2898,-2598,-2372,-2118,-1748,-1216,-530,244,1017, 1704,2273,2728,3075,3334,3544,3768,4061,4435,4851, 5222,5448,5477,5306,4950,4432,3800,3123,2450,1784, 1118,498,-15,-376,-614,-801,-1023,-1352,-1799,-2331, -2881,-3401,-3876,-4337,-4858,-5516,-6322,-7187,-7988,-8606, -8958,-9016,-8791,-8305,-7591,-6686,-5626,-4444,-3220,-2041, -968,22,1029,2151,3400,4706,5998,7236,8369,9352, 10156,10759,11113,11184,10984,10568,9995,9313,8578,7822, 7051,6282,5555,4916,4370,3863,3281,2487,1403,88, -1310,-2615,-3700,-4520,-5116,-5573,-5969,-6326,-6653,-6940, -7185,-7395,-7570,-7671,-7664,-7511,-7170,-6614,-5889,-5119, -4438,-3923,-3562,-3292,-3023,-2688,-2259,-1733,-1106,-400, 348,1071,1684,2144,2469,2721,2980,3302,3718,4218, 4739,5180,5457,5554,5504,5330,5026,4577,3971,3247, 2489,1773,1155,675,355,134,-98,-421,-852,-1347, -1819,-2215,-2547,-2883,-3301,-3878,-4633,-5507,-6401,-7214, -7903,-8437,-8788,-8892,-8689,-8152,-7342,-6380,-5385,-4401, -3432,-2446,-1403,-283,896,2125,3381,4650,5924,7208, 8441,9512,10328,10852,11096,11112,10955,10648,10166,9497, 8685,7824,7034,6410,5966,5612,5195,4555,3635,2482, 1193,-116,-1334,-2399,-3295,-4046,-4692,-5249,-5714,-6093, -6422,-6748,-7102,-7463,-7756,-7872,-7743,-7373,-6839,-6228, -5599,-5002,-4503,-4135,-3859,-3595,-3282,-2880,-2364,-1713, -953,-177,514,1065,1482,1799,2092,2443,2879,3388, 3933,4443,4870,5212,5476,5648,5700,5571,5204,4597, 3846,3086,2417,1891,1510,1210,895,482,-15,-507, -913,-1220,-1476,-1742,-2083,-2549,-3129,-3798,-4555,-5414, -6340,-7246,-8016,-8559,-8809,-8748,-8403,-7849,-7160,-6390, -5566,-4668,-3688,-2660,-1627,-582,531,1769,3125,4547, 5963,7283,8426,9362,10114,10703,11103,11258,11108,10638, 9926,9110,8342,7731,7292,6971,6644,6178,5483,4571, 3498,2343,1163,-7,-1154,-2225,-3151,-3879,-4434,-4906, -5377,-5879,-6402,-6922,-7401,-7769,-7957,-7916,-7652,-7215, -6685,-6126,-5585,-5108,-4739,-4477,-4265,-3994,-3577,-2996, -2290,-1528,-803,-193,280,654,1002,1400,1860,2352, 2839,3318,3816,4329,4843,5328,5720,5912,5824,5462, 4896,4257,3667,3173,2745,2323,1857,1349,843,386, -11,-356,-672,-972,-1263,-1548,-1866,-2286,-2869,-3644, -4585,-5615,-6612,-7460,-8079,-8457,-8607,-8548,-8294,-7856, -7240,-6477,-5642,-4814,-4002,-3140,-2149,-989,320,1721, 3125,4463,5735,6983,8218,9362,10310,10973,11288,11216, 10804,10190,9546,9008,8591,8232,7869,7465,6990,6397, 5650,4730,3653,2458,1212,-7,-1103,-2024,-2764,-3376, -3937,-4528,-5170,-5831,-6461,-7029,-7497,-7809,-7908,-7767, -7417,-6932,-6397,-5901,-5521,-5278,-5110,-4900,-4555,-4053, -3433,-2765,-2102,-1483,-930,-427,44,499,941,1363, 1758,2145,2577,3131,3836,4605,5274,5702,5853,5777, 5542,5222,4845,4422,3954,3450,2934,2431,1957,1508, 1057,589,143,-235,-512,-694,-833,-1029,-1393,-1975, -2762,-3690,-4666,-5621,-6510,-7297,-7935,-8363,-8516,-8392, -8048,-7572,-7046,-6494,-5887,-5179,-4334,-3337,-2205,-991, 243,1469,2723,4060,5515,7034,8478,9656,10446,10835, 10895,10732,10423,10029,9604,9193,8821,8491,8176,7823, 7359,6717,5852,4781,3574,2345,1172,94,-851,-1652, -2347,-3008,-3673,-4367,-5107,-5874,-6617,-7257,-7708,-7896, -7808,-7515,-7109,-6698,-6370,-6137,-5961,-5779,-5518,-5129, -4617,-4040,-3464,-2922,-2387,-1800,-1155,-526,-17,327, 559,795,1170,1758,2515,3333,4096,4715,5157,5433, 5566,5565,5427,5165,4797,4371,3932,3499,3053,2564, 2031,1466,905,418,85,-96,-197,-318,-541,-891, -1368,-1979,-2749,-3675,-4707,-5756,-6712,-7471,-7979,-8219, -8234,-8109,-7922,-7700,-7393,-6918,-6229,-5370,-4423,-3468, -2521,-1525,-406,890,2384,4020,5674,7194,8461,9426, 10086,10443,10534,10410,10140,9803,9479,9209,8986,8768, 8502,8110,7524,6717,5717,4600,3454,2334,1265,282, -585,-1324,-1991,-2676,-3447,-4320,-5261,-6168,-6925,-7434, -7655,-7621,-7425,-7177,-6969,-6822,-6690,-6504,-6229,-5881, -5505,-5136,-4759,-4310,-3735,-3034,-2286,-1599,-1074,-717, -475,-247,58,508,1123,1866,2648,3402,4087,4678, 5134,5425,5540,5487,5308,5076,4843,4596,4255,3762, 3142,2498,1915,1429,1037,722,470,275,121,-33, -237,-535,-996,-1698,-2655,-3774,-4891,-5853,-6589,-7123, -7510,-7806,-8015,-8110,-8054,-7810,-7357,-6742,-6046,-5348, -4669,-3931,-3041,-1948,-645,859,2498,4162,5748,7173, 8369,9281,9882,10174,10215,10094,9903,9726,9590,9476, 9335,9122,8810,8349,7687,6796,5728,4570,3420,2366, 1441,636,-80,-767,-1521,-2420,-3463,-4551,-5552,-6333, -6842,-7114,-7240,-7299,-7322,-7284,-7147,-6921,-6663,-6425, -6229,-6052,-5822,-5458,-4915,-4231,-3497,-2799,-2215,-1771, -1430,-1136,-831,-477,-67,425,1054,1832,2694,3527, 4215,4707,5013,5201,5333,5424,5437,5341,5115,4748, 4247,3662,3060,2508,2020,1573,1147,783,557,503, 532,497,270,-213,-961,-1912,-2939,-3914,-4782,-5550, -6259,-6925,-7494,-7908,-8119,-8116,-7920,-7598,-7206,-6776, -6316,-5792,-5158,-4370,-3388,-2196,-810,750,2444,4173, 5796,7191,8279,9044,9529,9795,9891,9879,9831,9795, 9770,9729,9636,9441,9089,8535,7745,6724,5555,4399, 3388,2573,1906,1258,493,-449,-1543,-2680,-3738,-4644, -5401,-6049,-6591,-6999,-7254,-7341,-7283,-7131,-6965,-6846, -6793,-6762,-6657,-6398,-5961,-5394,-4764,-4124,-3507,-2924, -2403,-1988,-1699,-1479,-1221,-852,-333,336,1136,1992, 2795,3460,3973,4399,4800,5170,5451,5584,5545,5350, 5061,4713,4305,3807,3216,2568,1945,1454,1168,1085, 1131,1189,1112,812,306,-337,-1062,-1840,-2678,-3565, -4472,-5359,-6192,-6900,-7413,-7700,-7790,-7744,-7625,-7443, -7192,-6872,-6483,-6012,-5421,-4643,-3615,-2319,-785,917, 2679,4365,5871,7128,8103,8805,9276,9569,9740,9825, 9867,9928,10042,10148,10134,9888,9347,8516,7505,6473, 5546,4756,4050,3338,2543,1636,641,-400,-1438,-2443, -3412,-4350,-5221,-5959,-6495,-6796,-6898,-6896,-6894,-6943, -7006,-7033,-6996,-6884,-6675,-6342,-5877,-5295,-4644,-3983, -3373,-2869,-2508,-2277,-2088,-1830,-1423,-864,-203,495, 1190,1880,2571,3248,3884,4452,4903,5213,5404,5510, 5544,5492,5311,4944,4370,3654,2920,2308,1896,1677, 1603,1608,1586,1450,1187,810,350,-174,-810,-1617, -2564,-3564,-4528,-5406,-6159,-6763,-7202,-7465,-7576,-7580, -7523,-7435,-7308,-7120,-6850,-6452,-5848,-4972,-3802,-2377, -773,929,2633,4241,5668,6867,7803,8459,8865,9092, 9273,9530,9889,10257,10497,10490,10194,9635,8898,8101, 7335,6611,5894,5123,4287,3421,2565,1713,820,-178, -1303,-2482,-3594,-4554,-5323,-5890,-6280,-6538,-6718,-6866, -6996,-7100,-7185,-7249,-7270,-7187,-6940,-6500,-5899,-5215, -4558,-4026,-3643,-3364,-3109,-2810,-2437,-1999,-1520,-1021, -477,150,877,1674,2469,3170,3722,4155,4546,4943, 5324,5621,5744,5618,5210,4584,3877,3226,2719,2368, 2134,1972,1832,1697,1572,1449,1266,963,513,-81, -812,-1674,-2638,-3634,-4586,-5438,-6157,-6703,-7068,-7279, -7384,-7450,-7517,-7585,-7629,-7590,-7377,-6912,-6169,-5179, -3979,-2575,-967,793,2574,4196,5523,6509,7194,7687, 8120,8606,9181,9772,10247,10482,10440,10183,9796,9333, 8794,8156,7440,6678,5907,5148,4416,3680,2876,1941, 860,-322,-1522,-2639,-3628,-4482,-5197,-5762,-6170,-6441, -6633,-6817,-7039,-7304,-7568,-7727,-7676,-7384,-6892,-6301, -5725,-5238,-4825,-4434,-4040,-3650,-3290,-2972,-2658,-2299, -1858,-1301,-617,148,917,1611,2213,2757,3314,3936, 4602,5213,5648,5810,5686,5346,4874,4331,3778,3280, 2859,2514,2244,2054,1934,1856,1780,1667,1476,1152, 657,12,-762,-1650,-2636,-3670,-4643,-5451,-6043,-6434, -6698,-6922,-7171,-7437,-7676,-7846,-7909,-7841,-7618,-7202, -6526,-5540,-4210,-2563,-728,1097,2707,3993,4981,5795, 6563,7350,8145,8894,9528,10006,10303,10437,10434,10282, 9959,9466,8850,8171,7499,6874,6269,5621,4882,4044, 3114,2092,981,-194,-1374,-2502,-3507,-4341,-4963,-5391, -5702,-6015,-6406,-6864,-7318,-7660,-7809,-7739,-7485,-7119, -6718,-6304,-5865,-5401,-4928,-4486,-4117,-3836,-3612,-3369, -3019,-2517,-1890,-1219,-579,-9,522,1087,1742,2507, 3337,4144,4829,5323,5591,5631,5466,5136,4700,4212, 3719,3257,2869,2564,2342,2203,2126,2061,1971,1838, 1652,1361,878,150,-783,-1803,-2797,-3707,-4496,-5137, -5633,-6040,-6425,-6804,-7136,-7393,-7609,-7833,-8061,-8218, -8154,-7698,-6772,-5439,-3849,-2177,-580,872,2173,3341, 4409,5412,6370,7258,8055,8773,9415,9956,10334,10486, 10401,10127,9733,9258,8744,8225,7697,7132,6506,5821, 5079,4263,3332,2241,998,-303,-1523,-2549,-3347,-3956, -4473,-4968,-5493,-6068,-6639,-7115,-7443,-7614,-7654,-7599, -7454,-7186,-6781,-6269,-5733,-5265,-4921,-4685,-4484,-4229, -3876,-3423,-2904,-2369,-1861,-1390,-919,-403,199,908, 1729,2618,3493,4264,4868,5281,5515,5565,5412,5074, 4625,4157,3730,3357,3021,2718,2480,2339,2293,2309, 2335,2294,2084,1616,895,19,-897,-1785,-2616,-3408, -4172,-4865,-5428,-5837,-6116,-6356,-6673,-7134,-7709,-8266, -8649,-8714,-8357,-7563,-6434,-5114,-3707,-2272,-846,526, 1821,3021,4128,5152,6129,7085,8006,8855,9567,10062, 10314,10356,10259,10056,9754,9343,8838,8295,7791,7342, 6878,6299,5523,4527,3351,2079,815,-326,-1282,-2075, -2801,-3520,-4235,-4916,-5531,-6071,-6556,-7006,-7400,-7688, -7810,-7720,-7420,-6975,-6485,-6049,-5721,-5483,-5278,-5036, -4707,-4300,-3842,-3372,-2924,-2538,-2189,-1785,-1268,-645, 63,854,1716,2617,3494,4262,4858,5248,5429,5416, 5236,4946,4599,4218,3800,3358,2944,2648,2534,2584, 2706,2779,2701,2439,2036,1528,908,161,-698,-1629, -2583,-3464,-4164,-4623,-4895,-5127,-5475,-6020,-6734,-7502, -8180,-8645,-8812,-8650,-8163,-7374,-6315,-5059,-3698,-2308, -964,300,1488,2633,3769,4921,6066,7131,8060,8845, 9498,9996,10304,10399,10289,10008,9614,9195,8832,8547, 8278,7916,7361,6554,5528,4385,3235,2144,1108,112, -851,-1767,-2611,-3361,-4024,-4637,-5262,-5936,-6612,-7193, -7589,-7755,-7694,-7447,-7089,-6726,-6433,-6226,-6042,-5796, -5458,-5062,-4647,-4237,-3849,-3481,-3138,-2807,-2448,-2015, -1476,-823,-61,812,1771,2743,3609,4295,4790,5131, 5350,5438,5353,5071,4609,4055,3539,3172,2988,2952, 2990,3019,2992,2907,2790,2629,2349,1865,1125,172, -867,-1844,-2634,-3195,-3569,-3875,-4236,-4734,-5399,-6188, -7000,-7740,-8352,-8765,-8907,-8699,-8130,-7251,-6162,-4973, -3757,-2543,-1326,-97,1161,2433,3673,4842,5951,7015, 8023,8931,9668,10147,10319,10227,9993,9735,9539,9422, 9318,9117,8734,8143,7391,6529,5584,4557,3470,2360, 1275,250,-699,-1540,-2285,-2989,-3723,-4530,-5381,-6186, -6842,-7276,-7480,-7503,-7411,-7253,-7064,-6867,-6666,-6452, -6190,-5866,-5500,-5119,-4731,-4348,-3983,-3661,-3396,-3153, -2849,-2391,-1739,-930,-36,869,1746,2557,3322,4063, 4732,5230,5468,5405,5089,4637,4184,3817,3552,3344, 3168,3033,2963,2974,3060,3161,3167,2961,2457,1674, 720,-244,-1080,-1750,-2278,-2712,-3109,-3533,-4030,-4654, -5436,-6332,-7246,-8062,-8663,-8959,-8920,-8575,-7991,-7229, -6314,-5249,-4073,-2834,-1586,-374,808,2000,3224,4485, 5785,7063,8185,9017,9501,9692,9731,9740,9763,9780, 9754,9658,9471,9154,8702,8130,7453,6647,5681,4574, 3422,2329,1361,508,-286,-1081,-1926,-2837,-3780,-4704, -5558,-6267,-6786,-7114,-7300,-7378,-7373,-7287,-7139,-6967, -6786,-6573,-6300,-5956,-5544,-5091,-4671,-4369,-4192,-4058, -3862,-3527,-3032,-2412,-1729,-1025,-291,523,1462,2482, 3465,4275,4831,5119,5170,5046,4822,4559,4267,3934, 3565,3216,2998,2992,3170,3419,3590,3569,3312,2828, 2168,1387,551,-253,-941,-1491,-1927,-2278,-2627,-3091, -3753,-4614,-5601,-6592,-7470,-8155,-8606,-8818,-8797,-8546, -8060,-7335,-6378,-5254,-4095,-3003,-1978,-918,287,1667, 3154,4636,5992,7121,7985,8596,9006,9307,9553,9736, 9836,9849,9797,9709,9576,9343,8945,8341,7536,6576, 5532,4463,3460,2570,1760,952,81,-885,-1912,-2923, -3881,-4761,-5539,-6199,-6714,-7057,-7242,-7311,-7324,-7325, -7311,-7237,-7048,-6723,-6289,-5834,-5453,-5199,-5029,-4869, -4647,-4349,-4008,-3644,-3248,-2788,-2220,-1492,-578,482, 1582,2574,3371,3972,4425,4764,4959,4965,4759,4382, 3920,3472,3153,3030,3106,3310,3535,3683,3696,3529, 3169,2617,1905,1110,340,-307,-788,-1140,-1443,-1796, -2303,-3014,-3893,-4842,-5768,-6634,-7445,-8175,-8730,-9004, -8946,-8559,-7928,-7169,-6356,-5512,-4627,-3666,-2568,-1290, 163,1704,3202,4557,5739,6753,7601,8273,8771,9126, 9372,9537,9660,9779,9884,9934,9840,9527,8959,8188, 7303,6391,5498,4639,3804,2962,2090,1167,194,-811, -1833,-2865,-3871,-4783,-5526,-6080,-6476,-6789,-7081,-7355, -7557,-7611,-7490,-7226,-6883,-6532,-6219,-5962,-5742,-5511, -5233,-4923,-4640,-4434,-4287,-4089,-3724,-3131,-2340,-1429, -469,490,1427,2324,3170,3939,4555,4922,4995,4811, 4459,4051,3678,3396,3254,3284,3454,3692,3911,4025, 3942,3614,3054,2356,1643,1019,513,101,-269,-658, -1106,-1609,-2189,-2887,-3722,-4674,-5701,-6736,-7678,-8403, -8806,-8852,-8616,-8233,-7788,-7306,-6741,-6024,-5102,-3981, -2702,-1325,119,1582,3013,4357,5571,6619,7466,8090, 8516,8825,9122,9461,9818,10110,10256,10202,9935,9470, 8847,8129,7359,6550,5707,4860,4047,3258,2432,1487, 387,-804,-1961,-2977,-3825,-4543,-5188,-5791,-6370,-6909, -7339,-7574,-7598,-7462,-7259,-7075,-6918,-6731,-6462,-6108, -5717,-5374,-5146,-5045,-5005,-4926,-4704,-4308,-3770,-3130, -2414,-1613,-719,262,1307,2342,3287,4048,4546,4755, 4710,4487,4160,3792,3466,3288,3319,3562,3910,4213, 4318,4165,3804,3312,2774,2248,1768,1315,852,389, -46,-430,-789,-1200,-1769,-2569,-3600,-4776,-5924,-6901, -7632,-8100,-8333,-8396,-8351,-8209,-7956,-7556,-6965,-6172, -5191,-4052,-2799,-1450,4,1532,3032,4389,5526,6426, 7120,7677,8190,8717,9248,9719,10074,10295,10379,10303, 10023,9524,8860,8117,7375,6669,5997,5313,4552,3660, 2610,1450,284,-776,-1700,-2541,-3370,-4226,-5080,-5860, -6484,-6902,-7129,-7222,-7277,-7337,-7343,-7211,-6926,-6540, -6140,-5810,-5582,-5448,-5378,-5313,-5198,-4998,-4705,-4336, -3888,-3328,-2612,-1729,-711,372,1453,2481,3389,4108, 4555,4686,4533,4202,3827,3551,3474,3618,3913,4228, 4439,4475,4347,4103,3789,3414,2975,2480,1950,1440, 1014,703,483,250,-123,-707,-1526,-2555,-3698,-4805, -5763,-6536,-7149,-7625,-7981,-8199,-8261,-8168,-7922,-7519, -6963,-6263,-5369,-4230,-2856,-1340,209,1692,3032,4207, 5229,6116,6883,7561,8184,8781,9356,9886,10320,10588, 10629,10421,9992,9424,8824,8270,7763,7232,6595,5794, 4814,3737,2691,1727,796,-169,-1195,-2256,-3279,-4189, -4945,-5553,-6054,-6486,-6856,-7143,-7308,-7312,-7145,-6859, -6523,-6223,-5987,-5804,-5637,-5469,-5330,-5237,-5157,-5032, -4807,-4457,-3983,-3380,-2632,-1727,-684,474,1676,2799, 3695,4249,4426,4306,4050,3816,3707,3751,3898,4084, 4269,4421,4524,4556,4490,4291,3945,3462,2898,2348, 1911,1642,1504,1390,1176,772,148,-660,-1592,-2577, -3566,-4532,-5444,-6270,-6954,-7457,-7775,-7957,-8061,-8098, -8020,-7753,-7240,-6459,-5404,-4125,-2711,-1266,143,1506, 2807,3985,4984,5821,6575,7317,8096,8885,9621,10205, 10543,10599,10418,10110,9781,9476,9150,8720,8128,7383, 6562,5733,4903,4037,3104,2093,1009,-112,-1220,-2238, -3120,-3896,-4638,-5373,-6054,-6613,-6994,-7182,-7215,-7148, -7012,-6813,-6565,-6311,-6077,-5878,-5734,-5646,-5583,-5508, -5403,-5252,-5042,-4763,-4372,-3794,-2962,-1864,-567,767, 1951,2856,3435,3724,3807,3793,3764,3758,3784,3841, 3939,4104,4338,4587,4754,4753,4550,4160,3643,3105, 2651,2362,2220,2129,1984,1722,1318,785,152,-604, -1504,-2510,-3549,-4549,-5427,-6139,-6712,-7192,-7624,-8015, -8314,-8432,-8316,-7961,-7375,-6551,-5488,-4216,-2805,-1347, 78,1397,2556,3538,4420,5324,6320,7368,8350,9146, 9694,10014,10185,10274,10314,10270,10092,9752,9265,8677, 8050,7421,6794,6102,5273,4278,3183,2090,1053,61, -916,-1891,-2851,-3777,-4649,-5421,-6060,-6544,-6886,-7090, -7169,-7121,-6958,-6726,-6486,-6281,-6124,-5991,-5855,-5709, -5585,-5522,-5532,-5566,-5535,-5311,-4783,-3915,-2766,-1479, -225,880,1798,2518,3038,3376,3561,3632,3631,3598, 3602,3725,3995,4368,4725,4926,4881,4606,4192,3744, 3349,3044,2818,2639,2477,2317,2145,1924,1571,1016, 263,-633,-1602,-2574,-3488,-4317,-5089,-5818,-6505,-7136, -7692,-8133,-8422,-8534,-8451,-8154,-7586,-6694,-5488,-4088, -2670,-1384,-254,794,1863,2998,4183,5370,6482,7444, 8226,8841,9338,9779,10159,10397,10419,10236,9916,9547, 9173,8775,8302,7721,7015,6187,5275,4320,3340,2339, 1336,314,-744,-1799,-2803,-3739,-4602,-5387,-6069,-6588, -6904,-7030,-7023,-6957,-6879,-6786,-6654,-6466,-6215,-5928, -5691,-5606,-5710,-5942,-6170,-6245,-6054,-5557,-4764,-3741, -2608,-1482,-416,583,1504,2284,2834,3120,3186,3148, 3140,3270,3563,3962,4374,4686,4820,4770,4589,4318, 3979,3618,3273,2986,2789,2698,2658,2595,2437,2127, 1622,931,119,-718,-1548,-2389,-3256,-4134,-4978,-5732, -6393,-7023,-7665,-8282,-8773,-9014,-8892,-8380,-7535,-6465, -5308,-4170,-3088,-2017,-888,340,1650,2939,4115,5166, 6130,7043,7895,8656,9276,9735,10010,10114,10087,9979, 9818,9601,9294,8873,8339,7706,7000,6228,5382,4450, 3453,2437,1430,418,-616,-1666,-2723,-3769,-4731,-5521, -6085,-6440,-6673,-6874,-7058,-7174,-7162,-7005,-6711,-6335, -5984,-5780,-5795,-6014,-6331,-6603,-6713,-6588,-6213,-5621, -4845,-3909,-2835,-1667,-498,559,1414,1993,2300,2446, 2572,2756,3027,3362,3727,4087,4407,4629,4713,4639, 4416,4077,3677,3308,3059,2966,2980,2994,2915,2726, 2443,2071,1592,977,213,-652,-1537,-2382,-3163,-3897, -4615,-5374,-6224,-7149,-8045,-8736,-9085,-9048,-8671,-8070, -7346,-6539,-5654,-4656,-3534,-2312,-1060,167,1368,2551, 3708,4842,5951,6981,7863,8548,9055,9443,9748,9944, 10016,9973,9833,9604,9283,8874,8386,7813,7110,6285, 5391,4492,3620,2733,1749,636,-563,-1758,-2866,-3836, -4629,-5251,-5768,-6250,-6719,-7106,-7320,-7306,-7072,-6692, -6296,-6012,-5918,-6008,-6219,-6474,-6701,-6849,-6893,-6798, -6493,-5894,-4988,-3862,-2650,-1480,-458,360,970,1422, 1784,2093,2374,2667,3007,3389,3824,4271,4622,4774, 4692,4428,4084,3765,3524,3364,3270,3213,3171,3126, 3052,2914,2674,2278,1690,925,84,-703,-1375,-1974, -2609,-3386,-4352,-5458,-6568,-7534,-8250,-8683,-8859,-8822, -8598,-8198,-7600,-6799,-5832,-4778,-3689,-2570,-1401,-187, 1068,2354,3629,4824,5903,6850,7661,8361,8966,9445, 9759,9933,10002,10004,9942,9783,9476,9019,8457,7817, 7132,6436,5725,4957,4066,2998,1791,547,-635,-1695, -2619,-3458,-4270,-5076,-5844,-6514,-6994,-7206,-7143,-6904, -6627,-6390,-6213,-6092,-6045,-6119,-6319,-6613,-6938,-7201, -7298,-7124,-6609,-5780,-4744,-3640,-2561,-1570,-685,68, 667,1107,1435,1739,2110,2575,3116,3678,4171,4503, 4640,4610,4464,4257,4030,3805,3584,3394,3289,3291, 3376,3462,3428,3172,2697,2085,1434,821,293,-181, -713,-1429,-2351,-3403,-4486,-5541,-6510,-7355,-8057,-8564, -8825,-8836,-8603,-8136,-7484,-6719,-5895,-5004,-3992,-2843, -1600,-339,923,2185,3434,4642,5767,6754,7585,8267, 8825,9266,9618,9915,10141,10222,10112,9822,9409,8943, 8471,8004,7505,6909,6154,5199,4079,2899,1777,762, -189,-1152,-2175,-3253,-4316,-5239,-5957,-6468,-6766,-6869, -6829,-6686,-6476,-6229,-5993,-5845,-5870,-6112,-6524,-6969, -7312,-7460,-7362,-7009,-6415,-5587,-4574,-3482,-2430,-1496, -736,-156,289,679,1105,1628,2240,2861,3414,3865, 4219,4491,4671,4710,4569,4274,3923,3629,3480,3514, 3696,3897,3961,3798,3433,2981,2541,2142,1772,1394, 936,340,-413,-1286,-2221,-3191,-4218,-5296,-6344,-7256, -7947,-8385,-8585,-8571,-8368,-8002,-7484,-6815,-6000,-5071, -4045,-2943,-1770,-532,782,2147,3484,4683,5708,6580, 7354,8065,8727,9328,9828,10164,10285,10186,9938,9648, 9404,9194,8920,8481,7841,7022,6081,5099,4138,3213, 2290,1305,201,-1008,-2224,-3337,-4294,-5097,-5766,-6297, -6651,-6780,-6679,-6405,-6074,-5816,-5723,-5816,-6065,-6413, -6812,-7204,-7501,-7620,-7495,-7087,-6376,-5408,-4329,-3319, -2480,-1814,-1244,-696,-133,456,1067,1666,2226,2768, 3327,3899,4394,4685,4701,4472,4125,3818,3663,3675, 3809,3984,4082,4020,3813,3542,3268,2999,2714,2396, 2031,1609,1116,519,-208,-1073,-2064,-3148,-4261,-5348, -6340,-7173,-7812,-8261,-8517,-8582,-8432,-8062,-7524,-6889, -6170,-5341,-4379,-3271,-2018,-664,715,2053,3260,4305, 5241,6162,7112,8047,8849,9426,9755,9879,9885,9859, 9846,9832,9745,9505,9061,8436,7711,6955,6190,5409, 4561,3599,2525,1386,227,-932,-2087,-3215,-4266,-5173, -5874,-6335,-6531,-6490,-6299,-6066,-5870,-5758,-5752,-5887, -6190,-6656,-7205,-7685,-7951,-7916,-7559,-6912,-6089,-5226, -4404,-3641,-2911,-2196,-1514,-891,-339,175,727,1388, 2163,2971,3690,4201,4438,4411,4214,3996,3874,3870, 3931,4002,4050,4051,4000,3896,3736,3531,3298,3055, 2802,2544,2261,1912,1432,768,-72,-1028,-2043,-3106, -4199,-5278,-6286,-7153,-7824,-8270,-8495,-8512,-8358,-8075, -7706,-7238,-6601,-5727,-4621,-3362,-2035,-741,455,1585, 2724,3904,5105,6267,7301,8134,8722,9100,9364,9615, 9879,10091,10165,10059,9790,9413,8969,8462,7876,7200, 6435,5599,4700,3746,2738,1656,455,-860,-2192,-3409, -4430,-5228,-5805,-6167,-6324,-6292,-6123,-5888,-5659,-5542, -5655,-6055,-6649,-7265,-7740,-7977,-7959,-7728,-7331,-6798, -6144,-5394,-4574,-3751,-3009,-2398,-1902,-1442,-906,-208, 663,1615,2492,3183,3642,3894,3992,4006,3986,3962, 3948,3945,3964,4014,4058,4052,3975,3821,3621,3427, 3259,3108,2951,2758,2477,2066,1505,803,-9,-920, -1931,-3040,-4198,-5321,-6322,-7118,-7675,-8033,-8280,-8463, -8538,-8442,-8104,-7499,-6657,-5651,-4571,-3496,-2434,-1338, -147,1177,2580,3938,5137,6126,6937,7638,8259,8806, 9283,9669,9916,10018,10013,9933,9759,9470,9051,8507, 7877,7209,6527,5815,5018,4081,2971,1702,348,-987, -2240,-3372,-4372,-5216,-5836,-6149,-6145,-5916,-5615,-5395, -5373,-5594,-6016,-6532,-7033,-7455,-7770,-7966,-8016,-7864, -7464,-6820,-6032,-5218,-4499,-3934,-3487,-3055,-2524,-1824, -968,-38,877,1718,2434,3008,3430,3693,3818,3869, 3896,3937,3997,4060,4118,4146,4120,4028,3885,3735, 3619,3545,3474,3356,3174,2942,2658,2299,1825,1173, 305,-750,-1909,-3083,-4187,-5153,-5964,-6655,-7288,-7887, -8395,-8697,-8703,-8410,-7888,-7231,-6504,-5734,-4906,-3955, -2823,-1508,-84,1323,2612,3762,4813,5804,6724,7542, 8235,8801,9249,9601,9878,10071,10146,10063,9819,9446, 9009,8553,8094,7584,6959,6183,5272,4251,3133,1911, 587,-806,-2191,-3469,-4532,-5262,-5606,-5628,-5482,-5323, -5264,-5328,-5491,-5741,-6094,-6555,-7080,-7597,-8013,-8222, -8120,-7695,-7060,-6378,-5782,-5315,-4913,-4486,-3984,-3387, -2667,-1822,-898,27,899,1685,2351,2867,3229,3461, 3610,3741,3881,4021,4132,4180,4161,4098,4027,3973, 3924,3856,3759,3637,3510,3410,3343,3261,3085,2726, 2115,1248,207,-869,-1874,-2806,-3713,-4647,-5615,-6576, -7444,-8100,-8453,-8516,-8380,-8144,-7834,-7418,-6850,-6093, -5151,-4057,-2849,-1569,-264,1038,2323,3559,4697,5697, 6556,7311,8016,8688,9279,9729,9994,10088,10052,9935, 9761,9539,9249,8863,8369,7779,7112,6398,5622,4710, 3570,2148,534,-1060,-2444,-3525,-4284,-4749,-5001,-5116, -5147,-5120,-5069,-5057,-5191,-5555,-6134,-6811,-7432,-7875, -8064,-7984,-7684,-7255,-6787,-6332,-5928,-5583,-5235,-4792, -4201,-3490,-2677,-1775,-813,139,1004,1720,2274,2711, 3087,3433,3722,3942,4094,4173,4199,4204,4226,4269, 4290,4221,4051,3845,3703,3676,3753,3880,3944,3818, 3441,2838,2079,1266,453,-367,-1271,-2311,-3446,-4587, -5638,-6539,-7237,-7724,-8038,-8223,-8292,-8220,-7962,-7507, -6882,-6113,-5202,-4145,-2944,-1630,-264,1057,2292,3431, 4484,5476,6435,7354,8187,8871,9360,9679,9895,10055, 10160,10158,10015,9728,9336,8912,8523,8153,7714,7089, 6178,4958,3511,1952,411,-1001,-2220,-3223,-4007,-4545, -4812,-4840,-4732,-4621,-4629,-4837,-5258,-5853,-6532,-7163, -7612,-7836,-7859,-7735,-7490,-7157,-6803,-6478,-6195,-5925, -5595,-5119,-4452,-3619,-2679,-1712,-787,33,742,1382, 1996,2578,3068,3420,3648,3797,3926,4058,4199,4328, 4396,4331,4124,3858,3668,3654,3817,4050,4207,4201, 4015,3681,3258,2786,2271,1660,879,-107,-1246,-2416, -3518,-4532,-5462,-6301,-7031,-7615,-8020,-8246,-8322,-8260, -8053,-7684,-7133,-6378,-5404,-4239,-2973,-1713,-511,652, 1827,3033,4242,5391,6412,7265,7970,8560,9078,9542, 9912,10109,10102,9928,9681,9455,9304,9189,9004,8637, 8021,7156,6084,4840,3461,1988,477,-987,-2273,-3281, -3959,-4297,-4366,-4305,-4265,-4355,-4623,-5051,-5589,-6189, -6794,-7305,-7641,-7778,-7738,-7575,-7364,-7156,-6984,-6844, -6672,-6386,-5929,-5295,-4516,-3668,-2811,-1956,-1117,-302, 494,1265,1944,2451,2787,3042,3316,3649,3998,4265, 4358,4264,4052,3818,3660,3640,3769,3964,4115,4151, 4091,3995,3887,3731,3470,3067,2502,1765,860,-159, -1222,-2297,-3370,-4420,-5401,-6248,-6934,-7474,-7903,-8243, -8475,-8539,-8371,-7934,-7250,-6384,-5408,-4380,-3321,-2199, -972,351,1686,2938,4054,5038,5952,6855,7742,8535, 9134,9495,9642,9656,9620,9597,9604,9626,9603,9477, 9193,8734,8093,7264,6221,4936,3436,1805,190,-1240, -2360,-3140,-3611,-3832,-3911,-3963,-4085,-4340,-4756,-5304, -5919,-6529,-7047,-7396,-7558,-7585,-7537,-7475,-7441,-7437, -7401,-7257,-6970,-6549,-6032,-5454,-4808,-4046,-3147,-2159, -1179,-302,415,977,1451,1926,2437,2985,3513,3913, 4106,4100,3971,3830,3748,3749,3801,3864,3908,3932, 3966,4034,4124,4171,4109,3916,3587,3139,2583,1890, 1016,-28,-1151,-2268,-3320,-4270,-5132,-5934,-6701,-7419, -8037,-8473,-8657,-8578,-8280,-7823,-7260,-6585,-5745,-4708, -3517,-2262,-1021,173,1330,2470,3614,4778,5920,6961, 7833,8466,8855,9088,9264,9429,9576,9678,9726,9733, 9710,9628,9433,9067,8448,7515,6278,4799,3193,1588, 99,-1175,-2144,-2789,-3157,-3334,-3451,-3633,-3943,-4392, -4959,-5593,-6190,-6655,-6943,-7105,-7242,-7401,-7554,-7650, -7660,-7586,-7450,-7275,-7060,-6788,-6409,-5837,-5020,-4020, -2985,-2055,-1297,-684,-112,517,1237,1992,2686,3231, 3587,3767,3830,3840,3849,3860,3847,3807,3771,3771, 3836,3959,4092,4180,4213,4209,4173,4080,3853,3427, 2774,1919,920,-114,-1103,-2024,-2935,-3898,-4922,-5937, -6836,-7542,-8036,-8353,-8531,-8578,-8466,-8143,-7584,-6797, -5815,-4720,-3620,-2568,-1523,-387,886,2246,3593,4829, 5911,6823,7556,8126,8569,8914,9170,9353,9481,9590, 9723,9876,10000,10020,9845,9397,8627,7531,6155,4598, 2987,1424,15,-1124,-1919,-2392,-2660,-2877,-3183,-3626, -4168,-4747,-5297,-5759,-6135,-6463,-6790,-7126,-7426,-7623, -7692,-7671,-7632,-7647,-7704,-7724,-7587,-7210,-6578,-5756, -4858,-4002,-3248,-2573,-1898,-1153,-336,499,1285,1977, 2543,2985,3319,3557,3706,3765,3750,3708,3685,3695, 3740,3807,3864,3899,3957,4086,4283,4467,4524,4353, 3919,3298,2598,1878,1106,244,-714,-1753,-2848,-3946, -4973,-5870,-6627,-7288,-7888,-8383,-8691,-8755,-8548,-8097, -7463,-6708,-5884,-5010,-4071,-3025,-1844,-535,844,2204, 3475,4642,5699,6619,7369,7946,8377,8693,8926,9121, 9336,9616,9942,10236,10419,10413,10169,9644,8777,7544, 6024,4368,2747,1312,166,-666,-1246,-1695,-2144,-2659, -3202,-3710,-4165,-4587,-5018,-5489,-5992,-6462,-6825,-7044, -7138,-7188,-7296,-7503,-7756,-7964,-8024,-7850,-7449,-6902, -6285,-5652,-4998,-4299,-3544,-2743,-1904,-1060,-234,558, 1311,2022,2648,3135,3452,3624,3711,3784,3876,3955, 3972,3913,3815,3765,3843,4062,4375,4675,4858,4873, 4715,4424,4052,3627,3110,2442,1591,597,-449,-1486, -2492,-3469,-4423,-5363,-6289,-7150,-7847,-8282,-8446,-8384, -8154,-7800,-7336,-6743,-6011,-5146,-4149,-3030,-1812,-530, 790,2130,3453,4696,5783,6660,7320,7809,8189,8508, 8800,9094,9423,9809,10242,10649,10938,11001,10696,9943, 8772,7308,5734,4233,2918,1819,887,55,-715,-1398, -1960,-2421,-2845,-3296,-3813,-4405,-5021,-5570,-5970,-6207, -6344,-6500,-6756,-7101,-7468,-7768,-7937,-7963,-7850,-7612, -7276,-6871,-6383,-5802,-5128,-4392,-3630,-2854,-2051,-1182, -262,629,1410,2047,2534,2914,3249,3565,3828,3986, 4000,3887,3727,3629,3675,3865,4137,4416,4633,4756, 4805,4808,4770,4641,4359,3896,3258,2484,1628,751, -127,-1055,-2084,-3202,-4331,-5400,-6351,-7134,-7707,-8063, -8242,-8300,-8230,-7979,-7529,-6919,-6181,-5331,-4370,-3288, -2081,-752,659,2070,3388,4548,5525,6328,6977,7480, 7856,8146,8425,8781,9282,9925,10612,11162,11394,11190, 10537,9529,8310,7009,5700,4419,3186,2027,967,58, -635,-1139,-1587,-2104,-2740,-3456,-4150,-4725,-5145,-5431, -5653,-5891,-6203,-6596,-7014,-7376,-7650,-7846,-7985,-8050, -7991,-7785,-7458,-7053,-6593,-6093,-5533,-4876,-4085,-3178, -2214,-1268,-422,301,951,1590,2237,2847,3330,3619, 3710,3659,3551,3478,3501,3618,3778,3937,4088,4255, 4457,4683,4876,4972,4912,4682,4291,3779,3203,2600, 1931,1124,148,-954,-2107,-3257,-4360,-5364,-6241,-6984, -7591,-8032,-8293,-8383,-8303,-8058,-7665,-7149,-6496,-5665, -4644,-3465,-2185,-858,499,1882,3229,4446,5459,6217, 6713,7019,7270,7607,8133,8865,9729,10568,11201,11481, 11378,10974,10340,9500,8442,7187,5805,4417,3156,2104, 1282,628,14,-667,-1430,-2223,-2964,-3574,-4045,-4435, -4782,-5118,-5466,-5835,-6205,-6578,-6979,-7389,-7739,-7975, -8074,-8036,-7899,-7720,-7538,-7314,-6961,-6421,-5711,-4884, -4001,-3128,-2316,-1547,-759,83,964,1810,2509,2988, 3259,3396,3472,3529,3582,3621,3646,3677,3742,3871, 4096,4406,4724,4967,5078,5039,4883,4652,4372,4026, 3575,2995,2259,1360,320,-797,-1926,-3039,-4125,-5161, -6091,-6847,-7415,-7822,-8099,-8262,-8308,-8189,-7859,-7326, -6615,-5763,-4780,-3660,-2421,-1058,434,1984,3408,4513, 5228,5633,5921,6290,6847,7585,8433,9301,10083,10721, 11176,11417,11422,11141,10509,9524,8273,6911,5609,4485, 3523,2651,1819,1001,162,-681,-1480,-2204,-2851,-3413, -3891,-4298,-4641,-4945,-5263,-5667,-6164,-6686,-7153,-7499, -7706,-7814,-7888,-7966,-8047,-8077,-7952,-7599,-7040,-6375, -5692,-5022,-4347,-3605,-2746,-1796,-816,134,989,1705, 2262,2677,3001,3252,3410,3461,3418,3346,3337,3447, 3665,3947,4245,4519,4724,4847,4895,4898,4864,4762, 4545,4182,3672,3043,2314,1464,461,-685,-1886,-3047, -4111,-5070,-5923,-6660,-7285,-7810,-8220,-8459,-8483,-8289, -7930,-7488,-6966,-6276,-5315,-4044,-2527,-905,654,2003, 3049,3789,4332,4821,5377,6038,6779,7553,8338,9153, 9997,10785,11369,11623,11484,10951,10097,9044,7936,6861, 5811,4769,3759,2811,1933,1093,247,-630,-1497,-2275, -2913,-3400,-3765,-4086,-4434,-4872,-5418,-5991,-6477,-6828, -7083,-7324,-7606,-7919,-8194,-8375,-8403,-8264,-7975,-7592, -7160,-6698,-6183,-5567,-4807,-3899,-2911,-1927,-1003,-149, 640,1376,2021,2530,2870,3053,3107,3084,3059,3112, 3264,3482,3716,3932,4131,4340,4553,4739,4855,4898, 4868,4757,4559,4259,3832,3248,2473,1502,401,-738, -1830,-2852,-3844,-4844,-5817,-6681,-7359,-7820,-8094,-8250, -8341,-8386,-8337,-8094,-7536,-6595,-5297,-3770,-2219,-809, 408,1472,2411,3225,3916,4528,5111,5716,6419,7303, 8351,9439,10408,11116,11482,11511,11232,10675,9893,8970, 7969,6937,5922,4954,4034,3126,2189,1191,168,-783, -1558,-2133,-2582,-3005,-3472,-3999,-4550,-5061,-5496,-5870, -6212,-6566,-6966,-7408,-7823,-8139,-8316,-8361,-8310,-8197, -8044,-7825,-7489,-7016,-6414,-5708,-4910,-4039,-3127,-2199, -1247,-282,641,1430,2013,2380,2597,2738,2847,2933, 3015,3129,3293,3479,3680,3903,4143,4372,4561,4688, 4773,4856,4937,4956,4827,4491,3936,3219,2413,1540, 585,-457,-1579,-2759,-3936,-5013,-5894,-6547,-7039,-7477, -7947,-8442,-8867,-9078,-8950,-8426,-7539,-6403,-5127,-3793, -2449,-1139,87,1177,2076,2767,3321,3866,4532,5372, 6380,7492,8614,9638,10485,11094,11424,11436,11112,10497, 9700,8842,7995,7157,6284,5327,4270,3151,2054,1059, 198,-529,-1175,-1798,-2433,-3068,-3646,-4119,-4497,-4839, -5218,-5666,-6168,-6678,-7148,-7540,-7837,-8053,-8210,-8328, -8406,-8403,-8262,-7970,-7561,-7091,-6559,-5926,-5167,-4270, -3252,-2178,-1137,-197,602,1253,1779,2190,2490,2699, 2831,2909,2997,3150,3377,3628,3850,4021,4167,4326, 4533,4793,5067,5281,5345,5217,4926,4544,4104,3589, 2938,2080,997,-258,-1557,-2750,-3726,-4478,-5117,-5781, -6539,-7356,-8115,-8682,-8981,-8996,-8725,-8179,-7366,-6303, -5038,-3647,-2249,-975,84,923,1617,2259,2919,3643, 4474,5430,6521,7712,8915,9995,10824,11323,11476,11324, 10948,10453,9899,9277,8535,7628,6553,5391,4269,3264, 2375,1544,727,-100,-919,-1687,-2350,-2881,-3296,-3655, -4046,-4526,-5074,-5621,-6111,-6527,-6896,-7263,-7618,-7920, -8150,-8291,-8337,-8283,-8133,-7907,-7622,-7257,-6741,-6040, -5167,-4177,-3142,-2121,-1154,-247,567,1250,1781,2160, 2408,2587,2772,2988,3223,3423,3557,3649,3748,3915, 4183,4531,4892,5179,5333,5352,5294,5233,5184,5072, 4758,4143,3215,2055,843,-269,-1246,-2126,-2957,-3796, -4683,-5614,-6528,-7350,-8039,-8579,-8934,-9040,-8802,-8173, -7204,-6007,-4706,-3408,-2193,-1111,-178,603,1266,1883, 2552,3356,4333,5495,6799,8126,9306,10204,10777,11086, 11228,11254,11139,10825,10286,9539,8634,7620,6583,5589, 4658,3751,2819,1850,876,-27,-792,-1413,-1941,-2431, -2911,-3396,-3893,-4399,-4881,-5337,-5798,-6276,-6750,-7183, -7537,-7796,-7968,-8076,-8159,-8213,-8187,-8038,-7756,-7320, -6727,-6001,-5170,-4225,-3184,-2089,-1036,-124,589,1122, 1550,1941,2329,2694,2999,3213,3316,3332,3360,3513, 3821,4219,4579,4812,4929,5022,5168,5385,5632,5802, 5766,5457,4857,4033,3097,2141,1198,256,-694,-1644, -2576,-3486,-4390,-5323,-6300,-7257,-8106,-8746,-9067,-9011, -8599,-7881,-6925,-5797,-4579,-3352,-2191,-1186,-410,159, 673,1313,2187,3287,4543,5859,7131,8263,9206,9959, 10560,11043,11380,11495,11331,10895,10258,9512,8704,7848, 6942,5989,4982,3943,2913,1941,1070,295,-421,-1109, -1742,-2293,-2766,-3199,-3641,-4134,-4672,-5234,-5784,-6277, -6683,-7019,-7318,-7613,-7903,-8134,-8275,-8318,-8262,-8123, -7893,-7523,-6962,-6196,-5246,-4176,-3087,-2079,-1211,-487, 159,809,1470,2067,2510,2744,2818,2855,2964,3179, 3474,3787,4033,4178,4274,4412,4663,5035,5455,5807, 5981,5932,5692,5296,4751,4045,3205,2286,1345,422, -459,-1315,-2201,-3175,-4256,-5407,-6549,-7573,-8374,-8916, -9176,-9118,-8703,-7932,-6871,-5650,-4424,-3323,-2437,-1768, -1218,-651,65,1013,2159,3380,4570,5716,6842,7950, 8986,9883,10601,11102,11346,11334,11111,10730,10235,9631, 8892,8006,7018,5987,4957,3962,3014,2094,1193,327, -464,-1127,-1659,-2116,-2577,-3102,-3685,-4274,-4821,-5316, -5773,-6214,-6647,-7060,-7444,-7778,-8041,-8239,-8399,-8542, -8650,-8648,-8425,-7913,-7143,-6216,-5263,-4361,-3505,-2639, -1721,-774,123,883,1440,1792,2011,2200,2449,2767, 3097,3350,3485,3545,3621,3783,4044,4393,4803,5233, 5595,5822,5919,5890,5695,5292,4676,3919,3124,2357, 1606,823,-37,-986,-2016,-3108,-4256,-5437,-6599,-7680, -8580,-9196,-9430,-9219,-8564,-7586,-6477,-5422,-4521,-3775, -3114,-2456,-1746,-956,-75,896,1958,3083,4257,5484, 6749,7956,9006,9849,10463,10870,11105,11186,11104,10835, 10358,9684,8886,8026,7121,6180,5186,4140,3104,2140, 1273,508,-176,-799,-1374,-1937,-2510,-3077,-3614,-4118, -4621,-5173,-5743,-6254,-6659,-6966,-7228,-7523,-7901,-8338, -8737,-8995,-9022,-8790,-8335,-7747,-7106,-6438,-5704,-4842, -3832,-2725,-1642,-720,-20,495,931,1361,1809,2253, 2629,2880,3011,3067,3122,3236,3431,3686,3984,4351, 4799,5271,5667,5913,5956,5791,5462,5028,4512,3941, 3328,2661,1918,1093,197,-744,-1738,-2848,-4130,-5541, -6938,-8128,-8970,-9369,-9300,-8836,-8122,-7314,-6522,-5777, -5050,-4311,-3573,-2836,-2082,-1302,-486,432,1528,2792, 4128,5430,6639,7730,8702,9544,10229,10728,11016,11092, 10970,10681,10241,9660,8956,8145,7207,6165,5089,4058, 3108,2241,1435,658,-98,-808,-1422,-1933,-2410,-2937, -3548,-4211,-4851,-5398,-5809,-6107,-6371,-6711,-7192,-7783, -8373,-8819,-9037,-9047,-8946,-8789,-8560,-8204,-7658,-6891, -5931,-4861,-3790,-2822,-1992,-1261,-578,80,708,1268, 1734,2105,2405,2632,2767,2827,2868,2962,3152,3466, 3908,4437,4967,5399,5661,5748,5710,5588,5376,5047, 4585,4015,3382,2719,2068,1420,679,-262,-1470,-2927, -4514,-6052,-7362,-8322,-8881,-9064,-8933,-8569,-8050,-7442, -6754,-6003,-5244,-4541,-3894,-3261,-2572,-1778,-856,195, 1367,2619,3905,5174,6392,7539,8578,9451,10103,10535, 10789,10908,10905,10749,10367,9736,8929,8037,7113,6172, 5214,4235,3251,2289,1396,629,8,-517,-1030,-1630, -2347,-3119,-3815,-4341,-4705,-5002,-5338,-5785,-6344,-6953, -7531,-8007,-8364,-8627,-8847,-9063,-9221,-9202,-8920,-8370, -7629,-6785,-5891,-4970,-4046,-3144,-2274,-1448,-688,-3, 619,1188,1694,2116,2412,2549,2552,2530,2595,2813, 3177,3644,4152,4633,5038,5365,5618,5798,5862,5758, 5453,5003,4504,4034,3615,3222,2780,2159,1225,-57, -1594,-3215,-4765,-6119,-7218,-8040,-8575,-8808,-8740,-8406, -7884,-7281,-6663,-6054,-5455,-4868,-4250,-3562,-2786,-1937, -1019,-9,1142,2446,3845,5226,6479,7567,8505,9307, 9987,10552,10974,11197,11174,10907,10425,9801,9098,8327, 7464,6473,5371,4252,3253,2439,1783,1197,569,-160, -984,-1806,-2517,-3051,-3435,-3790,-4222,-4757,-5343,-5903, -6393,-6830,-7268,-7734,-8220,-8696,-9103,-9355,-9405,-9241, -8875,-8342,-7670,-6881,-6001,-5078,-4172,-3317,-2495,-1680, -855,-41,708,1333,1797,2080,2188,2214,2265,2411, 2664,2979,3321,3712,4165,4652,5133,5558,5866,5985, 5867,5567,5198,4878,4668,4531,4357,4003,3385,2479, 1299,-94,-1610,-3160,-4655,-5987,-7082,-7891,-8366,-8500, -8354,-8038,-7655,-7235,-6751,-6200,-5607,-4997,-4391,-3768, -3078,-2266,-1297,-164,1116,2494,3854,5101,6243,7334, 8385,9339,10115,10650,10952,11074,11065,10930,10640,10137, 9396,8448,7370,6277,5296,4476,3764,3053,2250,1353, 457,-342,-1018,-1586,-2087,-2581,-3114,-3667,-4197,-4685, -5142,-5589,-6062,-6578,-7155,-7746,-8290,-8755,-9127,-9370, -9422,-9247,-8856,-8284,-7591,-6832,-6056,-5279,-4479,-3613, -2661,-1660,-697,121,752,1215,1540,1767,1949,2136, 2315,2480,2648,2873,3215,3728,4381,5033,5525,5774, 5803,5678,5497,5340,5247,5225,5218,5138,4883,4401, 3679,2712,1495,42,-1570,-3199,-4690,-5924,-6864,-7529, -7956,-8150,-8128,-7924,-7595,-7173,-6688,-6183,-5711,-5266, -4777,-4145,-3321,-2337,-1269,-171,974,2220,3560,4919, 6218,7401,8413,9227,9867,10403,10880,11270,11452,11320, 10846,10085,9166,8251,7420,6645,5860,5017,4099,3142, 2211,1375,662,24,-600,-1241,-1875,-2460,-2979,-3459, -3913,-4364,-4831,-5334,-5879,-6453,-7043,-7650,-8263,-8831, -9249,-9426,-9353,-9083,-8680,-8199,-7668,-7076,-6380,-5549, -4586,-3546,-2495,-1522,-690,-11,565,1086,1534,1844, 1994,2019,2027,2142,2436,2904,3509,4183,4805,5252, 5473,5512,5481,5465,5485,5518,5558,5603,5634,5592, 5375,4881,4070,2948,1559,3,-1577,-3068,-4396,-5542, -6505,-7259,-7727,-7881,-7774,-7521,-7231,-6963,-6706,-6403, -6001,-5479,-4833,-4091,-3294,-2451,-1526,-447,835,2274, 3723,5030,6137,7114,8051,8995,9921,10739,11337,11604, 11504,11123,10597,9999,9348,8644,7866,7011,6092,5133, 4183,3304,2502,1741,1001,284,-413,-1061,-1649,-2190, -2700,-3186,-3641,-4069,-4504,-4999,-5590,-6286,-7045,-7778, -8404,-8861,-9111,-9176,-9100,-8946,-8748,-8456,-7984,-7298, -6440,-5486,-4512,-3573,-2666,-1771,-886,-53,666,1201, 1511,1607,1581,1586,1763,2151,2684,3283,3873,4394, 4809,5103,5260,5307,5316,5341,5394,5508,5715,5971, 6144,6091,5728,5044,4085,2911,1570,95,-1449,-2979, -4394,-5600,-6500,-7074,-7373,-7485,-7514,-7517,-7471,-7316, -7005,-6570,-6094,-5630,-5156,-4595,-3853,-2881,-1702,-411, 885,2114,3270,4407,5583,6804,8013,9127,10067,10746, 11128,11248,11166,10936,10593,10118,9481,8716,7883,7023, 6140,5226,4295,3377,2526,1753,1031,325,-378,-1056, -1684,-2246,-2716,-3100,-3448,-3840,-4359,-5047,-5854,-6674, -7404,-7988,-8437,-8799,-9097,-9323,-9451,-9431,-9211,-8778, -8163,-7432,-6659,-5882,-5032,-4054,-2983,-1900,-911,-117, 430,756,918,992,1089,1311,1678,2149,2679,3250, 3817,4312,4661,4826,4845,4813,4849,5022,5318,5665, 5988,6215,6264,6095,5712,5104,4224,3031,1552,-90, -1723,-3203,-4435,-5403,-6158,-6763,-7237,-7570,-7726,-7682, -7489,-7247,-7040,-6870,-6663,-6315,-5747,-4950,-3974,-2898, -1811,-765,278,1409,2681,4063,5458,6767,7929,8924, 9753,10409,10852,11053,11025,10823,10485,10021,9427,8723, 7935,7074,6156,5226,4330,3492,2707,1928,1120,292, -498,-1169,-1670,-2037,-2359,-2739,-3220,-3824,-4542,-5309, -6033,-6673,-7247,-7804,-8378,-8927,-9349,-9571,-9595,-9467, -9225,-8872,-8414,-7854,-7158,-6277,-5207,-4034,-2888,-1879, -1066,-455,-5,319,535,695,876,1166,1620,2216, 2863,3465,3941,4233,4345,4369,4425,4592,4865,5182, 5497,5800,6085,6328,6487,6458,6113,5370,4246,2845, 1326,-160,-1546,-2842,-4065,-5175,-6078,-6717,-7095,-7257, -7287,-7296,-7349,-7423,-7448,-7319,-6945,-6344,-5610,-4831, -4038,-3201,-2266,-1211,-47,1223,2581,3980,5353,6638, 7797,8810,9653,10301,10735,10952,10981,10860,10590,10146, 9523,8754,7917,7085,6278,5469,4629,3743,2820,1885, 984,196,-411,-845,-1201,-1598,-2093,-2663,-3265,-3873, -4483,-5115,-5787,-6501,-7226,-7928,-8541,-8997,-9280,-9423, -9492,-9510,-9443,-9220,-8787,-8134,-7275,-6253,-5142,-4019, -2961,-2028,-1265,-691,-314,-98,63,297,684,1231, 1885,2522,3035,3399,3646,3843,4035,4234,4412,4552, 4713,4985,5412,5957,6493,6865,6948,6679,6081,5222, 4166,2951,1590,120,-1394,-2850,-4131,-5118,-5777,-6201, -6524,-6845,-7170,-7459,-7650,-7699,-7577,-7290,-6862,-6329, -5730,-5074,-4346,-3514,-2553,-1463,-267,1024,2400,3826, 5234,6527,7653,8620,9464,10165,10678,10972,11041,10896, 10546,10019,9398,8760,8132,7468,6693,5773,4744,3678, 2680,1835,1147,568,60,-429,-952,-1512,-2055,-2541, -3005,-3536,-4193,-4961,-5775,-6559,-7252,-7832,-8314,-8721, -9082,-9405,-9651,-9752,-9662,-9372,-8885,-8194,-7302,-6236, -5067,-3900,-2866,-2069,-1521,-1153,-866,-547,-121,401, 948,1471,1963,2435,2901,3340,3685,3878,3940,3947, 4002,4204,4606,5187,5844,6424,6809,6963,6911,6685, 6250,5520,4455,3081,1498,-116,-1586,-2825,-3829,-4629, -5293,-5880,-6431,-6938,-7354,-7622,-7738,-7734,-7622,-7375, -6990,-6512,-5985,-5398,-4708,-3883,-2902,-1770,-505,857, 2267,3659,4974,6198,7358,8470,9479,10271,10769,10966, 10908,10681,10372,10029,9644,9166,8522,7685,6690,5625, 4600,3686,2875,2128,1429,776,162,-392,-873,-1296, -1722,-2213,-2828,-3557,-4331,-5080,-5789,-6457,-7083,-7671, -8232,-8752,-9195,-9546,-9803,-9952,-9950,-9715,-9179,-8323, -7213,-6002,-4870,-3934,-3202,-2613,-2081,-1557,-1044,-554, -97,338,815,1381,2022,2651,3152,3434,3506,3465, 3460,3617,3964,4436,4953,5464,5968,6457,6905,7239, 7359,7166,6595,5649,4395,2960,1482,75,-1196,-2325, -3321,-4192,-4957,-5637,-6251,-6790,-7216,-7498,-7637,-7636, -7499,-7255,-6937,-6572,-6151,-5633,-4949,-4052,-2964,-1769, -531,728,2015,3350,4745,6151,7490,8672,9595,10210, 10546,10699,10759,10767,10695,10472,10044,9398,8579,7662, 6729,5814,4902,3988,3083,2234,1493,890,420,22, -396,-886,-1443,-2064,-2722,-3393,-4072,-4770,-5486,-6200, -6868,-7434,-7928,-8438,-9016,-9614,-10096,-10300,-10137,-9625, -8834,-7867,-6858,-5909,-5032,-4210,-3438,-2731,-2123,-1635, -1232,-808,-274,384,1118,1829,2397,2777,2995,3107, 3185,3308,3508,3779,4095,4447,4888,5470,6172,6883, 7463,7768,7733,7338,6594,5568,4363,3061,1726,429, -789,-1909,-2916,-3813,-4636,-5413,-6121,-6702,-7098,-7306, -7389,-7398,-7357,-7262,-7096,-6819,-6378,-5732,-4906,-3985, -3019,-2000,-888,363,1777,3304,4855,6305,7527,8486, 9240,9851,10351,10740,10974,11010,10844,10507,10033,9435, 8719,7895,6986,6016,5011,4031,3152,2423,1830,1308, 798,286,-207,-686,-1200,-1796,-2500,-3279,-4044,-4713, -5288,-5818,-6373,-7019,-7778,-8605,-9386,-9966,-10233,-10169, -9847,-9357,-8720,-7922,-6983,-5985,-5025,-4202,-3555,-3046, -2593,-2103,-1505,-787,-19,702,1312,1804,2203,2533, 2817,3045,3181,3251,3334,3505,3805,4287,4956,5761, 6586,7295,7760,7918,7765,7305,6547,5546,4388,3180, 1982,790,-394,-1532,-2600,-3609,-4538,-5343,-5981,-6439, -6759,-7021,-7266,-7470,-7570,-7501,-7244,-6823,-6307,-5738, -5114,-4398,-3534,-2447,-1125,353,1869,3332,4694,5964, 7121,8139,9027,9789,10375,10746,10911,10911,10790,10565, 10198,9637,8859,7925,6943,5988,5068,4179,3334,2583, 1954,1428,989,588,148,-403,-1095,-1888,-2664,-3297, -3777,-4218,-4760,-5476,-6335,-7242,-8103,-8866,-9495,-9958, -10223,-10257,-10030,-9525,-8757,-7811,-6839,-5970,-5274,-4721, -4194,-3589,-2905,-2187,-1455,-728,-41,580,1144,1678, 2165,2561,2802,2884,2868,2852,2942,3218,3695,4355, 5162,6045,6877,7536,7931,8010,7750,7189,6408,5485, 4485,3443,2326,1102,-195,-1461,-2605,-3575,-4380,-5045, -5619,-6173,-6728,-7223,-7555,-7673,-7605,-7418,-7185,-6936, -6644,-6237,-5636,-4806,-3748,-2508,-1165,211,1587,2966, 4351,5707,6963,8036,8901,9591,10145,10588,10900,11031, 10947,10659,10191,9574,8839,8004,7080,6083,5059,4098, 3298,2710,2277,1868,1378,763,54,-673,-1329,-1882, -2356,-2826,-3364,-4023,-4791,-5622,-6460,-7285,-8118,-8964, -9747,-10324,-10574,-10447,-9990,-9318,-8555,-7794,-7094,-6476, -5888,-5250,-4538,-3802,-3081,-2386,-1708,-1001,-256,481, 1155,1727,2154,2403,2493,2478,2449,2480,2646,3010, 3612,4434,5386,6323,7095,7606,7830,7779,7498,7041, 6441,5696,4773,3654,2378,1039,-234,-1339,-2288,-3159, -4010,-4847,-5640,-6344,-6891,-7235,-7396,-7439,-7452,-7494, -7517,-7413,-7092,-6544,-5808,-4927,-3927,-2787,-1500,-102, 1342,2776,4148,5430,6597,7641,8578,9414,10107,10589, 10828,10872,10801,10631,10311,9768,8968,7952,6850,5831, 4982,4297,3725,3200,2627,1943,1213,541,-27,-529, -1027,-1563,-2136,-2721,-3308,-3925,-4621,-5434,-6366,-7402, -8462,-9393,-10072,-10418,-10425,-10173,-9772,-9286,-8740,-8145, -7506,-6840,-6171,-5509,-4843,-4163,-3460,-2716,-1921,-1093, -283,471,1125,1642,1980,2125,2110,2019,1965,2051, 2358,2934,3759,4705,5618,6391,6974,7367,7618,7723, 7613,7235,6587,5691,4611,3450,2290,1173,103,-937, -1983,-3050,-4085,-4985,-5687,-6206,-6615,-6972,-7289,-7535, -7700,-7780,-7752,-7584,-7274,-6813,-6168,-5316,-4251,-3005, -1659,-303,1017,2331,3678,5051,6360,7503,8432,9169, 9768,10267,10670,10949,11049,10859,10314,9487,8548,7638, 6822,6080,5362,4641,3912,3196,2517,1885,1295,729, 174,-390,-963,-1492,-1950,-2376,-2868,-3528,-4418,-5495, -6646,-7748,-8709,-9455,-9950,-10203,-10252,-10120,-9806,-9357, -8822,-8229,-7624,-7031,-6428,-5806,-5159,-4465,-3696,-2854, -1973,-1084,-212,596,1264,1690,1811,1688,1492,1411, 1556,1949,2529,3231,4004,4795,5561,6275,6925,7489, 7887,8002,7772,7224,6458,5593,4691,3739,2715,1607, 417,-803,-1962,-2992,-3874,-4624,-5285,-5892,-6442,-6892, -7214,-7438,-7625,-7796,-7891,-7816,-7509,-6958,-6199,-5290, -4273,-3167,-1982,-693,731,2240,3706,5005,6108,7092, 8033,8968,9843,10561,11026,11172,11005,10593,10017,9351, 8641,7900,7116,6293,5478,4716,4033,3409,2781,2116, 1426,759,169,-306,-675,-997,-1359,-1855,-2561,-3470, -4512,-5603,-6677,-7686,-8567,-9277,-9788,-10080,-10156,-10030, -9727,-9299,-8813,-8303,-7767,-7198,-6608,-6018,-5414,-4736, -3921,-2959,-1896,-833,105,800,1191,1312,1256,1152, 1149,1338,1693,2145,2638,3191,3879,4725,5660,6562, 7296,7768,7957,7896,7623,7189,6646,5975,5118,4077, 2917,1732,574,-543,-1626,-2664,-3618,-4446,-5143,-5718, -6198,-6629,-7057,-7481,-7848,-8066,-8071,-7862,-7479,-6987, -6404,-5659,-4678,-3460,-2085,-664,727,2042,3272,4463, 5678,6930,8151,9236,10087,10659,10960,11036,10913,10612, 10149,9534,8794,7977,7166,6421,5741,5070,4348,3562, 2750,1971,1300,771,384,96,-163,-506,-1016,-1710, -2552,-3499,-4534,-5623,-6713,-7740,-8619,-9276,-9718,-9993, -10113,-10031,-9746,-9326,-8858,-8401,-7964,-7532,-7089,-6580, -5922,-5038,-3928,-2704,-1538,-602,44,450,702,861, 968,1053,1136,1256,1476,1841,2385,3137,4063,5050, 5946,6667,7218,7626,7889,7958,7801,7426,6857,6109, 5216,4225,3170,2046,847,-365,-1505,-2491,-3312,-4006, -4661,-5338,-6021,-6637,-7128,-7480,-7710,-7846,-7917,-7903, -7739,-7337,-6639,-5671,-4528,-3324,-2123,-944,252,1521, 2879,4284,5682,7011,8177,9141,9928,10550,10959,11108, 10991,10630,10088,9455,8816,8196,7568,6902,6164,5334, 4426,3512,2696,2051,1563,1175,847,555,262,-102, -640,-1403,-2331,-3351,-4421,-5512,-6578,-7558,-8402,-9085, -9583,-9874,-9928,-9748,-9384,-8970,-8638,-8431,-8264,-7995, -7513,-6772,-5792,-4635,-3431,-2336,-1429,-701,-105,394, 761,962,992,929,915,1065,1412,1961,2678,3505, 4358,5193,5995,6746,7387,7844,8086,8109,7940,7622, 7167,6530,5657,4582,3396,2189,1033,-22,-968,-1847, -2720,-3612,-4478,-5228,-5816,-6276,-6688,-7108,-7535,-7908, -8128,-8094,-7756,-7141,-6341,-5447,-4516,-3537,-2457,-1251, 57,1441,2867,4275,5641,6956,8181,9253,10116,10724, 11039,11053,10836,10492,10104,9690,9216,8639,7937,7128, 6253,5349,4446,3596,2866,2301,1891,1576,1305,1041, 724,267,-394,-1250,-2214,-3200,-4203,-5265,-6384,-7481, -8424,-9103,-9492,-9597,-9474,-9249,-9068,-9009,-9034,-8999, -8761,-8251,-7504,-6602,-5617,-4577,-3505,-2455,-1483,-645, -4,406,583,602,586,639,806,1082,1478,2012, 2697,3525,4437,5334,6141,6814,7339,7730,8027,8219, 8231,7974,7409,6571,5571,4528,3510,2518,1510,451, -639,-1699,-2662,-3488,-4171,-4764,-5341,-5969,-6653,-7304, -7804,-8082,-8126,-7959,-7608,-7093,-6448,-5687,-4816,-3812, -2674,-1447,-177,1139,2528,3986,5470,6905,8196,9241, 9983,10437,10671,10744,10680,10504,10246,9903,9432,8792, 8007,7144,6244,5314,4395,3579,2957,2537,2239,1963, 1654,1300,882,360,-285,-1038,-1901,-2918,-4111,-5414, -6671,-7709,-8421,-8808,-8971,-9053,-9151,-9288,-9427,-9504, -9457,-9257,-8897,-8383,-7713,-6875,-5877,-4735,-3535,-2426, -1516,-828,-346,-29,161,258,301,353,481,756, 1237,1927,2759,3611,4397,5112,5821,6539,7230,7821, 8230,8370,8204,7772,7156,6434,5647,4782,3805,2710, 1545,398,-647,-1559,-2357,-3102,-3849,-4625,-5427,-6220, -6938,-7506,-7899,-8133,-8229,-8179,-7937,-7470,-6796,-5984, -5108,-4185,-3175,-2024,-726,721,2284,3886,5417,6799, 7965,8887,9576,10072,10393,10551,10572,10490,10316,10010, 9510,8810,7958,7015,6041,5116,4324,3698,3208,2789, 2387,1993,1636,1333,1055,693,110,-780,-1960,-3308, -4652,-5848,-6817,-7543,-8082,-8505,-8865,-9178,-9420,-9574, -9676,-9765,-9810,-9727,-9441,-8888,-8072,-7057,-5938,-4801, -3708,-2699,-1806,-1093,-608,-349,-271,-278,-250,-90, 226,677,1242,1888,2562,3248,3998,4851,5771,6644, 7341,7797,8031,8089,7993,7736,7287,6629,5785,4785, 3686,2575,1533,578,-306,-1171,-2063,-2980,-3878,-4706, -5474,-6216,-6931,-7564,-8038,-8327,-8431,-8328,-8006,-7518, -6936,-6298,-5584,-4741,-3707,-2453,-1016,539,2142,3724, 5211,6522,7617,8499,9195,9717,10107,10393,10572,10619, 10479,10079,9422,8592,7691,6815,6011,5270,4560,3870, 3214,2649,2265,2092,2028,1917,1610,1011,98,-1049, -2293,-3506,-4618,-5615,-6509,-7294,-7931,-8398,-8738,-9025, -9324,-9656,-9969,-10177,-10203,-10016,-9616,-9004,-8195,-7204, -6071,-4872,-3707,-2676,-1855,-1309,-1025,-904,-800,-614, -348,-48,249,566,983,1568,2312,3164,4073,4993, 5855,6576,7139,7579,7930,8168,8201,7935,7363,6565, 5645,4692,3743,2809,1883,953,7,-944,-1882,-2780, -3632,-4473,-5334,-6195,-6985,-7628,-8061,-8272,-8301,-8199, -7984,-7666,-7248,-6713,-6016,-5114,-3990,-2669,-1194,388, 2017,3600,5020,6223,7219,8059,8814,9513,10131,10583, 10789,10707,10356,9813,9172,8498,7803,7056,6204,5265, 4343,3581,3077,2836,2764,2714,2550,2188,1615,869, -23,-1067,-2234,-3447,-4588,-5564,-6356,-7007,-7566,-8075, -8557,-9017,-9457,-9855,-10157,-10334,-10361,-10228,-9895,-9293, -8388,-7216,-5923,-4695,-3678,-2900,-2304,-1828,-1443,-1135, -875,-652,-476,-330,-130,230,797,1542,2391,3235, 4026,4807,5608,6385,7097,7684,8091,8267,8175,7805, 7221,6504,5717,4875,3974,3030,2083,1161,267,-625, -1544,-2493,-3459,-4424,-5373,-6251,-6976,-7495,-7845,-8084, -8216,-8221,-8089,-7848,-7509,-7032,-6342,-5391,-4185,-2759, -1180,446,1991,3368,4578,5691,6788,7884,8910,9740, 10286,10550,10582,10449,10225,9924,9490,8860,7999,6966, 5919,5015,4321,3835,3521,3330,3212,3104,2898,2498, 1882,1052,32,-1111,-2273,-3365,-4327,-5148,-5888,-6606, -7299,-7921,-8432,-8871,-9308,-9778,-10250,-10603,-10713,-10502, -9957,-9113,-8048,-6889,-5775,-4792,-3934,-3151,-2432,-1824, -1392,-1153,-1031,-923,-757,-502,-135,353,953,1635, 2355,3102,3921,4827,5758,6620,7331,7858,8209,8367, 8288,7974,7455,6759,5944,5070,4183,3314,2482,1657, 764,-218,-1257,-2320,-3362,-4345,-5248,-6057,-6747,-7290, -7671,-7924,-8079,-8167,-8206,-8157,-7932,-7423,-6570,-5406, -4049,-2614,-1204,152,1479,2834,4238,5647,6952,8055, 8905,9533,10016,10400,10672,10773,10625,10204,9557,8743, 7810,6831,5909,5121,4503,4070,3810,3687,3633,3536, 3238,2654,1840,908,-72,-1071,-2085,-3110,-4097,-4994, -5785,-6464,-7039,-7578,-8153,-8806,-9526,-10236,-10785,-11025, -10906,-10482,-9842,-9044,-8124,-7107,-6050,-5010,-4036,-3181, -2505,-2034,-1750,-1570,-1385,-1139,-835,-505,-157,236, 739,1388,2166,3036,3969,4911,5814,6635,7337,7899, 8282,8445,8345,7983,7401,6698,5961,5219,4475,3711, 2900,2021,1050,1,-1081,-2165,-3243,-4273,-5186,-5933, -6503,-6944,-7333,-7726,-8120,-8468,-8667,-8572,-8106,-7324, -6351,-5301,-4207,-3039,-1745,-288,1286,2857,4300,5575, 6690,7683,8584,9383,10054,10571,10873,10897,10644,10173, 9520,8695,7727,6712,5798,5108,4680,4452,4326,4222, 4055,3753,3291,2671,1924,1076,116,-944,-2037,-3072, -3967,-4684,-5277,-5865,-6535,-7322,-8189,-9057,-9831,-10427, -10778,-10867,-10749,-10444,-9912,-9131,-8139,-7032,-5919,-4903, -4037,-3334,-2782,-2341,-1970,-1655,-1374,-1118,-890,-655, -332,125,722,1433,2230,3090,3999,4935,5865,6752, 7531,8115,8441,8492,8311,7950,7465,6904,6277,5597, 4885,4143,3340,2454,1467,351,-862,-2064,-3141,-4015, -4685,-5256,-5856,-6549,-7294,-7963,-8417,-8598,-8539,-8278, -7847,-7262,-6526,-5622,-4515,-3191,-1714,-181,1312,2711, 4016,5262,6459,7569,8562,9421,10140,10691,11024,11078, 10814,10247,9441,8491,7520,6654,5985,5519,5197,4946, 4729,4532,4336,4081,3659,3017,2177,1180,95,-967, -1897,-2665,-3328,-3976,-4693,-5519,-6429,-7348,-8216,-9013, -9721,-10303,-10716,-10911,-10840,-10486,-9851,-8980,-7971,-6933, -5948,-5051,-4248,-3532,-2910,-2398,-2016,-1744,-1539,-1348, -1113,-790,-396,53,587,1253,2071,3008,4004,5003, 5961,6816,7513,8019,8316,8392,8251,7923,7460,6911, 6347,5817,5277,4613,3732,2621,1369,130,-958,-1863, -2659,-3425,-4220,-5074,-5960,-6809,-7522,-8025,-8327,-8489, -8545,-8467,-8177,-7620,-6813,-5815,-4665,-3382,-1991,-535, 922,2325,3656,4904,6085,7219,8305,9316,10189,10829, 11113,10986,10510,9816,9022,8212,7437,6722,6088,5577, 5216,5000,4893,4826,4672,4305,3660,2797,1838,894, 22,-776,-1524,-2248,-2991,-3782,-4624,-5498,-6390,-7295, -8207,-9109,-9940,-10600,-11006,-11114,-10923,-10477,-9830,-9035, -8143,-7191,-6214,-5282,-4457,-3759,-3194,-2753,-2401,-2092, -1810,-1549,-1305,-1027,-686,-265,290,1038,1957,2950, 3934,4888,5822,6713,7483,8018,8231,8159,7927,7662, 7421,7170,6828,6317,5584,4615,3493,2344,1279,336, -530,-1407,-2351,-3342,-4305,-5193,-6011,-6765,-7448,-8022, -8451,-8726,-8842,-8758,-8445,-7891,-7116,-6144,-4987,-3668, -2256,-844,512,1816,3092,4381,5719,7082,8374,9481, 10293,10742,10837,10639,10225,9657,8971,8172,7315,6535, 5958,5629,5503,5460,5380,5175,4775,4166,3402,2577, 1761,985,222,-557,-1343,-2111,-2863,-3630,-4451,-5358, -6358,-7420,-8485,-9464,-10263,-10825,-11145,-11228,-11077,-10681, -10051,-9245,-8332,-7374,-6429,-5550,-4787,-4153,-3601,-3082, -2621,-2280,-2077,-1932,-1731,-1409,-973,-464,109,803, 1682,2734,3866,4977,5979,6788,7336,7612,7707,7754, 7834,7910,7861,7555,6972,6201,5332,4417,3486,2563, 1651,732,-235,-1256,-2272,-3234,-4154,-5046,-5924,-6755, -7482,-8068,-8507,-8817,-8994,-8979,-8705,-8140,-7299,-6233, -5032,-3790,-2570,-1375,-143,1201,2687,4250,5771,7147, 8341,9340,10097,10562,10727,10592,10169,9499,8669,7798, 7041,6512,6206,6048,5938,5773,5509,5133,4630,4020, 3346,2621,1840,1038,279,-423,-1094,-1762,-2476,-3301, -4259,-5309,-6411,-7519,-8568,-9492,-10243,-10814,-11186,-11310, -11125,-10645,-9960,-9178,-8362,-7516,-6632,-5744,-4910,-4204, -3650,-3211,-2845,-2543,-2288,-2038,-1781,-1526,-1246,-851, -228,690,1856,3086,4191,5094,5808,6390,6890,7346, 7753,8078,8266,8250,7999,7543,6951,6274,5532,4716, 3822,2889,1948,1006,54,-934,-1962,-2985,-3955,-4862, -5714,-6500,-7225,-7902,-8506,-8952,-9155,-9048,-8621,-7932, -7086,-6169,-5210,-4187,-3057,-1787,-381,1117,2659,4183, 5647,7036,8312,9408,10230,10699,10775,10460,9855,9113, 8377,7755,7287,6936,6660,6430,6226,6011,5728,5324, 4774,4113,3395,2658,1923,1237,632,79,-508,-1225, -2086,-3051,-4070,-5129,-6222,-7356,-8483,-9492,-10272,-10783, -11049,-11099,-10926,-10532,-9948,-9221,-8381,-7457,-6522,-5671, -4969,-4392,-3850,-3294,-2784,-2419,-2241,-2201,-2177,-2015, -1589,-870,69,1121,2177,3142,3991,4764,5509,6254, 6953,7530,7957,8238,8368,8315,8078,7669,7124,6476, 5751,4951,4117,3275,2397,1418,361,-689,-1688,-2625, -3512,-4384,-5305,-6274,-7234,-8064,-8657,-8944,-8952,-8740, -8375,-7889,-7272,-6494,-5559,-4483,-3282,-1982,-614,831, 2350,3920,5527,7109,8508,9580,10236,10477,10381,10046, 9535,8934,8357,7869,7467,7140,6888,6690,6519,6305, 5949,5401,4714,4005,3350,2746,2152,1557,972,382, -257,-971,-1776,-2713,-3816,-5028,-6277,-7480,-8552,-9446, -10154,-10688,-11056,-11199,-11030,-10563,-9889,-9118,-8345,-7612, -6864,-6053,-5211,-4408,-3707,-3174,-2868,-2783,-2821,-2812, -2602,-2145,-1478,-665,211,1090,1957,2829,3711,4584, 5418,6191,6896,7519,8011,8334,8461,8382,8112,7707, 7223,6675,6051,5323,4475,3522,2505,1481,524,-341, -1187,-2108,-3151,-4281,-5403,-6438,-7328,-8018,-8480,-8729, -8807,-8742,-8521,-8097,-7447,-6606,-5662,-4670,-3606,-2412, -1035,535,2265,4062,5804,7371,8663,9583,10103,10293, 10228,9957,9515,8972,8443,8035,7783,7620,7453,7231, 6932,6543,6051,5482,4881,4270,3647,3019,2420,1881, 1411,946,358,-441,-1438,-2551,-3699,-4857,-6033,-7211, -8341,-9354,-10173,-10727,-10968,-10909,-10627,-10227,-9774,-9257, -8607,-7784,-6813,-5793,-4857,-4122,-3634,-3372,-3267,-3207, -3092,-2856,-2475,-1946,-1286,-531,275,1108,1975,2860, 3741,4630,5532,6410,7211,7857,8278,8463,8484,8418, 8298,8086,7728,7179,6429,5546,4628,3732,2879,2075, 1275,400,-616,-1777,-2982,-4120,-5154,-6086,-6915,-7631, -8202,-8570,-8692,-8586,-8305,-7885,-7327,-6649,-5893,-5042, -3997,-2692,-1122,649,2492,4283,5957,7449,8671,9549, 10040,10163,10011,9691,9298,8924,8635,8416,8220,7995, 7723,7428,7125,6776,6291,5662,4966,4302,3740,3282, 2876,2451,1952,1346,612,-231,-1139,-2116,-3240,-4536, -5915,-7242,-8403,-9312,-9942,-10332,-10547,-10643,-10626,-10460, -10078,-9435,-8554,-7532,-6508,-5597,-4867,-4342,-3993,-3765, -3600,-3445,-3238,-2925,-2486,-1917,-1251,-538,174,895, 1699,2629,3651,4689,5654,6481,7142,7648,8031,8325, 8536,8644,8598,8328,7808,7085,6283,5499,4773,4062, 3310,2470,1530,521,-546,-1682,-2846,-3975,-5043,-6063, -6992,-7763,-8298,-8538,-8545,-8440,-8286,-8057,-7703,-7188, -6481,-5551,-4371,-2952,-1335,435,2313,4198,5939,7398, 8487,9174,9506,9591,9533,9385,9162,8887,8607,8378, 8209,8064,7877,7591,7173,6636,6025,5412,4867,4401, 3967,3516,3034,2542,2055,1561,991,240,-757,-1966, -3333,-4764,-6115,-7266,-8197,-8966,-9634,-10217,-10674,-10947, -10970,-10694,-10131,-9345,-8445,-7515,-6627,-5829,-5176,-4712, -4420,-4222,-4020,-3747,-3394,-2975,-2511,-2010,-1468,-865, -170,640,1598,2655,3713,4669,5475,6160,6804,7450, 8052,8515,8755,8749,8538,8159,7643,7044,6420,5789, 5115,4369,3549,2665,1750,802,-227,-1376,-2618,-3873, -5053,-6098,-6949,-7580,-8000,-8262,-8423,-8514,-8512,-8368, -8056,-7567,-6886,-5972,-4775,-3262,-1476,468,2432,4260, 5837,7118,8089,8757,9143,9289,9249,9094,8910,8781, 8720,8661,8537,8306,7958,7513,7029,6559,6102,5620, 5087,4535,4004,3550,3199,2922,2609,2132,1408,418, -802,-2132,-3438,-4651,-5784,-6859,-7890,-8866,-9736,-10425, -10888,-11090,-11017,-10669,-10060,-9254,-8347,-7465,-6697,-6069, -5579,-5201,-4879,-4555,-4201,-3819,-3466,-3165,-2864,-2465, -1897,-1140,-260,654,1568,2485,3385,4257,5101,5939, 6754,7494,8074,8423,8541,8485,8321,8057,7675,7159, 6540,5867,5163,4448,3724,2968,2118,1100,-103,-1422, -2746,-3977,-5056,-5989,-6791,-7451,-7946,-8280,-8496,-8644, -8733,-8742,-8628,-8272,-7565,-6484,-5077,-3420,-1604,298, 2216,4031,5617,6890,7805,8364,8644,8761,8815,8867, 8930,8953,8879,8701,8450,8159,7850,7520,7135,6653, 6074,5445,4849,4371,4047,3846,3670,3394,2916,2203, 1298,275,-839,-2025,-3241,-4450,-5633,-6788,-7919,-8999, -9946,-10681,-11152,-11322,-11166,-10695,-9981,-9167,-8398,-7742, -7173,-6625,-6069,-5539,-5082,-4712,-4426,-4201,-3980,-3694, -3289,-2722,-2009,-1215,-416,361,1170,2070,3044,4045, 5019,5924,6717,7361,7841,8178,8400,8476,8359,8053, 7601,7056,6489,5942,5388,4771,4054,3206,2219,1105, -105,-1370,-2644,-3877,-4994,-5930,-6661,-7214,-7654,-8068, -8498,-8900,-9187,-9279,-9123,-8676,-7899,-6791,-5382,-3706, -1812,205,2183,3932,5326,6353,7088,7632,8054,8388, 8635,8786,8826,8759,8634,8508,8390,8251,8002,7561, 6945,6255,5619,5120,4760,4496,4291,4109,3864,3469, 2874,2106,1227,263,-801,-1955,-3146,-4343,-5556,-6811, -8090,-9308,-10325,-11016,-11314,-11265,-10977,-10543,-10018,-9454, -8880,-8274,-7609,-6914,-6261,-5735,-5393,-5192,-5024,-4790, -4453,-4012,-3481,-2892,-2270,-1634,-957,-173,752,1784, 2829,3803,4698,5544,6346,7078,7670,8062,8226,8181, 7981,7697,7370,6992,6564,6073,5503,4848,4123,3291, 2305,1137,-170,-1516,-2797,-3944,-4907,-5699,-6384,-7032, -7668,-8270,-8800,-9235,-9552,-9705,-9636,-9257,-8469,-7233, -5614,-3747,-1777,150,1906,3412,4646,5672,6563,7308, 7832,8127,8266,8365,8491,8615,8683,8657,8519,8225, 7746,7131,6495,5935,5488,5141,4876,4667,4475,4250, 3934,3472,2828,2037,1184,317,-609,-1669,-2866,-4191, -5620,-7090,-8466,-9606,-10426,-10902,-11095,-11096,-10967,-10693, -10264,-9706,-9052,-8332,-7615,-6984,-6491,-6135,-5865,-5598, -5283,-4925,-4538,-4139,-3714,-3211,-2598,-1897,-1129,-282, 631,1585,2574,3587,4606,5573,6421,7100,7600,7921, 8079,8099,7993,7778,7473,7116,6729,6319,5848,5243, 4448,3457,2301,1043,-232,-1444,-2566,-3606,-4553,-5393, -6146,-6838,-7481,-8109,-8744,-9350,-9854,-10149,-10084,-9531, -8478,-7043,-5390,-3656,-1898,-133,1577,3132,4462,5556, 6412,7037,7476,7788,8065,8387,8720,8956,9013,8877, 8567,8134,7616,7034,6447,5956,5619,5405,5240,5068, 4840,4510,4059,3519,2940,2334,1687,922,-59,-1279, -2681,-4184,-5683,-7072,-8266,-9226,-9962,-10510,-10868,-11011, -10922,-10597,-10073,-9439,-8790,-8183,-7632,-7116,-6643,-6229, -5850,-5497,-5196,-4915,-4590,-4174,-3665,-3083,-2467,-1833, -1146,-349,579,1608,2692,3776,4793,5709,6515,7195, 7726,8081,8221,8176,8040,7888,7742,7583,7343,6956, 6413,5706,4811,3748,2592,1400,198,-995,-2147,-3195, -4091,-4828,-5489,-6205,-7061,-8024,-8950,-9694,-10148,-10249, -9968,-9292,-8241,-6889,-5340,-3657,-1860,-7,1754,3262, 4463,5401,6156,6800,7360,7857,8329,8778,9145,9350, 9352,9151,8762,8230,7636,7092,6663,6357,6149,5974, 5751,5433,5041,4639,4261,3902,3522,3043,2380,1453, 250,-1149,-2609,-4028,-5381,-6679,-7885,-8950,-9834,-10471, -10803,-10840,-10640,-10291,-9850,-9343,-8791,-8207,-7608,-7045, -6571,-6214,-5926,-5648,-5337,-4970,-4549,-4101,-3640,-3163, -2624,-1969,-1189,-315,629,1635,2701,3816,4912,5901, 6720,7335,7743,7984,8111,8174,8220,8269,8267,8121, 7808,7350,6765,6051,5181,4125,2902,1597,334,-778, -1711,-2514,-3271,-4053,-4928,-5953,-7081,-8168,-9064,-9705, -10080,-10173,-9938,-9327,-8327,-6963,-5315,-3519,-1700,44, 1629,2982,4098,5033,5835,6542,7211,7870,8500,9046, 9419,9543,9390,9019,8530,8045,7631,7309,7060,6820, 6528,6151,5739,5378,5110,4922,4757,4527,4124,3481, 2599,1529,336,-934,-2279,-3680,-5101,-6500,-7790,-8859, -9650,-10165,-10454,-10562,-10489,-10225,-9800,-9259,-8668,-8106, -7622,-7206,-6804,-6392,-6001,-5654,-5334,-5011,-4639,-4209, -3741,-3247,-2705,-2074,-1348,-515,452,1562,2771,3984, 5072,5931,6567,7057,7476,7857,8165,8345,8410,8439, 8441,8366,8151,7768,7187,6374,5321,4096,2838,1672, 667,-195,-997,-1836,-2757,-3758,-4832,-5958,-7077,-8121, -9041,-9770,-10236,-10367,-10094,-9396,-8300,-6887,-5249,-3494, -1744,-122,1310,2535,3573,4498,5387,6274,7159,8001, 8696,9155,9354,9296,9048,8725,8415,8141,7891,7614, 7256,6819,6358,5967,5708,5575,5486,5355,5123,4763, 4255,3599,2796,1817,640,-714,-2178,-3662,-5082,-6386, -7575,-8628,-9488,-10082,-10383,-10423,-10276,-10010,-9663,-9242, -8755,-8242,-7761,-7333,-6933,-6547,-6184,-5850,-5525,-5169, -4760,-4318,-3884,-3479,-3033,-2439,-1634,-639,481,1650, 2804,3879,4824,5634,6329,6911,7382,7737,7980,8164, 8346,8550,8716,8732,8506,7989,7180,6163,5069,3995, 2991,2063,1172,288,-594,-1505,-2477,-3544,-4690,-5885, -7087,-8231,-9224,-9990,-10452,-10546,-10216,-9455,-8315,-6876, -5241,-3551,-1953,-548,679,1810,2908,4009,5131,6236, 7230,8019,8535,8786,8848,8822,8773,8694,8532,8247, 7863,7426,6975,6572,6266,6071,5938,5810,5652,5480, 5290,5017,4579,3907,3015,1959,766,-552,-1973,-3457, -4928,-6300,-7514,-8537,-9340,-9884,-10157,-10206,-10111,-9926, -9647,-9256,-8773,-8270,-7833,-7490,-7175,-6810,-6393,-5973, -5585,-5241,-4925,-4623,-4301,-3888,-3309,-2551,-1655,-668, 389,1501,2637,3739,4736,5562,6179,6634,7008,7369, 7747,8171,8612,8959,9078,8911,8475,7820,7004,6090, 5138,4194,3279,2400,1534,660,-229,-1161,-2179,-3316, -4566,-5875,-7180,-8408,-9477,-10307,-10778,-10777,-10294,-9393, -8161,-6719,-5210,-3763,-2445,-1228,-14,1276,2647,3996, 5223,6260,7080,7690,8138,8473,8732,8907,8941,8787, 8479,8116,7759,7407,7046,6689,6376,6152,6030,5987, 5951,5841,5628,5305,4811,4108,3218,2177,983,-376, -1864,-3407,-4900,-6241,-7397,-8382,-9189,-9776,-10109,-10193, -10089,-9860,-9567,-9244,-8912,-8577,-8219,-7814,-7363,-6897, -6464,-6109,-5840,-5617,-5367,-5038,-4618,-4112,-3508,-2777, -1909,-911,221,1459,2670,3708,4528,5155,5656,6134, 6669,7267,7888,8461,8894,9129,9134,8896,8417,7751, 6957,6101,5227,4364,3526,2708,1901,1075,188,-786, -1865,-3085,-4440,-5867,-7306,-8683,-9856,-10648,-10947,-10747, -10106,-9141,-7998,-6808,-5621,-4421,-3159,-1786,-311,1172, 2558,3767,4811,5752,6621,7373,7951,8339,8569,8692, 8705,8574,8309,7962,7590,7228,6878,6570,6341,6211, 6166,6156,6104,5967,5748,5442,4999,4354,3459,2328, 1042,-346,-1808,-3299,-4750,-6105,-7316,-8348,-9140,-9642, -9876,-9929,-9884,-9789,-9655,-9457,-9144,-8733,-8270,-7796, -7357,-6986,-6678,-6405,-6123,-5820,-5518,-5224,-4904,-4482, -3870,-3025,-1979,-814,390,1549,2551,3356,4029,4645, 5262,5921,6622,7340,8030,8618,9022,9188,9107,8800, 8307,7672,6935,6145,5354,4573,3785,2998,2230,1467, 649,-302,-1437,-2794,-4364,-6056,-7698,-9096,-10086,-10573, -10588,-10266,-9748,-9095,-8275,-7252,-6052,-4722,-3332,-1928, -529,856,2193,3425,4522,5509,6402,7166,7747,8163, 8453,8615,8630,8480,8192,7832,7469,7146,6877,6650, 6460,6337,6293,6292,6286,6246,6106,5796,5280,4559, 3642,2553,1309,-72,-1579,-3148,-4681,-6074,-7234,-8121, -8756,-9209,-9545,-9779,-9887,-9846,-9655,-9344,-8962,-8562, -8174,-7805,-7437,-7064,-6696,-6378,-6139,-5979,-5854,-5676, -5329,-4737,-3900,-2880,-1764,-632,442,1416,2272,3024, 3724,4432,5185,5987,6810,7618,8346,8909,9248,9340, 9210,8891,8423,7830,7130,6358,5566,4788,4067,3424, 2851,2271,1521,426,-1078,-2877,-4748,-6471,-7902,-8999, -9772,-10231,-10380,-10242,-9859,-9250,-8413,-7355,-6130,-4805, -3434,-2041,-633,771,2116,3344,4441,5448,6377,7198, 7859,8327,8593,8677,8602,8403,8139,7845,7523,7186, 6880,6659,6547,6535,6597,6687,6733,6665,6461,6131, 5659,5004,4120,2983,1597,12,-1648,-3220,-4620,-5845, -6907,-7812,-8562,-9152,-9556,-9757,-9780,-9678,-9508,-9298, -9031,-8678,-8248,-7779,-7323,-6951,-6709,-6587,-6538,-6509, -6399,-6091,-5536,-4754,-3800,-2751,-1692,-675,258,1093, 1867,2616,3390,4221,5103,6011,6914,7754,8461,8957, 9216,9282,9211,8978,8511,7792,6919,6067,5382,4907, 4566,4217,3706,2906,1759,270,-1467,-3298,-5061,-6643, -8001,-9127,-9977,-10494,-10668,-10546,-10185,-9598,-8776,-7734, -6511,-5163,-3751,-2336,-953,390,1696,2956,4162,5284, 6271,7077,7685,8100,8343,8431,8388,8216,7927,7569, 7214,6918,6714,6616,6597,6616,6646,6696,6761,6802, 6742,6505,6023,5244,4166,2842,1375,-145,-1675,-3169, -4591,-5899,-7040,-7971,-8687,-9213,-9576,-9803,-9923,-9945, -9859,-9644,-9278,-8779,-8233,-7754,-7423,-7257,-7212,-7232, -7256,-7198,-6956,-6467,-5735,-4836,-3867,-2877,-1902,-989, -186,531,1257,2087,3050,4084,5082,5980,6796,7583, 8353,9022,9456,9563,9329,8794,8047,7238,6537,6066, 5802,5606,5315,4822,4070,3027,1689,106,-1633,-3428, -5187,-6792,-8150,-9232,-10045,-10590,-10862,-10848,-10530,-9914, -9039,-7966,-6751,-5455,-4118,-2762,-1384,14,1414,2759, 3996,5095,6040,6839,7500,7996,8272,8309,8145,7878, 7588,7315,7078,6881,6714,6559,6447,6446,6596,6852, 7114,7257,7166,6794,6152,5269,4179,2903,1474,-61, -1641,-3199,-4653,-5917,-6948,-7765,-8437,-9037,-9560,-9942, -10131,-10125,-9935,-9573,-9068,-8500,-7992,-7669,-7562,-7590, -7656,-7691,-7660,-7517,-7177,-6555,-5672,-4691,-3784,-2993, -2244,-1462,-628,242,1140,2064,2989,3886,4790,5773, 6853,7949,8895,9509,9687,9462,8960,8336,7720,7216, 6870,6654,6489,6276,5920,5332,4456,3270,1803,132, -1628,-3381,-5064,-6633,-8031,-9199,-10102,-10703,-10980,-10912, -10517,-9870,-9047,-8088,-6984,-5723,-4338,-2901,-1474,-90, 1257,2568,3834,5030,6103,6986,7615,7966,8085,8066, 7986,7875,7709,7454,7121,6778,6530,6431,6494,6702, 7018,7357,7589,7623,7437,7061,6484,5649,4527,3147, 1594,-24,-1610,-3090,-4428,-5598,-6594,-7467,-8295,-9089, -9752,-10150,-10225,-10046,-9710,-9280,-8784,-8283,-7885,-7708, -7771,-7974,-8152,-8177,-7990,-7582,-6987,-6279,-5544,-4829, -4107,-3313,-2434,-1512,-627,165,886,1627,2500,3577, 4847,6206,7497,8544,9228,9512,9443,9117,8640,8137, 7726,7468,7350,7293,7189,6951,6493,5756,4722,3420, 1919,287,-1425,-3201,-4988,-6679,-8140,-9301,-10157,-10699, -10942,-10912,-10626,-10083,-9295,-8299,-7140,-5863,-4530,-3193, -1841,-414,1097,2608,3991,5166,6113,6857,7422,7814, 8049,8163,8161,8007,7690,7276,6890,6649,6576,6634, 6781,7014,7327,7672,7951,8057,7927,7561,6941,5999, 4695,3137,1530,19,-1379,-2712,-4011,-5258,-6404,-7436, -8372,-9192,-9811,-10140,-10153,-9873,-9380,-8805,-8300,-8005, -7969,-8120,-8329,-8455,-8410,-8193,-7867,-7491,-7065,-6544, -5876,-5051,-4119,-3177,-2332,-1639,-1062,-471,260,1220, 2408,3793,5276,6695,7878,8723,9187,9287,9099,8735, 8330,8013,7865,7873,7928,7915,7759,7408,6833,6033, 5004,3732,2215,489,-1357,-3229,-5033,-6663,-8041,-9161, -10063,-10731,-11081,-11050,-10676,-10057,-9288,-8408,-7407,-6262, -4959,-3519,-1978,-382,1186,2625,3855,4902,5853,6736, 7465,7940,8145,8149,8023,7800,7481,7114,6818,6676, -414,-781,-1083,-1406,-1233,-863,-671,-839,-1172,-1128, -910,-793,-382,-781,-3472,-5092,-3493,-1609,-881,-767, -418,-988,-2746,-2867,-1594,-68,2542,5275,7261,8070, 7737,6525,5881,6101,5074,2431,420,362,1094,2043, 3310,2917,1659,3117,5689,5391,3763,2730,1751,1803, 3646,5696,5959,5405,6000,6856,6515,5506,5241,4954, 4227,3119,1794,2257,3732,3530,2030,-686,-3511,-3871, -3064,-3694,-4657,-5419,-5984,-5658,-4769,-3958,-4691,-7331, -9339,-10401,-11508,-12434,-13372,-13896,-12449,-9106,-6815,-6827, -7211,-6220,-4323,-2966,-2509,-3274,-5011,-5728,-4978,-3972, -2669,-654,418,-324,-1504,-2898,-3670,-2010,1151,2632, 2913,3701,4737,6346,8588,9967,8997,7260,7157,7428, 7247,7419,6896,5161,4962,7423,9521,9901,9086,7749, 7940,9053,8568,7334,6790,6016,5605,5145,3782,3222, 3709,3878,2498,-183,-443,1711,2964,3191,2557,343, -1421,-508,1266,1339,-589,-3306,-5146,-5798,-5476,-4999, -5875,-6448,-5197,-4749,-6937,-10510,-13605,-14881,-13792,-11715, -10473,-10311,-10160,-9935,-8795,-5692,-3468,-4354,-6836,-9084, -10686,-11010,-8727,-5264,-3078,-2853,-4607,-8075,-11042,-10457, -8139,-7008,-6076,-4849,-3357,-605,2747,4471,4704,4521, 4908,6745,7456,5936,4731,5667,8523,11332,12615,12369, 11292,11164,12226,12721,12462,12896,13906,13382,11947,11147, 10613,10313,10249,9566,7552,5234,4654,5729,7173,8424, 8274,6125,3848,3344,3561,2446,461,-1191,-2899,-4193, -5097,-6105,-6174,-4898,-3964,-4789,-6681,-9909,-13525,-14800, -13033,-10853,-10742,-11493,-11881,-12474,-11490,-8080,-5047,-3328, -2429,-4116,-7669,-9337,-8048,-4597,-937,558,-500,-3540, -6527,-7091,-5759,-4829,-5797,-6941,-5421,-2003,541,1322, 1329,1575,3072,5118,4975,2922,1454,1825,3490,5010, 6261,7389,7331,6845,6761,6579,6964,8657,10151,10308, 9940,10324,11066,12076,13038,12204,8983,6029,5939,7763, 9721,10347,9035,7983,7938,7549,6114,4438,3300,2285, 1199,-118,-3020,-6739,-7465,-5206,-3202,-2767,-4690,-9321, -13431,-14597,-13941,-13532,-13816,-13955,-13993,-13907,-13389,-11885, -8734,-5119,-2812,-2350,-3748,-6007,-6165,-2606,1145,1628, -129,-1708,-1845,-1251,-1873,-4257,-7160,-8073,-5719,-3740, -4086,-4460,-3386,-1136,1266,2507,1959,701,154,256, 50,100,1541,3118,3839,4371,4015,3212,4017,6224, 8044,8416,7994,7954,9291,11857,13419,12242,10172,9422, 9332,9621,10441,10102,9222,9977,11360,11260,9848,8455, 7821,8050,8267,6291,1645,-2965,-4623,-3041,-860,-264, -1732,-4472,-7527,-10572,-12219,-12110,-12188,-13030,-14074,-15076, -15701,-14862,-11124,-6316,-3795,-3865,-5659,-7378,-6798,-4071, -2186,-2598,-2988,-1350,864,839,-888,-2949,-4912,-4998, -4178,-4515,-4701,-3663,-2161,-697,658,1421,1553,1771, 1842,879,-872,-1268,84,1738,3392,3887,2376,1946, 4000,5656,5558,4842,4452,5057,7391,9956,10881,10586, 10158,10063,10071,9765,8927,7651,7406,9008,10622,10996, 9827,8528,9048,10396,10471,8441,4899,1210,-1320,-1458, 307,1172,-129,-2133,-4269,-7094,-9411,-10198,-10019,-10409, -11925,-14946,-18653,-19127,-15114,-10820,-9077,-8999,-9023,-8322, -7033,-6178,-6553,-6665,-4681,-1514,-145,-461,-957,-1729, -2259,-2302,-3598,-5330,-5320,-4652,-4028,-2720,-1183,-303, 844,2985,4164,3228,1975,1962,2821,3560,3496,2000, 265,692,2338,3845,4835,4444,4097,4933,6399,7820, 8347,8040,8245,9553,10590,10054,8495,8012,9348,10546, 10447,9553,8258,7794,9492,12432,13578,11919,9248,6420, 4032,3162,3271,2919,2642,2638,878,-3178,-6660,-7325, -6562,-6559,-8741,-13522,-18322,-19144,-17159,-16021,-15442,-14416, -12843,-10826,-9729,-10747,-12114,-11000,-8096,-5945,-4671,-3857, -3479,-3258,-2563,-2395,-3875,-5098,-5042,-5044,-4801,-4484, -3725,-1235,1603,3102,3287,2576,1970,2652,4011,5146, 5680,5154,4418,4061,4147,4744,4699,3856,4023,5574, 6722,6998,7513,8155,8658,9456,10067,9181,7481,7249, 8504,9346,9030,7728,5484,4498,6567,9674,10993,11101, 10481,8222,5384,3228,2212,3487,6070,6451,2815,-1860, -4174,-4441,-3662,-3902,-6596,-9983,-12192,-13836,-16307,-18298, -17645,-15618,-13512,-11434,-11078,-11927,-12148,-11372,-9798,-7803, -6021,-4220,-2160,-758,-269,-392,-308,-249,-1147,-2471, -3663,-4558,-3937,-1401,1282,2691,3009,2751,2586,3727, 5702,6058,4719,4154,5047,5463,4926,4258,3416,3071, 4093,5228,5100,4724,5399,6520,8047,9697,9506,7239, 5341,5491,6604,7383,7692,6662,5113,4897,5100,5839, 8474,11648,12655,10593,6929,3606,2846,5483,7979,7061, 4145,1804,680,112,-721,-2158,-3829,-5376,-6848,-9425, -13160,-16399,-17970,-17235,-15328,-14691,-15131,-15290,-15131,-14760, -14119,-12994,-11459,-9544,-7451,-5872,-5089,-4252,-2786,-1826, -1898,-2533,-4420,-7108,-7357,-4415,-1589,-281,487,1102, 1827,3338,4435,4161,3646,4178,5214,5329,4997,4299, 2582,2235,3556,3755,2825,2029,2349,4411,7287,8647, 7718,6575,6361,6275,6218,6708,7159,7022,6282,4405, 2066,1988,5812,11037,13349,12003,8979,6725,6736,7652, 8229,8376,7720,6771,6135,5118,3569,2185,1537,1297, 91,-2926,-6681,-10146,-12830,-13819,-13714,-13965,-13895,-13266, -13460,-14219,-14443,-14210,-14141,-13040,-10529,-8808,-8259,-7148, -4625,-2322,-1513,-2105,-4530,-6718,-6520,-6152,-6261,-5177, -3492,-1781,-53,1107,1472,1841,2976,4401,5201,5351, 4837,3820,3737,4807,5145,4224,3454,3377,3955,5659, 7635,8308,8568,9025,9038,8404,7811,8963,11602,12704, 10569,6653,3396,2997,5584,8899,11106,11640,10900,10443, 10510,9513,8318,8353,8867,8800,7700,5750,3677,2741, 3363,3490,2032,106,-2150,-5430,-9282,-11787,-13631,-15556, -15817,-15151,-15395,-15750,-16280,-16690,-16024,-15142,-15270,-15955, -15281,-12408,-8836,-6017,-4094,-3760,-4262,-4431,-5236,-6925, -8098,-8158,-7155,-4776,-2237,-1355,-1379,-391,1785,4103, 5305,5092,4460,4532,6059,7843,7856,6498,5582,5521, 5687,5649,6074,7829,10302,11119,9891,8369,7996,9883, 12903,14317,12555,8320,5078,4239,4486,5807,7642,8807, 9517,10276,10166,8518,7563,8072,7974,7262,6545,5118, 3395,2534,2776,3109,2657,1489,-478,-2937,-5481,-8941, -12990,-14822,-14796,-15262,-16308,-17680,-18861,-18406,-16969,-16904, -18450,-19602,-19038,-16766,-13460,-10324,-8222,-7095,-5795,-4246, -4121,-5427,-6971,-7791,-7078,-5123,-3365,-2791,-2826,-2149, -187,2170,2985,2797,3340,4629,6077,6803,7207,7980, 7772,6676,5535,4457,4788,7402,10206,10260,8027,6320, 6320,8314,11565,13263,11902,9333,7447,5932,4637,4633, 6071,7664,8930,9535,8697,7882,8164,8399,8820,9333, 8656,7246,6469,6029,5069,4092,3881,4201,4617,4077, 1740,-1956,-5070,-6720,-8512,-10848,-12981,-14882,-15822,-15176, -14119,-14380,-16157,-18015,-18695,-18262,-17326,-15931,-13617,-10911, -7949,-5311,-4547,-5028,-6059,-6573,-5797,-5580,-6397,-6187, -4674,-3014,-2107,-1367,-85,1513,3227,4455,4230,4145, 6207,8783,9175,7463,4954,3236,4311,7615,9448,8366, 6353,4705,4184,5275,7223,9303,10835,11020,9169,6349, 4400,3418,3115,4227,6279,7411,7168,7034,7733,9039, 10318,10220,9248,9071,9427,8970,7493,6246,6237,6970, 7769,7495,5738,3194,1197,282,-1220,-3951,-7037,-9753, -11049,-11580,-12302,-12828,-13862,-15564,-16705,-17543,-18566,-19176, -18077,-14596,-10592,-8418,-7211,-6141,-5423,-4397,-3910,-5164, -6643,-6459,-5257,-4514,-4111,-3643,-2555,-510,1355,1737, 1022,1856,5030,8239,9528,8193,4953,2899,3451,4819, 6067,7087,6819,5062,3637,3292,3906,5583,7388,8830, 9107,7605,5104,2891,2474,3682,4506,4456,4591,5490, 6613,7538,8536,8971,9234,9824,10001,9449,7901,6257, 6317,7445,7872,7473,6611,5850,5487,4603,3423,1558, -2047,-5138,-6424,-8009,-10323,-12066,-12988,-13495,-14210,-16215, -19165,-21396,-21242,-18933,-16680,-15007,-12850,-10792,-8980,-7216, -6815,-7135,-6619,-6333,-6731,-7007,-6970,-6309,-4376,-2448, -2298,-2884,-2562,-639,2278,4820,6775,7304,5912,4188, 3199,3557,5236,6497,6699,6370,5627,4012,2492,2827, 5131,7957,9197,8554,7381,6611,6018,5582,5051,4381, 4814,6043,7024,7388,6849,7210,9484,11226,11302,10801, 9906,8830,8582,8955,8841,7900,7048,7364,7764,7212, 6431,4841,2247,558,-1334,-4936,-8122,-9858,-10381,-10070, -10591,-12978,-16052,-18406,-20012,-20956,-20907,-19531,-16881,-13940, -11333,-9966,-9897,-8438,-6024,-5563,-6888,-8544,-8865,-6981, -4393,-2919,-2824,-3472,-3628,-2496,-159,2994,5749,6929, 6861,6379,5600,4386,4139,5718,7647,8212,6598,3720, 1923,2020,3416,5463,7008,7570,8057,8817,8618,6599, 4223,3405,3783,4234,4886,5082,4190,4473,6659,8393, 8945,8737,7928,7599,8202,8750,8162,7201,6975,7395, 7712,7222,6432,6030,6098,5878,3277,-552,-3064,-4948, -5923,-6103,-7219,-9178,-10932,-12932,-15729,-19236,-21599,-21022, -18695,-16492,-14885,-13560,-11675,-9245,-7384,-6843,-7395,-8311, -8883,-8079,-5910,-3948,-3472,-4434,-5497,-5453,-4136,-1908, 1219,4561,6718,6739,5224,3622,3103,4195,6441,7676, 6072,3606,2688,2464,2226,2570,3409,4779,6578,8299, 8382,6659,4983,4077,3904,4184,4103,3379,2665,3016, 3870,4705,5729,6003,6198,7305,7875,7462,7546,7839, 7847,7472,6492,5936,6245,7302,8797,8781,6631,4144, 2112,406,-1373,-3400,-4504,-4278,-4521,-6666,-10260,-14055, -16579,-17394,-17621,-17774,-17271,-16047,-13902,-10997,-8479,-7124, -7260,-8342,-8856,-8336,-7400,-6058,-4464,-4359,-5700,-6835, -7327,-6575,-3555,830,4019,4109,2835,2391,2867,4238, 5805,6587,6526,6297,5607,4310,3212,2543,2479,4024, 6406,7813,8345,7995,6939,6452,6310,5647,4437,3323, 3377,3875,3679,3722,4224,4911,6250,7325,7234,7067, 7488,8472,9432,8679,6358,5145,5919,7369,8181,7952, 7436,6969,5564,3179,411,-1836,-2378,-2065,-2472,-3875, -5928,-8992,-12206,-14137,-15623,-17651,-19504,-19915,-18315,-15596, -12447,-9694,-9178,-10077,-10264,-10212,-10051,-8480,-6060,-4686, -5283,-7508,-9700,-9735,-6998,-3411,-744,466,332,201, 873,1865,2700,3507,4995,6693,7180,6354,4597,2184, 1343,2965,4982,6299,6919,7060,7766,8642,8429,7264, 5600,4107,3959,4206,3624,3047,3038,4038,5467,5402, 4638,5075,6587,8068,8647,7984,6800,6366,6158,5594, 5662,6519,7799,8375,7523,5830,3118,246,-397,137, -408,-1401,-2829,-5010,-7029,-8585,-10648,-13857,-17387,-19614, -19930,-18460,-15858,-13163,-11222,-10628,-11445,-12733,-12694,-10688, -7934,-5904,-5711,-7718,-10190,-10831,-9774,-7677,-5026,-2996, -1851,-929,4,671,934,1327,3085,5892,7687,7637, 5841,3602,2947,3492,4282,4772,4653,5212,7013,8634, 8848,8259,7911,7791,7331,5892,4363,4014,4489,4958, 4721,3928,4512,6021,6630,7242,8239,8472,8107,7684, 6895,5597,4831,5899,7984,9549,10018,8893,6329,3990, 2937,2568,2287,1376,-107,-1073,-1537,-2751,-4911,-7465, -10735,-14605,-18005,-19716,-18748,-15543,-12132,-10744,-11767,-13238, -13093,-11176,-8604,-6393,-5791,-7024,-8501,-9382,-9441,-8550, -7399,-5700,-3266,-1218,-484,-924,-1542,-1060,1182,4464, 7027,7528,6509,5755,5689,4866,3479,2762,2995,4542, 6232,6256,6088,7418,9102,9200,7650,6235,5622,5024, 4688,4603,3746,3056,3701,4434,4755,5306,6077,7314, 8612,8649,7342,5708,4427,4544,6608,8906,9643,8916, 7957,7366,6381,5053,3947,2912,2053,1549,868,-166, -612,-1280,-3884,-7801,-12660,-17071,-18289,-16846,-14358,-12582, -12687,-13872,-14385,-13205,-10819,-8751,-7824,-7520,-7623,-8427, -9525,-10359,-10906,-9979,-6836,-3754,-2787,-3579,-4462,-3705, -1562,531,1949,2911,4424,6221,5842,3710,2783,2732, 2413,2432,2524,2797,4067,5786,7105,7798,7660,7223, 6907,6347,5775,5276,4800,4670,4375,4057,4233,4125, 4180,5879,8379,9419,8598,6706,4744,4227,5125,6088, 6774,7270,7654,7748,6923,5703,4942,4229,3189,1696, 292,221,1155,1395,-57,-3313,-7354,-12185,-16118,-16934, -16154,-15283,-15209,-15781,-16266,-15756,-14250,-12903,-11833,-9998, -8270,-8089,-9285,-11512,-13338,-12343,-9406,-7482,-6765,-5997, -4924,-4205,-4100,-3444,-1612,714,3086,4801,5056,5063, 5267,4965,4482,3669,2738,2902,3850,4636,5635,7067, 8109,8718,9144,8998,8089,6872,6343,6983,7483,6868, 5580,4277,4388,6455,8723,9916,9927,9127,8285,7266, 6008,5669,6645,7829,8401,8350,8079,7960,7719,7010, 5530,2943,410,46,1769,3666,4150,1975,-1934,-6286, -10482,-13010,-14253,-14929,-15337,-15555,-15189,-14750,-15285,-16019, -14550,-10763,-7949,-7498,-8476,-9887,-10524,-10501,-10599,-9924, -8167,-6242,-4846,-4576,-5238,-5336,-3982,-1674,514,2066, 3351,4596,5384,5571,5309,4047,2401,1893,2178,2695, 3387,3824,4768,6674,8255,8512,7547,6251,6457,7950, 8675,7783,5944,4491,4403,5160,6275,8114,9811,10360, 10110,9352,8073,7231,7510,8108,8104,7773,7904,8750, 9886,10417,8937,5331,1832,503,1342,3730,6147,5609, 2096,-1331,-4118,-7069,-10445,-13347,-14312,-13808,-13974,-15611, -17552,-18061,-16511,-13830,-11238,-9424,-8794,-8939,-9278,-10195, -11194,-10598,-8980,-7555,-6278,-5701,-5851,-5619,-4806,-3704, -2501,-1465,0,2108,4026,5271,5442,4399,3400,2901, 2225,1341,390,118,1623,3917,5050,4941,4626,4664, 5121,5867,6809,7052,5954,4676,3831,3206,3731,5688, 7508,8450,8932,8684,7992,8126,8665,8479,7728,7093, 7098,8260,10748,13054,12522,8791,4563,2295,2460,3761, 4604,5042,5495,4795,1543,-2852,-6777,-9560,-10687,-11161, -12752,-15125,-17068,-18140,-18348,-17659,-15768,-12955,-10629,-9530, -9615,-10710,-11520,-11170,-10388,-9347,-8277,-7702,-7028,-6003, -5156,-4610,-4323,-3931,-2462,64,2610,4170,4506,5014, 6101,5824,4055,2331,1062,743,2006,3553,4041,4083, 4343,4540,4717,5459,6466,6842,6582,5807,4074,2218, 2181,3619,5176,6416,7051,7094,7248,8146,9353,9653, 8144,5578,4647,6848,10473,12787,12863,11396,9234,6921, 4734,3198,3105,5011,7623,8207,5850,2245,-1238,-3934, -5812,-7605,-9477,-11419,-13626,-15891,-17776,-18836,-18190,-15902, -13279,-11197,-10490,-11022,-11409,-11432,-11088,-10333,-9966,-9830, -8564,-6688,-5850,-6067,-6187,-5438,-4008,-2351,-781,360, 1729,4173,6397,6713,5903,4496,2609,1711,2150,2789, 3295,3693,3884,3875,3936,4619,5994,7048,7147,6573, 5306,3611,2301,2258,3836,5192,4643,3703,4544,7045, 9417,9862,7914,5495,4771,5791,7511,9246,10928,12492, 12789,10640,7088,4324,3406,4588,6718,8048,8184,6861, 4304,1682,-806,-3049,-4489,-5836,-8071,-10925,-13848,-16300, -17613,-17223,-15286,-13348,-12506,-11754,-10717,-10456,-10655,-10804, -11324,-11001,-9425,-8373,-8251,-8157,-7645,-6695,-5671,-4877, -4168,-3324,-1768,941,3617,5156,5781,5376,4223,2955, 1936,2198,3421,3772,3257,2978,2735,2524,3429,5728, 7950,8224,6430,4367,3542,4089,4671,3922,2179,1614, 3316,5943,7895,8539,8076,7243,6141,4714,4260,5765, 8680,11639,13111,12350,9943,7308,5752,5252,5535,6866, 8596,9016,7943,6155,3402,714,-292,-595,-2040,-4901, -8677,-12291,-14616,-15501,-15792,-15951,-15378,-13516,-11824,-11437, -11652,-12089,-12359,-11689,-10769,-10428,-10313,-10300,-9664,-8299, -7554,-7528,-7178,-6364,-5360,-3937,-1573,1452,3366,3691, 3627,3234,2156,1580,2304,3662,4444,3661,1628,430, 1649,4533,6925,7096,5843,5335,6032,6720,6148,4285, 2958,2883,3310,4238,5901,7652,8948,9454,8226,5651, 4174,4772,6778,9530,12078,13122,12101,10129,8265,6513, 5392,5852,7282,8481,8965,7940,5349,3362,3003,2889, 1946,-288,-3519,-6791,-9824,-12576,-14702,-16134,-16453,-15392, -13976,-13213,-13416,-13747,-13069,-12187,-12209,-12161,-11537,-11273, -11242,-10555,-9503,-8909,-8979,-9089,-8469,-7176,-5464,-3076, -414,1873,3192,2605,969,466,1742,3750,4541,2965, 615,152,1686,3283,4186,4493,4636,5222,6195,6881, 6649,5879,5245,4141,2809,2744,4086,6039,8252,9846, 9486,7568,5626,4512,4898,6932,9539,11598,12638,12353, 10921,8687,6728,6510,7767,9077,9523,8812,7709,6918, 6254,5800,5340,4046,2324,525,-2348,-6380,-10126,-12480, -13654,-14287,-14559,-14140,-13590,-13551,-13238,-12517,-12009,-11840, -12113,-12291,-11737,-10890,-10256,-9841,-9510,-9394,-9390,-9670, -9678,-7906,-4168,-404,1092,350,-14,1105,2788,4217, 4143,2606,1515,1699,2143,2328,2799,3552,4139,4717, 5484,6367,7220,7755,7402,5795,3498,1991,1962,3538, 6255,8491,9061,8215,6549,4982,4108,3783,4936,7941, 10907,12025,11232,9185,7009,6240,7090,8096,8035,7301, 7374,7896,7505,6705,6197,6004,5922,4993,2877,-141, -3712,-7279,-9951,-11603,-12884,-13876,-14397,-14272,-13639,-13159, -12878,-12857,-13097,-12686,-12139,-12673,-12941,-11511,-9705,-9231, -10474,-12470,-13211,-11217,-7516,-4699,-3949,-3803,-2589,-520, 1501,2883,3103,2548,2190,2047,1870,1952,2116,2235, 2574,2908,3325,4525,6317,8169,9339,8741,6227,3308, 1969,2495,3967,5833,7938,9246,8666,7007,4975,2894, 2551,4712,7963,10133,10397,9610,8954,8528,7968,7599, 7662,7810,7776,7473,7270,7270,6822,6584,7248,7500, 6770,5219,2333,-1177,-4024,-6615,-9521,-12074,-13179,-13035, -13048,-13488,-13380,-12680,-11902,-11478,-12415,-13983,-13633,-11184, -8881,-8470,-10074,-12282,-12984,-11872,-10116,-8456,-7401,-6547, -5188,-3313,-1154,886,2274,2852,2677,2241,2132,2302, 2223,2384,2612,1873,1198,2143,4286,6708,8618,9297, 8360,6202,3965,2593,2118,2830,5331,8400,9855,8854, 6187,3748,3166,3901,5083,7012,8866,9672,9810,9542, 8931,8393,8242,8394,8431,8108,7816,7224,6479,6876, 8066,8505,8300,7818,6727,4933,2284,-1398,-5029,-7534, -9222,-10899,-13067,-14535,-14018,-12345,-11278,-11902,-13741,-14815, -14161,-12352,-10631,-10024,-10753,-11711,-12068,-12323,-12118,-11050, -10108,-9468,-8421,-6822,-4933,-2900,-639,1412,2037,1392, 1057,1570,2330,2804,2538,1320,200,203,1450,3731, 5915,7377,8566,8908,7155,4004,1541,1312,3122,5688, 7909,8693,7614,5923,4711,3820,3870,5181,6722,7965, 9162,9768,9362,8588,8230,8752,9472,9359,8422,7217, 6650,7086,7498,7490,7806,8688,9423,8752,6154,2965, 785,-1083,-3847,-7232,-10766,-13022,-12835,-11539,-11203,-12280, -13734,-14487,-14423,-13483,-11878,-10913,-11117,-11533,-11624,-11876, -12187,-12015,-11435,-10781,-10291,-9670,-8328,-6184,-3770,-1480, 69,458,322,846,2229,3221,2720,1628,1015,344, -248,339,2050,4620,7508,9072,8309,5981,3479,1840, 1706,3126,5508,7349,7632,7021,6073,5062,4318,3928, 4449,6171,8044,8951,8902,8525,8661,9682,10365,9990, 9482,9344,9025,8121,7086,6997,8007,9460,10468,9856, 8113,7106,6705,5138,1971,-2049,-6060,-9013,-10272,-10206, -10220,-11350,-12926,-13975,-14401,-14235,-13599,-12820,-12114,-11750, -11908,-11997,-11770,-11761,-11805,-11475,-11514,-11952,-11340,-9153, -6612,-4797,-3433,-2094,-866,94,1001,1766,2328,2958, 2820,1156,-864,-1919,-1313,989,4110,6780,7979,7208, 5028,2989,1976,2033,3001,4459,5931,7036,7057,5820, 4068,3024,3750,5309,6052,6465,7250,8035,8794,9189, 8981,9128,10187,11099,10420,8192,6415,6599,7706,8468, 8726,8384,8005,8431,9101,8827,6802,3105,-1025,-4194, -6553,-8290,-9301,-10151,-11505,-13216,-14446,-14911,-15030,-14649, -13533,-12772,-13145,-13385,-12636,-11681,-11120,-11424,-12493,-13157, -12700,-11375,-9858,-8442,-6816,-4809,-3060,-1998,-1206,27, 1696,3345,4080,3263,1116,-1387,-2589,-1507,1051,4045, 6394,6918,6270,5485,4069,2229,1407,2400,4627,6522, 6868,5889,4448,3803,4226,4323,3897,4468,6156,7488, 7812,7493,7592,8882,10454,11283,10984,9602,8234,7961, 8615,9010,8417,7569,7826,9057,10246,11139,10953,8708, 5381,2370,-396,-2987,-5149,-6677,-7914,-9657,-11804,-13353, -13904,-13545,-13039,-13215,-13706,-13545,-12568,-11425,-10817,-10982, -11432,-11764,-12274,-12580,-11952,-10680,-9116,-7222,-5749,-4988, -4149,-2786,-808,1737,4033,4768,3121,321,-1537,-1998, -1466,257,2752,5138,6988,7390,5596,3040,1734,2370, 3831,4643,4959,5512,5941,5734,4761,3708,3669,4531, 5356,5954,6152,5839,6247,8093,9780,10234,9963,9586, 9353,9226,9292,9306,8476,7274,7001,7746,9090,10539, 11379,11314,10131,7610,4380,1665,-169,-1608,-3469,-6188, -8961,-10600,-11230,-11785,-12570,-13306,-13716,-13750,-13343,-12546, -11841,-11331,-10801,-10921,-12022,-13016,-13219,-12880,-11657,-9596, -8149,-7910,-7901,-7046,-4816,-1764,1219,3139,3346,2423, 1022,-1039,-3032,-3300,-1221,2209,4928,5438,4542,3831, 3261,2566,2265,2482,3182,4372,5427,5515,4276,2975, 3261,4361,4737,4482,3937,3615,4359,6075,7711,8485, 8298,8085,8702,9602,9932,9494,8611,7809,7263,6921, 7000,8055,10128,12078,12162,10186,7869,6236,4789,3083, 792,-2287,-5285,-7199,-8590,-10088,-11392,-12378,-13221,-13950, -14182,-13809,-13392,-12776,-11528,-10662,-11096,-12317,-13605,-14051, -12946,-11005,-9769,-9855,-10339,-9897,-8060,-5675,-3395,-697, 2309,4114,3356,534,-2155,-3239,-2627,-516,1777,3033, 3764,4477,4611,3738,2373,1861,2767,4086,4895,4853, 4069,3330,3486,4344,4957,4409,3035,2221,2705,4090, 5678,6590,6733,7077,8004,8844,9331,9867,10189,9527, 8042,6730,6341,7232,9202,11109,11735,11359,10975,10336, 9059,7514,5630,3133,418,-1967,-4014,-5902,-7636,-9200, -10603,-11873,-13073,-14012,-14350,-13765,-12269,-10832,-10597,-11772, -13277,-13574,-12824,-12328,-12052,-11335,-10662,-10587,-10813,-10382, -8463,-4946,-704,2577,3328,1890,103,-1123,-1789,-1859, -1074,797,3129,4596,4891,4270,3092,2482,3187,4365, 5046,5025,4539,4240,4678,5595,5885,5068,4144,3732, 3413,3332,4043,5110,5954,6525,6678,6737,7675,9599, 11029,10637,8981,7507,6887,7111,8092,9251,10166,10855, 11460,11744,11538,10716,9260,7520,5579,3170,591,-1701, -3871,-5613,-6648,-8104,-10765,-13511,-14546,-13694,-12525,-12122, -12098,-12227,-12469,-12666,-13129,-13668,-13413,-12275,-11079,-11025, -12472,-13743,-12768,-9772,-6062,-2585,-83,1112,1102,182, -1269,-2780,-3255,-1868,540,2669,3882,3673,2531,2243, 3162,3903,3848,3546,3486,3885,4519,5179,5419,5231, 5109,4725,3621,2737,3004,3944,4716,4894,4657,4808, 5926,7692,9342,10135,9621,8319,7405,7178,7258,7653, 8398,9268,10203,11196,12050,12012,11063,10396,9821,7920, 4813,1893,-27,-1078,-2366,-4842,-7977,-10845,-12691,-13270, -13243,-13289,-13208,-12731,-12316,-12861,-14073,-14529,-13819,-12694, -11778,-11785,-13071,-14489,-14788,-13945,-11872,-8603,-5071,-2080, 65,815,-100,-2225,-3687,-3144,-1283,644,1942,2234, 2133,2556,3218,3451,3355,3329,3456,3575,3817,4513, 5547,6254,6080,5195,4321,3877,3889,4234,4483,4221, 3762,3918,4901,6146,7587,9038,9645,9214,8675,8418, 8039,7456,7278,8106,9301,9967,10305,10902,11849,12667, 12427,10908,8549,6139,4573,3612,1957,-578,-3103,-5665, -8473,-10965,-12603,-13089,-12493,-11656,-11718,-12837,-13978,-14071, -13471,-12660,-11719,-11461,-12216,-13127,-13849,-14568,-14804,-13703, -10769,-6586,-2670,-513,-587,-1959,-2891,-2792,-2123,-1404, -650,350,1356,1873,2065,2530,3138,3272,2890,2423, 2287,2890,4315,5685,5814,4915,4147,3953,4119,4315, 4401,3941,2999,2590,3320,4667,5822,6590,7536,8749, 9289,8779,8026,7585,7585,8053,8408,8060,7834,8975, 11054,12645,12878,12130,10977,9717,8508,6977,5089,3593, 2346,175,-3118,-6762,-9713,-11229,-11338,-10783,-10813,-12069, -13538,-14158,-13924,-13075,-12318,-11998,-11696,-11429,-11945,-13549, -15588,-16599,-15105,-11461,-7515,-4684,-3099,-2326,-2277,-2588, -2556,-2135,-1632,-922,-96,422,973,2119,3355,3737, 3122,2287,1911,2257,3141,4349,5254,5108,4155,3690, 4322,5016,4812,4048,3233,2644,2597,3077,3629,4358, 5913,7746,8501,8138,7836,8039,8522,8839,8303,7267, 7006,8030,9616,10927,11970,12834,12946,12228,11064,9542, 8190,7374,6649,5179,2507,-1284,-5000,-7471,-8597,-9001, -9601,-10809,-12136,-13092,-13612,-13958,-14188,-13454,-11578,-10214, -10584,-12306,-14560,-16446,-16849,-15369,-12648,-9627,-6800,-4657, -3688,-3550,-3222,-2458,-1817,-1701,-1873,-1507,-404,850, 2088,3218,3386,2428,1651,1935,2829,3706,4357,4463, 4147,4201,4674,4856,4761,4842,4892,4356,3243,2323, 2180,3178,4998,6324,6589,6791,7567,8437,8919,8824, 8228,7550,7016,6877,7292,8203,9732,11488,12715,12948, 12071,10654,9855,9803,9818,9152,7043,3638,325,-2135, -4276,-6407,-7987,-8680,-9144,-10365,-12272,-14119,-15182,-14611, -12698,-10831,-10165,-10889,-12534,-14519,-16406,-17389,-16429,-13891, -11304,-9280,-7509,-6027,-5059,-4096,-3013,-2647,-3151,-3523, -3046,-1673,216,1775,2059,1407,1184,1649,2108,2352, 2596,2924,3509,4122,4073,3650,3827,4820,5647,5167, 3579,2210,1878,2492,3426,4029,4466,5114,6017,7186, 8159,8503,8443,8274,7752,6910,6198,6141,7212,9262, 11451,12534,11855,10673,10608,11368,11779,11443,10205,8422, 6357,3743,641,-2356,-4627,-5551,-5673,-6652,-9049,-11765, -13582,-14361,-14077,-12438,-10381,-9589,-10499,-12257,-14379,-16253, -16843,-16044,-14589,-12941,-11242,-9702,-8039,-5892,-4025,-3409, -3876,-4426,-4188,-2975,-1386,-185,344,713,1392,1869, 1809,1688,2033,2986,3804,3790,3318,3353,4137,5150, 5836,5688,4771,3758,3203,3061,2985,2995,3348,3843, 4429,5453,6536,7229,7963,8769,8847,7788,6073,5148, 5967,7800,9523,10491,10641,10532,10667,11170,11663,11686, 11709,11968,11208,8566,5313,2590,273,-1519,-2475,-3270, -4923,-7429,-10259,-12755,-14003,-13323,-11538,-9899,-9192,-9870, -11811,-13969,-15211,-15556,-15470,-15182,-14676,-13542,-11413,-8718, -6521,-5508,-5405,-5333,-4744,-4010,-3471,-2753,-1515,-167, 535,458,326,725,1586,2535,2942,2435,1974,2458, 3373,4164,4761,5002,4824,4473,4172,3818,3156,2591, 2626,3143,3561,3531,3722,5081,7165,8670,9090,8332, 6660,5448,5766,6684,7232,7908,9179,10268,10386,10159, 10323,10867,11845,12919,13036,11776,9632,6995,4345,2350, 1129,123,-1169,-3149,-6033,-9388,-12190,-13416,-12859,-11178, -9668,-9430,-10461,-11893,-12906,-13555,-14400,-15651,-16541,-15959, -13996,-11813,-10022,-8437,-7024,-6036,-5541,-5484,-5432,-4626, -3018,-1463,-877,-924,-754,-79,944,1917,2271,1916, 1422,1506,2400,3493,3952,3994,4480,5019,4849,4136, 3493,3229,3267,3604,3570,2528,1894,3219,5554,7294, 7989,7957,7430,6802,6259,5877,5986,6792,8020,8986, 9387,9395,9277,9471,10507,12113,13428,13773,12722,10622, 8247,6090,4493,3556,2702,1329,-1038,-4478,-8266,-10950, -11730,-11128,-10515,-10495,-10560,-10441,-10599,-11336,-12680,-14414, -15672,-15941,-15588,-14906,-13573,-11540,-9389,-7899,-7372,-7295, -6809,-5766,-4519,-3302,-2542,-2453,-2386,-1537,-23,879, 1055,1322,1444,1235,1379,1927,2419,3107,4232,5018, 4685,3804,3593,4129,4563,4326,3377,2224,1750,2209, 3195,4630,6215,7327,7791,7575,6820,6087,5767,5983, 6823,7825,8432,8527,8274,8200,8766,10083,11892,13486, 14008,13224,11389,8936,6875,6240,6363,5725,3579,202, -3365,-6196,-8133,-9539,-10663,-11118,-10720,-9953,-9638,-10120, -11041,-12058,-13217,-14811,-16263,-16593,-15748,-14272,-12277,-10389, -9693,-9632,-8852,-7344,-6085,-5262,-4581,-4116,-3675,-2803, -1682,-1011,-512,472,1436,1560,943,288,712,2305, 3770,4192,3869,3490,3819,4598,5079,4999,4325,3303, 2401,1867,1886,2662,4042,5700,7143,7747,7301,6464, 5801,5659,6302,7373,8144,8282,8133,8016,7910,8308, 9800,12109,14104,14734,13612,11377,9660,9305,9513,9143, 7587,5035,2310,-330,-3322,-6285,-8267,-9367,-10039,-10162, -9765,-9572,-9863,-10156,-10683,-12333,-14717,-16356,-16669,-15972, -14587,-13189,-12444,-11924,-10938,-9556,-8244,-7421,-6823,-5910, -4828,-4030,-3698,-3311,-2127,-449,725,860,254,-183, 235,1382,2501,3200,3411,3284,3451,4116,4849,5282, 5245,4780,3795,2589,1766,1495,1922,3362,5389,6877, 7231,6802,6183,5798,5883,6387,7169,8027,8350,7712, 6676,6218,7171,9641,12375,13705,13253,12304,11667,11033, 10557,10588,10328,9060,7178,4961,2024,-1251,-3950,-6036, -7853,-9306,-10102,-10101,-9603,-9073,-9103,-10296,-12406,-14567, -15845,-16073,-15860,-15608,-15129,-14015,-12650,-11650,-10948,-10108, -8774,-7298,-6448,-6312,-6210,-5419,-3856,-2245,-1080,-608, -778,-843,-357,250,866,1611,2125,2248,2392,2822, 3469,4274,5078,5508,5187,4053,2455,1175,939,1746, 3038,4548,5942,6558,6430,5980,5311,5077,6207,7983, 8507,7365,5999,5508,5973,7481,9591,11286,12055,12298, 12301,11862,11248,11076,11365,11526,10855,9159,6769,4133, 1628,-767,-3269,-5940,-8291,-9320,-8879,-7981,-7810,-8698, -10038,-11373,-12634,-13969,-15366,-16062,-15613,-14801,-14275,-13848, -13199,-12027,-10308,-8696,-8001,-8086,-7991,-7152,-5691,-4102, -2747,-1957,-1672,-1406,-1013,-526,102,609,1048,1637, 2046,1961,2113,3023,4315,5474,6117,5672,4103,2636, 1940,1441,1185,2242,4442,6063,6225,5517,4715,4751, 5933,7488,8285,7762,6526,5631,5527,6135,7287,8777, 10290,11383,11790,11621,11264,11160,11523,12261,12562,11728, 10232,8689,7074,5051,2091,-1568,-4691,-6369,-6987,-7318, -7549,-7700,-7990,-8711,-9923,-11650,-13446,-14383,-14526,-14706, -15095,-15311,-15053,-13949,-12192,-10683,-9772,-9335,-9274,-8973, -7867,-6237,-4867,-3925,-3047,-2505,-2303,-1869,-1078,-473, 82,937,1183,638,575,1476,2741,3835,4775,5653, 5833,4858,3160,1469,604,1139,2792,4419,5030,4616, 4045,4207,5241,6443,7411,7799,7339,6387,5580,5242, 5558,6626,8276,9806,10671,10775,10574,10801,11641,12377, 12265,11800,11760,11756,11099,9474,6762,3516,560,-2045, -4333,-5996,-6793,-6768,-6580,-6947,-8151,-9763,-10987,-11806, -12673,-13584,-14470,-15478,-15993,-15235,-13839,-12761,-11778,-10973, -10758,-10601,-9883,-8723,-7505,-6171,-4629,-3664,-3665,-3691, -2893,-1562,-508,-78,-48,-61,46,268,656,1415, 2739,4568,6062,6123,4586,2383,1040,1036,1893,2929, 3533,3552,3387,3498,3994,4915,6098,7004,7416,7325, 6508,5165,4621,5478,6943,8121,8629,8833,9387,10406, 11318,11495,11236,11320,11907,12702,13027,12232,10658,8833, 6465,3148,-235,-2745,-4394,-5113,-5085,-5397,-6566,-7937, -8796,-9385,-10301,-11442,-12811,-14489,-15720,-15721,-14889,-14071, -13393,-12582,-11755,-11388,-11356,-10941,-9744,-8025,-6449,-5525, -5132,-4783,-4139,-3045,-1895,-1159,-640,-81,129,-255, -776,-705,518,2799,5047,6003,5430,3969,2384,1589, 1823,2378,2607,2633,2807,2915,2888,3249,4269,5836, 7311,7610,6667,5461,5053,5444,6120,6722,6946,7229, 8340,9626,10159,10276,10545,10945,11276,11905,12723,13067, 13079,12786,11367,8492,5015,1870,-553,-2177,-3089,-3776, -4828,-6189,-7040,-7305,-7789,-8903,-10495,-12113,-13583,-14858, -15553,-15278,-14331,-13391,-12752,-12609,-12679,-12376,-11366,-9994, -8837,-7848,-6845,-5969,-5277,-4782,-4255,-3229,-1575,-168, 118,-470,-1445,-2150,-1565,435,2786,4459,5003,4630, 3778,2932,2342,2000,2243,2842,2895,2261,1649,1686, 2715,4644,6421,6842,6345,6121,6119,5911,5689,5729, 5930,6410,7319,8273,8824,9258,9964,10594,10680,10720, 11235,12196,13361,14315,14350,12919,10186,7029,4507,2543, 588,-1327,-2860,-3915,-4774,-5533,-6132,-6779,-7651,-8854, -10654,-12843,-14512,-15002,-14603,-13893,-13496,-13659,-13686,-13154, -12507,-11973,-11227,-10000,-8545,-7332,-6600,-6462,-6435,-5549, -3634,-1508,-164,-285,-1561,-2654,-2560,-1599,-172,1657, 3352,4285,4419,3813,2708,2106,2701,3580,3330,2082, 1050,884,1591,2946,4286,5060,5438,5979,6409,6220, 5653,5254,5344,5638,5925,6418,7081,7769,8572,9373, 9804,9629,9347,9992,11713,13487,14494,14446,13351,11461, 9357,7039,4502,2269,350,-1347,-2792,-4039,-4854,-5133, -5257,-6030,-7949,-10282,-12112,-13333,-13949,-14060,-14110,-14141, -13964,-13850,-13910,-13743,-13251,-12373,-10831,-9108,-8215,-8369, -8518,-7827,-6252,-4104,-2124,-1276,-1608,-2225,-2700,-3092, -2906,-1294,1099,2826,3380,3030,2546,2602,3266,3973, 3815,2732,1662,1186,1223,1576,2224,3266,4356,5137, 5685,6071,6021,5627,5508,5651,5576,5482,5745,6460, 7594,8569,8875,8637,8457,8868,9887,11303,12846,13941, 14335,14088,13030,11100,9049,7219,5096,2613,176,-1786, -2816,-2984,-3088,-3822,-5128,-6737,-8635,-10472,-11804,-12849, -13669,-13736,-13352,-13433,-14077,-14599,-14558,-13801,-12268,-10603, -9879,-9980,-9927,-9270,-8238,-6898,-5032,-3001,-1673,-1535, -2463,-3633,-3935,-2878,-910,822,1517,1615,1960,2762, 3458,3820,4031,3804,3077,2303,1748,1345,1260,1846, 2921,3982,4768,5195,5405,5792,6216,6051,5406,4932, 4945,5623,6794,7699,7879,7796,7863,8017,8318,9086, 10435,12091,13621,14334,13965,13321,12759,11607,9595,7020, 4162,1526,-205,-891,-1379,-2165,-3032,-3979,-5403,-7252, -9178,-10994,-12477,-12926,-12659,-12908,-14031,-15262,-15636,-14991, -13928,-12843,-12001,-11465,-11154,-11024,-10792,-10060,-8448,-5792, -3307,-2469,-3203,-4148,-4354,-3798,-2700,-1488,-655,-64, 697,1633,2560,3319,3770,3933,3963,3697,2854,1753, 1198,1370,1945,2695,3353,3787,4462,5578,6385,6405, 5881,5167,4871,5339,6125,6813,7433,7953,8006,7545, 7335,7862,8899,10291,11816,12924,13503,14058,14720,14754, 13696,11686,8995,6179,3728,2002,782,-300,-997,-1370, -2177,-3912,-6438,-8762,-10117,-10741,-11190,-11812,-12849,-14164, -15069,-15307,-15177,-14606,-13397,-12138,-11782,-12357,-12914,-12598, -11087,-8649,-6241,-4768,-4259,-4397,-4655,-4438,-3764,-3185, -2712,-1955,-1078,-318,550,1470,2373,3358,4081,4057, 3355,2476,1883,1608,1573,1602,1539,1933,3086,4332, 5147,5662,5969,5762,5147,4833,5063,5782,6808,7632, 7751,7127,6654,6935,7665,8555,9526,10412,11330,12521, 13948,15174,15469,14604,13108,11283,8761,5855,3396,1910, 1286,1044,485,-1040,-3354,-5445,-6889,-8143,-9330,-10231, -11018,-11987,-13305,-14859,-15849,-15506,-14072,-12724,-12240,-12730, -13804,-14304,-13380,-11457,-9431,-7727,-6438,-5614,-5160,-4797, -4606,-4429,-3803,-3063,-2568,-2187,-1672,-895,426,2165, 3382,3569,3320,3199,3079,2645,1996,1460,1078,1093, 1754,2691,3591,4600,5506,5784,5327,4623,4403,5027, 6031,6908,7322,7056,6516,6453,7014,7632,7825,8098, 9036,10333,11703,13144,14307,15007,15409,15017,13160,10145, 7110,5069,4073,3550,2709,1389,-21,-1646,-3648,-5580, -6956,-7788,-8485,-9372,-10908,-13194,-15043,-15530,-14800,-13495, -12646,-12940,-13996,-14727,-14599,-13778,-12434,-10742,-9098,-7741, -6637,-5916,-5700,-5446,-4562,-3621,-3386,-3548,-3437,-2839, -1660,-93,1293,2183,2747,3216,3489,3360,2883,2343, 1788,1199,809,1066,2075,3351,4403,5146,5196,4523, 4130,4607,5458,6106,6496,6645,6628,6702,6921,6933, 6829,7041,7689,8591,9471,10349,11675,13690,15720,16457, 15653,13931,11652,9307,7413,6064,5100,4357,3518,1985, -204,-2381,-4028,-4948,-5348,-6067,-7872,-10375,-12531,-13818, -14176,-13723,-13011,-12819,-13336,-13998,-14523,-14856,-14535,-13255, -11482,-9916,-8832,-8071,-7355,-6450,-5353,-4494,-4208,-4272, -4309,-3963,-3283,-2485,-1287,248,1490,2221,2795,3275, 3413,3251,2955,2175,1002,394,819,1973,3221,4016, 4126,3915,4020,4415,4827,5207,5414,5688,6315,6780, 6606,6185,6243,6737,7071,7104,7086,7424,8694,10840, 13069,14834,15880,15908,14799,12898,10685,8640,7300,6834, 6473,5152,2887,542,-1283,-2340,-2711,-3223,-4804,-7247, -9594,-11375,-12607,-13292,-13395,-13085,-12810,-13136,-14075,-15080, -15553,-15048,-13743,-12444,-11631,-10901,-9745,-8363,-7295,-6302, -5425,-5072,-5028,-4904,-4691,-4369,-3567,-2240,-887,208, 1084,1854,2772,3615,3782,3013,1752,706,404,1059, 2154,2737,2811,3118,3657,3949,4051,4179,4501,5134, 5821,6039,5884,5860,6225,6684,6831,6651,6198,5855, 6321,7679,9428,11472,13727,15525,16058,15180,13417,11433, 9978,9407,9098,8097,6099,3697,1793,664,0,-697, -1806,-3432,-5577,-7856,-9780,-11401,-12293,-12180,-11909,-12352, -13267,-14110,-14797,-15086,-14747,-14098,-13505,-12813,-11888,-10759, -9484,-8145,-6958,-6091,-5540,-5437,-5594,-5411,-4765,-3982, -3060,-2092,-1257,-218,1426,3078,3813,3444,2568,1787, 1362,1297,1443,1657,2125,2842,3156,3082,3178,3559, 4120,4790,5314,5387,5227,5474,6168,6717,6942,6918, 6623,6096,5612,5587,6285,7951,10507,13191,15162,15633, 14729,13567,12718,12113,11600,10820,9271,7202,5413,3943, 2593,1614,1115,334,-1438,-3939,-6446,-8477,-9677,-10207, -10669,-11292,-12023,-12873,-13644,-14118,-14486,-14728,-14545,-14098, -13669,-13050,-11962,-10530,-9023,-7616,-6616,-6336,-6439,-6114, -5413,-4814,-4476,-4351,-3943,-2656,-689,1115,2206,2765, 3014,2763,2163,1593,1227,1248,1779,2460,2613,2274, 2203,2698,3492,4176,4459,4537,4653,4865,5317,5956, 6490,6830,7099,6998,6115,4845,4273,4950,6848,9663, 12317,13645,13866,13903,13918,13714,13331,12765,11857,10547, 8732,6596,4895,3960,3494,2960,1896,-90,-2706,-5063, -6667,-7830,-8848,-9715,-10578,-11540,-12368,-12992,-13649,-14196, -14452,-14546,-14678,-14769,-14370,-13272,-11598,-9797,-8651,-8285, -7878,-7006,-6122,-5709,-5696,-5847,-5780,-4981,-3575,-1966, -432,964,2111,2640,2353,1604,1154,1275,1612,1861, 1944,1780,1532,1759,2501,3096,3420,3779,4101,4176, 4313,4696,5223,6064,7217,7851,7180,5525,3978,3500, 4489,6457,8603,10524,11976,12799,13147,13500,13889,14033, 13859,13175,11593,9476,7674,6479,5788,5277,4576,3262, 1201,-1047,-3075,-4821,-6159,-7228,-8319,-9445,-10543,-11598, -12510,-12981,-13096,-13514,-14466,-15309,-15382,-14626,-13389,-12129, -11155,-10352,-9405,-8251,-7116,-6396,-6240,-6231,-6068,-5980, -5799,-4852,-3134,-1251,425,1583,1862,1563,1490,1763, 1854,1788,1812,1732,1565,1618,1810,2069,2531,3202, 3854,4109,3779,3345,3653,5046,6755,7797,7880,6948, 5413,4081,3642,4235,5582,7432,9338,10597,11243,11914, 12839,13877,14736,14855,13861,12183,10451,9020,7993,7339, 6749,5799,4511,2947,903,-1405,-3248,-4414,-5402,-6717, -8461,-10050,-10952,-11255,-11548,-12227,-13396,-14701,-15374,-15156, -14657,-14266,-13591,-12460,-11290,-10225,-9079,-8008,-7256,-6614, -6309,-6739,-7241,-7001,-5834,-4037,-2154,-664,230,705, 1080,1462,1743,1739,1538,1527,1772,1795,1353,1069, 1574,2585,3461,3781,3363,2636,2547,3552,5207,6825, 7901,8079,7204,5708,4351,3667,3998,5332,6975,8232, 9146,9998,11020,12473,14134,15230,15277,14463,13226,11928, 10693,9610,8858,8377,7660,6279,4388,2395,560,-950, -2213,-3784,-5927,-7821,-8832,-9500,-10237,-11055,-12130,-13348, -14281,-14873,-15300,-15537,-15261,-14545,-13710,-12813,-11772,-10464, -8978,-7736,-7162,-7278,-7742,-8131,-7842,-6564,-4940,-3596, -2367,-1056,24,613,880,1159,1503,1855,2059,1786, 1106,721,1081,1917,2829,3383,3174,2511,2043,2130, 2973,4613,6512,7839,8079,7282,5876,4565,4024,4365, 5267,6158,6790,7437,8576,10139,11733,13316,14726,15320, 14886,13933,12689,11434,10799,10637,10111,8782,7121,5672, 4328,2946,1345,-656,-2792,-4583,-5956,-7165,-8306,-9356, -10306,-11243,-12342,-13592,-14580,-15069,-15311,-15418,-15281,-14900, -14280,-13087,-11263,-9469,-8476,-8263,-8331,-8493,-8527,-8220, -7607,-6581,-5014,-3308,-2039,-1331,-841,-187,705,1627, 2036,1663,973,557,611,1116,1941,2713,3029,2727, 1936,1234,1280,2289,4035,6130,7566,7579,6704,5819, 5114,4631,4592,4868,5134,5549,6414,7440,8592,10306, 12421,14141,14845,14530,13640,12892,12621,12451,11847,10717, 9424,8347,7518,6454,4812,2840,939,-885,-2742,-4397, -5703,-6866,-8011,-8993,-10087,-11485,-12773,-13522,-13985,-14561, -15279,-15905,-15991,-15095,-13468,-11815,-10533,-9565,-8913,-8657, -8709,-8990,-9109,-8515,-7157,-5595,-4385,-3570,-2917,-2001, -688,568,1421,1730,1339,614,250,515,1140,1964, 2901,3237,2487,1291,570,718,1897,3831,5629,6565, 6789,6666,6279,5692,5171,4900,4846,4935,4995,5141, 5912,7538,9732,11849,13262,13740,13716,13813,13939,13686, 13120,12447,11611,10638,9810,9062,7966,6479,4827,2992, 946,-1023,-2683,-3997,-5058,-6177,-7681,-9272,-10464,-11202, -11840,-12726,-13929,-15210,-15996,-15992,-15379,-14274,-12849,-11325, -9962,-9103,-9034,-9429,-9580,-9231,-8596,-7575,-6355,-5525, -4978,-4066,-2724,-1325,53,1212,1611,1124,355,-21, 277,1272,2556,3299,3014,1973,836,292,627,1619, 2999,4490,5728,6389,6429,6129,5822,5669,5645,5333, 4447,3651,3860,5140,6834,8593,10231,11479,12386,13180, 13733,13893,13778,13454,12936,12283,11521,10667,9893,9221, 8221,6544,4402,2256,516,-733,-1929,-3486,-5249,-6865, -8128,-8984,-9699,-10736,-12075,-13288,-14394,-15595,-16414,-16274, -15284,-13803,-12074,-10672,-10144,-10249,-10272,-10040,-9650,-8993, -8225,-7563,-6974,-6358,-5494,-4199,-2447,-621,690,1008, 366,-512,-668,215,1521,2537,2925,2566,1645,758, 266,174,752,2215,3842,4811,5121,5340,5772,6312, 6586,6218,5141,3942,3316,3519,4499,5885,7267,8651, 10114,11450,12428,13088,13535,13804,13872,13535,12733,11963, 11582,11301,10730,9645,7860,5803,4194,2974,1463,-433, -2202,-3768,-5302,-6554,-7486,-8467,-9504,-10542,-11831,-13506, -15217,-16353,-16484,-15620,-14166,-12671,-11628,-11143,-10991,-10876, -10490,-9864,-9195,-8564,-8102,-7939,-7779,-6918,-5156,-3057, -1159,-11,29,-612,-960,-564,258,1239,2306,2953, 2767,1856,673,-116,45,937,1964,2782,3376,3939, 4755,5828,6674,6814,6232,5212,4166,3561,3499,3874, 4792,6165,7508,8701,9954,11236,12297,13194,13825,13713, 13132,12842,12872,12711,12208,11457,10411,9127,7750,6342, 4753,3037,1318,-398,-2134,-3785,-5233,-6297,-7006,-7764, -8930,-10589,-12559,-14554,-15912,-16220,-15687,-14714,-13550,-12531, -12064,-12003,-11721,-11040,-10167,-9291,-8793,-9013,-9479,-9232, -7889,-5926,-3916,-2360,-1395,-1003,-1073,-1382,-1323,-435, 1033,2374,2954,2513,1454,577,282,468,889,1278, 1539,2076,3180,4452,5516,6367,6819,6518,5663,4728, 3829,3307,3636,4584,5439,6148,7190,8736,10465,11898, 12751,13015,13083,13268,13551,13631,13344,12777,12144,11503, 10617,9358,7957,6544,5002,3266,1436,-508,-2430,-3856, -4615,-5215,-6115,-7416,-9183,-11375,-13481,-14958,-15658,-15522, -14710,-13754,-13197,-13115,-13038,-12430,-11178,-9960,-9470,-9648, -10046,-10234,-9885,-8837,-7180,-5223,-3364,-2161,-1918,-2215, -2359,-1896,-696,947,2075,2177,1779,1413,1076,804, 706,607,442,629,1364,2357,3422,4673,5961,6680, 6511,5703,4732,4041,3798,3806,3920,4212,4838,6040, 7740,9424,10627,11431,12094,12630,13049,13441,13657,13495, 13166,12840,12285,11418,10481,9554,8403,6894,5095,3011, 881,-901,-2147,-2954,-3580,-4444,-5753,-7587,-9894,-12324, -14072,-14679,-14522,-14232,-14141,-14223,-14210,-13607,-12492,-11442, -10568,-9981,-10028,-10550,-10922,-10799,-9983,-8251,-5949,-4189, -3502,-3435,-3428,-3115,-2224,-862,349,1010,1347,1579, 1607,1415,1099,763,505,277,118,315,1163,2615, 4186,5406,6016,5927,5563,5285,4893,4207,3585,3345, 3501,4127,5301,6680,7962,9217,10380,11228,11861,12473, 13061,13512,13674,13509,13095,12600,12035,11489,10949,10109, 8617,6627,4584,2505,580,-775,-1514,-1932,-2495,-3876, -6227,-8897,-10940,-12247,-13122,-13639,-14048,-14516,-14795,-14540, -13924,-13147,-12033,-10792,-10153,-10425,-11189,-11845,-11742,-10571, -8643,-6781,-5627,-5136,-4834,-4338,-3580,-2714,-1804,-749, 222,793,1072,1293,1404,1401,1262,729,-167,-725, -359,724,2035,3333,4357,4995,5508,5896,5873,5320, 4479,3720,3324,3346,3750,4496,5644,6908,8080,9213, 10232,10964,11734,12666,13432,13654,13482,13136,12800,12647, 12497,12029,11281,10342,8758,6282,3742,1906,877,460, 169,-755,-2632,-4964,-7076,-8860,-10388,-11619,-12558,-13399, -14202,-14791,-14997,-14598,-13504,-12010,-10744,-10328,-10946,-11976, -12393,-11849,-10683,-9268,-7890,-6855,-6226,-5658,-5049,-4407, -3530,-2309,-1239,-592,-139,422,1136,1806,2033,1545, 572,-319,-682,-366,416,1294,2208,3290,4354,5182, 5809,6034,5626,4812,4057,3521,3232,3358,3954,4852, 5965,7104,8006,8839,10016,11265,12151,12782,13300,13603, 13545,13290,13200,13268,13405,13310,12368,10308,7697,5358, 3795,2957,2419,1679,515,-1182,-3287,-5439,-7356,-8964, -10282,-11423,-12658,-14183,-15549,-15939,-15232,-13885,-12459,-11573, -11599,-12177,-12684,-12867,-12609,-11771,-10476,-9184,-8244,-7671, -7244,-6523,-5418,-4263,-3308,-2615,-2101,-1410,-247,985, 1679,1752,1348,589,-188,-563,-546,-270,331,1255, 2329,3516,4706,5523,5843,5835,5432,4520,3585,3240, 3461,3826,4343,5096,6019,7035,8167,9298,10383,11538, 12661,13408,13487,13070,12805,13140,13981,14625,14427,13305, 11408,9075,7052,5645,4597,3803,3169,2204,494,-1730, -3886,-5638,-6927,-8051,-9611,-11787,-13994,-15435,-15751,-15085, -13983,-12982,-12317,-12142,-12562,-13158,-13387,-13096,-12248,-11071, -10092,-9619,-9232,-8416,-7267,-6150,-5221,-4547,-4040,-3303, -2141,-835,320,1179,1491,1207,734,305,-256,-758, -742,-169,570,1416,2554,3899,5088,5795,5887,5405, 4700,4111,3743,3581,3651,3921,4515,5362,6091,6839, 8007,9599,11156,12300,12824,12692,12348,12558,13438,14415, 15016,15020,14200,12581,10601,8641,7077,6155,5646,4983, 3708,1750,-400,-2071,-3221,-4376,-5937,-7969,-10392,-12733, -14356,-14952,-14749,-13956,-12913,-12289,-12459,-13000,-13392,-13405, -12943,-12246,-11687,-11268,-10706,-9901,-8973,-7944,-6921,-6221, -5827,-5231,-4156,-2931,-1773,-606,440,1066,1223,967, 438,-74,-503,-814,-813,-391,464,1724,3169,4343, 5051,5440,5536,5111,4369,3851,3691,3753,4025,4286, 4394,4700,5664,7229,9013,10502,11329,11610,11656,11785, 12241,13124,14203,15117,15518,15029,13470,11379,9684,8683, 8025,7312,6215,4586,2787,1299,85,-1107,-2407,-3968, -6050,-8623,-11262,-13312,-14296,-14109,-13327,-12828,-12847,-13069, -13274,-13402,-13268,-12892,-12624,-12514,-12228,-11529,-10536,-9540, -8707,-8016,-7371,-6759,-6129,-5302,-4180,-2876,-1568,-397, 387,679,787,776,285,-553,-1179,-1315,-978,-192, 887,2042,3210,4325,5087,5211,4777,4241,4014,4155, 4260,3993,3568,3355,3676,4791,6473,8080,9285,10225, 10764,10817,10824,11325,12447,13946,15274,15724,14999,13588, 12250,11186,10347,9557,8523,7157,5628,4172,2749,1526, 667,-229,-1841,-4275,-7091,-9789,-11906,-12972,-13092,-12897, -12912,-13194,-13438,-13356,-13079,-12974,-13086,-13132,-13066,-12739, -12032,-11123,-10292,-9480,-8682,-8131,-7803,-7248,-6265,-5091, -3900,-2712,-1584,-517,395,906,875,364,-394,-992, -1264,-1258,-943,-84,1278,2656,3738,4400,4522,4351, 4416,4751,4862,4488,3912,3308,2927,3171,4109,5530, 7155,8681,9603,9720,9526,9711,10593,12132,13843,14970, 15163,14785,14126,13226,12289,11552,10876,9875,8409,6692, 5133,4042,3354,2747,1824,142,-2444,-5399,-7928,-9776, -11079,-11874,-12389,-12879,-13201,-13162,-12990,-12970,-13029,-13108, -13253,-13360,-13187,-12609,-11713,-10758,-10024,-9525,-9092,-8607, -7978,-7136,-6240,-5295,-4059,-2535,-1174,-256,369,656, 468,14,-629,-1424,-1910,-1584,-501,817,1956,2740, 3208,3575,4108,4672,4943,4993,4798,4177,3291,2609, 2500,3254,4854,6787,8071,8391,8310,8423,8995,10090, 11577,13154,14403,14950,14745,14225,13769,13334,12865,12278, 11200,9449,7573,6197,5446,5129,4724,3639,1653,-827, -3313,-5568,-7582,-9316,-10703,-11693,-12334,-12777,-12971,-12887, -12776,-12858,-13110,-13447,-13743,-13567,-12849,-12102,-11519,-10907, -10249,-9695,-9254,-8779,-8271,-7588,-6470,-5011,-3637,-2469, -1326,-288,443,724,282,-768,-1742,-2048,-1646,-835, 106,948,1579,2161,2844,3511,4138,4840,5376,5297, 4387,3020,2033,2098,3124,4562,5988,7056,7415,7309, 7427,8094,9280,10844,12468,13689,14221,14257,14141,14101, 14208,14188,13552,12110,10178,8441,7421,7076,6771,6104, 4995,3316,1168,-1066,-3267,-5455,-7457,-9089,-10477,-11664, -12320,-12399,-12365,-12516,-12789,-13178,-13602,-13761,-13581,-13288, -12866,-12194,-11411,-10714,-10243,-9951,-9729,-9284,-8402,-7334, -6362,-5264,-3854,-2278,-793,254,486,-32,-856,-1554, -1834,-1677,-1214,-503,322,914,1132,1524,2534,3895, 4984,5510,5259,4227,2942,2129,2129,2889,4148,5419, 6232,6472,6403,6485,7141,8406,10033,11637,12755,13159, 13282,13755,14536,15079,15028,14241,12770,11059,9716,8873, 8290,7896,7486,6516,4912,3038,1097,-936,-3082,-5280, -7442,-9301,-10519,-11152,-11565,-11921,-12239,-12594,-12959,-13231, -13533,-13823,-13766,-13215,-12436,-11767,-11310,-11015,-10690,-10234, -9710,-9209,-8686,-7966,-6749,-5007,-3102,-1648,-708,-102, -88,-747,-1593,-2016,-1818,-1227,-613,-304,-282,-119, 575,1837,3381,4672,5243,4982,4091,2925,2123,2098, 2718,3719,4801,5496,5478,5195,5410,6317,7690,9237, 10470,11149,11646,12430,13482,14439,15081,15192,14565,13312, 11901,10649,9760,9349,9059,8473,7504,6276,4882,3246, 1350,-871,-3370,-5693,-7494,-8852,-9925,-10767,-11356,-11707, -12002,-12474,-13113,-13619,-13852,-13769,-13320,-12770,-12440,-12141, -11551,-10833,-10463,-10400,-10253,-9839,-9101,-7968,-6394,-4552, -2704,-1264,-570,-595,-1132,-1689,-1768,-1429,-1044,-859, -907,-1087,-1039,-259,1259,2910,4190,4933,4913,4086, 3027,2350,2282,2878,3900,4685,4753,4469,4457,4981, 6001,7183,8250,9048,9782,10668,11694,12922,14250,15202, 15395,14867,13877,12709,11757,11100,10535,9963,9318,8639, 7918,6892,5341,3365,1193,-1041,-3306,-5398,-7129,-8519, -9585,-10162,-10551,-11230,-12126,-12791,-13091,-13225,-13348,-13457, -13305,-12812,-12214,-11632,-11130,-10825,-10706,-10678,-10549,-10235, -9384,-7720,-5562,-3645,-2250,-1455,-1359,-1608,-1657,-1389, -1099,-968,-1054,-1411,-1804,-1726,-930,407,2080,3715, 4647,4503,3688,2819,2434,2748,3416,3876,3984,3935, 3900,4069,4633,5498,6426,7199,7820,8415,9265,10590, 12222,13771,14781,15017,14641,14107,13532,12723,11784,11038, 10460,10076,9792,9326,8387,6942,5272,3443,1291,-1248, -3733,-5693,-7043,-8093,-9144,-10134,-10955,-11689,-12300,-12771, -13277,-13771,-13900,-13735,-13492,-13084,-12361,-11641,-11277,-11260, -11470,-11776,-11722,-10800,-9068,-7035,-5092,-3640,-2898,-2568, -2233,-1809,-1431,-1133,-1014,-1232,-1758,-2368,-2634,-2004, -365,1662,3208,3826,3661,3135,2776,2824,3145,3498, 3699,3638,3472,3501,3831,4415,5249,6032,6393,6574, 7163,8336,9895,11578,13117,14208,14764,14947,14852,14398, 13588,12608,11859,11484,11123,10570,10012,9467,8656,7309, 5455,3149,644,-1611,-3481,-5219,-6811,-8079,-9054,-10033, -10958,-11657,-12328,-12982,-13498,-13853,-14108,-14041,-13477,-12625, -11850,-11395,-11507,-12126,-12696,-12643,-11758,-10153,-8236,-6528, -5228,-4234,-3528,-3002,-2389,-1630,-949,-697,-1141,-2151, -3083,-3228,-2402,-835,976,2306,2831,2857,2774,2769, 2938,3340,3716,3658,3280,3044,3215,3806,4546,5126, 5433,5507,5642,6260,7482,8971,10420,11880,13374,14499, 14979,14971,14642,14100,13515,12938,12207,11486,11143,11065, 10747,10001,8875,7295,5263,3067,845,-1329,-3294,-4924, -6354,-7684,-8831,-9777,-10595,-11299,-12038,-12872,-13675,-14183, -14197,-13610,-12601,-11692,-11440,-11839,-12503,-13054,-13083,-12425, -11176,-9482,-7709,-6389,-5627,-4992,-4100,-2948,-1664,-716, -641,-1464,-2571,-3352,-3454,-2760,-1409,133,1327,1859, 1940,2092,2529,3067,3463,3574,3320,2852,2703,3195, 3918,4393,4634,4752,4863,5065,5552,6339,7438,9020, 10884,12416,13408,14115,14627,14785,14590,14062,13285,12568, 12143,11928,11752,11490,11021,10188,8925,7216,5152,2985, 882,-1112,-3001,-4700,-6244,-7588,-8580,-9310,-10096,-11076, -12315,-13557,-14265,-14119,-13402,-12570,-11883,-11573,-11869,-12612, -13336,-13604,-13173,-11934,-10270,-8828,-7949,-7392,-6601,-5243, -3549,-2061,-1137,-991,-1708,-2856,-3645,-3667,-3040,-1952, -709,212,611,889,1520,2348,2968,3223,3099,2739, 2593,2849,3191,3490,3893,4304,4499,4467,4385,4566, 5238,6431,7908,9384,10834,12207,13318,14109,14528,14507, 14144,13590,12958,12453,12202,12105,11984,11695,11116,10099, 8698,6977,5014,3002,1001,-1060,-3181,-4977,-6161,-6982, -7836,-8873,-10234,-11738,-13032,-13782,-13891,-13438,-12658,-11898, -11544,-11887,-12857,-13726,-13850,-13242,-12229,-11107,-10094,-9465, -8992,-8046,-6382,-4430,-2670,-1506,-1331,-2079,-3060,-3632, -3591,-3005,-2173,-1505,-1058,-495,401,1366,2083,2525, 2726,2747,2731,2647,2620,2892,3421,3928,4227,4223, 4029,3952,4172,4648,5429,6579,8008,9544,11040,12367, 13372,14028,14342,14224,13767,13280,12871,12553,12468,12543, 12437,11898,11017,9968,8771,7250,5285,3019,653,-1496, -3155,-4308,-5242,-6315,-7622,-9027,-10617,-12298,-13471,-13670, -13084,-12311,-11721,-11591,-12139,-13051,-13655,-13662,-13207,-12469, -11696,-11182,-10888,-10398,-9342,-7658,-5463,-3364,-2222,-2165, -2706,-3232,-3345,-3184,-3009,-2851,-2523,-1908,-1092,-218, 637,1420,2057,2439,2496,2310,2259,2486,2875,3334, 3739,3936,3959,3920,3818,3800,4052,4623,5468,6662, 8193,9829,11287,12456,13401,14020,14169,13869,13398,13093, 13047,13031,12980,12771,12324,11776,11281,10576,9204,7165, 4904,2690,521,-1306,-2563,-3505,-4543,-5845,-7544,-9612, -11556,-12743,-13008,-12593,-11914,-11554,-11798,-12445,-13122,-13532, -13511,-13074,-12499,-12162,-12156,-12276,-11926,-10622,-8545,-6348, -4607,-3554,-3148,-3049,-3041,-3167,-3326,-3353,-3239,-3024, -2640,-1983,-1061,-31,935,1569,1795,1842,1917,2019, 2229,2632,3121,3475,3661,3734,3742,3670,3542,3523, 3850,4530,5507,6780,8321,9968,11435,12623,13448,13665, 13464,13371,13461,13401,13152,12952,12830,12698,12567,12332, 11737,10627,9027,6933,4505,2261,539,-675,-1560,-2546, -4090,-6209,-8535,-10530,-11754,-12077,-11858,-11498,-11359,-11733, -12536,-13286,-13463,-13037,-12465,-12263,-12614,-13179,-13290,-12623, -11324,-9651,-7783,-6079,-4765,-3886,-3452,-3335,-3261,-3197, -3294,-3503,-3579,-3306,-2645,-1729,-685,275,933,1261, 1355,1474,1760,2042,2306,2723,3215,3496,3600,3640, 3561,3337,3282,3509,3814,4291,5345,7050,8852,10380, 11574,12372,12897,13319,13551,13555,13427,13249,13076,12946, 12900,12939,12989,12813,12091,10666,8581,6175,3959,2393, 1429,541,-673,-2401,-4640,-7091,-9210,-10598,-11085,-10875, -10659,-11049,-11952,-12802,-13109,-12838,-12356,-12156,-12451,-13065, -13579,-13705,-13351,-12389,-10871,-9121,-7471,-6104,-5065,-4243, -3660,-3393,-3357,-3451,-3751,-4036,-3916,-3256,-2355,-1453, -535,209,580,767,1065,1335,1513,1900,2489,2966, 3214,3320,3410,3485,3453,3242,2951,2914,3400,4463, 5899,7479,8958,10226,11293,12153,12778,13232,13446,13392, 13248,13056,12827,12797,13139,13614,13796,13280,11885,9852, 7698,5812,4346,3327,2523,1431,-428,-3015,-5740,-7905, -9120,-9469,-9653,-10207,-11079,-11953,-12508,-12616,-12417,-12103, -11977,-12272,-12981,-13764,-14076,-13792,-13070,-11931,-10435,-8914, -7608,-6323,-5065,-4175,-3694,-3496,-3614,-4009,-4299,-4171, -3690,-3006,-2148,-1240,-421,108,341,461,739,1220, 1715,2129,2487,2840,3232,3590,3651,3411,3038,2671, 2530,2862,3676,4814,6167,7621,8988,10162,11168,12062, 12811,13324,13479,13187,12704,12506,12802,13402,14022,14331, 14019,12933,11148,9028,7163,5989,5408,4783,3434,1188, -1521,-3983,-5788,-7015,-7934,-8669,-9447,-10516,-11526,-12029, -12050,-11888,-11672,-11583,-12001,-12860,-13645,-14056,-14068,-13631, -12759,-11630,-10409,-9057,-7562,-6094,-4877,-4152,-3899,-3905, -4093,-4366,-4489,-4252,-3620,-2679,-1724,-1046,-659,-325, 68,418,763,1129,1478,1946,2563,3184,3562,3604, 3377,2961,2571,2377,2452,2926,3866,5118,6378,7517, 8679,9932,11237,12346,12986,13053,12768,12437,12270,12477, 13174,14120,14851,14838,13683,11727,9878,8695,8001,7372, 6482,4998,2745,231,-1949,-3723,-5182,-6386,-7501,-8751, -10043,-11068,-11614,-11713,-11575,-11434,-11513,-11959,-12740,-13586, -14107,-14239,-14104,-13736,-13031,-11972,-10566,-8941,-7427,-6117, -5011,-4307,-4177,-4459,-4793,-4901,-4637,-4018,-3265,-2550, -1914,-1310,-770,-344,-19,203,421,863,1544,2307, 2969,3437,3652,3534,3131,2611,2262,2311,2758,3436, 4238,5158,6262,7581,9126,10649,11843,12705,13154,12923, 12243,11927,12466,13577,14793,15549,15376,14215,12614,11279, 10411,9828,9217,8243,6649,4479,2181,116,-1583,-3117, -4678,-6239,-7782,-9237,-10353,-10988,-11198,-11135,-11119,-11370, -11894,-12481,-13085,-13696,-14229,-14492,-14378,-13958,-13190,-12059, -10614,-8919,-7213,-5876,-5104,-4848,-4956,-5146,-5159,-4929, -4561,-4075,-3430,-2657,-1878,-1279,-908,-714,-505,-178, 240,820,1670,2570,3222,3507,3383,2894,2494,2420, 2484,2518,2768,3402,4201,5031,6146,7715,9590,11292, 12399,12641,12178,11620,11600,12411,13734,14923,15531,15367, 14473,13311,12375,11821,11421,10799,9735,8187,6282,4281, 2401,680,-939,-2612,-4522,-6481,-8095,-9213,-9898,-10295, -10589,-10815,-11017,-11301,-11826,-12529,-13209,-13760,-14155,-14448, -14473,-14115,-13267,-11839,-10045,-8304,-6910,-6009,-5556,-5305, -5183,-5244,-5288,-5088,-4597,-3960,-3219,-2446,-1850,-1452, -1132,-947,-924,-641,197,1297,2178,2736,3031,3072, 2896,2603,2383,2371,2455,2615,2812,3054,3553,4671, 6520,8686,10513,11522,11674,11277,10929,11213,12196,13533, 14717,15265,15033,14402,13735,13215,12837,12478,11912,10894, 9412,7717,6060,4503,2954,1194,-825,-2929,-4882,-6573, -7914,-8865,-9518,-9953,-10236,-10533,-10922,-11391,-11933,-12497, -13080,-13700,-14390,-14927,-14871,-14095,-12856,-11341,-9700,-8234, -7118,-6280,-5750,-5633,-5694,-5616,-5375,-5116,-4717,-3981, -3017,-2262,-1926,-1852,-1787,-1571,-1126,-412,509,1433, 2193,2695,2796,2556,2315,2376,2597,2708,2531,2124, 1903,2306,3546,5471,7652,9479,10438,10491,10209,10193, 10757,11842,13114,14136,14637,14629,14248,13827,13663,13639, 13407,12742,11699,10454,9147,7832,6468,4893,3105,1156, -986,-3124,-5005,-6564,-7762,-8542,-9067,-9628,-10223,-10618, -10877,-11200,-11673,-12356,-13294,-14298,-14949,-15070,-14737,-13920, -12604,-10956,-9359,-8163,-7269,-6540,-6034,-5881,-5948,-5959, -5725,-5169,-4335,-3509,-2904,-2558,-2352,-2227,-2121,-1820, -1163,-170,943,1802,2157,2154,2130,2304,2657,2987, 2977,2441,1631,1098,1384,2687,4693,6800,8364,9182, 9425,9390,9549,10248,11433,12691,13646,14086,14079,14000, 14053,14147,14139,13923,13416,12561,11538,10509,9386,8090, 6744,5211,3260,1029,-1205,-3238,-4912,-6181,-7177,-8112, -9024,-9687,-9955,-10053,-10356,-10935,-11651,-12503,-13548,-14546, -15115,-15074,-14484,-13437,-12133,-10780,-9396,-8084,-7107,-6595, -6431,-6416,-6324,-6011,-5501,-4853,-4136,-3399,-2870,-2726, -2806,-2791,-2434,-1686,-629,394,1080,1391,1478,1658, 2205,2973,3425,3188,2282,1213,583,841,2042,3851, 5745,7252,8039,8229,8392,8927,9811,10932,12040,12834, 13260,13562,13866,14126,14294,14372,14297,13928,13278,12487, 11613,10673,9697,8620,7225,5285,2974,775,-1118,-2878, -4557,-5989,-7182,-8175,-8896,-9338,-9582,-9759,-10086,-10779, -11831,-13024,-14053,-14750,-15067,-14958,-14398,-13374,-11940,-10367, -9062,-8114,-7438,-7040,-6846,-6736,-6564,-6123,-5373,-4492, -3779,-3402,-3332,-3428,-3431,-3001,-2111,-1076,-266,174, 327,567,1247,2191,3051,3492,3239,2252,987,221, 416,1503,3123,4784,5983,6626,7017,7514,8238,9146, 10129,11094,11908,12507,13003,13489,13874,14133,14403,14548, 14273,13614,12933,12422,11913,11149,10055,8651,6965,5066, 3009,928,-1025,-2769,-4372,-5863,-7147,-8105,-8630,-8793, -8934,-9369,-10109,-11014,-12014,-13092,-14124,-14890,-15211,-14916, -14077,-12897,-11572,-10202,-9000,-8172,-7673,-7437,-7359,-7154, -6626,-5802,-4867,-4127,-3867,-4043,-4213,-3930,-3208,-2337, -1543,-1027,-833,-685,-198,756,1974,3062,3573,3229, 2122,856,172,365,1240,2461,3721,4702,5374,5970, 6701,7504,8294,9181,10159,11026,11669,12189,12782,13473, 14097,14412,14365,14118,13812,13483,13137,12734,12146,11282, 10136,8689,6944,5020,3085,1184,-775,-2747,-4548,-5997, -6965,-7570,-8034,-8413,-8756,-9229,-9986,-11012,-12196,-13398, -14394,-14988,-15126,-14748,-13834,-12540,-11207,-9955,-8912,-8343, -8222,-8186,-7818,-7022,-6027,-5133,-4631,-4589,-4769,-4738, -4245,-3445,-2612,-2007,-1751,-1797,-1726,-1052,273,1752, 2897,3374,2999,1990,939,395,485,1025,1820,2753, 3683,4466,5123,5769,6594,7604,8556,9327,9995,10692, 11491,12388,13231,13818,14128,14238,14192,14016,13806,13646, 13481,13156,12467,11388,10057,8677,7199,5420,3331,1178, -896,-2748,-4305,-5607,-6604,-7215,-7569,-7892,-8353,-8985, -9859,-11048,-12370,-13531,-14415,-14980,-15060,-14495,-13329,-11875, -10553,-9672,-9279,-9213,-8996,-8317,-7329,-6339,-5569,-5194, -5257,-5447,-5267,-4560,-3627,-2851,-2493,-2589,-2852,-2755, -1859,-332,1291,2427,2801,2580,1971,1214,597,399, 713,1352,2060,2721,3340,4028,4910,5895,6787,7533, 8192,8881,9693,10633,11575,12472,13269,13785,13909,13817, 13750,13850,13980,13934,13596,12975,12207,11346,10291,8914, 7251,5374,3272,1091,-934,-2713,-4238,-5495,-6349,-6809, -7134,-7556,-8125,-8908,-9949,-11171,-12483,-13802,-14874,-15316, -14852,-13725,-12439,-11331,-10595,-10325,-10206,-9760,-8858,-7696, -6647,-6007,-5844,-5965,-6022,-5644,-4752,-3696,-3040,-3058, -3446,-3664,-3370,-2455,-1031,482,1693,2368,2404,1915, 1271,804,664,809,1095,1438,1868,2525,3373,4260, 5099,5930,6702,7352,7948,8685,9651,10828,11972,12774, 13173,13375,13553,13781,13958,14054,14099,13953,13573,13010, 12377,11549,10405,8986,7318,5397,3258,1099,-905,-2731, -4187,-5157,-5849,-6463,-6977,-7400,-7906,-8752,-10033,-11647, -13325,-14705,-15367,-15117,-14185,-13058,-12195,-11758,-11544,-11294, -10719,-9652,-8311,-7258,-6816,-6859,-6988,-6755,-5980,-4968, -4121,-3706,-3733,-4044,-4309,-4121,-3293,-1946,-352,1000, 1764,1847,1511,1253,961,741,601,631,827,1224, 1775,2504,3388,4373,5231,5803,6235,6856,7779,8897, 10040,11135,12029,12621,13022,13398,13726,13945,14133,14279, 14278,14080,13780,13331,12624,11700,10601,9238,7447,5315, 3064,900,-1014,-2681,-4081,-5135,-5875,-6359,-6648,-6928, -7596,-8953,-10791,-12696,-14230,-15055,-15049,-14380,-13543,-12974, -12825,-12831,-12490,-11539,-10227,-9032,-8256,-7947,-7922,-7796, -7336,-6566,-5623,-4755,-4275,-4313,-4756,-5098,-4955,-4163, -2868,-1451,-233,647,1151,1339,1234,989,800,703, 572,430,550,1120,1953,2851,3685,4354,4846,5344, 6027,6934,7979,9116,10222,11155,11876,12511,13065,13475, 13738,13991,14272,14469,14453,14208,13859,13475,12922,12082, 10920,9355,7380,5222,3141,1108,-869,-2665,-4080,-4978, -5373,-5492,-5691,-6311,-7559,-9458,-11602,-13308,-14149,-14187, -13835,-13525,-13517,-13661,-13568,-12980,-11948,-10763,-9759,-9104, -8787,-8679,-8489,-7950,-7052,-5994,-5106,-4741,-4917,-5290, -5501,-5360,-4837,-3863,-2513,-1210,-286,330,761,997, 1052,944,645,251,17,148,642,1346,2143,2877, 3446,3882,4387,5094,5985,6964,7967,9016,10095,11018, 11700,12256,12788,13235,13620,13963,14230,14298,14219,14097, 13948,13647,13043,12049,10726,9179,7417,5401,3204,954, -1158,-2893,-4004,-4434,-4402,-4430,-5035,-6462,-8487,-10556, -12065,-12846,-13146,-13330,-13588,-13902,-14137,-14048,-13478,-12527, -11400,-10382,-9793,-9691,-9663,-9236,-8395,-7408,-6447,-5655, -5222,-5251,-5569,-5847,-5827,-5368,-4477,-3390,-2359,-1409, -522,253,791,1005,896,565,149,-161,-103,350, 976,1564,2103,2634,3152,3655,4268,5033,5935,6958, 8045,9084,10011,10805,11480,12129,12772,13286,13600,13799, 13991,14190,14295,14254,14051,13635,12950,12020,10831,9370, 7588,5436,2946,383,-1713,-2881,-3158,-3067,-3223,-4040, -5577,-7464,-9184,-10496,-11432,-12096,-12623,-13176,-13856,-14400, -14383,-13739,-12766,-11789,-11047,-10656,-10489,-10275,-9822,-9042, -8000,-6910,-6044,-5643,-5676,-5922,-6072,-5992,-5678,-5127, -4334,-3388,-2415,-1405,-357,469,825,759,440,98, -103,-83,182,621,1117,1613,2099,2580,3036,3522, 4176,5093,6157,7190,8116,8989,9880,10794,11598,12246, 12741,13119,13452,13793,14106,14318,14438,14368,14023,13516, 12952,12322,11379,9844,7586,4784,1983,-100,-1174,-1574, -1788,-2189,-3072,-4500,-6226,-7834,-9031,-9896,-10692,-11623, -12702,-13686,-14263,-14290,-13828,-13057,-12256,-11605,-11246,-11177, -11080,-10578,-9632,-8499,-7440,-6642,-6200,-6120,-6203,-6236, -6157,-5981,-5713,-5253,-4508,-3477,-2255,-1091,-170,339, 403,215,-9,-156,-196,-93,197,669,1149,1532, 1845,2229,2746,3425,4252,5143,6045,6981,7942,8908, 9821,10712,11497,12048,12441,12857,13344,13829,14243,14439, 14270,13887,13671,13759,13755,13116,11599,9259,6464,3761, 1657,384,-179,-509,-1102,-2183,-3655,-5182,-6447,-7452, -8400,-9488,-10723,-11973,-13144,-13988,-14223,-13859,-13184,-12532, -12094,-11933,-11904,-11751,-11236,-10278,-9103,-8064,-7318,-6859, -6576,-6406,-6317,-6290,-6303,-6269,-6032,-5419,-4381,-3109, -1921,-976,-304,51,69,-98,-294,-384,-248,85, 444,732,994,1316,1692,2144,2755,3490,4256,5061, 5970,6947,7928,8947,9926,10696,11174,11599,12227,13068, 13800,14131,14042,13794,13714,13964,14423,14737,14439,13192, 11012,8260,5568,3540,2323,1573,845,-83,-1235,-2520, -3825,-4997,-5977,-6906,-8033,-9432,-10997,-12406,-13374,-13770, -13595,-13095,-12633,-12425,-12446,-12479,-12288,-11754,-10908,-9864, -8868,-8110,-7547,-7033,-6588,-6375,-6438,-6610,-6714,-6570, -6044,-5188,-4123,-2943,-1764,-875,-422,-305,-345,-449, -485,-345,-88,164,385,626,901,1194,1591,2143, 2788,3424,4076,4889,5965,7176,8220,8985,9554,10132, 10896,11866,12812,13439,13665,13562,13382,13386,13864,14786, 15558,15508,14369,12356,9924,7571,5626,4216,3214,2251, 1123,-135,-1422,-2592,-3585,-4471,-5415,-6581,-8115,-9851, -11424,-12512,-13008,-13057,-12845,-12638,-12635,-12783,-12833,-12637, -12168,-11487,-10671,-9833,-8974,-8120,-7388,-6922,-6714,-6678, -6782,-6978,-7016,-6726,-6058,-5062,-3836,-2614,-1665,-1082, -788,-676,-656,-657,-554,-302,-27,119,200,390, 773,1235,1640,1978,2374,3036,4058,5237,6280,7098, 7747,8367,9093,10026,11181,12318,13013,13077,12779,12598, 12887,13723,14830,15726,15919,15144,13510,11438,9361,7554, 6074,4833,3690,2434,1022,-283,-1304,-2138,-2945,-3895, -5160,-6814,-8632,-10253,-11406,-12045,-12277,-12371,-12558,-12774, -12857,-12819,-12729,-12512,-12083,-11435,-10614,-9695,-8769,-7936, -7311,-6927,-6765,-6832,-7082,-7305,-7202,-6657,-5776,-4697, -3515,-2423,-1650,-1251,-1082,-969,-782,-552,-382,-340, -282,-58,354,737,929,1015,1211,1640,2366,3375, 4516,5515,6175,6609,7138,8037,9349,10775,11860,12401, 12404,12125,12035,12493,13491,14706,15721,16161,15745,14499, 12797,11046,9430,7979,6605,5194,3707,2263,1013,13, -744,-1439,-2367,-3772,-5538,-7318,-8832,-9992,-10844,-11451, -11899,-12245,-12510,-12673,-12748,-12763,-12731,-12502,-12008,-11331, -10517,-9573,-8592,-7735,-7189,-6990,-7074,-7300,-7538,-7591, -7307,-6592,-5506,-4313,-3306,-2611,-2114,-1637,-1205,-957, -913,-882,-765,-536,-212,136,409,504,426,405, 781,1665,2802,3835,4563,4975,5280,5867,7022,8550, 10027,11111,11595,11566,11337,11337,11862,12913,14220,15390, 15987,15823,15025,13836,12448,11033,9664,8243,6632,4912, 3333,2129,1328,667,-122,-1191,-2601,-4248,-5920,-7418, -8712,-9813,-10693,-11343,-11890,-12367,-12705,-12915,-13019,-13048, -13028,-12844,-12365,-11593,-10564,-9481,-8556,-7851,-7394,-7301, -7620,-8052,-8210,-7889,-7179,-6303,-5383,-4480,-3601,-2793, -2149,-1681,-1377,-1261,-1256,-1125,-732,-234,155,289, 126,-136,-169,328,1319,2428,3294,3787,4007,4322, 5063,6322,7933,9523,10678,11154,11068,10877,10998,11650, 12741,14060,15281,16069,16212,15763,14986,14090,13033,11736, 10167,8369,6517,4944,3797,2968,2205,1304,180,-1144, -2666,-4287,-5856,-7268,-8504,-9548,-10436,-11205,-11788,-12157, -12417,-12700,-13013,-13178,-13107,-12836,-12323,-11487,-10340,-9108, -8130,-7677,-7687,-7906,-8172,-8305,-8171,-7716,-7062,-6314, -5483,-4529,-3575,-2758,-2176,-1912,-1878,-1814,-1460,-837, -222,86,-29,-411,-703,-575,38,944,1902,2607, 2925,2998,3232,4012,5403,7107,8644,9760,10307,10336, 10178,10284,10944,12088,13428,14612,15412,15764,15751,15538, 15142,14386,13173,11576,9775,8012,6476,5260,4321,3470, 2588,1540,239,-1249,-2757,-4239,-5705,-7145,-8457,-9526, -10323,-10983,-11578,-12053,-12387,-12651,-12995,-13352,-13429,-13070, -12271,-11102,-9820,-8809,-8249,-8110,-8200,-8348,-8444,-8387, -8169,-7815,-7238,-6409,-5367,-4260,-3362,-2883,-2738,-2665, -2356,-1727,-967,-408,-226,-422,-828,-1131,-978,-302, 641,1443,1889,2005,2021,2264,2996,4352,6062,7689, 8831,9368,9418,9323,9540,10281,11404,12585,13624,14430, 15029,15483,15781,15731,15198,14190,12807,11162,9428,7861, 6615,5642,4760,3785,2661,1498,275,-1153,-2744,-4300, -5733,-7047,-8278,-9348,-10194,-10837,-11293,-11680,-12156,-12764, -13335,-13647,-13495,-12810,-11749,-10550,-9523,-8860,-8544,-8434, -8398,-8399,-8451,-8538,-8478,-8035,-7102,-5932,-4897,-4183, -3774,-3568,-3324,-2833,-2035,-1134,-533,-471,-823,-1228, -1396,-1131,-449,400,1061,1361,1357,1260,1391,2120, 3470,5152,6749,7890,8413,8520,8611,8995,9710,10625, 11601,12567,13484,14352,15098,15656,15963,15855,15150,13854, 12335,10869,9466,8132,6960,5956,5037,4073,2987,1733, 346,-1103,-2586,-4072,-5562,-6975,-8177,-9118,-9782,-10294, -10820,-11470,-12290,-13082,-13597,-13645,-13145,-12217,-11193,-10324, -9621,-9020,-8535,-8304,-8419,-8727,-8958,-8921,-8489,-7635, -6518,-5512,-4910,-4655,-4446,-4042,-3301,-2313,-1377,-853, -830,-1156,-1533,-1645,-1313,-625,145,706,890,714, 476,588,1343,2667,4243,5655,6655,7292,7722,8051, 8400,8955,9768,10666,11502,12363,13374,14455,15383,15923, 15993,15581,14734,13553,12170,10749,9419,8243,7232,6277, 5280,4209,3061,1825,501,-942,-2526,-4149,-5684,-6980, -7987,-8715,-9283,-9882,-10748,-11811,-12783,-13368,-13483,-13264, -12820,-12133,-11251,-10333,-9477,-8790,-8479,-8608,-9006,-9371, -9390,-8897,-7992,-7005,-6254,-5848,-5628,-5351,-4799,-3874, -2776,-1820,-1284,-1241,-1565,-1914,-1961,-1543,-765,48, 479,384,25,-170,47,733,1855,3242,4590,5638, 6366,6893,7409,7942,8464,8998,9626,10397,11376,12538, 13727,14793,15575,15974,15934,15420,14492,13280,11994,10764, 9633,8540,7464,6418,5400,4385,3307,2064,667,-905, -2682,-4405,-5750,-6646,-7329,-8054,-8921,-9927,-10994,-11932, -12618,-13037,-13196,-13054,-12606,-11844,-10781,-9654,-8796,-8447, -8596,-9030,-9364,-9299,-8755,-7905,-7092,-6528,-6268,-6106, -5763,-5076,-4097,-2943,-1877,-1259,-1275,-1684,-1998,-1846, -1237,-486,133,421,310,-41,-303,-181,425,1418, 2578,3687,4675,5540,6333,7025,7557,7967,8362,8849, 9552,10488,11604,12817,14026,15078,15789,15999,15722,15091, 14223,13148,11959,10821,9772,8649,7476,6435,5596,4765, 3703,2254,463,-1358,-2965,-4251,-5254,-6113,-6987,-7952, -9023,-10044,-10969,-11799,-12524,-13098,-13372,-13179,-12434,-11294, -10106,-9195,-8818,-9002,-9411,-9621,-9429,-8899,-8208,-7540, -7085,-6928,-6922,-6687,-5928,-4722,-3439,-2448,-1959,-1949, -2201,-2359,-2143,-1510,-696,-68,117,-95,-440,-633, -489,-1,716,1575,2539,3580,4625,5569,6327,6872, 7295,7695,8110,8597,9350,10483,11797,13092,14270,15214, 15747,15780,15404,14793,14056,13183,12111,10862,9603,8521, 7676,6971,6192,5147,3727,2006,234,-1334,-2620,-3697, -4732,-5812,-6879,-7862,-8792,-9729,-10723,-11760,-12735,-13404, -13429,-12744,-11594,-10442,-9634,-9278,-9322,-9607,-9805,-9608, -9011,-8260,-7711,-7541,-7637,-7679,-7367,-6537,-5328,-4046, -3038,-2563,-2540,-2704,-2727,-2360,-1641,-874,-359,-217, -378,-613,-701,-625,-406,23,731,1648,2631,3643, 4670,5583,6244,6677,6991,7329,7782,8412,9335,10605, 12074,13471,14536,15163,15452,15513,15367,14951,14190,13086, 11835,10635,9641,8892,8284,7530,6453,5055,3488,1897, 377,-990,-2230,-3431,-4630,-5721,-6596,-7364,-8282,-9508, -10926,-12211,-13057,-13281,-12846,-11894,-10804,-9979,-9668,-9773, -9992,-9998,-9633,-8991,-8356,-7998,-7977,-8179,-8303,-8006, -7163,-5916,-4673,-3769,-3317,-3273,-3311,-3085,-2559,-1928, -1324,-828,-548,-522,-686,-870,-912,-783,-502,-26, 674,1610,2704,3748,4670,5457,6031,6376,6579,6800, 7316,8226,9465,10875,12195,13300,14154,14795,15241,15463, 15319,14701,13680,12506,11451,10603,9917,9270,8531,7497, 6178,4766,3386,2018,554,-957,-2372,-3543,-4462,-5240, -6053,-7047,-8356,-9912,-11476,-12652,-13126,-12830,-12004,-11097, -10491,-10276,-10345,-10455,-10292,-9755,-9064,-8501,-8260,-8393, -8746,-8940,-8595,-7653,-6458,-5397,-4653,-4224,-3971,-3764, -3486,-3032,-2405,-1751,-1254,-936,-781,-762,-870,-1050, -1139,-1011,-629,-35,721,1631,2733,3880,4828,5440, 5713,5842,6060,6528,7369,8517,9752,10933,12066,13186, 14227,15049,15543,15607,15173,14318,13295,12372,11690,11101, 10396,9517,8520,7486,6362,5097,3668,2084,438,-1032, -2233,-3138,-3832,-4541,-5572,-7025,-8778,-10508,-11868,-12515, -12382,-11820,-11223,-10882,-10837,-10958,-11003,-10704,-10020,-9194, -8647,-8629,-8980,-9338,-9380,-8980,-8215,-7205,-6209,-5472, -5023,-4710,-4384,-3964,-3482,-2945,-2371,-1759,-1238,-934, -888,-1028,-1170,-1250,-1258,-1129,-781,-142,771,1909, 3145,4196,4807,5071,5234,5529,6039,6778,7686,8731, 9848,10981,12211,13541,14752,15540,15750,15459,14863,14181, 13534,12875,12137,11352,10550,9731,8858,7908,6775,5326, 3623,1893,308,-949,-1786,-2359,-3035,-4150,-5775,-7686, -9556,-11033,-11860,-12008,-11669,-11277,-11203,-11427,-11638,-11489, -10924,-10139,-9407,-9006,-8985,-9283,-9646,-9747,-9417,-8691, -7827,-7029,-6366,-5807,-5330,-4948,-4612,-4167,-3566,-2903, -2259,-1710,-1317,-1126,-1091,-1165,-1291,-1451,-1570,-1454, -924,18,1179,2320,3297,3990,4379,4617,4972,5502, 6138,6834,7572,8454,9630,11124,12688,14008,14936,15392, 15442,15190,14799,14311,13695,12946,12173,11428,10746,10102, 9356,8343,6920,5129,3233,1616,456,-311,-883,-1568, -2627,-4273,-6358,-8426,-9968,-10793,-11036,-11056,-11161,-11418, -11734,-11899,-11715,-11131,-10301,-9542,-9166,-9242,-9523,-9749, -9801,-9608,-9137,-8441,-7676,-6989,-6424,-5980,-5598,-5214, -4754,-4169,-3485,-2851,-2332,-1840,-1389,-1120,-1132,-1373, -1715,-1969,-1956,-1522,-694,399,1518,2419,3034,3500, 4006,4533,5015,5451,5876,6400,7219,8411,9886,11453, 12833,13881,14618,15040,15154,15018,14692,14169,13456,12648, 11966,11508,11123,10568,9620,8203,6452,4563,2859,1636, 978,599,9,-1177,-2983,-5085,-7042,-8560,-9523,-10031, -10337,-10765,-11380,-11930,-12120,-11852,-11248,-10522,-9918,-9548, -9461,-9632,-9862,-9965,-9881,-9561,-8994,-8271,-7595,-7109, -6727,-6305,-5820,-5307,-4784,-4250,-3692,-3024,-2312,-1706, -1284,-1158,-1391,-1878,-2306,-2373,-1966,-1214,-298,602, 1393,2085,2757,3437,4046,4468,4720,4978,5447,6192, 7256,8609,10084,11510,12720,13675,14425,14972,15186,14977, 14444,13750,13098,12576,12213,11963,11626,10908,9582,7697, 5688,4056,3010,2435,2042,1398,207,-1570,-3646,-5572, -7021,-7990,-8714,-9421,-10193,-10991,-11653,-11968,-11809,-11319, -10737,-10186,-9759,-9577,-9653,-9868,-10042,-10000,-9697,-9218, -8692,-8188,-7695,-7206,-6747,-6295,-5810,-5348,-4899,-4397, -3713,-2864,-1991,-1389,-1220,-1476,-1971,-2412,-2490,-2168, -1602,-965,-298,463,1299,2145,2900,3497,3916,4159, 4316,4638,5316,6337,7537,8804,10071,11361,12671,13798, 14600,15028,15071,14723,14075,13375,12942,12856,12927,12764, 12063,10732,8931,6996,5364,4366,3913,3548,2809,1518, -221,-2140,-3905,-5296,-6374,-7358,-8375,-9400,-10370,-11147, -11616,-11726,-11469,-10936,-10337,-9926,-9772,-9820,-9950,-10055, -10047,-9873,-9531,-9113,-8680,-8242,-7749,-7213,-6720,-6338, -6017,-5689,-5201,-4437,-3420,-2393,-1694,-1508,-1735,-2077, -2355,-2474,-2393,-2095,-1647,-1083,-398,463,1424,2306, 2947,3255,3412,3657,4063,4611,5349,6302,7447,8695, 10002,11338,12724,13970,14748,14903,14573,14005,13473,13206, 13296,13578,13609,12982,11670,9895,8067,6625,5739,5252, 4779,3979,2703,1065,-630,-2203,-3612,-4896,-6084,-7227, -8395,-9548,-10552,-11240,-11512,-11411,-11046,-10579,-10202,-10029, -10029,-10086,-10118,-10086,-9997,-9829,-9570,-9230,-8783,-8221, -7607,-7127,-6907,-6828,-6578,-5966,-5063,-4016,-3044,-2350, -2007,-1990,-2201,-2423,-2511,-2519,-2492,-2343,-1907,-1157, -205,729,1519,2138,2599,2913,3116,3411,3941,4612, 5332,6165,7223,8526,10035,11661,13178,14226,14575,14297, 13743,13342,13317,13683,14135,14264,13732,12454,10783,9199, 7982,7172,6563,5903,5053,3931,2531,972,-549,-1930, -3215,-4488,-5773,-7087,-8407,-9615,-10533,-11024,-11099,-10904, -10619,-10339,-10151,-10106,-10109,-10053,-9978,-9973,-10017,-9964, -9635,-9031,-8357,-7847,-7589,-7496,-7406,-7167,-6619,-5720, -4656,-3679,-2960,-2536,-2313,-2181,-2200,-2411,-2686,-2804, -2684,-2342,-1755,-897,60,891,1498,1948,2303,2641, 3049,3495,3969,4469,5035,5841,7062,8687,10518,12226, 13428,13920,13771,13365,13135,13385,14017,14601,14719,14186, 13124,11744,10379,9255,8404,7714,7014,6145,5065,3819, 2437,1007,-337,-1584,-2867,-4271,-5739,-7174,-8517,-9621, -10349,-10636,-10613,-10496,-10414,-10336,-10152,-9923,-9816,-9904, -10095,-10226,-10137,-9771,-9207,-8587,-8111,-7912,-7949,-7990, -7709,-7069,-6264,-5414,-4555,-3711,-3025,-2563,-2320,-2284, -2423,-2696,-2965,-3052,-2820,-2274,-1500,-653,132,732, 1204,1654,2145,2648,3100,3408,3625,3929,4532,5631, 7311,9347,11217,12473,12963,12921,12782,12896,13335,14002, 14608,14821,14450,13595,12507,11353,10306,9445,8739,8014, 7143,6098,4925,3689,2460,1212,-49,-1310,-2682,-4252, -5908,-7388,-8524,-9331,-9900,-10294,-10505,-10497,-10304,-10062, -9879,-9810,-9912,-10191,-10453,-10399,-9933,-9288,-8755,-8472, -8387,-8384,-8327,-8099,-7648,-6981,-6200,-5360,-4508,-3697, -3018,-2557,-2388,-2511,-2792,-3093,-3279,-3161,-2686,-2010, -1304,-654,-81,450,1004,1632,2286,2789,2985,2901, 2843,3275,4399,6133,8149,9986,11235,11803,11949,12080, 12448,13090,13858,14516,14832,14680,14049,13120,12162,11315, 10527,9764,8994,8172,7195,6068,4869,3726,2693,1634, 343,-1202,-2853,-4419,-5862,-7158,-8249,-9094,-9752,-10209, -10375,-10212,-9870,-9649,-9733,-10033,-10355,-10506,-10380,-9993, -9476,-9017,-8737,-8633,-8631,-8604,-8442,-8104,-7603,-6954, -6178,-5327,-4421,-3551,-2887,-2578,-2626,-2910,-3220,-3401, -3355,-3034,-2471,-1869,-1375,-954,-421,347,1245,2059, 2539,2541,2207,1977,2296,3379,5098,7023,8711,9946, 10690,11079,11375,11883,12696,13624,14380,14756,14725,14345, 13709,12919,12098,11394,10792,10104,9180,8097,7029,6047, 5110,4128,3071,1836,348,-1286,-2878,-4299,-5607,-6919, -8172,-9185,-9787,-9959,-9827,-9632,-9576,-9732,-10060,-10381, -10512,-10401,-10081,-9668,-9281,-9058,-8982,-8980,-8963,-8857, -8636,-8304,-7832,-7148,-6251,-5245,-4295,-3495,-2995,-2902, -3128,-3436,-3592,-3494,-3173,-2792,-2469,-2204,-1851,-1222, -246,907,1851,2232,2053,1646,1389,1644,2578,4097, 5886,7560,8807,9586,10140,10697,11398,12250,13183,14104, 14787,15000,14731,14196,13626,13105,12557,11910,11158,10263, 9228,8191,7261,6438,5583,4536,3245,1806,342,-1101, -2566,-4117,-5695,-7209,-8425,-9169,-9471,-9501,-9478,-9554, -9770,-10087,-10394,-10575,-10520,-10241,-9905,-9605,-9353,-9160, -9066,-9053,-9064,-8995,-8816,-8461,-7904,-7100,-6073,-4968, -4042,-3496,-3324,-3435,-3608,-3630,-3415,-3142,-3010,-3055, -3055,-2722,-1925,-769,447,1381,1795,1657,1172,795, 977,1857,3213,4733,6186,7464,8457,9129,9706,10453, 11448,12575,13576,14313,14698,14712,14434,14011,13634,13258, 12727,11941,10993,10057,9204,8424,7627,6691,5609,4439, 3236,2009,668,-841,-2542,-4330,-5984,-7321,-8271,-8787, -8976,-9087,-9323,-9679,-10048,-10340,-10512,-10538,-10425,-10187, -9875,-9595,-9380,-9237,-9160,-9185,-9274,-9283,-9123,-8702, -7936,-6862,-5706,-4752,-4198,-4043,-4024,-3880,-3592,-3327, -3252,-3398,-3619,-3718,-3481,-2696,-1447,-106,854,1192, 1047,698,419,454,1037,2163,3574,4974,6133,7053, 7829,8574,9404,10431,11598,12735,13584,14066,14260,14292, 14253,14105,13776,13214,12482,11678,10914,10234,9508,8620, 7613,6610,5630,4641,3582,2377,906,-850,-2738,-4546, -6033,-7076,-7745,-8208,-8559,-8878,-9263,-9698,-10058,-10267, -10358,-10346,-10220,-10000,-9717,-9437,-9201,-9073,-9097,-9288, -9544,-9634,-9297,-8463,-7353,-6294,-5514,-5021,-4668,-4377, -4044,-3594,-3202,-3159,-3514,-4036,-4289,-4014,-3189,-1996, -753,240,739,705,355,46,60,510,1416,2632, 3886,4997,5879,6617,7413,8404,9554,10739,11807,12679, 13334,13815,14209,14460,14432,14099,13566,12963,12359,11772, 11123,10387,9534,8568,7570,6691,5929,5111,4013,2585, 859,-1024,-2856,-4446,-5685,-6580,-7226,-7748,-8227,-8681, -9132,-9569,-9904,-10107,-10179,-10158,-10066,-9860,-9462,-9004, -8778,-8969,-9415,-9787,-9879,-9567,-8845,-7866,-6911,-6214, -5801,-5449,-4899,-4167,-3505,-3149,-3205,-3629,-4192,-4565, -4457,-3753,-2602,-1343,-346,196,289,60,-256,-339, 25,798,1823,2918,3864,4626,5381,6295,7406,8597, 9696,10678,11569,12458,13290,13917,14274,14372,14212,13833, 13381,12957,12527,11966,11197,10268,9315,8452,7716,7066, 6352,5394,4081,2436,603,-1237,-2906,-4312,-5444,-6304, -6960,-7566,-8215,-8776,-9168,-9484,-9849,-10232,-10434,-10336, -9959,-9467,-9031,-8829,-8993,-9500,-10048,-10214,-9874,-9175, -8392,-7731,-7239,-6793,-6240,-5514,-4646,-3816,-3334,-3380, -3853,-4470,-4893,-4887,-4343,-3335,-2126,-1065,-400,-217, -418,-702,-763,-431,277,1123,1905,2625,3395,4271, 5239,6273,7351,8428,9438,10428,11436,12453,13334,13889, 14087,14058,13907,13705,13441,13070,12547,11812,10921,9979, 9170,8579,8055,7403,6538,5421,4002,2280,402,-1348, -2801,-4011,-5098,-6083,-6878,-7468,-7965,-8464,-8968,-9511, -10050,-10419,-10419,-10029,-9417,-8895,-8767,-9082,-9614,-10045, -10171,-9923,-9396,-8837,-8413,-8073,-7669,-7040,-6155,-5116, -4164,-3587,-3514,-3915,-4536,-5050,-5177,-4791,-3913,-2729, -1623,-946,-781,-892,-994,-913,-602,-134,455,1094, 1740,2460,3325,4300,5286,6243,7186,8207,9329,10527, 11666,12611,13291,13689,13838,13890,13949,13943,13696,13155, 12432,11645,10847,10072,9411,8938,8513,7858,6807,5422, 3851,2211,566,-1039,-2518,-3822,-4935,-5829,-6510,-7019, -7522,-8205,-9048,-9818,-10270,-10262,-9851,-9272,-8851,-8799, -9110,-9575,-9926,-10000,-9790,-9459,-9158,-8948,-8774,-8441, -7768,-6785,-5672,-4645,-3906,-3641,-3914,-4564,-5227,-5461, -5092,-4250,-3221,-2285,-1643,-1347,-1288,-1251,-1115,-845, -489,-106,335,932,1693,2528,3376,4227,5096,6001, 7009,8183,9495,10753,11760,12465,13004,13474,13829,14011, 14062,13994,13690,13083,12260,11400,10713,10224,9833,9383, 8763,7889,6725,5337,3848,2305,692,-986,-2560,-3841, -4746,-5366,-5912,-6609,-7533,-8574,-9498,-9998,-10000,-9637, -9184,-8907,-8937,-9225,-9596,-9828,-9819,-9656,-9516,-9475, -9463,-9370,-9117,-8600,-7689,-6451,-5191,-4257,-3909,-4176, -4788,-5369,-5609,-5353,-4659,-3781,-2973,-2397,-2018,-1735, -1505,-1331,-1177,-975,-681,-276,251,940,1742,2509, 3166,3853,4761,5881,7112,8354,9543,10628,11539,12255, 12818,13337,13822,14157,14208,13952,13439,12731,11974,11341, 10893,10540,10127,9544,8763,7828,6748,5491,3997,2293, 474,-1223,-2568,-3469,-4113,-4771,-5660,-6804,-8010,-9016, -9604,-9672,-9375,-9081,-9002,-9129,-9330,-9510,-9631,-9658, -9583,-9496,-9511,-9672,-9873,-9854,-9380,-8437,-7152,-5824, -4783,-4300,-4438,-4965,-5468,-5645,-5446,-4977,-4352,-3669, -3041,-2562,-2186,-1841,-1574,-1467,-1413,-1228,-812,-199, 463,1045,1592,2207,2939,3761,4757,5947,7243,8487, 9585,10524,11329,12077,12824,13529,14078,14322,14178,13727, 13140,12544,12034,11622,11217,10748,10215,9620,8967,8182, 7100,5619,3828,1967,273,-1083,-2033,-2715,-3478,-4581, -5934,-7278,-8312,-8888,-9090,-9080,-8999,-8979,-9093,-9309, -9516,-9577,-9470,-9315,-9281,-9448,-9818,-10214,-10394,-10093, -9154,-7800,-6445,-5437,-4905,-4828,-5100,-5481,-5677,-5573, -5247,-4807,-4325,-3758,-3090,-2495,-2128,-1992,-1915,-1783, -1540,-1164,-662,-108,441,933,1401,1966,2742,3716, 4861,6111,7333,8428,9376,10268,11179,12142,13077,13805, 14185,14181,13873,13455,13075,12687,12214,11676,11174,10753, 10402,10022,9460,8527,7114,5296,3382,1724,512,-388, -1244,-2276,-3517,-4912,-6271,-7396,-8155,-8516,-8607,-8679, -8856,-9087,-9314,-9482,-9505,-9317,-9029,-8945,-9252,-9855, -10468,-10775,-10543,-9785,-8626,-7313,-6240,-5644,-5473,-5514, -5610,-5720,-5796,-5740,-5466,-4953,-4312,-3676,-3126,-2722, -2489,-2366,-2226,-1984,-1616,-1146,-630,-156,243,633, 1094,1762,2725,3870,5065,6225,7281,8238,9206,10305, 11499,12600,13428,13932,14146,14147,13983,13706,13336,12851, 12262,11700,11310,11164,11085,10744,9845,8391,6642,4907, 3393,2144,1126,179,-934,-2314,-3812,-5234,-6444,-7345, -7891,-8161,-8349,-8646,-9103,-9517,-9655,-9493,-9174,-8906, -8864,-9193,-9885,-10692,-11198,-11084,-10358,-9288,-8192,-7226, -6474,-5983,-5779,-5774,-5911,-6049,-6068,-5865,-5447,-4856, -4221,-3668,-3260,-2991,-2815,-2660,-2410,-2021,-1551,-1079, -666,-328,-46,312,920,1826,2925,4012,4990,5947, 6965,8100,9315,10551,11716,12686,13371,13798,14061,14213, 14190,13856,13206,12499,12012,11861,11896,11909,11642,10875, 9586,7974,6366,4964,3780,2718,1640,473,-895,-2468, -4058,-5393,-6322,-6922,-7376,-7843,-8385,-8956,-9427,-9641, -9467,-9012,-8616,-8608,-9078,-9854,-10645,-11151,-11208,-10801, -10031,-9055,-8061,-7183,-6504,-6115,-6014,-6092,-6207,-6258, -6145,-5816,-5285,-4687,-4147,-3738,-3443,-3249,-3068,-2806, -2387,-1862,-1408,-1117,-944,-726,-334,272,1075,1975, 2899,3833,4737,5719,6863,8197,9539,10674,11585,12419, 13230,13914,14325,14369,14014,13396,12728,12286,12236,12442, 12581,12353,11660,10568,9212,7745,6383,5247,4274,3252, 1998,505,-1108,-2691,-4072,-5112,-5831,-6402,-7046,-7843, -8680,-9295,-9446,-9173,-8722,-8393,-8412,-8845,-9566,-10319, -10903,-11197,-11095,-10574,-9758,-8809,-7878,-7113,-6576,-6330, -6331,-6436,-6486,-6400,-6152,-5715,-5138,-4579,-4176,-3960, -3799,-3564,-3169,-2664,-2202,-1859,-1615,-1420,-1233,-912, -334,425,1196,1889,2590,3485,4590,5820,7052,8230, 9339,10382,11401,12484,13503,14178,14310,13970,13399,12894, 12612,12565,12739,12964,12940,12437,11457,10219,8943,7782, 6762,5802,4762,3523,2025,334,-1309,-2668,-3678,-4475, -5253,-6188,-7256,-8253,-8901,-9074,-8870,-8514,-8227,-8198, -8498,-9108,-9866,-10560,-11024,-11185,-10967,-10348,-9469,-8544, -7722,-7097,-6722,-6588,-6623,-6721,-6715,-6439,-5947,-5434, -5025,-4721,-4470,-4232,-3957,-3550,-3030,-2535,-2222,-2105, -2001,-1721,-1279,-750,-203,327,880,1537,2396,3508, 4737,5890,6887,7867,9028,10379,11738,12911,13730,14065, 13913,13460,12979,12728,12800,13077,13327,13331,12970,12215, 11138,9978,8948,8083,7256,6256,4954,3344,1640,91, -1155,-2154,-3096,-4160,-5346,-6551,-7635,-8404,-8736,-8677, -8417,-8165,-8081,-8266,-8737,-9424,-10192,-10862,-11222,-11188, -10821,-10180,-9326,-8402,-7645,-7203,-7069,-7088,-7073,-6959, -6724,-6333,-5851,-5450,-5230,-5084,-4829,-4383,-3845,-3352, -3002,-2786,-2619,-2428,-2109,-1640,-1158,-794,-488,-59, 627,1553,2585,3596,4541,5484,6513,7714,9138,10690, 12111,13141,13621,13621,13332,12993,12825,12932,13235,13542, 13645,13381,12726,11805,10844,10047,9417,8688,7632,6234, 4633,3042,1617,440,-597,-1670,-2885,-4249,-5632,-6817, -7686,-8200,-8372,-8258,-8001,-7830,-7936,-8362,-8990,-9697, -10407,-11012,-11313,-11157,-10593,-9796,-8947,-8207,-7678,-7428, -7389,-7383,-7208,-6841,-6440,-6117,-5891,-5719,-5531,-5217, -4716,-4133,-3676,-3422,-3288,-3092,-2727,-2258,-1868,-1600, -1387,-1110,-679,-35,810,1739,2616,3403,4182,5137, 6382,7921,9593,11164,12373,13064,13260,13141,12923,12801, 12969,13390,13803,13927,13649,13035,12313,11674,11160,10635, 9915,8877,7507,5953,4471,3194,2091,1016,-173,-1496, -2891,-4330,-5728,-6873,-7569,-7843,-7851,-7747,-7633,-7620, -7835,-8359,-9118,-9931,-10620,-11089,-11227,-10931,-10229,-9378, -8661,-8195,-7951,-7815,-7663,-7384,-7009,-6642,-6406,-6321, -6231,-5966,-5493,-4959,-4511,-4211,-3993,-3759,-3424,-3000, -2578,-2242,-2041,-1922,-1699,-1270,-620,166,966,1669, 2255,2909,3804,5024,6545,8264,9966,11380,12295,12649, 12615,12500,12607,12979,13465,13841,13923,13674,13212,12688, 12278,11985,11611,10924,9876,8603,7252,5902,4641,3512, 2473,1378,67,-1489,-3090,-4547,-5778,-6736,-7317,-7515, -7460,-7359,-7335,-7461,-7827,-8488,-9365,-10250,-10915,-11182, -11014,-10498,-9802,-9159,-8753,-8537,-8327,-7985,-7547,-7179, -6977,-6902,-6810,-6608,-6269,-5829,-5373,-5018,-4777,-4536, -4208,-3797,-3352,-2940,-2656,-2545,-2464,-2249,-1803,-1160, -452,196,758,1263,1779,2486,3551,5050,6871,8726, 10261,11257,11758,11924,12024,12291,12822,13407,13759,13767, 13540,13251,13031,12850,12609,12266,11738,10891,9716,8382, 7114,5993,4955,3901,2775,1507,45,-1596,-3227,-4652, -5760,-6547,-7015,-7177,-7114,-6996,-7009,-7293,-7894,-8765, -9748,-10565,-10971,-10891,-10495,-10049,-9686,-9373,-9054,-8665, -8193,-7759,-7475,-7360,-7287,-7137,-6873,-6521,-6124,-5772, -5502,-5281,-5014,-4612,-4091,-3589,-3251,-3083,-2994,-2875, -2625,-2215,-1658,-986,-322,158,453,750,1283,2243, 3707,5536,7449,9065,10144,10727,11099,11532,12095,12684, 13167,13504,13639,13564,13378,13235,13198,13176,12984,12495, 11737,10743,9599,8416,7328,6354,5391,4308,3050,1607, 33,-1619,-3222,-4607,-5661,-6352,-6720,-6784,-6636,-6509, -6702,-7322,-8274,-9277,-10071,-10491,-10579,-10479,-10333,-10150, -9878,-9475,-8976,-8488,-8091,-7833,-7722,-7643,-7464,-7137, -6741,-6399,-6191,-6048,-5814,-5422,-4928,-4436,-3993,-3624, -3418,-3363,-3319,-3119,-2692,-2074,-1398,-810,-420,-247, -170,135,983,2457,4285,6068,7568,8746,9618,10284, 10906,11588,12294,12880,13216,13342,13361,13358,13392,13450, 13489,13411,13099,12482,11595,10567,9543,8553,7610,6691, 5707,4530,3137,1618,16,-1637,-3250,-4643,-5664,-6197, -6284,-6120,-6022,-6259,-6896,-7771,-8655,-9374,-9883,-10214, -10412,-10496,-10448,-10228,-9832,-9321,-8803,-8452,-8306,-8201, -7997,-7677,-7334,-7036,-6814,-6646,-6491,-6274,-5927,-5419, -4833,-4329,-4019,-3861,-3799,-3760,-3636,-3213,-2490,-1687, -1126,-962,-1038,-1055,-747,29,1286,2899,4592,6094, 7300,8300,9208,10097,10967,11776,12462,12930,13163,13255, 13361,13538,13742,13876,13887,13692,13221,12489,11600,10662, 9761,8908,8018,7051,5963,4720,3321,1753,-14,-1901, -3617,-4850,-5495,-5677,-5659,-5722,-6030,-6579,-7306,-8099, -8821,-9405,-9907,-10371,-10712,-10796,-10578,-10154,-9703,-9341, -9086,-8849,-8632,-8396,-8081,-7714,-7401,-7231,-7143,-7024, -6795,-6439,-5956,-5368,-4758,-4336,-4242,-4364,-4411,-4166, -3590,-2803,-2053,-1581,-1457,-1590,-1708,-1509,-818,311, 1704,3186,4648,5958,7115,8214,9303,10352,11262,11965, 12468,12803,13032,13239,13503,13822,14098,14224,14123,13763, 13158,12447,11709,10923,10063,9162,8263,7361,6377,5153, 3535,1602,-396,-2210,-3621,-4487,-4884,-5038,-5224,-5603, -6147,-6747,-7332,-7962,-8699,-9462,-10103,-10534,-10710,-10624, -10338,-9982,-9678,-9473,-9298,-9022,-8674,-8348,-8052,-7758, -7522,-7423,-7415,-7336,-7007,-6391,-5655,-5069,-4777,-4754, -4869,-4899,-4622,-3978,-3143,-2414,-1999,-1930,-2074,-2210, -2089,-1562,-618,564,1847,3142,4445,5730,6988,8245, 9438,10468,11287,11875,12237,12497,12793,13213,13667,14064, 14262,14200,13945,13589,13120,12485,11687,10826,10028,9348, 8679,7870,6742,5213,3294,1193,-730,-2200,-3194,-3859, -4350,-4774,-5158,-5553,-6015,-6559,-7190,-7934,-8800,-9626, -10183,-10419,-10435,-10345,-10183,-9979,-9746,-9528,-9339,-9077, -8668,-8208,-7886,-7764,-7791,-7845,-7750,-7378,-6738,-5991, -5411,-5181,-5239,-5366,-5333,-5003,-4357,-3528,-2801,-2404, -2345,-2473,-2605,-2534,-2139,-1432,-494,584,1742,2958, 4248,5604,6971,8296,9501,10465,11105,11513,11881,12335, 12874,13397,13789,14048,14209,14226,14044,13643,13055,12317, 11532,10833,10298,9877,9295,8280,6746,4855,2883,1020, -578,-1830,-2775,-3525,-4137,-4608,-4957,-5283,-5745,-6438, -7282,-8138,-8914,-9579,-10054,-10270,-10272,-10163,-10065,-9986, -9889,-9685,-9352,-8895,-8421,-8100,-8057,-8203,-8296,-8163, -7731,-7056,-6336,-5823,-5644,-5717,-5844,-5795,-5411,-4742, -3960,-3278,-2857,-2738,-2829,-2932,-2891,-2635,-2131,-1403, -514,470,1539,2725,4109,5664,7160,8409,9362,10111, 10746,11314,11860,12383,12903,13397,13813,14114,14331,14389, 14124,13499,12713,12007,11521,11216,10934,10457,9562,8194, 6452,4565,2774,1163,-300,-1595,-2639,-3358,-3829,-4213, -4618,-5105,-5704,-6466,-7358,-8242,-8998,-9555,-9880,-10000, -10036,-10109,-10208,-10188,-9974,-9559,-9041,-8586,-8348,-8363, -8519,-8623,-8468,-7983,-7285,-6616,-6164,-6019,-6103,-6212, -6127,-5731,-5090,-4366,-3731,-3284,-3060,-3042,-3144,-3174, -2974,-2553,-2004,-1409,-718,204,1416,2837,4333,5810, 7156,8276,9161,9917,10643,11294,11840,12313,12817,13419, 14026,14458,14578,14342,13803,13113,12498,12122,11984,11847, 11434,10622,9458,8033,6407,4639,2847,1200,-250,-1445, -2349,-2996,-3472,-3891,-4326,-4890,-5648,-6563,-7492,-8292, -8879,-9256,-9526,-9785,-10056,-10276,-10348,-10133,-9666,-9106, -8678,-8530,-8643,-8845,-8917,-8714,-8211,-7530,-6908,-6535, -6434,-6475,-6504,-6398,-6085,-5535,-4826,-4130,-3637,-3450, -3444,-3414,-3297,-3138,-2913,-2608,-2213,-1683,-919,155, 1509,2991,4419,5728,6944,8076,9069,9872,10496,11019, 11539,12147,12880,13680,14335,14577,14350,13823,13282,12891, 12668,12541,12390,12074,11491,10627,9465,8011,6335,4570, 2829,1226,-161,-1285,-2110,-2668,-3080,-3520,-4115,-4905, -5832,-6755,-7535,-8114,-8552,-8964,-9444,-9941,-10317,-10427, -10229,-9765,-9220,-8828,-8736,-8919,-9168,-9226,-8961,-8452, -7865,-7332,-6941,-6762,-6799,-6904,-6838,-6478,-5903,-5266, -4696,-4252,-3959,-3785,-3669,-3513,-3327,-3185,-3108,-2956, -2577,-1892,-929,222,1489,2851,4237,5585,6857,8014, 8939,9561,10033,10589,11364,12320,13262,13957,14250,14162, 13831,13468,13173,12976,12848,12733,12558,12214,11582,10624, 9390,7919,6267,4500,2740,1135,-162,-1108,-1754,-2221, -2697,-3359,-4207,-5122,-5983,-6695,-7266,-7783,-8348,-9008, -9691,-10236,-10435,-10212,-9724,-9262,-9027,-9026,-9154,-9310, -9383,-9228,-8773,-8156,-7596,-7261,-7162,-7191,-7223,-7129, -6815,-6296,-5704,-5191,-4816,-4505,-4178,-3835,-3586,-3481, -3462,-3464,-3400,-3156,-2633,-1840,-882,201,1411,2803, 4302,5772,6992,7862,8483,9039,9746,10672,11721,12705, 13447,13876,13997,13873,13624,13365,13203,13137,13098,12991, 12768,12376,11710,10746,9496,7986,6250,4407,2652,1197, 139,-570,-1147,-1776,-2506,-3359,-4263,-5099,-5738,-6248, -6797,-7551,-8451,-9292,-9863,-10089,-9997,-9676,-9285,-9028, -9039,-9253,-9473,-9528,-9331,-8910,-8373,-7868,-7533,-7449, -7532,-7543,-7351,-7009,-6601,-6181,-5763,-5355,-4953,-4521, -4086,-3758,-3630,-3674,-3755,-3731,-3525,-3156,-2653,-2006, -1136,39,1504,3089,4561,5746,6637,7344,8059,8898, 9868,10933,11986,12866,13448,13724,13751,13635,13487,13371, 13322,13316,13271,13149,12917,12549,11943,10955,9550,7824, 5976,4189,2640,1442,592,-73,-798,-1725,-2708,-3548, -4197,-4758,-5329,-6014,-6868,-7820,-8750,-9480,-9847,-9826, -9577,-9301,-9152,-9174,-9382,-9658,-9777,-9582,-9132,-8624, -8215,-7986,-7910,-7893,-7833,-7650,-7354,-7015,-6702,-6382, -5993,-5494,-4925,-4431,-4102,-3992,-3995,-3993,-3917,-3780, -3636,-3464,-3087,-2325,-1166,252,1759,3183,4383,5345, 6162,6954,7838,8877,10008,11106,12077,12817,13260,13447, 13478,13473,13466,13414,13335,13301,13310,13312,13184,12825, 12137,10983,9361,7489,5668,4151,2963,1985,1051,83, -882,-1823,-2660,-3321,-3833,-4380,-5127,-6078,-7123,-8128, -8955,-9462,-9593,-9429,-9195,-9113,-9261,-9541,-9795,-9872, -9686,-9301,-8867,-8536,-8346,-8260,-8179,-8017,-7795,-7580, -7386,-7189,-6904,-6454,-5859,-5273,-4836,-4568,-4360,-4165, -4001,-3901,-3924,-4012,-4021,-3799,-3204,-2198,-878,551, 1904,3094,4115,5022,5883,6814,7881,9090,10292,11315, 12115,12710,13130,13374,13471,13502,13484,13438,13392,13421, 13554,13724,13708,13216,12175,10703,9039,7372,5865,4583, 3458,2340,1198,85,-878,-1656,-2300,-2854,-3420,-4129, -5088,-6228,-7377,-8309,-8886,-9087,-9050,-8970,-9005,-9213, -9529,-9785,-9833,-9671,-9376,-9055,-8804,-8659,-8524,-8325, -8095,-7927,-7856,-7801,-7628,-7276,-6788,-6273,-5817,-5400, -5026,-4671,-4339,-4069,-3957,-4035,-4249,-4437,-4362,-3916, -3094,-1980,-671,658,1832,2815,3708,4644,5685,6815, 7996,9180,10301,11274,12010,12546,12968,13294,13429,13363, 13228,13196,13372,13693,14017,14139,13865,13055,11814,10355, 8890,7488,6154,4866,3596,2328,1132,70,-782,-1399, -1888,-2432,-3170,-4164,-5371,-6594,-7601,-8242,-8538,-8633, -8699,-8875,-9188,-9531,-9756,-9779,-9645,-9476,-9343,-9203, -8988,-8706,-8439,-8292,-8252,-8239,-8151,-7941,-7611,-7207, -6784,-6400,-6023,-5572,-5051,-4571,-4243,-4120,-4189,-4419, -4679,-4793,-4573,-3921,-2900,-1729,-575,507,1523,2461, 3378,4382,5570,6839,8055,9154,10162,11105,11927,12566, 12977,13132,13063,12918,12937,13216,13707,14185,14407,14234, 13673,12767,11611,10320,9015,7716,6376,4998,3594,2254, 1093,211,-395,-861,-1393,-2154,-3187,-4411,-5659,-6709, -7407,-7777,-8003,-8273,-8647,-9029,-9309,-9455,-9523,-9573, -9581,-9502,-9324,-9071,-8789,-8552,-8431,-8432,-8435,-8324, -8088,-7804,-7535,-7271,-6959,-6539,-6036,-5477,-4900,-4407, -4155,-4233,-4545,-4878,-5044,-4939,-4503,-3724,-2685,-1595, -610,283,1175,2150,3237,4405,5603,6779,7910,9037, 10159,11221,12077,12593,12756,12704,12641,12738,13082,13606, 14144,14477,14499,14162,13515,12646,11621,10501,9283,7944, 6466,4926,3464,2218,1286,655,205,-301,-1082,-2184, -3483,-4713,-5681,-6383,-6930,-7430,-7891,-8309,-8675,-8957, -9154,-9339,-9517,-9634,-9612,-9415,-9127,-8879,-8743,-8689, -8633,-8542,-8436,-8292,-8091,-7863,-7657,-7468,-7159,-6619, -5924,-5248,-4713,-4392,-4360,-4604,-4992,-5294,-5316,-4983, -4338,-3508,-2619,-1756,-917,-43,961,2071,3204,4293, 5382,6545,7810,9140,10384,11362,11980,12239,12280,12295, 12447,12810,13355,13945,14409,14568,14403,13985,13386,12650, 11776,10710,9416,7926,6306,4694,3317,2368,1788,1320, 717,-157,-1276,-2474,-3597,-4565,-5392,-6118,-6787,-7388, -7865,-8211,-8503,-8841,-9196,-9474,-9590,-9553,-9440,-9283, -9079,-8922,-8860,-8835,-8737,-8559,-8373,-8257,-8193,-8125, -7985,-7686,-7203,-6522,-5732,-5044,-4631,-4541,-4739,-5114, -5435,-5529,-5298,-4815,-4201,-3529,-2819,-2014,-1100,-94, 942,1964,2952,3978,5188,6582,8029,9391,10503,11261, 11659,11813,11892,12073,12471,13053,13652,14132,14432,14483, 14292,13907,13436,12867,12074,10894,9330,7592,5959,4636, 3675,2996,2398,1696,795,-262,-1353,-2382,-3371,-4352, -5276,-6038,-6634,-7152,-7626,-8059,-8460,-8860,-9211,-9436, -9479,-9376,-9248,-9168,-9125,-9049,-8930,-8777,-8605,-8443, -8351,-8351,-8394,-8381,-8184,-7733,-7039,-6200,-5402,-4873, -4718,-4887,-5187,-5440,-5525,-5397,-5110,-4739,-4282,-3662, -2874,-1973,-1037,-137,739,1645,2660,3833,5207,6765, 8284,9535,10397,10924,11232,11455,11695,12068,12618,13278, 13850,14195,14301,14265,14193,14078,13791,13169,12107,10627, 8905,7274,5975,5006,4189,3380,2556,1715,810,-187, -1260,-2331,-3348,-4297,-5155,-5871,-6446,-6955,-7478,-8022, -8508,-8892,-9136,-9249,-9275,-9260,-9250,-9241,-9187,-9056, -8861,-8656,-8492,-8406,-8450,-8605,-8735,-8671,-8288,-7582, -6691,-5866,-5305,-5102,-5163,-5324,-5456,-5503,-5506,-5459, -5280,-4911,-4364,-3663,-2845,-1984,-1160,-407,355,1277, 2457,3869,5408,6948,8324,9398,10128,10544,10799,11116, 11596,12202,12804,13327,13686,13893,14048,14265,14496,14482, 13993,13001,11662,10184,8726,7398,6248,5279,4416,3570, 2713,1842,932,-67,-1172,-2284,-3292,-4150,-4891,-5568, -6216,-6855,-7468,-8007,-8412,-8694,-8889,-9033,-9132,-9212, -9268,-9256,-9143,-8926,-8650,-8410,-8335,-8463,-8732,-8991, -9017,-8670,-7968,-7119,-6360,-5807,-5476,-5324,-5320,-5404, -5493,-5558,-5605,-5590,-5390,-4947,-4282,-3514,-2773,-2115, -1487,-775,84,1133,2451,4001,5628,7104,8283,9130, 9692,10123,10577,11173,11832,12390,12751,13014,13362,13827, 14335,14714,14829,14543,13817,12726,11424,10085,8783,7570, 6453,5474,4617,3801,2955,2043,1038,-53,-1160,-2182, -3075,-3887,-4663,-5428,-6170,-6852,-7436,-7902,-8257,-8518, -8732,-8933,-9134,-9295,-9370,-9285,-9021,-8653,-8349,-8296, -8541,-8920,-9203,-9231,-8959,-8413,-7702,-6977,-6374,-5941, -5660,-5492,-5417,-5472,-5651,-5845,-5893,-5726,-5358,-4823, -4190,-3530,-2935,-2402,-1840,-1123,-155,1101,2621,4284, 5844,7082,7955,8651,9342,10084,10796,11365,11790,12112, 12425,12841,13440,14132,14700,14985,14894,14423,13615,12567, 11371,10117,8851,7665,6618,5725,4905,4057,3115,2083, 1021,-25,-1031,-1971,-2851,-3705,-4570,-5407,-6166,-6813, -7346,-7766,-8076,-8320,-8615,-8989,-9348,-9502,-9371,-9017, -8605,-8336,-8327,-8564,-8941,-9281,-9407,-9218,-8765,-8199, -7621,-7034,-6473,-5988,-5669,-5537,-5581,-5738,-5936,-6057, -5995,-5701,-5255,-4719,-4150,-3614,-3167,-2781,-2278,-1447, -180,1385,2977,4405,5613,6644,7574,8489,9399,10194, 10777,11161,11447,11783,12277,12945,13716,14412,14867,15011, 14837,14341,13550,12502,11289,10051,8886,7836,6888,5996, 5109,4162,3135,2084,1072,107,-853,-1801,-2700,-3589, -4506,-5403,-6175,-6749,-7129,-7437,-7814,-8313,-8849,-9268, -9467,-9388,-9056,-8638,-8342,-8327,-8581,-8948,-9252,-9399, -9364,-9129,-8718,-8200,-7614,-6994,-6409,-5966,-5744,-5726, -5847,-6013,-6150,-6196,-6049,-5636,-5062,-4533,-4173,-3951, -3724,-3283,-2474,-1291,133,1599,2951,4164,5301,6446, 7590,8642,9512,10135,10535,10842,11207,11731,12407,13169, 13933,14588,15018,15122,14878,14305,13453,12386,11221,10109, 9092,8114,7150,6192,5231,4253,3236,2194,1187,268, -595,-1523,-2567,-3637,-4609,-5388,-5959,-6399,-6789,-7247, -7836,-8515,-9088,-9359,-9289,-8990,-8635,-8402,-8378,-8550, -8838,-9126,-9334,-9417,-9378,-9169,-8731,-8135,-7497,-6908, -6406,-6030,-5843,-5879,-6084,-6325,-6417,-6244,-5826,-5301, -4885,-4678,-4602,-4468,-4084,-3355,-2311,-1078,203,1450, 2666,3912,5208,6523,7709,8640,9327,9824,10224,10621, 11121,11763,12510,13308,14120,14800,15187,15204,14826,14146, 13289,12327,11307,10260,9260,8313,7382,6396,5333,4263, 3281,2388,1514,601,-383,-1484,-2647,-3710,-4532,-5100, -5532,-5989,-6597,-7334,-8084,-8700,-9050,-9073,-8874,-8616, -8437,-8378,-8440,-8620,-8901,-9209,-9434,-9491,-9359,-9068, -8621,-8057,-7412,-6766,-6253,-5995,-6035,-6271,-6509,-6550, -6326,-5913,-5499,-5219,-5111,-5114,-5051,-4731,-4086,-3201, -2216,-1166,-36,1185,2512,3907,5289,6557,7620,8431, 9042,9522,9970,10440,11002,11698,12543,13466,14294,14864, 15095,15024,14644,13964,13099,12187,11290,10396,9451,8440, 7385,6318,5290,4341,3494,2690,1799,729,-465,-1666, -2733,-3569,-4168,-4645,-5189,-5913,-6767,-7582,-8225,-8636, -8826,-8811,-8653,-8458,-8319,-8324,-8490,-8773,-9080,-9333, -9491,-9535,-9434,-9141,-8612,-7890,-7146,-6583,-6318,-6328, -6504,-6687,-6679,-6415,-6031,-5703,-5547,-5546,-5570,-5480, -5201,-4721,-4071,-3293,-2422,-1433,-265,1083,2529,3965, 5284,6455,7467,8253,8799,9205,9653,10238,10978,11818, 12712,13614,14401,14931,15092,14903,14444,13803,13056,12276, 11475,10594,9573,8442,7324,6316,5457,4685,3909,2994, 1870,584,-657,-1693,-2479,-3106,-3714,-4395,-5181,-6028, -6877,-7621,-8194,-8535,-8640,-8554,-8380,-8244,-8250,-8390, -8582,-8810,-9095,-9399,-9649,-9721,-9524,-9024,-8298,-7530, -6941,-6667,-6676,-6788,-6822,-6693,-6428,-6126,-5910,-5819, -5823,-5840,-5762,-5520,-5151,-4716,-4204,-3510,-2603,-1518, -298,1069,2540,4020,5363,6459,7315,7970,8493,8969, 9495,10167,11007,11952,12917,13812,14517,14912,14950,14701, 14293,13793,13205,12507,11648,10611,9457,8327,7357,6586, 5899,5130,4143,2953,1678,479,-542,-1366,-2077,-2759, -3493,-4285,-5146,-6075,-6975,-7687,-8124,-8315,-8342,-8295, -8236,-8197,-8225,-8340,-8536,-8845,-9256,-9679,-9920,-9820, -9350,-8640,-7931,-7416,-7160,-7088,-7083,-7021,-6816,-6521, -6264,-6125,-6092,-6071,-6007,-5903,-5771,-5569,-5271,-4858, -4346,-3683,-2801,-1676,-343,1113,2608,4034,5285,6279, 7052,7660,8166,8665,9274,10068,11039,12089,13080,13907, 14459,14710,14706,14536,14282,13943,13403,12570,11484,10329, 9267,8400,7694,7022,6208,5172,3998,2790,1628,559, -350,-1105,-1773,-2482,-3319,-4279,-5276,-6220,-7010,-7566, -7901,-8084,-8165,-8177,-8132,-8053,-8014,-8172,-8567,-9120, -9641,-9955,-9932,-9544,-8933,-8314,-7870,-7648,-7549,-7411, -7174,-6913,-6687,-6509,-6372,-6274,-6225,-6192,-6118,-5989, -5823,-5631,-5388,-5057,-4591,-3907,-2937,-1712,-318,1169, 2654,4025,5184,6100,6786,7320,7828,8415,9175,10120, 11214,12296,13185,13807,14204,14453,14608,14668,14539,14092, 13289,12249,11187,10255,9467,8747,8030,7235,6285,5169, 3946,2737,1647,737,-12,-691,-1424,-2273,-3259,-4321, -5319,-6149,-6812,-7338,-7740,-7983,-8036,-7930,-7770,-7695, -7829,-8235,-8854,-9466,-9848,-9856,-9543,-9091,-8664,-8319, -8045,-7824,-7624,-7388,-7104,-6836,-6636,-6500,-6418,-6374, -6318,-6216,-6079,-5933,-5819,-5714,-5559,-5256,-4740,-3980, -2957,-1673,-214,1282,2731,4030,5086,5879,6459,6958, 7523,8282,9260,10367,11423,12296,12948,13498,14042,14540, 14861,14869,14531,13878,13006,12063,11169,10390,9713,9045, 8281,7364,6278,5069,3840,2715,1790,1057,382,-383, -1297,-2301,-3311,-4280,-5194,-6031,-6751,-7334,-7729,-7874, -7755,-7502,-7362,-7546,-8031,-8652,-9217,-9582,-9686,-9556, -9277,-8964,-8675,-8423,-8193,-7942,-7670,-7367,-7067,-6833, -6706,-6641,-6574,-6480,-6368,-6238,-6115,-6024,-5978,-5940, -5824,-5514,-4958,-4135,-3035,-1694,-191,1327,2744,3943, 4816,5417,5924,6556,7399,8401,9435,10369,11184,11936, 12698,13462,14163,14686,14915,14780,14297,13587,12763,11948, 11207,10560,9961,9290,8418,7318,6091,4882,3816,2905, 2106,1352,571,-295,-1269,-2265,-3214,-4141,-5124,-6110, -6929,-7432,-7573,-7446,-7240,-7171,-7361,-7796,-8370,-8904, -9297,-9498,-9519,-9384,-9165,-8955,-8772,-8561,-8289,-7964, -7636,-7337,-7098,-6933,-6845,-6771,-6653,-6503,-6356,-6231, -6138,-6118,-6150,-6146,-6012,-5678,-5109,-4247,-3060,-1573, 44,1552,2762,3639,4316,4975,5741,6627,7573,8500, 9371,10190,11002,11873,12786,13651,14360,14807,14917,14679, 14139,13409,12657,12021,11496,10957,10283,9435,8402,7228, 6044,4986,4078,3253,2420,1562,697,-137,-985,-1922, -2983,-4146,-5294,-6262,-6866,-7086,-7038,-6918,-6892,-7059, -7433,-7955,-8504,-8932,-9175,-9277,-9295,-9239,-9116,-8972, -8798,-8554,-8233,-7898,-7596,-7346,-7164,-7041,-6936,-6805, -6629,-6448,-6315,-6257,-6241,-6237,-6259,-6292,-6270,-6016, -5360,-4243,-2796,-1250,190,1404,2377,3192,3991,4843, 5747,6655,7514,8322,9136,10004,10920,11879,12873,13799, 14496,14814,14737,14353,13799,13220,12705,12248,11782,11178, 10350,9325,8221,7152,6150,5199,4259,3321,2438,1659, 961,223,-703,-1871,-3166,-4411,-5455,-6193,-6583,-6662, -6605,-6614,-6789,-7145,-7625,-8118,-8561,-8884,-9089,-9208, -9271,-9274,-9202,-9064,-8853,-8566,-8222,-7907,-7678,-7515, -7368,-7189,-6992,-6820,-6691,-6565,-6409,-6275,-6239,-6358, -6585,-6773,-6707,-6230,-5294,-3994,-2546,-1193,-27,1008, 1998,2948,3867,4781,5682,6547,7352,8104,8905,9839, 10896,12006,13070,13954,14521,14679,14480,14083,13672,13320, 12984,12568,11971,11180,10266,9306,8351,7349,6276,5197, 4219,3390,2689,2043,1348,458,-694,-2056,-3416,-4589, -5449,-5965,-6200,-6274,-6348,-6538,-6869,-7296,-7760,-8188, -8538,-8808,-9019,-9186,-9317,-9377,-9298,-9080,-8779,-8494, -8253,-8044,-7819,-7586,-7379,-7237,-7122,-6965,-6725,-6456, -6235,-6186,-6374,-6749,-7107,-7180,-6836,-6080,-5029,-3809, -2538,-1328,-222,815,1832,2866,3870,4804,5651,6426, 7161,7923,8821,9911,11139,12351,13375,14083,14428,14454, 14313,14139,13940,13652,13216,12658,12002,11269,10454,9537, 8509,7393,6264,5233,4397,3739,3158,2508,1651,534, -816,-2244,-3534,-4524,-5180,-5564,-5803,-5976,-6182,-6494, -6912,-7353,-7749,-8083,-8389,-8704,-9017,-9252,-9340,-9281, -9158,-9000,-8792,-8533,-8260,-7999,-7774,-7625,-7547,-7456, -7259,-6894,-6472,-6184,-6170,-6420,-6830,-7224,-7434,-7304, -6790,-5952,-4921,-3805,-2678,-1569,-470,623,1727,2816, 3826,4690,5427,6095,6793,7647,8770,10107,11431,12529, 13304,13798,14094,14259,14306,14227,14008,13657,13219,12728, 12150,11444,10580,9553,8394,7227,6180,5331,4692,4168, 3569,2744,1641,335,-1058,-2409,-3550,-4396,-4935,-5265, -5536,-5860,-6247,-6628,-6967,-7297,-7664,-8073,-8487,-8837, -9111,-9267,-9329,-9325,-9259,-9118,-8855,-8511,-8206,-8044, -8011,-8001,-7875,-7567,-7124,-6659,-6312,-6228,-6444,-6862, -7301,-7598,-7633,-7338,-6731,-5913,-4979,-3971,-2895,-1808, -676,501,1707,2831,3747,4420,4993,5663,6570,7724, 9036,10343,11497,12426,13134,13657,14036,14261,14312,14198, 13989,13726,13393,12976,12414,11631,10614,9439,8241,7163, 6324,5699,5163,4583,3842,2848,1584,151,-1238,-2432, -3353,-4049,-4598,-5060,-5466,-5841,-6192,-6516,-6844,-7229, -7682,-8125,-8499,-8786,-9026,-9260,-9431,-9455,-9289,-8997, -8666,-8417,-8315,-8342,-8359,-8222,-7882,-7379,-6842,-6427, -6263,-6416,-6794,-7237,-7594,-7759,-7661,-7266,-6619,-5839, -5025,-4149,-3121,-1926,-609,701,1843,2743,3423,4020, 4692,5581,6701,7944,9210,10412,11489,12400,13129,13674, 14044,14236,14262,14177,14048,13918,13712,13296,12582,11602, 10465,9312,8240,7333,6656,6162,5673,4986,4018,2791, 1428,74,-1134,-2161,-3027,-3771,-4408,-4922,-5306,-5621, -5967,-6374,-6798,-7199,-7587,-7961,-8342,-8737,-9112,-9382, -9439,-9275,-8990,-8718,-8553,-8525,-8601,-8663,-8561,-8203, -7658,-7093,-6637,-6387,-6401,-6677,-7117,-7558,-7831,-7826, -7565,-7145,-6646,-6066,-5348,-4398,-3174,-1793,-451,699, 1607,2335,3002,3714,4559,5568,6733,7969,9200,10365, 11441,12386,13123,13601,13845,13972,14090,14212,14261,14172, 13876,13320,12460,11372,10186,9090,8213,7565,7065,6575, 5929,5010,3850,2594,1353,158,-990,-2048,-2965,-3697, -4263,-4717,-5132,-5563,-6001,-6404,-6740,-7050,-7449,-7937, -8463,-8947,-9287,-9413,-9294,-9026,-8777,-8679,-8744,-8887, -8962,-8868,-8583,-8110,-7505,-6935,-6572,-6505,-6726,-7129, -7537,-7790,-7845,-7749,-7573,-7341,-7002,-6438,-5570,-4412, -3081,-1752,-567,420,1223,1929,2665,3501,4448,5479, 6621,7875,9176,10425,11495,12322,12909,13315,13599,13824, 14077,14344,14502,14433,14034,13286,12247,11079,9999,9146, 8530,8020,7475,6804,5979,4990,3874,2686,1452,207, -957,-1943,-2751,-3431,-4044,-4606,-5110,-5546,-5903,-6208, -6510,-6894,-7422,-8069,-8676,-9077,-9208,-9121,-8933,-8781, -8729,-8808,-8964,-9119,-9143,-8932,-8461,-7821,-7185,-6749, -6628,-6782,-7076,-7360,-7552,-7655,-7728,-7788,-7774,-7603, -7203,-6492,-5467,-4227,-2942,-1767,-748,148,980,1774, 2537,3349,4292,5401,6651,7992,9316,10510,11485,12203, 12714,13100,13448,13833,14270,14677,14852,14622,13979,13033, 11968,10964,10160,9524,8941,8342,7693,6984,6159,5163, 3993,2729,1478,310,-738,-1660,-2469,-3214,-3922,-4558, -5043,-5356,-5580,-5858,-6298,-6905,-7602,-8254,-8721,-8950, -8968,-8852,-8714,-8660,-8764,-9006,-9274,-9398,-9241,-8769, -8120,-7503,-7089,-6922,-6942,-7066,-7214,-7353,-7490,-7652, -7855,-8049,-8093,-7833,-7236,-6370,-5335,-4199,-3019,-1897, -887,3,789,1530,2279,3145,4185,5405,6747,8128, 9440,10557,11392,11983,12432,12882,13422,14073,14686,15038, 14974,14473,13688,12793,11912,11090,10351,9713,9150,8587, 7949,7184,6266,5174,3955,2709,1545,494,-482,-1440, -2396,-3271,-3971,-4451,-4760,-5010,-5322,-5778,-6386,-7086, -7772,-8339,-8702,-8819,-8734,-8592,-8563,-8748,-9095,-9446, -9623,-9499,-9101,-8540,-7960,-7519,-7284,-7219,-7214,-7198, -7210,-7338,-7603,-7939,-8227,-8374,-8287,-7913,-7262,-6403, -5386,-4264,-3098,-2021,-1085,-256,487,1210,1998,2939, 4085,5419,6863,8284,9504,10424,11062,11582,12186,12933, 13749,14469,14950,15082,14863,14322,13574,12737,11910,11143, 10466,9888,9379,8842,8164,7280,6209,5056,3921,2844, 1793,723,-392,-1490,-2480,-3261,-3809,-4180,-4470,-4786, -5215,-5796,-6516,-7293,-7973,-8401,-8526,-8465,-8391,-8442, -8672,-9059,-9466,-9718,-9678,-9338,-8846,-8380,-8003,-7716, -7498,-7320,-7170,-7112,-7220,-7483,-7829,-8169,-8428,-8528, -8393,-7980,-7297,-6407,-5373,-4265,-3160,-2145,-1268,-506, 188,880,1699,2775,4134,5652,7103,8310,9238,9980, 10659,11395,12239,13140,13985,14649,15021,15053,14758,14215, 13492,12672,11872,11199,10677,10222,9723,9064,8203,7206, 6175,5168,4167,3102,1943,729,-446,-1500,-2398,-3095, -3568,-3873,-4149,-4558,-5184,-5973,-6788,-7489,-7973,-8179, -8153,-8086,-8192,-8508,-8966,-9412,-9687,-9703,-9485,-9157, -8805,-8468,-8131,-7799,-7505,-7286,-7170,-7178,-7352,-7661, -8035,-8382,-8630,-8696,-8507,-8024,-7294,-6393,-5383,-4295, -3192,-2213,-1465,-877,-275,522,1608,2961,4428,5841, 7059,8060,8888,9672,10515,11446,12419,13337,14140,14757, 15101,15093,14721,14074,13316,12594,12002,11528,11093,10570, 9893,9092,8229,7341,6429,5440,4388,3262,2048,772, -452,-1485,-2259,-2802,-3159,-3456,-3865,-4499,-5325,-6214, -6976,-7478,-7691,-7725,-7759,-7941,-8315,-8773,-9187,-9485, -9618,-9588,-9419,-9156,-8845,-8503,-8134,-7767,-7468,-7269, -7193,-7249,-7467,-7840,-8274,-8627,-8821,-8817,-8598,-8127, -7379,-6378,-5247,-4148,-3211,-2493,-1922,-1343,-577,472, 1785,3220,4607,5814,6830,7739,8632,9546,10506,11503, 12518,13491,14345,14955,15183,14984,14475,13840,13264,12784, 12319,11823,11283,10673,9965,9174,8350,7524,6665,5707, 4610,3369,2036,719,-447,-1350,-1962,-2359,-2682,-3118, -3792,-4681,-5610,-6372,-6866,-7122,-7263,-7415,-7667,-8032, -8476,-8906,-9239,-9459,-9569,-9565,-9425,-9173,-8863,-8520, -8150,-7767,-7426,-7221,-7220,-7401,-7697,-8039,-8404,-8764, -9029,-9081,-8817,-8188,-7257,-6173,-5112,-4220,-3549,-3013, -2437,-1672,-653,585,1929,3258,4487,5588,6578,7511, 8428,9363,10374,11519,12720,13777,14534,14919,14955,14701, 14296,13840,13394,12958,12492,11955,11349,10679,9967,9241, 8521,7769,6907,5880,4661,3281,1857,566,-426,-1078, -1488,-1881,-2418,-3167,-4060,-4967,-5743,-6281,-6607,-6835, -7069,-7369,-7732,-8135,-8559,-8980,-9324,-9530,-9599,-9576, -9479,-9283,-8967,-8545,-8109,-7735,-7484,-7366,-7377,-7515, -7786,-8182,-8662,-9123,-9392,-9330,-8853,-8017,-6988,-6008, -5210,-4599,-4083,-3511,-2741,-1750,-612,603,1889,3191, 4403,5430,6309,7165,8132,9257,10505,11788,12979,13902, 14491,14748,14742,14541,14257,13949,13596,13157,12622,12005, 11355,10690,10035,9400,8789,8101,7187,5961,4517,3021, 1684,640,-69,-570,-1034,-1651,-2469,-3383,-4260,-5014, -5620,-6083,-6408,-6675,-6948,-7316,-7757,-8255,-8513,-8785, -9086,-9304,-9463,-9472,-9351,-9067,-8697,-8289,-7914,-7588, -7353,-7198,-7158,-7293,-7672,-8245,-8867,-9329,-9442,-9107, -8387,-7491,-6639,-5931,-5344,-4795,-4219,-3541,-2704,-1667, -445,880,2197,3399,4411,5286,6140,7108,8254,9555, 10916,12205,13295,14079,14528,14730,14775,14707,14532,14283, 13945,13483,12883,12199,11515,10924,10445,9991,9424,8587, 7416,5974,4442,3085,2027,1256,649,55,-634,-1434, -2323,-3235,-4077,-4761,-5268,-5638,-5958,-6301,-6708,-7144, -7578,-8005,-8413,-8799,-9144,-9411,-9537,-9486,-9283,-9007, -8697,-8355,-7989,-7606,-7271,-7050,-7057,-7390,-8031,-8766, -9326,-9536,-9354,-8860,-8185,-7454,-6758,-6143,-5607,-5114, -4566,-3834,-2845,-1634,-312,979,2161,3193,4074,4904, 5837,6980,8324,9739,11093,12287,13253,13955,14374,14574, 14667,14710,14660,14453,14044,13446,12750,12079,11553,11184, 10884,10461,9705,8554,7160,5723,4398,3278,2381,1643, 990,302,-507,-1445,-2406,-3268,-3981,-4557,-5022,-5434, -5839,-6249,-6660,-7064,-7497,-7972,-8457,-8892,-9233,-9450, -9511,-9430,-9276,-9094,-8857,-8481,-7959,-7408,-7015,-6951, -7256,-7842,-8540,-9144,-9497,-9538,-9283,-8774,-8110,-7437, -6869,-6415,-5996,-5520,-4895,-4011,-2861,-1543,-219,946, 1923,2788,3658,4608,5715,6994,8418,9870,11205,12325, 13170,13775,14204,14518,14761,14913,14863,14517,13916,13208, 12585,12169,11931,11704,11304,10615,9630,8370,6969,5609, 4441,3498,2715,1993,1229,373,-571,-1529,-2414,-3175, -3837,-4419,-4920,-5357,-5769,-6163,-6560,-6985,-7494,-8065, -8599,-9002,-9229,-9349,-9438,-9519,-9527,-9358,-8937,-8314, -7655,-7183,-7023,-7190,-7634,-8260,-8907,-9407,-9635,-9544, -9173,-8644,-8056,-7519,-7110,-6796,-6446,-5898,-5077,-3997, -2757,-1509,-344,687,1574,2404,3314,4387,5638,7040, 8517,9952,11196,12187,12941,13552,14123,14661,15031,15095, 14802,14259,13658,13130,12746,12510,12335,12061,11527,10671, 9527,8210,6881,5694,4711,3862,3042,2201,1313,385, -554,-1466,-2308,-3052,-3725,-4333,-4841,-5241,-5593,-5981, -6458,-7035,-7641,-8182,-8563,-8834,-9095,-9398,-9682,-9822, -9711,-9328,-8742,-8068,-7466,-7121,-7132,-7467,-8019,-8659, -9238,-9621,-9713,-9483,-9022,-8498,-8075,-7768,-7533,-7245, -6779,-6061,-5088,-3929,-2697,-1534,-508,383,1213,2067, 3069,4286,5716,7234,8682,9934,10986,11918,12811,13658, 14400,14926,15135,14995,14587,14072,13593,13254,13066,12954, 12764,12331,11590,10571,9399,8178,7008,5963,5044,4183, 3287,2345,1396,467,-439,-1331,-2219,-3040,-3721,-4229, -4596,-4947,-5404,-5992,-6613,-7158,-7595,-7990,-8380,-8790, -9231,-9646,-9934,-9978,-9715,-9172,-8498,-7853,-7373,-7160, -7292,-7752,-8408,-9064,-9539,-9724,-9614,-9289,-8897,-8555, -8317,-8151,-7942,-7572,-6953,-6094,-5052,-3888,-2688,-1608, -738,1,786,1780,3030,4460,5931,7308,8551,9700, 10811,11901,12948,13881,14603,15015,15070,14797,14354,13946, 13678,13552,13496,13379,13035,12406,11519,10463,9350,8257, 7218,6229,5275,4324,3381,2467,1576,644,-375,-1396, -2292,-2979,-3479,-3905,-4366,-4905,-5494,-6081,-6609,-7047, -7414,-7819,-8329,-8910,-9465,-9887,-10078,-9983,-9606,-8998, -8283,-7644,-7261,-7239,-7583,-8165,-8816,-9351,-9633,-9624, -9399,-9124,-8899,-8743,-8619,-8481,-8241,-7792,-7065,-6068, -4918,-3771,-2759,-1942,-1223,-436,560,1784,3149,4535, 5872,7135,8331,9522,10758,12008,13162,14090,14684,14899, 14804,14517,14195,13984,13923,13936,13888,13647,13127,12349, 11427,10456,9472,8431,7344,6301,5366,4517,3662,2702, 1634,539,-495,-1400,-2132,-2706,-3205,-3736,-4338,-4978, -5559,-6032,-6428,-6815,-7272,-7814,-8433,-9070,-9646,-10051, -10175,-9954,-9430,-8733,-8025,-7489,-7307,-7517,-8021,-8620, -9134,-9462,-9580,-9516,-9328,-9132,-9020,-8998,-9003,-8915, -8583,-7917,-6973,-5911,-4879,-3964,-3167,-2419,-1611,-647, 508,1809,3159,4450,5666,6871,8119,9465,10878,12242, 13382,14186,14611,14684,14538,14329,14206,14231,14323,14318, 14093,13677,13118,12428,11589,10595,9516,8450,7455,6559, 5717,4843,3859,2747,1578,478,-461,-1209,-1847,-2465, -3117,-3780,-4407,-4971,-5471,-5894,-6275,-6693,-7221,-7876, -8605,-9321,-9932,-10293,-10286,-9869,-9163,-8395,-7796,-7501, -7562,-7914,-8412,-8917,-9314,-9527,-9518,-9362,-9200,-9164, -9288,-9450,-9464,-9211,-8644,-7822,-6855,-5906,-5068,-4320, -3592,-2794,-1842,-719,523,1785,3005,4180,5367,6641, 8030,9534,11055,12434,13483,14084,14303,14322,14323,14361, 14430,14479,14478,14400,14196,13816,13246,12485,11555,10530, 9505,8574,7742,6945,6058,5003,3835,2664,1588,628, -212,-959,-1662,-2374,-3096,-3790,-4391,-4892,-5327,-5716, -6094,-6546,-7156,-7947,-8836,-9663,-10230,-10395,-10139,-9566, -8861,-8209,-7763,-7617,-7799,-8248,-8787,-9202,-9401,-9402, -9303,-9221,-9279,-9472,-9712,-9833,-9694,-9257,-8550,-7709, -6854,-6085,-5406,-4724,-3921,-2958,-1879,-723,461,1634, 2760,3872,5088,6511,8133,9815,11328,12507,13310,13796, 14083,14254,14362,14434,14514,14596,14646,14610,14434,14017, 13311,12398,11424,10510,9691,8919,8108,7190,6148,5001, 3824,2728,1745,856,20,-776,-1553,-2321,-3057,-3732, -4315,-4777,-5126,-5426,-5799,-6383,-7224,-8233,-9195,-9918, -10291,-10275,-9904,-9278,-8588,-8031,-7771,-7861,-8225,-8684, -9071,-9260,-9266,-9205,-9201,-9333,-9596,-9916,-10135,-10103, -9750,-9168,-8470,-7758,-7068,-6402,-5744,-5027,-4142,-3055, -1872,-720,325,1299,2340,3586,5079,6734,8419,10010, 11381,12437,13194,13710,14057,14267,14394,14490,14645,14862, 15025,14975,14647,14045,13242,12366,11537,10791,10073,9296, 8382,7322,6173,5032,3944,2919,1966,1061,209,-603, -1415,-2262,-3075,-3743,-4199,-4477,-4720,-5084,-5657,-6464, -7441,-8493,-9438,-10077,-10304,-10105,-9576,-8896,-8303,-7976, -7981,-8239,-8606,-8925,-9104,-9118,-9059,-9083,-9294,-9648, -10013,-10272,-10337,-10153,-9729,-9139,-8499,-7891,-7349,-6795, -6100,-5195,-4124,-3009,-1975,-1040,-124,876,2072,3521, 5164,6860,8471,9955,11276,12336,13100,13584,13858,14041, 14256,14549,14892,15173,15255,15045,14551,13878,13135,12415, 11740,11063,10305,9422,8446,7380,6253,5110,4020,3025, 2136,1287,396,-553,-1503,-2385,-3093,-3591,-3912,-4158, -4450,-4932,-5653,-6610,-7724,-8837,-9721,-10176,-10169,-9797, -9216,-8633,-8248,-8179,-8358,-8625,-8832,-8910,-8901,-8899, -8985,-9195,-9529,-9946,-10322,-10511,-10418,-10063,-9581,-9108, -8686,-8251,-7713,-7022,-6157,-5151,-4115,-3166,-2313,-1465, -497,660,2010,3523,5152,6813,8437,9942,11229,12199, 12844,13249,13553,13874,14276,14728,15123,15322,15224,14872, 14370,13800,13187,12536,11867,11182,10429,9541,8499,7362, 6230,5174,4213,3313,2405,1439,404,-633,-1576,-2364, -2960,-3344,-3574,-3785,-4154,-4798,-5728,-6855,-8054,-9119, -9841,-10069,-9832,-9338,-8834,-8513,-8420,-8502,-8645,-8755, -8812,-8799,-8749,-8765,-8970,-9382,-9874,-10296,-10516,-10488, -10252,-9924,-9612,-9334,-9016,-8535,-7841,-6985,-6057,-5154, -4302,-3482,-2642,-1718,-672,527,1901,3464,5161,6896, 8542,9994,11148,11962,12511,12956,13438,13986,14522,14955, 15213,15285,15154,14834,14361,13812,13251,12693,12098,11419, 10585,9589,8484,7390,6386,5442,4516,3573,2581,1517, 416,-656,-1574,-2262,-2700,-2955,-3144,-3408,-3905,-4741, -5891,-7197,-8399,-9256,-9654,-9655,-9387,-9018,-8708,-8570, -8602,-8724,-8815,-8785,-8669,-8568,-8587,-8811,-9229,-9746, -10198,-10446,-10474,-10357,-10197,-10059,-9915,-9660,-9222,-8591, -7834,-7018,-6189,-5363,-4551,-3740,-2897,-1974,-930,293, 1745,3436,5269,7061,8631,9883,10847,11618,12290,12924, 13541,14141,14679,15087,15325,15347,15148,14785,14360,13927, 13486,12978,12330,11528,10603,9597,8561,7550,6620,5737, 4821,3809,2686,1505,357,-673,-1518,-2097,-2384,-2481, -2624,-3048,-3857,-4986,-6275,-7521,-8537,-9175,-9393,-9296, -9056,-8837,-8751,-8805,-8904,-8932,-8826,-8621,-8453,-8447, -8673,-9106,-9606,-10022,-10272,-10366,-10397,-10416,-10418,-10352, -10165,-9810,-9284,-8630,-7904,-7142,-6356,-5559,-4754,-3974, -3208,-2358,-1272,121,1794,3627,5454,7101,8495,9657, 10634,11466,12202,12911,13630,14322,14897,15252,15374,15313, 15123,14859,14543,14180,13743,13189,12482,11605,10618,9635, 8708,7818,6921,5996,5022,3953,2753,1451,201,-804, -1445,-1751,-1860,-1981,-2315,-2992,-4034,-5313,-6627,-7772, -8582,-8996,-9072,-8980,-8892,-8910,-9026,-9137,-9118,-8926, -8636,-8419,-8413,-8636,-8997,-9400,-9756,-10040,-10248,-10393, -10510,-10612,-10644,-10537,-10275,-9899,-9406,-8795,-8061,-7239, -6412,-5661,-5019,-4402,-3675,-2707,-1423,141,1878,3667, 5408,6969,8280,9346,10273,11135,11986,12829,13611,14262, 14734,15005,15077,14993,14832,14648,14425,14086,13582,12906, 12110,11234,10293,9334,8437,7613,6800,5897,4815,3527, 2126,770,-368,-1150,-1564,-1713,-1782,-1998,-2540,-3467, -4684,-6016,-7237,-8162,-8701,-8920,-8980,-9056,-9213,-9406, -9496,-9404,-9156,-8862,-8633,-8560,-8690,-8961,-9284,-9574, -9834,-10096,-10355,-10579,-10722,-10778,-10746,-10634,-10431,-10096, -9568,-8831,-7993,-7194,-6520,-5954,-5419,-4798,-3958,-2850, -1455,196,2002,3793,5424,6825,8025,9084,10078,11054, 12009,12936,13744,14343,14698,14892,14994,15024,14968,14823, 14572,14214,13710,13022,12163,11225,10303,9471,8745,8032, 7195,6144,4860,3412,1947,665,-280,-830,-1054,-1126, -1267,-1677,-2478,-3647,-4990,-6240,-7199,-7834,-8230,-8513, -8794,-9092,-9354,-9486,-9409,-9169,-8886,-8689,-8622,-8670, -8809,-9015,-9274,-9583,-9927,-10245,-10480,-10627,-10746,-10860, -10935,-10897,-10650,-10169,-9508,-8759,-8016,-7347,-6773,-6283, -5785,-5154,-4219,-2938,-1385,327,2103,3818,5352,6666, 7815,8911,10035,11176,12217,13096,13811,14353,14730,14978, 15115,15162,15159,15096,14904,14498,13870,13065,12166,11287, 10518,9853,9224,8493,7520,6259,4793,3264,1830,670, -69,-383,-437,-509,-870,-1633,-2728,-3982,-5185,-6184, -6925,-7480,-7963,-8438,-8878,-9230,-9403,-9383,-9225,-9017, -8847,-8736,-8675,-8684,-8799,-9050,-9393,-9741,-10035,-10263, -10466,-10688,-10934,-11123,-11183,-11068,-10737,-10196,-9492,-8752, -8103,-7589,-7166,-6736,-6198,-5462,-4416,-3008,-1345,400, 2080,3624,5027,6337,7604,8846,10042,11187,12232,13124, 13822,14325,14669,14911,15116,15292,15394,15357,15105,14576, 13813,12953,12130,11430,10838,10280,9641,8808,7677,6232, 4598,3008,1700,826,395,268,180,-144,-828,-1835, -3002,-4128,-5103,-5920,-6646,-7339,-7991,-8554,-8961,-9195, -9291,-9288,-9202,-9047,-8842,-8672,-8614,-8725,-8947,-9212, -9483,-9750,-10010,-10273,-10543,-10842,-11143,-11367,-11397,-11171, -10717,-10112,-9450,-8812,-8267,-7847,-7522,-7168,-6599,-5697, -4441,-2918,-1287,337,1897,3397,4829,6180,7489,8778, 10044,11239,12277,13122,13758,14225,14585,14923,15264,15561, 15693,15550,15132,14496,13728,12936,12233,11674,11224,10752, 10084,9068,7650,5963,4271,2836,1834,1289,1057,894, 556,-82,-985,-2007,-3017,-3963,-4861,-5743,-6603,-7367, -7989,-8487,-8888,-9186,-9331,-9294,-9122,-8916,-8757,-8677, -8701,-8835,-9060,-9291,-9514,-9729,-9989,-10320,-10712,-11093, -11390,-11543,-11494,-11201,-10677,-10017,-9363,-8847,-8507,-8252, -7949,-7478,-6753,-5735,-4428,-2908,-1319,245,1746,3208, 4646,6052,7432,8797,10106,11285,12233,12956,13527,14042, 14551,15042,15461,15737,15804,15580,15063,14348,13565,12883, 12390,12055,11740,11247,10375,9061,7388,5622,4077,2961, 2288,1913,1601,1182,586,-157,-993,-1898,-2867,-3866, -4820,-5694,-6514,-7278,-7960,-8523,-8945,-9205,-9287,-9205, -9017,-8828,-8727,-8754,-8855,-8974,-9104,-9262,-9454,-9706, -10033,-10417,-10850,-11284,-11614,-11716,-11517,-11060,-10462,-9872, -9387,-9030,-8790,-8572,-8228,-7658,-6822,-5738,-4415,-2917, -1384,108,1541,2961,4425,5938,7432,8842,10087,11147, 12013,12729,13365,13969,14574,15151,15625,15887,15844,15474, 14832,14095,13444,13004,12786,12633,12303,11582,10364,8760, 7027,5477,4291,3442,2825,2330,1869,1358,740,-12, -876,-1804,-2754,-3704,-4644,-5543,-6396,-7196,-7924,-8524, -8934,-9117,-9102,-8980,-8853,-8781,-8758,-8782,-8845,-8942, -9063,-9192,-9356,-9602,-10001,-10523,-11053,-11481,-11701,-11637, -11302,-10790,-10246,-9779,-9443,-9206,-9007,-8769,-8375,-7735, -6821,-5660,-4332,-2926,-1517,-113,1331,2836,4393,5950, 7441,8803,9986,10983,11817,12537,13244,13974,14716,15389, 15858,16007,15773,15224,14515,13885,13531,13453,13450,13233, 12589,11483,10062,8514,7004,5667,4599,3795,3183,2668, 2154,1578,901,121,-752,-1682,-2623,-3538,-4459,-5407, -6360,-7250,-7980,-8499,-8809,-8964,-8991,-8920,-8826,-8786, -8817,-8881,-8927,-8955,-8988,-9068,-9279,-9658,-10195,-10806, -11327,-11640,-11696,-11497,-11105,-10621,-10161,-9801,-9576,-9446, -9302,-9019,-8517,-7754,-6773,-5642,-4414,-3121,-1764,-346, 1158,2730,4332,5911,7389,8690,9767,10679,11493,12278, 13103,13999,14879,15592,15944,15823,15309,14670,14178,13947, 13938,13962,13809,13326,12458,11242,9808,8345,6987,5812, 4846,4077,3463,2920,2369,1727,973,158,-667,-1498, -2394,-3375,-4406,-5431,-6397,-7259,-7967,-8462,-8741,-8847, -8867,-8854,-8850,-8892,-8956,-8982,-8941,-8866,-8850,-8985, -9335,-9868,-10487,-11083,-11532,-11738,-11687,-11404,-10975,-10527, -10175,-9965,-9857,-9763,-9564,-9167,-8555,-7763,-6813,-5748, -4585,-3335,-1989,-531,1039,2693,4344,5924,7361,8577, 9543,10339,11144,12104,13233,14370,15263,15711,15692,15338, 14865,14475,14293,14321,14412,14380,14055,13374,12360,11112, 9746,8358,7069,5974,5125,4445,3829,3189,2517,1828, 1121,379,-409,-1259,-2202,-3231,-4303,-5364,-6361,-7219, -7880,-8313,-8542,-8635,-8699,-8788,-8898,-8970,-8968,-8877, -8748,-8662,-8716,-8960,-9423,-10048,-10710,-11283,-11651,-11738, -11547,-11185,-10794,-10483,-10291,-10187,-10096,-9955,-9688,-9229, -8570,-7760,-6853,-5865,-4761,-3519,-2149,-658,974,2730, 4495,6072,7327,8281,9106,10003,11125,12415,13686,14728, 15366,15553,15362,15002,14702,14589,14653,14782,14824,14680, 14255,13487,12379,11052,9686,8420,7299,6328,5491,4747, 4061,3395,2718,2031,1340,620,-160,-1040,-2032,-3127, -4269,-5379,-6381,-7188,-7751,-8104,-8341,-8520,-8704,-8876, -8996,-9013,-8921,-8767,-8615,-8551,-8671,-9037,-9616,-10335, -11004,-11476,-11674,-11620,-11379,-11056,-10759,-10561,-10461,-10406, -10302,-10094,-9765,-9303,-8669,-7868,-6960,-6021,-5024,-3864, -2447,-760,1091,2912,4515,5796,6806,7707,8683,9863, 11260,12700,13909,14705,15050,15075,14923,14738,14629,14666, 14833,15027,15080,14842,14247,13325,12168,10900,9649,8494, 7463,6539,5705,4929,4203,3513,2846,2178,1510,822, 49,-875,-1958,-3148,-4355,-5460,-6373,-7067,-7566,-7944, -8261,-8545,-8791,-8978,-9068,-9025,-8847,-8613,-8438,-8451, -8717,-9227,-9897,-10596,-11177,-11518,-11572,-11427,-11185,-10951, -10764,-10629,-10530,-10462,-10386,-10198,-9815,-9228,-8525,-7808, -7114,-6350,-5367,-4042,-2382,-530,1317,2954,4264,5293, 6239,7296,8574,10023,11502,12822,13827,14437,14678,14663, 14553,14499,14580,14805,15083,15269,15227,14849,14126,13148, 12026,10855,9708,8634,7650,6748,5911,5120,4367,3659, 3012,2413,1808,1136,309,-724,-1924,-3155,-4314,-5335, -6174,-6829,-7330,-7738,-8121,-8499,-8824,-9012,-9011,-8843, -8582,-8331,-8215,-8346,-8758,-9394,-10094,-10714,-11145,-11369, -11398,-11280,-11079,-10841,-10667,-10623,-10661,-10643,-10471,-10116, -9624,-9077,-8547,-8038,-7467,-6680,-5515,-3935,-2088,-259, 1341,2662,3768,4811,5943,7236,8680,10210,11679,12898, 13721,14149,14278,14275,14281,14417,14689,15035,15332,15443, 15275,14796,14022,13043,11961,10865,9795,8787,7849,6951, 6073,5233,4478,3835,3279,2741,2121,1356,432,-669, -1904,-3140,-4262,-5201,-5963,-6591,-7147,-7663,-8146,-8570, -8881,-9004,-8895,-8617,-8299,-8110,-8162,-8470,-8956,-9550, -10173,-10735,-11140,-11302,-11240,-11045,-10866,-10784,-10786,-10836, -10847,-10705,-10362,-9902,-9459,-9128,-8871,-8523,-7862,-6795, -5345,-3669,-1933,-327,1043,2215,3296,4428,5725,7206, 8790,10352,11735,12784,13427,13724,13848,13953,14140,14447, 14845,15228,15488,15519,15261,14711,13912,12946,11930,10930, 9949,8965,7983,7021,6127,5333,4660,4092,3575,3042, 2392,1541,495,-686,-1920,-3096,-4125,-4995,-5741,-6395, -7026,-7669,-8275,-8726,-8925,-8858,-8622,-8352,-8149,-8067, -8177,-8524,-9079,-9729,-10348,-10821,-11063,-11084,-10963,-10832, -10792,-10887,-11011,-11013,-10811,-10447,-10042,-9745,-9585,-9483, -9275,-8784,-7901,-6635,-5095,-3470,-1906,-511,693,1784, 2914,4195,5679,7315,8962,10460,11679,12534,13039,13315, 13523,13772,14112,14528,14997,15413,15642,15580,15196,14574, 13795,12934,12013,11057,10074,9077,8077,7109,6229,5488, 4900,4426,3937,3346,2596,1658,550,-662,-1873,-2973, -3887,-4675,-5450,-6263,-7063,-7776,-8323,-8655,-8762,-8667, -8429,-8153,-7955,-7942,-8165,-8637,-9285,-9965,-10498,-10787, -10837,-10771,-10762,-10877,-11058,-11175,-11126,-10874,-10497,-10145, -9928,-9875,-9898,-9848,-9542,-8864,-7795,-6425,-4908,-3412, -2048,-839,262,1361,2608,4082,5740,7452,9051,10399, 11446,12180,12642,12936,13209,13577,14063,14618,15127,15484, 15603,15456,15050,14440,13703,12906,12050,11122,10109,9056, 8042,7127,6338,5685,5149,4700,4229,3585,2701,1621, 455,-674,-1709,-2674,-3597,-4500,-5400,-6286,-7109,-7807, -8318,-8597,-8648,-8508,-8237,-7941,-7769,-7868,-8291,-8928, -9600,-10119,-10402,-10501,-10553,-10668,-10877,-11114,-11249,-11194, -10946,-10581,-10242,-10048,-10054,-10168,-10244,-10116,-9649,-8792, -7603,-6214,-4794,-3475,-2323,-1267,-167,1074,2510,4121, 5834,7519,9041,10270,11172,11787,12221,12598,13006,13500, 14066,14648,15146,15446,15477,15261,14867,14354,13711,12947, 12070,11109,10088,9049,8044,7159,6464,5968,5553,5092, 4478,3665,2689,1636,569,-462,-1445,-2400,-3367,-4351, -5316,-6223,-7054,-7761,-8281,-8536,-8483,-8192,-7833,-7615, -7674,-8034,-8590,-9167,-9618,-9905,-10072,-10226,-10450,-10754, -11052,-11225,-11188,-10935,-10583,-10259,-10075,-10095,-10270,-10472, -10521,-10247,-9574,-8543,-7294,-6008,-4797,-3686,-2640,-1584, -423,928,2502,4236,6002,7628,9006,10078,10859,11427, 11891,12366,12920,13546,14181,14728,15128,15348,15363,15177, 14815,14327,13728,12999,12118,11098,9994,8933,8029,7318, 6784,6351,5903,5333,4599,3707,2738,1752,773,-219, -1229,-2237,-3222,-4191,-5170,-6164,-7113,-7870,-8297,-8342, -8096,-7760,-7549,-7591,-7883,-8326,-8799,-9188,-9453,-9657, -9885,-10211,-10601,-10964,-11187,-11205,-11008,-10665,-10304,-10083, -10092,-10316,-10614,-10792,-10677,-10188,-9363,-8307,-7140,-5988, -4932,-3976,-3017,-1942,-665,827,2505,4286,6025,7573, 8817,9736,10416,10996,11575,12180,12820,13480,14124,14683, 15054,15201,15161,14998,14736,14343,13761,12960,11970,10875, 9792,8830,8081,7520,7061,6593,6038,5373,4612,3766, 2843,1849,839,-147,-1086,-2017,-3002,-4097,-5276,-6409, -7338,-7918,-8105,-7975,-7714,-7537,-7579,-7830,-8184,-8526, -8808,-9051,-9286,-9572,-9931,-10381,-10837,-11173,-11268,-11091, -10730,-10359,-10132,-10131,-10342,-10661,-10933,-10991,-10716,-10079, -9158,-8110,-7073,-6103,-5195,-4305,-3354,-2217,-825,823, 2635,4441,6073,7453,8554,9418,10110,10729,11373,12078, 12822,13541,14152,14625,14932,15086,15118,15056,14860,14458, 13794,12875,11812,10740,9779,8974,8328,7783,7272,6760, 6211,5566,4777,3855,2861,1883,977,138,-722,-1716, -2885,-4197,-5520,-6635,-7369,-7685,-7692,-7570,-7486,-7541, -7732,-7994,-8264,-8501,-8683,-8877,-9158,-9569,-10097,-10643, -11059,-11217,-11114,-10813,-10445,-10170,-10113,-10297,-10643,-10988, -11172,-11062,-10628,-9915,-9011,-8027,-7101,-6283,-5531,-4711, -3691,-2389,-826,920,2745,4502,6052,7313,8297,9083, 9798,10528,11308,12118,12891,13573,14123,14536,14841,15075, 15227,15235,15000,14466,13668,12715,11726,10781,9914,9137, 8485,7966,7521,7048,6456,5702,4800,3828,2893,2067, 1324,557,-383,-1599,-3032,-4462,-5702,-6600,-7120,-7327, -7360,-7361,-7437,-7625,-7877,-8090,-8224,-8326,-8476,-8747, -9186,-9752,-10343,-10843,-11126,-11106,-10834,-10471,-10195,-10112, -10246,-10546,-10910,-11206,-11294,-11059,-10485,-9694,-8836,-8012, -7277,-6591,-5877,-5020,-3911,-2500,-816,1000,2816,4473, 5865,6987,7906,8724,9532,10378,11251,12077,12795,13395, 13925,14417,14864,15213,15376,15287,14932,14347,13572,12678, 11725,10783,9936,9239,8709,8291,7880,7340,6592,5675, 4728,3875,3167,2536,1828,900,-298,-1713,-3207,-4574, -5649,-6364,-6753,-6942,-7092,-7283,-7519,-7742,-7904,-7988, -8028,-8116,-8343,-8751,-9334,-9998,-10570,-10912,-10983,-10817, -10514,-10207,-10042,-10101,-10373,-10773,-11143,-11335,-11248,-10860, -10235,-9489,-8746,-8067,-7454,-6855,-6160,-5240,-4002,-2459, -689,1137,2848,4343,5578,6603,7547,8497,9459,10356, 11158,11874,12531,13190,13839,14442,14926,15250,15376,15262, 14901,14314,13523,12589,11601,10678,9944,9436,9076,8689, 8133,7370,6469,5584,4816,4178,3597,2963,2133,1007, -387,-1915,-3376,-4578,-5450,-6034,-6442,-6762,-7068,-7385, -7662,-7833,-7866,-7824,-7836,-8025,-8432,-9018,-9670,-10291, -10753,-10950,-10873,-10605,-10286,-10075,-10084,-10325,-10703,-11099, -11382,-11444,-11223,-10736,-10078,-9390,-8784,-8270,-7781,-7211, -6465,-5430,-4048,-2372,-562,1167,2690,4003,5192,6312, 7381,8387,9307,10125,10876,11621,12367,13101,13790,14385, 14855,15187,15355,15291,14932,14260,13340,12322,11395,10680, 10181,9793,9379,8829,8097,7243,6385,5650,5081,4612, 4061,3290,2226,899,-579,-2048,-3369,-4418,-5170,-5734, -6230,-6725,-7177,-7520,-7697,-7715,-7657,-7636,-7756,-8083, -8617,-9294,-9981,-10535,-10842,-10868,-10668,-10377,-10143,-10074, -10222,-10573,-11006,-11375,-11546,-11458,-11122,-10605,-9996,-9414, -8936,-8562,-8171,-7586,-6676,-5414,-3874,-2208,-537,1033, 2480,3815,5067,6258,7348,8317,9171,9969,10769,11589, 12396,13130,13782,14390,14942,15388,15598,15443,14899,14068, 13118,12231,11518,10998,10600,10175,9613,8865,8017,7208, 6534,6027,5596,5127,4470,3514,2264,832,-629,-1967, -3108,-4042,-4829,-5524,-6167,-6739,-7185,-7438,-7509,-7445, -7377,-7420,-7682,-8172,-8833,-9542,-10172,-10589,-10748,-10641, -10392,-10138,-10037,-10135,-10428,-10822,-11240,-11517,-11593,-11348, -11107,-10656,-10161,-9842,-9585,-9297,-8807,-8045,-6959,-5625, -4109,-2527,-936,600,2078,3473,4759,5910,6952,7917, 8847,9744,10601,11395,12142,12891,13679,14479,15180,15613, 15685,15350,14679,13823,13003,12348,11867,11467,11025,10450, 9720,8899,8104,7443,6975,6632,6256,5676,4805,3653, 2305,914,-411,-1619,-2708,-3689,-4584,-5424,-6169,-6766, -7145,-7299,-7269,-7190,-7197,-7390,-7809,-8435,-9180,-9898, -10435,-10705,-10717,-10553,-10334,-10188,-10214,-10454,-10883,-11373, -11765,-11908,-11757,-11391,-10956,-10583,-10328,-10165,-9974,-9609, -8991,-8105,-6983,-5673,-4237,-2697,-1087,491,1945,3268, 4479,5634,6747,7796,8742,9572,10343,11107,11913,12807, 13774,14688,15369,15654,15504,15011,14332,13634,13030,12565, 12172,11735,11155,10410,9566,8763,8129,7706,7410,7093, 6587,5816,4793,3587,2283,982,-243,-1388,-2491,-3566, -4579,-5498,-6249,-6774,-7040,-7097,-7019,-6956,-7057,-7406, -7991,-8712,-9442,-10052,-10459,-10611,-10525,-10292,-10083,-10055, -10278,-10707,-11209,-11622,-11814,-11749,-11472,-11124,-10839,-10672, -10573,-10431,-10138,-9656,-8980,-8126,-7044,-5717,-4205,-2638, -1094,371,1738,3047,4328,5567,6719,7734,8584,9305, 10019,10859,11864,12974,14060,14919,15417,15489,15198,14693, 14128,13634,13240,12880,12439,11838,11065,10224,9442,8820, 8394,8103,7827,7416,6766,5854,4763,3589,2393,1199, 10,-1169,-2343,-3501,-4589,-5539,-6255,-6673,-6806,-6772, -6725,-6786,-7039,-7518,-8190,-8960,-9689,-10225,-10469,-10442, -10244,-10027,-9960,-10153,-10570,-11075,-11509,-11732,-11705,-11509, -11282,-11104,-10977,-10874,-10758,-10581,-10298,-9851,-9179,-8251, -7082,-5698,-4198,-2707,-1274,118,1505,2904,4287,5560, 6631,7487,8198,8902,9740,10792,12008,13235,14287,14994, 15275,15178,14846,14457,14105,13803,13487,13054,12454,11697, 10855,10058,9429,8998,8709,8451,8086,7532,6778,5850, 4794,3676,2537,1388,207,-1025,-2304,-3559,-4672,-5540, -6129,-6446,-6527,-6497,-6496,-6644,-7022,-7657,-8455,-9250, -9882,-10234,-10280,-10108,-9904,-9850,-10041,-10450,-10923,-11306, -11526,-11592,-11537,-11404,-11249,-11117,-11021,-10949,-10885,-10765, -10510,-10045,-9295,-8259,-7011,-5658,-4282,-2923,-1534,-68, 1457,2956,4310,5450,6355,7092,7783,8588,9624,10901, 12275,13495,14377,14854,14970,14848,14645,14454,14281,14053, 13681,13104,12353,11534,10769,10131,9663,9336,9058,8743, 8301,7666,6854,5927,4948,3918,2827,1653,377,-960, -2287,-3542,-4623,-5435,-5937,-6161,-6195,-6169,-6241,-6534, -7089,-7886,-8767,-9499,-9912,-9990,-9871,-9732,-9723,-9904, -10236,-10637,-11021,-11309,-11471,-11503,-11437,-11307,-11161,-11049, -11014,-11049,-11083,-11004,-10686,-10075,-9197,-8130,-6966,-5754, -4483,-3123,-1642,-48,1559,3041,4276,5218,5951,6630, 7439,8482,9764,11168,12509,13570,14243,14565,14659,14648, 14640,14623,14513,14215,13717,13042,12262,11491,10823,10307, 9950,9685,9401,8995,8436,7751,6977,6133,5210,4183, 3042,1795,462,-927,-2300,-3561,-4601,-5349,-5764,-5884, -5855,-5864,-6091,-6637,-7441,-8321,-9076,-9559,-9750,-9737, -9671,-9688,-9829,-10095,-10437,-10794,-11130,-11400,-11538,-11528, -11403,-11236,-11119,-11132,-11257,-11393,-11410,-11210,-10756,-10060, -9176,-8189,-7142,-6018,-4759,-3303,-1662,53,1648,2973, 3975,4744,5436,6228,7241,8515,9955,11369,12542,13380, 13914,14242,14468,14632,14733,14728,14560,14186,13605,12883, 12117,11434,10911,10523,10204,9881,9520,9071,8511,7850, 7123,6328,5425,4379,3187,1887,524,-846,-2228,-3511, -4509,-5105,-5323,-5326,-5359,-5602,-6128,-6886,-7740,-8502, -9053,-9368,-9504,-9541,-9585,-9700,-9901,-10196,-10568,-10974, -11324,-11535,-11554,-11421,-11258,-11182,-11236,-11409,-11623,-11746, -11651,-11313,-10769,-10092,-9342,-8519,-7569,-6399,-4989,-3365, -1629,51,1489,2595,3409,4108,4912,5945,7218,8631, 10035,11289,12310,13080,13647,14067,14414,14695,14873,14857, 14602,14132,13509,12824,12166,11595,11151,10808,10489,10144, 9742,9287,8760,8151,7451,6653,5746,4724,3547,2191, 686,-842,-2260,-3423,-4181,-4549,-4671,-4767,-5022,-5534, -6250,-7052,-7813,-8438,-8886,-9163,-9309,-9376,-9439,-9599, -9904,-10320,-10780,-11187,-11437,-11495,-11397,-11241,-11153,-11231, -11467,-11746,-11923,-11904,-11675,-11284,-10808,-10277,-9681,-8946, -7965,-6659,-5047,-3279,-1551,-62,1093,1974,2755,3607, 4636,5861,7243,8664,9991,11120,12039,12796,13450,14020, 14486,14814,14960,14875,14563,14073,13476,12866,12312,11839, 11427,11076,10750,10425,10053,9605,9066,8442,7778,7059, 6220,5172,3860,2297,612,-994,-2322,-3248,-3768,-4028, -4236,-4547,-5014,-5642,-6377,-7133,-7825,-8401,-8793,-8986, -9049,-9095,-9227,-9509,-9936,-10436,-10891,-11186,-11262,-11165, -11026,-10975,-11079,-11316,-11595,-11799,-11833,-11688,-11415,-11096, -10778,-10434,-9934,-9143,-7974,-6452,-4750,-3071,-1584,-355, 615,1435,2268,3260,4452,5791,7176,8491,9665,10703, 11623,12435,13156,13794,14297,14605,14683,14526,14187,13739, 13231,12692,12175,11719,11363,11077,10801,10458,10018,9509, 8995,8498,7979,7344,6465,5241,3704,1989,316,-1103, -2162,-2874,-3338,-3680,-4024,-4453,-5016,-5713,-6494,-7262, -7914,-8392,-8670,-8766,-8787,-8881,-9157,-9606,-10136,-10609, -10903,-10994,-10935,-10823,-10783,-10893,-11143,-11445,-11668,-11709, -11573,-11374,-11223,-11127,-11001,-10694,-10076,-9070,-7719,-6122, -4471,-2966,-1724,-723,159,1047,2031,3166,4432,5758, 7073,8298,9403,10408,11367,12278,13076,13719,14173,14416, 14463,14322,14012,13566,13060,12551,12110,11765,11484,11199, 10836,10387,9906,9474,9126,8814,8382,7659,6556,5106, 3458,1808,309,-919,-1841,-2477,-2940,-3343,-3773,-4307, -4971,-5767,-6614,-7385,-7955,-8275,-8391,-8442,-8568,-8860, -9323,-9857,-10351,-10687,-10810,-10756,-10653,-10652,-10817,-11105, -11407,-11591,-11610,-11513,-11398,-11354,-11397,-11454,-11374,-10975, -10166,-8953,-7468,-5888,-4402,-3105,-2023,-1087,-167,829, 1944,3169,4457,5740,6968,8137,9266,10345,11371,12310, 13108,13739,14196,14460,14496,14313,13937,13463,12990,12598, 12289,12024,11701,11276,10772,10289,9940,9729,9557,9267, 8709,7779,6491,4953,3312,1747,375,-737,-1575,-2180, -2637,-3065,-3574,-4253,-5102,-6013,-6841,-7479,-7867,-8048, -8132,-8265,-8563,-9042,-9631,-10165,-10503,-10609,-10579,-10531, -10580,-10772,-11056,-11333,-11511,-11534,-11442,-11352,-11385,-11549, -11761,-11854,-11664,-11074,-10077,-8775,-7305,-5839,-4517,-3389, -2399,-1443,-419,693,1874,3083,4316,5551,6793,7998, 9149,10226,11236,12191,13031,13720,14203,14437,14387,14101, 13700,13315,13009,12761,12490,12126,11647,11123,10659,10346, 10194,10119,9963,9578,8856,7772,6397,4854,3263,1748, 441,-574,-1290,-1794,-2245,-2785,-3490,-4345,-5289,-6202, -6929,-7383,-7601,-7704,-7863,-8218,-8749,-9336,-9840,-10173, -10310,-10323,-10328,-10428,-10644,-10940,-11203,-11345,-11332,-11231, -11165,-11240,-11474,-11791,-12037,-12052,-11699,-10937,-9819,-8498, -7135,-5844,-4679,-3615,-2593,-1564,-504,608,1773,2981, 4217,5475,6721,7910,9026,10089,11136,12175,13111,13802, 14180,14259,14119,13870,13628,13418,13207,12929,12549,12061, 11531,11064,10755,10624,10603,10553,10327,9833,9022,7872, 6426,4817,3216,1783,624,-228,-837,-1336,-1877,-2595, -3510,-4541,-5513,-6284,-6782,-7049,-7211,-7445,-7841,-8391, -8999,-9519,-9849,-9996,-10041,-10101,-10272,-10550,-10855,-11096, -11207,-11182,-11080,-11012,-11081,-11343,-11739,-12131,-12325,-12173, -11620,-10731,-9615,-8391,-7162,-5971,-4847,-3774,-2731,-1696, -639,462,1656,2920,4188,5401,6553,7667,8797,9989, 11189,12303,13174,13716,13940,13959,13889,13792,13705,13571, 13315,12907,12394,11869,11418,11100,10933,10886,10889,10840, 10607,10058,9127,7840,6299,4663,3117,1817,847,171, -353,-922,-1688,-2676,-3767,-4794,-5606,-6146,-6475,-6713, -7003,-7447,-8039,-8664,-9179,-9521,-9697,-9801,-9940,-10172, -10480,-10798,-11049,-11157,-11113,-10976,-10873,-10937,-11220,-11657, -12120,-12450,-12504,-12196,-11547,-10644,-9586,-8441,-7265,-6115, -5026,-4001,-3015,-1996,-880,338,1599,2837,4002,5109, 6237,7439,8722,10039,11278,12318,13047,13466,13678,13794, 13886,13919,13847,13623,13264,12810,12300,11810,11418,11180, 11117,11171,11239,11193,10903,10252,9177,7738,6099,4480, 3095,2047,1300,705,71,-741,-1762,-2903,-3980,-4847, -5437,-5820,-6128,-6516,-7034,-7651,-8266,-8773,-9117,-9332, -9487,-9671,-9952,-10334,-10716,-10981,-11081,-11022,-10863,-10735, -10764,-11016,-11462,-11965,-12369,-12575,-12521,-12169,-11521,-10622, -9549,-8405,-7274,-6225,-5253,-4290,-3265,-2144,-941,288, 1478,2600,3688,4809,6044,7416,8846,10180,11296,12161, 12800,13267,13615,13864,14012,14035,13914,13640,13226,12722, 12199,11731,11396,11237,11245,11373,11505,11465,11065,10208, 8892,7290,5669,4246,3138,2318,1661,969,94,-982, -2163,-3268,-4149,-4775,-5242,-5651,-6100,-6658,-7291,-7915, -8426,-8768,-8973,-9128,-9344,-9661,-10075,-10488,-10790,-10889, -10799,-10623,-10479,-10462,-10649,-11009,-11463,-11916,-12268,-12436, -12341,-11925,-11192,-10222,-9157,-8104,-7113,-6168,-5213,-4192, -3065,-1862,-666,446,1475,2505,3639,4921,6311,7732, 9089,10289,11291,12108,12762,13276,13676,13966,14120,14103, 13918,13585,13146,12638,12116,11670,11404,11377,11565,11839, 12002,11836,11197,10087,8622,7031,5588,4459,3612,2891, 2110,1166,50,-1131,-2256,-3196,-3910,-4447,-4939,-5480, -6108,-6789,-7449,-7991,-8355,-8582,-8774,-9031,-9412,-9876, -10323,-10641,-10762,-10701,-10542,-10397,-10358,-10451,-10698,-11098, -11591,-12079,-12435,-12552,-12343,-11806,-10994,-10043,-9093,-8215, -7345,-6399,-5330,-4162,-2977,-1853,-822,169,1195,2313, 3558,4920,6338,7731,9019,10148,11096,11910,12618,13198, 13632,13920,14050,14032,13861,13521,13014,12427,11887,11536, 11452,11647,12023,12362,12417,11997,11063,9752,8305,6949, 5820,4917,4123,3274,2279,1135,-62,-1191,-2153,-2931, -3567,-4147,-4763,-5465,-6214,-6922,-7491,-7873,-8118,-8338, -8653,-9104,-9625,-10098,-10441,-10625,-10652,-10568,-10416,-10289, -10275,-10434,-10772,-11266,-11839,-12350,-12643,-12618,-12249,-11612, -10828,-9999,-9188,-8357,-7436,-6373,-5239,-4099,-3027,-2028, -1081,-105,968,2169,3475,4847,6219,7535,8759,9874, 10851,11674,12361,12932,13397,13739,13914,13897,13675,13237, 12633,11988,11513,11367,11565,11998,12452,12662,12421,11696, 10603,9337,8098,7019,6111,5271,4388,3365,2212,1010, -127,-1106,-1916,-2611,-3272,-3980,-4755,-5551,-6289,-6868, -7276,-7574,-7858,-8201,-8644,-9151,-9659,-10078,-10358,-10485, -10471,-10352,-10181,-10044,-10064,-10321,-10805,-11431,-12028,-12422, -12511,-12313,-11916,-11386,-10771,-10057,-9253,-8348,-7348,-6272, -5180,-4141,-3183,-2281,-1355,-328,818,2054,3346,4675, 6021,7328,8543,9627,10574,11380,12068,12684,13225,13642, 13864,13803,13425,12794,12086,11523,11301,11481,11944,12452, 12756,12685,12174,11304,10248,9179,8187,7298,6442,5534, 4501,3346,2135,990,6,-812,-1554,-2316,-3133,-3985, -4803,-5528,-6133,-6609,-6982,-7319,-7689,-8125,-8621,-9138, -9619,-10017,-10289,-10383,-10277,-10034,-9788,-9711,-9906,-10378, -10989,-11579,-12018,-12238,-12234,-12037,-11708,-11276,-10746,-10079, -9258,-8310,-7288,-6262,-5277,-4327,-3408,-2483,-1507,-450, 699,1930,3241,4601,5965,7281,8473,9502,10386,11188, 11959,12724,13401,13862,13983,13707,13094,12339,11701,11398, 11512,11954,12501,12890,12944,12622,11969,11121,10215,9350, 8539,7714,6788,5705,4511,3302,2174,1174,301,-515, -1351,-2246,-3161,-4039,-4825,-5483,-6021,-6480,-6890,-7285, -7692,-8155,-8692,-9277,-9836,-10252,-10429,-10344,-10072,-9775, -9635,-9752,-10129,-10681,-11275,-11767,-12080,-12209,-12206,-12094, -11849,-11448,-10870,-10132,-9269,-8336,-7370,-6409,-5477,-4550, -3623,-2680,-1695,-637,515,1776,3138,4562,5946,7201, 8282,9213,10087,11013,11992,12934,13654,13980,13839,13299, 12561,11891,11520,11550,11915,12440,12892,13083,12916,12436, 11773,11057,10356,9652,8871,7935,6855,5682,4492,3372, 2357,1437,554,-349,-1297,-2259,-3172,-3997,-4739,-5395, -5960,-6424,-6808,-7168,-7599,-8175,-8869,-9554,-10074,-10328, -10310,-10079,-9785,-9590,-9628,-9910,-10364,-10879,-11359,-11753, -12025,-12194,-12250,-12173,-11922,-11485,-10871,-10117,-9271,-8381, -7457,-6520,-5594,-4684,-3775,-2867,-1923,-873,346,1716, 3169,4586,5862,6956,7923,8872,9917,11087,12267,13242, 13795,13845,13443,12771,12090,11653,11589,11883,12382,12845, 13079,13027,12736,12292,11779,11236,10634,9916,9033,7976, 6815,5664,4579,3567,2611,1662,693,-290,-1239,-2163, -3068,-3941,-4729,-5366,-5842,-6212,-6567,-7015,-7616,-8356, -9130,-9770,-10135,-10188,-10010,-9749,-9565,-9549,-9722,-10042, -10450,-10895,-11325,-11720,-12038,-12233,-12286,-12174,-11877,-11411, -10803,-10088,-9291,-8421,-7490,-6543,-5641,-4809,-3992,-3142, -2176,-1022,340,1807,3229,4485,5552,6523,7536,8706, 10027,11387,12585,13409,13706,13479,12902,12242,11775,11655, 11874,12276,12698,12977,13029,12886,12629,12307,11935,11474, 10855,10044,9062,7985,6897,5837,4799,3767,2760,1790, 837,-128,-1113,-2112,-3095,-3992,-4718,-5246,-5630,-5979, -6433,-7064,-7851,-8679,-9401,-9873,-10048,-9982,-9798,-9619, -9545,-9615,-9812,-10114,-10490,-10920,-11355,-11779,-12122,-12309, -12301,-12135,-11830,-11390,-10818,-10125,-9305,-8396,-7454,-6561, -5776,-5070,-4325,-3426,-2288,-953,472,1848,3068,4112, 5082,6114,7331,8763,10299,11719,12785,13322,13310,12905, 12354,11916,11741,11862,12183,12546,12817,12938,12930,12843, 12713,12500,12145,11611,10924,10105,9186,8184,7118,6034, 4975,3964,2997,2053,1081,42,-1045,-2128,-3127,-3943, -4532,-4940,-5309,-5787,-6450,-7269,-8134,-8899,-9464,-9784, -9871,-9796,-9668,-9571,-9550,-9636,-9827,-10137,-10547,-11016, -11482,-11878,-12162,-12298,-12281,-12138,-11882,-11486,-10906,-10127, -9214,-8284,-7449,-6752,-6120,-5431,-4571,-3486,-2200,-818, 514,1686,2685,3604,4610,5860,7387,9068,10674,11952, 12733,12985,12800,12397,12020,11855,11926,12150,12405,12622, 12786,12919,12999,13000,12882,12633,12239,11701,11038,10252, 9340,8314,7229,6156,5155,4221,3295,2312,1229,54, -1134,-2207,-3072,-3720,-4200,-4632,-5137,-5801,-6626,-7509, -8333,-8991,-9438,-9678,-9751,-9704,-9603,-9517,-9510,-9616, -9857,-10231,-10702,-11198,-11637,-11966,-12182,-12315,-12387,-12333, -12077,-11580,-10865,-10003,-9134,-8365,-7714,-7148,-6533,-5733, -4684,-3419,-2058,-765,336,1255,2117,3102,4346,5897, 7666,9432,10929,11958,12444,12496,12318,12104,11965,11952, 12054,12237,12448,12668,12868,13031,13124,13113,12985,12739, 12376,11869,11201,10372,9405,8336,7273,6308,5425,4542, 3555,2422,1178,-74,-1212,-2145,-2850,-3394,-3889,-4444, -5123,-5927,-6799,-7652,-8405,-9002,-9411,-9626,-9675,-9609, -9487,-9385,-9398,-9586,-9934,-10369,-10800,-11192,-11547,-11884, -12189,-12429,-12545,-12442,-12056,-11416,-10616,-9791,-9075,-8528, -8061,-7511,-6756,-5729,-4490,-3180,-1950,-902,-41,725, 1607,2800,4361,6184,8050,9696,10928,11697,12056,12133, 12074,11987,11931,11946,12059,12265,12508,12746,12952,13104, 13182,13180,13093,12904,12573,12039,11286,10365,9365,8381, 7470,6634,5781,4801,3647,2361,1052,-146,-1134,-1908, -2528,-3093,-3691,-4377,-5166,-6032,-6901,-7728,-8452,-9042, -9447,-9619,-9587,-9448,-9322,-9306,-9457,-9735,-10064,-10392, -10719,-11066,-11462,-11895,-12301,-12586,-12645,-12400,-11850,-11109, -10354,-9720,-9246,-8858,-8399,-7709,-6732,-5518,-4218,-3014, -2043,-1299,-629,177,1295,2801,4593,6460,8185,9614, 10679,11364,11726,11847,11840,11793,11777,11832,11982,12203, 12430,12623,12771,12905,13028,13117,13112,12935,12528,11891, 11065,10157,9272,8466,7708,6904,5963,4832,3561,2244, 1003,-67,-917,-1605,-2222,-2859,-3553,-4313,-5126,-5997, -6893,-7763,-8514,-9050,-9327,-9370,-9280,-9196,-9198,-9305, -9511,-9757,-9999,-10226,-10503,-10904,-11437,-11997,-12436,-12617, -12475,-12044,-11431,-10775,-10213,-9806,-9499,-9134,-8542,-7621, -6437,-5167,-4017,-3110,-2439,-1850,-1127,-96,1275,2935, 4734,6497,8066,9356,10331,10974,11320,11438,11448,11459, 11543,11707,11906,12094,12244,12379,12545,12770,13006,13163, 13140,12866,12337,11634,10855,10089,9381,8704,7967,7076, 5991,4750,3447,2206,1105,168,-633,-1334,-1992,-2649, -3345,-4124,-5011,-5981,-6948,-7802,-8450,-8843,-9002,-9007, -8971,-9002,-9126,-9294,-9442,-9554,-9687,-9920,-10319,-10883, -11533,-12102,-12429,-12419,-12094,-11561,-10990,-10525,-10235,-10044, -9769,-9220,-8327,-7187,-5991,-4912,-4058,-3416,-2866,-2229, -1345,-128,1378,3074,4830,6511,8009,9230,10116,10664, 10948,11093,11195,11330,11505,11697,11852,11975,12121,12336, 12639,12987,13278,13385,13240,12847,12271,11611,10954,10343, 9746,9081,8251,7210,6013,4759,3522,2352,1284,349, -442,-1107,-1722,-2380,-3149,-4060,-5077,-6134,-7110,-7876, -8368,-8627,-8748,-8843,-8968,-9115,-9238,-9307,-9325,-9359, -9519,-9880,-10452,-11155,-11841,-12310,-12424,-12186,-11736,-11268, -10934,-10753,-10634,-10412,-9942,-9140,-8067,-6919,-5881,-5039, -4400,-3853,-3269,-2516,-1512,-201,1381,3129,4907,6578, 8014,9112,9869,10348,10667,10924,11167,11379,11542,11650, 11733,11846,12070,12433,12871,13264,13495,13487,13215,12754, 12220,11698,11195,10664,10041,9282,8360,7283,6076,4813, 3565,2400,1361,480,-242,-849,-1452,-2188,-3119,-4208, -5339,-6386,-7229,-7827,-8220,-8497,-8736,-8962,-9156,-9282, -9310,-9254,-9188,-9238,-9533,-10108,-10854,-11590,-12129,-12332, -12198,-11864,-11519,-11294,-11212,-11179,-11026,-10613,-9889,-8920, -7852,-6842,-5993,-5316,-4758,-4225,-3604,-2795,-1706,-296, 1392,3217,4994,6569,7853,8824,9528,10059,10492,10853, 11132,11305,11394,11442,11532,11746,12121,12618,13109,13433, 13514,13378,13100,12736,12317,11868,11392,10862,10225,9435, 8482,7386,6149,4847,3571,2429,1481,737,134,-463, -1180,-2111,-3236,-4409,-5494,-6403,-7115,-7652,-8068,-8434, -8785,-9086,-9270,-9277,-9131,-8956,-8927,-9176,-9726,-10489, -11262,-11831,-12083,-12042,-11833,-11623,-11522,-11530,-11564,-11469, -11145,-10551,-9720,-8745,-7749,-6850,-6109,-5525,-5044,-4548, -3924,-3032,-1796,-223,1557,3359,5018,6438,7606,8555, 9330,9961,10470,10839,11060,11137,11153,11227,11453,11849, 12341,12828,13214,13424,13443,13313,13087,12795,12441,12026, 11561,11038,10418,9640,8663,7489,6166,4802,3561,2563, 1804,1189,584,-148,-1065,-2155,-3337,-4466,-5441,-6223, -6859,-7429,-7985,-8504,-8921,-9155,-9149,-8958,-8710,-8600, -8793,-9328,-10076,-10838,-11429,-11743,-11798,-11707,-11629,-11638, -11717,-11792,-11767,-11551,-11095,-10418,-9567,-8619,-7676,-6855, -6230,-5786,-5412,-4940,-4211,-3145,-1745,-93,1667,3369, 4897,6206,7352,8371,9256,9959,10427,10682,10785,10835, 10936,11159,11524,11994,12487,12909,13216,13384,13407,13319, 13138,12866,12518,12145,11747,11288,10686,9848,8738,7412, 6027,4748,3675,2851,2201,1583,864,-45,-1134,-2306, -3444,-4442,-5280,-6012,-6720,-7449,-8158,-8727,-9045,-9066, -8852,-8562,-8409,-8551,-9019,-9709,-10427,-10992,-11334,-11475, -11520,-11557,-11651,-11784,-11906,-11950,-11856,-11561,-11040,-10299, -9388,-8432,-7580,-6939,-6489,-6159,-5799,-5246,-4359,-3122, -1621,6,1637,3193,4646,5994,7235,8343,9240,9860, 10217,10393,10497,10621,10838,11182,11610,12078,12530,12917, 13209,13389,13430,13329,13120,12857,12603,12360,12072,11619, 10912,9906,8660,7281,5956,4838,3968,3276,2638,1909, 1000,-82,-1233,-2341,-3337,-4213,-5040,-5894,-6807,-7708, -8439,-8857,-8922,-8725,-8451,-8294,-8399,-8799,-9401,-10038, -10575,-10936,-11147,-11282,-11409,-11556,-11727,-11918,-12077,-12134, -11997,-11604,-10954,-10112,-9181,-8298,-7608,-7169,-6889,-6598, -6135,-5397,-4339,-3024,-1562,-44,1490,3022,4528,5960, 7258,8335,9134,9655,9947,10131,10311,10548,10848,11215, 11637,12107,12585,13008,13290,13400,13360,13226,13062,12926, 12827,12698,12416,11866,10988,9822,8492,7180,6037,5134, 4414,3740,2973,2045,965,-154,-1215,-2159,-3040,-3938, -4934,-6028,-7111,-7997,-8546,-8713,-8583,-8345,-8213,-8301, -8627,-9113,-9663,-10178,-10596,-10882,-11063,-11203,-11376,-11600, -11867,-12131,-12328,-12359,-12133,-11605,-10825,-9901,-9015,-8315, -7861,-7576,-7321,-6929,-6303,-5429,-4333,-3066,-1683,-216, 1336,2944,4530,6001,7259,8230,8919,9391,9719,9972, 10204,10462,10780,11189,11681,12218,12721,13094,13284,13303, 13228,13143,13120,13154,13187,13081,12692,11948,10883,9623, 8349,7227,6311,5553,4831,4018,3057,1987,910,-75, -958,-1809,-2755,-3860,-5103,-6335,-7364,-8036,-8325,-8334, -8225,-8131,-8172,-8411,-8813,-9302,-9794,-10221,-10548,-10770, -10931,-11091,-11314,-11633,-12016,-12371,-12571,-12489,-12072,-11368, -10516,-9680,-8986,-8501,-8179,-7904,-7566,-7070,-6365,-5470, -4414,-3217,-1864,-358,1280,2955,4536,5928,7091,8014, 8712,9221,9571,9808,10026,10316,10720,11239,11820,12370, 12808,13061,13143,13111,13086,13161,13352,13545,13604,13373, 12773,11823,10666,9484,8413,7514,6720,5931,5046,4047, 2976,1941,1037,243,-572,-1540,-2725,-4059,-5388,-6527, -7353,-7828,-8007,-8011,-7974,-8007,-8167,-8481,-8912,-9388, -9830,-10186,-10423,-10566,-10693,-10900,-11244,-11720,-12224,-12574, -12635,-12349,-11769,-11014,-10232,-9554,-9049,-8691,-8388,-8051, -7625,-7088,-6412,-5575,-4546,-3319,-1896,-331,1307,2940, 4465,5804,6943,7870,8563,9037,9346,9579,9841,10231, 10770,11403,12013,12485,12770,12881,12887,12908,13020,13272, 13591,13798,13714,13269,12487,11479,10413,9443,8603,7818, 6973,6003,4956,3924,2987,2157,1390,589,-369,-1538, -2879,-4261,-5513,-6497,-7154,-7525,-7695,-7745,-7785,-7898, -8133,-8509,-8973,-9433,-9799,-10021,-10133,-10229,-10425,-10788, -11304,-11881,-12358,-12562,-12419,-11971,-11337,-10648,-10027,-9520, -9108,-8745,-8396,-8037,-7634,-7142,-6497,-5650,-4573,-3301, -1879,-361,1222,2807,4315,5658,6775,7649,8267,8653, 8907,9173,9559,10107,10771,11439,11964,12260,12368,12392, 12465,12682,13048,13475,13802,13857,13531,12877,12051,11197, 10382,9605,8805,7908,6898,5840,4835,3958,3203,2496, 1722,790,-341,-1653,-3045,-4380,-5513,-6375,-6951,-7287, -7445,-7510,-7596,-7806,-8169,-8635,-9101,-9456,-9653,-9733, -9800,-9972,-10334,-10882,-11516,-12080,-12414,-12422,-12130,-11632, -11068,-10501,-9967,-9497,-9092,-8747,-8445,-8139,-7777,-7281, -6594,-5696,-4597,-3333,-1953,-470,1103,2706,4228,5558, 6623,7381,7863,8167,8454,8866,9446,10142,10841,11405, 11741,11860,11877,11964,12250,12747,13329,13800,13990,13829, 13370,12737,12058,11387,10692,9897,8971,7932,6860,5862, 4999,4265,3592,2857,1965,870,-382,-1743,-3129,-4431, -5521,-6320,-6817,-7071,-7199,-7327,-7549,-7907,-8372,-8841, -9198,-9392,-9438,-9456,-9598,-9952,-10513,-11174,-11782,-12210, -12378,-12289,-11991,-11557,-11036,-10498,-9978,-9516,-9148,-8868, -8633,-8357,-7966,-7411,-6680,-5774,-4699,-3469,-2092,-564, 1091,2770,4301,5552,6471,7088,7496,7845,8285,8898, 9658,10419,11019,11361,11476,11506,11642,11985,12543,13180, 13728,14021,14009,13749,13349,12873,12345,11728,10975,10051, 9006,7933,6939,6087,5355,4670,3948,3115,2121,941, -392,-1812,-3224,-4492,-5496,-6174,-6572,-6792,-6973,-7247, -7652,-8144,-8629,-8984,-9146,-9164,-9168,-9295,-9618,-10132, -10768,-11401,-11915,-12235,-12339,-12225,-11931,-11491,-10967,-10431, -9958,-9563,-9266,-9034,-8812,-8510,-8066,-7473,-6751,-5898, -4882,-3656,-2204,-567,1158,2833,4273,5368,6112,6613, 7042,7565,8258,9073,9864,10474,10818,10944,11014,11202, 11595,12171,12822,13395,13774,13921,13867,13682,13418,13063, 12563,11866,10984,9981,8947,7973,7104,6339,5646,4965, 4215,3326,2246,963,-476,-1958,-3347,-4518,-5380,-5925, -6257,-6540,-6902,-7382,-7922,-8409,-8754,-8923,-8961,-8964, -9064,-9348,-9796,-10358,-10973,-11554,-12023,-12300,-12355,-12205, -11871,-11394,-10842,-10332,-9933,-9650,-9418,-9178,-8892,-8534, -8103,-7573,-6923,-6107,-5076,-3767,-2189,-435,1311,2870, 4097,4966,5584,6138,6775,7562,8440,9256,9864,10224, 10394,10515,10736,11149,11723,12357,12936,13379,13655,13796, 13847,13792,13593,13205,12613,11834,10915,9939,8972,8080, 7290,6599,5958,5286,4503,3541,2351,946,-591,-2090, -3376,-4355,-5042,-5529,-5958,-6435,-6991,-7574,-8081,-8435, -8623,-8703,-8741,-8820,-9021,-9392,-9902,-10490,-11097,-11661, -12107,-12350,-12345,-12106,-11703,-11229,-10761,-10348,-10016,-9753, -9508,-9238,-8930,-8579,-8205,-7762,-7182,-6351,-5195,-3699, -1960,-169,1445,2746,3721,4480,5190,5978,6873,7802, 8642,9279,9672,9890,10072,10345,10765,11303,11879,12421, 12891,13290,13627,13868,13991,13949,13714,13273,12628,11809, 10879,9935,9033,8209,7495,6877,6296,5640,4794,3675, 2299,759,-776,-2139,-3222,-4035,-4678,-5266,-5868,-6503, -7128,-7677,-8082,-8333,-8454,-8514,-8591,-8740,-8991,-9389, -9934,-10577,-11236,-11803,-12184,-12324,-12218,-11931,-11541,-11130, -10764,-10444,-10148,-9852,-9554,-9248,-8970,-8727,-8489,-8136, -7528,-6544,-5148,-3460,-1697,-85,1253,2307,3203,4066, 5004,6018,7023,7904,8564,9008,9310,9584,9916,10336, 10812,11320,11837,12350,12827,13268,13662,13960,14104,14043, 13757,13276,12611,11785,10847,9899,9034,8305,7723,7222, 6680,5938,4905,3582,2074,543,-845,-2022,-2980,-3782, -4511,-5237,-5972,-6657,-7256,-7734,-8077,-8292,-8412,-8469, -8536,-8694,-9002,-9478,-10101,-10800,-11462,-11960,-12234,-12263, -12089,-11798,-11472,-11159,-10861,-10556,-10207,-9815,-9461,-9216, -9106,-9057,-8922,-8513,-7701,-6452,-4876,-3187,-1602,-255, 852,1842,2848,3944,5083,6154,7062,7779,8326,8749, 9117,9486,9902,10360,10831,11314,11822,12363,12910,13421, 13848,14143,14264,14200,13924,13423,12702,11809,10830,9914, 9176,8636,8200,7727,7078,6143,4911,3469,1969,554, -680,-1730,-2670,-3558,-4415,-5230,-6004,-6692,-7277,-7738, -8062,-8238,-8310,-8342,-8417,-8623,-9030,-9619,-10321,-11036, -11641,-12041,-12192,-12132,-11951,-11741,-11532,-11283,-10955,-10526, -10043,-9615,-9361,-9332,-9431,-9489,-9283,-8653,-7565,-6131, -4568,-3083,-1772,-616,482,1605,2796,4009,5161,6154, 6956,7601,8135,8606,9038,9452,9863,10298,10766,11278, 11834,12426,13010,13538,13967,14279,14440,14394,14092,13495, 12658,11701,10791,10039,9497,9101,8708,8140,7296,6172, 4839,3416,2024,734,-433,-1487,-2472,-3415,-4328,-5187, -5980,-6691,-7289,-7740,-8007,-8108,-8123,-8154,-8282,-8593, -9122,-9819,-10566,-11227,-11697,-11943,-12013,-11998,-11957,-11877, -11695,-11359,-10872,-10324,-9833,-9547,-9544,-9757,-9967,-9917, -9443,-8537,-7311,-5937,-4581,-3312,-2121,-951,243,1488, 2753,3964,5048,5972,6742,7395,7967,8472,8906,9298, 9694,10146,10662,11222,11794,12364,12930,13484,13989,14368, 14541,14430,13993,13266,12369,11473,10740,10220,9841,9475, 8975,8249,7259,6064,4754,3402,2086,847,-298,-1357, -2353,-3325,-4282,-5200,-6047,-6773,-7345,-7729,-7914,-7944, -7916,-7970,-8212,-8688,-9357,-10092,-10742,-11235,-11561,-11765, -11898,-12005,-12079,-12019,-11717,-11172,-10533,-9992,-9720,-9754, -9999,-10264,-10334,-10035,-9331,-8318,-7150,-5949,-4759,-3582, -2380,-1136,146,1425,2678,3849,4892,5812,6610,7285, 7841,8311,8730,9144,9602,10103,10632,11177,11736,12325, 12951,13601,14199,14603,14697,14426,13820,13011,12153,11401, 10846,10448,10087,9640,9023,8203,7176,5988,4708,3414, 2152,961,-151,-1194,-2203,-3207,-4215,-5182,-6063,-6796, -7307,-7561,-7612,-7576,-7600,-7785,-8195,-8794,-9474,-10107, -10598,-10951,-11242,-11544,-11856,-12077,-12091,-11826,-11290,-10625, -10051,-9746,-9755,-9982,-10248,-10366,-10221,-9760,-9007,-8058, -7020,-5950,-4836,-3663,-2434,-1177,83,1319,2531,3691, 4750,5665,6422,7046,7567,8034,8489,8954,9436,9925, 10408,10922,11511,12201,12957,13702,14302,14603,14527,14107, 13467,12748,12072,11498,11042,10665,10265,9749,9070,8205, 7151,5961,4710,3463,2259,1109,38,-984,-2011,-3090, -4204,-5262,-6153,-6790,-7149,-7267,-7256,-7274,-7452,-7831, -8357,-8944,-9479,-9921,-10311,-10720,-11181,-11653,-12022,-12145, -11932,-11424,-10790,-10221,-9885,-9835,-10007,-10255,-10410,-10360, -10072,-9567,-8871,-8022,-7061,-6008,-4891,-3729,-2543,-1326, -74,1181,2407,3562,4581,5435,6139,6743,7284,7802, 8299,8767,9195,9608,10062,10626,11351,12200,13052,13769, 14236,14365,14163,13715,13151,12571,12048,11617,11265,10911, 10485,9924,9196,8294,7213,6001,4748,3537,2405,1335, 296,-774,-1909,-3127,-4345,-5428,-6238,-6714,-6907,-6956, -7026,-7239,-7617,-8101,-8578,-8992,-9363,-9767,-10274,-10883, -11506,-11999,-12228,-12118,-11692,-11096,-10528,-10155,-10044,-10144, -10329,-10476,-10516,-10403,-10110,-9617,-8938,-8097,-7139,-6101, -5014,-3886,-2709,-1467,-175,1121,2354,3471,4426,5230, 5931,6597,7226,7791,8252,8631,8973,9372,9922,10667, 11556,12466,13287,13906,14238,14265,14015,13596,13115,12654, 12232,11861,11526,11173,10733,10145,9361,8388,7257,6043, 4837,3711,2669,1656,580,-616,-1938,-3295,-4528,-5486, -6086,-6382,-6527,-6700,-6985,-7378,-7788,-8156,-8458,-8765, -9171,-9733,-10434,-11174,-11796,-12142,-12131,-11809,-11317,-10807, -10414,-10204,-10181,-10291,-10444,-10554,-10565,-10437,-10128,-9612, -8921,-8095,-7176,-6194,-5155,-4035,-2807,-1492,-167,1103, 2265,3297,4212,5050,5840,6585,7225,7713,8058,8352, 8712,9220,9926,10811,11784,12704,13453,13958,14181,14150, 13919,13558,13142,12744,12399,12099,11809,11467,10998,10342, 9473,8426,7274,6116,5023,4021,3046,1985,741,-681, -2156,-3509,-4572,-5291,-5738,-6056,-6360,-6720,-7125,-7512, -7804,-8010,-8217,-8570,-9158,-9942,-10768,-11467,-11920,-12057, -11885,-11510,-11074,-10683,-10406,-10278,-10291,-10403,-10543,-10657, -10663,-10498,-10131,-9576,-8896,-8128,-7288,-6353,-5307,-4131, -2839,-1504,-230,934,2016,3057,4046,4978,5815,6515, 7052,7429,7710,8006,8439,9095,9951,10923,11897,12763, 13438,13878,14066,14024,13808,13483,13112,12775,12509,12286, 12048,11708,11170,10400,9425,8335,7250,6254,5348,4426, 3363,2079,607,-922,-2342,-3518,-4385,-5000,-5485,-5964, -6461,-6911,-7256,-7473,-7608,-7768,-8084,-8645,-9426,-10285, -11064,-11638,-11928,-11937,-11718,-11368,-10988,-10656,-10427,-10345, -10411,-10568,-10725,-10798,-10735,-10496,-10086,-9550,-8936,-8245, -7434,-6468,-5335,-4110,-2852,-1609,-415,723,1832,2938, 4013,4991,5797,6393,6805,7106,7395,7777,8338,9111, 10046,11040,11991,12809,13424,13811,13965,13904,13686,13391, 13093,12859,12708,12581,12368,11935,11234,10312,9303,8338, 7465,6642,5783,4754,3483,1999,449,-1003,-2241,-3234, -4030,-4731,-5406,-6043,-6575,-6930,-7116,-7207,-7323,-7592, -8092,-8831,-9697,-10524,-11193,-11642,-11843,-11803,-11569,-11228, -10867,-10573,-10408,-10404,-10530,-10715,-10844,-10837,-10687,-10423, -10076,-9630,-9065,-8351,-7481,-6463,-5321,-4130,-2945,-1774, -600,594,1799,2983,4077,5000,5698,6188,6537,6848, 7210,7702,8365,9213,10189,11188,12117,12906,13492,13842, 13949,13835,13580,13335,13196,13160,13131,12990,12629,12000, 11163,10251,9390,8630,7915,7113,6112,4855,3391,1860, 415,-858,-1969,-2959,-3878,-4734,-5511,-6145,-6570,-6784, -6877,-6976,-7208,-7637,-8284,-9083,-9937,-10711,-11310,-11688, -11832,-11747,-11470,-11101,-10760,-10557,-10520,-10611,-10742,-10852, -10897,-10856,-10734,-10532,-10233,-9810,-9222,-8450,-7533,-6513, -5429,-4317,-3181,-2010,-771,520,1802,3002,4042,4864, 5473,5915,6265,6611,7050,7644,8396,9280,10273,11299, 12264,13056,13584,13813,13797,13650,13493,13440,13503,13584, 13527,13227,12653,11886,11078,10345,9718,9109,8373,7403, 6183,4784,3313,1890,584,-607,-1751,-2870,-3935,-4867, -5605,-6114,-6416,-6570,-6676,-6863,-7218,-7769,-8475,-9285, -10121,-10891,-11466,-11777,-11806,-11617,-11310,-10999,-10775,-10675, -10687,-10766,-10853,-10912,-10935,-10918,-10847,-10691,-10398,-9921, -9263,-8457,-7558,-6610,-5623,-4560,-3395,-2139,-827,501, 1784,2944,3914,4648,5195,5629,6022,6434,6923,7548, 8345,9303,10385,11496,12457,13144,13512,13608,13557,13508, 13570,13745,13925,13945,13693,13182,12517,11834,11222,10696, 10172,9512,8619,7475,6164,4796,3439,2128,853,-408, -1660,-2880,-3983,-4874,-5510,-5917,-6164,-6342,-6534,-6812, -7234,-7837,-8610,-9478,-10336,-11059,-11538,-11722,-11645,-11424, -11161,-10949,-10825,-10773,-10772,-10806,-10865,-10930,-10990,-11030, -10984,-10793,-10427,-9902,-9244,-8485,-7645,-6744,-5787,-4723, -3514,-2180,-805,533,1757,2822,3705,4411,4974,5424, 5808,6198,6699,7393,8311,9410,10590,11688,12515,12999, 13202,13278,13378,13577,13856,14108,14190,14008,13576,13004, 12441,11967,11540,11072,10462,9656,8641,7462,6207,4936, 3659,2349,989,-398,-1743,-2966,-4003,-4803,-5377,-5768, -6019,-6204,-6416,-6747,-7269,-7984,-8850,-9767,-10589,-11195, -11530,-11615,-11516,-11333,-11151,-11013,-10911,-10833,-10797,-10828, -10928,-11060,-11166,-11191,-11095,-10853,-10456,-9930,-9308,-8617, -7854,-6993,-5999,-4843,-3539,-2160,-802,477,1643,2678, 3557,4265,4796,5189,5519,5913,6501,7373,8496,9727, 10868,11769,12353,12678,12886,13132,13479,13876,14198,14326, 14208,13882,13448,13007,12618,12275,11884,11336,10583,9641, 8587,7467,6309,5093,3792,2405,971,-446,-1765,-2934, -3910,-4682,-5235,-5588,-5795,-5959,-6209,-6639,-7281,-8098, -9005,-9876,-10587,-11055,-11299,-11362,-11310,-11189,-11036,-10883, -10757,-10681,-10674,-10754,-10881,-11026,-11125,-11122,-10973,-10676, -10272,-9804,-9286,-8682,-7954,-7066,-6017,-4807,-3493,-2149, -838,401,1551,2602,3472,4105,4505,4781,5094,5613, 6423,7503,8725,9889,10823,11466,11901,12269,12663,13127, 13608,13993,14186,14155,13940,13639,13339,13070,12798,12451, 11970,11332,10555,9662,8676,7622,6472,5211,3846,2421, 983,-418,-1729,-2884,-3837,-4552,-5036,-5316,-5486,-5680, -6041,-6625,-7398,-8268,-9126,-9880,-10475,-10885,-11124,-11210, -11169,-11047,-10891,-10735,-10609,-10554,-10600,-10739,-10918,-11046, -11076,-10989,-10794,-10520,-10180,-9790,-9335,-8757,-7996,-7049, -5964,-4786,-3546,-2253,-929,370,1565,2569,3293,3728, 3983,4248,4720,5496,6534,7699,8804,9726,10431,10979, 11472,12001,12592,13163,13617,13874,13931,13847,13699,13536, 13370,13164,12862,12442,11907,11282,10575,9768,8849,7810, 6645,5350,3960,2506,1039,-394,-1736,-2906,-3824,-4450, -4827,-5045,-5251,-5580,-6097,-6794,-7602,-8445,-9256,-9965, -10523,-10916,-11141,-11227,-11185,-11042,-10856,-10692,-10615,-10639, -10756,-10925,-11076,-11139,-11098,-10971,-10801,-10606,-10355,-9997, -9501,-8855,-8052,-7117,-6076,-4939,-3684,-2315,-885,477, 1619,2437,2919,3191,3471,3942,4685,5671,6772,7833, 8746,9487,10131,10761,11422,12103,12743,13265,13604,13778, 13834,13837,13794,13699,13544,13309,12970,12540,12028,11443, 10767,9978,9057,8001,6811,5497,4086,2585,1045,-449, -1786,-2877,-3675,-4190,-4526,-4796,-5107,-5551,-6163,-6913, -7731,-8549,-9317,-10000,-10553,-10943,-11144,-11180,-11099,-10933, -10757,-10644,-10649,-10757,-10901,-11024,-11084,-11075,-11018,-10949, -10858,-10715,-10461,-10059,-9515,-8857,-8114,-7270,-6277,-5069, -3658,-2135,-661,592,1503,2082,2428,2747,3223,3945, 4874,5899,6898,7786,8555,9271,10018,10806,11583,12275, 12849,13285,13593,13797,13929,13986,13966,13871,13700,13444, 13114,12712,12237,11670,10984,10181,9269,8252,7087,5736, 4217,2602,1005,-464,-1717,-2700,-3412,-3889,-4236,-4578, -5000,-5532,-6190,-6946,-7766,-8592,-9368,-10050,-10595,-10946, -11085,-11048,-10909,-10766,-10684,-10694,-10777,-10882,-10956,-10988, -10996,-11007,-11041,-11061,-10997,-10788,-10445,-10010,-9537,-9017, -8383,-7545,-6431,-5033,-3457,-1904,-566,445,1120,1562, 1951,2464,3179,4050,4975,5886,6746,7565,8367,9182, 10022,10846,11607,12264,12807,13242,13584,13852,14024,14096, 14065,13950,13789,13586,13304,12914,12409,11812,11145,10401, 9540,8514,7289,5848,4232,2547,943,-463,-1607,-2498, -3159,-3652,-4058,-4477,-4965,-5554,-6233,-7008,-7848,-8707, -9521,-10203,-10681,-10931,-10981,-10904,-10801,-10754,-10785,-10857, -10911,-10911,-10911,-10954,-11045,-11157,-11251,-11252,-11106,-10826, -10500,-10188,-9882,-9469,-8815,-7827,-6494,-4927,-3327,-1913, -818,-38,534,1038,1604,2303,3118,3980,4831,5665, 6511,7377,8264,9155,10027,10841,11568,12220,12802,13312, 13719,14004,14174,14250,14273,14241,14133,13941,13657,13269, 12802,12261,11658,10976,10136,9065,7729,6175,4503,2838, 1296,-37,-1115,-1952,-2600,-3135,-3616,-4092,-4610,-5226, -5966,-6825,-7761,-8688,-9506,-10114,-10473,-10630,-10672,-10692, -10736,-10801,-10861,-10874,-10836,-10809,-10859,-11006,-11183,-11305, -11303,-11174,-10958,-10736,-10567,-10442,-10239,-9787,-8952,-7728, -6231,-4671,-3239,-2066,-1159,-444,187,816,1500,2250, 3044,3850,4661,5499,6386,7314,8233,9092,9905,10697, 11464,12165,12772,13271,13661,13946,14143,14262,14321,14314, 14213,13995,13676,13302,12894,12447,11911,11231,10339,9191, 7764,6135,4436,2817,1366,122,-912,-1739,-2400,-2952, -3441,-3923,-4463,-5148,-5997,-6969,-7968,-8866,-9565,-10021, -10283,-10453,-10600,-10747,-10847,-10871,-10826,-10762,-10741,-10813, -10978,-11178,-11314,-11321,-11189,-10999,-10855,-10821,-10859,-10835, -10566,-9908,-8840,-7477,-6001,-4594,-3362,-2339,-1491,-739, -17,697,1391,2092,2841,3653,4519,5413,6318,7218, 8106,8965,9796,10612,11396,12110,12716,13207,13598,13923, 14178,14347,14409,14366,14231,14004,13717,13401,13072,12693, 12182,11464,10484,9238,7755,6117,4458,2893,1484,263, -751,-1561,-2193,-2692,-3143,-3641,-4291,-5138,-6142,-7173, -8103,-8848,-9405,-9807,-10127,-10408,-10640,-10777,-10805,-10733, -10649,-10636,-10735,-10934,-11144,-11265,-11236,-11091,-10929,-10868, -10948,-11110,-11210,-11095,-10632,-9778,-8596,-7241,-5895,-4662, -3558,-2572,-1690,-900,-182,489,1163,1882,2672,3522, 4406,5298,6187,7064,7945,8829,9704,10541,11306,11992, 12589,13104,13540,13901,14186,14358,14401,14325,14177,13981, 13768,13547,13300,12950,12411,11621,10551,9234,7736,6125, 4509,2973,1561,329,-664,-1399,-1923,-2349,-2828,-3479, -4332,-5323,-6340,-7271,-8062,-8714,-9262,-9747,-10165,-10491, -10675,-10697,-10613,-10527,-10546,-10700,-10926,-11118,-11193,-11136, -10990,-10849,-10819,-10958,-11221,-11454,-11482,-11179,-10522,-9573, -8435,-7197,-5948,-4762,-3677,-2709,-1860,-1107,-419,243, 943,1719,2556,3410,4260,5116,6005,6907,7814,8718, 9595,10412,11160,11841,12463,13015,13495,13875,14143,14277, 14287,14204,14091,13974,13860,13721,13508,13136,12531,11662, 10553,9244,7771,6175,4519,2921,1504,349,-495,-1090, -1566,-2071,-2721,-3557,-4509,-5485,-6400,-7217,-7942,-8628, -9285,-9873,-10298,-10509,-10535,-10476,-10445,-10510,-10688,-10921, -11106,-11154,-11045,-10857,-10715,-10729,-10922,-11225,-11505,-11639, -11521,-11105,-10397,-9455,-8361,-7172,-5955,-4782,-3734,-2826, -2030,-1300,-598,114,861,1647,2461,3282,4126,4997, 5901,6823,7743,8642,9500,10298,11047,11762,12427,13021, 13511,13875,14094,14188,14183,14133,14091,14071,14045,13938, 13677,13233,12589,11731,10656,9351,7816,6104,4363,2790, 1506,540,-167,-719,-1268,-1934,-2754,-3669,-4575,-5417, -6214,-7016,-7828,-8616,-9313,-9834,-10129,-10217,-10198,-10196, -10314,-10550,-10817,-10984,-10979,-10830,-10635,-10499,-10505,-10686, -10995,-11318,-11535,-11569,-11379,-10932,-10230,-9302,-8218,-7049, -5885,-4797,-3842,-3006,-2239,-1493,-759,-32,701,1459, 2245,3055,3908,4806,5726,6634,7520,8382,9218,10020, 10795,11538,12236,12843,13311,13609,13767,13840,13888,13939, 13993,14016,13973,13823,13548,13139,12559,11743,10643,9244, 7607,5854,4177,2764,1694,899,229,-444,-1182,-1988, -2813,-3638,-4448,-5269,-6122,-7012,-7901,-8703,-9306,-9648, -9783,-9832,-9932,-10129,-10399,-10660,-10817,-10805,-10641,-10434, -10298,-10291,-10436,-10697,-11015,-11302,-11479,-11484,-11269,-10790, -10041,-9082,-8006,-6904,-5837,-4848,-3954,-3144,-2376,-1626, -885,-164,544,1274,2055,2893,3765,4665,5572,6464, 7320,8145,8969,9805,10632,11422,12126,12691,13076,13312, 13473,13632,13785,13900,13957,13948,13878,13760,13567,13250, 12704,11823,10566,9000,7291,5644,4218,3058,2107,1273, 479,-317,-1128,-1922,-2683,-3431,-4242,-5168,-6182,-7186, -8069,-8733,-9145,-9363,-9506,-9685,-9955,-10278,-10569,-10735, -10732,-10593,-10394,-10240,-10195,-10269,-10458,-10741,-11078,-11386, -11563,-11533,-11247,-10695,-9907,-8945,-7898,-6862,-5874,-4941, -4067,-3243,-2469,-1729,-999,-285,427,1169,1967,2828, 3716,4613,5495,6350,7179,8020,8900,9809,10679,11451, 12088,12585,12959,13245,13490,13702,13868,13967,13986,13975, 13987,14016,13961,13652,12962,11864,10440,8831,7210,5731, 4474,3398,2421,1476,573,-271,-1025,-1724,-2433,-3240, -4202,-5288,-6380,-7334,-8064,-8564,-8879,-9128,-9408,-9757, -10131,-10447,-10639,-10688,-10614,-10463,-10296,-10177,-10166,-10283, -10527,-10859,-11230,-11547,-11699,-11606,-11236,-10625,-9818,-8895, -7915,-6936,-5983,-5067,-4204,-3397,-2638,-1904,-1184,-478, 237,1002,1839,2725,3597,4429,5242,6080,6969,7907, 8849,9747,10572,11283,11865,12354,12790,13178,13482,13664, 13734,13768,13840,13991,14188,14326,14241,13781,12886,11630, 10176,8675,7238,5923,4720,3581,2499,1502,636,-107, -780,-1474,-2283,-3260,-4374,-5506,-6513,-7304,-7875,-8309, -8689,-9067,-9456,-9853,-10213,-10481,-10611,-10601,-10495,-10339, -10180,-10078,-10095,-10263,-10576,-10973,-11365,-11649,-11734,-11566, -11148,-10516,-9722,-8822,-7879,-6949,-6035,-5140,-4282,-3478, -2745,-2053,-1363,-634,149,963,1788,2607,3422,4228, 5060,5955,6934,7932,8872,9697,10436,11118,11769,12365, 12863,13225,13436,13521,13570,13686,13929,14280,14603,14711, 14456,13775,12724,11451,10102,8756,7434,6131,4860,3652, 2564,1648,898,239,-456,-1290,-2287,-3394,-4514,-5540, -6404,-7086,-7629,-8111,-8582,-9041,-9469,-9861,-10194,-10432, -10535,-10495,-10348,-10154,-9987,-9918,-10004,-10259,-10636,-11055, -11430,-11669,-11700,-11482,-11024,-10377,-9606,-8762,-7872,-6953, -6038,-5167,-4373,-3627,-2911,-2203,-1473,-705,104,903, 1652,2384,3161,4023,4972,5971,6955,7871,8701,9480, 10266,11059,11810,12436,12877,13108,13193,13252,13410,13735, 14189,14645,14915,14855,14416,13637,12613,11440,10201,8903, 7545,6168,4857,3696,2740,1955,1259,529,-315,-1317, -2418,-3527,-4570,-5492,-6276,-6943,-7525,-8062,-8575,-9068, -9521,-9932,-10267,-10482,-10532,-10432,-10231,-10022,-9884,-9881, -10036,-10351,-10782,-11236,-11583,-11749,-11699,-11444,-10996,-10369, -9605,-8759,-7880,-6985,-6114,-5300,-4559,-3844,-3107,-2327, -1528,-740,-6,671,1348,2106,2985,3964,4963,5921, 6810,7640,8461,9323,10228,11127,11892,12411,12671,12774, 12877,13100,13489,14006,14543,14942,15064,14851,14345,13615, 12690,11600,10351,8973,7537,6151,4934,3928,3092,2334, 1556,683,-308,-1384,-2478,-3526,-4497,-5381,-6163,-6847, -7456,-8019,-8560,-9097,-9605,-10036,-10340,-10493,-10493,-10346, -10109,-9880,-9778,-9865,-10131,-10511,-10942,-11355,-11662,-11790, -11716,-11446,-10993,-10367,-9595,-8734,-7856,-7019,-6248,-5516, -4767,-3974,-3142,-2327,-1581,-909,-273,386,1128,1996, 2970,3967,4898,5735,6537,7393,8352,9390,10393,11245, 11846,12180,12329,12457,12723,13175,13752,14331,14796,15061, 15088,14872,14430,13763,12847,11689,10347,8918,7519,6261, 5193,4284,3459,2629,1731,743,-294,-1365,-2431,-3464, -4423,-5281,-6038,-6718,-7360,-7974,-8564,-9137,-9673,-10118, -10408,-10492,-10396,-10186,-9941,-9763,-9735,-9903,-10228,-10647, -11065,-11428,-11691,-11809,-11741,-11454,-10950,-10267,-9481,-8680, -7919,-7192,-6454,-5668,-4828,-3970,-3146,-2411,-1786,-1209, -585,169,1056,2007,2949,3821,4616,5398,6268,7282, 8411,9528,10471,11143,11541,11763,11968,12280,12750,13325, 13911,14419,14804,15042,15110,14964,14544,13825,12809,11556, 10169,8792,7526,6410,5426,4512,3625,2728,1784,770, -302,-1385,-2436,-3431,-4364,-5205,-5965,-6648,-7301,-7953, -8607,-9240,-9797,-10214,-10431,-10435,-10264,-10008,-9788,-9690, -9761,-9985,-10316,-10701,-11110,-11491,-11773,-11872,-11723,-11338, -10778,-10118,-9417,-8720,-8042,-7334,-6530,-5637,-4739,-3929, -3247,-2656,-2083,-1450,-698,172,1093,1977,2782,3520, 4277,5156,6221,7413,8597,9609,10355,10843,11174,11476, 11853,12324,12861,13425,13969,14458,14872,15175,15295,15149, 14655,13814,12709,11453,10147,8869,7694,6644,5689,4775, 3849,2887,1881,833,-246,-1334,-2394,-3378,-4274,-5080, -5816,-6519,-7223,-7945,-8668,-9335,-9879,-10227,-10340,-10253, -10054,-9847,-9700,-9654,-9733,-9952,-10301,-10739,-11194,-11583, -11815,-11814,-11566,-11125,-10597,-10050,-9483,-8852,-8130,-7299, -6399,-5510,-4712,-4051,-3485,-2926,-2279,-1502,-628,252, 1051,1758,2431,3169,4062,5150,6367,7579,8640,9458, 10048,10483,10861,11261,11722,12226,12729,13248,13792,14346, 14842,15172,15224,14946,14333,13426,12307,11081,9846,8665, 7563,6554,5604,4667,3711,2718,1673,585,-526,-1612, -2648,-3599,-4452,-5227,-5944,-6665,-7436,-8249,-9023,-9656, -10087,-10315,-10364,-10262,-10071,-9869,-9719,-9660,-9742,-9998, -10414,-10912,-11367,-11665,-11746,-11611,-11320,-10953,-10543,-10085, -9527,-8823,-7983,-7065,-6176,-5400,-4771,-4219,-3650,-2970, -2163,-1285,-446,270,873,1467,2172,3056,4126,5330, 6543,7625,8514,9220,9803,10311,10771,11204,11636,12107, 12649,13265,13919,14544,15059,15350,15330,14961,14269,13330, 12240,11076,9911,8790,7740,6755,5813,4860,3869,2833, 1755,633,-510,-1613,-2608,-3478,-4267,-5041,-5847,-6693, -7551,-8386,-9128,-9706,-10090,-10282,-10315,-10211,-10001,-9760, -9588,-9573,-9769,-10155,-10653,-11133,-11485,-11637,-11621,-11489, -11302,-11061,-10729,-10247,-9574,-8742,-7835,-6963,-6231,-5638, -5101,-4493,-3759,-2922,-2060,-1265,-598,-44,488,1145, 2019,3085,4246,5410,6513,7503,8358,9082,9689,10204, 10648,11068,11517,12041,12670,13378,14114,14776,15265,15484, 15379,14952,14238,13301,12226,11115,10024,8961,7931,6944, 6000,5056,4039,2939,1774,603,-520,-1539,-2454,-3280, -4088,-4928,-5828,-6752,-7640,-8443,-9140,-9703,-10101,-10300, -10289,-10093,-9809,-9551,-9452,-9585,-9936,-10394,-10838,-11177, -11385,-11470,-11477,-11460,-11402,-11224,-10835,-10199,-9387,-8517, -7706,-7019,-6451,-5913,-5296,-4527,-3654,-2789,-2040,-1433, -923,-398,237,1035,2009,3105,4244,5371,6443,7422, 8275,8990,9573,10053,10468,10888,11394,12036,12790,13582, 14339,14979,15423,15578,15404,14932,14220,13323,12295,11208, 10129,9112,8150,7219,6284,5288,4183,2995,1790,644, -399,-1332,-2203,-3068,-3956,-4870,-5798,-6717,-7597,-8418, -9160,-9758,-10135,-10234,-10089,-9802,-9522,-9375,-9445,-9725, -10133,-10529,-10829,-11017,-11161,-11314,-11476,-11576,-11528,-11238, -10684,-9933,-9121,-8378,-7765,-7234,-6695,-6045,-5246,-4372, -3528,-2808,-2222,-1712,-1197,-601,116,971,1965,3053, 4178,5301,6385,7373,8203,8850,9360,9802,10237,10722, 11309,12043,12894,13759,14531,15127,15500,15603,15414,14940, 14221,13320,12316,11273,10255,9312,8424,7523,6541,5443, 4255,3042,1876,805,-175,-1105,-2023,-2943,-3850,-4754, -5682,-6637,-7604,-8516,-9296,-9846,-10089,-10034,-9781,-9496, -9343,-9394,-9621,-9933,-10231,-10465,-10651,-10850,-11107,-11412, -11667,-11747,-11555,-11082,-10413,-9701,-9057,-8513,-8004,-7443, -6766,-5983,-5142,-4316,-3584,-2974,-2461,-1960,-1402,-757, -9,848,1840,2955,4126,5271,6336,7268,8034,8620, 9066,9471,9934,10517,11237,12065,12948,13809,14553,15121, 15465,15549,15342,14839,14080,13172,12210,11264,10356,9483, 8601,7643,6569,5410,4231,3084,1974,910,-105,-1060, -1968,-2848,-3730,-4646,-5634,-6707,-7790,-8755,-9463,-9837, -9889,-9730,-9517,-9390,-9423,-9600,-9830,-10018,-10154,-10295, -10523,-10876,-11310,-11689,-11862,-11743,-11363,-10837,-10264,-9717, -9208,-8713,-8168,-7506,-6727,-5901,-5103,-4381,-3738,-3164, -2641,-2134,-1588,-947,-181,718,1747,2902,4108,5279, 6320,7185,7849,8356,8782,9223,9768,10459,11273,12151, 13036,13884,14638,15220,15566,15613,15343,14774,13991,13126, 12276,11453,10610,9714,8760,7741,6655,5524,4370,3224, 2095,1009,-5,-931,-1775,-2603,-3501,-4537,-5698,-6908, -8026,-8894,-9408,-9588,-9554,-9456,-9415,-9470,-9609,-9740, -9805,-9832,-9928,-10185,-10610,-11104,-11535,-11786,-11786,-11542, -11134,-10688,-10265,-9845,-9373,-8813,-8167,-7453,-6691,-5902, -5133,-4435,-3836,-3312,-2821,-2319,-1772,-1128,-345,596, 1690,2903,4141,5291,6259,7015,7604,8090,8561,9088, 9713,10459,11306,12209,13137,14036,14827,15410,15693,15643, 15302,14741,14044,13279,12494,11690,10840,9923,8944,7924, 6857,5732,4539,3327,2158,1093,173,-635,-1420,-2301, -3361,-4592,-5901,-7140,-8149,-8820,-9151,-9261,-9330,-9436, -9564,-9656,-9679,-9642,-9607,-9663,-9894,-10313,-10841,-11322, -11620,-11691,-11574,-11343,-11048,-10714,-10343,-9924,-9433,-8847, -8171,-7432,-6668,-5905,-5169,-4505,-3936,-3442,-2987,-2521, -1985,-1327,-492,537,1722,2971,4174,5236,6095,6771, 7334,7859,8393,8970,9621,10378,11266,12264,13284,14222, 14975,15464,15650,15553,15228,14733,14116,13406,12634,11815, 10959,10071,9141,8143,7041,5829,4556,3317,2218,1288, 494,-255,-1095,-2149,-3434,-4835,-6151,-7225,-7996,-8508, -8854,-9123,-9361,-9563,-9671,-9644,-9517,-9400,-9431,-9669, -10074,-10551,-11012,-11366,-11551,-11568,-11456,-11270,-11037,-10760, -10411,-9978,-9458,-8849,-8162,-7421,-6666,-5918,-5201,-4563, -4041,-3611,-3209,-2771,-2219,-1490,-546,582,1812,3028, 4132,5088,5896,6581,7162,7689,8206,8780,9461,10304, 11307,12392,13437,14326,14989,15390,15540,15469,15205,14765, 14157,13427,12658,11894,11122,10300,9374,8310,7098,5783, 4475,3323,2405,1665,951,94,-995,-2297,-3698,-5042, -6190,-7075,-7730,-8262,-8752,-9189,-9501,-9623,-9563,-9412, -9277,-9265,-9433,-9785,-10237,-10691,-11068,-11338,-11473,-11485, -11406,-11272,-11082,-10823,-10474,-10029,-9493,-8876,-8187,-7434, -6656,-5899,-5211,-4633,-4191,-3854,-3517,-3061,-2413,-1551, -513,630,1802,2945,3998,4935,5734,6393,6935,7423, 7940,8567,9354,10319,11409,12515,13509,14323,14933,15334, 15513,15454,15172,14703,14097,13419,12729,12063,11373,10561, 9530,8278,6910,5590,4449,3527,2780,2076,1239,154, -1167,-2578,-3912,-5063,-6031,-6871,-7631,-8314,-8896,-9315, -9516,-9516,-9387,-9242,-9182,-9280,-9540,-9918,-10346,-10742, -11055,-11267,-11389,-11416,-11373,-11261,-11087,-10834,-10486,-10042, -9509,-8889,-8176,-7389,-6570,-5810,-5196,-4749,-4430,-4143, -3764,-3207,-2457,-1541,-502,607,1750,2874,3924,4841, 5591,6176,6651,7131,7717,8472,9383,10407,11493,12562, 13539,14354,14976,15381,15556,15469,15123,14608,14043,13513, 13007,12440,11704,10721,9495,8114,6757,5607,4724,4010, 3286,2406,1312,38,-1307,-2610,-3790,-4846,-5834,-6769, -7642,-8377,-8926,-9244,-9347,-9285,-9163,-9091,-9132,-9307, -9605,-9975,-10357,-10702,-10975,-11165,-11283,-11332,-11309,-11209, -11036,-10798,-10487,-10073,-9543,-8864,-8060,-7203,-6405,-5754, -5289,-4953,-4668,-4336,-3884,-3268,-2490,-1570,-532,592, 1758,2896,3901,4717,5360,5894,6402,6955,7631,8459, 9419,10457,11520,12579,13580,14460,15108,15462,15514,15321, 14959,14538,14153,13814,13411,12785,11847,10628,9272,7962, 6846,5961,5221,4468,3567,2481,1255,-17,-1267,-2464, -3607,-4708,-5783,-6805,-7713,-8422,-8884,-9108,-9156,-9103, -9040,-9045,-9164,-9393,-9698,-10047,-10399,-10718,-10984,-11180, -11296,-11322,-11274,-11185,-11073,-10918,-10643,-10189,-9558,-8772, -7914,-7089,-6393,-5873,-5504,-5205,-4887,-4498,-4019,-3413, -2634,-1663,-550,624,1777,2847,3763,4491,5067,5598, 6174,6833,7577,8402,9337,10382,11513,12662,13730,14600, 15163,15381,15310,15082,14839,14652,14493,14240,13722,12853, 11694,10404,9164,8090,7192,6397,5602,4698,3647,2491, 1287,89,-1100,-2295,-3495,-4681,-5823,-6872,-7753,-8399, -8791,-8966,-8998,-8978,-8980,-9053,-9216,-9449,-9738,-10077, -10440,-10772,-11014,-11151,-11209,-11233,-11251,-11253,-11213,-11065, -10734,-10181,-9436,-8598,-7782,-7067,-6487,-6027,-5666,-5373, -5073,-4704,-4209,-3552,-2707,-1668,-502,671,1759,2714, 3533,4228,4843,5433,6047,6717,7447,8268,9235,10373, 11638,12891,13942,14667,15019,15087,15017,14974,15013,15051, 14926,14501,13731,12688,11508,10342,9299,8391,7556,6707, 5790,4791,3701,2567,1412,252,-941,-2184,-3458,-4699, -5861,-6891,-7723,-8292,-8623,-8787,-8866,-8909,-8943,-9007, -9157,-9418,-9764,-10139,-10479,-10736,-10894,-10975,-11040,-11139, -11277,-11379,-11337,-11084,-10629,-10002,-9253,-8459,-7702,-7049, -6523,-6104,-5778,-5520,-5265,-4914,-4376,-3623,-2667,-1571, -433,651,1629,2507,3308,4037,4700,5301,5873,6474, 7176,8072,9209,10543,11913,13105,13946,14428,14657,14790, 14944,15151,15353,15391,15118,14483,13561,12504,11435,10433, 9507,8634,7758,6839,5869,4846,3784,2680,1540,368, -869,-2179,-3527,-4816,-5955,-6897,-7650,-8196,-8543,-8719, -8787,-8817,-8869,-8984,-9196,-9517,-9904,-10254,-10492,-10624, -10725,-10862,-11053,-11268,-11449,-11513,-11391,-11051,-10522,-9863, -9131,-8374,-7655,-7030,-6543,-6196,-5961,-5762,-5504,-5084, -4446,-3599,-2600,-1533,-474,516,1442,2325,3168,3929, 4555,5046,5502,6082,6924,8062,9423,10835,12084,13024, 13635,14030,14360,14722,15120,15465,15636,15515,15060,14323, 13419,12465,11516,10594,9699,8809,7901,6949,5966,4959, 3940,2881,1738,492,-836,-2196,-3542,-4810,-5926,-6842, -7571,-8104,-8448,-8605,-8636,-8641,-8721,-8921,-9207,-9536, -9834,-10052,-10181,-10284,-10435,-10667,-10949,-11210,-11375,-11378, -11197,-10829,-10298,-9638,-8897,-8130,-7433,-6877,-6495,-6262, -6104,-5914,-5603,-5090,-4369,-3495,-2557,-1604,-635,347, 1336,2276,3092,3712,4139,4500,4972,5733,6828,8163, 9544,10792,11786,12518,13065,13564,14100,14654,15135,15434, 15474,15231,14716,13992,13153,12291,11444,10588,9699,8777, 7852,6933,6013,5067,4067,2994,1816,522,-833,-2182, -3477,-4702,-5816,-6753,-7455,-7902,-8142,-8253,-8328,-8458, -8669,-8943,-9225,-9463,-9636,-9758,-9868,-10027,-10267,-10557, -10852,-11091,-11226,-11218,-11026,-10639,-10069,-9373,-8619,-7880, -7255,-6814,-6562,-6416,-6260,-5995,-5567,-4985,-4284,-3509, -2673,-1748,-709,394,1440,2293,2884,3262,3567,3984, 4681,5705,6974,8314,9532,10535,11344,12038,12699,13358, 14017,14633,15104,15322,15249,14914,14393,13746,13012,12215, 11387,10529,9637,8726,7835,6978,6124,5203,4171,3033, 1821,549,-771,-2119,-3455,-4711,-5810,-6674,-7264,-7614, -7809,-7958,-8141,-8397,-8701,-9005,-9240,-9399,-9516,-9641, -9805,-10023,-10298,-10608,-10912,-11152,-11284,-11257,-11033,-10589, -9942,-9177,-8412,-7761,-7287,-6993,-6811,-6633,-6364,-5986, -5531,-5026,-4440,-3715,-2810,-1727,-550,580,1505,2127, 2478,2739,3135,3809,4772,5935,7181,8387,9456,10341, 11107,11857,12651,13455,14194,14783,15168,15304,15179,14849, 14368,13788,13108,12322,11460,10580,9716,8877,8047,7194, 6292,5327,4280,3154,1953,662,-716,-2145,-3547,-4807, -5839,-6581,-7066,-7382,-7644,-7919,-8216,-8514,-8791,-9025, -9208,-9331,-9440,-9582,-9782,-10041,-10343,-10676,-11006,-11280, -11421,-11358,-11037,-10473,-9741,-8971,-8310,-7825,-7488,-7219, -6953,-6659,-6340,-6013,-5674,-5267,-4694,-3861,-2754,-1503, -322,620,1265,1669,1969,2337,2933,3809,4896,6065, 7198,8242,9189,10059,10900,11765,12670,13547,14289,14828, 15131,15219,15119,14845,14407,13822,13117,12325,11494,10674, 9872,9061,8215,7346,6439,5483,4467,3360,2134,763, -725,-2228,-3614,-4767,-5657,-6320,-6806,-7189,-7539,-7895, -8238,-8542,-8785,-8971,-9116,-9238,-9362,-9510,-9711,-9981, -10321,-10719,-11127,-11443,-11541,-11341,-10853,-10201,-9516,-8894, -8381,-7974,-7616,-7251,-6887,-6582,-6383,-6239,-6003,-5527, -4739,-3676,-2453,-1255,-258,442,885,1210,1587,2147, 2942,3933,5025,6115,7133,8074,8982,9898,10851,11826, 12781,13631,14319,14821,15148,15283,15210,14925,14456,13856, 13163,12417,11644,10857,10055,9216,8353,7491,6651,5781, 4786,3604,2247,755,-777,-2247,-3538,-4584,-5392,-6039, -6571,-7040,-7462,-7853,-8199,-8482,-8709,-8886,-9027,-9138, -9222,-9326,-9531,-9887,-10364,-10869,-11281,-11487,-11420,-11071, -10532,-9951,-9429,-8959,-8484,-7977,-7484,-7075,-6806,-6689, -6657,-6565,-6236,-5554,-4541,-3352,-2170,-1159,-408,103, 474,849,1370,2101,3016,4025,5038,6011,6947,7883, 8856,9861,10868,11852,12788,13636,14347,14873,15197,15322, 15219,14899,14415,13842,13215,12524,11759,10924,10066,9231, 8445,7686,6911,6027,4952,3655,2183,641,-871,-2260, -3470,-4460,-5257,-5930,-6529,-7060,-7502,-7881,-8226,-8541, -8802,-8970,-9036,-9050,-9078,-9214,-9536,-10054,-10664,-11185, -11466,-11462,-11234,-10872,-10466,-10041,-9588,-9065,-8469,-7864, -7370,-7090,-7029,-7090,-7100,-6891,-6342,-5448,-4330,-3169, -2135,-1333,-766,-347,59,571,1247,2071,2981,3909, 4841,5770,6722,7706,8728,9765,10787,11780,12737,13628, 14388,14934,15219,15266,15129,14848,14446,13933,13311,12585, 11767,10914,10085,9331,8640,7941,7151,6189,5004,3595, 2056,517,-907,-2194,-3347,-4354,-5202,-5895,-6483,-7014, -7499,-7948,-8357,-8702,-8925,-8988,-8929,-8862,-8945,-9267, -9798,-10416,-10959,-11305,-11414,-11331,-11147,-10917,-10621,-10210, -9648,-8963,-8275,-7713,-7389,-7319,-7416,-7504,-7405,-7002, -6248,-5217,-4091,-3069,-2261,-1646,-1146,-665,-135,483, 1209,2028,2895,3779,4693,5648,6631,7629,8636,9664, 10728,11800,12830,13738,14457,14936,15178,15229,15150,14950, 14601,14080,13402,12623,11803,10999,10261,9614,9008,8310, 7427,6327,5039,3603,2092,603,-794,-2066,-3209,-4204, -5034,-5704,-6290,-6871,-7471,-8044,-8496,-8750,-8790,-8694, -8602,-8666,-8961,-9454,-10038,-10563,-10934,-11142,-11231,-11248, -11197,-11038,-10697,-10138,-9427,-8679,-8051,-7655,-7537,-7647, -7803,-7802,-7502,-6871,-5984,-4970,-3977,-3129,-2458,-1908, -1382,-823,-211,442,1147,1939,2809,3719,4643,5574, 6522,7498,8525,9621,10774,11912,12934,13768,14404,14861, 15141,15261,15230,15048,14679,14103,13360,12548,11777,11095, 10492,9920,9302,8548,7584,6412,5081,3652,2171,688, -728,-2006,-3105,-4013,-4763,-5449,-6158,-6903,-7614,-8171, -8479,-8541,-8458,-8376,-8439,-8713,-9155,-9662,-10120,-10492, -10785,-11033,-11225,-11338,-11316,-11094,-10617,-9906,-9096,-8387, -7935,-7791,-7879,-8051,-8116,-7927,-7424,-6671,-5786,-4892, -4065,-3332,-2684,-2103,-1540,-967,-360,299,1023,1837, 2728,3624,4490,5359,6291,7330,8453,9625,10798,11913, 12895,13692,14311,14787,15137,15341,15339,15100,14638,13997, 13250,12502,11832,11256,10714,10130,9437,8607,7618,6460, 5139,3671,2123,601,-782,-1944,-2900,-3736,-4552,-5412, -6309,-7152,-7801,-8169,-8278,-8255,-8245,-8349,-8587,-8935, -9334,-9733,-10096,-10427,-10763,-11113,-11423,-11568,-11448,-11039, -10371,-9574,-8813,-8283,-8064,-8113,-8274,-8361,-8240,-7866, -7267,-6516,-5709,-4924,-4178,-3482,-2840,-2271,-1746,-1187, -541,197,982,1780,2593,3418,4259,5150,6138,7248, 8443,9653,10797,11836,12765,13580,14275,14839,15245,15441, 15381,15056,14531,13894,13230,12597,12017,11472,10909,10294, 9590,8767,7778,6570,5145,3584,2013,580,-630,-1630, -2545,-3499,-4539,-5598,-6548,-7275,-7737,-7955,-8028,-8085, -8215,-8452,-8756,-9065,-9357,-9650,-9992,-10417,-10897,-11358, -11683,-11734,-11419,-10784,-9995,-9245,-8682,-8389,-8354,-8464, -8556,-8492,-8226,-7782,-7196,-6493,-5716,-4931,-4219,-3597, -3031,-2485,-1921,-1303,-609,155,927,1681,2417,3181, 4025,4986,6069,7247,8459,9633,10725,11734,12678,13562, 14344,14962,15357,15473,15314,14938,14444,13895,13318,12730, 12156,11618,11094,10547,9901,9062,7954,6575,5015,3449, 2033,818,-252,-1276,-2351,-3508,-4687,-5763,-6617,-7180, -7510,-7701,-7869,-8066,-8298,-8551,-8797,-9008,-9218,-9515, -9971,-10571,-11193,-11668,-11858,-11681,-11164,-10425,-9672,-9091, -8756,-8629,-8628,-8672,-8680,-8564,-8265,-7773,-7143,-6436, -5700,-4994,-4353,-3784,-3246,-2677,-2043,-1350,-618,105, 792,1458,2159,2955,3879,4927,6069,7248,8412,9523, 10585,11642,12689,13672,14478,15036,15328,15373,15208,14878, 14437,13916,13337,12744,12214,11786,11405,10932,10215,9187, 7877,6412,4926,3537,2301,1180,64,-1126,-2397,-3670, -4827,-5786,-6496,-6970,-7292,-7575,-7878,-8173,-8409,-8559, -8669,-8810,-9062,-9500,-10141,-10883,-11519,-11853,-11796,-11402, -10809,-10149,-9555,-9115,-8875,-8806,-8828,-8856,-8813,-8637, -8276,-7736,-7074,-6377,-5707,-5093,-4540,-4003,-3431,-2787, -2096,-1385,-695,-45,568,1194,1923,2807,3827,4915, 6022,7127,8234,9354,10501,11658,12776,13762,14513,15000, 15258,15332,15225,14915,14411,13809,13237,12779,12449,12170, 11808,11212,10293,9075,7695,6316,5025,3819,2652,1465, 200,-1152,-2526,-3790,-4831,-5637,-6253,-6747,-7183,-7597, -7973,-8247,-8371,-8377,-8394,-8583,-9031,-9705,-10475,-11177, -11649,-11789,-11585,-11127,-10544,-9958,-9466,-9131,-8972,-8953, -8994,-9005,-8909,-8641,-8196,-7609,-6978,-6360,-5784,-5240, -4699,-4128,-3487,-2785,-2074,-1417,-829,-270,322,1011, 1830,2782,3802,4837,5867,6927,8061,9283,10537,11728, 12789,13699,14450,15008,15335,15404,15213,14795,14235,13683, 13275,13039,12867,12589,12075,11269,10187,8935,7645,6434, 5297,4153,2916,1576,168,-1244,-2579,-3743,-4679,-5414, -6050,-6663,-7246,-7730,-8026,-8121,-8088,-8072,-8208,-8596, -9228,-10003,-10758,-11351,-11668,-11666,-11390,-10921,-10364,-9834, -9419,-9177,-9107,-9142,-9179,-9124,-8933,-8579,-8080,-7500, -6925,-6410,-5927,-5412,-4815,-4149,-3456,-2778,-2143,-1573, -1045,-490,158,935,1795,2700,3631,4618,5687,6844, 8062,9302,10520,11663,12713,13672,14500,15101,15380,15308, 14967,14494,14041,13709,13527,13419,13233,12811,12096,11145, 10061,8940,7822,6727,5620,4418,3062,1582,97,-1270, -2456,-3472,-4367,-5210,-6020,-6764,-7351,-7710,-7832,-7802, -7758,-7843,-8156,-8721,-9460,-10236,-10913,-11395,-11608,-11522, -11180,-10685,-10161,-9714,-9417,-9281,-9270,-9311,-9301,-9153, -8851,-8437,-7970,-7484,-7007,-6540,-6055,-5491,-4824,-4108, -3435,-2866,-2357,-1826,-1232,-576,120,854,1629,2474, 3408,4462,5619,6825,8015,9192,10377,11591,12773,13838, 14667,15154,15259,15048,14670,14310,14083,13990,13936,13793, 13453,12865,12046,11080,10085,9110,8131,7076,5876,4503, 3015,1519,137,-1082,-2173,-3214,-4244,-5251,-6164,-6892, -7358,-7551,-7562,-7529,-7582,-7814,-8270,-8930,-9708,-10479, -11098,-11467,-11560,-11392,-11011,-10510,-10039,-9700,-9536,-9502, -9506,-9481,-9375,-9140,-8781,-8372,-7985,-7626,-7216,-6713, -6108,-5459,-4809,-4193,-3629,-3094,-2549,-1950,-1304,-656, -27,631,1390,2303,3334,4427,5541,6675,7834,9047, 10352,11710,13010,14067,14756,15041,14998,14781,14543,14387, 14348,14358,14296,14043,13539,12822,11992,11145,10318,9454, 8448,7253,5888,4438,2988,1620,364,-809,-1969,-3160, -4345,-5424,-6294,-6904,-7237,-7341,-7322,-7328,-7485,-7860, -8441,-9170,-9958,-10697,-11252,-11514,-11474,-11200,-10796,-10361, -9996,-9770,-9703,-9712,-9677,-9532,-9298,-9031,-8749,-8457, -8144,-7763,-7271,-6681,-6053,-5449,-4900,-4362,-3794,-3188, -2577,-1984,-1413,-843,-238,454,1296,2277,3310,4330, 5338,6416,7648,9057,10553,12000,13239,14137,14640,14797, 14733,14613,14563,14617,14709,14701,14488,14051,13457,12795, 12122,11428,10656,9731,8592,7267,5858,4481,3176,1921, 666,-606,-1906,-3208,-4447,-5504,-6279,-6751,-6978,-7054, -7074,-7151,-7402,-7889,-8586,-9389,-10174,-10841,-11286,-11434, -11283,-10929,-10533,-10216,-10018,-9918,-9862,-9786,-9639,-9425, -9205,-9016,-8830,-8571,-8197,-7718,-7175,-6623,-6086,-5555, -5011,-4426,-3798,-3182,-2620,-2122,-1631,-1064,-369,439, 1321,2218,3109,4018,5033,6236,7648,9209,10792,12210, 13298,13980,14308,14425,14480,14584,14735,14874,14908,14758, 14409,13933,13422,12916,12372,11700,10836,9768,8545,7235, 5921,4660,3437,2193,869,-540,-1958,-3306,-4510,-5493, -6185,-6563,-6711,-6760,-6835,-7027,-7402,-7992,-8772,-9640, -10427,-10997,-11273,-11261,-11038,-10733,-10472,-10304,-10186,-10063, -9907,-9737,-9582,-9456,-9335,-9179,-8947,-8602,-8167,-7690, -7218,-6749,-6247,-5692,-5079,-4445,-3853,-3339,-2884,-2415, -1854,-1172,-398,400,1189,1958,2752,3650,4763,6152, 7767,9451,11000,12242,13109,13637,13943,14182,14445,14724, 14931,14977,14853,14602,14285,13934,13557,13124,12563,11800, 10816,9678,8471,7274,6091,4890,3649,2329,918,-565, -2049,-3427,-4570,-5438,-6017,-6333,-6459,-6507,-6625,-6916, -7427,-8165,-9039,-9898,-10575,-10961,-11064,-10984,-10835,-10677, -10532,-10381,-10197,-9993,-9816,-9692,-9613,-9537,-9412,-9193, -8881,-8509,-8121,-7739,-7327,-6831,-6243,-5616,-5015,-4478, -4005,-3562,-3091,-2544,-1883,-1133,-366,342,972,1604, 2374,3401,4733,6331,8058,9702,11068,12073,12787,13332, 13807,14240,14616,14887,15006,14960,14796,14598,14405,14185, 13858,13372,12706,11857,10852,9739,8595,7478,6369,5196, 3903,2480,961,-590,-2089,-3430,-4520,-5314,-5819,-6070, -6148,-6204,-6405,-6873,-7591,-8454,-9311,-10016,-10504,-10773, -10871,-10874,-10816,-10703,-10530,-10313,-10088,-9913,-9822,-9787, -9732,-9589,-9360,-9095,-8832,-8559,-8236,-7833,-7331,-6755, -6145,-5553,-5036,-4608,-4207,-3756,-3193,-2518,-1786,-1067, -429,101,589,1183,2077,3357,4936,6635,8277,9722, 10902,11820,12567,13235,13857,14374,14728,14900,14942,14909, 14848,14771,14659,14461,14108,13549,12794,11889,10905,9875, 8833,7777,6675,5457,4086,2576,990,-605,-2114,-3451, -4501,-5204,-5572,-5709,-5780,-5972,-6397,-7069,-7880,-8707, -9437,-10012,-10420,-10702,-10875,-10936,-10869,-10691,-10459,-10260, -10130,-10055,-9978,-9880,-9738,-9564,-9367,-9172,-8962,-8712, -8362,-7880,-7281,-6678,-6126,-5662,-5252,-4877,-4443,-3898, -3187,-2416,-1691,-1157,-742,-409,132,771,1578,3108, 4738,6398,7863,9160,10286,11306,12197,12985,13617,14102, 14402,14567,14647,14718,14759,14773,14694,14481,14066,13453, 12671,11800,10893,9976,9013,7982,6840,5580,4168,2616, 949,-739,-2306,-3582,-4482,-4995,-5239,-5386,-5613,-6027, -6647,-7404,-8187,-8916,-9579,-10167,-10656,-10990,-11136,-11115, -10997,-10842,-10713,-10620,-10556,-10486,-10370,-10207,-10046,-9916, -9824,-9707,-9517,-9207,-8774,-8219,-7615,-7059,-6635,-6324, -6011,-5568,-4958,-4218,-3443,-2748,-2235,-1901,-1646,-1268, -598,427,1750,3259,4805,6291,7673,8956,10149,11236, 12181,12955,13548,13965,14239,14427,14591,14761,14895,14928, 14801,14493,13997,13362,12634,11848,11012,10118,9173,8162, 7047,5769,4279,2591,804,-905,-2372,-3462,-4149,-4531, -4788,-5094,-5523,-6071,-6702,-7394,-8138,-8893,-9596,-10195, -10636,-10895,-10965,-10901,-10803,-10735,-10687,-10623,-10516,-10380, -10230,-10083,-9967,-9903,-9875,-9786,-9544,-9112,-8549,-7976, -7486,-7119,-6845,-6577,-6175,-5559,-4772,-3964,-3294,-2836, -2563,-2351,-2037,-1485,-633,497,1824,3251,4705,6134, 7515,8842,10091,11206,12135,12853,13380,13764,14070,14354, 14628,14875,15021,15006,14816,14477,13992,13381,12670,11901, 11103,10294,9435,8476,7333,5941,4277,2432,594,-1001, -2229,-3101,-3712,-4170,-4578,-4994,-5470,-6023,-6662,-7388, -8189,-8993,-9693,-10208,-10533,-10704,-10771,-10775,-10752,-10720, -10683,-10598,-10441,-10245,-10090,-10022,-10030,-10056,-10010,-9810, -9418,-8882,-8321,-7876,-7586,-7388,-7151,-6752,-6135,-5348, -4546,-3879,-3430,-3161,-2968,-2708,-2259,-1570,-649,473, 1747,3117,4537,5975,7395,8768,10031,11119,11972,12607, 13100,13540,13962,14342,14655,14883,15010,15002,14825,14482, 13988,13365,12649,11914,11221,10562,9816,8825,7498,5865, 4055,2240,568,-835,-1935,-2778,-3446,-3993,-4457,-4885, -5368,-5969,-6705,-7517,-8338,-9095,-9723,-10171,-10450,-10611, -10723,-10801,-10835,-10800,-10696,-10536,-10353,-10203,-10150,-10195, -10274,-10271,-10095,-9717,-9215,-8716,-8331,-8095,-7930,-7701, -7303,-6697,-5954,-5191,-4536,-4057,-3752,-3536,-3301,-2944, -2397,-1648,-715,365,1586,2943,4405,5922,7413,8788, 9977,10971,11783,12440,12993,13505,13993,14425,14761,14998, 15130,15131,14948,14543,13968,13322,12704,12145,11613,10992, 10144,8966,7450,5710,3918,2223,694,-636,-1733,-2584, -3241,-3771,-4248,-4727,-5290,-5979,-6796,-7663,-8472,-9147, -9676,-10076,-10375,-10603,-10788,-10897,-10902,-10791,-10604,-10411, -10286,-10277,-10378,-10488,-10488,-10302,-9932,-9478,-9056,-8756, -8568,-8420,-8188,-7795,-7215,-6506,-5779,-5132,-4628,-4279, -4041,-3820,-3515,-3057,-2455,-1720,-845,212,1475,2917, 4457,5999,7466,8779,9901,10849,11664,12381,13005,13555, 14050,14514,14931,15245,15379,15292,14970,14474,13915,13412, 12996,12606,12093,11343,10290,8955,7391,5687,3957,2305, 800,-501,-1560,-2370,-2984,-3502,-4011,-4589,-5267,-6052, -6899,-7726,-8462,-9068,-9560,-9977,-10342,-10646,-10852,-10905, -10794,-10582,-10383,-10290,-10341,-10483,-10609,-10608,-10416,-10068, -9662,-9315,-9077,-8925,-8788,-8582,-8236,-7714,-7044,-6319, -5665,-5159,-4791,-4498,-4233,-3949,-3606,-3159,-2588,-1888, -1015,84,1425,2943,4501,5997,7389,8651,9761,10713, 11524,12222,12844,13438,14031,14610,15098,15378,15374,15113, 14712,14295,13928,13619,13314,12914,12315,11455,10323,8937, 7360,5670,3962,2335,867,-379,-1360,-2098,-2681,-3233, -3833,-4529,-5320,-6157,-6979,-7721,-8359,-8932,-9480,-10002, -10449,-10743,-10833,-10732,-10523,-10339,-10282,-10385,-10565,-10700, -10690,-10507,-10203,-9849,-9532,-9321,-9222,-9150,-8989,-8659, -8166,-7561,-6918,-6293,-5748,-5316,-4974,-4670,-4375,-4078, -3768,-3387,-2864,-2143,-1189,-5,1366,2854,4367,5829, 7208,8477,9575,10474,11211,11886,12595,13347,14091,14710, 15101,15209,15075,14798,14487,14219,14000,13794,13515,13077, 12410,11487,10311,8909,7309,5594,3876,2273,878,-257, -1142,-1832,-2431,-3057,-3774,-4581,-5424,-6222,-6945,-7615, -8278,-8952,-9614,-10187,-10578,-10713,-10634,-10460,-10330,-10313, -10417,-10595,-10747,-10769,-10611,-10314,-9989,-9734,-9573,-9488, -9422,-9296,-9028,-8594,-8037,-7441,-6872,-6344,-5857,-5416, -5038,-4731,-4477,-4245,-3983,-3610,-3037,-2238,-1223,-34, 1311,2789,4327,5829,7196,8362,9327,10155,10936,11755, 12628,13493,14233,14751,14998,14999,14852,14656,14483,14338, 14193,13999,13702,13244,12562,11613,10395,8937,7294,5552, 3845,2307,1032,27,-778,-1483,-2180,-2935,-3751,-4579, -5338,-6025,-6698,-7445,-8255,-9051,-9717,-10175,-10400,-10410, -10300,-10201,-10218,-10367,-10578,-10729,-10743,-10600,-10345,-10057, -9827,-9710,-9675,-9642,-9524,-9278,-8908,-8444,-7929,-7397, -6871,-6345,-5834,-5383,-5037,-4815,-4658,-4472,-4173,-3723, -3108,-2311,-1320,-116,1294,2855,4419,5851,7074,8105, 9025,9921,10856,11828,12793,13646,14288,14677,14837,14839, 14757,14649,14550,14461,14354,14182,13892,13428,12733,11749, 10460,8910,7192,5443,3815,2424,1304,391,-443,-1281, -2135,-2958,-3721,-4432,-5124,-5841,-6637,-7517,-8416,-9200, -9759,-10054,-10143,-10128,-10114,-10174,-10336,-10555,-10735,-10782, -10661,-10425,-10173,-9985,-9894,-9874,-9852,-9758,-9556,-9252, -8884,-8470,-8002,-7466,-6881,-6311,-5824,-5467,-5229,-5049, -4869,-4649,-4353,-3946,-3372,-2563,-1486,-160,1336,2888, 4352,5637,6736,7735,8736,9789,10876,11930,12876,13644, 14193,14516,14662,14706,14696,14661,14610,14547,14471,14340, 14093,13641,12908,11831,10415,8748,7004,5366,3931,2691, 1599,592,-366,-1279,-2131,-2895,-3573,-4241,-4981,-5843, -6799,-7767,-8636,-9301,-9709,-9882,-9928,-9980,-10119,-10336, -10570,-10741,-10782,-10679,-10487,-10281,-10139,-10070,-10042,-10000, -9902,-9747,-9546,-9290,-8951,-8505,-7963,-7373,-6803,-6311, -5912,-5594,-5340,-5139,-4974,-4813,-4590,-4219,-3604,-2678, -1458,-48,1424,2849,4156,5336,6426,7503,8627,9800, 10954,12008,12898,13590,14088,14390,14549,14620,14651,14659, 14647,14632,14624,14591,14403,13904,13008,11751,10238,8613, 7010,5534,4211,2991,1822,704,-310,-1185,-1931,-2601, -3269,-4016,-4900,-5908,-6955,-7906,-8655,-9152,-9433,-9587, -9720,-9914,-10186,-10462,-10652,-10695,-10607,-10457,-10318,-10223, -10157,-10094,-10019,-9939,-9868,-9767,-9593,-9299,-8880,-8375, -7829,-7284,-6770,-6311,-5911,-5574,-5315,-5167,-5117,-5067, -4876,-4422,-3653,-2588,-1315,47,1388,2664,3871,5038, 6201,7388,8598,9810,10967,11986,12809,13446,13925,14256, 14442,14491,14482,14501,14593,14742,14879,14878,14599,13928, 12868,11534,10069,8577,7120,5720,4373,3078,1846,725, -233,-1007,-1661,-2310,-3060,-3974,-5029,-6128,-7142,-7961, -8543,-8914,-9172,-9421,-9724,-10056,-10348,-10535,-10601,-10580, -10520,-10447,-10362,-10263,-10165,-10094,-10055,-10029,-9983,-9866, -9637,-9282,-8835,-8353,-7859,-7348,-6813,-6298,-5860,-5563, -5427,-5423,-5463,-5408,-5122,-4523,-3620,-2504,-1280,-28, 1196,2382,3553,4752,6011,7310,8584,9776,10869,11848, 12682,13347,13823,14105,14224,14252,14301,14460,14735,15028, 15191,15088,14629,13809,12705,11428,10072,8681,7262,5829, 4409,3060,1844,823,-4,-683,-1339,-2087,-3000,-4074, -5214,-6285,-7165,-7805,-8269,-8661,-9053,-9442,-9799,-10088, -10305,-10441,-10511,-10519,-10477,-10392,-10276,-10160,-10084,-10077, -10104,-10091,-9994,-9803,-9540,-9213,-8825,-8377,-7860,-7287, -6687,-6145,-5766,-5611,-5645,-5747,-5778,-5616,-5193,-4486, -3525,-2416,-1287,-178,934,2098,3330,4619,5935,7238, 8490,9682,10805,11830,12688,13313,13684,13859,13942,14054, 14280,14636,15030,15329,15399,15153,14575,13733,12693,11514, 10223,8831,7360,5851,4394,3078,1968,1088,389,-261, -1016,-1966,-3086,-4236,-5288,-6186,-6925,-7543,-8082,-8573, -9023,-9421,-9751,-10009,-10217,-10378,-10462,-10451,-10354,-10230, -10138,-10096,-10094,-10107,-10108,-10055,-9924,-9735,-9519,-9258, -8891,-8387,-7758,-7097,-6506,-6066,-5832,-5818,-5944,-6071, -6036,-5747,-5187,-4404,-3480,-2487,-1467,-415,705,1918, 3196,4495,5786,7070,8362,9645,10844,11870,12628,13106, 13364,13524,13711,14001,14408,14864,15256,15464,15415,15091, 14520,13741,12779,11647,10346,8890,7330,5763,4333,3160, 2255,1516,793,-27,-993,-2082,-3213,-4281,-5231,-6058, -6796,-7473,-8076,-8587,-9021,-9405,-9753,-10052,-10278,-10408, -10440,-10389,-10288,-10207,-10186,-10208,-10214,-10175,-10106,-10037, -9969,-9869,-9696,-9403,-8942,-8331,-7625,-6940,-6408,-6106, -6051,-6168,-6322,-6361,-6177,-5757,-5151,-4412,-3586,-2672, -1672,-584,573,1779,3013,4282,5595,6969,8374,9724, 10911,11831,12438,12791,13025,13288,13657,14128,14629,15073, 15391,15523,15420,15094,14567,13867,12955,11789,10367,8775, 7168,5701,4479,3505,2697,1908,1031,36,-1033,-2108, -3158,-4158,-5090,-5930,-6672,-7319,-7884,-8383,-8839,-9261, -9635,-9921,-10078,-10119,-10094,-10054,-10021,-9990,-9947,-9898, -9834,-9764,-9714,-9699,-9688,-9625,-9427,-9035,-8437,-7694, -6940,-6327,-5953,-5838,-5896,-6010,-6060,-5967,-5702,-5281, -4729,-4054,-3251,-2329,-1317,-250,842,1972,3176,4484, 5910,7413,8883,10183,11209,11944,12437,12785,13099,13476, 13949,14490,14998,15377,15580,15622,15533,15305,14881,14176, 13139,11781,10210,8599,7113,5851,4793,3861,2967,2055, 1088,61,-997,-2051,-3084,-4090,-5035,-5873,-6583,-7197, -7774,-8338,-8863,-9312,-9639,-9850,-9969,-10031,-10063,-10072, -10053,-9997,-9910,-9808,-9729,-9693,-9730,-9811,-9870,-9795, -9492,-8936,-8195,-7413,-6753,-6321,-6133,-6111,-6150,-6175, -6137,-6014,-5771,-5372,-4822,-4125,-3295,-2374,-1411,-447, 551,1648,2927,4388,5952,7504,8927,10118,11021,11647, 12095,12499,12960,13491,14045,14559,14983,15288,15491,15627, 15682,15549,15096,14232,13005,11549,10023,8557,7243,6090, 5058,4079,3115,2153,1176,149,-930,-2017,-3064,-4034, -4914,-5707,-6431,-7113,-7764,-8361,-8867,-9256,-9531,-9729, -9872,-9983,-10057,-10081,-10033,-9919,-9770,-9643,-9603,-9680, -9849,-10012,-10041,-9818,-9317,-8629,-7886,-7218,-6715,-6410, -6278,-6249,-6250,-6240,-6204,-6106,-5880,-5459,-4841,-4089, -3285,-2470,-1633,-735,271,1443,2825,4392,6029,7559, 8863,9899,10680,11282,11811,12363,12954,13531,14028,14440, 14818,15196,15558,15836,15927,15708,15087,14072,12789,11390, 10002,8678,7442,6303,5261,4288,3345,2373,1340,241, -874,-1947,-2944,-3864,-4730,-5564,-6353,-7089,-7756,-8323, -8778,-9127,-9404,-9637,-9840,-10002,-10092,-10074,-9938,-9734, -9557,-9511,-9640,-9881,-10116,-10210,-10064,-9664,-9057,-8359, -7704,-7173,-6782,-6508,-6342,-6287,-6324,-6387,-6377,-6223, -5894,-5401,-4781,-4091,-3385,-2680,-1929,-1044,39,1352, 2870,4520,6137,7551,8686,9593,10373,11093,11774,12396, 12948,13425,13856,14300,14795,15336,15826,16125,16103,15711, 14954,13923,12699,11383,10053,8763,7566,6482,5484,4516, 3520,2471,1372,263,-816,-1832,-2795,-3729,-4642,-5531, -6365,-7111,-7752,-8280,-8696,-9035,-9349,-9663,-9951,-10126, -10126,-9968,-9733,-9536,-9483,-9614,-9887,-10190,-10368,-10305, -9992,-9499,-8917,-8306,-7717,-7199,-6805,-6558,-6449,-6454, -6531,-6590,-6536,-6305,-5901,-5372,-4782,-4178,-3589,-2988, -2277,-1333,-91,1402,3020,4616,6075,7342,8426,9388, 10284,11101,11799,12348,12781,13202,13704,14320,14992,15622, 16087,16296,16185,15729,14950,13898,12665,11366,10093,8890, 7764,6707,5681,4646,3586,2499,1407,331,-716,-1718, -2693,-3661,-4629,-5567,-6410,-7102,-7653,-8116,-8563,-9013, -9445,-9817,-10064,-10119,-9973,-9704,-9468,-9404,-9556,-9845, -10145,-10347,-10383,-10228,-9884,-9403,-8834,-8227,-7632,-7126, -6775,-6604,-6576,-6634,-6701,-6707,-6574,-6255,-5796,-5286, -4809,-4379,-3928,-3340,-2510,-1384,-2,1525,3063,4516, 5856,7099,8271,9355,10303,11066,11635,12085,12534,13074, 13733,14465,15188,15812,16245,16408,16240,15722,14892,13821, 12616,11384,10196,9073,7988,6915,5840,4758,3665,2572, 1503,474,-529,-1549,-2606,-3664,-4676,-5577,-6329,-6938, -7456,-7962,-8520,-9109,-9631,-9958,-10036,-9907,-9677,-9469, -9390,-9483,-9722,-10010,-10249,-10378,-10363,-10180,-9812,-9294, -8691,-8079,-7506,-7049,-6767,-6675,-6731,-6831,-6869,-6759, -6482,-6085,-5665,-5308,-5026,-4728,-4273,-3560,-2555,-1304, 78,1488,2885,4275,5666,7024,8263,9319,10155,10804, 11327,11815,12355,13008,13756,14550,15300,15929,16350,16459, 16201,15600,14743,13725,12612,11461,10326,9236,8168,7080, 5965,4849,3769,2738,1732,711,-343,-1450,-2591,-3689, -4652,-5435,-6069,-6650,-7263,-7950,-8657,-9280,-9705,-9864, -9789,-9610,-9447,-9373,-9412,-9570,-9823,-10104,-10327,-10419, -10358,-10124,-9715,-9164,-8539,-7917,-7377,-7007,-6850,-6872, -6962,-6997,-6881,-6617,-6275,-5954,-5714,-5557,-5379,-5031, -4423,-3553,-2495,-1315,-49,1295,2719,4194,5662,7031, 8215,9164,9901,10502,11045,11597,12211,12932,13768,14644, 15434,16034,16374,16400,16090,15462,14607,13635,12617,11559, 10470,9361,8239,7111,5996,4926,3918,2950,1959,876, -313,-1527,-2678,-3671,-4475,-5145,-5793,-6514,-7311,-8113, -8813,-9317,-9595,-9657,-9564,-9409,-9300,-9306,-9433,-9661, -9941,-10207,-10398,-10470,-10380,-10104,-9634,-9013,-8342,-7749, -7332,-7122,-7100,-7150,-7149,-7000,-6719,-6411,-6181,-6065, -5998,-5878,-5601,-5117,-4435,-3589,-2612,-1506,-250,1154, 2666,4201,5662,6975,8085,8975,9667,10233,10779,11399, 12129,12968,13877,14781,15573,16132,16385,16319,15950,15332, 14541,13650,12697,11679,10578,9417,8246,7120,6085,5131, 4205,3219,2103,860,-406,-1580,-2578,-3419,-4164,-4906, -5705,-6563,-7434,-8231,-8862,-9275,-9459,-9459,-9366,-9262, -9227,-9295,-9465,-9716,-10014,-10305,-10511,-10559,-10398,-10001, -9412,-8732,-8106,-7663,-7446,-7387,-7353,-7247,-7049,-6790, -6550,-6391,-6323,-6294,-6213,-6001,-5641,-5144,-4520,-3746, -2795,-1657,-348,1105,2659,4213,5666,6929,7960,8778, 9439,10022,10616,11309,12139,13088,14077,14996,15741,16222, 16394,16266,15886,15325,14629,13825,12891,11819,10629,9419, 8296,7309,6412,5505,4496,3337,2075,806,-368,-1393, -2282,-3103,-3924,-4786,-5699,-6639,-7538,-8295,-8842,-9170, -9302,-9297,-9231,-9179,-9194,-9299,-9498,-9788,-10138,-10482, -10704,-10681,-10358,-9791,-9124,-8522,-8096,-7859,-7735,-7613, -7423,-7158,-6897,-6714,-6618,-6572,-6522,-6438,-6295,-6070, -5732,-5271,-4677,-3925,-2967,-1789,-411,1102,2671,4205, 5606,6798,7757,8513,9144,9750,10426,11231,12170,13190, 14195,15084,15757,16149,16259,16136,15837,15390,14765,13928, 12888,11720,10545,9464,8516,7639,6728,5696,4533,3280, 2026,842,-214,-1139,-1985,-2832,-3745,-4730,-5740,-6718, -7584,-8270,-8740,-9005,-9119,-9139,-9107,-9075,-9092,-9229, -9526,-9957,-10412,-10751,-10830,-10602,-10123,-9540,-9012,-8627, -8369,-8155,-7917,-7655,-7386,-7143,-6954,-6836,-6780,-6744, -6681,-6558,-6391,-6176,-5890,-5482,-4907,-4131,-3126,-1890, -455,1099,2683,4185,5506,6603,7475,8182,8814,9472, 10249,11174,12228,13296,14263,15035,15583,15928,16101,16110, 15924,15476,14737,13762,12668,11587,10587,9678,8812,7911, 6905,5759,4512,3250,2065,1004,60,-807,-1664,-2582, -3594,-4669,-5729,-6678,-7467,-8079,-8522,-8802,-8921,-8909, -8827,-8781,-8869,-9165,-9643,-10180,-10595,-10749,-10608,-10255, -9823,-9404,-9046,-8756,-8489,-8211,-7901,-7593,-7333,-7144, -7018,-6932,-6862,-6786,-6690,-6571,-6433,-6264,-6025,-5652, -5088,-4283,-3213,-1892,-397,1177,2730,4173,5412,6411, 7200,7867,8534,9309,10243,11309,12397,13382,14207,14885, 15456,15918,16212,16255,15997,15423,14588,13598,12586,11643, 10782,9952,9070,8083,6971,5757,4504,3289,2197,1241, 379,-494,-1442,-2483,-3578,-4665,-5688,-6594,-7357,-7973, -8419,-8665,-8711,-8625,-8549,-8632,-8934,-9406,-9927,-10354, -10584,-10581,-10389,-10092,-9773,-9472,-9179,-8881,-8564,-8236, -7915,-7639,-7431,-7281,-7163,-7068,-6976,-6875,-6765,-6659, -6562,-6446,-6245,-5874,-5275,-4415,-3285,-1915,-389,1192, 2712,4068,5181,6066,6801,7532,8356,9306,10336,11371, 12351,13238,14056,14812,15493,16028,16320,16283,15896,15235, 14410,13529,12664,11831,11017,10171,9227,8142,6945,5706, 4507,3402,2421,1520,627,-327,-1366,-2458,-3547,-4605, -5626,-6584,-7412,-8009,-8337,-8416,-8368,-8335,-8446,-8752, -9203,-9699,-10123,-10395,-10496,-10449,-10299,-10097,-9868,-9603, -9302,-8963,-8616,-8285,-7990,-7748,-7570,-7433,-7310,-7176, -7045,-6931,-6852,-6808,-6774,-6692,-6487,-6089,-5440,-4524, -3330,-1894,-313,1254,2669,3854,4836,5696,6542,7435, 8394,9385,10367,11317,12237,13153,14072,14950,15689,16182, 16367,16223,15781,15126,14372,13616,12885,12140,11328,10403, 9349,8174,6951,5771,4690,3701,2751,1799,825,-164, -1174,-2232,-3353,-4515,-5643,-6630,-7361,-7799,-7984,-8016, -8031,-8146,-8428,-8854,-9337,-9776,-10099,-10286,-10362,-10343, -10248,-10094,-9884,-9617,-9295,-8939,-8589,-8282,-8034,-7831, -7666,-7510,-7343,-7175,-7038,-6957,-6930,-6928,-6924,-6877, -6716,-6336,-5634,-4576,-3229,-1719,-192,1224,2470,3541, 4509,5459,6431,7418,8375,9296,10209,11147,12127,13144, 14150,15061,15774,16189,16272,16050,15601,15015,14381,13751, 13113,12382,11490,10442,9302,8146,7014,5926,4883,3876, 2910,1976,1060,102,-945,-2107,-3360,-4611,-5738,-6623, -7196,-7474,-7584,-7671,-7845,-8134,-8524,-8965,-9395,-9762, -10034,-10204,-10293,-10307,-10250,-10123,-9910,-9619,-9272,-8924, -8624,-8379,-8165,-7957,-7748,-7559,-7391,-7239,-7105,-7016, -7000,-7073,-7176,-7210,-7048,-6569,-5711,-4511,-3100,-1644, -274,977,2135,3223,4269,5291,6296,7263,8178,9062, 9977,10973,12046,13150,14203,15108,15754,16068,16049,15790, 15396,14949,14468,13920,13252,12429,11467,10412,9325,8217, 7097,5987,4929,3956,3067,2226,1344,339,-839,-2166, -3522,-4760,-5759,-6466,-6899,-7135,-7292,-7489,-7778,-8153, -8572,-8998,-9382,-9702,-9951,-10140,-10274,-10331,-10280,-10110, -9854,-9556,-9255,-8965,-8690,-8438,-8206,-7998,-7802,-7602, -7395,-7192,-7036,-6984,-7072,-7279,-7485,-7519,-7230,-6560, -5558,-4333,-3006,-1689,-430,765,1921,3063,4165,5205, 6173,7084,7963,8862,9841,10940,12127,13316,14373,15190, 15694,15891,15853,15681,15432,15094,14630,14037,13324,12494, 11560,10534,9440,8298,7144,6045,5056,4199,3416,2607, 1658,496,-848,-2257,-3591,-4716,-5570,-6153,-6535,-6805, -7052,-7349,-7724,-8135,-8542,-8912,-9259,-9588,-9890,-10120, -10252,-10275,-10201,-10035,-9801,-9527,-9234,-8951,-8692,-8464, -8264,-8072,-7845,-7567,-7263,-7021,-6942,-7058,-7320,-7610, -7779,-7687,-7241,-6458,-5430,-4271,-3059,-1837,-617,594, 1787,2946,4046,5057,5971,6811,7654,8593,9699,10951, 12239,13405,14343,15012,15432,15646,15692,15599,15394,15059, 14595,14014,13337,12545,11618,10550,9381,8193,7068,6082, 5253,4514,3760,2861,1751,443,-965,-2357,-3604,-4613, -5355,-5861,-6243,-6595,-6965,-7337,-7705,-8079,-8464,-8854, -9239,-9602,-9906,-10118,-10229,-10241,-10172,-10020,-9790,-9501, -9210,-8965,-8791,-8644,-8464,-8193,-7834,-7440,-7118,-6977, -7071,-7357,-7706,-7962,-8002,-7770,-7249,-6471,-5492,-4385, -3219,-2030,-815,425,1668,2850,3903,4807,5618,6438, 7372,8481,9734,11036,12267,13328,14179,14814,15250,15513, 15606,15542,15343,15029,14613,14094,13446,12627,11611,10447, 9238,8106,7133,6316,5590,4862,4029,3009,1763,355, -1076,-2381,-3479,-4357,-5054,-5603,-6058,-6468,-6857,-7229, -7595,-7977,-8390,-8809,-9212,-9561,-9853,-10077,-10210,-10233, -10136,-9928,-9659,-9405,-9210,-9080,-8973,-8808,-8520,-8101, -7633,-7237,-7031,-7072,-7320,-7662,-7968,-8136,-8082,-7767, -7202,-6436,-5532,-4516,-3391,-2159,-854,459,1694,2781, 3700,4512,5332,6266,7361,8592,9889,11149,12305,13308, 14142,14789,15241,15500,15583,15529,15386,15173,14855,14363, 13644,12701,11584,10392,9242,8228,7393,6700,6033,5253, 4274,3088,1753,353,-988,-2185,-3206,-4063,-4780,-5372, -5852,-6264,-6648,-7036,-7441,-7862,-8281,-8692,-9088,-9464, -9801,-10056,-10174,-10128,-9943,-9700,-9491,-9372,-9330,-9283, -9135,-8829,-8379,-7878,-7437,-7153,-7087,-7243,-7561,-7917, -8167,-8225,-8063,-7707,-7183,-6512,-5678,-4669,-3482,-2165, -810,455,1553,2494,3337,4175,5096,6156,7343,8603, 9867,11088,12226,13233,14060,14663,15053,15286,15419,15478, 15444,15288,14958,14406,13593,12552,11388,10244,9229,8385, 7683,7028,6296,5380,4261,3000,1676,356,-908,-2063, -3073,-3931,-4641,-5216,-5695,-6128,-6546,-6964,-7373,-7776, -8195,-8643,-9110,-9549,-9900,-10095,-10104,-9966,-9778,-9645, -9609,-9623,-9612,-9495,-9227,-8804,-8281,-7766,-7387,-7232, -7319,-7577,-7900,-8161,-8299,-8275,-8112,-7824,-7390,-6755, -5881,-4766,-3481,-2148,-874,257,1228,2090,2952,3877, 4895,6004,7193,8458,9754,11011,12142,13088,13826,14370, 14763,15056,15287,15456,15514,15385,14999,14317,13372,12270, 11160,10173,9350,8645,7970,7246,6402,5401,4251,2998, 1701,410,-829,-1952,-2919,-3736,-4427,-5027,-5558,-6023, -6437,-6814,-7192,-7604,-8094,-8654,-9204,-9631,-9867,-9915, -9843,-9734,-9665,-9675,-9747,-9813,-9773,-9566,-9168,-8628, -8063,-7605,-7366,-7363,-7540,-7788,-8021,-8184,-8274,-8293, -8219,-8005,-7577,-6870,-5873,-4663,-3374,-2128,-988,48, 998,1890,2771,3712,4760,5925,7188,8510,9830,11067, 12132,12991,13647,14157,14589,14989,15357,15628,15708,15506, 14977,14161,13158,12118,11165,10347,9634,8952,8236,7439, 6541,5512,4357,3109,1818,553,-633,-1696,-2630,-3457, -4202,-4857,-5401,-5820,-6155,-6498,-6928,-7477,-8096,-8693, -9178,-9495,-9626,-9622,-9559,-9524,-9576,-9714,-9865,-9917, -9781,-9425,-8907,-8351,-7884,-7586,-7481,-7530,-7666,-7827, -7987,-8144,-8305,-8426,-8414,-8168,-7631,-6812,-5771,-4588, -3371,-2199,-1112,-119,793,1661,2542,3505,4615,5866, 7215,8588,9905,11076,12041,12799,13408,13950,14494,15053, 15544,15842,15822,15454,14790,13935,13007,12096,11266,10526, 9843,9160,8430,7610,6666,5584,4381,3114,1863,679, -428,-1479,-2475,-3379,-4148,-4744,-5180,-5531,-5890,-6334, -6890,-7536,-8193,-8748,-9142,-9351,-9406,-9390,-9398,-9504, -9713,-9951,-10088,-10029,-9734,-9258,-8720,-8243,-7916,-7745, -7684,-7679,-7723,-7846,-8054,-8315,-8551,-8674,-8601,-8271, -7670,-6821,-5784,-4637,-3462,-2334,-1298,-354,514,1355, 2239,3252,4440,5787,7213,8607,9873,10927,11771,12475, 13148,13846,14566,15221,15705,15903,15761,15299,14608,13793, 12949,12131,11370,10672,10023,9368,8633,7756,6718,5568, 4369,3176,2007,850,-313,-1445,-2485,-3355,-4028,-4528, -4923,-5300,-5746,-6306,-6968,-7671,-8311,-8784,-9044,-9142, -9174,-9239,-9398,-9665,-9968,-10188,-10203,-9981,-9583,-9118, -8677,-8318,-8046,-7848,-7721,-7673,-7742,-7933,-8210,-8507, -8734,-8820,-8696,-8322,-7688,-6826,-5784,-4646,-3504,-2431, -1463,-590,230,1057,1982,3087,4401,5852,7298,8604, 9708,10633,11439,12217,13040,13894,14707,15362,15762,15846, 15628,15152,14487,13708,12902,12149,11487,10888,10276,9564, 8718,7750,6710,5625,4514,3357,2161,935,-277,-1415, -2407,-3207,-3804,-4251,-4641,-5089,-5657,-6339,-7068,-7754, -8296,-8632,-8778,-8838,-8948,-9184,-9524,-9877,-10130,-10204, -10078,-9801,-9447,-9069,-8699,-8349,-8050,-7822,-7688,-7678, -7807,-8061,-8377,-8678,-8891,-8941,-8770,-8348,-7680,-6797, -5759,-4638,-3526,-2514,-1641,-876,-117,755,1821,3092, 4506,5946,7286,8440,9417,10305,11195,12122,13063,13970, 14764,15376,15725,15764,15494,14965,14282,13565,12886,12277, 11702,11096,10407,9613,8729,7789,6806,5779,4691,3520, 2271,986,-249,-1345,-2233,-2918,-3441,-3882,-4343,-4916, -5628,-6407,-7140,-7713,-8072,-8260,-8380,-8556,-8848,-9230, -9610,-9904,-10054,-10053,-9914,-9675,-9365,-9013,-8636,-8267, -7957,-7739,-7641,-7682,-7869,-8171,-8523,-8836,-9033,-9051, -8844,-8383,-7673,-6737,-5670,-4575,-3566,-2705,-1960,-1252, -435,583,1823,3212,4622,5935,7105,8151,9132,10097, 11088,12105,13112,14061,14873,15462,15737,15665,15293,14747, 14149,13567,13016,12470,11885,11230,10484,9672,8816,7935, 7004,5985,4852,3609,2296,992,-206,-1213,-1988,-2563, -3040,-3539,-4160,-4916,-5733,-6489,-7075,-7471,-7725,-7927, -8160,-8479,-8863,-9261,-9604,-9841,-9960,-9956,-9841,-9622, -9325,-8973,-8589,-8212,-7889,-7685,-7637,-7748,-7984,-8304, -8652,-8971,-9175,-9185,-8942,-8407,-7609,-6622,-5576,-4597, -3764,-3060,-2383,-1594,-618,559,1870,3225,4531,5738, 6846,7882,8876,9870,10912,12016,13133,14152,14943,15418, 15562,15411,15064,14609,14121,13631,13115,12553,11926,11233, 10489,9716,8928,8099,7171,6111,4901,3567,2191,894, -203,-1041,-1664,-2190,-2757,-3449,-4255,-5097,-5862,-6470, -6909,-7228,-7506,-7806,-8149,-8531,-8934,-9318,-9639,-9862, -9971,-9968,-9861,-9655,-9349,-8972,-8566,-8198,-7912,-7747, -7721,-7846,-8107,-8466,-8861,-9221,-9428,-9383,-9015,-8340, -7452,-6495,-5603,-4834,-4163,-3488,-2710,-1765,-662,554, 1840,3144,4394,5533,6574,7572,8597,9692,10872,12089, 13244,14211,14890,15242,15307,15166,14898,14560,14163,13698, 13154,12545,11894,11216,10520,9813,9082,8283,7335,6183, 4845,3426,2074,922,17,-676,-1277,-1913,-2663,-3509, -4370,-5154,-5805,-6314,-6703,-7027,-7356,-7723,-8132,-8553, -8955,-9317,-9622,-9852,-9989,-10001,-9880,-9639,-9299,-8911, -8517,-8172,-7917,-7764,-7735,-7862,-8172,-8637,-9144,-9532, -9653,-9427,-8872,-8094,-7254,-6469,-5767,-5116,-4459,-3731, -2872,-1851,-677,592,1885,3132,4274,5313,6305,7337, 8467,9707,11002,12262,13375,14235,14800,15095,15177,15103, 14912,14625,14249,13779,13206,12555,11881,11244,10658,10069, 9388,8526,7430,6121,4704,3343,2164,1217,448,-245, -960,-1749,-2611,-3489,-4316,-5027,-5602,-6059,-6440,-6801, -7189,-7607,-8035,-8458,-8860,-9234,-9560,-9809,-9948,-9947, -9802,-9537,-9197,-8826,-8452,-8099,-7808,-7625,-7627,-7859, -8321,-8910,-9427,-9693,-9621,-9239,-8641,-7938,-7224,-6559, -5949,-5353,-4700,-3935,-2994,-1880,-644,629,1855,2987, 4010,4985,6009,7156,8439,9782,11098,12296,13313,14101, 14634,14931,15056,15053,14939,14692,14300,13768,13141,12499, 11916,11414,10943,10386,9614,8582,7329,5967,4631,3431, 2413,1558,797,34,-789,-1679,-2587,-3446,-4206,-4858, -5395,-5846,-6249,-6649,-7064,-7496,-7937,-8375,-8807,-9207, -9546,-9790,-9901,-9865,-9713,-9490,-9198,-8829,-8404,-7964, -7633,-7528,-7715,-8149,-8720,-9268,-9655,-9772,-9605,-9187, -8607,-7975,-7377,-6839,-6319,-5748,-5057,-4196,-3148,-1941, -681,522,1611,2613,3591,4626,5766,7045,8418,9818, 11133,12288,13233,13962,14495,14864,15097,15197,15132,14857, 14383,13795,13206,12715,12336,11989,11544,10886,9961,8797, 7500,6190,4982,3929,3021,2190,1366,499,-420,-1351, -2250,-3070,-3795,-4424,-4976,-5456,-5899,-6330,-6766,-7226, -7719,-8236,-8737,-9165,-9469,-9663,-9777,-9829,-9786,-9605, -9252,-8756,-8222,-7786,-7574,-7645,-7981,-8503,-9072,-9546, -9802,-9801,-9553,-9112,-8567,-8009,-7515,-7091,-6656,-6079, -5278,-4259,-3106,-1899,-728,353,1329,2267,3259,4377, 5637,7016,8442,9837,11101,12172,13041,13748,14341,14824, 15149,15240,15065,14676,14165,13649,13211,12883,12602,12261, 11729,10936,9891,8678,7417,6219,5136,4175,3279,2405, 1515,585,-366,-1295,-2156,-2937,-3641,-4270,-4822,-5293, -5719,-6147,-6628,-7171,-7742,-8272,-8715,-9069,-9367,-9633, -9844,-9951,-9879,-9588,-9108,-8531,-7994,-7647,-7585,-7809, -8249,-8795,-9326,-9716,-9871,-9758,-9427,-8984,-8533,-8137, -7786,-7413,-6923,-6240,-5331,-4245,-3074,-1920,-850,123, 1037,1967,3009,4224,5615,7093,8534,9834,10973,11986, 12909,13740,14444,14959,15221,15194,14915,14497,14061,13698, 13427,13206,12935,12503,11827,10906,9808,8625,7452,6359, 5370,4450,3532,2589,1624,674,-257,-1160,-2035,-2848, -3557,-4140,-4615,-5042,-5500,-6027,-6600,-7167,-7686,-8141, -8553,-8949,-9339,-9707,-9968,-10032,-9843,-9417,-8850,-8279, -7828,-7604,-7656,-7986,-8500,-9069,-9539,-9797,-9805,-9597, -9265,-8921,-8624,-8372,-8093,-7690,-7101,-6304,-5315,-4208, -3072,-2001,-1048,-179,703,1718,2910,4264,5708,7144, 8490,9714,10845,11924,12951,13874,14611,15068,15212,15072, 14761,14411,14117,13906,13735,13526,13190,12642,11857,10871, 9775,8664,7602,6588,5604,4633,3675,2729,1788,825, -163,-1137,-2033,-2794,-3406,-3921,-4408,-4923,-5472,-6036, -6583,-7081,-7534,-7985,-8463,-8978,-9478,-9876,-10083,-10041, -9744,-9242,-8640,-8076,-7698,-7605,-7813,-8256,-8808,-9318, -9658,-9762,-9662,-9453,-9224,-9014,-8830,-8626,-8337,-7884, -7213,-6318,-5263,-4164,-3131,-2219,-1389,-536,443,1597, 2897,4277,5662,7006,8283,9511,10725,11925,13043,13971, 14613,14939,14977,14821,14578,14355,14205,14109,13984,13731, 13283,12620,11777,10824,9813,8767,7715,6698,5737,4813, 3888,2921,1902,860,-165,-1114,-1927,-2598,-3176,-3727, -4299,-4897,-5476,-5992,-6449,-6892,-7373,-7914,-8501,-9094, -9626,-10015,-10161,-10023,-9616,-9032,-8407,-7904,-7660,-7737, -8083,-8578,-9075,-9449,-9651,-9667,-9555,-9393,-9259,-9171, -9088,-8923,-8583,-8001,-7186,-6225,-5216,-4248,-3361,-2542, -1715,-778,323,1569,2887,4196,5474,6755,8059,9392, 10723,11990,13101,13956,14490,14709,14684,14548,14425,14376, 14361,14302,14117,13768,13254,12589,11778,10834,9807,8760, 7761,6826,5937,5043,4082,3031,1928,849,-122,-956, -1672,-2333,-2982,-3634,-4259,-4837,-5358,-5823,-6267,-6738, -7282,-7908,-8577,-9225,-9775,-10121,-10179,-9917,-9399,-8778, -8223,-7879,-7822,-8029,-8410,-8850,-9244,-9511,-9613,-9583, -9497,-9440,-9441,-9454,-9397,-9174,-8715,-8021,-7156,-6227, -5328,-4485,-3687,-2853,-1927,-875,288,1519,2776,4028, 5297,6617,8005,9439,10852,12146,13197,13925,14333,14502, 14545,14554,14577,14598,14586,14488,14267,13892,13352,12652, 11813,10862,9859,8871,7956,7099,6218,5241,4160,3038, 1952,961,74,-727,-1467,-2185,-2892,-3570,-4185,-4720, -5196,-5639,-6086,-6593,-7203,-7918,-8684,-9394,-9912,-10144, -10045,-9660,-9110,-8551,-8126,-7935,-8006,-8292,-8685,-9056, -9315,-9447,-9479,-9479,-9514,-9609,-9723,-9762,-9628,-9263, -8677,-7943,-7148,-6357,-5587,-4807,-3973,-3047,-2033,-938, 211,1391,2584,3804,5095,6514,8053,9605,11031,12216, 13119,13744,14138,14368,14513,14618,14709,14767,14772,14682, 14459,14057,13451,12666,11777,10872,9997,9138,8271,7363, 6374,5307,4197,3112,2100,1165,291,-544,-1346,-2104, -2822,-3488,-4079,-4580,-5009,-5411,-5867,-6457,-7209,-8061, -8887,-9567,-9978,-10068,-9843,-9389,-8848,-8376,-8095,-8055, -8236,-8550,-8878,-9132,-9269,-9325,-9375,-9478,-9660,-9873, -10012,-9977,-9713,-9242,-8634,-7956,-7255,-6544,-5823,-5045, -4171,-3180,-2099,-996,88,1163,2304,3571,4991,6551, 8163,9710,11063,12157,12979,13578,13992,14272,14461,14604, 14744,14878,14952,14888,14613,14119,13433,12640,11819,11024, 10241,9416,8507,7511,6457,5378,4311,3277,2298,1365, 479,-380,-1214,-2023,-2770,-3422,-3948,-4356,-4722,-5141, -5698,-6435,-7328,-8265,-9098,-9699,-9983,-9932,-9598,-9103, -8616,-8287,-8181,-8280,-8504,-8766,-8976,-9093,-9152,-9236, -9408,-9668,-9950,-10162,-10222,-10080,-9741,-9248,-8670,-8062, -7450,-6806,-6068,-5207,-4241,-3221,-2204,-1204,-203,855, 2050,3426,4964,6594,8205,9695,10985,12041,12850,13429, 13826,14106,14347,14594,14849,15054,15117,14972,14594,14033, 13365,12660,11949,11222,10440,9574,8617,7599,6535,5463, 4409,3399,2450,1540,631,-283,-1181,-2014,-2725,-3287, -3717,-4072,-4447,-4943,-5625,-6494,-7487,-8465,-9261,-9745, -9874,-9695,-9302,-8849,-8486,-8326,-8370,-8527,-8695,-8816, -8892,-8964,-9082,-9275,-9554,-9883,-10189,-10359,-10321,-10076, -9683,-9231,-8759,-8255,-7689,-7014,-6197,-5266,-4291,-3347, -2447,-1537,-543,593,1902,3366,4942,6566,8167,9647, 10916,11922,12658,13183,13578,13931,14289,14661,14983,15164, 15140,14901,14488,13953,13347,12699,12028,11311,10524,9635, 8650,7606,6549,5514,4523,3566,2631,1680,704,-271, -1182,-1974,-2603,-3069,-3413,-3741,-4171,-4784,-5604,-6599, -7662,-8624,-9320,-9644,-9610,-9327,-8961,-8653,-8483,-8451, -8511,-8605,-8685,-8727,-8756,-8838,-9029,-9343,-9719,-10062, -10293,-10349,-10223,-9966,-9641,-9294,-8904,-8425,-7812,-7058, -6199,-5298,-4418,-3571,-2718,-1796,-757,428,1785,3296, 4922,6576,8184,9632,10832,11744,12417,12946,13430,13916, 14388,14795,15078,15190,15113,14858,14457,13959,13406,12816, 12178,11465,10647,9714,8700,7667,6660,5686,4735,3780, 2800,1782,748,-255,-1138,-1848,-2373,-2750,-3065,-3426, -3951,-4704,-5677,-6787,-7864,-8714,-9216,-9369,-9257,-9012, -8762,-8594,-8539,-8564,-8604,-8612,-8585,-8569,-8627,-8811, -9126,-9524,-9905,-10172,-10288,-10266,-10149,-9982,-9767,-9476, -9066,-8510,-7829,-7064,-6259,-5434,-4615,-3794,-2947,-2020, -970,238,1637,3224,4921,6611,8160,9483,10562,11425, 12142,12774,13366,13929,14433,14832,15085,15158,15045,14772, 14404,13976,13499,12962,12330,11579,10710,9752,8759,7781, 6842,5919,4976,3976,2917,1824,756,-226,-1055,-1683, -2090,-2363,-2649,-3110,-3823,-4775,-5873,-6991,-7967,-8669, -9030,-9095,-8980,-8822,-8712,-8676,-8683,-8678,-8627,-8535, -8454,-8460,-8620,-8935,-9335,-9716,-10008,-10180,-10260,-10280, -10251,-10150,-9948,-9615,-9148,-8553,-7874,-7143,-6383,-5598, -4801,-4008,-3202,-2314,-1242,68,1607,3293,5002,6622, 8067,9303,10336,11207,11976,12689,13363,13984,14506,14881, 15084,15112,14992,14758,14448,14078,13636,13087,12414,11617, 10723,9784,8854,7949,7052,6133,5161,4121,3001,1838, 718,-239,-956,-1421,-1704,-1952,-2324,-2953,-3852,-4939, -6084,-7136,-7974,-8522,-8781,-8840,-8804,-8773,-8787,-8819, -8799,-8690,-8525,-8391,-8373,-8511,-8786,-9135,-9486,-9790, -10029,-10204,-10334,-10414,-10417,-10307,-10061,-9694,-9224,-8651, -7977,-7237,-6476,-5730,-5015,-4305,-3536,-2596,-1414,21, 1643,3349,5027,6581,7956,9140,10159,11055,11889,12684, 13422,14058,14555,14893,15059,15074,14974,14807,14578,14245, 13770,13153,12426,11619,10755,9857,8968,8112,7261,6354, 5332,4177,2936,1706,628,-196,-745,-1075,-1309,-1608, -2126,-2930,-3983,-5147,-6270,-7208,-7879,-8286,-8502,-8630, -8740,-8842,-8898,-8867,-8741,-8560,-8399,-8340,-8425,-8639, -8925,-9228,-9514,-9790,-10051,-10282,-10448,-10525,-10506,-10390, -10161,-9809,-9325,-8707,-7998,-7275,-6591,-5959,-5335,-4650, -3822,-2784,-1491,27,1685,3377,4993,6456,7756,8915, 9956,10913,11823,12691,13467,14094,14537,14819,14979,15042, 15017,14897,14675,14335,13857,13226,12466,11640,10799,9980, 9191,8401,7547,6561,5412,4132,2822,1628,677,25, -371,-625,-886,-1311,-2010,-2992,-4144,-5287,-6280,-7046, -7596,-7988,-8293,-8550,-8746,-8852,-8840,-8717,-8540,-8386, -8318,-8348,-8467,-8656,-8903,-9196,-9507,-9807,-10076,-10280, -10432,-10528,-10561,-10487,-10258,-9852,-9294,-8642,-7964,-7324, -6741,-6201,-5628,-4940,-4046,-2896,-1503,63,1714,3357, 4893,6273,7509,8664,9772,10819,11785,12635,13351,13921, 14341,14624,14799,14882,14881,14785,14565,14194,13651,12952, 12160,11359,10605,9893,9186,8400,7466,6339,5049,3684, 2389,1295,503,22,-246,-471,-840,-1464,-2365,-3443, -4552,-5547,-6365,-7011,-7550,-8026,-8438,-8750,-8916,-8930, -8830,-8677,-8526,-8419,-8368,-8388,-8491,-8684,-8948,-9253, -9547,-9815,-10052,-10273,-10468,-10606,-10645,-10538,-10257,-9798, -9206,-8560,-7947,-7404,-6917,-6433,-5862,-5117,-4136,-2896, -1435,153,1755,3281,4698,6016,7275,8492,9657,10744, 11719,12557,13246,13785,14188,14484,14701,14852,14910,14842, 14609,14173,13553,12811,12057,11366,10739,10128,9442,8610, 7569,6314,4916,3525,2312,1396,809,469,221,-121, -684,-1502,-2496,-3539,-4518,-5375,-6124,-6806,-7435,-7982, -8401,-8668,-8799,-8812,-8741,-8613,-8469,-8349,-8304,-8363, -8522,-8750,-8997,-9255,-9522,-9795,-10072,-10351,-10603,-10779, -10791,-10604,-10230,-9728,-9160,-8587,-8058,-7601,-7193,-6758, -6173,-5338,-4226,-2888,-1415,109,1629,3105,4508,5843, 7130,8385,9599,10715,11696,12521,13179,13687,14089,14427, 14726,14958,15053,14948,14631,14127,13480,12779,12111,11530, 11010,10456,9741,8790,7587,6190,4736,3410,2373,1673, 1255,953,585,37,-706,-1582,-2519,-3458,-4362,-5218, -6016,-6744,-7381,-7910,-8314,-8584,-8725,-8737,-8646,-8502, -8366,-8288,-8292,-8394,-8574,-8788,-9008,-9230,-9487,-9793, -10139,-10477,-10748,-10890,-10850,-10604,-10169,-9623,-9062,-8569, -8172,-7842,-7493,-7019,-6338,-5405,-4240,-2898,-1464,6, 1462,2903,4319,5693,7023,8324,9567,10683,11629,12393, 13013,13542,14023,14453,14817,15068,15140,14973,14578,14017, 13381,12769,12234,11790,11359,10802,9974,8831,7442,5964, 4585,3455,2640,2089,1673,1255,726,65,-703,-1543, -2438,-3369,-4297,-5174,-5982,-6716,-7368,-7914,-8328,-8596, -8721,-8710,-8603,-8460,-8356,-8328,-8382,-8489,-8630,-8792, -8985,-9228,-9532,-9885,-10264,-10631,-10911,-11017,-10884,-10539, -10055,-9533,-9061,-8681,-8380,-8097,-7742,-7220,-6468,-5472, -4270,-2939,-1546,-132,1277,2691,4111,5523,6912,8237, 9457,10518,11404,12139,12780,13373,13944,14458,14861,15090, 15088,14834,14367,13791,13226,12765,12417,12114,11703,11033, 10001,8667,7199,5810,4628,3706,3006,2454,1965,1460, 875,181,-599,-1440,-2324,-3240,-4165,-5056,-5886,-6641, -7315,-7882,-8304,-8539,-8607,-8556,-8473,-8400,-8361,-8357, -8394,-8470,-8587,-8736,-8924,-9178,-9526,-9948,-10393,-10772, -11001,-11003,-10773,-10363,-9889,-9446,-9089,-8808,-8565,-8284, -7884,-7305,-6497,-5459,-4253,-2955,-1622,-267,1124,2564, 4032,5478,6867,8158,9319,10322,11172,11918,12614,13296, 13950,14523,14932,15092,14965,14589,14073,13571,13193,12964, 12790,12498,11937,11042,9844,8479,7104,5859,4814,3980, 3314,2750,2221,1665,1042,330,-468,-1322,-2202,-3093, -3995,-4899,-5779,-6587,-7282,-7819,-8184,-8385,-8453,-8430, -8373,-8333,-8331,-8357,-8390,-8435,-8503,-8630,-8846,-9175, -9616,-10112,-10572,-10895,-11012,-10910,-10622,-10222,-9806,-9448, -9175,-8969,-8771,-8494,-8048,-7391,-6521,-5474,-4312,-3083, -1805,-464,948,2427,3932,5400,6775,8015,9109,10063, 10912,11701,12478,13258,13999,14598,14940,14948,14653,14204, 13788,13512,13371,13274,13075,12647,11916,10887,9635,8305, 7028,5896,4944,4162,3522,2965,2419,1825,1153,411, -377,-1200,-2060,-2972,-3929,-4886,-5783,-6581,-7251,-7762, -8096,-8268,-8335,-8347,-8352,-8364,-8387,-8402,-8392,-8375, -8409,-8555,-8852,-9288,-9801,-10306,-10711,-10943,-10967,-10794, -10479,-10112,-9775,-9515,-9329,-9172,-8964,-8629,-8118,-7421, -6556,-5552,-4444,-3266,-2008,-654,797,2317,3847,5320, 6661,7835,8849,9745,10605,11503,12449,13375,14135,14607, 14741,14588,14273,13952,13736,13656,13637,13546,13247,12673, 11823,10752,9528,8250,7034,5980,5117,4409,3785,3190, 2587,1955,1289,580,-186,-1001,-1879,-2824,-3823,-4818, -5742,-6535,-7166,-7629,-7928,-8095,-8187,-8260,-8329,-8375, -8378,-8331,-8261,-8225,-8291,-8508,-8889,-9396,-9947,-10438, -10780,-10915,-10839,-10607,-10305,-10014,-9783,-9611,-9469,-9304, -9055,-8659,-8109,-7406,-6576,-5623,-4555,-3388,-2124,-752, 731,2305,3880,5334,6577,7622,8550,9483,10490,11567, 12632,13550,14186,14475,14460,14267,14048,13914,13888,13915, 13903,13754,13375,12721,11797,10680,9472,8278,7179,6223, 5405,4694,4040,3407,2776,2145,1491,794,32,-802, -1711,-2705,-3747,-4773,-5701,-6473,-7060,-7476,-7766,-7981, -8150,-8282,-8375,-8395,-8344,-8238,-8143,-8127,-8251,-8552, -9020,-9590,-10151,-10590,-10845,-10887,-10756,-10515,-10261,-10049, -9903,-9783,-9646,-9443,-9156,-8742,-8195,-7507,-6698,-5781, -4768,-3629,-2333,-856,742,2356,3840,5125,6209,7195, 8196,9295,10480,11675,12726,13514,13963,14121,14079,13974, 13885,13893,13970,14068,14056,13852,13365,12617,11636,10535, 9381,8287,7257,6378,5540,4923,4532,3857,3255,2617, 1991,1299,543,-332,-1300,-2370,-3456,-4495,-5388,-6118, -6671,-7106,-7451,-7752,-7993,-8171,-8256,-8253,-8157,-8031, -7943,-7991,-8215,-8623,-9175,-9772,-10301,-10661,-10810,-10791, -10652,-10479,-10305,-10164,-10049,-9952,-9831,-9637,-9315,-8851, -8269,-7622,-6915,-6105,-5111,-3894,-2453,-863,766,2296, 3628,4752,5771,6834,8028,9332,10635,11813,12761,13419, 13776,13902,13910,13908,13981,14142,14344,14484,14456,14179, 13619,12811,11841,10796,9741,8719,7754,6867,6070,5341, 4661,4019,3411,2818,2207,1528,733,-204,-1257,-2358, -3434,-4413,-5255,-5950,-6502,-6951,-7341,-7699,-7991,-8174, -8220,-8143,-7990,-7840,-7785,-7913,-8248,-8749,-9323,-9867, -10295,-10564,-10669,-10633,-10510,-10344,-10208,-10134,-10095,-10035, -9880,-9608,-9221,-8760,-8259,-7726,-7112,-6318,-5242,-3873, -2314,-717,773,2097,3270,4362,5472,6685,8019,9403, 10717,11837,12672,13200,13469,13586,13662,13787,14006,14281, 14531,14641,14531,14172,13563,12746,11794,10793,9800,8840, 7922,7051,6232,5473,4787,4178,3621,3070,2462,1735, 866,-143,-1243,-2362,-3412,-4343,-5139,-5813,-6392,-6906, -7366,-7761,-8055,-8198,-8169,-8017,-7824,-7701,-7733,-7960, -8369,-8888,-9440,-9938,-10310,-10515,-10554,-10478,-10369,-10279, -10238,-10225,-10194,-10074,-9829,-9491,-9128,-8789,-8457,-8038, -7407,-6469,-5222,-3761,-2228,-767,549,1732,2855,3994, 5221,6558,7979,9391,10669,11691,12400,12822,13058,13223, 13417,13681,14014,14352,14598,14665,14491,14066,13419,12606, 11703,10769,9840,8916,8003,7125,6305,5570,4927,4361, 3840,3298,2667,1885,938,-125,-1231,-2318,-3319,-4215, -4989,-5672,-6299,-6895,-7439,-7860,-8092,-8127,-8011,-7837, -7685,-7630,-7723,-8009,-8464,-9017,-9572,-10024,-10312,-10428, -10408,-10345,-10318,-10350,-10392,-10372,-10232,-9982,-9681,-9414, -9217,-9038,-8773,-8301,-7531,-6450,-5119,-3669,-2235,-911, 279,1386,2515,3749,5118,6577,8054,9441,10623,11520, 12119,12495,12758,13008,13317,13687,14095,14470,14701,14707, 14456,13983,13331,12557,11711,10826,9921,9004,8083,7196, 6390,5706,5132,4623,4114,3541,2849,2003,1014,-74, -1178,-2217,-3148,-3986,-4774,-5542,-6271,-6930,-7464,-7826, -7994,-7985,-7850,-7674,-7549,-7546,-7723,-8091,-8614,-9191, -9696,-10043,-10209,-10263,-10299,-10376,-10481,-10558,-10538,-10390, -10145,-9879,-9672,-9559,-9494,-9373,-9063,-8470,-7565,-6392, -5059,-3685,-2379,-1187,-73,1034,2235,3598,5097,6649, 8132,9442,10503,11286,11826,12209,12534,12888,13303,13768, 14224,14581,14753,14694,14402,13918,13293,12567,11760,10888, 9973,9035,8108,7249,6495,5862,5327,4842,4337,3725, 2956,2024,990,-69,-1090,-2054,-2969,-3849,-4712,-5551, -6325,-6989,-7499,-7820,-7940,-7891,-7730,-7550,-7458,-7538, -7840,-8319,-8863,-9357,-9714,-9931,-10065,-10197,-10369,-10546, -10654,-10633,-10481,-10249,-10018,-9856,-9798,-9806,-9787,-9623, -9202,-8481,-7478,-6288,-5011,-3762,-2604,-1523,-437,747, 2085,3570,5139,6693,8129,9349,10303,10993,11494,11908, 12327,12793,13314,13840,14293,14602,14717,14620,14337,13891, 13312,12615,11811,10929,10004,9067,8155,7334,6647,6104, 5640,5165,4586,3872,3020,2074,1083,85,-892,-1843, -2785,-3724,-4646,-5523,-6314,-6981,-7484,-7775,-7835,-7711, -7510,-7366,-7394,-7639,-8051,-8531,-8973,-9318,-9573,-9784, -10006,-10257,-10500,-10660,-10677,-10544,-10319,-10092,-9946,-9915, -9973,-10038,-9999,-9739,-9188,-8357,-7314,-6173,-5025,-3916, -2854,-1790,-653,621,2064,3636,5236,6750,8089,9207, 10073,10730,11248,11732,12248,12805,13379,13911,14327,14586, 14670,14577,14311,13890,13339,12659,11858,10950,10000,9067, 8220,7495,6904,6417,5956,5427,4777,3997,3120,2195, 1250,291,-677,-1654,-2640,-3617,-4570,-5489,-6337,-7029, -7481,-7667,-7627,-7474,-7348,-7358,-7544,-7876,-8270,-8653, -8980,-9267,-9545,-9851,-10169,-10457,-10657,-10724,-10645,-10455, -10234,-10076,-10046,-10140,-10280,-10340,-10204,-9808,-9144,-8270, -7266,-6219,-5182,-4178,-3167,-2087,-869,514,2047,3666, 5259,6712,7946,8949,9755,10423,11023,11605,12198,12800, 13383,13898,14281,14507,14577,14496,14268,13893,13355,12648, 11800,10866,9925,9053,8299,7669,7141,6648,6127,5530, 4839,4054,3197,2290,1354,405,-548,-1507,-2502,-3548, -4609,-5607,-6455,-7057,-7375,-7445,-7380,-7312,-7340,-7490, -7743,-8046,-8352,-8643,-8938,-9252,-9614,-10005,-10368,-10640, -10751,-10691,-10508,-10285,-10125,-10097,-10206,-10386,-10533,-10533, -10301,-9804,-9076,-8191,-7244,-6296,-5364,-4427,-3434,-2320, -1026,456,2083,3736,5292,6656,7791,8727,9512,10210, 10869,11527,12188,12835,13417,13899,14259,14477,14566,14523, 14337,13968,13393,12630,11737,10812,9932,9149,8476,7887, 7356,6845,6307,5696,4978,4168,3292,2393,1501,616, -305,-1310,-2402,-3568,-4714,-5720,-6470,-6928,-7137,-7188, -7195,-7245,-7378,-7574,-7801,-8038,-8286,-8557,-8875,-9261, -9707,-10148,-10497,-10679,-10680,-10532,-10316,-10140,-10088,-10186, -10396,-10619,-10722,-10625,-10291,-9726,-8981,-8133,-7270,-6429, -5596,-4705,-3682,-2474,-1073,487,2141,3769,5258,6544, 7617,8513,9304,10047,10777,11507,12216,12869,13428,13887, 14254,14528,14680,14674,14475,14044,13404,12607,11739,10869, 10052,9312,8671,8116,7617,7107,6532,5861,5089,4245, 3395,2568,1754,893,-85,-1214,-2460,-3712,-4840,-5742, -6374,-6745,-6938,-7048,-7154,-7297,-7475,-7662,-7840,-8015, -8228,-8533,-8939,-9418,-9910,-10322,-10585,-10647,-10543,-10357, -10192,-10124,-10192,-10379,-10618,-10815,-10865,-10685,-10264,-9646, -8912,-8142,-7395,-6662,-5887,-4979,-3890,-2597,-1122,489, 2136,3709,5108,6303,7320,8225,9067,9884,10675,11439, 12143,12776,13327,13816,14242,14580,14770,14755,14503,14021, 13363,12581,11738,10902,10128,9443,8862,8365,7890,7359, 6715,5966,5162,4371,3624,2893,2103,1161,42,-1219, -2529,-3769,-4817,-5609,-6158,-6512,-6756,-6962,-7162,-7354, -7516,-7648,-7779,-7954,-8210,-8583,-9065,-9603,-10091,-10428, -10571,-10530,-10376,-10205,-10119,-10167,-10343,-10594,-10834,-10965, -10907,-10630,-10156,-9548,-8886,-8221,-7573,-6905,-6143,-5200, -4027,-2642,-1092,528,2124,3610,4920,6056,7066,8022, 8937,9805,10598,11329,12008,12660,13276,13839,14302,14636, 14803,14761,14490,13994,13314,12513,11667,10860,10159,9581, 9095,8622,8089,7457,6739,5985,5262,4588,3927,3209, 2350,1297,59,-1280,-2592,-3754,-4697,-5409,-5934,-6333, -6661,-6948,-7193,-7374,-7482,-7557,-7677,-7902,-8268,-8745, -9283,-9804,-10227,-10478,-10527,-10425,-10254,-10137,-10146,-10311, -10588,-10880,-11089,-11132,-10972,-10613,-10113,-9548,-8977,-8420, -7850,-7216,-6436,-5428,-4157,-2670,-1073,518,2023,3404, 4661,5819,6886,7874,8789,9638,10425,11167,11887,12590, 13256,13849,14330,14661,14820,14777,14496,13958,13214,12378, 11572,10871,10297,9801,9318,8778,8145,7442,6722,6046, 5442,4867,4235,3451,2469,1291,-20,-1355,-2603,-3670, -4530,-5206,-5768,-6252,-6664,-6981,-7183,-7290,-7349,-7431, -7609,-7923,-8375,-8926,-9493,-9977,-10299,-10430,-10399,-10269, -10147,-10119,-10232,-10476,-10785,-11066,-11212,-11165,-10924,-10528, -10051,-9556,-9082,-8624,-8111,-7464,-6603,-5474,-4116,-2612, -1075,430,1872,3249,4523,5697,6763,7737,8634,9485, 10299,11091,11854,12574,13243,13852,14376,14762,14928,14832, 14453,13837,13088,12318,11633,11058,10567,10079,9527,8883, 8179,7480,6852,6305,5799,5248,4566,3680,2582,1324, 4,-1269,-2421,-3419,-4270,-5005,-5648,-6185,-6606,-6892, -7049,-7108,-7154,-7276,-7541,-7964,-8506,-9092,-9638,-10052, -10275,-10307,-10214,-10095,-10050,-10137,-10360,-10663,-10965,-11192, -11260,-11125,-10817,-10419,-10013,-9644,-9300,-8912,-8389,-7656, -6680,-5475,-4098,-2624,-1140,313,1738,3113,4397,5554, 6593,7555,8482,9372,10215,11001,11754,12491,13212,13898, 14476,14857,14960,14756,14283,13642,12963,12332,11781,11282, 10778,10220,9580,8878,8182,7562,7050,6605,6135,5535, 4734,3726,2558,1309,59,-1137,-2248,-3256,-4163,-4975, -5678,-6239,-6620,-6835,-6934,-6983,-7073,-7273,-7631,-8139, -8733,-9319,-9801,-10115,-10239,-10212,-10111,-10033,-10066,-10260, -10575,-10926,-11211,-11345,-11293,-11077,-10761,-10427,-10134,-9881, -9598,-9197,-8611,-7807,-6787,-5585,-4232,-2774,-1274,205, 1616,2948,4180,5330,6411,7430,8378,9241,10040,10809, 11601,12426,13255,14014,14590,14888,14868,14565,14076,13515, 12968,12471,11992,11486,10912,10256,9550,8866,8260,7764, 7348,6931,6415,5716,4820,3750,2581,1373,179,-985, -2102,-3156,-4126,-4980,-5684,-6206,-6534,-6689,-6759,-6828, -6984,-7289,-7755,-8323,-8922,-9452,-9843,-10056,-10097,-10030, -9948,-9952,-10105,-10401,-10759,-11079,-11253,-11244,-11089,-10851, -10606,-10386,-10185,-9956,-9644,-9190,-8564,-7747,-6728,-5514, -4143,-2686,-1218,201,1560,2868,4124,5303,6399,7396, 8290,9093,9862,10669,11555,12485,13368,14095,14564,14726, 14602,14257,13802,13331,12887,12444,11951,11360,10674,9944, 9239,8628,8136,7734,7341,6880,6271,5482,4522,3448, 2308,1147,-22,-1186,-2332,-3432,-4437,-5295,-5951,-6390, -6624,-6719,-6776,-6898,-7143,-7532,-8053,-8649,-9227,-9683, -9951,-10021,-9967,-9885,-9877,-10004,-10274,-10620,-10952,-11167, -11225,-11144,-10984,-10804,-10643,-10488,-10318,-10100,-9794,-9339, -8697,-7847,-6785,-5545,-4176,-2753,-1339,42,1393,2727, 4020,5216,6268,7174,7993,8792,9644,10583,11594,12605, 13499,14153,14504,14559,14388,14092,13756,13408,13030,12573, 12005,11335,10615,9909,9290,8790,8396,8034,7617,7079, 6399,5571,4610,3557,2450,1308,133,-1067,-2272,-3422, -4444,-5273,-5867,-6234,-6432,-6529,-6625,-6810,-7152,-7649, -8253,-8868,-9396,-9749,-9893,-9866,-9783,-9774,-9912,-10185, -10516,-10823,-11036,-11144,-11153,-11077,-10950,-10808,-10675,-10556, -10426,-10244,-9950,-9476,-8785,-7868,-6763,-5534,-4224,-2869, -1484,-81,1324,2702,3981,5106,6057,6888,7679,8537, 9513,10599,11716,12739,13552,14084,14338,14361,14240,14046, 13813,13528,13144,12623,11981,11274,10581,9964,9451,9035, 8674,8302,7837,7243,6519,5679,4756,3759,2694,1551, 335,-930,-2181,-3352,-4360,-5144,-5683,-5994,-6151,-6247, -6405,-6700,-7173,-7783,-8437,-9011,-9413,-9603,-9635,-9607, -9628,-9759,-10001,-10310,-10615,-10864,-11018,-11075,-11053,-10974, -10865,-10759,-10690,-10649,-10578,-10409,-10071,-9520,-8757,-7812, -6736,-5565,-4316,-2975,-1561,-96,1348,2717,3934,4952, 5806,6591,7439,8430,9567,10762,11893,12843,13534,13962, 14176,14249,14234,14144,13963,13657,13206,12617,11946,11259, 10628,10091,9657,9291,8926,8505,7988,7372,6654,5849, 4953,3967,2881,1698,434,-867,-2146,-3323,-4317,-5057, -5526,-5777,-5905,-6032,-6285,-6731,-7349,-8028,-8642,-9091, -9356,-9462,-9490,-9528,-9637,-9838,-10118,-10428,-10720,-10938, -11064,-11093,-11044,-10952,-10870,-10843,-10871,-10893,-10834,-10619, -10208,-9604,-8827,-7921,-6905,-5781,-4528,-3136,-1633,-115, 1327,2611,3700,4610,5435,6286,7265,8408,9657,10880, 11950,12788,13397,13804,14069,14224,14278,14226,14035,13691, 13192,12580,11912,11268,10711,10248,9860,9495,9102,8649, 8122,7517,6823,6045,5162,4157,3035,1803,490,-857, -2167,-3346,-4291,-4933,-5296,-5487,-5649,-5907,-6330,-6916, -7576,-8207,-8711,-9058,-9256,-9364,-9443,-9548,-9709,-9939, -10233,-10554,-10843,-11034,-11089,-11042,-10964,-10913,-10923,-10995, -11078,-11099,-10979,-10687,-10234,-9639,-8924,-8092,-7125,-5985, -4654,-3162,-1603,-95,1253,2393,3355,4222,5105,6092, 7222,8462,9719,10882,11870,12652,13253,13712,14054,14279, 14367,14303,14073,13678,13156,12558,11952,11389,10900,10471, 10081,9701,9303,8853,8333,7733,7048,6266,5377,4364, 3221,1943,559,-858,-2191,-3311,-4122,-4623,-4911,-5137, -5421,-5841,-6403,-7045,-7686,-8241,-8666,-8954,-9127,-9236, -9339,-9488,-9721,-10028,-10373,-10682,-10905,-11005,-10993,-10921, -10868,-10889,-10991,-11126,-11211,-11174,-10982,-10651,-10210,-9682, -9047,-8262,-7269,-6049,-4617,-3060,-1519,-124,1057,2053, 2961,3885,4894,6015,7229,8476,9693,10790,11719,12485, 13119,13642,14045,14303,14391,14297,14028,13608,13088,12530, 11989,11490,11042,10632,10244,9868,9473,9033,8514,7920, 7254,6506,5638,4602,3364,1959,472,-956,-2200,-3168, -3832,-4258,-4574,-4910,-5334,-5859,-6466,-7117,-7749,-8283, -8667,-8894,-9013,-9104,-9245,-9475,-9797,-10168,-10520,-10774, -10892,-10894,-10841,-10817,-10869,-10994,-11149,-11266,-11288,-11187, -10968,-10666,-10302,-9864,-9278,-8459,-7356,-6006,-4506,-2977, -1547,-302,751,1694,2631,3637,4756,5967,7223,8452, 9604,10648,11567,12360,13040,13601,14020,14272,14337,14211, 13924,13512,13024,12508,12004,11531,11106,10724,10364,9989, 9571,9109,8611,8074,7476,6765,5866,4730,3361,1846, 337,-1012,-2100,-2915,-3509,-3961,-4363,-4795,-5308,-5913, -6570,-7231,-7825,-8297,-8613,-8790,-8895,-9018,-9234,-9558, -9941,-10304,-10571,-10713,-10742,-10721,-10719,-10788,-10935,-11114, -11255,-11304,-11243,-11119,-10967,-10787,-10527,-10115,-9464,-8523, -7301,-5885,-4400,-2967,-1671,-551,442,1395,2404,3512, 4709,5956,7198,8389,9504,10537,11484,12333,13068,13655, 14064,14292,14336,14202,13919,13515,13045,12553,12090,11683, 11316,10959,10570,10136,9693,9266,8862,8430,7880,7112, 6067,4766,3298,1787,363,-874,-1859,-2605,-3175,-3661, -4139,-4668,-5277,-5970,-6685,-7345,-7870,-8231,-8448,-8592, -8750,-8985,-9320,-9708,-10080,-10366,-10525,-10573,-10577,-10607, -10717,-10892,-11079,-11216,-11261,-11232,-11168,-11108,-11070,-10994, -10778,-10317,-9550,-8483,-7180,-5763,-4358,-3058,-1892,-843, 152,1162,2248,3419,4648,5882,7080,8243,9365,10432, 11415,12294,13039,13632,14061,14305,14346,14186,13869,13464, 13025,12601,12215,11852,11484,11074,10634,10198,9819,9504, 9193,8782,8179,7297,6124,4726,3215,1739,399,-746, -1658,-2364,-2926,-3442,-3993,-4632,-5360,-6130,-6863,-7465, -7892,-8162,-8340,-8522,-8779,-9135,-9553,-9953,-10254,-10424, -10490,-10522,-10585,-10716,-10895,-11078,-11207,-11260,-11248,-11228, -11242,-11295,-11343,-11281,-11006,-10436,-9553,-8408,-7102,-5748, -4453,-3259,-2164,-1124,-89,984,2117,3303,4515,5728, 6929,8104,9243,10325,11320,12216,12984,13600,14034,14259, 14261,14065,13739,13370,13010,12668,12312,11922,11485,11030, 10613,10277,10032,9811,9519,9055,8337,7340,6086,4671, 3194,1770,484,-578,-1403,-2045,-2609,-3202,-3882,-4649, -5458,-6235,-6897,-7395,-7727,-7959,-8184,-8483,-8875,-9309, -9713,-10020,-10207,-10296,-10366,-10468,-10629,-10816,-10992,-11105, -11140,-11124,-11117,-11173,-11314,-11477,-11568,-11476,-11105,-10418, -9452,-8280,-7010,-5746,-4550,-3424,-2341,-1269,-193,910, 2054,3231,4438,5658,6877,8063,9198,10278,11306,12251, 13066,13684,14064,14203,14141,13947,13695,13419,13118,12774, 12378,11933,11468,11041,10712,10492,10334,10144,9826,9297, 8499,7426,6120,4664,3193,1835,665,-285,-1045,-1685, -2310,-3017,-3834,-4710,-5549,-6261,-6796,-7167,-7450,-7741, -8095,-8523,-8980,-9397,-9713,-9913,-10036,-10142,-10286,-10482, -10697,-10874,-10974,-10998,-10981,-10978,-11045,-11215,-11463,-11704, -11787,-11608,-11121,-10342,-9340,-8201,-7009,-5823,-4674,-3567, -2492,-1432,-351,768,1939,3157,4382,5580,6753,7909, 9062,10208,11314,12303,13101,13652,13956,14059,14025,13917, 13753,13528,13216,12815,12350,11881,11453,11111,10872,10723, 10608,10433,10095,9510,8625,7457,6083,4617,3179,1893, 841,10,-684,-1376,-2155,-3038,-3972,-4867,-5629,-6220, -6651,-6990,-7330,-7734,-8210,-8693,-9123,-9457,-9685,-9839, -9995,-10184,-10414,-10638,-10819,-10922,-10939,-10896,-10866,-10928, -11123,-11419,-11734,-11950,-11962,-11684,-11114,-10297,-9305,-8212, -7076,-5942,-4836,-3768,-2724,-1667,-566,588,1782,2993, 4186,5347,6498,7686,8919,10153,11295,12251,12969,13455, 13752,13908,13966,13932,13798,13548,13190,12756,12288,11834, 11454,11181,11032,10963,10898,10731,10356,9693,8708,7442, 6004,4549,3209,2076,1157,390,-349,-1168,-2107,-3116, -4081,-4905,-5548,-6040,-6446,-6854,-7317,-7831,-8343,-8788, -9130,-9381,-9584,-9786,-10022,-10298,-10565,-10772,-10868,-10858, -10790,-10747,-10791,-10972,-11274,-11632,-11942,-12100,-12030,-11695, -11098,-10277,-9292,-8214,-7117,-6040,-5004,-3984,-2935,-1828, -672,492,1650,2797,3948,5122,6345,7628,8941,10191, 11280,12154,12821,13312,13665,13896,14008,13993,13843,13557, 13163,12711,12252,11834,11505,11305,11239,11256,11244,11072, 10616,9815,8677,7315,5882,4530,3361,2386,1543,729, -147,-1132,-2186,-3210,-4090,-4793,-5368,-5868,-6361,-6876, -7415,-7951,-8428,-8809,-9094,-9326,-9564,-9844,-10162,-10471, -10711,-10834,-10832,-10745,-10666,-10677,-10829,-11112,-11476,-11841, -12125,-12249,-12142,-11758,-11105,-10247,-9264,-8234,-7211,-6205, -5193,-4151,-3049,-1900,-742,375,1461,2572,3753,5024, 6355,7696,8993,10187,11218,12066,12744,13274,13673,13940, 14071,14042,13865,13556,13147,12683,12228,11846,11585,11487, 11531,11635,11646,11406,10807,9837,8583,7206,5872,4694, 3695,2805,1927,979,-57,-1135,-2182,-3125,-3912,-4557, -5130,-5698,-6288,-6894,-7471,-7975,-8379,-8691,-8961,-9248, -9588,-9957,-10301,-10556,-10687,-10704,-10643,-10564,-10543,-10630, -10847,-11181,-11587,-11980,-12262,-12340,-12150,-11681,-10986,-10141, -9222,-8280,-7330,-6347,-5303,-4197,-3066,-1951,-863,196, 1272,2413,3655,4987,6360,7702,8966,10115,11123,11976, 12684,13248,13674,13960,14094,14059,13855,13509,13069,12591, 12148,11831,11696,11756,11931,12074,12017,11621,10842,9740, 8476,7206,6041,5013,4072,3141,2152,1081,-32,-1110, -2083,-2931,-3672,-4343,-4991,-5645,-6301,-6923,-7467,-7908, -8253,-8555,-8881,-9261,-9678,-10073,-10379,-10564,-10628,-10606, -10528,-10450,-10454,-10600,-10899,-11311,-11763,-12162,-12399,-12392, -12107,-11570,-10880,-10111,-9300,-8429,-7477,-6445,-5360,-4261, -3181,-2136,-1112,-65,1049,2257,3546,4885,6234,7551, 8791,9929,10943,11815,12537,13118,13566,13875,14031,14005, 13787,13386,12872,12366,11980,11806,11862,12085,12331,12418, 12207,11622,10711,9593,8423,7310,6289,5313,4329,3288, 2190,1064,-34,-1051,-1950,-2751,-3509,-4256,-5006,-5737, -6405,-6976,-7443,-7829,-8184,-8548,-8960,-9403,-9835,-10201, -10465,-10607,-10637,-10582,-10490,-10423,-10456,-10666,-11065,-11575, -12060,-12403,-12525,-12409,-12078,-11578,-10953,-10232,-9421,-8521, -7537,-6491,-5423,-4373,-3353,-2351,-1334,-271,873,2120, 3439,4782,6113,7411,8644,9776,10784,11661,12401,13017, 13512,13856,14016,13947,13647,13159,12607,12143,11900,11932, 12180,12487,12684,12625,12228,11521,10590,9556,8534,7558, 6604,5616,4552,3419,2261,1141,111,-823,-1685,-2520, -3357,-4190,-4976,-5688,-6305,-6826,-7271,-7679,-8085,-8514, -8967,-9430,-9865,-10227,-10478,-10584,-10547,-10416,-10289,-10266, -10421,-10762,-11244,-11754,-12178,-12426,-12475,-12335,-12034,-11586, -11009,-10301,-9458,-8503,-7491,-6477,-5484,-4501,-3513,-2503, -1459,-365,795,2046,3368,4729,6076,7375,8587,9690, 10681,11569,12369,13071,13640,14012,14110,13905,13449,12878, 12385,12104,12092,12313,12641,12908,12960,12724,12208,11464, 10594,9686,8781,7867,6893,5820,4672,3501,2372,1323, 360,-552,-1458,-2372,-3281,-4150,-4933,-5613,-6194,-6700, -7160,-7602,-8049,-8515,-9005,-9507,-9972,-10337,-10537,-10542, -10402,-10230,-10152,-10247,-10523,-10943,-11428,-11884,-12228,-12418, -12456,-12345,-12079,-11655,-11071,-10338,-9484,-8546,-7571,-6600, -5642,-4685,-3714,-2711,-1661,-554,626,1896,3250,4643, 6011,7294,8457,9517,10507,11469,12385,13205,13813,14117, 14066,13696,13145,12602,12259,12200,12395,12715,13020,13165, 13067,12717,12161,11477,10723,9924,9054,8093,7032,5886, 4715,3579,2513,1516,555,-401,-1370,-2332,-3259,-4116, -4891,-5570,-6158,-6670,-7121,-7561,-8038,-8578,-9166,-9727, -10182,-10447,-10506,-10403,-10234,-10111,-10135,-10339,-10690,-11117, -11552,-11941,-12249,-12446,-12511,-12421,-12152,-11706,-11095,-10354, -9512,-8606,-7675,-6733,-5782,-4827,-3869,-2890,-1865,-754, 469,1791,3187,4582,5900,7099,8201,9273,10372,11484, 12527,13369,13889,14025,13805,13343,12823,12427,12278,12396, 12699,13027,13223,13219,13013,12652,12169,11588,10919,10135, 9226,8207,7107,5974,4852,3771,2737,1726,717,-295, -1288,-2255,-3184,-4064,-4857,-5525,-6064,-6527,-6973,-7474, -8064,-8716,-9366,-9913,-10274,-10416,-10367,-10222,-10089,-10057, -10175,-10435,-10795,-11212,-11634,-12014,-12314,-12511,-12569,-12462, -12173,-11710,-11101,-10370,-9543,-8643,-7709,-6770,-5845,-4942, -4037,-3094,-2048,-872,416,1781,3157,4472,5674,6802, 7925,9117,10383,11629,12710,13470,13812,13754,13403,12949, 12561,12373,12420,12649,12942,13173,13265,13186,12974,12661, 12253,11732,11074,10259,9310,8272,7202,6125,5050,3986, 2938,1909,889,-132,-1152,-2163,-3138,-4026,-4786,-5401, -5892,-6342,-6850,-7470,-8184,-8910,-9544,-9997,-10236,-10286, -10220,-10117,-10052,-10082,-10240,-10516,-10876,-11284,-11706,-12107, -12419,-12597,-12614,-12470,-12170,-11725,-11141,-10421,-9586,-8674, -7742,-6832,-5975,-5145,-4287,-3311,-2178,-902,440,1766, 3029,4217,5366,6531,7784,9147,10559,11860,12866,13452, 13606,13415,13055,12705,12499,12489,12651,12899,13125,13255, 13277,13213,13071,12820,12432,11891,11204,10385,9454,8443, 7379,6295,5221,4171,3146,2129,1098,33,-1053,-2126, -3108,-3940,-4616,-5165,-5670,-6205,-6832,-7558,-8330,-9042, -9602,-9959,-10116,-10127,-10067,-10007,-9996,-10061,-10234,-10524, -10905,-11331,-11758,-12141,-12431,-12589,-12596,-12456,-12176,-11742, -11148,-10399,-9542,-8650,-7793,-6999,-6239,-5435,-4516,-3439, -2214,-909,383,1604,2744,3854,5022,6320,7761,9289, 10760,11994,12832,13229,13247,13040,12773,12592,12556,12643, 12812,12994,13168,13295,13357,13335,13207,12947,12542,11989, 11311,10515,9605,8598,7530,6449,5396,4378,3368,2328, 1231,91,-1048,-2114,-3039,-3789,-4395,-4943,-5519,-6178, -6929,-7719,-8477,-9128,-9612,-9909,-10038,-10044,-9991,-9934, -9931,-10032,-10248,-10576,-10990,-11432,-11846,-12194,-12451,-12607, -12652,-12553,-12276,-11794,-11131,-10338,-9498,-8693,-7962,-7271, -6531,-5666,-4635,-3453,-2188,-940,213,1276,2322,3464, 4779,6270,7883,9486,10909,11986,12633,12880,12861,12730, 12609,12554,12587,12698,12858,13042,13227,13384,13476,13468, 13331,13067,12675,12143,11464,10638,9692,8672,7646,6640, 5662,4669,3610,2466,1262,66,-1049,-2038,-2873,-3562, -4170,-4775,-5456,-6223,-7042,-7849,-8585,-9193,-9635,-9896, -9996,-9986,-9918,-9866,-9887,-10038,-10310,-10671,-11078,-11487, -11868,-12212,-12494,-12696,-12769,-12651,-12300,-11727,-11011,-10250, -9512,-8831,-8187,-7516,-6714,-5725,-4571,-3344,-2145,-1045, -50,913,1965,3228,4732,6418,8133,9701,10969,11866, 12392,12622,12657,12602,12547,12542,12606,12742,12926,13136, 13335,13485,13567,13559,13453,13226,12858,12317,11596,10718, 9753,8771,7823,6898,5945,4911,3764,2521,1261,80, -957,-1844,-2617,-3312,-3980,-4680,-5451,-6280,-7123,-7928, -8642,-9235,-9655,-9878,-9929,-9876,-9808,-9801,-9905,-10120, -10402,-10722,-11075,-11463,-11876,-12278,-12620,-12833,-12859,-12654, -12208,-11580,-10885,-10230,-9641,-9081,-8459,-7699,-6764,-5666, -4476,-3310,-2255,-1331,-456,506,1685,3142,4818,6574, 8252,9708,10856,11660,12154,12397,12466,12459,12449,12493, 12603,12778,12983,13191,13377,13521,13620,13648,13576,13355, 12945,12346,11582,10711,9814,8929,8053,7142,6136,5007, 3768,2482,1241,135,-811,-1625,-2372,-3101,-3844,-4621, -5447,-6315,-7195,-8028,-8751,-9296,-9636,-9776,-9792,-9757, -9759,-9832,-9980,-10190,-10436,-10717,-11057,-11475,-11952,-12419, -12780,-12943,-12850,-12523,-12025,-11443,-10871,-10353,-9868,-9334, -8653,-7763,-6688,-5536,-4427,-3444,-2589,-1774,-878,210, 1554,3141,4880,6626,8235,9602,10671,11427,11897,12136, 12225,12262,12330,12455,12626,12805,12985,13167,13367,13576, 13749,13834,13755,13475,12991,12350,11610,10822,10021,9214, 8354,7389,6290,5074,3798,2530,1351,308,-597,-1411, -2180,-2937,-3715,-4538,-5426,-6371,-7311,-8156,-8824,-9279, -9534,-9637,-9664,-9693,-9760,-9878,-10016,-10160,-10349,-10625, -11029,-11549,-12101,-12574,-12865,-12912,-12704,-12307,-11825,-11359, -10947,-10555,-10094,-9462,-8611,-7582,-6476,-5409,-4478,-3677, -2936,-2130,-1145,82,1552,3214,4963,6675,8237,9546, 10545,11224,11645,11893,12046,12166,12293,12445,12607,12763, 12937,13151,13419,13702,13926,14005,13874,13528,13009,12383, 11718,11035,10317,9523,8613,7567,6397,5148,3886,2662, 1524,502,-395,-1190,-1938,-2704,-3539,-4460,-5457,-6477, -7432,-8228,-8804,-9173,-9390,-9530,-9641,-9746,-9836,-9912, -9980,-10080,-10274,-10629,-11144,-11757,-12337,-12752,-12916,-12818, -12523,-12147,-11795,-11502,-11221,-10847,-10281,-9491,-8516,-7455, -6428,-5517,-4740,-4038,-3306,-2439,-1361,-37,1520,3244, 5024,6717,8208,9415,10322,10958,11392,11702,11936,12113, 12257,12380,12499,12656,12887,13200,13560,13885,14086,14094, 13888,13501,12997,12439,11859,11244,10543,9715,8743,7644, 6445,5186,3916,2705,1600,628,-217,-977,-1725,-2540, -3473,-4512,-5595,-6629,-7525,-8225,-8739,-9103,-9375,-9585, -9747,-9850,-9889,-9893,-9919,-10041,-10328,-10810,-11443,-12096, -12607,-12868,-12875,-12699,-12451,-12217,-12031,-11846,-11558,-11074, -10357,-9456,-8457,-7468,-6565,-5778,-5078,-4400,-3648,-2727, -1567,-151,1494,3284,5074,6721,8117,9228,10082,10735, 11232,11608,11878,12061,12184,12286,12423,12644,12978,13389, 13793,14088,14205,14125,13887,13533,13095,12600,12058,11449, 10740,9891,8896,7767,6532,5237,3956,2771,1736,861, 92,-659,-1482,-2438,-3512,-4630,-5713,-6679,-7488,-8134, -8639,-9049,-9387,-9652,-9805,-9837,-9778,-9713,-9759,-10003, -10457,-11065,-11719,-12278,-12626,-12737,-12678,-12552,-12444,-12373, -12276,-12074,-11688,-11076,-10263,-9335,-8381,-7482,-6677,-5978, -5344,-4700,-3938,-2952,-1683,-142,1581,3373,5096,6644, 7967,9054,9934,10634,11170,11553,11803,11951,12050,12177, 12394,12734,13164,13596,13951,14177,14241,14157,13946,13639, 13255,12805,12292,11692,10979,10117,9088,7905,6613,5296, 4047,2950,2023,1225,465,-358,-1309,-2403,-3554,-4671, -5686,-6578,-7352,-8017,-8594,-9082,-9458,-9679,-9728,-9643, -9520,-9490,-9660,-10066,-10652,-11295,-11851,-12225,-12419,-12478, -12483,-12487,-12505,-12496,-12391,-12118,-11638,-10962,-10128,-9210, -8298,-7472,-6768,-6179,-5631,-5014,-4200,-3106,-1725,-116, 1613,3354,4993,6464,7743,8846,9765,10499,11027,11365, 11557,11687,11820,12034,12352,12757,13194,13596,13906,14097, 14165,14106,13937,13670,13322,12922,12458,11909,11203,10292, 9176,7904,6570,5291,4154,3187,2350,1563,735,-202, -1267,-2428,-3597,-4670,-5613,-6463,-7263,-8017,-8683,-9207, -9533,-9633,-9549,-9390,-9311,-9432,-9788,-10318,-10914,-11456, -11857,-12101,-12245,-12349,-12457,-12563,-12632,-12625,-12482,-12152, -11610,-10871,-9996,-9089,-8252,-7545,-6961,-6457,-5944,-5283, -4367,-3145,-1672,-50,1620,3270,4852,6312,7617,8746, 9666,10357,10823,11111,11300,11471,11690,11991,12372,12792, 13203,13565,13862,14059,14126,14063,13893,13659,13386,13075, 12677,12133,11372,10366,9153,7836,6539,5368,4363,3499, 2693,1854,913,-143,-1273,-2405,-3495,-4503,-5450,-6370, -7273,-8113,-8798,-9236,-9409,-9366,-9241,-9155,-9233,-9524, -9991,-10530,-11034,-11443,-11748,-11975,-12157,-12320,-12483,-12634, -12739,-12742,-12569,-12169,-11541,-10736,-9845,-8986,-8260,-7700, -7244,-6791,-6229,-5461,-4428,-3138,-1658,-75,1546,3177, 4767,6261,7586,8697,9567,10192,10609,10888,11118,11361, 11651,11998,12398,12835,13267,13644,13921,14070,14093,14014, 13882,13735,13571,13342,12963,12355,11479,10360,9098,7813, 6625,5589,4694,3857,2989,2031,973,-128,-1219,-2271, -3297,-4318,-5365,-6424,-7429,-8270,-8853,-9134,-9173,-9090, -9036,-9101,-9333,-9710,-10168,-10637,-11060,-11402,-11670,-11899, -12123,-12351,-12574,-12777,-12907,-12890,-12645,-12146,-11432,-10590, -9744,-9002,-8422,-7981,-7584,-7095,-6439,-5573,-4500,-3227, -1793,-241,1388,3060,4697,6211,7517,8582,9392,9981, 10403,10728,11004,11282,11598,11993,12446,12923,13370,13722, 13945,14040,14048,14012,13979,13949,13869,13651,13204,12473, 11479,10304,9065,7882,6832,5893,5010,4111,3139,2097, 1022,-31,-1047,-2059,-3118,-4260,-5458,-6622,-7621,-8350, -8765,-8917,-8924,-8915,-8980,-9167,-9474,-9874,-10297,-10703, -11061,-11356,-11597,-11823,-12079,-12376,-12689,-12951,-13079,-12993, -12634,-12018,-11241,-10435,-9711,-9122,-8657,-8258,-7834,-7288, -6564,-5662,-4595,-3352,-1933,-365,1302,3003,4639,6112, 7356,8368,9160,9750,10183,10515,10818,11144,11541,12008, 12522,13010,13408,13683,13841,13914,13964,14032,14128,14208, 14167,13887,13302,12430,11372,10240,9132,8099,7137,6201, 5238,4223,3177,2140,1154,203,-782,-1873,-3085,-4365, -5629,-6755,-7640,-8234,-8553,-8678,-8724,-8799,-8960,-9226, -9576,-9969,-10362,-10714,-11007,-11249,-11473,-11729,-12062,-12458, -12850,-13123,-13167,-12935,-12453,-11789,-11056,-10354,-9755,-9263, -8845,-8440,-7980,-7403,-6678,-5790,-4721,-3455,-1985,-369, 1318,2995,4585,6011,7223,8212,8978,9552,9969,10301, 10624,11019,11511,12061,12591,13035,13348,13536,13652,13759, 13922,14143,14364,14469,14352,13937,13225,12300,11281,10265, 9295,8340,7373,6361,5318,4280,3279,2335,1420,471, -593,-1814,-3150,-4500,-5744,-6779,-7547,-8044,-8329,-8478, -8584,-8723,-8948,-9274,-9671,-10077,-10436,-10709,-10910,-11108, -11367,-11735,-12195,-12676,-13068,-13265,-13181,-12821,-12261,-11616, -10971,-10390,-9885,-9434,-9009,-8587,-8124,-7568,-6851,-5943, -4834,-3521,-2035,-419,1251,2912,4495,5928,7139,8095, 8798,9312,9716,10092,10514,11009,11579,12156,12654,13009, 13223,13358,13512,13743,14065,14421,14688,14731,14462,13901, 13124,12245,11339,10433,9496,8490,7424,6347,5322,4375, 3490,2618,1703,678,-516,-1859,-3273,-4625,-5806,-6752, -7442,-7902,-8174,-8339,-8491,-8699,-9002,-9385,-9788,-10143, -10408,-10587,-10745,-10978,-11340,-11838,-12393,-12885,-13197,-13264, -13068,-12654,-12111,-11525,-10955,-10420,-9945,-9526,-9147,-8762, -8308,-7731,-6990,-6059,-4929,-3606,-2117,-515,1146,2807, 4395,5818,6995,7888,8518,8976,9390,9861,10425,11046, 11661,12191,12579,12822,12982,13159,13443,13855,14326,14715, 14895,14797,14428,13857,13156,12388,11563,10658,9657,8576, 7480,6435,5490,4637,3815,2940,1949,811,-483,-1891, -3330,-4674,-5812,-6687,-7308,-7709,-7973,-8189,-8433,-8752, -9139,-9530,-9864,-10105,-10262,-10398,-10595,-10934,-11423,-12009, -12571,-12990,-13192,-13161,-12921,-12514,-12002,-11449,-10910,-10417, -9985,-9617,-9281,-8920,-8472,-7873,-7102,-6151,-5019,-3707, -2219,-596,1114,2816,4399,5749,6814,7608,8195,8689, 9203,9806,10493,11168,11735,12128,12375,12551,12765,13095, 13558,14093,14571,14878,14938,14764,14404,13918,13326,12614, 11778,10813,9755,8666,7627,6679,5820,4999,4156,3226, 2157,930,-446,-1910,-3372,-4702,-5787,-6582,-7121,-7485, -7775,-8087,-8460,-8882,-9303,-9637,-9849,-9969,-10087,-10282, -10600,-11059,-11626,-12212,-12719,-13066,-13204,-13129,-12865,-12449, -11944,-11411,-10906,-10473,-10112,-9798,-9474,-9098,-8620,-8008, -7242,-6303,-5174,-3837,-2309,-634,1126,2846,4373,5605, 6541,7252,7853,8458,9129,9863,10580,11175,11593,11859, 12063,12315,12689,13181,13737,14264,14663,14870,14890,14733, 14447,14038,13482,12741,11832,10814,9759,8738,7788,6916, 6098,5287,4417,3434,2296,988,-464,-1971,-3422,-4689, -5690,-6407,-6902,-7297,-7692,-8134,-8603,-9041,-9388,-9614, -9731,-9820,-9969,-10251,-10668,-11195,-11775,-12343,-12817,-13123, -13219,-13105,-12804,-12368,-11867,-11371,-10923,-10544,-10221,-9920, -9601,-9215,-8732,-8131,-7391,-6473,-5325,-3927,-2313,-559, 1207,2844,4230,5319,6167,6895,7623,8403,9208,9962, 10585,11028,11321,11567,11853,12252,12765,13331,13879,14338, 14680,14891,14956,14872,14624,14198,13585,12791,11861,10856, 9840,8874,7988,7172,6395,5591,4696,3651,2421,1014, -501,-2014,-3387,-4524,-5398,-6064,-6614,-7141,-7678,-8208, -8677,-9046,-9289,-9437,-9532,-9654,-9871,-10222,-10700,-11264, -11850,-12394,-12837,-13101,-13149,-12979,-12640,-12205,-11745,-11313, -10926,-10581,-10261,-9946,-9616,-9245,-8804,-8259,-7551,-6619, -5396,-3892,-2186,-413,1264,2730,3932,4925,5809,6682, 7582,8482,9300,9962,10451,10800,11094,11414,11822,12314, 12861,13410,13916,14351,14710,14972,15096,15043,14788,14326, 13663,12834,11897,10914,9949,9038,8211,7456,6720,5919, 4968,3805,2432,923,-611,-2046,-3294,-4315,-5139,-5850, -6509,-7149,-7760,-8301,-8725,-9020,-9202,-9321,-9440,-9608, -9876,-10268,-10785,-11380,-11982,-12517,-12909,-13094,-13059,-12835, -12500,-12113,-11715,-11336,-10982,-10647,-10315,-9996,-9685,-9371, -9006,-8510,-7785,-6745,-5385,-3777,-2066,-403,1092,2387, 3513,4545,5556,6576,7565,8454,9180,9730,10145,10498, 10869,11280,11743,12245,12775,13313,13830,14294,14685,14978, 15121,15065,14783,14284,13592,12761,11829,10869,9958,9138, 8418,7749,7043,6190,5113,3803,2329,801,-666,-1988, -3137,-4117,-4977,-5780,-6542,-7250,-7863,-8358,-8728,-8986, -9154,-9269,-9399,-9601,-9915,-10365,-10931,-11561,-12166,-12655, -12963,-13073,-12984,-12743,-12424,-12083,-11738,-11382,-11018,-10649, -10307,-10024,-9812,-9617,-9331,-8807,-7951,-6742,-5258,-3633, -2024,-536,804,2035,3214,4380,5521,6600,7551,8347, 8988,9506,9944,10358,10785,11236,11710,12206,12730,13287, 13853,14375,14805,15105,15244,15179,14890,14374,13651,12777, 11830,10906,10093,9410,8801,8166,7393,6402,5181,3778, 2294,839,-513,-1741,-2860,-3886,-4825,-5686,-6487,-7209, -7827,-8312,-8661,-8893,-9029,-9130,-9266,-9508,-9896,-10428, -11061,-11716,-12295,-12719,-12952,-12995,-12892,-12695,-12441,-12140, -11780,-11364,-10936,-10557,-10289,-10151,-10081,-9957,-9625,-8972, -7956,-6621,-5103,-3563,-2110,-762,534,1816,3105,4359, 5537,6588,7488,8239,8865,9399,9872,10318,10759,11211, 11694,12222,12794,13383,13972,14515,14966,15289,15440,15377, 15053,14475,13695,12807,11902,11078,10390,9805,9227,8530, 7631,6502,5192,3776,2342,963,-324,-1515,-2634,-3699, -4705,-5628,-6463,-7203,-7822,-8285,-8601,-8788,-8883,-8970, -9138,-9458,-9944,-10557,-11232,-11865,-12369,-12697,-12863,-12904, -12864,-12738,-12510,-12171,-11734,-11260,-10836,-10547,-10447,-10474, -10488,-10309,-9813,-8973,-7845,-6526,-5123,-3725,-2365,-1039, 291,1633,2974,4251,5406,6411,7278,8023,8665,9213, 9699,10149,10593,11065,11581,12151,12754,13365,13962,14526, 15011,15367,15516,15400,14995,14339,13524,12681,11903,11243, 10683,10135,9503,8696,7686,6491,5166,3778,2385,1039, -230,-1421,-2552,-3640,-4681,-5660,-6535,-7297,-7899,-8325, -8573,-8695,-8761,-8867,-9106,-9533,-10125,-10791,-11422,-11948, -12344,-12619,-12796,-12895,-12905,-12779,-12480,-12022,-11496,-11032, -10733,-10644,-10710,-10799,-10751,-10427,-9780,-8841,-7708,-6472, -5200,-3902,-2580,-1226,144,1511,2841,4100,5245,6249, 7119,7857,8479,9010,9485,9960,10452,10969,11512,12082, 12679,13310,13951,14577,15109,15468,15565,15344,14837,14138, 13376,12653,12024,11489,10983,10410,9697,8809,7742,6533, 5223,3852,2478,1156,-89,-1270,-2434,-3581,-4683,-5694, -6592,-7342,-7902,-8247,-8417,-8500,-8601,-8809,-9176,-9691, -10298,-10911,-11457,-11906,-12277,-12598,-12857,-13011,-12988,-12745, -12303,-11757,-11260,-10929,-10815,-10879,-10999,-11024,-10835,-10380, -9671,-8749,-7672,-6505,-5278,-4003,-2669,-1295,94,1463, 2784,4027,5168,6177,7041,7763,8364,8887,9379,9880, 10398,10916,11446,12011,12637,13337,14071,14759,15290,15575, 15562,15251,14709,14051,13387,12794,12269,11782,11272,10659, 9893,8950,7845,6621,5318,3978,2643,1353,135,-1040, -2227,-3443,-4639,-5720,-6630,-7324,-7786,-8039,-8158,-8262, -8458,-8801,-9276,-9812,-10350,-10857,-11333,-11803,-12278,-12713, -13014,-13107,-12941,-12550,-12040,-11543,-11187,-11027,-11050,-11163, -11247,-11182,-10894,-10373,-9653,-8773,-7753,-6621,-5408,-4131, -2802,-1435,-49,1340,2684,3940,5058,6019,6844,7548, 8169,8725,9257,9761,10245,10725,11248,11865,12602,13422, 14237,14931,15400,15581,15463,15108,14602,14032,13469,12954, 12484,12017,11491,10840,10034,9064,7943,6697,5389,4074, 2793,1565,369,-842,-2111,-3422,-4690,-5801,-6672,-7271, -7615,-7798,-7949,-8170,-8498,-8918,-9384,-9848,-10305,-10786, -11325,-11908,-12469,-12909,-13129,-13063,-12743,-12272,-11793,-11419, -11216,-11180,-11254,-11343,-11361,-11238,-10930,-10413,-9703,-8826, -7818,-6704,-5519,-4273,-2959,-1581,-171,1225,2566,3804, 4891,5825,6631,7363,8031,8622,9134,9592,10036,10522, 11113,11854,12718,13615,14432,15069,15459,15566,15406,15050, 14594,14115,13648,13196,12747,12280,11749,11077,10219,9184, 8020,6778,5511,4258,3037,1827,589,-717,-2103,-3511, -4798,-5839,-6583,-7067,-7371,-7624,-7897,-8225,-8596,-8974, -9354,-9751,-10223,-10801,-11470,-12154,-12727,-13074,-13129,-12903, -12491,-12036,-11657,-11411,-11300,-11297,-11366,-11439,-11436,-11289, -10960,-10427,-9710,-8844,-7862,-6788,-5632,-4397,-3075,-1680, -253,1142,2452,3642,4707,5655,6511,7279,7951,8504, 8948,9352,9804,10372,11093,11958,12894,13798,14569,15131, 15438,15493,15326,15002,14598,14179,13781,13394,12993,12536, 11982,11273,10369,9285,8092,6871,5677,4524,3357,2117, 760,-703,-2199,-3613,-4804,-5711,-6358,-6826,-7211,-7577, -7951,-8309,-8627,-8923,-9254,-9685,-10265,-10970,-11722,-12397, -12882,-13103,-13042,-12758,-12353,-11953,-11642,-11467,-11420,-11457, -11532,-11595,-11576,-11408,-11042,-10489,-9779,-8941,-7994,-6949, -5799,-4536,-3171,-1756,-353,988,2253,3427,4516,5513, 6402,7154,7755,8229,8628,9040,9553,10222,11054,12000, 12963,13840,14550,15049,15308,15340,15179,14887,14533,14173, 13832,13505,13146,12698,12100,11320,10355,9262,8121,7004, 5918,4805,3590,2229,738,-806,-2287,-3594,-4659,-5481, -6131,-6687,-7186,-7625,-7979,-8253,-8484,-8758,-9157,-9728, -10445,-11225,-11959,-12536,-12890,-12994,-12876,-12593,-12244,-11908, -11657,-11520,-11511,-11593,-11695,-11743,-11676,-11449,-11050,-10505, -9836,-9050,-8132,-7075,-5886,-4585,-3220,-1845,-504,807, 2074,3292,4429,5453,6316,7010,7536,7956,8353,8825, 9440,10218,11120,12083,13030,13876,14543,14992,15215,15233, 15084,14829,14537,14262,14015,13761,13426,12931,12234,11352, 10356,9329,8318,7322,6269,5086,3729,2226,667,-841, -2209,-3401,-4410,-5257,-5983,-6621,-7160,-7565,-7840,-8040, -8257,-8589,-9096,-9792,-10592,-11377,-12042,-12522,-12783,-12813, -12649,-12366,-12045,-11756,-11562,-11491,-11542,-11649,-11731,-11727, -11605,-11354,-10980,-10484,-9848,-9061,-8119,-7045,-5865,-4603, -3294,-1967,-648,670,1980,3254,4425,5417,6203,6800, 7263,7675,8117,8675,9392,10252,11208,12191,13122,13927, 14550,14953,15133,15117,14970,14770,14593,14450,14297,14048, 13640,13032,12245,11343,10423,9523,8629,7653,6524,5206, 3720,2156,627,-788,-2070,-3230,-4283,-5227,-6038,-6686, -7153,-7456,-7660,-7864,-8161,-8610,-9231,-9987,-10800,-11561, -12175,-12588,-12784,-12756,-12551,-12248,-11945,-11718,-11609,-11610, -11686,-11770,-11808,-11772,-11652,-11435,-11093,-10610,-9960,-9146, -8185,-7114,-5960,-4748,-3487,-2185,-839,537,1897,3187, 4324,5259,5981,6530,6978,7401,7888,8517,9310,10233, 11233,12249,13203,13999,14570,14894,15007,14966,14870,14798, 14767,14722,14566,14232,13697,12996,12205,11405,10629,9841, 8951,7890,6635,5220,3709,2193,736,-627,-1910,-3128, -4263,-5265,-6081,-6677,-7063,-7305,-7502,-7762,-8154,-8707, -9405,-10191,-10993,-11729,-12317,-12685,-12807,-12706,-12461,-12177, -11936,-11787,-11733,-11763,-11827,-11887,-11916,-11889,-11791,-11588, -11246,-10731,-10043,-9210,-8266,-7234,-6124,-4933,-3660,-2319, -928,478,1840,3099,4179,5050,5723,6260,6735,7211, 7751,8418,9256,10239,11310,12367,13307,14036,14508,14749, 14838,14863,14903,14986,15046,14983,14721,14265,13667,13007, 12334,11671,10983,10191,9218,8048,6714,5286,3826,2377, 953,-439,-1787,-3071,-4234,-5210,-5958,-6483,-6830,-7092, -7342,-7663,-8114,-8726,-9483,-10318,-11133,-11830,-12341,-12609, -12641,-12502,-12284,-12067,-11904,-11804,-11764,-11774,-11822,-11889, -11945,-11948,-11865,-11640,-11255,-10712,-10027,-9227,-8336,-7351, -6262,-5067,-3770,-2384,-949,470,1803,2993,4003,4827, 5480,6013,6489,6989,7574,8314,9235,10320,11452,12502, 13344,13935,14300,14520,14684,14860,15047,15193,15218,15059, 14704,14204,13653,13102,12556,11966,11262,10391,9330,8106, 6777,5394,3985,2543,1072,-396,-1812,-3125,-4262,-5174, -5856,-6334,-6670,-6938,-7214,-7590,-8118,-8811,-9635,-10505, -11304,-11926,-12326,-12498,-12484,-12352,-12181,-12021,-11893,-11805, -11764,-11777,-11843,-11938,-12011,-12011,-11900,-11643,-11240,-10701, -10054,-9314,-8472,-7519,-6432,-5200,-3846,-2414,-976,409, 1689,2834,3816,4614,5238,5735,6192,6706,7367,8233, 9291,10454,11571,12509,13213,13705,14064,14380,14705,15013, 15258,15359,15273,15011,14637,14211,13776,13319,12806,12188, 11426,10503,9425,8228,6940,5585,4161,2667,1139,-367, -1790,-3085,-4195,-5083,-5732,-6178,-6486,-6747,-7063,-7520, -8156,-8952,-9831,-10689,-11418,-11952,-12274,-12405,-12394,-12295, -12143,-11981,-11844,-11759,-11741,-11788,-11877,-11977,-12040,-12015, -11859,-11569,-11162,-10659,-10070,-9376,-8551,-7580,-6457,-5197, -3819,-2391,-974,372,1631,2763,3717,4454,4989,5422, 5876,6471,7281,8305,9460,10603,11595,12373,12970,13459, 13918,14376,14814,15157,15352,15367,15217,14964,14654,14321, 13960,13529,12987,12314,11511,10587,9548,8400,7141,5773, 4304,2768,1213,-298,-1717,-2998,-4090,-4946,-5547,-5941, -6226,-6522,-6935,-7518,-8256,-9100,-9964,-10766,-11427,-11910, -12209,-12335,-12327,-12220,-12071,-11913,-11791,-11738,-11773,-11869, -11981,-12070,-12093,-12022,-11834,-11550,-11180,-10736,-10190,-9512, -8672,-7662,-6507,-5229,-3867,-2456,-1043,315,1565,2653, 3511,4131,4593,5028,5575,6332,7304,8412,9536,10562, 11419,12121,12731,13313,13886,14428,14877,15170,15290,15257, 15133,14957,14749,14485,14139,13679,13111,12432,11644,10735, 9705,8550,7274,5877,4379,2817,1243,-288,-1716,-2987, -4042,-4830,-5364,-5714,-6018,-6405,-6939,-7625,-8421,-9264, -10098,-10849,-11466,-11917,-12198,-12312,-12288,-12168,-12016,-11870, -11783,-11787,-11880,-12012,-12126,-12185,-12164,-12066,-11899,-11670, -11359,-10937,-10383,-9673,-8808,-7802,-6661,-5393,-4009,-2542, -1067,319,1519,2471,3155,3658,4130,4702,5454,6387, 7436,8504,9503,10397,11198,11938,12648,13325,13955,14485, 14878,15124,15238,15262,15208,15090,14903,14636,14274,13816, 13264,12615,11850,10953,9919,8750,7452,6034,4509,2906, 1273,-306,-1741,-2960,-3916,-4623,-5126,-5509,-5888,-6366, -6987,-7728,-8540,-9376,-10187,-10915,-11521,-11953,-12198,-12272, -12213,-12085,-11945,-11833,-11793,-11836,-11945,-12057,-12125,-12141, -12110,-12044,-11929,-11744,-11453,-11016,-10424,-9704,-8863,-7896, -6776,-5478,-4013,-2464,-961,362,1413,2184,2751,3257, 3847,4589,5492,6495,7519,8491,9388,10238,11069,11885, 12667,13384,13999,14487,14846,15093,15252,15330,15323,15225, 15045,14783,14424,13975,13440,12809,12064,11193,10182,9023, 7712,6250,4650,2979,1307,-270,-1661,-2800,-3678,-4334, -4843,-5291,-5760,-6317,-6983,-7751,-8581,-9422,-10234,-10960, -11551,-11958,-12157,-12183,-12092,-11973,-11879,-11834,-11850,-11902, -11967,-12028,-12063,-12079,-12086,-12065,-11969,-11757,-11422,-10977, -10431,-9781,-9009,-8058,-6871,-5457,-3897,-2334,-920,234, 1108,1767,2335,2946,3688,4552,5484,6435,7375,8286, 9176,10071,10961,11819,12603,13298,13899,14398,14782,15055, 15238,15329,15329,15240,15081,14838,14511,14085,13555,12916, 12179,11340,10368,9221,7880,6354,4683,2954,1277,-238, -1531,-2578,-3407,-4062,-4606,-5114,-5655,-6269,-6970,-7756, -8612,-9485,-10315,-11029,-11563,-11892,-12026,-12024,-11965,-11907, -11887,-11889,-11901,-11911,-11932,-11973,-12036,-12109,-12152,-12116, -11972,-11718,-11394,-11015,-10576,-10001,-9213,-8154,-6830,-5305, -3727,-2248,-996,-2,774,1435,2092,2824,3638,4515, 5412,6317,7218,8148,9082,10026,10933,11788,12535,13226, 13762,14144,14604,14906,15112,15205,15249,15211,15101,14876, 14560,14147,13652,13071,12396,11588,10607,9416,8014,6430, 4728,3000,1359,-93,-1304,-2292,-3098,-3783,-4380,-4937, -5518,-6184,-6950,-7811,-8729,-9645,-10468,-11129,-11580,-11847, -11971,-12021,-12049,-12084,-12105,-12099,-12076,-12075,-12134,-12248, -12373,-12456,-12460,-12377,-12219,-12031,-11825,-11580,-11215,-10624, -9729,-8519,-7072,-5525,-4038,-2727,-1627,-712,78,811, 1550,2329,3157,4031,4927,5843,6775,7732,8699,9648, 10558,11406,12186,12894,13525,14056,14482,14805,15036,15183, 15245,15219,15098,14876,14562,14168,13709,13189,12573,11791, 10788,9532,8055,6418,4705,3011,1435,48,-1106,-2054, -2849,-3527,-4142,-4721,-5334,-6049,-6895,-7841,-8815,-9718, -10465,-11019,-11393,-11640,-11810,-11931,-12006,-12034,-12006,-11963, -11951,-12008,-12129,-12271,-12367,-12379,-12308,-12190,-12079,-12001, -11928,-11763,-11377,-10668,-9619,-8306,-6856,-5397,-4048,-2875, -1863,-971,-151,625,1383,2155,2967,3844,4771,5725, 6675,7623,8559,9487,10397,11276,12089,12817,13458,13996, 14434,14773,15038,15223,15304,15272,15138,14926,14642,14299, 13895,13422,12820,12018,10963,9650,8117,6451,4752,3102, 1579,229,-905,-1838,-2591,-3230,-3818,-4433,-5143,-5990, -6950,-7951,-8897,-9712,-10353,-10848,-11236,-11536,-11750,-11872, -11909,-11884,-11846,-11845,-11916,-12048,-12184,-12267,-12269,-12203, -12125,-12093,-12121,-12160,-12117,-11894,-11385,-10540,-9393,-8068, -6693,-5360,-4130,-3019,-2026,-1137,-328,432,1190,1976, 2811,3702,4636,5586,6531,7476,8417,9348,10269,11158, 11980,12704,13329,13865,14325,14705,14996,15180,15247,15205, 15083,14905,14685,14417,14082,13633,13014,12160,11043,9680, 8128,6472,4794,3173,1672,344,-760,-1629,-2306,-2887, -3494,-4214,-5066,-6022,-7025,-7991,-8852,-9583,-10200,-10725, -11163,-11493,-11693,-11757,-11732,-11691,-11700,-11790,-11938,-12080, -12141,-12113,-12035,-11975,-11994,-12098,-12254,-12363,-12299,-11970, -11326,-10386,-9232,-7959,-6666,-5408,-4230,-3153,-2191,-1333, -547,207,978,1793,2655,3555,4479,5414,6355,7310, 8266,9216,10142,11020,11827,12549,13187,13740,14214,14593, 14875,15036,15086,15045,14950,14834,14691,14497,14200,13751, 13091,12190,11039,9660,8104,6451,4768,3145,1666,408, -598,-1371,-2002,-2618,-3332,-4183,-5129,-6095,-7035,-7917, -8725,-9458,-10123,-10701,-11147,-11423,-11536,-11547,-11538,-11573, -11682,-11825,-11948,-11997,-11955,-11861,-11789,-11813,-11956,-12172, -12373,-12441,-12288,-11876,-11188,-10257,-9132,-7907,-6645,-5416, -4277,-3253,-2347,-1518,-730,55,853,1680,2539,3427, 4351,5296,6259,7228,8191,9137,10059,10932,11740,12482, 13155,13748,14232,14603,14858,14995,15033,15015,14983,14940, 14864,14701,14401,13916,13218,12293,11135,9748,8159,6450, 4733,3125,1730,596,-291,-1025,-1710,-2445,-3285,-4214, -5167,-6076,-6945,-7807,-8657,-9453,-10139,-10675,-11040,-11236, -11314,-11356,-11439,-11584,-11748,-11867,-11884,-11802,-11684,-11610, -11639,-11784,-12018,-12271,-12449,-12466,-12260,-11795,-11082,-10136, -9020,-7804,-6578,-5412,-4347,-3397,-2526,-1705,-904,-100, 714,1538,2384,3269,4199,5156,6125,7092,8046,8974, 9885,10763,11592,12361,13059,13668,14157,14503,14725,14850, 14924,14981,15029,15034,14961,14778,14468,14003,13337,12420, 11225,9763,8096,6350,4672,3175,1924,909,60,-720, -1507,-2342,-3222,-4127,-5044,-5954,-6873,-7801,-8711,-9521, -10159,-10590,-10844,-10999,-11135,-11300,-11497,-11679,-11784,-11786, -11686,-11546,-11445,-11458,-11590,-11810,-12079,-12334,-12496,-12495, -12261,-11766,-11009,-10032,-8909,-7725,-6558,-5458,-4454,-3534, -2677,-1851,-1044,-242,565,1383,2234,3127,4071,5047, 6029,6987,7914,8819,9726,10628,11504,12312,13020,13600, 14047,14359,14582,14742,14873,14993,15076,15090,15027,14877, 14613,14185,13530,12572,11283,9705,7974,6261,4705,3367, 2227,1236,332,-536,-1391,-2245,-3100,-3973,-4887,-5864, -6884,-7895,-8803,-9533,-10054,-10394,-10632,-10853,-11100,-11364, -11593,-11732,-11747,-11646,-11496,-11369,-11323,-11394,-11587,-11856, -12143,-12400,-12553,-12527,-12254,-11710,-10922,-9938,-8836,-7702, -6598,-5551,-4568,-3642,-2772,-1940,-1138,-346,453,1277, 2139,3051,4004,4971,5935,6882,7804,8728,9673,10626, 11534,12342,13013,13553,13975,14302,14560,14760,14911,15019, 15092,15131,15137,15084,14902,14484,13741,12638,11235,9627, 7950,6347,4905,3640,2509,1472,498,-410,-1255,-2066, -2909,-3829,-4848,-5928,-6989,-7962,-8774,-9388,-9842,-10188, -10505,-10831,-11160,-11439,-11618,-11680,-11635,-11519,-11386,-11289, -11276,-11375,-11601,-11920,-12253,-12516,-12638,-12546,-12208,-11619, -10819,-9861,-8807,-7724,-6664,-5650,-4688,-3780,-2930,-2117, -1328,-547,254,1097,1984,2907,3854,4789,5706,6627, 7579,8561,9549,10513,11401,12176,12825,13360,13818,14204, 14505,14707,14816,14898,15009,15155,15287,15304,15100,14590, 13722,12515,11069,9513,7961,6482,5105,3826,2644,1578, 627,-229,-1028,-1843,-2745,-3782,-4909,-6040,-7060,-7920, -8610,-9164,-9633,-10060,-10465,-10849,-11188,-11437,-11564,-11563, -11473,-11337,-11208,-11131,-11150,-11304,-11589,-11962,-12315,-12558, -12631,-12488,-12104,-11482,-10662,-9710,-8696,-7664,-6651,-5675, -4742,-3865,-3043,-2260,-1488,-695,138,1001,1883,2773, 3681,4594,5518,6474,7474,8492,9487,10410,11242,11992, 12670,13265,13765,14150,14421,14593,14715,14870,15096,15368, 15579,15597,15299,14647,13664,12434,11044,9582,8109,6666, 5288,4002,2829,1799,899,77,-733,-1633,-2673,-3822, -4978,-6047,-6981,-7770,-8427,-8984,-9488,-9961,-10414,-10816, -11142,-11363,-11456,-11428,-11308,-11149,-11007,-10948,-11025,-11261, -11607,-11998,-12347,-12566,-12586,-12389,-11967,-11342,-10551,-9633, -8644,-7634,-6645,-5694,-4801,-3968,-3177,-2392,-1592,-764, 85,928,1754,2582,3458,4398,5389,6404,7419,8403, 9339,10227,11082,11889,12615,13227,13690,13996,14185,14340, 14550,14859,15236,15583,15775,15703,15308,14586,13585,12387, 11058,9644,8176,6711,5319,4076,3006,2071,1208,335, -588,-1606,-2727,-3892,-5006,-5994,-6857,-7621,-8299,-8910, -9459,-9964,-10424,-10832,-11148,-11345,-11399,-11326,-11173,-10998, -10864,-10846,-10990,-11293,-11689,-12090,-12408,-12580,-12560,-12326, -11879,-11249,-10474,-9592,-8638,-7655,-6699,-5802,-4959,-4147, -3339,-2516,-1683,-857,-55,721,1504,2344,3274,4282, 5309,6310,7273,8214,9144,10075,10997,11865,12600,13145, 13499,13732,13926,14172,14526,14980,15451,15800,15918,15750, 15290,14575,13621,12457,11122,9670,8177,6725,5399,4244, 3254,2362,1477,532,-500,-1591,-2729,-3853,-4911,-5868, -6723,-7492,-8191,-8823,-9402,-9943,-10437,-10858,-11159,-11314, -11322,-11208,-11019,-10835,-10732,-10777,-10996,-11350,-11768,-12166, -12457,-12587,-12528,-12271,-11818,-11174,-10391,-9505,-8577,-7659, -6779,-5937,-5112,-4278,-3429,-2583,-1769,-1009,-280,465, 1285,2205,3198,4221,5212,6154,7075,8025,9029,10063, 11056,11904,12546,12972,13245,13481,13781,14195,14695,15216, 15666,15955,16016,15829,15385,14682,13726,12530,11147,9671, 8209,6846,5633,4567,3594,2658,1700,687,-388,-1496, -2618,-3735,-4793,-5751,-6598,-7362,-8065,-8724,-9338,-9910, -10435,-10869,-11155,-11265,-11210,-11038,-10829,-10670,-10639,-10771, -11048,-11423,-11833,-12208,-12477,-12591,-12521,-12243,-11757,-11087, -10290,-9443,-8592,-7752,-6907,-6051,-5177,-4298,-3446,-2661, -1937,-1251,-531,269,1166,2131,3113,4065,4972,5876, 6833,7878,8988,10067,11015,11751,12268,12624,12927,13276, 13717,14236,14782,15290,15700,15961,16028,15859,15421,14681, 13654,12395,11001,9580,8213,6956,5817,4779,3790,2810, 1801,740,-370,-1494,-2614,-3705,-4742,-5686,-6526,-7282, -7994,-8682,-9349,-9975,-10518,-10931,-11167,-11212,-11094,-10890, -10695,-10585,-10616,-10796,-11102,-11485,-11887,-12255,-12518,-12616, -12495,-12159,-11632,-10971,-10224,-9444,-8654,-7838,-6969,-6054, -5136,-4277,-3507,-2811,-2141,-1440,-643,241,1166,2076, 2954,3815,4706,5672,6738,7890,9045,10078,10902,11505, 11957,12341,12737,13192,13714,14270,14819,15324,15750,16043, 16140,15962,15464,14640,13547,12281,10942,9610,8339,7150, 6045,5011,4006,2984,1923,819,-311,-1446,-2562,-3634, -4629,-5529,-6351,-7123,-7872,-8625,-9351,-10011,-10538,-10894, -11048,-11024,-10886,-10708,-10562,-10496,-10547,-10737,-11068,-11489, -11928,-12294,-12516,-12538,-12345,-11965,-11460,-10867,-10209,-9483, -8686,-7814,-6894,-5977,-5121,-4353,-3665,-3002,-2296,-1506, -646,233,1081,1894,2694,3546,4512,5608,6788,7968, 9052,9972,10702,11274,11753,12203,12665,13153,13682,14250, 14835,15394,15863,16162,16216,15973,15406,14542,13448,12212, 10936,9683,8485,7355,6281,5238,4206,3146,2047,912, -234,-1365,-2466,-3509,-4480,-5367,-6191,-6991,-7806,-8605, -9351,-9979,-10438,-10711,-10802,-10743,-10588,-10414,-10274,-10207, -10262,-10477,-10844,-11297,-11722,-12022,-12143,-12077,-11842,-11482, -11038,-10516,-9889,-9136,-8278,-7355,-6447,-5609,-4870,-4189, -3508,-2774,-1974,-1133,-301,471,1186,1908,2719,3667, 4754,5928,7120,8232,9195,9998,10672,11253,11759,12223, 12675,13165,13717,14338,14982,15582,16048,16311,16292,15962, 15318,14411,13314,12115,10890,9690,8541,7442,6376,5320, 4254,3158,2026,868,-295,-1419,-2483,-3473,-4393,-5274, -6139,-7004,-7870,-8697,-9429,-10017,-10443,-10697,-10774,-10698, -10521,-10324,-10180,-10157,-10295,-10598,-11016,-11449,-11804,-12011, -12059,-11981,-11803,-11523,-11129,-10603,-9928,-9116,-8213,-7313, -6502,-5786,-5110,-4409,-3647,-2830,-1998,-1198,-478,186, 855,1608,2504,3558,4722,5913,7056,8100,9017,9808, 10477,11047,11543,12004,12483,13024,13651,14344,15056,15691, 16153,16369,16304,15932,15264,14352,13275,12124,10956,9814, 8703,7621,6559,5492,4399,3259,2080,883,-284,-1375, -2382,-3333,-4258,-5182,-6112,-7046,-7948,-8774,-9485,-10060, -10475,-10709,-10746,-10612,-10384,-10168,-10071,-10152,-10412,-10785, -11182,-11526,-11778,-11927,-11984,-11961,-11851,-11617,-11204,-10593, -9830,-8984,-8140,-7367,-6671,-6009,-5301,-4514,-3663,-2819, -2048,-1366,-743,-114,595,1434,2416,3512,4670,5825, 6943,7975,8886,9662,10308,10853,11339,11813,12343,12981, 13704,14468,15205,15840,16276,16440,16304,15878,15196,14307, 13278,12169,11040,9933,8871,7832,6784,5693,4543,3347, 2136,954,-161,-1197,-2173,-3131,-4105,-5090,-6063,-7012, -7921,-8761,-9506,-10098,-10479,-10629,-10568,-10370,-10146,-10001, -10013,-10202,-10522,-10882,-11197,-11440,-11637,-11815,-11959,-12013, -11914,-11620,-11121,-10443,-9670,-8895,-8168,-7497,-6828,-6106, -5308,-4462,-3627,-2862,-2187,-1581,-976,-312,454,1337, 2341,3451,4611,5764,6867,7885,8777,9512,10112,10622, 11119,11642,12248,12963,13777,14610,15372,15982,16369,16486, 16309,15855,15156,14266,13249,12175,11100,10060,9052,8040, 6974,5836,4639,3422,2224,1079,2,-1011,-1995,-2975, -3970,-4970,-5963,-6942,-7893,-8779,-9538,-10095,-10391,-10432, -10288,-10087,-9945,-9930,-10058,-10287,-10560,-10828,-11070,-11306, -11558,-11815,-12018,-12060,-11884,-11483,-10910,-10249,-9578,-8933, -8294,-7625,-6884,-6078,-5237,-4416,-3662,-2986,-2379,-1801, -1200,-519,273,1181,2210,3340,4526,5699,6796,7766, 8580,9248,9807,10313,10834,11427,12121,12913,13767,14611, 15358,15937,16300,16402,16221,15745,15020,14126,13141,12128, 11122,10145,9155,8117,6997,5816,4613,3421,2267,1149, 71,-964,-1956,-2926,-3902,-4915,-5967,-7029,-8053,-8967, -9676,-10114,-10277,-10232,-10098,-9987,-9971,-10053,-10191,-10351, -10520,-10720,-10981,-11310,-11668,-11979,-12131,-12059,-11761,-11308, -10773,-10208,-9629,-9033,-8390,-7667,-6869,-6037,-5223,-4464, -3775,-3150,-2571,-2006,-1419,-752,42,984,2064,3239, 4443,5610,6681,7602,8344,8943,9465,9991,10574,11250, 12022,12866,13737,14583,15336,15917,16266,16340,16121,15619, 14897,14041,13139,12224,11290,10320,9300,8220,7084,5899, 4693,3501,2335,1214,155,-838,-1782,-2731,-3738,-4835, -6000,-7163,-8220,-9078,-9657,-9958,-10044,-10019,-9977,-9982, -10044,-10124,-10185,-10248,-10374,-10618,-10986,-11402,-11779,-12021, -12070,-11914,-11593,-11175,-10716,-10229,-9693,-9092,-8414,-7664, -6869,-6055,-5265,-4534,-3879,-3291,-2746,-2199,-1605,-926, -123,840,1957,3178,4413,5569,6582,7423,8099,8659, 9188,9755,10408,11158,11987,12871,13773,14642,15419,16007, 16318,16317,16025,15517,14851,14079,13236,12355,11442,10479, 9462,8385,7251,6061,4833,3608,2421,1312,301,-618, -1506,-2470,-3578,-4813,-6087,-7289,-8300,-9033,-9477,-9706, -9836,-9927,-9998,-10037,-10046,-10039,-10046,-10131,-10346,-10697, -11128,-11535,-11824,-11948,-11909,-11744,-11482,-11142,-10733,-10263, -9727,-9118,-8421,-7657,-6854,-6059,-5304,-4616,-3993,-3432, -2912,-2385,-1793,-1085,-223,808,1983,3229,4443,5534, 6464,7236,7878,8446,9003,9605,10295,11087,11976,12933, 13903,14802,15554,16078,16323,16274,15974,15493,14875,14157, 13353,12484,11566,10607,9606,8545,7396,6162,4883,3645, 2509,1496,577,-307,-1251,-2343,-3596,-4935,-6225,-7335, -8198,-8820,-9248,-9549,-9780,-9944,-10019,-10003,-9926,-9861, -9892,-10086,-10428,-10848,-11260,-11594,-11801,-11862,-11797,-11638, -11416,-11123,-10753,-10298,-9761,-9131,-8415,-7639,-6841,-6053, -5320,-4664,-4094,-3587,-3109,-2604,-2004,-1253,-321,779, 1999,3235,4379,5383,6244,6992,7641,8218,8794,9425, 10161,11019,11982,12999,13986,14866,15561,16025,16230,16184, 15918,15475,14880,14176,13392,12570,11706,10786,9783,8678, 7461,6162,4868,3683,2660,1779,931,-1,-1102,-2385, -3766,-5105,-6295,-7275,-8042,-8647,-9148,-9560,-9846,-9974, -9953,-9850,-9756,-9745,-9866,-10133,-10509,-10922,-11286,-11565, -11738,-11794,-11742,-11608,-11413,-11139,-10782,-10326,-9774,-9133, -8417,-7645,-6849,-6073,-5362,-4747,-4234,-3800,-3381,-2881, -2221,-1377,-369,755,1942,3119,4216,5184,6020,6744, 7368,7926,8498,9166,9982,10929,11956,12993,13962,14797, 15450,15885,16088,16054,15813,15383,14811,14140,13415,12655, 11846,10936,9875,8665,7360,6061,4864,3835,2947,2108, 1191,105,-1156,-2526,-3888,-5133,-6213,-7142,-7951,-8644, -9204,-9607,-9836,-9886,-9813,-9712,-9668,-9736,-9930,-10233, -10598,-10968,-11283,-11512,-11659,-11722,-11696,-11587,-11399,-11141, -10787,-10338,-9782,-9128,-8395,-7605,-6800,-6036,-5375,-4845, -4426,-4042,-3608,-3040,-2297,-1385,-356,759,1918,3071, 4146,5087,5878,6535,7111,7665,8285,9028,9923,10922, 11962,12988,13942,14777,15434,15868,16049,15994,15731,15309, 14782,14200,13580,12892,12080,11088,9906,8602,7292,6099, 5072,4189,3337,2408,1333,111,-1200,-2530,-3798,-4971, -6032,-6997,-7861,-8594,-9150,-9498,-9654,-9660,-9591,-9533, -9557,-9702,-9950,-10261,-10594,-10918,-11200,-11402,-11529,-11588, -11583,-11500,-11331,-11081,-10750,-10318,-9759,-9071,-8283,-7459, -6675,-5996,-5441,-5001,-4620,-4230,-3745,-3122,-2343,-1424, -392,725,1887,3033,4075,4948,5662,6271,6843,7443, 8131,8945,9892,10924,11980,13012,13974,14814,15465,15872, 15998,15886,15607,15236,14819,14367,13832,13131,12207,11063, 9788,8516,7347,6326,5419,4542,3599,2541,1366,115, -1156,-2420,-3654,-4840,-5962,-6985,-7875,-8584,-9087,-9376, -9488,-9491,-9464,-9472,-9558,-9741,-10003,-10314,-10624,-10922, -11190,-11401,-11525,-11564,-11538,-11459,-11330,-11130,-10823,-10364, -9740,-8989,-8174,-7379,-6663,-6076,-5620,-5238,-4859,-4427, -3907,-3272,-2490,-1551,-478,675,1836,2935,3910,4719, 5384,5982,6594,7260,8000,8838,9798,10858,11972,13066, 14072,14909,15492,15793,15847,15737,15543,15307,15027,14634, 14048,13218,12152,10941,9715,8576,7564,6646,5741,4782, 3739,2606,1415,192,-1052,-2310,-3567,-4798,-5964,-7028, -7917,-8587,-9030,-9273,-9374,-9398,-9410,-9466,-9589,-9780, -10037,-10336,-10655,-10951,-11196,-11362,-11467,-11520,-11535,-11506, -11415,-11220,-10877,-10346,-9647,-8856,-8066,-7342,-6706,-6170, -5738,-5384,-5036,-4621,-4090,-3413,-2578,-1591,-483,672, 1787,2803,3697,4469,5150,5782,6417,7099,7850,8701, 9690,10810,12000,13155,14158,14919,15385,15585,15622,15607, 15586,15509,15281,14820,14089,13127,12021,10876,9789,8783, 7833,6900,5933,4907,3820,2682,1503,297,-939,-2218, -3519,-4798,-5992,-7044,-7891,-8507,-8893,-9108,-9224,-9293, -9351,-9431,-9570,-9781,-10059,-10366,-10669,-10928,-11123,-11251, -11345,-11437,-11527,-11565,-11487,-11245,-10824,-10238,-9528,-8750, -7980,-7292,-6712,-6230,-5837,-5508,-5188,-4791,-4240,-3503, -2586,-1545,-441,650,1685,2637,3491,4263,4952,5589, 6205,6859,7609,8520,9616,10856,12113,13232,14107,14707, 15085,15320,15484,15625,15715,15662,15365,14785,13961,12972, 11922,10883,9888,8936,7997,7032,6029,4979,3884,2750, 1587,385,-871,-2185,-3527,-4837,-6020,-7014,-7801,-8378, -8764,-8989,-9106,-9173,-9246,-9359,-9543,-9803,-10110,-10402, -10640,-10821,-10978,-11144,-11317,-11488,-11612,-11639,-11516,-11214, -10734,-10112,-9407,-8661,-7929,-7269,-6731,-6321,-6006,-5735, -5425,-4984,-4356,-3537,-2575,-1533,-476,555,1539,2475, 3343,4115,4769,5334,5891,6550,7396,8461,9704,11006, 12212,13192,13908,14422,14832,15205,15547,15809,15901,15761, 15356,14704,13867,12929,11956,10985,10030,9081,8127,7150, 6138,5103,4038,2923,1739,483,-840,-2200,-3557,-4842, -5990,-6953,-7713,-8276,-8654,-8867,-8964,-9030,-9139,-9325, -9573,-9848,-10108,-10327,-10507,-10665,-10839,-11047,-11278,-11497, -11639,-11647,-11486,-11139,-10628,-9985,-9260,-8523,-7824,-7230, -6769,-6440,-6187,-5934,-5592,-5083,-4379,-3520,-2570,-1591, -595,413,1422,2390,3247,3939,4480,4966,5537,6316, 7352,8575,9870,11098,12151,12991,13661,14229,14758,15254, 15676,15946,15987,15764,15304,14639,13831,12948,12035,11111, 10166,9203,8231,7255,6272,5272,4222,3099,1878,568, -806,-2183,-3529,-4795,-5941,-6910,-7664,-8187,-8508,-8694, -8819,-8955,-9141,-9379,-9645,-9890,-10097,-10261,-10415,-10593, -10814,-11073,-11328,-11537,-11652,-11634,-11453,-11092,-10550,-9868, -9124,-8403,-7768,-7260,-6899,-6642,-6407,-6099,-5662,-5077, -4368,-3563,-2680,-1710,-668,404,1425,2320,3041,3598, 4073,4608,5326,6293,7465,8724,9936,11017,11948,12756, 13482,14161,14796,15365,15802,16028,16000,15724,15238,14595, 13840,13009,12129,11215,10275,9322,8375,7433,6480,5474, 4387,3212,1952,626,-741,-2128,-3499,-4790,-5934,-6870, -7564,-8022,-8305,-8516,-8731,-8972,-9233,-9481,-9705,-9889, -10045,-10204,-10383,-10592,-10840,-11114,-11390,-11616,-11729,-11683, -11461,-11052,-10472,-9760,-9013,-8340,-7802,-7405,-7107,-6844, -6552,-6178,-5710,-5147,-4482,-3700,-2787,-1737,-605,492, 1433,2151,2681,3133,3667,4381,5303,6389,7571,8754, 9853,10835,11722,12556,13368,14143,14842,15420,15826,16009, 15949,15664,15196,14584,13859,13040,12155,11237,10321,9421, 8527,7610,6643,5608,4501,3321,2064,728,-672,-2113, -3526,-4829,-5934,-6793,-7408,-7836,-8158,-8445,-8733,-9025, -9296,-9527,-9709,-9851,-9979,-10131,-10327,-10569,-10848,-11146, -11438,-11674,-11794,-11734,-11447,-10957,-10311,-9603,-8933,-8371, -7940,-7597,-7274,-6941,-6594,-6235,-5832,-5335,-4676,-3815, -2774,-1631,-513,460,1223,1792,2257,2752,3403,4267, 5313,6436,7560,8635,9652,10612,11538,12447,13344,14188, 14908,15452,15799,15945,15885,15634,15200,14601,13872,13052, 12191,11322,10447,9562,8664,7736,6768,5742,4649,3471, 2195,808,-665,-2152,-3560,-4796,-5811,-6593,-7184,-7639, -8024,-8388,-8723,-9016,-9263,-9463,-9620,-9753,-9891,-10059, -10266,-10514,-10811,-11150,-11494,-11752,-11839,-11688,-11295,-10728, -10088,-9472,-8921,-8443,-8017,-7623,-7252,-6923,-6652,-6384, -6032,-5490,-4716,-3727,-2602,-1476,-477,317,914,1404, 1905,2526,3322,4281,5341,6422,7470,8469,9451,10442, 11448,12440,13375,14215,14911,15437,15777,15932,15887,15641, 15202,14614,13909,13131,12313,11480,10625,9738,8828,7910, 6974,5985,4891,3658,2290,825,-685,-2162,-3518,-4669, -5612,-6370,-6986,-7491,-7924,-8313,-8664,-8954,-9180,-9357, -9503,-9634,-9764,-9916,-10131,-10437,-10823,-11240,-11599,-11807, -11781,-11513,-11051,-10501,-9950,-9426,-8923,-8422,-7940,-7519, -7198,-6978,-6818,-6606,-6211,-5548,-4627,-3543,-2424,-1410, -579,63,572,1056,1630,2371,3274,4271,5283,6280, 7269,8265,9277,10308,11352,12368,13310,14144,14844,15380, 15734,15885,15813,15534,15084,14517,13863,13137,12345,11496, 10619,9739,8879,8028,7139,6151,5018,3718,2275,758, -747,-2169,-3456,-4561,-5479,-6248,-6904,-7462,-7936,-8340, -8692,-8996,-9239,-9402,-9495,-9560,-9645,-9813,-10099,-10511, -10995,-11442,-11741,-11824,-11690,-11385,-10975,-10513,-10017,-9483, -8913,-8357,-7885,-7556,-7384,-7295,-7169,-6878,-6337,-5538, -4538,-3463,-2430,-1554,-860,-302,213,779,1461,2271, 3182,4135,5094,6058,7045,8067,9118,10180,11231,12246, 13199,14070,14812,15367,15700,15813,15719,15444,15028,14494, 13852,13118,12312,11468,10622,9808,9022,8218,7328,6288, 5073,3697,2209,684,-792,-2154,-3380,-4462,-5391,-6169, -6824,-7390,-7894,-8347,-8742,-9064,-9291,-9402,-9419,-9429, -9538,-9817,-10247,-10741,-11199,-11540,-11718,-11732,-11604,-11361, -11018,-10574,-10028,-9404,-8784,-8260,-7904,-7728,-7676,-7625, -7439,-7008,-6311,-5399,-4387,-3396,-2518,-1777,-1153,-583, -1,653,1398,2219,3102,4020,4970,5947,6952,7974, 9019,10089,11175,12250,13255,14140,14863,15388,15700,15813, 15752,15527,15142,14610,13946,13189,12382,11574,10798,10054, 9323,8534,7603,6478,5171,3738,2244,746,-694,-2036, -3249,-4315,-5224,-5987,-6647,-7254,-7827,-8341,-8755,-9034, -9164,-9180,-9172,-9250,-9492,-9902,-10395,-10864,-11229,-11468, -11604,-11645,-11578,-11372,-11001,-10477,-9844,-9188,-8613,-8199, -7986,-7938,-7942,-7854,-7543,-6956,-6143,-5211,-4272,-3402, -2643,-1981,-1380,-779,-141,547,1289,2092,2964,3894, 4852,5827,6820,7837,8889,9996,11146,12271,13289,14145, 14825,15323,15655,15813,15792,15588,15191,14631,13935,13161, 12384,11653,10967,10285,9553,8720,7734,6563,5231,3794, 2308,825,-609,-1940,-3125,-4137,-5007,-5786,-6528,-7246, -7895,-8409,-8739,-8889,-8923,-8941,-9028,-9250,-9600,-10029, -10460,-10845,-11166,-11426,-11609,-11689,-11623,-11367,-10908,-10286, -9600,-8973,-8507,-8255,-8190,-8208,-8174,-7961,-7508,-6827, -6000,-5133,-4295,-3512,-2794,-2145,-1548,-954,-312,388, 1149,1971,2854,3773,4692,5622,6598,7651,8765,9924, 11095,12213,13210,14039,14697,15209,15581,15782,15775,15542, 15101,14503,13806,13080,12382,11726,11094,10427,9678,8801, 7775,6592,5255,3800,2287,797,-592,-1841,-2948,-3927, -4835,-5716,-6582,-7383,-8020,-8428,-8624,-8698,-8748,-8859, -9067,-9363,-9721,-10103,-10473,-10821,-11157,-11477,-11728,-11829, -11707,-11336,-10754,-10066,-9402,-8884,-8574,-8458,-8463,-8455, -8315,-7972,-7423,-6724,-5944,-5149,-4378,-3639,-2942,-2301, -1714,-1127,-476,256,1049,1871,2723,3602,4508,5447, 6448,7541,8713,9904,11058,12128,13089,13921,14623,15190, 15594,15790,15741,15459,14990,14395,13743,13093,12472,11860, 11233,10555,9798,8931,7899,6671,5267,3755,2235,804, -472,-1603,-2660,-3705,-4752,-5765,-6681,-7425,-7949,-8259, -8423,-8539,-8676,-8864,-9109,-9392,-9695,-10028,-10394,-10791, -11201,-11581,-11835,-11869,-11627,-11125,-10462,-9788,-9238,-8883, -8729,-8701,-8688,-8584,-8331,-7915,-7352,-6672,-5913,-5132, -4393,-3718,-3096,-2494,-1883,-1241,-557,179,955,1752, 2570,3417,4328,5308,6366,7502,8683,9860,10984,12029, 12994,13869,14634,15243,15642,15788,15677,15359,14901,14357, 13770,13175,12588,12001,11410,10769,10039,9148,8044,6711, 5224,3707,2277,983,-199,-1319,-2454,-3620,-4771,-5821, -6688,-7330,-7761,-8047,-8257,-8451,-8656,-8869,-9090,-9322, -9583,-9918,-10352,-10859,-11356,-11740,-11908,-11792,-11399,-10805, -10162,-9610,-9222,-8995,-8890,-8844,-8791,-8645,-8355,-7900, -7309,-6624,-5883,-5140,-4448,-3824,-3246,-2660,-2026,-1344, -624,97,814,1549,2335,3197,4149,5190,6300,7455, 8613,9752,10860,11938,12971,13915,14700,15280,15620,15714, 15591,15293,14865,14351,13788,13213,12668,12161,11651,11062, 10303,9300,8056,6650,5186,3765,2446,1223,41,-1166, -2421,-3681,-4847,-5836,-6610,-7185,-7608,-7941,-8231,-8489, -8704,-8867,-9016,-9205,-9493,-9919,-10475,-11082,-11604,-11910, -11920,-11645,-11167,-10592,-10034,-9584,-9287,-9125,-9045,-8990, -8894,-8695,-8353,-7865,-7265,-6601,-5920,-5251,-4620,-4020, -3418,-2788,-2123,-1427,-732,-51,620,1321,2102,2996, 4002,5080,6189,7312,8443,9585,10735,11876,12966,13926, 14683,15205,15506,15609,15517,15238,14798,14261,13723,13235, 12815,12407,11918,11261,10371,9254,7967,6607,5247,3937, 2673,1426,154,-1158,-2480,-3741,-4851,-5755,-6461,-7028, -7508,-7920,-8257,-8503,-8666,-8767,-8870,-9082,-9478,-10052, -10706,-11304,-11724,-11885,-11771,-11426,-10934,-10399,-9920,-9557, -9331,-9220,-9169,-9113,-8988,-8730,-8320,-7788,-7192,-6579, -5971,-5376,-4776,-4168,-3528,-2849,-2153,-1481,-846,-227, 424,1154,1985,2916,3929,4990,6062,7152,8289,9490, 10712,11881,12946,13868,14617,15160,15479,15565,15432,15104, 14644,14151,13720,13372,13065,12686,12128,11346,10346,9184, 7943,6690,5448,4196,2907,1571,195,-1177,-2493,-3675, -4690,-5539,-6266,-6914,-7481,-7932,-8226,-8364,-8416,-8490, -8676,-9029,-9565,-10220,-10874,-11407,-11720,-11772,-11570,-11186, -10709,-10227,-9818,-9530,-9382,-9328,-9297,-9208,-9021,-8702, -8252,-7712,-7150,-6606,-6069,-5503,-4890,-4236,-3558,-2880, -2224,-1610,-1019,-413,263,1035,1894,2810,3776,4790, 5876,7024,8224,9454,10668,11821,12881,13824,14615,15192, 15491,15500,15275,14904,14501,14148,13882,13645,13348,12888, 12214,11332,10299,9191,8053,6894,5691,4422,3069,1646, 213,-1151,-2392,-3494,-4475,-5362,-6178,-6901,-7481,-7867, -8060,-8121,-8148,-8260,-8550,-9030,-9658,-10334,-10956,-11419, -11648,-11626,-11375,-10962,-10504,-10087,-9774,-9571,-9474,-9429, -9375,-9228,-8970,-8604,-8156,-7660,-7153,-6650,-6130,-5553, -4905,-4226,-3565,-2950,-2375,-1800,-1190,-538,164,913, 1719,2593,3552,4593,5721,6901,8104,9305,10508,11698, 12838,13848,14644,15151,15337,15247,14989,14689,14435,14247, 14087,13870,13506,12940,12182,11274,10288,9269,8219,7096, 5859,4499,3066,1621,241,-1036,-2216,-3332,-4397,-5388, -6265,-6973,-7464,-7737,-7851,-7913,-8018,-8246,-8633,-9184, -9849,-10525,-11101,-11483,-11626,-11527,-11226,-10810,-10390,-10048, -9821,-9709,-9655,-9591,-9466,-9248,-8936,-8564,-8164,-7749, -7295,-6777,-6189,-5549,-4899,-4267,-3671,-3108,-2546,-1947, -1311,-660,-2,695,1485,2391,3401,4475,5600,6754, 7941,9168,10440,11725,12934,13940,14642,15011,15095,14984, 14796,14628,14519,14434,14289,14009,13549,12908,12133,11287, 10405,9465,8424,7229,5891,4473,3048,1682,396,-826, -2034,-3246,-4421,-5476,-6336,-6957,-7354,-7552,-7633,-7716, -7904,-8254,-8762,-9389,-10077,-10732,-11241,-11522,-11554,-11376, -11050,-10664,-10307,-10048,-9900,-9827,-9761,-9643,-9445,-9184, -8888,-8571,-8222,-7816,-7329,-6765,-6153,-5541,-4953,-4370, -3781,-3187,-2595,-2002,-1405,-797,-153,561,1382,2326, 3344,4392,5458,6588,7825,9166,10556,11908,13097,14009, 14581,14847,14902,14860,14801,14774,14761,14696,14488,14104, 13564,12923,12234,11493,10664,9694,8574,7319,5964,4575, 3223,1927,661,-613,-1904,-3194,-4413,-5465,-6273,-6816, -7131,-7288,-7379,-7512,-7772,-8217,-8821,-9518,-10210,-10804, -11220,-11405,-11346,-11110,-10792,-10483,-10229,-10058,-9942,-9842, -9717,-9549,-9346,-9125,-8884,-8592,-8225,-7775,-7264,-6716, -6156,-5591,-5018,-4426,-3815,-3208,-2632,-2093,-1554,-956, -267,509,1350,2248,3200,4198,5270,6457,7789,9234, 10690,12034,13132,13905,14362,14587,14711,14805,14891,14948, 14931,14793,14506,14086,13581,13023,12405,11681,10805,9765, 8596,7345,6053,4755,3466,2174,850,-516,-1895,-3227, -4431,-5425,-6158,-6626,-6889,-7032,-7157,-7361,-7715,-8243, -8914,-9647,-10333,-10860,-11163,-11233,-11113,-10894,-10663,-10474, -10303,-10133,-9966,-9810,-9675,-9545,-9396,-9209,-8955,-8627, -8225,-7778,-7298,-6800,-6276,-5714,-5106,-4485,-3892,-3346, -2832,-2311,-1736,-1086,-372,389,1171,1981,2859,3846, 4992,6317,7791,9326,10781,12019,12960,13608,14022,14313, 14556,14774,14932,14981,14896,14696,14403,14044,13629,13130, 12514,11742,10804,9730,8563,7354,6128,4884,3610,2281, 893,-540,-1973,-3327,-4502,-5426,-6070,-6462,-6672,-6807, -6976,-7267,-7727,-8361,-9097,-9837,-10463,-10887,-11081,-11075, -10964,-10812,-10648,-10486,-10304,-10108,-9927,-9787,-9684,-9584, -9438,-9222,-8933,-8580,-8187,-7778,-7335,-6830,-6257,-5654, -5063,-4509,-3994,-3499,-2986,-2423,-1788,-1097,-392,297, 980,1710,2563,3614,4888,6354,7920,9446,10790,11864, 12683,13316,13829,14244,14567,14795,14928,14939,14843,14666, 14442,14162,13793,13282,12608,11786,10839,9783,8661,7504, 6329,5106,3805,2415,955,-526,-1965,-3296,-4425,-5283, -5861,-6200,-6384,-6538,-6779,-7196,-7791,-8519,-9271,-9943, -10450,-10785,-10944,-10967,-10895,-10770,-10604,-10411,-10204,-10030, -9900,-9817,-9718,-9587,-9374,-9138,-8850,-8616,-8432,-7997, -7525,-6971,-6398,-5816,-5286,-4805,-4348,-3847,-3283,-2644, -1970,-1295,-663,-67,533,1247,2183,3398,4837,6397, 7941,9363,10585,11596,12432,13157,13780,14281,14632,14847, 14949,14974,14941,14855,14704,14467,14096,13569,12872,12028, 11075,10065,9022,7960,6825,5584,4220,2756,1236,-278, -1721,-3026,-4110,-4903,-5402,-5683,-5875,-6125,-6535,-7124, -7829,-8569,-9267,-9865,-10335,-10662,-10859,-10930,-10887,-10755, -10577,-10408,-10279,-10182,-10094,-9984,-9848,-9699,-9527,-9335, -9115,-8836,-8480,-8028,-7500,-6942,-6401,-5899,-5438,-4998, -4536,-3990,-3344,-2646,-1983,-1411,-925,-444,152,969, 2060,3404,4910,6447,7908,9231,10395,11423,12327,13112, 13755,14237,14559,14756,14875,14944,14978,14951,14832,14585, 14171,13597,12870,12033,11125,10179,9194,8149,7001,5727, 4321,2804,1215,-364,-1842,-3108,-4075,-4725,-5120,-5390, -5672,-6059,-6597,-7264,-7981,-8666,-9296,-9864,-10336,-10674, -10844,-10866,-10784,-10649,-10503,-10377,-10280,-10198,-10088,-9946, -9790,-9649,-9531,-9393,-9197,-8891,-8474,-7964,-7413,-6889, -6428,-6023,-5619,-5151,-4583,-3927,-3240,-2598,-2059,-1628, -1237,-769,-96,852,2070,3464,4932,6396,7798,9102, 10287,11339,12259,13045,13671,14134,14447,14659,14814,14951, 15045,15053,14927,14635,14183,13588,12883,12099,11255,10361, 9407,8367,7209,5898,4420,2805,1143,-453,-1866,-3004, -3832,-4381,-4764,-5115,-5532,-6046,-6643,-7303,-7997,-8687, -9332,-9892,-10326,-10602,-10720,-10720,-10653,-10561,-10462,-10361, -10255,-10137,-10011,-9882,-9765,-9664,-9563,-9418,-9174,-8812, -8343,-7821,-7319,-6893,-6534,-6170,-5721,-5146,-4478,-3782, -3152,-2648,-2270,-1944,-1543,-970,-176,859,2096,3455, 4860,6253,7627,8950,10176,11258,12174,12917,13501,13943, 14288,14571,14813,15008,15116,15092,14916,14593,14143,13574, 12896,12140,11334,10495,9595,8593,7423,6038,4439,2708, 999,-523,-1772,-2742,-3480,-4053,-4529,-4981,-5461,-6001, -6613,-7293,-8022,-8747,-9399,-9919,-10277,-10488,-10586,-10613, -10593,-10544,-10468,-10367,-10237,-10092,-9968,-9885,-9838,-9786, -9677,-9461,-9120,-8681,-8205,-7772,-7407,-7088,-6755,-6324, -5749,-5061,-4364,-3761,-3281,-2911,-2595,-2257,-1800,-1147, -280,787,2024,3359,4740,6127,7504,8841,10079,11155, 12030,12715,13267,13739,14152,14513,14805,15007,15110,15084, 14905,14569,14095,13513,12851,12138,11405,10657,9827,8816, 7546,6016,4317,2587,966,-439,-1587,-2510,-3255,-3869, -4383,-4850,-5346,-5930,-6608,-7347,-8102,-8813,-9424,-9887, -10200,-10397,-10514,-10574,-10583,-10536,-10434,-10289,-10135,-10010, -9948,-9946,-9955,-9903,-9719,-9392,-8974,-8547,-8177,-7878, -7613,-7310,-6894,-6341,-5678,-4989,-4367,-3877,-3510,-3213, -2900,-2507,-1983,-1290,-409,659,1878,3208,4611,6056, 7481,8813,9990,10998,11836,12535,13127,13644,14101,14494, 14808,15023,15126,15108,14930,14566,14047,13448,12850,12268, 11670,10974,10086,8947,7538,5925,4220,2560,1035,-294, -1400,-2301,-3035,-3647,-4174,-4683,-5232,-5883,-6630,-7412, -8169,-8838,-9390,-9807,-10110,-10330,-10492,-10579,-10583,-10494, -10338,-10169,-10044,-10002,-10031,-10074,-10042,-9879,-9581,-9200, -8819,-8500,-8260,-8044,-7767,-7366,-6835,-6209,-5549,-4928, -4408,-4008,-3701,-3425,-3097,-2658,-2086,-1375,-509,539, 1769,3136,4588,6060,7476,8770,9894,10850,11676,12410, 13057,13611,14085,14502,14863,15133,15255,15186,14921,14504, 14005,13507,13047,12589,12034,11283,10272,9011,7535,5912, 4224,2578,1079,-206,-1253,-2091,-2779,-3382,-3952,-4535, -5183,-5909,-6693,-7465,-8174,-8790,-9303,-9724,-10065,-10331, -10508,-10568,-10503,-10350,-10178,-10072,-10063,-10128,-10194,-10177, -10026,-9746,-9396,-9059,-8795,-8603,-8419,-8175,-7822,-7336, -6730,-6065,-5436,-4905,-4491,-4153,-3847,-3532,-3179,-2748, -2204,-1517,-650,429,1705,3125,4597,6042,7412,8665, 9782,10748,11566,12274,12913,13515,14078,14586,14990,15234, 15277,15110,14785,14389,14010,13662,13306,12862,12249,11415, 10338,9030,7536,5914,4244,2617,1142,-105,-1101,-1876, -2519,-3125,-3754,-4431,-5165,-5946,-6735,-7466,-8114,-8693, -9225,-9703,-10097,-10365,-10486,-10461,-10333,-10184,-10097,-10109, -10196,-10278,-10273,-10144,-9903,-9608,-9317,-9078,-8910,-8781, -8598,-8280,-7818,-7255,-6651,-6050,-5494,-5023,-4637,-4310, -3998,-3683,-3351,-2952,-2428,-1725,-807,325,1632,3051, 4508,5939,7293,8533,9622,10551,11338,12053,12749,13446, 14105,14650,15001,15137,15076,14873,14595,14315,14054,13795, 13473,13011,12353,11465,10342,9002,7482,5852,4199,2623, 1220,50,-884,-1636,-2293,-2946,-3653,-4408,-5184,-5951, -6693,-7388,-8042,-8676,-9280,-9797,-10156,-10316,-10313,-10227, -10137,-10103,-10141,-10229,-10314,-10320,-10204,-9979,-9705,-9459, -9281,-9159,-9043,-8888,-8632,-8238,-7723,-7154,-6594,-6066, -5572,-5117,-4718,-4384,-4106,-3850,-3561,-3168,-2608,-1852, -893,263,1582,3015,4486,5928,7265,8439,9441,10313, 11120,11935,12767,13554,14213,14688,14945,15007,14923,14756, 14571,14401,14228,14003,13671,13193,12516,11605,10443,9063, 7510,5860,4218,2699,1391,323,-553,-1315,-2046,-2799, -3588,-4370,-5113,-5818,-6526,-7255,-7997,-8704,-9315,-9771, -10027,-10097,-10052,-9996,-10002,-10079,-10199,-10290,-10294,-10187, -9986,-9747,-9530,-9377,-9288,-9205,-9077,-8860,-8538,-8114, -7620,-7090,-6555,-6031,-5531,-5085,-4723,-4453,-4239,-4018, -3726,-3305,-2720,-1960,-1012,150,1520,3016,4515,5900, 7124,8198,9164,10082,10992,11918,12824,13624,14238,14634, 14830,14875,14814,14707,14595,14489,14354,14151,13830,13354, 12665,11717,10495,9044,7446,5804,4220,2795,1590,583, -295,-1127,-1952,-2757,-3532,-4263,-4974,-5702,-6488,-7310, -8119,-8826,-9365,-9707,-9870,-9913,-9922,-9969,-10078,-10221, -10334,-10358,-10272,-10099,-9893,-9711,-9592,-9521,-9450,-9335, -9148,-8882,-8548,-8152,-7692,-7163,-6593,-6034,-5544,-5164, -4884,-4656,-4445,-4213,-3918,-3513,-2953,-2177,-1162,86, 1500,2978,4395,5674,6812,7861,8885,9913,10933,11918, 12821,13575,14133,14483,14658,14712,14693,14650,14596,14538, 14438,14267,13974,13498,12777,11765,10456,8925,7299,5718, 4264,2966,1800,748,-213,-1100,-1927,-2694,-3413,-4124, -4875,-5702,-6601,-7494,-8294,-8924,-9359,-9613,-9741,-9818, -9918,-10070,-10244,-10370,-10408,-10342,-10198,-10031,-9885,-9784, -9717,-9650,-9555,-9405,-9205,-8950,-8614,-8188,-7679,-7118, -6560,-6049,-5627,-5282,-5010,-4781,-4587,-4391,-4135,-3737, -3131,-2274,-1163,144,1549,2955,4271,5471,6590,7681, 8782,9896,10979,11983,12850,13550,14064,14401,14578,14647, 14652,14639,14623,14612,14585,14490,14238,13731,12904,11760, 10364,8836,7292,5824,4463,3197,2005,897,-107,-979, -1744,-2445,-3156,-3922,-4773,-5703,-6667,-7570,-8296,-8803, -9136,-9365,-9546,-9722,-9924,-10127,-10280,-10332,-10286,-10178, -10056,-9946,-9858,-9779,-9704,-9622,-9527,-9396,-9213,-8944, -8571,-8101,-7571,-7023,-6501,-6034,-5631,-5289,-5022,-4841, -4725,-4600,-4363,-3911,-3199,-2233,-1077,184,1489,2792, 4045,5237,6386,7543,8707,9864,10962,11955,12793,13455, 13949,14290,14484,14558,14558,14566,14617,14715,14783,14724, 14421,13795,12840,11626,10252,8813,7361,5947,4587,3289, 2066,956,-1,-793,-1495,-2190,-2967,-3866,-4845,-5846, -6797,-7612,-8228,-8644,-8945,-9215,-9501,-9778,-10011,-10173, -10256,-10260,-10210,-10135,-10041,-9938,-9844,-9770,-9723,-9673, -9600,-9463,-9244,-8926,-8524,-8060,-7566,-7044,-6524,-6032, -5623,-5318,-5136,-5051,-5001,-4878,-4577,-4021,-3213,-2197, -1057,140,1344,2552,3754,4964,6180,7409,8627,9800, 10874,11839,12673,13348,13835,14135,14284,14354,14417,14539, 14727,14926,15019,14902,14485,13755,12748,11550,10241,8880, 7469,6044,4638,3313,2108,1072,212,-512,-1207,-1969, -2875,-3898,-4965,-5959,-6820,-7511,-8052,-8482,-8862,-9210, -9540,-9808,-10004,-10125,-10196,-10208,-10173,-10084,-9979,-9880, -9812,-9771,-9747,-9703,-9607,-9431,-9187,-8876,-8507,-8056, -7539,-6981,-6431,-5938,-5565,-5348,-5287,-5290,-5251,-5063, -4670,-4021,-3164,-2157,-1083,25,1160,2348,3571,4832, 6092,7349,8567,9734,10816,11802,12632,13268,13687,13927, 14057,14179,14367,14647,14952,15178,15210,14988,14481,13729, 12756,11621,10353,8991,7555,6098,4676,3378,2251,1327, 552,-155,-922,-1822,-2865,-3952,-4989,-5881,-6641,-7280, -7848,-8345,-8790,-9166,-9482,-9732,-9924,-10047,-10121,-10125, -10064,-9947,-9847,-9793,-9788,-9784,-9761,-9680,-9554,-9367, -9139,-8852,-8504,-8039,-7472,-6854,-6300,-5865,-5599,-5484, -5506,-5544,-5484,-5207,-4705,-3998,-3151,-2203,-1210,-161, 944,2155,3417,4696,5950,7217,8476,9708,10833,11808, 12562,13088,13410,13638,13848,14116,14440,14812,15134,15325, 15284,15003,14471,13739,12803,11706,10434,9035,7544,6068, 4680,3482,2475,1647,869,69,-843,-1849,-2938,-3985, -4950,-5782,-6547,-7220,-7821,-8314,-8754,-9128,-9475,-9736, -9942,-10054,-10107,-10074,-10014,-9921,-9873,-9845,-9843,-9808, -9761,-9674,-9595,-9450,-9253,-8931,-8513,-7966,-7366,-6732, -6218,-5863,-5736,-5736,-5817,-5803,-5657,-5278,-4744,-4042, -3263,-2357,-1385,-313,790,1992,3212,4498,5777,7127, 8445,9746,10862,11802,12442,12901,13184,13488,13793,14214, 14621,15055,15321,15468,15342,15072,14528,13870,12923,11842, 10463,9025,7433,6052,4741,3775,2791,2036,1042,242, 50,132,171,160,162,206,287,532,791,818, 651,505,472,400,416,924,1533,1175,-412,-2186, -2676,-1363,511,997,-217,-2259,-4175,-4860,-3738,-516, 2280,2327,145,-2670,-4701,-6682,-8155,-7712,-5325,-3001, -2984,-4489,-5044,-4652,-5919,-7672,-7547,-5667,-3104,-574, 1367,2966,1928,-2358,-5546,-5653,-4020,-1746,1395,4585, 5835,4639,3623,3701,4126,4760,6730,8930,8853,7876, 8396,9867,10904,11297,11548,11378,10364,8489,6998,6790, 6271,5279,3582,1546,-6,-386,334,609,126,-788, -2317,-5439,-7974,-7925,-5701,-3513,-3111,-3232,-3436,-5655, -9133,-10523,-9954,-8426,-6598,-4531,-2795,-3396,-5965,-6831, -6259,-7114,-9162,-8598,-4012,615,2593,2543,1718,-337, -4651,-8167,-7834,-5091,-975,3250,5369,4300,2404,2461, 3421,4280,4703,5676,7776,8757,8560,9490,11283,12895, 12854,11479,9650,8537,10164,12471,12212,9138,5770,3430, 2157,1307,1391,3498,4064,1227,-2542,-5862,-7532,-7304, -5595,-2874,-1235,-1857,-3639,-5161,-7213,-10052,-10629,-8430, -6028,-4986,-5307,-5190,-4865,-6237,-8367,-9541,-8594,-6160, -1795,2552,3643,2618,1370,-1052,-5162,-8928,-9615,-6377, -2921,-1914,-1947,-1416,-282,381,648,1902,3502,5298, 7015,7036,7110,9019,11651,13606,12802,10144,9578,10754, 11996,12532,11729,9620,7420,5713,4906,5039,4719,4430, 4514,3069,-1369,-5870,-7256,-6039,-5207,-5425,-5309,-5058, -6652,-10082,-12429,-12461,-12034,-11329,-9615,-8644,-8072,-7446, -7429,-8645,-10764,-11682,-9940,-6832,-3461,336,3574,5020, 2811,-1372,-4087,-5159,-4640,-2148,-111,841,1457,1720, 2391,3104,4075,6001,7521,6905,5626,6174,8392,10799, 12436,12759,12433,11413,10414,11108,12690,12534,9999,7621, 6018,4196,2028,1533,2908,3792,2444,-313,-2579,-4894, -6303,-5225,-3713,-3568,-3905,-4460,-5427,-7090,-8716,-9337, -10079,-10789,-9532,-6614,-4115,-4039,-5762,-6462,-7332,-9297, -9658,-6981,-2052,2729,4513,3242,703,-2020,-4253,-5722, -6409,-5643,-3166,-2067,-2751,-3493,-2487,109,1981,2269, 1839,2135,3211,4427,5967,7951,8870,8687,9032,10211, 11519,11997,12343,13577,12735,9137,6796,6540,6867,6690, 6287,6493,5475,2279,-1040,-3777,-4767,-3829,-2670,-2165, -3157,-4847,-5395,-5849,-8317,-11046,-12111,-11311,-9721,-8342, -7540,-6881,-6652,-7544,-9576,-11865,-11770,-7785,-2239,1126, 1699,1251,900,-622,-3201,-4768,-3611,-692,214,-1333, -2445,-1912,-284,1510,2306,2362,1650,1388,3424,5689, 5691,5368,6182,6846,6459,5759,6978,8913,9997,10372, 9466,7399,5600,5166,6094,6696,6185,5689,5019,1827, -2240,-3531,-2429,-1140,-1405,-2101,-1777,-1226,-1952,-3749, -6163,-8235,-9006,-8900,-8015,-6683,-4784,-3406,-4580,-7421, -9707,-10463,-9088,-6503,-3324,702,3168,2838,1069,-800, -1292,-957,-804,282,469,-1645,-3164,-1654,1332,2316, 1145,869,1680,2191,3124,4702,6099,6339,5909,5682, 6066,6326,7065,9053,10494,10236,8685,6358,4260,3897, 5509,7550,7638,5784,3273,601,-1720,-3304,-3597,-2862, -2533,-2540,-2362,-2927,-3826,-4811,-6650,-8962,-10973,-11704, -9567,-6873,-5660,-5604,-6777,-8054,-9877,-12223,-12199,-8674, -4135,-867,453,360,-823,-1887,-1259,438,669,-575, -1715,-2226,-1845,-839,636,2020,2046,1250,1803,3268, 4369,5260,5986,6287,5932,5686,6377,7434,8441,10260, 11968,12185,9698,6094,4788,5865,7590,8555,7592,5640, 4079,1974,-316,-2319,-3709,-3399,-2817,-3262,-3379,-2911, -2099,-2636,-5885,-9727,-11184,-10106,-8323,-6280,-4427,-3823, -5524,-7858,-9606,-11099,-10968,-7078,-1575,1352,608,-1221, -501,1590,2223,1624,433,-1117,-2322,-2700,-1911,-788, -58,519,166,-600,-477,602,2411,3583,3273,3056, 2676,2095,2802,4763,7404,10106,11062,9851,7244,4895, 5508,7503,8509,8275,7613,6852,5619,3122,391,-909, -1681,-3080,-4467,-4055,-2600,-2507,-3590,-4656,-6986,-10541, -12330,-11296,-8776,-6816,-6380,-6006,-6496,-9347,-12503,-13249, -10402,-6016,-2952,-1891,-2051,-1596,958,3305,3836,3317, 1982,1240,858,444,1206,2536,3044,3008,2507,2078, 2262,2833,3851,4888,4919,4268,3007,1653,2484,5386, 8463,9943,9634,8395,7032,6143,6112,6966,8356,9184, 7835,5311,4247,3788,1779,-373,-1966,-2802,-3175,-3388, -2239,-988,-1544,-3707,-6226,-8230,-10011,-11137,-9525,-6223, -4253,-5013,-8042,-11356,-12428,-11872,-10015,-7649,-6592,-5954, -4872,-3132,-629,1602,2485,2229,982,217,477,822, 1271,1670,1820,2012,2400,2178,1934,2990,5554,7548, 7031,4785,2637,2555,5040,7499,8531,9725,10654,9622, 7635,6304,6629,7974,8385,8332,7703,6446,4956,3264, 1765,-498,-3425,-4512,-3551,-2622,-1966,-2124,-2744,-3598, -5931,-9524,-11882,-11154,-7340,-3478,-3294,-6122,-9402,-10900, -10732,-10679,-10389,-9369,-8356,-7502,-6129,-3757,-878,1635, 2547,1656,731,381,296,-83,-71,732,1241,1381, 900,-462,147,3128,5503,5707,3983,2083,783,836, 2862,5442,7016,7861,8283,8556,8033,6424,6159,7739, 8317,7545,6841,6802,7395,6341,3132,-28,-1799,-2085, -1970,-1983,-1436,-327,199,-1629,-6272,-10980,-12184,-9210, -5514,-3837,-5008,-7647,-9196,-9700,-10166,-10574,-10411,-9690, -9367,-8725,-6590,-4137,-1519,664,1478,1738,1898,1506, 604,278,1645,2953,2360,1258,374,376,1802,3505, 4680,4986,3128,726,320,1288,3152,5231,6790,7795, 8006,7675,7582,7856,7793,7150,6454,6585,7385,7800, 7077,5519,3444,1452,-458,-2667,-3702,-2251,385,1916, 360,-3499,-7892,-10560,-10428,-9045,-7215,-5837,-6499,-8329, -9208,-9166,-9121,-9899,-10942,-11302,-10653,-8624,-6338,-4664, -2281,979,3039,3398,2387,1539,2796,4494,5163,5021, 3907,2467,1850,2421,3726,5278,6381,6486,5026,2089, 342,1200,3479,5355,5800,6069,7460,8697,9076,8782, 7676,6844,7022,7617,7459,6680,6681,6864,5600,2640, -1279,-3752,-2774,-214,1567,1433,-832,-4220,-7808,-9665, -9110,-8091,-7127,-6727,-8210,-9520,-9419,-9657,-10589,-11911, -12706,-11821,-10804,-10381,-9000,-6113,-2869,-211,1161,1158, 862,1423,3391,5540,5995,5109,3991,3114,2936,3151, 4096,5874,7096,6593,4731,2841,2168,3013,4509,5179, 4805,5710,7826,9054,9099,8104,7560,8270,8447,7202, 5897,6374,8437,8630,5859,1767,-2034,-3219,-1281,815, 1451,519,-2159,-5152,-7158,-8481,-8828,-8447,-8494,-8644, -8645,-9095,-9823,-10460,-11253,-12053,-12830,-13194,-12710,-11787, -9899,-6868,-4104,-2477,-2138,-2320,-1534,6,1777,3312, 4102,3824,2260,1359,1902,2803,4360,5744,5857,5049, 3750,2839,2786,3084,3280,3496,4561,6502,7361,7077, 7614,8571,8895,8780,7559,6139,6684,8302,9388,8570, 5220,1036,-1702,-2234,-749,1401,1425,-785,-3210,-4709, -5676,-7351,-8747,-8563,-7969,-7754,-8035,-8736,-9109,-9423, -9938,-10826,-12145,-13087,-13272,-11543,-8470,-6061,-4067,-2635, -2196,-1972,-1363,134,2476,4538,5162,4193,2447,1924, 3024,4525,5886,5983,5152,5676,6434,5454,4049,3724, 4711,6355,7213,6879,7036,8474,9796,10245,9409,8037, 7580,7872,8816,10235,10779,9158,4986,729,-999,-665, 230,577,-5,-1471,-3291,-4856,-6663,-8580,-9888,-10346, -9628,-8916,-9667,-10570,-10358,-10215,-11266,-13214,-15245,-16115, -15458,-13507,-10962,-8969,-7283,-5825,-5321,-4584,-2917,-723, 2279,4913,4747,2851,2343,3501,5100,5855,5528,6196, 8083,8809,7625,5595,4876,6197,7599,7916,7599,8050, 9801,11342,11918,11763,10703,9033,8348,9913,12267,13108, 11800,8914,5612,3093,1409,804,1379,1401,491,-458, -1874,-3861,-6079,-7866,-8568,-8977,-9437,-9395,-9405,-9367, -9103,-9905,-11741,-13648,-15662,-16693,-15536,-13797,-12174,-9933, -8093,-7558,-7636,-6940,-4078,-370,1715,2136,1929,2300, 2994,3128,3161,3634,4874,6327,6695,6001,5195,5116, 5408,5587,6090,6287,6030,6893,9196,11515,12336,10975, 8915,8415,9667,11497,13055,13262,11744,9229,6687,4804, 2905,1247,1164,1626,1077,-355,-2129,-3897,-4875,-6057, -8071,-9103,-9425,-9839,-9400,-8821,-8912,-9963,-11789,-13686, -15749,-17279,-16787,-14306,-11331,-9876,-10358,-10941,-9960,-7307, -4385,-2301,-634,1379,3420,3852,2528,2094,3718,5413, 6155,6374,6296,6341,6304,6145,6477,6540,5669,4914, 5520,7911,10671,11963,11548,9812,7948,8247,10476,12136, 12756,12507,11090,9553,7502,4405,2370,2074,2355,2398, 1682,232,-1516,-3020,-4196,-5783,-7827,-9260,-9420,-8666, -8173,-8267,-8298,-8470,-9796,-12912,-16121,-16794,-14874,-12352, -11264,-12165,-12654,-11123,-9482,-8445,-6902,-4485,-1368,907, 1308,715,211,649,2360,4418,5427,5122,4342,4568, 5913,6310,5404,4352,3056,2841,4829,7434,9627,10559, 9343,7758,7708,8758,10109,11639,13014,13322,12204,10341, 8212,5931,4322,3803,3902,3447,1882,146,-1026,-1960, -3747,-6022,-7372,-8102,-8921,-9291,-9101,-7965,-6596,-7668, -11336,-14880,-16154,-15464,-14516,-14206,-13786,-12783,-12120,-11815, -11228,-9810,-7046,-3946,-1251,1027,1368,263,479,1962, 3623,5024,4812,3952,4335,5774,7232,7505,6169,4145, 3321,4724,7197,9117,10342,10874,10488,9464,8869,9760, 11571,13563,14982,14895,13700,11652,9205,7708,6604,5174, 4340,3803,2913,1768,28,-1963,-3092,-3748,-5231,-7560, -9306,-8836,-6727,-5956,-7172,-9425,-12006,-13691,-14776,-15658, -15268,-14380,-14076,-13591,-13427,-13847,-13242,-11098,-8200,-5066, -2506,-1428,-1553,-1325,-63,1757,3194,3176,2119,1907, 3683,6209,7101,6106,4721,3789,4103,5435,6937,8804, 10238,10378,9907,9211,8556,9344,11860,14350,15583,15262, 13700,12352,11398,9674,7518,5942,5708,5953,4415,1875, 740,621,24,-2265,-6087,-8264,-7574,-6417,-5648,-5524, -6671,-8459,-10432,-12464,-14251,-14920,-14501,-13743,-13067,-13211, -14417,-15459,-14673,-11937,-8746,-6139,-4307,-3483,-2756,-852, 1041,1906,1837,1127,1359,3093,4912,6188,6688,5559, 3859,3392,4033,5340,7096,8634,9767,10026,8915,7805, 7893,9512,12459,14358,14620,14718,14304,12921,10967,8716, 7541,7619,6702,4563,3063,2703,2473,1526,-635,-3850, -6644,-7820,-7656,-6915,-6403,-6616,-7479,-8941,-10793,-13239, -15362,-15608,-14875,-14378,-14195,-15224,-16683,-16609,-14897,-12222, -9728,-8648,-8186,-6132,-3043,-725,417,400,-38,165, 1102,2812,4867,6092,6346,5602,4093,3320,3519,4362, 6676,8951,9343,8577,7673,7589,8707,9964,11140,13366, 15848,16300,14798,13140,12238,11727,10550,8490,6283,5002, 5181,5487,4697,3029,376,-2864,-5027,-6033,-6531,-6083, -5350,-5396,-6210,-8149,-11101,-13562,-14826,-15165,-14474,-13974, -15260,-17167,-17909,-16744,-14244,-12491,-11913,-11059,-9320,-6119, -2569,-869,-593,-877,-1193,-376,1388,3006,4621,6369, 7050,6059,4234,2922,3744,6473,8393,8507,8164,8195, 8006,6981,6230,7225,9838,12852,14399,13694,12799,13044, 12990,12127,10311,7495,5740,5977,6616,6502,5352,3162, 783,-1519,-4214,-5984,-5963,-5345,-4550,-4172,-5154,-7432, -10679,-12891,-12816,-12319,-12798,-14257,-16158,-17168,-16430,-15154, -14259,-13382,-12816,-11876,-9212,-5732,-3030,-1760,-1856,-2128, -1574,-846,63,2114,5059,6969,6273,4414,3765,4200, 5144,6567,7698,8955,9945,9246,7785,7155,7539,8846, 11091,12847,13268,13402,14005,14923,15289,13541,10610,8605, 7857,8127,8517,8076,7023,5107,2482,-43,-2852,-5428, -5887,-4404,-3137,-3352,-5580,-8610,-10071,-10115,-10563,-11556, -12902,-14475,-15504,-15755,-15447,-14942,-15088,-15592,-15060,-13067, -10093,-7346,-5039,-2757,-2151,-3458,-4107,-3076,-695,2198, 3942,4254,4268,4081,3112,2687,3482,5057,7192,8403, 8024,6984,5797,5542,6667,7988,8943,9754,10743,12313, 13882,14453,14233,12977,10396,8405,8258,8690,8889,8742, 7927,6727,4470,390,-3436,-4598,-3516,-1938,-1812,-3384, -5270,-6975,-7840,-8129,-8852,-10138,-12080,-13823,-13870,-13626, -14726,-15887,-15940,-15423,-14853,-13768,-11706,-8151,-4474,-3514, -4653,-5419,-4832,-2855,-584,1245,2980,4081,3948,3031, 1938,1627,3164,5708,7756,8228,6899,5775,6337,7000, 7131,7640,8262,9168,10872,12725,14177,14906,14117,12451, 10946,9644,8877,8641,9150,10223,10075,7935,4183,25, -2338,-2728,-2400,-2053,-2550,-4652,-6773,-6960,-6672,-7696, -9437,-11213,-12225,-12592,-13682,-14837,-15141,-15329,-16145,-17303, -17510,-15372,-11696,-8414,-6407,-5922,-6312,-6300,-5525,-4181, -1899,603,2607,3808,3106,1040,412,1797,3769,5682, 6659,6478,6118,5920,6382,7231,7270,6878,6697,7837, 10503,12725,13680,13923,13808,13228,11846,9633,8327,9586, 11539,11902,10970,8400,4451,1353,249,381,370,-868, -2669,-3474,-3669,-4326,-5425,-6650,-7645,-8726,-10639,-12233, -12498,-12256,-12696,-14551,-17032,-17908,-16734,-14845,-12093,-9254, -7784,-7090,-6926,-7409,-7233,-5694,-2827,234,1552,1253, 291,-468,-10,1396,3206,4963,5522,5031,5081,6146, 7003,7056,6258,5360,6218,8246,9755,11386,13635,15031, 15168,14077,11909,10050,9731,11111,13262,13678,11270,7887, 5264,3972,3135,1574,-126,-995,-1764,-2869,-3859,-4705, -5072,-5427,-7346,-9762,-10998,-11426,-11210,-11301,-13013,-15637, -17548,-17828,-16801,-15481,-13351,-10256,-7772,-6872,-7429,-8084, -7170,-4619,-2074,46,1339,987,113,240,1199,2800, 4279,4318,4069,4994,6078,6458,6485,6323,6059,5678, 5504,6407,8319,10370,12604,14586,14799,13030,10291,8899, 10480,12979,13790,13124,11270,9332,7909,5849,3776,2740, 1782,384,-1120,-2290,-2642,-2819,-3328,-4720,-7219,-9349, -9907,-9604,-9648,-10738,-12912,-15183,-16702,-17731,-17878,-16072, -13201,-10542,-8646,-8340,-9109,-9008,-7715,-5450,-2398,-494, -622,-1223,-733,580,1553,1620,1913,2861,3545,4023, 4790,5494,6036,6055,5296,4854,4569,4505,6427,10017, 13126,14359,13034,10762,9970,10758,11956,12834,13376,13285, 12018,9919,8131,6618,5137,3786,2044,-195,-1713,-2119, -2030,-2237,-3834,-6399,-8037,-8699,-9340,-9512,-9548,-10516, -12425,-15098,-17736,-18792,-17929,-16114,-13673,-11178,-9987,-10657, -11525,-10740,-7869,-4994,-3268,-2177,-1479,-600,509,1171, 1901,2620,2690,3269,4470,5333,5829,6311,7032,7655, 6858,4635,3106,4242,7872,11234,12514,12490,12021,11272, 10892,11178,11889,12927,13726,13297,11983,10478,9037,8174, 7206,4953,2247,707,108,-155,-777,-2318,-4024,-5215, -6508,-7755,-8323,-8333,-8539,-10138,-12866,-15584,-18175,-19828, -19084,-16769,-14489,-13448,-13886,-13963,-12718,-11153,-9391,-7229, -5339,-4008,-2967,-1696,-318,562,959,1547,2623,3802, 4344,4431,5467,7577,8801,7910,5842,3840,3493,5373, 8000,10123,11327,11397,11019,10940,10772,10855,12006,13351, 13503,12688,11591,10934,10572,9248,6769,4300,2630,1906, 1359,540,-38,-1318,-3497,-5143,-6116,-6890,-7173,-7151, -7094,-8087,-11540,-16018,-18658,-18707,-17385,-15998,-15151,-14676, -14465,-14228,-13382,-11847,-10029,-8253,-6697,-4893,-2671,-1368, -1129,-430,1031,2266,2732,2684,3199,5030,7398,8801, 9017,7887,5798,4608,5132,6579,8411,10128,11099,11369, 10874,10488,11188,12443,13603,13774,12953,12740,12900,12204, 11076,9427,7285,5317,3764,2890,2633,1982,660,-735, -2153,-3969,-5828,-6587,-5815,-4818,-5291,-7644,-11245,-14586, -16518,-16895,-16346,-15428,-15089,-15539,-15347,-14022,-12787,-12062, -11021,-9175,-6652,-4655,-3954,-3353,-1911,-336,785,1050, 425,414,2087,4927,7342,8052,7570,6812,5569,4522, 4525,5729,8105,10123,10166,9386,9424,10211,11214,11828, 12109,12439,12785,12889,13011,12858,11578,9313,7049,5681, 4560,3163,2309,2228,1690,-147,-2955,-5461,-6301,-5704, -5077,-4925,-5535,-7797,-11455,-14569,-15876,-15913,-15821,-16389, -16738,-15978,-15166,-14944,-14589,-13663,-11821,-9533,-7720,-6468, -5588,-4029,-1528,149,126,-718,-1311,-218,2405,4675, 6161,7204,7400,6354,4653,3803,4750,6688,8160,8647, 8710,8897,9343,9977,10885,11441,11306,11582,12804,13927, 13906,12916,11545,10210,8664,6487,4397,3738,4109,3768, 2155,-468,-3300,-5227,-5879,-5289,-3989,-3925,-5720,-8274, -10722,-12608,-14286,-15745,-16308,-16304,-16190,-16060,-16479,-16876, -16058,-14264,-12269,-10603,-9575,-8413,-6176,-3406,-1527,-1009, -1242,-1501,-1427,-716,1229,4106,6608,7374,6503,5386, 4942,4836,5246,6545,7696,7873,7715,8264,9435,10333, 10436,10236,10893,12382,13295,13582,13998,14273,13763,11965, 9503,7659,6566,6016,6151,5963,4293,942,-2474,-3783, -3272,-2743,-2731,-3418,-4736,-6258,-8289,-10870,-13122,-14353, -14631,-14451,-14889,-16101,-16982,-16455,-14546,-12828,-12164,-11557, -9972,-7488,-4991,-3153,-1514,-238,-450,-1899,-2533,-984, 1900,4584,6320,6682,5914,5078,4672,5055,5927,6143, 5976,6431,7356,8138,8378,8446,9214,10158,10600,11023, 11931,13403,14526,14483,13823,12386,9970,7780,7050,7458, 7841,6755,3803,514,-1605,-2306,-2359,-2510,-2934,-3421, -4124,-5612,-8203,-11197,-12980,-13171,-13154,-14259,-16167,-17266, -16633,-15547,-15189,-15015,-14119,-12895,-11681,-9641,-6572,-3622, -1716,-1303,-2060,-2871,-3006,-1624,1297,4132,5355,4964, 4334,4725,5350,5255,4865,4928,5740,6375,6317,6492, 7449,8165,8372,8712,9136,9686,10687,12215,13848,14536, 13349,11003,8892,8035,8330,8689,8225,6523,3872,1423, -197,-1306,-2010,-2185,-1770,-1459,-2557,-5266,-8108,-9657, -10303,-11601,-13259,-14516,-15506,-16046,-16162,-15768,-15039,-14760, -14823,-14304,-12771,-10163,-7217,-4547,-2564,-2097,-3163,-4103, -3397,-1029,1578,2828,3243,3985,4549,4480,4472,4755, 5127,5385,5559,5818,6090,6329,6721,7306,7793,7876, 7609,8122,10030,12532,14265,14132,12392,10444,9441,9514, 9809,9439,8372,6893,5305,3247,487,-1389,-1090,130, 395,-899,-2740,-4279,-5846,-7526,-9079,-10419,-11814,-13478, -15032,-15629,-15454,-15299,-15286,-15445,-15740,-15502,-14118,-11269, -7425,-4606,-3998,-4386,-4296,-3610,-2670,-1368,408,2135, 3160,3625,3972,4373,4823,5032,5178,5579,5764,5781, 5976,6615,7492,7898,7521,6789,6594,7927,10474,13005, 14167,13195,11592,10973,11023,10563,9697,9477,9732,8773, 5954,2763,722,279,677,762,365,-523,-2063,-3593, -4875,-6220,-7713,-9558,-11499,-12951,-14020,-14986,-15256,-14761, -14740,-16073,-17546,-16984,-14008,-10566,-7894,-6284,-5282,-4535, -4284,-3975,-3099,-1712,-100,1377,2534,3296,3624,3981, 4457,4894,5132,4922,4657,4910,5758,6838,7712,7537, 6266,5157,5833,8338,10748,11945,12399,12523,12269,11414, 10242,9846,10450,10869,10223,8513,5991,3499,1859,1233, 1414,1549,690,-625,-1487,-2116,-3335,-5184,-6740,-8242, -10521,-12942,-14109,-13808,-13216,-13859,-15651,-17279,-17769,-16698, -14315,-11301,-8739,-7086,-6090,-5369,-4812,-4260,-3463,-2104, -194,1547,2519,3028,3668,4423,4961,5163,5097,4514, 3982,4825,6865,8235,7765,6027,4911,5410,6483,7577, 9223,11217,12505,12426,11166,10163,10087,10498,10928,11088, 10543,8707,5890,3750,2893,2222,1450,909,620,-36, -1360,-2478,-2887,-3460,-5423,-8542,-11221,-12391,-12530,-12508, -12954,-14157,-15870,-17370,-17854,-16773,-14449,-11852,-9647,-7957, -6632,-5784,-5289,-4533,-3452,-2296,-728,909,1877,2365, 3155,4483,5611,5116,3352,2673,3913,5949,7207,7175, 6540,5933,5293,4820,5094,6622,8937,10715,11535,11492, 10536,9503,9689,10953,11871,11374,10029,8808,7566,5706, 3809,2923,2882,2356,817,-620,-1015,-684,-955,-2643, -5446,-8347,-10431,-11328,-11477,-11644,-12529,-14342,-16189,-17430, -18044,-17477,-15380,-12773,-10652,-9201,-8115,-7030,-6211,-5624, -4336,-2418,-1066,-523,129,1967,4282,5420,4950,3764, 3228,3824,4785,5836,7010,7535,6871,5703,4914,4659, 4944,6211,8596,10690,10990,9828,9039,9600,10551,10900, 10949,11017,10599,9171,7099,5575,4876,4375,3378,1736, 251,-237,-123,34,-404,-2427,-5392,-7850,-9297,-10005, -10440,-11165,-12162,-13684,-15772,-17390,-17806,-17135,-15646,-13553, -11190,-9462,-8870,-8373,-7022,-4980,-3352,-2915,-2915,-1748, 627,2784,4053,4637,4624,4012,3398,3669,4905,6176, 6928,7228,7011,5813,4088,3472,4749,6933,8529,9133, 9393,9564,9465,9573,10256,11312,12121,11742,10292,8938, 8011,7249,6653,5617,3913,2097,906,882,1403,1262, 129,-1807,-4184,-6501,-8139,-8699,-8883,-9820,-11443,-13179, -14958,-16721,-18017,-17927,-15957,-13313,-11938,-11716,-10844,-8653, -6362,-5276,-5040,-4639,-3631,-2050,161,2555,4089,4239, 3908,3798,3764,3724,4232,6025,7951,8091,6490,4751, 3957,4404,5403,6383,7754,9036,9320,8908,8658,9286, 10698,11799,11850,10864,9554,8802,8710,8484,7389,5391, 3473,2277,1595,1412,1677,1616,462,-1731,-4249,-6023, -6915,-7656,-8580,-9335,-10141,-12045,-15073,-17493,-17903,-16760, -15465,-14635,-13621,-12179,-10464,-8523,-6808,-5899,-5854,-5791, -4478,-1988,208,1761,3263,4405,4581,3796,2888,3402, 5313,7119,7775,7328,6309,5192,4388,4288,5112,6449, 7668,8283,8194,7889,8136,9308,10958,11756,11200,10304, 9863,9811,9681,8965,7504,5612,3671,2291,1963,2469, 2673,1789,285,-1281,-3081,-5309,-7152,-7638,-7437,-8391, -10857,-13696,-15927,-17326,-18208,-18428,-17822,-17128,-16296,-14444, -11932,-9836,-8742,-8358,-7720,-6521,-5210,-3616,-1306,1408, 3371,3828,3364,3127,3591,4693,6216,7605,8393,8120, 6916,5645,4938,5024,5990,7256,7913,7841,7712,8183, 9308,10641,11547,11753,11586,11329,11179,11348,11473,10729, 8660,5975,4278,3901,3614,3066,2808,2694,1870,-396, -3209,-4838,-5258,-5534,-6182,-7661,-10066,-12705,-14789,-16122, -17191,-18394,-19138,-18434,-16548,-14450,-12835,-11447,-9866,-8651, -8188,-7853,-6703,-4403,-1553,637,1788,2151,2038,2120, 2845,4073,5617,7169,8069,7675,6228,4868,4547,5338, 6314,6616,6474,6539,7069,7958,8886,10025,11206,11395, 10840,10883,11820,12641,12167,10441,8773,7354,5618,4153, 3742,4033,4124,3336,1650,-468,-2575,-3928,-4194,-4307, -5463,-7791,-10198,-11675,-12961,-15075,-17492,-19045,-19187,-18466, -17539,-16151,-13976,-11765,-10372,-9832,-9528,-8782,-7039,-4410, -1759,197,1324,1708,1793,2040,2707,4243,6325,7933, 8356,7414,6132,5809,6102,6372,6617,6773,6737,6577, 6820,8118,9769,10328,10050,10200,11085,11964,12339,12482, 12502,11703,9816,7638,5945,5200,5212,5479,5471,4325, 1938,-371,-1585,-1957,-2443,-3704,-5323,-6655,-7964,-9823, -12074,-14239,-16186,-17843,-18828,-18955,-18073,-16186,-14086,-12488, -11603,-11334,-10889,-9747,-8014,-5640,-3168,-1202,79,399, 122,535,2204,4470,6251,6986,7138,6977,6283,5660, 6097,7026,7110,6108,5365,6068,7411,8244,8652,9072, 9651,10125,10441,11104,12030,12602,12581,11834,10049,7671, 5807,5391,6147,6543,5424,3344,1728,785,-241,-1449, -2532,-3396,-4200,-5556,-7380,-9145,-10882,-12743,-14954,-17398, -19046,-19179,-18110,-16272,-14445,-13318,-12645,-12078,-11564,-10786, -9292,-6718,-3577,-1607,-1334,-1476,-912,317,1751,3459, 5501,6751,6533,5847,5886,6644,7087,6628,5892,5588, 5644,6063,6894,7806,8358,8630,8972,9489,10105,10842, 11881,13206,13714,12221,9625,7586,6939,7267,7320,6511, 5314,4056,2816,1551,96,-1120,-1795,-2432,-3501,-4822, -6253,-7603,-9074,-11300,-14177,-16973,-18625,-18534,-17545,-16463, -15131,-13678,-12862,-13030,-13155,-11771,-9177,-6661,-4626,-3057, -2207,-2126,-2048,-719,1759,3840,4717,5002,5467,6036, 6415,6700,6753,6423,5816,5257,5391,6149,6731,7175, 7848,8337,8413,8336,8932,10751,12839,13797,13183,11530, 9808,8819,8299,7855,7591,7122,6219,4934,3424,2059, 849,-218,-1047,-1998,-3272,-4393,-5085,-5962,-7935,-10853, -13579,-15805,-17758,-18811,-18157,-16396,-14964,-14661,-14731,-14345, -13608,-12499,-10504,-7606,-5174,-4293,-4268,-3948,-2725,-738, 1127,2454,3428,4023,4634,5651,6502,6694,6350,5898, 5697,5507,5137,5315,6366,7494,7978,7459,6769,7316, 9175,11343,12817,13207,12892,12118,10888,9687,8954,8613, 8399,7927,6952,5485,3986,3065,2344,903,-895,-1968, -2217,-2682,-3907,-5269,-6615,-8775,-12165,-15679,-17554,-17741, -17343,-16620,-15693,-15135,-15195,-15443,-14902,-12884,-10176,-7938, -6401,-5511,-5030,-4242,-2770,-785,929,1691,2316,3528, 4859,5796,6188,6387,6738,6740,5966,4993,4853,5962, 7367,7688,6902,6108,6218,7424,9147,10877,12150,12647, 12624,12194,11142,9868,9330,9604,9455,8216,6862,6224, 5754,4548,2658,1268,508,-543,-1682,-2133,-2247,-3032, -5025,-8042,-11175,-13983,-16286,-17205,-16628,-15631,-15253,-15767, -16296,-16080,-15122,-13283,-10890,-8908,-7741,-7053,-6098,-4591, -3001,-1762,-735,422,1802,3121,3972,4782,5897,6920, 7068,6094,5080,4996,5740,6713,7294,7054,6186,5630, 6160,7366,8622,10148,11819,12793,12503,11435,10844,10930, 10553,9588,9010,8757,8106,7004,5867,5043,3958,2067, 265,-614,-827,-991,-1503,-2382,-3881,-6705,-10404,-13616, -15611,-16345,-16235,-15989,-16145,-16841,-17531,-17216,-15739,-13757, -12087,-10943,-9716,-8137,-6579,-5406,-4436,-3004,-1192,156, 810,1513,2957,4755,6047,6530,6128,5157,4676,5226, 6147,6625,6499,6246,6133,5653,5085,5948,8148,10088, 10951,11116,11453,11770,11275,10446,10086,10041,9664,8804, 8062,7833,7331,6029,4405,2748,1227,121,-309,-94, -37,-854,-2773,-5665,-9059,-12117,-14083,-14713,-14782,-15257, -16422,-17578,-17715,-16727,-15453,-14498,-13504,-11876,-10038,-8851, -8016,-6717,-4949,-3177,-1816,-1128,-520,759,2810,5056, 6194,5797,5283,5467,5683,5606,5753,6527,7136,6513, 5224,4762,5447,6666,7870,9065,10397,11213,11238,11161, 11286,11217,10640,9922,9500,9239,8843,8419,7891,6861, 5060,2908,1203,349,327,787,1026,391,-1561,-4772, -8246,-10802,-12019,-12698,-13971,-15619,-16585,-16937,-17080,-16853, -16147,-14963,-13518,-12297,-11165,-10032,-8945,-7285,-5111,-3605, -3184,-2821,-1334,1102,3046,4165,5119,5759,5665,5019, 4802,5677,6698,6847,6381,5929,5549,5069,4996,5937, 7486,8757,9576,10236,10929,11441,11527,11307,10816,10189, 9703,9452,9324,9186,8720,7629,5786,3539,1738,759, 843,1932,2556,1276,-1415,-4293,-6613,-8455,-10383,-12178, -13428,-14582,-15750,-16652,-17208,-17190,-16436,-15108,-13871,-13405, -12990,-11446,-9153,-7340,-6465,-5811,-4621,-3247,-2017,-447, 1880,4054,4877,4534,4296,4656,5209,5707,6207,6612, 6423,5619,4844,4563,4841,5590,6645,7774,8724,9512, 10384,11251,11584,11402,10866,10157,9893,9968,9823,9654, 9518,8625,6514,3593,1549,1560,2603,3143,2634,1252, -665,-2845,-5001,-6950,-8982,-10878,-12164,-13278,-14903,-16713, -17436,-16637,-15553,-15384,-15586,-14846,-13054,-11264,-9942,-8541, -7014,-6025,-5550,-4716,-2847,-419,1684,3194,4077,4318, 4257,4436,5064,5954,6494,6536,6242,5587,4979,4827, 4933,5449,6387,7154,7865,8929,10214,11212,11436,11112, 10831,10460,9839,9583,10213,11088,10808,8904,6274,3967, 2691,2762,3427,3610,2916,1799,518,-1368,-3899,-6223, -7598,-8570,-10366,-12937,-14903,-15617,-15797,-16134,-16449,-16364, -15962,-15427,-14330,-12454,-10513,-9148,-8411,-7864,-6998,-5732, -4004,-1660,546,2037,2885,3145,3294,3918,4796,5563, 6088,6187,5808,5107,4552,4530,4757,4860,5156,6025, 7330,8421,9216,10306,11311,11328,10345,9387,9305,10076, 11158,11734,10961,8806,6288,4614,3909,3524,3243,3508, 3939,3203,1004,-1384,-2832,-3777,-5479,-7952,-10190,-11933, -13399,-14646,-15482,-15721,-16009,-16583,-16719,-16016,-14657,-12784, -11073,-10039,-9397,-8813,-7962,-6542,-4527,-2195,-181,1186, 2082,2653,3107,3782,4871,6046,6466,6019,5629,5667, 5494,4826,4363,4666,5295,5798,6391,7536,9167,10679, 11276,10722,9589,8869,9521,11144,12117,11674,10499,9276, 7789,5649,3808,3582,4451,4866,4135,2654,1337,226, -1140,-2672,-4409,-6619,-8904,-10819,-12402,-13604,-14459,-15188, -16065,-16905,-17130,-16494,-15083,-13294,-11754,-10856,-10426,-9887, -8763,-7213,-5393,-3263,-1023,520,1079,1525,2642,3986, 4827,5336,5830,6162,6104,5737,5341,5121,4894,4747, 4826,4999,5608,7209,9470,10987,10657,9300,8859,9557, 10405,10997,11544,12126,11884,10064,7591,5896,5181,5032, 5054,4883,4301,3371,2349,1308,175,-1201,-3092,-5431, -7655,-9446,-10889,-12212,-13463,-14627,-15790,-16886,-17265,-16500, -15007,-13648,-12666,-11748,-11028,-10692,-9984,-8214,-5871,-3776, -2326,-1152,143,1305,2211,3185,4215,5076,5613,5778, 5732,5497,5266,5427,5407,4523,3557,3823,5663,7880, 9007,9150,9257,9278,8897,8706,9497,10976,12115,12289, 11325,9653,7935,6654,5870,5444,5271,5177,4779,4058, 3303,2546,1459,-205,-2338,-4656,-6946,-8964,-10417,-11657, -13381,-15398,-16928,-17790,-18167,-17952,-16921,-15280,-14077,-13759, -13486,-12625,-11186,-9425,-7630,-5689,-3852,-2385,-956,458, 1541,2556,3935,5332,5965,5643,5432,6186,7046,6503, 4881,3898,4203,5166,6311,7651,8996,9890,9966,9421, 9011,9469,10807,12305,13135,13072,12231,10828,9276,8015, 7246,6674,5944,5285,4979,4538,3837,3239,2445,864, -1523,-3966,-5714,-7154,-8951,-10855,-12607,-14342,-16178,-17730, -18208,-17504,-16479,-15601,-14919,-14514,-14130,-13303,-11894,-10259, -8619,-6839,-4765,-2915,-1825,-1038,517,2630,3946,4182, 4379,5233,6355,7012,6798,5918,4877,4183,4086,4632, 5870,7519,8892,9411,9093,8596,8693,9459,10723,12217, 13109,12873,12007,10967,9924,8829,7797,7105,6474,5640, 5044,4965,4942,4418,3137,1448,-360,-2373,-4414,-5972, -7264,-8980,-11234,-13595,-15612,-17030,-17573,-17212,-16392,-15817, -15615,-15173,-14325,-13688,-13162,-11763,-9379,-7223,-6004,-5013, -3358,-1211,593,1694,2366,3157,4257,5386,6307,6865, 6819,6206,5097,3905,3685,4621,6037,7464,8596,9033, 8691,8105,8326,9541,10908,12014,12790,12992,12405,11306, 10341,9754,8933,7587,6456,6061,5974,5728,5422,5014, 4066,2382,303,-1573,-3031,-4398,-5901,-7704,-10147,-12988, -15175,-16203,-16667,-17117,-17092,-16272,-15455,-15410,-15599,-15094, -13635,-11776,-10346,-9262,-7936,-6131,-3925,-1953,-726,195, 1266,2328,3395,4624,5985,6924,6846,5942,4784,3732, 3438,4372,6021,7423,8003,7964,7780,7723,7934,8844, 10473,11902,12393,12311,12165,11854,11191,10213,9156,8086, 7054,6338,6226,6383,6181,5570,4662,3148,1044,-830, -1781,-2602,-4426,-7033,-9563,-11686,-13672,-15635,-16907,-16893, -16305,-16039,-16249,-16545,-16202,-15057,-13762,-12768,-11822,-10511, -8754,-6882,-4983,-3089,-1637,-735,178,1460,2920,4361, 5775,6849,6968,5842,4240,3454,3789,4672,5740,6924, 7685,7590,7039,6907,7628,8833,9943,10917,11765,12162, 12105,11850,11511,10723,9450,8340,7557,6842,6531,6894, 7196,6605,4973,3202,2039,1039,-315,-1827,-3431,-5302, -7689,-10542,-13265,-15060,-15681,-15715,-16031,-16705,-17011,-16727, -16228,-15669,-14860,-13948,-13015,-11870,-10230,-8137,-6067,-4437, -3130,-1943,-978,71,1816,4046,5768,6470,6265,5469, 4334,3406,3479,4643,6037,6812,6912,6837,6801,6806, 7356,8523,9603,10444,11348,12079,12298,12034,11658,11322, 10344,8632,7320,7185,7713,7949,7461,6542,5588,4557, 3253,1748,450,-414,-1445,-3590,-6709,-9644,-11688,-13125, -14264,-15178,-15864,-16385,-16699,-16613,-16110,-15548,-15226,-14660, -13601,-12326,-10914,-9026,-6780,-4974,-4060,-3426,-2267,-511, 1475,3404,5200,6386,6175,4943,3915,3541,3824,4709, 5708,6298,6321,6150,6292,6642,6962,7638,8932,10247, 10971,11361,11906,12533,12539,11532,9972,8689,8162,8231, 8230,7904,7643,7371,6464,4875,3397,2537,2099,1276, -447,-2780,-5334,-7915,-10143,-11765,-13109,-14457,-15562,-16055, -16172,-16324,-16309,-15916,-15431,-15055,-14617,-13526,-11502,-9368, -7684,-6224,-5094,-4385,-3463,-1716,727,3131,4906,5836, 5768,4787,3755,3647,4287,4921,5355,5860,6341,6367, 5987,5994,6737,7747,8583,9255,10063,11273,12544,12964, 12314,11305,10451,9687,8939,8438,8534,8927,8790,7820, 6513,5366,4466,3801,3324,2522,739,-1686,-4031,-6201, -8372,-10529,-12335,-13552,-14589,-15715,-16295,-16088,-15911,-16122, -16254,-15956,-15239,-14160,-12488,-10345,-8494,-7404,-6693,-5888, -4732,-2868,-224,2542,4372,4885,4655,4328,3962,3672, 3862,4559,5379,5859,5733,5303,5359,6025,6632,6817, 7039,8041,9731,11155,11820,12053,12089,11655,10498,9233, 8631,8631,8882,9067,8672,7627,6381,5433,5007,4731, 3952,2783,1473,-328,-2748,-5226,-7286,-9179,-11190,-13084, -14384,-15142,-15654,-15934,-16073,-16397,-16816,-16841,-16158,-14867, -13253,-11397,-9583,-8552,-8351,-7896,-6297,-3777,-1072,1247, 2903,3950,4332,3968,3331,3231,3959,4913,5295,5105, 5033,5459,5965,5926,5653,5945,6813,7879,9135,10500, 11671,12399,12374,11679,10628,9566,9042,9382,9850,9498, 8527,7624,6983,6323,5646,5253,4957,4032,2413,592, -1273,-3353,-5605,-7807,-9882,-11841,-13433,-14286,-14667,-15151, -15792,-16283,-16712,-17019,-16645,-15296,-13287,-11398,-10241,-9805, -9439,-8469,-6739,-4567,-2112,425,2529,3635,3555,3071, 3269,4011,4410,4456,4645,5073,5491,5625,5556,5590, 5672,5767,6252,7283,8591,10082,11611,12607,12515,11489, 10483,10103,10067,10052,10088,9918,9192,8140,7319,6910, 6598,6118,5533,4776,3485,1784,125,-1662,-3944,-6458, -8738,-10633,-12227,-13396,-14038,-14453,-15067,-16107,-17246,-17626, -16759,-15146,-13462,-12181,-11378,-10717,-10099,-9525,-8302,-5771, -2600,-19,1451,2136,2641,3143,3405,3574,3911,4266, 4577,4939,5323,5493,5408,5359,5450,5407,5367,6120, 7941,9972,11309,11808,11775,11346,10650,10152,10231,10502, 10388,9917,9245,8403,7647,7289,7172,6814,6076,5207, 4231,2991,1429,-531,-2724,-4959,-7323,-9662,-11391,-12296, -12742,-13372,-14747,-16465,-17440,-17328,-16629,-15625,-14301,-12808, -11743,-11603,-11777,-11034,-9009,-6356,-3799,-1626,77,1257, 2023,2636,3101,3285,3525,4092,4630,4794,4906,5302, 5695,5507,4817,4398,4735,5765,7373,9271,10711,11258, 11174,10941,10613,10284,10326,10613,10566,9990,9155,8486, 8193,7942,7489,7041,6619,5946,5031,3926,2569,1034, -893,-3498,-6310,-8479,-9686,-10406,-11449,-12956,-14458,-15742, -16903,-17549,-17108,-15659,-14058,-13110,-12852,-12853,-12682,-11801, -9879,-7414,-5145,-3153,-1203,443,1383,1794,2338,3105, 3540,3599,3793,4380,5022,5431,5562,5233,4451,3903, 4201,5297,6886,8627,9992,10695,10781,10490,10330,10517, 10699,10672,10432,9933,9364,8891,8413,7938,7649,7433, 6967,6157,5332,4804,4107,2408,-254,-2980,-5146,-6823, -8360,-9686,-10670,-11809,-13590,-15630,-17090,-17520,-16879,-15560, -14335,-13791,-13854,-13826,-13275,-12289,-10925,-8919,-6361,-3973, -2250,-908,393,1451,2160,2697,2988,3120,3525,4273, 5085,5617,5530,4932,4273,3803,3873,4857,6515,8160, 9352,9920,10104,10278,10518,10674,10696,10639,10553,10292, 9669,8991,8682,8636,8349,7598,6806,6553,6617,6148, 4907,3168,1060,-1384,-3792,-5677,-6988,-8048,-9186,-10730, -12881,-15242,-16791,-16900,-16120,-15421,-14956,-14401,-14056,-14160, -14065,-13207,-11688,-9694,-7503,-5437,-3569,-1883,-403,923, 1817,2098,2213,2606,3281,4125,4943,5446,5422,4844, 3987,3414,3593,4655,6193,7553,8474,9205,9857,10268, 10413,10542,10881,11132,10772,10049,9684,9737,9549,8851, 8095,7641,7411,7272,7194,6900,5980,4331,2190,-213, -2621,-4495,-5443,-6142,-7716,-10069,-12418,-14414,-15807,-16290, -16012,-15369,-14812,-14611,-14646,-14719,-14591,-13863,-12379,-10547, -8729,-6829,-4775,-2716,-946,296,1068,1507,1799,2255, 3031,4060,5119,5694,5428,4595,3850,3648,4051,4835, 5880,7206,8521,9343,9687,10150,10922,11499,11530,11249, 11011,10911,10811,10550,10103,9451,8698,8251,8222,8146, 7970,7899,7313,5561,2994,475,-1428,-2734,-3933,-5382, -7169,-9444,-11983,-14215,-15723,-16383,-16342,-15930,-15581,-15607, -15879,-15937,-15518,-14732,-13625,-12234,-10544,-8531,-6304,-4143, -2245,-759,215,713,1025,1554,2653,4099,5115,5244, 4849,4438,3984,3457,3412,4227,5529,6638,7343,8018, 8989,9926,10550,10962,11058,10880,10913,11136,11020,10536, 10039,9549,8911,8208,7865,8187,8706,8627,7625,5795, 3545,1389,-274,-1501,-2685,-4193,-6110,-8396,-11004,-13447, -15057,-15674,-15713,-15678,-15825,-16092,-16255,-16202,-15907,-15350, -14516,-13325,-11720,-9779,-7647,-5380,-3161,-1535,-864,-560, 134,1289,2585,3730,4610,5147,5056,4332,3662,3494, 3688,4277,5176,5941,6552,7475,8702,9697,10167,10395, 10746,11083,11112,11008,11023,10990,10538,9626,8687,8215, 8315,8841,9378,9293,8264,6518,4564,2764,1264,60, -1090,-2530,-4517,-7067,-9810,-12118,-13624,-14408,-14831,-15205, -15592,-15845,-15977,-16171,-16209,-15742,-14984,-14171,-13022,-11175, -8641,-6052,-4212,-3017,-1988,-1181,-511,528,1965,3391, 4443,4875,4626,4017,3561,3566,3841,4076,4399,5121, 6158,7178,8039,8853,9654,10221,10441,10524,10765,11114, 11348,11217,10536,9447,8512,8219,8611,9278,9680,9496, 8624,7135,5286,3583,2404,1490,411,-1125,-3357,-6057, -8591,-10670,-12319,-13486,-14215,-14648,-15039,-15611,-16081,-16027, -15785,-15872,-15887,-15234,-13857,-11888,-9539,-7199,-5290,-3962, -2968,-2106,-1288,-125,1568,3278,4247,4359,4179,4134, 4105,3872,3676,3859,4353,4923,5617,6523,7543,8536, 9323,9771,9966,10255,10845,11532,11864,11495,10523,9503, 8810,8588,8939,9595,10014,9917,9119,7586,5854,4572, 3775,3045,1812,-47,-2159,-4444,-7051,-9486,-11123,-12142, -13123,-14138,-14858,-15219,-15423,-15596,-15868,-16244,-16372,-15796, -14472,-12663,-10568,-8309,-6256,-4873,-4122,-3404,-2106,-369, 1249,2523,3450,4008,4191,4124,3944,3736,3653,3778, 4016,4386,5026,5971,7132,8153,8639,8835,9277,10011, 10882,11630,11865,11454,10600,9573,8788,8602,9033,9816, 10420,10157,9004,7653,6540,5561,4642,3836,2858,1230, -1065,-3585,-5921,-7951,-9656,-11154,-12576,-13766,-14457,-14739, -15005,-15533,-16154,-16547,-16662,-16487,-15650,-13801,-11350,-9173, -7684,-6570,-5497,-4291,-2892,-1370,209,1717,2827,3450, 3755,3778,3664,3645,3597,3392,3344,3728,4548,5645, 6618,7215,7607,7987,8576,9521,10557,11300,11632,11416, 10502,9197,8427,8656,9359,9921,10150,9985,9247,8048, 6900,6146,5651,5035,3915,2142,-75,-2316,-4350,-6298, -8346,-10326,-11802,-12729,-13498,-14215,-14655,-14991,-15634,-16535, -17183,-17043,-15881,-14045,-12091,-10271,-8755,-7542,-6330,-5004, -3661,-2127,-366,1231,2364,3040,3467,3833,4042,3898, 3512,3215,3213,3671,4572,5549,6189,6588,7014,7494, 8046,8955,10316,11454,11733,11177,10188,9265,8794,8934, 9517,10120,10403,10172,9387,8319,7456,7068,6853,6130, 4712,3049,1380,-539,-2748,-4975,-7041,-8860,-10488,-11918, -12839,-13222,-13643,-14459,-15549,-16678,-17382,-17219,-16251,-14750, -13034,-11374,-9909,-8627,-7478,-6246,-4707,-2905,-1157,332, 1512,2421,3169,3787,4038,3715,3176,3014,3292,3729, 4304,5116,5869,6220,6317,6631,7491,8840,10239,11199, 11438,10996,10145,9333,8915,9008,9601,10331,10505,9914, 9103,8503,8150,7820,7275,6528,5639,4331,2554,643, -1300,-3374,-5562,-7730,-9607,-10943,-11688,-12175,-12834,-13917, -15288,-16486,-17158,-17250,-16663,-15366,-13720,-12211,-10989,-9836, -8609,-7242,-5581,-3762,-2156,-804,569,1966,3025,3536, 3633,3482,3164,2918,2969,3462,4313,5107,5510,5588, 5620,6037,7148,8609,9884,10820,11258,10915,9984,9114, 8926,9487,10122,10280,10122,9895,9515,8987,8533,8263, 7974,7401,6427,5155,3743,2159,293,-1900,-4331,-6690, -8553,-9746,-10540,-11296,-12169,-13301,-14724,-16118,-17031,-17289, -16870,-15765,-14329,-13091,-12117,-10994,-9535,-7990,-6511,-5034, -3448,-1749,-142,1218,2348,3140,3382,3176,2780,2475, 2677,3442,4256,4708,4807,4790,4939,5437,6384,7857, 9554,10698,10800,10195,9525,9174,9189,9439,9765,10012, 10011,9721,9325,9015,8818,8618,8284,7680,6789,5828, 4828,3450,1462,-915,-3327,-5584,-7451,-8733,-9593,-10419, -11408,-12635,-14191,-15806,-16939,-17260,-16821,-15986,-15108,-14164, -13010,-11755,-10470,-9104,-7716,-6208,-4520,-2806,-1191,394, 1868,2846,3072,2691,2293,2396,2914,3458,3969,4443, 4623,4385,4160,4645,6041,7790,9202,9981,10182,9950, 9480,9151,9211,9511,9793,9943,9871,9608,9390,9367, 9311,8971,8483,8006,7464,6790,5943,4642,2700,352, -2028,-4235,-6107,-7508,-8415,-9102,-10183,-11862,-13681,-15194, -16191,-16608,-16564,-16187,-15489,-14531,-13469,-12390,-11251,-9984, -8581,-7140,-5709,-4082,-2052,16,1510,2223,2420,2377, 2235,2230,2635,3443,4212,4440,4076,3630,3642,4369, 5736,7344,8687,9484,9758,9638,9300,9126,9375,9732, 9814,9709,9625,9588,9603,9604,9436,9097,8684,8304, 8024,7651,6881,5644,3927,1693,-823,-3148,-4955,-6153, -6953,-7876,-9292,-11051,-12767,-14230,-15416,-16274,-16586,-16269, -15625,-14972,-14258,-13176,-11814,-10607,-9656,-8555,-6934,-4871, -2766,-872,747,1855,2176,1908,1727,2108,2903,3720, 4218,4158,3672,3274,3389,4105,5391,6999,8360,9121, 9332,9257,9221,9378,9585,9694,9686,9584,9569,9745, 9872,9752,9491,9201,8898,8626,8409,8182,7747,6780, 5039,2647,110,-2036,-3588,-4729,-5820,-7080,-8470,-9985, -11715,-13518,-14958,-15752,-16089,-16242,-16174,-15602,-14575,-13482, -12613,-11793,-10781,-9561,-8113,-6222,-3907,-1655,82,1069, 1252,1084,1274,1989,2875,3578,3901,3766,3293,2793, 2767,3572,4987,6445,7567,8231,8528,8734,9009,9248, 9340,9357,9368,9415,9524,9650,9710,9649,9479,9206, 8884,8662,8664,8819,8689,7699,5765,3466,1338,-570, -2319,-3770,-4837,-5848,-7283,-9190,-11111,-12643,-13916,-15146, -16093,-16401,-16205,-15754,-15054,-14175,-13325,-12538,-11749,-10814, -9389,-7285,-4787,-2464,-800,68,398,612,1020,1806, 2828,3617,3862,3584,2989,2526,2659,3504,4721,5887, 6809,7476,7990,8430,8785,9014,9144,9226,9304,9389, 9469,9571,9717,9796,9562,9021,8630,8777,9255,9513, 9146,8146,6667,4782,2548,401,-1167,-2264,-3468,-4939, -6494,-8117,-9800,-11484,-13101,-14512,-15511,-16060,-16209,-15950, -15300,-14447,-13714,-13275,-12878,-11993,-10367,-8159,-5730,-3483, -1801,-858,-440,-95,560,1627,2756,3461,3539,3156, 2630,2349,2576,3277,4237,5228,6106,6879,7577,8121, 8445,8674,8957,9172,9138,9089,9351,9822,10054,9732, 9110,8774,8882,9084,9297,9649,9773,9075,7519,5558, 3593,1830,276,-1148,-2478,-3833,-5311,-6926,-8663,-10455, -12137,-13641,-14936,-15834,-16128,-15799,-15178,-14613,-14272,-14096, -13756,-12859,-11251,-9081,-6761,-4652,-3047,-2076,-1488,-833, 208,1494,2603,3207,3273,2974,2608,2497,2741,3236, 3950,4899,5904,6739,7380,7960,8602,9171,9321,9131, 9204,9716,10204,10355,10246,10002,9668,9332,9210,9514, 10131,10652,10638,9872,8512,6847,5075,3259,1531,26, -1335,-2798,-4424,-6107,-7806,-9587,-11484,-13369,-14980,-15998, -16312,-16128,-15742,-15439,-15348,-15376,-15169,-14317,-12626,-10316, -7868,-5777,-4264,-3233,-2423,-1461,-111,1341,2393,2885, 2986,2890,2729,2561,2544,2988,3874,4713,5294,6008, 7029,8006,8528,8643,8732,8980,9299,9659,10063,10371, 10376,9991,9450,9101,9148,9613,10249,10736,10808,10285, 9143,7592,5902,4220,2611,1101,-387,-1903,-3419,-4932, -6575,-8469,-10564,-12628,-14354,-15480,-15926,-15888,-15651,-15592, -15861,-16178,-16069,-15214,-13541,-11301,-9025,-7129,-5734,-4694, -3608,-2181,-666,577,1571,2368,2737,2534,2152,2140, 2507,2897,3227,3722,4561,5616,6584,7317,7819,8127, 8316,8491,8801,9330,9936,10257,10102,9644,9189,8936, 8981,9381,10040,10660,10848,10402,9403,8137,6765,5272, 3676,2074,548,-858,-2205,-3673,-5356,-7273,-9475,-11764, -13646,-14789,-15261,-15293,-15279,-15555,-16108,-16670,-16794,-15957, -14136,-11970,-10106,-8585,-7105,-5641,-4362,-3101,-1567,108, 1414,1999,2094,2161,2312,2418,2435,2526,2858,3486, 4314,5228,6195,7057,7588,7782,7924,8246,8761,9418, 10021,10301,10158,9726,9239,8943,9019,9494,10190,10784, 10967,10636,9974,9042,7778,6306,4783,3211,1692,350, -898,-2206,-3810,-5890,-8326,-10692,-12559,-13783,-14372,-14480, -14605,-15263,-16328,-17080,-16940,-15977,-14607,-13005,-11193,-9435, -8031,-6881,-5545,-3812,-1963,-425,619,1301,1815,2181, 2339,2369,2404,2469,2651,3119,3920,4933,5934,6674, 7083,7322,7606,8009,8585,9311,9976,10331,10205,9652, 9082,8886,9063,9491,10078,10655,10965,10875,10403,9617, 8559,7252,5705,4069,2637,1533,459,-890,-2577,-4644, -7138,-9734,-11737,-12723,-13072,-13533,-14368,-15331,-16203,-16885, -17135,-16588,-15234,-13519,-11934,-10651,-9435,-7984,-6300,-4561, -2840,-1274,-39,842,1490,1975,2277,2372,2302,2210, 2369,2860,3670,4661,5563,6185,6616,6921,7175,7596, 8323,9243,9986,10228,9975,9479,9056,8887,8956,9312, 9944,10543,10835,10867,10724,10245,9260,7877,6397,4983, 3626,2453,1555,561,-1141,-3690,-6456,-8725,-10284,-11375, -12269,-13056,-13848,-14854,-16076,-17074,-17278,-16619,-15511,-14308, -13116,-11923,-10597,-9102,-7449,-5649,-3862,-2295,-1005,42, 900,1596,2024,2102,1964,1893,2078,2515,3196,4118, 5046,5695,6024,6234,6558,7188,8069,8941,9593,9901, 9775,9309,8827,8679,8877,9183,9527,10026,10626,10974, 10864,10456,9807,8664,7017,5378,4321,3783,3116,1737, -323,-2688,-5081,-7352,-9164,-10329,-11128,-11978,-13108,-14502, -15850,-16769,-17046,-16672,-15873,-14954,-13991,-12907,-11619,-10127, -8462,-6684,-4958,-3399,-1956,-633,452,1230,1684,1834, 1803,1734,1785,2149,2933,3938,4719,5116,5366,5717, 6188,6789,7637,8670,9460,9643,9427,9186,8974,8720, 8619,8874,9383,9864,10248,10677,11105,11093,10214,8695, 7225,6179,5461,4816,3969,2711,888,-1496,-4064,-6273, -7863,-8962,-9930,-11062,-12445,-13984,-15379,-16332,-16732,-16601, -16104,-15483,-14770,-13777,-12469,-10968,-9406,-7791,-6120,-4432, -2804,-1380,-209,761,1447,1682,1540,1386,1561,2091, 2801,3572,4311,4807,4995,5164,5698,6589,7534,8349, 9017,9463,9530,9175,8752,8675,8839,8896,8908,9257, 10090,11032,11485,11192,10320,9145,7932,6942,6305,5856, 5189,3936,2024,-390,-2861,-4890,-6365,-7538,-8687,-9995, -11543,-13192,-14633,-15633,-16166,-16319,-16223,-15924,-15309,-14338, -13141,-11824,-10389,-8763,-7033,-5415,-3887,-2285,-733,400, 959,1174,1266,1258,1320,1786,2639,3517,4017,4183, 4433,4904,5426,6033,6948,8064,8893,9114,8989,8968, 9075,9002,8651,8347,8512,9198,10153,11058,11544,11384, 10632,9547,8465,7686,7275,6959,6296,5003,3067,706, -1643,-3550,-4972,-6182,-7492,-9035,-10730,-12370,-13768,-14883, -15729,-16254,-16386,-16148,-15695,-15056,-14049,-12660,-11212,-9847, -8359,-6630,-4804,-3091,-1582,-307,571,863,769,815, 1229,1849,2438,3004,3569,3958,4089,4218,4734,5711, 6788,7577,8093,8531,8906,9110,9051,8724,8247,7967, 8178,8896,9900,10868,11423,11313,10599,9590,8684,8140, 7922,7712,7096,5817,3873,1586,-552,-2254,-3631,-5011, -6591,-8232,-9763,-11322,-12953,-14360,-15306,-15885,-16283,-16491, -16281,-15553,-14560,-13509,-12331,-10920,-9400,-7871,-6161,-4163, -2267,-990,-347,49,435,711,907,1356,2194,2992, 3320,3295,3401,3868,4593,5414,6171,6856,7576,8287, 8830,9066,8954,8553,8028,7696,7883,8666,9765,10766, 11304,11208,10535,9623,8936,8656,8630,8528,7892,6492, 4623,2687,874,-825,-2439,-3928,-5358,-6941,-8701,-10397, -11881,-13208,-14458,-15480,-16061,-16267,-16252,-15921,-15119,-14026, -12992,-12038,-10788,-9010,-6925,-4979,-3315,-1879,-826,-292, -92,151,662,1435,2217,2673,2789,2869,3187,3731, 4348,4962,5608,6361,7225,8082,8764,9084,8935,8444, 7862,7501,7712,8559,9676,10668,11242,11133,10402,9569, 9198,9321,9421,9082,8297,7166,5674,3833,1929,334, -1034,-2551,-4287,-5978,-7499,-9079,-10812,-12415,-13662,-14675, -15624,-16313,-16373,-15867,-15263,-14749,-14068,-13025,-11658,-10051, -8180,-6112,-4115,-2546,-1618,-1151,-758,-176,573,1317, 1868,2192,2395,2608,2978,3504,4002,4454,5028,5804, 6768,7809,8633,8992,8826,8322,7729,7318,7466,8347, 9656,10702,10962,10558,10015,9699,9598,9582,9598,9513, 8983,7843,6333,4789,3252,1625,-25,-1526,-2980,-4655, -6459,-8083,-9531,-11081,-12768,-14238,-15225,-15752,-15950,-15908, -15649,-15157,-14499,-13712,-12659,-11162,-9143,-6855,-4865,-3482, -2572,-1873,-1174,-369,426,1075,1543,1879,2166,2475, 2862,3294,3647,3955,4444,5306,6431,7505,8326,8810, 8802,8181,7303,6897,7406,8502,9505,10152,10465,10400, 9995,9588,9573,9903,10067,9769,9198,8448,7306,5718, 4072,2671,1291,-337,-2137,-3806,-5251,-6695,-8387,-10232, -11952,-13385,-14503,-15354,-15869,-15940,-15714,-15462,-15204,-14723, -13766,-12187,-10109,-7904,-6046,-4710,-3695,-2737,-1765,-848, -59,560,1016,1393,1827,2287,2622,2825,3058,3453, 3970,4626,5649,7052,8297,8758,8349,7588,7066,6986, 7347,8164,9214,9964,10081,9827,9646,9640,9706,9848, 10045,10095,9723,8849,7710,6525,5257,3827,2220,537, -1034,-2481,-3971,-5593,-7295,-9015,-10749,-12411,-13812,-14789, -15311,-15482,-15552,-15675,-15733,-15398,-14407,-12816,-10881,-8891, -7150,-5793,-4641,-3485,-2271,-1239,-558,-20,629,1295, 1729,1983,2320,2752,2964,2903,3088,4027,5563,7012, 7937,8329,8160,7501,6871,6833,7440,8268,8950,9449, 9776,9788,9567,9453,9680,10118,10403,10300,9893,9342, 8625,7581,6189,4688,3226,1764,238,-1344,-2911,-4510, -6245,-8136,-10118,-12038,-13614,-14675,-15297,-15698,-16136,-16582, -16779,-16497,-15592,-14054,-12202,-10427,-8855,-7317,-5731,-4302, -3170,-2189,-1184,-261,367,814,1432,2177,2617,2622, 2485,2543,3012,3978,5425,7014,8120,8398,8071,7621, 7371,7432,7789,8423,9179,9779,9981,9861,9790,9988, 10363,10678,10817,10813,10694,10336,9643,8616,7322,5924, 4490,2939,1291,-291,-1742,-3211,-4946,-7012,-9159,-11068, -12575,-13677,-14462,-15148,-15963,-16770,-17153,-16822,-15911,-14749, -13418,-11743,-9872,-8235,-6893,-5505,-3989,-2659,-1799,-1185, -406,543,1378,1969,2324,2356,2093,1922,2402,3643, 5239,6632,7507,7876,7818,7473,7154,7197,7694,8413, 8987,9315,9499,9615,9733,9941,10235,10544,10793,10925, 10895,10639,10068,9211,8142,6886,5431,3856,2354,999, -330,-1831,-3661,-5798,-8025,-10005,-11435,-12412,-13431,-14687, -15835,-16530,-16826,-16891,-16554,-15538,-14044,-12533,-11128,-9596, -7862,-6183,-4770,-3608,-2652,-1827,-964,67,1171,1971, 2165,1857,1485,1516,2174,3332,4734,6133,7187,7601, 7433,7077,6962,7217,7707,8221,8627,8924,9167,9352, 9486,9631,9873,10252,10622,10813,10827,10719,10434,9827, 8816,7533,6156,4704,3268,2056,963,-508,-2625,-4993, -7001,-8572,-10044,-11536,-12872,-14000,-15147,-16296,-17040,-17146, -16759,-16057,-15072,-13792,-12287,-10702,-9031,-7302,-5751,-4605, -3822,-2981,-1739,-282,883,1465,1554,1354,1087,1044, 1573,2734,4234,5617,6513,6854,6812,6684,6750,7051, 7433,7819,8211,8592,8894,9035,9108,9336,9704,10052, 10324,10594,10817,10876,10724,10342,9546,8204,6628,5349, 4489,3546,2087,265,-1615,-3550,-5555,-7448,-8999,-10296, -11649,-13174,-14653,-15824,-16574,-16912,-16861,-16417,-15649,-14627, -13321,-11642,-9749,-8028,-6759,-5810,-4857,-3638,-2161,-702, 484,1203,1346,1063,714,701,1298,2479,3916,5190, 6017,6385,6512,6596,6722,6956,7343,7807,8191,8454, 8688,8892,9031,9179,9521,9994,10277,10336,10591,11146, 11423,10871,9695,8511,7543,6600,5533,4393,3126,1544, -385,-2446,-4354,-6031,-7573,-9083,-10615,-12193,-13801,-15203, -16109,-16507,-16647,-16677,-16405,-15500,-13944,-12160,-10505,-9072, -7852,-6801,-5734,-4433,-2834,-1181,137,881,1002,673, 296,358,1079,2219,3423,4542,5456,6000,6170,6243, 6487,6856,7169,7509,7975,8348,8440,8457,8739,9224, 9483,9472,9616,10190,10947,11434,11412,10930,10144,9198, 8222,7328,6505,5528,4201,2572,771,-1113,-2995,-4723, -6240,-7710,-9403,-11298,-13013,-14282,-15176,-15937,-16628,-17019, -16828,-15981,-14629,-13044,-11500,-10162,-9038,-7984,-6840,-5432, -3661,-1772,-300,398,416,170,17,119,656,1714, 2973,4035,4810,5430,5882,6057,6136,6483,7117,7605, 7704,7745,8085,8592,8877,8863,8829,9045,9521,10134, 10792,11345,11497,11109,10370,9579,8875,8155,7303,6328, 5158,3620,1757,-119,-1762,-3260,-4851,-6660,-8547,-10305, -11844,-13203,-14404,-15483,-16465,-17099,-17080,-16371,-15193,-13794, -12376,-11104,-10123,-9270,-8087,-6359,-4368,-2531,-1091,-231, -58,-330,-478,-165,478,1247,2210,3406,4472,5011, 5151,5388,5959,6581,6896,6978,7189,7646,8146,8451, 8504,8460,8487,8701,9181,9893,10639,11138,11266,11061, 10563,9888,9224,8692,8162,7324,5977,4330,2718,1208, -313,-1939,-3707,-5561,-7396,-9096,-10608,-12045,-13507,-14899, -16066,-16883,-17165,-16693,-15561,-14238,-13106,-12173,-11264,-10269, -9046,-7357,-5214,-3128,-1714,-1026,-721,-557,-529,-507, -114,848,2082,3089,3722,4217,4789,5389,5877,6208, 6455,6690,7012,7494,8021,8311,8258,8082,8086,8405, 8956,9603,10314,10980,11286,11049,10519,10064,9784,9465, 8868,7897,6613,5188,3795,2458,981,-776,-2675,-4470, -6131,-7792,-9428,-10935,-12420,-14057,-15672,-16755,-17038,-16657, -15848,-14787,-13739,-12964,-12395,-11556,-10059,-8066,-6055,-4271, -2724,-1548,-1007,-1069,-1222,-952,-197,709,1526,2288, 3064,3801,4473,5056,5489,5779,5996,6296,6829,7469, 7910,8039,7999,7948,7935,8077,8553,9386,10267,10832, 10971,10820,10568,10378,10276,10035,9397,8377,7238,6138, 4968,3601,2077,426,-1395,-3282,-4985,-6452,-7937,-9639, -11458,-13232,-14912,-16268,-16876,-16553,-15684,-14893,-14429,-13988, -13227,-12126,-10800,-9182,-7159,-4993,-3219,-2168,-1747,-1611, -1400,-962,-331,377,1077,1766,2556,3470,4300,4813, 5061,5321,5750,6255,6742,7254,7769,8058,7973,7696, 7576,7809,8406,9249,10050,10506,10581,10572,10698,10797, 10647,10267,9737,8986,7986,6899,5884,4775,3291,1457, -385,-2027,-3578,-5144,-6697,-8277,-10103,-12263,-14367,-15728, -16086,-15886,-15591,-15255,-14813,-14306,-13760,-13035,-11846,-10053, -7894,-5807,-4140,-3049,-2483,-2153,-1731,-1149,-592,-154, 348,1165,2200,3108,3729,4187,4612,4994,5339,5774, 6400,7088,7628,7835,7661,7299,7175,7565,8302,9006, 9506,9892,10222,10448,10584,10715,10763,10500,9887,9168, 8494,7731,6722,5479,4099,2514,679,-1150,-2607,-3772, -5143,-7053,-9326,-11546,-13377,-14713,-15541,-15826,-15672,-15355, -15126,-14972,-14688,-14034,-12820,-11027,-8869,-6811,-5264,-4219, -3372,-2602,-2008,-1625,-1271,-759,-94,689,1611,2533, 3254,3732,4111,4477,4840,5310,6075,6966,7513,7481, 7162,7000,7145,7491,8004,8623,9146,9494,9802,10224, 10674,10871,10738,10491,10227,9772,9072,8332,7623,6696, 5240,3337,1507,141,-929,-2205,-3908,-5908,-8048,-10235, -12282,-13893,-14866,-15271,-15318,-15228,-15226,-15376,-15403,-14830, -13457,-11614,-9749,-8006,-6379,-4961,-3865,-3079,-2489,-2024, -1622,-1138,-484,309,1192,2109,2925,3448,3656,3861, 4390,5210,6069,6754,7151,7213,7030,6856,6986,7437, 7912,8218,8512,9024,9635,10102,10398,10632,10790,10687, 10267,9777,9463,9185,8545,7329,5718,4060,2598,1360, 214,-1063,-2676,-4644,-6838,-9085,-11236,-13045,-14175,-14577, -14679,-14971,-15517,-15947,-15898,-15282,-14142,-12607,-10879,-9135, -7444,-5880,-4609,-3753,-3158,-2574,-2009,-1577,-1104,-282, 859,1908,2519,2781,3037,3468,4063,4849,5789,6556, 6835,6752,6699,6844,7061,7224,7436,7829,8311,8727, 9138,9700,10353,10759,10702,10393,10201,10218,10176,9804, 9046,7907,6450,4936,3633,2538,1415,116,-1362,-3129, -5358,-7911,-10249,-11921,-12920,-13539,-14094,-14728,-15412,-15934, -15999,-15526,-14640,-13413,-11832,-10028,-8275,-6767,-5486,-4374, -3498,-2941,-2589,-2124,-1388,-458,546,1464,2082,2315, 2447,2896,3778,4786,5554,6017,6350,6646,6789,6763, 6790,7044,7412,7653,7789,8142,8878,9714,10272,10431, 10347,10253,10328,10548,10634,10265,9442,8383,7206,5904, 4542,3345,2430,1501,90,-1923,-4331,-6813,-9023,-10672, -11783,-12658,-13551,-14443,-15209,-15773,-16094,-16019,-15334,-14084, -12616,-11118,-9486,-7738,-6183,-5052,-4274,-3670,-3170,-2687, -1986,-925,255,1069,1339,1468,1922,2698,3499,4208, 4929,5662,6168,6329,6368,6553,6839,7023,7040,7069, 7309,7850,8644,9448,9920,9958,9878,10057,10477,10761, 10697,10404,9933,9089,7824,6406,5191,4320,3646,2767, 1306,-792,-3249,-5614,-7607,-9244,-10641,-11784,-12707,-13641, -14683,-15576,-16004,-15949,-15523,-14747,-13587,-12083,-10401,-8695, -7099,-5772,-4895,-4417,-4008,-3283,-2188,-1074,-252,298, 756,1206,1647,2172,2957,3905,4722,5262,5636,5984, 6324,6623,6821,6832,6686,6655,7049,7828,8585,9064, 9347,9571,9776,10009,10313,10637,10851,10807,10394,9523, 8263,6958,6095,5651,5134,4072,2401,339,-1929,-4292, -6524,-8386,-9866,-11159,-12456,-13740,-14885,-15836,-16541,-16840, -16627,-15967,-15018,-13744,-12001,-9963,-8160,-6987,-6289,-5584, -4658,-3667,-2728,-1773,-819,-77,391,753,1262,2017, 2909,3798,4550,5088,5517,6061,6703,7108,7077,6833, 6763,7052,7565,8116,8653,9179,9620,9898,10069,10308, 10687,11167,11620,11732,11233,10200,9006,8003,7262,6628, 5929,4969,3521,1511,-824,-3111,-5159,-6999,-8689,-10199, -11544,-12881,-14265,-15467,-16238,-16615,-16782,-16697,-16015,-14568, -12667,-10824,-9339,-8200,-7242,-6331,-5410,-4423,-3367,-2333, -1420,-707,-247,107,678,1584,2542,3244,3729,4304, 5123,5985,6548,6711,6649,6582,6641,6901,7311,7755, 8258,8854,9366,9582,9608,9864,10553,11387,11882,11829, 11329,10548,9588,8641,7943,7503,6978,6008,4516,2657, 572,-1649,-3820,-5709,-7296,-8855,-10550,-12175,-13482,-14529, -15551,-16539,-17159,-17118,-16414,-15173,-13536,-11800,-10316,-9146, -8121,-7130,-6145,-5101,-3926,-2760,-1884,-1382,-974,-315, 565,1362,1938,2468,3120,3955,4891,5711,6216,6389, 6407,6449,6537,6662,6936,7459,8138,8678,8881,8893, 9076,9621,10413,11203,11752,11853,11427,10625,9778,9129, 8642,8144,7569,6800,5573,3768,1629,-446,-2283,-4076, -6012,-7937,-9598,-10984,-12294,-13661,-15056,-16305,-17115,-17263, -16754,-15724,-14316,-12719,-11202,-9991,-9084,-8162,-6932,-5526, -4289,-3391,-2716,-2047,-1296,-509,210,786,1260,1815, 2622,3605,4515,5216,5760,6182,6355,6258,6152,6341, 6838,7434,7916,8227,8402,8490,8668,9226,10199,11170, 11691,11691,11359,10832,10155,9453,8971,8773,8482,7648, 6252,4606,2902,1101,-831,-2852,-4870,-6721,-8305,-9693, -11093,-12696,-14392,-15773,-16626,-17031,-16935,-16138,-14729,-13206, -11996,-11071,-10102,-8865,-7439,-6102,-5047,-4234,-3471,-2580, -1642,-878,-368,58,624,1364,2151,2949,3830,4778, 5574,5943,5912,5807,5895,6195,6645,7176,7647,7872, 7844,7848,8211,8981,9904,10721,11343,11625,11387,10754, 10108,9709,9541,9366,8913,8092,6960,5617,4127,2420, 424,-1720,-3695,-5358,-6848,-8381,-9987,-11620,-13277,-14909, -16263,-17003,-16953,-16210,-15107,-13987,-13017,-12064,-10900,-9485, -8061,-6906,-5985,-5045,-3965,-2903,-2082,-1494,-920,-298, 247,758,1454,2418,3493,4461,5186,5586,5649,5543, 5596,6038,6706,7183,7336,7390,7484,7627,7912,8525, 9518,10598,11306,11446,11158,10710,10316,10109,10006,9765, 9251,8559,7789,6781,5327,3478,1520,-371,-2221,-4019, -5658,-7101,-8544,-10263,-12262,-14217,-15727,-16516,-16579,-16143, -15498,-14786,-13926,-12790,-11439,-10142,-9021,-7924,-6741,-5579, -4545,-3595,-2683,-1884,-1277,-839,-395,208,955,1848, 2957,4115,4901,5128,5061,5120,5484,6006,6461,6799, 7045,7147,7070,7015,7289,8033,9117,10182,10810,10869, 10646,10493,10447,10318,10029,9729,9503,9187,8530,7462, 6095,4515,2732,793,-1153,-2908,-4365,-5676,-7183,-9132, -11402,-13511,-14986,-15749,-16115,-16263,-16056,-15397,-14427,-13361, -12283,-11140,-9903,-8685,-7590,-6488,-5296,-4175,-3248,-2467, -1792,-1293,-943,-500,309,1486,2709,3654,4248,4577, 4761,4936,5264,5781,6328,6736,6939,6891,6669,6569, 6961,7905,9019,9842,10263,10499,10673,10696,10531,10309, 10168,10092,9956,9636,9088,8284,7152,5645,3844,1893, 4,-1552,-2762,-4063,-5862,-8108,-10390,-12292,-13754,-14943, -15815,-16179,-16051,-15600,-14899,-13967,-12901,-11810,-10716,-9561, -8341,-7161,-6044,-4903,-3735,-2753,-2192,-1950,-1640,-982, -21,1084,2174,3097,3770,4187,4422,4632,5010,5629, 6345,6828,6818,6464,6209,6382,6957,7722,8514,9275, 9946,10404,10581,10559,10491,10427,10370,10322,10201,9973, 9660,9157,8193,6627,4663,2771,1273,42,-1304,-2943, -4836,-6898,-9042,-11091,-12841,-14224,-15282,-15976,-16180,-15885, -15277,-14553,-13701,-12630,-11430,-10312,-9304,-8173,-6815,-5401, -4174,-3323,-2863,-2576,-2161,-1434,-457,575,1580,2550, 3345,3744,3839,4069,4743,5676,6379,6544,6328,6118, 6096,6247,6619,7241,8037,8868,9581,10041,10253,10322, 10376,10430,10375,10188,10074,10210,10335,9915,8727,7083, 5447,3992,2629,1266,-136,-1683,-3512,-5602,-7724,-9698, -11543,-13222,-14530,-15341,-15713,-15758,-15499,-14903,-14028,-13057, -12125,-11220,-10198,-8921,-7412,-5908,-4720,-3972,-3482,-3032, -2525,-1888,-1039,57,1283,2298,2814,2996,3291,3933, 4794,5600,6105,6261,6205,6090,6016,6068,6342,6916, 7745,8591,9201,9596,9974,10352,10496,10305,10035,10036, 10364,10746,10800,10290,9223,7804,6318,4974,3766,2499, 1046,-543,-2248,-4133,-6228,-8401,-10415,-12123,-13537,-14687, -15462,-15760,-15609,-15090,-14361,-13655,-13020,-12227,-11075,-9607, -8075,-6735,-5603,-4628,-3951,-3628,-3346,-2678,-1549,-275, 776,1460,1901,2298,2822,3554,4400,5149,5659,5929, 5981,5837,5621,5621,6025,6673,7288,7830,8448,9198, 9839,10075,9938,9727,9693,9902,10305,10739,10867,10401, 9411,8219,7068,5926,4667,3331,2023,648,-983,-2909, -5028,-7160,-9126,-10920,-12593,-14059,-15098,-15529,-15392,-15018, -14690,-14357,-13762,-12832,-11686,-10428,-9017,-7478,-6069,-5108, -4667,-4432,-3961,-3033,-1819,-672,184,769,1265,1847, 2501,3183,3958,4823,5558,5867,5735,5483,5454,5699, 5982,6232,6643,7341,8188,8986,9551,9757,9646,9470, 9520,9921,10483,10885,10942,10605,9897,8941,7862,6716, 5545,4392,3209,1880,285,-1617,-3651,-5616,-7537,-9576, -11630,-13311,-14333,-14797,-15012,-15099,-14977,-14614,-14113,-13490, -12599,-11279,-9646,-8002,-6670,-5858,-5475,-5118,-4402,-3331, -2226,-1302,-526,195,834,1331,1828,2611,3696,4678, 5218,5370,5394,5463,5556,5597,5637,5820,6238,6965, 7923,8795,9268,9314,9180,9179,9454,9910,10388,10788, 10989,10837,10297,9464,8439,7377,6399,5440,4296,2874, 1292,-316,-2018,-3985,-6228,-8506,-10508,-12114,-13352,-14227, -14708,-14865,-14834,-14743,-14591,-14201,-13321,-11871,-10147,-8582, -7447,-6718,-6129,-5448,-4669,-3803,-2802,-1742,-856,-270, 133,639,1432,2412,3371,4187,4771,5110,5319,5491, 5573,5501,5363,5410,5896,6796,7777,8492,8834,8900, 8904,9050,9378,9793,10236,10713,11103,11115,10590,9752, 8949,8251,7425,6292,4988,3770,2595,1168,-650,-2738, -4924,-7095,-9152,-11002,-12511,-13539,-14099,-14382,-14627,-14958, -15177,-14835,-13767,-12306,-10849,-9551,-8398,-7434,-6728,-6168, -5437,-4373,-3187,-2213,-1548,-1056,-537,147,1008,1943, 2848,3624,4241,4780,5246,5498,5428,5151,4965,5120, 5709,6602,7470,8062,8366,8544,8699,8848,9032,9416, 10074,10774,11113,10970,10588,10165,9654,8923,7956,6857, 5808,4820,3702,2295,557,-1432,-3541,-5704,-7922,-10010, -11619,-12610,-13215,-13831,-14610,-15275,-15446,-15038,-14195,-13032, -11654,-10262,-9076,-8214,-7577,-6880,-5933,-4798,-3687,-2817, -2229,-1748,-1130,-287,622,1433,2171,2961,3803,4580, 5149,5381,5227,4904,4774,5055,5674,6403,7103,7771, 8294,8484,8441,8514,8907,9542,10198,10691,10986,11116, 11033,10725,10214,9480,8568,7631,6748,5812,4687,3340, 1797,19,-2143,-4656,-7138,-9144,-10607,-11773,-12855,-13896, -14829,-15556,-15951,-15842,-15138,-13968,-12617,-11349,-10284,-9415, -8640,-7757,-6641,-5429,-4397,-3665,-3080,-2426,-1621,-761, 32,747,1498,2412,3499,4510,5049,5051,4844,4725, 4747,4907,5282,5977,6888,7622,7892,7872,7932,8237, 8725,9262,9752,10196,10654,11033,11136,10886,10367,9764, 9144,8389,7430,6420,5511,4590,3317,1440,-936,-3422, -5662,-7575,-9222,-10640,-11869,-13028,-14197,-15248,-15884,-15894, -15283,-14231,-13043,-11962,-11054,-10212,-9291,-8210,-7040,-5929, -4998,-4279,-3630,-2833,-1911,-1139,-600,-12,911,2129, 3301,4133,4601,4828,4844,4665,4501,4622,5136,5941, 6728,7220,7417,7536,7766,8145,8555,8917,9354,9992, 10658,11046,11069,10895,10681,10346,9702,8764,7852,7212, 6668,5826,4456,2599,411,-1924,-4160,-6125,-7812,-9301, -10695,-12103,-13535,-14831,-15686,-15820,-15295,-14441,-13548,-12693, -11878,-11001,-9935,-8716,-7556,-6617,-5817,-4968,-3987,-3058, -2400,-1923,-1343,-523,487,1573,2642,3618,4356,4671, 4568,4315,4229,4492,5068,5759,6320,6693,6980,7270, 7543,7764,8010,8432,9055,9722,10228,10547,10805,10996, 10915,10445,9718,8955,8340,7889,7408,6635,5403,3674, 1576,-659,-2839,-4805,-6478,-7969,-9512,-11195,-12901,-14387, -15355,-15614,-15264,-14662,-14091,-13528,-12721,-11583,-10347,-9302, -8431,-7507,-6415,-5315,-4417,-3743,-3154,-2545,-1891,-1157, -251,859,2099,3250,4016,4248,4111,3985,4127,4496, 4931,5364,5854,6401,6850,7053,7112,7323,7778,8302, 8753,9192,9740,10362,10860,11051,10914,10485,9864,9269, 8853,8532,8118,7459,6399,4799,2754,571,-1469,-3281, -4938,-6541,-8200,-10047,-11983,-13616,-14570,-14874,-14862,-14782, -14555,-13965,-12997,-11925,-10984,-10130,-9160,-8030,-6861,-5819, -4964,-4237,-3572,-2976,-2441,-1817,-886,392,1796,2954, 3590,3766,3845,4025,4210,4356,4630,5156,5823,6344, 6567,6673,6901,7273,7652,7978,8301,8750,9427,10205, 10772,10969,10837,10479,9992,9514,9171,8978,8768,8252, 7236,5717,3805,1724,-225,-1887,-3396,-5059,-7063,-9235, -11183,-12654,-13702,-14471,-14980,-15138,-14896,-14323,-13554,-12723, -11886,-10976,-9926,-8790,-7676,-6612,-5630,-4775,-4129,-3736, -3376,-2669,-1493,-92,1181,2151,2850,3354,3632,3702, 3760,4016,4464,4995,5499,5884,6150,6404,6733,7070, 7310,7488,7795,8368,9127,9880,10473,10777,10717,10369, 9941,9608,9413,9314,9209,8886,8048,6527,4578,2696, 1151,-258,-1921,-3937,-6062,-8055,-9850,-11474,-12917,-14051, -14713,-14928,-14833,-14508,-13979,-13278,-12436,-11506,-10558,-9553, -8393,-7111,-5945,-5154,-4776,-4495,-3934,-3029,-1939,-759, 479,1642,2531,3042,3259,3378,3582,3936,4378,4809, 5182,5546,5939,6298,6562,6760,6921,7082,7360,7912, 8750,9636,10269,10556,10558,10349,9995,9646,9519,9689, 9857,9538,8523,7017,5421,3988,2630,1077,-765,-2752, -4723,-6634,-8521,-10381,-12074,-13356,-14142,-14567,-14764,-14713, -14314,-13609,-12857,-12206,-11458,-10305,-8843,-7489,-6520,-5903, -5449,-4986,-4397,-3627,-2638,-1432,-104,1123,2003,2478, 2748,3052,3434,3779,4070,4402,4838,5308,5742,6115, 6399,6547,6578,6654,6995,7637,8423,9218,9953,10453, 10510,10166,9725,9580,9842,10217,10268,9787,8865,7713, 6492,5226,3821,2225,476,-1353,-3229,-5181,-7241,-9249, -10958,-12312,-13415,-14244,-14637,-14541,-14189,-13828,-13479,-12925, -11995,-10730,-9349,-8101,-7117,-6392,-5828,-5348,-4861,-4200, -3207,-1909,-575,538,1366,1967,2433,2835,3207,3551, 3848,4136,4525,5083,5652,6022,6169,6223,6289,6424, 6683,7143,7928,8961,9876,10267,10085,9687,9513,9731, 10131,10386,10323,9930,9271,8432,7405,6156,4740,3293, 1795,75,-1908,-3968,-5922,-7811,-9706,-11487,-12875,-13703, -14048,-14149,-14193,-14172,-13937,-13356,-12421,-11267,-10044,-8813, -7709,-6906,-6418,-6056,-5564,-4790,-3761,-2589,-1369,-232, 667,1335,1920,2475,2907,3155,3340,3672,4244,4876, 5338,5614,5827,5997,6024,5931,6013,6603,7667,8773, 9484,9656,9461,9262,9366,9730,10066,10197,10172,10047, 9689,8939,7893,6799,5708,4437,2848,1053,-737,-2510, -4421,-6532,-8684,-10568,-11911,-12763,-13382,-13911,-14281,-14385, -14203,-13755,-13020,-11953,-10638,-9332,-8277,-7535,-7024,-6608, -6091,-5329,-4321,-3167,-2023,-988,-39,861,1635,2166, 2471,2714,3055,3523,4022,4507,5034,5563,5899,5880, 5619,5443,5698,6495,7588,8535,9020,9112,9124,9241, 9442,9658,9895,10163,10344,10247,9845,9254,8537,7681, 6628,5326,3835,2317,792,-921,-2976,-5251,-7430,-9227, -10640,-11798,-12729,-13414,-13904,-14236,-14321,-14059,-13405,-12393, -11157,-9882,-8787,-8047,-7609,-7189,-6556,-5698,-4759,-3822, -2829,-1688,-491,484,1131,1629,2112,2531,2825,3100, 3549,4220,4972,5573,5786,5545,5156,5080,5577,6449, 7308,7976,8479,8816,8955,8987,9108,9422,9862,10213, 10319,10235,10055,9766,9238,8391,7275,6074,4906,3650, 2116,281,-1786,-3980,-6136,-8064,-9663,-10957,-12023,-12939, -13710,-14276,-14553,-14474,-13965,-13011,-11748,-10475,-9504,-8883, -8358,-7709,-6977,-6283,-5576,-4662,-3505,-2288,-1197,-280, 509,1219,1804,2173,2336,2540,3100,4053,5003,5456, 5338,5010,4851,5003,5436,6063,6805,7557,8146,8433, 8498,8585,8872,9323,9726,9918,10031,10201,10318,10126, 9549,8728,7844,6950,5938,4709,3249,1542,-441,-2629, -4806,-6751,-8412,-9850,-11118,-12206,-13145,-13959,-14557,-14684, -14168,-13183,-12108,-11150,-10276,-9441,-8701,-8088,-7529,-6904, -6132,-5180,-4077,-2945,-1906,-925,83,984,1499,1610, 1678,2124,3028,4049,4761,5035,5009,4864,4752,4812, 5135,5755,6563,7284,7701,7890,8091,8407,8759,9049, 9287,9579,9946,10264,10380,10195,9721,9075,8371,7625, 6771,5703,4346,2682,759,-1306,-3406,-5444,-7261,-8726, -9952,-11221,-12584,-13762,-14427,-14513,-14170,-13551,-12698,-11695, -10703,-9822,-9111,-8574,-8062,-7384,-6521,-5618,-4767,-3837, -2665,-1335,-181,511,780,927,1266,1941,2846,3733, 4404,4791,4859,4672,4476,4547,4995,5655,6282,6781, 7201,7599,7951,8225,8451,8691,9018,9441,9888,10235, 10386,10276,9896,9355,8834,8327,7618,6592,5338,3896, 2140,32,-2177,-4137,-5744,-7212,-8751,-10353,-11861,-13086, -13862,-14168,-14114,-13760,-13072,-12104,-11107,-10333,-9793,-9235, -8473,-7650,-6984,-6421,-5671,-4517,-3066,-1703,-755,-210, 145,497,962,1600,2449,3411,4215,4590,4530,4323, 4286,4520,4920,5363,5816,6321,6863,7342,7660,7861, 8064,8324,8662,9125,9673,10109,10252,10122,9884,9612, 9231,8693,8070,7347,6334,4875,3030,1012,-951,-2744, -4390,-6022,-7745,-9508,-11103,-12381,-13357,-14043,-14302,-14000, -13283,-12457,-11737,-11111,-10412,-9586,-8842,-8355,-8022,-7503, -6523,-5146,-3699,-2471,-1524,-835,-383,-57,408,1203, 2246,3265,3985,4284,4296,4282,4379,4562,4828,5201, 5676,6217,6770,7279,7639,7801,7899,8169,8686,9257, 9711,10072,10356,10452,10279,9940,9625,9377,9064,8468, 7447,5973,4161,2267,478,-1251,-3071,-4962,-6803,-8537, -10223,-11863,-13266,-14155,-14421,-14213,-13803,-13332,-12716,-11868, -10908,-10084,-9526,-9141,-8694,-8013,-7023,-5737,-4308,-2994, -2002,-1385,-1024,-642,14,968,2007,2900,3551,3953, 4133,4184,4262,4455,4686,4933,5330,5964,6633,7063, 7232,7357,7615,8002,8430,8883,9403,9922,10274,10353, 10174,9906,9758,9764,9666,9135,8069,6660,5130,3542, 1833,-14,-1889,-3666,-5386,-7240,-9274,-11218,-12683,-13530, -13966,-14224,-14255,-13883,-13128,-12209,-11341,-10645,-10143,-9748, -9340,-8741,-7781,-6430,-4918,-3614,-2755,-2245,-1798,-1216, -463,452,1471,2394,3038,3449,3763,3999,4095,4104, 4217,4585,5147,5734,6233,6617,6881,7076,7293,7606, 8023,8542,9164,9770,10111,10080,9888,9839,10009,10177, 10040,9484,8612,7540,6247,4675,2891,1126,-476,-2090, -3998,-6181,-8341,-10199,-11657,-12776,-13647,-14239,-14416,-14106, -13414,-12576,-11771,-11085,-10591,-10306,-10020,-9392,-8272,-6859, -5459,-4277,-3413,-2844,-2369,-1727,-831,149,1028,1824, 2611,3298,3718,3849,3856,3929,4159,4542,5032,5542, 6025,6449,6764,6939,7057,7287,7763,8457,9163,9641, 9803,9782,9821,10029,10269,10343,10225,9964,9445,8483, 7101,5547,4052,2622,1096,-681,-2721,-4873,-6934,-8801, -10477,-11945,-13104,-13861,-14216,-14131,-13580,-12733,-11921,-11372, -11069,-10843,-10507,-9879,-8811,-7393,-5975,-4909,-4206,-3607, -2905,-2119,-1325,-503,405,1374,2292,3002,3403,3541, 3601,3742,4011,4349,4739,5220,5798,6301,6532,6525, 6548,6892,7588,8340,8842,9092,9307,9582,9806,9919, 10037,10256,10476,10419,9880,8891,7667,6441,5240,3887, 2265,449,-1463,-3473,-5558,-7566,-9365,-10954,-12397,-13554, -14168,-14138,-13634,-12942,-12287,-11804,-11559,-11456,-11168,-10418, -9245,-7952,-6781,-5797,-4952,-4184,-3456,-2752,-2014,-1167, -177,889,1853,2544,2953,3193,3379,3554,3738,3979, 4401,5046,5711,6061,6038,5984,6253,6831,7431,7903, 8324,8767,9147,9364,9459,9592,9907,10360,10673,10567, 10035,9256,8365,7364,6216,4916,3438,1731,-176,-2156, -4117,-6077,-8058,-9973,-11658,-12981,-13806,-13996,-13594,-12923, -12393,-12185,-12150,-11988,-11522,-10761,-9764,-8642,-7528,-6480, -5532,-4738,-4080,-3435,-2677,-1740,-668,395,1313,2047, 2634,3054,3226,3216,3312,3749,4435,5059,5434,5587, 5664,5815,6117,6527,6982,7489,8056,8557,8837,8914, 9042,9404,9921,10379,10626,10601,10273,9663,8903,8109, 7195,5983,4468,2822,1119,-689,-2641,-4676,-6720,-8771, -10776,-12443,-13399,-13572,-13259,-12866,-12641,-12592,-12528,-12279, -11832,-11208,-10381,-9345,-8192,-7063,-6098,-5368,-4779,-4111, -3225,-2222,-1266,-335,697,1741,2486,2753,2732,2803, 3175,3766,4351,4792,5088,5335,5555,5706,5852,6167, 6725,7386,7908,8205,8395,8613,8892,9280,9799,10326, 10628,10617,10373,10010,9533,8860,7957,6844,5510,3967, 2314,645,-1100,-3065,-5290,-7654,-9890,-11633,-12645,-12979, -12944,-12846,-12818,-12821,-12747,-12524,-12168,-11687,-10972,-9925, -8689,-7599,-6807,-6131,-5360,-4517,-3742,-2998,-2087,-920, 342,1389,1978,2161,2263,2577,3091,3593,4009,4446, 4909,5216,5272,5287,5505,5962,6532,7086,7542,7841, 8012,8212,8582,9104,9636,10067,10378,10529,10456,10201, 9846,9384,8683,7640,6302,4852,3451,2056,435,-1599, -4013,-6535,-8838,-10647,-11803,-12386,-12673,-12857,-12934,-12897, -12851,-12860,-12737,-12238,-11370,-10367,-9394,-8461,-7534,-6629, -5835,-5206,-4626,-3845,-2713,-1362,-131,740,1296,1696, 2026,2335,2715,3227,3811,4333,4695,4898,4995,5073, 5278,5741,6379,6921,7231,7418,7648,7986,8412,8893, 9399,9882,10247,10430,10452,10401,10294,9990,9310,8246, 7012,5825,4709,3490,1914,-184,-2704,-5281,-7542,-9360, -10782,-11788,-12316,-12494,-12604,-12822,-13078,-13159,-12921,-12411, -11752,-11005,-10122,-9052,-7930,-7030,-6479,-6037,-5356,-4344, -3158,-1971,-848,144,873,1303,1602,1980,2465,3000, 3568,4114,4502,4654,4678,4791,5139,5667,6205,6620, 6910,7140,7387,7701,8120,8648,9192,9617,9905,10151, 10407,10603,10608,10329,9675,8669,7582,6699,5926,4839, 3167,1021,-1317,-3686,-6037,-8193,-9874,-10964,-11588,-12001, -12423,-12871,-13161,-13157,-12958,-12710,-12346,-11645,-10568,-9377, -8414,-7756,-7223,-6637,-5904,-4961,-3808,-2571,-1415,-434, 326,843,1197,1562,2097,2765,3412,3896,4164,4289, 4421,4669,5026,5463,5948,6373,6637,6780,6994,7400, 7928,8430,8850,9198,9508,9867,10315,10728,10834,10460, 9727,8945,8297,7691,6917,5822,4328,2435,219,-2240, -4759,-7009,-8704,-9870,-10764,-11571,-12242,-12658,-12873,-13062, -13236,-13186,-12752,-11966,-10967,-9923,-9013,-8353,-7857,-7302, -6539,-5575,-4476,-3285,-2080,-1005,-221,254,619,1129, 1832,2550,3116,3513,3807,4019,4168,4384,4780,5281, 5716,6016,6221,6400,6650,7063,7618,8137,8438,8617, 8986,9668,10376,10748,10690,10337,9868,9372,8850,8271, 7598,6750,5556,3831,1553,-1010,-3431,-5505,-7299,-8868, -10130,-11021,-11643,-12171,-12665,-13091,-13383,-13418,-13060,-12312, -11355,-10399,-9594,-8968,-8441,-7875,-7170,-6263,-5147,-3872, -2611,-1613,-923,-377,178,798,1482,2195,2821,3248, 3494,3689,3937,4252,4637,5101,5541,5782,5848,6007, 6438,7012,7469,7695,7840,8172,8812,9603,10236,10518, 10509,10371,10114,9671,9139,8715,8395,7841,6674,4882, 2744,486,-1808,-4048,-6094,-7833,-9186,-10177,-10933,-11614, -12302,-12959,-13413,-13493,-13157,-12518,-11730,-10896,-10081,-9398, -8911,-8461,-7783,-6785,-5602,-4405,-3273,-2272,-1494,-921, -344,386,1193,1904,2476,2917,3212,3402,3646,4070, 4599,5016,5209,5293,5490,5892,6406,6830,7044,7152, 7397,7922,8628,9295,9845,10287,10526,10423,10046,9656, 9429,9328,9119,8553,7492,5955,4061,1935,-338,-2662, -4852,-6731,-8175,-9228,-10106,-11025,-11979,-12768,-13254,-13419, -13284,-12822,-12052,-11178,-10467,-9983,-9567,-9052,-8342,-7399, -6245,-5026,-3927,-3011,-2232,-1525,-843,-107,720,1555, 2185,2522,2723,3016,3490,4033,4455,4661,4745,4932, 5356,5871,6224,6389,6554,6826,7162,7560,8130,8898, 9673,10180,10307,10159,9918,9746,9705,9708,9573,9127, 8265,6982,5339,3355,1068,-1361,-3619,-5468,-6923,-8168, -9331,-10412,-11416,-12359,-13119,-13493,-13406,-12969,-12318,-11573, -10904,-10446,-10132,-9691,-8917,-7885,-6795,-5709,-4624,-3628, -2826,-2153,-1415,-497,489,1291,1769,2025,2337,2882, 3536,3991,4148,4236,4512,4962,5395,5711,5975,6230, 6449,6601,6776,7164,7869,8761,9539,9982,10088,10000, 9880,9857,9935,9988,9882,9563,9003,8113,6715,4739, 2416,57,-2172,-4174,-5858,-7248,-8503,-9773,-11060,-12227, -13117,-13640,-13726,-13367,-12738,-12108,-11627,-11249,-10861,-10362, -9663,-8718,-7581,-6407,-5342,-4457,-3705,-2914,-1932,-816, 145,746,1125,1590,2237,2893,3372,3669,3898,4157, 4492,4868,5266,5659,5995,6197,6255,6306,6505,6982, 7763,8670,9422,9820,9912,9950,10066,10172,10187,10199, 10281,10294,9978,9149,7786,5952,3754,1392,-857,-2838, -4559,-6094,-7505,-8885,-10321,-11731,-12845,-13434,-13547,-13353, -12963,-12473,-12020,-11678,-11375,-10965,-10306,-9323,-8135,-7013, -6149,-5423,-4557,-3453,-2292,-1321,-594,11,637,1315, 1966,2527,2998,3379,3659,3890,4178,4608,5121,5562, 5847,5977,5961,5922,6125,6730,7585,8393,8980,9393, 9702,9897,9970,10005,10097,10266,10452,10590,10508,9952, 8773,7062,5026,2823,588,-1471,-3214,-4726,-6224,-7846, -9519,-11052,-12241,-12984,-13304,-13296,-13042,-12628,-12239,-12047, -11929,-11537,-10708,-9626,-8622,-7829,-7099,-6196,-5075,-3906, -2883,-2026,-1257,-513,200,876,1547,2179,2693,3066, 3349,3593,3899,4362,4974,5512,5742,5656,5528,5618, 5964,6487,7143,7879,8570,9082,9399,9602,9732,9786, 9862,10087,10456,10773,10821,10455,9561,8089,6148,3986, 1858,-79,-1801,-3399,-5048,-6828,-8619,-10240,-11585,-12566, -13088,-13143,-12909,-12673,-12610,-12600,-12371,-11772,-10923,-10067, -9339,-8635,-7780,-6754,-5666,-4595,-3590,-2702,-1907,-1121, -325,426,1114,1785,2398,2793,2953,3123,3578,4289, 4946,5306,5388,5371,5358,5423,5670,6142,6773,7452, 8137,8745,9158,9341,9390,9458,9612,9896,10319,10779, 11055,10936,10263,8946,7115,5107,3174,1355,-406,-2133, -3837,-5579,-7434,-9311,-10929,-12016,-12505,-12603,-12643,-12791, -12923,-12832,-12473,-11934,-11304,-10652,-9993,-9280,-8400,-7341, -6236,-5224,-4281,-3340,-2447,-1664,-927,-89,831,1601, 2054,2290,2533,2918,3470,4136,4763,5144,5238,5201, 5218,5331,5516,5847,6419,7153,7877,8476,8885,9111, 9215,9290,9412,9688,10188,10839,11367,11420,10802,9615, 8076,6350,4529,2686,929,-692,-2310,-4182,-6345,-8448, -10051,-11058,-11683,-12148,-12531,-12819,-12949,-12859,-12543,-12101, -11640,-11160,-10561,-9790,-8902,-7960,-6933,-5828,-4782,-3927, -3196,-2379,-1399,-389,490,1152,1593,1877,2167,2635, 3296,3979,4525,4880,5055,5113,5123,5143,5249,5545, 6087,6800,7525,8135,8587,8874,8973,8939,8988,9342, 10028,10817,11383,11500,11119,10281,8999,7346,5546,3869, 2364,819,-993,-3119,-5358,-7405,-9021,-10176,-11028,-11781, -12451,-12883,-12982,-12864,-12714,-12517,-12145,-11610,-11046,-10473, -9709,-8664,-7510,-6476,-5604,-4805,-3988,-3049,-1961,-871, -3,579,988,1364,1807,2348,2976,3624,4201,4626, 4870,4938,4897,4884,4994,5259,5693,6313,7068,7798, 8329,8568,8542,8465,8613,9090,9777,10501,11150,11567, 11492,10762,9500,8030,6577,5182,3750,2145,233,-1986, -4248,-6220,-7796,-9139,-10370,-11402,-12112,-12540,-12824,-12962, -12873,-12628,-12359,-12064,-11657,-11071,-10252,-9225,-8132,-7149, -6351,-5614,-4744,-3648,-2464,-1396,-582,-5,468,952, 1455,1984,2596,3291,3940,4413,4656,4731,4744,4769, 4822,4944,5276,5938,6830,7618,8050,8168,8183,8252, 8418,8741,9349,10234,11128,11680,11660,11047,9995,8779, 7627,6503,5154,3401,1349,-748,-2778,-4759,-6602,-8175, -9484,-10615,-11554,-12219,-12590,-12735,-12735,-12658,-12547,-12380, -12063,-11468,-10602,-9585,-8607,-7785,-7067,-6280,-5286,-4123, -2952,-1934,-1117,-472,70,572,1081,1647,2322,3059, 3709,4173,4473,4682,4773,4693,4554,4622,5076,5826, 6617,7266,7730,7983,8028,7987,8051,8375,9044,10015, 11050,11721,11688,11076,10305,9588,8766,7644,6209,4545, 2691,679,-1405,-3417,-5274,-6963,-8477,-9818,-10939,-11745, -12205,-12402,-12495,-12604,-12707,-12681,-12373,-11738,-10890,-10018, -9241,-8532,-7789,-6923,-5900,-4764,-3620,-2573,-1692,-1012, -473,43,631,1300,1971,2597,3217,3854,4365,4587, 4530,4369,4304,4443,4840,5488,6265,6952,7426,7693, 7752,7621,7536,7869,8743,9875,10826,11323,11378,11136, 10716,10172,9472,8515,7241,5683,3906,1971,-53,-2053, -3945,-5729,-7420,-8966,-10245,-11137,-11649,-11969,-12289,-12637, -12890,-12890,-12562,-11959,-11241,-10538,-9862,-9162,-8395,-7544, -6574,-5441,-4211,-3105,-2281,-1654,-1022,-335,299,840, 1412,2150,2981,3692,4162,4392,4379,4216,4126,4276, 4646,5177,5878,6695,7351,7553,7338,7080,7159,7692, 8556,9532,10375,10916,11127,11094,10894,10567,10054,9250, 8122,6705,5052,3212,1279,-648,-2556,-4481,-6377,-8085, -9428,-10353,-10979,-11521,-12081,-12605,-12933,-12946,-12660,-12199, -11654,-11040,-10381,-9732,-9074,-8262,-7192,-5980,-4848,-3881, -3004,-2184,-1463,-842,-268,294,914,1688,2603,3430, 3925,4099,4137,4135,4076,4018,4206,4824,5750,6613, 7086,7098,6852,6699,6874,7405,8184,9054,9858,10458, 10816,10970,10965,10822,10510,9908,8929,7615,6084,4431, 2682,801,-1219,-3312,-5339,-7100,-8458,-9457,-10289,-11090, -11838,-12436,-12809,-12951,-12823,-12420,-11875,-11385,-10964,-10432, -9685,-8779,-7779,-6695,-5579,-4538,-3605,-2731,-1940,-1323, -858,-328,444,1378,2260,2984,3560,3974,4138,4007, 3741,3641,3958,4692,5610,6386,6778,6759,6550,6472, 6689,7180,7865,8646,9426,10081,10536,10812,11004,11104, 10967,10467,9588,8423,7109,5693,4096,2215,67,-2153, -4184,-5897,-7346,-8591,-9633,-10517,-11371,-12184,-12751,-12922, -12779,-12510,-12215,-11877,-11466,-10931,-10229,-9351,-8401,-7433, -6399,-5256,-4123,-3201,-2536,-1990,-1407,-725,32,839, 1709,2617,3409,3890,3970,3741,3440,3396,3809,4599, 5471,6130,6430,6430,6321,6284,6457,6889,7526,8246, 8951,9575,10100,10562,10963,11220,11197,10780,10014,9092, 8112,6929,5347,3402,1298,-818,-2862,-4702,-6230,-7508, -8691,-9845,-10907,-11778,-12389,-12681,-12674,-12519,-12370,-12195, -11839,-11249,-10553,-9858,-9104,-8137,-6949,-5736,-4713,-3898, -3175,-2475,-1815,-1205,-556,259,1274,2361,3260,3739, 3734,3431,3188,3275,3740,4466,5245,5869,6183,6199, 6080,6064,6267,6679,7228,7855,8485,9081,9689,10351, 10935,11232,11194,10925,10506,9906,9076,7982,6560,4737, 2620,461,-1538,-3324,-4916,-6348,-7690,-9011,-10251,-11244, -11877,-12198,-12372,-12508,-12538,-12334,-11934,-11489,-11051,-10492, -9694,-8672,-7539,-6430,-5425,-4517,-3691,-2948,-2340,-1843, -1255,-341,876,2100,3000,3406,3382,3161,3018,3136, 3588,4294,5033,5601,5899,5946,5855,5841,6076,6507, 6946,7351,7864,8577,9374,10070,10610,10975,11114,11000, 10723,10347,9794,8885,7535,5791,3786,1697,-288,-2050, -3630,-5187,-6801,-8337,-9595,-10544,-11301,-11930,-12364,-12547, -12526,-12406,-12228,-11961,-11576,-11025,-10274,-9342,-8317,-7265, -6194,-5145,-4223,-3539,-3090,-2666,-1986,-924,377,1621, 2530,2956,2961,2799,2742,2922,3360,4018,4761,5324, 5544,5542,5567,5726,5955,6181,6453,6834,7368,8067, 8875,9637,10214,10579,10782,10861,10835,10670,10304,9635, 8494,6824,4841,2887,1112,-582,-2343,-4160,-5867,-7351, -8636,-9782,-10772,-11541,-12044,-12294,-12386,-12426,-12410,-12245, -11884,-11353,-10704,-9953,-9037,-7900,-6658,-5548,-4715,-4155, -3754,-3298,-2542,-1392,-28,1221,2116,2597,2716,2604, 2524,2745,3301,3972,4547,4969,5253,5407,5514,5656, 5831,5987,6140,6424,6976,7752,8564,9265,9831,10268, 10560,10740,10898,11038,10950,10362,9213,7693,6026,4317, 2569,758,-1107,-2948,-4655,-6207,-7657,-9000,-10152,-11011, -11552,-11898,-12210,-12475,-12543,-12354,-12038,-11698,-11271,-10613, -9652,-8448,-7171,-6054,-5285,-4846,-4487,-3927,-3073,-1939, -605,726,1714,2175,2245,2222,2337,2658,3141,3708, 4243,4656,4956,5214,5455,5619,5674,5696,5815,6126, 6636,7331,8142,8904,9441,9759,10072,10514,10997,11310, 11257,10746,9821,8605,7173,5556,3807,1967,112,-1682, -3390,-5056,-6688,-8163,-9353,-10257,-10979,-11586,-12052,-12334, -12423,-12357,-12202,-12037,-11795,-11234,-10209,-8899,-7654,-6663, -5946,-5459,-5086,-4597,-3744,-2493,-1069,220,1155,1675, 1860,1942,2149,2547,3028,3480,3899,4341,4802,5166, 5364,5470,5556,5583,5588,5765,6280,7077,7897,8512, 8900,9249,9748,10392,11000,11376,11397,11050,10394,9463, 8219,6664,4933,3196,1468,-342,-2227,-4041,-5677,-7161, -8489,-9608,-10521,-11272,-11819,-12102,-12212,-12295,-12414,-12465, -12266,-11692,-10722,-9489,-8227,-7198,-6538,-6161,-5807,-5239, -4331,-3085,-1670,-364,570,1070,1345,1639,1988,2334, 2680,3089,3572,4071,4526,4914,5223,5389,5369,5242, 5202,5457,6038,6776,7432,7898,8264,8733,9395,10138, 10759,11149,11328,11295,10925,10113,8948,7594,6100,4470, 2731,887,-1033,-2881,-4530,-6018,-7450,-8817,-9972,-10778, -11280,-11634,-11953,-12242,-12500,-12685,-12631,-12139,-11158,-9910, -8709,-7777,-7159,-6789,-6473,-5908,-4902,-3561,-2194,-1024, -116,545,1022,1392,1729,2092,2480,2854,3243,3736, 4329,4871,5197,5264,5143,4993,5019,5343,5912,6501, 6947,7322,7805,8421,9070,9718,10365,10927,11302,11406, 11172,10556,9605,8456,7175,5692,3942,2026,152,-1566, -3206,-4869,-6523,-8026,-9237,-10115,-10716,-11148,-11553,-12040, -12554,-12896,-12898,-12467,-11581,-10367,-9153,-8278,-7808,-7533, -7130,-6413,-5404,-4215,-2958,-1748,-738,-4,533,1013, 1474,1860,2151,2434,2847,3441,4140,4754,5052,4984, 4794,4776,4978,5283,5628,6025,6453,6894,7366,7908, 8525,9210,9926,10622,11158,11378,11246,10838,10207,9321, 8141,6664,4971,3206,1438,-297,-2014,-3748,-5525,-7194, -8509,-9401,-10032,-10606,-11201,-11827,-12458,-12988,-13177,-12791, -11859,-10683,-9648,-8937,-8487,-8122,-7662,-6981,-6028,-4861, -3625,-2482,-1481,-625,83,673,1178,1547,1757,1983, 2489,3279,4063,4551,4704,4680,4666,4737,4889,5122, 5410,5741,6124,6552,6983,7442,8019,8768,9605,10347, 10862,11167,11311,11222,10802,10044,8981,7635,6065,4420, 2791,1125,-667,-2582,-4487,-6179,-7537,-8551,-9284,-9881, -10559,-11425,-12340,-13021,-13204,-12815,-12007,-11024,-10095,-9407, -8982,-8633,-8149,-7444,-6528,-5428,-4259,-3159,-2154,-1188, -273,459,897,1094,1293,1707,2370,3154,3854,4298, 4481,4538,4608,4720,4843,4996,5243,5588,5942,6239, 6537,6996,7658,8428,9192,9901,10508,10975,11289,11416, 11230,10625,9618,8382,7062,5652,4089,2379,563,-1354, -3333,-5185,-6652,-7642,-8343,-9076,-10008,-11086,-12120,-12887, -13158,-12860,-12162,-11314,-10507,-9877,-9458,-9122,-8656,-7925, -6991,-6033,-5091,-4047,-2847,-1642,-649,2,352,582, 893,1404,2104,2864,3503,3945,4223,4394,4476,4530, 4667,4901,5158,5388,5598,5823,6118,6551,7182,7958, 8720,9367,9963,10600,11191,11508,11402,10894,10106,9126, 7978,6676,5248,3668,1832,-247,-2346,-4193,-5623,-6641, -7447,-8320,-9426,-10680,-11831,-12651,-13022,-12910,-12379,-11622, -10920,-10443,-10099,-9672,-9059,-8340,-7621,-6876,-5963,-4798, -3462,-2181,-1190,-590,-245,91,557,1117,1748,2455, 3156,3689,3982,4119,4238,4397,4586,4798,5025,5212, 5333,5456,5732,6228,6850,7487,8102,8774,9550,10340, 10997,11410,11488,11162,10488,9641,8728,7693,6434,4868, 2979,849,-1300,-3146,-4522,-5551,-6502,-7561,-8779,-10108, -11394,-12399,-12882,-12800,-12360,-11854,-11420,-11017,-10549,-10003, -9421,-8851,-8309,-7664,-6719,-5433,-4014,-2777,-1871,-1232, -740,-310,134,688,1380,2133,2815,3346,3692,3883, 4022,4225,4513,4796,4952,4986,5046,5265,5607,5991, 6433,6964,7580,8270,9048,9902,10702,11238,11397,11200, 10746,10147,9486,8712,7636,6096,4135,1985,-77,-1857, -3291,-4428,-5428,-6532,-7910,-9469,-10891,-11891,-12392,-12482, -12326,-12057,-11731,-11298,-10730,-10152,-9700,-9352,-8926,-8233, -7225,-5977,-4636,-3392,-2419,-1735,-1210,-718,-200,384, 1074,1849,2592,3133,3407,3587,3863,4232,4535,4695, 4765,4832,4950,5141,5404,5721,6080,6507,7060,7767, 8599,9509,10392,11030,11252,11106,10815,10544,10228,9631, 8583,7092,5244,3159,1069,-736,-2129,-3227,-4307,-5598, -7159,-8817,-10254,-11258,-11853,-12202,-12387,-12338,-11996,-11467, -10932,-10512,-10202,-9907,-9497,-8849,-7895,-6665,-5330,-4120, -3145,-2373,-1757,-1258,-756,-104,705,1499,2126,2581, 2954,3311,3676,4033,4327,4494,4555,4632,4788,4989, 5191,5405,5661,6003,6473,7134,8042,9089,10011,10584, 10812,10867,10877,10845,10702,10287,9431,8055,6225,4154, 2147,448,-883,-2001,-3211,-4709,-6391,-7993,-9350,-10438, -11313,-11970,-12329,-12323,-12021,-11581,-11128,-10780,-10572,-10369, -9974,-9309,-8402,-7288,-6018,-4751,-3705,-2960,-2405,-1837, -1164,-420,342,1058,1662,2156,2607,3064,3504,3871, 4128,4293,4417,4536,4682,4878,5104,5267,5341,5484, 5928,6716,7697,8672,9507,10115,10475,10656,10808,11001, 11116,10936,10257,8962,7143,5134,3301,1795,513,-773, -2205,-3768,-5363,-6909,-8360,-9638,-10698,-11537,-12065,-12172, -11898,-11481,-11168,-10994,-10852,-10637,-10326,-9826,-9013,-7879, -6590,-5378,-4397,-3651,-3011,-2342,-1592,-805,-70,572, 1151,1738,2319,2826,3251,3645,3972,4144,4220,4372, 4656,4938,5050,4996,4943,5087,5541,6310,7244,8171, 8987,9600,9986,10237,10554,11006,11421,11466,10840,9538, 7852,6132,4531,3052,1651,249,-1219,-2769,-4334,-5847, -7328,-8802,-10148,-11160,-11730,-11905,-11818,-11577,-11314,-11153, -11093,-11037,-10841,-10364,-9549,-8446,-7220,-6089,-5188,-4450, -3689,-2858,-2052,-1329,-652,21,680,1289,1878,2481, 3034,3416,3624,3783,3997,4298,4628,4861,4880,4737, 4624,4737,5159,5865,6757,7692,8503,9046,9357,9683, 10266,11036,11634,11722,11168,10060,8624,7105,5659,4260, 2806,1281,-233,-1691,-3162,-4739,-6402,-8027,-9465,-10592, -11344,-11702,-11711,-11524,-11351,-11299,-11350,-11405,-11305,-10858, -10019,-8950,-7865,-6869,-5955,-5082,-4253,-3443,-2615,-1796, -1088,-487,123,820,1567,2253,2774,3098,3309,3541, 3879,4281,4625,4792,4763,4606,4440,4433,4765,5491, 6448,7324,7927,8323,8707,9253,10026,10922,11645,11843, 11388,10458,9309,8078,6751,5305,3788,2309,916,-488, -2002,-3629,-5332,-7044,-8620,-9906,-10815,-11313,-11430,-11308, -11189,-11280,-11532,-11672,-11511,-11056,-10371,-9476,-8463,-7474, -6581,-5732,-4848,-3922,-3030,-2267,-1639,-1040,-344,474, 1308,1986,2423,2710,2999,3364,3776,4184,4567,4831, 4812,4506,4180,4183,4639,5398,6209,6897,7382,7730, 8157,8851,9818,10828,11551,11787,11555,10967,10085,8963, 7684,6296,4844,3417,2063,711,-775,-2438,-4188,-5933, -7624,-9147,-10252,-10798,-10933,-10962,-11087,-11333,-11605,-11752, -11679,-11338,-10713,-9891,-9002,-8129,-7268,-6365,-5387,-4400, -3535,-2853,-2263,-1584,-748,139,921,1530,2002,2379, 2690,3025,3508,4094,4581,4778,4637,4282,3991,4028, 4488,5211,5920,6404,6689,7004,7582,8437,9424,10370, 11123,11554,11593,11255,10600,9639,8422,7088,5775,4474, 3119,1732,315,-1232,-3008,-4951,-6836,-8415,-9536,-10201, -10525,-10710,-10937,-11279,-11638,-11843,-11794,-11487,-10958,-10292, -9573,-8803,-7924,-6922,-5897,-4991,-4249,-3566,-2840,-2068, -1254,-389,454,1137,1580,1874,2201,2698,3342,3991, 4479,4651,4443,4028,3760,3918,4459,5079,5535,5814, 6071,6463,7090,7959,8949,9883,10678,11294,11612,11503, 10966,10137,9129,7962,6667,5343,4098,2904,1584,-20, -1909,-3911,-5817,-7444,-8671,-9463,-9924,-10252,-10620,-11083, -11543,-11825,-11812,-11548,-11178,-10761,-10186,-9370,-8397,-7412, -6489,-5636,-4846,-4131,-3444,-2674,-1759,-785,67,683, 1080,1378,1759,2352,3141,3918,4404,4443,4150,3821, 3719,3940,4402,4880,5166,5306,5530,5986,6637,7416, 8297,9269,10228,10993,11423,11490,11222,10613,9683,8535, 7319,6165,5099,4015,2728,1116,-790,-2828,-4778,-6479, -7818,-8725,-9294,-9785,-10376,-10984,-11422,-11630,-11677,-11651, -11521,-11185,-10599,-9825,-8933,-7968,-7023,-6191,-5482,-4809, -4063,-3199,-2229,-1225,-337,248,536,793,1320,2139, 3042,3783,4184,4190,3929,3707,3750,4032,4364,4616, 4804,4994,5235,5566,6068,6800,7720,8718,9662,10483, 11112,11450,11399,10928,10110,9083,8014,7025,6105,5102, 3866,2303,403,-1690,-3717,-5429,-6732,-7720,-8566,-9341, -10030,-10596,-11039,-11364,-11569,-11655,-11622,-11434,-11003,-10286, -9370,-8428,-7558,-6774,-6086,-5453,-4719,-3758,-2631,-1576, -794,-324,-49,296,953,1916,2914,3607,3863,3837, 3762,3754,3834,3994,4220,4461,4641,4738,4853,5136, 5648,6351,7196,8132,9096,10049,10897,11435,11517,11155, 10475,9612,8683,7784,6979,6160,5052,3448,1442,-649, -2565,-4226,-5663,-6900,-7936,-8802,-9561,-10229,-10747,-11123, -11426,-11683,-11818,-11734,-11373,-10737,-9866,-8910,-8063,-7410, -6842,-6183,-5318,-4245,-3068,-2008,-1294,-954,-716,-207, 682,1730,2613,3179,3492,3648,3692,3699,3787,3977, 4203,4392,4479,4490,4568,4832,5286,5868,6568,7439, 8491,9596,10545,11202,11469,11299,10735,9939,9135,8477, 7907,7168,6019,4420,2534,564,-1328,-3044,-4569,-5936, -7146,-8163,-8984,-9675,-10283,-10787,-11186,-11540,-11837,-11933, -11663,-11013,-10151,-9271,-8530,-7975,-7487,-6836,-5854,-4605, -3380,-2488,-1985,-1654,-1220,-544,358,1342,2202,2813, 3191,3407,3513,3602,3759,3990,4194,4283,4294,4330, 4441,4628,4909,5343,5988,6848,7870,8987,10090,10968, 11376,11231,10719,10130,9614,9152,8656,7969,6909,5411, 3611,1737,-76,-1821,-3482,-4989,-6295,-7421,-8376,-9143, -9753,-10313,-10871,-11410,-11834,-12013,-11829,-11250,-10417,-9619, -9091,-8763,-8312,-7487,-6330,-5081,-4004,-3235,-2723,-2290, -1759,-1036,-140,826,1712,2372,2761,2991,3202,3449, 3686,3861,3979,4083,4165,4203,4227,4312,4539,4890, 5356,6052,7099,8391,9633,10532,10967,10956,10637,10230, 9899,9627,9241,8584,7589,6257,4637,2856,1064,-670, -2356,-3973,-5442,-6664,-7635,-8443,-9170,-9841,-10507,-11208, -11842,-12144,-11928,-11291,-10563,-10033,-9738,-9448,-8884,-7930, -6741,-5593,-4642,-3901,-3319,-2825,-2281,-1537,-573,437, 1282,1877,2314,2704,3068,3354,3564,3760,3957,4079, 4107,4133,4212,4305,4372,4486,4814,5510,6593,7921, 9221,10163,10583,10615,10501,10354,10199,10016,9732,9215, 8355,7130,5656,4068,2387,618,-1164,-2857,-4395,-5721, -6795,-7632,-8342,-9123,-10064,-11025,-11732,-11957,-11691,-11169, -10705,-10443,-10264,-9924,-9279,-8340,-7237,-6144,-5192,-4451, -3906,-3404,-2758,-1903,-957,-65,732,1425,1980,2410, 2789,3165,3490,3698,3814,3927,4068,4185,4233,4198, 4100,4053,4266,4928,6046,7388,8623,9524,10055,10286, 10328,10326,10349,10320,10110,9658,8932,7919,6629,5127, 3510,1809,20,-1807,-3511,-4896,-5906,-6685,-7500,-8550, -9760,-10822,-11452,-11609,-11450,-11182,-10953,-10804,-10655,-10357, -9768,-8837,-7701,-6635,-5813,-5164,-4549,-3907,-3227,-2435, -1509,-558,263,910,1474,2030,2547,2966,3268,3465, 3623,3806,4033,4230,4282,4108,3823,3678,3882,4505, 5527,6800,8040,8971,9529,9850,10093,10296,10421,10448, 10351,10068,9496,8606,7468,6171,4724,3057,1145,-841, -2579,-3857,-4783,-5649,-6715,-8016,-9325,-10345,-10963,-11225, -11235,-11114,-11026,-11044,-11044,-10780,-10125,-9192,-8193,-7257, -6426,-5729,-5121,-4499,-3766,-2918,-2007,-1124,-331,372, 1030,1670,2280,2758,3029,3185,3406,3763,4136,4342, 4294,4032,3670,3413,3514,4105,5101,6285,7418,8336, 9016,9501,9863,10149,10380,10559,10611,10402,9892,9176, 8324,7285,5923,4148,2087,93,-1510,-2691,-3686,-4767, -6041,-7432,-8784,-9889,-10573,-10856,-10941,-11045,-11195,-11310, -11300,-11051,-10483,-9641,-8680,-7774,-7010,-6353,-5716,-5035, -4273,-3426,-2538,-1702,-945,-201,596,1372,1979,2369, 2634,2906,3245,3668,4118,4404,4339,3948,3471,3187, 3293,3823,4675,5697,6755,7709,8446,8972,9413,9864, 10290,10573,10615,10418,10102,9735,9210,8301,6860,5010, 3052,1245,-294,-1542,-2616,-3766,-5162,-6715,-8131,-9179, -9851,-10282,-10597,-10864,-11132,-11390,-11497,-11297,-10768,-10003, -9142,-8313,-7590,-6957,-6310,-5552,-4717,-3909,-3167,-2398, -1545,-657,194,960,1568,1973,2248,2551,2999,3591, 4159,4436,4289,3840,3367,3088,3111,3481,4193,5159, 6182,7062,7734,8320,8962,9640,10149,10338,10320,10316, 10352,10260,9837,8957,7586,5835,3958,2239,832,-344, -1524,-2880,-4409,-5978,-7392,-8493,-9242,-9761,-10219,-10680, -11103,-11427,-11592,-11491,-11040,-10315,-9541,-8875,-8259,-7568, -6792,-6004,-5257,-4537,-3803,-3014,-2130,-1175,-235,561, 1124,1472,1763,2189,2817,3532,4101,4349,4240,3852, 3374,3016,2934,3241,3928,4793,5589,6274,6996,7824, 8651,9308,9704,9898,10036,10239,10514,10685,10470,9669, 8304,6624,4928,3401,2069,843,-425,-1878,-3502,-5126, -6541,-7651,-8500,-9165,-9724,-10287,-10883,-11379,-11603,-11483, -11095,-10565,-9994,-9396,-8733,-7998,-7213,-6436,-5719,-5065, -4395,-3609,-2649,-1576,-584,148,613,955,1354,1923, 2640,3363,3958,4307,4294,3905,3335,2924,2903,3226, 3725,4281,4909,5641,6491,7392,8230,8886,9280,9474, 9689,10108,10650,11000,10862,10133,8906,7392,5863,4499, 3269,2009,619,-901,-2526,-4180,-5673,-6834,-7684,-8407, -9165,-9966,-10688,-11196,-11439,-11426,-11203,-10836,-10367,-9824, -9200,-8459,-7634,-6857,-6230,-5691,-5054,-4182,-3092,-1968, -1042,-404,51,483,970,1540,2251,3107,3895,4308, 4207,3770,3314,3049,3008,3147,3427,3826,4360,5076, 5982,6974,7832,8394,8707,8970,9371,9977,10680,11185, 11151,10488,9390,8112,6812,5551,4336,3104,1734,147, -1593,-3281,-4716,-5833,-6754,-7665,-8613,-9516,-10278,-10858, -11206,-11303,-11216,-11008,-10688,-10227,-9573,-8755,-7927,-7261, -6780,-6301,-5593,-4605,-3510,-2486,-1596,-886,-378,-22, 386,1047,1970,2940,3701,4073,4034,3722,3373,3166, 3118,3123,3160,3360,3859,4635,5573,6518,7300,7792, 8066,8394,8975,9794,10605,11131,11182,10710,9813,8684, 7526,6426,5345,4149,2700,1022,-709,-2318,-3722,-4908, -5952,-6974,-8021,-9036,-9905,-10545,-10940,-11155,-11262,-11271, -11096,-10638,-9921,-9131,-8468,-7958,-7471,-6887,-6165,-5269, -4192,-3062,-2104,-1459,-1072,-715,-187,584,1569,2598, 3390,3763,3780,3641,3484,3333,3169,2987,2866,2957, 3420,4249,5242,6113,6711,7096,7441,7927,8639,9511, 10380,11037,11253,10900,10119,9231,8422,7589,6558,5264, 3750,2075,352,-1276,-2718,-3981,-5157,-6341,-7551,-8684, -9600,-10244,-10737,-11211,-11604,-11732,-11504,-11009,-10396,-9766, -9155,-8607,-8132,-7630,-6925,-5931,-4753,-3596,-2657,-2034, -1656,-1271,-636,289,1357,2350,3108,3560,3747,3783, 3763,3663,3402,3018,2738,2808,3338,4188,5074,5796, 6330,6743,7141,7676,8458,9459,10467,11201,11452,11209, 10642,9964,9258,8454,7451,6195,4715,3079,1389,-202, -1599,-2876,-4190,-5574,-6877,-7952,-8808,-9586,-10354,-11034, -11491,-11667,-11558,-11194,-10642,-10050,-9525,-9096,-8691,-8193, -7476,-6461,-5232,-4067,-3233,-2728,-2339,-1840,-1103,-143, 907,1857,2591,3113,3504,3803,3939,3796,3378,2886, 2594,2674,3150,3895,4697,5355,5789,6091,6451,7053, 7955,9048,10086,10832,11165,11115,10804,10357,9815,9155, 8272,7070,5575,3963,2428,1010,-398,-1889,-3384,-4763, -5993,-7096,-8078,-8989,-9867,-10678,-11301,-11611,-11579,-11282, -10802,-10276,-9849,-9556,-9265,-8777,-7976,-6898,-5703,-4629, -3860,-3381,-2969,-2385,-1535,-525,444,1264,1986,2702, 3366,3835,3983,3792,3364,2873,2549,2586,3025,3729, 4450,4981,5268,5464,5834,6543,7528,8614,9619,10399, 10847,10946,10803,10590,10336,9854,8963,7721,6345,4975, 3591,2137,622,-909,-2410,-3817,-5082,-6210,-7272,-8313, -9328,-10267,-11040,-11495,-11543,-11251,-10819,-10444,-10217,-10061, -9800,-9283,-8444,-7336,-6161,-5180,-4524,-4064,-3536,-2795, -1908,-1036,-241,549,1409,2305,3114,3689,3916,3778, 3345,2806,2440,2485,2952,3613,4181,4518,4698,4917, 5321,5990,6945,8078,9140,9898,10326,10570,10761,10862, 10726,10250,9432,8361,7158,5917,4614,3173,1607,21, -1489,-2884,-4163,-5335,-6431,-7530,-8682,-9819,-10749,-11277, -11359,-11121,-10787,-10547,-10466,-10450,-10266,-9710,-8773,-7661, -6642,-5857,-5247,-4650,-3965,-3190,-2403,-1653,-913,-98, 840,1855,2812,3533,3868,3749,3265,2713,2434,2563, 2981,3485,3917,4192,4309,4413,4761,5504,6532,7598, 8513,9257,9839,10317,10716,10981,10955,10558,9866,8992, 7994,6878,5613,4184,2650,1081,-452,-1879,-3144,-4285, -5429,-6664,-7964,-9222,-10242,-10854,-11012,-10836,-10624,-10616, -10781,-10859,-10606,-9953,-9037,-8085,-7241,-6505,-5816,-5120, -4392,-3654,-2933,-2228,-1521,-741,214,1365,2522,3368, 3690,3544,3164,2763,2516,2573,2960,3465,3800,3872, 3837,3954,4386,5144,6076,6992,7814,8574,9313,10001, 10556,10890,10946,10714,10227,9524,8659,7668,6520,5162, 3617,2006,476,-892,-2132,-3313,-4519,-5846,-7309,-8734, -9855,-10470,-10610,-10553,-10604,-10855,-11138,-11193,-10883,-10264, -9503,-8717,-7927,-7146,-6405,-5689,-4935,-4155,-3456,-2893, -2322,-1508,-364,933,2127,3009,3436,3385,3027,2647, 2492,2654,3037,3413,3584,3545,3482,3633,4104,4806, 5568,6314,7098,7948,8806,9588,10227,10673,10876,10796, 10447,9919,9264,8428,7346,6020,4514,2946,1444,103, -1071,-2195,-3461,-4979,-6635,-8139,-9217,-9793,-10033,-10221, -10528,-10914,-11199,-11239,-11010,-10536,-9881,-9148,-8440,-7744, -6977,-6116,-5286,-4604,-4068,-3578,-2980,-2136,-977,389, 1703,2679,3142,3123,2848,2604,2588,2822,3151,3366, 3378,3285,3265,3458,3866,4407,5033,5728,6498,7355, 8281,9181,9928,10438,10713,10775,10641,10312,9801,9107, 8164,6915,5407,3814,2366,1169,118,-1029,-2467,-4177, -5914,-7357,-8362,-9018,-9497,-9911,-10327,-10780,-11164,-11285, -11057,-10616,-10128,-9618,-9001,-8231,-7349,-6468,-5682,-5047, -4561,-4154,-3623,-2770,-1549,-94,1293,2294,2756,2780, 2633,2587,2742,2995,3189,3264,3241,3174,3163,3309, 3637,4097,4612,5181,5880,6767,7754,8686,9464,10061, 10472,10680,10687,10541,10270,9778,8916,7651,6124,4603, 3343,2345,1326,15,-1607,-3340,-4989,-6417,-7521,-8298, -8881,-9459,-10084,-10662,-11042,-11153,-11043,-10809,-10499,-10075, -9473,-8679,-7757,-6832,-6046,-5474,-5095,-4772,-4290,-3438, -2140,-597,791,1727,2180,2343,2436,2579,2780,2987, 3132,3166,3112,3052,3075,3211,3434,3724,4111,4632, 5320,6161,7121,8092,8946,9620,10094,10385,10550,10665, 10667,10318,9434,8118,6702,5445,4387,3397,2301,940, -698,-2472,-4145,-5537,-6627,-7508,-8294,-9059,-9780,-10379, -10785,-10975,-10997,-10912,-10762,-10483,-9960,-9171,-8219,-7259, -6457,-5941,-5697,-5498,-5014,-4046,-2673,-1185,110,1040, 1598,1913,2165,2452,2742,2949,3025,3012,2997,3008, 3031,3084,3202,3403,3705,4142,4751,5542,6496,7528, 8443,9081,9508,9932,10439,10878,10996,10620,9767,8612, 7385,6268,5307,4385,3297,1897,212,-1538,-3122,-4460, -5604,-6634,-7613,-8540,-9345,-9964,-10399,-10696,-10883,-10967, -10959,-10807,-10376,-9582,-8533,-7508,-6780,-6434,-6293,-6080, -5533,-4538,-3198,-1769,-526,382,1001,1492,1946,2352, 2660,2854,2943,2982,3022,3061,3059,3040,3098,3244, 3426,3692,4205,5061,6116,7082,7800,8356,8930,9601, 10299,10853,11056,10771,10013,8984,7947,7055,6259,5372, 4235,2795,1142,-533,-2051,-3386,-4619,-5814,-6942,-7945, -8785,-9471,-10001,-10377,-10658,-10931,-11163,-11168,-10739,-9872, -8801,-7845,-7219,-6936,-6830,-6619,-6050,-5036,-3742,-2429, -1273,-339,398,1039,1636,2123,2448,2663,2831,2944, 2982,2986,3026,3089,3085,3008,3002,3258,3865,4729, 5645,6435,7075,7674,8376,9238,10147,10850,11116,10872, 10231,9394,8566,7836,7136,6270,5093,3647,2085,524, -963,-2370,-3704,-4985,-6211,-7334,-8277,-8992,-9510,-9955, -10451,-10973,-11360,-11419,-11015,-10155,-9089,-8193,-7677,-7476, -7367,-7088,-6472,-5503,-4328,-3148,-2048,-1032,-120,635, 1250,1794,2267,2581,2718,2775,2881,3066,3210,3185, 2991,2784,2756,3036,3631,4426,5210,5836,6352,6962, 7807,8849,9891,10668,10986,10813,10309,9697,9117,8548, 7876,7004,5886,4543,3056,1536,88,-1271,-2631,-4066, -5473,-6674,-7590,-8283,-8866,-9464,-10159,-10887,-11432,-11554, -11140,-10301,-9329,-8546,-8130,-7984,-7836,-7457,-6818,-5990, -4988,-3854,-2709,-1678,-806,-13,773,1488,1993,2260, 2409,2596,2870,3137,3245,3115,2824,2568,2552,2858, 3419,4074,4673,5160,5614,6239,7186,8371,9506,10301, 10628,10576,10302,9937,9509,9027,8451,7674,6604,5291, 3894,2523,1172,-215,-1688,-3229,-4711,-5943,-6841,-7512, -8162,-8939,-9852,-10769,-11428,-11558,-11107,-10311,-9517,-8931, -8564,-8319,-8081,-7758,-7261,-6510,-5532,-4463,-3430,-2452, -1477,-509,379,1098,1588,1883,2133,2480,2904,3236, 3294,3068,2724,2485,2497,2805,3305,3826,4231,4541, 4940,5648,6704,7923,9041,9872,10318,10406,10278,10088, 9878,9554,9028,8266,7263,6080,4821,3568,2295,888, -699,-2341,-3844,-5055,-5934,-6602,-7314,-8274,-9437,-10520, -11190,-11316,-10996,-10435,-9807,-9242,-8848,-8634,-8465,-8156, -7617,-6891,-6055,-5154,-4195,-3165,-2081,-1013,-81,613, 1074,1437,1856,2371,2890,3228,3247,2990,2626,2402, 2483,2831,3226,3516,3719,3964,4385,5091,6116,7335, 8477,9324,9826,10070,10157,10162,10094,9871,9394,8659, 7747,6740,5669,4533,3298,1879,231,-1511,-3055,-4183, -4946,-5652,-6586,-7781,-9036,-10110,-10838,-11135,-10998,-10541, -9977,-9504,-9202,-9014,-8810,-8464,-7938,-7302,-6629,-5884, -4956,-3836,-2639,-1541,-667,-20,491,976,1527,2181, 2815,3171,3115,2796,2503,2428,2569,2823,3078,3238, 3317,3460,3857,4573,5567,6724,7834,8690,9247,9613, 9908,10135,10206,10058,9658,9030,8242,7383,6505,5542, 4342,2805,1028,-697,-2087,-3104,-3936,-4825,-5889,-7131, -8441,-9627,-10484,-10890,-10855,-10518,-10089,-9743,-9525,-9334, -9058,-8658,-8204,-7756,-7247,-6549,-5592,-4434,-3224,-2135, -1283,-667,-146,480,1259,2063,2681,2970,2923,2683, 2480,2478,2658,2874,2996,2998,2961,3031,3382,4092, 5088,6176,7187,8021,8686,9228,9677,10050,10290,10261, 9885,9262,8607,8037,7417,6516,5215,3611,1897,292, -1046,-2093,-2990,-3925,-5051,-6388,-7800,-9075,-10015,-10505, -10574,-10394,-10174,-9988,-9778,-9501,-9181,-8853,-8520,-8177, -7761,-7135,-6180,-4951,-3721,-2731,-2008,-1401,-744,56, 973,1845,2472,2750,2724,2577,2493,2581,2788,2966, 2989,2847,2691,2734,3095,3757,4636,5631,6601,7441, 8133,8782,9463,10075,10381,10284,9907,9478,9131,8795, 8258,7346,6046,4465,2803,1262,-36,-1095,-2025,-2998, -4189,-5640,-7186,-8532,-9480,-10035,-10311,-10386,-10320,-10174, -9981,-9703,-9351,-9019,-8806,-8634,-8299,-7635,-6626,-5420, -4288,-3410,-2742,-2102,-1322,-369,636,1520,2151,2459, 2484,2424,2477,2689,2920,3009,2908,2706,2541,2528, 2784,3384,4234,5120,5909,6645,7444,8344,9224,9861, 10116,10031,9799,9603,9497,9331,8877,8011,6768,5271, 3658,2122,854,-113,-984,-2039,-3382,-4915,-6440,-7776, -8789,-9468,-9905,-10189,-10324,-10262,-10014,-9677,-9384,-9233, -9191,-9110,-8779,-8075,-7055,-5942,-4965,-4193,-3539,-2830, -1956,-916,170,1109,1718,1995,2118,2250,2444,2678, 2890,2978,2867,2589,2320,2275,2575,3150,3819,4462, 5126,5908,6857,7896,8835,9469,9730,9736,9690,9707, 9746,9680,9361,8647,7480,5975,4400,3000,1860,902, -45,-1167,-2543,-4099,-5643,-6984,-8045,-8891,-9581,-10090, -10336,-10285,-10010,-9681,-9491,-9491,-9572,-9518,-9155,-8444, -7489,-6464,-5563,-4881,-4294,-3540,-2514,-1347,-252,623, 1239,1636,1881,2089,2366,2724,3021,3077,2843,2476, 2231,2267,2562,2996,3439,3892,4488,5351,6430,7515, 8405,9027,9376,9509,9554,9680,9908,10057,9864,9189, 8064,6661,5204,3903,2837,1921,943,-259,-1693,-3229, -4703,-6020,-7191,-8250,-9174,-9853,-10163,-10099,-9843,-9633, -9597,-9700,-9819,-9785,-9437,-8727,-7795,-6903,-6211,-5651, -5005,-4132,-3059,-1916,-826,99,762,1172,1470,1832, 2300,2764,3048,3033,2751,2411,2260,2365,2578,2755, 2954,3331,3975,4856,5885,6951,7887,8554,8931,9137, 9347,9664,10055,10342,10264,9670,8605,7283,5960,4815, 3840,2901,1842,587,-836,-2292,-3682,-5025,-6373,-7673, -8781,-9551,-9912,-9906,-9719,-9588,-9672,-9926,-10138,-10074, -9651,-8965,-8199,-7484,-6854,-6278,-5650,-4815,-3713,-2472, -1330,-445,175,629,1071,1630,2274,2784,2969,2865, 2657,2503,2449,2459,2491,2532,2628,2892,3456,4337, 5402,6461,7353,7995,8396,8679,9011,9498,10085,10520, 10514,9963,8984,7817,6686,5692,4761,3758,2617,1374, 84,-1243,-2626,-4066,-5536,-6968,-8232,-9127,-9527,-9531, -9428,-9492,-9775,-10103,-10257,-10145,-9779,-9210,-8543,-7920, -7403,-6909,-6283,-5412,-4273,-3013,-1889,-1091,-538,7, 699,1472,2133,2556,2740,2747,2661,2585,2560,2545, 2488,2384,2326,2494,3021,3881,4928,5966,6831,7435, 7835,8190,8674,9353,10095,10618,10662,10178,9331,8382, 7463,6548,5565,4493,3375,2222,1020,-242,-1580,-3054, -4688,-6341,-7716,-8596,-9004,-9143,-9249,-9478,-9841,-10194, -10362,-10265,-9932,-9433,-8867,-8358,-7964,-7572,-6954,-5969, -4744,-3570,-2622,-1877,-1198,-459,378,1212,1899,2350, 2569,2637,2673,2712,2722,2661,2513,2293,2124,2209, 2685,3527,4553,5536,6315,6848,7241,7699,8386,9261, 10090,10611,10683,10358,9768,9026,8207,7331,6374,5302, 4162,3054,2026,935,-411,-2053,-3844,-5544,-6929,-7868, -8380,-8655,-8932,-9312,-9759,-10162,-10397,-10354,-10014,-9519, -9094,-8824,-8579,-8152,-7408,-6390,-5268,-4228,-3354,-2602, -1840,-964,-18,861,1541,2003,2303,2506,2663,2793, 2852,2771,2527,2188,1916,1929,2370,3208,4220,5111, 5718,6126,6557,7192,8043,8970,9799,10372,10576,10404, 9966,9417,8775,7951,6927,5820,4783,3863,2964,1919, 553,-1160,-3027,-4749,-6137,-7143,-7805,-8222,-8585,-9076, -9694,-10225,-10437,-10286,-9949,-9643,-9461,-9324,-9088,-8610, -7846,-6874,-5866,-4966,-4178,-3393,-2522,-1558,-578,315, 1021,1527,1899,2229,2532,2772,2889,2818,2515,2053, 1660,1631,2115,2957,3831,4514,5012,5440,5933,6615, 7521,8527,9405,9990,10269,10319,10185,9851,9285,8466, 7445,6393,5490,4750,3966,2912,1490,-229,-2071,-3824, -5312,-6401,-7095,-7599,-8177,-8914,-9651,-10147,-10289,-10155, -9928,-9793,-9782,-9750,-9505,-8975,-8202,-7323,-6462,-5659, -4883,-4063,-3128,-2098,-1067,-162,547,1099,1563,1996, 2441,2855,3086,2963,2499,1935,1581,1614,2051,2753, 3495,4071,4461,4832,5373,6159,7111,8079,8927,9559, 9986,10266,10387,10227,9691,8840,7882,7011,6282,5616, 4865,3885,2553,847,-1059,-2855,-4302,-5356,-6144,-6857, -7658,-8542,-9325,-9805,-9932,-9862,-9800,-9856,-9957,-9946, -9699,-9187,-8489,-7725,-6982,-6266,-5519,-4662,-3694,-2655, -1609,-661,63,575,1067,1700,2399,2936,3135,2959, 2496,1945,1581,1617,2045,2655,3213,3626,3945,4322, 4916,5750,6690,7573,8348,9058,9733,10291,10561,10428, 9941,9220,8388,7583,6919,6379,5785,4869,3493,1746, -126,-1854,-3256,-4340,-5270,-6212,-7234,-8225,-9001,-9449, -9617,-9676,-9779,-9968,-10149,-10151,-9873,-9382,-8797,-8168, -7506,-6834,-6148,-5349,-4346,-3201,-2119,-1271,-643,-74, 591,1400,2235,2866,3098,2894,2408,1898,1600,1647, 2013,2505,2909,3160,3398,3836,4517,5309,6077,6837, 7653,8532,9377,10045,10427,10448,10078,9407,8632,7955, 7464,7078,6568,5672,4284,2549,757,-837,-2163,-3313, -4436,-5588,-6740,-7773,-8543,-9005,-9264,-9487,-9763,-10037, -10214,-10242,-10080,-9695,-9138,-8565,-8057,-7539,-6872,-5982, -4907,-3792,-2798,-2011,-1393,-758,53,1045,2020,2716, 2966,2781,2324,1866,1663,1783,2078,2344,2516,2715, 3051,3538,4116,4754,5442,6192,7039,7987,8959,9805, 10350,10460,10135,9537,8877,8346,8023,7793,7344,6417, 5012,3365,1739,283,-1011,-2264,-3576,-4935,-6191,-7206, -7956,-8517,-8944,-9281,-9614,-9981,-10277,-10364,-10179,-9802, -9370,-8981,-8606,-8140,-7457,-6521,-5423,-4345,-3456,-2750, -2110,-1383,-452,672,1790,2576,2815,2605,2245,1991, 1917,1963,2051,2163,2313,2531,2841,3247,3746,4300, 4894,5578,6432,7462,8564,9559,10235,10423,10137,9591, 9075,8764,8629,8463,8007,7080,5720,4194,2765,1468, 158,-1265,-2739,-4146,-5417,-6508,-7370,-7998,-8479,-8943, -9451,-9935,-10263,-10340,-10176,-9874,-9593,-9390,-9150,-8691, -7941,-6982,-5942,-4945,-4111,-3481,-2907,-2118,-977,350, 1502,2207,2449,2402,2260,2133,2048,2007,2009,2053, 2154,2348,2636,2992,3387,3821,4305,4907,5728,6817, 8059,9195,9931,10132,9902,9490,9171,9075,9098,8956, 8429,7515,6346,5071,3784,2497,1165,-260,-1785,-3297, -4652,-5760,-6632,-7317,-7916,-8542,-9205,-9777,-10101,-10140, -10009,-9865,-9777,-9690,-9497,-9080,-8359,-7377,-6330,-5444, -4814,-4308,-3655,-2669,-1409,-99,1010,1752,2117,2226, 2239,2223,2165,2066,1979,1972,2054,2229,2490,2817, 3133,3401,3728,4268,5120,6284,7628,8844,9591,9774, 9606,9413,9376,9447,9468,9285,8819,8037,7009,5876, 4729,3533,2214,741,-848,-2431,-3838,-4963,-5829,-6592, -7392,-8229,-8980,-9540,-9868,-9981,-9962,-9914,-9930,-10009, -9973,-9559,-8711,-7672,-6754,-6082,-5566,-5030,-4287,-3241, -1964,-669,422,1210,1717,2019,2178,2238,2212,2114, 1973,1891,1963,2177,2449,2707,2894,3015,3175,3603, 4486,5788,7207,8349,9005,9240,9277,9317,9432,9580, 9650,9513,9104,8437,7573,6598,5575,4492,3234,1722, 44,-1557,-2910,-4002,-4957,-5895,-6839,-7754,-8578,-9215, -9573,-9667,-9671,-9801,-10082,-10315,-10247,-9751,-8921,-8009, -7258,-6743,-6317,-5758,-4929,-3847,-2607,-1345,-226,643, 1269,1726,2053,2218,2205,2076,1932,1855,1919,2154, 2479,2700,2695,2564,2600,3078,4049,5335,6662,7748, 8432,8768,8964,9190,9445,9661,9774,9707,9379,8792, 8060,7307,6497,5469,4140,2580,956,-576,-1925,-3082, -4110,-5115,-6191,-7288,-8222,-8813,-9095,-9247,-9448,-9781, -10191,-10465,-10365,-9834,-9063,-8319,-7741,-7299,-6869,-6306, -5500,-4449,-3252,-2048,-931,31,811,1405,1837,2111, 2182,2042,1812,1718,1905,2272,2569,2597,2390,2154, 2172,2651,3597,4807,6021,7032,7745,8198,8522,8862, 9261,9621,9792,9695,9387,8983,8524,7960,7206,6209, 4951,3464,1861,341,-951,-2055,-3143,-4347,-5632,-6835, -7764,-8322,-8606,-8852,-9252,-9786,-10282,-10538,-10430,-9958, -9290,-8670,-8223,-7877,-7461,-6867,-6075,-5110,-3992,-2794, -1645,-647,218,1011,1665,2025,2035,1834,1666,1716, 2020,2410,2621,2500,2146,1846,1873,2335,3181,4277, 5429,6417,7123,7609,8071,8630,9192,9560,9684,9634, 9491,9253,8925,8501,7901,6999,5745,4248,2715,1318, 112,-1004,-2222,-3619,-5062,-6297,-7158,-7685,-8055,-8469, -9040,-9708,-10275,-10543,-10427,-10017,-9509,-9047,-8657,-8301, -7919,-7403,-6655,-5689,-4618,-3548,-2481,-1395,-309,688, 1437,1798,1785,1611,1560,1782,2187,2532,2622,2415, 2032,1705,1648,2023,2832,3886,4913,5741,6429,7083, 7741,8390,8969,9402,9606,9609,9530,9443,9322,9061, 8545,7674,6444,5008,3597,2363,1244,59,-1331,-2876, -4378,-5605,-6453,-6997,-7466,-8075,-8839,-9585,-10138,-10409, -10386,-10111,-9685,-9275,-8986,-8755,-8410,-7850,-7095,-6234, -5330,-4380,-3312,-2078,-782,350,1112,1427,1435,1406, 1540,1856,2253,2591,2691,2440,1944,1525,1484,1881, 2576,3411,4279,5092,5817,6512,7253,8012,8668,9113, 9334,9397,9433,9525,9624,9545,9083,8190,7007,5747, 4556,3456,2351,1095,-403,-2052,-3583,-4736,-5533,-6169, -6835,-7591,-8410,-9200,-9827,-10177,-10209,-9998,-9690,-9436, -9262,-9067,-8694,-8119,-7435,-6754,-6057,-5201,-4048,-2647, -1244,-127,593,973,1131,1214,1416,1845,2376,2728, 2706,2353,1870,1512,1461,1752,2310,3003,3737,4472, 5206,5979,6809,7652,8358,8792,8981,9107,9340,9674, 9927,9884,9434,8596,7528,6441,5467,4519,3399,1991, 379,-1248,-2694,-3858,-4751,-5490,-6237,-7082,-8000,-8869, -9542,-9913,-9990,-9884,-9747,-9660,-9581,-9352,-8903,-8355, -7878,-7447,-6864,-5961,-4740,-3339,-1933,-742,47,425, 597,825,1243,1803,2341,2653,2613,2259,1799,1469, 1403,1607,2027,2565,3148,3781,4506,5360,6302,7181, 7831,8220,8459,8715,9114,9613,9994,9997,9529,8748, 7901,7117,6333,5406,4225,2791,1206,-382,-1816,-2984, -3906,-4727,-5596,-6581,-7622,-8569,-9253,-9605,-9734,-9827, -9939,-9957,-9785,-9459,-9095,-8747,-8422,-8066,-7560,-6733, -5510,-4022,-2560,-1395,-651,-231,78,479,1058,1719, 2282,2575,2534,2224,1809,1497,1425,1597,1883,2205, 2612,3203,3982,4899,5865,6741,7367,7710,7952,8348, 8971,9623,10003,9951,9544,8958,8353,7755,7087,6223, 5061,3630,2063,509,-899,-2061,-2988,-3849,-4850,-6033, -7186,-8068,-8645,-9074,-9463,-9776,-9942,-9942,-9781,-9501, -9177,-8913,-8750,-8578,-8168,-7347,-6100,-4600,-3161,-2054, -1341,-857,-394,168,848,1564,2181,2523,2496,2190, 1846,1635,1578,1626,1735,1907,2198,2723,3539,4536, 5505,6252,6734,7076,7499,8131,8899,9568,9935,9924, 9625,9218,8828,8416,7850,7041,5948,4556,2951,1372, 54,-980,-1938,-3021,-4235,-5437,-6493,-7352,-8048,-8644, -9178,-9621,-9882,-9907,-9729,-9451,-9205,-9093,-9104,-9061, -8707,-7871,-6615,-5173,-3830,-2768,-2013,-1465,-929,-241, 596,1428,2059,2386,2402,2211,1970,1822,1781,1761, 1678,1620,1788,2350,3250,4244,5090,5704,6140,6566, 7139,7901,8719,9376,9740,9826,9708,9457,9168,8906, 8559,7883,6750,5275,3746,2367,1175,70,-1048,-2238, -3489,-4717,-5796,-6682,-7440,-8170,-8877,-9464,-9813,-9851, -9639,-9364,-9238,-9329,-9501,-9522,-9191,-8415,-7226,-5822, -4514,-3526,-2833,-2225,-1526,-686,235,1098,1754,2103, 2171,2077,1988,1965,1916,1719,1429,1273,1457,2051, 2925,3827,4528,5005,5437,5992,6700,7492,8300,9019, 9498,9634,9522,9401,9395,9384,9111,8389,7261,5920, 4563,3294,2118,969,-233,-1504,-2798,-4020,-5090,-6007, -6865,-7762,-8654,-9343,-9660,-9644,-9457,-9300,-9296,-9484, -9756,-9879,-9616,-8859,-7724,-6444,-5272,-4346,-3622,-2951, -2173,-1214,-177,736,1364,1702,1873,1999,2109,2140, 2001,1656,1241,1041,1283,1908,2659,3339,3912,4418, 4907,5447,6146,7036,7971,8692,9076,9211,9287,9427, 9612,9690,9457,8800,7779,6589,5383,4216,3065,1890, 642,-680,-1985,-3156,-4181,-5152,-6176,-7253,-8252,-8998, -9377,-9411,-9249,-9131,-9254,-9610,-9993,-10146,-9897,-9213, -8193,-7022,-5932,-5073,-4390,-3672,-2749,-1668,-612,260, 878,1293,1637,2003,2301,2345,2048,1559,1158,1041, 1248,1728,2362,2999,3507,3874,4269,4885,5751,6718, 7591,8226,8606,8853,9119,9464,9779,9887,9674,9097, 8218,7187,6149,5115,3992,2730,1397,94,-1110,-2217, -3268,-4338,-5484,-6686,-7794,-8612,-8998,-9015,-8908,-8934, -9187,-9611,-10054,-10294,-10115,-9470,-8520,-7508,-6607,-5849, -5141,-4319,-3289,-2134,-1092,-335,233,824,1485,2052, 2336,2300,2018,1599,1196,997,1163,1648,2224,2690, 3005,3286,3721,4438,5372,6314,7088,7649,8074,8458, 8884,9364,9807,10027,9885,9381,8658,7859,6993,6004, 4847,3549,2219,957,-201,-1266,-2309,-3455,-4768,-6134, -7320,-8145,-8559,-8644,-8604,-8698,-9070,-9639,-10160,-10398, -10248,-9705,-8885,-8019,-7291,-6669,-5922,-4907,-3752,-2694, -1831,-1086,-320,488,1266,1902,2287,2341,2070,1596, 1158,996,1201,1645,2077,2341,2501,2761,3276,4042, 4949,5825,6534,7058,7492,7981,8588,9219,9704,9911, 9824,9503,9015,8404,7666,6749,5608,4290,2952,1755, 727,-256,-1345,-2618,-4036,-5478,-6739,-7617,-8040,-8149, -8203,-8418,-8894,-9555,-10162,-10429,-10222,-9689,-9095,-8566, -8015,-7305,-6401,-5372,-4339,-3382,-2527,-1725,-895,12, 953,1764,2258,2320,2006,1541,1210,1167,1380,1672, 1911,2054,2177,2431,2948,3715,4577,5347,5930,6404, 6925,7560,8248,8887,9386,9670,9702,9522,9221,8814, 8216,7337,6197,4938,3722,2634,1662,707,-385,-1716, -3230,-4729,-5996,-6891,-7386,-7571,-7681,-8021,-8676,-9416, -9921,-10064,-9936,-9680,-9374,-8982,-8429,-7696,-6826,-5877, -4915,-4021,-3215,-2439,-1561,-516,586,1490,1988,2046, 1814,1506,1312,1315,1473,1658,1759,1771,1824,2093, 2659,3417,4176,4819,5349,5851,6431,7133,7905,8606, 9120,9423,9562,9580,9486,9226,8726,7902,6782,5543, 4404,3449,2580,1625,480,-886,-2449,-4067,-5448,-6344, -6772,-6984,-7310,-7890,-8627,-9295,-9730,-9914,-9939,-9884, -9737,-9440,-8946,-8260,-7407,-6470,-5561,-4764,-4043,-3257, -2254,-1043,170,1120,1646,1760,1616,1426,1359,1447, 1582,1632,1569,1505,1582,1873,2395,3071,3750,4313, 4786,5299,5950,6730,7518,8205,8743,9129,9387,9578, 9686,9593,9151,8341,7292,6171,5117,4194,3390,2546, 1444,-26,-1754,-3421,-4721,-5542,-6031,-6446,-6974,-7629, -8324,-8941,-9391,-9659,-9808,-9893,-9901,-9752,-9341,-8641, -7772,-6900,-6143,-5480,-4799,-3963,-2883,-1601,-316,693, 1253,1404,1379,1377,1469,1587,1634,1571,1442,1349, 1419,1726,2224,2786,3309,3782,4255,4802,5483,6286, 7088,7744,8243,8689,9151,9555,9779,9745,9411,8742, 7776,6689,5718,4978,4352,3555,2348,733,-1027,-2610, -3836,-4712,-5368,-5960,-6589,-7278,-7979,-8593,-9055,-9371, -9641,-9911,-10093,-10022,-9612,-8931,-8147,-7399,-6764,-6208, -5589,-4713,-3508,-2116,-809,166,755,1045,1202,1363, 1566,1719,1708,1538,1342,1261,1357,1630,2056,2535, 2957,3313,3740,4354,5128,5900,6571,7167,7738,8314, 8875,9380,9749,9883,9657,9010,8057,7082,6332,5806, 5245,4377,3093,1497,-169,-1681,-2911,-3871,-4644,-5353, -6089,-6848,-7545,-8103,-8549,-8976,-9422,-9848,-10129,-10114, -9749,-9111,-8394,-7783,-7320,-6880,-6257,-5311,-4064,-2682, -1404,-429,198,613,982,1342,1626,1747,1698,1519, 1307,1211,1332,1628,1964,2260,2536,2892,3396,4027, 4726,5426,6083,6697,7276,7860,8505,9220,9826,10081, 9834,9162,8317,7573,7041,6615,6052,5151,3871,2315, 692,-782,-1993,-2998,-3910,-4804,-5655,-6412,-7056,-7611, -8119,-8646,-9233,-9812,-10193,-10203,-9830,-9256,-8706,-8276, -7927,-7528,-6899,-5911,-4633,-3296,-2104,-1146,-403,174, 672,1159,1564,1744,1650,1415,1238,1236,1381,1569, 1740,1929,2205,2570,3016,3573,4245,4963,5594,6094, 6579,7238,8106,9030,9725,9964,9712,9143,8495,7947, 7554,7207,6696,5820,4553,3048,1541,183,-1022,-2137, -3198,-4199,-5115,-5895,-6510,-7021,-7561,-8231,-8997,-9682, -10097,-10121,-9786,-9303,-8902,-8674,-8486,-8115,-7444,-6477, -5288,-4020,-2845,-1878,-1085,-360,359,1017,1464,1597, 1486,1325,1260,1291,1366,1460,1588,1750,1947,2218, 2645,3256,3962,4596,5061,5449,5976,6788,7817,8826, 9549,9829,9655,9200,8710,8358,8133,7865,7342,6462, 5266,3882,2478,1163,-49,-1235,-2444,-3597,-4565,-5298, -5876,-6424,-7068,-7866,-8759,-9533,-9946,-9939,-9676,-9388, -9201,-9096,-8960,-8634,-8004,-7054,-5893,-4710,-3657,-2722, -1803,-856,42,746,1177,1353,1366,1311,1265,1279, 1366,1476,1538,1549,1618,1882,2388,3039,3657,4117, 4447,4820,5414,6314,7434,8513,9268,9549,9425,9130, 8852,8668,8537,8320,7848,7013,5885,4634,3384,2146, 881,-429,-1751,-2984,-3981,-4684,-5215,-5803,-6599,-7568, -8531,-9274,-9675,-9744,-9605,-9433,-9366,-9401,-9387,-9104, -8449,-7522,-6510,-5521,-4539,-3506,-2425,-1372,-435,321, 862,1161,1243,1212,1224,1337,1471,1496,1394,1298, 1382,1732,2275,2865,3363,3693,3912,4224,4867,5880, 7073,8148,8876,9194,9177,9020,8914,8919,8908,8706, 8237,7501,6539,5444,4313,3150,1869,439,-1026,-2290, -3199,-3830,-4409,-5134,-6049,-7074,-8064,-8847,-9285,-9379, -9313,-9309,-9452,-9623,-9604,-9274,-8668,-7916,-7107,-6224, -5237,-4161,-3057,-1959,-926,-51,565,887,1010,1107, 1280,1478,1557,1459,1268,1146,1247,1624,2184,2717, 3067,3225,3367,3710,4404,5452,6665,7732,8436,8769, 8878,8924,9000,9110,9155,9007,8589,7916,7095,6219, 5260,4103,2700,1165,-300,-1507,-2405,-3082,-3732,-4523, -5531,-6670,-7729,-8491,-8877,-9024,-9151,-9373,-9634,-9802, -9767,-9513,-9064,-8467,-7751,-6937,-6027,-4999,-3840,-2611, -1465,-572,30,414,701,978,1265,1504,1555,1371, 1092,962,1134,1569,2092,2520,2740,2790,2857,3201, 3948,5005,6141,7139,7853,8261,8470,8658,8920,9179, 9274,9096,8689,8184,7648,6990,6079,4891,3478,1952, 498,-709,-1590,-2243,-2922,-3841,-5007,-6207,-7190,-7859, -8280,-8601,-8913,-9227,-9509,-9718,-9786,-9634,-9266,-8757, -8187,-7547,-6739,-5684,-4441,-3174,-2042,-1147,-499,-18, 428,894,1302,1534,1510,1273,988,896,1134,1613, 2101,2395,2457,2406,2469,2828,3562,4599,5719,6676, 7337,7751,8105,8529,8963,9239,9269,9109,8871,8598, 8240,7700,6872,5720,4287,2718,1262,135,-659,-1340, -2177,-3273,-4485,-5608,-6523,-7227,-7766,-8202,-8590,-8983, -9365,-9644,-9732,-9626,-9400,-9090,-8698,-8165,-7404,-6353, -5081,-3801,-2709,-1859,-1169,-527,106,714,1208,1453, 1367,1070,819,827,1139,1600,1990,2176,2153,2040, 2045,2389,3142,4155,5165,5982,6607,7160,7720,8268, 8725,9006,9084,9016,8890,8756,8586,8239,7527,6365, 4876,3343,2029,1030,228,-589,-1565,-2700,-3884,-5012, -5968,-6704,-7282,-7804,-8318,-8825,-9265,-9567,-9689,-9661, -9550,-9411,-9210,-8800,-8055,-6986,-5735,-4518,-3483,-2643, -1888,-1100,-254,539,1098,1294,1164,907,748,824, 1146,1598,1958,2054,1890,1696,1744,2169,2903,3763, 4595,5350,6049,6721,7381,8007,8527,8846,8947,8926, 8930,9021,9092,8870,8135,6935,5527,4160,2961,1950, 1075,194,-825,-2005,-3231,-4357,-5295,-6065,-6731,-7359, -7984,-8579,-9055,-9354,-9501,-9575,-9641,-9674,-9590,-9258, -8562,-7522,-6325,-5200,-4274,-3458,-2584,-1598,-584,290, 876,1100,1016,781,652,819,1249,1710,1942,1863, 1631,1493,1617,2012,2609,3318,4060,4790,5507,6241, 7011,7748,8307,8585,8658,8743,8992,9327,9498,9275, 8591,7518,6234,4959,3828,2858,1950,997,-83,-1286, -2507,-3614,-4551,-5350,-6115,-6894,-7646,-8269,-8722,-9027, -9242,-9432,-9657,-9877,-9933,-9641,-8933,-7940,-6887,-5936, -5088,-4226,-3244,-2143,-1014,-26,629,850,736,555, 582,902,1369,1728,1828,1703,1510,1416,1516,1837, 2334,2918,3518,4147,4886,5769,6672,7401,7848,8082, 8259,8531,8943,9402,9663,9506,8891,7936,6811,5668, 4623,3684,2767,1764,620,-605,-1781,-2833,-3771,-4658, -5530,-6402,-7215,-7874,-8320,-8600,-8860,-9222,-9672,-10035, -10121,-9831,-9212,-8393,-7516,-6671,-5870,-5028,-4000,-2752, -1452,-392,216,386,337,338,540,928,1335,1621, 1699,1575,1371,1279,1412,1733,2107,2467,2899,3538, 4409,5387,6286,6946,7342,7596,7872,8294,8851,9410, 9750,9684,9172,8332,7342,6355,5433,4537,3575,2489, 1312,115,-1017,-2049,-2997,-3944,-4947,-5959,-6845,-7462, -7819,-8105,-8502,-9043,-9596,-9996,-10126,-9937,-9436,-8725, -7981,-7327,-6691,-5854,-4682,-3270,-1913,-892,-311,-69, 31,171,456,873,1306,1573,1577,1418,1279,1291, 1446,1639,1810,2010,2383,3055,3984,4980,5825,6406, 6775,7076,7446,7968,8634,9306,9741,9744,9316,8615, 7831,7029,6199,5301,4318,3228,2048,869,-205,-1168, -2134,-3216,-4373,-5442,-6265,-6828,-7241,-7649,-8168,-8813, -9473,-9983,-10186,-10017,-9558,-8997,-8517,-8085,-7502,-6571, -5287,-3844,-2513,-1489,-854,-530,-324,-46,388,889, 1285,1450,1414,1318,1303,1380,1473,1508,1514,1623, 1992,2694,3622,4578,5374,5923,6280,6585,7012,7658, 8454,9190,9640,9691,9391,8865,8229,7558,6852,6029, 5015,3854,2692,1650,699,-280,-1371,-2559,-3753,-4820, -5650,-6232,-6662,-7105,-7704,-8490,-9289,-9839,-9992,-9820, -9525,-9255,-9009,-8675,-8101,-7178,-5903,-4454,-3112,-2110, -1492,-1111,-743,-266,282,778,1099,1216,1234,1277, 1380,1466,1455,1356,1258,1308,1651,2329,3234,4162, 4895,5365,5690,6051,6584,7302,8124,8891,9425,9595, 9415,9046,8629,8164,7534,6659,5597,4491,3457,2509, 1558,524,-620,-1858,-3106,-4232,-5092,-5637,-6045,-6578, -7366,-8289,-9090,-9581,-9737,-9695,-9594,-9514,-9440,-9245, -8747,-7818,-6511,-5072,-3797,-2854,-2206,-1690,-1134,-498, 106,539,790,954,1114,1290,1443,1508,1433,1239, 1042,1028,1359,2062,2947,3765,4386,4821,5174,5570, 6129,6900,7793,8611,9151,9364,9350,9231,9021,8637, 7999,7137,6152,5151,4191,3276,2356,1340,144,-1212, -2544,-3639,-4395,-4921,-5449,-6158,-7058,-8007,-8798,-9287, -9481,-9534,-9593,-9717,-9839,-9774,-9322,-8391,-7101,-5741, -4585,-3693,-2960,-2244,-1504,-797,-217,194,487,731, 985,1267,1505,1576,1418,1109,854,851,1192,1833, 2629,3392,3966,4338,4641,5071,5737,6597,7487,8237, 8768,9119,9341,9429,9335,9016,8455,7669,6733,5780, 4929,4158,3305,2202,853,-569,-1851,-2862,-3598,-4186, -4828,-5650,-6628,-7599,-8368,-8836,-9058,-9213,-9447,-9792, -10086,-10078,-9602,-8699,-7560,-6396,-5349,-4425,-3561,-2710, -1879,-1123,-529,-132,158,487,920,1354,1613,1611, 1383,1051,779,737,1034,1648,2420,3088,3513,3785, 4115,4665,5408,6215,6992,7704,8323,8822,9187,9420, 9487,9292,8775,8001,7136,6345,5669,4983,4101,2925, 1526,121,-1099,-2053,-2795,-3456,-4192,-5108,-6156,-7149, -7875,-8278,-8510,-8811,-9304,-9882,-10284,-10298,-9866,-9093, -8143,-7136,-6148,-5201,-4255,-3274,-2330,-1560,-1011,-613, -227,251,798,1282,1571,1588,1355,979,654,598, 931,1547,2197,2678,2994,3297,3722,4291,4977,5733, 6497,7207,7852,8443,8983,9413,9612,9456,8951,8250, 7545,6944,6397,5736,4803,3578,2187,819,-348,-1256, -1985,-2701,-3567,-4627,-5741,-6672,-7280,-7647,-7998,-8505, -9162,-9818,-10265,-10343,-10021,-9396,-8620,-7801,-6927,-5946, -4874,-3808,-2871,-2133,-1579,-1109,-625,-64,570,1169, 1547,1565,1255,824,535,563,891,1378,1868,2275, 2596,2897,3297,3858,4536,5241,5904,6544,7212,7949, 8697,9279,9534,9396,8957,8405,7893,7468,7039,6433, 5503,4247,2834,1501,417,-398,-1123,-1973,-3032,-4196, -5269,-6102,-6672,-7097,-7550,-8173,-8956,-9712,-10210,-10328, -10110,-9684,-9141,-8479,-7635,-6595,-5467,-4391,-3464,-2705, -2119,-1638,-1116,-418,409,1125,1488,1424,1104,764, 577,614,876,1270,1670,1987,2238,2529,2957,3537, 4177,4774,5314,5913,6666,7565,8438,9082,9357,9267, 8944,8554,8204,7921,7610,7077,6141,4830,3427,2231, 1316,542,-288,-1292,-2445,-3619,-4658,-5446,-5990,-6448, -7011,-7777,-8648,-9408,-9887,-10083,-10068,-9892,-9532,-8954, -8162,-7182,-6071,-4941,-3961,-3241,-2724,-2219,-1554,-693, 227,958,1319,1296,1048,775,623,665,895,1209, 1490,1704,1916,2239,2722,3285,3811,4268,4746,5369, 6213,7201,8145,8844,9184,9167,8924,8661,8517,8449, 8236,7660,6664,5403,4139,3065,2201,1395,484,-623, -1868,-3063,-4036,-4738,-5278,-5864,-6599,-7448,-8294,-9021, -9577,-9939,-10102,-10080,-9890,-9491,-8800,-7806,-6637,-5514, -4618,-3969,-3433,-2831,-2030,-1068,-106,646,1048,1091, 904,697,629,732,923,1104,1239,1387,1637,2032, 2518,2972,3347,3703,4156,4810,5694,6743,7772,8528, 8864,8861,8750,8727,8813,8857,8649,8057,7102,5943, 4808,3863,3074,2256,1224,-21,-1317,-2449,-3327,-4027, -4682,-5363,-6119,-6960,-7829,-8609,-9215,-9654,-9974,-10188, -10223,-9948,-9277,-8270,-7135,-6107,-5310,-4690,-4094,-3399, -2522,-1490,-455,359,800,879,775,699,742,847, 918,950,1016,1204,1516,1920,2347,2732,3021,3268, 3635,4282,5257,6402,7443,8130,8430,8528,8638,8839, 9070,9186,9013,8442,7519,6453,5492,4718,3977,3050, 1883,595,-640,-1717,-2601,-3338,-4028,-4766,-5589,-6476, -7329,-8058,-8658,-9216,-9759,-10211,-10406,-10187,-9542,-8611, -7619,-6724,-5984,-5362,-4748,-4000,-3040,-1923,-845,-38, 396,556,625,710,804,849,830,813,865,1044, 1366,1791,2200,2485,2623,2746,3088,3807,4841,5960, 6910,7548,7895,8108,8367,8752,9160,9358,9164,8581, 7771,6943,6193,5485,4691,3720,2561,1292,64,-998, -1870,-2622,-3375,-4204,-5099,-5968,-6742,-7434,-8123,-8856, -9599,-10212,-10509,-10371,-9820,-8994,-8093,-7289,-6649,-6097, -5469,-4619,-3539,-2382,-1353,-577,-62,267,496,673, 790,831,785,697,689,892,1300,1763,2092,2199, 2195,2294,2679,3416,4421,5481,6352,6913,7257,7608, 8119,8717,9193,9359,9162,8682,8058,7414,6788,6134, 5368,4399,3219,1947,760,-236,-1081,-1886,-2746,-3662, -4555,-5352,-6056,-6751,-7527,-8394,-9265,-9998,-10429,-10415, -9949,-9192,-8407,-7783,-7306,-6796,-6076,-5126,-4047,-2957, -1952,-1126,-513,-69,281,574,772,793,651,495, 532,842,1296,1684,1881,1887,1824,1884,2269,3047, 4056,5027,5754,6235,6652,7186,7879,8580,9090,9276, 9141,8786,8324,7832,7334,6775,6023,5018,3822,2606, 1506,564,-304,-1218,-2189,-3139,-3997,-4746,-5427,-6135, -6961,-7922,-8941,-9837,-10377,-10406,-10004,-9407,-8839,-8371, -7936,-7400,-6663,-5723,-4652,-3564,-2563,-1728,-1043,-435, 119,546,729,660,488,391,501,849,1307,1663, 1765,1627,1463,1547,2021,2812,3710,4497,5098,5591, 6126,6803,7596,8346,8894,9134,9080,8839,8536,8230, 7885,7371,6591,5575,4452,3361,2361,1412,449,-548, -1554,-2510,-3351,-4053,-4664,-5342,-6233,-7344,-8503,-9460, -10015,-10112,-9870,-9473,-9074,-8715,-8345,-7860,-7147,-6188, -5116,-4106,-3211,-2374,-1537,-728,-42,419,599,529, 350,280,487,941,1427,1686,1627,1377,1217,1381, 1903,2623,3349,3980,4518,5028,5627,6385,7259,8087, 8670,8921,8921,8829,8731,8598,8329,7819,7051,6115, 5116,4106,3115,2148,1150,91,-994,-1999,-2799,-3389, -3938,-4670,-5688,-6897,-8093,-9071,-9698,-9936,-9839,-9592, -9359,-9179,-8916,-8411,-7649,-6741,-5798,-4889,-3998,-3074, -2103,-1147,-338,185,347,243,90,132,480,1002, 1430,1550,1368,1104,1016,1233,1713,2331,2950,3481, 3934,4422,5075,5934,6887,7728,8285,8559,8694,8804, 8898,8872,8644,8183,7501,6657,5731,4802,3894,2944, 1873,693,-465,-1423,-2106,-2635,-3222,-4023,-5080,-6319, -7566,-8608,-9269,-9561,-9629,-9619,-9590,-9509,-9264,-8767, -8059,-7252,-6430,-5611,-4739,-3759,-2649,-1537,-619,-86, 33,-73,-120,96,559,1063,1384,1410,1202,964, 912,1142,1598,2135,2615,2988,3353,3870,4629,5553, 6467,7216,7750,8121,8418,8682,8889,8966,8833,8443, 7814,7051,6270,5506,4672,3659,2475,1255,142,-764, -1442,-1957,-2512,-3324,-4453,-5752,-6992,-7993,-8680,-9103, -9368,-9561,-9687,-9683,-9481,-9038,-8407,-7711,-7041,-6344, -5499,-4422,-3159,-1933,-1008,-527,-407,-409,-287,58, 562,1034,1295,1275,1047,815,807,1091,1524,1922, 2219,2484,2845,3415,4188,5069,5930,6678,7279,7744, 8145,8545,8919,9123,9022,8624,8072,7500,6919,6252, 5409,4363,3157,1901,761,-111,-708,-1191,-1785,-2660, -3828,-5127,-6335,-7317,-8061,-8632,-9086,-9455,-9709,-9786, -9614,-9207,-8664,-8143,-7676,-7106,-6222,-4990,-3599,-2352, -1479,-1020,-832,-689,-420,32,576,1027,1220,1129, 908,777,873,1162,1483,1713,1880,2109,2486,3036, 3758,4605,5458,6171,6719,7223,7789,8382,8846,9045, 8971,8689,8303,7880,7419,6850,6069,5027,3778,2493, 1390,583,24,-471,-1116,-2048,-3217,-4463,-5612,-6581, -7386,-8089,-8719,-9265,-9642,-9754,-9585,-9250,-8908,-8639, -8333,-7786,-6850,-5567,-4175,-2954,-2090,-1603,-1347,-1097, -688,-112,474,879,991,885,745,737,883,1104, 1301,1443,1554,1716,2043,2606,3348,4140,4864,5501, 6105,6741,7428,8102,8624,8891,8886,8693,8432,8178, 7881,7420,6667,5592,4305,3039,2003,1260,705,158, -550,-1497,-2642,-3831,-4912,-5847,-6700,-7554,-8398,-9095, -9500,-9589,-9467,-9301,-9193,-9107,-8895,-8378,-7456,-6183, -4790,-3577,-2744,-2273,-1946,-1519,-908,-242,297,611, 726,728,703,737,879,1085,1234,1266,1265,1402, 1789,2371,3024,3664,4288,4919,5582,6310,7092,7824, 8377,8671,8725,8641,8542,8481,8355,7973,7210,6115, 4875,3689,2710,1977,1411,840,81,-910,-2027,-3100, -4057,-4975,-5978,-7053,-8045,-8774,-9164,-9275,-9266,-9290, -9385,-9468,-9362,-8886,-7953,-6664,-5303,-4185,-3440,-2918, -2401,-1784,-1095,-435,97,435,571,591,630,782, 998,1157,1178,1117,1101,1264,1643,2173,2722,3247, 3783,4386,5085,5884,6735,7518,8089,8396,8510,8578, 8688,8802,8772,8435,7709,6654,5448,4304,3393,2723, 2141,1460,605,-370,-1355,-2278,-3183,-4184,-5332,-6533, -7581,-8321,-8728,-8907,-9021,-9202,-9501,-9786,-9788,-9302, -8338,-7113,-5913,-4915,-4139,-3507,-2882,-2165,-1380,-662, -136,167,326,462,649,879,1081,1160,1103,998, 997,1178,1533,1985,2444,2872,3312,3866,4604,5500, 6405,7170,7716,8050,8269,8491,8764,9032,9129,8871, 8164,7118,5979,4973,4173,3500,2813,2014,1126,227, -628,-1466,-2373,-3435,-4670,-5950,-7070,-7857,-8273,-8465, -8694,-9127,-9673,-10071,-10073,-9606,-8751,-7678,-6596,-5664, -4908,-4216,-3465,-2621,-1772,-1052,-558,-249,-5,272, 581,850,1006,1035,961,851,837,1011,1355,1742, 2078,2371,2729,3277,4062,4989,5893,6629,7155,7514, 7817,8181,8635,9065,9253,9007,8323,7372,6395,5551, 4821,4081,3261,2406,1565,769,9,-756,-1640,-2762, -4111,-5486,-6597,-7293,-7671,-7983,-8432,-9050,-9708,-10180, -10258,-9870,-9120,-8181,-7242,-6414,-5683,-4923,-4040,-3087, -2208,-1525,-1050,-687,-325,66,446,743,909,922, 820,714,748,966,1279,1561,1757,1954,2284,2834, 3619,4546,5447,6161,6644,7001,7401,7955,8613,9169, 9391,9159,8559,7785,7001,6248,5489,4684,3828,2942, 2099,1381,768,95,-834,-2083,-3516,-4870,-5911,-6583, -7021,-7456,-8067,-8851,-9635,-10175,-10295,-9971,-9334,-8574, -7829,-7110,-6349,-5478,-4511,-3543,-2687,-2011,-1500,-1062, -603,-103,365,698,836,811,729,701,794,1003, 1241,1424,1525,1634,1912,2458,3264,4191,5037,5652, 6067,6460,7017,7762,8538,9112,9340,9201,8772,8165, 7511,6867,6161,5309,4339,3408,2667,2114,1595,898, -113,-1423,-2844,-4127,-5116,-5793,-6297,-6843,-7591,-8505, -9401,-10012,-10186,-9972,-9533,-9002,-8408,-7731,-6939,-6027, -5033,-4046,-3183,-2501,-1967,-1450,-859,-246,267,594, 727,727,693,731,872,1073,1247,1329,1329,1353, 1592,2172,3018,3895,4591,5079,5501,6019,6698,7505, 8319,8971,9285,9233,8926,8518,8062,7501,6740,5786, 4777,3908,3289,2839,2346,1609,549,-766,-2158,-3396, -4333,-4991,-5535,-6207,-7113,-8152,-9064,-9663,-9920,-9901, -9687,-9334,-8861,-8257,-7494,-6565,-5555,-4588,-3773,-3101, -2503,-1870,-1171,-485,63,393,530,571,607,703, 893,1117,1231,1161,1015,1021,1347,1968,2729,3458, 4043,4493,4922,5480,6239,7131,7988,8644,8995,9070, 8977,8797,8505,7987,7177,6163,5170,4401,3890,3497, 3007,2239,1139,-206,-1568,-2716,-3562,-4217,-4890,-5723, -6724,-7779,-8711,-9378,-9748,-9884,-9862,-9703,-9381,-8842, -8073,-7145,-6172,-5269,-4488,-3803,-3124,-2384,-1605,-873, -295,71,228,285,398,642,932,1107,1074,896, 747,791,1114,1697,2394,3024,3498,3866,4296,4930, 5785,6727,7568,8179,8577,8836,9008,9051,8850,8315, 7479,6494,5566,4870,4442,4126,3657,2832,1653,327, -927,-1968,-2789,-3498,-4259,-5175,-6232,-7304,-8243,-8950, -9439,-9756,-9935,-9970,-9773,-9275,-8521,-7647,-6769,-5938, -5167,-4435,-3706,-2896,-2010,-1180,-589,-280,-117,71, 359,710,1003,1108,993,768,602,663,1013,1582, 2195,2690,3030,3335,3798,4524,5432,6330,7075,7675, 8208,8699,9093,9287,9172,8678,7842,6854,5981,5414, 5117,4835,4298,3403,2235,980,-171,-1127,-1928,-2697, -3560,-4557,-5637,-6703,-7634,-8377,-8982,-9503,-9919,-10104, -9981,-9550,-8896,-8102,-7261,-6476,-5783,-5088,-4268,-3315, -2348,-1536,-996,-690,-453,-136,288,723,1031,1092, 919,651,499,613,1001,1532,2003,2317,2543,2867, 3419,4173,5009,5809,6513,7151,7785,8446,9045,9415, 9381,8888,8056,7144,6405,5956,5709,5417,4839,3918, 2781,1617,563,-332,-1129,-1938,-2863,-3910,-4987,-5985, -6892,-7735,-8511,-9190,-9727,-10055,-10075,-9739,-9133,-8418, -7735,-7103,-6454,-5697,-4780,-3755,-2775,-2004,-1489,-1137, -794,-352,190,711,1031,1041,802,524,442,640, 1028,1418,1710,1928,2160,2516,3062,3777,4552,5271, 5907,6543,7300,8171,8973,9463,9481,9014,8237,7436, 6840,6493,6261,5936,5345,4432,3319,2223,1284,460, -371,-1282,-2260,-3265,-4283,-5278,-6220,-7111,-7975,-8818, -9552,-10035,-10133,-9853,-9346,-8794,-8296,-7791,-7160,-6327, -5335,-4288,-3333,-2588,-2064,-1665,-1231,-652,31,622, 891,811,566,393,422,638,937,1213,1410,1560, 1770,2152,2729,3406,4056,4625,5188,5884,6793,7838, 8778,9330,9371,8977,8344,7688,7208,6940,6736,6375, 5727,4835,3844,2880,1998,1156,306,-604,-1591,-2609, -3600,-4549,-5471,-6418,-7416,-8419,-9283,-9841,-10002,-9821, -9480,-9139,-8787,-8311,-7636,-6769,-5770,-4744,-3833,-3135, -2636,-2181,-1595,-855,-118,413,645,619,480,403, 488,711,947,1093,1174,1299,1556,1975,2518,3089, 3583,4016,4530,5283,6290,7401,8373,8971,9092,8802, 8308,7843,7527,7308,7048,6639,6029,5240,4365,3494, 2669,1855,998,61,-931,-1895,-2793,-3661,-4575,-5587, -6693,-7789,-8695,-9284,-9532,-9532,-9405,-9229,-9004,-8650, -8066,-7217,-6192,-5190,-4373,-3757,-3223,-2625,-1902,-1096, -343,196,426,427,371,407,562,754,890,937, 963,1086,1385,1838,2335,2763,3103,3442,3940,4727, 5812,7014,8041,8666,8838,8672,8365,8070,7843,7638, 7377,6976,6394,5661,4866,4079,3303,2497,1607,627, -365,-1270,-2081,-2905,-3866,-4986,-6173,-7296,-8245,-8923, -9289,-9417,-9454,-9487,-9440,-9155,-8545,-7665,-6684,-5783, -5055,-4460,-3868,-3161,-2319,-1448,-694,-166,105,189, 232,359,575,749,793,736,730,898,1253,1695, 2110,2408,2601,2832,3307,4154,5318,6551,7585,8250, 8519,8500,8353,8192,8050,7882,7630,7236,6680,6018, 5334,4655,3928,3084,2127,1136,220,-586,-1353,-2192, -3177,-4320,-5564,-6764,-7755,-8453,-8890,-9196,-9464,-9693, -9766,-9533,-8936,-8085,-7185,-6395,-5749,-5157,-4492,-3689, -2769,-1841,-1075,-571,-289,-86,125,362,573,682, 653,559,563,774,1177,1619,1942,2085,2159,2350, 2835,3698,4855,6069,7104,7815,8195,8328,8334,8305, 8265,8162,7907,7492,6980,6447,5897,5275,4518,3629, 2679,1743,881,128,-577,-1387,-2403,-3618,-4912,-6108, -7074,-7798,-8354,-8857,-9352,-9749,-9884,-9650,-9094,-8358, -7590,-6906,-6333,-5761,-5030,-4121,-3141,-2242,-1531,-1012, -624,-281,66,394,618,660,550,441,510,807, 1233,1610,1806,1832,1818,1965,2437,3279,4378,5552, 6588,7342,7805,8061,8251,8410,8461,8334,8051,7703, 7332,6922,6430,5826,5088,4207,3246,2333,1556,891, 228,-589,-1651,-2915,-4210,-5360,-6284,-7050,-7766,-8488, -9163,-9677,-9901,-9746,-9253,-8601,-7993,-7488,-6987,-6353, -5539,-4583,-3597,-2732,-2049,-1508,-1019,-516,-18,379, 570,540,386,301,444,820,1254,1553,1635,1566, 1506,1626,2047,2821,3878,5020,6009,6750,7295,7739, 8104,8344,8420,8337,8131,7855,7566,7251,6847,6282, 5531,4644,3705,2839,2137,1560,928,62,-1067,-2318, -3524,-4584,-5503,-6356,-7214,-8104,-8954,-9588,-9860,-9749, -9367,-8883,-8438,-8035,-7578,-6936,-6082,-5095,-4137,-3333, -2676,-2080,-1458,-803,-201,217,374,298,165,170, 402,793,1186,1435,1469,1331,1182,1243,1655,2411, 3370,4372,5299,6106,6788,7372,7865,8213,8346,8291, 8133,7948,7771,7572,7255,6720,5948,5030,4124,3372, 2782,2236,1570,666,-461,-1669,-2804,-3795,-4698,-5622, -6634,-7699,-8663,-9351,-9679,-9668,-9436,-9138,-8858,-8562, -8129,-7450,-6555,-5588,-4718,-3995,-3348,-2659,-1872,-1064, -402,-12,114,79,22,74,337,778,1211,1431, 1367,1140,965,1031,1409,2068,2904,3789,4665,5511, 6305,7012,7587,7999,8209,8228,8131,8036,7997,7925, 7651,7092,6301,5430,4625,3977,3456,2917,2216,1276, 162,-975,-1999,-2903,-3798,-4807,-5955,-7144,-8195,-8936, -9314,-9405,-9356,-9275,-9158,-8934,-8508,-7821,-6936,-6047, -5286,-4635,-3948,-3130,-2227,-1371,-683,-237,-71,-105, -151,-16,345,824,1223,1372,1256,1005,831,890, 1215,1746,2425,3223,4083,4955,5820,6631,7310,7783, 8009,8055,8064,8145,8258,8250,7984,7417,6636,5818, 5117,4569,4092,3530,2771,1816,752,-281,-1202,-2046, -2954,-4054,-5326,-6597,-7679,-8460,-8927,-9160,-9300,-9420, -9464,-9289,-8830,-8154,-7382,-6629,-5948,-5301,-4578,-3708, -2720,-1761,-1007,-570,-418,-411,-363,-132,304,796, 1150,1247,1120,906,762,788,1023,1453,2030,2708, 3489,4371,5327,6229,6945,7408,7667,7816,7977,8203, 8424,8476,8212,7640,6903,6189,5592,5112,4655,4065, 3261,2295,1302,399,-409,-1230,-2180,-3336,-4662,-6002, -7112,-7882,-8408,-8851,-9259,-9568,-9674,-9511,-9097,-8509, -7848,-7203,-6608,-6000,-5251,-4293,-3207,-2184,-1410,-978, -823,-755,-588,-241,223,689,1025,1138,1036,840, 692,695,866,1164,1578,2149,2908,3834,4823,5748, 6476,6958,7256,7515,7845,8230,8529,8589,8326,7787, 7128,6522,6051,5649,5182,4544,3727,2806,1899,1107, 408,-355,-1359,-2632,-4007,-5267,-6292,-7113,-7830,-8486, -9053,-9464,-9647,-9552,-9207,-8704,-8159,-7645,-7150,-6581, -5811,-4785,-3619,-2571,-1826,-1398,-1163,-980,-733,-354, 137,621,952,1056,984,847,750,740,811,954, 1217,1699,2447,3406,4417,5302,5975,6466,6857,7241, 7690,8189,8586,8686,8431,7940,7405,6939,6554,6173, 5686,5008,4153,3276,2516,1884,1238,412,-667,-1942, -3251,-4456,-5505,-6418,-7258,-8066,-8796,-9335,-9599,-9567, -9291,-8891,-8492,-8150,-7782,-7217,-6359,-5266,-4117,-3106, -2354,-1875,-1587,-1333,-989,-525,-10,451,767,901, 895,844,798,749,684,669,823,1262,2000,2932, 3900,4742,5377,5852,6311,6854,7469,8058,8468,8583, 8388,7987,7563,7236,6972,6620,6060,5307,4487,3754, 3142,2570,1909,1050,-37,-1269,-2503,-3644,-4683,-5669, -6635,-7586,-8461,-9120,-9447,-9451,-9258,-9026,-8826,-8615, -8291,-7734,-6881,-5790,-4646,-3647,-2899,-2398,-2039,-1688, -1252,-737,-207,233,542,729,840,893,862,743, 569,442,498,883,1617,2555,3456,4177,4747,5273, 5842,6501,7216,7888,8347,8461,8285,8007,7786,7627, 7398,6978,6355,5600,4869,4262,3749,3209,2526,1658, 613,-550,-1733,-2827,-3836,-4852,-5949,-7085,-8097,-8818, -9177,-9254,-9187,-9113,-9061,-8964,-8709,-8182,-7342,-6276, -5178,-4214,-3482,-2958,-2527,-2053,-1511,-961,-468,-49, 308,600,821,954,952,780,495,258,271,657, 1345,2171,2963,3620,4148,4661,5298,6100,6953,7655, 8068,8181,8118,8024,7970,7909,7699,7242,6586,5887, 5262,4739,4272,3765,3111,2248,1207,104,-952,-1943, -2945,-4053,-5278,-6514,-7593,-8358,-8786,-8968,-9058,-9166, -9282,-9304,-9127,-8654,-7839,-6787,-5721,-4828,-4134,-3553, -2997,-2432,-1861,-1303,-802,-383,15,434,822,1041, 1002,745,403,144,123,458,1107,1874,2558,3084, 3549,4110,4860,5760,6648,7328,7716,7893,8000,8117, 8221,8203,7971,7515,6902,6256,5683,5226,4830,4358, 3685,2801,1814,840,-88,-1018,-2043,-3227,-4544,-5851, -6966,-7778,-8290,-8590,-8815,-9075,-9353,-9523,-9409,-8945, -8180,-7239,-6264,-5403,-4692,-4063,-3420,-2759,-2132,-1614, -1171,-719,-207,332,794,1051,1029,752,366,77, 63,389,970,1613,2145,2547,2974,3600,4463,5424, 6278,6906,7323,7619,7890,8145,8337,8381,8186,7741, 7138,6540,6070,5711,5351,4852,4147,3274,2380,1552, 744,-166,-1243,-2471,-3806,-5159,-6350,-7211,-7748,-8129, -8532,-8992,-9414,-9669,-9637,-9267,-8588,-7735,-6868,-6074, -5334,-4601,-3877,-3204,-2616,-2114,-1642,-1129,-524,131, 695,1004,973,664,261,-9,15,341,831,1295, 1640,1956,2436,3168,4062,4964,5746,6370,6855,7263, 7658,8046,8341,8432,8255,7831,7288,6799,6446,6162, 5788,5229,4516,3737,2969,2229,1480,630,-418,-1701, -3123,-4491,-5628,-6485,-7116,-7639,-8174,-8772,-9342,-9704, -9720,-9401,-8855,-8185,-7435,-6649,-5860,-5088,-4339,-3647, -3064,-2586,-2114,-1540,-827,-57,602,947,894,561, 193,15,107,384,697,960,1206,1532,2035,2756, 3630,4502,5243,5843,6375,6896,7428,7949,8340,8460, 8275,7894,7478,7121,6827,6532,6134,5578,4886,4158, 3487,2887,2243,1408,310,-997,-2390,-3736,-4890,-5778, -6467,-7117,-7840,-8603,-9254,-9654,-9757,-9581,-9191,-8653, -8000,-7237,-6395,-5553,-4775,-4114,-3582,-3127,-2653,-2028, -1199,-296,425,748,668,394,169,107,195,352, 502,630,810,1137,1652,2354,3177,3992,4691,5265, 5820,6465,7174,7798,8194,8316,8203,7947,7639,7359, 7126,6859,6443,5858,5194,4564,4021,3509,2916,2126, 1060,-248,-1640,-2932,-4031,-4936,-5739,-6540,-7385,-8217, -8929,-9407,-9624,-9607,-9394,-9004,-8438,-7714,-6878,-6012, -5212,-4572,-4119,-3736,-3222,-2449,-1470,-514,181,487, 466,314,220,239,303,355,397,449,557,824, 1333,2053,2836,3523,4097,4667,5337,6102,6886,7570, 8028,8203,8144,7983,7823,7681,7485,7175,6728,6160, 5539,4981,4548,4157,3632,2828,1731,447,-870,-2093, -3155,-4085,-4974,-5891,-6840,-7742,-8504,-9075,-9432,-9578, -9517,-9271,-8827,-8157,-7279,-6367,-5624,-5116,-4750,-4338, -3715,-2829,-1804,-860,-200,130,222,218,223,276, 344,361,288,204,255,563,1107,1760,2396,2970, 3513,4099,4799,5635,6504,7237,7700,7912,7961,7940, 7905,7845,7701,7404,6933,6338,5757,5303,4988,4680, 4193,3413,2350,1115,-128,-1276,-2328,-3331,-4312,-5294, -6284,-7239,-8072,-8718,-9173,-9483,-9655,-9602,-9228,-8529, -7626,-6749,-6096,-5699,-5382,-4920,-4190,-3251,-2239,-1309, -606,-207,-34,72,227,398,465,360,177,71, 151,450,930,1489,2014,2476,2957,3572,4363,5269, 6159,6891,7390,7663,7797,7906,8018,8076,7973,7655, 7156,6581,6066,5705,5483,5230,4755,3977,2966,1837, 687,-431,-1485,-2498,-3518,-4580,-5648,-6638,-7490,-8196, -8811,-9360,-9762,-9851,-9490,-8753,-7882,-7141,-6636,-6282, -5920,-5410,-4680,-3719,-2664,-1733,-1075,-656,-340,-31, 252,438,459,311,99,-21,64,363,779,1207, 1603,1999,2470,3098,3909,4840,5745,6486,7002,7336, 7590,7849,8094,8231,8149,7810,7287,6752,6352,6105, 5915,5661,5220,4514,3571,2504,1427,390,-629,-1676, -2773,-3899,-4979,-5933,-6760,-7560,-8409,-9224,-9781,-9903, -9572,-8942,-8212,-7566,-7108,-6804,-6475,-5927,-5114,-4134, -3149,-2290,-1610,-1074,-607,-162,226,455,443,241, 17,-63,49,304,631,959,1261,1568,1993,2621, 3448,4368,5247,5972,6505,6899,7281,7708,8093,8277, 8178,7838,7379,6932,6579,6351,6194,5972,5564,4914, 4058,3093,2123,1174,174,-945,-2139,-3267,-4238,-5118, -6036,-7045,-8086,-9011,-9659,-9893,-9667,-9106,-8472,-7979, -7656,-7391,-7013,-6414,-5594,-4664,-3755,-2954,-2266,-1630, -992,-385,78,303,285,113,-66,-116,6,238, 474,671,873,1134,1540,2156,2983,3898,4728,5386, 5919,6430,6983,7541,7994,8217,8155,7859,7464,7079, 6778,6589,6470,6292,5905,5265,4486,3692,2892,1973, 877,-313,-1463,-2492,-3414,-4316,-5300,-6411,-7589,-8667, -9428,-9718,-9555,-9126,-8646,-8277,-8046,-7822,-7424,-6780, -5970,-5133,-4348,-3596,-2842,-2077,-1314,-612,-84,174, 178,51,-55,-54,65,243,410,518,598,773, 1185,1848,2663,3485,4216,4845,5421,6039,6716,7369, 7870,8131,8134,7916,7559,7206,6993,6910,6813,6557, 6128,5603,5036,4404,3632,2671,1561,406,-678,-1638, -2509,-3397,-4440,-5693,-7025,-8203,-9026,-9397,-9354,-9070, -8769,-8568,-8425,-8183,-7740,-7112,-6392,-5656,-4935,-4200, -3390,-2509,-1630,-867,-313,-16,52,-13,-74,-28, 132,306,386,367,359,513,932,1576,2310,3011, 3657,4285,4939,5628,6356,7085,7700,8060,8075,7831, 7542,7352,7258,7148,6961,6687,6357,5972,5525,4978, 4254,3304,2185,1054,49,-808,-1625,-2536,-3654,-4991, -6420,-7685,-8554,-8978,-9080,-9016,-8904,-8808,-8700,-8467, -8031,-7427,-6789,-6186,-5561,-4838,-3987,-3044,-2096,-1261, -653,-311,-199,-196,-152,-5,179,282,245,139, 122,322,732,1267,1866,2496,3127,3727,4339,5059, 5916,6792,7466,7800,7837,7730,7619,7535,7438,7287, 7075,6822,6563,6310,6009,5528,4795,3841,2764,1700, 773,6,-745,-1681,-2896,-4328,-5784,-7050,-7972,-8514, -8771,-8892,-8974,-9001,-8905,-8653,-8249,-7749,-7225,-6704, -6131,-5432,-4560,-3553,-2537,-1660,-1027,-663,-490,-354, -150,89,236,235,136,48,57,210,527,1003, 1575,2132,2623,3139,3801,4640,5576,6445,7104,7479, 7626,7663,7674,7669,7576,7373,7134,6937,6794,6653, 6424,6001,5294,4329,3263,2293,1504,826,90,-873, -2145,-3634,-5118,-6380,-7319,-7975,-8439,-8781,-9011,-9103, -9043,-8830,-8488,-8079,-7662,-7236,-6742,-6077,-5183,-4117, -3050,-2169,-1560,-1157,-824,-486,-178,44,156,164, 90,-26,-87,29,365,825,1269,1658,2058,2574, 3281,4173,5136,5996,6648,7094,7390,7585,7696,7714, 7617,7415,7172,7004,6958,6954,6814,6397,5665,4716, 3738,2891,2217,1622,917,-94,-1426,-2912,-4342,-5579, -6574,-7377,-8033,-8554,-8905,-9069,-9061,-8896,-8618,-8294, -7997,-7714,-7313,-6635,-5666,-4583,-3591,-2777,-2125,-1576, -1099,-693,-334,-29,156,147,-11,-171,-198,-27, 301,663,958,1208,1543,2082,2834,3716,4614,5432, 6119,6667,7094,7424,7647,7706,7583,7352,7149,7079, 7139,7199,7089,6679,5957,5051,4171,3460,2899,2351, 1622,594,-713,-2146,-3520,-4744,-5833,-6800,-7611,-8257, -8746,-9034,-9088,-8937,-8702,-8522,-8420,-8262,-7847,-7121, -6184,-5191,-4237,-3388,-2673,-2076,-1528,-991,-497,-125, 61,41,-122,-270,-242,-22,263,482,622,803, 1146,1691,2413,3256,4122,4920,5620,6247,6825,7299, 7586,7649,7512,7280,7114,7136,7312,7464,7372,6939, 6219,5387,4634,4065,3606,3075,2319,1304,78,-1267, -2616,-3865,-4983,-6007,-6979,-7854,-8497,-8793,-8812,-8735, -8703,-8708,-8674,-8508,-8134,-7500,-6638,-5670,-4739,-3919, -3209,-2550,-1889,-1215,-597,-168,-8,-63,-182,-220, -122,66,262,390,460,570,863,1387,2090,2856, 3617,4370,5125,5872,6573,7150,7499,7572,7428,7227, 7143,7261,7523,7721,7622,7162,6470,5765,5172,4692, 4237,3708,3011,2065,878,-431,-1710,-2889,-4047,-5249, -6432,-7407,-8046,-8378,-8531,-8623,-8709,-8794,-8837,-8757, -8456,-7887,-7088,-6168,-5273,-4498,-3811,-3090,-2279,-1460, -793,-382,-214,-200,-230,-202,-70,108,236,265, 258,348,628,1107,1722,2386,3054,3778,4589,5448, 6252,6895,7266,7338,7200,7060,7099,7341,7648,7802, 7659,7237,6658,6055,5516,5092,4725,4266,3568,2612, 1513,390,-753,-1964,-3249,-4567,-5816,-6840,-7547,-7978, -8257,-8481,-8677,-8857,-8996,-9011,-8777,-8238,-7475,-6656, -5910,-5230,-4503,-3669,-2758,-1874,-1166,-720,-511,-420, -337,-220,-76,47,97,65,36,132,407,820, 1312,1852,2451,3155,4004,4966,5902,6608,6944,6966, 6881,6898,7090,7376,7641,7790,7713,7345,6788,6246, 5849,5555,5213,4703,4010,3172,2235,1217,111,-1121, -2478,-3877,-5169,-6239,-7046,-7599,-7961,-8245,-8554,-8893, -9161,-9215,-8984,-8512,-7895,-7236,-6586,-5922,-5160,-4256, -3270,-2355,-1642,-1166,-883,-682,-486,-272,-98,-18, -34,-96,-114,-22,214,558,949,1346,1819,2509, 3467,4557,5518,6162,6485,6614,6675,6774,6993,7335, 7682,7851,7720,7340,6892,6516,6228,5946,5560,5037, 4407,3714,2950,2043,945,-314,-1678,-3085,-4437,-5600, -6459,-7046,-7503,-7955,-8432,-8880,-9187,-9255,-9070,-8701, -8239,-7731,-7173,-6516,-5715,-4763,-3749,-2820,-2100,-1595, -1208,-861,-550,-307,-135,-63,-92,-160,-168,-37, 207,457,635,846,1298,2080,3086,4138,5081,5784, 6179,6336,6424,6624,6988,7419,7752,7864,7725,7428, 7121,6873,6628,6299,5867,5387,4888,4325,3644,2808, 1795,587,-799,-2262,-3645,-4807,-5681,-6339,-6927,-7542, -8166,-8704,-9046,-9135,-9014,-8770,-8477,-8131,-7673,-7030, -6192,-5222,-4241,-3362,-2631,-2041,-1549,-1103,-688,-351, -164,-155,-224,-232,-108,74,206,253,301,478, 903,1632,2615,3683,4647,5335,5716,5909,6103,6446, 6919,7386,7677,7729,7628,7483,7321,7119,6859,6546, 6174,5760,5308,4826,4278,3579,2639,1439,37,-1440, -2824,-3981,-4885,-5633,-6362,-7121,-7852,-8453,-8828,-8965, -8944,-8854,-8728,-8512,-8115,-7484,-6663,-5731,-4770,-3887, -3151,-2540,-1953,-1335,-780,-429,-319,-321,-289,-168, -15,106,157,128,83,166,523,1218,2196,3274, 4207,4841,5195,5465,5827,6313,6809,7206,7470,7612, 7633,7561,7430,7264,7051,6777,6420,6013,5620,5268, 4864,4275,3393,2206,807,-639,-1979,-3110,-4045,-4884, -5746,-6653,-7485,-8113,-8505,-8722,-8857,-8940,-8930,-8797, -8490,-7950,-7154,-6218,-5311,-4532,-3838,-3111,-2325,-1582, -1028,-711,-569,-492,-373,-184,12,126,108,-3, -145,-173,114,811,1812,2847,3671,4230,4652,5069, 5546,6055,6535,6946,7253,7440,7521,7527,7481,7377, 7187,6887,6515,6151,5862,5631,5343,4834,4002,2856, 1501,114,-1152,-2247,-3243,-4237,-5251,-6207,-7037,-7712, -8208,-8544,-8776,-8967,-9126,-9155,-8892,-8310,-7552,-6779, -6038,-5296,-4509,-3669,-2813,-2037,-1450,-1095,-883,-711, -506,-257,-3,148,93,-166,-443,-493,-158,527, 1412,2290,3030,3625,4143,4643,5168,5702,6219,6661, 6990,7215,7371,7463,7488,7418,7228,6921,6568,6265, 6064,5945,5774,5353,4558,3449,2193,948,-223,-1340, -2437,-3518,-4568,-5580,-6497,-7224,-7731,-8114,-8508,-8919, -9217,-9258,-9013,-8549,-7963,-7337,-6675,-5924,-5061,-4148, -3266,-2475,-1836,-1409,-1154,-934,-628,-232,111,219, 36,-307,-580,-587,-262,332,1074,1845,2549,3158, 3704,4249,4835,5424,5952,6388,6747,7063,7331,7520, 7600,7552,7373,7062,6696,6427,6351,6363,6233,5798, 5060,4105,3008,1832,666,-449,-1556,-2701,-3865,-4956, -5878,-6603,-7184,-7727,-8297,-8836,-9189,-9259,-9087,-8781, -8390,-7893,-7257,-6505,-5660,-4742,-3791,-2925,-2279,-1879, -1594,-1242,-750,-216,140,183,-49,-382,-625,-634, -375,112,753,1433,2082,2680,3266,3873,4490,5080, 5611,6075,6480,6844,7193,7488,7653,7625,7390,7044, 6752,6618,6609,6611,6506,6183,5565,4688,3676,2628, 1569,462,-724,-1976,-3202,-4282,-5158,-5889,-6592,-7324, -8030,-8608,-8990,-9160,-9145,-8974,-8691,-8310,-7792,-7101, -6235,-5238,-4239,-3409,-2830,-2420,-2002,-1458,-822,-260, 69,112,-80,-380,-619,-656,-454,-48,469,1034, 1627,2238,2853,3466,4104,4735,5278,5703,6095,6561, 7081,7487,7641,7561,7345,7088,6864,6760,6785,6847, 6796,6503,5944,5183,4332,3446,2479,1356,80,-1230, -2422,-3436,-4330,-5188,-6040,-6858,-7607,-8245,-8721,-8995, -9059,-8989,-8868,-8679,-8295,-7615,-6676,-5642,-4716,-4000, -3467,-2976,-2401,-1724,-1021,-412,-35,42,-133,-404, -604,-641,-509,-236,174,684,1227,1775,2385,3079, 3762,4331,4788,5233,5748,6335,6914,7340,7532,7498, 7308,7072,6897,6851,6933,7037,6992,6701,6203,5607, 4957,4201,3243,2062,775,-470,-1602,-2634,-3613,-4549, -5456,-6354,-7214,-7952,-8479,-8777,-8929,-9052,-9156,-9116, -8766,-8061,-7134,-6193,-5378,-4705,-4132,-3563,-2901,-2122, -1310,-638,-247,-144,-229,-415,-603,-677,-572,-336, -48,300,770,1364,2031,2699,3306,3828,4294,4786, 5374,6045,6685,7155,7391,7391,7223,7011,6898,6940, 7064,7132,7036,6786,6464,6090,5575,4838,3880,2760, 1557,354,-777,-1815,-2794,-3757,-4757,-5769,-6712,-7461, -7986,-8353,-8688,-9039,-9313,-9344,-9033,-8386,-7541,-6681, -5941,-5341,-4785,-4142,-3374,-2533,-1713,-1003,-503,-289, -341,-508,-624,-634,-582,-484,-318,-24,436,1038, 1689,2299,2841,3331,3816,4354,4980,5690,6405,6966, 7232,7206,7051,6943,6968,7062,7108,7075,6997,6892, 6732,6456,6014,5365,4497,3438,2251,1050,-38,-1016, -1992,-3059,-4193,-5274,-6184,-6897,-7473,-7986,-8492,-8990, -9388,-9520,-9269,-8668,-7919,-7211,-6596,-6019,-5413,-4735, -3954,-3068,-2145,-1346,-818,-572,-524,-564,-599,-616, -636,-641,-548,-279,175,749,1346,1904,2408,2866, 3311,3841,4542,5379,6164,6692,6913,6942,6939,6980, 7042,7079,7075,7057,7045,7014,6932,6758,6435,5896, 5098,4067,2932,1855,875,-95,-1161,-2330,-3504,-4574, -5481,-6218,-6850,-7480,-8174,-8854,-9349,-9511,-9328,-8884, -8284,-7644,-7061,-6536,-5986,-5304,-4457,-3493,-2539,-1731, -1155,-804,-611,-515,-499,-561,-655,-698,-626,-399, -18,498,1079,1632,2083,2450,2868,3473,4281,5154, 5898,6399,6681,6844,6963,7045,7086,7106,7114,7108, 7095,7099,7128,7100,6886,6368,5575,4640,3681,2728, 1772,773,-330,-1559,-2792,-3862,-4711,-5439,-6188,-7011, -7850,-8608,-9170,-9429,-9352,-9007,-8518,-8006,-7542,-7099, -6572,-5862,-4956,-3964,-3030,-2242,-1598,-1094,-740,-559, -529,-581,-668,-750,-751,-587,-197,346,882,1294, 1603,1943,2440,3132,3952,4767,5470,6021,6422,6695, 6860,6976,7073,7112,7067,6995,7020,7171,7339,7366, 7168,6714,6017,5171,4316,3499,2630,1592,382,-887, -2063,-3062,-3908,-4712,-5564,-6488,-7427,-8292,-8966,-9342, -9367,-9116,-8745,-8386,-8066,-7700,-7160,-6400,-5508,-4590, -3695,-2831,-2050,-1422,-991,-738,-608,-598,-729,-903, -942,-733,-308,181,579,855,1119,1502,2049,2722, 3467,4248,4991,5600,6039,6361,6643,6867,6973,6951, 6876,6853,6936,7128,7352,7456,7302,6872,6272,5617, 4952,4228,3350,2273,1051,-177,-1302,-2283,-3158,-4007, -4908,-5893,-6931,-7914,-8672,-9097,-9187,-9065,-8881,-8710, -8485,-8116,-7583,-6910,-6116,-5228,-4300,-3407,-2592,-1887, -1308,-893,-689,-713,-896,-1061,-1036,-772,-389,-27, 257,506,787,1150,1640,2292,3057,3821,4514,5136, 5691,6153,6507,6753,6862,6836,6748,6741,6910,7204, 7463,7532,7356,7015,6599,6147,5598,4880,3957,2878, 1725,581,-494,-1471,-2353,-3213,-4147,-5199,-6302,-7302, -8063,-8539,-8784,-8866,-8858,-8773,-8596,-8302,-7871,-7286, -6554,-5717,-4847,-3988,-3145,-2318,-1584,-1071,-869,-908, -1014,-1051,-967,-765,-475,-168,83,271,497,860, 1371,1977,2633,3314,3995,4647,5256,5803,6253,6546, 6640,6596,6550,6627,6854,7143,7353,7387,7262,7046, 6795,6473,6014,5374,4559,3578,2466,1323,277,-620, -1451,-2353,-3409,-4565,-5690,-6686,-7507,-8122,-8520,-8739, -8832,-8841,-8781,-8614,-8259,-7702,-7014,-6285,-5519,-4648, -3665,-2700,-1918,-1404,-1141,-1073,-1105,-1119,-1018,-804, -545,-312,-132,26,235,566,1038,1609,2219,2841, 3485,4174,4884,5549,6060,6336,6399,6374,6392,6537, 6791,7048,7204,7237,7195,7108,6967,6736,6380,5848, 5084,4102,3002,1936,993,151,-703,-1668,-2757,-3918, -5053,-6093,-6987,-7697,-8186,-8497,-8724,-8905,-8968,-8832, -8508,-8076,-7571,-6959,-6190,-5266,-4248,-3246,-2398,-1809, -1485,-1359,-1302,-1222,-1078,-879,-670,-488,-358,-238, -45,282,729,1229,1737,2274,2911,3674,4492,5221, 5721,5969,6057,6118,6248,6463,6707,6921,7075,7155, 7165,7129,7088,7013,6787,6302,5537,4583,3578,2626, 1749,903,18,-949,-2020,-3187,-4385,-5495,-6409,-7135, -7738,-8257,-8654,-8882,-8943,-8878,-8705,-8434,-8043,-7503, -6774,-5851,-4793,-3736,-2839,-2199,-1802,-1573,-1424,-1283, -1105,-891,-695,-562,-478,-357,-134,197,579,968, 1370,1863,2544,3388,4256,4974,5463,5753,5933,6079, 6247,6460,6718,6953,7097,7145,7164,7231,7346,7394, 7217,6745,6026,5181,4301,3415,2548,1727,906,-33, -1158,-2386,-3573,-4643,-5593,-6451,-7209,-7853,-8343,-8647, -8785,-8811,-8761,-8638,-8395,-7951,-7262,-6346,-5283,-4211, -3287,-2594,-2118,-1794,-1542,-1303,-1064,-856,-719,-645, -560,-398,-145,146,417,659,985,1507,2234,3076, 3913,4631,5164,5508,5725,5915,6134,6399,6673,6871, 6948,6976,7080,7292,7509,7582,7431,7059,6469,5689, 4811,3979,3236,2501,1657,659,-474,-1666,-2822,-3903, -4915,-5866,-6740,-7488,-8048,-8408,-8613,-8746,-8844,-8876, -8765,-8421,-7803,-6931,-5897,-4833,-3896,-3172,-2644,-2229, -1855,-1511,-1230,-1058,-985,-918,-766,-528,-286,-104, 37,217,523,1021,1717,2542,3385,4119,4663,5035, 5303,5569,5881,6198,6418,6519,6574,6689,6877,7113, 7352,7510,7476,7177,6628,5926,5188,4482,3794,3064, 2225,1242,137,-1000,-2109,-3193,-4264,-5312,-6282,-7109, -7731,-8160,-8473,-8739,-8978,-9141,-9149,-8916,-8383,-7566, -6561,-5516,-4590,-3858,-3268,-2714,-2181,-1752,-1492,-1361, -1255,-1094,-873,-642,-461,-340,-238,-90,164,606, 1272,2109,2972,3680,4187,4585,4988,5411,5777,6039, 6211,6325,6416,6528,6716,7012,7346,7568,7559,7297, 6839,6266,5652,5039,4397,3682,2852,1916,903,-159, -1255,-2373,-3511,-4622,-5646,-6510,-7181,-7681,-8095,-8483, -8839,-9125,-9266,-9159,-8711,-7944,-6998,-6055,-5205,-4433, -3693,-2986,-2385,-1956,-1705,-1539,-1351,-1111,-865,-658, -499,-395,-343,-285,-100,342,1040,1839,2572,3196, 3757,4285,4775,5218,5603,5903,6090,6187,6261,6391, 6636,6990,7361,7615,7655,7467,7109,6657,6158,5618, 5008,4306,3506,2637,1705,699,-379,-1526,-2712,-3875, -4938,-5851,-6587,-7163,-7654,-8138,-8648,-9112,-9369,-9306, -8907,-8255,-7477,-6676,-5853,-4988,-4116,-3333,-2726,-2294, -1982,-1724,-1478,-1217,-928,-648,-481,-471,-536,-506, -276,172,780,1464,2143,2770,3344,3905,4462,4980, 5414,5725,5905,5992,6066,6228,6521,6907,7291,7557, 7629,7522,7284,6954,6547,6052,5468,4794,4067,3304, 2466,1510,430,-726,-1916,-3104,-4224,-5179,-5926,-6528, -7111,-7753,-8431,-9002,-9309,-9299,-9037,-8593,-8006,-7271, -6398,-5475,-4600,-3814,-3138,-2619,-2271,-2017,-1725,-1342, -954,-684,-593,-635,-691,-640,-422,-36,484,1100, 1734,2335,2916,3518,4150,4745,5223,5538,5694,5767, 5860,6067,6398,6799,7173,7434,7543,7518,7401,7196, 6877,6422,5864,5249,4596,3894,3108,2217,1189,40, -1190,-2428,-3573,-4520,-5262,-5925,-6651,-7461,-8234,-8819, -9160,-9301,-9262,-9007,-8513,-7831,-7035,-6155,-5224,-4345, -3641,-3144,-2775,-2413,-1982,-1511,-1091,-835,-767,-815, -864,-817,-631,-296,163,705,1271,1838,2421,3067, 3770,4433,4947,5266,5427,5518,5645,5881,6233,6638, 6999,7268,7445,7538,7513,7362,7086,6694,6205,5656, 5066,4440,3753,2957,1983,807,-498,-1765,-2845,-3721, -4508,-5319,-6182,-7040,-7824,-8483,-8976,-9255,-9328,-9227, -8936,-8402,-7631,-6705,-5752,-4897,-4215,-3693,-3241,-2762, -2231,-1696,-1259,-995,-911,-935,-980,-953,-784,-473, -78,352,819,1345,1957,2660,3412,4120,4658,4966, 5121,5261,5467,5748,6070,6409,6759,7083,7335,7488, 7530,7457,7262,6948,6513,5982,5438,4930,4396,3669, 2652,1418,157,-995,-2017,-2951,-3834,-4697,-5579,-6483, -7352,-8093,-8652,-9047,-9307,-9412,-9278,-8833,-8086,-7171, -6258,-5458,-4797,-4233,-3698,-3136,-2543,-1969,-1497,-1193, -1077,-1089,-1112,-1053,-887,-644,-341,5,400,880, 1490,2239,3037,3739,4252,4585,4813,5013,5239,5500, 5796,6140,6509,6859,7139,7340,7464,7509,7405,7105, 6665,6219,5848,5490,4986,4232,3242,2119,952,-176, -1231,-2200,-3106,-4019,-4971,-5933,-6819,-7578,-8216,-8772, -9229,-9518,-9508,-9136,-8458,-7628,-6799,-6043,-5375,-4769, -4172,-3535,-2861,-2222,-1716,-1404,-1257,-1212,-1185,-1111, -951,-737,-520,-292,25,506,1161,1931,2706,3383, 3913,4300,4594,4843,5071,5314,5619,5983,6340,6652, 6957,7271,7519,7587,7437,7147,6841,6579,6336,6022, 5543,4841,3921,2858,1753,679,-335,-1308,-2279,-3272, -4263,-5209,-6075,-6869,-7639,-8384,-9019,-9416,-9490,-9220, -8669,-7950,-7199,-6507,-5873,-5249,-4576,-3860,-3142,-2471, -1923,-1561,-1377,-1289,-1202,-1065,-911,-783,-683,-533, -248,233,882,1611,2331,3009,3607,4073,4384,4621, 4883,5198,5503,5771,6051,6419,6856,7262,7509,7546, 7428,7245,7052,6866,6684,6443,6031,5374,4497,3495, 2471,1482,512,-490,-1542,-2597,-3587,-4494,-5363,-6241, -7139,-8012,-8768,-9303,-9510,-9362,-8925,-8331,-7697,-7075, -6464,-5821,-5109,-4332,-3543,-2832,-2266,-1880,-1641,-1465, -1281,-1091,-960,-927,-910,-786,-500,-78,471,1145, 1911,2644,3228,3652,4003,4355,4691,4962,5176,5406, 5732,6170,6649,7054,7299,7368,7312,7200,7095,7010, 6916,6743,6379,5760,4935,4033,3143,2233,1250,186, -898,-1936,-2890,-3780,-4656,-5585,-6580,-7582,-8465,-9102, -9421,-9416,-9130,-8672,-8153,-7631,-7076,-6440,-5703,-4887, -4059,-3332,-2775,-2359,-2011,-1678,-1406,-1240,-1176,-1151, -1102,-1001,-814,-480,54,749,1480,2135,2688,3195, 3685,4109,4423,4641,4827,5072,5434,5914,6418,6828, 7078,7171,7153,7095,7077,7112,7118,6976,6623,6071, 5384,4623,3800,2900,1912,850,-231,-1252,-2180,-3055, -3964,-4957,-6015,-7087,-8075,-8839,-9275,-9381,-9233,-8924, -8547,-8149,-7662,-7009,-6206,-5349,-4551,-3870,-3280,-2742, -2265,-1882,-1601,-1390,-1250,-1196,-1221,-1222,-1068,-701, -170,440,1067,1692,2317,2916,3449,3873,4174,4384, 4583,4854,5243,5735,6260,6701,6967,7047,7044,7087, 7198,7307,7319,7194,6899,6443,5877,5235,4497,3626, 2619,1545,490,-480,-1362,-2225,-3154,-4195,-5324,-6468, -7521,-8380,-8945,-9173,-9160,-9032,-8850,-8561,-8076,-7397, -6619,-5844,-5104,-4390,-3701,-3089,-2578,-2140,-1746,-1432, -1277,-1285,-1354,-1347,-1173,-845,-413,78,641,1290, 1981,2644,3206,3631,3930,4136,4318,4583,5003,5540, 6057,6440,6660,6773,6871,7013,7205,7355,7385,7273, 7043,6715,6287,5748,5073,4227,3228,2174,1175,268, -576,-1437,-2367,-3409,-4577,-5819,-6977,-7874,-8457,-8806, -9023,-9139,-9094,-8838,-8397,-7814,-7123,-6357,-5580,-4853, -4187,-3562,-2962,-2394,-1913,-1579,-1439,-1442,-1472,-1428, -1266,-1016,-705,-299,240,890,1605,2306,2916,3361, 3636,3816,4028,4364,4841,5385,5880,6234,6438,6581, 6763,6994,7222,7377,7427,7366,7227,7028,6737,6290, 5640,4809,3859,2874,1905,1004,198,-586,-1483,-2586, -3863,-5146,-6279,-7199,-7925,-8481,-8877,-9105,-9153,-9018, -8703,-8202,-7545,-6812,-6082,-5389,-4722,-4027,-3300,-2627, -2111,-1779,-1602,-1530,-1494,-1440,-1335,-1159,-910,-565, -92,538,1278,2019,2640,3068,3317,3500,3762,4164, 4678,5203,5653,5978,6207,6405,6640,6922,7171,7312, 7348,7347,7336,7266,7058,6671,6103,5360,4454,3454, 2508,1717,1025,257,-720,-1885,-3123,-4340,-5477,-6496, -7361,-8057,-8570,-8920,-9113,-9131,-8928,-8499,-7909,-7273, -6648,-6006,-5292,-4502,-3718,-3028,-2472,-2068,-1830,-1710, -1636,-1566,-1487,-1385,-1230,-960,-510,133,894,1637, 2226,2620,2881,3121,3437,3865,4371,4870,5276,5579, 5840,6116,6425,6714,6929,7070,7171,7251,7300,7301, 7207,6958,6474,5729,4808,3883,3077,2370,1658,847, -116,-1220,-2423,-3645,-4812,-5878,-6812,-7602,-8256,-8782, -9138,-9257,-9115,-8769,-8318,-7814,-7253,-6612,-5868,-5050, -4231,-3499,-2901,-2450,-2133,-1917,-1771,-1670,-1621,-1597, -1531,-1315,-872,-216,542,1262,1835,2211,2479,2772, 3166,3634,4107,4537,4911,5265,5600,5922,6220,6488, 6726,6910,7023,7111,7235,7388,7437,7239,6746,6034, 5221,4423,3696,3018,2320,1523,598,-465,-1640,-2856, -4018,-5094,-6095,-7028,-7863,-8535,-8975,-9162,-9139,-8950, -8642,-8248,-7755,-7132,-6383,-5559,-4736,-3970,-3323,-2812, -2405,-2069,-1827,-1719,-1720,-1759,-1736,-1552,-1125,-477, 272,951,1462,1830,2169,2570,3017,3451,3856,4264, 4684,5070,5410,5733,6066,6386,6632,6775,6880,7053, 7322,7584,7686,7516,7069,6439,5741,5029,4329,3662, 3003,2274,1387,332,-823,-1985,-3117,-4225,-5318,-6367, -7303,-8064,-8599,-8910,-9028,-8983,-8807,-8517,-8107,-7540, -6799,-5967,-5147,-4400,-3735,-3131,-2598,-2168,-1880,-1745, -1757,-1845,-1876,-1705,-1264,-626,41,615,1086,1507, 1928,2350,2773,3208,3646,4065,4440,4803,5182,5583, 5966,6257,6431,6543,6714,7002,7355,7639,7757,7657, 7335,6814,6170,5497,4866,4268,3638,2899,2023,1027, -46,-1141,-2253,-3407,-4589,-5730,-6750,-7596,-8239,-8666, -8912,-9026,-9015,-8855,-8510,-7974,-7280,-6513,-5746,-5004, -4285,-3605,-2974,-2427,-2046,-1902,-1974,-2102,-2083,-1840, -1426,-907,-343,210,715,1162,1583,2024,2492,2942, 3343,3699,4060,4474,4941,5399,5753,5964,6092,6249, 6502,6839,7210,7538,7734,7709,7444,6994,6449,5888, 5332,4778,4161,3435,2603,1695,726,-315,-1428,-2597, -3812,-5022,-6124,-7036,-7740,-8274,-8684,-8970,-9091,-9020, -8758,-8307,-7695,-6987,-6275,-5578,-4855,-4060,-3256,-2591, -2210,-2106,-2162,-2225,-2174,-1966,-1616,-1158,-643,-123, 352,797,1261,1767,2276,2705,3024,3324,3731,4249, 4775,5205,5511,5712,5863,6036,6300,6675,7112,7503, 7745,7756,7552,7200,6766,6304,5813,5267,4648,3960, 3201,2365,1458,483,-593,-1792,-3074,-4324,-5448,-6397, -7191,-7860,-8418,-8839,-9091,-9141,-8958,-8564,-8042,-7485, -6903,-6233,-5411,-4492,-3625,-2957,-2545,-2378,-2371,-2394, -2337,-2158,-1848,-1427,-968,-534,-110,375,934,1491, 1950,2292,2594,2957,3426,3961,4475,4895,5196,5403, 5561,5736,6008,6409,6890,7329,7605,7657,7523,7277, 6972,6602,6159,5634,5040,4389,3702,2976,2173,1253, 184,-1016,-2282,-3531,-4692,-5715,-6581,-7336,-8040,-8661, -9070,-9186,-9051,-8782,-8452,-8054,-7537,-6837,-5961,-5004, -4115,-3398,-2906,-2648,-2587,-2597,-2529,-2311,-1983,-1630, -1289,-914,-454,91,661,1176,1603,1947,2273,2660, 3141,3690,4227,4673,4981,5163,5286,5461,5781,6237, 6732,7159,7448,7560,7518,7374,7158,6870,6481,5973, 5385,4792,4200,3558,2809,1941,936,-214,-1479,-2741, -3876,-4874,-5810,-6743,-7631,-8353,-8811,-8997,-8992,-8893, -8727,-8438,-7957,-7265,-6414,-5485,-4554,-3743,-3200,-2939, -2841,-2746,-2576,-2350,-2111,-1873,-1583,-1190,-692,-147, 391,875,1286,1642,1991,2387,2878,3453,4024,4471, 4754,4928,5083,5293,5607,6042,6545,7006,7328,7494, 7544,7521,7416,7184,6815,6351,5848,5317,4759,4169, 3515,2716,1716,555,-661,-1839,-2938,-4004,-5081,-6152, -7122,-7870,-8371,-8686,-8880,-8957,-8902,-8703,-8334,-7740, -6901,-5906,-4923,-4122,-3574,-3238,-3008,-2807,-2604,-2416, -2250,-2058,-1783,-1397,-910,-381,140,611,1010,1350, 1698,2135,2683,3279,3825,4250,4543,4730,4893,5120, 5458,5893,6361,6783,7130,7394,7563,7617,7561,7391, 7092,6660,6162,5692,5263,4790,4179,3377,2396,1303, 197,-888,-1994,-3165,-4367,-5514,-6517,-7336,-7960,-8401, -8708,-8919,-9041,-9022,-8773,-8212,-7370,-6388,-5445,-4670, -4090,-3638,-3263,-2969,-2750,-2592,-2451,-2287,-2043,-1675, -1194,-664,-168,251,611,955,1339,1802,2364,2973, 3539,3955,4210,4388,4598,4881,5218,5593,6009,6442, 6838,7157,7397,7552,7594,7485,7209,6804,6374,6008, 5679,5261,4642,3823,2909,1972,985,-83,-1246,-2470, -3704,-4896,-5975,-6878,-7571,-8087,-8518,-8923,-9259,-9385, -9181,-8641,-7860,-6976,-6111,-5332,-4664,-4107,-3654,-3297, -3037,-2870,-2763,-2635,-2388,-1993,-1498,-996,-541,-147, 184,497,877,1385,2004,2630,3141,3519,3802,4045, 4293,4570,4894,5261,5659,6065,6470,6846,7167,7414, 7529,7439,7157,6813,6525,6297,6016,5580,4976,4261, 3480,2638,1718,701,-419,-1645,-2931,-4192,-5312,-6222, -6936,-7554,-8164,-8762,-9240,-9470,-9357,-8922,-8261,-7484, -6663,-5865,-5139,-4487,-3930,-3491,-3206,-3061,-2967,-2809, -2540,-2165,-1689,-1187,-755,-426,-140,196,643,1190, 1784,2366,2879,3292,3619,3886,4135,4410,4735,5092, 5450,5809,6225,6708,7170,7476,7558,7451,7258,7067, 6892,6687,6389,5961,5419,4783,4081,3327,2511,1579, 483,-774,-2105,-3378,-4481,-5384,-6159,-6917,-7696,-8431, -9012,-9345,-9357,-9045,-8508,-7855,-7137,-6360,-5554,-4807, -4193,-3735,-3421,-3229,-3121,-2988,-2714,-2283,-1785,-1333, -971,-680,-395,-45,412,957,1537,2111,2630,3058, 3386,3664,3963,4293,4604,4866,5131,5497,6006,6571, 7038,7324,7425,7403,7319,7212,7086,6926,6685,6329, 5843,5259,4639,4001,3289,2407,1298,10,-1324,-2556, -3624,-4562,-5442,-6325,-7223,-8079,-8779,-9201,-9313,-9172, -8835,-8318,-7654,-6885,-6070,-5281,-4589,-4051,-3695,-3509, -3395,-3222,-2909,-2465,-1987,-1585,-1279,-1003,-702,-347, 81,609,1214,1804,2289,2670,3018,3392,3769,4078, 4289,4474,4751,5186,5725,6275,6735,7041,7196,7251, 7245,7202,7138,7037,6843,6496,6020,5510,5026,4528, 3897,3042,1962,714,-572,-1765,-2817,-3773,-4717,-5700, -6694,-7629,-8418,-8979,-9262,-9275,-9067,-8683,-8137,-7429, -6608,-5762,-5003,-4430,-4079,-3877,-3703,-3464,-3119,-2700, -2261,-1868,-1555,-1302,-1046,-715,-253,318,900,1408, 1850,2294,2769,3225,3575,3807,3975,4171,4477,4936, 5490,6035,6490,6823,7029,7131,7195,7255,7288,7222, 7001,6652,6250,5871,5508,5090,4514,3682,2611,1416, 223,-900,-1948,-2956,-3977,-5036,-6096,-7099,-7965,-8630, -9063,-9259,-9236,-9018,-8586,-7919,-7070,-6186,-5420,-4860, -4486,-4213,-3957,-3673,-3341,-2927,-2472,-2096,-1839,-1628, -1349,-957,-477,24,505,975,1473,2013,2545,2989, 3303,3513,3689,3899,4216,4663,5209,5765,6219,6535, 6754,6954,7158,7320,7373,7285,7066,6762,6444,6172, 5930,5594,5033,4217,3214,2121,1029,-36,-1086,-2137, -3216,-4325,-5439,-6511,-7458,-8227,-8803,-9193,-9383,-9325, -8963,-8306,-7480,-6658,-5929,-5334,-4881,-4551,-4279,-3969, -3568,-3117,-2706,-2399,-2167,-1930,-1602,-1182,-738,-321, 97,591,1168,1760,2300,2739,3062,3288,3456,3642, 3958,4436,4993,5506,5904,6211,6497,6794,7094,7325, 7413,7319,7102,6850,6643,6490,6320,6015,5490,4747, 3836,2826,1788,768,-245,-1290,-2393,-3549,-4717,-5814, -6783,-7631,-8379,-8982,-9349,-9403,-9141,-8613,-7899,-7102, -6352,-5752,-5317,-4971,-4621,-4208,-3748,-3316,-2974,-2711, -2453,-2136,-1762,-1380,-1027,-671,-252,249,814,1422, 2009,2487,2812,3004,3161,3386,3734,4199,4717,5192, 5571,5888,6223,6609,6991,7261,7335,7230,7054,6897, 6797,6719,6592,6324,5856,5193,4368,3444,2498,1563, 598,-463,-1622,-2800,-3931,-5002,-6046,-7051,-7960,-8701, -9213,-9438,-9336,-8916,-8248,-7479,-6779,-6233,-5796,-5376, -4915,-4426,-3966,-3589,-3274,-2979,-2666,-2339,-2001,-1659, -1324,-991,-612,-123,497,1169,1776,2243,2552,2750, 2932,3200,3591,4046,4486,4867,5203,5556,5979,6455, 6883,7150,7222,7156,7042,6956,6916,6898,6841,6656, 6251,5623,4854,4047,3234,2359,1387,304,-829,-1953, -3057,-4161,-5260,-6338,-7350,-8234,-8924,-9330,-9363,-9017, -8426,-7780,-7211,-6716,-6217,-5679,-5154,-4683,-4265,-3883, -3536,-3205,-2862,-2504,-2159,-1859,-1592,-1309,-938,-431, 209,899,1515,1963,2246,2449,2684,3007,3407,3824, 4197,4523,4848,5257,5769,6301,6737,7002,7105,7083, 7016,6981,7017,7093,7094,6906,6515,5983,5369,4696, 3943,3081,2114,1079,3,-1094,-2197,-3309,-4440,-5589, -6725,-7785,-8656,-9189,-9310,-9080,-8659,-8182,-7697,-7187, -6644,-6083,-5544,-5054,-4631,-4251,-3886,-3502,-3096,-2711, -2391,-2143,-1924,-1672,-1307,-786,-124,561,1146,1555, 1831,2084,2401,2785,3166,3499,3794,4104,4471,4922, 5443,5974,6432,6741,6859,6843,6812,6879,7015,7114, 7085,6915,6627,6235,5732,5118,4403,3596,2701,1723, 684,-384,-1441,-2497,-3618,-4840,-6121,-7324,-8284,-8892, -9149,-9117,-8879,-8523,-8101,-7618,-7069,-6489,-5928,-5432, -5006,-4622,-4231,-3806,-3367,-2966,-2652,-2435,-2257,-2022, -1642,-1090,-418,250,785,1172,1485,1832,2225,2607, 2934,3222,3506,3812,4164,4623,5193,5790,6265,6542, 6650,6701,6781,6924,7085,7187,7180,7073,6886,6582, 6139,5594,4976,4253,3400,2430,1424,451,-505,-1527, -2692,-4003,-5372,-6648,-7696,-8439,-8867,-9018,-8957,-8736, -8388,-7926,-7381,-6808,-6256,-5768,-5345,-4946,-4511,-4020, -3530,-3110,-2821,-2654,-2522,-2282,-1853,-1260,-621,-38, 440,857,1253,1658,2069,2464,2799,3051,3256,3513, 3901,4433,5047,5621,6051,6314,6470,6605,6765,6936, 7088,7200,7252,7212,7064,6818,6488,6074,5530,4818, 3958,3038,2144,1291,403,-616,-1812,-3169,-4574,-5895, -7019,-7886,-8487,-8845,-8973,-8902,-8648,-8236,-7711,-7159, -6635,-6173,-5758,-5338,-4841,-4272,-3721,-3312,-3084,-2968, -2820,-2526,-2079,-1531,-957,-418,51,479,911,1372, 1847,2273,2586,2783,2952,3207,3623,4185,4789,5320, 5730,6021,6241,6420,6593,6785,6984,7144,7209,7170, 7062,6925,6731,6401,5877,5180,4381,3566,2782,2017, 1181,180,-1022,-2382,-3800,-5154,-6341,-7316,-8076,-8609, -8917,-8995,-8847,-8509,-8042,-7525,-7044,-6644,-6272,-5804, -5206,-4562,-4021,-3661,-3454,-3303,-3111,-2808,-2381,-1861, -1317,-817,-382,42,526,1082,1622,2044,2300,2448, 2623,2928,3374,3906,4457,4972,5414,5751,5994,6211, 6448,6698,6921,7072,7133,7146,7156,7145,7032,6737, 6241,5589,4867,4141,3448,2756,1983,1023,-162,-1503, -2895,-4244,-5500,-6615,-7539,-8247,-8731,-8964,-8913,-8608, -8177,-7766,-7433,-7103,-6664,-6086,-5435,-4807,-4288,-3931, -3706,-3524,-3300,-2986,-2560,-2062,-1575,-1143,-729,-258, 316,934,1461,1814,2039,2224,2443,2750,3170,3676, 4222,4733,5157,5495,5782,6061,6341,6608,6818,6950, 7028,7120,7241,7312,7246,6985,6523,5928,5293,4678, 4079,3447,2707,1793,677,-614,-1995,-3359,-4631,-5799, -6867,-7788,-8458,-8790,-8799,-8600,-8340,-8088,-7827,-7486, -7018,-6434,-5788,-5152,-4614,-4240,-4015,-3825,-3561,-3181, -2744,-2328,-1963,-1590,-1141,-584,30,628,1137,1514, 1769,1960,2172,2464,2879,3389,3923,4407,4806,5161, 5507,5847,6162,6415,6591,6722,6858,7040,7240,7375, 7342,7107,6702,6195,5653,5114,4577,4005,3334,2481, 1413,178,-1123,-2427,-3740,-5060,-6316,-7380,-8126,-8520, -8639,-8610,-8516,-8382,-8176,-7863,-7416,-6829,-6149,-5496, -4997,-4675,-4443,-4178,-3827,-3430,-3054,-2730,-2412,-2021, -1527,-961,-356,246,781,1191,1456,1641,1845,2166, 2610,3104,3574,4005,4414,4816,5219,5597,5918,6153, 6311,6449,6642,6908,7183,7356,7356,7167,6826,6377, 5896,5445,5010,4515,3881,3059,2075,979,-200,-1472, -2843,-4272,-5642,-6788,-7627,-8158,-8440,-8563,-8597,-8575, -8465,-8210,-7762,-7146,-6460,-5844,-5386,-5054,-4749,-4382, -3979,-3609,-3299,-3014,-2690,-2291,-1808,-1240,-607,22, 559,951,1213,1431,1703,2060,2481,2913,3333,3748, 4170,4617,5078,5503,5819,6011,6160,6357,6629,6944, 7251,7483,7541,7391,7075,6690,6325,5985,5618,5133, 4503,3744,2886,1937,863,-393,-1823,-3329,-4760,-5991, -6939,-7583,-7990,-8267,-8489,-8644,-8647,-8410,-7938,-7328, -6719,-6194,-5751,-5355,-4960,-4545,-4131,-3772,-3479,-3221, -2942,-2587,-2113,-1515,-845,-216,284,657,942,1212, 1527,1901,2302,2691,3050,3433,3884,4396,4892,5289, 5570,5773,5953,6163,6445,6810,7193,7463,7526,7379, 7110,6835,6594,6338,5981,5487,4899,4263,3559,2727, 1705,476,-949,-2486,-3988,-5299,-6315,-7050,-7597,-8074, -8502,-8798,-8855,-8642,-8223,-7701,-7176,-6697,-6253,-5816, -5381,-4936,-4495,-4106,-3824,-3610,-3368,-3023,-2526,-1904, -1244,-635,-143,219,523,859,1236,1611,1953,2269, 2614,3033,3527,4056,4548,4946,5233,5428,5590,5810, 6156,6601,7017,7280,7330,7221,7068,6917,6718,6429, 6060,5628,5146,4613,4008,3282,2376,1235,-142,-1660, -3136,-4413,-5437,-6265,-6993,-7655,-8217,-8592,-8719,-8603, -8306,-7908,-7467,-7018,-6576,-6128,-5658,-5172,-4716,-4346, -4084,-3878,-3635,-3285,-2789,-2187,-1566,-1013,-548,-144, 243,633,1021,1367,1670,1977,2332,2748,3232,3771, 4285,4690,4954,5138,5329,5623,6022,6452,6816,7054, 7159,7169,7120,7030,6891,6668,6352,5969,5557,5127, 4648,4047,3222,2114,753,-726,-2157,-3432,-4532,-5510, -6406,-7213,-7886,-8359,-8590,-8578,-8375,-8057,-7699,-7306, -6879,-6400,-5880,-5354,-4887,-4533,-4296,-4114,-3879,-3506, -2998,-2421,-1860,-1349,-860,-382,53,446,809,1146, 1446,1734,2071,2500,3023,3584,4085,4443,4662,4842, 5096,5453,5868,6268,6606,6861,7028,7110,7132,7103, 6995,6789,6495,6152,5816,5513,5175,4667,3889,2810, 1516,131,-1229,-2500,-3665,-4754,-5779,-6722,-7523,-8106, -8431,-8527,-8453,-8271,-8005,-7671,-7265,-6778,-6221,-5668, -5202,-4880,-4669,-4467,-4185,-3802,-3332,-2811,-2283,-1767, -1256,-757,-289,135,518,842,1118,1390,1730,2192, 2757,3323,3779,4090,4307,4527,4825,5202,5611,5993, 6338,6626,6845,7002,7102,7143,7074,6860,6546,6239, 6012,5832,5593,5159,4449,3461,2277,994,-297,-1554, -2769,-3949,-5088,-6136,-7025,-7700,-8142,-8366,-8422,-8368, -8223,-7978,-7597,-7076,-6487,-5939,-5508,-5197,-4957,-4716, -4418,-4044,-3611,-3134,-2634,-2122,-1606,-1087,-571,-87, 307,586,808,1078,1472,1984,2543,3065,3484,3790, 4040,4303,4627,5004,5405,5784,6110,6376,6633,6895, 7114,7198,7112,6893,6619,6399,6280,6205,6045,5678, 5029,4125,3038,1868,668,-567,-1828,-3083,-4300,-5444, -6443,-7221,-7745,-8076,-8289,-8412,-8401,-8209,-7824,-7307, -6756,-6244,-5823,-5487,-5215,-4947,-4647,-4286,-3870,-3424, -2964,-2474,-1936,-1354,-775,-282,61,280,492,804, 1241,1762,2308,2803,3199,3502,3765,4068,4433,4827, 5199,5527,5831,6150,6505,6853,7103,7184,7088,6879, 6661,6527,6497,6484,6365,6040,5468,4682,3732,2671, 1543,362,-893,-2215,-3537,-4769,-5816,-6648,-7295,-7805, -8203,-8470,-8559,-8429,-8079,-7587,-7066,-6590,-6181,-5838, -5544,-5262,-4941,-4572,-4184,-3800,-3388,-2892,-2303,-1662, -1063,-595,-275,-45,198,524,965,1486,2021,2503, 2884,3178,3466,3813,4216,4596,4920,5209,5520,5892, 6317,6726,7012,7096,6992,6802,6652,6594,6615,6648, 6584,6333,5848,5155,4314,3379,2369,1251,-13,-1395, -2773,-4031,-5117,-6037,-6812,-7470,-8015,-8414,-8606,-8556, -8279,-7857,-7381,-6924,-6517,-6167,-5845,-5511,-5153,-4805, -4491,-4171,-3780,-3262,-2632,-1974,-1390,-938,-612,-362, -102,242,708,1247,1762,2192,2540,2860,3217,3615, 4006,4349,4632,4903,5232,5664,6161,6610,6894,6971, 6894,6766,6671,6660,6727,6807,6786,6578,6168,5589, 4902,4122,3208,2122,862,-513,-1888,-3148,-4263,-5269, -6178,-6974,-7660,-8190,-8498,-8546,-8355,-8000,-7588,-7203, -6854,-6497,-6110,-5711,-5354,-5063,-4805,-4508,-4107,-3577, -2944,-2273,-1663,-1203,-899,-662,-373,25,514,1021, 1483,1876,2231,2603,3030,3469,3848,4119,4341,4612, 5001,5499,6029,6483,6781,6890,6853,6747,6678,6711, 6818,6910,6906,6752,6438,6006,5470,4806,3958,2905, 1682,374,-953,-2236,-3424,-4506,-5509,-6437,-7264,-7930, -8348,-8475,-8358,-8108,-7811,-7493,-7136,-6731,-6310,-5914, -5586,-5327,-5098,-4827,-4440,-3895,-3228,-2552,-1986,-1572, -1271,-989,-645,-217,260,734,1150,1523,1913,2363, 2840,3251,3557,3781,4007,4300,4713,5235,5790,6262, 6569,6688,6668,6609,6618,6714,6842,6928,6919,6801, 6604,6325,5933,5376,4605,3614,2462,1217,-60,-1325, -2537,-3684,-4787,-5851,-6825,-7612,-8123,-8355,-8376,-8272, -8087,-7817,-7459,-7030,-6574,-6170,-5869,-5654,-5462,-5211, -4810,-4232,-3565,-2921,-2381,-1973,-1654,-1322,-915,-450, -2,380,739,1151,1631,2131,2594,2980,3275,3496, 3708,4000,4427,4967,5539,6024,6318,6425,6447,6475, 6554,6673,6777,6830,6835,6800,6716,6542,6246,5785, 5122,4239,3164,1978,768,-432,-1622,-2827,-4047,-5234, -6288,-7126,-7725,-8101,-8286,-8321,-8236,-8033,-7692,-7243, -6771,-6379,-6124,-5962,-5790,-5520,-5089,-4516,-3863,-3254, -2766,-2383,-2018,-1604,-1148,-700,-304,44,416,861, 1379,1910,2389,2765,3044,3241,3437,3730,4188,4766, 5347,5813,6106,6249,6336,6444,6575,6689,6770,6821, 6860,6882,6870,6801,6634,6298,5724,4894,3870,2773, 1672,543,-664,-1947,-3246,-4498,-5624,-6559,-7275,-7782, -8120,-8310,-8343,-8192,-7869,-7430,-6972,-6600,-6370,-6245, -6097,-5810,-5349,-4773,-4173,-3638,-3174,-2743,-2292,-1817, -1360,-955,-596,-248,133,589,1121,1678,2180,2563, 2806,2967,3169,3507,4003,4588,5143,5566,5857,6064, 6230,6382,6525,6649,6735,6794,6844,6909,6982,7028, 6966,6694,6168,5413,4523,3570,2561,1470,276,-1024, -2379,-3684,-4848,-5844,-6683,-7370,-7892,-8227,-8366,-8291, -7997,-7562,-7124,-6810,-6649,-6546,-6373,-6047,-5577,-5042, -4526,-4048,-3572,-3075,-2573,-2088,-1640,-1252,-913,-582, -209,263,846,1457,1959,2290,2476,2636,2888,3280, 3787,4330,4836,5259,5599,5852,6050,6230,6400,6541, 6620,6656,6703,6813,6980,7116,7112,6903,6477,5851, 5089,4247,3330,2290,1106,-189,-1542,-2859,-4072,-5150, -6096,-6923,-7617,-8134,-8398,-8375,-8105,-7712,-7352,-7122, -6999,-6869,-6645,-6301,-5870,-5412,-4951,-4485,-3997,-3491, -2973,-2469,-2004,-1616,-1306,-1012,-633,-109,523,1143, 1627,1929,2118,2316,2604,2997,3466,3975,4470,4900, 5245,5529,5796,6056,6260,6370,6408,6447,6549,6731, 6946,7121,7166,7015,6668,6176,5579,4881,4050,3054, 1901,630,-701,-2014,-3235,-4351,-5396,-6389,-7267,-7922, -8263,-8294,-8093,-7802,-7542,-7375,-7263,-7106,-6857,-6524, -6146,-5734,-5306,-4853,-4363,-3826,-3262,-2720,-2259,-1923, -1659,-1351,-904,-317,329,914,1358,1660,1884,2112, 2405,2796,3270,3755,4206,4622,5006,5364,5700,5983, 6175,6267,6295,6332,6459,6692,6965,7177,7251,7159, 6916,6553,6077,5485,4758,3855,2760,1516,217,-1044, -2238,-3407,-4594,-5756,-6780,-7540,-7968,-8077,-7976,-7805, -7649,-7525,-7393,-7220,-6993,-6698,-6351,-5978,-5603,-5195, -4704,-4122,-3505,-2959,-2547,-2256,-1989,-1636,-1155,-578, 33,607,1064,1371,1595,1839,2168,2582,3021,3454, 3872,4280,4697,5115,5505,5819,6010,6086,6113,6189, 6371,6630,6892,7097,7203,7188,7048,6805,6475,6020, 5379,4511,3441,2264,1080,-81,-1266,-2525,-3844,-5139, -6277,-7121,-7631,-7869,-7927,-7887,-7813,-7728,-7614,-7445, -7204,-6915,-6624,-6352,-6055,-5648,-5094,-4451,-3825,-3311, -2930,-2638,-2352,-1971,-1470,-867,-254,280,694,1015, 1305,1606,1951,2342,2757,3154,3535,3944,4415,4898, 5323,5633,5811,5894,5948,6053,6240,6503,6789,7010, 7122,7140,7099,7012,6830,6481,5905,5091,4095,3026, 1969,904,-261,-1581,-3002,-4387,-5595,-6534,-7172,-7536, -7705,-7779,-7811,-7802,-7715,-7532,-7282,-7029,-6817,-6615, -6333,-5904,-5336,-4707,-4108,-3612,-3245,-2961,-2661,-2263, -1734,-1130,-532,-6,414,754,1063,1399,1776,2162, 2516,2855,3239,3691,4200,4701,5136,5460,5653,5738, 5799,5931,6163,6457,6736,6926,7035,7107,7173,7217, 7155,6868,6318,5561,4700,3798,2861,1831,653,-691, -2154,-3605,-4898,-5928,-6673,-7170,-7505,-7745,-7897,-7927, -7825,-7635,-7436,-7271,-7135,-6974,-6706,-6277,-5705,-5075, -4495,-4040,-3701,-3399,-3065,-2639,-2100,-1490,-897,-390, 12,364,730,1130,1510,1840,2150,2489,2880,3348, 3872,4405,4864,5194,5382,5476,5569,5740,5994,6273, 6508,6663,6785,6939,7139,7299,7297,7051,6573,5941, 5224,4452,3603,2639,1504,175,-1312,-2824,-4173,-5257, -6095,-6750,-7266,-7648,-7871,-7934,-7858,-7706,-7568,-7485, -7413,-7277,-7016,-6586,-6011,-5390,-4833,-4392,-4055,-3754, -3400,-2936,-2365,-1771,-1226,-751,-325,84,499,909, 1289,1614,1903,2207,2600,3093,3656,4215,4680,4996, 5177,5303,5466,5694,5960,6188,6350,6478,6650,6905, 7187,7380,7395,7204,6834,6332,5737,5093,4372,3497, 2395,1067,-392,-1866,-3224,-4397,-5379,-6194,-6864,-7368, -7675,-7778,-7738,-7651,-7601,-7597,-7580,-7468,-7213,-6798, -6247,-5641,-5106,-4705,-4394,-4078,-3674,-3178,-2637,-2096, -1577,-1091,-625,-167,285,696,1058,1358,1626,1919, 2309,2821,3413,3981,4419,4697,4883,5082,5341,5611, 5831,5986,6105,6256,6491,6806,7138,7385,7465,7338, 7036,6630,6193,5710,5107,4287,3217,1929,511,-924, -2286,-3527,-4636,-5619,-6447,-7060,-7434,-7598,-7627,-7621, -7642,-7703,-7760,-7706,-7467,-7035,-6490,-5946,-5491,-5129, -4799,-4425,-3979,-3481,-2971,-2469,-1973,-1475,-975,-468, 27,459,807,1075,1311,1598,2026,2580,3177,3696, 4073,4340,4604,4910,5219,5473,5651,5769,5878,6043, 6307,6666,7051,7341,7433,7329,7098,6826,6549,6207, 5701,4948,3934,2712,1380,26,-1316,-2636,-3887,-5011, -5950,-6659,-7114,-7348,-7446,-7518,-7641,-7806,-7915,-7868, -7627,-7215,-6720,-6245,-5838,-5487,-5138,-4732,-4271,-3792, -3310,-2826,-2343,-1845,-1305,-749,-223,211,521,733, 961,1305,1790,2360,2912,3369,3735,4059,4389,4740, 5074,5329,5480,5558,5648,5827,6125,6520,6922,7210, 7314,7259,7125,6991,6854,6625,6198,5509,4575,3470, 2251,964,-374,-1735,-3078,-4336,-5419,-6236,-6758,-7058, -7254,-7446,-7673,-7892,-8019,-7976,-7743,-7385,-6974,-6568, -6189,-5830,-5454,-5041,-4591,-4128,-3668,-3226,-2772,-2259, -1667,-1048,-492,-81,174,361,619,1018,1528,2063, 2549,2971,3354,3738,4139,4550,4901,5141,5257,5308, 5395,5596,5938,6357,6757,7028,7134,7125,7098,7100, 7071,6916,6562,5979,5179,4195,3081,1876,588,-789, -2211,-3568,-4728,-5619,-6228,-6610,-6904,-7222,-7568,-7857, -8015,-8009,-7838,-7546,-7198,-6842,-6493,-6134,-5752,-5319, -4853,-4390,-3974,-3587,-3144,-2580,-1915,-1264,-742,-378, -119,121,431,850,1342,1843,2294,2700,3097,3522, 3985,4441,4808,5032,5128,5172,5274,5513,5889,6313, 6667,6894,7016,7091,7167,7250,7293,7221,6946,6451, 5761,4930,3967,2858,1587,169,-1318,-2763,-4011,-4971, -5660,-6169,-6606,-7036,-7447,-7793,-8008,-8061,-7946,-7713, -7423,-7129,-6842,-6505,-6084,-5604,-5152,-4766,-4424,-4044, -3545,-2927,-2248,-1596,-1068,-702,-434,-155,181,592, 1057,1528,1957,2348,2757,3229,3755,4255,4630,4821, 4875,4916,5064,5346,5719,6096,6415,6641,6796,6925, 7070,7226,7334,7324,7130,6746,6193,5511,4697,3691, 2453,1018,-509,-1977,-3259,-4286,-5074,-5700,-6260,-6801, -7313,-7733,-8004,-8085,-8017,-7860,-7683,-7477,-7202,-6822, -6369,-5922,-5532,-5199,-4880,-4492,-3963,-3306,-2610,-1986, -1493,-1121,-802,-470,-91,330,771,1196,1580,1954, 2396,2945,3533,4040,4375,4539,4612,4708,4900,5203, 5567,5907,6177,6384,6560,6745,6959,7177,7335,7361, 7226,6951,6565,6061,5393,4473,3272,1849,343,-1105, -2400,-3490,-4374,-5110,-5783,-6432,-7027,-7509,-7818,-7953, -7972,-7940,-7852,-7672,-7377,-6982,-6549,-6143,-5810,-5536, -5237,-4823,-4256,-3585,-2914,-2332,-1857,-1459,-1093,-713, -287,157,551,891,1227,1624,2129,2729,3337,3840, 4162,4327,4434,4580,4805,5107,5442,5753,6000,6198, 6400,6643,6918,7180,7358,7406,7341,7199,6987,6659, 6118,5278,4133,2768,1312,-129,-1449,-2586,-3549,-4401, -5216,-5994,-6668,-7178,-7519,-7738,-7873,-7949,-7941,-7801, -7501,-7095,-6685,-6348,-6087,-5834,-5514,-5076,-4515,-3865, -3207,-2637,-2178,-1776,-1363,-905,-431,-4,327,600, 909,1331,1879,2505,3106,3591,3917,4113,4255,4426, 4684,5003,5307,5551,5754,5957,6203,6504,6811,7060, 7215,7295,7331,7328,7260,7057,6621,5891,4852,3562, 2145,737,-552,-1693,-2743,-3745,-4690,-5535,-6248,-6800, -7210,-7534,-7816,-8027,-8088,-7949,-7647,-7285,-6941,-6660, -6436,-6227,-5931,-5480,-4885,-4235,-3625,-3103,-2656,-2219, -1729,-1199,-709,-325,-47,186,494,950,1532,2170, 2781,3269,3595,3806,3989,4214,4497,4807,5079,5289, 5474,5700,6002,6335,6627,6845,7003,7128,7235,7333, 7392,7345,7082,6477,5498,4258,2921,1611,372,-805, -1953,-3068,-4103,-5008,-5749,-6342,-6852,-7320,-7730,-8017, -8127,-8036,-7769,-7421,-7114,-6911,-6767,-6588,-6275,-5796, -5200,-4597,-4051,-3574,-3109,-2605,-2043,-1478,-997,-656, -419,-188,137,617,1223,1874,2471,2934,3253,3488, 3726,4011,4331,4613,4820,4985,5192,5474,5808,6137, 6418,6635,6795,6929,7084,7292,7497,7588,7427,6923, 6061,4945,3734,2518,1316,102,-1136,-2354,-3450,-4375, -5161,-5848,-6463,-7039,-7553,-7930,-8099,-8048,-7820,-7525, -7288,-7149,-7039,-6849,-6514,-6035,-5476,-4928,-4436,-3980, -3485,-2914,-2302,-1717,-1238,-906,-681,-457,-126,365, 993,1655,2225,2653,2980,3289,3619,3941,4224,4464, 4671,4863,5075,5345,5686,6034,6310,6494,6627,6774, 6983,7274,7589,7794,7730,7312,6576,5633,4578,3448, 2253,990,-299,-1548,-2681,-3658,-4505,-5272,-6010,-6714, -7340,-7796,-8011,-7989,-7812,-7611,-7479,-7419,-7329,-7119, -6761,-6300,-5807,-5340,-4897,-4428,-3883,-3262,-2610,-2009, -1538,-1226,-1027,-803,-437,100,726,1326,1835,2272, 2682,3073,3438,3771,4063,4295,4472,4647,4880,5185, 5536,5868,6118,6268,6376,6533,6816,7225,7640,7903, 7894,7582,7012,6253,5344,4296,3119,1846,531,-735, -1879,-2880,-3777,-4631,-5485,-6324,-7067,-7594,-7837,-7848, -7753,-7664,-7628,-7605,-7512,-7281,-6926,-6520,-6106,-5694, -5277,-4810,-4248,-3580,-2882,-2264,-1818,-1539,-1323,-1040, -634,-132,417,970,1491,1961,2390,2813,3228,3590, 3879,4098,4266,4437,4681,5018,5399,5732,5935,6017, 6091,6289,6642,7097,7532,7826,7891,7728,7350,6771, 5998,5041,3916,2663,1359,108,-1024,-2036,-2982,-3939, -4931,-5881,-6679,-7236,-7534,-7640,-7678,-7716,-7752,-7743, -7646,-7431,-7113,-6752,-6403,-6075,-5720,-5261,-4648,-3929, -3216,-2629,-2214,-1922,-1657,-1329,-912,-418,104,608, 1093,1581,2078,2558,2997,3378,3665,3866,4019,4207, 4499,4883,5263,5539,5673,5731,5829,6064,6449,6917, 7363,7699,7866,7843,7624,7209,6581,5719,4637,3405, 2137,941,-143,-1149,-2174,-3263,-4378,-5407,-6250,-6845, -7217,-7445,-7607,-7737,-7841,-7873,-7774,-7538,-7245,-6968, -6735,-6492,-6152,-5641,-4982,-4265,-3595,-3039,-2620,-2306, -1999,-1632,-1200,-736,-260,215,698,1200,1725,2252, 2741,3129,3397,3573,3734,3978,4336,4754,5111,5322, 5401,5451,5576,5834,6220,6687,7138,7493,7721,7821, 7784,7564,7098,6322,5278,4080,2867,1749,733,-281, -1381,-2570,-3765,-4855,-5744,-6408,-6875,-7203,-7465,-7715, -7911,-7975,-7865,-7640,-7398,-7204,-7048,-6854,-6517,-5995, -5335,-4635,-3983,-3437,-3004,-2639,-2285,-1896,-1472,-1020, -564,-122,324,828,1411,2020,2549,2903,3110,3266, 3479,3804,4214,4617,4924,5109,5188,5243,5372,5635, 6010,6441,6859,7236,7564,7813,7937,7862,7504,6824, 5869,4771,3667,2636,1642,596,-555,-1783,-3027,-4166, -5100,-5799,-6335,-6799,-7227,-7589,-7817,-7875,-7778,-7600, -7436,-7342,-7275,-7111,-6767,-6248,-5621,-4955,-4313,-3758, -3306,-2919,-2535,-2113,-1663,-1231,-840,-452,-8,540, 1180,1813,2317,2648,2862,3061,3332,3698,4121,4514, 4808,4974,5054,5126,5283,5555,5899,6268,6642,7018, 7419,7818,8107,8152,7867,7260,6424,5472,4495,3529, 2552,1502,318,-975,-2264,-3426,-4384,-5151,-5814,-6430, -6991,-7428,-7692,-7769,-7721,-7629,-7569,-7541,-7496,-7350, -7045,-6572,-5986,-5345,-4721,-4181,-3717,-3275,-2815,-2352, -1919,-1540,-1199,-843,-374,233,908,1533,2011,2335, 2568,2812,3140,3555,3998,4378,4630,4773,4857,4959, 5139,5396,5675,5939,6239,6651,7177,7704,8089,8218, 8028,7536,6830,6006,5149,4283,3355,2281,1054,-259, -1551,-2714,-3699,-4548,-5348,-6117,-6790,-7296,-7591,-7707, -7723,-7722,-7742,-7781,-7786,-7683,-7414,-6973,-6408,-5806, -5237,-4727,-4238,-3720,-3177,-2680,-2292,-1986,-1684,-1295, -782,-147,536,1151,1613,1935,2193,2480,2849,3291, 3740,4105,4347,4491,4625,4797,4991,5176,5365,5592, 5894,6318,6876,7481,7969,8195,8095,7711,7142,6489, 5785,5012,4115,3034,1785,469,-784,-1903,-2916,-3879, -4821,-5698,-6446,-7002,-7351,-7528,-7613,-7668,-7753,-7863, -7931,-7861,-7606,-7193,-6684,-6170,-5677,-5176,-4621,-4023, -3448,-2970,-2617,-2342,-2050,-1652,-1105,-442,241,838, 1285,1594,1866,2210,2655,3144,3579,3899,4128,4328, 4524,4717,4889,5031,5154,5308,5584,6036,6652,7321, 7866,8156,8146,7878,7459,6979,6451,5787,4909,3817, 2602,1367,174,-950,-2021,-3080,-4128,-5097,-5919,-6542, -6958,-7204,-7353,-7489,-7667,-7867,-7981,-7914,-7670,-7315, -6908,-6482,-6023,-5499,-4896,-4254,-3660,-3203,-2887,-2621, -2310,-1890,-1325,-645,27,585,991,1312,1651,2076, 2558,3020,3423,3748,4012,4259,4512,4747,4908,4978, 5017,5110,5358,5819,6466,7159,7731,8043,8081,7931, 7705,7418,7014,6416,5580,4544,3395,2228,1090,-24, -1146,-2279,-3402,-4459,-5368,-6056,-6522,-6833,-7078,-7335, -7614,-7863,-7993,-7942,-7746,-7479,-7185,-6846,-6411,-5844, -5194,-4536,-3963,-3523,-3218,-2975,-2673,-2217,-1599,-934, -332,151,550,921,1321,1774,2253,2705,3085,3403, 3703,4025,4338,4591,4732,4752,4720,4761,5009,5501, 6163,6840,7388,7725,7861,7868,7814,7683,7382,6838, 6057,5100,4057,2972,1870,762,-375,-1565,-2784,-3936, -4912,-5654,-6190,-6594,-6947,-7300,-7650,-7920,-8047,-8046, -7945,-7784,-7574,-7295,-6896,-6339,-5662,-4986,-4420,-4017, -3741,-3479,-3123,-2631,-2023,-1376,-797,-325,85,506, 971,1460,1927,2344,2708,3045,3398,3786,4164,4451, 4572,4534,4441,4454,4704,5202,5841,6464,6974,7340, 7591,7768,7869,7844,7626,7175,6498,5649,4699,3707, 2689,1628,479,-779,-2074,-3271,-4267,-5035,-5629,-6143, -6628,-7086,-7475,-7752,-7908,-7966,-7958,-7900,-7787,-7571, -7185,-6615,-5926,-5254,-4716,-4344,-4069,-3774,-3372,-2844, -2245,-1657,-1126,-666,-228,231,730,1235,1697,2095, 2450,2812,3230,3697,4132,4415,4481,4383,4274,4307, 4576,5053,5622,6180,6673,7092,7444,7740,7954,8041, 7936,7586,7000,6251,5411,4518,3575,2541,1357,44, -1279,-2485,-3511,-4362,-5066,-5693,-6277,-6810,-7250,-7558, -7739,-7856,-7954,-8029,-8019,-7843,-7458,-6879,-6201,-5564, -5077,-4731,-4437,-4096,-3654,-3115,-2542,-2001,-1513,-1048, -566,-55,475,983,1420,1776,2107,2509,3026,3596, 4080,4342,4355,4243,4168,4237,4482,4890,5386,5883, 6351,6789,7209,7599,7932,8141,8125,7846,7345,6718, 6029,5278,4419,3380,2160,833,-483,-1690,-2739,-3646, -4459,-5208,-5901,-6500,-6962,-7288,-7527,-7736,-7949,-8135, -8209,-8078,-7696,-7125,-6493,-5933,-5493,-5147,-4823,-4441, -3957,-3408,-2872,-2391,-1936,-1459,-932,-372,176,660, 1050,1366,1719,2209,2825,3435,3901,4139,4169,4095, 4054,4133,4351,4681,5084,5515,5954,6400,6873,7371, 7826,8098,8107,7882,7512,7065,6544,5911,5105,4103, 2916,1615,315,-882,-1947,-2917,-3839,-4707,-5491,-6152, -6648,-6984,-7261,-7563,-7910,-8207,-8333,-8215,-7862,-7356, -6809,-6309,-5900,-5548,-5174,-4736,-4238,-3718,-3227,-2786, -2357,-1853,-1253,-617,-62,345,643,949,1371,1948, 2621,3253,3715,3960,4005,3959,3942,4029,4237,4531, 4862,5204,5585,6043,6581,7155,7662,7985,8078,7978, 7747,7446,7064,6549,5822,4854,3684,2428,1189,22, -1071,-2124,-3152,-4148,-5032,-5719,-6204,-6581,-6959,-7389, -7839,-8207,-8386,-8309,-8003,-7559,-7076,-6638,-6260,-5906, -5506,-5028,-4506,-4020,-3605,-3221,-2774,-2207,-1544,-901, -382,-27,231,539,1008,1643,2349,2985,3454,3729, 3836,3839,3845,3940,4123,4342,4571,4836,5188,5670, 6257,6870,7403,7754,7895,7882,7805,7675,7438,7024, 6375,5468,4360,3166,1990,870,-232,-1364,-2506,-3582, -4501,-5211,-5737,-6177,-6640,-7167,-7710,-8158,-8385,-8344, -8090,-7725,-7338,-6981,-6650,-6280,-5820,-5307,-4817,-4403, -4045,-3650,-3145,-2522,-1846,-1231,-772,-452,-173,175, 659,1295,2016,2690,3184,3452,3570,3642,3746,3883, 4023,4148,4283,4485,4819,5326,5948,6574,7096,7464, 7685,7806,7863,7858,7743,7425,6837,6002,5004,3931, 2845,1755,615,-602,-1834,-2964,-3897,-4625,-5205,-5736, -6299,-6922,-7547,-8058,-8334,-8347,-8164,-7885,-7596,-7311, -6983,-6571,-6074,-5554,-5113,-4773,-4458,-4039,-3466,-2797, -2135,-1570,-1139,-822,-544,-196,313,988,1728,2390, 2878,3187,3379,3536,3698,3854,3961,4017,4083,4247, 4580,5079,5667,6268,6783,7158,7426,7642,7833,7968, 7960,7716,7204,6476,5611,4680,3689,2611,1429,161, -1110,-2259,-3201,-3952,-4581,-5179,-5834,-6558,-7263,-7809, -8108,-8180,-8117,-7998,-7836,-7599,-7242,-6771,-6264,-5821, -5476,-5173,-4826,-4381,-3803,-3124,-2441,-1868,-1463,-1181, -901,-507,54,738,1457,2091,2574,2932,3222,3474, 3693,3848,3913,3910,3920,4057,4382,4881,5457,6007, 6470,6853,7197,7543,7876,8117,8167,7976,7558,6975, 6283,5490,4566,3499,2288,979,-316,-1475,-2424,-3196, -3882,-4590,-5371,-6187,-6932,-7499,-7841,-8008,-8088,-8129, -8073,-7849,-7458,-6986,-6529,-6149,-5843,-5566,-5231,-4754, -4126,-3423,-2760,-2225,-1850,-1580,-1288,-868,-284,406, 1091,1693,2189,2615,2994,3334,3613,3780,3812,3767, 3751,3877,4191,4655,5179,5670,6091,6461,6850,7301, 7751,8081,8189,8061,7740,7293,6764,6122,5305,4266, 3032,1701,399,-756,-1716,-2516,-3261,-4070,-4960,-5844, -6599,-7168,-7571,-7889,-8143,-8286,-8270,-8077,-7710,-7249, -6808,-6483,-6246,-6002,-5656,-5147,-4487,-3757,-3095,-2604, -2274,-1999,-1653,-1177,-586,60,685,1251,1771,2269, 2752,3186,3502,3654,3656,3584,3564,3699,4010,4433, 4868,5267,5648,6060,6531,7048,7539,7904,8072,8039, 7860,7589,7227,6715,5990,5005,3772,2427,1153,57, -864,-1702,-2561,-3485,-4428,-5301,-6048,-6671,-7192,-7638, -8011,-8268,-8325,-8146,-7791,-7383,-7016,-6748,-6558,-6347, -6001,-5466,-4784,-4069,-3450,-2991,-2661,-2361,-1978,-1473, -896,-316,236,791,1365,1947,2508,3001,3358,3513, 3507,3447,3464,3624,3913,4253,4595,4929,5291,5729, 6251,6819,7342,7740,7959,8014,7960,7837,7628,7262, 6633,5682,4473,3181,1983,939,-1,-928,-1887,-2875, -3846,-4732,-5503,-6185,-6810,-7389,-7888,-8233,-8345,-8208, -7892,-7523,-7220,-7035,-6901,-6702,-6328,-5760,-5069,-4390, -3821,-3387,-3049,-2709,-2280,-1777,-1246,-713,-193,333, 921,1584,2251,2811,3173,3320,3327,3313,3371,3551, 3800,4054,4297,4562,4909,5359,5902,6499,7062,7477, 7712,7822,7898,7970,7951,7695,7117,6213,5081,3885, 2768,1758,786,-208,-1238,-2263,-3230,-4115,-4922,-5670, -6394,-7092,-7708,-8142,-8306,-8203,-7930,-7638,-7427,-7317, -7223,-7036,-6655,-6078,-5415,-4793,-4274,-3848,-3462,-3062, -2610,-2112,-1599,-1120,-659,-141,498,1233,1953,2534, 2905,3081,3141,3189,3296,3462,3656,3840,4017,4225, 4537,4995,5575,6196,6735,7118,7378,7598,7837,8070, 8184,8020,7499,6671,5668,4616,3576,2564,1549,507, -560,-1607,-2570,-3430,-4239,-5054,-5904,-6731,-7440,-7937, -8156,-8102,-7883,-7672,-7575,-7555,-7486,-7268,-6871,-6329, -5722,-5137,-4632,-4196,-3781,-3341,-2865,-2381,-1933,-1521, -1085,-529,173,959,1689,2262,2653,2884,3016,3125, 3269,3448,3623,3747,3835,3980,4280,4773,5378,5961, 6428,6773,7063,7394,7798,8176,8371,8279,7857,7153, 6289,5363,4407,3419,2386,1294,190,-843,-1773,-2625, -3471,-4366,-5318,-6267,-7091,-7658,-7909,-7908,-7796,-7703, -7675,-7686,-7647,-7459,-7073,-6548,-5991,-5473,-5000,-4549, -4081,-3576,-3067,-2622,-2261,-1920,-1486,-897,-171,619, 1374,1979,2388,2650,2845,3043,3267,3466,3576,3605, 3638,3772,4092,4595,5169,5678,6064,6374,6721,7168, 7689,8163,8437,8412,8086,7523,6822,6036,5161,4181, 3116,2006,902,-134,-1056,-1893,-2754,-3732,-4805,-5853, -6726,-7325,-7639,-7735,-7736,-7765,-7853,-7929,-7887,-7677, -7308,-6852,-6383,-5936,-5487,-4988,-4432,-3877,-3397,-3024, -2705,-2370,-1937,-1349,-606,206,953,1542,1962,2290, 2602,2917,3193,3369,3427,3397,3391,3541,3892,4374, 4870,5284,5621,5946,6351,6876,7475,8010,8339,8396, 8209,7820,7272,6600,5813,4888,3815,2662,1554,580, -274,-1108,-2039,-3105,-4264,-5388,-6323,-6978,-7358,-7545, -7667,-7810,-7972,-8073,-8040,-7848,-7531,-7163,-6781,-6364, -5879,-5323,-4743,-4196,-3729,-3361,-3067,-2757,-2330,-1723, -977,-199,506,1085,1544,1953,2371,2786,3103,3250, 3240,3178,3203,3394,3747,4175,4577,4894,5160,5488, 5956,6548,7175,7727,8109,8271,8215,7981,7611,7094, 6382,5466,4396,3280,2230,1311,496,-341,-1320,-2456, -3674,-4834,-5801,-6496,-6936,-7222,-7481,-7760,-8006,-8132, -8095,-7927,-7690,-7425,-7118,-6735,-6253,-5682,-5073,-4508, -4069,-3758,-3497,-3187,-2730,-2106,-1356,-612,23,558, 1074,1618,2169,2652,2984,3111,3079,3021,3073,3290, 3628,3991,4292,4537,4793,5134,5617,6232,6898,7485, 7905,8139,8220,8176,7985,7588,6936,6051,5011,3945, 2965,2107,1311,464,-549,-1739,-2997,-4175,-5155,-5889, -6419,-6856,-7262,-7620,-7882,-8014,-8017,-7925,-7785,-7607, -7370,-7031,-6552,-5956,-5328,-4763,-4348,-4075,-3844,-3524, -3029,-2392,-1701,-1042,-447,101,678,1319,1973,2510, 2833,2931,2910,2912,3028,3258,3549,3836,4061,4242, 4457,4808,5315,5933,6573,7141,7590,7924,8164,8293, 8252,7963,7373,6533,5557,4572,3672,2880,2122,1266, 212,-1020,-2291,-3457,-4441,-5241,-5902,-6482,-7004,-7435, -7733,-7902,-7959,-7939,-7885,-7801,-7634,-7318,-6829,-6213, -5575,-5047,-4685,-4434,-4170,-3791,-3274,-2659,-2030,-1461, -928,-354,314,1055,1765,2316,2645,2778,2819,2869, 3018,3261,3529,3749,3901,4033,4231,4578,5081,5675, 6261,6784,7253,7695,8091,8379,8474,8288,7790,7023, 6104,5202,4414,3713,2969,2068,979,-240,-1482,-2634, -3635,-4497,-5279,-5997,-6615,-7106,-7455,-7668,-7773,-7834, -7891,-7916,-7824,-7539,-7039,-6415,-5818,-5354,-5030,-4779, -4484,-4058,-3512,-2938,-2411,-1928,-1415,-801,-69,728, 1467,2031,2367,2518,2603,2734,2949,3213,3441,3586, 3661,3742,3929,4274,4755,5301,5847,6364,6862,7365, 7879,8336,8584,8487,8032,7324,6518,5747,5061,4407, 3668,2748,1646,440,-760,-1899,-2944,-3892,-4769,-5584, -6309,-6883,-7271,-7515,-7699,-7886,-8064,-8171,-8113,-7830, -7333,-6733,-6174,-5767,-5492,-5219,-4851,-4377,-3853,-3351, -2915,-2492,-1982,-1321,-528,315,1079,1645,1986,2181, 2351,2566,2847,3119,3305,3381,3417,3503,3690,4001, 4426,4902,5371,5833,6351,6954,7610,8200,8547,8522, 8137,7520,6839,6206,5623,5002,4251,3331,2272,1126, -45,-1178,-2247,-3271,-4268,-5203,-5997,-6590,-7006,-7307, -7576,-7870,-8177,-8384,-8358,-8066,-7578,-7036,-6572,-6232, -5952,-5628,-5197,-4686,-4182,-3761,-3393,-2998,-2491,-1816, -987,-114,645,1197,1563,1843,2120,2427,2741,3003, 3165,3224,3246,3321,3515,3834,4218,4601,4969,5389, 5940,6645,7425,8098,8489,8525,8249,7787,7267,6756, 6230,5645,4927,4031,2990,1894,801,-290,-1395,-2507, -3594,-4603,-5454,-6089,-6531,-6892,-7289,-7737,-8135,-8369, -8350,-8083,-7666,-7225,-6851,-6547,-6237,-5843,-5361,-4865, -4422,-4069,-3763,-3405,-2892,-2174,-1317,-467,245,804, 1241,1608,1964,2341,2696,2957,3081,3104,3131,3249, 3469,3751,4033,4290,4572,4969,5560,6341,7182,7895, 8335,8453,8292,7966,7591,7204,6774,6234,5533,4669, 3696,2678,1650,597,-524,-1715,-2898,-3963,-4821,-5459, -5961,-6447,-6986,-7539,-8004,-8268,-8283,-8078,-7750,-7420, -7139,-6868,-6526,-6090,-5580,-5073,-4660,-4376,-4129,-3767, -3216,-2488,-1663,-846,-141,416,881,1334,1804,2258, 2634,2880,2986,3015,3077,3243,3487,3723,3890,4019, 4221,4606,5227,6032,6893,7638,8131,8328,8283,8100, 7859,7570,7200,6706,6043,5233,4345,3434,2492,1468, 304,-971,-2226,-3307,-4154,-4810,-5386,-5999,-6679,-7338, -7854,-8147,-8203,-8069,-7848,-7633,-7432,-7178,-6800,-6305, -5777,-5328,-5007,-4771,-4529,-4171,-3616,-2895,-2103,-1335, -666,-102,412,944,1508,2038,2433,2643,2726,2805, 2963,3188,3414,3575,3645,3683,3821,4174,4786,5589, 6449,7204,7737,8033,8136,8106,7992,7806,7507,7051, 6428,5705,4950,4151,3256,2212,995,-326,-1581,-2631, -3479,-4198,-4884,-5616,-6401,-7139,-7707,-8028,-8116,-8079, -8015,-7934,-7802,-7546,-7136,-6621,-6114,-5703,-5416,-5201, -4958,-4581,-4018,-3315,-2574,-1878,-1253,-672,-80,571, 1221,1759,2120,2331,2462,2613,2843,3117,3338,3428, 3410,3373,3461,3788,4385,5175,6003,6739,7299,7664, 7880,8014,8069,7991,7737,7304,6747,6149,5553,4883, 4031,2943,1689,393,-821,-1862,-2712,-3466,-4244,-5107, -5994,-6779,-7352,-7694,-7881,-7986,-8050,-8069,-7983,-7732, -7305,-6787,-6302,-5931,-5682,-5495,-5267,-4896,-4333,-3651, -2973,-2356,-1773,-1162,-482,242,927,1475,1835,2061, 2260,2508,2813,3104,3304,3344,3252,3154,3204,3505, 4073,4822,5605,6300,6863,7317,7690,7977,8144,8123, 7891,7504,7070,6638,6165,5559,4729,3650,2405,1126, -49,-1054,-1918,-2753,-3645,-4606,-5562,-6382,-6990,-7396, -7669,-7901,-8102,-8212,-8162,-7916,-7493,-6986,-6530,-6214, -6022,-5857,-5590,-5157,-4602,-4006,-3429,-2871,-2290,-1633, -890,-117,585,1135,1515,1782,2048,2388,2775,3107, 3286,3274,3134,3004,3021,3288,3820,4506,5208,5853, 6438,6981,7487,7904,8141,8160,7986,7694,7375,7082, 6747,6228,5421,4333,3101,1884,784,-191,-1098,-2014, -3000,-4036,-5026,-5857,-6505,-7002,-7404,-7760,-8077,-8289, -8294,-8045,-7616,-7155,-6777,-6522,-6350,-6163,-5855,-5414, -4889,-4350,-3843,-3349,-2781,-2076,-1262,-452,240,773, 1171,1496,1843,2256,2702,3078,3267,3231,3047,2877, 2891,3162,3638,4206,4799,5404,6037,6688,7306,7792, 8070,8118,7996,7805,7643,7497,7251,6764,5985,4958, 3805,2664,1634,695,-241,-1249,-2313,-3381,-4377,-5231, -5914,-6476,-6998,-7502,-7948,-8233,-8260,-8031,-7653,-7262, -6961,-6766,-6597,-6361,-6019,-5587,-5111,-4663,-4248,-3785, -3189,-2439,-1606,-818,-166,342,754,1141,1572,2086, 2621,3028,3198,3127,2945,2817,2845,3047,3393,3824, 4309,4879,5555,6299,6993,7517,7815,7898,7855,7793, 7778,7769,7619,7194,6450,5484,4433,3409,2435,1490, 511,-538,-1660,-2771,-3773,-4624,-5338,-5992,-6655,-7314, -7879,-8223,-8281,-8092,-7782,-7484,-7268,-7111,-6922,-6649, -6282,-5870,-5471,-5114,-4752,-4291,-3670,-2907,-2077,-1292, -642,-156,249,684,1235,1863,2445,2842,2995,2944, 2807,2718,2756,2910,3137,3422,3814,4370,5084,5868, 6591,7133,7442,7561,7610,7700,7841,7935,7841,7464, 6794,5923,4976,4042,3136,2213,1208,97,-1061,-2166, -3143,-3989,-4755,-5517,-6310,-7082,-7716,-8097,-8201,-8085, -7871,-7674,-7532,-7396,-7183,-6864,-6491,-6131,-5807,-5507, -5177,-4737,-4119,-3336,-2496,-1743,-1158,-702,-266,261, 909,1608,2221,2622,2792,2797,2743,2714,2735,2798, 2906,3095,3428,3965,4699,5518,6253,6783,7097,7288, 7461,7685,7938,8121,8100,7776,7170,6403,5595,4790, 3953,3019,1960,813,-341,-1427,-2388,-3226,-4040,-4913, -5832,-6704,-7404,-7836,-7986,-7956,-7882,-7821,-7734,-7564, -7304,-6973,-6605,-6271,-6011,-5794,-5514,-5068,-4415,-3616, -2806,-2110,-1575,-1134,-659,-58,674,1419,2031,2439, 2658,2755,2802,2829,2825,2789,2774,2866,3161,3696, 4433,5235,5934,6428,6749,7008,7296,7638,7994,8247, 8265,7993,7494,6870,6195,5496,4721,3795,2720,1558, 422,-620,-1534,-2388,-3280,-4264,-5293,-6233,-6954,-7417, -7669,-7780,-7821,-7833,-7797,-7656,-7395,-7050,-6704,-6445, -6285,-6136,-5877,-5413,-4739,-3947,-3197,-2588,-2095,-1624, -1081,-413,350,1101,1710,2142,2434,2639,2785,2864, 2839,2714,2596,2622,2888,3415,4125,4876,5519,5990, 6329,6653,7040,7496,7940,8239,8299,8104,7722,7231, 6691,6095,5373,4455,3356,2186,1092,131,-743,-1645, -2644,-3729,-4814,-5789,-6560,-7096,-7436,-7677,-7869,-7999, -8009,-7870,-7586,-7235,-6929,-6744,-6661,-6548,-6271,-5777, -5108,-4372,-3696,-3140,-2659,-2154,-1560,-849,-76,656, 1263,1742,2134,2480,2746,2861,2803,2622,2436,2406, 2643,3155,3834,4513,5083,5510,5872,6270,6761,7306, 7804,8138,8243,8129,7858,7511,7133,6650,5958,5020, 3921,2809,1799,894,22,-927,-1998,-3150,-4278,-5290, -6104,-6715,-7176,-7560,-7880,-8102,-8157,-8012,-7708,-7375, -7144,-7047,-7005,-6897,-6610,-6110,-5452,-4761,-4164,-3682, -3234,-2692,-2008,-1244,-499,178,794,1361,1888,2357, 2693,2827,2747,2522,2304,2261,2486,2958,3562,4147, 4624,5009,5395,5857,6417,7029,7579,7939,8076,8054, 7959,7820,7583,7150,6466,5567,4553,3536,2592,1726, 853,-123,-1235,-2417,-3555,-4561,-5409,-6096,-6682,-7211, -7674,-7981,-8063,-7918,-7635,-7358,-7211,-7191,-7188,-7079, -6775,-6275,-5662,-5066,-4562,-4111,-3620,-3022,-2332,-1609, -912,-255,375,1015,1665,2261,2686,2853,2754,2491, 2258,2229,2454,2878,3389,3888,4305,4657,5049,5578, 6224,6863,7377,7723,7926,8053,8133,8144,7998,7615, 6977,6129,5176,4241,3380,2557,1675,656,-501,-1709, -2854,-3853,-4710,-5488,-6231,-6922,-7492,-7860,-7969,-7842, -7599,-7403,-7352,-7398,-7417,-7280,-6940,-6461,-5936,-5427, -4955,-4490,-3975,-3369,-2693,-2013,-1375,-764,-123,589, 1355,2066,2560,2745,2660,2435,2235,2196,2398,2775, 3194,3562,3864,4180,4619,5210,5889,6528,7027,7367, 7632,7885,8119,8255,8198,7879,7290,6515,5666,4844, 4069,3275,2371,1320,165,-1016,-2130,-3125,-4026,-4893, -5768,-6605,-7295,-7727,-7861,-7760,-7591,-7501,-7540,-7624, -7630,-7470,-7140,-6720,-6291,-5882,-5460,-4987,-4429,-3795, -3141,-2529,-1966,-1385,-698,115,975,1737,2274,2505, 2440,2236,2085,2107,2320,2637,2943,3192,3434,3756, 4235,4852,5516,6109,6584,6971,7332,7697,8044,8287, 8321,8075,7561,6873,6137,5427,4727,3955,3039,1970, 818,-324,-1391,-2369,-3299,-4268,-5292,-6262,-7020,-7471, -7632,-7609,-7552,-7576,-7678,-7770,-7754,-7599,-7313,-6960, -6609,-6273,-5892,-5399,-4803,-4183,-3602,-3058,-2521,-1945, -1251,-377,599,1471,2051,2287,2256,2121,2047,2129, 2334,2562,2744,2903,3115,3460,3959,4556,5157,5696, 6147,6568,7006,7487,7954,8298,8397,8205,7771,7212, 6620,6021,5373,4625,3721,2663,1538,468,-512,-1458, -2460,-3559,-4702,-5750,-6565,-7069,-7299,-7385,-7455,-7569, -7714,-7813,-7784,-7615,-7374,-7123,-6866,-6565,-6162,-5648, -5056,-4469,-3939,-3478,-3017,-2441,-1682,-742,267,1170, 1798,2082,2113,2071,2098,2226,2395,2525,2609,2710, 2906,3256,3751,4317,4856,5332,5768,6222,6744,7331, 7888,8293,8447,8322,7994,7574,7126,6636,6051,5312, 4392,3342,2288,1322,411,-561,-1663,-2870,-4082,-5176, -6036,-6608,-6933,-7142,-7342,-7559,-7747,-7838,-7801,-7668, -7506,-7347,-7163,-6893,-6482,-5945,-5345,-4784,-4331,-3958, -3553,-2992,-2195,-1194,-140,770,1387,1707,1849,1949, 2088,2242,2359,2417,2435,2491,2674,3019,3493,4009, 4477,4894,5302,5780,6366,7036,7666,8123,8319,8272, 8060,7781,7476,7107,6569,5808,4877,3898,2963,2075, 1186,211,-924,-2211,-3516,-4659,-5527,-6137,-6583,-6953, -7289,-7582,-7785,-7862,-7832,-7758,-7689,-7622,-7502,-7248, -6826,-6275,-5684,-5171,-4790,-4502,-4154,-3574,-2708,-1669, -642,226,867,1285,1558,1788,2019,2211,2294,2279, 2248,2297,2492,2833,3265,3696,4074,4410,4790,5292, 5943,6683,7368,7848,8064,8085,8016,7920,7772,7484, 6968,6221,5339,4449,3611,2823,1993,1001,-201,-1519, -2798,-3914,-4832,-5558,-6140,-6638,-7091,-7450,-7666,-7749, -7755,-7752,-7767,-7778,-7717,-7493,-7056,-6473,-5908,-5489, -5219,-4985,-4631,-4016,-3141,-2126,-1126,-281,363,859, 1272,1643,1957,2164,2228,2185,2139,2199,2406,2727, 3095,3454,3763,4033,4377,4915,5641,6414,7069,7526, 7794,7948,8050,8113,8069,7821,7317,6601,5792,5014, 4314,3616,2793,1768,545,-779,-2075,-3213,-4157,-4968, -5694,-6333,-6863,-7252,-7484,-7585,-7630,-7702,-7836,-7956, -7931,-7673,-7190,-6617,-6119,-5792,-5604,-5419,-5067,-4449, -3594,-2618,-1670,-851,-183,401,957,1464,1840,2037, 2083,2058,2043,2124,2337,2647,2958,3200,3389,3617, 3994,4567,5287,6032,6671,7138,7462,7732,7993,8198, 8239,8035,7572,6928,6232,5579,4966,4313,3520,2513, 1307,17,-1232,-2363,-3369,-4279,-5125,-5895,-6524,-6960, -7207,-7341,-7469,-7660,-7892,-8065,-8048,-7777,-7298,-6761, -6328,-6080,-5955,-5790,-5417,-4790,-3965,-3061,-2187,-1394, -668,19,674,1271,1723,1972,2035,1999,1988,2104, 2352,2643,2872,3014,3136,3349,3735,4323,5035,5737, 6311,6761,7159,7562,7960,8276,8382,8205,7779,7220, 6651,6128,5611,5002,4221,3224,2057,831,-363,-1490, -2547,-3559,-4533,-5411,-6104,-6566,-6835,-7022,-7255,-7579, -7916,-8131,-8112,-7826,-7365,-6889,-6543,-6370,-6280,-6112, -5730,-5132,-4384,-3574,-2771,-1995,-1232,-467,295,987, 1488,1734,1792,1799,1875,2067,2329,2569,2708,2760, 2821,3011,3416,4001,4642,5237,5759,6236,6726,7252, 7774,8175,8332,8208,7863,7420,6979,6564,6116,5557, 4805,3831,2708,1547,424,-672,-1784,-2918,-4019,-4979, -5714,-6201,-6506,-6775,-7134,-7585,-8008,-8257,-8225,-7926, -7504,-7121,-6871,-6732,-6625,-6441,-6091,-5547,-4867,-4143, -3411,-2656,-1846,-985,-130,608,1127,1399,1512,1595, 1766,2028,2296,2459,2495,2480,2532,2753,3158,3694, 4251,4761,5231,5732,6322,6974,7584,8039,8241,8177, 7925,7599,7281,6966,6575,6030,5295,4395,3384,2328, 1256,149,-1033,-2274,-3471,-4498,-5255,-5757,-6118,-6499, -6989,-7555,-8046,-8303,-8271,-8010,-7657,-7348,-7150,-7049, -6967,-6786,-6435,-5932,-5346,-4720,-4055,-3308,-2437,-1478, -555,200,724,1037,1229,1423,1689,1996,2247,2357, 2343,2298,2353,2599,2998,3456,3913,4341,4775,5295, 5945,6668,7349,7856,8109,8113,7964,7770,7589,7376, 7048,6532,5823,4985,4092,3158,2156,1042,-202,-1523, -2799,-3856,-4604,-5113,-5567,-6100,-6729,-7368,-7882,-8150, -8148,-7945,-7659,-7419,-7293,-7227,-7112,-6890,-6548,-6115, -5638,-5137,-4552,-3810,-2888,-1871,-916,-161,348,685, 982,1311,1682,2026,2247,2302,2247,2213,2299,2542, 2893,3273,3626,3964,4372,4923,5624,6394,7109,7626, 7894,7968,7952,7919,7853,7701,7402,6924,6293,5568, 4809,3998,3064,1938,619,-776,-2049,-3071,-3841,-4442, -5006,-5650,-6388,-7111,-7665,-7950,-7982,-7851,-7671,-7539, -7475,-7413,-7271,-7033,-6719,-6382,-6042,-5648,-5090,-4314, -3360,-2340,-1401,-657,-134,264,672,1139,1602,1963, 2155,2177,2126,2120,2243,2494,2795,3074,3315,3584, 3972,4534,5265,6061,6769,7288,7610,7788,7900,7994, 8039,7954,7677,7213,6637,6046,5448,4751,3846,2696, 1363,-21,-1287,-2317,-3107,-3761,-4428,-5192,-6020,-6788, -7373,-7714,-7810,-7763,-7690,-7655,-7637,-7560,-7394,-7156, -6899,-6666,-6449,-6143,-5615,-4822,-3847,-2844,-1960,-1259, -707,-214,306,869,1396,1782,1961,1986,1970,2018, 2172,2408,2643,2813,2948,3147,3520,4112,4857,5627, 6309,6840,7218,7494,7733,7951,8072,8012,7747,7356, 6935,6512,6038,5420,4566,3427,2060,659,-572,-1571, -2383,-3110,-3870,-4742,-5679,-6526,-7139,-7485,-7648,-7722, -7775,-7813,-7805,-7704,-7507,-7272,-7087,-6982,-6882,-6635, -6119,-5320,-4351,-3390,-2563,-1886,-1293,-694,-52,592, 1157,1548,1736,1787,1820,1935,2138,2356,2504,2574, 2632,2792,3153,3734,4456,5190,5827,6338,6760,7155, 7544,7870,8038,7985,7758,7453,7148,6867,6539,6010, 5174,4040,2719,1377,190,-790,-1626,-2429,-3295,-4261, -5250,-6108,-6739,-7153,-7422,-7625,-7798,-7909,-7902,-7756, -7527,-7336,-7256,-7251,-7211,-6992,-6483,-5703,-4797,-3919, -3154,-2488,-1841,-1146,-411,291,862,1246,1459,1590, 1725,1914,2139,2328,2419,2425,2431,2565,2926,3501, 4181,4837,5410,5921,6422,6944,7445,7838,8034,8006, 7833,7631,7467,7325,7096,6635,5843,4741,3463,2198, 1080,128,-741,-1643,-2629,-3672,-4686,-5555,-6227,-6721, -7110,-7452,-7734,-7885,-7843,-7663,-7471,-7373,-7390,-7459, -7458,-7252,-6767,-6047,-5224,-4429,-3722,-3068,-2364,-1562, -735,-7,562,971,1250,1462,1681,1931,2175,2334, 2354,2278,2248,2393,2745,3273,3868,4433,4953,5490, 6081,6701,7270,7695,7911,7920,7808,7710,7700,7704, 7567,7158,6407,5352,4154,2976,1913,972,79,-890, -1968,-3074,-4100,-4974,-5695,-6306,-6855,-7343,-7705,-7863, -7808,-7644,-7501,-7466,-7548,-7672,-7701,-7498,-7034,-6396, -5695,-5005,-4337,-3651,-2888,-2040,-1173,-402,183,589, 901,1213,1560,1905,2171,2285,2242,2131,2103,2266, 2615,3063,3525,3987,4484,5052,5716,6422,7051,7496, 7713,7746,7714,7740,7857,7974,7935,7595,6891,5901, 4796,3725,2748,1829,871,-187,-1316,-2428,-3425,-4296, -5078,-5816,-6521,-7132,-7546,-7711,-7666,-7527,-7432,-7483, -7661,-7836,-7857,-7643,-7229,-6695,-6114,-5517,-4897,-4210, -3418,-2529,-1640,-868,-277,151,525,941,1405,1834, 2102,2170,2093,1998,2003,2158,2438,2785,3153,3539, 3993,4581,5301,6055,6704,7143,7359,7425,7484,7635, 7882,8101,8132,7835,7182,6286,5324,4409,3532,2603, 1575,459,-677,-1758,-2745,-3658,-4526,-5383,-6217,-6934, -7405,-7585,-7557,-7474,-7475,-7608,-7824,-7995,-8016,-7843, -7499,-7050,-6579,-6103,-5543,-4835,-3976,-3032,-2129,-1389, -833,-374,104,655,1219,1667,1918,1979,1935,1889, 1930,2088,2316,2549,2784,3083,3520,4130,4871,5645, 6315,6762,6972,7082,7251,7537,7896,8184,8246,7990, 7432,6685,5880,5074,4237,3301,2259,1143,28,-1014, -1968,-2887,-3845,-4850,-5811,-6586,-7073,-7276,-7310,-7322, -7416,-7606,-7830,-7996,-8013,-7849,-7562,-7240,-6915,-6534, -6006,-5270,-4365,-3426,-2585,-1900,-1316,-764,-186,440, 1064,1552,1813,1878,1866,1890,1985,2128,2284,2419, 2552,2774,3197,3841,4627,5410,6043,6444,6662,6837, 7106,7515,7982,8335,8419,8207,7766,7186,6526,5800, 4993,4064,3008,1893,835,-126,-1061,-2063,-3150,-4268, -5309,-6141,-6673,-6934,-7030,-7113,-7282,-7534,-7792,-7956, -7973,-7848,-7661,-7476,-7272,-6955,-6434,-5686,-4790,-3896, -3115,-2458,-1858,-1234,-542,189,847,1324,1595,1714, 1782,1876,2011,2141,2217,2239,2274,2441,2843,3502, 4307,5067,5642,5989,6212,6466,6851,7343,7841,8213, 8355,8235,7921,7497,6996,6381,5601,4651,3604,2568, 1604,694,-241,-1287,-2460,-3678,-4785,-5648,-6219,-6550, -6754,-6958,-7223,-7538,-7797,-7921,-7909,-7837,-7771,-7707, -7587,-7310,-6805,-6088,-5262,-4452,-3733,-3088,-2452,-1745, -970,-207,457,953,1266,1459,1626,1812,1995,2118, 2131,2056,1997,2118,2528,3204,3987,4684,5176,5500, 5775,6113,6579,7135,7662,8038,8212,8204,8058,7811, 7441,6884,6118,5185,4187,3224,2335,1472,529,-573, -1821,-3104,-4270,-5190,-5803,-6188,-6492,-6828,-7195,-7530, -7760,-7858,-7869,-7879,-7927,-7988,-7952,-7696,-7180,-6491, -5739,-5004,-4336,-3704,-3033,-2260,-1422,-621,55,562, 924,1203,1462,1738,1987,2101,2028,1859,1761,1889, 2304,2953,3678,4300,4742,5052,5366,5790,6335,6921, 7445,7830,8061,8177,8203,8118,7849,7339,6596,5716, 4812,3948,3133,2310,1377,242,-1073,-2421,-3609,-4523, -5183,-5680,-6133,-6591,-7025,-7367,-7572,-7664,-7721,-7815, -7965,-8104,-8111,-7884,-7417,-6800,-6140,-5495,-4882,-4251, -3533,-2714,-1829,-989,-294,210,593,975,1398,1800, 2062,2119,1993,1788,1669,1797,2209,2821,3472,4009, 4392,4700,5053,5518,6096,6682,7176,7550,7854,8122, 8316,8352,8157,7706,7024,6216,5397,4637,3923,3163, 2222,1049,-292,-1631,-2799,-3733,-4482,-5123,-5716,-6285, -6768,-7101,-7286,-7395,-7520,-7720,-7962,-8150,-8169,-7960, -7549,-7030,-6478,-5933,-5396,-4793,-4049,-3173,-2258,-1436, -781,-274,175,665,1217,1720,2029,2073,1905,1662, 1532,1661,2061,2616,3164,3602,3943,4274,4690,5205, 5765,6296,6771,7202,7605,7980,8298,8458,8347,7933, 7294,6569,5879,5244,4612,3876,2928,1734,392,-929, -2096,-3069,-3904,-4674,-5400,-6058,-6582,-6926,-7131,-7288, -7497,-7783,-8086,-8306,-8360,-8192,-7838,-7391,-6947,-6522, -6052,-5432,-4634,-3728,-2844,-2072,-1438,-888,-336,291, 961,1531,1858,1893,1711,1470,1369,1526,1911,2377, 2789,3132,3465,3856,4321,4833,5351,5841,6298,6746, 7229,7736,8180,8427,8390,8050,7490,6871,6307,5806, 5265,4551,3588,2403,1112,-136,-1256,-2264,-3207,-4117, -4960,-5661,-6182,-6545,-6798,-7018,-7281,-7629,-7997,-8251, -8303,-8151,-7881,-7570,-7260,-6921,-6482,-5852,-5033,-4132, -3284,-2564,-1966,-1398,-750,0,773,1412,1757,1775, 1599,1428,1405,1572,1870,2208,2536,2855,3202,3604, 4062,4551,5029,5469,5907,6401,6980,7606,8152,8476, 8483,8193,7725,7236,6800,6394,5907,5205,4250,3103, 1895,731,-363,-1435,-2505,-3536,-4465,-5232,-5796,-6159, -6415,-6694,-7064,-7496,-7898,-8167,-8239,-8135,-7948,-7761, -7578,-7310,-6871,-6228,-5420,-4554,-3771,-3133,-2566,-1949, -1195,-317,543,1197,1532,1587,1491,1399,1422,1572, 1795,2034,2286,2573,2927,3353,3807,4247,4652,5026, 5433,5963,6639,7366,7979,8330,8376,8160,7815,7483, 7216,6921,6450,5747,4832,3788,2699,1602,503,-613, -1754,-2886,-3908,-4726,-5306,-5704,-6039,-6426,-6894,-7384, -7789,-8029,-8099,-8065,-7996,-7934,-7852,-7652,-7234,-6580, -5781,-4989,-4320,-3766,-3203,-2504,-1633,-678,215,895, 1275,1391,1379,1371,1432,1553,1699,1851,2042,2314, 2682,3121,3567,3960,4289,4598,4981,5548,6300,7097, 7760,8136,8205,8077,7897,7741,7569,7305,6866,6212, 5369,4413,3420,2408,1343,181,-1058,-2284,-3368,-4206, -4800,-5247,-5686,-6183,-6721,-7235,-7640,-7883,-7978,-8002, -8046,-8128,-8163,-8005,-7569,-6906,-6162,-5487,-4931,-4413, -3817,-3052,-2114,-1117,-214,471,905,1121,1231,1330, 1433,1526,1596,1671,1814,2093,2482,2921,3335,3659, 3901,4161,4559,5184,6000,6830,7476,7849,7989,7995, 7970,7934,7847,7643,7252,6649,5883,5035,4159,3231, 2182,974,-332,-1610,-2719,-3587,-4226,-4753,-5291,-5891, -6503,-7046,-7447,-7682,-7803,-7924,-8111,-8307,-8384,-8228, -7809,-7198,-6547,-5981,-5508,-5025,-4408,-3596,-2628,-1601, -670,31,491,814,1076,1277,1409,1479,1513,1558, 1675,1932,2338,2787,3138,3340,3479,3709,4147,4825, 5649,6450,7078,7484,7710,7848,7958,8043,8041,7884, 7523,6987,6341,5644,4898,4037,3004,1773,425,-880, -2001,-2883,-3574,-4178,-4806,-5500,-6185,-6737,-7099,-7322, -7509,-7749,-8053,-8334,-8451,-8296,-7882,-7342,-6825,-6391, -5999,-5535,-4899,-4065,-3092,-2098,-1201,-461,99,533, 892,1170,1338,1384,1358,1355,1485,1806,2244,2639, 2887,2997,3098,3330,3792,4469,5259,6021,6648,7096, 7398,7636,7880,8086,8155,8027,7715,7276,6770,6211, 5551,4730,3706,2493,1149,-165,-1286,-2151,-2877,-3598, -4377,-5167,-5873,-6412,-6759,-6989,-7243,-7601,-8020,-8360, -8486,-8339,-7970,-7519,-7117,-6787,-6458,-6023,-5391,-4568, -3629,-2666,-1768,-998,-354,193,669,1036,1230,1244, 1185,1195,1379,1732,2142,2463,2629,2689,2782,3019, 3465,4112,4864,5585,6182,6637,7016,7403,7776,8044, 8124,8034,7811,7495,7127,6708,6169,5425,4430,3211, 1895,650,-421,-1330,-2157,-2997,-3886,-4747,-5460,-5956, -6293,-6592,-6970,-7453,-7953,-8326,-8452,-8321,-8028,-7700, -7410,-7155,-6861,-6444,-5837,-5044,-4132,-3216,-2367,-1581, -832,-129,477,905,1087,1073,1030,1110,1359,1719, 2083,2344,2459,2479,2530,2740,3182,3818,4522,5176, 5739,6239,6725,7209,7649,7967,8113,8078,7915,7692, 7456,7171,6727,6020,5032,3841,2595,1441,433,-485, -1416,-2395,-3378,-4261,-4960,-5453,-5823,-6198,-6682,-7251, -7795,-8171,-8311,-8242,-8037,-7799,-7603,-7441,-7213,-6811, -6207,-5454,-4634,-3808,-2989,-2145,-1272,-449,211,632, 811,836,865,1018,1308,1680,2021,2235,2278,2239, 2291,2541,2974,3527,4119,4694,5244,5790,6360,6933, 7426,7772,7939,7947,7862,7785,7727,7595,7238,6567, 5604,4471,3325,2266,1287,315,-716,-1813,-2878,-3783, -4460,-4944,-5365,-5839,-6421,-7060,-7640,-8051,-8228,-8204, -8068,-7941,-7866,-7777,-7570,-7179,-6613,-5939,-5239,-4507, -3680,-2742,-1754,-846,-139,302,504,569,648,857, 1211,1609,1919,2047,2029,2000,2082,2325,2722,3204, 3705,4212,4736,5319,5965,6612,7154,7520,7696,7747, 7782,7867,7954,7916,7611,6984,6093,5068,4037,3069, 2120,1096,-41,-1221,-2312,-3214,-3904,-4438,-4931,-5494, -6164,-6853,-7449,-7859,-8048,-8074,-8050,-8064,-8091,-8038, -7821,-7433,-6951,-6428,-5854,-5165,-4318,-3329,-2279,-1297, -528,-55,177,307,485,785,1180,1557,1809,1901, 1891,1878,1961,2198,2555,2950,3350,3780,4288,4908, 5622,6332,6898,7246,7426,7555,7717,7940,8153,8197, 7929,7336,6533,5659,4791,3911,2952,1869,673,-545, -1666,-2587,-3290,-3861,-4425,-5075,-5816,-6556,-7168,-7564, -7779,-7909,-8030,-8152,-8203,-8132,-7923,-7615,-7241,-6823, -6350,-5747,-4926,-3888,-2772,-1760,-984,-491,-205,12, 284,660,1085,1455,1686,1766,1748,1744,1852,2090, 2388,2682,2987,3361,3868,4529,5266,5956,6499,6854, 7067,7261,7553,7931,8243,8313,8067,7562,6907,6190, 5448,4644,3700,2597,1374,136,-994,-1917,-2628,-3225, -3861,-4614,-5437,-6196,-6776,-7179,-7483,-7741,-7964,-8131, -8205,-8161,-8008,-7775,-7522,-7250,-6884,-6327,-5497,-4433, -3290,-2270,-1506,-992,-626,-294,84,528,983,1353, 1559,1618,1624,1684,1837,2039,2234,2422,2656,3001, 3517,4211,4982,5669,6160,6468,6719,7038,7465,7929, 8283,8398,8225,7832,7322,6760,6141,5394,4456,3329, 2088,846,-248,-1135,-1861,-2554,-3318,-4154,-4971,-5697, -6292,-6758,-7145,-7494,-7801,-8033,-8142,-8103,-7967,-7822, -7703,-7570,-7306,-6779,-5947,-4895,-3790,-2793,-2010,-1458, -1039,-624,-142,381,859,1198,1381,1472,1554,1671, 1834,2003,2120,2194,2322,2636,3192,3921,4660,5263, 5689,6007,6344,6772,7280,7785,8163,8310,8219,7948, 7576,7165,6699,6068,5163,4008,2749,1561,532,-341, -1136,-1937,-2787,-3663,-4501,-5236,-5843,-6364,-6840,-7302, -7701,-7966,-8064,-8039,-7975,-7945,-7965,-7937,-7735,-7261, -6478,-5458,-4372,-3405,-2646,-2065,-1551,-1015,-453,83, 545,902,1126,1257,1388,1579,1778,1895,1895,1862, 1957,2297,2868,3560,4226,4751,5129,5476,5892,6402, 6968,7514,7926,8115,8085,7931,7741,7516,7158,6542, 5641,4529,3350,2238,1248,368,-481,-1371,-2299,-3207, -4030,-4739,-5368,-5970,-6566,-7123,-7561,-7829,-7921,-7916, -7919,-7994,-8129,-8217,-8099,-7661,-6904,-5941,-4941,-4042, -3302,-2669,-2060,-1423,-772,-178,286,597,825,1053, 1318,1568,1740,1781,1702,1628,1733,2094,2653,3271, 3838,4311,4689,5052,5497,6079,6736,7332,7735,7922, 7973,7986,7983,7899,7612,7048,6192,5137,4031,2991, 2046,1150,240,-717,-1690,-2609,-3422,-4142,-4817,-5500, -6190,-6817,-7296,-7576,-7687,-7722,-7796,-7977,-8231,-8410, -8344,-7948,-7251,-6372,-5453,-4605,-3873,-3207,-2515,-1774, -1055,-452,-11,310,598,937,1311,1612,1744,1700, 1577,1513,1630,1969,2489,3068,3582,3973,4303,4683, 5200,5848,6516,7075,7464,7703,7882,8058,8198,8212, 8007,7512,6720,5751,4750,3792,2864,1932,955,-58, -1053,-1957,-2766,-3521,-4274,-5055,-5834,-6523,-7028,-7309, -7422,-7503,-7675,-7966,-8295,-8533,-8527,-8195,-7573,-6794, -5988,-5233,-4517,-3784,-2990,-2171,-1427,-841,-407,-38, 369,842,1290,1594,1699,1631,1487,1406,1509,1848, 2355,2868,3261,3560,3881,4321,4914,5592,6229,6736, 7123,7438,7742,8054,8321,8449,8309,7858,7154,6311, 5423,4536,3632,2667,1650,626,-361,-1268,-2088,-2857, -3661,-4529,-5399,-6141,-6659,-6943,-7083,-7224,-7481,-7855, -8258,-8551,-8596,-8325,-7802,-7154,-6489,-5831,-5127,-4327, -3449,-2602,-1894,-1348,-884,-420,101,656,1152,1473, 1567,1471,1308,1241,1383,1729,2155,2527,2822,3097, 3445,3921,4530,5192,5792,6267,6636,6986,7389,7830, 8204,8402,8336,7992,7424,6737,5984,5171,4267,3264, 2208,1184,249,-604,-1414,-2249,-3157,-4127,-5058,-5824, -6342,-6633,-6822,-7035,-7370,-7830,-8308,-8639,-8704,-8493, -8103,-7635,-7113,-6478,-5711,-4855,-3974,-3155,-2467,-1906, -1403,-865,-254,390,968,1338,1426,1294,1151,1158, 1340,1629,1955,2259,2513,2751,3081,3586,4220,4855, 5382,5794,6179,6619,7129,7654,8095,8347,8358,8128, 7709,7161,6514,5764,4881,3879,2831,1839,948,132, -685,-1576,-2567,-3604,-4577,-5361,-5889,-6201,-6418,-6692, -7131,-7688,-8190,-8494,-8573,-8477,-8257,-7940,-7508,-6915, -6162,-5311,-4443,-3635,-2959,-2407,-1872,-1253,-525,220, 823,1165,1244,1164,1089,1150,1355,1620,1864,2052, 2215,2441,2813,3340,3943,4507,4973,5372,5791,6293, 6883,7478,7965,8261,8350,8246,7981,7592,7067,6373, 5499,4489,3455,2510,1681,902,72,-870,-1935,-3056, -4090,-4892,-5411,-5731,-6025,-6428,-6958,-7526,-8008,-8325, -8473,-8503,-8433,-8246,-7903,-7374,-6639,-5759,-4885,-4133, -3525,-2981,-2377,-1645,-826,-40,576,929,1022,992, 1006,1144,1372,1588,1741,1848,1985,2229,2612,3106, 3643,4142,4555,4931,5372,5928,6551,7167,7693,8060, 8236,8250,8152,7933,7513,6856,6010,5054,4081,3182, 2392,1654,845,-147,-1314,-2513,-3551,-4311,-4819,-5213, -5623,-6114,-6656,-7194,-7667,-8025,-8253,-8394,-8477,-8442, -8195,-7691,-6959,-6112,-5312,-4647,-4086,-3533,-2871,-2053, -1158,-339,271,622,766,837,962,1165,1377,1524, 1601,1661,1786,2030,2408,2873,3349,3772,4144,4528, 4982,5557,6237,6907,7435,7813,8082,8263,8328,8224, 7890,7308,6506,5572,4641,3826,3135,2439,1594,520, -717,-1926,-2928,-3686,-4269,-4762,-5251,-5799,-6389,-6940, -7396,-7767,-8079,-8364,-8600,-8685,-8501,-8017,-7320,-6550, -5835,-5245,-4731,-4156,-3416,-2506,-1555,-725,-122,251, 479,665,880,1124,1320,1414,1430,1457,1588,1848, 2220,2660,3087,3438,3748,4127,4632,5233,5870,6482, 7024,7482,7863,8170,8372,8405,8186,7665,6880,5984, 5153,4465,3848,3143,2242,1130,-104,-1303,-2316,-3106, -3741,-4320,-4908,-5520,-6110,-6622,-7055,-7458,-7881,-8310, -8665,-8836,-8718,-8282,-7628,-6929,-6320,-5821,-5337,-4720, -3912,-2963,-1995,-1163,-547,-122,203,513,831,1109, 1280,1328,1309,1323,1454,1737,2109,2483,2797,3082, 3398,3798,4301,4888,5505,6093,6620,7093,7542,7986, 8361,8536,8389,7894,7167,6394,5702,5109,4516,3800, 2880,1770,572,-589,-1601,-2428,-3134,-3811,-4488,-5133, -5695,-6171,-6618,-7078,-7588,-8138,-8618,-8855,-8754,-8362, -7818,-7264,-6788,-6368,-5890,-5234,-4388,-3439,-2515,-1711, -1058,-540,-107,298,690,1004,1160,1169,1145,1202, 1379,1641,1929,2201,2465,2739,3049,3432,3919,4497, 5091,5636,6133,6648,7226,7839,8359,8614,8498,8053, 7431,6792,6215,5704,5163,4451,3505,2384,1208,93, -887,-1748,-2550,-3338,-4087,-4755,-5310,-5761,-6199,-6732, -7374,-8036,-8574,-8838,-8777,-8455,-8026,-7624,-7279,-6907, -6414,-5755,-4923,-3985,-3064,-2257,-1585,-1008,-455,85, 549,849,973,986,1003,1105,1294,1545,1812,2048, 2246,2458,2744,3143,3646,4194,4696,5131,5588,6179, 6896,7625,8217,8518,8464,8125,7639,7133,6692,6274, 5765,5054,4116,3030,1929,895,-65,-988,-1892,-2775, -3590,-4263,-4767,-5188,-5667,-6279,-7016,-7768,-8357,-8639, -8620,-8401,-8123,-7859,-7604,-7291,-6830,-6154,-5300,-4396, -3551,-2802,-2115,-1428,-743,-126,347,656,814,876, 924,1036,1238,1483,1714,1889,2019,2193,2496,2939, 3432,3896,4291,4668,5138,5774,6568,7384,8036,8384, 8400,8159,7806,7462,7151,6802,6304,5593,4686,3667, 2644,1669,712,-282,-1307,-2287,-3132,-3773,-4231,-4642, -5169,-5879,-6698,-7471,-8057,-8376,-8445,-8346,-8188,-8051, -7912,-7661,-7192,-6514,-5727,-4936,-4174,-3423,-2652,-1867, -1114,-451,71,430,622,702,777,942,1191,1423, 1571,1648,1747,1958,2302,2734,3163,3527,3834,4171, 4640,5325,6191,7070,7761,8140,8207,8075,7884,7710, 7513,7206,6730,6054,5215,4299,3377,2449,1484,428, -693,-1749,-2589,-3186,-3637,-4094,-4686,-5450,-6321,-7145, -7766,-8122,-8245,-8255,-8268,-8286,-8215,-7966,-7513,-6898, -6212,-5511,-4791,-4023,-3208,-2373,-1552,-809,-224,160, 364,492,666,919,1169,1339,1420,1470,1569,1796, 2159,2576,2942,3208,3418,3700,4188,4927,5831,6724, 7418,7814,7956,7961,7924,7872,7773,7533,7081,6423, 5664,4880,4071,3192,2197,1064,-125,-1200,-2038,-2644, -3129,-3626,-4264,-5087,-6009,-6846,-7454,-7814,-8035,-8212, -8375,-8482,-8453,-8238,-7853,-7336,-6732,-6087,-5410,-4675, -3848,-2942,-2035,-1240,-640,-243,26,270,527,806, 1056,1206,1238,1253,1374,1652,2035,2418,2701,2865, 2987,3238,3750,4521,5424,6292,6987,7443,7694,7828, 7935,8023,8006,7782,7342,6770,6155,5516,4800,3925, 2871,1687,487,-587,-1431,-2029,-2517,-3069,-3803,-4701, -5612,-6387,-6988,-7440,-7785,-8080,-8331,-8496,-8533,-8399, -8079,-7619,-7107,-6590,-5999,-5262,-4375,-3418,-2489,-1683, -1061,-599,-237,103,449,775,1006,1099,1091,1111, 1280,1608,2003,2339,2533,2607,2684,2922,3420,4179, 5064,5901,6552,7014,7350,7642,7932,8132,8130,7905, 7535,7099,6641,6129,5489,4646,3586,2371,1157,110, -685,-1284,-1834,-2485,-3293,-4186,-5055,-5815,-6436,-6945, -7385,-7788,-8147,-8405,-8496,-8397,-8146,-7804,-7415,-6976, -6443,-5742,-4858,-3880,-2948,-2164,-1543,-1033,-553,-77, 361,697,878,911,889,957,1196,1570,1950,2214, 2321,2333,2372,2594,3098,3840,4673,5442,6063,6575, 7055,7509,7877,8091,8124,7979,7711,7395,7065,6679, 6120,5296,4200,2955,1759,771,12,-621,-1264,-2004, -2849,-3740,-4589,-5333,-5969,-6532,-7064,-7587,-8048,-8358, -8476,-8414,-8246,-8035,-7795,-7467,-6966,-6240,-5342,-4393, -3505,-2742,-2106,-1516,-921,-336,172,519,671,696, 719,850,1130,1509,1864,2070,2095,2036,2063,2323, 2842,3519,4231,4912,5534,6104,6659,7194,7646,7930, 8020,7934,7756,7575,7408,7156,6649,5806,4713,3534, 2419,1470,693,18,-673,-1458,-2322,-3207,-4027,-4747, -5407,-6045,-6681,-7275,-7780,-8122,-8288,-8316,-8284,-8222, -8099,-7847,-7387,-6691,-5819,-4903,-4066,-3348,-2688,-2002, -1281,-590,-36,308,462,498,529,702,1061,1496, 1829,1943,1875,1792,1853,2133,2597,3165,3783,4409, 5029,5654,6300,6938,7472,7787,7858,7801,7769,7797, 7793,7618,7138,6327,5272,4141,3077,2172,1408,691, -73,-916,-1804,-2653,-3418,-4124,-4820,-5543,-6278,-6961, -7498,-7845,-8044,-8158,-8243,-8316,-8323,-8155,-7717,-7033, -6220,-5413,-4672,-3977,-3263,-2485,-1669,-905,-302,61, 199,222,319,610,1044,1454,1698,1757,1705,1659, 1723,1960,2349,2833,3358,3901,4501,5193,5948,6644, 7157,7442,7562,7627,7737,7890,7990,7884,7460,6714, 5747,4707,3726,2864,2091,1322,501,-370,-1252,-2092, -2856,-3573,-4310,-5095,-5886,-6609,-7176,-7551,-7790,-7994, -8226,-8448,-8548,-8414,-8015,-7410,-6695,-5972,-5276,-4595, -3871,-3023,-2084,-1215,-596,-262,-133,-38,164,523, 968,1348,1565,1623,1579,1544,1626,1860,2186,2532, 2911,3391,4025,4798,5601,6295,6790,7090,7275,7453, 7685,7962,8167,8142,7790,7115,6236,5292,4394,3558, 2756,1935,1072,185,-681,-1493,-2246,-2995,-3791,-4649, -5506,-6246,-6795,-7180,-7505,-7856,-8223,-8521,-8665,-8592, -8272,-7744,-7127,-6520,-5931,-5285,-4492,-3531,-2521,-1645, -1034,-686,-489,-293,-4,403,860,1235,1417,1425, 1394,1430,1564,1758,1972,2197,2496,2953,3608,4420, 5246,5927,6400,6712,6953,7227,7601,8015,8306,8332, 8035,7440,6672,5855,5051,4249,3426,2560,1651,755, -80,-848,-1590,-2372,-3247,-4180,-5057,-5769,-6315,-6757, -7166,-7612,-8091,-8497,-8731,-8704,-8408,-7948,-7471,-7018, -6516,-5849,-4979,-3963,-2943,-2072,-1446,-1062,-807,-528, -136,341,800,1133,1294,1340,1374,1459,1592,1725, 1827,1939,2170,2613,3281,4085,4872,5513,5967,6291, 6588,6971,7451,7947,8313,8415,8205,7739,7121,6432, 5702,4930,4086,3173,2235,1369,615,-88,-848,-1720, -2672,-3617,-4468,-5173,-5731,-6201,-6682,-7241,-7841,-8335, -8578,-8553,-8334,-8049,-7763,-7442,-6991,-6331,-5443,-4403, -3373,-2508,-1897,-1501,-1170,-769,-281,215,629,917, 1091,1210,1340,1483,1599,1656,1663,1690,1867,2292, 2960,3773,4549,5147,5563,5894,6257,6731,7297,7854, 8269,8428,8307,7969,7495,6944,6315,5558,4675,3741, 2842,2028,1282,547,-245,-1134,-2104,-3079,-3955,-4649, -5183,-5679,-6275,-6973,-7646,-8141,-8391,-8435,-8352,-8221, -8079,-7871,-7492,-6861,-5963,-4915,-3909,-3094,-2490,-2031, -1593,-1093,-541,-37,346,603,800,997,1218,1406, 1502,1492,1417,1376,1517,1938,2601,3353,4037,4578, 4987,5351,5772,6297,6914,7523,7979,8197,8190,8011, 7717,7298,6712,5955,5085,4185,3338,2579,1876,1158, 344,-616,-1664,-2655,-3478,-4126,-4680,-5274,-5985,-6763, -7471,-7976,-8244,-8341,-8367,-8396,-8414,-8326,-8005,-7380, -6491,-5477,-4535,-3775,-3157,-2589,-2013,-1425,-870,-397, -25,270,546,844,1151,1378,1455,1382,1237,1164, 1299,1706,2326,3014,3637,4119,4486,4848,5321,5927, 6590,7197,7661,7957,8098,8106,7959,7624,7100,6401, 5555,4673,3875,3198,2558,1838,961,-40,-1082,-2038, -2821,-3449,-4039,-4719,-5512,-6325,-7032,-7545,-7845,-8011, -8160,-8353,-8534,-8553,-8264,-7633,-6781,-5874,-5027,-4287, -3632,-2996,-2343,-1694,-1093,-606,-250,60,412,818, 1189,1433,1483,1355,1154,1054,1187,1578,2153,2785, 3331,3738,4095,4524,5070,5698,6332,6923,7430,7821, 8086,8226,8215,8006,7553,6873,6064,5257,4543,3911, 3269,2506,1586,567,-449,-1350,-2099,-2748,-3409,-4170, -5040,-5905,-6625,-7134,-7457,-7715,-8027,-8397,-8692,-8748, -8480,-7926,-7195,-6398,-5616,-4886,-4192,-3483,-2744,-2043, -1457,-1013,-642,-249,214,715,1139,1386,1419,1267, 1034,912,1050,1447,1970,2482,2921,3307,3700,4165, 4720,5337,5968,6562,7084,7539,7933,8238,8372,8251, 7835,7189,6445,5745,5142,4572,3913,3089,2115,1087, 104,-754,-1469,-2125,-2857,-3727,-4669,-5540,-6220,-6692, -7050,-7430,-7900,-8394,-8769,-8885,-8690,-8232,-7610,-6923, -6232,-5528,-4783,-3988,-3203,-2499,-1928,-1477,-1054,-589, -61,501,995,1281,1282,1078,866,809,980,1328, 1748,2155,2538,2912,3304,3756,4304,4918,5526,6084, 6615,7155,7699,8166,8419,8352,7984,7432,6819,6231, 5700,5163,4504,3653,2658,1636,709,-67,-753,-1475, -2320,-3276,-4233,-5058,-5694,-6175,-6616,-7112,-7677,-8251, -8699,-8875,-8748,-8394,-7929,-7406,-6802,-6085,-5287,-4458, -3653,-2953,-2390,-1933,-1501,-980,-335,333,868,1132, 1118,946,791,783,934,1208,1549,1899,2224,2544, 2923,3409,3975,4539,5057,5563,6120,6763,7443,8019, 8332,8312,8017,7575,7093,6634,6191,5698,5032,4147, 3134,2158,1333,632,-59,-863,-1797,-2787,-3734,-4543, -5166,-5665,-6171,-6778,-7449,-8078,-8540,-8763,-8751,-8564, -8250,-7819,-7267,-6583,-5776,-4910,-4087,-3402,-2871,-2418, -1923,-1297,-562,148,693,972,989,869,760,758, 901,1146,1412,1667,1927,2238,2653,3161,3679,4146, 4592,5083,5685,6404,7158,7795,8164,8216,8011,7671, 7321,7008,6678,6210,5508,4600,3638,2754,1996,1319, 608,-243,-1236,-2261,-3193,-3942,-4529,-5064,-5669,-6377, -7117,-7773,-8266,-8568,-8678,-8629,-8460,-8175,-7729,-7058, -6212,-5328,-4545,-3928,-3447,-2976,-2389,-1665,-879,-146, 414,725,798,748,710,754,894,1078,1247,1413, 1642,1971,2393,2862,3305,3694,4083,4571,5210,5998, 6824,7524,7950,8057,7945,7757,7586,7406,7129,6647, 5924,5042,4152,3359,2680,2032,1279,345,-702,-1718, -2591,-3307,-3936,-4550,-5206,-5939,-6711,-7422,-7979,-8344, -8554,-8665,-8672,-8509,-8104,-7440,-6606,-5754,-5027,-4456, -3975,-3474,-2847,-2070,-1220,-437,153,479,588,622, 688,794,901,993,1092,1239,1470,1799,2203,2621, 2988,3289,3610,4079,4767,5631,6505,7197,7603,7763, 7791,7794,7785,7707,7472,6996,6294,5460,4651,3954, 3344,2683,1864,896,-126,-1108,-1969,-2681,-3306,-3956, -4674,-5459,-6251,-6969,-7532,-7953,-8306,-8607,-8772,-8704, -8342,-7712,-6927,-6148,-5489,-4960,-4490,-3966,-3290,-2459, -1565,-767,-187,166,374,524,660,772,837,869, 928,1063,1311,1672,2083,2449,2711,2911,3190,3686, 4432,5322,6176,6846,7283,7525,7673,7813,7946,7973, 7774,7304,6632,5893,5207,4604,4003,3297,2446,1479, 466,-501,-1338,-2041,-2702,-3420,-4215,-5030,-5790,-6463, -7051,-7594,-8117,-8567,-8848,-8862,-8566,-8014,-7316,-6608, -6006,-5517,-5049,-4490,-3769,-2899,-1999,-1214,-615,-179, 142,390,578,706,762,762,764,874,1169,1582, 1962,2213,2348,2489,2780,3307,4062,4938,5759,6402, 6841,7164,7474,7799,8057,8132,7947,7513,6915,6283, 5705,5166,4573,3848,2967,1971,974,77,-705,-1428, -2151,-2944,-3784,-4591,-5307,-5960,-6611,-7276,-7924,-8492, -8888,-8997,-8767,-8260,-7628,-7042,-6558,-6127,-5643,-5017, -4236,-3373,-2510,-1735,-1099,-589,-159,211,488,636, 650,596,594,768,1119,1510,1803,1961,2028,2122, 2393,2931,3701,4543,5288,5868,6321,6750,7229,7717, 8071,8175,8000,7617,7130,6629,6150,5667,5101,4371, 3472,2484,1550,734,-11,-774,-1580,-2421,-3256,-4033, -4729,-5385,-6066,-6798,-7563,-8263,-8756,-8928,-8755,-8347, -7862,-7404,-6988,-6571,-6076,-5446,-4675,-3830,-3002,-2248, -1569,-960,-407,63,391,522,493,434,493,725, 1080,1451,1709,1791,1769,1818,2098,2653,3382,4121, 4755,5298,5824,6375,6975,7547,7956,8117,8026,7753, 7392,7018,6641,6203,5629,4872,3990,3080,2222,1428, 658,-147,-1015,-1889,-2714,-3468,-4135,-4770,-5464,-6284, -7182,-8003,-8576,-8799,-8705,-8423,-8068,-7712,-7367,-6995, -6516,-5877,-5106,-4295,-3516,-2791,-2077,-1349,-651,-93, 248,376,351,309,408,707,1105,1437,1588,1575, 1520,1591,1902,2435,3067,3689,4260,4792,5336,5950, 6630,7281,7752,7951,7903,7713,7483,7254,6995,6613, 6029,5270,4437,3608,2815,2039,1251,420,-467,-1372, -2202,-2899,-3503,-4128,-4891,-5815,-6798,-7671,-8276,-8580, -8613,-8457,-8219,-7991,-7759,-7420,-6915,-6274,-5554,-4831, -4129,-3396,-2591,-1752,-976,-366,-8,104,86,112, 300,654,1050,1321,1387,1320,1269,1373,1677,2144, 2693,3239,3747,4248,4824,5519,6289,6995,7482,7708, 7751,7719,7652,7531,7320,6970,6443,5755,4968,4175, 3428,2692,1896,1009,69,-846,-1634,-2273,-2858,-3514, -4328,-5296,-6314,-7238,-7920,-8295,-8401,-8359,-8271,-8167, -7989,-7653,-7157,-6570,-5964,-5345,-4682,-3930,-3061,-2131, -1270,-623,-275,-172,-140,-12,276,674,1046,1255, 1267,1186,1154,1267,1560,1981,2430,2850,3257,3721, 4331,5106,5928,6621,7105,7395,7566,7673,7718,7683, 7536,7226,6735,6098,5402,4728,4057,3316,2457,1527, 599,-256,-1000,-1629,-2210,-2874,-3733,-4768,-5832,-6763, -7460,-7907,-8157,-8292,-8362,-8359,-8223,-7926,-7488,-6969, -6435,-5897,-5291,-4523,-3579,-2556,-1650,-1005,-645,-481, -359,-140,212,620,962,1140,1127,1032,1015,1172, 1477,1828,2144,2438,2797,3298,3964,4743,5528,6210, 6744,7120,7374,7576,7759,7858,7777,7475,7004,6452, 5882,5304,4663,3913,3031,2068,1116,278,-404,-981, -1567,-2280,-3191,-4238,-5291,-6219,-6955,-7499,-7891,-8173, -8360,-8428,-8341,-8091,-7719,-7309,-6911,-6477,-5895,-5077, -4055,-2984,-2073,-1443,-1065,-827,-599,-286,124,545, 857,977,936,872,928,1128,1391,1636,1839,2062, 2390,2875,3524,4295,5093,5790,6320,6724,7084,7443, 7749,7901,7845,7604,7223,6767,6298,5805,5216,4467, 3556,2559,1601,796,171,-366,-963,-1727,-2679,-3733, -4761,-5672,-6437,-7083,-7641,-8088,-8385,-8499,-8425,-8199, -7921,-7671,-7427,-7076,-6491,-5626,-4572,-3513,-2619,-1981, -1578,-1271,-920,-477,1,416,666,736,723,750, 880,1087,1291,1452,1584,1739,2011,2487,3149,3899, 4624,5257,5798,6291,6771,7233,7606,7815,7821,7643, 7350,7017,6677,6278,5727,4969,4035,3039,2125,1384, 796,268,-345,-1141,-2098,-3116,-4098,-4982,-5779,-6530, -7229,-7807,-8187,-8340,-8289,-8148,-8016,-7924,-7801,-7499, -6913,-6048,-5017,-3980,-3108,-2485,-2063,-1680,-1202,-645, -126,254,477,593,653,726,873,1080,1260,1345, 1375,1472,1748,2231,2857,3522,4170,4781,5358,5923, 6491,7032,7475,7739,7795,7694,7504,7299,7088,6786, 6268,5496,4555,3581,2702,1995,1426,880,240,-572, -1515,-2483,-3405,-4275,-5142,-6030,-6875,-7544,-7961,-8131, -8150,-8120,-8126,-8154,-8110,-7867,-7309,-6446,-5422,-4435, -3636,-3035,-2527,-1998,-1413,-830,-329,51,298,435, 547,713,931,1121,1208,1201,1185,1276,1545,1987, 2544,3150,3730,4280,4857,5485,6139,6749,7241,7535, 7635,7616,7556,7491,7383,7143,6665,5913,4987,4049, 3241,2584,2010,1423,740,-61,-943,-1828,-2687,-3571, -4516,-5504,-6428,-7155,-7610,-7829,-7914,-7991,-8141,-8334, -8424,-8230,-7661,-6809,-5864,-4985,-4240,-3618,-3045,-2436, -1769,-1116,-574,-194,41,229,437,687,941,1104, 1137,1103,1092,1181,1417,1802,2284,2800,3308,3828, 4419,5106,5833,6493,6994,7308,7468,7552,7630,7707, 7707,7524,7066,6340,5456,4578,3822,3195,2604,1962, 1240,460,-338,-1138,-1973,-2897,-3925,-4993,-5979,-6757, -7243,-7479,-7637,-7860,-8183,-8497,-8635,-8465,-7973,-7233, -6383,-5566,-4850,-4207,-3562,-2865,-2137,-1455,-916,-547, -282,-17,280,588,852,999,1000,922,879,959, 1200,1566,1972,2365,2773,3266,3892,4626,5385,6057, 6573,6919,7138,7321,7535,7748,7857,7720,7275,6583, 5789,5030,4354,3720,3064,2377,1658,930,209,-525, -1332,-2272,-3367,-4517,-5543,-6314,-6801,-7097,-7372,-7746, -8203,-8605,-8792,-8674,-8242,-7600,-6876,-6167,-5495,-4831, -4110,-3314,-2527,-1862,-1351,-960,-619,-256,130,482, 733,858,869,810,783,890,1122,1406,1698,1998, 2350,2822,3468,4242,5030,5705,6210,6557,6829,7133, 7507,7850,8016,7901,7490,6891,6230,5571,4915,4256, 3573,2844,2109,1427,808,179,-597,-1608,-2800,-3991, -4998,-5741,-6251,-6642,-7056,-7573,-8136,-8601,-8843,-8784, -8441,-7909,-7320,-6730,-6101,-5388,-4591,-3761,-2983,-2319, -1787,-1357,-953,-503,-22,395,666,770,756,717, 736,858,1063,1287,1483,1683,1976,2439,3093,3874, 4652,5304,5776,6128,6490,6949,7454,7879,8089,8027, 7715,7230,6671,6098,5491,4811,4063,3298,2598,2013, 1494,908,107,-960,-2194,-3388,-4386,-5139,-5682,-6143, -6662,-7295,-7967,-8511,-8796,-8788,-8549,-8183,-7744,-7225, -6590,-5848,-5037,-4209,-3424,-2751,-2203,-1728,-1235,-688, -152,273,543,666,694,705,764,892,1063,1226, 1340,1452,1681,2136,2819,3597,4304,4863,5308,5729, 6197,6745,7314,7788,8055,8067,7856,7498,7074,6590, 5998,5283,4498,3744,3117,2620,2143,1547,734,-326, -1540,-2713,-3680,-4408,-4979,-5525,-6172,-6919,-7653,-8229, -8560,-8655,-8571,-8357,-8040,-7601,-7022,-6292,-5459,-4624, -3874,-3229,-2675,-2147,-1572,-950,-367,92,383,536, 609,672,777,939,1091,1153,1137,1184,1428,1901, 2545,3249,3892,4415,4857,5310,5851,6481,7123,7645, 7942,8006,7914,7731,7465,7059,6459,5692,4878,4157, 3597,3175,2755,2166,1317,234,-965,-2098,-3025,-3737, -4358,-5023,-5781,-6587,-7345,-7948,-8344,-8543,-8603,-8551, -8382,-8048,-7507,-6779,-5961,-5171,-4462,-3839,-3259,-2657, -2001,-1329,-715,-235,69,237,367,527,729,912, 979,923,851,892,1139,1591,2181,2813,3383,3842, 4263,4764,5403,6113,6777,7288,7619,7803,7881,7867, 7703,7324,6718,5960,5173,4496,4002,3648,3264,2669, 1793,702,-444,-1495,-2379,-3127,-3822,-4556,-5357,-6204, -6997,-7634,-8088,-8406,-8628,-8737,-8692,-8434,-7937,-7251, -6483,-5725,-5032,-4407,-3798,-3145,-2423,-1677,-1022,-552, -251,-31,201,468,715,864,881,789,689,716, 966,1409,1945,2483,2949,3351,3781,4348,5047,5772, 6404,6892,7271,7596,7863,7998,7918,7586,7005,6258, 5501,4902,4501,4198,3818,3201,2316,1265,195,-789, -1648,-2417,-3178,-3984,-4848,-5723,-6521,-7172,-7693,-8133, -8510,-8763,-8812,-8613,-8184,-7577,-6879,-6188,-5564,-4969, -4322,-3588,-2794,-2033,-1402,-934,-587,-278,68,430, 723,866,842,698,572,621,895,1315,1777,2204, 2565,2932,3408,4031,4728,5407,6012,6531,6997,7448, 7860,8144,8167,7861,7269,6537,5857,5350,5014,4731, 4329,3690,2825,1839,855,-46,-872,-1674,-2503,-3386, -4289,-5143,-5913,-6615,-7255,-7826,-8318,-8687,-8852,-8742, -8362,-7803,-7203,-6631,-6076,-5478,-4780,-3988,-3179,-2438, -1820,-1337,-924,-504,-50,374,692,839,777,605, 506,593,861,1223,1582,1900,2208,2577,3062,3675, 4347,4990,5553,6065,6599,7192,7778,8187,8283,8029, 7489,6826,6233,5798,5503,5217,4799,4162,3314,2367, 1461,635,-169,-1011,-1907,-2824,-3727,-4584,-5379,-6112, -6813,-7505,-8147,-8653,-8910,-8857,-8542,-8098,-7638,-7175, -6664,-6052,-5317,-4495,-3666,-2922,-2313,-1827,-1380,-883, -316,219,589,705,609,466,427,544,780,1063, 1327,1567,1836,2200,2700,3309,3937,4497,5000,5520, 6150,6895,7621,8122,8269,8060,7593,7027,6518,6156, 5902,5618,5174,4531,3747,2914,2088,1277,462,-387, -1303,-2254,-3156,-3970,-4739,-5511,-6309,-7115,-7869,-8458, -8770,-8785,-8585,-8292,-7967,-7604,-7130,-6507,-5740,-4901, -4087,-3387,-2827,-2341,-1799,-1156,-489,77,435,547, 493,415,419,546,756,967,1126,1286,1530,1911, 2436,3022,3560,4026,4494,5056,5774,6615,7428,8007, 8217,8062,7668,7219,6849,6576,6329,6015,5554,4934, 4211,3457,2702,1939,1141,280,-656,-1609,-2500,-3301, -4055,-4856,-5748,-6680,-7528,-8167,-8530,-8650,-8603,-8455, -8250,-7980,-7566,-6948,-6159,-5317,-4556,-3921,-3371,-2812, -2174,-1444,-713,-128,213,340,355,365,450,604, 755,851,923,1066,1343,1754,2241,2713,3133,3534, 3973,4541,5328,6286,7185,7802,8050,7974,7698,7368, 7072,6822,6579,6282,5867,5302,4639,3944,3235,2497, 1694,804,-141,-1056,-1874,-2631,-3415,-4287,-5236,-6204, -7103,-7811,-8273,-8509,-8580,-8575,-8522,-8354,-7971,-7347, -6571,-5778,-5080,-4503,-3967,-3349,-2609,-1819,-1079,-486, -104,83,173,266,412,572,670,684,690,824, 1126,1537,1985,2396,2723,3009,3395,4012,4876,5863, 6769,7424,7755,7805,7671,7467,7274,7083,6848,6535, 6127,5611,5021,4412,3792,3085,2246,1316,400,-441, -1213,-1968,-2776,-3691,-4698,-5726,-6655,-7390,-7903,-8245, -8491,-8677,-8758,-8658,-8310,-7721,-6996,-6283,-5664,-5108, -4526,-3836,-3032,-2191,-1425,-829,-437,-182,25,226, 407,541,580,537,528,670,995,1423,1833,2139, 2346,2561,2945,3583,4456,5444,6369,7072,7477,7626, 7616,7533,7430,7310,7108,6791,6384,5939,5475,4959, 4338,3589,2751,1878,1013,212,-501,-1206,-2032,-3021, -4096,-5146,-6072,-6823,-7402,-7870,-8285,-8627,-8813,-8753, -8430,-7888,-7259,-6657,-6110,-5588,-5004,-4267,-3410,-2554, -1807,-1220,-777,-414,-81,226,463,567,522,429, 441,647,1008,1409,1735,1939,2052,2213,2578,3224, 4100,5069,5982,6709,7186,7434,7559,7630,7644,7555, 7336,7030,6697,6342,5946,5475,4882,4140,3294,2421, 1610,901,249,-460,-1327,-2366,-3479,-4527,-5428,-6182, -6846,-7476,-8066,-8551,-8844,-8856,-8574,-8089,-7556,-7076, -6643,-6151,-5509,-4724,-3860,-3021,-2303,-1721,-1221,-731, -251,158,420,488,409,315,350,580,955,1334, 1587,1684,1720,1841,2170,2778,3631,4597,5502,6211, 6723,7106,7392,7567,7626,7577,7414,7153,6870,6600, 6304,5901,5313,4559,3715,2866,2102,1459,854,132, -789,-1857,-2940,-3942,-4830,-5625,-6363,-7104,-7850,-8487, -8862,-8914,-8692,-8329,-7941,-7581,-7210,-6729,-6065,-5239, -4370,-3572,-2894,-2294,-1711,-1109,-513,-40,218,258, 180,145,258,529,887,1218,1404,1427,1397,1467, 1786,2384,3191,4072,4922,5664,6280,6780,7184,7468, 7603,7572,7425,7230,7041,6869,6639,6252,5665,4915, 4098,3315,2642,2065,1462,715,-203,-1241,-2293,-3258, -4117,-4934,-5783,-6670,-7527,-8227,-8647,-8769,-8668,-8459, -8232,-7992,-7665,-7168,-6467,-5643,-4832,-4114,-3459,-2805, -2117,-1399,-734,-243,11,74,51,45,178,482, 872,1186,1312,1267,1194,1242,1522,2057,2786,3596, 4395,5145,5837,6455,6969,7334,7523,7542,7443,7315, 7230,7162,6997,6644,6069,5329,4548,3848,3259,2716, 2109,1339,401,-614,-1598,-2493,-3330,-4194,-5150,-6169, -7120,-7871,-8347,-8550,-8560,-8505,-8431,-8294,-8014,-7526, -6843,-6069,-5327,-4667,-4030,-3327,-2540,-1736,-1017,-476, -177,-99,-120,-64,149,496,864,1119,1192,1118, 1021,1061,1324,1785,2390,3090,3839,4602,5356,6069, 6677,7111,7339,7393,7369,7357,7379,7376,7253,6914, 6349,5658,4967,4356,3821,3292,2650,1849,933,3, -886,-1732,-2582,-3512,-4545,-5629,-6634,-7433,-7963,-8259, -8419,-8538,-8603,-8534,-8255,-7767,-7143,-6493,-5879,-5280, -4623,-3866,-3011,-2125,-1342,-783,-485,-389,-341,-206, 70,450,821,1047,1069,957,856,888,1102,1489, 2008,2632,3336,4105,4917,5704,6367,6838,7096,7204, 7264,7368,7515,7599,7492,7139,6586,5959,5366,4841, 4349,3808,3137,2318,1431,572,-228,-1024,-1878,-2844, -3941,-5095,-6138,-6946,-7509,-7928,-8295,-8595,-8762,-8736, -8495,-8075,-7542,-6971,-6409,-5847,-5208,-4425,-3497,-2541, -1725,-1167,-863,-717,-578,-343,-1,378,694,872, 900,826,757,792,964,1246,1631,2132,2775,3566, 4439,5279,5962,6444,6743,6930,7111,7350,7598,7731, 7633,7291,6795,6262,5764,5320,4864,4296,3583,2785, 1966,1192,486,-211,-1054,-2117,-3303,-4454,-5450,-6262, -6931,-7513,-8027,-8454,-8713,-8738,-8546,-8199,-7766,-7308, -6852,-6363,-5736,-4901,-3911,-2919,-2101,-1546,-1216,-989, -763,-468,-90,310,641,827,865,817,774,798, 900,1067,1331,1745,2352,3149,4049,4900,5588,6077, 6414,6695,6999,7342,7656,7814,7732,7429,7014,6586, 6185,5794,5351,4774,4041,3235,2476,1819,1205,500, -397,-1490,-2661,-3769,-4746,-5598,-6363,-7075,-7742,-8292, -8636,-8733,-8613,-8339,-8004,-7684,-7361,-6920,-6262,-5390, -4389,-3406,-2594,-2019,-1636,-1345,-1048,-680,-247,173, 491,675,744,756,753,750,758,822,999,1355, 1939,2720,3600,4428,5098,5581,5958,6345,6786,7241, 7610,7785,7721,7470,7141,6825,6547,6222,5750,5100, 4353,3633,3010,2449,1840,1108,203,-866,-2013,-3102, -4083,-4987,-5850,-6682,-7462,-8107,-8519,-8670,-8612,-8445, -8264,-8084,-7837,-7423,-6782,-5919,-4915,-3938,-3120,-2523, -2107,-1753,-1362,-909,-438,-13,304,511,642,736, 778,749,672,606,650,921,1491,2295,3164,3930, 4534,5033,5495,5972,6495,7023,7445,7654,7626,7449, 7239,7068,6876,6551,6054,5412,4716,4072,3520,3003, 2416,1686,794,-233,-1319,-2366,-3344,-4265,-5185,-6141, -7063,-7793,-8247,-8450,-8485,-8441,-8388,-8332,-8182,-7821, -7193,-6341,-5375,-4436,-3647,-3046,-2561,-2099,-1622,-1130, -651,-234,98,366,581,744,824,780,630,470, 466,735,1275,2000,2777,3469,4044,4538,5045,5636, 6282,6876,7305,7511,7532,7467,7398,7331,7182,6854, 6335,5714,5089,4528,4033,3545,2975,2262,1383,404, -593,-1563,-2514,-3493,-4526,-5594,-6591,-7386,-7912,-8190, -8329,-8428,-8530,-8590,-8516,-8212,-7624,-6801,-5870,-4984, -4234,-3606,-3047,-2511,-1981,-1456,-970,-551,-184,173, 504,748,843,757,547,342,292,518,1024,1698, 2385,2985,3496,4005,4601,5303,6025,6632,7041,7253, 7358,7448,7532,7545,7415,7101,6615,6020,5436,4944, 4528,4089,3519,2778,1918,1023,138,-745,-1680,-2708, -3831,-4980,-6030,-6866,-7434,-7789,-8031,-8260,-8507,-8698, -8699,-8436,-7908,-7168,-6310,-5467,-4731,-4091,-3473,-2848, -2250,-1725,-1272,-844,-405,39,438,731,853,763, 516,268,193,392,850,1445,2028,2520,2970,3505, 4187,4963,5704,6296,6702,6984,7214,7432,7612,7692, 7597,7300,6833,6300,5807,5391,5003,4554,3974,3245, 2425,1612,840,32,-903,-1982,-3155,-4347,-5450,-6328, -6925,-7330,-7697,-8098,-8488,-8766,-8854,-8685,-8221,-7536, -6779,-6037,-5316,-4611,-3923,-3267,-2676,-2162,-1702,-1243, -738,-194,310,663,783,661,390,145,95,305, 713,1195,1633,2008,2436,3018,3754,4536,5251,5832, 6279,6648,6985,7311,7592,7737,7677,7403,6970,6484, 6077,5768,5430,4954,4347,3654,2924,2207,1503,739, -166,-1259,-2501,-3752,-4849,-5719,-6381,-6903,-7377,-7889, -8408,-8808,-8964,-8829,-8450,-7920,-7296,-6606,-5882,-5145, -4414,-3721,-3112,-2598,-2147,-1675,-1095,-433,182,602, 730,579,297,95,99,295,595,931,1261,1605, 2049,2652,3386,4152,4834,5394,5874,6320,6756,7191, 7562,7761,7716,7466,7113,6754,6435,6135,5777,5310, 4716,4044,3373,2755,2149,1435,517,-598,-1823,-3059, -4187,-5102,-5805,-6410,-7024,-7666,-8266,-8726,-8959,-8927, -8680,-8281,-7752,-7120,-6410,-5644,-4874,-4185,-3604,-3102, -2633,-2113,-1466,-714,-15,434,559,442,253,146, 164,282,454,654,895,1229,1686,2274,2976,3711, 4384,4947,5443,5946,6494,7036,7459,7677,7680,7503, 7244,6979,6737,6478,6123,5643,5066,4460,3870,3322, 2767,2099,1229,140,-1104,-2350,-3452,-4364,-5142,-5863, -6587,-7320,-7999,-8522,-8839,-8939,-8841,-8558,-8118,-7538, -6840,-6070,-5310,-4631,-4086,-3649,-3194,-2577,-1783,-940, -232,213,356,302,210,187,234,299,367,467, 627,900,1349,1968,2658,3308,3878,4410,4961,5566, 6215,6823,7298,7558,7595,7482,7323,7170,6998,6754, 6392,5917,5368,4814,4308,3866,3398,2769,1890,791, -404,-1574,-2644,-3582,-4419,-5230,-6059,-6874,-7603,-8187, -8611,-8849,-8891,-8749,-8438,-7928,-7227,-6431,-5683,-5071, -4614,-4207,-3697,-2987,-2118,-1243,-552,-122,84,166, 193,210,252,304,322,308,363,613,1080,1679, 2291,2850,3359,3876,4469,5156,5886,6552,7047,7337, 7443,7438,7388,7335,7235,7011,6636,6137,5591,5107, 4721,4371,3936,3308,2443,1383,235,-877,-1903,-2857, -3778,-4672,-5546,-6401,-7189,-7842,-8337,-8689,-8902,-8943, -8757,-8285,-7564,-6766,-6079,-5577,-5191,-4775,-4192,-3408, -2506,-1631,-914,-429,-160,-14,115,245,318,289, 190,132,216,477,900,1424,1966,2454,2897,3383, 4002,4752,5530,6212,6723,7059,7253,7352,7421,7480, 7444,7227,6826,6319,5819,5417,5118,4832,4437,3826, 2989,2004,958,-95,-1115,-2085,-3036,-3996,-4942,-5836, -6650,-7356,-7953,-8476,-8887,-9081,-8953,-8485,-7800,-7097, -6523,-6092,-5708,-5251,-4637,-3845,-2955,-2089,-1371,-846, -473,-175,73,254,328,280,152,61,103,332, 717,1174,1622,2023,2429,2937,3597,4375,5173,5875, 6406,6766,7029,7259,7467,7594,7572,7359,6969,6498, 6068,5745,5500,5237,4863,4302,3524,2596,1618,651, -311,-1292,-2299,-3320,-4313,-5220,-6021,-6768,-7510,-8228, -8807,-9090,-9008,-8604,-8013,-7400,-6890,-6519,-6182,-5725, -5065,-4251,-3377,-2551,-1858,-1297,-816,-386,-13,248, 332,241,85,-1,56,264,579,940,1285,1615, 1993,2493,3156,3934,4722,5416,5965,6378,6730,7077, 7397,7613,7634,7436,7076,6659,6277,5982,5781,5567, 5220,4684,3967,3113,2206,1299,373,-624,-1687,-2749, -3719,-4563,-5367,-6236,-7160,-8025,-8711,-9099,-9112,-8771, -8241,-7741,-7370,-7080,-6741,-6253,-5586,-4779,-3937,-3156, -2464,-1826,-1212,-648,-194,90,177,111,-13,-84, -19,175,427,682,936,1215,1574,2074,2727,3497, 4259,4908,5429,5901,6382,6863,7286,7568,7629,7456, 7139,6780,6463,6231,6064,5881,5567,5042,4353,3611, 2858,2035,1087,41,-1031,-2044,-2960,-3824,-4710,-5663, -6680,-7670,-8472,-8937,-9017,-8781,-8394,-8027,-7747,-7495, -7156,-6654,-5985,-5228,-4463,-3720,-2992,-2274,-1559,-885, -337,4,113,49,-53,-78,9,181,382,561, 715,914,1244,1756,2425,3160,3862,4474,5024,5571, 6142,6715,7207,7526,7622,7517,7262,6952,6695,6536, 6415,6210,5865,5392,4846,4234,3541,2719,1765,725, -314,-1279,-2151,-2996,-3918,-4980,-6131,-7233,-8106,-8627, -8776,-8649,-8407,-8194,-8028,-7808,-7453,-6945,-6317,-5631, -4950,-4256,-3520,-2734,-1931,-1180,-579,-197,-33,-32, -83,-68,49,221,364,443,494,631,965,1492, 2116,2753,3371,3977,4576,5173,5788,6421,7006,7415, 7565,7473,7259,7049,6896,6766,6599,6365,6061,5692, 5268,4762,4125,3318,2350,1317,334,-538,-1348,-2193, -3161,-4298,-5546,-6730,-7671,-8262,-8509,-8537,-8483,-8402, -8286,-8096,-7766,-7283,-6724,-6144,-5534,-4867,-4101,-3248, -2374,-1565,-910,-486,-289,-222,-179,-91,62,202, 259,252,263,403,725,1194,1736,2316,2902,3459, 4011,4633,5363,6123,6771,7200,7383,7381,7285,7171, 7059,6924,6746,6523,6259,5983,5675,5255,4641,3828, 2879,1902,995,197,-557,-1400,-2424,-3637,-4934,-6136, -7103,-7771,-8150,-8328,-8429,-8484,-8445,-8266,-7940,-7512, -7043,-6561,-6031,-5402,-4637,-3756,-2838,-1981,-1287,-822, -565,-402,-241,-54,113,194,174,127,148,274, 535,946,1462,1984,2473,2960,3525,4220,5012,5796, 6449,6896,7140,7232,7241,7210,7147,7022,6827,6607, 6427,6261,6044,5688,5103,4285,3344,2425,1603,886, 196,-615,-1678,-2969,-4315,-5535,-6517,-7248,-7775,-8157, -8416,-8553,-8564,-8419,-8141,-7785,-7405,-7009,-6559,-5994, -5247,-4331,-3345,-2442,-1752,-1280,-921,-607,-328,-98, 61,129,121,65,27,109,377,781,1206,1596, 1984,2437,3006,3727,4557,5372,6047,6523,6838,7051, 7185,7239,7194,7045,6847,6670,6563,6495,6372,6068, 5498,4697,3793,2941,2218,1600,958,138,-942,-2241, -3587,-4809,-5819,-6638,-7311,-7855,-8261,-8498,-8546,-8450, -8246,-7961,-7663,-7388,-7052,-6515,-5719,-4748,-3785,-2965, -2297,-1729,-1244,-844,-507,-206,23,114,60,-46, -73,37,278,598,933,1244,1559,1987,2593,3340, 4139,4919,5605,6156,6573,6901,7142,7263,7230,7060, 6858,6736,6724,6747,6682,6399,5842,5059,4204,3442, 2831,2280,1650,811,-283,-1550,-2848,-4054,-5118,-6048, -6861,-7540,-8056,-8397,-8543,-8490,-8309,-8128,-7999,-7839, -7520,-6977,-6216,-5314,-4400,-3563,-2834,-2217,-1680,-1188, -732,-348,-84,0,-58,-160,-164,-21,223,478, 697,906,1177,1582,2168,2901,3689,4449,5142,5756, 6289,6742,7070,7213,7170,7020,6877,6821,6879,6977, 6953,6672,6112,5384,4645,4001,3472,2953,2320,1485, 431,-780,-2032,-3240,-4351,-5363,-6290,-7126,-7791,-8197, -8343,-8332,-8288,-8267,-8237,-8132,-7858,-7360,-6641,-5780, -4882,-4046,-3309,-2662,-2054,-1448,-870,-409,-140,-70, -111,-149,-98,49,236,406,546,687,917,1324, 1908,2587,3289,3986,4686,5387,6044,6599,6984,7158, 7131,6999,6893,6919,7069,7228,7215,6913,6372,5734, 5112,4558,4063,3564,2956,2159,1144,-14,-1202,-2349, -3468,-4590,-5686,-6642,-7356,-7805,-8050,-8171,-8247,-8319, -8365,-8317,-8093,-7652,-7008,-6214,-5366,-4577,-3877,-3189, -2459,-1722,-1070,-585,-314,-228,-218,-184,-86,63, 209,306,362,452,663,1055,1593,2188,2793,3430, 4141,4921,5686,6327,6766,6955,6931,6824,6807,6952, 7179,7328,7275,6984,6503,5953,5429,4960,4526,4069, 3480,2696,1737,686,-394,-1506,-2681,-3911,-5103,-6138, -6924,-7454,-7782,-8005,-8188,-8364,-8502,-8535,-8388,-8002, -7391,-6667,-5956,-5283,-4578,-3811,-3001,-2190,-1469,-949, -638,-468,-365,-262,-120,25,111,130,131,201, 406,762,1220,1715,2240,2846,3575,4416,5277,5995, 6447,6616,6617,6616,6721,6923,7144,7299,7298,7075, 6648,6134,5674,5308,4959,4511,3903,3158,2316,1410, 437,-662,-1910,-3221,-4455,-5522,-6378,-7010,-7443,-7757, -8044,-8340,-8592,-8700,-8591,-8251,-7734,-7130,-6495,-5856, -5161,-4365,-3487,-2627,-1892,-1345,-982,-738,-539,-329, -146,-32,8,2,6,73,249,540,908,1297, 1725,2289,3055,3985,4915,5649,6093,6304,6391,6462, 6618,6877,7170,7363,7343,7101,6734,6341,6000,5702, 5350,4871,4285,3643,2951,2149,1186,63,-1175,-2469, -3739,-4895,-5830,-6502,-6986,-7415,-7853,-8269,-8589,-8739, -8672,-8402,-8000,-7527,-7011,-6434,-5737,-4894,-3964,-3068, -2310,-1739,-1314,-962,-644,-372,-175,-78,-60,-69, -43,57,235,452,662,884,1249,1861,2684,3600, 4491,5234,5729,5990,6129,6276,6521,6862,7195,7389, 7372,7168,6887,6614,6350,6047,5671,5235,4750,4212, 3592,2860,1981,934,-294,-1636,-2958,-4129,-5079,-5813, -6408,-6970,-7537,-8050,-8425,-8609,-8608,-8459,-8194,-7848, -7429,-6895,-6197,-5347,-4432,-3566,-2819,-2199,-1681,-1226, -819,-482,-244,-136,-127,-135,-63,85,231,325, 404,546,862,1434,2246,3188,4108,4847,5339,5624, 5830,6090,6453,6848,7163,7321,7314,7202,7047,6862, 6618,6317,5973,5580,5143,4675,4151,3517,2706,1693, 484,-858,-2197,-3384,-4355,-5146,-5855,-6543,-7217,-7814, -8245,-8469,-8526,-8471,-8356,-8168,-7847,-7341,-6655,-5830, -4937,-4073,-3314,-2672,-2095,-1536,-1004,-590,-362,-279, -231,-140,-15,116,212,236,222,274,525,1053, 1844,2782,3693,4410,4876,5192,5509,5903,6341,6735, 7036,7226,7303,7274,7170,7015,6814,6560,6240,5866, 5475,5098,4685,4148,3403,2419,1212,-121,-1426,-2586, -3576,-4450,-5274,-6096,-6888,-7550,-8009,-8284,-8445,-8529, -8541,-8456,-8223,-7798,-7160,-6352,-5488,-4688,-3973,-3276, -2559,-1856,-1262,-848,-615,-484,-370,-223,-49,94, 152,115,33,-8,152,657,1481,2419,3246,3867, 4326,4734,5162,5615,6065,6471,6795,7017,7144,7181, 7143,7055,6904,6649,6314,5961,5638,5361,5074,4652, 3980,3032,1850,561,-681,-1801,-2801,-3741,-4681,-5606, -6438,-7124,-7647,-8019,-8279,-8470,-8618,-8672,-8525,-8117, -7507,-6812,-6105,-5386,-4634,-3851,-3056,-2297,-1660,-1221, -946,-751,-564,-341,-86,116,163,31,-184,-294, -117,396,1142,1954,2691,3310,3833,4310,4789,5302, 5808,6246,6581,6823,7002,7118,7166,7132,7003,6762, 6432,6100,5844,5663,5473,5130,4513,3600,2494,1332, 182,-940,-2018,-3042,-4035,-5018,-5930,-6682,-7239,-7653, -8012,-8375,-8680,-8803,-8680,-8335,-7842,-7273,-6656,-5975, -5209,-4369,-3515,-2726,-2070,-1567,-1217,-961,-691,-358, -25,170,145,-65,-305,-401,-242,191,831,1553, 2239,2848,3400,3930,4466,5016,5530,5966,6321,6622, 6890,7102,7221,7217,7099,6851,6519,6225,6067,6005, 5892,5577,4993,4164,3176,2105,1016,-61,-1122,-2194, -3298,-4371,-5307,-6073,-6695,-7226,-7730,-8212,-8589,-8757, -8697,-8463,-8125,-7697,-7158,-6505,-5743,-4889,-4005,-3171, -2477,-1978,-1631,-1291,-874,-412,-32,146,76,-153, -372,-449,-318,32,565,1201,1852,2452,3015,3574, 4132,4675,5195,5669,6071,6410,6722,7005,7207,7263, 7136,6863,6564,6358,6270,6226,6134,5884,5396,4662, 3762,2795,1809,789,-304,-1463,-2635,-3720,-4654,-5425, -6103,-6758,-7406,-7978,-8397,-8623,-8672,-8563,-8333,-7996, -7556,-6980,-6254,-5390,-4468,-3621,-2968,-2495,-2079,-1600, -1045,-507,-104,74,21,-173,-374,-466,-385,-98, 351,896,1461,2023,2585,3156,3739,4320,4867,5336, 5736,6138,6569,6962,7205,7240,7108,6892,6677,6512, 6442,6448,6412,6209,5772,5126,4345,3500,2594,1590, 457,-749,-1916,-2957,-3881,-4722,-5524,-6309,-7040,-7666, -8149,-8465,-8611,-8597,-8496,-8334,-8030,-7498,-6738,-5841, -4940,-4166,-3559,-3043,-2526,-1944,-1303,-694,-241,-27, -53,-223,-407,-484,-412,-212,104,543,1068,1617, 2174,2771,3387,3954,4446,4898,5371,5880,6385,6810, 7074,7132,7031,6857,6690,6587,6569,6605,6588,6404, 6012,5469,4852,4151,3308,2292,1150,-29,-1155,-2181, -3131,-4042,-4932,-5795,-6612,-7332,-7894,-8261,-8467,-8593, -8680,-8661,-8437,-7937,-7186,-6313,-5492,-4799,-4195,-3627, -3026,-2347,-1618,-949,-464,-221,-187,-287,-437,-532, -497,-332,-73,253,668,1197,1808,2425,3001,3511, 3968,4443,4982,5572,6162,6659,6969,7067,6997,6829, 6679,6641,6690,6736,6701,6529,6231,5862,5395,4765, 3942,2950,1849,717,-378,-1411,-2380,-3323,-4276,-5235, -6141,-6912,-7496,-7907,-8224,-8521,-8775,-8876,-8712,-8262, -7577,-6787,-6032,-5385,-4819,-4231,-3543,-2780,-2009,-1297, -725,-392,-314,-394,-493,-540,-513,-409,-240,0, 364,878,1471,2052,2600,3098,3558,4035,4590,5217, 5864,6424,6785,6894,6821,6721,6695,6728,6763,6755, 6685,6556,6382,6146,5795,5253,4504,3570,2505,1399, 335,-649,-1607,-2602,-3652,-4690,-5618,-6377,-6984,-7495, -7965,-8413,-8805,-9018,-8926,-8502,-7869,-7189,-6571,-6006, -5436,-4816,-4108,-3293,-2436,-1656,-1055,-685,-529,-510, -536,-549,-536,-505,-427,-232,102,579,1147,1712, 2209,2664,3120,3608,4186,4884,5615,6213,6573,6696, 6702,6704,6732,6765,6783,6781,6748,6691,6608,6445, 6162,5715,5055,4169,3149,2120,1142,193,-796,-1871, -2979,-4024,-4949,-5727,-6384,-6981,-7594,-8203,-8701,-8963, -8930,-8620,-8125,-7557,-6996,-6456,-5918,-5321,-4588,-3723, -2820,-1998,-1357,-926,-669,-529,-469,-471,-514,-545, -499,-334,-39,389,914,1459,1943,2338,2720,3206, 3863,4629,5366,5931,6295,6509,6647,6743,6799,6819, 6806,6790,6777,6757,6733,6687,6534,6162,5526,4698, 3792,2863,1941,1013,15,-1100,-2256,-3324,-4227,-4983, -5694,-6432,-7183,-7898,-8490,-8852,-8917,-8703,-8310,-7840, -7381,-6947,-6485,-5884,-5095,-4179,-3291,-2505,-1823,-1272, -888,-650,-525,-492,-530,-599,-621,-503,-210,219, 706,1164,1538,1875,2291,2848,3523,4266,4974,5563, 5998,6301,6503,6627,6722,6791,6796,6747,6731,6791, 6880,6902,6772,6429,5868,5131,4326,3521,2703,1794, 739,-426,-1587,-2620,-3498,-4294,-5089,-5920,-6771,-7584, -8256,-8702,-8862,-8744,-8443,-8089,-7759,-7428,-6994,-6376, -5603,-4753,-3887,-3052,-2297,-1667,-1180,-841,-638,-567, -622,-740,-804,-707,-408,14,424,759,1065,1431, 1898,2466,3114,3817,4520,5140,5633,5994,6264,6484, 6629,6665,6638,6604,6618,6720,6886,7003,6935,6633, 6134,5519,4866,4178,3387,2450,1379,235,-877,-1876, -2775,-3623,-4475,-5360,-6292,-7208,-7980,-8496,-8725,-8714, -8561,-8366,-8148,-7852,-7436,-6880,-6178,-5356,-4485,-3634, -2836,-2114,-1507,-1052,-767,-682,-769,-898,-920,-765, -457,-110,197,467,745,1083,1517,2074,2730,3426, 4093,4698,5238,5699,6081,6367,6534,6575,6529,6498, 6576,6770,6980,7076,6993,6745,6380,5943,5436,4821, 4049,3106,2032,911,-162,-1136,-2013,-2849,-3733,-4720, -5760,-6749,-7573,-8145,-8457,-8589,-8608,-8541,-8390,-8146, -7787,-7289,-6648,-5891,-5060,-4208,-3380,-2582,-1848,-1256, -899,-806,-860,-908,-884,-745,-489,-193,58,259, 479,788,1240,1809,2437,3079,3719,4341,4924,5467, 5944,6284,6453,6475,6439,6458,6609,6852,7068,7163, 7099,6915,6662,6352,5951,5405,4676,3767,2732,1654, 615,-326,-1170,-2013,-2971,-4059,-5166,-6181,-7040,-7702, -8155,-8443,-8589,-8613,-8553,-8412,-8139,-7684,-7069,-6373, -5642,-4853,-3966,-3023,-2184,-1576,-1206,-1036,-999,-995, -929,-766,-541,-308,-111,54,234,501,912,1436, 2005,2594,3206,3838,4487,5136,5695,6067,6222,6241, 6251,6343,6531,6759,6945,7032,7010,6910,6769,6570, 6271,5824,5176,4305,3278,2229,1257,389,-446,-1344, -2350,-3440,-4552,-5604,-6528,-7274,-7809,-8174,-8434,-8626, -8723,-8655,-8396,-8005,-7536,-6991,-6319,-5503,-4570,-3598, -2711,-2015,-1563,-1328,-1223,-1146,-1029,-874,-688,-499, -341,-218,-70,198,603,1091,1604,2121,2689,3359, 4103,4807,5377,5753,5946,6031,6121,6275,6483,6692, 6856,6948,6959,6929,6888,6812,6635,6261,5632,4776, 3800,2834,1942,1110,274,-631,-1635,-2736,-3888,-4997, -5952,-6707,-7313,-7827,-8259,-8563,-8703,-8688,-8537,-8264, -7893,-7429,-6835,-6061,-5122,-4120,-3192,-2450,-1927,-1595, -1390,-1224,-1051,-869,-692,-541,-429,-326,-158,100, 447,856,1279,1724,2276,2987,3781,4523,5111,5515, 5776,5954,6097,6253,6453,6666,6835,6922,6937,6956, 7027,7087,7016,6698,6114,5334,4466,3576,2702,1877, 1084,226,-792,-1935,-3101,-4195,-5156,-6001,-6752,-7407, -7940,-8325,-8543,-8608,-8566,-8433,-8194,-7813,-7258,-6516, -5592,-4585,-3634,-2843,-2259,-1856,-1560,-1298,-1056,-850, -690,-586,-508,-402,-219,39,323,605,922,1361, 1957,2677,3447,4175,4778,5231,5541,5757,5940,6156, 6397,6601,6717,6756,6801,6923,7100,7213,7160,6907, 6443,5770,4965,4146,3364,2604,1797,893,-131,-1248, -2392,-3471,-4455,-5366,-6216,-6976,-7605,-8074,-8372,-8536, -8616,-8619,-8508,-8233,-7756,-7063,-6183,-5207,-4266,-3453, -2812,-2323,-1919,-1553,-1237,-1014,-883,-812,-727,-577, -366,-160,20,223,509,928,1500,2189,2943,3678, 4312,4792,5127,5401,5692,5989,6226,6367,6440,6510, 6627,6794,6984,7149,7193,7031,6639,6039,5326,4604, 3904,3183,2396,1487,451,-651,-1744,-2797,-3815,-4808, -5754,-6611,-7315,-7830,-8205,-8491,-8708,-8827,-8826,-8664, -8278,-7647,-6819,-5883,-4956,-4135,-3445,-2838,-2284,-1807, -1457,-1251,-1126,-1005,-854,-686,-519,-359,-202,-29, 199,533,1051,1752,2541,3273,3863,4327,4743,5156, 5544,5855,6071,6219,6327,6416,6519,6704,6971,7212, 7309,7192,6850,6337,5746,5150,4536,3857,3059,2145, 1157,132,-928,-2010,-3080,-4125,-5127,-6032,-6791,-7390, -7866,-8251,-8566,-8805,-8934,-8882,-8593,-8029,-7245,-6375, -5524,-4719,-3950,-3216,-2560,-2041,-1680,-1440,-1255,-1074, -895,-719,-545,-386,-269,-183,-40,282,827,1511, 2210,2865,3468,4018,4524,4994,5408,5749,5997,6142, 6221,6296,6428,6666,6990,7279,7406,7325,7058,6663, 6198,5690,5119,4453,3679,2819,1902,935,-87,-1169, -2272,-3366,-4408,-5359,-6181,-6856,-7398,-7849,-8274,-8665, -8930,-8963,-8725,-8247,-7603,-6875,-6109,-5297,-4450,-3638, -2933,-2375,-1953,-1639,-1394,-1190,-980,-750,-543,-431, -400,-347,-190,109,568,1170,1827,2467,3049,3602, 4157,4694,5168,5547,5806,5955,6042,6134,6298,6565, 6914,7225,7368,7315,7135,6879,6544,6107,5561,4920, 4202,3428,2586,1673,687,-369,-1481,-2603,-3691,-4703, -5580,-6293,-6895,-7465,-8038,-8557,-8897,-8986,-8850,-8515, -8035,-7419,-6667,-5835,-4989,-4163,-3393,-2749,-2273,-1942, -1662,-1362,-1055,-801,-644,-584,-569,-522,-372,-87, 326,843,1423,2014,2592,3174,3769,4367,4912,5344, 5619,5754,5822,5926,6142,6459,6803,7088,7260,7286, 7190,7013,6757,6397,5923,5354,4708,3984,3177,2296, 1366,368,-727,-1883,-3020,-4058,-4937,-5677,-6381,-7106, -7792,-8351,-8732,-8938,-8972,-8809,-8433,-7888,-7228,-6465, -5614,-4732,-3911,-3240,-2730,-2319,-1937,-1562,-1219,-954, -792,-726,-708,-662,-534,-306,37,490,1017,1568, 2115,2689,3330,4003,4617,5078,5353,5487,5586,5745, 5994,6311,6647,6935,7129,7222,7232,7145,6952,6663, 6280,5777,5160,4468,3728,2957,2103,1097,-39,-1214, -2321,-3316,-4206,-5046,-5875,-6683,-7414,-8035,-8523,-8852, -8994,-8947,-8729,-8343,-7767,-7010,-6150,-5284,-4481,-3780, -3191,-2702,-2244,-1784,-1375,-1091,-933,-852,-816,-785, -678,-458,-151,220,654,1138,1675,2276,2959,3678, 4315,4779,5071,5237,5389,5605,5883,6171,6464,6746, 6983,7135,7197,7189,7113,6925,6590,6113,5545,4951, 4345,3646,2776,1743,641,-460,-1534,-2553,-3499,-4388, -5254,-6108,-6924,-7645,-8222,-8621,-8868,-8988,-8947,-8684, -8177,-7471,-6648,-5808,-5019,-4310,-3678,-3097,-2551,-2045, -1596,-1253,-1055,-976,-948,-893,-772,-567,-296,11, 337,722,1221,1864,2601,3342,3976,4447,4771,5013, 5237,5469,5722,5999,6303,6610,6861,7033,7152,7241, 7264,7126,6802,6366,5913,5466,4931,4239,3380,2415, 1381,324,-738,-1768,-2735,-3670,-4609,-5541,-6416,-7187, -7821,-8314,-8698,-8980,-9085,-8938,-8513,-7883,-7138,-6355, -5580,-4850,-4170,-3527,-2911,-2332,-1832,-1455,-1225,-1114, -1066,-1004,-869,-660,-430,-215,15,346,841,1490, 2218,2942,3591,4110,4490,4772,5010,5251,5528,5846, 6156,6415,6637,6868,7106,7272,7300,7185,6952,6656, 6317,5920,5422,4786,3998,3086,2095,1067,33,-987, -1988,-2972,-3950,-4916,-5828,-6631,-7333,-7961,-8509,-8919, -9119,-9070,-8777,-8272,-7622,-6898,-6157,-5423,-4702,-4008, -3334,-2687,-2114,-1679,-1427,-1298,-1195,-1062,-892,-712, -562,-430,-237,79,547,1147,1838,2569,3253,3798, 4205,4510,4789,5094,5416,5705,5949,6194,6474,6774, 7041,7217,7269,7208,7064,6865,6598,6258,5835,5286, 4564,3690,2738,1782,824,-167,-1200,-2247,-3273,-4255, -5175,-6025,-6810,-7532,-8174,-8696,-9032,-9116,-8941,-8549, -8010,-7364,-6659,-5951,-5248,-4517,-3757,-3033,-2414,-1960, -1680,-1500,-1322,-1118,-928,-786,-700,-615,-463,-208, 183,745,1455,2200,2855,3379,3814,4214,4597,4936, 5217,5450,5687,5962,6281,6612,6902,7113,7218,7220, 7138,6998,6815,6573,6217,5704,5031,4234,3376,2489, 1567,577,-477,-1551,-2591,-3575,-4513,-5412,-6267,-7082, -7824,-8457,-8921,-9153,-9110,-8824,-8373,-7827,-7236,-6590, -5872,-5075,-4249,-3482,-2865,-2407,-2053,-1746,-1476,-1244, -1057,-921,-832,-772,-692,-515,-157,402,1082,1761, 2368,2907,3419,3892,4290,4618,4902,5167,5436,5730, 6051,6394,6701,6917,7045,7106,7110,7071,6989,6814, 6500,6033,5428,4727,3969,3153,2256,1268,215,-848, -1875,-2847,-3794,-4734,-5647,-6519,-7347,-8100,-8690,-9033, -9103,-8938,-8617,-8206,-7724,-7118,-6363,-5520,-4698,-3963, -3328,-2788,-2350,-1998,-1683,-1380,-1127,-974,-920,-931, -895,-706,-342,150,723,1341,1959,2546,3099,3610, 4055,4417,4707,4964,5236,5548,5893,6247,6555,6787, 6942,7054,7134,7187,7173,7048,6782,6368,5837,5238, 4574,3816,2941,1960,930,-107,-1126,-2113,-3075,-4022, -4962,-5901,-6827,-7687,-8375,-8795,-8957,-8948,-8834,-8588, -8168,-7570,-6839,-6037,-5225,-4460,-3776,-3206,-2736,-2314, -1892,-1497,-1199,-1054,-1048,-1081,-1035,-854,-543,-134, 360,933,1552,2174,2754,3280,3750,4149,4460,4718, 4985,5306,5670,6023,6328,6570,6757,6925,7090,7221, 7260,7160,6942,6615,6190,5674,5070,4360,3541,2628, 1655,643,-389,-1402,-2359,-3278,-4228,-5250,-6289,-7220, -7948,-8458,-8791,-8974,-9003,-8859,-8537,-8026,-7349,-6559, -5737,-4968,-4297,-3714,-3171,-2630,-2113,-1670,-1357,-1208, -1178,-1174,-1124,-994,-749,-404,22,531,1119,1740, 2365,2951,3458,3871,4205,4492,4786,5130,5511,5865, 6137,6362,6597,6850,7079,7248,7315,7264,7110,6872, 6536,6094,5556,4926,4183,3323,2343,1305,303,-628, -1544,-2506,-3543,-4612,-5650,-6596,-7411,-8063,-8542,-8857, -9024,-9039,-8854,-8435,-7791,-7018,-6225,-5493,-4830,-4207, -3590,-2966,-2376,-1881,-1537,-1341,-1259,-1233,-1194,-1080, -880,-606,-251,189,729,1343,1982,2594,3129,3562, 3920,4246,4586,4952,5310,5629,5908,6175,6448,6736, 6997,7184,7282,7304,7237,7059,6768,6398,5977,5463, 4792,3939,2972,1992,1056,147,-796,-1802,-2852,-3920, -4977,-5970,-6854,-7597,-8198,-8669,-9016,-9194,-9130,-8780, -8188,-7473,-6753,-6078,-5423,-4757,-4067,-3385,-2749,-2202, -1800,-1562,-1439,-1367,-1299,-1210,-1065,-859,-575,-193, 314,932,1584,2201,2738,3190,3584,3959,4341,4710, 5038,5327,5612,5918,6236,6529,6786,7017,7195,7272, 7220,7075,6885,6664,6360,5902,5252,4451,3565,2658, 1754,848,-85,-1077,-2130,-3214,-4277,-5281,-6196,-7001, -7715,-8363,-8889,-9191,-9208,-8943,-8471,-7880,-7241,-6598, -5945,-5261,-4532,-3787,-3099,-2510,-2050,-1739,-1563,-1454, -1365,-1269,-1158,-1015,-804,-473,-1,602,1246,1843, 2364,2851,3324,3765,4148,4485,4811,5137,5444,5726, 6007,6328,6676,6984,7177,7239,7215,7163,7092,6947, 6691,6289,5716,4991,4170,3312,2445,1570,659,-330, -1404,-2513,-3579,-4566,-5492,-6381,-7242,-8029,-8671,-9095, -9237,-9100,-8738,-8250,-7700,-7116,-6484,-5788,-5032,-4258, -3520,-2873,-2354,-1975,-1727,-1560,-1430,-1322,-1246,-1167, -1018,-721,-273,263,825,1397,1977,2548,3052,3474, 3850,4217,4581,4903,5173,5435,5754,6140,6522,6817, 7005,7108,7163,7200,7201,7128,6941,6615,6128,5477, 4708,3903,3106,2290,1388,375,-700,-1772,-2794,-3767, -4719,-5690,-6668,-7579,-8335,-8858,-9119,-9126,-8915,-8548, -8091,-7581,-6997,-6314,-5552,-4757,-3988,-3308,-2757,-2325, -1968,-1684,-1498,-1422,-1400,-1344,-1184,-909,-543,-105, 412,1004,1608,2165,2661,3136,3600,4019,4354,4623, 4871,5163,5530,5952,6339,6630,6831,6973,7077,7161, 7215,7226,7140,6885,6440,5845,5175,4476,3739,2923, 2011,1015,-25,-1058,-2049,-3010,-3995,-5029,-6077,-7074, -7949,-8608,-8989,-9109,-9025,-8793,-8465,-8059,-7530,-6854, -6075,-5273,-4519,-3843,-3239,-2683,-2213,-1879,-1687,-1586, -1510,-1428,-1322,-1149,-849,-420,95,646,1198,1746, 2307,2851,3342,3748,4064,4328,4604,4932,5318,5733, 6131,6456,6688,6839,6959,7104,7261,7353,7304,7088, 6717,6224,5665,5057,4378,3583,2661,1663,655,-311, -1248,-2199,-3207,-4289,-5409,-6489,-7437,-8198,-8716,-8973, -9022,-8942,-8761,-8442,-7941,-7278,-6536,-5800,-5088,-4364, -3641,-2993,-2487,-2120,-1847,-1648,-1541,-1503,-1455,-1308, -1021,-636,-202,262,788,1382,2009,2602,3100,3488, 3802,4082,4368,4697,5093,5524,5922,6234,6451,6622, 6813,7041,7265,7396,7375,7198,6907,6543,6107,5576, 4933,4150,3242,2273,1327,418,-469,-1406,-2422,-3523, -4687,-5848,-6901,-7734,-8313,-8693,-8942,-9063,-9004,-8732, -8284,-7714,-7064,-6348,-5598,-4838,-4111,-3450,-2870,-2390, -2026,-1791,-1687,-1654,-1597,-1448,-1195,-888,-552,-138, 394,1013,1659,2271,2800,3207,3514,3777,4077,4451, 4891,5345,5735,6028,6239,6441,6689,6971,7221,7375, 7400,7302,7119,6873,6546,6088,5464,4697,3835,2928, 2017,1133,282,-589,-1575,-2715,-3960,-5173,-6240,-7118, -7834,-8407,-8824,-9050,-9079,-8922,-8607,-8143,-7543,-6845, -6102,-5357,-4627,-3909,-3224,-2640,-2223,-1973,-1836,-1741, -1636,-1501,-1327,-1102,-813,-429,65,669,1334,1972, 2509,2916,3213,3481,3812,4236,4706,5145,5508,5789, 6027,6271,6560,6877,7145,7298,7336,7311,7250,7126, 6883,6480,5920,5218,4396,3499,2619,1822,1070,229, -799,-1980,-3195,-4361,-5448,-6438,-7303,-8008,-8528,-8857, -9016,-9014,-8826,-8451,-7920,-7296,-6635,-5936,-5175,-4374, -3625,-3014,-2551,-2222,-2007,-1862,-1749,-1633,-1503,-1342, -1114,-790,-324,280,966,1617,2145,2532,2842,3153, 3525,3965,4429,4855,5200,5470,5734,6035,6374,6696, 6946,7107,7201,7260,7281,7235,7086,6796,6317,5627, 4797,3958,3191,2479,1727,860,-146,-1264,-2440,-3617, -4749,-5811,-6757,-7551,-8187,-8674,-8998,-9112,-9000,-8705, -8294,-7800,-7209,-6510,-5719,-4895,-4119,-3457,-2927,-2526, -2233,-2020,-1860,-1742,-1650,-1556,-1411,-1138,-680,-65, 613,1257,1780,2158,2468,2821,3252,3719,4160,4546, 4877,5190,5510,5846,6175,6473,6732,6932,7066,7160, 7256,7350,7333,7095,6610,5944,5207,4482,3793,3110, 2374,1534,581,-475,-1625,-2820,-3977,-5063,-6071,-6993, -7797,-8429,-8843,-9038,-9048,-8904,-8625,-8225,-7696,-7025, -6244,-5425,-4633,-3921,-3326,-2853,-2472,-2162,-1938,-1820, -1776,-1744,-1645,-1398,-956,-349,323,935,1418,1794, 2162,2596,3069,3508,3894,4263,4635,4990,5321,5649, 5994,6331,6602,6775,6903,7076,7311,7516,7557,7354, 6915,6331,5697,5046,4381,3705,3011,2248,1352,308, -829,-1986,-3122,-4238,-5331,-6363,-7267,-7989,-8504,-8823, -8977,-8977,-8824,-8523,-8074,-7469,-6712,-5886,-5086,-4368, -3736,-3168,-2676,-2284,-2020,-1883,-1857,-1875,-1827,-1601, -1154,-556,53,580,1031,1458,1901,2352,2795,3229, 3648,4038,4390,4730,5094,5484,5865,6173,6382,6533, 6724,7011,7335,7573,7635,7500,7181,6702,6118,5495, 4881,4274,3626,2879,2004,1014,-50,-1151,-2279,-3444, -4620,-5731,-6713,-7526,-8155,-8601,-8887,-9028,-9022,-8845, -8470,-7907,-7201,-6432,-5673,-4945,-4247,-3598,-3009,-2513, -2169,-2028,-2058,-2115,-2036,-1755,-1333,-835,-311,199, 681,1135,1580,2042,2518,2968,3361,3704,4046,4437, 4880,5321,5672,5902,6064,6259,6538,6877,7219,7496, 7640,7590,7336,6923,6417,5884,5342,4786,4159,3431, 2605,1707,737,-316,-1451,-2633,-3837,-5010,-6069,-6957, -7666,-8226,-8662,-8966,-9090,-9007,-8722,-8252,-7633,-6922, -6202,-5502,-4791,-4031,-3280,-2670,-2319,-2211,-2232,-2242, -2138,-1896,-1539,-1098,-613,-120,343,792,1270,1785, 2296,2728,3052,3351,3738,4230,4731,5142,5442,5658, 5842,6055,6342,6713,7118,7468,7672,7670,7475,7145, 6740,6298,5814,5265,4649,3967,3218,2387,1471,475, -620,-1826,-3087,-4302,-5395,-6332,-7132,-7822,-8397,-8828, -9078,-9119,-8927,-8526,-7997,-7426,-6826,-6147,-5338,-4456, -3637,-3013,-2631,-2464,-2431,-2408,-2306,-2100,-1786,-1379, -940,-519,-100,381,941,1501,1967,2316,2622,2984, 3441,3954,4441,4837,5129,5349,5541,5753,6046,6442, 6895,7298,7546,7589,7464,7234,6943,6581,6141,5620, 5034,4399,3725,2998,2178,1234,149,-1049,-2297,-3517, -4650,-5664,-6541,-7314,-8028,-8649,-9054,-9169,-9037,-8764, -8420,-8001,-7463,-6757,-5891,-4964,-4115,-3439,-2976,-2723, -2641,-2612,-2511,-2273,-1944,-1598,-1264,-897,-445,95, 663,1182,1613,1965,2300,2693,3164,3689,4195,4618, 4921,5117,5271,5475,5810,6259,6731,7134,7403,7511, 7476,7341,7131,6844,6455,5955,5383,4806,4224,3578, 2813,1925,908,-238,-1485,-2724,-3846,-4843,-5785,-6724, -7613,-8334,-8795,-8988,-8987,-8884,-8705,-8397,-7897,-7195, -6349,-5445,-4549,-3775,-3256,-2995,-2881,-2763,-2572,-2332, -2087,-1850,-1563,-1174,-683,-143,388,872,1289,1656, 2017,2417,2897,3449,3993,4423,4702,4888,5065,5298, 5625,6055,6540,6982,7294,7458,7510,7488,7380,7146, 6780,6329,5842,5326,4775,4178,3509,2695,1687,533, -667,-1832,-2925,-3989,-5066,-6137,-7109,-7862,-8368,-8691, -8886,-8961,-8896,-8678,-8286,-7680,-6847,-5874,-4922,-4148, -3616,-3283,-3044,-2830,-2612,-2414,-2241,-2047,-1772,-1386, -902,-379,133,603,1008,1359,1719,2157,2697,3274, 3799,4209,4497,4695,4876,5121,5465,5896,6351,6763, 7104,7368,7535,7588,7526,7352,7055,6636,6157,5699, 5270,4790,4167,3356,2373,1286,188,-888,-1990,-3157, -4353,-5499,-6501,-7324,-7954,-8403,-8716,-8925,-9034,-8996, -8728,-8159,-7321,-6356,-5435,-4681,-4114,-3665,-3288,-2986, -2758,-2593,-2447,-2278,-2030,-1662,-1186,-664,-174,244, 612,967,1360,1826,2380,2973,3521,3926,4181,4369, 4590,4882,5222,5595,6005,6434,6828,7146,7382,7529, 7565,7452,7181,6790,6373,6013,5684,5260,4636,3814, 2900,1962,978,-84,-1242,-2461,-3690,-4877,-5955,-6861, -7563,-8087,-8524,-8926,-9250,-9361,-9145,-8598,-7819,-6947, -6097,-5332,-4674,-4121,-3668,-3308,-3044,-2871,-2757,-2623, -2374,-1981,-1491,-994,-543,-148,188,512,901,1409, 2018,2631,3132,3504,3787,4036,4291,4573,4898,5263, 5659,6066,6471,6844,7160,7401,7509,7418,7141,6807, 6527,6301,6020,5582,4975,4257,3475,2634,1713,697, -419,-1639,-2920,-4176,-5295,-6209,-6930,-7556,-8170,-8765, -9234,-9453,-9331,-8891,-8230,-7460,-6650,-5861,-5141,-4494, -3939,-3501,-3213,-3063,-2963,-2800,-2529,-2155,-1684,-1187, -758,-427,-135,207,658,1204,1793,2367,2872,3282, 3609,3880,4132,4410,4734,5091,5450,5812,6228,6707, 7163,7463,7542,7435,7246,7060,6889,6686,6389,5960, 5417,4781,4078,3324,2506,1574,479,-771,-2097,-3367, -4470,-5376,-6157,-6920,-7702,-8436,-9011,-9336,-9341,-9025, -8489,-7840,-7126,-6355,-5554,-4812,-4199,-3743,-3428,-3234, -3121,-2984,-2708,-2279,-1785,-1336,-975,-683,-393,-40, 420,965,1541,2109,2623,3050,3378,3658,3958,4287, 4598,4862,5130,5498,6007,6569,7032,7314,7413,7391, 7309,7205,7083,6924,6682,6327,5840,5256,4635,3995, 3283,2400,1294,9,-1320,-2550,-3617,-4558,-5441,-6328, -7228,-8083,-8779,-9197,-9305,-9162,-8825,-8309,-7647,-6880, -6068,-5282,-4593,-4056,-3700,-3512,-3395,-3219,-2905,-2463, -1988,-1588,-1282,-1005,-700,-343,86,613,1216,1803, 2286,2667,3015,3388,3765,4074,4286,4472,4751,5187, 5726,6275,6732,7037,7190,7245,7240,7199,7136,7036, 6842,6495,6019,5509,5024,4525,3894,3039,1959,713, -569,-1760,-2813,-3770,-4715,-5700,-6696,-7630,-8418,-8976, -9258,-9270,-9061,-8677,-8132,-7426,-6606,-5761,-5003,-4432, -4080,-3877,-3702,-3462,-3116,-2698,-2261,-1868,-1555,-1301, -1044,-712,-250,319,900,1407,1849,2292,2767,3223, 3573,3805,3974,4169,4477,4936,5489,6035,6489,6821, 7026,7129,7193,7253,7287,7221,7000,6651,6249,5870, 5507,5089,4512,3680,2609,1415,222,-898,-1946,-2954, -3976,-5035,-6096,-7099,-7964,-8629,-9062,-9257,-9235,-9017, -8585,-7917,-7069,-6185,-5419,-4859,-4485,-4212,-3956,-3672, -3340,-2926,-300,-483,-542,-929,-1522,-1955,-1935,-1638, -1072,-117,699,758,327,-571,-1100,-121,534,-844, -1973,-516,2155,3696,5095,7075,7482,5753,4076,3978, 5342,7125,8635,9440,9578,8439,4795,1232,2714,7143, 7830,4229,1710,1633,469,-1304,-1437,-1460,-2872,-4918, -6730,-7572,-7878,-8483,-8685,-7353,-5243,-5148,-7689,-9944, -11989,-15047,-16745,-14503,-9653,-5018,-987,2213,2952,1619, 931,1878,3673,4788,4023,2570,2586,4014,4968,5748, 7739,8547,6242,3904,3841,4167,4670,7701,11274,10080, 5018,1880,2250,4282,5604,4547,2648,2019,1461,-1032, -4224,-5333,-5528,-6931,-8078,-7871,-8252,-10075,-11390,-10547, -8050,-5328,-3639,-3679,-4795,-6344,-9095,-11450,-10074,-5412, -1175,1008,2568,3423,2643,1609,1697,2199,2174,1051, -740,-1486,502,3615,4440,4836,7733,9384,6580,3512, 4723,8574,10945,10684,9060,7075,6034,6249,7036,7816, 7709,6099,4293,3535,2366,-752,-4067,-5049,-5522,-7263, -8894,-10268,-12721,-15892,-17359,-16225,-13844,-11261,-9352,-9043, -10146,-12424,-14781,-14152,-9639,-4832,-2698,-571,3926,6673, 5649,5271,6317,5137,2542,2680,5266,6408,5802,6153, 8621,11350,11703,9290,7778,9734,12095,11836,10726,11034, 10793,8436,6277,5495,4772,3700,3036,2944,2476,516, -2793,-5801,-6155,-4714,-4689,-5951,-7166,-9005,-12053,-14593, -14763,-13499,-12021,-10058,-9083,-10097,-10944,-11177,-11772,-10777, -6581,-2111,274,3074,7721,10466,9245,7489,7612,8344, 7410,4528,1811,1652,4522,7294,7444,6415,5503,4789, 5704,8709,11154,10952,9621,9054,8021,5934,4128,3044, 2486,1848,787,-584,-2230,-4193,-6501,-7904,-6784,-5590, -6973,-8615,-9218,-11761,-15686,-16642,-14429,-13018,-13322,-12797, -12128,-13218,-14548,-13838,-11128,-8195,-5638,-2266,3010,8959, 12003,11395,11371,13597,14135,10696,6542,5349,6491,7873, 8634,8178,6927,5903,5519,6310,8243,9845,9596,8141, 7395,6730,4554,2517,2225,2048,1300,771,-29,-1397, -2552,-3636,-5455,-6319,-4350,-2625,-3936,-5991,-7048,-8928, -12213,-13640,-12008,-10571,-11127,-12522,-13568,-13951,-14138,-14368, -13172,-9002,-3093,1558,4665,7982,11036,12977,14381,14714, 12205,7629,4978,6355,8688,8976,7540,5764,4959,5249, 5558,6562,8853,10043,8842,7921,8677,7756,4594,3479, 4492,3636,1109,349,894,-636,-3801,-5435,-4799,-3213, -2038,-1716,-1738,-2940,-6672,-11053,-11896,-9281,-8510,-11019, -12304,-11170,-11784,-15383,-17802,-15757,-11438,-7914,-4726,-787, 3785,8425,11950,14138,14817,12476,8219,6059,7033,7495, 5879,4789,4491,3401,2612,3184,4245,5463,7558,9331, 9073,8135,8108,7098,4868,3920,4315,3784,1820,-138, -1912,-4092,-6197,-7609,-7474,-5027,-2324,-2907,-5900,-8399, -9731,-10660,-11140,-10447,-9752,-9900,-10237,-11621,-14910,-17562, -16927,-13890,-11209,-9412,-7091,-2755,4152,10474,12873,12677, 12124,10296,7280,6377,8074,8033,5599,4392,3965,1995, 377,2048,5468,7408,7853,8344,9047,9226,8252,6550, 6335,7295,6606,4641,3982,4045,1485,-3170,-4936,-2452, 244,658,-276,-1436,-2933,-5212,-7735,-9063,-8270,-7406, -8288,-9361,-9864,-11751,-14401,-14963,-13742,-13668,-13915,-10941, -4969,1784,7971,11895,12495,11502,10708,9470,7823,7594, 8610,7808,5374,3870,2910,1875,1581,2817,5275,7877, 9857,10660,10514,10677,10569,8955,7431,7451,7572,6322, 4334,1836,-1473,-3690,-3283,-2005,-1490,-1442,-1866,-3293, -5921,-9119,-11597,-11664,-10115,-10286,-12822,-14478,-14596,-15804, -17816,-18322,-18246,-19472,-19057,-13425,-5414,1072,5647,8822, 10410,10253,8969,8091,8444,9106,8320,6303,5369,5246, 3474,1299,2318,5995,8361,8931,10372,12555,13058,11364, 9059,8365,9602,10142,8288,5682,3973,2095,-240,-985, -423,-788,-1183,-430,-636,-3564,-7199,-8714,-8909,-8888, -8965,-10237,-12018,-12331,-12069,-13267,-15733,-17832,-18997,-18862, -15937,-9860,-2603,3630,7652,8966,8646,8579,8975,8556, 7803,7746,6863,4276,1806,659,279,885,2536,4405, 6342,8937,11369,12015,11276,10236,9436,10058,11404,10662, 7875,6374,6662,5176,2193,1808,3462,3665,2406,1130, -1046,-4700,-7732,-8492,-8682,-10211,-12561,-14128,-14216,-14078, -15632,-18725,-21201,-22309,-23544,-23518,-18496,-10352,-3947,-225, 2852,5815,7320,7149,7137,8343,9642,8848,5929,3999, 3818,2689,771,1071,4019,6860,8857,11165,12306,11364, 10826,11958,13191,13538,12958,11447,9664,8166,6310,3781, 2568,3733,4905,3859,1579,-267,-2033,-3977,-5152,-6020, -7841,-10026,-11567,-12392,-12694,-13176,-14824,-18009,-21362,-23233, -22818,-19531,-13728,-7788,-2375,2499,5801,7072,7776,9373, 10640,10504,9828,8658,6659,5100,3449,382,-1649,402, 4624,7123,8016,9116,9919,9795,9924,10822,11436,11345, 11148,10475,8410,5531,3218,2654,4020,4895,3194,477, -648,-840,-2219,-4020,-4500,-5330,-8214,-11672,-13190,-12258, -11393,-13157,-16987,-20247,-21880,-23000,-22985,-19240,-12537,-7110, -3276,899,4442,6247,7687,9523,10409,10104,9741,9012, 6732,3382,438,-734,461,3360,5711,6398,7444,9602, 10752,10272,9995,10940,12104,12538,11933,9693,6612,4714, 4652,5556,5786,4319,2004,385,-550,-1591,-2625,-3301, -4958,-8555,-11389,-11411,-10542,-10957,-12540,-15110,-18629,-22096, -24441,-25126,-22947,-17726,-11987,-7537,-3120,2059,5767,6933, 8203,10833,12661,12649,11624,9595,6052,2181,530,1418, 3150,4705,6106,8263,10751,11318,9636,8804,10673,13323, 14004,12757,11208,9374,7221,5994,6361,7347,7056,4282, 1186,651,1485,733,-1398,-3155,-5363,-8252,-9443,-8585, -8312,-9963,-12497,-15756,-20119,-23780,-24842,-23793,-21384,-17823, -13431,-8677,-4005,101,2655,4345,6997,10256,12026,11502, 8915,5211,1948,157,-457,-468,587,3262,6128,7469, 7530,7339,7881,9794,12080,13273,13424,12853,10708,7751, 6707,7411,7363,5688,3456,1674,1021,1625,1543,-990, -4188,-6028,-7692,-9911,-10407,-8754,-8268,-10915,-14835,-18193, -21045,-23179,-23954,-23241,-21010,-17542,-13294,-8425,-4042,-1125, 1070,4603,9611,12748,12003,9967,8908,7428,4272,1018, -217,1258,3932,5698,6553,7728,8381,7862,8420,11548, 14506,14412,12851,11998,11007,9532,9152,9255,7748,5231, 3979,4143,4103,3189,1663,-492,-2774,-4655,-6033,-6047, -4698,-4053,-5583,-8561,-11625,-14607,-17845,-20461,-21520,-20862, -18281,-14255,-10571,-8087,-5500,-1594,3138,7324,9602,10371, 11193,11637,9655,5491,1875,130,-579,139,2543,4693, 5091,4853,5395,7093,9759,12408,13200,11787,10429,10446, 10206,8915,7761,6914,5812,4670,4090,4126,3861,2528, 0,-3006,-5269,-6268,-6514,-6223,-5670,-6227,-8448,-10659, -12480,-15573,-19942,-23030,-22717,-19837,-16988,-15348,-13468,-9417, -4597,-1366,1341,5491,9526,11123,11221,10708,8247,3600, -107,-523,1010,2612,3957,4336,3946,4503,6718,9644, 11769,12208,11368,10632,10824,11090,10276,8847,7807,6461, 4463,3689,4812,5801,4878,2111,-1451,-4446,-5901,-5940, -5490,-5301,-5533,-6047,-7066,-9485,-13962,-18656,-20649,-20316, -20109,-20126,-18837,-16065,-12934,-9686,-5925,-2115,1787,6192, 9917,11685,11576,9510,5334,1154,-193,936,1879,1561, 1418,2175,3246,5066,7859,10263,11313,11327,11208,11621, 12198,11889,10484,8934,7457,5582,4162,4985,7166,7462, 4744,996,-1418,-2397,-3787,-5776,-6182,-4634,-3845,-5658, -8643,-11313,-14437,-17993,-20044,-20329,-20294,-19897,-17933,-14904, -12237,-9895,-6685,-2252,2913,8088,11859,12509,10211,6612, 3403,1960,2228,2309,1141,79,414,1774,3764,6351, 8918,10420,11017,11439,11789,12165,12243,11258,9317,6945, 5015,4831,6478,8173,7850,6037,4664,3320,474,-2901, -4745,-4781,-3975,-3265,-3633,-5428,-8176,-11353,-14850,-18048, -19588,-19561,-19319,-18679,-16720,-14227,-12480,-10379,-6082,-84, 6056,10775,12913,12274,9830,7034,4924,3935,3340,1903, 486,746,2145,3448,4974,7559,10302,11293,10686,10558, 12149,13948,13053,9350,6359,5949,6059,5391,5724,7177, 7523,5974,3983,1883,-1239,-4327,-5292,-4536,-3918,-4024, -4631,-6127,-8899,-12529,-16014,-18408,-19690,-20373,-20317,-18964, -16982,-15937,-15149,-11991,-5949,695,6097,9474,10721,10055, 8371,6801,5576,4174,2479,1173,740,804,1305,3502, 7385,9876,9417,8849,10752,13470,13995,12277,10185,8222, 6371,5315,5251,5787,6859,7851,7503,5755,3453,829, -1984,-4046,-4752,-4829,-4889,-4767,-5248,-7045,-9883,-13513, -17362,-20102,-20717,-19844,-19060,-18923,-18997,-18430,-15861,-10435, -3306,2556,6063,7951,9124,9629,8654,6757,5641,5173, 3436,652,-202,1897,4384,5584,6854,8836,10360,11365, 12699,13779,13383,11778,10172,8892,7564,6252,5493,6104, 7651,8039,6485,4393,2289,-488,-3282,-4510,-4447,-4604, -5064,-4997,-5309,-7793,-12229,-16688,-19506,-20375,-20356,-20514, -21020,-21853,-22245,-20164,-14671,-8045,-2751,1766,6385,9320, 9347,8922,9947,10419,8327,4875,2512,2193,3122,4214, 5001,6029,7790,9424,10487,11959,13621,14123,13396,12468, 11229,9208,7180,6275,6522,7176,7594,7188,5601,3437, 1223,-998,-2755,-3777,-4312,-4272,-3617,-3358,-5173,-9158, -13676,-16843,-17710,-17411,-18169,-20522,-22246,-22039,-21072,-19390, -15226,-8895,-2953,1166,4377,7274,9316,10533,10645,8910, 6015,3710,2650,2501,2915,3413,4132,5662,7722,9283, 10292,11952,14084,15034,14334,12977,11250,9174,7671,7560, 8506,9212,8672,7248,5874,4491,2225,-744,-3050,-4088, -4227,-3195,-1761,-2567,-6439,-10638,-12672,-13745,-15577,-17612, -19014,-20410,-22146,-23270,-22371,-18777,-13428,-8628,-4906,-796, 3758,7300,9182,9900,9348,7232,4759,3277,2621,2178, 2105,2723,4087,5941,7613,9057,11000,13478,15248,15399, 14290,12659,11025,10005,9874,10048,10171,10080,9338,8250, 7299,5625,2021,-2135,-3676,-2160,-713,-1101,-2330,-3995, -6583,-9519,-11658,-13018,-14543,-16937,-20078,-23026,-24532,-23987, -21716,-18392,-14809,-11324,-7098,-1344,4083,7173,8101,8183, 7351,5334,3200,2126,1767,1275,968,1721,3564,5534, 6710,8209,11004,13588,14136,13340,12450,11197,9566,9046, 10011,10325,9266,9037,10155,9892,6804,2651,-222,-1234, -1270,-1194,-1305,-1757,-3169,-5817,-8496,-9604,-9760,-11010, -13959,-17620,-21089,-23472,-23950,-22738,-21039,-19275,-16533,-12033, -6405,-657,3819,6485,7519,7167,5958,4598,3355,2237, 1528,1419,1791,2485,3770,5836,7873,9844,12595,14957, 14694,12623,11559,11923,11618,10000,8839,9535,11345,12345, 11412,8998,6063,3292,1085,221,723,970,-249,-2281, -4284,-6080,-7216,-7225,-7649,-10403,-14793,-18492,-20746,-22271, -23372,-23608,-22617,-20561,-17322,-12342,-6233,-774,2485,4258, 5862,6407,5030,3384,2934,2578,1373,623,1172,1923, 2490,4512,8427,11945,13179,12882,12932,13502,13105,11076, 9097,9086,10502,11539,12009,12307,11251,8049,4478,2502, 2008,1904,1697,900,-816,-3028,-4574,-4805,-4732,-5834, -8184,-10936,-13608,-16400,-19281,-21256,-22178,-22892,-22850,-20447, -15817,-10572,-5546,-885,2551,4456,5453,5626,4640,3128, 2450,2552,2097,621,-602,148,3161,6655,8759,10044, 12005,14056,14459,13329,12056,10857,9736,9611,10920,12703, 13400,12366,9995,6856,4137,3105,3416,3363,1804,-634, -2339,-2982,-3473,-4063,-4365,-5247,-7727,-10644,-12813,-14997, -18085,-20965,-22258,-22305,-21579,-19005,-14258,-8997,-4591,-645, 3169,5789,6085,4668,3897,4774,5266,3141,-29,-1038, 6,1063,2056,4327,7590,10108,11621,12684,12832,11439, 9285,7816,7877,9341,11384,13015,13365,11682,8613,6405, 5873,5591,4428,2810,1164,-551,-1860,-2125,-1887,-2352, -3709,-5457,-7551,-9785,-11930,-14447,-17617,-20763,-22805,-23200, -21879,-18964,-15116,-10438,-4897,-206,1772,2052,2865,4396, 5019,4084,2368,456,-1196,-1966,-1729,-734,1087,3630, 6616,9625,11846,12280,11105,9230,7464,6876,8321,10749, 12091,11789,10743,9403,7801,6803,6640,5871,3748,1335, -284,-1163,-1576,-1431,-1303,-2121,-3823,-5633,-6903,-8169, -10925,-15178,-18827,-20634,-21889,-23441,-23140,-19082,-13080,-8225, -4999,-2233,450,2705,4470,5640,5867,4870,2893,954, -133,-735,-1012,-50,2375,5305,8301,11103,12722,11927, 9636,8079,8001,8851,10183,11657,12322,11625,10345,9362, 8729,8205,7318,5786,3915,2077,732,323,508,35, -1540,-2831,-2841,-3074,-5511,-9033,-11742,-14204,-17641,-21491, -23952,-23817,-21066,-17023,-13076,-9487,-6074,-2795,535,3470, 5220,5623,5304,4520,2874,901,-354,-1052,-1565,-1053, 1492,5307,8662,10674,11063,9732,7821,7012,7797,9327, 10612,11284,11480,11375,10903,10171,9626,9238,7829,5093, 2985,2697,2489,771,-1131,-1578,-1196,-1459,-2679,-4223, -5651,-7644,-11002,-15311,-19440,-22575,-23959,-22856,-19781,-16467, -13509,-10049,-5804,-1832,1325,4040,5761,5768,4959,4498, 3756,1920,-319,-1698,-1561,340,3616,7261,9916,10594, 9430,7735,6987,7357,8026,9010,10475,11250,10473,9707, 10229,10672,9476,7556,6460,6128,5159,2987,902,338, 829,696,-243,-921,-1276,-1958,-3459,-6257,-10680,-15824, -19757,-21728,-22294,-21578,-19564,-17125,-14680,-11367,-6829,-2339, 767,2458,3475,4209,4532,4043,2478,229,-1871,-2912, -1866,1482,5396,7694,8499,8812,8056,6315,5634,7016, 8782,9124,8690,9085,10387,11029,10089,8723,8432,8585, 7618,5687,3986,2784,1742,1151,995,423,-301,93, 1122,703,-2205,-6694,-11467,-15923,-19256,-20884,-21139,-20873, -20295,-18876,-15855,-11410,-6911,-3528,-981,1219,2798,4066, 5150,4539,1524,-1896,-3415,-2984,-1355,1605,5397,8110, 8239,6602,5584,6118,6973,6984,6904,7943,9651,10487, 10290,10076,10012,9673,9284,8693,7244,5300,3923,3028, 1645,-65,-977,-686,407,1692,2217,853,-2804,-7808, -12503,-15997,-18386,-20530,-22235,-22451,-21156,-19007,-15713,-11133, -6869,-4185,-1819,1607,4836,6122,5443,3847,1623,-1217, -3208,-2237,1677,5714,7411,7445,7692,8034,7339,6307, 6283,7126,8021,8881,9833,10376,10409,10566,10943,10800, 9784,8565,7637,6681,5240,3091,981,11,187,1182, 2936,4390,3654,558,-3119,-6688,-10557,-14525,-17899,-20620, -22642,-23051,-21189,-18080,-15166,-12491,-9190,-5145,-1269,1800, 4275,6014,5592,2442,-1186,-2510,-1253,887,3108,5429, 7390,8406,8464,7781,6702,6159,6798,7913,8660,9285, 10042,10752,11372,11675,11161,10153,9365,8563,7443,6153, 4371,1836,-203,-320,1028,2650,4011,4558,3185,-71, -3522,-6452,-9893,-14508,-19028,-21645,-22134,-21814,-21382,-19928, -16829,-13394,-10703,-7485,-2576,2301,4555,4137,2501,438, -1379,-1893,-848,888,3070,5555,7435,7900,7248,6300, 5931,6352,6861,7003,7384,8428,9381,9804,10015,9797, 8866,8007,8014,8041,6817,4465,2022,83,-837,-185, 1885,4017,4702,3834,2519,1117,-1329,-5655,-10491,-14191, -17124,-19892,-21630,-21353,-19933,-18695,-17361,-14866,-11021,-6243, -1440,1860,2956,2505,1203,-672,-2298,-2714,-1592,827, 3812,5962,6579,6369,6148,5928,5781,5979,6345,6642, 7484,9104,10339,10322,9806,9767,9992,9976,9865,9423, 7791,4709,1597,481,1544,2810,3094,3410,4644,5475, 4320,1801,-825,-4246,-9150,-14036,-17286,-18817,-19472,-19950, -20313,-19905,-18057,-14668,-10074,-5051,-1052,1090,2047,2221, 967,-1280,-2455,-1475,591,2674,4694,6341,6936,6761, 6798,7000,6636,6033,6174,7163,8309,9070,9565,9937, 9954,9762,10161,11206,11311,8886,5271,3150,2439,1669, 1029,1654,3098,4055,4208,4030,3636,2380,-569,-5137, -9937,-13527,-16059,-18021,-19627,-20999,-21857,-21084,-18184,-14102, -9757,-5318,-1391,790,964,-4,-1430,-2570,-2465,-918, 1071,2662,3946,5226,6246,6451,5929,5458,5504,5668, 5861,6745,8325,9047,8187,7647,9140,11163,11613,10736, 9620,8088,5748,3466,2068,1708,1915,2167,2640,3776, 5076,5441,4550,2475,-1091,-5620,-9412,-11749,-14156,-17216, -19751,-20930,-21209,-20524,-18097,-13921,-9056,-4757,-1759,-327, -513,-1602,-2416,-2229,-1361,-489,503,2271,4341,5504, 5925,6492,6640,5732,5131,6258,8060,8672,8090,7717, 8511,10021,11087,11384,11685,11888,10769,8217,5812,4405, 3259,2190,1803,2225,3189,4634,5902,5757,3933,1216, -1808,-5005,-8232,-11287,-14292,-17206,-19621,-21209,-21743,-20714, -17735,-13214,-8314,-4431,-2481,-1923,-1617,-1615,-2209,-2436, -1538,-396,322,1649,4005,5802,5826,4844,4337,4978, 6243,6962,6884,6717,6824,7063,7728,9196,10836,11746, 11897,11379,9798,7656,6019,4796,3120,1453,1148,2538, 4533,6011,6597,6047,4290,1650,-1409,-4432,-7452,-10781, -14267,-17394,-20243,-22883,-23810,-21544,-17227,-12998,-9298,-5859, -3704,-3441,-3803,-3552,-3132,-3144,-3207,-2285,148,2952, 4237,3940,3749,4444,5145,5492,6126,6802,6818,6528, 6588,7165,8315,9986,11525,12125,11788,11203,10393,9007, 7034,4748,2587,1430,1912,3567,5414,6599,6698,5932, 4544,2139,-1272,-4373,-6625,-9552,-14023,-18506,-21525,-23191, -23312,-20927,-16484,-11913,-8576,-6533,-5047,-3589,-2708,-3145, -4029,-3716,-2106,-257,1466,2894,3526,3624,4120,5057, 5619,5780,6232,6566,6004,5471,6242,7995,9523,10404, 11052,11777,12314,12112,10949,9217,6912,4128,2229,2371, 3590,4382,5218,6812,7645,6357,3939,1783,-304,-2979, -6334,-10148,-14273,-18707,-22651,-24337,-22633,-18889,-15420,-12484, -9201,-6029,-4183,-3747,-3820,-3834,-3552,-2435,-764,590, 1560,2508,3366,3952,4681,5788,6766,7115,6713,5936, 5707,6539,7780,8771,9655,10441,10881,11576,12798,12941, 10933,8266,6265,4388,2600,2187,3594,5475,6633,7015, 6936,6373,4896,2468,-12,-2104,-5152,-10245,-15881,-20078, -22341,-23048,-21988,-19237,-15773,-12275,-8864,-6238,-5364,-5606, -5447,-4615,-3844,-3138,-1965,-376,885,1428,1883,3169, 4924,5844,5881,5948,5696,4759,4635,6216,7777,8011, 8226,9740,11482,12126,11941,11549,10662,8619,5537,2945, 2316,3002,3741,4670,6329,7473,6720,5040,4152,3615, 1834,-1516,-5818,-10848,-15747,-19511,-21792,-22623,-21662,-18859, -15064,-11527,-9049,-7784,-7217,-6742,-6356,-5880,-4691,-3060, -2004,-1454,-593,517,1630,3194,5078,5917,5299,4588, 4654,5050,5319,5607,6224,7229,8390,9480,10747,12251, 12955,11818,9538,7428,5507,3453,2486,3458,5220,6351, 6628,6412,6079,6037,6186,5308,2674,-1096,-5244,-9790, -14454,-18597,-21296,-21596,-19745,-17117,-14272,-11175,-8794,-8068, -8016,-7192,-6035,-5273,-4242,-2777,-1982,-1990,-1405,553, 2865,4224,4433,4429,4902,5315,5017,4702,5285,6024, 5955,6139,7976,10531,12013,12517,12744,12188,10139,7189, 4668,3537,3982,5128,5854,5941,5919,6113,6727,7327, 6926,5088,2585,-523,-4993,-10432,-15180,-18670,-21073,-21521, -19703,-16932,-14291,-11844,-9924,-9065,-8755,-7954,-6488,-4894, -3940,-3808,-3614,-2359,-367,1169,2225,3503,4511,4544, 4388,4901,5436,5106,4548,4724,5515,6749,8494,10413, 12130,13443,13597,11986,9179,6461,4878,4695,5215,5301, 5070,5528,6492,6869,7019,7613,7783,6375,3705,212, -4483,-10243,-15436,-18686,-20119,-20076,-18666,-16099,-13273,-11415, -10838,-10235,-8423,-6365,-5581,-5366,-4400,-3290,-2860,-2038, 38,2112,2948,3209,3841,4730,5266,5177,4758,4567, 4684,4805,5213,6553,8718,11061,13217,14309,13150,10474, 8302,7173,6182,5311,5115,5201,5098,5229,5892,6707, 7306,7673,7578,6414,3723,-513,-5673,-10833,-15592,-19347, -20852,-19596,-17245,-15682,-14729,-13231,-11476,-10113,-8746,-7149, -6048,-5691,-5438,-4641,-3223,-1513,-111,736,1544,2597, 3455,3915,4060,3926,3737,3835,3752,3152,3427,5843, 9159,11386,12302,12362,11265,9181,7326,6398,5777,5035, 4474,4304,4415,4599,4925,5938,7569,8527,7746,5867, 3710,85,-5825,-11929,-15924,-17820,-18581,-18091,-16494,-14953, -14103,-13245,-11606,-9430,-7687,-6934,-6582,-5738,-4549,-3606, -2570,-1200,-172,596,1849,3174,3667,3791,4409,4853, 4121,2733,1929,2306,3951,6581,9266,11126,11834,11414, 10293,9108,7957,6658,5724,5660,5544,4589,3937,4766, 6280,7342,8233,9361,9628,7862,4255,-517,-5832,-10717, -14363,-16333,-16720,-16198,-15639,-15065,-13799,-12059,-10451,-9090, -8054,-7512,-6820,-5491,-4296,-3844,-3147,-1566,-93,586, 1174,2358,3837,4967,5340,4760,3424,2056,1580,2747, 5419,8111,9576,10389,11307,11432,9977,8348,7923,7745, 6587,5215,4711,4666,4407,4448,5563,7682,9716,10558, 9996,8060,4249,-1260,-6680,-10526,-13216,-15329,-16449,-16576, -16298,-15442,-13731,-12012,-11075,-10373,-9243,-7954,-7023,-6406, -5678,-4567,-3144,-2012,-1437,-669,850,2692,4332,5463, 5344,3522,1429,898,1777,3028,4902,7635,9895,10645, 10500,10284,9976,9340,8437,7570,6977,6404,5338,4270, 4140,4923,6330,8512,10927,11967,10845,7943,3548,-1614, -6129,-9443,-12430,-15258,-16875,-16864,-16011,-15086,-14041,-12803, -11505,-10324,-9517,-8999,-8211,-7066,-5985,-4815,-3470,-2702, -2542,-1377,1561,4347,5205,4785,4108,2879,1213,368, 1267,3390,5564,7228,8563,9787,10412,10071,9543,9449, 9110,8076,7026,6151,4915,3742,3728,4987,7057,9698, 12107,12608,10522,6932,3005,-954,-5056,-9133,-12614,-14816, -15779,-16234,-16212,-15244,-13688,-12503,-11630,-10518,-9680,-9449, -8714,-6946,-5486,-5267,-5203,-4138,-2126,251,2536,4360, 5311,4927,3219,1383,663,887,1582,3080,5242,7107, 8243,9081,9660,9685,9485,9440,9052,8022,6855,5712, 4101,2659,2964,5286,8435,11009,12172,11717,10024,7272, 3370,-1074,-5120,-8670,-11917,-14208,-15120,-15597,-15983,-15194, -13313,-11947,-11780,-11588,-10360,-8599,-7259,-6695,-6377,-5800, -5147,-4166,-1938,1306,3903,4915,4954,4395,2926,1230, 557,1050,2044,3510,5450,7177,8234,8971,9587,9777, 9521,9242,9021,8413,6881,4463,2422,2326,4043,6234, 8470,10812,12266,11699,9624,6939,3323,-1227,-5370,-8377, -10949,-13592,-15437,-15670,-14608,-13586,-13370,-13222,-12271,-10909, -9783,-8556,-7146,-6447,-6691,-6609,-5297,-3233,-800,1847, 4097,5209,5119,4123,2551,1184,918,1705,2871,4214, 5648,6986,8127,8869,9025,9156,9891,10483,9638,7628, 5587,3775,2400,2536,4413,6835,9076,11131,12538,12277, 10037,6577,3003,-349,-4097,-8366,-11866,-13633,-14364,-14825, -14773,-14230,-13958,-13858,-12956,-11185,-9608,-8702,-8196,-8005, -7950,-7262,-5560,-3263,-650,2069,4251,5166,4731,3409, 2047,1463,1556,1809,2565,4469,6456,7159,7233,7936, 9083,9926,10439,10455,9354,7132,4759,3212,2754,3101, 4260,6662,9895,12141,12232,11045,9648,7395,3634,-726, -4680,-8282,-11385,-13268,-13967,-14305,-14673,-14944,-14914,-14133, -12502,-10799,-9811,-9367,-9120,-9075,-8950,-8097,-6308,-3771, -632,2202,3633,3968,4036,3493,2046,888,1117,2289, 3583,4857,5894,6419,6839,7824,9442,10892,11156,10048, 8452,6947,5053,2912,1974,3104,5366,7558,9656,11376, 11930,11252,9806,7367,3573,-838,-4831,-8066,-10426,-11974, -13099,-14077,-14748,-14861,-14324,-13040,-11488,-10395,-9688,-8969, -8831,-9580,-9831,-8168,-5398,-2942,-583,1936,3790,4227, 3552,2531,1651,1232,1530,2663,4117,4828,4684,5082, 6754,8556,9482,10102,10705,10252,8189,5639,3689,2544, 2380,3420,5363,7523,9610,11299,12094,11766,10131,7006, 2929,-1043,-4346,-7030,-9126,-10973,-12893,-14178,-14298,-13955, -13701,-12811,-11023,-9588,-9420,-9890,-10096,-9910,-9374,-8080, -5692,-2750,-20,2012,3383,3904,3105,1611,1080,1943, 2763,2785,2968,3802,4575,5134,6278,8114,9789,10759, 10877,9763,7558,5131,3358,2623,3006,4164,5778,7941, 10409,12226,12886,12451,10496,6861,2899,-154,-2902,-6133, -9058,-10859,-12178,-13667,-14704,-14435,-13085,-11658,-10789,-10299, -10000,-10193,-10789,-10802,-9589,-7765,-5700,-2843,518,2712, 3001,2501,2307,2298,2169,2228,2593,2965,3249,3461, 3856,4868,6627,8608,10281,11200,10793,9023,6848,5019, 3557,2756,3048,4122,5681,8130,11164,13148,13080,11703, 9744,6999,3427,-261,-3313,-5703,-8022,-10559,-12713,-13784, -14036,-13858,-12903,-11418,-10645,-10963,-11290,-11124,-11207,-11558, -10799,-8321,-5060,-2235,-137,1262,1969,2149,2007,1791, 1819,2007,2066,2123,2300,2395,2848,4418,6803,8863, 10168,10782,10234,8429,6465,5114,3956,2764,2484,3978, 6825,9617,11523,12708,13243,12384,9797,6526,3609,699, -2622,-5653,-7921,-10136,-12522,-13851,-13618,-12960,-12577,-12071, -11314,-10955,-11382,-12279,-12803,-12147,-10280,-7878,-5245,-2530, -320,905,1505,1873,1859,1700,1962,2356,2215,1753, 1639,1975,2942,4993,7707,9759,10397,10128,9607,8759, 7129,4852,3036,2550,3158,4413,6649,9695,12086,12946, 12733,11783,9631,6540,3682,1299,-1502,-4885,-8023,-10289, -11763,-12723,-13218,-13041,-12117,-11095,-10846,-11357,-12058,-12747, -12980,-11989,-9856,-7450,-4994,-2408,-384,583,1069,1673, 2093,2208,2375,2538,2131,1193,711,1606,3771,6083, 7691,9033,10397,10924,9936,8190,6630,4977,3186,2446, 3339,5055,7088,9649,12095,13202,12619,11071,9215,7150, 4603,1387,-1978,-4800,-7278,-9725,-11650,-12471,-12466,-11980, -11093,-10464,-10863,-11911,-12713,-13128,-13069,-11958,-9687,-7030, -4635,-2517,-825,274,836,1330,2206,3138,3042,1708, 475,479,1241,2084,3552,5931,8082,9400,10304,10712, 9868,7976,6093,4610,3361,2735,3307,5201,7973,10598, 12107,12635,12548,11571,9499,6973,4361,1408,-1765,-4615, -7299,-9971,-11835,-12217,-11780,-11361,-11053,-10952,-11496,-12679, -13782,-14029,-13295,-11924,-10055,-7459,-4593,-2647,-1924,-1063, 746,2349,2698,2388,2013,1248,253,52,921,2202, 3729,5760,7949,9659,10331,9969,9030,7831,6060,3804, 2311,2516,3888,5718,7998,10389,11917,12454,12342,11337, 9307,6930,4628,1974,-1317,-4732,-7652,-9812,-11128,-11481, -11001,-10250,-10121,-10918,-11999,-12769,-13567,-14286,-13712,-11410, -8771,-6984,-5589,-3857,-2074,-473,1099,2330,2706,2258, 1446,721,264,97,326,1503,3680,5998,7664,9000, 10089,10189,9037,7241,5187,3184,2127,2609,4107,6010, 8274,10652,12283,12687,12156,11199,9892,7977,5247,2108, -998,-4261,-7533,-9599,-9934,-9745,-10010,-10001,-9565,-10059, -11927,-13770,-14365,-13865,-12687,-11044,-9233,-7510,-5920,-4240, -2178,49,1600,2049,2063,2104,1527,214,-669,-372, 542,1697,3444,5748,7894,9459,10322,10087,8633,6494, 4425,2929,2252,2535,3923,6330,8875,10652,11730,12445, 12340,11140,9683,8283,5858,2040,-1810,-4667,-6901,-8724, -9589,-9312,-8640,-8464,-9292,-10914,-12583,-13747,-14208,-13669, -12202,-10713,-9682,-8298,-6023,-3661,-1858,-169,1473,2362, 2272,1649,772,-197,-785,-663,91,1424,3391,5890, 8359,9962,10292,9612,8381,6526,4162,2410,2215,3102, 4457,6530,9143,10938,11467,11705,12125,11917,10489,8077, 5181,2027,-1320,-4636,-7188,-8289,-8317,-8137,-8047,-8271, -9545,-11672,-13270,-13668,-13565,-13396,-12692,-11282,-9647,-7968, -6050,-3867,-1659,242,1581,2111,1897,1179,283,-396, -783,-950,-400,1400,3858,6055,8022,9744,10320,9324, 7594,5843,3947,2263,1880,3057,4991,6860,8411,9825, 11213,12195,12292,11573,10374,8400,5384,1856,-1478,-4485, -6769,-7597,-7240,-7054,-7751,-8954,-10306,-11670,-12870,-13652, -13931,-13610,-12724,-11566,-10223,-8538,-6476,-4111,-1582,349, 1185,1390,1507,1072,-134,-1142,-1290,-987,-324,1410, 4130,6691,8476,9696,10225,9545,7686,5307,3415,2713, 2964,3599,4730,6592,8599,10127,11449,12548,12752,11978, 10689,8731,5545,1538,-2092,-4539,-5796,-6274,-6505,-6961, -7770,-8887,-10270,-11660,-12853,-13758,-14058,-13567,-12825,-12207, -11017,-8744,-6154,-4003,-1914,142,1337,1399,1012,497, -378,-1410,-1902,-1402,28,1927,3963,6269,8786,10361, 10113,8630,6920,5169,3560,2799,3111,3882,4953,6643, 8678,10292,11379,12271,12905,12763,11276,8328,4599,1037, -1867,-3938,-5079,-5668,-6284,-6964,-7611,-8705,-10428,-11913, -12586,-13054,-13733,-13941,-13269,-12207,-10907,-8932,-6348,-3807, -1737,-195,911,1516,1236,64,-1064,-1448,-1472,-1381, -457,1756,4551,7055,8998,10019,9629,8099,6363,4942, 3793,3004,2991,3952,5535,7015,8154,9508,11369,12977, 13616,13127,11198,7862,4152,1188,-1209,-3399,-4806,-5181, -5559,-6649,-7944,-8980,-10024,-11232,-12302,-13056,-13512,-13736, -13643,-12784,-10890,-8615,-6572,-4416,-1802,251,895,792, 642,155,-873,-1813,-2101,-1639,-297,2059,5006,7638, 9136,9388,8885,7898,6314,4505,3401,3339,3751,4335, 5291,6498,7780,9583,11973,13667,13656,12449,10502,7681, 4213,1039,-1252,-2771,-3848,-4774,-5625,-6425,-7489,-8888, -10067,-10776,-11654,-13042,-14062,-14018,-13416,-12691,-11300,-8917, -6250,-4011,-2113,-561,405,727,493,-168,-1177,-2267, -2786,-1949,223,2815,5135,7250,8894,9282,8438,7109, 5655,4258,3558,3733,3985,3994,4571,6184,8345,10453, 12276,13496,13692,12574,10156,7076,4156,1572,-751,-2401, -3212,-4019,-5362,-6630,-7331,-8085,-9400,-10861,-12006,-12938, -13745,-14195,-13933,-12764,-10899,-8710,-6380,-4106,-2206,-861, 219,943,569,-853,-2239,-2848,-2740,-1808,127,2649, 5138,7369,8889,8938,7749,6368,5431,4756,4150,3623, 3375,3712,4728,6233,8262,10701,12818,13789,13602,12546, 10373,7212,4132,1894,169,-1550,-3153,-4363,-5256,-6132, -7136,-8245,-9351,-10616,-12102,-13445,-14261,-14591,-14325,-13040, -10936,-8878,-7058,-4924,-2559,-715,318,580,-136,-1457, -2552,-3026,-2944,-2028,67,2967,5803,7731,8361,8031, 7415,6705,5781,4855,4235,3733,3258,3472,4796,6724, 8739,10953,13157,14402,13995,12280,9965,7489,5018,2603, 494,-1140,-2539,-3905,-5002,-5758,-6618,-7852,-9029,-10265, -11988,-13740,-14598,-14467,-13775,-12625,-11037,-9221,-7117,-4598, -2138,-448,237,189,-423,-1486,-2730,-3683,-3538,-1764, 1015,3687,5860,7442,8044,7692,7165,6800,6137,4956, 3802,3179,3071,3415,4444,6429,9118,11700,13356,13908, 13547,12190,9952,7510,5276,3052,920,-707,-2005,-3441, -4737,-5464,-6007,-7081,-8666,-10533,-12462,-13917,-14460,-14272, -13779,-12945,-11512,-9384,-6820,-4364,-2433,-911,174,230, -985,-2645,-3758,-4025,-3356,-1433,1350,3866,5532,6587, 7370,7705,7336,6448,5534,4748,3797,2742,2355,3101, 4658,6696,9281,11804,13217,13392,12893,11733,9699,7295, 5188,3311,1356,-595,-2285,-3557,-4313,-4788,-5567,-7025, -8965,-11005,-12710,-13729,-14305,-14683,-14449,-13118,-11180,-9253, -7113,-4539,-2123,-561,28,-333,-1628,-3303,-4355,-4081, -2614,-593,1447,3492,5484,6869,7326,7348,7305,6793, 5706,4547,3519,2595,2299,3210,5111,7338,9588,11664, 13076,13432,12777,11359,9567,7788,5891,3704,1458,-497, -2010,-2930,-3340,-3962,-5406,-7247,-8905,-10571,-12479,-14032, -14718,-14729,-14312,-13305,-11605,-9401,-6920,-4363,-1963,-279, -40,-1253,-2819,-3757,-4081,-3910,-2802,-662,1640,3602, 5357,6774,7445,7550,7474,7031,5898,4362,2980,2236, 2407,3463,5247,7607,10129,12055,12974,13080,12607,11566, 10143,8510,6363,3663,1247,-225,-1112,-2037,-3059,-4055, -5224,-6827,-8867,-10968,-12739,-14025,-14862,-15060,-14479,-13452, -12159,-9983,-6767,-3648,-1693,-892,-1007,-1987,-3356,-4271, -4429,-3888,-2535,-485,1706,3605,5153,6383,7282,7808, 7683,6775,5405,4031,2800,2003,2158,3456,5514,7919, 10229,11785,12389,12569,12651,12119,10564,8324,5977,3823, 1958,405,-774,-1588,-2375,-3519,-4936,-6518,-8573,-10883, -12627,-13498,-14148,-14850,-14942,-13940,-12014,-9362,-6250,-3472, -1752,-1179,-1537,-2539,-3708,-4523,-4628,-3820,-2183,-298, 1444,3180,4947,6361,7259,7742,7589,6611,5170,3741, 2463,1710,2124,3848,6090,8078,9654,10988,12180,12963, 12866,11882,10371,8426,6075,3853,2190,806,-495,-1341, -1829,-2792,-4616,-6763,-8753,-10479,-11993,-13335,-14608,-15522, -15492,-14247,-11967,-9021,-6009,-3586,-2071,-1525,-2013,-3168, -4190,-4587,-4357,-3541,-2153,-458,1322,3193,5029,6453, 7363,7861,7702,6634,4863,3012,1851,1837,2800,4201, 5791,7605,9386,10855,12089,12969,12830,11627,10061,8375, 6244,3915,2092,952,166,-549,-1473,-2906,-4743,-6548, -8196,-9829,-11574,-13453,-15136,-15911,-15458,-14014,-11752,-8787, -5750,-3534,-2414,-2211,-2780,-3719,-4377,-4526,-4291,-3651, -2388,-578,1393,3216,4826,6389,7819,8437,7620,5918, 4271,2953,2130,2212,3180,4390,5644,7319,9381,11150, 12260,12803,12725,11873,10330,8275,5985,4066,2753,1787, 855,-209,-1606,-3233,-4716,-6050,-7708,-9817,-11970,-13955, -15560,-16293,-15762,-14099,-11581,-8557,-5750,-3869,-3014,-2919, -3308,-3898,-4463,-4823,-4600,-3620,-2257,-911,688,2839, 5134,6965,8108,8290,7207,5421,4009,3200,2688,2515, 2998,4129,5731,7583,9427,11072,12398,13187,13069,11989, 10197,7987,5947,4580,3599,2382,947,-338,-1496,-2762, -4103,-5550,-7367,-9626,-12009,-14230,-15868,-16488,-15848,-13944, -11112,-8145,-5866,-4332,-3263,-2990,-3650,-4453,-4641,-4488, -4277,-3763,-2740,-1361,477,2944,5549,7423,8064,7634, 6609,5453,4374,3320,2580,2544,3151,4146,5527,7315, 9258,11125,12744,13596,13143,11561,9690,7984,6532,5220, 3842,2405,1084,-88,-1188,-2277,-3455,-5016,-7072,-9484, -12140,-14743,-16418,-16571,-15450,-13590,-11076,-8199,-5793,-4375, -3777,-3788,-4201,-4555,-4563,-4485,-4465,-4259,-3441,-1682, 927,3688,5799,7047,7555,7338,6498,5373,4286,3271, 2624,2651,3172,3907,5092,7039,9481,11680,13041,13270, 12538,11250,9774,8302,6934,5557,4048,2591,1436,356, -857,-1961,-2893,-4365,-6866,-9923,-12701,-14950,-16413,-16652, -15529,-13375,-10665,-8011,-6016,-4869,-4438,-4449,-4456,-4297, -4380,-4932,-5333,-4840,-3366,-1237,1270,3747,5696,6923, 7441,7232,6396,5278,4286,3558,3098,2754,2685,3404, 5224,7732,10166,12005,12991,12976,12272,11343,10206,8784, 7322,5978,4538,2937,1560,580,-218,-1112,-2389,-4357, -7019,-10060,-13011,-15445,-16885,-16922,-15562,-13194,-10463,-8147, -6701,-5811,-5047,-4440,-4196,-4465,-5175,-5890,-5922,-4981, -3287,-1129,1280,3673,5690,6967,7315,6917,6265,5616, 4799,3781,2851,2212,2255,3454,5733,8237,10272,11790, 12731,12769,12028,11109,10236,9180,7782,6151,4504,3071, 2033,1274,551,-403,-1924,-4197,-6994,-10099,-13284,-15917, -17161,-16671,-14950,-12738,-10589,-8795,-7345,-6083,-4994,-4370, -4442,-5138,-5976,-6373,-6075,-5172,-3647,-1334,1409,3813, 5430,6329,6645,6567,6360,5933,4874,3351,2140,1800, 2403,3857,5967,8305,10392,11851,12471,12374,12004,11505, 10670,9436,7926,6241,4611,3388,2647,2022,1284,310, -1208,-3597,-6818,-10505,-13891,-16057,-16589,-15795,-14357,-12688, -10981,-9248,-7462,-5906,-4973,-4757,-4982,-5496,-6223,-6701, -6433,-5366,-3553,-1033,1609,3558,4713,5619,6537,7088, 6886,5898,4435,3011,1998,1723,2470,4209,6433,8495, 10213,11473,12115,12226,12138,11826,10887,9346,7634,6105, 4765,3635,2816,2333,1963,1173,-629,-3567,-7242,-11028, -14040,-15559,-15743,-15292,-14412,-12856,-10839,-8906,-7246,-5894, -5045,-4821,-5049,-5634,-6506,-7087,-6694,-5196,-3051,-836, 1121,2806,4405,5872,6866,7217,6897,5789,4056,2459, 1631,1747,2760,4529,6613,8489,9954,11089,11922,12395, 12366,11756,10645,9302,7795,6172,4689,3664,3195,3145, 3020,1951,-591,-4171,-7867,-11129,-13721,-15272,-15756,-15498, -14586,-12966,-10945,-9055,-7434,-5997,-4976,-4759,-5425,-6538, -7327,-7203,-6296,-4961,-3257,-1281,663,2464,4283,6022, 7103,7231,6550,5246,3530,2067,1492,2001,3271,4858, 6472,8128,9777,11095,11887,12259,12248,11709,10685,9414, 7810,5941,4486,4046,4334,4473,3779,1956,-915,-4375, -7826,-10930,-13479,-15150,-15783,-15468,-14403,-12926,-11281,-9384, -7305,-5672,-5119,-5542,-6350,-7097,-7430,-7084,-6138,-4882, -3424,-1712,251,2392,4481,6189,7158,7241,6344,4733, 3091,2177,2064,2545,3527,4903,6477,8153,9765,10977, 11670,12089,12358,12122,11004,9225,7240,5632,4924,5093, 5435,5193,4002,1897,-887,-4152,-7642,-10895,-13339,-14722, -15304,-15309,-14590,-13085,-11076,-8903,-6961,-5743,-5551,-6114, -6817,-7211,-7194,-6841,-6170,-5138,-3712,-2025,-69,2335, 4792,6518,7113,6756,5697,4274,3004,2355,2244,2517, 3361,4843,6588,8165,9450,10528,11555,12446,12766,12097, 10467,8448,6728,5792,5707,5972,5972,5444,4292,2210, -856,-4388,-7751,-10633,-12951,-14659,-15657,-15750,-14828,-13083, -10881,-8657,-6993,-6271,-6303,-6622,-6973,-7249,-7227,-6858, -6286,-5528,-4307,-2432,-12,2679,5053,6451,6703,6197, 5276,4118,3003,2269,2099,2582,3675,5087,6473,7768, 9142,10684,12191,13123,12920,11608,9831,8222,6990,6299, 6247,6573,6722,6161,4652,2210,-882,-4124,-7231,-10060, -12597,-14749,-16015,-15938,-14573,-12589,-10575,-8746,-7371,-6818, -6883,-7027,-7061,-7104,-7114,-6998,-6723,-6076,-4646,-2338, 406,2982,4901,6034,6436,6169,5247,3937,2820,2298, 2432,3100,4037,4988,6028,7512,9509,11469,12735,13018, 12424,11208,9659,8102,6990,6639,6899,7231,7167,6391, 4693,2193,-649,-3524,-6591,-9814,-12720,-14850,-15840,-15574, -14192,-12265,-10378,-8839,-7834,-7387,-7261,-7119,-6952,-6980, -7259,-7528,-7364,-6367,-4511,-2123,387,2724,4617,5863, 6303,5874,4718,3393,2650,2636,2904,3148,3531,4395, 5903,7851,9904,11675,12794,12964,12181,10820,9278,7846, 7043,7125,7682,7914,7437,6377,4802,2634,-46,-3070, -6386,-9828,-12895,-14981,-15677,-15112,-13712,-12003,-10392,-9196, -8485,-7945,-7338,-6855,-6867,-7348,-7893,-8089,-7653,-6418, -4494,-2189,275,2734,4830,6029,6001,5084,4076,3480, 3195,2916,2659,2731,3281,4346,6036,8192,10280,11858, 12752,12777,11793,10161,8625,7713,7512,7749,8014,7991, 7520,6570,5086,3034,378,-2865,-6526,-10141,-13099,-14943, -15384,-14615,-13249,-11878,-10718,-9713,-8759,-7830,-7096,-6842, -7186,-7831,-8303,-8280,-7724,-6626,-4843,-2302,634,3190, 4748,5323,5218,4725,4142,3727,3373,2863,2387,2444, 3179,4450,6196,8377,10597,12203,12740,12182,10934,9529, 8430,7934,7968,8141,8144,7947,7619,6940,5600,3526, 748,-2761,-6773,-10546,-13250,-14536,-14630,-14047,-13168,-12143, -11031,-9844,-8558,-7481,-7013,-7177,-7561,-7867,-8209,-8546, -8288,-6881,-4511,-1710,1002,3149,4396,4841,4893,4784, 4477,3931,3248,2634,2295,2350,2971,4369,6537,9009, 11081,12294,12458,11665,10413,9325,8646,8293,8180,8227, 8291,8263,8078,7549,6359,4223,1028,-2964,-7076,-10512, -12748,-13799,-14011,-13836,-13376,-12369,-10889,-9469,-8460,-7741, -7218,-7105,-7479,-8142,-8838,-9187,-8603,-6793,-4131,-1340, 1011,2764,3945,4613,4811,4651,4333,3896,3214,2413, 1867,1905,2744,4518,7010,9525,11279,11975,11829,11144, 10190,9310,8742,8430,8220,8085,8176,8506,8738,8339, 6957,4442,823,-3371,-7151,-9925,-11889,-13353,-14098,-13944, -13198,-12191,-11051,-9840,-8712,-7804,-7215,-7174,-7814,-8899, -9799,-9770,-8507,-6423,-4020,-1557,694,2446,3591,4251, 4558,4586,4343,3808,2955,1948,1278,1512,2866,5059, 7527,9676,11084,11590,11351,10743,10076,9454,8857,8331, 7992,7918,8270,9062,9645,9092,7069,3996,446,-3221, -6680,-9578,-11727,-13132,-13764,-13659,-13063,-12254,-11308,-10097, -8643,-7436,-7066,-7606,-8619,-9609,-10129,-9778,-8381,-6298, -3999,-1705,429,2143,3263,3968,4497,4808,4567,3647, 2409,1385,1030,1637,3273,5623,7946,9666,10743,11231, 11127,10659,10191,9719,8941,7980,7542,8071,9200,10107, 10123,9049,6957,4020,557,-3000,-6338,-9268,-11473,-12726, -13214,-13338,-13222,-12595,-11332,-9726,-8293,-7463,-7444,-8170, -9215,-10060,-10298,-9728,-8305,-6228,-3881,-1662,145,1616, 2945,4095,4841,5024,4508,3300,1864,935,1030,2078, 3845,6070,8199,9669,10449,10878,11154,11126,10544,9474, 8369,7756,7938,8835,9954,10614,10320,9074,7058,4257, 751,-2948,-6249,-8857,-10819,-12223,-13148,-13546,-13337,-12441, -10962,-9318,-8109,-7686,-7959,-8662,-9574,-10371,-10523,-9661, -7990,-6011,-4001,-2033,-296,1265,2874,4380,5171,4936, 3965,2662,1437,746,1092,2522,4491,6345,7805,9091, 10318,11215,11484,11116,10182,8943,7955,7812,8469,9411, 10176,10592,10439,9351,7128,4010,517,-2823,-5810,-8352, -10434,-12075,-13283,-13745,-13229,-12012,-10587,-9219,-8164,-7817, -8300,-9264,-10174,-10689,-10518,-9497,-7865,-6110,-4457,-2704, -754,1295,3148,4482,5038,4660,3414,1858,847,834, 1659,2934,4371,5874,7413,9023,10505,11418,11383,10539, 9407,8460,7953,7988,8558,9495,10429,10928,10624,9308, 6946,3861,623,-2352,-5146,-7900,-10368,-12165,-13230,-13547, -12962,-11642,-10139,-8881,-8064,-7942,-8618,-9744,-10611,-10731, -10143,-9198,-8061,-6602,-4862,-2974,-949,1316,3449,4729, 4768,3850,2556,1422,888,1116,1874,2840,3981,5553, 7578,9559,10820,11173,10875,10147,9180,8297,7910,8118, 8839,9969,11085,11518,10847,9184,6909,4232,1271,-1771, -4759,-7620,-10192,-12129,-13176,-13303,-12619,-11315,-9724,-8431, -7991,-8435,-9304,-10095,-10550,-10556,-10056,-9181,-8173,-6993, -5394,-3226,-660,1853,3727,4504,4157,3131,2106,1537, 1336,1314,1599,2481,4013,5967,8029,9789,10784,10928, 10546,9884,8966,8062,7753,8330,9474,10676,11490,11595, 10802,9202,7072,4610,1828,-1291,-4495,-7419,-9937,-11986, -13210,-13140,-12007,-10518,-9270,-8506,-8367,-8880,-9748,-10409, -10531,-10255,-9869,-9434,-8755,-7558,-5693,-3130,-213,2216, 3469,3641,3317,2844,2229,1580,1118,946,1230,2281, 4090,6234,8168,9634,10551,10793,10315,9330,8302,7736, 7881,8698,9901,11034,11589,11436,10669,9317,7310,4774, 1995,-925,-4067,-7291,-10141,-12095,-12883,-12539,-11446,-10086, -8982,-8573,-8842,-9434,-9990,-10300,-10305,-10147,-10068,-10053, -9567,-7991,-5438,-2585,-31,1842,2872,3195,3152,2859, 2223,1347,673,590,1190,2445,4224,6318,8339,9829, 10557,10543,9840,8705,7746,7583,8200,9144,10109,11026, 11632,11553,10676,9234,7430,5241,2508,-692,-4067,-7352, -10180,-12018,-12494,-11813,-10700,-9676,-8958,-8822,-9253,-9765, -9879,-9779,-9921,-10383,-10779,-10639,-9665,-7674,-4999,-2344, -191,1373,2510,3196,3249,2662,1795,1035,543,462, 1047,2442,4398,6539,8567,10019,10486,9993,9038,8197, 7757,7782,8323,9344,10531,11385,11669,11459,10797,9606, 7880,5692,2950,-452,-4182,-7604,-10198,-11659,-11888,-11116, -10066,-9435,-9325,-9471,-9597,-9574,-9495,-9676,-10280,-11045, -11401,-10836,-9350,-7277,-4983,-2663,-489,1249,2423,3045, 3055,2431,1538,827,419,333,838,2330,4680,7075, 8843,9754,9948,9523,8642,7826,7592,7981,8747,9711, 10757,11517,11685,11396,10922,10094,8518,6175,3189,-377, -4250,-7755,-10114,-11046,-10924,-10429,-10015,-9826,-9806,-9728, -9440,-9142,-9312,-10105,-11041,-11548,-11451,-10730,-9351,-7383, -5110,-2835,-671,1172,2399,2854,2733,2293,1622,723, -38,-31,1020,2851,5054,7188,8833,9598,9505,8942, 8225,7643,7566,8145,9122,10070,10800,11309,11576,11548, 11208,10490,9115,6748,3341,-684,-4555,-7613,-9457,-10106, -10111,-10152,-10323,-10259,-9815,-9288,-9009,-9129,-9671,-10539, -11397,-11782,-11534,-10757,-9493,-7623,-5197,-2721,-675,883, 2109,2854,2810,2066,1110,239,-328,-123,1164,3216, 5406,7280,8659,9301,9076,8346,7699,7519,7778,8367, 9225,10114,10736,11032,11275,11623,11723,11121,9543,6824, 3047,-1124,-4650,-7013,-8420,-9360,-10041,-10407,-10395,-10057, -9514,-8980,-8842,-9326,-10178,-10937,-11455,-11815,-11836,-11103, -9514,-7467,-5295,-3061,-889,918,2162,2744,2599,1754, 599,-324,-587,-13,1375,3389,5653,7515,8553,8805, 8528,7976,7482,7433,7923,8680,9409,9966,10368,10733, 11312,12085,12489,11800,9653,6341,2571,-1011,-3981,-6215, -7834,-9106,-10104,-10564,-10284,-9597,-9115,-8981,-9061,-9426, -10233,-11195,-11878,-12133,-11919,-11109,-9638,-7693,-5528,-3259, -961,1063,2334,2623,2183,1339,285,-639,-819,92, 1815,3848,5908,7593,8433,8421,8008,7630,7488,7673, 8192,8879,9354,9517,9783,10609,11961,13047,13051,11803, 9407,6144,2620,-493,-3089,-5487,-7652,-9177,-9878,-10004, -9832,-9412,-8917,-8663,-8873,-9538,-10443,-11337,-12007,-12271, -11957,-11096,-9826,-8102,-5769,-3153,-797,1035,2178,2442, 1845,775,-293,-947,-824,250,2087,4221,6155,7508, 8087,7999,7593,7363,7601,8183,8636,8716,8714,9030, 9844,11176,12733,13682,13227,11486,9068,6305,3255,98, -2826,-5346,-7393,-8855,-9627,-9766,-9519,-9134,-8750,-8583, -8915,-9806,-10828,-11576,-12070,-12395,-12272,-11460,-10094,-8281, -5922,-3211,-756,987,1898,2003,1372,245,-824,-1243, -750,510,2316,4418,6292,7299,7408,7260,7349,7657, 8015,8337,8428,8174,8061,8769,10336,12101,13299,13575, 12952,11533,9327,6518,3469,390,-2592,-5216,-7199,-8533, -9355,-9599,-9270,-8770,-8560,-8753,-9267,-10026,-10932,-11777, -12396,-12683,-12526,-11793,-10404,-8361,-5843,-3153,-753,983, 1753,1556,784,-193,-1102,-1466,-783,896,2932,4724, 6011,6663,6811,6949,7437,8078,8364,8084,7584,7461, 8050,9260,10809,12349,13359,13522,12915,11653,9585,6751, 3635,618,-2275,-4957,-7084,-8383,-8984,-9085,-8851,-8526, -8423,-8712,-9322,-10090,-10939,-11876,-12706,-13048,-12748,-11957, -10593,-8390,-5579,-2849,-718,806,1583,1331,250,-940, -1598,-1436,-365,1437,3388,4822,5518,5890,6506,7384, 8040,8183,7932,7485,7108,7271,8221,9656,11113,12401, 13351,13645,13058,11642,9581,6996,4044,919,-2114,-4743, -6747,-8034,-8600,-8601,-8405,-8315,-8364,-8571,-9131,-10015, -10979,-11884,-12735,-13284,-13125,-12142,-10476,-8228,-5548,-2781, -503,867,1228,683,-455,-1618,-2004,-1195,414,2043, 3254,4125,4878,5718,6742,7698,8101,7816,7276,6913, 6910,7356,8334,9760,11339,12662,13454,13605,13086,11807, 9774,7217,4312,1137,-2007,-4570,-6334,-7504,-8195,-8331, -8123,-8069,-8343,-8688,-9125,-9888,-11018,-12210,-13076,-13443, -13264,-12387,-10616,-8135,-5408,-2709,-391,886,768,-321, -1440,-1923,-1587,-554,771,1910,2739,3565,4671,5986, 7108,7677,7694,7395,6983,6624,6660,7350,8578,10016, 11456,12720,13487,13592,13133,12064,10144,7448,4382,1263, -1698,-4216,-6017,-7100,-7679,-7964,-8073,-8048,-8094,-8443, -9120,-10032,-11123,-12348,-13348,-13728,-13417,-12491,-10791,-8161, -5054,-2223,-336,243,-291,-1245,-1824,-1683,-1006,-195, 529,1296,2301,3538,4841,6117,7154,7613,7442,7007, 6641,6415,6554,7380,8765,10211,11455,12570,13475,13833, 13396,12187,10287,7681,4521,1285,-1504,-3728,-5505,-6812, -7479,-7679,-7798,-7899,-7950,-8226,-9032,-10193,-11343,-12384, -13318,-13963,-13916,-12825,-10627,-7600,-4427,-1951,-742,-764, -1310,-1630,-1552,-1287,-912,-371,266,1042,2162,3610, 5049,6224,7070,7423,7193,6628,6191,6187,6674,7552, 8729,10087,11455,12623,13460,13885,13636,12407,10287,7624, 4659,1584,-1198,-3418,-5137,-6441,-7225,-7490,-7498,-7524, -7744,-8260,-9064,-10045,-11137,-12366,-13596,-14445,-14353,-12816, -9990,-6753,-4083,-2395,-1608,-1509,-1663,-1618,-1374,-1181, -1008,-622,69,1000,2174,3630,5202,6445,7036,7031, 6740,6379,6061,6035,6599,7601,8703,9894,11298,12705, 13664,13993,13666,12501,10420,7695,4770,1914,-749,-3116, -4991,-6193,-6787,-7059,-7223,-7370,-7641,-8133,-8780,-9619, -10949,-12779,-14428,-15045,-14267,-12185,-9303,-6431,-4278,-3016, -2339,-1951,-1710,-1571,-1479,-1344,-1110,-808,-270,776, 2297,3893,5285,6343,6858,6743,6330,6039,5957,6057, 6472,7315,8483,9853,11332,12748,13809,14235,13783,12451, 10445,7916,5049,2112,-579,-2904,-4703,-5795,-6321,-6745, -7220,-7498,-7521,-7658,-8310,-9650,-11590,-13691,-15160,-15270, -13919,-11593,-9019,-6708,-4848,-3495,-2716,-2308,-1910,-1563, -1517,-1620,-1485,-1035,-336,789,2401,4124,5447,6207, 6512,6488,6253,5975,5833,5992,6474,7258,8385,9926, 11627,13036,13957,14337,13942,12621,10634,8177,5285,2193, -532,-2568,-4049,-5222,-6184,-6878,-7210,-7149,-6962,-7125, -8127,-10093,-12499,-14424,-15241,-14887,-13513,-11346,-8914,-6849, -5299,-4030,-3012,-2355,-1962,-1733,-1702,-1816,-1789,-1339, -365,1054,2654,4132,5324,6093,6355,6276,6130,5965, 5765,5792,6290,7219,8484,10097,11817,13180,13988,14322, 14086,12966,10895,8155,5185,2383,-8,-1970,-3624,-5085, -6313,-6971,-6817,-6239,-6102,-6900,-8486,-10622,-12921,-14648, -15156,-14475,-13027,-11155,-9061,-7099,-5520,-4284,-3262,-2426, -1925,-1881,-2114,-2232,-2011,-1429,-398,1122,2763,4097, 5090,5836,6205,6152,5904,5672,5485,5502,6002,7100, 8595,10174,11624,12936,14049,14631,14297,12930,10742,8021, 5231,2808,683,-1508,-3700,-5402,-6295,-6397,-5968,-5487, -5631,-6834,-8869,-11210,-13275,-14569,-14864,-14213,-12784,-10968, -9140,-7431,-5814,-4336,-3204,-2491,-2160,-2199,-2474,-2584, -2225,-1413,-263,1184,2704,4001,4970,5661,6035,6033, 5673,5196,4991,5285,6010,7051,8412,9953,11483,12968, 14294,14908,14282,12555,10409,8174,5840,3426,936,-1585, -3838,-5365,-5915,-5612,-4999,-4801,-5448,-6979,-9133,-11505, -13456,-14443,-14475,-13832,-12636,-11013,-9260,-7559,-5906,-4345, -3152,-2565,-2471,-2626,-2785,-2740,-2319,-1419,-134,1249, 2561,3833,5006,5768,5931,5683,5290,4910,4817,5214, 5971,6847,8035,9745,11747,13533,14617,14721,13901,12447, 10675,8675,6428,3852,961,-1836,-3926,-4998,-5195,-4834, -4347,-4395,-5418,-7319,-9575,-11731,-13407,-14262,-14291,-13696, -12642,-11206,-9492,-7637,-5871,-4415,-3370,-2829,-2808,-3051, -3126,-2814,-2250,-1445,-263,1172,2578,3898,5050,5704, 5666,5278,4994,4908,4930,5069,5489,6437,8017,10049, 12098,13685,14458,14311,13566,12533,11166,9213,6669,3791, 802,-1889,-3736,-4475,-4373,-3974,-3778,-4220,-5524,-7591, -9895,-11848,-13207,-13994,-14197,-13730,-12653,-11232,-9594,-7708, -5816,-4412,-3649,-3302,-3211,-3285,-3263,-2929,-2347,-1542, -394,1122,2744,4097,4903,5186,5217,5213,5108,4836, 4586,4610,5090,6287,8246,10439,12228,13363,13920,13976, 13605,12835,11527,9489,6725,3579,563,-1824,-3281,-3782, -3569,-3192,-3310,-4229,-5775,-7718,-9858,-11769,-13075,-13776, -14028,-13743,-12771,-11253,-9463,-7599,-5880,-4618,-3956,-3683, -3536,-3415,-3306,-3154,-2716,-1715,-218,1358,2723,3807, 4553,4930,5142,5284,5104,4533,4032,4152,5045,6595, 8534,10466,11990,12993,13581,13898,13909,13329,11864,9576, 6676,3449,435,-1681,-2664,-2887,-2796,-2715,-3065,-4180, -5894,-7816,-9725,-11475,-12884,-13783,-14095,-13755,-12753,-11203, -9328,-7478,-6016,-5010,-4265,-3717,-3544,-3672,-3726,-3454, -2739,-1545,-41,1374,2500,3442,4338,5081,5453,5287, 4664,3993,3697,4074,5200,6892,8691,10245,11557,12684, 13515,14037,14240,13779,12175,9526,6383,3239,543,-1256, -2018,-2109,-2071,-2299,-2995,-4205,-5824,-7658,-9554,-11301, -12751,-13805,-14230,-13754,-12511,-10959,-9342,-7704,-6225,-5076, -4273,-3842,-3863,-4110,-4126,-3579,-2548,-1332,-156,979, 2182,3413,4491,5239,5458,4990,4083,3472,3562,4258, 5421,6973,8603,9996,11191,12399,13578,14452,14682,13996, 12150,9355,6128,3088,753,-630,-1267,-1516,-1666,-2043, -2943,-4282,-5785,-7440,-9390,-11393,-12975,-13889,-14079,-13561, -12489,-11100,-9555,-7912,-6347,-5115,-4423,-4315,-4496,-4507, -4144,-3459,-2546,-1524,-500,638,2084,3630,4756,5203, 5034,4424,3642,3220,3509,4405,5624,6948,8251,9536, 10900,12345,13727,14798,15059,14108,11907,9004,5956,3167, 1085,-71,-581,-961,-1419,-1997,-2825,-4004,-5536,-7396, -9483,-11465,-12951,-13753,-13881,-13474,-12629,-11306,-9536,-7702, -6262,-5344,-4892,-4839,-4854,-4560,-3989,-3400,-2810,-1962, -761,702,2321,3835,4822,5051,4613,3872,3294,3222, 3678,4507,5582,6741,7848,9091,10716,12563,14160,15146, 15213,14075,11696,8675,5783,3410,1690,566,-142,-632, -1068,-1613,-2432,-3635,-5337,-7446,-9565,-11321,-12644,-13572, -13923,-13610,-12652,-11138,-9229,-7437,-6279,-5730,-5412,-5121, -4818,-4473,-4124,-3730,-3147,-2220,-871,849,2651,4030, 4677,4671,4216,3556,3143,3312,3908,4610,5346,6258, 7419,8903,10765,12842,14638,15580,15280,13754,11325,8529, 5913,3760,2183,1041,217,-262,-525,-1009,-2064,-3580, -5372,-7357,-9358,-11109,-12521,-13628,-14118,-13703,-12417,-10667, -8962,-7658,-6764,-6149,-5699,-5321,-4926,-4604,-4467,-4274, -3607,-2352,-732,1064,2812,4033,4411,4138,3675,3333, 3274,3514,3957,4498,5087,5834,7023,8850,11115,13331, 14995,15686,15123,13400,11079,8628,6255,4067,2382,1330, 723,343,-30,-737,-1991,-3610,-5344,-7131,-9034,-11021, -12779,-13891,-14059,-13373,-12085,-10503,-9038,-7989,-7245,-6515, -5816,-5349,-5123,-5024,-4942,-4678,-3909,-2458,-535,1379, 2854,3675,3893,3693,3356,3201,3384,3703,3912,4115, 4566,5406,6814,8957,11524,13752,15081,15410,14780,13255, 11132,8727,6333,4228,2686,1771,1302,910,246,-781, -1999,-3308,-4889,-6869,-9048,-11170,-12919,-13887,-13814,-12931, -11749,-10532,-9360,-8275,-7330,-6524,-5856,-5401,-5264,-5422, -5497,-5031,-3875,-2212,-308,1483,2748,3295,3382,3351, 3317,3360,3549,3725,3673,3579,3943,5049,6905,9283, 11746,13750,14944,15205,14564,13144,11116,8649,6231,4395, 3249,2467,1774,1107,373,-542,-1625,-2890,-4563,-6768, -9207,-11382,-12865,-13499,-13376,-12680,-11656,-10565,-9521,-8455, -7315,-6315,-5746,-5607,-5703,-5884,-5850,-5162,-3716,-1886, -96,1416,2452,2917,3040,3190,3459,3694,3723,3472, 3132,3096,3680,5031,7100,9541,11822,13612,14817,15203, 14537,12916,10780,8524,6470,4876,3749,2872,2032,1237, 555,-111,-1064,-2581,-4656,-7011,-9347,-11381,-12740,-13196, -13018,-12551,-11828,-10825,-9667,-8465,-7276,-6312,-5882,-5989, -6274,-6384,-6037,-5041,-3469,-1662,-17,1190,1931,2414, 2879,3356,3727,3859,3636,3085,2615,2780,3705,5215, 7178,9496,11844,13774,14952,15146,14310,12665,10636,8633, 6908,5426,4094,2975,2176,1621,1061,348,-709,-2397, -4714,-7186,-9392,-11163,-12374,-12899,-12885,-12579,-11993,-11011, -9696,-8306,-7149,-6431,-6231,-6437,-6747,-6766,-6127,-4816, -3165,-1599,-285,724,1440,2099,2903,3653,3951,3711, 3183,2663,2403,2642,3520,5046,7119,9536,11956,13924, 14964,14846,13832,12408,10791,8985,7187,5609,4250,3151, 2459,2115,1714,901,-455,-2379,-4735,-7142,-9236,-10839, -11932,-12600,-12885,-12713,-12017,-10885,-9517,-8112,-6993,-6499, -6639,-7010,-7189,-6916,-6018,-4593,-3016,-1737,-780,127, 1159,2250,3177,3722,3807,3474,2895,2366,2174,2451, 3254,4809,7163,9838,12168,13789,14548,14392,13525,12310, 10894,9201,7333,5633,4309,3430,2956,2666,2220,1279, -324,-2469,-4783,-6953,-8880,-10519,-11748,-12528,-12925,-12813, -12024,-10679,-9175,-7901,-7071,-6835,-7138,-7551,-7541,-6863, -5665,-4373,-3231,-2200,-1163,-54,1159,2385,3309,3679, 3621,3344,2862,2221,1799,2048,3115,4974,7430,10022, 12183,13579,14192,14142,13556,12495,11012,9225,7362,5720, 4498,3820,3568,3282,2562,1330,-379,-2468,-4685,-6747, -8572,-10238,-11712,-12753,-13154,-12853,-11895,-10463,-8924,-7782, -7362,-7542,-7834,-7846,-7455,-6666,-5588,-4535,-3643,-2663, -1389,5,1282,2372,3238,3730,3759,3346,2622,1858, 1460,1852,3174,5279,7730,10056,11996,13384,14103,14163, 13685,12679,11087,9130,7241,5806,4896,4406,4132,3720, 2825,1386,-422,-2381,-4362,-6357,-8332,-10155,-11732,-12901, -13333,-12785,-11469,-9958,-8727,-8019,-7884,-8120,-8227,-7896, -7262,-6573,-5833,-4977,-3972,-2794,-1489,-145,1177,2385, 3335,3844,3784,3133,2128,1319,1186,1896,3364,5453, 7822,10012,11783,13130,13997,14220,13703,12507,10813,8936, 7231,6002,5346,5035,4656,3944,2895,1494,-262,-2173, -4029,-5940,-8057,-10196,-11958,-13006,-13141,-12322,-10914,-9567, -8749,-8465,-8438,-8404,-8194,-7827,-7349,-6762,-6052,-5196, -4162,-2957,-1683,-371,1052,2478,3510,3838,3474,2654, 1652,954,1012,1949,3537,5514,7655,9764,11645,13083, 13946,14158,13596,12240,10430,8725,7393,6431,5825,5479, 5026,4157,2932,1545,4,-1704,-3584,-5708,-8069,-10390, -12165,-12943,-12653,-11656,-10517,-9637,-9087,-8791,-8636,-8478, -8208,-7877,-7488,-6916,-6141,-5284,-4398,-3321,-1952,-380, 1241,2677,3608,3767,3154,2144,1243,830,1061,1969, 3507,5460,7516,9580,11590,13225,14089,14082,13323,11950, 10250,8688,7573,6853,6345,5865,5209,4257,3067,1784, 441,-1125,-3161,-5703,-8384,-10624,-12008,-12436,-12058,-11237, -10404,-9787,-9307,-8909,-8674,-8556,-8377,-8011,-7490,-6912, -6306,-5599,-4713,-3582,-2110,-296,1553,2913,3517,3429, 2773,1785,950,721,1130,2018,3380,5261,7451,9680, 11718,13289,14092,13964,13037,11632,10144,8879,7962,7330, 6811,6171,5269,4240,3288,2341,1048,-783,-3175,-5914, -8530,-10477,-11518,-11787,-11566,-11043,-10386,-9754,-9301,-9051, -8890,-8685,-8404,-8028,-7503,-6935,-6484,-5991,-5095,-3713, -2021,-164,1621,2864,3251,2923,2225,1454,870,680, 988,1830,3199,5059,7288,9642,11741,13172,13745,13487, 12558,11254,10003,9091,8426,7740,6951,6107,5263,4514, 3850,2982,1491,-736,-3427,-6113,-8412,-10127,-11188,-11544, -11340,-10886,-10402,-9889,-9467,-9282,-9175,-8865,-8372,-7913, -7558,-7221,-6853,-6320,-5357,-3824,-1890,65,1666,2624, 2899,2617,1979,1277,781,611,798,1542,2998,5014, 7310,9656,11736,13079,13437,12959,12045,11063,10205,9468, 8711,7819,6851,6005,5472,5153,4590,3395,1570,-733, -3364,-5981,-8173,-9770,-10803,-11232,-11078,-10624,-10210,-9924, -9687,-9436,-9125,-8703,-8228,-7830,-7596,-7495,-7301,-6654, -5386,-3648,-1694,183,1644,2437,2624,2412,1919,1253, 659,396,592,1380,2890,5034,7522,9915,11760,12767, 12938,12502,11800,11149,10549,9737,8640,7566,6796,6301, 5982,5681,5007,3621,1611,-748,-3272,-5799,-8000,-9597, -10508,-10821,-10741,-10504,-10242,-10007,-9807,-9535,-9055,-8465, -8054,-7915,-7913,-7878,-7634,-6842,-5363,-3470,-1545,139, 1453,2245,2482,2256,1757,1142,549,149,261,1173, 2912,5222,7774,10066,11568,12191,12322,12235,11928,11371, 10593,9574,8427,7467,6932,6702,6485,6042,5166,3733, 1752,-664,-3291,-5771,-7802,-9263,-10131,-10455,-10456,-10421, -10388,-10223,-9894,-9454,-8908,-8365,-8086,-8142,-8319,-8297, -7842,-6834,-5315,-3492,-1599,59,1281,2017,2326,2196, 1679,976,289,-190,-74,1061,3165,5636,7936,9786, 11049,11747,12118,12271,12090,11460,10467,9333,8333,7653, 7270,7052,6840,6417,5479,3919,1860,-584,-3215,-5657, -7561,-8858,-9675,-10131,-10364,-10501,-10533,-10352,-9878,-9220, -8628,-8326,-8345,-8508,-8651,-8571,-8022,-6877,-5289,-3523, -1723,-97,1122,1863,2245,2211,1637,664,-263,-648, -135,1336,3484,5772,7778,9374,10605,11560,12214,12400, 12034,11269,10296,9249,8350,7804,7570,7457,7265,6797, 5803,4144,1924,-612,-3158,-5419,-7207,-8466,-9288,-9884, -10404,-10719,-10651,-10245,-9656,-9000,-8493,-8374,-8609,-8887, -8972,-8765,-8104,-6899,-5266,-3515,-1855,-336,982,1961, 2399,2135,1241,111,-732,-826,52,1699,3659,5596, 7423,9099,10489,11513,12151,12295,11877,11043,10078,9156, 8409,7952,7817,7856,7742,7171,6009,4266,1999,-596, -3074,-5097,-6674,-7959,-8982,-9776,-10412,-10738,-10577,-10010, -9341,-8809,-8518,-8541,-8827,-9170,-9273,-8907,-8017,-6767, -5337,-3754,-2040,-333,1130,2126,2385,1776,623,-428, -891,-617,326,1776,3544,5410,7224,8920,10398,11483, 12050,12097,11700,10919,9917,8998,8417,8171,8133,8206, 8136,7520,6157,4193,1902,-506,-2767,-4652,-6203,-7578, -8806,-9786,-10414,-10599,-10332,-9764,-9114,-8616,-8491,-8767, -9182,-9418,-9319,-8840,-8006,-6904,-5606,-4032,-2125,-145, 1391,2099,1937,1152,142,-646,-896,-513,411,1703, 3316,5191,7082,8761,10195,11333,11944,11904,11390,10627, 9725,8870,8351,8275,8465,8625,8450,7655,6153,4113, 1850,-338,-2331,-4164,-5896,-7450,-8738,-9752,-10413,-10529, -10094,-9420,-8879,-8644,-8746,-9102,-9454,-9537,-9276,-8809, -8213,-7340,-5926,-3979,-1841,49,1343,1804,1449,645, -155,-689,-849,-506,390,1690,3250,5059,6968,8727, 10176,11248,11804,11766,11238,10423,9545,8849,8543,8646, 8953,9121,8756,7695,6082,4167,2084,-19,-1981,-3793, -5564,-7274,-8742,-9802,-10335,-10273,-9760,-9148,-8804,-8850, -9130,-9372,-9438,-9421,-9350,-9127,-8599,-7608,-5966,-3755, -1548,118,1088,1385,1066,356,-346,-752,-803,-444, 378,1623,3195,5015,6885,8643,10161,11236,11721,11631, 11098,10268,9400,8894,8923,9248,9490,9419,8866,7746, 6141,4272,2338,396,-1528,-3446,-5347,-7171,-8746,-9783, -10082,-9800,-9368,-9091,-9000,-9046,-9168,-9264,-9308,-9425, -9623,-9573,-8935,-7637,-5796,-3605,-1525,14,850,1016, 685,113,-442,-808,-866,-508,297,1488,3027,4865, 6767,8515,10046,11158,11606,11350,10657,9863,9249,9007, 9185,9550,9770,9579,8880,7724,6207,4438,2621,842, -1022,-3125,-5322,-7243,-8640,-9411,-9587,-9398,-9209,-9159, -9118,-9005,-8943,-9054,-9355,-9736,-10001,-9863,-9081,-7609, -5638,-3487,-1589,-223,541,695,381,-121,-572,-897, -983,-638,195,1393,2856,4629,6626,8535,10064,10983, 11245,10915,10219,9511,9125,9147,9418,9730,9906,9678, 8856,7614,6220,4747,3113,1275,-804,-3083,-5327,-7135, -8289,-8878,-9138,-9248,-9258,-9132,-8912,-8744,-8769,-9032, -9516,-10057,-10327,-10011,-9012,-7450,-5502,-3430,-1652,-445, 209,394,179,-284,-754,-1017,-988,-641,51,1153, 2677,4556,6609,8539,10022,10757,10810,10457,9906,9348, 9095,9309,9758,10070,10053,9614,8759,7668,6518,5247, 3636,1580,-785,-3143,-5173,-6738,-7871,-8628,-9062,-9261, -9268,-9055,-8715,-8541,-8736,-9231,-9836,-10368,-10570,-10149, -8980,-7299,-5418,-3519,-1825,-598,24,111,-96,-416, -777,-1047,-1065,-774,-172,901,2568,4650,6766,8565, 9883,10545,10538,10098,9589,9275,9316,9674,10087,10257, 10050,9503,8800,8058,7138,5765,3872,1643,-693,-2937, -4862,-6372,-7574,-8507,-9081,-9239,-9073,-8772,-8505,-8450, -8775,-9464,-10254,-10758,-10741,-10152,-8995,-7327,-5388,-3513, -1953,-841,-246,-152,-319,-545,-810,-1114,-1290,-1090, -390,840,2596,4708,6856,8621,9764,10208,10084,9668, 9305,9273,9609,10015,10169,10057,9838,9554,9134,8498, 7498,5976,3940,1676,-533,-2592,-4467,-6097,-7390,-8326, -8892,-9037,-8770,-8341,-8146,-8366,-8909,-9652,-10430,-10937, -10850,-10127,-8878,-7207,-5299,-3492,-2080,-1143,-593,-354, -376,-614,-993,-1366,-1537,-1324,-577,785,2652,4770, 6849,8508,9449,9627,9385,9192,9242,9468,9737,9923, 9941,9849,9776,9716,9465,8777,7558,5923,3996,1873, -291,-2314,-4148,-5842,-7286,-8257,-8684,-8668,-8379,-8050, -7982,-8336,-9007,-9818,-10570,-11027,-10915,-10119,-8727,-7002, -5239,-3658,-2349,-1370,-757,-463,-443,-694,-1162,-1612, -1771,-1508,-726,711,2742,4976,6913,8211,8843,9002, 8985,9058,9301,9575,9685,9651,9682,9831,9958,9919, 9632,8928,7661,5955,4080,2129,87,-1983,-3956,-5728, -7166,-8090,-8418,-8291,-7992,-7798,-7890,-8306,-9039,-9977, -10820,-11178,-10874,-9968,-8585,-6941,-5283,-3810,-2548,-1504, -804,-515,-565,-836,-1273,-1767,-2055,-1794,-769,956, 3063,5145,6813,7827,8302,8608,8932,9188,9331,9427, 9501,9544,9665,9933,10188,10200,9810,8980,7722,6138, 4360,2446,409,-1714,-3797,-5621,-6965,-7752,-8037,-7954, -7675,-7506,-7718,-8336,-9225,-10203,-10989,-11237,-10783,-9796, -8489,-7007,-5432,-3923,-2648,-1683,-995,-591,-574,-968, -1577,-2136,-2374,-1933,-614,1341,3353,5049,6382,7361, 7997,8443,8846,9150,9269,9257,9282,9448,9749,10105, 10340,10324,9890,8986,7755,6331,4695,2744,571,-1596, -3622,-5414,-6773,-7510,-7686,-7547,-7326,-7274,-7634,-8446, -9491,-10436,-11004,-11088,-10677,-9764,-8444,-6977,-5550,-4182, -2898,-1838,-1073,-617,-636,-1236,-2092,-2663,-2596,-1788, -336,1469,3250,4748,5949,6917,7699,8310,8720,8926, 8989,9016,9114,9364,9786,10204,10380,10249,9817,9047, 7932,6535,4886,2941,754,-1469,-3520,-5268,-6569,-7267, -7354,-7091,-6917,-7124,-7709,-8566,-9582,-10522,-11051,-11020, -10532,-9650,-8395,-6993,-5675,-4418,-3085,-1786,-881,-606, -963,-1740,-2534,-2903,-2592,-1594,-125,1485,3020,4416, 5654,6690,7512,8167,8571,8678,8665,8778,9070,9438, 9819,10164,10349,10259,9849,9142,8152,6823,5115,3125, 984,-1265,-3459,-5229,-6318,-6792,-6854,-6715,-6677,-7012, -7727,-8661,-9658,-10548,-11047,-10969,-10380,-9481,-8428,-7259, -5939,-4446,-2906,-1598,-854,-824,-1398,-2226,-2846,-2935, -2432,-1424,-59,1432,2846,4175,5451,6593,7457,8003, 8299,8438,8546,8732,9067,9502,9895,10170,10337,10346, 10034,9339,8371,7146,5503,3408,1098,-1207,-3335,-4996, -5955,-6321,-6390,-6387,-6499,-6908,-7704,-8772,-9828,-10587, -10868,-10712,-10269,-9595,-8674,-7511,-6063,-4348,-2671,-1497, -1051,-1245,-1851,-2582,-3032,-2919,-2264,-1281,-114,1199, 2622,4037,5328,6439,7312,7853,8110,8314,8622,8957, 9261,9638,10097,10448,10564,10491,10236,9696,8808,7530, 5799,3611,1183,-1170,-3172,-4657,-5594,-6067,-6203,-6226, -6470,-7142,-8122,-9157,-10037,-10593,-10770,-10676,-10429,-9962, -9070,-7725,-6070,-4309,-2751,-1743,-1460,-1785,-2361,-2845, -3033,-2841,-2249,-1336,-227,1020,2431,3907,5206,6209, 6996,7594,7970,8226,8558,8983,9400,9813,10229,10543, 10665,10617,10443,10044,9231,7843,5909,3661,1318,-981, -2992,-4431,-5254,-5660,-5860,-6069,-6565,-7469,-8529,-9410, -10030,-10457,-10764,-10900,-10752,-10247,-9297,-7822,-5989,-4194, -2876,-2158,-1975,-2226,-2690,-3008,-3018,-2785,-2317,-1510, -345,1012,2409,3769,5012,6022,6767,7293,7676,8019, 8407,8848,9324,9790,10137,10349,10545,10727,10716,10298, 9393,7979,6053,3774,1379,-887,-2784,-4083,-4764,-5062, -5344,-5850,-6619,-7523,-8424,-9207,-9818,-10283,-10728,-11080, -11046,-10408,-9211,-7598,-5784,-4110,-2965,-2449,-2360,-2508, -2789,-3047,-3109,-2900,-2382,-1533,-378,976,2384,3706, 4873,5855,6591,7057,7414,7871,8422,8897,9266,9621, 9988,10331,10652,10907,10949,10568,9636,8172,6230,3890, 1386,-839,-2451,-3483,-4155,-4624,-5081,-5743,-6634,-7510, -8222,-8875,-9581,-10285,-10890,-11272,-11207,-10461,-9052,-7311, -5613,-4222,-3253,-2712,-2567,-2711,-2964,-3145,-3194,-3018, -2473,-1542,-385,903,2295,3666,4799,5613,6239,6791, 7321,7845,8339,8772,9134,9461,9845,10311,10745,11026, 11090,10836,9969,8353,6186,3793,1438,-589,-2027,-2926, -3608,-4289,-4998,-5739,-6517,-7262,-7930,-8611,-9417,-10332, -11129,-11481,-11185,-10244,-8828,-7189,-5613,-4349,-3486,-2956, -2755,-2888,-3163,-3332,-3304,-3091,-2603,-1709,-462,923, 2269,3485,4496,5272,5916,6557,7203,7736,8114,8477, 8919,9333,9680,10103,10657,11148,11319,11009,10039,8305, 6016,3617,1500,-198,-1492,-2474,-3295,-4083,-4900,-5699, -6356,-6899,-7550,-8449,-9499,-10502,-11247,-11496,-11061,-9996, -8593,-7117,-5694,-4456,-3590,-3159,-3045,-3111,-3260,-3436, -3511,-3295,-2687,-1721,-472,900,2175,3224,4122,4978, 5766,6411,6979,7534,7998,8355,8698,9073,9490,10028, 10702,11334,11594,11178,9951,8071,5875,3679,1744,223, -957,-2024,-3094,-4046,-4819,-5465,-6021,-6565,-7310,-8383, -9612,-10651,-11255,-11353,-10900,-9888,-8479,-6988,-5670,-4600, -3797,-3320,-3182,-3253,-3396,-3588,-3702,-3440,-2652,-1563, -416,769,1979,3067,3968,4789,5594,6328,6941,7478, 7934,8282,8526,8809,9331,10155,11041,11673,11819,11297, 9940,7946,5824,3891,2197,700,-619,-1827,-2973,-3957, -4662,-5125,-5580,-6265,-7265,-8446,-9629,-10666,-11309,-11331, -10739,-9713,-8412,-6999,-5726,-4732,-3981,-3449,-3243,-3397, -3706,-3903,-3828,-3414,-2639,-1616,-475,698,1837,2882, 3817,4653,5443,6248,6996,7545,7846,8045,8295,8711, 9413,10419,11457,12101,12057,11287,9857,7980,6019,4220, 2625,1102,-427,-1834,-2933,-3721,-4339,-4862,-5393,-6153, -7276,-8591,-9811,-10821,-11427,-11386,-10685,-9623,-8448,-7214, -5954,-4845,-4047,-3627,-3546,-3706,-3968,-4129,-3983,-3462, -2673,-1732,-610,608,1704,2618,3501,4447,5388,6237, 6932,7412,7634,7724,7978,8616,9618,10769,11756,12285, 12107,11168,9699,8050,6384,4656,2906,1251,-289,-1686, -2774,-3494,-4029,-4581,-5245,-6115,-7301,-8724,-10053,-10992, -11384,-11243,-10668,-9754,-8579,-7279,-6035,-4973,-4191,-3816, -3825,-4010,-4169,-4223,-4069,-3564,-2725,-1712,-662,403, 1422,2365,3298,4310,5348,6256,6837,7095,7212,7372, 7757,8561,9798,11093,11967,12232,11911,11047,9757,8257, 6683,4964,3123,1357,-170,-1460,-2491,-3218,-3704,-4182, -4939,-6064,-7423,-8803,-10011,-10894,-11284,-11146,-10610,-9758, -8578,-7203,-5944,-5005,-4357,-3990,-3954,-4160,-4370,-4366, -4083,-3527,-2722,-1724,-692,232,1120,2135,3278,4388, 5373,6201,6691,6764,6731,6991,7702,8774,10055,11242, 11999,12163,11799,11029,9932,8527,6884,5119,3327,1571, -39,-1327,-2170,-2717,-3231,-3900,-4823,-6052,-7470,-8825, -9940,-10762,-11219,-11181,-10616,-9640,-8448,-7181,-5985,-5032, -4434,-4185,-4200,-4359,-4538,-4523,-4135,-3451,-2660,-1819, -900,18,928,1980,3240,4490,5463,6060,6295,6292, 6360,6813,7754,8997,10236,11221,11852,12082,11825,11079, 10006,8703,7123,5275,3365,1623,138,-1021,-1780,-2283, -2864,-3731,-4835,-6055,-7360,-8716,-9932,-10763,-11142,-11091, -10581,-9580,-8330,-7127,-6058,-5143,-4536,-4366,-4513,-4669, -4686,-4541,-4141,-3469,-2684,-1927,-1179,-326,730,1985, 3319,4522,5382,5779,5811,5820,6149,6865,7849,9014, 10235,11244,11815,11963,11756,11190,10230,8889,7225,5337, 3397,1677,368,-560,-1291,-1974,-2694,-3555,-4663,-5962, -7294,-8608,-9832,-10728,-11101,-10971,-10444,-9522,-8295,-7036, -5986,-5212,-4752,-4635,-4769,-4920,-4869,-4564,-4064,-3468, -2844,-2194,-1481,-586,631,2107,3493,4474,5042,5330, 5442,5567,5991,6830,7929,9084,10191,11132,11735,11919, 11753,11308,10465,9051,7191,5274,3513,1949,680,-211, -898,-1643,-2493,-3404,-4486,-5821,-7267,-8611,-9747,-10606, -11056,-10967,-10346,-9348,-8180,-6996,-5966,-5263,-4966,-4971, -5053,-5069,-4932,-4569,-4030,-3518,-3115,-2617,-1785,-609, 770,2189,3438,4315,4760,4923,5054,5358,5935,6817, 7947,9132,10144,10944,11581,11983,11968,11469,10511,9075, 7240,5346,3675,2258,1067,121,-636,-1368,-2208,-3224, -4415,-5758,-7175,-8549,-9746,-10588,-10976,-10883,-10266,-9208, -7994,-6889,-6003,-5413,-5206,-5277,-5321,-5131,-4778,-4422, -4129,-3834,-3443,-2845,-1903,-592,895,2258,3314,4056, 4476,4614,4748,5209,6012,6948,7936,9006,10056,10949, 11654,12139,12200,11661,10554,9060,7338,5564,3902,2486, 1381,495,-335,-1174,-2041,-3056,-4318,-5732,-7144,-8497, -9752,-10664,-10996,-10785,-10142,-9149,-7935,-6809,-6066,-5740, -5632,-5532,-5356,-5097,-4770,-4474,-4318,-4184,-3781,-2987, -1890,-564,915,2285,3243,3759,4040,4285,4637,5208, 6003,6910,7849,8861,9941,11002,11855,12312,12256,11690, 10630,9136,7406,5694,4143,2784,1679,800,-23,-921, -1880,-2933,-4178,-5632,-7145,-8535,-9736,-10646,-11050,-10791, -9964,-8892,-7835,-6944,-6345,-6076,-5937,-5665,-5282,-4990, -4833,-4699,-4566,-4413,-4020,-3151,-1859,-399,1004,2177, 2995,3449,3709,4031,4550,5191,5868,6640,7614,8748, 9897,10977,11877,12371,12275,11630,10575,9163,7483,5787, 4329,3110,2025,1048,203,-610,-1582,-2777,-4098,-5487, -6985,-8526,-9848,-10690,-10941,-10593,-9729,-8656,-7751,-7137, -6693,-6309,-5970,-5630,-5261,-4967,-4844,-4872,-4897,-4710, -4126,-3109,-1755,-277,1041,2001,2637,3117,3551,3974, 4440,5018,5678,6445,7418,8614,9887,11031,11900,12375, 12327,11674,10530,9121,7594,6025,4555,3325,2329,1400, 482,-410,-1360,-2511,-3880,-5362,-6946,-8576,-9950,-10687, -10710,-10226,-9474,-8632,-7870,-7296,-6884,-6493,-6018,-5528, -5167,-5019,-5025,-5136,-5223,-4991,-4191,-2950,-1590,-294, 862,1778,2416,2908,3398,3889,4327,4792,5424,6288, 7331,8502,9814,11109,12032,12383,12225,11636,10590,9159, 7628,6184,4833,3595,2551,1653,768,-151,-1106,-2201, -3583,-5264,-7076,-8702,-9860,-10434,-10438,-9973,-9267,-8593, -8038,-7527,-7026,-6537,-6010,-5473,-5119,-5105,-5341,-5553, -5504,-5053,-4152,-2909,-1576,-371,647,1523,2257,2824, 3257,3680,4143,4620,5186,6032,7209,8529,9847,11084, 12015,12391,12187,11542,10522,9178,7714,6330,5075,3884, 2769,1814,1029,265,-683,-1939,-3481,-5251,-7106,-8707, -9732,-10146,-10115,-9747,-9171,-8592,-8142,-7719,-7158,-6460, -5816,-5391,-5244,-5363,-5653,-5867,-5688,-5025,-4046,-2933, -1719,-487,564,1367,2055,2702,3200,3536,3870,4362, 5033,5929,7120,8521,9924,11127,11970,12339,12170,11475, 10404,9184,7928,6586,5217,3989,2996,2178,1432,664, -328,-1717,-3463,-5338,-7115,-8582,-9543,-9916,-9823,-9503, -9141,-8764,-8324,-7776,-7112,-6361,-5699,-5385,-5472,-5746, -5961,-6002,-5748,-5082,-4060,-2918,-1793,-675,377,1257, 1970,2562,3018,3330,3619,4084,4837,5855,7076,8469, 9932,11206,11983,12206,11997,11408,10462,9288,8032,6693, 5312,4094,3208,2563,1886,1009,-139,-1617,-3445,-5431, -7204,-8482,-9250,-9608,-9625,-9413,-9191,-8965,-8504,-7737, -6903,-6228,-5769,-5570,-5699,-6019,-6247,-6172,-5758,-5061, -4124,-3018,-1873,-789,204,1123,1898,2428,2753,3051, 3427,3910,4614,5686,7087,8587,9994,11169,11941,12204, 12003,11455,10615,9475,8114,6708,5442,4404,3582,2932, 2290,1384,50,-1644,-3542,-5481,-7181,-8344,-8956,-9284, -9495,-9549,-9399,-9053,-8468,-7668,-6826,-6167,-5829,-5815, -6013,-6263,-6413,-6295,-5813,-5063,-4176,-3163,-2003,-818, 190,1014,1720,2261,2594,2825,3146,3681,4497,5648, 7105,8654,10020,11066,11793,12183,12113,11549,10650,9547, 8235,6827,5606,4733,4068,3424,2698,1709,244,-1660, -3681,-5484,-6920,-7964,-8673,-9146,-9457,-9615,-9526,-9090, -8350,-7515,-6787,-6232,-5946,-6023,-6302,-6498,-6485,-6298, -5911,-5230,-4276,-3181,-2053,-937,108,987,1630,2058, 2357,2596,2878,3426,4399,5684,7087,8507,9866,10980, 11714,12089,12079,11596,10668,9488,8209,6934,5825,5032, 4499,3967,3157,1898,227,-1681,-3590,-5272,-6588,-7579, -8390,-9066,-9507,-9647,-9490,-9012,-8221,-7342,-6670,-6310, -6183,-6237,-6417,-6602,-6636,-6430,-5988,-5329,-4417,-3301, -2136,-1047,-23,902,1541,1835,2001,2255,2657,3273, 4257,5582,7007,8361,9654,10829,11687,12084,12019,11543, 10673,9450,8080,6878,6033,5466,4972,4355,3407,1968, 150,-1723,-3429,-4953,-6283,-7376,-8262,-9016,-9578,-9744, -9436,-8797,-8036,-7312,-6727,-6376,-6319,-6447,-6592,-6696, -6749,-6594,-6112,-5401,-4547,-3491,-2262,-1051,-35,742, 1279,1561,1721,1950,2415,3164,4182,5423,6811,8236, 9555,10681,11557,12064,12058,11494,10492,9250,7984,6957, 6323,5935,5442,4633,3475,1981,226,-1587,-3222,-4630, -5911,-7143,-8232,-9029,-9495,-9595,-9268,-8595,-7842,-7222, -6743,-6418,-6345,-6520,-6720,-6782,-6748,-6609,-6224,-5528, -4590,-3483,-2253,-1030,-13,652,1019,1267,1525,1832, 2276,3031,4121,5380,6681,8053,9442,10669,11579,12082, 12056,11401,10262,9016,7989,7273,6764,6324,5776,4900, 3579,1976,338,-1254,-2816,-4297,-5655,-6944,-8122,-8980, -9375,-9357,-9019,-8421,-7708,-7079,-6667,-6476,-6455,-6556, -6707,-6829,-6849,-6706,-6335,-5676,-4678,-3427,-2150,-1044, -155,480,837,1019,1243,1625,2180,2953,3986,5204, 6500,7874,9319,10688,11689,12084,11853,11112,10044,8918, 8043,7535,7187,6702,5974,4964,3629,2064,498,-975, -2473,-4047,-5570,-6911,-8039,-8881,-9307,-9252,-8829,-8243, -7648,-7109,-6702,-6529,-6564,-6658,-6741,-6887,-7042,-6974, -6522,-5742,-4714,-3473,-2181,-1085,-297,227,564,779, 995,1393,2051,2886,3796,4869,6230,7811,9369,10712, 11671,12004,11629,10773,9787,8912,8261,7848,7510,6976, 6108,4955,3646,2254,786,-746,-2309,-3886,-5450,-6904, -8073,-8823,-9154,-9109,-8725,-8142,-7576,-7149,-6819,-6593, -6540,-6667,-6874,-7076,-7201,-7112,-6668,-5823,-4687,-3437, -2218,-1167,-419,-6,243,545,929,1363,1904,2642, 3547,4675,6138,7865,9551,10887,11696,11864,11416,10584, 9723,9079,8659,8289,7808,7142,6263,5140,3827,2463, 1078,-441,-2116,-3796,-5377,-6846,-8068,-8817,-9053,-8925, -8606,-8150,-7620,-7149,-6831,-6655,-6611,-6736,-7035,-7335, -7418,-7216,-6749,-5917,-4692,-3338,-2186,-1325,-688,-227, 98,427,831,1280,1749,2346,3233,4528,6180,7987, 9679,10986,11650,11602,11089,10454,9864,9350,8943,8589, 8092,7333,6388,5341,4147,2802,1350,-189,-1862,-3629, -5350,-6826,-7931,-8620,-8900,-8813,-8487,-8085,-7636,-7154, -6772,-6636,-6712,-6892,-7168,-7489,-7644,-7430,-6812,-5833, -4603,-3345,-2290,-1508,-920,-419,17,387,715,1061, 1483,2058,2949,4374,6248,8154,9711,10790,11313,11249, 10796,10298,9913,9566,9168,8724,8199,7481,6540,5483, 4371,3147,1688,22,-1733,-3507,-5243,-6728,-7752,-8364, -8692,-8722,-8421,-7960,-7515,-7119,-6779,-6606,-6683,-6978, -7363,-7681,-7784,-7521,-6812,-5731,-4519,-3417,-2483,-1681, -1031,-525,-66,352,630,787,1071,1719,2838,4423, 6332,8207,9680,10569,10920,10886,10640,10305,9970,9681, 9367,8903,8267,7532,6705,5739,4644,3423,1961,212, -1661,-3464,-5111,-6536,-7609,-8273,-8587,-8601,-8353,-7953, -7499,-7068,-6740,-6615,-6751,-7140,-7632,-7956,-7920,-7516, -6781,-5755,-4589,-3544,-2691,-1904,-1132,-494,-58,201, 332,425,712,1457,2791,4566,6466,8157,9480,10318, 10640,10619,10500,10343,10087,9776,9448,9000,8354,7616, 6879,6053,4990,3663,2105,362,-1487,-3322,-4992,-6370, -7416,-8124,-8476,-8482,-8251,-7902,-7439,-6925,-6595,-6616, -6922,-7363,-7814,-8108,-8028,-7510,-6679,-5733,-4766,-3801, -2860,-1980,-1182,-512,-86,11,-75,-17,451,1401, 2826,4629,6517,8092,9229,9974,10366,10461,10416,10335, 10179,9891,9475,8978,8440,7854,7159,6296,5232,3911, 2312,529,-1311,-3127,-4804,-6164,-7159,-7872,-8321,-8412, -8146,-7692,-7192,-6747,-6502,-6600,-7025,-7576,-7991,-8123, -7933,-7430,-6664,-5787,-4924,-4018,-2976,-1917,-1081,-547, -286,-282,-411,-337,266,1412,2934,4665,6429,7938, 9001,9658,10070,10339,10449,10379,10166,9882,9512,9044, 8553,8063,7424,6526,5429,4135,2554,705,-1201,-2966, -4535,-5899,-7003,-7772,-8185,-8278,-8058,-7549,-6938,-6532, -6489,-6751,-7200,-7716,-8094,-8134,-7831,-7345,-6758,-6030, -5131,-4081,-2939,-1842,-1013,-594,-549,-688,-753,-517, 181,1388,2986,4728,6341,7669,8695,9443,9944,10256, 10412,10368,10140,9844,9536,9158,8699,8208,7624,6812, 5689,4277,2653,872,-983,-2782,-4374,-5730,-6884,-7757, -8198,-8189,-7864,-7345,-6780,-6447,-6546,-6971,-7462,-7843, -8062,-8068,-7844,-7447,-6934,-6264,-5314,-4082,-2806,-1772, -1112,-815,-854,-1068,-1120,-719,170,1453,3009,4666, 6201,7463,8480,9314,9927,10250,10350,10337,10207,9934, 9567,9226,8921,8518,7884,7020,5914,4483,2783,988, -779,-2527,-4209,-5690,-6892,-7760,-8191,-8129,-7675,-7097, -6672,-6564,-6773,-7177,-7621,-7933,-8052,-8030,-7937,-7710, -7221,-6436,-5368,-4077,-2779,-1775,-1244,-1123,-1260,-1434, -1361,-829,175,1505,2978,4482,5960,7307,8374,9169, 9779,10205,10375,10323,10167,9956,9670,9371,9113,8779, 8163,7236,6064,4651,3007,1239,-535,-2295,-4023,-5628, -6929,-7739,-8019,-7861,-7419,-6913,-6626,-6701,-6994,-7306, -7597,-7865,-8050,-8115,-8083,-7909,-7427,-6531,-5308,-3958, -2736,-1839,-1410,-1427,-1644,-1708,-1425,-797,142,1409, 2899,4383,5757,7057,8197,9055,9640,10040,10259,10251, 10072,9867,9693,9524,9299,8934,8333,7431,6218,4779, 3229,1578,-214,-2104,-3941,-5577,-6857,-7590,-7728,-7458, -7070,-6774,-6669,-6777,-7017,-7273,-7504,-7748,-8018,-8233, -8283,-8072,-7507,-6519,-5174,-3742,-2614,-1968,-1724,-1730, -1854,-1863,-1533,-833,148,1376,2794,4253,5617,6886, 8020,8933,9568,9929,10085,10096,9996,9839,9724,9663, 9515,9109,8429,7532,6396,5021,3504,1866,20,-2007, -3976,-5599,-6715,-7294,-7391,-7167,-6878,-6736,-6769,-6865, -6980,-7177,-7462,-7759,-8065,-8396,-8589,-8337,-7542,-6368, -5038,-3729,-2703,-2152,-2011,-2059,-2096,-1998,-1639,-947, 77,1334,2680,4040,5406,6736,7889,8772,9419,9810, 9929,9890,9860,9867,9860,9796,9617,9215,8530,7619, 6557,5337,3877,2120,102,-2007,-3968,-5521,-6504,-6947, -7043,-6973,-6838,-6738,-6779,-6889,-6949,-7031,-7302,-7773, -8285,-8675,-8766,-8393,-7494,-6235,-4895,-3718,-2869,-2394, -2240,-2281,-2312,-2142,-1696,-999,-30,1199,2535,3867, 5202,6557,7777,8664,9228,9563,9717,9746,9782,9891, 9990,9928,9646,9192,8588,7803,6826,5648,4173,2292, 108,-2031,-3852,-5261,-6207,-6653,-6740,-6731,-6764,-6788, -6756,-6696,-6707,-6887,-7276,-7840,-8460,-8885,-8851,-8287, -7322,-6118,-4827,-3701,-2963,-2609,-2480,-2450,-2425,-2245, -1779,-1030,-79,1052,2337,3721,5117,6446,7616,8499, 9032,9290,9453,9639,9834,9976,10035,9943,9640,9167, 8643,8042,7179,5926,4288,2318,148,-1969,-3752,-5033, -5831,-6282,-6536,-6677,-6740,-6733,-6638,-6498,-6497,-6809, -7389,-8047,-8633,-8977,-8873,-8228,-7192,-6007,-4828,-3813, -3119,-2794,-2701,-2662,-2555,-2304,-1845,-1133,-186,926, 2178,3576,5039,6375,7443,8234,8778,9085,9312,9613, 9937,10106,10043,9844,9596,9291,8882,8306,7447,6178, 4415,2290,109,-1867,-3513,-4742,-5536,-6045,-6436,-6714, -6766,-6611,-6413,-6318,-6435,-6832,-7496,-8248,-8835,-9052, -8825,-8161,-7147,-5958,-4813,-3917,-3336,-3016,-2881,-2828, -2701,-2386,-1909,-1263,-383,764,2099,3528,4972,6281, 7298,8004,8528,8985,9416,9782,10022,10115,10067,9895, 9680,9489,9242,8733,7790,6369,4494,2316,168,-1688, -3192,-4408,-5345,-6007,-6444,-6683,-6691,-6481,-6229,-6168, -6428,-6964,-7669,-8409,-8988,-9165,-8835,-8099,-7104,-5968, -4879,-4056,-3560,-3260,-3065,-2947,-2815,-2532,-2060,-1423, -567,588,2026,3548,4913,6030,6967,7755,8384,8913, 9414,9824,10022,10015,9941,9872,9805,9736,9578,9095, 8042,6421,4450,2380,395,-1394,-2917,-4162,-5179,-5968, -6454,-6590,-6467,-6253,-6078,-6084,-6420,-7081,-7870,-8577, -9068,-9203,-8849,-8054,-7030,-5981,-5032,-4272,-3747,-3433, -3243,-3079,-2887,-2654,-2304,-1670,-670,599,2002,3423, 4705,5752,6639,7469,8229,8872,9371,9724,9877,9847, 9771,9803,9949,10047,9877,9263,8100,6430,4472,2498, 659,-1053,-2653,-4022,-5088,-5871,-6335,-6419,-6216,-5971, -5875,-6007,-6415,-7118,-7975,-8725,-9135,-9136,-8738,-7995, -7001,-5965,-5098,-4455,-3923,-3492,-3260,-3179,-3081,-2860, -2464,-1774,-706,622,1987,3275,4449,5492,6436,7318, 8158,8910,9421,9620,9627,9640,9747,9942,10202,10371, 10166,9407,8122,6489,4668,2783,950,-786,-2418,-3881, -5028,-5777,-6122,-6143,-5969,-5742,-5651,-5885,-6469,-7250, -8057,-8763,-9187,-9138,-8623,-7848,-6986,-6097,-5247,-4524, -3953,-3552,-3351,-3315,-3296,-3103,-2603,-1777,-678,589, 1898,3123,4195,5194,6238,7289,8189,8865,9265,9382, 9365,9462,9759,10151,10478,10580,10275,9462,8173,6582, 4861,3072,1219,-630,-2321,-3756,-4896,-5670,-5971,-5884, -5666,-5519,-5537,-5835,-6501,-7400,-8253,-8852,-9120,-9020, -8555,-7837,-7028,-6203,-5371,-4583,-3983,-3676,-3595,-3576, -3517,-3303,-2762,-1828,-660,530,1678,2794,3873,4950, 6086,7221,8133,8682,8916,9000,9127,9405,9821,10287, 10644,10671,10236,9412,8260,6776,5056,3253,1425,-444, -2227,-3710,-4785,-5455,-5730,-5664,-5421,-5253,-5370,-5855, -6621,-7500,-8296,-8830,-9011,-8877,-8495,-7883,-7083,-6199, -5355,-4614,-4062,-3798,-3793,-3841,-3739,-3390,-2743,-1805, -709,381,1412,2454,3597,4840,6069,7144,7937,8396, 8586,8691,8960,9441,9971,10405,10692,10702,10288,9468, 8357,6984,5343,3502,1578,-316,-2078,-3574,-4662,-5262, -5421,-5310,-5105,-5015,-5257,-5890,-6725,-7523,-8198,-8706, -8940,-8845,-8467,-7880,-7106,-6199,-5301,-4583,-4143,-3984, -4010,-4042,-3879,-3400,-2636,-1733,-815,119,1139,2253, 3480,4809,6091,7083,7676,8017,8291,8584,8964,9483, 10063,10546,10792,10724,10335,9622,8569,7184,5544,3722, 1763,-200,-1985,-3461,-4510,-5032,-5080,-4915,-4808,-4905, -5276,-5924,-6727,-7508,-8162,-8633,-8875,-8843,-8509,-7894, -7071,-6154,-5272,-4603,-4294,-4283,-4322,-4212,-3903,-3379, -2645,-1815,-1012,-191,836,2116,3506,4832,5983,6873, 7431,7754,8070,8512,9064,9634,10170,10629,10897,10842, 10456,9791,8802,7441,5781,3940,1951,-100,-1965,-3401, -4303,-4714,-4770,-4683,-4670,-4890,-5369,-6032,-6764,-7503, -8185,-8688,-8920,-8906,-8610,-7954,-7017,-6064,-5313,-4825, -4602,-4577,-4564,-4357,-3898,-3303,-2693,-2068,-1342,-430, 698,2024,3449,4779,5831,6578,7099,7514,7928,8437, 9053,9683,10225,10654,10926,10920,10568,9912,8980,7712, 6071,4122,2012,-56,-1869,-3237,-4061,-4408,-4485,-4509, -4616,-4896,-5400,-6075,-6782,-7468,-8149,-8745,-9065,-9007, -8588,-7865,-6942,-6038,-5382,-5058,-4951,-4848,-4622,-4284, -3864,-3360,-2829,-2282,-1589,-602,656,2037,3411,4647, 5610,6285,6799,7287,7803,8360,8975,9623,10225,10675, 10898,10874,10615,10086,9202,7928,6249,4226,2030,-29, -1720,-2956,-3739,-4102,-4200,-4282,-4519,-4888,-5343,-5915, -6629,-7417,-8160,-8751,-9080,-9013,-8490,-7640,-6754,-6058, -5597,-5323,-5159,-4960,-4631,-4217,-3833,-3480,-3072,-2513, -1723,-654,651,2047,3368,4483,5363,6042,6601,7110, 7653,8297,9001,9663,10229,10676,10926,10950,10780,10357, 9521,8179,6383,4289,2097,61,-1571,-2702,-3390,-3778, -4004,-4188,-4431,-4795,-5260,-5825,-6549,-7422,-8295,-8917, -9121,-8891,-8315,-7533,-6782,-6234,-5884,-5618,-5338,-5001, -4624,-4267,-3961,-3694,-3353,-2765,-1846,-678,614,1943, 3228,4319,5148,5790,6368,6942,7547,8240,8997,9677, 10206,10630,10965,11145,11060,10636,9796,8440,6547,4325, 2134,233,-1291,-2412,-3119,-3520,-3816,-4110,-4380,-4660, -5069,-5711,-6595,-7581,-8448,-8993,-9087,-8739,-8126,-7470, -6916,-6483,-6125,-5792,-5412,-4981,-4603,-4365,-4199,-3960, -3549,-2912,-1976,-778,547,1856,3076,4120,4913,5530, 6125,6799,7515,8216,8897,9558,10146,10620,10998,11280, 11335,10945,10002,8532,6594,4377,2219,397,-1017,-2084, -2855,-3375,-3721,-3968,-4178,-4443,-4908,-5677,-6706,-7752, -8529,-8916,-8913,-8566,-8005,-7467,-7064,-6706,-6279,-5821, -5395,-5012,-4713,-4536,-4425,-4202,-3735,-3007,-2043,-854, 486,1809,2939,3850,4624,5323,5984,6670,7417,8168, 8831,9421,10009,10612,11151,11516,11578,11180,10171,8572, 6563,4420,2408,666,-754,-1858,-2680,-3256,-3587,-3734, -3876,-4225,-4873,-5778,-6854,-7873,-8547,-8772,-8667,-8386, -8018,-7618,-7227,-6816,-6337,-5831,-5392,-5067,-4862,-4723, -4593,-4368,-3910,-3120,-2031,-807,438,1660,2756,3641, 4387,5113,5865,6617,7337,8018,8668,9294,9935,10624, 11305,11791,11850,11342,10223,8580,6603,4570,2684,981, -524,-1733,-2565,-3064,-3320,-3438,-3605,-4054,-4885,-5945, -7002,-7862,-8400,-8587,-8512,-8315,-8078,-7783,-7369,-6858, -6347,-5886,-5464,-5123,-4964,-4942,-4864,-4567,-4007,-3184, -2099,-849,399,1527,2514,3403,4227,5013,5785,6558, 7283,7901,8491,9170,9973,10826,11599,12111,12122,11483, 10260,8659,6828,4877,2959,1197,-342,-1585,-2417,-2826, -2964,-3092,-3426,-4077,-5019,-6090,-7081,-7810,-8234,-8445, -8512,-8421,-8191,-7875,-7477,-6971,-6413,-5901,-5521,-5294, -5202,-5173,-5088,-4784,-4148,-3216,-2109,-938,241,1337, 2293,3170,4050,4920,5721,6448,7118,7717,8322,9089, 10076,11116,11928,12332,12219,11541,10345,8810,7072,5177, 3201,1315,-274,-1430,-2134,-2465,-2602,-2816,-3349,-4213, -5216,-6179,-7039,-7738,-8200,-8416,-8491,-8477,-8341,-8033, -7567,-7029,-6495,-5997,-5622,-5462,-5465,-5454,-5290,-4904, -4228,-3273,-2150,-1027,39,1060,2029,2958,3885,4797, 5600,6235,6773,7365,8121,9084,10184,11257,12056,12380, 12167,11484,10421,9010,7286,5331,3288,1366,-199,-1222, -1753,-2026,-2296,-2718,-3379,-4257,-5236,-6182,-6984,-7592, -8037,-8340,-8494,-8501,-8373,-8096,-7630,-7042,-6474,-6025, -5730,-5627,-5659,-5657,-5447,-4968,-4235,-3284,-2212,-1153, -174,785,1807,2869,3868,4728,5422,5971,6478,7117, 8025,9160,10334,11349,12067,12373,12203,11595,10625,9281, 7522,5420,3275,1433,71,-823,-1357,-1690,-2039,-2578, -3354,-4259,-5180,-6061,-6829,-7422,-7874,-8231,-8481,-8545, -8404,-8081,-7590,-6985,-6411,-6013,-5830,-5805,-5840,-5800, -5548,-4999,-4185,-3250,-2302,-1358,-386,639,1731,2846, 3852,4624,5177,5648,6219,7008,8043,9235,10413,11390, 12048,12346,12305,11859,10911,9430,7536,5417,3335,1598, 356,-444,-968,-1389,-1857,-2489,-3311,-4231,-5126,-5937, -6658,-7274,-7788,-8200,-8493,-8598,-8448,-8062,-7526,-6943, -6424,-6074,-5969,-6040,-6093,-5956,-5582,-4984,-4200,-3338, -2486,-1606,-592,556,1735,2808,3693,4359,4854,5323, 5972,6926,8096,9272,10331,11259,12013,12459,12489,12048, 11047,9471,7485,5381,3424,1821,648,-125,-658,-1155, -1748,-2470,-3299,-4185,-5055,-5828,-6504,-7145,-7757,-8244, -8534,-8615,-8467,-8068,-7487,-6899,-6457,-6235,-6218,-6297, -6299,-6073,-5606,-4988,-4299,-3572,-2752,-1789,-689,498, 1698,2749,3507,4007,4464,5084,5920,6928,8038,9167, 10230,11200,12039,12609,12709,12218,11107,9457,7470,5416, 3549,2054,963,186,-410,-982,-1659,-2459,-3296,-4107, -4907,-5688,-6408,-7073,-7720,-8278,-8619,-8667,-8430,-7975, -7405,-6873,-6527,-6430,-6492,-6516,-6371,-6069,-5643,-5099, -4472,-3805,-3004,-1941,-672,595,1688,2552,3198,3708, 4245,4954,5865,6881,7918,9010,10159,11272,12208,12809, 12911,12361,11143,9427,7476,5519,3736,2321,1311,551, -142,-835,-1562,-2345,-3172,-3990,-4767,-5513,-6260,-7015, -7730,-8300,-8634,-8648,-8321,-7776,-7244,-6886,-6701,-6643, -6647,-6608,-6415,-6069,-5667,-5258,-4765,-4067,-3100,-1898, -603,599,1572,2304,2904,3493,4145,4891,5765,6757, 7816,8954,10200,11451,12486,13082,13106,12477,11215,9474, 7540,5682,4042,2699,1662,841,98,-663,-1463,-2269, -3057,-3845,-4637,-5407,-6181,-7020,-7840,-8425,-8644,-8537, -8196,-7720,-7277,-7024,-6957,-6940,-6843,-6647,-6406,-6151, -5873,-5542,-5045,-4233,-3104,-1841,-642,401,1287,2018, 2650,3300,4016,4778,5592,6532,7648,8924,10286,11607, 12684,13296,13258,12516,11193,9507,7674,5897,4335,3054, 2001,1084,263,-525,-1347,-2197,-2978,-3687,-4440,-5304, -6236,-7145,-7927,-8452,-8614,-8428,-8048,-7666,-7405,-7277, -7214,-7103,-6897,-6644,-6451,-6331,-6166,-5809,-5169,-4231, -3070,-1858,-755,176,1002,1768,2475,3145,3824,4542, 5338,6277,7434,8823,10338,11751,12824,13379,13276,12473, 11117,9477,7772,6105,4588,3326,2305,1369,434,-463, -1272,-2020,-2755,-3498,-4295,-5217,-6251,-7239,-7981,-8372, -8417,-8208,-7899,-7670,-7563,-7472,-7307,-7076,-6856,-6705, -6637,-6596,-6431,-5991,-5216,-4181,-3051,-1957,-942,-12, 826,1588,2310,3007,3656,4283,5039,6051,7322,8815, 10422,11912,12984,13441,13241,12437,11138,9527,7855,6303, 4922,3680,2564,1546,583,-327,-1133,-1830,-2505,-3264, -4166,-5215,-6325,-7298,-7937,-8188,-8166,-8041,-7918,-7822, -7719,-7555,-7306,-7041,-6874,-6857,-6907,-6860,-6574,-6022, -5219,-4212,-3121,-2093,-1145,-218,680,1482,2174,2809, 3414,4016,4753,5815,7245,8894,10544,12001,13059,13512, 13257,12382,11102,9609,8063,6595,5261,4007,2807,1697, 698,-171,-911,-1555,-2216,-3046,-4109,-5302,-6406,-7228, -7715,-7939,-8000,-7999,-7990,-7942,-7777,-7492,-7211,-7051, -7010,-7040,-7077,-6999,-6656,-6017,-5181,-4251,-3265,-2262, -1282,-344,550,1383,2083,2622,3089,3665,4496,5667, 7169,8887,10614,12100,13106,13479,13177,12302,11064,9675, 8266,6886,5553,4246,2972,1795,795,27,-574,-1191, -1984,-3005,-4174,-5355,-6364,-7062,-7464,-7730,-7951,-8082, -8066,-7931,-7707,-7429,-7185,-7100,-7171,-7261,-7249,-7071, -6695,-6075,-5235,-4315,-3397,-2447,-1422,-396,516,1267, 1868,2349,2791,3363,4245,5524,7135,8931,10696,12170, 13110,13399,13067,12233,11079,9776,8472,7184,5827,4386, 3009,1878,1024,370,-218,-909,-1857,-3044,-4262,-5324, -6172,-6825,-7309,-7675,-7952,-8112,-8096,-7893,-7601,-7369, -7263,-7262,-7337,-7425,-7408,-7175,-6721,-6102,-5356,-4507, -3562,-2537,-1474,-463,416,1120,1644,2046,2459,3052, 3995,5369,7105,8978,10739,12167,13060,13298,12928,12145, 11141,9999,8740,7393,5935,4425,3052,2027,1337,756, 62,-836,-1912,-3084,-4230,-5221,-6003,-6648,-7229,-7717, -8012,-8097,-8028,-7833,-7569,-7365,-7332,-7429,-7544,-7578, -7490,-7250,-6840,-6268,-5557,-4707,-3720,-2632,-1538,-541, 298,952,1402,1722,2113,2779,3824,5285,7116,9082, 10869,12219,13003,13201,12905,12262,11400,10346,9062,7556, 5952,4480,3296,2413,1725,1059,249,-783,-1949,-3073, -4093,-5034,-5883,-6616,-7231,-7726,-8037,-8107,-7971,-7729, -7525,-7448,-7488,-7579,-7664,-7671,-7560,-7322,-6952,-6416, -5697,-4816,-3803,-2684,-1549,-545,223,766,1144,1442, 1822,2515,3676,5304,7256,9246,10978,12228,12915,13122, 12986,12555,11780,10645,9237,7661,6075,4705,3672,2883, 2135,1299,351,-705,-1826,-2926,-3943,-4877,-5756,-6576, -7268,-7752,-7991,-8001,-7855,-7661,-7548,-7568,-7648,-7709, -7765,-7785,-7675,-7402,-7027,-6540,-5850,-4913,-3819,-2674, -1569,-601,123,561,813,1060,1491,2262,3525,5295, 7352,9294,10859,11996,12729,13078,13077,12721,11946,10727, 9206,7631,6206,5014,4033,3180,2345,1439,431,-651, -1734,-2775,-3790,-4782,-5729,-6593,-7292,-7722,-7876,-7857, -7774,-7675,-7611,-7638,-7744,-7847,-7884,-7859,-7763,-7562, -7218,-6707,-5991,-5039,-3899,-2700,-1603,-707,-58,300, 429,577,1066,2053,3508,5318,7300,9142,10623,11743, 12584,13122,13241,12838,11933,10668,9210,7733,6409,5307, 4355,3443,2518,1550,528,-531,-1568,-2575,-3625,-4725, -5750,-6584,-7202,-7594,-7757,-7743,-7670,-7647,-7685,-7737, -7789,-7871,-7945,-7934,-7828,-7665,-7389,-6874,-6082,-5076, -3926,-2702,-1559,-707,-228,-56,-1,203,817,1956, 3540,5359,7192,8886,10377,11646,12625,13209,13304,12853, 11899,10625,9254,7909,6683,5624,4655,3677,2669,1672, 709,-261,-1303,-2410,-3540,-4641,-5659,-6500,-7085,-7414, -7563,-7616,-7620,-7628,-7693,-7785,-7842,-7887,-7961,-8015, -7966,-7795,-7490,-7000,-6228,-5146,-3860,-2580,-1506,-787, -478,-462,-434,-75,759,2010,3546,5247,6997,8693, 10267,11649,12702,13278,13307,12815,11869,10635,9341,8132, 7014,5937,4867,3831,2853,1892,919,-64,-1108,-2270, -3491,-4614,-5575,-6370,-6951,-7277,-7423,-7526,-7629,-7694, -7717,-7767,-7871,-7987,-8051,-8064,-8062,-7988,-7720,-7177, -6325,-5149,-3761,-2444,-1500,-1024,-895,-880,-710,-189, 730,1975,3435,5041,6767,8543,10218,11665,12748,13321, 13302,12744,11823,10717,9551,8385,7258,6163,5070,4005, 3031,2120,1168,124,-998,-2187,-3416,-4565,-5523,-6253, -6771,-7123,-7358,-7502,-7593,-7668,-7740,-7806,-7886,-7984, -8069,-8124,-8172,-8179,-7977,-7379,-6346,-4991,-3573,-2393, -1654,-1347,-1264,-1155,-844,-259,627,1821,3254,4833, 6543,8394,10210,11725,12759,13250,13219,12704,11851,10840, 9759,8613,7440,6309,5245,4230,3268,2345,1400,342, -868,-2159,-3378,-4449,-5376,-6129,-6666,-7000,-7244,-7436, -7557,-7636,-7729,-7829,-7891,-7934,-8047,-8254,-8472,-8533, -8249,-7487,-6283,-4843,-3521,-2554,-1975,-1692,-1555,-1387, -1009,-361,514,1618,2992,4629,6466,8405,10251,11756, 12755,13203,13173,12747,12010,11058,9980,8835,7676,6527, 5434,4446,3549,2631,1592,438,-806,-2093,-3314,-4387, -5302,-6049,-6599,-6954,-7196,-7404,-7589,-7729,-7808,-7842, -7863,-7934,-8157,-8541,-8889,-8901,-8407,-7459,-6197,-4809, -3589,-2766,-2314,-2049,-1815,-1533,-1135,-540,285,1368, 2745,4444,6398,8429,10253,11678,12665,13181,13205,12816, 12150,11275,10208,9020,7840,6740,5707,4736,3812,2857, 1771,554,-721,-1989,-3206,-4321,-5262,-5971,-6477,-6854, -7161,-7433,-7667,-7804,-7791,-7703,-7731,-7988,-8419,-8877, -9160,-9050,-8419,-7341,-6036,-4759,-3713,-2987,-2535,-2232, -1966,-1656,-1267,-762,-23,1080,2572,4357,6315,8330, 10171,11589,12536,13059,13186,12908,12273,11376,10308,9148, 7997,6939,5984,5063,4098,3069,1963,751,-542,-1846, -3085,-4202,-5111,-5756,-6222,-6670,-7131,-7486,-7635,-7613, -7532,-7506,-7661,-8071,-8665,-9198,-9384,-9076,-8309,-7216, -5965,-4781,-3855,-3208,-2711,-2311,-2030,-1821,-1527,-1025, -245,884,2424,4299,6318,8289,10049,11466,12469,13042, 13210,12995,12391,11466,10383,9282,8215,7190,6241,5324, 4351,3293,2164,938,-418,-1806,-3051,-4050,-4834,-5491, -6094,-6670,-7162,-7474,-7545,-7426,-7295,-7367,-7741,-8333, -8983,-9468,-9550,-9097,-8211,-7122,-6007,-4948,-4030,-3324, -2821,-2464,-2210,-2028,-1797,-1336,-510,719,2319,4213, 6231,8174,9893,11315,12397,13061,13253,13017,12418,11520, 10477,9429,8422,7415,6426,5499,4591,3577,2359,972, -451,-1769,-2910,-3849,-4626,-5353,-6101,-6792,-7254,-7413, -7352,-7224,-7172,-7367,-7906,-8655,-9327,-9668,-9580,-9071, -8225,-7181,-6101,-5089,-4191,-3448,-2916,-2616,-2462,-2321, -2085,-1615,-749,568,2231,4084,6029,7953,9721,11197, 12313,13013,13220,12958,12362,11556,10613,9581,8528,7555, 6688,5840,4878,3755,2454,1019,-400,-1622,-2631,-3544, -4445,-5331,-6149,-6817,-7205,-7253,-7072,-6921,-7031,-7473, -8150,-8885,-9474,-9737,-9575,-9025,-8206,-7234,-6191,-5169, -4258,-3524,-3018,-2771,-2692,-2599,-2341,-1807,-888,450, 2106,3932,5833,7760,9598,11143,12248,12892,13116,12956, 12429,11618,10665,9669,8682,7789,7017,6201,5139,3834, 2446,1084,-205,-1364,-2374,-3318,-4318,-5352,-6239,-6797, -6990,-6931,-6783,-6741,-6994,-7582,-8341,-9048,-9543,-9731, -9549,-9001,-8199,-7262,-6245,-5203,-4264,-3564,-3141,-2958, -2906,-2833,-2562,-1952,-966,332,1892,3708,5701,7690, 9487,10986,12114,12820,13099,12979,12474,11659,10694,9750, 8917,8157,7358,6412,5257,3913,2502,1178,21,-1032, -2097,-3227,-4379,-5443,-6256,-6685,-6745,-6626,-6545,-6658, -7052,-7707,-8476,-9149,-9577,-9702,-9512,-9012,-8232,-7269, -6232,-5198,-4269,-3593,-3264,-3181,-3128,-2965,-2652,-2093, -1173,126,1736,3585,5571,7538,9319,10825,12008,12813, 13155,12980,12401,11624,10783,9956,9193,8476,7658,6596, 5311,3955,2650,1442,345,-730,-1912,-3220,-4485,-5509, -6183,-6490,-6505,-6397,-6384,-6629,-7164,-7865,-8575,-9199, -9635,-9759,-9544,-9057,-8323,-7332,-6199,-5136,-4317,-3784, -3496,-3375,-3300,-3155,-2849,-2293,-1395,-89,1593,3489, 5428,7323,9154,10806,12078,12866,13163,12981,12406,11661, 10938,10264,9584,8819,7871,6694,5373,4074,2892,1792, 668,-562,-1910,-3301,-4578,-5554,-6110,-6297,-6288,-6277, -6382,-6709,-7303,-8045,-8749,-9316,-9733,-9933,-9776,-9232, -8394,-7368,-6274,-5265,-4482,-3987,-3719,-3569,-3485,-3407, -3156,-2546,-1540,-211,1399,3247,5216,7177,9068,10781, 12106,12875,13090,12869,12379,11781,11198,10632,9969,9095, 7984,6742,5513,4348,3233,2126,935,-446,-1963,-3402, -4587,-5453,-5952,-6114,-6094,-6130,-6375,-6834,-7429,-8103, -8815,-9470,-9933,-10101,-9909,-9328,-8424,-7369,-6343,-5430, -4651,-4078,-3793,-3728,-3713,-3599,-3278,-2653,-1677,-377, 1195,3004,4981,7038,9025,10754,12020,12717,12887,12692, 12343,11955,11507,10936,10194,9236,8072,6851,5737,4722, 3669,2482,1139,-341,-1897,-3355,-4511,-5252,-5631,-5804, -5909,-6039,-6301,-6765,-7395,-8103,-8852,-9576,-10086,-10194, -9889,-9276,-8437,-7430,-6380,-5427,-4674,-4170,-3930,-3881, -3872,-3738,-3373,-2740,-1826,-598,958,2798,4837,6990, 9068,10765,11890,12471,12672,12620,12431,12169,11791,11182, 10307,9257,8156,7086,6077,5079,4019,2797,1330,-310, -1911,-3278,-4325,-5016,-5381,-5572,-5745,-5950,-6217,-6650, -7323,-8166,-9016,-9708,-10138,-10227,-9955,-9345,-8474,-7452, -6402,-5458,-4749,-4334,-4153,-4087,-4033,-3879,-3515,-2906, -2053,-901,653,2600,4789,7006,9021,10610,11648,12199, 12462,12592,12595,12391,11939,11248,10345,9289,8220,7266, 6399,5435,4267,2902,1337,-347,-1926,-3198,-4139,-4814, -5259,-5491,-5611,-5766,-6089,-6640,-7399,-8274,-9129,-9810, -10209,-10295,-10051,-9437,-8510,-7443,-6428,-5552,-4898,-4537, -4389,-4297,-4158,-3963,-3674,-3192,-2397,-1202,433,2466, 4744,6982,8873,10275,11267,11952,12382,12622,12713,12564, 12071,11271,10320,9342,8403,7547,6735,5776,4505,2965, 1308,-307,-1769,-3024,-4018,-4700,-5090,-5281,-5412,-5609, -6002,-6638,-7453,-8327,-9169,-9874,-10308,-10385,-10096,-9453, -8506,-7420,-6423,-5635,-5077,-4718,-4497,-4343,-4211,-4061, -3845,-3473,-2736,-1444,379,2521,4741,6854,8649,10003, 11006,11794,12394,12770,12886,12691,12150,11314,10358,9470, 8707,7977,7116,6013,4656,3105,1453,-168,-1637,-2902, -3898,-4528,-4826,-4987,-5196,-5499,-5943,-6600,-7455,-8368, -9213,-9916,-10381,-10477,-10118,-9368,-8411,-7418,-6496,-5733, -5198,-4838,-4541,-4305,-4221,-4249,-4178,-3788,-2933,-1539, 346,2517,4686,6650,8315,9675,10787,11687,12386,12865, 13003,12706,12050,11240,10444,9700,8991,8250,7347,6195, 4805,3248,1585,-80,-1580,-2797,-3691,-4266,-4582,-4775, -5006,-5368,-5881,-6550,-7384,-8337,-9261,-9987,-10383,-10399, -10003,-9240,-8301,-7401,-6609,-5901,-5288,-4812,-4493,-4355, -4401,-4527,-4506,-4085,-3104,-1592,301,2392,4468,6344, 7931,9291,10534,11625,12432,12874,12921,12570,11948,11246, 10576,9911,9195,8410,7519,6410,5002,3367,1660,16, -1462,-2661,-3493,-3995,-4334,-4629,-4912,-5247,-5750,-6469, -7358,-8335,-9293,-10052,-10409,-10303,-9829,-9137,-8340,-7522, -6726,-5984,-5312,-4767,-4456,-4458,-4673,-4846,-4748,-4241, -3220,-1661,255,2253,4155,5906,7510,8995,10378,11554, 12354,12721,12704,12394,11895,11287,10641,10017,9373,8627, 7708,6568,5143,3471,1716,87,-1306,-2436,-3266,-3799, -4140,-4431,-4733,-5091,-5598,-6348,-7338,-8419,-9370,-10030, -10304,-10180,-9733,-9111,-8408,-7639,-6787,-5938,-5218,-4722, -4513,-4606,-4884,-5088,-4950,-4330,-3208,-1642,184,2033, 3794,5501,7205,8842,10272,11388,12140,12526,12537,12242, 11794,11281,10709,10106,9506,8834,7922,6689,5181,3512, 1809,210,-1160,-2233,-3023,-3589,-3985,-4248,-4473,-4831, -5444,-6310,-7366,-8472,-9383,-9918,-10092,-10000,-9691,-9165, -8454,-7628,-6738,-5852,-5105,-4650,-4554,-4775,-5114,-5299, -5069,-4319,-3129,-1660,-39,1679,3455,5240,6994,8656, 10114,11236,11968,12350,12407,12162,11732,11251,10773,10276, 9714,9009,8064,6804,5258,3558,1894,377,-965,-2068, -2881,-3421,-3771,-3993,-4207,-4613,-5346,-6345,-7433,-8451, -9250,-9753,-9963,-9938,-9690,-9212,-8497,-7608,-6646,-5729, -4996,-4621,-4687,-5050,-5376,-5401,-5042,-4291,-3182,-1808, -282,1359,3129,4982,6784,8417,9845,11004,11788,12145, 12156,11949,11616,11209,10786,10378,9890,9163,8128,6827, 5321,3665,2010,501,-824,-1939,-2759,-3235,-3464,-3634, -3934,-4496,-5330,-6337,-7378,-8324,-9060,-9564,-9851,-9898, -9673,-9206,-8496,-7535,-6446,-5504,-4924,-4754,-4924,-5259, -5494,-5433,-5023,-4297,-3292,-2018,-513,1157,2925,4735, 6532,8209,9647,10771,11546,11924,11937,11737,11483,11210, 10889,10509,10006,9248,8183,6872,5398,3803,2159,588, -779,-1842,-2539,-2910,-3100,-3322,-3744,-4424,-5298,-6262, -7249,-8169,-8887,-9381,-9727,-9897,-9739,-9198,-8351,-7318, -6264,-5421,-4971,-4939,-5157,-5398,-5501,-5414,-5067,-4384, -3386,-2158,-734,898,2692,4520,6304,7991,9466,10584, 11294,11642,11702,11588,11419,11244,11023,10663,10086,9270, 8242,7013,5559,3917,2210,620,-711,-1661,-2231,-2557, -2821,-3144,-3628,-4339,-5248,-6219,-7129,-7948,-8678,-9304, -9764,-9948,-9749,-9128,-8163,-7069,-6107,-5450,-5122,-5085, -5248,-5449,-5529,-5414,-5068,-4442,-3504,-2315,-930,648, 2409,4274,6110,7809,9253,10337,11012,11325,11422,11441, 11412,11300,11084,10717,10140,9346,8374,7177,5672,3931, 2191,682,-524,-1410,-1959,-2266,-2543,-2970,-3582,-4339, -5181,-6073,-6951,-7771,-8562,-9320,-9874,-10002,-9641,-8917, -7969,-6945,-6058,-5481,-5234,-5226,-5351,-5507,-5592,-5494, -5141,-4520,-3653,-2545,-1184,411,2177,4051,5935,7647, 9028,10036,10696,11065,11266,11403,11467,11375,11123,10758, 10271,9568,8569,7256,5697,3984,2272,766,-363,-1119, -1618,-1990,-2363,-2866,-3551,-4333,-5104,-5885,-6745,-7693, -8634,-9439,-9937,-9977,-9545,-8774,-7841,-6907,-6121,-5594, -5354,-5356,-5485,-5606,-5650,-5547,-5203,-4601,-3792,-2763, -1446,169,1992,3911,5802,7474,8769,9708,10401,10905, 11225,11379,11419,11372,11217,10913,10438,9741,8731,7360, 5729,4017,2368,930,-140,-814,-1271,-1726,-2261,-2851, -3485,-4163,-4888,-5696,-6617,-7647,-8676,-9488,-9904,-9857, -9408,-8655,-7735,-6847,-6148,-5691,-5461,-5437,-5537,-5637, -5630,-5488,-5178,-4665,-3930,-2940,-1638,2,1890,3833, 5630,7167,8424,9433,10202,10728,11061,11254,11331,11315, 11230,11018,10593,9877,8822,7421,5751,4010,2407,1118, 193,-477,-1044,-1602,-2178,-2759,-3335,-3930,-4629,-5508, -6541,-7629,-8653,-9431,-9791,-9685,-9213,-8488,-7620,-6784, -6138,-5731,-5534,-5502,-5562,-5626,-5604,-5449,-5190,-4804, -4177,-3159,-1748,-66,1753,3602,5343,6849,8099,9139, 9962,10521,10854,11075,11227,11288,11245,11084,10721,10009, 8864,7364,5681,4018,2539,1357,475,-242,-920,-1553, -2094,-2593,-3117,-3714,-4455,-5400,-6518,-7658,-8661,-9375, -9684,-9555,-9061,-8332,-7521,-6765,-6169,-5786,-5625,-5610, -5594,-5543,-5522,-5513,-5387,-5019,-4343,-3302,-1888,-212, 1577,3345,5025,6544,7839,8874,9673,10254,10648,10898, 11068,11228,11329,11238,10832,10026,8792,7250,5615,4092, 2759,1620,674,-128,-839,-1455,-1952,-2389,-2871,-3492, -4312,-5327,-6477,-7636,-8635,-9298,-9546,-9405,-8928,-8187, -7369,-6688,-6211,-5889,-5672,-5553,-5494,-5473,-5516,-5589, -5531,-5169,-4432,-3359,-1995,-379,1395,3165,4802,6277, 7584,8656,9445,9990,10383,10694,10971,11254,11467,11404, 10906,9969,8687,7201,5672,4247,2978,1842,831,-34, -732,-1277,-1733,-2164,-2646,-3280,-4162,-5263,-6439,-7558, -8532,-9218,-9454,-9230,-8679,-7977,-7291,-6720,-6268,-5904, -5632,-5446,-5374,-5442,-5588,-5677,-5578,-5210,-4502,-3432, -2060,-479,1228,2953,4590,6071,7370,8421,9179,9699, 10111,10528,10980,11395,11609,11466,10886,9901,8631,7231, 5813,4436,3144,1987,975,97,-603,-1093,-1475,-1896, -2443,-3144,-4039,-5140,-6362,-7548,-8521,-9128,-9283,-9017, -8479,-7862,-7309,-6816,-6322,-5873,-5573,-5424,-5382,-5469, -5646,-5770,-5679,-5296,-4583,-3526,-2172,-624,1030,2722, 4378,5891,7150,8097,8796,9366,9903,10461,11041,11521, 11684,11426,10795,9853,8648,7290,5923,4605,3319,2092, 1037,216,-396,-868,-1280,-1709,-2234,-2958,-3929,-5105, -6373,-7571,-8504,-9000,-9061,-8824,-8408,-7897,-7365,-6841, -6323,-5869,-5567,-5440,-5458,-5599,-5797,-5912,-5814,-5418, -4689,-3658,-2366,-836,864,2602,4249,5717,6907,7778, 8457,9135,9858,10562,11187,11640,11769,11484,10818,9883, 8755,7475,6116,4756,3450,2242,1191,369,-218,-664, -1076,-1504,-2024,-2793,-3892,-5195,-6489,-7608,-8433,-8875, -8946,-8768,-8432,-7981,-7448,-6889,-6356,-5910,-5603,-5471, -5543,-5759,-5971,-6029,-5894,-5533,-4855,-3840,-2552,-1017, 731,2522,4141,5480,6554,7437,8222,9007,9837,10662, 11355,11764,11808,11503,10894,10007,8885,7616,6271,4895, 3569,2378,1353,515,-94,-499,-824,-1228,-1846,-2766, -3965,-5290,-6555,-7609,-8361,-8785,-8904,-8777,-8466,-8035, -7524,-6955,-6384,-5919,-5648,-5563,-5650,-5853,-6038,-6078, -5936,-5616,-5016,-4042,-2693,-1072,667,2378,3918,5204, 6228,7104,7981,8923,9881,10750,11426,11806,11840,11548, 10975,10118,8998,7722,6392,5049,3728,2493,1432,637, 113,-220,-521,-971,-1713,-2762,-4001,-5276,-6489,-7527, -8257,-8655,-8812,-8768,-8503,-8056,-7511,-6929,-6362,-5907, -5674,-5660,-5771,-5908,-6024,-6104,-6075,-5797,-5158,-4149, -2788,-1138,619,2260,3670,4867,5908,6866,7841,8886, 9921,10804,11449,11822,11901,11658,11070,10192,9121,7918, 6599,5207,3838,2571,1528,825,423,129,-240,-799, -1620,-2715,-3979,-5244,-6396,-7369,-8089,-8540,-8751,-8745, -8514,-8067,-7470,-6846,-6324,-5969,-5774,-5710,-5775,-5927, -6095,-6224,-6243,-5998,-5335,-4243,-2820,-1180,507,2050, 3353,4488,5566,6634,7709,8787,9831,10748,11442,11840, 11920,11675,11103,10263,9259,8105,6751,5264,3835,2622, 1690,1064,689,399,-11,-670,-1581,-2698,-3930,-5173, -6308,-7235,-7939,-8461,-8773,-8771,-8456,-7967,-7423,-6869, -6376,-6027,-5828,-5743,-5775,-5939,-6185,-6405,-6442,-6156, -5437,-4290,-2827,-1226,326,1731,2997,4172,5284,6378, 7496,8627,9723,10687,11404,11792,11848,11620,11133,10394, 9404,8181,6769,5274,3859,2691,1860,1329,961,609, 136,-566,-1542,-2709,-3904,-5056,-6150,-7134,-7924,-8477, -8757,-8720,-8398,-7920,-7406,-6906,-6442,-6070,-5826,-5732, -5794,-6001,-6304,-6589,-6635,-6258,-5438,-4266,-2858,-1348, 109,1449,2703,3896,5018,6120,7294,8531,9689,10625, 11282,11672,11792,11632,11211,10530,9549,8255,6760,5269, 3945,2860,2077,1596,1272,879,286,-514,-1488,-2591, -3750,-4908,-6017,-7029,-7865,-8431,-8657,-8580,-8300,-7889, -7396,-6886,-6424,-6032,-5742,-5634,-5767,-6088,-6461,-6733, -6712,-6263,-5402,-4250,-2911,-1480,-74,1239,2438,3573, 4728,5945,7206,8458,9608,10541,11189,11602,11809,11756, 11375,10659,9633,8318,6813,5316,4030,3051,2379,1924, 1538,1068,432,-385,-1343,-2404,-3554,-4752,-5913,-6941, -7766,-8321,-8540,-8455,-8203,-7858,-7415,-6897,-6386,-5952, -5654,-5590,-5814,-6229,-6626,-6824,-6716,-6250,-5421,-4265, -2924,-1566,-285,938,2125,3283,4479,5783,7119,8358, 9431,10338,11065,11579,11843,11830,11491,10772,9672,8273, 6760,5345,4164,3276,2662,2193,1718,1175,537,-239, -1186,-2271,-3446,-4668,-5863,-6909,-7706,-8205,-8425,-8408, -8224,-7909,-7461,-6905,-6317,-5855,-5634,-5695,-5977,-6372, -6737,-6923,-6791,-6274,-5406,-4264,-2975,-1697,-517,612, 1779,3018,4318,5650,6961,8182,9258,10169,10929,11526, 11892,11939,11588,10813,9639,8192,6707,5396,4337,3510, 2885,2372,1862,1299,662,-99,-1038,-2147,-3373,-4633, -5817,-6827,-7585,-8065,-8312,-8401,-8305,-7966,-7415,-6795, -6241,-5841,-5672,-5779,-6110,-6513,-6849,-7012,-6870,-6312, -5382,-4246,-3078,-1942,-817,338,1532,2787,4130,5499, 6785,7955,9042,10026,10872,11557,12009,12084,11666,10783, 9565,8175,6777,5528,4511,3715,3086,2532,2010,1479, 858,77,-888,-2022,-3282,-4564,-5707,-6635,-7375,-7938, -8286,-8398,-8265,-7881,-7311,-6682,-6154,-5816,-5713,-5845, -6183,-6619,-6979,-7089,-6844,-6241,-5357,-4313,-3233,-2175, -1097,63,1302,2591,3949,5313,6567,7695,8786,9868, 10864,11648,12109,12132,11648,10713,9494,8168,6870,5682, 4669,3872,3243,2685,2166,1672,1082,254,-815,-2012, -3233,-4428,-5535,-6488,-7273,-7890,-8293,-8416,-8225,-7781, -7213,-6626,-6099,-5745,-5694,-5938,-6340,-6753,-7046,-7080, -6770,-6150,-5327,-4392,-3398,-2382,-1323,-167,1107,2455, 3798,5072,6275,7432,8598,9776,10873,11725,12160,12103, 11572,10652,9470,8186,6951,5830,4837,3998,3349,2852, 2411,1909,1230,330,-749,-1927,-3126,-4278,-5357,-6363, -7232,-7876,-8251,-8353,-8180,-7739,-7132,-6508,-5995,-5707, -5739,-6055,-6492,-6870,-7080,-7039,-6703,-6098,-5321,-4479, -3591,-2613,-1518,-310,986,2319,3606,4804,5973,7205, 8502,9770,10898,11751,12175,12080,11512,10607,9504,8303, 7084,5935,4943,4156,3563,3093,2662,2117,1347,384, -661,-1760,-2926,-4116,-5239,-6257,-7143,-7815,-8207,-8308, -8108,-7637,-6994,-6350,-5887,-5713,-5840,-6174,-6588,-6938, -7083,-6963,-6602,-6065,-5395,-4630,-3783,-2812,-1686,-435, 840,2077,3278,4467,5690,6992,8371,9730,10914,11731, 12081,11974,11473,10637,9555,8357,7148,6011,5039,4322, 3814,3359,2838,2203,1420,497,-522,-1626,-2800,-3992, -5131,-6173,-7090,-7810,-8248,-8334,-8067,-7532,-6882,-6275, -5872,-5779,-5978,-6333,-6708,-6988,-7063,-6891,-6538,-6094, -5544,-4841,-3964,-2940,-1814,-617,606,1795,2934,4096, 5392,6821,8288,9671,10840,11644,11990,11904,11455,10670, 9579,8335,7122,6067,5206,4536,4008,3512,2953,2296, 1532,644,-379,-1515,-2686,-3845,-4991,-6103,-7082,-7816, -8238,-8296,-7983,-7397,-6738,-6195,-5891,-5870,-6108,-6474, -6796,-6963,-6955,-6807,-6559,-6193,-5662,-4959,-4092,-3053, -1897,-734,380,1484,2616,3841,5217,6727,8249,9629, 10765,11564,11958,11930,11486,10658,9545,8334,7185,6200, 5404,4752,4189,3667,3121,2465,1668,766,-228,-1326, -2490,-3679,-4875,-6046,-7074,-7817,-8198,-8197,-7845,-7240, -6584,-6099,-5917,-6011,-6255,-6533,-6768,-6896,-6881,-6753, -6578,-6297,-5794,-5045,-4128,-3091,-1989,-902,123,1156, 2309,3632,5099,6629,8130,9517,10698,11547,11975,11947, 11458,10595,9524,8408,7332,6359,5562,4945,4413,3874, 3291,2620,1825,920,-58,-1110,-2253,-3493,-4783,-6003, -7031,-7781,-8156,-8084,-7626,-7012,-6462,-6104,-5987,-6107, -6345,-6568,-6718,-6805,-6828,-6785,-6662,-6391,-5877,-5093, -4138,-3114,-2122,-1175,-207,865,2084,3453,4941,6478, 8000,9434,10676,11563,11977,11912,11411,10573,9549,8478, 7446,6513,5743,5128,4599,4054,3429,2729,1966,1116, 146,-928,-2088,-3351,-4708,-6017,-7079,-7769,-8049,-7917, -7449,-6870,-6416,-6175,-6127,-6225,-6403,-6572,-6697,-6791, -6867,-6910,-6827,-6511,-5918,-5106,-4188,-3253,-2358,-1472, -496,623,1862,3214,4697,6291,7908,9404,10649,11522, 11933,11852,11351,10546,9567,8516,7510,6641,5928,5303, 4715,4141,3540,2855,2083,1253,339,-720,-1945,-3315, -4740,-6066,-7121,-7763,-7940,-7722,-7287,-6817,-6457,-6269, -6254,-6337,-6440,-6547,-6671,-6821,-6971,-7048,-6929,-6537, -5889,-5106,-4288,-3451,-2587,-1689,-717,357,1567,2942, 4475,6118,7787,9323,10569,11418,11834,11780,11281,10474, 9529,8549,7602,6762,6056,5436,4841,4235,3608,2944, 2235,1451,556,-519,-1819,-3297,-4786,-6093,-7073,-7647, -7769,-7523,-7121,-6764,-6511,-6364,-6317,-6342,-6395,-6493, -6669,-6894,-7067,-7076,-6867,-6454,-5862,-5144,-4357,-3555, -2738,-1875,-942,90,1287,2710,4327,6023,7690,9227, 10496,11355,11739,11668,11211,10473,9568,8608,7712,6936, 6245,5591,4963,4352,3733,3099,2460,1744,834,-319, -1711,-3252,-4770,-6052,-6954,-7428,-7505,-7299,-6997,-6750, -6570,-6424,-6308,-6257,-6319,-6498,-6730,-6950,-7084,-7053, -6814,-6411,-5875,-5206,-4432,-3640,-2878,-2099,-1216,-169, 1069,2513,4146,5892,7612,9165,10410,11261,11656,11584, 11139,10446,9599,8700,7858,7121,6427,5726,5051,4440, 3872,3314,2732,2034,1087,-156,-1644,-3234,-4744,-5977, -6796,-7176,-7233,-7136,-6985,-6791,-6560,-6363,-6249,-6227, -6314,-6525,-6782,-6976,-7059,-7024,-6836,-6458,-5899,-5217, -4502,-3804,-3091,-2329,-1479,-465,798,2310,3991,5745, 7474,9042,10290,11133,11531,11481,11047,10376,9587,8777, 8001,7256,6518,5785,5103,4512,4006,3532,2996,2279, 1267,-68,-1649,-3282,-4729,-5832,-6558,-6958,-7104,-7096, -6996,-6796,-6525,-6297,-6208,-6249,-6377,-6573,-6803,-7001, -7099,-7047,-6822,-6430,-5896,-5257,-4591,-3948,-3301,-2585, -1755,-739,547,2102,3833,5612,7340,8914,10183,11022, 11393,11335,10941,10334,9625,8883,8128,7339,6538,5798, 5150,4598,4153,3765,3278,2500,1353,-94,-1690,-3250, -4601,-5634,-6346,-6799,-7037,-7080,-6945,-6698,-6467,-6333, -6278,-6298,-6419,-6643,-6884,-7057,-7143,-7090,-6857,-6452, -5930,-5348,-4753,-4160,-3548,-2866,-2028,-960,369,1942, 3689,5518,7304,8891,10135,10946,11302,11257,10940,10452, 9824,9100,8328,7514,6659,5855,5212,4751,4409,4058, 3510,2614,1354,-141,-1699,-3158,-4421,-5464,-6251,-6757, -6998,-7041,-6928,-6715,-6500,-6373,-6325,-6350,-6486,-6710, -6945,-7119,-7188,-7121,-6886,-6492,-5987,-5451,-4923,-4386, -3802,-3120,-2277,-1186,177,1780,3557,5442,7282,8865, 10041,10808,11198,11233,10991,10585,10041,9341,8509,7609, 6729,5957,5375,5004,4743,4381,3700,2657,1360,-76, -1572,-3020,-4293,-5333,-6127,-6661,-6927,-6981,-6892,-6720, -6521,-6362,-6293,-6342,-6502,-6727,-6956,-7137,-7199,-7089, -6815,-6423,-5966,-5489,-5013,-4524,-3974,-3313,-2491,-1431, -55,1613,3462,5353,7152,8709,9879,10632,11030,11144, 11018,10686,10157,9438,8546,7566,6673,6023,5610,5326, 5035,4579,3821,2751,1457,38,-1438,-2873,-4148,-5183, -5972,-6514,-6810,-6885,-6803,-6635,-6449,-6307,-6254,-6327, -6515,-6759,-6993,-7158,-7189,-7036,-6738,-6380,-5987,-5553, -5089,-4632,-4156,-3564,-2749,-1658,-262,1426,3322,5251, 7020,8501,9636,10416,10867,11064,11056,10803,10240,9411, 8445,7499,6709,6162,5825,5566,5245,4724,3923,2845, 1554,126,-1354,-2766,-4017,-5063,-5873,-6420,-6722,-6819, -6757,-6588,-6401,-6278,-6253,-6346,-6570,-6850,-7079,-7190, -7161,-6997,-6730,-6389,-5995,-5586,-5190,-4800,-4369,-3819, -3031,-1911,-460,1261,3159,5081,6831,8259,9338,10140, 10716,11058,11114,10825,10187,9304,8346,7470,6787,6317, 6006,5749,5417,4874,4039,2934,1632,205,-1257,-2648, -3892,-4951,-5784,-6346,-6649,-6760,-6713,-6542,-6340,-6222, -6260,-6424,-6652,-6896,-7106,-7216,-7163,-6968,-6697,-6369, -5991,-5614,-5295,-4997,-4617,-4068,-3271,-2140,-644,1149, 3080,4939,6577,7957,9089,9990,10683,11114,11170,10800, 10098,9223,8325,7520,6905,6495,6216,5950,5587,5021, 4171,3051,1742,331,-1099,-2480,-3735,-4796,-5629,-6219, -6560,-6660,-6574,-6404,-6250,-6188,-6252,-6440,-6679,-6902, -7083,-7172,-7116,-6920,-6636,-6297,-5947,-5636,-5380,-5138, -4828,-4327,-3505,-2287,-709,1101,2972,4732,6289,7677, 8920,9958,10721,11145,11164,10758,10032,9170,8330,7601, 7052,6693,6446,6169,5763,5163,4309,3194,1876,460, -953,-2303,-3560,-4664,-5523,-6109,-6438,-6526,-6432,-6279, -6179,-6180,-6271,-6444,-6674,-6915,-7093,-7137,-7046,-6858, -6592,-6250,-5901,-5639,-5470,-5318,-5063,-4559,-3665,-2356, -743,999,2749,4426,5993,7456,8792,9907,10705,11108, 11078,10653,9941,9112,8320,7675,7210,6882,6618,6340, 5946,5320,4419,3294,2004,611,-806,-2175,-3447,-4565, -5431,-6015,-6326,-6408,-6337,-6231,-6163,-6175,-6292,-6495, -6728,-6946,-7099,-7131,-7033,-6827,-6526,-6167,-5857,-5696, -5661,-5595,-5325,-4730,-3748,-2421,-860,796,2466,4112, 5725,7276,8675,9821,10638,11037,10968,10508,9830,9074, 8337,7722,7302,7033,6797,6490,6050,5406,4516,3399, 2127,763,-656,-2070,-3384,-4483,-5313,-5885,-6211,-6307, -6251,-6166,-6133,-6178,-6319,-6533,-6765,-6967,-7108,-7148, -7030,-6751,-6385,-6052,-5866,-5845,-5886,-5829,-5506,-4822, -3802,-2522,-1055,537,2191,3852,5494,7104,8587,9786, 10586,10944,10862,10431,9779,9058,8379,7840,7464,7198, 6952,6627,6139,5471,4610,3539,2276,896,-546,-1981, -3304,-4407,-5239,-5800,-6112,-6205,-6172,-6122,-6125,-6193, -6330,-6538,-6797,-7040,-7179,-7158,-6954,-6610,-6244,-6003, -5963,-6055,-6114,-5989,-5600,-4892,-3878,-2637,-1246,268, 1904,3621,5352,7012,8522,9745,10558,10890,10785,10367, 9757,9072,8457,8004,7689,7414,7110,6752,6276,5622, 4765,3702,2436,1040,-418,-1856,-3187,-4305,-5148,-5689, -5971,-6085,-6118,-6108,-6095,-6145,-6313,-6585,-6883,-7132, -7233,-7107,-6790,-6426,-6157,-6044,-6083,-6201,-6259,-6109, -5663,-4931,-3960,-2802,-1478,13,1663,3418,5207,6930, 8467,9691,10496,10816,10692,10263,9688,9088,8555,8141, 7824,7541,7235,6878,6412,5773,4926,3864,2601,1193, -293,-1759,-3081,-4165,-4982,-5537,-5854,-5992,-6036,-6026, -6002,-6069,-6311,-6674,-7008,-7193,-7183,-6968,-6625,-6294, -6103,-6096,-6216,-6339,-6346,-6155,-5702,-4991,-4081,-3006, -1737,-242,1437,3217,5035,6807,8391,9616,10371,10650, 10530,10142,9630,9106,8636,8239,7907,7622,7339,6987, 6506,5878,5077,4034,2740,1289,-205,-1656,-2961,-4024, -4830,-5413,-5784,-5939,-5932,-5878,-5906,-6094,-6425,-6797, -7090,-7212,-7106,-6810,-6467,-6224,-6133,-6190,-6333,-6449, -6425,-6192,-5736,-5081,-4247,-3224,-1978,-498,1183,3005, 4886,6705,8297,9493,10210,10471,10381,10062,9614,9130, 8695,8333,8016,7724,7436,7106,6656,6045,5237,4173, 2838,1358,-120,-1514,-2786,-3892,-4765,-5364,-5692,-5805, -5796,-5773,-5863,-6142,-6548,-6924,-7145,-7160,-6972,-6655, -6357,-6202,-6196,-6286,-6400,-6477,-6445,-6229,-5800,-5191, -4416,-3440,-2224,-764,937,2828,4783,6615,8152,9304, 10027,10316,10248,9967,9591,9177,8767,8404,8094,7806, 7523,7226,6845,6252,5379,4236,2904,1484,41,-1373, -2681,-3810,-4690,-5273,-5560,-5631,-5625,-5683,-5893,-6251, -6670,-7010,-7151,-7068,-6826,-6537,-6310,-6212,-6239,-6341, -6447,-6494,-6442,-6242,-5856,-5299,-4594,-3685,-2495,-993, 777,2720,4686,6501,8003,9121,9833,10140,10112,9879, 9562,9217,8841,8457,8136,7898,7685,7414,7000,6368, 5480,4352,3057,1665,220,-1228,-2583,-3731,-4575,-5092, -5331,-5416,-5471,-5629,-5955,-6379,-6770,-7027,-7087,-6948, -6690,-6437,-6272,-6206,-6244,-6363,-6487,-6521,-6427,-6221, -5897,-5433,-4792,-3904,-2705,-1172,646,2623,4583,6363, 7842,8948,9638,9944,9984,9850,9579,9213,8826,8487, 8229,8042,7853,7576,7133,6468,5585,4513,3268,1862, 371,-1111,-2476,-3609,-4408,-4864,-5077,-5198,-5354,-5628, -6027,-6468,-6818,-6993,-6988,-6835,-6591,-6357,-6220,-6208, -6283,-6397,-6484,-6488,-6404,-6240,-5989,-5617,-5027,-4130, -2894,-1344,476,2468,4441,6194,7618,8690,9404,9790, 9904,9795,9519,9153,8802,8529,8337,8169,7958,7649, 7198,6560,5710,4668,3437,2003,446,-1088,-2437,-3500, -4222,-4637,-4862,-5056,-5329,-5699,-6130,-6541,-6846,-6982, -6927,-6734,-6513,-6340,-6256,-6271,-6356,-6448,-6484,-6451, -6397,-6322,-6160,-5826,-5255,-4379,-3132,-1529,343,2330, 4253,5954,7356,8443,9203,9650,9803,9695,9413,9099, 8832,8620,8449,8282,8064,7741,7285,6673,5872,4859, 3603,2110,498,-1046,-2350,-3329,-3976,-4385,-4673,-4955, -5307,-5740,-6199,-6589,-6829,-6902,-6814,-6622,-6427,-6309, -6285,-6317,-6362,-6408,-6433,-6430,-6410,-6381,-6292,-6032, -5483,-4570,-3275,-1626,255,2200,4055,5726,7160,8293, 9085,9542,9692,9592,9352,9101,8898,8725,8552,8367, 8143,7840,7423,6848,6079,5057,3739,2169,545,-930, -2157,-3090,-3717,-4133,-4482,-4861,-5297,-5766,-6222,-6597, -6796,-6792,-6663,-6519,-6404,-6322,-6289,-6306,-6345,-6366, -6356,-6357,-6400,-6451,-6430,-6216,-5665,-4709,-3366,-1719, 113,2005,3846,5539,7002,8157,8959,9418,9566,9488, 9304,9111,8951,8798,8621,8408,8181,7927,7594,7074, 6277,5178,3801,2217,607,-820,-1977,-2848,-3469,-3924, -4328,-4780,-5302,-5831,-6267,-6560,-6699,-6690,-6578,-6447, -6362,-6326,-6315,-6319,-6319,-6296,-6273,-6313,-6441,-6581, -6607,-6389,-5809,-4828,-3494,-1881,-87,1789,3654,5376, 6835,7971,8767,9232,9401,9373,9268,9135,8979,8788, 8590,8412,8243,8049,7757,7245,6405,5231,3807,2244, 691,-693,-1811,-2627,-3221,-3727,-4241,-4787,-5345,-5873, -6285,-6529,-6619,-6606,-6527,-6424,-6359,-6345,-6344,-6313, -6243,-6184,-6199,-6332,-6543,-6724,-6763,-6532,-5933,-4958, -3654,-2075,-290,1600,3477,5208,6662,7771,8546,9013, 9237,9302,9267,9147,8958,8744,8560,8435,8353,8230, 7938,7375,6486,5288,3843,2273,764,-539,-1574,-2361, -2990,-3581,-4185,-4793,-5368,-5878,-6269,-6490,-6554,-6527, -6483,-6452,-6437,-6417,-6354,-6241,-6120,-6075,-6167,-6388, -6634,-6821,-6859,-6639,-6052,-5091,-3812,-2257,-468,1455, 3343,5040,6455,7549,8336,8846,9140,9276,9276,9137, 8913,8722,8608,8551,8507,8403,8125,7544,6597,5337, 3870,2334,894,-326,-1305,-2095,-2786,-3447,-4107,-4759, -5370,-5875,-6218,-6396,-6455,-6464,-6470,-6489,-6491,-6431, -6297,-6135,-6022,-6019,-6156,-6405,-6672,-6861,-6887,-6664, -6113,-5200,-3944,-2379,-587,1313,3164,4809,6169,7247, 8074,8665,9019,9172,9160,9028,8846,8710,8652,8649, 8647,8562,8263,7633,6619,5314,3874,2432,1094,-64, -1023,-1825,-2562,-3294,-4024,-4716,-5334,-5810,-6108,-6265, -6356,-6440,-6512,-6535,-6489,-6373,-6206,-6038,-5950,-6002, -6185,-6433,-6682,-6876,-6928,-6725,-6188,-5296,-4045,-2459, -658,1191,2950,4533,5886,6996,7868,8498,8886,9053, 9047,8927,8785,8702,8710,8788,8854,8766,8395,7675, 6619,5323,3916,2537,1282,192,-735,-1560,-2363,-3181, -3985,-4703,-5276,-5691,-5974,-6170,-6325,-6467,-6575,-6599, -6505,-6324,-6135,-5999,-5953,-6028,-6228,-6498,-6764,-6974, -7056,-6897,-6377,-5453,-4153,-2554,-786,1016,2738,4313, 5699,6852,7754,8411,8826,9006,8982,8853,8738,8728, 8829,8974,9053,8931,8500,7720,6633,5350,3986,2663, 1470,437,-473,-1353,-2250,-3140,-3955,-4656,-5208,-5602, -5885,-6136,-6367,-6546,-6632,-6609,-6480,-6279,-6074,-5947, -5944,-6047,-6233,-6500,-6818,-7096,-7219,-7070,-6535,-5575, -4253,-2677,-959,801,2514,4106,5515,6703,7650,8342, 8754,8896,8852,8756,8723,8795,8963,9146,9216,9048, 8565,7749,6635,5352,4056,2843,1737,721,-238,-1191, -2154,-3079,-3887,-4545,-5068,-5482,-5819,-6122,-6392,-6579, -6635,-6561,-6396,-6199,-6024,-5913,-5898,-5988,-6182,-6490, -6871,-7205,-7343,-7178,-6627,-5662,-4348,-2807,-1139,577, 2272,3868,5312,6546,7521,8208,8592,8713,8689,8670, 8728,8874,9087,9300,9384,9179,8616,7738,6633,5401, 4183,3057,2009,986,-37,-1064,-2064,-2985,-3781,-4427, -4939,-5375,-5773,-6130,-6404,-6562,-6597,-6515,-6343,-6152, -5992,-5880,-5840,-5926,-6175,-6552,-6962,-7288,-7417,-7249, -6697,-5730,-4434,-2942,-1335,342,2030,3654,5153,6434, 7404,8041,8397,8542,8567,8593,8723,8962,9249,9480, 9525,9265,8648,7730,6640,5495,4381,3315,2270,1201, 123,-952,-1973,-2883,-3649,-4282,-4826,-5322,-5780,-6157, -6410,-6536,-6563,-6506,-6361,-6154,-5952,-5812,-5788,-5912, -6200,-6612,-7049,-7381,-7498,-7319,-6767,-5813,-4562,-3143, -1584,100,1826,3487,4998,6279,7242,7865,8199,8340, 8406,8506,8718,9046,9399,9636,9618,9273,8614,7718, 6694,5633,4592,3560,2489,1365,222,-878,-1882,-2757, -3500,-4154,-4757,-5311,-5780,-6138,-6393,-6547,-6588,-6513, -6347,-6126,-5894,-5730,-5726,-5903,-6226,-6654,-7112,-7464, -7568,-7355,-6803,-5905,-4728,-3349,-1800,-112,1638,3327, 4851,6115,7052,7650,7970,8109,8211,8410,8748,9166, 9541,9733,9652,9257,8589,7736,6786,5804,4811,3777, 2668,1497,339,-739,-1704,-2572,-3355,-4060,-4691,-5247, -5720,-6093,-6366,-6541,-6596,-6504,-6297,-6045,-5806,-5643, -5640,-5853,-6243,-6718,-7169,-7486,-7571,-7363,-6837,-5992, -4879,-3533,-1979,-274,1488,3186,4719,5976,6882,7434, 7726,7890,8064,8374,8825,9311,9678,9813,9665,9237, 8590,7801,6944,6028,5036,3950,2802,1647,527,-528, -1502,-2388,-3195,-3933,-4590,-5158,-5641,-6051,-6360,-6538, -6584,-6492,-6268,-5974,-5704,-5561,-5615,-5866,-6274,-6758, -7212,-7511,-7579,-7392,-6924,-6140,-5059,-3724,-2174,-455, 1337,3066,4595,5810,6656,7168,7460,7680,7954,8370, 8897,9417,9767,9842,9635,9198,8605,7898,7095,6194, 5184,4082,2940,1817,718,-344,-1346,-2249,-3056,-3801, -4490,-5102,-5618,-6045,-6381,-6587,-6620,-6484,-6222,-5904, -5633,-5519,-5624,-5920,-6336,-6807,-7244,-7540,-7619,-7460, -7034,-6301,-5259,-3935,-2370,-620,1206,2958,4461,5606, 6388,6881,7199,7489,7876,8404,8985,9471,9754,9793, 9596,9205,8663,7999,7207,6290,5278,4210,3110,1991, 880,-178,-1166,-2081,-2926,-3700,-4394,-5018,-5588,-6070, -6424,-6618,-6626,-6452,-6146,-5806,-5562,-5501,-5641,-5950, -6369,-6835,-7260,-7548,-7640,-7511,-7129,-6449,-5442,-4117, -2514,-721,1123,2851,4298,5373,6095,6576,6966,7373, 7878,8474,9053,9487,9722,9754,9594,9251,8738,8086, 7308,6409,5408,4350,3262,2157,1054,-13,-1005,-1914, -2760,-3544,-4261,-4918,-5532,-6058,-6430,-6596,-6559,-6342, -6018,-5690,-5481,-5458,-5620,-5935,-6364,-6828,-7233,-7507, -7618,-7548,-7236,-6600,-5600,-4252,-2614,-787,1066,2740, 4090,5079,5774,6292,6776,7307,7912,8524,9063,9471, 9717,9764,9608,9284,8811,8193,7429,6538,5553,4510, 3426,2327,1230,169,-833,-1758,-2599,-3384,-4135,-4859, -5527,-6078,-6444,-6579,-6501,-6265,-5939,-5629,-5447,-5452, -5636,-5964,-6385,-6827,-7216,-7502,-7651,-7637,-7388,-6800, -5798,-4398,-2695,-841,979,2566,3806,4725,5436,6041, 6626,7237,7877,8502,9042,9445,9683,9746,9626,9326, 8864,8253,7510,6644,5681,4658,3592,2494,1393,334, -661,-1588,-2441,-3256,-4067,-4853,-5553,-6100,-6448,-6571, -6472,-6211,-5884,-5603,-5463,-5500,-5688,-6001,-6397,-6805, -7176,-7492,-7705,-7751,-7547,-6986,-5963,-4488,-2723,-884, 836,2309,3487,4407,5152,5827,6495,7177,7838,8447, 8979,9397,9647,9721,9638,9380,8935,8330,7602,6769, 5837,4818,3744,2645,1555,513,-459,-1377,-2258,-3128, -3990,-4814,-5532,-6080,-6415,-6510,-6387,-6116,-5804,-5556, -5458,-5523,-5713,-5997,-6355,-6744,-7115,-7461,-7753,-7886, -7724,-7132,-6028,-4496,-2747,-979,653,2044,3180,4122, 4932,5665,6375,7090,7772,8388,8920,9347,9623,9723, 9657,9417,8997,8416,7714,6912,5997,4969,3879,2787, 1726,711,-252,-1168,-2073,-2988,-3903,-4762,-5499,-6050, -6372,-6432,-6281,-6017,-5737,-5527,-5444,-5511,-5705,-5973, -6279,-6632,-7052,-7502,-7873,-8031,-7846,-7208,-6058,-4501, -2786,-1106,435,1784,2909,3867,4723,5507,6256,6993, 7693,8323,8867,9311,9608,9732,9677,9438,9041,8508, 7838,7031,6092,5065,4002,2945,1908,906,-49,-977, -1916,-2881,-3844,-4739,-5483,-6017,-6307,-6355,-6205,-5948, -5698,-5538,-5495,-5546,-5677,-5885,-6168,-6548,-7049,-7599, -8031,-8182,-7936,-7233,-6062,-4536,-2873,-1267,208,1518, 2646,3621,4510,5352,6147,6896,7593,8246,8834,9291, 9582,9711,9692,9506,9148,8637,7981,7169,6214,5185, 4141,3109,2099,1123,175,-783,-1781,-2809,-3814,-4731, -5483,-6009,-6268,-6280,-6130,-5923,-5728,-5607,-5571,-5589, -5651,-5795,-6081,-6539,-7132,-7747,-8205,-8342,-8048,-7286, -6099,-4613,-3018,-1464,-34,1246,2382,3396,4323,5189, 6012,6788,7513,8184,8783,9254,9562,9719,9733,9588, 9263,8755,8085,7273,6334,5311,4270,3267,2310,1361, 395,-613,-1657,-2726,-3778,-4734,-5490,-5980,-6198,-6192, -6066,-5915,-5778,-5663,-5580,-5532,-5544,-5686,-6029,-6575, -7246,-7892,-8342,-8452,-8123,-7321,-6123,-4681,-3164,-1676, -272,1007,2148,3177,4137,5033,5878,6686,7448,8137, 8727,9203,9556,9758,9794,9661,9364,8881,8196,7353, 6417,5438,4438,3469,2539,1614,641,-401,-1508,-2641, -3732,-4689,-5418,-5865,-6062,-6084,-6012,-5913,-5805,-5672, -5517,-5390,-5377,-5558,-5979,-6605,-7334,-8001,-8426,-8479, -8095,-7287,-6128,-4744,-3279,-1841,-480,777,1917,2962, 3944,4883,5774,6603,7367,8061,8667,9162,9534,9767, 9845,9746,9452,8958,8277,7446,6525,5571,4620,3690, 2788,1875,887,-206,-1390,-2590,-3697,-4624,-5304,-5724, -5930,-6019,-6026,-5968,-5843,-5656,-5440,-5273,-5263,-5490, -5980,-6679,-7443,-8095,-8480,-8484,-8065,-7262,-6165,-4848, -3423,-2008,-691,517,1655,2735,3745,4695,5610,6483, 7272,7957,8557,9076,9488,9753,9861,9791,9509,9007, 8323,7504,6605,5673,4768,3903,3048,2128,1083,-86, -1332,-2559,-3655,-4530,-5166,-5591,-5858,-6015,-6070,-6023, -5875,-5633,-5349,-5144,-5161,-5464,-6032,-6772,-7535,-8151, -8494,-8480,-8067,-7283,-6210,-4950,-3593,-2232,-935,270, 1406,2491,3524,4505,5443,6320,7110,7805,8424,8978, 9430,9734,9861,9803,9532,9042,8356,7540,6664,5789, 4943,4137,3315,2376,1251,-10,-1291,-2490,-3540,-4391, -5023,-5471,-5803,-6034,-6127,-6053,-5845,-5534,-5206,-5006, -5079,-5459,-6078,-6830,-7578,-8177,-8496,-8449,-8037,-7295, -6277,-5067,-3762,-2446,-1177,27,1175,2272,3329,4339, 5287,6161,6950,7665,8317,8896,9380,9726,9885,9828, 9550,9058,8381,7568,6726,5922,5162,4397,3553,2557, 1379,77,-1216,-2389,-3391,-4219,-4875,-5381,-5770,-6045, -6159,-6057,-5771,-5397,-5070,-4924,-5052,-5462,-6106,-6867, -7597,-8151,-8419,-8349,-7947,-7247,-6285,-5130,-3877,-2623, -1403,-209,956,2076,3143,4157,5111,5986,6778,7513, 8192,8801,9309,9680,9872,9830,9539,9028,8354,7590, 6818,6091,5393,4639,3748,2697,1497,210,-1057,-2200, -3172,-3981,-4680,-5282,-5749,-6037,-6113,-5977,-5671,-5294, -4988,-4882,-5050,-5491,-6142,-6888,-7585,-8104,-8349,-8274, -7876,-7188,-6261,-5168,-3988,-2779,-1580,-403,756,1892, 2977,3997,4942,5819,6629,7376,8069,8703,9253,9664, 9863,9803,9490,8967,8320,7631,6957,6303,5619,4837, 3910,2824,1603,330,-876,-1953,-2912,-3776,-4547,-5211, -5717,-6010,-6059,-5885,-5554,-5179,-4902,-4842,-5050,-5515, -6169,-6903,-7584,-8092,-8333,-8265,-7880,-7205,-6305,-5269, -4149,-2968,-1763,-577,581,1711,2802,3830,4783,5656, 6470,7237,7959,8633,9238,9685,9873,9766,9420,8918, 8322,7695,7089,6492,5828,5015,4028,2896,1683,452, -711,-1772,-2759,-3681,-4516,-5218,-5739,-6017,-6033,-5814, -5456,-5089,-4847,-4824,-5056,-5543,-6221,-6961,-7619,-8095, -8323,-8259,-7893,-7249,-6405,-5423,-4338,-3172,-1980,-799, 368,1513,2606,3628,4579,5456,6276,7064,7846,8593, 9230,9658,9816,9701,9358,8868,8329,7795,7263,6683, 5994,5136,4115,2981,1800,619,-518,-1587,-2611,-3594, -4497,-5237,-5749,-5987,-5963,-5725,-5362,-5003,-4787,-4800, -5062,-5564,-6251,-6996,-7646,-8092,-8288,-8219,-7877,-7275, -6475,-5533,-4482,-3342,-2170,-996,183,1351,2453,3447, 4361,5237,6095,6948,7786,8576,9234,9648,9764,9621, 9296,8864,8413,7967,7484,6892,6150,5254,4231,3129, 1988,845,-268,-1354,-2441,-3495,-4446,-5211,-5716,-5928, -5863,-5603,-5246,-4904,-4703,-4743,-5052,-5583,-6257,-6971, -7605,-8051,-8243,-8173,-7855,-7293,-6519,-5603,-4598,-3503, -2338,-1136,57,1200,2262,3237,4152,5043,5939,6848, 7754,8581,9234,9612,9698,9548,9261,8912,8547,8154, 7688,7080,6300,5377,4363,3301,2211,1096,-32,-1169, -2315,-3425,-4409,-5180,-5679,-5879,-5793,-5504,-5141,-4820, -4648,-4720,-5064,-5621,-6293,-6976,-7583,-8035,-8240,-8174, -7854,-7321,-6609,-5749,-4766,-3674,-2502,-1295,-107,1006, 2027,2980,3907,4835,5795,6781,7743,8572,9176,9501, 9569,9446,9221,8959,8666,8309,7834,7197,6400,5486, 4500,3482,2445,1358,195,-1018,-2224,-3368,-4379,-5161, -5642,-5814,-5711,-5419,-5053,-4748,-4616,-4727,-5089,-5642, -6304,-6986,-7592,-8021,-8198,-8131,-7846,-7366,-6706,-5890, -4930,-3834,-2652,-1445,-275,811,1796,2721,3657,4643, 5687,6737,7712,8525,9085,9367,9430,9361,9221,9029, 8778,8433,7943,7284,6486,5602,4666,3693,2681,1596, 405,-865,-2131,-3313,-4336,-5124,-5597,-5745,-5613,-5314, -4978,-4710,-4607,-4737,-5112,-5676,-6336,-7003,-7580,-7976, -8145,-8103,-7867,-7430,-6802,-6008,-5069,-3981,-2784,-1587, -470,555,1525,2474,3447,4490,5601,6695,7655,8404, 8924,9209,9304,9296,9231,9103,8875,8516,8003,7338, 6558,5706,4818,3891,2890,1777,553,-738,-2037,-3262, -4306,-5077,-5516,-5638,-5507,-5220,-4894,-4650,-4576,-4739, -5143,-5718,-6361,-6990,-7536,-7924,-8111,-8097,-7895,-7509, -6924,-6140,-5184,-4086,-2902,-1743,-685,284,1233,2223, 3277,4399,5549,6648,7575,8273,8751,9054,9222,9281, 9267,9174,8963,8588,8052,7406,6679,5880,5026,4121, 3136,2023,766,-581,-1927,-3178,-4229,-4980,-5397,-5517, -5398,-5114,-4793,-4575,-4549,-4747,-5158,-5725,-6364,-6974, -7484,-7858,-8076,-8117,-7963,-7607,-7036,-6249,-5269,-4163, -3024,-1928,-915,37,990,2016,3149,4354,5540,6612, 7493,8170,8647,8973,9200,9349,9396,9304,9065,8680, 8160,7538,6840,6083,5278,4398,3406,2269,974,-424, -1810,-3077,-4130,-4881,-5295,-5403,-5275,-5007,-4720,-4532, -4531,-4755,-5185,-5748,-6355,-6937,-7434,-7809,-8060,-8162, -8067,-7728,-7139,-6322,-5337,-4261,-3181,-2161,-1207,-270, 726,1826,3022,4262,5455,6496,7332,7983,8495,8888, 9172,9362,9439,9356,9110,8723,8217,7609,6934,6225, 5466,4604,3588,2411,1085,-333,-1750,-3037,-4090,-4831, -5233,-5327,-5186,-4924,-4671,-4532,-4560,-4796,-5226,-5778, -6354,-6895,-7382,-7788,-8086,-8228,-8160,-7835,-7231,-6389, -5401,-4379,-3378,-2417,-1489,-548,485,1651,2904,4151, 5306,6302,7124,7793,8343,8787,9126,9350,9439,9366, 9122,8729,8226,7664,7056,6394,5651,4794,3777,2581, 1221,-233,-1668,-2965,-4020,-4749,-5134,-5215,-5076,-4830, -4603,-4504,-4582,-4838,-5242,-5754,-6297,-6825,-7315,-7761, -8113,-8287,-8212,-7863,-7245,-6407,-5453,-4495,-3571,-2671, -1754,-764,337,1554,2820,4049,5163,6140,6975,7673, 8249,8735,9136,9406,9489,9391,9141,8769,8299,7773, 7220,6613,5897,5036,4007,2797,1407,-91,-1555,-2852, -3898,-4624,-5002,-5073,-4938,-4727,-4545,-4478,-4579,-4843, -5224,-5690,-6198,-6727,-7263,-7765,-8148,-8321,-8227,-7852, -7213,-6388,-5499,-4634,-3791,-2924,-1987,-951,207,1452, 2718,3930,5031,5988,6822,7557,8190,8721,9145,9420, 9508,9415,9167,8809,8379,7907,7395,6819,6132,5276, 4226,2983,1565,41,-1450,-2765,-3802,-4507,-4879,-4956, -4838,-4661,-4528,-4510,-4626,-4864,-5203,-5634,-6141,-6699, -7276,-7813,-8212,-8380,-8255,-7841,-7190,-6413,-5614,-4832, -4035,-3166,-2208,-1140,54,1328,2589,3763,4832,5794, 6660,7429,8105,8682,9121,9385,9468,9390,9168,8831, 8432,8015,7561,7016,6340,5490,4429,3147,1685,136, -1371,-2692,-3717,-4397,-4746,-4834,-4758,-4630,-4543,-4551, -4663,-4868,-5170,-5585,-6102,-6700,-7327,-7894,-8289,-8411, -8241,-7813,-7202,-6500,-5772,-5040,-4273,-3414,-2424,-1307, -88,1178,2416,3562,4610,5590,6498,7313,8016,8612, 9078,9364,9442,9348,9132,8838,8498,8125,7715,7216, 6563,5704,4617,3311,1824,241,-1288,-2597,-3589,-4243, -4582,-4682,-4656,-4591,-4539,-4548,-4649,-4836,-5106,-5502, -6056,-6713,-7383,-7949,-8301,-8374,-8179,-7765,-7205,-6576, -5926,-5245,-4495,-3623,-2598,-1437,-207,1030,2237,3379, 4441,5430,6352,7206,7966,8590,9047,9323,9420,9345, 9138,8869,8588,8284,7912,7430,6790,5935,4827,3479, 1960,362,-1164,-2453,-3415,-4056,-4407,-4532,-4544,-4534, -4529,-4541,-4595,-4734,-5002,-5438,-6039,-6730,-7404,-7951, -8268,-8303,-8096,-7711,-7209,-6657,-6080,-5445,-4698,-3795, -2736,-1567,-344,879,2067,3195,4262,5274,6230,7108, 7889,8546,9021,9285,9366,9308,9152,8938,8700,8436, 8104,7650,7020,6147,4999,3612,2068,469,-1044,-2320, -3261,-3882,-4246,-4438,-4529,-4550,-4528,-4509,-4538,-4655, -4931,-5415,-6067,-6784,-7448,-7956,-8230,-8245,-8045,-7704, -7276,-6789,-6249,-5630,-4886,-3968,-2889,-1713,-517,675, 1851,2984,4056,5088,6084,7004,7798,8448,8925,9202, 9291,9247,9121,8957,8773,8559,8280,7865,7229,6316, 5133,3720,2145,540,-936,-2156,-3072,-3714,-4138,-4400, -4547,-4582,-4533,-4469,-4472,-4606,-4921,-5440,-6127,-6859, -7502,-7952,-8175,-8185,-8030,-7749,-7385,-6955,-6443,-5820, -5054,-4124,-3049,-1894,-714,463,1624,2759,3856,4921, 5953,6906,7715,8361,8837,9129,9237,9201,9089,8967, 8851,8697,8453,8058,7429,6495,5271,3819,2240,667, -757,-1933,-2838,-3526,-4027,-4348,-4500,-4526,-4466,-4382, -4366,-4521,-4895,-5469,-6169,-6876,-7474,-7883,-8078,-8094, -7981,-7776,-7477,-7087,-6595,-5970,-5191,-4254,-3184,-2044, -890,266,1419,2557,3688,4798,5853,6817,7648,8316, 8797,9079,9191,9185,9112,9029,8961,8868,8670,8289, 7641,6674,5407,3930,2379,867,-512,-1691,-2635,-3369, -3927,-4293,-4452,-4442,-4342,-4250,-4259,-4462,-4891,-5501, -6200,-6872,-7419,-7790,-7985,-8036,-7974,-7820,-7564,-7202, -6726,-6106,-5322,-4382,-3324,-2210,-1084,57,1219,2369, 3506,4641,5741,6729,7561,8215,8687,8963,9080,9106, 9087,9059,9044,9008,8860,8484,7793,6780,5500,4037, 2514,1043,-303,-1491,-2493,-3297,-3893,-4266,-4413,-4378, -4254,-4160,-4211,-4471,-4938,-5551,-6225,-6867,-7378,-7722, -7926,-8012,-7986,-7856,-7631,-7291,-6813,-6176,-5395,-4490, -3472,-2382,-1280,-164,984,2151,3314,4471,5587,6592, 7422,8058,8502,8781,8923,8975,9003,9059,9119,9119, 8969,8576,7862,6827,5554,4145,2688,1266,-64,-1274, -2329,-3184,-3800,-4156,-4280,-4239,-4135,-4089,-4199,-4513, -4998,-5588,-6219,-6816,-7296,-7622,-7822,-7934,-7956,-7869, -7669,-7334,-6852,-6215,-5446,-4564,-3582,-2526,-1442,-348, 785,1968,3166,4340,5455,6462,7311,7955,8376,8634, 8790,8895,8995,9123,9246,9278,9117,8685,7938,6906, 5670,4310,2908,1530,200,-1056,-2164,-3045,-3660,-3995, -4097,-4057,-3998,-4023,-4200,-4543,-5035,-5616,-6211,-6749, -7185,-7509,-7739,-7883,-7936,-7888,-7720,-7405,-6926,-6299, -5541,-4674,-3719,-2703,-1642,-540,606,1797,3008,4204, 5338,6359,7212,7848,8260,8502,8669,8828,9015,9221, 9400,9450,9269,8800,8030,7012,5816,4500,3130,1754, 389,-923,-2075,-2967,-3566,-3881,-3975,-3951,-3922,-3989, -4216,-4599,-5097,-5657,-6214,-6717,-7134,-7468,-7726,-7901, -7981,-7962,-7825,-7529,-7051,-6422,-5683,-4853,-3935,-2942, -1894,-796,362,1577,2814,4038,5202,6240,7083,7691, 8083,8330,8525,8752,9033,9325,9536,9575,9372,8881, 8110,7121,5974,4705,3350,1945,526,-821,-1982,-2861, -3444,-3745,-3837,-3827,-3840,-3956,-4225,-4628,-5129,-5665, -6191,-6670,-7084,-7423,-7696,-7902,-8023,-8036,-7911,-7618, -7149,-6540,-5828,-5029,-4140,-3164,-2127,-1034,134,1375, 2648,3907,5100,6142,6954,7522,7898,8174,8429,8726, 9082,9433,9670,9693,9455,8951,8212,7278,6182,4939, 3574,2138,696,-670,-1832,-2695,-3249,-3532,-3628,-3657, -3725,-3888,-4173,-4579,-5073,-5591,-6089,-6541,-6946,-7313, -7622,-7858,-8004,-8040,-7928,-7636,-7183,-6607,-5930,-5160, -4305,-3366,-2343,-1248,-73,1185,2499,3807,5012,6016, 6784,7335,7724,8035,8358,8753,9186,9542,9748,9748, 9508,9029,8339,7460,6397,5152,3773,2317,863,-501, -1655,-2500,-3026,-3307,-3433,-3511,-3627,-3833,-4149,-4563, -5035,-5518,-5983,-6418,-6835,-7223,-7570,-7842,-8010,-8051, -7950,-7673,-7241,-6690,-6038,-5292,-4470,-3578,-2594,-1503, -300,997,2345,3674,4873,5844,6565,7094,7506,7882, 8294,8771,9242,9595,9768,9751,9536,9110,8468,7618, 6572,5335,3933,2441,971,-374,-1497,-2324,-2843,-3129, -3293,-3419,-3580,-3820,-4164,-4587,-5033,-5475,-5914,-6356, -6791,-7198,-7564,-7860,-8045,-8088,-7993,-7750,-7342,-6793, -6155,-5455,-4689,-3830,-2857,-1756,-527,813,2204,3535, 4694,5616,6302,6837,7300,7759,8251,8766,9238,9592, 9779,9769,9571,9186,8601,7785,6739,5481,4063,2563, 1095,-234,-1331,-2135,-2651,-2950,-3145,-3322,-3529,-3796, -4145,-4553,-4979,-5397,-5818,-6265,-6730,-7167,-7544,-7844, -8041,-8109,-8023,-7776,-7383,-6870,-6273,-5616,-4899,-4082, -3117,-1992,-711,683,2097,3406,4502,5370,6061,6643, 7173,7694,8236,8782,9260,9601,9785,9806,9652,9307, 8759,7972,6926,5647,4209,2710,1251,-58,-1128,-1907, -2420,-2749,-2986,-3202,-3453,-3757,-4107,-4483,-4877,-5290, -5725,-6174,-6638,-7097,-7509,-7830,-8033,-8111,-8039,-7794, -7401,-6918,-6376,-5787,-5129,-4348,-3380,-2208,-862,570, 1967,3214,4261,5110,5814,6436,7029,7610,8187,8739, 9214,9560,9758,9815,9715,9422,8905,8124,7078,5796, 4343,2833,1389,115,-922,-1684,-2197,-2558,-2852,-3120, -3399,-3710,-4052,-4417,-4801,-5212,-5645,-6100,-6570,-7043, -7472,-7812,-8032,-8119,-8051,-7811,-7424,-6965,-6486,-5977, -5380,-4607,-3601,-2372,-987,444,1803,2996,3999,4843, 5573,6243,6895,7529,8125,8660,9128,9495,9740,9843, 9789,9546,9062,8284,7220,5928,4476,2966,1537,311, -676,-1433,-1978,-2381,-2709,-3015,-3312,-3627,-3969,-4327, -4709,-5119,-5551,-6007,-6490,-6980,-7419,-7770,-8008,-8093, -7997,-7742,-7396,-7016,-6618,-6160,-5579,-4793,-3750,-2478, -1081,326,1636,2786,3763,4613,5380,6111,6813,7473, 8067,8598,9064,9450,9739,9905,9898,9682,9217,8448, 7372,6048,4583,3108,1733,543,-429,-1193,-1775,-2218, -2578,-2903,-3227,-3556,-3888,-4232,-4608,-5025,-5463,-5923, -6419,-6937,-7413,-7781,-7995,-8036,-7917,-7687,-7416,-7135, -6816,-6395,-5802,-4977,-3888,-2583,-1193,154,1405,2528, 3516,4389,5191,5963,6703,7377,7963,8492,8978,9397, 9721,9928,9971,9792,9327,8541,7448,6119,4667,3223, 1894,743,-218,-998,-1612,-2099,-2506,-2861,-3193,-3526, -3867,-4212,-4573,-4966,-5396,-5879,-6421,-6975,-7470,-7834, -8010,-8015,-7895,-7717,-7521,-7318,-7065,-6670,-6051,-5170, -4043,-2737,-1375,-68,1134,2232,3236,4159,5010,5802, 6546,7224,7831,8371,8871,9327,9706,9968,10059,9903, 9430,8619,7512,6203,4793,3381,2082,963,25,-767, -1422,-1951,-2384,-2763,-3116,-3465,-3810,-4151,-4490,-4855, -5287,-5809,-6390,-6962,-7447,-7783,-7935,-7916,-7808,-7695, -7596,-7469,-7245,-6839,-6192,-5284,-4145,-2859,-1540,-268, 923,2027,3039,3982,4872,5698,6441,7115,7728,8278, 8792,9291,9741,10064,10183,10025,9546,8731,7622,6321, 4950,3599,2339,1226,277,-522,-1195,-1746,-2205,-2620, -3014,-3372,-3692,-3997,-4321,-4702,-5168,-5720,-6321,-6903, -7366,-7647,-7757,-7755,-7711,-7675,-7653,-7590,-7386,-6954, -6267,-5350,-4233,-2980,-1693,-450,730,1841,2872,3841, 4761,5611,6363,7027,7630,8195,8748,9304,9804,10167, 10304,10145,9647,8822,7724,6451,5118,3810,2574,1456, 495,-308,-990,-1582,-2098,-2554,-2961,-3313,-3609,-3883, -4195,-4608,-5133,-5735,-6345,-6901,-7325,-7561,-7643,-7675, -7719,-7780,-7817,-7771,-7557,-7098,-6396,-5484,-4399,-3188, -1933,-710,453,1561,2624,3646,4593,5437,6181,6851, 7465,8050,8648,9272,9835,10227,10368,10198,9688,8871, 7811,6587,5288,3986,2752,1652,709,-114,-840,-1481, -2043,-2531,-2930,-3242,-3510,-3784,-4121,-4572,-5145,-5787, -6398,-6905,-7267,-7470,-7571,-7662,-7784,-7914,-7992,-7958, -7733,-7264,-6557,-5646,-4577,-3405,-2191,-995,167,1298, 2395,3441,4393,5225,5955,6622,7255,7880,8534,9223, 9849,10264,10391,10211,9719,8930,7900,6707,5445,4172, 2959,1876,942,99,-682,-1377,-1967,-2453,-2836,-3124, -3371,-3650,-4031,-4545,-5160,-5797,-6371,-6821,-7133,-7331, -7476,-7637,-7814,-7977,-8084,-8077,-7862,-7383,-6668,-5772, -4729,-3591,-2409,-1226,-42,1134,2270,3323,4268,5097, 5818,6473,7136,7841,8572,9292,9924,10345,10481,10305, 9822,9050,8033,6862,5624,4391,3223,2159,1203,327, -493,-1232,-1847,-2330,-2686,-2954,-3204,-3523,-3969,-4534, -5164,-5774,-6290,-6692,-6989,-7202,-7383,-7594,-7831,-8039, -8173,-8172,-7950,-7463,-6752,-5885,-4894,-3791,-2622,-1434, -238,977,2159,3224,4144,4944,5670,6361,7068,7830, 8625,9375,9994,10411,10567,10416,9944,9179,8177,7026, 5818,4623,3483,2429,1454,535,-333,-1104,-1725,-2188, -2515,-2766,-3041,-3431,-3950,-4547,-5161,-5740,-6227,-6598, -6883,-7123,-7353,-7612,-7896,-8151,-8300,-8281,-8043,-7572, -6890,-6042,-5082,-4037,-2896,-1688,-448,785,1954,2999, 3900,4686,5416,6153,6923,7723,8538,9314,9961,10407, 10586,10450,9985,9230,8253,7147,5991,4845,3735,2681, 1680,710,-207,-993,-1582,-1994,-2295,-2571,-2906,-3353, -3909,-4520,-5129,-5679,-6132,-6477,-6756,-7026,-7319,-7630, -7941,-8213,-8384,-8371,-8124,-7658,-7013,-6224,-5312,-4296, -3167,-1935,-662,575,1712,2719,3603,4402,5162,5931, 6737,7572,8410,9207,9896,10385,10582,10445,9985,9251, 8305,7243,6154,5074,3993,2909,1844,826,-97,-855, -1401,-1780,-2087,-2409,-2801,-3287,-3866,-4493,-5090,-5594, -6001,-6335,-6627,-6920,-7254,-7619,-7975,-8259,-8408,-8381, -8143,-7711,-7112,-6375,-5509,-4498,-3338,-2081,-814,395, 1509,2500,3374,4189,4978,5769,6593,7461,8341,9175, 9899,10415,10625,10489,10031,9314,8420,7431,6398,5340, 4244,3110,1984,951,68,-650,-1187,-1571,-1890,-2248, -2699,-3237,-3828,-4440,-5013,-5489,-5861,-6179,-6493,-6832, -7209,-7619,-8014,-8304,-8424,-8368,-8152,-7782,-7251,-6557, -5701,-4680,-3505,-2238,-985,187,1270,2257,3140,3955, 4754,5577,6444,7347,8261,9145,9914,10435,10623,10471, 10023,9350,8535,7634,6653,5585,4444,3270,2124,1090, 223,-458,-973,-1369,-1731,-2140,-2634,-3211,-3830,-4425, -4948,-5387,-5746,-6060,-6394,-6785,-7217,-7645,-8020,-8289, -8407,-8368,-8186,-7855,-7367,-6699,-5845,-4821,-3667,-2438, -1206,-42,1017,1982,2868,3695,4497,5333,6232,7177, 8130,9047,9810,10299,10449,10298,9913,9340,8617,7777, 6830,5767,4608,3418,2279,1271,435,-234,-751,-1173, -1589,-2059,-2595,-3188,-3808,-4391,-4876,-5264,-5601,-5940, -6318,-6754,-7213,-7638,-7978,-8203,-8319,-8331,-8205,-7903, -7419,-6763,-5918,-4894,-3750,-2554,-1360,-214,849,1808, 2679,3507,4325,5171,6095,7096,8109,9019,9727,10164, 10308,10192,9869,9377,8736,7947,7002,5917,4748,3565, 2443,1463,666,29,-494,-950,-1409,-1924,-2505,-3116, -3719,-4262,-4709,-5076,-5424,-5800,-6227,-6690,-7145,-7549, -7886,-8129,-8278,-8325,-8241,-7974,-7506,-6847,-6010,-5005, -3878,-2690,-1512,-385,666,1621,2469,3269,4095,4999, 5998,7054,8083,8980,9658,10070,10217,10149,9896,9460, 8855,8085,7134,6028,4847,3673,2575,1617,841,225, -295,-783,-1294,-1855,-2463,-3076,-3647,-4141,-4553,-4928, -5317,-5740,-6194,-6661,-7106,-7493,-7829,-8112,-8311,-8382, -8322,-8098,-7665,-7004,-6151,-5166,-4079,-2907,-1711,-580, 436,1343,2171,2984,3851,4823,5894,6990,8007,8866, 9525,9949,10133,10122,9938,9572,9002,8225,7261,6147, 4958,3784,2712,1794,1040,426,-107,-636,-1215,-1837, -2459,-3048,-3576,-4031,-4435,-4835,-5260,-5708,-6167,-6626, -7067,-7466,-7818,-8115,-8344,-8465,-8431,-8215,-7800,-7173, -6350,-5369,-4271,-3091,-1898,-791,182,1051,1874,2721, 3652,4695,5815,6924,7918,8737,9375,9819,10070,10126, 9993,9669,9132,8354,7366,6243,5062,3904,2855,1977, 1262,657,95,-484,-1111,-1758,-2377,-2935,-3433,-3882, -4303,-4723,-5163,-5627,-6095,-6545,-6971,-7379,-7766,-8102, -8346,-8481,-8474,-8284,-7887,-7281,-6483,-5511,-4399,-3202, -2027,-974,-54,796,1645,2542,3534,4626,5762,6853, 7824,8631,9263,9730,10041,10176,10097,9793,9259,8483, 7483,6340,5164,4039,3033,2186,1494,884,278,-362, -1021,-1667,-2267,-2802,-3276,-3714,-4149,-4600,-5063,-5526, -5985,-6426,-6854,-7275,-7682,-8044,-8313,-8459,-8475,-8334, -7988,-7399,-6581,-5587,-4474,-3311,-2192,-1203,-326,523, 1412,2369,3415,4544,5676,6737,7685,8498,9168,9680, 10035,10225,10207,9936,9399,8606,7593,6440,5264,4171, 3223,2423,1721,1066,413,-256,-943,-1601,-2184,-2694, -3157,-3608,-4068,-4538,-5004,-5449,-5881,-6313,-6760,-7206, -7613,-7964,-8252,-8449,-8521,-8424,-8108,-7528,-6694,-5679, -4578,-3474,-2436,-1505,-650,207,1130,2141,3227,4365, 5493,6550,7493,8309,9002,9568,9983,10221,10248,10015, 9484,8662,7625,6489,5361,4322,3416,2642,1940,1244, 535,-172,-858,-1493,-2056,-2562,-3045,-3530,-4016,-4488, -4939,-5379,-5817,-6260,-6710,-7152,-7559,-7914,-8230,-8483, -8613,-8552,-8236,-7638,-6788,-5776,-4714,-3673,-2710,-1818, -950,-54,904,1951,3070,4217,5332,6381,7337,8168, 8873,9477,9970,10287,10354,10114,9558,8724,7688,6578, 5503,4536,3672,2884,2141,1404,655,-79,-752,-1359, -1919,-2452,-2958,-3446,-3920,-4388,-4849,-5301,-5748,-6195, -6631,-7055,-7464,-7862,-8241,-8550,-8712,-8656,-8323,-7698, -6846,-5872,-4870,-3895,-2979,-2110,-1233,-298,709,1782, 2914,4074,5193,6219,7149,7997,8768,9455,10020,10391, 10478,10229,9648,8800,7785,6720,5704,4783,3936,3127, 2335,1562,804,80,-593,-1210,-1792,-2350,-2874,-3359, -3821,-4281,-4753,-5218,-5661,-6086,-6503,-6920,-7351,-7801, -8249,-8610,-8781,-8708,-8351,-7714,-6876,-5950,-5021,-4118, -3238,-2366,-1479,-535,498,1617,2769,3911,5008,6031, 6968,7840,8665,9429,10062,10462,10549,10279,9682,8842, 7871,6877,5929,5033,4162,3319,2511,1725,960,230, -456,-1104,-1706,-2264,-2782,-3274,-3753,-4225,-4693,-5151, -5581,-5979,-6372,-6799,-7275,-7783,-8280,-8672,-8845,-8738, -8354,-7725,-6928,-6060,-5179,-4321,-3480,-2625,-1720,-745, 313,1445,2603,3725,4789,5805,6774,7693,8570,9393, 10075,10489,10559,10267,9670,8864,7960,7038,6137,5246, 4355,3494,2681,1894,1118,368,-329,-978,-1582,-2137, -2651,-3144,-3651,-4154,-4629,-5060,-5457,-5834,-6223,-6672, -7207,-7788,-8317,-8693,-8844,-8733,-8348,-7731,-6975,-6166, -5351,-4545,-3736,-2887,-1967,-959,128,1266,2407,3508, 4554,5561,6555,7543,8514,9395,10094,10500,10547,10246, 9685,8947,8102,7213,6319,5429,4544,3676,2845,2053, 1277,523,-181,-830,-1423,-1980,-2513,-3042,-3565,-4077, -4557,-4971,-5328,-5684,-6110,-6633,-7233,-7843,-8371,-8734, -8873,-8750,-8368,-7771,-7056,-6309,-5560,-4802,-4010,-3149, -2202,-1167,-59,1079,2187,3241,4262,5284,6333,7407, 8454,9370,10054,10432,10472,10203,9690,9008,8213,7349, 6452,5557,4688,3834,2990,2168,1382,640,-58,-713, -1313,-1867,-2415,-2989,-3550,-4055,-4486,-4864,-5207,-5569, -6029,-6613,-7262,-7887,-8412,-8769,-8901,-8763,-8376,-7810, -7149,-6452,-5747,-5028,-4253,-3380,-2396,-1329,-219,882, 1939,2946,3954,5019,6153,7304,8387,9309,9986,10356, 10412,10188,9737,9103,8342,7501,6629,5756,4893,4035, 3183,2353,1553,801,116,-509,-1105,-1697,-2293,-2893, -3463,-3956,-4351,-4685,-5024,-5421,-5919,-6531,-7209,-7860, -8392,-8732,-8839,-8700,-8334,-7807,-7198,-6559,-5902,-5212, -4443,-3545,-2523,-1435,-352,687,1691,2690,3730,4850, 6047,7243,8334,9238,9913,10309,10405,10214,9799,9209, 8487,7674,6823,5970,5124,4250,3363,2508,1717,988, 322,-294,-905,-1545,-2197,-2813,-3348,-3798,-4171,-4495, -4834,-5259,-5798,-6443,-7145,-7811,-8346,-8680,-8781,-8645, -8303,-7824,-7283,-6719,-6121,-5447,-4650,-3705,-2655,-1589, -561,415,1379,2389,3487,4669,5897,7100,8191,9106, 9787,10202,10333,10187,9809,9247,8555,7786,6969,6128, 5265,4380,3488,2638,1865,1165,510,-126,-778,-1455, -2129,-2740,-3252,-3668,-4017,-4343,-4702,-5153,-5730,-6410, -7120,-7787,-8329,-8666,-8751,-8606,-8299,-7903,-7456,-6962, -6389,-5699,-4862,-3883,-2838,-1821,-861,83,1057,2096, 3231,4456,5717,6937,8038,8961,9663,10105,10254,10133, 9794,9283,8641,7913,7126,6277,5384,4487,3620,2806, 2064,1375,704,28,-670,-1383,-2058,-2651,-3145,-3544, -3874,-4205,-4597,-5088,-5688,-6396,-7149,-7833,-8347,-8650, -8726,-8596,-8335,-8022,-7663,-7215,-6623,-5876,-4997,-4029, -3028,-2055,-1126,-193,799,1879,3053,4310,5593,6828, 7943,8884,9603,10056,10219,10122,9827,9377,8790,8093, 7313,6456,5549,4653,3811,3028,2298,1603,910,194, -549,-1288,-1959,-2526,-2989,-3369,-3689,-4013,-4419,-4953, -5603,-6334,-7097,-7785,-8279,-8538,-8603,-8530,-8368,-8137, -7813,-7356,-6740,-5964,-5067,-4124,-3179,-2263,-1365,-442, 561,1675,2888,4159,5442,6687,7831,8791,9512,9963, 10154,10111,9875,9477,8933,8251,7460,6598,5712,4842, 4020,3262,2547,1835,1090,322,-443,-1170,-1826,-2385, -2832,-3187,-3504,-3848,-4275,-4833,-5527,-6306,-7064,-7696, -8142,-8392,-8485,-8479,-8404,-8237,-7938,-7463,-6815,-6026, -5159,-4270,-3383,-2515,-1644,-725,291,1415,2633,3919, 5227,6495,7647,8604,9310,9769,10008,10039,9868,9508, 8986,8322,7530,6656,5774,4943,4170,3426,2702,1972, 1202,405,-380,-1107,-1746,-2284,-2712,-3040,-3333,-3692, -4177,-4798,-5528,-6302,-7022,-7596,-7997,-8254,-8409,-8483, -8466,-8324,-8021,-7535,-6872,-6089,-5268,-4444,-3612,-2764, -1903,-991,28,1163,2394,3700,5047,6340,7479,8409, 9120,9613,9898,9989,9881,9562,9050,8384,7599,6752, 5900,5092,4339,3612,2880,2121,1332,531,-259,-1005, -1657,-2169,-2542,-2831,-3128,-3525,-4074,-4761,-5518,-6261, -6920,-7454,-7860,-8156,-8378,-8527,-8559,-8423,-8095,-7603, -6969,-6224,-5432,-4639,-3834,-3001,-2146,-1243,-228,932, 2203,3536,4883,6178,7322,8255,8978,9513,9861,10006, 9933,9638,9137,8470,7687,6864,6066,5299,4552,3816, 3081,2323,1527,689,-139,-894,-1520,-1987,-2317,-2594, -2930,-3398,-4008,-4724,-5474,-6177,-6780,-7285,-7711,-8068, -8355,-8547,-8592,-8448,-8109,-7623,-7023,-6321,-5556,-4778, -3997,-3195,-2356,-1446,-419,753,2044,3394,4734,5988, 7103,8049,8814,9394,9792,9983,9943,9666,9172,8520, 7785,7014,6243,5497,4776,4059,3319,2542,1713,842, -11,-753,-1329,-1750,-2075,-2389,-2786,-3324,-3979,-4690, -5396,-6048,-6619,-7122,-7582,-7995,-8325,-8531,-8580,-8446, -8132,-7658,-7057,-6371,-5648,-4915,-4169,-3402,-2579,-1658, -604,589,1886,3229,4547,5768,6857,7804,8605,9242, 9682,9887,9851,9589,9120,8505,7822,7103,6359,5629, 4935,4241,3494,2678,1798,892,44,-651,-1171,-1558, -1898,-2268,-2737,-3324,-3993,-4683,-5335,-5930,-6489,-7032, -7541,-7976,-8322,-8553,-8624,-8508,-8209,-7745,-7146,-6463, -5757,-5077,-4400,-3666,-2837,-1892,-812,405,1719,3052, 4338,5544,6651,7628,8460,9140,9616,9834,9803,9552, 9108,8511,7837,7137,6436,5747,5075,4377,3610,2744, 1816,902,94,-546,-1021,-1383,-1730,-2152,-2684,-3293, -3933,-4575,-5198,-5784,-6341,-6901,-7445,-7914,-8277,-8523, -8615,-8509,-8204,-7736,-7154,-6506,-5844,-5202,-4565,-3862, -3034,-2067,-969,251,1555,2868,4129,5337,6480,7504, 8367,9063,9567,9830,9830,9594,9159,8577,7916,7247, 6604,5976,5319,4588,3760,2844,1890,989,236,-333, -769,-1163,-1571,-2040,-2593,-3201,-3821,-4424,-5015,-5603, -6191,-6775,-7343,-7850,-8253,-8522,-8616,-8510,-8212,-7756, -7204,-6606,-6004,-5410,-4794,-4096,-3257,-2270,-1156,52, 1320,2606,3875,5105,6270,7327,8232,8958,9496,9807, 9844,9616,9176,8612,8003,7401,6813,6218,5571,4807, 3903,2924,1977,1133,436,-98,-531,-957,-1424,-1940, -2495,-3085,-3687,-4284,-4873,-5460,-6061,-6666,-7261,-7807, -8255,-8545,-8641,-8535,-8253,-7815,-7281,-6733,-6197,-5654, -5055,-4341,-3485,-2491,-1380,-182,1070,2349,3634,4895, 6081,7158,8098,8877,9457,9787,9825,9594,9164,8628, 8075,7543,7012,6424,5733,4909,3967,2980,2061,1282, 646,122,-343,-807,-1297,-1824,-2385,-2967,-3550,-4133, -4723,-5324,-5935,-6556,-7178,-7757,-8230,-8543,-8651,-8543, -8251,-7836,-7363,-6882,-6397,-5875,-5270,-4545,-3680,-2694, -1613,-436,818,2105,3390,4661,5879,7000,7988,8803, 9403,9734,9762,9514,9104,8642,8175,7699,7189,6589, 5844,4957,3993,3041,2177,1441,824,288,-207,-701, -1214,-1752,-2311,-2879,-3444,-4013,-4593,-5189,-5807,-6452, -7117,-7734,-8223,-8523,-8613,-8500,-8224,-7845,-7439,-7022, -6570,-6045,-5438,-4730,-3875,-2883,-1797,-637,595,1878, 3171,4446,5688,6870,7927,8769,9347,9645,9669,9448, 9090,8709,8335,7915,7401,6749,5949,5036,4089,3172, 2342,1626,1009,454,-68,-581,-1114,-1661,-2214,-2770, -3331,-3893,-4457,-5043,-5682,-6375,-7081,-7719,-8205,-8477, -8537,-8431,-8204,-7895,-7533,-7138,-6694,-6187,-5596,-4891, -4047,-3064,-1977,-816,393,1652,2943,4246,5535,6768, 7865,8725,9287,9555,9567,9390,9128,8846,8533,8132, 7596,6898,6056,5136,4209,3326,2515,1802,1180,611, 70,-459,-999,-1562,-2121,-2661,-3193,-3732,-4294,-4903, -5584,-6327,-7063,-7694,-8149,-8404,-8482,-8407,-8216,-7963, -7660,-7296,-6862,-6363,-5782,-5080,-4233,-3262,-2197,-1063, 130,1378,2671,4013,5362,6646,7763,8621,9166,9418, 9449,9349,9192,8987,8697,8289,7735,7014,6157,5243, 4339,3480,2690,1984,1357,777,216,-331,-884,-1451, -2016,-2544,-3040,-3542,-4105,-4761,-5500,-6266,-6993,-7618, -8071,-8330,-8423,-8388,-8242,-8020,-7746,-7423,-7024,-6540, -5957,-5256,-4414,-3456,-2423,-1331,-171,1071,2397,3789, 5193,6514,7634,8465,8988,9262,9360,9347,9267,9114, 8844,8423,7851,7131,6290,5385,4491,3647,2872,2178, 1549,958,380,-201,-792,-1365,-1893,-2382,-2871,-3389, -3978,-4669,-5446,-6229,-6945,-7548,-8004,-8283,-8395,-8375, -8260,-8071,-7824,-7522,-7147,-6672,-6086,-5381,-4556,-3625, -2630,-1589,-464,792,2182,3644,5074,6376,7465,8272, 8795,9102,9279,9357,9334,9205,8947,8526,7936,7200, 6372,5496,4612,3771,3009,2329,1705,1092,478,-138, -740,-1295,-1780,-2231,-2708,-3257,-3890,-4611,-5392,-6173, -6889,-7484,-7924,-8208,-8339,-8342,-8256,-8108,-7902,-7626, -7263,-6795,-6195,-5476,-4677,-3817,-2892,-1878,-742,554, 2001,3516,4962,6232,7269,8055,8605,8961,9194,9343, 9391,9289,9018,8593,8016,7285,6440,5560,4705,3903, 3169,2496,1855,1212,560,-74,-653,-1154,-1591,-2024, -2507,-3071,-3736,-4486,-5274,-6047,-6759,-7355,-7797,-8082, -8230,-8268,-8223,-8127,-7974,-7734,-7374,-6885,-6277,-5582, -4832,-4042,-3176,-2181,-998,371,1865,3381,4812,6062, 7071,7847,8439,8881,9184,9370,9440,9373,9132,8710, 8120,7383,6550,5686,4856,4098,3396,2717,2037,1352, 680,59,-487,-957,-1376,-1812,-2307,-2890,-3578,-4355, -5164,-5931,-6632,-7234,-7693,-7989,-8145,-8217,-8235,-8189, -8055,-7821,-7456,-6950,-6344,-5709,-5051,-4322,-3466,-2449, -1235,176,1707,3216,4604,5812,6818,7631,8268,8759, 9117,9348,9447,9400,9180,8766,8162,7415,6605,5795, 5016,4281,3581,2880,2162,1449,783,191,-332,-788, -1207,-1647,-2159,-2766,-3468,-4252,-5067,-5855,-6565,-7159, -7612,-7919,-8107,-8224,-8294,-8293,-8172,-7913,-7528,-7044, -6495,-5930,-5340,-4657,-3800,-2734,-1469,-42,1476,2967, 4332,5529,6548,7387,8058,8581,8986,9279,9438,9420, 9197,8774,8175,7450,6679,5922,5188,4459,3732,3003, 2262,1531,861,291,-193,-628,-1059,-1515,-2033,-2654, -3376,-4168,-4985,-5779,-6484,-7055,-7484,-7805,-8048,-8232, -8346,-8350,-8220,-7949,-7559,-7099,-6622,-6140,-5604,-4928, -4046,-2943,-1641,-198,1299,2763,4121,5331,6359,7209, 7908,8482,8944,9297,9499,9496,9261,8823,8240,7561, 6840,6117,5405,4684,3930,3153,2393,1682,1032,460, -16,-442,-878,-1351,-1885,-2514,-3261,-4082,-4914,-5685, -6339,-6876,-7319,-7681,-7976,-8208,-8342,-8338,-8177,-7885, -7510,-7105,-6702,-6281,-5778,-5101,-4194,-3071,-1767,-329, 1162,2611,3952,5148,6175,7039,7780,8419,8950,9338, 9544,9532,9293,8859,8302,7679,7021,6331,5609,4863, 4095,3302,2534,1839,1218,662,178,-251,-677,-1149, -1702,-2368,-3142,-3975,-4807,-5558,-6195,-6724,-7193,-7619, -7979,-8242,-8377,-8351,-8169,-7884,-7561,-7243,-6913,-6531, -6029,-5341,-4428,-3297,-1993,-557,934,2380,3696,4855, 5880,6788,7594,8293,8874,9297,9506,9483,9245,8843, 8332,7761,7148,6481,5750,4974,4184,3399,2644,1949, 1316,764,304,-97,-512,-988,-1566,-2269,-3076,-3914, -4711,-5431,-6066,-6623,-7138,-7619,-8027,-8304,-8420,-8368, -8186,-7935,-7670,-7414,-7137,-6780,-6280,-5594,-4688,-3551, -2224,-781,689,2104,3397,4548,5581,6534,7411,8177, 8790,9216,9423,9403,9186,8823,8363,7839,7238,6565, 5838,5074,4281,3490,2737,2045,1416,881,450,76, -329,-828,-1441,-2168,-2976,-3791,-4548,-5236,-5872,-6481, -7066,-7597,-8015,-8271,-8351,-8282,-8128,-7940,-7732,-7501, -7251,-6927,-6458,-5781,-4867,-3716,-2376,-938,504,1875, 3140,4305,5387,6392,7315,8125,8771,9198,9391,9376, 9197,8890,8475,7968,7378,6716,5994,5235,4442,3634, 2854,2155,1559,1064,656,286,-129,-663,-1327,-2076, -2849,-3608,-4332,-5019,-5678,-6342,-6993,-7553,-7948,-8172, -8243,-8189,-8060,-7909,-7750,-7573,-7359,-7068,-6623,-5949, -5007,-3825,-2489,-1090,308,1654,2914,4092,5216,6286, 7264,8094,8727,9138,9337,9356,9222,8961,8583,8099, 7532,6898,6190,5416,4604,3782,2990,2284,1714,1270, 887,497,36,-542,-1236,-1991,-2731,-3437,-4141,-4864, -5589,-6294,-6953,-7500,-7890,-8107,-8178,-8143,-8049,-7931, -7812,-7693,-7537,-7270,-6816,-6129,-5180,-3988,-2655,-1290, 55,1371,2640,3858,5030,6138,7140,7974,8600,9008, 9229,9285,9185,8958,8614,8166,7626,7009,6311,5528, 4683,3838,3055,2383,1848,1432,1061,644,133,-481, -1165,-1870,-2573,-3278,-4002,-4751,-5517,-6257,-6914,-7447, -7831,-8058,-8138,-8112,-8045,-7982,-7929,-7861,-7737,-7491, -7035,-6325,-5359,-4183,-2885,-1562,-258,1035,2329,3600, 4818,5946,6947,7778,8412,8850,9110,9204,9144,8952, 8654,8256,7753,7142,6433,5630,4768,3917,3155,2534, 2052,1635,1211,741,208,-393,-1042,-1700,-2371,-3091, -3863,-4650,-5431,-6177,-6851,-7390,-7754,-7951,-8029,-8035, -8006,-7988,-7985,-7960,-7857,-7610,-7141,-6413,-5448,-4313, -3088,-1828,-550,744,2052,3346,4581,5710,6703,7541, 8204,8675,8970,9104,9090,8947,8699,8349,7886,7299, 6573,5734,4863,4059,3365,2791,2311,1867,1392,877, 332,-240,-849,-1495,-2176,-2903,-3685,-4498,-5306,-6064, -6727,-7256,-7614,-7807,-7885,-7907,-7922,-7958,-8010,-8026, -7930,-7653,-7152,-6426,-5499,-4420,-3251,-2034,-769,541, 1866,3161,4391,5524,6525,7377,8058,8559,8883,9044, 9064,8968,8778,8476,8020,7404,6653,5813,4966,4203, 3560,3014,2515,2026,1526,1010,468,-99,-687,-1312, -1996,-2743,-3538,-4358,-5181,-5957,-6624,-7137,-7490,-7690, -7786,-7846,-7921,-8020,-8118,-8152,-8048,-7742,-7221,-6510, -5640,-4622,-3485,-2271,-1008,300,1632,2946,4186,5328, 6354,7237,7937,8440,8768,8960,9040,9016,8882,8600, 8123,7462,6685,5868,5078,4357,3726,3176,2668,2165, 1644,1125,600,50,-533,-1154,-1832,-2594,-3414,-4257, -5099,-5891,-6564,-7069,-7401,-7596,-7716,-7829,-7972,-8135, -8272,-8303,-8167,-7846,-7341,-6666,-5835,-4865,-3760,-2551, -1277,29,1358,2673,3933,5106,6156,7046,7751,8263, 8609,8847,9009,9064,8959,8661,8161,7492,6722,5931, 5180,4502,3888,3324,2798,2284,1757,1237,735,216, -356,-988,-1675,-2440,-3280,-4164,-5033,-5824,-6480,-6962, -7276,-7467,-7628,-7813,-8012,-8204,-8346,-8377,-8240,-7919, -7437,-6802,-6009,-5055,-3960,-2763,-1503,-203,1123,2447, 3731,4929,5994,6879,7572,8101,8501,8809,9028,9117, 9022,8713,8205,7549,6811,6049,5323,4664,4063,3491, 2938,2410,1896,1391,887,373,-174,-787,-1484,-2269, -3127,-4039,-4933,-5721,-6338,-6786,-7095,-7328,-7546,-7782, -8028,-8248,-8390,-8411,-8285,-8001,-7555,-6939,-6165,-5237, -4169,-2994,-1760,-476,866,2234,3558,4764,5805,6670, 7369,7938,8407,8783,9041,9141,9044,8736,8237,7603, 6901,6184,5488,4832,4223,3651,3101,2568,2057,1564, 1068,563,31,-557,-1256,-2081,-2993,-3923,-4803,-5561, -6151,-6579,-6903,-7191,-7476,-7754,-8016,-8249,-8407,-8446, -8341,-8086,-7666,-7063,-6296,-5396,-4375,-3241,-2014,-714, 660,2056,3388,4573,5584,6433,7160,7789,8321,8748, 9043,9160,9062,8757,8281,7680,7012,6320,5643,4991, 4371,3787,3236,2702,2181,1682,1212,749,247,-347, -1072,-1934,-2885,-3839,-4694,-5400,-5952,-6386,-6754,-7091, -7418,-7731,-8016,-8253,-8426,-8498,-8428,-8192,-7778,-7186, -6448,-5593,-4616,-3496,-2255,-918,478,1870,3172,4330, 5323,6180,6943,7633,8224,8692,9009,9137,9050,8759, 8304,7731,7091,6417,5742,5098,4489,3895,3311,2759, 2251,1777,1330,898,417,-202,-987,-1895,-2851,-3776, -4598,-5270,-5806,-6256,-6665,-7051,-7402,-7723,-8022,-8288, -8489,-8588,-8535,-8299,-7890,-7335,-6653,-5847,-4882,-3747, -2473,-1111,289,1657,2924,4052,5052,5950,6766,7506, 8153,8659,8986,9115,9048,8795,8367,7811,7185,6536, 5882,5236,4619,4015,3417,2858,2367,1940,1539,1117, 604,-62,-890,-1819,-2762,-3651,-4430,-5091,-5646,-6122, -6548,-6945,-7316,-7662,-7991,-8296,-8525,-8622,-8563,-8343, -7973,-7467,-6837,-6059,-5094,-3935,-2631,-1259,120,1459, 2697,3805,4813,5756,6632,7418,8085,8611,8962,9118, 9074,8845,8448,7916,7313,6685,6048,5400,4752,4121, 3521,2982,2530,2144,1776,1354,801,85,-771,-1691, -2601,-3454,-4219,-4891,-5473,-5968,-6399,-6802,-7201,-7594, -7972,-8301,-8535,-8633,-8586,-8397,-8085,-7641,-7045,-6272, -5306,-4147,-2837,-1467,-114,1185,2402,3522,4558,5535, 6446,7266,7966,8521,8905,9095,9073,8845,8460,7967, 7406,6802,6165,5508,4839,4180,3578,3072,2673,2327, 1962,1502,908,172,-680,-1579,-2460,-3292,-4061,-4741, -5327,-5822,-6263,-6693,-7129,-7569,-7982,-8314,-8527,-8628, -8614,-8471,-8204,-7808,-7249,-6489,-5507,-4336,-3035,-1695, -372,901,2107,3242,4315,5329,6267,7115,7858,8457, 8868,9062,9044,8840,8483,8031,7519,6940,6295,5603, 4906,4243,3664,3208,2854,2522,2132,1629,1008,276, -553,-1436,-2312,-3144,-3911,-4585,-5156,-5653,-6117,-6590, -7073,-7539,-7954,-8288,-8513,-8623,-8630,-8540,-8335,-7975, -7431,-6671,-5683,-4507,-3221,-1906,-607,658,1873,3021, 4114,5160,6141,7029,7804,8431,8860,9057,9042,8871, 8572,8172,7693,7120,6446,5712,4991,4349,3819,3401, 3055,2707,2288,1765,1134,407,-415,-1304,-2195,-3029, -3771,-4415,-4982,-5505,-6012,-6526,-7041,-7523,-7932,-8254, -8484,-8626,-8684,-8651,-8493,-8154,-7602,-6828,-5850,-4701, -3447,-2151,-866,384,1600,2767,3885,4953,5973,6915, 7721,8357,8792,9010,9029,8903,8669,8327,7859,7252, 6542,5794,5097,4500,4013,3612,3250,2872,2431,1905, 1272,531,-302,-1189,-2071,-2892,-3620,-4255,-4824,-5373, -5921,-6476,-7009,-7493,-7896,-8206,-8446,-8635,-8760,-8778, -8636,-8298,-7738,-6961,-6000,-4888,-3664,-2387,-1121,112, 1317,2493,3634,4740,5797,6769,7595,8219,8633,8870, 8961,8917,8742,8422,7941,7303,6579,5856,5202,4644, 4175,3774,3410,3031,2587,2056,1419,666,-179,-1059, -1923,-2717,-3426,-4062,-4658,-5243,-5828,-6404,-6937,-7403, -7797,-8127,-8410,-8652,-8823,-8867,-8743,-8418,-7875,-7115, -6165,-5063,-3854,-2601,-1359,-141,1056,2235,3405,4565, 5673,6653,7458,8069,8495,8775,8942,8980,8834,8495, 7985,7349,6652,5958,5328,4783,4316,3917,3554,3178, 2737,2200,1548,787,-52,-925,-1766,-2532,-3223,-3865, -4494,-5129,-5744,-6317,-6831,-7285,-7683,-8045,-8381,-8671, -8867,-8940,-8843,-8536,-8003,-7260,-6326,-5236,-4042,-2814, -1613,-430,762,1971,3189,4387,5506,6472,7260,7885, 8374,8738,8972,9039,8898,8544,8029,7407,6738,6072, 5456,4919,4464,4069,3704,3328,2888,2342,1668,899, 68,-777,-1586,-2329,-3023,-3697,-4364,-5023,-5644,-6196, -6699,-7174,-7605,-7996,-8365,-8698,-8933,-9034,-8964,-8679, -8158,-7411,-6479,-5410,-4256,-3079,-1913,-745,465,1731, 3006,4214,5302,6240,7036,7713,8279,8714,8988,9063, 8922,8583,8088,7487,6836,6187,5587,5058,4611,4227, 3878,3512,3067,2492,1796,1023,214,-591,-1366,-2100, -2813,-3518,-4209,-4874,-5487,-6031,-6532,-7023,-7495,-7933, -8337,-8697,-8975,-9112,-9063,-8792,-8277,-7527,-6602,-5572, -4485,-3367,-2225,-1034,231,1539,2819,4002,5064,6005, 6844,7581,8202,8674,8966,9057,8937,8616,8139,7561, 6929,6289,5687,5170,4744,4389,4060,3693,3217,2601, 1895,1141,365,-410,-1168,-1911,-2642,-3364,-4071,-4735, -5335,-5874,-6386,-6896,-7393,-7865,-8316,-8723,-9034,-9204, -9176,-8908,-8379,-7627,-6737,-5777,-4757,-3667,-2509,-1277, 14,1315,2565,3724,4783,5753,6636,7422,8087,8599, 8916,9018,8913,8619,8166,7605,6981,6341,5751,5263, 4879,4550,4217,3818,3312,2690,1993,1265,521,-231, -991,-1752,-2504,-3235,-3938,-4594,-5190,-5729,-6249,-6771, -7288,-7786,-8272,-8736,-9112,-9308,-9267,-8969,-8432,-7717, -6896,-6005,-5031,-3944,-2752,-1494,-206,1069,2299,3453, 4532,5531,6450,7278,7984,8523,8857,8979,8904,8647, 8219,7658,7028,6409,5860,5412,5046,4718,4369,3944, 3424,2812,2135,1428,710,-35,-809,-1594,-2360,-3091, -3784,-4438,-5043,-5595,-6115,-6630,-7152,-7691,-8242,-8758, -9161,-9353,-9280,-8962,-8452,-7802,-7046,-6196,-5238,-4152, -2949,-1688,-412,850,2066,3219,4315,5347,6299,7160, 7889,8451,8811,8973,8934,8689,8262,7696,7076,6484, 5984,5583,5238,4889,4502,4051,3530,2934,2283,1596, 882,132,-653,-1448,-2216,-2945,-3645,-4307,-4914,-5461, -5970,-6482,-7041,-7652,-8271,-8819,-9201,-9354,-9270,-8981, -8527,-7936,-7222,-6389,-5423,-4323,-3125,-1883,-638,594, 1803,2977,4105,5167,6144,7015,7761,8354,8765,8971, 8948,8692,8243,7686,7105,6566,6103,5719,5382,5025, 4609,4135,3614,3044,2419,1739,1020,273,-497,-1276, -2044,-2790,-3509,-4168,-4743,-5250,-5754,-6310,-6942,-7619, -8274,-8819,-9186,-9338,-9277,-9031,-8630,-8088,-7410,-6595, -5624,-4510,-3317,-2109,-903,314,1538,2740,3891,4966, 5957,6852,7629,8271,8730,8953,8925,8665,8224,7691, 7160,6683,6263,5881,5515,5138,4722,4255,3739,3171, 2542,1863,1155,428,-324,-1104,-1890,-2661,-3384,-4012, -4546,-5041,-5572,-6190,-6890,-7609,-8268,-8802,-9164,-9324, -9279,-9063,-8706,-8202,-7540,-6723,-5771,-4693,-3529,-2342, -1153,59,1293,2497,3635,4704,5711,6642,7473,8154, 8630,8855,8823,8569,8167,7697,7228,6795,6396,6012, 5624,5231,4819,4371,3863,3291,2663,2002,1317,602, -166,-978,-1791,-2554,-3232,-3814,-4333,-4853,-5436,-6104, -6838,-7569,-8215,-8726,-9075,-9251,-9258,-9097,-8774,-8283, -7622,-6816,-5891,-4858,-3732,-2555,-1358,-145,1069,2248, 3374,4455,5491,6469,7344,8047,8520,8737,8706,8476, 8126,7723,7306,6900,6505,6117,5734,5348,4936,4483, 3978,3420,2824,2194,1521,788,-17,-858,-1673,-2401, -3026,-3579,-4104,-4660,-5289,-5995,-6742,-7463,-8094,-8592, -8951,-9174,-9246,-9145,-8852,-8373,-7730,-6949,-6055,-5050, -3944,-2768,-1563,-352,847,2011,3143,4250,5333,6360, 7270,7989,8457,8666,8647,8458,8162,7798,7400,7005, 6628,6263,5897,5511,5083,4615,4118,3597,3032,2407, 1712,942,110,-735,-1528,-2222,-2825,-3370,-3914,-4508, -5177,-5902,-6644,-7356,-7986,-8510,-8921,-9194,-9300,-9213, -8936,-8484,-7879,-7138,-6274,-5282,-4180,-3006,-1818,-634, 546,1710,2856,4003,5141,6209,7129,7842,8314,8546, 8566,8421,8156,7817,7440,7067,6719,6376,6008,5601, 5166,4712,4246,3755,3212,2579,1849,1046,205,-624, -1387,-2047,-2629,-3180,-3761,-4396,-5086,-5811,-6550,-7260, -7909,-8474,-8927,-9233,-9355,-9288,-9041,-8631,-8072,-7362, -6508,-5521,-4422,-3254,-2089,-948,201,1380,2582,3789, 4978,6064,6983,7699,8199,8469,8526,8402,8154,7844, 7509,7176,6846,6499,6114,5696,5264,4838,4412,3948, 3399,2740,1980,1155,321,-476,-1202,-1842,-2421,-2995, -3607,-4267,-4967,-5692,-6433,-7159,-7843,-8442,-8917,-9233, -9372,-9332,-9121,-8745,-8217,-7525,-6671,-5681,-4597,-3466, -2340,-1224,-78,1131,2382,3630,4835,5935,6872,7615, 8137,8430,8498,8389,8175,7908,7622,7317,6983,6617, 6219,5813,5407,5008,4604,4154,3588,2889,2086,1246, 429,-325,-1008,-1634,-2234,-2840,-3468,-4130,-4830,-5565, -6319,-7070,-7785,-8407,-8898,-9229,-9391,-9382,-9209,-8866, -8340,-7636,-6775,-5805,-4763,-3684,-2597,-1487,-312,928, 2193,3452,4672,5798,6763,7522,8050,8340,8418,8345, 8186,7972,7716,7412,7062,6680,6288,5906,5547,5194, 4801,4329,3731,3002,2183,1353,576,-132,-796,-1426, -2050,-2672,-3304,-3971,-4685,-5432,-6202,-6980,-7717,-8351, -8846,-9196,-9394,-9436,-9310,-8991,-8467,-7749,-6896,-5970, -4986,-3952,-2875,-1759,-576,670,1954,3241,4493,5645, 6627,7393,7915,8210,8323,8295,8176,8003,7767,7460, 7097,6716,6339,5993,5686,5371,4979,4465,3829,3083, 2279,1484,742,52,-608,-1255,-1890,-2514,-3144,-3816, -4541,-5312,-6106,-6900,-7644,-8277,-8781,-9166,-9426,-9519, -9412,-9090,-8567,-7870,-7057,-6181,-5245,-4233,-3162,-2045, -872,374,1683,3016,4302,5469,6458,7221,7747,8058, 8212,8242,8179,8034,7801,7480,7105,6737,6406,6117, 5843,5532,5123,4588,3930,3185,2403,1637,910,218, -451,-1100,-1728,-2339,-2966,-3647,-4398,-5198,-6008,-6793, -7523,-8169,-8715,-9154,-9456,-9572,-9470,-9153,-8648,-7994, -7226,-6374,-5457,-4478,-3434,-2329,-1154,106,1451,2819, 4121,5288,6267,7033,7579,7928,8130,8219,8207,8079, 7834,7501,7136,6805,6532,6292,6026,5685,5244,4702, 4060,3334,2569,1818,1097,404,-265,-904,-1513,-2117, -2761,-3479,-4265,-5074,-5868,-6642,-7383,-8066,-8662,-9142, -9459,-9574,-9479,-9185,-8715,-8101,-7367,-6536,-5644,-4699, -3684,-2589,-1409,-121,1262,2656,3956,5110,6077,6837, 7408,7822,8096,8236,8236,8093,7828,7506,7190,6915, 6679,6450,6176,5819,5359,4810,4189,3493,2743,1983, 1255,574,-69,-681,-1285,-1911,-2595,-3339,-4125,-4914, -5697,-6481,-7261,-7990,-8619,-9114,-9439,-9572,-9497,-9221, -8772,-8182,-7474,-6684,-5846,-4947,-3955,-2861,-1656,-334, 1079,2480,3768,4901,5860,6640,7259,7737,8065,8228, 8216,8056,7805,7521,7252,7020,6810,6579,6290,5924, 5475,4945,4336,3646,2893,2123,1389,722,114,-482, -1109,-1779,-2481,-3219,-3983,-4766,-5562,-6371,-7177,-7934, -8586,-9093,-9433,-9593,-9545,-9286,-8851,-8281,-7609,-6863, -6072,-5217,-4255,-3154,-1919,-560,865,2253,3521,4641, 5610,6433,7113,7645,7996,8149,8126,7971,7750,7520, 7307,7107,6899,6657,6357,5998,5565,5046,4430,3727, 2970,2222,1523,885,282,-331,-984,-1677,-2378,-3093, -3841,-4627,-5444,-6275,-7096,-7864,-8531,-9064,-9430,-9603, -9572,-9327,-8905,-8358,-7729,-7043,-6300,-5476,-4518,-3395, -2124,-751,654,2006,3251,4381,5396,6279,7013,7570, 7923,8067,8043,7911,7730,7545,7370,7192,6986,6746, 6468,6135,5715,5174,4530,3823,3094,2379,1714,1096, 485,-151,-816,-1496,-2188,-2907,-3661,-4454,-5273,-6118, -6963,-7757,-8455,-9018,-9405,-9583,-9546,-9310,-8906,-8393, -7817,-7196,-6509,-5708,-4730,-3575,-2287,-928,440,1756, 2989,4139,5208,6154,6922,7484,7823,7972,7977,7888, 7749,7588,7416,7243,7057,6854,6613,6294,5858,5295, 4636,3940,3243,2559,1897,1267,651,22,-626,-1296, -1988,-2712,-3477,-4283,-5112,-5965,-6831,-7655,-8377,-8960, -9368,-9559,-9515,-9272,-8900,-8456,-7957,-7389,-6725,-5918, -4922,-3748,-2467,-1147,176,1476,2730,3922,5033,6012, 6791,7345,7685,7858,7906,7862,7752,7600,7433,7272, 7123,6961,6731,6393,5935,5371,4732,4059,3383,2711, 2054,1419,799,185,-446,-1109,-1807,-2536,-3304,-4119, -4971,-5839,-6714,-7567,-8326,-8926,-9328,-9512,-9473,-9258, -8934,-8554,-8126,-7607,-6948,-6119,-5108,-3943,-2693,-1410, -113,1191,2483,3723,4858,5842,6627,7188,7550,7761, 7842,7815,7713,7577,7444,7334,7227,7079,6839,6479, 6008,5452,4837,4186,3522,2865,2219,1593,974,355, -274,-930,-1628,-2362,-3136,-3954,-4814,-5705,-6614,-7506, -8296,-8907,-9286,-9440,-9406,-9240,-8991,-8678,-8288,-7786, -7131,-6292,-5280,-4146,-2942,-1690,-385,949,2278,3548, 4685,5652,6436,7033,7442,7679,7761,7735,7657,7564, 7478,7411,7330,7183,6932,6564,6088,5537,4934,4297, 3649,3005,2374,1759,1153,537,-99,-761,-1452,-2186, -2958,-3774,-4641,-5560,-6518,-7445,-8243,-8833,-9192,-9339, -9332,-9229,-9064,-8819,-8457,-7945,-7271,-6441,-5468,-4377, -3202,-1957,-636,728,2071,3332,4472,5452,6263,6898, 7340,7586,7664,7647,7611,7576,7536,7484,7403,7256, 7006,6637,6162,5617,5027,4407,3771,3137,2522,1920, 1321,712,80,-581,-1273,-1991,-2747,-3571,-4479,-5446, -6430,-7366,-8155,-8722,-9061,-9228,-9280,-9260,-9159,-8948, -8598,-8084,-7415,-6612,-5688,-4638,-3467,-2200,-865,501, 1841,3099,4253,5275,6130,6779,7215,7467,7573,7597, 7594,7597,7594,7569,7487,7320,7065,6716,6258,5715, 5131,4528,3909,3291,2692,2104,1503,883,251,-395, -1063,-1762,-2510,-3349,-4303,-5331,-6348,-7268,-8021,-8563, -8913,-9134,-9262,-9306,-9241,-9037,-8685,-8190,-7563,-6810, -5922,-4884,-3706,-2430,-1097,260,1610,2905,4097,5146, 6015,6668,7100,7359,7497,7565,7615,7653,7674,7664, 7586,7415,7156,6812,6364,5827,5246,4655,4064,3469, 2874,2276,1662,1034,404,-221,-851,-1528,-2296,-3184, -4182,-5246,-6271,-7162,-7882,-8430,-8833,-9121,-9307,-9380, -9318,-9120,-8792,-8339,-7757,-7037,-6165,-5129,-3955,-2694, -1377,-11,1368,2696,3918,4982,5857,6512,6955,7240, 7413,7526,7614,7684,7724,7721,7650,7495,7249,6895, 6438,5909,5346,4779,4216,3644,3040,2416,1782,1157, 555,-29,-629,-1305,-2117,-3072,-4115,-5168,-6158,-7023, -7736,-8321,-8788,-9130,-9345,-9426,-9371,-9200,-8919,-8511, -7948,-7237,-6375,-5362,-4215,-2974,-1659,-282,1118,2471, 3710,4785,5655,6310,6771,7086,7305,7457,7567,7658, 7728,7752,7708,7571,7320,6956,6501,5990,5451,4914, 4369,3796,3178,2530,1891,1295,753,227,-363,-1086, -1960,-2953,-3995,-5019,-5971,-6827,-7572,-8194,-8689,-9048, -9280,-9394,-9385,-9256,-9010,-8620,-8075,-7379,-6543,-5568, -4457,-3228,-1908,-524,883,2246,3491,4556,5420,6083, 6565,6914,7170,7357,7505,7637,7745,7800,7778,7648, 7393,7027,6590,6114,5615,5097,4542,3938,3292,2642, 2029,1486,988,477,-135,-907,-1827,-2822,-3838,-4827, -5762,-6617,-7380,-8027,-8531,-8892,-9139,-9284,-9318,-9228, -9006,-8640,-8124,-7466,-6673,-5744,-4670,-3458,-2141,-756, 654,2014,3247,4302,5164,5841,6354,6734,7017,7243, 7443,7619,7754,7827,7810,7676,7418,7068,6671,6245, 5777,5255,4673,4036,3378,2752,2198,1708,1227,679, 9,-791,-1698,-2677,-3685,-4672,-5604,-6463,-7228,-7874, -8387,-8775,-9056,-9228,-9283,-9216,-9015,-8675,-8198,-7587, -6844,-5958,-4909,-3705,-2388,-994,427,1790,3017,4070, 4942,5633,6166,6577,6893,7154,7394,7607,7768,7847, 7818,7676,7434,7121,6764,6367,5909,5371,4760,4107, 3469,2894,2392,1920,1426,851,156,-654,-1552,-2517, -3525,-4528,-5473,-6336,-7107,-7766,-8298,-8712,-9025,-9232, -9317,-9271,-9092,-8775,-8333,-7769,-7072,-6211,-5166,-3948, -2613,-1210,209,1570,2799,3860,4738,5441,5986,6414, 6762,7068,7352,7606,7788,7862,7814,7671,7457,7194, 6883,6497,6013,5441,4816,4182,3593,3073,2600,2126, 1614,1029,333,-479,-1387,-2356,-3361,-4361,-5310,-6176, -6953,-7630,-8196,-8641,-8978,-9204,-9310,-9284,-9134,-8858, -8457,-7937,-7277,-6440,-5396,-4167,-2821,-1424,-18,1340, 2580,3647,4526,5226,5785,6239,6626,6985,7323,7604, 7777,7830,7785,7675,7508,7281,6984,6589,6076,5484, 4871,4283,3741,3246,2787,2319,1805,1213,520,-288, -1208,-2193,-3203,-4195,-5141,-6010,-6792,-7489,-8087,-8568, -8930,-9174,-9290,-9286,-9165,-8932,-8583,-8101,-7458,-6628, -5595,-4374,-3031,-1632,-227,1132,2375,3442,4314,5017, 5589,6083,6534,6953,7321,7595,7748,7797,7786,7729, 7608,7399,7089,6664,6137,5558,4969,4410,3900,3427, 2971,2500,1986,1396,701,-113,-1034,-2024,-3035,-4028, -4975,-5848,-6640,-7360,-7988,-8490,-8865,-9118,-9256,-9286, -9207,-9019,-8712,-8261,-7629,-6811,-5791,-4582,-3238,-1834, -421,938,2168,3216,4074,4778,5383,5943,6458,6905, 7260,7516,7670,7750,7789,7779,7685,7480,7152,6710, 6186,5624,5060,4525,4034,3580,3132,2663,2144,1550, 854,29,-898,-1881,-2882,-3863,-4808,-5693,-6512,-7260, -7907,-8422,-8809,-9076,-9241,-9305,-9275,-9137,-8864,-8434, -7822,-7019,-6014,-4808,-3462,-2045,-621,733,1933,2942, 3794,4532,5204,5826,6373,6815,7156,7411,7593,7725, 7809,7823,7733,7521,7191,6749,6230,5682,5142,4631, 4159,3722,3291,2838,2326,1724,1013,186,-738,-1715, -2697,-3669,-4622,-5526,-6368,-7134,-7793,-8319,-8723,-9020, -9214,-9318,-9329,-9230,-8986,-8580,-7996,-7218,-6232,-5033, -3672,-2236,-823,491,1651,2649,3530,4330,5067,5720, 6266,6704,7052,7337,7564,7738,7856,7892,7811,7595, 7261,6823,6311,5768,5241,4746,4298,3879,3469,3031, 2521,1911,1191,372,-537,-1503,-2480,-3450,-4414,-5348, -6210,-6985,-7650,-8185,-8604,-8924,-9153,-9290,-9334,-9265, -9062,-8707,-8167,-7411,-6416,-5194,-3819,-2398,-1029,231, 1366,2384,3314,4174,4943,5604,6150,6592,6954,7269, 7546,7765,7907,7954,7883,7673,7339,6905,6404,5876, 5364,4892,4468,4070,3672,3232,2716,2096,1371,561, -320,-1268,-2258,-3258,-4241,-5188,-6062,-6839,-7506,-8058, -8501,-8854,-9114,-9279,-9350,-9322,-9173,-8871,-8366,-7610, -6594,-5353,-3982,-2603,-1291,-64,1080,2135,3105,3996, 4782,5442,5988,6447,6839,7186,7498,7755,7918,7967, 7896,7698,7366,6932,6439,5934,5447,5001,4605,4232, 3842,3392,2863,2247,1536,734,-143,-1083,-2077,-3104, -4117,-5070,-5936,-6708,-7384,-7962,-8437,-8805,-9080,-9274, -9397,-9438,-9353,-9081,-8564,-7784,-6753,-5531,-4204,-2869, -1589,-373,791,1889,2889,3784,4570,5235,5792,6275, 6699,7083,7429,7715,7897,7962,7903,7708,7374,6936, 6446,5958,5508,5098,4724,4367,3978,3525,3000,2392, 1699,918,50,-903,-1918,-2951,-3963,-4918,-5790,-6572, -7271,-7871,-8351,-8716,-9003,-9243,-9438,-9548,-9506,-9239, -8709,-7906,-6875,-5686,-4412,-3115,-1847,-617,569,1691, 2713,3611,4390,5061,5643,6154,6612,7025,7396,7701, 7905,7996,7952,7750,7407,6976,6502,6035,5616,5246, 4899,4543,4146,3691,3176,2593,1917,1142,266,-701, -1726,-2756,-3754,-4706,-5601,-6416,-7136,-7732,-8201,-8576, -8905,-9210,-9476,-9638,-9617,-9343,-8798,-8005,-7010,-5863, -4624,-3346,-2079,-837,365,1505,2536,3439,4217,4904, 5508,6042,6528,6980,7387,7717,7942,8045,7999,7789, 7446,7023,6575,6137,5742,5391,5053,4696,4292,3847, 3354,2788,2111,1316,422,-547,-1557,-2574,-3576,-4545, -5462,-6295,-7011,-7591,-8056,-8462,-8858,-9235,-9554,-9750, -9736,-9456,-8907,-8132,-7172,-6072,-4865,-3598,-2318,-1061, 143,1274,2304,3212,4007,4710,5339,5895,6404,6886, 7331,7705,7957,8060,8001,7786,7448,7038,6611,6208, 5838,5488,5143,4785,4402,3986,3514,2950,2261,1457, 568,-376,-1371,-2399,-3433,-4433,-5362,-6176,-6860,-7426, -7917,-8383,-8848,-9289,-9644,-9846,-9832,-9555,-9027,-8281, -7357,-6284,-5102,-3842,-2558,-1295,-86,1042,2075,2995, 3803,4515,5156,5745,6294,6806,7276,7681,7950,8049, 7976,7758,7438,7057,6663,6279,5914,5563,5227,4896, 4548,4148,3668,3087,2400,1621,766,-161,-1163,-2216, -3276,-4286,-5198,-5982,-6642,-7219,-7754,-8282,-8807,-9295, -9673,-9877,-9859,-9605,-9115,-8409,-7518,-6470,-5299,-4045, -2773,-1521,-321,807,1847,2782,3600,4320,4976,5596, 6190,6753,7261,7675,7942,8027,7946,7744,7452,7104, 6725,6343,5977,5639,5331,5036,4707,4301,3807,3226, 2558,1809,977,48,-975,-2056,-3126,-4127,-5005,-5759, -6411,-7013,-7602,-8195,-8772,-9287,-9680,-9893,-9887,-9654, -9200,-8536,-7678,-6658,-5506,-4262,-2995,-1751,-557,574, 1609,2535,3358,4090,4768,5424,6069,6676,7211,7625, 7883,7969,7904,7724,7458,7127,6755,6377,6031,5728, 5450,5162,4826,4412,3924,3366,2730,2009,1180,228, -833,-1933,-3002,-3973,-4820,-5549,-6204,-6837,-7478,-8126, -8741,-9275,-9680,-9910,-9930,-9724,-9301,-8661,-7831,-6844, -5724,-4498,-3227,-1978,-780,353,1392,2312,3125,3869, 4583,5288,5977,6613,7150,7559,7825,7939,7901,7738, 7479,7148,6787,6440,6130,5860,5596,5296,4943,4534, 4067,3544,2939,2228,1386,404,-675,-1780,-2825,-3762, -4586,-5316,-5996,-6665,-7346,-8025,-8668,-9226,-9645,-9892, -9942,-9769,-9373,-8764,-7960,-6996,-5899,-4694,-3426,-2168, -967,157,1177,2086,2904,3677,4441,5197,5913,6553, 7092,7509,7796,7937,7919,7758,7494,7176,6850,6548, 6263,5990,5712,5401,5048,4656,4224,3739,3164,2448, 1572,565,-517,-1601,-2620,-3531,-4336,-5078,-5791,-6500, -7215,-7925,-8595,-9172,-9610,-9888,-9967,-9826,-9457,-8878, -8109,-7175,-6095,-4894,-3624,-2366,-1179,-89,909,1817, 2659,3473,4275,5053,5782,6432,6987,7434,7754,7910, 7892,7728,7472,7175,6886,6617,6347,6066,5771,5454, 5117,4761,4369,3912,3332,2594,1697,671,-409,-1469, -2453,-3340,-4141,-4887,-5619,-6366,-7117,-7853,-8540,-9136, -9599,-9895,-10003,-9894,-9561,-9017,-8284,-7380,-6316,-5109, -3830,-2578,-1423,-368,610,1535,2422,3278,4106,4890, 5624,6301,6893,7371,7704,7857,7831,7672,7445,7190, 6931,6670,6405,6126,5832,5523,5221,4918,4573,4116, 3505,2735,1820,798,-267,-1299,-2249,-3113,-3920,-4690, -5439,-6193,-6971,-7742,-8457,-9075,-9559,-9879,-10006,-9926, -9634,-9132,-8424,-7526,-6456,-5259,-4004,-2781,-1652,-614, 366,1308,2212,3084,3933,4745,5511,6219,6840,7337, 7662,7803,7785,7650,7456,7242,7013,6763,6488,6201, 5911,5633,5372,5110,4787,4327,3698,2905,1973,957, -75,-1072,-2004,-2864,-3671,-4453,-5222,-5997,-6797,-7599, -8346,-8980,-9481,-9830,-9998,-9965,-9724,-9253,-8557,-7649, -6574,-5400,-4197,-3020,-1907,-871,117,1076,1989,2858, 3711,4562,5384,6132,6777,7272,7585,7724,7723,7629, 7482,7298,7077,6822,6540,6249,5979,5748,5536,5298, 4969,4498,3859,3059,2129,1128,116,-862,-1787,-2649, -3453,-4234,-5020,-5831,-6663,-7488,-8245,-8891,-9409,-9789, -10004,-10033,-9836,-9383,-8683,-7777,-6728,-5595,-4430,-3280, -2179,-1143,-156,797,1719,2606,3483,4368,5233,6017, 6669,7152,7461,7613,7648,7593,7487,7326,7100,6828, 6544,6273,6042,5854,5685,5474,5143,4648,3986,3182, 2267,1286,293,-676,-1593,-2446,-3249,-4041,-4857,-5707, -6570,-7400,-8150,-8802,-9356,-9787,-10056,-10116,-9931,-9484, -8792,-7904,-6891,-5802,-4664,-3521,-2426,-1398,-416,530, 1451,2363,3288,4220,5119,5915,6553,7017,7328,7522, 7608,7600,7510,7347,7110,6838,6564,6325,6133,5979, 5832,5627,5290,4782,4120,3323,2411,1436,460,-484, -1376,-2215,-3025,-3847,-4692,-5562,-6431,-7256,-8009,-8689, -9292,-9774,-10073,-10148,-9968,-9531,-8865,-8008,-7022,-5962, -4846,-3715,-2630,-1617,-658,282,1222,2176,3146,4108, 5013,5800,6435,6909,7246,7471,7598,7620,7538,7365, 7116,6841,6598,6406,6257,6135,5997,5783,5436,4930, 4271,3470,2565,1605,658,-244,-1112,-1960,-2802,-3652, -4517,-5389,-6242,-7067,-7858,-8598,-9254,-9769,-10083,-10172, -10008,-9590,-8947,-8124,-7167,-6125,-5024,-3920,-2864,-1873, -934,4,976,1989,3003,3971,4860,5636,6279,6777, 7153,7425,7581,7609,7523,7339,7090,6825,6606,6455, 6350,6248,6112,5896,5559,5056,4383,3572,2672,1751, 852,-16,-874,-1745,-2622,-3493,-4356,-5214,-6065,-6908, -7738,-8529,-9226,-9768,-10098,-10203,-10066,-9683,-9077,-8279, -7336,-6302,-5228,-4156,-3139,-2176,-1236,-279,723,1771, 2815,3795,4674,5439,6090,6626,7055,7367,7548,7579, 7470,7279,7050,6823,6631,6492,6404,6325,6211,6014, 5677,5160,4474,3669,2802,1926,1061,201,-669,-1559, -2449,-3316,-4161,-5006,-5866,-6747,-7616,-8433,-9157,-9720, -10074,-10203,-10103,-9755,-9172,-8390,-7457,-6438,-5398,-4370, -3381,-2432,-1489,-502,542,1613,2657,3631,4508,5276, 5947,6537,7024,7361,7543,7576,7476,7286,7073,6870, 6705,6595,6538,6494,6406,6205,5841,5297,4603,3823, 3002,2165,1311,433,-461,-1358,-2237,-3096,-3947,-4797, -5677,-6600,-7519,-8361,-9095,-9686,-10084,-10254,-10180,-9849, -9273,-8494,-7573,-6587,-5593,-4611,-3644,-2693,-1724,-702, 371,1451,2487,3448,4333,5136,5855,6479,6991,7351, 7540,7570,7481,7304,7093,6901,6766,6700,6682,6658, 6560,6335,5947,5394,4714,3963,3174,2348,1483,593, -303,-1187,-2047,-2901,-3770,-4654,-5560,-6498,-7437,-8310, -9063,-9676,-10117,-10337,-10293,-9970,-9399,-8636,-7739,-6787, -5838,-4901,-3960,-2992,-1982,-922,167,1235,2248,3204, 4111,4961,5723,6374,6897,7277,7492,7533,7434,7259, 7062,6891,6792,6770,6783,6760,6640,6393,6008,5481, 4838,4120,3346,2513,1632,738,-138,-990,-1833,-2686, -3571,-4480,-5412,-6363,-7306,-8196,-8988,-9642,-10114,-10363, -10344,-10036,-9468,-8711,-7860,-6970,-6067,-5152,-4211,-3228, -2196,-1133,-65,988,2006,2981,3913,4784,5576,6264, 6815,7209,7430,7473,7371,7203,7032,6905,6854,6870, 6904,6883,6748,6484,6105,5608,5000,4299,3524,2688, 1817,940,91,-741,-1585,-2455,-3351,-4271,-5216,-6182, -7147,-8063,-8893,-9597,-10115,-10377,-10348,-10037,-9481,-8757, -7955,-7133,-6286,-5390,-4432,-3428,-2400,-1355,-306,741, 1777,2785,3741,4631,5450,6178,6763,7164,7367,7388, 7286,7139,7012,6939,6937,6980,7012,6983,6852,6607, 6243,5765,5167,4459,3672,2841,1992,1155,327,-508, -1363,-2241,-3146,-4070,-5014,-5986,-6976,-7941,-8822,-9563, -10101,-10368,-10333,-10015,-9490,-8830,-8093,-7314,-6491,-5612, -4659,-3654,-2629,-1587,-531,521,1558,2571,3547,4474, 5342,6105,6701,7096,7283,7294,7202,7083,7000,6978, 7012,7062,7084,7051,6933,6708,6372,5912,5316,4600, 3813,3000,2183,1369,553,-287,-1153,-2035,-2936,-3860, -4807,-5791,-6819,-7841,-8774,-9540,-10071,-10319,-10284,-10001, -9534,-8938,-8251,-7497,-6681,-5805,-4865,-3877,-2855,-1811, -761,279,1316,2342,3347,4313,5220,6007,6608,6990, 7167,7185,7114,7035,6999,7015,7065,7114,7137,7115, 7018,6809,6474,6012,5421,4720,3954,3165,2370,1568, 755,-79,-943,-1823,-2715,-3640,-4602,-5617,-6691,-7768, -8735,-9500,-10017,-10264,-10247,-10010,-9605,-9065,-8412,-7680, -6881,-6018,-5087,-4100,-3077,-2039,-1005,22,1054,2103, 3158,4182,5112,5895,6475,6839,7014,7059,7036,7000, 6994,7026,7085,7146,7181,7175,7099,6911,6578,6112, 5532,4850,4113,3352,2569,1767,950,116,-732,-1593, -2474,-3400,-4388,-5449,-6568,-7671,-8642,-9399,-9914,-10184, -10210,-10016,-9656,-9157,-8545,-7837,-7053,-6204,-5279,-4285, -3265,-2253,-1249,-233,814,1904,3000,4060,5016,5798, 6357,6703,6886,6958,6980,6985,6992,7028,7105,7194, 7257,7266,7196,7011,6684,6221,5649,4996,4290,3551, 2772,1963,1141,320,-501,-1331,-2198,-3138,-4167,-5277, -6425,-7527,-8493,-9263,-9805,-10096,-10152,-9995,-9669,-9209, -8641,-7971,-7199,-6347,-5427,-4444,-3443,-2467,-1501,-494, 590,1729,2868,3941,4891,5660,6215,6574,6784,6887, 6925,6942,6972,7030,7128,7237,7328,7357,7283,7086, 6765,6314,5758,5130,4452,3720,2933,2120,1313,521, -264,-1076,-1954,-2924,-3993,-5137,-6300,-7409,-8387,-9167, -9722,-10034,-10121,-10005,-9723,-9301,-8761,-8118,-7359,-6502, -5586,-4643,-3687,-2734,-1772,-747,364,1539,2707,3790, 4729,5484,6042,6428,6666,6794,6853,6887,6936,7018, 7134,7261,7366,7408,7332,7122,6794,6374,5861,5255, 4567,3819,3030,2233,1460,710,-48,-859,-1759,-2763, -3863,-5021,-6190,-7312,-8309,-9101,-9656,-9987,-10113,-10049, -9818,-9440,-8924,-8273,-7507,-6665,-5779,-4870,-3957,-3026, -2047,-991,155,1348,2523,3607,4548,5310,5891,6296, 6547,6687,6764,6822,6898,7010,7155,7312,7432,7461, 7369,7168,6871,6486,5998,5396,4691,3931,3155,2389, 1653,934,192,-620,-1537,-2566,-3689,-4864,-6039,-7162, -8161,-8962,-9529,-9888,-10057,-10049,-9867,-9521,-9015,-8361, -7598,-6783,-5948,-5095,-4216,-3290,-2290,-1203,-34,1173, 2356,3444,4390,5162,5755,6173,6444,6598,6681,6753, 6862,7024,7212,7376,7480,7498,7420,7245,6984,6625, 6143,5525,4812,4063,3314,2585,1880,1187,452,-365, -1295,-2341,-3488,-4688,-5880,-7009,-8009,-8815,-9402,-9792, -10010,-10054,-9917,-9583,-9071,-8426,-7691,-6922,-6139,-5333, -4476,-3544,-2522,-1407,-219,1000,2185,3277,4231,5014, 5616,6044,6317,6476,6582,6697,6857,7051,7245,7401, 7497,7518,7470,7334,7088,6719,6230,5619,4913,4175, 3460,2769,2090,1411,692,-119,-1060,-2129,-3301,-4524, -5729,-6855,-7846,-8655,-9278,-9717,-9981,-10065,-9951,-9629, -9127,-8502,-7810,-7090,-6359,-5583,-4730,-3786,-2745,-1614, -417,804,1992,3093,4062,4858,5459,5878,6145,6321, 6470,6649,6851,7051,7233,7384,7489,7535,7516,7410, 7185,6818,6318,5712,5023,4306,3606,2946,2299,1633, 926,121,-839,-1949,-3149,-4375,-5569,-6683,-7671,-8504, -9168,-9661,-9967,-10073,-9966,-9651,-9174,-8590,-7943,-7265, -6567,-5822,-4979,-4026,-2971,-1837,-639,585,1789,2914, 3897,4692,5282,5688,5963,6178,6384,6602,6823,7020, 7201,7366,7502,7582,7585,7491,7272,6907,6410,5801, 5125,4434,3766,3133,2518,1883,1176,342,-651,-1788, -3003,-4220,-5388,-6487,-7493,-8373,-9089,-9626,-9964,-10085, -9982,-9672,-9217,-8677,-8085,-7455,-6792,-6054,-5204,-4246, -3195,-2066,-869,377,1614,2758,3731,4507,5094,5518, 5831,6087,6329,6571,6805,7018,7211,7396,7561,7676, 7698,7597,7364,6997,6502,5905,5242,4575,3946,3351, 2766,2149,1431,557,-477,-1627,-2830,-4034,-5200,-6303, -7332,-8251,-9013,-9590,-9952,-10082,-9979,-9692,-9281,-8790, -8248,-7659,-7007,-6267,-5417,-4468,-3429,-2291,-1064,216, 1468,2596,3546,4313,4915,5372,5723,6018,6287,6539, 6775,7006,7227,7434,7615,7740,7778,7694,7461,7088, 6590,6001,5362,4725,4130,3577,3016,2387,1642,748, -287,-1437,-2633,-3827,-4994,-6123,-7187,-8150,-8959,-9562, -9928,-10055,-9969,-9725,-9367,-8924,-8414,-7843,-7206,-6483, -5655,-4721,-3676,-2516,-1260,28,1270,2382,3327,4104, 4725,5207,5590,5915,6205,6466,6701,6940,7187,7424, 7625,7767,7817,7747,7528,7154,6651,6067,5457,4861, 4308,3788,3241,2598,1823,918,-106,-1233,-2414,-3604, -4774,-5924,-7032,-8038,-8874,-9486,-9853,-9992,-9944,-9751, -9435,-9021,-8529,-7980,-7378,-6703,-5913,-4974,-3905,-2724, -1460,-180,1038,2143,3094,3888,4528,5031,5442,5790, 6101,6371,6625,6885,7155,7414,7643,7816,7887,7818, 7590,7207,6705,6138,5561,5018,4516,4017,3462,2804, 2015,1106,90,-1009,-2169,-3357,-4552,-5736,-6875,-7908, -8750,-9355,-9734,-9912,-9909,-9753,-9470,-9087,-8631,-8122, -7558,-6914,-6140,-5197,-4100,-2896,-1639,-378,830,1925, 2874,3679,4346,4881,5317,5679,5997,6290,6564,6838, 7130,7419,7680,7877,7963,7891,7644,7240,6743,6210, 5680,5184,4717,4230,3663,2982,2186,1290,306,-768, -1916,-3111,-4336,-5558,-6719,-7750,-8595,-9233,-9652,-9860, -9882,-9745,-9484,-9138,-8738,-8286,-7764,-7133,-6357,-5405, -4296,-3083,-1836,-597,600,1701,2664,3482,4163,4718, 5173,5558,5887,6184,6472,6765,7081,7414,7715,7931, 8015,7935,7678,7270,6784,6283,5808,5360,4904,4405, 3831,3158,2379,1508,550,-508,-1668,-2896,-4148,-5378, -6543,-7588,-8460,-9130,-9579,-9812,-9850,-9727,-9491,-9194, -8851,-8452,-7964,-7351,-6575,-5615,-4497,-3289,-2049,-820, 373,1479,2450,3278,3973,4542,5013,5407,5738,6032, 6339,6678,7040,7409,7740,7962,8034,7938,7672,7273, 6812,6357,5932,5517,5067,4556,3975,3322,2579,1738, 791,-271,-1447,-2696,-3959,-5198,-6372,-7436,-8335,-9024, -9483,-9726,-9781,-9682,-9487,-9248,-8970,-8608,-8135,-7530, -6757,-5799,-4683,-3475,-2233,-1005,171,1260,2230,3070, 3792,4393,4872,5259,5594,5906,6234,6608,7016,7423, 7770,7994,8046,7920,7639,7256,6846,6451,6061,5648, 5193,4690,4129,3498,2776,1950,1006,-62,-1243,-2492, -3755,-5006,-6200,-7282,-8199,-8907,-9377,-9623,-9690,-9625, -9490,-9308,-9070,-8740,-8283,-7679,-6913,-5972,-4863,-3657, -2423,-1204,-44,1040,2027,2891,3627,4237,4721,5111, 5453,5793,6161,6572,7013,7446,7800,8005,8034,7896, 7631,7295,6938,6576,6196,5779,5323,4835,4301,3692, 2988,2176,1234,166,-1017,-2265,-3541,-4801,-6006,-7110, -8049,-8761,-9230,-9492,-9594,-9584,-9501,-9364,-9158,-8853, -8422,-7836,-7078,-6141,-5041,-3843,-2622,-1426,-268,829, 1840,2723,3466,4074,4563,4959,5303,5665,6083,6553, 7038,7488,7822,7996,8003,7879,7656,7375,7051,6692, 6306,5900,5466,4998,4475,3882,3197,2394,1455,387, -791,-2044,-3332,-4609,-5830,-6944,-7884,-8592,-9075,-9366, -9513,-9555,-9524,-9430,-9261,-8991,-8588,-8014,-7252,-6305, -5215,-4043,-2843,-1652,-494,607,1631,2537,3297,3908, 4389,4778,5135,5531,6001,6523,7045,7494,7802,7953, 7963,7865,7680,7426,7117,6769,6394,6004,5590,5147, 4649,4068,3378,2575,1647,594,-577,-1836,-3146,-4451, -5691,-6803,-7731,-8445,-8947,-9273,-9451,-9531,-9551,-9511, -9388,-9145,-8750,-8173,-7411,-6479,-5413,-4262,-3077,-1893, -738,369,1411,2339,3099,3696,4163,4560,4954,5404, 5925,6481,7008,7440,7738,7894,7920,7850,7697,7464, 7161,6829,6483,6119,5721,5287,4804,4242,3568,2772, 1860,822,-345,-1623,-2958,-4285,-5532,-6636,-7562,-8290, -8811,-9151,-9364,-9493,-9565,-9575,-9488,-9265,-8876,-8300, -7544,-6636,-5597,-4465,-3290,-2112,-954,175,1243,2172, 2907,3471,3936,4372,4819,5321,5882,6458,6980,7398, 7700,7877,7929,7878,7744,7529,7246,6925,6596,6255, 5881,5454,4971,4424,3784,3020,2121,1076,-107,-1398, -2742,-4076,-5326,-6435,-7363,-8095,-8627,-8997,-9253,-9435, -9559,-9607,-9548,-9343,-8966,-8407,-7670,-6778,-5764,-4661, -3501,-2312,-1123,26,1084,1983,2688,3241,3719,4198, 4710,5258,5838,6420,6942,7364,7666,7856,7935,7905, 7776,7569,7312,7025,6716,6386,6026,5617,5156,4630, 4008,3261,2370,1324,129,-1175,-2531,-3871,-5127,-6234, -7165,-7905,-8456,-8859,-9168,-9401,-9564,-9646,-9616,-9432, -9061,-8511,-7803,-6959,-5986,-4896,-3721,-2509,-1297,-144, 879,1736,2428,2991,3499,4016,4572,5154,5746,6322, 6847,7278,7590,7789,7881,7869,7761,7578,7342,7078, 6788,6465,6117,5743,5314,4809,4200,3464,2580,1537, 341,-975,-2354,-3710,-4963,-6060,-6985,-7740,-8325,-8768, -9117,-9402,-9616,-9731,-9710,-9528,-9171,-8650,-7985,-7189, -6250,-5155,-3949,-2708,-1499,-370,625,1458,2148,2738, 3289,3846,4423,5019,5626,6216,6752,7193,7519,7729, 7826,7819,7734,7582,7370,7118,6842,6535,6205,5853, 5458,4979,4396,3684,2813,1757,544,-783,-2167,-3524, -4775,-5866,-6787,-7543,-8152,-8640,-9043,-9381,-9635,-9771, -9763,-9589,-9255,-8779,-8165,-7401,-6466,-5362,-4135,-2878, -1674,-578,385,1208,1910,2529,3110,3695,4298,4917, 5545,6164,6716,7163,7497,7725,7841,7854,7779,7638, 7443,7212,6951,6661,6348,6012,5634,5189,4636,3947, 3075,2008,773,-569,-1951,-3304,-4554,-5645,-6560,-7317, -7950,-8488,-8959,-9349,-9625,-9769,-9777,-9643,-9361,-8926, -8343,-7593,-6653,-5524,-4285,-3034,-1848,-776,155,969, 1695,2347,2954,3557,4180,4827,5482,6109,6670,7130, 7477,7716,7854,7894,7839,7712,7533,7312,7057,6783, 6499,6191,5840,5418,4888,4198,3321,2253,1019,-336, -1734,-3094,-4330,-5403,-6317,-7104,-7795,-8393,-8909,-9325, -9624,-9784,-9808,-9715,-9497,-9116,-8554,-7804,-6843,-5694, -4449,-3215,-2061,-1015,-92,720,1450,2115,2754,3395, 4056,4728,5390,6015,6580,7058,7421,7666,7813,7869, 7837,7734,7573,7357,7106,6847,6588,6313,5993,5596, 5087,4411,3537,2461,1211,-148,-1541,-2884,-4101,-5161, -6084,-6908,-7654,-8307,-8851,-9272,-9574,-9760,-9836,-9796, -9624,-9282,-8737,-7972,-7000,-5858,-4635,-3430,-2297,-1273, -365,443,1180,1866,2534,3210,3898,4589,5261,5905, 6491,6976,7342,7601,7763,7836,7823,7735,7582,7378, 7148,6910,6671,6409,6113,5753,5270,4605,3719,2619, 1354,0,-1361,-2667,-3857,-4920,-5870,-6737,-7521,-8203, -8762,-9190,-9499,-9716,-9852,-9874,-9742,-9417,-8870,-8098, -7126,-6006,-4815,-3635,-2524,-1517,-629,167,920,1644, 2339,3028,3732,4442,5134,5792,6385,6882,7265,7549, 7736,7830,7832,7751,7606,7420,7208,6989,6772,6546, 6286,5954,5481,4808,3903,2789,1524,194,-1132,-2403, -3576,-4646,-5635,-6551,-7369,-8061,-8620,-9062,-9412,-9677, -9858,-9925,-9828,-9518,-8973,-8203,-7238,-6131,-4954,-3799, -2725,-1741,-856,-49,712,1452,2163,2867,3590,4327, 5041,5700,6288,6798,7214,7527,7733,7840,7859,7793, 7663,7487,7288,7083,6896,6720,6508,6192,5707,5013, 4095,2979,1727,418,-883,-2130,-3309,-4411,-5436,-6371, -7202,-7901,-8467,-8931,-9322,-9645,-9878,-9981,-9905,-9609, -9070,-8302,-7350,-6261,-5109,-3983,-2929,-1958,-1073,-270, 490,1239,1978,2716,3463,4207,4919,5584,6192,6718, 7146,7477,7708,7835,7859,7803,7682,7512,7322,7148, 7005,6879,6698,6390,5900,5188,4250,3138,1912,639, -635,-1882,-3086,-4225,-5275,-6219,-7046,-7752,-8337,-8834, -9271,-9646,-9926,-10065,-10006,-9711,-9173,-8410,-7476,-6421, -5305,-4193,-3144,-2186,-1317,-523,236,995,1762,2532, 3299,4051,4770,5442,6066,6612,7052,7388,7640,7797, 7840,7780,7652,7487,7318,7181,7087,7004,6851,6546, 6041,5316,4378,3286,2106,877,-386,-1652,-2875,-4026, -5089,-6043,-6876,-7592,-8205,-8748,-9234,-9658,-9977,-10139, -10095,-9809,-9274,-8527,-7609,-6579,-5491,-4404,-3374,-2427, -1561,-761,4,770,1554,2341,3118,3872,4600,5289, 5929,6497,6967,7332,7594,7756,7810,7751,7611,7458, 7327,7241,7199,7152,7015,6702,6175,5441,4531,3484, 2336,1121,-142,-1423,-2671,-3837,-4899,-5847,-6676,-7402, -8049,-8641,-9186,-9660,-10003,-10174,-10145,-9878,-9362,-8626, -7724,-6710,-5644,-4591,-3587,-2646,-1778,-976,-208,563, 1359,2165,2964,3730,4459,5146,5793,6383,6893,7295, 7577,7741,7781,7707,7569,7441,7368,7346,7346,7317, 7182,6862,6327,5602,4721,3704,2574,1354,88,-1186, -2435,-3610,-4673,-5608,-6436,-7184,-7874,-8513,-9108,-9622, -9996,-10190,-10174,-9920,-9414,-8687,-7801,-6817,-5782,-4745, -3756,-2842,-1993,-1192,-413,370,1179,2006,2819,3604, 4344,5039,5693,6308,6851,7277,7575,7732,7748,7658, 7542,7466,7446,7468,7490,7460,7313,6999,6483,5777, 4912,3914,2802,1592,320,-966,-2219,-3384,-4425,-5350, -6188,-6972,-7711,-8402,-9035,-9583,-9993,-10219,-10219,-9968, -9475,-8768,-7901,-6943,-5938,-4925,-3955,-3065,-2236,-1434, -642,153,976,1817,2641,3424,4169,4882,5567,6218, 6791,7234,7519,7654,7660,7583,7504,7473,7496,7546, 7582,7550,7403,7092,6590,5909,5068,4087,2985,1780, 504,-792,-2039,-3187,-4221,-5147,-5997,-6802,-7584,-8325, -8996,-9577,-10016,-10256,-10260,-10019,-9549,-8870,-8029,-7097, -6123,-5143,-4194,-3315,-2499,-1700,-895,-83,743,1584, 2414,3206,3962,4698,5421,6110,6709,7144,7400,7511, 7530,7497,7462,7469,7531,7612,7661,7630,7487,7194, 6715,6056,5237,4264,3154,1950,687,-587,-1818,-2955, -3987,-4930,-5802,-6634,-7449,-8234,-8942,-9543,-9996,-10251, -10271,-10050,-9592,-8930,-8115,-7211,-6269,-5324,-4411,-3551, -2739,-1934,-1114,-284,546,1383,2205,2999,3780,4562, 5332,6039,6625,7052,7307,7417,7441,7437,7450,7506, 7607,7713,7774,7745,7607,7329,6882,6255,5456,4488, 3379,2176,930,-319,-1534,-2674,-3711,-4655,-5551,-6430, -7291,-8108,-8844,-9467,-9943,-10226,-10272,-10064,-9613,-8960, -8167,-7285,-6378,-5479,-4597,-3747,-2927,-2110,-1277,-441, 387,1206,2017,2821,3636,4463,5272,5990,6561,6967, 7216,7336,7376,7407,7466,7564,7687,7792,7851,7837, 7720,7457,7029,6427,5647,4690,3585,2380,1135,-95, -1286,-2407,-3441,-4399,-5325,-6247,-7141,-7986,-8756,-9412, -9909,-10208,-10275,-10083,-9644,-9011,-8243,-7393,-6522,-5660, -4811,-3968,-3127,-2289,-1456,-637,171,975,1794,2632, 3493,4354,5172,5888,6453,6847,7083,7207,7281,7358, 7461,7582,7706,7816,7886,7894,7800,7559,7143,6551, 5778,4829,3730,2532,1299,89,-1071,-2174,-3213,-4189, -5139,-6088,-7014,-7893,-8696,-9384,-9903,-10207,-10278,-10106, -9685,-9069,-8334,-7535,-6707,-5871,-5033,-4185,-3331,-2484, -1660,-861,-75,720,1555,2438,3350,4243,5067,5771, 6321,6707,6952,7104,7215,7324,7453,7590,7721,7842, 7938,7975,7901,7681,7287,6704,5931,4986,3898,2719, 1509,321,-828,-1935,-2988,-3983,-4943,-5908,-6884,-7815, -8643,-9356,-9914,-10243,-10311,-10136,-9733,-9142,-8444,-7693, -6906,-6088,-5235,-4365,-3503,-2667,-1864,-1088,-313,499, 1360,2282,3237,4159,4987,5678,6213,6594,6854,7042, 7185,7313,7450,7593,7737,7880,8004,8064,8014,7824, 7457,6880,6106,5161,4082,2925,1737,564,-583,-1687, -2741,-3751,-4734,-5720,-6722,-7692,-8571,-9322,-9904,-10243, -10310,-10136,-9760,-9222,-8566,-7844,-7077,-6269,-5413,-4531, -3667,-2849,-2074,-1326,-562,264,1174,2144,3123,4059, 4888,5571,6092,6473,6758,6983,7155,7290,7434,7596, 7759,7912,8051,8139,8124,7962,7609,7041,6268,5328, 4257,3106,1940,793,-329,-1429,-2492,-3510,-4508,-5520, -6544,-7545,-8473,-9264,-9849,-10180,-10260,-10111,-9766,-9271, -8666,-7978,-7222,-6415,-5568,-4698,-3848,-3056,-2316,-1585, -811,40,989,1998,2994,3925,4746,5426,5954,6357, 6665,6907,7101,7264,7418,7591,7778,7963,8119,8231, 8244,8097,7748,7184,6417,5488,4439,3309,2162,1037, -73,-1169,-2230,-3256,-4275,-5309,-6370,-7416,-8379,-9187, -9779,-10116,-10210,-10088,-9786,-9333,-8762,-8106,-7368,-6558, -5706,-4857,-4056,-3302,-2580,-1846,-1058,-178,798,1827, 2838,3765,4578,5260,5807,6236,6569,6822,7020,7194, 7365,7550,7758,7974,8177,8317,8346,8206,7862,7301, 6543,5626,4602,3507,2383,1270,174,-900,-1948,-2985, -4041,-5121,-6217,-7306,-8296,-9110,-9703,-10053,-10163,-10071, -9812,-9411,-8878,-8229,-7489,-6683,-5846,-5029,-4269,-3554, -2845,-2104,-1296,-391,611,1652,2665,3598,4415,5100, 5655,6102,6451,6717,6927,7110,7298,7507,7740,7984, 8215,8388,8428,8288,7946,7396,6659,5762,4752,3675, 2576,1485,420,-626,-1667,-2726,-3818,-4943,-6081,-7190, -8191,-9005,-9597,-9958,-10099,-10048,-9837,-9481,-8980,-8333, -7583,-6785,-5984,-5210,-4483,-3798,-3105,-2353,-1509,-569, 451,1490,2495,3432,4261,4956,5519,5976,6333,6608, 6831,7036,7247,7478,7739,8014,8274,8457,8506,8375, 8043,7508,6789,5917,4925,3862,2779,1718,684,-344, -1388,-2459,-3576,-4738,-5911,-7038,-8047,-8864,-9458,-9838, -10024,-10031,-9863,-9526,-9025,-8388,-7655,-6881,-6111,-5379, -4692,-4025,-3330,-2559,-1692,-727,301,1337,2343,3281, 4114,4814,5390,5856,6221,6504,6737,6952,7176,7436, 7732,8042,8323,8512,8564,8458,8160,7643,6927,6066, 5096,4059,3006,1976,968,-50,-1103,-2203,-3359,-4555, -5750,-6882,-7890,-8714,-9328,-9742,-9974,-10027,-9893,-9565, -9062,-8432,-7720,-6980,-6254,-5569,-4915,-4253,-3537,-2746, -1878,-926,99,1154,2180,3126,3964,4678,5273,5748, 6107,6388,6629,6861,7111,7399,7725,8059,8355,8562, 8632,8541,8255,7753,7052,6198,5245,4237,3220,2226, 1251,249,-810,-1951,-3163,-4397,-5600,-6724,-7729,-8561, -9204,-9666,-9946,-10036,-9920,-9605,-9117,-8505,-7812,-7109, -6438,-5796,-5155,-4490,-3770,-2974,-2096,-1142,-124,930, 1962,2919,3767,4492,5102,5587,5957,6238,6484,6739, 7020,7341,7693,8044,8355,8584,8684,8606,8319,7820, 7126,6290,5363,4386,3407,2449,1498,508,-562,-1732, -2980,-4236,-5443,-6561,-7570,-8428,-9113,-9621,-9938,-10053, -9952,-9642,-9159,-8564,-7907,-7244,-6616,-6007,-5382,-4718, -4001,-3200,-2306,-1333,-314,731,1765,2734,3594,4324, 4931,5419,5796,6092,6359,6637,6945,7292,7668,8046, 8378,8626,8742,8684,8416,7927,7231,6402,5503,4576, 3652,2731,1785,783,-310,-1506,-2768,-4026,-5231,-6354, -7364,-8243,-8973,-9527,-9877,-9997,-9890,-9582,-9118,-8554, -7942,-7328,-6731,-6144,-5535,-4877,-4155,-3348,-2452,-1489, -476,575,1622,2602,3473,4225,4834,5314,5686,5995, 6286,6591,6919,7283,7679,8071,8419,8688,8826,8777, 8516,8034,7344,6525,5663,4797,3924,3027,2089,1067, -66,-1296,-2558,-3798,-4992,-6121,-7154,-8072,-8843,-9435, -9809,-9941,-9833,-9527,-9089,-8563,-7994,-7425,-6869,-6307, -5705,-5050,-4336,-3538,-2648,-1691,-680,385,1452,2437, 3308,4060,4675,5155,5536,5860,6165,6483,6833,7220, 7626,8035,8412,8709,8866,8815,8541,8050,7376,6595, 5783,4966,4126,3246,2307,1272,116,-1122,-2381,-3613, -4798,-5934,-7007,-7973,-8783,-9399,-9788,-9927,-9832,-9544, -9128,-8635,-8105,-7567,-7037,-6491,-5899,-5255,-4558,-3781, -2899,-1931,-899,178,1251,2248,3124,3866,4474,4957, 5349,5695,6019,6354,6727,7134,7564,8003,8419,8742, 8897,8837,8556,8067,7421,6688,5927,5152,4345,3477, 2519,1458,297,-926,-2168,-3398,-4597,-5756,-6854,-7854, -8694,-9331,-9727,-9872,-9792,-9531,-9139,-8672,-8178,-7679, -7172,-6640,-6066,-5442,-4758,-3986,-3105,-2124,-1074,6, 1083,2091,2979,3717,4307,4788,5201,5568,5910,6249, 6630,7066,7541,8024,8470,8807,8957,8887,8603,8127, 7516,6838,6127,5383,4599,3738,2767,1689,531,-677, -1906,-3137,-4362,-5554,-6685,-7715,-8582,-9226,-9619,-9767, -9711,-9486,-9136,-8701,-8231,-7756,-7281,-6784,-6243,-5636, -4955,-4179,-3286,-2295,-1242,-156,922,1933,2812,3545, 4146,4647,5069,5436,5783,6139,6538,6995,7513,8043, 8509,8845,8991,8918,8633,8179,7615,6993,6328,5612, 4830,3964,2995,1927,792,-392,-1619,-2876,-4124,-5347, -6524,-7600,-8481,-9118,-9510,-9680,-9650,-9456,-9135,-8734, -8301,-7855,-7399,-6923,-6409,-5827,-5156,-4370,-3462,-2461, -1404,-323,748,1749,2626,3360,3978,4496,4921,5287, 5640,6016,6446,6941,7498,8063,8547,8877,9006,8923, 8649,8227,7715,7146,6518,5815,5032,4163,3195,2141, 1030,-137,-1373,-2657,-3946,-5204,-6410,-7511,-8406,-9048, -9452,-9639,-9635,-9470,-9178,-8807,-8403,-7985,-7548,-7092, -6597,-6032,-5370,-4584,-3671,-2657,-1589,-501,568,1570, 2452,3197,3815,4330,4764,5140,5498,5885,6355,6908, 7508,8090,8577,8899,9007,8919,8670,8296,7836,7306, 6699,6005,5226,4357,3400,2364,1270,108,-1138,-2448, -3776,-5070,-6292,-7391,-8304,-8975,-9396,-9598,-9616,-9483, -9231,-8893,-8506,-8112,-7704,-7272,-6801,-6252,-5596,-4812, -3896,-2877,-1796,-705,364,1375,2278,3040,3665,4179, 4608,4979,5335,5751,6272,6887,7530,8117,8586,8882, 8979,8901,8681,8358,7956,7463,6866,6177,5404,4552, 3622,2616,1535,374,-878,-2208,-3563,-4884,-6126,-7239, -8161,-8843,-9287,-9513,-9554,-9442,-9215,-8905,-8548,-8183, -7814,-7424,-6980,-6443,-5788,-4998,-4074,-3045,-1975,-899, 164,1184,2106,2884,3512,4016,4433,4804,5189,5651, 6220,6869,7531,8123,8571,8849,8954,8903,8725,8443, 8069,7602,7026,6343,5581,4760,3870,2892,1814,642, -620,-1962,-3338,-4679,-5932,-7057,-7989,-8688,-9154,-9410, -9472,-9373,-9165,-8890,-8573,-8241,-7906,-7554,-7136,-6607, -5944,-5147,-4228,-3214,-2151,-1077,-16,1008,1950,2742, 3359,3839,4238,4630,5065,5586,6192,6855,7511,8090, 8533,8809,8925,8908,8783,8547,8193,7727,7159,6500, 5764,4968,4100,3138,2066,897,-371,-1729,-3127,-4485, -5738,-6860,-7812,-8545,-9039,-9313,-9398,-9320,-9131,-8882, -8609,-8322,-8026,-7698,-7288,-6762,-6105,-5322,-4425,-3432, -2370,-1279,-201,832,1780,2570,3174,3629,4018,4427, 4911,5484,6130,6813,7468,8024,8449,8739,8887,8905, 8817,8618,8287,7830,7273,6640,5937,5165,4314,3363, 2299,1124,-153,-1518,-2922,-4301,-5577,-6712,-7677,-8430, -8950,-9244,-9338,-9280,-9118,-8897,-8661,-8420,-8159,-7845, -7446,-6934,-6285,-5513,-4635,-3659,-2598,-1485,-372,679, 1609,2365,2938,3388,3793,4226,4753,5376,6053,6743, 7388,7932,8363,8679,8868,8919,8843,8653,8343,7915, 7385,6777,6114,5375,4540,3596,2540,1360,63,-1320, -2726,-4098,-5388,-6554,-7542,-8307,-8841,-9154,-9263,-9216, -9081,-8906,-8713,-8509,-8270,-7967,-7578,-7080,-6454,-5703, -4838,-3859,-2778,-1642,-513,537,1444,2164,2716,3168, 3599,4077,4650,5308,6003,6685,7321,7871,8323,8663, 8876,8953,8897,8715,8411,8004,7508,6936,6295,5577, 4766,3842,2796,1616,310,-1088,-2507,-3880,-5169,-6348, -7365,-8159,-8701,-9014,-9142,-9129,-9025,-8884,-8735,-8568, -8340,-8043,-7667,-7193,-6596,-5874,-5022,-4034,-2926,-1765, -635,398,1274,1968,2502,2965,3436,3965,4569,5238, 5930,6613,7253,7813,8278,8638,8874,8969,8933,8771, 8487,8094,7625,7089,6481,5785,4992,4085,3044,1858, 547,-849,-2275,-3669,-4980,-6169,-7194,-8002,-8555,-8869, -9008,-9033,-8973,-8876,-8762,-8611,-8399,-8122,-7777,-7336, -6768,-6059,-5205,-4195,-3060,-1881,-760,226,1058,1734, 2281,2765,3268,3825,4454,5136,5830,6514,7155,7722, 8199,8582,8844,8960,8935,8782,8516,8159,7723,7215, 6640,5982,5208,4296,3246,2069,762,-632,-2071,-3489, -4827,-6033,-7062,-7862,-8404,-8725,-8898,-8965,-8953,-8898, -8807,-8665,-8468,-8227,-7926,-7521,-6984,-6286,-5400,-4352, -3199,-2033,-939,9,804,1469,2040,2562,3088,3665, 4313,5010,5712,6399,7047,7630,8128,8521,8794,8936, 8926,8775,8529,8208,7818,7347,6797,6162,5405,4500, 3454,2286,1002,-393,-1861,-3314,-4667,-5873,-6902,-7702, -8255,-8601,-8810,-8914,-8941,-8915,-8837,-8700,-8519,-8311, -8052,-7694,-7181,-6474,-5562,-4482,-3325,-2181,-1128,-208, 568,1228,1816,2368,2933,3539,4198,4899,5605,6292, 6944,7556,8087,8501,8784,8929,8927,8798,8579,8293, 7937,7502,6982,6353,5602,4718,3700,2546,1261,-145, -1636,-3111,-4476,-5676,-6693,-7495,-8073,-8458,-8702,-8840, -8894,-8881,-8801,-8676,-8540,-8385,-8170,-7839,-7335,-6607, -5662,-4574,-3429,-2313,-1290,-404,354,1018,1627,2211, 2795,3415,4079,4783,5500,6204,6876,7503,8051,8476, 8761,8898,8908,8814,8629,8373,8049,7644,7137,6522, 5785,4926,3930,2788,1489,55,-1447,-2925,-4292,-5492, -6499,-7299,-7900,-8326,-8612,-8785,-8851,-8835,-8771,-8684, -8597,-8495,-8321,-8003,-7487,-6739,-5781,-4695,-3577,-2488, -1493,-624,129,805,1440,2049,2647,3268,3940,4649, 5371,6094,6797,7440,7985,8409,8696,8846,8877,8813, 8671,8451,8151,7763,7271,6682,5981,5141,4155,3011, 1696,238,-1278,-2755,-4116,-5308,-6308,-7123,-7757,-8223, -8540,-8723,-8787,-8776,-8745,-8723,-8697,-8634,-8482,-8168, -7636,-6871,-5918,-4851,-3746,-2677,-1707,-850,-95,591, 1240,1868,2486,3116,3790,4509,5246,5985,6706,7368, 7922,8346,8643,8815,8876,8847,8739,8545,8258,7881, 7425,6877,6209,5392,4413,3260,1925,452,-1075,-2545, -3887,-5074,-6093,-6941,-7613,-8106,-8427,-8604,-8676,-8697, -8713,-8743,-8772,-8752,-8611,-8293,-7754,-6983,-6038,-4993, -3916,-2878,-1928,-1080,-316,382,1040,1678,2308,2953, 3633,4355,5107,5874,6612,7280,7836,8263,8572,8769, 8866,8875,8790,8609,8336,7981,7554,7044,6417,5632, 4655,3478,2124,650,-860,-2317,-3651,-4844,-5894,-6779, -7481,-7987,-8305,-8480,-8574,-8633,-8695,-8781,-8855,-8853, -8715,-8400,-7863,-7096,-6151,-5119,-4082,-3083,-2150,-1298, -533,165,828,1471,2106,2756,3452,4199,4979,5760, 6510,7180,7738,8177,8509,8741,8880,8914,8841,8669, 8414,8091,7704,7232,6637,5868,4879,3676,2312,853, -635,-2082,-3434,-4662,-5743,-6654,-7372,-7884,-8206,-8392, -8508,-8601,-8711,-8849,-8970,-8991,-8853,-8524,-7983,-7227, -6297,-5277,-4252,-3275,-2355,-1505,-724,-18,633,1274, 1929,2599,3308,4079,4889,5688,6431,7092,7660,8128, 8487,8749,8910,8962,8895,8731,8508,8243,7909,7473, 6890,6108,5100,3887,2533,1102,-372,-1833,-3215,-4475, -5583,-6508,-7228,-7732,-8056,-8258,-8405,-8549,-8717,-8902, -9057,-9097,-8962,-8634,-8094,-7350,-6441,-5444,-4433,-3457, -2541,-1694,-912,-207,433,1074,1751,2454,3190,3980, 4805,5614,6349,6998,7576,8082,8475,8742,8901,8947, 8889,8758,8586,8374,8090,7682,7092,6292,5283,4083, 2750,1339,-125,-1607,-3025,-4306,-5419,-6342,-7055,-7553, -7880,-8104,-8298,-8505,-8732,-8959,-9135,-9184,-9050,-8718, -8186,-7462,-6579,-5609,-4617,-3651,-2740,-1897,-1126,-430, 210,847,1531,2270,3043,3842,4661,5463,6200,6868, 7467,7998,8412,8690,8841,8882,8839,8757,8653,8503, 8257,7860,7266,6467,5468,4291,2982,1574,107,-1383, -2823,-4132,-5259,-6177,-6877,-7367,-7702,-7957,-8193,-8451, -8738,-9009,-9194,-9245,-9114,-8783,-8264,-7568,-6713,-5760, -4782,-3831,-2924,-2088,-1335,-657,-16,637,1340,2097, 2887,3694,4506,5297,6042,6740,7379,7925,8336,8606, 8756,8811,8808,8787,8745,8633,8402,8014,7431,6644, 5668,4525,3239,1832,346,-1163,-2615,-3935,-5074,-5988, -6676,-7165,-7520,-7804,-8081,-8384,-8711,-9007,-9207,-9264, -9147,-8833,-8331,-7660,-6835,-5899,-4927,-3972,-3076,-2260, -1529,-870,-230,447,1187,1962,2740,3533,4344,5146, 5914,6640,7302,7854,8261,8520,8677,8768,8824,8861, 8856,8758,8529,8149,7587,6829,5885,4766,3486,2071, 570,-951,-2411,-3734,-4859,-5762,-6444,-6941,-7320,-7652, -7988,-8342,-8698,-9009,-9221,-9289,-9182,-8883,-8401,-7747, -6942,-6030,-5072,-4131,-3261,-2477,-1764,-1088,-415,282, 1027,1806,2588,3369,4175,4995,5804,6564,7223,7755, 8152,8425,8607,8742,8846,8921,8943,8864,8650,8279, 7733,7004,6090,4987,3706,2290,789,-739,-2220,-3550, -4662,-5540,-6210,-6720,-7135,-7516,-7909,-8315,-8705,-9034, -9255,-9334,-9240,-8959,-8500,-7869,-7072,-6158,-5213,-4306, -3476,-2720,-2014,-1319,-618,100,848,1617,2389,3177, 3998,4841,5677,6450,7113,7632,8018,8301,8515,8687, 8834,8944,8988,8928,8738,8393,7868,7157,6265,5181, 3913,2492,978,-560,-2044,-3369,-4466,-5329,-5995,-6526, -6980,-7411,-7850,-8284,-8686,-9024,-9264,-9366,-9304,-9052, -8604,-7968,-7177,-6282,-5356,-4479,-3678,-2939,-2220,-1501, -790,-77,662,1427,2201,2995,3838,4717,5574,6340, 6985,7505,7902,8206,8451,8668,8849,8979,9041,9006, 8846,8528,8034,7359,6494,5416,4141,2711,1177,-375, -1846,-3149,-4233,-5093,-5765,-6319,-6818,-7302,-7772,-8216, -8621,-8973,-9238,-9374,-9344,-9111,-8658,-8011,-7225,-6369, -5499,-4663,-3875,-3123,-2378,-1643,-926,-223,488,1234, 2026,2866,3743,4636,5492,6248,6874,7391,7811,8143, 8423,8681,8900,9048,9114,9098,8968,8684,8228,7589, 6741,5667,4376,2926,1383,-170,-1628,-2906,-3973,-4834, -5525,-6115,-6667,-7188,-7674,-8130,-8563,-8942,-9239,-9406, -9395,-9158,-8699,-8067,-7323,-6513,-5685,-4871,-4087,-3320, -2564,-1825,-1114,-426,267,1010,1828,2707,3613,4510, 5359,6111,6744,7267,7700,8059,8374,8655,8897,9074, 9164,9158,9046,8807,8399,7789,6947,5875,4585,3117, 1554,9,-1419,-2674,-3727,-4591,-5310,-5946,-6529,-7069, -7571,-8057,-8529,-8948,-9273,-9459,-9444,-9199,-8747,-8149, -7453,-6690,-5892,-5084,-4290,-3507,-2753,-2031,-1341,-667, 25,781,1624,2528,3447,4345,5192,5944,6584,7118, 7558,7946,8299,8611,8864,9053,9173,9205,9130,8923, 8555,7976,7142,6052,4742,3267,1708,182,-1217,-2443, -3494,-4380,-5132,-5787,-6380,-6930,-7454,-7980,-8499,-8964, -9310,-9491,-9471,-9229,-8793,-8224,-7571,-6848,-6068,-5256, -4451,-3674,-2929,-2230,-1569,-906,-196,587,1456,2382, 3312,4212,5054,5799,6426,6963,7439,7864,8238,8564, 8841,9051,9185,9253,9235,9086,8752,8184,7354,6253, 4916,3424,1884,392,-982,-2198,-3243,-4138,-4911,-5581, -6177,-6747,-7316,-7892,-8454,-8949,-9306,-9472,-9436,-9204, -8806,-8280,-7660,-6964,-6198,-5393,-4592,-3831,-3115,-2442, -1785,-1113,-391,416,1316,2259,3187,4075,4906,5647, 6286,6843,7349,7803,8193,8524,8806,9036,9213,9326, 9355,9259,8964,8405,7558,6441,5103,3625,2112,651, -713,-1945,-3010,-3912,-4677,-5348,-5965,-6575,-7199,-7828, -8421,-8920,-9260,-9422,-9402,-9201,-8839,-8356,-7775,-7091, -6327,-5532,-4755,-4017,-3323,-2665,-2009,-1316,-566,259, 1165,2114,3047,3927,4741,5480,6140,6727,7249,7714, 8120,8466,8752,8993,9209,9382,9474,9418,9137,8569, 7708,6584,5256,3808,2330,891,-472,-1716,-2799,-3708, -4464,-5124,-5765,-6429,-7109,-7767,-8370,-8866,-9205,-9372, -9380,-9221,-8893,-8433,-7873,-7207,-6449,-5660,-4902,-4192, -3527,-2883,-2224,-1524,-755,100,1022,1964,2883,3755, 4569,5320,5993,6589,7124,7602,8014,8360,8658,8938, 9207,9446,9591,9561,9274,8690,7823,6720,5424,4004, 2538,1101,-261,-1505,-2584,-3482,-4231,-4903,-5576,-6292, -7027,-7715,-8322,-8813,-9162,-9353,-9384,-9253,-8965,-8530, -7974,-7304,-6557,-5791,-5059,-4375,-3730,-3097,-2441,-1734, -951,-81,855,1799,2706,3562,4376,5141,5841,6463, 7004,7474,7886,8237,8564,8906,9252,9541,9715,9695, 9414,8835,7979,6900,5635,4230,2757,1308,-55,-1279, -2325,-3203,-3970,-4699,-5435,-6198,-6958,-7666,-8285,-8782, -9137,-9341,-9402,-9309,-9049,-8639,-8097,-7441,-6709,-5958, -5245,-4580,-3951,-3317,-2643,-1915,-1115,-239,694,1636, 2541,3391,4210,5002,5736,6381,6929,7391,7791,8160, 8535,8935,9342,9669,9851,9830,9557,8997,8174,7121, 5866,4451,2965,1512,172,-1014,-2041,-2925,-3721,-4491, -5275,-6075,-6854,-7568,-8191,-8702,-9078,-9316,-9407,-9337, -9095,-8695,-8162,-7527,-6826,-6105,-5406,-4760,-4147,-3521, -2837,-2082,-1264,-378,551,1482,2378,3233,4072,4896, 5655,6305,6847,7299,7697,8094,8525,8984,9419,9763, 9955,9948,9692,9156,8356,7313,6050,4625,3145,1713, 404,-753,-1763,-2662,-3497,-4307,-5116,-5933,-6726,-7451, -8078,-8597,-9003,-9279,-9401,-9350,-9128,-8741,-8213,-7594, -6926,-6240,-5572,-4948,-4346,-3720,-3025,-2250,-1418,-545, 359,1281,2188,3065,3927,4764,5522,6154,6673,7128, 7558,8001,8476,8973,9435,9789,9996,10026,9811,9302, 8501,7440,6165,4747,3291,1897,621,-518,-1527,-2446, -3307,-4145,-4982,-5812,-6616,-7343,-7972,-8512,-8952,-9264, -9412,-9378,-9168,-8794,-8281,-7682,-7035,-6383,-5756,-5161, -4565,-3929,-3215,-2427,-1588,-730,148,1059,1987,2901, 3789,4626,5372,5986,6479,6930,7406,7912,8425,8932, 9411,9806,10051,10110,9922,9435,8632,7560,6278,4868, 3439,2084,844,-274,-1292,-2240,-3137,-4001,-4845,-5681, -6485,-7225,-7882,-8450,-8911,-9244,-9418,-9406,-9204,-8823, -8323,-7751,-7140,-6528,-5947,-5373,-4770,-4113,-3390,-2609, -1784,-934,-61,855,1824,2789,3690,4501,5207,5810, 6322,6794,7293,7834,8381,8911,9411,9845,10143,10243, 10081,9603,8792,7703,6423,5038,3642,2323,1113,6, -1022,-1989,-2912,-3798,-4659,-5505,-6318,-7073,-7762,-8368, -8859,-9206,-9383,-9378,-9179,-8803,-8318,-7788,-7234,-6671, -6111,-5536,-4915,-4237,-3518,-2767,-1978,-1140,-245,712, 1715,2696,3585,4367,5045,5634,6170,6683,7209,7764, 8338,8904,9441,9911,10256,10392,10238,9747,8927,7841, 6577,5227,3876,2591,1396,283,-763,-1756,-2694,-3590, -4460,-5314,-6144,-6920,-7637,-8275,-8802,-9175,-9362,-9349, -9149,-8798,-8347,-7855,-7355,-6844,-6298,-5709,-5069,-4393, -3697,-2977,-2208,-1363,-433,569,1580,2531,3389,4151, 4828,5433,5991,6525,7067,7640,8236,8835,9418,9938, 10322,10475,10326,9831,9012,7948,6720,5405,4083,2823, 1638,519,-537,-1540,-2496,-3407,-4291,-5150,-5982,-6786, -7544,-8215,-8758,-9141,-9334,-9322,-9126,-8798,-8393,-7950, -7491,-7001,-6455,-5854,-5227,-4584,-3912,-3199,-2419,-1551, -596,416,1421,2357,3190,3940,4629,5258,5821,6357, 6914,7500,8111,8752,9399,9978,10389,10543,10387,9896, 9095,8052,6857,5580,4289,3042,1868,760,-301,-1321, -2294,-3218,-4109,-4977,-5836,-6669,-7455,-8160,-8728,-9108, -9285,-9268,-9086,-8798,-8462,-8073,-7623,-7121,-6574,-5985, -5380,-4770,-4125,-3408,-2604,-1708,-738,270,1261,2184, 3013,3770,4466,5094,5661,6204,6765,7366,8017,8717, 9419,10032,10461,10619,10455,9966,9180,8156,6981,5739, 4494,3278,2113,1005,-62,-1096,-2083,-3015,-3899,-4771, -5658,-6545,-7373,-8092,-8655,-9019,-9187,-9187,-9052,-8824, -8532,-8174,-7734,-7234,-6686,-6122,-5554,-4974,-4336,-3605, -2769,-1847,-876,113,1086,1997,2832,3597,4288,4903, 5470,6029,6604,7230,7932,8692,9434,10068,10513,10685, 10533,10052,9283,8288,7143,5931,4715,3520,2354,1230, 154,-882,-1867,-2794,-3678,-4561,-5481,-6415,-7279,-7998, -8535,-8884,-9064,-9101,-9022,-8844,-8572,-8216,-7785,-7299, -6780,-6246,-5710,-5140,-4494,-3749,-2900,-1974,-1009,-42, 917,1835,2680,3445,4129,4736,5284,5833,6429,7100, 7855,8657,9435,10098,10555,10732,10589,10118,9364,8403, 7309,6140,4942,3746,2571,1435,351,-674,-1638,-2550, -3450,-4377,-5344,-6302,-7170,-7879,-8410,-8773,-8985,-9062, -9020,-8864,-8602,-8252,-7833,-7367,-6887,-6401,-5889,-5312, -4651,-3896,-3050,-2133,-1179,-223,735,1673,2530,3284, 3955,4554,5096,5644,6261,6978,7782,8629,9440,10120, 10585,10764,10623,10164,9435,8510,7458,6326,5148,3954, 2773,1634,566,-424,-1360,-2285,-3232,-4217,-5220,-6188, -7043,-7737,-8275,-8669,-8923,-9039,-9021,-8879,-8629,-8290, -7892,-7470,-7034,-6573,-6072,-5501,-4828,-4056,-3219,-2327, -1382,-410,564,1511,2367,3109,3760,4346,4894,5462, 6107,6859,7708,8589,9425,10119,10590,10775,10643,10209, 9518,8638,7621,6502,5321,4125,2949,1824,787,-163, -1095,-2065,-3081,-4113,-5122,-6070,-6917,-7621,-8175,-8593, -8882,-9027,-9022,-8892,-8660,-8341,-7970,-7590,-7196,-6750, -6238,-5660,-4994,-4237,-3407,-2518,-1575,-591,400,1347, 2198,2931,3561,4123,4669,5259,5936,6732,7625,8552, 9420,10132,10602,10784,10667,10279,9648,8803,7802,6688, 5503,4301,3136,2047,1046,101,-856,-1870,-2927,-3979, -4985,-5919,-6765,-7495,-8085,-8530,-8832,-8988,-8997,-8865, -8637,-8352,-8026,-7682,-7307,-6873,-6367,-5797,-5148,-4414, -3587,-2687,-1730,-736,263,1210,2051,2766,3369,3916, 4471,5082,5786,6617,7554,8527,9430,10146,10607,10790, 10707,10369,9789,8983,7985,6860,5684,4509,3375,2319, 1336,373,-623,-1664,-2730,-3789,-4806,-5745,-6600,-7349, -7972,-8453,-8770,-8920,-8930,-8825,-8631,-8377,-8088,-7772, -7419,-6997,-6502,-5945,-5316,-4593,-3773,-2866,-1886,-872, 128,1065,1889,2580,3163,3697,4254,4892,5644,6527, 7504,8492,9391,10100,10568,10782,10744,10450,9908,9122, 8122,6994,5836,4709,3625,2589,1590,600,-425,-1497, -2580,-3634,-4649,-5611,-6499,-7275,-7924,-8419,-8736,-8887, -8911,-8836,-8680,-8461,-8203,-7917,-7586,-7179,-6694,-6141, -5514,-4795,-3966,-3040,-2038,-1013,-24,897,1713,2385, 2935,3447,4009,4684,5499,6450,7473,8464,9343,10056, 10565,10833,10837,10567,10038,9254,8258,7149,6021,4925, 3877,2853,1837,811,-236,-1318,-2408,-3468,-4482,-5466, -6395,-7207,-7865,-8354,-8676,-8845,-8892,-8837,-8710,-8528, -8301,-8030,-7717,-7343,-6887,-6344,-5722,-4992,-4142,-3192, -2178,-1151,-162,750,1541,2172,2683,3179,3774,4509, 5387,6383,7419,8400,9278,10022,10579,10891,10923,10668, 10132,9349,8375,7306,6224,5163,4129,3099,2060,1018, -36,-1106,-2189,-3268,-4314,-5318,-6251,-7073,-7740,-8237, -8576,-8771,-8843,-8823,-8729,-8579,-8370,-8113,-7813,-7462, -7038,-6519,-5900,-5166,-4309,-3346,-2318,-1280,-291,598, 1344,1934,2427,2938,3576,4368,5287,6287,7310,8294, 9200,9980,10568,10910,10971,10728,10192,9417,8479,7459, 6426,5401,4368,3326,2284,1235,176,-897,-1988,-3082, -4149,-5170,-6113,-6941,-7615,-8127,-8486,-8705,-8809,-8820, -8752,-8614,-8422,-8194,-7921,-7584,-7177,-6678,-6070,-5338, -4474,-3490,-2438,-1384,-405,434,1120,1686,2203,2763, 3443,4260,5183,6174,7195,8203,9149,9970,10595,10957, 11023,10776,10249,9510,8615,7637,6634,5617,4584,3542, 2504,1463,402,-684,-1800,-2912,-3992,-5020,-5970,-6800, -7481,-8003,-8379,-8626,-8756,-8784,-8736,-8625,-8459,-8249, -7997,-7691,-7310,-6832,-6238,-5510,-4629,-3610,-2523,-1473, -540,239,885,1454,2000,2594,3297,4120,5046,6042, 7075,8107,9095,9954,10602,10972,11036,10796,10297,9603, 8763,7826,6831,5813,4786,3758,2728,1693,641,-454, -1591,-2731,-3834,-4877,-5825,-6651,-7344,-7889,-8284,-8544, -8695,-8749,-8730,-8643,-8500,-8311,-8085,-7810,-7463,-7019, -6434,-5679,-4761,-3714,-2622,-1600,-725,-1,629,1221, 1795,2403,3112,3941,4868,5870,6923,7994,9025,9917, 10569,10932,11007,10810,10366,9718,8916,7996,7006,5995, 4980,3968,2947,1912,847,-260,-1411,-2563,-3679,-4731, -5690,-6531,-7242,-7804,-8212,-8484,-8651,-8726,-8724,-8659, -8539,-8373,-8180,-7955,-7656,-7232,-6630,-5830,-4876,-3827, -2761,-1775,-933,-237,375,966,1570,2204,2910,3730, 4662,5688,6784,7901,8958,9860,10521,10900,10997,10829, 10428,9827,9052,8148,7171,6171,5169,4168,3158,2122, 1045,-77,-1239,-2399,-3516,-4574,-5544,-6399,-7112,-7681, -8105,-8406,-8600,-8695,-8693,-8625,-8523,-8400,-8260,-8095, -7839,-7409,-6772,-5941,-4963,-3910,-2888,-1957,-1140,-437, 180,764,1363,1999,2697,3514,4469,5538,6679,7822, 8896,9809,10476,10867,10993,10869,10504,9926,9174,8293, 7348,6371,5385,4397,3390,2357,1281,152,-1017,-2186, -3322,-4393,-5368,-6219,-6932,-7511,-7966,-8301,-8515,-8611, -8612,-8557,-8486,-8416,-8343,-8226,-7991,-7548,-6873,-6008, -5021,-3991,-3014,-2129,-1332,-618,13,593,1172,1797, 2505,3339,4317,5418,6591,7754,8826,9741,10432,10852, 11004,10906,10568,10015,9286,8430,7505,6558,5603,4628, 3615,2576,1497,363,-815,-2000,-3159,-4238,-5197,-6034, -6758,-7371,-7857,-8208,-8419,-8508,-8520,-8503,-8482,-8473, -8460,-8379,-8139,-7668,-6963,-6081,-5106,-4116,-3168,-2291, -1493,-787,-167,396,955,1567,2290,3150,4157,5281, 6474,7651,8724,9635,10350,10817,11008,10928,10602,10067, 9371,8561,7671,6742,5799,4835,3830,2790,1705,555, -648,-1858,-3011,-4071,-5028,-5884,-6631,-7267,-7779,-8144, -8345,-8427,-8454,-8479,-8522,-8585,-8620,-8541,-8276,-7785, -7081,-6207,-5244,-4269,-3333,-2453,-1663,-976,-381,162, 705,1313,2048,2944,3987,5138,6335,7511,8600,9540, 10274,10760,10981,10929,10631,10126,9465,8686,7823,6912, 5988,5056,4075,3025,1914,746,-463,-1667,-2809,-3856, -4823,-5720,-6511,-7168,-7673,-8022,-8217,-8297,-8347,-8432, -8562,-8692,-8749,-8661,-8382,-7881,-7175,-6313,-5367,-4408, -3472,-2604,-1830,-1165,-587,-59,475,1090,1840,2756, 3829,5005,6209,7396,8509,9474,10216,10710,10950,10931, 10665,10197,9570,8814,7970,7084,6184,5267,4297,3234, 2094,915,-276,-1457,-2591,-3655,-4651,-5576,-6398,-7066, -7552,-7863,-8040,-8153,-8268,-8417,-8597,-8757,-8826,-8736, -8448,-7942,-7237,-6388,-5465,-4517,-3588,-2724,-1973,-1336, -779,-259,275,900,1670,2593,3661,4836,6067,7290, 8429,9395,10145,10661,10935,10948,10707,10260,9659,8936, 8128,7283,6409,5492,4504,3421,2264,1083,-85,-1240, -2376,-3471,-4507,-5464,-6302,-6965,-7431,-7718,-7902,-8056, -8233,-8440,-8649,-8817,-8880,-8783,-8495,-7999,-7308,-6476, -5562,-4609,-3679,-2834,-2106,-1494,-960,-449,97,732, 1502,2425,3499,4690,5939,7175,8320,9300,10076,10627, 10925,10958,10739,10315,9738,9056,8300,7492,6639,5723, 4713,3611,2455,1290,142,-1004,-2159,-3295,-4373,-5353, -6193,-6845,-7290,-7579,-7788,-7983,-8203,-8455,-8702,-8886, -8953,-8857,-8576,-8095,-7420,-6595,-5676,-4719,-3797,-2983, -2288,-1687,-1154,-648,-113,518,1289,2220,3317,4535, 5794,7026,8180,9195,10018,10604,10915,10953,10747,10349, 9808,9170,8462,7689,6841,5900,4870,3772,2648,1520, 376,-796,-1989,-3166,-4278,-5266,-6087,-6706,-7133,-7432, -7681,-7929,-8201,-8484,-8756,-8964,-9052,-8971,-8706,-8236, -7556,-6712,-5789,-4853,-3964,-3167,-2483,-1901,-1378,-879, -353,275,1059,2011,3121,4351,5618,6857,8033,9085, 9939,10547,10871,10919,10743,10393,9919,9343,8667,7895, 7029,6066,5025,3955,2871,1760,604,-604,-1847,-3067, -4188,-5153,-5943,-6550,-6989,-7313,-7599,-7898,-8218,-8530, -8811,-9040,-9158,-9100,-8839,-8366,-7684,-6837,-5912,-4987, -4119,-3331,-2645,-2068,-1564,-1079,-544,103,899,1850, 2953,4184,5466,6731,7938,9032,9918,10535,10857,10916, 10774,10490,10087,9564,8911,8126,7233,6267,5253,4214, 3150,2035,855,-392,-1678,-2926,-4051,-5006,-5764,-6349, -6808,-7181,-7514,-7850,-8196,-8540,-8854,-9110,-9252,-9210, -8947,-8470,-7796,-6964,-6048,-5115,-4240,-3466,-2809,-2246, -1747,-1260,-724,-67,743,1697,2788,4016,5322,6626, 7873,8998,9898,10505,10832,10932,10840,10599,10233,9740, 9101,8311,7416,6471,5493,4481,3422,2299,1089,-207, -1528,-2776,-3890,-4829,-5580,-6165,-6635,-7035,-7401,-7761, -8140,-8532,-8905,-9196,-9342,-9290,-9033,-8571,-7911,-7082, -6163,-5239,-4382,-3631,-2996,-2458,-1964,-1465,-913,-258, 532,1471,2562,3809,5161,6514,7779,8890,9770,10371, 10719,10872,10857,10673,10331,9834,9188,8408,7540,6629, 5687,4696,3638,2488,1233,-94,-1416,-2653,-3746,-4667, -5419,-6024,-6514,-6916,-7291,-7682,-8101,-8540,-8950,-9261, -9413,-9374,-9130,-8673,-8011,-7176,-6260,-5367,-4547,-3815, -3189,-2661,-2167,-1656,-1100,-466,296,1224,2335,3617, 5010,6396,7668,8754,9603,10214,10617,10835,10880,10745, 10424,9930,9283,8513,7676,6811,5915,4951,3884,2694, 1405,70,-1248,-2480,-3575,-4497,-5244,-5850,-6346,-6763, -7167,-7605,-8064,-8524,-8950,-9279,-9459,-9447,-9208,-8746, -8083,-7251,-6336,-5460,-4679,-3978,-3356,-2818,-2325,-1822, -1280,-670,77,1023,2176,3498,4911,6298,7551,8613, 9472,10122,10578,10847,10936,10828,10513,10024,9397,8665, 7869,7045,6174,5203,4112,2907,1610,267,-1061,-2305, -3399,-4311,-5048,-5646,-6148,-6597,-7046,-7520,-8016,-8504, -8946,-9293,-9499,-9503,-9260,-8778,-8102,-7292,-6424,-5573, -4792,-4108,-3507,-2963,-2460,-1983,-1481,-891,-139,829, 2018,3371,4790,6163,7397,8450,9333,10034,10539,10846, 10958,10861,10549,10063,9467,8789,8049,7257,6387,5400, 4286,3076,1779,425,-922,-2158,-3222,-4115,-4851,-5448, -5959,-6446,-6936,-7437,-7952,-8469,-8942,-9313,-9522,-9520, -9277,-8795,-8118,-7330,-6507,-5697,-4930,-4241,-3638,-3098, -2613,-2168,-1706,-1125,-349,646,1845,3190,4591,5938, 7164,8227,9131,9871,10435,10792,10917,10811,10512,10068, 9514,8881,8178,7404,6545,5570,4460,3230,1917,563, -770,-1992,-3034,-3902,-4629,-5243,-5786,-6295,-6803,-7322, -7866,-8410,-8910,-9302,-9519,-9505,-9242,-8765,-8129,-7386, -6591,-5791,-5031,-4332,-3720,-3207,-2774,-2372,-1920,-1325, -532,476,1676,3006,4375,5693,6900,7978,8920,9706, 10300,10674,10806,10713,10443,10039,9534,8948,8286,7541, 6694,5727,4623,3382,2048,694,-605,-1790,-2823,-3693, -4413,-5026,-5583,-6109,-6637,-7187,-7762,-8342,-8873,-9272, -9483,-9464,-9202,-8734,-8130,-7432,-6655,-5847,-5076,-4384, -3792,-3303,-2913,-2546,-2095,-1480,-668,352,1548,2848, 4179,5468,6678,7795,8783,9591,10192,10571,10721,10654, 10409,10044,9580,9033,8407,7690,6855,5878,4760,3518, 2199,859,-420,-1583,-2607,-3479,-4205,-4815,-5361,-5886, -6439,-7042,-7668,-8271,-8809,-9210,-9414,-9394,-9165,-8743, -8162,-7466,-6690,-5877,-5095,-4414,-3865,-3430,-3070,-2712, -2254,-1615,-777,247,1414,2672,3960,5244,6477,7622, 8636,9465,10073,10468,10644,10604,10385,10050,9626,9119, 8530,7835,7008,6024,4890,3646,2337,1017,-247,-1402, -2418,-3281,-4001,-4611,-5158,-5690,-6269,-6917,-7589,-8214, -8744,-9132,-9331,-9327,-9127,-8752,-8209,-7516,-6721,-5902, -5135,-4475,-3961,-3583,-3265,-2902,-2409,-1748,-911,84, 1210,2434,3714,5008,6263,7426,8453,9301,9930,10331, 10512,10491,10307,10013,9638,9180,8631,7957,7126,6134, 5003,3768,2465,1160,-93,-1248,-2257,-3097,-3787,-4377, -4932,-5508,-6134,-6809,-7498,-8137,-8671,-9059,-9263,-9272, -9093,-8740,-8221,-7542,-6746,-5918,-5175,-4579,-4125,-3769, -3440,-3054,-2537,-1872,-1054,-88,1014,2227,3516,4825, 6081,7245,8278,9136,9775,10188,10379,10384,10245,10000, 9670,9261,8742,8081,7251,6260,5128,3899,2610,1315, 67,-1081,-2075,-2890,-3553,-4133,-4713,-5337,-6003,-6696, -7390,-8032,-8568,-8961,-9191,-9243,-9106,-8756,-8206,-7508, -6726,-5941,-5241,-4684,-4264,-3921,-3576,-3163,-2642,-1993, -1200,-256,835,2038,3317,4628,5897,7072,8111,8974, 9621,10037,10247,10284,10196,10007,9726,9341,8841,8186, 7367,6389,5275,4044,2749,1455,218,-907,-1868,-2655, -3317,-3916,-4529,-5190,-5892,-6600,-7288,-7926,-8470,-8887, -9150,-9238,-9119,-8771,-8201,-7478,-6700,-5961,-5325,-4805, -4390,-4038,-3687,-3276,-2761,-2112,-1322,-395,670,1851, 3108,4412,5706,6904,7948,8813,9467,9887,10103,10174, 10136,9999,9770,9425,8944,8295,7478,6510,5395,4157, 2856,1573,367,-718,-1651,-2426,-3087,-3707,-4359,-5066, -5794,-6503,-7184,-7824,-8391,-8844,-9148,-9258,-9117,-8736, -8165,-7462,-6707,-6004,-5414,-4935,-4532,-4173,-3811,-3402, -2898,-2260,-1485,-578,461,1630,2887,4196,5502,6718, 7769,8626,9266,9693,9953,10080,10087,9989,9790,9478, 9024,8408,7610,6637,5510,4260,2955,1673,499,-533, -1424,-2190,-2867,-3517,-4206,-4938,-5670,-6372,-7056,-7726, -8328,-8811,-9136,-9246,-9094,-8693,-8114,-7435,-6733,-6074, -5510,-5047,-4656,-4293,-3930,-3518,-3017,-2394,-1643,-766, 252,1413,2679,3995,5309,6526,7579,8427,9062,9507, 9809,9988,10042,9981,9815,9530,9102,8509,7735,6767, 5632,4382,3087,1830,687,-312,-1185,-1960,-2664,-3342, -4040,-4766,-5493,-6204,-6915,-7621,-8260,-8772,-9097,-9186, -9021,-8627,-8065,-7408,-6742,-6124,-5585,-5127,-4747,-4397, -4029,-3606,-3103,-2495,-1769,-911,100,1266,2540,3863, 5171,6378,7408,8248,8906,9386,9713,9918,10014,9991, 9855,9610,9218,8639,7864,6893,5741,4481,3203,1989, 888,-80,-948,-1748,-2491,-3189,-3875,-4579,-5307,-6053, -6801,-7535,-8207,-8738,-9056,-9127,-8956,-8570,-8026,-7400, -6766,-6176,-5660,-5217,-4843,-4500,-4130,-3706,-3213,-2632, -1943,-1108,-86,1100,2379,3689,4982,6175,7202,8055, 8746,9260,9610,9844,9974,9984,9881,9670,9310,8758, 7981,6980,5809,4557,3307,2126,1055,102,-767,-1584, -2343,-3048,-3725,-4416,-5141,-5912,-6712,-7485,-8175,-8712, -9025,-9083,-8911,-8535,-8009,-7412,-6811,-6250,-5753,-5332, -4964,-4597,-4210,-3805,-3357,-2815,-2145,-1312,-292,895, 2173,3477,4757,5938,6971,7842,8547,9084,9465,9720, 9877,9941,9895,9718,9381,8837,8044,7025,5859,4637, 3426,2285,1241,285,-600,-1418,-2172,-2875,-3556,-4249, -4989,-5784,-6612,-7409,-8112,-8656,-8963,-9010,-8831,-8472, -7966,-7392,-6829,-6305,-5829,-5408,-5027,-4655,-4285,-3910, -3490,-2979,-2318,-1482,-455,723,1987,3284,4554,5732, 6770,7648,8356,8904,9314,9595,9781,9901,9929,9803, 9472,8898,8086,7075,5940,4757,3584,2470,1432,466, -424,-1232,-1968,-2664,-3344,-4047,-4818,-5654,-6507,-7314, -8015,-8546,-8856,-8920,-8744,-8377,-7890,-7366,-6846,-6347, -5881,-5448,-5049,-4688,-4356,-4015,-3613,-3098,-2432,-1593, -574,595,1847,3121,4376,5554,6600,7476,8179,8728, 9156,9478,9725,9903,9982,9882,9546,8949,8118,7124, 6026,4886,3750,2644,1598,631,-248,-1043,-1767,-2446, -3127,-3849,-4647,-5505,-6385,-7218,-7928,-8453,-8761,-8828, -8665,-8312,-7856,-7378,-6892,-6401,-5928,-5492,-5104,-4762, -4454,-4130,-3739,-3235,-2572,-1726,-711,443,1681,2943, 4191,5369,6418,7293,7992,8541,8993,9379,9704,9939, 10028,9923,9586,8996,8178,7197,6125,5014,3895,2797, 1748,784,-71,-834,-1552,-2246,-2943,-3681,-4495,-5384, -6295,-7152,-7870,-8397,-8693,-8749,-8593,-8282,-7871,-7415, -6941,-6454,-5977,-5543,-5174,-4864,-4579,-4269,-3885,-3390, -2730,-1890,-888,251,1489,2761,4014,5191,6221,7072, 7772,8353,8868,9330,9719,9993,10092,9978,9636,9063, 8278,7325,6268,5164,4046,2946,1912,973,133,-628, -1343,-2040,-2749,-3511,-4359,-5286,-6227,-7099,-7820,-8332, -8611,-8670,-8546,-8277,-7904,-7458,-6978,-6490,-6034,-5626, -5276,-4983,-4713,-4414,-4035,-3539,-2882,-2053,-1063,70, 1314,2598,3849,5005,6010,6839,7545,8176,8755,9276, 9713,10015,10132,10025,9683,9125,8363,7431,6382,5283, 4173,3083,2058,1128,298,-451,-1151,-1833,-2545,-3345, -4250,-5219,-6174,-7039,-7750,-8255,-8532,-8602,-8508,-8277, -7930,-7494,-7013,-6529,-6085,-5703,-5383,-5109,-4847,-4548, -4167,-3672,-3035,-2225,-1237,-84,1179,2453,3671,4799, 5795,6633,7365,8043,8673,9239,9711,10029,10149,10056, 9733,9182,8434,7525,6499,5408,4303,3219,2191,1266, 462,-252,-927,-1618,-2365,-3202,-4134,-5129,-6096,-6951, -7649,-8155,-8443,-8542,-8477,-8264,-7925,-7499,-7029,-6559, -6125,-5756,-5457,-5205,-4952,-4656,-4289,-3812,-3179,-2370, -1381,-225,1038,2307,3505,4599,5575,6434,7215,7943, 8618,9225,9723,10054,10183,10107,9810,9281,8544,7653, 6650,5571,4454,3354,2334,1439,667,-23,-689,-1394, -2183,-3056,-4004,-5004,-5976,-6831,-7523,-8033,-8346,-8478, -8437,-8234,-7894,-7469,-7012,-6569,-6171,-5820,-5527,-5275, -5028,-4750,-4414,-3967,-3344,-2518,-1508,-351,885,2129, 3307,4376,5334,6208,7040,7825,8544,9175,9689,10045, 10209,10159,9881,9377,8669,7793,6790,5703,4576,3479, 2489,1630,878,204,-460,-1187,-2011,-2928,-3903,-4901, -5866,-6724,-7425,-7944,-8285,-8444,-8421,-8215,-7876,-7464, -7033,-6623,-6247,-5908,-5614,-5367,-5140,-4893,-4577,-4130, -3509,-2682,-1658,-487,735,1934,3067,4121,5097,6001, 6849,7666,8431,9101,9636,10009,10194,10167,9911,9423, 8739,7883,6876,5770,4645,3578,2626,1806,1087,415, -269,-1026,-1888,-2830,-3819,-4816,-5775,-6633,-7347,-7896, -8256,-8424,-8401,-8209,-7891,-7504,-7082,-6679,-6312,-5987, -5707,-5476,-5281,-5071,-4767,-4303,-3647,-2798,-1780,-638, 562,1741,2845,3880,4875,5816,6696,7538,8342,9045, 9596,9977,10175,10167,9936,9484,8824,7966,6952,5846, 4737,3703,2789,1996,1303,639,-72,-865,-1743,-2688, -3672,-4664,-5621,-6491,-7225,-7796,-8176,-8348,-8323,-8146, -7862,-7501,-7095,-6689,-6323,-6004,-5741,-5546,-5394,-5211, -4910,-4428,-3746,-2881,-1868,-755,408,1561,2650,3672, 4654,5613,6546,7439,8267,8991,9563,9962,10183,10209, 10013,9589,8947,8088,7069,5968,4869,3860,2990,2238, 1546,866,138,-676,-1566,-2512,-3499,-4494,-5454,-6334, -7089,-7676,-8063,-8237,-8231,-8090,-7836,-7491,-7094,-6690, -6319,-6009,-5783,-5625,-5495,-5324,-5021,-4530,-3844,-2981, -1981,-888,243,1360,2425,3443,4433,5418,6385,7309, 8154,8891,9486,9914,10165,10223,10061,9655,9010,8148, 7131,6040,4970,4002,3167,2432,1734,1032,289,-525, -1417,-2364,-3354,-4366,-5357,-6261,-7020,-7602,-7993,-8186, -8206,-8087,-7848,-7506,-7106,-6700,-6342,-6067,-5882,-5762, -5638,-5446,-5131,-4644,-3957,-3086,-2086,-1023,50,1120, 2167,3189,4210,5232,6225,7156,8012,8771,9398,9864, 10151,10246,10110,9709,9051,8178,7157,6086,5067,4151, 3338,2599,1892,1186,446,-371,-1273,-2235,-3232,-4259, -5274,-6195,-6955,-7529,-7926,-8155,-8216,-8113,-7863,-7510, -7113,-6732,-6409,-6164,-6003,-5906,-5798,-5606,-5276,-4771, -4070,-3201,-2219,-1187,-155,874,1914,2965,4012,5050, 6062,7018,7891,8671,9341,9862,10204,10331,10206,9798, 9119,8234,7233,6214,5241,4344,3535,2798,2092,1379, 638,-173,-1087,-2079,-3106,-4140,-5146,-6058,-6824,-7419, -7842,-8094,-8174,-8079,-7828,-7471,-7080,-6721,-6431,-6218, -6082,-6000,-5910,-5729,-5387,-4857,-4150,-3302,-2363,-1377, -373,651,1701,2763,3832,4889,5908,6865,7752,8559, 9282,9868,10255,10402,10272,9851,9163,8286,7317,6338, 5395,4512,3712,2977,2269,1562,823,7,-919,-1932, -2973,-4002,-4996,-5914,-6703,-7325,-7776,-8049,-8137,-8032, -7775,-7428,-7048,-6693,-6422,-6252,-6160,-6100,-6005,-5804, -5447,-4912,-4211,-3383,-2478,-1536,-564,451,1507,2577, 3652,4716,5742,6707,7611,8457,9221,9851,10268,10415, 10270,9845,9175,8335,7401,6437,5504,4643,3860,3140, 2449,1750,1003,167,-777,-1792,-2824,-3848,-4841,-5769, -6592,-7250,-7714,-7987,-8073,-7974,-7726,-7390,-7028,-6699, -6455,-6322,-6265,-6220,-6112,-5889,-5512,-4975,-4284,-3487, -2621,-1705,-743,273,1325,2388,3461,4530,5562,6545, 7501,8406,9207,9857,10291,10444,10291,9860,9206,8398, 7495,6548,5627,4793,4038,3331,2647,1952,1190,327, -633,-1652,-2682,-3705,-4700,-5636,-6469,-7146,-7641,-7934, -8017,-7912,-7661,-7324,-6979,-6687,-6491,-6397,-6367,-6328, -6205,-5961,-5565,-5022,-4368,-3622,-2800,-1907,-945,80, 1140,2194,3239,4285,5315,6330,7335,8297,9150,9828, 10269,10425,10286,9884,9255,8463,7574,6647,5754,4943, 4210,3519,2830,2112,1335,469,-490,-1513,-2547,-3573, -4573,-5523,-6373,-7074,-7589,-7898,-7989,-7877,-7615,-7282, -6952,-6689,-6530,-6475,-6459,-6415,-6287,-6020,-5606,-5077, -4464,-3755,-2956,-2081,-1128,-110,939,1986,3017,4041, 5078,6132,7184,8189,9072,9756,10195,10367,10262,9884, 9272,8497,7623,6721,5866,5087,4371,3687,2993,2260, 1471,614,-329,-1346,-2392,-3424,-4430,-5397,-6282,-7014, -7539,-7842,-7921,-7803,-7541,-7218,-6923,-6709,-6594,-6550, -6532,-6469,-6315,-6040,-5651,-5161,-4574,-3883,-3091,-2212, -1260,-260,764,1790,2799,3825,4898,6003,7093,8123, 9023,9723,10177,10366,10277,9906,9290,8526,7689,6830, 5995,5237,4542,3863,3167,2430,1640,780,-159,-1172, -2218,-3263,-4288,-5286,-6204,-6951,-7479,-7777,-7847,-7714, -7449,-7143,-6887,-6726,-6658,-6632,-6599,-6510,-6333,-6067, -5709,-5257,-4699,-4028,-3240,-2347,-1396,-421,565,1562, 2558,3593,4700,5850,6976,8023,8950,9693,10183,10376, 10278,9911,9323,8591,7785,6955,6147,5409,4725,4044, 3350,2617,1823,958,27,-973,-2016,-3073,-4127,-5156, -6102,-6867,-7397,-7684,-7737,-7598,-7347,-7080,-6870,-6746, -6696,-6680,-6647,-6544,-6364,-6118,-5792,-5364,-4813,-4141, -3353,-2476,-1547,-606,341,1316,2327,3390,4516,5687, 6844,7930,8890,9657,10156,10351,10255,9905,9343,8640, 7869,7073,6296,5571,4883,4198,3501,2773,1987,1141, 227,-762,-1811,-2890,-3978,-5043,-6008,-6784,-7310,-7571, -7600,-7466,-7251,-7035,-6877,-6787,-6744,-6725,-6686,-6585, -6420,-6196,-5893,-5480,-4928,-4243,-3451,-2601,-1721,-819, 105,1070,2088,3172,4323,5516,6701,7821,8803,9579, 10093,10303,10209,9866,9335,8667,7919,7154,6410,5691, 4999,4316,3623,2895,2122,1298,399,-583,-1637,-2740, -3866,-4959,-5935,-6712,-7225,-7459,-7471,-7354,-7185,-7023, -6909,-6841,-6805,-6769,-6713,-6617,-6485,-6293,-5996,-5565, -5006,-4334,-3566,-2735,-1877,-1008,-116,826,1833,2918, 4090,5318,6544,7694,8696,9488,10017,10242,10160,9828, 9316,8678,7967,7234,6502,5797,5124,4454,3754,3022, 2257,1448,567,-409,-1482,-2627,-3792,-4901,-5870,-6625, -7115,-7344,-7364,-7274,-7147,-7023,-6932,-6880,-6839,-6784, -6720,-6653,-6556,-6381,-6075,-5626,-5054,-4395,-3664,-2861, -2020,-1178,-317,611,1621,2715,3905,5167,6432,7610, 8633,9439,9967,10190,10129,9829,9333,8710,8034,7340, 6633,5936,5266,4593,3893,3172,2429,1640,774,-206, -1316,-2507,-3703,-4825,-5785,-6509,-6967,-7186,-7234,-7196, -7123,-7028,-6936,-6866,-6812,-6768,-6734,-6696,-6607,-6417, -6111,-5678,-5120,-4464,-3743,-2975,-2175,-1367,-533,380, 1401,2521,3729,5015,6309,7514,8552,9359,9892,10133, 10099,9826,9358,8761,8113,7453,6775,6088,5400,4712, 4030,3341,2628,1859,992,-9,-1151,-2383,-3606,-4729, -5666,-6365,-6813,-7040,-7112,-7116,-7081,-7000,-6903,-6830, -6794,-6779,-6769,-6740,-6644,-6451,-6156,-5745,-5199,-4553, -3852,-3117,-2355,-1578,-763,139,1162,2294,3522,4830, 6154,7390,8440,9246,9789,10048,10027,9771,9340,8788, 8176,7539,6881,6195,5495,4809,4144,3496,2822,2066, 1193,163,-1021,-2291,-3530,-4631,-5529,-6209,-6669,-6932, -7047,-7072,-7038,-6962,-6882,-6830,-6815,-6818,-6819,-6790, -6701,-6519,-6221,-5801,-5267,-4647,-3976,-3271,-2537,-1784, -989,-96,931,2081,3338,4677,6023,7274,8347,9167, 9707,9963,9949,9713,9316,8809,8235,7613,6949,6257, 5564,4900,4273,3659,3008,2253,1352,290,-922,-2202, -3429,-4506,-5383,-6051,-6528,-6831,-6979,-7007,-6969,-6912, -6863,-6833,-6825,-6834,-6846,-6830,-6747,-6566,-6261,-5837, -5318,-4725,-4079,-3398,-2706,-1990,-1215,-324,708,1885, 3172,4531,5885,7152,8234,9064,9610,9879,9893,9700, 9354,8886,8323,7698,7028,6324,5636,5009,4434,3861, 3219,2440,1498,386,-846,-2106,-3301,-4372,-5262,-5938, -6421,-6741,-6910,-6957,-6931,-6881,-6834,-6820,-6836,-6862, -6881,-6875,-6801,-6621,-6318,-5889,-5368,-4788,-4172,-3536, -2884,-2194,-1428,-539,503,1691,2993,4372,5748,7023, 8112,8950,9514,9815,9873,9727,9421,8982,8425,7784, 7101,6411,5752,5162,4626,4080,3437,2632,1643,504, -722,-1967,-3159,-4222,-5105,-5794,-6301,-6637,-6815,-6879, -6875,-6836,-6798,-6798,-6835,-6876,-6909,-6917,-6848,-6660, -6347,-5924,-5415,-4853,-4266,-3667,-3044,-2370,-1608,-729, 305,1500,2829,4239,5639,6918,8001,8849,9431,9751, 9846,9755,9490,9068,8506,7846,7149,6478,5875,5349, 4852,4305,3635,2807,1806,655,-566,-1806,-2996,-4057, -4939,-5635,-6159,-6509,-6703,-6782,-6790,-6764,-6752,-6771, -6819,-6886,-6950,-6969,-6890,-6680,-6352,-5941,-5465,-4941, -4384,-3802,-3200,-2562,-1830,-951,94,1304,2654,4087, 5503,6794,7877,8705,9288,9645,9796,9755,9525,9104, 8527,7858,7176,6544,5989,5501,5026,4476,3787,2941, 1941,798,-440,-1687,-2865,-3922,-4820,-5534,-6068,-6426, -6627,-6708,-6728,-6723,-6730,-6766,-6834,-6927,-7010,-7029, -6931,-6712,-6391,-5987,-5521,-5015,-4489,-3952,-3396,-2784, -2065,-1192,-136,1099,2469,3896,5305,6602,7684,8520, 9142,9565,9774,9759,9520,9080,8495,7847,7211,6633, 6126,5657,5173,4613,3922,3063,2049,899,-337,-1580, -2751,-3808,-4710,-5438,-5987,-6361,-6568,-6643,-6657,-6663, -6695,-6763,-6860,-6962,-7037,-7042,-6945,-6735,-6420,-6019, -5565,-5086,-4599,-4104,-3590,-3001,-2287,-1412,-339,929, 2322,3750,5138,6402,7479,8354,9039,9524,9773,9758, 9498,9053,8488,7870,7269,6737,6275,5830,5352,4788, 4078,3199,2174,1031,-194,-1430,-2600,-3654,-4554,-5286, -5851,-6240,-6450,-6531,-6558,-6592,-6649,-6740,-6866,-6985, -7056,-7046,-6940,-6732,-6420,-6016,-5569,-5117,-4673,-4229, -3757,-3201,-2499,-1613,-506,795,2200,3609,4966,6219, 7320,8248,8991,9505,9766,9757,9486,9031,8484,7902, 7339,6851,6422,5994,5518,4951,4239,3356,2319,1168, -47,-1272,-2443,-3507,-4419,-5160,-5729,-6112,-6322,-6415, -6469,-6526,-6609,-6729,-6874,-6999,-7070,-7064,-6956,-6737, -6413,-6018,-5591,-5167,-4756,-4358,-3934,-3405,-2695,-1775, -644,656,2036,3412,4747,6010,7153,8142,8932,9471, 9733,9716,9453,9010,8475,7926,7417,6970,6567,6153, 5676,5092,4369,3488,2457,1310,97,-1130,-2306,-3375, -4302,-5056,-5617,-5991,-6207,-6325,-6403,-6479,-6580,-6723, -6889,-7026,-7091,-7075,-6961,-6739,-6415,-6024,-5611,-5225, -4877,-4538,-4139,-3601,-2867,-1927,-800,475,1825,3181, 4513,5803,6989,8013,8826,9389,9661,9639,9378,8957, 8453,7938,7471,7066,6687,6283,5807,5217,4485,3601, 2577,1447,250,-976,-2164,-3255,-4194,-4942,-5489,-5866, -6103,-6241,-6342,-6447,-6577,-6730,-6891,-7031,-7109,-7091, -6965,-6728,-6395,-6014,-5633,-5298,-5012,-4712,-4327,-3776, -3021,-2070,-963,272,1597,2951,4299,5615,6839,7898, 8736,9301,9565,9546,9310,8917,8440,7965,7538,7166, 6806,6398,5908,5321,4599,3722,2703,1584,387,-841, -2036,-3131,-4069,-4821,-5373,-5751,-5994,-6155,-6278,-6403, -6548,-6712,-6879,-7026,-7115,-7092,-6949,-6692,-6347,-5977, -5653,-5396,-5161,-4870,-4463,-3894,-3135,-2197,-1106,104, 1398,2750,4124,5473,6719,7804,8670,9245,9495,9470, 9249,8892,8462,8029,7639,7295,6945,6532,6035,5445, 4734,3869,2861,1744,542,-706,-1921,-3015,-3942,-4683, -5238,-5625,-5880,-6057,-6204,-6347,-6504,-6688,-6883,-7048, -7125,-7081,-6900,-6620,-6294,-5979,-5709,-5487,-5272,-4989, -4578,-4001,-3241,-2330,-1286,-103,1192,2552,3944,5326, 6617,7732,8601,9184,9447,9424,9192,8853,8474,8091, 7733,7401,7056,6651,6159,5565,4861,4012,3011,1888, 685,-565,-1789,-2889,-3813,-4558,-5112,-5492,-5758,-5955, -6120,-6285,-6470,-6686,-6913,-7085,-7131,-7042,-6841,-6556, -6256,-6000,-5798,-5614,-5396,-5098,-4680,-4106,-3366,-2484, -1476,-329,958,2339,3749,5160,6496,7641,8508,9073, 9334,9329,9131,8824,8479,8130,7796,7476,7139,6749, 6271,5684,4981,4143,3142,2004,781,-470,-1673,-2753, -3673,-4425,-4996,-5390,-5654,-5850,-6027,-6224,-6462,-6722, -6948,-7094,-7118,-7003,-6776,-6504,-6244,-6024,-5858,-5707, -5506,-5207,-4782,-4216,-3502,-2644,-1662,-542,731,2129, 3575,5012,6371,7529,8393,8941,9195,9209,9059,8804, 8495,8172,7859,7552,7223,6843,6384,5823,5126,4271, 3262,2121,889,-358,-1544,-2620,-3553,-4316,-4893,-5293, -5562,-5760,-5955,-6195,-6479,-6760,-6978,-7094,-7087,-6947, -6714,-6469,-6260,-6082,-5928,-5775,-5573,-5282,-4877,-4335, -3648,-2821,-1854,-746,520,1934,3427,4901,6262,7410, 8270,8817,9086,9129,9009,8796,8534,8240,7930,7622, 7314,6959,6519,5965,5267,4405,3387,2249,1028,-214, -1406,-2497,-3442,-4206,-4773,-5162,-5435,-5659,-5896,-6183, -6503,-6792,-6995,-7081,-7041,-6891,-6673,-6451,-6278,-6143, -6011,-5851,-5637,-5350,-4960,-4436,-3779,-2997,-2063,-951, 340,1778,3285,4777,6144,7282,8132,8691,8982,9050, 8966,8795,8571,8302,8005,7709,7419,7091,6669,6111, 5404,4544,3534,2398,1180,-67,-1283,-2392,-3330,-4065, -4603,-4977,-5263,-5536,-5835,-6165,-6514,-6815,-6996,-7034, -6963,-6817,-6625,-6433,-6275,-6154,-6041,-5891,-5683,-5397, -5014,-4527,-3922,-3176,-2258,-1141,177,1645,3161,4637, 5989,7125,7976,8546,8866,8974,8928,8786,8573,8316, 8056,7809,7545,7221,6797,6243,5541,4687,3681,2549, 1337,91,-1134,-2247,-3169,-3883,-4411,-4799,-5115,-5438, -5799,-6184,-6538,-6811,-6963,-6985,-6908,-6761,-6587,-6427, -6301,-6193,-6077,-5930,-5732,-5457,-5104,-4667,-4118,-3397, -2470,-1340,-6,1482,3016,4485,5816,6945,7817,8408, 8749,8888,8882,8770,8566,8321,8090,7881,7644,7331, 6906,6346,5652,4811,3818,2684,1453,183,-1038,-2135, -3044,-3733,-4241,-4648,-5021,-5402,-5813,-6226,-6581,-6825, -6944,-6952,-6871,-6740,-6597,-6464,-6358,-6265,-6157,-6009, -5812,-5560,-5247,-4851,-4332,-3637,-2716,-1564,-200,1302, 2840,4314,5642,6763,7647,8275,8653,8813,8817,8719, 8554,8361,8173,7971,7727,7425,7022,6475,5786,4959, 3974,2831,1564,267,-956,-2027,-2898,-3562,-4069,-4502, -4920,-5350,-5788,-6214,-6568,-6791,-6881,-6870,-6792,-6680, -6563,-6462,-6375,-6283,-6169,-6025,-5841,-5617,-5341,-4979, -4488,-3806,-2882,-1712,-338,1162,2687,4146,5475,6612, 7506,8150,8559,8748,8767,8687,8554,8406,8252,8063, 7816,7518,7149,6644,5967,5129,4127,2960,1683,396, -806,-1849,-2687,-3342,-3880,-4355,-4817,-5290,-5757,-6181, -6511,-6707,-6778,-6767,-6709,-6627,-6537,-6452,-6369,-6278, -6164,-6016,-5846,-5663,-5440,-5119,-4641,-3957,-3026,-1852, -485,1004,2519,3974,5317,6485,7397,8033,8435,8645, 8704,8656,8557,8432,8290,8113,7886,7609,7263,6791, 6140,5283,4235,3044,1778,514,-665,-1682,-2496,-3151, -3717,-4236,-4732,-5238,-5731,-6151,-6450,-6622,-6693,-6693, -6653,-6590,-6525,-6458,-6373,-6267,-6147,-6016,-5881,-5745, -5574,-5291,-4819,-4128,-3193,-2020,-663,811,2327,3794, 5145,6312,7235,7884,8293,8526,8621,8614,8541,8431, 8289,8112,7914,7679,7361,6903,6252,5383,4312,3102, 1839,603,-532,-1517,-2325,-2988,-3577,-4139,-4689,-5225, -5721,-6122,-6400,-6567,-6639,-6649,-6633,-6594,-6535,-6458, -6360,-6243,-6118,-6015,-5935,-5847,-5700,-5430,-4966,-4273, -3339,-2184,-843,625,2144,3621,4974,6135,7055,7720, 8162,8426,8553,8579,8531,8431,8284,8122,7959,7762, 7472,7021,6358,5467,4382,3167,1914,710,-378,-1324, -2127,-2820,-3451,-4057,-4641,-5197,-5696,-6086,-6349,-6512, -6594,-6623,-6630,-6614,-6560,-6463,-6334,-6199,-6086,-6013, -5979,-5939,-5811,-5543,-5090,-4407,-3482,-2343,-1017,456, 1990,3470,4817,5971,6891,7569,8042,8347,8503,8545, 8505,8415,8296,8176,8059,7895,7621,7168,6488,5571, 4464,3248,2015,853,-195,-1120,-1930,-2651,-3325,-3968, -4574,-5138,-5629,-6012,-6273,-6441,-6548,-6605,-6625,-6609, -6542,-6420,-6273,-6141,-6048,-6014,-6017,-6004,-5907,-5663, -5225,-4558,-3654,-2519,-1184,301,1841,3316,4645,5785, 6709,7413,7929,8270,8441,8484,8452,8383,8302,8234, 8167,8037,7774,7309,6604,5660,4537,3325,2121,1004, -1,-909,-1740,-2493,-3196,-3873,-4513,-5088,-5567,-5929, -6185,-6374,-6511,-6597,-6631,-6609,-6517,-6374,-6223,-6109, -6051,-6052,-6077,-6070,-5985,-5764,-5354,-4712,-3816,-2675, -1328,156,1682,3131,4442,5593,6554,7299,7836,8185, 8366,8420,8401,8351,8309,8292,8269,8162,7904,7425, 6684,5711,4596,3417,2249,1163,186,-702,-1533,-2319, -3071,-3785,-4436,-5008,-5477,-5830,-6098,-6313,-6479,-6588, -6629,-6588,-6475,-6327,-6195,-6116,-6090,-6101,-6138,-6155, -6094,-5901,-5516,-4873,-3960,-2802,-1458,0,1494,2934, 4249,5413,6395,7174,7734,8087,8273,8338,8342,8321, 8321,8351,8363,8268,8004,7506,6738,5748,4636,3488, 2371,1335,381,-511,-1364,-2193,-2991,-3722,-4364,-4913, -5375,-5748,-6056,-6302,-6480,-6581,-6601,-6533,-6407,-6269, -6153,-6082,-6068,-6104,-6167,-6216,-6197,-6039,-5671,-5023, -4090,-2928,-1595,-153,1318,2741,4063,5241,6242,7046, 7624,7988,8181,8255,8275,8316,8390,8470,8501,8411, 8123,7582,6790,5800,4704,3592,2522,1529,603,-301, -1209,-2092,-2909,-3639,-4273,-4815,-5279,-5681,-6023,-6289, -6466,-6560,-6558,-6460,-6320,-6197,-6098,-6030,-6030,-6102, -6207,-6290,-6298,-6151,-5776,-5127,-4206,-3054,-1729,-304, 1143,2552,3880,5078,6106,6924,7506,7868,8061,8155, 8217,8312,8449,8580,8635,8541,8228,7656,6840,5854, 4789,3735,2724,1748,803,-127,-1058,-1962,-2793,-3529, -4155,-4697,-5188,-5622,-5982,-6251,-6421,-6506,-6502,-6411, -6273,-6138,-6039,-5995,-6026,-6122,-6257,-6374,-6399,-6246, -5861,-5211,-4304,-3170,-1876,-485,950,2375,3723,4938, 5979,6800,7381,7743,7945,8065,8176,8325,8510,8678, 8748,8639,8299,7710,6898,5929,4903,3898,2929,1961, 986,12,-935,-1839,-2669,-3398,-4029,-4593,-5117,-5577, -5939,-6201,-6382,-6471,-6458,-6370,-6251,-6121,-6011,-5971, -6025,-6154,-6317,-6459,-6494,-6342,-5953,-5313,-4420,-3320, -2068,-703,739,2187,3558,4782,5816,6628,7203,7568, 7792,7957,8127,8330,8564,8775,8857,8714,8327,7718, 6926,6003,5027,4056,3091,2113,1119,135,-830,-1736, -2553,-3280,-3940,-4543,-5081,-5540,-5906,-6181,-6371,-6466, -6454,-6358,-6221,-6077,-5970,-5945,-6017,-6170,-6367,-6533, -6575,-6425,-6048,-5424,-4560,-3497,-2273,-918,523,1980, 3368,4605,5639,6435,6995,7360,7611,7829,8068,8345, 8620,8835,8905,8751,8350,7731,6961,6091,5169,4227, 3263,2259,1246,261,-687,-1593,-2423,-3169,-3846,-4461, -5004,-5469,-5859,-6161,-6356,-6442,-6422,-6320,-6167,-6011, -5911,-5912,-6012,-6187,-6398,-6571,-6614,-6468,-6107,-5507, -4675,-3640,-2433,-1084,358,1826,3223,4462,5494,6280, 6824,7194,7481,7750,8055,8406,8728,8928,8956,8776, 8378,7789,7056,6223,5334,4408,3444,2432,1413,430, -513,-1411,-2245,-3013,-3705,-4329,-4892,-5385,-5795,-6113, -6319,-6407,-6377,-6258,-6098,-5957,-5877,-5892,-6015,-6220, -6446,-6622,-6669,-6531,-6185,-5620,-4826,-3808,-2600,-1248, 210,1697,3110,4347,5359,6122,6653,7032,7363,7703, 8071,8458,8806,9011,9016,8804,8394,7835,7159,6373, 5495,4553,3570,2564,1572,596,-367,-1287,-2127,-2888, -3594,-4249,-4847,-5366,-5793,-6122,-6335,-6413,-6371,-6239, -6065,-5916,-5853,-5905,-6064,-6288,-6525,-6699,-6749,-6630, -6316,-5776,-5008,-4013,-2816,-1453,33,1553,2978,4202, 5185,5920,6443,6844,7224,7647,8099,8515,8838,9015, 9013,8817,8431,7893,7240,6482,5624,4686,3696,2696, 1708,736,-216,-1132,-1995,-2781,-3501,-4174,-4801,-5354, -5807,-6145,-6347,-6408,-6343,-6190,-6008,-5861,-5819,-5909, -6093,-6325,-6564,-6744,-6797,-6687,-6396,-5889,-5149,-4173, -2979,-1599,-89,1442,2845,4026,4971,5691,6234,6689, 7138,7624,8126,8565,8870,9015,9001,8829,8485,7982, 7343,6588,5736,4810,3846,2857,1869,897,-47,-952, -1817,-2629,-3368,-4055,-4702,-5283,-5759,-6100,-6284,-6317, -6234,-6080,-5913,-5797,-5776,-5870,-6063,-6300,-6537,-6719, -6784,-6703,-6444,-5973,-5261,-4298,-3096,-1696,-175,1352, 2733,3867,4756,5464,6053,6586,7107,7632,8137,8567, 8871,9026,9025,8863,8535,8053,7446,6718,5873,4954, 3993,3011,2026,1056,111,-798,-1668,-2480,-3237,-3952, -4621,-5226,-5724,-6064,-6231,-6247,-6151,-5991,-5838,-5755, -5769,-5874,-6065,-6308,-6543,-6718,-6802,-6765,-6561,-6136, -5445,-4464,-3223,-1807,-295,1209,2556,3649,4508,5216, 5850,6444,7023,7585,8101,8534,8842,9011,9020,8865, 8548,8090,7512,6811,5984,5074,4120,3146,2156,1184, 249,-652,-1524,-2350,-3135,-3890,-4597,-5221,-5716,-6042, -6201,-6216,-6118,-5952,-5803,-5741,-5779,-5907,-6096,-6317, -6536,-6722,-6843,-6852,-6689,-6294,-5617,-4617,-3331,-1886, -402,1033,2328,3400,4266,5004,5675,6314,6935,7528, 8062,8499,8813,8992,9019,8879,8580,8147,7594,6907, 6099,5203,4258,3285,2308,1346,422,-474,-1352,-2202, -3019,-3809,-4553,-5198,-5692,-6005,-6144,-6139,-6037,-5893, -5773,-5729,-5775,-5898,-6074,-6282,-6498,-6698,-6860,-6927, -6811,-6430,-5723,-4693,-3398,-1954,-492,881,2101,3151, 4046,4822,5529,6207,6860,7465,8004,8449,8774,8962, 9010,8903,8638,8228,7678,7007,6224,5349,4406,3429, 2459,1512,594,-296,-1168,-2031,-2882,-3713,-4485,-5135, -5628,-5948,-6082,-6060,-5953,-5825,-5732,-5709,-5764,-5879, -6035,-6229,-6454,-6696,-6911,-7020,-6927,-6544,-5812,-4746, -3451,-2041,-616,728,1911,2929,3827,4637,5396,6119, 6797,7409,7949,8407,8748,8954,9018,8929,8697,8315, 7777,7113,6341,5470,4526,3557,2595,1662,758,-130, -1016,-1903,-2797,-3666,-4449,-5087,-5570,-5886,-6018,-6001, -5910,-5811,-5740,-5721,-5761,-5852,-5991,-6189,-6445,-6744, -7017,-7152,-7042,-6628,-5875,-4802,-3519,-2148,-775,523, 1689,2708,3611,4450,5254,6016,6721,7357,7915,8384, 8742,8973,9052,8975,8759,8404,7890,7231,6454,5575, 4637,3690,2748,1828,936,51,-860,-1795,-2733,-3631, -4420,-5063,-5535,-5837,-5967,-5962,-5887,-5811,-5763,-5741, -5759,-5824,-5949,-6154,-6461,-6828,-7150,-7297,-7173,-6722, -5937,-4866,-3610,-2278,-961,283,1430,2462,3390,4251, 5075,5856,6584,7252,7839,8326,8695,8934,9037,8991, 8795,8453,7955,7316,6548,5674,4742,3811,2900,2010, 1123,231,-695,-1671,-2651,-3571,-4377,-5027,-5493,-5768, -5889,-5907,-5872,-5824,-5777,-5738,-5722,-5770,-5899,-6139, -6498,-6910,-7254,-7401,-7260,-6786,-5984,-4919,-3700,-2423, -1152,68,1209,2252,3210,4095,4925,5719,6474,7162, 7762,8265,8655,8908,9033,9026,8856,8523,8038,7408, 6646,5791,4884,3969,3076,2206,1333,426,-535,-1547, -2558,-3496,-4309,-4950,-5398,-5671,-5810,-5854,-5844,-5817, -5763,-5688,-5637,-5668,-5824,-6122,-6535,-6983,-7334,-7467, -7305,-6813,-6012,-4967,-3774,-2526,-1290,-102,1026,2074, 3042,3943,4801,5627,6403,7107,7723,8243,8653,8930, 9076,9086,8946,8628,8137,7495,6746,5918,5042,4160, 3291,2431,1554,625,-378,-1434,-2484,-3438,-4233,-4854, -5299,-5590,-5771,-5860,-5873,-5826,-5731,-5620,-5562,-5612, -5800,-6141,-6593,-7058,-7406,-7518,-7330,-6827,-6042,-5034, -3880,-2658,-1452,-304,796,1855,2846,3766,4646,5496, 6285,6997,7633,8177,8601,8901,9074,9101,8974,8678, 8196,7555,6814,6007,5159,4317,3495,2650,1752,787, -251,-1344,-2415,-3367,-4141,-4755,-5227,-5554,-5763,-5882, -5916,-5851,-5711,-5560,-5490,-5567,-5808,-6200,-6677,-7141, -7474,-7570,-7364,-6863,-6095,-5111,-3991,-2822,-1660,-534, 555,1612,2627,3583,4483,5343,6153,6875,7510,8064, 8525,8871,9073,9117,8995,8705,8233,7605,6873,6087, 5282,4485,3688,2850,1930,915,-169,-1273,-2325,-3247, -4010,-4636,-5142,-5513,-5757,-5888,-5904,-5804,-5632,-5476, -5421,-5526,-5806,-6235,-6733,-7196,-7520,-7603,-7393,-6894, -6144,-5194,-4113,-2985,-1856,-746,342,1407,2437,3408, 4326,5196,6014,6759,7417,7988,8475,8857,9090,9149, 9039,8751,8281,7659,6944,6191,5431,4676,3891,3037, 2090,1039,-84,-1200,-2221,-3111,-3874,-4515,-5049,-5465, -5744,-5874,-5861,-5724,-5536,-5388,-5363,-5501,-5815,-6265, -6773,-7238,-7545,-7609,-7391,-6904,-6175,-5262,-4226,-3134, -2028,-936,148,1230,2279,3266,4187,5057,5880,6637, 7323,7929,8438,8833,9091,9182,9086,8791,8312,7709, 7038,6336,5621,4885,4096,3214,2238,1172,40,-1072, -2077,-2958,-3733,-4411,-4982,-5426,-5721,-5845,-5804,-5648, -5464,-5328,-5314,-5480,-5840,-6318,-6821,-7269,-7572,-7629, -7409,-6931,-6233,-5348,-4344,-3277,-2194,-1111,-28,1066, 2139,3146,4078,4954,5781,6556,7263,7896,8440,8863, 9138,9234,9132,8832,8361,7781,7150,6509,5838,5114, 4311,3393,2375,1296,188,-895,-1889,-2782,-3607,-4342, -4952,-5410,-5703,-5810,-5742,-5569,-5388,-5275,-5286,-5484, -5870,-6367,-6872,-7310,-7605,-7667,-7448,-6973,-6290,-5442, -4476,-3438,-2371,-1292,-204,895,1973,2990,3935,4819, 5658,6445,7174,7840,8425,8887,9168,9250,9127,8823, 8367,7827,7253,6656,6015,5290,4463,3519,2480,1392, 307,-745,-1745,-2682,-3551,-4326,-4966,-5442,-5734,-5815, -5717,-5528,-5342,-5235,-5280,-5515,-5923,-6428,-6944,-7379, -7649,-7694,-7493,-7044,-6379,-5559,-4635,-3625,-2563,-1488, -406,686,1764,2788,3732,4613,5465,6286,7050,7747, 8362,8847,9146,9233,9109,8800,8360,7859,7338,6787, 6167,5431,4573,3611,2582,1521,457,-589,-1601,-2576, -3500,-4314,-4970,-5449,-5727,-5782,-5663,-5472,-5288,-5189, -5251,-5518,-5944,-6455,-6976,-7410,-7663,-7692,-7501,-7083, -6450,-5661,-4767,-3782,-2734,-1662,-590,499,1588,2626, 3569,4444,5297,6146,6958,7698,8343,8845,9143,9216, 9085,8805,8421,7977,7493,6963,6338,5585,4719,3761, 2745,1713,671,-379,-1419,-2432,-3393,-4246,-4931,-5405, -5655,-5690,-5564,-5372,-5202,-5136,-5240,-5522,-5945,-6451, -6970,-7403,-7658,-7687,-7500,-7098,-6493,-5739,-4874,-3910, -2878,-1816,-734,354,1422,2440,3380,4268,5147,6032, 6891,7676,8336,8826,9101,9158,9042,8807,8485,8101, 7661,7143,6505,5734,4854,3905,2911,1897,868,-190, -1264,-2319,-3306,-4185,-4889,-5371,-5610,-5633,-5498,-5294, -5134,-5113,-5259,-5561,-5996,-6504,-7003,-7416,-7668,-7703, -7521,-7138,-6566,-5849,-5021,-4084,-3053,-1975,-883,197, 1233,2217,3150,4053,4966,5903,6817,7635,8299,8769, 9025,9085,8993,8798,8533,8208,7794,7267,6615,5844, 4979,4064,3102,2104,1078,3,-1117,-2222,-3243,-4133, -4845,-5326,-5553,-5561,-5423,-5231,-5091,-5089,-5254,-5574, -6029,-6550,-7038,-7427,-7665,-7705,-7529,-7166,-6643,-5968, -5155,-4224,-3202,-2126,-1035,26,1040,2014,2952,3877, 4817,5789,6737,7578,8242,8695,8943,9022,8966,8817, 8601,8310,7904,7373,6717,5948,5107,4227,3302,2321, 1286,191,-968,-2122,-3173,-4080,-4800,-5268,-5476,-5471, -5337,-5170,-5066,-5090,-5265,-5593,-6052,-6576,-7061,-7433, -7659,-7715,-7571,-7228,-6722,-6077,-5283,-4352,-3331,-2276, -1223,-192,812,1783,2734,3693,4683,5692,6667,7515, 8160,8585,8826,8926,8923,8839,8672,8391,7980,7450, 6806,6059,5240,4375,3464,2495,1454,334,-847,-2024, -3112,-4039,-4747,-5196,-5386,-5377,-5251,-5100,-5017,-5071, -5284,-5638,-6093,-6597,-7064,-7419,-7637,-7708,-7596,-7297, -6823,-6192,-5399,-4477,-3468,-2418,-1393,-402,575,1552, 2531,3537,4580,5627,6609,7437,8062,8485,8743,8872, 8908,8867,8728,8469,8067,7534,6906,6196,5407,4558, 3663,2702,1651,509,-697,-1903,-3012,-3939,-4628,-5068, -5259,-5250,-5131,-5005,-4954,-5031,-5264,-5637,-6101,-6578, -7014,-7359,-7591,-7682,-7606,-7349,-6908,-6282,-5483,-4564, -3565,-2543,-1550,-594,358,1342,2362,3422,4510,5585, 6550,7345,7961,8409,8704,8881,8967,8952,8817,8554, 8159,7637,7025,6343,5588,4773,3892,2924,1855,682, -558,-1788,-2908,-3845,-4538,-4959,-5141,-5138,-5033,-4927, -4905,-5012,-5252,-5621,-6081,-6556,-6987,-7340,-7596,-7716, -7667,-7434,-6996,-6368,-5586,-4677,-3689,-2699,-1759,-850, 94,1106,2175,3276,4381,5447,6398,7179,7796,8270, 8611,8842,8967,8974,8852,8591,8193,7679,7091,6437, 5726,4952,4082,3088,1991,797,-472,-1732,-2865,-3797, -4477,-4881,-5048,-5052,-4972,-4894,-4898,-5025,-5280,-5648, -6091,-6551,-6974,-7331,-7603,-7752,-7734,-7516,-7080,-6443, -5663,-4779,-3837,-2887,-1974,-1081,-148,892,2016,3155, 4265,5308,6232,7002,7633,8140,8529,8802,8955,8977, 8866,8613,8220,7725,7176,6564,5883,5125,4265,3270, 2150,927,-359,-1628,-2767,-3692,-4361,-4759,-4930,-4946, -4888,-4835,-4868,-5025,-5292,-5655,-6073,-6504,-6917,-7287, -7584,-7756,-7761,-7561,-7127,-6484,-5699,-4841,-3956,-3069, -2179,-1275,-309,761,1914,3069,4170,5204,6121,6892, 7532,8066,8499,8815,8992,9014,8888,8631,8260,7794, 7278,6717,6074,5328,4471,3480,2347,1091,-230,-1512, -2650,-3567,-4230,-4632,-4805,-4832,-4801,-4770,-4822,-4996, -5272,-5621,-6018,-6432,-6852,-7260,-7589,-7770,-7772,-7568, -7133,-6494,-5723,-4901,-4073,-3245,-2383,-1468,-470,634, 1807,2960,4046,5055,5967,6766,7455,8024,8475,8808, 9004,9030,8900,8646,8291,7860,7383,6862,6263,5540, 4672,3666,2520,1238,-119,-1427,-2565,-3476,-4129,-4527, -4705,-4746,-4741,-4759,-4837,-5004,-5273,-5614,-5991,-6402, -6842,-7272,-7619,-7815,-7814,-7592,-7147,-6517,-5784,-5012, -4234,-3433,-2579,-1652,-638,476,1663,2825,3895,4877, 5784,6618,7348,7951,8428,8785,8990,9022,8903,8670, 8347,7958,7520,7028,6445,5735,4874,3849,2666,1352, -18,-1322,-2452,-3361,-4018,-4412,-4590,-4655,-4693,-4751, -4853,-5019,-5266,-5584,-5952,-6376,-6841,-7293,-7650,-7850, -7832,-7588,-7144,-6555,-5880,-5170,-4437,-3654,-2789,-1833, -786,342,1517,2667,3735,4714,5624,6472,7226,7870, 8388,8758,8958,8996,8897,8688,8402,8051,7648,7192, 6647,5949,5072,4013,2800,1476,106,-1200,-2330,-3223, -3861,-4255,-4459,-4560,-4631,-4713,-4829,-4993,-5221,-5523, -5903,-6353,-6843,-7311,-7677,-7865,-7827,-7569,-7138,-6594, -5983,-5333,-4635,-3858,-2981,-1998,-920,222,1383,2513, 3585,4579,5503,6366,7148,7823,8365,8749,8959,9007, 8916,8722,8473,8166,7799,7376,6856,6170,5287,4210, 2962,1619,247,-1062,-2196,-3072,-3701,-4115,-4356,-4486, -4577,-4679,-4801,-4952,-5161,-5468,-5880,-6364,-6875,-7351, -7706,-7877,-7830,-7574,-7157,-6654,-6098,-5498,-4813,-4030, -3144,-2154,-1064,81,1230,2347,3414,4422,5370,6265, 7085,7779,8323,8717,8949,9010,8925,8754,8537,8271, 7944,7558,7048,6349,5462,4385,3121,1744,363,-934, -2049,-2918,-3555,-3996,-4279,-4455,-4565,-4653,-4758,-4906, -5122,-5440,-5874,-6384,-6913,-7388,-7723,-7864,-7805,-7577, -7209,-6746,-6228,-5652,-4982,-4200,-3312,-2314,-1233,-107, 1034,2153,3218,4226,5198,6129,6983,7703,8257,8638, 8859,8937,8895,8758,8559,8326,8057,7713,7222,6530, 5624,4507,3214,1829,460,-805,-1895,-2760,-3406,-3877, -4210,-4425,-4536,-4604,-4692,-4841,-5077,-5426,-5890,-6420, -6951,-7408,-7712,-7827,-7774,-7578,-7262,-6851,-6365,-5806, -5140,-4348,-3447,-2465,-1416,-303,839,1964,3035,4054, 5044,6005,6885,7619,8179,8567,8789,8872,8855,8762, 8611,8426,8204,7888,7407,6715,5788,4634,3313,1933, 593,-638,-1705,-2576,-3250,-3750,-4113,-4339,-4446,-4506, -4593,-4746,-5000,-5391,-5893,-6442,-6964,-7386,-7651,-7752, -7711,-7549,-7277,-6916,-6472,-5934,-5270,-4467,-3553,-2574, -1551,-472,658,1789,2871,3907,4917,5902,6808,7564, 8135,8526,8751,8837,8831,8768,8670,8546,8370,8080, 7614,6914,5956,4773,3452,2091,776,-441,-1513,-2405, -3117,-3656,-4032,-4257,-4366,-4427,-4507,-4669,-4957,-5382, -5898,-6446,-6959,-7357,-7596,-7692,-7674,-7552,-7328,-7008, -6592,-6064,-5401,-4610,-3717,-2736,-1705,-644,451,1575, 2679,3736,4762,5762,6686,7466,8047,8430,8654,8759, 8777,8742,8688,8614,8486,8228,7761,7038,6063,4878, 3568,2234,946,-258,-1344,-2275,-3037,-3619,-4009,-4221, -4322,-4387,-4474,-4650,-4967,-5417,-5941,-6471,-6952,-7329, -7574,-7686,-7690,-7600,-7414,-7126,-6723,-6192,-5525,-4742, -3870,-2915,-1891,-839,233,1339,2461,3561,4621,5635, 6562,7337,7914,8304,8543,8669,8720,8740,8746,8713, 8594,8340,7877,7146,6159,4980,3702,2398,1125,-82, -1191,-2152,-2934,-3529,-3921,-4127,-4216,-4277,-4388,-4607, -4957,-5417,-5936,-6455,-6911,-7265,-7507,-7637,-7659,-7596, -7446,-7187,-6797,-6273,-5617,-4839,-3961,-3019,-2034,-1009, 59,1172,2307,3434,4531,5565,6499,7262,7823,8204, 8462,8620,8708,8776,8833,8850,8769,8513,8030,7289, 6310,5149,3891,2608,1337,111,-1026,-2018,-2821,-3408, -3777,-3975,-4068,-4142,-4293,-4567,-4949,-5414,-5928,-6435, -6868,-7206,-7448,-7591,-7641,-7605,-7483,-7246,-6865,-6342, -5697,-4936,-4072,-3145,-2191,-1190,-123,999,2146,3287, 4402,5461,6405,7167,7724,8101,8354,8536,8672,8793, 8911,8978,8915,8646,8139,7393,6429,5293,4056,2793, 1534,288,-886,-1912,-2729,-3314,-3677,-3869,-3976,-4082, -4270,-4573,-4977,-5453,-5958,-6430,-6831,-7164,-7419,-7583, -7656,-7656,-7563,-7343,-6972,-6457,-5823,-5088,-4264,-3368, -2416,-1422,-365,760,1924,3090,4225,5294,6236,6996, 7551,7933,8196,8405,8598,8799,8978,9069,8996,8708, 8193,7462,6536,5437,4219,2952,1684,426,-774,-1818, -2635,-3208,-3563,-3763,-3890,-4024,-4236,-4559,-4983,-5460, -5937,-6384,-6780,-7110,-7366,-7546,-7656,-7683,-7611,-7412, -7060,-6560,-5937,-5229,-4441,-3567,-2629,-1642,-588,550, 1739,2931,4095,5168,6091,6831,7379,7769,8064,8319, 8570,8827,9044,9147,9070,8776,8267,7564,6673,5602, 4409,3145,1852,576,-621,-1659,-2457,-3005,-3348,-3565, -3729,-3905,-4148,-4498,-4934,-5399,-5851,-6278,-6667,-7004, -7278,-7490,-7633,-7692,-7628,-7431,-7094,-6618,-6012,-5314, -4552,-3718,-2813,-1844,-785,369,1579,2808,4001,5080, 5982,6688,7225,7636,7971,8284,8598,8903,9135,9233, 9146,8848,8351,7683,6834,5789,4596,3324,2026,746, -449,-1479,-2263,-2788,-3128,-3372,-3580,-3804,-4083,-4449, -4887,-5345,-5785,-6190,-6558,-6897,-7206,-7454,-7621,-7700, -7666,-7478,-7141,-6684,-6110,-5438,-4697,-3902,-3032,-2072, -1015,144,1382,2639,3845,4915,5804,6503,7040,7467, 7846,8217,8590,8939,9185,9267,9180,8910,8443,7793, 6973,5959,4762,3459,2142,860,-335,-1349,-2109,-2633, -2989,-3255,-3484,-3737,-4056,-4446,-4882,-5322,-5744,-6145, -6520,-6862,-7176,-7448,-7646,-7734,-7703,-7530,-7216,-6770, -6218,-5581,-4886,-4121,-3259,-2304,-1246,-63,1213,2492, 3684,4722,5579,6275,6840,7310,7741,8170,8575,8917, 9160,9259,9189,8946,8528,7924,7119,6106,4905,3594, 2267,987,-196,-1190,-1929,-2448,-2829,-3127,-3390,-3670, -4005,-4405,-4842,-5266,-5671,-6069,-6456,-6817,-7148,-7434, -7646,-7748,-7714,-7545,-7252,-6835,-6313,-5716,-5054,-4309, -3467,-2517,-1441,-227,1077,2369,3545,4552,5373,6059, 6651,7176,7666,8139,8574,8921,9153,9258,9216,9007, 8631,8074,7294,6277,5064,3744,2411,1145,1,-963, -1703,-2236,-2641,-2974,-3281,-3600,-3954,-4343,-4754,-5171, -5574,-5962,-6350,-6739,-7109,-7422,-7640,-133,-217,-217, -247,-278,-300,-245,-204,-253,-385,-411,-267,87, 607,977,713,146,119,741,1541,2423,3283,3887, 5011,7133,8156,7444,5428,3372,3119,3813,3475,2679, 2132,1100,-308,-2217,-5914,-9647,-11625,-13344,-14277,-12905, -11375,-11793,-11826,-9854,-7492,-5208,-3148,-2570,-2411,-490, 3243,7321,9296,7664,4300,2125,2109,4075,6524,6604, 4494,3846,6065,8126,7530,5354,3630,3671,5280,5739, 3398,1166,894,690,-178,-1275,-3679,-7404,-10163,-10926, -10533,-9984,-9820,-9541,-8348,-7104,-6202,-4968,-4453,-4353, -1758,3215,7711,10389,10229,6944,3603,3487,5752,7291, 6181,3175,1522,2526,4115,4327,3805,3898,5141,6525, 6685,6095,5903,5207,3508,2598,1645,-1943,-6829,-10353, -12323,-12791,-11883,-11415,-11972,-12241,-11804,-11153,-10369,-10200, -10540,-8868,-4347,1039,6079,8275,5625,2839,4506,7749, 9629,9978,7770,5441,6917,8903,7949,7123,7648,6953, 6482,7512,7223,5578,4391,3160,2347,1684,-1893,-7296, -10779,-12884,-14031,-13246,-13363,-15552,-16096,-14509,-13247,-12187, -11354,-12231,-12285,-7812,-128,6977,10624,9900,7894,8799, 11670,13262,12723,10792,9429,10193,10801,10029,9914,10337, 9714,9590,10794,10085,7173,5346,4420,3157,1625,-1894, -7960,-13101,-16148,-17820,-17422,-16857,-17775,-17573,-15843,-14527, -12743,-11421,-13559,-15305,-11482,-4503,2283,7742,9256,8371, 10659,14513,15251,14843,14658,13189,12095,12071,11360,10427, 9585,8329,8424,9840,9268,6967,5579,4660,3884,3812, 1717,-4044,-9901,-13776,-16994,-18656,-18535,-19147,-20155,-19380, -17036,-14650,-13924,-16071,-18742,-17475,-11655,-4493,1024,3750, 5684,9447,13436,15093,16323,17760,17068,16245,17462,17684, 16092,14832,13816,13433,14505,14416,12092,9896,8449,7755, 7925,5850,213,-5678,-10790,-16012,-18895,-19591,-22162,-24828, -23978,-21450,-18666,-16668,-18871,-23193,-22907,-17471,-11282,-6096, -1921,1532,5586,9901,13025,15245,16719,16880,17237,18786, 19158,17416,15986,15118,14427,15003,15425,13168,10567,10220, 10588,10361,9222,5600,-612,-6410,-10627,-13911,-16551,-19984, -24189,-25726,-23330,-19953,-18577,-20950,-25096,-25815,-22511,-18694, -14510,-9611,-5671,-1830,3332,7867,10395,12007,13272,14804, 17439,19577,19837,19274,18644,18648,19998,20413,18509,16930, 16448,15794,15849,15821,12594,6623,922,-3921,-7972,-11119, -15449,-21522,-24559,-22185,-18675,-18062,-20296,-23800,-25907,-24769, -22072,-18760,-14648,-11232,-7556,-1607,4037,6912,9025,11217, 12623,15056,18358,18868,17542,17436,17590,17624,18283,17456, 15036,13806,13649,13886,14584,13297,8630,3119,-1509,-5193, -8607,-14163,-21295,-24619,-22750,-20000,-18786,-19412,-22271,-25413, -25785,-23776,-20912,-17643,-14361,-10289,-4593,1217,5580,8442, 10288,12398,15720,18833,19844,19676,19753,19686,19750,20337, 19763,17481,16034,16026,16270,17601,17980,13799,8036,4832, 2216,-2158,-8482,-15979,-20986,-20917,-18882,-17714,-17617,-20305, -24646,-26195,-25270,-24516,-22365,-19046,-16379,-11857,-5175,-577, 1864,4687,7509,10390,14055,16725,17477,17880,18420,18963, 19721,19621,17830,15370,13872,14369,16401,16874,13347,8692, 6418,4897,1066,-5142,-12427,-18585,-21010,-19466,-17304,-17234, -19251,-22768,-25705,-26329,-25437,-24139,-22203,-19337,-14605,-8168, -2723,702,3899,6921,9927,14185,17718,18646,19175,19882, 19819,20638,21644,19453,15373,13491,14281,16095,16581,13535, 9794,8544,7588,4758,-47,-7417,-14960,-18114,-17459,-16057, -14725,-15220,-18503,-21549,-22595,-23199,-23632,-22680,-20267,-16859, -11798,-6398,-2630,122,3227,6495,9762,13065,15294,15928, 16015,16581,18167,19634,17883,13526,11799,13493,14834,14960, 13940,11105,9329,9828,8735,4325,-1934,-9071,-14291,-15093, -13629,-12374,-12378,-14775,-17664,-19093,-20547,-22410,-22827,-21928, -19899,-15542,-10336,-6803,-3593,-157,2380,5575,9917,12886, 13817,14283,15776,18483,19944,18046,14883,13757,14608,16068, 17137,16386,14210,13310,14010,13463,10356,5185,-2027,-8693, -11040,-10461,-10391,-10880,-12224,-15260,-17851,-19407,-22047,-24607, -24851,-23879,-21613,-17216,-12981,-9576,-5891,-3259,-396,4825, 8536,8732,10145,13791,16561,18368,18037,14577,12426,13685, 15249,15898,15841,14506,13552,14421,14967,13367,9104,2100, -4784,-8388,-9766,-10586,-10875,-12077,-14605,-16484,-18240,-21391, -24540,-25861,-25774,-24477,-21197,-16782,-13195,-10666,-7534,-2943, 1942,5060,5909,7304,10997,14945,17744,18483,16077,13943, 14977,16480,16912,17291,16365,14537,15339,17420,16821,13724, 8220,674,-4636,-6593,-8188,-9421,-10002,-11769,-13458,-14559, -17680,-21368,-23155,-24852,-25319,-21741,-17419,-15425,-13156,-9235, -4433,972,4996,6187,7113,10312,14566,17884,19060,17677, 15820,15686,16732,17469,16998,15215,13571,14055,16124,17041, 15086,10338,3580,-2580,-5944,-7936,-10046,-11173,-11809,-13452, -15012,-16456,-19412,-23038,-25720,-26269,-23678,-20198,-18482,-16784, -12997,-8010,-2239,2891,4726,5786,9523,13845,16924,19406, 19294,16870,16538,17852,18280,18122,16755,14425,14429,16882, 18648,18383,14972,8488,2375,-1859,-5688,-8494,-9495,-10708, -12780,-13730,-14363,-17558,-22303,-25621,-26772,-25622,-22949,-21327, -20713,-18077,-12743,-7065,-2351,939,2657,5366,9933,13859, 16277,17229,15896,15124,16998,18257,17622,16570,14405,12912, 15471,18770,19081,17436,13475,7068,1357,-2579,-5876,-8262, -10303,-12353,-12809,-12809,-15741,-20446,-24397,-26879,-26454,-24219, -23607,-23462,-20709,-16353,-11351,-6004,-2510,-677,2125,6564, 11259,14750,15932,15512,15475,17015,19198,20007,18529,15792, 14334,15872,18627,20092,20194,17855,12000,6113,2541,-898, -4992,-7803,-9638,-10589,-10122,-11479,-16717,-21737,-24514,-25923, -25686,-25336,-26102,-24907,-20817,-16323,-11317,-7023,-5569,-3297, 1960,7057,10777,13445,13559,13043,15342,18732,19932,18979, 16816,15229,16095,18518,21114,22737,21199,16757,12361,8653, 4377,-138,-4274,-6839,-6926,-6329,-7997,-12448,-17691,-21421, -23372,-24391,-25124,-26175,-26317,-23558,-18785,-14303,-11190,-9080, -6715,-2344,3197,7803,10549,11267,11548,14193,17955,19340, 19049,18029,15688,14990,17837,21063,22861,23210,20606,16631, 13677,9422,3075,-2068,-5106,-6066,-5266,-6043,-10003,-14623, -18895,-22547,-24199,-25257,-27423,-28448,-26443,-22839,-18836,-15011, -12517,-10304,-6013,104,5471,8326,9387,10653,12908,15823, 18463,19354,18004,15636,14372,15928,19371,22016,22824,22077, 20036,17714,14261,8014,1414,-2219,-3585,-3827,-3902,-6312, -11059,-15448,-19025,-22083,-24548,-27466,-29855,-29342,-26703,-23403, -19672,-17430,-16194,-11820,-5280,-256,3521,6298,7451,9293, 12863,16053,18026,17935,15233,13282,14697,17807,20676,22426, 22550,22174,21721,19147,13351,6814,1694,-1074,-1439,-1456, -3613,-7704,-11767,-15086,-18467,-21803,-24952,-28401,-30083,-28180, -24804,-22528,-20874,-18981,-15852,-10347,-4656,-653,2335,4092, 5386,8744,12988,15269,15641,13907,11246,11543,14565,16855, 18540,20500,21609,22015,21260,17205,10789,5437,2243,1477, 1623,-184,-3559,-6798,-10342,-13678,-16255,-20349,-25272,-27359, -26515,-24834,-23059,-21648,-20359,-17707,-13243,-7864,-2965,385, 2199,3967,7154,11533,15203,16278,14789,12876,12671,14234, 15954,17348,19211,21200,22747,23501,21227,15270,9432,6067, 3946,2985,2247,-717,-4443,-6595,-8791,-11980,-16113,-21411, -25023,-25268,-24507,-23656,-22026,-20833,-19394,-15457,-10358,-5914, -2098,-94,763,3921,8993,12731,14457,14244,12747,12106, 12838,13691,14613,15825,17751,20730,22789,21415,17398,12439, 7752,5113,4302,2920,-56,-3181,-4999,-6462,-9271,-13608, -18558,-22865,-24849,-24917,-24635,-24191,-23264,-22027,-19212,-14196, -8928,-4978,-2722,-1471,1259,6326,10731,12983,14037,13260, 11839,12415,13097,12360,13330,16231,19023,21795,22946,20180, 15517,11435,8392,6857,5257,1893,-1012,-2205,-3617,-6063, -9502,-14565,-19579,-22382,-23657,-24375,-24366,-24547,-24890,-23229, -18782,-13502,-9429,-7090,-5223,-2390,1815,6735,10447,11898, 12260,12409,12421,12125,11386,11289,13171,16348,19759,22217, 21216,16956,12956,10183,7603,5409,2892,-163,-1681,-2241, -4131,-7192,-11122,-16112,-20014,-21750,-22630,-22893,-23364,-24784, -24081,-19936,-15456,-11542,-8004,-6114,-4056,549,5535,8887, 11296,12777,13187,13488,13262,11914,10803,11204,13680,17923, 21270,21408,19138,16292,13461,10915,8446,5458,2505,710, -222,-1689,-4168,-7521,-12133,-17006,-19465,-19849,-20829,-22434, -23751,-24183,-22164,-17938,-14008,-11227,-9102,-6883,-2910,2222, 6046,8837,11422,12648,13345,14257,13249,10707,10130,12045, 15454,19342,20873,19392,17480,15461,12802,10413,7601,4444, 2694,1612,264,-1031,-3969,-9394,-14169,-16553,-17986,-19190, -20698,-23155,-24671,-23277,-19926,-16681,-14239,-12149,-9625,-5977, -1531,2532,5638,8020,10207,12315,13651,12987,10583,9063, 10409,13520,17032,19430,19334,18268,17461,15209,11940,9599, 6859,3785,2790,2606,999,-1793,-6118,-11327,-14561,-16023, -17703,-19789,-22506,-24921,-24409,-21635,-19315,-17234,-14782,-12748, -9828,-5017,-733,2022,4590,7135,9948,12448,12601,10478, 8561,8653,11258,14779,17176,18336,18854,18397,17039,15258, 12809,9575,6614,5212,4896,3959,1531,-2465,-7397,-11169, -12786,-14457,-17638,-21233,-23822,-24555,-22929,-20513,-18837,-17048, -14926,-12309,-8072,-3736,-1229,1324,4818,8114,11360,12910, 10989,8732,9016,10325,12492,15806,17885,18457,19154,19170, 17730,15463,12207,8701,7022,6790,6182,4481,739,-4268, -7675,-9386,-11535,-14711,-18437,-22105,-24120,-23718,-22126,-20764, -19571,-17640,-14698,-10940,-7060,-4281,-2279,1033,5844,9963, 11934,11617,9954,8959,9462,11012,13620,16046,17208,18422, 19746,19250,17113,14273,10478,7657,7519,7553,5755,2609, -1639,-5322,-7045,-8871,-12038,-15658,-19706,-22997,-23530,-22766, -22405,-21356,-19555,-17121,-13117,-9104,-7146,-5347,-1606,2916, 7191,10508,11673,10957,10053,9941,10888,12727,14749,16707, 18747,20420,21018,19814,16771,12812,9821,9052,9040,7355, 4162,416,-3317,-5755,-7157,-9838,-13925,-18005,-21767,-24006, -23928,-23713,-23977,-22791,-19934,-16391,-12709,-10167,-8470,-5294, -817,3444,7696,10266,10040,9540,9806,9841,10745,12689, 14220,16161,19087,20935,20611,18191,14079,10775,9777,9373, 8154,5700,1918,-1615,-3582,-4964,-7125,-10257,-14176,-18179, -20687,-21780,-23113,-24487,-24081,-21529,-18221,-15134,-12545,-10654, -8455,-4480,547,4822,7923,9250,9306,9582,9935,10161, 11253,12601,14280,17818,21238,21762,20205,17437,13888,12048, 12041,10990,8608,5676,2106,-618,-1669,-3357,-6768,-10681, -14636,-17820,-19820,-22408,-25043,-25319,-23929,-21696,-18464,-15718, -14236,-12085,-8333,-3883,944,5079,7340,8191,8753,9408, 10068,10572,11328,13134,16524,20402,22688,22502,20229,17334, 15441,14887,14244,12324,9247,5503,2600,1632,489,-2966, -7097,-10447,-13833,-17022,-19783,-22961,-25167,-24877,-23399,-21232, -18729,-17217,-15621,-12201,-8025,-3308,2063,5515,6734,8161, 9366,9385,9486,9882,10612,13412,17685,20588,21468,20520, 18052,16131,15744,15491,14046,10984,6971,4239,3232,1737, -1111,-4468,-7988,-11449,-14497,-17608,-21223,-24292,-25241,-24428, -23133,-21462,-19923,-18849,-16781,-12776,-7785,-2691,1592,4265, 6230,8244,9241,9132,9082,9431,11297,15269,18939,20701, 20902,19166,16905,16932,17564,15895,12836,9555,6373,4631, 3367,593,-2728,-5836,-9207,-12239,-15283,-19440,-23183,-24877, -25284,-24519,-22691,-21639,-21322,-19593,-16181,-11717,-6450,-1772, 1493,4547,7606,9510,9844,9512,9590,10921,14077,18280, 21311,21804,20546,19174,18947,19326,18174,15370,12488,9734, 7484,6146,3783,9,-3092,-5611,-8906,-12332,-16390,-21370, -24867,-25922,-25894,-25149,-24217,-24235,-23500,-20529,-16458,-11753, -6669,-2593,1286,5656,8376,9219,9528,9068,9068,11989, 16554,19830,21156,20792,19894,19867,20096,19077,16883,14166, 11448,9498,7936,5369,2123,-645,-3152,-5813,-8906,-12843, -17623,-21777,-23885,-24402,-24212,-23720,-23762,-23885,-22098,-18617, -14973,-10728,-5935,-1714,2548,6731,8947,9228,8514,7908, 9857,14302,17822,19422,20308,20284,20215,21220,21151,19015, 16880,14966,12712,11025,9058,5782,2729,483,-2049,-4816, -8379,-13375,-18192,-21219,-22697,-22998,-23084,-24007,-24520,-23419, -21311,-18458,-14593,-10473,-6634,-2248,2685,6249,7073,6248, 5769,7226,10680,14541,16981,18016,18723,19585,20540,20747, 19432,17607,16182,14533,12764,11007,8166,4929,2820,779, -2061,-5209,-9825,-15553,-19368,-21096,-22465,-23254,-23823,-24740, -24590,-23071,-20982,-17895,-14305,-11050,-6533,-639,3610,5315, 5467,4791,5418,8719,12486,14920,16668,18055,19164,20503, 21184,20375,18956,17640,16394,15023,13191,10682,7860,5427, 3613,1777,-1120,-5657,-11134,-15650,-18510,-20592,-22032,-22836, -24073,-25111,-24323,-22408,-20563,-18269,-15041,-10713,-4854,693, 3472,3934,3631,3883,6263,9864,12384,14347,16489,17993, 19528,21079,20773,19519,18833,17701,16141,14932,12779,9603, 7429,6218,4582,2190,-1631,-6718,-11434,-15227,-18087,-19696, -21051,-23058,-24433,-24240,-23330,-22278,-20879,-18740,-14934,-9062, -2940,947,2212,2305,2572,3966,6778,9632,11595,13609, 15945,17904,19459,20162,19526,18571,17970,17115,15924,14077, 11118,8735,7988,6862,4654,1991,-2344,-7687,-11746,-14733, -17398,-19541,-21777,-23776,-24009,-23259,-23011,-22643,-21548,-18725, -13097,-6565,-1883,746,1814,2012,3151,5511,7679,9683, 12158,14463,16629,18851,20122,19987,19376,19030,18694,17681, 15615,12979,10680,9226,8209,6957,4659,690,-4314,-8653, -11862,-14778,-17651,-20430,-22998,-24063,-23595,-23677,-24512,-24292, -22248,-17928,-11565,-5757,-2319,-259,1071,2067,3840,5953, 7657,9835,12355,14601,17216,19297,19518,19446,20118,20058, 19092,17733,15304,12550,10886,9901,8960,7478,4062,-635, -4905,-8467,-11635,-14711,-18148,-21188,-22459,-22536,-22976,-23994, -24909,-24362,-21036,-15440,-9648,-5129,-2000,98,1484,2921, 4769,6509,8163,10532,13412,15960,17771,18627,18949,19621, 20184,19821,18923,17029,14114,12050,11213,10414,9330,7060, 2661,-1761,-4964,-8404,-12286,-15860,-19087,-21095,-21376,-21818, -23477,-25138,-25687,-23942,-19397,-13918,-9088,-4915,-1989,-271, 1625,3554,4734,6242,8792,11605,14211,16271,17540,18329, 19182,20095,20594,20179,18435,15733,13332,12146,11777,11038, 8896,5324,1283,-2184,-5547,-9662,-13934,-17592,-20070,-20878, -21288,-23096,-25503,-26784,-26394,-23631,-18683,-13613,-9443,-5778, -2878,-569,1465,2668,3816,6208,9024,11520,14098,16019, 16868,18019,19544,20418,20763,19846,17208,14759,13770,13330, 12672,11255,8435,5095,2067,-1347,-5617,-10348,-14690,-17505, -18658,-19586,-21451,-23896,-26173,-27294,-25941,-22158,-17590,-13358, -9277,-5421,-2541,-577,870,2143,4017,6803,9575,11979, 14143,15586,16666,18472,20335,21238,20880,18883,16342,15160, 14855,14156,12986,10907,7982,5608,3065,-1316,-6457,-10902, -14342,-16236,-17131,-18853,-21671,-24605,-26896,-27117,-24771,-21399, -17630,-13131,-8914,-5621,-2945,-1162,-45,1752,4331,6985, 9715,12019,13408,14692,16857,19407,21225,21512,20027,17791, 16279,15794,15418,14323,12510,10545,8879,6941,3249,-1882, -6814,-10909,-13612,-14748,-16083,-19044,-22530,-25329,-26983,-26462, -24079,-21039,-17096,-12507,-8682,-5624,-3095,-1595,-274,2066, 4773,7482,10081,11558,12618,14944,17925,20292,21623,20989, 18790,17431,17139,16508,15323,13845,12263,11129,9845,7025, 2500,-2820,-7671,-10798,-12242,-13837,-16646,-20165,-23531,-26117, -27084,-26153,-23974,-20765,-16692,-12591,-9036,-5992,-3859,-2512, -624,2254,5183,7707,9525,10617,12450,15627,18758,20651, 20844,19494,18275,18019,17294,15787,14485,13151,11873,11276, 9731,5856,880,-4046,-7965,-10061,-11557,-14153,-17376,-20655, -23971,-26265,-26875,-26180,-24047,-20603,-16803,-12827,-9055,-6556, -5016,-3035,-394,2518,5470,7436,8420,10021,13127,16690, 19216,20196,19995,19413,18975,18385,17179,15674,14329,13448, 13242,12594,9738,5095,265,-4033,-6983,-8782,-11054,-14242, -17518,-21054,-24453,-26269,-26653,-26124,-23886,-20293,-16535,-12740, -9575,-7808,-6078,-3273,-161,2932,5321,6342,7922,11236, 14770,17563,19653,20409,20264,20371,20181,18969,17474,16051, 15183,15332,15226,13121,9082,4375,-185,-3698,-6033,-8251, -10984,-14248,-18044,-21730,-24439,-26102,-26818,-25897,-23214,-19804, -16081,-12570,-10361,-8750,-5942,-2323,747,2992,4443,5799, 8517,12147,15178,17543,19065,19446,19903,20484,19599,17820, 16549,15753,15875,16465,15323,12014,7963,3540,-675,-3471, -5663,-8463,-11502,-14889,-18756,-22177,-24852,-26904,-27379,-25780, -22843,-19193,-15781,-13682,-11868,-8890,-5238,-1984,518,2203, 3653,6009,9431,12735,15349,17351,18705,19827,20816,20621, 18974,17334,16665,16852,17505,17297,15205,11801,7785,3567, 240,-2183,-5019,-8182,-11214,-14905,-18865,-22072,-25017,-27252, -27059,-24717,-21696,-18640,-16435,-14777,-11906,-8163,-4928,-2161, -108,1117,3214,6564,9747,12448,14920,16739,18504,20350, 20675,19309,17825,16945,16922,17822,18445,17487,14890,11288, 7303,3714,834,-1933,-4955,-8047,-11430,-15166,-18934,-22829, -26337,-27616,-26306,-23966,-21559,-19403,-17596,-15153,-11509,-7887, -5163,-3038,-1459,253,3301,6652,9207,11707,14341,16830, 19195,20424,19618,18197,17286,16897,17622,18911,18688,17060, 14758,11256,7437,4377,1465,-1834,-4970,-8136,-11708,-15672, -20355,-24992,-27579,-27739,-26546,-24614,-22617,-20922,-18517,-14937, -11144,-8016,-5601,-3824,-1945,880,4071,6699,9296,12388, 15574,18522,20645,21021,19934,18788,18351,18787,19967,20646, 19829,17939,14990,11284,8099,5173,1633,-1677,-4311,-7443, -11413,-16080,-21321,-25353,-26772,-26575,-25618,-24151,-22796,-20901, -17555,-13686,-10522,-8053,-6064,-4110,-1350,1589,3902,6387, 9413,12643,16180,19232,20377,19828,18886,18174,18243,19356, 20489,20528,19315,17077,14247,11342,8193,4612,1371,-1185, -3848,-7366,-11934,-17375,-22338,-25222,-26129,-26082,-25424,-24523, -23192,-20378,-16509,-13376,-10982,-8642,-6449,-4012,-1111,1241, 3283,6043,9332,13007,16791,19053,19252,18779,18172,17758, 18671,20212,20562,19928,18714,16584,13961,11072,7518,4185, 1899,-369,-3492,-7632,-13007,-18539,-22507,-24610,-25543,-25816, -25774,-25011,-22689,-19400,-16408,-13864,-11432,-9137,-6613,-3770, -1332,467,2734,6056,9877,13727,16872,18379,18386,17847, 17489,18066,19410,20243,20222,19827,18647,16451,13719,10354, 6891,4540,2734,87,-3538,-8406,-14191,-18849,-21716,-23837, -25321,-25889,-25710,-24272,-21498,-18689,-16208,-13603,-11121,-8582, -5643,-3215,-1532,523,3350,6654,10621,14576,16961,17666, 17535,17175,17408,18424,19379,19784,19931,19628,18316,16060, 13067,9792,7231,5613,3827,779,-3810,-9325,-14403,-18093, -20982,-23461,-24976,-25549,-25211,-23449,-20914,-18749,-16463,-13722, -11019,-8333,-5796,-3918,-2232,-22,2828,6648,11009,14231, 15755,16396,16436,16616,17594,18495,18955,19626,20003,19340, 17883,15416,12073,9414,8044,6662,4260,412,-4704,-9756, -13891,-17496,-20718,-23141,-24766,-25320,-24356,-22578,-20858,-18763, -16131,-13458,-10726,-7983,-5855,-4338,-2578,-118,3296,7685, 11528,13708,14852,15592,15926,16493,17457,18112,18745,19638, 19865,18983,17093,14162,11465,10181,9147,7013,3904,-278, -5266,-9670,-13456,-17321,-20704,-23060,-24435,-24506,-23571,-22381, -20698,-18363,-15874,-13065,-10048,-7663,-6135,-4759,-2889,77, 4278,8446,11318,13212,14425,15056,15754,16666,17299,17979, 19173,20171,20040,18496,15885,13365,11870,10897,9406,6917, 3296,-1214,-5641,-9626,-13851,-17847,-20765,-22854,-23970,-23775, -23087,-22194,-20450,-18107,-15520,-12323,-9393,-7774,-6645,-4874, -2330,1289,5561,9081,11529,13399,14474,15213,16100,16599, 17124,18641,20238,20615,19789,17842,15292,13522,12615,11407, 9315,6231,2352,-1797,-6026,-10486,-14897,-18587,-21419,-23297, -24055,-23972,-23511,-22536,-20768,-18243,-15042,-11946,-9951,-8689, -7213,-5115,-2067,1914,5688,8618,11037,13030,14359,15153, 15583,16130,17601,19504,20559,20461,19167,16938,15185,14411, 13338,11528,9273,6073,2127,-1834,-6332,-11180,-15347,-18793, -21636,-23117,-23603,-24024,-23999,-22903,-20792,-17732,-14418,-12089, -10678,-9313,-7627,-4964,-1141,2612,5644,8638,11416,13217, 14253,14864,15294,16408,18436,20140,20592,19752,18060,16422, 15531,14774,13386,11550,9126,5863,2194,-1830,-6536,-11201, -15294,-18743,-21040,-22243,-23271,-24115,-23784,-22297,-19881,-16674, -13944,-12428,-11223,-9598,-7258,-4011,-561,2591,5915,9230, 11614,13142,13937,14173,15097,17239,19247,20228,20205,19115, 17683,16806,15960,14676,13263,11416,8674,5551,2072,-2244, -7099,-11732,-15729,-18680,-20627,-22309,-23767,-24352,-23849,-22168, -19212,-16270,-14586,-13301,-11581,-9514,-6884,-3625,-374,2866, 6488,9721,11779,12914,13412,14100,15936,18179,19587,20067, 19752,18725,17690,16881,15817,14625,13207,10991,8334,5536, 1743,-3026,-7859,-12256,-15888,-18451,-20537,-22661,-24278,-24707, -23614,-21110,-18391,-16481,-15017,-13498,-11773,-9416,-6478,-3472, -162,3727,7362,9936,11453,12153,12823,14469,16718,18437, 19476,19823,19253,18341,17630,16792,15710,14502,12839,10828, 8550,5291,941,-3663,-8235,-12414,-15367,-17692,-20506,-23092, -24267,-24016,-22347,-19807,-17728,-16292,-14760,-13125,-11329,-9007, -6410,-3474,403,4557,7668,9617,10681,11346,12683,14735, 16657,18132,19136,19103,18475,18111,17563,16559,15524,14402, 12877,11057,8553,4872,303,-4432,-8732,-12112,-14968,-18155, -21287,-23382,-24115,-23370,-21455,-19509,-17972,-16320,-14611,-13012, -11277,-9296,-6777,-3104,1183,4707,7169,8838,9858,11016, 12896,14915,16679,18032,18533,18391,18380,18042,17090,16323, 15554,14345,13167,11645,8590,4300,-141,-4412,-8155,-11304, -14693,-18345,-21166,-22818,-23183,-22127,-20588,-19226,-17552,-15652, -14172,-12882,-11371,-9439,-6314,-2172,1571,4472,6731,8178, 9278,11028,13184,15014,16545,17662,18097,18187,18115,17631, 16862,16018,15116,14412,13514,11345,7761,3683,-377,-4093, -7364,-10949,-15026,-18601,-21086,-22419,-22397,-21533,-20503,-18972, -16944,-15320,-14251,-13113,-11573,-9089,-5441,-1603,1692,4370, 6094,7315,9089,11117,12867,14701,16307,17043,17484,17946, 17771,17048,16327,15671,15258,14930,13490,10576,7011,3272, -377,-3588,-7063,-11375,-15527,-18709,-20882,-21922,-21923,-21461, -20307,-18341,-16641,-15616,-14572,-13283,-11490,-8437,-4523,-984, 1855,4112,5746,7341,9317,11274,13160,14878,16003,16848, 17768,18056,17414,16634,16121,15889,15911,15204,12932,9793, 6492,3152,18,-3220,-7392,-11904,-15601,-18510,-20594,-21655, -21812,-21103,-19496,-17836,-16661,-15705,-14935,-13791,-11275,-7731, -4252,-1034,1740,3636,5239,7239,9295,11160,12928,14380, 15654,16986,17713,17387,16728,16297,16172,16492,16475,14948, 12342,9519,6493,3543,523,-3344,-7773,-11768,-15288,-18413, -20416,-21282,-21359,-20346,-18632,-17405,-16703,-16084,-15293,-13567, -10651,-7354,-4022,-896,1364,3093,5140,7264,9078,10918, 12684,14225,15896,17215,17348,16824,16429,16336,16750,17232, 16511,14508,12094,9530,6782,3805,254,-3763,-7710,-11657, -15388,-18228,-20124,-21162,-20772,-19344,-18150,-17414,-16822,-16428, -15516,-13286,-10210,-6893,-3623,-990,967,3097,5284,7022, 8768,10661,12439,14380,16154,16737,16413,16142,16064,16446, 17207,16987,15487,13770,11803,9211,6505,3500,-261,-4136, -7877,-11846,-15519,-18294,-20143,-20611,-19727,-18641,-17877,-17243, -16971,-16629,-15079,-12435,-9417,-6246,-3336,-1036,1185,3491, 5317,6870,8672,10545,12563,14589,15707,15704,15447,15540, 16081,16831,16928,16129,15003,13493,11386,9070,6453,3036, -626,-4111,-8016,-12207,-15738,-18364,-19800,-19759,-19006,-18289, -17691,-17510,-17565,-16683,-14607,-12059,-9154,-6186,-3640,-1160, 1401,3426,5001,6760,8668,10839,13321,14902,15099,15105, 15402,15757,16383,16977,16720,15934,15019,13557,11589,9284, 6319,2896,-434,-4278,-8745,-12951,-16468,-18994,-19879,-19517, -18920,-18420,-18152,-18309,-18050,-16594,-14406,-11897,-8950,-6086, -3457,-702,1730,3412,4964,6975,9470,12157,14163,14971, 15268,15634,16013,16634,17290,17337,16856,16350,15474,13905, 11970,9534,6456,3191,-463,-4805,-9228,-13436,-17007,-19024, -19440,-19171,-18807,-18603,-18840,-18913,-18068,-16526,-14395,-11655, -8850,-6106,-3024,-336,1311,2753,4759,7171,9945,12466, 13858,14446,14987,15513,16107,16829,17091,16869,16725,16350, 15236,13748,11921,9413,6547,3372,-602,-5074,-9469,-13781, -17017,-18374,-18667,-18681,-18584,-18767,-19196,-18941,-17887,-16406, -14331,-11741,-8833,-5612,-2662,-768,658,2524,4850,7592, 10494,12478,13415,14186,14923,15545,16253,16778,16906,17001, 16912,16172,15083,13718,11718,9342,6681,3261,-894,-5466, -10210,-14283,-16688,-17767,-18242,-18304,-18571,-19219,-19321,-18657, -17860,-16630,-14388,-11540,-8345,-5185,-2891,-1346,387,2601, 5247,8228,10649,12003,13093,14117,14772,15505,16296,16595, 16702,16906,16617,15889,15044,13555,11512,9415,6732,2937, -1540,-6323,-10956,-14397,-16260,-17245,-17829,-18284,-18855,-19093, -18841,-18563,-18004,-16463,-13953,-10886,-7589,-4956,-3278,-1674, 446,3026,5918,8592,10492,11891,13084,13915,14603,15383, 15935,16270,16616,16723,16481,15974,14860,13299,11757,9692, 6573,2643,-1989,-7012,-11160,-13772,-15481,-16680,-17442,-18092, -18530,-18553,-18633,-18664,-17875,-16063,-13320,-10010,-7164,-5357, -3746,-1743,575,3359,6320,8633,10372,11918,12931,13598, 14480,15181,15494,16025,16591,16649,16395,15787,14652,13386, 11989,9739,6387,2040,-3027,-7672,-10971,-13364,-15249,-16450, -17315,-18013,-18323,-18591,-19123,-19104,-17914,-15715,-12705,-9736, -7594,-5906,-3948,-1653,979,3940,6655,8804,10563,11884, 12840,13767,14507,14921,15571,16293,16547,16546,16279,15383, 14371,13574,12179,9557,5759,987,-3826,-7733,-10837,-13428, -15269,-16511,-17413,-17811,-18197,-19052,-19659,-19116,-17565,-15120, -12200,-9913,-8154,-6146,-3996,-1630,1296,4281,6645,8697, 10537,11795,12739,13599,14177,14796,15659,16280,16548,16480, 15831,15021,14669,13999,12129,9105,5026,346,-3901,-7500, -10747,-13356,-15107,-16200,-16838,-17350,-18293,-19289,-19432,-18473, -16645,-14203,-11842,-9942,-8099,-6140,-3973,-1256,1646,4191, 6546,8703,10247,11419,12471,13148,13751,14703,15639,16191, 16294,15861,15330,15289,15166,14070,11891,8564,4291,48, -3800,-7573,-10831,-13108,-14644,-15505,-16110,-17222,-18605,-19267, -18977,-17924,-16009,-13751,-11903,-10198,-8231,-6124,-3679,-802, 1900,4379,6795,8696,10174,11462,12248,12792,13786,14976, 15711,16008,15868,15420,15364,15767,15479,14039,11589,8056, 4026,108,-3875,-7777,-10781,-12729,-13972,-14866,-16041,-17544, -18692,-19098,-18660,-17235,-15294,-13643,-12087,-10221,-8278,-6080, -3398,-667,1874,4435,6781,8677,10149,10999,11593,12634, 13939,14933,15455,15455,15122,15171,15747,16009,15369,13747, 10999,7584,3956,-190,-4549,-8090,-10535,-12258,-13470,-14685, -16381,-18048,-19007,-19129,-18293,-16809,-15308,-13902,-12233,-10444, -8461,-5936,-3366,-961,1732,4500,6722,8467,9682,10393, 11358,12843,14083,14771,14999,14827,14783,15385,16052,15978, 15074,13362,10835,7652,3717,-754,-4813,-7933,-10212,-11730, -13012,-14811,-16807,-18194,-18901,-18801,-17787,-16480,-15221,-13842, -12192,-10269,-8008,-5651,-3381,-761,2145,4763,6884,8391, 9316,10354,11872,13287,14205,14673,14651,14649,15269,16003, 16174,15900,15115,13453,10938,7558,3247,-1197,-4834,-7593, -9536,-11028,-12948,-15147,-16904,-18157,-18716,-18238,-17280,-16426, -15269,-13709,-12033,-10001,-7780,-5673,-3241,-247,2626,4998, 6857,8086,9083,10584,12223,13298,13835,14064,14217,14750, 15472,15850,16003,15942,15141,13418,10735,6843,2281,-1725, -4805,-7167,-8998,-10861,-13155,-15364,-17069,-18147,-18309,-17833, -17252,-16445,-15153,-13643,-11899,-9907,-7960,-5699,-2802,188, 2780,4949,6486,7658,9210,11032,12247,12945,13417,13692, 14134,14792,15261,15621,16005,15972,15203,13425,10158,5843, 1671,-1879,-4748,-6809,-8648,-10969,-13465,-15583,-17191,-17978, -17938,-17698,-17268,-16222,-14831,-13421,-11773,-9995,-8084,-5495, -2416,427,2753,4569,6034,7733,9672,11107,12002,12749, 13198,13565,14236,14777,15025,15532,16161,16184,15233,12950, 9278,5122,1300,-1928,-4341,-6277,-8581,-11208,-13666,-15712, -17040,-17580,-17755,-17661,-16935,-15797,-14578,-13166,-11693,-10107, -7767,-4706,-1787,623,2631,4329,6085,8059,9749,10948, 11859,12505,13010,13619,14059,14263,14825,15737,16345,16288, 15016,12090,8225,4413,935,-1833,-3893,-6148,-8917,-11529, -13791,-15680,-16794,-17342,-17649,-17399,-16520,-15481,-14396,-13241, -11990,-9944,-6994,-4077,-1564,742,2656,4395,6438,8360, 9671,10750,11708,12408,12995,13448,13649,14046,14980,15971, 16564,16340,14494,11270,7603,4051,1044,-1302,-3634,-6357, -9043,-11522,-13790,-15420,-16482,-17284,-17467,-16834,-15953,-15218, -14480,-13538,-11964,-9443,-6586,-3952,-1516,601,2546,4693, 6733,8223,9514,10770,11686,12382,12922,13085,13307,14127, 15245,16307,16979,16320,13874,10617,7215,3942,1261,-1129, -3822,-6606,-9230,-11689,-13738,-15333,-16701,-17408,-17080,-16456, -16010,-15461,-14790,-13748,-11718,-8975,-6388,-3984,-1645,474, 2605,4750,6511,7987,9506,10808,11729,12397,12675,12714, 13199,14251,15568,16805,17113,15783,13210,10166,6949,4049, 1589,-1110,-4076,-6768,-9268,-11653,-13764,-15573,-16754,-16972, -16625,-16379,-16172,-15815,-15111,-13512,-11146,-8701,-6301,-3835, -1567,614,2838,4705,6286,8012,9607,10811,11799,12276, 12203,12368,13219,14562,16154,17242,16949,15304,12766,9782, 6934,4394,1627,-1343,-3972,-6471,-9137,-11600,-13762,-15523, -16291,-16254,-16227,-16368,-16360,-16058,-15005,-13050,-10836,-8588, -6117,-3715,-1507,737,2796,4543,6347,8189,9739,11034, 11808,11724,11594,12156,13280,14890,16628,17336,16509,14723, 12351,9643,6967,4193,1287,-1381,-3888,-6578,-9300,-11841, -14042,-15336,-15710,-15951,-16326,-16599,-16669,-16120,-14641,-12740, -10750,-8459,-6041,-3815,-1562,666,2598,4481,6546,8524, 10215,11326,11561,11373,11525,12283,13833,15867,17202,17191, 16234,14593,12238,9607,6891,3926,1138,-1331,-3988,-6935, -9806,-12413,-14307,-15181,-15683,-16319,-16811,-17094,-17006,-16098, -14577,-12821,-10730,-8412,-6148,-3796,-1440,530,2411,4621, 6848,8799,10419,11173,11030,10863,11326,12623,14584,16353, 17165,17027,16099,14372,12077,9402,6496,3771,1390,-1140, -4032,-7107,-10109,-12545,-13983,-14866,-15743,-16494,-17011,-17306, -16989,-15884,-14422,-12636,-10508,-8222,-5862,-3573,-1567,308, 2475,4809,7133,9310,10608,10665,10380,10565,11448,13133, 15123,16463,17014,16970,16022,14188,11819,9023,6265,3946, 1596,-1238,-4339,-7481,-10303,-12270,-13555,-14727,-15698,-16484, -17189,-17325,-16662,-15630,-14316,-12420,-10251,-8033,-5705,-3548, -1674,294,2631,5209,7771,9619,10197,9978,9942,10488, 11802,13654,15261,16330,16964,16825,15671,13793,11338,8652, 6380,4228,1524,-1547,-4665,-7739,-10274,-11987,-13317,-14558, -15593,-16464,-16994,-16903,-16385,-15483,-13959,-12094,-10131,-7846, -5575,-3808,-1980,322,2959,5776,8176,9302,9366,9276, 9588,10533,12149,13867,15295,16458,17034,16607,15269,13269, 10909,8726,6707,4247,1366,-1689,-4947,-7898,-10003,-11670, -13250,-14534,-15582,-16515,-16946,-16822,-16355,-15366,-13805,-11939, -9782,-7547,-5748,-4159,-2075,542,3538,6375,8127,8657, 8734,8886,9475,10773,12405,13924,15483,16757,17002,16208, 14761,12848,10850,8975,6869,4243,1205,-2095,-5226,-7752, -9865,-11749,-13218,-14506,-15749,-16582,-16878,-16941,-16542,-15406, -13768,-11746,-9532,-7715,-6252,-4422,-1926,1079,4189,6549, 7665,8025,8260,8619,9496,10845,12387,14184,15918,16819, 16692,15848,14361,12594,11047,9303,6904,4070,967,-2302, -5219,-7622,-9765,-11596,-13104,-14571,-15729,-16405,-16892,-17087, -16558,-15287,-13434,-11271,-9488,-8215,-6656,-4407,-1506,1796, 4662,6371,7211,7724,8080,8523,9500,10965,12778,14719, 16195,16789,16513,15488,14109,12858,11481,9421,6867,3980, 728,-2389,-5030,-7446,-9633,-11449,-13044,-14430,-15415,-16264, -17068,-17223,-16458,-14922,-12909,-11058,-9802,-8641,-6765,-4101, -875,2261,4520,5993,7010,7491,7779,8439,9573,11141, 13223,15196,16316,16562,16158,15245,14238,13180,11603,9413, 6776,3686,490,-2366,-5013,-7517,-9653,-11505,-13036,-14169, -15293,-16576,-17381,-17266,-16242,-14447,-12581,-11362,-10420,-8916, -6562,-3640,-465,2325,4368,5829,6696,7117,7586,8288, 9506,11536,13760,15333,16163,16341,15880,15165,14443,13324, 11586,9317,6484,3314,398,-2332,-5142,-7664,-9705,-11428, -12794,-14107,-15709,-17098,-17609,-17099,-15659,-13935,-12784,-12000, -10772,-8890,-6322,-3184,-111,2327,4289,5742,6451,6784, 7266,8144,9792,12039,13977,15258,15956,16009,15666,15285, 14645,13401,11593,9096,6122,3225,413,-2571,-5395,-7700, -9628,-11181,-12560,-14390,-16430,-17600,-17599,-16647,-15217,-14013, -13246,-12335,-10896,-8820,-5963,-2839,-45,2448,4475,5613, 6086,6476,7086,8324,10342,12457,14095,15282,15769,15716, 15675,15494,14735,13353,11396,8808,6021,3231,212,-2811, -5461,-7622,-9253,-10697,-12645,-14956,-16688,-17368,-17060,-15992, -14854,-14133,-13449,-12318,-10686,-8451,-5621,-2627,238,2781, 4505,5333,5761,6213,7039,8622,10684,12605,14139,15108, 15463,15712,15936,15594,14659,13222,11144,8636,6051,3119, -159,-3082,-5361,-7142,-8725,-10674,-13097,-15262,-16572,-16898, -16302,-15358,-14744,-14218,-13349,-12170,-10479,-8130,-5310,-2251, 717,3016,4330,5039,5490,6008,7160,8996,10958,12664, 13936,14697,15281,15804,15943,15476,14480,12888,10918,8704, 5887,2532,-593,-3059,-5032,-6713,-8609,-11126,-13730,-15578, -16473,-16456,-15867,-15362,-14991,-14338,-13453,-12302,-10455,-7968, -5023,-1772,1033,2928,4099,4721,5062,5898,7494,9330, 11047,12572,13650,14435,15283,15867,15768,15130,14098,12690, 10950,8486,5247,2005,-717,-2911,-4673,-6497,-8985,-11794, -14092,-15570,-16191,-16091,-15790,-15538,-15069,-14430,-13721,-12465, -10411,-7792,-4675,-1428,1125,2763,3677,4135,4771,6078, 7787,9547,11199,12462,13463,14635,15592,15782,15499,14988, 14079,12788,10900,8038,4714,1807,-538,-2424,-4231,-6618, -9511,-12108,-14069,-15318,-15788,-15813,-15707,-15395,-15002,-14607, -13809,-12289,-10161,-7344,-3977,-934,1221,2618,3341,3827, 4846,6443,8151,9749,11138,12409,13759,14952,15556,15651, 15529,15118,14351,13003,10624,7473,4444,1943,-112,-1938, -4196,-7083,-9931,-12238,-14012,-15092,-15490,-15589,-15520,-15327, -15145,-14762,-13846,-12273,-9875,-6688,-3405,-713,1195,2255, 2805,3726,5163,6644,8121,9629,11039,12530,13953,14842, 15247,15478,15526,15304,14564,12761,9953,6965,4342,2170, 278,-1862,-4600,-7492,-10140,-12442,-14068,-14904,-15392,-15594, -15505,-15475,-15471,-15054,-14030,-12236,-9467,-6103,-3006,-626, 858,1698,2633,3958,5289,6601,8058,9534,11089,12731, 13895,14478,14985,15463,15720,15571,14462,12110,9335,6852, 4558,2503,476,-2005,-4851,-7652,-10252,-12398,-13823,-14707, -15211,-15315,-15428,-15695,-15686,-15237,-14168,-11960,-8748,-5513, -2850,-859,422,1484,2766,4033,5214,6565,8071,9688, 11421,12837,13626,14259,15034,15792,16220,15702,13951,11548, 9186,6910,4761,2811,527,-2224,-5017,-7751,-10356,-12356, -13665,-14517,-14942,-15135,-15465,-15827,-15948,-15549,-14029,-11279, -8118,-5264,-2922,-1203,137,1537,2831,3890,5084,6553, 8191,10026,11640,12558,13237,14234,15323,16187,16373,15380, 13452,11233,8997,6877,4928,2784,253,-2437,-5264,-8136, -10555,-12341,-13675,-14399,-14654,-15019,-15625,-16169,-16358,-15577, -13452,-10543,-7668,-5097,-3015,-1351,225,1644,2712,3741, 5066,6718,8608,10323,11349,12076,13162,14451,15635,16438, 16215,14834,12953,10944,8851,6928,5011,2719,133,-2629, -5553,-8278,-10552,-12386,-13564,-14012,-14393,-15131,-15998,-16719, -16673,-15261,-12840,-10141,-7500,-5129,-3173,-1307,400,1553, 2427,3656,5335,7212,8987,10230,11043,12073,13492,14984, 16241,16714,16023,14602,12874,10899,8984,7238,5142,2663, 62,-2789,-5743,-8426,-10739,-12458,-13298,-13732,-14531,-15660, -16724,-17323,-16751,-14930,-12571,-10068,-7587,-5332,-3158,-1131, 212,1110,2307,3908,5734,7594,9044,9905,10836,12244, 13903,15497,16613,16706,15862,14476,12701,10917,9251,7360, 5084,2650,-2,-2985,-5975,-8712,-10905,-12167,-12805,-13624, -14834,-16166,-17263,-17449,-16343,-14492,-12418,-10076,-7593,-5176, -2942,-1277,-217,908,2421,4201,6103,7670,8635,9544, 10869,12471,14226,15843,16646,16405,15525,14168,12531,10986, 9303,7276,5107,2708,-164,-3297,-6330,-8941,-10685,-11619, -12473,-13692,-15178,-16647,-17431,-17047,-15886,-14355,-12302,-9836, -7334,-4900,-2922,-1664,-552,924,2670,4542,6223,7368, 8237,9373,10841,12622,14576,16000,16412,16071,15207,13909, 12493,10975,9165,7294,5264,2613,-531,-3713,-6682,-8946, -10211,-11117,-12359,-13960,-15632,-16889,-17258,-16815,-15883,-14298, -12050,-9501,-6916,-4695,-3248,-2102,-628,1095,2928,4752, 6093,6959,7914,9200,10843,12894,14776,15816,16096,15809, 14963,13733,12341,10783,9180,7536,5321,2389,-875,-4149, -6828,-8452,-9543,-10879,-12499,-14219,-15794,-16769,-17010,-16753, -15858,-14050,-11634,-9030,-6629,-4889,-3655,-2247,-556,1286, 3233,4827,5824,6666,7766,9242,11209,13274,14809,15715, 16097,15738,14795,13630,12258,10793,9451,7802,5279,2055, -1362,-4392,-6436,-7808,-9239,-10906,-12671,-14418,-15757,-16574, -17038,-16850,-15617,-13552,-11098,-8619,-6635,-5211,-3833,-2199, -362,1648,3483,4667,5497,6505,7825,9557,11591,13406, 14814,15761,15979,15476,14558,13349,12080,11052,9883,7828, 4873,1487,-1778,-4283,-5960,-7538,-9322,-11132,-12904,-14500, -15764,-16794,-17315,-16757,-15210,-13071,-10647,-8476,-6868,-5457, -3897,-2124,-37,1959,3337,4253,5228,6405,7882,9784, 11742,13414,14822,15697,15747,15129,14094,12998,12211,11460, 9938,7441,4295,938,-1870,-3904,-5694,-7600,-9446,-11217, -12952,-14500,-15970,-17196,-17453,-16524,-14835,-12638,-10372,-8600, -7181,-5671,-3903,-1841,318,1942,3043,4049,5110,6381, 8097,10009,11773,13521,15019,15643,15412,14678,13731,13085, 12678,11692,9657,6852,3699,730,-1590,-3616,-5675,-7594, -9344,-11114,-12849,-14597,-16312,-17389,-17296,-16185,-14297,-12077, -10262,-8866,-7356,-5589,-3603,-1442,504,1844,2888,3957, 5131,6581,8279,10062,12017,13966,15205,15467,15055,14313, 13767,13636,13113,11563,9179,6314,3385,818,-1431,-3674, -5705,-7447,-9185,-11005,-12880,-14904,-16633,-17411,-17031,-15652, -13681,-11894,-10511,-9058,-7380,-5487,-3286,-1177,403,1644, 2820,3926,5120,6568,8207,10184,12458,14283,15088,15042, 14554,14143,14145,14040,13059,11190,8763,6042,3382,867, -1595,-3809,-5619,-7369,-9180,-11026,-13195,-15486,-17035,-17400, -16666,-15110,-13386,-12015,-10746,-9216,-7383,-5229,-3008,-1200, 272,1659,2834,3880,5055,6454,8296,10702,12962,14281, 14682,14518,14243,14351,14542,14032,12734,10875,8515,5930, 3375,768,-1680,-3717,-5505,-7205,-8977,-11186,-13768,-15914, -17064,-17164,-16204,-14700,-13419,-12310,-10929,-9241,-7231,-4985, -2980,-1318,309,1712,2731,3686,4829,6416,8751,11337, 13157,13998,14224,14210,14385,14736,14619,13803,12508,10617, 8257,5853,3326,626,-1688,-3525,-5226,-6930,-8997,-11646, -14226,-16059,-16908,-16675,-15655,-14599,-13645,-12433,-10898,-9073, -6958,-4916,-3094,-1247,471,1625,2436,3338,4690,6858, 9519,11692,12952,13616,13982,14320,14762,14975,14628,13764, 12356,10422,8258,5822,3073,532,-1476,-3227,-4892,-6761, -9301,-12166,-14510,-16018,-16555,-16135,-15400,-14729,-13751,-12359, -10729,-8829,-6819,-4924,-2936,-960,454,1291,1999,3037, 4943,7574,9932,11544,12668,13388,13882,14506,15029,15011, 14528,13654,12233,10391,8192,5520,2815,568,-1294,-2921, -4618,-6959,-9868,-12612,-14691,-15891,-16149,-15891,-15560,-14906, -13724,-12307,-10679,-8823,-6894,-4774,-2497,-770,115,725, 1596,3142,5479,7952,9909,11356,12399,13122,13906,14675, 14952,14823,14408,13485,12064,10215,7775,5012,2562,595, -1070,-2608,-4648,-7477,-10436,-12926,-14725,-15640,-15912,-15954, -15636,-14769,-13600,-12276,-10716,-8920,-6745,-4231,-2149,-1024, -371,376,1568,3560,6007,8164,9847,11182,12208,13150, 14095,14696,14863,14827,14419,13481,12073,9973,7281,4661, 2541,836,-624,-2363,-4951,-7964,-10692,-12940,-14529,-15401, -15907,-16017,-15420,-14443,-13509,-12363,-10789,-8673,-6101,-3737, -2237,-1413,-742,193,1837,4114,6343,8202,9794,11107, 12259,13390,14211,14649,14943,14976,14565,13685,12072,9603, 6889,4575,2768,1313,-254,-2528,-5409,-8250,-10770,-12847, -14369,-15444,-15996,-15765,-15089,-14495,-13773,-12519,-10667,-8190, -5558,-3631,-2562,-1857,-1070,242,2260,4444,6395,8175, 9755,11100,12397,13464,14098,14616,15064,15140,14785,13750, 11673,9035,6631,4675,3141,1721,-276,-2957,-5754,-8366, -10817,-12946,-14592,-15588,-15770,-15456,-15185,-14857,-14056,-12569, -10293,-7578,-5307,-3912,-3042,-2309,-1252,474,2535,4494, 6385,8159,9713,11165,12428,13274,13908,14597,15170,15372, 14942,13438,11079,8659,6609,4979,3609,1841,-602,-3195, -5737,-8426,-11019,-13158,-14675,-15356,-15399,-15400,-15473,-15152, -14169,-12310,-9689,-7157,-5398,-4293,-3462,-2563,-1146,738, 2632,4509,6407,8145,9803,11318,12347,13038,13833,14708, 15398,15593,14767,12831,10540,8519,6854,5390,3761,1668, -673,-3091,-5794,-8649,-11229,-13237,-14458,-14904,-15160,-15573, -15748,-15278,-13945,-11662,-9070,-7020,-5620,-4589,-3700,-2518, -884,880,2667,4546,6420,8253,9976,11245,12074,12939, 13973,15042,15820,15630,14187,12204,10360,8653,7070,5506, 3669,1624,-551,-3114,-6062,-8955,-11411,-13148,-14038,-14565, -15269,-15929,-16035,-15270,-13458,-11022,-8796,-7100,-5829,-4849, -3806,-2365,-773,836,2660,4623,6566,8457,9992,10933, 11744,12912,14314,15606,16095,15322,13759,12125,10487,8808, 7216,5553,3734,1840,-507,-3436,-6530,-9362,-11562,-12909, -13771,-14755,-15838,-16510,-16371,-15166,-13038,-10752,-8826,-7276, -6113,-5054,-3758,-2345,-902,818,2751,4789,6920,8704, 9797,10635,11848,13427,14968,15983,15920,14931,13620,12145, 10492,8853,7268,5659,4042,2070,-675,-3872,-6962,-9571, -11349,-12535,-13776,-15186,-16322,-16854,-16386,-14775,-12622,-10634, -8912,-7445,-6273,-5051,-3695,-2405,-993,842,2966,5241, 7232,8464,9349,10608,12262,13976,15372,15938,15558,14682, 13492,11955,10321,8756,7263,5888,4325,1980,-1122,-4352, -7219,-9397,-10910,-12321,-13945,-15515,-16630,-16879,-15969,-14256, -12337,-10512,-8940,-7586,-6240,-4899,-3766,-2638,-1056,1081, 3451,5600,7038,7955,9142,10816,12631,14300,15435,15723, 15377,14585,13294,11708,10144,8713,7512,6311,4387,1569, -1630,-4706,-7245,-9038,-10589,-12402,-14266,-15830,-16776,-16658, -15506,-13895,-12167,-10489,-8994,-7488,-6036,-4985,-4112,-2789, -823,1546,3830,5502,6579,7701,9271,11088,12913,14455, 15346,15604,15317,14406,12957,11389,10021,8942,7953,6495, 4115,1102,-2052,-4855,-6968,-8709,-10635,-12713,-14647,-16195, -16818,-16331,-15188,-13781,-12195,-10529,-8848,-7276,-6169,-5452, -4382,-2617,-402,1934,3850,5121,6281,7754,9481,11348, 13122,14439,15294,15678,15211,13982,12512,11139,10081,9335, 8281,6340,3639,643,-2286,-4713,-6646,-8623,-10825,-13065, -15097,-16372,-16538,-16008,-15116,-13766,-12091,-10289,-8552,-7319, -6645,-5811,-4268,-2216,11,2097,3623,4810,6247,7935, 9706,11552,13251,14593,15519,15692,14882,13554,12203,11109, 10451,9764,8294,5988,3230,335,-2277,-4362,-6343,-8639, -11104,-13458,-15257,-16088,-16185,-15908,-15065,-13552,-11702,-9861, -8470,-7703,-7000,-5755,-3922,-1758,349,2011,3351,4803, 6416,8059,9863,11741,13467,14936,15764,15521,14439,13175, 12110,11446,10955,9955,8114,5635,2819,142,-2019,-4006, -6318,-8913,-11511,-13710,-15116,-15864,-16272,-16043,-14889,-13171, -11323,-9736,-8823,-8240,-7186,-5545,-3561,-1491,312,1785, 3280,4849,6396,8057,9941,11900,13821,15280,15656,15014, 13942,12893,12197,11852,11249,9894,7778,5139,2461,262, -1683,-3965,-6611,-9309,-11755,-13677,-15065,-16097,-16528,-15967, -14561,-12760,-11066,-9988,-9393,-8529,-7073,-5274,-3299,-1408, 175,1701,3310,4767,6231,7997,10051,12259,14258,15325, 15241,14524,13572,12769,12478,12256,11339,9616,7282,4739, 2546,668,-1558,-4201,-6865,-9436,-11721,-13611,-15241,-16406, -16537,-15599,-14061,-12397,-11153,-10448,-9681,-8447,-6880,-5070, -3176,-1465,161,1828,3295,4575,6115,8102,10440,12810, 14536,15158,14880,14135,13331,12987,12992,12517,11175,9190, 6921,4789,2897,786,-1755,-4423,-6993,-9433,-11651,-13773, -15637,-16553,-16248,-15140,-13680,-12334,-11492,-10788,-9696,-8308, -6736,-4968,-3194,-1451,327,1820,3000,4372,6165,8384, 10975,13293,14603,14876,14439,13718,13389,13540,13371,12409, 10857,8925,6935,5094,3073,645,-1925,-4456,-6918,-9326, -11781,-14181,-15859,-16318,-15780,-14669,-13433,-12500,-11771,-10800, -9578,-8251,-6664,-4870,-3054,-1226,389,1568,2725,4275, 6279,8814,11554,13572,14423,14361,13887,13625,13841,13937, 13339,12153,10590,8842,7146,5270,2914,448,-1874,-4272, -6756,-9389,-12220,-14604,-15829,-15944,-15320,-14353,-13495,-12748, -11794,-10716,-9615,-8264,-6578,-4741,-2828,-1085,197,1258, 2528,4192,6555,9497,12044,13462,13889,13762,13631,13886, 14192,13929,13084,11894,10476,8962,7227,5021,2613,430, -1723,-4140,-6805,-9848,-12816,-14793,-15604,-15612,-15071,-14344, -13653,-12804,-11783,-10833,-9725,-8198,-6428,-4534,-2627,-1120, -83,875,2218,4326,7250,10149,12110,13055,13338,13432, 13800,14253,14228,13668,12829,11778,10542,9008,6978,4678, 2550,610,-1530,-4110,-7198,-10479,-13089,-14632,-15341,-15378, -14944,-14337,-13591,-12730,-11902,-10985,-9696,-8099,-6263,-4207, -2413,-1294,-519,467,2202,4912,7993,10414,11862,12600, 12999,13513,14139,14351,14052,13555,12831,11867,10634,8820, 6586,4555,2807,947,-1351,-4315,-7737,-10827,-13030,-14450, -15156,-15160,-14775,-14203,-13471,-12739,-11991,-11005,-9686,-7948, -5824,-3803,-2466,-1729,-1011,281,2636,5705,8443,10315, 11495,12279,12987,13751,14209,14162,13917,13599,12994,12025, 10483,8377,6358,4757,3153,1167,-1452,-4753,-8106,-10877, -13003,-14395,-14919,-14911,-14648,-14053,-13354,-12786,-12107,-11092, -9597,-7482,-5237,-3654,-2834,-2271,-1334,554,3400,6266, 8461,10074,11252,12210,13151,13797,13953,13925,13913,13713, 13093,11842,9951,7998,6478,5083,3339,1088,-1779,-5131, -8332,-10980,-13021,-14261,-14765,-14836,-14472,-13847,-13383,-13006, -12323,-11122,-9214,-6857,-4959,-3962,-3444,-2728,-1251,1167, 3978,6401,8309,9884,11196,12356,13200,13529,13687,13968, 14134,13890,12959,11298,9482,8021,6727,5242,3381,914, -2179,-5485,-8562,-11137,-13033,-14200,-14743,-14675,-14199,-13843, -13694,-13389,-12551,-10901,-8569,-6441,-5192,-4592,-4035,-2914, -880,1706,4164,6311,8221,9883,11319,12421,12951,13233, 13766,14320,14400,13853,12591,10911,9441,8232,6953,5457, 3448,668,-2507,-5669,-8704,-11253,-13066,-14173,-14519,-14250, -13968,-14035,-14101,-13692,-12400,-10227,-7944,-6423,-5662,-5137, -4305,-2679,-384,1962,4162,6294,8285,10040,11377,12113, 12574,13293,14123,14565,14423,13603,12213,10766,9580,8476, 7248,5645,3335,452,-2600,-5747,-8814,-11308,-13071,-13970, -14008,-13833,-14036,-14417,-14452,-13674,-11813,-9464,-7693,-6734, -6133,-5444,-4183,-2217,-73,1973,4202,6506,8509,10084, 11092,11725,12547,13578,14337,14634,14319,13254,11890,10744, 9745,8704,7446,5593,3126,354,-2680,-5970,-9069,-11489, -12971,-13456,-13488,-13804,-14455,-14907,-14624,-13282,-11133,-9138, -7924,-7219,-6541,-5482,-3875,-2042,-167,2003,4443,6726, 8542,9834,10706,11603,12739,13807,14512,14670,14040,12875, 11747,10790,9862,8842,7406,5413,3073,330,-2949,-6381, -9423,-11578,-12555,-12839,-13318,-14163,-14963,-15209,-14399,-12587, -10621,-9229,-8336,-7561,-6614,-5318,-3812,-2178,-115,2339, 4740,6840,8460,9560,10536,11753,13041,14103,14710,14568, 13728,12716,11818,10961,10046,8917,7372,5491,3171,109, -3497,-6963,-9728,-11363,-12037,-12631,-13670,-14803,-15483,-15223, -13862,-12069,-10622,-9544,-8576,-7625,-6582,-5371,-3985,-2159, 206,2687,4957,6897,8273,9339,10611,12059,13389,14408, 14720,14256,13500,12730,11925,11111,10180,8992,7595,5794, 3109,-403,-4121,-7389,-9658,-10807,-11608,-12796,-14242,-15359, -15605,-14783,-13359,-11999,-10808,-9666,-8641,-7694,-6686,-5554, -4057,-1920,556,2919,5048,6732,7926,9181,10760,12338, 13649,14443,14428,13944,13406,12722,11893,11074,10183,9196, 7947,5874,2695,-1055,-4656,-7450,-9093,-10165,-11560,-13271, -14713,-15450,-15235,-14292,-13163,-12002,-10762,-9641,-8704,-7819, -6907,-5718,-3931,-1604,859,3142,5009,6409,7713,9298, 11034,12618,13750,14205,14132,13878,13387,12598,11777,11031, 10339,9597,8192,5580,1990,-1760,-4934,-7046,-8429,-10003, -11935,-13671,-14852,-15271,-14880,-14082,-13121,-11894,-10649,-9654, -8788,-8002,-7151,-5751,-3680,-1287,1108,3187,4723,6089, 7740,9579,11335,12783,13663,14016,14113,13884,13218,12384, 11651,11140,10828,10127,8176,4958,1230,-2140,-4653,-6432, -8189,-10251,-12251,-13819,-14787,-15053,-14714,-14002,-12952,-11688, -10566,-9659,-8932,-8294,-7293,-5569,-3334,-940,1273,2991, 4392,6045,7962,9808,11456,12732,13521,14010,14155,13724, 12907,12096,11610,11604,11509,10259,7588,4173,753,-2062, -4157,-6107,-8324,-10515,-12417,-13894,-14713,-14921,-14676,-13895, -12689,-11495,-10493,-9705,-9214,-8579,-7238,-5248,-2958,-696, 1192,2735,4371,6269,8175,9943,11463,12625,13524,14138, 14079,13333,12433,11918,12041,12369,11818,9808,6813,3588, 626,-1779,-3880,-6133,-8495,-10667,-12537,-13908,-14660,-14910, -14602,-13674,-12468,-11373,-10493,-9989,-9625,-8670,-6955,-4882, -2708,-712,951,2614,4489,6423,8289,9979,11410,12727, 13849,14226,13671,12750,12143,12248,12847,12904,11626,9224, 6291,3344,764,-1512,-3847,-6262,-8598,-10786,-12615,-13893, -14666,-14897,-14394,-13344,-12196,-11258,-10715,-10465,-9860,-8496, -6661,-4635,-2604,-851,804,2707,4654,6486,8240,9877, 11531,13143,14047,13816,12979,12340,12317,12932,13446,12881, 11150,8719,5960,3320,948,-1439,-3920,-6339,-8722,-10914, -12656,-13978,-14813,-14832,-14066,-12965,-11960,-11346,-11109,-10745, -9779,-8240,-6395,-4471,-2702,-1002,928,2955,4721,6365, 8098,10017,12044,13486,13716,13083,12437,12315,12828,13558, 13614,12562,10706,8355,5819,3418,1031,-1500,-3991,-6415, -8828,-10966,-12766,-14209,-14835,-14482,-13624,-12689,-11957,-11655, -11473,-10797,-9546,-7957,-6224,-4545,-2851,-863,1217,2974, 4486,6170,8235,10573,12547,13353,13080,12494,12243,12621, 13423,13898,13500,12255,10369,8126,5847,3520,1008,-1561, -4017,-6439,-8839,-11098,-13051,-14297,-14529,-14010,-13213,-12502, -12153,-12054,-11646,-10656,-9319,-7847,-6326,-4674,-2659,-495, 1254,2629,4175,6222,8745,11178,12609,12825,12471,12170, 12352,13105,13869,13984,13330,11983,10120,8085,5914,3440, 898,-1508,-3934,-6431,-8923,-11354,-13262,-14156,-14125,-13577, -12917,-12578,-12542,-12277,-11501,-10456,-9303,-7994,-6420,-4428, -2239,-444,849,2207,4107,6629,9387,11441,12245,12219, 12020,12058,12649,13550,14074,13919,13136,11808,10090,8100, 5788,3306,943,-1396,-3908,-6511,-9196,-11700,-13307,-13818, -13652,-13207,-12909,-12922,-12766,-12126,-11313,-10494,-9478,-8071, -6156,-3939,-2079,-825,344,2025,4402,7255,9815,11274, 11724,11697,11695,12163,13056,13780,14024,13783,12995,11715, 10031,7922,5571,3289,1057,-1337,-3937,-6762,-9674,-11975, -13082,-13331,-13272,-13179,-13190,-13092,-12595,-11953,-11436,-10760, -9581,-7820,-5645,-3673,-2375,-1330,120,2228,4974,7842, 9932,10910,11201,11309,11673,12469,13291,13783,13984,13746, 12916,11616,9845,7658,5462,3368,1172,-1286,-4134,-7288, -10074,-11818,-12606,-12957,-13176,-13339,-13282,-12870,-12383,-12091, -11744,-10902,-9349,-7278,-5274,-3868,-2877,-1689,126,2688, 5649,8178,9721,10440,10787,11177,11855,12670,13344,13843, 14054,13736,12891,11525,9590,7468,5545,3613,1336,-1433, -4675,-7805,-10048,-11392,-12269,-12869,-13248,-13325,-12999,-12579, -12485,-12451,-11936,-10716,-8835,-6784,-5247,-4287,-3329,-1853, 431,3361,6158,8154,9369,10063,10558,11181,11959,12717, 13401,13941,14099,13768,12844,11219,9261,7497,5858,3886, 1275,-1922,-5225,-7888,-9739,-11155,-12284,-12997,-13246,-12998, -12577,-12545,-12756,-12614,-11785,-10229,-8219,-6526,-5515,-4728, -3569,-1671,1028,3923,6284,7946,9054,9745,10379,11147, 11896,12623,13400,13979,14115,13681,12451,10689,9122,7776, 6130,3856,881,-2423,-5337,-7600,-9503,-11147,-12320,-12867, -12837,-12572,-12598,-12965,-13179,-12765,-11563,-9711,-7880,-6744, -6044,-5134,-3602,-1258,1580,4216,6297,7810,8837,9618, 10409,11141,11814,12669,13628,14244,14205,13393,11960,10529, 9418,8107,6154,3514,397,-2613,-5164,-7510,-9650,-11281, -12253,-12542,-12384,-12391,-12869,-13396,-13416,-12629,-11029,-9212, -7935,-7201,-6476,-5336,-3430,-801,1938,4295,6198,7596, 8662,9601,10309,10900,11766,12914,13918,14344,13930,12835, 11661,10764,9766,8135,5841,3084,169,-2557,-5155,-7708, -9860,-11302,-11987,-12040,-12032,-12540,-13333,-13735,-13369,-12152, -10443,-9049,-8241,-7599,-6755,-5315,-3034,-359,2125,4295, 6122,7529,8654,9466,9997,10783,12059,13357,14144,14136, 13399,12513,11870,11129,9848,7946,5541,2885,199,-2558, -5406,-8020,-10018,-11153,-11476,-11537,-12043,-12986,-13737,-13802, -13000,-11582,-10170,-9218,-8617,-7974,-6880,-5017,-2588,-112, 2219,4392,6231,7631,8584,9152,9858,11145,12641,13722, 14087,13757,13152,12727,12271,11301,9784,7795,5420,2903, 225,-2783,-5830,-8346,-10023,-10771,-10998,-11518,-12527,-13521, -14014,-13704,-12562,-11198,-10202,-9579,-9062,-8241,-6741,-4671, -2398,-32,2379,4593,6375,7565,8217,8894,10153,11736, 13017,13698,13775,13514,13291,13062,12448,11288,9667,7683, 5470,3001,31,-3289,-6292,-8467,-9690,-10237,-10804,-11848, -13049,-13928,-14115,-13393,-12132,-11069,-10426,-9942,-9333,-8221, -6526,-4578,-2400,131,2679,4791,6262,7098,7777,8973, 10599,12035,12982,13425,13472,13480,13511,13198,12376,11123, 9523,7736,5661,2897,-498,-3846,-6517,-8250,-9144,-9787, -10816,-12185,-13417,-14070,-13831,-12858,-11822,-11136,-10666,-10146, -9323,-8070,-6538,-4670,-2207,579,3025,4762,5834,6611, 7700,9288,10865,12043,12779,13135,13356,13637,13646,13101, 12172,10999,9644,8011,5652,2412,-1105,-4216,-6506,-7827, -8615,-9629,-11090,-12606,-13695,-13943,-13346,-12485,-11819,-11302, -10775,-10129,-9237,-8137,-6677,-4449,-1622,1073,3138,4485, 5422,6493,7977,9609,10961,11898,12509,13006,13532,13812, 13529,12843,12041,11121,9950,8124,5287,1809,-1570,-4350, -6195,-7245,-8275,-9781,-11511,-12952,-13679,-13539,-12967,-12445, -11921,-11307,-10708,-10117,-9425,-8397,-6565,-3876,-1061,1262, 2963,4136,5234,6697,8344,9781,10870,11681,12406,13190, 13725,13689,13250,12687,12093,11399,10189,7936,4728,1240, -1901,-4215,-5625,-6774,-8293,-10135,-11855,-12978,-13331,-13196, -12914,-12470,-11795,-11144,-10715,-10382,-9797,-8447,-6117,-3322, -785,1185,2627,3846,5324,7025,8494,9650,10655,11603, 12588,13402,13651,13394,13036,12682,12328,11723,10189,7467, 4089,735,-1986,-3780,-5113,-6719,-8639,-10479,-11922,-12759, -13099,-13186,-12920,-12261,-11571,-11155,-10984,-10797,-10010,-8158, -5557,-2940,-771,889,2312,3878,5612,7149,8358,9453, 10582,11779,12854,13422,13407,13162,12975,12898,12781,11985, 9906,6810,3452,493,-1661,-3258,-4995,-7021,-8963,-10594, -11838,-12676,-13174,-13213,-12691,-11986,-11559,-11455,-11488,-11217, -9942,-7643,-5114,-2857,-982,624,2312,4140,5746,7023, 8194,9399,10727,12058,12939,13182,13086,12991,13074,13347, 13257,11955,9339,6137,3106,695,-1199,-3099,-5201,-7218, -8995,-10562,-11845,-12771,-13205,-12954,-12274,-11767,-11701,-11917, -11996,-11298,-9509,-7166,-4951,-2960,-1139,659,2566,4294, 5643,6862,8129,9518,11032,12255,12792,12834,12776,12927, 13454,13910,13388,11479,8670,5741,3170,1010,-1075,-3240, -5285,-7167,-8954,-10580,-11952,-12858,-12959,-12412,-11850,-11719, -12032,-12401,-12157,-10937,-9052,-6983,-4981,-3045,-1108,892, 2735,4194,5441,6730,8143,9790,11350,12243,12429,12387, 12591,13276,14119,14233,13061,10870,8252,5664,3305,1068, -1192,-3315,-5232,-7144,-9047,-10773,-12153,-12745,-12428,-11886, -11729,-12022,-12518,-12651,-11931,-10530,-8834,-6951,-5002,-3011, -914,1084,2680,3980,5250,6658,8363,10195,11471,11876, 11853,12042,12803,13918,14541,14066,12608,10504,8083,5679, 3319,963,-1239,-3207,-5140,-7214,-9309,-11131,-12213,-12295, -11865,-11674,-11942,-12472,-12844,-12563,-11617,-10341,-8782,-6915, -4925,-2800,-652,1141,2504,3729,5090,6834,8885,10497, 11165,11270,11478,12179,13333,14349,14505,13728,12286,10311, 8024,5642,3183,889,-1063,-2963,-5114,-7452,-9696,-11318, -11873,-11709,-11570,-11790,-12301,-12801,-12865,-12373,-11511,-10337, -8795,-6929,-4786,-2494,-485,984,2151,3445,5208,7388, 9317,10315,10586,10835,11496,12608,13809,14460,14295,13482, 12087,10172,7877,5384,3003,1040,-771,-2904,-5375,-7907, -10007,-11122,-11322,-11322,-11559,-12020,-12588,-12910,-12744,-12252, -11485,-10328,-8802,-6806,-4398,-2160,-574,570,1798,3503, 5742,7914,9265,9811,10119,10682,11702,12996,13998,14348, 14139,13382,11954,9945,7524,5097,3101,1380,-645,-3168, -5896,-8355,-9992,-10675,-10908,-11197,-11652,-12227,-12731,-12862, -12639,-12229,-11537,-10409,-8698,-6343,-3914,-2152,-974,209, 1833,4000,6325,8045,8892,9337,9883,10792,12043,13231, 13988,14342,14221,13363,11751,9581,7193,5156,3508,1638, -801,-3604,-6351,-8475,-9665,-10254,-10693,-11183,-11819,-12436, -12730,-12719,-12637,-12416,-11767,-10414,-8263,-5797,-3848,-2573, -1406,119,2204,4600,6623,7820,8465,9052,9871,11008, 12244,13261,14053,14539,14311,13170,11318,9145,7153,5553, 3859,1585,-1165,-4030,-6573,-8316,-9286,-9935,-10551,-11273, -12010,-12411,-12513,-12681,-12894,-12719,-11792,-9967,-7600,-5530, -4131,-2990,-1582,367,2765,5005,6535,7474,8205,8990, 9994,11133,12245,13360,14374,14765,14162,12706,10788,8927, 7420,5907,3886,1324,-1555,-4383,-6605,-8020,-8948,-9749, -10588,-11414,-11919,-12096,-12416,-12977,-13279,-12835,-11445,-9305, -7169,-5671,-4554,-3238,-1439,863,3225,5032,6260,7258, 8130,8998,10008,11086,12330,13745,14738,14734,13772,12214, 10508,9065,7731,6012,3723,953,-2018,-4600,-6410,-7701, -8826,-9873,-10770,-11320,-11571,-11977,-12744,-13464,-13551,-12659, -10867,-8824,-7229,-6089,-4900,-3256,-1098,1265,3307,4838, 6097,7188,8056,8854,9804,11069,12684,14146,14747,14371, 13294,11853,10487,9336,7966,5986,3388,411,-2382,-4509, -6165,-7674,-8997,-10051,-10711,-10982,-11370,-12274,-13317,-13878, -13535,-12181,-10312,-8725,-7583,-6449,-4959,-2992,-724,1400, 3207,4807,6151,7116,7833,8601,9751,11423,13192,14337, 14558,13983,12856,11637,10669,9675,8094,5748,2900,70, -2302,-4266,-6141,-7870,-9183,-9986,-10337,-10686,-11574,-12852, -13834,-14011,-13188,-11651,-10140,-9016,-7961,-6595,-4795,-2680, -549,1435,3345,5039,6198,6922,7607,8571,10120,12048, 13656,14487,14445,13662,12654,11886,11163,9959,7991,5367, 2582,117,-2068,-4251,-6344,-8038,-9115,-9574,-9861,-10679, -12073,-13404,-14065,-13765,-12650,-11351,-10312,-9327,-8076,-6502, -4614,-2570,-492,1654,3671,5113,5981,6653,7464,8731, 10625,12608,13958,14431,14107,13371,12802,12367,11508,9937, 7694,5072,2568,275,-2121,-4577,-6643,-8054,-8751,-9044, -9707,-11100,-12661,-13711,-13919,-13279,-12291,-11410,-10516,-9371, -8002,-6420,-4568,-2500,-245,1997,3771,4902,5643,6319, 7320,9008,11142,12928,13875,13995,13628,13290,13102,12598, 11422,9605,7345,4990,2720,263,-2458,-4953,-6753,-7750, -8168,-8717,-9993,-11696,-13058,-13699,-13590,-13000,-12332,-11561, -10532,-9368,-8093,-6510,-4556,-2312,90,2211,3694,4603, 5205,5961,7413,9512,11556,12927,13485,13500,13445,13508, 13328,12545,11132,9263,7234,5141,2738,-93,-2929,-5169, -6515,-7116,-7655,-8800,-10466,-12033,-13069,-13486,-13392,-13008, -12389,-11496,-10501,-9470,-8180,-6516,-4452,-2005,447,2343, 3506,4158,4752,5918,7882,10045,11723,12704,13101,13315, 13647,13789,13322,12287,10841,9167,7424,5278,2428,-685, -3322,-5074,-5971,-6570,-7627,-9203,-10777,-12073,-12966,-13347, -13301,-12939,-12249,-11408,-10570,-9564,-8221,-6474,-4160,-1519, 767,2291,3106,3640,4583,6302,8440,10320,11606,12378, 12929,13501,13943,13834,13096,12007,10769,9434,7699,5077, 1829,-1156,-3312,-4594,-5410,-6416,-7866,-9427,-10871,-12127, -12949,-13259,-13195,-12775,-12095,-11398,-10672,-9693,-8322,-6317, -3650,-1039,835,1925,2538,3303,4802,6832,8755,10252, 11292,12112,12993,13760,13975,13566,12805,11937,11057,9819, 7617,4476,1290,-1227,-2960,-4100,-5139,-6457,-7970,-9499, -10965,-12149,-12883,-13204,-13102,-12620,-12041,-11515,-10899,-9930, -8290,-5846,-3071,-812,581,1363,2093,3360,5247,7196, 8784,10009,11064,12192,13286,13845,13694,13201,12710,12248, 11462,9767,7027,3886,1093,-1072,-2615,-3802,-5060,-6499, -8020,-9589,-11014,-12100,-12844,-13117,-12881,-12440,-12075,-11753, -11230,-10067,-7926,-5188,-2670,-914,105,880,2033,3731, 5612,7268,8612,9798,11124,12543,13448,13548,13284,13102, 13021,12689,11536,9306,6424,3528,1012,-917,-2344,-3645, -5049,-6514,-8082,-9675,-11066,-12174,-12848,-12883,-12574,-12370, -12291,-12117,-11454,-9804,-7269,-4661,-2623,-1288,-390,691, 2300,4102,5708,7081,8396,9874,11488,12702,13103,13081, 13146,13348,13426,12853,11240,8786,5999,3285,989,-758, -2208,-3623,-5038,-6536,-8175,-9804,-11258,-12321,-12715,-12572, -12441,-12567,-12737,-12526,-11395,-9228,-6668,-4458,-2875,-1772, -662,881,2652,4169,5463,6852,8490,10269,11726,12430, 12640,12906,13320,13707,13689,12753,10823,8339,5684,3168, 1081,-614,-2152,-3562,-4947,-6548,-8322,-10055,-11486,-12241, -12317,-12279,-12529,-12964,-13203,-12655,-10967,-8584,-6302,-4552, -3278,-2025,-437,1276,2711,3921,5289,6997,8891,10568, 11578,12023,12422,12996,13638,14079,13801,12504,10444,7991, 5473,3166,1171,-529,-1979,-3305,-4799,-6615,-8572,-10337, -11472,-11811,-11857,-12183,-12823,-13447,-13470,-12333,-10261,-8079, -6281,-4865,-3490,-1810,-64,1318,2451,3765,5441,7391, 9250,10554,11240,11753,12411,13222,14026,14336,13702,12196, 10130,7747,5339,3126,1150,-430,-1691,-3070,-4849,-6925, -8954,-10456,-11133,-11302,-11625,-12402,-13369,-13886,-13313,-11683, -9743,-8038,-6549,-5045,-3317,-1512,-78,1003,2236,3853, 5757,7728,9320,10271,10889,11616,12547,13575,14351,14352, 13472,11932,9875,7530,5171,2979,1185,-124,-1395,-3076, -5164,-7387,-9261,-10281,-10606,-10935,-11758,-12966,-13928,-13892, -12768,-11213,-9713,-8231,-6646,-4873,-3014,-1485,-370,768, 2247,4083,6106,7910,9120,9885,10627,11595,12780,13896, 14445,14189,13251,11717,9610,7230,4907,2917,1461,274, -1236,-3270,-5608,-7794,-9207,-9720,-10077,-10943,-12275,-13528, -14016,-13478,-12373,-11193,-9875,-8283,-6468,-4554,-2894,-1718, -669,675,2387,4397,6371,7841,8776,9563,10501,11710, 13028,14000,14342,14057,13106,11435,9224,6834,4657,3028, 1847,548,-1321,-3718,-6134,-7868,-8670,-9118,-9976,-11352, -12789,-13679,-13708,-13143,-12372,-11348,-9910,-8136,-6182,-4360, -3036,-2031,-836,747,2680,4754,6469,7598,8482,9455, 10609,11949,13204,14050,14396,14105,12975,11122,8840,6501, 4651,3455,2317,605,-1743,-4305,-6322,-7382,-7986,-8890, -10252,-11754,-12938,-13467,-13421,-13090,-12458,-11323,-9694,-7768, -5876,-4382,-3315,-2245,-816,1045,3115,4966,6325,7372, 8410,9536,10791,12142,13356,14222,14580,14150,12801,10743, 8387,6363,5087,4098,2548,250,-2341,-4575,-5949,-6736, -7684,-9036,-10558,-11933,-12853,-13285,-13431,-13245,-12485,-11140, -9343,-7382,-5749,-4628,-3632,-2346,-633,1393,3339,4865, 6083,7223,8325,9500,10830,12180,13425,14399,14703,13997, 12309,10051,7959,6598,5688,4366,2211,-386,-2746,-4406, -5457,-6480,-7817,-9335,-10801,-11972,-12775,-13350,-13647,-13381, -12432,-10878,-8965,-7196,-5958,-5007,-3831,-2257,-361,1627, 3353,4741,5973,7133,8279,9515,10817,12210,13671,14714, 14722,13547,11549,9486,8073,7182,6014,4110,1648,-807, -2709,-4007,-5157,-6503,-7993,-9490,-10835,-11873,-12752,-13518, -13802,-13337,-12147,-10421,-8643,-7291,-6270,-5180,-3790,-2048, -87,1761,3316,4690,5957,7128,8282,9471,10823,12547, 14252,15024,14447,12858,10987,9576,8703,7678,5966,3694, 1256,-858,-2406,-3708,-5129,-6653,-8168,-9588,-10788,-11862, -12987,-13846,-13937,-13187,-11786,-10114,-8676,-7585,-6516,-5259, -3709,-1832,72,1739,3275,4728,5998,7072,8071,9326, 11162,13308,14810,14961,13919,12346,10986,10120,9228,7738, 5660,3334,1131,-663,-2139,-3640,-5245,-6833,-8283,-9555, -10781,-12169,-13479,-14141,-13921,-12951,-11508,-10062,-8898,-7851, -6682,-5278,-3563,-1698,44,1727,3421,4862,5897,6730, 7778,9523,11904,13985,14861,14479,13355,12177,11337,10542, 9274,7452,5290,3097,1206,-401,-2022,-3721,-5331,-6793, -8092,-9383,-10911,-12543,-13734,-14109,-13654,-12565,-11252,-10100, -9079,-7967,-6652,-5098,-3415,-1733,64,1984,3644,4747, 5447,6264,7813,10197,12648,14160,14420,13836,12963,12232, 11594,10600,9039,7072,4963,3047,1382,-329,-2157,-3842, -5296,-6606,-7897,-9432,-11233,-12828,-13776,-13916,-13272,-12205, -11200,-10269,-9186,-7923,-6522,-5032,-3497,-1708,410,2343, 3602,4272,4878,6126,8355,10981,13014,13960,13953,13454, 12938,12499,11776,10485,8731,6789,4929,3236,1478,-449, -2259,-3783,-5103,-6371,-7836,-9664,-11566,-13026,-13723,-13590, -12896,-12100,-11314,-10301,-9057,-7793,-6529,-5178,-3504,-1314, 910,2416,3150,3649,4599,6504,9091,11457,12988,13602, 13568,13357,13189,12742,11723,10230,8487,6736,5080,3329, 1358,-571,-2211,-3607,-4851,-6189,-7963,-10040,-11873,-13065, -13478,-13277,-12829,-12236,-11322,-10131,-8948,-7895,-6778,-5261, -3122,-737,1078,2001,2480,3198,4720,7100,9641,11572, 12686,13150,13312,13442,13328,12615,11394,9930,8353,6746, 5065,3141,1124,-670,-2156,-3397,-4614,-6259,-8372,-10446, -12011,-12926,-13260,-13261,-12982,-12231,-11101,-10003,-9131,-8272, -6993,-4963,-2495,-413,814,1397,1922,3085,5176,7694, 9892,11421,12336,12903,13360,13562,13201,12321,11141,9774, 8324,6774,4939,2874,926,-662,-1904,-3040,-4522,-6557, -8716,-10527,-11862,-12731,-13229,-13349,-12852,-11821,-10814,-10138, -9524,-8519,-6766,-4336,-1976,-413,355,833,1685,3418, 5799,8073,9875,11230,12219,13008,13550,13565,13037,12160, 11043,9796,8450,6766,4690,2607,890,-399,-1487,-2841, -4723,-6837,-8750,-10364,-11721,-12765,-13337,-13177,-12352,-11440, -10872,-10500,-9839,-8408,-6143,-3655,-1761,-736,-223,457, 1861,3947,6166,8115,9759,11130,12269,13171,13603,13446, 12888,12056,11064,9971,8500,6484,4323,2493,1107,-11, -1276,-3019,-5010,-6878,-8648,-10388,-11922,-12990,-13271,-12730, -11935,-11459,-11261,-10932,-9940,-7951,-5409,-3237,-1925,-1262, -656,475,2245,4268,6239,8064,9676,11113,12391,13250, 13476,13218,12697,12019,11198,10001,8182,6003,4070,2626, 1450,179,-1425,-3245,-5011,-6788,-8746,-10700,-12241,-13016, -12885,-12254,-11824,-11782,-11754,-11206,-9637,-7237,-4903,-3286, -2355,-1697,-763,710,2521,4387,6247,8024,9685,11278, 12551,13170,13226,13012,12650,12154,11278,9679,7616,5691, 4151,2876,1589,65,-1590,-3183,-4856,-6862,-9072,-11067, -12379,-12712,-12333,-11958,-12030,-12291,-12136,-11041,-8965,-6645, -4812,-3589,-2763,-1937,-693,934,2642,4377,6187,8018, 9852,11496,12523,12889,12974,13004,12872,12314,11044,9179, 7315,5764,4373,2991,1526,-14,-1466,-2965,-4874,-7185, -9508,-11335,-12177,-12103,-11865,-12039,-12516,-12757,-12162,-10530, -8361,-6395,-4927,-3896,-3041,-1964,-538,1025,2612,4306, 6167,8192,10126,11496,12183,12580,12964,13226,13042,12124, 10564,8863,7343,5894,4418,2933,1474,139,-1156,-2841, -5129,-7686,-9933,-11292,-11593,-11504,-11791,-12447,-12994,-12919, -11838,-9955,-7963,-6323,-5083,-4117,-3096,-1796,-387,1000, 2529,4346,6439,8566,10222,11190,11875,12594,13195,13375, 12872,11702,10241,8816,7381,5855,4292,2811,1572,504, -877,-2978,-5627,-8197,-10003,-10768,-10936,-11270,-12035,-12888, -13280,-12757,-11331,-9481,-7739,-6345,-5250,-4177,-2923,-1650, -481,831,2538,4636,6874,8753,9989,10921,11931,12858, 13391,13310,12556,11411,10172,8827,7302,5668,4089,2831, 1968,928,-916,-3483,-6213,-8416,-9629,-10096,-10547,-11376, -12406,-13231,-13313,-12406,-10865,-9203,-7724,-6495,-5317,-4012, -2792,-1834,-781,764,2788,5026,7050,8557,9735,10951, 12151,13031,13388,13098,12302,11334,10220,8760,7028,5342, 4026,3215,2477,1022,-1351,-4117,-6620,-8292,-9109,-9684, -10549,-11710,-12855,-13466,-13107,-11975,-10578,-9177,-7847,-6530, -5129,-3875,-3000,-2175,-865,1002,3149,5223,6904,8285, 9687,11108,12283,13006,13145,12793,12224,11437,10171,8447, 6626,5166,4323,3769,2720,715,-1949,-4609,-6674,-7898, -8657,-9558,-10814,-12208,-13253,-13439,-12774,-11739,-10578,-9252, -7800,-6303,-4981,-4098,-3407,-2324,-684,1302,3343,5155, 6687,8216,9849,11305,12313,12793,12849,12724,12368,11415, 9804,7945,6339,5367,4895,4167,2591,235,-2464,-4839, -6415,-7394,-8365,-9673,-11248,-12622,-13255,-13113,-12563,-11761, -10587,-9080,-7480,-6076,-5136,-4487,-3588,-2191,-410,1557, 3388,4989,6648,8459,10127,11393,12186,12610,12900,13024, 12499,11115,9269,7552,6410,5889,5406,4261,2276,-258, -2804,-4709,-5906,-6981,-8360,-10012,-11598,-12633,-12964,-12914, -12578,-11700,-10292,-8672,-7172,-6090,-5437,-4704,-3495,-1902, -124,1651,3284,4980,6913,8770,10215,11236,11986,12665, 13257,13255,12276,10605,8816,7455,6801,6464,5692,4102, 1793,-754,-2853,-4263,-5454,-6914,-8641,-10337,-11653,-12456, -12906,-13054,-12607,-11454,-9909,-8346,-7130,-6392,-5741,-4706, -3277,-1681,-81,1489,3187,5180,7188,8799,9988,10981, 11968,12969,13524,13079,11737,10017,8467,7599,7317,6872, 5659,3634,1202,-986,-2575,-3912,-5451,-7190,-8922,-10449, -11624,-12501,-13126,-13214,-12493,-11137,-9586,-8281,-7438,-6773, -5840,-4552,-3119,-1698,-268,1393,3409,5493,7239,8573, 9716,10931,12259,13332,13549,12698,11133,9486,8383,8033, 7830,6956,5239,3045,913,-794,-2281,-3895,-5644,-7377, -8994,-10404,-11647,-12744,-13377,-13168,-12173,-10754,-9389,-8456, -7767,-6856,-5653,-4384,-3131,-1859,-349,1646,3828,5665, 7104,8383,9697,11230,12763,13633,13416,12216,10556,9275, 8799,8662,8060,6684,4772,2775,1025,-541,-2217,-4007, -5740,-7374,-8906,-10383,-11851,-13020,-13391,-12851,-11735,-10479, -9477,-8725,-7822,-6643,-5469,-4419,-3321,-1968,-162,2010, 4005,5552,6883,8252,9855,11707,13222,13680,12960,11524, 10175,9541,9390,8958,7897,6326,4522,2818,1240,-474, -2331,-4105,-5746,-7326,-8945,-10707,-12336,-13242,-13198,-12484, -11498,-10568,-9760,-8823,-7660,-6530,-5580,-4646,-3461,-1832, 210,2273,3981,5365,6695,8304,10367,12408,13542,13399, 12351,11110,10339,10088,9778,8975,7706,6163,4556,2992, 1295,-596,-2424,-4046,-5610,-7298,-9218,-11219,-12688,-13186, -12937,-12325,-11596,-10819,-9848,-8661,-7543,-6654,-5837,-4836, -3422,-1525,553,2378,3809,5056,6598,8778,11185,12911, 13420,12873,11872,11093,10759,10478,9858,8858,7588,6177, 4693,3008,1091,-754,-2341,-3816,-5455,-7454,-9673,-11554, -12604,-12898,-12757,-12353,-11747,-10850,-9673,-8530,-7640,-6890, -6074,-4937,-3228,-1139,744,2162,3334,4743,6854,9473, 11696,12833,12884,12281,11609,11249,10998,10492,9708,8700, 7521,6220,4642,2726,837,-699,-2065,-3616,-5578,-7898, -10062,-11550,-12359,-12728,-12734,-12390,-11685,-10609,-9433,-8491, -7791,-7156,-6270,-4770,-2737,-785,636,1699,2955,4899, 7523,10099,11808,12465,12364,11964,11664,11451,11043,10390, 9618,8723,7625,6195,4358,2439,901,-347,-1767,-3642, -5944,-8271,-10107,-11382,-12274,-12745,-12744,-12331,-11463,-10275, -9230,-8548,-8067,-7433,-6178,-4246,-2265,-802,203,1254, 2957,5457,8192,10363,11612,12043,12019,11918,11792,11446, 10895,10313,9695,8867,7636,5918,4033,2469,1261,-24, -1737,-3909,-6252,-8350,-10016,-11322,-12282,-12796,-12798,-12209, -11108,-9989,-9280,-8912,-8481,-7494,-5736,-3735,-2198,-1208, -315,1069,3312,6068,8546,10276,11261,11719,11925,11973, 11717,11228,10781,10399,9842,8851,7315,5515,3952,2752, 1546,37,-1891,-4157,-6380,-8304,-9944,-11325,-12354,-12898, -12719,-11800,-10664,-9914,-9629,-9399,-8653,-7116,-5163,-3523, -2483,-1704,-610,1285,3902,6540,8643,10116,11080,11696, 12003,11894,11468,11127,10985,10677,9896,8580,6930,5379, 4141,2990,1641,-22,-2077,-4311,-6366,-8217,-9966,-11505, -12591,-12902,-12297,-11233,-10451,-10186,-10096,-9627,-8355,-6508, -4811,-3682,-2946,-2097,-585,1729,4356,6690,8562,10014, 11088,11744,11847,11546,11304,11312,11240,10712,9651,8198, 6695,5439,4337,3122,1624,-234,-2333,-4380,-6305,-8280, -10252,-11891,-12759,-12592,-11729,-10936,-10663,-10686,-10454,-9485, -7797,-6064,-4855,-4101,-3392,-2217,-277,2134,4497,6630, 8536,10076,11108,11520,11425,11303,11448,11560,11282,10519, 9297,7881,6651,5609,4513,3179,1480,-463,-2370,-4241, -6300,-8558,-10683,-12137,-12493,-11957,-11272,-10996,-11105,-11120, -10454,-8991,-7269,-5945,-5152,-4526,-3567,-1972,107,2314, 4553,6799,8775,10191,10953,11162,11192,11413,11731,11745, 11267,10287,8999,7796,6836,5858,4631,3077,1297,-423, -2094,-4109,-6529,-9000,-11017,-12001,-11873,-11349,-11157,-11362, -11588,-11265,-10066,-8417,-7044,-6175,-5534,-4716,-3430,-1735, 181,2353,4791,7118,8930,10090,10641,10876,11193,11631, 11919,11789,11087,9953,8827,7929,7061,5929,4477,2847, 1291,-144,-1893,-4299,-7032,-9474,-11053,-11493,-11245,-11119, -11421,-11853,-11849,-10986,-9509,-8141,-7201,-6471,-5675,-4640, -3321,-1749,186,2576,5121,7315,8902,9852,10341,10774, 11347,11865,12019,11616,10714,9721,8932,8150,7108,5745, 4213,2805,1589,142,-2007,-4794,-7618,-9744,-10728,-10857, -10908,-11326,-11914,-12182,-11690,-10497,-9210,-8197,-7341,-6517, -5651,-4630,-3383,-1760,422,2959,5401,7409,8781,9556, 10129,10847,11587,12012,11892,11234,10410,9760,9131,8183, 6891,5441,4127,3114,2009,201,-2405,-5403,-8035,-9588, -10132,-10437,-11039,-11786,-12254,-12117,-11325,-10249,-9235,-8274, -7363,-6560,-5767,-4816,-3521,-1652,761,3310,5625,7400, 8496,9265,10133,11059,11730,11899,11529,10905,10408,9949, 9156,7942,6528,5247,4356,3595,2227,-97,-3040,-5926, -7993,-9011,-9633,-10456,-11380,-12054,-12242,-11863,-11095,-10202, -9216,-8205,-7365,-6666,-5935,-5004,-3567,-1412,1159,3645, 5715,7175,8193,9251,10400,11299,11720,11628,11241,10923, 10658,10051,8962,7594,6279,5412,4908,3986,2048,-731, -3673,-6045,-7559,-8567,-9590,-10679,-11573,-12071,-12090,-11679, -10991,-10091,-9057,-8123,-7403,-6804,-6170,-5153,-3383,-970, 1587,3832,5534,6838,8129,9500,10643,11311,11490,11354, 11212,11169,10837,9907,8552,7213,6346,6006,5471,3959, 1486,-1361,-3911,-5789,-7192,-8504,-9770,-10834,-11628,-12039, -11997,-11592,-10897,-9930,-8899,-8076,-7501,-7075,-6458,-5124, -2969,-475,1850,3740,5254,6761,8357,9744,10658,11084, 11177,11246,11449,11450,10782,9475,8054,7136,6877,6641, 5583,3520,925,-1649,-3800,-5516,-7075,-8565,-9862,-10906, -11649,-11999,-11968,-11560,-10751,-9706,-8755,-8110,-7774,-7455, -6570,-4805,-2500,-194,1817,3515,5176,6989,8655,9847, 10503,10771,11017,11492,11844,11475,10322,8886,7852,7560, 7527,6881,5293,3064,626,-1671,-3639,-5395,-7085,-8610, -9899,-10925,-11611,-11973,-11965,-11436,-10475,-9453,-8720,-8389, -8250,-7733,-6381,-4395,-2229,-184,1628,3358,5300,7273, 8773,9649,10103,10535,11255,11966,11943,11002,9654,8550, 8115,8125,7820,6726,4935,2731,450,-1644,-3568,-5416, -7146,-8661,-9938,-10932,-11648,-12070,-11936,-11144,-10108,-9296, -8909,-8825,-8558,-7621,-6009,-4072,-2121,-314,1461,3479, 5657,7470,8584,9204,9800,10745,11791,12178,11547,10345, 9231,8640,8565,8480,7819,6480,4625,2489,370,-1648, -3623,-5491,-7178,-8666,-9936,-11022,-11872,-12177,-11687,-10716, -9849,-9376,-9269,-9167,-8559,-7295,-5640,-3896,-2214,-485, 1589,3945,6009,7366,8169,8922,10033,11346,12133,11926, 10991,9914,9170,8959,8966,8645,7749,6292,4420,2406, 386,-1687,-3695,-5461,-7071,-8597,-10020,-11275,-12040,-11954, -11204,-10344,-9784,-9636,-9650,-9306,-8343,-6965,-5465,-4002, -2436,-390,2113,4397,5960,6954,7857,9079,10600,11788, 12033,11423,10486,9681,9303,9292,9192,8651,7604,6105, 4317,2378,284,-1819,-3659,-5287,-6951,-8662,-10288,-11512, -11941,-11573,-10865,-10270,-10061,-10144,-10009,-9264,-8114,-6913, -5734,-4350,-2411,116,2613,4428,5599,6641,7960,9625, 11162,11918,11756,11039,10238,9739,9632,9610,9316,8642, 7563,6087,4291,2219,55,-1862,-3519,-5224,-7111,-9039, -10726,-11687,-11730,-11242,-10717,-10484,-10581,-10561,-9987,-9028, -8098,-7233,-6131,-4402,-1956,643,2699,4103,5254,6623, 8387,10211,11448,11796,11447,10777,10217,10012,9966,9792, 9421,8765,7667,6097,4143,1996,11,-1693,-3388,-5299, -7432,-9525,-11048,-11588,-11347,-10922,-10743,-10860,-10895,-10426, -9610,-8904,-8337,-7539,-6128,-3936,-1359,866,2465,3739, 5089,6826,8841,10540,11397,11436,11028,10543,10246,10113, 9972,9799,9511,8823,7595,5873,3827,1849,156,-1477, -3321,-5471,-7850,-9895,-10964,-11104,-10903,-10862,-11058,-11148, -10763,-10044,-9476,-9160,-8704,-7648,-5767,-3347,-1038,754, 2146,3492,5153,7233,9260,10618,11157,11105,10777,10472, 10245,10063,9982,9940,9626,8783,7384,5537,3592,1920, 439,-1245,-3367,-5868,-8290,-9884,-10472,-10615,-10788,-11093, -11280,-10987,-10321,-9829,-9686,-9519,-8869,-7422,-5243,-2920, -1015,473,1843,3448,5493,7697,9445,10468,10892,10882, 10650,10386,10162,10086,10183,10168,9709,8683,7081,5209, 3577,2246,769,-1239,-3792,-6413,-8408,-9485,-10018,-10495, -11012,-11331,-11167,-10596,-10104,-10013,-10072,-9784,-8783,-6955, -4740,-2780,-1236,152,1710,3676,5910,7922,9389,10300, 10695,10675,10463,10208,10071,10185,10395,10320,9669,8356, 6628,5050,3856,2607,805,-1670,-4421,-6721,-8196,-9158, -9998,-10755,-11264,-11293,-10839,-10358,-10252,-10445,-10507,-9945, -8499,-6471,-4520,-2947,-1547,-24,1836,4010,6158,7981, 9366,10219,10529,10478,10257,10029,10079,10415,10675,10422, 9413,7867,6391,5334,4330,2786,511,-2187,-4666,-6488, -7842,-9065,-10157,-10933,-11204,-10912,-10420,-10267,-10540,-10868, -10739,-9730,-7993,-6162,-4600,-3189,-1701,34,2088,4269, 6314,8079,9404,10154,10406,10275,9986,9930,10296,10781, 10875,10229,8921,7554,6615,5832,4559,2543,18,-2490, -4537,-6173,-7717,-9188,-10332,-10917,-10854,-10422,-10200,-10482, -10981,-11174,-10621,-9266,-7621,-6133,-4760,-3336,-1738,156, 2289,4422,6421,8171,9435,10089,10184,9895,9730,10092, 10720,11057,10712,9689,8511,7687,7074,6070,4360,2083, -351,-2511,-4348,-6120,-7899,-9447,-10448,-10678,-10339,-10084, -10330,-10898,-11327,-11172,-10268,-8905,-7504,-6178,-4844,-3389, -1663,324,2426,4538,6585,8328,9473,9883,9713,9501, 9814,10567,11125,11015,10266,9300,8600,8138,7392,6007, 4037,1775,-380,-2287,-4195,-6250,-8198,-9647,-10278,-10165, -9927,-10127,-10696,-11250,-11441,-10990,-9961,-8722,-7494,-6263, -4929,-3363,-1533,424,2496,4728,6879,8510,9330,9371, 9185,9467,10260,10957,11080,10589,9813,9223,8906,8416, 7363,5706,3671,1623,-233,-2146,-4356,-6641,-8525,-9607, -9836,-9730,-9895,-10435,-11084,-11523,-11448,-10778,-9787,-8703, -7566,-6362,-4950,-3305,-1548,374,2652,5117,7209,8468, 8845,8811,9076,9864,10679,10992,10738,10149,9637,9424, 9183,8462,7132,5354,3491,1785,-16,-2268,-4774,-7005, -8551,-9226,-9329,-9493,-9992,-10678,-11306,-11548,-11228,-10525, -9681,-8690,-7554,-6287,-4860,-3360,-1691,496,3143,5617, 7324,8098,8295,8614,9391,10274,10774,10749,10350,9938, 9824,9798,9355,8311,6826,5204,3689,2076,-56,-2638, -5158,-7144,-8316,-8745,-8978,-9459,-10159,-10897,-11403,-11407, -11009,-10438,-9656,-8593,-7393,-6190,-4993,-3628,-1647,1015, 3742,5842,7048,7570,7999,8785,9749,10419,10583,10332, 10026,10030,10187,10000,9224,8001,6648,5357,3979,2094, -403,-3092,-5466,-7132,-7985,-8387,-8880,-9613,-10410,-11066, -11372,-11330,-11068,-10509,-9554,-8404,-7343,-6422,-5395,-3736, -1199,1665,4080,5704,6595,7198,8048,9136,9991,10336, 10239,10019,10080,10384,10399,9859,8916,7804,6737,5641, 4099,1859,-813,-3451,-5572,-6873,-7555,-8171,-8953,-9783, -10517,-11024,-11315,-11420,-11149,-10337,-9239,-8284,-7584,-6864, -5592,-3374,-539,2129,4128,5393,6226,7157,8364,9418, 9938,9989,9895,10021,10411,10622,10281,9545,8656,7789, 6955,5801,3943,1449,-1271,-3710,-5434,-6482,-7299,-8184, -9061,-9821,-10462,-11029,-11491,-11540,-10917,-9900,-9014,-8458, -8008,-7156,-5388,-2774,-5,2291,3898,5003,6099,7439, 8681,9403,9618,9635,9817,10273,10651,10559,10027,9324, 8624,8011,7242,5816,3603,956,-1634,-3712,-5155,-6286, -7339,-8249,-9005,-9737,-10519,-11286,-11687,-11352,-10459,-9601, -9114,-8876,-8414,-7132,-4857,-2149,278,2128,3520,4840, 6351,7783,8718,9132,9302,9546,10041,10551,10676,10357, 9803,9235,8830,8398,7427,5614,3189,624,-1668,-3505, -5016,-6320,-7329,-8082,-8855,-9811,-10824,-11551,-11581,-10910, -10078,-9581,-9479,-9380,-8587,-6736,-4227,-1772,231,1834, 3362,5055,6704,7871,8484,8804,9133,9667,10293,10639, 10507,10059,9589,9325,9189,8642,7263,5205,2861,529, -1587,-3462,-5080,-6263,-7054,-7845,-8887,-10103,-11172,-11586, -11184,-10429,-9918,-9869,-10029,-9718,-8357,-6167,-3835,-1773, 1,1700,3541,5381,6817,7708,8208,8601,9171,9919, 10462,10505,10163,9772,9623,9688,9490,8553,6924,4917, 2732,474,-1710,-3633,-5073,-6002,-6781,-7826,-9166,-10497, -11328,-11269,-10636,-10139,-10106,-10409,-10476,-9633,-7869,-5767, -3776,-1943,-133,1814,3823,5527,6680,7394,7917,8545, 9404,10146,10358,10107,9775,9703,9912,9989,9457,8309, 6743,4806,2590,258,-1957,-3704,-4830,-5661,-6658,-8042, -9624,-10821,-11125,-10685,-10195,-10186,-10570,-10864,-10474,-9218, -7472,-5640,-3847,-2029,-20,2139,4088,5515,6434,7080, 7798,8783,9718,10112,9979,9739,9704,9935,10162,10007, 9346,8266,6733,4711,2363,-37,-2085,-3460,-4362,-5341, -6718,-8422,-9977,-10715,-10558,-10168,-10131,-10542,-11049,-11059, -10272,-8943,-7388,-5721,-3953,-1970,301,2543,4281,5421, 6225,7061,8159,9262,9865,9901,9765,9774,9991,10277, 10338,10059,9471,8417,6736,4518,2023,-309,-1990,-3037, -4008,-5393,-7186,-8967,-10104,-10337,-10163,-10197,-10589,-11136, -11422,-11059,-10112,-8889,-7496,-5914,-4030,-1719,732,2761, 4153,5163,6152,7356,8604,9422,9687,9703,9754,9939, 10221,10424,10417,10216,9681,8500,6567,4109,1587,-382, -1618,-2630,-4007,-5851,-7800,-9257,-9874,-9966,-10097,-10501, -11086,-11529,-11470,-10846,-9921,-8877,-7642,-6008,-3804,-1251, 991,2595,3812,4994,6310,7671,8710,9220,9426,9578, 9748,9990,10242,10389,10472,10414,9824,8373,6116,3541, 1364,-60,-1127,-2486,-4327,-6380,-8112,-9091,-9462,-9719, -10152,-10757,-11344,-11556,-11237,-10625,-9924,-9074,-7786,-5799, -3314,-959,850,2279,3626,5052,6526,7760,8527,8952, 9248,9478,9689,9917,10123,10384,10711,10690,9828,7972, 5489,3185,1593,454,-877,-2679,-4766,-6719,-8060,-8737, -9149,-9644,-10344,-11072,-11460,-11352,-11009,-10671,-10203,-9296, -7656,-5336,-2940,-976,635,2164,3712,5268,6669,7685, 8330,8813,9186,9420,9569,9729,10071,10676,11137,10829, 9488,7339,5058,3328,2101,815,-897,-2984,-5096,-6768, -7747,-8313,-8920,-9725,-10570,-11123,-11206,-11070,-11024,-10929, -10404,-9172,-7202,-4894,-2826,-1079,582,2261,3955,5522, 6734,7610,8310,8883,9220,9309,9339,9648,10409,11261, 11471,10637,8909,6823,5018,3711,2464,874,-1153,-3382, -5320,-6575,-7337,-8068,-9003,-9987,-10657,-10860,-10900,-11089, -11312,-11175,-10365,-8817,-6796,-4752,-2918,-1169,606,2402, 4107,5509,6595,7555,8390,8908,9010,8898,9059,9847, 10970,11645,11358,10127,8334,6576,5216,4037,2586,650, -1615,-3723,-5223,-6203,-7119,-8192,-9296,-10119,-10471,-10612, -10937,-11394,-11591,-11219,-10135,-8467,-6601,-4789,-2980,-1121, 750,2543,4074,5331,6538,7701,8487,8690,8522,8489, 9118,10331,11382,11638,10965,9562,7953,6642,5569,4269, 2466,227,-1993,-3675,-4850,-5967,-7220,-8444,-9394,-9913, -10162,-10561,-11189,-11684,-11710,-11083,-9822,-8229,-6563,-4797, -2864,-905,931,2536,3942,5378,6854,7963,8369,8230, 8076,8457,9543,10833,11572,11423,10456,9098,7902,6966, 5860,4209,2067,-164,-1997,-3356,-4630,-6045,-7440,-8546, -9233,-9607,-10044,-10762,-11510,-11899,-11707,-10878,-9630,-8228, -6622,-4697,-2649,-762,862,2346,3949,5706,7163,7897, 7943,7724,7842,8710,10067,11198,11546,11002,9934,8926, 8186,7303,5850,3849,1677,-237,-1752,-3158,-4705,-6248, -7541,-8429,-8932,-9408,-10181,-11078,-11740,-11919,-11515,-10677, -9612,-8265,-6467,-4416,-2511,-876,644,2342,4298,6091, 7214,7582,7438,7331,7909,9206,10577,11341,11232,10506, 9732,9173,8515,7338,5571,3511,1576,-46,-1559,-3218, -4913,-6383,-7469,-8131,-8644,-9430,-10462,-11328,-11783,-11778, -11378,-10696,-9627,-8027,-6095,-4238,-2615,-1086,612,2670, 4785,6345,7082,7123,6912,7182,8306,9775,10825,11113, 10774,10263,9924,9496,8577,7101,5262,3380,1720,154, -1589,-3435,-5099,-6381,-7219,-7817,-8612,-9694,-10700,-11373, -11714,-11773,-11533,-10816,-9454,-7681,-5919,-4340,-2860,-1230, 818,3149,5170,6382,6713,6526,6576,7443,8867,10086, 10678,10710,10533,10409,10220,9595,8404,6817,5086,3456, 1902,146,-1825,-3675,-5140,-6150,-6891,-7753,-8842,-9886, -10690,-11320,-11783,-11979,-11684,-10695,-9140,-7478,-5987,-4598, -3100,-1169,1271,3676,5374,6092,6093,6086,6714,7954, 9223,10050,10388,10497,10639,10710,10356,9461,8147,6621, 5114,3646,1931,-106,-2111,-3742,-4943,-5875,-6830,-7941, -8994,-9856,-10664,-11448,-12034,-12177,-11619,-10372,-8849,-7445, -6220,-4949,-3208,-777,1901,4027,5182,5496,5561,6059, 7115,8296,9225,9821,10186,10545,10900,10872,10244,9165, 7891,6603,5292,3686,1656,-439,-2205,-3600,-4749,-5843, -6988,-8040,-8921,-9817,-10814,-11731,-12308,-12243,-11372,-10006, -8670,-7603,-6629,-5210,-2923,-111,2388,3987,4690,4970, 5432,6336,7419,8355,9060,9625,10194,10795,11109,10794, 9952,8915,7887,6815,5391,3450,1342,-522,-2081,-3457, -4732,-5944,-7020,-7905,-8794,-9881,-11035,-12011,-12453,-12021, -10906,-9692,-8742,-7996,-6972,-5035,-2233,537,2553,3694, 4265,4788,5621,6639,7549,8270,8909,9631,10478,11092, 11085,10528,9764,8992,8159,6987,5256,3213,1307,-385, -1967,-3429,-4765,-5933,-6858,-7702,-8747,-10046,-11367,-12283, -12329,-11522,-10479,-9699,-9169,-8458,-6956,-4449,-1561,815, 2377,3298,4003,4867,5865,6739,7427,8075,8883,9899, 10782,11075,10805,10338,9829,9197,8258,6834,5014,3137, 1368,-352,-1991,-3510,-4826,-5820,-6609,-7563,-8869,-10428, -11788,-12330,-11894,-11056,-10431,-10108,-9711,-8638,-6550,-3802, -1183,757,2022,2970,3986,5073,5946,6561,7160,7994, 9104,10186,10776,10807,10616,10367,9962,9251,8120,6593, 4874,3116,1335,-436,-2148,-3671,-4795,-5544,-6355,-7614, -9282,-10969,-11991,-11988,-11415,-10951,-10794,-10667,-10032,-8425, -5977,-3334,-1104,503,1724,2945,4192,5149,5747,6303, 7102,8207,9374,10185,10520,10623,10620,10431,9986,9174, 7935,6442,4840,3105,1256,-632,-2398,-3720,-4490,-5151, -6281,-7986,-9881,-11282,-11734,-11490,-11192,-11173,-11299,-11093, -9994,-7927,-5443,-3138,-1265,261,1737,3191,4289,4937, 5497,6285,7338,8511,9475,10040,10386,10643,10706,10510, 9990,9055,7811,6446,4914,3089,1060,-936,-2498,-3377, -3952,-4911,-6530,-8536,-10272,-11149,-11229,-11094,-11199,-11542, -11716,-11142,-9560,-7354,-5141,-3175,-1374,379,2056,3346, 4117,4711,5487,6486,7620,8686,9463,10001,10458,10774, 10846,10601,9950,8972,7884,6646,4988,2879,662,-1135, -2179,-2747,-3546,-5014,-7012,-8986,-10287,-10719,-10768,-10991, -11514,-12010,-11890,-10816,-9046,-7089,-5164,-3225,-1237,675, 2202,3185,3895,4680,5625,6706,7808,8723,9430,10074, 10636,10964,10962,10556,9862,9085,8161,6775,4772,2398, 293,-1013,-1671,-2363,-3637,-5546,-7680,-9343,-10136,-10392, -10754,-11451,-12200,-12462,-11879,-10610,-9031,-7265,-5281,-3159, -1052,763,2045,2930,3776,4718,5762,6856,7826,8622, 9401,10196,10807,11037,10833,10375,9918,9376,8325,6542, 4239,1929,261,-587,-1217,-2308,-4070,-6247,-8188,-9310, -9786,-10285,-11123,-12067,-12651,-12523,-11752,-10628,-9184,-7319, -5160,-2939,-891,714,1870,2826,3790,4837,5927,6901, 7712,8564,9551,10404,10843,10851,10604,10414,10256,9644, 8214,6070,3684,1744,634,1,-886,-2461,-4594,-6675, -8080,-8806,-9442,-10380,-11464,-12297,-12584,-12309,-11652,-10621, -9084,-7091,-4862,-2659,-792,613,1748,2824,3917,5017, 5976,6772,7659,8774,9853,10514,10676,10604,10624,10788, 10654,9703,7858,5496,3315,1946,1250,471,-936,-2950, -5052,-6651,-7648,-8474,-9480,-10620,-11636,-12269,-12453,-12288, -11728,-10601,-8910,-6823,-4555,-2471,-845,463,1713,2930, 4047,5004,5789,6666,7852,9068,9924,10302,10375,10522, 10923,11224,10826,9421,7220,4925,3319,2497,1777,508, -1355,-3409,-5131,-6346,-7379,-8504,-9673,-10776,-11677,-12238, -12498,-12440,-11834,-10548,-8691,-6494,-4313,-2503,-1005,449, 1862,3063,3995,4766,5644,6844,8168,9187,9721,9912, 10123,10683,11391,11547,10648,8762,6504,4718,3732,2998, 1848,148,-1791,-3568,-4982,-6176,-7398,-8636,-9818,-10893, -11734,-12323,-12698,-12649,-11883,-10377,-8368,-6223,-4325,-2691, -1035,609,1960,2964,3756,4608,5782,7171,8366,9102, 9380,9570,10178,11175,11863,11533,10065,7999,6174,5032, 4228,3159,1614,-186,-1966,-3521,-4861,-6167,-7474,-8716, -9881,-10882,-11720,-12459,-12928,-12730,-11693,-10012,-8069,-6178, -4428,-2649,-816,764,1901,2756,3585,4712,6158,7518, 8415,8800,8974,9562,10755,11873,12084,11151,9431,7652, 6395,5512,4495,3126,1460,-288,-1898,-3347,-4759,-6176, -7510,-8725,-9809,-10795,-11835,-12758,-13087,-12571,-11338,-9712, -7990,-6224,-4342,-2380,-605,750,1698,2506,3568,5052, 6585,7652,8112,8265,8757,9990,11437,12170,11788,10545, 9004,7686,6696,5706,4459,2955,1282,-336,-1809,-3299, -4831,-6261,-7511,-8625,-9708,-10926,-12207,-13041,-13065,-12361, -11152,-9677,-8046,-6163,-4083,-2121,-556,524,1333,2336, 3842,5538,6796,7349,7493,7886,9019,10608,11770,11955, 11238,10023,8809,7807,6841,5690,4303,2753,1188,-272, -1781,-3428,-4978,-6260,-7369,-8489,-9806,-11273,-12492,-13044, -12901,-12214,-11109,-9733,-8027,-5918,-3739,-1933,-689,141, 1077,2597,4450,5906,6601,6777,7076,8063,9651,11106, 11820,11665,10863,9836,8898,7988,6903,5611,4170,2727, 1325,-187,-1897,-3559,-4908,-6031,-7181,-8538,-10116,-11590, -12559,-12924,-12753,-12132,-11156,-9745,-7772,-5485,-3446,-2023, -1122,-215,1274,3227,4893,5792,6077,6312,7093,8561, 10183,11309,11675,11348,10627,9867,9072,8047,6810,5493, 4175,2867,1379,-376,-2105,-3517,-4678,-5824,-7168,-8768, -10421,-11725,-12501,-12832,-12759,-12286,-11305,-9585,-7292,-5092, -3509,-2527,-1631,-185,1832,3700,4835,5307,5554,6122, 7375,9023,10441,11241,11374,11053,10572,9957,9044,7877, 6682,5516,4308,2905,1171,-648,-2150,-3348,-4499,-5802, -7379,-9111,-10631,-11707,-12418,-12858,-13001,-12571,-11223,-9053, -6779,-5057,-3949,-3026,-1686,305,2372,3807,4508,4821, 5247,6257,7822,9384,10490,11032,11146,11005,10630,9888, 8851,7776,6746,5656,4366,2751,939,-679,-1957,-3101, -4351,-5876,-7662,-9338,-10608,-11566,-12419,-13138,-13337,-12516, -10638,-8402,-6576,-5358,-4402,-3141,-1258,911,2665,3667, 4108,4466,5274,6679,8261,9552,10416,10939,11196,11114, 10570,9687,8762,7874,6901,5737,4266,2519,838,-533, -1682,-2868,-4337,-6125,-7876,-9247,-10364,-11526,-12745,-13609, -13437,-12004,-9951,-8123,-6802,-5791,-4646,-2927,-718,1321, 2644,3283,3675,4343,5547,7012,8366,9493,10379,10999, 11268,11021,10327,9531,8798,7982,6963,5644,3983,2255, 815,-347,-1502,-2927,-4679,-6435,-7829,-9001,-10352,-11939, -13339,-13861,-13079,-11367,-9579,-8212,-7205,-6175,-4620,-2469, -241,1418,2340,2850,3467,4492,5780,7069,8313,9490, 10460,11054,11140,10733,10114,9515,8896,8084,6941,5398, 3680,2209,1059,-77,-1501,-3245,-4977,-6338,-7497,-8918, -10732,-12566,-13742,-13678,-12477,-10874,-9515,-8522,-7607,-6257, -4217,-1914,-2,1254,2011,2671,3565,4672,5835,7083, 8420,9644,10564,11016,10913,10481,10052,9635,9060,8122, 6711,5049,3589,2481,1390,-31,-1764,-3484,-4830,-5924, -7293,-9172,-11296,-13063,-13784,-13226,-11942,-10688,-9767,-8968, -7791,-5916,-3651,-1604,-68,1019,1856,2693,3655,4695, 5866,7218,8605,9810,10611,10842,10641,10364,10170,9863, 9141,7861,6279,4890,3830,2779,1402,-319,-2030,-3363, -4402,-5625,-7412,-9667,-11874,-13286,-13425,-12619,-11614,-10824, -10149,-9187,-7559,-5420,-3311,-1559,-171,914,1826,2704, 3615,4669,5967,7415,8831,9970,10528,10538,10452,10511, 10482,10005,8913,7437,6116,5140,4157,2819,1141,-597, -1982,-2942,-3969,-5571,-7819,-10319,-12295,-13099,-12833,-12189, -11645,-11151,-10379,-9045,-7172,-5118,-3205,-1547,-191,890, 1811,2648,3534,4679,6131,7689,9067,9920,10163,10232, 10511,10783,10587,9733,8446,7228,6317,5425,4173,2528, 767,-700,-1648,-2455,-3792,-5912,-8510,-10897,-12314,-12643, -12456,-12229,-11968,-11450,-10423,-8836,-6944,-5006,-3157,-1543, -225,855,1715,2458,3414,4797,6444,7989,9058,9534, 9796,10268,10797,10878,10305,9272,8179,7341,6582,5486, 3905,2090,519,-467,-1097,-2114,-4005,-6561,-9146,-11046, -11968,-12269,-12417,-12437,-12197,-11534,-10302,-8649,-6823,-4936, -3115,-1504,-184,786,1453,2212,3496,5193,6860,8112, 8833,9319,9983,10722,11099,10842,10053,9122,8378,7740, 6815,5353,3502,1770,679,136,-607,-2182,-4569,-7230, -9479,-10946,-11761,-12279,-12626,-12701,-12394,-11561,-10202,-8566, -6779,-4869,-2994,-1361,-174,520,1149,2270,3921,5635, 7002,7930,8643,9473,10417,11075,11134,10627,9849,9228, 8789,8096,6779,4927,3060,1794,1243,725,-513,-2599, -5162,-7624,-9521,-10817,-11740,-12416,-12849,-12926,-12462,-11474, -10136,-8548,-6672,-4611,-2692,-1257,-437,145,1141,2680, 4351,5781,6834,7683,8653,9769,10694,11085,10854,10253, 9755,9542,9159,8088,6329,4396,2946,2265,1875,977, -732,-3041,-5532,-7714,-9380,-10669,-11729,-12524,-12965,-12903, -12317,-11395,-10160,-8448,-6320,-4191,-2515,-1487,-845,34, 1447,3060,4495,5630,6574,7622,8897,10082,10767,10805, 10403,10052,10041,9962,9194,7635,5732,4123,3226,2824, 2221,922,-1082,-3470,-5772,-7694,-9289,-10703,-11877,-12669, -12987,-12847,-12386,-11577,-10156,-8121,-5896,-4002,-2719,-1910, -1052,233,1774,3209,4371,5329,6398,7794,9240,10220, 10508,10309,10116,10276,10482,10064,8789,7009,5298,4160, 3631,3205,2309,707,-1471,-3763,-5801,-7622,-9363,-10876, -11965,-12612,-12901,-12944,-12638,-11623,-9806,-7623,-5614,-4097, -3068,-2152,-937,553,1996,3181,4127,5164,6615,8262, 9520,10058,10041,9996,10309,10770,10727,9824,8269,6535, 5178,4479,4102,3474,2259,437,-1688,-3752,-5736,-7726, -9537,-10897,-11833,-12502,-13013,-13231,-12748,-11327,-9306,-7267, -5570,-4345,-3336,-2110,-602,857,2019,2921,3909,5376, 7173,8668,9443,9629,9702,10108,10765,11103,10657,9422, 7768,6263,5363,4940,4450,3512,2091,301,-1657,-3721, -5892,-7914,-9504,-10696,-11703,-12634,-13358,-13446,-12540,-10835, -8882,-7110,-5735,-4617,-3348,-1785,-246,929,1753,2644, 4061,5937,7623,8640,9055,9253,9683,10481,11176,11181, 10345,8898,7359,6286,5730,5245,4484,3406,2016,319, -1701,-3971,-6148,-7901,-9277,-10535,-11808,-12976,-13676,-13434, -12170,-10401,-8681,-7249,-6041,-4698,-3055,-1429,-215,580, 1382,2695,4561,6412,7673,8309,8636,9080,9926,10925, 11407,10990,9836,8411,7254,6521,5933,5239,4419,3417, 2059,226,-2021,-4297,-6201,-7725,-9137,-10612,-12134,-13380, -13808,-13147,-11714,-10138,-8784,-7583,-6158,-4375,-2639,-1369, -563,134,1281,3068,5036,6571,7460,7896,8339,9210, 10397,11287,11349,10582,9401,8273,7389,6626,5889,5227, 4537,3538,2016,-51,-2363,-4418,-6058,-7543,-9147,-10927, -12635,-13683,-13630,-12670,-11386,-10186,-9056,-7662,-5811,-3903, -2483,-1610,-944,-17,1560,3579,5360,6510,7110,7557, 8386,9683,10861,11348,11054,10248,9284,8347,7429,6587, 5960,5460,4757,3579,1807,-388,-2528,-4285,-5805,-7433, -9369,-11454,-13080,-13634,-13199,-12353,-11460,-10500,-9195,-7368, -5362,-3733,-2683,-1994,-1213,113,2046,4016,5414,6192, 6712,7496,8777,10129,10960,11127,10793,10104,9227,8258, 7298,6605,6207,5751,4895,3462,1470,-658,-2446,-3940, -5546,-7550,-9868,-11935,-13075,-13223,-12861,-12359,-11708,-10651, -8974,-6919,-5084,-3831,-3062,-2390,-1258,541,2572,4175, 5128,5769,6569,7779,9183,10274,10853,10987,10696,10017, 9071,8043,7236,6797,6515,5991,4896,3153,1119,-655, -2086,-3611,-5605,-8029,-10379,-12004,-12728,-12904,-12851,-12577, -11877,-10499,-8525,-6511,-5027,-4159,-3530,-2548,-888,1117, 2829,3975,4758,5586,6722,8088,9350,10277,10830,10950, 10589,9824,8794,7846,7313,7111,6836,6061,4581,2693, 1004,-316,-1716,-3628,-6042,-8555,-10570,-11805,-12483,-12912, -13102,-12866,-11899,-10123,-8037,-6331,-5291,-4653,-3793,-2274, -339,1409,2702,3676,4579,5647,6917,8217,9381,10307, 10845,10874,10398,9487,8449,7779,7596,7503,6995,5793, 4110,2537,1334,110,-1636,-3950,-6498,-8779,-10441,-11565, -12420,-13094,-13411,-12982,-11550,-9514,-7687,-6492,-5756,-4958, -3608,-1788,-21,1381,2516,3534,4584,5769,7047,8304, 9471,10410,10905,10816,10106,9051,8266,8037,8042,7718, 6761,5310,3871,2775,1731,234,-1889,-4389,-6808,-8747, -10200,-11447,-12596,-13474,-13644,-12714,-10909,-9064,-7775,-6935, -6120,-4908,-3238,-1490,19,1298,2417,3486,4628,5833, 7062,8366,9649,10613,10954,10540,9591,8725,8437,8474, 8274,7536,6320,5036,4024,3125,1896,63,-2302,-4770, -6854,-8501,-10019,-11609,-13058,-13851,-13505,-12100,-10383,-9041, -8113,-7262,-6160,-4659,-2963,-1394,-5,1234,2350,3488, 4647,5785,7076,8591,9985,10785,10734,9979,9150,8822, 8861,8754,8205,7214,6080,5172,4445,3474,1928,-217, -2653,-4812,-6530,-8213,-10131,-12074,-13481,-13787,-12945,-11538, -10224,-9217,-8344,-7328,-5979,-4370,-2785,-1348,-10,1234, 2398,3488,4505,5710,7336,9072,10304,10653,10209,9508, 9149,9178,9154,8754,7936,6902,6049,5486,4807,3560, 1644,-638,-2766,-4505,-6231,-8348,-10672,-12605,-13589,-13407, -12444,-11321,-10314,-9420,-8502,-7292,-5763,-4216,-2777,-1343, 51,1309,2348,3221,4273,5882,7834,9442,10211,10125, 9633,9320,9353,9426,9184,8501,7548,6734,6283,5858, 4908,3248,1138,-865,-2495,-4157,-6307,-8840,-11206,-12836, -13396,-12999,-12150,-11281,-10457,-9580,-8485,-7099,-5624,-4222, -2740,-1164,235,1284,2034,2897,4390,6414,8310,9503, 9836,9585,9329,9412,9620,9554,8996,8096,7312,6960, 6744,6060,4649,2767,915,-603,-2095,-4110,-6678,-9346, -11544,-12809,-13056,-12658,-12039,-11352,-10569,-9567,-8316,-6988, -5665,-4154,-2439,-868,253,974,1669,2923,4877,6965, 8545,9323,9390,9255,9392,9726,9842,9435,8592,7811, 7511,7451,6995,5836,4193,2504,1093,-198,-1925,-4351, -7159,-9802,-11707,-12608,-12745,-12526,-12095,-11419,-10522,-9445, -8313,-7108,-5599,-3788,-2069,-810,-45,554,1551,3289, 5443,7320,8488,8903,8943,9203,9749,10082,9831,9094, 8347,8056,8081,7824,6919,5508,3968,2639,1507,100, -2027,-4802,-7714,-10150,-11703,-12480,-12794,-12703,-12182,-11386, -10497,-9585,-8561,-7146,-5274,-3377,-1940,-1054,-464,315, 1781,3874,5990,7521,8271,8562,8969,9646,10162,10092, 9495,8817,8510,8574,8474,7799,6635,5257,3985,2983, 1891,162,-2368,-5338,-8114,-10245,-11680,-12594,-12982,-12750, -12105,-11390,-10721,-9945,-8725,-6925,-4910,-3214,-2108,-1486, -878,308,2233,4420,6230,7323,7903,8526,9377,10051, 10137,9676,9076,8767,8824,8882,8459,7489,6260,5109, 4227,3401,2053,-93,-2815,-5670,-8205,-10244,-11792,-12696, -12853,-12471,-11945,-11488,-10989,-10071,-8477,-6441,-4530,-3167, -2442,-1961,-1021,709,2839,4735,6064,6927,7754,8778, 9665,9995,9764,9276,8950,9002,9166,8971,8217,7108, 6046,5298,4676,3661,1924,-415,-3081,-5796,-8310,-10433, -11918,-12557,-12531,-12258,-11995,-11746,-11191,-9929,-7983,-5910, -4305,-3408,-2952,-2206,-679,1340,3233,4674,5752,6799, 7999,9106,9708,9707,9352,9038,9073,9350,9344,8765, 7793,6820,6142,5663,4909,3557,1679,-606,-3239,-6029, -8637,-10674,-11850,-12248,-12271,-12242,-12257,-12110,-11302,-9590, -7444,-5625,-4535,-3991,-3336,-2003,-142,1682,3175,4390, 5584,6960,8321,9234,9501,9302,9029,9077,9433,9599, 9185,8348,7479,6845,6417,5845,4850,3438,1592,-756, -3511,-6402,-8955,-10719,-11598,-11923,-12115,-12388,-12624,-12289, -10964,-8938,-6987,-5680,-4996,-4357,-3180,-1481,272,1768, 3034,4298,5796,7401,8630,9179,9154,8957,9049,9486, 9798,9563,8871,8104,7492,7034,6553,5841,4854,3500, 1550,-996,-3892,-6777,-9110,-10518,-11207,-11657,-12203,-12807, -12945,-12047,-10256,-8346,-6900,-6018,-5332,-4292,-2759,-1086, 402,1678,2920,4433,6241,7812,8656,8832,8751,8874, 9368,9826,9780,9284,8642,8051,7567,7108,6570,5896, 4966,3513,1352,-1394,-4410,-7160,-9071,-10134,-10885,-11749, -12727,-13338,-12930,-11489,-9717,-8233,-7189,-6396,-5434,-4051, -2457,-998,226,1423,2924,4808,6641,7823,8263,8364, 8575,9077,9623,9792,9544,9073,8507,7980,7537,7087, 6604,6028,5081,3449,1044,-1942,-4932,-7246,-8688,-9716, -10873,-12202,-13260,-13416,-12463,-10918,-9454,-8355,-7503,-6560, -5239,-3698,-2298,-1137,-31,1403,3343,5360,6815,7552, 7893,8228,8746,9340,9685,9681,9430,8963,8395,7900, 7457,7033,6688,6224,5189,3257,486,-2586,-5154,-6895, -8228,-9644,-11243,-12696,-13410,-13049,-11909,-10574,-9459,-8609, -7709,-6432,-4882,-3490,-2440,-1460,-118,1785,3919,5634, 6675,7284,7762,8309,8934,9448,9672,9624,9356,8886, 8345,7818,7347,7097,7005,6538,5148,2729,-257,-2970, -4942,-6488,-8123,-9962,-11757,-13004,-13226,-12534,-11475,-10477, -9683,-8847,-7594,-6031,-4642,-3645,-2752,-1551,212,2343, 4251,5589,6499,7165,7756,8417,9050,9472,9653,9597, 9321,8858,8233,7626,7364,7513,7537,6704,4765,2059, -689,-2849,-4519,-6270,-8321,-10445,-12180,-13003,-12802,-12061, -11304,-10659,-9914,-8737,-7174,-5750,-4765,-3950,-2866,-1278, 736,2745,4345,5508,6392,7118,7828,8530,9081,9446, 9682,9667,9298,8624,7854,7475,7723,8102,7819,6422, 4109,1517,-731,-2513,-4250,-6354,-8769,-10971,-12353,-12688, -12367,-11937,-11533,-10916,-9838,-8362,-6922,-5880,-5096,-4158, -2777,-935,1090,2895,4302,5380,6272,7115,7875,8471, 8969,9480,9820,9663,8984,8078,7501,7687,8293,8462, 7643,5832,3477,1262,-529,-2221,-4272,-6796,-9358,-11240, -12107,-12285,-12253,-12147,-11750,-10832,-9484,-8099,-7001,-6158, -5315,-4170,-2530,-572,1320,2911,4204,5306,6298,7150, 7792,8357,9078,9776,9940,9380,8414,7638,7599,8222, 8757,8493,7221,5223,3132,1406,-176,-2137,-4659,-7411, -9707,-11084,-11750,-12166,-12427,-12314,-11653,-10495,-9184,-8072, -7205,-6396,-5393,-3973,-2141,-244,1431,2926,4292,5460, 6363,7018,7646,8524,9518,10076,9794,8870,7936,7626, 8092,8810,9009,8256,6653,4798,3234,1824,13,-2435, -5226,-7767,-9592,-10773,-11655,-12312,-12574,-12275,-11388,-10166, -9038,-8166,-7411,-6524,-5261,-3607,-1820,-114,1532,3137, 4538,5544,6195,6818,7776,8989,9910,10035,9330,8295, 7693,7928,8688,9211,8907,7738,6195,4833,3621,2036, -218,-2932,-5581,-7728,-9327,-10659,-11769,-12463,-12590,-12064, -11022,-9903,-9052,-8365,-7554,-6430,-4966,-3359,-1743,-19, 1794,3408,4581,5311,5930,6898,8248,9489,10049,9703, 8709,7841,7798,8485,9183,9209,8425,7257,6176,5170, 3800,1791,-713,-3348,-5709,-7623,-9276,-10788,-11983,-12599, -12497,-11741,-10744,-9928,-9283,-8553,-7553,-6286,-4883,-3403, -1704,246,2084,3448,4325,4970,5843,7226,8772,9800, 9871,9071,8087,7768,8290,9020,9278,8830,7973,7162, 6423,5332,3619,1369,-1141,-3575,-5705,-7613,-9461,-11112, -12251,-12629,-12237,-11457,-10764,-10181,-9472,-8552,-7472,-6303, -5007,-3394,-1416,587,2183,3231,3937,4720,6014,7732, 9190,9735,9244,8305,7813,8137,8785,9127,8964,8453, 7882,7357,6586,5239,3302,986,-1402,-3588,-5621,-7716, -9781,-11407,-12272,-12327,-11880,-11365,-10878,-10208,-9362,-8460, -7492,-6378,-4942,-3035,-925,895,2145,2912,3606,4791, 6580,8352,9328,9240,8520,7981,8103,8624,8977,8961, 8695,8370,8077,7620,6644,5061,3011,781,-1351,-3404, -5629,-7963,-10001,-11363,-11927,-11927,-11707,-11363,-10776,-9973, -9189,-8471,-7600,-6374,-4619,-2467,-435,1044,1901,2526, 3594,5375,7341,8697,9038,8640,8199,8209,8561,8872, 8938,8789,8604,8512,8352,7747,6498,4736,2761,812, -1155,-3427,-5960,-8295,-10072,-11180,-11691,-11846,-11738,-11289, -10587,-9862,-9236,-8632,-7753,-6257,-4154,-1942,-239,745, 1374,2341,4058,6126,7760,8519,8509,8225,8189,8478, 8755,8812,8699,8558,8598,8728,8491,7610,6185,4490, 2759,920,-1298,-3895,-6452,-8580,-10186,-11263,-11859,-12067, -11850,-11252,-10585,-10025,-9560,-9006,-7880,-5904,-3578,-1658, -494,166,1060,2685,4780,6647,7794,8192,8179,8192, 8432,8723,8803,8661,8521,8620,8937,9012,8442,7360, 6040,4584,2926,861,-1663,-4313,-6717,-8730,-10305,-11405, -12035,-12162,-11765,-11130,-10629,-10345,-10078,-9334,-7635,-5272, -3145,-1790,-1020,-203,1255,3313,5335,6808,7604,7903, 8087,8402,8719,8801,8653,8482,8582,8994,9287,9008, 8208,7195,6072,4700,2897,594,-1976,-4485,-6780,-8762, -10346,-11478,-12033,-11920,-11382,-10914,-10799,-10837,-10455,-9117, -6933,-4705,-3125,-2218,-1460,-200,1720,3832,5574,6702, 7301,7702,8189,8632,8736,8544,8358,8454,8864,9262, 9244,8784,8089,7236,6146,4673,2686,290,-2198,-4586, -6801,-8786,-10468,-11574,-11822,-11437,-11019,-11007,-11306,-11301, -10343,-8425,-6245,-4504,-3389,-2602,-1545,173,2282,4209, 5617,6494,7145,7853,8488,8704,8518,8312,8357,8708, 9130,9268,9073,8702,8159,7361,6221,4589,2451,82, -2275,-4600,-6903,-9059,-10722,-11442,-11295,-10983,-11073,-11532, -11854,-11361,-9821,-7765,-5919,-4616,-3749,-2820,-1315,712, 2722,4284,5404,6324,7258,8109,8530,8463,8281,8295, 8542,8915,9161,9147,8983,8714,8237,7442,6166,4339, 2215,29,-2254,-4747,-7317,-9494,-10740,-10957,-10777,-10926, -11518,-12122,-12090,-11030,-9220,-7354,-5916,-4955,-4093,-2765, -867,1128,2797,4097,5263,6461,7522,8143,8270,8192, 8195,8357,8653,8943,9060,9035,8972,8804,8339,7364, 5841,4022,2140,61,-2441,-5269,-7895,-9658,-10316,-10382, -10599,-11259,-12103,-12527,-11979,-10510,-8714,-7200,-6180,-5334, -4137,-2410,-500,1198,2644,4023,5428,6722,7614,7974, 8039,8074,8197,8442,8707,8826,8866,8976,9090,8954, 8292,7067,5582,4057,2289,-62,-2972,-5919,-8195,-9364, -9730,-10039,-10749,-11777,-12624,-12600,-11515,-9935,-8479,-7389, -6529,-5427,-3846,-2092,-448,1091,2610,4165,5661,6830, 7490,7754,7892,8052,8291,8537,8632,8650,8860,9187, 9306,8939,8014,6846,5719,4353,2292,-513,-3627,-6330, -8050,-8811,-9249,-10010,-11207,-12380,-12844,-12234,-10933,-9622, -8578,-7656,-6596,-5196,-3574,-2004,-474,1121,2787,4456, 5895,6835,7309,7579,7856,8158,8380,8418,8404,8643, 9142,9465,9291,8633,7770,6982,6048,4430,1923,-1166, -4183,-6409,-7611,-8253,-9045,-10335,-11824,-12743,-12614,-11722, -10649,-9674,-8740,-7673,-6375,-4936,-3476,-1985,-409,1291, 3085,4783,6030,6730,7192,7631,8033,8269,8249,8183, 8421,8979,9457,9464,9010,8383,7875,7354,6268,4230, 1342,-1835,-4479,-6088,-6995,-7908,-9244,-10861,-12152,-12570, -12169,-11438,-10636,-9761,-8750,-7522,-6156,-4825,-3486,-1988, -288,1589,3455,4952,5928,6615,7282,7854,8138,8098, 7969,8179,8771,9329,9487,9212,8738,8403,8228,7693, 6230,3721,582,-2339,-4336,-5531,-6619,-8055,-9754,-11273, -12138,-12267,-11946,-11424,-10706,-9796,-8670,-7360,-6079,-4904, -3597,-1979,-70,1922,3606,4794,5730,6651,7447,7873, 7877,7732,7850,8398,9037,9336,9203,8844,8596,8666, 8665,7825,5799,2883,-122,-2414,-3911,-5202,-6736,-8510, -10227,-11482,-12082,-12180,-11976,-11533,-10819,-9798,-8539,-7288, -6212,-5110,-3631,-1750,255,2037,3422,4613,5807,6852, 7468,7615,7510,7569,8031,8682,9104,9088,8757,8526, 8763,9206,9009,7563,5024,2134,-334,-2107,-3580,-5209, -7043,-8894,-10458,-11474,-11993,-12190,-12082,-11628,-10774,-9569, -8360,-7398,-6461,-5157,-3378,-1382,455,1973,3354,4803, 6115,6966,7295,7294,7323,7720,8403,8937,9008,8673, 8382,8649,9379,9735,8958,6959,4325,1843,-129,-1775, -3465,-5343,-7303,-9088,-10434,-11310,-11912,-12247,-12118,-11476, -10427,-9289,-8402,-7611,-6469,-4859,-2994,-1157,488,2042, 3654,5205,6352,6931,7053,7058,7392,8129,8806,8969, 8638,8281,8492,9351,10099,9922,8589,6392,3997,1930, 177,-1555,-3460,-5491,-7430,-9019,-10232,-11215,-11976,-12265, -11906,-11059,-10074,-9285,-8587,-7567,-6128,-4478,-2771,-1107, 544,2302,4079,5540,6420,6718,6754,7047,7800,8604, 8880,8547,8102,8181,8993,10006,10370,9682,8050,5923, 3863,2080,323,-1595,-3672,-5718,-7468,-8920,-10269,-11454, -12151,-12158,-11617,-10860,-10170,-9560,-8695,-7406,-5915,-4385, -2829,-1190,631,2608,4405,5614,6106,6206,6517,7334, 8251,8650,8398,7887,7759,8397,9482,10255,10162,9122, 7415,5542,3818,2096,147,-1952,-4003,-5844,-7502,-9141, -10699,-11809,-12212,-12023,-11556,-11035,-10491,-9748,-8657,-7316, -5930,-4534,-3040,-1244,895,3020,4575,5325,5570,5912, 6755,7820,8416,8293,7781,7466,7829,8831,9882,10300, 9805,8564,7015,5474,3837,1919,-166,-2177,-4002,-5749, -7614,-9487,-10959,-11763,-11988,-11863,-11559,-11141,-10531,-9586, -8374,-7112,-5916,-4691,-3084,-891,1498,3403,4454,4887, 5334,6233,7394,8213,8332,7892,7413,7503,8347,9475, 10243,10252,9509,8349,7078,5605,3752,1716,-224,-2030, -3825,-5786,-7864,-9665,-10863,-11475,-11709,-11720,-11564,-11155, -10367,-9242,-8059,-7033,-6072,-4763,-2715,-191,2016,3400, 4085,4611,5511,6791,7868,8270,8000,7453,7273,7887, 9002,9947,10311,10070,9392,8434,7173,5487,3548,1697, -45,-1855,-3873,-6066,-8132,-9732,-10747,-11316,-11644,-11817, -11718,-11117,-10065,-8953,-8069,-7351,-6323,-4521,-2054,344, 2060,3050,3721,4611,5926,7257,8003,7950,7422,7060, 7403,8359,9342,9948,10127,9939,9385,8373,6886,5133, 3402,1754,24,-1923,-4142,-6434,-8367,-9741,-10656,-11319, -11858,-12110,-11763,-10826,-9772,-9020,-8500,-7744,-6245,-3972, -1504,493,1792,2639,3552,4907,6459,7542,7789,7378, 6921,7025,7746,8621,9319,9819,10075,9920,9246,8038, 6489,4898,3373,1778,-30,-2169,-4539,-6758,-8463,-9691, -10713,-11646,-12290,-12278,-11538,-10563,-9880,-9518,-9037,-7886, -5878,-3433,-1226,383,1442,2414,3799,5527,6933,7505, 7344,6951,6883,7333,8033,8741,9437,10029,10273,9980, 9111,7806,6370,4963,3523,1881,-140,-2540,-4905,-6827, -8346,-9708,-11037,-12104,-12483,-12038,-11200,-10571,-10279,-10014, -9265,-7635,-5320,-3001,-1191,69,1146,2578,4440,6117, 7034,7207,7029,6913,7110,7580,8179,8937,9772,10368, 10478,9987,8939,7649,6419,5202,3755,1886,-434,-2870, -4936,-6639,-8283,-9964,-11439,-12264,-12189,-11551,-10989,-10780, -10714,-10322,-9117,-7041,-4715,-2803,-1428,-256,1218,3136, 5010,6278,6838,6956,6934,6984,7210,7629,8280,9148, 10013,10532,10450,9712,8610,7545,6579,5417,3746,1577, -751,-2844,-4674,-6539,-8527,-10364,-11653,-12067,-11715,-11210, -11035,-11163,-11140,-10360,-8617,-6412,-4456,-3001,-1754,-250, 1683,3673,5224,6192,6672,6841,6888,6962,7166,7629, 8417,9399,10246,10556,10137,9265,8417,7685,6770,5363, 3390,1189,-820,-2649,-4605,-6786,-8947,-10686,-11602,-11648, -11302,-11170,-11424,-11704,-11334,-9964,-7999,-6150,-4677,-3372, -1890,-5,2076,3882,5215,6088,6530,6707,6778,6820, 7041,7672,8671,9718,10368,10304,9685,9030,8532,7860, 6688,5001,3018,1082,-706,-2618,-4864,-7269,-9414,-10825, -11275,-11137,-11123,-11534,-12038,-12020,-11060,-9396,-7683,-6257, -4954,-3517,-1758,296,2310,3961,5178,5981,6416,6590, 6578,6581,6984,7919,9066,9937,10180,9885,9482,9188, 8756,7840,6409,4678,2926,1252,-544,-2721,-5267,-7801, -9697,-10561,-10699,-10818,-11341,-12066,-12369,-11814,-10548,-9059, -7685,-6411,-5050,-3411,-1443,631,2501,4032,5215,6019, 6423,6443,6307,6490,7255,8369,9370,9871,9844,9675, 9616,9428,8785,7616,6087,4511,3062,1521,-485,-3059, -5861,-8193,-9507,-9967,-10288,-10945,-11810,-12402,-12281,-11409, -10192,-8964,-7765,-6503,-5005,-3159,-1120,851,2625,4178, 5416,6150,6303,6110,6119,6725,7739,8726,9399,9662, 9708,9807,9852,9511,8619,7277,5818,4584,3408,1707, -774,-3703,-6374,-8126,-8958,-9516,-10309,-11319,-12190,-12478, -12018,-11082,-10044,-8997,-7864,-6515,-4819,-2898,-977,930, 2809,4465,5595,6008,5892,5799,6218,7100,8038,8778, 9241,9498,9777,10055,10007,9377,8213,6886,5818,4972, 3688,1455,-1467,-4351,-6504,-7754,-8578,-9516,-10638,-11707, -12392,-12373,-11746,-10900,-10057,-9116,-7906,-6380,-4636,-2839, -960,1118,3158,4699,5462,5556,5493,5784,6500,7357, 8095,8635,9023,9443,9961,10253,9906,8914,7706,6793, 6218,5354,3545,810,-2157,-4643,-6316,-7425,-8497,-9756, -11036,-12026,-12407,-12151,-11590,-10948,-10166,-9118,-7761,-6235, -4660,-2889,-747,1564,3514,4701,5122,5168,5382,5982, 6764,7476,8007,8407,8935,9678,10261,10198,9425,8347, 7544,7163,6672,5375,3071,200,-2505,-4541,-5963,-7210, -8585,-10041,-11313,-12071,-12211,-11986,-11619,-11033,-10119,-8953, -7668,-6319,-4732,-2649,-217,2035,3665,4516,4791,5007, 5552,6314,7005,7467,7798,8340,9263,10151,10385,9833, 8898,8153,7864,7655,6840,5075,2542,-214,-2536,-4224, -5655,-7194,-8830,-10300,-11349,-11881,-12041,-11987,-11612,-10854, -9889,-8867,-7788,-6445,-4540,-2122,341,2350,3636,4222, 4543,5106,5922,6614,6996,7248,7742,8717,9825,10372, 10098,9333,8626,8363,8368,7985,6728,4618,2040,-406, -2337,-3951,-5643,-7432,-9074,-10372,-11271,-11842,-12112,-11973, -11405,-10633,-9845,-9026,-7978,-6399,-4161,-1610,727,2427, 3358,3882,4532,5407,6143,6483,6622,7045,8028,9245, 10059,10082,9518,8880,8600,8713,8697,7942,6294,4018, 1640,-414,-2219,-4068,-5966,-7722,-9201,-10422,-11402,-12064, -12232,-11873,-11268,-10662,-10073,-9351,-8158,-6212,-3686,-1136, 887,2172,2977,3806,4803,5608,5971,6077,6385,7268, 8549,9588,9919,9589,9019,8729,8902,9143,8811,7616, 5760,3639,1605,-319,-2310,-4307,-6126,-7749,-9226,-10532, -11574,-12141,-12108,-11681,-11191,-10772,-10360,-9620,-8068,-5693, -3063,-814,774,1885,2962,4141,5093,5540,5635,5834, 6563,7827,9071,9713,9629,9159,8841,9030,9445,9446, 8678,7260,5500,3629,1703,-352,-2430,-4326,-6050,-7717, -9300,-10675,-11652,-12014,-11824,-11433,-11143,-11011,-10697,-9615, -7552,-5007,-2671,-865,534,1868,3283,4458,5055,5198, 5317,5849,7000,8391,9328,9506,9164,8843,8989,9480, 9724,9345,8397,7050,5418,3585,1570,-519,-2487,-4306, -6089,-7865,-9557,-10956,-11743,-11834,-11552,-11361,-11441,-11490, -10883,-9246,-6936,-4640,-2712,-1084,485,2135,3603,4485, 4763,4817,5176,6187,7624,8792,9205,9023,8766,8874, 9336,9719,9664,9162,8253,6945,5312,3430,1400,-591, -2472,-4303,-6179,-8100,-9889,-11131,-11563,-11471,-11389,-11620, -11966,-11791,-10633,-8695,-6564,-4607,-2837,-1088,769,2530, 3765,4287,4370,4566,5389,6794,8116,8773,8790,8630, 8729,9148,9578,9728,9578,9091,8159,6814,5156,3238, 1265,-593,-2412,-4315,-6388,-8495,-10161,-10971,-11126,-11224, -11611,-12152,-12342,-11680,-10183,-8321,-6478,-4714,-2884,-852, 1224,2833,3649,3846,3983,4648,5943,7305,8151,8418, 8426,8511,8856,9318,9638,9743,9584,9045,8064,6650, 4899,3010,1210,-494,-2347,-4512,-6863,-8889,-10084,-10531, -10815,-11344,-12086,-12605,-12390,-11356,-9852,-8217,-6586,-4828, -2715,-365,1656,2829,3215,3385,3952,5118,6477,7472, 7982,8183,8296,8552,8996,9413,9690,9810,9628,9031, 7957,6391,4617,2966,1426,-316,-2495,-5002,-7329,-8904, -9677,-10169,-10824,-11692,-12490,-12732,-12143,-10999,-9684,-8300, -6726,-4670,-2159,203,1753,2442,2748,3268,4279,5571, 6696,7440,7855,8067,8276,8646,9101,9459,9739,9889, 9690,8961,7665,6047,4541,3220,1693,-398,-2983,-5544, -7476,-8620,-9343,-10122,-11111,-12123,-12723,-12566,-11786,-10815, -9814,-8541,-6665,-4138,-1528,405,1467,2010,2547,3444, 4661,5852,6760,7372,7735,8007,8341,8718,9086,9477, 9873,10056,9685,8650,7243,5913,4789,3513,1655,-824, -3526,-5805,-7317,-8319,-9258,-10386,-11620,-12541,-12759,-12345, -11730,-11115,-10223,-8625,-6226,-3517,-1244,250,1139,1795, 2604,3743,4981,6037,6825,7367,7763,8121,8443,8729, 9155,9766,10246,10203,9477,8293,7149,6223,5168,3574, 1325,-1348,-3887,-5762,-7023,-8143,-9440,-10882,-12078,-12609, -12533,-12286,-12071,-11597,-10394,-8283,-5620,-3105,-1231,14, 891,1710,2778,4015,5132,6062,6839,7440,7872,8142, 8346,8728,9443,10198,10462,10020,9105,8147,7389,6605, 5336,3362,812,-1841,-3984,-5476,-6773,-8265,-9903,-11300, -12095,-12325,-12394,-12537,-12497,-11799,-10163,-7749,-5138,-2930, -1350,-239,701,1759,2963,4106,5125,6087,6923,7497, 7762,7864,8184,8925,9820,10367,10248,9576,8778,8190, 7680,6806,5212,2878,241,-2038,-3720,-5170,-6828,-8678, -10301,-11329,-11812,-12141,-12568,-12914,-12757,-11710,-9709,-7194, -4798,-2913,-1528,-393,745,1934,3061,4132,5267,6359, 7122,7439,7495,7697,8382,9352,10105,10294,9907,9245, 8756,8518,8058,6854,4812,2315,-4,-1798,-3391,-5179, -7146,-8970,-10270,-11014,-11540,-12181,-12860,-13204,-12792,-11360, -9126,-6727,-4642,-2972,-1598,-323,897,1995,3064,4308, 5616,6611,7095,7194,7304,7862,8830,9757,10234,10084, 9554,9158,9114,9009,8223,6523,4259,2030,185,-1474, -3351,-5450,-7437,-8989,-9997,-10701,-11490,-12437,-13229,-13417, -12625,-10868,-8682,-6563,-4662,-2999,-1544,-282,809,1882, 3169,4634,5858,6537,6764,6857,7249,8144,9196,9917, 10014,9610,9261,9361,9564,9172,7870,5907,3827,2015, 368,-1482,-3638,-5827,-7651,-8923,-9800,-10689,-11822,-12971, -13665,-13497,-12345,-10545,-8540,-6538,-4628,-2951,-1580,-474, 607,1919,3462,4908,5880,6283,6381,6654,7442,8543, 9406,9694,9450,9180,9368,9785,9750,8876,7308,5481, 3766,2150,358,-1747,-4027,-6116,-7670,-8724,-9701,-10945, -12332,-13433,-13809,-13306,-12088,-10419,-8444,-6361,-4470,-2955, -1762,-670,629,2223,3842,5098,5762,5947,6139,6830, 7963,8951,9354,9250,9072,9283,9834,10109,9637,8476, 6956,5428,3958,2285,249,-2045,-4289,-6088,-7328,-8399, -9734,-11291,-12681,-13532,-13648,-13078,-11924,-10215,-8138,-6092, -4394,-3078,-1961,-721,878,2689,4226,5135,5441,5620, 6251,7374,8445,8992,9025,8943,9161,9730,10226,10145, 9390,8196,6888,5605,4142,2237,-49,-2368,-4333,-5761, -6937,-8336,-9999,-11582,-12811,-13519,-13577,-12992,-11731,-9847, -7753,-5904,-4447,-3284,-2100,-545,1372,3182,4369,4858, 5074,5646,6751,7888,8540,8701,8713,8950,9516,10116, 10325,9941,9083,8046,7024,5829,4133,1923,-452,-2544, -4133,-5454,-6904,-8571,-10260,-11764,-12924,-13583,-13608,-12901, -11449,-9475,-7496,-5903,-4696,-3563,-2062,-85,1897,3327, 4044,4394,4972,6022,7185,7972,8264,8329,8562,9120, 9811,10244,10129,9549,8806,8084,7209,5779,3744,1455, -695,-2470,-3946,-5450,-7123,-8835,-10494,-12023,-13181,-13778, -13691,-12783,-11133,-9166,-7440,-6200,-5138,-3709,-1716,407, 2055,3021,3548,4160,5199,6410,7317,7769,7916,8098, 8622,9389,9985,10105,9756,9263,8851,8308,7204,5417, 3280,1172,-701,-2320,-3869,-5532,-7269,-9001,-10701,-12241, -13403,-13956,-13649,-12412,-10621,-8908,-7637,-6629,-5307,-3366, -1155,694,1904,2648,3337,4366,5645,6712,7312,7543, 7714,8202,9023,9730,9991,9851,9574,9395,9169,8441, 6991,5082,3057,1129,-611,-2203,-3824,-5532,-7277,-9045, -10797,-12414,-13623,-13975,-13244,-11761,-10174,-8943,-7987,-6787, -4961,-2740,-742,692,1656,2443,3442,4769,6024,6780, 7082,7261,7735,8591,9391,9751,9757,9680,9689,9702, 9333,8296,6705,4829,2914,1125,-536,-2177,-3862,-5544, -7274,-9148,-11102,-12861,-13893,-13764,-12696,-11354,-10233,-9344, -8282,-6628,-4476,-2356,-693,452,1355,2408,3768,5148, 6094,6501,6718,7188,8022,8867,9335,9457,9508,9654, 9855,9836,9248,8030,6402,4592,2814,1137,-548,-2244, -3842,-5450,-7322,-9502,-11704,-13330,-13827,-13256,-12249,-11326, -10568,-9690,-8271,-6242,-4044,-2194,-857,139,1229,2682, 4220,5329,5906,6234,6723,7520,8355,8908,9149,9277, 9479,9795,10048,9871,9061,7747,6181,4505,2792,1051, -658,-2168,-3569,-5291,-7552,-10062,-12189,-13305,-13291,-12684, -12014,-11456,-10848,-9731,-7885,-5693,-3717,-2235,-1128,21, 1515,3153,4433,5171,5650,6207,6985,7845,8484,8823, 9017,9240,9599,10038,10202,9783,8849,7594,6113,4441, 2619,844,-623,-1834,-3311,-5483,-8135,-10646,-12356,-12962, -12807,-12437,-12100,-11742,-11014,-9481,-7352,-5326,-3764,-2547, -1320,215,1921,3346,4276,4900,5517,6288,7174,7927, 8360,8596,8858,9257,9782,10171,10097,9559,8723,7547, 5963,4100,2261,796,-299,-1522,-3423,-6041,-8831,-11062, -12292,-12630,-12595,-12549,-12490,-12095,-10937,-9047,-7044,-5406, -4089,-2785,-1214,544,2112,3261,4073,4765,5553,6481, 7314,7834,8118,8400,8838,9411,9907,10071,9894,9482, 8705,7364,5559,3674,2150,1116,121,-1440,-3793,-6666, -9334,-11126,-11968,-12312,-12599,-12879,-12836,-12050,-10485,-8644, -7020,-5626,-4240,-2667,-882,828,2182,3189,4001,4823, 5793,6733,7343,7677,8018,8504,9078,9579,9864,9977, 9987,9642,8622,6984,5127,3517,2440,1627,420,-1589, -4322,-7224,-9483,-10781,-11522,-12179,-12829,-13149,-12746,-11577, -10004,-8473,-7089,-5693,-4124,-2346,-542,985,2151,3110, 4039,5077,6114,6823,7219,7631,8171,8739,9219,9552, 9842,10171,10260,9670,8314,6555,4879,3685,2939,2049, 414,-2070,-4954,-7494,-9202,-10314,-11325,-12329,-13029,-13072, -12366,-11144,-9794,-8494,-7165,-5659,-3897,-2028,-381,904, 1979,3051,4198,5310,6147,6660,7136,7731,8293,8706, 9039,9439,9983,10419,10292,9345,7772,6091,4812,4071, 3410,2146,-18,-2762,-5384,-7405,-8900,-10243,-11561,-12634, -13114,-12863,-12047,-10974,-9849,-8653,-7247,-5543,-3654,-1914, -526,662,1878,3152,4356,5279,5923,6533,7204,7778, 8178,8476,8868,9498,10214,10540,10076,8792,7134,5779, 5046,4553,3610,1823,-654,-3251,-5450,-7234,-8888,-10512, -11931,-12861,-13080,-12650,-11885,-11008,-10030,-8798,-7160,-5255, -3475,-2027,-737,616,2015,3308,4358,5147,5876,6654, 7314,7735,8012,8350,8970,9848,10580,10614,9712,8183, 6754,5963,5572,4887,3467,1348,-1088,-3356,-5292,-7132, -9014,-10758,-12115,-12805,-12789,-12365,-11814,-11112,-10101,-8636, -6810,-4998,-3473,-2107,-660,841,2217,3377,4325,5191, 6083,6859,7367,7636,7849,8356,9331,10385,10877,10403, 9154,7769,6882,6487,5983,4883,3134,970,-1230,-3248, -5186,-7225,-9281,-11033,-12171,-12570,-12492,-12283,-11925,-11177, -9935,-8296,-6570,-5009,-3557,-2023,-449,992,2240,3317, 4322,5334,6268,6921,7219,7338,7680,8599,9873,10768, 10749,9845,8624,7721,7300,6913,6070,4667,2806,751, -1212,-3143,-5243,-7501,-9612,-11176,-12019,-12350,-12489,-12453, -12015,-11037,-9631,-8077,-6562,-5065,-3485,-1869,-336,1023, 2194,3295,4461,5598,6434,6799,6841,7035,7845,9174, 10357,10757,10256,9265,8383,7924,7630,7040,5924,4358, 2564,756,-1074,-3151,-5492,-7829,-9755,-11037,-11818,-12374, -12705,-12592,-11932,-10839,-9489,-8067,-6603,-5017,-3354,-1754, -306,943,2116,3417,4790,5876,6379,6389,6432,7065, 8357,9721,10479,10394,9692,8882,8390,8149,7761,6923, 5612,4070,2529,893,-1101,-3471,-5912,-8049,-9679,-10885, -11863,-12580,-12839,-12552,-11807,-10740,-9485,-8130,-6602,-4895, -3213,-1728,-457,746,2146,3745,5122,5846,5944,5897, 6331,7481,8915,9970,10283,9923,9265,8781,8596,8355, 7718,6670,5381,4085,2718,912,-1398,-3870,-6140,-8046, -9610,-10939,-12016,-12652,-12740,-12365,-11618,-10619,-9452,-8063, -6396,-4636,-3081,-1822,-646,797,2570,4226,5249,5524, 5471,5728,6668,8075,9343,9983,9940,9509,9127,9001, 8885,8413,7535,6496,5466,4337,2793,689,-1699,-4020, -6125,-7970,-9619,-11070,-12124,-12613,-12586,-12182,-11512,-10621, -9417,-7823,-6045,-4457,-3202,-2055,-633,1238,3163,4503, 5056,5096,5191,5894,7194,8585,9516,9756,9536,9298, 9260,9226,8881,8190,7362,6551,5663,4393,2586,383, -1915,-4101,-6112,-7971,-9731,-11207,-12135,-12497,-12451,-12146, -11623,-10707,-9242,-7472,-5855,-4614,-3532,-2179,-321,1797, 3515,4422,4652,4683,5132,6277,7708,8833,9353,9390, 9325,9400,9448,9196,8654,8002,7361,6689,5708,4224, 2303,138,-2056,-4157,-6172,-8141,-9946,-11274,-12011,-12348, -12443,-12298,-11740,-10535,-8851,-7245,-6011,-4983,-3760,-2006, 167,2202,3535,4054,4140,4416,5345,6749,7998,8720, 9027,9195,9398,9541,9406,8990,8486,7986,7466,6759, 5618,3997,2077,11,-2088,-4205,-6374,-8451,-10114,-11202, -11897,-12410,-12679,-12473,-11574,-10082,-8503,-7259,-6314,-5249, -3681,-1553,703,2429,3301,3539,3777,4546,5816,7085, 7991,8524,8908,9262,9501,9490,9215,8823,8450,8110, 7633,6785,5451,3791,1977,19,-2110,-4404,-6689,-8612, -10005,-11045,-11948,-12649,-12888,-12376,-11145,-9669,-8416,-7489, -6628,-5311,-3280,-895,1150,2371,2860,3176,3855,4977, 6188,7182,7921,8489,8982,9378,9515,9357,9078,8798, 8568,8315,7738,6671,5267,3733,2029,22,-2292,-4713, -6845,-8473,-9784,-11043,-12177,-12868,-12843,-12008,-10691,-9469, -8595,-7901,-6890,-5083,-2670,-388,1184,1998,2472,3136, 4155,5274,6277,7134,7881,8536,9079,9388,9367,9148, 8960,8844,8735,8390,7591,6462,5220,3802,1997,-229, -2661,-4930,-6765,-8299,-9809,-11306,-12483,-12967,-12581,-11520, -10345,-9527,-9000,-8268,-6778,-4514,-2125,-272,906,1662, 2372,3307,4381,5382,6283,7125,7937,8672,9158,9259, 9108,8996,9000,8998,8805,8255,7414,6474,5360,3817, 1758,-610,-2913,-4896,-6607,-8283,-10051,-11700,-12757,-12874, -12130,-11083,-10319,-9916,-9421,-8270,-6301,-3959,-1896,-405, 635,1527,2480,3516,4510,5417,6299,7211,8123,8801, 9047,8999,8954,9039,9146,9058,8662,8064,7435,6646, 5408,3632,1442,-850,-2912,-4716,-6496,-8429,-10449,-12091, -12759,-12413,-11610,-10966,-10672,-10387,-9559,-7935,-5804,-3682, -1931,-600,491,1554,2631,3630,4534,5432,6409,7439, 8300,8718,8768,8815,9007,9185,9169,8901,8479,8077, 7585,6687,5227,3300,1133,-934,-2736,-4515,-6566,-8838, -10931,-12196,-12337,-11809,-11346,-11214,-11135,-10630,-9386,-7508, -5451,-3583,-2027,-722,499,1681,2704,3583,4495,5544, 6701,7709,8283,8491,8648,8913,9166,9220,9042,8752, 8500,8263,7740,6651,4961,2936,954,-784,-2494,-4542, -6981,-9412,-11180,-11878,-11754,-11485,-11464,-11577,-11413,-10579, -9038,-7150,-5296,-3614,-2104,-691,619,1714,2595,3493, 4582,5811,6946,7708,8083,8370,8738,9049,9168,9077, 8867,8713,8669,8479,7784,6420,4563,2685,1091,-461, -2428,-4927,-7603,-9818,-11061,-11403,-11395,-11496,-11759,-11884, -11447,-10285,-8645,-6915,-5252,-3626,-2022,-525,679,1584, 2483,3608,4876,6057,6957,7536,7968,8411,8808,9020, 9013,8865,8750,8827,8934,8613,7578,5967,4230,2784, 1460,-291,-2712,-5509,-8088,-9872,-10706,-11023,-11308,-11704, -12074,-12035,-11290,-9985,-8478,-6908,-5242,-3497,-1835,-484, 503,1438,2580,3878,5120,6134,6857,7408,7974,8496, 8818,8876,8734,8635,8805,9122,9111,8409,7085,5553, 4232,3102,1647,-514,-3241,-6016,-8228,-9567,-10259,-10769, -11363,-11944,-12221,-11898,-11010,-9841,-8488,-6894,-5099,-3319, -1819,-674,334,1488,2791,4079,5211,6089,6777,7434, 8108,8607,8755,8621,8487,8676,9143,9396,9003,7961, 6644,5485,4545,3387,1556,-957,-3774,-6302,-8073,-9151, -9944,-10750,-11535,-12063,-12100,-11635,-10848,-9778,-8343,-6610, -4829,-3240,-1938,-802,399,1713,3025,4237,5223,6017, 6809,7646,8321,8599,8498,8350,8532,9078,9536,9418, 8662,7558,6531,5768,4929,3492,1279,-1464,-4197,-6339, -7786,-8884,-9936,-10931,-11685,-12050,-12006,-11631,-10903,-9691, -8083,-6340,-4700,-3290,-2065,-836,527,1921,3199,4259, 5116,5998,7009,7870,8296,8272,8123,8257,8807,9432, 9602,9113,8204,7290,6657,6128,5136,3318,790,-1959, -4357,-6167,-7601,-8908,-10090,-11030,-11671,-12027,-12095,-11754, -10869,-9496,-7853,-6195,-4709,-3427,-2182,-803,692,2068, 3183,4107,5073,6231,7325,7947,8014,7866,7943,8452, 9151,9555,9350,8641,7817,7266,6963,6383,5011,2832, 251,-2215,-4297,-6075,-7657,-9020,-10131,-10991,-11634,-12075, -12185,-11735,-10689,-9256,-7670,-6160,-4860,-3597,-2163,-615, 842,2020,2972,4008,5300,6592,7452,7721,7632,7643, 8070,8813,9420,9491,8987,8253,7756,7605,7350,6404, 4637,2351,-52,-2275,-4296,-6151,-7740,-9018,-10076,-10976, -11697,-12182,-12212,-11588,-10414,-8974,-7527,-6233,-4998,-3550, -1915,-397,841,1843,2878,4232,5713,6827,7337,7380, 7372,7706,8450,9213,9512,9215,8612,8178,8116,8091, 7550,6237,4334,2140,-124,-2312,-4374,-6205,-7707,-8958, -10054,-11028,-11863,-12334,-12171,-11330,-10094,-8785,-7560,-6329, -4902,-3243,-1641,-356,687,1768,3131,4711,6081,6871, 7093,7079,7335,8081,8956,9415,9290,8819,8436,8396, 8509,8306,7485,6054,4167,2027,-204,-2415,-4473,-6216, -7647,-8902,-10067,-11190,-12110,-12418,-11980,-11045,-9948,-8875, -7749,-6335,-4656,-3016,-1657,-574,482,1829,3495,5110, 6200,6614,6655,6850,7547,8504,9145,9195,8869,8547, 8490,8634,8654,8260,7334,5869,3976,1842,-412,-2627, -4596,-6233,-7627,-8957,-10310,-11557,-12329,-12338,-11758,-10955, -10088,-9103,-7804,-6145,-4448,-3026,-1901,-859,421,2117, 3934,5334,6023,6183,6363,7007,7975,8741,8993,8838, 8589,8511,8654,8812,8718,8220,7224,5713,3807,1620, -682,-2814,-4616,-6148,-7614,-9181,-10728,-11860,-12291,-12127, -11676,-11083,-10299,-9157,-7607,-5887,-4358,-3172,-2166,-959, 718,2677,4339,5302,5674,5927,6525,7483,8357,8793, 8817,8650,8550,8675,8898,8989,8803,8234,7202,5667, 3655,1354,-894,-2819,-4449,-6016,-7723,-9494,-10967,-11812, -12054,-11964,-11707,-11233,-10359,-8969,-7276,-5685,-4441,-3465, -2354,-721,1317,3179,4406,5022,5406,5976,6886,7853, 8486,8700,8652,8563,8634,8872,9080,9106,8885,8298, 7224,5540,3347,1083,-905,-2630,-4308,-6116,-8039,-9773, -10991,-11647,-11928,-12002,-11876,-11354,-10218,-8603,-6977,-5700, -4774,-3802,-2297,-245,1797,3289,4171,4742,5349,6217, 7215,8010,8433,8545,8515,8559,8755,8984,9142,9200, 9036,8414,7137,5215,3016,1006,-760,-2523,-4421,-6440, -8389,-9920,-10915,-11550,-11986,-12255,-12156,-11365,-9895,-8277, -6999,-6094,-5214,-3894,-1954,189,1944,3118,3898,4593, 5471,6516,7437,8035,8310,8400,8475,8623,8794,8980, 9223,9404,9208,8358,6829,4878,2901,1108,-655,-2581, -4677,-6774,-8570,-9850,-10754,-11521,-12206,-12560,-12185,-10993, -9456,-8177,-7305,-6511,-5349,-3602,-1484,468,1912,2919, 3747,4647,5724,6776,7542,7985,8228,8380,8492,8577, 8725,9066,9500,9672,9247,8109,6477,4700,2973,1243, -646,-2772,-4998,-7003,-8513,-9649,-10702,-11755,-12566,-12657, -11825,-10486,-9258,-8389,-7678,-6702,-5151,-3153,-1124,556, 1779,2742,3730,4855,5974,6889,7536,7976,8262,8396, 8392,8440,8785,9388,9856,9823,9121,7824,6269,4714, 3125,1315,-808,-3132,-5290,-6978,-8292,-9585,-10978,-12195, -12770,-12398,-11342,-10225,-9407,-8765,-7964,-6672,-4823,-2782, -970,462,1596,2686,3886,5067,6074,6899,7579,8055, 8252,8235,8192,8427,9033,9715,10050,9773,8855,7560, 6233,4881,3239,1171,-1182,-3448,-5268,-6718,-8187,-9837, -11438,-12504,-12644,-11962,-11019,-10261,-9716,-9104,-8052,-6410, -4441,-2571,-1004,320,1563,2835,4074,5164,6144,7043, 7737,8086,8096,7992,8095,8599,9356,9970,10073,9532, 8528,7444,6376,5016,3089,754,-1572,-3507,-5046,-6599, -8432,-10326,-11832,-12536,-12344,-11652,-10985,-10524,-10098,-9325, -7939,-6104,-4235,-2586,-1108,298,1662,2940,4105,5224, 6325,7252,7812,7967,7857,7813,8175,8929,9728,10136, 9923,9235,8427,7627,6581,4947,2744,403,-1609,-3249, -4850,-6732,-8823,-10724,-11958,-12286,-11940,-11453,-11109,-10837, -10323,-9255,-7664,-5901,-4209,-2610,-1078,375,1719,2955, 4175,5428,6580,7417,7798,7764,7602,7768,8446,9331, 9952,10035,9657,9134,8631,7896,6579,4624,2383,312, -1387,-2993,-4877,-7081,-9278,-10985,-11837,-11903,-11664,-11500, -11393,-11086,-10322,-9051,-7497,-5847,-4169,-2529,-1011,374, 1667,2965,4333,5705,6846,7508,7632,7451,7445,7971, 8831,9567,9868,9756,9523,9331,8916,7925,6282,4217, 2164,422,-1152,-2972,-5197,-7596,-9707,-11041,-11536,-11609, -11671,-11749,-11643,-11156,-10223,-8948,-7455,-5786,-4065,-2461, -1004,324,1616,3030,4590,6037,7029,7380,7255,7162, 7558,8359,9123,9541,9648,9647,9701,9636,9033,7726, 5904,3960,2243,724,-983,-3161,-5664,-8034,-9797,-10762, -11204,-11524,-11795,-11886,-11689,-11114,-10140,-8862,-7334,-5636, -3939,-2388,-1027,241,1659,3310,4999,6328,6976,7026, 6933,7214,7916,8634,9102,9344,9531,9797,10019,9793, 8872,7336,5539,3896,2483,919,-1148,-3642,-6152,-8228, -9644,-10521,-11132,-11605,-11914,-11988,-11741,-11119,-10132,-8803, -7206,-5499,-3873,-2459,-1230,106,1817,3709,5317,6298, 6637,6679,6916,7510,8188,8644,8920,9209,9634,10102, 10245,9720,8509,6926,5397,4099,2724,843,-1556,-4113, -6409,-8194,-9480,-10421,-11138,-11656,-11980,-12050,-11765,-11109, -10076,-8653,-6975,-5300,-3853,-2659,-1429,220,2240,4117, 5410,6053,6313,6610,7149,7774,8231,8506,8784,9276, 9958,10433,10282,9424,8112,6759,5602,4416,2782,589, -1915,-4372,-6484,-8120,-9381,-10385,-11151,-11714,-12059,-12117, -11842,-11172,-9994,-8396,-6702,-5229,-4055,-2912,-1389,629, 2709,4312,5276,5799,6213,6767,7398,7856,8093,8301, 8763,9567,10356,10562,10021,9005,7877,6859,5867,4519, 2603,248,-2247,-4568,-6525,-8112,-9407,-10445,-11227,-11802, -12180,-12310,-12064,-11237,-9819,-8165,-6698,-5529,-4447,-3040, -1098,1068,2950,4269,5081,5686,6344,7043,7552,7770, 7884,8249,9065,10051,10609,10439,9716,8788,7919,7097, 6028,4467,2387,-32,-2470,-4645,-6504,-8097,-9423,-10424, -11185,-11826,-12346,-12555,-12122,-10977,-9448,-8007,-6876,-5869, -4598,-2808,-645,1405,3023,4161,5003,5831,6678,7271, 7478,7508,7759,8492,9554,10382,10574,10191,9506,8780, 8118,7309,6076,4343,2169,-244,-2572,-4666,-6536,-8121, -9355,-10310,-11172,-12019,-12656,-12692,-11902,-10577,-9217,-8108, -7186,-6089,-4476,-2401,-269,1543,2934,4035,5088,6142, 6917,7201,7181,7288,7864,8888,9906,10442,10391,9951, 9397,8892,8335,7423,5994,4126,1944,-404,-2697,-4825, -6676,-8109,-9219,-10277,-11411,-12434,-12945,-12614,-11581,-10367, -9318,-8451,-7531,-6155,-4202,-2030,-107,1436,2777,4095, 5394,6394,6842,6884,6915,7307,8191,9269,10061,10334, 10170,9797,9439,9079,8454,7359,5822,3950,1794,-576, -2938,-5021,-6649,-7915,-9117,-10454,-11803,-12768,-12949,-12309, -11278,-10328,-9579,-8816,-7667,-5922,-3843,-1872,-218,1262, 2805,4382,5676,6382,6558,6567,6814,7525,8570,9525, 10061,10143,9973,9785,9600,9205,8421,7248,5728,3843, 1583,-892,-3201,-5019,-6420,-7746,-9235,-10830,-12196,-12883, -12704,-11952,-11121,-10501,-9940,-9016,-7495,-5555,-3630,-1950, -388,1287,3091,4702,5740,6161,6239,6381,6925,7881, 8899,9627,9965,10019,9978,9936,9735,9235,8433,7311, 5748,3684,1253,-1185,-3227,-4793,-6202,-7768,-9542,-11254, -12423,-12715,-12313,-11712,-11227,-10830,-10162,-8885,-7137,-5319, -3650,-2055,-333,1599,3493,4921,5661,5896,6017,6407, 7229,8235,9049,9557,9854,10027,10103,10031,9744,9267, 8563,7405,5630,3359,917,-1288,-3023,-4494,-6102,-7993, -9959,-11554,-12334,-12314,-11981,-11729,-11518,-11059,-10066,-8571, -6913,-5331,-3770,-2057,-77,2027,3820,4946,5443,5654, 5981,6658,7570,8403,9030,9508,9877,10095,10136,10010, 9793,9446,8718,7348,5321,2939,652,-1213,-2744,-4325, -6256,-8436,-10384,-11605,-12022,-12021,-12007,-12021,-11814,-11102, -9869,-8418,-6978,-5520,-3900,-1946,289,2390,3917,4755, 5155,5521,6132,6928,7708,8392,9030,9554,9899,10052, 10050,10020,9982,9675,8752,7084,4865,2556,594,-974, -2532,-4449,-6713,-8917,-10542,-11393,-11766,-12043,-12291,-12326, -11918,-10984,-9740,-8460,-7183,-5736,-3907,-1647,704,2586, 3778,4470,4975,5561,6271,6997,7709,8439,9102,9562, 9802,9896,9981,10160,10242,9804,8584,6649,4403,2397, 820,-685,-2560,-4852,-7220,-9152,-10409,-11155,-11725,-12243, -12556,-12444,-11808,-10792,-9691,-8622,-7409,-5785,-3629,-1185, 1002,2573,3608,4360,5014,5680,6350,7033,7821,8614, 9210,9548,9693,9825,10129,10514,10548,9820,8248,6187, 4204,2617,1184,-584,-2841,-5295,-7473,-9084,-10202,-11083, -11863,-12481,-12699,-12377,-11606,-10695,-9836,-8892,-7532,-5561, -3164,-818,1083,2485,3546,4383,5083,5719,6375,7150, 8000,8745,9217,9410,9544,9908,10507,10932,10688,9555, 7767,5883,4328,2969,1357,-756,-3197,-5551,-7454,-8886, -10065,-11131,-12058,-12641,-12637,-12110,-11429,-10823,-10148,-9088, -7410,-5178,-2803,-680,1065,2460,3528,4363,5055,5699, 6440,7330,8185,8771,9033,9150,9487,10231,10991,11170, 10488,9080,7398,5908,4625,3163,1256,-1067,-3499,-5630, -7303,-8727,-10081,-11330,-12244,-12566,-12317,-11857,-11484,-11090, -10341,-9024,-7110,-4840,-2612,-624,1092,2473,3520,4326, 5008,5753,6654,7596,8316,8634,8714,9002,9766,10740, 11315,11071,10068,8672,7304,6104,4806,3101,962,-1427, -3693,-5557,-7169,-8781,-10349,-11601,-12268,-12328,-12110,-11932, -11770,-11343,-10393,-8850,-6859,-4669,-2513,-537,1156,2469, 3432,4179,4937,5894,6951,7781,8187,8260,8443,9148, 10231,11106,11291,10711,9640,8469,7398,6270,4793,2836, 566,-1686,-3658,-5416,-7217,-9059,-10624,-11626,-12021,-12066, -12093,-12148,-12013,-11465,-10347,-8674,-6671,-4529,-2368,-381, 1239,2417,3259,4055,5071,6250,7234,7731,7832,7940, 8505,9576,10666,11235,11076,10345,9394,8502,7599,6351, 4596,2475,305,-1656,-3492,-5436,-7477,-9335,-10696,-11438, -11742,-11944,-12181,-12321,-12138,-11464,-10231,-8540,-6535,-4325, -2114,-189,1243,2220,3067,4145,5456,6612,7245,7404, 7467,7887,8847,10035,10915,11156,10763,10075,9410,8729, 7725,6199,4248,2187,280,-1521,-3506,-5698,-7797,-9508, -10642,-11250,-11640,-12055,-12418,-12534,-12245,-11472,-10205,-8507, -6405,-4058,-1878,-186,984,1910,3028,4452,5806,6671, 6970,7010,7276,8080,9281,10364,10921,10873,10457,10031, 9614,8882,7599,5873,3991,2174,426,-1496,-3712,-5986, -7980,-9485,-10435,-11056,-11637,-12191,-12561,-12623,-12285,-11503, -10228,-8380,-6057,-3703,-1778,-401,676,1863,3347,4887, 6024,6549,6644,6776,7397,8527,9735,10544,10784,10651, 10468,10290,9820,8822,7361,5675,3994,2349,538,-1606, -3965,-6191,-8003,-9289,-10190,-10965,-11692,-12245,-12546,-12595, -12313,-11542,-10087,-7974,-5607,-3507,-1917,-696,552,2103, 3793,5191,6005,6255,6329,6768,7758,8966,9931,10427, 10565,10608,10645,10446,9751,8565,7108,5572,4043,2392, 409,-1877,-4210,-6278,-7900,-9101,-10103,-11003,-11715,-12216, -12568,-12745,-12507,-11540,-9768,-7540,-5377,-3611,-2233,-944, 605,2422,4102,5214,5682,5825,6153,6993,8132,9139, 9801,10165,10440,10693,10743,10348,9474,8264,6925,5565, 4087,2278,115,-2203,-4397,-6271,-7802,-9101,-10181,-11000, -11645,-12258,-12813,-13079,-12681,-11372,-9379,-7244,-5373,-3868, -2535,-980,922,2835,4273,5014,5288,5596,6297,7326, 8342,9121,9663,10118,10576,10899,10809,10224,9270,8135, 6965,5698,4098,2083,-162,-2380,-4446,-6278,-7857,-9177, -10156,-10902,-11661,-12488,-13171,-13338,-12623,-11018,-9003,-7097, -5529,-4191,-2660,-694,1419,3152,4198,4684,5044,5672, 6588,7537,8347,9023,9631,10253,10814,11025,10732,10029, 9125,8164,7110,5734,3928,1841,-312,-2426,-4469,-6353, -7914,-9069,-9929,-10786,-11797,-12818,-13493,-13405,-12337,-10592, -8755,-7185,-5845,-4385,-2450,-197,1806,3187,3955,4453, 5072,5912,6816,7617,8312,9006,9767,10517,11007,10989, 10527,9863,9139,8306,7158,5586,3711,1703,-389,-2535, -4628,-6463,-7845,-8829,-9729,-10808,-12060,-13192,-13713,-13230, -11888,-10242,-8762,-7478,-6094,-4253,-1983,234,1943,3048, 3759,4427,5253,6128,6904,7593,8296,9134,10058,10772, 11016,10832,10413,9902,9279,8371,7060,5432,3618,1639, -522,-2752,-4811,-6464,-7638,-8590,-9682,-11056,-12506,-13545, -13663,-12823,-11506,-10207,-9047,-7793,-6090,-3891,-1590,369, 1805,2801,3614,4471,5364,6139,6795,7490,8349,9358, 10262,10757,10836,10687,10411,9973,9293,8276,6950,5391, 3585,1497,-783,-3020,-4923,-6307,-7330,-8413,-9840,-11508, -12962,-13630,-13315,-12404,-11403,-10447,-9369,-7885,-5838,-3503, -1375,323,1603,2639,3648,4616,5393,6015,6686,7552, 8610,9623,10316,10647,10756,10703,10463,9991,9235,8204, 6938,5399,3491,1246,-1118,-3253,-4858,-5979,-7037,-8453, -10257,-12029,-13180,-13404,-12936,-12253,-11565,-10749,-9519,-7701, -5459,-3212,-1295,230,1509,2714,3840,4699,5293,5906, 6745,7801,8885,9741,10275,10605,10780,10740,10470,9949, 9182,8202,6971,5351,3266,870,-1468,-3315,-4554,-5598, -6962,-8787,-10771,-12338,-13072,-13077,-12751,-12355,-11846,-10967, -9461,-7398,-5168,-3137,-1402,120,1567,2891,3894,4558, 5149,5921,6922,8015,8985,9716,10244,10617,10789,10725, 10409,9865,9179,8301,7038,5207,2866,418,-1650,-3083, -4147,-5422,-7199,-9284,-11154,-12336,-12796,-12844,-12764,-12591, -12100,-10983,-9197,-7104,-5069,-3211,-1470,225,1772,2964, 3753,4389,5143,6077,7129,8168,9045,9752,10326,10723, 10862,10733,10384,9931,9399,8534,7033,4874,2383,153, -1462,-2609,-3817,-5487,-7582,-9690,-11263,-12128,-12550,-12796, -12946,-12843,-12164,-10767,-8922,-6992,-5093,-3197,-1307,466, 1889,2875,3605,4337,5219,6223,7263,8225,9062,9811, 10412,10759,10804,10609,10354,10134,9689,8601,6712,4318, 1981,189,-1055,-2208,-3738,-5768,-7987,-9866,-11103,-11857, -12450,-12964,-13227,-12956,-12001,-10538,-8852,-7037,-5082,-3043, -1101,574,1834,2740,3524,4367,5310,6309,7286,8205, 9093,9899,10443,10630,10548,10434,10460,10417,9805,8325, 6143,3789,1826,440,-697,-2087,-3966,-6201,-8296,-9821, -10865,-11753,-12591,-13222,-13361,-12856,-11831,-10479,-8861,-6985, -4922,-2837,-953,569,1735,2670,3545,4464,5419,6367, 7300,8293,9294,10059,10412,10422,10392,10580,10858,10723, 9733,7880,5611,3526,1986,808,-479,-2215,-4351,-6524, -8310,-9632,-10776,-11888,-12818,-13339,-13288,-12722,-11789,-10508, -8826,-6838,-4716,-2646,-880,512,1653,2666,3625,4552, 5434,6338,7400,8563,9531,10064,10185,10196,10462,10977, 11272,10818,9408,7340,5221,3551,2326,1100,-514,-2539, -4668,-6562,-8137,-9537,-10878,-12075,-12936,-13316,-13205,-12710, -11845,-10515,-8731,-6658,-4515,-2539,-907,438,1652,2737, 3676,4499,5341,6402,7681,8853,9569,9815,9879,10145, 10768,11422,11499,10612,8862,6823,5096,3808,2618,1121, -775,-2835,-4759,-6454,-8057,-9620,-11040,-12194,-12957,-13278, -13223,-12809,-11923,-10479,-8564,-6422,-4344,-2532,-958,479, 1756,2785,3593,4367,5371,6701,8032,8960,9367,9483, 9714,10368,11270,11803,11449,10138,8300,6587,5263,4067, 2648,900,-1039,-2945,-4705,-6401,-8115,-9732,-11134,-12226, -12929,-13279,-13311,-12914,-11923,-10325,-8321,-6237,-4323,-2587, -916,600,1779,2639,3390,4308,5599,7063,8228,8834, 9005,9178,9771,10799,11722,11891,11083,9589,7998,6678, 5498,4146,2515,698,-1151,-2932,-4671,-6459,-8226,-9823, -11159,-12183,-12903,-13367,-13460,-12951,-11769,-10076,-8144,-6218, -4351,-2494,-743,669,1654,2417,3271,4468,5975,7357, 8205,8500,8630,9152,10213,11361,11967,11687,10651,9301, 8029,6873,5593,4090,2409,642,-1118,-2878,-4699,-6563, -8327,-9859,-11119,-12150,-13012,-13584,-13579,-12857,-11565,-9933, -8126,-6216,-4217,-2263,-620,573,1417,2211,3330,4845, 6387,7461,7907,8053,8473,9482,10766,11698,11887,11329, 10329,9215,8102,6902,5508,3934,2272,603,-1085,-2907, -4827,-6680,-8346,-9796,-11078,-12260,-13236,-13716,-13501,-12680, -11442,-9908,-8108,-6064,-3940,-2035,-612,330,1110,2152, 3651,5321,6613,7248,7439,7773,8657,9937,11089,11689, 11606,11004,10146,9179,8073,6786,5326,3774,2216,634, -1107,-3042,-4963,-6704,-8277,-9753,-11183,-12488,-13398,-13676, -13369,-12587,-11429,-9925,-8010,-5788,-3637,-1932,-791,-2, 956,2435,4192,5663,6512,6838,7128,7873,9081,10337, 11239,11600,11422,10885,10153,9224,8043,6667,5218,3776, 2301,645,-1249,-3198,-4982,-6620,-8235,-9859,-11414,-12670, -13396,-13573,-13290,-12595,-11477,-9859,-7739,-5448,-3480,-2116, -1200,-269,1131,2926,4585,5659,6171,6513,7119,8181, 9454,10544,11224,11443,11262,10817,10131,9141,7902,6565, 5222,3840,2289,479,-1429,-3221,-4871,-6528,-8256,-9996, -11555,-12669,-13265,-13456,-13284,-12672,-11478,-9614,-7331,-5183, -3608,-2553,-1590,-244,1541,3320,4636,5376,5798,6343, 7271,8494,9688,10595,11127,11311,11189,10761,9980,8919, 7752,6556,5278,3820,2122,276,-1501,-3151,-4797,-6546, -8387,-10162,-11590,-12566,-13176,-13497,-13451,-12792,-11312,-9172, -6943,-5171,-3951,-2942,-1644,120,2004,3531,4518,5081, 5581,6396,7548,8769,9825,10603,11123,11363,11234,10691, 9828,8822,7776,6637,5303,3714,1953,219,-1402,-3021, -4764,-6646,-8568,-10255,-11513,-12467,-13237,-13740,-13661,-12676, -10842,-8672,-6775,-5408,-4311,-3044,-1358,589,2329,3549, 4294,4843,5561,6617,7813,8923,9877,10647,11208,11419, 11150,10519,9724,8844,7839,6642,5185,3521,1850,279, -1276,-2962,-4858,-6862,-8698,-10172,-11391,-12535,-13559,-14099, -13708,-12293,-10328,-8437,-6944,-5769,-4549,-2940,-980,928, 2403,3354,4005,4700,5638,6748,7871,8946,9934,10757, 11277,11330,10948,10355,9674,8856,7818,6507,4958,3334, 1810,339,-1279,-3147,-5164,-7068,-8652,-10037,-11467,-12921, -14034,-14307,-13480,-11841,-10024,-8489,-7261,-6076,-4580,-2662, -635,1073,2290,3132,3874,4731,5713,6767,7889,9035, 10079,10866,11240,11151,10779,10297,9695,8871,7743,6317, 4771,3321,1949,440,-1376,-3400,-5326,-6944,-8395,-9990, -11760,-13365,-14283,-14133,-13002,-11402,-9893,-8679,-7548,-6154, -4319,-2276,-415,1059,2151,3042,3911,4807,5743,6818, 8038,9238,10256,10920,11128,11008,10754,10385,9797,8870, 7570,6115,4755,3496,2102,372,-1603,-3549,-5197,-6638, -8253,-10194,-12182,-13706,-14276,-13749,-12532,-11175,-10002,-8968, -7710,-5988,-3959,-2012,-352,1000,2091,3031,3915,4793, 5775,6952,8246,9443,10356,10850,10970,10942,10834,10501, 9798,8680,7329,6066,4928,3659,2027,101,-1818,-3477, -4905,-6432,-8364,-10609,-12644,-13895,-14051,-13311,-12233,-11207, -10256,-9152,-7639,-5729,-3724,-1905,-336,992,2091,3012, 3846,4744,5842,7131,8455,9582,10321,10679,10870,11023, 10968,10503,9583,8387,7238,6221,5094,3599,1761,-157, -1833,-3213,-4621,-6419,-8699,-11108,-12973,-13802,-13654,-12975, -12188,-11402,-10456,-9151,-7463,-5545,-3618,-1835,-276,1031, 2087,2943,3763,4757,5989,7366,8652,9593,10156,10555, 10946,11178,10975,10266,9254,8241,7345,6366,5032,3308, 1423,-282,-1637,-2898,-4509,-6691,-9226,-11542,-13019,-13499, -13331,-12905,-12359,-11630,-10574,-9126,-7380,-5474,-3553,-1769, -228,1021,1978,2764,3666,4860,6248,7596,8695,9447, 10045,10663,11155,11224,10772,9964,9092,8344,7549,6395, 4788,2940,1214,-142,-1276,-2656,-4657,-7171,-9709,-11690, -12812,-13209,-13207,-12961,-12482,-11706,-10541,-9029,-7288,-5382, -3435,-1646,-163,958,1777,2580,3688,5088,6495,7669, 8573,9357,10181,10924,11282,11105,10516,9798,9176,8575, 7684,6251,4439,2670,1309,284,-887,-2644,-5019,-7623, -9934,-11610,-12592,-13054,-13176,-13005,-12525,-11669,-10437,-8927, -7181,-5228,-3236,-1477,-149,772,1570,2601,3932,5341, 6573,7573,8496,9488,10444,11084,11197,10844,10288,9802, 9400,8761,7568,5866,4071,2638,1660,708,-744,-2869, -5418,-7921,-9984,-11490,-12458,-12980,-13172,-13042,-12513,-11610, -10398,-8881,-7035,-4968,-2978,-1400,-321,533,1547,2832, 4204,5461,6513,7484,8592,9750,10658,11070,10965,10574, 10230,10020,9656,8738,7203,5434,3933,2897,2051,883, -900,-3232,-5773,-8091,-9959,-11384,-12373,-12962,-13181,-13004, -12449,-11614,-10427,-8773,-6741,-4643,-2846,-1542,-570,458, 1723,3070,4298,5379,6388,7514,8821,9998,10701,10841, 10625,10436,10428,10314,9686,8413,6755,5195,4063,3256, 2314,861,-1171,-3592,-6039,-8193,-9974,-11403,-12433,-13020, -13197,-13013,-12552,-11750,-10406,-8522,-6419,-4483,-2948,-1790, -702,558,1914,3157,4224,5205,6323,7701,9098,10087, 10474,10462,10429,10587,10737,10423,9426,7948,6398,5163, 4316,3531,2394,704,-1480,-3875,-6169,-8248,-10056,-11505, -12477,-13001,-13221,-13190,-12794,-11824,-10202,-8185,-6194,-4506, -3144,-1930,-633,761,2050,3125,4083,5159,6560,8110, 9349,9981,10150,10251,10565,10943,10945,10289,9047,7560, 6239,5316,4618,3734,2369,512,-1690,-3977,-6204,-8313, -10112,-11447,-12333,-12915,-13305,-13397,-12890,-11639,-9845,-7890, -6113,-4621,-3284,-1883,-400,969,2052,2955,3989,5386, 7036,8486,9370,9738,9959,10367,10918,11237,10955,10013, 8666,7332,6320,5591,4848,3789,2288,398,-1749,-4043, -6348,-8425,-10064,-11280,-12245,-13024,-13545,-13542,-12753,-11289, -9503,-7732,-6188,-4765,-3251,-1658,-186,959,1828,2772, 4127,5823,7417,8535,9138,9506,9989,10677,11264,11349, 10768,9645,8351,7289,6525,5803,4909,3746,2220,321, -1887,-4282,-6564,-8450,-9923,-11177,-12328,-13294,-13806,-13566, -12522,-10992,-9349,-7803,-6353,-4780,-3042,-1441,-216,667, 1553,2807,4474,6190,7512,8332,8851,9384,10158,10993, 11448,11231,10397,9250,8177,7347,6627,5835,4906,3742, 2171,148,-2203,-4577,-6648,-8343,-9810,-11225,-12569,-13587, -13925,-13408,-12248,-10839,-9426,-8004,-6397,-4558,-2790,-1426, -486,349,1488,3081,4859,6388,7427,8068,8652,9480, 10477,11253,11432,10967,10068,9063,8168,7374,6614,5860, 4994,3768,2046,-140,-2515,-4724,-6582,-8224,-9826,-11469, -12947,-13830,-13839,-13124,-12057,-10876,-9592,-8034,-6150,-4234, -2690,-1615,-773,237,1707,3505,5192,6450,7254,7877, 8718,9840,10858,11377,11297,10759,9961,9068,8176,7366, 6687,6029,5125,3744,1824,-431,-2667,-4642,-6392,-8124, -9966,-11804,-13224,-13792,-13556,-12907,-12086,-11047,-9628,-7791, -5796,-4076,-2827,-1912,-975,337,2080,3880,5317,6297, 7031,7866,8984,10143,10960,11271,11126,10618,9859,8973, 8107,7406,6868,6224,5168,3577,1528,-659,-2653,-4437, -6220,-8185,-10243,-12045,-13169,-13503,-13310,-12878,-12201,-11088, -9435,-7453,-5585,-4160,-3138,-2218,-1006,639,2466,4039, 5178,6041,6934,8031,9234,10270,10936,11189,11028,10495, 9701,8823,8079,7557,7103,6367,5099,3299,1241,-709, -2466,-4239,-6258,-8485,-10566,-12098,-12965,-13322,-13335,-13038, -12292,-10956,-9114,-7166,-5562,-4423,-3488,-2348,-776,1043, 2709,3987,4962,5900,6996,8212,9377,10340,10978,11184, 10928,10303,9475,8684,8135,7775,7302,6380,4868,2994, 1142,-534,-2252,-4247,-6522,-8812,-10712,-12014,-12836,-13346, -13518,-13226,-12287,-10679,-8758,-7022,-5734,-4759,-3685,-2206, -436,1269,2689,3827,4847,5916,7106,8335,9481,10422, 11011,11126,10755,10037,9231,8633,8314,8022,7392,6196, 4557,2868,1315,-293,-2202,-4458,-6827,-8962,-10630,-11864, -12802,-13483,-13730,-13279,-12018,-10238,-8487,-7102,-6036,-4987, -3623,-1924,-197,1319,2619,3760,4862,6020,7249,8488, 9642,10577,11101,11086,10555,9763,9117,8804,8612,8177, 7255,5880,4366,2949,1505,-240,-2385,-4758,-7047,-8976, -10517,-11828,-12967,-13770,-13895,-13103,-11586,-9905,-8488,-7357, -6289,-5017,-3434,-1720,-108,1317,2585,3737,4881,6072, 7313,8593,9806,10723,11099,10852,10189,9537,9196,9063, 8775,8062,6948,5663,4396,3117,1582,-374,-2680,-5028, -7108,-8868,-10453,-11983,-13313,-14037,-13810,-12710,-11214,-9823, -8662,-7579,-6361,-4906,-3265,-1612,-76,1305,2545,3719, 4880,6078,7393,8798,10065,10849,10937,10471,9889,9572, 9463,9270,8757,7867,6788,5715,4629,3326,1597,-569, -2903,-5051,-6923,-8703,-10546,-12316,-13617,-14017,-13459,-12314, -11048,-9896,-8827,-7672,-6302,-4742,-3119,-1531,-38,1334, 2571,3712,4838,6125,7660,9206,10362,10830,10660,10218, 9898,9821,9719,9330,8604,7673,6749,5877,4826,3347, 1380,-857,-2998,-4883,-6746,-8786,-10903,-12711,-13733,-13785, -13104,-12094,-11042,-10009,-8934,-7680,-6194,-4618,-3051,-1480, 16,1351,2496,3545,4723,6243,7983,9472,10323,10486, 10268,10063,10017,9999,9767,9178,8344,7524,6844,6076, 4854,3107,1035,-1029,-2869,-4690,-6793,-9121,-11324,-12958, -13682,-13544,-12885,-12032,-11123,-10125,-8954,-7584,-6097,-4568, -2975,-1349,116,1300,2292,3366,4830,6626,8349,9566, 10101,10127,10036,10082,10182,10083,9631,8910,8179,7621, 7091,6184,4685,2799,869,-898,-2631,-4654,-7038,-9514, -11649,-13027,-13513,-13326,-12778,-12063,-11215,-10188,-8947,-7569, -6115,-4506,-2773,-1160,114,1101,2096,3423,5194,7084, 8614,9520,9837,9909,10066,10285,10323,9999,9366,8711, 8267,7899,7239,6040,4381,2604,957,-646,-2503,-4806, -7402,-9887,-11827,-12944,-13305,-13183,-12747,-12062,-11174,-10126, -8945,-7612,-6028,-4244,-2514,-1099,-68,851,2057,3721, 5638,7398,8641,9278,9556,9861,10262,10472,10275,9749, 9151,8765,8538,8090,7158,5785,4187,2653,1218,-419, -2528,-5082,-7772,-10139,-11826,-12787,-13183,-13130,-12690,-11964, -11096,-10137,-9004,-7544,-5756,-3923,-2379,-1233,-323,716, 2231,4148,6065,7573,8513,9040,9522,10087,10485,10445, 10028,9516,9174,9026,8760,8053,6915,5544,4138,2844, 1471,-362,-2764,-5471,-8091,-10251,-11788,-12747,-13161,-13055, -12574,-11920,-11201,-10321,-9066,-7378,-5487,-3785,-2495,-1546, -602,720,2529,4526,6259,7466,8256,8947,9696,10288, 10444,10168,9741,9454,9364,9240,8771,7843,6630,5394, 4262,3111,1587,-522,-3082,-5770,-8261,-10327,-11867,-12801, -13093,-12898,-12488,-12010,-11395,-10415,-8910,-7029,-5189,-3734, -2711,-1850,-691,993,2961,4794,6212,7245,8158,9102, 9902,10292,10228,9920,9671,9614,9590,9303,8599,7555, 6446,5479,4539,3301,1527,-754,-3322,-5942,-8394,-10470, -11955,-12728,-12909,-12775,-12544,-12210,-11534,-10307,-8552,-6639, -5003,-3861,-3027,-2011,-467,1445,3301,4824,6051,7170, 8323,9352,9982,10139,9980,9786,9768,9852,9729,9186, 8303,7326,6462,5687,4701,3261,1350,-949,-3533,-6187, -8654,-10644,-11927,-12521,-12717,-12775,-12741,-12449,-11586,-10060, -8170,-6419,-5129,-4237,-3314,-1943,-139,1705,3308,4674, 5945,7259,8524,9443,9846,9851,9749,9797,9977,10016, 9649,8909,8054,7289,6606,5824,4710,3185,1249,-1110, -3788,-6505,-8917,-10703,-11766,-12296,-12607,-12869,-12965,-12536, -11341,-9587,-7796,-6387,-5396,-4481,-3237,-1585,193,1817, 3266,4656,6113,7573,8753,9433,9631,9615,9742,10041, 10217,10020,9451,8718,8011,7379,6717,5876,4742,3210, 1180,-1327,-4111,-6828,-9070,-10590,-11508,-12131,-12689,-13164, -13193,-12397,-10870,-9139,-7668,-6576,-5631,-4469,-2956,-1263, 369,1835,3252,4790,6444,7894,8829,9249,9370,9542, 9922,10256,10230,9835,9248,8613,8005,7406,6731,5905, 4789,3183,976,-1698,-4546,-7133,-9080,-10350,-11286,-12175, -13030,-13519,-13190,-12021,-10461,-8994,-7824,-6824,-5713,-4320, -2736,-1176,275,1696,3268,5037,6718,7932,8583,8908, 9204,9630,10069,10249,10090,9668,9102,8518,7966,7397, 6764,5996,4853,3086,683,-2144,-4942,-7235,-8863,-10082, -11259,-12457,-13375,-13559,-12850,-11572,-10209,-9034,-8014,-6922, -5581,-4067,-2587,-1222,131,1704,3561,5427,6893,7809, 8347,8787,9291,9803,10136,10192,10000,9579,9020,8459, 7926,7386,6845,6143,4911,2899,244,-2620,-5145,-7063, -8584,-10042,-11529,-12832,-13518,-13341,-12463,-11298,-10180,-9189, -8146,-6850,-5349,-3896,-2622,-1379,116,1981,3971,5661, 6856,7648,8239,8807,9390,9883,10145,10146,9913,9491, 8944,8378,7851,7435,7043,6319,4835,2504,-295,-2941, -5065,-6799,-8484,-10246,-11905,-13077,-13446,-13013,-12138,-11192, -10291,-9308,-8064,-6592,-5162,-3941,-2796,-1432,349,2385, 4248,5685,6742,7536,8213,8866,9465,9909,10139,10129, 9872,9413,8825,8250,7872,7690,7347,6366,4521,2010, -626,-2905,-4801,-6622,-8569,-10525,-12137,-13044,-13128,-12637, -11949,-11226,-10361,-9205,-7780,-6366,-5162,-4074,-2842,-1241, 717,2706,4378,5672,6687,7500,8241,8949,9522,9934, 10177,10164,9841,9246,8599,8185,8093,8040,7497,6127, 4015,1580,-737,-2748,-4647,-6693,-8872,-10847,-12221,-12814, -12780,-12468,-12011,-11318,-10281,-8958,-7586,-6399,-5343,-4198, -2778,-996,983,2837,4363,5587,6582,7442,8211,8891, 9465,9951,10220,10089,9559,8860,8367,8295,8427,8254, 7370,5702,3542,1331,-686,-2618,-4710,-7029,-9298,-11092, -12158,-12599,-12692,-12561,-12123,-11276,-10084,-8781,-7600,-6563, -5501,-4227,-2632,-753,1170,2890,4325,5536,6567,7425, 8164,8853,9540,10103,10255,9863,9153,8566,8410,8619, 8747,8297,7082,5278,3278,1369,-501,-2583,-4978,-7463, -9598,-11091,-11994,-12523,-12774,-12665,-12091,-11094,-9896,-8741, -7719,-6718,-5549,-4094,-2351,-473,1344,2991,4433,5639, 6603,7385,8146,9003,9830,10308,10181,9547,8864,8573, 8744,9030,8952,8170,6714,4962,3272,1580,-398,-2771, -5344,-7721,-9590,-10925,-11877,-12536,-12822,-12609,-11885,-10834, -9742,-8748,-7817,-6774,-5450,-3840,-2066,-268,1507,3185, 4601,5692,6526,7313,8262,9306,10099,10299,9880,9176, 8707,8754,9118,9305,8907,7855,6408,4919,3445,1687, -557,-3113,-5619,-7762,-9462,-10839,-11921,-12615,-12819,-12448, -11609,-10608,-9685,-8830,-7876,-6705,-5269,-3636,-1921,-131, 1697,3354,4627,5566,6413,7405,8592,9664,10220,10085, 9471,8890,8771,9095,9441,9332,8618,7521,6322,5061, 3536,1526,-909,-3444,-5780,-7788,-9495,-10962,-12108,-12761, -12817,-12295,-11462,-10616,-9817,-8956,-7908,-6642,-5197,-3602, -1845,46,1879,3379,4466,5362,6373,7638,8956,9885, 10097,9653,9042,8793,9031,9420,9511,9097,8299,7368, 6363,5103,3409,1233,-1235,-3654,-5853,-7851,-9657,-11194, -12304,-12810,-12697,-12144,-11459,-10770,-9963,-8988,-7887,-6650, -5230,-3550,-1638,295,1965,3234,4223,5211,6481,7972, 9237,9839,9688,9149,8806,8950,9318,9502,9326,8825, 8156,7408,6426,5030,3172,933,-1461,-3741,-5867,-7940, -9864,-11392,-12326,-12620,-12438,-12007,-11464,-10775,-9910,-8935, -7867,-6649,-5129,-3265,-1251,566,1988,3056,4050,5314, 6893,8418,9387,9574,9241,8913,8945,9257,9500,9467, 9188,8761,8257,7590,6518,4948,2980,785,-1467,-3675, -5888,-8075,-9987,-11359,-12114,-12343,-12237,-11904,-11337,-10576, -9749,-8890,-7880,-6571,-4843,-2826,-864,724,1883,2868, 4094,5733,7443,8709,9259,9216,9010,8999,9220,9449, 9507,9370,9122,8837,8430,7688,6439,4747,2794,737, -1423,-3725,-6100,-8308,-10080,-11296,-11991,-12274,-12217,-11843, -11230,-10506,-9774,-8984,-7939,-6437,-4506,-2457,-703,568, 1577,2776,4403,6223,7735,8620,8900,8882,8918,9120, 9339,9416,9331,9187,9072,8927,8483,7550,6164,4485, 2672,691,-1580,-4043,-6442,-8542,-10185,-11338,-12037,-12325, -12209,-11774,-11197,-10600,-9980,-9189,-7957,-6158,-4087,-2223, -832,203,1339,2948,4851,6572,7755,8362,8592,8728, 8947,9191,9307,9260,9155,9139,9182,9019,8396,7328, 5977,4431,2688,622,-1802,-4319,-6639,-8645,-10232,-11366, -12053,-12270,-12051,-11588,-11134,-10742,-10237,-9306,-7724,-5683, -3720,-2216,-1125,-43,1424,3317,5210,6679,7610,8118, 8438,8761,9054,9193,9162,9079,9126,9295,9323,8958, 8188,7153,5914,4428,2626,440,-2026,-4479,-6737,-8712, -10301,-11445,-12054,-12112,-11802,-11436,-11221,-11025,-10437,-9135, -7237,-5247,-3612,-2435,-1394,-52,1721,3690,5412,6635, 7431,7976,8470,8887,9084,9071,9004,9050,9266,9455, 9325,8828,8086,7134,5922,4384,2477,223,-2214,-4607, -6824,-8804,-10420,-11499,-11923,-11827,-11588,-11508,-11541,-11296, -10350,-8681,-6732,-5007,-3710,-2661,-1444,196,2124,4005, 5506,6560,7353,8055,8635,8955,8991,8932,8981,9192, 9426,9471,9225,8760,8110,7196,5953,4336,2344,74, -2291,-4651,-6929,-8976,-10532,-11372,-11560,-11486,-11554,-11808, -11885,-11330,-10000,-8196,-6433,-5024,-3922,-2799,-1295,579, 2493,4148,5443,6487,7419,8213,8701,8855,8851,8899, 9080,9319,9472,9419,9176,8771,8151,7226,5908,4176, 2164,-8,-2343,-4808,-7222,-9248,-10544,-11077,-11207,-11381, -11792,-12197,-12083,-11158,-9589,-7862,-6386,-5216,-4135,-2770, -1002,897,2627,4085,5369,6553,7566,8254,8588,8689, 8769,8930,9162,9367,9434,9367,9189,8837,8189,7156, 5711,3963,2053,-75,-2545,-5208,-7643,-9406,-10336,-10721, -11043,-11583,-12213,-12501,-12050,-10830,-9217,-7705,-6503,-5433, -4178,-2574,-743,1014,2578,4030,5429,6691,7622,8154, 8416,8565,8721,8938,9157,9287,9313,9304,9217,8865, 8112,6950,5519,3916,2064,-220,-2935,-5672,-7894,-9276, -9976,-10471,-11115,-11938,-12597,-12601,-11778,-10426,-9009,-7787, -6713,-5526,-4040,-2349,-636,1015,2582,4120,5586,6775, 7554,8001,8280,8519,8758,8977,9114,9188,9299,9408, 9310,8831,7950,6817,5559,4050,2035,-543,-3404,-5992, -7842,-8925,-9630,-10407,-11409,-12356,-12790,-12430,-11400,-10158, -9015,-7939,-6773,-5400,-3828,-2193,-563,1096,2751,4361, 5793,6833,7494,7925,8269,8581,8820,8945,9020,9190, 9455,9572,9316,8677,7816,6870,5740,4108,1791,-1007, -3826,-6096,-7573,-8540,-9457,-10582,-11790,-12625,-12692,-12071, -11116,-10086,-9050,-7926,-6624,-5177,-3660,-2106,-467,1252, 2985,4614,5927,6820,7460,7988,8428,8746,8894,8960, 9146,9474,9729,9663,9214,8558,7858,7064,5868,3957, 1356,-1498,-4059,-5948,-7239,-8358,-9624,-10987,-12131,-12671, -12503,-11892,-11102,-10165,-9093,-7874,-6511,-5091,-3637,-2074, -363,1451,3222,4756,5935,6811,7545,8160,8572,8767, 8870,9083,9464,9811,9875,9581,9085,8584,8073,7277, 5821,3572,810,-1888,-4068,-5682,-7032,-8456,-10003,-11400, -12317,-12615,-12417,-11924,-11217,-10289,-9159,-7868,-6514,-5160, -3711,-2070,-234,1643,3329,4716,5864,6856,7654,8185, 8427,8529,8744,9165,9608,9825,9692,9325,8972,8719, 8318,7340,5510,2983,274,-2078,-3926,-5485,-7056,-8739, -10347,-11606,-12334,-12552,-12399,-11978,-11276,-10294,-9105,-7833, -6571,-5247,-3714,-1941,-42,1762,3308,4649,5889,6940, 7659,8026,8194,8402,8816,9333,9670,9672,9409,9137, 9059,9011,8518,7180,5007,2424,-18,-2026,-3730,-5442, -7249,-9029,-10560,-11659,-12294,-12529,-12430,-12008,-11236,-10164, -8989,-7848,-6659,-5248,-3548,-1685,149,1833,3350,4778, 6073,7036,7586,7859,8099,8504,9068,9527,9644,9447, 9208,9211,9415,9361,8550,6836,4525,2131,-1,-1844, -3630,-5523,-7441,-9201,-10612,-11601,-12228,-12523,-12416,-11898, -11039,-9981,-8932,-7880,-6620,-5049,-3274,-1453,290,1952, 3557,5056,6266,7053,7461,7732,8142,8748,9328,9574, 9433,9193,9229,9589,9879,9554,8371,6448,4221,2097, 179,-1662,-3587,-5595,-7529,-9198,-10522,-11519,-12209,-12495, -12274,-11648,-10795,-9875,-8933,-7800,-6379,-4749,-3028,-1309, 414,2167,3865,5322,6357,6955,7324,7752,8403,9068, 9432,9364,9107,9074,9466,10007,10120,9444,7987,6046, 4022,2124,266,-1671,-3703,-5745,-7623,-9215,-10553,-11636, -12312,-12458,-12130,-11510,-10777,-9982,-9000,-7730,-6242,-4654, -3021,-1319,509,2391,4103,5396,6189,6666,7165,7890, 8681,9164,9180,8929,8804,9105,9721,10171,9988,9034, 7477,5658,3849,2050,118,-1927,-3984,-5956,-7771,-9409, -10819,-11881,-12422,-12442,-12103,-11587,-10961,-10138,-9026,-7691, -6249,-4747,-3141,-1342,665,2640,4220,5237,5864,6434, 7218,8130,8792,8952,8745,8546,8729,9327,9985,10219, 9746,8618,7113,5479,3767,1914,-89,-2125,-4100,-6010, -7887,-9626,-11027,-11941,-12347,-12358,-12102,-11662,-11001,-10060, -8856,-7546,-6219,-4793,-3114,-1106,1052,2937,4228,5026, 5711,6582,7599,8447,8811,8712,8471,8508,9015,9767, 10305,10272,9602,8454,7067,5517,3756,1830,-146,-2101, -4027,-6011,-8009,-9754,-11030,-11803,-12168,-12244,-12076,-11640, -10873,-9816,-8633,-7453,-6225,-4751,-2845,-618,1489,3073, 4091,4871,5804,6954,7996,8592,8668,8445,8353,8722, 9452,10144,10450,10215,9493,8431,7096,5488,3673,1792, -90,-2023,-4040,-6152,-8173,-9812,-10955,-11670,-12078,-12231, -12076,-11550,-10658,-9603,-8576,-7550,-6294,-4566,-2401,-175, 1660,2930,3860,4832,6045,7305,8165,8431,8292,8139, 8346,8983,9743,10265,10392,10098,9412,8354,6935,5272, 3522,1759,-77,-2088,-4245,-6429,-8371,-9869,-10935,-11694, -12200,-12378,-12114,-11409,-10487,-9606,-8776,-7767,-6271,-4240, -1990,29,1544,2656,3713,4968,6365,7526,8088,8091, 7920,7997,8487,9194,9831,10233,10323,10021,9292,8137, 6662,5060,3429,1720,-177,-2300,-4553,-6700,-8497,-9889, -10986,-11862,-12422,-12485,-12002,-11218,-10456,-9809,-9066,-7862, -6049,-3843,-1707,18,1316,2457,3775,5297,6673,7527, 7790,7724,7724,8046,8635,9283,9844,10233,10321,9956, 9114,7891,6466,4992,3456,1718,-292,-2534,-4791,-6791, -8463,-9897,-11136,-12082,-12524,-12353,-11747,-11099,-10598,-10092, -9221,-7701,-5638,-3460,-1587,-126,1133,2506,4122,5703, 6845,7390,7517,7544,7747,8191,8767,9397,9996,10381, 10391,9903,8944,7719,6420,5069,3541,1693,-463,-2752, -4875,-6724,-8424,-10024,-11373,-12219,-12400,-12044,-11535,-11169, -10882,-10330,-9158,-7323,-5187,-3228,-1650,-299,1146,2840, 4590,5994,6859,7267,7436,7583,7868,8315,8895,9580, 10215,10552,10422,9778,8765,7653,6499,5184,3545,1531, -683,-2839,-4792,-6650,-8526,-10249,-11524,-12121,-12079,-11743, -11490,-11381,-11142,-10363,-8846,-6850,-4887,-3233,-1812,-336, 1391,3244,4880,6058,6772,7157,7373,7573,7874,8329, 8982,9742,10359,10574,10269,9522,8603,7665,6576,5151, 3333,1256,-822,-2785,-4723,-6773,-8822,-10517,-11560,-11882, -11782,-11670,-11718,-11738,-11334,-10199,-8459,-6569,-4903,-3440, -1946,-231,1687,3491,4946,5997,6652,7024,7262,7475, 7806,8374,9145,9932,10433,10438,9984,9310,8580,7720, 6531,4930,3038,1076,-833,-2779,-4906,-7143,-9193,-10690, -11428,-11599,-11656,-11873,-12124,-12041,-11286,-9878,-8179,-6554, -5088,-3595,-1917,-22,1910,3612,4958,5935,6557,6917, 7134,7351,7785,8532,9409,10102,10373,10198,9779,9293, 8670,7723,6352,4676,2894,1109,-757,-2854,-5206,-7539, -9422,-10572,-11069,-11330,-11714,-12183,-12397,-12003,-10954,-9521, -8029,-6605,-5156,-3535,-1688,266,2126,3738,5026,5949, 6525,6824,6991,7302,7940,8811,9634,10129,10210,10039, 9795,9431,8735,7608,6140,4525,2934,1258,-727,-3079, -5597,-7852,-9410,-10245,-10746,-11305,-11964,-12456,-12431,-11748, -10605,-9312,-7996,-6627,-5105,-3356,-1423,520,2320,3894, 5162,6027,6485,6676,6888,7418,8244,9102,9737,10046, 10096,10055,9940,9542,8674,7399,5954,4537,3107,1378, -872,-3490,-6010,-7949,-9167,-9949,-10698,-11541,-12290,-12610, -12317,-11491,-10417,-9267,-8035,-6629,-5004,-3178,-1254,664, 2480,4077,5285,5981,6267,6461,6888,7631,8476,9184, 9653,9917,10077,10178,10042,9467,8413,7123,5882,4703, 3269,1257,-1303,-3979,-6232,-7806,-8875,-9839,-10868,-11850, -12517,-12616,-12138,-11314,-10362,-9308,-8075,-6596,-4900,-3074, -1159,818,2712,4264,5278,5762,5995,6366,7031,7835, 8573,9124,9516,9858,10180,10309,10001,9181,8057,6967, 6021,4920,3234,855,-1852,-4345,-6248,-7601,-8748,-9944, -11140,-12104,-12595,-12508,-11991,-11261,-10384,-9317,-8026,-6513, -4837,-3013,-996,1116,3004,4366,5134,5508,5867,6466, 7230,7963,8556,9017,9471,9981,10365,10337,9757,8814, 7857,7082,6284,4995,2953,374,-2235,-4432,-6088,-7429, -8765,-10151,-11378,-12210,-12518,-12354,-11912,-11261,-10363,-9250, -7944,-6471,-4800,-2849,-662,1474,3192,4307,4919,5353, 5928,6679,7410,7990,8461,8966,9612,10240,10484,10154, 9395,8575,7951,7394,6473,4852,2563,-8,-2386,-4297, -5861,-7355,-8896,-10351,-11494,-12167,-12387,-12266,-11865,-11172, -10246,-9171,-7952,-6499,-4684,-2493,-204,1791,3252,4162, 4758,5382,6155,6914,7491,7928,8433,9155,9963,10477, 10402,9836,9128,8607,8260,7688,6477,4552,2165,-250, -2349,-4111,-5773,-7457,-9089,-10500,-11529,-12138,-12365,-12250, -11779,-11040,-10174,-9227,-8070,-6503,-4436,-2077,157,1941, 3162,3971,4711,5547,6333,6917,7335,7805,8545,9476, 10214,10405,10048,9464,8996,8773,8505,7723,6207,4106, 1776,-399,-2310,-4119,-5933,-7689,-9285,-10619,-11608,-12237, -12445,-12217,-11678,-11006,-10277,-9419,-8194,-6386,-4087,-1712, 336,1862,2938,3850,4813,5704,6319,6707,7134,7845, 8847,9780,10234,10103,9655,9253,9103,9051,8642,7551, 5823,3735,1591,-410,-2339,-4262,-6118,-7829,-9376,-10706, -11725,-12321,-12410,-12085,-11584,-11062,-10470,-9595,-8146,-6053, -3646,-1411,369,1719,2862,3993,5034,5760,6164,6531, 7175,8180,9257,9962,10093,9799,9456,9354,9441,9344, 8668,7327,5556,3592,1594,-402,-2404,-4342,-6154,-7857, -9451,-10824,-11822,-12285,-12241,-11920,-11554,-11207,-10680,-9631, -7874,-5593,-3273,-1309,279,1673,3023,4245,5124,5616, 5955,6482,7421,8595,9527,9902,9783,9508,9431,9606, 9710,9394,8496,7094,5384,3512,1538,-492,-2486,-4366, -6180,-7960,-9621,-10995,-11873,-12159,-12049,-11846,-11695,-11492, -10853,-9475,-7456,-5216,-3146,-1377,224,1813,3286,4375, 4996,5358,5814,6641,7823,8945,9561,9634,9470,9406, 9599,9846,9798,9290,8316,6946,5281,3408,1418,-582, -2516,-4386,-6267,-8143,-9851,-11134,-11799,-11949,-11916,-11943, -12001,-11747,-10795,-9119,-7075,-5051,-3176,-1400,373,2096, 3482,4323,4764,5159,5878,7018,8253,9103,9390,9350, 9345,9547,9846,9985,9788,9210,8216,6831,5157,3271, 1296,-627,-2513,-4444,-6454,-8426,-10087,-11141,-11591,-11766, -11976,-12252,-12322,-11782,-10505,-8756,-6888,-5052,-3203,-1262, 692,2362,3480,4081,4487,5108,6165,7428,8440,8967, 9102,9141,9345,9693,9967,10004,9745,9138,8105,6668, 4955,3097,1217,-616,-2525,-4598,-6767,-8746,-10180,-10963, -11373,-11776,-12270,-12625,-12482,-11624,-10222,-8583,-6876,-5089, -3099,-943,1050,2488,3292,3777,4359,5324,6575,7699, 8414,8752,8908,9103,9442,9805,10028,10032,9755,9103, 8004,6493,4757,3007,1290,-528,-2596,-4882,-7124,-8898, -10014,-10695,-11290,-11971,-12595,-12818,-12390,-11376,-10042,-8570, -6944,-5017,-2771,-524,1274,2378,2995,3595,4498,5703, 6898,7792,8332,8633,8870,9180,9562,9892,10097,10116, 9797,9047,7837,6277,4649,3089,1436,-537,-2863,-5279, -7362,-8809,-9745,-10544,-11414,-12261,-12801,-12769,-12145,-11163, -10011,-8653,-6927,-4730,-2317,-223,1216,2086,2759,3620, 4771,6003,7039,7771,8245,8571,8873,9234,9619,9950, 10196,10207,9782,8870,7569,6112,4713,3263,1463,-786, -3290,-5598,-7352,-8575,-9570,-10607,-11675,-12520,-12846,-12584, -11951,-11154,-10150,-8704,-6678,-4264,-1951,-186,974,1817, 2686,3777,5013,6156,7053,7707,8165,8525,8868,9227, 9625,10041,10325,10233,9622,8570,7333,6131,4898,3338, 1263,-1205,-3676,-5704,-7188,-8396,-9611,-10877,-11991,-12651, -12753,-12470,-12028,-11398,-10313,-8561,-6250,-3832,-1790,-313, 756,1702,2756,3969,5180,6220,7048,7680,8136,8483, 8814,9208,9724,10235,10437,10123,9329,8307,7319,6326, 5036,3210,881,-1619,-3863,-5604,-7016,-8408,-9863,-11215, -12161,-12573,-12620,-12530,-12295,-11640,-10276,-8212,-5806,-3565, -1787,-464,617,1704,2903,4141,5282,6280,7115,7735, 8130,8406,8759,9312,9979,10446,10413,9871,9061,8258, 7512,6539,5013,2900,458,-1876,-3807,-5396,-6956,-8608, -10179,-11378,-12065,-12395,-12614,-12751,-12549,-11671,-9995,-7760, -5440,-3437,-1863,-589,581,1798,3047,4254,5385,6419, 7239,7747,8018,8304,8836,9586,10252,10501,10219,9601, 8963,8430,7779,6633,4818,2516,162,-1873,-3600,-5291, -7102,-8883,-10332,-11277,-11853,-12331,-12789,-13003,-12648,-11477, -9561,-7318,-5192,-3399,-1919,-601,664,1909,3136,4371, 5584,6614,7286,7621,7862,8323,9093,9912,10399,10380, 9959,9455,9091,8737,7979,6521,4455,2197,121,-1695, -3482,-5411,-7352,-9030,-10241,-11049,-11745,-12472,-13064,-13207, -12601,-11158,-9149,-7034,-5105,-3419,-1931,-577,687,1923, 3212,4564,5804,6681,7143,7389,7761,8486,9392,10088, 10313,10083,9705,9477,9360,8950,7873,6119,4038,2029, 205,-1626,-3628,-5705,-7593,-9065,-10114,-10975,-11901,-12815, -13409,-13353,-12461,-10859,-8924,-6954,-5095,-3423,-1949,-645, 599,1932,3393,4818,5916,6556,6884,7209,7842,8768, 9611,10039,9999,9735,9619,9695,9586,8892,7517,5700, 3813,2043,247,-1758,-3928,-6007,-7716,-8981,-10013,-11073, -12214,-13191,-13636,-13312,-12233,-10641,-8793,-6856,-5008,-3388, -2008,-761,578,2111,3681,5015,5889,6334,6663,7225, 8128,9080,9673,9800,9665,9628,9834,9983,9641,8644, 7170,5515,3863,2149,195,-1989,-4189,-6124,-7613,-8790, -9968,-11274,-12538,-13423,-13650,-13154,-12038,-10467,-8597,-6652, -4890,-3419,-2128,-805,739,2452,3998,5107,5738,6114, 6636,7510,8519,9264,9547,9542,9588,9860,10181,10151, 9519,8381,6997,5554,3998,2161,17,-2250,-4336,-6027, -7368,-8655,-10088,-11550,-12779,-13509,-13595,-13045,-11895,-10235, -8312,-6460,-4879,-3549,-2245,-716,1065,2836,4205,5025, 5499,6024,6881,7935,8780,9196,9314,9434,9759,10185, 10381,10076,9283,8193,7000,5682,4041,1999,-270,-2462, -4313,-5808,-7197,-8707,-10306,-11773,-12907,-13548,-13574,-12948, -11677,-9922,-8050,-6379,-4988,-3720,-2264,-449,1472,3076, 4128,4745,5304,6150,7236,8187,8720,8930,9116,9487, 10001,10376,10328,9829,9036,8109,7074,5725,3876,1673, -561,-2552,-4203,-5699,-7270,-8929,-10550,-11989,-13089,-13688, -13630,-12852,-11439,-9665,-7945,-6510,-5251,-3880,-2126,-96, 1731,3012,3807,4460,5330,6440,7474,8148,8471,8690, 9078,9647,10167,10367,10123,9580,8934,8190,7140,5571, 3542,1356,-703,-2510,-4129,-5742,-7435,-9135,-10767,-12219, -13309,-13839,-13630,-12647,-11112,-9441,-7986,-6768,-5470,-3782, -1746,226,1747,2761,3542,4458,5614,6742,7546,7992, 8266,8647,9254,9887,10245,10219,9906,9501,9055,8333, 7079,5293,3239,1195,-692,-2422,-4081,-5771,-7499,-9225, -10901,-12397,-13475,-13871,-13416,-12233,-10727,-9328,-8160,-6967, -5381,-3370,-1305,394,1622,2565,3533,4732,5977,6927, 7487,7822,8207,8833,9560,10061,10181,10043,9843,9642, 9237,8337,6879,5040,3062,1139,-666,-2377,-4072,-5786, -7529,-9318,-11101,-12666,-13680,-13806,-13053,-11819,-10568,-9499, -8424,-6984,-5061,-2949,-1096,312,1422,2486,3716,5055, 6176,6873,7274,7678,8306,9088,9712,9980,9991,9952, 9942,9819,9283,8186,6637,4827,2937,1096,-669,-2388, -4077,-5776,-7580,-9533,-11472,-13026,-13764,-13534,-12666,-11638, -10706,-9786,-8535,-6762,-4668,-2694,-1120,108,1266,2581, 4020,5292,6153,6663,7116,7755,8549,9235,9628,9778, 9866,9997,10090,9899,9196,7976,6409,4658,2842,1047, -695,-2373,-3983,-5705,-7714,-9908,-11913,-13228,-13554,-13106, -12379,-11669,-10939,-9920,-8351,-6352,-4314,-2594,-1249,-38, 1336,2878,4304,5339,6004,6545,7210,8025,8774,9256, 9501,9676,9904,10160,10244,9905,9057,7790,6258,4551, 2745,939,-724,-2237,-3807,-5742,-8067,-10412,-12236,-13141, -13184,-12802,-12344,-11853,-11116,-9837,-7992,-5970,-4171,-2708, -1423,-10,1613,3173,4368,5180,5838,6559,7394,8207, 8789,9130,9379,9657,9995,10278,10259,9784,8894,7656, 6118,4361,2519,817,-624,-2022,-3778,-6070,-8613,-10853, -12312,-12881,-12898,-12747,-12532,-12099,-11159,-9571,-7631,-5812, -4289,-2930,-1481,186,1869,3246,4236,5002,5779,6658, 7530,8218,8651,8956,9294,9700,10094,10292,10148,9655, 8800,7528,5879,4042,2310,896,-348,-1880,-4001,-6582, -9134,-11080,-12172,-12616,-12802,-12903,-12801,-12217,-10969,-9222, -7439,-5887,-4467,-2979,-1306,453,2002,3197,4132,4993, 5910,6852,7631,8158,8532,8913,9366,9831,10170,10277, 10133,9691,8774,7325,5551,3805,2378,1235,-52,-1910, -4378,-7086,-9443,-11022,-11897,-12438,-12881,-13134,-12915,-12024, -10577,-8944,-7428,-5993,-4468,-2782,-997,680,2061,3165, 4147,5135,6146,7026,7642,8095,8542,9030,9517,9923, 10189,10334,10285,9777,8632,6996,5261,3799,2701,1632, 83,-2155,-4846,-7450,-9439,-10722,-11635,-12432,-13065,-13255, -12761,-11663,-10263,-8851,-7469,-5982,-4313,-2503,-744,765, 2023,3147,4244,5344,6324,7046,7579,8104,8633,9112, 9533,9894,10239,10516,10421,9657,8256,6593,5091,3984, 3082,1839,-108,-2645,-5310,-7584,-9243,-10501,-11642,-12649, -13247,-13198,-12513,-11423,-10198,-8931,-7533,-5924,-4129,-2311, -703,649,1903,3151,4370,5453,6292,6940,7556,8155, 8640,9016,9395,9869,10392,10675,10346,9282,7750,6242, 5115,4313,3353,1742,-565,-3178,-5583,-7525,-9117,-10573, -11909,-12906,-13309,-13044,-12304,-11346,-10281,-9039,-7536,-5783, -3950,-2274,-832,519,1895,3239,4437,5398,6174,6912, 7605,8139,8516,8859,9353,10026,10628,10736,10089,8793, 7314,6152,5402,4661,3401,1417,-1032,-3471,-5589,-7428, -9158,-10798,-12168,-13011,-13197,-12847,-12199,-11382,-10367,-9031, -7352,-5531,-3820,-2313,-879,595,2052,3352,4448,5381, 6254,7063,7684,8084,8388,8822,9551,10396,10908,10700, 9722,8353,7160,6421,5814,4829,3216,1052,-1307,-3499, -5482,-7412,-9319,-11033,-12303,-12927,-12969,-12681,-12196,-11445, -10341,-8842,-7097,-5377,-3813,-2306,-762,764,2168,3393, 4472,5490,6449,7201,7655,7933,8269,8931,9928,10800, 11022,10411,9264,8123,7353,6829,6067,4758,2926,777, -1383,-3424,-5454,-7558,-9575,-11220,-12279,-12733,-12797,-12657, -12248,-11412,-10142,-8580,-6942,-5363,-3803,-2198,-609,853, 2176,3395,4562,5675,6601,7177,7448,7696,8253,9254, 10368,10988,10789,9930,8909,8158,7679,7091,6059,4546, 2681,654,-1358,-3403,-5586,-7823,-9811,-11268,-12146,-12625, -12857,-12788,-12274,-11284,-9943,-8450,-6924,-5352,-3709,-2075, -543,845,2147,3452,4750,5888,6644,6966,7126,7558, 8505,9737,10663,10851,10335,9504,8790,8341,7897,7117, 5879,4291,2525,670,-1322,-3532,-5875,-8093,-9909,-11208, -12103,-12735,-13047,-12884,-12221,-11169,-9879,-8465,-6938,-5289, -3603,-2012,-574,758,2139,3622,5013,6003,6452,6580, 6869,7688,8947,10103,10657,10500,9892,9261,8847,8514, 7942,6966,5632,4118,2534,734,-1426,-3824,-6179,-8227, -9861,-11143,-12167,-12858,-13080,-12794,-12088,-11072,-9846,-8444, -6842,-5118,-3473,-2010,-669,718,2317,3962,5243,5903, 6095,6289,6946,8127,9414,10267,10460,10138,9640,9278, 9045,8642,7866,6776,5521,4184,2648,683,-1664,-4086, -6306,-8210,-9822,-11193,-12260,-12875,-12975,-12633,-11947,-10993, -9784,-8300,-6599,-4900,-3419,-2111,-736,919,2758,4333, 5273,5614,5777,6280,7333,8650,9735,10230,10175,9870, 9616,9465,9204,8618,7722,6692,5607,4327,2627,467, -1909,-4218,-6320,-8197,-9882,-11312,-12326,-12832,-12866,-12536, -11914,-10989,-9679,-8041,-6341,-4852,-3580,-2263,-622,1345, 3207,4463,5033,5241,5601,6487,7771,9002,9772,9979, 9866,9762,9729,9567,9120,8423,7606,6735,5704,4292, 2411,202,-2096,-4307,-6364,-8283,-10033,-11432,-12326,-12748, -12811,-12575,-12006,-10969,-9457,-7781,-6289,-5060,-3835,-2273, -289,1790,3411,4294,4646,4935,5637,6837,8140,9106, 9581,9705,9750,9839,9805,9481,8930,8296,7617,6820, 5694,4115,2168,7,-2207,-4380,-6487,-8484,-10219,-11484, -12265,-12716,-12896,-12721,-12034,-10751,-9144,-7674,-6483,-5351, -3933,-2024,164,2105,3364,3947,4271,4850,5914,7228, 8334,9009,9373,9626,9832,9914,9736,9320,8834,8321, 7717,6862,5586,3923,2011,-67,-2247,-4481,-6687,-8690, -10277,-11397,-12209,-12815,-13071,-12762,-11787,-10351,-8911,-7744, -6731,-5493,-3741,-1544,626,2239,3124,3569,4108,5062, 6304,7465,8324,8894,9334,9704,9906,9864,9601,9232, 8861,8449,7833,6841,5446,3791,1960,-82,-2336,-4694, -6912,-8750,-10167,-11317,-12317,-13021,-13160,-12570,-11385,-10046, -8916,-7986,-6953,-5424,-3307,-1003,911,2115,2766,3354, 4236,5393,6550,7511,8267,8883,9400,9769,9870,9729, 9489,9228,8962,8568,7838,6717,5324,3756,1944,-193, -2573,-4943,-6995,-8657,-10090,-11443,-12589,-13205,-13073,-12231, -11046,-9974,-9150,-8318,-7057,-5113,-2773,-644,873,1806, 2512,3382,4482,5603,6614,7490,8267,8946,9465,9727, 9713,9565,9424,9284,9055,8561,7710,6605,5332,3789, 1841,-457,-2860,-5059,-6906,-8555,-10189,-11730,-12847,-13216, -12782,-11829,-10843,-10121,-9497,-8524,-6852,-4605,-2357,-585, 650,1580,2490,3549,4662,5692,6639,7525,8361,9063, 9488,9596,9530,9489,9481,9385,9059,8442,7618,6653, 5418,3736,1607,-744,-3001,-4991,-6795,-8617,-10469,-12068, -12987,-13014,-12365,-11535,-10920,-10473,-9774,-8426,-6419,-4181, -2216,-708,457,1514,2598,3708,4757,5733,6696,7657, 8531,9132,9373,9415,9466,9551,9568,9378,8937,8343, 7668,6751,5373,3505,1316,-916,-2956,-4841,-6784,-8856, -10858,-12332,-12875,-12591,-11994,-11522,-11239,-10808,-9795,-8093, -6010,-3976,-2256,-850,379,1560,2707,3772,4779,5790, 6841,7859,8636,9035,9180,9326,9528,9631,9531,9230, 8826,8397,7792,6748,5168,3198,1080,-935,-2801,-4754, -6972,-9275,-11219,-12323,-12481,-12147,-11867,-11772,-11593,-10936, -9591,-7732,-5743,-3908,-2317,-907,416,1651,2736,3740, 4797,5937,7074,8009,8572,8867,9126,9410,9603,9592, 9396,9130,8887,8564,7881,6638,4886,2905,1005,-760, -2651,-4903,-7417,-9747,-11354,-12020,-12043,-11955,-12017,-12079, -11780,-10829,-9274,-7444,-5622,-3911,-2329,-844,506,1655, 2663,3731,4933,6158,7233,7977,8422,8803,9200,9480, 9550,9440,9264,9148,9064,8718,7823,6357,4549,2771, 1174,-528,-2701,-5313,-7936,-10005,-11186,-11624,-11784,-12006, -12273,-12303,-11759,-10571,-8976,-7274,-5574,-3874,-2229,-727, 516,1558,2627,3864,5158,6314,7208,7842,8357,8852, 9243,9410,9370,9252,9212,9292,9257,8725,7550,5966, 4344,2912,1444,-496,-3043,-5837,-8301,-9988,-10872,-11340, -11761,-12212,-12523,-12381,-11606,-10347,-8859,-7242,-5510,-3738, -2095,-728,388,1501,2756,4095,5341,6362,7137,7786, 8421,8942,9223,9253,9145,9143,9353,9552,9338,8481, 7139,5703,4432,3195,1546,-761,-3537,-6254,-8380,-9725, -10546,-11205,-11867,-12420,-12613,-12253,-11401,-10235,-8817,-7155, -5345,-3591,-2089,-851,317,1602,2971,4285,5425,6346, 7133,7887,8574,9005,9107,9024,9013,9279,9668,9728, 9174,8090,6839,5739,4735,3411,1413,-1188,-3986,-6445, -8211,-9392,-10336,-11229,-12008,-12491,-12510,-12074,-11294,-10157, -8642,-6888,-5127,-3540,-2182,-923,407,1808,3166,4388, 5416,6320,7223,8083,8690,8906,8846,8829,9113,9621, 9926,9653,8827,7764,6811,6019,5036,3426,1094,-1649, -4305,-6430,-7978,-9220,-10358,-11364,-12103,-12481,-12471,-12089, -11304,-10038,-8403,-6666,-5040,-3600,-2282,-926,536,1980, 3271,4372,5360,6385,7432,8238,8600,8597,8572,8833, 9393,9893,9909,9334,8436,7600,6982,6317,5132,3172, 616,-2067,-4434,-6326,-7889,-9273,-10481,-11433,-12098,-12488, -12552,-12162,-11236,-9850,-8210,-6568,-5084,-3724,-2342,-854, 676,2057,3206,4256,5389,6615,7649,8203,8295,8262, 8478,9048,9677,9938,9629,8913,8165,7657,7257,6475, 4941,2715,159,-2290,-4424,-6301,-7953,-9354,-10504,-11415, -12105,-12552,-12613,-12112,-11048,-9617,-8052,-6559,-5197,-3803, -2254,-667,774,1989,3067,4265,5649,6916,7709,7976, 7983,8141,8669,9389,9872,9819,9291,8645,8220,7994, 7557,6456,4624,2338,-66,-2347,-4443,-6356,-7995,-9336, -10467,-11431,-12192,-12654,-12609,-11942,-10779,-9374,-7955,-6612, -5239,-3673,-2005,-497,755,1882,3099,4561,6043,7110, 7597,7706,7842,8309,9069,9721,9889,9554,9016,8655, 8559,8379,7682,6300,4380,2163,-144,-2398,-4512,-6391, -7956,-9280,-10460,-11506,-12353,-12757,-12519,-11690,-10525,-9265, -8006,-6655,-5102,-3407,-1826,-523,615,1862,3362,4977, 6305,7056,7313,7444,7858,8645,9437,9789,9625,9205, 8889,8837,8841,8500,7581,6103,4189,2012,-274,-2533, -4619,-6410,-7926,-9282,-10547,-11709,-12562,-12789,-12348,-11486, -10464,-9378,-8136,-6605,-4884,-3258,-1901,-742,475,1984, 3709,5283,6317,6759,6938,7314,8083,8969,9514,9538, 9253,8991,8946,9028,8943,8447,7443,5924,3993,1808, -494,-2730,-4713,-6409,-7926,-9390,-10816,-12018,-12693,-12687, -12180,-11450,-10590,-9524,-8110,-6402,-4714,-3294,-2123,-947, 520,2321,4109,5432,6119,6408,6778,7528,8465,9151, 9364,9230,9033,8992,9109,9188,9003,8422,7361,5796, 3832,1596,-720,-2849,-4684,-6324,-7941,-9600,-11125,-12183, -12594,-12488,-12111,-11545,-10714,-9481,-7869,-6157,-4663,-3458, -2332,-938,875,2829,4412,5355,5825,6250,6975,7940, 8758,9163,9195,9069,9016,9138,9308,9329,9073,8437, 7328,5705,3640,1345,-872,-2812,-4541,-6265,-8086,-9863, -11275,-12099,-12394,-12378,-12159,-11657,-10702,-9251,-7562,-6020, -4792,-3718,-2424,-647,1408,3212,4414,5101,5631,6340, 7292,8224,8828,9051,9042,9001,9087,9286,9445,9428, 9155,8485,7296,5525,3336,1122,-865,-2676,-4488,-6416, -8384,-10084,-11269,-11960,-12317,-12449,-12315,-11714,-10510,-8911, -7357,-6116,-5110,-3951,-2292,-213,1779,3251,4179,4861, 5601,6555,7557,8324,8749,8896,8919,8985,9157,9354, 9499,9527,9274,8526,7143,5210,3071,1078,-756,-2634, -4637,-6709,-8648,-10154,-11171,-11880,-12396,-12669,-12486,-11616, -10169,-8647,-7424,-6461,-5422,-3934,-1935,166,1891,3090, 3948,4759,5729,6809,7732,8333,8639,8776,8868,8998, 9161,9365,9606,9713,9382,8411,6835,4924,2997,1170, -690,-2724,-4887,-6984,-8750,-10057,-11054,-11916,-12622,-12893, -12423,-11236,-9802,-8607,-7705,-6780,-5461,-3622,-1512,395, 1843,2912,3841,4840,5964,7021,7807,8294,8577,8745, 8843,8934,9126,9487,9867,9920,9368,8160,6535,4794, 3069,1270,-728,-2936,-5169,-7136,-8665,-9908,-11077,-12167, -12902,-12889,-12049,-10804,-9673,-8819,-8013,-6890,-5231,-3209, -1210,449,1716,2776,3861,5033,6166,7110,7810,8286, 8580,8704,8716,8825,9209,9772,10145,9994,9205,7900, 6381,4835,3189,1277,-928,-3257,-5368,-7064,-8485,-9910, -11356,-12523,-13003,-12597,-11617,-10606,-9831,-9144,-8223,-6804, -4903,-2880,-1092,366,1585,2765,4010,5214,6263,7151, 7867,8337,8524,8527,8547,8843,9442,10044,10267,9888, 8939,7686,6380,4967,3221,1074,-1290,-3511,-5322,-6866, -8466,-10193,-11767,-12750,-12847,-12216,-11371,-10680,-10123,-9424, -8259,-6553,-4582,-2721,-1128,261,1575,2885,4150,5293, 6342,7283,7981,8317,8344,8304,8484,9026,9739,10245, 10240,9655,8687,7631,6506,5031,3030,698,-1581,-3505, -5121,-6799,-8720,-10622,-12065,-12705,-12529,-11931,-11352,-10912, -10428,-9557,-8110,-6272,-4406,-2720,-1186,265,1660,2971, 4194,5381,6523,7464,8021,8178,8117,8163,8591,9336, 10044,10336,10075,9425,8654,7806,6640,4910,2701,416, -1568,-3265,-4977,-6960,-9089,-10950,-12116,-12432,-12163,-11776, -11482,-11173,-10580,-9459,-7860,-6090,-4360,-2710,-1145,327, 1696,2987,4284,5596,6773,7603,7972,7965,7904,8170, 8859,9670,10183,10201,9850,9374,8837,7991,6564,4578, 2382,360,-1372,-3082,-5069,-7323,-9504,-11147,-11964,-12092, -11950,-11840,-11718,-11358,-10552,-9274,-7705,-6017,-4298,-2632, -1094,315,1653,3018,4458,5866,6998,7634,7769,7680, 7805,8383,9189,9827,10067,9968,9776,9560,9047,7952, 6260,4222,2232,497,-1164,-3102,-5396,-7785,-9830,-11128, -11669,-11833,-11954,-12032,-11898,-11389,-10447,-9158,-7627,-5923, -4180,-2560,-1091,266,1630,3129,4731,6164,7116,7467, 7430,7477,7947,8711,9394,9760,9870,9905,9954,9806, 9088,7711,5896,4009,2319,741,-1078,-3344,-5851,-8161, -9882,-10882,-11407,-11781,-12072,-12162,-11950,-11362,-10381,-9074, -7507,-5782,-4073,-2520,-1143,187,1701,3419,5102,6380, 7015,7142,7186,7565,8259,8913,9332,9576,9797,10072, 10233,9904,8899,7345,5596,3991,2534,868,-1280,-3799, -6276,-8312,-9743,-10681,-11347,-11850,-12173,-12248,-11994,-11365, -10356,-8989,-7357,-5636,-4019,-2605,-1317,123,1909,3802, 5368,6319,6702,6865,7208,7821,8458,8882,9157,9477, 9929,10359,10409,9793,8550,7007,5525,4200,2731,767, -1656,-4204,-6485,-8271,-9593,-10588,-11344,-11887,-12225,-12300, -12021,-11353,-10277,-8810,-7120,-5468,-4035,-2792,-1449,293, 2323,4154,5416,6086,6436,6833,7416,8020,8448,8726, 9038,9569,10232,10619,10380,9484,8194,6886,5718,4453, 2735,500,-2006,-4451,-6560,-8223,-9527,-10573,-11368,-11951, -12315,-12395,-12115,-11399,-10171,-8567,-6912,-5469,-4254,-2999, -1363,687,2732,4301,5280,5872,6384,7000,7627,8057, 8296,8553,9074,9876,10575,10688,10115,9115,8017,6998, 5948,4524,2556,183,-2308,-4621,-6586,-8207,-9538,-10601, -11409,-12019,-12435,-12569,-12274,-11385,-9955,-8345,-6926,-5742, -4565,-3043,-1047,1097,2938,4252,5121,5816,6544,7249, 7728,7942,8111,8551,9385,10304,10764,10544,9830,8935, 8077,7217,6079,4456,2343,-73,-2503,-4687,-6569,-8182, -9520,-10553,-11367,-12062,-12600,-12757,-12259,-11103,-9616,-8226, -7101,-6023,-4643,-2783,-625,1387,2985,4151,5077,5983, 6841,7407,7614,7700,8031,8803,9821,10569,10704,10306, 9639,8934,8256,7392,6090,4311,2126,-276,-2611,-4731, -6616,-8194,-9445,-10463,-11399,-12273,-12871,-12837,-12025,-10745, -9443,-8357,-7392,-6194,-4492,-2402,-306,1478,2891,4060, 5186,6259,7009,7296,7331,7521,8156,9166,10117,10590, 10515,10083,9552,9042,8433,7458,5989,4104,1914,-442, -2754,-4885,-6720,-8161,-9327,-10470,-11650,-12644,-13082,-12717, -11715,-10561,-9555,-8676,-7676,-6205,-4222,-2086,-195,1369, 2775,4156,5472,6454,6901,6989,7096,7560,8462,9494, 10225,10462,10297,9944,9594,9199,8518,7385,5831,3935, 1747,-640,-2993,-5044,-6663,-7978,-9263,-10665,-12014,-12914, -13038,-12411,-11446,-10553,-9812,-8990,-7752,-5964,-3906,-1971, -304,1239,2843,4435,5709,6409,6622,6703,7030,7784, 8810,9710,10204,10283,10131,9948,9736,9302,8496,7305, 5751,3816,1520,-941,-3205,-5004,-6442,-7838,-9395,-11013, -12338,-12962,-12771,-12076,-11322,-10726,-10115,-9117,-7555,-5628, -3727,-2034,-417,1316,3140,4727,5750,6192,6328,6552, 7160,8116,9089,9778,10106,10172,10140,10074,9839,9326, 8521,7365,5744,3633,1201,-1188,-3193,-4779,-6252,-7887, -9697,-11383,-12492,-12761,-12406,-11877,-11436,-11010,-10268,-8955, -7222,-5426,-3747,-2105,-323,1642,3521,4915,5659,5944, 6138,6599,7444,8419,9203,9709,10008,10175,10233,10142, 9852,9375,8639,7420,5586,3298,892,-1260,-2992,-4518, -6200,-8139,-10094,-11630,-12378,-12400,-12143,-11932,-11708,-11196, -10162,-8671,-7040,-5458,-3858,-2087,-60,2044,3802,4908, 5434,5716,6117,6829,7729,8547,9180,9662,10014,10209, 10235,10116,9909,9541,8757,7321,5259,2897,665,-1171, -2740,-4401,-6392,-8567,-10462,-11646,-12093,-12162,-12196,-12202, -11951,-11202,-9972,-8544,-7117,-5639,-3962,-1952,293,2366, 3864,4714,5172,5605,6251,7052,7839,8541,9180,9686, 10007,10143,10148,10135,10089,9736,8751,7034,4817,2561, 642,-947,-2576,-4561,-6834,-8991,-10574,-11440,-11871,-12197, -12453,-12456,-12010,-11069,-9848,-8588,-7301,-5811,-3923,-1639, 678,2529,3734,4471,5032,5656,6376,7117,7856,8600, 9248,9686,9912,10010,10116,10300,10346,9845,8566,6615, 4413,2458,872,-697,-2633,-4946,-7283,-9175,-10433,-11226, -11845,-12381,-12678,-12533,-11882,-10889,-9814,-8740,-7490,-5812, -3626,-1205,943,2518,3588,4380,5069,5755,6447,7164, 7969,8751,9327,9648,9799,9960,10283,10642,10611,9816, 8221,6194,4262,2682,1195,-633,-2913,-5346,-7490,-9092, -10237,-11164,-11977,-12587,-12773,-12432,-11682,-10811,-9961,-8982, -7571,-5575,-3190,-873,1020,2447,3534,4392,5120,5786, 6480,7280,8132,8854,9298,9494,9667,10065,10651,11011, 10692,9525,7769,5939,4396,2994,1323,-821,-3253,-5571, -7452,-8903,-10122,-11222,-12150,-12701,-12675,-12169,-11530,-10939, -10239,-9134,-7430,-5211,-2857,-738,1017,2430,3517,4369, 5089,5777,6559,7460,8295,8853,9103,9258,9650,10393, 11091,11194,10468,9074,7443,5978,4663,3144,1195,-1129, -3531,-5632,-7311,-8774,-10160,-11411,-12298,-12602,-12377,-11957, -11598,-11184,-10401,-9056,-7143,-4896,-2675,-676,1046,2435, 3493,4318,5041,5837,6768,7698,8383,8687,8798,9142, 9923,10851,11352,11062,10057,8696,7362,6152,4807,3058, 901,-1462,-3692,-5557,-7204,-8846,-10412,-11639,-12286,-12364, -12188,-12032,-11857,-11405,-10436,-8885,-6901,-4722,-2564,-582, 1109,2423,3399,4182,4998,5993,7046,7843,8228,8329, 8571,9304,10356,11170,11304,10709,9659,8519,7453,6292, 4765,2787,534,-1686,-3651,-5439,-7269,-9110,-10656,-11643, -12046,-12123,-12174,-12226,-12073,-11508,-10383,-8715,-6716,-4571, -2406,-426,1182,2360,3235,4092,5153,6332,7287,7764, 7881,8046,8656,9716,10752,11265,11079,10359,9440,8561, 7630,6337,4555,2443,302,-1652,-3514,-5482,-7525,-9366, -10713,-11462,-11794,-12021,-12264,-12390,-12188,-11503,-10271,-8585, -6574,-4359,-2161,-260,1162,2166,3072,4203,5520,6649, 7264,7435,7542,8012,8986,10138,10960,11162,10771,10113, 9464,8764,7723,6172,4228,2191,288,-1535,-3542,-5736, -7819,-9510,-10643,-11275,-11697,-12123,-12477,-12578,-12280,-11505, -10240,-8530,-6418,-4087,-1941,-271,915,1899,3075,4512, 5844,6688,6992,7067,7384,8219,9403,10438,10951,10895, 10507,10097,9660,8894,7593,5873,4006,2193,425,-1523, -3745,-6006,-7981,-9473,-10436,-11087,-11686,-12239,-12599,-12654, -12318,-11535,-10240,-8374,-6065,-3752,-1858,-475,644,1887, 3397,4922,6033,6554,6675,6856,7516,8645,9813,10581, 10808,10693,10527,10336,9835,8818,7359,5688,4011,2350, 512,-1645,-3995,-6201,-7997,-9288,-10213,-11006,-11732,-12282, -12588,-12643,-12359,-11564,-10084,-7974,-5642,-3582,-2004,-753, 546,2131,3820,5194,5989,6254,6376,6860,7858,9040, 9969,10450,10599,10657,10686,10461,9748,8562,7116,5589, 4053,2376,370,-1915,-4230,-6281,-7903,-9123,-10141,-11038, -11748,-12261,-12629,-12803,-12538,-11542,-9765,-7561,-5434,-3692, -2304,-970,624,2451,4109,5198,5668,5851,6226,7085, 8206,9189,9841,10211,10497,10747,10776,10363,9484,8281, 6953,5591,4090,2255,86,-2219,-4399,-6275,-7819,-9126, -10203,-11020,-11680,-12312,-12872,-13114,-12680,-11357,-9380,-7278, -5438,-3941,-2577,-975,949,2845,4255,4992,5295,5646, 6372,7395,8391,9159,9710,10177,10634,10937,10825,10233, 9284,8160,6994,5708,4082,2060,-172,-2382,-4448,-6286, -7870,-9182,-10157,-10919,-11700,-12539,-13211,-13344,-12600,-11000, -9018,-7149,-5597,-4241,-2671,-679,1423,3131,4169,4677, 5075,5728,6647,7585,8388,9067,9686,10313,10857,11043, 10736,10038,9146,8188,7121,5728,3915,1832,-317,-2438, -4484,-6364,-7916,-9067,-9938,-10816,-11843,-12863,-13512,-13387, -12306,-10587,-8790,-7245,-5896,-4403,-2444,-196,1785,3155, 3938,4468,5114,5962,6859,7655,8356,9058,9823,10562, 11029,10996,10537,9884,9162,8316,7156,5583,3711,1699, -399,-2554,-4643,-6464,-7836,-8828,-9750,-10851,-12108,-13219, -13700,-13195,-11868,-10261,-8810,-7526,-6118,-4255,-1989,207, 1903,3014,3750,4446,5283,6157,6930,7622,8338,9182, 10094,10788,11019,10838,10428,9919,9287,8367,7059,5438, 3619,1629,-539,-2768,-4815,-6452,-7625,-8597,-9715,-11103, -12541,-13543,-13631,-12795,-11510,-10240,-9088,-7818,-6096,-3896, -1612,333,1768,2781,3621,4493,5383,6157,6821,7529, 8397,9400,10284,10767,10848,10705,10429,9984,9295,8277, 6957,5398,3581,1481,-801,-3030,-4914,-6288,-7325,-8435, -9884,-11547,-12971,-13608,-13289,-12401,-11423,-10476,-9389,-7889, -5839,-3519,-1406,289,1581,2638,3661,4629,5403,6033, 6720,7593,8647,9646,10329,10660,10772,10716,10471,9994, 9236,8209,6945,5400,3479,1225,-1132,-3247,-4837,-5964, -7047,-8487,-10293,-12042,-13166,-13380,-12927,-12264,-11585,-10763, -9521,-7699,-5469,-3241,-1333,200,1497,2715,3840,4697, 5301,5930,6778,7832,8903,9751,10286,10618,10791,10746, 10472,9948,9185,8211,6976,5344,3246,850,-1468,-3294, -4534,-5601,-6989,-8821,-10789,-12329,-13050,-13063,-12754,-12369, -11855,-10964,-9451,-7398,-5188,-3169,-1432,104,1561,2883, 3884,4559,5167,5949,6951,8039,9002,9731,10262,10634, 10802,10732,10414,9875,9194,8314,7037,5193,2850,414, -1630,-3055,-4137,-5437,-7227,-9304,-11152,-12317,-12777,-12838, -12769,-12596,-12093,-10968,-9189,-7113,-5090,-3232,-1484,215, 1761,2951,3748,4398,5161,6097,7148,8181,9055,9763, 10339,10730,10861,10729,10385,9941,9409,8532,7015,4853, 2377,167,-1437,-2593,-3823,-5509,-7602,-9693,-11247,-12108, -12539,-12797,-12950,-12836,-12147,-10754,-8924,-7006,-5109,-3210, -1319,450,1872,2862,3605,4348,5234,6237,7274,8233, 9071,9820,10417,10755,10793,10602,10358,10140,9685,8581, 6686,4304,1988,209,-1038,-2211,-3758,-5791,-7998,-9860, -11090,-11850,-12450,-12966,-13222,-12941,-11987,-10535,-8856,-7044, -5090,-3054,-1115,554,1818,2733,3529,4379,5323,6320, 7295,8216,9107,9909,10443,10625,10545,10442,10473,10421, 9793,8303,6127,3790,1842,458,-691,-2100,-3986,-6213, -8293,-9811,-10859,-11753,-12592,-13216,-13347,-12842,-11823,-10477, -8862,-6988,-4929,-2848,-969,550,1722,2666,3549,4471, 5425,6373,7310,8307,9304,10060,10405,10418,10398,10592, 10865,10717,9715,7862,5604,3535,2003,816,-485,-2230, -4363,-6523,-8302,-9627,-10774,-11887,-12812,-13328,-13276,-12713, -11784,-10504,-8824,-6841,-4722,-2658,-896,497,1646,2665, 3626,4553,5436,6347,7414,8574,9533,10058,10178,10198, 10472,10985,11269,10803,9388,7328,5224,3564,2335,1098, -524,-2550,-4672,-6559,-8134,-9536,-10877,-12071,-12927,-13306, -13197,-12705,-11839,-10509,-8728,-6659,-4522,-2551,-919,429, 1648,2734,3673,4498,5346,6413,7691,8855,9564,9808, 9878,10152,10778,11423,11488,10594,8848,6821,5103,3815, 2619,1115,-781,-2837,-4759,-6453,-8057,-9619,-11036,-12187, -12949,-13270,-13217,-12803,-11916,-10472,-8560,-6424,-4352,-2542, -966,473,1750,2778,3588,4369,5379,6709,8035,8957, 9361,9479,9717,10376,11274,11797,11435,10125,8295,6590, 5268,4068,2646,896,-1040,-2945,-4705,-6402,-8115,-9730, -11130,-12220,-12923,-13274,-13306,-12907,-11915,-10319,-8321,-6241, -4329,-2592,-919,595,1772,2634,3389,4313,5606,7067, 8227,8830,9001,9180,9778,10804,11721,11883,11074,9584, 7998,6680,5499,4145,2513,696,-1150,-2931,-4672,-6459, -8226,-9821,-11155,-12179,-12900,-13364,-13455,-12945,-11763,-10073, -8145,-6219,-4352,-2495,-746,664,1649,2414,3272,4472, 5978,7357,8201,8496,8629,9155,10216,11361,11963,11681, 10647,9299,8029,6872,5591,4089,2407,641,-1118,-2878, -4699,-6563,-8326,-9857,-11117,-12149,-13010,-13581,-13575,-12853, -11563,-9931,-8125,-6215,-4216,-2263,-621,570,1415,2210, 3330,4846,6386,7459,7904,8052,8473,9483,10765,11696, 11885,11327,10327,9213,8100,6900,5507,3933,2271,602, -1084,-2906,-4826,-6679,-8345,-9795,-11077,-12259,-13235,-60, -344,-465,-1054,-2758,-3308,-1828,-520,1443,4439,5127, 1410,-1028,470,2703,4723,6025,6626,7534,7005,7264, 7284,5542,4901,4122,1621,-1982,-4060,-5536,-8096,-9294, -8046,-6442,-3361,-1343,-4897,-10337,-13387,-13103,-11069,-6824, -771,2041,513,-2480,-3378,-932,1586,2630,1883,2095, 4463,7490,8832,8906,10583,13273,14218,14603,14022,10316, 6943,4610,886,-1406,157,2284,-183,-6025,-11480,-15806, -17706,-16299,-12224,-9540,-9788,-10355,-9968,-8127,-5049,-2699, -2208,-634,3557,7924,9468,10577,12579,13620,14229,14103, 11492,8206,5822,1745,-5508,-10326,-8737,-3709,-981,-1938, -4569,-9134,-13018,-13792,-11104,-7443,-4807,-3544,-4042,-3610, 20,3398,2683,1547,2333,2904,3446,4902,6358,8230, 12618,15533,13655,11806,11101,8213,1240,-5649,-6920,-4333, -1720,-1086,-2226,-5106,-8364,-10689,-11512,-10079,-5917,-3924, -6745,-6969,-2820,914,2800,3689,3897,3604,4081,3260, 423,208,3413,6652,6803,6652,8299,8438,4381,-1526, -5938,-6853,-4880,-2738,-1579,-2265,-3830,-7085,-10981,-10261, -5630,-3851,-6369,-8256,-6644,-2815,2198,5008,5591,7595, 10681,10815,7233,5179,6743,8698,8074,7399,8851,10237, 7964,2754,-2984,-7232,-7986,-7397,-6996,-4925,-3900,-7884, -13729,-14361,-10688,-7644,-7390,-9620,-10480,-7525,-1815,2477, 4826,9309,15795,18863,16959,14974,15069,14773,12776,10844, 10209,10281,8663,3414,-3904,-10099,-14009,-17186,-18244,-14520, -10786,-11401,-15239,-16908,-14179,-9031,-4382,-4285,-6777,-6011, -2625,-612,242,3911,10605,15041,15306,14496,14441,14104, 12623,11028,10842,12499,14224,11642,6396,1291,-5457,-12242, -15015,-12014,-7363,-6315,-9773,-14977,-16978,-13492,-8219,-5969, -7227,-6770,-3741,-2306,-2684,-969,3397,7399,8624,8680, 9086,10100,10715,9324,9279,11918,14527,14871,13852,11779, 6138,-2277,-10247,-12785,-9740,-5456,-5064,-9194,-13099,-12317, -8560,-6675,-7323,-7032,-5271,-4657,-5733,-5111,-2839,559, 3968,4847,5320,7599,8791,7881,7668,9621,11379,12057, 13417,14714,12106,5215,-3570,-10675,-11498,-7691,-5026,-7786, -11787,-11584,-8370,-5988,-5571,-4906,-4364,-5148,-6816,-8667, -8423,-4976,-1539,-36,1922,5802,8683,8561,8805,10530, 11494,12724,14984,18062,20175,17938,11202,2434,-5135,-6107, -4734,-7595,-13140,-15515,-14408,-12541,-10189,-7942,-5908,-4064, -4820,-7634,-8284,-5718,-3211,-1819,686,3906,5616,5981, 6126,6918,7349,7318,8179,11477,17142,20961,18020,10490, 1874,-1885,-1734,-3491,-7562,-12027,-14314,-14235,-13685,-12641, -9681,-6161,-5748,-8491,-9613,-8039,-6462,-5017,-2070,1682, 4901,7237,8793,10768,12692,12815,11847,12614,17671,24258, 24882,19063,10896,2543,-2228,-4153,-7120,-12421,-16757,-18575, -20081,-20470,-17349,-12614,-10829,-11909,-12771,-12410,-11430,-10119, -7942,-4448,-775,2775,5527,8301,12338,15116,14049,13452, 17773,25987,30918,29766,23855,15338,8123,3374,-1282,-7249, -12226,-16283,-21178,-24588,-23015,-18807,-15307,-13649,-13140,-12996, -12413,-11177,-9420,-6222,-2199,1128,2931,4779,9376,13175, 11924,8830,9868,16086,23946,28272,26044,19157,13141,8960, 3842,-731,-3756,-7118,-12004,-16681,-18327,-16833,-13942,-11431, -10247,-10648,-11654,-12119,-12758,-12136,-8781,-5878,-5059,-3058, 2012,7186,8327,5958,3694,6412,13662,22301,25868,23424, 20204,16173,10222,4746,1148,-2304,-6983,-12682,-16736,-17698, -15952,-12880,-10172,-8160,-7110,-7474,-8844,-9075,-6490,-4420, -4506,-3508,255,5446,8851,7008,653,-2228,2266,10011, 15580,17318,16685,14373,10531,6129,3226,1333,-1146,-5113, -9567,-12588,-12780,-11296,-9538,-6676,-3630,-3606,-5879,-7331, -6361,-5583,-6064,-6256,-4477,1284,8719,10951,6298,1127, 1467,6582,12525,17182,19289,18536,15362,10690,6286,2818, -193,-4062,-9467,-13987,-15727,-16177,-16066,-12827,-7170,-4077, -3488,-3577,-3181,-1946,-1234,-2801,-4428,-1200,6092,10905, 9477,4005,302,814,4362,9771,14315,16463,16598,14251, 10112,6734,4877,1773,-3632,-7841,-10806,-14128,-16514,-16053, -12580,-8768,-7107,-8029,-9514,-8717,-7480,-9660,-13496,-12712, -5955,1816,5818,5228,2199,183,1625,6120,11925,17331, 21059,21142,17954,14760,12403,8710,3918,476,-2923,-7708, -12047,-14578,-13723,-9619,-6116,-6191,-7542,-5966,-3589,-4992, -9851,-12869,-10091,-3532,2998,6433,5524,2819,1469,2023, 5137,11412,17970,20317,19641,19231,17922,14717,10675,6702, 2827,-2348,-8417,-14366,-17020,-14434,-11179,-10888,-11819,-9772, -5626,-4345,-7344,-11906,-13679,-10102,-3256,2638,4753,3875, 1839,-987,-1293,3560,9726,13360,15212,16474,16163,13924, 11012,7527,4750,1794,-3673,-10479,-14665,-13541,-10083,-8762, -8966,-6708,-1880,1855,1702,-2913,-8494,-9983,-7061,-3105, 377,2408,761,-3549,-5934,-3903,640,5493,9540,12223, 13229,12777,11109,8366,6957,6792,4008,-2471,-8727,-10434, -8955,-8061,-7937,-6876,-2887,2964,6528,4641,-739,-4660, -5817,-4580,-575,3743,4240,788,-3632,-6088,-5376,-1646, 2451,5347,8067,9652,9024,6528,4864,5968,5931,1897, -3441,-6206,-6269,-5997,-6539,-7541,-5778,134,5755,7081, 5017,1607,-2040,-3920,-1683,2785,5430,4656,936,-3148, -4906,-3791,-1222,1265,4435,7448,7707,5077,2469,3009, 3951,2068,-2191,-6886,-8877,-8374,-8920,-11650,-12518,-8104, -2136,1872,3679,2432,-1090,-3940,-3661,-148,4133,6431, 4711,525,-2637,-3624,-2906,-1405,2295,7618,9531,7931, 5917,5254,6148,6458,3530,-2042,-5442,-5549,-6589,-9767, -11957,-10371,-5355,687,5384,6529,3836,-385,-3133,-2569, 986,4637,5284,2602,-24,-1715,-3815,-4888,-2399,2951, 7264,8748,7899,6821,8094,10263,9090,4242,194,-1377, -3295,-6523,-10340,-12760,-11405,-6943,-1774,1904,2724,595, -3322,-5970,-4575,-430,2224,1977,1930,1582,-1041,-3534, -3765,-846,4166,7807,7831,6068,7073,9581,9322,6140, 2238,-471,-2538,-5322,-8919,-12810,-14669,-12547,-7640,-1995, 2704,4227,1317,-2699,-2852,-216,2269,4123,5458,5754, 3624,-55,-3712,-4454,-60,4809,5780,4640,5446,8125, 9469,8193,5075,1939,-85,-2089,-5075,-9321,-13114,-14355, -13251,-9414,-3176,1016,332,-2779,-4468,-4365,-2765,389, 3371,6052,7669,5762,874,-2079,515,5322,7679,7527, 7582,9641,11915,12382,10525,7428,5368,3490,-36,-4565, -9175,-13798,-17306,-16513,-11086,-5993,-4205,-5193,-7203,-8506, -8317,-6576,-4397,-537,4673,5912,2261,-1928,-2214,1137, 4278,5920,6772,8849,12537,14982,14159,11344,9492,8368, 5861,3170,283,-5224,-11778,-14653,-12629,-8629,-5183,-3964, -5750,-7584,-8172,-8746,-8447,-5096,1155,5487,4903,1690, -500,79,2357,4434,5286,6887,11116,15112,16066,15199, 14153,12453,10225,8810,7077,2384,-4566,-11107,-14464,-13340, -9590,-7687,-9045,-10534,-11743,-14398,-16957,-16103,-10724,-4482, -1380,-1974,-4075,-4488,-2755,-673,432,2245,6549,10812, 13545,15639,16161,14875,13336,12791,12051,9597,4882,-2246, -8788,-10370,-8010,-5495,-5010,-5097,-5140,-7802,-12529,-15485, -13949,-9115,-4548,-2869,-4327,-5291,-4096,-3140,-2505,-444, 3289,7359,11484,15916,18461,18771,18489,18217,18440,18670, 16376,10657,2868,-4064,-6955,-7641,-7653,-6969,-5486,-6071, -9807,-14521,-17035,-14793,-9857,-6575,-6257,-6417,-5849,-6406, -6818,-5416,-3295,-382,3727,8140,11639,13605,13672,12423, 12493,14723,15945,13055,6535,12,-4023,-6476,-7220,-6386, -4353,-2347,-3093,-7611,-12854,-13853,-11211,-9002,-7854,-7025, -6757,-7328,-7696,-7362,-6342,-3895,-461,3452,8181,12491, 14049,12724,12123,14736,17892,17854,13618,7543,1982,-2742, -5921,-7292,-6237,-2820,-1009,-3889,-9248,-12255,-12103,-10390, -7581,-5576,-4942,-4794,-5329,-6089,-6151,-4782,-2629,-146, 4020,9374,12572,11642,9555,10823,14384,16730,15937,11616, 6055,983,-3820,-8028,-8969,-5376,-1677,-1479,-4332,-8238, -10733,-10943,-9217,-7395,-6100,-4817,-4637,-5638,-6329,-5900, -4967,-3773,-293,5690,10656,11817,10201,9524,11796,15420, 17632,16362,13003,8891,2597,-4631,-8960,-8441,-5604,-3681, -3938,-6674,-9593,-11160,-11576,-10610,-8408,-5661,-4246,-4593, -4743,-4289,-4459,-5258,-4007,460,5628,8763,8561,6525, 6581,9556,12738,13923,13855,12444,7787,678,-5962,-9289, -8451,-5711,-3814,-4259,-5940,-7579,-9294,-9827,-8183,-5238, -3389,-3143,-2611,-1723,-1923,-3007,-3337,-1183,3609,8673, 10399,8560,7541,8739,10341,11666,12746,13094,11225,6201, -1225,-7997,-10361,-9224,-7499,-6740,-6751,-7277,-9000,-10433, -9430,-6458,-4077,-3231,-2245,-1208,-793,-1509,-3549,-4041, -355,5187,8552,9047,8979,9494,10370,11660,12902,14306, 14905,12482,6700,-877,-6279,-8274,-8575,-7833,-6938,-6891, -9032,-11712,-11968,-10294,-7790,-5687,-4528,-3000,-1015,-517, -2909,-5256,-3574,631,4373,6512,7411,8473,9481,10219, 10983,12436,14922,15384,11870,5509,-1002,-5531,-8413,-8876, -7141,-6147,-7443,-10372,-12990,-13531,-11810,-9898,-9259,-7689, -4172,-1701,-2390,-4574,-4990,-2392,1384,4568,6462,8014, 9918,10918,11015,12107,15358,18279,17815,13977,8153,1722, -3888,-6786,-6779,-5598,-5241,-7263,-10630,-12676,-12133,-11007, -10856,-9863,-6575,-2665,-830,-1778,-3512,-3258,-714,2255, 4276,6246,8493,9451,8653,8126,10368,13935,15879,15654, 12362,6340,-486,-5984,-8420,-7911,-6039,-6159,-8700,-10439, -10353,-9836,-10235,-10487,-8694,-5122,-1645,-720,-2504,-3682, -2651,-559,1126,2737,5333,6924,6664,6262,7081,9861, 13485,16754,17500,14721,9345,2175,-3888,-5974,-5240,-5387, -7811,-9910,-10457,-10626,-11192,-12349,-12313,-9456,-5214,-2319, -2543,-3779,-3590,-2942,-1986,124,3497,6547,7863,7798, 6798,7194,9943,13431,16311,17325,14925,8867,1438,-2779, -3348,-3402,-4628,-6514,-7396,-7341,-8081,-10615,-13320,-12869, -9626,-6771,-5738,-5562,-5386,-5998,-6333,-5107,-2491,1114, 4323,6000,5957,6149,8163,11006,15045,19705,21525,18272, 11670,5743,2503,847,-1094,-3997,-6192,-6603,-7173,-9706, -13216,-14163,-12101,-9818,-7793,-6068,-4942,-4627,-4908,-4991, -4237,-1450,1860,3448,3886,4104,4264,4718,7311,12415, 16995,17743,13811,8203,4192,2156,732,-1662,-3989,-4066, -3486,-5091,-8521,-10957,-10940,-9713,-8084,-6756,-5695,-4422, -4097,-4966,-5545,-3932,-1099,900,2511,3479,3314,2648, 3439,7486,13409,17732,17665,13433,8529,5393,3051,176, -2412,-2818,-2221,-2943,-5486,-8549,-10154,-10264,-9636,-8944, -7867,-5602,-4388,-5100,-5968,-5703,-4105,-2182,346,2847, 3493,2193,921,2814,8400,14859,18497,17413,14249,11395, 8082,3767,-395,-2356,-2470,-3036,-4781,-7955,-10909,-12168, -12750,-12840,-11671,-8616,-5715,-4679,-4746,-5194,-5058,-3903, -1427,1928,4197,4297,2442,1392,4534,11033,16840,18620, 17418,15709,12919,8643,4012,727,-148,-276,-1284,-3758, -6375,-8268,-10467,-12216,-12451,-10718,-7993,-6284,-5456,-5630, -6376,-6550,-5657,-3027,231,2206,1388,-1013,-381,4620, 10928,15341,17048,17270,15943,12633,7766,2724,147,-576, -1269,-2449,-4123,-5763,-8332,-11272,-12659,-12159,-9901,-7493, -5563,-4424,-4695,-5505,-6122,-5117,-1737,1751,2288,-454, -2559,-1023,3213,8401,12620,15334,16856,16119,12804,7870, 4175,2640,1613,641,-241,-1243,-3396,-6873,-9930,-11851, -11940,-10554,-8598,-6530,-5323,-5453,-7092,-8075,-5555,-1070, 1864,1463,-608,-993,1204,5358,9810,13731,17343,19004, 17573,13593,9077,5719,2771,651,-483,-1208,-2169,-4575, -7548,-10440,-12146,-11905,-10898,-8832,-6018,-4775,-6245,-8675, -8245,-4752,-855,821,-613,-2382,-2342,-508,2576,6368, 11498,16112,17722,16617,13639,10491,7210,4103,2118,739, -218,-1902,-4974,-8414,-11286,-12841,-13449,-12095,-8511,-5592, -5371,-7576,-9085,-7148,-2986,596,1324,101,-548,-505, 221,2305,6427,11740,15553,16989,16260,14050,11125,7706, 4643,2440,1527,733,-1613,-4541,-7475,-10412,-12916,-13520, -11006,-7096,-4797,-5910,-9038,-10369,-8194,-4530,-2235,-1764, -1709,-1872,-2084,-1254,1842,7353,13009,17237,19172,19016, 17793,15055,11383,8228,6296,4582,1792,-952,-3476,-6792, -10916,-14310,-14639,-11775,-7970,-6521,-8678,-11107,-11071,-8761, -5912,-4081,-2732,-2116,-2657,-3182,-2548,489,5640,10719, 14261,16196,17201,16023,12873,10144,8213,6598,4501,2516, 927,-1742,-5741,-10618,-13990,-13213,-9749,-6903,-7202,-9536, -10830,-10472,-8849,-6723,-4875,-3490,-3222,-3853,-4609,-3626, 204,4889,9466,13508,16510,17414,15664,13327,11261,9149, 7169,5129,3839,2921,523,-4263,-9685,-11936,-9922,-6490, -4880,-5639,-6983,-7729,-7634,-6423,-4775,-2638,-1063,-1491, -3262,-4472,-3475,-956,2569,7292,11623,14313,14774,13515, 11623,9547,7380,4906,3345,3299,2905,-430,-6515,-11386, -12341,-10510,-8110,-7024,-7441,-8213,-8718,-8617,-7694,-5263, -2296,-1228,-2050,-3269,-3660,-2864,-487,3633,8389,12767, 15236,15379,14404,12870,10659,7265,3960,2869,3161,1774, -2792,-8562,-12317,-12914,-11140,-9226,-8377,-7927,-7918,-8306, -8058,-5943,-2547,-292,218,-646,-2035,-2752,-2594,-399, 3876,8982,13349,15525,16288,16416,15343,12277,8254,6039, 6000,6109,4069,-947,-6562,-10082,-10876,-10528,-10307,-9843, -9921,-11224,-12193,-11523,-8761,-5468,-3213,-2206,-2298,-2695, -3427,-3439,-1064,3445,8350,11515,13580,15635,16263,14522, 10958,7750,6637,7111,7048,3996,-1333,-6062,-9198,-10629, -10529,-9626,-8893,-9344,-10172,-10513,-9434,-6918,-4363,-2461, -1681,-1902,-3233,-5222,-5118,-2097,2206,6059,9470,13289, 16276,17095,15150,11501,9083,9142,9888,8699,5003,279, -4481,-7958,-9368,-9309,-8476,-8426,-9486,-10588,-10921,-9748, -7839,-5658,-3436,-2111,-2497,-4631,-6005,-4890,-2199,1032, 4308,7934,12038,15400,15920,13145,10007,8872,9240,9539, 8138,4786,126,-4688,-8105,-9417,-9092,-8555,-9041,-10253, -11138,-10787,-9819,-8271,-5462,-2742,-1749,-2859,-4483,-4975, -3881,-1335,1404,4456,8948,13828,16617,15875,13226,11268, 10817,11342,11465,9897,6309,1216,-3655,-7027,-8381,-8326, -8901,-10136,-11317,-11927,-12015,-11446,-9041,-5694,-3143,-2171, -3174,-4628,-4836,-3614,-2136,-392,3483,8995,13690,15612, 14588,12643,11305,11128,11785,11693,9942,6065,709,-4206, -7290,-8378,-9022,-9989,-10911,-12018,-12955,-13244,-12109,-9179, -5494,-2663,-2288,-3306,-3925,-3938,-3851,-3562,-1368,3448, 9268,14000,15862,15016,13341,12282,12373,12866,13039,11579, 7232,1737,-2919,-5887,-7608,-8762,-9463,-10517,-11704,-12856, -13655,-12260,-8670,-4869,-2875,-2464,-2173,-2070,-2614,-3656, -4141,-2207,2244,7668,11757,13086,12520,11175,10081,10183, 11338,12038,10411,6694,2246,-1919,-4815,-6761,-7953,-8696, -9477,-10795,-12687,-13146,-11045,-7681,-4983,-3722,-2940,-2254, -2135,-2979,-4465,-4586,-1948,2871,8076,11986,14001,13844, 12344,11631,12169,13169,13063,10856,6930,2182,-1807,-4994, -7255,-8109,-8601,-9833,-11984,-13729,-13345,-11005,-7949,-5709, -4181,-2606,-1348,-1324,-2989,-4847,-4700,-2120,2249,7232, 11186,12772,11906,10789,10753,11777,13018,12802,10582,6732, 2220,-2080,-5566,-7194,-7552,-8207,-10000,-12653,-14349,-13999, -11889,-9344,-7159,-4711,-2053,-448,-813,-2541,-3662,-3209, -639,4065,9134,12684,13655,12769,11762,11767,12906,13645, 13040,11086,7651,3112,-1776,-5340,-6779,-7282,-8476,-11024, -13789,-15301,-14819,-13068,-11206,-8783,-5519,-2694,-1246,-1548, -3029,-4376,-4087,-1128,3723,8842,12441,13337,12670,12120, 12653,13641,14117,13907,12265,8914,4097,-699,-3685,-5005, -5956,-8066,-11297,-13908,-14967,-14766,-13881,-12124,-9143,-5832, -3025,-1627,-2236,-4094,-5679,-5326,-2329,2648,7862,11060, 12211,12355,12610,13355,14136,14995,15095,13296,9358,4134, -404,-3075,-4371,-6007,-8975,-11923,-13941,-15012,-15122,-14216, -12310,-9498,-6096,-3006,-1587,-2056,-3942,-5723,-5198,-1877, 3363,8076,10834,12051,12400,12488,12755,13713,15003,15179, 13372,9215,4205,580,-1294,-2778,-5193,-8115,-10802,-13042, -14495,-15205,-15025,-13388,-10565,-6965,-3726,-2131,-2787,-5164, -6932,-6124,-2478,2468,6823,10087,11807,12266,12491,13175, 14815,16739,17513,15467,11023,6679,3505,1034,-1466,-4518, -7694,-10567,-13094,-15171,-16607,-16682,-15133,-12037,-7948,-4328, -2623,-3767,-6346,-7710,-6812,-3624,784,5146,8290,9947, 10673,10827,11848,14534,17066,17287,14866,11259,7744,4763, 2174,-573,-3488,-6288,-8998,-11532,-13816,-15441,-15794,-14486, -11120,-6719,-3240,-2344,-3958,-6289,-7653,-6614,-3447,543, 4620,7869,9482,9426,9471,11257,14151,16326,16359,14330, 11417,8227,5228,2397,-436,-3066,-5527,-7895,-10322,-12810, -14890,-15978,-14679,-10938,-6584,-3418,-2920,-4719,-7162,-8197, -7054,-4350,-249,4236,7423,8654,8579,9085,11053,13706, 15373,15121,13514,11210,8529,5713,2806,182,-2263,-4750, -7027,-9465,-12139,-14686,-15779,-14224,-10394,-5694,-2652,-2507, -4070,-5817,-6684,-6191,-3747,272,4197,6669,7262,7363, 8472,10800,13551,15225,15323,14448,12631,10049,7096,4196, 1308,-1657,-4129,-6636,-9763,-13160,-16183,-17307,-15541,-11468, -7369,-5219,-5079,-6418,-8017,-8845,-8136,-5180,-863,3151, 5683,6725,7668,9643,12426,14888,16223,16529,15568,13407, 10856,8097,5061,1885,-929,-3357,-5885,-8951,-12872,-16367, -17356,-15351,-11493,-7825,-5605,-5166,-6165,-7696,-8541,-7570, -4370,-50,3500,5283,6168,7508,9609,12223,14830,16615, 16809,15665,13876,11423,8547,5399,2089,-597,-2589,-4827, -8484,-12968,-16364,-17303,-15518,-12161,-8715,-6393,-5837,-6699, -8226,-9080,-7849,-4543,-653,2200,3940,5271,6714,9016, 12021,14610,16160,16484,15789,14296,12273,9594,6041,2779, 662,-902,-3391,-7639,-12337,-15794,-16779,-15286,-12449,-9277, -6960,-6252,-7320,-9175,-9636,-7911,-4803,-1432,1184,2728, 3868,5675,8453,11521,14355,16080,16412,15945,14869,12936, 9740,6011,3166,1398,-206,-3090,-7435,-11976,-15192,-15984, -14824,-12309,-9067,-6628,-6292,-7646,-9037,-9151,-7583,-4675, -1856,52,1483,2832,4747,7459,10600,13328,15047,16124, 16504,15817,13753,10379,7069,4722,3308,1626,-1667,-6366, -11045,-14390,-15974,-15379,-12590,-9319,-7343,-7101,-8314,-9499, -9290,-7391,-4634,-2174,-348,896,2158,4223,7102,10204, 12722,14634,16115,16804,16119,13652,10179,7074,5323,4271, 2193,-1314,-5611,-10172,-13888,-15555,-14658,-11984,-8989,-7126, -7108,-8256,-9222,-8964,-7249,-4840,-2642,-1180,-240,1070, 3250,6174,8923,11232,13570,15586,16635,15823,13140,10096, 7915,6521,4908,2568,-870,-5497,-10287,-14106,-15835,-14954, -12156,-9016,-7253,-7295,-8151,-8789,-8189,-6368,-4098,-2231, -1198,-159,1433,3595,5984,8048,10117,12568,14929,15737, 14329,11946,9617,7914,6794,5461,3289,-247,-4976,-9988, -14107,-15769,-14681,-11917,-9058,-7629,-7654,-8399,-8806,-7871, -5769,-3494,-1927,-790,491,2143,4262,6162,8029,10664, 13686,15894,16238,14893,12667,10432,8913,7864,6585,4454, 911,-4116,-9650,-14059,-15976,-15206,-12724,-10180,-8723,-8714, -9534,-9579,-8408,-6384,-4463,-3212,-2059,-466,1466,3157, 4738,7051,10169,13427,15663,16166,15025,13024,11103,9532, 8284,7125,5087,1499,-3790,-9595,-13982,-15985,-15403,-13059, -10573,-9223,-9247,-9686,-9459,-8108,-6229,-4901,-3771,-2216, -383,1191,2418,3963,6298,9604,12977,15075,15636,14795, 13056,11225,9757,8838,7987,6192,2708,-2372,-7950,-12414, -14389,-13726,-11792,-9831,-8999,-9329,-9666,-9166,-7828,-6576, -5494,-4161,-2532,-811,491,1664,3459,6189,9655,12835, 14947,15606,14855,13233,11378,10086,9354,8446,6628,3047, -2177,-7800,-12274,-14285,-13969,-12294,-10861,-10603,-10762,-10609, -9740,-8360,-7035,-5616,-3879,-1930,-486,283,1213,2837, 5503,8840,11974,14323,15240,14619,13108,11422,10367,9894, 9336,7649,4070,-970,-6612,-11097,-12881,-12319,-10954,-10219, -10255,-10479,-10353,-9712,-9023,-8103,-6630,-4776,-3031,-1898, -1185,-224,1451,4146,7627,11121,13805,15052,14829,13584, 12328,11734,11469,10840,9038,5395,-53,-6059,-10565,-12470, -12240,-11392,-11105,-11217,-11204,-10983,-10592,-9908,-8739,-6982, -4955,-3265,-2177,-1504,-674,969,3630,7009,10515,13332, 14711,14487,13443,12541,12104,12054,11850,10305,6581,972, -4912,-9128,-10793,-10876,-10705,-10591,-10418,-10170,-10069,-10076, -9733,-8749,-7103,-5140,-3648,-2843,-2328,-1494,105,2678, 6180,9896,12679,13879,13629,12560,11536,11283,11734,11937, 10618,6728,1088,-4312,-7998,-9758,-10435,-10731,-10624,-10241, -9881,-9776,-9758,-9454,-8498,-6839,-5181,-4047,-3324,-2822, -2248,-989,1535,5156,8961,12009,13495,13411,12631,11896, 11874,12569,12863,11219,7034,1629,-3291,-6848,-9040,-10349, -10993,-11052,-10748,-10558,-10601,-10480,-9791,-8462,-6857,-5400, -4129,-3350,-3033,-2473,-1133,1403,4958,8795,11842,13407, 13403,12340,11448,11737,12762,12938,10946,6898,2005,-2489, -5862,-8262,-9837,-10536,-10506,-10253,-10344,-10523,-10164,-9284, -7977,-6441,-4969,-3883,-3298,-3008,-2607,-1346,1176,4608, 8360,11468,13042,12763,11596,11183,12046,13323,13334,11203, 7340,2819,-1447,-5084,-7944,-9746,-10393,-10535,-10821,-11193, -11289,-10889,-9865,-8407,-6808,-5213,-3990,-3344,-3096,-2663, -1459,823,4346,8362,11501,12603,11858,10782,10744,11963, 13200,12946,10755,7142,3010,-1205,-5083,-7917,-9574,-10285, -10473,-10694,-11021,-11098,-10603,-9613,-8251,-6452,-4752,-3631, -3041,-2741,-2343,-1467,679,4395,8515,11445,12171,11327, 10534,10946,12480,13631,13270,11413,8226,4062,-409,-4433, -7509,-9431,-10343,-10939,-11576,-11973,-12026,-11591,-10616,-9021, -7119,-5587,-4477,-3788,-3557,-3463,-2595,91,4405,8840, 11703,12257,11543,11335,12289,13666,14455,14141,12443,9383, 5371,881,-3237,-6272,-8136,-9199,-9948,-10500,-11075,-11555, -11474,-10668,-9229,-7546,-5926,-4651,-4209,-4593,-5038,-4230, -1363,3205,7640,10001,10456,10315,10566,11522,12784,13681, 13772,12739,10312,6452,2014,-1907,-5020,-7281,-8841,-9928, -10912,-11870,-12354,-12193,-11393,-10011,-8150,-6054,-4565,-4111, -4777,-5541,-4636,-1436,3061,7070,9429,10300,10543,11090, 12115,13279,14309,14731,13847,11174,7195,2989,-871,-4106, -6563,-8237,-9425,-10567,-11435,-11946,-12045,-11493,-10273,-8432, -6324,-4790,-4744,-5905,-6463,-5056,-1693,2582,6185,8400, 9433,10100,10845,11754,13132,14597,15275,14495,12039,8483, 4418,445,-2805,-5293,-7168,-8761,-10172,-11358,-12236,-12482, -12179,-11027,-8847,-6554,-5342,-5834,-7136,-7539,-6019,-2654, 1268,4530,6807,8165,9000,9821,11176,13174,14961,15868, 15386,13268,9857,5845,2129,-1107,-3679,-5629,-7452,-9063, -10338,-11406,-12255,-12432,-11168,-8839,-6686,-5879,-6727,-8085, -8228,-6350,-3107,376,3465,5738,6991,7666,8545,10183, 12247,14199,15458,15164,13153,9956,6223,2563,-552,-3074, -5308,-7146,-8448,-9649,-11000,-12045,-11891,-10206,-7577,-5494, -5253,-6495,-7663,-7556,-5850,-3071,185,3142,5037,6045, 6754,7739,9460,11786,14047,15312,15218,13564,10545,6962, 3461,303,-2634,-5052,-6724,-8046,-9457,-11119,-12333,-11994, -9924,-7276,-5687,-5796,-6848,-7721,-7551,-5927,-3033,238, 2981,4929,5987,6579,7656,9458,11694,13879,15365,15464, 13760,10946,7651,4115,646,-2503,-4947,-6659,-8124,-10025, -12254,-13509,-12757,-10397,-7925,-6565,-6548,-7442,-8200,-7834, -6130,-3332,-107,2671,4514,5486,6317,7395,9015,11332, 13749,15341,15429,14141,11796,8777,5397,1860,-1316,-3671, -5380,-7171,-9697,-12196,-13253,-12407,-10199,-7878,-6700,-6924, -7944,-8750,-8590,-6965,-4040,-954,1669,3624,5002,5982, 7109,9034,11539,13992,15617,15833,14814,12787,9926,6395, 2617,-499,-2637,-4472,-6851,-9827,-12421,-13466,-12590,-10346, -8159,-6995,-7092,-8094,-8998,-8735,-6980,-4376,-1586,1029, 2908,4024,4939,6315,8477,11153,13665,15231,15590,14971, 13421,10623,6942,3418,796,-1171,-3214,-5910,-9165,-11899, -12922,-12037,-10017,-7980,-6966,-7425,-8659,-9510,-9242,-7750, -5336,-2482,15,1791,2854,3806,5392,7830,10754,13213, 14840,15718,15602,14039,11016,7383,4201,1870,19,-2319, -5569,-9106,-11849,-12932,-12104,-10048,-8063,-7343,-7900,-9036, -9831,-9523,-8010,-5530,-2747,-350,1324,2228,3199,5039, 7603,10246,12546,14558,15903,16012,14563,11636,8192,5409, 3487,1607,-1076,-4633,-8508,-11579,-12674,-11771,-9731,-7962, -7412,-8028,-9252,-10012,-9684,-8226,-5844,-3142,-856,460, 1302,2601,4557,6917,9372,11907,14283,15967,16302,14725, 11705,8655,6250,4382,2417,-412,-4269,-8444,-11433,-12342, -11421,-9588,-8169,-7847,-8591,-9712,-10440,-10249,-8675,-6128, -3504,-1503,-198,958,2369,4210,6355,8645,11313,14132, 16075,16350,14832,12270,9599,7451,5785,3814,696,-3623, -7995,-11061,-12148,-11411,-9895,-8721,-8338,-8905,-10094,-11145, -10979,-9237,-6744,-4399,-2609,-1268,78,1751,3574,5532, 8012,11157,14181,16135,16464,15141,12775,10386,8659,7217, 5038,1546,-3035,-7485,-10535,-11520,-10906,-9623,-8382,-7899, -8557,-10013,-11027,-10740,-9143,-6858,-4771,-3176,-1723,-186, 1348,2769,4623,7396,10748,13886,15989,16321,14921,12758, 10922,9652,8300,6024,2209,-2573,-7041,-10051,-11308,-11032, -9711,-8402,-8116,-8958,-10331,-11102,-10580,-8967,-7104,-5516, -3948,-2230,-632,740,2148,4070,6845,10306,13721,15744, 15813,14382,12495,11080,10242,9266,6956,3029,-1598,-6090, -9527,-11164,-10970,-9669,-8446,-8192,-9151,-10434,-10854,-10099, -8756,-7343,-5866,-4230,-2736,-1401,-199,982,2915,6018, 9881,13353,15365,15493,14067,12423,11559,11089,10022,7609, 3918,-701,-5334,-8854,-10605,-10517,-9358,-8370,-8501,-9594, -10518,-10643,-10141,-9162,-7859,-6275,-4535,-2871,-1489,-547, 481,2421,5573,9455,12961,14933,14794,13580,12598,12081, 11764,10793,8512,4808,200,-4403,-8072,-9849,-9647,-8607, -8057,-8407,-9167,-9828,-10065,-9775,-9124,-8071,-6593,-4858, -3317,-2334,-1652,-683,1196,4641,8916,12439,14153,14162, 13437,12766,12556,12348,11325,9046,5430,831,-3991,-7603, -9153,-9230,-8766,-8675,-9120,-9768,-10299,-10379,-10127,-9596, -8370,-6649,-4882,-3401,-2523,-2113,-1465,598,4177,8312, 11700,13462,13784,13401,13095,13088,12836,12039,10004,6274, 1351,-3507,-6947,-8568,-8826,-8560,-8558,-9004,-9572,-10132, -10505,-10517,-9878,-8663,-6991,-5103,-3683,-3043,-2814,-1938, 475,4169,8375,11698,13358,13840,13747,13618,13633,13719, 13188,11074,7174,2253,-2503,-5986,-7801,-8414,-8678,-8918, -9249,-9874,-10538,-10933,-10973,-10456,-9207,-7203,-5154,-3933, -3642,-3732,-2995,-634,3138,7172,10302,12262,13090,13284, 13469,14028,14588,14170,12108,8237,3284,-1301,-4545,-6448, -7381,-7786,-8056,-8621,-9476,-10224,-10937,-11434,-11250,-10043, -8134,-6300,-5193,-5136,-5167,-4009,-1252,2600,6538,9880, 12060,12944,13250,13616,14279,14981,14821,12813,8801,4030, -284,-3519,-5469,-6478,-7095,-7748,-8433,-9077,-9940,-10909, -11571,-11448,-10137,-8121,-6320,-5656,-5920,-5861,-4678,-2158, 1370,5175,8405,10466,11594,12193,13002,14434,15788,15897, 13968,10223,5630,1246,-2030,-4096,-5584,-6631,-7389,-7994, -8748,-9719,-10757,-11505,-11173,-9636,-7707,-6467,-6387,-6749, -6788,-5672,-3037,550,4387,7660,9821,10843,11483,12682, 14437,15849,16019,14257,10671,6163,2144,-838,-3063,-4724, -5927,-6779,-7402,-8185,-9366,-10840,-11711,-11160,-9650,-7926, -6857,-6795,-7311,-7418,-6283,-3800,-284,3595,6798,8698, 9639,10579,12071,13995,15723,16110,14446,11109,7071,3347, 298,-2136,-4039,-5540,-6396,-6938,-7876,-9440,-10981,-11603, -11029,-9496,-7858,-7031,-7109,-7602,-7691,-6774,-4430,-777, 3010,5992,7924,9111,10292,12057,14351,16221,16506,14902, 11786,7928,4316,1303,-1330,-3576,-4958,-5619,-6338,-7593, -9396,-11014,-11663,-10986,-9435,-8052,-7334,-7361,-7933,-8189, -7204,-4732,-1353,2138,5005,6814,7994,9440,11634,14193, 16162,16715,15283,12296,8897,5485,2187,-751,-2906,-4120, -4939,-5858,-7426,-9545,-11184,-11594,-10807,-9460,-8065,-7292, -7562,-8301,-8581,-7667,-5359,-2058,1377,3942,5516,6855, 8533,10992,13899,16105,16628,15370,13022,9994,6474,2938, -136,-2289,-3452,-4118,-5183,-7112,-9145,-10691,-11277,-10649, -9251,-7921,-7474,-7916,-8687,-9169,-8392,-6031,-2774,384, 2805,4458,5816,7807,10779,13829,15896,16501,15729,13756, 10850,7424,3696,500,-1507,-2598,-3473,-4760,-6558,-8640, -10383,-10948,-10266,-8998,-7878,-7429,-7925,-9005,-9488,-8575, -6291,-3156,-125,1984,3204,4479,6823,9883,12853,15052, 15988,15699,14278,11789,8347,4625,1641,-406,-1744,-2808, -4159,-6157,-8478,-10129,-10630,-9999,-8609,-7361,-7092,-7922, -9147,-9758,-9018,-6659,-3412,-678,1033,2273,3883,6256, 9268,12198,14343,15602,15837,14762,12275,8786,5207,2131, 23,-1169,-2240,-3808,-5940,-8174,-9909,-10570,-9914,-8581, -7533,-7371,-8273,-9671,-10425,-9438,-6828,-3827,-1348,349, 1698,3484,5915,8741,11390,13643,15380,15921,15027,12773, 9563,6068,3088,1145,-237,-1589,-3278,-5464,-7810,-9591, -10148,-9581,-8439,-7344,-7264,-8473,-9980,-10548,-9432,-6998, -4273,-2083,-599,880,2810,5142,7725,10462,13118,15080, 15940,15404,13293,10140,6796,4000,1993,497,-881,-2752, -5217,-7641,-9402,-10035,-9440,-8052,-7011,-7265,-8620,-10088, -10564,-9414,-7101,-4724,-2965,-1500,54,1838,4100,6773, 9692,12506,14827,16059,15607,13568,10591,7400,4660,2757, 1395,-140,-2141,-4597,-7221,-9269,-9916,-9095,-7662,-6788, -7207,-8727,-10290,-10517,-9243,-7203,-5214,-3532,-2083,-649, 1162,3417,5999,8934,12022,14653,15961,15660,13830,10860, 7781,5314,3479,1984,430,-1561,-4221,-7084,-9144,-9808, -8996,-7545,-6807,-7551,-9196,-10421,-10495,-9461,-7697,-5799, -4130,-2707,-1195,598,2621,5155,8230,11469,14265,15885, 15779,13994,11298,8566,6197,4381,2981,1461,-742,-3614, -6524,-8698,-9311,-8273,-6989,-6706,-7660,-9141,-10163,-10228, -9173,-7603,-6048,-4547,-3125,-1702,-156,1853,4407,7440, 10860,13852,15503,15429,13894,11490,8855,6619,4991,3584, 2009,-214,-3323,-6571,-8714,-9002,-8025,-7080,-7010,-7982, -9380,-10253,-10102,-9155,-7858,-6338,-4899,-3598,-2277,-762, 1097,3586,6905,10621,13720,15566,15730,14320,11980,9505, 7354,5651,4352,2842,299,-3190,-6414,-8248,-8455,-7594, -6766,-6978,-8094,-9314,-10052,-10077,-9387,-8187,-6865,-5552, -4154,-2808,-1501,208,2832,6197,9820,13062,15028,15349, 14216,12159,9779,7677,6335,5422,3788,984,-2617,-5938, -7809,-7975,-7228,-6791,-7167,-8136,-9309,-10075,-10080,-9426, -8483,-7339,-5935,-4636,-3514,-2236,-459,2117,5491,9263, 12625,14737,15419,14621,12614,10287,8515,7429,6410,4615, 1636,-2145,-5373,-7100,-7404,-7019,-6760,-7103,-8191,-9281, -9829,-9922,-9550,-8679,-7421,-6135,-5085,-4109,-3003,-1367, 1227,4684,8380,11747,14260,15235,14481,12663,10630,9097, 8261,7391,5476,2172,-1586,-4612,-6378,-6774,-6460,-6429, -7103,-8192,-9156,-9836,-10056,-9683,-8846,-7738,-6564,-5536, -4806,-3890,-2168,381,3628,7359,11002,13703,14746,14101, 12371,10483,9375,8871,7924,5806,2587,-1025,-4036,-5636, -6026,-6006,-6192,-6788,-7655,-8592,-9243,-9415,-9225,-8508, -7346,-6313,-5729,-5270,-4439,-2971,-659,2600,6429,10207, 13155,14465,13908,12314,10888,10042,9449,8483,6369,3030, -637,-3480,-5037,-5690,-5898,-6205,-6918,-7795,-8592,-9203, -9562,-9272,-8348,-7298,-6491,-5940,-5455,-4765,-3444,-1175, 1924,5786,9882,12931,14112,13606,12258,10998,10290,9984, 9022,6692,3339,-86,-2743,-4291,-4873,-5264,-5918,-6631, -7375,-8266,-9074,-9396,-9060,-8320,-7446,-6736,-6425,-6149, -5506,-4365,-2425,678,4831,9039,12158,13581,13275,12087, 11150,10936,10691,9501,7144,3808,367,-2153,-3623,-4509, -5206,-5790,-6453,-7415,-8465,-9228,-9518,-9159,-8257,-7374, -6851,-6465,-6068,-5697,-4927,-3113,51,4215,8480,11776, 13116,12790,12005,11498,11433,11278,10214,7761,4447,1340, -1100,-2868,-4037,-4716,-5321,-6147,-7146,-8274,-9212,-9473, -9057,-8390,-7737,-7116,-6600,-6427,-6330,-5677,-4000,-891, 3439,7859,11002,12409,12517,12061,11840,12034,11921,10649, 8138,5133,2098,-537,-2382,-3605,-4453,-5153,-5990,-7152, -8372,-9115,-9288,-9100,-8628,-7922,-7228,-6813,-6666,-6676, -6371,-4802,-1541,2835,7140,10271,11807,11980,11860,12210, 12623,12408,11134,8826,5858,2896,386,-1583,-2975,-3827, -4571,-5666,-7040,-8160,-8920,-9362,-9292,-8828,-8167,-7428, -6947,-6995,-7384,-7200,-5524,-2329,1946,6207,9221,10630, 11162,11640,12240,12745,12664,11482,9281,6535,3746,1081, -992,-2158,-2986,-4013,-5275,-6638,-7874,-8738,-9156,-9168, -8870,-8149,-7332,-7016,-7388,-7917,-7809,-6353,-3067,1351, 5422,8237,9755,10573,11307,12178,12930,12861,11815,10001, 7472,4530,1875,-37,-1326,-2384,-3464,-4809,-6277,-7477, -8334,-8985,-9258,-8829,-7988,-7357,-7190,-7701,-8567,-8690, -7075,-3686,486,4362,7164,8831,9974,11150,12234,12833, 12876,12153,10391,7795,4974,2456,533,-793,-1893,-3251, -4756,-5990,-7067,-8151,-8920,-9103,-8676,-7803,-6928,-6804, -7689,-8796,-8931,-7328,-4099,-88,3519,6075,7947,9519, 10810,11848,12618,12863,12176,10498,8077,5358,2962,1256, -90,-1493,-2896,-4144,-5381,-6625,-7762,-8657,-8992,-8512, -7462,-6691,-6939,-8071,-9371,-9694,-8053,-4787,-1033,2325, 5097,7329,9053,10488,11788,12798,13211,12746,11178,8675, 6051,3922,2125,503,-949,-2313,-3655,-5006,-6343,-7752, -8872,-9082,-8389,-7275,-6523,-6774,-8097,-9505,-9630,-8019, -5139,-1788,1466,4253,6454,8282,9830,11134,12372,13147, 12759,11140,8861,6565,4466,2646,1101,-400,-1823,-3057, -4349,-5961,-7612,-8717,-8966,-8238,-6979,-6255,-6837,-8400, -9715,-9853,-8545,-5928,-2727,429,3331,5799,7689,9297, 10980,12499,13193,12756,11325,9266,7043,5048,3290,1557, 33,-1187,-2448,-3944,-5683,-7421,-8720,-8955,-7978,-6725, -6298,-7039,-8499,-9785,-10005,-8809,-6532,-3610,-421,2533, 4858,6783,8757,10795,12435,13304,13086,11767,9923,7959, 5946,3970,2215,745,-606,-1942,-3456,-5384,-7453,-8764, -8713,-7672,-6534,-6183,-7072,-8620,-9834,-10056,-9201,-7240, -4333,-1250,1417,3668,5758,7900,10096,11983,12987,12847, 11845,10290,8365,6353,4517,2907,1448,278,-849,-2571, -4831,-6991,-8289,-8304,-7298,-6252,-6174,-7110,-8438,-9633, -10209,-9604,-7692,-4987,-2142,467,2688,4821,7219,9652, 11582,12601,12711,11953,10470,8695,6807,4841,3081,1832, 902,-328,-2217,-4625,-6893,-8072,-7817,-6760,-5948,-5917, -6661,-8050,-9475,-10202,-9782,-8177,-5701,-2995,-583,1651, 4105,6717,9142,11148,12415,12663,12037,10901,9321,7303, 5283,3669,2576,1654,353,-1772,-4539,-6854,-7857,-7678, -6855,-6027,-5881,-6662,-8059,-9461,-10254,-9881,-8250,-5935, -3597,-1344,1008,3494,6103,8712,10823,12046,12433,12211, 11342,9776,7810,5842,4299,3441,2742,1237,-1318,-4164, -6436,-7613,-7584,-6804,-6052,-5980,-6755,-8185,-9805,-10654, -10180,-8747,-6808,-4591,-2329,-13,2569,5430,8118,10220, 11681,12421,12447,11732,10260,8145,6065,4807,4172,3299, 1527,-1024,-3786,-6002,-7087,-7067,-6441,-5716,-5513,-6351, -7992,-9550,-10308,-10082,-8973,-7263,-5369,-3380,-1047,1709, 4561,7235,9507,11078,12020,12432,11955,10401,8318,6613, 5678,5090,4192,2383,-292,-3103,-5286,-6555,-6851,-6286, -5566,-5611,-6625,-8180,-9646,-10421,-10203,-9152,-7747,-6121, -4128,-1785,936,3916,6678,8886,10634,12038,12656,12047, 10422,8507,6975,6140,5631,4609,2660,88,-2554,-4871, -6291,-6496,-5863,-5240,-5279,-6204,-7792,-9261,-9968,-9891, -9237,-8126,-6683,-4908,-2581,245,3125,5656,7909,10037, 11703,12408,11916,10398,8636,7462,6883,6284,5165,3340, 796,-2091,-4561,-5951,-6233,-5748,-5171,-5307,-6362,-7820, -9042,-9750,-9780,-9239,-8392,-7307,-5592,-3133,-417,2221, 4735,7171,9496,11390,12233,11696,10310,8969,8069,7419, 6753,5735,3938,1339,-1475,-3870,-5322,-5557,-5079,-4737, -5080,-6108,-7531,-8867,-9594,-9655,-9424,-8968,-7956,-6193, -3860,-1272,1303,3807,6464,9176,11227,11920,11376,10301, 9176,8297,7730,7157,6091,4305,1777,-1115,-3590,-4932, -5127,-4799,-4542,-4843,-5893,-7325,-8455,-9052,-9376,-9447, -9149,-8235,-6570,-4349,-1987,290,2860,5894,8770,10731, 11526,11234,10314,9331,8587,8057,7511,6597,4839,2189, -775,-3188,-4570,-4936,-4653,-4454,-4955,-6025,-7193,-8140, -8808,-9284,-9566,-9485,-8588,-6868,-4866,-2878,-608,2210, 5354,8281,10369,11278,11139,10437,9617,8935,8536,8220, 7331,5446,2816,-89,-2576,-4014,-4351,-4194,-4303,-4947, -5980,-7077,-7947,-8595,-9281,-9850,-9721,-8751,-7299,-5670, -3803,-1493,1407,4650,7625,9733,10762,10864,10292,9548, 9097,8965,8708,7816,6013,3351,342,-2123,-3467,-3844, -3854,-4037,-4750,-5796,-6692,-7449,-8376,-9328,-9842,-9640, -8835,-7652,-6245,-4550,-2215,839,4159,7095,9267,10409, 10497,9975,9455,9198,9190,9056,8291,6488,3769,865, -1517,-2890,-3332,-3493,-3995,-4812,-5543,-6202,-7062,-8133, -9138,-9697,-9606,-8951,-8056,-7018,-5442,-3037,-37,3225, 6310,8679,9913,10160,9902,9518,9370,9564,9613,8848, 7026,4360,1423,-896,-2126,-2725,-3303,-4032,-4702,-5281, -5934,-6811,-7949,-9007,-9509,-9431,-9103,-8606,-7710,-6171, -3915,-983,2343,5485,7877,9279,9747,9569,9350,9524, 9896,10032,9374,7553,4814,2017,-21,-1285,-2191,-2993, -3749,-4409,-4891,-5483,-6511,-7763,-8730,-9203,-9373,-9301, -8918,-8186,-6889,-4734,-1789,1487,4673,7220,8689,9191, 9197,9190,9472,10009,10306,9629,7708,5095,2597,637, -729,-1762,-2697,-3422,-3847,-4266,-5081,-6278,-7470,-8407, -9019,-9282,-9310,-9193,-8669,-7427,-5377,-2530,857,4140, 6662,8158,8776,8831,8848,9333,10119,10435,9695,7846, 5428,3152,1347,-136,-1479,-2506,-3036,-3339,-3854,-4706, -5829,-7044,-8014,-8578,-8936,-9183,-9217,-8885,-7924,-6052, -3207,171,3390,5984,7593,8181,8266,8547,9315,10228, 10598,9852,8039,5820,3741,1821,-22,-1519,-2445,-2926, -3245,-3694,-4523,-5642,-6739,-7627,-8313,-8793,-9073,-9228, -9112,-8254,-6422,-3714,-423,2895,5554,7104,7699,7919, 8421,9428,10516,10876,10062,8471,6597,4573,2488,539, -1071,-2153,-2704,-3065,-3637,-4520,-5569,-6664,-7662,-8372, -8829,-9277,-9671,-9628,-8861,-7147,-4443,-1019,2389,5047, 6636,7271,7580,8342,9535,10502,10695,10074,8817,7128, 5186,3106,1072,-568,-1576,-2175,-2728,-3361,-4171,-5246, -6344,-7220,-7918,-8574,-9207,-9710,-9854,-9321,-7764,-5145, -1812,1599,4283,5750,6379,7055,8152,9427,10383,10699, 10290,9259,7781,5839,3603,1510,-93,-1207,-1927,-2426, -3019,-3914,-4976,-5966,-6816,-7586,-8289,-9020,-9737,-10105, -9717,-8327,-5780,-2369,1019,3470,4851,5732,6669,7874, 9155,10076,10399,10235,9549,8173,6245,4129,2115,432, -760,-1523,-2148,-2907,-3829,-4805,-5748,-6575,-7269,-8035, -8858,-9603,-10105,-10001,-8758,-6142,-2789,354,2666,4127, 5210,6421,7816,9072,9985,10503,10517,9832,8473,6638, 4530,2460,767,-392,-1209,-1865,-2557,-3471,-4473,-5365, -6164,-6970,-7773,-8597,-9541,-10373,-10421,-9100,-6483,-3257, -305,1842,3327,4655,6022,7386,8654,9748,10456,10588, 10068,8892,7089,4978,2956,1266,41,-778,-1480,-2332, -3288,-4204,-5089,-5946,-6692,-7404,-8393,-9632,-10638,-10767, -9501,-6923,-3849,-1158,949,2649,4143,5535,6939,8363, 9580,10433,10769,10415,9313,7600,5522,3453,1770,597, -293,-1145,-2008,-2898,-3903,-4864,-5604,-6203,-6944,-8061, -9508,-10774,-10969,-9653,-7206,-4442,-1909,224,1940,3405, 4874,6378,7824,9139,10150,10616,10427,9521,7878,5790, 3826,2255,1007,21,-803,-1673,-2677,-3707,-4602,-5248, -5733,-6433,-7758,-9490,-10799,-10909,-9715,-7575,-4976,-2481, -389,1365,2901,4339,5821,7369,8793,9905,10609,10659, 9815,8172,6235,4382,2763,1490,493,-386,-1331,-2407, -3536,-4444,-4892,-5220,-6059,-7650,-9466,-10760,-10971,-9940, -7936,-5512,-3129,-1006,775,2333,3867,5460,6944,8314, 9626,10563,10697,9929,8440,6602,4767,3164,1858,811, -73,-1051,-2274,-3457,-4153,-4405,-4775,-5753,-7392,-9251, -10592,-10888,-10063,-8360,-6151,-3824,-1754,35,1762,3405, 4938,6445,8041,9536,10576,10841,10211,8872,7158,5402, 3737,2373,1398,488,-750,-2157,-3274,-3820,-4017,-4425, -5502,-7261,-9142,-10463,-10898,-10272,-8691,-6606,-4499,-2511, -619,1159,2766,4296,5918,7643,9258,10417,10740,10220, 9113,7556,5750,4102,2921,2012,926,-461,-1886,-2912, -3348,-3513,-4038,-5258,-7021,-8901,-10399,-10950,-10378,-8964, -7111,-5088,-3010,-1088,632,2212,3734,5434,7329,9069, 10217,10649,10390,9411,7800,6011,4565,3522,2558,1328, -226,-1703,-2587,-2890,-3101,-3687,-4913,-6748,-8791,-10334, -10888,-10487,-9340,-7684,-5721,-3674,-1741,-61,1406,2969, 4854,6851,8612,9936,10697,10615,9647,8121,6514,5237, 4276,3204,1699,-13,-1403,-2214,-2587,-2832,-3406,-4691, -6609,-8615,-10104,-10778,-10541,-9555,-8043,-6134,-4104,-2286, -798,677,2428,4346,6296,8156,9712,10657,10693,9779, 8308,6871,5813,4871,3624,2042,388,-989,-1823,-2115, -2283,-2923,-4313,-6268,-8288,-9818,-10545,-10501,-9784,-8380, -6501,-4622,-3004,-1520,64,1780,3627,5603,7572,9338, 10496,10636,9759,8481,7355,6384,5334,4007,2363,649, -734,-1486,-1711,-1906,-2580,-4017,-6005,-7953,-9463,-10390, -10631,-9987,-8576,-6861,-5176,-3620,-2117,-542,1182,3016, 4986,7126,9105,10302,10434,9762,8790,7828,6890,5851, 4459,2737,1007,-328,-1024,-1188,-1376,-2173,-3696,-5573, -7471,-9133,-10281,-10585,-9986,-8744,-7199,-5676,-4209,-2690, -1130,454,2196,4340,6716,8727,9902,10127,9641,8848, 8065,7282,6259,4829,3077,1292,-22,-590,-714,-1033, -1923,-3309,-5095,-7073,-8869,-10117,-10517,-10020,-8946,-7634, -6215,-4663,-3112,-1721,-276,1582,3901,6322,8335,9549, 9870,9569,9024,8413,7714,6746,5285,3365,1559,408, -85,-298,-685,-1505,-2830,-4605,-6617,-8550,-9898,-10337, -9991,-9203,-8108,-6661,-5093,-3702,-2468,-1067,843,3250, 5768,7840,9116,9605,9511,9119,8684,8180,7197,5552, 3572,1879,789,245,-24,-412,-1151,-2361,-4116,-6269, -8261,-9539,-10077,-10033,-9443,-8347,-6922,-5485,-4243,-3127, -1777,212,2710,5234,7342,8760,9381,9374,9206,9060, 8646,7606,5935,4033,2391,1316,730,349,-19,-638, -1872,-3772,-5928,-7794,-9144,-9942,-10127,-9667,-8608,-7206, -5874,-4838,-3845,-2435,-441,1970,4504,6730,8186,8838, 9055,9224,9261,8894,7839,6174,4386,2897,1803,1047, 653,419,-170,-1479,-3354,-5381,-7213,-8667,-9634,-10020, -9666,-8638,-7390,-6319,-5397,-4370,-2996,-1100,1381,4024, 6216,7654,8427,8892,9300,9506,9121,7982,6402,4789, 3313,2111,1396,1143,892,189,-1166,-3013,-4978,-6799, -8387,-9582,-10032,-9634,-8700,-7646,-6677,-5828,-4952,-3685, -1749,767,3386,5549,6996,7900,8673,9351,9603,9149, 8136,6768,5160,3599,2434,1843,1639,1397,647,-723, -2446,-4301,-6211,-8009,-9283,-9762,-9495,-8738,-7795,-6953, -6261,-5497,-4259,-2321,217,2826,4864,6267,7413,8479, 9261,9546,9256,8392,7030,5380,3817,2698,2181,1986, 1614,780,-438,-1973,-3836,-5868,-7710,-9006,-9568,-9360, -8660,-7845,-7161,-6640,-6012,-4805,-2774,-236,2178,4098, 5645,7032,8229,9115,9562,9440,8702,7377,5661,4048, 3040,2592,2295,1835,1114,24,-1515,-3435,-5498,-7403, -8789,-9417,-9308,-8697,-7950,-7392,-7069,-6516,-5210,-3151, -781,1491,3468,5160,6686,8005,8986,9574,9674,9052, 7650,5911,4431,3482,2908,2498,2084,1448,449,-1008, -2916,-5041,-7013,-8505,-9299,-9291,-8708,-8086,-7806,-7595, -6942,-5584,-3633,-1424,710,2694,4518,6159,7518,8643, 9497,9767,9151,7809,6266,4929,3976,3341,2858,2401, 1835,916,-532,-2432,-4525,-6573,-8232,-9078,-9043,-8592, -8250,-8124,-7929,-7233,-5874,-4031,-2011,60,2124,4010, 5609,7110,8539,9599,9869,9261,7966,6504,5250,4302, 3585,3055,2646,2096,1152,-229,-1994,-4107,-6279,-7947, -8746,-8781,-8515,-8385,-8415,-8225,-7479,-6201,-4568,-2638, -528,1499,3287,4967,6682,8306,9482,9854,9330,8189, 6871,5670,4657,3944,3506,3098,2508,1653,381,-1432, -3684,-5962,-7657,-8482,-8626,-8627,-8788,-8902,-8644,-7960, -6846,-5241,-3241,-1143,836,2682,4516,6426,8226,9495, 9887,9466,8514,7264,6003,4996,4307,3792,3320,2808, 2088,875,-992,-3321,-5575,-7141,-7901,-8234,-8500,-8746, -8856,-8727,-8265,-7304,-5788,-3893,-1895,-15,1799,3772, 5906,7826,9122,9666,9470,8644,7462,6308,5385,4657, 4087,3660,3277,2682,1500,-512,-2985,-5164,-6630,-7473, -7993,-8368,-8652,-8850,-8842,-8461,-7529,-6026,-4207,-2420, -728,1105,3214,5375,7287,8717,9455,9383,8691,7697, 6657,5743,4976,4369,3986,3768,3279,1998,-125,-2537, -4619,-6155,-7162,-7816,-8268,-8635,-8932,-9103,-8868,-7942, -6452,-4800,-3178,-1464,478,2634,4865,6919,8491,9320, 9366,8788,7906,6955,6005,5098,4477,4312,4275,3744, 2369,315,-1973,-4021,-5619,-6750,-7499,-7991,-8424,-8904, -9199,-8931,-8036,-6771,-5356,-3842,-2182,-289,1859,4154, 6316,8033,8990,9112,8690,8047,7200,6151,5218,4754, 4731,4689,4128,2777,809,-1377,-3429,-5134,-6339,-7072, -7627,-8268,-8909,-9191,-8923,-8158,-7053,-5779,-4375,-2773, -893,1255,3620,5927,7703,8674,8950,8804,8278,7319, 6136,5236,4882,4933,4889,4274,2965,1158,-916,-3006, -4723,-5878,-6689,-7478,-8279,-8933,-9206,-8977,-8295,-7323, -6171,-4854,-3351,-1562,612,3105,5468,7231,8352,8937, 9019,8540,7563,6383,5574,5353,5402,5245,4604,3401, 1622,-533,-2629,-4256,-5420,-6379,-7346,-8311,-9049,-9336, -9130,-8546,-7652,-6547,-5378,-4050,-2296,-10,2490,4787, 6617,7953,8814,9067,8606,7583,6500,5855,5687,5677, 5567,5070,3928,2121,-10,-2027,-3609,-4801,-5886,-7027, -8096,-8872,-9261,-9228,-8720,-7868,-6924,-5942,-4669,-2877, -601,1830,4087,6033,7637,8768,9104,8584,7596,6659, 6041,5796,5812,5803,5373,4238,2459,385,-1517,-3034, -4311,-5561,-6760,-7818,-8681,-9206,-9223,-8746,-8052,-7338, -6491,-5247,-3413,-1150,1163,3352,5452,7298,8536,8882, 8467,7642,6804,6230,6038,6145,6210,5820,4662,2863, 895,-885,-2450,-3876,-5183,-6409,-7586,-8570,-9111,-9127, -8740,-8242,-7767,-7055,-5771,-3910,-1791,393,2667,4999, 7000,8250,8659,8341,7619,6862,6328,6200,6422,6574, 6136,4929,3227,1376,-412,-2031,-3454,-4755,-6067,-7343, -8379,-8922,-8926,-8666,-8419,-8117,-7406,-6114,-4430,-2503, -333,2068,4517,6621,7991,8531,8351,7722,6931,6390, 6365,6708,6859,6382,5258,3679,1871,105,-1483,-2906, -4281,-5723,-7151,-8242,-8727,-8774,-8764,-8771,-8521,-7788, -6600,-5075,-3241,-1065,1410,3933,6101,7600,8333,8304, 7684,6907,6502,6594,6911,7042,6655,5667,4179,2442, 685,-894,-2309,-3785,-5423,-6940,-7947,-8410,-8632,-8807, -8872,-8640,-8005,-7007,-5677,-3954,-1755,773,3289,5535, 7244,8145,8151,7556,6922,6650,6783,7100,7227,6881, 5971,4547,2842,1170,-267,-1704,-3393,-5152,-6598,-7555, -8141,-8538,-8857,-8968,-8742,-8219,-7429,-6278,-4625,-2484, -34,2531,4985,6876,7849,7912,7435,6953,6806,7010, 7313,7489,7274,6411,4956,3308,1812,407,-1177,-2989, -4757,-6187,-7182,-7909,-8504,-8913,-9012,-8843,-8505,-7852, -6729,-5147,-3142,-734,1932,4489,6477,7522,7663,7313, 6935,6795,6948,7317,7646,7469,6567,5227,3796,2445, 1014,-663,-2525,-4265,-5623,-6704,-7641,-8376,-8800,-8980, -8996,-8777,-8196,-7216,-5806,-3912,-1513,1241,3913,5951, 7029,7312,7148,6869,6760,7034,7582,7925,7679,6823, 5620,4383,3103,1577,-243,-2087,-3699,-5085,-6335,-7350, -8094,-8589,-8910,-9045,-8917,-8475,-7662,-6431,-4647,-2214, 624,3314,5335,6541,7017,6935,6659,6645,7070,7687, 8009,7732,6952,5962,4907,3615,1996,204,-1522,-3135, -4631,-5918,-6969,-7767,-8338,-8745,-8954,-8896,-8569,-7994, -6985,-5251,-2788,2,2629,4732,6100,6644,6581,6387, 6527,7115,7783,8034,7720,7113,6392,5416,4077,2472, 750,-983,-2666,-4214,-5549,-6643,-7494,-8189,-8684,-8904, -8913,-8799,-8447,-7499,-5772,-3400,-667,2029,4292,5770, 6358,6323,6240,6574,7251,7788,7912,7719,7358,6760, 5819,4527,2963,1268,-460,-2186,-3794,-5158,-6289,-7284, -8061,-8516,-8758,-8960,-9086,-8858,-7999,-6397,-4116,-1407, 1367,3775,5332,5930,5986,6147,6649,7264,7701,7874, 7842,7623,7130,6261,5043,3590,1951,147,-1629,-3211, -4605,-5897,-7001,-7757,-8232,-8606,-8960,-9216,-9100,-8387, -6958,-4836,-2148,746,3177,4643,5251,5542,5943,6533, 7127,7567,7806,7910,7781,7325,6536,5461,4085,2413, 624,-1061,-2644,-4164,-5542,-6645,-7397,-7923,-8407,-8930, -9321,-9318,-8779,-7564,-5514,-2717,221,2556,3986,4723, 5231,5791,6424,7001,7472,7849,8047,7941,7555,6908, 5899,4497,2846,1160,-504,-2146,-3780,-5252,-6356,-7104, -7710,-8335,-8913,-9307,-9465,-9194,-8117,-6025,-3189,-304, 1961,3391,4261,4936,5568,6157,6738,7321,7781,8006, 8007,7782,7227,6242,4896,3356,1756,118,-1590,-3300, -4770,-5870,-6724,-7502,-8189,-8771,-9307,-9715,-9635,-8646, -6569,-3794,-1033,1156,2691,3796,4617,5277,5936,6619, 7248,7724,8051,8211,8110,7620,6661,5340,3875,2335, 644,-1157,-2834,-4238,-5424,-6433,-7262,-7922,-8549,-9279, -9933,-10022,-9057,-6991,-4336,-1742,444,2115,3313,4173, 4936,5676,6372,6984,7515,7966,8271,8286,7836,6928, 5771,4430,2855,1068,-731,-2355,-3808,-5094,-6147,-6949, -7591,-8339,-9322,-10225,-10384,-9408,-7454,-4980,-2439,-189, 1586,2875,3866,4717,5499,6209,6831,7393,7963,8378, 8421,8028,7337,6378,5076,3458,1682,-69,-1729,-3298, -4710,-5797,-6510,-7153,-8101,-9332,-10355,-10572,-9737,-7992, -5654,-3190,-964,855,2233,3299,4252,5100,5804,6466, 7197,7915,8376,8466,8236,7709,6804,5496,3892,2163, 452,-1269,-2968,-4409,-5354,-5967,-6717,-7861,-9197,-10255, -10567,-9898,-8350,-6188,-3815,-1606,218,1667,2902,3952, 4799,5509,6288,7119,7821,8292,8487,8405,8011,7194, 5936,4436,2862,1175,-697,-2525,-3934,-4832,-5546,-6474, -7760,-9196,-10319,-10740,-10252,-8829,-6752,-4468,-2367,-546, 1059,2410,3467,4321,5144,6027,6896,7626,8143,8468, 8572,8275,7480,6323,5022,3552,1750,-258,-2085,-3425, -4284,-5030,-6039,-7393,-8850,-10054,-10649,-10308,-9011,-7118, -5037,-3006,-1110,559,1905,2972,3879,4830,5803,6673, 7368,7960,8447,8632,8306,7575,6642,5522,4069,2214, 191,-1590,-2840,-3720,-4571,-5659,-7055,-8607,-9978,-10689, -10437,-9290,-7580,-5611,-3578,-1635,39,1372,2442,3474, 4547,5518,6339,7112,7879,8447,8595,8320,7758,7029, 6016,4510,2568,550,-1127,-2329,-3258,-4155,-5277,-6762, -8438,-9872,-10616,-10483,-9535,-8018,-6139,-4098,-2132,-484, 818,1995,3180,4274,5206,6099,7035,7917,8485,8617, 8424,8071,7515,6504,4908,2953,999,-657,-1903,-2817, -3705,-4897,-6488,-8248,-9744,-10575,-10589,-9846,-8487,-6638, -4588,-2706,-1139,235,1553,2765,3805,4751,5751,6822, 7774,8349,8527,8529,8422,7961,6917,5349,3456,1535, -114,-1326,-2222,-3155,-4446,-6152,-8001,-9525,-10447,-10673, -10146,-8844,-7023,-5090,-3318,-1707,-205,1166,2330,3307, 4272,5412,6612,7544,8097,8432,8677,8717,8312,7340, 5816,3919,1998,372,-803,-1663,-2608,-4003,-5798,-7634, -9204,-10315,-10754,-10345,-9168,-7522,-5759,-4026,-2355,-729, 680,1784,2765,3917,5224,6410,7286,7904,8397,8772, 8914,8616,7709,6215,4343,2412,812,-274,-1104,-2129, -3583,-5328,-7153,-8860,-10156,-10725,-10415,-9358,-7862,-6243, -4538,-2775,-1135,165,1208,2287,3554,4867,6001,6906, 7613,8253,8797,9065,8879,8113,6703,4819,2919,1433, 381,-559,-1677,-3098,-4817,-6716,-8564,-10005,-10679,-10479, -9614,-8363,-6834,-5064,-3251,-1690,-447,676,1895,3246, 4574,5690,6605,7398,8120,8738,9147,9139,8442,6989, 5109,3344,1943,854,-134,-1245,-2610,-4298,-6265,-8233, -9732,-10434,-10389,-9817,-8770,-7251,-5486,-3757,-2288,-1063, 124,1431,2813,4112,5257,6259,7142,7946,8731,9383, 9514,8824,7390,5623,3944,2546,1389,346,-736,-2053, -3824,-5952,-8001,-9486,-10276,-10489,-10143,-9200,-7697,-5936, -4293,-2909,-1660,-373,984,2347,3673,4900,5911,6773, 7671,8662,9446,9616,8963,7629,6017,4455,3073,1901, 925,-45,-1387,-3283,-5472,-7478,-9007,-9995,-10455,-10303, -9448,-8008,-6362,-4855,-3509,-2216,-906,431,1841,3249, 4482,5501,6437,7492,8628,9510,9718,9121,7934,6471, 4922,3490,2359,1486,524,-912,-2845,-4990,-6966,-8573, -9761,-10421,-10366,-9544,-8238,-6770,-5337,-3998,-2739,-1480, -127,1318,2716,3894,4903,5936,7177,8481,9420,9681, 9253,8275,6860,5309,3943,2940,2129,1114,-384,-2309, -4383,-6356,-8126,-9542,-10326,-10351,-9685,-8575,-7209,-5808, -4502,-3250,-1929,-485,1004,2355,3436,4420,5591,6981, 8321,9272,9657,9410,8518,7111,5585,4313,3409,2619, 1541,24,-1809,-3786,-5833,-7751,-9266,-10130,-10263,-9750, -8756,-7500,-6201,-4980,-3794,-2467,-935,586,1838,2842, 3900,5204,6651,8045,9150,9742,9633,8758,7352,5876, 4729,3883,3013,1886,462,-1229,-3176,-5312,-7351,-8982, -9984,-10254,-9874,-8975,-7794,-6575,-5438,-4243,-2803,-1226, 186,1336,2365,3496,4818,6270,7718,8968,9741,9742, 8906,7590,6292,5263,4373,3425,2317,979,-658,-2629, -4813,-6937,-8672,-9808,-10255,-9994,-9162,-8101,-7058,-6008, -4752,-3248,-1721,-364,783,1873,3065,4412,5904,7465, 8905,9790,9771,8971,7816,6681,5690,4790,3862,2814, 1534,-88,-2085,-4282,-6426,-8255,-9549,-10104,-9900,-9222, -8401,-7528,-6475,-5157,-3654,-2176,-876,294,1450,2636, 3938,5477,7232,8810,9718,9748,9079,8069,7032,6062, 5166,4284,3312,2070,430,-1554,-3735,-5970,-7956,-9339, -9914,-9806,-9330,-8707,-7950,-6903,-5569,-4112,-2696,-1379, -137,1001,2092,3394,5085,6998,8641,9585,9708,9202, 8381,7429,6469,5584,4758,3813,2575,999,-909,-3131, -5480,-7580,-9035,-9695,-9741,-9477,-9031,-8337,-7280,-5992, -4627,-3224,-1828,-590,453,1511,2876,4691,6676,8340, 9341,9617,9299,8598,7703,6827,6036,5244,4299,3119, 1636,-251,-2524,-4959,-7129,-8636,-9396,-9651,-9605,-9274, -8584,-7600,-6404,-5062,-3626,-2260,-1126,-193,846,2301, 4239,6310,8032,9150,9589,9385,8734,7925,7127,6371, 5586,4696,3638,2269,400,-1951,-4456,-6613,-8136,-9075, -9586,-9702,-9444,-8870,-8022,-6876,-5483,-4001,-2655,-1620, -764,282,1808,3756,5828,7664,8958,9538,9441,8903, 8198,7453,6709,5948,5156,4240,2945,1040,-1339,-3784, -5894,-7522,-8651,-9286,-9493,-9348,-8956,-8295,-7279,-5917, -4472,-3266,-2366,-1520,-413,1131,3061,5179,7127,8543, 9267,9343,8993,8431,7752,7009,6292,5649,4855,3555, 1618,-731,-3123,-5283,-7053,-8335,-9108,-9424,-9432,-9207, -8642,-7612,-6221,-4864,-3776,-2902,-2025,-905,625,2564, 4716,6704,8181,8989,9233,9100,8668,8010,7292,6693, 6156,5372,4057,2171,-95,-2440,-4645,-6535,-7947,-8810, -9273,-9517,-9467,-8924,-7858,-6517,-5245,-4207,-3353,-2509, -1432,70,2022,4187,6185,7673,8607,9079,9122,8723, 8091,7489,7052,6594,5833,4523,2703,542,-1781,-4050, -5996,-7422,-8386,-9090,-9555,-9603,-9088,-8066,-6795,-5574, -4574,-3742,-2920,-1885,-382,1597,3750,5699,7226,8322, 8944,9022,8654,8109,7664,7348,6941,6182,4955,3278, 1189,-1183,-3489,-5421,-6881,-8009,-8896,-9502,-9637,-9180, -8248,-7077,-5915,-4942,-4173,-3452,-2440,-885,1084,3182, 5152,6853,8145,8884,9003,8653,8198,7874,7605,7197, 6492,5391,3778,1639,-753,-3028,-4940,-6473,-7758,-8809, -9511,-9683,-9276,-8419,-7270,-6113,-5190,-4540,-3853,-2790, -1250,644,2677,4682,6534,7965,8745,8861,8601,8308, 8065,7821,7484,6923,5936,4351,2226,-141,-2377,-4295, -5950,-7432,-8646,-9443,-9732,-9469,-8674,-7557,-6489,-5693, -5099,-4369,-3253,-1738,97,2109,4228,6220,7731,8532, 8731,8615,8402,8177,7984,7768,7350,6446,4878,2780, 501,-1644,-3601,-5404,-7015,-8349,-9306,-9748,-9553,-8771, -7721,-6773,-6063,-5497,-4757,-3678,-2278,-567,1469,3709, 5775,7310,8183,8532,8550,8403,8240,8147,8074,7764, 6886,5353,3360,1208,-923,-2962,-4838,-6534,-8028,-9172, -9737,-9574,-8839,-7887,-7075,-6461,-5849,-5075,-4087,-2825, -1147,951,3219,5285,6881,7886,8379,8470,8338,8216, 8242,8311,8060,7208,5755,3893,1822,-281,-2301,-4218, -6048,-7725,-9034,-9668,-9537,-8868,-8077,-7392,-6764,-6093, -5379,-4520,-3321,-1637,451,2683,4745,6403,7563,8180, 8331,8263,8289,8454,8539,8271,7491,6163,4408,2410, 353,-1647,-3590,-5530,-7367,-8804,-9488,-9416,-8907,-8264, -7611,-6978,-6372,-5781,-5034,-3864,-2169,-82,2117,4199, 5972,7253,7900,8087,8157,8328,8578,8714,8506,7813, 6592,4923,3006,1042,-892,-2905,-5048,-7080,-8561,-9280, -9354,-9005,-8451,-7822,-7208,-6685,-6188,-5492,-4337,-2669, -664,1526,3709,5594,6899,7577,7855,8051,8339,8672, 8870,8752,8152,6996,5373,3561,1752,-154,-2284,-4553, -6627,-8148,-8981,-9207,-9010,-8533,-7926,-7381,-6970,-6554, -5859,-4732,-3172,-1209,1036,3292,5200,6523,7241,7607, 7895,8252,8612,8899,8914,8398,7274,5755,4131,2424, 485,-1752,-4109,-6211,-7790,-8754,-9146,-9041,-8574,-8018, -7584,-7262,-6862,-6205,-5186,-3709,-1766,494,2787,4727, 6079,6895,7389,7764,8159,8635,9062,9137,8630,7605, 6277,4819,3156,1165,-1156,-3532,-5647,-7330,-8489,-9022, -8968,-8579,-8150,-7816,-7528,-7171,-6599,-5689,-4289,-2362, -77,2211,4136,5559,6514,7098,7523,8017,8625,9117, 9192,8722,7827,6714,5415,3798,1760,-546,-2893,-5083, -6938,-8225,-8830,-8859,-8580,-8233,-7929,-7655,-7349,-6895, -6110,-4760,-2819,-558,1689,3658,5189,6193,6818,7325, 7950,8648,9156,9205,8772,8044,7160,5973,4364,2356, 91,-2289,-4600,-6573,-7943,-8630,-8745,-8559,-8282,-7999, -7758,-7563,-7255,-6525,-5201,-3339,-1151,1106,3157,4731, 5757,6427,7042,7810,8596,9073,9097,8789,8276,7524, 6417,4902,3012,786,-1640,-4043,-6104,-7559,-8337,-8600, -8534,-8289,-8029,-7891,-7833,-7604,-6923,-5690,-3898,-1716, 575,2651,4232,5265,6009,6832,7764,8563,9009,9105, 8949,8547,7865,6852,5449,3658,1472,-999,-3475,-5590, -7128,-8075,-8494,-8483,-8258,-8079,-8043,-8060,-7888,-7279, -6102,-4360,-2173,165,2235,3740,4767,5654,6628,7595, 8378,8875,9071,9018,8721,8130,7214,5950,4249,2061, -434,-2902,-5052,-6732,-7830,-8320,-8352,-8198,-8093,-8136, -8217,-8121,-7635,-6599,-4914,-2679,-315,1684,3164,4292, 5333,6402,7420,8251,8823,9136,9168,8907,8403,7649, 6503,4825,2657,209,-2268,-4529,-6342,-7565,-8150,-8253, -8167,-8144,-8241,-8351,-8336,-8004,-7059,-5360,-3121,-848, 1083,2575,3791,4938,6060,7089,7959,8639,9037,9109, 8949,8628,8036,6990,5391,3311,916,-1561,-3910,-5857, -7182,-7850,-8073,-8130,-8169,-8266,-8459,-8618,-8412,-7500, -5802,-3626,-1439,450,2012,3381,4648,5817,6891,7842, 8571,8980,9135,9122,8922,8428,7460,5944,3934,1570, -966,-3432,-5467,-6837,-7604,-7954,-8065,-8096,-8245,-8552, -8835,-8706,-7819,-6153,-4080,-2014,-145,1499,2936,4224, 5449,6629,7635,8352,8773,9018,9154,9119,8754,7906, 6536,4654,2308,-305,-2821,-4891,-6396,-7331,-7792,-7933, -8006,-8255,-8724,-9143,-9050,-8157,-6580,-4647,-2642,-746, 927,2399,3774,5117,6379,7428,8174,8656,9004,9235, 9261,8966,8276,7087,5275,2924,325,-2161,-4276,-5892, -6954,-7486,-7651,-7759,-8141,-8771,-9260,-9181,-8380,-6970, -5141,-3193,-1349,299,1781,3217,4653,5987,7072,7853, 8456,8929,9231,9316,9160,8640,7560,5808,3516,970, -1523,-3740,-5508,-6678,-7219,-7388,-7627,-8174,-8870,-9355, -9315,-8608,-7291,-5543,-3652,-1826,-186,1336,2853,4345, 5678,6750,7624,8324,8825,9157,9344,9335,8954,7975, 6315,4113,1655,-840,-3181,-5089,-6303,-6863,-7137,-7527, -8168,-8911,-9450,-9496,-8892,-7668,-5990,-4145,-2393,-758, 848,2457,3960,5290,6434,7400,8137,8688,9099,9420, 9552,9255,8325,6747,4696,2309,-271,-2743,-4691,-5906, -6521,-6903,-7394,-8112,-8901,-9501,-9643,-9139,-7985,-6397, -4677,-2986,-1293,383,2005,3516,4887,6101,7107,7888, 8486,9021,9509,9770,9547,8734,7355,5439,3022,350, -2178,-4151,-5397,-6093,-6589,-7178,-7940,-8801,-9539,-9800, -9372,-8307,-6873,-5267,-3572,-1844,-132,1506,3047,4484, 5760,6782,7549,8202,8885,9495,9821,9707,9078,7886, 6055,3627,907,-1648,-3628,-4936,-5752,-6336,-6955,-7770, -8725,-9526,-9810,-9459,-8547,-7268,-5740,-4049,-2295,-577, 1052,2643,4163,5461,6450,7246,8021,8803,9448,9843, 9874,9454,8437,6669,4228,1489,-1051,-3066,-4472,-5367, -6015,-6720,-7659,-8696,-9518,-9845,-9582,-8813,-7679,-6239, -4578,-2842,-1130,572,2272,3822,5073,6068,6933,7794, 8612,9295,9765,9975,9786,8920,7212,4818,2140,-394, -2482,-3940,-4871,-5593,-6407,-7454,-8564,-9432,-9822,-9693, -9107,-8076,-6698,-5135,-3508,-1808,-5,1771,3355,4654, 5711,6677,7611,8453,9169,9772,10192,10153,9369,7774, 5465,2798,206,-1932,-3443,-4448,-5248,-6168,-7285,-8406, -9289,-9783,-9815,-9308,-8325,-7054,-5641,-4089,-2374,-531, 1263,2833,4128,5283,6361,7313,8136,8916,9685,10248, 10339,9728,8284,6096,3491,903,-1245,-2786,-3851,-4789, -5856,-7012,-8154,-9136,-9778,-9924,-9510,-8663,-7540,-6224, -4682,-2907,-1039,715,2245,3638,4927,6050,6989,7847, 8734,9625,10331,10572,10087,8756,6654,4067,1501,-590, -2115,-3293,-4379,-5488,-6649,-7836,-8898,-9627,-9851,-9559, -8870,-7914,-6716,-5175,-3384,-1567,125,1684,3137,4438, 5552,6509,7441,8431,9445,10284,10686,10394,9217,7180, 4653,2183,135,-1462,-2746,-3886,-5029,-6261,-7542,-8724, -9539,-9826,-9649,-9146,-8354,-7186,-5657,-3927,-2154,-438, 1192,2699,4021,5143,6126,7114,8186,9274,10239,10825, 10680,9560,7584,5177,2810,765,-891,-2243,-3431,-4603, -5889,-7257,-8482,-9301,-9671,-9684,-9359,-8635,-7500,-6037, -4371,-2643,-932,724,2241,3544,4662,5690,6715,7800, 8992,10150,10913,10862,9821,7968,5693,3400,1355,-354, -1743,-2944,-4178,-5587,-7024,-8228,-9082,-9591,-9770,-9578, -8944,-7879,-6488,-4888,-3160,-1396,287,1789,3106,4277, 5316,6320,7468,8816,10130,11000,11034,10104,8399,6271, 4045,1965,245,-1133,-2391,-3764,-5260,-6705,-7920,-8836, -9467,-9795,-9717,-9165,-8201,-6951,-5430,-3686,-1893,-200, 1348,2735,3902,4896,5883,7100,8574,10016,10976,11093, 10315,8795,6760,4544,2501,822,-595,-1966,-3434,-4959, -6397,-7630,-8640,-9405,-9822,-9796,-9350,-8537,-7369,-5887, -4191,-2404,-652,980,2386,3544,4511,5508,6809,8416, 9964,11013,11287,10707,9301,7314,5138,3137,1453,-29, -1493,-3034,-4558,-5978,-7286,-8433,-9299,-9795,-9910,-9625, -8905,-7792,-6374,-4740,-2985,-1206,481,1929,3052,3979, 5035,6431,8073,9668,10864,11354,10942,9657,7767,5694, 3785,2135,607,-947,-2513,-4022,-5489,-6882,-8100,-9054, -9692,-9961,-9796,-9192,-8186,-6855,-5299,-3553,-1689,54, 1454,2512,3491,4652,6103,7780,9447,10752,11371,11081, 9898,8136,6227,4442,2754,1123,-460,-2008,-3555,-5094, -6553,-7833,-8863,-9585,-9951,-9894,-9375,-8460,-7264,-5786, -3995,-2085,-371,966,2017,3015,4189,5665,7381,9139, 10616,11380,11169,10079,8494,6758,5019,3327,1686,82, -1521,-3127,-4713,-6203,-7524,-8623,-9480,-9960,-9963,-9546, -8806,-7736,-6260,-4428,-2504,-804,520,1580,2609,3801, 5262,7015,8910,10509,11337,11212,10293,8876,7235,5549, 3869,2200,573,-1039,-2676,-4293,-5800,-7174,-8403,-9343, -9854,-9946,-9707,-9136,-8151,-6698,-4897,-3017,-1364,-34, 1083,2114,3261,4748,6635,8660,10335,11248,11264,10507, 9253,7741,6112,4461,2828,1177,-510,-2182,-3779,-5332, -6841,-8161,-9145,-9751,-10011,-9946,-9497,-8556,-7092,-5311, -3502,-1864,-466,657,1639,2779,4336,6298,8375,10107, 11116,11278,10709,9594,8144,6580,5012,3406,1727,49, -1581,-3209,-4849,-6423,-7787,-8832,-9533,-9954,-10090,-9774, -8877,-7487,-5808,-4022,-2333,-938,103,1023,2168,3781, 5825,7959,9746,10883,11248,10846,9845,8539,7108,5576, 3945,2282,652,-980,-2651,-4366,-6017,-7408,-8476,-9301, -9912,-10174,-9925,-9128,-7854,-6220,-4424,-2734,-1368,-363, 515,1668,3331,5381,7497,9340,10608,11094,10813,9989, 8850,7510,6021,4436,2830,1242,-379,-2117,-3920,-5567, -6942,-8098,-9075,-9810,-10157,-10037,-9384,-8213,-6631,-4839, -3157,-1864,-932,-52,1138,2798,4847,7033,8979,10342, 10949,10841,10211,9215,7957,6493,4932,3390,1838,159, -1644,-3429,-5036,-6460,-7721,-8807,-9656,-10145,-10169,-9650, -8565,-6983,-5174,-3559,-2343,-1422,-523,657,2288,4344, 6556,8540,9984,10720,10796,10355,9492,8273,6851,5407, 3961,2388,658,-1150,-2891,-4509,-5984,-7341,-8529,-9452, -10054,-10255,-9893,-8852,-7268,-5519,-3969,-2778,-1877,-1004, 153,1792,3870,6118,8141,9622,10470,10747,10475,9695, 8553,7255,5907,4472,2883,1139,-652,-2372,-3988,-5533, -6973,-8203,-9212,-9987,-10346,-10056,-9054,-7544,-5873,-4376, -3219,-2341,-1485,-363,1261,3364,5623,7658,9235,10286, 10738,10559,9862,8839,7681,6425,5021,3406,1652,-100, -1814,-3501,-5107,-6559,-7859,-9034,-9982,-10459,-10253,-9308, -7832,-6198,-4745,-3609,-2757,-1954,-842,807,2882,5086, 7137,8851,10070,10652,10587,10000,9112,8084,6893,5479, 3882,2184,436,-1344,-3076,-4669,-6115,-7499,-8802,-9897, -10503,-10385,-9529,-8155,-6596,-5164,-4077,-3286,-2488,-1317, 331,2358,4546,6670,8514,9868,10565,10601,10159,9450, 8520,7350,5979,4458,2795,1006,-813,-2540,-4134,-5630, -7115,-8584,-9817,-10522,-10511,-9771,-8463,-6933,-5577,-4599, -3859,-3034,-1857,-227,1757,3936,6129,8101,9551,10341, 10530,10296,9722,8850,7753,6486,5042,3400,1604,-212, -1914,-3473,-5009,-6623,-8203,-9532,-10389,-10550,-9914,-8670, -7233,-5982,-5061,-4324,-3484,-2320,-770,1131,3314,5590, 7607,9097,9998,10373,10299,9852,9103,8112,6933,5539, 3905,2108,322,-1320,-2897,-4522,-6200,-7860,-9330,-10319, -10565,-9990,-8823,-7480,-6325,-5459,-4702,-3835,-2744,-1303, 562,2773,5048,7090,8682,9744,10283,10341,9987,9320, 8445,7368,6009,4379,2633,910,-734,-2341,-3983,-5718, -7494,-9101,-10214,-10542,-10036,-8956,-7742,-6691,-5826,-5056, -4260,-3250,-1842,23,2223,4503,6587,8277,9481,10163, 10318,10065,9540,8794,7761,6410,4840,3155,1466,-153, -1743,-3399,-5204,-7099,-8859,-10091,-10475,-10040,-9109,-8033, -7026,-6172,-5456,-4737,-3782,-2402,-544,1657,3938,6066, 7891,9234,10000,10256,10161,9786,9126,8138,6851,5317, 3661,2003,399,-1165,-2816,-4692,-6745,-8636,-9909,-10351, -10049,-9254,-8242,-7254,-6436,-5779,-5137,-4245,-2889,-1070, 1052,3300,5494,7397,8788,9631,10038,10107,9879,9338, 8442,7222,5765,4172,2552,1012,-476,-2138,-4124,-6290, -8253,-9623,-10217,-10062,-9389,-8461,-7518,-6752,-6176,-5588, -4694,-3359,-1610,478,2772,5030,6982,8448,9405,9940, 10151,10042,9554,8717,7569,6142,4542,2980,1560,124, -1590,-3664,-5890,-7894,-9321,-10003,-9985,-9403,-8514,-7638, -6963,-6439,-5861,-5042,-3848,-2195,-123,2207,4514,6518, 8053,9134,9834,10195,10189,9823,9101,7983,6541,4977, 3505,2124,639,-1158,-3317,-5598,-7657,-9200,-10051,-10148, -9610,-8766,-7948,-7275,-6702,-6091,-5274,-4097,-2493,-461, 1823,4074,6054,7659,8868,9670,10087,10191,9975,9366, 8300,6908,5441,4084,2788,1310,-543,-2737,-5049,-7201, -8902,-9882,-10082,-9694,-9024,-8327,-7720,-7197,-6628,-5888, -4799,-3223,-1170,1125,3406,5516,7302,8669,9625,10234, 10523,10413,9796,8682,7295,5923,4672,3399,1881,19, -2170,-4552,-6832,-8628,-9685,-9988,-9721,-9164,-8543,-7960, -7441,-6950,-6301,-5258,-3713,-1747,471,2760,4912,6732, 8166,9243,10026,10499,10536,9982,8923,7669,6446,5276, 4045,2586,761,-1452,-3910,-6284,-8185,-9351,-9777,-9675, -9275,-8725,-8182,-7767,-7377,-6764,-5736,-4259,-2362,-156, 2156,4350,6235,7732,8930,9899,10536,10633,10121,9168, 8025,6857,5727,4561,3166,1381,-840,-3354,-5805,-7765, -9020,-9601,-9637,-9291,-8791,-8346,-8015,-7672,-7114,-6169, -4771,-2937,-774,1540,3741,5614,7181,8564,9736,10485, 10659,10253,9422,8387,7314,6268,5162,3829,2057,-220, -2780,-5236,-7260,-8689,-9450,-9578,-9290,-8854,-8468,-8190, -7906,-7412,-6555,-5267,-3500,-1331,962,3086,4944,6630, 8178,9474,10330,10606,10298,9577,8628,7619,6652,5670, 4424,2670,418,-2092,-4562,-6703,-8269,-9138,-9379,-9207, -8887,-8607,-8391,-8134,-7725,-7026,-5841,-4089,-1948,282, 2394,4341,6166,7853,9267,10203,10570,10399,9773,8878, 7947,7112,6212,4982,3255,1033,-1498,-4034,-6266,-7948, -8937,-9276,-9201,-8972,-8712,-8470,-8268,-8001,-7411,-6257, -4542,-2484,-343,1736,3738,5682,7479,8956,9988,10476, 10374,9795,9015,8257,7546,6729,5556,3882,1709,-796, -3384,-5733,-7525,-8599,-9072,-9159,-9010,-8779,-8621,-8547, -8366,-7815,-6707,-5076,-3129,-1092,985,3079,5114,6994, 8617,9819,10420,10389,9895,9218,8566,7958,7208,6101, 4515,2413,-114,-2775,-5171,-7025,-8245,-8875,-9039,-8926, -8757,-8688,-8713,-8622,-8114,-7031,-5487,-3693,-1746,309, 2388,4444,6432,8200,9517,10193,10237,9835,9288,8777, 8251,7571,6593,5136,3087,564,-2088,-4502,-6449,-7801, -8557,-8812,-8758,-8665,-8733,-8905,-8874,-8398,-7423,-6010, -4277,-2358,-353,1710,3832,5941,7841,9266,10019,10128, 9844,9422,8966,8501,7943,7084,5688,3681,1212,-1416, -3873,-5901,-7382,-8262,-8570,-8567,-8588,-8777,-8985,-8967, -8560,-7683,-6365,-4738,-2925,-1010,1013,3145,5343,7349, 8839,9673,9929,9786,9437,9055,8715,8291,7535,6211, 4274,1871,-722,-3228,-5402,-7018,-7945,-8302,-8425,-8573, -8819,-9057,-9081,-8717,-7909,-6690,-5155,-3431,-1597,406, 2626,4921,6968,8510,9457,9816,9741,9455,9159,8904, 8562,7868,6599,4753,2475,-82,-2672,-4952,-6620,-7584, -8033,-8258,-8492,-8801,-9093,-9187,-8932,-8226,-7082,-5636, -4049,-2299,-281,1992,4319,6434,8087,9142,9611,9641, 9459,9297,9191,8956,8313,7130,5424,3218,636,-2025, -4361,-6103,-7194,-7779,-8122,-8423,-8759,-9094,-9274,-9085, -8434,-7388,-6108,-4641,-2926,-909,1372,3741,5918,7664, 8827,9386,9492,9422,9394,9373,9158,8592,7557,5963, 3799,1215,-1467,-3832,-5599,-6757,-7465,-7924,-8304,-8727, -9156,-9373,-9188,-8597,-7708,-6579,-5209,-3543,-1532,754, 3139,5390,7243,8481,9090,9303,9396,9481,9516,9380, 8940,8057,6581,4467,1894,-780,-3152,-4993,-6274,-7063, -7565,-8050,-8630,-9179,-9454,-9330,-8825,-8056,-7062,-5801, -4205,-2268,-20,2432,4809,6742,8033,8742,9102,9297, 9458,9566,9536,9248,8510,7119,5041,2517,-107,-2509, -4448,-5802,-6665,-7274,-7874,-8533,-9110,-9403,-9318,-8922, -8287,-7388,-6184,-4686,-2852,-634,1844,4236,6186,7534, 8355,8842,9142,9344,9507,9620,9528,8925,7620,5647, 3201,578,-1872,-3847,-5239,-6163,-6884,-7625,-8392,-9011, -9333,-9356,-9110,-8586,-7789,-6726,-5340,-3535,-1301,1190, 3599,5600,7045,8006,8616,8980,9231,9506,9772,9784, 9278,8100,6233,3835,1200,-1286,-3298,-4728,-5721,-6576, -7429,-8226,-8861,-9261,-9382,-9192,-8741,-8063,-7137,-5860, -4113,-1893,574,2953,4973,6533,7630,8310,8720,9077, 9483,9850,9974,9611,8582,6839,4501,1865,-624,-2627, -4088,-5210,-6187,-7088,-7919,-8637,-9147,-9358,-9258,-8918, -8392,-7638,-6468,-4743,-2544,-126,2244,4370,6051,7223, 7958,8457,8912,9405,9860,10088,9874,9010,7360,5032, 2417,-1,-1971,-3512,-4754,-5821,-6799,-7695,-8460,-9011, -9255,-9216,-8992,-8641,-7998,-6854,-5171,-3078,-757,1605, 3778,5533,6768,7566,8137,8686,9278,9842,10228,10200, 9449,7840,5567,3063,716,-1278,-2909,-4255,-5405,-6450, -7451,-8330,-8933,-9196,-9224,-9149,-8929,-8373,-7324,-5756, -3744,-1426,987,3220,5019,6292,7174,7865,8493,9124, 9778,10325,10430,9767,8244,6085,3676,1367,-635,-2310, -3696,-4908,-6070,-7185,-8085,-8656,-8960,-9134,-9211,-9103, -8647,-7725,-6296,-4391,-2103,333,2592,4429,5799,6804, 7547,8190,8892,9700,10420,10662,10101,8672,6612,4300, 2035,15,-1692,-3133,-4469,-5776,-6950,-7854,-8459,-8851, -9127,-9291,-9252,-8887,-8103,-6807,-4954,-2668,-266,1958, 3845,5319,6379,7137,7808,8610,9569,10428,10770,10298, 9002,7105,4877,2634,627,-1072,-2579,-4022,-5395,-6596, -7529,-8186,-8669,-9046,-9298,-9355,-9152,-8539,-7343,-5540, -3331,-989,1262,3251,4833,5953,6753,7512,8463,9570, 10519,10934,10602,9477,7668,5477,3271,1300,-419,-2017, -3568,-5014,-6235,-7175,-7902,-8483,-8918,-9229,-9408,-9360, -8860,-7753,-6068,-3970,-1680,590,2629,4248,5373,6189, 7050,8132,9315,10323,10877,10721,9741,8057,5988,3914, 2025,303,-1372,-3003,-4480,-5726,-6767,-7614,-8259,-8757, -9182,-9519,-9589,-9179,-8164,-6582,-4587,-2333,-10,2100, 3739,4877,5781,6743,7878,9106,10212,10891,10841,9937, 8342,6408,4476,2655,881,-862,-2503,-3984,-5296,-6400, -7259,-7919,-8487,-9025,-9475,-9629,-9301,-8425,-7030,-5155, -2907,-562,1515,3113,4280,5251,6276,7478,8807,10044, 10852,10917,10119,8657,6884,5051,3219,1397,-364,-2030, -3586,-4982,-6138,-7017,-7695,-8323,-8961,-9478,-9679,-9454, -8750,-7482,-5616,-3336,-996,1058,2664,3880,4918,5983, 7219,8624,9979,10889,11015,10321,9029,7411,5629,3788, 1961,189,-1520,-3151,-4618,-5798,-6695,-7448,-8203,-8925, -9484,-9775,-9716,-9168,-7988,-6164,-3918,-1620,402,2020, 3281,4342,5433,6772,8344,9834,10821,11068,10564,9456, 7954,6234,4421,2619,842,-920,-2630,-4129,-5311,-6270, -7152,-8016,-8801,-9444,-9890,-10014,-9618,-8517,-6729,-4508, -2227,-165,1518,2796,3849,5000,6457,8124,9655,10695, 11058,10715,9758,8361,6708,4976,3226,1425,-415,-2141, -3618,-4839,-5893,-6849,-7729,-8512,-9212,-9786,-10064,-9788, -8785,-7132,-5052,-2818,-752,896,2104,3154,4382,5935, 7670,9264,10422,10973,10846,10064,8781,7262,5652,3916, 2043,152,-1580,-3077,-4362,-5499,-6517,-7419,-8247,-9056, -9783,-10194,-10041,-9206,-7699,-5659,-3414,-1353,266,1493, 2630,3967,5589,7328,8934,10192,10878,10860,10168,9051, 7708,6172,4437,2561,702,-1002,-2526,-3895,-5112,-6140, -7033,-7933,-8866,-9696,-10213,-10208,-9523,-8105,-6122,-3926, -1928,-369,853,2047,3452,5098,6863,8578,9968,10755, 10835,10324,9415,8219,6747,5005,3118,1263,-464,-2070, -3530,-4758,-5779,-6738,-7721,-8706,-9599,-10236,-10399,-9847, -8505,-6557,-4418,-2515,-993,286,1556,2983,4628,6468, 8278,9730,10574,10762,10427,9707,8641,7219,5522,3714, 1898,112,-1571,-3054,-4291,-5364,-6375,-7409,-8462,-9461, -10249,-10563,-10125,-8833,-6959,-4960,-3169,-1664,-363,902, 2330,4058,6014,7932,9471,10403,10743,10610,10051,9058, 7692,6096,4361,2533,699,-1014,-2515,-3798,-4929,-6005, -7086,-8192,-9319,-10300,-10759,-10360,-9118,-7358,-5456,-3687, -2179,-894,333,1742,3503,5526,7482,9032,10046,10561, 10595,10130,9223,7979,6500,4843,3064,1252,-458,-1965, -3275,-4440,-5504,-6561,-7746,-9055,-10193,-10748,-10473,-9404, -7799,-5986,-4256,-2762,-1502,-292,1174,3040,5122,7087, 8716,9909,10609,10771,10413,9594,8427,7000,5346,3536, 1713,10,-1544,-2934,-4117,-5154,-6250,-7540,-8944,-10140, -10758,-10573,-9608,-8097,-6328,-4606,-3166,-1991,-788,718, 2568,4581,6527,8227,9541,10362,10655,10454,9822,8823, 7472,5843,4081,2295,552,-1067,-2448,-3581,-4624,-5791, -7212,-8746,-10055,-10770,-10733,-9933,-8493,-6749,-5107,-3764, -2592,-1322,243,2103,4128,6109,7895,9318,10245,10649, 10587,10108,9192,7883,6321,4621,2820,998,-678,-2056, -3161,-4206,-5452,-6976,-8577,-9957,-10821,-10944,-10221,-8828, -7177,-5638,-4340,-3154,-1864,-291,1542,3542,5590,7492, 9018,10055,10634,10781,10460,9668,8493,7033,5350,3496, 1590,-131,-1505,-2612,-3732,-5075,-6639,-8281,-9766,-10782, -11020,-10397,-9123,-7619,-6220,-4996,-3818,-2508,-971,822, 2856,4975,6932,8546,9759,10534,10828,10630,9974,8935, 7585,5931,4024,2070,366,-974,-2101,-3264,-4629,-6221, -7956,-9558,-10662,-10981,-10453,-9322,-7987,-6709,-5516,-4341, -3070,-1570,243,2318,4468,6455,8154,9476,10356,10739, 10634,10136,9291,8066,6432,4526,2648,1024,-313,-1482, -2670,-4049,-5700,-7543,-9296,-10552,-10978,-10579,-9630,-8450, -7242,-6102,-4996,-3767,-2245,-400,1683,3831,5883,7694, 9159,10160,10650,10711,10427,9765,8617,7020,5169,3316, 1666,271,-948,-2145,-3524,-5245,-7221,-9087,-10384,-10867, -10605,-9804,-8716,-7588,-6527,-5479,-4283,-2805,-1003,1032, 3158,5263,7198,8753,9794,10376,10635,10560,10035,8957, 7430,5650,3851,2206,808,-362,-1491,-2880,-4688,-6727, -8607,-9964,-10592,-10486,-9831,-8889,-7881,-6930,-5969,-4832, -3384,-1635,330,2476,4680,6688,8259,9354,10087,10510, 10579,10167,9191,7750,6037,4251,2593,1234,161,-904, -2293,-4140,-6233,-8185,-9647,-10406,-10444,-9910,-9076,-8193, -7348,-6421,-5277,-3874,-2214,-264,1933,4183,6219,7849, 9068,9950,10527,10704,10365,9500,8171,6498,4681,3026, 1720,673,-418,-1843,-3714,-5824,-7819,-9369,-10231,-10352, -9900,-9167,-8381,-7557,-6634,-5558,-4270,-2696,-787,1388, 3611,5624,7282,8611,9660,10377,10683,10524,9846,8600, 6933,5142,3550,2288,1230,81,-1421,-3336,-5492,-7576, -9223,-10155,-10355,-10062,-9512,-8838,-8066,-7185,-6164,-4928, -3367,-1412,817,3065,5110,6894,8406,9605,10449,10903, 10881,10270,9038,7370,5612,4072,2856,1803,660,-790, -2655,-4860,-7041,-8766,-9785,-10139,-10033,-9639,-9058,-8365, -7580,-6688,-5543,-3975,-2001,171,2331,4368,6208,7786, 9083,10098,10755,10923,10446,9302,7702,6033,4572,3380, 2334,1225,-203,-2107,-4366,-6585,-8352,-9475,-9984,-10026, -9727,-9205,-8582,-7936,-7163,-6047,-4503,-2586,-474,1694, 3785,5689,7360,8777,9941,10786,11115,10734,9665,8168, 6585,5143,3947,2949,1888,449,-1510,-3812,-6069,-7909, -9164,-9866,-10073,-9862,-9406,-8892,-8353,-7625,-6547,-5065, -3223,-1144,1012,3101,5013,6728,8268,9642,10665,11094, 10803,9860,8469,6917,5505,4382,3437,2385,933,-1030, -3292,-5503,-7367,-8759,-9613,-9902,-9766,-9431,-9050,-8601, -7941,-6935,-5530,-3781,-1781,332,2391,4301,6082,7789, 9333,10495,11075,10958,10152,8841,7342,5996,4949,4077, 3037,1536,-423,-2639,-4858,-6866,-8426,-9387,-9764,-9747, -9542,-9280,-8913,-8309,-7362,-6041,-4349,-2366,-292,1710, 3621,5492,7321,8972,10254,10959,10955,10239,8990,7562, 6314,5389,4559,3494,2020,153,-1995,-4222,-6286,-7920, -8965,-9453,-9564,-9487,-9308,-9012,-8515,-7718,-6499,-4851, -2926,-937,1013,2929,4865,6794,8575,10005,10872,11012, 10380,9180,7852,6733,5849,4984,3899,2460,641,-1475, -3731,-5854,-7545,-8637,-9218,-9451,-9475,-9360,-9149,-8753, -8014,-6837,-5254,-3427,-1518,405,2344,4315,6268,8101, 9656,10672,10890,10287,9195,8027,7036,6213,5378,4337, 2965,1205,-914,-3216,-5363,-7078,-8263,-8977,-9323,-9439, -9454,-9370,-9059,-8362,-7195,-5645,-3867,-1994,-76,1875, 3850,5855,7827,9522,10607,10860,10361,9410,8369,7440, 6616,5771,4773,3458,1714,-443,-2762,-4927,-6702,-7975, -8756,-9164,-9373,-9513,-9550,-9338,-8702,-7598,-6138,-4439, -2592,-702,1196,3152,5264,7416,9285,10490,10840,10455, 9643,8705,7799,6972,6178,5226,3920,2157,17,-2287, -4498,-6352,-7708,-8558,-9019,-9293,-9515,-9628,-9469,-8914, -7944,-6593,-4946,-3148,-1331,507,2480,4672,6946,8920, 10200,10663,10443,9775,8914,8061,7320,6613,5728,4477, 2769,673,-1624,-3871,-5810,-7265,-8195,-8783,-9223,-9580, -9777,-9709,-9288,-8437,-7144,-5533,-3771,-1996,-167,1893, 4233,6635,8653,9994,10578,10479,9900,9104,8313,7620, 6945,6100,4890,3239,1195,-1094,-3375,-5352,-6846,-7884, -8621,-9168,-9567,-9802,-9791,-9436,-8633,-7378,-5825,-4191, -2572,-813,1273,3660,6080,8172,9660,10411,10471,10018, 9318,8623,8020,7421,6616,5464,3879,1843,-478,-2775, -4749,-6295,-7462,-8335,-9008,-9533,-9905,-10040,-9794,-9037, -7838,-6409,-4958,-3425,-1635,505,2937,5427,7661,9332, 10271,10474,10123,9531,8937,8379,7786,7040,5975,4429, 2395,78,-2219,-4235,-5859,-7122,-8094,-8843,-9447,-9942, -10193,-9980,-9220,-8075,-6786,-5451,-3994,-2262,-171,2229, 4732,7037,8829,9886,10204,10023,9609,9124,8628,8132, 7510,6543,5059,3073,799,-1446,-3452,-5147,-6521,-7579, -8407,-9155,-9818,-10180,-10035,-9382,-8380,-7243,-6040,-4667, -2971,-891,1521,4092,6497,8381,9522,9962,9896,9543, 9088,8669,8272,7745,6845,5416,3494,1317,-866,-2886, -4632,-6017,-7094,-8036,-8928,-9688,-10089,-9980,-9403,-8550, -7588,-6492,-5176,-3547,-1528,879,3482,5922,7882,9172, 9775,9835,9580,9227,8911,8626,8178,7305,5900,4051, 1921,-297,-2387,-4159,-5565,-6716,-7777,-8792,-9629,-10066, -10009,-9548,-8845,-7970,-6952,-5736,-4175,-2152,285,2899, 5375,7407,8796,9507,9644,9417,9110,8898,8707,8301, 7499,6231,4510,2445,251,-1821,-3576,-4982,-6188,-7376, -8503,-9361,-9807,-9817,-9475,-8881,-8144,-7282,-6182,-4684, -2707,-310,2286,4778,6882,8410,9243,9456,9340,9181, 9074,8930,8583,7893,6734,5069,2996,751,-1338,-3074, -4535,-5901,-7230,-8403,-9280,-9766,-9828,-9543,-9032,-8386, -7602,-6578,-5141,-3187,-813,1772,4307,6512,8102,8957, 9234,9229,9162,9097,8972,8671,8060,6992,5377,3316, 1137,-847,-2539,-4050,-5479,-6851,-8091,-9044,-9596,-9730, -9524,-9105,-8586,-7949,-7019,-5627,-3741,-1445,1142,3760, 6045,7701,8661,9075,9200,9237,9238,9175,8992,8511, 7479,5824,3763,1627,-339,-2092,-3691,-5231,-6708,-8022, -9046,-9659,-9831,-9661,-9333,-8934,-8371,-7496,-6200,-4398, -2084,590,3306,5680,7428,8490,9039,9297,9381,9384, 9388,9311,8894,7881,6270,4286,2232,325,-1408,-3046, -4637,-6177,-7606,-8750,-9442,-9687,-9642,-9463,-9176,-8718, -7992,-6856,-5178,-2915,-227,2537,4952,6765,7987,8712, 9056,9191,9323,9521,9617,9316,8380,6814,4894,2912, 1007,-799,-2527,-4230,-5904,-7426,-8599,-9315,-9643,-9689, -9549,-9285,-8891,-8284,-7292,-5709,-3473,-786,1955,4397, 6342,7713,8509,8878,9075,9321,9639,9827,9561,8662, 7202,5402,3471,1568,-220,-1954,-3703,-5437,-6995,-8238, -9061,-9504,-9672,-9657,-9521,-9284,-8858,-7990,-6442,-4218, -1587,1130,3660,5770,7290,8188,8623,8924,9332,9811, 10098,9914,9137,7801,6065,4195,2374,612,-1187,-3048, -4892,-6555,-7884,-8814,-9382,-9651,-9691,-9639,-9550,-9265, -8480,-7022,-4932,-2404,285,2873,5079,6682,7638,8188, 8685,9281,9874,10244,10157,9486,8244,6613,4837,3066, 1316,-492,-2386,-4263,-5960,-7370,-8448,-9120,-9431,-9563, -9698,-9804,-9649,-8961,-7598,-5608,-3171,-491,2160,4433, 6057,7072,7755,8377,9056,9735,10197,10187,9576,8422, 6904,5249,3592,1879,55,-1836,-3688,-5409,-6891,-8001, -8671,-9023,-9268,-9536,-9765,-9719,-9149,-7947,-6140,-3790, -1100,1550,3775,5397,6497,7304,8055,8862,9634,10168, 10243,9726,8664,7280,5748,4125,2380,553,-1324,-3214, -5030,-6590,-7726,-8424,-8840,-9211,-9617,-9921,-9915,-9443, -8383,-6643,-4276,-1564,1096,3356,5027,6188,7069,7906, 8790,9648,10256,10346,9840,8868,7621,6176,4570,2853, 1040,-861,-2820,-4720,-6329,-7469,-8191,-8711,-9219,-9692, -10032,-10124,-9800,-8862,-7182,-4847,-2143,519,2785,4504, 5750,6718,7641,8652,9632,10300,10456,10087,9280,8139, 6749,5184,3503,1710,-213,-2264,-4248,-5905,-7090,-7914, -8570,-9160,-9703,-10158,-10415,-10274,-9486,-7898,-5609,-2934, -279,2064,3899,5231,6295,7369,8517,9568,10287,10537, 10298,9610,8556,7227,5713,4096,2334,351,-1767,-3766, -5409,-6645,-7562,-8287,-8918,-9513,-10054,-10456,-10472,-9823, -8367,-6202,-3618,-974,1365,3194,4583,5784,6996,8238, 9337,10112,10460,10374,9837,8884,7650,6271,4753,2992, 982,-1135,-3133,-4823,-6147,-7158,-7959,-8658,-9354,-10051, -10605,-10755,-10237,-8930,-6864,-4307,-1666,653,2496,3960, 5289,6625,7939,9094,9955,10437,10441,9947,9082,8018, 6791,5322,3540,1501,-624,-2617,-4333,-5721,-6795,-7625, -8366,-9149,-9949,-10607,-10886,-10529,-9347,-7346,-4814,-2227, 38,1867,3409,4849,6267,7611,8819,9788,10381,10472, 10082,9355,8442,7333,5918,4157,2114,-14,-2062,-3883, -5357,-6451,-7295,-8108,-8977,-9867,-10644,-11072,-10859,-9792, -7881,-5441,-2951,-739,1145,2797,4328,5787,7212,8566, 9675,10350,10510,10219,9643,8870,7848,6470,4721,2708, 594,-1457,-3275,-4750,-5894,-6825,-7714,-8668,-9685,-10630, -11230,-11149,-10153,-8310,-5969,-3577,-1385,543,2242,3793, 5286,6780,8211,9394,10134,10382,10257,9872,9233,8285, 6984,5309,3313,1142,-974,-2836,-4359,-5561,-6553,-7461, -8437,-9538,-10647,-11414,-11433,-10509,-8795,-6625,-4333,-2145, -173,1582,3206,4815,6454,7996,9230,10018,10382,10401, 10123,9566,8707,7484,5851,3863,1697,-414,-2292,-3846, -5082,-6070,-6966,-7985,-9238,-10532,-11434,-11554,-10778,-9252, -7236,-5003,-2800,-809,934,2568,4263,6008,7601,8862, 9729,10208,10342,10193,9787,9072,7964,6406,4454,2290, 162,-1764,-3403,-4685,-5665,-6567,-7678,-9054,-10427,-11377, -11589,-10971,-9627,-7749,-5576,-3399,-1437,321,2037,3824, 5614,7244,8559,9489,10048,10290,10270,9989,9403,8406, 6929,5039,2930,775,-1243,-2933,-4192,-5152,-6097,-7295, -8755,-10197,-11235,-11591,-11176,-10010,-8260,-6193,-4115,-2196, -383,1436,3313,5163,6839,8196,9185,9820,10159,10273, 10145,9679,8755,7359,5550,3440,1217,-864,-2551,-3788, -4761,-5773,-7052,-8551,-10003,-11121,-11635,-11359,-10288,-8613, -6645,-4639,-2728,-876,1002,2923,4802,6499,7884,8908, 9590,10031,10276,10268,9898,9098,7855,6152,4066,1818, -275,-1931,-3146,-4145,-5239,-6579,-8110,-9655,-10929,-11619, -11502,-10581,-9073,-7259,-5382,-3523,-1653,263,2238,4213, 6023,7495,8581,9377,9965,10337,10412,10118,9422,8274, 6628,4541,2272,207,-1421,-2664,-3756,-4918,-6268,-7821, -9429,-10783,-11556,-11527,-10703,-9318,-7641,-5857,-4036,-2194, -286,1708,3697,5505,7004,8197,9135,9839,10279,10426, 10260,9746,8740,7127,5014,2751,735,-872,-2141,-3263, -4451,-5839,-7465,-9178,-10648,-11517,-11600,-10945,-9740,-8200, -6483,-4689,-2837,-863,1205,3235,5080,6632,7894,8906, 9675,10171,10417,10410,10038,9106,7535,5500,3334,1353, -288,-1611,-2771,-3963,-5374,-7077,-8887,-10445,-11401,-11608, -11091,-10006,-8581,-6996,-5334,-3544,-1582,493,2544,4424, 6070,7467,8608,9473,10093,10530,10729,10482,9605,8083, 6100,3975,1997,344,-979,-2117,-3321,-4812,-6609,-8498, -10161,-11281,-11685,-11341,-10415,-9127,-7657,-6056,-4254,-2237, -107,1973,3902,5645,7134,8307,9178,9858,10416,10735, 10592,9803,8381,6525,4502,2571,929,-381,-1521,-2770, -4308,-6130,-8055,-9796,-11040,-11556,-11340,-10557,-9451,-8166, -6668,-4898,-2917,-864,1168,3138,4963,6523,7763,8745, 9623,10403,10926,10932,10268,8957,7173,5154,3203,1551, 218,-967,-2263,-3832,-5681,-7631,-9394,-10675,-11278,-11225, -10680,-9830,-8705,-7264,-5529,-3591,-1549,537,2587,4457, 6022,7266,8320,9320,10222,10838,10941,10401,9204,7503, 5579,3727,2156,865,-302,-1589,-3170,-5061,-7106,-8991, -10374,-11087,-11200,-10870,-10192,-9176,-7817,-6166,-4284,-2231, -76,2036,3907,5431,6676,7814,8931,9957,10724,11003, 10614,9546,7949,6105,4297,2724,1412,230,-1045,-2630, -4574,-6687,-8593,-9986,-10788,-11065,-10913,-10373,-9451,-8200, -6678,-4904,-2874,-678,1466,3359,4929,6269,7494,8683, 9794,10658,11045,10763,9782,8260,6479,4719,3161,1847, 686,-578,-2183,-4157,-6267,-8166,-9618,-10560,-11018,-11020, -10576,-9751,-8626,-7218,-5487,-3443,-1242,895,2793,4405, 5809,7119,8406,9634,10634,11159,10997,10114,8687,6982, 5265,3739,2483,1347,44,-1647,-3685,-5798,-7701,-9212, -10296,-10924,-11054,-10731,-10049,-9072,-7777,-6094,-4073,-1887, 236,2132,3779,5239,6635,8045,9427,10572,11201,11138, 10374,9044,7384,5692,4222,3025,1926,623,-1077,-3114, -5234,-7190,-8822,-10033,-10754,-10995,-10837,-10354,-9550,-8358, -6726,-4722,-2543,-419,1508,3182,4682,6147,7656,9129, 10362,11109,11208,10595,9357,7741,6106,4720,3603,2522, 1187,-522,-2519,-4615,-6614,-8346,-9661,-10497,-10864,-10848, -10516,-9838,-8735,-7180,-5248,-3117,-1027,845,2481,3998, 5534,7123,8683,10029,10949,11234,10775,9630,8096,6558, 5258,4151,3019,1659,-5,-1941,-4024,-6068,-7860,-9242, -10166,-10683,-10865,-10725,-10191,-9185,-7685,-5772,-3654,-1582, 278,1936,3495,5078,6710,8335,9795,10868,11279,10874, 9752,8287,6858,5643,4571,3449,2125,522,-1359,-3433, -5512,-7353,-8799,-9834,-10514,-10872,-10897,-10520,-9640,-8197, -6299,-4197,-2145,-294,1359,2917,4490,6133,7827,9429, 10660,11211,10926,9954,8646,7334,6163,5087,3971,2690, 1135,-733,-2833,-4951,-6835,-8360,-9498,-10295,-10799,-10990, -10763,-9988,-8631,-6811,-4774,-2753,-908,764,2332,3908, 5583,7392,9150,10511,11147,10960,10110,8914,7677,6538, 5477,4393,3154,1634,-204,-2262,-4346,-6246,-7814,-9033, -9955,-10621,-10968,-10875,-10209,-8952,-7240,-5316,-3387,-1567, 99,1649,3224,4965,6899,8790,10260,11006,10938,10223, 9155,8009,6915,5909,4886,3687,2188,365,-1693,-3795, -5711,-7307,-8584,-9615,-10435,-10957,-11001,-10427,-9248,-7628, -5778,-3866,-2039,-387,1135,2703,4492,6499,8451,9950, 10730,10751,10166,9222,8157,7141,6190,5224,4085,2633, 834,-1221,-3319,-5231,-6841,-8177,-9332,-10311,-10966,-11108, -10644,-9612,-8116,-6317,-4406,-2587,-963,533,2120,3988, 6093,8122,9702,10600,10773,10329,9490,8507,7545,6643, 5711,4582,3122,1314,-722,-2784,-4660,-6277,-7705,-9010, -10123,-10873,-11119,-10783,-9880,-8476,-6730,-4872,-3128,-1584, -103,1557,3517,5666,7724,9363,10358,10632,10302,9573, 8673,7782,6944,6070,4994,3575,1783,-245,-2272,-4113, -5756,-7275,-8690,-9907,-10770,-11151,-10963,-10184,-8853,-7137, -5324,-3660,-2167,-669,1045,3069,5296,7438,9171,10263, 10646,10420,9786,8973,8149,7363,6532,5489,4063,2254, 250,-1720,-3545,-5229,-6847,-8369,-9688,-10664,-11193,-11172, -10522,-9273,-7635,-5917,-4322,-2863,-1361,380,2441,4697, 6887,8706,9918,10431,10338,9833,9122,8405,7748,7036, 6053,4643,2839,860,-1087,-2927,-4687,-6400,-8001,-9397, -10493,-11168,-11275,-10714,-9548,-8003,-6387,-4893,-3479,-1972, -192,1900,4192,6444,8349,9669,10315,10339,9914,9288, 8667,8097,7429,6457,5057,3296,1380,-522,-2367,-4161, -5885,-7505,-8982,-10217,-11069,-11328,-10879,-9806,-8363,-6875, -5480,-4120,-2632,-860,1251,3570,5859,7849,9313,10099, 10246,9935,9422,8920,8449,7850,6902,5534,3851,2013, 140,-1717,-3531,-5292,-6988,-8579,-9967,-10961,-11337,-10998, -10046,-8739,-7353,-6033,-4743,-3288,-1520,581,2911,5248, 7333,8889,9760,9976,9744,9348,8987,8625,8078,7188, 5928,4373,2638,808,-1036,-2842,-4600,-6327,-8016,-9533, -10643,-11127,-10906,-10083,-8917,-7692,-6519,-5320,-3923,-2193, -109,2227,4619,6795,8483,9489,9817,9703,9437,9159, 8824,8281,7416,6207,4700,2992,1177,-638,-2405,-4159, -5936,-7698,-9283,-10460,-11004,-10853,-10128,-9072,-7933,-6818, -5656,-4303,-2615,-560,1781,4219,6463,8184,9202,9568, 9541,9388,9212,8951,8457,7658,6550,5166,3562,1827, 65,-1697,-3489,-5336,-7201,-8916,-10227,-10894,-10857,-10257, -9358,-8379,-7376,-6274,-4951,-3303,-1272,1107,3637,5984, 7809,8912,9375,9452,9406,9322,9109,8671,7943,6901, 5559,3991,2296,574,-1149,-2928,-4837,-6820,-8653,-10040, -10754,-10776,-10273,-9496,-8615,-7667,-6620,-5388,-3849,-1880, 499,3071,5457,7299,8456,9043,9278,9368,9374,9251, 8919,8294,7342,6061,4524,2857,1168,-528,-2332,-4305, -6382,-8314,-9794,-10593,-10727,-10369,-9729,-8937,-8056,-7094, -5969,-4509,-2560,-140,2480,4891,6776,8052,8796,9179, 9356,9420,9356,9094,8554,7657,6408,4920,3329,1728, 92,-1706,-3730,-5882,-7873,-9404,-10310,-10602,-10416,-9904, -9195,-8378,-7503,-6485,-5107,-3175,-733,1907,4342,6289, 7659,8524,9032,9314,9463,9485,9299,8812,7957,6773, 5374,3881,2355,752,-1072,-3162,-5371,-7427,-9053,-10086, -10528,-10473,-10056,-9433,-8743,-8013,-7107,-5769,-3850,-1435, 1171,3605,5618,7116,8132,8768,9153,9402,9534,9471, 9086,8312,7186,5841,4451,3041,1498,-342,-2496,-4774, -6890,-8593,-9753,-10338,-10405,-10078,-9564,-9007,-8413,-7596, -6320,-4453,-2077,514,2977,5056,6639,7750,8477,8976, 9338,9579,9612,9305,8577,7496,6244,4964,3633,2112, 254,-1911,-4188,-6330,-8119,-9431,-10160,-10327,-10101,-9718, -9324,-8880,-8167,-6943,-5101,-2756,-182,2310,4470,6161, 7384,8226,8814,9259,9585,9692,9429,8750,7747,6610, 5449,4210,2705,844,-1292,-3527,-5687,-7579,-8992,-9802, -10034,-9893,-9642,-9413,-9109,-8505,-7368,-5632,-3393,-890, 1576,3761,5525,6822,7743,8433,9011,9461,9648,9435, 8812,7918,6933,5909,4730,3260,1452,-633,-2874,-5104, -7103,-8630,-9524,-9843,-9820,-9731,-9661,-9486,-8972,-7918, -6239,-4036,-1537,979,3258,5099,6469,7464,8265,8973, 9528,9771,9574,8986,8185,7304,6340,5196,3765,2008, -51,-2326,-4640,-6721,-8292,-9219,-9597,-9668,-9664,-9662, -9564,-9144,-8195,-6650,-4576,-2149,369,2675,4543,5926, 6963,7876,8732,9400,9679,9523,9040,8381,7624,6734, 5650,4301,2631,620,-1671,-4053,-6205,-7838,-8843,-9327, -9523,-9650,-9784,-9808,-9507,-8683,-7237,-5224,-2810,-257, 2107,4036,5495,6662,7714,8660,9345,9628,9510,9113, 8555,7872,7046,6050,4816,3237,1245,-1089,-3520,-5716, -7409,-8495,-9075,-9389,-9642,-9874,-9982,-9769,-9054,-7721, -5795,-3424,-904,1429,3349,4872,6166,7358,8404,9156, 9502,9494,9239,8792,8176,7413,6498,5343,3817,1840, -506,-2976,-5216,-6935,-8057,-8715,-9129,-9500,-9852,-10080, -10001,-9439,-8252,-6405,-4055,-1563,733,2665,4278,5715, 7051,8198,9011,9423,9482,9279,8885,8354,7708,6924, 5893,4464,2532,180,-2304,-4574,-6363,-7590,-8363,-8907, -9379,-9809,-10125,-10187,-9784,-8703,-6914,-4620,-2180,61, 1989,3671,5215,6632,7829,8703,9220,9384,9255,8912, 8435,7878,7219,6320,4982,3090,739,-1773,-4063,-5858, -7121,-7984,-8622,-9172,-9673,-10105,-10325,-10079,-9120,-7416, -5199,-2856,-660,1321,3129,4781,6269,7524,8479,9084, 9337,9266,8974,8574,8142,7611,6804,5516,3652,1300, -1214,-3504,-5337,-6682,-7630,-8338,-8943,-9537,-10112,-10487, -10338,-9432,-7782,-5679,-3452,-1313,697,2585,4312,5842, 7139,8165,8873,9229,9247,9041,8748,8430,8032,7358, 6161,4317,1966,-554,-2884,-4786,-6209,-7238,-8012,-8702, -9428,-10187,-10718,-10666,-9830,-8291,-6307,-4171,-2048,5, 1954,3751,5371,6781,7930,8746,9173,9237,9059,8816, 8598,8332,7746,6595,4813,2559,128,-2170,-4120,-5630, -6713,-7515,-8267,-9134,-10042,-10687,-10743,-10047,-8682,-6866, -4833,-2734,-665,1301,3126,4796,6271,7492,8383,8885, 9010,8905,8774,8709,8579,8112,7069,5389,3221,838, -1497,-3548,-5131,-6252,-7120,-8005,-9023,-10046,-10756,-10869, -10270,-9046,-7369,-5422,-3362,-1303,702,2607,4356,5917, 7221,8190,8747,8921,8878,8833,8862,8810,8385,7382, 5790,3741,1418,-930,-3003,-4586,-5710,-6611,-7562,-8664, -9768,-10561,-10785,-10360,-9316,-7789,-5960,-3987,-1973,20, 1946,3771,5436,6846,7883,8470,8676,8707,8793,8954, 8989,8651,7768,6306,4329,2000,-397,-2509,-4117,-5274, -6264,-7349,-8556,-9702,-10531,-10836,-10527,-9630,-8242,-6507, -4565,-2547,-549,1393,3266,5019,6524,7636,8265,8526, 8666,8861,9089,9170,8902,8138,6795,4892,2593,227, -1830,-3399,-4610,-5720,-6926,-8243,-9497,-10446,-10894,-10743, -10004,-8744,-7091,-5213,-3245,-1268,704,2673,4544,6121, 7231,7878,8230,8508,8807,9086,9227,9074,8456,7236, 5396,3126,813,-1195,-2767,-4030,-5219,-6503,-7875,-9168, -10166,-10708,-10689,-10088,-8966,-7438,-5664,-3795,-1882,104, 2162,4127,5747,6880,7576,8015,8365,8692,8997,9215, 9192,8701,7544,5737,3517,1273,-675,-2243,-3558,-4825, -6174,-7587,-8926,-10015,-10678,-10807,-10351,-9337,-7893,-6195, -4398,-2508,-459,1688,3717,5373,6558,7343,7888,8314, 8690,9059,9398,9512,9116,8011,6232,4054,1850,-87, -1687,-3070,-4425,-5862,-7343,-8741,-9901,-10676,-10945,-10609, -9691,-8353,-6782,-5062,-3176,-1085,1106,3163,4850,6101, 6981,7617,8097,8530,8999,9470,9718,9439,8421,6713, 4604,2481,599,-994,-2419,-3845,-5354,-6891,-8358,-9623, -10533,-10916,-10680,-9884,-8717,-7318,-5706,-3821,-1672,569, 2644,4366,5687,6645,7322,7829,8314,8882,9465,9828, 9638,8695,7074,5064,3018,1169,-447,-1941,-3424,-4928, -6442,-7935,-9303,-10343,-10844,-10722,-10076,-9096,-7877,-6352, -4466,-2290,-38,2068,3881,5320,6375,7115,7678,8244, 8924,9623,10072,9942,9052,7493,5566,3602,1789,143, -1416,-2939,-4458,-6008,-7580,-9040,-10162,-10735,-10733,-10290, -9533,-8444,-6952,-5061,-2908,-691,1419,3297,4822,5937, 6699,7301,7968,8787,9612,10162,10123,9334,7900,6108, 4248,2469,812,-755,-2283,-3821,-5427,-7085,-8643,-9839, -10506,-10666,-10441,-9866,-8897,-7479,-5661,-3574,-1367,803, 2768,4356,5494,6279,6934,7676,8577,9490,10115,10161, 9492,8213,6568,4795,3055,1408,-141,-1641,-3194,-4884, -6667,-8315,-9571,-10325,-10621,-10542,-10106,-9239,-7907,-6160, -4124,-1939,246,2236,3839,4985,5790,6481,7279,8255, 9259,9968,10098,9561,8449,6967,5288,3573,1952,466, -972,-2526,-4277,-6108,-7781,-9085,-9947,-10408,-10506,-10209, -9468,-8274,-6670,-4730,-2558,-334,1708,3363,4539,5360, 6086,6963,8045,9130,9886,10065,9615,8615,7204,5539, 3821,2238,827,-551,-2100,-3851,-5661,-7312,-8650,-9627, -10230,-10445,-10246,-9621,-8562,-7068,-5183,-3018,-773,1299, 2972,4161,5004,5784,6754,7934,9088,9911,10193,9888, 9016,7661,6006,4303,2746,1334,-103,-1725,-3526,-5349, -7036,-8469,-9580,-10315,-10638,-10544,-10025,-9057,-7627,-5749, -3548,-1232,902,2606,3801,4661,5503,6539,7752,8906, 9766,10169,10014,9265,7986,6402,4804,3357,2001,551, -1098,-2893,-4712,-6435,-7954,-9186,-10073,-10567,-10651,-10307, -9506,-8210,-6418,-4239,-1915,238,1941,3156,4082,5032, 6177,7461,8692,9676,10238,10222,9550,8319,6812,5302, 3896,2522,1047,-586,-2357,-4179,-5933,-7515,-8837,-9833, -10450,-10681,-10497,-9850,-8666,-6927,-4747,-2402,-244,1494, 2781,3808,4820,5966,7230,8478,9550,10231,10303,9697, 8565,7179,5765,4390,2982,1456,-202,-1989,-3829,-5615, -7254,-8643,-9714,-10423,-10760,-10700,-10187,-9112,-7412,-5224, -2883,-773,918,2241,3370,4483,5679,6973,8298,9466, 10234,10396,9904,8898,7624,6279,4922,3527,2033,404, -1376,-3239,-5081,-6798,-8290,-9480,-10335,-10857,-11005,-10678, -9698,-8019,-5838,-3533,-1450,262,1658,2874,4039,5274, 6632,8064,9361,10223,10438,10023,9140,7997,6736,5426, 4060,2587,954,-840,-2730,-4615,-6380,-7924,-9187,-10149, -10824,-11157,-10990,-10114,-8513,-6399,-4164,-2109,-358,1111, 2375,3569,4861,6326,7867,9243,10177,10490,10187,9416, 8358,7168,5907,4577,3147,1561,-202,-2091,-4016,-5840, -7437,-8754,-9827,-10675,-11212,-11190,-10416,-8894,-6884,-4734, -2711,-949,524,1771,2954,4268,5789,7405,8862,9877, 10308,10143,9503,8579,7518,6364,5104,3710,2154,422, -1467,-3415,-5259,-6881,-8266,-9475,-10507,-11202,-11288,-10595, -9186,-7297,-5210,-3186,-1406,55,1279,2480,3854,5447, 7133,8648,9742,10258,10181,9626,8785,7783,6675,5455, 4103,2577,845,-1068,-3026,-4831,-6405,-7822,-9167,-10373, -11207,-11405,-10829,-9542,-7742,-5696,-3678,-1893,-428,809, 2035,3430,5030,6733,8307,9493,10107,10128,9692,8971, 8075,7048,5905,4627,3150,1422,-507,-2446,-4228,-5823, -7345,-8842,-10198,-11154,-11494,-11100,-9986,-8296,-6283,-4263, -2488,-1018,254,1522,2963,4628,6409,8055,9308,10013, 10160,9860,9228,8375,7384,6312,5108,3664,1915,-17, -1917,-3648,-5255,-6868,-8487,-9956,-11025,-11500,-11260,-10271, -8663,-6722,-4765,-3023,-1552,-269,1019,2483,4183,5994, 7672,8967,9759,10048,9886,9357,8592,7723,6775,5638, 4186,2438,557,-1262,-2959,-4619,-6328,-8044,-9602,-10818, -11477,-11415,-10564,-9059,-7180,-5255,-3519,-2055,-775,509, 1993,3734,5576,7265,8609,9519,9949,9896,9453,8797, 8073,7231,6112,4630,2871,1050,-705,-2393,-4092,-5850, -7632,-9313,-10679,-11486,-11548,-10809,-9413,-7625,-5756,-4052, -2617,-1358,-60,1474,3269,5153,6916,8379,9410,9909, 9898,9534,9022,8441,7675,6557,5074,3376,1640,-62, -1754,-3484,-5295,-7162,-8961,-10455,-11392,-11592,-10995,-9722, -8022,-6214,-4569,-3193,-1967,-657,896,2681,4568,6387, 7965,9104,9682,9754,9524,9184,8736,8033,6946,5517, 3888,2197,527,-1128,-2838,-4674,-6615,-8510,-10120,-11190, -11537,-11093,-9946,-8343,-6626,-5075,-3750,-2503,-1151,414, 2186,4091,5984,7648,8856,9484,9631,9522,9290,8895, 8214,7174,5812,4258,2641,1040,-553,-2235,-4096,-6115, -8117,-9846,-11058,-11564,-11256,-10203,-8698,-7105,-5655,-4349, -3065,-1681,-129,1627,3569,5544,7279,8537,9236,9524, 9583,9488,9181,8564,7582,6276,4766,3205,1664,106, -1597,-3518,-5592,-7652,-9489,-10858,-11506,-11301,-10346,-8960, -7480,-6102,-4818,-3554,-2222,-734,1014,3012,5052,6823, 8102,8876,9291,9497,9530,9320,8780,7864,6616,5180, 3705,2250,745,-930,-2831,-4914,-7062,-9061,-10603,-11387, -11301,-10481,-9254,-7903,-6550,-5243,-3981,-2704,-1242,537, 2584,4652,6438,7760,8625,9159,9477,9597,9455,8957, 8067,6871,5520,4136,2736,1251,-392,-2254,-4348,-6578, -8707,-10375,-11256,-11281,-10631,-9569,-8299,-6969,-5696,-4513, -3293,-1828,-7,2084,4173,5979,7369,8337,8984,9406, 9641,9592,9144,8294,7156,5892,4585,3245,1829,265, -1550,-3678,-6025,-8280,-10023,-11001,-11200,-10757,-9854,-8657, -7379,-6179,-5077,-3901,-2418,-554,1548,3634,5477,6938, 8004,8759,9315,9674,9729,9376,8616,7580,6390,5127, 3807,2438,937,-860,-3055,-5503,-7832,-9655,-10777,-11165, -10888,-10068,-8917,-7699,-6598,-5584,-4440,-2970,-1139,929, 3014,4891,6413,7572,8472,9172,9636,9750,9448,8786, 7859,6743,5505,4234,2958,1543,-226,-2433,-4891,-7232, -9138,-10422,-11011,-10897,-10180,-9140,-8049,-7048,-6057,-4901, -3430,-1614,454,2549,4440,6001,7246,8253,9046,9557, 9705,9483,8933,8098,7035,5871,4730,3572,2189,375, -1886,-4364,-6741,-8758,-10211,-10950,-10928,-10305,-9373,-8390, -7458,-6521,-5412,-3979,-2173,-121,1947,3815,5411,6777, 7950,8875,9464,9703,9602,9148,8349,7330,6278,5281, 4229,2873,1057,-1179,-3628,-6051,-8189,-9788,-10646,-10750, -10274,-9506,-8668,-7847,-6987,-5930,-4518,-2707,-653,1392, 3246,4889,6343,7589,8568,9244,9619,9634,9236,8470, 7525,6600,5718,4709,3360,1578,-595,-3042,-5545,-7804, -9502,-10437,-10623,-10250,-9589,-8857,-8142,-7382,-6386,-4980, -3172,-1157,831,2677,4369,5882,7176,8229,9033,9540, 9653,9307,8595,7748,6935,6128,5160,3864,2163,58, -2372,-4920,-7252,-9047,-10113,-10440,-10197,-9647,-9029,-8439, -7774,-6812,-5429,-3680,-1747,205,2101,3863,5446,6808, 7963,8896,9516,9680,9356,8708,7952,7201,6420,5497, 4289,2686,648,-1766,-4336,-6738,-8644,-9849,-10320,-10204, -9768,-9266,-8762,-8117,-7153,-5796,-4124,-2264,-332,1572, 3360,4960,6383,7654,8712,9400,9594,9342,8817,8199, 7550,6843,5984,4850,3320,1320,-1077,-3663,-6126,-8148, -9473,-10042,-10042,-9769,-9439,-9050,-8448,-7511,-6230,-4657, -2856,-925,1003,2794,4429,5966,7395,8559,9270,9472, 9272,8841,8308,7722,7073,6290,5237,3771,1834,-513, -3086,-5603,-7716,-9140,-9831,-9984,-9876,-9667,-9318,-8715, -7810,-6595,-5069,-3263,-1328,564,2320,3996,5644,7192, 8436,9196,9458,9333,8980,8500,7963,7394,6714,5760, 4378,2502,168,-2443,-5032,-7210,-8706,-9520,-9854,-9950, -9888,-9630,-9114,-8306,-7171,-5686,-3911,-2023,-178,1598, 3376,5167,6829,8140,8972,9342,9336,9073,8678,8245, 7780,7188,6317,5026,3215,890,-1766,-4395,-6597,-8155, -9099,-9609,-9844,-9869,-9703,-9324,-8655,-7595,-6130,-4391, -2577,-804,956,2769,4599,6304,7693,8637,9114,9182, 8980,8667,8326,7948,7454,6708,5547,3815,1496,-1189, -3820,-6024,-7636,-8702,-9352,-9700,-9826,-9774,-9515,-8923, -7885,-6447,-4788,-3080,-1363,410,2265,4138,5891,7361, 8402,8958,9104,8983,8739,8440,8099,7689,7089,6073, 4416,2094,-604,-3240,-5484,-7203,-8410,-9173,-9600,-9829, -9920,-9796,-9276,-8270,-6886,-5304,-3654,-1945,-152,1729, 3639,5459,7017,8148,8797,9042,9017,8825,8548,8273, 8001,7570,6654,5021,2726,88,-2510,-4791,-6618,-7947, -8811,-9349,-9722,-9960,-9938,-9486,-8571,-7311,-5852,-4285, -2620,-842,1049,3007,4907,6548,7760,8501,8860,8932, 8799,8580,8412,8281,7957,7109,5545,3349,807,-1780, -4143,-6082,-7493,-8436,-9103,-9626,-9981,-10012,-9608,-8782, -7627,-6262,-4755,-3136,-1375,543,2562,4508,6173,7433, 8270,8710,8798,8647,8466,8412,8420,8199,7411,5924, 3844,1392,-1176,-3567,-5538,-7011,-8078,-8899,-9550,-9973, -10062,-9730,-8996,-7937,-6667,-5253,-3698,-1948,12,2088, 4076,5796,7166,8134,8657,8770,8655,8572,8648,8745, 8549,7804,6403,4401,1960,-627,-3025,-4993,-6519,-7720, -8724,-9534,-10062,-10220,-9962,-9299,-8305,-7109,-5792,-4312, -2580,-611,1455,3447,5258,6778,7869,8439,8566,8518, 8567,8778,8966,8866,8254,6990,5060,2641,75,-2283, -4249,-5846,-7190,-8342,-9277,-9921,-10197,-10039,-9458,-8557, -7466,-6242,-4813,-3111,-1183,855,2877,4796,6454,7632, 8220,8361,8366,8480,8720,8948,8952,8486,7346,5498, 3136,637,-1674,-3655,-5329,-6762,-7995,-9028,-9788,-10154, -10058,-9546,-8765,-7816,-6679,-5277,-3609,-1738,249,2310, 4330,6063,7282,7929,8178,8299,8494,8806,9133,9270, 8922,7860,6060,3757,1314,-990,-3027,-4784,-6311,-7666, -8825,-9686,-10123,-10093,-9706,-9081,-8243,-7137,-5748,-4120, -2300,-291,1862,3967,5737,6953,7627,7934,8109,8325, 8688,9132,9412,9186,8215,6513,4317,1933,-368,-2417, -4190,-5770,-7227,-8504,-9450,-9944,-10007,-9770,-9299,-8565, -7524,-6228,-4721,-2970,-925,1320,3498,5311,6595,7361, 7744,7958,8216,8648,9199,9582,9442,8563,6976,4875, 2551,280,-1762,-3573,-5244,-6828,-8212,-9216,-9774,-9977, -9920,-9580,-8905,-7913,-6698,-5268,-3552,-1497,770,2966, 4823,6189,7051,7495,7732,8037,8568,9227,9704,9667, 8922,7454,5447,3184,956,-1079,-2951,-4750,-6448,-7896, -8952,-9617,-9963,-10015,-9738,-9136,-8275,-7203,-5871,-4163, -2078,211,2429,4346,5790,6713,7197,7493,7880,8492, 9213,9761,9826,9193,7827,5905,3740,1609,-392,-2327, -4233,-5997,-7480,-8612,-9401,-9864,-9979,-9749,-9246,-8549, -7635,-6400,-4750,-2711,-444,1824,3834,5365,6329,6857, 7228,7716,8416,9222,9881,10077,9555,8266,6416,4349, 2302,301,-1702,-3664,-5462,-7012,-8291,-9261,-9860,-10038, -9869,-9476,-8911,-8087,-6902,-5312,-3320,-1036,1314,3413, 4998,6000,6579,7001,7512,8222,9080,9843,10151,9713, 8524,6833,4936,2970,957,-1087,-3057,-4856,-6467,-7883, -9002,-9702,-9967,-9903,-9635,-9167,-8426,-7335,-5846,-3913, -1621,775,2914,4520,5562,6201,6677,7231,8013,8991, 9869,10251,9895,8853,7356,5595,3653,1584,-494,-2453, -4274,-5990,-7518,-8710,-9469,-9830,-9911,-9780,-9427,-8809, -7849,-6449,-4540,-2221,208,2380,4049,5178,5867,6353, 6932,7810,8905,9862,10294,10021,9138,7804,6128,4191, 2139,117,-1817,-3685,-5476,-7065,-8307,-9131,-9594,-9775, -9736,-9504,-9040,-8235,-6928,-5066,-2790,-404,1751,3464, 4646,5365,5899,6579,7593,8785,9781,10264,10137,9458, 8275,6648,4742,2744,763,-1204,-3159,-5019,-6659,-7961, -8896,-9481,-9757,-9811,-9702,-9374,-8664,-7397,-5568,-3332, -944,1293,3091,4299,5017,5584,6356,7437,8617,9573, 10094,10116,9608,8567,7063,5271,3363,1412,-590,-2601, -4505,-6183,-7567,-8603,-9267,-9626,-9804,-9851,-9673,-9071, -7891,-6138,-3950,-1545,757,2612,3837,4591,5254,6147, 7279,8439,9405,10029,10204,9848,8929,7556,5893,4066, 2120,85,-1957,-3903,-5669,-7154,-8257,-8978,-9422,-9728, -9918,-9865,-9389,-8359,-6729,-4581,-2139,189,2002,3190, 3997,4792,5781,6941,8120,9160,9912,10225,9986,9201, 7983,6456,4709,2789,764,-1307,-3327,-5179,-6726,-7871, -8650,-9207,-9653,-9966,-10027,-9692,-8820,-7282,-5110,-2617, -292,1490,2697,3590,4469,5489,6641,7835,8950,9804, 10198,10032,9363,8293,6881,5202,3338,1349,-724,-2804, -4727,-6315,-7498,-8352,-9007,-9529,-9901,-10084,-9938,-9235, -7766,-5591,-3100,-826,918,2156,3114,4032,5045,6213, 7495,8727,9677,10168,10140,9621,8662,7342,5755,3970, 2018,-73,-2188,-4143,-5766,-7031,-8017,-8792,-9397,-9870, -10207,-10233,-9639,-8216,-6079,-3673,-1463,299,1633,2685, 3634,4658,5861,7200,8481,9496,10098,10211,9816,8957, 7728,6238,4534,2612,514,-1594,-3532,-5189,-6566,-7667, -8504,-9157,-9750,-10277,-10475,-9974,-8593,-6519,-4203,-2046, -255,1133,2220,3197,4261,5504,6863,8170,9249,9952, 10186,9908,9168,8083,6720,5072,3156,1086,-961,-2866, -4563,-6002,-7128,-7990,-8724,-9471,-10155,-10455,-10038,-8798, -6925,-4788,-2727,-955,438,1535,2533,3634,4926,6341, 7728,8916,9747,10105,9977,9442,8570,7346,5744,3837, 1776,-296,-2277,-4075,-5570,-6698,-7582,-8435,-9360,-10173, -10535,-10167,-9027,-7272,-5201,-3144,-1356,79,1239,2297, 3409,4640,5977,7321,8501,9338,9740,9730,9361,8637, 7515,6007,4201,2221,166,-1851,-3659,-5095,-6164,-7085, -8080,-9161,-10090,-10546,-10311,-9322,-7697,-5702,-3671,-1884, -437,756,1864,2994,4236,5601,6998,8225,9119,9617, 9756,9550,8954,7931,6520,4816,2885,795,-1293,-3130, -4559,-5665,-6697,-7839,-9050,-10092,-10672,-10566,-9695,-8150, -6210,-4227,-2463,-980,277,1414,2561,3833,5249,6681, 7929,8859,9459,9739,9662,9162,8252,6992,5412,3498, 1353,-774,-2593,-3997,-5127,-6222,-7441,-8718,-9843,-10546, -10581,-9840,-8420,-6596,-4684,-2923,-1426,-180,930,2084, 3414,4901,6366,7630,8606,9297,9667,9646,9231,8476, 7400,5933,4040,1884,-226,-2014,-3428,-4618,-5792,-7075, -8439,-9701,-10549,-10700,-10060,-8757,-7039,-5179,-3422,-1926, -696,417,1623,3019,4519,5970,7266,8346,9152,9591, 9631,9335,8766,7850,6444,4552,2394,313,-1449,-2879, -4113,-5346,-6710,-8184,-9558,-10502,-10747,-10230,-9054,-7428, -5609,-3866,-2384,-1156,-1,1277,2710,4193,5643,6992, 8154,9006,9475,9602,9476,9077,8254,6860,4964,2832, 792,-956,-2392,-3639,-4901,-6330,-7905,-9381,-10423,-10792, -10403,-9344,-7783,-6004,-4310,-2884,-1669,-465,860,2288, 3759,5226,6640,7866,8769,9322,9606,9676,9428,8676, 7328,5482,3396,1378,-357,-1782,-3051,-4392,-5944,-7633, -9214,-10375,-10885,-10636,-9657,-8140,-6410,-4783,-3369,-2093, -835,463,1821,3254,4765,6254,7535,8475,9110,9553, 9795,9683,9019,7736,5939,3888,1900,207,-1184,-2446, -3825,-5436,-7193,-8865,-10176,-10864,-10751,-9867,-8468,-6893, -5380,-3992,-2683,-1408,-124,1240,2761,4390,5945,7227, 8203,8968,9571,9940,9912,9330,8120,6381,4373,2422, 760,-616,-1907,-3333,-4976,-6771,-8538,-9992,-10804,-10777, -9967,-8666,-7200,-5749,-4368,-3068,-1844,-618,758,2333, 3985,5499,6752,7770,8636,9365,9870,9988,9564,8496, 6854,4913,3021,1398,3,-1332,-2775,-4411,-6246,-8128, -9732,-10681,-10783,-10126,-8996,-7647,-6234,-4851,-3568,-2378, -1130,325,1981,3655,5144,6385,7433,8358,9176,9806, 10073,9770,8768,7168,5304,3492,1904,499,-839,-2260, -3896,-5786,-7759,-9449,-10466,-10678,-10206,-9247,-7988,-6598, -5242,-4020,-2880,-1630,-157,1498,3155,4652,5938,7056, 8074,9024,9830,10264,10055,9109,7592,5822,4069,2479, 1067,-248,-1654,-3340,-5340,-7416,-9167,-10279,-10665,-10382, -9547,-8332,-6965,-5660,-4491,-3347,-2061,-562,1081,2722, 4224,5525,6653,7722,8788,9729,10252,10113,9260,7881, 6232,4550,2995,1633,381,-1007,-2757,-4848,-6976,-8779, -10019,-10585,-10471,-9744,-8599,-7320,-6116,-5005,-3857,-2551, -1053,590,2255,3778,5089,6260,7448,8668,9721,10311, 10230,9486,8228,6663,5016,3495,2197,985,-440,-2254, -4377,-6526,-8403,-9783,-10512,-10518,-9870,-8811,-7629,-6510, -5453,-4347,-3082,-1607,31,1677,3169,4470,5702,7000, 8348,9513,10213,10282,9706,8566,7055,5459,4049,2857, 1672,209,-1647,-3778,-5943,-7899,-9423,-10303,-10435,-9915, -9003,-7957,-6922,-5907,-4819,-3534,-2006,-323,1312,2752, 4022,5291,6674,8082,9296,10086,10291,9829,8742,7273, 5776,4485,3372,2198,730,-1097,-3200,-5407,-7486,-9144, -10130,-10355,-9945,-9147,-8206,-7254,-6301,-5243,-3943,-2378, -697,886,2266,3530,4856,6302,7767,9089,10047,10413, 10029,8963,7526,6102,4888,3803,2626,1195,-563,-2630, -4891,-7072,-8841,-9936,-10275,-9981,-9289,-8429,-7559,-6677, -5651,-4326,-2734,-1074,447,1801,3090,4440,5897,7405, 8832,9937,10426,10131,9153,7846,6553,5397,4309,3147, 1768,58,-2031,-4357,-6632,-8504,-9727,-10213,-10054,-9462, -8702,-7932,-7126,-6109,-4761,-3183,-1581,-96,1270,2593, 3963,5441,7036,8615,9867,10440,10199,9323,8141,6937, 5823,4775,3673,2348,650,-1458,-3822,-6138,-8080,-9408, -10017,-9971,-9502,-8899,-8281,-7531,-6490,-5133,-3591,-2038, -561,826,2156,3511,5013,6714,8416,9742,10362,10200, 9441,8373,7233,6160,5167,4138,2872,1193,-922,-3313, -5700,-7761,-9198,-9872,-9898,-9565,-9126,-8618,-7900,-6859, -5522,-4028,-2490,-1003,369,1646,2974,4548,6371,8176, 9573,10267,10228,9612,8660,7595,6582,5660,4690,3453, 1796,-302,-2707,-5151,-7292,-8812,-9597,-9783,-9642,-9361, -8941,-8266,-7269,-5998,-4534,-2984,-1494,-164,1068,2416, 4071,5980,7839,9288,10082,10178,9690,8835,7868,6969, 6151,5252,4073,2463,387,-2061,-4589,-6801,-8382,-9256, -9609,-9665,-9531,-9181,-8549,-7608,-6371,-4913,-3375,-1947, -699,486,1859,3581,5558,7489,9030,9944,10146,9733, 8950,8067,7244,6477,5636,4548,3035,998,-1471,-4046, -6279,-7888,-8867,-9388,-9615,-9603,-9349,-8822,-7969,-6754, -5282,-3759,-2402,-1245,-98,1295,3046,5055,7053,8711, 9768,10102,9805,9123,8313,7535,6822,6084,5127,3704, 1671,-838,-3434,-5694,-7391,-8534,-9225,-9582,-9674,-9537, -9119,-8325,-7120,-5647,-4175,-2893,-1779,-628,777,2530, 4552,6598,8340,9492,9936,9772,9215,8489,7762,7108, 6472,5621,4257,2245,-225,-2776,-5047,-6849,-8142,-8974, -9434,-9637,-9622,-9313,-8579,-7418,-6027,-4666,-3457,-2349, -1181,229,1992,4052,6160,7971,9217,9791,9771,9332, 8678,8015,7451,6928,6146,4806,2822,405,-2100,-4393, -6291,-7716,-8668,-9271,-9646,-9781,-9542,-8811,-7669,-6343, -5051,-3887,-2813,-1672,-276,1483,3542,5642,7452,8754, 9472,9622,9310,8742,8187,7773,7365,6641,5335,3411, 1062,-1416,-3751,-5717,-7200,-8246,-9006,-9571,-9854,-9695, -9022,-7936,-6665,-5417,-4291,-3247,-2137,-754,1018,3088, 5193,7049,8457,9296,9516,9245,8752,8323,8029,7687, 6996,5747,3932,1670,-792,-3156,-5142,-6651,-7788,-8703, -9420,-9816,-9736,-9155,-8175,-6989,-5802,-4742,-3779,-2727, -1355,415,2476,4612,6576,8143,9110,9414,9208,8817, 8503,8299,8005,7375,6225,4484,2235,-263,-2646,-4655, -6236,-7500,-8557,-9390,-9862,-9843,-9316,-8363,-7184,-6024, -5035,-4144,-3114,-1749,-11,2012,4163,6222,7902,8929, 9253,9102,8811,8601,8461,8233,7707,6672,5015,2806, 341,-2018,-4043,-5717,-7138,-8359,-9321,-9907,-9997,-9552, -8650,-7535,-6469,-5559,-4691,-3654,-2300,-587,1446,3681, 5865,7633,8710,9097,9045,8861,8720,8645,8527,8143, 7227,5629,3453,1020,-1312,-3369,-5150,-6710,-8063,-9161, -9879,-10054,-9643,-8791,-7772,-6819,-5993,-5167,-4182,-2912, -1275,759,3073,5347,7175,8320,8824,8916,8846,8795, 8821,8819,8538,7687,6146,4053,1716,-580,-2673,-4526, -6165,-7634,-8877,-9743,-10028,-9708,-8958,-8057,-7200,-6403, -5593,-4658,-3469,-1857,222,2591,4879,6732,7962,8586, 8783,8777,8787,8906,9013,8815,8029,6576,4600,2360, 107,-1985,-3874,-5616,-7239,-8650,-9627,-9976,-9720,-9078, -8283,-7462,-6656,-5878,-5041,-3940,-2367,-294,2050,4323, 6205,7518,8263,8564,8661,8797,9036,9211,9042,8311, 6970,5115,2965,764,-1304,-3226,-5066,-6836,-8374,-9436, -9859,-9710,-9186,-8463,-7669,-6918,-6246,-5528,-4489,-2919, -841,1505,3800,5754,7158,7960,8306,8495,8762,9123, 9380,9280,8632,7384,5628,3574,1462,-567,-2537,-4523, -6460,-8115,-9247,-9766,-9749,-9319,-8637,-7883,-7215,-6655, -6019,-5026,-3482,-1436,904,3245,5283,6755,7614,8042, 8344,8733,9194,9541,9536,8985,7821,6134,4159,2142, 154,-1874,-3968,-5989,-7706,-8925,-9586,-9702,-9365,-8746, -8065,-7494,-7021,-6442,-5490,-4010,-2006,346,2743,4826, 6328,7224,7725,8111,8572,9101,9535,9643,9199,8116, 6523,4694,2799,832,-1252,-3421,-5502,-7294,-8634,-9421, -9630,-9338,-8769,-8183,-7721,-7326,-6798,-5921,-4525,-2570, -215,2202,4302,5840,6814,7422,7906,8432,9047,9592, 9796,9422,8421,6985,5320,3513,1535,-615,-2830,-4951, -6827,-8310,-9241,-9549,-9330,-8853,-8362,-7963,-7615,-7157, -6367,-5044,-3125,-778,1634,3739,5328,6401,7107,7667, 8284,9000,9636,9886,9545,8646,7375,5879,4167,2203, 36,-2195,-4375,-6361,-7970,-9001,-9393,-9277,-8902,-8486, -8134,-7834,-7455,-6766,-5520,-3641,-1320,1077,3203,4856, 6004,6779,7423,8151,8973,9660,9921,9631,8864,7769, 6408,4763,2841,705,-1555,-3838,-5961,-7680,-8788,-9242, -9196,-8888,-8536,-8260,-8066,-7798,-7177,-5970,-4145,-1884, 495,2662,4372,5558,6378,7107,7951,8858,9581,9866, 9660,9049,8113,6870,5321,3501,1426,-861,-3235,-5462, -7276,-8488,-9074,-9148,-8914,-8607,-8410,-8325,-8151,-7595, -6451,-4690,-2461,-67,2126,3853,5054,5937,6810,7803, 8792,9536,9879,9795,9316,8480,7318,5876,4167,2148, -160,-2610,-4932,-6840,-8159,-8847,-8986,-8802,-8581,-8504, -8528,-8436,-7956,-6894,-5208,-3005,-594,1615,3320,4528, 5501,6505,7590,8619,9405,9834,9858,9477,8730,7682, 6374,4772,2791,461,-2024,-4400,-6405,-7853,-8647,-8863, -8741,-8589,-8585,-8693,-8690,-8310,-7345,-5706,-3496,-1063, 1130,2819,4073,5146,6243,7384,8456,9320,9865,9994, 9692,9030,8099,6908,5381,3444,1135,-1377,-3843,-5981, -7550,-8436,-8722,-8674,-8606,-8680,-8844,-8921,-8649,-7786, -6186,-3991,-1605,535,2224,3548,4721,5887,7068,8190, 9129,9759,9969,9771,9258,8483,7416,5979,4122,1871, -639,-3170,-5415,-7091,-8081,-8485,-8569,-8593,-8721,-8971, -9183,-9049,-8256,-6680,-4533,-2220,-126,1596,3025,4311, 5558,6798,7992,9016,9710,10001,9924,9555,8910,7942, 6585,4794,2560,3,-2630,-4974,-6719,-7791,-8304,-8474, -8548,-8722,-9057,-9378,-9330,-8583,-7057,-4993,-2785,-737, 1015,2507,3836,5133,6452,7718,8770,9486,9840,9885, 9669,9181,8360,7144,5463,3274,689,-1992,-4385,-6221, -7420,-8053,-8299,-8416,-8686,-9169,-9632,-9661,-8941,-7470, -5510,-3390,-1365,414,1943,3342,4741,6157,7486,8585, 9349,9783,9918,9788,9398,8718,7659,6079,3921,1329, -1365,-3805,-5735,-7040,-7745,-8019,-8183,-8547,-9163,-9728, -9816,-9174,-7823,-5978,-3927,-1941,-190,1330,2760,4229, 5727,7126,8278,9130,9676,9915,9877,9609,9088,8162, 6665,4555,2001,-701,-3213,-5262,-6664,-7410,-7729,-8003, -8530,-9267,-9893,-10030,-9464,-8202,-6431,-4430,-2470,-718, 840,2332,3857,5380,6792,8004,8939,9549,9844,9897, 9773,9399,8587,7177,5158,2690,16,-2561,-4717,-6200, -6994,-7395,-7797,-8440,-9250,-9940,-10175,-9721,-8554,-6852, -4919,-3041,-1341,237,1795,3370,4922,6394,7687,8698, 9363,9736,9924,9951,9688,8953,7621,5716,3329,637, -2027,-4258,-5776,-6622,-7114,-7625,-8348,-9210,-9955,-10267, -9902,-8823,-7211,-5373,-3570,-1866,-239,1346,2915,4481, 5999,7356,8409,9124,9591,9926,10096,9954,9335,8155, 6377,4028,1293,-1435,-3700,-5249,-6164,-6767,-7385,-8179, -9113,-9964,-10404,-10149,-9167,-7668,-5954,-4251,-2630,-1063, 507,2122,3784,5393,6803,7901,8710,9344,9858,10158, 10110,9610,8575,6929,4666,1993,-672,-2900,-4475,-5470, -6149,-6807,-7640,-8652,-9609,-10166,-10066,-9295,-8024,-6478, -4832,-3190,-1590,-1,1649,3363,5016,6432,7538,8375, 9025,9533,9872,9959,9670,8836,7311,5103,2471,-152, -2366,-3992,-5085,-5871,-6630,-7548,-8591,-9522,-10034,-9935, -9235,-8072,-6606,-4997,-3377,-1790,-185,1486,3173,4724, 6038,7106,7994,8740,9340,9797,10048,9959,9283,7838, 5676,3086,487,-1758,-3437,-4580,-5425,-6278,-7303,-8442, -9443,-10036,-10059,-9505,-8460,-7080,-5559,-4022,-2471,-828, 921,2667,4271,5652,6814,7778,8568,9219,9781,10196, 10268,9712,8359,6269,3717,1108,-1177,-2912,-4117,-5038, -5974,-7088,-8280,-9324,-9995,-10138,-9695,-8722,-7427,-6016, -4566,-3039,-1366,403,2153,3768,5202,6438,7449,8261, 8971,9656,10230,10450,10037,8833,6867,4387,1788,-515, -2285,-3563,-4593,-5653,-6837,-8073,-9193,-9978,-10236,-9891, -9037,-7867,-6555,-5145,-3597,-1907,-147,1590,3245,4767, 6070,7108,7958,8761,9580,10304,10673,10395,9297,7401, 4960,2403,144,-1614,-2955,-4100,-5247,-6479,-7771,-8975, -9859,-10220,-9989,-9270,-8247,-7045,-5671,-4115,-2437,-718, 1004,2689,4241,5559,6628,7546,8449,9387,10242,10767, 10667,9723,7924,5546,3047,830,-953,-2366,-3580,-4769, -6051,-7430,-8734,-9711,-10147,-10027,-9475,-8618,-7516,-6186, -4671,-3033,-1308,459,2190,3765,5096,6197,7190,8197, 9240,10219,10886,10914,10057,8331,6047,3643,1460,-356, -1828,-3088,-4313,-5654,-7108,-8483,-9505,-10011,-10030,-9638, -8896,-7845,-6550,-5077,-3466,-1747,22,1750,3308,4635, 5757,6782,7832,8968,10100,10936,11093,10324,8695,6518, 4202,2055,232,-1263,-2560,-3861,-5311,-6845,-8242,-9283, -9886,-10062,-9819,-9186,-8219,-7000,-5592,-3999,-2252,-436, 1306,2870,4213,5352,6393,7503,8766,10049,11011,11264, 10601,9102,7058,4821,2691,864,-639,-1979,-3383,-4930, -6520,-7943,-9038,-9739,-10036,-9916,-9395,-8546,-7447,-6112, -4529,-2760,-936,816,2410,3762,4885,5926,7086,8463, 9888,10975,11350,10833,9491,7551,5348,3235,1429,-81, -1494,-2990,-4600,-6216,-7664,-8824,-9624,-10021,-9991,-9573, -8847,-7850,-6573,-5025,-3279,-1443,351,1979,3340,4457, 5512,6750,8252,9793,10985,11486,11122,9909,8047,5891, 3827,2049,516,-956,-2509,-4140,-5761,-7268,-8548,-9472, -9974,-10066,-9797,-9191,-8269,-7045,-5545,-3823,-1972,-143, 1490,2822,3918,5019,6345,7910,9504,10808,11480,11301, 10229,8468,6406,4428,2701,1160,-368,-1972,-3628,-5283, -6852,-8203,-9214,-9826,-10054,-9925,-9448,-8625,-7480,-6044, -4342,-2454,-591,1023,2311,3416,4584,5983,7606,9276, 10690,11502,11435,10455,8812,6898,5038,3333,1736,163, -1441,-3123,-4843,-6486,-7907,-8990,-9702,-10046,-10023,-9635, -8907,-7866,-6497,-4790,-2875,-1012,554,1807,2907,4093, 5519,7193,8960,10512,11462,11506,10638,9136,7375,5604, 3920,2318,729,-917,-2659,-4440,-6134,-7604,-8752,-9565, -10017,-10093,-9812,-9217,-8287,-6949,-5218,-3287,-1446,91, 1338,2464,3676,5120,6840,8708,10388,11437,11578,10837, 9485,7831,6118,4457,2851,1247,-432,-2209,-4018,-5729, -7232,-8470,-9378,-9911,-10083,-9951,-9516,-8693,-7401,-5686, -3780,-1972,-444,806,1926,3122,4598,6429,8437,10216, 11347,11602,11019,9824,8305,6681,5068,3487,1869,148, -1668,-3501,-5260,-6865,-8209,-9195,-9808,-10110,-10141,-9848, -9093,-7811,-6113,-4245,-2460,-914,347,1438,2616,4126, 6040,8135,9998,11225,11612,11187,10132,8702,7152,5611, 4068,2446,720,-1081,-2928,-4751,-6441,-7847,-8890,-9598, -10050,-10274,-10125,-9447,-8218,-6583,-4758,-2961,-1399,-167, 870,2017,3559,5527,7690,9633,10992,11556,11299,10378, 9071,7632,6153,4621,3006,1308,-479,-2350,-4233,-5986, -7439,-8539,-9355,-9972,-10334,-10283,-9699,-8578,-7012,-5192, -3386,-1846,-663,326,1468,3048,5061,7256,9263,10732, 11430,11304,10535,9384,8051,6626,5131,3565,1918,144, -1765,-3713,-5500,-6977,-8157,-9113,-9867,-10339,-10405,-9951, -8936,-7424,-5621,-3832,-2344,-1223,-260,892,2481,4516, 6769,8877,10451,11257,11278,10690,9708,8487,7118,5657, 4141,2527,731,-1228,-3193,-4963,-6468,-7735,-8814,-9695, -10300,-10504,-10182,-9255,-7773,-5979,-4238,-2820,-1737,-773, 377,1958,3996,6276,8425,10073,10996,11184,10775,9940, 8805,7499,6122,4677,3070,1246,-717,-2654,-4420,-5967, -7325,-8509,-9494,-10216,-10573,-10397,-9546,-8089,-6328,-4647, -3273,-2214,-1272,-140,1428,3487,5812,8006,9707,10738, 11098,10871,10162,9116,7907,6617,5212,3593,1746,-213, -2135,-3904,-5506,-6940,-8200,-9281,-10146,-10645,-10556,-9753, -8352,-6660,-5033,-3699,-2671,-1766,-672,880,2954,5303, 7529,9310,10495,11030,10930,10315,9381,8305,7122,5755, 4130,2282,355,-1536,-3334,-4992,-6478,-7810,-9027,-10064, -10719,-10746,-10021,-8668,-7015,-5430,-4137,-3149,-2281,-1196, 372,2438,4759,7004,8902,10253,10938,10957,10454,9652, 8699,7589,6239,4627,2823,915,-1007,-2849,-4512,-6009, -7403,-8737,-9910,-10692,-10820,-10193,-8943,-7367,-5827,-4581, -3662,-2825,-1724,-151,1887,4196,6495,8506,9985,10788, 10922,10570,9933,9104,8042,6735,5187,3430,1518,-434, -2282,-3959,-5497,-6996,-8487,-9817,-10713,-10941,-10416,-9232, -7692,-6209,-5051,-4185,-3342,-2219,-653,1338,3615,5952, 8053,9626,10521,10798,10637,10161,9427,8443,7215,5735, 4009,2103,164,-1655,-3305,-4874,-6478,-8092,-9535,-10566, -10947,-10538,-9443,-7992,-6602,-5517,-4684,-3848,-2745,-1240, 685,2959,5360,7534,9180,10182,10628,10640,10311,9695, 8814,7678,6255,4541,2633,713,-1064,-2713,-4339,-6019, -7726,-9297,-10462,-10939,-10600,-9577,-8226,-6940,-5917,-5090, -4245,-3183,-1763,110,2377,4785,6989,8719,9879,10500, 10655,10432,9906,9131,8095,6726,5035,3169,1310,-440, -2110,-3781,-5525,-7337,-9041,-10337,-10914,-10652,-9713,-8476, -7288,-6301,-5476,-4672,-3679,-2293,-425,1831,4227,6458, 8277,9577,10341,10613,10501,10106,9456,8485,7150,5504, 3703,1885,159,-1494,-3172,-4976,-6904,-8763,-10187,-10841, -10647,-9822,-8722,-7621,-6667,-5891,-5156,-4226,-2874,-1015, 1239,3638,5908,7838,9272,10150,10539,10569,10327,9780, 8865,7574,5973,4205,2427,733,-885,-2557,-4422,-6488, -8486,-9995,-10717,-10630,-9937,-8922,-7859,-6940,-6223,-5566, -4702,-3377,-1547,650,3021,5332,7338,8840,9797,10315, 10514,10423,9999,9175,7956,6426,4719,2983,1343,-219, -1886,-3842,-6026,-8128,-9736,-10587,-10639,-10063,-9130,-8114, -7253,-6605,-6009,-5162,-3856,-2072,94,2476,4829,6892, 8474,9550,10203,10541,10573,10230,9479,8331,6843,5148, 3457,1905,407,-1279,-3311,-5576,-7740,-9423,-10378,-10564, -10093,-9227,-8282,-7498,-6902,-6324,-5535,-4344,-2667,-550, 1822,4199,6299,7953,9149,9976,10479,10643,10428,9793, 8708,7239,5597,4010,2546,1066,-666,-2767,-5096,-7323, -9115,-10219,-10534,-10146,-9358,-8503,-7785,-7205,-6625,-5851, -4701,-3079,-1008,1338,3692,5797,7530,8857,9796,10377, 10634,10542,10002,8956,7520,5951,4476,3106,1657,-104, -2231,-4586,-6887,-8805,-10025,-10429,-10148,-9482,-8736,-8089, -7558,-7022,-6312,-5238,-3659,-1593,744,3090,5251,7099, 8568,9654,10406,10835,10865,10373,9333,7919,6431,5052, 3726,2250,469,-1671,-4079,-6492,-8521,-9832,-10327,-10153, -9602,-8950,-8342,-7831,-7352,-6718,-5693,-4151,-2156,104, 2430,4622,6527,8066,9268,10185,10803,10983,10574,9594, 8283,6922,5640,4375,2950,1207,-939,-3407,-5914,-8047, -9472,-10093,-10076,-9685,-9131,-8593,-8166,-7784,-7210,-6213, -4717,-2771,-534,1799,4027,5982,7593,8916,10010,10796, 11070,10708,9807,8614,7349,6129,4918,3562,1860,-291, -2815,-5395,-7600,-9122,-9888,-10013,-9699,-9197,-8740,-8407, -8093,-7570,-6643,-5222,-3350,-1162,1155,3380,5330,7003, 8485,9777,10705,11076,10818,10036,8958,7785,6649,5510, 4211,2529,346,-2212,-4808,-7064,-8725,-9667,-9912,-9670, -9234,-8847,-8581,-8325,-7871,-7036,-5734,-3943,-1762,553, 2734,4662,6412,8049,9484,10526,10987,10826,10155,9176, 8085,7032,6000,4785,3135,972,-1552,-4151,-6497,-8287, -9346,-9703,-9570,-9245,-8959,-8756,-8537,-8157,-7454,-6267, -4523,-2373,-111,2038,4021,5897,7672,9229,10362,10924, 10887,10327,9422,8420,7482,6545,5369,3737,1588,-944, -3591,-6010,-7902,-9078,-9552,-9537,-9316,-9070,-8867,-8695, -8432,-7849,-6719,-5012,-2926,-738,1378,3404,5379,7262, 8901,10127,10801,10847,10348,9543,8690,7895,7057,5946, 4370,2269,-235,-2911,-5428,-7432,-8712,-9311,-9444,-9326, -9132,-9000,-8938,-8771,-8241,-7155,-5530,-3559,-1472,615, 2707,4774,6750,8527,9915,10717,10849,10430,9731,8996, 8309,7549,6506,5002,2963,450,-2275,-4838,-6903,-8305, -9061,-9305,-9248,-9111,-9060,-9093,-9017,-8540,-7491,-5939, -4093,-2111,-62,2009,4092,6152,8061,9576,10468,10675, 10350,9770,9173,8591,7922,7000,5617,3642,1143,-1583, -4159,-6288,-7809,-8691,-9033,-9040,-8993,-9081,-9259,-9263, -8827,-7866,-6438,-4688,-2753,-750,1303,3429,5603,7650, 9293,10278,10565,10344,9881,9359,8848,8289,7483,6175, 4248,1790,-913,-3517,-5733,-7383,-8387,-8806,-8876,-8925, -9120,-9351,-9375,-8994,-8118,-6783,-5121,-3280,-1371,619, 2742,4980,7128,8853,9926,10341,10258,9890,9447,9043, 8613,7922,6707,4842,2438,-229,-2869,-5193,-6964,-8042, -8526,-8711,-8884,-9154,-9425,-9493,-9168,-8370,-7132,-5567, -3824,-1987,-6,2189,4520,6723,8502,9677,10208,10217, 9924,9564,9254,8913,8286,7120,5338,3039,418,-2271, -4695,-6542,-7675,-8234,-8514,-8782,-9128,-9463,-9604,-9374, -8673,-7524,-6066,-4447,-2695,-719,1522,3899,6166,8040, 9326,9971,10077,9891,9665,9508,9286,8730,7652,5997, 3791,1168,-1577,-4056,-5971,-7219,-7930,-8349,-8703,-9089, -9471,-9686,-9534,-8906,-7854,-6531,-5031,-3330,-1353,898, 3308,5625,7587,8976,9707,9901,9825,9732,9676,9504, 9022,8066,6524,4375,1751,-1016,-3520,-5454,-6761,-7578, -8112,-8560,-9034,-9505,-9771,-9640,-9069,-8152,-6989,-5608, -3962,-1996,262,2691,5069,7121,8591,9394,9692,9767, 9804,9824,9725,9362,8557,7138,5047,2445,-313,-2820, -4810,-6224,-7138,-7750,-8304,-8925,-9518,-9855,-9772,-9276, -8469,-7440,-6177,-4625,-2738,-512,1964,4453,6598,8129, 9019,9452,9648,9774,9871,9879,9658,8997,7680,5643, 3087,366,-2162,-4232,-5727,-6714,-7413,-8073,-8780,-9421, -9780,-9744,-9355,-8690,-7774,-6590,-5132,-3339,-1153,1342, 3852,6019,7601,8596,9158,9464,9650,9811,9947,9911, 9400,8190,6254,3774,1072,-1486,-3592,-5113,-6150,-6954, -7757,-8586,-9292,-9700,-9767,-9517,-8976,-8173,-7117,-5769, -4023,-1835,669,3191,5381,7041,8169,8866,9261,9517, 9781,10055,10138,9737,8649,6826,4417,1721,-866,-3012, -4577,-5684,-6609,-7520,-8402,-9134,-9610,-9770,-9587,-9114, -8412,-7487,-6259,-4584,-2421,69,2555,4725,6419,7622, 8390,8858,9227,9620,10004,10185,9918,8994,7345,5076, 2467,-58,-2153,-3716,-4906,-5929,-6903,-7839,-8676,-9304, -9612,-9576,-9256,-8737,-8006,-6911,-5303,-3189,-764,1699, 3961,5809,7136,7990,8549,9019,9521,10008,10292,10131, 9315,7731,5480,2902,443,-1610,-3226,-4524,-5646,-6683, -7648,-8476,-9080,-9361,-9336,-9101,-8723,-8101,-7060,-5505, -3504,-1213,1169,3416,5287,6642,7536,8154,8699,9277, 9846,10263,10296,9652,8169,5991,3509,1128,-918,-2599, -3996,-5206,-6323,-7389,-8323,-8986,-9300,-9339,-9233,-8986, -8468,-7520,-6072,-4154,-1884,534,2837,4751,6151,7120, 7844,8480,9118,9781,10342,10511,9962,8567,6494,4104, 1766,-292,-2019,-3462,-4729,-5939,-7099,-8071,-8726,-9072, -9224,-9262,-9143,-8734,-7909,-6595,-4784,-2551,-115,2212, 4159,5641,6720,7513,8186,8892,9686,10409,10719,10283, 8990,7016,4719,2428,369,-1382,-2874,-4247,-5587,-6830, -7834,-8528,-8956,-9214,-9347,-9311,-8996,-8296,-7100,-5340, -3118,-705,1593,3575,5142,6286,7108,7812,8609,9549, 10416,10827,10479,9306,7480,5279,3021,967,-788,-2334, -3802,-5220,-6500,-7530,-8268,-8779,-9128,-9345,-9396,-9220, -8681,-7598,-5911,-3761,-1401,907,2972,4638,5845,6713, 7499,8435,9523,10492,10987,10770,9757,8042,5897,3676, 1653,-113,-1737,-3309,-4809,-6128,-7178,-7983,-8584,-9014, -9302,-9470,-9443,-9025,-8037,-6451,-4398,-2094,221,2329, 4033,5254,6145,7021,8084,9263,10311,10929,10869,10010, 8426,6400,4300,2362,600,-1086,-2737,-4277,-5621,-6752, -7660,-8343,-8842,-9237,-9550,-9648,-9329,-8438,-6961,-5015, -2763,-407,1769,3507,4753,5719,6692,7824,9063,10199, 10936,10981,10198,8700,6803,4842,2979,1193,-551,-2223, -3776,-5171,-6358,-7290,-7996,-8556,-9062,-9490,-9685,-9459, -8695,-7380,-5551,-3324,-961,1189,2896,4155,5177,6211, 7404,8731,9989,10857,11028,10362,9001,7259,5404,3550, 1724,-47,-1747,-3360,-4835,-6081,-7038,-7759,-8378,-8982, -9488,-9736,-9598,-8988,-7805,-6012,-3766,-1395,738,2446, 3741,4821,5903,7149,8561,9936,10907,11142,10568,9355, 7761,5977,4134,2294,503,-1243,-2927,-4465,-5741,-6724, -7513,-8249,-8941,-9499,-9829,-9840,-9381,-8298,-6555,-4345, -2019,87,1796,3132,4237,5349,6678,8234,9742,10806, 11161,10760,9732,8277,6575,4776,2974,1183,-607,-2366, -3950,-5242,-6277,-7179,-8029,-8807,-9457,-9935,-10118,-9812, -8826,-7131,-4951,-2639,-503,1269,2634,3744,4903,6330, 7984,9551,10676,11136,10882,10002,8658,7040,5317,3565, 1763,-88,-1868,-3438,-4751,-5858,-6838,-7723,-8511,-9216, -9809,-10138,-9959,-9080,-7516,-5471,-3228,-1108,627,1938, 3040,4261,5780,7509,9149,10390,11027,10982,10280,9064, 7577,5972,4252,2398,492,-1309,-2904,-4283,-5475,-6512, -7421,-8246,-9047,-9776,-10234,-10174,-9444,-8024,-6048,-3815, -1706,11,1332,2508,3827,5415,7158,8814,10141,10906, 10974,10371,9308,7988,6480,4776,2919,1034,-737,-2347, -3784,-5041,-6099,-7010,-7903,-8822,-9668,-10237,-10321,-9744, -8437,-6528,-4343,-2289,-627,682,1909,3299,4921,6696, 8446,9902,10775,10949,10503,9634,8475,7047,5355,3487, 1605,-188,-1865,-3387,-4673,-5735,-6700,-7673,-8660,-9574, -10253,-10482,-10033,-8806,-6942,-4817,-2850,-1232,116,1408, 2826,4460,6294,8132,9652,10590,10862,10583,9898,8879, 7519,5878,4082,2234,400,-1348,-2905,-4211,-5312,-6325, -7353,-8410,-9425,-10244,-10624,-10292,-9131,-7340,-5338,-3482, -1901,-542,754,2185,3886,5827,7771,9385,10416,10835, 10743,10223,9288,7989,6439,4718,2873,996,-785,-2368, -3713,-4874,-5950,-7026,-8139,-9272,-10271,-10794,-10525,-9417, -7728,-5825,-4010,-2432,-1085,180,1592,3321,5318,7300, 8941,10052,10628,10702,10292,9453,8275,6841,5202,3412, 1560,-213,-1798,-3172,-4368,-5448,-6517,-7702,-9001,-10153, -10785,-10631,-9679,-8145,-6344,-4573,-3017,-1693,-439,1024, 2850,4908,6917,8624,9898,10662,10881,10578,9822,8717, 7333,5702,3884,2011,231,-1396,-2837,-4058,-5125,-6220, -7487,-8877,-10098,-10789,-10714,-9858,-8418,-6677,-4940,-3435, -2185,-943,549,2373,4384,6370,8132,9517,10407,10758, 10611,10035,9100,7812,6219,4444,2604,793,-888,-2334, -3524,-4588,-5743,-7132,-8656,-10003,-10809,-10875,-10175,-8823, -7122,-5453,-4031,-2794,-1496,58,1905,3931,5950,7788, 9274,10271,10741,10732,10302,9455,8217,6688,4974,3133, 1265,-470,-1922,-3090,-4159,-5385,-6871,-8476,-9905,-10853, -11077,-10471,-9168,-7545,-5964,-4598,-3361,-2049,-482,1344, 3357,5425,7364,8958,10070,10709,10903,10641,9926,8815, 7393,5712,3834,1886,100,-1359,-2540,-3680,-4995,-6530, -8177,-9700,-10785,-11127,-10617,-9438,-7962,-6526,-5249,-4036, -2713,-1174,623,2659,4790,6789,8470,9746,10576,10931, 10797,10209,9231,7920,6280,4371,2384,606,-823,-2017, -3198,-4541,-6109,-7833,-9467,-10648,-11079,-10666,-9618,-8301, -6993,-5764,-4561,-3272,-1769,42,2118,4282,6315,8065, 9443,10381,10832,10801,10365,9565,8380,6781,4884,2962, 1257,-160,-1389,-2598,-3963,-5586,-7412,-9190,-10523,-11065, -10782,-9904,-8742,-7527,-6359,-5224,-3977,-2464,-623,1466, 3640,5730,7588,9110,10176,10741,10867,10632,10014,8924, 7375,5531,3637,1914,442,-830,-2056,-3434,-5121,-7065, -8946,-10332,-10943,-10788,-10058,-9003,-7869,-6781,-5711,-4505, -3028,-1230,814,2964,5092,7053,8658,9776,10433,10742, 10714,10244,9241,7767,6006,4181,2477,1012,-220,-1389, -2770,-4533,-6542,-8456,-9906,-10648,-10649,-10066,-9153,-8146, -7172,-6191,-5047,-3607,-1860,120,2277,4489,6528,8167, 9342,10138,10614,10732,10372,9459,8065,6370,4561,2852, 1421,269,-833,-2203,-3998,-6057,-8030,-9569,-10433,-10572, -10113,-9310,-8426,-7564,-6633,-5502,-4103,-2433,-476,1721, 3980,6052,7744,9030,9967,10590,10818,10541,9742,8464, 6822,5008,3306,1919,797,-320,-1731,-3557,-5641,-7657, -9278,-10244,-10473,-10102,-9399,-8606,-7777,-6858,-5784,-4490, -2909,-997,1174,3403,5449,7162,8550,9649,10420,10784, 10681,10055,8874,7256,5468,3825,2480,1354,174,-1308, -3184,-5313,-7412,-9124,-10164,-10474,-10246,-9719,-9052,-8283, -7408,-6388,-5147,-3583,-1634,592,2856,4941,6769,8324, 9578,10484,10996,11031,10481,9315,7693,5937,4344,3048, 1927,753,-696,-2533,-4701,-6881,-8667,-9791,-10240,-10190, -9822,-9254,-8568,-7789,-6893,-5743,-4193,-2236,-60,2129, 4199,6072,7699,9049,10115,10822,11045,10638,9570,8023, 6352,4838,3577,2470,1330,-91,-1951,-4168,-6390,-8225, -9447,-10051,-10162,-9907,-9413,-8807,-8152,-7371,-6268,-4741, -2831,-699,1489,3609,5549,7266,8737,9955,10847,11233, 10927,9936,8486,6901,5421,4162,3095,1990,554,-1363, -3633,-5901,-7800,-9142,-9923,-10195,-10036,-9609,-9095,-8536, -7810,-6745,-5282,-3447,-1365,809,2930,4883,6639,8223, 9631,10703,11201,10992,10119,8775,7231,5782,4589,3580, 2499,1059,-865,-3105,-5332,-7251,-8714,-9644,-10015,-9941, -9636,-9255,-8799,-8142,-7153,-5763,-4015,-2003,127,2219, 4170,5988,7724,9302,10520,11174,11135,10403,9148,7667, 6287,5171,4230,3162,1679,-248,-2454,-4689,-6734,-8361, -9412,-9875,-9916,-9732,-9469,-9099,-8502,-7574,-6267,-4587, -2606,-513,1528,3481,5382,7233,8922,10260,11042,11121, 10484,9295,7883,6601,5601,4716,3635,2174,323,-1814, -4051,-6148,-7841,-8971,-9542,-9710,-9662,-9492,-9196,-8702, -7915,-6719,-5095,-3176,-1159,834,2789,4752,6698,8510, 9988,10924,11149,10604,9474,8160,6996,6053,5147,4051, 2618,812,-1296,-3557,-5707,-7457,-8634,-9295,-9586,-9639, -9537,-9321,-8927,-8205,-7056,-5498,-3668,-1731,225,2197, 4192,6168,8028,9622,10700,11012,10513,9488,8325,7296, 6421,5549,4490,3117,1367,-734,-3028,-5205,-6982,-8248, -9036,-9441,-9593,-9617,-9531,-9224,-8551,-7417,-5891,-4112, -2214,-261,1725,3728,5752,7740,9470,10626,10982,10576, 9680,8645,7687,6823,5950,4933,3614,1880,-254,-2566, -4761,-6596,-7947,-8808,-9281,-9525,-9668,-9698,-9490,-8877, -7814,-6380,-4683,-2820,-892,1045,3033,5154,7312,9213, 10492,10940,10647,9890,8962,8039,7182,6356,5388,4089, 2347,222,-2083,-4317,-6225,-7657,-8585,-9112,-9423,-9653, -9766,-9617,-9086,-8149,-6826,-5198,-3387,-1531,348,2351, 4546,6819,8820,10180,10744,10612,10004,9164,8301,7529, 6793,5893,4648,2951,865,-1426,-3689,-5674,-7203,-8220, -8869,-9335,-9695,-9894,-9836,-9434,-8616,-7361,-5772,-4003, -2188,-314,1762,4097,6493,8553,9974,10649,10637,10118, 9345,8544,7823,7117,6252,5048,3414,1386,-893,-3188, -5212,-6778,-7890,-8680,-9259,-9674,-9916,-9911,-9573,-8804, -7595,-6069,-4425,-2762,-961,1135,3514,5934,8061,9617, 10459,10603,10216,9551,8849,8218,7584,6769,5623,4054, 2041,-267,-2576,-4605,-6220,-7454,-8382,-9089,-9628,-10004, -10146,-9922,-9211,-8055,-6646,-5174,-3604,-1791,356,2787, 5277,7537,9270,10294,10589,10313,9758,9160,8578,7959, 7194,6128,4605,2600,298,-2017,-4083,-5775,-7102,-8125, -8915,-9537,-10031,-10287,-10104,-9397,-8295,-7015,-5663,-4176, -2420,-315,2083,4591,6917,8763,9903,10316,10207,9827, 9340,8823,8295,7649,6686,5230,3275,1017,-1244,-3297, -5056,-6488,-7601,-8471,-9228,-9884,-10258,-10155,-9552,-8588, -7458,-6240,-4844,-3131,-1044,1365,3930,6353,8289,9515, 10047,10052,9742,9301,8865,8439,7889,6995,5595,3708, 1545,-655,-2719,-4524,-5979,-7118,-8090,-8985,-9745,-10168, -10104,-9574,-8752,-7792,-6686,-5357,-3710,-1679,722,3321, 5780,7792,9156,9847,9987,9783,9439,9103,8782,8309, 7444,6071,4249,2129,-99,-2227,-4062,-5539,-6744,-7829, -8847,-9685,-10144,-10127,-9709,-9033,-8168,-7144,-5910,-4334, -2310,119,2732,5230,7309,8773,9570,9785,9613,9321, 9082,8857,8437,7645,6401,4705,2657,456,-1656,-3479, -4957,-6217,-7421,-8546,-9415,-9887,-9939,-9639,-9075,-8348, -7474,-6358,-4854,-2873,-477,2119,4626,6771,8365,9288, 9591,9528,9378,9250,9078,8719,8032,6896,5268,3223, 976,-1153,-2964,-4498,-5905,-7249,-8436,-9331,-9846,-9950, -9710,-9230,-8593,-7802,-6761,-5313,-3361,-987,1600,4149, 6389,8048,8998,9361,9404,9348,9269,9123,8804,8191, 7145,5575,3551,1365,-669,-2434,-4006,-5474,-6866,-8112, -9082,-9662,-9836,-9672,-9283,-8771,-8124,-7186,-5795,-3911, -1612,972,3594,5915,7644,8693,9185,9358,9408,9398, 9318,9114,8631,7633,6030,4001,1857,-163,-1979,-3639, -5216,-6712,-8039,-9078,-9721,-9935,-9810,-9510,-9113,-8545, -7665,-6363,-4562,-2255,409,3129,5542,7360,8511,9138, 9442,9547,9547,9528,9427,9012,8038,6476,4521,2457, 501,-1292,-2984,-4612,-6172,-7607,-8765,-9492,-9785,-9778, -9623,-9347,-8887,-8152,-7010,-5339,-3093,-419,2348,4801, 6686,7987,8782,9187,9351,9482,9649,9721,9425,8531, 7018,5130,3136,1188,-672,-2452,-4190,-5883,-7418,-8616, -9371,-9735,-9815,-9703,-9454,-9053,-8435,-7436,-5865,-3655, -987,1762,4244,6245,7676,8525,8931,9145,9380,9673, 9849,9612,8779,7398,5654,3745,1825,-8,-1786,-3559, -5304,-6881,-8157,-9032,-9533,-9754,-9780,-9669,-9434,-8997, -8127,-6603,-4416,-1809,899,3439,5584,7166,8140,8648, 8983,9382,9835,10115,9963,9242,7963,6262,4388,2535, 733,-1092,-2962,-4801,-6460,-7796,-8751,-9349,-9651,-9729, -9694,-9597,-9293,-8514,-7089,-5047,-2563,97,2672,4900, 6557,7589,8202,8722,9298,9863,10215,10141,9510,8328, 6749,4995,3217,1443,-386,-2287,-4163,-5862,-7284,-8379, -9085,-9439,-9601,-9742,-9832,-9663,-8984,-7657,-5716,-3322, -675,1959,4249,5931,7020,7759,8399,9064,9717,10162, 10167,9601,8500,7027,5391,3724,1992,151,-1744,-3596, -5313,-6797,-7927,-8635,-9028,-9298,-9567,-9784,-9727,-9167, -7995,-6230,-3931,-1284,1350,3600,5282,6447,7303,8071, 8861,9608,10132,10225,9746,8738,7391,5875,4248,2491, 650,-1236,-3127,-4933,-6498,-7662,-8400,-8852,-9238,-9640, -9936,-9924,-9458,-8417,-6723,-4414,-1747,899,3186,4915, 6140,7069,7918,8787,9619,10215,10329,9869,8944,7726, 6294,4691,2960,1132,-773,-2724,-4615,-6230,-7399,-8165, -8716,-9234,-9708,-10044,-10131,-9810,-8894,-7264,-4986,-2326, 322,2616,4391,5699,6711,7647,8641,9597,10261,10440, 10109,9345,8234,6859,5295,3602,1793,-135,-2174,-4145, -5808,-7022,-7884,-8569,-9174,-9721,-10171,-10416,-10271,-9504, -7964,-5735,-3104,-459,1907,3792,5185,6294,7376,8513, 9547,10265,10532,10321,9670,8646,7331,5819,4190,2415, 432,-1671,-3663,-5317,-6581,-7532,-8287,-8937,-9536,-10072, -10459,-10470,-9841,-8432,-6324,-3782,-1152,1208,3092,4541, 5779,7001,8231,9320,10096,10459,10398,9893,8972,7757, 6377,4847,3083,1076,-1031,-3027,-4731,-6080,-7122,-7955, -8676,-9375,-10064,-10604,-10749,-10248,-8985,-6978,-4470,-1846, 498,2392,3909,5269,6611,7919,9069,9934,10431,10464, 10009,9175,8121,6890,5416,3635,1603,-517,-2513,-4243, -5652,-6758,-7621,-8385,-9169,-9958,-10606,-10880,-10536,-9393, -7451,-4973,-2401,-114,1763,3352,4820,6243,7586,8787, 9758,10364,10487,10134,9436,8529,7415,6001,4242,2210, 87,-1959,-3789,-5283,-6411,-7289,-8121,-8992,-9872,-10636, -11057,-10859,-9831,-7979,-5589,-3112,-878,1043,2735,4291, 5762,7186,8532,9641,10333,10524,10267,9713,8944,7920, 6543,4803,2799,687,-1363,-3190,-4685,-5858,-6817,-7724, -8680,-9685,-10615,-11208,-11144,-10191,-8404,-6108,-3727,-1518, 441,2178,3755,5261,6751,8177,9359,10119,10398,10299, 9930,9298,8351,7051,5384,3402,1245,-865,-2740,-4287, -5518,-6540,-7471,-8451,-9541,-10633,-11393,-11433,-10553,-8887, -6753,-4473,-2273,-271,1515,3166,4784,6417,7953,9193, 10006,10397,10438,10175,9625,8766,7546,5923,3953,1803, -306,-2194,-3766,-5031,-6051,-6971,-7997,-9231,-10501,-11397, -11542,-10809,-9328,-7350,-5135,-2928,-913,861,2524,4223, 5961,7552,8822,9708,10212,10369,10236,9835,9123,8015, 6468,4536,2391,270,-1663,-3319,-4632,-5647,-6575,-7686, -9039,-10391,-11341,-11576,-10996,-9694,-7848,-5694,-3517,-1530, 256,1991,3780,5567,7195,8520,9468,10047,10311,10303, 10027,9443,8451,6983,5111,3018,870,-1148,-2854,-4147, -5139,-6104,-7299,-8740,-10163,-11199,-11572,-11187,-10059,-8346, -6300,-4223,-2287,-451,1383,3263,5108,6785,8154,9162, 9818,10177,10302,10176,9711,8794,7409,5615,3521,1312, -767,-2472,-3744,-4747,-5774,-7049,-8532,-9971,-11085,-11613, -11370,-10337,-8696,-6743,-4737,-2809,-941,946,2871,4750, 6451,7848,8888,9591,10047,10299,10294,9927,9131,7895, 6209,4143,1912,-181,-1857,-3105,-4134,-5241,-6578,-8097, -9624,-10891,-11591,-11506,-10622,-9145,-7351,-5471,-3602,-1714, 213,2188,4159,5969,7454,8561,9379,9984,10365,10442, 10150,9450,8305,6677,4613,2365,301,-1348,-2625,-3744, -4919,-6267,-7806,-9396,-10743,-11529,-11527,-10742,-9389,-7726, -5941,-4107,-2249,-333,1659,3642,5452,6960,8169,9124, 9845,10299,10452,10286,9766,8765,7170,5084,2843,828, -796,-2092,-3243,-4447,-5839,-7453,-9148,-10608,-11487,-11596, -10978,-9804,-8280,-6563,-4760,-2889,-907,1159,3186,5031, 6591,7866,8898,9687,10199,10447,10434,10053,9124,7570, 5559,3412,1435,-220,-1573,-2760,-3967,-5380,-7067,-8857, -10406,-11370,-11605,-11123,-10066,-8653,-7066,-5392,-3588,-1624, 449,2495,4376,6027,7440,8600,9483,10119,10559,10748, 10497,9626,8122,6159,4052,2079,412,-936,-2104,-3328, -4819,-6603,-8472,-10123,-11253,-11680,-11374,-10475,-9199,-7728, -6112,-4296,-2275,-149,1921,3849,5595,7101,8300,9196, 9892,10445,10750,10597,9816,8414,6580,4578,2652,995, -339,-1510,-2775,-4313,-6117,-8023,-9756,-11009,-11552,-11370, -10617,-9521,-8229,-6718,-4937,-2955,-903,1119,3084,4912, 6487,7752,8760,9649,10424,10937,10935,10275,8983,7220, 5225,3283,1622,263,-952,-2269,-3839,-5672,-7600,-9352, -10639,-11267,-11248,-10733,-9894,-8762,-7309,-5558,-3616,-1581, 491,2527,4399,5984,7258,8337,9348,10243,10845,10940, 10400,9221,7548,5643,3803,2219,902,-293,-1596,-3177, -5048,-7073,-8947,-10341,-11079,-11221,-10914,-10245,-9224,-7854, -6192,-4308,-2260,-118,1983,3857,5399,6668,7827,8953, 9976,10731,11000,10611,9559,7986,6163,4366,2787,1450, 240,-1053,-2638,-4566,-6655,-8549,-9948,-10775,-11083,-10954, -10422,-9496,-8230,-6692,-4915,-2897,-722,1406,3303,4897, 6264,7514,8708,9811,10657,11032,10754,9792,8300,6540, 4787,3218,1878,687,-588,-2188,-4143,-6232,-8124,-9585, -10551,-11036,-11056,-10620,-9789,-8646,-7226,-5494,-3464,-1282, 838,2738,4367,5797,7132,8428,9652,10635,11143,10978, 10111,8711,7034,5332,3798,2517,1348,27,-1657,-3674, -5762,-7652,-9168,-10278,-10938,-11096,-10781,-10087,-9086,-7772, -6089,-4084,-1926,176,2072,3742,5235,6655,8073,9444, 10567,11176,11113,10367,9067,7433,5751,4272,3048,1921, 605,-1086,-3104,-5203,-7146,-8782,-10015,-10763,-11028,-10876, -10384,-9562,-8354,-6720,-4727,-2569,-463,1456,3143,4669, 6158,7682,9151,10365,11092,11183,10578,9367,7781,6164, 4774,3631,2519,1163,-543,-2519,-4587,-6567,-8299,-9641, -10510,-10903,-10894,-10544,-9839,-8717,-7163,-5253,-3150,-1079, 794,2449,3997,5557,7151,8695,10016,10920,11205,10766, 9650,8140,6608,5294,4162,3006,1639,-16,-1931,-3994, -6028,-7825,-9230,-10180,-10712,-10897,-10743,-10191,-9170,-7668, -5771,-3676,-1624,231,1902,3488,5099,6742,8360,9793, 10838,11237,10845,9758,8328,6919,5692,4588,3430,2084, 487,-1360,-3396,-5450,-7300,-8779,-9860,-10567,-10923,-10916, -10500,-9597,-8159,-6292,-4231,-2205,-351,1330,2931,4531, 6174,7844,9414,10620,11169,10905,9967,8687,7382,6197, 5095,3952,2659,1110,-735,-2812,-4914,-6797,-8337,-9501, -10320,-10836,-11019,-10771,-9968,-8595,-6782,-4768,-2780,-957, 714,2309,3925,5629,7441,9170,10489,11094,10904,10089, 8940,7738,6598,5502,4369,3098,1580,-220,-2225,-4283, -6193,-7804,-9072,-10017,-10663,-10963,-10826,-10149,-8920,-7263, -5378,-3448,-1584,139,1724,3277,4964,6834,8701,10207, 11026,11026,10325,9204,-113,-160,75,282,145,145, 352,33,-140,741,2459,2841,1793,1756,1586,373, -1270,-3815,-4430,-3178,-2922,-2153,-1093,-769,-1243,-3002, -5231,-6498,-5796,-2845,1015,3501,4616,5228,4552,4695, 6709,7566,6431,4389,2264,2197,2655,1493,128,-1047, -1934,-2665,-2953,-2429,-2168,-2143,-2722,-4559,-7129,-8336, -7017,-4592,-1988,-700,-2264,-4423,-3249,458,3763,5641, 5624,5744,6333,5482,3920,2672,2469,2567,2263,1765, 515,-684,-989,-1290,-3546,-7598,-10135,-10268,-7271,-1291, 3471,4316,2768,2201,3215,5341,7175,7513,7823,7697, 6374,4472,3093,2055,181,-1644,-3416,-5256,-5889,-4196, -1333,-709,-3336,-8478,-14171,-15321,-10868,-5821,-2867,-1882, -1063,1792,6274,10330,12679,13400,12555,10264,7830,6139, 4285,2213,809,-1009,-4035,-6458,-6995,-6561,-5655,-5499, -8883,-13913,-15391,-12037,-6410,-1965,-24,760,2603,6322, 10221,12937,14476,14086,11977,9231,6217,2767,-199,-1288, -2388,-4531,-5410,-5655,-4945,-1749,949,-358,-5865,-11670, -13204,-10632,-6535,-4259,-3807,-2223,1653,6457,10643,13309, 13378,11454,9904,8018,4946,3019,1987,710,-232,-2256, -4935,-5255,-2184,2277,3625,77,-6154,-10875,-11017,-8869, -7885,-8282,-8130,-6534,-3625,1268,5641,7101,8102,8944, 7803,5572,3128,576,-725,-838,-1445,-3261,-4465,-2777, 1624,5378,4580,-838,-6261,-8199,-7513,-5978,-3845,-2060, -1540,406,4700,7562,9110,10463,10657,10288,9313,7305, 3957,641,-1031,-2649,-5295,-8295,-8937,-5025,345,2463, -920,-6349,-9344,-10433,-9501,-7224,-6844,-7060,-4929,-835, 4039,8974,12463,13969,14777,14582,12325,8479,4856,2959, 1655,-1048,-5223,-8264,-6614,-1001,2753,1391,-2353,-7415, -11776,-12084,-11512,-11937,-12196,-11546,-8804,-4168,1694,6605, 10053,13302,15454,15892,13988,10362,7325,5479,3685,-1231, -7047,-7840,-4581,-1281,295,-1328,-6103,-10522,-12004,-11351, -10462,-10225,-10028,-8459,-4026,2063,7136,10827,13961,17049, 18989,18407,15026,9991,7495,5270,-1126,-8005,-11648,-11443, -8005,-3893,-2309,-4469,-7692,-9839,-10521,-10145,-10512,-11754, -11938,-9249,-3649,2295,7324,11645,15752,20389,23028,21323, 18386,16790,14128,8482,1166,-5932,-10758,-11264,-8595,-6238, -6221,-8283,-10922,-11996,-11610,-11500,-12505,-13446,-12052,-8647, -3748,1591,5001,8867,14340,17517,17575,16795,16572,15581, 12972,8485,1919,-3570,-5732,-4853,-2373,-1544,-3434,-7079, -10029,-11024,-12160,-14400,-16560,-18020,-17328,-13364,-8843,-5312, -11,7155,12876,16055,17958,18718,18536,17292,13399,7176, 527,-4082,-4829,-2597,178,332,-2426,-4884,-6416,-7654, -8781,-11284,-14789,-15377,-12644,-9866,-7295,-2803,3089,8584, 12841,15271,16530,17353,17288,15755,11511,5034,-1593,-5823, -5214,-2185,-817,-1410,-3018,-4839,-5231,-4811,-7374,-12065, -14183,-13766,-12648,-10704,-7275,-1987,4425,9819,13247,15238, 16278,17026,16961,15412,11015,3557,-2485,-4041,-2864,-1235, -1077,-3591,-6776,-6894,-5685,-7059,-10139,-12402,-13066,-12561, -11651,-9725,-5972,-671,4946,9207,12201,14767,16447,18180, 19877,17717,10792,3328,-1640,-3103,-1439,-343,-2844,-6032, -7073,-7443,-9033,-12277,-15189,-16325,-16670,-16781,-15916,-12978, -7640,-1749,3508,8240,11275,13094,15885,18883,18732,14430, 7438,272,-3013,-1354,504,23,-1910,-2932,-2729,-3327, -5488,-8298,-10373,-11325,-12457,-13306,-12041,-8854,-4756,903, 6682,10090,12367,15902,19897,22420,22089,16679,7913,1884, 367,915,40,-2047,-2959,-2986,-2993,-4533,-7618,-10329, -12395,-14990,-17271,-17607,-16878,-14352,-8487,-2130,2374,6199, 10068,14855,20764,24498,22512,15693,8856,5875,5010,3839, 2018,436,157,24,-1968,-4841,-7136,-9685,-12990,-15332, -17044,-18608,-17731,-13946,-8960,-4084,-340,2758,7177,13771, 20285,22211,18377,12514,7826,5510,4239,2076,16,-541, -734,-2213,-3637,-5235,-8426,-11201,-13107,-15631,-18127,-18854, -16858,-12369,-6666,-1894,1100,4234,10204,17634,22094,21635, 17119,11757,8367,6053,3203,906,234,-645,-1604,-1623, -2743,-5062,-7560,-10042,-12830,-16090,-18560,-19114,-16622,-11078, -5428,-2011,572,5655,13266,20206,23184,21115,17203,14248, 11070,7688,5582,3743,2003,1304,997,177,-1533,-3926, -6431,-9606,-13174,-16453,-19047,-18924,-15129,-10260,-6942,-4878, -1386,5392,14219,20329,21079,19529,16849,13057,9972,7612, 5071,2651,1218,919,356,-685,-2235,-4706,-7758,-11223, -15358,-19732,-21666,-19582,-15175,-10801,-8606,-6758,-1449,6769, 14633,19459,21017,19588,16453,13328,10596,7324,3830,1803, 829,12,-533,-1554,-3412,-5637,-8190,-12450,-17625,-21388, -22090,-18754,-14417,-12753,-11574,-7260,46,8271,15111,19112, 19656,17649,15181,12582,9134,5744,3614,2090,987,385, -853,-2369,-3206,-4646,-7558,-12127,-17464,-19651,-16804,-12581, -10553,-9884,-7756,-2786,4245,12262,18723,21357,21226,19900, 17452,14267,11123,7889,5223,3919,2583,717,-461,-1374, -1889,-2741,-6634,-12962,-17565,-17830,-15536,-13891,-13141,-12035, -9670,-4765,2822,10251,14891,17259,17649,16305,14636,12413, 9405,7171,5618,4026,2637,1138,85,517,991,-1652, -8013,-14425,-17317,-17313,-16468,-15648,-15656,-15691,-13052,-7029, 251,7183,12321,14468,14972,14590,12738,10266,7562,5086, 3449,1722,-503,-2206,-1495,858,1015,-3070,-8809,-12939, -14821,-14611,-13518,-13751,-14305,-13035,-9414,-3180,4355,10517, 14717,17264,17718,16588,14192,10668,7561,6046,5125,2679, -513,-1288,406,1152,-1361,-6282,-11609,-15077,-15434,-14928, -15011,-15172,-15302,-13646,-8914,-2277,4815,11112,15744,18859, 20905,21060,18677,15447,13938,13452,10728,6498,4281,4615, 5333,4375,308,-5933,-11072,-14066,-15752,-16714,-18131,-19815, -20146,-18403,-14193,-7941,-1209,4311,8687,12588,14734,13926, 11822,11294,11961,10656,7822,5671,5150,6788,7931,5732, 1033,-4315,-8674,-11206,-12652,-14456,-16827,-18955,-19764,-17712, -12825,-7048,-1788,3424,9042,13038,13428,12153,11953,12297, 11817,9780,6660,5182,6043,7269,7207,4442,-849,-6335, -9999,-11884,-13402,-15504,-18534,-21074,-20809,-17562,-12767,-7951, -2243,5084,11076,13964,15008,15523,16636,17351,15912,12466, 9178,7779,8215,9193,8414,4748,-440,-5199,-8264,-9938, -11993,-15461,-19461,-21253,-19520,-16122,-12360,-7055,78,7073, 11721,13543,14328,15625,16782,16470,13978,10323,7513,6979, 8029,8352,6334,1706,-4054,-8704,-11133,-12187,-14497,-18361, -20736,-20432,-18630,-15880,-11589,-5102,2591,8995,12782,14656, 16000,17048,17222,15560,11857,8042,5964,5963,7075,6973, 4186,-986,-6387,-9137,-9929,-11887,-15703,-19230,-20696,-20346, -18982,-16295,-11179,-3765,3507,8803,12105,14047,15538,16449, 15545,12634,8641,5708,5226,6419,8011,7755,3916,-1204, -4475,-5847,-7617,-11254,-15522,-18469,-19601,-19551,-18131,-14401, -8300,-837,6019,10721,13801,16200,18077,18793,17361,14145, 10729,8038,7438,8881,9456,6843,2079,-1986,-4230,-5883, -8648,-12730,-16422,-19025,-21035,-21819,-20381,-15982,-9306,-2313, 3695,8072,11472,14575,16512,16782,15393,12315,8575,6554, 7418,8829,7881,4439,484,-2031,-3409,-5352,-8353,-11656, -14481,-16706,-18443,-18500,-15981,-11201,-4919,996,5779,10108, 13807,16312,17648,17404,14576,9780,6116,5355,6138,5716, 2844,-844,-3508,-5313,-7203,-9893,-12798,-15153,-17198,-18772, -19627,-18912,-15365,-9841,-3752,2207,7716,12242,15603,18484, 20283,19255,15309,10948,8924,9267,9384,7570,4279,1133, -1315,-3804,-6606,-9560,-12474,-14939,-17347,-19773,-20846,-19532, -15721,-10394,-4162,1981,6958,11009,15033,18609,19874,17579, 13623,10986,10505,10650,9284,6311,3293,820,-1223,-3299, -5637,-7915,-9965,-12447,-15586,-18219,-18989,-17742,-14286,-8898, -3061,1883,5932,10281,14995,17966,17388,14020,10469,8935, 8836,8363,6385,3413,527,-2010,-4603,-7129,-8954,-10083, -11521,-13927,-16598,-18397,-18534,-16684,-12286,-6266,-649,4089, 8948,14195,18466,19780,17655,14096,11609,10907,10768,9502, 7079,4524,2059,-994,-4288,-6748,-8315,-9894,-12204,-15186, -17996,-20000,-20154,-17412,-12247,-6515,-1643,3005,8743,14790, 18915,19487,17012,14286,12947,12642,11954,10219,7886,5214, 2026,-1325,-3927,-5458,-6981,-9353,-12323,-15851,-19354,-21630, -21248,-17664,-12355,-7457,-2637,3268,10349,16716,19810,19287, 17020,15021,13867,12948,11911,10307,7943,4497,445,-2976, -5334,-7099,-8833,-10984,-13900,-17889,-21908,-23716,-22361,-18795, -14518,-10214,-4781,2607,10505,16563,19078,18831,17501,16335, 15513,14863,14107,12751,9912,5952,1886,-1469,-4201,-6410, -7957,-9874,-13453,-18085,-21764,-22649,-20702,-17676,-14641,-10658, -4600,3109,10902,16365,18600,18899,18385,17490,16926,16685, 16153,14640,11880,8465,4696,709,-2452,-4522,-6325,-9347, -14306,-19495,-22394,-22336,-20636,-18802,-16491,-11806,-4758,3141, 9673,13710,15500,15868,15434,14877,14734,14825,14022,12200, 9310,5178,792,-2926,-4951,-5633,-7091,-10830,-16161,-20562, -22298,-21945,-20805,-19178,-15704,-9478,-1696,5980,11868,15563, 17205,16909,15926,15532,15630,15660,15044,13309,10337,5858, 1269,-2034,-3603,-4652,-7361,-12142,-17113,-20150,-20968,-20963, -20608,-19222,-15457,-8811,-1401,5667,11834,15902,17374,17195, 16570,16268,16054,15712,14819,12908,9388,4433,231,-1659, -2095,-3362,-7125,-12291,-16572,-18984,-19880,-20391,-20369,-18373, -14044,-7801,-592,6434,11738,14581,15465,15221,14864,14735, 14696,14676,14324,12229,8065,3492,947,704,518,-1500, -5441,-9890,-13048,-15285,-17615,-19217,-19360,-17457,-13393,-7164, 11,6547,11256,13687,14325,14094,13320,12710,12719,13049, 12367,9495,5207,1769,257,-83,-1347,-4593,-8596,-11975, -14991,-17911,-20305,-21611,-21563,-19523,-15022,-8347,-878,5566, 10151,12789,13656,13358,12783,12827,13930,14713,13593,10227, 6212,3902,3491,2667,169,-3131,-6442,-9728,-12966,-16075, -19214,-21618,-22213,-20097,-15130,-7936,-279,6427,11375,14311, 14890,14085,13793,14802,16324,16809,14753,11019,8207,7187, 6263,4198,1119,-2599,-6350,-9820,-13324,-16751,-20007,-22295, -22307,-19779,-14530,-7229,304,7079,12155,14390,14592,14144, 14506,16046,17203,15737,12088,8521,6106,4508,2894,474, -2462,-5601,-8798,-11659,-14656,-17893,-20892,-22848,-22411,-19076, -13850,-6874,781,7378,11804,13443,13070,12770,14136,15942, 16021,14151,11363,8884,6934,4938,2716,-36,-3295,-6349, -9074,-11545,-14185,-17583,-20887,-22468,-21867,-18801,-13100,-5656, 2004,8659,12856,13849,13821,14561,16015,16891,16325,14591, 12462,10349,8478,6088,2886,-656,-4456,-7780,-10060,-12345, -15550,-19036,-21916,-23369,-22409,-18675,-12957,-5565,2607,9177, 12703,14086,15180,16750,17972,18275,17141,14888,12765,10792, 8645,6218,2867,-1101,-4426,-6868,-9382,-12335,-15793,-19740, -22743,-23789,-22989,-19810,-13853,-6147,1996,8082,11477,13642, 15754,17994,19523,19366,18087,16048,13590,11405,9405,6373, 2365,-1180,-4213,-6840,-9374,-12718,-16970,-20771,-23393,-24637, -23973,-19942,-13039,-5159,2759,8324,11356,13843,16458,18403, 19424,19458,17944,15523,13452,11403,8660,5452,1838,-1653, -4364,-6747,-9658,-13247,-16970,-20290,-23380,-25577,-24738,-20108, -12970,-5151,1416,5915,9496,12363,14669,16760,17858,16958, 15122,13331,11598,9801,7504,4450,1336,-908,-2478,-4495, -7287,-10204,-13401,-17361,-21396,-23798,-22810,-17893,-10918,-4226, 1740,6503,9723,12554,15608,17627,17984,17215,15769,14335, 13022,11246,8520,5302,2789,983,-1180,-3776,-6412,-9405, -13175,-17931,-22623,-24633,-22644,-18047,-12042,-5435,85,3938, 7613,11268,14341,16006,16207,15517,14596,13945,13118,11216, 8581,6275,4421,2475,166,-2671,-5625,-8793,-13629,-19509, -23781,-25199,-23573,-18753,-12282,-6322,-1512,2721,6996,10974, 13957,15473,15446,14972,14954,14742,13326,11012,8498,6503, 5021,2824,-65,-2370,-4852,-8978,-14180,-19504,-23800,-25194, -22779,-17544,-11615,-6551,-1987,2489,7207,11759,14798,15736, 15785,15972,16010,15249,13229,10399,8467,7104,4758,2256, 439,-1502,-4312,-8253,-13438,-19171,-23418,-24059,-21026,-16180, -11242,-7031,-3168,1398,6334,10105,12051,12726,13027,13808, 14375,13277,11465,10254,9034,7089,4996,3197,1467,-700, -3628,-7910,-13843,-19795,-23185,-22933,-19544,-14836,-10623,-7017, -2473,2851,7700,11157,12589,13327,14705,15462,14812,13676, 12425,10814,8834,6941,5168,3221,1233,-872,-4208,-9571, -15911,-21387,-23977,-22580,-18942,-15237,-11661,-7787,-2933,2784, 7319,9917,11875,13787,14876,14927,14517,13773,12325,10595, 9056,7419,5544,3932,2628,541,-3181,-9090,-15998,-21135, -22848,-21617,-18756,-15640,-12327,-7731,-2007,2970,6471,9300, 11781,13224,13720,13967,13832,12828,11283,9870,8244,6457, 4926,3666,2614,634,-3746,-10092,-16335,-20495,-21458,-20154, -18458,-16216,-12205,-6851,-1810,2418,6153,9291,11372,12583, 13449,13727,13247,12314,10932,9358,7670,5663,4319,4176, 3881,1687,-3186,-9972,-15867,-18659,-19068,-18729,-17628,-14708, -10264,-5717,-1440,2846,6542,9204,11177,12679,13452,13486, 12658,11434,10297,8624,6296,4445,4022,4644,4527,1535, -4559,-11159,-15722,-18012,-19175,-19199,-17346,-13954,-9834,-5234, -490,3763,7020,9351,10955,12174,12608,12131,11513,10898, 9645,7536,5223,3758,4022,5143,4287,186,-5598,-10768, -14591,-17372,-18854,-18563,-16723,-13631,-9631,-5033,-380,3609, 6516,8998,11098,12194,12501,12581,12555,12038,10587,8186, 5903,5454,6605,6856,4286,-463,-5818,-10939,-15436,-18606, -20104,-19764,-17905,-15019,-11094,-6355,-2000,1781,5416,8493, 10392,11323,11811,12193,12588,12145,9973,7082,5630,6365, 7521,6868,4115,-284,-5491,-10571,-14925,-17771,-18875,-18672, -17296,-14248,-10040,-5682,-1441,2778,6658,9923,12068,12931, 13452,14240,14453,12745,9551,7145,6748,7581,8052,6748, 3474,-1075,-6542,-11962,-15890,-18277,-19678,-19572,-17546,-14096, -10043,-5963,-1941,2332,6273,8881,9888,10422,11713,13060, 12581,10128,7333,5847,6196,7343,7904,7121,4359,-398, -5700,-10185,-13994,-17001,-18438,-17938,-15605,-12193,-8507,-4755, -706,3597,6820,7961,8380,9683,11362,11916,10566,7817, 5604,4921,5341,6266,6932,5816,2436,-2021,-6544,-10633, -14097,-16542,-17315,-16163,-13711,-10817,-7758,-3961,625,4491, 6435,7362,8606,10579,12391,12497,10901,8924,7385,6779, 7566,8898,9000,6752,2778,-1718,-6230,-10614,-14605,-17341, -17980,-16674,-14616,-12510,-9442,-5122,-767,2457,4163,5446, 7630,10066,11386,11341,10130,8167,6821,7148,8779,10009, 9400,6772,2943,-1281,-5696,-10358,-14563,-16657,-16484,-15615, -14428,-12285,-8750,-4087,171,2774,4565,6736,9178,11142, 12089,11743,10127,8101,7214,8050,9420,9716,8296,5399, 1767,-2468,-7671,-12663,-15886,-17214,-17242,-16654,-15523,-12842, -8493,-3914,-407,2207,4707,7330,9898,11931,12806,11874, 9663,7867,7701,8926,10086,9794,8129,5772,2168,-2915, -8502,-13204,-16085,-17240,-17648,-17521,-15841,-12209,-7721,-3583, -232,2489,4905,7414,10219,12354,12542,10869,8583,7358, 8032,9291,9713,9275,8119,5774,1766,-3461,-8766,-12615, -14915,-16635,-17844,-17624,-15402,-11693,-7552,-3549,-249,2178, 4735,7829,10805,12590,12165,10052,8309,8177,9055,9900, 10241,10050,9188,6674,1841,-3679,-8248,-11475,-14138,-16481, -17573,-16721,-14221,-10535,-6317,-2727,-176,1975,4634,8052, 11064,11901,10539,8662,7757,8093,8972,9688,10168,10359, 9185,5716,485,-4531,-8594,-12106,-15178,-17263,-17968,-17040, -14383,-10655,-6796,-3626,-1371,1116,5026,9166,11503,11284, 9498,7801,7183,7421,7935,8818,10005,10521,8940,5227, 518,-4147,-8417,-12078,-15159,-17299,-17860,-16751,-14092,-10359, -6910,-4672,-2620,618,5031,8817,10424,9908,8580,7677, 7306,7291,7969,9687,11324,11431,9578,6224,1945,-2388, -6469,-10245,-13223,-15298,-16214,-15092,-12075,-8816,-6609,-5161, -3023,636,5110,8333,9329,8961,8342,7661,6890,6936, 8188,9960,11173,10979,9088,6012,2131,-2107,-6119,-9593, -12710,-15160,-15690,-13761,-10665,-8118,-6719,-5305,-2451,1725, 5629,7814,8519,8473,7630,6397,5607,5989,7553,9427, 10537,10197,8441,5519,1517,-2682,-6639,-10698,-14636,-16987, -16737,-14420,-11633,-9786,-8434,-6093,-2182,2106,5476,7683, 8702,8544,7491,6330,6044,7033,8848,10357,10886,10269, 8100,4738,1025,-2656,-6693,-11114,-14823,-16497,-15620,-13411, -11600,-10522,-8905,-5867,-1933,1946,5250,7518,8480,8196, 7086,6264,6663,8106,9941,11749,12713,12006,9698,6716, 3343,-773,-5815,-11193,-15141,-16330,-15436,-14238,-13394,-12303, -10148,-6760,-2648,1413,4861,7301,8237,7807,7052,6909, 7478,8847,10849,12605,12959,11808,9751,7199,3895,-720, -6433,-11681,-14528,-15008,-14612,-14331,-13883,-12561,-9964,-6375, -2387,1585,5088,7264,7764,7362,6898,6810,7580,9370, 11505,12868,12801,11486,9563,7280,3625,-2132,-8317,-12837, -14872,-15210,-15148,-15210,-14784,-13236,-10681,-7180,-2888,1454, 4806,6664,7319,7107,6603,6583,7576,9528,11506,12423, 11945,10902,9676,7250,2552,-3849,-9674,-13444,-15055,-15607, -15955,-15931,-15144,-13489,-10651,-6482,-1680,2646,5923,7814, 8190,7612,6989,7233,8743,10952,12518,12858,12676,12502, 11591,8592,3224,-3164,-8317,-11434,-13168,-14276,-14840,-15009, -14740,-13313,-10332,-6182,-1603,2675,5907,7574,7742,6981, 6404,7025,8665,10192,10906,11191,11743,12121,10950,7223, 1660,-4112,-8589,-11676,-13578,-14637,-15447,-16078,-15757,-13852, -10611,-6280,-1510,2686,5746,7215,7016,6328,6420,7689, 9329,10412,10974,11703,12880,13281,11368,6989,1540,-3837, -8216,-11195,-13205,-14776,-15902,-16331,-15733,-13781,-10405,-6071, -1478,2609,5323,6112,5695,5469,6269,7779,9090,9791, 10706,12365,13903,13759,11369,7121,1952,-3204,-7415,-10506, -12729,-14314,-15511,-16127,-15570,-13573,-10323,-6008,-1283,2675, 4795,5060,4625,4799,5889,7148,8003,8992,10822,13020, 14392,13917,11270,6939,1974,-2866,-6950,-9949,-12212,-14321, -16019,-16669,-16019,-13952,-10460,-5868,-1106,2494,4090,4141, 4262,5251,6490,7344,8200,9725,11911,14041,14997,13970, 10976,6577,1587,-3046,-6674,-9571,-12181,-14445,-16043,-16666, -16178,-14183,-10433,-5420,-586,2581,3778,4256,5073,6062, 6868,7665,8954,11036,13730,15933,16666,15445,12151,7205, 1888,-2920,-7031,-10529,-13542,-15826,-17391,-18245,-17971,-15743, -11342,-5949,-1544,983,2345,3494,4741,5796,6434,7180, 8747,11085,13529,15393,16011,14487,10866,6134,1394,-3039, -7185,-10651,-13450,-15612,-17289,-18319,-17774,-14790,-9950,-4961, -1132,1302,2905,4398,5609,6196,6616,7625,9363,11711, 14367,16424,16663,14521,10750,6276,1729,-2753,-6924,-10312, -12954,-15350,-17805,-19222,-18274,-14839,-9997,-5285,-1721,898, 3023,4558,5252,5617,6269,7400,9309,12098,15075,16887, 16660,14419,10766,6308,1536,-3115,-7095,-10018,-12633,-15453, -17940,-18902,-17456,-13826,-9416,-5425,-2095,652,2645,3778, 4411,4956,5537,6609,8848,11920,14700,16100,15679,13648, 10482,6354,1685,-2601,-6122,-9126,-12167,-15402,-17970,-18404, -16324,-12663,-8675,-4760,-1235,1425,3059,4051,4559,4636, 5004,6460,9174,12455,15099,16170,15702,13947,10739,6481, 2058,-1861,-5169,-8292,-11940,-15701,-18042,-18133,-16367,-13397, -9611,-5610,-2273,213,2057,3166,3449,3387,3805,5503, 8528,11787,14312,15619,15340,13429,10063,5847,1707,-1668, -4689,-8214,-12209,-15555,-17328,-17384,-15821,-12673,-8775,-5112, -2086,317,2020,2870,2708,2403,3121,5270,8391,11762, 14444,15746,15438,13454,9966,5922,2497,-374,-3741,-7731, -11641,-14855,-16770,-16930,-15166,-12029,-8482,-5050,-1881,855, 2599,2989,2552,2449,3457,5718,8862,12081,14650,16086, 15789,13510,9984,6523,3458,131,-3879,-8108,-12128,-15461, -17296,-17225,-15416,-12575,-9349,-5859,-2264,647,2147,2406, 2091,2197,3526,6017,9121,12320,15002,16247,15321,12740, 9737,6785,3616,102,-3926,-8242,-12376,-15615,-17177,-16911, -15195,-12646,-9299,-5406,-1794,753,1869,1808,1465,1915, 3424,5843,9020,12485,15028,15535,14146,11928,9314,6499, 3284,-230,-4194,-8518,-12500,-15196,-16221,-16006,-14797,-12465, -9165,-5353,-1818,530,1377,1403,1465,2037,3334,5921, 9646,13160,15115,15193,13953,12060,9703,6928,3754,200, -4114,-8702,-12358,-14802,-16136,-16366,-15291,-12849,-9200,-5055, -1614,336,976,1037,909,1200,2881,6258,10328,13617, 15266,15432,14561,12832,10456,7771,4599,596,-3994,-8465, -12041,-14601,-16116,-16442,-15397,-12802,-8891,-4858,-1754,264, 1214,1174,758,1249,3501,7215,11057,13817,15296,15387, 14185,12282,10027,7270,3739,-510,-5081,-9360,-12765,-15209, -16738,-17115,-15679,-12574,-8739,-5062,-1960,178,1018,823, 655,1846,4711,8322,11709,14242,15412,15121,13908,12266, 10127,7181,3394,-1024,-5653,-9720,-12900,-15494,-17155,-17147, -15278,-12182,-8516,-4855,-1684,321,687,205,473,2194, 5063,8526,11738,13941,14717,14368,13399,11904,9868,7032, 3225,-1067,-5096,-8744,-12116,-14914,-16446,-16359,-14570,-11695, -8158,-4358,-1410,-284,-521,-891,-335,1556,4639,8219, 11244,13172,13966,13916,13309,12223,10317,7232,3375,-491, -4258,-8137,-11819,-14764,-16228,-16099,-14613,-11745,-7765,-3882, -1348,-373,-338,-484,215,2428,5678,9039,11734,13432, 14057,14046,13781,12660,10245,6908,3129,-707,-4608,-8777, -12393,-14915,-16297,-16381,-14768,-11533,-7635,-4197,-1905,-1014, -1018,-957,135,2573,5762,9056,11572,12958,13732,14130, 13848,12483,9948,6747,3330,-426,-4633,-8740,-12032,-14585, -16215,-16286,-14453,-11148,-7354,-4058,-2149,-1632,-1636,-1293, -74,2502,5796,8678,10688,11993,12963,13525,13155,11667, 9482,6855,3548,-455,-4500,-8254,-11553,-14202,-15680,-15465, -13524,-10212,-6536,-3786,-2350,-1939,-2104,-1791,-258,2502, 5580,8140,10162,12021,13561,14091,13474,12178,10347,7594, 3897,-190,-4095,-7922,-11442,-14185,-15769,-15407,-13106,-9809, -6491,-3977,-2748,-2598,-2711,-1967,116,3051,5939,8356, 10659,12717,13947,14152,13689,12630,10643,7565,3906,-28, -4063,-8078,-11932,-15040,-16530,-15927,-13587,-10245,-6906,-4558, -3702,-3836,-3740,-2367,136,2921,5651,8424,11053,12953, 13958,14392,14172,12961,10797,7678,3956,50,-3987,-8306, -12400,-15312,-16527,-15757,-13194,-9678,-6483,-4631,-4301,-4423, -3682,-1809,588,3190,6114,9065,11380,12973,13993,14351, 13991,12658,10240,7038,3580,-153,-4260,-8650,-12673,-15493, -16562,-15576,-12686,-8991,-6134,-4929,-4845,-4552,-3376,-1558, 804,3743,6846,9558,11769,13361,14431,14897,14380,12692, 10175,7173,3698,-224,-4563,-9059,-13036,-15853,-16830,-15442, -12233,-8732,-6510,-5681,-5266,-4606,-3509,-1750,628,3432, 6326,8889,11046,12852,14276,14723,14099,12559,10316,7519, 4012,-58,-4328,-8644,-12673,-15571,-16215,-14237,-11034,-8370, -6724,-5840,-5363,-4806,-3782,-2064,427,3402,6280,8823, 11107,13007,14307,14618,13910,12537,10396,7407,3739,-344, -4587,-9205,-13658,-16156,-15892,-13685,-11015,-8665,-7011,-5988, -5298,-4576,-3342,-1203,1512,4331,6996,9345,11619,13412, 14376,14412,13632,12217,10006,6993,3622,-216,-4920,-10067, -14249,-16113,-15593,-13510,-10982,-8721,-7018,-6051,-5570,-4901, -3503,-1263,1330,3894,6643,9341,11696,13411,14196,14313, 13756,12221,9923,7321,4303,160,-5050,-10185,-14086,-15614, -15035,-13198,-10833,-8653,-7149,-6467,-6090,-5219,-3547,-1345, 1065,3574,6352,9079,11229,12754,13844,14235,13501,11898, 10014,7712,4491,-12,-5387,-10337,-13763,-15133,-14640,-12925, -10616,-8514,-7239,-6546,-5759,-4495,-2738,-765,1469,4184, 7131,9543,11470,13281,14432,14452,13515,12060,10439,8151, 4410,-624,-6135,-10936,-14193,-15504,-14910,-12965,-10696,-8919, -7860,-7123,-6098,-4702,-3150,-1220,1431,4304,6913,9325, 11581,13441,14367,14107,13225,12183,10789,8289,4207,-968, -6294,-10873,-13941,-15044,-14297,-12493,-10578,-9179,-8178,-7082, -6002,-5052,-3581,-1314,1313,3889,6392,8964,11398,13063, 13584,13240,12671,12097,10784,8042,3842,-1209,-6393,-10786, -13557,-14328,-13291,-11532,-10058,-8660,-7173,-6079,-5216,-4078, -2339,-108,2171,4384,6951,9650,11901,13049,13103,12829, 12624,12058,10455,7442,3072,-2108,-7232,-11613,-14015,-14269, -13414,-12130,-10563,-8938,-7594,-6726,-5881,-4509,-2641,-582, 1601,4048,6993,9908,11798,12564,12782,12908,12865,12344, 10610,7459,3122,-2191,-7470,-11252,-13112,-13504,-12915,-11671, -10116,-8760,-7841,-7120,-6088,-4559,-2697,-784,1455,4379, 7628,10218,11823,12613,13035,13530,13614,12826,11001,7723, 2811,-2792,-7732,-11167,-13053,-13579,-12937,-11560,-10070,-8972, -8209,-7407,-6154,-4647,-3157,-1291,1402,4552,7617,9981, 11320,12340,13220,13719,13843,13334,11456,7666,2428,-3005, -7647,-11078,-13112,-13649,-12988,-11715,-10477,-9699,-8924,-7709, -6407,-5164,-3677,-1551,1510,5037,8070,10355,12092,13322, 14076,14600,14958,14305,11771,7364,1996,-3309,-7945,-11409, -13500,-13990,-13153,-12094,-11314,-10464,-9374,-8024,-6690,-5497, -3884,-1228,2071,5312,8091,10393,11952,12879,13706,14702, 15309,14423,11594,7222,2101,-2858,-7405,-11020,-12894,-13122, -12551,-11806,-11078,-10144,-8906,-7766,-6993,-5971,-4029,-1196, 2011,5268,8241,10454,11668,12545,13744,14933,15386,14176, 11069,6814,1924,-3242,-7874,-11092,-12642,-12942,-12724,-12336, -11521,-10232,-8983,-8109,-7244,-5796,-3604,-819,2431,5871, 8623,10404,11600,12778,14377,15870,16034,14475,11446,7159, 2004,-3310,-7882,-10944,-12431,-13053,-13271,-12862,-11832,-10634, -9747,-8999,-7922,-6410,-4326,-1290,2252,5597,8165,9698, 11000,12769,14722,16000,15977,14492,11513,7141,1786,-3593, -7802,-10455,-12038,-12971,-13144,-12421,-11418,-10530,-9594,-8687, -7739,-6257,-3987,-849,2767,5864,7884,9424,11203,13338, 15344,16516,16363,14817,11637,6787,1157,-3937,-7717,-10359, -12237,-13070,-12965,-12464,-11638,-10645,-9730,-8835,-7819,-6325, -3768,-229,3222,5784,7552,9183,11211,13344,15140,16201, 16248,14745,11276,6173,901,-3598,-7393,-10177,-11782,-12404, -12277,-11704,-10962,-10057,-9189,-8666,-8009,-6282,-3351,91, 3017,5109,6798,8698,10804,12837,14527,15780,15946,14011, 10153,5464,616,-3829,-7444,-10067,-11623,-12238,-12301,-11928, -11026,-10045,-9533,-9161,-8274,-6158,-3014,206,2819,4889, 6849,8981,11064,13126,15355,16794,16419,14123,10286,5584, 745,-3755,-7470,-10001,-11499,-12346,-12436,-11775,-10795,-10026, -9774,-9428,-8084,-5535,-2382,453,2734,4930,6958,8760, 10791,13282,15561,16736,16138,13729,9978,5438,521,-3922, -7346,-9867,-11590,-12470,-12374,-11513,-10663,-10292,-10221,-9630, -7791,-5021,-2261,312,2817,4918,6544,8270,10527,13143, 15418,16355,15661,13440,9723,5094,423,-3662,-6923,-9502, -11296,-11993,-11669,-10852,-10332,-10468,-10420,-9323,-7359,-5016, -2385,274,2524,4351,5898,7818,10499,13251,15428,16398, 15741,13386,9548,4979,594,-3296,-6659,-9389,-11168,-11649, -10991,-10492,-10716,-10932,-10512,-9364,-7545,-5235,-2603,-39, 1954,3449,5156,7482,10482,13480,15880,16988,16301,13676, 9808,5434,1126,-2776,-6407,-9457,-11040,-11207,-11060,-11248, -11493,-11450,-10886,-9717,-7885,-5347,-2542,-172,1611,3077, 4872,7380,10484,13701,16281,17343,16499,13886,10016,5815, 1640,-2766,-6856,-9531,-10714,-11057,-11226,-11568,-11783,-11677, -11174,-9909,-7741,-5034,-2330,-207,1460,3142,5141,7739, 10991,14186,16609,17479,16261,13470,10052,6180,1714,-2811, -6534,-8855,-9953,-10584,-11043,-11421,-11708,-11711,-11182,-9774, -7458,-4842,-2484,-532,1115,2721,4783,7415,10624,14023, 16408,16783,15410,12980,9738,5644,959,-3409,-6593,-8576, -9682,-10361,-10884,-11325,-11722,-11874,-11175,-9444,-7028,-4433, -2121,-340,1305,2966,4817,7447,11029,14287,16178,16381, 15235,13133,9826,5399,680,-3435,-6414,-8320,-9482,-10143, -10687,-11394,-12035,-12037,-11145,-9227,-6685,-4321,-2249,-353, 1177,2557,4605,7695,11363,14351,15910,16221,15368,13195, 9611,5059,409,-3519,-6481,-8467,-9539,-10193,-10908,-11689, -12315,-12208,-10896,-8905,-6684,-4324,-2185,-604,518,1922, 4528,8071,11650,14389,16056,16612,15831,13495,9664,5182, 737,-3177,-6057,-7938,-9149,-9971,-10953,-12072,-12600,-12154, -10883,-9033,-6741,-4232,-2181,-978,114,2041,4993,8431, 11666,14220,15974,16657,15634,13068,9329,4898,524,-3198, -5985,-7604,-8529,-9525,-10776,-11838,-12160,-11753,-10684,-8789, -6259,-3975,-2451,-1492,-213,2047,5118,8240,11296,14097, 15931,16376,15309,12723,9030,4805,480,-3221,-5706,-7160, -8334,-9713,-11015,-11826,-12238,-12107,-10936,-8717,-6194,-4256, -3188,-2218,-469,2037,4954,8197,11461,14297,16161,16502, 15247,12666,8949,4526,206,-3098,-5219,-6831,-8412,-9830, -10962,-11962,-12567,-12266,-10655,-8080,-5821,-4475,-3370,-2050, -263,2109,4951,8104,11420,14274,15880,16070,14956,12503, 8689,4249,375,-2440,-4603,-6476,-8086,-9456,-10708,-11955, -12662,-11930,-9971,-7821,-6101,-4853,-3693,-2219,-321,2038, 4943,8353,11734,14416,15903,16264,15169,12322,8302,4284, 850,-1913,-4274,-6313,-7858,-9271,-10974,-12426,-12656,-11572, -9677,-7735,-6237,-4983,-3668,-2155,-380,1936,5019,8468, 11560,14147,15986,16389,14886,11732,7749,3962,690,-2283, -4659,-6228,-7618,-9416,-11293,-12430,-12286,-11058,-9414,-7862, -6505,-5202,-3862,-2432,-620,2034,5183,8280,11277,14173, 16140,16354,14486,11261,7648,3992,442,-2383,-4310,-5842, -7646,-9782,-11655,-12504,-12117,-10911,-9544,-8178,-6731,-5420, -4330,-2865,-592,2183,5167,8212,11418,14578,16429,16077, 14089,11246,7788,4019,708,-1720,-3397,-5035,-7140,-9392, -11103,-11707,-11327,-10492,-9275,-7799,-6581,-5608,-4517,-2876, -598,1958,4649,7941,11631,14647,16015,15700,14020,11130, 7419,3664,648,-1410,-3098,-5068,-7533,-9782,-11116,-11586, -11348,-10375,-8978,-7611,-6654,-5902,-4683,-2818,-801,1369, 4364,8160,11870,14617,15974,15817,14111,11041,7355,3856, 1160,-734,-2696,-5117,-7576,-9535,-10865,-11431,-11115,-10027, -8696,-7807,-7276,-6318,-4900,-3407,-1798,550,3882,7693, 11183,13914,15451,15355,13666,10578,6926,3907,1714,-256, -2494,-4964,-7283,-9253,-10724,-11344,-10778,-9586,-8677,-8013, -7073,-5789,-4574,-3442,-1714,1016,4423,8069,11471,14124, 15657,15414,13179,9775,6460,3823,1605,-601,-2960,-5254, -7412,-9457,-10828,-10874,-10061,-9263,-8592,-7719,-6526,-5469, -4577,-3303,-1284,1583,5004,8455,11693,14433,15802,15045, 12507,9303,6305,3739,1366,-911,-3020,-5256,-7685,-9625, -10395,-10214,-9863,-9487,-8686,-7534,-6470,-5613,-4831,-3534, -1299,1627,4870,8358,11887,14619,15621,14533,12046,9267, 6630,4058,1776,-324,-2607,-5358,-7940,-9529,-10215,-10457, -10352,-9794,-8825,-7707,-6821,-6220,-5333,-3686,-1369,1437, 4765,8538,12271,14846,15372,14178,12051,9422,6643,4163, 2114,-103,-2982,-5884,-8118,-9543,-10270,-10523,-10343,-9627, -8502,-7562,-7036,-6433,-5387,-3765,-1573,1160,4736,8922, 12583,14680,15052,14048,11966,9193,6625,4588,2457,-199, -3171,-5882,-7944,-9176,-9972,-10336,-9953,-8989,-7978,-7283, -6818,-6118,-5007,-3584,-1713,1141,5071,9220,12416,14352, 14840,13684,11374,8827,6691,4702,2357,-482,-3455,-5922, -7766,-9238,-10192,-10351,-9731,-8750,-7986,-7521,-6943,-6095, -5138,-4022,-1955,1428,5446,9301,12554,14626,14882,13546, 11456,9284,7371,5305,2599,-377,-3115,-5496,-7520,-9182, -10132,-10154,-9510,-8829,-8388,-7784,-6937,-6282,-5733,-4466, -1947,1469,5345,9302,12531,14289,14258,12865,11070,9406, 7606,5283,2484,-420,-3068,-5528,-7777,-9485,-10229,-10049, -9617,-9281,-8610,-7651,-7060,-6755,-6028,-4450,-1930,1520, 5564,9606,12771,14202,13845,12572,11094,9458,7451,4946, 2181,-494,-3036,-5640,-8030,-9416,-9755,-9763,-9617,-8972, -8065,-7466,-7113,-6665,-5847,-4285,-1769,1714,5970,10050, 12825,13867,13548,12627,11372,9667,7383,4740,2201,-300, -3130,-5942,-7871,-8892,-9518,-9731,-9287,-8499,-7775,-7340, -7106,-6715,-5929,-4485,-1942,1820,6182,9963,12283,13135, 12982,12391,11381,9587,7314,5123,2790,-104,-3141,-5578, -7395,-8737,-9478,-9536,-8917,-8097,-7538,-7183,-6889,-6545, -5992,-4587,-1800,2100,6267,9627,11558,12369,12620,12254, 10941,9106,7283,5175,2473,-437,-3186,-5488,-7359,-8762, -9432,-9341,-8798,-8232,-7790,-7428,-7252,-7191,-6672,-5005, -1837,2309,6323,9215,11007,12246,12658,12022,10864,9457, 7643,5293,2534,-245,-2806,-5124,-7081,-8424,-8954,-8873, -8580,-8145,-7728,-7486,-7603,-7725,-7170,-5177,-1586,2525, 6024,8874,11100,12415,12673,12167,11275,9980,8020,5495, 2763,-5,-2707,-5235,-7196,-8393,-8946,-8988,-8668,-8139, -7716,-7537,-7828,-8170,-7277,-4639,-1071,2591,5998,8940, 11031,12041,12237,11951,11224,9851,7817,5444,2926,217, -2588,-5055,-6903,-8102,-8669,-8685,-8362,-7688,-7107,-7381, -8186,-8247,-6867,-4286,-1040,2523,5997,8803,10560,11437, 11781,11669,10868,9359,7478,5332,2767,-88,-2839,-5296, -7117,-8194,-8836,-8901,-8234,-7326,-7160,-7852,-8447,-8053, -6555,-4060,-725,2958,6310,8843,10516,11549,12028,11797, 10885,9538,7703,5346,2714,-166,-2991,-5181,-6785,-8112, -8892,-8593,-7667,-7190,-7593,-8358,-8671,-8130,-6613,-4044, -671,2894,5991,8322,10104,11309,11751,11557,10827,9485, 7751,5501,2672,-297,-2814,-4927,-6905,-8412,-8732,-8028, -7285,-7257,-7915,-8643,-8933,-8446,-6900,-4134,-648,2708, 5698,8206,10019,11175,11748,11607,10892,9785,8089,5578, 2769,194,-2226,-4659,-6815,-7964,-7896,-7302,-6994,-7294, -7908,-8558,-8955,-8389,-6545,-3727,-452,2812,5725,8136, 10034,11257,11632,11468,10993,9829,7770,5215,2743,348, -2277,-4965,-6955,-7766,-7644,-7356,-7297,-7546,-8266,-9117, -9313,-8465,-6557,-3772,-567,2539,5405,7984,9885,10899, 11421,11641,11182,9706,7550,5275,2944,326,-2634,-5318, -6888,-7431,-7438,-7185,-7091,-7611,-8555,-9284,-9377,-8431, -6330,-3524,-474,2660,5690,8118,9673,10676,11455,11678, 10949,9400,7522,5564,3162,151,-2849,-5193,-6656,-7229, -7133,-6910,-7074,-7769,-8770,-9587,-9497,-8221,-6130,-3536, -489,2791,5667,7752,9327,10672,11660,11768,10860,9509, 7931,5856,3110,98,-2761,-5076,-6488,-6956,-6935,-6856, -7081,-7986,-9178,-9779,-9349,-8096,-6174,-3464,-213,2940, 5527,7521,9332,10854,11583,11390,10719,9739,8158,5929, 3188,148,-2739,-4919,-6232,-6753,-6707,-6672,-7241,-8401, -9385,-9695,-9335,-8213,-6255,-3389,-156,2693,5046,7294, 9374,10739,11268,11316,10910,9970,8403,6089,3132,27, -2749,-4890,-6159,-6405,-6239,-6491,-7324,-8391,-9247,-9610, -9451,-8376,-6146,-3166,-260,2391,5032,7497,9386,10570, 11145,11197,10828,9930,8274,5799,2818,-256,-3151,-5197, -6033,-6118,-6192,-6760,-7684,-8611,-9446,-10057,-9873,-8371, -5897,-3185,-441,2387,5108,7461,9249,10401,11017,11292, 11087,10099,8349,5950,2922,-328,-3128,-4875,-5559,-5752, -6112,-6722,-7385,-8231,-9411,-10101,-9588,-7988,-5748,-3122, -286,2617,5356,7644,9347,10470,11273,11605,11260,10273, 8566,6039,2794,-585,-3233,-4722,-5429,-6013,-6500,-6898, -7635,-8861,-10001,-10317,-9619,-8048,-5860,-3291,-412,2638, 5410,7565,9259,10543,11343,11636,11402,10537,8768,5971, 2477,-732,-2938,-4384,-5462,-6080,-6367,-6901,-7994,-9319, -10243,-10355,-9512,-7941,-5898,-3315,-277,2705,5313,7514, 9253,10492,11247,11572,11458,10683,8701,5533,2217,-479, -2586,-4203,-5148,-5536,-5960,-6809,-8104,-9506,-10327,-10297, -9615,-8258,-6152,-3437,-432,2461,5059,7261,9078,10267, 11007,11648,11871,10871,8464,5389,2359,-404,-2656,-4139, -4879,-5287,-5856,-6991,-8477,-9732,-10385,-10399,-9699,-8210, -6045,-3316,-399,2405,5111,7427,9007,10132,11245,12198, 12148,10681,8322,5440,2391,-428,-2642,-3983,-4539,-4939, -5801,-7114,-8491,-9662,-10385,-10449,-9794,-8235,-5945,-3310, -489,2507,5293,7308,8732,10231,11744,12568,12222,10721, 8385,5513,2416,-470,-2543,-3606,-4168,-4830,-5884,-7217, -8566,-9705,-10540,-10708,-9858,-8193,-6086,-3554,-480,2577, 4949,6722,8459,10280,11744,12417,11996,10537,8253,5303, 2105,-584,-2319,-3309,-3998,-4864,-5991,-7217,-8544,-9876, -10707,-10604,-9673,-8235,-6139,-3256,-130,2542,4645,6534, 8477,10413,11826,12314,11846,10388,7934,4851,1806,-602, -2101,-2994,-3818,-4764,-5773,-6982,-8501,-9794,-10292,-10170, -9569,-8188,-5832,-2925,-84,2279,4344,6461,8647,10474, 11699,12260,11867,10311,7745,4602,1672,-480,-1895,-2977, -3863,-4611,-5691,-7226,-8717,-9690,-10185,-10317,-9705,-8069, -5594,-2799,-309,1922,4178,6439,8586,10408,11705,12301, 11876,10175,7430,4392,1803,-241,-1813,-2795,-3420,-4274, -5644,-7111,-8347,-9366,-10112,-10392,-9688,-7833,-5375,-2889, -527,1781,4068,6301,8415,10295,11748,12495,11947,9882, 7180,4474,1943,-193,-1557,-2306,-3103,-4326,-5756,-7105, -8289,-9477,-10465,-10610,-9571,-7673,-5384,-3024,-709,1575, 3911,6133,8199,10204,11840,12361,11461,9511,7054,4309, 1719,-197,-1318,-2103,-3118,-4414,-5695,-6860,-8171,-9612, -10570,-10527,-9440,-7608,-5443,-3223,-923,1456,3656,5770, 8102,10447,11966,12266,11508,9735,7202,4400,1984,337, -759,-1878,-3178,-4385,-5522,-6917,-8532,-9973,-10770,-10551, -9318,-7490,-5427,-3094,-694,1466,3549,5955,8551,10729, 12046,12345,11591,9655,6905,4162,2050,562,-789,-2135, -3282,-4332,-5511,-6966,-8595,-10007,-10615,-10217,-9125,-7511, -5360,-2998,-869,1183,3514,6148,8693,10691,11941,12288, 11438,9299,6624,4259,2331,642,-877,-2140,-3176,-4157, -5396,-7042,-8847,-10108,-10546,-10283,-9229,-7405,-5221,-3149, -1181,1023,3541,6137,8525,10527,11969,12227,11079,8909, 6520,4350,2366,628,-880,-2074,-2910,-3882,-5422,-7218, -8836,-10002,-10589,-10321,-9047,-7194,-5260,-3407,-1404,959, 3499,6017,8554,10875,12272,12226,10942,8890,6619,4470, 2469,595,-874,-1822,-2711,-3990,-5590,-7263,-8830,-10101, -10689,-10191,-8801,-7117,-5441,-3567,-1384,960,3373,5992, 8792,11033,12135,11933,10660,8794,6756,4608,2386,591, -595,-1522,-2619,-3951,-5470,-7128,-8837,-10170,-10520,-9832, -8556,-7107,-5429,-3446,-1379,724,3224,6084,8894,11068, 12006,11656,10489,8817,6706,4384,2302,776,-346,-1393, -2538,-3780,-5325,-7218,-9089,-10234,-10362,-9805,-8811,-7332, -5535,-3722,-1838,356,3028,6055,8928,10868,11566,11328, 10420,8766,6556,4390,2631,1259,85,-992,-2073,-3367, -5204,-7364,-9075,-9969,-10194,-9814,-8744,-7283,-5683,-3991, -2175,104,3038,6211,8862,10539,11304,11253,10317,8569, 6436,4477,2763,1295,92,-818,-1800,-3390,-5477,-7462, -8996,-9964,-10268,-9851,-8767,-7290,-5736,-4233,-2393,172, 3315,6407,8899,10650,11579,11505,10370,8543,6520,4582, 2731,1249,336,-447,-1719,-3494,-5483,-7365,-8885,-9864, -10216,-9758,-8573,-7215,-5963,-4575,-2521,258,3326,6236, 8700,10560,11485,11235,10042,8429,6503,4400,2592,1450, 673,-293,-1731,-3541,-5477,-7279,-8828,-9902,-10166,-9500, -8340,-7247,-6159,-4591,-2334,441,3376,6232,8834,10666, 11297,10954,9988,8412,6302,4247,2710,1695,844,-286, -1827,-3613,-5451,-7246,-8880,-9876,-9900,-9225,-8367,-7577, -6508,-4761,-2402,278,3249,6387,8952,10494,11085,10909, 9916,8185,6048,4165,2876,1985,1045,-225,-1743,-3461, -5390,-7420,-9049,-9826,-9722,-9170,-8582,-7867,-6656,-4879, -2676,137,3411,6492,8895,10507,11303,11225,10161,8324, 6264,4567,3374,2350,1218,-61,-1543,-3409,-5600,-7747, -9258,-9799,-9750,-9543,-8994,-8001,-6708,-5050,-2638,445, 3723,6642,8970,10607,11408,11173,9881,8014,6177,4697, 3481,2337,1179,-62,-1549,-3563,-5902,-7827,-8964,-9517, -9738,-9541,-8932,-8112,-6992,-5205,-2617,486,3609,6429, 8841,10631,11411,10957,9576,7903,6260,4794,3494,2291, 1275,153,-1558,-3852,-6031,-7633,-8761,-9419,-9543,-9267, -8826,-8233,-7081,-5131,-2440,580,3587,6444,8981,10699, 11209,10559,9183,7669,6217,4770,3456,2524,1649,253, -1737,-3882,-5851,-7522,-8718,-9288,-9358,-9249,-9053,-8527, -7258,-5164,-2486,437,3505,6528,9080,10662,10980,10271, 9123,7784,6207,4676,3663,2884,1795,163,-1809,-3901, -5914,-7550,-8603,-9082,-9213,-9296,-9232,-8546,-7081,-5010, -2469,415,3556,6695,9243,10584,10775,10284,9204,7638, 5985,4749,3922,3035,1825,225,-1726,-3860,-5887,-7456, -8364,-8801,-9136,-9419,-9277,-8501,-7101,-5153,-2759,163, 3526,6689,8939,10126,10495,10051,8821,7274,5939,4959, 4123,3164,1942,345,-1643,-3827,-5806,-7177,-8001,-8609, -9147,-9466,-9264,-8343,-6969,-5227,-2814,331,3691,6567, 8684,10038,10450,9842,8625,7311,6187,5250,4364,3400, 2171,472,-1695,-3932,-5764,-7063,-7959,-8743,-9461,-9749, -9372,-8526,-7378,-5569,-2834,451,3650,6480,8703,10040, 10252,9547,8405,7268,6262,5325,4489,3589,2239,336, -1848,-3942,-5596,-6760,-7751,-8725,-9366,-9452,-9169,-8652, -7532,-5471,-2691,443,3620,6537,8734,9891,9921,9268, 8330,7252,6234,5421,4686,3696,2241,254,-1920,-3810, -5222,-6462,-7665,-8528,-8943,-9111,-9139,-8683,-7468,-5447, -2770,340,3632,6594,8631,9567,9603,9011,8071,7078, 6208,5479,4761,3727,2071,-51,-2015,-3617,-5131,-6581, -7700,-8337,-8771,-9098,-9146,-8602,-7315,-5331,-2691,522, 3828,6586,8436,9315,9355,8797,7945,7017,6194,5624, 4974,3701,1837,-46,-1755,-3455,-5146,-6526,-7533,-8242, -8854,-9326,-9335,-8694,-7480,-5489,-2653,653,3882,6547, 8312,9132,9222,8716,7826,6932,6403,5961,5032,3512, 1803,75,-1696,-3512,-5149,-6410,-7339,-8171,-8853,-9245, -9220,-8704,-7486,-5371,-2476,807,3945,6446,8122,9002, 9062,8395,7482,6909,6576,5980,4890,3459,1912,213, -1645,-3439,-4938,-6174,-7280,-8172,-8811,-9239,-9371,-8880, -7573,-5393,-2408,876,3854,6281,8087,8962,8814,8100, 7522,7190,6816,6054,4937,3619,2029,185,-1678,-3345, -4839,-6173,-7234,-8027,-8697,-9184,-9375,-8912,-7517,-5176, -2217,859,3841,6419,8133,8672,8352,7853,7527,7203, 6683,5913,4869,3491,1824,61,-1624,-3250,-4742,-5995, -7009,-7848,-8540,-9127,-9436,-8946,-7373,-5037,-2228,842, 3939,6482,7917,8272,8087,7852,7568,7139,6625,5941, 4852,3391,1754,52,-1684,-3309,-4773,-6044,-7047,-7832, -8640,-9400,-9624,-8920,-7269,-4999,-2136,1144,4270,6540, 7667,8028,8061,7911,7642,7334,6921,6167,4982,3555, 1945,204,-1522,-3218,-4747,-5918,-6851,-7826,-8859,-9642, -9714,-8911,-7443,-5211,-2158,1281,4248,6266,7403,7908, 7973,7804,7642,7401,6879,6042,4867,3426,1850,196, -1577,-3278,-4604,-5636,-6669,-7871,-8944,-9564,-9561,-8939, -7507,-5060,-1808,1459,4227,6230,7394,7838,7899,7841, 7702,7452,6956,6100,4912,3568,2013,197,-1664,-3249, -4447,-5519,-6755,-8058,-9039,-9624,-9778,-9249,-7569,-4913, -1728,1441,4150,6026,7116,7662,7846,7855,7827,7592, 7010,6111,5009,3685,2036,136,-1646,-3036,-4217,-5546, -6924,-8087,-8986,-9710,-9960,-9260,-7471,-4830,-1676,1411, 3976,5779,6834,7354,7605,7755,7808,7548,6996,6280, 5304,3874,2049,189,-1346,-2649,-4034,-5434,-6693,-7885, -9017,-9835,-9996,-9250,-7405,-4733,-1636,1337,3795,5505, 6510,7056,7438,7681,7626,7319,6900,6354,5331,3729, 1937,357,-1061,-2530,-3955,-5249,-6519,-7803,-8941,-9751, -9922,-9129,-7270,-4570,-1507,1454,3831,5444,6428,7097, 7544,7667,7502,7264,6982,6346,5059,3425,1878,371, -1125,-2557,-3886,-5174,-6493,-7833,-9070,-9926,-9995,-9100, -7154,-4380,-1305,1547,3718,5219,6293,7068,7484,7532, 7500,7504,7175,6288,4949,3449,1854,261,-1224,-2612, -3941,-5280,-6694,-8117,-9399,-10219,-10217,-9247,-7192,-4324, -1259,1419,3489,5119,6408,7175,7453,7629,7840,7834, 7381,6480,5194,3675,2064,494,-976,-2362,-3707,-5109, -6592,-8110,-9456,-10275,-10287,-9239,-7064,-4123,-1227,1266, 3411,5218,6354,6922,7279,7574,7775,7715,7233,6343, 5091,3592,2045,529,-886,-2190,-3500,-4957,-6530,-8084, -9489,-10393,-10370,-9135,-6855,-4143,-1482,1070,3303,4976, 6024,6690,7192,7628,7852,7781,7292,6374,5088,3579, 2072,638,-712,-2010,-3397,-4908,-6463,-8063,-9591,-10535, -10295,-8896,-6758,-4191,-1456,1191,3376,4958,5976,6683, 7240,7682,7919,7833,7319,6378,5102,3595,2111,711, -613,-1985,-3445,-4909,-6549,-8399,-10000,-10691,-10249,-8876, -6836,-4208,-1394,1183,3227,4691,5725,6497,7152,7693, 7977,7898,7376,6418,5105,3634,2235,899,-488,-1828, -3119,-4642,-6543,-8540,-10034,-10594,-10143,-8849,-6820,-4169, -1426,1039,3014,4460,5525,6346,7055,7616,7893,7851, 7351,6343,5044,3720,2364,944,-363,-1521,-2810,-4546, -6593,-8512,-9885,-10414,-10025,-8710,-6606,-3985,-1341,1000, 2877,4256,5314,6190,6866,7398,7773,7710,7071,6118, 4987,3694,2262,954,-134,-1241,-2699,-4594,-6663,-8497, -9802,-10344,-9952,-8581,-6495,-3923,-1307,948,2740,4141, 5216,6047,6811,7483,7793,7583,6987,6143,5032,3642, 2263,1143,156,-1031,-2647,-4616,-6684,-8547,-9891,-10418, -9959,-8554,-6427,-3850,-1322,881,2681,4035,5058,6000, 6884,7526,7735,7530,6990,6122,4913,3538,2303,1316, 327,-936,-2610,-4624,-6733,-8594,-9905,-10423,-9937,-8473, -6334,-3815,-1307,875,2601,3895,4963,6000,6904,7475, 7656,7510,7004,6072,4810,3497,2385,1456,440,-877, -2611,-4660,-6760,-8611,-9916,-10400,-9860,-8365,-6235,-3724, -1211,898,2497,3764,4927,6003,6827,7324,7558,7492, 6967,5951,4711,3508,2496,1597,540,-854,-2637,-4687, -6779,-8637,-9927,-10344,-9764,-8269,-6118,-3584,-1160,798, 2365,3713,4937,5939,6684,7239,7559,7469,6877,5853, 4675,3576,2653,1770,670,-789,-2606,-4699,-6825,-8673, -9896,-10277,-9702,-8163,-5966,-3530,-1306,547,2182,3631, 4850,5831,6630,7268,7587,7423,6756,5745,4651,3682, 2817,1911,784,-689,-2565,-4729,-6849,-8638,-9858,-10243, -9606,-7991,-5811,-3553,-1468,400,2072,3488,4683,5712, 6608,7294,7587,7352,6628,5639,4646,3779,2950,2059, 920,-629,-2580,-4746,-6837,-8625,-9886,-10209,-9428,-7778, -5720,-3587,-1514,374,2020,3386,4574,5655,6618,7337, 7593,7275,6536,5604,4672,3848,3076,2188,969,-696, -2663,-4775,-6893,-8774,-9986,-10138,-9258,-7675,-5735,-3645, -1555,341,1962,3324,4531,5682,6714,7406,7590,7237, 6499,5587,4692,3931,3198,2242,920,-748,-2693,-4853, -7080,-8972,-10028,-10044,-9151,-7631,-5734,-3660,-1575,302, 1880,3236,4514,5733,6783,7439,7581,7210,6440,5536, 4741,4077,3317,2292,1006,-590,-2594,-4910,-7202,-8992, -9945,-9932,-9052,-7574,-5720,-3660,-1625,181,1727,3120, 4467,5718,6747,7378,7480,7033,6253,5464,4810,4151, 3351,2365,1157,-469,-2590,-4979,-7216,-8894,-9753,-9717, -8879,-7453,-5621,-3608,-1677,43,1566,2989,4343,5602, 6659,7272,7281,6798,6130,5485,4850,4147,3386,2492, 1260,-473,-2660,-5043,-7194,-8752,-9526,-9482,-8685,-7288, -5476,-3551,-1720,-42,1471,2874,4244,5564,6633,7150, 7082,6675,6147,5538,4861,4197,3509,2637,1355,-468, -2714,-5072,-7150,-8637,-9399,-9375,-8580,-7194,-5460,-3627, -1830,-193,1272,2711,4203,5601,6575,6970,6913,6595, 6098,5509,4877,4302,3686,2804,1453,-462,-2763,-5094, -7111,-8566,-9310,-9236,-8421,-7095,-5439,-3652,-1932,-402, 1047,2618,4222,5569,6439,6811,6786,6501,6010,5451, 4907,4428,3864,2957,1508,-492,-2794,-5106,-7107,-8522, -9185,-9068,-8267,-6956,-5314,-3589,-2028,-557,999,2677, 4258,5506,6313,6691,6693,6409,5938,5404,4932,4527, 3987,3014,1484,-553,-2867,-5178,-7153,-8490,-9085,-8980, -8171,-6809,-5217,-3651,-2184,-647,1033,2766,4288,5466, 6249,6628,6638,6364,5877,5386,5008,4642,4070,3030, 1449,-631,-2994,-5273,-7143,-8450,-9073,-8933,-8040,-6693, -5216,-3774,-2289,-628,1129,2845,4321,5469,6250,6647, 6655,6357,5904,5500,5188,4812,4197,3111,1422,-756, -3129,-5363,-7225,-8552,-9161,-8935,-7994,-6712,-5339,-3921, -2373,-631,1164,2847,4280,5446,6238,6615,6577,6258, 5885,5564,5286,4978,4394,3217,1435,-775,-3109,-5358, -7287,-8618,-9129,-8808,-7920,-6735,-5456,-4059,-2489,-697, 1092,2757,4204,5392,6161,6462,6386,6117,5779,5518, 5361,5135,4502,3238,1452,-703,-3003,-5270,-7199,-8452, -8878,-8542,-7735,-6684,-5488,-4094,-2494,-714,1026,2691, 4170,5334,6041,6321,6262,5999,5707,5556,5497,5238, 4491,3189,1432,-693,-3022,-5289,-7160,-8304,-8661,-8355, -7653,-6722,-5557,-4132,-2513,-782,977,2673,4125,5245, 5943,6207,6127,5871,5694,5679,5625,5278,4489,3203, 1455,-697,-3074,-5346,-7140,-8172,-8460,-8211,-7615,-6736, -5561,-4167,-2584,-831,946,2618,4053,5159,5844,6034, 5917,5755,5725,5782,5689,5298,4527,3254,1469,-739, -3145,-5377,-7030,-7943,-8247,-8090,-7536,-6678,-5548,-4173, -2596,-830,931,2565,4034,5132,5723,5833,5742,5694, 5742,5785,5676,5296,4553,3283,1444,-834,-3244,-5344, -6864,-7763,-8102,-7972,-7451,-6643,-5549,-4172,-2591,-868, 886,2578,4070,5104,5593,5690,5670,5690,5769,5814, 5706,5353,4647,3356,1414,-914,-3265,-5282,-6763,-7648, -7976,-7856,-7403,-6620,-5505,-4130,-2615,-957,818,2565, 4006,4925,5371,5511,5557,5645,5775,5833,5762,5472, 4759,3379,1365,-948,-3243,-5214,-6651,-7479,-7815,-7761, -7341,-6542,-5431,-4121,-2679,-1006,822,2532,3872,4712, 5115,5288,5428,5559,5700,5802,5809,5563,4801,3352, 1330,-966,-3228,-5129,-6475,-7292,-7688,-7676,-7227,-6422, -5406,-4205,-2769,-1043,821,2516,3785,4560,4975,5198, 5373,5506,5653,5827,5887,5628,4814,3320,1266,-1034, -3238,-5040,-6333,-7193,-7619,-7559,-7107,-6380,-5459,-4287, -2826,-1048,839,2478,3667,4431,4903,5155,5304,5449, 5653,5882,5975,5698,4848,3302,1191,-1072,-3162,-4903, -6245,-7136,-7535,-7474,-7068,-6411,-5536,-4354,-2823,-994, 860,2401,3548,4341,4822,5076,5236,5425,5699,5963, 6077,5790,4882,3262,1153,-1023,-3062,-4817,-6195,-7098, -7497,-7452,-7094,-6501,-5637,-4392,-2763,-937,832,2313, 3455,4237,4707,4973,5174,5419,5733,6067,6228,5879, 4856,3212,1143,-991,-3008,-4764,-6146,-7037,-7416,-7394, -7114,-6580,-5677,-4351,-2688,-903,804,2248,3366,4117, 4584,4891,5111,5383,5783,6218,6364,5932,4824,3172, 1141,-966,-2968,-4734,-6087,-6929,-7295,-7356,-7186,-6682, -5736,-4365,-2710,-951,756,2184,3262,4028,4509,4804, 5039,5403,5924,6387,6459,5943,4781,3145,1150,-953, -2984,-4754,-6030,-6816,-7232,-7379,-7264,-6756,-5783,-4395, -2717,-959,726,2137,3237,4014,4461,4728,5020,5510, 6108,6558,6560,5958,4775,3165,1169,-972,-3005,-4722, -5922,-6699,-7202,-7421,-7307,-6785,-5791,-4365,-2680,-963, 682,2107,3200,3914,4310,4596,4981,5569,6210,6612, 6548,5922,4770,3164,1150,-1014,-2991,-4602,-5774,-6604, -7165,-7435,-7354,-6811,-5760,-4312,-2668,-985,659,2072, 3105,3741,4095,4426,4931,5622,6273,6631,6517,5894, 4769,3138,1097,-1033,-2926,-4490,-5661,-6512,-7127,-7473, -7385,-6782,-5696,-4271,-2663,-985,666,2054,3028,3599, 3944,4356,4961,5706,6336,6660,6539,5931,4757,3070, 1039,-1035,-2880,-4401,-5553,-6439,-7125,-7500,-7377,-6740, -5670,-4268,-2659,-964,694,2036,2914,3420,3808,4316, 5011,5765,6374,6711,6600,5953,4723,3021,1009,-1038, -2827,-4289,-5464,-6435,-7156,-7493,-7334,-6687,-5639,-4263, -2635,-899,728,1976,2746,3219,3698,4304,5045,5820, 6464,6804,6664,5971,4710,2983,985,-997,-2701,-4155, -5399,-6445,-7183,-7484,-7305,-6684,-5662,-4284,-2630,-871, 693,1821,2545,3076,3625,4282,5059,5857,6506,6832, 6679,5967,4665,2907,959,-926,-2569,-4043,-5360,-6435, -7148,-7466,-7326,-6741,-5739,-4303,-2556,-804,661,1719, 2430,2995,3596,4305,5124,5917,6554,6893,6734,5973, 4613,2858,960,-871,-2517,-4041,-5400,-6488,-7190,-7495, -7384,-6826,-5772,-4248,-2466,-769,616,1639,2335,2935, 3622,4393,5217,6029,6683,7024,6818,5972,4549,2840, 1028,-788,-2479,-4056,-5459,-6548,-7252,-7559,-7468,-6876, -5736,-4156,-2401,-767,548,1496,2209,2864,3597,4393, 5244,6108,6821,7141,6847,5916,4489,2834,1091,-698, -2439,-4062,-5445,-6512,-7248,-7617,-7534,-6891,-5701,-4081, -2333,-772,449,1358,2098,2793,3531,4331,5245,6188, 6920,7183,6823,5831,4420,2817,1111,-676,-2441,-4037, -5376,-6449,-7228,-7635,-7563,-6899,-5654,-4004,-2300,-824, 335,1258,2050,2776,3513,4347,5320,6297,7011,7205, 6763,5755,4411,2869,1154,-663,-2427,-3994,-5341,-6419, -7224,-7676,-7610,-6904,-5598,-3943,-2307,-911,236,1185, 2000,2726,3484,4372,5407,6420,7104,7208,6716,5747, 4456,2903,1177,-640,-2390,-3945,-5275,-6404,-7280,-7770, -7676,-6891,-5544,-3930,-2362,-994,163,1113,1919,2649, 3433,4395,5517,6532,7127,7169,6683,5747,4463,2906, 1189,-610,-2325,-3848,-5180,-6380,-7353,-7853,-7677,-6795, -5453,-3906,-2391,-1055,99,1049,1816,2526,3373,4444, 5611,6576,7110,7135,6654,5750,4487,2946,1241,-537, -2210,-3694,-5088,-6386,-7413,-7875,-7623,-6719,-5402,-3913, -2453,-1122,12,906,1603,2342,3295,4453,5638,6584, 7094,7118,6666,5780,4530,2982,1276,-455,-2046,-3539, -5022,-6397,-7422,-7823,-7535,-6661,-5397,-3952,-2487,-1144, -79,731,1428,2243,3275,4476,5660,6577,7069,7101, 6682,5822,4536,2948,1259,-381,-1935,-3481,-5043,-6448, -7431,-7754,-7436,-6611,-5395,-3933,-2456,-1165,-167,603, 1344,2236,3332,4532,5677,6538,7008,7078,6712,5842, 4500,2916,1309,-263,-1845,-3460,-5095,-6497,-7395,-7674, -7381,-6586,-5367,-3900,-2465,-1257,-323,436,1228,2175, 3343,4565,5659,6469,6970,7104,6744,5815,4469,2932, 1407,-104,-1718,-3432,-5095,-6458,-7318,-7622,-7366,-6567, -5331,-3882,-2511,-1364,-474,286,1122,2161,3378,4576, 5614,6440,6997,7133,6712,5722,4379,2944,1527,30, -1663,-3437,-5093,-6418,-7260,-7582,-7320,-6488,-5249,-3832, -2513,-1435,-607,163,1106,2224,3408,4540,5566,6425, 7016,7124,6617,5582,4310,2990,1626,84,-1694,-3488, -5120,-6423,-7256,-7544,-7245,-6393,-5153,-3754,-2496,-1527, -755,63,1090,2218,3365,4480,5541,6478,7073,7108, 6536,5530,4346,3095,1713,112,-1692,-3478,-5102,-6399, -7226,-7498,-7192,-6319,-5043,-3681,-2526,-1631,-846,35, 1083,2186,3293,4433,5572,6563,7100,7034,6445,5514, 4421,3189,1778,146,-1649,-3448,-5073,-6347,-7184,-7483, -7148,-6221,-4948,-3684,-2631,-1778,-948,-1,1045,2094, 3197,4404,5620,6594,7040,6915,6354,5508,4477,3254, 1815,165,-1655,-3451,-5029,-6311,-7176,-7459,-7054,-6097, -4873,-3735,-2782,-1907,-996,-34,957,1991,3148,4442, 5705,6610,6983,6853,6338,5535,4532,3330,1871,183, -1633,-3400,-4984,-6311,-7174,-7411,-6931,-5982,-4861,-3835, -2911,-1982,-1022,-85,852,1908,3162,4540,5769,6598, 6948,6823,6335,5600,4632,3393,1898,209,-1567,-3340, -4977,-6360,-7196,-7320,-6791,-5916,-4927,-3972,-3021,-2040, -1087,-219,717,1865,3216,4595,5796,6593,6899,6772, 6348,5680,4712,3446,1933,268,-1485,-3304,-5020,-6402, -7147,-7184,-6672,-5903,-5022,-4071,-3070,-2076,-1182,-345, 640,1868,3264,4660,5835,6573,6848,6766,6415,5767, 4768,3477,1984,356,-1428,-3342,-5118,-6457,-7104,-7098, -6654,-5968,-5106,-4090,-3080,-2146,-1311,-482,535,1831, 3296,4709,5825,6518,6807,6795,6493,5817,4772,3481, 2042,424,-1441,-3437,-5211,-6454,-7006,-7000,-6630,-5966, -5068,-4058,-3098,-2212,-1422,-599,479,1865,3377,4744, 5771,6421,6757,6804,6506,5798,4761,3530,2142,499, -1460,-3502,-5207,-6318,-6841,-6888,-6545,-5895,-5014,-4049, -3129,-2299,-1534,-682,480,1942,3449,4729,5680,6326, 6721,6788,6452,5743,4765,3631,2257,522,-1518,-3512, -5133,-6207,-6743,-6825,-6512,-5879,-5008,-4069,-3185,-2426, -1690,-780,488,2003,3441,4640,5595,6328,6766,6814, 6424,5730,4873,3808,2342,493,-1563,-3523,-5095,-6177, -6748,-6864,-6567,-5929,-5044,-4110,-3286,-2576,-1816,-777, 586,2095,3476,4650,5637,6420,6838,6805,6409,5823, 5037,3923,2357,435,-1616,-3543,-5083,-6168,-6777,-6918, -6623,-5950,-5044,-4147,-3420,-2738,-1894,-740,662,2134, 3485,4706,5740,6483,6788,6702,6375,5884,5110,3941, 2324,389,-1649,-3540,-5069,-6138,-6764,-6926,-6598,-5879, -4994,-4191,-3538,-2863,-1935,-700,680,2080,3439,4722, 5762,6428,6674,6632,6393,5952,5177,3972,2323,379, -1625,-3464,-4963,-6066,-6739,-6878,-6491,-5755,-4937,-4263, -3660,-2918,-1903,-686,617,2008,3415,4702,5704,6317, 6574,6590,6431,6014,5229,3976,2273,322,-1615,-3383, -4889,-6043,-6722,-6800,-6357,-5647,-4969,-4411,-3782,-2942, -1906,-744,545,1992,3447,4697,5626,6201,6497,6567, 6452,6061,5258,3934,2206,297,-1559,-3304,-4867,-6059, -6678,-6660,-6193,-5613,-5077,-4530,-3832,-2964,-1954,-802, 534,2035,3494,4691,5564,6133,6447,6575,6529,6150, 5278,3910,2198,357,-1448,-3234,-4875,-6053,-6561,-6475, -6075,-5622,-5138,-4561,-3849,-3007,-2032,-860,543,2056, 3492,4663,5498,6051,6405,6619,6626,6225,5286,3882, 2223,448,-1390,-3281,-4956,-6032,-6436,-6356,-6054,-5658, -5173,-4567,-3887,-3092,-2112,-880,547,2067,3489,4603, 5378,5925,6365,6685,6717,6243,5246,3870,2296,521, -1426,-3372,-4990,-5949,-6311,-6292,-6065,-5671,-5161,-4575, -3932,-3135,-2138,-868,594,2120,3481,4508,5244,5823, 6366,6763,6757,6202,5219,3942,2400,554,-1490,-3422, -4931,-5822,-6225,-6258,-6046,-5669,-5190,-4644,-4008,-3213, -2187,-884,616,2123,3423,4385,5121,5817,6469,6826, 6713,6134,5220,4013,2439,508,-1557,-3416,-4833,-5707, -6127,-6172,-5979,-5626,-5192,-4699,-4093,-3307,-2258,-916, 628,2101,3303,4213,5046,5874,6551,6839,6674,6155, 5317,4102,2442,457,-1565,-3366,-4747,-5602,-6015,-6078, -5901,-5580,-5187,-4734,-4157,-3388,-2299,-873,681,2048, 3147,4080,5022,5914,6545,6766,6647,6239,5430,4154, 2432,436,-1572,-3324,-4657,-5503,-5917,-5991,-5863,-5588, -5225,-4812,-4280,-3485,-2283,-806,656,1887,2954,3987, 5024,5908,6466,6704,6674,6312,5493,4172,2412,399, -1590,-3301,-4593,-5428,-5841,-5956,-5835,-5560,-5243,-4925, -4403,-3504,-2195,-740,589,1732,2861,3994,5028,5850, 6413,6725,6749,6403,5568,4211,2420,403,-1574,-3252, -4505,-5352,-5811,-5925,-5752,-5510,-5302,-5042,-4465,-3439, -2107,-750,488,1655,2858,4019,5015,5811,6398,6752, 6807,6458,5602,4217,2403,376,-1553,-3161,-4422,-5307, -5759,-5825,-5680,-5545,-5464,-5178,-4477,-3376,-2107,-852, 372,1601,2836,3993,4968,5757,6359,6752,6848,6521, 5651,4206,2347,357,-1498,-3100,-4401,-5266,-5636,-5663, -5609,-5626,-5609,-5235,-4430,-3343,-2136,-920,312,1562, 2819,3968,4920,5718,6344,6775,6915,6590,5657,4157, 2305,378,-1449,-3096,-4405,-5192,-5465,-5529,-5634,-5751, -5682,-5224,-4379,-3322,-2164,-971,282,1550,2790,3920, 4866,5653,6315,6825,7014,6632,5625,4113,2327,452, -1429,-3116,-4366,-5051,-5339,-5535,-5766,-5890,-5733,-5199, -4352,-3340,-2213,-1026,226,1494,2726,3840,4762,5563, 6307,6890,7082,6645,5603,4149,2430,523,-1430,-3083, -4213,-4855,-5225,-5551,-5847,-5950,-5740,-5175,-4362,-3385, -2274,-1087,180,1468,2681,3749,4651,5520,6371,6984, 7091,6603,5612,4228,2481,491,-1457,-3012,-4049,-4694, -5156,-5586,-5899,-5973,-5744,-5178,-4377,-3428,-2349,-1139, 174,1462,2614,3607,4535,5530,6453,7005,7042,6588, 5667,4270,2439,410,-1476,-2913,-3884,-4565,-5119,-5590, -5908,-5960,-5700,-5133,-4360,-3454,-2395,-1155,169,1399, 2448,3435,4484,5578,6473,6961,7017,6625,5714,4247, 2337,315,-1451,-2785,-3724,-4452,-5067,-5575,-5898,-5921, -5635,-5092,-4373,-3505,-2410,-1113,187,1309,2309,3389, 4541,5625,6479,6970,7086,6724,5745,4174,2227,260, -1425,-2709,-3659,-4449,-5128,-5667,-5977,-5952,-5627,-5119, -4452,-3538,-2345,-1053,160,1217,2272,3441,4624,5668, 6496,7042,7207,6825,5752,4101,2164,267,-1363,-2628, -3617,-4466,-5215,-5777,-6025,-5945,-5657,-5212,-4526,-3510, -2285,-1075,44,1102,2225,3443,4616,5629,6497,7124, 7315,6879,5746,4051,2141,301,-1262,-2499,-3515,-4443, -5250,-5761,-5937,-5901,-5728,-5314,-4545,-3470,-2288,-1160, -89,1010,2173,3365,4504,5565,6518,7213,7417,6912, 5723,4013,2115,330,-1142,-2355,-3454,-4472,-5233,-5659, -5857,-5924,-5815,-5351,-4500,-3424,-2323,-1252,-156,982, 2138,3291,4422,5544,6576,7298,7471,6915,5664,3933, 2084,432,-976,-2270,-3470,-4483,-5155,-5578,-5851,-5988, -5855,-5293,-4422,-3421,-2400,-1350,-223,934,2076,3227, 4405,5600,6665,7369,7499,6886,5561,3853,2137,597, -846,-2243,-3472,-4429,-5073,-5563,-5931,-6074,-5860,-5245, -4406,-3462,-2466,-1407,-277,859,1981,3154,4394,5629, 6728,7454,7518,6776,5413,3815,2248,727,-778,-2202, -3383,-4293,-4994,-5585,-6006,-6109,-5842,-5237,-4445,-3531, -2516,-1427,-318,790,1903,3085,4344,5653,6848,7564, 7496,6652,5325,3844,2347,790,-765,-2138,-3251,-4163, -4944,-5609,-6037,-6092,-5811,-5242,-4486,-3570,-2539,-1468, -378,728,1820,2981,4315,5753,6993,7618,7418,6559, 5332,3933,2404,793,-759,-2068,-3147,-4094,-4945,-5633, -6024,-6071,-5815,-5261,-4496,-3600,-2597,-1527,-443,606, 1643,2837,4318,5855,7056,7542,7290,6512,5375,3993, 2425,808,-686,-1940,-3021,-4037,-4939,-5611,-5987,-6053, -5787,-5229,-4494,-3635,-2636,-1566,-544,420,1443,2763, 4406,5973,7066,7446,7216,6517,5427,4025,2442,870, -551,-1802,-2945,-3996,-4902,-5582,-5966,-6009,-5740,-5229, -4535,-3660,-2629,-1584,-673,210,1312,2798,4530,6047, 7032,7389,7204,6547,5442,4008,2446,941,-453,-1733, -2906,-3971,-4897,-5578,-5937,-5959,-5720,-5272,-4582,-3647, -2594,-1654,-871,7,1243,2839,4566,6020,6945,7341, 7210,6533,5392,3977,2467,1000,-380,-1636,-2812,-3912, -4865,-5537,-5872,-5915,-5734,-5286,-4524,-3534,-2562,-1783, -1063,-101,1235,2889,4565,5958,6895,7317,7178,6473, 5351,3972,2490,1050,-290,-1534,-2743,-3877,-4823,-5450, -5788,-5921,-5793,-5260,-4407,-3443,-2615,-1963,-1242,-174, 1249,2888,4514,5920,6880,7283,7120,6438,5336,3973, 2509,1111,-194,-1471,-2747,-3891,-4751,-5349,-5752,-5952, -5787,-5156,-4268,-3401,-2727,-2138,-1348,-205,1244,2856, 4479,5880,6824,7223,7059,6392,5286,3940,2538,1206, -117,-1477,-2781,-3839,-4649,-5290,-5761,-5971,-5711,-4989, -4134,-3410,-2825,-2209,-1364,-200,1270,2895,4505,5865, 6791,7204,7045,6336,5208,3910,2608,1274,-132,-1544, -2800,-3788,-4608,-5331,-5864,-5999,-5608,-4877,-4124,-3508, -2958,-2314,-1431,-224,1282,2934,4518,5858,6796,7238, 7043,6269,5177,3978,2707,1314,-153,-1543,-2709,-3670, -4577,-5409,-5933,-5954,-5493,-4818,-4159,-3616,-3095,-2451, -1531,-254,1295,2929,4476,5852,6838,7231,6966,6214, 5205,4076,2779,1325,-148,-1450,-2541,-3558,-4591,-5459, -5909,-5846,-5396,-4773,-4194,-3706,-3223,-2583,-1612,-281, 1265,2885,4485,5918,6879,7190,6898,6214,5298,4178, 2807,1310,-103,-1313,-2434,-3558,-4648,-5486,-5845,-5734, -5311,-4749,-4251,-3833,-3381,-2689,-1651,-340,1183,2850, 4532,5970,6853,7094,6832,6253,5393,4219,2793,1342, 21,-1176,-2375,-3579,-4676,-5457,-5771,-5646,-5212,-4714, -4323,-3957,-3462,-2720,-1695,-427,1106,2828,4550,5938, 6724,6963,6808,6311,5414,4182,2800,1439,178,-1054, -2326,-3566,-4655,-5416,-5696,-5517,-5111,-4724,-4413,-4049, -3519,-2767,-1790,-527,1068,2864,4565,5836,6583,6902, 6826,6312,5348,4091,2779,1502,249,-1013,-2306,-3570, -4668,-5374,-5560,-5364,-5042,-4752,-4483,-4101,-3560,-2838, -1889,-563,1142,2958,4559,5757,6543,6947,6884,6291, 5272,4048,2788,1547,302,-968,-2313,-3629,-4698,-5296, -5414,-5255,-5017,-4780,-4488,-4085,-3590,-2934,-1949,-514, 1234,2988,4493,5688,6557,7000,6901,6287,5299,4112, 2867,1648,408,-931,-2369,-3714,-4717,-5232,-5352,-5275, -5127,-4886,-4551,-4191,-3771,-3102,-1998,-459,1277,2955, 4435,5695,6607,7017,6887,6286,5309,4143,2951,1762, 497,-943,-2450,-3771,-4680,-5141,-5324,-5333,-5202,-4938, -4650,-4366,-3963,-3202,-1967,-409,1265,2924,4454,5749, 6660,7059,6922,6271,5279,4166,3055,1899,562,-975, -2494,-3724,-4553,-5034,-5279,-5306,-5138,-4893,-4710,-4503, -4053,-3196,-1945,-432,1220,2896,4441,5738,6675,7070, 6897,6203,5234,4208,3172,1994,553,-1035,-2488,-3622, -4426,-4956,-5222,-5223,-5051,-4905,-4824,-4615,-4096,-3206, -1975,-460,1201,2860,4395,5715,6670,7039,6806,6103, 5212,4295,3267,1988,471,-1086,-2453,-3536,-4364,-4908, -5103,-5057,-4969,-4945,-4892,-4650,-4104,-3198,-1949,-438, 1195,2829,4369,5709,6648,6956,6667,6025,5264,4408, 3326,1929,387,-1087,-2399,-3512,-4357,-4829,-4959,-4947, -4957,-4992,-4953,-4714,-4147,-3208,-1938,-445,1156,2800, 4394,5748,6600,6801,6506,5970,5327,4473,3300,1868, 378,-1066,-2420,-3550,-4318,-4709,-4854,-4909,-4986,-5070, -5046,-4811,-4210,-3232,-1955,-503,1097,2818,4482,5806, 6546,6673,6447,6035,5430,4509,3288,1904,443,-1053, -2438,-3526,-4232,-4589,-4754,-4850,-4973,-5087,-5094,-4834, -4189,-3218,-1997,-580,1077,2873,4557,5781,6417,6566, 6458,6112,5459,4509,3331,1974,486,-1038,-2396,-3447, -4114,-4479,-4662,-4793,-4966,-5140,-5144,-4823,-4167,-3254, -2101,-677,1077,2934,4554,5649,6256,6503,6451,6085, 5422,4507,3357,1972,442,-1073,-2392,-3395,-4044,-4382, -4574,-4771,-5036,-5249,-5200,-4819,-4178,-3347,-2224,-699, 1156,3001,4501,5544,6228,6542,6496,6118,5468,4575, 3398,1964,409,-1082,-2366,-3318,-3922,-4237,-4482,-4790, -5133,-5329,-5214,-4822,-4270,-3506,-2315,-656,1216,2980, 4422,5479,6204,6535,6497,6149,5523,4615,3400,1954, 409,-1066,-2318,-3209,-3746,-4073,-4410,-4833,-5203,-5310, -5154,-4858,-4422,-3628,-2325,-623,1210,2912,4355,5432, 6135,6457,6452,6147,5528,4603,3386,1945,392,-1072, -2279,-3091,-3578,-3957,-4415,-4885,-5174,-5220,-5132,-4947, -4509,-3614,-2242,-549,1242,2931,4373,5415,6099,6439, 6463,6157,5538,4609,3375,1904,320,-1135,-2255,-2960, -3448,-3951,-4501,-4923,-5136,-5223,-5240,-5097,-4594,-3609, -2212,-524,1270,2952,4349,5360,6055,6430,6467,6181, 5563,4627,3373,1845,227,-1162,-2153,-2824,-3417,-4008, -4535,-4897,-5111,-5283,-5366,-5200,-4646,-3647,-2231,-517, 1284,2923,4275,5284,5996,6415,6484,6220,5633,4706, 3393,1783,199,-1064,-1968,-2695,-3393,-4003,-4465,-4803, -5093,-5329,-5425,-5246,-4684,-3675,-2225,-510,1260,2858, 4184,5218,5959,6374,6460,6244,5726,4751,3328,1712, 229,-914,-1819,-2627,-3357,-3935,-4380,-4754,-5082,-5351, -5471,-5308,-4734,-3679,-2202,-499,1219,2769,4108,5170, 5883,6264,6412,6286,5761,4688,3198,1661,307,-796, -1763,-2614,-3320,-3865,-4306,-4707,-5056,-5365,-5527,-5375, -4772,-3666,-2159,-479,1193,2765,4108,5127,5784,6211, 6463,6362,5739,4564,3110,1690,413,-716,-1712,-2557, -3248,-3777,-4212,-4638,-5044,-5403,-5613,-5455,-4787,-3637, -2160,-507,1191,2794,4084,5021,5686,6217,6541,6372, 5621,4435,3070,1731,474,-665,-1659,-2492,-3161,-3706, -4168,-4618,-5072,-5498,-5710,-5492,-4762,-3619,-2168,-500, 1231,2788,3983,4878,5638,6282,6587,6328,5528,4379, 3080,1779,534,-609,-1598,-2435,-3104,-3649,-4101,-4587, -5122,-5581,-5742,-5472,-4756,-3652,-2185,-447,1276,2715, 3843,4817,5693,6373,6603,6281,5473,4364,3120,1843, 614,-517,-1529,-2392,-3054,-3558,-4021,-4584,-5188,-5626, -5739,-5478,-4823,-3706,-2174,-428,1191,2542,3718,4808, 5752,6412,6584,6215,5417,4339,3126,1897,698,-444, -1487,-2341,-2958,-3443,-3980,-4624,-5241,-5633,-5753,-5553, -4888,-3674,-2096,-440,1070,2406,3639,4813,5784,6409, 6541,6153,5347,4279,3122,1952,752,-427,-1443,-2218, -2777,-3317,-3951,-4636,-5216,-5622,-5819,-5614,-4854,-3577, -2023,-461,989,2329,3619,4822,5779,6371,6476,6059, 5241,4227,3148,1986,751,-432,-1374,-2053,-2630,-3262, -3930,-4596,-5193,-5685,-5921,-5645,-4796,-3512,-2028,-545, 886,2272,3611,4822,5791,6356,6400,5960,5187,4259, 3217,2006,748,-375,-1237,-1929,-2592,-3248,-3893,-4556, -5230,-5794,-6012,-5657,-4748,-3490,-2086,-641,799,2220, 3592,4842,5815,6340,6315,5879,5199,4341,3249,1978, 765,-263,-1107,-1858,-2555,-3189,-3833,-4543,-5301,-5924, -6140,-5738,-4819,-3576,-2177,-717,758,2247,3710,5026, 5975,6432,6374,6000,5371,4455,3263,2002,833,-191, -1076,-1881,-2601,-3241,-3923,-4736,-5560,-6146,-6282,-5823, -4883,-3635,-2241,-781,733,2320,3902,5247,6114,6513, 6510,6184,5506,4497,3276,2054,909,-154,-1101,-1913, -2611,-3283,-4066,-4977,-5819,-6317,-6324,-5793,-4826,-3596, -2259,-855,700,2381,3984,5244,6052,6475,6537,6207, 5475,4433,3268,2090,957,-128,-1065,-1817,-2482,-3212, -4098,-5077,-5924,-6394,-6359,-5796,-4824,-3647,-2382,-959, 700,2440,3985,5171,5980,6451,6533,6168,5408,4408, 3300,2130,973,-95,-979,-1679,-2365,-3178,-4137,-5136, -5994,-6450,-6365,-5755,-4828,-3759,-2503,-977,755,2466, 3948,5117,5954,6456,6524,6137,5412,4465,3361,2162, 1001,-19,-843,-1540,-2272,-3147,-4151,-5179,-6039,-6429, -6257,-5671,-4854,-3848,-2546,-938,801,2443,3874,5068, 5945,6437,6474,6103,5428,4494,3368,2162,1028,70, -727,-1444,-2198,-3102,-4189,-5275,-6075,-6358,-6160,-5655, -4925,-3899,-2544,-921,777,2385,3827,5049,5913,6368, 6398,6052,5412,4485,3335,2145,1060,138,-638,-1332, -2097,-3099,-4283,-5361,-6063,-6283,-6128,-5694,-4990,-3924, -2535,-936,729,2359,3841,5071,5908,6338,6400,6089, 5433,4474,3342,2178,1109,224,-488,-1168,-2023,-3170, -4394,-5405,-6024,-6257,-6177,-5793,-5067,-3973,-2582,-995, 672,2320,3817,5015,5830,6298,6404,6102,5420,4465, 3354,2195,1158,352,-295,-1017,-2011,-3244,-4443,-5379, -5967,-6253,-6230,-5839,-5074,-3971,-2610,-1039,643,2296, 3743,4899,5735,6254,6365,6060,5399,4463,3329,2184, 1233,531,-84,-900,-2019,-3272,-4417,-5308,-5903,-6236, -6227,-5815,-5036,-3967,-2616,-1030,667,2276,3681,4830, 5689,6200,6323,6041,5392,4414,3251,2160,1346,736, 68,-867,-2049,-3285,-4388,-5264,-5890,-6242,-6213,-5803, -5065,-4005,-2615,-1015,636,2201,3614,4783,5630,6140, 6291,6048,5364,4310,3148,2180,1489,886,133,-894, -2088,-3291,-4368,-5263,-5907,-6239,-6220,-5850,-5119,-4012, -2593,-1011,603,2159,3568,4729,5574,6123,6326,6061, 5278,4196,3120,2283,1644,1009,173,-888,-2063,-3251, -4354,-5253,-5884,-6225,-6254,-5900,-5129,-3994,-2595,-1039, 571,2128,3500,4622,5503,6133,6350,6009,5161,4103, 3146,2416,1793,1103,223,-823,-1994,-3214,-4312,-5195, -5835,-6223,-6265,-5892,-5102,-3985,-2625,-1068,549,2060, 3374,4518,5481,6164,6347,5909,5046,4062,3220,2535, 1888,1168,286,-787,-1989,-3202,-4273,-5167,-5863,-6283, -6299,-5885,-5103,-3997,-2608,-1024,562,1995,3290,4502, 5554,6243,6335,5808,4964,4082,3296,2608,1957,1227, 307,-812,-2026,-3200,-4264,-5196,-5935,-6344,-6331,-5923, -5152,-4004,-2568,-1008,505,1886,3215,4523,5630,6259, 6247,5715,4930,4103,3349,2690,2061,1298,312,-829, -2013,-3155,-4253,-5225,-5940,-6333,-6351,-5967,-5173,-3973, -2526,-1023,397,1775,3196,4569,5644,6178,6131,5629, 4890,4121,3439,2835,2180,1352,335,-771,-1936,-3100, -4226,-5191,-5903,-6328,-6390,-5996,-5148,-3906,-2498,-1110, 258,1707,3219,4610,5617,6090,6037,5545,4843,4149, 3556,2961,2245,1380,396,-692,-1865,-3060,-4180,-5136, -5867,-6345,-6441,-6009,-5094,-3873,-2569,-1268,122,1645, 3205,4580,5556,5996,5924,5441,4808,4225,3671,3036, 2294,1452,485,-617,-1810,-3019,-4132,-5101,-5889,-6415, -6470,-5956,-5012,-3860,-2653,-1371,59,1623,3187,4551, 5496,5879,5753,5320,4793,4280,3720,3070,2336,1512, 539,-584,-1798,-2987,-4079,-5088,-5954,-6467,-6431,-5850, -4933,-3862,-2708,-1414,45,1633,3222,4586,5451,5750, 5622,5269,4814,4302,3728,3093,2380,1558,558,-594, -1776,-2923,-4043,-5123,-6004,-6442,-6320,-5744,-4894,-3888, -2753,-1465,8,1655,3275,4586,5371,5638,5554,5263, 4847,4337,3762,3148,2445,1584,550,-575,-1704,-2857, -4056,-5199,-6045,-6404,-6241,-5686,-4874,-3903,-2825,-1554, -13,1686,3286,4516,5244,5529,5497,5252,4848,4362, 3836,3238,2503,1582,553,-517,-1627,-2834,-4112,-5263, -6067,-6392,-6221,-5649,-4870,-3964,-2909,-1595,28,1753, 3305,4455,5149,5459,5471,5237,4852,4409,3912,3300, 2504,1563,576,-458,-1612,-2889,-4182,-5311,-6078,-6366, -6158,-5605,-4899,-4049,-2978,-1578,98,1812,3285,4383, 5084,5410,5429,5215,4885,4493,3989,3307,2469,1575, 646,-409,-1621,-2943,-4244,-5351,-6068,-6287,-6065,-5578, -4959,-4150,-3034,-1549,146,1800,3218,4300,5013,5343, 5366,5206,4959,4595,4046,3319,2516,1672,747,-338, -1595,-2957,-4296,-5377,-6023,-6193,-6006,-5618,-5067,-4245, -3052,-1524,145,1752,3152,4233,4921,5230,5292,5217, 5014,4627,4061,3362,2609,1783,844,-261,-1571,-2990, -4339,-5367,-5937,-6084,-5961,-5675,-5155,-4284,-3042,-1514, 122,1716,3112,4141,4768,5086,5233,5221,5018,4614, 4070,3407,2678,1870,937,-192,-1545,-3025,-4357,-5309, -5812,-5979,-5932,-5707,-5178,-4261,-3008,-1512,119,1712, 3063,4010,4624,4999,5205,5210,5004,4597,4052,3404, 2700,1930,1023,-138,-1552,-3044,-4319,-5188,-5669,-5905, -5943,-5721,-5162,-4241,-3005,-1490,164,1698,2960,3870, 4513,4934,5166,5178,4976,4575,4029,3399,2738,2018, 1101,-135,-1601,-3069,-4241,-5034,-5543,-5861,-5937,-5708, -5161,-4257,-2992,-1433,204,1673,2867,3772,4439,4889, 5131,5166,4975,4565,4014,3441,2844,2138,1147,-192, -1695,-3091,-4168,-4964,-5521,-5870,-5951,-5751,-5226,-4290, -2962,-1394,204,1628,2799,3712,4387,4860,5148,5210, 4994,4556,4033,3524,2991,2256,1153,-260,-1739,-3061, -4115,-4934,-5512,-5869,-5988,-5828,-5301,-4316,-2956,-1405, 152,1534,2684,3584,4285,4805,5129,5190,4954,4521, 4078,3665,3158,2321,1132,-274,-1702,-2984,-4034,-4833, -5407,-5800,-5987,-5855,-5285,-4265,-2918,-1398,113,1458, 2567,3465,4196,4751,5084,5100,4838,4472,4145,3794, 3234,2318,1099,-286,-1685,-2930,-3934,-4711,-5309,-5752, -5980,-5826,-5226,-4195,-2848,-1369,97,1407,2498,3406, 4172,4756,5056,4997,4736,4474,4226,3857,3235,2284, 1044,-348,-1726,-2924,-3885,-4651,-5300,-5787,-6016,-5826, -5193,-4149,-2800,-1344,87,1341,2407,3362,4196,4776, 4985,4893,4697,4525,4312,3920,3249,2270,1001,-402, -1726,-2862,-3807,-4611,-5293,-5807,-6028,-5826,-5175,-4112, -2761,-1314,43,1236,2327,3358,4213,4726,4881,4811, 4700,4584,4390,3999,3308,2272,970,-414,-1679,-2772, -3717,-4562,-5282,-5802,-6003,-5802,-5139,-4047,-2703,-1331, -61,1135,2304,3377,4192,4626,4767,4751,4694,4605, 4438,4042,3310,2220,911,-430,-1645,-2711,-3673,-4547, -5285,-5800,-6022,-5800,-5071,-3947,-2658,-1377,-137,1112, 2343,3398,4149,4544,4690,4709,4692,4658,4504,4077, 3279,2153,863,-421,-1593,-2667,-3651,-4537,-5306,-5867, -6097,-5808,-5009,-3902,-2696,-1471,-197,1118,2367,3387, 4107,4491,4643,4710,4759,4775,4619,4135,3272,2129, 875,-367,-1537,-2629,-3615,-4536,-5374,-5985,-6162,-5789, -4974,-3938,-2805,-1585,-261,1094,2348,3372,4063,4427, 4599,4718,4839,4886,4701,4142,3236,2118,897,-329, -1489,-2541,-3537,-4519,-5422,-6023,-6125,-5711,-4944,-3981, -2875,-1637,-284,1081,2331,3331,3992,4353,4556,4750, 4939,4990,4736,4119,3214,2100,891,-307,-1422,-2445, -3491,-4553,-5472,-6012,-6059,-5668,-4955,-4030,-2938,-1691, -316,1061,2302,3257,3877,4227,4495,4783,5024,5049, 4746,4125,3227,2111,918,-233,-1290,-2335,-3469,-4585, -5473,-5962,-5997,-5631,-4977,-4098,-3016,-1755,-355,1048, 2274,3162,3720,4098,4448,4800,5054,5064,4764,4143, 3216,2098,955,-119,-1163,-2276,-3466,-4579,-5429,-5878, -5907,-5574,-4963,-4125,-3054,-1774,-334,1074,2233,3041, 3577,4022,4454,4836,5090,5114,4820,4151,3172,2073, 1006,-26,-1110,-2295,-3515,-4609,-5413,-5828,-5851,-5539, -4962,-4157,-3085,-1751,-283,1086,2158,2929,3499,3995, 4464,4859,5139,5171,4820,4088,3119,2091,1085,56, -1070,-2303,-3543,-4606,-5360,-5751,-5777,-5515,-5008,-4225, -3125,-1753,-296,1016,2033,2813,3427,3950,4443,4895, 5212,5201,4777,4020,3100,2148,1192,149,-1028,-2293, -3535,-4580,-5290,-5650,-5706,-5528,-5087,-4292,-3137,-1743, -340,908,1919,2697,3311,3865,4430,4949,5260,5198, 4732,3986,3130,2244,1305,234,-990,-2287,-3530,-4540, -5219,-5572,-5686,-5577,-5145,-4290,-3082,-1705,-357,851, 1838,2587,3207,3821,4449,4990,5250,5123,4638,3942, 3148,2297,1363,280,-967,-2278,-3504,-4457,-5092,-5470, -5658,-5588,-5111,-4220,-3026,-1675,-349,817,1746,2471, 3135,3825,4505,5025,5217,5042,4560,3898,3157,2342, 1411,307,-969,-2291,-3466,-4352,-4975,-5417,-5651,-5564, -5059,-4174,-2994,-1653,-347,764,1646,2370,3087,3847, 4562,5054,5200,5007,4534,3895,3194,2405,1466,301, -1034,-2331,-3424,-4281,-4952,-5447,-5692,-5587,-5066,-4155, -2961,-1630,-371,674,1525,2292,3085,3903,4619,5074, 5183,4974,4508,3904,3242,2475,1479,232,-1100,-2338, -3386,-4252,-4965,-5484,-5742,-5638,-5108,-4161,-2934,-1611, -416,568,1415,2248,3123,3975,4663,5082,5161,4930, 4475,3940,3329,2531,1457,182,-1107,-2294,-3332,-4210, -4947,-5493,-5759,-5662,-5107,-4120,-2876,-1603,-475,467, 1330,2217,3139,3999,4688,5084,5111,4859,4463,4000, 3397,2537,1421,165,-1076,-2222,-3257,-4151,-4906,-5482, -5761,-5645,-5048,-4030,-2799,-1604,-547,384,1274,2193, 3139,4032,4718,5047,5027,4806,4488,4065,3433,2530, 1407,185,-1029,-2159,-3184,-4101,-4898,-5516,-5809,-5658, -5015,-3977,-2807,-1674,-644,297,1212,2167,3168,4086, 4708,4975,4951,4797,4549,4126,3449,2511,1395,197, -1000,-2107,-3130,-4071,-4916,-5585,-5885,-5688,-4997,-3971, -2853,-1758,-758,166,1121,2159,3212,4091,4644,4884, 4912,4821,4599,4154,3451,2504,1390,208,-947,-2015, -3028,-3999,-4912,-5599,-5870,-5634,-4936,-3935,-2844,-1808, -877,42,1059,2176,3238,4046,4546,4792,4881,4836, 4626,4174,3450,2496,1396,248,-854,-1891,-2913,-3946, -4893,-5559,-5794,-5541,-4850,-3863,-2824,-1867,-982,-28, 1062,2212,3235,3990,4469,4736,4861,4847,4649,4181, 3448,2479,1383,277,-771,-1805,-2887,-3978,-4913,-5562, -5778,-5489,-4784,-3828,-2863,-1970,-1079,-46,1104,2250, 3227,3941,4413,4716,4874,4879,4689,4216,3460,2474, 1407,361,-675,-1756,-2890,-4003,-4952,-5602,-5793,-5463, -4743,-3852,-2971,-2116,-1180,-78,1114,2247,3181,3872, 4355,4685,4874,4923,4745,4245,3431,2461,1465,463, -581,-1690,-2849,-3980,-4965,-5612,-5747,-5371,-4684,-3882, -3077,-2236,-1259,-113,1084,2191,3102,3796,4285,4645, 4892,4976,4781,4231,3410,2492,1547,568,-469,-1587, -2785,-3968,-4973,-5568,-5626,-5234,-4605,-3887,-3140,-2286, -1263,-98,1074,2145,3026,3704,4210,4624,4928,5003, 4756,4175,3389,2522,1602,655,-373,-1520,-2786,-4024, -4997,-5508,-5511,-5137,-4586,-3946,-3215,-2333,-1279,-106, 1062,2107,2947,3608,4154,4622,4940,4978,4690,4120, 3372,2534,1648,745,-290,-1491,-2821,-4076,-5001,-5440, -5427,-5098,-4627,-4029,-3288,-2388,-1305,-107,1053,2059, 2869,3541,4140,4636,4931,4935,4649,4086,3353,2550, 1731,845,-209,-1471,-2843,-4076,-4934,-5312,-5314,-5046, -4620,-4053,-3326,-2404,-1294,-93,1028,1967,2761,3468, 4109,4614,4901,4901,4600,4030,3311,2556,1791,922, -169,-1491,-2886,-4073,-4867,-5220,-5236,-5008,-4627,-4090, -3363,-2398,-1255,-83,965,1863,2675,3427,4090,4609, 4888,4872,4550,3985,3299,2607,1889,1007,-143,-1518, -2904,-4048,-4813,-5162,-5198,-5018,-4693,-4177,-3405,-2378, -1221,-96,920,1822,2652,3442,4139,4669,4930,4871, 4511,3952,3330,2714,2014,1065,-150,-1539,-2894,-4007, -4736,-5074,-5124,-5016,-4756,-4232,-3401,-2350,-1232,-155, 845,1751,2603,3412,4136,4677,4924,4815,4425,3904, 3366,2805,2082,1074,-192,-1576,-2903,-3966,-4649,-4978, -5086,-5045,-4788,-4232,-3363,-2300,-1212,-174,787,1681, 2544,3387,4139,4670,4866,4708,4327,3870,3406,2865, 2111,1072,-231,-1636,-2926,-3905,-4533,-4899,-5087,-5087, -4809,-4208,-3311,-2253,-1190,-178,753,1635,2519,3406, 4173,4665,4791,4610,4271,3887,3467,2919,2140,1065, -276,-1679,-2909,-3824,-4441,-4855,-5101,-5120,-4832,-4198, -3287,-2253,-1217,-239,669,1575,2514,3438,4195,4629, 4704,4535,4267,3939,3554,3020,2208,1067,-301,-1678, -2840,-3723,-4365,-4836,-5123,-5136,-4814,-4169,-3269,-2242, -1246,-303,592,1536,2541,3483,4191,4566,4625,4476, 4240,3970,3634,3100,2232,1031,-339,-1657,-2766,-3644, -4328,-4843,-5141,-5128,-4783,-4120,-3223,-2227,-1273,-376, 537,1534,2570,3500,4149,4489,4532,4391,4200,3997, 3690,3112,2180,953,-382,-1628,-2701,-3602,-4333,-4876, -5173,-5146,-4782,-4098,-3194,-2253,-1360,-478,494,1549, 2600,3507,4123,4415,4440,4329,4219,4081,3768,3134, 2152,922,-354,-1545,-2607,-3540,-4313,-4892,-5200,-5171, -4766,-4054,-3181,-2304,-1452,-545,466,1559,2631,3516, 4096,4345,4379,4334,4300,4210,3869,3173,2162,944, -292,-1459,-2524,-3475,-4291,-4911,-5242,-5179,-4733,-4022, -3211,-2377,-1537,-614,434,1565,2646,3506,4042,4270, 4333,4365,4398,4310,3932,3190,2168,984,-226,-1383, -2455,-3429,-4294,-4949,-5259,-5152,-4698,-4024,-3268,-2472, -1637,-696,399,1560,2636,3454,3939,4157,4269,4381, 4467,4371,3957,3196,2183,1027,-154,-1289,-2378,-3403, -4313,-4962,-5231,-5093,-4645,-4011,-3287,-2521,-1691,-713, 412,1581,2633,3390,3823,4052,4237,4422,4526,4399, 3953,3189,2182,1049,-96,-1216,-2330,-3408,-4336,-4954, -5185,-5024,-4581,-3973,-3293,-2569,-1739,-724,444,1622, 2618,3301,3700,3977,4232,4454,4563,4416,3943,3148, 2150,1063,-44,-1176,-2335,-3449,-4373,-4964,-5151,-4960, -4524,-3953,-3327,-2632,-1784,-730,485,1658,2574,3189, 3607,3934,4237,4489,4611,4441,3938,3124,2157,1119, 35,-1123,-2334,-3478,-4399,-4952,-5100,-4903,-4487,-3964, -3388,-2697,-1810,-697,530,1643,2493,3082,3524,3890, 4244,4537,4639,4429,3893,3098,2184,1191,101,-1083, -2316,-3464,-4369,-4889,-5014,-4818,-4436,-3969,-3454,-2768, -1814,-648,551,1597,2401,2971,3416,3839,4249,4562, 4639,4404,3860,3112,2235,1257,143,-1080,-2332,-3478, -4354,-4855,-4951,-4757,-4429,-4045,-3549,-2807,-1792,-600, 576,1579,2339,2891,3355,3831,4292,4600,4642,4377, 3859,3155,2318,1331,194,-1069,-2340,-3489,-4341,-4796, -4863,-4710,-4461,-4132,-3619,-2823,-1782,-585,572,1522, 2233,2777,3294,3829,4305,4590,4594,4319,3837,3176, 2365,1379,223,-1057,-2353,-3495,-4295,-4684,-4747,-4646, -4456,-4143,-3614,-2793,-1715,-520,594,1472,2133,2695, 3261,3831,4291,4537,4520,4263,3822,3198,2395,1404, 226,-1087,-2397,-3504,-4235,-4583,-4668,-4615,-4465,-4164, -3616,-2753,-1633,-450,597,1415,2065,2670,3286,3882, 4326,4539,4500,4257,3828,3214,2423,1426,204,-1160, -2463,-3507,-4176,-4516,-4641,-4643,-4537,-4244,-3665,-2743, -1608,-464,517,1306,1969,2630,3301,3905,4330,4525, 4487,4253,3848,3268,2491,1462,190,-1195,-2483,-3475, -4122,-4465,-4627,-4689,-4631,-4329,-3693,-2723,-1590,-496, 433,1207,1912,2631,3322,3916,4324,4510,4480,4263, 3909,3379,2590,1502,168,-1209,-2459,-3406,-4036,-4399, -4624,-4739,-4701,-4372,-3679,-2678,-1560,-530,359,1139, 1893,2639,3343,3935,4339,4516,4488,4304,3995,3484, 2655,1513,147,-1235,-2435,-3330,-3941,-4345,-4630,-4804, -4762,-4386,-3631,-2622,-1555,-585,283,1075,1846,2609, 3325,3909,4291,4455,4452,4328,4057,3534,2675,1497, 109,-1260,-2416,-3272,-3872,-4317,-4665,-4882,-4812,-4362, -3572,-2595,-1582,-653,198,993,1780,2564,3297,3867, 4220,4396,4444,4381,4144,3616,2711,1487,86,-1250, -2356,-3176,-3789,-4296,-4719,-4943,-4827,-4320,-3524,-2587, -1629,-730,104,903,1724,2542,3262,3808,4153,4351, 4449,4435,4223,3684,2731,1474,86,-1211,-2254,-3046, -3700,-4282,-4755,-4966,-4807,-4276,-3485,-2580,-1661,-800, 28,857,1705,2524,3217,3743,4083,4300,4442,4475, 4266,3692,2697,1411,54,-1162,-2136,-2925,-3630,-4271, -4748,-4927,-4732,-4191,-3405,-2536,-1667,-839,-2,862, 1728,2523,3180,3671,4020,4287,4468,4522,4311,3698, 2653,1344,31,-1106,-2035,-2859,-3630,-4303,-4773,-4925, -4693,-4132,-3362,-2537,-1714,-900,-50,844,1719,2496, 3111,3573,3944,4260,4511,4596,4364,3691,2600,1296, 43,-1041,-1972,-2842,-3658,-4359,-4832,-4946,-4673,-4098, -3362,-2579,-1781,-958,-86,823,1691,2446,3048,3519, 3921,4282,4588,4699,4420,3664,2528,1257,66,-987, -1927,-2815,-3656,-4366,-4810,-4886,-4586,-4021,-3323,-2589, -1821,-985,-89,832,1685,2412,2991,3460,3898,4328, 4674,4771,4417,3595,2461,1240,100,-930,-1878,-2799, -3670,-4365,-4765,-4801,-4500,-3963,-3314,-2628,-1873,-1024, -110,815,1654,2361,2916,3384,3876,4393,4770,4817, 4390,3541,2441,1278,178,-841,-1825,-2796,-3692,-4377, -4743,-4746,-4441,-3950,-3348,-2685,-1924,-1063,-141,786, 1615,2284,2812,3318,3887,4458,4822,4811,4340,3487, 2428,1320,251,-773,-1788,-2802,-3706,-4365,-4695,-4677, -4379,-3921,-3357,-2710,-1959,-1092,-138,781,1558,2165, 2689,3264,3907,4506,4853,4793,4280,3436,2416,1352, 313,-724,-1783,-2823,-3729,-4345,-4633,-4608,-4340,-3903, -3359,-2733,-1991,-1091,-117,762,1472,2046,2605,3252, 3959,4572,4891,4776,4236,3405,2436,1426,401,-669, -1778,-2844,-3736,-4321,-4585,-4572,-4324,-3910,-3405,-2793, -2021,-1082,-118,717,1381,1949,2550,3267,4025,4642, 4918,4749,4198,3399,2488,1524,490,-621,-1768,-2831, -3689,-4269,-4530,-4519,-4288,-3935,-3460,-2838,-2028,-1076, -142,636,1263,1848,2499,3278,4068,4670,4894,4687, 4128,3357,2500,1555,503,-639,-1787,-2826,-3664,-4231, -4478,-4467,-4274,-3968,-3511,-2855,-2009,-1059,-170,551, 1157,1771,2498,3329,4135,4699,4865,4621,4070,3344, 2531,1591,514,-642,-1793,-2839,-3666,-4184,-4412,-4423, -4285,-4008,-3547,-2856,-1984,-1051,-206,471,1075,1742, 2545,3429,4245,4764,4878,4610,4086,3414,2617,1668, 565,-616,-1798,-2852,-3654,-4143,-4367,-4409,-4316,-4052, -3565,-2841,-1963,-1068,-292,345,958,1676,2549,3477, 4275,4738,4824,4582,4100,3446,2660,1717,610,-595, -1783,-2819,-3581,-4058,-4306,-4393,-4331,-4065,-3545,-2786, -1917,-1090,-396,200,826,1604,2549,3484,4236,4661, 4740,4518,4073,3453,2688,1752,632,-589,-1766,-2758, -3476,-3937,-4209,-4345,-4313,-4026,-3477,-2709,-1869,-1113, -494,70,730,1584,2563,3481,4186,4587,4667,4455, 4040,3459,2707,1748,598,-630,-1791,-2736,-3416,-3875, -4184,-4352,-4320,-4005,-3410,-2636,-1834,-1144,-579,-11, 699,1593,2577,3476,4149,4529,4603,4414,4044,3492, 2746,1770,596,-639,-1769,-2672,-3344,-3835,-4190,-4388, -4351,-4003,-3369,-2587,-1840,-1222,-678,-78,699,1632, 2617,3499,4156,4521,4592,4431,4091,3558,2812,1802, 591,-651,-1738,-2606,-3282,-3813,-4215,-4437,-4373,-3965, -3307,-2556,-1884,-1324,-784,-135,693,1664,2652,3516, 4141,4489,4574,4446,4131,3605,2827,1769,538,-671, -1721,-2562,-3234,-3798,-4251,-4481,-4369,-3904,-3234,-2548, -1951,-1433,-891,-208,666,1671,2667,3511,4106,4442, 4542,4446,4166,3636,2829,1762,541,-624,-1630,-2454, -3159,-3778,-4273,-4486,-4325,-3836,-3198,-2580,-2042,-1564, -1004,-286,628,1659,2662,3492,4068,4399,4528,4470, 4197,3657,2829,1763,567,-562,-1521,-2345,-3102,-3789, -4286,-4447,-4239,-3744,-3145,-2591,-2113,-1652,-1076,-316, 614,1646,2635,3437,4000,4347,4496,4463,4196,3644, 2791,1715,545,-526,-1444,-2295,-3114,-3827,-4293,-4399, -4141,-3647,-3083,-2581,-2144,-1692,-1099,-296,675,1707, 2653,3422,3976,4343,4511,4495,4219,3629,2734,1660, 540,-472,-1380,-2277,-3148,-3874,-4305,-4357,-4066,-3593, -3071,-2614,-2202,-1757,-1136,-291,712,1743,2657,3412, 3974,4361,4570,4564,4258,3612,2673,1621,575,-399, -1336,-2283,-3191,-3908,-4297,-4305,-4011,-3562,-3091,-2688, -2317,-1865,-1212,-331,684,1705,2607,3345,3924,4342, 4591,4577,4237,3550,2610,1608,617,-336,-1296,-2293, -3212,-3908,-4251,-4238,-3942,-3511,-3085,-2733,-2382,-1914, -1226,-323,695,1695,2579,3302,3890,4355,4633,4599, 4211,3499,2588,1651,717,-247,-1257,-2300,-3224,-3900, -4201,-4167,-3885,-3492,-3124,-2806,-2455,-1967,-1252,-319, 712,1696,2556,3285,3909,4413,4704,4635,4196,3469, 2610,1728,826,-166,-1229,-2302,-3231,-3884,-4154,-4099, -3836,-3509,-3200,-2904,-2554,-2045,-1295,-331,700,1657, 2490,3235,3909,4446,4711,4594,4125,3421,2628,1798, 900,-113,-1211,-2301,-3221,-3835,-4079,-4018,-3783,-3508, -3244,-2966,-2612,-2068,-1282,-308,686,1596,2417,3189, 3912,4461,4681,4516,4033,3361,2630,1837,945,-95, -1221,-2315,-3207,-3765,-3980,-3936,-3741,-3501,-3276,-3024, -2659,-2084,-1273,-309,635,1514,2351,3183,3953,4490, 4655,4445,3960,3326,2628,1863,968,-102,-1251,-2333, -3183,-3702,-3897,-3851,-3674,-3475,-3292,-3053,-2661,-2043, -1223,-314,578,1441,2320,3213,3995,4499,4616,4383, 3914,3328,2673,1927,1011,-93,-1254,-2317,-3128,-3616, -3798,-3756,-3610,-3469,-3334,-3109,-2676,-2011,-1200,-338, 521,1404,2343,3275,4041,4493,4571,4327,3882,3336, 2723,1969,1028,-94,-1259,-2297,-3082,-3554,-3727,-3703, -3611,-3536,-3437,-3195,-2719,-2035,-1258,-434,421,1356, 2356,3307,4060,4478,4523,4281,3882,3379,2776,2014, 1043,-99,-1271,-2302,-3065,-3503,-3656,-3655,-3630,-3612, -3519,-3226,-2714,-2056,-1335,-545,333,1300,2334,3295, 4034,4421,4455,4244,3891,3434,2842,2067,1079,-79, -1253,-2268,-2992,-3393,-3547,-3597,-3646,-3666,-3544,-3206, -2689,-2066,-1384,-609,289,1293,2361,3321,4008,4342, 4374,4206,3899,3466,2878,2094,1095,-76,-1254,-2241, -2916,-3274,-3442,-3556,-3660,-3678,-3516,-3158,-2654,-2066, -1415,-660,258,1312,2400,3329,3961,4269,4311,4177, 3909,3507,2924,2129,1111,-84,-1265,-2210,-2819,-3146, -3357,-3539,-3670,-3675,-3494,-3134,-2661,-2121,-1517,-762, 203,1300,2383,3269,3871,4176,4246,4145,3912,3531, 2960,2155,1107,-105,-1254,-2127,-2691,-3049,-3324,-3559, -3709,-3703,-3509,-3148,-2702,-2204,-1615,-830,183,1318, 2386,3233,3807,4110,4199,4124,3910,3540,2980,2156, 1067,-146,-1243,-2059,-2609,-2998,-3322,-3585,-3738,-3702, -3480,-3126,-2712,-2255,-1654,-819,243,1383,2415,3222, 3776,4078,4172,4110,3919,3574,3001,2129,1015,-165, -1203,-1967,-2512,-2940,-3317,-3608,-3741,-3667,-3422,-3094, -2733,-2306,-1687,-812,283,1410,2412,3194,3729,4013, 4112,4084,3948,3613,2995,2073,963,-162,-1130,-1855, -2408,-2884,-3301,-3610,-3713,-3609,-3379,-3096,-2778,-2352, -1703,-789,303,1409,2393,3162,3674,3955,4079,4102, 3997,3646,2971,2010,894,-186,-1095,-1797,-2373,-2894, -3333,-3613,-3683,-3565,-3364,-3134,-2838,-2381,-1692,-765, 320,1421,2395,3138,3625,3918,4092,4160,4062,3678, 2954,1964,853,-182,-1037,-1728,-2345,-2915,-3363,-3609, -3656,-3554,-3402,-3212,-2914,-2429,-1709,-775,330,1433, 2389,3087,3549,3867,4096,4210,4101,3671,2910,1912, 846,-127,-946,-1652,-2302,-2903,-3350,-3572,-3601,-3536, -3433,-3260,-2948,-2449,-1719,-755,360,1450,2357,3009, 3465,3825,4103,4241,4112,3630,2830,1837,827,-79, -873,-1608,-2301,-2895,-3299,-3488,-3526,-3498,-3428,-3261, -2945,-2429,-1677,-684,434,1481,2322,2939,3406,3799, 4127,4278,4123,3589,2762,1791,845,-2,-807,-1594, -2320,-2889,-3248,-3428,-3498,-3502,-3446,-3294,-2989,-2462, -1665,-639,471,1470,2254,2852,3342,3774,4142,4297, 4114,3540,2708,1800,926,93,-755,-1595,-2314,-2867, -3220,-3423,-3519,-3543,-3508,-3380,-3076,-2523,-1684,-637, 456,1415,2162,2756,3283,3771,4160,4301,4070,3477, 2680,1837,1009,163,-722,-1570,-2272,-2804,-3162,-3372, -3488,-3544,-3542,-3431,-3120,-2528,-1657,-604,456,1369, 2091,2695,3266,3819,4234,4334,4042,3444,2704,1912, 1098,225,-683,-1533,-2241,-2754,-3104,-3312,-3446,-3548, -3578,-3485,-3157,-2520,-1616,-574,443,1300,1994,2623, 3261,3874,4281,4323,3999,3426,2745,1984,1155,257, -653,-1498,-2196,-2699,-3049,-3279,-3452,-3599,-3662,-3569, -3203,-2518,-1583,-548,416,1210,1892,2575,3288,3914, 4268,4260,3930,3405,2759,2013,1175,271,-639,-1472, -2147,-2642,-2982,-3242,-3465,-3658,-3747,-3634,-3222,-2490, -1537,-528,363,1106,1807,2566,3335,3944,4243,4210, 3900,3404,2773,2035,1193,276,-641,-1474,-2136,-2608, -2934,-3211,-3466,-3693,-3804,-3678,-3223,-2439,-1488,-552, 258,996,1753,2565,3336,3914,4195,4167,3888,3419, 2813,2078,1231,314,-607,-1431,-2074,-2531,-2862,-3159, -3440,-3689,-3800,-3650,-3149,-2342,-1435,-590,163,924, 1739,2577,3320,3859,4117,4098,3854,3421,2835,2104, 1255,336,-576,-1376,-2001,-2461,-2811,-3118,-3430,-3715, -3830,-3621,-3055,-2253,-1431,-664,73,870,1733,2589, 3317,3823,4061,4044,3823,3418,2844,2103,1233,313, -584,-1363,-1969,-2428,-2790,-3131,-3498,-3822,-3910,-3618, -2992,-2216,-1456,-738,1,844,1752,2610,3311,3797, 4036,4033,3831,3437,2862,2116,1237,319,-568,-1338, -1923,-2355,-2731,-3141,-3580,-3904,-3925,-3563,-2924,-2193, -1480,-786,-27,850,1765,2614,3291,3758,3994,4007, 3826,3450,2873,2126,1245,326,-562,-1309,-1847,-2260, -2674,-3158,-3638,-3934,-3888,-3487,-2864,-2194,-1535,-850, -71,824,1740,2579,3246,3696,3939,3978,3824,3466, 2900,2149,1269,340,-532,-1231,-1742,-2170,-2652,-3210, -3711,-3968,-3859,-3439,-2852,-2226,-1587,-894,-87,816, 1731,2551,3204,3654,3929,4003,3862,3511,2955,2202, 1291,347,-492,-1130,-1620,-2089,-2659,-3275,-3772,-3970, -3826,-3416,-2880,-2296,-1663,-948,-109,809,1716,2506, 3148,3622,3915,4001,3877,3541,2984,2202,1262,320, -465,-1043,-1524,-2047,-2682,-3324,-3780,-3921,-3752,-3368, -2875,-2336,-1721,-986,-119,809,1690,2459,3103,3584, 3870,3965,3862,3536,2961,2145,1205,311,-403,-945, -1459,-2049,-2725,-3359,-3767,-3867,-3687,-3324,-2868,-2362, -1744,-988,-105,806,1674,2445,3086,3567,3848,3960, 3879,3553,2943,2088,1163,335,-310,-840,-1404,-2066, -2776,-3385,-3752,-3827,-3657,-3329,-2910,-2396,-1752,-985, -119,783,1667,2444,3073,3539,3847,4002,3940,3586, 2918,2044,1158,409,-187,-735,-1362,-2087,-2825,-3405, -3729,-3771,-3616,-3332,-2933,-2407,-1755,-996,-147,761, 1644,2407,3012,3476,3829,4031,3977,3576,2864,2004, 1184,506,-71,-669,-1362,-2136,-2876,-3419,-3696,-3725, -3591,-3323,-2930,-2407,-1768,-1017,-171,737,1601,2332, 2924,3416,3815,4046,3975,3524,2798,1972,1218,589, 11,-632,-1385,-2192,-2903,-3401,-3653,-3700,-3586,-3327, -2930,-2415,-1782,-1023,-165,733,1564,2266,2860,3399, 3854,4088,3965,3474,2736,1948,1252,673,95,-595, -1398,-2213,-2886,-3361,-3620,-3687,-3585,-3338,-2950,-2440, -1802,-1027,-161,720,1514,2201,2834,3425,3906,4115, 3948,3434,2708,1969,1341,786,182,-557,-1398,-2209, -2875,-3351,-3620,-3687,-3581,-3334,-2972,-2476,-1825,-1031, -159,681,1441,2142,2831,3470,3951,4123,3903,3363, 2668,2009,1438,886,231,-556,-1414,-2226,-2891,-3369, -3632,-3686,-3576,-3337,-2984,-2490,-1814,-1005,-157,637, 1376,2105,2835,3513,3993,4113,3832,3276,2630,2041, 1502,927,224,-587,-1442,-2234,-2880,-3342,-3590,-3638, -3545,-3337,-2992,-2473,-1774,-982,-181,567,1293,2055, 2843,3556,4020,4087,3766,3220,2639,2102,1561,941, 208,-611,-1455,-2228,-2863,-3302,-3526,-3583,-3522,-3347, -2989,-2434,-1731,-974,-235,470,1201,2008,2859,3594, 4015,4024,3686,3189,2677,2172,1627,983,233,-594, -1445,-2227,-2853,-3266,-3488,-3579,-3555,-3379,-2996,-2406, -1694,-971,-291,375,1138,2022,2930,3653,4004,3964, 3636,3194,2727,2230,1680,1033,278,-569,-1438,-2212, -2804,-3198,-3443,-3578,-3574,-3391,-2986,-2390,-1705,-1032, -407,254,1078,2048,2981,3654,3942,3879,3586,3196, 2757,2270,1714,1067,300,-566,-1428,-2172,-2732,-3124, -3394,-3549,-3558,-3358,-2938,-2350,-1722,-1126,-539,159, 1055,2067,2971,3576,3818,3762,3518,3175,2766,2298, 1755,1100,300,-575,-1426,-2136,-2676,-3080,-3372,-3545, -3548,-3317,-2867,-2290,-1721,-1199,-631,111,1065,2089, 2954,3505,3728,3696,3477,3156,2774,2333,1797,1124, 303,-571,-1396,-2085,-2624,-3044,-3361,-3555,-3543,-3272, -2799,-2254,-1755,-1286,-714,95,1107,2130,2945,3461, 3680,3664,3465,3167,2817,2394,1840,1131,301,-566, -1366,-2033,-2569,-3014,-3370,-3577,-3531,-3224,-2753,-2264, -1837,-1392,-765,118,1160,2165,2957,3456,3666,3642, 3460,3192,2861,2429,1850,1115,272,-581,-1351,-1995, -2540,-3017,-3401,-3583,-3482,-3151,-2716,-2302,-1927,-1463, -784,133,1165,2150,2928,3416,3614,3588,3434,3199, 2882,2445,1855,1106,265,-565,-1299,-1933,-2510,-3026, -3415,-3554,-3400,-3073,-2705,-2367,-2009,-1512,-792,136, 1153,2105,2843,3306,3503,3516,3402,3197,2903,2471, 1863,1095,258,-524,-1222,-1868,-2501,-3063,-3432,-3508, -3321,-3021,-2718,-2430,-2070,-1538,-781,163,1180,2115, 2825,3265,3460,3491,3409,3233,2945,2495,1848,1059, 250,-478,-1153,-1834,-2523,-3096,-3410,-3422,-3226,-2968, -2713,-2454,-2097,-1549,-766,200,1217,2131,2820,3240, 3436,3472,3421,3271,2981,2492,1809,1029,271,-428, -1120,-1860,-2583,-3129,-3380,-3353,-3165,-2941,-2725,-2494, -2141,-1574,-762,211,1205,2086,2750,3166,3370,3434, 3419,3298,2994,2458,1755,1013,306,-381,-1117,-1912, -2648,-3149,-3350,-3309,-3139,-2949,-2776,-2555,-2176,-1573, -743,229,1205,2065,2707,3107,3319,3432,3460,3349, 2995,2419,1734,1051,390,-319,-1110,-1935,-2653,-3120, -3291,-3236,-3096,-2955,-2815,-2593,-2189,-1557,-710,264, 1230,2068,2674,3056,3296,3465,3529,3387,2982,2392, 1749,1115,451,-301,-1137,-1966,-2647,-3067,-3208,-3157, -3052,-2955,-2844,-2622,-2211,-1558,-685,302,1251,2045, 2615,3007,3304,3521,3588,3398,2961,2389,1789,1176, 489,-307,-1177,-2014,-2661,-3029,-3145,-3120,-3060,-2998, -2900,-2679,-2262,-1594,-702,294,1215,1955,2501,2931, 3296,3549,3584,3351,2920,2396,1850,1256,552,-290, -1201,-2029,-2629,-2956,-3072,-3089,-3077,-3051,-2967,-2756, -2334,-1645,-728,270,1151,1845,2400,2892,3309,3558, 3557,3314,2914,2442,1940,1351,607,-282,-1210,-2003, -2551,-2852,-2986,-3048,-3087,-3096,-3034,-2835,-2389,-1662, -726,247,1079,1755,2359,2913,3359,3589,3558,3313, 2940,2521,2048,1441,650,-275,-1198,-1953,-2464,-2762, -2921,-3004,-3067,-3111,-3086,-2888,-2397,-1622,-699,193, 974,1662,2315,2912,3357,3559,3502,3254,2923,2558, 2100,1465,637,-302,-1193,-1899,-2381,-2678,-2844,-2936, -3014,-3106,-3116,-2894,-2353,-1570,-701,126,873,1582, 2270,2878,3305,3466,3390,3159,2872,2539,2073,1411, 563,-356,-1199,-1865,-2328,-2614,-2763,-2875,-3012,-3154, -3153,-2866,-2284,-1514,-702,88,836,1567,2288,2891, 3286,3413,3334,3143,2900,2576,2072,1366,504,-388, -1192,-1841,-2291,-2545,-2689,-2845,-3055,-3220,-3177,-2829, -2219,-1473,-697,66,822,1588,2336,2931,3287,3388, 3322,3185,2984,2651,2107,1357,494,-387,-1183,-1812, -2229,-2464,-2638,-2864,-3123,-3285,-3201,-2820,-2212,-1498, -765,-19,764,1583,2354,2927,3237,3323,3297,3222, 3045,2690,2122,1369,508,-383,-1186,-1781,-2150,-2382, -2613,-2909,-3193,-3328,-3197,-2797,-2211,-1541,-838,-76, 756,1604,2362,2888,3163,3266,3300,3261,3079,2705, 2136,1385,504,-398,-1178,-1725,-2065,-2321,-2613,-2949, -3241,-3340,-3166,-2756,-2198,-1578,-893,-104,776,1636, 2349,2831,3097,3241,3305,3271,3084,2710,2134,1368, 472,-410,-1139,-1640,-1974,-2274,-2623,-2996,-3278,-3344, -3138,-2734,-2217,-1636,-950,-124,792,1652,2321,2778, 3070,3248,3334,3299,3120,2753,2154,1359,457,-392, -1067,-1531,-1876,-2226,-2635,-3048,-3318,-3337,-3102,-2714, -2245,-1683,-957,-77,842,1656,2282,2731,3053,3252, 3352,3323,3147,2767,2136,1297,387,-419,-1025,-1455, -1820,-2229,-2692,-3113,-3342,-3304,-3058,-2713,-2284,-1710, -938,-25,869,1638,2240,2699,3018,3226,3338,3337, 3159,2745,2078,1209,309,-446,-987,-1387,-1777,-2248, -2751,-3146,-3306,-3243,-3035,-2753,-2343,-1736,-925,-13, 857,1600,2199,2654,2975,3202,3343,3368,3188,2737, 2038,1171,305,-404,-905,-1297,-1727,-2252,-2762,-3115, -3233,-3185,-3038,-2795,-2365,-1710,-883,13,860,1589, 2174,2616,2946,3196,3365,3407,3212,2722,1982,1108, 289,-355,-828,-1245,-1736,-2290,-2776,-3080,-3192,-3180, -3084,-2839,-2382,-1706,-882,2,840,1559,2140,2579, 2927,3216,3425,3476,3264,2736,1957,1093,332,-240, -704,-1184,-1751,-2315,-2759,-3032,-3177,-3226,-3153,-2903, -2430,-1758,-948,-74,758,1472,2046,2499,2884,3225, 3465,3515,3275,2711,1927,1117,447,-78,-563,-1115, -1720,-2270,-2680,-2959,-3143,-3236,-3176,-2920,-2450,-1789, -987,-132,678,1366,1924,2396,2823,3203,3473,3515, 3229,2624,1861,1135,545,29,-506,-1103,-1696,-2214, -2614,-2920,-3130,-3233,-3168,-2916,-2447,-1782,-977,-137, 646,1307,1856,2349,2812,3235,3518,3523,3173,2541, 1821,1173,624,86,-494,-1107,-1683,-2180,-2585,-2910, -3141,-3248,-3188,-2931,-2449,-1764,-958,-127,628,1271, 1813,2323,2840,3316,3590,3524,3104,2473,1815,1225, 685,120,-491,-1102,-1659,-2142,-2556,-2899,-3150,-3275, -3226,-2951,-2442,-1743,-942,-122,611,1224,1757,2292, 2869,3377,3616,3489,3033,2433,1834,1275,722,126, -493,-1094,-1638,-2118,-2537,-2892,-3161,-3303,-3252,-2965, -2446,-1745,-945,-142,567,1153,1694,2288,2920,3417, 3600,3417,2969,2423,1881,1342,774,163,-456,-1050, -1593,-2077,-2511,-2888,-3174,-3323,-3273,-2985,-2467,-1759, -959,-192,462,1033,1623,2294,2966,3437,3558,3344, 2927,2438,1931,1400,830,225,-389,-983,-1517,-2005, -2459,-2865,-3169,-3319,-3273,-2988,-2453,-1727,-940,-230, 369,940,1598,2329,2993,3403,3461,3238,2851,2392, 1906,1381,819,225,-364,-928,-1442,-1938,-2412,-2828, -3144,-3308,-3273,-2968,-2396,-1655,-911,-271,287,891, 1611,2372,2998,3343,3372,3155,2793,2358,1892,1377, 818,240,-337,-877,-1391,-1899,-2383,-2804,-3134,-3325, -3282,-2937,-2327,-1606,-936,-371,186,845,1616,2386, 2979,3297,3316,3123,2795,2394,1939,1417,851,284, -276,-827,-1360,-1878,-2357,-2796,-3159,-3364,-3291,-2893, -2260,-1588,-995,-460,131,853,1649,2395,2948,3232, 3248,3073,2783,2405,1951,1417,856,302,-252,-803, -1327,-1835,-2324,-2798,-3190,-3380,-3245,-2800,-2185,-1582, -1049,-520,118,886,1687,2396,2907,3158,3183,3046, 2783,2406,1938,1420,880,325,-240,-792,-1309,-1807, -2324,-2845,-3252,-3398,-3198,-2727,-2151,-1610,-1111,-566, 115,911,1719,2407,2880,3116,3155,3045,2785,2404, 1944,1449,922,358,-223,-763,-1265,-1779,-2353,-2919, -3316,-3399,-3147,-2678,-2149,-1654,-1168,-599,119,953, 1760,2417,2858,3093,3148,3034,2765,2386,1950,1470, 943,375,-191,-701,-1196,-1753,-2392,-2973,-3327,-3342, -3057,-2615,-2144,-1699,-1228,-629,136,977,1750,2372, 2807,3062,3134,3022,2755,2401,1983,1498,957,396, -129,-617,-1145,-1766,-2449,-3029,-3330,-3301,-3014,-2614, -2206,-1802,-1319,-665,133,956,1701,2312,2777,3060, 3133,3022,2776,2454,2045,1545,989,456,-26,-506, -1080,-1773,-2488,-3047,-3306,-3246,-2976,-2635,-2300,-1914, -1397,-700,106,910,1637,2259,2739,3022,3093,2999, 2787,2483,2061,1540,998,518,79,-418,-1040,-1774, -2489,-3014,-3223,-3147,-2910,-2641,-2355,-1971,-1425,-710, 80,867,1601,2233,2695,2956,3027,2963,2788,2482, 2038,1512,1009,571,145,-383,-1056,-1814,-2517,-2987, -3147,-3066,-2880,-2667,-2389,-1978,-1405,-697,84,879, 1630,2260,2695,2938,3027,2989,2808,2466,2002,1500, 1044,637,199,-379,-1112,-1906,-2583,-2987,-3106,-3043, -2913,-2731,-2435,-1996,-1414,-721,62,874,1630,2236, 2655,2908,3027,3004,2800,2430,1965,1502,1102,727, 266,-369,-1157,-1957,-2580,-2931,-3042,-3016,-2928,-2755, -2452,-2011,-1441,-749,44,863,1594,2179,2603,2890, 3030,3002,2786,2409,1961,1539,1185,835,341,-363, -1197,-1970,-2529,-2846,-2988,-3015,-2947,-2765,-2454,-2025, -1463,-759,56,867,1565,2124,2554,2864,3025,2995, 2762,2372,1943,1572,1270,923,375,-394,-1240,-1976, -2486,-2793,-2969,-3033,-2972,-2788,-2486,-2068,-1499,-779, 36,832,1511,2068,2510,2837,3006,2962,2700,2305, 1921,1626,1366,988,375,-424,-1235,-1916,-2409,-2738, -2931,-2987,-2927,-2768,-2492,-2073,-1484,-750,45,808, 1467,2026,2487,2836,3002,2918,2631,2259,1953,1724, 1468,1026,348,-456,-1229,-1875,-2370,-2716,-2909,-2963, -2917,-2783,-2514,-2072,-1454,-701,80,801,1432,1992, 2485,2840,2971,2842,2543,2225,1997,1805,1511,1003, 303,-475,-1227,-1866,-2353,-2681,-2861,-2928,-2910,-2790, -2514,-2054,-1426,-685,67,758,1380,1954,2468,2809, 2894,2735,2461,2222,2056,1867,1529,985,291,-472, -1203,-1832,-2308,-2624,-2805,-2885,-2880,-2763,-2482,-2012, -1385,-679,29,700,1339,1945,2461,2772,2805,2636, 2412,2252,2127,1920,1547,989,292,-470,-1194,-1816, -2275,-2592,-2790,-2883,-2882,-2759,-2464,-1969,-1339,-665, 2,663,1332,1983,2496,2749,2729,2563,2400,2295, 2185,1964,1562,988,280,-486,-1212,-1815,-2262,-2571, -2784,-2904,-2920,-2780,-2450,-1936,-1324,-688,-41,640, 1358,2032,2501,2690,2654,2527,2422,2347,2231,1989, 1571,975,251,-512,-1225,-1806,-2241,-2543,-2771,-2918, -2949,-2793,-2432,-1921,-1349,-764,-130,597,1362,2030, 2448,2595,2580,2513,2460,2406,2287,2034,1602,992, 258,-506,-1204,-1763,-2179,-2487,-2733,-2907,-2938,-2758, -2380,-1891,-1382,-835,-180,597,1379,2002,2373,2516, 2528,2511,2495,2456,2340,2074,1634,1016,272,-503, -1191,-1733,-2136,-2469,-2748,-2940,-2947,-2728,-2354,-1915, -1447,-884,-164,658,1429,2006,2339,2480,2515,2532, 2544,2517,2394,2109,1650,1014,254,-521,-1190,-1711, -2123,-2491,-2804,-2978,-2938,-2695,-2361,-1980,-1530,-928, -159,677,1428,1969,2284,2432,2494,2542,2577,2560, 2438,2147,1671,1005,231,-534,-1178,-1686,-2124,-2526, -2842,-2974,-2886,-2653,-2368,-2028,-1578,-947,-154,672, 1389,1902,2213,2376,2466,2534,2587,2579,2460,2167, 1670,989,218,-511,-1120,-1626,-2098,-2526,-2828,-2918, -2814,-2615,-2373,-2057,-1595,-934,-122,699,1379,1859, 2169,2348,2468,2557,2617,2619,2499,2184,1650,957, 215,-460,-1038,-1572,-2085,-2520,-2785,-2843,-2752,-2602, -2405,-2095,-1612,-929,-115,685,1341,1794,2093,2295, 2440,2549,2628,2648,2525,2174,1606,916,230,-392, -984,-1575,-2119,-2527,-2745,-2790,-2733,-2636,-2470,-2156, -1635,-923,-114,652,1271,1713,2012,2215,2372,2506, 2621,2663,2526,2139,1556,907,286,-311,-932,-1562, -2107,-2477,-2663,-2715,-2703,-2649,-2501,-2175,-1623,-896, -105,619,1208,1644,1946,2148,2318,2496,2658,2699, 2516,2096,1528,930,339,-272,-922,-1562,-2082,-2420, -2581,-2644,-2667,-2641,-2496,-2146,-1572,-859,-102,587, 1165,1600,1891,2092,2291,2518,2703,2717,2487,2057, 1530,969,379,-261,-933,-1567,-2058,-2361,-2516,-2606, -2670,-2663,-2498,-2113,-1532,-834,-105,574,1140,1548, 1815,2031,2280,2548,2725,2691,2437,2016,1527,997, 403,-262,-957,-1572,-2024,-2291,-2456,-2591,-2697,-2698, -2502,-2091,-1519,-845,-123,564,1111,1480,1739,2001, 2307,2598,2750,2680,2409,2014,1563,1046,433,-275, -992,-1588,-2000,-2262,-2454,-2632,-2756,-2734,-2510,-2090, -1527,-850,-119,557,1077,1425,1702,2017,2368,2661, 2786,2695,2429,2062,1628,1100,444,-297,-1016,-1579, -1963,-2236,-2475,-2692,-2816,-2766,-2522,-2101,-1525,-828, -93,547,1013,1348,1665,2026,2405,2689,2787,2684, 2427,2090,1665,1119,433,-315,-999,-1511,-1868,-2161, -2440,-2675,-2793,-2756,-2533,-2113,-1512,-805,-107,469, 898,1246,1616,2025,2414,2677,2749,2646,2429,2133, 1718,1140,420,-330,-961,-1432,-1799,-2130,-2430,-2657, -2780,-2759,-2551,-2119,-1498,-804,-155,367,781,1164, 1584,2032,2422,2663,2717,2634,2467,2210,1780,1157, 412,-314,-910,-1381,-1779,-2131,-2431,-2653,-2778,-2764, -2547,-2096,-1467,-801,-199,282,690,1109,1572,2038, 2415,2629,2683,2637,2508,2244,1778,1135,416,-260, -836,-1320,-1735,-2088,-2387,-2623,-2776,-2769,-2538,-2069, -1451,-825,-286,165,585,1048,1553,2032,2383,2578, 2658,2663,2553,2246,1736,1090,411,-229,-793,-1280, -1695,-2045,-2356,-2622,-2792,-2768,-2495,-2002,-1406,-840, -362,67,518,1031,1568,2033,2351,2556,2683,2728, 2603,2253,1710,1082,433,-193,-756,-1237,-1641,-1991, -2324,-2616,-2787,-2731,-2410,-1898,-1324,-817,-395,17, 507,1057,1585,2002,2302,2539,2706,2744,2570,2187, 1658,1058,434,-177,-724,-1188,-1579,-1944,-2306,-2622, -2794,-2715,-2368,-1856,-1318,-863,-476,-48,484,1053, 1555,1945,2263,2535,2723,2730,2524,2119,1594,999, 377,-213,-735,-1163,-1549,-1936,-2324,-2647,-2794,-2675, -2309,-1822,-1350,-950,-552,-79,482,1035,1509,1900, 2251,2551,2734,2720,2507,2115,1591,997,375,-197, -685,-1098,-1498,-1916,-2327,-2651,-2767,-2612,-2240,-1799, -1401,-1030,-590,-54,510,1024,1469,1873,2258,2573, 2739,2714,2500,2127,1617,1033,432,-118,-587,-1002, -1427,-1885,-2331,-2656,-2741,-2559,-2210,-1829,-1478,-1101, -632,-77,477,974,1420,1847,2248,2562,2718,2697, 2487,2114,1608,1025,442,-86,-529,-938,-1381,-1879, -2347,-2648,-2680,-2474,-2158,-1834,-1501,-1103,-628,-102, 412,898,1366,1820,2221,2516,2655,2622,2416,2046, 1540,964,397,-88,-496,-903,-1389,-1935,-2397,-2636, -2613,-2412,-2141,-1847,-1497,-1076,-597,-102,385,873, 1361,1826,2232,2525,2665,2622,2404,2019,1500,934, 411,-18,-410,-861,-1407,-1978,-2409,-2600,-2566,-2403, -2168,-1876,-1513,-1080,-606,-120,377,878,1373,1850, 2265,2566,2714,2668,2433,2024,1483,933,464,79, -331,-845,-1438,-1993,-2369,-2529,-2520,-2395,-2183,-1883, -1513,-1085,-628,-147,360,872,1388,1874,2288,2578, 2722,2676,2423,1982,1434,912,496,128,-317,-891, -1507,-2026,-2360,-2507,-2514,-2409,-2211,-1919,-1551,-1131, -680,-204,302,836,1371,1864,2279,2575,2725,2683, 2407,1941,1414,952,579,202,-298,-911,-1517,-1995, -2308,-2469,-2497,-2408,-2218,-1930,-1567,-1157,-723,-257, 260,814,1358,1845,2256,2572,2739,2683,2377,1907, 1428,1036,691,280,-274,-906,-1488,-1938,-2241,-2411, -2457,-2376,-2173,-1877,-1533,-1151,-738,-272,257,807, 1339,1822,2252,2593,2750,2648,2306,1857,1441,1104, 752,282,-315,-947,-1507,-1943,-2252,-2431,-2474,-2379, -2164,-1877,-1553,-1198,-784,-298,240,780,1301,1809, 2288,2641,2761,2597,2239,1832,1480,1163,789,286, -320,-938,-1486,-1919,-2236,-2426,-2475,-2381,-2171,-1901, -1595,-1246,-830,-341,188,722,1259,1817,2331,2677, 2745,2539,2193,1839,1534,1212,807,284,-305,-893, -1422,-1854,-2177,-2370,-2425,-2337,-2142,-1898,-1613,-1269, -854,-388,115,635,1201,1802,2339,2656,2672,2455, 2145,1841,1556,1227,792,256,-324,-889,-1400,-1832, -2160,-2348,-2389,-2305,-2133,-1908,-1621,-1259,-832,-379, 97,626,1239,1873,2391,2646,2617,2404,2129,1858, 1581,1239,787,246,-323,-876,-1390,-1830,-2158,-2336, -2366,-2297,-2155,-1945,-1647,-1264,-849,-418,56,635, 1305,1957,2433,2635,2589,2397,2161,1910,1628,1265, 800,267,-289,-841,-1365,-1812,-2126,-2287,-2316,-2273, -2162,-1959,-1653,-1282,-908,-516,-32,597,1310,1953, 2389,2563,2524,2370,2174,1945,1658,1288,832,317, -236,-799,-1336,-1778,-2071,-2222,-2275,-2266,-2163,-1949, -1643,-1309,-984,-606,-85,597,1330,1949,2345,2488, 2459,2341,2177,1958,1667,1301,862,361,-200,-780, -1315,-1734,-2001,-2166,-2258,-2271,-2164,-1940,-1659,-1380, -1084,-685,-114,610,1346,1937,2288,2418,2406,2324, 2181,1959,1657,1294,875,379,-195,-784,-1295,-1666, -1926,-2118,-2244,-2256,-2134,-1917,-1674,-1426,-1135,-701, -79,666,1379,1920,2231,2363,2378,2311,2164,1943, 1649,1304,892,381,-203,-769,-1242,-1595,-1877,-2103, -2238,-2231,-2098,-1898,-1686,-1468,-1174,-696,-22,737, 1417,1907,2196,2338,2378,2313,2155,1934,1663,1334, 906,370,-216,-757,-1208,-1572,-1887,-2135,-2260,-2234, -2092,-1913,-1742,-1553,-1236,-708,14,771,1413,1861, 2151,2314,2363,2294,2143,1945,1704,1371,903,347, -221,-738,-1183,-1572,-1909,-2150,-2258,-2217,-2086,-1943, -1814,-1631,-1275,-690,57,793,1387,1816,2107,2276, 2318,2246,2116,1960,1739,1390,904,356,-186,-684, -1136,-1553,-1915,-2146,-2221,-2160,-2049,-1960,-1875,-1684, -1278,-654,83,789,1366,1799,2091,2242,2269,2215, 2115,1972,1737,1372,895,378,-133,-622,-1090,-1536, -1906,-2121,-2162,-2093,-2021,-1994,-1932,-1714,-1266,-631, 86,769,1354,1802,2087,2218,2244,2220,2148,1998, 1741,1355,887,391,-101,-587,-1074,-1539,-1895,-2071, -2085,-2041,-2024,-2031,-1959,-1692,-1219,-601,79,744, 1326,1765,2026,2145,2190,2199,2150,1993,1709,1315, 869,406,-70,-568,-1075,-1536,-1848,-1983,-2005,-2013, -2048,-2067,-1961,-1663,-1195,-602,60,721,1292,1706, 1949,2074,2138,2169,2125,1969,1678,1292,863,419, -58,-575,-1094,-1532,-1797,-1900,-1945,-2011,-2094,-2115, -1984,-1680,-1220,-628,46,711,1260,1649,1895,2047, 2146,2191,2144,1978,1688,1323,916,471,-33,-588, -1118,-1530,-1759,-1854,-1929,-2035,-2131,-2134,-1987,-1677, -1208,-603,83,729,1248,1608,1839,2011,2141,2215, 2163,1969,1672,1337,972,537,3,-582,-1104,-1468, -1667,-1777,-1894,-2026,-2123,-2118,-1971,-1660,-1179,-559, 123,745,1237,1573,1795,1980,2134,2211,2136,1925, 1640,1335,990,530,-40,-626,-1111,-1432,-1628,-1765, -1914,-2056,-2153,-2146,-1997,-1675,-1178,-545,134,740, 1207,1535,1779,1996,2167,2227,2130,1924,1685,1412, 1051,543,-62,-646,-1095,-1402,-1614,-1789,-1961,-2111, -2208,-2204,-2057,-1729,-1219,-568,108,689,1136,1473, 1756,2009,2183,2212,2105,1929,1740,1484,1093,555, -51,-600,-1016,-1313,-1540,-1740,-1930,-2100,-2219,-2227, -2079,-1741,-1217,-572,71,611,1028,1383,1715,1989, 2135,2130,2039,1915,1759,1492,1069,523,-53,-555, -943,-1230,-1464,-1678,-1881,-2068,-2207,-2226,-2066,-1705, -1164,-533,70,567,973,1353,1714,1976,2094,2082, 2032,1954,1800,1507,1056,516,-33,-508,-876,-1156, -1398,-1630,-1856,-2065,-2220,-2253,-2084,-1693,-1140,-533, 27,503,942,1361,1717,1946,2038,2044,2029,1970, 1810,1488,1018,480,-42,-487,-843,-1127,-1375,-1611, -1853,-2089,-2268,-2298,-2099,-1672,-1122,-563,-46,435, 909,1348,1679,1872,1956,1996,2010,1970,1805,1470, 996,466,-37,-461,-814,-1111,-1362,-1603,-1863,-2125, -2309,-2307,-2059,-1614,-1088,-576,-77,433,934,1366, 1665,1837,1945,2025,2066,2024,1839,1491,1024,507, 9,-423,-785,-1081,-1331,-1587,-1874,-2154,-2323,-2271, -1983,-1539,-1050,-572,-72,466,978,1384,1652,1816, 1938,2050,2112,2059,1847,1487,1032,531,48,-388, -752,-1045,-1304,-1589,-1915,-2214,-2358,-2253,-1937,-1518, -1076,-611,-88,469,971,1347,1593,1769,1919,2056, 2116,2041,1804,1441,998,520,42,-383,-724,-997, -1269,-1605,-1976,-2271,-2367,-2223,-1914,-1529,-1106,-625, -79,479,959,1306,1547,1739,1921,2072,2126,2025, 1776,1415,971,493,15,-393,-697,-946,-1248,-1636, -2030,-2291,-2332,-2171,-1885,-1527,-1094,-582,-19,515, 950,1273,1515,1723,1922,2079,2125,2019,1775,1421, 980,492,27,-345,-622,-890,-1242,-1661,-2042,-2270, -2291,-2139,-1879,-1541,-1109,-584,-11,511,915,1218, 1473,1717,1945,2102,2134,2030,1793,1433,981,492, 53,-274,-541,-849,-1244,-1673,-2026,-2215,-2223,-2093, -1861,-1530,-1095,-573,-21,473,857,1155,1419,1682, 1921,2076,2106,2011,1784,1410,941,468,77,-219, -497,-855,-1287,-1715,-2032,-2191,-2209,-2108,-1892,-1554, -1090,-563,-41,409,773,1093,1390,1663,1897,2053, 2107,2028,1785,1390,919,493,156,-126,-448,-859, -1312,-1722,-2011,-2162,-2202,-2130,-1933,-1588,-1111,-581, -80,342,702,1045,1374,1662,1898,2074,2151,2071, 1796,1378,927,551,256,-35,-403,-855,-1312,-1697, -1972,-2131,-2186,-2124,-1923,-1563,-1084,-580,-114,298, 669,1019,1344,1629,1879,2085,2171,2071,1763,1348, 932,599,318,2,-408,-879,-1338,-1707,-1967,-2136, -2209,-2152,-1924,-1537,-1069,-609,-179,230,617,973, 1300,1607,1894,2126,2212,2090,1771,1363,988,686, 404,58,-380,-863,-1313,-1678,-1943,-2136,-2233,-2173, -1925,-1535,-1095,-666,-243,171,561,914,1243,1575, 1892,2136,2208,2054,1730,1359,1032,755,460,86, -378,-854,-1271,-1616,-1903,-2119,-2214,-2132,-1878,-1516, -1111,-693,-266,149,520,854,1181,1527,1857,2084, 2122,1944,1632,1306,1034,783,474,71,-397,-846, -1237,-1583,-1890,-2107,-2171,-2066,-1819,-1491,-1113,-694, -270,133,480,813,1166,1548,1886,2079,2068,1872, 1583,1303,1068,822,486,66,-388,-813,-1211,-1588, -1911,-2120,-2167,-2049,-1803,-1478,-1098,-685,-273,110, 455,808,1194,1599,1935,2099,2048,1832,1566,1329, 1111,839,475,50,-383,-794,-1201,-1592,-1914,-2109, -2145,-2031,-1788,-1458,-1071,-666,-283,72,416,789, 1211,1636,1959,2081,2003,1796,1570,1363,1140,841, 471,59,-359,-779,-1194,-1586,-1895,-2070,-2095,-1993, -1760,-1430,-1042,-648,-292,32,370,767,1229,1666, 1962,2039,1940,1764,1583,1386,1138,820,454,63, -351,-791,-1227,-1619,-1910,-2070,-2093,-1989,-1752,-1413, -1027,-660,-342,-41,307,744,1235,1664,1917,1967, 1887,1763,1615,1414,1145,825,475,98,-321,-774, -1215,-1596,-1873,-2034,-2063,-1961,-1723,-1387,-1021,-693, -414,-124,259,747,1250,1649,1864,1904,1859,1779, 1646,1442,1175,869,541,169,-265,-724,-1162,-1533, -1805,-1976,-2019,-1916,-1665,-1326,-987,-705,-466,-178, 248,769,1261,1611,1789,1844,1840,1776,1638,1428, 1174,887,561,170,-274,-729,-1164,-1527,-1803,-1972, -2014,-1893,-1615,-1279,-976,-745,-520,-195,266,789, 1242,1550,1722,1808,1825,1756,1605,1397,1160,890, 558,153,-302,-755,-1184,-1544,-1827,-1999,-2023,-1878, -1597,-1279,-1022,-829,-584,-198,305,817,1230,1520, 1707,1818,1839,1759,1603,1404,1182,919,587,175, -287,-741,-1169,-1541,-1836,-2012,-2010,-1827,-1542,-1266, -1060,-878,-605,-189,318,809,1201,1497,1702,1819, 1839,1760,1616,1435,1215,945,604,193,-260,-713, -1146,-1540,-1847,-2006,-1963,-1756,-1491,-1272,-1112,-919, -607,-171,316,776,1165,1476,1698,1815,1826,1760, 1634,1468,1248,964,610,203,-231,-676,-1119,-1537, -1852,-1985,-1914,-1718,-1503,-1346,-1198,-982,-633,-180, 300,746,1132,1449,1674,1792,1811,1763,1659,1509, 1287,996,638,239,-185,-632,-1089,-1511,-1810,-1913, -1829,-1661,-1502,-1388,-1251,-1019,-664,-223,248,696, 1083,1395,1612,1723,1749,1716,1636,1496,1270,971, 627,257,-149,-607,-1088,-1506,-1762,-1813,-1720,-1586, -1482,-1395,-1258,-1019,-666,-241,220,669,1064,1377, 1587,1693,1719,1695,1636,1495,1257,952,626,277, -129,-615,-1117,-1513,-1717,-1730,-1642,-1548,-1483,-1406, -1256,-1004,-658,-239,222,673,1074,1380,1579,1686, 1727,1724,1667,1511,1264,970,659,309,-139,-661, -1161,-1513,-1665,-1660,-1603,-1554,-1514,-1440,-1277,-1017, -674,-259,203,659,1054,1345,1533,1657,1729,1738, 1656,1472,1229,972,687,317,-173,-718,-1196,-1503, -1618,-1617,-1583,-1563,-1534,-1453,-1282,-1025,-686,-261, 206,659,1039,1312,1507,1652,1743,1747,1648,1461, 1247,1023,738,328,-207,-761,-1213,-1481,-1581,-1590, -1580,-1572,-1542,-1451,-1273,-1020,-687,-260,218,666, 1026,1288,1495,1665,1764,1750,1632,1453,1274,1072, 769,326,-228,-767,-1183,-1421,-1526,-1561,-1582,-1593, -1568,-1475,-1305,-1057,-711,-275,206,648,996,1262, 1483,1662,1753,1717,1593,1447,1295,1098,775,302, -253,-760,-1130,-1339,-1456,-1519,-1570,-1589,-1565,-1486, -1343,-1097,-738,-284,188,602,941,1232,1487,1668, 1731,1669,1562,1461,1345,1137,777,275,-283,-762, -1096,-1290,-1406,-1487,-1546,-1565,-1549,-1493,-1355,-1095, -720,-265,182,569,912,1220,1482,1643,1678,1618, 1544,1477,1374,1157,773,262,-277,-725,-1036,-1235, -1367,-1463,-1525,-1559,-1571,-1534,-1386,-1097,-704,-274, 140,524,896,1226,1471,1597,1618,1587,1566,1535, 1433,1182,768,258,-250,-662,-964,-1180,-1331,-1429, -1494,-1548,-1587,-1558,-1400,-1093,-706,-307,78,471, 867,1222,1464,1564,1569,1563,1585,1577,1456,1160, 722,218,-253,-641,-932,-1147,-1299,-1393,-1475,-1556, -1614,-1577,-1391,-1084,-722,-342,50,461,869,1218, 1438,1524,1543,1572,1623,1614,1462,1133,683,200, -246,-620,-913,-1121,-1259,-1361,-1473,-1586,-1648,-1584, -1374,-1078,-744,-383,26,461,872,1191,1386,1480, 1540,1622,1693,1671,1484,1133,682,208,-233,-603, -895,-1089,-1216,-1336,-1471,-1593,-1637,-1554,-1343,-1064, -755,-400,17,472,877,1169,1336,1431,1524,1639, 1720,1677,1466,1113,680,214,-233,-609,-885,-1058, -1195,-1342,-1493,-1611,-1636,-1542,-1344,-1096,-805,-444, 0,473,868,1125,1274,1387,1521,1660,1729,1660, 1442,1102,681,217,-234,-598,-850,-1023,-1181,-1351, -1514,-1622,-1631,-1532,-1359,-1132,-848,-462,15,491, 855,1082,1230,1378,1548,1689,1732,1649,1440,1104, 678,209,-225,-558,-785,-959,-1133,-1322,-1491,-1589, -1581,-1496,-1357,-1153,-851,-426,69,511,827,1032, 1196,1369,1544,1669,1699,1613,1411,1075,643,187, -217,-517,-727,-905,-1100,-1301,-1467,-1557,-1556,-1492, -1375,-1172,-844,-387,102,501,777,974,1160,1357, 1538,1654,1680,1595,1383,1034,591,146,-222,-491, -696,-899,-1119,-1316,-1462,-1539,-1555,-1520,-1421,-1202, -840,-370,98,470,733,944,1157,1380,1568,1686, 1717,1631,1400,1030,582,154,-180,-433,-651,-881, -1114,-1314,-1449,-1523,-1560,-1552,-1459,-1212,-819,-350, 86,438,700,930,1159,1392,1585,1708,1741,1642, 1393,1003,566,170,-137,-380,-609,-851,-1086,-1282, -1408,-1497,-1567,-1583,-1472,-1199,-801,-353,61,396, 671,918,1153,1383,1577,1712,1746,1630,1355,959, 545,182,-112,-364,-612,-864,-1088,-1255,-1385,-1497, -1599,-1619,-1481,-1190,-795,-373,18,355,645,908, 1157,1388,1589,1731,1764,1632,1333,938,548,219, -59,-331,-613,-873,-1083,-1234,-1382,-1538,-1657,-1657, -1483,-1170,-779,-384,-7,323,613,876,1129,1366, 1578,1721,1740,1586,1277,895,547,257,-16,-304, -590,-831,-1009,-1159,-1338,-1531,-1661,-1649,-1462,-1145, -765,-383,-21,297,580,832,1080,1331,1569,1716, 1707,1517,1205,864,566,298,12,-287,-553,-756, -913,-1087,-1293,-1502,-1627,-1602,-1408,-1094,-738,-376, -30,278,554,801,1056,1327,1581,1723,1689,1487, 1187,885,612,330,23,-276,-521,-709,-888,-1109, -1348,-1552,-1657,-1609,-1407,-1099,-746,-387,-46,253, 513,769,1050,1350,1601,1712,1643,1434,1162,891, 621,318,-2,-289,-506,-685,-884,-1136,-1402,-1611, -1702,-1642,-1437,-1126,-757,-386,-48,242,499,758, 1062,1376,1613,1685,1586,1384,1157,908,623,296, -24,-282,-478,-657,-879,-1147,-1413,-1617,-1701,-1639, -1433,-1122,-753,-393,-66,215,487,782,1114,1422, 1632,1679,1585,1416,1216,971,667,327,16,-222, -413,-615,-873,-1166,-1440,-1629,-1700,-1635,-1441,-1134, -773,-429,-133,130,425,775,1146,1453,1626,1658, 1579,1434,1237,987,684,367,86,-139,-335,-562, -844,-1152,-1424,-1608,-1679,-1616,-1421,-1114,-767,-456, -207,42,364,747,1126,1415,1566,1590,1532,1408, 1208,943,640,349,106,-104,-312,-558,-851,-1155, -1411,-1585,-1649,-1584,-1382,-1081,-764,-490,-258,1, 350,755,1128,1395,1533,1565,1527,1410,1202,923, 618,342,117,-87,-308,-572,-873,-1171,-1425,-1598, -1658,-1575,-1353,-1053,-758,-516,-290,-5,373,784, 1135,1372,1502,1551,1522,1406,1195,918,633,390, 187,-20,-261,-542,-847,-1149,-1414,-1603,-1654,-1543, -1299,-1012,-757,-543,-308,9,399,792,1111,1336, 1468,1534,1512,1389,1172,897,635,423,235,17, -231,-512,-812,-1121,-1404,-1598,-1630,-1491,-1245,-994, -786,-589,-332,20,417,784,1082,1303,1453,1528, 1506,1363,1133,867,635,443,251,25,-228,-500, -803,-1129,-1431,-1610,-1613,-1456,-1228,-1018,-840,-633, -344,33,427,770,1044,1264,1427,1509,1477,1324, 1099,861,662,479,283,59,-188,-468,-797,-1150, -1451,-1603,-1577,-1428,-1243,-1075,-910,-689,-380,-2, 383,723,1005,1244,1423,1502,1451,1293,1082,873, 685,507,327,136,-94,-396,-757,-1126,-1405,-1524, -1493,-1378,-1230,-1088,-923,-691,-376,-8,370,709, 1008,1263,1443,1501,1424,1254,1057,871,687,514, 352,184,-53,-384,-777,-1142,-1389,-1485,-1456,-1365, -1248,-1117,-939,-691,-366,-6,352,688,997,1262, 1427,1460,1374,1227,1060,885,701,526,370,206, -39,-392,-802,-1157,-1376,-1458,-1439,-1380,-1298,-1181, -1000,-741,-415,-66,287,632,955,1219,1367,1391, 1322,1203,1055,885,716,566,427,252,-21,-400, -801,-1130,-1311,-1374,-1370,-1346,-1286,-1161,-964,-702, -403,-75,284,642,963,1198,1314,1328,1275,1174, 1028,860,705,580,454,260,-55,-458,-854,-1148, -1296,-1344,-1349,-1338,-1275,-1130,-914,-650,-364,-44, 325,696,1008,1215,1313,1327,1281,1173,1022,860, 725,620,493,264,-91,-514,-895,-1156,-1290,-1354, -1377,-1370,-1294,-1141,-927,-672,-374,-24,366,738, 1032,1226,1327,1351,1304,1190,1039,894,790,704, 557,278,-127,-557,-908,-1138,-1273,-1360,-1406,-1393, -1296,-1142,-945,-710,-408,-36,362,728,1005,1197, 1305,1338,1282,1159,1012,897,822,743,572,259, -157,-568,-887,-1113,-1268,-1374,-1422,-1394,-1292,-1150, -978,-754,-448,-69,323,676,954,1161,1279,1309, 1239,1112,986,907,868,789,591,258,-149,-528, -830,-1063,-1244,-1355,-1388,-1353,-1263,-1149,-993,-764, -447,-64,313,648,922,1134,1251,1264,1192,1080, 988,948,922,830,600,246,-150,-499,-788,-1022, -1206,-1312,-1327,-1285,-1215,-1121,-971,-735,-416,-43, 320,644,917,1120,1225,1224,1141,1045,989,981, 956,834,576,214,-166,-503,-785,-1022,-1202,-1294, -1304,-1273,-1221,-1129,-974,-729,-410,-47,312,638, 911,1106,1196,1177,1090,1013,1000,1023,998,856, 582,227,-144,-483,-779,-1019,-1191,-1275,-1296,-1280, -1246,-1160,-1003,-761,-450,-97,258,599,883,1069, 1138,1103,1029,984,1002,1033,994,830,557,219, -136,-473,-770,-1000,-1150,-1226,-1255,-1250,-1226,-1152, -1000,-768,-472,-139,223,582,878,1052,1090,1043, 995,993,1034,1055,987,809,547,228,-121,-458, -749,-965,-1104,-1178,-1212,-1224,-1200,-1115,-957,-729, -447,-120,253,627,918,1063,1076,1031,1019,1060, 1109,1113,1031,854,602,281,-80,-424,-712,-919, -1058,-1144,-1204,-1232,-1208,-1112,-951,-736,-466,-130, 257,627,890,1006,1010,996,1022,1086,1135,1120, 1021,847,597,277,-84,-432,-716,-917,-1048,-1144, -1221,-1267,-1248,-1150,-992,-787,-519,-169,233,590, 821,910,922,935,991,1063,1109,1092,999,828, 580,264,-89,-420,-682,-873,-1017,-1134,-1224,-1265, -1237,-1145,-1000,-791,-497,-119,286,606,794,862, 888,927,996,1068,1106,1088,1002,842,594,272, -77,-386,-622,-807,-964,-1102,-1190,-1214,-1185,-1116, -998,-784,-458,-49,345,622,761,817,859,923, 998,1061,1096,1084,1003,838,578,253,-85,-374, -599,-786,-950,-1080,-1150,-1162,-1140,-1092,-988,-771, -423,-2,378,626,737,785,832,901,977,1042, 1088,1092,1016,833,555,216,-116,-395,-622,-812, -985,-1102,-1154,-1156,-1147,-1115,-1004,-761,-387,33, 389,613,722,779,836,900,971,1040,1092,1098, 1013,812,521,183,-143,-421,-665,-871,-1039,-1141, -1182,-1198,-1211,-1190,-1060,-787,-397,13,343,555, 678,757,832,907,992,1078,1140,1139,1045,839, 552,228,-83,-364,-624,-843,-1005,-1097,-1149,-1191, -1227,-1204,-1057,-765,-386,-10,288,489,622,715, 799,892,1002,1117,1191,1190,1074,866,600,307, 12,-285,-562,-777,-919,-1003,-1075,-1152,-1207,-1175, -1003,-698,-335,4,268,457,589,686,773,870, 994,1118,1192,1164,1025,814,564,290,-10,-314, -582,-776,-899,-985,-1082,-1184,-1240,-1182,-986,-673, -328,-9,241,425,546,633,716,823,969,1112, 1186,1146,1001,801,562,283,-33,-336,-582,-748, -865,-967,-1090,-1198,-1237,-1156,-949,-655,-335,-38, 199,365,469,547,633,767,936,1089,1159,1112, 977,800,580,301,-20,-319,-549,-690,-802,-919, -1059,-1174,-1192,-1093,-885,-615,-327,-54,175,334, 428,505,609,761,935,1077,1126,1077,965,805, 587,300,-24,-310,-517,-656,-780,-923,-1073,-1173, -1174,-1063,-860,-603,-325,-60,156,301,397,489, 622,794,965,1093,1134,1096,994,833,602,302, -22,-288,-474,-612,-761,-934,-1091,-1175,-1160,-1045, -856,-609,-326,-53,147,263,346,455,621,819, 989,1096,1130,1097,999,824,570,258,-47,-279, -443,-584,-753,-941,-1098,-1170,-1142,-1023,-837,-600, -332,-78,105,218,307,438,624,834,1003,1097, 1126,1100,1000,810,529,216,-68,-276,-435,-591, -779,-974,-1119,-1185,-1158,-1040,-841,-590,-335,-121, 36,160,292,459,662,861,1021,1122,1168,1144, 1029,818,532,219,-49,-239,-394,-568,-775,-975, -1121,-1196,-1175,-1060,-851,-586,-334,-146,-10,118, 282,477,679,862,1019,1138,1204,1188,1064,838, 556,274,29,-158,-329,-527,-745,-943,-1092,-1176, -1167,-1056,-847,-590,-359,-196,-73,65,248,452, 652,829,994,1131,1210,1186,1055,823,560,309, 90,-113,-317,-530,-738,-929,-1082,-1166,-1154,-1028, -815,-577,-377,-233,-114,42,238,447,642,818, 991,1140,1210,1161,1000,766,522,298,91,-119, -332,-540,-746,-940,-1103,-1186,-1152,-1001,-781,-565, -397,-271,-146,22,224,430,621,804,991,1147, 1217,1148,973,743,518,314,116,-99,-319,-532, -745,-952,-1129,-1212,-1161,-999,-784,-593,-445,-331, -199,-24,179,387,594,800,1010,1171,1233,1159, 988,775,571,377,177,-40,-259,-480,-703,-932, -1115,-1182,-1105,-936,-747,-589,-463,-341,-199,-26, 166,367,584,817,1030,1180,1218,1138,979,791, 604,415,212,-3,-213,-436,-681,-929,-1107,-1150, -1062,-894,-727,-592,-479,-351,-212,-62,106,308, 542,798,1018,1155,1173,1098,957,791,616,432, 239,34,-182,-426,-693,-940,-1102,-1141,-1066,-921, -771,-642,-523,-403,-273,-134,27,242,507,787, 1007,1123,1131,1059,938,786,622,453,280,90, -133,-397,-674,-915,-1057,-1086,-1012,-883,-760,-646, -532,-413,-287,-160,-2,224,501,772,974,1076, 1086,1023,912,771,617,461,311,141,-82,-366, -653,-876,-987,-993,-922,-820,-714,-607,-497,-386, -286,-182,-24,213,497,755,938,1032,1043,989, 885,749,605,473,345,183,-55,-359,-646,-845, -927,-918,-868,-794,-694,-578,-474,-395,-331,-229, -49,206,489,738,918,1013,1028,973,867,733, 606,499,382,208,-55,-366,-644,-825,-901,-899, -861,-788,-687,-578,-482,-426,-378,-274,-84,186, 469,711,891,995,1017,960,847,715,594,492, 368,172,-104,-401,-646,-807,-889,-905,-870,-792, -684,-584,-510,-471,-419,-301,-87,189,468,707, 890,998,1017,952,836,718,624,529,383,157, -127,-407,-636,-791,-872,-896,-866,-786,-682,-586, -534,-508,-450,-307,-65,221,493,723,908,1019, 1033,958,839,742,674,588,427,174,-130,-406, -622,-766,-852,-881,-848,-764,-667,-597,-561,-535, -458,-299,-60,224,500,736,916,1010,1001,920, 819,747,692,600,424,168,-123,-380,-577,-718, -811,-843,-809,-735,-666,-632,-619,-585,-483,-308, -72,202,477,725,906,979,950,872,803,764, 721,615,413,144,-135,-383,-583,-731,-821,-841, -799,-732,-682,-663,-653,-604,-488,-305,-74,199, 484,737,896,941,900,838,796,767,714,589, 372,97,-182,-425,-625,-771,-853,-853,-795,-727, -684,-669,-649,-590,-478,-303,-62,229,531,765, 895,917,879,836,810,783,710,572,365,108, -156,-398,-602,-741,-801,-787,-730,-686,-667,-657, -631,-576,-477,-314,-69,240,549,770,875,890, 869,855,844,814,731,583,381,138,-119,-369, -577,-716,-757,-732,-688,-665,-663,-660,-639,-590, -501,-347,-96,223,529,741,838,853,856,861, 857,815,722,577,381,134,-132,-388,-595,-724, -771,-766,-753,-750,-743,-727,-697,-649,-558,-380, -100,230,519,709,805,846,881,906,898,848, 756,616,421,163,-115,-379,-579,-705,-762,-784, -799,-806,-797,-778,-747,-694,-585,-379,-77,251, 516,683,780,847,900,934,931,889,806,665, 467,206,-80,-338,-527,-636,-693,-728,-752,-761, -762,-757,-750,-710,-589,-361,-51,259,502,653, 748,821,883,925,929,891,811,680,483,213, -78,-333,-508,-604,-662,-706,-733,-743,-748,-759, -774,-743,-613,-373,-69,224,444,587,688,774, 845,891,902,874,812,693,492,222,-64,-308, -473,-575,-647,-699,-728,-742,-760,-786,-807,-770, -626,-379,-85,191,399,542,653,744,815,860, 871,854,794,666,458,197,-63,-279,-436,-550, -631,-673,-694,-711,-745,-788,-804,-747,-582,-333, -51,207,405,550,661,748,815,859,882,870, 806,665,448,188,-54,-250,-404,-529,-612,-644, -649,-673,-727,-791,-808,-738,-568,-332,-74,167, 361,511,630,722,803,864,908,911,850,702, 482,227,-13,-212,-375,-497,-572,-601,-621,-673, -758,-836,-851,-767,-592,-364,-116,117,317,478, 599,689,774,859,918,918,836,678,470,238, 7,-202,-371,-489,-556,-590,-627,-704,-807,-884, -884,-776,-591,-359,-115,120,329,494,608,690, 774,869,929,913,808,640,443,231,7,-202, -364,-466,-521,-550,-603,-695,-806,-882,-870,-762, -581,-360,-128,109,317,479,592,685,792,894, 945,910,796,633,444,237,7,-205,-355,-427, -461,-502,-582,-700,-816,-883,-866,-765,-598,-384, -155,74,268,414,529,646,771,877,919,880, 773,621,439,230,0,-203,-330,-384,-411,-460, -567,-708,-825,-873,-842,-738,-575,-367,-125,100, 273,391,500,628,765,868,897,851,750,608, 426,206,-26,-210,-313,-350,-380,-447,-565,-704, -811,-850,-809,-698,-535,-335,-111,97,260,380, 497,634,773,867,891,845,750,609,422,195, -34,-207,-294,-328,-373,-464,-593,-721,-816,-849, -809,-703,-542,-345,-143,39,188,320,456,606, 741,825,848,818,736,600,410,183,-29,-172, -245,-282,-337,-439,-573,-704,-807,-849,-817,-707, -533,-336,-149,13,158,301,457,613,740,813, 841,822,745,606,401,175,-21,-145,-212,-265, -344,-458,-594,-726,-834,-886,-845,-719,-531,-333, -157,4,168,335,504,654,771,849,886,874, 792,632,424,205,28,-89,-164,-239,-339,-464, -602,-746,-857,-905,-857,-726,-550,-375,-221,-64, 115,306,488,639,760,857,917,918,826,658, 452,265,119,15,-73,-171,-289,-424,-571,-727, -848,-895,-841,-714,-563,-429,-308,-169,5,205, 401,563,697,812,896,908,815,639,444,283, 165,75,-17,-130,-265,-425,-594,-751,-863,-895, -826,-698,-555,-433,-323,-188,-14,184,372,534, 678,809,903,905,795,618,437,286,162,62, -28,-127,-257,-422,-602,-762,-861,-874,-803,-681, -555,-440,-321,-176,1,193,373,543,706,849, 936,923,803,627,453,314,202,109,26,-73, -209,-384,-578,-742,-833,-830,-756,-656,-565,-474, -357,-203,-29,148,325,507,689,836,903,873, 755,593,434,305,218,152,79,-29,-180,-374, -578,-744,-823,-811,-737,-651,-575,-490,-376,-229, -65,113,304,500,689,832,880,827,699,544, 391,271,189,135,74,-35,-199,-405,-608,-761, -822,-811,-758,-698,-626,-528,-406,-269,-121,62, 275,503,712,855,898,846,723,574,430,319, 249,203,141,19,-170,-392,-594,-726,-783,-790, -771,-735,-675,-580,-464,-344,-215,-39,192,445, 665,808,856,821,720,595,465,365,311,278, 220,89,-115,-335,-519,-635,-698,-726,-725,-698, -638,-557,-464,-363,-240,-55,188,444,649,770, 810,773,676,548,423,336,300,285,230,89, -124,-335,-495,-593,-652,-681,-677,-637,-571,-500, -430,-345,-215,-13,232,476,664,769,792,739, 627,495,377,315,300,300,242,86,-133,-342, -486,-577,-638,-674,-672,-637,-581,-528,-480,-405, -267,-54,196,435,614,715,735,679,577,457, 364,316,316,320,264,111,-96,-295,-438,-530, -599,-643,-649,-618,-575,-538,-505,-435,-288,-69, 183,414,589,694,716,654,544,420,338,314, 324,311,222,60,-131,-302,-432,-530,-604,-640, -634,-595,-555,-521,-482,-402,-248,-28,230,466, 637,734,743,662,528,399,329,322,329,282, 159,-15,-189,-334,-454,-552,-617,-638,-619,-582, -552,-524,-475,-376,-205,29,289,522,688,768, 754,654,517,406,358,358,352,290,164,-3, -172,-325,-456,-559,-618,-632,-617,-596,-584,-567, -519,-411,-230,8,268,510,684,755,719,608, 487,406,385,383,363,292,171,12,-163,-335, -473,-572,-625,-646,-644,-642,-638,-625,-578,-476, -299,-57,226,494,686,755,715,615,518,468, 457,449,411,327,200,34,-151,-320,-459,-556, -609,-629,-631,-637,-645,-646,-606,-507,-331,-82, 211,486,675,744,714,637,573,553,553,542, 498,417,295,131,-63,-251,-400,-497,-555,-583, -603,-633,-660,-665,-632,-540,-371,-129,164,434, 611,667,633,576,541,536,535,517,473,404, 295,140,-52,-248,-402,-493,-540,-575,-610,-653, -685,-695,-660,-568,-385,-115,190,454,608,643, 606,561,544,542,536,508,464,399,285,119, -76,-256,-393,-474,-524,-564,-605,-657,-701,-724, -696,-587,-373,-71,246,485,609,640,616,590, 581,581,572,549,510,440,320,146,-54,-231, -350,-423,-481,-537,-597,-654,-711,-755,-746,-629, -395,-77,231,454,564,595,582,564,557,557, 550,535,504,433,307,127,-62,-221,-325,-399, -468,-537,-607,-678,-754,-814,-798,-658,-398,-75, 223,430,535,576,583,581,573,566,560,553, 532,469,335,154,-36,-191,-290,-362,-429,-501, -587,-679,-778,-848,-825,-673,-405,-85,196,390, 494,543,572,587,591,587,588,586,562,489, 358,179,-8,-161,-267,-337,-400,-473,-565,-677, -796,-870,-843,-684,-417,-116,143,316,413,461, 488,499,506,511,534,545,517,431,307,158, 12,-118,-223,-292,-345,-410,-522,-667,-808,-880, -834,-661,-407,-129,112,280,377,431,451,450, 455,483,525,550,523,442,335,221,102,-22, -129,-196,-237,-311,-454,-637,-794,-850,-789,-620, -386,-135,93,262,371,423,440,449,464,500, 545,569,544,469,367,252,126,-4,-102,-170, -224,-323,-488,-681,-829,-871,-788,-608,-378,-140, 76,240,345,391,401,415,444,484,519,532, 505,441,348,233,100,-22,-112,-176,-238,-358, -541,-738,-872,-890,-788,-600,-377,-144,71,245, 353,391,395,416,469,526,561,565,541,483, 398,279,145,20,-65,-131,-220,-373,-582,-781, -901,-903,-797,-616,-399,-169,51,222,324,368, 388,425,488,548,588,600,582,531,439,310, 182,84,11,-68,-200,-398,-629,-829,-938,-930, -824,-647,-431,-201,12,172,266,324,373,428, 490,545,586,604,592,543,449,329,223,151, 94,-1,-165,-394,-640,-841,-940,-930,-818,-638, -421,-202,-3,149,246,313,372,438,506,556, 588,607,601,551,450,335,243,185,130,21, -170,-421,-665,-851,-948,-944,-831,-641,-422,-219, -45,97,201,280,350,421,485,534,565,591, 584,526,431,329,263,230,174,38,-182,-438, -675,-855,-958,-954,-837,-646,-431,-239,-72,66, 171,248,321,395,466,518,556,578,560,494, 403,329,297,287,231,82,-152,-417,-659,-842, -937,-920,-798,-613,-412,-225,-57,83,182,252, 313,386,459,528,579,594,558,478,382,323, 313,312,247,86,-155,-423,-669,-857,-948,-916, -789,-604,-418,-248,-96,45,155,240,309,386, 474,564,630,638,587,499,420,377,368,349, 262,77,-183,-460,-708,-889,-978,-954,-829,-643, -463,-305,-163,-16,124,237,318,397,493,594, 662,666,603,523,466,438,427,393,299,107, -173,-471,-722,-897,-983,-970,-862,-695,-522,-368, -233,-100,28,145,249,352,468,574,636,637, 584,524,485,474,472,435,329,132,-149,-445, -708,-891,-970,-943,-837,-693,-539,-394,-253,-128, -18,93,217,353,487,589,633,623,580,541, 521,526,532,494,380,169,-117,-421,-689,-866, -932,-897,-789,-650,-504,-362,-220,-95,15,123, 244,383,514,602,629,602,558,533,533,553, 560,526,414,201,-101,-420,-682,-851,-914,-892, -805,-673,-521,-373,-241,-138,-51,53,191,347, 482,561,574,540,498,490,519,557,571,537, 422,204,-97,-411,-672,-840,-906,-889,-813,-692, -540,-387,-263,-183,-112,-3,160,335,467,530, 529,500,478,486,527,574,602,570,442,203, -102,-414,-664,-818,-876,-860,-781,-654,-508,-366, -262,-187,-105,25,204,379,496,543,538,518, 512,531,578,635,660,615,465,205,-116,-433, -675,-823,-879,-869,-795,-668,-520,-394,-302,-232, -126,36,229,398,501,542,547,538,543,576, 637,699,721,661,496,215,-120,-440,-689,-840, -903,-892,-817,-690,-546,-423,-335,-255,-134,44, 243,399,484,511,516,517,535,583,656,728, 758,695,510,214,-128,-446,-694,-849,-913,-897, -813,-688,-560,-450,-373,-285,-156,28,227,380, 467,497,500,501,524,574,660,739,763,683, 478,179,-159,-476,-717,-871,-928,-900,-808,-690, -584,-497,-429,-338,-194,-1,196,350,445,487, 499,501,531,603,713,800,808,702,489,189, -145,-457,-702,-858,-917,-876,-771,-648,-555,-488, -420,-307,-143,55,233,366,448,484,491,497, 545,646,767,852,846,734,523,228,-103,-417, -665,-823,-882,-844,-741,-627,-542,-488,-423,-308, -131,71,249,372,437,453,452,469,538,650, 769,840,825,705,492,203,-121,-439,-691,-844, -888,-844,-755,-662,-595,-540,-468,-354,-184,16, 200,330,394,405,403,440,527,649,772,847, 829,698,480,193,-129,-442,-692,-829,-852,-802, -730,-667,-617,-561,-482,-364,-207,-20,154,286, 352,369,381,436,543,684,814,887,869,742, 522,227,-110,-429,-661,-774,-784,-741,-693,-652, -614,-559,-482,-366,-202,-1,180,303,348,359, 388,470,598,743,870,942,921,793,562,253, -97,-419,-651,-767,-786,-763,-734,-700,-659,-603, -530,-408,-227,-6,186,297,330,341,386,489, 634,782,906,979,964,829,584,257,-96,-407, -630,-741,-777,-776,-763,-745,-717,-674,-597,-464, -279,-72,107,218,259,281,345,464,622,785, 920,1002,994,862,609,268,-89,-392,-598,-709, -758,-773,-775,-772,-757,-713,-624,-474,-280,-79, 84,186,238,276,352,484,655,832,972,1048, 1031,892,635,287,-75,-375,-580,-695,-750,-775, -784,-788,-776,-726,-616,-439,-225,-24,126,212, 254,296,383,521,693,862,1003,1071,1044,894, 624,272,-84,-373,-566,-675,-732,-752,-769,-784, -788,-746,-628,-445,-237,-63,51,110,149,224, 343,495,663,836,986,1069,1035,872,594,253, -91,-370,-559,-670,-728,-757,-782,-807,-813,-764, -632,-442,-247,-95,-3,55,119,213,338,488, 666,862,1029,1109,1055,875,595,262,-73,-350, -541,-651,-710,-758,-800,-837,-835,-771,-629,-433, -243,-105,-9,73,167,269,377,517,702,912, 1079,1140,1069,882,605,274,-67,-344,-524,-626, -694,-759,-827,-875,-870,-787,-635,-454,-285,-159, -67,16,114,234,365,525,725,936,1101,1160, 1091,900,624,294,-43,-312,-494,-604,-683,-760, -842,-904,-898,-802,-641,-461,-300,-175,-87,-18, 60,179,339,532,747,959,1121,1175,1102,913, 638,318,1,-258,-439,-550,-634,-728,-824,-887, -882,-793,-649,-480,-319,-194,-110,-51,12,129, 307,529,771,995,1155,1204,1126,930,653,341, 39,-209,-380,-493,-597,-712,-819,-883,-869,-786, -656,-501,-358,-245,-168,-116,-60,49,231,477, 747,989,1154,1204,1124,926,650,346,57,-173, -338,-472,-599,-728,-838,-893,-878,-793,-660,-506, -366,-261,-200,-157,-100,15,212,468,747,988, 1141,1178,1093,901,628,320,47,-156,-309,-451, -603,-753,-861,-895,-857,-767,-641,-493,-349,-240, -183,-139,-64,78,289,545,818,1051,1191,1214, 1109,896,610,301,34,-162,-322,-480,-646,-789, -887,-909,-864,-769,-646,-501,-352,-248,-192,-150, -68,94,325,599,876,1110,1251,1267,1150,922, 640,350,91,-119,-302,-480,-659,-808,-902,-928, -891,-798,-664,-516,-382,-291,-243,-197,-110,64, 316,612,897,1124,1257,1266,1142,915,643,377, 139,-71,-273,-473,-661,-814,-921,-965,-935,-839, -705,-563,-448,-370,-325,-269,-155,39,307,613, 912,1155,1290,1280,1133,901,645,404,178,-41, -263,-480,-675,-829,-944,-996,-973,-879,-754,-618, -509,-434,-389,-324,-195,23,313,638,958,1214, 1351,1332,1180,956,711,477,250,16,-214,-441, -646,-818,-940,-989,-963,-879,-763,-638,-539,-472, -424,-355,-217,12,318,664,992,1242,1361,1339, 1196,984,756,536,314,75,-173,-414,-627,-807, -941,-1002,-982,-893,-773,-655,-568,-517,-472,-396, -248,-9,305,665,1004,1251,1356,1320,1183,987, 776,559,336,88,-170,-424,-658,-857,-998,-1061, -1039,-942,-817,-705,-624,-572,-530,-451,-298,-42, 298,669,1003,1236,1330,1296,1167,984,774,555, 324,72,-184,-439,-675,-879,-1019,-1074,-1039,-931, -806,-705,-638,-594,-555,-474,-318,-57,295,672, 993,1204,1286,1253,1134,959,766,576,375,138, -126,-391,-631,-824,-956,-1007,-971,-867,-752,-666, -613,-582,-541,-456,-288,-14,347,729,1046,1244, 1307,1260,1139,982,806,621,418,176,-99,-380, -638,-841,-969,-1008,-965,-874,-777,-697,-640,-605, -560,-466,-275,24,395,768,1067,1249,1308,1267, 1155,1012,841,647,429,177,-104,-401,-673,-881, -1000,-1032,-996,-922,-835,-761,-708,-681,-642,-545, -338,-24,353,726,1022,1204,1268,1245,1156,1024, 867,692,491,248,-42,-355,-639,-847,-965,-1002, -978,-914,-835,-779,-753,-742,-707,-602,-388,-58, 335,712,1004,1183,1255,1241,1159,1030,881,718, 524,270,-34,-348,-622,-823,-942,-984,-954,-885, -809,-769,-767,-767,-729,-613,-381,-35,360,727, 1004,1172,1241,1225,1152,1043,913,756,552,289, -25,-348,-630,-835,-951,-992,-966,-907,-847,-811, -808,-801,-753,-616,-362,-2,394,752,1025,1197, 1268,1258,1199,1108,990,832,619,340,13,-324, -619,-836,-961,-991,-960,-906,-860,-845,-852,-853, -803,-650,-371,4,396,742,1006,1182,1264,1265, 1208,1114,993,835,616,321,-22,-360,-643,-852, -975,-1010,-975,-913,-868,-862,-889,-905,-852,-686, -395,-15,380,725,992,1166,1248,1252,1208,1136, 1034,880,649,338,-20,-372,-663,-881,-1014,-1059, -1032,-974,-937,-940,-967,-965,-881,-687,-385,3, 413,781,1058,1227,1298,1302,1277,1223,1126,963, 721,395,27,-332,-631,-851,-977,-1016,-1004,-977, -969,-991,-1023,-1010,-908,-691,-364,38,452,818, 1091,1254,1322,1333,1315,1267,1170,1005,760,439, 71,-290,-596,-810,-929,-973,-978,-974,-990,-1034, -1072,-1058,-943,-712,-369,39,445,790,1040,1195, 1273,1307,1305,1268,1183,1023,778,452,74,-299, -618,-843,-968,-1012,-1016,-1020,-1052,-1110,-1150,-1128, -1004,-760,-413,0,406,741,979,1129,1220,1275, 1292,1265,1182,1029,789,463,80,-298,-613,-829, -949,-994,-1002,-1021,-1075,-1150,-1196,-1174,-1043,-788, -425,-4,395,718,954,1115,1226,1299,1331,1316, 1240,1092,858,531,144,-232,-536,-737,-845,-894, -923,-964,-1037,-1121,-1172,-1145,-1004,-739,-372,43, 425,728,945,1106,1224,1307,1350,1342,1271,1118, 870,527,129,-253,-552,-740,-838,-885,-930,-993, -1074,-1151,-1188,-1148,-1000,-728,-350,65,439,727, 933,1087,1203,1282,1320,1310,1237,1071,804,445, 43,-330,-615,-793,-895,-954,-1006,-1075,-1165,-1246, -1277,-1221,-1050,-759,-371,41,416,708,923,1083, 1206,1294,1346,1348,1277,1102,818,439,32,-320, -579,-744,-843,-909,-976,-1057,-1158,-1251,-1292,-1232, -1043,-744,-374,20,381,672,895,1074,1224,1339, 1417,1439,1377,1203,909,529,127,-229,-499,-682, -784,-850,-923,-1031,-1160,-1267,-1310,-1248,-1059,-754, -385,-3,346,629,861,1054,1219,1349,1439,1471, 1414,1242,955,591,202,-164,-454,-648,-764,-843, -929,-1049,-1192,-1309,-1348,-1272,-1070,-767,-406,-37, 303,590,820,1015,1184,1332,1439,1477,1411,1227, 934,570,180,-179,-461,-646,-761,-850,-955,-1090, -1238,-1352,-1373,-1274,-1057,-752,-400,-44,285,570, 802,1001,1184,1347,1468,1508,1437,1243,939,562, 162,-196,-462,-636,-754,-859,-986,-1143,-1308,-1429, -1451,-1340,-1110,-797,-442,-87,246,531,772,988, 1197,1382,1516,1559,1484,1283,972,584,176,-182, -440,-603,-723,-850,-1006,-1184,-1356,-1471,-1487,-1374, -1143,-835,-488,-134,202,492,745,985,1226,1442, 1591,1639,1558,1354,1041,656,256,-98,-364,-543, -677,-822,-1005,-1204,-1381,-1486,-1480,-1356,-1130,-824, -477,-124,202,485,741,998,1251,1475,1620,1664, 1584,1382,1069,687,297,-42,-303,-495,-648,-807, -1003,-1220,-1411,-1516,-1505,-1381,-1153,-845,-496,-150, 168,449,717,986,1246,1473,1628,1677,1592,1373, 1042,646,251,-84,-333,-515,-672,-845,-1051,-1269, -1451,-1547,-1532,-1402,-1170,-860,-519,-179,139,430, 711,992,1263,1499,1658,1704,1619,1394,1051,645, 237,-96,-334,-511,-684,-883,-1104,-1322,-1493,-1576, -1554,-1414,-1173,-865,-536,-210,101,400,689,981, 1260,1503,1659,1696,1600,1379,1050,658,271,-45, -274,-453,-637,-850,-1089,-1321,-1502,-1584,-1553,-1406, -1161,-856,-541,-234,66,377,689,995,1281,1522, 1681,1711,1603,1366,1035,663,315,29,-189,-378, -573,-793,-1039,-1277,-1463,-1546,-1503,-1347,-1111,-825, -531,-242,52,363,683,1000,1287,1515,1660,1690, 1577,1320,976,610,283,16,-203,-401,-611,-841, -1090,-1327,-1499,-1559,-1501,-1338,-1104,-836,-562,-283, 8,312,622,940,1244,1500,1664,1689,1558,1296, 957,605,285,12,-215,-421,-642,-891,-1159,-1402, -1571,-1627,-1560,-1389,-1146,-878,-613,-338,-39,285, 623,960,1288,1569,1747,1766,1618,1341,1005,668, 361,93,-143,-374,-620,-896,-1178,-1424,-1581,-1625, -1557,-1388,-1151,-882,-610,-331,-22,320,678,1034, 1374,1666,1850,1862,1700,1414,1075,741,441,172, -84,-339,-610,-906,-1201,-1444,-1590,-1623,-1549,-1381, -1154,-896,-633,-354,-41,304,662,1028,1385,1689, 1863,1864,1697,1420,1097,773,478,205,-61,-331, -618,-929,-1234,-1484,-1637,-1671,-1594,-1434,-1216,-971, -714,-444,-140,210,591,984,1360,1656,1810,1793, 1624,1359,1050,743,460,195,-71,-353,-654,-970, -1272,-1511,-1650,-1669,-1588,-1431,-1223,-984,-724,-454, -149,204,602,1014,1404,1706,1860,1831,1651,1378, 1078,790,520,258,-15,-313,-641,-975,-1273,-1497, -1621,-1635,-1555,-1405,-1202,-968,-719,-451,-147,221, 636,1069,1466,1769,1920,1892,1710,1435,1138,855, 594,334,48,-272,-623,-973,-1272,-1491,-1605,-1626, -1562,-1426,-1232,-1009,-773,-521,-215,174,619,1072, 1470,1761,1899,1875,1700,1434,1141,862,603,343, 47,-295,-665,-1021,-1321,-1536,-1651,-1666,-1596,-1461, -1283,-1079,-854,-599,-288,108,569,1041,1453,1744, 1881,1848,1677,1420,1141,883,644,384,68,-298, -683,-1047,-1351,-1568,-1686,-1710,-1646,-1516,-1345,-1148, -924,-662,-327,94,581,1081,1514,1813,1946,1907, 1729,1470,1198,948,716,444,111,-277,-681,-1061, -1375,-1592,-1702,-1722,-1662,-1541,-1369,-1171,-949,-682, -335,116,631,1145,1578,1873,1997,1951,1770,1523, 1269,1029,788,498,142,-264,-686,-1075,-1391,-1604, -1714,-1737,-1678,-1555,-1392,-1203,-987,-721,-367,97, 632,1156,1590,1875,1985,1930,1757,1527,1291,1065, 822,525,157,-262,-685,-1067,-1373,-1582,-1701,-1736, -1690,-1580,-1432,-1261,-1053,-786,-419,66,621,1155, 1579,1848,1947,1890,1726,1508,1281,1060,820,527, 170,-238,-651,-1028,-1338,-1563,-1692,-1720,-1664,-1562, -1440,-1299,-1114,-837,-441,64,620,1143,1556,1815, 1902,1843,1686,1488,1282,1072,834,543,189,-204, -604,-973,-1290,-1525,-1652,-1672,-1618,-1534,-1442,-1328, -1150,-868,-454,59,610,1127,1539,1792,1872,1814, 1672,1493,1302,1101,865,570,208,-192,-599,-975, -1292,-1515,-1628,-1646,-1608,-1548,-1468,-1351,-1162,-869, -454,67,640,1171,1571,1801,1864,1812,1692,1533, 1352,1143,891,579,206,-203,-611,-987,-1302,-1523, -1637,-1660,-1636,-1592,-1530,-1419,-1229,-923,-480,75, 669,1207,1604,1828,1893,1846,1734,1588,1415,1200, 932,601,218,-201,-617,-999,-1312,-1535,-1648,-1681, -1670,-1643,-1596,-1499,-1315,-1000,-536,42,644,1175, 1568,1799,1883,1857,1764,1633,1469,1260,987,651, 258,-178,-618,-1023,-1345,-1560,-1674,-1714,-1717,-1700, -1653,-1548,-1347,-1015,-534,63,678,1206,1585,1806, 1895,1883,1806,1683,1518,1309,1040,699,285,-173, -629,-1036,-1353,-1567,-1683,-1730,-1743,-1735,-1700,-1602, -1390,-1026,-511,98,706,1225,1602,1827,1922,1918, 1844,1722,1561,1359,1101,763,338,-134,-598,-1002, -1315,-1528,-1650,-1707,-1733,-1742,-1728,-1653,-1448,-1072, -541,69,667,1171,1537,1768,1881,1902,1850,1742, 1586,1391,1137,794,362,-113,-574,-972,-1284,-1501, -1631,-1696,-1737,-1773,-1781,-1706,-1489,-1096,-551,69, 668,1161,1515,1741,1864,1902,1863,1761,1609,1412, 1149,797,345,-148,-608,-996,-1295,-1508,-1638,-1717, -1777,-1834,-1851,-1759,-1514,-1093,-532,99,692,1176, 1529,1753,1875,1905,1858,1759,1612,1418,1150,786, 324,-173,-635,-1019,-1302,-1491,-1612,-1700,-1784,-1858, -1886,-1799,-1547,-1111,-533,91,667,1137,1489,1723, 1846,1875,1833,1743,1609,1419,1155,793,345,-144, -608,-991,-1260,-1432,-1551,-1657,-1770,-1874,-1920,-1838, -1578,-1129,-543,76,639,1107,1466,1709,1834,1873, 1855,1794,1671,1480,1207,841,384,-116,-583,-953, -1210,-1388,-1534,-1676,-1826,-1953,-1993,-1883,-1591,-1133, -559,61,635,1115,1480,1730,1868,1927,1925,1872, 1745,1539,1255,879,414,-98,-570,-938,-1198,-1385, -1554,-1726,-1898,-2028,-2053,-1926,-1631,-1177,-605,10, 587,1069,1433,1687,1848,1926,1929,1875,1753,1557, 1278,902,438,-67,-540,-914,-1175,-1366,-1541,-1733, -1926,-2068,-2091,-1951,-1641,-1183,-623,-21,548,1028, 1393,1648,1818,1914,1937,1893,1783,1594,1313,919, 448,-45,-494,-853,-1115,-1312,-1500,-1711,-1931,-2091, -2122,-1977,-1655,-1188,-626,-32,533,1011,1380,1639, 1814,1921,1961,1935,1831,1647,1356,957,481,-5, -434,-766,-1023,-1245,-1471,-1715,-1947,-2108,-2134,-1987, -1668,-1209,-648,-44,530,1008,1371,1636,1817,1923, 1965,1946,1856,1674,1380,971,484,-4,-427,-747, -1003,-1244,-1509,-1783,-2021,-2166,-2175,-2013,-1685,-1218, -654,-47,528,1011,1379,1645,1824,1929,1974,1956, 1861,1668,1357,931,431,-58,-456,-755,-1007,-1268, -1557,-1851,-2097,-2242,-2241,-2069,-1729,-1250,-678,-70, 507,998,1374,1639,1816,1935,2003,1999,1902,1697, 1378,947,445,-40,-426,-719,-980,-1267,-1586,-1901, -2156,-2304,-2291,-2104,-1750,-1260,-684,-78,498,988, 1366,1640,1838,1984,2075,2088,2004,1798,1463,1019, 518,42,-348,-657,-941,-1245,-1580,-1911,-2173,-2314, -2293,-2099,-1749,-1266,-692,-87,482,962,1335,1620, 1839,1998,2092,2114,2033,1814,1457,1000,515,72, -300,-615,-915,-1239,-1584,-1917,-2182,-2320,-2297,-2101, -1748,-1269,-699,-99,460,930,1299,1583,1803,1973, 2087,2117,2022,1781,1412,969,513,86,-279,-596, -912,-1265,-1643,-1998,-2265,-2399,-2367,-2163,-1798,-1303, -727,-127,436,914,1288,1576,1808,2002,2143,2180, 2066,1798,1420,991,550,129,-238,-557,-878,-1240, -1633,-1996,-2266,-2401,-2365,-2153,-1782,-1294,-729,-129, 440,917,1281,1563,1812,2033,2184,2204,2064,1776, 1395,971,543,137,-222,-547,-882,-1249,-1636,-1999, -2273,-2406,-2360,-2133,-1759,-1273,-706,-100,470,936, 1291,1577,1837,2071,2224,2235,2078,1777,1389,968, 548,148,-218,-564,-926,-1316,-1716,-2079,-2352,-2476, -2418,-2183,-1805,-1309,-724,-100,472,940,1306,1620, 1912,2161,2311,2302,2121,1806,1409,986,573,180, -191,-555,-937,-1349,-1769,-2137,-2402,-2521,-2463,-2232, -1847,-1338,-741,-121,439,895,1268,1609,1935,2209, 2362,2340,2139,1812,1419,1009,609,223,-146,-519, -921,-1361,-1802,-2182,-2448,-2573,-2528,-2298,-1898,-1375, -784,-190,350,810,1212,1584,1935,2225,2391,2379, 2185,1855,1470,1075,692,312,-67,-458,-884,-1345, -1800,-2199,-2491,-2639,-2605,-2371,-1959,-1425,-838,-262, 269,746,1183,1591,1963,2263,2422,2406,2213,1901, 1533,1162,805,447,68,-346,-804,-1291,-1766,-2182, -2494,-2655,-2628,-2390,-1972,-1434,-859,-303,213,691, 1142,1573,1966,2269,2416,2379,2180,1878,1531,1182, 844,502,128,-298,-779,-1284,-1770,-2193,-2503,-2653, -2608,-2357,-1935,-1417,-871,-340,161,639,1102,1549, 1951,2253,2399,2363,2173,1880,1545,1212,886,544, 159,-287,-783,-1298,-1798,-2243,-2573,-2724,-2657,-2383, -1954,-1447,-919,-397,110,605,1092,1558,1968,2262, 2401,2370,2191,1912,1594,1281,972,630,230,-240, -759,-1291,-1809,-2276,-2626,-2781,-2705,-2417,-1983,-1479, -957,-438,77,594,1106,1591,2009,2300,2426,2383, 2194,1909,1597,1298,1000,666,260,-221,-746,-1283, -1803,-2268,-2614,-2765,-2686,-2397,-1960,-1464,-956,-454, 57,585,1115,1614,2030,2314,2430,2375,2185,1913, 1616,1320,1021,687,276,-209,-748,-1303,-1840,-2308, -2645,-2783,-2689,-2389,-1956,-1474,-994,-509,9,565, 1121,1628,2036,2311,2417,2357,2176,1928,1656,1371, 1069,720,297,-202,-753,-1326,-1881,-2363,-2699,-2815, -2691,-2376,-1949,-1493,-1041,-561,-21,556,1127,1631, 2039,2310,2414,2348,2168,1933,1685,1416,1109,752, 325,-175,-735,-1324,-1894,-2382,-2703,-2793,-2652,-2333, -1927,-1497,-1053,-572,-34,541,1108,1620,2024,2285, 2380,2321,2156,1943,1701,1430,1120,757,333,-164, -734,-1349,-1941,-2419,-2705,-2758,-2600,-2296,-1920,-1514, -1077,-595,-50,534,1111,1625,2025,2270,2360,2312, 2169,1968,1727,1451,1141,791,369,-142,-734,-1371, -1973,-2446,-2705,-2730,-2561,-2266,-1915,-1535,-1113,-629, -68,538,1132,1646,2034,2270,2356,2317,2188,2000, 1770,1503,1205,862,444,-77,-699,-1366,-1983,-2449, -2697,-2724,-2566,-2284,-1937,-1562,-1153,-670,-99,529, 1135,1650,2026,2250,2337,2313,2204,2027,1799,1530, 1231,875,425,-133,-776,-1445,-2051,-2506,-2752,-2780, -2625,-2341,-1992,-1615,-1206,-725,-145,499,1120,1639, 2019,2254,2356,2347,2250,2079,1851,1584,1289,932, 460,-147,-832,-1512,-2104,-2536,-2770,-2793,-2633,-2352, -2019,-1666,-1260,-757,-151,506,1132,1662,2054,2301, 2415,2419,2333,2173,1953,1692,1410,1063,582,-53, -781,-1500,-2106,-2535,-2753,-2774,-2625,-2369,-2064,-1720, -1311,-789,-160,514,1149,1676,2068,2316,2440,2460, 2388,2233,2018,1776,1500,1137,624,-45,-791,-1515, -2128,-2562,-2787,-2811,-2680,-2449,-2157,-1813,-1392,-864, -231,448,1090,1623,2018,2280,2423,2456,2379,2221, 2027,1814,1550,1167,619,-68,-817,-1534,-2136,-2561, -2781,-2805,-2685,-2478,-2218,-1885,-1456,-907,-256,425, 1061,1587,1987,2263,2420,2453,2377,2230,2052,1852, 1588,1196,636,-66,-826,-1541,-2124,-2521,-2717,-2736, -2629,-2443,-2199,-1879,-1449,-888,-223,461,1083,1604, 2012,2293,2439,2456,2381,2258,2109,1917,1643,1239, 668,-50,-829,-1551,-2122,-2499,-2690,-2720,-2631,-2456, -2209,-1882,-1444,-876,-210,474,1098,1626,2038,2315, 2444,2444,2369,2265,2140,1964,1688,1265,668,-76, -878,-1609,-2178,-2551,-2748,-2805,-2746,-2587,-2334,-1983, -1518,-934,-263,430,1070,1615,2040,2325,2466,2488, 2434,2337,2212,2043,1770,1329,689,-93,-910,-1644, -2207,-2576,-2780,-2861,-2838,-2702,-2445,-2067,-1576,-987, -325,365,1020,1582,2019,2312,2474,2527,2498,2425, 2319,2157,1879,1415,745,-64,-891,-1619,-2176,-2545, -2751,-2835,-2825,-2705,-2454,-2069,-1570,-984,-331,360, 1023,1597,2027,2306,2454,2505,2497,2455,2372,2218, 1929,1448,759,-66,-892,-1604,-2142,-2500,-2707,-2801, -2796,-2680,-2433,-2060,-1574,-1001,-352,341,1012,1586, 2005,2268,2402,2456,2468,2448,2380,2228,1925,1427, 728,-92,-902,-1593,-2112,-2460,-2672,-2780,-2784,-2677, -2439,-2074,-1598,-1032,-383,309,973,1528,1927,2176, 2316,2388,2432,2448,2406,2253,1928,1403,693,-122, -921,-1597,-2108,-2464,-2695,-2814,-2822,-2703,-2459,-2085, -1604,-1029,-372,332,1000,1547,1938,2186,2334,2425, 2487,2525,2496,2335,1987,1429,697,-121,-907,-1570, -2085,-2463,-2719,-2853,-2858,-2731,-2475,-2097,-1612,-1023, -350,364,1031,1571,1956,2209,2370,2478,2556,2600, 2570,2404,2041,1459,711,-103,-875,-1526,-2050,-2446, -2715,-2856,-2867,-2750,-2509,-2148,-1672,-1081,-400,311, 967,1498,1882,2151,2337,2475,2587,2663,2644,2460, 2064,1464,709,-106,-877,-1534,-2056,-2453,-2733,-2879, -2899,-2800,-2580,-2232,-1754,-1155,-464,256,920,1459, 1854,2134,2339,2506,2652,2753,2738,2532,2102,1478, 722,-80,-845,-1502,-2030,-2436,-2724,-2889,-2928,-2842, -2632,-2280,-1794,-1185,-486,235,894,1432,1830,2118, 2334,2519,2696,2823,2811,2587,2133,1497,748,-37, -785,-1438,-1977,-2398,-2702,-2876,-2923,-2847,-2646,-2307, -1830,-1227,-535,179,833,1365,1765,2063,2306,2533, 2746,2892,2877,2633,2156,1507,761,-12,-756,-1417, -1963,-2388,-2689,-2876,-2947,-2899,-2705,-2363,-1873,-1256, -554,171,828,1356,1748,2053,2321,2580,2809,2950, 2917,2654,2163,1507,768,1,-738,-1408,-1963,-2382, -2678,-2873,-2967,-2933,-2740,-2385,-1884,-1255,-538,196, 849,1364,1741,2043,2328,2614,2857,2985,2923,2634, 2138,1489,753,-14,-753,-1417,-1971,-2396,-2699,-2896, -2984,-2946,-2756,-2402,-1890,-1247,-517,215,858,1358, 1732,2046,2357,2677,2935,3049,2954,2643,2145,1514, 788,13,-740,-1414,-1977,-2417,-2744,-2957,-3055,-3019, -2830,-2466,-1933,-1269,-526,200,822,1306,1685,2026, 2374,2707,2964,3064,2955,2636,2140,1520,811,49, -700,-1373,-1934,-2386,-2735,-2969,-3076,-3044,-2858,-2500, -1969,-1301,-561,153,758,1227,1617,1993,2384,2748, 3012,3107,2996,2675,2172,1540,830,79,-657,-1324, -1893,-2357,-2711,-2955,-3084,-3069,-2883,-2515,-1970,-1288, -549,148,731,1200,1609,2019,2438,2815,3084,3175, 3061,2738,2233,1597,877,126,-609,-1282,-1861,-2328, -2690,-2952,-3106,-3114,-2931,-2543,-1973,-1282,-556,115, 684,1153,1578,2009,2439,2817,3072,3150,3023,2696, 2194,1559,843,103,-619,-1280,-1852,-2315,-2682,-2963, -3139,-3166,-2991,-2596,-2015,-1331,-630,14,569,1050, 1502,1962,2418,2814,3077,3153,3023,2695,2198,1571, 865,129,-592,-1257,-1832,-2312,-2697,-2994,-3183,-3211, -3024,-2608,-2011,-1330,-656,-38,511,1012,1498,1987, 2459,2862,3134,3220,3097,2770,2273,1650,943,206, -513,-1172,-1751,-2247,-2659,-2978,-3173,-3192,-2984,-2548, -1948,-1286,-646,-56,490,1011,1524,2038,2526,2939, 3217,3299,3164,2823,2315,1687,979,240,-478,-1140, -1723,-2229,-2666,-3016,-3231,-3253,-3034,-2588,-1988,-1346, -730,-154,393,930,1467,2004,2511,2937,3218,3299, 3163,2823,2320,1692,987,246,-483,-1153,-1738,-2256, -2714,-3094,-3320,-3327,-3086,-2628,-2039,-1411,-810,-249, 296,843,1399,1957,2477,2904,3181,3267,3148,2830, 2334,1707,1007,281,-429,-1082,-1669,-2204,-2692,-3090, -3315,-3304,-3042,-2584,-2014,-1416,-838,-276,282,854, 1438,2010,2538,2971,3253,3345,3223,2898,2402,1785, 1101,390,-308,-965,-1578,-2144,-2661,-3074,-3311,-3303, -3037,-2577,-2022,-1453,-893,-331,254,863,1476,2061, 2586,3018,3308,3405,3277,2939,2436,1818,1136,423, -279,-945,-1571,-2160,-2701,-3127,-3357,-3332,-3058,-2604, -2069,-1518,-973,-415,174,793,1423,2033,2581,3013, 3295,3382,3260,2929,2425,1804,1119,419,-269,-934, -1576,-2200,-2765,-3190,-3398,-3352,-3081,-2651,-2134,-1590, -1050,-502,85,721,1385,2024,2592,3037,3319,3407, 3279,2942,2429,1805,1137,467,-193,-862,-1541,-2202, -2779,-3190,-3387,-3339,-3073,-2650,-2142,-1609,-1079,-533, 64,725,1407,2055,2620,3067,3357,3449,3309,2950, 2429,1811,1160,508,-147,-827,-1528,-2211,-2795,-3200, -3377,-3312,-3035,-2611,-2113,-1605,-1089,-536,85,758, 1439,2084,2658,3116,3404,3476,3315,2944,2419,1815, 1186,549,-106,-806,-1534,-2239,-2832,-3232,-3394,-3317, -3039,-2633,-2164,-1669,-1150,-579,59,749,1449,2121, 2713,3178,3465,3534,3368,2981,2447,1850,1248,628, -46,-785,-1557,-2285,-2879,-3274,-3434,-3354,-3084,-2694, -2243,-1762,-1242,-660,-4,706,1433,2125,2728,3190, 3475,3549,3385,3002,2476,1899,1313,698,4,-772, -1579,-2326,-2927,-3323,-3474,-3396,-3141,-2773,-2338,-1858, -1331,-742,-80,639,1378,2078,2683,3149,3438,3512, 3343,2967,2469,1926,1370,766,68,-724,-1542,-2294, -2896,-3287,-3438,-3370,-3136,-2789,-2369,-1897,-1375,-785, -112,619,1365,2071,2692,3181,3487,3564,3394,3025, 2544,2025,1484,878,158,-665,-1512,-2272,-2863,-3235, -3382,-3326,-3110,-2776,-2374,-1927,-1421,-829,-147,596, 1356,2085,2728,3232,3537,3598,3420,3062,2607,2111, 1575,957,218,-626,-1492,-2266,-2868,-3246,-3393,-3342, -3128,-2811,-2424,-1982,-1475,-885,-209,528,1293,2032, 2681,3171,3448,3485,3304,2961,2537,2077,1563,937, 174,-681,-1534,-2299,-2904,-3293,-3444,-3384,-3172,-2866, -2490,-2037,-1507,-903,-228,512,1287,2041,2698,3180, 3438,3458,3273,2948,2549,2107,1589,941,151,-722, -1579,-2331,-2906,-3267,-3404,-3356,-3167,-2884,-2509,-2046, -1504,-891,-209,549,1346,2120,2790,3275,3522,3531, 3349,3047,2678,2248,1715,1042,233,-658,-1533,-2293, -2862,-3208,-3349,-3325,-3170,-2898,-2521,-2060,-1535,-941, -263,508,1338,2141,2815,3294,3535,3548,3382,3107, 2755,2321,1770,1074,245,-663,-1560,-2336,-2907,-3254, -3407,-3401,-3253,-2980,-2603,-2147,-1624,-1027,-333,466, 1326,2150,2833,3300,3529,3542,3395,3136,2795,2361, 1807,1097,249,-677,-1579,-2348,-2915,-3267,-3436,-3448, -3309,-3036,-2666,-2221,-1708,-1109,-394,436,1321,2155, 2829,3279,3497,3520,3403,3182,2868,2447,1889,1166, 291,-651,-1547,-2298,-2855,-3223,-3417,-3450,-3327,-3069, -2705,-2269,-1769,-1175,-448,408,1321,2172,2846,3284, 3497,3523,3415,3208,2909,2497,1930,1181,277,-679, -1565,-2294,-2843,-3211,-3404,-3436,-3315,-3066,-2716,-2286, -1785,-1182,-433,447,1373,2219,2874,3301,3506,3531, 3428,3233,2948,2535,1949,1175,261,-690,-1567,-2296, -2845,-3216,-3410,-3438,-3314,-3068,-2727,-2309,-1808,-1185, -412,484,1405,2222,2835,3230,3435,3487,3416,3247, 2971,2554,1960,1186,285,-652,-1525,-2264,-2834,-3220, -3427,-3464,-3348,-3113,-2796,-2403,-1907,-1268,-467,443, 1353,2149,2755,3157,3379,3454,3414,3269,3001,2581, 1982,1207,309,-619,-1489,-2228,-2802,-3196,-3409,-3453, -3344,-3128,-2834,-2457,-1963,-1311,-495,424,1336,2131, 2740,3152,3385,3475,3459,3342,3088,2657,2029,1237, 336,-593,-1468,-2214,-2789,-3184,-3398,-3444,-3344,-3138, -2849,-2470,-1961,-1289,-457,471,1383,2173,2775,3171, 3399,3508,3515,3407,3148,2697,2046,1235,336,-579, -1445,-2203,-2800,-3203,-3415,-3466,-3387,-3205,-2930,-2549, -2031,-1340,-489,449,1358,2136,2722,3113,3354,3490, 3529,3445,3193,2747,2099,1296,411,-485,-1342,-2106, -2715,-3123,-3333,-3396,-3351,-3210,-2963,-2593,-2078,-1392, -540,397,1296,2048,2605,2992,3261,3436,3508,3433, 3182,2736,2100,1309,431,-460,-1311,-2068,-2668,-3063, -3260,-3316,-3286,-3177,-2962,-2606,-2082,-1383,-531,392, 1270,1996,2536,2921,3204,3400,3487,3420,3161,2698, 2048,1252,371,-529,-1381,-2125,-2706,-3089,-3289,-3356, -3333,-3227,-3014,-2648,-2098,-1369,-505,416,1277,1992, 2531,2928,3229,3438,3531,3466,3207,2744,2101,1314, 432,-479,-1344,-2092,-2666,-3054,-3274,-3367,-3365,-3274, -3068,-2700,-2131,-1370,-480,433,1268,1965,2513,2939, 3270,3502,3606,3533,3262,2797,2153,1363,467,-457, -1334,-2081,-2649,-3027,-3256,-3375,-3396,-3320,-3119,-2743, -2154,-1363,-452,456,1259,1927,2475,2922,3279,3533, 3649,3582,3312,2841,2186,1375,458,-490,-1382,-2123, -2673,-3041,-3274,-3409,-3450,-3377,-3160,-2758,-2147,-1346, -441,456,1241,1891,2432,2892,3271,3541,3655,3584, 3315,2858,2217,1409,479,-482,-1362,-2084,-2622,-2997, -3248,-3407,-3475,-3424,-3210,-2795,-2169,-1368,-479,395, 1174,1838,2399,2881,3280,3556,3671,3597,3332,2879, 2236,1415,478,-474,-1334,-2032,-2557,-2931,-3206,-3396, -3497,-3462,-3240,-2802,-2154,-1347,-471,378,1138,1806, 2397,2905,3308,3574,3685,3628,3378,2917,2248,1410, 471,-472,-1327,-2025,-2548,-2926,-3204,-3415,-3531,-3492, -3248,-2780,-2110,-1299,-441,384,1128,1802,2403,2918, 3316,3575,3684,3630,3387,2929,2256,1416,480,-465, -1320,-2015,-2540,-2932,-3237,-3473,-3604,-3572,-3318,-2832, -2143,-1333,-497,304,1046,1730,2353,2876,3277,3545, 3672,3630,3389,2930,2265,1435,508,-428,-1274,-1961, -2492,-2901,-3222,-3472,-3609,-3574,-3312,-2813,-2131,-1353, -546,239,975,1659,2280,2810,3230,3531,3690,3659, 3409,2937,2267,1428,488,-444,-1268,-1946,-2485,-2908, -3241,-3493,-3631,-3582,-3288,-2765,-2082,-1324,-537,245, 990,1675,2287,2815,3252,3576,3751,3727,3474,2998, 2314,1455,504,-419,-1227,-1891,-2434,-2883,-3252,-3533, -3672,-3608,-3299,-2771,-2100,-1356,-577,204,955,1642, 2258,2799,3251,3586,3767,3754,3517,3044,2350,1489, 551,-357,-1159,-1812,-2348,-2811,-3219,-3538,-3686,-3608, -3288,-2773,-2133,-1420,-660,118,868,1564,2199,2765, 3236,3586,3776,3768,3535,3056,2360,1497,553,-355, -1144,-1789,-2332,-2825,-3275,-3618,-3770,-3683,-3361,-2850, -2211,-1495,-734,47,810,1530,2187,2776,3275,3646, 3848,3843,3600,3111,2407,1543,608,-284,-1055,-1700, -2269,-2804,-3281,-3633,-3779,-3688,-3367,-2863,-2235,-1532, -784,-6,759,1477,2130,2722,3237,3631,3851,3854, 3611,3118,2404,1542,637,-214,-955,-1600,-2195,-2755, -3236,-3572,-3703,-3608,-3289,-2788,-2167,-1481,-753,3, 756,1469,2117,2694,3194,3582,3805,3814,3566,3058, 2336,1486,612,-199,-918,-1567,-2177,-2750,-3229,-3547, -3661,-3552,-3234,-2741,-2130,-1449,-728,17,764,1478, 2135,2722,3223,3610,3832,3824,3548,3009,2272,1431, 578,-217,-943,-1610,-2242,-2825,-3302,-3605,-3694,-3573, -3258,-2772,-2165,-1485,-766,-25,716,1434,2103,2717, 3247,3664,3902,3891,3598,3038,2292,1465,634,-156, -892,-1587,-2261,-2879,-3373,-3677,-3760,-3633,-3316,-2837, -2236,-1560,-836,-86,662,1384,2062,2689,3246,3683, 3931,3924,3630,3078,2352,1547,744,-25,-756,-1466, -2170,-2823,-3340,-3648,-3731,-3603,-3292,-2826,-2236,-1568, -846,-93,659,1374,2040,2673,3251,3703,3949,3917, 3598,3045,2334,1561,782,22,-720,-1453,-2164,-2808, -3309,-3613,-3704,-3583,-3276,-2816,-2238,-1581,-867,-118, 633,1346,2023,2671,3267,3736,3980,3937,3602,3038, 2334,1570,798,34,-733,-1498,-2233,-2878,-3371,-3665, -3746,-3623,-3313,-2859,-2298,-1658,-955,-212,534,1253, 1947,2629,3255,3742,3988,3940,3601,3044,2356,1615, 861,90,-699,-1488,-2237,-2892,-3386,-3674,-3748,-3621, -3318,-2871,-2311,-1668,-967,-237,492,1209,1924,2640, 3294,3781,4012,3941,3594,3048,2383,1673,938,161, -652,-1459,-2213,-2860,-3353,-3648,-3734,-3619,-3325,-2882, -2328,-1689,-995,-269,460,1196,1942,2676,3331,3808, 4021,3936,3585,3050,2416,1725,985,196,-625,-1431, -2185,-2835,-3326,-3615,-3692,-3574,-3281,-2843,-2296,-1678, -1009,-310,413,1148,1898,2636,3292,3764,3963,3857, 3497,2980,2373,1703,968,176,-636,-1433,-2169,-2802, -3276,-3555,-3629,-3511,-3224,-2788,-2245,-1635,-989,-318, 381,1114,1873,2626,3278,3723,3883,3760,3403,2892, 2297,1641,928,147,-676,-1487,-2226,-2846,-3306,-3584, -3668,-3565,-3285,-2855,-2313,-1716,-1085,-412,312,1078, 1875,2653,3316,3755,3905,3780,3435,2944,2367,1731, 1022,226,-621,-1442,-2180,-2802,-3277,-3569,-3665,-3571, -3298,-2873,-2347,-1775,-1162,-485,264,1070,1900,2697, 3366,3803,3957,3842,3517,3056,2499,1863,1140,339, -506,-1333,-2081,-2716,-3204,-3512,-3625,-3550,-3300,-2895, -2390,-1832,-1239,-577,179,1019,1889,2704,3364,3785, 3936,3834,3535,3090,2535,1888,1159,353,-498,-1338, -2104,-2742,-3228,-3543,-3673,-3606,-3345,-2933,-2433,-1900, -1326,-666,106,975,1864,2683,3334,3743,3890,3792, 3503,3070,2526,1883,1147,336,-513,-1346,-2106,-2743, -3222,-3530,-3654,-3577,-3300,-2875,-2388,-1882,-1335,-676, 115,1001,1892,2702,3344,3746,3885,3784,3497,3076, 2547,1910,1168,348,-503,-1325,-2073,-2708,-3197,-3512, -3628,-3536,-3263,-2865,-2407,-1920,-1376,-710,101,1011, 1916,2719,3346,3742,3884,3798,3534,3131,2607,1965, 1212,374,-493,-1330,-2083,-2725,-3222,-3534,-3635,-3526, -3257,-2887,-2460,-1995,-1454,-769,74,1011,1930,2729, 3339,3727,3879,3816,3570,3180,2657,2008,1240,385, -494,-1334,-2095,-2751,-3263,-3572,-3654,-3531,-3266,-2914, -2512,-2061,-1508,-804,55,999,1924,2717,3313,3681, 3829,3785,3564,3188,2676,2037,1278,424,-457,-1304, -2065,-2721,-3234,-3553,-3641,-3525,-3275,-2952,-2575,-2123, -1556,-834,36,992,1921,2712,3298,3656,3804,3769, 3561,3194,2686,2049,1302,465,-410,-1258,-2026,-2681, -3188,-3498,-3582,-3470,-3235,-2937,-2586,-2146,-1579,-845, 46,1015,1943,2723,3299,3655,3808,3776,3568,3197, 2682,2043,1298,474,-389,-1237,-2019,-2686,-3184,-3477, -3555,-3455,-3242,-2961,-2619,-2184,-1610,-864,34,1001, 1916,2685,3256,3618,3780,3762,3571,3203,2676,2024, 1282,469,-389,-1245,-2040,-2704,-3180,-3443,-3512,-3430, -3249,-2993,-2663,-2225,-1632,-860,56,1021,1931,2697, 3274,3643,3818,3808,3618,3246,2709,2048,1300,481, -389,-1263,-2071,-2732,-3190,-3429,-3481,-3401,-3238,-3010, -2701,-2266,-1661,-865,75,1055,1959,2710,3280,3664, 3855,3848,3644,3259,2729,2085,1349,532,-354,-1255, -2081,-2744,-3195,-3425,-3474,-3405,-3268,-3079,-2796,-2358, -1727,-907,35,1004,1892,2629,3199,3599,3815,3826, 3624,3235,2711,2087,1368,549,-348,-1253,-2069,-2717, -3157,-3388,-3450,-3400,-3287,-3113,-2832,-2383,-1728,-891, 50,997,1865,2594,3165,3570,3796,3816,3621,3239, 2725,2115,1397,563,-350,-1255,-2050,-2671,-3096,-3328, -3408,-3383,-3294,-3131,-2850,-2393,-1735,-903,43,1000, 1868,2591,3165,3582,3818,3845,3654,3284,2789,2184, 1461,613,-318,-1238,-2039,-2656,-3074,-3313,-3415,-3425, -3364,-3220,-2939,-2473,-1806,-963,-17,937,1807,2551, 3154,3586,3824,3843,3660,3314,2840,2247,1520,655, -287,-1205,-1996,-2604,-3014,-3260,-3390,-3444,-3422,-3288, -2996,-2511,-1834,-996,-65,866,1729,2483,3105,3555, 3792,3808,3633,3308,2859,2283,1560,686,-262,-1166, -1931,-2517,-2925,-3174,-3315,-3390,-3403,-3298,-3013,-2517, -1826,-988,-64,864,1719,2463,3077,3528,3774,3793, 3618,3292,2849,2279,1545,657,-297,-1195,-1945,-2515, -2919,-3180,-3339,-3430,-3452,-3350,-3057,-2542,-1836,-989, -66,868,1742,2506,3123,3561,3792,3808,3645,3341, 2904,2311,1543,635,-322,-1221,-1967,-2532,-2924,-3193, -3386,-3513,-3548,-3425,-3097,-2564,-1860,-1028,-108,833, 1726,2508,3133,3564,3790,3822,3694,3422,2991,2380, 1589,668,-296,-1190,-1928,-2475,-2860,-3141,-3371,-3540, -3587,-3447,-3097,-2553,-1861,-1041,-118,842,1741,2511, 3121,3549,3785,3835,3717,3444,3007,2399,1611,685, -286,-1172,-1883,-2408,-2799,-3117,-3386,-3575,-3624,-3477, -3120,-2579,-1896,-1082,-166,797,1706,2477,3076,3497, 3739,3814,3722,3465,3033,2418,1631,713,-240,-1110, -1814,-2343,-2753,-3099,-3393,-3594,-3647,-3506,-3158,-2623, -1938,-1120,-204,751,1657,2426,3015,3424,3676,3780, 3727,3489,3060,2438,1645,736,-197,-1043,-1729,-2257, -2679,-3048,-3369,-3582,-3630,-3484,-3148,-2637,-1963,-1137, -206,757,1655,2410,2991,3402,3661,3774,3733,3509, 3088,2466,1661,741,-179,-994,-1652,-2183,-2644,-3060, -3407,-3624,-3656,-3498,-3164,-2665,-1997,-1169,-232,725, 1601,2336,2917,3353,3638,3766,3728,3514,3112,2496, 1687,766,-139,-930,-1579,-2123,-2611,-3053,-3414,-3642, -3684,-3532,-3198,-2696,-2028,-1196,-254,700,1564,2287, 2857,3292,3600,3761,3748,3538,3111,2465,1644,736, -149,-928,-1579,-2131,-2625,-3067,-3431,-3661,-3711,-3562, -3227,-2720,-2047,-1214,-275,673,1542,2267,2838,3272, 3592,3783,3800,3592,3139,2467,1646,760,-98,-869, -1532,-2108,-2628,-3092,-3459,-3679,-3723,-3580,-3259,-2751, -2065,-1221,-278,669,1529,2252,2832,3284,3619,3825, 3846,3634,3170,2489,1674,811,-19,-772,-1436,-2033, -2584,-3072,-3447,-3670,-3723,-3601,-3295,-2792,-2095,-1237, -281,678,1543,2268,2857,3335,3691,3905,3915,3676, 3177,2472,1651,805,-4,-743,-1421,-2049,-2622,-3112, -3488,-3723,-3798,-3685,-3370,-2856,-2152,-1287,-337,605, 1458,2188,2800,3307,3698,3922,3923,3664,3151,2445, 1644,826,39,-704,-1398,-2041,-2611,-3096,-3472,-3717, -3802,-3698,-3394,-2889,-2189,-1328,-387,537,1370,2087, 2707,3240,3658,3900,3906,3644,3135,2443,1662,863, 87,-650,-1340,-1976,-2550,-3041,-3425,-3668,-3748,-3648, -3349,-2839,-2125,-1263,-338,564,1381,2095,2722,3270, 3705,3956,3953,3669,3143,2454,1689,904,126,-619, -1320,-1961,-2539,-3033,-3410,-3649,-3736,-3648,-3343,-2804, -2068,-1213,-314,564,1368,2080,2713,3270,3712,3960, 3940,3636,3100,2421,1672,908,148,-597,-1315,-1975, -2558,-3048,-3424,-3677,-3779,-3693,-3378,-2825,-2089,-1245, -364,499,1295,2013,2662,3239,3687,3926,3893,3585, 3065,2407,1672,915,159,-581,-1292,-1958,-2557,-3064, -3459,-3725,-3827,-3721,-3385,-2827,-2090,-1238,-350,505, 1288,2010,2686,3297,3762,3982,3924,3608,3096,2454, 1732,974,207,-546,-1269,-1941,-2537,-3044,-3450,-3731, -3840,-3730,-3379,-2812,-2073,-1224,-344,502,1294,2033, 2731,3345,3797,4003,3932,3610,3102,2471,1772,1029, 262,-510,-1248,-1920,-2511,-3020,-3442,-3744,-3865,-3758, -3404,-2828,-2091,-1276,-440,387,1200,1985,2708,3321, 3753,3951,3882,3568,3071,2467,1797,1075,311,-460, -1188,-1850,-2449,-2990,-3445,-3761,-3879,-3764,-3404,-2828, -2107,-1326,-533,272,1095,1908,2659,3278,3707,3897, 3831,3532,3061,2476,1814,1100,343,-417,-1148,-1816, -2422,-2966,-3424,-3749,-3872,-3748,-3372,-2791,-2080,-1320, -542,260,1085,1902,2660,3291,3719,3898,3822,3529, 3071,2493,1831,1109,350,-415,-1157,-1841,-2453,-3003, -3470,-3807,-3933,-3792,-3391,-2793,-2088,-1336,-549,271, 1111,1938,2704,3336,3763,3934,3854,3563,3113,2547, 1886,1157,388,-386,-1125,-1813,-2446,-3026,-3528,-3884, -3998,-3827,-3407,-2819,-2144,-1408,-609,237,1104,1955, 2732,3359,3772,3936,3862,3587,3153,2583,1911,1174, 408,-359,-1095,-1779,-2425,-3029,-3548,-3894,-3989,-3808, -3399,-2839,-2182,-1461,-677,168,1056,1938,2730,3349, 3753,3927,3876,3612,3178,2606,1941,1211,448,-318, -1054,-1753,-2429,-3057,-3578,-3908,-3985,-3799,-3400,-2857, -2225,-1525,-748,108,1010,1893,2679,3301,3719,3912, 3878,3630,3205,2646,1990,1268,512,-247,-984,-1701, -2406,-3061,-3586,-3905,-3971,-3780,-3383,-2855,-2252,-1577, -796,90,1011,1883,2649,3267,3689,3883,3850,3619, 3217,2670,2017,1301,563,-175,-908,-1644,-2380,-3063, -3586,-3885,-3930,-3748,-3377,-2876,-2290,-1621,-836,59, 997,1881,2645,3255,3673,3867,3842,3622,3231,2695, 2050,1347,633,-82,-818,-1589,-2364,-3056,-3573,-3860, -3906,-3729,-3374,-2896,-2332,-1663,-869,31,964,1843, 2609,3225,3651,3859,3849,3641,3249,2699,2045,1352, 660,-43,-794,-1589,-2370,-3052,-3556,-3840,-3886,-3716, -3370,-2913,-2362,-1698,-899,6,941,1818,2583,3186, 3607,3826,3828,3610,3204,2655,2024,1365,689,-23, -791,-1598,-2385,-3061,-3549,-3806,-3833,-3665,-3348,-2921, -2384,-1712,-905,2,944,1833,2594,3189,3603,3826, 3831,3609,3194,2659,2058,1428,762,34,-764,-1592, -2387,-3063,-3537,-3769,-3783,-3620,-3326,-2918,-2384,-1708, -896,15,955,1838,2590,3182,3604,3831,3839,3618, 3204,2665,2072,1454,791,51,-770,-1617,-2411,-3069, -3525,-3757,-3782,-3632,-3343,-2934,-2400,-1735,-934,-25, 919,1795,2543,3140,3569,3797,3794,3568,3170,2654, 2075,1457,793,53,-776,-1639,-2440,-3083,-3518,-3736, -3763,-3631,-3362,-2964,-2429,-1752,-940,-30,900,1773, 2527,3139,3578,3808,3799,3570,3174,2673,2119,1516, 841,69,-786,-1658,-2441,-3064,-3490,-3719,-3764,-3654, -3403,-3016,-2480,-1790,-965,-52,880,1753,2518,3140, 3596,3838,3833,3600,3204,2721,2198,1612,920,109, -771,-1639,-2407,-3018,-3442,-3682,-3753,-3668,-3438,-3057, -2516,-1818,-993,-89,832,1700,2464,3094,3552,3798, 3802,3582,3209,2760,2263,1685,982,152,-742,-1612, -2379,-2986,-3400,-3637,-3720,-3659,-3442,-3058,-2517,-1827, -1014,-121,789,1653,2424,3063,3524,3768,3770,3563, 3220,2805,2329,1754,1043,197,-714,-1598,-2359,-2946, -3358,-3610,-3717,-3673,-3454,-3069,-2527,-1855,-1062,-185, 724,1602,2394,3049,3520,3760,3762,3563,3242,2848, 2378,1791,1059,197,-724,-1602,-2359,-2942,-3356,-3620, -3743,-3710,-3502,-3115,-2562,-1877,-1083,-211,699,1594, 2409,3073,3526,3740,3729,3557,3272,2894,2413,1804, 1049,173,-749,-1624,-2375,-2961,-3375,-3644,-3778,-3754, -3550,-3157,-2603,-1918,-1123,-237,694,1608,2432,3098, 3544,3746,3735,3580,3327,2977,2499,1872,1096,207, -718,-1579,-2317,-2904,-3337,-3624,-3759,-3730,-3520,-3133, -2593,-1931,-1151,-270,668,1591,2414,3073,3518,3733, 3739,3599,3355,3012,2543,1915,1126,219,-709,-1555, -2270,-2848,-3294,-3604,-3755,-3734,-3528,-3147,-2619,-1965, -1190,-307,640,1574,2404,3053,3477,3683,3708,3600, 3381,3046,2573,1934,1134,221,-700,-1531,-2231,-2808, -3271,-3603,-3780,-3774,-3581,-3209,-2685,-2023,-1240,-346, 611,1553,2382,3019,3426,3625,3665,3586,3394,3071, 2595,1946,1140,236,-670,-1490,-2192,-2779,-3258,-3598, -3763,-3739,-3540,-3186,-2686,-2044,-1268,-374,592,1531, 2348,2970,3376,3580,3629,3571,3404,3098,2612,1945, 1140,255,-627,-1445,-2162,-2767,-3253,-3586,-3740,-3714, -3519,-3177,-2697,-2072,-1294,-380,603,1553,2368,2985, 3386,3601,3672,3637,3483,3165,2655,1966,1147,271, -594,-1395,-2106,-2712,-3195,-3530,-3695,-3682,-3501,-3178, -2718,-2109,-1333,-405,588,1536,2333,2928,3320,3553, 3667,3661,3505,3160,2622,1924,1113,249,-599,-1391, -2096,-2698,-3174,-3502,-3661,-3651,-3481,-3167,-2715,-2103, -1317,-385,604,1535,2304,2874,3262,3507,3642,3652, 3495,3141,2599,1903,1101,255,-590,-1388,-2107,-2722, -3203,-3529,-3690,-3691,-3532,-3222,-2757,-2122,-1308,-353, 643,1564,2319,2887,3283,3542,3681,3694,3538,3184, 2637,1938,1137,290,-553,-1350,-2071,-2695,-3183,-3515, -3683,-3695,-3556,-3262,-2802,-2160,-1330,-359,644,1556, 2289,2840,3241,3530,3701,3717,3545,3175,2623,1930, 1134,294,-541,-1336,-2057,-2672,-3151,-3480,-3661,-3687, -3563,-3280,-2830,-2189,-1349,-364,638,1527,2236,2780, 3203,3531,3734,3761,3575,3186,2627,1945,1176,351, -488,-1300,-2029,-2645,-3120,-3455,-3652,-3704,-3596,-3327, -2880,-2234,-1380,-390,598,1460,2160,2719,3170,3520, 3736,3772,3594,3207,2655,1984,1225,398,-457,-1279, -2012,-2624,-3106,-3450,-3659,-3731,-3662,-3416,-2959,-2281, -1413,-440,521,1373,2082,2657,3125,3489,3721,3767, 3597,3215,2663,1992,1235,410,-441,-1267,-2011,-2633, -3113,-3453,-3665,-3758,-3707,-3461,-2985,-2287,-1424,-475, 463,1309,2026,2622,3121,3511,3750,3790,3616,3245, 2710,2048,1290,462,-394,-1224,-1971,-2594,-3076,-3419, -3644,-3752,-3704,-3449,-2963,-2268,-1409,-468,460,1297, 2015,2639,3175,3590,3831,3861,3667,3282,2755,2110, 1359,518,-363,-1204,-1940,-2547,-3028,-3404,-3669,-3801, -3757,-3492,-2997,-2281,-1408,-473,433,1256,1988,2640, 3191,3604,3840,3873,3682,3290,2748,2098,1354,521, -361,-1203,-1932,-2531,-3011,-3397,-3686,-3840,-3802,-3534, -3019,-2290,-1425,-515,364,1182,1935,2600,3148,3559, 3799,3828,3637,3259,2738,2095,1344,503,-369,-1194, -1906,-2500,-2990,-3389,-3681,-3838,-3802,-3526,-3004,-2281, -1439,-550,325,1160,1929,2607,3172,3598,3846,3875, 3681,3306,2794,2158,1399,548,-322,-1136,-1844,-2442, -2947,-3366,-3680,-3847,-3803,-3504,-2972,-2258,-1431,-554, 322,1157,1935,2628,3210,3638,3875,3905,3729,3369, 2854,2197,1419,560,-302,-1104,-1804,-2397,-2905,-3335, -3671,-3854,-3818,-3512,-2968,-2262,-1462,-614,246,1085, 1871,2579,3171,3601,3835,3867,3704,3359,2844,2175, 1378,511,-341,-1111,-1779,-2363,-2881,-3330,-3678,-3862, -3814,-3502,-2960,-2270,-1501,-684,164,1005,1803,2522, 3125,3562,3803,3844,3695,3372,2867,2194,1390,526, -313,-1066,-1724,-2316,-2858,-3337,-3698,-3870,-3800,-3484, -2960,-2285,-1522,-705,141,990,1796,2524,3128,3565, 3809,3855,3716,3398,2901,2232,1434,578,-243,-978, -1630,-2240,-2819,-3331,-3701,-3868,-3796,-3494,-2989,-2323, -1560,-732,130,996,1817,2543,3135,3558,3803,3862, 3730,3399,2882,2209,1430,611,-178,-898,-1556,-2189, -2804,-3340,-3722,-3884,-3808,-3500,-2998,-2357,-1625,-817, 52,941,1787,2520,3095,3505,3753,3839,3729,3408, 2881,2203,1439,644,-130,-850,-1520,-2167,-2795,-3343, -3727,-3891,-3813,-3505,-3004,-2378,-1671,-887,-26,875, 1738,2481,3060,3483,3758,3871,3776,3451,2922,2246, 1483,687,-89,-815,-1498,-2164,-2809,-3363,-3745,-3899, -3808,-3502,-3026,-2424,-1715,-917,-45,862,1725,2462, 3041,3475,3777,3903,3806,3467,2929,2254,1506,739, -9,-731,-1441,-2146,-2818,-3382,-3758,-3906,-3819,-3528, -3071,-2479,-1772,-970,-92,821,1691,2432,3020,3467, 3775,3907,3805,3457,2911,2240,1518,787,65,-652, -1372,-2093,-2771,-3332,-3704,-3861,-3800,-3534,-3087,-2494, -1785,-973,-85,823,1677,2415,3009,3472,3791,3923, 3819,3466,2915,2250,1547,825,94,-639,-1374,-2104, -2780,-3332,-3699,-3858,-3804,-3545,-3107,-2518,-1796,-959, -56,845,1673,2393,2992,3463,3786,3910,3793,3431, 2883,2239,1559,852,117,-638,-1397,-2144,-2826,-3375, -3739,-3890,-3835,-3579,-3143,-2541,-1809,-968,-61,843, 1677,2403,3014,3501,3833,3956,3823,3443,2891,2256, 1588,897,162,-611,-1400,-2174,-2877,-3436,-3793,-3939, -3884,-3639,-3207,-2609,-1872,-1024,-111,799,1646,2393, 3035,3547,3882,3991,3849,3478,2944,2322,1665,975, 225,-582,-1403,-2189,-2888,-3438,-3799,-3960,-3917,-3682, -3257,-2657,-1914,-1068,-165,739,1587,2350,3012,3544, 3882,3980,3828,3460,2953,2372,1745,1060,303,-519, -1359,-2145,-2824,-3352,-3709,-3885,-3870,-3652,-3225,-2613, -1866,-1036,-157,728,1569,2335,3004,3541,3884,3974, 3811,3443,2953,2398,1796,1124,366,-467,-1324,-2125, -2807,-3335,-3701,-3901,-3913,-3711,-3281,-2660,-1911,-1089, -220,657,1497,2274,2962,3508,3848,3935,3774,3423, 2956,2425,1837,1164,388,-464,-1324,-2122,-2812,-3355, -3731,-3936,-3952,-3750,-3324,-2710,-1977,-1170,-311,573, 1437,2244,2949,3500,3836,3926,3776,3435,2980,2458, 1870,1194,413,-437,-1293,-2083,-2771,-3316,-3693,-3891, -3896,-3695,-3276,-2671,-1947,-1156,-310,581,1475,2314, 3033,3566,3871,3932,3772,3444,3003,2492,1907,1226, 435,-428,-1291,-2080,-2755,-3297,-3694,-3916,-3938,-3732, -3307,-2700,-1978,-1187,-337,564,1482,2343,3063,3583, 3872,3920,3758,3446,3034,2543,1961,1264,452,-425, -1296,-2081,-2753,-3301,-3711,-3944,-3963,-3757,-3339,-2749, -2046,-1268,-421,490,1424,2289,3002,3517,3809,3873, 3728,3432,3038,2563,1983,1283,469,-398,-1248,-2023, -2702,-3276,-3703,-3938,-3954,-3742,-3321,-2733,-2046,-1286, -447,476,1422,2289,2993,3496,3783,3851,3722,3444, 3066,2598,2012,1297,477,-385,-1219,-1988,-2681,-3272, -3708,-3947,-3962,-3745,-3311,-2723,-2044,-1293,-447,488, 1443,2306,3007,3503,3779,3844,3733,3484,3128,2669, 2084,1360,526,-349,-1191,-1971,-2669,-3261,-3704,-3947, -3955,-3732,-3310,-2746,-2085,-1334,-478,465,1428,2300, 2996,3472,3724,3784,3696,3480,3140,2679,2093,1381, 566,-294,-1134,-1917,-2623,-3226,-3685,-3935,-3944,-3719, -3310,-2771,-2123,-1357,-473,485,1439,2302,2991,3458, 3701,3761,3688,3494,3168,2694,2087,1370,569,-273, -1108,-1908,-2643,-3259,-3705,-3936,-3940,-3732,-3342,-2815, -2158,-1372,-465,512,1471,2328,3002,3449,3686,3765, 3716,3539,3214,2740,2127,1401,592,-257,-1103,-1920, -2670,-3296,-3736,-3965,-3977,-3784,-3408,-2885,-2231,-1447, -532,464,1447,2307,2965,3406,3654,3760,3741,3582, 3268,2798,2185,1457,650,-200,-1064,-1909,-2676,-3305, -3743,-3969,-3987,-3803,-3444,-2934,-2291,-1505,-571,451, 1438,2284,2927,3373,3658,3800,3791,3631,3314,2838, 2220,1494,697,-150,-1026,-1891,-2675,-3306,-3739,-3962, -3980,-3803,-3451,-2943,-2285,-1477,-526,494,1474,2297, 2921,3361,3657,3811,3811,3649,3324,2846,2237,1525, 732,-130,-1022,-1889,-2668,-3296,-3730,-3959,-3984,-3823, -3489,-2992,-2329,-1502,-539,476,1434,2239,2858,3310, 3617,3785,3804,3663,3355,2883,2282,1577,785,-85, -987,-1864,-2650,-3280,-3712,-3939,-3977,-3843,-3548,-3072, -2409,-1564,-598,407,1341,2130,2751,3216,3549,3745, 3790,3664,3366,2907,2321,1631,850,-19,-933,-1819, -2606,-3235,-3663,-3893,-3945,-3835,-3557,-3083,-2406,-1553, -581,411,1332,2103,2714,3190,3544,3757,3793,3649, 3347,2916,2369,1707,917,24,-903,-1790,-2570,-3199, -3630,-3864,-3922,-3822,-3544,-3068,-2390,-1544,-580,411, 1324,2091,2703,3193,3563,3775,3802,3644,3342,2933, 2412,1757,959,57,-875,-1771,-2568,-3203,-3634,-3872, -3956,-3885,-3619,-3131,-2437,-1586,-630,349,1253,2019, 2638,3135,3508,3728,3771,3644,3366,2957,2423,1761, 965,68,-874,-1782,-2575,-3188,-3610,-3869,-3977,-3920, -3654,-3158,-2450,-1578,-619,340,1219,1979,2618,3135, 3515,3734,3778,3653,3374,2961,2419,1752,946,27, -930,-1824,-2579,-3170,-3602,-3882,-3995,-3921,-3641,-3140, -2429,-1560,-608,331,1192,1946,2592,3117,3500,3721, 3770,3648,3383,2985,2454,1783,966,39,-912,-1793, -2544,-3145,-3592,-3880,-4004,-3944,-3673,-3169,-2451,-1580, -638,296,1155,1917,2572,3101,3482,3698,3752,3655, 3418,3042,2517,1840,1011,80,-872,-1752,-2496,-3088, -3534,-3839,-3990,-3948,-3682,-3176,-2455,-1590,-659,260, 1118,1894,2566,3105,3483,3689,3735,3643,3423,3066, 2551,1857,1001,49,-896,-1752,-2477,-3070,-3533,-3858, -4023,-3986,-3710,-3188,-2465,-1615,-701,219,1089,1871, 2538,3075,3465,3687,3740,3643,3420,3063,2546,1842, 974,25,-901,-1743,-2477,-3091,-3578,-3916,-4073,-4027, -3736,-3202,-2475,-1631,-724,203,1085,1870,2535,3074, 3470,3705,3769,3688,3482,3131,2601,1883,1013,67, -858,-1693,-2415,-3037,-3546,-3916,-4085,-4024,-3719,-3178, -2455,-1616,-721,191,1075,1877,2555,3086,3460,3690, 3774,3726,3535,3188,2653,1926,1047,92,-829,-1651, -2370,-3005,-3545,-3940,-4123,-4058,-3731,-3184,-2472,-1656, -769,154,1057,1869,2547,3082,3474,3719,3814,3769, 3581,3225,2673,1933,1055,120,-789,-1626,-2378,-3042, -3591,-3979,-4157,-4087,-3764,-3217,-2511,-1703,-814,122, 1034,1845,2523,3066,3469,3726,3831,3801,3627,3272, 2701,1939,1049,126,-766,-1598,-2367,-3055,-3618,-4007, -4176,-4104,-3794,-3270,-2575,-1753,-855,73,973,1784, 2473,3022,3425,3688,3824,3831,3673,3310,2727,1962, 1077,152,-748,-1589,-2363,-3059,-3629,-4016,-4168,-4079, -3767,-3257,-2580,-1771,-873,58,952,1751,2429,2979, 3402,3695,3864,3893,3744,3372,2784,2032,1180,281, -627,-1500,-2301,-3013,-3591,-3984,-4141,-4058,-3749,-3242, -2573,-1781,-901,19,917,1715,2384,2920,3349,3669, 3871,3919,3765,3380,2792,2052,1219,342,-554,-1432, -2256,-2986,-3573,-3965,-4128,-4062,-3781,-3301,-2646,-1853, -978,-68,817,1619,2295,2842,3285,3635,3864,3917, 3755,3365,2780,2057,1237,356,-549,-1426,-2239,-2962, -3558,-3958,-4123,-4052,-3780,-3322,-2685,-1900,-1022,-107, 777,1574,2247,2806,3269,3640,3880,3933,3760,3368, 2794,2090,1287,415,-493,-1377,-2196,-2921,-3512,-3914, -4084,-4018,-3741,-3286,-2671,-1913,-1046,-128,758,1545, 2220,2795,3291,3679,3916,3956,3777,3384,2812,2106, 1305,443,-457,-1354,-2194,-2927,-3502,-3881,-4044,-3993, -3730,-3279,-2668,-1922,-1072,-178,695,1481,2161,2760, 3284,3701,3950,3984,3789,3393,2829,2137,1342,467, -461,-1388,-2250,-2988,-3554,-3925,-4093,-4053,-3803,-3348, -2710,-1939,-1092,-209,651,1439,2125,2726,3254,3686, 3956,4006,3812,3409,2853,2182,1403,519,-433,-1385, -2264,-3006,-3578,-3953,-4118,-4075,-3823,-3367,-2723,-1944, -1093,-225,625,1412,2109,2725,3265,3694,3966,4020, 3825,3424,2874,2214,1446,569,-380,-1329,-2202,-2945, -3522,-3898,-4064,-4024,-3783,-3343,-2718,-1950,-1108,-246, 589,1369,2077,2711,3261,3690,3941,3975,3787,3406, 2872,2217,1440,552,-388,-1313,-2161,-2891,-3464,-3848, -4028,-4001,-3771,-3340,-2725,-1967,-1120,-252,577,1343, 2042,2681,3241,3665,3909,3943,3771,3415,2898,2239, 1441,537,-410,-1328,-2166,-2881,-3442,-3829,-4029,-4020, -3789,-3348,-2730,-1983,-1153,-303,519,1290,2010,2674, 3245,3667,3908,3946,3783,3432,2921,2267,1482,582, -377,-1320,-2171,-2885,-3438,-3823,-4024,-4028,-3812,-3375, -2746,-1994,-1186,-359,456,1244,1993,2686,3264,3681, 3903,3930,3769,3427,2917,2266,1490,605,-352,-1296, -2150,-2868,-3432,-3824,-4026,-4023,-3801,-3365,-2739,-1994, -1203,-398,415,1222,1994,2691,3269,3684,3911,3945, 3787,3455,2957,2304,1520,623,-329,-1260,-2103,-2822, -3404,-3817,-4029,-4021,-3793,-3354,-2747,-2026,-1259,-463, 356,1179,1964,2670,3256,3691,3942,3990,3839,3517, 3036,2400,1604,681,-296,-1233,-2071,-2795,-3395,-3835, -4067,-4062,-3822,-3377,-2779,-2084,-1327,-518,322,1162, 1960,2677,3274,3712,3959,4006,3868,3562,3095,2453, 1645,707,-281,-1233,-2077,-2798,-3401,-3864,-4119,-4118, -3863,-3407,-2822,-2153,-1411,-597,270,1135,1943,2662, 3263,3697,3935,3985,3863,3581,3124,2479,1662,728, -243,-1182,-2029,-2765,-3386,-3849,-4101,-4100,-3854,-3412, -2843,-2195,-1472,-673,187,1057,1879,2607,3201,3635, 3891,3972,3875,3596,3136,2495,1693,767,-202,-1134, -1983,-2734,-3367,-3827,-4059,-4040,-3792,-3371,-2827,-2190, -1468,-675,172,1034,1858,2585,3172,3608,3887,3997, 3914,3623,3142,2495,1695,776,-199,-1137,-1991,-2745, -3377,-3836,-4066,-4044,-3805,-3398,-2870,-2242,-1514,-701, 164,1035,1860,2590,3191,3645,3936,4051,3972,3689, 3208,2539,1724,813,-136,-1069,-1955,-2746,-3386,-3834, -4061,-4055,-3839,-3447,-2925,-2305,-1595,-791,91,989, 1827,2562,3168,3631,3931,4050,3972,3697,3221,2553, 1747,858,-67,-1003,-1911,-2729,-3381,-3819,-4028,-4020, -3813,-3440,-2938,-2335,-1642,-842,43,952,1802,2536, 3134,3590,3893,4021,3952,3684,3222,2583,1802,925, -6,-960,-1879,-2691,-3339,-3780,-3998,-3998,-3802,-3449, -2969,-2387,-1691,-883,8,923,1775,2516,3119,3577, 3893,4042,3990,3722,3256,2625,1858,988,51,-915, -1849,-2673,-3320,-3762,-3991,-4013,-3833,-3489,-3018,-2436, -1739,-926,-34,870,1717,2457,3069,3542,3881,4050, 3998,3707,3221,2593,1850,996,59,-914,-1852,-2675, -3321,-3756,-3981,-3998,-3832,-3510,-3060,-2479,-1771,-948, -61,829,1666,2411,3039,3530,3873,4031,3966,3681, 3213,2605,1871,1018,69,-905,-1824,-2622,-3245,-3668, -3888,-3914,-3766,-3461,-3019,-2445,-1741,-924,-36,849, 1671,2403,3033,3541,3883,4022,3945,3667,3220,2627, 1889,1017,58,-911,-1817,-2606,-3235,-3663,-3882,-3910, -3769,-3470,-3022,-2437,-1729,-916,-40,839,1663,2397, 3029,3534,3876,4012,3930,3650,3206,2621,1891,1024, 63,-904,-1809,-2602,-3239,-3673,-3893,-3922,-3788,-3503, -3065,-2480,-1769,-962,-92,788,1622,2369,3015,3533, 3878,4008,3924,3649,3216,2640,1924,1070,119,-860, -1783,-2578,-3197,-3623,-3847,-3889,-3765,-3484,-3048,-2463, -1749,-932,-63,802,1625,2376,3040,3569,3919,4047, 3966,3697,3267,2697,1977,1118,155,-832,-1760,-2561, -3180,-3605,-3838,-3899,-3803,-3545,-3115,-2516,-1776,-949, -83,780,1609,2374,3040,3566,3914,4057,3995,3742, 3326,2754,2025,1146,173,-810,-1719,-2508,-3138,-3584, -3841,-3927,-3849,-3604,-3175,-2576,-1849,-1040,-175,707, 1557,2326,2986,3513,3871,4029,3982,3747,3342,2773, 2043,1163,189,-802,-1717,-2499,-3122,-3576,-3850,-3952, -3879,-3626,-3187,-2593,-1883,-1087,-224,664,1523,2314, 2995,3527,3878,4037,4005,3783,3377,2794,2057,1175, 190,-818,-1743,-2528,-3146,-3602,-3886,-3998,-3932,-3676, -3229,-2624,-1914,-1124,-271,618,1498,2313,3004,3534, 3883,4049,4030,3817,3412,2833,2091,1199,201,-805, -1719,-2485,-3101,-3569,-3875,-4001,-3928,-3660,-3210,-2616, -1913,-1125,-274,619,1497,2299,2977,3505,3863,4037, 4015,3806,3422,2865,2131,1241,254,-741,-1653,-2425, -3046,-3522,-3845,-3986,-3927,-3663,-3229,-2660,-1975,-1185, -315,588,1461,2255,2936,3469,3832,4008,3998,3810, 3449,2906,2175,1282,290,-712,-1631,-2416,-3056,-3544, -3870,-4013,-3956,-3701,-3279,-2726,-2058,-1280,-410,503, 1393,2204,2899,3441,3813,4005,4023,3861,3506,2952, 2209,1313,323,-668,-1578,-2362,-3020,-3537,-3883,-4025, -3960,-3704,-3284,-2733,-2069,-1293,-422,501,1402,2226, 2922,3463,3827,4021,4053,3908,3558,2991,2237,1348, 376,-602,-1512,-2307,-2977,-3516,-3874,-4011,-3937,-3687, -3289,-2757,-2095,-1311,-434,480,1368,2181,2869,3401, 3763,3963,4010,3882,3542,2985,2242,1363,409,-554, -1457,-2260,-2940,-3482,-3838,-3976,-3909,-3674,-3292,-2780, -2141,-1375,-507,405,1299,2108,2788,3322,3706,3940, 4010,3884,3539,2981,2249,1385,443,-514,-1418,-2226, -2915,-3459,-3818,-3974,-3928,-3705,-3323,-2803,-2171,-1424, -561,365,1272,2077,2753,3302,3716,3969,4036,3900, 3542,2977,2239,1385,460,-487,-1394,-2209,-2898,-3439, -3806,-3978,-3949,-3729,-3345,-2816,-2174,-1419,-553,373, 1268,2061,2735,3290,3708,3965,4036,3897,3538,2972, 2238,1391,476,-466,-1378,-2200,-2891,-3430,-3794,-3969, -3944,-3729,-3348,-2829,-2188,-1422,-543,390,1289,2082, 2757,3315,3745,4019,4094,3953,3584,3016,2293,1453, 525,-435,-1365,-2199,-2898,-3441,-3808,-3983,-3965,-3765, -3403,-2894,-2257,-1497,-617,323,1229,2025,2707,3288, 3751,4045,4125,3969,3597,3038,2328,1492,560,-411, -1343,-2173,-2869,-3408,-3776,-3962,-3957,-3766,-3405,-2899, -2268,-1502,-623,308,1195,1979,2660,3251,3731,4039, 4121,3963,3592,3052,2361,1541,615,-349,-1277,-2111, -2813,-3358,-3730,-3919,-3916,-3724,-3370,-2877,-2242,-1465, -579,339,1199,1966,2640,3227,3704,4014,4102,3952, 3597,3074,2397,1585,673,-275,-1197,-2049,-2783,-3357, -3738,-3929,-3938,-3774,-3448,-2961,-2313,-1527,-640,272, 1131,1899,2582,3185,3674,3989,4082,3943,3591,3066, 2402,1612,711,-252,-1200,-2062,-2796,-3366,-3749,-3936, -3945,-3786,-3467,-2985,-2347,-1563,-670,242,1092,1854, 2558,3199,3712,4026,4107,3967,3628,3112,2452,1665, 761,-221,-1191,-2060,-2783,-3344,-3733,-3938,-3948,-3779, -3442,-2953,-2315,-1537,-657,242,1089,1860,2573,3210, 3712,4015,4093,3962,3637,3133,2468,1668,756,-225, -1197,-2065,-2780,-3330,-3718,-3940,-3979,-3824,-3483,-2975, -2333,-1576,-730,147,997,1790,2513,3150,3659,3983, 4080,3949,3620,3120,2472,1688,775,-216,-1194,-2065, -2779,-3326,-3718,-3953,-4013,-3868,-3513,-2990,-2351,-1623, -808,62,935,1759,2510,3166,3683,4011,4112,3993, 3678,3195,2562,1779,854,-148,-1134,-2018,-2754,-3324, -3730,-3982,-4058,-3922,-3558,-3019,-2373,-1653,-852,23, 919,1772,2542,3200,3706,4022,4127,4023,3733,3261, 2619,1811,872,-129,-1111,-1998,-2742,-3320,-3731,-3982, -4060,-3932,-3582,-3058,-2429,-1721,-928,-52,854,1716, 2484,3135,3644,3973,4097,4008,3716,3241,2597,1796, 871,-119,-1087,-1960,-2698,-3283,-3711,-3963,-4017,-3873, -3541,-3046,-2435,-1737,-953,-89,811,1679,2456,3117, 3627,3951,4074,3992,3708,3239,2608,1816,882,-124, -1089,-1928,-2635,-3223,-3677,-3946,-4005,-3851,-3513,-3023, -2416,-1722,-946,-93,800,1666,2448,3111,3616,3940, 4072,4001,3729,3276,2652,1854,900,-114,-1069,-1897, -2600,-3201,-3671,-3960,-4029,-3882,-3540,-3044,-2439,-1757, -983,-117,794,1662,2423,3061,3563,3907,4064,4010, 3742,3282,2646,1842,904,-81,-1020,-1860,-2593,-3212, -3679,-3945,-3999,-3849,-3523,-3040,-2442,-1767,-1005,-145, 764,1632,2396,3032,3537,3888,4057,4021,3777,3320, 2664,1840,904,-66,-994,-1841,-2589,-3214,-3670,-3922, -3966,-3826,-3515,-3058,-2479,-1810,-1050,-195,709,1586, 2364,3015,3529,3890,4064,4030,3787,3341,2700,1889, 963,-7,-950,-1823,-2584,-3201,-3647,-3904,-3968,-3840, -3540,-3092,-2535,-1875,-1105,-237,672,1549,2332,2993, 3525,3907,4093,4056,3797,3339,2707,1924,1026,60, -899,-1790,-2562,-3182,-3624,-3878,-3941,-3819,-3523,-3085, -2537,-1889,-1129,-266,640,1518,2310,2979,3515,3899, 4102,4090,3841,3373,2729,1942,1042,80,-875,-1760, -2530,-3158,-3616,-3877,-3935,-3811,-3525,-3098,-2553,-1902, -1145,-285,629,1523,2325,2993,3524,3917,4133,4127, 3880,3407,2753,1962,1073,119,-841,-1746,-2538,-3176, -3634,-3899,-3964,-3850,-3571,-3146,-2596,-1941,-1175,-300, 626,1516,2298,2955,3498,3915,4152,4154,3898,3414, 2761,1986,1114,162,-816,-1743,-2547,-3187,-3640,-3902, -3978,-3875,-3603,-3183,-2646,-1992,-1207,-304,632,1501, 2267,2929,3495,3922,4155,4150,3895,3418,2769,2000, 1129,178,-798,-1719,-2514,-3143,-3597,-3867,-3952,-3858, -3593,-3184,-2657,-2009,-1223,-320,612,1483,2253,2934, 3514,3944,4164,4146,3889,3427,2794,2029,1156,202, -772,-1695,-2488,-3119,-3564,-3829,-3919,-3843,-3602,-3213, -2693,-2045,-1270,-390,528,1405,2192,2878,3459,3900, 4142,4141,3897,3448,2836,2084,1212,246,-748,-1673, -2462,-3083,-3536,-3810,-3905,-3832,-3608,-3245,-2733,-2075, -1297,-446,439,1313,2125,2842,3436,3880,4132,4146, 3915,3480,2891,2161,1294,318,-685,-1615,-2405,-3042, -3513,-3801,-3896,-3816,-3598,-3244,-2740,-2087,-1317,-477, 390,1245,2054,2785,3401,3857,4104,4116,3896,3475, 2891,2162,1302,333,-662,-1590,-2385,-3025,-3495,-3776, -3876,-3819,-3616,-3259,-2749,-2109,-1358,-517,370,1231, 2033,2762,3388,3855,4104,4119,3907,3493,2904,2155, 1274,300,-686,-1603,-2391,-3021,-3473,-3742,-3856,-3824, -3636,-3268,-2743,-2101,-1366,-538,349,1228,2052,2803, 3446,3907,4137,4136,3935,3549,2976,2222,1319,335, -646,-1550,-2336,-2969,-3425,-3703,-3828,-3800,-3613,-3247, -2727,-2091,-1373,-569,302,1185,2031,2798,3439,3896, 4127,4138,3943,3552,2973,2221,1328,356,-618,-1520, -2301,-2929,-3392,-3693,-3836,-3822,-3640,-3283,-2764,-2131, -1426,-645,219,1124,1990,2752,3371,3824,4082,4124, 3941,3549,2970,2220,1328,352,-615,-1505,-2275,-2904, -3373,-3680,-3843,-3850,-3673,-3300,-2774,-2154,-1476,-716, 154,1089,1985,2751,3364,3820,4097,4154,3976,3591, 3026,2291,1395,403,-578,-1460,-2213,-2836,-3317,-3647, -3820,-3821,-3631,-3254,-2742,-2147,-1487,-727,145,1074, 1964,2736,3365,3841,4131,4192,4010,3612,3033,2294, 1412,437,-543,-1443,-2203,-2818,-3300,-3648,-3833,-3827, -3622,-3258,-2775,-2200,-1530,-759,106,1020,1902,2687, 3334,3815,4106,4177,4010,3614,3022,2272,1401,453, -512,-1423,-2203,-2826,-3306,-3662,-3860,-3856,-3645,-3284, -2822,-2266,-1608,-832,53,979,1870,2654,3301,3788, 4090,4178,4030,3643,3052,2302,1441,506,-448,-1347, -2125,-2754,-3250,-3621,-3834,-3857,-3673,-3326,-2872,-2322, -1665,-885,5,943,1846,2647,3307,3799,4103,4198, 4059,3682,3090,2336,1466,533,-401,-1272,-2036,-2678, -3195,-3568,-3771,-3792,-3639,-3331,-2895,-2343,-1679,-906, -34,895,1811,2628,3298,3794,4107,4219,4093,3720, 3128,2362,1477,533,-398,-1257,-2021,-2681,-3216,-3577, -3752,-3756,-3618,-3342,-2922,-2370,-1703,-933,-61,871, 1778,2586,3248,3752,4080,4199,4078,3706,3113,2354, 1487,561,-359,-1232,-2025,-2706,-3236,-3588,-3766,-3793, -3669,-3393,-2977,-2435,-1781,-1004,-112,839,1756,2558, 3228,3751,4090,4206,4066,3681,3091,2348,1505,606, -305,-1189,-1999,-2689,-3220,-3579,-3762,-3787,-3659,-3383, -2969,-2427,-1762,-970,-74,860,1754,2558,3241,3781, 4132,4252,4107,3703,3094,2348,1522,641,-277,-1180, -2002,-2693,-3221,-3566,-3739,-3762,-3642,-3367,-2948,-2401, -1739,-952,-59,874,1759,2546,3218,3759,4124,4251, 4100,3691,3086,2360,1555,681,-244,-1161,-1986,-2673, -3196,-3546,-3732,-3771,-3668,-3410,-3003,-2469,-1811,-1023, -123,820,1712,2505,3188,3748,4127,4255,4102,3703, 3115,2394,1591,725,-188,-1099,-1927,-2606,-3124,-3485, -3701,-3767,-3678,-3428,-3029,-2497,-1833,-1041,-155,763, 1643,2450,3167,3754,4142,4270,4112,3711,3122,2408, 1613,753,-158,-1070,-1906,-2594,-3110,-3477,-3709,-3786, -3691,-3434,-3036,-2512,-1862,-1080,-209,698,1586,2414, 3151,3745,4133,4257,4103,3706,3142,2448,1645,754, -172,-1071,-1888,-2584,-3139,-3528,-3748,-3803,-3706,-3470, -3092,-2572,-1910,-1125,-251,660,1562,2415,3174,3775, 4152,4259,4103,3730,3185,2488,1665,752,-178,-1065, -1859,-2537,-3084,-3478,-3708,-3774,-3689,-3459,-3080,-2554, -1899,-1129,-266,655,1582,2455,3214,3802,4161,4259, 4108,3738,3184,2482,1666,768,-158,-1043,-1838,-2506, -3040,-3438,-3689,-3784,-3722,-3498,-3112,-2580,-1929,-1174, -319,608,1549,2425,3181,3765,4126,4237,4099,3736, 3185,2488,1683,802,-112,-997,-1801,-2486,-3040,-3446, -3697,-3799,-3752,-3545,-3169,-2637,-1986,-1238,-395,531, 1485,2377,3139,3725,4102,4229,4095,3726,3182,2507, 1728,862,-56,-951,-1754,-2438,-2995,-3422,-3696,-3807, -3756,-3541,-3173,-2658,-2025,-1294,-459,475,1450,2371, 3141,3723,4100,4245,4132,3774,3228,2558,1786,913, -17,-917,-1713,-2389,-2955,-3401,-3697,-3821,-3769,-3549, -3179,-2681,-2070,-1345,-494,465,1460,2390,3168,3749, 4118,4261,4157,3811,3270,2589,1798,912,-11,-895, -1687,-2366,-2938,-3386,-3678,-3806,-3770,-3564,-3196,-2696, -2095,-1385,-536,444,1464,2403,3172,3736,4092,4226, 4122,3785,3257,2583,1793,915,8,-864,-1654,-2341, -2910,-3349,-3645,-3784,-3759,-3561,-3206,-2722,-2138,-1432, -576,414,1436,2366,3129,3700,4066,4199,4087,3764, 3263,2610,1826,949,41,-836,-1630,-2308,-2869,-3318, -3636,-3789,-3762,-3565,-3223,-2761,-2183,-1468,-597,392, 1404,2333,3111,3705,4078,4203,4085,3764,3274,2633, 1855,984,86,-785,-1584,-2273,-2847,-3299,-3616,-3771, -3752,-3566,-3237,-2783,-2198,-1474,-605,375,1387,2327, 3111,3694,4062,4193,4082,3753,3248,2604,1845,998, 117,-742,-1543,-2256,-2854,-3312,-3619,-3767,-3748,-3571, -3261,-2819,-2241,-1517,-641,350,1372,2313,3093,3683, 4061,4205,4109,3792,3291,2639,1874,1037,173,-680, -1488,-2217,-2832,-3302,-3610,-3756,-3746,-3589,-3288,-2846, -2267,-1542,-657,348,1372,2312,3095,3687,4068,4224, 4155,3871,3381,2722,1950,1121,256,-619,-1462,-2222, -2848,-3311,-3608,-3753,-3755,-3613,-3329,-2896,-2310,-1560, -661,340,1352,2284,3066,3658,4044,4210,4143,3850, 3357,2709,1956,1136,271,-608,-1452,-2215,-2852,-3321, -3610,-3740,-3741,-3623,-3372,-2960,-2373,-1615,-707,297, 1306,2226,2997,3594,3996,4171,4100,3798,3316,2707, 1992,1186,318,-560,-1397,-2152,-2782,-3251,-3538,-3674, -3699,-3603,-3358,-2942,-2352,-1601,-704,289,1295,2216, 2992,3594,3999,4174,4113,3829,3361,2755,2045,1254, 392,-501,-1367,-2138,-2762,-3221,-3521,-3683,-3725,-3635, -3388,-2969,-2372,-1612,-716,266,1263,2189,2976,3589, 4001,4185,4125,3842,3376,2765,2051,1252,388,-509, -1374,-2137,-2754,-3216,-3534,-3718,-3775,-3697,-3464,-3050, -2444,-1671,-768,212,1204,2132,2926,3545,3967,4162, 4106,3813,3351,2774,2090,1284,394,-507,-1348,-2091, -2711,-3185,-3514,-3706,-3779,-3715,-3484,-3070,-2473,-1715, -814,181,1187,2112,2900,3526,3959,4152,4083,3791, 3350,2806,2138,1336,450,-437,-1265,-2009,-2642,-3132, -3470,-3678,-3763,-3704,-3474,-3066,-2493,-1754,-852,159, 1175,2097,2879,3513,3956,4142,4064,3780,3360,2826, 2159,1363,480,-420,-1266,-2010,-2623,-3108,-3463,-3692, -3789,-3729,-3492,-3080,-2499,-1755,-854,145,1154,2086, 2892,3532,3964,4150,4095,3844,3430,2879,2196,1401, 520,-394,-1264,-2017,-2628,-3105,-3464,-3710,-3823,-3777, -3546,-3126,-2530,-1779,-881,116,1124,2059,2862,3494, 3918,4112,4080,3850,3451,2896,2198,1381,493,-404, -1245,-1986,-2603,-3094,-3462,-3706,-3827,-3797,-3591,-3185, -2581,-1819,-929,49,1056,2011,2833,3463,3869,4048, 4032,3835,3464,2919,2223,1408,520,-382,-1221,-1951, -2562,-3059,-3443,-3710,-3842,-3812,-3598,-3182,-2577,-1815, -931,38,1043,2008,2848,3492,3897,4076,4058,3864, 3497,2961,2273,1470,587,-315,-1156,-1888,-2503,-3011, -3409,-3696,-3843,-3815,-3588,-3166,-2563,-1802,-899,94, 1097,2035,2847,3477,3890,4083,4075,3879,3512,2982, 2302,1490,592,-307,-1130,-1846,-2464,-2991,-3409,-3700, -3849,-3827,-3608,-3190,-2593,-1829,-918,91,1100,2021, 2800,3405,3820,4034,4057,3883,3516,2977,2291,1492, 615,-272,-1094,-1811,-2436,-2976,-3417,-3734,-3894,-3875, -3649,-3229,-2640,-1892,-988,22,1040,1967,2742,3344, 3770,4005,4046,3887,3531,2996,2313,1523,659,-222, -1043,-1770,-2403,-2956,-3418,-3753,-3920,-3894,-3679,-3283, -2706,-1950,-1030,-21,986,1909,2695,3312,3752,4008, 4068,3924,3581,3058,2386,1590,711,-168,-979,-1697, -2345,-2924,-3398,-3720,-3872,-3857,-3671,-3290,-2703,-1931, -1019,-34,955,1873,2654,3270,3717,3993,4075,3943, 3598,3078,2410,1617,742,-127,-922,-1638,-2303,-2904, -3381,-3698,-3850,-3843,-3656,-3264,-2669,-1901,-1002,-24, 959,1867,2637,3247,3695,3977,4055,3909,3556,3033, 2373,1602,752,-107,-912,-1646,-2314,-2909,-3393,-3732, -3904,-3897,-3699,-3308,-2721,-1957,-1049,-58,920,1812, 2581,3212,3680,3962,4030,3880,3535,3011,2339,1570, 758,-64,-866,-1619,-2294,-2876,-3359,-3709,-3905,-3919, -3735,-3340,-2736,-1958,-1054,-90,865,1757,2543,3192, 3670,3961,4056,3941,3609,3071,2385,1617,815,-1, -808,-1566,-2249,-2836,-3314,-3668,-3873,-3910,-3750,-3363, -2753,-1965,-1066,-111,841,1736,2525,3170,3656,3972, 4085,3970,3623,3090,2433,1696,895,58,-768,-1534, -2214,-2815,-3312,-3672,-3867,-3888,-3725,-3348,-2753,-1981, -1086,-135,812,1695,2476,3126,3632,3962,4077,3952, 3602,3074,2427,1698,897,53,-779,-1539,-2216,-2819, -3335,-3703,-3901,-3916,-3735,-3341,-2740,-1975,-1094,-158, 784,1661,2440,3101,3625,3972,4093,3969,3612,3080, 2432,1700,893,44,-781,-1537,-2210,-2820,-3349,-3749, -3973,-4008,-3826,-3415,-2799,-2035,-1170,-234,717,1606, 2387,3053,3592,3949,4070,3951,3613,3102,2466,1731, 924,78,-742,-1497,-2184,-2808,-3341,-3739,-3972,-4018, -3844,-3430,-2809,-2050,-1198,-276,664,1556,2355,3052, 3614,3981,4103,3988,3662,3176,2558,1828,1005,147, -672,-1419,-2116,-2768,-3327,-3730,-3950,-3986,-3812,-3409, -2803,-2048,-1199,-286,638,1526,2336,3045,3613,3984, 4111,3994,3664,3171,2567,1859,1053,204,-615,-1363, -2069,-2735,-3312,-3730,-3955,-3983,-3804,-3418,-2838,-2107, -1264,-355,568,1455,2273,3002,3586,3954,4073,3953, 3632,3147,2537,1822,1026,194,-618,-1370,-2072,-2726, -3288,-3704,-3944,-3985,-3804,-3400,-2811,-2093,-1285,-405, 517,1422,2263,3007,3592,3959,4079,3966,3657,3186, 2579,1857,1055,223,-587,-1352,-2062,-2710,-3265,-3691, -3955,-4014,-3835,-3418,-2815,-2097,-1313,-456,463,1384, 2238,2971,3542,3913,4057,3967,3661,3190,2594,1899, 1125,310,-503,-1286,-2014,-2668,-3229,-3668,-3944,-4004, -3823,-3416,-2828,-2121,-1331,-465,465,1386,2231,2955, 3523,3901,4058,3979,3686,3226,2645,1973,1227,427, -386,-1172,-1904,-2573,-3159,-3615,-3889,-3935,-3746,-3349, -2791,-2110,-1324,-451,470,1381,2221,2943,3504,3872, 4020,3935,3646,3195,2615,1941,1199,412,-391,-1175, -1913,-2590,-3166,-3611,-3868,-3902,-3702,-3308,-2775,-2136, -1387,-524,404,1322,2156,2866,3425,3802,3965,3893, 3605,3148,2568,1898,1162,379,-425,-1212,-1952,-2630, -3212,-3651,-3900,-3920,-3716,-3332,-2817,-2199,-1456,-583, 374,1310,2144,2847,3411,3808,3985,3917,3627,3173, 2612,1962,1232,447,-359,-1151,-1901,-2591,-3188,-3648, -3908,-3935,-3732,-3349,-2837,-2211,-1456,-570,386,1322, 2165,2889,3476,3877,4036,3946,3658,3222,2669,2012, 1275,495,-307,-1106,-1877,-2580,-3178,-3632,-3893,-3927, -3730,-3349,-2846,-2231,-1481,-601,342,1268,2116,2858, 3462,3863,4020,3940,3670,3243,2679,2014,1289,523, -283,-1102,-1891,-2599,-3200,-3650,-3903,-3926,-3738,-3388, -2902,-2286,-1530,-658,268,1182,2043,2807,3418,3816, 3978,3910,3642,3203,2635,1989,1295,539,-274,-1104, -1904,-2625,-3228,-3663,-3888,-3898,-3725,-3401,-2928,-2304, -1544,-676,251,1176,2047,2816,3429,3830,3998,3927, 3643,3192,2637,2024,1347,586,-241,-1079,-1879,-2612, -3230,-3662,-3861,-3860,-3708,-3414,-2948,-2312,-1546,-687, 241,1188,2079,2849,3455,3857,4028,3959,3677,3240, 2703,2091,1406,639,-191,-1037,-1847,-2587,-3205,-3631, -3837,-3856,-3726,-3441,-2977,-2350,-1597,-743,189,1151, 2049,2821,3432,3844,4017,3946,3675,3260,2734,2120, 1425,663,-156,-1007,-1845,-2596,-3195,-3600,-3815,-3854, -3726,-3432,-2978,-2379,-1650,-803,130,1083,1974,2752, 3373,3793,3971,3914,3654,3248,2735,2138,1458,689, -153,-1024,-1857,-2587,-3165,-3571,-3804,-3863,-3745,-3458, -3005,-2410,-1689,-853,71,1033,1945,2738,3365,3792, 3986,3941,3685,3278,2773,2191,1512,715,-159,-1030, -1838,-2546,-3123,-3545,-3799,-3871,-3768,-3491,-3041,-2444, -1725,-895,30,1007,1950,2767,3393,3812,4011,3973, 3727,3322,2831,2262,1580,767,-119,-994,-1804,-2518, -3108,-3543,-3799,-3878,-3777,-3503,-3066,-2486,-1773,-934, 2,987,1938,2768,3409,3826,4008,3969,3733,3352, 2873,2309,1627,815,-69,-951,-1765,-2480,-3071,-3511, -3777,-3864,-3776,-3520,-3102,-2539,-1836,-1000,-53,943, 1896,2725,3373,3798,3977,3928,3701,3344,2884,2321, 1641,842,-34,-914,-1728,-2438,-3026,-3471,-3749,-3845, -3767,-3523,-3121,-2570,-1873,-1041,-98,899,1856,2682, 3317,3725,3904,3877,3676,3337,2885,2338,1673,888, 13,-870,-1687,-2394,-2971,-3404,-3685,-3799,-3745,-3520, -3136,-2601,-1913,-1075,-121,875,1820,2639,3273,3681, 3860,3837,3656,3340,2905,2366,1712,929,52,-840, -1656,-2350,-2914,-3350,-3641,-3759,-3707,-3496,-3129,-2608, -1925,-1082,-114,895,1842,2646,3254,3648,3829,3823, 3660,3360,2940,2402,1741,946,60,-824,-1626,-2320, -2900,-3360,-3661,-3780,-3724,-3514,-3152,-2632,-1949,-1105, -129,893,1852,2652,3243,3619,3797,3800,3649,3363, 2949,2406,1725,920,50,-813,-1608,-2314,-2905,-3351, -3639,-3775,-3754,-3565,-3203,-2683,-2008,-1168,-189,836, 1784,2577,3177,3571,3759,3765,3628,3364,2961,2408, 1716,916,56,-808,-1615,-2324,-2905,-3344,-3635,-3777, -3765,-3586,-3238,-2724,-2039,-1180,-182,846,1792,2581, 3179,3574,3777,3805,3680,3416,3000,2438,1752,967, 108,-764,-1580,-2295,-2888,-3355,-3659,-3788,-3757,-3581, -3250,-2741,-2042,-1153,-138,895,1832,2604,3186,3575, 3785,3829,3720,3453,3024,2459,1787,1025,189,-681, -1512,-2245,-2852,-3319,-3627,-3770,-3758,-3594,-3271,-2767, -2072,-1199,-201,824,1764,2538,3122,3522,3745,3803, 3707,3452,3038,2480,1811,1052,217,-646,-1467,-2198, -2808,-3273,-3591,-3758,-3772,-3627,-3307,-2798,-2106,-1242, -255,759,1700,2488,3090,3498,3727,3791,3701,3448, 3040,2488,1819,1051,208,-658,-1474,-2185,-2776,-3242, -3571,-3752,-3785,-3654,-3339,-2821,-2111,-1237,-246,767, 1694,2464,3054,3464,3711,3795,3712,3457,3045,2498, 1839,1083,249,-613,-1429,-2136,-2717,-3173,-3503,-3709, -3775,-3677,-3381,-2869,-2153,-1272,-282,723,1644,2408, 2997,3420,3683,3787,3714,3459,3053,2517,1866,1100, 246,-614,-1404,-2088,-2656,-3107,-3439,-3657,-3753,-3684, -3406,-2898,-2175,-1288,-304,689,1595,2357,2954,3392, 3666,3775,3709,3469,3072,2546,1893,1112,251,-605, -1386,-2062,-2619,-3059,-3391,-3628,-3747,-3692,-3407,-2883, -2145,-1254,-279,700,1597,2355,2952,3391,3670,3787, 3733,3505,3115,2587,1926,1147,294,-557,-1348,-2033, -2598,-3049,-3406,-3669,-3803,-3745,-3454,-2922,-2190,-1307, -340,632,1531,2300,2916,3368,3652,3770,3718,3501, 3126,2606,1947,1166,305,-555,-1341,-2010,-2560,-3017, -3404,-3698,-3845,-3781,-3472,-2929,-2200,-1334,-378,592, 1478,2225,2829,3296,3608,3743,3692,3476,3114,2608, 1961,1199,359,-487,-1271,-1943,-2497,-2965,-3361,-3665, -3815,-3756,-3455,-2922,-2200,-1330,-368,599,1478,2215, 2810,3279,3603,3751,3711,3500,3142,2646,2015,1265, 435,-392,-1152,-1820,-2406,-2920,-3345,-3646,-3790,-3740, -3455,-2931,-2210,-1350,-410,543,1430,2191,2803,3263, 3582,3736,3714,3516,3164,2676,2046,1286,446,-383, -1130,-1777,-2353,-2876,-3325,-3653,-3813,-3763,-3464,-2923, -2196,-1345,-427,508,1390,2162,2780,3236,3527,3665, 3652,3482,3150,2660,2019,1265,445,-371,-1123,-1781, -2351,-2866,-3327,-3694,-3877,-3813,-3498,-2965,-2255,-1407, -471,473,1345,2099,2723,3203,3516,3655,3636,3475, 3159,2675,2031,1279,471,-323,-1063,-1728,-2325,-2868, -3350,-3719,-3896,-3822,-3493,-2958,-2260,-1429,-498,449, 1319,2059,2675,3165,3504,3666,3667,3520,3212,2728, 2087,1330,514,-286,-1017,-1672,-2267,-2823,-3317,-3689, -3864,-3789,-3460,-2924,-2226,-1406,-496,436,1305,2056, 2669,3138,3450,3607,3623,3490,3185,2695,2055,1314, 523,-262,-991,-1647,-2246,-2808,-3315,-3699,-3870,-3789, -3466,-2940,-2251,-1434,-534,378,1236,1989,2612,3088, 3411,3583,3607,3465,3142,2638,1993,1266,511,-235, -951,-1629,-2267,-2858,-3370,-3742,-3911,-3836,-3518,-2994, -2302,-1488,-592,322,1183,1939,2564,3055,3409,3615, 3650,3494,3146,2626,1986,1282,558,-161,-871,-1563, -2226,-2834,-3347,-3714,-3879,-3803,-3487,-2967,-2289,-1478, -578,340,1194,1925,2527,3015,3388,3617,3660,3489, 3116,2586,1960,1292,609,-90,-802,-1511,-2182,-2795, -3312,-3683,-3844,-3751,-3425,-2910,-2246,-1448,-556,352, 1189,1907,2504,2994,3364,3587,3639,3488,3128,2595, 1967,1315,644,-63,-799,-1515,-2189,-2806,-3334,-3712, -3871,-3782,-3458,-2941,-2266,-1464,-576,327,1164,1884, 2496,3015,3413,3646,3685,3518,3153,2626,2003,1345, 665,-47,-779,-1497,-2188,-2838,-3388,-3761,-3910,-3815, -3499,-2980,-2289,-1478,-596,295,1131,1865,2493,3022, 3439,3694,3735,3547,3156,2618,2005,1363,693,-11, -736,-1466,-2184,-2857,-3417,-3792,-3938,-3854,-3544,-3023, -2325,-1512,-641,234,1072,1827,2478,3016,3434,3694, 3745,3567,3176,2642,2047,1427,770,66,-668,-1412, -2142,-2820,-3382,-3767,-3938,-3877,-3584,-3069,-2372,-1559, -689,189,1028,1790,2450,3006,3437,3704,3754,3571, 3193,2692,2128,1524,884,192,-550,-1324,-2077,-2761, -3329,-3741,-3948,-3900,-3599,-3085,-2400,-1591,-724,148, 978,1740,2416,2989,3420,3669,3700,3518,3155,2679, 2146,1572,950,259,-505,-1307,-2081,-2774,-3342,-3752, -3951,-3896,-3580,-3054,-2376,-1595,-751,105,929,1682, 2358,2945,3385,3629,3658,3479,3132,2679,2167,1619, 1011,316,-466,-1281,-2062,-2768,-3353,-3769,-3966,-3904, -3585,-3050,-2371,-1611,-794,54,886,1648,2324,2907, 3358,3626,3668,3494,3154,2713,2214,1668,1059,363, -413,-1224,-2001,-2715,-3320,-3758,-3971,-3921,-3609,-3075, -2395,-1630,-821,15,841,1620,2319,2912,3363,3616, 3645,3468,3131,2692,2203,1677,1089,404,-373,-1186, -1973,-2698,-3309,-3741,-3942,-3884,-3573,-3043,-2373,-1630, -845,-30,793,1583,2299,2899,3331,3558,3576,3411, 3102,2693,2221,1698,1106,416,-362,-1181,-1979,-2702, -3310,-3742,-3937,-3865,-3538,-3018,-2372,-1664,-901,-89, 753,1567,2296,2891,3311,3531,3545,3380,3093,2720, 2269,1730,1102,393,-375,-1180,-1977,-2706,-3309,-3734, -3928,-3847,-3511,-2991,-2374,-1697,-951,-127,736,1561, 2288,2882,3306,3525,3535,3369,3078,2705,2261,1741, 1128,417,-361,-1163,-1949,-2683,-3301,-3724,-3902,-3811, -3478,-2968,-2361,-1696,-966,-150,715,1545,2263,2836, 3246,3469,3495,3350,3075,2707,2270,1762,1155,441, -347,-1155,-1949,-2690,-3309,-3721,-3876,-3769,-3440,-2953, -2368,-1710,-979,-171,682,1515,2249,2830,3227,3429, 3453,3330,3085,2736,2303,1802,1213,512,-276,-1093, -1898,-2649,-3278,-3698,-3849,-3731,-3408,-2946,-2394,-1761, -1036,-227,636,1477,2223,2810,3203,3404,3437,3323, 3084,2749,2345,1868,1289,592,-199,-1030,-1858,-2627, -3258,-3670,-3820,-3711,-3398,-2940,-2393,-1777,-1075,-265, 619,1474,2207,2768,3158,3387,3445,3337,3102,2776, 2372,1879,1284,579,-216,-1069,-1926,-2709,-3318,-3693, -3820,-3710,-3398,-2944,-2402,-1794,-1095,-283,599,1451, 2186,2766,3176,3404,3462,3371,3159,2836,2411,1906, 1317,619,-202,-1091,-1962,-2728,-3324,-3695,-3818,-3701, -3389,-2956,-2445,-1845,-1124,-288,601,1455,2199,2785, 3189,3416,3484,3416,3218,2898,2484,2003,1433,719, -137,-1066,-1966,-2741,-3330,-3691,-3812,-3701,-3407,-2994, -2497,-1906,-1183,-329,585,1452,2189,2761,3161,3399, 3485,3430,3246,2947,2558,2085,1496,755,-116,-1043, -1947,-2740,-3352,-3720,-3837,-3733,-3463,-3071,-2584,-1988, -1261,-403,513,1371,2099,2677,3097,3351,3443,3390, 3211,2933,2566,2101,1509,775,-87,-1010,-1911,-2705, -3316,-3679,-3808,-3725,-3477,-3097,-2607,-2016,-1297,-448, 467,1339,2075,2646,3059,3314,3410,3359,3180,2905, 2550,2108,1544,826,-43,-996,-1915,-2688,-3252,-3585, -3707,-3648,-3432,-3080,-2609,-2018,-1290,-429,488,1354, 2085,2657,3076,3329,3417,3369,3222,2982,2637,2180, 1596,864,-19,-986,-1914,-2683,-3228,-3547,-3670,-3631, -3439,-3105,-2636,-2029,-1275,-403,503,1340,2051,2624, 3050,3305,3389,3352,3229,3020,2702,2249,1643,874, -34,-1009,-1940,-2714,-3264,-3586,-3716,-3687,-3502,-3168, -2694,-2075,-1313,-444,445,1271,1990,2581,3013,3267, 3362,3347,3242,3043,2736,2293,1680,874,-69,-1053, -1970,-2726,-3263,-3585,-3725,-3714,-3546,-3221,-2737,-2106, -1345,-498,375,1205,1943,2539,2964,3216,3338,3366, 3295,3102,2789,2340,1715,890,-72,-1057,-1954,-2688, -3214,-3540,-3688,-3681,-3520,-3200,-2717,-2092,-1344,-500, 380,1219,1952,2536,2950,3202,3332,3364,3301,3130, 2839,2394,1752,911,-57,-1042,-1933,-2655,-3174,-3495, -3638,-3632,-3487,-3186,-2721,-2109,-1372,-529,359,1200, 1922,2485,2895,3158,3287,3313,3263,3126,2862,2409, 1743,897,-61,-1031,-1905,-2609,-3116,-3438,-3594,-3608, -3479,-3187,-2719,-2108,-1388,-574,294,1136,1851,2398, 2789,3055,3211,3272,3247,3127,2865,2406,1730,874, -82,-1041,-1885,-2553,-3051,-3399,-3596,-3618,-3465,-3145, -2679,-2089,-1382,-569,300,1132,1844,2391,2784,3047, 3207,3282,3275,3164,2900,2440,1765,903,-65,-1019, -1854,-2524,-3027,-3380,-3585,-3616,-3467,-3146,-2679,-2089, -1376,-550,333,1164,1856,2384,2771,3044,3222,3319, 3329,3225,2964,2500,1815,940,-27,-969,-1795,-2479, -3013,-3385,-3583,-3610,-3474,-3173,-2718,-2126,-1416,-599, 274,1100,1786,2310,2695,2977,3187,3330,3380,3290, 3021,2537,1830,941,-29,-963,-1778,-2444,-2976,-3366, -3590,-3638,-3516,-3231,-2790,-2208,-1507,-694,176,1004, 1706,2247,2649,2945,3168,3330,3406,3338,3065,2562, 1852,981,26,-915,-1743,-2411,-2921,-3295,-3532,-3616, -3525,-3253,-2810,-2217,-1501,-691,164,982,1679,2221, 2631,2940,3182,3357,3443,3374,3088,2568,1854,1000, 68,-856,-1680,-2355,-2875,-3260,-3512,-3608,-3527,-3273, -2844,-2247,-1521,-720,107,906,1607,2168,2587,2908, 3179,3394,3504,3430,3123,2585,1856,989,61,-850, -1661,-2328,-2860,-3263,-3527,-3620,-3546,-3309,-2900,-2316, -1587,-772,67,868,1572,2131,2557,2898,3199,3445, 3568,3491,3169,2607,1862,992,63,-842,-1651,-2315, -2837,-3232,-3501,-3611,-3546,-3307,-2894,-2315,-1584,-753, 110,911,1580,2098,2514,2882,3213,3467,3576,3480, 3147,2586,1839,961,33,-855,-1642,-2301,-2828,-3227, -3493,-3608,-3554,-3314,-2894,-2300,-1566,-735,124,914, 1558,2050,2467,2867,3235,3504,3603,3481,3127,2563, 1825,963,52,-820,-1606,-2283,-2837,-3252,-3519,-3638, -3593,-3355,-2920,-2317,-1581,-752,103,885,1517,2004, 2431,2848,3234,3514,3614,3483,3111,2537,1812,981, 94,-773,-1558,-2233,-2796,-3234,-3528,-3661,-3615,-3380, -2954,-2356,-1614,-772,78,830,1431,1925,2382,2836, 3246,3541,3648,3521,3151,2583,1869,1046,164,-706, -1496,-2178,-2744,-3189,-3494,-3633,-3596,-3370,-2957,-2361, -1615,-775,60,790,1384,1890,2380,2867,3298,3600, 3704,3574,3201,2636,1929,1107,217,-663,-1464,-2150, -2716,-3157,-3464,-3621,-3607,-3399,-2980,-2368,-1616,-795, 12,732,1339,1868,2370,2854,3275,3562,3647,3503, 3135,2575,1867,1058,190,-675,-1466,-2147,-2706,-3139, -3444,-3617,-3633,-3441,-3017,-2389,-1639,-853,-86,620, 1239,1796,2316,2807,3234,3528,3615,3466,3098,2553, 1866,1069,217,-630,-1412,-2098,-2665,-3105,-3423,-3623, -3661,-3469,-3020,-2376,-1638,-882,-142,550,1178,1759, 2317,2841,3284,3585,3682,3544,3181,2634,1946,1147, 288,-554,-1326,-2010,-2597,-3069,-3416,-3624,-3648,-3434, -2972,-2322,-1590,-852,-140,533,1160,1752,2329,2872, 3329,3627,3709,3559,3197,2653,1960,1156,302,-530, -1288,-1958,-2545,-3043,-3423,-3641,-3651,-3420,-2965,-2338, -1638,-925,-227,445,1077,1675,2255,2813,3284,3584, 3660,3506,3150,2617,1933,1142,301,-524,-1283,-1955, -2542,-3042,-3437,-3681,-3702,-3461,-2986,-2370,-1702,-1020, -340,321,951,1562,2172,2756,3232,3520,3595,3469, 3149,2638,1960,1177,352,-462,-1228,-1915,-2514,-3019, -3419,-3672,-3694,-3441,-2954,-2342,-1693,-1037,-370,294, 940,1575,2202,2792,3274,3572,3657,3526,3195,2683, 2024,1265,449,-367,-1126,-1808,-2416,-2968,-3423,-3691, -3691,-3419,-2948,-2370,-1748,-1095,-425,252,932,1610, 2262,2848,3321,3631,3733,3600,3239,2689,2018,1274, 483,-320,-1078,-1759,-2387,-2980,-3467,-3737,-3715,-3428, -2964,-2412,-1818,-1184,-519,166,862,1558,2239,2851, 3331,3626,3714,3576,3220,2668,1990,1248,475,-305, -1060,-1768,-2438,-3043,-3505,-3741,-3713,-3448,-3015,-2476, -1887,-1266,-610,88,813,1537,2232,2852,3340,3646, 3730,3583,3207,2650,1985,1275,532,-233,-1000,-1745, -2444,-3055,-3499,-3720,-3695,-3447,-3022,-2486,-1903,-1303, -658,48,795,1535,2227,2838,3325,3639,3733,3589, 3215,2660,2004,1311,589,-168,-944,-1704,-2422,-3042, -3495,-3714,-3667,-3383,-2945,-2427,-1880,-1301,-653,60, 798,1518,2205,2829,3326,3630,3713,3571,3214,2675, 2026,1344,640,-109,-892,-1679,-2415,-3043,-3496,-3704, -3650,-3366,-2940,-2452,-1926,-1346,-692,20,759,1499, 2209,2843,3342,3652,3744,3599,3230,2691,2071,1420, 727,-31,-848,-1667,-2423,-3060,-3515,-3729,-3684,-3407, -2985,-2496,-1978,-1413,-777,-65,699,1468,2192,2831, 3339,3661,3753,3595,3220,2697,2103,1464,763,-8, -835,-1676,-2463,-3123,-3573,-3768,-3708,-3440,-3040,-2570, -2058,-1499,-862,-129,666,1452,2169,2798,3307,3645, 3747,3590,3210,2686,2095,1474,802,53,-769,-1623, -2427,-3081,-3509,-3682,-3626,-3400,-3049,-2611,-2107,-1544, -898,-153,665,1470,2194,2824,3346,3698,3803,3633, 3248,2746,2191,1594,934,176,-673,-1552,-2358,-2997, -3416,-3599,-3561,-3345,-3010,-2599,-2116,-1558,-915,-170, 644,1454,2202,2866,3401,3738,3808,3619,3246,2778, 2259,1679,1012,235,-637,-1530,-2344,-2988,-3405,-3584, -3545,-3333,-3007,-2609,-2143,-1600,-968,-248,540,1343, 2109,2785,3310,3616,3673,3496,3152,2709,2210,1647, 982,196,-677,-1558,-2363,-3004,-3423,-3600,-3563,-3363, -3048,-2650,-2175,-1630,-1007,-296,493,1310,2081,2749, 3256,3554,3604,3428,3090,2668,2198,1653,978,166, -721,-1593,-2364,-2980,-3392,-3573,-3539,-3349,-3046,-2655, -2178,-1626,-1004,-286,518,1357,2140,2807,3310,3599, 3642,3464,3138,2748,2310,1775,1084,237,-684,-1578, -2354,-2956,-3344,-3509,-3481,-3313,-3037,-2660,-2194,-1663, -1060,-342,482,1342,2149,2829,3330,3605,3642,3477, 3183,2823,2394,1844,1127,258,-680,-1592,-2381,-2980, -3357,-3520,-3511,-3366,-3092,-2706,-2244,-1727,-1124,-393, 455,1335,2158,2847,3342,3603,3633,3483,3215,2861, 2420,1855,1131,258,-686,-1596,-2377,-2976,-3370,-3559, -3568,-3420,-3149,-2779,-2335,-1814,-1194,-447,414,1316, 2159,2853,3335,3581,3618,3500,3271,2941,2506,1943, 1215,327,-648,-1574,-2342,-2924,-3329,-3552,-3590,-3456, -3195,-2840,-2420,-1914,-1293,-524,373,1307,2164,2852, 3322,3571,3628,3531,3309,2987,2565,2007,1272,363, -631,-1559,-2316,-2880,-3275,-3499,-3540,-3415,-3152,-2800, -2385,-1897,-1283,-499,417,1354,2195,2859,3312,3553, 3605,3515,3309,3006,2596,2029,1270,348,-634,-1543, -2296,-2865,-3258,-3473,-3508,-3374,-3114,-2764,-2360,-1883, -1263,-458,471,1394,2205,2842,3271,3494,3536,3456, 3286,3020,2617,2030,1247,319,-644,-1534,-2281,-2857, -3259,-3480,-3519,-3401,-3160,-2837,-2455,-1982,-1352,-524, 425,1354,2149,2758,3177,3409,3485,3442,3301,3048, 2642,2057,1287,371,-601,-1509,-2268,-2846,-3243,-3466, -3520,-3419,-3199,-2891,-2512,-2037,-1396,-556,404,1339, 2125,2723,3135,3378,3485,3480,3370,3131,2716,2112, 1331,406,-574,-1489,-2248,-2822,-3217,-3441,-3501,-3413, -3205,-2903,-2524,-2039,-1378,-521,452,1386,2163,2739, 3136,3388,3518,3538,3435,3188,2758,2121,1296,354, -605,-1488,-2236,-2816,-3209,-3425,-3488,-3426,-3250,-2979, -2612,-2111,-1426,-558,410,1346,2131,2709,3103,3364, 3526,3581,3495,3245,2809,2171,1359,440,-499,-1387, -2158,-2760,-3160,-3381,-3459,-3419,-3276,-3033,-2678,-2172, -1482,-617,340,1268,2044,2617,3012,3287,3475,3555, 3494,3253,2823,2191,1395,487,-452,-1343,-2118,-2724, -3127,-3338,-3397,-3360,-3251,-3049,-2706,-2188,-1484,-606, 357,1265,1997,2531,2923,3226,3444,3540,3478,3233, 2790,2155,1349,432,-507,-1381,-2126,-2709,-3104,-3318, -3389,-3365,-3271,-3082,-2733,-2191,-1460,-576,373,1260, 1987,2532,2933,3235,3462,3583,3547,3306,2843,2195, 1398,496,-446,-1329,-2073,-2640,-3029,-3267,-3378,-3389, -3313,-3122,-2764,-2202,-1442,-546,377,1232,1956,2528, 2957,3275,3507,3636,3602,3353,2881,2227,1426,513, -440,-1328,-2070,-2625,-3006,-3247,-3382,-3424,-3362,-3164, -2798,-2225,-1441,-513,415,1229,1898,2453,2916,3284, 3540,3660,3612,3365,2905,2255,1431,490,-477,-1360, -2098,-2662,-3058,-3304,-3438,-3482,-3418,-3202,-2815,-2230, -1441,-510,423,1230,1872,2405,2874,3268,3539,3654, 3598,3355,2912,2271,1449,501,-468,-1344,-2065,-2627, -3037,-3301,-3451,-3513,-3462,-3257,-2862,-2262,-1470,-555, 365,1184,1862,2419,2898,3296,3573,3687,3613,3358, 2916,2284,1463,506,-471,-1343,-2043,-2572,-2957,-3229, -3411,-3509,-3475,-3264,-2851,-2237,-1445,-540,359,1156, 1829,2412,2924,3340,3620,3732,3669,3416,2961,2306, 1481,534,-435,-1309,-2026,-2570,-2965,-3239,-3426,-3527, -3497,-3268,-2816,-2170,-1380,-504,371,1157,1825,2406, 2915,3327,3610,3741,3704,3457,2985,2308,1475,547, -404,-1279,-2012,-2581,-2997,-3292,-3493,-3605,-3585,-3367, -2907,-2240,-1445,-587,270,1064,1752,2349,2867,3287, 3578,3727,3705,3471,3004,2327,1480,534,-423,-1293, -2003,-2540,-2947,-3268,-3515,-3651,-3626,-3388,-2919,-2254, -1471,-629,210,987,1672,2282,2825,3269,3574,3730, 3707,3480,3023,2342,1470,483,-490,-1335,-1997,-2508, -2920,-3268,-3543,-3690,-3651,-3377,-2874,-2201,-1431,-611, 220,1011,1714,2326,2851,3288,3610,3778,3759,3528, 3077,2398,1518,528,-435,-1262,-1922,-2446,-2885,-3263, -3569,-3729,-3676,-3374,-2861,-2202,-1452,-649,180,981, 1707,2328,2855,3297,3626,3805,3786,3543,3068,2371, 1494,534,-404,-1223,-1884,-2414,-2866,-3271,-3589,-3745, -3675,-3357,-2840,-2191,-1458,-672,140,941,1672,2307, 2851,3298,3628,3803,3776,3522,3033,2320,1434,469, -454,-1245,-1893,-2438,-2919,-3339,-3654,-3794,-3708,-3383, -2862,-2202,-1468,-683,131,929,1661,2310,2866,3331, 3668,3849,3827,3572,3066,2342,1458,504,-408,-1194, -1844,-2404,-2916,-3369,-3702,-3824,-3697,-3340,-2813,-2176, -1468,-695,112,896,1614,2257,2829,3317,3676,3859, 3830,3552,3016,2275,1409,506,-361,-1134,-1795,-2373, -2902,-3359,-3672,-3767,-3615,-3251,-2729,-2104,-1405,-644, 149,927,1639,2276,2838,3320,3676,3852,3800,3493, 2933,2179,1320,445,-375,-1110,-1769,-2372,-2913,-3356, -3635,-3705,-3553,-3191,-2669,-2038,-1338,-582,194,955, 1662,2298,2863,3337,3682,3848,3782,3449,2864,2098, 1243,384,-421,-1148,-1806,-2414,-2967,-3410,-3669,-3710, -3542,-3177,-2650,-2013,-1311,-569,194,950,1658,2298, 2866,3349,3699,3866,3785,3430,2826,2051,1204,362, -431,-1159,-1828,-2452,-3011,-3442,-3688,-3716,-3537,-3165, -2632,-1989,-1298,-572,186,953,1678,2328,2890,3369, 3724,3890,3792,3412,2787,2013,1180,362,-421,-1153, -1842,-2481,-3042,-3459,-3684,-3698,-3511,-3131,-2592,-1949, -1257,-533,218,977,1699,2350,2919,3407,3765,3919, 3794,3377,2730,1960,1151,354,-421,-1165,-1879,-2535, -3103,-3512,-3718,-3707,-3498,-3114,-2584,-1954,-1259,-517, 244,995,1705,2358,2950,3456,3814,3947,3797,3369, 2722,1956,1161,380,-384,-1133,-1870,-2554,-3127,-3525, -3718,-3693,-3473,-3083,-2554,-1927,-1234,-496,260,1005, 1706,2366,2976,3491,3839,3938,3752,3303,2660,1918, 1147,381,-379,-1142,-1890,-2576,-3135,-3511,-3690,-3660, -3439,-3045,-2515,-1887,-1194,-461,284,1015,1720,2396, 3027,3556,3892,3963,3741,3268,2620,1888,1127,361, -417,-1202,-1966,-2648,-3196,-3561,-3720,-3674,-3438,-3041, -2522,-1905,-1219,-490,249,976,1687,2390,3048,3593, 3919,3967,3723,3242,2601,1882,1134,366,-428,-1229, -1999,-2682,-3226,-3578,-3721,-3654,-3408,-3009,-2489,-1871, -1186,-465,260,981,1702,2428,3105,3642,3944,3956, 3685,3198,2566,1873,1145,378,-430,-1242,-2015,-2690, -3223,-3566,-3706,-3639,-3390,-2985,-2464,-1846,-1167,-448, 278,1014,1761,2501,3177,3695,3964,3945,3650,3157, 2545,1869,1140,362,-454,-1352,-2115,-2777,-3283,-3592, -3691,-3592,-3317,-2893,-2357,-1745,-1081,-384,337,1074, 1827,2570,3238,3729,3951,3869,3529,3025,2426,1762, 1032,244,-569,-1370,-2114,-2758,-3245,-3539,-3629,-3526, -3251,-2825,-2290,-1684,-1040,-369,329,1061,1822,2580, 3242,3701,3879,3773,3429,2926,2336,1683,973,194, -627,-1442,-2186,-2814,-3284,-3572,-3666,-3571,-3300,-2876, -2339,-1743,-1113,-442,281,1046,1844,2625,3294,3742, 3902,3786,3447,2960,2385,1750,1042,248,-598,-1421, -2161,-2787,-3266,-3563,-3663,-3572,-3303,-2880,-2355,-1783, -1171,-494,254,1059,1890,2689,3359,3799,3955,3842, 3517,3056,2499,1863,1139,148,486,631,523,-136, -26,1111,1727,912,-627,-2510,-4639,-5161,-4615,-4909, -5675,-4381,-1193,-1353,-4278,-3428,87,5131,6303,3601, 5821,10481,13566,12744,8024,2239,-3042,-6888,-8777,-10604, -10942,-9081,-3443,-377,-360,947,2583,5553,6858,5835, 6441,8864,11296,11539,5377,-1999,-8274,-12908,-15888,-15772, -15022,-11952,-4839,228,2599,3185,4852,8429,9369,6150, 3582,2791,5729,7767,6231,1181,-4874,-10931,-13671,-11620, -9906,-7226,-840,8052,14382,15343,13684,13151,11492,7526, -303,-6591,-7008,-3523,-1881,-3075,-5506,-9625,-11687,-12504, -13786,-12946,-7312,1183,8902,11889,11888,10915,12015,12637, 9019,2883,465,3848,7568,8127,2573,-6501,-14254,-18950, -21541,-21084,-17844,-10906,-2715,4219,7361,7797,10373,15153, 16730,11891,7089,5506,7252,9291,8269,3694,-2890,-10018, -15249,-19518,-22309,-21056,-14400,-3734,4723,7470,7032,9183, 11501,10354,7043,5071,5481,8319,10860,10668,5906,-1672, -8682,-14657,-19208,-21010,-17472,-9816,130,5464,6458,9385, 13418,13617,9747,5147,4098,6045,8731,10073,7342,1034, -6272,-12321,-18186,-21865,-21701,-15284,-4158,3119,3873,4820, 7807,11210,11463,8012,4242,1989,3014,5687,8143,7356, 3268,-2948,-8959,-14224,-19626,-20357,-13020,-4519,-617,851, 4192,9471,12236,11554,8064,5032,4191,5532,7894,8764, 6345,820,-4901,-9046,-15354,-20735,-18907,-11584,-4648,-1988, 257,4113,8849,11048,9389,5783,2931,2793,5563,9785, 12812,10373,5011,318,-6254,-14295,-18909,-16083,-9921,-5281, -2765,152,4534,8146,8472,5419,841,-1508,-992,3583, 10327,11748,9031,5922,1767,-6341,-14462,-16314,-11526,-4830, -643,1936,5110,7978,9645,8073,3765,-319,-3627,-2232, 3888,8903,9620,9100,7649,1871,-7357,-14763,-16395,-13236, -10317,-8552,-6646,-3721,452,2458,2863,1492,-1591,-2346, 2014,8168,11145,11960,11840,8892,1639,-8051,-14176,-14609, -12074,-8780,-6677,-2824,2631,5988,7730,7263,3442,-655, 305,5499,10118,13150,15153,15850,12348,3305,-5959,-12029, -13235,-12458,-13000,-12244,-9061,-5526,-2247,1037,1206,-1807, -2678,167,4493,8243,10707,13077,12373,7115,-1279,-9771, -13269,-12482,-11415,-9976,-6466,-2296,2085,7046,9064,6458, 2812,1180,2692,4449,5744,8179,9773,9016,3768,-4575, -10933,-13637,-14979,-14798,-11477,-7476,-3111,3192,8391,9308, 6076,2781,2666,3897,5362,7402,10082,12640,11459,5205, -2073,-6958,-10476,-12535,-11714,-9926,-7262,-2302,4021,8415, 7639,4301,2222,1996,3085,4279,5927,9135,11055,6886, -853,-7315,-12527,-15534,-15128,-13288,-10801,-7257,-1191,5565, 8162,7001,4682,3243,3611,4243,4717,7446,11927,12326, 7655,942,-6957,-13456,-16796,-17147,-16169,-14407,-9262,-1446, 5173,8164,8045,6585,6239,6323,5221,5853,9606,12329, 11590,7123,-493,-8725,-15137,-17933,-18784,-19170,-16947,-10746, -2535,4644,7842,7570,7789,9046,8371,8171,10881,14507, 16574,15015,9694,1524,-6916,-12603,-15488,-17569,-17969,-14847, -8520,-577,4883,5609,5793,7014,6584,5602,6358,9308, 12915,15406,14855,9899,2040,-4999,-9870,-14199,-17925,-19337, -17101,-10243,-3150,-645,386,1929,3041,3005,3306,5478, 9530,13996,16941,15682,9373,1830,-4220,-9149,-13701,-18095, -20426,-16625,-9454,-4366,-2185,-810,333,684,825,2050, 4859,9523,15061,18526,17172,12293,6461,713,-3816,-9905, -16380,-17884,-13570,-8137,-4773,-2620,-783,311,981,2334, 4335,7654,13085,18519,20331,18174,12207,5164,-113,-5905, -13664,-19041,-18816,-14602,-9934,-6242,-3189,-1384,-792,-494, 42,868,4520,10091,14825,17094,14754,9086,4195,-421, -7506,-14967,-19035,-18300,-14561,-9897,-5407,-2011,-785,-91, 144,244,2479,6863,12658,18259,19647,15494,10088,5294, -801,-8736,-15135,-17719,-16141,-12180,-6666,-1539,1652,3431, 3581,3127,3527,5161,8607,14553,18868,18206,14237,10018, 4815,-2506,-11136,-17668,-20745,-20535,-16871,-11776,-7430,-4394, -2701,-2056,-989,90,2668,8381,15240,18389,17587,14614, 10458,4507,-3609,-11167,-16942,-19516,-18122,-14049,-9062,-3632, -305,1002,1660,1456,1002,3497,9215,14651,17042,16479, 14828,11301,5182,-2539,-9891,-15169,-16567,-15401,-11738,-6150, -1597,358,1812,2124,478,138,3077,8677,12832,14343, 14485,13038,8635,2427,-5268,-12380,-16625,-18139,-16709,-11850, -6161,-2223,913,2183,1228,-525,150,4413,9952,13717, 16174,16913,15393,11265,4172,-3733,-10234,-15260,-17973,-16058, -11902,-7328,-3170,200,1430,328,-703,1597,6377,10935, 14385,16245,16661,15023,9582,1727,-5263,-12289,-17786,-19510, -17393,-13383,-8778,-4423,-1055,-590,-1716,-1141,1452,5227, 8817,11758,14079,15726,13378,7627,842,-6630,-14017,-18661, -19422,-17231,-13281,-8012,-2139,907,586,-85,1285,4316, 8391,11248,14279,17511,18080,14784,9118,2224,-5521,-12852, -17323,-17761,-15890,-11498,-5536,-668,415,-555,-1676,-416, 3230,6692,9921,13951,17173,17430,14647,8675,1027,-7395, -13981,-17609,-18520,-16640,-11106,-4993,-696,483,-618,-465, 2210,5146,7359,10886,15054,18329,18367,15473,9396,1453, -6508,-12308,-16407,-17928,-15570,-10468,-4484,-1223,-1884,-3111, -1582,692,3200,6270,10616,14884,17841,18348,15750,8678, 180,-6992,-12985,-17073,-18307,-15307,-9283,-3182,-1339,-2132, -2620,-1596,-279,1483,4076,8036,12011,15252,16682,13735, 7643,571,-5899,-11507,-15479,-16996,-13534,-7192,-2534,-1759, -2563,-2886,-2300,-1728,-437,2394,5855,10425,14424,15387, 11948,5796,-1534,-7608,-13158,-17482,-18048,-13719,-7891,-4319, -3396,-3410,-3131,-3087,-1813,597,4066,8325,13545,17264, 18011,14723,8521,1946,-4564,-11584,-16084,-15440,-11001,-5907, -3299,-1915,-1514,-1426,-1139,361,2373,5593,10008,14789, 18365,18306,14100,7870,1440,-6005,-12958,-17046,-15836,-11756, -7738,-4770,-2429,-1331,-434,840,2538,4981,8323,12781, 17899,21507,20541,16645,10444,3045,-5973,-14086,-17901,-17051, -14201,-10618,-7504,-5780,-4353,-2962,-1447,285,3051,6448, 11673,16700,19254,17839,13814,7832,-486,-10150,-17280,-20190, -19898,-16882,-13070,-9975,-8045,-6320,-5025,-3001,-1382,1102, 5733,12192,17520,19380,18078,14760,8797,-375,-9327,-15889, -18777,-18310,-15224,-12125,-9291,-7236,-5117,-2610,-423,1296, 4037,9221,15674,20532,21993,21381,17964,10638,912,-7895, -15010,-17976,-17709,-15339,-12272,-9727,-7329,-4524,-1357,566, 2195,5312,11071,16755,20534,22130,21424,16656,8571,-1496, -11144,-17770,-20825,-20656,-18047,-14429,-11370,-8206,-4857,-1887, -780,1018,5253,11237,15930,19583,21480,20158,15687,7514, -2127,-10607,-16231,-18818,-17835,-15150,-11982,-9195,-5906,-2687, -909,-334,2221,6491,10888,15865,20007,22265,21084,16050, 7534,-1713,-10077,-16118,-19159,-18614,-16289,-13294,-9924,-5846, -2849,-2033,-265,2727,6977,11890,17215,21338,23511,21672, 16048,7683,-1548,-10046,-16148,-18597,-18015,-16250,-13924,-9732, -6360,-4850,-4140,-2488,0,3902,8666,14329,19233,21748, 20139,14831,7045,-2134,-10515,-16671,-18553,-18899,-17932,-15087, -11390,-8998,-7480,-5985,-3478,-28,4263,9362,15446,21261, 24030,22656,17105,9314,-434,-8986,-14024,-16302,-17527,-16397, -13532,-10441,-8342,-7090,-5837,-3675,-249,3529,8888,15071, 20833,22936,21217,16388,8182,-1544,-8786,-13532,-16336,-16998, -15359,-12027,-8766,-6382,-5169,-3366,-1111,1957,5497,10860, 17267,21843,23235,21760,16235,7262,-1957,-9476,-14996,-18472, -18797,-16876,-12979,-9514,-7019,-5480,-3418,-604,2118,6081, 11940,17582,21488,23495,21266,14599,5392,-3261,-10702,-16196, -19652,-19716,-16961,-12789,-9080,-6734,-4597,-2022,105,2727, 7479,12878,18617,23168,25144,21958,15005,5918,-3224,-10850, -16838,-20209,-20518,-17519,-13343,-10377,-8431,-6370,-5126,-3309, -237,4299,9220,15059,20026,21647,18680,11917,3852,-4013, -10808,-16116,-19059,-18706,-15283,-12129,-9115,-6662,-4994,-4094, -2023,1221,5279,10744,16697,21615,22777,19744,13828,6737, -532,-7307,-13692,-16460,-15683,-13024,-9979,-7020,-5307,-5043, -4356,-2912,-460,3308,9089,15743,20834,22058,19642,13922, 7641,552,-7182,-13337,-15976,-15832,-14165,-10981,-8393,-7033, -6501,-5486,-3597,-721,3499,9923,16543,21670,22755,19817, 14899,8663,596,-7743,-13433,-16504,-16614,-14065,-10579,-8473, -7707,-7466,-6073,-4396,-1506,3270,9743,16814,21255,21623, 18855,14664,7868,-470,-8001,-13710,-17001,-16891,-14417,-11121, -9451,-8769,-7967,-6982,-5330,-2759,1959,8872,15861,19129, 19336,17260,12473,5414,-2192,-9608,-14939,-17319,-16131,-12711, -9994,-8230,-7384,-6360,-5361,-4057,-1651,4004,11532,17435, 20456,21257,18895,14005,7449,-343,-7987,-14132,-16436,-15456, -12719,-10262,-8565,-7765,-6630,-5862,-5137,-1873,4883,12179, 18109,21965,22883,20721,15476,8845,362,-8047,-14120,-16285, -15241,-12437,-10137,-9038,-7834,-6757,-6958,-5890,-1477,4958, 11888,17626,21748,22374,19835,14886,8019,-732,-8778,-13858, -15277,-13583,-10972,-9414,-7930,-6389,-6666,-6906,-5405,-1045, 4561,10659,15964,18897,18926,16488,11647,4564,-3649,-11266, -16158,-16607,-14012,-11556,-8920,-6587,-5271,-5708,-5617,-3319, 859,6204,12165,17060,19703,19862,17274,11901,4388,-4573, -13267,-17600,-18153,-16596,-14120,-10939,-8278,-7402,-7280,-6044, -3003,1556,7463,13599,18635,21721,22057,19068,14271,6761, -2670,-10613,-14692,-15789,-15140,-12802,-9740,-7970,-8034,-8304, -7628,-4932,-170,6148,12453,18664,22270,22529,20322,14982, 6452,-3537,-11170,-15120,-16509,-15582,-12778,-10085,-8887,-9155, -9499,-9034,-5791,-946,5215,12349,18208,21485,22304,20455, 14456,5245,-3991,-10717,-15007,-16325,-14727,-11498,-9182,-8131, -8829,-9772,-8571,-5442,-651,5661,12342,17269,20217,21232, 19098,12885,4781,-3172,-9632,-14095,-15242,-13828,-10816,-7710, -6812,-7361,-7708,-6705,-3931,1209,7792,13776,18252,21886, 22877,20023,13154,4807,-3592,-10830,-14769,-15586,-13319,-10018, -8024,-7999,-8698,-9158,-8493,-5311,678,6993,12804,18139, 22477,23307,19935,13817,5486,-2991,-10021,-14277,-14935,-12435, -9738,-8697,-9094,-9733,-10595,-9848,-6118,-738,4763,10585, 16918,20854,21318,18316,12015,4150,-3678,-10567,-14419,-14620, -12477,-10780,-9850,-9845,-11149,-12358,-11065,-6645,-1655,4204, 11100,17433,21402,21978,18548,12418,4835,-3281,-10318,-13628, -13350,-11788,-10014,-8910,-9124,-10934,-11456,-9246,-5644,-1092, 4845,11493,17909,22057,22261,18533,12507,4930,-3380,-9424, -12100,-11983,-10530,-8331,-7372,-8774,-10410,-10204,-8472,-5082, -392,5618,12800,19404,23399,23172,19812,13650,5476,-2722, -8439,-11300,-11813,-10146,-8475,-9068,-10843,-12153,-11902,-9807, -6253,-1455,4622,12143,18489,22014,22122,18863,12067,3415, -4015,-9310,-12188,-11539,-9094,-7818,-8323,-9865,-10957,-10824, -8939,-6060,-1801,4577,11786,17583,20870,21111,17142,9663, 1994,-4798,-10188,-12035,-10658,-8234,-7299,-8011,-9830,-10967, -10614,-9303,-6887,-2435,4077,10683,16030,19743,19663,15157, 8954,1817,-5268,-10195,-11207,-9508,-7241,-6196,-7107,-8614, -8987,-8301,-7288,-4973,-271,5416,11307,17426,20802,19920, 15724,9503,1790,-5326,-9518,-10311,-8594,-6516,-5998,-7144, -8092,-8217,-8375,-7956,-5061,-831,4428,10957,16775,19733, 19247,15577,8923,1110,-5421,-9272,-9707,-7782,-6322,-7015, -8383,-8760,-9559,-9915,-8632,-6067,-2268,3611,10690,16181, 19003,18645,14737,8125,897,-5365,-8985,-8881,-6801,-6245, -6695,-6777,-7372,-8001,-7461,-6130,-4193,-341,5395,11138, 15660,18102,16939,12134,5003,-2485,-8911,-11451,-10285,-8890, -8284,-7787,-7791,-8286,-7977,-7187,-6314,-4086,442,6228, 12375,17488,19939,18371,13725,6866,-1197,-7077,-8960,-8968, -8551,-7597,-7048,-7434,-7581,-7142,-6816,-5936,-3577,816, 6348,12480,17316,18933,17560,12711,4695,-3307,-8151,-10348, -10899,-9899,-8605,-8227,-8050,-7708,-7355,-6992,-5650,-2718, 1741,7936,14026,17940,19733,18483,12578,4141,-2976,-7463, -9728,-9401,-7946,-6863,-6445,-6091,-5764,-5744,-5039,-3748, -1546,2876,8705,13665,17536,19529,17189,10474,2812,-3827, -8498,-10548,-10581,-9804,-9097,-8237,-7476,-7168,-6583,-5751, -4923,-2236,2535,7709,12812,17698,19236,15764,9030,1337, -5165,-9386,-10633,-10224,-9339,-8137,-7182,-7047,-6740,-6431, -6496,-5573,-2281,2172,7152,13073,17635,18646,15616,9813, 2816,-3336,-7007,-8520,-9041,-8173,-7225,-7182,-7097,-6649, -7156,-7345,-5430,-2385,1877,7603,13944,18446,19228,16236, 10255,3182,-2411,-6112,-8417,-9115,-8849,-8960,-8620,-7667, -7801,-8381,-7784,-6060,-3235,1633,8126,14653,18838,19486, 15786,9370,3011,-2389,-6716,-8854,-8977,-8983,-8312,-6878, -6246,-6695,-6922,-6165,-4779,-2302,2434,8379,14132,17900, 17577,13181,7374,1579,-4051,-7593,-8898,-9667,-9474,-7819, -6321,-6065,-6513,-6427,-6079,-5032,-2055,2710,8671,14769, 18256,17200,13568,8353,1962,-3206,-6207,-8394,-9724,-9177, -7454,-6378,-6027,-5730,-5801,-5832,-4660,-1795,2888,9538, 15441,17779,17065,13707,7610,1397,-2991,-6139,-8723,-9670, -8622,-7439,-6780,-6490,-6649,-7151,-6742,-5363,-2673,3162, 10172,15277,18050,17878,14144,8390,3061,-1388,-5672,-8599, -9203,-8613,-7866,-6974,-6960,-7744,-7903,-7703,-7027,-3410, 2872,9110,14203,17098,16452,12342,7246,2382,-2410,-6622, -8905,-9407,-8762,-7219,-6483,-6802,-6496,-6588,-7221,-5894, -1680,4271,10444,15786,17970,16017,11891,7441,2431,-2654, -6503,-8898,-9694,-8394,-7148,-7146,-6791,-6767,-7776,-8198, -6091,-2143,3379,9925,15142,16800,15178,12068,7605,2437, -1920,-5900,-8745,-8745,-7683,-7156,-6680,-6188,-6948,-8004, -7603,-5333,-1578,4447,11306,15812,17008,15854,12283,7139, 2245,-2971,-7570,-9538,-9453,-9077,-8196,-6893,-6592,-7479, -7940,-7060,-4923,-799,5836,12222,16322,18083,16489,12831, 8596,3378,-2498,-6553,-8497,-9517,-9365,-7831,-6591,-6961, -7639,-7581,-6984,-4924,106,6447,12349,16623,17611,15690, 12741,8372,2221,-3304,-6712,-8951,-10069,-9175,-7484,-7064, -7566,-7688,-8174,-7806,-5133,-595,5630,12248,16048,16497, 15382,12611,7407,1308,-3484,-7241,-10183,-10928,-9434,-8408, -8021,-7734,-8513,-9277,-8419,-5840,-1092,6036,12458,15743, 16930,16383,13109,7692,2307,-2015,-6236,-8754,-8779,-8253, -7603,-6988,-7578,-8866,-9189,-8527,-5876,-100,7061,12317, 15602,17343,16680,12980,8238,3489,-2028,-6476,-8414,-9038, -8664,-7576,-7446,-8443,-9398,-10150,-10041,-6745,-842,5528, 10683,15065,17581,16416,13169,9003,3516,-1871,-5618,-7970, -8509,-7646,-7228,-7809,-8270,-9234,-10344,-9522,-5386,547, 6114,11667,16086,17160,15777,12753,7516,1544,-3660,-7794, -9983,-9531,-8485,-7642,-6914,-6940,-8324,-9621,-7872,-3691, 907,6429,12288,15663,16550,15413,11960,7050,1958,-3268, -7087,-8094,-7545,-6785,-6015,-5327,-6248,-8497,-8968,-7064, -4029,837,6958,12100,15380,16942,15674,12346,7952,2313, -3220,-6867,-8120,-8406,-7936,-6485,-6162,-8119,-9675,-9507, -8300,-5168,295,6271,11523,15027,15708,14300,11427,6945, 1165,-4010,-6948,-8449,-8820,-7052,-5461,-6263,-7907,-8714, -9039,-7965,-4420,448,6398,11873,15108,15830,14679,11686, 6465,505,-3835,-6870,-8890,-8304,-6340,-5799,-6671,-7903, -9551,-9969,-8348,-4867,363,6493,11513,14264,15214,14612, 11115,5615,713,-3414,-6990,-8196,-6806,-5740,-5388,-6063, -7706,-9110,-9293,-7997,-4627,651,6486,10962,13987,15988, 15142,11315,6582,1824,-3295,-6452,-6969,-6194,-5009,-4581, -5796,-7523,-8880,-9332,-8312,-4713,1002,6197,10367,13981, 15576,13696,10528,6522,1273,-3337,-5894,-6587,-5749,-4716, -4884,-6166,-7767,-9137,-10134,-8842,-4596,555,5209,10409, 14388,15141,13681,10679,5762,330,-4135,-6657,-6882,-5719, -4779,-5209,-6027,-7218,-8830,-9452,-7131,-3261,653,5816, 11139,14110,14886,13662,10272,5438,33,-4329,-6656,-6606, -5651,-5340,-5548,-5967,-7774,-9807,-9301,-6854,-3773,789, 6402,11179,14338,15268,14035,10622,5692,95,-4202,-5935, -5823,-5702,-5689,-5243,-6310,-8797,-9841,-9074,-7376,-3918, 1064,6622,11555,14906,15935,14739,11527,6369,485,-3629, -5139,-5927,-6174,-5284,-5419,-7662,-9651,-10549,-10208,-8418, -4693,324,5820,10951,14202,15338,14425,11279,5693,354, -2624,-4585,-5911,-5345,-4790,-5865,-7723,-9186,-9987,-9806, -8039,-4561,320,5794,10589,13423,14813,14269,10392,4753, 489,-2994,-5548,-6006,-5246,-5192,-6237,-7708,-9187,-10033, -9884,-8148,-4742,407,6117,10648,14079,16145,14443,9837, 4984,466,-3389,-5387,-5492,-5085,-5056,-5835,-7296,-8897, -9690,-9407,-7697,-3779,1791,6600,11031,15008,16092,13988, 10109,5444,526,-3048,-4545,-4501,-4162,-4420,-5556,-7159, -8433,-9129,-9500,-7684,-3403,999,5640,10966,14581,14958, 12996,9253,4381,-404,-3498,-4662,-4608,-4422,-4826,-6166, -7140,-7824,-9135,-8890,-6325,-2830,1117,6431,11507,14262, 14627,12932,9186,4153,-472,-3249,-4285,-4083,-4054,-5281, -6035,-6773,-8602,-10038,-9177,-6980,-3859,802,6444,11162, 13827,14326,12566,8514,3451,-968,-3908,-4517,-4434,-5199, -5930,-6193,-7585,-9478,-10105,-9450,-7916,-4706,345,5965, 10664,13570,14381,12488,8754,3784,-721,-2713,-2897,-3666, -4533,-4845,-5784,-7676,-9158,-9698,-9535,-8084,-4663,575, 5902,10792,13920,14567,13072,9187,3822,63,-1302,-2350, -3248,-3348,-3841,-5436,-7166,-8436,-9045,-9082,-7308,-3621, 1313,6667,11165,13841,14803,13039,8301,3385,268,-1780, -3438,-3928,-4089,-4826,-6234,-7431,-8555,-9551,-9313,-7477, -3922,1306,6557,10693,13860,14624,11776,7100,3337,457, -1700,-2979,-3285,-3671,-4732,-5843,-7151,-8709,-9651,-9618, -8021,-3931,1275,6102,10740,14419,14488,11553,7616,3817, 418,-2097,-3033,-3411,-4190,-5063,-6075,-7406,-8546,-9573, -9714,-7609,-3474,976,6051,11339,14326,13739,10842,7202, 3247,-281,-2340,-3177,-3771,-4105,-4860,-5941,-7142,-8717, -10330,-9878,-7158,-3624,979,6639,11912,14266,13514,10952, 7144,2982,-60,-2013,-3048,-3515,-4165,-5247,-5886,-7076, -9349,-10460,-9641,-7452,-4040,1169,7318,12048,13977,13614, 11163,7487,3870,862,-1341,-2455,-3360,-4581,-4936,-5635, -7693,-9814,-10411,-9521,-7507,-3666,2172,7861,12089,14260, 13805,11122,7593,3899,588,-1127,-2337,-3647,-4105,-4114, -5450,-7762,-9596,-10134,-9915,-7995,-3677,2022,7677,12183, 14279,13536,11321,7734,3776,1080,-746,-2531,-3641,-3921, -4575,-6553,-8632,-10009,-10937,-10829,-8451,-3919,1758,7745, 12032,13869,13705,11311,7478,4268,1817,-409,-2221,-2843, -2918,-4147,-6145,-7983,-9743,-11187,-10926,-8743,-4417,1555, 6932,10747,13018,12704,10110,6864,4163,1594,-983,-2389, -2614,-3099,-4505,-6073,-8143,-10251,-11356,-11259,-9026,-4137, 1426,6353,10375,12378,11643,9176,6661,4070,1328,-643, -1184,-1437,-2066,-3020,-4810,-6953,-8860,-10593,-10685,-8024, -3511,1627,6722,10883,12395,11454,9510,7198,4016,1055, -369,-994,-1446,-1942,-3326,-5061,-6860,-9299,-11019,-10491, -7477,-3188,1917,7127,10870,11893,11202,9847,7186,3838, 1423,-145,-863,-1069,-1932,-3123,-4626,-7081,-10068,-11542, -10736,-8049,-3902,1476,6720,9762,10823,10908,9352,6574, 3736,1219,-19,-468,-1053,-1753,-2446,-4132,-7177,-10171, -11530,-10848,-8339,-3750,2021,6445,9195,10848,10697,9240, 6681,3802,1818,1043,397,-407,-1066,-2135,-4509,-7882, -10645,-11821,-11532,-8813,-3675,1407,5775,8880,10343,10423, 9115,6421,3746,2237,1138,82,-477,-644,-1695,-4406, -7364,-9660,-11489,-10931,-7641,-3065,1610,5587,8311,9799, 9881,7995,5248,3150,1737,443,-464,-451,-303,-1798, -4054,-6682,-9616,-11214,-10292,-7123,-2634,2058,5841,8764, 10525,10144,7962,5264,3149,1414,-378,-729,-369,-809, -1913,-3791,-6738,-9698,-10984,-10012,-6604,-2010,2225,6014, 9217,10691,10002,7829,5882,3948,1640,462,315,-23, -675,-1857,-4321,-7478,-10393,-11854,-10561,-7062,-3070,1058, 5097,8634,9965,8990,7628,5867,3458,1613,796,292, 33,-388,-1798,-4292,-7544,-10698,-11620,-9932,-6602,-2749, 1310,5856,8942,9557,9109,7872,5711,3615,2200,1236, 885,799,158,-1173,-3948,-7735,-10853,-11608,-9744,-6961, -3468,1279,5673,8201,9406,9359,7950,6048,4121,2410, 1532,1102,701,166,-1431,-4446,-8376,-11190,-11283,-9861, -7605,-3657,1093,4947,7682,9187,8989,7868,5976,3973, 2724,1879,1460,1156,587,-1207,-5006,-9034,-10998,-11202, -10307,-7526,-3144,1314,5300,8156,9396,9331,7892,5826, 3902,2468,1593,1079,998,702,-1729,-5667,-8711,-10432, -11120,-9935,-6975,-2985,1609,5404,8108,9534,9349,7900, 5866,4079,2774,1530,1169,1657,772,-2319,-5825,-8802, -11009,-11403,-10143,-7238,-3070,1243,5064,7981,9440,9226, 7600,5897,4448,2749,1679,2187,2409,655,-2142,-5550, -8643,-10697,-11314,-10080,-7197,-3401,675,4330,7387,8980, 8490,7255,6073,4219,2264,2009,2455,2015,356,-2409, -5642,-8517,-10576,-10970,-9732,-6877,-3071,865,4854,7913, 8810,8192,7391,5539,3101,1922,2103,2660,2378,641, -1991,-5230,-8397,-10556,-11065,-9563,-6647,-3115,1010,5218, 7559,8267,8464,7498,5412,3457,2555,2851,3135,2386, 543,-2252,-5540,-8739,-10861,-11025,-9305,-6833,-3172,1618, 5365,7503,8795,8882,7582,5354,3496,3002,3307,3421, 2485,517,-2210,-5596,-9013,-10812,-10596,-9474,-6980,-2669, 1639,4978,7470,8853,8732,7055,4917,3417,3224,3597, 3517,2368,509,-2229,-6133,-9201,-10670,-11383,-10627,-7632, -3511,468,3771,6461,8084,7994,6360,4417,3293,3403, 3760,3390,2650,1148,-2067,-5740,-8316,-10315,-11153,-9994, -6858,-2942,824,4230,7040,8488,7991,6203,4253,3495, 3559,3453,3428,2968,716,-2522,-5774,-8683,-10909,-11542, -10072,-6862,-3100,562,4089,7033,8517,7825,5836,4586, 4415,4289,4652,4909,3716,1075,-2086,-5427,-8641,-10924, -11389,-9679,-6577,-2920,868,4648,7966,9234,7955,6374, 5228,4308,4079,4448,4076,2470,66,-2739,-5938,-9199, -11447,-11686,-9962,-6928,-3288,523,4883,7960,8345,7350, 6056,4636,3806,4116,4496,3876,2218,-18,-2696,-5971, -9217,-11264,-11375,-9342,-6475,-3208,1207,5607,7991,8430, 7682,6069,4588,4043,4318,4347,3515,1981,-106,-3005, -6276,-9592,-11623,-11170,-9346,-6920,-3071,1824,5781,7997, 8582,7749,6118,4803,4457,4678,4416,3663,2200,-50, -2850,-6618,-10136,-11488,-11030,-9742,-6967,-2677,1925,5671, 7981,8493,7527,5959,5063,4984,4977,4779,3809,2326, 394,-2787,-7059,-10109,-11472,-11736,-10474,-7336,-2985,1574, 5291,7629,8094,6974,5735,4944,4755,4747,4251,3450, 2781,838,-2752,-6534,-9318,-11092,-11426,-9923,-6729,-2418, 2028,5890,7823,7798,6629,5212,4438,4523,4252,3688, 3565,2826,277,-3192,-6589,-9426,-11345,-11734,-9997,-6656, -2156,2554,6193,8018,8146,6816,5644,5471,5288,4544, 4242,4109,2675,-156,-3585,-6851,-9895,-11831,-11922,-10205, -6811,-2099,2445,5913,7698,7348,6043,5560,5362,4638, 4226,4313,4083,2517,-48,-3113,-6544,-9692,-11446,-11564, -9758,-6052,-1632,2649,6033,7279,6748,6246,5840,5231, 4660,4700,4901,4228,2541,126,-3058,-6437,-9321,-11216, -11262,-9172,-5816,-1652,2926,5839,6654,6521,6255,5655, 4821,4437,4596,4475,3782,2384,-159,-3217,-6491,-9666, -11594,-11354,-9549,-6143,-1307,3065,5590,6544,6826,6541, 5669,4974,4869,4825,4717,4122,2559,70,-2883,-6694, -10057,-11694,-11773,-10033,-6088,-1151,2724,4938,6235,6856, 6405,5748,5339,5215,5347,5413,4494,2819,540,-2919, -6845,-9903,-11751,-12064,-10005,-5860,-1291,1993,4355,5881, 6298,5895,5450,5008,5050,5295,4844,4027,2746,197, -3420,-6896,-9921,-11965,-12108,-9401,-5089,-992,2239,4692, 5977,6333,6031,5226,5039,5280,5194,4999,4697,3270, 470,-3002,-6471,-9922,-12207,-11842,-8928,-5116,-1315,1904, 4080,5546,6012,5467,5005,5118,5095,5076,5211,4867, 3104,336,-2711,-6340,-10031,-11881,-11026,-8305,-4429,-608, 2354,4746,6193,6154,5676,5450,5264,4961,5176,5575, 4878,2921,436,-2660,-6774,-10229,-11722,-10960,-8111,-4397, -1081,2012,4436,5399,5297,5131,5088,4793,4863,5546, 5798,4822,3296,904,-2848,-7056,-10428,-11851,-10664,-7866, -4610,-1188,2167,4477,5355,5685,5672,5250,4810,5225, 5706,5450,4736,3383,732,-2967,-7258,-10892,-11968,-10642, -8059,-4895,-1202,1937,3827,4691,5143,4849,4238,4444, 5076,5272,5191,4645,3243,805,-3064,-7572,-10798,-11482, -10414,-8012,-4639,-1059,1518,3202,4504,4838,4341,4320, 4862,5290,5607,5425,4771,3491,872,-3483,-7804,-10504, -11259,-10376,-7761,-4033,-678,1788,4010,5181,5020,4687, 4593,4800,5143,5330,5128,4961,3953,1002,-3221,-7002, -9339,-10162,-9078,-6236,-3137,-522,2094,4022,4660,4480, 4123,3938,4325,4696,4735,4944,5124,4005,858,-3132, -6551,-9166,-10156,-8707,-6201,-3522,-621,2084,3716,4280, 3998,3647,3922,4303,4329,4433,5044,5249,3716,640, -2774,-6391,-9122,-9596,-8299,-6213,-3458,-570,1852,3461, 3782,3292,3089,3356,3498,3519,4158,5280,5106,3459, 674,-3144,-7069,-9393,-9707,-8642,-6334,-3492,-525,2024, 3378,3344,3045,3234,3500,3196,3461,4662,5517,5324, 4005,1029,-3130,-6709,-8932,-9358,-8121,-6046,-3500,-577, 1772,2728,2525,2714,3187,3083,3105,4001,5075,5678, 5730,4135,888,-2943,-6399,-8540,-8838,-7864,-5972,-3282, -123,2103,2649,2830,3244,3074,2725,3183,3953,4867, 5765,5590,3705,521,-3388,-6753,-8612,-8917,-8125,-6230, -3006,154,1883,2729,3553,3695,3383,3410,3706,4428, 5696,6475,5993,3932,497,-3563,-6944,-8699,-9201,-8525, -6083,-2614,-110,1459,2739,3330,3308,3283,3211,3541, 4478,5599,6268,5700,3519,-257,-4244,-7071,-8815,-9608, -8348,-5337,-2380,-5,1937,3027,3423,3472,3118,2921, 3357,4382,5432,6016,5428,2984,-835,-4263,-6978,-9327, -9955,-8275,-5777,-3089,-426,1487,2779,3392,3400,3027, 3079,3777,4794,5857,6638,5825,2885,-586,-3833,-7213, -9567,-9633,-8121,-5736,-3040,-588,1342,2794,3471,3328, 3004,3251,3797,4761,6313,6928,5357,2662,-376,-4180, -7720,-9663,-9630,-8050,-5500,-2738,-220,1915,3411,3877, 3580,3522,3613,3959,5445,7065,6911,5419,3015,-413, -4357,-7647,-9498,-9482,-7806,-5426,-2984,-483,1912,3259, 3553,3583,3355,2897,3838,5667,6659,6485,5265,2756, -788,-4602,-7859,-9504,-9213,-7497,-5386,-2983,-237,1798, 2667,3315,3293,2501,2533,3824,5251,6107,6171,5004, 2553,-973,-4792,-7983,-9375,-8845,-7448,-5529,-2625,13, 1708,3149,3767,3092,2404,2935,4159,5379,6135,6142, 4969,2566,-856,-4714,-7669,-8525,-8175,-7069,-4691,-2006, 111,2079,3527,3399,2433,1935,2469,3638,4993,5920, 5907,4719,2399,-1310,-5252,-7563,-8604,-8566,-7006,-4550, -2296,82,2385,3527,3306,2638,2406,3008,4131,5407, 6154,6235,5403,2541,-1547,-5017,-7446,-8880,-8553,-6956, -4987,-2691,-11,2162,2999,2668,2141,1951,2555,3837, 4807,5730,6333,5164,2098,-1287,-4447,-7145,-8323,-7874, -6712,-4933,-2381,487,2494,3083,2771,2035,1992,2966, 3912,4957,6335,6504,4738,1925,-1380,-4834,-7268,-8083, -7787,-6785,-4908,-2076,572,2461,3133,2452,1833,2198, 2722,3456,5133,6550,6340,4801,2130,-1524,-4951,-7110, -7807,-7823,-6820,-4618,-1886,867,2770,2877,2184,2035, 2009,2097,3305,5096,6045,5908,4431,1590,-2096,-5177, -6917,-7820,-7746,-6517,-4479,-1543,1380,2629,2462,2269, 2001,1559,2151,3672,5312,6334,6397,4967,1828,-1765, -4642,-6705,-7657,-7469,-6572,-4300,-924,1504,2299,2591, 2289,1615,1420,2267,3726,5095,6183,6176,4252,1248, -1948,-4925,-6828,-7650,-7989,-7060,-4235,-1318,600,1763, 2083,1665,1156,1397,2386,3768,5529,6800,6399,4529, 1606,-1991,-4920,-6616,-8023,-8438,-6695,-3858,-1151,942, 2266,2441,1821,1532,1856,2668,4300,6001,6677,6121, 4384,1104,-2218,-4591,-6793,-8460,-8309,-6372,-3723,-1112, 1099,2233,2055,1652,1504,1666,2777,4716,6176,6905, 6528,4156,874,-1930,-4530,-7041,-8563,-8214,-6523,-4089, -1149,1066,1902,1932,1710,1342,1756,3198,4723,6296, 7292,6342,3824,1022,-1789,-4797,-7384,-8515,-8138,-6530, -3812,-980,918,2008,2347,1803,1655,2372,3396,5098, 6932,7397,6064,3813,1280,-1856,-5126,-7556,-8762,-8552, -6599,-3774,-1381,625,1739,1521,1178,1400,1835,3057, 5251,6993,7143,6032,4280,1624,-1742,-4949,-7450,-8931, -8380,-6334,-3978,-1294,771,1310,1221,1158,1092,1462, 3179,5510,6741,6708,5838,3995,1066,-2067,-5083,-7708, -8659,-7843,-6143,-3483,-729,830,1360,1466,1173,822, 1545,3560,5564,6507,6711,5927,3886,1275,-1821,-5293, -7545,-8338,-7941,-6095,-3342,-916,499,1306,1377,858, 748,2134,4231,5901,7071,7339,6383,4812,2120,-1673, -5090,-7441,-8662,-8215,-6110,-3582,-1423,259,1197,932, 239,693,2316,4183,6136,7166,7038,6374,4711,1634, -1932,-5076,-7658,-8878,-8104,-6047,-3752,-1507,378,891, 197,-26,713,2285,4636,6482,7215,7529,7069,5040, 1929,-1425,-4844,-7584,-8578,-7751,-6130,-4082,-1555,2, -38,-467,-681,30,2084,4439,5955,7031,7665,7019, 5081,2262,-1205,-4899,-7498,-8084,-7552,-6213,-3673,-1331, -224,-143,-747,-1084,66,2279,4215,5833,7165,7653, 6940,5178,2404,-1443,-5148,-7135,-7970,-7701,-5927,-3538, -1583,-507,-672,-1524,-1369,91,1973,3869,5787,7196, 7638,7194,5834,2695,-1285,-4402,-6562,-7696,-7119,-5302, -3073,-971,-113,-758,-1362,-942,312,1966,3899,5879, 6959,7531,7508,5610,2214,-1316,-4443,-6781,-7611,-7063, -5349,-2709,-679,-370,-1014,-1334,-849,169,1884,3987, 5471,6657,7709,7349,5170,2051,-1511,-4830,-6865,-7681, -7284,-5156,-2460,-833,-764,-1213,-1349,-1154,88,2234, 4014,5446,7043,7823,7104,5127,1896,-1806,-4737,-6800, -7882,-7215,-4804,-2325,-1219,-1059,-1272,-1768,-1401,242, 2039,3576,5394,6971,7648,7291,5284,2042,-1270,-4139, -6397,-7499,-6519,-4163,-2362,-1407,-1198,-1903,-2402,-1552, -156,1297,3163,5109,6770,7778,7352,5203,2077,-1102, -4180,-6673,-7243,-5879,-3927,-2114,-967,-1165,-1906,-1805, -1093,-9,1594,3209,4932,6682,7636,6955,4791,2008, -1314,-4832,-6957,-6998,-5827,-3814,-1761,-1108,-1561,-1886, -1842,-1169,163,1691,3284,5252,7204,7904,6985,5132, 2300,-1527,-4834,-6356,-6509,-5295,-3014,-1539,-1241,-1519, -1894,-1837,-1110,71,1298,2882,5173,6961,7420,6968, 5396,2109,-1652,-4498,-6285,-6439,-4844,-2955,-1815,-1477, -1745,-2114,-2000,-1150,-196,954,2956,5247,6597,7183, 6940,4848,1562,-1804,-4803,-6441,-6100,-4487,-2771,-1661, -1385,-1829,-2108,-1745,-1213,-655,814,2994,4741,6194, 7195,6622,4469,1389,-2117,-4985,-6213,-5710,-4318,-2780, -1804,-1811,-2196,-2143,-1917,-1744,-740,1165,3004,4961, 6844,7582,6836,4695,1360,-2322,-4982,-5957,-5502,-4088, -2454,-1739,-1799,-1679,-1573,-1899,-1607,-364,1101,2875, 5022,6793,7565,7101,4968,1420,-2122,-4545,-5509,-5033, -3498,-2277,-2050,-1767,-1597,-2090,-2304,-1716,-670,851, 2931,5122,6898,7860,7269,4725,1106,-2272,-4757,-5682, -4729,-3285,-2602,-2025,-1521,-1731,-2148,-2135,-1595,-606, 1023,2983,5011,6955,7978,7146,4435,957,-2573,-5172, -5505,-4495,-3627,-2811,-2004,-1768,-2042,-2262,-2214,-1712, -552,1145,3069,5313,7478,8298,7123,4544,798,-3052, -5043,-5181,-4640,-3895,-2965,-2325,-2149,-2183,-2406,-2471, -1910,-775,662,2512,5087,7148,7745,6913,4187,146, -3211,-4692,-4926,-4469,-3564,-2738,-2184,-1881,-1986,-2300, -2292,-1640,-797,510,2832,5280,7123,8014,7015,3737, -219,-3041,-4470,-4752,-4152,-3297,-2511,-1811,-1399,-1638, -1984,-1805,-1589,-1086,554,2813,5084,7276,8265,6776, 3357,-218,-2908,-4275,-4382,-3776,-3050,-2135,-1241,-1207, -1566,-1578,-1677,-1740,-919,701,2635,5066,7503,8052, 6242,2952,-484,-2997,-4139,-4130,-3800,-3134,-2094,-1600, -1598,-1480,-1634,-2016,-1822,-876,446,2505,5330,7613, 7924,6057,2846,-527,-2811,-3781,-4208,-4013,-3159,-2470, -2129,-1804,-1754,-2224,-2381,-1920,-1165,243,2669,5600, 7603,7762,5839,2432,-734,-2791,-4107,-4505,-3873,-3092, -2577,-1879,-1402,-1692,-2005,-2029,-1884,-1362,168,2827, 5693,7726,7765,5426,2207,-584,-2784,-4139,-4231,-3766, -3389,-2650,-1854,-1662,-1877,-2004,-2061,-2089,-1374,492, 3205,6288,8304,7756,5341,2422,-471,-2811,-3724,-3833, -3779,-3318,-2425,-1736,-1597,-1599,-1631,-1947,-1895,-1094, 666,3590,6720,8159,7402,5402,2460,-595,-2544,-3422, -3843,-3831,-3206,-2379,-1934,-1656,-1582,-1924,-2240,-2205, -1536,590,3990,6863,8016,7540,5388,2205,-612,-2409, -3423,-3944,-3730,-3055,-2491,-1883,-1535,-1687,-2067,-2378, -2620,-1772,921,4082,6547,7824,7257,4905,1916,-539, -2305,-3529,-3901,-3729,-3387,-2768,-2126,-1976,-2006,-2176, -2946,-3204,-1744,950,4011,6681,8019,7198,4740,2012, -467,-2446,-3510,-3891,-3930,-3455,-2629,-2211,-1863,-1601, -2216,-3104,-2932,-1256,1362,4371,7084,8078,6982,4724, 2003,-622,-2450,-3414,-3992,-3903,-3216,-2724,-2173,-1468, -1520,-2440,-3134,-2664,-1107,1499,4772,7279,7904,6819, 4629,1753,-619,-2206,-3357,-3750,-3414,-3113,-2620,-1632, -959,-1432,-2422,-2939,-2673,-1123,1764,4944,7077,7697, 6711,4379,1909,-227,-2124,-3255,-3527,-3519,-3437,-2652, -1490,-1224,-1870,-2763,-3386,-3074,-1112,1890,4833,7004, 7627,6375,4311,2021,-438,-2368,-3247,-3649,-4029,-3695, -2546,-1562,-1423,-1936,-2868,-3592,-2928,-713,2139,5191, 7301,7504,6286,4351,1817,-750,-2281,-3150,-3959,-4326, -3647,-2494,-1641,-1344,-1974,-3212,-3641,-2758,-759,2263, 5319,7103,7335,6527,4491,1652,-585,-1897,-3044,-3966, -4043,-3336,-2354,-1312,-1210,-2259,-3305,-3637,-2833,-651, 2473,5089,6603,7128,6299,4016,1500,-304,-1751,-3098, -3781,-3795,-3225,-1948,-1010,-1249,-2250,-3236,-3672,-2720, -177,2757,5114,6848,7416,6197,3844,1625,-296,-2060, -3274,-4077,-4155,-3203,-1816,-1167,-1436,-2361,-3567,-3874, -2439,111,2728,5163,7074,7338,5873,3837,1620,-388, -1972,-3328,-4286,-4183,-3015,-1831,-1209,-1428,-2702,-4010, -3885,-2292,-36,2555,5339,6965,6943,5737,3773,1633, -132,-1716,-3305,-4157,-3773,-2759,-1606,-872,-1441,-3018, -4077,-3582,-2157,35,2902,5434,6801,6859,5624,3639, 1721,-40,-1977,-3492,-3971,-3600,-2518,-1141,-561,-1673, -3250,-3903,-3605,-2281,176,3061,5436,6831,6778,5322, 3541,1812,-204,-2146,-3489,-4043,-3736,-2334,-822,-791, -1965,-3147,-3889,-3740,-2257,189,2925,5380,6716,6425, 5240,3712,1842,-275,-2094,-3485,-4337,-3697,-1998,-896, -1109,-2133,-3356,-4156,-3746,-2134,257,3157,5525,6536, 6316,5345,3764,1679,-260,-2051,-3709,-4193,-3038,-1456, -597,-840,-2021,-3502,-4196,-3814,-2352,227,3136,5265, 6140,6191,5263,3521,1735,-40,-2153,-3732,-3743,-2627, -1395,-601,-967,-2295,-3529,-4226,-3986,-2363,438,3094, 4916,6081,6231,5100,3591,1962,-191,-2524,-3732,-3567, -2545,-1215,-602,-1143,-2366,-3579,-4401,-4094,-2105,562, 2884,4831,6046,5980,5063,3900,2028,-448,-2526,-3623, -3391,-2159,-852,-512,-1137,-2317,-3805,-4697,-3913,-1840, 568,3016,5134,6147,6072,5536,4198,2081,-337,-2415, -3429,-3046,-1793,-840,-545,-990,-2431,-4113,-4656,-3694, -1867,505,3101,4881,5689,5862,5267,3780,1632,-827, -2885,-3628,-3019,-2070,-1186,-615,-1174,-2782,-4148,-4365, -3629,-1814,789,3116,4729,5731,6040,5416,3945,1717, -994,-2935,-3375,-2922,-2041,-880,-325,-1281,-2889,-4034, -4443,-3614,-1505,945,2985,4580,5659,5991,5525,4074, 1432,-1202,-2721,-3126,-2892,-1798,-609,-559,-1558,-2961, -4207,-4593,-3505,-1402,831,2858,4528,5543,6082,5660, 3788,1057,-1181,-2553,-3189,-2667,-1360,-470,-551,-1495, -3043,-4407,-4576,-3344,-1473,733,2683,4159,5368,6120, 5513,3408,1029,-1001,-2541,-2960,-2197,-1092,-349,-367, -1393,-3118,-4259,-4288,-3204,-1290,818,2497,3940,5487, 6173,5165,3230,1020,-1158,-2544,-2735,-1989,-1007,-203, -386,-1751,-3409,-4504,-4503,-3216,-1157,668,2218,4173, 5908,6275,5295,3444,1009,-1240,-2388,-2522,-1898,-776, -94,-527,-1855,-3395,-4524,-4429,-2938,-1216,232,2113, 4271,5813,6177,5332,3296,759,-1205,-2316,-2483,-1690, -568,-121,-643,-1902,-3659,-4756,-4219,-2850,-1504,113, 2249,4340,5797,6330,5332,3160,765,-1188,-2365,-2367, -1466,-541,-226,-635,-2182,-4027,-4603,-3923,-2885,-1659, 177,2195,4172,5732,6082,4905,2818,530,-1423,-2344, -2076,-1337,-456,64,-602,-2397,-3949,-4239,-3819,-2931, -1586,116,2134,4346,5856,6040,4912,2867,408,-1426, -2078,-1948,-1209,-170,232,-828,-2534,-3698,-4130,-3881, -3004,-1800,-178,2046,4359,5732,5927,4830,2573,228, -1282,-1957,-1901,-889,249,198,-979,-2420,-3604,-4056, -3743,-2982,-1901,-105,2254,4328,5742,6004,4565,2195, 183,-1230,-2034,-1687,-411,353,36,-1088,-2530,-3708, -4023,-3743,-3185,-1958,-2,2192,4364,5941,6021,4460, 2380,464,-1235,-1903,-1237,-153,359,-8,-1180,-2663, -3567,-3865,-3834,-3198,-1915,-115,2065,4450,5919,5653, 4217,2234,22,-1663,-1995,-1253,-357,139,-335,-1563, -2683,-3384,-3798,-3713,-2962,-1838,-172,2284,4669,5760, 5608,4355,2196,-139,-1526,-1638,-887,128,419,-314, -1428,-2442,-3405,-3958,-3800,-3243,-2218,-112,2523,4616, 5661,5684,4237,1805,-327,-1564,-1588,-649,226,187, -465,-1371,-2459,-3439,-3714,-3711,-3453,-2266,-23,2393, 4390,5736,5694,4063,1723,-396,-1528,-1306,-370,153, 0,-453,-1399,-2558,-3272,-3640,-3936,-3595,-2076,58, 2355,4587,5845,5555,3918,1514,-650,-1533,-1024,-324, 22,116,-429,-1506,-2410,-3037,-3733,-4091,-3455,-2002, 21,2425,4586,5697,5371,3680,1117,-760,-1192,-854, -311,207,269,-437,-1306,-1961,-2883,-3713,-3836,-3241, -1938,116,2572,4646,5788,5493,3454,924,-566,-1001, -795,-132,400,149,-439,-991,-1843,-2928,-3666,-3858, -3416,-2015,94,2335,4492,5707,5007,2788,583,-710, -1209,-760,47,264,41,-290,-906,-1860,-2878,-3610, -3886,-3229,-1766,151,2544,4897,5815,4734,2651,606, -860,-1169,-658,-225,-237,-312,-527,-1189,-1989,-2901, -3672,-3736,-2968,-1676,318,3044,5276,5701,4587,2548, 339,-945,-1076,-708,-499,-336,-215,-460,-971,-1826, -2955,-3674,-3646,-3119,-2035,265,3042,4891,5304,4242, 2129,80,-803,-885,-711,-405,-176,-151,-262,-722, -1764,-2874,-3367,-3482,-3264,-1873,610,3176,4992,5375, 4089,1881,167,-631,-809,-593,-366,-262,-94,18, -614,-1736,-2508,-3100,-3595,-3247,-1604,816,3323,5165, 5305,3795,1806,261,-527,-672,-526,-462,-295,153, 29,-829,-1691,-2485,-3409,-3870,-3239,-1576,931,3692, 5353,5183,3687,1817,279,-462,-525,-708,-791,-315, 13,-334,-1032,-1746,-2758,-3737,-3974,-3352,-1662,1043, 3710,5111,4901,3518,1615,235,-227,-542,-812,-565, -94,-30,-350,-801,-1666,-2812,-3731,-4120,-3501,-1520, 1319,3801,5118,4907,3306,1515,466,-191,-791,-929, -613,-376,-271,-313,-807,-1733,-2842,-3843,-4343,-3541, -1298,1416,3858,5154,4645,3081,1732,767,-139,-621, -564,-492,-288,-53,-132,-698,-1603,-2770,-4072,-4421, -3353,-1244,1507,3977,4987,4271,3020,1841,610,-220, -524,-631,-528,-182,121,-70,-566,-1457,-2895,-4085, -4242,-3231,-1013,1913,4155,4695,4125,3050,1682,477, -219,-590,-772,-554,-190,-68,-60,-447,-1605,-3051, -4033,-4203,-3164,-622,2226,4007,4557,4172,3054,1679, 637,-48,-615,-761,-603,-397,-28,195,-347,-1595, -2918,-4090,-4376,-2937,-377,2118,3725,4263,3776,2552, 1366,346,-478,-816,-811,-683,-291,299,363,-362, -1474,-2989,-4329,-4313,-2665,-254,2036,3697,4203,3637, 2612,1452,355,-289,-534,-799,-749,-125,393,357, -174,-1402,-3205,-4497,-4165,-2496,-182,2158,3690,4046, 3589,2631,1324,377,-32,-512,-809,-464,55,447, 619,93,-1483,-3431,-4427,-4067,-2507,-146,2088,3416, 3839,3484,2296,1089,396,-219,-759,-839,-518,-64, 507,796,-50,-1872,-3617,-4488,-4042,-2295,36,2011, 3384,3968,3367,2195,1300,484,-260,-697,-730,-579, -25,786,918,-115,-1884,-3571,-4410,-3765,-1955,77, 2058,3514,3777,3090,2155,1247,290,-408,-782,-975, -712,253,1192,1156,39,-1792,-3626,-4284,-3514,-2004, 33,2083,3302,3439,2948,2184,1182,354,-227,-806, -1112,-627,462,1227,1183,-44,-2151,-3716,-4078,-3453, -1968,176,2118,3135,3418,3067,2131,1120,395,-323, -1093,-1181,-440,551,1425,1248,-328,-2290,-3562,-3958, -3400,-1760,282,1969,3076,3454,3004,2046,1252,509, -480,-1106,-1110,-494,718,1598,1109,-480,-2157,-3459, -3988,-3295,-1674,128,1718,2894,3203,2607,1909,1215, 287,-590,-1223,-1278,-334,1110,1749,1069,-387,-2085, -3465,-3827,-3034,-1601,77,1825,2874,2953,2568,1938, 1080,184,-761,-1570,-1427,-138,1180,1613,975,-482, -2228,-3461,-3580,-2861,-1524,362,1981,2812,2948,2551, 1753,931,63,-1148,-1853,-1284,51,1200,1594,967, -635,-2380,-3310,-3443,-2793,-1233,579,1965,2853,3066, 2634,2024,1393,207,-1134,-1616,-955,238,1346,1819, 960,-734,-2233,-3247,-3497,-2679,-1136,494,1913,2806, 2822,2516,2092,1206,-220,-1424,-1610,-948,333,1612, 1815,736,-811,-2357,-3457,-3504,-2594,-1219,474,1954, 2602,2652,2532,2103,944,-481,-1433,-1597,-812,624, 1702,1655,658,-902,-2507,-3408,-3354,-2539,-1094,578, 1853,2424,2722,2756,2100,875,-445,-1463,-1591,-611, 780,1664,1605,582,-1077,-2573,-3393,-3376,-2515,-971, 645,1724,2389,2867,2814,2052,822,-566,-1601,-1553, -507,773,1617,1543,444,-1182,-2548,-3360,-3368,-2381, -809,596,1614,2457,2961,2805,2054,763,-743,-1595, -1382,-388,855,1683,1492,326,-1167,-2524,-3451,-3353, -2257,-873,350,1520,2487,2935,2861,2072,634,-800, -1451,-1185,-171,1138,1840,1471,363,-1131,-2672,-3546, -3241,-2238,-1084,188,1407,2363,2933,2887,1941,465, -808,-1419,-1112,32,1298,1828,1495,452,-1203,-2795, -3395,-3056,-2220,-1078,145,1293,2357,3008,2780,1721, 308,-933,-1475,-970,198,1264,1766,1558,385,-1368, -2730,-3210,-2943,-2111,-1058,49,1305,2537,3101,2710, 1613,122,-1163,-1521,-852,193,1206,1852,1508,167, -1469,-2642,-3082,-2752,-1955,-1090,46,1469,2656,3114, 2710,1541,-70,-1230,-1377,-844,160,1353,1947,1404, 70,-1473,-2604,-2936,-2575,-2018,-1220,34,1484,2587, 3079,2701,1360,-160,-1051,-1235,-776,365,1568,1991, 1417,69,-1513,-2531,-2759,-2565,-2191,-1342,-26,1364, 2572,3107,2493,1082,-222,-1077,-1337,-726,501,1596, 1991,1367,-96,-1570,-2392,-2631,-2605,-2201,-1332,-96, 1403,2741,3071,2257,948,-291,-1236,-1414,-719,477, 1596,1963,1173,-318,-1572,-2295,-2641,-2569,-2110,-1337, 7,1747,2981,3077,2292,1018,-322,-1224,-1353,-684, 544,1681,1860,922,-424,-1569,-2342,-2652,-2556,-2252, -1414,227,2003,3057,3117,2312,975,-350,-1167,-1284, -537,797,1795,1700,806,-422,-1621,-2362,-2582,-2683, -2517,-1449,283,1965,3012,3096,2236,902,-346,-1222, -1298,-314,1027,1794,1678,837,-472,-1620,-2184,-2524, -2820,-2551,-1368,324,2006,3040,3062,2202,943,-380, -1354,-1230,-157,1040,1765,1719,760,-553,-1478,-2049, -2596,-2887,-2484,-1275,439,2125,3013,2948,2189,897, -546,-1359,-1043,-82,1042,1798,1593,578,-524,-1360, -2087,-2716,-2954,-2492,-1205,593,2131,2894,2876,2073, 595,-774,-1353,-1061,-72,1139,1740,1388,505,-410, -1269,-2074,-2686,-2988,-2464,-1045,658,2023,2850,2860, 1835,335,-835,-1390,-1061,68,1222,1636,1283,557, -348,-1207,-1991,-2711,-3012,-2336,-918,621,2063,2980, 2808,1707,345,-815,-1335,-838,332,1273,1609,1321, 616,-274,-1111,-2042,-2928,-3099,-2359,-1078,556,2163, 2971,2668,1606,251,-928,-1230,-550,538,1391,1713, 1408,722,-55,-1008,-2159,-2935,-2996,-2400,-1155,583, 2109,2782,2504,1433,-21,-1051,-1125,-409,635,1489, 1716,1407,886,87,-1090,-2173,-2797,-2924,-2363,-1008, 722,2104,2754,2421,1209,-221,-1069,-1084,-373,700, 1423,1578,1475,1028,40,-1167,-2124,-2804,-3036,-2358, -940,744,2151,2763,2240,950,-350,-1132,-1104,-273, 664,1208,1529,1567,1020,-27,-1097,-2066,-2848,-3011, -2314,-955,771,2221,2680,2030,799,-500,-1220,-969, -175,522,1090,1593,1558,917,-23,-1053,-2094,-2842, -2941,-2291,-864,982,2317,2643,1993,634,-682,-1163, -791,-190,449,1192,1704,1598,1015,106,-998,-2063, -2740,-2924,-2226,-615,1174,2413,2711,1913,405,-736, -1020,-783,-304,429,1193,1636,1600,1078,141,-930, -1909,-2673,-2868,-2032,-454,1242,2511,2674,1615,214, -683,-999,-896,-401,393,1102,1577,1614,995,91, -878,-1917,-2710,-2763,-1911,-406,1382,2609,2456,1289, 74,-739,-1105,-990,-447,300,1103,1664,1585,999, 198,-844,-1963,-2626,-2646,-1882,-228,1652,2634,2271, 1182,57,-788,-1087,-943,-509,238,1085,1519,1398, 978,189,-930,-1919,-2546,-2679,-1808,57,1837,2533, 2135,1122,-11,-772,-1034,-986,-561,276,1024,1375, 1395,964,54,-966,-1883,-2640,-2768,-1651,262,1829, 2436,2011,946,-99,-781,-1141,-1093,-521,303,998, 1497,1548,985,111,-814,-1851,-2728,-2674,-1422,384, 1855,2389,1857,854,-57,-811,-1212,-992,-407,323, 1094,1629,1538,962,256,-741,-1959,-2759,-2549,-1279, 534,1937,2278,1721,870,-88,-898,-1154,-923,-438, 335,1225,1615,1439,1030,335,-824,-2047,-2706,-2414, -1065,749,1902,2127,1687,789,-257,-968,-1161,-1087, -616,299,1137,1432,1419,1110,291,-912,-2078,-2693, -2231,-738,905,1923,2200,1744,715,-299,-903,-1222, -1203,-594,297,990,1341,1440,1067,193,-1023,-2280, -2780,-2106,-661,846,1941,2263,1673,668,-179,-838, -1239,-1076,-433,313,973,1406,1443,1069,178,-1210, -2452,-2723,-2014,-700,823,1949,2121,1512,669,-169, -925,-1241,-981,-435,318,1004,1437,1529,1185,109, -1390,-2430,-2563,-1939,-623,969,1924,1995,1508,694, -281,-997,-1229,-1036,-472,317,969,1489,1718,1250, -48,-1435,-2302,-2489,-1839,-415,1073,1875,2026,1569, 639,-322,-970,-1247,-1065,-485,169,828,1519,1730, 1033,-243,-1448,-2283,-2445,-1612,-178,1112,1907,2065, 1508,571,-336,-997,-1243,-986,-521,56,937,1675, 1664,843,-324,-1540,-2383,-2364,-1461,-158,1126,1920, 1993,1444,569,-359,-977,-1056,-873,-591,126,1192, 1810,1650,861,-361,-1660,-2394,-2307,-1499,-216,1104, 1860,1924,1418,464,-459,-882,-954,-966,-668,235, 1253,1781,1667,851,-469,-1661,-2300,-2231,-1415,-119, 1088,1819,1933,1278,224,-493,-799,-1062,-1139,-657, 288,1270,1884,1736,775,-526,-1633,-2265,-2143,-1243, -52,1094,1888,1907,1075,166,-338,-785,-1197,-1195, -656,298,1385,2004,1699,662,-591,-1750,-2336,-2088, -1268,-142,1127,1914,1698,899,243,-292,-857,-1241, -1219,-658,421,1580,2052,1687,667,-663,-1803,-2258, -2041,-1367,-110,1269,1853,1528,902,307,-301,-861, -1263,-1269,-586,592,1648,2074,1715,616,-742,-1700, -2109,-2083,-1316,113,1326,1725,1462,925,304,-291, -895,-1399,-1316,-502,651,1674,2125,1633,416,-771, -1611,-2170,-2115,-1115,288,1287,1635,1395,837,283, -318,-1038,-1482,-1264,-450,694,1827,2175,1472,376, -658,-1618,-2232,-1974,-914,345,1304,1622,1349,870, 344,-377,-1138,-1468,-1250,-471,837,1956,2066,1378, 472,-632,-1697,-2194,-1835,-857,340,1218,1452,1265, 916,319,-502,-1167,-1543,-1388,-417,1021,1929,1936, 1402,464,-750,-1757,-2138,-1734,-726,427,1144,1343, 1272,842,143,-588,-1270,-1752,-1465,-276,1042,1795, 1909,1394,365,-809,-1749,-2074,-1600,-516,493,1161, 1495,1369,812,163,-554,-1417,-1842,-1308,-142,1011, 1793,1952,1387,371,-790,-1755,-2004,-1443,-511,363, 1140,1514,1298,851,302,-614,-1559,-1770,-1157,-83, 1050,1846,1919,1341,311,-946,-1803,-1843,-1318,-545, 363,1162,1397,1241,947,260,-828,-1680,-1764,-1161, -63,1134,1878,1951,1371,163,-1092,-1712,-1687,-1282, -469,512,1158,1384,1382,1020,112,-977,-1705,-1783, -1106,52,1187,1948,2087,1364,52,-1022,-1541,-1652, -1234,-351,513,1063,1424,1457,931,-56,-1106,-1829, -1816,-1072,16,1165,2042,2097,1183,0,-926,-1518, -1633,-1110,-308,390,1003,1446,1394,832,-159,-1254, -1885,-1768,-1114,-73,1254,2106,1935,1044,-18,-989, -1593,-1557,-1056,-405,333,1069,1464,1397,777,-297, -1306,-1751,-1691,-1122,89,1455,2083,1819,1033,-39, -1041,-1499,-1404,-1044,-422,383,1133,1563,1471,676, -433,-1247,-1705,-1763,-1074,279,1493,1996,1789,987, -130,-971,-1354,-1351,-1024,-389,399,1211,1751,1504, 606,-360,-1165,-1800,-1824,-945,381,1466,1995,1730, 804,-234,-961,-1363,-1380,-1044,-459,413,1362,1768, 1320,497,-366,-1298,-1974,-1815,-867,401,1542,2033, 1639,730,-199,-929,-1286,-1271,-1086,-495,572,1501, 1661,1199,507,-467,-1484,-2035,-1816,-890,412,1561, 1939,1549,740,-189,-839,-1120,-1271,-1173,-397,761, 1513,1612,1284,530,-553,-1508,-1978,-1766,-776,573, 1588,1902,1498,597,-272,-777,-1141,-1478,-1246,-277, 778,1424,1615,1263,380,-655,-1555,-2016,-1694,-608, 670,1630,1913,1353,426,-241,-715,-1300,-1623,-1181, -205,768,1467,1678,1227,377,-637,-1599,-1988,-1565, -514,749,1727,1862,1203,510,-15,-670,-1359,-1544, -1056,-170,823,1532,1654,1235,387,-731,-1663,-1952, -1539,-491,874,1762,1682,1144,657,46,-730,-1317, -1424,-995,-91,883,1512,1640,1219,255,-898,-1746, -2057,-1652,-418,958,1603,1481,1131,626,-115,-855, -1397,-1502,-962,-18,900,1546,1725,1182,149,-892, -1753,-2119,-1527,-185,981,1450,1465,1156,560,-159, -937,-1524,-1539,-926,-36,927,1672,1745,1099,180, -840,-1815,-2067,-1272,-60,861,1355,1445,1124,561, -178,-1019,-1528,-1449,-903,-5,1080,1767,1696,1123, 274,-919,-1886,-1876,-1071,-24,852,1346,1424,1139, 559,-301,-1103,-1508,-1493,-978,49,1124,1654,1633, 1168,127,-1161,-1898,-1775,-999,37,891,1367,1507, 1234,503,-350,-1028,-1469,-1537,-908,190,1095,1607, 1714,1132,-84,-1280,-1870,-1745,-966,16,775,1325, 1546,1170,417,-295,-976,-1536,-1495,-740,213,1074, 1730,1815,1072,-122,-1225,-1768,-1556,-818,-5,763, 1404,1526,1014,377,-311,-1151,-1662,-1439,-757,98, 1098,1809,1770,980,-190,-1257,-1672,-1395,-779,-1, 910,1524,1466,1008,429,-432,-1308,-1651,-1441,-862, 73,1156,1802,1699,850,-361,-1287,-1564,-1374,-869, 38,997,1464,1460,1162,491,-452,-1213,-1532,-1459, -876,127,1171,1815,1631,649,-493,-1217,-1521,-1469, -868,141,964,1426,1554,1200,407,-451,-1124,-1518, -1450,-815,224,1303,1944,1563,486,-478,-1178,-1631, -1510,-763,154,909,1465,1552,1056,286,-506,-1179, -1572,-1468,-823,287,1456,1918,1339,419,-446,-1246, -1673,-1398,-693,115,968,1528,1512,997,276,-517, -1163,-1520,-1461,-768,508,1590,1764,1225,456,-467, -1271,-1541,-1317,-736,135,1056,1552,1496,997,253, -492,-1083,-1554,-1510,-578,745,1613,1717,1319,459, -523,-1234,-1516,-1390,-798,160,1057,1526,1476,912, 193,-429,-1151,-1740,-1506,-410,762,1530,1712,1257, 324,-599,-1263,-1598,-1458,-767,185,1074,1553,1385, 810,238,-442,-1366,-1853,-1390,-353,751,1550,1678, 1127,257,-597,-1273,-1596,-1402,-742,238,1182,1536, 1267,870,352,-572,-1501,-1785,-1289,-280,873,1655, 1687,1152,341,-568,-1270,-1594,-1480,-819,279,1151, 1341,1224,977,314,-700,-1503,-1700,-1213,-153,1011, 1691,1736,1244,379,-523,-1224,-1653,-1597,-756,327, 967,1187,1255,951,168,-806,-1544,-1751,-1176,-73, 1007,1660,1729,1186,323,-452,-1215,-1735,-1474,-529, 358,912,1272,1361,935,124,-837,-1591,-1710,-1061, 3,1054,1724,1681,1105,389,-435,-1346,-1730,-1312, -483,267,910,1350,1373,910,60,-947,-1625,-1625, -1006,53,1169,1709,1569,1136,439,-572,-1463,-1665, -1259,-582,175,875,1291,1311,842,-101,-1069,-1609, -1609,-959,216,1222,1606,1578,1230,377,-705,-1404, -1542,-1223,-588,159,821,1247,1280,710,-247,-1065, -1628,-1600,-770,394,1224,1650,1773,1336,328,-660, -1263,-1409,-1120,-502,196,890,1375,1264,594,-287, -1166,-1791,-1621,-702,305,1124,1727,1860,1279,247, -657,-1249,-1388,-1086,-556,204,1028,1422,1223,627, -267,-1272,-1785,-1484,-684,221,1119,1777,1802,1158, 192,-696,-1204,-1330,-1173,-645,252,1015,1288,1164, 576,-471,-1423,-1739,-1430,-737,241,1241,1829,1775, 1123,146,-610,-1052,-1305,-1216,-570,328,962,1278, 1176,400,-737,-1538,-1786,-1553,-824,267,1281,1868, 1761,1025,141,-484,-1026,-1374,-1162,-477,294,970, 1395,1169,269,-758,-1448,-1760,-1547,-766,308,1359, 1944,1689,948,235,-434,-1104,-1373,-1065,-481,264, 1062,1456,1055,199,-701,-1384,-1683,-1447,-699,447, 1559,1957,1566,956,281,-508,-1122,-1279,-1045,-520, 342,1174,1402,967,172,-715,-1349,-1639,-1476,-646, 648,1633,1822,1514,997,251,-555,-1061,-1256,-1147, -513,453,1205,1350,926,129,-699,-1339,-1757,-1565, -510,780,1582,1768,1567,996,204,-481,-1012,-1353, -1200,-455,510,1215,1281,779,30,-708,-1493,-1941, -1532,-397,754,1475,1748,1492,853,189,-439,-1073, -1424,-1203,-434,531,1203,1152,669,52,-771,-1678, -1992,-1408,-364,698,1484,1738,1400,847,277,-430, -1109,-1436,-1238,-401,599,1127,1069,747,163,-842, -1746,-1869,-1292,-311,809,1594,1731,1423,946,321, -418,-1121,-1504,-1205,-261,661,1063,1104,861,128, -957,-1694,-1780,-1250,-212,891,1531,1641,1407,937, 344,-403,-1200,-1529,-1031,-108,632,1069,1234,889, 10,-1009,-1681,-1811,-1204,-134,864,1456,1588,1353, 983,436,-447,-1290,-1452,-874,-107,587,1170,1306, 842,-50,-1060,-1780,-1825,-1143,-110,888,1465,1527, 1332,1059,417,-612,-1317,-1309,-844,-164,647,1255, 1282,800,-105,-1164,-1819,-1793,-1134,-109,868,1349, 1406,1372,1108,274,-704,-1217,-1232,-883,-145,704, 1223,1243,724,-233,-1223,-1807,-1766,-1089,-46,805, 1187,1407,1480,1049,147,-685,-1178,-1302,-907,-113, 734,1276,1263,632,-357,-1290,-1850,-1760,-946,45, 740,1208,1594,1570,976,163,-644,-1237,-1355,-931, -108,797,1353,1259,573,-377,-1331,-1870,-1619,-802, -14,638,1288,1661,1508,967,198,-635,-1210,-1323, -901,-18,931,1390,1220,551,-435,-1446,-1860,-1480, -841,-166,631,1293,1567,1405,895,150,-632,-1153, -1280,-792,186,1084,1450,1285,563,-585,-1536,-1758, -1478,-969,-199,668,1299,1548,1384,866,156,-584, -1184,-1301,-681,303,1116,1533,1389,493,-665,-1406, -1624,-1490,-990,-187,666,1312,1559,1347,858,185, -661,-1321,-1319,-607,297,1166,1652,1313,291,-708, -1340,-1600,-1491,-996,-205,692,1329,1505,1307,875, 159,-821,-1407,-1298,-677,301,1277,1643,1108,131, -760,-1373,-1624,-1504,-1007,-145,774,1336,1466,1372, 945,70,-881,-1406,-1390,-751,399,1372,1573,998, 99,-748,-1342,-1633,-1546,-974,-34,810,1276,1507, 1466,901,13,-855,-1451,-1475,-674,537,1402,1496, 916,42,-731,-1307,-1669,-1594,-897,31,733,1258, 1589,1442,847,64,-846,-1520,-1445,-532,651,1428, 1438,845,39,-655,-1279,-1695,-1490,-783,6,714, 1330,1590,1384,871,66,-952,-1608,-1411,-411,770, 1473,1392,810,151,-582,-1306,-1625,-1346,-753,-4, 790,1377,1551,1406,902,-4,-1095,-1671,-1350,-282, 890,1440,1287,831,186,-665,-1340,-1551,-1333,-781, 64,854,1386,1589,1485,944,-64,-1171,-1691,-1259, -131,884,1264,1172,767,9,-810,-1357,-1578,-1389, -787,56,787,1302,1591,1496,916,-143,-1278,-1721, -1113,-29,808,1204,1199,680,-132,-851,-1400,-1669, -1463,-821,-31,675,1246,1580,1510,898,-285,-1414, -1640,-944,0,819,1302,1240,665,-89,-794,-1393, -1664,-1411,-795,-21,735,1326,1685,1645,880,-431, -1403,-1471,-880,12,861,1284,1132,585,-90,-810, -1404,-1601,-1341,-713,64,795,1413,1847,1713,715, -554,-1365,-1449,-888,33,878,1230,1063,567,-125, -831,-1372,-1574,-1304,-651,65,768,1547,2004,1659, 596,-562,-1336,-1438,-833,116,889,1208,1053,547, -150,-846,-1393,-1591,-1264,-702,-48,826,1727,2064, 1565,547,-549,-1318,-1353,-705,196,906,1192,980, 458,-193,-936,-1512,-1585,-1311,-877,-139,915,1793, 1992,1448,461,-635,-1335,-1306,-668,206,904,1122, 883,434,-276,-1045,-1503,-1548,-1391,-985,-84,1029, 1810,1948,1405,407,-661,-1287,-1262,-629,258,887, 1081,928,432,-360,-1048,-1415,-1551,-1485,-958,83, 1171,1892,1976,1381,386,-614,-1224,-1143,-457,314, 895,1152,978,352,-422,-989,-1389,-1661,-1589,-911, 174,1268,1961,1972,1358,419,-596,-1158,-976,-366, 319,930,1192,887,192,-468,-988,-1499,-1833,-1702, -956,177,1297,1908,1909,1335,354,-633,-1067,-883, -369,366,1035,1203,772,145,-409,-977,-1580,-1944, -1797,-981,230,1264,1842,1849,1218,220,-631,-980, -871,-341,494,1132,1143,705,209,-326,-948,-1615, -2069,-1837,-927,257,1274,1883,1831,1125,197,-545, -930,-857,-236,628,1115,1046,699,256,-242,-902, -1691,-2126,-1791,-872,285,1347,1917,1738,1049,211, -525,-991,-847,-117,661,1055,982,659,308,-185, -963,-1792,-2117,-1740,-835,391,1466,1905,1664,1046, 259,-581,-1029,-798,-67,643,964,857,609,368, -190,-1072,-1837,-2112,-1741,-768,531,1530,1840,1662, 1090,230,-628,-1001,-698,37,676,873,779,675, 417,-223,-1095,-1831,-2127,-1741,-656,623,1460,1774, 1641,1029,142,-681,-995,-610,124,619,757,779, 719,371,-309,-1146,-1918,-2228,-1689,-535,626,1418, 1766,1625,990,63,-769,-990,-550,66,460,671, 811,736,361,-279,-1175,-2032,-2246,-1604,-480,629, 1425,1780,1636,969,-57,-828,-910,-468,35,421, 744,885,798,477,-218,-1228,-2061,-2176,-1505,-409, 675,1431,1808,1633,847,-164,-792,-787,-413,55, 501,814,931,888,557,-256,-1281,-2037,-2091,-1373, -321,674,1456,1845,1570,682,-237,-732,-780,-495, 1,455,741,935,938,537,-341,-1368,-2091,-2050, -1326,-337,681,1562,1912,1473,589,-186,-661,-768, -483,-10,396,727,978,957,492,-457,-1510,-2134, -2028,-1345,-377,741,1658,1875,1357,579,-136,-638, -728,-440,-24,390,777,1064,1055,517,-506,-1513, -2037,-1948,-1349,-336,852,1643,1730,1254,541,-193, -655,-744,-508,-115,324,775,1106,1055,407,-650, -1572,-2050,-2021,-1383,-226,961,1634,1685,1227,520, -159,-602,-721,-525,-160,307,819,1188,1033,267, -713,-1556,-2119,-2119,-1353,-122,998,1638,1676,1232, 589,-41,-474,-623,-483,-178,295,886,1228,955, 197,-673,-1546,-2194,-2117,-1251,-19,1078,1674,1696, 1284,669,45,-398,-557,-508,-229,341,975,1166, 791,109,-794,-1755,-2354,-2165,-1208,52,1130,1692, 1708,1318,699,93,-325,-538,-548,-171,524,1071, 1133,785,98,-889,-1896,-2460,-2199,-1188,77,1097, 1655,1680,1310,751,216,-208,-560,-547,-29,629, 1047,1083,761,51,-997,-2027,-2545,-2202,-1152,85, 1067,1616,1606,1243,786,317,-234,-636,-526,53, 671,1057,1111,789,30,-1090,-2145,-2586,-2145,-1093, 116,1069,1541,1463,1173,828,296,-342,-689,-501, 78,677,1082,1161,854,41,-1147,-2205,-2562,-2099, -1076,144,1066,1410,1364,1215,881,246,-430,-716, -483,84,637,1040,1146,824,-59,-1276,-2252,-2559, -2120,-1020,211,1036,1343,1414,1351,954,253,-394, -629,-371,166,699,1118,1234,843,-136,-1322,-2251, -2577,-2062,-888,273,985,1329,1504,1451,984,233, -360,-560,-297,217,766,1252,1336,817,-178,-1357, -2332,-2618,-2000,-835,212,875,1289,1523,1440,904, 139,-417,-552,-311,184,830,1327,1334,772,-223, -1468,-2456,-2617,-1933,-848,92,758,1265,1543,1428, 843,120,-348,-501,-302,256,944,1377,1335,792, -277,-1606,-2514,-2540,-1826,-851,22,714,1284,1592, 1422,818,170,-298,-524,-294,345,991,1399,1366, 753,-448,-1808,-2612,-2546,-1848,-939,-69,685,1319, 1582,1369,823,194,-336,-555,-237,421,1053,1475, 1436,712,-597,-1890,-2603,-2498,-1845,-1013,-121,727, 1339,1533,1344,863,202,-358,-523,-175,474,1118, 1570,1481,636,-686,-1897,-2482,-2363,-1809,-1014,-49, 830,1359,1560,1414,915,227,-331,-455,-102,549, 1252,1706,1530,576,-792,-1934,-2438,-2381,-1939,-1095, -81,743,1276,1526,1405,870,187,-305,-416,-63, 662,1424,1880,1602,538,-827,-1871,-2392,-2444,-2004, -1133,-183,582,1140,1426,1286,736,91,-391,-504, -118,672,1516,1961,1536,416,-808,-1781,-2357,-2433, -1942,-1078,-191,566,1149,1413,1240,710,60,-441, -560,-128,759,1660,1961,1391,322,-824,-1801,-2411, -2445,-1906,-1063,-183,599,1201,1463,1285,760,102, -421,-564,-67,966,1816,1945,1314,297,-827,-1844, -2446,-2438,-1907,-1092,-203,599,1198,1466,1269,765, 100,-493,-592,76,1181,1930,1939,1316,324,-827, -1853,-2428,-2425,-1911,-1119,-240,567,1167,1397,1237, 765,26,-609,-564,267,1353,1969,1935,1330,326, -840,-1833,-2378,-2370,-1857,-1092,-216,576,1113,1357, 1266,727,-121,-743,-547,350,1359,1916,1872,1270, 257,-895,-1864,-2383,-2350,-1853,-1066,-163,574,1096, 1407,1344,690,-268,-798,-490,393,1327,1857,1788, 1178,170,-994,-1934,-2446,-2428,-1908,-1070,-186,504, 1110,1517,1398,612,-359,-743,-347,545,1434,1916, 1836,1200,147,-984,-1913,-2468,-2445,-1882,-1056,-252, 464,1186,1614,1343,436,-456,-736,-269,648,1513, 2006,1893,1207,174,-926,-1887,-2466,-2392,-1809,-1072, -348,464,1267,1621,1222,281,-539,-718,-199,695, 1567,2023,1854,1147,172,-930,-1944,-2460,-2305,-1747, -1119,-374,526,1325,1603,1090,136,-576,-685,-136, 783,1663,2055,1840,1176,210,-945,-1970,-2405,-2209, -1768,-1207,-384,583,1383,1547,952,35,-605,-673, -88,870,1702,2053,1847,1228,221,-1007,-1941,-2316, -2184,-1828,-1282,-380,680,1426,1476,866,-2,-638, -652,12,962,1708,1993,1834,1190,114,-1098,-1940, -2281,-2218,-1923,-1319,-292,785,1414,1389,773,-92, -700,-618,123,1017,1682,1980,1818,1110,5,-1155, -1940,-2265,-2278,-2027,-1300,-172,875,1451,1376,722, -179,-740,-532,212,1020,1696,2022,1824,1045,-79, -1162,-1893,-2273,-2405,-2122,-1288,-108,935,1500,1418, 701,-216,-667,-411,279,1066,1772,2091,1813,963, -138,-1116,-1822,-2316,-2501,-2152,-1261,-68,962,1519, 1355,594,-239,-593,-331,327,1139,1864,2157,1760, 853,-174,-1114,-1876,-2447,-2605,-2155,-1225,-10,1059, 1546,1281,507,-230,-523,-270,387,1257,2010,2216, 1728,852,-96,-1042,-1942,-2571,-2674,-2198,-1225,35, 1106,1503,1197,446,-212,-460,-220,473,1428,2145, 2217,1679,898,16,-1004,-1979,-2608,-2703,-2219,-1191, 85,1085,1427,1078,377,-237,-500,-237,527,1522, 2126,2060,1544,851,-27,-1078,-2053,-2675,-2764,-2211, -1105,183,1129,1385,1036,376,-276,-584,-280,591, 1575,2051,1967,1528,862,-48,-1096,-2102,-2759,-2825, -2203,-1018,263,1120,1324,994,354,-335,-626,-209, 745,1641,2030,1943,1546,881,-35,-1112,-2133,-2783, -2832,-2120,-900,295,1053,1258,963,284,-430,-631, -93,849,1635,1977,1886,1525,894,-23,-1111,-2167, -2827,-2805,-2001,-785,323,1043,1285,991,240,-461, -550,37,939,1661,1970,1945,1606,970,31,-1127, -2253,-2933,-2799,-1908,-741,296,1040,1293,912,112, -504,-490,154,1039,1723,2047,2030,1700,1061,82, -1170,-2371,-3003,-2740,-1835,-731,313,1108,1296,814, -7,-554,-445,239,1086,1747,2070,2033,1725,1113, 102,-1251,-2489,-3006,-2678,-1847,-794,279,1061,1175, 622,-148,-573,-386,310,1124,1765,2065,2032,1779, 1168,39,-1422,-2612,-3033,-2708,-1912,-871,214,961, 990,413,-267,-568,-339,367,1184,1790,2085,2112, 1942,1259,-64,-1571,-2694,-3074,-2753,-1966,-875,263, 965,921,374,-226,-482,-216,496,1281,1817,2101, 2241,2076,1277,-116,-1591,-2638,-3013,-2737,-1954,-826, 281,863,765,248,-294,-489,-162,591,1306,1789, 2140,2372,2160,1256,-141,-1555,-2570,-2969,-2704,-1860, -694,335,797,658,152,-390,-542,-128,581,1183, 1684,2131,2439,2181,1215,-177,-1551,-2573,-2995,-2674, -1746,-553,423,834,678,152,-383,-446,-1,596, 1127,1669,2188,2482,2134,1138,-213,-1571,-2601,-2999, -2607,-1624,-478,428,808,582,30,-424,-373,41, 576,1113,1740,2343,2564,2125,1108,-242,-1627,-2707, -3044,-2559,-1582,-485,373,687,405,-119,-462,-376, -9,474,1060,1786,2430,2607,2146,1146,-211,-1680, -2769,-3027,-2521,-1561,-472,335,552,236,-231,-475, -375,-77,400,1070,1865,2485,2601,2153,1167,-243, -1735,-2736,-2924,-2411,-1421,-334,377,497,162,-227, -416,-372,-142,364,1125,1938,2485,2588,2162,1142, -343,-1821,-2753,-2927,-2377,-1356,-289,324,374,98, -189,-351,-363,-152,418,1238,2010,2529,2672,2232, 1136,-390,-1863,-2784,-2942,-2356,-1313,-296,199,206, 9,-198,-388,-448,-182,479,1317,2068,2633,2802, 2342,1184,-372,-1821,-2747,-2859,-2199,-1156,-240,142, 154,47,-158,-453,-556,-212,471,1303,2085,2672, 2828,2327,1155,-390,-1838,-2738,-2781,-2047,-1030,-267, 59,142,101,-166,-525,-592,-211,452,1258,2075, 2687,2794,2224,1036,-530,-1972,-2815,-2745,-1928,-968, -340,-7,163,97,-232,-594,-618,-249,397,1224, 2084,2714,2820,2221,987,-628,-2105,-2875,-2652,-1811, -980,-422,-34,175,64,-306,-634,-634,-259,412, 1293,2179,2797,2890,2287,1002,-673,-2150,-2791,-2473, -1739,-1039,-502,-72,135,-23,-394,-667,-639,-234, 481,1409,2315,2891,2971,2357,997,-767,-2162,-2652, -2325,-1687,-1068,-504,-67,90,-96,-448,-721,-703, -278,487,1442,2348,2919,3040,2377,889,-897,-2176, -2549,-2243,-1664,-1056,-466,-47,75,-121,-465,-744, -747,-310,491,1418,2292,2943,3090,2318,724,-993, -2126,-2455,-2209,-1670,-1045,-452,-43,66,-143,-460, -739,-717,-231,549,1452,2361,3083,3182,2237,587, -1029,-2070,-2402,-2220,-1708,-1092,-507,-126,-32,-216, -548,-815,-708,-182,584,1502,2502,3281,3271,2172, 505,-1056,-2061,-2400,-2248,-1747,-1125,-589,-229,-96, -286,-663,-885,-722,-210,524,1511,2637,3435,3294, 2128,509,-1014,-1991,-2354,-2199,-1688,-1099,-591,-213, -97,-375,-752,-919,-748,-263,477,1591,2793,3520, 3262,2062,510,-936,-1917,-2276,-2098,-1637,-1103,-582, -190,-166,-496,-830,-940,-813,-364,481,1694,2892, 3510,3132,1936,429,-986,-1935,-2254,-2075,-1659,-1114, -568,-201,-238,-529,-804,-904,-858,-426,512,1819, 2995,3484,3050,1856,348,-1051,-1935,-2213,-2071,-1659, -1088,-520,-232,-307,-540,-781,-936,-918,-440,623, 2007,3132,3524,3082,1873,331,-1031,-1876,-2165,-2066, -1645,-1057,-532,-301,-367,-566,-774,-1012,-1017,-428, 757,2132,3171,3530,3062,1832,307,-990,-1797,-2128, -2021,-1543,-959,-518,-341,-373,-525,-786,-1122,-1112, -407,843,2183,3176,3522,3016,1752,289,-932,-1774, -2110,-1960,-1457,-901,-523,-381,-373,-542,-945,-1332, -1226,-412,892,2257,3266,3586,3021,1776,360,-887, -1797,-2145,-1957,-1456,-947,-622,-416,-369,-615,-1116, -1476,-1262,-346,989,2390,3402,3644,3035,1824,407, -911,-1855,-2189,-1963,-1488,-1061,-734,-439,-382,-704, -1266,-1570,-1268,-302,1090,2521,3487,3656,3029,1827, 391,-975,-1909,-2154,-1891,-1497,-1146,-778,-445,-435, -871,-1424,-1695,-1334,-307,1146,2581,3487,3622,3008, 1833,393,-1002,-1855,-2014,-1767,-1470,-1155,-723,-391, -460,-949,-1509,-1758,-1343,-235,1255,2642,3497,3614, 3063,1913,434,-935,-1693,-1828,-1686,-1467,-1098,-615, -317,-455,-978,-1580,-1805,-1312,-123,1412,2741,3541, 3685,3134,1921,374,-926,-1597,-1774,-1744,-1521,-1079, -605,-331,-518,-1093,-1706,-1911,-1315,-27,1506,2758, 3546,3706,3123,1806,265,-938,-1583,-1833,-1845,-1591, -1136,-659,-411,-641,-1264,-1900,-2034,-1323,30,1507, 2746,3566,3732,3084,1729,271,-844,-1501,-1802,-1822, -1565,-1078,-607,-404,-674,-1376,-2048,-2091,-1301,48, 1456,2730,3591,3721,2966,1631,252,-805,-1452,-1778, -1794,-1503,-1008,-534,-361,-680,-1468,-2126,-2072,-1249, 39,1436,2760,3640,3681,2870,1564,242,-777,-1467, -1785,-1776,-1447,-935,-424,-258,-693,-1546,-2124,-1977, -1169,64,1525,2890,3719,3676,2838,1581,296,-727, -1435,-1754,-1737,-1379,-819,-279,-207,-771,-1644,-2123, -1939,-1136,128,1640,2998,3727,3572,2736,1534,270, -762,-1448,-1758,-1733,-1344,-717,-199,-281,-944,-1767, -2203,-2021,-1222,81,1650,2984,3633,3435,2663,1513, 276,-737,-1424,-1761,-1740,-1294,-587,-169,-360,-1043, -1827,-2264,-2112,-1321,57,1671,2946,3521,3354,2620, 1503,307,-677,-1366,-1766,-1711,-1156,-468,-171,-445, -1120,-1858,-2288,-2147,-1289,200,1810,3003,3508,3350, 2611,1481,325,-665,-1417,-1817,-1676,-1054,-421,-233, -531,-1174,-1903,-2358,-2180,-1216,319,1891,3022,3547, 3400,2652,1557,418,-648,-1454,-1816,-1570,-920,-357, -265,-578,-1225,-2031,-2531,-2278,-1207,351,1867,2982, 3514,3347,2637,1613,455,-679,-1498,-1769,-1410,-769, -298,-239,-580,-1299,-2171,-2652,-2292,-1150,388,1876, 2984,3448,3269,2623,1653,432,-762,-1568,-1729,-1313, -738,-336,-240,-571,-1351,-2265,-2664,-2252,-1083,453, 1936,3007,3431,3277,2682,1709,398,-839,-1575,-1639, -1207,-686,-301,-173,-563,-1455,-2376,-2722,-2269,-1078, 513,1988,2986,3405,3298,2740,1718,325,-903,-1565, -1548,-1157,-659,-215,-120,-606,-1553,-2425,-2726,-2225, -996,594,2002,2910,3328,3291,2744,1660,211,-967, -1540,-1536,-1183,-664,-191,-172,-718,-1637,-2468,-2716, -2147,-855,717,2014,2879,3350,3391,2813,1616,153, -947,-1492,-1521,-1137,-572,-132,-196,-802,-1760,-2581, -2800,-2134,-781,748,1971,2853,3414,3512,2860,1573, 155,-921,-1490,-1501,-1093,-518,-115,-238,-910,-1898, -2725,-2858,-2128,-752,692,1841,2751,3399,3471,2729, 1460,93,-967,-1505,-1464,-1011,-431,-79,-248,-986, -1995,-2796,-2841,-2015,-639,714,1836,2845,3520,3478, 2673,1407,56,-997,-1494,-1394,-905,-328,-3,-224, -999,-2044,-2790,-2711,-1804,-526,732,1907,3003,3626, 3515,2670,1387,-4,-1064,-1501,-1366,-866,-295,1, -259,-1094,-2175,-2839,-2618,-1725,-567,681,1917,3028, 3614,3467,2603,1305,-114,-1130,-1501,-1309,-761,-192, 93,-248,-1217,-2331,-2876,-2608,-1777,-650,642,1962, 3073,3651,3471,2594,1270,-131,-1132,-1453,-1215,-654, -64,190,-301,-1371,-2407,-2848,-2581,-1820,-721,602, 1960,3065,3618,3444,2558,1204,-200,-1158,-1428,-1197, -620,10,163,-463,-1546,-2462,-2841,-2594,-1866,-747, 614,1983,3081,3621,3449,2500,1090,-281,-1171,-1458, -1200,-539,92,108,-601,-1639,-2499,-2870,-2650,-1917, -738,658,2044,3156,3732,3538,2521,1133,-189,-1099, -1406,-1077,-343,202,56,-705,-1688,-2506,-2889,-2705, -1960,-764,647,2041,3214,3806,3548,2525,1170,-141, -1069,-1322,-879,-125,273,4,-763,-1703,-2479,-2866, -2708,-1944,-770,613,2041,3256,3802,3486,2468,1129, -209,-1109,-1227,-673,55,322,-15,-791,-1701,-2491, -2930,-2739,-1959,-815,582,2065,3261,3745,3423,2433, 1083,-313,-1167,-1129,-514,129,299,-92,-840,-1747, -2580,-3019,-2799,-2050,-897,572,2091,3241,3688,3387, 2419,996,-400,-1144,-1003,-368,152,223,-155,-860, -1802,-2617,-2995,-2807,-2090,-909,605,2113,3210,3651, 3372,2344,856,-482,-1087,-849,-263,157,194,-170, -902,-1855,-2636,-3008,-2835,-2091,-848,699,2156,3246, 3718,3408,2260,697,-582,-1041,-753,-228,151,201, -201,-980,-1905,-2696,-3100,-2929,-2130,-821,734,2195, 3319,3834,3482,2232,660,-519,-832,-550,-58,297, 284,-171,-968,-1869,-2687,-3137,-2944,-2128,-825,706, 2171,3346,3887,3461,2125,613,-422,-672,-389,93, 430,340,-162,-930,-1838,-2707,-3162,-2937,-2088,-792, 706,2182,3404,3903,3309,1916,467,-460,-694,-415, 86,366,266,-224,-987,-1934,-2823,-3263,-2986,-2102, -822,689,2262,3524,3909,3176,1787,405,-469,-659, -350,102,314,218,-247,-1017,-2001,-2918,-3321,-2980, -2124,-906,681,2367,3645,3916,3121,1747,408,-420, -546,-206,178,349,241,-197,-991,-2041,-2955,-3280, -2952,-2159,-940,735,2468,3649,3813,2970,1601,313, -425,-484,-127,215,349,256,-164,-1046,-2158,-3005, -3287,-3009,-2251,-938,823,2538,3627,3714,2833,1473, 258,-391,-393,-51,251,402,355,-114,-1064,-2181, -2979,-3278,-3089,-2324,-913,910,2636,3697,3721,2810, 1466,306,-262,-240,11,312,521,469,-99,-1109, -2171,-2925,-3294,-3154,-2344,-864,975,2707,3705,3651, 2703,1379,313,-166,-167,41,371,618,501,-161, -1186,-2206,-2980,-3427,-3285,-2399,-852,1033,2733,3704, 3588,2596,1317,334,-122,-170,59,433,680,486, -238,-1216,-2234,-3068,-3566,-3430,-2466,-841,1087,2782, 3700,3522,2511,1307,397,-83,-141,145,545,737, 456,-274,-1224,-2242,-3123,-3658,-3468,-2444,-776,1177, 2860,3688,3436,2459,1353,487,-34,-60,286,651, 749,420,-282,-1217,-2271,-3229,-3771,-3529,-2467,-741, 1262,2943,3685,3402,2500,1466,547,-7,15,356, 661,678,348,-321,-1271,-2375,-3381,-3895,-3614,-2512, -693,1334,2927,3562,3279,2442,1401,472,-11,83, 446,699,687,362,-298,-1278,-2429,-3418,-3924,-3634, -2447,-539,1466,2913,3505,3238,2418,1348,423,25, 184,542,743,728,423,-250,-1257,-2435,-3433,-3970, -3667,-2362,-406,1532,2906,3480,3229,2389,1281,398, 91,288,582,757,765,470,-230,-1280,-2478,-3528, -4088,-3679,-2262,-302,1556,2873,3424,3164,2260,1127, 336,141,333,601,797,831,536,-203,-1270,-2524, -3657,-4200,-3675,-2194,-250,1551,2863,3438,3174,2207, 1094,401,242,397,653,872,861,550,-172,-1267, -2602,-3781,-4253,-3644,-2133,-246,1515,2865,3430,3090, 2088,1030,435,284,428,721,928,899,593,-103, -1266,-2709,-3890,-4264,-3578,-2085,-265,1509,2868,3385, 2949,1952,988,405,252,407,711,894,898,630, -66,-1308,-2815,-3968,-4217,-3492,-2043,-237,1596,2938, 3368,2876,1927,1000,409,266,429,691,872,905, 675,-61,-1411,-2942,-4022,-4182,-3428,-1982,-119,1755, 3035,3368,2858,1936,993,440,331,491,717,905, 987,761,-73,-1540,-3103,-4114,-4227,-3508,-2028,-90, 1778,2982,3296,2814,1907,1012,508,428,565,755, 978,1108,839,-135,-1686,-3220,-4159,-4287,-3595,-2054, -81,1742,2910,3209,2736,1840,1003,570,512,611, 805,1092,1266,910,-214,-1783,-3246,-4182,-4345,-3596, -1986,-21,1774,2918,3166,2689,1784,1018,651,571, 626,859,1235,1416,924,-290,-1836,-3289,-4261,-4404, -3591,-1946,-1,1760,2867,3094,2590,1720,1042,694, 570,620,967,1432,1537,930,-297,-1862,-3359,-4337, -4456,-3582,-1916,16,1742,2812,3018,2486,1686,1076, 697,524,631,1099,1566,1587,935,-317,-1905,-3435, -4398,-4469,-3559,-1877,66,1776,2790,2919,2403,1698, 1144,702,482,675,1189,1614,1577,909,-347,-1964, -3510,-4441,-4446,-3520,-1821,159,1845,2775,2829,2364, 1734,1137,630,450,727,1265,1657,1590,903,-373, -2039,-3601,-4501,-4463,-3517,-1772,238,1877,2714,2781, 2403,1772,1085,546,452,785,1346,1724,1652,937, -407,-2119,-3655,-4519,-4474,-3519,-1740,256,1771,2576, 2712,2394,1739,1031,551,526,894,1459,1824,1732, 968,-436,-2167,-3673,-4534,-4488,-3468,-1644,278,1680, 2476,2676,2355,1673,963,571,600,993,1546,1902, 1790,981,-481,-2199,-3712,-4598,-4518,-3387,-1570,240, 1589,2398,2635,2289,1553,870,532,609,1041,1602, 1986,1853,989,-484,-2218,-3765,-4641,-4485,-3277,-1518, 204,1526,2398,2626,2236,1478,819,532,644,1103, 1731,2122,1945,1034,-436,-2241,-3854,-4687,-4432,-3212, -1521,149,1496,2376,2566,2149,1422,829,579,743, 1244,1905,2253,2036,1121,-407,-2286,-3923,-4677,-4326, -3143,-1543,100,1480,2327,2451,1998,1302,756,525, 755,1340,1997,2313,2098,1173,-440,-2392,-3984,-4638, -4226,-3088,-1539,114,1530,2340,2405,1930,1234,621, 411,706,1322,1979,2310,2127,1196,-496,-2481,-4010, -4590,-4161,-3101,-1577,86,1493,2250,2293,1831,1135, 543,408,774,1387,2022,2400,2211,1206,-565,-2547, -3997,-4512,-4125,-3100,-1556,123,1484,2217,2269,1768, 1055,515,448,842,1442,2103,2544,2323,1182,-680, -2616,-3979,-4462,-4137,-3088,-1505,162,1499,2238,2270, 1709,979,490,479,857,1475,2212,2700,2425,1152, -764,-2624,-3930,-4433,-4107,-3024,-1453,181,1502,2243, 2214,1619,908,494,508,882,1534,2341,2841,2455, 1088,-786,-2609,-3896,-4410,-4045,-2935,-1402,219,1548, 2241,2162,1551,870,496,489,860,1571,2473,2918, 2421,1010,-819,-2629,-3920,-4417,-4035,-2958,-1447,183, 1520,2153,2018,1428,793,457,422,816,1645,2581, 2920,2316,881,-952,-2763,-4040,-4473,-4054,-2983,-1445, 235,1549,2110,1928,1382,787,391,348,833,1746, 2638,2885,2228,803,-1047,-2851,-4086,-4455,-4028,-2939, -1371,341,1608,2085,1893,1385,785,315,318,936, 1898,2730,2923,2255,802,-1065,-2818,-3992,-4361,-3962, -2865,-1245,454,1630,2070,1897,1381,714,219,312, 1027,2019,2833,2979,2270,767,-1103,-2810,-3938,-4322, -3927,-2779,-1094,556,1660,2093,1947,1356,581,95, 270,1034,2043,2838,2945,2202,687,-1181,-2833,-3946, -4363,-3932,-2700,-1023,536,1621,2070,1918,1237,441, 24,276,1091,2104,2857,2946,2148,619,-1200,-2817, -3953,-4375,-3868,-2567,-962,528,1614,2096,1873,1109, 312,-35,273,1121,2129,2897,2940,2099,574,-1192, -2832,-4004,-4360,-3767,-2468,-925,567,1681,2147,1826, 978,183,-107,251,1115,2152,2885,2848,1990,502, -1262,-2940,-4103,-4356,-3683,-2421,-902,632,1763,2179, 1770,896,147,-96,326,1237,2297,2957,2852,1987, 541,-1257,-2988,-4110,-4299,-3627,-2422,-909,649,1775, 2132,1680,829,137,-58,450,1435,2489,3061,2917, 2067,591,-1278,-3029,-4092,-4256,-3654,-2489,-949,627, 1746,2023,1539,706,43,-84,529,1568,2582,3085, 2954,2103,550,-1379,-3090,-4091,-4231,-3679,-2515,-924, 675,1733,1933,1423,575,-93,-121,592,1627,2572, 3085,2999,2105,479,-1476,-3129,-4082,-4232,-3696,-2486, -847,743,1735,1884,1336,465,-147,-26,736,1743, 2645,3176,3091,2119,418,-1551,-3147,-4076,-4274,-3718, -2449,-769,795,1751,1865,1222,339,-157,68,841, 1826,2749,3313,3213,2182,419,-1511,-3088,-4053,-4308, -3728,-2427,-774,785,1703,1758,1042,174,-225,74, 859,1832,2783,3397,3234,2128,351,-1513,-3091,-4091, -4317,-3690,-2377,-737,825,1689,1617,866,64,-229, 123,902,1903,2898,3492,3213,2052,292,-1556,-3150, -4155,-4342,-3691,-2376,-690,879,1673,1506,740,20, -193,146,919,1983,3038,3567,3214,2052,323,-1549, -3162,-4168,-4342,-3710,-2364,-637,913,1620,1377,644, 9,-188,147,951,2089,3141,3576,3192,2000,266, -1639,-3242,-4213,-4373,-3697,-2283,-527,954,1536,1242, 561,4,-179,186,1058,2245,3249,3636,3244,2031, 255,-1653,-3251,-4229,-4386,-3690,-2210,-438,924,1399, 1123,504,-47,-227,201,1153,2335,3302,3694,3285, 2046,268,-1633,-3213,-4204,-4375,-3611,-2062,-308,936, 1338,1073,468,-122,-294,211,1212,2372,3320,3706, 3263,1994,209,-1683,-3272,-4287,-4447,-3561,-1949,-266, 882,1262,1001,356,-255,-361,184,1208,2371,3315, 3703,3252,1996,235,-1628,-3256,-4298,-4373,-3417,-1825, -269,784,1153,864,202,-386,-419,190,1222,2404, 3375,3760,3290,2033,298,-1586,-3267,-4278,-4234,-3203, -1679,-208,814,1138,783,92,-440,-417,233,1299, 2491,3481,3844,3333,2081,329,-1640,-3368,-4301,-4150, -3115,-1660,-230,768,1034,617,-72,-545,-458,213, 1328,2554,3523,3863,3352,2154,379,-1671,-3375,-4205, -3999,-3004,-1615,-227,707,880,392,-290,-706,-598, 129,1286,2543,3492,3815,3379,2212,355,-1732,-3377, -4124,-3893,-2908,-1528,-162,710,798,296,-380,-764, -637,151,1337,2577,3472,3822,3441,2205,265,-1829, -3392,-4076,-3821,-2833,-1421,-93,700,726,231,-432, -821,-622,231,1434,2636,3506,3918,3535,2202,198, -1878,-3372,-4000,-3732,-2721,-1307,-18,696,657,133, -551,-935,-666,239,1413,2580,3509,3991,3582,2179, 130,-1885,-3323,-3912,-3615,-2591,-1186,41,696,648, 77,-650,-975,-618,297,1400,2556,3542,4053,3574, 2083,50,-1900,-3292,-3848,-3492,-2431,-1064,94,704, 628,-25,-762,-1013,-590,286,1364,2568,3621,4103, 3536,1973,-59,-1997,-3383,-3901,-3466,-2372,-1042,95, 675,491,-237,-930,-1119,-691,147,1262,2565,3685, 4119,3484,1912,-118,-2079,-3445,-3887,-3423,-2357,-1034, 111,632,349,-399,-997,-1106,-698,115,1269,2655, 3792,4145,3459,1881,-158,-2111,-3402,-3784,-3324,-2255, -927,189,637,270,-463,-980,-1049,-682,128,1363, 2789,3896,4190,3482,1864,-205,-2122,-3317,-3688,-3207, -2112,-770,286,627,203,-506,-983,-1067,-720,139, 1453,2904,3974,4268,3513,1819,-268,-2133,-3267,-3624, -3128,-1997,-649,336,567,134,-497,-966,-1085,-755, 164,1502,2944,4004,4270,3453,1706,-355,-2155,-3272, -3607,-3075,-1902,-556,331,501,102,-481,-993,-1163, -800,156,1505,2935,3991,4197,3292,1517,-502,-2247, -3341,-3643,-3037,-1803,-518,259,396,40,-573,-1115, -1286,-844,145,1533,2996,4028,4174,3205,1396,-590, -2318,-3410,-3648,-2957,-1709,-535,191,335,-22,-655, -1198,-1341,-891,135,1574,3052,4061,4156,3153,1370, -580,-2309,-3399,-3521,-2755,-1572,-487,207,352,-39, -706,-1243,-1365,-900,186,1694,3210,4191,4206,3172, 1435,-534,-2280,-3317,-3338,-2552,-1431,-405,244,358, -106,-796,-1323,-1407,-907,241,1829,3365,4288,4212, 3201,1449,-579,-2314,-3237,-3194,-2428,-1352,-356,269, 336,-181,-889,-1426,-1495,-955,261,1896,3404,4238, 4146,3144,1328,-757,-2459,-3276,-3193,-2443,-1402,-406, 223,255,-262,-975,-1511,-1591,-982,348,2004,3457, 4266,4205,3165,1257,-840,-2480,-3240,-3169,-2459,-1457, -491,95,76,-452,-1158,-1704,-1754,-1024,395,2050, 3482,4343,4311,3197,1235,-819,-2353,-3068,-2987,-2309, -1355,-438,74,6,-532,-1289,-1875,-1857,-992,457, 2090,3539,4430,4351,3136,1134,-880,-2339,-3011,-2897, -2201,-1227,-328,157,97,-464,-1295,-1886,-1785,-886, 536,2159,3638,4527,4363,3067,1045,-927,-2324,-2981, -2857,-2137,-1180,-320,154,109,-527,-1410,-1923,-1733, -823,587,2245,3772,4618,4364,3018,1012,-915,-2282, -2929,-2770,-2056,-1164,-324,166,53,-680,-1568,-2012, -1752,-826,635,2332,3890,4695,4337,2951,969,-949, -2324,-2924,-2736,-2066,-1209,-347,113,-105,-913,-1765, -2144,-1851,-904,602,2365,3933,4665,4232,2830,876, -1026,-2328,-2855,-2686,-2056,-1182,-291,80,-248,-1086, -1905,-2227,-1917,-928,655,2499,4041,4669,4200,2789, 811,-1033,-2259,-2766,-2632,-1997,-1064,-176,116,-294, -1132,-1910,-2238,-1938,-914,754,2632,4141,4741,4251, 2803,796,-991,-2184,-2707,-2584,-1926,-978,-146,64, -397,-1211,-1949,-2276,-1975,-878,851,2722,4185,4749, 4211,2700,720,-1012,-2176,-2705,-2558,-1844,-867,-92, 25,-462,-1257,-1997,-2334,-1974,-798,972,2836,4277, 4806,4181,2656,725,-962,-2148,-2688,-2521,-1750,-770, -70,-36,-527,-1333,-2121,-2462,-2020,-769,1019,2905, 4345,4819,4109,2597,716,-948,-2140,-2664,-2414,-1620, -696,-98,-111,-618,-1469,-2322,-2621,-2117,-836,997, 2916,4324,4719,3983,2492,708,-945,-2135,-2601,-2262, -1480,-636,-94,-134,-689,-1611,-2464,-2731,-2199,-879, 1010,2946,4323,4655,3910,2483,757,-910,-2077,-2470, -2111,-1376,-581,-62,-135,-753,-1687,-2506,-2731,-2151, -771,1182,3104,4388,4624,3867,2463,704,-992,-2077, -2370,-2007,-1294,-501,-17,-124,-803,-1753,-2555,-2758, -2122,-699,1289,3189,4387,4593,3873,2477,673,-1020, -2022,-2273,-1928,-1212,-430,-23,-191,-924,-1913,-2719, -2917,-2223,-680,1342,3206,4346,4562,3865,2440,601, -1027,-1970,-2194,-1847,-1116,-362,1,-232,-1006,-2013, -2839,-3026,-2260,-598,1431,3195,4286,4512,3777,2285, 471,-1080,-1968,-2162,-1755,-1012,-266,96,-183,-982, -2037,-2888,-3041,-2199,-501,1480,3177,4287,4505,3724, 2197,429,-1091,-1961,-2144,-1703,-957,-218,92,-212, -1021,-2137,-3002,-3049,-2121,-411,1526,3252,4371,4536, 3696,2150,397,-1102,-1947,-2076,-1614,-857,-166,98, -210,-1087,-2253,-3094,-3031,-2048,-359,1546,3284,4373, 4471,3578,2014,285,-1139,-1928,-1983,-1481,-732,-47, 227,-106,-1112,-2324,-3101,-2978,-1994,-336,1566,3295, 4344,4387,3446,1871,164,-1212,-1941,-1916,-1401,-665, 36,325,-116,-1233,-2451,-3150,-2980,-1975,-313,1611, 3330,4335,4325,3349,1790,90,-1273,-1926,-1867,-1367, -638,87,327,-222,-1371,-2560,-3197,-2992,-1950,-270, 1679,3377,4312,4274,3301,1742,63,-1244,-1832,-1812, -1323,-548,197,345,-298,-1467,-2626,-3224,-2993,-1922, -178,1812,3475,4360,4300,3309,1693,32,-1200,-1782, -1785,-1239,-399,300,353,-370,-1579,-2698,-3261,-3005, -1904,-108,1879,3497,4366,4280,3205,1589,-22,-1196, -1784,-1763,-1145,-280,359,314,-461,-1674,-2766,-3303, -3013,-1865,-42,1902,3509,4371,4211,3076,1490,-52, -1221,-1807,-1727,-1059,-165,434,286,-546,-1763,-2868, -3408,-3048,-1831,10,1974,3618,4447,4192,3049,1499, -7,-1198,-1791,-1640,-928,-52,448,239,-632,-1867, -3005,-3493,-3061,-1806,27,2025,3672,4417,4119,2984, 1474,-22,-1218,-1761,-1527,-759,80,477,238,-691, -1983,-3131,-3559,-3089,-1821,51,2052,3642,4313,3990, 2882,1395,-114,-1303,-1765,-1428,-626,176,543,246, -741,-2092,-3206,-3606,-3127,-1811,112,2098,3622,4266, 3932,2853,1400,-138,-1294,-1671,-1267,-499,270,621, 239,-806,-2147,-3233,-3628,-3128,-1763,183,2158,3620, 4205,3875,2820,1356,-182,-1258,-1550,-1137,-344,432, 727,264,-848,-2194,-3280,-3689,-3145,-1716,253,2228, 3634,4189,3874,2798,1266,-230,-1247,-1512,-1089,-253, 490,710,191,-953,-2319,-3402,-3774,-3163,-1648,349, 2259,3639,4230,3918,2800,1230,-211,-1196,-1437,-1000, -184,504,629,55,-1113,-2481,-3555,-3874,-3159,-1552, 438,2300,3679,4274,3903,2720,1163,-263,-1209,-1376, -898,-91,551,631,-16,-1212,-2602,-3686,-3947,-3129, -1478,474,2352,3756,4326,3890,2676,1126,-318,-1220, -1325,-806,-2,591,616,-75,-1293,-2731,-3808,-3983, -3076,-1449,485,2382,3780,4311,3836,2623,1075,-350, -1170,-1225,-662,147,692,664,-38,-1339,-2840,-3879, -3975,-3044,-1448,492,2392,3762,4255,3753,2510,962, -409,-1143,-1104,-489,303,813,791,30,-1402,-2931, -3908,-3941,-3023,-1427,530,2432,3799,4246,3712,2441, 896,-425,-1097,-980,-365,386,895,846,-33,-1540, -3038,-3943,-3944,-3013,-1401,575,2487,3831,4234,3664, 2358,781,-486,-1064,-928,-336,421,948,815,-183, -1710,-3173,-4040,-4017,-3072,-1432,576,2487,3808,4195, 3609,2256,694,-480,-970,-841,-229,586,1102,846, -231,-1786,-3245,-4093,-4062,-3102,-1423,626,2531,3835, 4220,3587,2188,672,-413,-885,-736,-70,771,1228, 883,-267,-1853,-3300,-4118,-4087,-3100,-1388,663,2556, 3843,4183,3438,2020,573,-453,-908,-706,16,854, 1221,800,-413,-1986,-3386,-4193,-4115,-3067,-1348,692, 2590,3882,4129,3324,1969,600,-398,-827,-577,181, 983,1254,739,-514,-2076,-3466,-4237,-4101,-3030,-1327, 760,2716,3970,4128,3317,2011,657,-349,-748,-444, 340,1089,1277,691,-596,-2182,-3593,-4320,-4152,-3096, -1369,794,2768,3942,4036,3222,1922,580,-421,-747, -339,470,1164,1282,660,-677,-2300,-3693,-4390,-4217, -3153,-1347,856,2770,3883,3945,3145,1846,525,-452, -691,-185,618,1254,1343,671,-712,-2356,-3708,-4384, -4245,-3140,-1259,938,2798,3861,3887,3070,1772,445, -461,-598,-55,727,1343,1417,662,-764,-2364,-3695, -4393,-4251,-3099,-1155,1022,2832,3848,3860,3014,1681, 358,-471,-527,45,848,1463,1492,667,-767,-2359, -3698,-4422,-4260,-3057,-1067,1094,2854,3826,3825,2928, 1568,288,-467,-494,128,992,1569,1494,633,-793, -2412,-3783,-4500,-4296,-3016,-1015,1108,2828,3774,3721, 2744,1387,179,-495,-473,213,1092,1622,1470,583, -855,-2481,-3874,-4579,-4292,-2952,-968,1105,2821,3757, 3625,2601,1262,78,-552,-432,312,1165,1645,1469, 578,-875,-2528,-3932,-4593,-4229,-2868,-912,1157,2876, 3756,3548,2526,1215,38,-513,-304,473,1283,1717, 1500,601,-909,-2625,-4030,-4622,-4184,-2811,-826,1286, 2974,3757,3492,2443,1104,-38,-478,-210,580,1377, 1813,1558,646,-911,-2685,-4048,-4587,-4145,-2782,-766, 1369,2998,3723,3434,2346,982,-79,-450,-120,685, 1471,1892,1651,696,-944,-2715,-4039,-4559,-4124,-2756, -711,1401,2988,3653,3311,2199,865,-103,-381,26, 828,1590,2027,1761,680,-1058,-2832,-4174,-4692,-4229, -2790,-707,1403,2971,3591,3180,2032,716,-181,-348, 92,868,1662,2142,1827,654,-1114,-2888,-4249,-4770, -4283,-2818,-744,1348,2908,3499,3060,1888,622,-164, -291,141,930,1769,2198,1841,614,-1166,-2936,-4279, -4770,-4230,-2741,-641,1439,2967,3502,2989,1783,603, -108,-224,204,1044,1895,2262,1820,558,-1221,-3015, -4327,-4775,-4172,-2626,-505,1587,3079,3535,2907,1699, 583,-118,-244,216,1109,1950,2302,1824,558,-1222, -3012,-4311,-4705,-4064,-2515,-406,1683,3113,3439,2753, 1602,510,-189,-301,219,1141,1968,2287,1801,513, -1286,-3058,-4318,-4642,-3989,-2436,-271,1812,3143,3351, 2653,1508,419,-278,-338,232,1159,1982,2261,1732, 439,-1396,-3151,-4347,-4634,-3959,-2350,-126,1907,3143, 3263,2562,1418,330,-334,-332,285,1218,2025,2259, 1697,361,-1490,-3220,-4362,-4647,-3948,-2263,-32,1917, 3053,3136,2428,1320,252,-361,-279,410,1359,2152, 2385,1759,305,-1542,-3271,-4437,-4745,-3983,-2221,10, 1920,2992,3072,2368,1269,237,-317,-177,539,1503, 2304,2494,1765,233,-1615,-3355,-4559,-4828,-3954,-2145, 94,1967,3001,3058,2338,1217,217,-259,-63,652, 1650,2469,2555,1749,197,-1681,-3469,-4680,-4876,-3916, -2073,142,1973,2970,2999,2225,1091,146,-285,-50, 709,1764,2573,2589,1756,225,-1701,-3533,-4739,-4884, -3864,-1992,177,1984,2948,2928,2128,1020,119,-286, -27,802,1869,2615,2596,1733,187,-1771,-3616,-4777, -4846,-3756,-1891,264,2036,2975,2877,2072,1003,103, -301,22,907,1949,2632,2608,1730,126,-1874,-3748, -4844,-4823,-3715,-1846,329,2099,2966,2831,2017,944, 29,-344,49,957,1980,2635,2589,1706,47,-2010, -3860,-4880,-4790,-3698,-1809,368,2101,2901,2761,1925, 828,-60,-320,135,1051,2067,2725,2675,1765,37, -2065,-3858,-4835,-4724,-3607,-1689,421,2056,2806,2651, 1782,667,-167,-351,192,1151,2148,2836,2799,1846, 37,-2083,-3837,-4805,-4688,-3498,-1572,475,2059,2762, 2565,1645,526,-250,-363,237,1186,2185,2903,2831, 1780,-88,-2184,-3935,-4883,-4716,-3460,-1567,472,2048, 2731,2493,1538,446,-243,-241,364,1276,2338,3038, 2870,1705,-199,-2294,-4058,-4967,-4726,-3443,-1553,480, 2032,2698,2410,1430,400,-173,-124,478,1468,2576, 3229,2986,1773,-162,-2306,-4078,-4949,-4674,-3387,-1500, 510,2038,2635,2265,1269,308,-197,-161,472,1543, 2663,3305,3049,1820,-161,-2352,-4098,-4919,-4622,-3333, -1433,583,2094,2592,2154,1190,279,-234,-207,486, 1585,2681,3293,2986,1709,-315,-2488,-4174,-4925,-4589, -3302,-1370,656,2104,2517,2069,1149,272,-242,-164, 578,1711,2784,3344,2974,1622,-444,-2600,-4247,-4967, -4610,-3310,-1332,682,2026,2372,1933,1025,146,-337, -179,628,1798,2874,3413,2997,1588,-537,-2685,-4276, -4969,-4588,-3227,-1207,766,2025,2343,1887,971,97, -360,-161,688,1864,2928,3461,2992,1522,-607,-2713, -4246,-4937,-4509,-3070,-1062,840,2052,2344,1853,934, 89,-331,-105,751,1935,3042,3554,3022,1485,-623, -2689,-4248,-4913,-4424,-2929,-964,857,2033,2262,1718, 787,-41,-402,-107,798,2023,3181,3638,3021,1441, -651,-2718,-4299,-4880,-4298,-2765,-809,937,2039,2221, 1621,669,-139,-456,-113,836,2107,3238,3598,2916, 1355,-726,-2796,-4344,-4850,-4198,-2662,-734,965,2001, 2127,1507,569,-194,-496,-140,857,2177,3250,3531, 2832,1260,-847,-2936,-4433,-4883,-4198,-2662,-759,935, 1954,2027,1383,488,-258,-520,-99,983,2321,3330, 3582,2849,1221,-924,-3030,-4479,-4868,-4130,-2598,-695, 980,1945,1976,1317,433,-328,-525,-16,1137,2475, 3460,3689,2918,1241,-950,-3051,-4439,-4768,-4023,-2503, -624,998,1876,1891,1239,319,-455,-613,-29,1170, 2500,3501,3731,2950,1213,-997,-3049,-4370,-4668,-3924, -2375,-526,1004,1820,1813,1129,173,-569,-664,7, 1224,2552,3565,3782,2959,1178,-1046,-3039,-4316,-4592, -3798,-2225,-417,1051,1823,1772,1048,85,-611,-610, 127,1338,2686,3693,3857,2935,1096,-1147,-3148,-4423, -4654,-3805,-2241,-476,971,1762,1687,938,-7,-635, -549,228,1458,2823,3825,3925,2895,1037,-1217,-3228, -4471,-4633,-3765,-2255,-529,877,1634,1507,726,-195, -736,-593,217,1490,2885,3878,3924,2857,990,-1252, -3222,-4379,-4465,-3586,-2104,-399,983,1660,1446,608, -291,-786,-627,195,1514,2908,3855,3853,2775,875, -1369,-3283,-4345,-4364,-3450,-1938,-236,1141,1754,1470, 602,-263,-733,-566,282,1648,3018,3889,3837,2692, 723,-1535,-3406,-4404,-4390,-3466,-1934,-204,1162,1704, 1384,535,-295,-749,-535,394,1782,3142,3983,3871, 2654,612,-1647,-3475,-4440,-4418,-3498,-1927,-164,1149, 1632,1287,464,-381,-814,-522,470,1874,3253,4091, 3927,2644,568,-1667,-3433,-4369,-4338,-3397,-1781,-59, 1158,1562,1203,361,-482,-864,-506,535,1963,3352, 4161,3964,2611,514,-1677,-3394,-4337,-4304,-3333,-1725, -82,1062,1427,1045,185,-616,-937,-525,578,2053, 3449,4225,3956,2538,435,-1727,-3436,-4390,-4322,-3307, -1707,-113,997,1353,922,58,-712,-985,-515,636, 2160,3578,4332,3974,2509,423,-1735,-3468,-4397,-4273, -3238,-1659,-92,990,1304,827,-39,-760,-945,-431, 768,2341,3775,4467,4032,2536,456,-1712,-3455,-4344, -4190,-3164,-1628,-101,945,1180,662,-212,-892,-1006, -425,843,2492,3915,4524,4030,2532,447,-1738,-3464, -4306,-4127,-3080,-1568,-83,908,1069,496,-383,-1037, -1153,-524,828,2503,3867,4420,3928,2432,344,-1814, -3465,-4248,-4042,-2964,-1444,33,966,1070,447,-427, -1083,-1199,-513,907,2564,3874,4379,3888,2342,224, -1896,-3476,-4199,-3943,-2831,-1293,167,1036,1064,411, -482,-1154,-1215,-425,1032,2657,3939,4430,3889,2304, 151,-1958,-3496,-4169,-3867,-2735,-1190,215,1015,999, 319,-595,-1262,-1253,-394,1062,2679,3944,4413,3831, 2230,90,-1976,-3460,-4117,-3774,-2633,-1113,244,984, 942,212,-738,-1370,-1289,-378,1106,2727,3987,4422, 3812,2168,54,-1973,-3450,-4071,-3668,-2502,-1029,290, 1000,895,103,-880,-1484,-1321,-349,1156,2791,4047, 4453,3785,2114,19,-1980,-3432,-3997,-3537,-2373,-935, 335,1011,840,-26,-1002,-1545,-1317,-317,1198,2845, 4085,4451,3741,2079,0,-2009,-3418,-3917,-3436,-2288, -861,374,970,708,-208,-1185,-1640,-1360,-317,1251, 2902,4140,4471,3740,2099,-24,-2038,-3406,-3860,-3385, -2236,-813,406,945,589,-348,-1286,-1689,-1372,-292, 1323,2969,4159,4450,3703,2054,-103,-2058,-3356,-3777, -3299,-2143,-705,487,958,541,-406,-1293,-1678,-1324, -209,1418,3035,4159,4412,3635,1932,-212,-2121,-3368, -3747,-3240,-2059,-598,538,924,458,-478,-1337,-1712, -1298,-120,1490,3080,4165,4376,3533,1771,-357,-2214, -3413,-3750,-3193,-1961,-511,572,881,395,-543,-1387, -1718,-1240,-31,1552,3119,4185,4346,3436,1640,-466, -2270,-3418,-3710,-3104,-1826,-378,655,910,392,-565, -1414,-1678,-1162,63,1636,3189,4225,4320,3364,1555, -539,-2321,-3462,-3703,-3039,-1724,-312,672,906,358, -611,-1443,-1665,-1121,116,1695,3241,4246,4270,3265, 1473,-609,-2380,-3505,-3678,-2948,-1651,-276,663,809, 227,-756,-1551,-1735,-1140,130,1720,3291,4259,4241, 3202,1430,-626,-2397,-3493,-3584,-2831,-1557,-201,665, 731,71,-920,-1682,-1813,-1179,123,1762,3360,4290, 4244,3202,1435,-633,-2407,-3455,-3515,-2751,-1461,-148, 664,685,-15,-985,-1708,-1808,-1158,155,1835,3385, 4252,4169,3123,1340,-757,-2475,-3435,-3471,-2656,-1344, -56,693,649,-63,-1027,-1703,-1787,-1103,247,1938, 3415,4225,4105,3033,1207,-889,-2541,-3455,-3426,-2566, -1243,40,725,609,-96,-1053,-1716,-1762,-1004,410, 2096,3546,4345,4169,3042,1178,-892,-2524,-3406,-3329, -2458,-1126,110,725,531,-182,-1135,-1799,-1792,-952, 485,2162,3615,4390,4150,2964,1100,-954,-2556,-3381, -3265,-2356,-1006,149,705,493,-269,-1256,-1901,-1842, -955,479,2137,3583,4332,4065,2815,952,-1083,-2647, -3437,-3272,-2284,-959,161,682,480,-317,-1322,-1945, -1828,-920,534,2208,3632,4350,4036,2735,833,-1182, -2724,-3469,-3212,-2207,-905,173,657,395,-448,-1416, -1996,-1808,-892,595,2300,3721,4400,4008,2697,790, -1230,-2753,-3409,-3111,-2122,-845,192,620,310,-544, -1477,-1984,-1759,-809,708,2427,3855,4472,4049,2730, 811,-1218,-2695,-3288,-2995,-2011,-762,238,620,234, -628,-1558,-2009,-1765,-779,783,2509,3893,4455,4026, 2683,741,-1260,-2667,-3208,-2870,-1886,-641,306,639, 174,-729,-1631,-2063,-1807,-793,804,2506,3816,4366, 3905,2518,574,-1375,-2703,-3180,-2810,-1818,-573,349, 596,104,-810,-1685,-2116,-1835,-764,848,2527,3822, 4374,3856,2418,452,-1450,-2743,-3175,-2775,-1753,-504, 383,546,30,-888,-1759,-2176,-1829,-702,907,2586, 3879,4377,3790,2321,361,-1472,-2715,-3111,-2676,-1617, -401,410,531,7,-923,-1792,-2152,-1758,-609,1001, 2683,3959,4373,3737,2222,287,-1498,-2686,-3050,-2562, -1473,-317,436,523,-43,-1000,-1856,-2177,-1748,-578, 1056,2748,4008,4399,3706,2162,252,-1517,-2697,-3001, -2435,-1366,-242,479,499,-143,-1120,-1956,-2235,-1769, -559,1098,2801,4044,4380,3628,2075,190,-1578,-2725, -2956,-2364,-1316,-213,468,458,-239,-1216,-2041,-2280, -1775,-550,1131,2849,4068,4333,3549,2005,124,-1639, -2724,-2889,-2291,-1246,-161,466,408,-333,-1316,-2121, -2358,-1811,-558,1175,2917,4072,4297,3502,1943,51, -1670,-2683,-2798,-2178,-1108,-41,529,393,-383,-1378, -2143,-2360,-1808,-489,1279,2977,4082,4255,3440,1832, -60,-1732,-2691,-2754,-2112,-1011,41,581,393,-413, -1391,-2139,-2341,-1769,-402,1341,2982,4060,4206,3337, 1719,-159,-1757,-2650,-2673,-2004,-897,140,631,379, -430,-1388,-2160,-2338,-1705,-310,1405,3025,4072,4143, 3211,1575,-276,-1810,-2647,-2623,-1901,-776,216,633, 357,-453,-1436,-2212,-2339,-1647,-240,1483,3094,4098, 4099,3112,1448,-371,-1876,-2680,-2625,-1861,-737,204, 594,303,-540,-1552,-2301,-2373,-1641,-240,1499,3112, 4061,4036,3014,1364,-416,-1886,-2644,-2529,-1734,-634, 264,619,282,-594,-1613,-2321,-2337,-1568,-152,1577, 3147,4047,3935,2875,1223,-523,-1955,-2647,-2423,-1595, -511,369,679,293,-620,-1662,-2327,-2309,-1506,-51, 1674,3208,4046,3874,2794,1161,-576,-1964,-2581,-2331, -1511,-456,394,664,226,-708,-1740,-2378,-2325,-1488, 1,1761,3280,4045,3852,2775,1119,-607,-1934,-2487, -2238,-1430,-382,423,642,158,-785,-1787,-2396,-2325, -1443,89,1866,3331,4041,3811,2687,964,-755,-2005, -2508,-2228,-1374,-315,471,649,125,-839,-1817,-2402, -2317,-1369,191,1939,3356,4040,3767,2572,855,-833, -2048,-2507,-2182,-1298,-243,515,615,57,-915,-1880, -2445,-2301,-1301,262,1974,3367,4025,3693,2466,772, -885,-2051,-2463,-2103,-1204,-144,569,606,32,-936, -1909,-2461,-2251,-1242,318,2025,3390,3988,3596,2336, 658,-973,-2084,-2448,-2053,-1114,-76,598,635,50, -941,-1930,-2451,-2201,-1166,395,2103,3441,3981,3539, 2240,557,-1045,-2133,-2458,-2017,-1069,-55,585,610, -11,-1021,-2006,-2452,-2151,-1062,531,2229,3528,3999, 3493,2166,478,-1110,-2171,-2446,-1959,-1034,-45,572, 543,-129,-1148,-2101,-2506,-2147,-1024,596,2285,3547, 3964,3401,2077,424,-1139,-2150,-2353,-1827,-912,65, 646,559,-165,-1204,-2146,-2540,-2147,-1007,651,2353, 3573,3940,3335,2011,329,-1206,-2138,-2298,-1742,-819, 152,693,568,-194,-1256,-2165,-2504,-2099,-916,776, 2486,3656,3972,3337,1957,240,-1260,-2138,-2293,-1712, -782,157,653,481,-313,-1353,-2211,-2510,-2061,-815, 884,2550,3686,3965,3289,1860,156,-1293,-2138,-2255, -1662,-737,202,637,397,-429,-1465,-2296,-2586,-2058, -744,972,2601,3728,3965,3229,1777,90,-1324,-2132, -2200,-1614,-640,275,644,339,-514,-1566,-2400,-2655, -2071,-704,1017,2674,3781,3965,3179,1700,33,-1343, -2120,-2160,-1535,-535,310,623,292,-563,-1626,-2468, -2657,-2038,-672,1060,2711,3771,3891,3072,1584,-51, -1395,-2149,-2139,-1463,-482,304,593,253,-613,-1690, -2485,-2617,-1969,-592,1168,2782,3816,3892,3015,1533, -73,-1396,-2113,-2038,-1333,-371,385,642,247,-688, -1770,-2512,-2611,-1930,-496,1277,2883,3890,3922,3001, 1525,-59,-1357,-2022,-1892,-1178,-248,496,686,187, -796,-1885,-2607,-2698,-1977,-515,1276,2891,3841,3832, 2917,1455,-117,-1361,-1955,-1814,-1074,-151,547,659, 102,-906,-1978,-2686,-2759,-2003,-506,1304,2907,3784, 3735,2820,1360,-203,-1385,-1929,-1757,-1012,-95,545, 591,-22,-1060,-2124,-2812,-2845,-2031,-440,1399,2966, 3812,3741,2778,1311,-224,-1374,-1892,-1664,-909,-9, 579,576,-112,-1170,-2242,-2929,-2927,-2046,-392,1442, 2973,3817,3716,2718,1248,-235,-1334,-1803,-1548,-762, 131,684,625,-73,-1151,-2210,-2894,-2847,-1915,-289, 1500,3000,3793,3631,2609,1136,-322,-1374,-1783,-1485, -673,214,736,637,-69,-1163,-2233,-2893,-2791,-1833, -213,1592,3077,3820,3604,2553,1084,-375,-1397,-1761, -1414,-576,282,750,630,-104,-1234,-2339,-2964,-2791, -1818,-159,1662,3130,3808,3552,2476,996,-429,-1428, -1748,-1346,-506,323,764,619,-142,-1323,-2411,-2983, -2766,-1752,-79,1721,3147,3753,3446,2342,862,-540, -1519,-1765,-1308,-474,339,779,588,-218,-1391,-2464, -2999,-2761,-1711,-21,1753,3132,3696,3335,2228,769, -629,-1543,-1707,-1226,-406,411,811,580,-269,-1429, -2494,-3004,-2723,-1638,61,1831,3154,3684,3280,2147, 653,-707,-1522,-1625,-1147,-321,507,878,593,-312, -1487,-2536,-2995,-2687,-1558,167,1922,3213,3690,3254, 2077,585,-722,-1466,-1523,-1032,-186,609,953,602, -359,-1547,-2570,-3004,-2665,-1509,236,1945,3201,3630, 3149,1948,485,-769,-1476,-1492,-961,-91,689,988, 583,-405,-1605,-2600,-3019,-2617,-1427,295,1996,3205, 3582,3042,1798,336,-863,-1531,-1525,-955,-47,736, 990,541,-451,-1678,-2669,-3028,-2565,-1341,376,2077, 3271,3584,2989,1711,248,-922,-1547,-1523,-918,-4, 752,949,485,-532,-1767,-2730,-3018,-2516,-1280,461, 2160,3309,3569,2923,1625,187,-972,-1565,-1517,-879, 43,768,929,446,-613,-1827,-2744,-3000,-2461,-1188, 566,2256,3349,3545,2851,1547,138,-997,-1561,-1457, -786,125,850,994,444,-640,-1835,-2702,-2922,-2345, -1052,684,2347,3375,3509,2776,1486,76,-1039,-1548, -1395,-721,179,880,995,388,-716,-1884,-2723,-2892, -2286,-964,777,2412,3378,3456,2720,1427,11,-1080, -1558,-1388,-708,198,859,923,286,-827,-1990,-2803, -2934,-2286,-917,868,2469,3373,3424,2647,1340,-68, -1113,-1574,-1382,-693,230,853,874,195,-920,-2069, -2823,-2914,-2211,-794,1003,2554,3397,3389,2533,1215, -157,-1154,-1571,-1339,-608,304,883,856,124,-975, -2099,-2836,-2887,-2125,-661,1095,2622,3445,3375,2481, 1141,-202,-1178,-1547,-1281,-522,376,921,830,81, -1021,-2145,-2872,-2860,-2033,-560,1171,2683,3453,3338, 2419,1066,-279,-1226,-1551,-1254,-474,423,933,798, 38,-1088,-2222,-2915,-2824,-1950,-451,1296,2757,3466, 3306,2352,992,-337,-1259,-1561,-1228,-410,448,908, 754,-38,-1189,-2308,-2964,-2824,-1894,-350,1405,2829, 3496,3298,2311,948,-368,-1270,-1542,-1165,-349,460, 874,687,-132,-1310,-2412,-3000,-2825,-1823,-254,1481, 2887,3526,3266,2246,889,-433,-1302,-1514,-1094,-302, 484,893,671,-194,-1391,-2475,-3029,-2801,-1781,-199, 1532,2914,3512,3230,2206,857,-437,-1261,-1422,-989, -202,582,947,669,-257,-1480,-2566,-3090,-2815,-1772, -146,1590,2924,3492,3186,2162,793,-463,-1211,-1334, -883,-102,658,982,634,-343,-1581,-2644,-3115,-2814, -1711,-48,1651,2954,3488,3143,2087,701,-511,-1211, -1306,-817,-50,673,971,573,-437,-1678,-2703,-3150, -2787,-1629,36,1720,3024,3508,3120,2014,648,-539, -1210,-1263,-757,31,736,983,513,-532,-1794,-2818, -3230,-2794,-1580,86,1782,3085,3531,3083,1949,591, -574,-1217,-1232,-727,96,798,983,461,-610,-1863, -2876,-3224,-2739,-1511,153,1839,3100,3490,2984,1830, 474,-643,-1244,-1238,-689,150,842,978,436,-656, -1909,-2881,-3170,-2642,-1408,267,1941,3142,3471,2909, 1729,372,-711,-1295,-1236,-633,226,904,1011,428, -698,-1972,-2905,-3163,-2605,-1348,337,2015,3170,3455, 2854,1673,342,-749,-1299,-1192,-573,286,942,1027, 395,-760,-2018,-2924,-3160,-2574,-1323,369,2025,3127, 3348,2732,1566,262,-798,-1281,-1117,-469,376,1025, 1060,361,-833,-2061,-2934,-3136,-2515,-1240,487,2127, 3162,3333,2677,1519,203,-819,-1260,-1053,-382,471, 1091,1048,291,-913,-2134,-2969,-3140,-2491,-1158,590, 2200,3200,3337,2655,1462,146,-824,-1231,-1024,-325, 527,1085,993,199,-1001,-2221,-3032,-3180,-2499,-1104, 635,2192,3172,3264,2566,1350,83,-847,-1216,-963, -231,621,1137,996,158,-1064,-2273,-3071,-3173,-2460, -1027,702,2235,3175,3224,2479,1289,55,-868,-1192, -889,-141,699,1179,956,109,-1129,-2338,-3118,-3159, -2386,-939,798,2324,3206,3204,2424,1226,-7,-899, -1181,-843,-57,760,1165,884,21,-1226,-2455,-3208, -3173,-2334,-857,899,2406,3228,3181,2372,1154,-64, -923,-1174,-778,45,827,1181,879,-29,-1301,-2530, -3239,-3155,-2278,-770,988,2464,3246,3168,2335,1119, -103,-943,-1142,-708,110,854,1193,864,-100,-1398, -2590,-3262,-3138,-2217,-680,1067,2510,3254,3140,2281, 1037,-191,-1006,-1119,-648,150,904,1222,843,-168, -1470,-2653,-3292,-3124,-2174,-615,1123,2531,3231,3076, 2194,913,-290,-1055,-1112,-577,235,999,1282,859, -194,-1517,-2710,-3324,-3127,-2147,-575,1169,2543,3210, 3032,2124,828,-346,-1048,-1076,-516,306,1047,1278, 819,-285,-1637,-2807,-3386,-3153,-2122,-525,1201,2565, 3211,3018,2084,794,-363,-986,-985,-430,382,1102, 1289,791,-355,-1707,-2840,-3391,-3115,-2028,-439,1254, 2606,3237,2979,2018,725,-392,-965,-928,-350,458, 1157,1313,762,-407,-1761,-2873,-3380,-3040,-1914,-331, 1341,2672,3247,2909,1908,614,-459,-1007,-934,-323, 520,1189,1301,699,-485,-1850,-2942,-3393,-3016,-1870, -273,1396,2696,3220,2850,1830,577,-451,-953,-844, -210,648,1263,1333,660,-558,-1948,-3018,-3420,-3022, -1868,-258,1425,2694,3181,2776,1737,517,-461,-936, -782,-117,729,1307,1346,617,-649,-2038,-3053,-3406, -2972,-1811,-167,1506,2725,3129,2653,1585,376,-568, -1003,-795,-103,724,1319,1324,558,-716,-2077,-3044, -3348,-2892,-1719,-51,1612,2778,3098,2581,1514,293, -630,-999,-753,-56,773,1367,1321,515,-784,-2122, -3063,-3342,-2848,-1640,49,1721,2852,3129,2596,1520, 282,-617,-953,-694,29,870,1430,1329,488,-830, -2144,-3070,-3348,-2816,-1568,135,1760,2841,3085,2493, 1396,202,-653,-950,-643,118,965,1471,1319,419, -902,-2216,-3143,-3396,-2841,-1541,165,1738,2797,3018, 2368,1287,134,-679,-929,-569,224,1065,1538,1336, 379,-962,-2273,-3211,-3457,-2866,-1519,198,1784,2822, 2995,2339,1266,123,-674,-892,-518,298,1124,1560, 1288,317,-1027,-2319,-3244,-3443,-2799,-1439,289,1869, 2844,2944,2273,1186,70,-697,-874,-447,384,1176, 1534,1199,228,-1128,-2435,-3322,-3457,-2759,-1370,375, 1927,2864,2941,2250,1154,51,-677,-808,-319,511, 1264,1565,1197,208,-1188,-2507,-3370,-3472,-2732,-1313, 427,1952,2846,2895,2195,1113,11,-663,-725,-191, 641,1375,1628,1245,196,-1229,-2541,-3393,-3461,-2692, -1247,479,1962,2813,2820,2116,1024,-62,-690,-683, -123,717,1432,1660,1248,151,-1300,-2617,-3434,-3467, -2652,-1180,558,2024,2846,2826,2105,984,-98,-694, -644,-76,745,1425,1616,1135,0,-1466,-2775,-3546, -3518,-2645,-1139,597,2047,2843,2820,2039,903,-142, -684,-607,1,821,1464,1609,1076,-94,-1568,-2879, -3625,-3541,-2624,-1087,630,2053,2847,2805,1981,826, -170,-667,-557,64,876,1502,1635,1075,-120,-1595, -2901,-3618,-3499,-2539,-992,730,2146,2908,2799,1941, 783,-178,-632,-480,135,943,1552,1644,1039,-187, -1671,-2968,-3648,-3462,-2462,-902,832,2223,2924,2754, 1860,717,-189,-606,-422,216,1034,1627,1670,1027, -213,-1735,-3019,-3650,-3408,-2397,-833,877,2251,2901, 2689,1779,664,-210,-587,-368,293,1091,1662,1666, 999,-285,-1821,-3066,-3641,-3391,-2368,-784,920,2273, 2856,2583,1659,563,-281,-619,-339,358,1141,1707, 1688,962,-369,-1919,-3134,-3671,-3405,-2362,-746,963, 2270,2803,2470,1562,466,-335,-631,-319,399,1186, 1737,1699,930,-424,-1964,-3148,-3667,-3364,-2297,-667, 1051,2316,2789,2432,1502,402,-370,-607,-274,459, 1263,1791,1718,893,-488,-2016,-3174,-3667,-3326,-2218, -571,1143,2359,2760,2377,1415,320,-390,-588,-225, 529,1352,1877,1741,864,-532,-2068,-3218,-3684,-3332, -2185,-508,1167,2346,2725,2299,1339,294,-361,-536, -151,626,1457,1949,1758,837,-577,-2100,-3246,-3714, -3322,-2133,-446,1213,2349,2693,2225,1261,251,-385, -519,-91,723,1552,2004,1752,774,-643,-2186,-3318, -3768,-3307,-2079,-391,1270,2349,2638,2145,1191,202, -418,-516,-39,801,1627,2020,1716,714,-717,-2274, -3397,-3801,-3304,-2042,-333,1297,2342,2582,2074,1135, 171,-426,-500,28,909,1712,2040,1700,686,-783, -2322,-3453,-3813,-3273,-1974,-241,1348,2342,2544,2016, 1084,121,-445,-478,77,977,1744,2044,1675,626, -842,-2375,-3465,-3773,-3197,-1859,-133,1417,2360,2512, 1981,1045,100,-464,-442,138,1014,1747,2019,1632, 555,-919,-2440,-3493,-3750,-3132,-1742,-29,1485,2387, 2509,1964,1013,69,-464,-399,226,1088,1800,2042, 1617,506,-1007,-2520,-3562,-3775,-3099,-1682,38,1507, 2370,2487,1914,940,7,-467,-350,313,1169,1873, 2101,1629,477,-1072,-2576,-3592,-3771,-3046,-1626,69, 1502,2336,2408,1798,798,-100,-505,-328,355,1222, 1921,2109,1607,417,-1147,-2647,-3625,-3756,-2976,-1533, 143,1563,2369,2386,1735,728,-144,-503,-289,407, 1282,1945,2107,1557,329,-1231,-2756,-3697,-3762,-2933, -1478,181,1583,2360,2352,1676,690,-137,-478,-227, 488,1355,2012,2132,1524,275,-1303,-2809,-3725,-3717, -2870,-1424,226,1598,2330,2300,1607,653,-135,-433, -165,554,1422,2061,2150,1514,243,-1373,-2848,-3699, -3648,-2800,-1352,301,1645,2327,2255,1556,632,-117, -368,-75,649,1513,2107,2174,1500,178,-1479,-2914, -3707,-3639,-2767,-1309,343,1678,2312,2178,1464,537, -177,-401,-61,696,1550,2136,2176,1466,78,-1584, -2976,-3730,-3621,-2704,-1219,441,1743,2334,2148,1390, 466,-248,-452,-79,693,1542,2146,2171,1417,4, -1623,-2998,-3712,-3561,-2628,-1121,511,1759,2285,2061, 1283,395,-279,-435,-21,739,1609,2197,2171,1346, -85,-1703,-3051,-3736,-3554,-2588,-1060,552,1762,2233, 1985,1193,319,-286,-404,30,813,1721,2275,2190, 1300,-165,-1778,-3106,-3770,-3567,-2556,-1020,582,1763, 2208,1925,1131,273,-283,-369,86,913,1851,2393, 2228,1298,-187,-1808,-3123,-3755,-3526,-2482,-944,632, 1765,2169,1832,1070,236,-300,-350,138,1010,1935, 2476,2239,1276,-229,-1847,-3139,-3736,-3460,-2388,-847, 699,1786,2137,1782,1019,217,-309,-333,187,1087, 1993,2491,2217,1220,-303,-1902,-3184,-3766,-3448,-2368, -824,712,1761,2058,1705,942,161,-344,-317,251, 1175,2069,2492,2183,1149,-405,-2009,-3283,-3826,-3456, -2344,-783,747,1740,1996,1625,887,86,-393,-316, 301,1258,2130,2510,2166,1106,-469,-2081,-3325,-3807, -3393,-2243,-682,796,1728,1955,1566,828,20,-430, -307,359,1332,2173,2523,2159,1063,-523,-2116,-3332, -3765,-3319,-2130,-579,868,1754,1954,1547,770,-14, -439,-276,440,1399,2226,2558,2148,996,-592,-2174, -3364,-3751,-3253,-2024,-457,961,1809,1995,1549,721, -60,-446,-241,489,1438,2263,2564,2114,936,-670, -2246,-3409,-3757,-3212,-1962,-411,962,1802,1968,1488, 657,-124,-454,-196,557,1522,2322,2586,2076,874, -755,-2338,-3468,-3766,-3167,-1896,-382,970,1788,1911, 1400,562,-192,-485,-182,601,1590,2371,2594,2030, 800,-831,-2424,-3506,-3744,-3084,-1810,-307,1023,1794, 1873,1310,449,-264,-521,-182,630,1631,2379,2566, 1999,727,-922,-2501,-3531,-3696,-3007,-1740,-224,1078, 1820,1849,1257,395,-288,-514,-112,738,1744,2481, 2643,2058,753,-933,-2508,-3495,-3645,-2982,-1722,-208, 1085,1803,1781,1183,335,-317,-493,-38,840,1835, 2567,2703,2088,727,-985,-2525,-3477,-3625,-2953,-1685, -188,1096,1754,1692,1056,223,-410,-517,-30,872, 1862,2589,2711,2026,633,-1085,-2580,-3494,-3604,-2901, -1604,-120,1133,1722,1617,960,123,-463,-522,1, 916,1912,2629,2707,1947,547,-1166,-2628,-3505,-3589, -2861,-1547,-68,1141,1684,1533,882,57,-473,-489, 68,1001,2000,2702,2731,1914,476,-1219,-2643,-3497, -3553,-2796,-1477,3,1166,1672,1478,795,15,-489, -466,124,1089,2121,2814,2799,1934,452,-1232,-2652, -3506,-3536,-2758,-1424,42,1179,1645,1408,693,-39, -504,-447,177,1172,2221,2882,2792,1868,360,-1335, -2744,-3564,-3546,-2711,-1368,101,1214,1616,1337,635, -81,-490,-404,262,1290,2324,2917,2760,1805,272, -1423,-2824,-3596,-3551,-2686,-1321,146,1216,1573,1264, 576,-114,-500,-397,317,1396,2424,2974,2772,1792, 243,-1453,-2862,-3615,-3551,-2674,-1302,146,1167,1488, 1167,489,-172,-556,-403,360,1481,2497,3012,2767, 1737,155,-1553,-2940,-3663,-3546,-2624,-1242,187,1157, 1434,1095,427,-225,-575,-360,460,1582,2579,3060, 2774,1700,95,-1607,-2978,-3677,-3522,-2563,-1158,233, 1142,1379,1039,389,-265,-593,-317,548,1665,2644, 3100,2759,1655,60,-1624,-2972,-3643,-3453,-2455,-1048, 305,1151,1357,1008,325,-328,-627,-298,596,1723, 2689,3106,2726,1607,7,-1666,-2994,-3643,-3403,-2373, -987,321,1142,1326,950,220,-422,-661,-303,613, 1749,2729,3125,2721,1597,-5,-1674,-2987,-3599,-3309, -2268,-920,331,1118,1277,865,124,-496,-684,-281, 667,1824,2789,3158,2732,1583,-33,-1710,-2989,-3546, -3206,-2147,-833,383,1139,1266,803,56,-544,-692, -236,756,1916,2852,3154,2708,1538,-109,-1792,-3034, -3533,-3167,-2126,-838,353,1074,1152,668,-49,-608, -699,-184,834,2001,2901,3171,2697,1507,-168,-1841, -3035,-3485,-3092,-2078,-801,355,1017,1028,515,-193, -711,-748,-178,865,2046,2929,3212,2728,1492,-212, -1864,-3015,-3429,-3025,-2003,-730,399,1000,974,420, -292,-784,-773,-163,903,2076,2965,3236,2703,1427, -289,-1902,-2997,-3374,-2967,-1923,-656,432,985,902, 325,-378,-840,-772,-121,957,2129,3014,3268,2671, 1346,-354,-1941,-3004,-3326,-2886,-1828,-551,502,1002, 869,251,-473,-913,-802,-135,960,2156,3050,3283, 2647,1310,-380,-1939,-2976,-3248,-2787,-1723,-464,556, 1007,858,200,-528,-916,-774,-98,1001,2210,3107, 3281,2598,1237,-442,-1959,-2952,-3198,-2690,-1615,-379, 604,1017,802,124,-587,-935,-761,-70,1052,2275, 3139,3270,2543,1138,-529,-2049,-2995,-3202,-2653,-1567, -322,619,970,688,-21,-690,-1021,-836,-113,1063, 2322,3154,3248,2496,1089,-589,-2093,-3000,-3165,-2613, -1516,-271,617,907,586,-123,-752,-1059,-874,-102, 1109,2382,3187,3215,2428,1015,-649,-2104,-2977,-3109, -2545,-1406,-178,673,913,547,-147,-764,-1053,-835, -15,1216,2483,3251,3224,2390,955,-700,-2128,-2951, -3055,-2458,-1304,-96,705,888,495,-197,-805,-1081, -801,76,1324,2585,3312,3257,2381,921,-728,-2134, -2931,-3002,-2375,-1216,-25,714,852,444,-252,-865, -1122,-790,133,1385,2630,3324,3251,2340,878,-768, -2151,-2951,-2969,-2309,-1138,31,725,829,407,-288, -923,-1138,-783,157,1433,2651,3306,3175,2229,752, -886,-2237,-2996,-2956,-2232,-1065,65,707,777,329, -390,-1024,-1211,-819,163,1473,2684,3292,3112,2130, 648,-977,-2317,-3016,-2930,-2152,-999,93,710,750, 268,-489,-1100,-1278,-827,183,1506,2700,3304,3090, 2095,615,-1002,-2312,-2970,-2840,-2045,-915,138,732, 740,221,-540,-1123,-1253,-753,301,1637,2796,3385, 3117,2109,591,-1007,-2295,-2903,-2717,-1930,-806,200, 746,706,153,-606,-1159,-1249,-704,416,1760,2896, 3421,3123,2094,542,-1060,-2307,-2850,-2628,-1833,-733, 244,743,662,73,-705,-1255,-1299,-693,459,1802, 2912,3401,3084,2026,440,-1184,-2381,-2876,-2627,-1813, -727,230,720,606,-21,-785,-1323,-1300,-648,541, 1879,2966,3434,3111,1990,374,-1244,-2406,-2878,-2614, -1800,-742,196,634,467,-180,-941,-1435,-1355,-645, 593,1941,3020,3487,3135,1964,352,-1225,-2335,-2786, -2507,-1713,-678,223,597,370,-302,-1075,-1518,-1386, -604,639,1999,3089,3529,3101,1894,293,-1263,-2345, -2757,-2446,-1634,-585,294,637,382,-314,-1091,-1494, -1317,-514,716,2088,3181,3573,3079,1841,225,-1310, -2365,-2762,-2422,-1582,-541,307,618,331,-397,-1154, -1523,-1290,-447,826,2203,3301,3660,3107,1821,190, -1318,-2353,-2730,-2359,-1516,-485,318,590,234,-524, -1246,-1568,-1295,-399,916,2303,3401,3709,3103,1777, 139,-1373,-2389,-2705,-2335,-1500,-482,299,513,91, -665,-1356,-1622,-1311,-402,938,2359,3400,3641,3015, 1687,50,-1442,-2400,-2671,-2297,-1460,-451,291,423, -37,-793,-1459,-1685,-1328,-373,1014,2446,3433,3627, 2977,1624,11,-1445,-2373,-2631,-2239,-1383,-373,324, 390,-107,-862,-1510,-1722,-1342,-322,1100,2544,3510, 3678,2987,1613,3,-1433,-2347,-2594,-2186,-1315,-336, 307,312,-195,-923,-1543,-1729,-1310,-236,1209,2639, 3572,3681,2938,1549,-62,-1469,-2361,-2575,-2104,-1199, -259,306,265,-251,-967,-1591,-1741,-1258,-138,1335, 2740,3644,3719,2937,1529,-74,-1477,-2348,-2537,-2026, -1111,-205,297,223,-343,-1082,-1694,-1813,-1267,-116, 1378,2785,3657,3695,2892,1473,-114,-1502,-2344,-2483, -1950,-1043,-173,276,159,-453,-1241,-1833,-1918,-1332, -145,1384,2785,3637,3624,2804,1418,-156,-1524,-2318, -2398,-1828,-952,-128,278,107,-555,-1362,-1963,-2010, -1387,-153,1415,2825,3659,3627,2782,1425,-151,-1512, -2271,-2296,-1722,-870,-94,275,45,-637,-1437,-2008, -2001,-1325,-39,1538,2922,3695,3629,2763,1368,-214, -1547,-2253,-2214,-1647,-799,-43,273,9,-686,-1486, -2030,-1980,-1256,71,1647,2989,3721,3639,2769,1337, -245,-1525,-2171,-2126,-1549,-727,-16,227,-80,-799, -1600,-2127,-2036,-1251,125,1703,3024,3721,3631,2735, 1272,-286,-1511,-2122,-2068,-1468,-658,12,210,-158, -910,-1718,-2217,-2098,-1242,184,1735,3029,3716,3576, 2636,1167,-367,-1537,-2101,-2006,-1390,-581,78,237, -174,-966,-1785,-2277,-2117,-1211,220,1759,3047,3733, 3545,2567,1104,-406,-1542,-2082,-1954,-1330,-538,87, 204,-240,-1050,-1880,-2321,-2083,-1158,283,1846,3142, 3791,3558,2531,1057,-455,-1562,-2054,-1884,-1251,-477, 108,209,-287,-1121,-1948,-2343,-2040,-1109,344,1915, 3189,3794,3518,2444,964,-539,-1595,-2018,-1796,-1147, -349,210,266,-271,-1155,-1969,-2343,-2026,-1075,385, 1961,3203,3768,3428,2328,843,-613,-1621,-1995,-1725, -1054,-259,280,268,-327,-1250,-2041,-2357,-2029,-1044, 452,2013,3243,3754,3368,2253,761,-670,-1628,-1949, -1672,-1013,-239,281,217,-437,-1347,-2119,-2384,-2032, -1005,516,2065,3271,3736,3343,2209,712,-690,-1605, -1895,-1610,-953,-171,321,182,-505,-1422,-2166,-2418, -2040,-958,576,2155,3335,3762,3318,2163,658,-713, -1577,-1865,-1540,-840,-62,362,167,-563,-1494,-2220, -2453,-2027,-917,627,2215,3371,3763,3259,2068,586, -737,-1578,-1841,-1490,-741,11,364,129,-636,-1567, -2294,-2497,-2028,-878,684,2256,3400,3751,3201,1977, 535,-752,-1594,-1795,-1411,-647,75,371,76,-736, -1668,-2404,-2571,-2044,-848,762,2348,3484,3776,3192, 1968,534,-741,-1565,-1726,-1309,-558,122,349,15, -822,-1777,-2510,-2626,-2050,-825,811,2420,3513,3765, 3152,1929,506,-759,-1541,-1655,-1194,-455,185,372, -17,-895,-1882,-2593,-2687,-2080,-819,840,2424,3466, 3690,3046,1826,420,-840,-1548,-1601,-1096,-339,268, 423,-21,-959,-1962,-2653,-2730,-2082,-771,906,2452, 3457,3649,2994,1776,372,-843,-1505,-1499,-986,-227, 335,453,-50,-1021,-2027,-2700,-2747,-2068,-700,974, 2509,3469,3632,2971,1752,333,-837,-1444,-1394,-856, -130,417,465,-101,-1092,-2101,-2784,-2812,-2077,-657, 1039,2560,3496,3648,2971,1723,307,-835,-1405,-1338, -792,-72,448,419,-188,-1202,-2222,-2886,-2874,-2068, -614,1102,2599,3544,3681,2975,1703,309,-798,-1343, -1266,-721,-23,425,347,-299,-1335,-2364,-2985,-2905, -2035,-544,1177,2654,3573,3667,2922,1642,263,-821, -1301,-1202,-628,26,430,320,-380,-1432,-2466,-3074, -2919,-1989,-470,1243,2734,3620,3677,2888,1589,227, -839,-1277,-1143,-568,59,427,276,-450,-1539,-2581, -3144,-2924,-1955,-428,1285,2781,3641,3647,2840,1537, 180,-835,-1228,-1053,-458,181,502,303,-457,-1619, -2664,-3182,-2920,-1932,-402,1320,2794,3612,3575,2744, 1439,112,-830,-1173,-921,-311,314,616,373,-461, -1690,-2726,-3208,-2931,-1908,-373,1373,2842,3616,3559, 2700,1388,101,-794,-1088,-810,-216,384,668,369, -553,-1790,-2806,-3243,-2942,-1897,-322,1436,2879,3614, 3522,2653,1313,43,-801,-1055,-772,-176,431,677, 297,-680,-1908,-2911,-3328,-2987,-1920,-302,1455,2869, 3586,3455,2575,1216,2,-771,-991,-676,-41,566, 757,295,-724,-1984,-2981,-3411,-3030,-1912,-266,1509, 2912,3621,3467,2542,1211,29,-711,-892,-559,107, 697,833,296,-768,-2035,-3034,-3437,-3042,-1879,-223, 1549,2950,3599,3414,2447,1149,-17,-729,-867,-503, 172,724,804,211,-876,-2130,-3126,-3488,-3044,-1857, -180,1583,2979,3593,3354,2396,1129,11,-683,-784, -387,306,802,810,170,-958,-2238,-3212,-3551,-3058, -1851,-142,1655,3039,3632,3340,2379,1131,40,-625, -701,-261,435,877,820,129,-1048,-2350,-3325,-3616, -3112,-1876,-129,1690,3023,3549,3242,2286,1062,-3, -610,-625,-144,511,916,793,43,-1162,-2444,-3406, -3643,-3111,-1848,-70,1710,2978,3466,3147,2220,1012, -17,-574,-521,-15,611,980,801,3,-1235,-2500, -3437,-3659,-3095,-1790,4,1738,2972,3443,3092,2164, 968,-20,-528,-427,88,717,1060,847,-1,-1254, -2535,-3469,-3697,-3101,-1746,57,1785,3000,3441,3071, 2112,908,-47,-489,-340,207,831,1150,893,-4, -1264,-2581,-3518,-3721,-3097,-1690,107,1820,2994,3408, 3015,2037,835,-78,-475,-284,313,932,1204,880, -47,-1337,-2671,-3600,-3770,-3091,-1648,148,1816,2959, 3341,2901,1896,739,-133,-488,-235,386,996,1227, 863,-101,-1424,-2754,-3665,-3804,-3057,-1603,174,1831, 2963,3289,2802,1776,642,-196,-480,-170,465,1057, 1252,862,-108,-1476,-2809,-3719,-3801,-3010,-1550,212, 1863,2972,3241,2726,1714,608,-184,-391,-35,605, 1157,1305,869,-134,-1540,-2887,-3777,-3803,-2968,-1497, 291,1933,2989,3210,2664,1645,556,-195,-331,62, 709,1230,1370,909,-156,-1588,-2936,-3764,-3762,-2924, -1426,373,1984,2982,3162,2590,1562,485,-214,-282, 129,797,1316,1438,960,-159,-1607,-2951,-3749,-3729, -2899,-1378,411,1974,2928,3068,2474,1439,419,-196, -203,252,914,1446,1529,960,-228,-1704,-3047,-3857, -3817,-2937,-1402,399,1949,2874,2981,2352,1314,325, -209,-162,335,983,1533,1601,959,-283,-1780,-3106, -3918,-3873,-2958,-1422,377,1915,2815,2892,2250,1221, 281,-193,-121,391,1077,1606,1628,959,-323,-1837, -3173,-3944,-3849,-2908,-1324,465,1994,2867,2881,2189, 1180,289,-159,-71,464,1187,1691,1649,932,-378, -1916,-3262,-3981,-3827,-2849,-1223,572,2093,2905,2864, 2113,1137,268,-178,-62,512,1231,1741,1662,903, -416,-1940,-3267,-3959,-3762,-2760,-1140,645,2123,2863, 2762,2020,1046,209,-220,-71,549,1257,1746,1652, 880,-470,-1993,-3290,-3927,-3692,-2665,-1033,773,2194, 2862,2707,1946,965,139,-250,-57,581,1291,1738, 1629,834,-552,-2093,-3354,-3938,-3671,-2603,-934,875, 2234,2827,2630,1866,888,85,-250,1,633,1365, 1791,1637,764,-642,-2187,-3397,-3976,-3686,-2568,-875, 888,2199,2749,2518,1778,811,48,-225,110,778, 1510,1913,1715,764,-681,-2233,-3456,-4039,-3726,-2558, -849,897,2174,2706,2461,1724,782,52,-160,221, 922,1643,2007,1734,729,-750,-2323,-3562,-4128,-3746, -2531,-788,948,2173,2683,2429,1667,753,65,-76, 321,1039,1780,2092,1744,693,-822,-2417,-3673,-4195, -3773,-2504,-759,952,2152,2625,2347,1560,670,27, -64,374,1124,1871,2141,1766,701,-848,-2455,-3717, -4204,-3735,-2440,-693,978,2163,2593,2282,1497,636, 33,-38,467,1223,1935,2172,1749,657,-915,-2555, -3779,-4218,-3667,-2368,-599,1046,2202,2599,2251,1443, 595,21,-19,519,1306,1987,2205,1737,603,-998, -2658,-3891,-4261,-3676,-2331,-560,1091,2221,2568,2194, 1378,519,-34,-19,548,1356,2019,2206,1709,546, -1105,-2754,-3965,-4286,-3669,-2296,-530,1108,2200,2503, 2111,1301,450,-56,31,638,1446,2107,2269,1755, 545,-1148,-2782,-3947,-4245,-3595,-2218,-462,1111,2145, 2408,1994,1172,349,-95,67,729,1539,2218,2387, 1841,554,-1156,-2795,-3925,-4203,-3532,-2125,-400,1139, 2125,2340,1896,1065,263,-117,106,784,1600,2282, 2431,1833,485,-1236,-2887,-3979,-4237,-3523,-2103,-406, 1124,2093,2291,1819,983,245,-66,207,888,1726, 2393,2497,1830,426,-1325,-2967,-4054,-4276,-3527,-2105, -408,1116,2060,2231,1737,918,244,4,322,1065, 1938,2600,2669,1908,471,-1330,-2987,-4073,-4259,-3510, -2078,-377,1132,2028,2130,1604,798,170,-44,315, 1110,2016,2677,2721,1941,477,-1362,-3016,-4091,-4238, -3474,-2016,-315,1172,2015,2065,1507,728,137,-73, 318,1110,2018,2664,2656,1860,363,-1493,-3131,-4159, -4235,-3452,-1962,-236,1215,1998,2018,1452,711,126, -27,395,1219,2131,2749,2692,1834,280,-1584,-3223, -4208,-4270,-3453,-1943,-207,1188,1909,1900,1336,602, 23,-64,428,1304,2236,2830,2727,1836,226,-1639, -3260,-4214,-4255,-3393,-1871,-162,1183,1869,1839,1277, 551,5,-55,492,1374,2307,2877,2732,1792,166, -1674,-3276,-4181,-4194,-3285,-1766,-87,1205,1860,1804, 1239,527,21,-7,557,1457,2405,2959,2789,1778, 153,-1682,-3256,-4155,-4137,-3198,-1678,-46,1205,1805, 1700,1108,408,-67,-35,569,1534,2498,3036,2822, 1762,125,-1725,-3289,-4159,-4079,-3082,-1561,44,1240, 1785,1636,1009,311,-126,-56,589,1586,2543,3038, 2777,1691,38,-1794,-3337,-4156,-4020,-2999,-1484,84, 1243,1741,1558,914,224,-181,-86,596,1622,2562, 3015,2708,1617,-71,-1905,-3423,-4202,-4032,-3008,-1486, 62,1209,1670,1464,821,155,-212,-72,664,1715, 2649,3077,2732,1603,-116,-1984,-3494,-4230,-4023,-2957, -1437,123,1215,1631,1400,760,112,-225,-19,778, 1846,2776,3193,2822,1648,-99,-1992,-3474,-4169,-3943, -2879,-1362,156,1188,1557,1301,669,-4,-317,-45, 804,1886,2808,3230,2845,1646,-125,-1986,-3427,-4080, -3834,-2776,-1274,183,1166,1488,1207,551,-134,-401, -58,825,1917,2855,3249,2844,1631,-161,-1984,-3404, -4023,-3741,-2655,-1172,245,1193,1479,1163,478,-172, -391,1,911,2033,2970,3335,2866,1589,-235,-2073, -3471,-4095,-3779,-2677,-1197,202,1126,1411,1068,407, -209,-362,83,1021,2160,3104,3424,2889,1555,-280, -2149,-3518,-4115,-3773,-2683,-1223,128,1025,1279,897, 232,-347,-424,66,1028,2198,3149,3435,2869,1531, -297,-2157,-3493,-4009,-3637,-2554,-1106,215,1087,1264, 834,135,-410,-465,51,1033,2215,3127,3397,2802, 1432,-404,-2209,-3492,-3946,-3520,-2413,-952,364,1187, 1322,859,157,-358,-410,120,1135,2325,3185,3405, 2761,1320,-557,-2332,-3580,-3993,-3546,-2403,-937,374, 1154,1268,800,122,-361,-386,184,1250,2442,3277, 3440,2752,1254,-643,-2418,-3646,-4028,-3574,-2417,-931, 369,1114,1184,711,52,-418,-397,240,1324,2524, 3372,3504,2774,1252,-640,-2402,-3584,-3945,-3485,-2308, -820,424,1100,1114,630,-37,-470,-413,267,1388, 2612,3455,3560,2777,1221,-663,-2384,-3552,-3904,-3434, -2261,-809,363,984,972,476,-179,-563,-454,286, 1465,2691,3526,3585,2736,1165,-720,-2443,-3598,-3936, -3427,-2249,-828,304,904,865,346,-289,-637,-467, 329,1530,2783,3622,3641,2745,1168,-727,-2465,-3597, -3920,-3380,-2206,-811,297,868,795,272,-351,-643, -405,433,1642,2941,3748,3714,2785,1187,-716,-2440, -3557,-3864,-3310,-2169,-804,261,767,666,121,-466, -699,-396,478,1733,3056,3818,3738,2796,1183,-737, -2442,-3538,-3810,-3243,-2108,-779,245,699,540,-33, -600,-821,-489,440,1730,3038,3759,3681,2732,1097, -793,-2466,-3510,-3732,-3141,-1987,-681,316,722,514, -76,-628,-872,-505,472,1793,3065,3749,3652,2661, 988,-882,-2525,-3493,-3657,-3037,-1856,-558,400,741, 500,-110,-678,-892,-477,537,1890,3134,3800,3657, 2632,956,-949,-2545,-3482,-3600,-2965,-1784,-512,402, 698,422,-198,-794,-953,-492,566,1908,3144,3803, 3624,2581,900,-987,-2535,-3449,-3528,-2867,-1702,-467, 405,659,324,-309,-889,-1016,-510,593,1944,3181, 3838,3614,2535,857,-1008,-2535,-3412,-3473,-2754,-1596, -382,437,644,261,-420,-984,-1074,-508,626,2002, 3232,3868,3615,2503,844,-1009,-2516,-3360,-3377,-2640, -1510,-318,454,623,193,-513,-1065,-1109,-486,667, 2049,3282,3872,3601,2480,814,-1026,-2514,-3320,-3294, -2561,-1459,-294,433,525,40,-667,-1178,-1188,-531, 673,2097,3340,3909,3620,2492,804,-1046,-2513,-3293, -3264,-2519,-1412,-279,402,437,-75,-782,-1244,-1217, -521,704,2139,3344,3902,3586,2450,754,-1067,-2491, -3219,-3171,-2420,-1318,-206,429,426,-112,-815,-1269, -1200,-473,773,2187,3357,3875,3535,2363,644,-1153, -2533,-3217,-3125,-2372,-1228,-136,463,395,-180,-873, -1327,-1230,-462,843,2272,3446,3914,3532,2286,510, -1295,-2655,-3304,-3153,-2347,-1163,-80,464,371,-215, -903,-1352,-1223,-401,945,2369,3536,3985,3528,2218, 405,-1394,-2731,-3340,-3123,-2251,-1064,11,515,407, -198,-902,-1335,-1158,-310,1036,2448,3586,4010,3488, 2128,319,-1464,-2776,-3356,-3080,-2182,-988,54,544, 377,-250,-956,-1343,-1128,-266,1085,2509,3627,3991, 3433,2060,243,-1526,-2810,-3353,-3025,-2106,-938,75, 497,269,-384,-1084,-1436,-1183,-280,1101,2568,3661, 3985,3412,2037,236,-1523,-2788,-3285,-2938,-2034,-868, 89,457,174,-506,-1204,-1527,-1236,-292,1117,2614, 3693,3993,3400,2031,239,-1527,-2759,-3219,-2868,-1963, -824,100,433,122,-562,-1241,-1540,-1217,-253,1167, 2636,3690,3950,3314,1925,127,-1609,-2778,-3192,-2801, -1850,-748,144,432,96,-599,-1272,-1540,-1191,-187, 1246,2684,3699,3912,3227,1787,-5,-1693,-2821,-3177, -2741,-1764,-639,199,432,48,-639,-1285,-1545,-1155, -79,1393,2821,3812,3980,3251,1771,-30,-1699,-2800, -3108,-2655,-1659,-551,233,392,-40,-723,-1358,-1592, -1145,-18,1469,2884,3848,3974,3203,1713,-93,-1726, -2791,-3055,-2569,-1566,-494,230,360,-94,-809,-1462, -1654,-1146,-24,1451,2854,3791,3880,3076,1583,-220, -1817,-2836,-3067,-2531,-1539,-465,229,337,-126,-870, -1502,-1657,-1113,24,1514,2914,3810,3864,3006,1489, -322,-1894,-2883,-3059,-2495,-1488,-451,220,277,-209, -981,-1573,-1673,-1096,77,1599,2994,3856,3876,2994, 1446,-354,-1925,-2873,-3006,-2421,-1410,-415,204,224, -284,-1054,-1622,-1662,-1060,166,1707,3120,3967,3944, 3043,1492,-323,-1891,-2784,-2909,-2308,-1318,-332,230, 187,-375,-1122,-1668,-1669,-1035,229,1757,3189,4017, 3949,3018,1461,-367,-1877,-2738,-2806,-2185,-1217,-243, 270,166,-438,-1189,-1714,-1712,-1029,248,1767,3159, 3949,3850,2884,1287,-494,-1942,-2757,-2754,-2120,-1144, -196,279,142,-499,-1265,-1777,-1764,-1028,273,1812, 3168,3924,3808,2802,1171,-587,-2007,-2756,-2746,-2078, -1093,-168,270,102,-581,-1339,-1837,-1769,-1000,339, 1876,3220,3955,3790,2740,1106,-632,-2007,-2711,-2668, -1968,-992,-123,272,70,-616,-1370,-1842,-1720,-935, 441,1965,3289,3994,3764,2662,1023,-685,-2000,-2677, -2578,-1860,-882,-64,286,22,-662,-1428,-1875,-1728, -922,475,2012,3329,4008,3740,2629,982,-692,-1996, -2624,-2490,-1762,-803,7,298,-32,-730,-1500,-1924, -1755,-899,508,2063,3364,4004,3689,2562,922,-739, -2031,-2607,-2422,-1698,-751,21,280,-87,-824,-1592, -1989,-1788,-894,533,2098,3382,3986,3642,2483,861, -812,-2046,-2573,-2371,-1631,-697,34,247,-156,-929, -1697,-2056,-1829,-907,549,2143,3400,3975,3605,2440, 805,-847,-2032,-2522,-2290,-1513,-593,119,267,-187, -963,-1725,-2070,-1811,-860,622,2214,3434,3970,3564, 2352,703,-914,-2077,-2523,-2236,-1440,-516,175,296, -192,-972,-1733,-2077,-1795,-809,686,2246,3445,3943, 3504,2256,612,-964,-2063,-2457,-2138,-1329,-404,252, 319,-202,-995,-1752,-2082,-1767,-726,755,2301,3482, 3919,3415,2134,498,-1049,-2088,-2425,-2064,-1227,-304, 299,316,-233,-1044,-1790,-2092,-1731,-671,834,2358, 3511,3905,3349,2035,396,-1123,-2143,-2439,-2045,-1202, -309,271,262,-307,-1134,-1875,-2149,-1746,-675,841, 2354,3482,3839,3258,1952,336,-1148,-2118,-2373,-1941, -1111,-233,311,262,-336,-1168,-1898,-2140,-1699,-604, 915,2411,3489,3772,3144,1814,221,-1226,-2145,-2324, -1839,-997,-124,380,294,-328,-1197,-1927,-2117,-1660, -541,1000,2486,3515,3757,3103,1755,155,-1259,-2139, -2271,-1765,-925,-87,382,253,-409,-1304,-2004,-2182, -1684,-504,1049,2559,3554,3748,3091,1726,112,-1278, -2098,-2215,-1687,-848,-26,398,230,-473,-1360,-2038, -2202,-1665,-446,1121,2610,3566,3715,3013,1613,-19, -1370,-2130,-2203,-1672,-786,45,437,221,-509,-1392, -2045,-2169,-1604,-357,1198,2653,3564,3688,2930,1509, -101,-1432,-2152,-2163,-1608,-715,100,438,179,-570, -1455,-2074,-2165,-1562,-273,1269,2705,3579,3654,2866, 1432,-154,-1462,-2135,-2121,-1508,-634,157,448,174, -577,-1471,-2094,-2150,-1505,-233,1321,2731,3565,3603, 2783,1339,-241,-1502,-2135,-2088,-1447,-568,202,472, 183,-587,-1483,-2105,-2134,-1439,-171,1380,2771,3565, 3553,2697,1236,-325,-1549,-2160,-2069,-1415,-535,210, 454,143,-654,-1522,-2122,-2094,-1363,-38,1506,2878, 3637,3541,2629,1156,-387,-1594,-2175,-2048,-1380,-505, 202,409,51,-765,-1622,-2180,-2101,-1356,9,1561, 2917,3631,3510,2571,1109,-428,-1599,-2118,-1940,-1267, -396,287,447,37,-814,-1704,-2234,-2121,-1356,35, 1611,2948,3609,3454,2506,1027,-509,-1626,-2083,-1865, -1182,-320,333,469,23,-851,-1751,-2249,-2097,-1273, 144,1725,3049,3669,3463,2471,953,-584,-1671,-2091, -1860,-1156,-319,300,401,-84,-948,-1813,-2282,-2100, -1195,234,1804,3095,3685,3443,2412,881,-628,-1683, -2082,-1827,-1115,-275,303,351,-188,-1056,-1887,-2326, -2117,-1165,299,1869,3128,3690,3399,2342,820,-658, -1674,-2046,-1759,-1047,-206,323,319,-264,-1136,-1975, -2377,-2144,-1144,341,1916,3161,3688,3352,2274,753, -704,-1678,-2010,-1705,-968,-139,344,292,-314,-1189, -2049,-2422,-2129,-1112,374,1940,3146,3632,3265,2176, 657,-757,-1708,-2005,-1659,-893,-98,349,267,-355, -1254,-2090,-2428,-2080,-1051,473,2027,3222,3664,3254, 2144,639,-761,-1690,-1940,-1559,-787,-13,409,269, -398,-1308,-2125,-2432,-2057,-973,575,2133,3316,3720, 3261,2151,659,-726,-1618,-1835,-1432,-686,73,471, 247,-470,-1406,-2217,-2513,-2123,-1004,567,2138,3275, 3652,3181,2076,597,-757,-1582,-1761,-1334,-577,130, 475,196,-554,-1512,-2307,-2590,-2155,-1007,586,2157, 3245,3581,3102,1969,495,-821,-1577,-1716,-1273,-505, 167,423,113,-688,-1660,-2448,-2682,-2182,-989,645, 2219,3280,3609,3097,1929,469,-806,-1545,-1643,-1183, -441,218,422,52,-787,-1782,-2575,-2771,-2218,-980, 687,2247,3313,3613,3047,1877,453,-786,-1498,-1552, -1060,-311,327,502,104,-767,-1751,-2539,-2703,-2124, -876,761,2271,3311,3543,2947,1775,355,-849,-1505, -1511,-980,-227,386,523,101,-787,-1773,-2540,-2681, -2077,-809,809,2312,3337,3517,2932,1728,306,-883, -1482,-1457,-899,-143,427,525,47,-850,-1857,-2604, -2714,-2069,-769,869,2376,3355,3495,2855,1643,245, -912,-1476,-1413,-825,-85,465,539,33,-889,-1896, -2612,-2671,-2001,-687,950,2428,3323,3419,2714,1497, 124,-995,-1517,-1399,-791,-62,478,530,-8,-953, -1957,-2651,-2662,-1965,-619,988,2420,3282,3335,2612, 1402,31,-1028,-1505,-1332,-726,-1,523,532,-36, -1014,-2011,-2680,-2662,-1918,-541,1066,2475,3286,3303, 2553,1320,-38,-1051,-1468,-1257,-655,87,586,561, -44,-1050,-2054,-2694,-2653,-1862,-469,1161,2551,3320, 3298,2522,1265,-66,-1038,-1399,-1165,-537,203,661, 593,-58,-1086,-2092,-2704,-2641,-1823,-412,1194,2551, 3280,3221,2417,1165,-147,-1069,-1390,-1112,-457,289, 706,587,-106,-1141,-2144,-2717,-2632,-1771,-344,1236, 2569,3253,3144,2300,1028,-261,-1145,-1428,-1114,-435, 338,718,560,-159,-1198,-2199,-2745,-2602,-1696,-261, 1316,2637,3294,3120,2239,948,-332,-1184,-1425,-1093, -398,358,715,516,-216,-1271,-2258,-2778,-2577,-1638, -186,1408,2697,3315,3086,2162,867,-390,-1215,-1427, -1057,-351,383,715,499,-261,-1321,-2308,-2779,-2538, -1574,-88,1507,2750,3306,3025,2068,787,-432,-1232, -1398,-990,-261,451,777,525,-275,-1339,-2301,-2715, -2458,-1473,25,1614,2805,3308,2971,1994,714,-502, -1268,-1381,-956,-199,496,798,502,-343,-1411,-2331, -2723,-2417,-1395,123,1691,2842,3296,2932,1946,653, -559,-1287,-1388,-945,-174,523,750,439,-440,-1500, -2407,-2777,-2430,-1360,203,1732,2869,3279,2876,1878, 575,-597,-1294,-1367,-910,-154,524,729,349,-525, -1564,-2437,-2762,-2369,-1260,312,1835,2930,3280,2826, 1776,472,-653,-1315,-1355,-843,-88,554,741,293, -595,-1626,-2465,-2747,-2299,-1152,405,1931,2988,3286, 2805,1720,429,-687,-1313,-1311,-776,-14,598,750, 282,-632,-1682,-2506,-2757,-2249,-1064,502,1996,3020, 3274,2751,1646,352,-752,-1322,-1290,-747,27,622, 735,244,-675,-1754,-2560,-2764,-2206,-963,612,2094, 3076,3278,2706,1586,271,-806,-1330,-1292,-728,59, 614,699,169,-768,-1843,-2632,-2778,-2174,-885,707, 2185,3119,3287,2688,1552,223,-827,-1335,-1243,-672, 91,601,654,94,-869,-1949,-2695,-2798,-2135,-829, 796,2254,3156,3265,2642,1472,166,-869,-1340,-1204, -602,134,629,628,70,-941,-2030,-2754,-2806,-2117, -799,839,2287,3169,3255,2605,1447,163,-835,-1268, -1106,-486,235,707,634,14,-1029,-2111,-2831,-2844, -2112,-758,899,2314,3165,3244,2572,1401,124,-808, -1195,-1008,-380,329,767,635,-53,-1111,-2191,-2856, -2850,-2064,-655,982,2366,3175,3209,2512,1311,65, -835,-1190,-969,-357,351,756,610,-137,-1194,-2257, -2894,-2838,-2007,-570,1043,2422,3199,3181,2456,1246, 28,-847,-1168,-911,-285,402,778,579,-224,-1309, -2364,-2989,-2878,-1991,-529,1107,2486,3223,3164,2408, 1185,-20,-862,-1142,-871,-223,452,792,548,-277, -1379,-2423,-2999,-2854,-1934,-453,1178,2534,3214,3101, 2309,1086,-113,-919,-1164,-857,-176,503,807,542, -300,-1400,-2442,-2969,-2788,-1860,-352,1280,2616,3243, 3066,2225,984,-200,-985,-1188,-826,-105,581,846, 539,-319,-1455,-2483,-3000,-2784,-1813,-274,1339,2662, 3258,3047,2175,938,-228,-1001,-1161,-777,-63,610, 849,510,-374,-1512,-2505,-3020,-2767,-1775,-245,1349, 2613,3187,2944,2062,850,-283,-985,-1106,-697,27, 693,904,513,-412,-1562,-2533,-3006,-2719,-1695,-148, 1461,2675,3195,2905,2019,804,-312,-971,-1065,-613, 120,760,943,487,-479,-1634,-2589,-3022,-2706,-1642, -67,1539,2725,3196,2900,1971,764,-326,-998,-1054, -565,176,776,917,422,-564,-1709,-2659,-3061,-2725, -1624,-29,1536,2706,3154,2817,1865,674,-387,-1001, -1009,-477,274,860,958,422,-600,-1765,-2713,-3072, -2704,-1569,49,1594,2746,3156,2758,1814,603,-420, -970,-950,-395,354,915,979,402,-666,-1836,-2765, -3098,-2665,-1499,137,1686,2797,3148,2735,1754,542, -436,-968,-926,-342,403,915,925,296,-766,-1943, -2844,-3132,-2628,-1405,228,1770,2838,3120,2699,1688, 496,-469,-976,-877,-256,483,946,916,247,-803, -2006,-2871,-3119,-2589,-1318,323,1862,2874,3134,2671, 1674,484,-487,-950,-802,-188,537,985,914,215, -886,-2090,-2924,-3135,-2572,-1257,396,1923,2907,3145, 2624,1607,416,-548,-967,-785,-151,578,1018,911, 182,-955,-2158,-2981,-3138,-2536,-1216,443,1941,2907, 3098,2546,1491,301,-623,-991,-755,-87,669,1070, 938,179,-992,-2200,-3021,-3145,-2518,-1183,487,1972, 2901,3075,2488,1415,237,-636,-952,-698,-10,735, 1096,903,110,-1096,-2300,-3093,-3185,-2526,-1155,535, 2016,2926,3066,2465,1375,224,-604,-899,-610,84, 792,1121,875,56,-1155,-2349,-3112,-3167,-2455,-1079, 612,2063,2952,3054,2418,1323,191,-617,-870,-537, 164,843,1166,874,16,-1209,-2389,-3134,-3128,-2375, -983,703,2130,2972,3026,2342,1223,103,-677,-885, -546,181,870,1175,843,-61,-1293,-2468,-3166,-3125, -2348,-936,745,2151,2966,2963,2278,1165,84,-650, -817,-449,276,954,1198,828,-128,-1381,-2561,-3219, -3153,-2347,-915,755,2147,2933,2907,2193,1101,46, -654,-770,-376,377,1026,1229,812,-187,-1460,-2607, -3238,-3134,-2298,-843,830,2200,2910,2822,2059,951, -107,-763,-824,-374,401,1044,1235,790,-240,-1511, -2617,-3197,-3066,-2200,-741,947,2274,2917,2768,1980, 853,-179,-791,-801,-300,455,1087,1250,780,-294, -1562,-2661,-3201,-3022,-2130,-656,1052,2359,2971,2795, 1992,858,-173,-753,-746,-232,536,1145,1277,764, -310,-1595,-2684,-3217,-3016,-2078,-580,1105,2391,2951, 2736,1896,762,-227,-754,-717,-177,632,1210,1289, 731,-362,-1680,-2753,-3275,-3066,-2075,-543,1113,2366, 2908,2659,1801,687,-251,-739,-655,-88,720,1311, 1336,727,-430,-1754,-2824,-3344,-3089,-2063,-518,1147, 2371,2914,2633,1775,677,-259,-727,-617,-19,785, 1347,1337,676,-505,-1804,-2875,-3366,-3034,-1995,-429, 1218,2414,2875,2578,1701,609,-292,-725,-561,70, 858,1348,1290,575,-611,-1917,-2975,-3394,-3029,-1940, -349,1293,2455,2861,2547,1676,597,-270,-676,-461, 198,964,1417,1303,546,-670,-1978,-3031,-3422,-3043, -1890,-291,1325,2455,2843,2495,1621,552,-273,-623, -372,326,1067,1496,1344,564,-707,-2015,-3057,-3439, -3014,-1838,-231,1344,2450,2804,2418,1543,473,-333, -608,-332,387,1113,1535,1363,540,-745,-2098,-3114, -3457,-2997,-1798,-172,1414,2494,2812,2429,1527,454, -341,-579,-281,416,1120,1502,1273,401,-896,-2254, -3227,-3506,-2998,-1768,-133,1454,2511,2780,2376,1436, 388,-356,-548,-208,491,1184,1502,1226,332,-999, -2344,-3289,-3541,-2969,-1722,-93,1474,2517,2765,2317, 1366,340,-367,-520,-144,553,1247,1545,1247,307, -1034,-2376,-3299,-3525,-2911,-1622,11,1567,2579,2804, 2300,1342,330,-352,-472,-75,630,1294,1579,1224, 237,-1124,-2461,-3367,-3528,-2872,-1538,110,1648,2611, 2793,2250,1281,298,-350,-438,-13,720,1377,1631, 1230,207,-1157,-2500,-3405,-3518,-2830,-1484,161,1675, 2608,2752,2203,1214,262,-343,-392,64,793,1418, 1644,1206,154,-1229,-2573,-3432,-3499,-2782,-1443,216, 1702,2585,2678,2103,1103,171,-379,-383,111,854, 1458,1664,1194,100,-1317,-2663,-3472,-3507,-2779,-1414, 253,1712,2546,2606,1982,1002,96,-412,-385,138, 901,1511,1681,1182,61,-1377,-2684,-3480,-3495,-2748, -1347,317,1767,2561,2569,1912,942,48,-417,-347, 188,960,1585,1717,1177,-7,-1453,-2749,-3522,-3496, -2691,-1269,412,1833,2570,2523,1850,876,6,-420, -309,260,1037,1679,1768,1182,-62,-1500,-2808,-3550, -3503,-2673,-1223,454,1822,2544,2476,1800,835,10, -392,-249,370,1143,1761,1813,1154,-85,-1537,-2824, -3555,-3492,-2627,-1159,500,1831,2529,2424,1733,773, -39,-409,-206,439,1220,1794,1818,1110,-152,-1613, -2885,-3609,-3516,-2588,-1108,550,1851,2499,2343,1642, 700,-88,-408,-169,501,1285,1834,1803,1060,-233, -1701,-2964,-3662,-3523,-2566,-1057,583,1856,2458,2269, 1569,657,-97,-383,-123,592,1379,1900,1824,1023, -289,-1778,-3044,-3694,-3494,-2505,-984,629,1894,2442, 2239,1519,599,-130,-394,-95,636,1424,1919,1804, 974,-339,-1831,-3069,-3665,-3437,-2420,-877,722,1937, 2428,2212,1476,556,-150,-381,-27,695,1461,1932, 1778,926,-410,-1909,-3100,-3668,-3397,-2328,-762,829, 1972,2448,2199,1433,528,-156,-349,35,784,1530, 1991,1785,892,-498,-2005,-3182,-3721,-3384,-2283,-724, 865,1973,2446,2164,1388,466,-168,-311,90,870, 1609,2030,1803,872,-542,-2056,-3236,-3727,-3356,-2245, -677,878,1972,2377,2058,1262,332,-248,-328,127, 913,1676,2045,1805,825,-594,-2121,-3279,-3739,-3322, -2168,-597,938,2027,2362,2011,1185,276,-277,-334, 177,967,1732,2088,1791,745,-689,-2221,-3342,-3763, -3309,-2125,-571,955,2026,2344,1970,1148,259,-266, -286,256,1060,1805,2135,1786,728,-758,-2285,-3388, -3774,-3277,-2081,-510,1010,2034,2326,1923,1092,249, -270,-237,295,1126,1852,2156,1793,725,-813,-2344, -3438,-3759,-3237,-2011,-404,1075,2058,2313,1876,1065, 266,-234,-163,389,1229,1908,2195,1787,663,-889, -2418,-3489,-3745,-3207,-1962,-357,1084,2046,2261,1790, 972,181,-261,-162,439,1268,1944,2207,1753,585, -970,-2478,-3499,-3737,-3135,-1870,-278,1172,2101,2262, 1743,889,75,-334,-207,417,1225,1951,2199,1718, 518,-1036,-2521,-3495,-3700,-3070,-1797,-210,1214,2079, 2186,1651,812,30,-352,-174,477,1288,2040,2221, 1687,434,-1145,-2608,-3542,-3707,-3058,-1756,-157,1244, 2044,2110,1571,740,-8,-343,-122,572,1411,2139, 2280,1700,386,-1211,-2677,-3594,-3738,-3046,-1702,-127, 1266,2032,2078,1525,694,-32,-313,-44,664,1532, 2224,2360,1736,391,-1216,-2692,-3606,-3721,-2986,-1635, -69,1284,2018,2028,1459,635,-45,-304,1,729, 1624,2308,2389,1715,353,-1270,-2717,-3618,-3681,-2915, -1554,24,1339,2016,1986,1391,579,-77,-305,19, 796,1677,2352,2377,1674,283,-1334,-2772,-3653,-3682, -2907,-1521,35,1326,1953,1902,1317,494,-141,-310, 50,862,1746,2378,2361,1612,184,-1455,-2880,-3722, -3718,-2897,-1485,71,1320,1925,1831,1240,428,-203, -344,85,911,1815,2414,2374,1569,109,-1525,-2935, -3736,-3690,-2831,-1415,137,1344,1905,1789,1166,367, -244,-359,132,981,1881,2459,2384,1543,81,-1554, -2949,-3706,-3623,-2731,-1320,227,1389,1920,1768,1123, 319,-259,-332,195,1047,1938,2479,2367,1500,38, -1610,-2982,-3682,-3551,-2611,-1188,340,1442,1955,1773, 1088,276,-266,-306,247,1102,1977,2481,2318,1453, -41,-1684,-3034,-3691,-3521,-2550,-1110,365,1450,1919, 1719,1012,217,-296,-269,313,1181,2049,2532,2304, 1399,-143,-1787,-3132,-3750,-3516,-2525,-1071,378,1466, 1895,1654,935,139,-349,-272,343,1223,2113,2562, 2308,1337,-220,-1877,-3190,-3764,-3464,-2461,-999,450, 1494,1880,1579,836,55,-393,-278,352,1280,2165, 2568,2289,1280,-293,-1958,-3223,-3755,-3420,-2389,-911, 533,1536,1867,1538,775,12,-397,-233,419,1391, 2261,2664,2338,1324,-276,-1976,-3205,-3726,-3384,-2355, -887,532,1520,1810,1487,719,-29,-397,-211,522, 1480,2347,2748,2394,1342,-312,-2002,-3207,-3693,-3336, -2316,-865,520,1473,1736,1368,597,-135,-437,-208, 576,1537,2387,2756,2368,1259,-409,-2070,-3251,-3688, -3293,-2254,-801,562,1479,1690,1289,505,-224,-467, -173,607,1588,2417,2752,2320,1172,-488,-2139,-3286, -3702,-3291,-2201,-756,589,1462,1634,1207,438,-244, -462,-123,681,1677,2488,2783,2313,1103,-566,-2195, -3308,-3693,-3250,-2132,-684,628,1456,1604,1133,356, -258,-461,-85,766,1780,2605,2870,2356,1115,-582, -2215,-3309,-3663,-3189,-2079,-631,660,1431,1542,1059, 296,-294,-441,-43,829,1851,2678,2887,2319,1040, -661,-2292,-3364,-3670,-3163,-2008,-565,709,1417,1464, 970,252,-306,-394,24,929,1963,2754,2897,2260, 942,-730,-2355,-3407,-3686,-3142,-1960,-506,741,1390, 1404,898,193,-339,-402,59,1024,2071,2824,2953, 2267,930,-762,-2386,-3438,-3693,-3131,-1948,-494,727, 1348,1343,834,117,-390,-427,108,1096,2143,2864, 2963,2219,856,-881,-2504,-3515,-3729,-3122,-1906,-470, 719,1328,1288,773,75,-403,-399,202,1193,2250, 2947,2988,2196,812,-931,-2537,-3529,-3722,-3064,-1851, -428,716,1292,1228,706,13,-438,-387,257,1271, 2332,3008,2998,2194,774,-965,-2543,-3518,-3655,-2962, -1729,-340,774,1290,1199,649,-50,-485,-403,276, 1327,2371,3019,2971,2163,712,-1041,-2603,-3538,-3642, -2926,-1672,-302,779,1256,1131,556,-121,-533,-413, 306,1359,2407,3056,2969,2129,674,-1055,-2610,-3493, -3570,-2856,-1624,-274,767,1208,1054,457,-225,-595, -404,342,1420,2486,3111,3003,2120,651,-1070,-2608, -3441,-3479,-2737,-1510,-200,788,1207,1020,403,-288, -620,-364,395,1516,2571,3145,3012,2092,595,-1152, -2676,-3484,-3482,-2724,-1485,-187,754,1133,902,267, -378,-650,-353,475,1614,2647,3211,3035,2070,562, -1206,-2693,-3454,-3400,-2641,-1417,-152,754,1049,764, 91,-531,-745,-401,492,1644,2686,3236,3053,2079, 545,-1219,-2674,-3393,-3323,-2526,-1339,-106,763,1012, 697,8,-591,-788,-397,525,1682,2719,3252,3042, 2034,462,-1269,-2679,-3376,-3264,-2443,-1257,-47,767, 972,613,-70,-651,-813,-371,593,1760,2788,3305, 3049,2009,401,-1321,-2677,-3323,-3164,-2336,-1151,39, 819,958,537,-159,-757,-870,-395,581,1784,2815, 3326,3057,1990,377,-1341,-2669,-3276,-3085,-2237,-1068, 101,834,949,489,-212,-778,-852,-380,626,1840, 2859,3342,3038,1924,305,-1384,-2683,-3254,-3023,-2150, -950,176,841,934,426,-289,-822,-852,-349,687, 1868,2906,3349,2974,1831,185,-1464,-2736,-3249,-3010, -2108,-885,212,822,837,302,-425,-937,-941,-395, 670,1891,2921,3341,2925,1763,114,-1513,-2748,-3234, -2958,-2058,-838,232,780,733,198,-530,-990,-977, -397,720,1980,2985,3341,2893,1710,68,-1536,-2746, -3199,-2858,-1941,-723,305,806,718,142,-554,-974, -937,-318,816,2093,3068,3358,2867,1647,20,-1564, -2733,-3156,-2791,-1840,-637,349,815,679,75,-599, -1004,-941,-246,912,2183,3120,3391,2850,1600,-28, -1605,-2725,-3117,-2740,-1766,-565,382,805,636,34, -646,-1059,-949,-207,981,2229,3156,3412,2838,1561, -72,-1628,-2728,-3075,-2655,-1697,-509,423,792,609, -2,-677,-1091,-943,-180,998,2241,3147,3353,2747, 1434,-191,-1721,-2780,-3080,-2599,-1624,-447,434,752, 545,-90,-777,-1158,-975,-166,1026,2265,3138,3297, 2638,1322,-321,-1817,-2828,-3072,-2554,-1537,-368,452, 737,490,-173,-866,-1233,-1011,-167,1059,2297,3163, 3285,2610,1282,-374,-1836,-2806,-2993,-2452,-1440,-316, 471,732,450,-252,-928,-1253,-987,-88,1189,2428, 3276,3339,2639,1278,-383,-1842,-2769,-2912,-2323,-1321, -253,499,734,382,-318,-990,-1265,-945,9,1313, 2556,3330,3368,2631,1246,-431,-1860,-2747,-2837,-2229, -1239,-187,534,703,287,-408,-1075,-1330,-962,40, 1360,2587,3316,3341,2572,1140,-532,-1939,-2788,-2836, -2225,-1231,-174,524,642,212,-504,-1139,-1376,-943, 92,1428,2646,3368,3359,2558,1077,-578,-1985,-2795, -2850,-2232,-1222,-209,435,540,71,-654,-1271,-1461, -949,134,1471,2694,3417,3374,2544,1061,-589,-1965, -2715,-2749,-2138,-1138,-164,412,459,-57,-793,-1391, -1518,-944,195,1539,2770,3455,3379,2504,1005,-635, -1987,-2707,-2680,-2046,-1047,-62,487,476,-50,-807, -1390,-1458,-868,271,1636,2875,3514,3400,2464,957, -695,-2005,-2713,-2665,-2004,-1008,-51,487,448,-114, -860,-1424,-1425,-817,358,1755,2953,3596,3428,2435, 921,-719,-2000,-2666,-2596,-1930,-946,-44,459,365, -239,-961,-1472,-1442,-780,449,1849,3044,3648,3428, 2420,877,-735,-2022,-2658,-2576,-1897,-925,-52,399, 244,-380,-1105,-1559,-1503,-774,473,1886,3096,3623, 3368,2333,776,-827,-2058,-2644,-2547,-1847,-884,-31, 357,147,-504,-1237,-1657,-1559,-775,523,1961,3154, 3660,3369,2281,710,-870,-2064,-2621,-2486,-1767,-811, 20,341,95,-583,-1282,-1699,-1572,-740,597,2053, 3245,3734,3404,2296,715,-849,-2055,-2601,-2427,-1703, -757,35,290,14,-668,-1328,-1730,-1544,-669,692, 2167,3315,3762,3370,2236,640,-910,-2076,-2596,-2363, -1608,-684,58,266,-38,-723,-1391,-1749,-1515,-609, 802,2299,3409,3820,3384,2229,632,-915,-2052,-2550, -2309,-1529,-602,58,228,-126,-825,-1496,-1827,-1559, -616,849,2339,3434,3817,3353,2176,585,-950,-2067, -2511,-2240,-1472,-532,62,172,-231,-971,-1629,-1947, -1645,-669,842,2327,3419,3764,3286,2096,515,-1000, -2073,-2454,-2131,-1364,-487,97,143,-323,-1086,-1748, -2051,-1716,-700,835,2360,3453,3762,3261,2079,544, -967,-2019,-2358,-2007,-1247,-427,127,125,-401,-1160, -1820,-2060,-1675,-585,966,2473,3519,3777,3237,2024, 461,-1018,-2002,-2302,-1912,-1154,-344,176,122,-421, -1203,-1871,-2061,-1634,-494,1073,2545,3549,3788,3239, 2003,409,-1035,-1956,-2234,-1845,-1084,-300,173,73, -519,-1307,-1968,-2151,-1656,-477,1104,2583,3580,3789, 3228,1960,384,-1046,-1943,-2171,-1784,-1017,-261,146, 11,-627,-1419,-2076,-2219,-1675,-454,1166,2620,3598, 3770,3150,1870,302,-1109,-1960,-2128,-1697,-925,-174, 178,-5,-660,-1472,-2153,-2267,-1677,-415,1200,2643, 3607,3771,3090,1811,243,-1130,-1952,-2102,-1636,-893, -156,154,-72,-745,-1578,-2220,-2291,-1647,-343,1270, 2737,3672,3793,3077,1736,189,-1153,-1945,-2059,-1565, -833,-118,149,-97,-803,-1665,-2257,-2270,-1599,-286, 1337,2811,3694,3760,3010,1632,97,-1210,-1940,-2004, -1489,-700,-10,236,-51,-809,-1703,-2249,-2256,-1546, -244,1383,2828,3665,3694,2903,1524,-18,-1261,-1921, -1946,-1405,-599,66,292,-94,-885,-1783,-2315,-2280, -1521,-193,1445,2861,3666,3661,2825,1440,-91,-1286, -1916,-1897,-1336,-557,91,258,-173,-993,-1857,-2391, -2281,-1511,-136,1503,2913,3687,3653,2793,1403,-122, -1288,-1887,-1837,-1278,-497,141,245,-214,-1069,-1909, -2422,-2288,-1486,-78,1567,2980,3712,3648,2760,1351, -142,-1282,-1817,-1748,-1182,-393,205,242,-278,-1134, -1973,-2481,-2314,-1455,-30,1624,3024,3730,3602,2686, 1260,-170,-1264,-1779,-1669,-1079,-290,227,208,-333, -1210,-2041,-2514,-2328,-1425,22,1674,3062,3724,3532, 2598,1193,-219,-1275,-1768,-1617,-989,-191,254,192, -399,-1294,-2128,-2563,-2342,-1410,87,1755,3115,3762, 3532,2575,1201,-219,-1265,-1712,-1526,-910,-139,266, 146,-496,-1410,-2239,-2655,-2366,-1393,140,1834,3166, 3759,3505,2535,1154,-244,-1262,-1664,-1430,-787,-53, 321,128,-553,-1525,-2362,-2750,-2437,-1396,159,1858, 3165,3705,3409,2433,1025,-332,-1297,-1641,-1359,-658, 40,385,159,-597,-1596,-2441,-2796,-2470,-1373,209, 1879,3157,3698,3368,2385,978,-360,-1281,-1556,-1258, -567,105,405,147,-677,-1659,-2493,-2822,-2457,-1331, 274,1936,3189,3679,3341,2344,946,-368,-1247,-1476, -1153,-461,203,448,123,-739,-1723,-2581,-2885,-2461, -1310,327,2004,3244,3701,3334,2317,914,-364,-1206, -1423,-1076,-374,258,450,56,-812,-1829,-2689,-2960, -2486,-1286,381,2042,3290,3735,3338,2300,924,-336, -1123,-1327,-988,-325,264,399,-44,-943,-1976,-2798, -3023,-2484,-1218,458,2095,3305,3736,3302,2229,861, -375,-1114,-1270,-913,-261,292,370,-109,-1058,-2091, -2887,-3056,-2460,-1166,523,2172,3355,3754,3293,2185, 821,-408,-1117,-1251,-847,-208,302,348,-198,-1155, -2204,-2983,-3110,-2452,-1140,566,2234,3372,3724,3239, 2123,771,-428,-1094,-1190,-732,-94,372,398,-189, -1201,-2278,-3033,-3115,-2425,-1101,622,2270,3361,3663, 3135,2015,678,-450,-1070,-1078,-588,62,508,473, -166,-1254,-2329,-3069,-3106,-2408,-1067,664,2297,3374, 3642,3085,1970,659,-448,-999,-941,-491,166,577, 476,-236,-1345,-2423,-3142,-3158,-2414,-1028,696,2320, 3382,3628,3043,1906,585,-477,-983,-926,-458,206, 589,435,-324,-1440,-2555,-3223,-3238,-2457,-1027,716, 2325,3380,3579,2976,1810,514,-474,-940,-858,-321, 335,693,458,-356,-1511,-2648,-3313,-3292,-2497,-993, 777,2371,3412,3579,2944,1769,519,-438,-865,-754, -168,472,782,498,-395,-1574,-2725,-3367,-3310,-2493, -962,810,2396,3376,3539,2837,1674,458,-466,-861, -721,-118,503,772,440,-491,-1679,-2817,-3417,-3321, -2448,-929,849,2424,3375,3490,2777,1638,455,-440, -804,-609,-9,594,791,410,-560,-1784,-2901,-3509, -3377,-2434,-875,909,2492,3430,3483,2784,1648,473, -412,-744,-499,118,681,827,383,-634,-1904,-3009, -3618,-3450,-2459,-884,929,2492,3385,3401,2690,1576, 393,-428,-697,-401,223,759,850,349,-723,-2014, -3106,-3662,-3450,-2469,-855,980,2482,3340,3345,2613, 1521,365,-393,-611,-271,356,842,886,352,-773, -2063,-3151,-3676,-3432,-2442,-797,1026,2494,3329,3296, 2562,1461,358,-363,-518,-159,458,914,961,339, -792,-2084,-3189,-3708,-3444,-2394,-739,1081,2532,3325, 3255,2494,1390,306,-364,-461,-52,576,1017,1038, 368,-795,-2131,-3231,-3742,-3458,-2348,-666,1138,2562, 3304,3224,2434,1321,257,-363,-426,44,691,1133, 1066,353,-860,-2215,-3304,-3810,-3472,-2318,-603,1168, 2561,3269,3142,2336,1212,189,-375,-395,114,765, 1202,1060,316,-933,-2290,-3399,-3865,-3472,-2294,-562, 1208,2573,3242,3056,2215,1115,95,-403,-357,191, 821,1236,1081,293,-954,-2350,-3474,-3872,-3445,-2237, -521,1247,2605,3217,2970,2127,1064,85,-352,-243, 317,942,1315,1113,281,-1003,-2426,-3544,-3902,-3420, -2178,-456,1296,2629,3196,2892,2050,978,72,-339, -177,415,1045,1375,1150,287,-1057,-2478,-3548,-3880, -3363,-2117,-386,1336,2615,3160,2837,1974,894,42, -323,-107,509,1141,1447,1210,272,-1098,-2512,-3545, -3842,-3332,-2068,-327,1359,2582,3089,2749,1845,803, 24,-285,-4,636,1256,1551,1269,259,-1212,-2633, -3647,-3940,-3393,-2098,-341,1345,2538,3006,2642,1713, 703,-32,-271,57,701,1337,1633,1297,249,-1256, -2698,-3715,-4020,-3435,-2116,-369,1311,2483,2913,2528, 1629,646,-53,-206,138,785,1416,1677,1290,201, -1278,-2730,-3744,-3991,-3388,-2022,-278,1373,2516,2906, 2475,1586,625,-33,-163,220,904,1493,1706,1291, 151,-1338,-2796,-3794,-3980,-3333,-1917,-177,1465,2585, 2918,2445,1527,585,-39,-172,238,952,1556,1739, 1295,140,-1361,-2796,-3767,-3931,-3235,-1837,-107,1545, 2621,2852,2343,1444,515,-92,-186,228,958,1572, 1731,1258,89,-1427,-2858,-3760,-3867,-3161,-1748,3, 1647,2654,2805,2269,1363,422,-150,-190,267,998, 1587,1721,1211,15,-1534,-2961,-3813,-3883,-3151,-1662, 112,1697,2639,2763,2192,1259,332,-189,-172,342, 1060,1641,1741,1190,-65,-1609,-3011,-3852,-3914,-3131, -1628,156,1667,2571,2673,2080,1172,303,-186,-80, 464,1187,1774,1831,1228,-100,-1667,-3072,-3907,-3950, -3122,-1609,165,1650,2532,2628,2046,1139,324,-134, 14,600,1345,1904,1911,1217,-126,-1761,-3151,-3982, -3986,-3097,-1548,223,1698,2526,2592,2000,1101,304, -85,100,714,1483,2014,1950,1178,-174,-1832,-3242, -4075,-4011,-3084,-1518,229,1685,2485,2504,1883,1008, 241,-95,149,783,1573,2068,1983,1195,-205,-1880, -3320,-4101,-3997,-3032,-1462,261,1687,2466,2457,1812, 975,232,-76,224,884,1642,2108,1989,1168,-279, -1977,-3402,-4135,-3970,-2954,-1366,366,1761,2492,2443, 1777,939,191,-77,276,976,1704,2184,2000,1142, -351,-2042,-3459,-4169,-3967,-2918,-1321,421,1801,2491, 2419,1722,864,143,-87,290,1017,1747,2209,1982, 1108,-422,-2127,-3525,-4180,-3968,-2901,-1295,442,1783, 2425,2328,1632,794,117,-60,343,1090,1836,2260, 2016,1112,-424,-2166,-3529,-4160,-3902,-2845,-1225,497, 1759,2336,2205,1497,669,33,-71,402,1203,1945, 2364,2116,1137,-428,-2176,-3525,-4144,-3853,-2763,-1137, 533,1766,2298,2129,1381,552,-37,-61,464,1273, 2030,2424,2149,1088,-513,-2269,-3624,-4204,-3898,-2744, -1137,493,1730,2249,2067,1311,502,-2,33,582, 1384,2152,2535,2195,1074,-577,-2349,-3700,-4260,-3912, -2744,-1126,497,1701,2208,1989,1257,490,54,150, 719,1560,2338,2695,2287,1147,-571,-2359,-3707,-4250, -3867,-2696,-1086,532,1682,2145,1858,1147,398,-5, 144,734,1614,2414,2742,2322,1158,-606,-2401,-3737, -4244,-3838,-2650,-1037,569,1700,2102,1784,1071,345, -57,133,764,1655,2409,2727,2262,1043,-715,-2512, -3793,-4269,-3829,-2619,-958,615,1724,2048,1743,1037, 328,-46,176,867,1763,2488,2749,2238,968,-804, -2593,-3863,-4306,-3845,-2616,-929,620,1665,1935,1610, 889,213,-99,174,935,1864,2626,2826,2257,947, -862,-2649,-3900,-4314,-3822,-2559,-872,673,1658,1909, 1527,813,170,-95,203,1003,1927,2690,2844,2252, 909,-888,-2663,-3859,-4255,-3721,-2438,-780,729,1674, 1891,1494,776,158,-72,245,1066,1992,2735,2879, 2270,885,-883,-2646,-3838,-4192,-3614,-2335,-710,729, 1625,1793,1390,656,59,-134,267,1103,2096,2836, 2963,2273,863,-925,-2685,-3869,-4166,-3531,-2218,-597, 794,1618,1746,1312,565,-18,-166,257,1121,2148, 2870,2935,2207,778,-1031,-2760,-3888,-4146,-3483,-2142, -560,806,1603,1689,1212,473,-88,-227,222,1133, 2180,2870,2892,2128,687,-1153,-2877,-3947,-4174,-3484, -2144,-585,775,1569,1616,1114,406,-150,-234,295, 1240,2274,2941,2932,2153,667,-1217,-2935,-3988,-4156, -3449,-2075,-510,808,1547,1557,1058,341,-181,-213, 393,1363,2388,3047,3020,2225,678,-1202,-2923,-3961, -4083,-3379,-2000,-446,827,1475,1469,951,215,-277, -271,376,1397,2418,3071,3048,2225,655,-1205,-2904, -3902,-4018,-3271,-1900,-405,832,1425,1378,822,111, -361,-284,409,1452,2479,3119,3073,2204,640,-1211, -2848,-3839,-3917,-3131,-1771,-326,848,1407,1328,763, 88,-369,-218,517,1543,2595,3192,3106,2167,561, -1311,-2928,-3892,-3939,-3147,-1794,-358,793,1338,1246, 692,25,-373,-150,608,1658,2699,3292,3144,2146, 509,-1373,-3012,-3915,-3945,-3138,-1819,-414,704,1223, 1080,497,-142,-474,-193,593,1700,2744,3352,3145, 2122,487,-1368,-2985,-3816,-3793,-2983,-1692,-295,773, 1234,1044,409,-220,-525,-229,602,1708,2749,3311, 3079,2040,385,-1452,-2996,-3780,-3712,-2859,-1548,-138, 889,1314,1084,438,-202,-452,-146,724,1827,2827, 3324,3040,1953,245,-1605,-3101,-3867,-3760,-2870,-1537, -123,881,1268,1021,379,-247,-459,-106,797,1950, 2920,3391,3083,1926,169,-1710,-3184,-3925,-3787,-2886, -1524,-122,865,1213,940,302,-297,-495,-80,841, 2011,3003,3467,3132,1919,163,-1709,-3148,-3862,-3682, -2784,-1400,-61,864,1156,860,218,-364,-502,-52, 895,2091,3092,3531,3140,1914,141,-1710,-3113,-3815, -3622,-2739,-1381,-82,765,1020,708,59,-494,-563, -65,951,2165,3164,3574,3136,1881,91,-1736,-3154, -3814,-3623,-2717,-1375,-91,699,942,599,-52,-574, -591,-37,1019,2250,3259,3629,3161,1862,70,-1730, -3157,-3799,-3580,-2650,-1342,-77,697,883,528,-102, -574,-539,55,1144,2405,3395,3714,3210,1899,79, -1714,-3105,-3746,-3512,-2576,-1323,-102,641,757,346, -253,-679,-596,95,1222,2498,3488,3755,3210,1884, 65,-1753,-3109,-3684,-3443,-2515,-1261,-110,581,669, 206,-400,-824,-711,23,1192,2474,3464,3696,3140, 1798,-4,-1807,-3092,-3634,-3347,-2408,-1159,-37,620, 658,207,-418,-831,-713,38,1246,2519,3450,3678, 3095,1715,-94,-1865,-3090,-3607,-3230,-2278,-1046,50, 654,646,173,-462,-868,-715,106,1338,2606,3492, 3711,3061,1654,-170,-1909,-3115,-3560,-3168,-2193,-974, 103,642,588,73,-562,-955,-774,112,1350,2626, 3509,3708,3011,1594,-206,-1914,-3094,-3500,-3116,-2122, -905,119,632,514,-34,-687,-1028,-806,102,1370, 2669,3554,3701,3015,1558,-228,-1905,-3078,-3467,-3036, -2036,-836,150,611,21,301,340,599,1214,1516, 1557,1529,1877,1218,-551,-2386,-5134,-7663,-8770,-8987, -6889,-4194,-2348,1722,6486,9026,9384,8717,8565,6559, 3152,-364,-3385,-6189,-8732,-11004,-10161,-7984,-5987,-2504, 1535,5307,6455,7481,8561,7722,4477,1081,-893,-1844, -4377,-7498,-6779,-5159,-3603,-1644,2394,6297,6701,6717, 7362,7111,5334,2749,353,-730,-3485,-6570,-6696,-5638, -4356,-2480,1973,5710,6862,7132,7877,8219,7112,3271, -746,-2819,-6028,-8894,-10027,-9058,-7770,-5757,-1310,2959, 4606,5460,6655,8250,8899,6067,2850,386,-2950,-7245, -9955,-10046,-9997,-9847,-6390,-1412,2177,4865,7148,10264, 12792,11457,8399,5357,1369,-4277,-9288,-11288,-12745,-12930, -10333,-6155,-2656,-184,1613,5760,9620,10226,9205,7972, 6056,1970,-2276,-5033,-6933,-8386,-8094,-6443,-3255,-974, 471,3681,7028,8318,7412,6623,5249,1457,-2893,-5496, -7567,-8392,-7260,-4467,-333,2393,3429,5463,8523,9819, 8368,6675,4694,170,-4546,-7740,-9969,-10573,-10224,-7948, -3243,837,3868,6913,10339,11989,11219,10235,8681,4037, -1236,-5434,-8231,-9502,-11058,-10148,-6171,-1828,1437,4505, 7886,10017,9748,9437,7833,3266,-2353,-7962,-11338,-13011, -14052,-13054,-8768,-3478,693,4636,9812,13194,13365,12775, 11427,8477,3881,-1950,-6484,-9768,-12785,-14176,-12369,-8308, -4876,-1708,3040,7212,8861,10217,10759,9859,6127,960, -3492,-7016,-10912,-14312,-14690,-11592,-7889,-4597,1113,6369, 10710,13680,15561,15897,13283,8051,2389,-2754,-8283,-13727, -16572,-15384,-13958,-11331,-6360,-323,5098,9062,12268,15118, 15811,13584,9634,5155,289,-6183,-11279,-12685,-12814,-12338, -10184,-6285,-1553,2432,6577,11086,14169,13994,10698,7268, 3680,-2120,-7304,-9798,-10711,-10339,-8729,-5140,-1032,2275, 5501,9569,12685,12988,10167,7410,4499,-1077,-6920,-10848, -12233,-12323,-11296,-8781,-5011,-1282,2646,6919,11133,13163, 11665,9812,7467,2789,-3192,-8044,-11014,-12556,-12976,-11536, -9036,-6366,-3139,972,6667,10684,11555,11568,10604,7402, 2283,-2739,-6499,-9184,-10794,-10292,-8295,-5338,-2686,485, 5721,9800,11169,11370,10585,7762,2657,-3035,-6879,-9444, -10951,-11110,-9905,-7310,-4905,-1752,3509,8436,11596,13435, 13836,11908,7490,1937,-3022,-7510,-10641,-11857,-10983,-8639, -6917,-4168,772,5745,8736,10590,11753,11381,7929,3077, -1985,-6662,-9934,-12281,-11996,-9987,-8308,-6247,-1800,3397, 7843,10995,13514,14421,12141,8177,2981,-1833,-6224,-9633, -10460,-9054,-7883,-6447,-3451,1008,5185,8189,11316,13085, 12277,8980,4089,-889,-5788,-10388,-12256,-11251,-9998,-8752, -6277,-1639,3131,6877,10714,13722,14407,11670,6271,524, -5345,-11203,-14705,-15018,-13769,-12030,-9391,-4505,796,5677, 10368,14582,17029,16082,11862,6552,469,-6905,-12696,-15185, -15066,-14788,-13606,-10009,-4640,942,6154,11374,15990,17401, 15029,11118,5893,-798,-7532,-11142,-11996,-12508,-12660,-10891, -7250,-2716,1489,5944,11110,14454,14563,12752,9216,3683, -3255,-8249,-10188,-11293,-11851,-11208,-8429,-4218,-25,4502, 10282,14749,16351,15011,12056,6839,-301,-6470,-10066,-11615, -12331,-11952,-9910,-6104,-2691,1497,7247,13059,16431,16881, 15710,11557,4477,-2745,-7998,-11521,-13874,-15333,-14324,-11145, -7521,-3212,2501,9062,14200,16774,17227,14621,8528,1109, -5409,-9791,-12530,-14760,-15155,-13635,-11219,-7987,-2618,4325, 10184,14179,16375,15690,10963,4005,-2874,-7739,-11271,-14054, -14981,-13831,-11284,-8394,-3990,2319,8376,12698,16101,17571, 15543,9784,2405,-3563,-8524,-12623,-15230,-15399,-14167,-12099, -8393,-2414,3910,9275,14531,18281,19004,15092,8470,1849, -3705,-8489,-12323,-13682,-13269,-12282,-10002,-5048,605,5828, 10585,15248,17641,15511,10449,4461,-1053,-6578,-11048,-13168, -12816,-11956,-9837,-5549,-236,5191,10242,15595,19136,18604, 13885,7715,1581,-4466,-10210,-13678,-14757,-15037,-13755,-10077, -4339,1350,6566,12453,18129,20554,18321,13157,6999,361, -6697,-11796,-14372,-15896,-16200,-14209,-9542,-4510,565,6651, 13522,18329,18848,15880,11241,5121,-2405,-8597,-12210,-13961, -15346,-14715,-11351,-6962,-3109,1686,8260,14373,16964,15351, 11751,6177,-625,-7115,-11198,-13301,-14576,-14488,-11873,-7839, -4153,-293,5146,11816,16264,16883,14694,10058,3300,-3787, -8727,-11524,-13470,-14276,-12449,-9094,-5707,-2447,2334,9062, 14530,16776,15674,12102,5742,-2085,-8572,-12454,-15058,-16651, -15615,-12412,-8666,-5875,-1823,5004,12146,16369,17306,15709, 11191,4403,-2206,-6858,-10334,-12382,-12579,-10253,-7180,-4950, -1956,3417,10022,15105,17870,18176,14991,8646,1834,-3981, -8714,-12227,-13991,-12687,-9699,-7223,-4800,-341,5955,11711, 15602,17450,16077,10838,4052,-2290,-7209,-11408,-14399,-14809, -13105,-10883,-8596,-4494,1620,8542,14109,18331,19469,16809, 11378,5075,-918,-7010,-12316,-14880,-14298,-12987,-11724,-9408, -4531,1683,8262,14197,17552,16896,12626,7266,1757,-3896, -9611,-13061,-13370,-12254,-11294,-9456,-5682,-1107,4322,10306, 15067,16475,13770,9182,4415,-969,-6999,-11576,-13176,-12494, -11613,-10263,-7966,-4610,-115,5831,12000,15811,15990,13183, 9555,4936,-839,-6396,-9525,-10255,-10610,-10568,-9653,-7626, -4404,493,6646,12077,13978,12590,10043,6560,1368,-4747, -8846,-10541,-11030,-10979,-9957,-8279,-5985,-2243,3533,9931, 13633,14110,12605,9944,5150,-993,-6098,-8825,-9676,-9901, -9337,-8284,-6662,-3873,1253,7756,12914,14909,14277,12268, 8170,2332,-3425,-7413,-9731,-10685,-10583,-9597,-8327,-6731, -2852,3402,9906,13830,15170,14362,10948,5161,-973,-5869, -9236,-11057,-11609,-10957,-10175,-9125,-6393,-1065,5488,10646, 13734,14941,13724,9492,3683,-1834,-6065,-8862,-9985,-9695, -9468,-9652,-8745,-4832,895,6388,10296,12838,13260,10616, 5688,-184,-5130,-8522,-9750,-9110,-7731,-7506,-7388,-5273, -971,4053,8454,11999,13553,12122,7597,2078,-3267,-7603, -10128,-10184,-8913,-8478,-8771,-7816,-4035,989,6006,10531, 13912,14666,12236,7742,2354,-2868,-6856,-8264,-7623,-7087, -7736,-7642,-5278,-1372,3266,8052,12482,14635,13852,10249, 4982,-1015,-6255,-8951,-9025,-8413,-8980,-9464,-8226,-4959, -847,4081,9392,13358,14588,12770,8811,3143,-2785,-7142, -8400,-8049,-8161,-9067,-9026,-7002,-3961,-35,4756,9607, 12257,11990,9110,4271,-1644,-6567,-8559,-8441,-8261,-8940, -9138,-8208,-6170,-3038,1550,7201,11814,13785,12663,8881, 2673,-3732,-7967,-9287,-9551,-10136,-10694,-10436,-8699,-5719, -889,5319,11421,15365,16760,15158,10363,3779,-1900,-4903, -6279,-7290,-8667,-9662,-9780,-8505,-5334,-41,6035,11138, 14515,15164,12479,6962,1223,-2619,-4418,-5529,-6750,-7841, -8673,-8775,-7248,-3157,2422,8158,13015,15741,14981,10482, 4493,-511,-3470,-5435,-7201,-8818,-9935,-10196,-9053,-5749, -960,4699,10396,15031,16407,13801,8240,2322,-1776,-4272, -5987,-7497,-8510,-9440,-9460,-7811,-4170,617,6005,11303, 14696,14235,9799,3953,-1010,-4205,-6400,-7816,-8911,-10212, -11065,-10342,-7587,-3483,1631,7449,13018,15523,13630,8599, 3208,-929,-4177,-6214,-7782,-9416,-10980,-11305,-9721,-6483, -1882,3994,10489,14724,14717,10896,5923,1317,-2399,-5064, -6602,-7965,-9662,-10607,-10001,-7681,-4313,672,6946,12878, 15140,12885,8263,3007,-1688,-5022,-6771,-8152,-9645,-10898, -10823,-9480,-7186,-3377,2479,9328,13758,13902,10496,5537, 498,-3324,-5276,-6376,-7792,-9793,-10674,-10004,-8274,-5452, -364,6568,12666,15496,14544,10746,5427,846,-2092,-3770, -5238,-6973,-8448,-8719,-8181,-7171,-4170,1485,8148,12695, 13871,11635,7204,2385,-1052,-2982,-4603,-6732,-8835,-9395, -9238,-8854,-7124,-2419,4190,10269,13812,13901,10976,6420, 2208,-768,-2809,-4924,-6883,-7786,-8075,-8613,-8690,-6113, -683,5869,11055,13349,12148,8683,4656,1523,-465,-2677, -5069,-6633,-7020,-7611,-8232,-6992,-2999,2856,9006,13257, 13894,11342,7043,3208,686,-1373,-3776,-5766,-6800,-7977, -9325,-9395,-6877,-2056,4212,9845,12783,12253,8940,5116, 2309,97,-2707,-5253,-6851,-8028,-9321,-9875,-8625,-5336, -31,6014,10998,12754,10939,7373,4238,1621,-1213,-3820, -5447,-6453,-7875,-9034,-9207,-7182,-2916,3132,9330,13086, 12670,9288,5703,2767,175,-2476,-4232,-5459,-7067,-8875, -9792,-9061,-6431,-1565,4739,10378,12729,11505,8588,5736, 2778,-426,-2934,-4703,-6278,-8129,-9596,-10303,-9587,-6272, 83,7239,11557,11697,9234,6558,3451,150,-2376,-3975, -5213,-6604,-8073,-9355,-9591,-7781,-2902,3768,9384,11268, 10225,8164,5406,2175,-743,-2572,-3924,-5145,-6521,-7882, -9254,-9354,-6456,-185,6639,10470,11057,10013,7840,4529, 1282,-1163,-2717,-3985,-5339,-6871,-8612,-9733,-8531,-3409, 3371,8204,9994,9726,7955,4896,1494,-1434,-3343,-4788, -5868,-6868,-8167,-9723,-10053,-6637,-249,6065,9987,11593, 10970,8481,4973,1718,-856,-3010,-4588,-5555,-6504,-8514, -10381,-9322,-4478,1704,6904,10194,11237,10121,7423,4273, 1335,-976,-2698,-3624,-4458,-6592,-9562,-10738,-8105,-2747, 3143,7685,10285,10700,9062,6297,3243,722,-1061,-1934, -2485,-4239,-7666,-10189,-9390,-5370,74,5421,9507,11229, 10607,8065,4871,1684,-1018,-2694,-3272,-4268,-7236,-10715, -11970,-9611,-4793,855,5907,9479,10753,9859,7656,4850, 1933,-316,-1086,-1802,-4158,-8077,-10973,-10944,-7874,-2912, 2517,7316,10021,10258,8662,5886,2313,-728,-1620,-1433, -2596,-5921,-9468,-11030,-9682,-5927,-611,5001,9299,10989, 10337,8258,4899,1523,-392,-637,-1374,-4095,-8229,-11469, -11991,-9627,-4890,1144,6841,10253,11539,11147,8979,5586, 2777,1720,920,-1430,-5661,-10184,-12873,-12765,-9818,-4389, 1784,6502,9473,10933,10216,7133,3910,2524,2352,1187, -1964,-6177,-9734,-11123,-9891,-5733,-229,4745,8184,10174, 9956,7028,3079,634,144,-250,-2173,-5517,-8868,-11052, -10946,-7811,-2289,3344,7668,10816,11993,10075,5885,2208, 547,69,-1326,-4233,-7852,-11125,-12643,-11320,-7000,-1433, 3704,7991,10853,11031,8344,4666,2271,1582,851,-1298, -4945,-9154,-12360,-12978,-10264,-5591,-436,4563,8902,10816, 9587,6310,3462,2305,1714,442,-2051,-5485,-9155,-11181, -10246,-6809,-2271,2659,7440,10673,10858,8097,4719,2612, 1664,525,-1506,-4791,-8812,-12138,-12965,-10880,-6861,-1703, 4018,9072,11426,10521,7878,5520,4118,2970,1412,-1244, -5110,-9372,-11897,-11584,-9061,-5143,-101,5299,9192,10173, 8694,6662,5138,4133,3262,1779,-1174,-5428,-9165,-10766, -9935,-7197,-2745,2702,7728,10438,10234,8213,6086,4730, 3878,2896,595,-3456,-7864,-10597,-11103,-9897,-6936,-2059, 3745,8306,9933,8986,7098,5475,4635,4320,2981,-415, -5157,-9190,-11394,-11473,-9533,-5346,400,5785,8874,9217, 7869,5983,4671,4154,3422,812,-3394,-7464,-10081,-11029, -10519,-7838,-2815,3005,7138,8783,8420,6930,5423,4737, 4321,2470,-1191,-5592,-9306,-11765,-12692,-11469,-7397,-1513, 3985,7488,8625,7857,6339,5539,5582,4879,2209,-1887, -5911,-8950,-10924,-11244,-8810,-3910,1561,5851,8088,8064, 6519,5175,4936,4864,3393,422,-3315,-6718,-9617,-11449, -10720,-6840,-1284,3987,7755,9070,8177,6787,6427,6477, 5702,3159,-593,-4418,-8057,-11119,-12271,-10230,-5590,-135, 4703,7608,7991,7021,6304,6188,5831,4093,1053,-2502, -6113,-9768,-12208,-11757,-8376,-3080,2550,6832,8674,8593, 7865,7454,7162,5884,3197,-177,-3694,-7727,-11192,-12333, -10589,-6349,-509,4802,7913,8619,8012,7561,7390,6597, 4477,1574,-1570,-5338,-9334,-12024,-12310,-9653,-4399,1589, 6283,8342,8359,7918,7737,7260,5628,3205,329,-3341, -7553,-11021,-12622,-11532,-7561,-1762,3666,6858,7667,7433, 7360,7222,6239,4386,2022,-1097,-5067,-8964,-11690,-12119, -9706,-4867,670,4957,7097,7613,7897,8145,7544,6190, 4408,1742,-1869,-5965,-9704,-12066,-11813,-8401,-3021,2084, 5384,6805,7391,7713,7442,6533,5050,2551,-924,-4985, -8850,-11734,-12682,-10868,-6276,-565,3961,6307,7475,8229, 8151,7437,6176,4289,1602,-1974,-6204,-10405,-13509,-13777, -10596,-4911,801,4533,6649,8096,9029,9377,9010,7591, 5073,1524,-2590,-7117,-11243,-13437,-12402,-8125,-2798,1335, 4083,6068,7539,8382,8439,7814,6390,3834,250,-4285, -9225,-13285,-14637,-12278,-7589,-2823,986,3907,6300,7993, 8923,9104,8311,6500,3702,-175,-4923,-9876,-12993,-12424, -8958,-4394,-242,3219,5970,7787,8757,9072,8627,7419, 5184,1922,-2329,-7420,-11785,-13197,-11037,-6894,-2550,1052, 3899,6057,7759,8774,8918,8410,7035,4724,1236,-3737, -9077,-12455,-12423,-9636,-5793,-1829,1825,4873,7309,9067, 10150,10466,9678,8054,5230,685,-5157,-10389,-12765,-11815, -8863,-5051,-1275,2137,5135,7346,8885,9645,9621,9028, 7519,4183,-1031,-6740,-10658,-11636,-10104,-7094,-3667,-318, 2603,4839,6639,7845,8273,8213,7520,5440,1226,-4408, -9052,-11383,-11178,-8882,-5519,-1898,1195,3774,5942,7411, 8112,8260,7903,6459,2863,-2526,-8026,-11976,-13340,-12285, -9520,-5845,-2240,958,3937,6336,7862,8562,8871,8635, 6476,2078,-3478,-8504,-11591,-12290,-10828,-8005,-4878,-1714, 1477,4358,6558,7749,8505,9008,8129,4889,-158,-5463, -9525,-11688,-11425,-9217,-6245,-3139,-21,3203,5840,7168, 8077,9088,9313,7544,3378,-1934,-6876,-10291,-11451,-10362, -7995,-5126,-2152,1165,4373,6541,8039,9513,10632,10207, 7379,2722,-2679,-7497,-10414,-10905,-9371,-7015,-4426,-1284, 1919,4283,5793,7274,9057,9866,8568,5304,725,-4044, -7765,-9499,-9123,-7753,-6100,-3621,-458,2315,4258,5908, 7879,9465,9597,7829,4114,-513,-4997,-8113,-8954,-8254, -6944,-5027,-2352,332,2304,3953,5994,7951,9012,8440, 6080,2285,-2418,-6468,-8558,-8887,-8221,-6772,-4306,-1291, 1107,2926,4873,7143,9149,9825,8639,5603,1100,-3435, -6476,-7702,-7674,-6975,-5187,-2612,-356,1321,2886,4781, 6891,8326,8480,6769,3067,-1383,-4896,-6673,-7258,-7152, -5903,-3674,-1482,214,1556,3113,5035,6770,7878,7476, 5016,1115,-2826,-5362,-6586,-6997,-6344,-4809,-2843,-1115, 149,1507,3268,5207,6920,7423,5906,2472,-1617,-4670, -6599,-7581,-7370,-5988,-3906,-1974,-584,995,2805,4835, 6913,8214,7723,4954,878,-2688,-5301,-7059,-7815,-7206, -5427,-3399,-1679,-52,1603,3479,5582,7427,8003,6213, 2797,-774,-3751,-6002,-7379,-7496,-6213,-4462,-2751,-1187, 238,1850,3812,6214,8017,7479,4746,1167,-2066,-4640, -6737,-7727,-7030,-5341,-3361,-1625,-89,1537,3248,5509, 7690,8281,6654,3357,-189,-3351,-5999,-7525,-7539,-6458, -4702,-2680,-626,1125,2639,4840,7546,9314,8977,6530, 3220,-180,-3417,-5710,-6725,-6407,-5233,-3789,-2031,-430, 956,2989,5831,8632,9751,8574,5961,2643,-788,-3726, -5659,-6227,-5890,-5159,-3947,-2694,-1521,183,2909,6089, 8160,8301,6856,4269,1050,-2240,-4849,-6016,-6226,-5695, -4529,-3201,-2062,-825,1387,4514,7146,8129,7311,5150, 2416,-873,-4008,-5938,-6630,-6536,-5612,-4239,-3072,-2134, -420,2536,5639,7764,8054,6700,4437,1347,-1848,-4327, -5919,-6545,-6122,-5127,-4275,-3782,-2765,-407,2770,5656, 7106,7135,5813,3218,72,-2803,-5016,-6390,-6833,-6282, -5312,-4722,-4019,-2394,616,4085,6640,7963,7808,5925, 2985,-163,-2923,-4934,-5891,-5563,-4813,-4393,-4078,-3063, -638,2710,5700,7736,8433,7508,5367,2574,-211,-2719, -4401,-4659,-4087,-3566,-3528,-3336,-1815,941,3848,6338, 7904,7999,6640,4263,1535,-1358,-3623,-4478,-4315,-3939, -4180,-4686,-4114,-2049,941,4165,6815,8106,7561,5783, 3436,543,-2239,-4050,-4568,-4309,-4397,-5017,-4992,-3692, -1257,1775,4673,6604,6780,5661,3816,1386,-1275,-3485, -4371,-4046,-3854,-4405,-4779,-4194,-2545,-96,2790,5143, 5970,5478,4047,1913,-665,-3236,-4674,-4648,-4188,-4208, -4549,-4333,-3130,-1022,2008,4847,6406,6572,5729,4132, 1714,-1244,-3501,-4283,-4120,-4099,-4539,-4728,-4377,-3155, -586,2633,5271,6638,6732,5875,4014,1164,-1481,-2859, -2973,-2974,-3433,-3881,-4183,-3860,-2103,686,3471,5354, 6139,6038,4753,2197,-643,-2568,-3099,-3202,-3412,-3670, -4133,-4283,-3161,-686,2308,4757,6222,6857,6324,4442, 1470,-1189,-2631,-3314,-3720,-3936,-4365,-4801,-4353,-2411, 661,3739,6133,7596,7919,6902,4421,1592,-515,-1934, -2809,-3345,-4108,-5177,-5813,-5004,-2690,212,3016,5237, 6621,6570,4725,2106,-84,-1647,-2555,-3033,-3626,-4712, -5877,-5897,-4292,-1725,978,3279,5021,5709,4764,2792, 616,-1226,-2261,-2606,-2837,-3629,-4913,-5557,-4860,-2984, -627,1648,3914,5533,5588,4236,2328,483,-934,-1492, -1458,-1902,-3257,-4682,-5050,-3853,-1807,277,2607,4712, 5625,4984,3380,1683,123,-683,-752,-993,-2024,-3590, -4571,-4138,-2721,-952,1354,3800,5405,5559,4501,2908, 1041,-176,-401,-301,-721,-1983,-3205,-3275,-2457,-1273, 524,2746,4571,5021,4321,2864,1079,-325,-910,-802, -683,-1512,-2817,-3459,-3197,-2294,-766,1435,3660,4856, 4857,3797,2098,479,-532,-699,-539,-1219,-2557,-3596, -3885,-3514,-2494,-475,1937,3799,4702,4419,3163,1467, -105,-606,-212,-382,-1616,-3115,-3923,-4068,-3509,-1962, 328,2611,4175,4520,3837,2372,654,-173,-107,-180, -1185,-2684,-3927,-4677,-4651,-3479,-1450,987,3034,4169, 4344,3341,1515,186,-25,102,-537,-1826,-3015,-4046, -4598,-4123,-2530,-160,2107,3765,4564,4052,2366,752, 93,73,-312,-1185,-2295,-3635,-4630,-4727,-3740,-1710, 602,2791,4331,4488,3137,1281,334,236,31,-541, -1377,-2495,-3599,-4338,-3948,-2252,-45,2270,4284,5259, 4507,2616,1195,706,379,-101,-883,-1993,-3205,-4338, -4734,-3991,-2275,121,2697,4609,4831,3589,2240,1469, 990,567,-81,-1096,-2488,-4006,-4883,-4672,-3486,-1597, 930,3483,4728,4107,2717,1548,871,520,123,-501, -1646,-3217,-4721,-5238,-4609,-3130,-682,2448,4824,5352, 4497,3078,1940,1158,484,-208,-1289,-2869,-4514,-5427, -5308,-4456,-2537,544,3513,5019,4869,3832,2773,2052, 1658,1373,885,-261,-1903,-3361,-4083,-4143,-3127,-692, 2302,4422,4908,4217,3242,2484,1959,1611,1267,465, -1098,-2761,-3888,-4576,-4389,-2790,-58,2540,3909,3971, 3354,2649,2129,1873,1724,1201,-236,-2026,-3509,-4601, -5023,-4184,-1826,1160,3521,4548,4483,3874,3226,2638, 2338,1787,398,-1401,-3031,-4402,-5466,-5510,-3842,-932, 1912,3720,4309,4106,3436,2756,2538,2321,1427,-43, -1684,-3311,-4886,-5825,-5232,-3037,-190,2091,3196,3275, 2636,1860,1653,1643,1172,180,-1046,-2445,-4102,-5552, -5837,-4447,-1868,735,2506,3313,3044,2314,2003,2075, 1847,1031,-63,-1295,-2957,-4805,-5995,-5620,-3514,-711, 1751,3238,3408,2748,2286,2395,2401,1803,896,-185, -1731,-3677,-5401,-5759,-4432,-2183,252,2227,3031,2759, 2326,2419,2591,2322,1716,893,-248,-2010,-4135,-5465, -5222,-3709,-1367,1076,2685,3003,2681,2585,2611,2377, 1915,1338,515,-1000,-3063,-4649,-4995,-4069,-2147,285, 2304,3121,2959,2686,2571,2388,1856,1204,656,-340, -2152,-4012,-5072,-5042,-3694,-1211,1407,2892,3084,2738, 2491,2362,1977,1481,1152,651,-549,-2168,-3477,-4125, -3748,-1994,516,2436,3236,3296,3122,2922,2451,1918, 1592,1176,154,-1408,-2937,-4027,-4236,-3000,-655,1710, 3092,3322,3026,2582,2003,1346,989,844,265,-911, -2352,-3706,-4530,-4056,-2170,158,1903,2642,2732,2580, 2155,1554,1295,1348,1067,162,-1101,-2600,-4018,-4488, -3436,-1334,793,2085,2582,2656,2364,1801,1377,1276, 1109,616,-239,-1626,-3275,-4371,-4075,-2323,-109,1512, 2375,2752,2682,2193,1704,1463,1261,942,450,-589, -2211,-3820,-4410,-3414,-1397,468,1741,2510,2767,2404, 1796,1410,1159,871,572,-113,-1497,-3267,-4484,-4237, -2593,-537,1114,2317,3041,3030,2518,1924,1321,727, 294,-182,-1249,-2986,-4653,-5066,-3908,-1841,259,2036, 3341,3824,3543,2944,2112,1133,359,-177,-978,-2532, -4503,-5714,-5263,-3538,-1374,755,2569,3634,3854,3520, 2829,1912,1085,556,-12,-1286,-3352,-5218,-5703,-4715, -2951,-854,1188,2667,3419,3619,3353,2699,1943,1452, 1142,299,-1601,-3861,-5142,-5016,-3963,-2262,-158,1726, 2933,3520,3644,3318,2682,2142,1888,1402,-92,-2394, -4272,-4968,-4646,-3463,-1582,432,2045,3063,3534,3490, 3012,2401,2094,1885,952,-978,-3056,-4417,-4830,-4214, -2647,-639,1164,2533,3405,3698,3324,2557,2017,1898, 1392,-100,-2126,-3857,-4901,-4953,-3886,-2046,-27,1728, 3052,3837,3868,3196,2546,2429,2255,1197,-665,-2692, -4303,-5049,-4659,-3321,-1466,447,2123,3363,3834,3409, 2763,2642,2749,2261,855,-1144,-3154,-4530,-4769,-3929, -2407,-600,1194,2766,3659,3472,2734,2346,2402,2216, 1281,-418,-2505,-4314,-5156,-4831,-3553,-1772,174,2080, 3462,3722,3127,2543,2346,2182,1587,337,-1547,-3588, -4951,-5184,-4347,-2825,-967,1133,2974,3793,3564,3041, 2715,2418,1930,1050,-475,-2505,-4365,-5297,-5046,-3978, -2411,-319,1930,3460,3857,3638,3385,3132,2733,2066, 831,-1089,-3261,-4896,-5363,-4863,-3763,-1959,409,2417, 3400,3539,3369,3065,2741,2355,1583,124,-1954,-3909, -4899,-4895,-4271,-2920,-715,1615,3096,3592,3519,3154, 2665,2234,1711,701,-1081,-3172,-4591,-5058,-4867,-3930, -1942,616,2678,3744,3982,3719,3247,2752,2330,1647, 193,-1913,-3765,-4829,-5239,-4905,-3418,-1005,1382,2943, 3607,3629,3303,2843,2496,2167,1155,-702,-2668,-4066, -4906,-5145,-4320,-2378,46,2124,3326,3755,3663,3278, 2943,2762,2079,456,-1566,-3219,-4435,-5169,-4988,-3620, -1416,907,2667,3637,3919,3659,3326,3260,2931,1670, -196,-1953,-3417,-4593,-5071,-4421,-2642,-357,1632,2924, 3543,3556,3334,3340,3274,2388,780,-926,-2528,-3933, -4819,-4808,-3616,-1608,497,2146,3095,3323,3159,3252, 3435,2936,1633,44,-1561,-3186,-4542,-5148,-4601,-3006, -1008,929,2395,3036,3035,3102,3440,3351,2525,1209, -313,-2019,-3760,-5015,-5197,-4190,-2442,-444,1377,2428, 2685,2850,3273,3470,3055,2122,870,-688,-2588,-4366, -5259,-4931,-3670,-1781,310,1813,2354,2582,3025,3407, 3294,2635,1601,254,-1574,-3612,-5070,-5384,-4670,-3080, -838,1174,2224,2697,3260,3822,3906,3360,2396,1130, -597,-2768,-4636,-5561,-5491,-4425,-2317,69,1659,2456, 3161,3930,4288,3935,3097,2052,622,-1386,-3437,-4826, -5386,-5001,-3384,-1018,930,2015,2762,3576,4200,4185, 3632,2892,1851,158,-1875,-3620,-4836,-5240,-4371,-2407, -386,958,1854,2767,3700,4178,4087,3768,3177,1833, -115,-2065,-3818,-5089,-5137,-3827,-1971,-468,565,1532, 2637,3456,3769,3866,3784,3005,1421,-502,-2515,-4362, -5263,-4698,-3159,-1564,-375,626,1783,2817,3400,3746, 3928,3548,2399,722,-1350,-3577,-5131,-5336,-4287,-2779, -1489,-424,779,1990,2872,3537,3990,3895,3153,1910, 99,-2227,-4330,-5319,-4947,-3729,-2498,-1451,-313,888, 1876,2744,3503,3767,3452,2736,1425,-646,-2981,-4592, -4888,-4084,-2994,-1987,-885,270,1259,2216,3148,3674, 3655,3341,2540,882,-1436,-3546,-4508,-4222,-3423,-2562, -1488,-304,712,1656,2700,3447,3700,3658,3329,2234, 206,-2149,-3790,-4176,-3800,-3199,-2306,-1197,-195,764, 1893,2894,3473,3776,3836,3280,1644,-720,-2782,-3770, -3917,-3674,-3002,-1987,-1007,-66,1124,2345,3220,3767, 4098,4033,2977,833,-1469,-2996,-3675,-3859,-3523,-2697, -1778,-892,196,1445,2532,3295,3838,4138,3709,2090, -184,-2085,-3285,-3934,-3946,-3324,-2469,-1616,-585,633, 1795,2655,3312,3915,4057,3038,966,-1156,-2747,-3790, -4138,-3724,-2884,-1941,-862,430,1680,2587,3214,3882, 4384,3949,2268,68,-1879,-3371,-4161,-4075,-3402,-2534, -1523,-241,1152,2259,3028,3826,4636,4701,3509,1473, -701,-2619,-3981,-4496,-4236,-3573,-2714,-1552,-60,1328, 2369,3359,4492,5134,4602,2978,853,-1339,-3109,-4142, -4393,-4085,-3441,-2436,-1005,500,1673,2684,3851,4815, 4890,3883,2124,-24,-2074,-3522,-4159,-4171,-3805,-3064, -1809,-322,878,1858,3021,4190,4731,4328,3064,1136, -1039,-2887,-4017,-4402,-4307,-3830,-2804,-1377,-123,874, 2069,3481,4532,4781,4127,2611,459,-1705,-3278,-4117, -4435,-4335,-3592,-2305,-1073,-85,1089,2565,3882,4614, 4550,3616,1876,-290,-2133,-3277,-3903,-4175,-3829,-2791, -1659,-809,113,1371,2733,3808,4300,3991,2818,977, -947,-2331,-3226,-3853,-3941,-3305,-2357,-1569,-780,305, 1616,2923,3923,4301,3772,2315,396,-1242,-2441,-3450, -4009,-3767,-2996,-2226,-1496,-502,809,2251,3560,4479, 4652,3738,1964,129,-1335,-2619,-3565,-3760,-3286,-2570, -1920,-1155,-96,1204,2559,3769,4527,4276,2945,1236, -294,-1685,-2877,-3457,-3300,-2753,-2166,-1550,-685,451, 1699,2979,4094,4416,3555,2066,531,-967,-2370,-3297, -3464,-3035,-2415,-1810,-1073,-55,1119,2456,3849,4666, 4336,3147,1693,107,-1518,-2824,-3415,-3294,-2804,-2233, -1590,-772,195,1436,3043,4378,4681,3974,2785,1326, -369,-1997,-3103,-3437,-3222,-2799,-2247,-1541,-743,351, 1970,3672,4630,4553,3732,2422,700,-1176,-2732,-3552, -3660,-3414,-2937,-2289,-1616,-698,846,2726,4180,4706, 4401,3445,1912,-13,-1856,-3097,-3624,-3702,-3405,-2839, -2276,-1602,-303,1586,3377,4452,4653,4116,2933,1175, -817,-2442,-3445,-3931,-3889,-3412,-2902,-2416,-1429,318, 2277,3782,4544,4545,3800,2287,278,-1605,-2983,-3864, -4165,-3904,-3512,-3216,-2572,-1107,898,2778,4087,4728, 4597,3573,1784,-169,-1819,-3072,-3809,-3910,-3734,-3650, -3375,-2331,-494,1610,3387,4590,5078,4583,3162,1306, -500,-2083,-3232,-3673,-3630,-3629,-3594,-2960,-1465,587, 2555,4087,5059,5103,4077,2422,644,-1069,-2520,-3275, -3382,-3380,-3493,-3293,-2272,-476,1509,3241,4620,5303, 4907,3631,1991,195,-1522,-2659,-3082,-3225,-3428,-3538, -3008,-1633,213,2080,3806,5059,5329,4615,3296,1561, -383,-1942,-2742,-3065,-3383,-3723,-3590,-2596,-965,913, 2827,4489,5320,5104,4146,2635,691,-1174,-2411,-2982, -3342,-3799,-4047,-3568,-2336,-652,1307,3249,4603,5038, 4648,3534,1790,-158,-1686,-2541,-3044,-3587,-4071,-4038, -3287,-1981,-172,1901,3634,4584,4770,4174,2786,873, -913,-2031,-2613,-3169,-3782,-4068,-3744,-2849,-1316,735, 2717,4118,4787,4651,3640,1919,-2,-1467,-2333,-2967, -3644,-4142,-4187,-3715,-2539,-622,1500,3228,4352,4751, 4271,2914,1071,-569,-1649,-2432,-3203,-3776,-4018,-3895, -3133,-1543,514,2405,3785,4584,4606,3687,2004,225, -1057,-1870,-2602,-3175,-3503,-3624,-3282,-2149,-365,1564, 3164,4305,4811,4374,2947,1146,-345,-1389,-2205,-2793, -3164,-3473,-3516,-2893,-1479,363,2126,3567,4567,4754, 3824,2173,611,-613,-1601,-2324,-2795,-3230,-3587,-3459, -2511,-899,893,2548,3952,4737,4407,3147,1654,321, -833,-1732,-2369,-2925,-3493,-3735,-3227,-1928,-243,1500, 3226,4586,4884,4043,2679,1268,-86,-1227,-2057,-2706, -3371,-3887,-3772,-2803,-1273,461,2324,4115,5077,4812, 3718,2310,833,-530,-1607,-2438,-3208,-3934,-4192,-3596, -2311,-710,1188,3232,4744,5120,4499,3316,1864,360, -941,-1957,-2834,-3705,-4291,-4113,-3157,-1774,-11,2144, 4091,5091,4965,4048,2682,1119,-350,-1546,-2480,-3362, -4098,-4280,-3767,-2778,-1337,657,2791,4313,4811,4344, 3223,1750,265,-961,-1891,-2756,-3605,-4044,-3940,-3426, -2463,-842,1237,3095,4153,4294,3652,2512,1166,-47, -981,-1869,-2889,-3697,-4032,-3980,-3464,-2226,-290,1807, 3428,4198,4137,3385,2231,1009,-41,-1083,-2264,-3325, -3965,-4259,-4138,-3302,-1646,459,2446,3819,4401,4154, 3193,1944,788,-350,-1612,-2790,-3589,-4082,-4300,-3921, -2670,-736,1378,3170,4335,4667,4089,2945,1759,626, -637,-1899,-2876,-3574,-4092,-4156,-3431,-1851,203,2236, 3875,4804,4718,3832,2740,1671,473,-804,-1861,-2678, -3404,-3855,-3654,-2574,-826,1144,2989,4319,4729,4209, 3275,2305,1168,-109,-1200,-2034,-2817,-3528,-3787,-3230, -1889,-136,1736,3401,4277,4187,3546,2742,1733,493, -649,-1533,-2340,-3180,-3797,-3725,-2847,-1400,389,2316, 3735,4134,3801,3196,2306,1113,-100,-1082,-1916,-2822, -3700,-4072,-3654,-2569,-972,1039,2908,3894,4025,3688, 2991,1900,642,-501,-1439,-2407,-3477,-4236,-4286,-3652, -2391,-501,1588,3111,3806,3911,3522,2668,1501,297, -732,-1745,-2893,-3892,-4319,-4130,-3314,-1715,360,2191, 3355,3856,3805,3209,2164,942,-149,-1137,-2237,-3301, -3996,-4196,-3852,-2678,-796,1170,2734,3694,4033,3779, 2927,1748,602,-427,-1528,-2662,-3562,-4106,-4208,-3523, -1965,-8,1826,3227,4039,4215,3677,2611,1459,399, -742,-1946,-2991,-3807,-4307,-4103,-2954,-1111,857,2569, 3787,4373,4204,3356,2295,1275,164,-1056,-2145,-3100, -3912,-4236,-3697,-2316,-518,1263,2820,3867,4148,3662, 2844,2020,1071,-63,-1176,-2233,-3317,-4111,-4188,-3361, -1901,-237,1451,2921,3741,3710,3172,2504,1673,650, -420,-1487,-2681,-3799,-4334,-3974,-2846,-1345,316,2031, 3337,3807,3597,3062,2295,1318,312,-680,-1817,-3083, -4000,-4126,-3418,-2222,-710,1069,2728,3669,3865,3602, 2973,2043,1058,154,-863,-2141,-3397,-4070,-3894,-3078, -1808,-47,1839,3212,3803,3849,3470,2696,1734,833, -86,-1296,-2703,-3785,-4107,-3741,-2852,-1332,594,2301, 3343,3732,3638,3124,2344,1529,732,-360,-1821,-3174, -3882,-3922,-3435,-2274,-490,1378,2805,3582,3756,3408, 2707,1922,1216,345,-1010,-2507,-3550,-3976,-3858,-3044, -1488,394,2057,3210,3750,3661,3031,2191,1446,699, -433,-1886,-3122,-3902,-4208,-3850,-2668,-925,862,2306, 3230,3530,3205,2465,1750,1105,174,-1144,-2456,-3448, -4100,-4229,-3520,-2058,-259,1429,2714,3394,3356,2761, 2070,1487,701,-448,-1735,-2848,-3720,-4191,-3928,-2845, -1238,510,2060,3131,3450,3037,2403,1878,1222,239, -932,-2073,-3103,-3880,-4044,-3387,-2053,-417,1229,2618, 3338,3220,2687,2194,1662,860,-137,-1184,-2292,-3294, -3867,-3688,-2735,-1291,364,2013,3190,3466,3107,2634, 2119,1413,534,-388,-1446,-2585,-3467,-3715,-3205,-2131, -665,1087,2665,3414,3327,2926,2464,1864,1146,373, -536,-1644,-2731,-3382,-3301,-2627,-1503,80,1798,2927, 3170,2921,2511,1986,1386,754,32,-900,-2015,-2938, -3249,-2944,-2161,-830,876,2293,2928,2955,2732,2323, 1764,1146,500,-324,-1439,-2560,-3237,-3353,-2971,-1954, -299,1390,2487,2882,2863,2584,2097,1497,920,247, -764,-1940,-2845,-3322,-3381,-2829,-1461,321,1787,2608, 2859,2740,2329,1752,1212,679,-154,-1279,-2313,-3019, -3400,-3246,-2260,-635,1021,2199,2768,2864,2608,2092, 1552,1060,358,-676,-1782,-2680,-3334,-3561,-2977,-1598, 102,1568,2486,2851,2766,2332,1824,1396,854,-29, -1080,-2058,-2932,-3535,-3457,-2507,-948,641,1845,2567, 2780,2529,2058,1669,1265,596,-307,-1263,-2279,-3205, -3639,-3231,-2024,-483,916,1978,2548,2552,2207,1845, 1492,920,144,-713,-1710,-2777,-3567,-3632,-2821,-1450, 47,1404,2350,2643,2431,2121,1814,1327,663,-96, -1010,-2129,-3213,-3771,-3433,-2377,-955,550,1835,2532, 2599,2422,2192,1799,1261,637,-130,-1179,-2430,-3409, -3638,-3052,-1936,-488,996,2022,2411,2450,2364,2097, 1661,1149,540,-325,-1559,-2787,-3453,-3367,-2631,-1378, 185,1506,2208,2477,2550,2424,2082,1615,1118,441, -640,-1997,-3046,-3447,-3212,-2315,-830,691,1743,2323, 2613,2662,2443,2055,1651,1170,292,-997,-2232,-2991, -3233,-2841,-1702,-190,1069,1862,2286,2452,2338,2005, 1702,1451,901,-164,-1411,-2408,-3022,-3067,-2305,-965, 388,1362,1942,2216,2195,1909,1594,1424,1138,354, -776,-1887,-2785,-3224,-2867,-1771,-402,754,1528,1985, 2120,1902,1557,1392,1273,777,-146,-1228,-2274,-3027, -3131,-2445,-1233,40,1027,1676,2008,1923,1559,1331, 1265,1004,385,-522,-1612,-2631,-3187,-2983,-2051,-787, 375,1268,1866,2011,1765,1523,1450,1296,886,152, -905,-2105,-3020,-3271,-2712,-1591,-361,713,1583,2019, 1954,1756,1664,1591,1373,848,-102,-1344,-2519,-3164, -3047,-2246,-1130,35,1117,1835,1996,1883,1787,1730, 1638,1372,708,-387,-1687,-2730,-3087,-2714,-1905,-860, 324,1294,1724,1747,1695,1693,1738,1725,1402,601, -628,-1951,-2810,-2942,-2523,-1721,-583,552,1272,1535, 1578,1592,1691,1836,1801,1318,268,-1147,-2363,-2941, -2961,-2497,-1504,-272,692,1211,1433,1523,1631,1806, 1929,1767,1027,-304,-1717,-2645,-3042,-2965,-2284,-1130, -2,777,1200,1387,1507,1668,1875,1991,1646,606, -784,-1950,-2688,-2991,-2670,-1731,-599,338,946,1246, 1396,1525,1711,1988,1999,1309,83,-1149,-2107,-2714, -2760,-2123,-1066,-43,670,1056,1256,1367,1506,1836, 2099,1782,812,-389,-1491,-2385,-2800,-2538,-1715,-642, 284,890,1237,1379,1461,1757,2172,2173,1496,406, -765,-1866,-2633,-2764,-2237,-1271,-254,552,1080,1293, 1318,1492,1921,2193,1883,1047,-35,-1181,-2153,-2639, -2477,-1719,-718,203,872,1150,1111,1146,1501,1883, 1872,1379,492,-599,-1665,-2452,-2661,-2214,-1340,-358, 505,998,1039,996,1258,1687,1895,1701,1093,147, -942,-1952,-2561,-2520,-1932,-1046,-114,569,771,728, 890,1282,1641,1741,1464,807,-148,-1222,-2089,-2448, -2257,-1597,-639,254,674,713,796,1101,1499,1748, 1671,1205,343,-783,-1837,-2469,-2571,-2159,-1250,-154, 600,886,1021,1245,1586,1882,1929,1638,929,-158, -1343,-2250,-2689,-2594,-1862,-714,269,785,1015,1206, 1469,1740,1866,1766,1318,417,-730,-1750,-2450,-2724, -2309,-1263,-120,621,956,1152,1369,1593,1742,1773, 1585,945,-94,-1174,-2076,-2685,-2688,-1965,-875,58, 585,866,1124,1377,1592,1765,1826,1510,715,-269, -1260,-2164,-2644,-2400,-1564,-614,49,418,703,980, 1222,1491,1766,1753,1235,406,-552,-1575,-2396,-2606, -2092,-1177,-353,153,481,787,1040,1314,1668,1854, 1593,974,100,-972,-2016,-2611,-2480,-1748,-873,-209, 251,626,893,1178,1586,1911,1865,1463,770,-227, -1360,-2246,-2506,-2068,-1279,-596,-70,386,708,958, 1340,1742,1916,1758,1275,443,-659,-1734,-2349,-2254, -1637,-958,-377,121,473,750,1138,1561,1846,1890, 1653,1073,135,-1025,-1977,-2270,-1914,-1303,-662,-108, 243,467,786,1211,1555,1732,1715,1417,752,-282, -1375,-1996,-1976,-1558,-963,-381,-5,186,415,780, 1154,1448,1633,1607,1217,370,-738,-1584,-1896,-1771, -1324,-734,-277,-31,162,474,838,1169,1433,1581, 1483,913,-94,-1077,-1681,-1864,-1637,-1101,-561,-230, -26,216,522,835,1130,1411,1579,1332,546,-444, -1250,-1727,-1773,-1382,-839,-451,-217,19,293,564, 811,1144,1531,1579,1048,155,-726,-1397,-1695,-1484, -964,-492,-220,-42,174,402,548,781,1209,1491, 1271,587,-269,-1053,-1553,-1543,-1114,-602,-242,-52, 127,314,411,517,894,1314,1392,1010,312,-531, -1262,-1553,-1315,-829,-419,-209,-19,197,288,317, 588,1067,1376,1300,854,104,-740,-1322,-1381,-980, -496,-201,-17,191,275,224,347,752,1164,1315, 1100,497,-341,-1095,-1415,-1187,-718,-344,-69,196, 351,313,321,583,978,1255,1261,860,86,-788, -1363,-1382,-1020,-650,-328,19,245,231,170,305, 631,1014,1246,1123,545,-354,-1165,-1467,-1294,-960, -606,-184,149,225,160,197,425,801,1161,1252, 878,43,-897,-1463,-1522,-1292,-936,-432,31,249, 276,294,420,720,1110,1374,1248,583,-388,-1136, -1414,-1366,-1138,-685,-176,130,218,202,216,403, 770,1202,1404,1062,224,-635,-1116,-1268,-1208,-879, -404,-26,132,123,56,96,352,826,1284,1308, 730,-106,-740,-1103,-1226,-1040,-631,-208,50,109, 55,7,122,523,1115,1448,1165,444,-260,-788, -1103,-1080,-755,-320,12,139,102,-2,-34,201, 768,1311,1331,814,141,-468,-942,-1118,-939,-532, -133,74,81,-20,-164,-140,300,938,1247,1016, 489,-92,-614,-939,-931,-629,-255,-10,44,-55, -282,-478,-257,372,903,991,690,210,-283,-655, -754,-534,-152,149,275,233,-36,-428,-506,-74, 497,777,666,297,-166,-576,-766,-645,-278,94, 335,430,263,-157,-425,-197,340,752,812,554, 110,-360,-688,-743,-516,-179,116,336,302,-62, -432,-378,102,628,885,806,463,-1,-409,-593, -492,-248,22,311,399,111,-319,-485,-201,305, 723,849,679,286,-175,-480,-508,-358,-125,209, 458,311,-139,-470,-402,-5,474,783,812,545, 72,-354,-548,-559,-446,-136,228,310,-26,-441, -544,-255,240,671,862,713,252,-247,-560,-693, -695,-462,-23,259,138,-251,-519,-414,1,506, 887,924,540,-20,-432,-677,-779,-657,-249,169, 255,-35,-406,-500,-241,219,722,1004,848,376, -80,-413,-669,-736,-477,-37,215,61,-335,-600, -540,-185,368,861,976,684,260,-120,-471,-711, -642,-266,125,175,-136,-491,-633,-476,0,608, 971,903,586,225,-172,-541,-668,-412,27,240, 57,-324,-642,-703,-395,207,737,896,750,486, 156,-237,-508,-427,-37,276,232,-99,-514,-802, -730,-264,313,653,696,559,302,-67,-421,-480, -178,201,351,192,-184,-607,-789,-536,-23,403, 594,586,427,109,-309,-544,-394,-15,282,325, 58,-428,-821,-786,-360,163,543,721,719,506, 90,-281,-347,-122,169,322,183,-290,-820,-1018, -765,-261,239,603,819,808,485,45,-183,-111, 122,344,357,-2,-597,-1038,-1064,-698,-193,277, 668,876,755,371,41,-41,118,421,629,448, -109,-714,-1014,-886,-496,-22,462,832,889,611, 252,35,41,303,644,724,344,-288,-763,-835, -600,-223,244,687,887,713,338,2,-152,-18, 338,621,530,25,-536,-810,-746,-487,-55,472, 849,862,578,186,-122,-154,122,496,630,305, -272,-694,-838,-776,-501,23,551,792,700,371, -9,-206,-56,355,696,612,114,-413,-725,-853, -772,-391,139,532,632,410,-16,-403,-500,-191, 279,471,213,-246,-636,-897,-962,-680,-149,367, 651,591,225,-280,-607,-517,-84,272,225,-113, -505,-856,-1070,-972,-534,53,533,711,528,61, -410,-539,-228,222,400,232,-124,-551,-909,-1013, -754,-231,342,737,773,400,-166,-517,-394,23, 328,345,110,-304,-739,-1011,-953,-546,38,583, 875,751,256,-253,-356,-56,295,435,311,-66, -566,-986,-1132,-934,-431,225,783,997,740,224, -64,39,323,546,565,306,-207,-761,-1093,-1087, -747,-126,596,1111,1114,643,181,67,230,461, 592,504,122,-447,-929,-1121,-973,-511,190,886, 1177,920,435,127,120,322,553,649,445,-46, -620,-1019,-1126,-907,-328,462,998,1006,644,278, 156,288,567,810,806,454,-157,-739,-1110,-1206, -876,-118,646,974,830,501,276,282,505,791, 928,751,219,-437,-991,-1348,-1294,-689,176,789, 920,719,446,295,374,632,886,874,469,-154, -788,-1332,-1564,-1200,-363,447,839,802,535,284, 207,357,670,857,671,196,-420,-1068,-1544,-1526, -910,-66,550,734,553,257,74,112,391,699, 741,500,36,-631,-1309,-1630,-1369,-681,30,434, 438,212,-40,-96,151,527,740,682,397,-171, -959,-1599,-1729,-1306,-600,-11,230,164,-69,-228, -56,342,676,799,700,290,-470,-1292,-1769,-1669, -1084,-397,78,229,72,-159,-135,203,597,865, 964,766,142,-730,-1462,-1696,-1348,-711,-126,210, 189,-41,-130,96,471,835,1114,1150,770,-2, -879,-1421,-1391,-917,-313,156,285,79,-119,-35, 252,618,1011,1257,1152,615,-237,-971,-1246,-1023, -473,122,444,371,133,73,227,514,887,1226, 1321,990,238,-608,-1140,-1193,-801,-161,357,474, 318,191,236,431,744,1106,1373,1280,704,-144, -875,-1212,-1075,-522,112,421,370,207,137,233, 461,804,1186,1349,1035,311,-508,-1101,-1268,-925, -278,213,340,234,107,99,216,481,880,1207, 1160,649,-135,-924,-1415,-1360,-837,-230,116,172, 112,83,112,265,618,1035,1187,907,259,-590, -1340,-1616,-1329,-739,-224,24,81,87,90,154, 422,876,1218,1180,729,-80,-996,-1588,-1616,-1190, -642,-272,-101,-32,-30,-31,156,600,1068,1303, 1157,549,-388,-1241,-1623,-1449,-965,-516,-244,-85, -40,-97,-17,359,859,1250,1356,1010,190,-782, -1467,-1598,-1262,-777,-369,-81,48,-9,-60,154, 579,1050,1387,1343,769,-191,-1099,-1525,-1408,-998, -549,-149,82,39,-94,-43,253,707,1196,1464, 1228,453,-544,-1270,-1450,-1209,-807,-367,-33,25, -89,-96,112,513,1049,1511,1573,1038,68,-865, -1368,-1408,-1172,-764,-354,-163,-172,-178,-34,297, 821,1419,1792,1621,853,-156,-928,-1282,-1286,-1005, -599,-314,-228,-235,-193,8,454,1094,1684,1878, 1429,513,-395,-1014,-1265,-1134,-761,-414,-242,-202, -193,-124,159,729,1426,1888,1750,1007,64,-744, -1258,-1354,-1088,-707,-427,-292,-240,-196,-20,417, 1129,1819,2009,1546,680,-254,-1029,-1430,-1383,-1073, -739,-498,-378,-328,-227,80,724,1551,2076,1980, 1350,425,-521,-1185,-1399,-1253,-959,-698,-558,-506, -481,-355,118,966,1772,2089,1816,1086,129,-718, -1195,-1289,-1122,-881,-712,-639,-644,-649,-369,369, 1292,1934,2051,1617,748,-213,-929,-1279,-1289,-1111, -926,-788,-759,-833,-732,-180,723,1560,2007,1919, 1290,353,-510,-1055,-1221,-1154,-1002,-844,-778,-884, -948,-631,151,1083,1814,2082,1749,958,36,-692, -1043,-1109,-1029,-873,-760,-843,-1018,-931,-376,511, 1422,2027,2065,1515,630,-225,-781,-1030,-1079,-961, -796,-802,-1005,-1102,-804,-88,869,1717,2106,1874, 1128,240,-450,-863,-1040,-982,-763,-637,-765,-953, -888,-429,402,1335,1984,2073,1549,685,-123,-695, -1030,-1062,-812,-581,-603,-792,-885,-663,-46,841, 1682,2088,1862,1168,348,-352,-868,-1084,-937,-671, -586,-724,-922,-902,-491,276,1209,1920,2042,1573, 835,88,-577,-991,-1024,-825,-659,-693,-886,-1005, -814,-226,666,1560,2016,1845,1258,527,-245,-847, -1066,-948,-726,-633,-753,-932,-949,-603,155,1117, 1833,1967,1607,987,220,-512,-944,-1001,-822,-654, -682,-848,-990,-907,-394,524,1432,1887,1823,1390, 696,-76,-674,-937,-888,-732,-681,-801,-1002,-1103, -840,-68,925,1641,1901,1736,1200,433,-310,-793, -925,-817,-699,-710,-885,-1124,-1114,-559,397,1296, 1830,1929,1588,906,98,-566,-893,-884,-738,-651, -736,-1013,-1209,-929,-155,773,1523,1881,1776,1237, 445,-324,-831,-961,-840,-661,-606,-817,-1129,-1099, -540,314,1144,1724,1871,1541,838,23,-626,-938, -936,-749,-564,-634,-949,-1119,-835,-137,702,1429, 1829,1764,1238,455,-283,-761,-940,-835,-600,-550, -822,-1128,-1087,-605,179,1021,1661,1898,1632,961, 183,-471,-900,-1002,-814,-670,-815,-1129,-1246,-941, -249,648,1493,2025,2044,1545,776,-18,-692,-1062, -1024,-844,-869,-1133,-1348,-1228,-692,151,1088,1870, 2209,1982,1366,568,-247,-849,-1023,-882,-819,-1023, -1318,-1404,-1100,-431,483,1423,2070,2170,1791,1112, 253,-532,-937,-926,-815,-906,-1196,-1436,-1376,-946, -167,835,1715,2143,2056,1576,772,-145,-785,-966, -889,-870,-1083,-1395,-1528,-1334,-746,200,1217,1920, 2164,1970,1344,421,-410,-838,-884,-829,-948,-1242, -1492,-1515,-1166,-390,629,1518,2043,2159,1799,998, 93,-545,-769,-744,-798,-1029,-1316,-1510,-1434,-913, -11,953,1709,2147,2119,1564,695,-115,-553,-644, -679,-855,-1142,-1446,-1578,-1294,-554,385,1264,1957, 2262,2015,1292,406,-240,-523,-622,-755,-1001,-1354, -1655,-1602,-1061,-217,687,1533,2119,2199,1716,884, 124,-307,-495,-615,-779,-1083,-1475,-1646,-1366,-722, 115,1004,1773,2179,2009,1341,547,-38,-353,-514, -625,-845,-1245,-1585,-1571,-1173,-479,399,1306,1991, 2159,1732,993,318,-162,-448,-576,-741,-1116,-1550, -1725,-1538,-1019,-238,701,1602,2109,1986,1399,692, 86,-350,-551,-668,-961,-1383,-1680,-1670,-1331,-716, 124,1081,1838,2053,1714,1094,421,-147,-451,-578, -796,-1181,-1553,-1720,-1594,-1192,-506,449,1426,1995, 1995,1572,921,261,-183,-387,-580,-932,-1387,-1726, -1803,-1607,-1105,-222,885,1770,2117,1975,1463,775, 204,-97,-275,-569,-1040,-1511,-1794,-1820,-1550,-851, 226,1277,1923,2071,1767,1154,528,140,-37,-248, -649,-1144,-1532,-1749,-1722,-1278,-361,719,1575,2020, 1957,1451,783,265,8,-155,-439,-853,-1235,-1513, -1661,-1468,-785,199,1175,1875,2105,1789,1132,494, 100,-87,-293,-631,-996,-1333,-1631,-1679,-1269,-441, 568,1496,2057,2056,1571,914,412,153,-61,-378, -744,-1120,-1539,-1794,-1641,-1042,-127,896,1741,2099, 1878,1302,737,392,155,-150,-462,-807,-1254,-1662, -1753,-1417,-696,269,1242,1898,1995,1571,1000,589, 311,25,-251,-539,-958,-1452,-1775,-1733,-1263,-407, 640,1552,1990,1823,1316,852,516,208,-74,-345, -743,-1275,-1751,-1953,-1757,-1107,-94,1014,1801,1960, 1611,1153,759,410,119,-121,-451,-951,-1516,-1931, -2005,-1628,-799,343,1393,1891,1784,1404,997,616, 316,120,-130,-557,-1115,-1658,-1988,-1925,-1381,-376, 787,1567,1740,1520,1149,739,394,186,1,-312, -791,-1363,-1829,-2030,-1815,-1047,97,1093,1563,1559, 1290,886,498,233,48,-174,-534,-1064,-1609,-2006, -2095,-1627,-604,539,1322,1629,1561,1237,828,496, 275,86,-208,-676,-1236,-1766,-2122,-2003,-1239,-109, 894,1518,1732,1578,1219,831,538,353,125,-252, -768,-1375,-1952,-2187,-1762,-777,321,1175,1640,1703, 1460,1097,771,565,388,105,-311,-884,-1585,-2128, -2090,-1379,-315,714,1420,1707,1623,1306,975,760, 602,381,55,-429,-1137,-1871,-2181,-1813,-918,184, 1135,1701,1841,1634,1282,999,800,583,315,-59, -699,-1545,-2148,-2153,-1526,-483,602,1423,1830,1807, 1522,1218,980,745,525,264,-242,-1076,-1898,-2280, -2029,-1219,-142,861,1536,1747,1580,1291,1029,781, 585,446,114,-600,-1502,-2177,-2309,-1817,-875,220, 1140,1620,1649,1462,1212,930,705,597,409,-122, -990,-1859,-2338,-2226,-1559,-527,553,1295,1541,1490, 1313,1050,800,690,623,301,-423,-1370,-2140,-2415, -2103,-1286,-183,785,1319,1476,1410,1174,898,747, 724,591,70,-828,-1788,-2427,-2509,-1979,-969,130, 926,1341,1473,1357,1092,907,884,859,537,-225, -1251,-2174,-2678,-2541,-1734,-587,424,1083,1413,1429, 1188,919,827,862,741,210,-707,-1725,-2519,-2749, -2227,-1154,-7,872,1395,1537,1328,975,738,731, 750,477,-198,-1139,-2089,-2646,-2476,-1650,-544,464, 1169,1495,1432,1107,804,731,809,733,315,-448, -1440,-2299,-2574,-2122,-1191,-124,795,1386,1559,1364, 1034,867,906,932,720,152,-784,-1830,-2494,-2466, -1807,-792,272,1136,1611,1622,1327,1072,1036,1091, 1059,751,-15,-1123,-2107,-2517,-2240,-1446,-409,601, 1328,1591,1435,1170,1073,1126,1206,1144,671,-311, -1447,-2235,-2388,-1920,-1040,-4,929,1460,1499,1295, 1143,1131,1226,1318,1114,368,-767,-1816,-2364,-2275, -1648,-686,380,1185,1479,1387,1198,1091,1139,1313, 1354,917,-47,-1225,-2124,-2447,-2170,-1387,-289,723, 1286,1387,1237,1052,998,1177,1395,1267,575,-545, -1656,-2347,-2477,-2020,-1047,84,913,1265,1273,1110, 978,1075,1357,1478,1091,141,-1037,-2009,-2533,-2480, -1793,-709,302,917,1132,1068,911,923,1189,1486, 1427,775,-302,-1404,-2252,-2611,-2297,-1407,-344,496, 952,1026,871,769,936,1294,1487,1161,308,-793, -1843,-2555,-2620,-1993,-973,51,783,1078,998,792, 780,1069,1395,1355,785,-184,-1321,-2320,-2776,-2488, -1642,-563,398,960,1071,876,709,873,1252,1462, 1222,515,-530,-1678,-2511,-2663,-2150,-1214,-177,613, 954,871,645,665,1014,1379,1446,1065,238,-908, -1980,-2547,-2430,-1734,-730,223,826,936,720,601, 826,1215,1472,1407,864,-157,-1331,-2208,-2496,-2127, -1269,-234,609,970,855,647,724,1073,1444,1631, 1404,615,-553,-1661,-2331,-2368,-1801,-843,169,814, 908,728,692,922,1313,1689,1772,1304,289,-947, -1963,-2438,-2267,-1536,-483,431,808,748,655,758, 1068,1509,1843,1738,1033,-117,-1313,-2164,-2435,-2057, -1139,-86,572,693,583,559,747,1174,1671,1903, 1577,664,-539,-1622,-2273,-2290,-1618,-561,309,684, 675,571,604,892,1393,1838,1870,1272,191,-1003, -1973,-2418,-2106,-1168,-138,538,766,711,628,747, 1138,1656,1958,1709,861,-308,-1487,-2355,-2516,-1876, -847,52,556,672,588,572,831,1361,1885,1998, 1502,513,-740,-1929,-2582,-2399,-1563,-572,157,487, 489,411,528,976,1606,2010,1878,1183,46,-1282, -2313,-2594,-2099,-1178,-277,294,465,395,376,667, 1251,1798,1959,1605,707,-609,-1894,-2614,-2530,-1820, -879,-97,311,357,277,394,868,1471,1873,1874, 1338,215,-1191,-2302,-2711,-2370,-1564,-693,-49,195, 139,149,496,1086,1647,1972,1833,1027,-303,-1669, -2548,-2662,-2119,-1254,-421,77,140,71,263,751, 1350,1881,2117,1718,616,-813,-2039,-2633,-2479,-1776, -875,-155,114,71,133,474,1023,1663,2188,2222, 1510,207,-1197,-2186,-2485,-2105,-1291,-452,26,97, 96,284,690,1298,1983,2376,2115,1129,-276,-1549, -2282,-2326,-1733,-852,-172,90,119,197,447,932, 1623,2269,2430,1838,615,-788,-1898,-2413,-2197,-1422, -586,-83,89,159,293,620,1209,1941,2436,2274, 1364,25,-1304,-2229,-2432,-1897,-1039,-340,21,151, 220,383,798,1484,2178,2416,1926,837,-524,-1746, -2382,-2208,-1491,-734,-225,6,70,140,397,983, 1781,2359,2317,1574,328,-1066,-2110,-2398,-1971,-1251, -618,-218,-65,-32,103,554,1332,2114,2461,2146, 1166,-252,-1601,-2349,-2308,-1731,-1024,-460,-144,-67, -62,190,842,1690,2343,2462,1892,688,-788,-1929, -2335,-2055,-1417,-775,-332,-157,-183,-124,328,1124, 1947,2476,2399,1559,172,-1215,-2060,-2184,-1770,-1144, -571,-241,-209,-265,-36,602,1432,2176,2521,2123, 981,-468,-1638,-2166,-2056,-1548,-904,-378,-191,-264, -221,189,900,1722,2358,2399,1636,289,-1079,-1959, -2193,-1892,-1270,-618,-263,-262,-329,-152,351,1121, 1947,2419,2154,1116,-289,-1467,-2077,-2104,-1652,-954, -429,-300,-393,-390,-107,520,1406,2208,2449,1863, 633,-704,-1674,-2080,-1908,-1310,-683,-402,-432,-508, -411,22,835,1801,2447,2346,1451,149,-1055,-1831, -2018,-1635,-997,-542,-419,-472,-500,-293,324,1273, 2179,2520,2034,925,-361,-1432,-1994,-1906,-1361,-781, -458,-396,-451,-432,-93,695,1695,2399,2380,1614, 434,-791,-1692,-1957,-1615,-1032,-570,-370,-390,-477, -379,148,1091,2029,2445,2121,1194,-44,-1205,-1847, -1812,-1350,-805,-440,-334,-418,-482,-203,567,1580, 2309,2399,1809,695,-609,-1579,-1904,-1657,-1124,-614, -325,-298,-441,-421,84,1009,1917,2382,2201,1362, 102,-1083,-1752,-1807,-1421,-884,-453,-287,-391,-530, -307,437,1413,2187,2437,1992,923,-371,-1365,-1780, -1663,-1223,-723,-402,-409,-605,-580,-45,878,1835, 2455,2439,1691,461,-769,-1555,-1752,-1490,-994,-525, -360,-528,-676,-407,327,1299,2175,2583,2250,1244, -32,-1101,-1650,-1653,-1261,-708,-349,-395,-615,-598, -130,725,1718,2473,2587,1925,741,-488,-1346,-1679, -1526,-1026,-528,-396,-577,-714,-505,139,1107,2070, 2595,2358,1408,178,-902,-1565,-1704,-1352,-792,-478, -547,-751,-768,-402,386,1418,2273,2511,1954,885, -264,-1205,-1705,-1627,-1134,-682,-588,-759,-929,-819, -276,686,1775,2463,2379,1598,492,-610,-1433,-1697, -1419,-959,-708,-771,-985,-1072,-786,-18,1104,2110, 2486,2092,1158,4,-1048,-1628,-1587,-1178,-797,-686, -851,-1082,-1072,-598,373,1508,2241,2277,1662,621, -538,-1400,-1654,-1390,-953,-673,-692,-923,-1106,-931, -214,901,1891,2314,2086,1283,124,-955,-1550,-1551, -1169,-782,-638,-767,-1014,-1084,-646,324,1431,2196, 2377,1917,900,-311,-1223,-1556,-1355,-930,-620,-599, -839,-1102,-996,-284,800,1792,2365,2323,1595,431, -688,-1350,-1430,-1118,-722,-509,-627,-960,-1124,-747, 160,1236,2107,2477,2154,1192,0,-929,-1324,-1231, -874,-533,-480,-776,-1114,-1038,-394,607,1645,2370, 2483,1868,755,-352,-1049,-1231,-1015,-624,-404,-581, -987,-1166,-812,13,1073,2039,2564,2375,1491,334, -611,-1114,-1146,-820,-466,-465,-817,-1149,-1098,-538, 423,1509,2356,2602,2089,1054,-20,-794,-1120,-979, -601,-426,-663,-1075,-1274,-1036,-316,741,1810,2454, 2372,1630,589,-369,-976,-1072,-772,-481,-547,-924, -1271,-1286,-833,66,1195,2149,2484,2087,1181,126, -747,-1144,-1010,-674,-564,-805,-1196,-1412,-1230,-563, 506,1633,2335,2333,1699,693,-342,-1035,-1153,-875, -629,-695,-1034,-1393,-1498,-1147,-275,908,1908,2322, 2078,1304,259,-650,-1050,-944,-680,-604,-839,-1235, -1542,-1522,-964,107,1284,2083,2274,1839,916,-117, -805,-942,-733,-555,-654,-994,-1399,-1629,-1391,-557, 615,1648,2216,2171,1492,444,-488,-925,-864,-627, -544,-727,-1109,-1505,-1571,-1039,-9,1120,1976,2308, 1965,1056,-4,-720,-884,-718,-549,-562,-831,-1277, -1583,-1381,-601,488,1532,2223,2288,1661,618,-328, -789,-783,-617,-507,-619,-1020,-1475,-1568,-1088,-158, 957,1937,2413,2177,1315,254,-503,-770,-718,-552, -502,-780,-1292,-1642,-1499,-825,212,1340,2187,2382, 1833,835,-86,-603,-716,-566,-387,-493,-957,-1466, -1647,-1310,-481,629,1698,2307,2149,1356,400,-316, -660,-624,-386,-313,-621,-1149,-1552,-1540,-1015,-51, 1113,2064,2356,1883,1010,163,-414,-594,-440,-274, -432,-904,-1419,-1674,-1460,-741,367,1544,2272,2236, 1598,742,-24,-454,-455,-273,-281,-633,-1177,-1624, -1718,-1314,-399,818,1855,2257,1975,1267,436,-205, -419,-285,-156,-323,-779,-1315,-1677,-1645,-1060,28, 1217,1986,2111,1671,887,99,-335,-337,-155,-149, -465,-976,-1472,-1740,-1520,-680,529,1587,2120,2039, 1445,605,-58,-290,-194,-103,-286,-729,-1266,-1721, -1817,-1289,-204,1011,1894,2200,1895,1151,357,-107, -167,-63,-119,-440,-936,-1496,-1861,-1695,-887,298, 1403,2063,2103,1556,733,75,-182,-146,-106,-260, -621,-1159,-1700,-1855,-1382,-392,785,1746,2163,1910, 1187,393,-89,-201,-169,-186,-373,-820,-1439,-1876, -1761,-1039,58,1186,1960,2079,1575,791,166,-101, -130,-98,-150,-459,-1057,-1670,-1895,-1530,-651,490, 1509,2029,1860,1190,476,43,-114,-125,-108,-267, -750,-1417,-1887,-1865,-1281,-259,891,1750,1976,1560, 858,270,-55,-157,-112,-117,-419,-1023,-1648,-1947, -1718,-952,169,1257,1865,1768,1202,562,83,-145, -116,7,-94,-559,-1217,-1748,-1875,-1461,-534,642, 1568,1855,1530,933,354,-51,-157,-17,46,-231, -828,-1478,-1885,-1814,-1159,-31,1127,1797,1801,1359, 758,208,-78,-45,78,-21,-471,-1123,-1699,-1949, -1643,-719,500,1476,1853,1665,1150,535,70,-52, 68,107,-153,-706,-1356,-1839,-1893,-1298,-185,952, 1649,1777,1450,873,294,-19,23,164,90,-299, -923,-1569,-1950,-1744,-867,307,1278,1762,1710,1248, 628,148,9,124,183,-29,-525,-1190,-1794,-1962, -1422,-352,771,1575,1867,1639,1064,460,125,118, 212,158,-162,-747,-1448,-1907,-1749,-926,207,1218, 1816,1876,1448,810,316,144,192,233,104,-322, -1030,-1707,-1921,-1450,-460,642,1503,1891,1728,1176, 597,273,208,253,251,0,-623,-1424,-1967,-1889, -1184,-124,926,1642,1819,1481,927,491,294,276, 334,257,-204,-1002,-1764,-2069,-1725,-848,252,1227, 1742,1678,1220,719,380,248,288,336,104,-547, -1381,-1963,-1985,-1408,-419,664,1454,1686,1409,919, 479,218,188,305,278,-153,-937,-1700,-2061,-1846, -1096,-27,971,1510,1495,1129,673,308,156,242, 349,139,-500,-1330,-1954,-2098,-1668,-742,365,1208, 1518,1372,984,539,245,226,377,359,-82,-867, -1658,-2109,-2029,-1352,-268,770,1382,1502,1253,803, 387,234,353,488,295,-331,-1163,-1855,-2141,-1825, -918,195,1054,1465,1436,1080,618,323,330,514, 527,118,-625,-1448,-2043,-2122,-1546,-521,494,1172, 1428,1282,869,473,357,511,656,479,-100,-921, -1719,-2155,-1961,-1156,-109,782,1302,1389,1100,656, 379,430,631,660,321,-373,-1228,-1923,-2086,-1594, -662,326,1070,1402,1287,867,472,374,542,714, 632,163,-629,-1485,-1979,-1843,-1163,-221,660,1236, 1365,1065,626,396,472,686,798,585,-53,-958, -1716,-1954,-1593,-800,155,964,1389,1322,923,569, 486,623,794,780,359,-472,-1373,-1913,-1877,-1306, -397,580,1294,1508,1244,828,587,594,761,898, 725,79,-847,-1633,-1941,-1685,-973,-2,901,1393, 1356,1001,651,511,625,858,924,547,-266,-1181, -1797,-1905,-1495,-661,329,1071,1308,1117,768,510, 493,711,930,822,217,-699,-1524,-1956,-1876,-1280, -319,622,1148,1174,887,563,409,523,808,934, 596,-192,-1108,-1797,-2053,-1771,-978,38,810,1104, 986,665,388,360,622,909,843,269,-617,-1465, -2018,-2093,-1587,-645,305,882,1017,821,506,339, 487,833,994,681,-70,-988,-1774,-2184,-2017,-1280, -289,535,947,940,666,401,409,715,1040,1005, 490,-342,-1243,-1936,-2125,-1687,-812,133,800,1027, 867,548,390,575,951,1143,891,240,-643,-1520, -2040,-1945,-1289,-353,515,1017,1060,789,497,497, 809,1109,1106,696,-70,-1012,-1798,-2063,-1706,-908, 34,782,1094,964,629,461,646,984,1172,1037, 492,-389,-1322,-1925,-1944,-1399,-521,362,938,1017, 721,436,464,756,1065,1166,890,177,-791,-1636, -2013,-1792,-1081,-154,649,1007,861,544,423,588, 904,1157,1132,651,-235,-1209,-1878,-2000,-1559,-723, 213,845,934,666,439,464,708,1038,1238,1039, 343,-634,-1507,-1961,-1865,-1247,-314,528,895,785, 526,410,536,857,1202,1282,855,-16,-1002,-1740, -2007,-1713,-921,36,687,823,645,462,456,682, 1072,1360,1228,570,-403,-1334,-1938,-2012,-1486,-564, 304,723,699,513,408,513,860,1286,1440,1069, 235,-760,-1614,-2053,-1859,-1086,-137,527,737,639, 470,429,649,1076,1430,1368,775,-158,-1144,-1899, -2094,-1594,-677,172,645,725,573,426,493,836, 1264,1458,1166,411,-578,-1543,-2128,-2014,-1291,-381, 321,631,598,427,366,592,1046,1422,1428,951, 70,-991,-1869,-2170,-1778,-959,-134,401,559,441, 297,383,771,1253,1498,1318,672,-342,-1407,-2064, -2047,-1453,-607,118,503,520,357,293,533,988, 1377,1470,1122,285,-832,-1776,-2149,-1864,-1140,-324, 281,492,391,258,359,730,1181,1486,1454,914, -111,-1239,-1988,-2107,-1653,-884,-133,315,355,210, 208,475,920,1368,1604,1394,607,-541,-1570,-2084, -1972,-1369,-559,104,372,303,213,333,674,1135, 1550,1649,1167,153,-1006,-1834,-2079,-1748,-1016,-224, 273,361,269,277,492,902,1399,1755,1638,886, -259,-1318,-1928,-1954,-1448,-658,6,287,272,220, 320,635,1137,1649,1855,1469,503,-668,-1594,-2004, -1805,-1130,-357,133,269,239,242,420,836,1400, 1835,1794,1127,31,-1087,-1856,-2035,-1598,-834,-168, 172,252,243,299,564,1077,1644,1902,1571,689, -445,-1462,-2010,-1900,-1279,-533,-8,218,244,227, 348,735,1326,1807,1816,1238,223,-908,-1771,-2029, -1655,-969,-335,51,178,154,167,415,959,1577, 1900,1683,909,-222,-1327,-1972,-1953,-1436,-785,-257, 39,103,66,171,595,1241,1778,1905,1476,519, -690,-1662,-2020,-1768,-1188,-571,-116,76,50,19, 270,839,1477,1875,1803,1160,54,-1106,-1825,-1905, -1505,-914,-361,-16,32,-62,5,422,1062,1653, 1928,1662,792,-403,-1406,-1858,-1743,-1269,-686,-201, 5,-59,-110,132,678,1332,1839,1921,1378,300, -867,-1651,-1862,-1592,-1052,-464,-77,-31,-126,-46, 335,940,1577,1951,1765,946,-218,-1242,-1779,-1780, -1375,-770,-246,-46,-120,-170,16,476,1126,1735, 1937,1485,489,-632,-1460,-1794,-1628,-1110,-512,-148, -116,-215,-191,100,677,1391,1908,1864,1158,74, -948,-1603,-1747,-1413,-832,-348,-164,-213,-278,-153, 284,989,1709,2027,1686,789,-303,-1212,-1683,-1619, -1144,-597,-262,-190,-256,-262,-18,560,1346,1954, 1982,1361,354,-695,-1475,-1732,-1450,-914,-449,-217, -197,-259,-196,186,899,1660,2030,1773,990,-48, -1027,-1613,-1617,-1197,-681,-317,-186,-234,-295,-124, 429,1225,1856,1974,1519,632,-424,-1280,-1622,-1429, -963,-514,-248,-207,-313,-317,39,767,1538,1958, 1838,1191,179,-853,-1499,-1588,-1257,-774,-370,-182, -235,-366,-241,310,1086,1718,1927,1593,759,-308, -1196,-1584,-1466,-1054,-587,-258,-192,-342,-397,-65, 626,1383,1887,1910,1354,363,-679,-1377,-1560,-1324, -889,-471,-264,-344,-485,-335,213,987,1692,2037, 1824,1040,-33,-967,-1464,-1485,-1164,-698,-341,-288, -448,-473,-128,540,1320,1927,2063,1584,631,-420, -1187,-1494,-1370,-948,-480,-265,-356,-497,-372,126, 876,1643,2103,1978,1253,213,-748,-1345,-1483,-1214, -731,-369,-333,-492,-532,-246,385,1201,1893,2119, 1704,803,-220,-1041,-1470,-1425,-1011,-556,-369,-468, -608,-528,-106,636,1469,2019,1987,1357,403,-552, -1255,-1514,-1289,-836,-519,-496,-645,-717,-504,78, 936,1738,2089,1818,1054,80,-825,-1389,-1439,-1099, -722,-565,-642,-787,-767,-399,361,1279,1936,2023, 1534,663,-327,-1121,-1444,-1271,-879,-598,-563,-706, -840,-719,-170,712,1553,1966,1814,1170,219,-722, -1311,-1376,-1065,-701,-533,-595,-775,-842,-536,203, 1120,1796,1972,1626,828,-182,-1012,-1367,-1244,-893, -608,-541,-671,-842,-767,-230,650,1502,1987,1963, 1409,456,-539,-1183,-1312,-1063,-718,-510,-546,-757, -883,-615,109,1008,1743,2062,1828,1068,52,-819, -1232,-1172,-871,-572,-465,-626,-872,-856,-365,466, 1329,1944,2069,1599,690,-293,-968,-1166,-995,-683, -459,-502,-771,-951,-717,-44,834,1636,2093,1980, 1296,323,-534,-1011,-1060,-807,-504,-418,-632,-911, -906,-464,319,1205,1915,2167,1799,952,7,-702, -1024,-951,-641,-424,-525,-820,-983,-788,-188,680, 1555,2121,2111,1505,586,-269,-824,-983,-781,-493, -454,-708,-988,-1021,-677,43,974,1780,2126,1848, 1103,216,-531,-921,-887,-614,-453,-594,-904,-1091, -972,-458,402,1346,1985,2044,1544,717,-158,-793, -986,-803,-566,-564,-808,-1083,-1153,-867,-168,795, 1658,2047,1845,1183,301,-512,-956,-938,-691,-562, -702,-995,-1224,-1181,-727,130,1120,1813,1957,1581, 835,-46,-699,-902,-757,-568,-589,-846,-1161,-1328, -1158,-515,465,1393,1898,1864,1339,494,-320,-765, -780,-604,-523,-665,-982,-1283,-1352,-969,-129,862, 1631,1945,1704,980,97,-573,-814,-705,-544,-544, -746,-1087,-1341,-1223,-605,337,1253,1844,1927,1442, 591,-234,-702,-746,-591,-496,-579,-863,-1222,-1344, -995,-209,750,1573,1981,1817,1132,240,-447,-707, -644,-508,-475,-660,-1041,-1340,-1253,-692,198,1154, 1866,2061,1646,814,-26,-534,-665,-576,-462,-518, -839,-1250,-1407,-1130,-424,542,1469,2020,1950,1312, 445,-247,-575,-582,-434,-362,-570,-1004,-1353,-1355, -914,-90,901,1717,2012,1665,908,125,-397,-575, -471,-300,-356,-712,-1150,-1382,-1221,-617,319,1301, 1940,1948,1397,634,-36,-427,-482,-331,-280,-530, -972,-1347,-1433,-1098,-330,705,1623,2019,1785,1149, 416,-161,-411,-355,-243,-360,-743,-1206,-1485,-1420, -917,6,1069,1799,1924,1529,860,173,-261,-340, -220,-190,-430,-870,-1297,-1497,-1306,-630,400,1357, 1836,1750,1239,528,-62,-311,-252,-135,-225,-576, -1036,-1411,-1500,-1112,-232,827,1619,1892,1643,1022, 324,-133,-245,-158,-145,-387,-824,-1289,-1598,-1491, -837,197,1208,1828,1900,1473,778,169,-125,-136, -86,-202,-539,-1016,-1479,-1655,-1302,-443,617,1487, 1893,1736,1143,434,-37,-165,-127,-149,-340,-721, -1230,-1614,-1560,-959,8,1014,1715,1883,1499,801, 170,-140,-178,-159,-227,-479,-944,-1458,-1686,-1396, -612,409,1327,1823,1736,1176,499,42,-122,-115, -99,-227,-607,-1168,-1611,-1629,-1134,-241,772,1554, 1806,1479,844,282,-23,-118,-104,-128,-374,-893, -1459,-1741,-1542,-868,108,1091,1694,1682,1189,579, 132,-91,-132,-84,-169,-554,-1140,-1624,-1731,-1354, -539,498,1368,1702,1451,892,350,-11,-135,-53, 10,-200,-713,-1297,-1660,-1607,-1067,-121,908,1565, 1626,1228,674,183,-98,-97,31,-17,-391,-971, -1497,-1721,-1479,-726,350,1288,1686,1532,1064,518, 89,-74,3,67,-144,-641,-1227,-1658,-1716,-1241, -279,797,1518,1670,1377,860,335,12,-19,90, 39,-306,-860,-1414,-1735,-1585,-855,210,1133,1590, 1559,1164,614,153,-15,79,154,-22,-471,-1066, -1585,-1759,-1353,-424,623,1362,1629,1452,958,407, 73,42,149,126,-170,-702,-1318,-1752,-1678,-990, 42,995,1574,1673,1335,777,303,105,144,191, 61,-324,-926,-1526,-1761,-1389,-505,523,1344,1728, 1613,1129,569,214,144,208,196,-24,-526,-1203, -1696,-1666,-1053,-91,876,1543,1720,1420,885,428, 215,204,252,187,-182,-858,-1544,-1845,-1563,-787, 208,1101,1604,1595,1193,704,377,253,270,308, 130,-437,-1217,-1799,-1864,-1358,-452,556,1327,1620, 1421,969,546,295,234,294,266,-93,-794,-1527, -1904,-1721,-1024,-37,904,1465,1501,1152,701,343, 173,211,302,152,-393,-1150,-1752,-1907,-1526,-700, 311,1123,1450,1299,902,489,212,158,275,301, -40,-740,-1489,-1924,-1869,-1297,-344,641,1276,1410, 1173,776,397,206,261,373,241,-301,-1088,-1751, -2005,-1733,-943,89,952,1381,1359,1033,611,299, 247,389,432,111,-578,-1352,-1886,-1958,-1456,-509, 487,1162,1401,1253,862,471,297,378,514,401, -110,-874,-1601,-1996,-1854,-1147,-158,705,1214,1317, 1077,679,394,377,538,577,275,-369,-1170,-1824, -2023,-1624,-768,188,926,1285,1230,883,514,364, 465,613,523,75,-655,-1446,-1943,-1868,-1236,-319, 561,1152,1314,1076,668,398,404,571,663,463, -103,-911,-1627,-1892,-1576,-828,64,819,1233,1207, 856,495,389,525,705,714,364,-362,-1201,-1760, -1786,-1291,-463,412,1070,1320,1133,753,503,507, 668,783,634,77,-773,-1537,-1863,-1638,-963,-61, 801,1333,1369,1052,707,549,615,787,832,503, -233,-1104,-1715,-1813,-1404,-622,300,1038,1335,1184, 837,571,520,670,857,783,260,-575,-1375,-1808, -1735,-1192,-324,567,1120,1193,948,643,476,542, 757,868,595,-105,-970,-1650,-1897,-1637,-936,0, 788,1127,1035,738,476,421,602,834,805,319, -501,-1330,-1861,-1918,-1461,-611,300,893,1038,845, 540,357,437,710,877,642,-33,-898,-1634,-2010, -1878,-1226,-298,499,914,930,688,427,379,603, 881,879,423,-379,-1237,-1882,-2091,-1725,-899,13, 668,921,816,547,383,502,810,1009,819,205, -635,-1457,-1976,-1948,-1360,-462,367,857,941,725, 464,428,679,986,1031,663,-52,-925,-1678,-1982, -1690,-941,-43,674,1002,937,657,466,573,882, 1087,960,437,-385,-1268,-1864,-1913,-1406,-565,293, 876,1029,815,535,496,732,1015,1105,843,182, -715,-1523,-1910,-1732,-1074,-205,555,952,891,585, 419,553,843,1072,1053,631,-167,-1081,-1754,-1912, -1522,-749,120,751,932,720,471,465,684,968, 1130,958,340,-563,-1422,-1897,-1821,-1255,-393,427, 863,822,560,422,527,803,1088,1158,794,6, -931,-1651,-1909,-1638,-918,-17,658,853,678,464, 433,638,969,1213,1121,553,-358,-1262,-1827,-1895, -1435,-584,265,730,745,556,434,514,804,1155, 1292,989,232,-733,-1549,-1956,-1817,-1145,-237,453, 707,618,450,420,613,988,1320,1298,772,-120, -1063,-1758,-1969,-1571,-731,111,604,696,560,429, 483,777,1184,1394,1150,440,-507,-1404,-1959,-1912, -1262,-366,342,668,657,502,426,587,966,1313, 1331,885,61,-914,-1741,-2082,-1751,-951,-116,436, 618,527,380,417,729,1166,1411,1241,638,-294, -1296,-1975,-2024,-1467,-644,79,472,515,367,295, 491,912,1318,1418,1082,324,-710,-1645,-2061,-1821, -1129,-329,277,518,447,302,344,668,1106,1391, 1337,829,-103,-1168,-1914,-2047,-1600,-840,-93,373, 461,327,261,460,875,1278,1463,1264,560,-508, -1506,-2028,-1944,-1386,-615,45,345,300,183,278, 613,1058,1436,1527,1123,206,-914,-1765,-2048,-1758, -1080,-304,225,356,253,229,430,813,1264,1579, 1481,809,-269,-1323,-1951,-1983,-1490,-721,-21,322, 326,253,326,608,1052,1510,1703,1359,468,-647, -1551,-1956,-1790,-1169,-405,126,282,241,240,401, 775,1297,1712,1705,1116,88,-993,-1747,-1952,-1582, -856,-169,188,249,225,288,536,1005,1549,1826, 1555,730,-368,-1366,-1945,-1909,-1339,-590,-35,204, 241,244,370,723,1265,1737,1792,1255,271,-822, -1686,-2008,-1696,-1009,-337,83,231,231,245,461, 934,1493,1813,1619,879,-175,-1222,-1889,-1911,-1403, -732,-190,108,180,148,222,583,1174,1697,1827, 1408,509,-614,-1567,-1984,-1775,-1199,-586,-136,77, 95,82,287,811,1442,1837,1757,1134,79,-1051, -1809,-1952,-1573,-963,-393,-26,81,27,74,445, 1066,1639,1867,1585,767,-372,-1375,-1874,-1781,-1295, -707,-229,5,-10,-70,116,627,1276,1765,1842, 1362,361,-780,-1582,-1835,-1587,-1056,-500,-118,-19, -94,-54,298,899,1520,1881,1741,996,-133,-1170, -1746,-1786,-1407,-831,-303,-43,-63,-113,69,532, 1163,1730,1914,1493,529,-602,-1454,-1798,-1650,-1159, -566,-156,-69,-153,-129,150,685,1353,1846,1817, 1151,78,-948,-1592,-1749,-1452,-884,-364,-137,-163, -223,-121,268,921,1605,1941,1647,774,-310,-1200, -1675,-1649,-1205,-642,-277,-193,-249,-252,-25,523, 1264,1863,1946,1384,395,-644,-1403,-1686,-1460,-946, -472,-235,-218,-266,-188,184,860,1602,2004,1793, 1017,-25,-986,-1582,-1650,-1260,-738,-355,-195,-217, -247,-69,446,1194,1831,1977,1518,625,-407,-1248, -1634,-1492,-1021,-548,-258,-190,-260,-249,62,710, 1463,1925,1839,1215,247,-750,-1424,-1577,-1294,-816, -412,-225,-245,-327,-205,284,1034,1698,1943,1638, 840,-201,-1104,-1549,-1493,-1104,-624,-286,-193,-292, -340,-63,580,1325,1828,1855,1334,391,-630,-1344, -1559,-1340,-892,-456,-215,-240,-373,-299,169,907, 1597,1944,1757,1026,-12,-949,-1462,-1501,-1191,-744, -385,-277,-397,-450,-155,494,1263,1856,2008,1580, 671,-378,-1173,-1507,-1401,-1015,-571,-308,-338,-469, -365,107,825,1564,2015,1937,1277,267,-700,-1321, -1482,-1240,-783,-397,-292,-415,-467,-205,389,1160, 1840,2108,1765,903,-132,-972,-1412,-1409,-1053,-604, -365,-404,-521,-446,-34,673,1468,2022,2027,1415, 444,-524,-1216,-1479,-1298,-862,-499,-420,-538,-595, -400,132,929,1693,2058,1802,1033,62,-821,-1378, -1457,-1143,-734,-513,-558,-689,-665,-328,358,1229, 1904,2042,1579,718,-257,-1059,-1437,-1340,-984,-674, -599,-712,-803,-662,-153,688,1551,2021,1894,1254, 309,-645,-1282,-1418,-1161,-803,-592,-625,-785,-830, -552,129,1032,1748,1962,1620,843,-131,-970,-1377, -1299,-961,-656,-561,-679,-833,-768,-302,524,1382, 1898,1892,1372,472,-497,-1175,-1366,-1148,-807,-599, -604,-754,-847,-608,67,962,1705,2027,1812,1096, 102,-795,-1268,-1255,-954,-647,-529,-639,-833,-825, -382,431,1296,1905,2035,1593,709,-278,-991,-1240, -1092,-773,-531,-525,-726,-888,-700,-72,787,1587, 2048,1952,1297,334,-552,-1062,-1141,-913,-611,-478, -612,-856,-887,-496,257,1135,1852,2115,1784,965, 1,-736,-1060,-997,-712,-474,-500,-763,-956,-791, -214,631,1493,2069,2098,1535,616,-271,-853,-1028, -856,-565,-459,-646,-921,-962,-609,112,1013,1805, 2189,1951,1197,282,-484,-913,-938,-685,-471,-545, -834,-1042,-941,-448,377,1289,1955,2081,1614,790, -68,-709,-951,-818,-564,-497,-711,-998,-1092,-836, -181,746,1621,2068,1909,1270,407,-416,-914,-960, -735,-564,-647,-929,-1155,-1101,-664,157,1133,1861, 2043,1660,899,11,-705,-990,-869,-642,-597,-809, -1114,-1260,-1074,-460,485,1408,1929,1888,1362,537, -303,-808,-865,-693,-566,-673,-967,-1249,-1320,-981, -187,814,1619,1950,1736,1068,191,-516,-798,-722, -569,-569,-783,-1103,-1344,-1272,-708,227,1172,1802, 1924,1496,671,-177,-695,-795,-649,-536,-617,-881, -1199,-1339,-1042,-281,680,1513,1951,1826,1173,283, -434,-742,-705,-558,-516,-673,-998,-1293,-1257,-732, 136,1063,1767,1999,1635,829,-20,-557,-696,-604, -494,-530,-795,-1167,-1348,-1096,-397,540,1435,1993, 1984,1389,508,-236,-605,-647,-539,-470,-625,-1008, -1351,-1356,-911,-89,891,1712,2060,1777,1015,177, -397,-607,-547,-404,-417,-721,-1163,-1407,-1238,-634, 271,1230,1888,1949,1424,627,-75,-487,-569,-419, -308,-466,-872,-1267,-1363,-1030,-293,678,1575,2011, 1804,1151,392,-194,-469,-436,-293,-339,-673,-1118, -1412,-1348,-848,37,1060,1823,2008,1617,916,206, -269,-402,-297,-250,-469,-902,-1322,-1495,-1272,-596, 409,1378,1912,1853,1338,630,8,-307,-297,-184, -249,-581,-1033,-1397,-1473,-1096,-257,784,1585,1867, 1626,1017,319,-167,-300,-197,-136,-337,-747,-1192, -1488,-1415,-828,157,1150,1765,1861,1468,788,156, -185,-223,-139,-213,-538,-995,-1422,-1606,-1300,-474, 577,1458,1898,1804,1258,560,45,-146,-122,-115, -312,-702,-1181,-1566,-1574,-1021,-55,948,1667,1893, 1578,908,253,-104,-165,-128,-202,-472,-903,-1379, -1638,-1391,-625,390,1307,1836,1812,1295,591,55, -162,-179,-178,-307,-643,-1140,-1579,-1630,-1144,-249, 761,1555,1854,1588,960,340,-19,-119,-108,-139, -352,-811,-1353,-1660,-1492,-835,131,1084,1688,1735, 1284,654,167,-66,-115,-112,-210,-562,-1117,-1590, -1704,-1339,-520,502,1360,1739,1544,998,431,47, -113,-118,-112,-304,-768,-1328,-1691,-1635,-1087,-159, 845,1532,1652,1280,715,221,-64,-113,-28,-57, -383,-930,-1450,-1673,-1445,-749,250,1168,1618,1513, 1054,499,64,-121,-63,22,-139,-603,-1183,-1604, -1667,-1247,-356,699,1456,1667,1402,889,352,3, -64,28,3,-321,-869,-1406,-1718,-1604,-932,116, 1081,1606,1606,1224,685,201,-27,14,88,-71, -511,-1078,-1562,-1733,-1368,-486,557,1336,1622,1446, 985,455,81,6,114,113,-166,-683,-1272,-1691, -1662,-1054,-59,907,1495,1600,1298,778,285,51, 91,163,30,-361,-930,-1501,-1774,-1474,-642,384, 1223,1641,1592,1177,624,216,112,177,158,-79, -554,-1163,-1652,-1683,-1108,-134,840,1508,1722,1483, 964,455,192,169,208,123,-197,-779,-1416,-1736, -1496,-730,273,1142,1632,1646,1256,732,357,213, 217,220,51,-423,-1124,-1701,-1801,-1331,-447,540, 1302,1627,1470,1023,581,328,251,276,240,-78, -731,-1455,-1868,-1734,-1070,-98,848,1464,1581,1277, 816,449,271,255,291,146,-354,-1080,-1695,-1882, -1514,-695,301,1127,1512,1410,1009,574,285,193, 248,254,-46,-681,-1397,-1851,-1829,-1276,-354,610, 1262,1417,1175,768,392,192,197,282,178,-301, -1033,-1678,-1952,-1720,-994,7,892,1352,1347,1047, 646,323,222,307,335,44,-599,-1347,-1873,-1954, -1492,-587,418,1134,1395,1266,900,506,282,311, 432,331,-146,-871,-1565,-1955,-1831,-1149,-153,740, 1263,1365,1125,726,405,321,444,499,220,-390, -1142,-1775,-2000,-1648,-808,165,913,1285,1259,942, 572,381,435,572,497,61,-650,-1418,-1932,-1932, -1352,-427,479,1096,1308,1142,770,455,399,542, 618,393,-175,-946,-1653,-1965,-1692,-935,8,811, 1255,1274,969,584,388,472,643,627,277,-394, -1190,-1772,-1838,-1352,-522,363,1016,1265,1115,745, 452,430,595,722,612,121,-670,-1432,-1819,-1660, -1024,-145,684,1204,1283,1020,667,493,559,711, 743,453,-227,-1071,-1695,-1838,-1447,-657,265,1030, 1385,1282,935,641,564,683,820,733,247,-564, -1363,-1805,-1733,-1171,-303,580,1179,1317,1076,731, 535,570,754,858,624,-31,-883,-1566,-1833,-1595, -908,3,796,1184,1128,836,567,486,617,815, 809,373,-420,-1240,-1772,-1859,-1440,-616,305,946, 1125,936,635,446,474,687,852,668,35,-814, -1544,-1922,-1817,-1211,-293,532,970,990,748,469, 369,529,795,840,433,-339,-1168,-1791,-2011,-1703, -930,-6,671,940,861,604,405,446,703,916, 761,149,-696,-1487,-1996,-2011,-1474,-586,265,784, 908,735,489,418,607,898,981,630,-96,-955, -1682,-2010,-1780,-1064,-159,565,911,886,638,443, 510,797,1030,933,422,-374,-1224,-1826,-1918,-1468, -642,229,822,1005,844,579,494,687,974,1065, 789,142,-724,-1524,-1929,-1777,-1147,-274,521,962, 974,715,508,577,847,1073,1043,629,-144,-1040, -1711,-1895,-1540,-791,74,730,962,798,517,442, 648,936,1094,941,369,-500,-1349,-1850,-1815,-1282, -445,377,860,886,637,455,527,783,1036,1096, 767,15,-898,-1623,-1903,-1658,-970,-85,609,867, 740,512,458,617,897,1124,1056,529,-343,-1223, -1782,-1854,-1426,-614,237,736,785,596,451,501, 738,1049,1203,942,231,-691,-1485,-1886,-1777,-1171, -283,459,755,684,514,457,607,925,1225,1217, 736,-111,-1032,-1718,-1952,-1629,-848,27,577,694, 572,445,476,740,1126,1342,1136,472,-455,-1336, -1884,-1885,-1307,-426,303,650,663,524,440,572, 927,1280,1335,922,117,-831,-1631,-1981,-1714,-953, -101,477,683,617,475,473,720,1101,1348,1209, 614,-280,-1218,-1883,-1982,-1491,-672,90,520,591, 473,393,534,899,1276,1387,1067,324,-657,-1553, -2006,-1844,-1199,-394,230,500,472,347,360,646, 1079,1382,1335,849,-33,-1055,-1808,-2004,-1614,-862, -103,382,514,413,319,454,829,1227,1402,1191, 523,-481,-1450,-1987,-1922,-1358,-573,96,427,429, 315,340,614,1027,1369,1430,1040,180,-886,-1728, -2031,-1764,-1117,-371,170,347,272,225,398,771, 1207,1503,1412,800,-205,-1242,-1904,-1978,-1539,-821, -121,281,335,252,300,565,981,1406,1589,1271, 431,-650,-1564,-1984,-1829,-1243,-484,113,336,308, 290,428,763,1229,1612,1619,1063,66,-990,-1728, -1925,-1593,-913,-208,199,280,255,303,529,956, 1455,1736,1516,751,-316,-1289,-1850,-1844,-1342,-617, -31,219,255,260,374,705,1210,1667,1760,1284, 339,-741,-1595,-1947,-1720,-1094,-403,48,215,243, 287,491,917,1444,1776,1629,930,-116,-1147,-1817, -1908,-1471,-792,-199,129,223,233,323,614,1120, 1616,1767,1381,515,-565,-1481,-1911,-1748,-1187,-550, -84,130,165,184,360,786,1358,1767,1715,1112, 100,-983,-1742,-1937,-1591,-992,-440,-66,81,84, 154,476,1037,1588,1831,1570,777,-337,-1352,-1892, -1837,-1360,-772,-279,9,55,32,198,666,1269, 1722,1789,1325,364,-758,-1586,-1858,-1619,-1105,-555, -146,1,-47,-13,302,861,1454,1819,1711,1020, -62,-1101,-1702,-1764,-1419,-889,-384,-84,-61,-101, 76,525,1124,1670,1878,1506,592,-523,-1409,-1799, -1677,-1220,-666,-225,-62,-100,-52,245,762,1368, 1816,1793,1158,105,-938,-1611,-1775,-1498,-965,-426, -120,-105,-155,-31,347,926,1534,1855,1602,771, -316,-1214,-1677,-1665,-1267,-711,-278,-132,-192,-204, 15,513,1179,1739,1865,1367,394,-644,-1396,-1698, -1511,-1013,-515,-237,-203,-261,-189,168,794,1486, 1914,1781,1056,25,-931,-1532,-1640,-1295,-775,-381, -218,-227,-254,-82,409,1119,1755,1957,1542,649, -387,-1231,-1645,-1541,-1086,-603,-300,-208,-239,-212, 80,695,1424,1901,1841,1218,249,-740,-1429,-1612, -1329,-853,-446,-238,-229,-287,-176,268,983,1647, 1915,1647,893,-125,-1038,-1522,-1491,-1120,-671,-341, -228,-292,-318,-67,538,1290,1812,1859,1386,478, -552,-1306,-1564,-1365,-933,-508,-254,-230,-331,-276, 144,841,1521,1862,1695,1015,16,-920,-1460,-1507, -1187,-740,-377,-227,-301,-384,-162,422,1149,1732, 1896,1517,655,-371,-1157,-1495,-1398,-1031,-621,-351, -326,-435,-378,52,751,1469,1926,1881,1272,284, -687,-1306,-1470,-1259,-854,-477,-325,-403,-455,-223, 343,1079,1733,2014,1728,926,-102,-960,-1395,-1399, -1083,-646,-354,-347,-461,-406,-21,656,1412,1946, 2001,1476,528,-475,-1170,-1428,-1296,-902,-508,-365, -455,-522,-333,198,965,1679,2028,1819,1079,79, -807,-1336,-1433,-1146,-716,-456,-454,-563,-551,-229, 425,1222,1843,1988,1552,694,-270,-1042,-1432,-1361, -985,-635,-526,-604,-694,-571,-94,679,1496,1989, 1916,1296,378,-548,-1218,-1428,-1208,-853,-635,-634, -749,-781,-517,130,999,1732,2006,1704,942,-25, -884,-1348,-1326,-1020,-723,-596,-672,-806,-758,-341, 436,1293,1844,1870,1381,518,-438,-1141,-1364,-1174, -852,-622,-589,-727,-825,-624,-20,834,1587,1928, 1735,1074,131,-759,-1270,-1297,-1021,-726,-584,-641, -796,-790,-383,394,1242,1842,1980,1581,746,-239, -994,-1283,-1157,-851,-607,-555,-699,-847,-701,-112, 738,1521,1969,1900,1298,355,-555,-1106,-1205,-988, -691,-525,-601,-808,-861,-517,212,1076,1764,2024, 1730,968,17,-756,-1114,-1070,-805,-552,-521,-716, -901,-784,-255,562,1401,1964,2010,1500,627,-276, -881,-1070,-916,-627,-475,-591,-839,-913,-601,72, 932,1703,2091,1911,1215,290,-512,-954,-996,-757, -512,-506,-731,-936,-854,-375,419,1290,1950,2117, 1695,876,-7,-673,-955,-855,-595,-480,-637,-908, -1020,-788,-172,703,1547,2033,1939,1337,494,-297, -805,-912,-717,-525,-570,-816,-1046,-1022,-609,156, 1066,1791,2033,1709,976,117,-595,-934,-874,-660, -590,-749,-1004,-1142,-960,-367,518,1391,1923,1918, 1406,595,-244,-815,-948,-783,-624,-672,-908,-1158, -1202,-859,-107,836,1609,1930,1722,1089,247,-477, -828,-807,-644,-594,-765,-1058,-1273,-1206,-700,185, 1123,1753,1889,1515,767,-55,-615,-771,-662,-551, -625,-888,-1191,-1321,-1084,-387,563,1399,1844,1775, 1218,383,-359,-727,-733,-598,-553,-702,-993,-1256, -1250,-792,57,206,583,854,1099,1021,744,140, -969,-1707,-1529,-1363,-1400,-549,967,2136,1792,169, -198,-1154,-4574,-6889,-5333,-2903,-1034,2508,7105,9793, 8989,6497,5157,3655,-1181,-6071,-6879,-6561,-6302,-4005, 227,5186,7197,6142,6265,5964,1581,-4044,-5868,-5083, -3304,170,4425,7743,8166,5835,4174,3612,-304,-6136, -8516,-9268,-9816,-7464,-1846,4508,7815,6706,5173,5514, 2798,-3428,-7311,-7937,-7891,-6532,-2426,3025,7036,7233, 6400,7815,6848,1618,-3728,-7395,-10351,-11369,-8872,-3584, 1634,3490,4383,7602,9029,5169,-420,-4503,-7925,-10469, -9666,-4264,2794,5958,6826,9292,10686,7983,3050,-997, -4745,-8612,-10818,-7888,-523,3727,4757,7032,9017,7722, 3614,-546,-3923,-6927,-9975,-8616,-903,5447,8034,10633, 12478,10707,5757,-122,-5872,-10665,-15784,-16351,-9181,-1462, 3519,7928,11999,12608,9606,4586,190,-2547,-7233,-9414, -4752,1398,4384,6774,9809,10663,8454,3272,-2011,-6558, -13103,-17981,-15194,-7889,-1812,3290,8133,10912,10959,7440, 3022,-52,-5320,-10413,-8916,-2254,3832,8280,11783,12861, 11187,6017,-52,-4520,-10397,-16289,-16224,-9785,-2331,3931, 9280,13338,15171,12077,6478,1566,-5233,-13914,-18610,-16746, -11139,-4354,2259,9101,13968,13402,10065,7662,2875,-5660, -12063,-13009,-9810,-4965,15,6036,11469,11589,7872,4766, 260,-7622,-14669,-17405,-15074,-9171,-2469,5681,14060,17283, 15551,14206,11060,2827,-7039,-14732,-16838,-13702,-8699,-1989, 6358,10907,10482,10805,11098,6817,-511,-7747,-10724,-8382, -4822,178,7516,11449,9935,8519,7114,2910,-3460,-10289, -13677,-11993,-8388,-3352,4950,11276,12257,12212,12123,9554, 3444,-5109,-11572,-13040,-12552,-9829,-2465,4692,6912,6757, 6759,6267,2991,-4445,-11629,-13879,-13663,-10836,-2654,6517, 11643,13410,13584,12985,9664,1551,-7253,-11923,-13935,-13521, -7512,946,7260,10267,10896,11161,9680,3124,-5521,-10531, -13729,-15073,-10964,-3017,4858,9862,11466,12097,12057,6867, -1702,-7821,-12884,-16441,-14441,-6808,3126,10793,13955,15655, 17083,12980,3936,-4500,-12025,-18874,-20991,-16635,-7635,2012, 8280,12670,16898,15931,9283,2038,-5351,-13313,-18110,-17151, -10303,-652,6149,10911,16121,17653,13594,7710,1228,-6793, -13625,-15694,-10980,-1749,5482,10076,14990,17001,13671,7813, 1364,-6194,-13720,-18125,-16236,-8181,248,6831,13779,18650, 18108,13949,7886,-693,-10445,-18661,-20783,-15068,-7490,-710, 7081,13877,15593,13078,8429,1564,-6826,-15416,-19172,-15257, -8000,-926,7014,14001,16221,14608,10545,4771,-2608,-11890, -18542,-18064,-12934,-6484,2007,10497,15098,15587,12328,7096, 899,-8166,-16477,-17975,-14509,-9255,-920,8213,13782,14885, 12233,8458,3917,-4381,-13593,-17636,-16627,-13101,-5555,4623, 12724,16757,15650,12913,10100,3025,-7797,-15268,-17138,-15736, -9612,-464,8228,14330,15640,14990,14136,9143,-1492,-10900, -16072,-18360,-15818,-8822,929,9836,13697,14013,13954,11193, 3322,-5264,-11916,-15710,-14939,-9774,-1490,7005,11724,13177, 14376,13052,6541,-1983,-9836,-15546,-17238,-14451,-6542,3600, 10513,13502,15779,16295,11633,3801,-5069,-13027,-17705,-18129, -12003,-1394,7205,11759,15225,17082,14417,7609,-1534,-10247, -16448,-19267,-15771,-6191,3754,10046,14369,16319,13895,7994, 44,-7911,-14623,-18924,-17609,-8654,2210,9382,14040,16374, 15227,11119,4591,-3853,-11778,-18124,-19966,-13693,-3659,4572, 11084,15337,15880,13307,8120,969,-6449,-13984,-18658,-15318, -6076,3112,11052,16713,18572,17366,12921,5584,-2873,-12332, -20318,-20685,-13540,-4348,4414,11024,14180,14253,11755,6753, 678,-7130,-15557,-18005,-13431,-5797,2556,9709,14188,15573, 13866,9564,4375,-3197,-12706,-18679,-18667,-13511,-5403,2701, 8781,12200,12488,10771,8347,2911,-5839,-13511,-16359,-14159, -7758,62,6953,11863,12734,10871,8444,3325,-5399,-13458, -17415,-16536,-10706,-2722,5270,11902,14197,13213,11889,8419, 903,-8019,-14855,-16674,-13118,-6473,1766,10112,14483,14421, 13519,11086,4654,-5067,-14486,-19957,-19447,-14499,-6550,3054, 9645,11652,12193,12093,8644,1014,-8330,-15660,-17599,-14850, -8185,1182,8912,12675,14850,16439,14870,8796,-497,-9225, -14147,-14965,-11367,-3353,5299,10352,12853,14607,14472,11054, 3424,-5262,-11073,-13757,-12319,-5706,2724,8400,10984,12099, 12272,10463,4922,-3571,-11026,-15533,-15888,-10264,-1273,6229, 10863,12924,13259,12074,7128,-746,-8147,-13952,-15895,-11547, -3079,4282,8832,10509,10652,10217,6944,765,-6462,-13336, -17667,-15729,-8451,-812,5387,8824,10792,12411,11185,5952, -1519,-9655,-16702,-18102,-13370,-6052,1614,6755,9515,11821, 12043,8398,2600,-4960,-13030,-16686,-14715,-8666,-887,4940, 8209,11189,12790,11054,6849,202,-8574,-14857,-15701,-11469, -3826,3157,8237,12414,15066,14701,11853,5661,-4142,-12607, -16404,-14881,-8820,-2179,3231,8279,11893,12832,11960,7937, -242,-9064,-14748,-15402,-11001,-4319,2240,8449,12789,14617, 15095,12418,5728,-3238,-11337,-14943,-12491,-6430,175,6766, 11353,13304,14325,13463,8776,498,-8816,-15061,-14992,-10505, -4553,2576,8604,11874,13914,14210,10923,3841,-5929,-14959, -18196,-15954,-10766,-3495,3591,8385,11728,13788,12703,7363, -2150,-12156,-17501,-17481,-13775,-7069,793,7044,11345,14066, 14543,11443,3789,-6936,-15483,-19042,-18454,-13116,-5097,1809, 7102,11111,13250,12546,7226,-2083,-10223,-14462,-15359,-11422, -3861,3325,8471,11667,13148,13389,9929,1463,-7552,-14087, -17374,-15444,-8872,-1136,5708,10694,14062,16019,14080,7043, -1647,-9478,-14944,-15522,-10834,-3310,4101,9309,12642,15535, 15676,10352,2433,-5558,-12289,-15012,-13258,-7630,-204,5678, 9530,13155,15101,12712,7122,-360,-8292,-13495,-14095,-10124, -3312,3047,7667,12227,15533,14376,9432,2559,-5245,-11584, -14566,-13005,-7084,-427,3859,7550,10857,11433,8967,3651, -3294,-9630,-13532,-13475,-9102,-3143,1450,5929,10201,11841, 10553,6536,541,-6661,-13284,-16082,-13307,-7268,-2016,2503, 6913,9962,10695,8277,3680,-2024,-7967,-11554,-10511,-5965, -1008,3883,8691,12089,13117,11198,6507,-47,-7748,-14090, -15339,-11916,-6705,-987,4902,10357,13849,14313,11379,5821, -1599,-9354,-13239,-12728,-9406,-4135,1918,7472,11561,13387, 12156,8517,2192,-5439,-10655,-12028,-10490,-6370,-339,5641, 10466,13265,13260,11143,6229,-1335,-8030,-11169,-11267,-8565, -3250,2866,8665,12738,14085,13089,9191,2105,-5259,-10442, -12768,-11722,-7486,-1625,4385,9084,11250,11384,8507,2280, -4929,-10846,-14207,-14442,-10782,-4518,2762,8925,12264,13399, 11675,6122,-1358,-8327,-13504,-15224,-13285,-7945,-232,6795, 11259,13258,12824,8658,1559,-5786,-11793,-14695,-14000,-9798, -2332,5623,11383,14685,15120,11640,5116,-2421,-9762,-14863, -16714,-14456,-7796,201,6632,11045,12892,11350,6412,-622, -7714,-13218,-16477,-16381,-11310,-3535,3501,8900,12120,12494, 9445,3562,-3276,-9376,-14267,-16342,-13438,-6331,1811,8904, 14208,16579,15113,9947,2923,-3819,-10021,-13746,-13019,-7935, -758,6151,11649,14514,14198,10594,5007,-1028,-7135,-12158, -13544,-10097,-3690,3643,10260,14770,15804,12875,7535,1412, -5047,-11247,-14444,-12820,-7425,-310,6561,12011,14734,13526, 9155,3537,-2618,-9017,-13861,-14245,-10562,-4289,3224,9841, 13981,14221,11070,6158,361,-6374,-12371,-14346,-12024,-6445, 905,8405,14148,15794,13445,8776,3131,-3981,-11056,-14854, -14103,-9226,-2082,5728,12424,15785,14991,11468,6437,-545, -8268,-13841,-15791,-13937,-9124,-2183,5753,11561,13015,11464, 8378,3406,-3339,-9796,-13655,-13603,-10172,-4128,4023,11263, 14542,14332,11862,6808,-306,-7956,-14169,-16786,-15818,-10899, -2672,5986,11567,13663,13497,10665,5089,-2461,-9777,-14398, -15493,-12547,-5491,3351,9969,13328,13724,11762,7349,500, -7038,-13275,-16560,-15676,-9843,-960,7005,12517,15473,16039, 13444,7121,-997,-8350,-13817,-15911,-13318,-6529,1421,7464, 11128,12827,12011,7778,1413,-5442,-11286,-14707,-14374,-9313, -1517,5906,11399,14566,14623,11324,5873,-845,-7925,-13893, -16172,-12801,-5451,2228,8329,12778,14486,12986,8553,2205, -4519,-10765,-14307,-13155,-7643,-619,5688,10226,11996,11179, 7901,2498,-4207,-11186,-16249,-16146,-10926,-3896,3184,9433, 13500,14652,12494,7776,1693,-5600,-12957,-16289,-13974,-8021, -509,6356,11360,13622,12835,9657,4970,-1829,-9976,-14951, -14549,-10344,-3668,3794,10167,13933,14040,11302,7349,1128, -7844,-15486,-17818,-14960,-8913,-1761,5023,10673,13782,13826, 11732,7140,-598,-8612,-13729,-14340,-10765,-4499,2868,9309, 13247,14016,12919,9633,2435,-6420,-13579,-16515,-14920,-9909, -2783,4669,10359,13028,13757,12363,7151,-907,-9069,-14342, -14885,-11179,-4900,2519,8705,12077,13752,13685,10041,2796, -5465,-11759,-13963,-12031,-7174,-202,6470,10681,12879,13355, 11116,5347,-2714,-10463,-15128,-15436,-11962,-5464,1626,7087, 11061,13361,12862,8581,1498,-6360,-12273,-14247,-12788,-7356, 94,6290,10731,13473,14142,11684,5836,-2219,-9670,-14331, -15525,-12293,-5554,1442,7211,11723,14269,13863,9741,2292, -5836,-12085,-15010,-13110,-6987,65,5841,10254,12941,13545, 10882,4669,-2604,-8844,-13136,-13192,-8573,-2443,2897,7434, 11111,13290,12632,8182,1697,-5005,-11115,-13713,-11398,-6365, -905,3908,8011,11301,12409,9894,4531,-1963,-8711,-12806, -12405,-8835,-3606,1798,6465,10508,12832,11753,7885,1997, -5275,-11325,-13452,-11479,-6954,-1831,2642,7159,10754,11211, 9075,4869,-1743,-8392,-12039,-11682,-7959,-2718,2160,6645, 10426,11759,10638,7281,1358,-5625,-10691,-11955,-9450,-5059, -719,3712,7908,10263,10595,8841,4117,-2979,-9805,-13496, -12789,-9006,-4548,115,4989,8639,10330,9939,6623,472, -6201,-10934,-11795,-9105,-5289,-945,3787,7537,9630,10191, 8190,3025,-3955,-10389,-13089,-11413,-7682,-2955,2649,7837, 11124,12495,11650,7691,1311,-5800,-10738,-11451,-9087,-5019, 9,4537,7749,9801,10181,8059,2967,-3830,-9429,-11234, -9989,-6642,-1211,4358,8533,11000,11767,10710,6548,-738, -7806,-11373,-11706,-9569,-5003,562,5428,9258,11495,11948, 9424,3162,-3876,-8802,-11185,-10840,-7210,-1840,3228,7046, 9562,11360,10909,6222,-858,-6847,-10669,-11855,-9716,-5354, -101,4657,8211,10931,11914,8923,2885,-3126,-8307,-11619, -11527,-8316,-3181,2003,6157,10041,12912,11951,7191,1119, -4958,-9892,-11987,-10397,-5804,-401,3833,7615,11222,12174, 9233,3756,-2830,-8953,-12579,-12467,-8739,-3382,1553,6169, 10976,13556,12240,7920,1887,-4544,-9928,-12265,-10255,-5633, -1172,2855,7312,10814,11462,8715,3471,-2671,-8706,-12398, -11851,-8027,-3336,1108,5750,9586,11132,9720,5721,-45, -6403,-10985,-11732,-8528,-3881,627,5361,9734,12293,11965, 8776,3256,-3372,-9242,-12044,-10544,-6456,-1773,3131,7564, 10792,11942,10377,6050,-228,-6763,-11180,-11152,-7860,-3316, 1838,6675,10397,12315,11771,8480,2747,-4141,-9992,-11927, -10164,-6450,-1653,3305,7466,10198,10933,8933,4370,-2446, -9046,-12024,-11328,-8411,-4192,748,5318,8784,10455,9829, 6658,401,-6800,-11486,-12521,-10543,-6123,-699,4431,8626, 10829,10941,8905,3888,-2723,-8179,-10888,-10644,-7692,-3164, 1744,6222,8927,9934,9456,6061,-142,-6246,-10284,-11397, -9465,-5344,-253,4649,7846,9496,10101,8176,3153,-3012, -8417,-11369,-11064,-8161,-3566,1415,5026,7213,8858,8738, 5375,76,-5147,-9006,-10028,-8386,-4353,947,5057,7603, 9547,10123,7946,3463,-2252,-7633,-10589,-10399,-7122,-2041, 2533,5738,8415,10246,9569,6223,718,-5240,-9860,-11799, -10426,-6258,-1337,2768,6500,9609,10916,9573,5138,-960, -6899,-10793,-11279,-8196,-3374,1371,5783,9527,11573,11125, 7765,1939,-4515,-10028,-12585,-10799,-5793,-292,4581,8644, 11403,12328,10377,5310,-1382,-7808,-12219,-12576,-9101,-3903, 1714,6814,10921,13280,12536,8457,2171,-5111,-11595,-14001, -11522,-6204,250,6225,10976,14107,14516,11547,5977,-1603, -9782,-14598,-14251,-9969,-3569,2721,7894,12059,13953,12757, 8998,2322,-5770,-12028,-14008,-11460,-5602,1391,7436,12196, 14459,13826,10709,4436,-4185,-11960,-16023,-15213,-9992,-3127, 3754,10071,14283,15629,14232,9262,1011,-7882,-14824,-17355, -14517,-8219,-740,6413,11625,14166,14447,11352,4384,-4581, -13075,-17890,-17307,-12546,-5443,2524,9161,13190,14828,13512, 8562,568,-8546,-15700,-18006,-15356,-9203,-1347,5918,11397, 14760,15281,12016,5126,-3981,-12611,-17357,-17248,-12612,-4903, 2868,8771,12792,14592,13078,7916,-246,-9049,-15457,-17429, -14667,-8026,127,7196,12404,15452,15385,11830,4764,-4070, -11896,-16651,-16691,-11704,-3877,3681,9544,13486,15203,14247, 9773,1829,-6650,-13112,-15720,-13224,-6884,189,6325,11054, 13621,14091,11350,4878,-3362,-11166,-15913,-15278,-9793,-2809, 3803,9248,13018,14901,13540,8432,936,-7160,-13779,-15750, -12148,-5608,1674,7970,12453,15038,14745,10861,3911,-4790, -13465,-18220,-16889,-11330,-3475,4074,10065,14388,15926,13900, 8915,826,-8959,-16346,-18351,-14854,-7616,145,6956,12646, 15908,15987,13047,6600,-2840,-11730,-16433,-15583,-10039,-3046, 3634,9970,14390,15640,13978,9023,436,-9215,-16467,-18330, -14292,-7409,49,7455,13321,16241,16334,13242,5938,-3781, -13075,-18129,-16933,-11453,-4054,3931,10902,15074,16492,14905, 9677,1096,-9005,-16746,-18702,-15268,-8722,-649,7225,12910, 15911,16173,13025,5900,-4111,-13582,-18297,-17421,-12578,-4894, 3505,10347,14867,16508,15044,10061,1200,-8909,-16086,-18176, -15196,-8422,-23,7474,12999,15996,16127,12914,5468,-4560, -13330,-17989,-17571,-12529,-4627,3279,9963,14370,16210,15320, 10484,1586,-8307,-15556,-18321,-15838,-9127,-986,6354,11856, 15145,15953,13386,6339,-3151,-11600,-16423,-16034,-11126,-4016, 3217,9283,13251,15001,13957,8760,335,-8555,-15408,-17473, -14121,-7500,170,6881,11617,14673,15197,11945,5365,-2943, -10731,-15195,-14784,-10344,-3342,3564,8730,12586,14726,13670, 9166,1559,-7086,-13240,-14888,-12087,-5789,1209,6770,11220, 13960,13909,10825,4415,-4056,-11504,-15373,-14786,-9815,-2811, 3369,8493,12292,14056,13089,8472,577,-7848,-13889,-15738, -12678,-6628,-292,5518,10145,12868,13229,10340,3952,-4230, -11634,-15691,-14297,-8916,-2411,3826,9092,12664,14149,12625, 7559,-148,-8531,-14966,-16409,-12715,-6458,390,6499,11017, 13786,14067,10752,3994,-4736,-12782,-16719,-15249,-10150,-3421, 3177,8402,11990,13488,11907,6815,-1274,-10016,-15702,-16112, -12226,-6082,550,6301,10787,13422,13223,9863,3049,-5868, -13253,-16124,-14125,-8862,-2169,4130,9384,13212,14642,13108, 7997,-470,-9097,-14262,-14586,-10842,-4705,1875,7709,12242, 14692,14643,11278,4047,-4949,-11981,-14772,-12828,-7389,-721, 5588,10747,14025,15215,13544,7795,-954,-9389,-14624,-15010, -10912,-4471,2389,8341,12472,14734,14682,10703,2787,-6399, -13626,-16283,-13896,-8423,-1612,5096,10416,14011,15490,13368, 7028,-1945,-10734,-16002,-16184,-12330,-5949,1207,7295,11994, 14919,14727,10492,2682,-6637,-13757,-16320,-14512,-9117,-1901, 4765,10131,13939,15093,12695,6307,-2866,-11241,-15825,-15872, -11692,-4840,2101,7936,12504,14959,14447,9980,1843,-7010, -13474,-15843,-13515,-7743,-918,5322,10359,13714,14828,12396, 5879,-2691,-10346,-14813,-14764,-10466,-4051,2613,8404,12550, 14911,14292,9460,1596,-6842,-13337,-15721,-13476,-8033,-1413, 4797,9695,13289,14603,12005,5692,-2440,-10156,-14749,-14695, -10779,-4699,1675,7081,11529,14337,13798,9327,2018,-6254, -12714,-15128,-13142,-7943,-1633,4221,9353,13249,14370,11873, 6001,-2069,-9815,-14381,-14590,-10705,-4786,1094,6387,10872, 13259,12472,8306,1156,-7050,-13367,-15621,-13292,-7916,-1823, 3929,9007,12544,13470,11061,5115,-3007,-10632,-15180,-15150, -11307,-5746,244,6083,10809,13497,13191,9084,1974,-6002, -12216,-14443,-12544,-8075,-2353,3793,9156,12972,14349,12047, 6280,-1493,-9056,-13540,-13776,-10701,-5278,1354,7490,12286, 15075,14581,10466,3389,-4943,-11396,-13941,-12902,-8689,-2196, 4488,10182,14212,15398,13181,7495,-709,-8406,-12898,-13723, -10928,-5202,1320,7417,12375,15030,14567,10485,3110,-5090, -11334,-14260,-13257,-8609,-2370,3954,9566,13478,14806,12675, 6699,-1244,-8544,-13293,-14214,-11189,-5570,949,6943,11586, 14189,13641,9246,2137,-5461,-11567,-14318,-13053,-8553,-2301, 3844,8997,12878,14209,11702,5855,-1482,-8415,-13058,-14021, -11134,-5458,820,6290,10837,13572,13040,8809,2046,-5283, -11213,-14104,-13001,-8256,-1893,4186,9446,13098,13882,11148, 5337,-1985,-8876,-13463,-14343,-11130,-5217,1226,7199,11937, 14252,13270,8911,2276,-4982,-11080,-14149,-13089,-8503,-2354, 3916,9433,13033,13779,11258,5820,-1312,-8484,-13528,-14456, -11227,-5687,544,6552,11271,13584,12811,8775,2394,-5007, -11501,-14516,-13074,-8387,-2326,3788,9002,12484,13344,10850, 5548,-1308,-8409,-13144,-13782,-10774,-5427,812,6552,10935, 13091,12148,8341,2257,-5165,-11462,-14116,-12875,-8676,-2790, 3297,8644,12194,12721,10503,5709,-1302,-8312,-12840,-13662, -11072,-5986,-53,5677,10125,11993,11375,8245,2262,-4861, -10541,-13108,-12193,-8341,-2820,3201,8375,11246,11938,10281, 5607,-1175,-7913,-12340,-13164,-10648,-5844,286,6284,10444, 12519,12327,9044,3139,-3797,-9758,-12613,-11862,-8112,-2141, 4190,9030,12072,13177,11409,6610,-53,-6785,-11273,-12229, -9852,-4496,1937,7309,11097,13074,12512,8983,2991,-4037, -9922,-12839,-12142,-7831,-1636,4256,9063,12280,13090,11122, 6371,-279,-6819,-11464,-12980,-10479,-4948,1088,6431,10529, 12621,12193,8873,3052,-3703,-9656,-13123,-12576,-8102,-1857, 4167,9167,12430,13398,11489,6672,14,-6973,-12438,-14219, -11499,-5868,509,6317,10689,13112,12826,9429,3661,-3360, -10069,-13965,-13390,-9074,-3006,3101,8172,11643,12843,11069, 6633,286,-7048,-12740,-14358,-11788,-6406,-112,5636,10221, 12830,12609,9666,4417,-2827,-9887,-13855,-13592,-9586,-3655, 2342,7624,11423,12516,10969,7118,749,-6684,-12384,-14300, -11862,-6524,-437,5331,10042,12322,12131,9637,4324,-3099, -10108,-14040,-13432,-9083,-3189,2887,8264,11557,12608,11396, 7311,686,-6836,-12383,-13639,-10799,-5605,493,6277,10227, 12096,11906,9021,3362,-4042,-10740,-13847,-12630,-8399,-2356, 3951,8730,11441,12166,10486,6072,-890,-8441,-13384,-14120, -11209,-5666,904,6529,10304,12079,11657,8659,2882,-4642, -10899,-13520,-12404,-8015,-1819,4243,9018,11858,12585,10949, 6362,-733,-7912,-12476,-13313,-10413,-4743,1693,7310,11175, 12868,12303,8920,2545,-5063,-11258,-14112,-12878,-8056,-1374, 5093,9914,12535,12935,10712,5401,-2012,-9246,-13871,-14493, -10930,-4581,2374,8239,12049,13709,12808,8570,1598,-6200, -12421,-15187,-13553,-8168,-1080,5661,10643,13587,14204,11519, 5564,-2069,-9395,-14227,-14835,-11207,-4615,2643,8544,12531, 14359,13228,8827,2085,-5595,-12122,-15026,-13568,-8268,-982, 5716,10887,14036,14349,11459,5822,-1791,-9363,-14261,-15040, -11451,-4894,2168,8377,12931,14721,13444,9267,2267,-5923, -12608,-15698,-13989,-8456,-1599,5109,10911,14346,14733,12149, 6333,-1590,-9422,-14730,-15344,-11443,-5162,1650,8005,12591, 14474,13370,8913,1903,-6069,-12818,-15552,-13538,-8262,-1470, 5465,10974,14115,14330,11241,5296,-2616,-10573,-15454,-15482, -11445,-5035,2233,8758,13398,15264,13800,9198,1884,-6601, -13308,-15644,-13531,-8242,-1346,5516,11118,14305,14440,11504, 5438,-2641,-10254,-14529,-14389,-10605,-4434,2540,8906,13151, 14508,12987,8451,1198,-6930,-13029,-15076,-13027,-7923,-1240, 5545,10874,13665,13778,10995,5090,-2852,-10116,-14144,-14000, -10344,-4386,2441,8378,12127,13434,12321,7946,616,-7289, -12980,-14678,-12415,-7288,-504,6131,10881,13250,13405,10565, 4290,-3666,-10687,-14426,-14003,-10212,-4036,2882,8530,12187, 13789,12453,7553,176,-7435,-12800,-14328,-12169,-7012,-146, 6105,10641,13445,13700,10390,3974,-3910,-10667,-14213,-14020, -10080,-3623,2891,8076,11886,13736,12540,7852,527,-7024, -12329,-14299,-12276,-6885,-556,5054,9632,12709,13283,10437, 4172,-3424,-9880,-13683,-13555,-9624,-3795,2104,7364,11478, 13594,12565,7714,571,-6586,-12144,-14104,-11890,-7011,-1151, 4565,9481,12999,13818,10783,4751,-2457,-9162,-13059,-12756, -9122,-3716,2165,7476,11780,13989,12546,7745,864,-6524, -11924,-13328,-10949,-6184,-441,5105,10059,13474,13663,10284, 4083,-3614,-10335,-13664,-12868,-9047,-3606,2181,7768,12350, 14193,12567,7691,392,-7137,-12255,-13529,-11152,-6450,-759, 5212,10593,13825,13859,10536,4263,-3484,-10076,-13355,-12794, -9201,-3919,2125,8084,12523,14234,12616,7593,117,-7347, -12303,-13428,-11101,-6523,-670,5497,10691,13626,13589,10093, 3464,-4199,-10348,-13136,-12181,-8560,-3227,2933,8551,12406, 13778,11925,6603,-688,-7755,-12238,-12955,-10696,-6261,-205, 5897,10669,13441,13246,9481,2863,-4775,-10823,-13307,-12360, -8704,-2995,3319,8767,12623,13817,11593,6122,-1485,-8607, -12858,-13652,-11118,-5864,503,6502,11370,13994,13427,9439, 2425,-5286,-11018,-13766,-13114,-9172,-3270,3132,8889,12942, 14256,12173,6441,-1180,-8008,-12517,-13774,-11464,-6569,-326, 5974,11069,14016,13786,9626,2696,-4583,-10589,-13755,-13267, -9544,-3675,2825,8589,12826,14387,12073,6324,-966,-7963, -12902,-14418,-12438,-7541,-1125,5202,10710,14192,14018,10077, 3537,-3928,-10308,-13918,-13942,-10620,-4935,1514,7833,12909, 14760,12650,7301,154,-6882,-12018,-13993,-12342,-7660,-1497, 4995,10830,14172,13926,10138,3719,-3519,-9664,-13186,-13241, -9906,-4417,2008,8351,12893,14353,12374,7282,301,-6606, -11700,-13609,-11779,-7176,-1089,5553,11129,14185,13947,10289, 4044,-3120,-9448,-13238,-13236,-9845,-4226,2538,8872,13245, 14647,12524,7253,315,-6684,-11921,-13645,-11781,-7135,-599, 6233,11738,14646,14011,9980,3647,-3587,-9920,-13283,-13010, -9516,-3591,3279,9556,13869,14902,12426,7138,-48,-7218, -12144,-13789,-12045,-7227,-618,6150,11710,14479,13853,10124, 3623,-3948,-10161,-13597,-13635,-10336,-4550,2397,8973,13310, 14393,12315,7010,-331,-7369,-12437,-14251,-12454,-7774,-1172, 5909,11361,13993,13659,9994,3558,-3701,-9949,-13492,-13483, -10255,-4458,2541,8666,12535,13712,11689,6615,-191,-7025, -11910,-13489,-11756,-7009,-373,6097,10971,13507,12948,9117, 2979,-3908,-9731,-12896,-12818,-9521,-3636,3020,8740,12536, 13525,11183,5978,-658,-6914,-11338,-12947,-11222,-6434,-59, 6126,10885,13129,12240,8252,2126,-4366,-9680,-12771,-12656, -8961,-2887,3638,9223,12644,13143,10488,5133,-1424,-7551, -11996,-13552,-11236,-5818,825,7101,11620,13429,12158,7943, 1820,-4689,-10175,-13288,-12665,-8486,-2311,4364,9916,13146, 13366,10371,4967,-1492,-7790,-12447,-13697,-11221,-6065,512, 6879,11507,13448,12057,7778,1983,-4405,-10225,-13348,-12688, -8730,-2590,4032,9591,12866,12920,9819,4848,-1235,-7513, -11953,-13012,-10511,-5136,1489,7642,11973,13345,11494,7507, 1957,-4592,-10189,-12965,-12024,-7787,-1718,4664,9939,12574, 12015,9174,4537,-1623,-7828,-12099,-12878,-9936,-4500,1934, 8035,12081,12968,11162,7191,1483,-5001,-10559,-13106,-11874, -7518,-1134,5686,10970,13290,12761,9818,4846,-1514,-8014, -12339,-12975,-10190,-4701,2191,8366,12089,12864,11077,7204, 1565,-5024,-10537,-13038,-12102,-8011,-1645,5086,10183,12661, 12387,9711,4947,-1406,-7676,-11788,-12798,-10564,-5395,1221, 7191,11034,12338,11183,7683,2070,-4423,-9743,-12435,-11920, -8147,-2121,4152,8978,11624,11903,9724,5110,-1090,-7123, -11281,-12536,-10302,-5099,1232,6710,10298,11730,10854,7432, 1872,-4351,-9501,-12192,-11539,-7539,-1617,4304,8664,10908, 11003,8724,4073,-1822,-7505,-11508,-12389,-9625,-4246,1881, 7001,10254,11510,10360,6556,995,-4951,-10055,-12631,-11571, -7167,-902,5036,9317,11770,11901,9222,4350,-1622,-7634, -11827,-12665,-9852,-4207,2100,7293,10869,12325,11026,7347, 1952,-4399,-9902,-12656,-11640,-7015,-969,4538,8885,11568, 11844,9570,5064,-1068,-7179,-11440,-12342,-9264,-3872,1760, 6745,10326,11796,10873,7565,2193,-4020,-9435,-12084,-10759, -6528,-1223,4051,8452,11028,11325,9207,4891,-864,-6923, -11184,-11709,-8731,-3811,1608,6413,9870,11365,10426,7133, 1970,-4287,-9697,-11997,-10636,-6579,-1257,4052,8359,10946, 11205,9152,4993,-1020,-7240,-11192,-11602,-8876,-4221,1092, 6050,9652,11126,10317,7300,2069,-4276,-9394,-11443,-10216, -6524,-1477,3715,7956,10401,10770,8951,4725,-1313,-7234, -10788,-11049,-8515,-4027,1267,6143,9538,10924,10229,7152, 1728,-4658,-9640,-11584,-10309,-6553,-1455,3788,8082,10559, 11082,9253,4648,-1745,-7670,-11251,-11593,-8982,-4345,1142, 6215,9796,11563,11153,7764,1811,-4601,-9504,-11595,-10588, -7019,-1769,3717,8098,10884,11673,9691,4861,-1391,-7029, -10443,-10957,-8597,-3965,1431,6065,9355,11053,10362,6862, 1373,-4406,-8746,-10646,-9706,-5968,-841,3921,7653,10094, 10635,8550,3987,-1650,-6614,-9787,-10311,-7853,-3318,1535, 5763,9041,10738,9998,6480,1154,-4226,-8502,-10525,-9344, -5560,-773,3792,7591,10157,10689,8440,3816,-1616,-6620, -9990,-10324,-7536,-3020,1689,5801,8909,10406,9529,6069, 1068,-4247,-8631,-10465,-9029,-5163,-480,3879,7495,9860, 10190,7936,3626,-1769,-7016,-10353,-10432,-7564,-3194,1379, 5596,8948,10583,9713,6361,1263,-4443,-9037,-10807,-9325, -5691,-1163,3457,7524,10170,10576,8485,4173,-1488,-6948, -10245,-10268,-7582,-3443,1301,5921,9387,10833,9875,6583, 1355,-4634,-9307,-10947,-9401,-5830,-1365,3447,7724,10306, 10656,8561,4112,-1849,-7357,-10509,-10486,-7844,-3782,979, 5700,9180,10668,9920,6593,1120,-4783,-9067,-10449,-9021, -5737,-1306,3518,7605,10066,10481,8398,3847,-1905,-7016, -9716,-9555,-7261,-3431,1194,5593,8867,10414,9543,6009, 712,-4761,-8585,-9782,-8683,-5650,-1251,3355,7234,9740, 10222,8134,3619,-1969,-6690,-9161,-9283,-7290,-3528,971, 5196,8513,10214,9574,6190,865,-4373,-7988,-9388,-8447, -5388,-1116,3295,7117,9782,10444,8233,3483,-1946,-6291, -8725,-8852,-6663,-2772,1701,5781,8864,10344,9312,5549, 390,-4467,-7838,-9004,-7766,-4493,-212,4037,7695,10048, 10108,7330,2661,-2335,-6477,-8837,-8874,-6553,-2628,1709, 5765,8953,10282,8861,4973,30,-4625,-7916,-9053,-7759, -4575,-462,3863,7663,9969,9715,6790,2295,-2576,-6739, -9091,-8876,-6362,-2576,1727,5981,9286,10341,8473,4549, -203,-4899,-8381,-9583,-8204,-4940,-816,3516,7441,9703, 9266,6402,2145,-2656,-6904,-9300,-9159,-6745,-3070,1206, 5594,8903,9845,8261,4727,19,-4756,-8364,-9680,-8345, -5242,-1112,3575,7665,9784,9392,6796,2550,-2278,-6510, -8986,-8921,-6775,-3219,1274,5707,8654,9305,7705,4321, -46,-4477,-7662,-8639,-7481,-4640,-569,3911,7566,9282, 8750,6224,2325,-2241,-6239,-8355,-8304,-6297,-2704,1741, 5943,8715,9348,7940,4771,344,-4065,-7105,-8173,-7278, -4540,-441,4025,7559,9130,8698,6470,2564,-1920,-5594, -7629,-7769,-5984,-2450,2062,6266,8832,9373,8068,4881, 538,-3708,-6830,-8220,-7598,-4873,-643,3896,7389,9037, 8791,6605,2779,-1616,-5419,-7883,-8489,-6840,-3142,1446, 5551,8204,9005,7818,4669,371,-3802,-6984,-8581,-8055, -5191,-752,3800,7313,9140,8931,6534,2598,-1724,-5513, -8098,-8750,-6985,-3073,1650,5710,8356,9133,7709,4451, 366,-3664,-6986,-8810,-8217,-5102,-533,3863,7176,8885, 8574,6290,2650,-1552,-5512,-8412,-9202,-7186,-3110,1438, 5484,8257,9094,7861,4895,916,-3294,-6977,-9022,-8326, -5175,-936,3390,6955,8865,8725,6581,3067,-999,-5020, -8061,-8691,-6639,-2902,1475,5482,8158,8929,7740,4946, 1161,-3102,-6943,-8860,-8122,-5151,-859,3549,7089,8848, 8496,6423,3169,-930,-5239,-8215,-8667,-6643,-2826,1639, 5652,8246,8801,7459,4732,933,-3473,-7154,-8683,-7674, -4563,-234,4165,7434,8781,8190,6048,2624,-1720,-5891, -8400,-8489,-6285,-2393,2165,6164,8477,8700,7206,4303, 239,-4215,-7652,-8930,-7753,-4504,-49,4434,7660,8881, 8267,6048,2364,-2204,-6373,-8781,-8819,-6577,-2591,2153, 6255,8548,8921,7625,4654,371,-4134,-7589,-9014,-7996, -4812,-206,4437,7678,9090,8783,6649,2902,-1603,-5723, -8376,-8727,-6556,-2341,2576,6471,8675,9225,7969,4890, 582,-4005,-7594,-9146,-8164,-4712,200,4733,7827,9263, 8863,6602,2765,-1934,-6298,-9054,-9346,-6923,-2469,2373, 6231,8622,9232,7925,4779,332,-4281,-7859,-9436,-8302, -4683,45,4388,7485,8997,8737,6560,2706,-1893,-6101, -8840,-9098,-6620,-2378,2218,6001,8418,9166,7971,4901, 665,-3852,-7640,-9379,-8287,-4772,-154,4073,7142,8763, 8573,6452,2796,-1684,-5992,-8772,-8983,-6513,-2334,2013, 5529,7773,8397,7228,4441,382,-4147,-7718,-9020,-7551, -4037,124,3944,6815,8231,7903,5885,2408,-1953,-6050, -8476,-8259,-5552,-1623,2378,5726,7875,8363,7117,4295, 265,-4114,-7509,-8602,-7004,-3578,465,4194,6995,8302, 7906,5934,2510,-1843,-5977,-8341,-8017,-5316,-1428,2481, 5712,7764,8286,7235,4564,505,-3930,-7214,-8131,-6480, -3122,734,4251,6807,8013,7771,5978,2505,-1938,-5861, -7878,-7374,-4786,-1126,2648,5695,7491,7920,6873,4097, -19,-4297,-7299,-7991,-6310,-2989,893,4333,6719,7844, 7580,5610,1997,-2367,-6090,-7925,-7362,-4760,-1112,2543, 5490,7350,7879,6840,3987,-302,-4653,-7512,-8063,-6274, -2955,789,4165,6713,8093,7969,5919,2018,-2630,-6426, -8232,-7619,-4949,-1307,2328,5382,7489,8303,7270,4109, -367,-4700,-7539,-8160,-6517,-3289,390,3739,6411,8019, 7996,5850,1874,-2702,-6374,-8048,-7477,-4916,-1300,2261, 5280,7515,8446,7441,4271,-250,-4553,-7286,-7845,-6286, -3230,334,3681,6453,8158,8178,6053,2073,-2479,-6124, -7891,-7344,-4887,-1490,2044,5278,7733,8699,7583,4319, -178,-4461,-7365,-8085,-6521,-3461,91,3501,6412,8299, 8373,6217,2272,-2243,-5994,-7862,-7395,-5065,-1841,1540, 4688,7158,8145,7068,4021,-194,-4388,-7246,-7870,-6329, -3466,-157,3184,6189,8018,7930,5771,1949,-2427,-5970, -7628,-7084,-4883,-1880,1433,4701,7193,8073,6960,3970, -198,-4228,-6804,-7279,-5844,-3258,-133,3200,6157,7884, 7715,5543,1840,-2368,-5777,-7325,-6765,-4618,-1591,1798, 5042,7516,8410,7216,4052,-179,-4144,-6631,-7039,-5655, -3144,51,3459,6394,8109,7964,5716,1861,-2358,-5564, -6883,-6298,-4338,-1519,1845,5118,7486,8288,7031,3780, -465,-4259,-6512,-6881,-5601,-3096,215,3730,6594,8172, 7929,5630,1781,-2344,-5367,-6621,-6223,-4443,-1577,1851, 5081,7347,8001,6672,3569,-421,-3968,-6029,-6370,-5240, -2917,167,3428,6222,7770,7428,5009,1246,-2575,-5374, -6596,-6176,-4359,-1511,1791,4879,7045,7629,6137,2847, -1045,-4319,-6281,-6652,-5486,-3070,124,3434,6115,7487, 6919,4397,732,-2847,-5433,-6624,-6261,-4427,-1544,1760, 4815,6993,7496,5944,2822,-833,-3946,-5888,-6444,-5479, -3171,-112,3062,5770,7237,6775,4456,1103,-2253,-4820, -6132,-5928,-4220,-1529,1614,4686,6888,7364,5840,2867, -597,-3678,-5729,-6295,-5210,-2864,139,3302,5977,7355, 6825,4548,1308,-2056,-4738,-6075,-5762,-4018,-1336,1743, 4674,6742,7158,5688,2901,-383,-3475,-5592,-6099,-4997, -2753,174,3321,6008,7320,6727,4456,1242,-2120,-4854, -6195,-5873,-4193,-1601,1592,4768,6966,7412,5950,3051, -449,-3657,-5746,-6198,-5155,-3002,-42,3263,6079,7438, 6823,4496,1132,-2365,-5043,-6262,-5882,-4164,-1470,1756, 4888,7018,7324,5762,2882,-621,-3744,-5625,-5994,-4942, -2758,197,3439,6150,7388,6758,4499,1235,-2083,-4527, -5651,-5342,-3770,-1206,1996,5064,6992,7231,5771,2915, -515,-3436,-5207,-5619,-4694,-2579,451,3713,6229,7243, 6548,4343,1162,-2082,-4532,-5670,-5401,-3827,-1088,2158, 5021,6819,7029,5550,2774,-554,-3472,-5331,-5843,-4966, -2700,493,3699,6119,7186,6560,4357,1103,-2207,-4707, -5983,-5863,-4249,-1449,1871,4897,6816,7076,5623,2815, -527,-3495,-5574,-6405,-5614,-3293,-126,3132,5685,6874, 6349,4192,1079,-2093,-4667,-6255,-6373,-4739,-1778,1637, 4594,6430,6704,5316,2701,-448,-3426,-5640,-6544,-5704, -3300,-47,3198,5730,6904,6358,4290,1309,-1866,-4609, -6318,-6393,-4677,-1756,1533,4521,6544,7024,5751,3139, -55,-3140,-5500,-6502,-5743,-3417,-176,3164,5805,7124, 6709,4837,2063,-1166,-4138,-6035,-6243,-4694,-1893,1404, 4455,6580,7137,6068,3809,733,-2559,-5148,-6246,-5485, -3216,-190,2939,5557,6962,6844,5322,2600,-797,-3901, -5787,-5916,-4446,-1931,1136,4106,6172,6890,6220,4219, 1193,-2156,-4803,-5893,-5287,-3381,-616,2411,4960,6426, 6552,5223,2685,-467,-3465,-5378,-5712,-4516,-2030,1042, 3823,5735,6499,5932,4023,1089,-2124,-4613,-5690,-5187, -3222,-296,2707,5038,6325,6368,5080,2511,-793,-3782, -5569,-5747,-4276,-1591,1477,4170,5999,6633,5873,3648, 366,-2921,-5231,-6068,-5301,-3068,6,3078,5443,6674, 6559,4957,1992,-1507,-4475,-6114,-6054,-4374,-1545,1695, 4543,6447,7053,6102,3601,116,-3322,-5787,-6651,-5660, -3132,129,3254,5680,7047,6935,5143,1931,-1774,-4851, -6553,-6521,-4725,-1704,1639,4532,6562,7285,6316,3726, 135,-3444,-6039,-6956,-5971,-3402,-67,3149,5674,7109, 6927,5028,1881,-1778,-5011,-6865,-6800,-4869,-1744,1555, 4370,6392,7104,6115,3619,115,-3514,-6162,-7065,-5977, -3298,-18,3055,5577,7078,6992,5234,2077,-1737,-5081, -6973,-6857,-4853,-1767,1565,4626,6815,7579,6598,3947, 246,-3494,-6238,-7156,-6062,-3493,-197,3168,5906,7491, 7439,5540,2229,-1660,-5056,-6845,-6573,-4618,-1626,1769, 4819,6926,7652,6647,4008,223,-3724,-6405,-6971,-5595, -2938,315,3571,6197,7601,7393,5527,2169,-1965,-5395, -6971,-6482,-4363,-1341,1937,4977,7160,7878,6889,4185, 193,-3766,-6285,-6834,-5580,-3055,173,3487,6193,7692, 7626,5796,2343,-1799,-5126,-6671,-6317,-4449,-1558,1788, 4840,6963,7736,6800,4078,166,-3591,-5969,-6524,-5352, -2886,249,3386,5937,7485,7501,5640,2135,-1902,-5036, -6482,-6097,-4150,-1219,2046,4951,6989,7722,6707,3899, -50,-3822,-6207,-6721,-5442,-2828,453,3642,6174,7597, 7422,5354,1793,-2202,-5357,-6850,-6473,-4418,-1240,2131, 4957,6898,7533,6362,3423,-528,-4238,-6566,-7058,-5716, -2914,499,3649,6101,7465,7152,4972,1345,-2683,-5823, -7311,-6785,-4446,-1186,2099,4990,7135,7822,6485,3242, -908,-4637,-7034,-7487,-5844,-2860,516,3725,6376,7888, 7559,5084,1146,-3020,-6274,-7723,-6991,-4571,-1317,2118, 5228,7476,8090,6562,3272,-877,-4818,-7349,-7711,-6020, -3028,427,3737,6506,8078,7629,5125,1243,-3013,-6339, -7725,-6949,-4523,-1270,2143,5279,7551,8168,6736,3508, -742,-4750,-7174,-7369,-5678,-2888,429,3894,6820,8342, 7898,5430,1493,-2829,-6194,-7550,-6742,-4350,-1097,2519, 5867,8145,8647,6996,3467,-991,-5027,-7373,-7560,-5844, -2838,844,4542,7458,8867,8241,5544,1355,-3152,-6492, -7727,-6863,-4438,-1080,2673,6115,8423,8916,7221,3593, -932,-4932,-7241,-7453,-5834,-2891,845,4621,7533,8926, 8297,5462,1155,-3247,-6401,-7543,-6790,-4499,-1018,2960, 6406,8552,8840,6945,3241,-1205,-5042,-7185,-7344,-5750, -2756,1019,4704,7549,8841,7968,5049,866,-3328,-6277, -7420,-6702,-4300,-777,3018,6299,8360,8530,6582,2916, -1414,-5052,-7120,-7305,-5636,-2572,1205,4889,7646,8764, 7786,4779,624,-3405,-6326,-7543,-6786,-4295,-713,3168, 6471,8458,8533,6403,2698,-1421,-4931,-7039,-7306,-5721, -2641,1182,4805,7448,8492,7420,4490,596,-3289,-6165, -7352,-6645,-4232,-730,2946,6025,7893,7854,5788,2335, -1590,-4970,-6976,-7147,-5437,-2354,1273,4632,7091,7982, 6884,4032,254,-3439,-6184,-7314,-6512,-4090,-678,2989, 6081,7845,7736,5672,2225,-1622,-4972,-7072,-7303,-5599, -2546,1089,4556,7076,7932,6820,4049,335,-3361,-6154, -7345,-6565,-4070,-633,2918,5915,7649,7521,5594,2326, -1526,-4923,-6972,-7120,-5397,-2378,1226,4642,7134,7987, 6899,4151,393,-3442,-6299,-7339,-6398,-3961,-575,3084, 6123,7797,7615,5605,2294,-1596,-5027,-6909,-6838,-5083, -2111,1497,4879,7197,7878,6725,4051,374,-3435,-6125, -6993,-6012,-3515,-127,3428,6321,7803,7515,5596,2338, -1548,-4870,-6660,-6571,-4753,-1767,1726,4970,7140,7695, 6560,3881,221,-3365,-5865,-6626,-5522,-2988,372,3804, 6428,7709,7378,5292,1892,-1869,-4964,-6554,-6299,-4352, -1187,2407,5450,7340,7791,6500,3649,-57,-3625,-5986, -6591,-5458,-2856,578,3885,6371,7599,7202,5161,1865, -1840,-4841,-6322,-6041,-4142,-1088,2251,5130,7084,7591, 6428,3704,90,-3298,-5558,-6242,-5229,-2779,449,3594, 6067,7334,6990,4959,1725,-1773,-4580,-6043,-5839,-3995, -1061,2142,4894,6709,7113,5779,3013,-384,-3547,-5665, -6189,-4926,-2283,861,3769,5960,7040,6541,4397,1173, -2279,-5069,-6407,-5883,-3766,-809,2304,4993,6699,6956, 5542,2739,-730,-4022,-6248,-6608,-5120,-2457,702,3777, 6140,7183,6504,4180,881,-2580,-5423,-6776,-6213,-4093, -1051,2197,5004,6749,6902,5309,2422,-1055,-4337,-6473, -6794,-5340,-2632,643,3788,6144,7056,6223,3922,616, -3006,-5872,-7106,-6395,-4060,-854,2514,5417,7136,7182, 5541,2529,-1217,-4622,-6734,-7013,-5420,-2572,831,4132, 6528,7441,6681,4306,808,-2857,-5688,-6884,-6147,-3908, -767,2640,5462,7074,7144,5518,2520,-1078,-4349,-6314, -6438,-4918,-2172,1209,4304,6409,7223,6448,4120,743, -2826,-5453,-6408,-5667,-3476,-292,3068,5724,7195,7221, 5694,2825,-774,-3979,-5824,-5998,-4560,-1850,1486,4573, 6720,7554,6834,4537,1176,-2274,-4814,-5883,-5329,-3284, -225,3002,5638,7182,7302,5791,2851,-635,-3640,-5422, -5643,-4280,-1633,1515,4391,6439,7215,6439,4095,779, -2485,-4822,-5725,-5010,-2844,147,3196,5680,7091,7030, 5334,2332,-1094,-4017,-5768,-5861,-4275,-1559,1567,4429, 6489,7277,6406,3962,624,-2694,-5256,-6338,-5571,-3336, -272,2880,5454,6997,7015,5290,2308,-1140,-4301,-6287, -6500,-4999,-2244,1057,4130,6381,7248,6335,3937,658, -2842,-5593,-6774,-6110,-3891,-859,2303,5085,6796,6810, 5138,2230,-1320,-4516,-6452,-6588,-4947,-2248,832,3840, 6091,6917,6063,3671,253,-3248,-5859,-6821,-5905,-3648, -693,2531,5279,6787,6739,5077,2092,-1444,-4611,-6477, -6464,-4791,-2104,1068,4102,6237,6994,6132,3748,394, -3100,-5683,-6541,-5621,-3342,-298,2859,5427,6889,6859, 5186,2192,-1459,-4630,-6271,-6092,-4425,-1744,1403,4350, 6467,7226,6348,3928,454,-3048,-5457,-6199,-5265,-3081, -137,2971,5544,7011,6983,5289,2207,-1341,-4241,-5762, -5674,-4153,-1604,1459,4352,6398,7135,6302,3889,518, -2763,-4986,-5681,-4875,-2881,-149,2834,5435,7001,7068, 5430,2445,-926,-3680,-5172,-5173,-3821,-1523,1296,4076, 6175,7073,6304,3832,502,-2538,-4549,-5190,-4459,-2630, -15,2861,5299,6719,6639,4871,1910,-1276,-3817,-5142, -5062,-3710,-1352,1505,4211,6190,6833,5751,3267,180, -2701,-4682,-5372,-4673,-2695,55,2883,5233,6572,6382, 4596,1731,-1436,-4017,-5446,-5497,-4132,-1723,1147,3933, 5967,6610,5671,3372,314,-2646,-4810,-5712,-5055,-3099, -411,2519,5037,6389,6185,4430,1594,-1475,-4039,-5551, -5552,-4060,-1567,1407,4184,6043,6532,5440,3004,-105, -3113,-5238,-5897,-4999,-2923,-137,2802,5192,6418,6116, 4355,1603,-1520,-4212,-5679,-5558,-4012,-1493,1409,4097, 5961,6456,5413,3076,-27,-3054,-5152,-5805,-4946,-2839, 18,2971,5390,6657,6382,4597,1674,-1597,-4292,-5727, -5572,-4014,-1436,1626,4471,6396,6853,5708,3227,0, -3077,-5190,-5836,-4875,-2611,399,3426,5775,6887,6502, 4639,1652,-1697,-4416,-5821,-5655,-4009,-1288,1857,4697, 6545,7020,5962,3472,112,-3145,-5356,-5978,-5051,-2881, 88,3212,5713,7006,6725,4833,1781,-1601,-4407,-5867, -5682,-4061,-1351,1837,4679,6570,7057,5892,3328,40, -3105,-5283,-5953,-5038,-2753,349,3474,5917,7102,6714, 4820,1788,-1597,-4371,-5843,-5708,-4008,-1237,1895,4738, 6620,7011,5832,3281,-42,-3162,-5300,-5978,-5034,-2749, 239,3268,5692,6897,6562,4703,1738,-1527,-4236,-5722, -5639,-4112,-1522,1539,4367,6263,6797,5800,3401,275, -2769,-4959,-5680,-4890,-2887,-87,2843,5221,6489,6321, 4651,1866,-1258,-3909,-5362,-5298,-3860,-1415,1435,4069, 5950,6562,5669,3368,230,-2806,-4869,-5513,-4690,-2648, 87,2886,5170,6383,6179,4510,1676,-1509,-4081,-5378, -5178,-3637,-1172,1639,4164,5859,6297,5269,2929,-114, -3014,-4993,-5523,-4531,-2366,405,3128,5252,6352,6082, 4321,1435,-1741,-4277,-5515,-5207,-3488,-884,1955,4463, 6130,6555,5489,3018,-245,-3295,-5234,-5618,-4506,-2295, 472,3239,5467,6641,6326,4450,1433,-1879,-4522,-5752, -5392,-3735,-1167,1784,4454,6269,6742,5661,3217,-25, -3146,-5192,-5666,-4690,-2583,235,3157,5497,6654,6293, 4486,1564,-1742,-4403,-5671,-5334,-3610,-1002,1904,4564, 6344,6720,5522,2927,-436,-3503,-5409,-5795,-4659,-2362, 522,3419,5677,6728,6318,4366,1247,-2068,-4588,-5719, -5292,-3590,-1044,1897,4591,6333,6676,5451,2829,-444, -3427,-5344,-5670,-4495,-2264,563,3376,5603,6727,6305, 4290,1184,-2116,-4645,-5721,-5272,-3530,-837,2124,4704, 6428,6863,5715,3112,-277,-3408,-5305,-5607,-4476,-2226, 610,3428,5701,6873,6492,4501,1370,-1933,-4423,-5515, -5063,-3296,-691,2184,4756,6464,6791,5509,2826,-480, -3349,-5069,-5360,-4249,-2013,845,3665,5811,6775,6242, 4240,1231,-1936,-4377,-5464,-4991,-3168,-525,2289,4727, 6323,6580,5240,2577,-637,-3505,-5313,-5604,-4291,-1858, 999,3693,5722,6667,6134,4009,836,-2435,-4891,-5906, -5269,-3274,-539,2347,4797,6290,6453,5050,2365,-889, -3828,-5574,-5662,-4247,-1797,1010,3580,5506,6327,5647, 3532,530,-2580,-4897,-5717,-4931,-2849,-115,2530,4721, 6088,6122,4677,2007,-1249,-4101,-5690,-5607,-3960,-1410, 1310,3806,5681,6399,5640,3457,318,-2862,-5180,-5990, -5010,-2737,-17,2711,5041,6437,6461,4937,2123,-1201, -4044,-5619,-5461,-3780,-1287,1488,4071,5939,6665,5929, 3735,559,-2702,-4999,-5608,-4558,-2453,169,2887,5197, 6572,6541,4949,2113,-1247,-4127,-5578,-5254,-3539,-1084, 1620,4213,6174,6913,6068,3697,388,-2844,-4967,-5455, -4410,-2326,255,2948,5275,6627,6571,4935,1985,-1409, -4156,-5482,-5197,-3615,-1209,1554,4172,6092,6749,5809, 3383,118,-2953,-4939,-5402,-4422,-2358,291,2954,5170, 6443,6291,4579,1656,-1552,-4007,-5135,-4833,-3319,-993, 1629,4060,5797,6369,5460,3085,-76,-2968,-4787,-5209, -4285,-2345,181,2818,5026,6299,6181,4448,1553,-1532, -3918,-5080,-4852,-3431,-1153,1508,3963,5758,6388,5428, 3030,-76,-2902,-4696,-5167,-4289,-2274,365,2939,5015, 6193,5914,4099,1246,-1826,-4181,-5279,-4965,-3253,-700, 1924,4218,5831,6197,5026,2587,-438,-3144,-4824,-5138, -4015,-1783,809,3238,5198,6193,5771,3874,996,-1936, -4103,-5013,-4478,-2758,-387,2125,4338,5812,6056,4801, 2343,-588,-3169,-4737,-4881,-3650,-1565,890,3297,5214, 6103,5526,3571,772,-2118,-4289,-5167,-4575,-2781,-337, 2216,4465,5951,6155,4845,2287,-812,-3549,-5142,-5176, -3798,-1565,984,3452,5415,6322,5718,3656,704,-2334, -4604,-5414,-4608,-2662,-204,2365,4669,6195,6340,4891, 2239,-909,-3686,-5245,-5229,-3824,-1516,1185,3779,5754, 6565,5854,3739,714,-2406,-4643,-5364,-4604,-2736,-235, 2430,4794,6241,6236,4747,2080,-1082,-3781,-5231,-5150, -3703,-1377,1281,3845,5799,6528,5721,3457,301,-2729, -4763,-5389,-4589,-2688,-98,2700,5045,6372,6333,4787, 2034,-1125,-3740,-5102,-4989,-3659,-1467,1250,3844,5683, 6375,5589,3421,493,-2398,-4450,-5146,-4455,-2618,-66, 2582,4761,6053,6032,4551,1995,-959,-3452,-4812,-4881, -3705,-1500,1145,3634,5449,6115,5376,3370,613,-2134, -4106,-4862,-4313,-2593,-158,2451,4672,6000,6009,4537, 2008,-797,-3191,-4633,-4770,-3585,-1420,1196,3686,5527, 6257,5526,3477,725,-1974,-3966,-4806,-4308,-2611,-164, 2456,4680,5986,5960,4557,2145,-624,-2994,-4411,-4545, -3361,-1226,1280,3641,5374,5988,5206,3204,573,-1966, -3830,-4598,-4043,-2333,11,2454,4528,5729,5646,4213, 1877,-700,-2966,-4341,-4441,-3281,-1221,1216,3520,5172, 5699,4889,2987,528,-1934,-3801,-4520,-3958,-2290,41, 2466,4471,5545,5315,3853,1543,-1054,-3287,-4569,-4592, -3380,-1257,1243,3592,5205,5567,4601,2606,28,-2481, -4248,-4819,-4102,-2333,52,2582,4648,5613,5195,3591, 1210,-1364,-3502,-4688,-4624,-3334,-1152,1456,3887,5451, 5710,4620,2537,-24,-2475,-4244,-4856,-4149,-2332,173, 2784,4816,5718,5264,3658,1303,-1285,-3471,-4641,-4493, -3143,-929,1680,4053,5500,5640,4550,2512,-78,-2581, -4289,-4736,-3898,-2003,569,3234,5245,5986,5382,3710, 1288,-1341,-3502,-4657,-4535,-3154,-764,2060,4487,5856, 5879,4696,2631,101,-2299,-4011,-4631,-3951,-2025,726, 3460,5342,5996,5427,3855,1573,-985,-3160,-4425,-4469, -3162,-777,2015,4368,5668,5743,4705,2781,339,-2072, -3865,-4597,-3991,-2107,559,3196,5046,5738,5260,3742, 1469,-1045,-3218,-4509,-4515,-3154,-708,2090,4374,5624, 5699,4667,2748,279,-2227,-4112,-4807,-4031,-1912,870, 3406,5117,5741,5217,3760,1625,-863,-3114,-4471,-4459, -2926,-345,2307,4327,5396,5365,4353,2543,187,-2195, -3975,-4583,-3693,-1541,1087,3403,4923,5414,4858,3393, 1252,-1161,-3333,-4620,-4450,-2805,-303,2257,4225,5247, 5233,4187,2290,-71,-2485,-4317,-4862,-3862,-1642,1022, 3330,4789,5236,4650,3113,901,-1622,-3845,-4949,-4506, -2700,-176,2307,4177,5126,5034,3940,2026,-439,-2943, -4685,-4971,-3727,-1449,1082,3276,4744,5246,4715,3228, 981,-1631,-3897,-4962,-4467,-2661,-211,2198,4070,5048, 5014,4000,2140,-321,-2873,-4604,-4827,-3580,-1387,1085, 3268,4748,5261,4740,3271,1010,-1678,-3967,-4962,-4383, -2566,-112,2324,4258,5340,5379,4394,2430,-264,-2927, -4592,-4742,-3503,-1320,1229,3527,5086,5633,5123,3569, 1105,-1689,-3901,-4780,-4167,-2417,-13,2495,4477,5556, 5640,4655,2624,-68,-2676,-4349,-4583,-3471,-1378,1190, 3492,5027,5689,5398,4008,1636,-1169,-3539,-4695,-4386, -2750,-250,2314,4280,5441,5710,4930,3027,284,-2512, -4450,-4962,-3927,-1720,881,3188,4845,5666,5486,4145, 1733,-1117,-3503,-4732,-4466,-2839,-472,1919,3869,5113, 5497,4792,2886,218,-2391,-4183,-4625,-3602,-1527,887, 3020,4542,5330,5197,3881,1541,-1159,-3464,-4637,-4261, -2578,-245,2011,3776,4972,5399,4733,2901,305,-2304, -4116,-4481,-3349,-1276,979,2877,4305,5162,5074,3774, 1438,-1250,-3458,-4477,-3944,-2175,64,2123,3775,4930, 5274,4461,2474,-208,-2761,-4367,-4504,-3210,-1084,1127, 3015,4476,5257,4955,3467,1057,-1641,-3732,-4542,-3855, -2046,135,2121,3719,4796,5011,4121,2168,-436,-2856, -4273,-4224,-2860,-855,1206,3017,4370,5007,4652,3193, 841,-1751,-3724,-4387,-3608,-1917,86,2053,3721,4796, 4950,3973,1965,-585,-2916,-4227,-4111,-2823,-912,1164, 3035,4410,5002,4529,2951,553,-2033,-3881,-4373,-3581, -1922,158,2226,3899,4890,4936,3894,1854,-769,-3092, -4258,-4063,-2774,-825,1273,3160,4554,5133,4681,3097, 595,-2010,-3794,-4308,-3568,-1879,266,2381,4108,5104, 5181,4170,2017,-718,-3052,-4273,-4154,-2900,-931,1299, 3347,4782,5342,4856,3203,673,-1949,-3822,-4394,-3635, -1917,271,2447,4216,5319,5455,4317,2015,-775,-3164, -4418,-4296,-3010,-937,1375,3400,4891,5640,5236,3458, 718,-2054,-3924,-4428,-3640,-1929,244,2389,4159,5342, 5559,4400,2003,-817,-3112,-4260,-4051,-2689,-676,1461, 3383,4878,5608,5079,3146,389,-2240,-3944,-4349,-3502, -1749,383,2423,4159,5314,5395,4120,1766,-964,-3184, -4230,-3949,-2598,-677,1354,3277,4840,5495,4802,2847, 216,-2231,-3800,-4132,-3227,-1521,470,2485,4300,5405, 5261,3735,1238,-1365,-3279,-4066,-3624,-2274,-458,1540, 3511,5015,5432,4441,2314,-242,-2501,-3845,-3920,-2942, -1330,611,2624,4402,5407,5067,3401,1038,-1372,-3192, -3899,-3448,-2146,-319,1726,3640,4985,5264,4259,2295, -98,-2276,-3559,-3678,-2797,-1250,674,2725,4434,5220, 4778,3230,998,-1325,-3075,-3760,-3335,-2049,-199,1937, 3929,5165,5223,4072,1979,-437,-2480,-3635,-3710,-2855, -1252,892,3104,4736,5306,4699,3054,753,-1547,-3201, -3824,-3430,-2185,-228,2048,3997,5075,5024,3868,1856, -492,-2500,-3673,-3824,-2975,-1265,937,3068,4579,5130, 4583,2951,639,-1634,-3280,-3992,-3705,-2447,-407,1909, 3853,4964,5006,3904,1869,-498,-2546,-3815,-4092,-3366, -1645,707,2978,4589,5171,4561,2915,676,-1554,-3243, -4090,-3945,-2683,-527,1861,3864,5033,5060,3931,1903, -460,-2481,-3774,-4155,-3434,-1661,690,2987,4648,5257, 4691,3068,802,-1428,-3130,-4012,-3806,-2510,-435,1910, 3912,5061,5069,3932,2009,-143,-2047,-3388,-3809,-3102, -1417,831,2996,4542,5131,4548,3007,1011,-987,-2630, -3567,-3488,-2327,-320,1959,3866,4969,4960,3875,2125, 120,-1765,-3121,-3541,-2837,-1212,907,2994,4514,5033, 4434,3004,1115,-859,-2497,-3391,-3169,-1856,82,2170, 3934,4851,4696,3625,1927,-33,-1837,-3081,-3375,-2547, -840,1259,3269,4615,4901,4201,2773,916,-1004,-2600, -3385,-3073,-1754,250,2434,4189,5000,4695,3500,1743, -246,-2105,-3362,-3587,-2672,-844,1458,3582,4887,5097, 4290,2715,692,-1406,-3079,-3832,-3427,-1999,159,2537, 4374,5140,4792,3546,1669,-509,-2520,-3775,-3888,-2880, -990,1349,3499,4836,5018,4128,2488,401,-1738,-3392, -4106,-3670,-2092,227,2574,4308,5023,4675,3478,1618, -593,-2596,-3881,-4134,-3185,-1181,1272,3424,4721,4942, 4203,2661,559,-1615,-3327,-4187,-3880,-2369,-73,2321, 4116,4939,4734,3544,1607,-602,-2608,-4018,-4409,-3494, -1431,1159,3405,4715,5025,4357,2766,598,-1648,-3508, -4487,-4201,-2595,-89,2449,4245,5062,4868,3705,1828, -392,-2522,-4048,-4453,-3462,-1334,1213,3381,4730,5128, 4513,3001,911,-1333,-3239,-4284,-4025,-2466,-117,2307, 4175,5092,4990,3960,2177,-14,-2176,-3755,-4151,-3175, -1199,1174,3340,4750,5130,4534,3142,1213,-964,-2972, -4077,-3745,-2133,134,2420,4167,5014,4927,3991,2314, 153,-2084,-3728,-4094,-3020,-956,1426,3507,4786,5096, 4547,3228,1266,-1045,-3105,-4134,-3700,-2032,274,2594, 4354,5184,5039,4005,2254,25,-2261,-3852,-4130,-3061, -1023,1402,3523,4830,5190,4640,3245,1142,-1305,-3345, -4205,-3725,-2142,145,2494,4262,5091,4980,4079,2390, 23,-2406,-3966,-4139,-3029,-993,1376,3462,4779,5128, 4642,3326,1174,-1304,-3299,-4165,-3675,-2005,345,2659, 4307,5007,4878,3951,2112,-308,-2578,-4001,-4151,-2995, -859,1654,3744,4910,5182,4613,3142,931,-1538,-3560, -4447,-3925,-2172,306,2696,4324,5069,4972,3946,2041, -377,-2710,-4188,-4360,-3185,-953,1555,3573,4767,5099, 4534,3003,709,-1800,-3772,-4565,-3951,-2079,402,2710, 4375,5192,5084,3960,1871,-721,-3099,-4580,-4630,-3170, -801,1664,3671,4923,5299,4685,3006,535,-2083,-4105, -4893,-4118,-2082,454,2766,4426,5259,5129,3934,1779, -887,-3331,-4769,-4680,-3151,-778,1692,3699,4977,5368, 4737,3067,593,-2082,-4145,-4856,-3986,-1960,486,2730, 4435,5361,5298,4149,2027,-636,-3116,-4573,-4482,-3018, -763,1632,3680,5088,5549,4883,3158,676,-1991,-4004, -4607,-3751,-1871,501,2781,4555,5504,5368,4146,1996, -677,-3099,-4403,-4218,-2803,-666,1651,3711,5105,5476, 4776,3065,553,-2033,-3823,-4328,-3489,-1693,476,2631, 4382,5263,5106,3932,1784,-824,-3004,-4095,-3896,-2596, -644,1546,3578,4956,5372,4715,2944,441,-2024,-3691, -4097,-3308,-1677,475,2695,4457,5389,5286,4025,1766, -854,-3007,-4061,-3861,-2615,-575,1770,3801,5130,5532, 4846,3060,525,-2000,-3689,-4130,-3352,-1579,743,3011, 4739,5594,5380,4042,1759,-863,-2968,-4014,-3844,-2521, -410,1913,3924,5226,5535,4736,2853,308,-2017,-3511, -3965,-3262,-1530,745,2949,4617,5417,5169,3798,1506, -968,-2890,-3892,-3714,-2376,-312,1942,3933,5212,5473, 4575,2597,89,-2222,-3804,-4241,-3376,-1516,778,3022, 4755,5573,5236,3675,1253,-1330,-3395,-4414,-4101,-2588, -371,2012,4054,5312,5494,4439,2333,-250,-2643,-4225, -4530,-3508,-1523,882,3144,4820,5552,5038,3339,907, -1652,-3710,-4707,-4355,-2798,-509,1911,3994,5326,5467, 4336,2246,-344,-2779,-4374,-4687,-3670,-1732,581,2884, 4729,5554,5077,3429,985,-1626,-3713,-4704,-4308,-2771, -603,1799,3984,5394,5609,4516,2336,-328,-2747,-4304, -4578,-3585,-1710,667,3053,4856,5647,5191,3562,1155, -1431,-3478,-4382,-3995,-2592,-483,1904,3974,5285,5500, 4483,2496,-18,-2404,-3930,-4212,-3336,-1559,754,3030, 4750,5561,5212,3717,1389,-1161,-3159,-4070,-3809,-2525, -447,1981,4137,5467,5687,4752,2795,264,-2092,-3607, -3996,-3273,-1592,717,3096,4923,5739,5368,3854,1530, -948,-2880,-3842,-3673,-2394,-283,2111,4175,5456,5668, 4675,2653,185,-2021,-3443,-3795,-3027,-1278,1035,3295, 4953,5657,5202,3589,1245,-1131,-2959,-3835,-3577,-2253, -153,2207,4219,5410,5496,4360,2228,-265,-2437,-3777, -4018,-3116,-1245,1152,3444,5082,5698,5071,3331,928, -1533,-3415,-4266,-3916,-2389,-44,2456,4520,5686,5608, 4298,2112,-431,-2692,-4135,-4442,-3427,-1281,1328,3742, 5446,5950,5129,3241,736,-1754,-3689,-4639,-4254,-2540, -29,2619,4812,5952,5743,4297,1999,-553,-2858,-4457, -4817,-3711,-1490,1218,3755,5464,5914,5060,3148,689, -1810,-3869,-4917,-4558,-2875,-307,2471,4688,5816,5625, 4232,2077,-439,-2883,-4574,-4939,-3882,-1696,1042,3605, 5368,5919,5154,3359,957,-1651,-3826,-4898,-4560,-2884, -361,2322,4505,5639,5497,4245,2178,-363,-2785,-4409, -4785,-3788,-1667,1008,3546,5259,5731,4992,3337,1051, -1480,-3621,-4746,-4471,-2829,-316,2369,4539,5658,5548, 4362,2378,-103,-2557,-4288,-4761,-3779,-1626,1050,3521, 5158,5649,5071,3571,1321,-1244,-3402,-4471,-4147,-2555, -140,2457,4541,5626,5577,4496,2564,105,-2304,-3959, -4354,-3367,-1279,1298,3656,5252,5789,5193,3637,1377, -1127,-3186,-4237,-3970,-2378,98,2693,4712,5725,5588, 4479,2603,207,-2138,-3760,-4156,-3143,-993,1612,3909, 5372,5746,5073,3547,1369,-1039,-3083,-4168,-3846,-2152, 321,2803,4664,5549,5430,4368,2446,25,-2312,-3958, -4345,-3240,-1028,1565,3824,5200,5547,4932,3412,1219, -1228,-3364,-4485,-4103,-2312,228,2729,4575,5475,5361, 4236,2308,-98,-2512,-4213,-4595,-3465,-1168,1471,3668, 5055,5478,4861,3327,1097,-1489,-3654,-4641,-4163,-2354, 157,2560,4342,5263,5197,4171,2284,-230,-2737,-4402, -4650,-3397,-1158,1283,3353,4709,5182,4706,3272,1017, -1589,-3774,-4788,-4253,-2401,58,2395,4146,5094,5146, 4243,2383,-149,-2714,-4453,-4716,-3463,-1206,1303,3448, 4897,5494,5111,3663,1310,-1426,-3762,-4855,-4310,-2482, -49,2351,4242,5393,5610,4680,2666,-9,-2651,-4393, -4643,-3447,-1309,1152,3382,5028,5825,5493,3982,1577, -1215,-3543,-4596,-4155,-2487,-136,2278,4287,5540,5754, 4799,2785,75,-2607,-4344,-4644,-3548,-1464,968,3213, 4882,5657,5346,3864,1396,-1412,-3660,-4673,-4264,-2653, -359,2030,4085,5413,5718,4854,2810,45,-2585,-4253, -4516,-3462,-1506,868,3174,4912,5696,5343,3817,1355, -1355,-3490,-4405,-3934,-2380,-163,2226,4262,5503,5679, 4683,2635,7,-2473,-4047,-4273,-3186,-1142,1265,3443, 5024,5711,5303,3785,1364,-1333,-3421,-4278,-3754,-2065, 249,2534,4370,5480,5591,4586,2537,-151,-2637,-4120, -4226,-2980,-835,1577,3732,5277,5900,5378,3680,1097, -1647,-3689,-4463,-3799,-1950,484,2883,4771,5806,5774, 4591,2359,-438,-2947,-4379,-4371,-3037,-822,1658,3836, 5324,5812,5139,3359,782,-1933,-3969,-4703,-3967,-2046, 428,2775,4620,5667,5594,4287,1927,-904,-3339,-4658, -4578,-3186,-915,1566,3726,5221,5738,5047,3171,466, -2362,-4395,-5010,-4189,-2279,170,2589,4552,5683,5619, 4246,1887,-931,-3481,-4907,-4818,-3397,-1108,1410,3639, 5264,5908,5227,3283,533,-2295,-4340,-5023,-4263,-2346, 151,2635,4668,5848,5844,4514,2051,-910,-3469,-4871, -4746,-3240,-914,1633,3953,5606,6179,5435,3417,621, -2157,-4128,-4752,-3915,-1985,496,3008,5039,6180,6120, 4730,2265,-644,-3151,-4509,-4446,-3136,-943,1657,4069, 5775,6362,5636,3724,993,-1830,-3845,-4527,-3839,-2041, 404,2909,5011,6260,6226,4855,2410,-467,-2880,-4212, -4232,-2986,-830,1692,4058,5764,6360,5628,3617,814, -1912,-3774,-4372,-3711,-2050,252,2749,4841,5972,5863, 4444,2022,-715,-2993,-4211,-4129,-2912,-902,1504,3769, 5351,5887,5125,3130,454,-2077,-3802,-4382,-3751,-2097, 204,2622,4581,5651,5533,4118,1725,-937,-3081,-4197, -4134,-2955,-961,1387,3636,5265,5774,4931,2914,322, -2074,-3661,-4150,-3498,-1821,452,2810,4772,5826,5575, 3978,1487,-1107,-3077,-4025,-3880,-2638,-522,1930,4137, 5589,5838,4744,2578,-68,-2453,-3986,-4351,-3487,-1596, 831,3257,5176,6047,5579,3844,1252,-1455,-3575,-4641, -4377,-2871,-560,2038,4356,5819,6080,4989,2705,-76, -2564,-4210,-4647,-3789,-1907,587,3164,5147,6025,5585, 3837,1275,-1355,-3482,-4606,-4444,-3057,-762,1907,4310, 5818,6020,4857,2624,-63,-2532,-4205,-4704,-3916,-1987, 604,3215,5232,6111,5601,3881,1357,-1346,-3465,-4518, -4350,-2988,-736,1876,4271,5835,6059,4917,2743,46, -2433,-4038,-4460,-3674,-1845,609,3164,5237,6217,5787, 4083,1597,-982,-3038,-4095,-3955,-2678,-510,2042,4365, 5892,6191,5141,3029,474,-1896,-3534,-4040,-3344,-1565, 921,3455,5406,6270,5808,4186,1838,-674,-2767,-3928, -3847,-2549,-309,2295,4583,5981,6119,5031,3043,625, -1687,-3394,-4042,-3434,-1660,862,3408,5300,6087,5596, 4017,1796,-587,-2628,-3806,-3873,-2772,-628,1966,4237, 5600,5726,4667,2792,512,-1729,-3376,-4018,-3468,-1771, 634,3063,4866,5593,5112,3640,1507,-847,-2844,-4015, -4047,-2794,-549,1990,4120,5306,5330,4312,2434,62, -2204,-3797,-4332,-3620,-1764,736,3153,4847,5431,4879, 3358,1172,-1197,-3219,-4352,-4230,-2831,-526,2005,4066, 5206,5228,4155,2250,-75,-2316,-3897,-4386,-3588,-1613, 935,3251,4801,5310,4728,3241,1102,-1285,-3269,-4295, -4083,-2612,-265,2223,4211,5284,5226,4118,2205,-161, -2441,-4028,-4444,-3536,-1528,985,3294,4887,5478,4953, 3372,1072,-1381,-3390,-4407,-4134,-2645,-303,2251,4327, 5499,5581,4533,2527,40,-2334,-3960,-4355,-3451,-1497, 991,3343,5032,5698,5182,3635,1410,-1016,-3061,-4148, -3941,-2484,-190,2283,4327,5548,5662,4646,2735,314, -2037,-3709,-4231,-3443,-1577,902,3372,5197,5935,5472, 3986,1791,-677,-2837,-4071,-4015,-2720,-508,2089,4398, 5808,5973,4966,3100,725,-1675,-3484,-4191,-3566,-1698, 878,3400,5270,6067,5671,4273,2095,-434,-2661,-3994, -4059,-2759,-433,2208,4467,5806,5978,5109,3352,951, -1533,-3435,-4165,-3472,-1595,913,3370,5162,5934,5641, 4336,2171,-365,-2643,-4016,-4025,-2682,-380,2195,4314, 5552,5794,5018,3258,802,-1763,-3686,-4361,-3625,-1685, 882,3264,4900,5577,5264,4019,1928,-674,-3055,-4418, -4317,-2764,-294,2222,4147,5212,5339,4537,2809,358, -2194,-4046,-4616,-3689,-1566,989,3218,4681,5242,4884, 3568,1372,-1220,-3434,-4563,-4259,-2658,-307,2097,3971, 5009,5124,4257,2433,-37,-2504,-4187,-4549,-3505,-1409, 1061,3217,4650,5227,4864,3453,1144,-1478,-3620,-4612, -4192,-2539,-207,2111,3916,4982,5191,4371,2454,-147, -2673,-4354,-4622,-3455,-1345,1046,3175,4711,5425,5135, 3716,1353,-1335,-3556,-4573,-4062,-2302,72,2403,4235, 5334,5510,4602,2656,55,-2495,-4146,-4349,-3134,-956, 1500,3628,5107,5739,5323,3812,1429,-1289,-3500,-4438, -3874,-2080,362,2756,4647,5788,5906,4871,2807,111, -2476,-4118,-4301,-3079,-936,1520,3766,5416,6137,5683, 4030,1487,-1284,-3527,-4523,-3978,-2258,87,2554,4661, 5970,6163,5076,2853,57,-2577,-4272,-4476,-3254,-1124, 1337,3631,5343,6121,5695,4063,1556,-1254,-3511,-4434, -3837,-2072,280,2636,4594,5820,5998,4985,2862,21, -2666,-4271,-4367,-3111,-983,1443,3669,5331,6074,5664, 4045,1405,-1475,-3628,-4450,-3834,-2121,173,2561,4613, 5902,6082,5000,2735,-119,-2668,-4160,-4235,-3045,-1006, 1389,3626,5286,6045,5603,3854,1167,-1638,-3661,-4354, -3715,-2050,231,2592,4551,5795,5992,4871,2534,-395, -2937,-4275,-4182,-2919,-881,1485,3679,5331,6098,5606, 3756,983,-1833,-3802,-4393,-3655,-1966,281,2581,4489, 5709,5857,4624,2212,-609,-2963,-4187,-4109,-2925,-921, 1410,3554,5166,5859,5232,3278,574,-2041,-3812,-4354, -3670,-1968,284,2562,4493,5675,5637,4198,1738,-1002, -3207,-4333,-4213,-2937,-886,1441,3634,5262,5836,5049, 3008,260,-2333,-4007,-4468,-3736,-2044,209,2602,4670, 5857,5706,4169,1657,-1091,-3274,-4366,-4217,-2972,-948, 1464,3827,5582,6152,5217,3032,309,-2221,-3941,-4452, -3746,-2075,227,2743,4940,6199,6032,4440,1913,-849, -3079,-4223,-4109,-2888,-861,1611,4050,5839,6372,5423, 3284,548,-2021,-3734,-4245,-3546,-1865,468,3024,5230, 6427,6192,4564,2011,-722,-2912,-4075,-4054,-2919,-886, 1680,4227,6017,6461,5457,3322,617,-1920,-3624,-4206, -3667,-2073,333,3027,5291,6430,6115,4488,1995,-726, -2929,-4096,-4120,-3045,-983,1686,4303,6106,6564,5567, 3403,674,-1836,-3517,-4109,-3589,-2044,275,2930,5210, 6362,6048,4381,1845,-774,-2807,-3896,-3899,-2839,-875, 1663,4166,5874,6267,5219,3052,427,-1934,-3509,-4062, -3520,-1943,440,3076,5160,6137,5752,4081,1629,-880, -2827,-3873,-3878,-2785,-737,1817,4180,5688,5949,4867, 2721,194,-1993,-3440,-3963,-3392,-1728,670,3193,5155, 6020,5518,3758,1326,-1053,-2856,-3810,-3759,-2614,-513, 2047,4338,5746,5888,4655,2464,51,-2024,-3430,-3948, -3412,-1771,649,3165,5100,5902,5284,3456,1047,-1267, -3033,-4010,-3988,-2814,-674,1904,4272,5719,5753,4420, 2184,-274,-2369,-3777,-4251,-3586,-1855,579,3186,5218, 5992,5306,3437,1001,-1290,-3043,-4060,-4063,-2864,-641, 2064,4493,5876,5791,4378,2165,-216,-2266,-3661,-4163, -3571,-1807,805,3548,5540,6116,5229,3356,1068,-1195, -3024,-4055,-4057,-2847,-558,2248,4770,6166,6036,4607, 2424,55,-2049,-3533,-4136,-3585,-1791,885,3721,5775, 6400,5580,3724,1395,-924,-2833,-3956,-3998,-2815,-494, 2445,5016,6363,6208,4801,2692,367,-1845,-3529,-4218, -3620,-1718,1090,3927,5859,6388,5574,3847,1665,-616, -2629,-3918,-4043,-2775,-334,2563,4982,6177,5986,4771, 2909,690,-1546,-3337,-4149,-3628,-1756,996,3741,5591, 6103,5396,3836,1774,-443,-2484,-3886,-4112,-2895,-454, 2423,4712,5799,5672,4551,2722,565,-1549,-3275,-4107, -3611,-1717,1048,3664,5277,5655,4971,3495,1522,-647, -2647,-3946,-4031,-2705,-295,2366,4428,5421,5282,4188, 2455,388,-1703,-3383,-4114,-3473,-1542,1038,3411,4929, 5371,4795,3427,1524,-611,-2575,-3865,-3951,-2662,-359, 2217,4226,5206,5102,4107,2502,512,-1601,-3379,-4166, -3517,-1586,959,3273,4756,5204,4668,3341,1512,-581, -2628,-4009,-4100,-2721,-338,2185,4104,5036,4958,4025, 2432,382,-1816,-3591,-4278,-3495,-1477,1042,3304,4758, 5147,4582,3290,1414,-792,-2882,-4192,-4088,-2547,-152, 2332,4232,5174,5125,4198,2539,388,-1870,-3668,-4299, -3435,-1363,1231,3517,4936,5352,4867,3615,1695,-651, -2846,-4112,-3944,-2383,28,2512,4403,5342,5307,4472, 2905,685,-1746,-3590,-4152,-3197,-1081,1444,3656,5081, 5535,5114,3887,1883,-565,-2788,-3984,-3717,-2107,301, 2758,4606,5515,5509,4682,3020,700,-1757,-3557,-4016, -3039,-992,1521,3763,5200,5702,5317,4054,2007,-506, -2789,-3995,-3732,-2132,278,2727,4579,5578,5704,4932, 3231,795,-1774,-3610,-4093,-3129,-1047,1446,3610,5069, 5718,5483,4252,2048,-636,-2956,-4151,-3858,-2247,92, 2433,4278,5397,5642,4885,3106,583,-2005,-3814,-4234, -3189,-1124,1236,3281,4708,5403,5193,3931,1757,-844, -3089,-4217,-3888,-2298,-58,2166,3916,4981,5260,4555, 2804,324,-2222,-3989,-4377,-3332,-1338,911,2943,4469, 5225,5005,3698,1474,-1102,-3296,-4402,-4058,-2497,-334, 1835,3648,4869,5225,4450,2554,43,-2359,-3989,-4331, -3347,-1460,774,2838,4375,5157,4926,3555,1302,-1234, -3325,-4320,-3912,-2359,-262,1853,3674,4923,5242,4404, 2527,23,-2406,-3989,-4251,-3178,-1252,894,2880,4469, 5321,5103,3702,1339,-1316,-3374,-4198,-3646,-2051,36, 2169,4034,5253,5488,4591,2617,-2,-2468,-3960,-4012, -2797,-851,1362,3461,5067,5802,5402,3819,1363,-1322, -3410,-4228,-3640,-1989,250,2580,4542,5767,5978,4995, 2871,91,-2465,-3959,-4042,-2899,-926,1416,3674,5420, 6230,5860,4256,1652,-1190,-3311,-4113,-3548,-1955,221, 2564,4646,6022,6290,5262,3018,135,-2401,-3831,-3897, -2774,-853,1466,3708,5436,6256,5876,4211,1590,-1175, -3193,-3926,-3345,-1767,413,2722,4734,6065,6306,5243, 3010,209,-2264,-3711,-3846,-2752,-793,1514,3710,5418, 6241,5834,4099,1416,-1319,-3244,-3980,-3499,-1992,154, 2497,4570,5903,6120,4999,2695,-90,-2469,-3826,-3939, -2943,-1147,1085,3347,5163,6014,5524,3727,1136,-1445, -3327,-4098,-3695,-2305,-270,1956,3991,5395,5644,4526, 2289,-380,-2638,-3923,-4075,-3165,-1433,720,2897,4677, 5544,5119,3403,856,-1700,-3541,-4265,-3793,-2374,-422, 1737,3780,5188,5411,4233,1969,-645,-2865,-4155,-4255, -3261,-1515,637,2854,4665,5496,4945,3098,553,-1935, -3703,-4335,-3827,-2438,-423,1893,4023,5365,5428,4140, 1887,-663,-2806,-4007,-4047,-3066,-1312,920,3226,5045, 5757,5061,3147,611,-1767,-3405,-3991,-3506,-2125,-60, 2357,4566,5883,5845,4427,2058,-510,-2567,-3675,-3713, -2817,-1133,1182,3664,5560,6219,5424,3449,916,-1442, -3072,-3691,-3283,-1981,82,2574,4852,6159,6034,4549, 2178,-350,-2326,-3404,-3490,-2586,-790,1614,4070,5852, 6364,5467,3445,872,-1461,-2999,-3571,-3146,-1768,398, 2956,5185,6356,6144,4616,2209,-320,-2295,-3410,-3530, -2628,-800,1684,4206,5967,6440,5506,3449,909,-1375, -2953,-3623,-3288,-1877,467,3136,5334,6434,6127,4552, 2189,-312,-2372,-3599,-3824,-2934,-947,1676,4211,5947, 6349,5348,3324,864,-1424,-3075,-3848,-3538,-2040,318, 2932,5104,6184,5869,4293,1964,-439,-2362,-3539,-3800, -2925,-969,1592,4071,5732,6094,5110,3098,679,-1526, -3145,-3925,-3642,-2235,41,2634,4794,5850,5522,4001, 1809,-474,-2431,-3709,-4007,-3167,-1283,1205,3620,5259, 5648,4732,2851,568,-1604,-3265,-4057,-3755,-2330,-54, 2496,4560,5531,5193,3716,1567,-690,-2621,-3859,-4107, -3224,-1334,1161,3559,5107,5375,4370,2493,312,-1748, -3361,-4172,-3884,-2443,-125,2443,4480,5393,4972,3474, 1411,-756,-2657,-3920,-4194,-3290,-1316,1249,3641,5141, 5356,4366,2572,401,-1716,-3368,-4167,-3831,-2335,25, 2595,4596,5473,5083,3668,1648,-537,-2472,-3766,-4011, -3041,-1011,1591,3953,5374,5575,4628,2873,737,-1393, -3095,-3918,-3558,-1999,449,3054,4971,5734,5294,3909, 1967,-213,-2241,-3599,-3880,-2872,-706,1964,4275,5630, 5779,4833,3108,944,-1255,-3018,-3885,-3525,-1845,721, 3343,5257,6022,5627,4280,2251,-39,-2109,-3503,-3787, -2752,-594,2076,4444,5833,6027,5154,3433,1210,-1051, -2869,-3774,-3390,-1705,814,3373,5228,6017,5688,4370, 2345,30,-2082,-3490,-3751,-2647,-412,2225,4431,5731, 5943,5092,3380,1131,-1199,-3063,-3905,-3387,-1595,931, 3397,5180,5935,5565,4204,2120,-260,-2426,-3812,-3953, -2715,-444,2157,4349,5636,5818,4916,3137,836,-1521, -3384,-4212,-3673,-1841,738,3272,5081,5807,5385,4013, 1975,-413,-2650,-4110,-4297,-3072,-753,1925,4171,5473, 5606,4684,2969,719,-1655,-3614,-4546,-4039,-2194,398, 2946,4805,5583,5215,3882,1811,-622,-2908,-4452,-4685, -3452,-1151,1521,3835,5191,5372,4503,2790,505,-1928, -3921,-4834,-4303,-2475,113,2689,4530,5286,4927,3626, 1641,-748,-3048,-4543,-4695,-3426,-1095,1572,3773,5050, 5262,4449,2796,534,-1937,-3905,-4713,-4099,-2196,384, 2846,4590,5309,5012,3821,1844,-617,-2931,-4373,-4473, -3142,-805,1783,3948,5232,5466,4730,3112,796,-1726, -3747,-4587,-3932,-1983,628,3104,4860,5646,5418,4225, 2211,-303,-2704,-4221,-4315,-2941,-536,2112,4254,5504, 5784,5092,3472,1114,-1480,-3522,-4294,-3545,-1543,1048, 3457,5165,5961,5774,4580,2478,-147,-2577,-4016,-3990, -2536,-168,2370,4466,5792,6154,5452,3724,1235,-1406, -3416,-4162,-3407,-1419,1141,3543,5323,6197,5996,4734, 2570,-97,-2544,-3995,-3974,-2513,-133,2418,4526,5858, 6181,5422,3678,1184,-1481,-3523,-4266,-3463,-1453,1060, 3399,5121,5972,5790,4534,2312,-399,-2827,-4234,-4146, -2646,-314,2165,4241,5542,5892,5174,3370,816,-1822, -3780,-4441,-3615,-1643,814,3140,4875,5758,5616,4333, 2093,-608,-3037,-4408,-4329,-2910,-617,1855,3935,5312, 5763,5074,3293,729,-2015,-4011,-4613,-3782,-1853,564, 2838,4577,5520,5435,4217,1984,-794,-3244,-4551,-4390, -2925,-717,1609,3622,4996,5450,4810,3050,469,-2195, -4077,-4630,-3784,-1892,439,2660,4394,5337,5252,4014, 1777,-915,-3258,-4504,-4343,-2952,-765,1617,3680,5104, 5603,4949,3141,549,-2109,-4029,-4638,-3837,-1992,355, 2662,4510,5596,5597,4328,2010,-739,-3105,-4374,-4257, -2914,-804,1547,3704,5271,5874,5225,3335,680,-1969, -3806,-4340,-3584,-1832,443,2760,4694,5810,5761,4415, 2035,-721,-3041,-4237,-4094,-2785,-700,1644,3813,5397, 5978,5279,3367,706,-1932,-3750,-4276,-3514,-1758,510, 2821,4796,5964,5924,4590,2202,-591,-2911,-4102,-3939, -2623,-568,1792,4034,5671,6230,5479,3510,818,-1789, -3566,-4064,-3286,-1577,680,3057,5052,6171,6048,4596, 2173,-539,-2782,-3954,-3822,-2544,-449,1961,4171,5738, 6223,5391,3405,748,-1846,-3578,-4047,-3281,-1501,829, 3173,5093,6133,5925,4460,2044,-703,-2944,-4056,-3877, -2534,-401,2022,4265,5835,6270,5373,3292,551,-2035, -3743,-4209,-3431,-1642,744,3210,5198,6209,5938,4375, 1868,-892,-3107,-4207,-4025,-2724,-597,1912,4216,5757, 6121,5152,3044,347,-2197,-3910,-4386,-3598,-1784,629, 3073,5027,6026,5725,4117,1585,-1165,-3331,-4383,-4192, -2863,-685,1823,4095,5625,5989,5008,2873,137,-2439, -4124,-4548,-3754,-1963,447,2948,4960,5974,5650,4001, 1510,-1161,-3357,-4495,-4346,-3033,-847,1699,4012,5590, 5986,4973,2818,132,-2395,-4114,-4635,-3903,-2069,423, 2967,5003,6024,5705,4072,1538,-1212,-3434,-4579,-4409, -2991,-713,1878,4247,5829,6161,5106,2910,186,-2324, -4018,-4508,-3691,-1816,677,3259,5303,6284,5904,4216, 1678,-1021,-3206,-4345,-4231,-2940,-722,1953,4406,6006, 6321,5257,3137,485,-2049,-3781,-4319,-3611,-1813,682, 3270,5348,6370,5985,4333,1858,-809,-2944,-4079,-4005, -2715,-511,2086,4485,6072,6379,5314,3143,443,-2041, -3687,-4179,-3474,-1738,694,3289,5353,6294,5874,4200, 1730,-875,-2966,-4046,-3911,-2651,-516,2058,4399,5882, 6133,5052,2914,312,-2062,-3663,-4179,-3505,-1753,713, 3262,5216,6081,5642,4002,1595,-944,-2964,-4023,-3940, -2716,-589,1936,4261,5754,5975,4883,2795,279,-2008, -3536,-4024,-3358,-1615,807,3308,5248,6091,5586,3860, 1414,-1060,-2967,-3939,-3832,-2574,-339,2285,4570,5913, 5957,4705,2511,-34,-2312,-3817,-4241,-3452,-1529,1044, 3592,5475,6171,5511,3708,1215,-1331,-3355,-4423,-4228, -2757,-373,2320,4632,5957,6009,4783,2553,-58,-2401, -4005,-4481,-3667,-1737,858,3465,5337,6027,5428,3667, 1230,-1260,-3301,-4424,-4309,-2920,-548,2177,4510,5842, 5875,4643,2488,-36,-2381,-4028,-4568,-3796,-1812,854, 3448,5321,6010,5379,3669,1274,-1271,-3328,-4408,-4263, -2851,-491,2172,4473,5836,5881,4689,2594,38,-2348, -3955,-4400,-3580,-1653,900,3430,5329,6098,5543,3857, 1484,-990,-3024,-4100,-3930,-2552,-256,2343,4570,5889, 5997,4880,2831,381,-1943,-3586,-4070,-3281,-1364,1210, 3715,5506,6168,5582,3970,1699,-758,-2844,-3989,-3835, -2396,-31,2593,4783,6015,6011,4868,2907,517,-1798, -3490,-4063,-3305,-1373,1225,3727,5475,6097,5514,3923, 1704,-688,-2737,-3876,-3805,-2522,-252,2366,4549,5739, 5731,4621,2731,429,-1836,-3475,-4022,-3309,-1453,1043, 3439,5118,5715,5159,3657,1502,-878,-2901,-4038,-3949, -2549,-206,2336,4377,5469,5451,4414,2523,126,-2187, -3806,-4294,-3469,-1502,1042,3414,5020,5550,4994,3478, 1270,-1154,-3217,-4338,-4138,-2633,-257,2268,4268,5343, 5340,4277,2365,2,-2285,-3892,-4348,-3465,-1413,1152, 3431,4928,5414,4846,3361,1194,-1235,-3261,-4293,-4028, -2477,-85,2396,4338,5373,5320,4234,2323,-77,-2402, -4014,-4406,-3429,-1372,1144,3416,4969,5557,5047,3481, 1174,-1311,-3356,-4376,-4055,-2512,-153,2369,4391,5538, 5633,4599,2593,87,-2313,-3946,-4307,-3344,-1344,1138, 3446,5084,5738,5238,3696,1442,-1036,-3108,-4164,-3886, -2356,-37,2396,4387,5578,5694,4687,2754,284,-2103, -3755,-4193,-3302,-1372,1085,3475,5224,5932,5474,3981, 1732,-786,-2939,-4091,-3909,-2512,-282,2256,4476,5822, 5967,4953,3043,601,-1829,-3590,-4175,-3417,-1496,1046, 3504,5312,6077,5670,4233,1995,-589,-2806,-4039,-3967, -2577,-248,2337,4535,5839,6004,5100,3272,795,-1711, -3541,-4131,-3326,-1405,1080,3488,5246,6005,5682,4304, 2047,-541,-2780,-4029,-3911,-2497,-192,2349,4434,5660, 5889,5062,3212,681,-1881,-3708,-4258,-3438,-1479,1067, 3418,5046,5727,5398,4076,1884,-762,-3089,-4349,-4158, -2573,-125,2360,4288,5379,5514,4663,2843,314,-2232, -4018,-4504,-3524,-1409,1116,3343,4840,5435,5066,3673, 1387,-1235,-3415,-4478,-4122,-2508,-184,2205,4107,5192, 5316,4399,2481,-44,-2504,-4134,-4445,-3379,-1302,1142, 3301,4778,5391,5006,3522,1154,-1482,-3585,-4526,-4076, -2435,-124,2182,4012,5118,5328,4453,2474,-160,-2662, -4292,-4515,-3342,-1260,1097,3231,4794,5531,5210,3732, 1323,-1362,-3537,-4498,-3962,-2220,108,2425,4282,5416, 5588,4636,2627,8,-2506,-4096,-4263,-3054,-920,1512, 3652,5164,5806,5362,3795,1380,-1321,-3471,-4357,-3775, -2012,393,2778,4692,5845,5951,4865,2757,59,-2477, -4056,-4196,-2982,-869,1565,3820,5483,6197,5705,4006, 1441,-1300,-3478,-4409,-3852,-2157,153,2617,4730,6044, 6208,5080,2822,39,-2545,-4172,-4348,-3136,-1045,1406, 3705,5430,6190,5727,4046,1522,-1256,-3443,-4322,-3721, -1985,352,2716,4695,5915,6059,4995,2838,7,-2624, -4178,-4250,-3014,-903,1522,3772,5437,6162,5702,4044, 1391,-1453,-3558,-4349,-3740,-2040,249,2656,4715,5997, 6141,5017,2728,-105,-2617,-4070,-4146,-2961,-931,1481, 3730,5395,6126,5648,3861,1183,-1598,-3587,-4274,-3635, -1987,304,2678,4655,5888,6059,4894,2552,-363,-2866, -4197,-4105,-2859,-816,1553,3768,5420,6174,5646,3785, 1013,-1770,-3724,-4306,-3590,-1899,343,2663,4574,5797, 5918,4671,2245,-554,-2897,-4107,-4044,-2857,-867,1479, 3626,5251,5922,5291,3319,632,-1976,-3727,-4282,-3595, -1914,348,2623,4570,5737,5702,4242,1801,-939,-3120, -4259,-4132,-2879,-818,1495,3711,5321,5908,5094,3071, 313,-2248,-3941,-4381,-3678,-1968,260,2680,4724,5935, 5752,4244,1701,-1003,-3220,-4272,-4169,-2879,-908,1556, 3860,5680,6180,5329,3023,-236,-236,-236,-236 }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaPianoProcessor.cpp000066400000000000000000000314541461511344300257310ustar00rootroot00000000000000/* * mdaPianoProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaPianoProcessor.h" #include "mdaPianoController.h" #include "mdaPianoData.h" #include #include namespace Steinberg { namespace Vst { namespace mda { #define SILENCE 0.0001f //voice choking //----------------------------------------------------------------------------- float PianoProcessor::programParams[][NPARAMS] = { {0.500f, 0.500f, 0.500f, 0.5f, 0.803f, 0.251f, 0.376f, 0.500f, 0.330f, 0.500f, 0.246f, 0.500f}, {0.500f, 0.500f, 0.500f, 0.5f, 0.751f, 0.000f, 0.452f, 0.000f, 0.000f, 0.500f, 0.000f, 0.500f}, {0.902f, 0.399f, 0.623f, 0.5f, 1.000f, 0.331f, 0.299f, 0.499f, 0.330f, 0.500f, 0.000f, 0.500f}, {0.399f, 0.251f, 1.000f, 0.5f, 0.672f, 0.124f, 0.127f, 0.249f, 0.330f, 0.500f, 0.283f, 0.667f}, {0.648f, 0.500f, 0.500f, 0.5f, 0.298f, 0.602f, 0.550f, 0.850f, 0.356f, 0.500f, 0.339f, 0.660f}, {0.500f, 0.602f, 0.000f, 0.5f, 0.304f, 0.200f, 0.336f, 0.651f, 0.330f, 0.500f, 0.317f, 0.500f}, {0.450f, 0.598f, 0.626f, 0.5f, 0.603f, 0.500f, 0.174f, 0.331f, 0.330f, 0.500f, 0.421f, 0.801f}, {0.050f, 0.957f, 0.500f, 0.5f, 0.299f, 1.000f, 0.000f, 0.500f, 0.330f, 0.450f, 0.718f, 0.000f}, }; //----------------------------------------------------------------------------- PianoProcessor::PianoProcessor () : currentProgram (0) { setControllerClass (PianoController::uid); allocParameters (NPARAMS); } //----------------------------------------------------------------------------- PianoProcessor::~PianoProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API PianoProcessor::initialize (FUnknown* context) { tresult res = Base::initialize (context); if (res == kResultTrue) { addEventInput (USTRING("MIDI in"), 1); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); Fs = 44100.0f; iFs = 1.0f/Fs; cmax = 0x7F; //just in case... waves = pianoData; //Waveform data and keymapping is hard-wired in *this* version kgrp[ 0].root = 36; kgrp[ 0].high = 37; kgrp[ 0].pos = 0; kgrp[ 0].end = 36275; kgrp[ 0].loop = 14774; kgrp[ 1].root = 40; kgrp[ 1].high = 41; kgrp[ 1].pos = 36278; kgrp[ 1].end = 83135; kgrp[ 1].loop = 16268; kgrp[ 2].root = 43; kgrp[ 2].high = 45; kgrp[ 2].pos = 83137; kgrp[ 2].end = 146756; kgrp[ 2].loop = 33541; kgrp[ 3].root = 48; kgrp[ 3].high = 49; kgrp[ 3].pos = 146758; kgrp[ 3].end = 204997; kgrp[ 3].loop = 21156; kgrp[ 4].root = 52; kgrp[ 4].high = 53; kgrp[ 4].pos = 204999; kgrp[ 4].end = 244908; kgrp[ 4].loop = 17191; kgrp[ 5].root = 55; kgrp[ 5].high = 57; kgrp[ 5].pos = 244910; kgrp[ 5].end = 290978; kgrp[ 5].loop = 23286; kgrp[ 6].root = 60; kgrp[ 6].high = 61; kgrp[ 6].pos = 290980; kgrp[ 6].end = 342948; kgrp[ 6].loop = 18002; kgrp[ 7].root = 64; kgrp[ 7].high = 65; kgrp[ 7].pos = 342950; kgrp[ 7].end = 391750; kgrp[ 7].loop = 19746; kgrp[ 8].root = 67; kgrp[ 8].high = 69; kgrp[ 8].pos = 391752; kgrp[ 8].end = 436915; kgrp[ 8].loop = 22253; kgrp[ 9].root = 72; kgrp[ 9].high = 73; kgrp[ 9].pos = 436917; kgrp[ 9].end = 468807; kgrp[ 9].loop = 8852; kgrp[10].root = 76; kgrp[10].high = 77; kgrp[10].pos = 468809; kgrp[10].end = 492772; kgrp[10].loop = 9693; kgrp[11].root = 79; kgrp[11].high = 81; kgrp[11].pos = 492774; kgrp[11].end = 532293; kgrp[11].loop = 10596; kgrp[12].root = 84; kgrp[12].high = 85; kgrp[12].pos = 532295; kgrp[12].end = 560192; kgrp[12].loop = 6011; kgrp[13].root = 88; kgrp[13].high = 89; kgrp[13].pos = 560194; kgrp[13].end = 574121; kgrp[13].loop = 3414; kgrp[14].root = 93; kgrp[14].high = 999; kgrp[14].pos = 574123; kgrp[14].end = 586343; kgrp[14].loop = 2399; //initialise... for(int32 v=0; v 64000.0f) cmax = 0xFF; else cmax = 0x7F; memset (comb, 0, sizeof (float) * 256); } else allNotesOff (); return Base::setActive (state); } //----------------------------------------------------------------------------- void PianoProcessor::setParameter (ParamID index, ParamValue newValue, int32 sampleOffset) { if (index < NPARAMS) Base::setParameter (index, newValue, sampleOffset); else if (index == BaseController::kPresetParam) // program change { currentProgram = std::min (kNumPrograms - 1, (int32)(newValue * kNumPrograms)); const float* newParams = programParams[currentProgram]; if (newParams) { for (int32 i = 0; i < NPARAMS; i++) params[i] = newParams[i]; } } else if (index == BaseController::kModWheelParam) // mod wheel { newValue *= 127.; muff = 0.01f * (float)((127 - newValue) * (127 - newValue)); } else if (index == BaseController::kSustainParam) { synthData.sustain = newValue > 0.5; if (synthData.sustain==0) { for (auto& v : synthData.voice) { if (v.noteID = SustainNoteID) { v.dec = (float)exp (-iFs * exp (6.0 + 0.01 * (double)v.note - 5.0 * params[1])); } } } } } //----------------------------------------------------------------------------- void PianoProcessor::setCurrentProgram (Steinberg::uint32 val) { currentProgram = val; } //----------------------------------------------------------------------------- void PianoProcessor::setCurrentProgramNormalized (ParamValue val) { setCurrentProgram (std::min (kNumPrograms - 1, (int32)(val * kNumPrograms))); } //----------------------------------------------------------------------------- void PianoProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* out0 = data.outputs[0].channelBuffers32[0]; float* out1 = data.outputs[0].channelBuffers32[1]; int32 frame=0, frames, v; float x, l, r; int32 i; synthData.eventPos = 0; if (synthData.activevoices > 0 || synthData.hasEvents ()) { while (framesampleFrames) frames = sampleFrames; frames -= frame; frame += frames; while (--frames>=0) { VOICE *V = synthData.voice.data (); l = r = 0.0f; for(v=0; vfrac += V->delta; //integer-based linear interpolation V->pos += V->frac >> 16; V->frac &= 0xFFFF; if (V->pos > V->end) V->pos -= V->loop; //i = (i << 7) + (V->frac >> 9) * (waves[V->pos + 1] - i) + 0x40400000; //not working on intel mac !?! i = waves[V->pos] + ((V->frac * (waves[V->pos + 1] - waves[V->pos])) >> 16); x = V->env * (float)i / 32768.0f; //x = V->env * (*(float *)&i - 3.0f); //fast int->float V->env = V->env * V->dec; //envelope V->f0 += V->ff * (x + V->f1 - V->f0); //muffle filter V->f1 = x; l += V->outl * V->f0; r += V->outr * V->f0; if (!(l > -2.0f) || !(l < 2.0f)) { printf ("what is this? %d, %f, %f\n", i, x, V->f0); l = 0.0f; } if (!(r > -2.0f) || !(r < 2.0f)) { r = 0.0f; } V++; } comb[cpos] = l + r; ++cpos &= cmax; x = cdep * comb[cpos]; //stereo simulator *out0++ = l + x; *out1++ = r - x; } if (frame 60) l += stretch * (float)k; //stretch s = size; if (velocity > 40) s += (int32)(sizevel * (float)(velocity - 40)); k = 0; while (note > (kgrp[k].high + s)) k++; //find keygroup l += (float)(note - kgrp[k].root); //pitch l = 22050.0f * iFs * (float)exp (0.05776226505 * l); synthData.voice[vl].delta = (int32)(65536.0f * l); synthData.voice[vl].frac = 0; synthData.voice[vl].pos = kgrp[k].pos; synthData.voice[vl].end = kgrp[k].end; synthData.voice[vl].loop = kgrp[k].loop; synthData.voice[vl].env = (0.5f + velsens) * (float)pow (0.0078f * velocity, velsens); //velocity l = 50.0f + params[4] * params[4] * muff + muffvel * (float)(velocity - 64); //muffle if (l < (55.0f + 0.25f * (float)note)) l = 55.0f + 0.25f * (float)note; if (l > 210.0f) l = 210.0f; synthData.voice[vl].ff = l * l * iFs; synthData.voice[vl].f0 = synthData.voice[vl].f1 = 0.0f; synthData.voice[vl].note = note; //note->pan if (note < 12) note = 12; if (note > 108) note = 108; l = volume * trim; synthData.voice[vl].outr = l + l * width * (float)(note - 60); synthData.voice[vl].outl = l + l - synthData.voice[vl].outr; if (note < 44) note = 44; //limit max decay length l = 2.0f * params[0]; if (l < 1.0f) l += 0.25f - 0.5f * params[0]; synthData.voice[vl].dec = (float)exp (-iFs * exp (-0.6 + 0.033 * (double)note - l)); synthData.voice[vl].noteID = noteOn.noteId; } else //note off { auto& noteOff = event.noteOff; auto note = noteOff.pitch; for(v=0; v 0.03f) width = 0.03f; poly = 8 + (int32)(24.9f * params[8]); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaPianoProcessor.h000066400000000000000000000075721461511344300254020ustar00rootroot00000000000000/* * mdaPianoProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class PianoProcessor : public BaseProcessor { public: using Base = BaseProcessor; PianoProcessor (); ~PianoProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'MDAp'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; bool hasProgram () const SMTG_OVERRIDE { return true; } Steinberg::uint32 getCurrentProgram () const SMTG_OVERRIDE { return currentProgram; } Steinberg::uint32 getNumPrograms () const SMTG_OVERRIDE { return kNumPrograms; } void setCurrentProgram (Steinberg::uint32 val) SMTG_OVERRIDE; void setCurrentProgramNormalized (ParamValue val) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new PianoProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653544D, 0x4441706D, 0x64612070, 0x69616E6F); #else inline static DECLARE_UID (uid, 0xA77EA27C, 0x1F184322, 0xBBD2AD93, 0x73A2B7A0); #endif //----------------------------------------------------------------------------- enum { NPARAMS=12, WAVELEN=586348 }; static const int32 kNumPrograms = 8; static float programParams[][NPARAMS]; protected: void setParameter (ParamID index, ParamValue newValue, int32 sampleOffset) SMTG_OVERRIDE; void preProcess () SMTG_OVERRIDE; void processEvent (const Event& event) SMTG_OVERRIDE; void noteEvent (const Event& event); void recalculate () SMTG_OVERRIDE; void allNotesOff (); struct VOICE //voice state { int32 delta; //sample playback int32 frac; int32 pos; int32 end; int32 loop; float env; //envelope float dec; float f0; //first-order LPF float f1; float ff; float outl; float outr; int32 note; //remember what note triggered this int32 noteID; }; struct KGRP //keygroup { int32 root; //MIDI root note int32 high; //highest note int32 pos; int32 end; int32 loop; }; float Fs, iFs; static constexpr int32 kNumVoices = 32; static constexpr int32 kEventBufferSize = 64; using SynthDataT = SynthData; SynthDataT synthData; ///global internal variables KGRP kgrp[16]; int32 poly, cpos; short *waves; int32 cmax; float *comb, cdep, width, trim; int32 size; float tune, fine, random, stretch; float muff, muffvel, sizevel, velsens, volume; Steinberg::uint32 currentProgram; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRePsychoController.cpp000066400000000000000000000074561461511344300265700ustar00rootroot00000000000000/* * mdaRePsychoController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaRePsychoController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- RePsychoController::RePsychoController () { } //----------------------------------------------------------------------------- RePsychoController::~RePsychoController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API RePsychoController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (new ScaledParameter (USTRING("Tune"), USTRING("semi"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, -24, 0, true)); parameters.addParameter (new ScaledParameter (USTRING("Fine"), USTRING("cent"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, -99, 0, true)); parameters.addParameter (new ScaledParameter (USTRING("Decay"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -50, 50, true)); parameters.addParameter (new ScaledParameter (USTRING("Thresh"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -30, 0, true)); parameters.addParameter (USTRING("Hold"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("Mix"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (USTRING("High Quality"), USTRING(""), 1, 0.5, ParameterInfo::kCanAutomate, pid++); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API RePsychoController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API RePsychoController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 4: { float dtim = 441 + int (0.5 * 22050 * valueNormalized); result.printInt (1000.0 * dtim / getSampleRate ()); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API RePsychoController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRePsychoController.h000066400000000000000000000043451461511344300262270ustar00rootroot00000000000000/* * mdaRePsychoController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaRePsychoProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class RePsychoController : public BaseController { public: RePsychoController (); ~RePsychoController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new RePsychoController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461596D, 0x64612072, 0x65707379); #else inline static DECLARE_UID (uid, 0x4C14E332, 0xE185463B, 0x98732E82, 0x944786C5); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRePsychoProcessor.cpp000066400000000000000000000142201461511344300264070ustar00rootroot00000000000000/* * mdaRePsychoProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaRePsychoProcessor.h" #include "mdaRePsychoController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- RePsychoProcessor::RePsychoProcessor () { setControllerClass (RePsychoController::uid); allocParameters (7); } //----------------------------------------------------------------------------- RePsychoProcessor::~RePsychoProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API RePsychoProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[3/**/] = (float)0.6; //thresh params[2/**/] = (float)0.5; //env params[0/**/] = (float)1.0; //tune params[5/**/] = (float)1.0; //mix params[4/**/] = (float)0.45; //minimum chunk length params[1/**/] = (float)1.0; //fine tune params[6/**/] = (float)1.; //quality size = 22050; buffer = new float[size]; buffer2 = new float[size]; buf = 0.0; buf2 = 0.0; tim = size + 1; fil = 0.0; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API RePsychoProcessor::terminate () { if (buffer) delete [] buffer; if (buffer2) delete [] buffer2; buffer = buffer2 = nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API RePsychoProcessor::setActive (TBool state) { if (state) { memset (buffer, 0, size * sizeof (float)); memset (buffer2, 0, size * sizeof (float)); } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void RePsychoProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, c, d; float we=wet, dr = dry, tu=tun, en=env; float ga=gai, x = 0.0f, x2=0.0f, xx=buf, xx2=buf2; float it1, it2; int32 ti=tim, dti=dtim, of1, of2; --in1; --in2; --out1; --out2; if (params[6/**/]>0.5) //high quality { we= (float)(we*2.0); while (--sampleFrames >= 0) { a = *++in1; b = *++in2; //process from here... if ((a+b > thr) && (ti > dti)) //trigger { ga = 1.0; ti = 0; } if (ti<22050) //play out { if (ti<80) //fade in { if (ti==0) { xx=x; xx2=x2; } *(buffer + ti) = a; *(buffer2 + ti) = b; x = *(buffer + int (ti * tu)); x2 = *(buffer2 + int (ti * tu)); x = (float)(xx * (1.0 - (0.0125 * ti)) + (x * 0.0125 * ti)); x2 = (float)(xx2 * (1.0 - (0.0125 * ti)) + (x2 * 0.0125 * ti)); } else { //update to/from buffer *(buffer + ti) = a; *(buffer2 + ti) = b; it1 = (float)(ti * tu); //interpolation of1 = (int)it1; of2 = of1 + 1; it1 = it1 - of1; it2 = (float)(1.0 - it1); x = (it2* *(buffer + of1)) + (it1* *(buffer + of2)); x2 = (it2* *(buffer2 + of1)) + (it1* *(buffer2 + of2)); } ti++; ga*= en; } else //mute { ga = 0; } c = (a * dr) + (x * ga * we); // output d = (b * dr) + (x2 * ga * we); *++out1 = c; *++out2 = d; } } else { while (--sampleFrames >= 0) { a = *++in1; b = *++in2; //process from here... if ((a+b > thr) && (ti > dti)) //trigger { ga = 1.0; ti = 0; } if (ti<22050) //play out { if (ti<80) //fade in { if (ti==0) xx = x; *(buffer + ti) = (a + b); x = *(buffer + int (ti * tu)); x = (float)(xx * (1.0 - (0.0125 * ti)) + (x * 0.0125 * ti)); } else { //update to/from buffer *(buffer + ti) = (a + b); x = *(buffer + int (ti * tu)); } ti++; ga*= en; } else //mute { ga = 0; } c = (a * dr) + (x * ga * we); // output d = (b * dr) + (x * ga * we); *++out1 = c; *++out2 = d; } } tim = ti; gai = ga; buf = xx; buf2 = xx2; } //----------------------------------------------------------------------------- void RePsychoProcessor::recalculate () { dtim = 441 + int (0.5 * size * params[4/**/]); thr = (float)pow (10.0,(1.5 * params[3/**/]) - 1.5); if (params[2/**/]>0.5) { env = (float)(1.0 + 0.003 * pow (params[2/**/] - 0.5,5.0)); } else { env = (float)(1.0 + 0.025 * pow (params[2/**/] - 0.5,5.0)); } //if (params[2/**/]>0.5) //{ env = (float)(1.0 + 0.01 * (params[2/**/] - 0.5)); } //else //{ env = (float)(1.0 + 0.01 * (params[2/**/] - 0.5)); } tun = (float)(((int (params[0/**/] * 24.0) - 24.0) + (params[1/**/] - 1.0)) / 24.0); tun = (float)pow (10.0, 0.60206 * tun); wet = (float)(0.5 * sqrt (params[5/**/])); dry = (float)sqrt (1.0 - params[5/**/]); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRePsychoProcessor.h000066400000000000000000000045671461511344300260710ustar00rootroot00000000000000/* * mdaRePsychoProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class RePsychoProcessor : public BaseProcessor { public: RePsychoProcessor (); ~RePsychoProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaY'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new RePsychoProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461596D, 0x64612072, 0x65707379); #else inline static DECLARE_UID (uid, 0xC20CCF82, 0x90574B71, 0x98AE3FE1, 0x240C2704); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float thr, env, gai, tun, wet, dry, fil, buf, buf2; int32 tim, dtim; float *buffer, *buffer2; int32 size; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRezFilterController.cpp000066400000000000000000000112701461511344300267270ustar00rootroot00000000000000/* * mdaRezFilterController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaRezFilterController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- RezFilterController::RezFilterController () { } //----------------------------------------------------------------------------- RezFilterController::~RezFilterController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API RezFilterController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (new ScaledParameter (USTRING("Freq"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Res"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); parameters.addParameter (new ScaledParameter (USTRING("Env->VCF"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, -100, 100, true)); parameters.addParameter (USTRING("Attack"), USTRING("ms"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Release"), USTRING("ms"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("LFO->VCF"), USTRING("S+H<>Sin"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, -100, 100, true)); parameters.addParameter (USTRING("LFO Rate"), USTRING("Hz"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Trigger"), USTRING("dB"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("Max Freq"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API RezFilterController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API RezFilterController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 4: { float att = (float)pow (10.0, -0.01 - 4.0 * valueNormalized); result.printFloat (-301.0301 / (getSampleRate () * log10(1.0 - att)), 2); break; } case 5: { float rel = 1.f - (float)pow (10.0, -2.00 - 4.0 * valueNormalized); result.printFloat (-301.0301 / (getSampleRate () * log10(rel)), 2); break; } case 7: { result.printFloat (pow (10.0f, (float)(4.f*valueNormalized - 2.f)), 2); break; } case 8: { float tthr = 0; if (valueNormalized<0.1f) tthr=0.f; else tthr = 3.f * valueNormalized * valueNormalized; if (tthr == 0) result.fromAscii("FREE RUN"); else result.printFloat (20*log10 (0.5*tthr), 2); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API RezFilterController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { switch (tag) { case 4: case 5: case 7: case 8: break; default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRezFilterController.h000066400000000000000000000043531461511344300264000ustar00rootroot00000000000000/* * mdaRezFilterController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaRezFilterProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class RezFilterController : public BaseController { public: RezFilterController (); ~RezFilterController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new RezFilterController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461466D, 0x64612072, 0x657A6669); #else inline static DECLARE_UID (uid, 0xEB05C9E8, 0xD99E4797, 0x83E6F33E, 0x90D9378B); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRezFilterProcessor.cpp000066400000000000000000000141231461511344300265630ustar00rootroot00000000000000/* * mdaRezFilterProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaRezFilterProcessor.h" #include "mdaRezFilterController.h" #include #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- RezFilterProcessor::RezFilterProcessor () { setControllerClass (RezFilterController::uid); allocParameters (10); } //----------------------------------------------------------------------------- RezFilterProcessor::~RezFilterProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API RezFilterProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.33f; //f params[1] = 0.70f; //q params[2] = 0.50f; //a params[3] = 0.85f; //fenv params[4] = 0.00f; //att params[5] = 0.50f; //rel params[6] = 0.70f; //lfo params[7] = 0.40f; //rate params[8] = 0.00f; //trigger params[9] = 0.75f; //max freq recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API RezFilterProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API RezFilterProcessor::setActive (TBool state) { if (state) { buf0=0.f; buf1=0.f; buf2=0.f; } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void RezFilterProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a; float f, i, ff=fff, fe=fenv, q=fq, g=fg, e=env, tmp; float b0=buf0, b1=buf1, b2=buf2, at=att, re=rel, fm=fmax; float fl=flfo, dph=dphi, ph=phi, bl=bufl, th=tthr, e2=env2; int32 lm=lfomode, ta=tatt, tt=ttrig; --in1; --in2; --out1; --out2; if (th==0.f) { while (--sampleFrames >= 0) { a = *++in1 + *++in2; i = (a>0)? a : -a; //envelope e = (i>e)? e + at * (i - e) : e * re; if (lm==0) bl = fl * (float)sin(ph); //lfo else if (ph>1.f) { bl = fl*(rand() % 2000 - 1000); ph=0.f; } ph += dph; f = ff + fe * e + bl; //freq if (f<0.f) i = 0.f; else i= (f>fm)? fm : f; // o = 1.f - i; // tmp = g*a + q*(1.f + (1.f/o)) * (b0-b1); // b0 = o * (b0 - tmp) + tmp; // b1 = o * (b1 - b0) + b0; tmp = q + q * (1.0f + i * (1.0f + 1.1f * i)); //tmp = q + q/(1.0008 - i); b0 += i * (g * a - b0 + tmp * (b0 - b1)); b1 += i * (b0 - b1); // b2 = o * (b2 - b1) + b1; *++out1 = b1; *++out2 = b1; } } else { while (--sampleFrames >= 0) { a = *++in1 + *++in2; i = (a>0)? a : -a; //envelope e = (i>e)? i : e * re; if (e>th) { if (tt==0) {ta=1; if (lm==1)ph=2.f; } tt=1; } else tt=0; if (ta==1) { e2 += at*(1.f-e2); if (e2>0.999f)ta=0; } else e2*=re; if (lm==0) bl = fl * (float)sin(ph); //lfo else if (ph>1.f) { bl = fl*(rand() % 2000 - 1000); ph=0.f; } ph += dph; f = ff + fe * e + bl; //freq if (f<0.f) i = 0.f; else i= (f>fm)? fm : f; // o = 1.f - i; tmp = q + q * (1.0f + i * (1.0f + 1.1f * i)); //tmp = q + q/(1.0008 - i); b0 += i * (g * a - b0 + tmp * (b0 - b1)); b1 += i * (b0 - b1); // tmp = g*a + q*(1.f + (1.f/o)) * (b0-b1); //what about (q + q/f)* // b0 = o * (b0 - tmp) + tmp; // ^ what about div0 ? // b1 = o * (b1 - b0) + b0; // b2 = o * (b2 - b1) + b1; *++out1 = b1; *++out2 = b1; } } if (fabs (b0) < 1.0e-10) { buf0=0.f; buf1=0.f; buf2=0.f; } else { buf0=b0; buf1=b1; buf2=b2; } env=e; env2=e2; bufl=bl; tatt=ta; ttrig=tt; phi= (float)fmod(ph,6.2831853f); } //----------------------------------------------------------------------------- void RezFilterProcessor::recalculate () { fff = 1.5f * params[0] * params[0] - 0.15f; fq = 0.99f * (float)pow ((float)(params[1]),0.3f); //was 0.99f * fg = 0.5f * (float)pow (10.0f, (float)(2.f * params[2] - 1.f)); fmax = 0.99f + 0.3f * params[1]; if (fmax>(1.3f * params[9])) fmax=1.3f*params[9]; //fmax = 1.0f; //fq *= 1.0f + 0.2f * params[9]; fenv = 2.f*(0.5f - params[3])*(0.5f - params[3]); fenv = (params[3]>0.5f)? fenv : -fenv; att = (float)pow (10.0, -0.01 - 4.0 * params[4]); rel = 1.f - (float)pow (10.0, -2.00 - 4.0 * params[5]); lfomode=0; flfo = 2.f * (params[6] - 0.5f)*(params[6] - 0.5f); dphi = (float)(6.2832f * (float)pow (10.0f, (float)(3.f * params[7] - 1.5f)) / getSampleRate ()); if (params[6]<0.5) { lfomode=1; dphi *= 0.15915f; flfo *= 0.001f; } //S&H if (params[8]<0.1f) tthr=0.f; else tthr = 3.f * params[8] * params[8]; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRezFilterProcessor.h000066400000000000000000000046431461511344300262360ustar00rootroot00000000000000/* * mdaRezFilterProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class RezFilterProcessor : public BaseProcessor { public: RezFilterProcessor (); ~RezFilterProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaF'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new RezFilterProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461466D, 0x64612072, 0x657A6669); #else inline static DECLARE_UID (uid, 0x86983C01, 0x8D684E3F, 0xBA2816C2, 0x03A1450D); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float fff, fq, fg, fmax; float env, fenv, att, rel; float flfo, phi, dphi, bufl; float buf0, buf1, buf2, tthr, env2; int32 lfomode, ttrig, tatt; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRingModController.cpp000066400000000000000000000062411461511344300263620ustar00rootroot00000000000000/* * mdaRingModController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaRingModController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- RingModController::RingModController () { } //----------------------------------------------------------------------------- RingModController::~RingModController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API RingModController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (USTRING("Freq"), USTRING("Hz"), 0, 0.15, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("Fine"), USTRING("Hz"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Feedback"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API RingModController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API RingModController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 0: { result.printInt (100. * floor(160. * valueNormalized)); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API RingModController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { switch (tag) { case 0: break; default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRingModController.h000066400000000000000000000043371461511344300260330ustar00rootroot00000000000000/* * mdaRingModController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaRingModProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class RingModController : public BaseController { public: RingModController (); ~RingModController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new RingModController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461526D, 0x64612072, 0x696E676D); #else inline static DECLARE_UID (uid, 0x3D03E713, 0xED334913, 0x8D47116B, 0x1B6045CB); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRingModProcessor.cpp000066400000000000000000000070211461511344300262130ustar00rootroot00000000000000/* * mdaRingModProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaRingModProcessor.h" #include "mdaRingModController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- RingModProcessor::RingModProcessor () { setControllerClass (RingModController::uid); allocParameters (4); } //----------------------------------------------------------------------------- RingModProcessor::~RingModProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API RingModProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = (float)0.0625; //1kHz params[1] = (float)0.0; params[2] = (float)0.0; fPhi = 0.0; twoPi = (float)6.2831853; fprev = 0.f; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API RingModProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API RingModProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void RingModProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, c, d, g; float p, dp, tp = twoPi, fb, fp, fp2; p = fPhi; dp = fdPhi; fb = ffb; fp = fprev; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; g = (float)sin(p); p = (float)fmod( p + dp, tp ); fp = (fb * fp + a) * g; fp2 = (fb * fp + b) * g; c = fp; d = fp2; *++out1 = c; *++out2 = d; } fPhi = p; fprev = fp; } //----------------------------------------------------------------------------- void RingModProcessor::recalculate () { fdPhi = (float) (twoPi * 100.0 * (params[1] + (160.0 * params[0]))/ getSampleRate ()); ffb = 0.95f * params[2]; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRingModProcessor.h000066400000000000000000000045131461511344300256630ustar00rootroot00000000000000/* * mdaRingModProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class RingModProcessor : public BaseProcessor { public: RingModProcessor (); ~RingModProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaR'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new RingModProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461526D, 0x64612072, 0x696E676D); #else inline static DECLARE_UID (uid, 0x935CB08D, 0xFE614CF5, 0xA3927AAA, 0x21B25D95); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float fPhi; float fdPhi; float nul; float twoPi; float ffb, fprev; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRoundPanController.cpp000066400000000000000000000064321461511344300265530ustar00rootroot00000000000000/* * mdaRoundPanController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaRoundPanController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- RoundPanController::RoundPanController () { } //----------------------------------------------------------------------------- RoundPanController::~RoundPanController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API RoundPanController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (new ScaledParameter (USTRING("Pan"), USTRING("deg"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, -180, 180, true)); parameters.addParameter (USTRING("Auto"), USTRING("deg/sec"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API RoundPanController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API RoundPanController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 1: { float dphi = 0; if (valueNormalized>0.55) dphi = (float)(20.0 * (valueNormalized - 0.55) / getSampleRate ()); else { if (valueNormalized<0.45) dphi = (float)(-20.0 * (0.45 - valueNormalized) / getSampleRate ()); else dphi = 0.0; } result.printInt (57.296 * dphi * getSampleRate ()); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API RoundPanController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { switch (tag) { case 1: break; default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRoundPanController.h000066400000000000000000000043451461511344300262210ustar00rootroot00000000000000/* * mdaRoundPanController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaRoundPanProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class RoundPanController : public BaseController { public: RoundPanController (); ~RoundPanController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new RoundPanController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461506D, 0x64612072, 0x6F756E64); #else inline static DECLARE_UID (uid, 0xDF76AF35, 0x14D243C0, 0x8F4C5B05, 0x20CA6093); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRoundPanProcessor.cpp000066400000000000000000000072351461511344300264110ustar00rootroot00000000000000/* * mdaRoundPanProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaRoundPanProcessor.h" #include "mdaRoundPanController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- RoundPanProcessor::RoundPanProcessor () { setControllerClass (RoundPanController::uid); allocParameters (2); } //----------------------------------------------------------------------------- RoundPanProcessor::~RoundPanProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API RoundPanProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = (float)0.5; //pan params[1] = (float)0.8; //auto recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API RoundPanProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API RoundPanProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void RoundPanProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, c, d, x = 0.5, y = (float)0.7854; float ph, dph, fourpi= (float)12.566371; ph = phi; dph = dphi; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = x * (*++in1 + *++in2); //process from here... c = (float)(a * -sin((x * ph) - y)); // output d = (float)(a * sin((x * ph) + y)); ph = ph + dph; *++out1 = c; *++out2 = d; } if (ph<0.0) ph = ph + fourpi; else if (ph>fourpi) ph = ph - fourpi; phi = ph; } //----------------------------------------------------------------------------- void RoundPanProcessor::recalculate () { phi = (float)(6.2831853 * (params[0] - 0.5)); if (params[1]>0.55) { dphi = (float)(20.0 * (params[1] - 0.55) / getSampleRate ()); } else { if (params[1]<0.45) { dphi = (float)(-20.0 * (0.45 - params[1]) / getSampleRate ()); } else { dphi = 0.0; } } } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaRoundPanProcessor.h000066400000000000000000000044321461511344300260520ustar00rootroot00000000000000/* * mdaRoundPanProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class RoundPanProcessor : public BaseProcessor { public: RoundPanProcessor (); ~RoundPanProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaP'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new RoundPanProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461506D, 0x64612072, 0x6F756E64); #else inline static DECLARE_UID (uid, 0x2BEB5541, 0xE9384235, 0x8AAAE0AE, 0xB555BF75); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float phi, dphi; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaShepardController.cpp000066400000000000000000000067261461511344300264210ustar00rootroot00000000000000/* * mdaShepardController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaShepardController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- ShepardController::ShepardController () { } //----------------------------------------------------------------------------- ShepardController::~ShepardController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API ShepardController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; auto* modeParam = new IndexedParameter (USTRING("Mode"), USTRING(""), 2, 0.15, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); modeParam->setIndexString (0, UString128("TONES")); modeParam->setIndexString (1, UString128("RING MOD")); modeParam->setIndexString (2, UString128("TONES+IN")); parameters.addParameter (modeParam); parameters.addParameter (new ScaledParameter (USTRING("Rate"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, -100, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API ShepardController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API ShepardController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } //----------------------------------------------------------------------------- tresult PLUGIN_API ShepardController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaShepardController.h000066400000000000000000000043371461511344300260620ustar00rootroot00000000000000/* * mdaShepardController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaShepardProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class ShepardController : public BaseController { public: ShepardController (); ~ShepardController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new ShepardController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461686D, 0x64612073, 0x68657061); #else inline static DECLARE_UID (uid, 0xDF150F07, 0xCF294A32, 0xB2A04BC5, 0xE49C4A13); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaShepardProcessor.cpp000066400000000000000000000106501461511344300262440ustar00rootroot00000000000000/* * mdaShepardProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaShepardProcessor.h" #include "mdaShepardController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- ShepardProcessor::ShepardProcessor () { setControllerClass (ShepardController::uid); allocParameters (3); } //----------------------------------------------------------------------------- ShepardProcessor::~ShepardProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API ShepardProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); double x, a, twopi=6.2831853; int i; //inits here! params[0] = 0.20f; //mode params[1] = 0.70f; //rate params[2] = 0.50f; //level max = 512; buf1 = new float[max]; buf2 = new float[max]; for(max = 0; max<511; max++) { pos = (float)(twopi * max / 511.f); //generate wavetables x = 0.0; a=1.0; *(buf2 + max) = (float)sin(pos); for(i = 0; i<8; i++) { x+= a * sin(fmod((double)pos,twopi)); a *= 0.5; pos *= 2.0; } *(buf1 + max) = (float)x; } *(buf1 + 511) = 0.f; *(buf2 + 511) = 0.f; //wrap end for interpolation pos=0.f; rate=1.f; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API ShepardProcessor::terminate () { if (buf1) delete [] buf1; if (buf2) delete [] buf2; buf1 = buf2 = nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API ShepardProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void ShepardProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b; float r = rate, dr = drate, o = out, p = pos, di; int32 x = max, m = mode, i1, i2; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1 + *++in2; r *= dr; if (r > 2.f) { r *= 0.5f; p *= 0.5f; } else if (r<1.f) { r *= 2.f; p *= 2.f; if (p > x) p -= x; } p += r; if (p > x) p -= x; i1 = int (p); //interpolate position i2 = i1 + 1; di = (float)i2 - p; b = di * ( *(buf1 + i1) + (r - 2.f) * *(buf2 + i1) ); b += (1.f - di) * ( *(buf1 + i2) + (r - 2.f) * *(buf2 + i2) ); b *= o / r; if (m > 0) if (m == 2) b += 0.5f * a; else b *= a; //ring mod or add *++out1 = b; *++out2 = b; } pos=p; rate=r; } //----------------------------------------------------------------------------- void ShepardProcessor::recalculate () { mode = std::min (2, (int32)(params[0] * 3)); drate = 1.f + 10.f * (float)pow (params[1]-0.5,3.0) / getSampleRate (); out = 0.4842f * (float)pow (10.0f, (float)(2.f * params[2] - 1.f)); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaShepardProcessor.h000066400000000000000000000045261461511344300257160ustar00rootroot00000000000000/* * mdaShepardProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class ShepardProcessor : public BaseProcessor { public: ShepardProcessor (); ~ShepardProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdah'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new ShepardProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461686D, 0x64612073, 0x68657061); #else inline static DECLARE_UID (uid, 0xDA28F022, 0x6D3E4744, 0x88C9C4DA, 0xC690F337); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float level, pos, rate, drate, out, filt; float *buf1, *buf2; int32 max, mode; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSpecMeterController.cpp000066400000000000000000000140471461511344300267150ustar00rootroot00000000000000/* * mdaSpecMeterController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaSpecMeterController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- SpecMeterController::SpecMeterController () { } //----------------------------------------------------------------------------- SpecMeterController::~SpecMeterController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API SpecMeterController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = kBandParamStart; parameters.addParameter (new BaseParameter (USTRING("Left Band 1"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 2"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 3"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 4"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 5"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 6"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 7"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 8"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 9"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 10"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 11"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 12"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left Band 13"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 1"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 2"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 3"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 4"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 5"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 6"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 7"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 8"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 9"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 10"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 11"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 12"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right Band 13"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); pid = kLeftPeakParam; parameters.addParameter (new ScaledParameter (USTRING("Left Peak"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++, 0, 2)); parameters.addParameter (new ScaledParameter (USTRING("Left Hold"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++, 0, 2)); parameters.addParameter (new BaseParameter (USTRING("Left Min"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Left RMS"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new ScaledParameter (USTRING("Right Peak"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++, 0, 2)); parameters.addParameter (new ScaledParameter (USTRING("Right Hold"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++, 0, 2)); parameters.addParameter (new BaseParameter (USTRING("Right Min"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Right RMS"), nullptr, 0, 0, ParameterInfo::kIsReadOnly, pid++)); parameters.addParameter (new BaseParameter (USTRING("Correlation"), 0, 0, 0, ParameterInfo::kIsReadOnly, pid++)); } return res; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSpecMeterController.h000066400000000000000000000043431461511344300263600ustar00rootroot00000000000000/* * mdaSpecMeterController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaSpecMeterProcessor.h" #include "pluginterfaces/gui/iplugview.h" namespace Steinberg { namespace Vst { namespace mda { class SpecMeterEditor; //----------------------------------------------------------------------------- class SpecMeterController : public BaseController { public: SpecMeterController (); ~SpecMeterController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; enum { kBandParamStart = 100, kLeftPeakParam = 500, kLeftHoldParam, kLeftMinParam, kLeftRMSParam, kRightPeakParam, kRightHoldParam, kRightMinParam, kRightRMSParam, kCorrelationParam, }; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new SpecMeterController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x64613F6D, 0x64612073, 0x7065636D); #else inline static DECLARE_UID (uid, 0xA47D4D56, 0x58AE42CD, 0x8EA0714B, 0x39CD3FC0); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSpecMeterProcessor.cpp000066400000000000000000000260741461511344300265540ustar00rootroot00000000000000/* * mdaSpecMeterProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaSpecMeterProcessor.h" #include "mdaSpecMeterController.h" #include namespace Steinberg { namespace Vst { namespace mda { #define SILENCE 0.00000001f //----------------------------------------------------------------------------- SpecMeterProcessor::SpecMeterProcessor () { setControllerClass (SpecMeterController::uid); } //----------------------------------------------------------------------------- SpecMeterProcessor::~SpecMeterProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API SpecMeterProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); K = 0; kmax = 2048; topband = 11; iK = 1.0f / (float)kmax; den = 1.0e-8f; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API SpecMeterProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API SpecMeterProcessor::setActive (TBool state) { if (state) { if (getSampleRate () > 64000) { topband = 12; kmax = 4096; } else { topband = 11; kmax = 2048; } iK = 1.0f / (float)kmax; Lpeak = Rpeak = Lrms = Rrms = Corr = 0.0f; lpeak = rpeak = lrms = rrms = corr = 0.0f; Lhold = Rhold = 0.0f; Lmin = Rmin = 0.0000001f; for(int32 i = 0; i<16; i++) { band[0][i] = band[1][i] = 0.0f; for(int32 j=0; j<6; j++) lpp[j][i] = rpp[j][i] = 0.0f; } } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- bool SpecMeterProcessor::bypassProcessing (ProcessData& data) { if (isBypassed ()) { int32 sampleFrames = data.numSamples; if (Lpeak > fabs (den) || Rpeak > fabs (den)) { Lpeak *= 2.f; Rpeak *= 2.f; Lhold *= 2.f; Rhold *= 2.f; den = -den; float l, r, p, q, iN = iK; int32 k=K, j0=topband, mask, j; while (--sampleFrames >= 0) { l = den; //anti-denormal r = den; lrms += l * l; //RMS integrate rrms += r * r; p = (float)fabs (l); if (p > lpeak) lpeak = p; //peak detect q = (float)fabs (r); if (q > rpeak) rpeak = q; /* if (p > 1.0e-8f && p < lmin) lmin = p; //'trough' detect if (q > 1.0e-8f && q < rmin) rmin = q; */ if ((l * r) > 0.0f) corr += iN; //measure correlation j = j0; mask = k << 1; do //polyphase filter bank { p = lpp[0][j] + 0.208f * l; lpp[0][j] = lpp[1][j]; lpp[1][j] = l - 0.208f * p; q = lpp[2][j] + lpp[4][j] * 0.682f; lpp[2][j] = lpp[3][j]; lpp[3][j] = lpp[4][j] - 0.682f * q; lpp[4][j] = l; lpp[5][j] += (float)fabs (p - q); //top octave l = p + q; //lower octaves p = rpp[0][j] + 0.208f * r; rpp[0][j] = rpp[1][j]; rpp[1][j] = r - 0.208f * p; q = rpp[2][j] + rpp[4][j] * 0.682f; rpp[2][j] = rpp[3][j]; rpp[3][j] = rpp[4][j] - 0.682f * q; rpp[4][j] = r; rpp[5][j] += (float)fabs (p - q); //top octave r = p + q; //lower octaves j--; mask >>= 1; } while (mask & 1); if (++k == kmax) { k = 0; if (lpeak == 0.0f) Lpeak = Lrms = 0.0f; else ///add limits here! { if (lpeak > 2.0f) lpeak = 2.0f; if (lpeak >= Lpeak) { Lpeak = lpeak; Lhold = 2.0f * Lpeak; } else { Lhold *= 0.95f; if (Lhold < Lpeak) Lpeak = Lhold; } Lmin = lmin; lmin *= 1.01f; Lrms += 0.2f * (iN * lrms - Lrms); } if (rpeak == 0.0f) Rpeak = Rrms = 0.0f; else { if (rpeak > 2.0f) rpeak = 2.0f; if (rpeak >= Rpeak) { Rpeak = rpeak; Rhold = 2.0f * Rpeak; } else { Rhold *= 0.95f; if (Rhold < Rpeak) Rpeak = Rhold; } Rmin = rmin; rmin *= 1.01f; Rrms += 0.2f * (iN * rrms - Rrms); } rpeak = lpeak = lrms = rrms = 0.0f; Corr += 0.1f * (corr - Corr); //correlation corr = SILENCE; float dec = 0.08f; for(j=0; j<13; j++) //spectrum output { band[0][j] += dec * (iN * lpp[5][j] - band[0][j]); if (band[0][j] > 2.0f) band[0][j] = 2.0f; //else if (band[0][j] < 0.014f) band[0][j] = 0.014f; band[1][j] += dec * (iN * rpp[5][j] - band[1][j]); if (band[1][j] > 2.0f) band[1][j] = 2.0f; //else if (band[1][j] < 0.014f) band[1][j] = 0.014f; rpp[5][j] = lpp[5][j] = SILENCE; dec = dec * 1.1f; } } } Lpeak /= 2.f; Rpeak /= 2.f; Lhold /= 2.f; Rhold /= 2.f; K = k; } IParameterChanges* changes = data.outputParameterChanges; if (changes) sendParameterChanges (changes, data.numSamples); data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; return true; } return false; } //----------------------------------------------------------------------------- void SpecMeterProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; if (in1 != out1) memcpy (out1, in1, sampleFrames * sizeof (float)); if (in2 != out2) memcpy (out2, in2, sampleFrames * sizeof (float)); if ((data.inputs[0].silenceFlags & 3) && Lpeak <= fabs (den) && Rpeak <= fabs (den)) { data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; return; } data.outputs[0].silenceFlags = 0; Lpeak *= 2.f; Rpeak *= 2.f; Lhold *= 2.f; Rhold *= 2.f; den = -den; float l, r, p, q, iN = iK; int32 k=K, j0=topband, mask, j; while (--sampleFrames >= 0) { l = *in1++; r = *in2++; l += den; //anti-denormal r += den; lrms += l * l; //RMS integrate rrms += r * r; p = (float)fabs (l); if (p > lpeak) lpeak = p; //peak detect q = (float)fabs (r); if (q > rpeak) rpeak = q; /* if (p > 1.0e-8f && p < lmin) lmin = p; //'trough' detect if (q > 1.0e-8f && q < rmin) rmin = q; */ if ((l * r) > 0.0f) corr += iN; //measure correlation j = j0; mask = k << 1; do //polyphase filter bank { p = lpp[0][j] + 0.208f * l; lpp[0][j] = lpp[1][j]; lpp[1][j] = l - 0.208f * p; q = lpp[2][j] + lpp[4][j] * 0.682f; lpp[2][j] = lpp[3][j]; lpp[3][j] = lpp[4][j] - 0.682f * q; lpp[4][j] = l; lpp[5][j] += (float)fabs (p - q); //top octave l = p + q; //lower octaves p = rpp[0][j] + 0.208f * r; rpp[0][j] = rpp[1][j]; rpp[1][j] = r - 0.208f * p; q = rpp[2][j] + rpp[4][j] * 0.682f; rpp[2][j] = rpp[3][j]; rpp[3][j] = rpp[4][j] - 0.682f * q; rpp[4][j] = r; rpp[5][j] += (float)fabs (p - q); //top octave r = p + q; //lower octaves j--; mask >>= 1; } while (mask & 1); if (++k == kmax) { k = 0; if (lpeak == 0.0f) Lpeak = Lrms = 0.0f; else ///add limits here! { if (lpeak > 2.0f) lpeak = 2.0f; if (lpeak >= Lpeak) { Lpeak = lpeak; Lhold = 2.0f * Lpeak; } else { Lhold *= 0.95f; if (Lhold < Lpeak) Lpeak = Lhold; } Lmin = lmin; lmin *= 1.01f; Lrms += 0.2f * (iN * lrms - Lrms); } if (rpeak == 0.0f) Rpeak = Rrms = 0.0f; else { if (rpeak > 2.0f) rpeak = 2.0f; if (rpeak >= Rpeak) { Rpeak = rpeak; Rhold = 2.0f * Rpeak; } else { Rhold *= 0.95f; if (Rhold < Rpeak) Rpeak = Rhold; } Rmin = rmin; rmin *= 1.01f; Rrms += 0.2f * (iN * rrms - Rrms); } rpeak = lpeak = lrms = rrms = 0.0f; Corr += 0.1f * (corr - Corr); //correlation corr = SILENCE; float dec = 0.08f; for(j=0; j<13; j++) //spectrum output { band[0][j] += dec * (iN * lpp[5][j] - band[0][j]); if (band[0][j] > 2.0f) band[0][j] = 2.0f; //else if (band[0][j] < 0.014f) band[0][j] = 0.014f; band[1][j] += dec * (iN * rpp[5][j] - band[1][j]); if (band[1][j] > 2.0f) band[1][j] = 2.0f; //else if (band[1][j] < 0.014f) band[1][j] = 0.014f; rpp[5][j] = lpp[5][j] = SILENCE; dec = dec * 1.1f; } } } Lpeak /= 2.f; Rpeak /= 2.f; Lhold /= 2.f; Rhold /= 2.f; K = k; IParameterChanges* changes = data.outputParameterChanges; if (changes) sendParameterChanges (changes, data.numSamples); } //----------------------------------------------------------------------------- void SpecMeterProcessor::sendParameterChanges (IParameterChanges* changes, int32 numSamples) { IParamValueQueue* queue = nullptr; int32 index; int32 pid = SpecMeterController::kBandParamStart; for (int32 ch = 0; ch < 2; ch++) { for (int32 bnd = 0; bnd < 13; bnd++, pid++) { queue = changes->addParameterData (pid, index); if (queue) queue->addPoint (numSamples, band[ch][bnd], index); } } pid = SpecMeterController::kLeftPeakParam; queue = changes->addParameterData (pid++, index); if (queue) queue->addPoint (numSamples, Lpeak, index); queue = changes->addParameterData (pid++, index); if (queue) queue->addPoint (numSamples, Lhold, index); queue = changes->addParameterData (pid++, index); if (queue) queue->addPoint (numSamples, Lmin, index); queue = changes->addParameterData (pid++, index); if (queue) queue->addPoint (numSamples, Lrms, index); queue = changes->addParameterData (pid++, index); if (queue) queue->addPoint (numSamples, Rpeak, index); queue = changes->addParameterData (pid++, index); if (queue) queue->addPoint (numSamples, Rhold, index); queue = changes->addParameterData (pid++, index); if (queue) queue->addPoint (numSamples, Rmin, index); queue = changes->addParameterData (pid++, index); if (queue) queue->addPoint (numSamples, Rrms, index); queue = changes->addParameterData (pid++, index); if (queue) queue->addPoint (numSamples, Corr, index); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSpecMeterProcessor.h000066400000000000000000000052651461511344300262200ustar00rootroot00000000000000/* * mdaSpecMeterProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class SpecMeterProcessor : public BaseProcessor { public: SpecMeterProcessor (); ~SpecMeterProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mda?'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; bool bypassProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new SpecMeterProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x64613F6D, 0x64612073, 0x7065636D); #else inline static DECLARE_UID (uid, 0x67B9A082, 0xCF0B4BAC, 0x907AA8B7, 0x1D855F94); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE {} void sendParameterChanges (IParameterChanges* changes, int32 numSamples); int32 counter; float Lpeak, Lhold, Lmin, Lrms, Rpeak, Rhold, Rmin, Rrms, Corr; // #11 #12 float band[2][16]; //8 16 31 64 125 250 500 1k 2k 4k 8k 16k 32k float iK, lpeak, lmin, lrms, rpeak, rmin, rrms, corr, den; float lpp[6][16], rpp[6][16]; int32 topband, K, kmax; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSplitterController.cpp000066400000000000000000000105231461511344300266270ustar00rootroot00000000000000/* * mdaSplitterController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaSplitterController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- SplitterController::SplitterController () { } //----------------------------------------------------------------------------- SplitterController::~SplitterController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API SplitterController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; auto* modeParam = new IndexedParameter (USTRING("Mode"), USTRING(""), 3, 0.15, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); modeParam->setIndexString (0, UString128("NORMAL")); modeParam->setIndexString (1, UString128("INVERSE")); modeParam->setIndexString (2, UString128("NORM/INV")); modeParam->setIndexString (3, UString128("INV/NORM")); parameters.addParameter (modeParam); parameters.addParameter (USTRING("Freq"), USTRING("Hz"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); auto* modeParam2 = new IndexedParameter (USTRING("Freq Mode"), USTRING(""), 2, 0.15, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); modeParam2->setIndexString (0, UString128("BELOW")); modeParam2->setIndexString (1, UString128("ALL")); modeParam2->setIndexString (2, UString128("ABOVE")); parameters.addParameter (modeParam2); parameters.addParameter (new ScaledParameter (USTRING("Level"), USTRING("Hz"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, -40, 0)); parameters.addParameter (USTRING("Level"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Envelope"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API SplitterController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API SplitterController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 1: { float fdisp = (float)pow (10.0f, (float)(2.0f + 2.0f * valueNormalized)); result.printFloat (fdisp); break; } case 5: { result.printFloat (pow (10.0f, (float)(1.0f + 2.0f * valueNormalized))); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API SplitterController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSplitterController.h000066400000000000000000000043451461511344300263010ustar00rootroot00000000000000/* * mdaSplitterController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaSplitterProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class SplitterController : public BaseController { public: SplitterController (); ~SplitterController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new SplitterController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461376D, 0x64612073, 0x706C6974); #else inline static DECLARE_UID (uid, 0xD3766521, 0x24EF4691, 0xAB7CD29D, 0xB855BF1F); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSplitterProcessor.cpp000066400000000000000000000122131461511344300264610ustar00rootroot00000000000000/* * mdaSplitterProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaSplitterProcessor.h" #include "mdaSplitterController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- SplitterProcessor::SplitterProcessor () { setControllerClass (SplitterController::uid); allocParameters (7); } //----------------------------------------------------------------------------- SplitterProcessor::~SplitterProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API SplitterProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.10f; //mode params[1] = 0.50f; //freq params[2] = 0.25f; //freq mode params[3] = 0.50f; //level (was 2) params[4] = 0.50f; //level mode params[5] = 0.50f; //envelope params[6] = 0.50f; //gain recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API SplitterProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API SplitterProcessor::setActive (TBool state) { if (state) env = buf0 = buf1 = buf2 = buf3 = 0.0f; return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void SplitterProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b; float a0=buf0, a1=buf1, b0=buf2, b1=buf3, f=freq, fx=ff; float aa, bb, ee, e=env, at=att, re=rel, l=level, lx=ll, px=pp; float il=i2l, ir=i2r, ol=o2l, or_=o2r; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; a0 += f * (a - a0 - a1); //frequency split a1 += f * a0; aa = a1 + fx * a; b0 += f * (b - b0 - b1); b1 += f * b0; bb = b1 + fx * b; ee = aa + bb; if (ee < 0.0f) ee = -ee; if (ee > l) e += at * (px - e); //level split e *= re; a = il * a + ol * aa * (e + lx); b = ir * b + or_ * bb * (e + lx); *++out1 = a; *++out2 = b; } env = e; if (fabs (e) < 1.0e-10) env = 0.0f; buf0 = a0; buf1 = a1; buf2 = b0; buf3 = b1; if (fabs (a0) < 1.0e-10) { buf0 = buf1 = buf2 = buf3 = 0.0f; } //catch denormals } //----------------------------------------------------------------------------- void SplitterProcessor::recalculate () { int32 tmp; freq = params[1]; fdisp = (float)pow (10.0f, 2.0f + 2.0f * freq); //frequency freq = 5.5f * fdisp / getSampleRate (); if (freq>1.0f) freq = 1.0f; ff = -1.0f; //above tmp = std::min (2, 3 * params[2]); //frequency switching if (tmp == 0) ff = 0.0f; //below if (tmp == 1) freq = 0.001f; //all ldisp = 40.0f * params[3] - 40.0f; //level level = (float)pow (10.0f, 0.05f * ldisp + 0.3f); ll = 0.0f; //above tmp = (int32)(2.9f * params[4]); //level switching if (tmp == 0) ll = -1.0f; //below if (tmp == 1) level = 0.0f; //all pp = -1.0f; //phase correction if (ff==ll) pp = 1.0f; if (ff==0.0f && ll==-1.0f) { ll *= -1.0f; } att = 0.05f - 0.05f * params[5]; rel = 1.0f - (float)exp (-6.0f - 4.0f * params[5]); //envelope if (att>0.02f) att=0.02f; if (rel<0.9995f) rel = 0.9995f; i2l = i2r = o2l = o2r = (float)pow (10.0f, (float)(2.0f * params[6] - 1.0f)); //gain mode = std::min (3, 4 * params[0]); //output routing switch (mode) { case 0: i2l = 0.0f; i2r = 0.0f; break; case 1: o2l *= -1.0f; o2r *= -1.0f; break; case 2: i2l = 0.0f; o2r *= -1.0f; break; default: o2l *= -1.0f; i2r = 0.0f; break; } } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSplitterProcessor.h000066400000000000000000000047331461511344300261360ustar00rootroot00000000000000/* * mdaSplitterProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class SplitterProcessor : public BaseProcessor { public: SplitterProcessor (); ~SplitterProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mda7'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new SplitterProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461376D, 0x64612073, 0x706C6974); #else inline static DECLARE_UID (uid, 0xEB4D7879, 0x67114968, 0xB8E865FB, 0xFC508DB9); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float freq, fdisp, buf0, buf1, buf2, buf3; //filter float level, ldisp, env, att, rel; //level switch float ff, ll, pp, i2l, i2r, o2l, o2r; //routing (freq, level, phase, output) int32 mode; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaStereoController.cpp000066400000000000000000000074051461511344300262670ustar00rootroot00000000000000/* * mdaStereoController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaStereoController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- StereoController::StereoController () { } //----------------------------------------------------------------------------- StereoController::~StereoController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API StereoController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (new ScaledParameter (USTRING("Width"), USTRING("Haas/Comb"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, -100, 100, true)); parameters.addParameter (USTRING("Delay"), USTRING("ms"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("Balance"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -100, 100, true)); parameters.addParameter (USTRING("Mod"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Rate"), USTRING("sec"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API StereoController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API StereoController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 1: { float fdel = (float)(20.0 + 2080.0 * pow (valueNormalized, 2)); result.printFloat (1000.0 * fdel / getSampleRate ()); break; } case 3: { if (valueNormalized == 0.f) result.fromAscii("OFF"); else { float mod= (float)(2100.0 * pow (valueNormalized, 2)); result.printFloat (1000.0 * mod / getSampleRate ()); } break; } case 4: { result.printFloat (pow (10.0,2.0 - 3.0 * valueNormalized)); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API StereoController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { switch (tag) { case 1: case 3: case 4: break; default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaStereoController.h000066400000000000000000000043311461511344300257270ustar00rootroot00000000000000/* * mdaStereoController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaStereoProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class StereoController : public BaseController { public: StereoController (); ~StereoController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new StereoController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461536D, 0x64612073, 0x74657265); #else inline static DECLARE_UID (uid, 0x6280A3B7, 0x7B54468B, 0x837A3580, 0x042B7A14); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaStereoProcessor.cpp000066400000000000000000000116731461511344300261250ustar00rootroot00000000000000/* * mdaStereoProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaStereoProcessor.h" #include "mdaStereoController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- StereoProcessor::StereoProcessor () { setControllerClass (StereoController::uid); allocParameters (5); } //----------------------------------------------------------------------------- StereoProcessor::~StereoProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API StereoProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = (float)0.78; //Haas/Comb width params[1] = (float)0.43; //delay params[2] = (float)0.50; //balance params[3] = (float)0.00; //mod params[4] = (float)0.50; //rate size = 4800; bufpos = 0; buffer = new float[size]; memset (buffer, 0, size * sizeof (float)); phi = 0; recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API StereoProcessor::terminate () { if (buffer) delete [] buffer; buffer = nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API StereoProcessor::setActive (TBool state) { return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void StereoProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, c, d; float li, ld, ri, rd, del, ph=phi, dph=dphi, mo=mod; int32 tmp, bp = bufpos; li = fli; ld = fld; ri = fri; rd = frd; del = fdel; --in1; --in2; --out1; --out2; if (mo>0.f) //modulated delay { while (--sampleFrames >= 0) { a = *++in1 + *++in2; //sum to mono *(buffer + bp) = a; //write tmp = (bp + (int)(del + fabs (mo * sin(ph)) ) ) % 4410; b = *(buffer + tmp); c = (a * li) - (b * ld); // output d = (a * ri) - (b * rd); bp = (bp - 1); if (bp < 0) bp = 4410; //buffer position ph = ph + dph; *++out1 = c; *++out2 = d; } } else { while (--sampleFrames >= 0) { a = *++in1 + *++in2; //sum to mono *(buffer + bp) = a; //write tmp = (bp + (int)(del) ) % 4410; b = *(buffer + tmp); c = (a * li) - (b * ld); // output d = (a * ri) - (b * rd); bp = (bp - 1); if (bp < 0) bp = 4410; //buffer position *++out1 = c; *++out2 = d; } } bufpos = bp; phi = (float)fmod(ph,6.2831853f); } //----------------------------------------------------------------------------- void StereoProcessor::recalculate () { dphi= (float)(3.141 * pow (10.0,-2.0 + 3.0 * params[4]) / getSampleRate ()); mod= (float)(2100.0 * pow (params[3], 2)); if (params[0]<0.5) { fli = (float)(0.25 + (1.5 * params[0])); fld = 0.0; fri = (float)(2.0 * params[0]); frd = (float)(1.0 - fri); } else { fli = (float)(1.5 - params[0]); fld = (float)(params[0] - 0.5); fri = fli; frd = -fld; } fdel = (float)(20.0 + 2080.0 * pow (params[1], 2)); if (params[2]>0.5) { fli *= (float)((1.0 - params[2]) * 2.0); fld *= (float)((1.0 - params[2]) * 2.0); } else { fri *= (2 * params[2]); frd *= (2 * params[2]); } fri *= (float)(0.5 + fabs (params[0] - 0.5)); frd *= (float)(0.5 + fabs (params[0] - 0.5)); fli *= (float)(0.5 + fabs (params[0] - 0.5)); fld *= (float)(0.5 + fabs (params[0] - 0.5)); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaStereoProcessor.h000066400000000000000000000045251461511344300255700ustar00rootroot00000000000000/* * mdaStereoProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class StereoProcessor : public BaseProcessor { public: StereoProcessor (); ~StereoProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaS'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new StereoProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461536D, 0x64612073, 0x74657265); #else inline static DECLARE_UID (uid, 0xDB1EB642, 0x4838483D, 0xA7C7E5D2, 0x3686E943); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float fli, fld, fri, frd, fdel, phi, dphi, mod; float *buffer; int32 size, bufpos; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSubSynthController.cpp000066400000000000000000000077601461511344300266110ustar00rootroot00000000000000/* * mdaSubSynthController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaSubSynthController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- SubSynthController::SubSynthController () { } //----------------------------------------------------------------------------- SubSynthController::~SubSynthController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API SubSynthController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; auto* typeParam = new IndexedParameter (USTRING("Type"), USTRING(""), 3, 0.15, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); typeParam->setIndexString (0, UString128("Distort")); typeParam->setIndexString (1, UString128("Divide")); typeParam->setIndexString (2, UString128("Invert")); typeParam->setIndexString (3, UString128("Key Osc.")); parameters.addParameter (typeParam); parameters.addParameter (new ScaledParameter (USTRING("Level"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (USTRING("Tune"), USTRING("Hz"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("Dry Mix"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Thresh"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -60, 0, true)); parameters.addParameter (USTRING("Release"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, pid++); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API SubSynthController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API SubSynthController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 2: { result.printInt (0.0726 * getSampleRate () * pow (10.0,-2.5 + (1.5 * valueNormalized))); break; } case 5: { result.printInt (-301.03 / (getSampleRate () * log10((1.0 - pow (10.0, -2.0 - (3.0 * valueNormalized)))))); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API SubSynthController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { switch (tag) { case 2: case 5: break; default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSubSynthController.h000066400000000000000000000043451461511344300262520ustar00rootroot00000000000000/* * mdaSubSynthController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaSubSynthProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class SubSynthController : public BaseController { public: SubSynthController (); ~SubSynthController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new SubSynthController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461426D, 0x64612073, 0x75626261); #else inline static DECLARE_UID (uid, 0xB33B6220, 0xFC224015, 0xB76118AD, 0x4F34A0D8); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSubSynthProcessor.cpp000066400000000000000000000117101461511344300264330ustar00rootroot00000000000000/* * mdaSubSynthProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaSubSynthProcessor.h" #include "mdaSubSynthController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- SubSynthProcessor::SubSynthProcessor () { setControllerClass (SubSynthController::uid); allocParameters (6); } //----------------------------------------------------------------------------- SubSynthProcessor::~SubSynthProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API SubSynthProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = (float)0.0; //type params[1] = (float)0.3; //level params[2] = (float)0.6; //tune params[3] = (float)1.0; //dry mix params[4] = (float)0.6; //thresh params[5] = (float)0.65; //release } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API SubSynthProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API SubSynthProcessor::setActive (TBool state) { if (state) { phi = env = filt1 = filt2 = filt3 = filt4 = filti = filto = 0.0f; recalculate (); } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void SubSynthProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, c, d; float we, dr, fi, fo, f1, f2, f3, f4, sub, rl, th, dv, ph, phii, dph, os, en; dph = dphi; rl = rls; phii = phi; en = env; os = osc; th = thr; dv = dvd; ph = phs; we = wet; dr = dry; f1 = filt1; f2 = filt2; f3 = filt3; f4 = filt4; fi = filti; fo = filto; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; //process from here... f1 = (fo * f1) + (fi * (a + b)); f2 = (fo * f2) + (fi * f1); sub = f2; if (sub > th) { sub = 1.0; } else { if (sub < -th) { sub = -1.0; } else { sub = 0.0; } } if ((sub * dv) < 0) //octave divider { dv = -dv; if (dv < 0.) ph = -ph; } if (typ == 1) //divide { sub = ph * sub; } if (typ == 2) //invert { sub = (float)(ph * f2 * 2.0); } if (typ == 3) //osc { if (f2 > th) {en = 1.0; } else {en = en * rl;} sub = (float)(en * sin(phii)); phii = (float)fmod( phii + dph, 6.283185f ); } f3 = (fo * f3) + (fi * sub); f4 = (fo * f4) + (fi * f3); c = (a * dr) + (f4 * we); // output d = (b * dr) + (f4 * we); *++out1 = c; *++out2 = d; } if (fabs (f1) < 1.0e-10) filt1=0.f; else filt1=f1; if (fabs (f2) < 1.0e-10) filt2=0.f; else filt2=f2; if (fabs (f3) < 1.0e-10) filt3=0.f; else filt3=f3; if (fabs (f4) < 1.0e-10) filt4=0.f; else filt4=f4; dvd = dv; phs = ph; osc = os; phi = phii; env = en; } //----------------------------------------------------------------------------- void SubSynthProcessor::recalculate () { dvd = 1.0; phs = 1.0; osc = 0.0; //oscillator phase typ = int (3.5 * params[0]); filti = (typ == 3)? 0.018f : (float)pow (10.0,-3.0 + (2.0 * params[2])); filto = 1.0f - filti; wet = params[1]; dry = params[3]; thr = (float)pow (10.0,-3.0 + (3.0 * params[4])); rls = (float)(1.0 - pow (10.0, -2.0 - (3.0 * params[5]))); dphi = (float)(0.456159 * pow (10.0,-2.5 + (1.5 * params[2]))); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaSubSynthProcessor.h000066400000000000000000000045771461511344300261150ustar00rootroot00000000000000/* * mdaSubSynthProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class SubSynthProcessor : public BaseProcessor { public: SubSynthProcessor (); ~SubSynthProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaB'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new SubSynthProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461426D, 0x64612073, 0x75626261); #else inline static DECLARE_UID (uid, 0xA7CC7918, 0xA7D34EA3, 0xB51B6F2F, 0x9C0AF682); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float filt1, filt2, filt3, filt4, filti, filto; float thr, rls, dry, wet, dvd, phs, osc, env, phi, dphi; int32 typ; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTalkBoxController.cpp000066400000000000000000000067001461511344300263670ustar00rootroot00000000000000/* * mdaTalkBoxController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaTalkBoxController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- TalkBoxController::TalkBoxController () { } //----------------------------------------------------------------------------- TalkBoxController::~TalkBoxController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API TalkBoxController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (USTRING("Wet"), USTRING(""), 0, 0.15, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Dry"), USTRING(""), 0, 0.6, ParameterInfo::kCanAutomate, pid++); auto* carrierParam = new IndexedParameter (USTRING("Carrier"), USTRING(""), 1, 0.5, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); carrierParam->setIndexString (0, UString128("RIGHT")); carrierParam->setIndexString (1, UString128("LEFT")); parameters.addParameter (carrierParam); parameters.addParameter (USTRING("Quality"), USTRING(""), 0, 0.5, ParameterInfo::kCanAutomate, pid++); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API TalkBoxController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API TalkBoxController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } //----------------------------------------------------------------------------- tresult PLUGIN_API TalkBoxController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTalkBoxController.h000066400000000000000000000043371461511344300260400ustar00rootroot00000000000000/* * mdaTalkBoxController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaTalkBoxProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class TalkBoxController : public BaseController { public: TalkBoxController (); ~TalkBoxController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new TalkBoxController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461266D, 0x64612074, 0x616C6B62); #else inline static DECLARE_UID (uid, 0x64F420A3, 0xC25242A7, 0xAE8AAE63, 0xD0DC1C2D); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTalkBoxProcessor.cpp000066400000000000000000000172051461511344300262250ustar00rootroot00000000000000/* * mdaTalkBoxProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaTalkBoxProcessor.h" #include "mdaTalkBoxController.h" #include namespace Steinberg { namespace Vst { namespace mda { #define BUF_MAX 1600 #define ORD_MAX 50 #define TWO_PI 6.28318530717958647692528676655901f //----------------------------------------------------------------------------- TalkBoxProcessor::TalkBoxProcessor () { setControllerClass (TalkBoxController::uid); allocParameters (4); } //----------------------------------------------------------------------------- TalkBoxProcessor::~TalkBoxProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API TalkBoxProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioInput (USTRING("Sidechain In"), SpeakerArr::kMono, kAux); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.5f; //wet params[1] = 0.0f; //dry params[2] = 0.0f; //swap params[3] = 1.0f; //quality buf0 = new float[BUF_MAX]; buf1 = new float[BUF_MAX]; window = new float[BUF_MAX]; car0 = new float[BUF_MAX]; car1 = new float[BUF_MAX]; N = 1; //trigger window recalc K = 0; pos = K = 0; emphasis = 0.0f; FX = 0; u0 = u1 = u2 = u3 = u4 = 0.0f; d0 = d1 = d2 = d3 = d4 = 0.0f; memset (buf0, 0, BUF_MAX * sizeof (float)); memset (buf1, 0, BUF_MAX * sizeof (float)); memset (car0, 0, BUF_MAX * sizeof (float)); memset (car1, 0, BUF_MAX * sizeof (float)); memset (window, 0, BUF_MAX * sizeof (float)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API TalkBoxProcessor::terminate () { if (buf0) delete [] buf0; if (buf1) delete [] buf1; if (window) delete [] window; if (car0) delete [] car0; if (car1) delete [] car1; buf0=buf1=window=car0=car1=nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API TalkBoxProcessor::setActive (TBool state) { if (state) recalculate (); else { pos = K = 0; emphasis = 0.0f; FX = 0; u0 = u1 = u2 = u3 = u4 = 0.0f; d0 = d1 = d2 = d3 = d4 = 0.0f; memset (buf0, 0, BUF_MAX * sizeof (float)); memset (buf1, 0, BUF_MAX * sizeof (float)); memset (car0, 0, BUF_MAX * sizeof (float)); memset (car1, 0, BUF_MAX * sizeof (float)); } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void TalkBoxProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; if (swap) { in1 = data.inputs[0].channelBuffers32[1]; in2 = data.inputs[0].channelBuffers32[0]; } if (getAudioInput (1)->isActive () && data.numInputs > 1) { in1 = data.inputs[1].channelBuffers32[0]; } int32 p0=pos, p1 = (pos + N/2) % N; float e=emphasis, w, o, x, dr, fx=FX; float p, q, h0=0.3f, h1=0.77f; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { o = *++in1; x = *++in2; dr = o; p = d0 + h0 * x; d0 = d1; d1 = x - h0 * p; q = d2 + h1 * d4; d2 = d3; d3 = d4 - h1 * q; d4 = x; x = p + q; if (K++) { K = 0; car0[p0] = car1[p1] = x; //carrier input x = o - e; e = o; //6dB/oct pre-emphasis w = window[p0]; fx = buf0[p0] * w; buf0[p0] = x * w; //50% overlapping hanning windows if (++p0 >= N) { lpc(buf0, car0, N, O); p0 = 0; } w = 1.0f - w; fx += buf1[p1] * w; buf1[p1] = x * w; if (++p1 >= N) { lpc(buf1, car1, N, O); p1 = 0; } } p = u0 + h0 * fx; u0 = u1; u1 = fx - h0 * p; q = u2 + h1 * u4; u2 = u3; u3 = u4 - h1 * q; u4 = fx; x = p + q; o = wet * x + dry * dr; *++out1 = o; *++out2 = o; } emphasis = e; pos = p0; FX = fx; float den = 1.0e-10f; //(float)pow (10.0f, -10.0f * params[4]); if (fabs (d0) < den) d0 = 0.0f; //anti-denormal (doesn't seem necessary but P4?) if (fabs (d1) < den) d1 = 0.0f; if (fabs (d2) < den) d2 = 0.0f; if (fabs (d3) < den) d3 = 0.0f; if (fabs (u0) < den) u0 = 0.0f; if (fabs (u1) < den) u1 = 0.0f; if (fabs (u2) < den) u2 = 0.0f; if (fabs (u3) < den) u3 = 0.0f; } //----------------------------------------------------------------------------- void TalkBoxProcessor::recalculate () { float fs = (float)getSampleRate (); if (fs < 8000.0f) fs = 8000.0f; if (fs > 96000.0f) fs = 96000.0f; swap = (params[2] > 0.5f)? 1 : 0; int32 n = (int32)(0.01633f * fs); if (n > BUF_MAX) n = BUF_MAX; //O = (int32)(0.0005f * fs); O = (int32)((0.0001f + 0.0004f * params[3]) * fs); if (n != N) //recalc hanning window { N = n; float dp = TWO_PI / (float)N; float p = 0.0f; for(n=0; n 0.995f) k[i] = 0.995f; else if (k[i] < -0.995f) k[i] = -.995f; } for(i = 0; i0; j--) //lattice filter { x -= k[j] * z[j-1]; z[j] = z[j-1] + k[j] * x; } buf[i] = z[0] = x; //output buf[] will be windowed elsewhere } } void TalkBoxProcessor::lpc_durbin(float *r, int32 p, float *k, float *g) { int32 i, j; float a[ORD_MAX], at[ORD_MAX], e=r[0]; for(i = 0; i <= p; i++) a[i] = at[i] = 0.0f; //probably don't need to clear at[] or k[] for(i = 1; i <= p; i++) { k[i] = -r[i]; for(j = 1; j < i; j++) { at[j] = a[j]; k[i] -= a[j] * r[i-j]; } if (fabs (e) < 1.0e-20f) { e = 0.0f; break; } k[i] /= e; a[i] = k[i]; for(j = 1; j < i; j++) a[j] = at[j] + k[i] * at[i-j]; e *= 1.0f - k[i] * k[i]; } if (e < 1.0e-20f) e = 0.0f; *g = (float)sqrt (e); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTalkBoxProcessor.h000066400000000000000000000050441461511344300256700ustar00rootroot00000000000000/* * mdaTalkBoxProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class TalkBoxProcessor : public BaseProcessor { public: TalkBoxProcessor (); ~TalkBoxProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mda&'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new TalkBoxProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461266D, 0x64612074, 0x616C6B62); #else inline static DECLARE_UID (uid, 0xF235EEE4, 0x92084883, 0xAD5C8632, 0x34DFE073); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; void lpc(float *buf, float *car, int32 n, int32 o); void lpc_durbin(float *r, int32 p, float *k, float *g); float *car0, *car1; float *window; float *buf0, *buf1; float emphasis; int32 K, N, O, pos, swap; float wet, dry, FX; float d0, d1, d2, d3, d4; float u0, u1, u2, u3, u4; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTestToneController.cpp000066400000000000000000000314171461511344300265730ustar00rootroot00000000000000/* * mdaTestToneController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaTestToneController.h" #include #include #include namespace Steinberg { namespace Vst { namespace mda { //------------------------------------------------------------------------ namespace { //------------------------------------------------------------------------ constexpr std::array noteNames = { {"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"}}; //------------------------------------------------------------------------ std::string pitchToString (int32 pitch) { assert (pitch >= 0); auto octave = pitch / 12u; auto note = pitch - (octave * 12u); assert (note < noteNames.size ()); auto noteName = noteNames[note]; return std::to_string (pitch) + " - " + std::string (noteName) + " " + std::to_string (static_cast (octave) - 2); } //----------------------------------------------------------------------------- void fillISOFreqParameter (const IPtr& param) { param->setIndexString (0, UString128("20 Hz")); param->setIndexString (1, UString128 ("25 Hz")); param->setIndexString (2, UString128 ("31 Hz")); param->setIndexString (3, UString128 ("40 Hz")); param->setIndexString (4, UString128 ("50 Hz")); param->setIndexString (5, UString128 ("63 Hz")); param->setIndexString (6, UString128 ("80 Hz")); param->setIndexString (7, UString128 ("100 Hz")); param->setIndexString (8, UString128 ("125 Hz")); param->setIndexString (9, UString128 ("160 Hz")); param->setIndexString (10, UString128 ("200 Hz")); param->setIndexString (11, UString128 ("250 Hz")); param->setIndexString (12, UString128 ("310 Hz")); param->setIndexString (13, UString128 ("400 Hz")); param->setIndexString (14, UString128 ("500 Hz")); param->setIndexString (15, UString128 ("630 Hz")); param->setIndexString (16, UString128 ("800 Hz")); param->setIndexString (17, UString128 ("1 kHz")); param->setIndexString (18, UString128 ("1.25 kHz")); param->setIndexString (19, UString128 ("1.6 kHz")); param->setIndexString (20, UString128 ("2.0 kHz")); param->setIndexString (21, UString128 ("2.5 kHz")); param->setIndexString (22, UString128 ("3.1 kHz")); param->setIndexString (23, UString128 ("4 kHz")); param->setIndexString (24, UString128 ("5 kHz")); param->setIndexString (25, UString128 ("6.3 kHz")); param->setIndexString (26, UString128 ("8 kHz")); param->setIndexString (27, UString128 ("10 kHz")); param->setIndexString (28, UString128 ("12.5 kHz")); param->setIndexString (29, UString128 ("16 kHz")); param->setIndexString (30, UString128 ("20 kHz")); } //------------------------------------------------------------------------ class CentParameter final : public RangeParameter { public: CentParameter (const TChar* title, ParamID tag) : RangeParameter (title, tag) { setPrecision (0); } ParamValue toPlain (ParamValue normValue) const SMTG_OVERRIDE { if (normValue > 0.6) return (1.25 * normValue - 0.75) * 100.; if (normValue < 0.4) return (1.25 * normValue - 0.5) * 100.; return 0; } ParamValue toNormalized (ParamValue plainValue) const SMTG_OVERRIDE { if (plainValue < 0.) return ((plainValue / 100.) + 0.5) / 1.25; if (plainValue > 0.) return ((plainValue / 100.) + 0.75) / 1.25; return plainValue; } }; //------------------------------------------------------------------------ class FineTuneParameter final : public RangeParameter { public: FineTuneParameter (const TChar* title, ParamID tag, Parameter* freqParam) : RangeParameter (title, tag), freqParameter (freqParam) { freqParameter->addDependent (this); setPrecision (1); } ~FineTuneParameter () noexcept { freqParameter->removeDependent (this); } ParamValue toPlain (ParamValue normValue) const SMTG_OVERRIDE { auto df = 0.; if (normValue > 0.6) { df = (1.25 * normValue - 0.75); } else if (normValue < 0.4) { df = (1.25 * normValue - 0.5); } auto f = std::pow (10.f, 0.1f * (freq + df)); return f; } ParamValue toNormalized (ParamValue plainValue) const SMTG_OVERRIDE { return plainValue; } void PLUGIN_API update (FUnknown* /*changedUnknown*/, int32 message) SMTG_OVERRIDE { if (message != kChanged) return; auto newFreq = 13. + freqParameter->toPlain (freqParameter->getNormalized ()); if (newFreq != freq) { freq = newFreq; setNormalized (getNormalized () + std::numeric_limits::epsilon ()); changed (); } } private: IPtr freqParameter; ParamValue freq {0}; }; //------------------------------------------------------------------------ } // anonymous //----------------------------------------------------------------------------- TestToneController::TestToneController () { } //----------------------------------------------------------------------------- TestToneController::~TestToneController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API TestToneController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { auto* modeParam = new IndexedParameter (USTRING("Mode"), USTRING(""), 8, 0.15, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid (TestToneParam::Mode)); modeParam->setIndexString (0, UString128("MIDI #")); modeParam->setIndexString (1, UString128("IMPULSE")); modeParam->setIndexString (2, UString128("WHITE")); modeParam->setIndexString (3, UString128("PINK")); modeParam->setIndexString (4, UString128("----")); modeParam->setIndexString (5, UString128("SINE")); modeParam->setIndexString (6, UString128("LOG SWP.")); modeParam->setIndexString (7, UString128("LOG STEP")); modeParam->setIndexString (8, UString128("LIN SWP.")); parameters.addParameter (modeParam); parameters.addParameter (new ScaledParameter (USTRING("Level"), USTRING("dB"), 0, 0.6, ParameterInfo::kCanAutomate, pid (TestToneParam::Level), -60, 0, true)); auto* channelParam = new IndexedParameter (USTRING("Channel"), USTRING("L <> R"), 2, 0.5, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid (TestToneParam::Channel)); channelParam->setIndexString (0, UString128("LEFT")); channelParam->setIndexString (1, UString128("CENTER")); channelParam->setIndexString (2, UString128("RIGHT")); parameters.addParameter (channelParam); createF1Parameters (); createF2Parameters (); parameters.addParameter (f1ProxyParam); parameters.addParameter (f2ProxyParam); parameters.addParameter (new ScaledParameter (USTRING("Sweep"), USTRING("ms"), 0, 0.5, ParameterInfo::kCanAutomate, pid (TestToneParam::Sweep), 1000, 32000, true)); parameters.addParameter (new ScaledParameter (USTRING("Thru"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid (TestToneParam::Thru), -40, 0, true)); parameters.addParameter (new ScaledParameter (USTRING("0dB ="), USTRING("dBFS"), 0, 0.5, ParameterInfo::kCanAutomate, pid (TestToneParam::ZerodB), -21, 0, true)); parameters.getParameter (pid (TestToneParam::Mode))->addDependent (this); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API TestToneController::terminate () { f2FineTuneParam->removeDependent (this); parameters.getParameter (pid (TestToneParam::Mode))->removeDependent (this); return BaseController::terminate (); } //----------------------------------------------------------------------------- void TestToneController::createF1Parameters () { f1UnusedParam = owned (new RangeParameter (STR ("F1"), pid (TestToneParam::F1))); f1MIDINotesParam = owned (new IndexedParameter ( STR ("F1"), nullptr, 128, 0.5, ParameterInfo::kCanAutomate, pid (TestToneParam::F1))); for (auto pitch = 0; pitch < 129; ++pitch) { auto str = pitchToString (pitch); f1MIDINotesParam->setIndexString (pitch, UString128 (str.data ())); } f1FrequencyParam = owned (new IndexedParameter ( STR ("F1"), nullptr, 30, 0.5, ParameterInfo::kCanAutomate, pid (TestToneParam::F1))); fillISOFreqParameter (f1FrequencyParam); f1LinearFreqParam = owned (new ScaledParameter (STR ("F1"), nullptr, 0, 0.5, ParameterInfo::kCanAutomate, pid (TestToneParam::F1), 0, 20000, true)); f1ProxyParam = new ProxyParameter (f1MIDINotesParam); } //----------------------------------------------------------------------------- void TestToneController::createF2Parameters () { f2UnusedParam = owned (new RangeParameter (STR ("F2"), pid (TestToneParam::F2))); f2FrequencyParam = owned (new IndexedParameter ( STR ("F2"), nullptr, 30, 0.5, ParameterInfo::kCanAutomate, pid (TestToneParam::F2))); fillISOFreqParameter (f2FrequencyParam); f2LinearFreqParam = owned (new ScaledParameter (STR ("F2"), nullptr, 0, 0.5, ParameterInfo::kCanAutomate, pid (TestToneParam::F2), 0, 20000, true)); f2CentParam = owned(new CentParameter (STR ("F2"), pid (TestToneParam::F2))); f2FineTuneParam = owned (new FineTuneParameter (STR ("F2"), pid (TestToneParam::F2), f1FrequencyParam)); f2FineTuneParam->addDependent (this); f2ProxyParam = new ProxyParameter (f2UnusedParam); } //------------------------------------------------------------------------ void PLUGIN_API TestToneController::update (FUnknown* changedUnknown, int32 message) { if (message != kChanged) return; if (auto param = FCast (changedUnknown)) { if (param->getInfo ().id == pid (TestToneParam::Mode)) { bool changed = false; auto f1paramValue = f1ProxyParam->getNormalized (); auto f2paramValue = f2ProxyParam->getNormalized (); switch (static_cast (param->toPlain (param->getNormalized ()))) { case 0: { changed = f1ProxyParam->setProxy (f1MIDINotesParam); changed |= f2ProxyParam->setProxy (f2CentParam); break; } case 5: { changed = f1ProxyParam->setProxy (f1FrequencyParam); changed |= f2ProxyParam->setProxy (f2FineTuneParam); break; } case 6: case 7: { changed = f1ProxyParam->setProxy (f1FrequencyParam); changed |= f2ProxyParam->setProxy (f2FrequencyParam); break; } case 8: { changed = f1ProxyParam->setProxy (f1LinearFreqParam); changed |= f2ProxyParam->setProxy (f2LinearFreqParam); break; } default: { changed = f1ProxyParam->setProxy (f1UnusedParam); changed |= f2ProxyParam->setProxy (f2UnusedParam); break; } } if (changed) { f1ProxyParam->setNormalized (f1paramValue); f2ProxyParam->setNormalized (f2paramValue); if (componentHandler) componentHandler->restartComponent (kParamTitlesChanged | kParamValuesChanged); } } else if (auto param2 = FCast (changedUnknown)) { if (componentHandler) componentHandler->restartComponent (kParamValuesChanged); } } BaseController::update (changedUnknown, message); } //----------------------------------------------------------------------------- tresult PLUGIN_API TestToneController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (param (tag)) { case TestToneParam::Thru: if (valueNormalized == 0) { result.fromAscii ("OFF"); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API TestToneController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTestToneController.h000066400000000000000000000110631461511344300262330ustar00rootroot00000000000000/* * mdaTestToneController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaTestToneProcessor.h" #include namespace Steinberg { namespace Vst { namespace mda { class ProxyParameter; //----------------------------------------------------------------------------- class TestToneController : public BaseController { public: TestToneController (); ~TestToneController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new TestToneController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x6461546D, 0x64612074, 0x65737474); #else inline static DECLARE_UID (uid, 0x2FE2D7CB, 0x074C4CF3, 0xAF3608D9, 0xCB3A8E7C); #endif private: ParamID pid (TestToneParam p) const { return static_cast (p); } TestToneParam param (ParamID p) const { return static_cast (p); } void createF1Parameters (); void createF2Parameters (); void PLUGIN_API update (FUnknown* changedUnknown, int32 message) SMTG_OVERRIDE; IPtr f1ProxyParam; IPtr f1UnusedParam; IPtr f1MIDINotesParam; IPtr f1FrequencyParam; IPtr f1LinearFreqParam; IPtr f2ProxyParam; IPtr f2UnusedParam; IPtr f2FrequencyParam; IPtr f2LinearFreqParam; IPtr f2CentParam; IPtr f2FineTuneParam; }; //------------------------------------------------------------------------ class ProxyParameter final : public Parameter { public: ProxyParameter (Parameter* p) : parameter (p) { assert (p); } bool setProxy (Parameter* p) { assert (p); if (p == parameter) return false; parameter = p; return true; } Parameter* getProxy () const { return parameter; } // overrides const ParameterInfo& getInfo () const SMTG_OVERRIDE { return parameter->getInfo (); } ParameterInfo& getInfo () SMTG_OVERRIDE { return parameter->getInfo (); } void setUnitID (UnitID id) SMTG_OVERRIDE { parameter->setUnitID (id); } UnitID getUnitID () SMTG_OVERRIDE { return parameter->getUnitID (); } bool setNormalized (ParamValue v) SMTG_OVERRIDE { if (parameter->setNormalized (v)) { Parameter::setNormalized (parameter->getNormalized ()); return true; } return false; } void toString (ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE { parameter->toString (_valueNormalized, string); } bool fromString (const TChar* string, ParamValue& _valueNormalized) const SMTG_OVERRIDE { return parameter->fromString (string, _valueNormalized); } ParamValue toPlain (ParamValue _valueNormalized) const SMTG_OVERRIDE { return parameter->toPlain (_valueNormalized); } ParamValue toNormalized (ParamValue plainValue) const SMTG_OVERRIDE { return parameter->toNormalized (plainValue); } int32 getPrecision () const SMTG_OVERRIDE { return parameter->getPrecision (); } void setPrecision (int32 val) SMTG_OVERRIDE { parameter->setPrecision (val); } private: IPtr parameter; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTestToneProcessor.cpp000066400000000000000000000173711461511344300264320ustar00rootroot00000000000000/* * mdaTestToneProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaTestToneProcessor.h" #include "mdaTestToneController.h" #include #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- TestToneProcessor::TestToneProcessor () { setControllerClass (TestToneController::uid); allocParameters (8); } //----------------------------------------------------------------------------- TestToneProcessor::~TestToneProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API TestToneProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); param (TestToneParam::Mode) = 0.47f; //mode param (TestToneParam::Level) = 0.71f; //level dB param (TestToneParam::Channel) = 0.50f; //pan dB param (TestToneParam::F1) = 0.57f; //freq1 B param (TestToneParam::F2) = 0.50f; //freq2 Hz param (TestToneParam::Thru) = 0.00f; //thru dB param (TestToneParam::Sweep) = 0.30f; //sweep ms param (TestToneParam::ZerodB) = 1.00f; //cal dBFS recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API TestToneProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API TestToneProcessor::setActive (TBool state) { if (state) { zz0 = zz1 = zz2 = zz3 = zz4 = zz5 = phi = 0.0f; } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void TestToneProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, x = 0.0f, twopi=6.2831853f; float z0=zz0, z1=zz1, z2=zz2, z3=zz3, z4=zz4, z5=zz5; float ph=phi, dph=dphi, l=left, r = right, t=thru; float s=sw, sx=swx, ds=swd, fsc=fscale; int32 st=swt; int32 m = mode; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; switch (m) { case 1: if (st>0) { st--; x = 0.f; } else //impulse { x=1.f; st= (int32)(len*getSampleRate ()); } break; case 2: //noise #if WIN32 case 3: x = (float)(rand() - 16384); //for RAND_MAX = 32767 #else //mac/gcc case 3: x = (float)((rand() & 0x7FFF) - 16384); #endif if (m==3) { z0 = 0.997f * z0 + 0.029591f * x; //pink filter z1 = 0.985f * z1 + 0.032534f * x; z2 = 0.950f * z2 + 0.048056f * x; z3 = 0.850f * z3 + 0.090579f * x; z4 = 0.620f * z4 + 0.108990f * x; z5 = 0.250f * z5 + 0.255784f * x; x = z0 + z1 + z2 + z3 + z4 + z5; } break; case 4: x = 0.f; break; //mute case 0: //tones case 5: case 9: ph = (float)fmod(ph+dph,twopi); x = (float)sin(ph); break; case 6: //log sweep & step case 7: if (st>0) { st--; ph=0.f; } else { s += ds; if (m==7) dph = fsc * (float)pow (10.0f, 0.1f * (float)int (s)); else dph = fsc * (float)pow (10.0f, 0.1f * s); x = (float)sin(ph); ph = (float)fmod(ph+dph,twopi); if (s>sx) { l=0.f; r=0.f; } } break; case 8: //lin sweep if (st>0) { st--; ph=0.f; } else { s += ds; x = (float)sin(ph); ph = (float)fmod(ph+s,twopi); if (s>sx) { l=0.f; r=0.f; } } break; } *++out1 = t*a + l*x; *++out2 = t*b + r*x; } zz0=z0; zz1=z1; zz2=z2; zz3=z3, zz4=z4; zz5=z5; phi=ph; sw=s; swt=st; if (s>sx) recalculate (); } //----------------------------------------------------------------------------- void TestToneProcessor::recalculate () { float f, df, twopi=6.2831853f; //calcs here! mode = std::min (8, 9 * param (TestToneParam::Mode)); left = 0.05f * (float)int (60.f*param (TestToneParam::Level)); left = (float)pow (10.0f, left - 3.f); if (mode==2) left*=0.0000610f; //scale white for RAND_MAX = 32767 if (mode==3) left*=0.0000243f; //scale pink for RAND_MAX = 32767 int32 channel = std::min (2, 3 * param (TestToneParam::Channel)); switch (channel) { case 0: right = 0.f; break; case 1: right = left; break; case 2: right = left; left = 0.f; break; } len = 1.f + 0.5f*(float)int (62*param (TestToneParam::Sweep)); swt= (int32)(len*getSampleRate ()); if (param (TestToneParam::ZerodB)>0.8) //output level trim { if (param (TestToneParam::ZerodB)>0.96) cal = 0.f; else if (param (TestToneParam::ZerodB)>0.92) cal = -0.01000001f; else if (param (TestToneParam::ZerodB)>0.88) cal = -0.02000001f; else if (param (TestToneParam::ZerodB)>0.84) cal = -0.1f; else cal = -0.2f; calx = (float)pow (10.0f, 0.05f*cal); left*=calx; right*=calx; calx = 0.f; } else //output level calibrate { cal = (float)int (25.f*param (TestToneParam::ZerodB) - 21.1f); calx = cal; } df=0.f; if (param (TestToneParam::F2)>0.6) df = 1.25f*param (TestToneParam::F2) - 0.75f; if (param (TestToneParam::F2)<0.4) df = 1.25f*param (TestToneParam::F2) - 0.50f; switch (mode) { case 0: //MIDI note f = std::min (128, 129 * param (TestToneParam::F1)); dphi = 51.37006f*(float)pow (1.0594631f,f+df)/getSampleRate (); break; case 5: //sine f = 13.f + std::min (30, 31 * param (TestToneParam::F1)); f= (float)pow (10.0f, 0.1f*(f+df)); dphi=twopi*f/getSampleRate (); break; case 6: //log sweep & step case 7: sw = 13.f + std::min (30, 31 * param (TestToneParam::F1)); swx = 13.f + std::min (30, 31 * param (TestToneParam::F2)); if (sw>swx) { swd=swx; swx=sw; sw=swd; } //only sweep up if (mode==7) swx += 1.f; swd = (swx-sw) / (len*getSampleRate ()); swt= 2 * (int32)getSampleRate (); break; case 8: //lin sweep sw = 200.f * (float)floor(100.f*param (TestToneParam::F1)); swx = 200.f * (float)floor(100.f*param (TestToneParam::F2)); if (sw>swx) { swd=swx; swx=sw; sw=swd; } //only sweep up sw = twopi*sw/getSampleRate (); swx = twopi*swx/getSampleRate (); swd = (swx-sw) / (len*getSampleRate ()); swt= 2 * (int32)getSampleRate (); break; default: sw = swx = 0.f; break; } thru = (float)pow (10.0f, (0.05f * (float)int (40.f*param (TestToneParam::Thru))) - 2.f); if (param (TestToneParam::Thru)==0.0f) thru=0.0f; fscale = twopi/getSampleRate (); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTestToneProcessor.h000066400000000000000000000052231461511344300260700ustar00rootroot00000000000000/* * mdaTestToneProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //------------------------------------------------------------------------ enum class TestToneParam { Mode = 0, Level, Channel, F1, F2, Sweep, Thru, ZerodB, }; //----------------------------------------------------------------------------- class TestToneProcessor : public BaseProcessor { public: TestToneProcessor (); ~TestToneProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaT'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new TestToneProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x6461546D, 0x64612074, 0x65737474); #else inline static DECLARE_UID (uid, 0x0AF801E5, 0x0B0D4D9B, 0xBB657671, 0xAC8F7847); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; ParamValue& param (TestToneParam p) { return params[static_cast (p)]; } float thru, left, right, len; float zz0, zz1, zz2, zz3, zz4, zz5, phi, dphi; float sw, swd, swx, fscale, cal, calx; int32 swt; int32 mode; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaThruZeroController.cpp000066400000000000000000000073231461511344300266070ustar00rootroot00000000000000/* * mdaThruZeroController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaThruZeroController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- ThruZeroController::ThruZeroController () { } //----------------------------------------------------------------------------- ThruZeroController::~ThruZeroController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API ThruZeroController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; parameters.addParameter (USTRING("Rate"), USTRING("sec"), 0, 0.15, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (USTRING("Depth"), USTRING("ms"), 0, 0.6, ParameterInfo::kCanAutomate, pid++); parameters.addParameter (new ScaledParameter (USTRING("Mix"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("DepthMod"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, -100, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Feedback"), USTRING("%"), 0, 0.15, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API ThruZeroController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API ThruZeroController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { UString128 result; switch (tag) { case 0: { if (valueNormalized < 0.01) result.fromAscii("-"); else result.printFloat (pow (10.0f, (float)(2.0f - 3.0f * valueNormalized))); break; } case 1: { float dep = 2000.0f * valueNormalized * valueNormalized; result.printFloat (1000.f * dep / getSampleRate ()); break; } default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API ThruZeroController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaThruZeroController.h000066400000000000000000000043451461511344300262550ustar00rootroot00000000000000/* * mdaThruZeroController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaThruZeroProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class ThruZeroController : public BaseController { public: ThruZeroController (); ~ThruZeroController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new ThruZeroController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x64615A6D, 0x64612074, 0x6872757A); #else inline static DECLARE_UID (uid, 0x4A552BC9, 0x3F484476, 0x87608F28, 0xE34736DE); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaThruZeroProcessor.cpp000066400000000000000000000115631461511344300264440ustar00rootroot00000000000000/* * mdaThruZeroProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaThruZeroProcessor.h" #include "mdaThruZeroController.h" #include namespace Steinberg { namespace Vst { namespace mda { #define BUFMAX 2048 //----------------------------------------------------------------------------- ThruZeroProcessor::ThruZeroProcessor () { setControllerClass (ThruZeroController::uid); allocParameters (5); } //----------------------------------------------------------------------------- ThruZeroProcessor::~ThruZeroProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API ThruZeroProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = 0.30f; //rate params[1] = 0.43f; //depth params[2] = 0.47f; //mix params[3] = 0.30f; //feedback params[4] = 1.00f; //minimum delay to stop LF buildup with feedback bufpos = 0; buffer = new float[BUFMAX]; buffer2 = new float[BUFMAX]; phi = fb = fb1 = fb2 = deps = 0.0f; if (buffer) memset (buffer , 0, BUFMAX * sizeof (float)); if (buffer2) memset (buffer2, 0, BUFMAX * sizeof (float)); recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API ThruZeroProcessor::terminate () { if (buffer) delete [] buffer; if (buffer2) delete [] buffer2; buffer = buffer2 = nullptr; return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API ThruZeroProcessor::setActive (TBool state) { if (state) { if (buffer) memset (buffer , 0, BUFMAX * sizeof (float)); if (buffer2) memset (buffer2, 0, BUFMAX * sizeof (float)); } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void ThruZeroProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, f=fb, f1=fb1, f2=fb2, ph=phi; float ra=rat, de=dep, we=wet, dr = dry, ds=deps, dm=dem; int32 tmp, tmpi, bp=bufpos; float tmpf, dpt; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; ph += ra; if (ph > 1.0f) ph -= 2.0f; bp--; bp &= 0x7FF; *(buffer + bp) = a + f * f1; *(buffer2 + bp) = b + f * f2; //ds = 0.995f * (ds - de) + de; //smoothed depth change ...try inc not mult dpt = tmpf = dm + de * (1.0f - ph * ph); //delay mod shape tmp = int (tmpf); tmpf -= tmp; tmp = (tmp + bp) & 0x7FF; tmpi = (tmp + 1) & 0x7FF; f1 = *(buffer + tmp); //try adding a constant to reduce denormalling f2 = *(buffer2 + tmp); f1 = tmpf * (*(buffer + tmpi) - f1) + f1; //linear interpolation f2 = tmpf * (*(buffer2 + tmpi) - f2) + f2; a = a * dr - f1 * we; b = b * dr - f2 * we; *++out1 = a; *++out2 = b; } if (fabs (f1) > 1.0e-10) { fb1 = f1; fb2 = f2; } else fb1 = fb2 = 0.0f; //catch denormals phi = ph; deps = ds; bufpos = bp; } //----------------------------------------------------------------------------- void ThruZeroProcessor::recalculate () { rat = (float)(pow (10.0f, (float)(3.f * params[0] - 2.f)) * 2.f / getSampleRate ()); dep = 2000.0f * params[1] * params[1]; dem = dep - dep * params[4]; dep -= dem; wet = params[2]; dry = 1.f - wet; if (params[0] < 0.01f) { rat = 0.0f; phi = (float)0.0f; } fb = 1.9f * params[3] - 0.95f; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaThruZeroProcessor.h000066400000000000000000000050031461511344300261010ustar00rootroot00000000000000/* * mdaThruZeroProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class ThruZeroProcessor : public BaseProcessor { public: ThruZeroProcessor (); ~ThruZeroProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaZ'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new ThruZeroProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x64615A6D, 0x64612074, 0x6872757A); #else inline static DECLARE_UID (uid, 0xE7B8149A, 0x63A54BF8, 0x82B6A95D, 0x94A3F6EE); #endif //----------------------------------------------------------------------------- protected: void recalculate () SMTG_OVERRIDE; float rat, dep, wet, dry, fb, dem; //rate, depth, wet & dry mix, feedback, mindepth float phi, fb1, fb2, deps; //lfo & feedback buffers, depth change smoothing float *buffer, *buffer2; //maybe use 2D buffer? int32 size, bufpos; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTrackerController.cpp000066400000000000000000000103771461511344300264230ustar00rootroot00000000000000/* * mdaTrackerController.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaTrackerController.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- TrackerController::TrackerController () { } //----------------------------------------------------------------------------- TrackerController::~TrackerController () { } //----------------------------------------------------------------------------- tresult PLUGIN_API TrackerController::initialize (FUnknown* context) { tresult res = BaseController::initialize (context); if (res == kResultTrue) { ParamID pid = 0; auto* modeParam = new IndexedParameter (USTRING("Mode"), USTRING(""), 4, 0.15, ParameterInfo::kCanAutomate | ParameterInfo::kIsList, pid++); modeParam->setIndexString (0, UString128("SINE")); modeParam->setIndexString (1, UString128("SQUARE")); modeParam->setIndexString (2, UString128("SAW")); modeParam->setIndexString (3, UString128("RING")); modeParam->setIndexString (4, UString128("EQ")); parameters.addParameter (modeParam); parameters.addParameter (new ScaledParameter (USTRING("Dynamics"), USTRING("%"), 0, 0.6, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Mix"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Glide"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Trnspose"), USTRING("semi"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -36, 36, true)); parameters.addParameter (new ScaledParameter (USTRING("Maximum"), USTRING("%"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, 0, 100, true)); parameters.addParameter (new ScaledParameter (USTRING("Trigger"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -60, 0, true)); parameters.addParameter (new ScaledParameter (USTRING("Output"), USTRING("dB"), 0, 0.5, ParameterInfo::kCanAutomate, pid++, -20, 20, true)); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API TrackerController::terminate () { return BaseController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API TrackerController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { return BaseController::getParamStringByValue (tag, valueNormalized, string); /* UString128 result; switch (tag) { default: return BaseController::getParamStringByValue (tag, valueNormalized, string); } result.copyTo (string, 128); return kResultTrue;*/ } //----------------------------------------------------------------------------- tresult PLUGIN_API TrackerController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { return BaseController::getParamValueByString (tag, string, valueNormalized); /* switch (tag) { default: return BaseController::getParamValueByString (tag, string, valueNormalized); } return kResultFalse;*/ } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTrackerController.h000066400000000000000000000043371461511344300260670ustar00rootroot00000000000000/* * mdaTrackerController.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseController.h" #include "mdaTrackerProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class TrackerController : public BaseController { public: TrackerController (); ~TrackerController (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new TrackerController; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653456D, 0x64614A6D, 0x64612074, 0x7261636B); #else inline static DECLARE_UID (uid, 0xBBF731F0, 0x94A848F0, 0xAEE9C5F6, 0x5DA3D3BA); #endif }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTrackerProcessor.cpp000066400000000000000000000137761461511344300262650ustar00rootroot00000000000000/* * mdaTrackerProcessor.cpp * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaTrackerProcessor.h" #include "mdaTrackerController.h" #include namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- TrackerProcessor::TrackerProcessor () { setControllerClass (TrackerController::uid); allocParameters (8); } //----------------------------------------------------------------------------- TrackerProcessor::~TrackerProcessor () { } //----------------------------------------------------------------------------- tresult PLUGIN_API TrackerProcessor::initialize (FUnknown* context) { tresult res = BaseProcessor::initialize (context); if (res == kResultTrue) { addAudioInput (USTRING("Stereo In"), SpeakerArr::kStereo); addAudioOutput (USTRING("Stereo Out"), SpeakerArr::kStereo); params[0] = (float)0.00; //Mode params[1] = (float)1.00; //Dynamics params[2] = (float)1.00; //Mix params[3] = (float)0.97; //Tracking params[4] = (float)0.50; //Trnspose params[5] = (float)0.80; //Maximum Hz params[6] = (float)0.50; //Trigger dB params[7] = (float)0.50; //Output res1 = (float)cos(0.01); //p res2 = (float)sin(0.01); //q recalculate (); } return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API TrackerProcessor::terminate () { return BaseProcessor::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API TrackerProcessor::setActive (TBool state) { if (state) { dphi = 100.f/getSampleRate (); //initial pitch min = (int32)(getSampleRate ()/30.0); //lower limit } return BaseProcessor::setActive (state); } //----------------------------------------------------------------------------- void TrackerProcessor::doProcessing (ProcessData& data) { int32 sampleFrames = data.numSamples; float* in1 = data.inputs[0].channelBuffers32[0]; float* in2 = data.inputs[0].channelBuffers32[1]; float* out1 = data.outputs[0].channelBuffers32[0]; float* out2 = data.outputs[0].channelBuffers32[1]; float a, b, x, t=thr, p = phi, dp=dphi, ddp=ddphi, tmp, tmp2; float o=fo, i=fi, b1=buf1, b2=buf2, twopi=6.2831853f; float we=wet, dr = dry, bo=bold, r1=res1, r2=res2, b3=buf3, b4=buf4; float sw=saw, dsw=dsaw, dy =dyn, e=env, re=rel; int32 m = max, n=num, s=sig, mn=min, mo=mode; --in1; --in2; --out1; --out2; while (--sampleFrames >= 0) { a = *++in1; b = *++in2; x = a;// + b; tmp = (x>0.f)? x : -x; //dynamics envelope e = (tmp>e)? 0.5f*(tmp + e) : e * re; b1 = o*b1 + i*x; b2 = o*b2 + b1; //low-pass filter if (b2>t) //if >thresh { if (s<1) //and was m) s=0; //now 0.f)? 0.5f : -0.5f; break; //saw case 2: sw = (float)fmod(sw+dsw,2.0f); x = sw - 1.f; break; //ring case 3: x *= (float)sin(p); break; //filt case 4: x += (b3 * r1) - (b4 * r2); b4 = 0.996f * ((b3 * r2) + (b4 * r1)); b3 = 0.996f * x; break; } x *= (we + dy * e); *++out1 = a;//dr*a + x; *++out2 = dr*b + x; } if (fabs (b1) < 1.0e-10) {buf1=0.f; buf2=0.f; buf3=0.f; buf4=0.f; } else {buf1=b1; buf2=b2; buf3=b3; buf4=b4;} phi=p; dphi=dp; sig=s; bold=bo; num= (n>100000)? 100000: n; env=e; saw=sw; dsaw=dsw; res1=r1; res2=r2; } //----------------------------------------------------------------------------- float TrackerProcessor::filterFreq(float hz) { float j, k, r=0.999f; j = r * r - 1; k = (float)(2.f - 2.f * r * r * cos(0.647f * hz / getSampleRate () )); return (float)((sqrt (k*k - 4.f*j*j) - k) / (2.f*j)); } //----------------------------------------------------------------------------- void TrackerProcessor::recalculate () { mode = std::min (4, (int32)(params[0]*5)); fo = filterFreq(50.f); fi = (1.f - fo)*(1.f - fo); ddphi = params[3] * params[3]; thr = (float)pow (10.0, 3.0*params[6] - 3.8); max = (int32)(getSampleRate () / pow (10.0f, (float)(1.6f + 2.2f * params[5]))); trans = (float)pow (1.0594631,int (72.f*params[4] - 36.f)); wet = (float)pow (10.0, 2.0*params[7] - 1.0); if (mode<4) { dyn = wet * 0.6f * params[2] * params[1]; dry = wet * (float)sqrt (1.f - params[2]); wet = wet * 0.3f * params[2] * (1.f - params[1]); } else { dry = wet * (1.f - params[2]); wet *= (0.02f*params[2] - 0.004f); dyn = 0.f; } rel = (float)pow (10.0,-10.0/getSampleRate ()); } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdaTrackerProcessor.h000066400000000000000000000047261461511344300257250ustar00rootroot00000000000000/* * mdaTrackerProcessor.h * mda-vst3 * * Created by Arne Scheffler on 6/14/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #pragma once #include "mdaBaseProcessor.h" namespace Steinberg { namespace Vst { namespace mda { //----------------------------------------------------------------------------- class TrackerProcessor : public BaseProcessor { public: TrackerProcessor (); ~TrackerProcessor (); int32 getVst2UniqueId () const SMTG_OVERRIDE { return 'mdaJ'; } tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; void doProcessing (ProcessData& data) SMTG_OVERRIDE; //----------------------------------------------------------------------------- static FUnknown* createInstance (void*) { return (IAudioProcessor*)new TrackerProcessor; } #ifdef SMTG_MDA_VST2_COMPATIBILITY inline static DECLARE_UID (uid, 0x5653546D, 0x64614A6D, 0x64612074, 0x7261636B); #else inline static DECLARE_UID (uid, 0x61EA12BB, 0xC25447EA, 0xABD8D344, 0xB21B8B40); #endif //----------------------------------------------------------------------------- protected: float filterFreq(float hz); void recalculate () SMTG_OVERRIDE; float fi, fo, thr, phi, dphi, ddphi, trans; float buf1, buf2, dn, bold, wet, dry; float dyn, env, rel, saw, dsaw; float res1, res2, buf3, buf4; int32 max, min, num, sig, mode; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/mdafactory.cpp000066400000000000000000000626471461511344300244420ustar00rootroot00000000000000/* * mdafactory.cpp * mda-vst3 * * Created by Arne Scheffler on 6/13/08. * * mda VST Plug-ins * * Copyright (c) 2008 Paul Kellett * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include "mdaAmbienceController.h" #include "mdaBandistoController.h" #include "mdaBeatBoxController.h" #include "mdaComboController.h" #include "mdaDeEsserController.h" #include "mdaDegradeController.h" #include "mdaDelayController.h" #include "mdaDetuneController.h" #include "mdaDitherController.h" #include "mdaDubDelayController.h" #include "mdaDX10Controller.h" #include "mdaDynamicsController.h" #include "mdaEPianoController.h" #include "mdaImageController.h" #include "mdaJX10Controller.h" #include "mdaLeslieController.h" #include "mdaLimiterController.h" #include "mdaLoudnessController.h" #include "mdaMultiBandController.h" #include "mdaOverdriveController.h" #include "mdaPianoController.h" #include "mdaRePsychoController.h" #include "mdaRezFilterController.h" #include "mdaRingModController.h" #include "mdaRoundPanController.h" #include "mdaShepardController.h" #include "mdaSplitterController.h" #include "mdaStereoController.h" #include "mdaSubSynthController.h" #include "mdaTalkBoxController.h" #include "mdaTestToneController.h" #include "mdaThruZeroController.h" #include "mdaTrackerController.h" #include "mdaSpecMeterController.h" #include "helpers.h" #include "version.h" #include "public.sdk/source/main/pluginfactory_constexpr.h" //----------------------------------------------------------------------------- #define kVersionString FULL_VERSION_STR using namespace Steinberg; using namespace Steinberg::Vst; BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail, 68) //----------------------------------------------------------------------------- // -- Ambience DEF_CLASS (mda::AmbienceProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Ambience", Vst::kDistributable, Vst::PlugType::kFxReverb, kVersionString, kVstVersionString, mda::AmbienceProcessor::createInstance, nullptr) DEF_CLASS (mda::AmbienceController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Ambience", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::AmbienceController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Bandisto DEF_CLASS (mda::BandistoProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Bandisto", Vst::kDistributable, Vst::PlugType::kFxDistortion, kVersionString, kVstVersionString, mda::BandistoProcessor::createInstance, nullptr) DEF_CLASS (mda::BandistoController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Bandisto", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::BandistoController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- BeatBox DEF_CLASS (mda::BeatBoxProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda BeatBox", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::BeatBoxProcessor::createInstance, nullptr) DEF_CLASS (mda::BeatBoxController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda BeatBox", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::BeatBoxController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Combo DEF_CLASS (mda::ComboProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Combo", Vst::kDistributable, Vst::PlugType::kFxDistortion, kVersionString, kVstVersionString, mda::ComboProcessor::createInstance, nullptr) DEF_CLASS (mda::ComboController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Combo", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::ComboController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- DeEsser DEF_CLASS (mda::DeEsserProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda DeEsser", Vst::kDistributable, Vst::PlugType::kFxMastering, kVersionString, kVstVersionString, mda::DeEsserProcessor::createInstance, nullptr) DEF_CLASS (mda::DeEsserController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda DeEsser", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::DeEsserController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Degrade DEF_CLASS (mda::DegradeProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Degrade", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::DegradeProcessor::createInstance, nullptr) DEF_CLASS (mda::DegradeController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Degrade", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::DegradeController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Delay DEF_CLASS (mda::DelayProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Delay", Vst::kDistributable, Vst::PlugType::kFxDelay, kVersionString, kVstVersionString, mda::DelayProcessor::createInstance, nullptr) DEF_CLASS (mda::DelayController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Delay", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::DelayController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Detune DEF_CLASS (mda::DetuneProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Detune", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::DetuneProcessor::createInstance, nullptr) DEF_CLASS (mda::DetuneController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Detune", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::DetuneController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Dither DEF_CLASS (mda::DitherProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Dither", Vst::kDistributable, Vst::PlugType::kFxMastering, kVersionString, kVstVersionString, mda::DitherProcessor::createInstance, nullptr) DEF_CLASS (mda::DitherController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Dither", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::DitherController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- DubDelay DEF_CLASS (mda::DubDelayProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda DubDelay", Vst::kDistributable, Vst::PlugType::kFxDelay, kVersionString, kVstVersionString, mda::DubDelayProcessor::createInstance, nullptr) DEF_CLASS (mda::DubDelayController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda DubDelay", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::DubDelayController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- DX10 DEF_CLASS (mda::DX10Processor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda DX10", Vst::kDistributable, Vst::PlugType::kInstrumentSynth, kVersionString, kVstVersionString, mda::DX10Processor::createInstance, nullptr) DEF_CLASS (mda::DX10Controller::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda DX10", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::DX10Controller::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Dynamics DEF_CLASS (mda::DynamicsProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Dynamics", Vst::kDistributable, Vst::PlugType::kFxDynamics, kVersionString, kVstVersionString, mda::DynamicsProcessor::createInstance, nullptr) DEF_CLASS (mda::DynamicsController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Dynamics", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::DynamicsController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- EPiano DEF_CLASS (mda::EPianoProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda EPiano", Vst::kDistributable, Vst::PlugType::kInstrumentSynth, kVersionString, kVstVersionString, mda::EPianoProcessor::createInstance, nullptr) DEF_CLASS (mda::EPianoController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda EPiano", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::EPianoController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Image DEF_CLASS (mda::ImageProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Image", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::ImageProcessor::createInstance, nullptr) DEF_CLASS (mda::ImageController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Image", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::ImageController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- JX10 DEF_CLASS (mda::JX10Processor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda JX10", Vst::kDistributable, Vst::PlugType::kInstrumentSynth, kVersionString, kVstVersionString, mda::JX10Processor::createInstance, nullptr) DEF_CLASS (mda::JX10Controller::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda JX10", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::JX10Controller::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Leslie DEF_CLASS (mda::LeslieProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Leslie", Vst::kDistributable, Vst::PlugType::kFxModulation, kVersionString, kVstVersionString, mda::LeslieProcessor::createInstance, nullptr) DEF_CLASS (mda::LeslieController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Leslie", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::LeslieController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Limiter DEF_CLASS (mda::LimiterProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Limiter", Vst::kDistributable, Vst::PlugType::kFxDynamics, kVersionString, kVstVersionString, mda::LimiterProcessor::createInstance, nullptr) DEF_CLASS (mda::LimiterController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Limiter", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::LimiterController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Loudness DEF_CLASS (mda::LoudnessProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Loudness", Vst::kDistributable, Vst::PlugType::kFxDynamics, kVersionString, kVstVersionString, mda::LoudnessProcessor::createInstance, nullptr) DEF_CLASS (mda::LoudnessController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Loudness", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::LoudnessController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- MultiBand DEF_CLASS (mda::MultiBandProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda MultiBand", Vst::kDistributable, Vst::PlugType::kFxDynamics, kVersionString, kVstVersionString, mda::MultiBandProcessor::createInstance, nullptr) DEF_CLASS (mda::MultiBandController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda MultiBand", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::MultiBandController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Overdrive DEF_CLASS (mda::OverdriveProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Overdrive", Vst::kDistributable, Vst::PlugType::kFxDistortion, kVersionString, kVstVersionString, mda::OverdriveProcessor::createInstance, nullptr) DEF_CLASS (mda::OverdriveController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Overdrive", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::OverdriveController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Piano DEF_CLASS (mda::PianoProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Piano", Vst::kDistributable, Vst::PlugType::kInstrumentSynth, kVersionString, kVstVersionString, mda::PianoProcessor::createInstance, nullptr) DEF_CLASS (mda::PianoController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Piano", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::PianoController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- RePsycho DEF_CLASS (mda::RePsychoProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda RePsycho!", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::RePsychoProcessor::createInstance, nullptr) DEF_CLASS (mda::RePsychoController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda RePsycho!", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::RePsychoController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- RezFilter DEF_CLASS (mda::RezFilterProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda RezFilter", Vst::kDistributable, Vst::PlugType::kFxFilter, kVersionString, kVstVersionString, mda::RezFilterProcessor::createInstance, nullptr) DEF_CLASS (mda::RezFilterController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda RezFilter", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::RezFilterController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- RingMod DEF_CLASS (mda::RingModProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda RingMod", Vst::kDistributable, Vst::PlugType::kFxModulation, kVersionString, kVstVersionString, mda::RingModProcessor::createInstance, nullptr) DEF_CLASS (mda::RingModController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda RingMod", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::RingModController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Round Panner DEF_CLASS (mda::RoundPanProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Round Panner", Vst::kDistributable, Vst::PlugType::kFxModulation, kVersionString, kVstVersionString, mda::RoundPanProcessor::createInstance, nullptr) DEF_CLASS (mda::RoundPanController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Round Panner", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::RoundPanController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Shepard DEF_CLASS (mda::ShepardProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Shepard", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::ShepardProcessor::createInstance, nullptr) DEF_CLASS (mda::ShepardController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Shepard", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::ShepardController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Splitter DEF_CLASS (mda::SplitterProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Splitter", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::SplitterProcessor::createInstance, nullptr) DEF_CLASS (mda::SplitterController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Splitter", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::SplitterController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Stereo Simulator DEF_CLASS (mda::StereoProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Stereo Simulator", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::StereoProcessor::createInstance, nullptr) DEF_CLASS (mda::StereoController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Stereo Simulator", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::StereoController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Sub-Bass Synthesizer DEF_CLASS (mda::SubSynthProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Sub-Bass Synthesizer", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::SubSynthProcessor::createInstance, nullptr) DEF_CLASS (mda::SubSynthController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Sub-Bass Synthesizer", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::SubSynthController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- TalkBox DEF_CLASS (mda::TalkBoxProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda TalkBox", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::TalkBoxProcessor::createInstance, nullptr) DEF_CLASS (mda::TalkBoxController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda TalkBox", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::TalkBoxController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- TestTone DEF_CLASS (mda::TestToneProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda TestTone", Vst::kDistributable, Vst::PlugType::kFxGenerator, kVersionString, kVstVersionString, mda::TestToneProcessor::createInstance, nullptr) DEF_CLASS (mda::TestToneController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda TestTone", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::TestToneController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Thru-Zero Flanger DEF_CLASS (mda::ThruZeroProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Thru-Zero Flanger", Vst::kDistributable, Vst::PlugType::kFxModulation, kVersionString, kVstVersionString, mda::ThruZeroProcessor::createInstance, nullptr) DEF_CLASS (mda::ThruZeroController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Thru-Zero Flanger", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::ThruZeroController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- Tracker DEF_CLASS (mda::TrackerProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda Tracker", Vst::kDistributable, Vst::PlugType::kFx, kVersionString, kVstVersionString, mda::TrackerProcessor::createInstance, nullptr) DEF_CLASS (mda::TrackerController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda Tracker", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::TrackerController::createInstance, nullptr) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // -- SpecMeter DEF_CLASS (mda::SpecMeterProcessor::uid, PClassInfo::kManyInstances, kVstAudioEffectClass, "mda SpecMeter", Vst::kDistributable, Vst::PlugType::kFxAnalyzer, kVersionString, kVstVersionString, mda::SpecMeterProcessor::createInstance, nullptr) DEF_CLASS (mda::SpecMeterController::uid, PClassInfo::kManyInstances, kVstComponentControllerClass, "mda SpecMeter", Vst::kDistributable, "", kVersionString, kVstVersionString, mda::SpecMeterController::createInstance, nullptr) //----------------------------------------------------------------------------- END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/mda-vst3/source/version.h000066400000000000000000000055441461511344300234340ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/mda-vst3/source/version.h // Created by : Steinberg, 06/2008 // Description : Example of handle the versioning and copyright info of mda-vst3 plug-ins // used for the resources (RC file for example) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringPluginName "mda" #define stringOriginalFilename stringPluginName".vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "VST3 version of MDA Plug-ins (64Bit)" #else #define stringFileDescription "VST3 version of MDA Plug-ins" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "mda" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/000077500000000000000000000000001461511344300235435ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/CMakeLists.txt000066400000000000000000000007431461511344300263070ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-multiple-program-changes VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Multiple Program Changes example" ) smtg_add_vst3plugin(multiple-program-changes source/plug.cpp source/plug.h source/plugcids.h source/plugcontroller.cpp source/plugcontroller.h source/plugentry.cpp source/plugparamids.h source/version.h ) smtg_target_setup_as_vst3_example(multiple-program-changes) vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/resource/000077500000000000000000000000001461511344300253725ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/resource/info.rc000066400000000000000000000026341461511344300266600ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/source/000077500000000000000000000000001461511344300250435ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/source/plug.cpp000066400000000000000000000210101461511344300265100ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/XX/source/plug.cpp // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using Multiple ProgramChange parameters // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcids.h" // for class ids #include "plugparamids.h" #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "base/source/fstreamer.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug Implementation //------------------------------------------------------------------------ Plug::Plug () { // register its editor class (the same than used in plugentry.cpp) setControllerClass (PlugControllerUID); } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::initialize (FUnknown* context) { //---always initialize the parent------- tresult result = AudioEffect::initialize (context); // if everything Ok, continue if (result != kResultOk) { return result; } //---create Audio In/Out busses------ // we want a stereo Input and a Stereo Output addAudioInput (STR16 ("Stereo In"), SpeakerArr::kStereo); addAudioOutput (STR16 ("Stereo Out"), SpeakerArr::kStereo); addEventInput (STR16 ("Event In"), kNumSlots); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::process (ProcessData& data) { //---1) Read inputs parameter changes----------- if (IParameterChanges* paramChanges = data.inputParameterChanges) { int32 numParamsChanged = paramChanges->getParameterCount (); // for each parameter which are some changes in this audio block: for (int32 i = 0; i < numParamsChanged; i++) { if (IParamValueQueue* paramQueue = paramChanges->getParameterData (i)) { int32 offsetSamples; double value; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case kBypassId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { bBypass = (value > 0.5f); } break; case kGainId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { currentGainValue = value; } break; default: if (paramQueue->getParameterId () >= kProgramStartId && paramQueue->getParameterId () < kProgramEndId) { if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { int32 idx = paramQueue->getParameterId () - kProgramStartId; // here we get the last set program currentProgram[idx] = FromNormalized (value, kNumProgs - 1); } } break; } } } } //--- ---------------------------------- //---3) Process Audio--------------------- //--- ---------------------------------- if (data.numInputs == 0 || data.numOutputs == 0) { // nothing to do return kResultOk; } // (simplification) we suppose in this example that we have the same input channel count than // the output int32 numChannels = data.inputs[0].numChannels; //---get audio buffers---------------- float** in = data.inputs[0].channelBuffers32; float** out = data.outputs[0].channelBuffers32; // check if all channel are silent then process silent if (data.inputs[0].silenceFlags == getChannelMask (data.inputs[0].numChannels)) { // mark output silence too data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; int32 sampleFrames = data.numSamples; // the plug-in has to be sure that if it sets the flags silence that the output buffer are // clear for (int32 i = 0; i < numChannels; i++) { // do not need to be cleared if the buffers are the same (in this case input buffer are // already cleared by the host) if (in[i] != out[i]) { memset (out[i], 0, sampleFrames * sizeof (float)); } } // nothing to do at this point return kResultOk; } // mark our outputs has not silent data.outputs[0].silenceFlags = 0; //---in bypass mode outputs should be like inputs----- if (bBypass) { int32 sampleFrames = data.numSamples; for (int32 i = 0; i < numChannels; i++) { // do not need to be copied if the buffers are the same if (in[i] != out[i]) { memcpy (out[i], in[i], sampleFrames * sizeof (float)); } } } else { // here we use the current program as gain value... float gain = currentGainValue; // in real plug-in it would be better to do dezippering to avoid jump (click) in gain value for (int32 i = 0; i < numChannels; i++) { int32 sampleFrames = data.numSamples; float* ptrIn = in[i]; float* ptrOut = out[i]; float tmp; while (--sampleFrames >= 0) { // apply gain tmp = (*ptrIn++) * gain; (*ptrOut++) = tmp; } } } return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::setState (IBStream* state) { // called when we load a preset, the model has to be reloaded if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; // read number of program int32 numPrograms = 0; if (streamer.readInt32 (numPrograms) == false) return kResultFalse; int32 savedProgram[kNumSlots] {0}; // read the program for (int32 i = 0; i < numPrograms; i++) { if (i < kNumSlots) { // read the program if (streamer.readInt32 (savedProgram[i]) == false) return kResultFalse; } else { int32 savedProgram = 0; if (streamer.readInt32 (savedProgram) == false) return kResultFalse; } } // read the Gain param float savedGain = 0.f; if (streamer.readFloat (savedGain) == false) return kResultFalse; bBypass = savedBypass > 0; for (int32 i = 0; i < kNumSlots; i++) currentProgram[i] = savedProgram[i]; currentGainValue = savedGain; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::getState (IBStream* state) { // here we need to save the model if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); streamer.writeInt32 (bBypass ? 1 : 0); // write number of program streamer.writeInt32 (kNumSlots); for (int32 i : currentProgram) streamer.writeInt32 (i); streamer.writeFloat (currentGainValue); return kResultOk; } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/source/plug.h000066400000000000000000000070721461511344300261710ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/XX/source/plug.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using Multiple ProgramChange parameters // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "plugparamids.h" #include "public.sdk/source/vst/vstaudioeffect.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug: directly derived from the helper class AudioEffect //------------------------------------------------------------------------ class Plug : public AudioEffect { public: Plug (); //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this plug-in //------------------------------------------------------------------------ static FUnknown* createInstance (void* /*context*/) { return (IAudioProcessor*)new Plug; } //------------------------------------------------------------------------ // AudioEffect overrides: //------------------------------------------------------------------------ /** Called at first after constructor */ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; /** Here we go...the process call */ tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; /** For persistence */ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: bool bBypass {false}; int32 currentProgram[kNumSlots] {0}; float currentGainValue {0.f}; }; } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/source/plugcids.h000066400000000000000000000045571461511344300270410ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/XX/source/plugcids.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using Multiple ProgramChange parameters // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { static const FUID PlugProcessorUID (0xC2E7B1E1, 0x4EFF4B22, 0xB90DE6D2, 0x4D147E6C); static const FUID PlugControllerUID (0x5D804D77, 0xE16B4A2F, 0x910B46A7, 0x9272C5A0); } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/source/plugcontroller.cpp000066400000000000000000000154061461511344300306300ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/XX/source/plugcontroller.cpp // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using Multiple ProgramChange parameters // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plugcontroller.h" #include "plugparamids.h" #include "base/source/fstreamer.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstcomponent.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController Implementation //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::initialize (FUnknown* context) { tresult result = EditControllerEx1::initialize (context); if (result != kResultOk) { return result; } //---Create Parameters------------ //---Bypass parameter--- int32 stepCount = 1; ParamValue defaultVal = 0; int32 flags = ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass; int32 tag = kBypassId; parameters.addParameter (STR ("Bypass"), nullptr, stepCount, defaultVal, flags, tag); //---Create top root unit with kProgramId as id for the programList addUnit (new Unit (STR ("Root"), kRootUnitId, kNoParentUnitId)); //---We want here kNumSlots slots with a program change per slot for (int32 i = 0; i < kNumSlots; i++) { int32 kSlotUnitID = kRootUnitId + i + 1; int32 kProgramListId = kProgramStartId + i; // create a unit for the slot associated to a programList created below std::u16string slotName = STR ("Slot "); slotName += VST3::toString (i + 1); addUnit (new Unit (slotName.data (), kSlotUnitID, kRootUnitId, kProgramListId)); // create the program list: here kNumProgs entries attached to the previous created // unit/slot std::u16string programListName = STR ("Bank "); programListName += VST3::toString (i + 1); auto* prgList = new ProgramList (programListName.data (), kProgramListId, kSlotUnitID); for (int32 i = 0; i < kNumProgs; i++) { std::u16string title = STR ("Prog "); title += VST3::toString (i + 1); prgList->addProgram (title.data ()); } addProgramList (prgList); //---Program Change parameter--- Parameter* prgParam = prgList->getParameter (); // by default this program change parameter if automatable we can overwrite this: prgParam->getInfo ().flags &= ~ParameterInfo::kCanAutomate; // add this programChange parameter to the exported parameter list parameters.addParameter (prgParam); } //---Gain parameter--- parameters.addParameter (STR ("Gain"), nullptr, 0, 1.f, ParameterInfo::kCanAutomate, kGainId); return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API PlugController::setParamNormalized (ParamID tag, ParamValue value) { tresult res = EditControllerEx1::setParamNormalized (tag, value); if (res == kResultOk && tag >= kProgramStartId && tag < kProgramEndId) // program changes { // here we use the program value as gain...just an example value *= (ParamValue) (tag - kProgramStartId + 1) / (ParamValue) (kProgramEndId - kProgramStartId); EditControllerEx1::setParamNormalized (kGainId, value); componentHandler->restartComponent (kParamValuesChanged); } return res; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::getUnitByBus (MediaType type, BusDirection dir, int32 busIndex, int32 channel, UnitID& unitId) { if (type == kEvent && dir == kInput && busIndex == 0 && channel >= 0 && channel < kNumSlots) { unitId = kRootUnitId + channel + 1; return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::setComponentState (IBStream* state) { // we receive the current state of the component (processor part) // we read only the gain and bypass value... if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 bypassState = 0; if (streamer.readInt32 (bypassState) == false) return kResultFalse; setParamNormalized (kBypassId, bypassState ? 1 : 0); // read number of program int32 numPrograms = 0; if (streamer.readInt32 (numPrograms) == false) return kResultFalse; // read the program for (int32 i = 0; i < numPrograms; i++) { int32 programState = 0; if (streamer.readInt32 (programState) == false) return kResultFalse; if (i < kNumSlots) EditControllerEx1::setParamNormalized ( kProgramStartId + i, ToNormalized (programState, kNumProgs - 1)); } // read the Gain param float savedGain = 0.f; if (streamer.readFloat (savedGain) == false) return kResultFalse; setParamNormalized (kGainId, savedGain); return kResultOk; } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/source/plugcontroller.h000066400000000000000000000066551461511344300303030ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/XX/source/plugcontroller.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using Multiple ProgramChange parameters // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController //------------------------------------------------------------------------ class PlugController : public EditControllerEx1 { public: //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this controller //------------------------------------------------------------------------ static FUnknown* createInstance (void* /*context*/) { return (IEditController*)new PlugController; } //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; //---from EditControllerEx1----- tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getUnitByBus (MediaType /*type*/, BusDirection /*dir*/, int32 /*busIndex*/, int32 /*channel*/, UnitID& /*unitId*/ /*out*/) SMTG_OVERRIDE; DELEGATE_REFCOUNT (EditControllerEx1) //------------------------------------------------------------------------ private: }; } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/source/plugentry.cpp000066400000000000000000000103711461511344300276020ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/XX/source/plugentry.cpp // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using Multiple ProgramChange parameters // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcontroller.h" #include "plugcids.h" // for class ids #include "version.h" // for versioning #include "public.sdk/source/main/pluginfactory.h" #define stringPluginName "Test Multiple Program Changes" using namespace Steinberg; using namespace Steinberg::Vst; //------------------------------------------------------------------------ // VST Plug-in Entry //------------------------------------------------------------------------ // Windows: do not forget to include a .def file in your project to export // GetPluginFactory function! //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID(PlugProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not changed this) stringPluginName, // here the plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers "Fx", // Subcategory for this Plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not changed this, use always this define) Steinberg::Vst::Plug::createInstance) // function pointer called when this component should be instantiated // its kVstComponentControllerClass component DEF_CLASS2 (INLINE_UID_FROM_FUID (PlugControllerUID), PClassInfo::kManyInstances, // cardinality kVstComponentControllerClass,// the Controller category (do not changed this) stringPluginName "Controller", // controller name (could be the same than component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not changed this, use always this define) Steinberg::Vst::PlugController::createInstance)// function pointer called when this component should be instantiated END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/source/plugparamids.h000066400000000000000000000045611461511344300277120ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/XX/source/plugparamids.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using Multiple ProgramChange parameters // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once enum { kNumSlots = 16, kNumProgs = 128, /** parameter ID */ kBypassId = 0, ///< Bypass value (we will handle the bypass process) (is automatable) kProgramStartId, kProgramEndId = kProgramStartId + kNumSlots, kGainId = 1000 }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/multiple_programchanges/source/version.h000066400000000000000000000054371461511344300267120ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/XX/source/version.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using Multiple ProgramChange parameters // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "TestProgramChange.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "TestProgramChange VST3-SDK (64Bit)" #else #define stringFileDescription "TestProgramChange VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/000077500000000000000000000000001461511344300233015ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/CMakeLists.txt000066400000000000000000000077341461511344300260540ustar00rootroot00000000000000 if(NOT SMTG_ENABLE_VSTGUI_SUPPORT) return() endif() cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-noteexpressionsynth VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Note Expression Synth example" ) set(noteexpressionsynth_sources source/brownnoise.h source/factory.cpp source/filter.h source/note_expression_synth_controller.cpp source/note_expression_synth_controller.h source/note_expression_synth_processor.cpp source/note_expression_synth_processor.h source/note_expression_synth_ui.cpp source/note_expression_synth_ui.h source/note_expression_synth_voice.cpp source/note_expression_synth_voice.h source/note_touch_controller.cpp source/note_touch_controller.h source/version.h ${SMTG_VSTGUI_SOURCE_DIR}/vstgui/contrib/keyboardview.cpp ${SMTG_VSTGUI_SOURCE_DIR}/vstgui/contrib/keyboardview.h resource/note_expression_synth.uidesc ) smtg_add_vst3plugin(noteexpressionsynth ${noteexpressionsynth_sources} ) target_link_libraries(noteexpressionsynth PRIVATE vstgui_support ) smtg_target_add_plugin_resources(noteexpressionsynth RESOURCES resource/note_expression_synth.uidesc resource/about.png resource/background.png resource/groupframe.png resource/knob.png resource/knob2.png "resource/knob big.png" resource/vst3_logo_small.png ) smtg_target_add_plugin_snapshots(noteexpressionsynth RESOURCES resource/41466D9BB0654576B641098F686371B3_snapshot.png resource/41466D9BB0654576B641098F686371B3_snapshot_2.0x.png ) smtg_target_setup_as_vst3_example(noteexpressionsynth) # Add an AUv2 target if (SMTG_MAC AND XCODE AND SMTG_COREAUDIO_SDK_PATH) include(SMTG_AddVST3AuV2) smtg_target_add_auv2(noteexpressionsynth-au BUNDLE_NAME noteexpressionsynth BUNDLE_IDENTIFIER com.steinberg.vst3sdk.noteexpressionsynth.auv2 INFO_PLIST_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/resource/au-info.plist VST3_PLUGIN_TARGET noteexpressionsynth ) endif(SMTG_MAC AND XCODE AND SMTG_COREAUDIO_SDK_PATH) if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) set(target noteexpressionsynth_ios) smtg_add_ios_vst3plugin(${target} "${SMTG_CODE_SIGN_IDENTITY_IOS}" "${target}" "${noteexpressionsynth_sources}") smtg_target_configure_version_file(${target}) set_target_properties(${target} PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER} ) target_include_directories(${target} PUBLIC ${SMTG_VSTGUI_SOURCE_DIR} ) target_link_libraries(${target} PRIVATE base_ios sdk_ios "-framework UIKit" "-framework CoreGraphics" "-framework QuartzCore" "-framework CoreText" "-framework Accelerate" "-framework ImageIO" "-framework MobileCoreServices" ) smtg_target_add_plugin_resources(${target} RESOURCES "resource/note_expression_synth.uidesc" "resource/about.png" "resource/background.png" "resource/groupframe.png" "resource/knob.png" "resource/knob2.png" "resource/knob big.png" "resource/vst3_logo_small.png" ) smtg_target_set_bundle(${target} BUNDLE_IDENTIFIER "com.steinberg.${target}" COMPANY_NAME "Steinberg Media Technologies" ) target_sources(${target} PRIVATE "${SMTG_VSTGUI_SOURCE_DIR}/vstgui/vstgui_uidescription.cpp" "${SMTG_VSTGUI_SOURCE_DIR}/vstgui/vstgui_ios.mm" "${SMTG_VSTGUI_SOURCE_DIR}/vstgui/plugin-bindings/vst3editor.cpp" "${SMTG_VSTGUI_SOURCE_DIR}/vstgui/plugin-bindings/vst3groupcontroller.cpp" "${SMTG_VSTGUI_SOURCE_DIR}/vstgui/plugin-bindings/vst3padcontroller.cpp" "${SDK_ROOT}/public.sdk/source/vst/vstguieditor.cpp" ) target_compile_features(${target} PUBLIC cxx_std_17) endif(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/000077500000000000000000000000001461511344300251305ustar00rootroot0000000000000041466D9BB0654576B641098F686371B3_snapshot.png000066400000000000000000000512351461511344300331420ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resourcePNG  IHDR-7sRGBgAMA a pHYs(JR2IDATx^YeY&v;YJ! HL@lC0))1 Sc ffHq `0S2|I\N"K%EUЎBT殙C^ʕ+uG aHR75 aR5Bt͢ЋBx AT-eq" MUAji!˳D %EpMA!ILhUUEe% 䪚VZiږ 4[3etM?]GcAL#_zȍGCH/3YY\>*S$s<=hIhM86 s G-+*X=\M!,pt8 SJKҚq@Tֱ. \<#p^T*AqB9F<9d3 r,gXmcL˕P/ $c ~1fcE9!F3T\7]/+j#GUbZ*n;wPd ,:%UvFq~nf;C:}ރC7fʶBVՌHs< lo/yslٖh|+t,:Vm6p"}ێu_Ρ>^UJjMi:e_~Eƥ7ru{s[8*ؼp'|j6;y7^~qa}c7 [_}l]2DFVo ^ B~2z0l:Oڝ{^*͒:YZ87+]X=ˏB |&gźvb4+ՙ9@#{X &HUf* 41 }p`BRED "ZNqTY-zq~P3fhmW[.)}9C͗[o.̢O*=ʄXEf8(L).y`F1A@!Yi „NHp;<$GJ4!Ȅ@ldY\ٹ{D!Y b'c`OY2}I**

NbRPhĒ+h,Ē@YD<$dU. pZF\$L':Y# ZtK _dA㪄Â0pcJ{n /}2^ GɑƝLvn"P#&e,"Ȋ4Iips$9^3޼}v^nA!άo-49oCg>ᩬ/jw(՗o28{"_y^z^݉]nGO?3m> Z]ؕ? Ê9DYѶ'= Rq{Z[Ģp4(+ GbYPodvsy `H\,.".R&a*#%aަP9ǣ(:BaOP.'Rt۷G#" wEiDh)O̹0ERrJ(@L:3EjP@s6<4AɐY@%@Hb "% "qwQE'E!ѤY9HT,t &E$ksb(>e&9gyA)wZ@Y s#$W!'ĊT,. %o@b V?f)D)U ,Q!4BЪWcډb @ND! ߥDVs")&z)*z_\p`Ȏ>3>'<:h:w9=rEJr6zTj¨GSN@b6saQm7M^4J+jrPIvc@/@N$eٲ,qN's sKf̷ ᤰت KK23ʲR֪Q* ͙RP9emLeww'Crsr}&H :dR+ zIkyiКbHrvŕƛwG$+Jf&ZQ/֪_8(g>8"R)$bXTr@LlV5g5%3t-lwa5gNo"apI E9ssT%1縮i;frV-{;ezn\ Zmu*5%4F%tRכ Z l+'U 2 s|p6V (K[1.nb;'~:IB1>.lY=;\v7776ZAv㇞Pȫ&zdt]w1lV!M~;p~QЛ RaJ>} x5Ih"( dyymqqPq)UM,F.G_2䭔kk KHrF ߓwC"j)nocK0 |uȡP\^Y]jkG#MzR_ۜQO/r ͭsB+jC'#3c;~:p&O8#bPUj@QHpZٙ갽;TMQl#.D.ٱ9ВM R$ 1lX!72-4rtәksT<{A;89b'zX]( -咉{aYv/A*ӓ^bΡ#žN9Ȍ{z] ~<xM*7kf{(cknqewR;h~ĿK~+"ٚcaЪ:+yVќA %\by슗 ,@ɧHnit'G5-hc;"B''uees/¿l4gz? u y^h*n(f`m+2z\؄aCaB}}}>Tk H)`܄$("FfDѷ':F|Le/,bObCh:YO`;itd?bm)fֿW- 8! gRPT5T/`xhn|'c챘ѨvuX[̗f{~?-D.CX,9#^0A8߹빜$4! E77zk}믿p/L(߱2!F_?N p2Ǐ1:-Rugc#_,gqL$~Ŕ= 驙4 xzXjQ+]"&aa'O_RvtT'c`?j~$s\w]e܌J>_B p!'ĀG]KeǓÞkfr~~HtP\sױTҤ$SxRKBT v6JK1C![&3lo}Ka&SƁWGa6@᳨>c`}rq~0ǻ;x4/L3Rȗ~~~aqޘ3iylYcԆ>np-9|@%;>xffF/N8c )a/hc]ЬnT &5۶(-.e&3"'c+ñX9EՓ`gܨD9)t/؏(D`=/˲~6/aReܝF 0'{k8`[ηN`Nt?21Uvy7>j =p:`bpJ(8r10:|)g?tx<+2D@uR8\g8$ =D4ƣZL-Ѡx%! }{n? k#% ?]9Ffybɬ%HIXB?ŅK/:6X[ZhY{Uar8yr | '6kHb eE9<z-; n It<}SpIGJ䪦"Mmku\k?rl5~qFAǐ!@nUhS)wu,Ny.NnX;G;'{/.멧^|%7 mf #RlI|o_w}1=:rjFLV)@@N GSJ`'?fJ@=,`V7qX 0 GB1t 5JC'R nj Nf%\p!i3% 0Wpvǔ¼D[lnB!{w piJJz'F(V9?U* OPᄖ),ӰWȄa9BT47)zu+np: 8B:gQ8܅Rk}uVUg^ISm \E ;N|ǎ ÔSE}͂d>T ~ DrBH Q|&3Ч`I܆Mfݳ?5ٵήyҸ)@,KQG`8~iDvۜ<; =DAi  XD촄g$DUU*LBx9;tGrq0¹*߫5#__]tskGW -/,Wwvvɸ P V9AZ1ŅF[;yy9k{R>ʨEU?$g ?z\v-'l#$In=\~Jv<E{zONu"jT:8p#\D,'xJXlT#ܾc,CkͽZt>4$5н_{.4K8SL\ڙl\jU'{B{ Ͻ?x/#U"IRB:r4*7Y&X*0/6&kI 5_m̶jB5x*Z)ol~Pg){z?ʶ,7{r%bt]L+ f.ؽ6xyɑx=-?qhybVwDMӅ!V5I\qirGEA / Y % V?CbDh.JE)'DL K8%y8 M!8˵4lB &D,Q=)ϐ /C,NbBn˅DO_D4@H{I\DHcs14eqa$hr&De@b\ $|rc \T%o'<$ArJ  I[*n@Bb0+\RdAY\Nl )yR43€"Tdy&$ % T.,Np![%|i")}PdIip}bcĊ'38Hȳ@@g' `آ=X.HSjHI"s[@4R,4:MH!esE Arh@tB-$lKV6< rR;2 Ao$sNBؔ!%P Z$xʁ,ʼnC&HWN 2 ˅D+J8b d`>lɭSK ť 9%B,=%Hi,N)}bSYɳ%L))"DpƇlRIH)IP(\z8#/ HɄR"\HHH)aYZ,4"-wN.QE,)@#;!hT*@A-rฟ䓲\)&)u+?s r,]z l8Z(Z0j XCӉ|;/է~7JjEѼh:_}/rhj)7[IsT"s $Cd [\jr`//c_ziw"Y%C.6᎙)iN ?w}oc;݌oTg:wRt2~OKHŔ::R(f*\XWʭ[kp玆 y:f^`hT+9{h/nlVu,hs%8(c Eb B,@EzkucP|YPom_[\Y БǍafCAV $ qBerݻwI ?x!S~DtRNPpT2!J!IIX+ B6KG5S, J8MB>B:Ki,w(6n"!a򏀨2$VLSяPʉX|"Y@|̘ɍW@y 5MpYg i}0g%@.iK\X y<)YsN0 [ʧ°oXDg1rI&"p'\E5DEX( &Юc-vV[9ӲZv~}KM]2c rՂZlUKKH>wb6I~ª:!p. JwpTg]87ڲVxG>0QjGD,pǬcuM.Ek6%iYW+ffd{H.4ѨTP^_뎽z1? 3UCk2dlޘj6\۫T7L3):5gbѬ7暭ՅbK3)+J \fԟ:% 94#g~jA^߸^Gr ˝3ij {i9pEIQT3D+\,M24:)U&olF~0)Щьƹa eȣ)`vic@GI`?vus˜ e ])UhhaQ5M+`],:LQS ~IRÄ u .IeMkr} !z\.w;[Y&RQaZ4"YDDǙ b('LD.~U4ٓ DPTjL,?ӯDNSQ KJd!eMc@7'hړ00c!),˥R~ʥrZcOO`fȥ1A ZhU| !jDĒlT~\fH$G '&!ZpfViaxSGړB1!BŨdBjpP5_(jWSkBSb/t]8way9yZmfnc9a" VVf~Y,+\͇`R n 8+kZc>O>{?:>_\\BEc%N; Z]ݘi cyy__^@mPʬLlάmbĠ{TЍBȪs$Uu }1v=08&iDrBAM+|Qv߿v^5yJ{W.W67vY9'^ {{!i jPHzƊ0K𳶶ON}e⢦6ݕ̬h'Db_O1FoգfA^ںP(bB>̇0; ka8k q14T1~HFwO9Xr$/ʅl@76͆Hc7oUY^t56yq/Ґ5]s8B>{7 MlQ>w>+h0>r{8y.EX+1vqTѢ|e12N==9}z2$-euЋƦ;O.ÒG.ҹLʱ G#K]^+Y8"H67ؖvf/sƖ)^TĢd[PH`]Y]kVP2u,OslZa j@$^8sq&-/y{̠"y;,l8ɍG(010vؚQ=u;{{G?88t}ogfP?{y`B$2%Xl01L^'$ZX(# B4VJ~!;jEuiiUܑ̠4' '[hpd'o_ej:wÒc˄2-7Y?7p<fVMz؋x&r GZ``ўCT:?|R -.ՒDՒ vJٝC6j aK> RD~f*$AhR +ؾ*QT˺bdLw[GP(hHg/OLA*ٱ&:]O~_.ᰛ h`%Y)DrLV:iBF7L*d: ըZ֊!a-lB!XQ,J 1czUĿ_y޹rmHꖛmD~;ֹKbl6Û`mg6D5Q$΍t?TdhAOL (*J: ź׷oZYjV6L;z.Z`BחP;yQU!핞0eExb(0{'wۯ|R92U/*``ʦ,(A]6_t|!#EՒCujɺ( e^ahysO؋5y懹@S,,,R#TWioS} 4luC} {`{PHv]6N T%XFQCX{=y۷^w;Ylز/}|g-룫`Fڃn@:2m w|έ{ÛYLDVt6 ^ 0W'av;;рX!%Ufŋ$4Upåd8Q0(,Mޘ}ca 965jnT=QI1qf:\p1OWj(.MvYqF9,_eKI(@._p\g8PپZopqi]/m b=*eZ# cnˌdbv2;3+_p;( A[z8#xa3#_+YRm4aQM49cetlBX 55:\o.Rv0=gtޒ: џ*PW%{@Rb (x=o㍽Zu}z@pqVr+4-s0 ̀mzHsM%."뢕[ur=o`狭wg3AJ 2 c]{CxmZ|ر0|DCA ` )8y1ӵۺζR!Ң R4mX2N3ƋFvj:BTN4__x876]  6WE>#Al^O mY6zQ&rZeVIQ0pC/wmOG>xnyq[ r>U?zajٮiy'\'gnnV¨"B,Zb<0wք+l>NMzbqs [`kd{Qw>33:X'O^D@^m㊺S7'h^dF!{/[62eȵGB[2B78IRိ{9Ømd#k}\

GhU12xDZc\SW'65eًeyeLmy`F?,/p<<ûlwƮ;t;/p0̣}jOAY`h{QP TWL!9>xmʓ`kir "hYK^m*$ afОhJV͋G~۷PԂ4رIt١jV٠m(aܹsf?|b8j2m=-;j0(jsH A);zQ$'ځs9l֪/`]R{h{wjw -MVcq&:%j)I})9!I)i>ʡɔ>=G셸IHU) ,>2k/"f-b1}قw0ja aq+:`ardERc p(dmp  Tx=T,h8d)}Uxt} HI4@' j{u!C"fҽTu;_;z}Oops'k"H*Y9C Zp;Ji>)߾}:\Q. ?y᳏x.y, ,)ǟq\h3 )<湢&Nt0c sX*5W*bR"D %iU/Q}v"B^IV"#Nc<"UHֲz~{j jR$䜡a9 oΟ )!'j0y ga9ܓ(l2Xt R0iq"]-G!R Ax82ǎ5E=D MZ74t~w$*ZZf-D4Zx"Kѽipyu~=הRcu}Rn-Vsu}1++Π8~~OFԐG8U =anf\=w%kalNzmuiPKz%gBtXeͮ]}r*Z|nd'5WPVufYo]i6ÃVLaT]zuYt@1vefykk+w5ہxO"'A(x6gG{CǗ& t5swt ~g벮ʻ=7ws+ܼ׹ m3 w:iQOPwۅRUO ΢bŦi ClCU2CHٷ^JiGF$)6RY% y)›,)pLK{؇9=;4"3r維bT*l&Q`3 V(4.i3f>z}34^yR30rqCZܺ>~ R.Ia`:ݾGsˍn̴vcMLBq3م탙Rg{լ/% >'cEJ<]zYc,ZQ\+ਗ\X@+ 5)F=:~+,AISpHgO셝+HNrѐJٔ40RiD!JJ  p)%h\H^AڤD,e@:D ܉\8 > s#&OX6DMNJN>`yE ';0<@4R!\H8{N 5Jʥ(CK$4VLKFD}S 9eMO0U ۥhOĬi5RF!SYI2 bN#8+f7@4$9AQADJvZ\!}+:,DD;IPHGDFtD|ҸB)؇"δM,pDdyEXq)bڊpRE"$$8M A:HIRA̢,D"cvK%Ja XHB,;jI3 QHQmC|*P*xQFʳ(+a9=IBtXi5!ŵRޯȍ-;EB)D,ATI S\.˞J:x d@ e"HaH4@rC,= @+,<0hl2W#X!")!ZKDPnjD@@SO:Dq@Jr8'$D#XQ(DN_Iaʜ033gF r\RF*R@:hJN <V\ … bYA!!;8Ag{r"z"?yXrC̹I^/+岬蹜Q*}/V+Q*+3 Ŝ蕢ErRdrq\p("qpH2 暜HS 0ݐ(%r<0"!U @$8M /%Hx#ge+5":TI4D-ȡ;Q+\&pC904$jFA|]O hNp !%F4R.$xwBI=5bqbQYxSBʴ(4)WHLXzd(̄F#Y59^0I2;hl:Z._-ڇC7J9凲8 Q~nrǨVy7`ϲ@9>H4:>;؁l~~2ًY˛+B0`B QVC=zD4HKق4Re~s$Rt4Xy~u$ź;(\s5o,7uǗ|9-?4@2-fӲVhZ/D{Iօ:'_q$;`W^.?R )+WJ9{5A5s}>{{2#!~tռvAqu}eE)dC׌\ֵ9/&BPw<ZH ֒f(ܹkmCK緶oyj⦳{?(U ݵR9k{JbHQRMB[k/ij~fZͨR-d#F?Yjl.Wר:䄈dRI{D6l?&=85g[r&+Ȧe ۹<[1Xo,9xcfuw:S+j^&spةV5ЍㅦeIqG^ :ZP۽<ːn<bZPF34уG0 u'NPw\F^ aX]۲>'<ڔ v^wc10} e責Q&_,>2XcI?Ĺ"EɷƢ'?IX~^g|3O򳆷_]h?Fq^ʵq`䄵Z7y9+Ywz~d5canVLVWw-daAJ$ N!2IOEM$`ĥDj  V }_VU{biK(49 jaⱘ^ BE)/!!UH&R:`r@H!@rJ+ USUKX&=-LIDR*ZC" 駬D8HD(,!ó8)!IrCX}Cַ._| ~pܹ|>Oߺ@mqq>ܮpP☎UJRX*oܸ;wlnn$!Ră`0;;Ej*ԶP,vցݵ5(W7|saa& ͛7QPF 꺾@!jjjS&@P@I޽ mmmFP@9TFHA "ʃXo4jF(6*' h8R U""WWΕ+W~~ a/?趏uݟɟO?>BP?jO< j{P cB7`x5?򑏠1PT~NJ"hkRCѾ09t B8'asB5 T# bPe1U#5z'Qk׮! @CaXPC`|Cc D(~T*8{N-!AI'amZMr OvDC 8?ɧ8CpIcZ8-}-ID\ HJ a #Db u01?O`ڂU @LXrVX1gA0͑5b$bs_YY"eBx9~URR\puA(-!K.Q R@XHա@$Ex##jDHQ R{X A ,4Oj,v{Ϡ@J82a@ȄQ \. 4Mn1  090CX۶1pL< 18v`CԐ>ã@Xc+8!O /g29 "bs**A ( ACJ@( gP t?m+yz!~ sp?}0gW—3{{8g ~7^Jׄկ~OO,PQ (kkh? },a__qlK̊??ȠpǸx裣Gkqz??K4=.C}:acQ`(ю>zr`Pb|$#ؚ%A̤s;#w:Gtҏ98s:蝙#w:;pOJ?p&.]뱷:yG[ϟOcΦ>qƕ+W&-?hy;v}8K8<Poo系 0o?Du~X?9#wNw?xg;#A۫{;τqaf مUjiH>lTg?&\]ZZJJ%g0!~+Wsxzq H߷yp W^y^tPDpd][״'vxxD 1|IENDB`41466D9BB0654576B641098F686371B3_snapshot_2.0x.png000066400000000000000000002754201461511344300337150ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resourcePNG  IHDR4,gAMA a cHRMz&u0`:pQ<eXIfMM*JR(iZ``4mS( pHYs+YiTXtXML:com.adobe.xmp 1 ^@IDATx̽ u%xkwv(Zmƶ6cO===5{qGi#[Z,[BD;ľ׾믪9?UA"z{|2f> $SR,XW陫L}؞{>əuCRNY}9z{o'W& :bcJ1Ŝޯz.<ޞDO/#׉ai|6?PO4t&Oc}9-NO8P.N/cYl=H;b>0ۮ+ Gۈ[v1mDu~N s9F:/e*K9T=ucrʠ, G:^ʽxi9LZ{߲.M.qgYr|kNQ/n_&VIX2\6\sHqN=FeC>-E:[0=sbO\IJ,;/NriO0ҩNdxt1eLQ3nqH.Y 󵵵JoG8X)czJ\|- L4NDhp$߲cY6ʽ^I'r٪ǛfO]qQ&NN|'L\Tf╍u=^=>AbP0;av r%'t%#Η:x9q(X_^).qXlV ,+X۲E8bb^E#ɉܱx_\̙E >WɎy[Y^Ea c U]]cwF[>ȩeqKv aL؋DNp8)+*r9G#F7=;hqqB@E=9į>e>Q"[eqN!\7VF2o}PE|)%I&{}2JǺc._ĩ,{u|2 eo:8LvHo#% Lz*m]}Mn}b55p“}A7}]Q~k\ OH<D-ƠAȗBcG`RQQFJ`1& U` V*0҆%[_[ly6f3mffVWV6;S۩RW^v{|#9qq>uīGu:sٕVr#NkSR:??gk+a)RI zrb< Fi9qp pS=ƒ)[TRNO+b1ÕL ˊ\﹨/垛8 cLXc%'*>W.2O]zw8 Ks{2\XT8)\eϺ8c{bFX)gC2aى{yW8Ppߘ>W.gBfu:{  aߝ3Vc-/&'m rօr &cojjuLj7`ReoQmxhZZۍ*cAI ,蜍e%kmkǙA^^]W4v2B\++P^ r$ey5&1w:c:_&V6XTfN<1 y#-J,:1 :Up=@(M_ij|ܛ@|\X'xX}lD[و <&->b!,satˆzCX/Nʷ.&\6uu/#۳>wv< 39kiiG )&,g, !/ @h078ǭ+dgcc'Jjoj {0Y TRjFя 5abЩl:ӺJq(PW1xi-^bgPA4==_AcCt\tKlYW񲬺׫̜V1`>7\*e )B X!ln.!v|jqIVN::.帣46pg0q26:vX/.!p *4s48pAw0l:fMaBa`0c \uBoڥxL|}p~_ke7m:Ujwyv'c/a#Ȭ;|ȎvU֙@[3mXEKtB|ɑQq)G$g o“ Ƥ0οL|樜C:d+?k8ĩpj |6շ,W[=vqe[)%lvg[ ,&ƹAT9 L/*Mb ;W1^q3.|nhy˴]+6r}К\E@l9ĆvAV_>[ 18hb Y\8v۠qo_L ?y،] M8S YΫp|$ofGrfB?qަ.wkn mwn*ڢ{ŞDb|%d\E ;qC$k(t4`y'3YjxnN:qGaqeBc5㎐@Lk3ec|̅:≧mc-vʌgAϣ2@ B9l-uY_v6.ءVa/j:lk- v|]=bȻ5(!#.wqCSkw:w>owf6u=pņ/^=vlz9k 4cw^)L7vډ#mefja_t{i4;f/\e&Yu~^g65๋EfmGFU{[+dwGwFlzZVPjuy.g_d]U5ZY׬mwUF,l {@^}M-,>a vzLVB5{*Xprpo]z@?dnmU4j/߶N%;(պ%^m~OI"ӸJ U8sJ] FĈy&:q0u 𵸌jniC Iar$1q݊J-305N "1[Fܹ(c94G5\|' ^+#XFpXnrW d4ohDH\!ι 3߿lZw;`/ouf'e_Cر=QnO~i)ۗu{Vs׊!u,Ofn\ki1[i5NK*0esge M&}iV;yU'Ğ]ybyw(6!1 Ѵan˼d D?~Luxg2K hlb Y3|G.TI,ANYV\zJ,k!mkhmUzk߽Lo#eӺ>r.LclKpf5ַXa'p-c}ܙ_y.YMn2 ^: >-ܶ /ߴ]f/ܴN4-Y5e8:gliş~ަ[Ouw=nKvg,z۟١6} \vZk{M V/ =p&52g"kj豇+26և|8¿]z1ؕ5bӟgU;f';jm&n igݻGjMXru[ɑ]XG a[n [^2;x^:l;j㡳}'lgGY{vzlح=V[1af͚lPm[0`=>?ekYǤ nSf"ھ3iu%$==a3,I[^7T:s00_e3LcTbmh^F/>/W(i}2џe]maY~6`(T"@.2/mf6:ݮ#So8q94L͆m;FN36]L18 ͘#b)v|bqaYuKN;^VS7/[C1XH6j+n6}]Vo*VƖl@VfUٱwY{,Sa<4˕fI f=iݘ<| Vr\z8unLU~&jqhj v0Rwl:Gf!=Ad+mPfWʏH/vyӚWq>f~>fK 6r5t1D?8CAmݶvhOU"׭n9ܖݷgm&ۣ7-'+KqՆo_)[j=nDU:4ovSM}Zɛvs,rXWweg>ne~f;ၗ8S 3=Vmm#9CܸXSJ kӺ'C' 흗;ijA<=klăOp~)$pK.xS%ywlMCm8=Âd"e/d( \BɆ9;%SGK$^q>Gr&Y\b=q /.ʙ(WWR25blA;_< vJ ;S\`0HSx~^ rsuxvZXC'8̷]%.gz$I\E\4ѿs^TZ]5Fr^.aǀC_>ۺgPk8;͵vڞckDt qp3lp3b`J4=V[7mOmrʘhu\ϲu_Q·J#xGS"8 m]F# yb.U\oqL%ex]üC|y~^; U`9~)x]68veʎk8khlaֆ &%q߀}|uq>|y;VMݶK8y6$vr7-6q؋ YĭWֆ߾xڞy3#-2sDuG0pe;qܖng1WS&ƻ}v y;vs >ZgKOh{q=i>[gGu߶!&ˣ6:ۯuK'X~y: m=:>1X0I=m瞻~S2ݸ2aSx;&؝[sX[*bq<pҲMCԘl7xcSmDۨa{ⶌt!ɣe>C&( .^-$˖47Dc5(I|rn^9N3}I#$e5ʸ dq.NDf8|ɵ+6sxR1q6C毨AqNj cR<\rXzթS^:╶V bצF<=6Wlzt$m{g}xI6<=fz(*lpWW5X[k3^)czaʫj4&q4v{w-Oj3욚07fk< ︭M8o㕯ڟ~m,F[ QՆeX b%M.YSc=NjlO\_Q-:((Em`b :%Y-" 3޾>}z%miIb؄Xs7D  a?ŝM`]}#FPp7@L+r`}f;iǸlr;Lҳm (A@2&'9"flnkpI]lE`>NՀ_i=,uܢd`*L..l3IβDzW I6f4@Jxa%[ R+2, *vU&SɨOmc^{䔝Ȟ?겵ؿɥtwbX].\˧eC> ?%fxI$5p% 1VOA<;B` c,̓H_\Y&Gv.v9I,:9&zA^ưM "vܾ[p&ȃzXloNvj]0W1V7MM24cʅc^ . 1+ 4qH%NcG <%ȫO:HNq࢕2VmbRۉccS$g6&je%>1&WHe e~}0>^+&MKw-kvh<|IǺdĪ8:rqQnr=n_DmxeV3;\=KޣLM9wNa8>☔om; Vv˞uK - [Hȳ<ܺ^ _w95Z܀MUE^cc1\$b*'Y$2Q\LrB=;pxo ,C?y<'RQzu &GqyDs:l6ɤ G+ӉBQxUS0޷yʱMMZ+>/ߴxfN=N'x+^♼uɲ|S'N\Kk;pk1OQ$F}ȸ(\ ϲ2uG:VTNO9uJ`,S DH&P/n|2~g`30\P~%>*0$,w7L.KAa29]9y*;EhPׯ"\Bk9?|)_ |:bM&g*+/k#Ymg]I|e{ߔ wۊ1,uIf덭T1uN~b幵P=e粕l;aw@.>;uS&_.x%^Ev?ux%H1%،g&jO<:\O *ACDʷ,`Q{z3q˔UшNB=GEfUJK ? M^Ǘ C\VNU,GZ>01' '6A7Yq2x/-}Yxe'3Lzՙ \e}'E!smA6jm}Wz^1xL.Cv+O)om_:q(y'3zޟb`% ^GN Q.{垗4L*c{, 7R27r ?2.A͍qd=| 9#si+/- wl`(&:%ēs,^?46 J`Qs. m/n@V6x;)n-pNTZ)Y9|YtʅcLa˄g0"f'^Ny)9LL-eSwo*0H6^|eN;$Syk_p?T@ObwI^ /> 2 <=eX苋%ĈCXyX?Ȏ2o˺t2֙FmUeɧCz唫Yu<iIFu'CꙘk; )-0Lq$r2^Op*K.^H9i:c >?$g:.aXgu%g \1Qsɞ~d9H$IVH$z\#ΩWz?'^<^r||,$PDZ$K2Xd/NaIgT+;_LI䪓u.SNގRz-Dz.*3L|&-foO>&xD"y qG'։|*2Q[e]I/nV~=z9=t༫Oѧpj7뛓0-@~ޕE'"mZc=N+xX1.֫Μ$f;ġvTR#FLuxl=gxVqxYZYx%KIyΘC1q6c;MI&>c@cQY#Xr_o2WkWh@1 A0i# S-VgΜ L D#y/ /X:}]}-_˽MZ<͖eއbd^2:hXp,L` 2$9OܹxFB[&oDzIP+̣eoS,f9Kc$W^ʇǦ豑1;۬ [1߫ϼdkmᨢ`5!q};cP6ل%4Id8Ǘ U"3ly'`x[lvs[eҶ+Wཾgcʕi>5x݅w1Zd//?~׸g[AߴnZm]xFnkx RLjo&m㺸Jɩuׅ/T9|I9}P8Dy)tk`\,Hei:_>M۽q}K>R>+Al9~;;vMڞO{–wSV;3{SFo&7/u][c\t#oxpPzJ1Mx3r˞Ǩ\:jw mGçl?ޟ?lw~>wJ߰7/W?z/OG?sﱏǖWmqoapI?x&O[wcc<12w'~~_sxw]ٔ]{CqK|kÿ {\ytaw1#cxZկ~2,)nTZk}#~E]x᫒ϝe+̌}˟_8%w-%6ir{^_۸<}9 *q'-R20HHJ#F`LOb*>6J-14N ˛  ;c3e;{w_a#}ԗ>eڅWCD0^>":_WoطZݬWex=n92n?͟]e!y=p6L=z2>mmtl_~?9 0'l!ް"4&QVϛM#ti148re s0D@eT9Ɗ+Y)re<]*{ƶ1.%Rk6pB{4GvٝOWXMuO6۵]_hxr Gyk:m/[qwW鯽\gBV׾lxM, U6b?V_Yd?2g +xBv{}J|?McB0zxƷ/~6A?⑝y>~r+unsezO?K|O4ۯ99 kr$">Tsy$+_S|GHǶ¦q++{ZMIﲎNZ̯[-~)IU x@no ­*|h okN\6 N3uMx8>񚭷*|*xXE"`1ys}9^"^o958 +-۪zk,[ҥcR7s<ۉ+v'|NxFodO}J-?݃O6>/G?F(?3V71Ɠ帑9$m>qI¨,Ʋ.,UTogh.{6=e|`_ h76pIR^7/Zow{m/çhm϶|n`7/gj17f4xj[,8ms u_a*@6˰J==%|Qѷq;~Nv]qvonvk|##V);ՅgϞsKz\-׽["S]O)aH*dvLϲKx>dC~R#.^+.(/eGƲU'xNeq+d2>q\>YB{~b 8?y ?if-J]zŌm2HcX >1z(AL|RTq.9˥ǗP.plwxH>¤TX^<1K'^WL#;xms:x"JrwvvE4;`=^ii1Mimz~MH 8( bUC_>U]␭Š}D9P<>O2=/8.Z' ۩Μ'Դ31JU<9 8úl_S'r$ԋŜ^|Iu01 \gŠGr=g\,s|h}aˏǾ01oOT.qCzɉַɯ//XabN٥}ɽL^2Ʋ*+N}x%ai+x%8@IDATXuG>({|1'~O6q1H'[2d˥#L=*{,﹄$^>(WYv  +=mbNeW C~\v"'*^$3O*L֙>+4;Cz>f{^(y.)lY O=8½DuH\2ehSJNS=(ds^')C&eTWP%VrYN #iäO4xٲN؏ĩ,_\\v3$.)6q1QD{J酻uwSGv>Xw|y 1/*rq Fzc6>b,X_VYOHTv^.[(ʘDb?Ke/~IMx{?:̽׉w,gIU\vkR84;nR;ʅ+7Gvi$K}{8bNc;Kb>Qף #N2S 'r}d,uk1F._cYIqy˾Q,#8|Wʽ TY+"Bء$q^h94oljG: ׅz+ soSʖ8&U9ݟRوz-I\xi8ҰC9+>Ɇ>ZH$,2r*X&$gD=q@:{ꉍyíE OqEsd#be" oZ27zI XKt~}kHLLÕҕ{}]H±ΤTNe+ei8m{'x2&)WolS'}03~?7t/Sn59 (\:q.=e>bĻX]:CK%Ŕ N7]ksoKVrqo :qeS׷geju=廑 CoWlm5bc#c9$#9s:&j=rڛj}>knxz8_roqc"rV|3Dʷ|%,{aD76 'ʷV;~mwq̓֝ïu١}0S*ֆ@8Ca_l9tC}vmY"rxI\ G_L_K'8ܗSVuFzőjN:e>=8 .[(IŁ;brZ=l288/օ1S}l{j;uֻ;eldfAjv& yvڍ|>gmyCZzВ)N}:ԫ],s|+<ȟռsЈml[Ϟ]~i)8pҺ؈{S#+}Vh3㣖ͷ[meڬG9q )x8|rYV:wJom_,=]_`yÙ ޫ2<:g5 ֊wS6Qogܐ]+X.D[_Bޱ[|}u3xMLhl2KR8I/n˱>͟^/_/|hco߇;.*V} gCZwm_m cGe9-vu+~ׄ'ތ[Ӌ!Ǥ6ĹI'2LT57u;f ˸ PWoW \]XE}5{qz;]6: LŨ8ua‰Ku..;oyhW`VU|IqO{ W >tx7P'gVpYpr 9Mķggmd2V ܘӦkŧ jDyǎ7H`:%CD"8'm}b]6?lkkTɩa;l~~&''mv~{qxb*Y[K9ع>|k(~e} )֫֎X'^3IqyU|hflyekʪkV v)9y@8=ćGt:n`7^Rبv56>|F/7?["!u8Øo 0jrrWΥ L"v 'ԸW$p{N ao's_Ƿeӧt1N^'>bgY̹DN|&ϺȖCkB Eֳ}u^LMb!y' h EhuVԖ+)XXĊ#Ʊ.ra1,. Oק?'}3Le RPgoqx)e R$\YNrbFtʽ\9(qwHZoXƔX%vXbr_ۡb(&8pL78$oOxNr(`8j~?laGma֙,N8$;CNv6ڕ]AiԩCȱS+~om\^'^6ip +͝ `Ipd2<#ܾ aa|㓌9}2dY/,9sTd}]}%/>!' >T[Wܾm/5 ,(c?a;|T1UUN٥hSl̵Ї,'׸ӹocxlw3tx׏6`g ÷AeOQ]X37fډK:cm|Ur ~Q|unKaE];*u22Ŕ ^zو_u9pwRbC,gdYU]þ8XsaΔx-G%1H*TNscyC'4Du8r7c5C4ŏp=^Jy䩮 #_pߞ|c76rv [n^y 8`u>`pg8T;;:\b؁ã< EagZ}GΜ;FSS3؄Q`9'`{d&|Uȍn&F>5Nۅl۫Ca.^n @k|,!̅aiO@ݟ8J-mˈ0P)L F ωV#fXUUo%wYS#?1 8d};:|lASaN.oHڐsO|͞ް {?lαS]M8 ߎOY0Tx[~+kf*ڝYil3Vs1oɥc#ogWw8{aai0>W-/V 4A/Lמ+ڗ36}SqcZy8Fj_f=|$i簟[+V0y;{^b|TpPtKum4 GJ7YdE]xGz)7DZYO}hLoZ`v8zk{R(S\i8ޕM Y+Yh'=zqԃ nJOҲN˾q%NyHWՃ 3\gzqV7=vt+lE^?#ZZM=dS]|-ҪF=g}lAKӮֺCu^FU!52+uPKޡ&&䪎nn5mw5޹O9,b7~~9~.Ný7#Z)uO%g3yi\ƆOE;rz0+,Dlm-zbY1^Ě1mʊ=@ʟ@voƛ4#Cfň@y76/97kZpזVo/o ǽwcE|my#Mj@EY/o\ʹ[wMS au_0hxXWX‚z]L/2EЗf]d 1ݤ ڛ&W0#"kC FƂ΁MiGQګDāxBw^vyR H#qg2SwG+קnիZ1{[_wJ>2M.q\qhxP %YVZIe$Usb@;(گձ5/[B\cD ܼ\txFd(_ayhkS7ɧ͸X_CeuK jH|Gfyw56 y/8ҤM=M}X_ƪ>=f 5+~--+0^ xfY/ytOfb¾TLGVeeLL=@V&(Hl1KZU&;^RY6aS;"]*450}:#EeiQh9Zuߥn#nk/['G/ zZSߘ+o3szX:t+iv6>Հcwj$DUW5VUaIzL⑑O%$5 1jSfHy9c؝cʆ0Zקbءi髯y5rKw1zT 0l5ƚgb`PEgc9fl*sq^v7:\ lU"z2t.n̨[ͺWYo-3gURxI/x-nI.u.~PuKo^N+WJȀz+4zZãjS /Iܫ@j[Xо,Ѡ;Nn0?qe>fX??\B Eg_+y1"Rϊ=a^gKPJłߡCq,enPIq 3,+'I_)JI4LdMO?PEX*YpaMjd~moWb캬fuHƳz,fcO\>X5Ү9vzOeS(~2:d|, u31ITbW#(zm|KbԬK̀PskcIgLɨ:IT Z2d^4xџ{܅DJޙ^A$z1ks/QϺq`i [b {?˻fQ.RgC 9q0|ai3fDpGoi]^/ ^N6@5rዏZLԢ:PI}*E*aOiWr@;iPRdsadhsPB4\[],:r:bCJwUULz٧ %a`Uuc(S:ovrRakz 5*'^fF[dA&o9TjUs{&k/iw)?,f U#wGvy8˧O&缶JkXQlOq2]H_ϲ-^d>>ͺѤKmiH<4Z0\sޜ̺־nGvz_ =h2nҗU_好S!W5 2MǗvW(l}y94YՑ&2qrax+:`ة,mŁu~ Ėrb4ރnn`̒8NC)RW35,ؼ*f_XR _/ӯU%3: :|P\_ )ڟxwz EC%ϗi bT<ȭzd4PlNZ ʘTTURF]ҰtHW%v_['k W!p Ν;o3n޸)v5@0w ^0xvSQ6}Fݢ'd7Zߤnam-th`nN6U(Sh:|_e\-I.uSEYwd=+>:7Lq1";/ЭK-/a~,hTT3lɆ l3DWlz7VFMyMc#+3siܶ7#^>˼xqUP!;d礮77+P@=) 1 .>pĔ ?!v^ѫ nЋYGS?0~7sgW~+1?7[X7,q'l~g/hո04ԸyMe7wtݥ N4Oã51]x ծQYSj%=沂g=ze>zp||RWdbkU= ߍwS.Lc}p.;nQ6ȢgsU=\DPJN2-YT~QVU[IL[[+WJ9uj/8ԧ_eaa-[zj\!bħUg@)AK SZGoh(Լ:X)i.]PL3<`s<7 9Z9Ӏ/{"3C/ 0a <<b*s)D^~ʴE1(@][qW'MݛL᰻CpujvKVPjKBr/NAXGtrN8uZCw׎%HGN!48 i70ba5E)IMGȴ7W6ȭy͔LƸ @/XkT+˚/s%LrJc}d?\s415H+*{zCrrƹLvcquzcc0zEw}CW˵4zI?|;߹2fjXE:Xe$]f1|~CcBa#Y_竎#N.W̬74yu;u^:Ok:XT-{fxơO.#T\z_Qf0+e/ZbUQ*ek,oGeg ܲDYLlDi=M޸s>zmUx_9fV3ҴY³ԓٱO(2!pv.'3 bu충+EìFkq_;wn]4VY_R\f2JHuJRig~ֆoa0_RuL]4z;EqZh^)k^5Ǝ20ЇJyW_ ^׈t*gz#~gdϴQ)HȺ8?oØT~թsUhGOCcϮ.80YFLUGu]..qW:W_n"ݵavv/g/fm%Fνe#KgPp\+yz;|` ϙšzK_wDT1c,;[6mddȎ_?9ƃ-5dr|e\ b6+.my(`i8e:K&: q1>tڙ3Ġ;%dqU_ N ,ry}^ѕ7ot쐆0Π n2$IzvY`Θk=FjH :tC 9ss\M3UuP葝O ;n}8sc+x|^l "n4XWMsUUAeQ>=E:l'P>YatkQ,iFKk ͕۪Zƙ^FVek_RVe<':zgҮrN>Crn3$ZtZR#ݎ8U#̘e{rIϧkC*uKCaeƦr)'꼁nk m[eǖvTOC)U="r\07}؇Tj̖*p>I(6՝u<ͺKKy-,svLz 7Y){N>^*5%@Oj`gÈ93gU쩓' Ν;ZgN.s~)x" ҼW=8z^R]g"Cz`Uz/iCn YUY늏Nㅡ49/]x Ƃh-:;^gAB#Ep\쾹6E_guUYRZ`T鎗*+nCu V'5(GH Kı_TR%a˫}A{WMkdEm)e xG.?aU(9p 7("raSh#h[O/:qLfC/U99C.rYdʢY7닏ѱnWcLzXj4lb_Vc^/d67d"YnNaә.;〱 ,Gz4+-훒jh[*}r t<7]p4)>t*)|խCֵ%o.uxʌG?M*wX핼焁^Y.އ@9Ӫ/ԆjLrgD:9?c=_1e:@v2ݤ83}ob(SXթM6e)UESVUDuwma_ r;Q)pCZ1Mm:ơ]_di}Wړ25{qBS a'Jrf}#86{dzxZv5:l*SNex)'oɤԞ989p eͨX8:dhZT:p[FuJl]2*ڊv f5,n\۝ar7*τI3agx.0¯?tOݻS`/՝?M1G5D[K33" {˶g S^ XtC''bCZrB3 Ay7=Th+U=dx/||!%8D yh|04_.پx 21B,YNsNȲh 7T@zUVG7˸KpI2dQ?rf\>613I2guC?Z[ }}̱ Gmk]ڧcBWpu^`g<(po0_^uKIUj*!,3 :[C^N6i ߽;=HkO^ѓ[u,κu"0C.WWdPVoS=`LF9f r-$Tc0aaf8/E|7}c|,F5켆ղVe֬_Xuzx[ܫ&VShe}ie퓞q9 V۱UJlN;҈j/Z _}+7ppI\Gh#?^BPa<>egM=ǻs~.HD\8qa!xvt5twL#ך;'0KҧkKˊVzBC]zsʰʕeZWph=Cf3kW{4`Ln:}> 1}ʱf 7,9\t,ԭ=jqO>FT>:A>]=U *pјNqKOK/3eI72BFJYzRjWo1"+.5>8FzYO4eogoZKYqvBzd^?a G֭PhHnglR]]5Gѱ5ǎ GZz,eY?;ٶBZcz7tM- |Hգ&acg2U>s4I1)M1 ^fTCG~֡t{r޷ d&`8!|'D؂rތ 41($ƐC:",]./ :XZ7Ƞ;<Nƹ'ٳ%Mn[gM>hGz#{57iP~xެ22wޝqà=\ؘn-y) WOv7aiC'{q'UVbrlPڧӦ. 6ҲS(rXZ,%4콢NY1*CʪvY4ηLGƅ,!`I z:WMV`U݇Kֶ+uz޽H1RX9P=U yfUJuuumiso T¦wâ=X"qKz58ݪXW5 զTWG_P'׿r\x4XSS샩ߜtƉ &, @src0nXN;㡫hu*7/j(Ccǚ *>CAlXWoX߰)^jWӬλ\W$7)= Ҙ.dݜN\ڎv%U (#L47neq [rpL_ǙG+䜤s?q`Sqm }]KCPz.#uϸNWɪWFv9-&?C!auH@E.Խ㊞1p.W^,kwmݲaJ,5:^orm\pٵPTP3'_{zKEo jC4aiaSg+#S á2=u]/$Y" NU/{q-sYO؊*ZH)\pЙ\+X+^`|l&CZVfćmˏF4/Ğ0zuZ63((gYaO8-tӺRaPQ90HKE5B15^VW%mdLOO1Y?eۑ?}Mi]SA+uw9=3x웮^Uڀcq]|t~,0:}ʺ4+ΰ2%U%S:bWmCK+?,k%fo9aٯo|aOzqIq|Ttk4^WZ{.w"^̬VL\#?ʼn-;޴EƱگ~ͮ *ӒZ^,Ɠ gN."7.YI|3^X83V\=/_xx|čG*4iub)yM c]JC+Ž^N{_ɸh䭩{8!ٝ7bZTFMTNT//Ye6eJݢqV[aa'ECU6uc=W\R=V}ҁ w8o>.862/zּ3ݬwzOpoUfLMWxaL1}r|/!P 7/xqe`,£Ű@2pqlkTnM^u5ˏ []0 {{ҳ)g\?< aWǛ,:iiazW.5!d)'*K*ת)is]ǖN`ϩa| o%0d^º4Mz(^="{˲-߰BS9O+>[yދT)*0daYpnqr'̚ #Rυ5x՝Wd71fN._l:֞!4 Ct|/] ߡMi`UzwE.yiUMuܼG cwC냘#uNc+F8՞$5:FY帮 3pkZ%]z;Rs;nUaQ^-^ߣ2b_!{Oz[v{˷㲤ΰ[KyX3BBFay,'O+iziMgxU:.B ,{4^vb/;kӡM+˝ꭩi"HkZ|{0Y݃Nx|+0}Ѹ۱ :kM{8X LMƻhCQ>rQX;ߺMa;KZYkLϱ >v$Wu/hF;Yi 3]~k]~AwBCʫcN'߽sqq޹wYqW7 yJU,#3eNΓyN?N{mqjl#kzښ?zW~N3 a:YWhMxz~"^G%1x.|޷~k sbᾮ9 qGU$_2^zB``[ΨFàgi 3܍R!ԟ:i3:WŌefDG3z=gǼ.`}!mf:[>xHlLvƧ3Y֊U6idݠwǃ?7/|]qǐ\| g^nIu=Z߹/}+/O8~b+OuAġ؎;kHoo>X=:iFֹf+6k/|1^r뱬ս^S/rw9XF]v=i~{i6;Q _B, jUF׿_[u/qmx`i~ }`VRzŘ?r$:M+=+szq^߮ 'EU!03p7q:;|tzтF1RN'-gzg? ܸg}h\^6 ʂIN|q4^zz|7TFoxcyY?Y,}/^xm]It@(zGڵS]6N3!qy'?Vs` YA<̗k+84u] H^LX3q >re?F#pwtߌwn&GێkoCSw]'o8ܻoMQQ*7>֙B4,p&b0|;ei~-{Du]uɏƖMZzFoi?knFcxfE}Ξ -_$VmEJܷRk5"HrbypL,3񎃯1y<舃ׂOGqmn63MB/o#cm&ޜfzZ:`gz`~g.!-jҌ!b Jd =YNH.Gܿ]²KNX=Oĭu91t벎 Dvxga(N8wcRoJ/āV, _#qH{X*C2/L_}<j-0M4tY7{:e3IUo}4|2x󥷢CO[_;:罢[ճ><װ7l^$HtLu['UBG" 5eޚtfL7g}&uXz(ϟ}nЁXZ\.<GfF·e6 8:2d{]tt46}*аgAY vG;7Yi_݊ygΜ=nvj@٧): /Ϝgy!z~t1Xw8^Ǜat毧exs>Գ7ql[ՄE.2{/N}.؎2hLt0~]q>\ǏꐵFkjCC.w5nyI*un9ُ#Zc%BR',Orf:u]2̴`/ UV=+dgMZ NN+j_'rY42gí㐅_{V)nLc!VXt÷3BzI;. /}tr:AϏ8ξ>IoaӻOrM\jy.w(5˳.:/oh*}vyMiϺE̓o~F xMK bζQ)kG*o1uG:('-41=*-t쌜.;:^5%uw3}:9n9["2ᎃ#̓ee4YA ϲt{ɰ[t IظN7.0Ǎ{17o^|-8}[4g?nN4ān/̗鷭Y։\P;QV Wp–qVx}9]e=eZn9\lsp&a9lLG5}5.E\Ӆ6[8/桞f9u~ g|=:t-zX^[a7̼.[pumಬ:d@(,8g LGf3<6 <.Ӄǁe9yo7_3MÖϼa ~3: ?p9 7^Ҵ,oU&ESw< l?9Y&M-p`|fnY{dzеr7϶ *3di[|7.Yu9 <zC[aN~ueiYuޜF/rLGi<\1[2LCixGa|h\+gxszՊto݁e88ǭi]v+٘΋|e 3Ƹ709N)C$FBs63.BVɼƷy2>gxnuJy+Vם67~]gMK~ !q>q>2,?3])o?eYnXkV4ͲzCdla|=nxO',Ð͎#c0)| 0, g:2pv_N+Ǎ<92YV#q\; !Gx?Zә?@8g:8`:,r0nĝvs8s\'X݋tYF384Yt5eg{X7 s0LμaVZp{:"C?au nu3M+:_gr2æ#n:`9|M^e7p; |x~{9d%p{tzә8:\Og/xG3]N#yhœzii 7o=_og3i "2~h]9 'n}3ogaY7xh[-a>2#nXϴ3MpA_4'䘖p].4g~rn߲N0OWWЊ7?Kw6o[~ttgv=l 00vNy agauYhV4/49=?V˲Mc93Mo}8x3aL08~9N8-|#g,+͟a9촁 n^i aߊ8|盰y̟i8<9y3Q! Q/ݏ-;L*<־>˺dRtƊnx̗KQz`]:br_MsiCC=c[@tl>!,3{5FeXn!]ڭ| Vݤ7*w*/+1ҫj…DG!O~fMk 3 0[gWoZM?L:]aNZkyu3}P srozk^G?ÀË-w}w;=^xA׏ /E_wuB<ֵzPw;H,os`t5caUs(^G7t?#jܔ;C:|z~%u@ z;qkf-ƏƁݹsߕqnm+0Lnlq@e1A@4Vcj:<|is:ntYvYƭs4a38>?f >|]k3/CQ|e/ZF:}1p-Zݸvo!%]?}#1u1{bsLRod_צvǁtе*^7'umYYj@n]یGňH 64[1ѷ5_|㭈Cܳ U]Véatg,N3>w=vơeETޙo\v֔7d_Kٹ E惭㐱ف3޲2Lg^t1;n o逻0A<auXcY|4FFFJwSp5Tb{3M^5=[!>}h8]q[uQZ86dۯ#+#o>P[tnܞUcUc1q@ *GN!鍏誙:pZL qMu+%s9ysx"e ayuVtQ<&^)V[4xhѐ잊1q?nϼB:{H̿f,~]>5FjקJ+yd4ѱ &io@8"v -bsu%PŹL?޸eE&n9.7h̓e>r:Ә'ΟqN2̋o8 ׼r$oCG=}[:;{bma.ytt0Ol鞩[/'_bL|8]U~4y ﬷&mOn=?@,MjA tUШ P/ߊ7o߈1wIdf5Y-O>p+Vu՘uvNᩘ>&tMBcv^Z2ގѸ7s2l ٦4Wdפ7:pO#Öl@31UM pӺMrxd,܉ԑ2?xw 5/bZoV_z=s3 mkh if鲼g+yi>'4YZ9Y.Iܺng~:8 o{KY`!kZWܾ}]֭[]^rCwY- Ł#'b^zw[ DN.܏;;K?w|Z w'c~h<7fxā8&^B\a5tOM]sެpcc5kLMl9=tyz&d9~S1S?˓2r!˼S 4 0L=s-_|J(Z_5͔\Cs+mm2(&.P_o.k  gdQkՂw 4UˮbuW4Q+2Pz2h.z%Ofš tm(6W|Nc51۱ j<6ԙ{CSZ Io'47oPxq˜۾iLGg<㽜ik8xMcӃ;,Nk>ha5<5.uʲv]4aߝ;wU.]}xW*"Gu45pz ̷i|aIz]?jۧtXw2都z7φn{-Sܖ5V ׇK`l=VZԨ\ɣzؽh"WiMhӪl\V.B?ҿ*D#,j6^rš =vft2SUиRTƒ*+tUxt㸏Yҷ*||nP WkJ¥U5ͬ<ڦIB%iV2Q˯ghO g`SQ gXy(y紳9l~ӑe񻵫bYsmoxNAc80Lfӳ |\\vPfffV˂ uvY!=U?xiq̜6l_^6Bӿ;T қE\"j4% u~7˥Jf瞙% /9xɿˠN w `$PB 8Y(q;x@,SD%馄`X^pfDÑ:V*Z;pnLoeweєUq/\]Y#g?zYOYaʁgL /,k*nGA`pZjpN,8=Ƈ.qEFК2/xïU=q*3>AP!+֭BTqIx"45,}s#ϻL#3|8|˄fWAFZ0 WghD?xrVx/<2Z8]g: CNvLkyV7M+YӘ~+|+XwaYQxȵ3RQre1~~:'3u4t,8r4[9uMvmVqpΗuW㙾.eXn9ۃܰ Dz LTsS!}Y31oIwѓcUdUӆ݂zGhИpx,߯"G!_ʔ^N^p,ϤC#2vg5Zg2 ɘݥ%~-sţ>Zfhmp[˭D ]Vƛ'NtWkU?7{}uw9q:v4oݎӧbۅV!׵1~4v 09Lߊ6+-xW^y%N:Uzy9 -~28,[=AiM<wzuk&x^8sz3U8yWӴUvD<2{@;x'Do1넾$n4 g,;Rן3gǎ+3e^z0YHn\@ jջ4~Xy#斄|oܗhWyj HSz@S%TܡliB` s?n$?i=8uacP(%&HUfO|li]*'&UEdL,Fg+55]S\NwVi+a ;8x?h+/iיwo>=|v'b5<K_3W`œs31{ѓqb;/8egW/_<"n;&t3Ϧ/&әUy:zjiAo7@ܲ.8X^Da#a9 72ǟ/bt#qRw[;q,nw~'SW/>3o'x+.=q.ߍK{ Uߜ*L<38v>?V,m=npm$"gq`N~k萶,T)tL݌f|p`tNC_m,uġX 1 ?`Yf=! Hi>Lu1-ԛ˱>:}$+_|9Fӆɷㅯn2)<1 l9; :-9a[hMO_/Ź?-'F}:._x4_L9z`!u_~ЭohAj8sܳMajbaG}f,G 9܍Ǵ0blvlo.^^T7D wkԬV1y*i䜖ۖkm2?y:W`nXѺe<ܖ66^SǾ8+ށsZϤu&G#S/hH+~/5#q}#.ooT|O<,OkU\F{iQqkԥQor1+iKX^Vvk";p ޚl"0#Nٳٸ8m7މO um8ӯV]O37\F ;?Sqhih}x|Dێ\/ݎ6-{L|)^<=oxZk u@Yw^r|V{'XNu8C>rOV:sթzR{s*ǻ:ķ||ÓjUachJq=>qY> {K77S2\AF$5S]|/FtǹUS,o9Kc|=r/3QĿ'jVt#%LK|>|Xq>((pF p 0Sݸ¬ħ?ъƸ NdeWgNo7=:1?yCGu4#˿Frrدl,NIƨ6 ~ qfOKm1sxmv&&/?yg`>(_uE7ui_ߏqXwoFׁtU+G5/Xe}(ZwvmA97m0|qmۿ]7g?go]~ǻ.qfL7ALŏ/D.W7b} ?}0:.~//7;>ux#.\ZsnjNmW͡ f8?l|F@_WY$C0ƟgΜIjLwU)g?y4\˿_珬įWOoߍxK_[qyrǤE46a';qK}6r-[=֕cI7-GOhn-KW㜐wf7zm`]w9V?*ѕ/}Ki7&O_SRƮ(帹0ӝNpn9/۪60u ⳺'hS{12#Kߋxa|xCaw$>T =/o7J>o'޷87OݽGPߌ. hǿOww^ތif;^߸8p W"a<=A9 r-ЊWT~%Fcs T  ir.wE=5}GbEqpOKݚڀvWe k~2ogo›; 4 {/mb@5XsKU^ѡL>6eISѦANPm=hء\ l-w G][c}0Raf5ŇG6'vo Bo|C mmq'2\37q1T9 gutjckw+c ='∮ؘ+!h]u bf.ץڻvG t >,AȢ?~X4wrsC¾}~:Hs0g @BctRL߻@V#GTt޶+m=ER-܎kl<.4Ot RдA]9N+ڕc׵[vv}m ljU\7/E:v$xKT::Iag?uFe2=]&Prl afC.Ӗ;an!M C6L;>Dq0䶟?GΫ_kS?LCox˸?H<GNgHރƏ]PP'f\Ƿ7LgX9l.wO]NtN,]m+aw88%S4[o,N~<9Ο40ϴ<~3n`r12l&2=LN}Pq|9 C\mo'1a|ư픖so`r\~8fN˰/q B/q7wi߆/0yxӆ?p{'Γះߍ> ka;npq asm?r|NFxB-#HR''P.'߄ٔ;ŵ?wYzo~M_؆p/6<,a;x _~|p87|] -7]MnÁ?w'G#0sfv:vxs`yH&M8n^ǰvc4 a 6_3&/]] lDDȑm mlw3a Mqe\ >sZķ5Ν8-~x6Na; rqaXqoxl߆ǘƅ ,?5K|c7930WY_9^o\9ae4xs>8a魥(0LN(naDwXyX˰9s ?o~ai7=w±]w|wc3sxaN$9]8wٺr;v87}݉rs?Ӑwnqr3rZvm<T:8?i|;5knv"֜WfN2|7{H0"waMm#{"23ptN ×s6 s?a {]ۀ wu_issm)/۴n9mjk:stSqvco>g¬8⡳aȷa1',ә1 pse;a{q<`f..p^PiX^ѷ@XNS9]7>]Hs;xT6{1ogK2ӕ]'S#Se« OZtySṵƳnQ/w?՗ToЊ -v XIqCu. :> CJ$\_KzѓhhԵGi ~+Td(!LyPt X.Ɔ.Jk:Ov@Rx傷U(W?!zѭt62Il v}hJo@f9Cr?6z񥽕EbuUg_Kgbf]OrDX=c^وGe`8N/t/Mӳ;S 9{K3WbޮsL1].!jJ^WRY ʍM@ڊZ l7ca^;D%j~}ɳqyy3Z?+-fpH ko٘YΡ]1KSq{f%v1::c8}:+E <5_|TGH@o̴^)t.6v]Ƽ5[tlM-11+v⦮ ~g:ةڡw\҃o]zn4;#%9q{)%T${5.ߝxص';o]Zx`/Mǻtkp8>훋J3?r$63:/>x(+ܿ~٦2_o8*gF`? k7Ϳ m  6^>w)^e1FߢOċcx+'㓇t7JUa?z*FϹ{qu^lu}hk/?.!7oF^8[dnƁ== oƙ0:d|E۬kߎw?[Y{.U0ü0޸u.nީĉqB=JTf{{xL,.śG_k8?L8:_ҏIcYsj:<6߉ohJ7AG} H8~$v%9,nW{gDtD$zu$9}@w=;O7>z$R^tơzs9ͤӌa`c83ݦ i1faKjGk⻗u8}S=.ʌiO;Ovcs`PMRct;}$wbD<>T{-А +el3f+1вFz]D]ez꣱C ݪ1޼>v"IE=057yJcan3>~"zЯԓkjTOPVt ]U*F=:wE{>PN=3C=蒀\JDߍ꽸='{&/\8鍱+?<;c1kii km1qx VUcV=OHSz_ ²;qS[ hڣ;Ǯ}1Զ3nD.-H4ӧ~œ[cQw=G9TOVε8`VtʾjܞZh 4Mpۀ?v"uBNa!*7c]Et+nܞMpcqwׯŖ807wt+WqmGÚ%5nW{zgdKS< ?Fg?9o.#!O}E7:i֘u5jЙruw$bhY7oJ M<85:GvUL%;Wn+m:w^Y'cֵ㭻f],wą?V\ZܐFDwwVpY[.WH I R5gtū0kY-mb tcaw9:]z%~_ѽqtH\?WAq`A^6#MӮn+SGc|{q:z;c펕ƻGC"sbjCXwKqލs-q8td,ŭ?0]~Hg#y87h.?=Q1ݢ1|OzxvM)>/"M@WzntꟉV?Fkץ4SЭX%՘q6=lR_xĕWT*qgWو5Us4'Vqv=Ku^zUC.i ogd>FL.Ńrmu=+@Mp3MQɨsGbWג.fV5Wsjzj]Wͱݕ8#?G5~M]ti><~m!^ߏ/}1{x,ܚ/,M;HhskG~!& ܕKwc׉%H1X:ӡLWN?ۀowM?6y o) Rc/z$]כ;1Kor{nۆ|C$|I`Cm@>ޭε#\KwtKd5tmj\?!%<ƴ!kbN{2X =C8sKhY_kWo g%VT sSqozImK/|VMJtܥqs~.&Q% i@szb'Xw5.N,wEP\yg!֖fcv]UMjHxLwbrux/xOY䥘[׫}[:,hBU1͘;}& y>i$f8 zQun\zWÕC9puFuMQ*֡8֍қKKwB¼^'F,59]91ݙՙKkj~v}4l}+I{.)蠞 "Q*ĴY4M"͌+e0aVۆUc/liBS~]vhO 욈сJzzT~1~ꑮkW`8) ewn! Ô鴿4 g0iP.q~}i.gbޜ*hO,u9l>}:wfhh(yttmi|mnopG,]Rs& ޢ{mNs]K;; ~y(Z,jK_KXhՊIbk(Uk\VǴb,ɏd72?uGnMjfj%65d`ⶲC}QQo!=>w+ 5[wXz:x⩏ky+^)n覅OeY)m ].:CC+פq._Ymʒ4< :4u%̳^Kgl_QzKBv[;>wbf\Њݚfأ\.OΥqMt nMi9}sf\VtfCCZ5-byY?3ј( wzU '&Ced<h8l]awJQigBԈK)$eSTZW N=׹,Uƅnwve܎[N;8mb5.?{#OϐH6v)V!^Ԥ]Pc AԨ%F^Ntc85q~΢CnQO*͸4*koM-wN%~v0ع #yC&hE`@t8~ xѩ9.Mv7 UeUQ݊jn&̘M+np3ѩ+juR4ݚ*^U=Z֓ut5ӱmʰOĹmha?kO\CxZ? *$ &U;)V*ښњyӶNFnĈRWnEoD>7[T>j^2z {McxvnhSooTiےЅBF lOpIeqh69<)o" j2OCG㠗"@WV&c;8o~mфC#w_Vz0W5 fNwlsZC jٛt AIyHRjQZfM4hAؘ.>`8ʈall\a:C[׾xcQ- W'-K n?iΣ^f!KAI]AP+$dZʦ(%yc'ɑ!/naw 9<5Pt*NTRCc9 )L#p(\e_ȃi:_0n͵?1]^75Sׯf`|GڝVXc#iM بVPv 3=}wVFLwzoÇ>hGà2|_EoX5lf$Ui MG d)5eQz\I/t h@D?mvv1>%=,ŁK=Ϻ%<֌G1(PË$ͤI.*Z!sN}-6g!)foxxW$5AИÇWgiG7~T.Tש=`аoiёiFQ 蠓/SyNʢ[V4W#} ?d 62켒7qO1`bb_QI ^ ?IpHDzy(~gԽ8/~蜹/|*i噵ә 9DofHLM|7G "`<` kCX34T$A􇊠>;1-MySMjW+7ݧW;Nli9Mc 1uWVJ޿':j3O\7Jo?9M;+3`$`d/˿!JJ W۩Vg"&hJ#mX>p1E=JjkK=̨j];B2PՓ0MXY.(|6sM RUwnϧح!ٸsgM0u+4Ży _]ѦF>={6T%Жt_s:Homq+^|Q.x=Хrvz5[mw0Q55m"Q%+_:t][6FUG0C$lOeuC|=4dS#AH^0'ў;IK qEJWʊʛ-ulYMHGn dokRk5T2K:4M~$Cai$4ΰp0Xe a>Wݪ RA8b[DrÉ 8ޯ6@(Ӫi}_0-ZU4hOk.;ڊv%ΩTmtgZ7SvI荋xE&-lzU?4UiS˯tDO3;q^G8sw~Kt7oiũ8k2n.yyYjD&kG*MwŏW[Ӱ+uiuhMB@^S64;6 8Xall4b^svʁҢ]}W!nl5{S:Aa i2@ +c: gBu!*gaaA(&A5xCv"sЗvJ#܂N܎ګӰpCB_a/ϰ|zFt..WcE/Z&E܋\ТS szo5&j.atw e5 -8*}Ckɇ[#D:jW-SӺsSTT'SÎ 4;M|x4ƑxyxMaLI)UM `:hQF!ehUC7ҼJcHQSHvy嶄Ӊ dq(˽ˌeLIh.lT! @$~1[Mw..ݗL! |}4(mⅆԛkJ{8oEᮜEJ,SJYخ?G@),eS ziʦNN1usޡ{*{-"C@f ||#]=8xVŧ iZݽ0@]JBumTgX6:-sCLSmVu+@UXʱʊ"R?$4 h ḯ(8]Н?`"ms@h}# 6 Txby TSEB赤i hsH7^ѯiMm/ HsDj[m; WX<~K #!Vő&#TJ)plӔ*3\Ҫ* YuoMB8/XD5rH!HCr.WR cӃ2G6o /M@k>c=͵h#dj.BƗniz4i0+yY"F E(SԿvkh:_~[_ ljÝ޳2OIh(VMi4]Ap`C{*$n2LH痰SᙗeYmAh}ee# veD带VVUJ]‘ޞoժa0&ZM!U!T{`M +(b[C}l G&ī!C>|EԦ.auujU4L47FIEbC*q(Iwz4 *z}Qłn\Cɧ֮$dn+Ų=͘qCa VA5K: ouW\^vC\Zأ13ѩ-$=:! i2nۄc(d@<AaoBQn5H u}`ٹۡUuui"SL-oꮌD95cֆ'*'Sl7ͦۆ;a`7A8:hj75!=y9cj]ZpBit̹U*^'07ߦ=D_R, s G:1g^Wucxf퉻jXhd YT  SzI~vۦ;KUUVUmV´k|.WA]j6ݚhH⇼-mh+ZTćiJJ꒵tulibZ3]J7hP;!} 㻠iƕ*&Fa0X3"HU-R)MIhog V8T U={ĩ^#:T %vծa&NE+s.BɵNh43c2*.Vֵɲ*XՇAkU3Ӻ!drEJ¯vz^4x! .C>N@f)^ksڹ3jmYy\U뉧zC5 B *HQ64@U.Hh%%" FH?jz)&_%ϻDkqplJ8ƣO|J& SZ(!^*&8T+GÂ&J*<(]JdLtxJTŅDÒ&`2LR?OjwLCS K%! *2C,~-'AQkseh~\vCyޛ:FrZZUbW6ah4,`3S.J\jWC ZՌ|Q{)&,&>O*d&J?W M&żI 1#쏍!8Nٟ_*DS (ujq.AJJIIM }N-1Fy iiJJ43߭EjU5"U4m۽R[5ɦ}':|zXu!4q#<|܍ʆV$]8TUemAP6-a[4l 19o<<7!8;̼ђ61W8p*wMk:'v2p_ $ Q:g*AXW9rNaT@IDAT' TۦEC%YtY& [HBt5xXאƻS]וjB]sDL)`;zMY'J0OwWč@|hyx>! 5u6 .MݮK Q cL6Q]bhyIw$ik*};l6έ$vo]U4EdU~W%}wuҴUPFY8]M6yn4Hx4##;9SHo6kb5x2xM+ӤHrZM p&8my3L.-lOjujIUL_*ksUM62վTxIaʊ{A؛! M ZFB|EKo*i|#/90LIHKZ.c.FjѼ i޵JffK^U;y5רD{Q޹!)+lk$˚&% i6|foxآT3t?Ƚ[j&XVm81 X ۨuK$OPEPNIʟtv=9, Pā:䍽L ¸LA/`Teޞn6+HL

) -Ǵ_m@A&PH1cK==j@H!+-K:Ӵ*/f!PZ”LثȔ4zc8VWOGHL";Z{baR9+OG5֙1mqPLi(^ ͊ɷOiKN J%Q|ޤ7L:X0||6ՙKiW:\GcqEB*!h(h>0H q?W<߹Mb`Sv%EBUQwkegɮTJkz ODTUKxE-ҿ =g*W qDLjQEI貟iCjk:FnQɞ  U^ͪLJI;BWDh0v@Hw6xC5`*'xQYkڭQfhk@Us XMP (*2V$ZTt.y(h.S͓2o/_:3ePhK JEN]cQZ>y]ԮF%¤ԪzbV UnϽc>2aMMCԿ| ;qL,MJ[:ӥ$޴i> (Ht^uR}.vHO׶ -}WA4疊Vį_411Cc*v*uTXQ/4Hi Che.M *TvSX9UKI&4ac,d `Aye?+6I٦ϺהtVX-2OU"t2 <(Emײ,ک97Z )m"6#C5aPǪtKjR)&x[}P LFQ1PVJ.UѱA,GސvBPelcOú*Ղ mFMT_4JYߘN_HFe`O i׼RWئۑpӰdsV#tIV6tm$MSJMָIyLlQl艏9&P{_(o"4/V<@aкa3rhTfE-+<xRܸ:|96~8;S ć -*$lvACX<"%W%-UԦD$pD]ӫ=fY5Jڃ-T>i4,aJS熴jS'•師i1&h;GjGf>1GAQ[U|;uV\ A{Aȑyw3Sej#A aTL*S(h8*N.>bD^ 4Ә y)\pi3S:"912?cIZ6 ?R×Ҩr 3u9 @bFJhpSH gO>2C]B[G랉]ӏIHk|Ð$,АPG\9V,־N N)BJ@y7e亄; תq~ LD 0,ѫ Mn 9Ɵ^ :^GrIp ##0lDjL@ioo#8}(e,jylLKQ؝v8 GH zğy"3_Vޗf۩= gNћ|? ߋwuaHJ+1akż|K`x0zu]@>P!*qh緩iTT2`)g,z쉃l"?"CS/ jz!p!\uqKm[`:FMEWLnH{FoBifinհVă܄z%"t#fҨvjթWSʛ8n@GGc+xlK%EL'/5' çyEP:[]x2мX@ӏK/}rkur2)oNJqU=D,aߩwuܜU@!h>(…p ^=hR#~ɠ-뎒=~%&I= [6ib=BvP%DĩúhF{yإ9e:4JC/b8.bN&(/pĉ){&FApxMWA0PWlRQBݔPNy-zP@=+4FyoR+:fջa(QὪTzrS % }E5 H ޮؽ`S IL%*$qeXq~e4[NkSByaIʏxXp׭W1G~Ivk 4">ҨiYOL/C.v526T+5SӳfntJu0k=t{=vhհ9o^&,vbOqxܺPu͂EF'Ne8zpcEΨ<VFs zQ2IqrHydxx%4D"<owo{Qby?ЈfMC=hR*kRuLW :h| ϫ0G ˒0mәā؆IW~3qS:$17.ԛIw'mABK7oj{SF4ߢsd{k/gM+6,onhH:ͭr6t0'A Z,\LiMDgAN;ΛiFwvj[N" i6bz;tR=gè0Onk-oKc\Mŀf`%K+*3ҧ' \h EWGE6bİұo'/8uu[9s.BʍyA~9 .aS4R:t3]_F5oŎ*m\4fzleztDhQ7t1<33%:׮]w}WXW`{E5#[ #Di&CK5FH>i7 ,]3q.E@le"~1/̘~r}O$};Tiu5ݵY뮓Mk%`ia+_o٧JH:ξkUZPW0w!lRH0j3|"3W.=OÃ"5vڶ/e&v8Dnִ#6i(Gc(#t̏f5#aC3 A `0a2G#!_`uy:9N_T:CV]mlIA˶+%m| o!]a) (Ýˏ{&QU? ,!ӈWD1 a %R7F0?0b8"&#\,LcR:ŒaiXF*N4EU5HpC-Pjf!8&KG:zOOg8bXOսC3b+Ii=8:=0LN~-nM6`4#( {SUb6B@ I 3nCyNxL ⯵8ʉR^D"l70EyYԡG?PMCmz`B=i2pHIu謊F`N uU(uymAmQ M+MK/Ct܈o`5>l rHg kHI_s> h([] k][ENyyeleiR-vGUg%l<4rw>xVݸ8G(_ѡn[qi]x.|7]#cqبniG.y4cs䎄9juإi3ا3c?7Vb/|'jOW>?6n33;KމW/`/kZ|굶Nt⟌Ƽ3z+ӉM]ݳs6K2}ZN^͗,h;}mU~ ?pe@3;W٨^WT#)6y7?\w=hY3o{UM޲hVE:2 qx^k"Ow<>>gވɍ?-㭷nFUh-³/Fxy]U3K KX] 7*á=Io<>짢eZ9{- ǿb i3k?8T R#/|9ukHqo,,3z_8hj17ܢ~\<3p].?gk1Ѳ/X4sS>~|y`-~q]ȧ~"~xWg\7bW~Ků ު^&1n<\Ǎq.o}G~3gD3fF +q8ܸ>'OEd,wEz>xGbU6=T?;yuǣ><'WKhS\H31~(F[oĝ-ͦ46[t>Gwŋ1ݾ;>⳱.}'瞊qZ5<ؖbG'cqaXӱp|'?Tk'iehBB1y#Ni,q`@=رhj5t 3me=MMpLvNMmM?8-ICRt݉{JbG}S;0A,jA MREBh\yzvu؄=a=;0VP7W{Yr}ecq"$1x /b0l@ ? b7`c 2 F=.[O;ouW5f[ysN<7o޼yHk[bKֲ.N!{ָlmKgnre4='[|VcmGlhuxsOǹ+Zan9Ħ5Mq ǎn>;?4&cGOű␮_x&<yQL'uE>OgP}KlhՐ1M^v5gL^õ}kƆm1ٓ"Nm_7~çf+ΈTHĶʹ+ɼbΦucj@yZ-{i~Y}e>D#g I3ɋ6/# :R]yVjnHX.GS굻bzxXoTlAn@9_l{RbaÖ1uϝM[ucF#>\LwnumVG>ʾe# nX\np[x`2݅eZ5MBґ[݂02y}ؚ}uYzC&Z4UR٬nl\kTh9GW;tD5fo"H]sNGV~żv2XӫO6\飓23ٝ=PsܷCʦc`#>,ڭC/N݊i'}^덫(i voGlԫC5ghlM6rn-n*;[MȆ[tEd*Uoju(OVٴI=~* K\^N/AxBt%DqikWǦ:bu&ZsYؼz6JPrhgB{9vӨ$_Oy` Fj  }W&cdVݒ hz:}IPF2O0Nn^ mڿz}oI mG֫HO5~ӃѾ}wW]3&U)TnZ!ЅsF]іźp.t.Y^e~9vU{׮/L~i49so}{MEJjX߱;6iF4=YM 9.2ɶi-=ɕ ae. 5!z[;/E- kbzbH۰f͡޺:nj MjTU􍖣/mo}~r9~^{Cv}rD[ؽ#ihBMmufk; 0c=e:*t=]оަWѪ͜߿SBg2EPnܲ5%34рͭ]8t=6s [vM|ŋOnՅD ZvDՋ1ϧn֖jvmKUmZؤt ۲e{]Uؠ Ź#'bs7Ⲿvغ3NԂNہ~ ҹlcrlizjzC8;..qҹ˴_4'WM-;v8{x4]qxݵ/vn.k|VO+6n['t8um1F5\ .vBa?ɗL_3ƿsY8yNjP3sz&SFギڡo>z"F&wاQωu[1|A#`::'t%}3mi}&q\}VSqvDMKZЙ8~nT.Z09z>NׇtʶeW2E#w0L0y.q3-ɐ&woi?vO;b0v#7_2Ƈ9}Wϧu-Q#hˇ#Ol4>OeYuL>5Y#'],9Q}|f:uT2u"6y٫7LJDG8qrV΂dYcwX/>-6r1}GϹ+zrwR#ujÍT~^:yH蚵ئjus|Lblz߯+Nb|mTK =X~9kt\mڀkz֦I#qZ^+Iҩnf]؈O-ڳh}mҨ }sW_w-6aK^hfsLe8XT}[N7CC[KVjXy[zvBИN4|˕ *%2]y] nVi] -4DZ-ur3j3 ϹT}LkL1E`&xT6U.l ѷypViSbj:QQy5,6y5t)óz߮7[iUrӛ%k8 ղ 0˾QZ0CiV{bxiavJs{Zzѭ*̈cehΟqGSH,6A83η̫,CVӤ5XW[QhLz`Qmխ>P^,ځ_H.FӱMsGzt*[Ƿ_zzjo7sC<`zo^\s`SWQgu7|5t2w$cS*. 3?r ; fe' =iTڅk: xEB"m];J\(T.FYnxe8/Xӯ%NΙN}eAkdL+ L4KѫzgG>Ӡ;Hף[O=Ɛ2HU2g\;K^ʄ]6<3: eW-;_,Pz3:y멖ecJ:LSuvi1zLu#O<{]yӱF9|l<ܹ7`l4"HPɣ4G錃u,ERa)qَc|gKfr|= ic]]14ӭɻ!<,cqq.#aj.:\^dL|WQ9Y86&끆 ?? 4DZ?ܹ8NxUuecpVdʫ8oλ[g3:z8c\f]8X7ؘ|󌫇129FzeUuΙ-1>&wY曞岌鎳e͸,t.z.;mtTyռuU9O8ʬm,g:'ǃ`.Jw@sU:,4LGO&rtgt'\.˴f146={'d<'o>*<>_yFz,e3fX; ce>ixgl,t8gΛ㖒G eOl *^e:g=YLU_ˍzsYo8mqw1-<0g]WuT1`oeH/ m=U詶7Ti|\yӌ!ttb&qțf3͘\V9MRv‡w˫ VbEsbQJ0:29tK3?,V*NƸzml 4~L36Ӭ˺y0oZ[oƒ,oUwv42Y&z`rɲgjc9ȸnLUWcd=`,OlLYu'G4bd-h I;X~NsWc>4g\NWëM*cT˰*g]k\gY.3/ӭ'F,7>rGrs19m|I1ȓ:ͳnN\YŘ<ǹeQ-t2vewƚn^PoU3 %{Awau1qoyc36f^N8;㜆gY4L*yC<u8i8<3N2t=|=Y*ezX28a`8$xCl< uL˱+m~b~Tez-S2XedƸnfʶrG&c:8e"qi limpu7wTuf9w'lrH墣}o~UyN!*8,O}>gNC].q`<+#$=lcd3υ]ˤnƘFl|n(.3YOdZ=hՀL<<ˏe}‡z:.g9eZ=y'.c:,gze &c]UsYw;u8Bj.:e:_ՃmScq1n?U^*ۖ2'GBXn -W: >ع@Xtf};CxKlo!CvKᗲ e8R[@G: ?6|=̷ 9T|'9]n.vl䪲WvM9d78HfݖwYj>3zGyɑ׋SiE6hp6=aI;OlMw>cr:np.#71Yibz[qXcs>Y饂hБxl"̿Wq5<,Gt̼\,4ۃ_9o>C.4㬛iU]Ϙb[ }?sYlic3Cq1-*`@lolf)#Q9p#y#v|Ǚͷ]Yy+wX_l\.]J|bʾp.H[} -[ry2Uy㬯ʇnc/ƻC8KY1zr;Ls|\ Oq_ Y9 MGu$m;2f !OplKc oXA ~pc]c`Ъ2qKm2r̫"rq0qoz%ԣz:u c9ttb:t7Ӆ4H#KpN#gȦ[ʋ׶lE޴,o~ .1U9Qo9z|c1jqpjem]NYŀ߼ŝQ`i筘X++Cu2Le粐erˁg|rzYtY8N~#62oϴ\OhY`Hhn>T:6>|Pfݑez/ U2|IժfFinշf;Zhu+KБɎ_ZkЧ &mw=Hܞ;o_7:X9X6fA@@9` 9v98_ :w#p:s'y9mΆg跾OۮuvhG}zRlU)G_u}Sˇm|Ow7[ڂpR_Elg=K'i>ae) =m J_B8Sz7B|W[׉Kэвo|sl=ey3JzQG.gR:Fu8e,` &dE a36޸71<"U+B#G_Y0ݡh63mѿ'&Ovwi_k>R]b]>z^v\[oHpq}]O3m&jߚ8=}6iMÝk./h @ݤFFEg␶)&دO|$'3(?-oc18sX[Ь('yfQimuC32gRVΆ[ֆ8oݹ[i5϶,tSeݖ+*c>_L gi-o1rƹӫy÷ЌG^Ӎ@L NtihdVvNMs!bGĕf>UQJ6 v&]Y p1]GÕv}<~lnM8Nk7_} E{8r8&yvjښ)TU}T+.Xxd5p{`9/eMq$*?7 =趝g>yҎ.u11ȹ.ƛs qb P-CNCjp .U^UOgU\;]&b340|I,3wdrp٦oy~YָU2CbB= 'c抉\=%7. sljYeh֞V)m:eeiҾ=T6J횸>r!N̴Ŝ?0\&w׵n;udJ}Z[ԮSCqdd:z:5!|U[9Rg@!񤝯2S|l2U=2|hg^53=gd=}cHbBqE/7x0[p|j+Pf=`d O1/M/+xG>0ͪ?d'mz|\<[tC>tƐ2ԭuSLCzl-5mw V,z9q](nmѾA7ditR vhȉ]]{S [Ә6s]YL\ҞݥmHz{_fQ~S1hՖI˾?X q`yKvPN[۳?_ 8|ڡ1BU L')p./\PE<^=5k,JW9_}rG?\&d'm~ @LСlyu,-oLIuհ:) >?,"|_ ! =:OIk"Pq.4䪘G7N[>c3(Zլ[ym II{1_ PZ4WҤ@ж#8lt|\hC3Rmol[6xَuХSV)tծM,.i]=VII˯ˆv 1}9i9>Lk25lTCg?_ "r?dI YO.'Uۡu8nm#~B@~q /(pa _|1>O/v04&^ӧMqO[^:7YK@٥\5=ŠQ-tX4V{yNOňvkuqedLr]pסͦoUĐxիǨ˚ l B?Ϻ نx@Y."Og+ѢF_ Pq*mxG{m:_3x cEX|;i;]Q Dyț[g1 Ek`KܷwK :^:mآ۝rTgzػ)=u\O΍qr1|/kvmW{̜;OkKmI{]iC>}{-qMNi\]$]R'#d??>ƪpS'oXLj{ThN5+uDVvN7uhĪk?ETK qS{:7%o5iЦc}0>@8ǥ1ׯ W6/jf'-[U ]=GNѩMp^sW gWG\ڲV$t5mUrC;uGΠ)m:ϖjSӂUZ$֢ɉf5tk1nզ]چU:c4uEwE -]_iŶFR2u;oOjoڀr5.La޽fSl}1sfsض-.щu7n5VGZ93~y篶q-f^w .[ir=ٟU=KP т£Gt۸:ۨv'n=dw@32]QoԦ $^)nvK _ׯakݜ_*I<׵&(Fq"4~M{ `Wqtն/-A7F:m>DSXʯݱ@z nQUb@=en>\mط#:4~D?:M =ϟn?zuUU?G4=ԶKg8x+D{߳{Igmq]zkiU5/tTWZ0C' #7WUwlƃo~Km׵->lLDk.:4ڬhTу1>:=ׇ^.4;ߺMK[LimgGSUG־8NC3zރy G_SC(WW^%O,ҙ@]WYF`jsuKe!#%zƖ-tF?Szt1$CP7+1ΞN;[8z#.k݆X>k[G|} -ꔧb8?vƢuآki4v<Loأ1Fc*ssΗzzgN`+ھ9Nkb: ww铟'm[cx_۴wkw?=-q6߻3nȳ =q|gl9/:`KC] :`Qn#u(֑ȯJ#O@ !nŋXGؾc{޷㓪nG7C4;Vtbx~ Zj~ҐZ,qM޳%6x{l WHO]n[16t&X΀=㱽k#qڪxZ5cZWao<v<,88I#mn߾=J;}e4F5gФ_ӣt}{ck [Ȍn'vEnZoح-"kɱqFkߠ_p ǵiPh9}ngcgGٰ*Uhp%6[̇NЫ*|em޲F#Ir1nKݫu۷ձqXIӏǤSiŅFӓ]DFZۧhGkl>qLb]sV&'F|t|&<ïjqݺ uot񳟌uNg=5cRuX7ضE|;r0VGh_7ֵőGbp%|06\=zMsúdZJc:>ݚi\rqҨnVu<-lF^CqԙxVzr_ih~;unPb?;֘<M^~Ls3壗"zuurLirYNguxVK1qX<|jrĉxѶzG[S&SPYGቖa뺆ȃ1<'W=gͺl ><>[hdsl 𳮛4ҧ3OxP-+&9tLiD1Ku"/>'ukz^Z_͆Yr'cێut -1>8F$;zbz29ץ۰ uӤ޴#:4o>~P(s/:QUCUwK~-ع]S[҉~gOiw$ku|by܀_(qnJ#5/xU&PYUVŞqDq³ظ^D׺zUsj`ԡxN[[)fֹjtR15ZAWV]qy$ԋpƛ߾#_||H~,z_W</Ęp̩htѮQEuY0[f_$<=hJy FY>Gm(fMӽ=]jTƜlbъMt?髚`tvGmg1= xu76{ oqfH\F=k$|c5`&ytM#Y=nGrx21!63LX!AC][Ltw|Cg65>tؘxe`NrFbJO14Se}.S5zuhD&44OX,DLG#^MGc}; I03`iNY=͛n?fqqu shwj3RۣϨ+SFiF˫˹Y94HA;\'0_` @(+v0L1ޡ"Y*Ǐے aWeMѕ4a]naY;j *WφDZ0<ӯ-SYr)SI)բ4bBNT!uu0 Z]_dNY./J^F$ by } XlǻIƒ7?gj":R` 6 =˕ M²crYk|`YOi,6L%48dc@GyK(FITXpXx\[Od,)~euc,i g`Y|/0!,}MҖC%iBg>C/eạۼr[/˺ NM02y{D:6X+xSN={`!fhhl }6o\K7j1V³ V 1|. Ǫԓ19k| . .b?m/. ʠ-*>>, ,>y 7!ǕmcMbP&<|<~rn<駟ߋ__) 3LyOOwwooOOs=opio}[菊??[t8+'~'CPwMMT2p8黿??~J~s?szyq8=yO|˷|K}C?C ~8髾B UX~0x,O@N>O}SX/\OOFD|o~㓟d#NT^eKW}x;⛿d}g~':o:-I|CCbrRs|ݻG~GO2,ˁ44' z1>Npc7mTy0`9SƒG'y}tԇV,i}E`r(f U,s  WL% f^[jTg|NW_* 2oWNHgHg?[O6뺝Jmzo'[U٦*^>slI66:Ig霿</$!09<3: :L,4&p4< bcKUN ~ z`s'e`S.j@xolkU6+Remme7m82ybQqVۀY|شmv U?r^M{q]b v~|7ڧUlzu9X)xlH[ 1OBix\x]Gt\Jcn= A=,@?=ˬ93̌c3OcHgmgjc9ec-k;N6r1*|=le9m?,%@suel^1NWuWur֣!_j NXJCĈ^yF"1'{2x`X:&t7t=4ls;ly(|WXꑱU7,e?NG*62W\uE˩b7|U~X0UKUo=>~Y 6}K.~_\^_Xoe.;U,y%۔m616}۷}__di1-`΁%(c; ˻Y KY< \F6,ECa?s`Yn^Xͽ4+YȒly?Ϭl^{Po\qՋո3ߠnC*PrɲkĽ'5ԏn^3C%۬n]ű:913_\gBBi8PB6p _ܫ/H!f1_Ћ~~ PO^XcN@'6s{N`^|̗Ur;ܩYRpl8Fwj/,>39_iO|Ϋj{Qn/_r~ZmBcʢ\'5?ۤwix/ĕB9y<x @ "r"Pi C ydqmDOX:~4QkƂa/8a/պRtb r_lcB ~(cr+#M_T ]yY_p"v#o22v1O|C/\sإ\tyA6s/&3E2pK܍w}|w}Wy+nƁ܋^j^Y- 7G[(p/om/p;w;0*T@||ͲT_EٟYyaoY+q[Ќvrk\[/'3q_{/* v*\*zwn:iOm_wu\1v:N~.KH0 nsK;{JϽn'+߽Bw<{y,]rrhx`cd`၆Vqs} hxf%4 4<qt_ht0wљ U 4a7m'j^ͱc[{gP-̽8g׺NtZI`F//OS\sQ^ -W7rT*=hm rr ~im{{Xw_]˿˲%ruy'm9WG6/[F`̾Kz׻X{ _IN> ZlrĎw l}lc ^ݳgqp,WL[*?~זB߭iك-o}[˾q(;/r+-~XVt0lKK˲:eGvԧ/{|Vr m?eEoXngþ/YOZ-˱8YJ*D#[nCrzXʖ^bWr|NO{|iv [Vm^/ne.U_//7{cWkY/^/U/F1LIKAoxW~v{ -Q @ 4<*=Pn|*u4hxၺka@K9ץ hxu$05lx$5,nxu6.WȆ^_ں-5mxuWܽ.n@ ,`^6lxץ^μ}HL;ݱ}SgnCoO]c? xSsW"vzUZwlXmbnS$'%:g_h|/Ƶ»^B|_||  4qzW"/t?/}ֿ́s`?h3'ǣX'xg\?t|/Ms_ 9ַ1Y,Z&c{mVd̯_Z?mjd88)k~s:Vmx/fMc}I-[;o<էQgECo7m]_wcj.f;E_]}ŧw?W#oK/'{1G}-[e@_bǚe݁`o|h%c^inے'{[sq}{FkLߋGbGҺX ;tlGc_??hy*IhWD{~)ט}ws ~:D?g\`52@sU:loo JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o I~Ew/U)PJ?Q] wo20J_.QkA3Bx(%y%٫RvI_$gvIEsK%YTpCn-$w$IrBх 2$L2Z0-}Sz-gh)3|+1Es[S3`NEх0n=$.1xVb% I^\t!;bG]BKo:4<1I. $+Zp-OX ޞI. j7-`KI;m$;%aх X ޒ2ZqǟZ I.بIEhT$EplI~_t!Of4I]< I^ƂئWIv/INrgхlh ܒKMrH.F-ƦYIQh+%g$]FL_cхoQ]&%hJr{yECdY<\t!YcsK3Jߏ"&G.^{@SvKroғ$)\ƷJz)/Mr^{QTEuIĴ#me},/EMx XN":JrO E&y^GEt|!LL-8kt$Ǎ9`4$铎&yF')#b$;?$~INd#x.Ft+RR*MA@OOO{#$(@KKS?իϧ>!=W_%&[ԤRپEjkk3cƌN=uKKsS[ip_qP?p΁tuu+6lscpά[>V̪Urec߶ի5xPSS-߯V[? M=j5~zUEjkkS[[`o?J%g=v)ӧxe0JM!9^Z͚5k'+WȪU|}z>}Ypa,;sO,; ,c=+r*:;t FriӦnmmaV0`֤o_[? yxt6mZRr}'O^/[l@ `Ypazzz|`x<ˡiS;d29?qCEOS]]m+裏QGC94gbysG裏ё{キ?뮻r= ѱkkk6NO!|]MXXWῤo^g<V0>n㠿~y+ɫ^uV,g444́ؿ'[Fa7}FU(PWWɓ[_wˑGY`U~-irα{VeER_xS_dS(uW_ v4< w.pSFBmmmO|:LOOO9昼=Z& lT*eҤ455m?{p‰9cg= By7o^N9$[:x-6xJoo 477iRj5/}կ~uX @$)&5Xk_s̱;wm+6 ~ mK6[t lbJ9uuuKcjjjWF .MMM夓NYg=ܫ`T*w}לoP?SB %}BwwO \.\.\.T{^S[[E7ͦ|k"&R47OB̙rYgS_I&X! rP~{ p,Z([cӺO k޼y9sɯnCFRISӤLؿ_Ts{xÏ(Byr9|3g>sƏ,Z@VZ-͞o[WWWИ44ԧ!=666dʔ5kVfΜ]wYvʹiӊmQOyuuuy{.y{Rly 2\Z#I2gΜ|_Ppe#<GяM7ݔ΢K5֯_o-~[|!9ꨣrGY+H)uuu6mj*rjjj2o~.k~?.gL7*7y/~ yիg閕BؐSZo~K;BK*̚5k|:Vwww::6tN`'﫫 SWW]S#sG 2yrKzzzry[֢K*M72zיYlv'ioHzyJ])Jԥv_"/sgկ~Ev ɓ[6{]2au{v {{{ږWfeYvVٰ3k׮+#Kr媴w{= rYG<7_a0”JL65MV+W rʼog>=kt鲬Yv j Yfm}X*mm=⡇??Cg>鴵 q r)ӧOKccCJngys[tY򲗽$7x^ggWV\[COv܆ z2'~aNˌӒ>4iRei?UYx>ѱ!=<֭7|hoȲe+|ttt {/?"^aWWWv>?7j߯VYzmV\:;;r<ز :YlYω'ŋ o+UmmmO$6mF~㟤F7ߜjݝWݓ5kfeYvݠ~myK_o\!aSSS3\.)7xcLRtY#o[A{gٲ€0)9-o9-˖-* Jr%7pCvyq?pַI?&V1۴ҥ8/z `Xk`l0*Jf'?ifϞ]tY#+|;jժ\w-[7Wc +Wgeݺu#P!c!U3cT*tuu?awߢ*Ĺ瞛;~忻[?[ݝ+We򕃺}_E_@u%L7dÆ\~砃*B\s׾Yn}VtvvfٲYjSsN95^} IDAT'?.0$JRf̘ttl%G:ꨢ*ĺu)>>֭O;c˳~S+q_ʛƬ^z`40$MtvvwqET/|Y|67gGUլ].˗|#?r챯Uh%`577!9#H%fɒ%W/m M`9rWPeFvH}}]&OnILԜ~WTc{]YvWx7`w#';0ZnJ%ӦMMttlȕW^ɓ'\Uq.\kzfժUå/ޔ5k֌PeKTSS.ѱ!_r]VK^2 p 7c^{wh˔)S[[zk7 ݝ/lﵵgÆO ᰩ}YxQ?UO~<P$O[SӤLԘj=+_.p_dƌW5z[6tnsE"6lM9cKG2ܔT̟??vZ%*K,b߶V0ZfŊUT9x- a#IԤ)IUK.b V^>s+֬Y[U>9ԩS*ݓ~_Ν[tIΪUjo֬Zz>C9唓CPCI655MJ]]]dƌ9s htZzՀ]]VgioȊzM[cTiiiIttl%Gjjj jtzjXٹ;,^(r0[Ғrj5y ^<9E4jx-`,βe+ٵ{ .̩˗P;J*J&MjLttts?VpE[Ku}wXջYOk_{JV\Y@e[ش~?~Ռ~' xm?AZʕ{ykO0 P7!' h{b@WƇ' gA7~B`J$ɳxW4=\.T ' ~;rY0FW.4)IaCg>)avT+˓\su_>Y@U<]~B_SӤaVpEcüy xm ѓ^\zw O($IJRήwW4v̟׵5UB}/~^@U $}W7]sϽ?Ǝ߿s" SjjOwwwo{?TOE@uYW3477g=쫫-~j5VJww֭i)˗//2ץR'''|r=zֳ0VbŪo}B %/𺡡J`dU[7#G mƾ7|; flz_6RI}}]ʪUWo- j;+ZZ&稣j`dutlȚ5k9ȢEP[#6o?R_u}{=1я}ne$;~){?D ޴i]Rt,ԧ.cL B]]՜jڋ.ay//oyߜ/_ssSZ[۶X$ ʳ{E/|a9]r=?sL N}}.a BCCC;r޽:(+VwIMiiiyo~36lH)St L4)]gm8VGJ 6 ʝwޙzvemo9܏mwef7k_jM]OM>-Hy˹~<[vm8\qY ڎ w]{R)ӦM)"Ƴ$Ɯp‰7w /,"`|:#O 3g3>MM l4w2g> p‚*#'apgo֚}Iܜ.ʀ|oaL`Oà6_—2`VEhdn|T0e_2|泟עˀqe}9|0عjj*1czVX9[;F{$oy[sM7k,/}˲;X0Ovm7({*~x;`|cM72_}ښL>-+V+Aҧ>reۍY&G/_TpeX`򖷼2\t9Sѿ63fLʕi,t$ԩSs˙gѿ磌SN9%/~K W٤Io};1`]]]viFjjl$ɫ_}}imm-"`<0`N6mZ.?n _SSN;H}}}A1֍;?MMMz!k;D `n.˞{5`\ʌҜRTLqYc s>8`׿oESӤ̜s<&˻׽9 t e@~{rG6{r&OnIssS֯oMkk[jA2ZM޿_?ߖC9v̊+ښmPϟ/xA>> wݹؘI&qӧOO]]]ѿ$"x:Pʵ(\\x=̓u֧]@8'}Y>OzrYdIxaÆ!9׬Y8<;7<$*y3{n{GfΜ9$ O@mmm>sr챯gm,XgrL_/X䤓NΗ$In?ɋ_BV;oz\lH7meҥYtin~!V9sd}'k F8 ^\}Ug5ӟL) ?|$oz˿K^CҥKs?a:::r}SLC=={W9<v83w̝w̙RtiX"+W˳b+V,xK6*9WU:.W^yE.೹\R֭kM{{[XHy󞟛ne'?W`xY&_}}3gzi r `;y睹;ؿ;;s^{ICCC2fʕ˗/bfWߖ?/ [}}74ԧ1SN˔)S.'X~}x,Z@x٦rO<)\qE_ \RԩҢ#`"@|#ͱǾWҥKsWꫯNJ9Csa#1 `-[,˖-˭:`Tʮ9sn̙==$mmmYpa.? .,/̃.ʕ+|Xuw~khh̙2k̜9+3g̬Y2k֬Gjk`([n ӶhY|y=-J%'|rN8w.,^h2er&OnI[[{Z[۶XPgzֳrΕW-x;́XpePjEeѢE˒u 9餓x a j~8?pk&555w}sG#s{DWWW-Z4`pa@ǖ]C#/m>9??L6m 6 x`x`aVXQtyCRSN͉']%KlRIij :ږ*f$PP~kՕ$ `Yti.\|ř:uj^WO1I&]ވ0xuwwgY`AՋS.~ml&O\t p䒯?jÎʽ>\~wu̟?? ל WV?1zk׹hr?555yk_O~M.{?|pK}}]zzzږq5`dt$ٳ79\$W_~s;_|krgd_C _|?;_ZMOOƁ}O~@ٶjŠh4o3ɷ|]v٥mÆ FCrM 32k֬̚ƅw]__?$m;vaYlY.;~xԩS lkkKw<$935k˾N{KUuo{>я=yO8qΐ`'g'c5TR[7G655ejjj3|רwtlM?Q0H MQiR&%RHEz^EQ,[@Qҷ1l’d9\v]73w߼ySN>rv1 ?,D"b1$1b1b]3~-r~[nC=Tcߏ?ׯJB xꩧSO㩧“O>'xjluᄑwni2$ocB f¶m[ {1;-;GXqǃ۷94z聵k FHiРN8!th4ի J* NYPo~ N.>V oL_Ac=\.M~ , &d4[VXq/*Zˆs?*k Ç>bH$3< xɠPV$ Zl-[ڵkX~mrrij P*}_?7o\.Gll kо};(m@ d‚ df  H$TJT", vڅu⧟.v6 D]vņ N<̙f!"lh@h%$$`޼yx7ND\.W!V BJw͛HJJ¬Yk )ݻ|Zm0l.I‡#;D#y[zA[nرc`nݺh4j=\jT*v튮]"-- ֭ŁN?Jjjn"W?}ӧ}dFttdgEHIOOǛo7bҥX)?Z+dl6;s˚qaع)ׯ?nd^o@ff6nݺSCk7-ĨQ#Ê}]6vދ]`]6-Z35j4*TPkE"T*%bccP\SvTT "3L:t(ի .gO)9Ndddr1ng(3[V+皓d6[`0X?nݺ-PFyƌC=Zsȑ/+ܜA!Hмy Z]驨Qf"Cr񈉉B![Rz2Kg0Я_?$&&ʕ+~/I2!lVZXtЩ Av###߽q\߿=*Pf-v4|222ݹ#\`ƌTlڴ=Cطo?^{u(tw}C/T$AP &&% 2RMB0?P^=\ .V !q:8p >oKƽz^LӉß0K28Ipa\ zꏱ`|WNZe)GyÇ GZZv؎`I,CVAVrb \ 'T卵\3"׋9sظqm xú 0۷=;oT*S auVVV?ݻ'N{۷ 'PN̜ΟWifJJ(W.P*ԬC\ضm4i"XA]vq3*)ۍҺ~cU3ˉ<Lm>}OR IDATe <ꗞ=Ɯ9si9xdhӦ-֮]<ɓZjžG.#::' **ryGZ{ ӦMÛoI{ !NBݺu? BBVV|-ؾ}@Yƍ_/Ÿ•oV NW&cl6 8gGΝ_Ô)S$"X±cbРx|G //%h+\.zqlqRrׯ_G Ct:a0Y1cF_Z6ew6hJ*ؓ'Oջu6={-3?8F~HÎ;]h|}~*L z=7o5k !Ghݺ5?.t**(:rfw]Rzիs=Ljr!@*-\xL=zK]˾OLLĒ%KrD_̙/b%HLL,bLFŀJpm۶7+HfCvpUS@=EJ!,7WySp,ZP‹H$ˆ#1D F-PF$D"C?6l(+^FM\qHxQ(HJj 6̙HI5k:$Sp e} ! effUV:pBENN.q5 /M6Cj1VC_Psr >aCEEEaP(OS||<}#- >pj׮]l1@"Oŀ QFa65DH8ꫯ ~_ !W?Á#qN=ZU":VlHRgb4nܘ17l؀/D?*T$t<ӧ/ه3g~SP^brJ$BmXXtR̚5K!:~8v*m)ɓزe@ƍvڌRU-DšmV:bbbx3;;ӦMaW^a7$ʕG^sn9sӦMG +rӅ_1@-A$;v`ĈO+C0Y)S&~3+HWW^u3Ra05jbرKGBBz;v!5u6|&B8s t%3g,[L* ̈z$ Qx[.ZhdP*i4)XZMWؼy#KQ?‹8t۶mǹs0sGhԨRiU ͿBoif/& ׋aÆ r2C0b4X7 {ɓ'(?ui|tR**w\xys %SN?$$_LL z-l޼_s/[|/LJf1@@߾}q2V+SRПRz5'#B#<=z2b) Hsbb"oc8'N`֭;6&!EB.o`͸p"Ν&M^)b@BBhg p2\,]LǤ@l˗iӦ"A4t0VCKR"Jߝ$^Ƴl- zCUdjUͬ)L;ӷo_^ƻu/^Ĉt:5FAkpe,Y[fy7T V(wtYߏm۶Xp!lذLƢ?0e2Y7 ׯï*PF#"":P+@6$Xm/j2bÇ@LL /Zv풰bŪb@˖-2 ŀ`41` BBC"==qh^/ ##r0q2 /m۾5k1b ry{U s_s=\R;og=SJv풰jj\p -F-3 0e`ȑ-@⏬, >q*1}ݷ8t@dVp@B|jٳZ={x3g`=`|>p!kp%,XM6+tan>.={+Vu BHh۲e ]Tœ^>pҤv /5kB۶2bRTJ2" ""ҥK8p`?#/ᥗq>!@բcǎXvݿ ,тŀxBQi1@jj*L)˅T^Ǡ?0r`6[7n`ٲ=3\;uSi!ʈ:_"ʗ/~;ctƞ_Hc=, Ey tp%̝;J+D@2|Jpc׮]}>!$|_׭D?T 0M ֭[e>*V^z3bbg7Br>#F,yI:u Geb1T*ct:^{ulذ .\sиqbʕ ٳgrp80sL> hbĬV+L,PFeȐbbƈ=SO^eiF`x`.]M[p̚^zŀ8n|233vZ^>VZۉ?DfN۳g7N:%PFCaذ1HN#PF$) deǣFѣG?_~'|LBQtt4|-lٲgϞnjа>d`X,{BdZ1g^>&CR@7b&?eGxG1RYl)^|j֬[p>ŌӋ}ͦMw&$Ġk׮ضm;Ξ=h**H$w{ ł%KptRrTHҥKؼy@4Od##KIQ>Ռt=_7r\/9bccѭ[w|9sӦMG]#E 2Rrw1UB`9\* `00:~y] q[-Z@z1LKs7I&v_ (_>b7Ǐ9LB͛77p?T ,f.s6a5r@U}T*JEf_}{9s83g6#v`63f4ʕ+޽`Ϟ}8}GLB͚-律\س{BuVN? az%. ={GL&gĴZ5-k C TQF2޺u?0bF#΢߸qfΜK^ˣo߾طo?N:T^] x.شirrrJ޽{Kr/;vU艂dao9Ç QxѿFL,CUD,Cf77PÜg6p!!*Xz[Ra9ύpSB?a„VZ0rpTVݺ;wl6?^Z !o8rgGe?%R$Ⱥٟ4)~{JTJp7\T*1l0^[r<rA/!ĉ{.#$\;+S7n^nn.-[ƈ9* !`Bz1d|WIH{衇0`@:?1c/VEϞ=Pj5'O,v%!eiϞ=%APh4fv^pn߾-PF㭷'` d2@jXM"##1p{x"̙}Xī\=Q\.'MEBxTR%#5j4}根ظq#:vl:ujaʔɸ|257oę3gNB  &PFIWаዌXDDJ@iOѫWo^ƛ;w.l6f9N}ᅦ+W*GBq9 'N}gϷS\3RQ~]̝;XAB)+d}j5~8)(ɬ:{8 ~y+>tP(?yfFb}$jgS@׋6mj$L͚0u4={6lD- [,ccb!ˋ|-!pj"-T_Ngq`.^[YCϡs1D 5Z{GѥK^ƛ={3xޖ}}l=/°aCv;T&Xh1.\ #11R(rF#!!jVBxwߕ3{?Df00Ng5#=z4k88_8Td2(ٶ#G{^R v͈͖=&X,{n۶ݻk!T*t6l™3g1yT^KDFjQ\ʕ+wD":0t*UM7s  \5`ر=nܸQ!܈C^qA|q >>׊D"T*!..J•Ǐ\T}1ͬk֬o&PFcHHH`T*%ƄBxѣg1T99z{ܹsh֬)_!yG0t0|ػw^}]d2Vn' !K.3&p/ˉ e>T*FɊq4)[:BC4jԈOθv=0d^^/st}`>рaԨ%SVm,] Na!:D Vr峐I!*6S"nwnؿk|ge>tyO? #&˨SsS*>Wq;[|=h*|^YYp86n܈֭[ʕ+ONr1r( Pj"_T*8*:rJ[)z`HIIX,ĉɬxd$F"-[Z꼌Yxr~x<^de=/UؼyyB!ЩSg|aII!F|T*Ed@HnVð?+ QhԨ^~eFL*BV ))JJ"`Ԩ1wa;w3?m{kjň1`0D)5jb%HKKСuB@2Ntnܸ{)1 Jmܹ3ʕ+/`fo„d;vѴMbrK$Aawԩ3x x<93s8 x+?ƧFƍ}F*":: qP(@!e \.i֮ ʗS*|wg&>6bbb8jb޼b68N@FFl6}2.\Sv.UZ6mΝQNJB||, :ҖBF :yLP`vxZjXbš_zHOO/z!xǃ Dcۑ:-Z4lիݻbÆM\DDD &&11ѴBxD 8##s(ѱc'H޽;}HVXjpK!'9KNNxxЭ[wFL,λq"’"|v5j4/7obÆh 9].23k(l?7n•+WxȐ‡H̛77o?KR"2RG!@8v^VX.PFCa>*C)0=_Vm4k֜f1vaXy/ ѣG+=z2228Ύ—FѯѫWoRZ8:2BJ f{yHO#PF!&& f}-?'eC.C.cǎe~ ;v|ˆ 1_ANN.sJtrƆ Q~]|a  j'O{㏳~_" &&QB/^/ #f61uT2 }Ã>Ȉ)B t:Dԭ[fΜxXv:Zk0͎L%oZbr*djժ#GĠA}dS*㥑*!**lvvFl8{G2 22({Juc*0fX^ƻx"> #f0ֱ%zUϠB!G&aԨ8t0*W}T:BD+ވW{^?>(#vPZuF,""*:_ ۵K³>xoV.9NdddB/Y@ g}㓡f IDAT 3D"DFI[!@xrGsg}62 "))ZnʈJd-YJ#0rH^;y$kFh42м޼>#0%.(R!"H0p{⋣>W(JR[B)FnLB$PԮ]Zb$14@s {뭷Pü:qmpћTBIfIڣ>}GߓJoR*y^~FF͛+PFcܸF ZD"aT* x_~Pۍ\dffaZ|2ԭ[NN!d6m:-[:jU$!**QQ%B R&,+|ժU(<<#xijHsE>}x^3f2bčDffrrrKtl`>˅}]WѪU رNgh $Xm*:쳷JE[!0*23tHN(P6cȐatJcxѨ!3Z0`^۷o/._\p&|f}ZmHOτ`,q|ϟvYHOO(KBWyQ8p]ve^% 9NX,ȏ_~@( :c'{CxG\.̚53-d2#==Fԅ ̝;uĹs8ʔ\3faѢP"P(EBHʛcvNNN<{^T#&fcߴ|ի7/m۶ 6\;Ǔ"n NvB-Ѷmٳ.}(ڷC>O?ÈD"DC怄FR<kyUV QxqYqZDZŊ6uf5v;Ν͈LR?\`Sϟ,2%c=?EvIߋ]M! ̙fVyZnkfĤR)qDհf{1t֭҅[[n\n^ %ww̙3PV 2.] SBHi( ,ZQ:GBH8Dᆀ& ӧO+Մ+)TVjZGT*yȑXrd2ah-\>d;7o:R:bӦMyVAd$Y!$]?fc>d;Ν;+PFzhUFufV֭2ފˑ]prX 6(SЯ__ԫW-Dnn.'K#FćNbj#ʊBA"Șz7nblq#j/3 ""J=z f 999Xb9#f0\McӧOC͚1bpϜ|.!͇T*eĕJ%bby&@D"X~Y@z}eD"5,!=߰xFhBƂkZMCJj"33 YZ%m66oބ&Mѹs'>|6R:uꌕ+W*rDGG !-*ALfiӦdM> <ьRL&($|v3f,/ݾ}k֬f c&p8/89ѻxX`>n޼BYشi Zf[SOBHXe=cyeZ>`8+NOHhժUxs΁n/p8E|izz:rrr9p ̘ukSغu cu!'Dll,#V'!$Qjng>Ĭ\@nݺGed2 B!L H0j^غu #FeBFF,nx^8q|0 ժUテ/u\*!;+WƦM[R1P( !$tQy,Drr@لT &:!jΝ_?xfb<ZV8(Ӊܻpsܟfþ}{ѽ{7ԬYqN>Tre,] b1 ntt$K! $ 8.F/ѣG(<4og$ jU @^rm\矰g뼭3'#o;= -Xj%Zlƍ_… ?pWbҤIH$BLL4C IT h4bL~[ĉ)V|;1GP/cΘ1bp6L= ^S:um۶RTB8۽з/tXhYH 9FFLݮ]?XC*UбcGFL$Ae?@RfZ- xgΜƑ#\{^bAvi&_q 6UVƀ/_!4qb ZhIRDGGvBB H@1-p:3sAFF@ѣDzSUeᮨ;:V+ӧOg\Lf:?>Hx<Lfܹlny݃nݺ x"c.b1-Z:E.!22R!{T Ggv67>}@لxÊGFұwSUqqqׯ?/;v 'N/$f~-Z4/7¢E _!ITbx衇qJI'BBHq8Zmp92 :Y.V+X|ʌ#)[N=W\PnmZgl߾x_:Q?BHHo2 Ab„#F#F FfUXݺueO?ϟ/vܰX,żȄd漱Cj8p=J $ '|31XH] AnvC<;w Qxx7O2bR`!}#Y3g2bFT MN wd ++-6 {FnofHIK.q:!]$n݆S*P*i+!$Q,9S5uʹ/&$:uT`8hO? :tx;wիW N'k[ Mvzܾ\lv ?Xr%7o_nٳ?¯ SI[!Hz0 Xz̟?OCbb"^z#&X@Tsѣy t:=#F`0j^/VspN:zx\9sf#117~ f/8X̘1ňEl6;v;#br\@'fj$@ Gղ΀]66mx7n_Upm;`s{| .fYs'FW^żysѤI"^z!fΜq &ZBRR{FLEzgӉ <,^ #&Ӆ*ϛc2jepr7 o,fx<ǹvϟW^i_|3f˜CH0:u1 @ VEb?rs|$&FRɈ)J^*}BbbԩSVZke$48NFܾX7 Gfa:3[TBH0 F5˕<.=%! Ȋ˱2 D;v,/ ,Y3in#'恅Nq?~… мyS4hPӧOŋy@ҬYstԙS*aU'*0oae}wCII32ޒ%M/}AȽ75?EEfhРN2!`)"pmK ^T Abnd̙L2 }JFfu:mH P!14#Fe Zh42 w7LOoOQ?Ē%ѪU ԯ_SLƹsxt:ߟS( T@^<h4 5u@ل^{5-JV ftz-TTϟZpm2؍/+y`23`6[x;v ,][Dݺ1i҇8{G^"WʆBHPq:Xضm[q2 }bɬFȾtT* 2/lܸd2BJpB74Xo,_ mڴF:)34+$,hZ#PP/BHw #}z!peM&3]&en#7W;w/ܼy+V,G۶mPN-Li޽ **U`AtfHONî]($ьX(#*U!;p #FJlc~0RUH_˗G^yO ].!nw 7PP ು;z! 5kpI*hЯ_h!$Q-ƈ-_ y]@\\+7Lb4aÆC.2f+ c?3"":VB0v] -5ѱc{ԬYcǎǩ@Uh讐5X2p8"\Ba_xTJ2*=}c=.]2މ7 l6{?W*@QjP\gGӧs?/ Z̢F\.)222~:tܩ@+PڵKb\b-n=hXM w:tʕ0btUZ*ZnxG|3gN\lv8bNEllLAQ :v1ЩSGԬYƍʼn'@L*U#0b Ύ=˚Az*֬Y#PFO$!99hԬFzL"ܺ0z^V3x^2be1?$ JfQ !YƕDŀ;w.HOOڵkЩSt) W(T S'V v=#dee Q_>7oD"hÆ/⥗2ޞ=/?\[,VWԨQJ̢CBB\AQ@T@Ti?2z+ ;tHBZ51ax:u$HJjϸOYB)-*a004 N[OT*z0Mu?? {,^GzєjTZPH&pB7|mJт۷CZ5<iiiT y'0b .?9.ut+W0裏{XcF\!++[ӱ[jjժ2ޖ-[p|..L$Gţ>Z0Szq5?/q%X,#H Hߋ , Eފ>p޾}VĪU+M6hUԨQRIJJBj+ D"!vgRbb qekƞ=*^:09m,qqD"ѣ_|<ݎ Nj &+ DGG1bgϞCBB9xo…pΟ?˗/jCNN.V}M/|VBk^{O>$ct ԯ_`=vR}ajРN8!tܯNvrAZVݻw Q苎Ɛ!CYq.p{Sйk<5 d2dc2X'|:uƤIw>U|W;wz|5j, \_pN22&?`%xFhݺ%֭[ ^X$4UXի`h!$ cQp]|y|PTż@Æ/ͿqK S(&wG 8h4~g,+rpʯΟ?ZpN#n'\ ЬYshԨ1H;w>hVƝ;LZ=Z@ 8z=h۷oced2ƏϊkŁʄ=z˗/+xf}OT*ų>.]xsE" ~MtÁ[U&LWr> UTa\K$ƖDB DB`C^l)O2 }5j0?RwB`  4񲳳r劂kp+"9J%tBPVŀ;Xt 7~ [X'RrV,N!*e03&PHNNajU,w ::,hX CV*Q|-xY3UV;ѣG HHH@r-W΄"4*vY\Ʒ~#PFVhݺ #&!JTʜG߾x֭[X~] =Mj~EtwACnovZHM[nq: >U2!$P4y7q\.2 }ƍg=h+ dD"hrΜٰ;h4о}_T b;y}fիܹs~> Ph@BeӼr ֮]#PFRJի7+&JކPbEt֍wl߾nnw2V IJJ*hx%f!'b@6f ˅={vuhUR)?33fb21Bwʕ+z\6zx8ӧЯ__B}X<,V*BH zwf00ct q6V\ӖLFf3Ϣ}OoނkX?Wpb@NN.h\>0jĉ43bBn#¨@BkfFl͸t@J*1bL !d=SSS NzN'mڴL&ߛfH0zZm;01LUhذz~'OsIyt !$P Xx0a83 mRiƏȊk4cY+ԩW^ixiii/ -nNĂkv{`2o@nx<>|;GRҫ8{G%$&&qMP! $l5dƞ:u {(תU+ԩS}wZQ ƌ蓚:^u e`^AHk4m$‹dv8 {ʔɰZeSXjuT ״Z k&M^A:ux﫯b,5̜6 &M6VDB!8#B׋{ॗbڴ,0.t !$pPy,[p }ժUCRNmLT:^ӑ IDAT,cرzM%=J.E +>)kX,%a۱x"B}[6vn !Hq:X3˖-ō7(=1\>B\V;J$<3w\xh4A ƛ"  iy[ #رcФˌ"$x BH Khv&P}:"""XK1bcƬY3ׅ Lnݺx:a ?їЫW{nٳrrr8̒pUAF$,ݤ1:t}@hF,"Tt:׮]QbEN'o\ 4OVUtL† XVddd!336ğuhڴ 8̐Ich!$P [&ռi LZ-F3ՍL&\l8R0dPN>0Ӊ9sfuwIJj8y}|@Hs8ŝ;0%*޺u :uE h!$pѷ kX~@ل{HhY`>}~:ܼy1N&᭷\:pvqv:z}7s\>}wl$\N  *f;XK3?h\D*b„FD")g+rdXtt4 P-b vgg={B*K  ٌ;w2BѣGѼyS}Z"?{wUu=K&}# "*nmf-VRnĥ& b+VQ uEQpAU$}1dd`f,1䞹$9s)ubv{=S Fښ֐N$ F5bMFTؾ3~^S&Su4'M(kGӽ1pQ4hp8]5BFp8ԴU~ϖ~wޟS2vEg6zDP|c _0(w 7tm6][#^^^R?qijV}$Pl*٣:R3g>НgHt믿ĉMK+jgWT|G[~M1*ᡮ'V=O2;xںbJ[Y ]K@;P8hÆ ET***t7WUUt;2͝%ƿ-Əp8^/Νsΰ|Q(Җ-ۺ tiҥY 8 3H\z@@~CꠃJjs^eeEJ?>Nw|cUVwLu=LE:ǥlFh4斔z5n v,E:w\B J>{l޻ET,FLMTTj|bVEE2-s;7;:Dvi.p6q\[[m`4@q=. زe.2:ټۤcvKHx u1bDk0{N8 2$d2)╕2ux#H|K|s&].79wSUU.ıjݞB e6.Y==,F)\ϒ`KH]p8Y\B?Aoҩ)S-"E_cb5jTp8,!^{hFm[sʌƎe˖e1*|ҔH%$.A|qv!CJ{Bqmx晿W3׻ᆪwޙ8v:~Fv]uUc٬2#2  te(y@|qF!N+iرc ]{u*+K$JJ*+'_ZZkkbj? wr6zꬳR~%kkkRf$V?,GT>F؉H$22mړZbA޽{K/KiJ ?{86zj-ѵ^YaG=tt<9,GT>`AU8_$ш ]x_Իw6ŢbqUUպ+2G4MRubWa8,`w9kv&O~˷n֦M0Ec@7bXɂ K/Qa+++Ӎ7-n]tEI[ʥ̙3rıL&p X,J#_k#)iᇧh۶mDT<>6F@"J~33~;l466/Ə8| W;S__㪪Jl%FX,֔QgǣdPTŁ ?OmڴI&M4.f6u-+2e;tyꩧn:IR,FLƛb1QP(e+[Izg̔?-bBp8R`&CzXN۷ ~M0!qzNE?Я~ılVee-ٺuϟW`OYFK|Ř= vV4M~z-TFY%NVkf?͒o]UWW8RI,Y7 7}3)ml vA `/k 0@g}NRۡ_]|ŞqI:nORА#.3b ̙C4Fz)^vSyyyRÇW^t{c9F۶5:e6g&w9ydJ?йݝ祉8i5oĠH ܹsRڽ^YM$t!nmmرc kӦMz.WȮ?< xTf+QEEf|A0JFtFSXfzA@ c?DM5| Xܠ{|bP(2]e65~X ֭ʸ` 3<( gIZD4b#®/7;l 9P]|Im BfvMQWIXbyH{ K-`{=e"®;v"$)v:Ƹꪫ5`ıbQmm+$J777Ma=ztJ[4`/n}g}q:]Fl6Y;v-+նIE^Mi  p&߸qx`'ƌw BG>ZÇ'/Ri͠ ?tLt;i{ א $M4Q6m2("tg…z7.//dPkְm{BYHiv{kɥ4o3Gߙ*lmu'M&k) 5Hzh4ѣGu MbX^zQ ,0("t7^עEsD)//ה)*VRRjK@ii{VVJiCHiS|󈤙0V,K`|ph„FTQQn`T@FwԪ&yk\1 _Ҭ㶀˗/ӴiO :zl2Id>9Suŗ$TSjkjRsW=أo!fPX7m1r8E6pXƍM\nkC_~dϞikjjҽN=F@\---IOcgfI5E'?|;6ɤzb6x쫯o00s5W%$mh4ej?+Wıb?롇ͶcdR^$Or;9=أz;}!WЎQH$oa`D_-)5idY,D[|&@VgDt/Rvk|~B,G{AGᆪٳgMx<kD K4ի$A[>XV+3ete/"A`P>_ߪ@顇m۶IbBFcƌM*pf6P/ղK[{;Hw߭O>\.aHq 4yFT\Z[[nj?lzmImK< ~PL&S>Gmp4?ĉw^0rD$ D") 'ޟX̚84xfj.TynJjX,Ջ$PZ/iZuꩧMnxTk.^{./ImmEl64086m4=:}/f9"H/@#Fܤh4jPDmݺ=ęr u#?f2TWW*QVf siLʛoNߋFjmud9"H?@9.e˖iڴiTk$vw;GsWVV6iUTTH~Q^ &7-[L^x~3G@ay<ǎ-W`w\BfJS8L&3V#G"9םnW^ D+//jd_nt89믿ְa~nd \.wҴfu8#*ʤ)e2TU?唟C58r4l9͝O@ dY,KFcjժUETX>Cl‹g}eEdNyyybW\ap4'ʕ+:}?ZZZI"(($x>q87001jԨSEP9P5xI5. jQuu| 'dpDkowP bDy$t\;5g) 翭{WR|許Q=7CoR+//S޽TZZj@d@xa2du督"s=wkg|e?C0H0Jy[R Dύ!ͦ'kKX,jhSmmMJ@ _TWW$^⪫V~P>)KPt(^nxל9sdIR$78"+J>Kv;_쪨($za_.282m4]s] H (h$EQO|Ah4cG'yxCOs_t}bV}} `XT[[#)^j58CeQH$j(h<x< Éc׫v#???CW$B!6axz5|Nkt6S&Ie-^{T|7oĉ<ÙxwL?NQH9}Q| ;n٬ /^}u}o2T]]޽{f!^ZIRUU~x*++ xhT\sN}d\2 NE \7@D"r=ImcƌS?2^0矧_|a9{."~$PH9$t%=D{0yr89.% _OG_~),TQQd2i?Gem۶鬳~W^Ns8yHd ;@ wlc5rd[-[hʔ$If%ppgj޼u7<PYYGL# }N;gzwz^k3wD HؑrPm~-͝;נhr}+7ҒT<4ͦ/B翫_ם_ЋDҪRU#oѰa40/W_mڴi絶:; #bGAP8enIP6nܨ'x\R|U>}4i9~᝞C"RSSxuժ\hpTƊF5N]t_wAK#/_H:C EQ.;i]u (7B$i۶fFac9Fs羢ѣv9>PRB"=g2ؠrM=Ȍr9uĉw{nKKk \E bGQh4emߧ͛7>s͘xu|}C16ly=]ze]^VfWcc/ד@lwURR"IjllԌ3uI'K~X,V|,E^vKHؑrU(N{^qFdq$Iܺujjjt…uUWD@JK5vhlH$;Ћ/Gg7x]s};=/E~~v%iРAFP+.@X,6(|8F\mmkhb] ]9KP޽{RD{ըʊTl5q:?rp8[wݜ!CBA!btaxr\0L8|MEw&G_ kիWYVUWWiUWWˬ"dUSSƆD"LG# IDATLUmmtꢋQw_ ֭wz^> 9?0 8bwK.Okz뭷$ŧu!#vMEE.b-\XzګOL&ٙPD,jj^$# f`t{7uC/t{նm 'A$Px@$Ij=zT ѣ$;G[6 v;|B3%fƤl__n:?LY2Ov0 駟NrE| OݞDs"ʼX,1cH57~Ըqw飏h:#gpXCZmذҍ@z5k{Y-^?PH`H`P@,Z*-T.i[_|=\l]kԨ;S-md};1:qwꦛn2: 'HŬJ; 뷟{$|I]N>m֭zW4g͟O{D" 4l6'uw6oXt '8[rVk#M|XW^y֮]ӣѨgָl6k:Sx< 0G&d^{5&MƿK/30 я~͛7f+պu{<2THǣyԜ9sܵж4B0?c0LZ*)D6[JJ/Էjг{Hs7|{iӞ/YYfƍPܹsu ؕ&q\QQr|ڵl&I~N<$p‰:裙NSS&M'x\@;^ON+oϺ_=C)zhTW\q&Ng(4$Dz5$M&^xE |Qw$ZL!lذ! XxV^X,'"$ADXܶ2M2^v_茶g6eXRaV?D't 9A{k[jҤzH$"YR|3f5&MҕW^I"jkkT^^8>#5{rҢnvY! áŋiѢEZjZ[[GDŽcdRxTTTG|_Gq8xAEu_WSvk^g֤8p.Q\.wA1c=V{~@\.=zꩧp‚JT!T ucD ``T=Wk5d *))Ѻu)/cioyf}7FhD ЀꠃA~@Dr-)`Zvft`>=tmܸq٬$u8kgѢEl2Y&owHHU__'4q|''20䒋5kLY,}fE"CKz3gfΜ?PNsQRRkտO}S~{r |>͞~i\e2ԫW2R}瘝ZJ˗/˵l2-_\_~Bᡰbw^I{}֮]G; ݼy'-ot<9˭2{bW_?]rɥG^P_xy]~9Q4iZzz!l6s4d r;0h55}zKfo 3q$B#qo`k͚9Ig6Ұa~'w:t'hȐ!jll4:$ c-Zyi޼yZbyZv 3 f fWEE0QA;нgpd;̛7O ,$9:fݺtE_4c ͘1C&Iz k6:D`|7MVٶ3pD^W>O ב TccO:jQ0f(IRee>sA:EQ]y{T4HXL˗/4y2L߿ AkA:C؊9tj[QMW`5) #P(,ǫrIo/γg֧~*)>ay)ZhQϏD"  FFc?FkM&L&,JKmٲS2/_|ӟ_Vs5x` 4Ht&O$/YqڷT CGC )hܸ1}fbAm۶McƌH$"ۣ@ pNJBnflYVYY,m3?2x{Mo,A4heoXLk֬ҥ>ҥK駟t^hT^O^Opd EQ\nXZ}Q>|.]Kϖj_bz  y<^$eMpF9뱄B!$ڪGhT۶d|kX,^$D*-$@@/ŋm}5pQoկ_?װrK0˷w?ҥKrJ۲@"é^SLg8 q<ڸ1>_fȼGyXb[ <)*-3*--nSiiibL&m޼YgٳԷo_o{RW}w]Y.$~_6lІ v_|im7D`0(ϯ2$)iziYz]p8sZx4K,Y()nP*$2[ZZҢO>$=ժ޻]rHwrE) jƍN a_^7n֭[ lbx?bM?@p:]K7xCN>ʔeY,^:+D,YDׯ=+7={gR(V(پ\Rld7!^8Nt$}+++}կ_|A޽U__z544lA՝\#iӦM㦦osf4=>d@(mU׫*m#GZháɓ$UUUkÆGK/vp2yŗ kM&j-IJ@OnX\+V,yVk $Ar^ m6-K x<nlhyUC--jjjJ{~PPDnkhʔtEg<0INS6MV`0 E,C<$b1ĖH X %pHMMMjjjTTT$uuu*++^ˏݝSVVJuW8V0T8V(>kpH~_--;pظж5f0; D("XLK o{z{655ᇧHJKD,M'|RƋb1m۶-(i:D"QE"~~I]JJ3K`wy<y<mذ!׶ZKTVffS0R8;!ҏPd~JKK%ŧy0ތ{'󩼼ByF577vokؽ ;fm!X,D |%MpH.W~gR,KǓ#t{PKyguꨣ>6lдiOJ?FLK-@-rE$q@|vjecBxg?ydL p8,ǣ IÇgut) V+Vxچ,f,kRb}-*(N $"rU^^u\c=tyrիWgHO(UFwјP3',N0^r?tR$ctHE*t&6jԝOWeeNgƎh4F}=G[|W`L&[J`bll1]F'iF)H$BHE\%%%'LGÇأ.YDs~ͭ{'KzwdO,&ÑKM $' v$B[~։u@! 9é^S<>[n_sQ>==J04<toW;&IfI&SKئsR_JS|?v֦_5KPHE. L 4rH=u{W-IZn]D~6of0|GNiN;g2wئM%IW .Jkv FrܪJ}{t͕+WiX҈R$p[uugڮ`ϑ )u0cjMia ִlEm @(\,+Juio+Nut](] HPr.s Y \Li,OQ< L8x-]ZәXkP֥bLJ(vig 7l`X")A>i&&*\R ]L eWJc_"@.J{: %it_0 yit_0E%i}3p]APR$o:/RJs_L \b~5 rKFՙ IKkP™ 1 22Pf™Z`Yi {IJ& g2tm kP_\@(4Ggj @v{.I} #29@b=1CKI2|㙾AH|I?}G% gz$M=WTfgcEJQ mQ٘4:  LT:RvfHR/%훥<ߚec$$ҽP:RfH]W=EIK&[7 IKQ;RvgHR5|_rE@eٜ InIe1r_ {-#t*3$)&bIa .IqSIM$kȶYn͍XЦJJI10+PI %m\6d2/;IABF ޒH@H3@\ЦIْF@]KWF80H$jtmra @W$lt OH\JHRet &c$-3:r@{%AKc)wjVRӌ]tFљ\LHBI3:z)IDWr5 IKW H:SR@kE;H!F@K:I@v&dW%$)4 m(^kU `W" P<^R|ߕ|LHRLlŋ`l("s$dwk.L3IENDB`AppIcon_iPadApp_76.png000066400000000000000000000060721461511344300422710ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconsetPNG  IHDRLLǗQ+iTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o JiI}Y0Њֺ]3@:VAD^΃ s?s~{{888888888888888888888_JyYہh{)j+cy,7 v ^}"6l!oabP߰1^6B<3&@,vAkk+j5j5`4-aٲX=ŋB7?#؊'dL>xx1T*T*4 CZڎ26.x{{#)) [nϫ%Ossl#jjjN1$B@L E4<%@ڇaJ)2r!]zرcXi7Üܹf'F'N9mK}Y&w@jj*>lY˥hnn9F{ =z 7nmyšzެ%p`ܹsT(d24V`` BCCp_eK 6l7Rg5,<<{ Ӭne5 psTW[[dff ##ok8tݻx &MOOOgZbآF0DVgddnXcc# _  q-ttt&㝝P*pssChhفrX HN8uʠTVϚ5 ?T |:߿\z>|7o[ZZxA.cڴiXjLmaV'QSSh4ܹslN . ""^G?kSTTHk׮e MmO,ajMzzz(((e`7JE۷BBi?ӧ͖5׮]hrrr4wuu%J:NSSah=&AG̬]xucv*+Ff'sRRqq19 )J}9^G99)""R.rssٳA/ÇٳM/ٰQ{/֭S@"qCNN.k< F&MdJD"ACCJJJՅ.twwhL͛W3hZ˗/wT^EFFR\܊AsP($P8#0H P( >7bmPQ\2qhu~ D" M%Yqp7l.?fq_ ^L_ $caƵྡྷX,~[5Bm@@hQ i ;mIENDB`AppIcon_iPadApp_76@2x.png000066400000000000000000000140631461511344300426420ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconsetPNG  IHDR !iTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o l***p5466'Bhh("##(LB$}MBff233ܣeX,qFL0|:~6mBUU%z=Ff3L8y$x=*,[ <ވ?- &{*++(::BBׇbupG<ϓL& WQn*[ooǏ1쯙4oxyVxZJaze2))(&& ;1D"z쾩MH*rzd2)^Z9*lT%&&`ǎ/??M;nK.-hmv1Arw#pi{PPP_ը00{v V-(,,gdr}}aTL&kΟoWmm>/dgg>ws8-}tvv`0 G,s<* g̙LABB.=mۆ ~fG8pVˎWmaaa(.蒶둞p~A }BɩN<ƍ BTT Ey|||PQQ1`9mmmHHHB5kzj"<l7L&ó>GY8۱s.=<==2Sf/Νd뻻܌fz |etvv"00vC5kV#22 1HNN^juuu~uu=0  Q"$$Je|}:7 駋S}=Co\t:v`F;ֲV#+qyA[| s222D83_l6.\o o3Kq dD0 Bkk+4v~Νŋ;lo׀yZdggĉ8|fH!88*UͳHܹ ذa=kW6>7;w/3fTUU%vz=jkkQPP=_k׮EVV'BA]3&^yћN\MS=+W ]]],MH2mpͲsssÃR/ $[u nŋn3f9+C0R݂;LD. 04{vU]EFzFڲe ͙s?ŒC*--S֒%Kl[hο3O@֭c0iѢHn#jkkwަ "mgϞvժU@}ʑ_0HDgiL qS,22\o0~gZf5ed̢Hy`+**-//wx7u BA}ݻƌ pZp͛k)LI˟ܶr +4kL ԩS>STVv+ IMM.6-bS,"b"]tRvn*J(4TI7o6g)++UdӴ{.jjj"T: }rrL&%/))!/HhG,嶴Pbb=e!C&Ip4\RR&jP_3v 0CՂ_|SStt$UUUY|eVeD"Shh-Y4555 nL&ڲe3%%%L`rij7Oϒꌉ^/?!F۷oshhDZ(qG;M("bd2)\RNeeMж2 ڲesW/PddD/ߌ@~z/Ć ŒFf)D"JE"RL)iѢѣd6Y.SbbXEp[olO? j/8ErR*)>>}TWW'P__Oq,l&Z,(,Or"11ևvʝXL>D!E V+?CqA f_}ӧ}z̘zュmNœOO(44-rrZRb+qGߟ)p8JNlu" ,%ICM"GR1`{?wiZY.斧ΕWvqqq~' WY~W(..},-z Ӧ݃DEEy@jr׮]GCCK,El$\eeeC??$%%9epqS OlH$Λ7*OZZeSNQJJ2H 'NGL&e{o.h\ˤl^VXvO>)@QQQiiiLe;WK+m؈/<蔯 ڕzC.~~~=۱`(,,D~hix2D ssscBkf3۔2y<==iWjӾ}HgswRR}ICH#oiP]]D!vZgɡS39=2nqܷ7|sT,=+Vp h7iƌC~^Ϗ͛K7nK.]BJec^u}*((HVS\\[&^O4<1c:NI)00x^l5zFd2?~Ѽys'^?`=fv~p 8\|ʔ)6`yS||[ۊ`4)xqˣ;u -gᇳIGJeeWTSSCeNMMMt5uN?%SYY7+j;P^>߬_OPja2 Ԃkp1f(J$$$ !!& 22D"_NTUUeee()9 Zzfi,eر.%H HcF\@qYVˌ'NGat:̝;^CUU5::~Ec2`2Ѵx^| zyH2x{{b]]]jN|͉bpNz FL\xѭ1fڊ|9\FyV˺m4`4 8D>`6/7l!)sň:M$A,˲.9e\r?"`@m&W{aks `熡!̝?zc.I:\g߻cN5ra3`}K 3ZVxL E%z/u_@;Z10 |7d13*n]dY5[̝^"'҈L@pwZ<?@< e̝4z.eDq0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0?'TxwfIENDB`AppIcon_iPadProApp_83.5@2x.png000066400000000000000000000151661461511344300434710ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconsetPNG  IHDRtLiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o fϞPs!''ee(((@QyjB FHÐ]75dHd76mڄ|@SMMMZ 2ɵ+rQQQ7o>{7S?KDD8=zfj 'NK~$C"B!'ooI p={o:w{#D˰ v鲵>9###)+Nj…"NK*E][.:zetNn䌌'O:w5Z I!HO H|5'ݰɩVСC%}{IӒX$P(Aw zh 0{,Vy$6XLcvNKbbÉID8k͖E,QXx.9oK K.uʣ׮V… jՋx=oOsí9Z(-R(U$iZz t$*.SWWo;}=R2gM,aРX|٧ JGYCBay zjM#"f>} ŵ#{'pklBb̙Nq*9E" ,L1c:Չ+?%gDD8Pt|uG${uޅ EHH :iiiضm.85Έmп,\>v9mq u5gtt4nMwJKO;[Fuc(<߲+P([o-A;:0qDo…owhyQN'gUU5~8!00a4֢%%(--B UUUX̐J6rbzؼy.\/@z[ ĬY3q T*{|2*++QQQJNǰyf< DPP#55)))i2v$ӣZa`L4 Ey^ΝQ__!qOX:߬'$ A]eL&A!$$!!:L6ksa 9r.] V Z:ofZ} 6.#//nѨ|7Nǰa<#~P(0zhL>>u׊ݨ>ZŤP)4TGߖM 6|}$JH$5kHDrZ K#GDm64g]4s.]DVթ{;(1qt)w}~Ν;GgϦ/Vt:mG)))N-֯_p2rhKٲi̘ hA qu~ۧ9uzw[&СC8ooIRV2̮ז'j7o555ihG-" %B80o//8)))7ĉ8r(m۶ik޽T*gO&';wn|r&'@Ǐg Z<8 S iժ)5u<$vuϟ?o[c@6mkS,SJ8׮ZaR_;8RT*-ZЮnB.]kWҳ&LHc$-s j[[&i4nH|0^KMk׮3d2:ڵcAӧ'ӝwΠM6RII1=s]JΨ([[V$~!. bcmfO($$RE!n;(Lze:H$] N>mkρs?LFF8hmm755ј1RE:]͞=.FӷRjC|g(''rrrH"%D"nUy+R "Q]]N}i[BNM0/9[w9xK5jtxv$|xxedprrrH R}kmi67ҨQ#jtZ2d0۷WPdXhuGry999r566 Z@f$//a{b1%$ &Zߛ7o"NJ$ 'NKw9~'ASuu5Mzrr -zK`0Aj4U__O#F wM}_4nڶT[[#h^eɒIpr -C RA iٲT. NsxyyQPPtZ cǎ wxw89;)rϟ'h!͍4`@/Fmm H$VVL:FN[MUUU͕Vxn99(AЂz>BJ%4vO<}׎B헆҂iL&yt)Snis)Ӂ")5u C9WFz:z^yy9%%%u||mQQ?O{z0?'jouA n{~eɤtͿ?/"|H$"LkWW}?\ùx? =t$%%hRS'\wYdd:m hr)1q K#??Oh;SҶC$"hQ^^Nz}('R pٳg)4R\N3fanW@.ѪU/Q&03Z"zDm>oW=zmdD >gݤTQޯ_~GqZr^DSyd秦 tZ9r8޽9]ޚ3grdÂk///?i+Vby u^W^y_~Afq%OKIIINU&SGT|,^>txOҭO;+V< tݕ+_VX,Jԩ/V"77t:\v gX,TWנ|>zhqoID8} ֭[t]T'| ~~xl9rǏt=8Fv#lXPZZ;?IJe=\45Y\u9 =;]wsBMWt{?~<||}XV?Q8(((p(=Y''dgc-T3}:ϟ؁]n+D"TLd2)*1ID>w;vڞ%K) <<%  &8j̙s*++Rl޼uuuNݾ8|Ky啵3g]G#!!ZVL;djtsdѣNƊ9Ud2aΝ0j\T*Ś5/c͚1jHBzQXvCX,7o.Μ9ӽNKzݻ^GlݺEQu뭷bΏp0xpO211^|2 _~%*+FG>}sXftQGF#Mtm7}M2bb],XL#G]{Nhqq1 @b A󚙙٭?zdr2|umW%U_}u@G0}P((&&&ODm6i =C-T*oV<F7"9~abʕ馛:|@uu5 46z`„TL+W` :tEEEC]]qJ jC" 00j* 2 JJFs!::~k,^gڀOy{{c˖-;Vثy|||c̜9÷{SMN"ɓظq#.m믿vݾX#G 77ĀR:T*q3p3 ?EEEp>>jh4@ FPPH-ݛ=䫬vNSBzt:->=QQQ7f_|HOno#GٌGEElb1R)ks&XV(JDG !abc!6v4 j5|}}Z[a0pY"''YYY(((@]]h+W|YYY|sqш Ol_݄4J(++lj'lD"J7j_H$ס 0L0 j>f6aX`6[z"y#(/"&݌z'aFAmI$T6^"bb"QlٴZ DVju{IVHN֌' ?zޙ`- ہcurer<cU29MxGuK-?^=#kfsa5'lNO<c-Y|rB< tH85k0݉oxߓyC(wFw%Sv:StZ2byfI#d!(+x@zx.,Gx@IA.@QguFHkwQ_:4_7c1c1c1c1c1c1c1c1c1c1c1c 8IENDB`AppIcon_iPadSettings_29.png000066400000000000000000000030321461511344300433400ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconsetPNG  IHDRVgiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o ?~}n)|p=4wa0]c$9kF0gFEEEtvvt:)..&HO$`0H,{q`:Р۷ߗV 0S:O0)njHRB!XZZbmm ՆOwR''',..f@G_sC6-,,(*+HhxxX555ܬCߩU;;;YkzzZh4VWW+JIz{\FFFL&/T P___vo$$eCCxWz1tuư7k bp8466RYYI8FRNzpttݻUܺ[[[TT|̝;bY1 X7666p:KuHi?yFp//@7WvPeIENDB`AppIcon_iPadSettings_29@2x.png000066400000000000000000000045611461511344300437220ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconsetPNG  IHDR::J(iTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o { X(˳.v^-Np @" @6RARe1BJwyxԌ2 xKZ-b…jg"66v$Afݸq]7obժ#;mPSy:Nd]]{].Y錏ܹsl<~8n333iW UUUGj4~CCC͎%tΝ^WKMMŋM\ $cʔ) ӉVXVCشi իWj]S`0Ν;|aL8j>#~:~Sݺu 98 I޺u55ܾ}?ӧg[[r&dee%/}sϟon={h4,h4r޽aWWKۺrz}d)|&¤$66f%঩})>{{{;uyLLΈ`]]hG5?i$:t$2ݵkh &iXo>;b$'O~u111;vZ;PUWWcn/^Wh Ç*֍fteeeO,4''cAԩST("ߗ_~4 Z=JZz T PL&Q"ߢ";waaa^&1##|; JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o 0ؙ8J_ - ["#R)BH JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o nnn&m4i`ƌ(++zӧOCEܺu (b̙M6ͣ' |rTv}0]\\X__/8Kq .ZWbcǎ$?Έpjn6cG$mV?}gczfggZV2`@RI&q޼qݺ?U2p[[2&f###k^^^9sK.aI%c޽bc{GGbrS@^oȵk[o244~ߺu$+Y\\lbM&&^^^V/ pϞ$ɯ.`yyd.n޼>O''^1u:I… E [.sttdFF/,,6P0==]rjG/^_Z''Ou[:88h08zhq+`ח}Ri8u޹slVWիHK,fhhHC_ ?~cAAA" $ӧߟ$';0eٳώeuuO:EWT(`iiM"v={v344TV]\\xaN<ş~"9 ?q}$_~y]Ez{5o2[ikkݻ˴U>̶_"-֭T*fG|cv#h U3g} /^CB L?>T*>(FD3;;L_z=cbfٟeڝ>7]4---Æ91 qqso1u:O@QE2獾 )4 =;8o^W{ٙ~EEEV@?ɟ>}ÇCCC}QT7oL,*:g |ғ!!ӸsNϮ]P(6Ɣ\ƍ^2e*fώJʕ M/_vttgΜ7nHA-cy;O>esE$333M+*$O8Aggg[ 0.ndn!A :|fyxxoVdeeYp,Y`[?\cl7^ JmF Q=M6̙6Ŵ vͽݾ}YYYcj|ߑC* ث=-- iipp[+'Nﵾl۶լo5'_}u/1G355W8bٳg%6lka;v,V%is0wnjjQ[[ puuŘ1c hii;{%%%hj GGG"&&{!;;W^^iVnٲ㷺yfI _ʠɌz˖%0=}IGYuuut"kּ M^K*:::> \BMFFFߡCqd!Z|9.)çnpwwСCRVRԄFt.,,DUUMw{/ JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o  Xa' Z2Mv#42t|>@{{;ZZZjOxDAա555vjº1Xhq" xz!{S !!LzTUGYYUhnnBSS5IjՃzDqeH$\5?\YQX2 ,L>v"|2QYY_=Hw 裏<.}'N hmmP(Ę1cp< ;~~7CIMNd NG):$% D"$H,TH2 KC3)+1cgF`RIeee&zW-ZH$ W"/Ʈj&P(,'gg!ߏw3ӤRGk4 Yynu'@Lj!!!۷o[y`2[p _Wwi0bjQjALJؼlGGZS-vD", Z*H$Hd:o;ggφB@8UV!..8usƮĤǕڵkf}, O?o2gd#7Пp2e2,YjrdCCJJJPxСPP\|y@#&&wGA*gO;fчj<!((!xbج v {ǍSNcǎ7pm8up`Ӧ͆ʐFT*,Z?rQF3gDpptbnkkC\a jB^A }^hllEXp^{-_]]-?ÇJغuaRDn_QYy(..ƍ79~S  *(,,4p'|{Rŋc߾}P*sN,>OϣNcbb@PA //:C;o6NhZ:ŭ#@`~W>)))$JI&s!WWH"H~N1m߾l+ʕ+-6`]G:l޼ "##Mzꢤ[PT'?)>}뭷zKJJ{GիWG`$СCv|,//0䙒L%%%իWJ3fL'WWر9^[ ҥKtk׮(p:P-DLL̀Z ڵ@w7x<ۭ:u*23-Ξ=-[6cL&3܃u:k2k.g܃M oTPXXhj.ǣZ~D"0!?1'ODIIɰZ0(=r=x _nu㐖9sfe!2+L޽{F"FӅ??z~555.}9 'O~ؕif~ }nw,]W\O$GlpV/VxY/Șƙ\gq'''ۭ͠,uvvg͛7HpY[ZZhɒ@AA4mZ$ܹΝ;G'[BP^^YBBHxBMMM6)]FsΑU!cڵpvvdffcvwŋxDn _|$ 'ĉሌ\\d\ <ѢuuuGEE*++A a;Z-v477CV2+W 8?d=5=kHKXl),sww(O PP'')R)D"|Z?~vh4h:hZt:t:qEEEq[í[z,f dcƌAggnܸ9X03A`6AKcd W /0°-6Hd _bl.() f 5IHazq_6d'$}lM 4GU}gfn/XZ`2 搆a_@R.p㾜K`t?1lo?[`0 `0 `0 `0 `0 `0 1NKIENDB`AppIcon_iPhoneApp_60@3x.png000066400000000000000000000161771461511344300432110ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconsetPNG  IHDR=2iTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o NJ([ -xȌ99lVr7_`4qptUl 'Rl±CdC +st(Quo`0}]T)Ċ ړ%<OF9hNY>a#yeֽC.'3A=@1c:``,Йdf7tLQ]W& uua)z2y٘.s1A Yŀ`F.˭mn @.@HHt:j5 <==PxSBT&466(/@aaa4Gz:|g|.]Mv'Y0q$ aaል# B!ܒb;wQZZWWDJ۷/,XЦ2Nh_~6l̙ ??? ixEEN:ܹs())i+W #,, ֭wj}n"h0n8̙3IIIv/Z5KPZZf~Pa- \pjZ:*8 Ie˖o߾6-SVV5klVG>^_ C!==Ɔɐ`.A2N0w8q(44ׇT*/R*=I.L&%TB2r9yz*KIj/NP;h4ڴDL&u{{:1vV"**͵)a(+k,tZ $ʋ$AzA BA~i)1YO6(:vMR[[KÇEZm0rC"tP6l;wжFddٔ(MMMF$J\V'AׇזrBsB*mfs$ސdi'grBw T!JiڴGJ R=9oHJJf:!!ΥFnSoAEP(5i}||lx g?~7CoBBSOٽ\``[I444`5>472fwO P(䮨] fFB&J9UUU6+H 1c&> %JPPrsi̘ط{:}]v܉#GZ}'c9HJ؞oУGjj[^.5cذaEbOdZb̙xǝZ _lL&֭٘8q<׮8u]::Xu̚_X~6JM|ay5RDv6L8.;hPPL>ۆm/**FeePVVW SNE=D7߄T*E@@Yt:T*Aп &N^AZGr PTTB…vk׮!44zgmę3gpb>q6ކ={7^oϟGS:wʸqYx'1n\VCdZb宻˗/ǥK<.ɐÇc̄gMhׁL&B!Jޘ4i2͛o:6{=tڵ j(H0 Gee%hSYHH Fף MMMPb֬.[QQ c׮ELL,dfpݧNoÇ ??559޺u+:|?dHIOk{bȐ=VڒRO?wxADssydv m)"Op @A4~|)a{L&sIyDB4h@*--mSB>nZe:{CTTTH/^HP8TM6|3f @dR{޾hhŊg4Eu8-oDttψn"JNeMСfu1rnǎ/krssi9J1aw?e9st:vʄ-jLAi\뻾hǎhذ!h1ѷo6*/k: 1?̙3(5?EFFuֵ)*ܑhV˴ -H;Rmm:v(j]ryٺsssiʔɢ.^ݻwRSS(,Lh}:JhDBhScʻfpZy^@DDc>@kv={Fݻ;bp_#iB$5k̖Yzmᮄ@nSR> zJ/n wY2iސ_}c3544iҤ?P(4TKV^mpɝ ^ -i1gv8={O?Բ.HIrB飏\{ m&N@c֯_G_;=ܝГ&M2+SVw@=sM&Ĺc==4j}fڼytU^^^i_ZNܫ6mH?3 ǯatwB`h)߿%D"4kٲMV#&&N`0ЀfT*SRϜ9JJJDΟ?OsΦ~Նz%4ڷo_K/Ppp-[эe4wDOiuJ'Mlz* jZ//%tZ+wjz6lXOA>7eBQLL ~>}LtPPMN#6']Rvcc# XT*mctڿ hB+ޮCB$Rw|*9sYo6i4)r 6hcӨСq?>NhWD||?~\tN'E2kjj?Zٳ#Gަb; vT*ˡ7g„,R*=E_Yy/t,$ IӒN ZzUUU9}{7ߜ""<<݁5(//p @qT]~mD"!Jr(Af=e+.^̧ PJ 1=9Vٵ^Ɵ^5rΝ#zoo-rSShi>V|ߡζkΖsN ZM xMMMvuH$+[(..~pهKIi)""}l2o VrB;3zN~MtM +7[~$~xL&#__jCZIyd*egoukrf @xxxY)}$u:fV*Rrro/R߾fq1鴟ZKZm0tZ S-[еkj {^M 'ѳg4ٳGt#~.{C 7-#Sz")-?Q||EDJ% YlrO(m߾E rB;3$ xCCd{}L&f3s:uzN2{]\\,}7DDteɡy^^rSrKbb瞥~I#1mڣf8A;nȳgϴ=,LG_'MC ZVָ.Lϙ޽iŊ]Ӟ[!>YcII)>Z>..2{1➖ǎ9GtAq^[rFTTT(,,ҥ_XqތLnΙl{h4cƌ'D*++tDFWr7qq{{J6l<-!+KNVPHH0{E^^j5Lc˄ II{cvݴ]V#116 BII)JKKqԩ[UUu'=4`:uv=E!zSgT*6Ìv(/ed r^ux{(**N8aζ裵fxD8s,l,jy??#../MJꍌyZ^ń Yv}X:|0] PZZyLEW\iFv&"*++#}l?mJMM1-=Ν;^[*͛Bӵ~::tءzi4L< lUUؾ}e<ϊn*ӛ駟4eg =֮]˚>OVpY܌ QΟ\#v O9.gժU_P#>[!][߰o^}} 6mDAAz*+כwi_h4h4 rzQRR>c>R455;#~r=FվhB_y=r;XC#ڗJ%T^VRpp EFN8q-^֯_GGq>cǎі-[襗S~wN%6||;Jw2e rVUU> 3fDXXXǏǷvJ؄K_Eqi/c" =z>>>/JQ[[Zաu˗p ;weeeA`У V {Nܹsa'-}J=zLtuuuxYmojҷ̀^rSL& pE( @DpޒD` Q[:Z;{KԽ-..'O7jjjyf>FJV+JB[H$D zza4-9…}S& W]%MwhN:v1Y˄Š0 f- +˜3eB_Š0 f9k"9YZP\V? -CflYk}~0&^=8tr |5b`$F{U1&I|k0/ @r09#  B{/e BT)8` :Hf~?8wp0ck7;Lf1X j_cqKG!0uL59z8PL;Np1c1c1c1c1c1c1c1c1c1c1c1c1c1M?f?" IENDB`AppIcon_iPhoneSettings_29.png000066400000000000000000000030321461511344300437050ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconsetPNG  IHDRVgiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o ?~}n)|p=4wa0]c$9kF0gFEEEtvvt:)..&HO$`0H,{q`:Р۷ߗV 0S:O0)njHRB!XZZbmm ՆOwR''',..f@G_sC6-,,(*+HhxxX555ܬCߩU;;;YkzzZh4VWW+JIz{\FFFL&/T P___vo$$eCCxWz1tuư7k bp8466RYYI8FRNzpttݻUܺ[[[TT|̝;bY1 X7666p:KuHi?yFp//@7WvPeIENDB`AppIcon_iPhoneSettings_29@2x.png000066400000000000000000000045611461511344300442670ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconsetPNG  IHDR::J(iTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o { X(˳.v^-Np @" @6RARe1BJwyxԌ2 xKZ-b…jg"66v$Afݸq]7obժ#;mPSy:Nd]]{].Y錏ܹsl<~8n333iW UUUGj4~CCC͎%tΝ^WKMMŋM\ $cʔ) ӉVXVCشi իWj]S`0Ν;|aL8j>#~:~Sݺu 98 I޺u55ܾ}?ӧg[[r&dee%/}sϟon={h4,h4r޽aWWKۺrz}d)|&¤$66f%঩})>{{{;uyLLΈ`]]hG5?i$:t$2ݵkh &iXo>;b$'O~u111;vZ;PUWWcn/^Wh Ç*֍fteeeO,4''cAԩST("ߗ_~4 Z=JZz T PL&Q"ߢ";waaa^&1##|; JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o p)(PޓF^6h@t[ N?:~K H!a} R.#"B3b+BsA7؋ ǁh0a _gY7by8p'H*3~Ǟq4 R*T*TO8 u0 vNFO`D"ƪUPXxAt;y3d$&δZ0 hj2!((RԮOPVVш3f`„ 0L7 (q9ìYl2L4v`0 5u= djBKmmC.rG`4#,, aaax&F爔LSXX@$J]yFoϣ۷o9!"jlliӦ>sp@ F[[+=G~80a(2b:uRI|6v_H H9s@P8ԩjx{{[駟/iFpAh jTTܰ;&JѨqߩD"Ԉk?1ehG{ԷVEbb"3gĉ'{sJN믿aZX`:]\L7nTЄ /:\.J[~?NDD&yg>1رc6?VɵM iiiSff& eȠBuID'8-8q"BCCKvv؎'Nl66fs RSSi&rj[@{{0ňFVV6jjjϡG477 bXlD"x{`ʏڊcʕt:QZZdgRcb͈z rAcv#'JDDYV))i!3D"ÇCrx':ٽ{Ә% mذfy0bp*-- …T*{$o̱]ZW\Vihh-[6ӫ΢ Qnn{#nG$"ӧO{-TU]'`?/^ ł8{m;P*Xoj7n+7_}U}Ν;nNt: 6ԭQkhm$)$$#=A{fSdd =:Ǒl jNePPKK kw,?t\Ӻc1d2n݂A?潍ϟϜ9"qkl[ΐd+8xK?Rve !!xN233QRRw<ǏǡCm۶ zn`޽x?:Zmѕa͚7)A'7('N4%**7:whl˗STS=!44.^رlg%->|S q~:@ϟޕܽ{RSSiI:d2xkk׾-[J  [QQA2Z|t>BNFt=z4 8w`VQRRAl6ԩ|TVV駟q mD:W^^T*C@?áVk`DZF磪&oj5ƌX9ҥKNVEkk;2,EѾQo .dj.\>d% JCTbȐ!B B/// BYYP[[v:1زLyT*zwL@=g}V+A ݾ}SLա1h/>L&T*qhnnFC& Vi_mmmNЫv}čH$v1.v<7`0 ? PG@RNވr>U ؿpF=7 `0 `0 `0B+? IENDB`AppIcon_iPhoneSpotlight_40@2x.png000066400000000000000000000062301461511344300444300ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconsetPNG  IHDRPPiTXtXML:com.adobe.xmp JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o nnn&m4i`ƌ(++zӧOCEܺu (b̙M6ͣ' |rTv}0]\\X__/8Kq .ZWbcǎ$?Έpjn6cG$mV?}gczfggZV2`@RI&q޼qݺ?U2p[[2&f###k^^^9sK.aI%c޽bc{GGbrS@^oȵk[o244~ߺu$+Y\\lbM&&^^^V/ pϞ$ɯ.`yyd.n޼>O''^1u:I… E [.sttdFF/,,6P0==]rjG/^_Z''Ou[:88h08zhq+`ח}Ri8u޹slVWիHK,fhhHC_ ?~cAAA" $ӧߟ$';0eٳώeuuO:EWT(`iiM"v={v344TV]\\xaN<ş~"9 ?q}$_~y]Ez{5o2[ikkݻ˴U>̶_"-֭T*fG|cv#h U3g} /^CB L?>T*>(FD3;;L_z=cbfٟeڝ>7]4---Æ91 qqso1u:O@QE2獾 )4 =;8o^W{ٙ~EEEV@?ɟ>}ÇCCC}QT7oL,*:g |ғ!!ӸsNϮ]P(6Ɣ\ƍ^2e*fώJʕ M/_vttgΜ7nHA-cy;O>esE$333M+*$O8Aggg[ 0.ndn!A :|fyxxoVdeeYp,Y`[?\cl7^ JmF Q=M6̙6Ŵ vͽݾ}YYYcj|ߑC* ث=-- iipp[+'Nﵾl۶լo5'_}u/1G355W8bٳg%6lka;v,V%is0wnjjQ[[ puuŘ1c hii;{%%%hj GGG"&&{!;;W^^iVnٲ㷺yfI _ʠɌz˖%0=}IGYuuut"kּ M^K*:::> \BMFFFߡCqd!Z|9.)çnpwwСCRVRԄFt.,,DUUMw{/ JiCCPsRGB IEC61966-2.1(u+Q?"( k+4D(PKk6o;In[E. U"RR\7]mɞs<pFJƨC&7U m4 RѾpX۪Uܿ' u#'k9]% wrA{KfqHx MždXIay9LzU)z;o  Xa' Z2Mv#42t|>@{{;ZZZjOxDAա555vjº1Xhq" xz!{S !!LzTUGYYUhnnBSS5IjՃzDqeH$\5?\YQX2 ,L>v"|2QYY_=Hw 裏<.}'N hmmP(Ę1cp< ;~~7CIMNd NG):$% D"$H,TH2 KC3)+1cgF`RIeee&zW-ZH$ W"/Ʈj&P(,'gg!ߏw3ӤRGk4 Yynu'@Lj!!!۷o[y`2[p _Wwi0bjQjALJؼlGGZS-vD", Z*H$Hd:o;ggφB@8UV!..8usƮĤǕڵkf}, O?o2gd#7Пp2e2,YjrdCCJJJPxСPP\|y@#&&wGA*gO;fчj<!((!xbج v {ǍSNcǎ7pm8up`Ӧ͆ʐFT*,Z?rQF3gDpptbnkkC\a jB^A }^hllEXp^{-_]]-?ÇJغuaRDn_QYy(..ƍ79~S  *(,,4p'|{Rŋc߾}P*sN,>OϣNcbb@PA //:C;o6NhZ:ŭ#@`~W>)))$JI&s!WWH"H~N1m߾l+ʕ+-6`]G:l޼ "##Mzꢤ[PT'?)>}뭷zKJJ{GիWG`$СCv|,//0䙒L%%%իWJ3fL'WWر9^[ ҥKtk׮(p:P-DLL̀Z ڵ@w7x<ۭ:u*23-Ξ=-[6cL&3܃u:k2k.g܃M oTPXXhj.ǣZ~D"0!?1'ODIIɰZ0(=r=x _nu㐖9sfe!2+L޽{F"FӅ??z~555.}9 'O~ؕif~ }nw,]W\O$GlpV/VxY/Șƙ\gq'''ۭ͠,uvvg͛7HpY[ZZhɒ@AA4mZ$ܹΝ;G'[BP^^YBBHxBMMM6)]FsΑU!cڵpvvdffcvwŋxDn _|$ 'ĉሌ\\d\ <ѢuuuGEE*++A a;Z-v477CV2+W 8?d=5=kHKXl),sww(O PP'')R)D"|Z?~vh4h:hZt:t:qEEEq[í[z,f dcƌAggnܸ9X03A`6AKcd W /0°-6Hd _bl.() f 5IHazq_6d'$}lM 4GU}gfn/XZ`2 搆a_@R.p㾜K`t?1lo?[`0 `0 `0 `0 `0 `0 1NKIENDB`Contents.json000066400000000000000000000047041461511344300410100ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets/AppIcon.appiconset{ "images" : [ { "idiom" : "iphone", "size" : "20x20", "scale" : "2x" }, { "idiom" : "iphone", "size" : "20x20", "scale" : "3x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "AppIcon_iPhoneSettings_29.png", "scale" : "1x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "AppIcon_iPhoneSettings_29@2x.png", "scale" : "2x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "AppIcon_iPhoneSettings_29@3x.png", "scale" : "3x" }, { "size" : "40x40", "idiom" : "iphone", "filename" : "AppIcon_iPhoneSpotlight_40@2x.png", "scale" : "2x" }, { "size" : "40x40", "idiom" : "iphone", "filename" : "AppIcon_iPhoneSpotlight_40@3x.png", "scale" : "3x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "AppIcon_iPhoneApp_60@2x.png", "scale" : "2x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "AppIcon_iPhoneApp_60@3x.png", "scale" : "3x" }, { "idiom" : "ipad", "size" : "20x20", "scale" : "1x" }, { "idiom" : "ipad", "size" : "20x20", "scale" : "2x" }, { "size" : "29x29", "idiom" : "ipad", "filename" : "AppIcon_iPadSettings_29.png", "scale" : "1x" }, { "size" : "29x29", "idiom" : "ipad", "filename" : "AppIcon_iPadSettings_29@2x.png", "scale" : "2x" }, { "size" : "40x40", "idiom" : "ipad", "filename" : "AppIcon_iPadSpotlight_40.png", "scale" : "1x" }, { "size" : "40x40", "idiom" : "ipad", "filename" : "AppIcon_iPadSpotlight_40@2x.png", "scale" : "2x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "AppIcon_iPadApp_76.png", "scale" : "1x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "AppIcon_iPadApp_76@2x.png", "scale" : "2x" }, { "size" : "83.5x83.5", "idiom" : "ipad", "filename" : "AppIcon_iPadProApp_83.5@2x.png", "scale" : "2x" }, { "size" : "1024x1024", "idiom" : "ios-marketing", "filename" : "AppIcon_AppStore_1024.png", "scale" : "1x" } ], "info" : { "version" : 1, "author" : "xcode" }, "properties" : { "pre-rendered" : true } }Contents.json000066400000000000000000000000761461511344300353110ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio/Images.xcassets{ "info" : { "version" : 1, "author" : "xcode" } }LaunchScreen.storyboard000066400000000000000000000110441461511344300342410ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio NoteExpressionSynthExample.plist000066400000000000000000000035061461511344300361650ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio AudioComponents manufacturer SMTG name NoteExpressionSynth VST3 subtype nexs type auri version 1 CFBundleDevelopmentRegion en CFBundleDisplayName ${PRODUCT_NAME} CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier com.steinberg.interappaudioexamples.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1.0 LSRequiresIPhoneOS UIBackgroundModes audio UILaunchStoryboardName LaunchScreen UIRequiredDeviceCapabilities armv7 UIRequiresFullScreen UIStatusBarHidden UISupportedInterfaceOrientations UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight noteexpressionsynth_ios.entitlements000066400000000000000000000003411461511344300372350ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/InterAppAudio inter-app-audio vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/about.png000066400000000000000000003771651461511344300267730ustar00rootroot00000000000000PNG  IHDR|JziCCPICC ProfilexTkA6n"Zkx"IYhE6bk Ed3In6&*Ezd/JZE(ޫ(b-nL~7}ov r4 Ril|Bj A4%UN$As{z[V{wwҶ@G*q Y<ߡ)t9Nyx+=Y"|@5-MS%@H8qR>׋infObN~N>! ?F?aĆ=5`5_M'Tq. VJp8dasZHOLn}&wVQygE0  HPEaP@<14r?#{2u$jtbDA{6=Q<("qCA*Oy\V;噹sM^|vWGyz?W15s-_̗)UKuZ17ߟl;=..s7VgjHUO^gc)1&v!.K `m)m$``/]?[xF QT*d4o(/lșmSqens}nk~8X<R5 vz)Ӗ9R,bRPCRR%eKUbvؙn9BħJeRR~NցoEx pHYs   IDATx eGU.pǾ='Ng脐 "2_|"<'"" " 8Gd s0$9tzӹVs7u޵j՚jUujO=(HShH(^ǘPU*Pj9 zPѷ n@p@1[Կ@"XU.x&q@c2d7YƲ6KHEw7d⢵k8pUQ/ #L:$D<0*1 buY=*XF"PC:zHdMv &a>$v"$4Tv8br8C@GQT3L8c]6J~sDU-$i垂}E'  hGiՃD9E@BʥNBФ*ۗy ALfZ@\$C C0^pg,zaUzΛUfDɅ ?вR++pŊ<Xz ; OFK%rl8ф^%(:c;̿HV/햪(چ , (z9Sy9*=*mZ<ۨЅQ#>(&K5?37m!FU sg"[;$hVc YUcl5jb8&?o Ul[G4o[JLn9%61`{p { w~ =5].ɧJ1Ẃ;(sY|9tA! Rϸӻ \.Lm9>f J.#RUn|zTҗ +Z3zT:;+ bLjIzqBɢhв4A6l|k'aSnqP*ĆkaAM)'j9N;T1V8Z;/d?N\Hf Vql(X#=5NY:A2B*E$*.I0pݲ=0̇-C FJVaK ORC#.@BbOU=yInO-!13 -r+{ ^${zV㛴O"MbGC 3= 9 DJ^@e|])1J(xPIPDHXezIVLFԗ0y``j>#9CXRģ)&I-gZc% ̚!HODGޥCo!Sa냆>Ho0[)YBǔGTnK oN;;dY>a@HalEcM?c խI7b6m M_,Pi"P5BUVr&ǘca['pB :,'D$$Hy+^<|pl<) ΂^*RJ=uW+#.mrU0mA?F=g)ԙ RQe]l.遡]|0V#f1~DҬq^NK| qbirZݟ`O6եA.Œ뒹h`aCp$$`ZXǚR!(J8ND][AhM3db$B2u -nƑd@*2VUik'Ԁ"x\f WoXoA6EfsC.1z U%|DbK`2a볭#\,4B6p6Rj}B0j#`"OTi]A좇YYHWiJW+`f"s5i_5(}q\ DXCȳR! TBPjmrSeR1DdA?#A*f lxMSfi޲%,@$l@4D`*lV+ 2rKYkiELKِBz#*wz5 k]B'f h*Er=˃>$~esi{][? 9@k ^plߣ6IaI' g( RM*$5B`:<|v^ʙCqhA^a/x bKyk$ }ҾR\3snq !& [L0qxYLdm17B͘% U)+J{5г*a8: iݡ ISDK?]󸀌Y ao_L`qRwe@D[QF2SYV}i n G|B!2ؐo[;=41p5I Ew1dr궎R SPЬprJ}ahZ}-@d3+{# q;S)Ov`_RSmfً0XgmjhTR`)3W(B+[(B|-b^Vj^OiQqІV +x$WNύ-d{ɜ!Hftlfv"a^[[ֺjeEhukk(pV&Z)SPLNj_^X %Y$e#&y?/XW“GJmwQ0,IU$a_NeT,%~fqT6UezvR碾Gꭥ>5h-Ark%DA޹Kh"#€Xt4z18t''w7q Lt_(xq*RؑV8զ8JWW6x*EH(&檀DS4>(P\;PR(Eg„@tFIa}xWY01E V8fS!)Ėʌ+z=,zU z#7YiN@PFDnKϓH"ĠX&[Tu&pF^zݠK8}wG3(M\ʞdeRu=kB(%(]$xuI R²5FIBdN.LA3=0ppĒyg*ϸr)\ҬJ8lEAxZf`O3˦z=ۿW[˫\vɔۈm+}Z%}Vt,WcbNPb VVViFQ] `U4Sc+zHli\ j^rֱ=MʢEY)g#?ۊKNeU&{ ._ԥ^QGR/R& KKXiFè,l(trM_e}K[Y`_VVf`V (𰓡 ^aEC ZO2f"*b1 >0xqA?|tZg<6;)fkG|YôHzd!|K.U$.=*l[\d  9nOTKq~ !}5|H >ث=ά؜H!ON!Ҡ`Q 40xCԬ`O/X5;/gDrI}jzꄞrc&IJ>%**L{c܊ƃT!eP 0bK, u[;^<vXpA` njeZNp00IySy=-n5,$˄ݏ$GOTp~: MN_C},`/AYSkPCPBX*P1Tς.H1yn6n&h.p0=Z)FmHu az~RS!H᠄}LJ ݜJ{:q; .(,RJ6% aVB# %թJƉ;Y0$T ED*5Qu\)$\هs\X;I"!4Nb7o6:U aUR.t]MdS 0#Q>jFӞ.Yd(ux 4e>Q9`b`4fGJ[H)`5H{jw:11ű0?ݷw<'NCVIJ6Q% (A_x` 5x3 Ku]Qy 9ǨpdZ[C2D AbMLPkJt9A\^bui_iĉh+n+ٹbnvطkžv.}]wumfqO[773=FYğ}'>kfhBk {қؠCu8ZB{X)]H!Bs9%@"#ZY3 lî-8EK Yeɇ6]YU>?sA*S:chUFD]@4|%NyK+1R|K4 (U=@v.,F:W缰+$r+>X^YrO]X ն{X+mm,cc4J::1s@=vgL>IOc?S[;atb*1]W .{7޲o}s;]3w-usા0(GNJUSk׮k}̱#>zO=6lڞ\:biZ,tY\ f'l1>V!Y44u{8J~|`/'-~( `Ēc۸L9ㅐkEЭ}c@T!ҁ(L[+)eU?Orڙ#V)0m(&&bbHtȀ?v] N N(+KP=eKw&:(&4!oe@^頻lӍ%_84z}Ir3 XIw ǔs5`.0+ͨ@^)TAr)XW O0jTkiA05fͣ 87Jr D%`v2§<PbCDh&xFޒNC0AS`|㑴gAqOrU[[CTE <(ۍW;QvWc* #`p4-1wK5mTGh]-Ur {6ߍƼX 1'8 iUJ(&6@ 9J U,F( VwAgQ0Tt} U9g | M\ Ӿ%vV̭ШYʶ"WhKB:ez$4 G>:$)Q9 9Ŕ2Qasx_nk|%lQ2㕣^~6y^_%YtXM.(vL@V'#1ICwlɽaÑ7e)v%*$$5o6SI&_c564G&&ƺx1:26ah[DȧiD(C IxJuq?nhoY8;H>rSw@IA #5&&X 7'݊n6ܝN7(g})˩pOjKB_bC0bU\YKi*F)А-Ku& Mj!E&jP10êa;ˈlt.t s*fĨ9>x?_ȹ8d_o_(jGNML4:cx˜ ZxTo6S9 5 -4@ FM|aW $nS7t;?Ӹ1e?7 PR C˱@!X~֏Z-܂ oĞE Y(6GgPOع-O;o`g^M36b/z馇#W_wmUyŵ7Y4? [LaR5nj|qgj'wTq[?16҂ODpOF{7 k ҇}% y4A.xdtk+ϸŒdNybQ UBO8zcQmi}Xt6e@ȶ˨Y >ld.b8p%i{mY) rHp`\KOCG1 (%%%nйy4fec$3oҢ~~xВ:yM=2FƚOo?a1YA4C}sV'whA8"1!/ZqVD=;,Wf%%LjDmt 55Xv}/z7n0 z8xq'rfo|bƵů<+tyk=w{cU1٩>##3*boGs3?b8 itݻ;xMݽ{䆵G^v#obA'Wk0لH1?3]H*UV7[xJ _*7G uhZ@/<(jwpodc鍯CXzH4-a[$rK`?>咕wRw;rpGJKP%ɥOH@t r-AqZg0adbSÂ>95s0JQ`Zc=f*m2$l7(rfge2=%hiñM} o[x[ߴcm4|;ЙE_~6]M2apZw nwvf3z"Skc-MGnj?SFO:O*Vג X!Fz~P"*Y) hvgE 41# SdiAixL46Gi"@DuIĕM-֣}='֬vObۧ:oNð,Z& dUjEYwZ ʫ&:ݽsكO JgٹmjџGXvM199QahEos+bb:hhG=v?vܹ뮙_/ۿ7su9=?hPJlxl_fux4v.>]}ŧgfg;oohhU_{O `SBrHdr9 ~iP;߹c{o5__`#yJ#0U:!Rd }(͈RX\`]};` |"|db34*H( Ԥ7І,QJU>"Snd [Mػ:7kvú[oyo`?~~nx㟼z|t,sly2_uˆ`d7#\)Hܥ_}WZcx?y&(6:C]OMNzmVɵp{k|VPdF|xJ+K"sX a4Ѻ(h]G3* "%8tfЧd# N4DkA<36hkhT>AlI &;fv;s8SU1q3Fgwp~ A-8-aW.'~,\R|K_<~v7{lĽޣ?W7630@%RA$ L{2/*7QSVf,o{nni_xϴN}bhiű!Z@vx =S'zZws۷}W|pgy\8ylƢ CG>0?jw[݃󹥔8Lt'9k 8Nj?_y?9_x!ne\=?D߷O2;R\%AfZmL1C3 ED2{']j8n܀$@CJDE$^fPmC#1,#<ـpt)O N @ W(;49R30ψ:=Ҭ4nҙhZAFkXNF=zAx䑍w{RB%xS1g ^c\6Zv6 3NDV^ydL= ЇO=녿vn_v>O^fF|mCs5x(n*~r%("Gw> r+PȯJqẐ$pJyP 4>6y{^Q`q[kD@ O|LV&mpZ Z -UAqD l LљHTE7"<nCB A)H E@ܘX`3Sϑv Y{1!&ni?ZPfmpk)jVQ]f޿{c[{yYJ9%  OzJnY{ռ͇ll™"|ÞZgp4شi_ͫ׬㣷l׽ftw{k%_]} 8msFX~BՏE{RKv uJb#8jGѧ-,ރm;ofͺ&-~ lF/u8r +YdtGk{]kӖGw{⾽{>khOX\|Mn ȢF $)VNg } I2/?\ [V¹QBQBZ.wS4eD'zJ R *a:P" J>jf%tl#- 2R&BȂQլ 0j:ܠ_z)Gm>7X_ ogn)}Ώom۱X:4AK|kXyA8Hh!n=nU9܇?b+v}Ws;l |쁯^q~͛SSk-ɣLz]L8،^c|C* [lX؋.9̳'h'i~tRjӱ 'rXWP!ԕ2_D۳sG}?5旰: 7a怰#Գ_+>O_YF9&.Bbh, 6%Tvِ7Gb dZ[mkrr eh` IzU>]^Q('a4#8&SQHBcM qBbeߠO9P"PF9qĕ:̵!D-!蓊?M^ϮKjh}e_YtZLZBm GMԹ۾+{>Sr6*yPA~,G3?6=0@odg ÊAL0u'>z܁}V֯_U$;D8v&=A߷1!&77N?]c }z/y3J JXi511B`.$$dB@5*9y"gGO JHUe!5hU윦F)d֤ "5Y!#<̈́`pO-'c&)N3:T={vwoG<c|V<ȲF>zwq ab § n 7{^瑆 tQ-?"2U (E ·6,F597` l[8n8ycsU&;V.*^PD-qr2)JK{g UE @l)T d G ٗ *Y] EqOXLpgmqםwt✇=bNsLjJ@ 5ulltd_6m%[Q[hHVΖcW1H$)@ۆD],8y˒h^$+.'VEkaa]#F/:Ip;4*Jt@ 0e&QƊ%Q=bN"k& %*%V9pj5 s#AV XAЮ:U0`b7m#5s9mO~}N>譫FJdpU#j֪$EiZk||֗ȍG[ xT- tK$ T%qؘʘSdtA >zLjN˦ĆTUIis]cy*^r35RkH(F |DLV(EJ$蓗4*Iu;A뮻f~ȩg՚ 7]A]iqCm}ЗL\}{m>/z*>mÛO~|/B[kBY Pxŧs_w?}?o3_ܧwQ,mIr1- |c8*k"!g=dsΙe_A6םt-Sﳺ6Lx!Yud9!wl!ثPʆ*aI1?޴s>X[8%>Ѿ|8x Lf t,NSta{ p`Hlo(6mrz?Pz yPs&DADؘhC2b )/ #FQO"B8p ^XĚDCZAT9[4o&DR !skv>oύR*dC\Skm.=_̻~-.A2ɃEc*id~5spg?=!\.G/>-\V5Q8M_j9as-;Q}3m͖ЁfkOBc#8FʉWfdPt8QEti ԡ;C󬔰 ybqx= "`40hdSw 㫴dN8J 2{QETt(d֔ :E:bY!"XIr:M>7YFf`vZ]D9)A߿@=^׻ Xi>vQ*rCx\/]}{`+q ۿ{(^_׮k^/fӈk/Ukx'n6!ۅ͔ȀݎdG~ ?`|X^7}g+_G?ӟȇfsm߹oNvX@ ] j+WAx u)ne{B=~5},~]O#؆ ZGmd>Ƣi\ȃSrad}}уy^-a74_`,B2kF"NT@_˨[K8&{9eb pW,hʼn*C5-J[q+_%eVAPd ,gT;)^x?HCzg$a{3SXIBt>,Hsaz8;{_]qƼVByV>~/;h9s_q7Z ^aK^Gxfqzov/܏#R_9TyGJ\Oc=MW^q9ZxuI'y?ߩ=!gy2. ||O? vڲ\ICӇt/RȬP9i=Q&Rr8"vVհDȭ0|9[3šAJUb{r 9z%Bim6$ B$!9Qa62RU%%QQxzbD& PedLOE&RpYCϴd@gY"JD$$& !vvov#H=i.R-2/&{ 5k״z| j4/n|yO=K^/bu4^{ew k~m;79oa [9. Vꍠ"t ŘaqűXkl-2r&?azMHD} \/!uϗ~z {xȰ}5~E %[8XYY<ׂHOdLQ8JT m.\2HdgfBI5jALeJLIF旐|d1ۦ โ dk|<x㐓xeeo!Lz "A* \wKI6ik~;޾ܙ)ݯk}/Wh{ϩ=OnH*ҝp`L B2`(`Ɉ3y48OldDbz3s=ah'RN! +Y<٨ R;xx˘ޒy zj`_Mثs) sǷ~]ėߵcq}, C4S}c.$q vPy2JU0Hk-C>X5ؼHe Kmɡ]2"$^@A;O <6HDz@墉(('Q%!=HZ#)Ix1Y.6'U cЧK*YɛUI / XK(/W<'4+bSl%ZPQVVc <2W )ptjM_z#ŝ7o |+} SfOp_22E#c^5U!U~K,u3qJrt.\>l߶m݅/{&rhY|w)%s+ƐIV}q-ׯRz]`osL d|kBdv,qٿ~dG(EX/ 4 L\ b$B7 k#S #@au(pDA> at IJQm팕HR}"BF,Y 'p*gږop<&uՏWs/p?l?ox?ד?$_u#*xp >qhwaf,ʄYI3Cϩ=OSPtkY"ީL< !83y"rr@~>iCd0 IaTDE4k-jH6Tp2}x2:YQ%Įhd͍|`^3&[3ǀ".^ :z:V[ b|=]o=ۿ{[-r|Vٿ}[篸rޘ'.~[9qZ>A %a*e ?~%~GR+}1[K{g^3l!ɜ|gannϣE}M6ЙW noEamG0jFZY&Ne<Rb]9g?Rƕ~7+ AvF[z9"]2M c0ώK}-H c4 4(ѷ_̎EҀNG;hDx$}ϱe(f,5:$$$:uNPHr9ݒ}V0{7NQ .XGG=Kl{_2՟(߀yG>}{.{.}`ϛ-D">~AFsxӉo|I׽y 7ޖVţde$d/W&yֹcy*#l}}~__8l_ \#Z)i)_9~{:1{kۗւ<&UO P4q%aZA^}O!c<ۅx4TXH͉Hc`ÄZbcyUGI)4'^(F(/"4+.c5HNd,ԃ`=}pNJ4} ir.BhUoJ{Xg?יދ/' /blUͫ?XѷF+ z5k<<_<9U<ſ=~G=k\}}) t=T+d(.6|u jwl~;o]Mp\u_K^O_IJ*;1>'5FgRajH4CƖ ѰN=>V[CY$n~ć Ϲ8p>b{ȕ0slpx!c幅3>; 8'pq.+ 4@" }h6%A+rDhhY"A)8!QZ,>Wʼn@$ِ& (Ku,0~P!|Бp9 PԘ%AR Ebl BV߶gHrb-b?xoun~Ot`=ߙ٥ LSWF'%p{q'ο}#k$]w^b2TJt\;yN|z?yfqV Oϻw^[oyz9FoC=0x/UW\޽;i ȕ27(jXu>ݚ4Vi2-I_*7? / ^F5_.1 Ns|Q'pbpqSn (QE HD*Eb)O,RFa@'BfQ_,AD`CE*y,unWh mh=i8AM:|g[=`/|㉜rϪ//r6}O&B)VիO'jW,Q+Jc~ qS't2^?ڿw/5L2Lv?eN˼yq[<ȗU[N>㜱9|bH5t.h8>yW{W}w/Rl~d[9O~Wحї&=l{{qǽJ>:m5i"!aBN1g% w`op(\i;{?س@mhZ!t2*'p@i AΘq%xxEp(N"  qbIVf(!T( "R*J.Œ& 6)u$hT`@UKa-h2_.+'|f=M ' ћsxZ_{G]љY>6w_7vAVX]X"P`wo;Voh7ߜjƦa!Q~i6QA[ #.Ư7_}vu}݊{a CM;xx/ #,hM9}'g}HU*x\P~``N P/ R)N I7Xђa=B@~…uAmd + փ.trDqHXD$ݘ"E ;)v5bރV>!f}bSO1@$qU.nR '5"3t)0ހE т?1fr (9~7^vÑGnux!,omM'`#L< xnKݗƋfvs7;z b#+Zc;+ ^ IDATG<[k׮mN'&WGڵFǧn a_"v߽,"Pw׽vm ۶ݴpmv[ɠpN~_+Ox+P!My@g.yx>) =L90\xK"8#u7S^uߎ.FY6L5^s 'iR{/DXtwdjx8\jj`< TWe"I?C:#%＀5^3WtUX1T" É(` Rrc]&DԈ-,f"+ DEęY0>(A&d@(35/!mA%!h:_S@UVvHb>d0kQ"__ 6́b}Eޘ^5~^*fnxaXMf>뚻۷ߌidž@J=jjx@[c1X+U9Xn=^,_`ۮ>G0^ʼ-vڅ]N_pvΚp Ab6g9̏F8YɫE0Z7?pѐ_6gs9h U7I)Ы"69_Uَ~`ȭ|^:Nge.3E!hpqBF#'RrpINQ}!!A(PDSB ɋR RB,K`n`,@6Hިg$JYI![]>F<4yK烇1Zx>5rDpnw汯X6"`W&=9v/wϵQNxv"%L9N(#@2/y'+{{S\azωv˞{fg`sce+Ua;qv=9;M I4/'D!)29T`AjɨM3:AXfJ)'ͣ$mU%D|6%CMIu *5&@k؎ t%QªHƒc/{"ݰiL1.eY{2[.W*by)ƚZό}NV{0˒u8='`6wH$ G6-lJOeYIgZiEED@X,v1 fg'Ltz:ֽN30^U:uԩխ[>~kճTZ+˪U̲BMHvAk-E 5)zR\:Gw!K [UG!w$ PH̎yj$ezQ^HAK"^D:W(Ɖ H+ %xRQB)/I Q$Pl1.Urx$6 [h2&n"yR !ʥBjAN[IM_Lj#1I[Y%7ٌpjQ>-)]*R{2[eUP#UiRYLGբFX?˚)뗧]0m) O)݉ҧz)>8]UH|O)10p.VzN[W_G"fYR"NhY8UHՌ'1̈)sFJb`eɹIR!t2#$"0N$œ _mn$F6g!'yy6,H~Lkp==*^O}bh3ڗ[6r˖FmZ~Ӊw<@FH%L/ULgDԡCx*,⚹֒\a$ ffsE[-RvjϸL+0,@aFPR$F,`T"FT `KT2)bd{ΗrBH0!#|p|`ݲS'Mʆf{W.xYR(k&- ۪M`_W'LQk`_-&za͓&IY=/x@AF w!HQki).Or<ӓ&qV,S 4PPr(qz4ڧT?@DϷޠWT#Edj~ TJmT2MH*%&]"m Fi\æD&cM:f`Eȷ!D.Or,ӴJUS:_V)fDʏZHkWBZ0%'GDS#+MN6{e4!R E= va@2Vn3ĕ ED&e%TɚILgOy#']P|%d<m^i9.*PҭOzVL!/xݲbENc%E+9-aFϝeѴbN!ERJYAN׷Xz?y]Leܕ挪[0Z6-gLS'x)7JDz4d'+F|]nγiẉ6MpoAF͘RVMy|ګrg"0(N@FbI`d@ZI 5m(h,jsAWQ5-31 $NPI)|jД۲T+ӈ4q^oe%2dj2YʴTz*Xޢ+Z@sRbc[\PIZ"h)[ls &w;vpZͻELWB_2RKigN__gE`,{ Ur?q?} e٠H{t|!ڃǎ,w>%ϲ(wHk^t9Ch- ~xi \Nb*e^ߞZ<}ulނn验5~d ~_3_MJlq#r+nj#Hؕ`woBH2!֢( "Ra*lˆz8}VO"N =.4-dCԦݠo[g~+Q(;GSA@_?Bn[fl$Mw5xۯѨkQa#8JyHc0?/>У*;7߻}VjEi:Lz!& ZzOl駞 ƴ%$\8Xmi^I*"J_?ؗjT/L]4Sƕ,t@6ׯfseVi<+ O ;'-*9A-kt *DRRb;> R|kt4 iq|bi  8IMn D W`G6<5eJe4>V2O:y o6H<ȵ+&n%G`6{.fTHewvm,z;~ _xccsfa2C߳7ߌn ;&9%Y+'KC̀_ş?/oK9.:aTejk䊆nj Ϗ !ޓsÀ_JUkP-_9S*6xeIpè=_}ŷpXW WH^Ms{MUy _QU#b\'VrHiVrLKrV0i7s,+>%"PLR!(aБY鰤TWQMbd0 ķ |}ؖ|X_GW[Ʉ$+/=X 3G^?8`^Pĺ~uc{3ٙʼs_]὏+]b=mf y[Z/"UҷB2diiYUW[߄6-YKNlJ,s3f )0`RDÙ"-{j ^$08Z~n$e(/0mQ {xĎ]:5qo/>oMc8~P: gar n H҃z@#E%xVvoQ(~ǽn߯~6r%Nk)}t=`CRjP`.XLN&Uyߌ~sia܅/>C_aG(?]"X׏spQ.:BAR_?nb iPY9ڑhw*Q @T3EDG$+C`ĪEuSlf!+Y9Gj<2R.oj"H^vOޡ %FU6Q'&gB>Vk0=-Mdъ^!@EkR8H_R_(E>-^k t3ͽ|"[cbb>4 {҇\V6|CR*K )\BM 6 j\o>Oo&S6),[_,9%_0|r2^&FՈmR09 FW]{SG "B8e*qRT:cfـoI5rIn&LRA,IBVH*`#KY?/Qvd;b݄~FO=z}mot=S$)p!= DrsV )nkK6ˍQKUW }C?`׶{JWU陌Fxd~W>o> 7k{| a˳Zk△sb3V"GEhA&UoR4:2xσM whf:u5ՍKZ~CK`}Jʉn@O"ܙ=T G2e'.ᶻffd[ly!OHP닟s%kuq—r 9cL˯/۳&Q}-RXڱKzAYڬdPY h>z~W;pET9Ebx?4q7T6Puѿy(intW8Vәo{ 57 U4ǩF4jW N_ZvidnPٳZ?o-Hr l`փvВPt$F丰` lN?[%Wfhl{ݦ@(Zнjڸ(H1js5fv@r*pA0 7qEl~xGֆd.Bro?۝{-?CP;;,SUKwu=Rs!/H 2=dh^hVn&O˥vQr8[ؗB}J.Lj=H9O +b=oH<v~N-4dny)=+vʥg,zހC9) ݣ]&:@ƖHaQDl0<`tOo+g~6JFEцIOSg oTڗֵjZM9aڃެn[.dib6b '.QؔE?111;cg{HXWB.,Ͳ/|ϗG<򑉿ѿ5 O{HBbG=ͻV=>_ %g7i*`be=b|VU1Vȩ]6Q@ zZKp8oQX/.zmc5Oƺ> YS犴_vO)M՝ ~a+6A?cډ Eq^"0{bjRT,ٺgM)ژ&ʁЇx4 42)rGW}yaK"O>>LYBb.bFfV!=[n_VyvHv_ŧ.㿵 Ӫe2>=rm= ڦ;n}c##j=J֝648#[ٟ(UVLZޤU>XгljuK_ʾr _~ޭ@/uK(ףfArFz(l'~Kw\7H&F,@'Ɉ!F3,dNgp2B(Z>K&,HQJѨt5RYKXͲuYZ"Z |p=z:UJV0yHW-;z`!y);GX@?ޔݽ{/,ӹ>eHd1ɘekJK:}?OPZ97`}|k/hPKꡭ?õDaU60?u-fVA,RmbyB|4]RzY ҺdV6~W5Z)K +Wx] k"SsE`c@}kY} l- ?)!iߴy=%Z^:+V<,+}KMB3_:f-hnsHcv栅0#Ȧ7S-c=I{ߎn}tWBMZ ,̝k}٩۶j>0d5kvnWu9@ .}<m0csG`{ԧy+4(Qcjz*˺\&ޣ*TKD7k_F-m힔[ƭ/p3RpGβ  9%IS&g"S; O1^"",Y'+lQJdEUӼ=+j{?kikkMvF-ʹN:<<2bEI1Ei qh@-u?9أLQ$S~ҿsWw: PSNO-O*a?[ٷSaa Y_@%l$7P*b\m5{0RK1~X,mG=O 6VEִ@ڳ&Sê-H?6zs:xiH>ƛӷu۶ɟŕsL7}O~s4Xv 18z&'9Ѵ H1SrB [1.H9=ypo[p R أ:#A؃CkCV{:5ԛem}>b6Y@π0yF*j Q ? 7}7ؠ TZ7\6˔E1lRcw[7KBvxeGUl;аS#+eՐvcL7PFw Gĭ~)j'xz2 b_,3зL&\!VbҾCoݗ_}`dn5)uῼcWwɓx1Tb&Ap왎ބ#xZ_Go8Ы;['Oow:'Nಁ ^fnVQ$ ql1BDW_I~ u*d%D#% ?y󔵅Y yd1&`.ޖgƮEjNPImGzd%D˯ վoiB̖1TRHGo/?dV*3ʝw7?w[BLmA]`ygzA{+G'r>S.DRqu:6o5R|3{ (%i_REB5* "h욮UcEURVĔ=KȂu ?W8ёo WQ.ˀE`1 QnM?Au:ѣcZJ^ P^Yۂ+6lA^^+}MQ6c3`(wj:zs}}2N}h /3U Ma/}/ mC7з} Ow]63J=uxE߹{Xfnc7}~8Ֆ >aMP2H+6 aL/`WRE2#CU, ^i DitAVZBmCA<]hN=0c;} 9\dG5a^qc,>9KsfYQa+R[o?|w }Rm{擑֟//B}+Z<=*-gxx>SkmzfGڊXͫddUD%IYB̥ 'RoH+Zyj~@zo4ҿcLnWIpigJ٬ *mdPd2taK6>V)lS̵|vϠ~b=\>8}{;oZBE &_^@[wky5"ttD,?]عymԌ7tvܐ{7i9c̑دo_tRGeĝ79`*2u;sw0݉+QU OSPUhb ,e$BGVd Ur|NC̑'bB#5M n@O.zzx)?)J~|~hh Aj4Ĭc`Uo-堏 (λ߽gLJz X ;QKjY?_>7lsN]`rtyඏdbTޮXUd乳?cGߌw7j1}%"O!Ҭ}3{I>@^ZH[URTweAz9U*)*J]aW!$Djj)4 f DG_*Ga'zȢ_d+4̓SbآAw`Bȕ)Wfn䝸bǎQ";z>XZ\~~P"6NB"ZBMN’N,VN^VΒ^V),;v;2:5yͮOCOɞ%5F%H/O3lA7_Y0 5N|G^h?8)@W U)RyIOdyLBfM\-~q@`2/4`n x~uZ߀LB}ľU@tۛ>::}$@%~Ut8ДOBs/|rJゎYvH7_m *߯Q,AO,.)/(i^csZp./hKם)Ca&Z/7zPIMZ4JW@JAl _nh ѓ?OU󧱇pKv,@V%_:)|u@%UAʀfP[?p JV@`_xs:HQ"b P2K -x#;>]1.Jڡ(62jo_~LՔD'QN/yC;/{ Bɥ~uсP*$VJbBȅn)\w%2K?CSE q>W^qQY&8sYO5X@ @+`!\ŠlO@,Mmd b*S[5OE>~&J-,E‘Ez+VIՂe?E})+)0(h3OtV FtZY0Z^'KEi~0mRxgR)? IaQJ=BhkɘDix8{H@> |JЪZ9GY-38vHu}f7tU]7mbkF)U nVMFW"œ /&}YRNizVD77d#ͺ6zdq-AIEČG'gpDrwrK~!>x"e5ɫ|E3 T<_p3:Ւ-u3.S=; HI эI;mIgE'eGVhGѦHᾭ% <0*Eh4ު$=JjhbN!)~I@^iNt+Ͱ]"%MMpZ^l dLE2.Fo. h]Fqfh)\x4c0bF/3T8O/X#Mwԏ#C,iv!hD Ġ-*֩\ LU,! FH)Ҁ~UA>- !ʡ^G1Xш! N)ZϓJJD:0j-Pg04*ؤJv1q m*[ SKfJIQ9fcķ]&#d1v3B(aSzY8և:G?)i$g5/+=Q۝CA?@WZ2A,=O}>AlȦL` Ť 2)p _,W0ӀaKU@\JO)`WJe]~A.ـ_!ӑQ q2/9rLX6=jXh+@Q&NFsd׿>(-g-[P'W"b+m0 [E^f~9XWb%jRUh`EVs5=&9`<)Yr<4IW Kpi-h?C/[0},=pWXH׉ [L v X>ɂY$(W;M"ZF+cЕFDy {ڇ9D2!GSVLpns E)Iu֟](c Ҿ_,4pP_DELv'_ؗF.29A rC6Tܲ+ҵB=4+Q5k 6*\PMK5Z{ǀeX3f]# ] Eq-=rebv8Yr?%JR=sdxp$xa4r(oQȰ`vrP I(IǪD=_49&X-tV(Ы1m"/I %!;mwEP~yzĊ_`OMCMVt/#bt+`d*V?fBIȳL)OI WxiU|jQhGMW+;)Di`׵b0ojՌ+mbK SOP4UrkkĵW 4a\c:+^zD jQl}WL-`[8" DM IDATTޭoGGrmd&POy&Km[3ج{RSTI.VL*Vj ;=/ ȧ^P]3%̚QUVmX:ӭNdxquSH^[][ZȭV)%DM/9V;^ޜJqef61+2c1OIIy;goRk_ա+J=.~a 0[o-{̊U-Mτkx7_Dמ77gUR(,$GM]ij"Q_:Pԋ8c7}\S nCKzXMz. Mvlȶ 4 -wtF568Đ4J2xދƨjysKȿ1P95)kJjrMeW^ SJX ,eY0ݤz%f\34t|TآjH%)>XWt'}2 ZʄXEρ*BAPD# -Λ%;c6Jg,b JQK3FrY3TA|TQIr>5KZWIV86?bД,jnj2/R_WmG4IH29XE}QNrlFSh`UǼy)eᔵnoݙqהm'd:BKκCf,(0`po}3H " Z)m䫪TcEr&z fX>b.{'>r _[~PBwv1Yk"& =5kmI>v@vV3| Ud$_QeOO|KշY赬NznV֑XOq{J(lgڅ0Z)uX퓚d/xt-&" Uo'u@AWGj`mIqLSz%!|,[ۓ tG?zh&bH>Elw]edX2n.{?IV(B\`(PV~&SA^|YfAO+y*4Xc+^&)\d[ǼvL{uKw@YL|c.RuRko @' ϵ}D UuIFwʊ*`MW1غX UezΪ\DR9Í[-rUX#WG73䲂b.=T Hw(c #{ O+~Vc` EqNa'W,^s P,N}C6a5\Q?E:goai1ba#W'R Z.ўd@pg4&Cj1Ϻ*Dks-{fI*&B09LHL Y g) "Iwg-R@ƕPY l$ee5\1ZJw s}*5{J5Zi~iCtc3Bl6 J2@{KF0 yGXJG3%Nzt9F6wEQ@di!ms-|Zt,s@+L!a-ѻ2/WjJ7]f5[sRҦ|^d^Vf&KAl2KY^ȫr[VcĊe 䪔j̘BdĦXeaG?Jހ#~@oma-يl@gŬ˳/dVZPu4uCz4l%/tC3܌\֢=@?Z%Q󕝉ҕmwIxܙ=wD: DMVk8ύ[w؅Bsp6$v#_df|j}e +G EUCvTDvCY1r''V Pda8OE!iX%eYP@42GY4k s 0Z3 b@aoxEH‰ - TZ:qHՕQR61M\ndM6014NU&Y/犂4/hajMwĹVlymW|%sw!R(0u)UEۚ+@fעPY*su32X-+EH͋UF]PHWrSB~ S| /zoȭ4!h$ A5S~r y߼=O틧m  6\@_Q}vG,Y}H\ZVHTᴟĦm@ LXQMt41>ML2v#;3CGD~>$ǪrlT0rz FVsm\j^䔹 / bb JV\ jQGʃ^FːWfžI-3PTBLerP*S"^*߸#\-|C|{oГ6 #ѫ .[; {?J!tbwoܒ) G6MRQLg ae\ޥ#Euږ`я I_BaoAtZVdMRI&jfVBH -J?,]ѲQegD+Q@ejZ5VUI*#CWR%  le%o72 0 {9k<߷z'2.U5<bbАicݙ'sJj ]\/@ߤ!QiZ55ِV:R*Vˬhfѭ[錎Ɯ ;Ji1}nG`\TMҬP |FeJ- 6ܹ9V%)WXz%ss;h(jfDdB!cDUJ+S&+YsVH#k#" T -/ߖJGąBsv|6X uNp"\ \7+$Q~]ſn~B u.3V,JvGiѤHUZTN0-m{m`M.jʈ] AORn(P)t J๲Er)+s؃ܘ;odi$5ʈ]07OЭ65?,!5֕5~{2{NPrmνKmc̐`3 Y[#f2Og+}ӊ5'w: *.&!MF9tWyVZ',&yb@W @ž (ƘX-&\]3KmeKMVSjs3VFWmd2e -Ij4M9nD,(3g,ҫ"CA.,HerNsUx-ғ;R%=SVe2k=-L_֫ u~{D`VP9lP^վz~J_}?~kfwvݷ0Ц.@g>`.-0 IE%R6%%{*# 2IqE LWBȣt+EEXdJyPD@!2QR<,e /2YJ,CeE24Q uV +IYsl+tdVLR0/~m%(9x!^(X&~ fVli?]",5ݬ׶xޭo`#^&е҇Q'uWtMH= ʃAEqqr݊%4֌TK#z=؋)Vt+fA_j^|fB82t̂dU3!e2XlE.#fJƌBr*$ZRRb,RP+&&U{ >..hVXn8@^Y<N֟VlJj G8>_9 an3.$Mw oG5u|Gm.Je?fO5O^f UVVNN[͘!-|f(J Ew>@/LH @RuKIYyP#!c-EΔE P2Ą_0BE43=/rbʑy$FYWoP3W- IPs$")N m8-j+8/ 紧/ݳ~'x4 H1w]ZSI'CЍ%,*϶uXSsdu*_C ?ӧ!m*^@{@/p*lؗd9q hU|2Pab*E=DWFz[Ekw#S,bb_KJE^fjL6 )%X]%w;\^?a~V}au~Ԣ~\gO{Wܶki/i@9 9e͠(E~X]}_mKm͟$ *\]ILا>viأ*Cv.KZ2-# =+,s֕ Z)y:rӥ%=Ӊ(N ݕ\%TcI~τd!!P_$>dGeAɅ]]L=ol˖{/fZNo۾}̜; ۶\X[?sS bKuB[uztFI(a"j8sac6]W;>I#I~j? _4\#M]mGwhIHC_f+u\t.]9ϲ~Vm("7puRgAl--mɻ.duUl$F)9(86]6)Q`E&2!7W\jH.E8/"t voT$D(,K-c[†AMz>0uAZᤢDԂ\j̶H|I%u=C8ʭٹs;fN<1m|[csE3ӃVl%BٳowމZ-+S_qGCzfnv沺š,nLL>9}s=}GxjrBWfBz[/ TXI{ '{پ}06,E',{~nng>_==o!}ɖƖ9VlueS@V?0Nz}zi jկh7{ArK}۱'sާ@_u@_+$XjkWGA9~U!ks&QiU r{8 Z ||d? Ϥtz<~7RRt2:pMKXY㗨o~3 /5P:Ko ;723^M\OD(*y 4zZT]_ċsS#3V*f*Ud3;1,?~\{=.M)(S!r@†|~G7bjlŞQ@4 j_U}[Rj_an}[U@]\cX.Ay0ߞM.m/drv/u љvQaQ䡯Lʭٙi]Β)5@ ý﹊A3GP+񆆩xT 5IO1i386E͢ ^i2gf\xg^}iݫ1^@7zaJQFxZwVZU$[(N81/:Io7gYyN%N w=tػkQ-ګS_~}LN6BGGomNݱkȓrB47B DEOpG#\uy1Oj4!-TT9i`q~Nla_lS0[]Y,V=`GZ!W,(!ȝtN뵊))g*JT9TadM,_sݵc|s[ov hbbXNõFr`k-v:Kڦ\[=r'ze-8'&&Ni$ X6gSe9`@sdė73&K*Jy׺2|gV~SW^{ssO붾 ڶ-1큲ZB-4 4=W60jQZhhh`ph5k$!V6 caRB>m }޿7l}?uCϨByBZܶy ښdo߱}hb4|R~Lg!%ОQ~N`+X!!$_~~PG(|fn ٞ,2I]63gQYbUOa~"÷:?6r}kG};Rɨ&KkV* V^e޶`cBHc(|Q; S'+)Cb.sI0\&1BAXʱ1yy[盢+(DWe $"3b;{n]oگ0yzraltsvcֱώSKf^ +~>Q;C{؉#o6UX`>:jF`eƇ=u k ww{qjQ[NN>52a0"-R];}{^3ϔqEEOlRɕJBJ!OS钦JOFli=l=Z8:ǾGv:;)hJOm[<=W\uͶݗ]wke;7}s+_>{2t^|e,zET""N6G!A/H'-P_`VW'Ĥx*[^9ؠ4NR0c8.4|9q̩XB-VVv=W=82yQ"R"+ BGZE[%-]W腟$¤r^Rن8tIEEo!줶nN}=K~Ǯ]FGFW^uՖԱٹJ"^舟>)NF2; h$HI &gENc693~Y@"_wʊc5\b(ZJ^̱7h|+߽w}}^9ܳj &XJ/+Q64F}`N}x$Yy!T0m M|4+sMr!F׀5O4W"{-҉q꛺?.1!N'\ A 9n}〧mG|>"dO6Iyӵ;?ZZ/$w'7|v|k%- cIrєOX*zppOۋ)31@|ߴcÅ @ Addge"e{RK'ꌲрD.Yv.ˀOЈ=+ }*==P1ʴJ4ol; IRb贴mG8K;sfrŗ^8vK+d[OZ8'IԱ.E٪.죯3ziGv_`Uy/\2ҔBؓW-TSHm!-b֑T=<(dɱ*& g2^uIWZtW֤%ETtfvi[MK~՚Sgힱ-[LJ{蝻u :TǥTbQX*Ʈ+)dtow]wv="70V>oyc/}q瞙D0ǒw|˯jq}#v>_~ę39Rqccc7p8W/v9MB{9^zq+=zSLtV^Gߩ@N荭ʄ`(}dŇC/F^x~໶ٽ~=:`.stls;w6O=yhW^\M[4:6>z죏|ԁkr߃xvfsؑǿȩ}jJe:7Vv?˯js߃7vOɧԇgmGFAun|?vNgY񍍍 Gf~}FRFZ5_~R=?noe]|=d±MUשW^ڌfF2lvR&+:0l{߶ttGG5#ke3>'}.q05F>{ߕi0?{N]1 `-=oW]s` yyEb3N:5_#ZI\[}WR:xW\1'3omW]u͸Gt`I۠gNקy:a2fDصCO xvh?gF/p*#o/=?{S'O,ʫgG.n;e}7tne&@Cy|Y\dI! ԧm'yy_16z7r<i3_qm5w߾w M"m믽K2FfJ3xбXf "uGzGNO=qX>=a~Ȭ|Xe/ NqI>֞}_un33ǵ=xC_g433t ȯeM>LSS~'gEՃq])47?G`ӧ+haj%/ UTY>{}#G U[-Eiť>ҙY%/]_rle/3zЬ7OϞ.}eWEj}&ʮ84=uN=uٗ_~8f[[X΋[P?d:/<|Je>{3}vJ%-?u@ 6(^փOff@s<~|(q+Eof&]v +"E"7EݻF8{Ϫқo17;7394dXX_䇭郦ǿYZR8- feak SKgx;~}_i?X?ӧA*uıOfg:zB'&LJ{N롲+1FYD>u:s칹^}i+<`ãs y=_0Gٹg~ 3߱}bxמ=cw{nϟy9K,/t| Vnmwu:x`FaK_|=>0qͷl۩լn 'uŧ+)@M}-߽OݡC;&jC% n0fo死 =)3g'N81?*왳~]w_ A(cb-y};&v MWro1VhܟҬC?4Xy3O=qP o")C~6] mع{n&Ѥ!PbcǾt˯}'Mhaj 􍌎}Xw/ZښiWKX7޴E}y|MA($-Ov Lɗ_yq 7Im6?=ˏ>ȉf'޶mǠ]ApE]=N.cX[_xyvHV^콞3PL;~lMeMܝNoh'o@\<&e)`SEnmw޹ ~ӟ[gufu@nq}ٝ;_{;wtet*-H&_Ϝy'p._~w5qرYܪjDs{Wv''~ZҞvx<=6GuuIujk69+atY~;C݊wU׌yͅnsڱwFXzQbjڲu[ 7lۇ?~o{Wx8YbdC<*O87¬vl+ 9!H"69:L;,r{ߢ-4׀9lW_t8|wmλwhViҶۆ[d n[ X|GINFw7Ç_ߺuٳgbEg؛G~`߈V;-^ocԵB"oBz~=%oaba554_Wu> O{XZ+5e t74-.c١Il3 {[?\_sԙ[])LS}7t˖_u{߾Mcm#_忟WV̀Vn\XFzp. xf(f8.v/kKc} wu4t(W8$+dZynjRغC{jO|q]dS F7@UG0]X\Ew;lsۡ ˅*j}_l=ӗ "V[.(v[no]y3O=9`G:~7t=K}ou$Bmvgk=ڻ\6x́ W\}`ı G<<9E6X,k M,Μ9t0C9.: ϹEԙSY.gzKz[{~[v\}/~@IHD Ar((,{_Ųe/H͌đ&p 4:w]uι`fl=vNծ]<Ԕ.~tn,g\ I1z.ko)tXrA-%U;G޵{K2+/^V/.̏0]0F,#c_veT?È#Z:v/=} cjr$ӧxvr}iTeo3?SOwMX/Ϟ=sf&4!yy/TFU]zg oKITp_~+?@h w:~*q_zbjFPKGƏDn'8h j$a~2 ܣ_qkyk~7yqf|0)F{.ٳg?. ʵw~c3CnMc>}|v烟>|+r6P/E],={~ܩ]{F5O?z(W?S'(W ӏ^e>-=7j}9s"g/\d b}yp=kӿ2}Vc~8 !Z촎}Nw=\z.]dKkXcgt<>f(sw#4}pzt~n7x*Bpp2UڗuCC̾>ex[M;p`aٽ{vʋϟ>{TqB9S58 Kk Ν9}j^5qx`i׷>LqΝ3gNrf{K%w:!^)#ovկ-|NFԬL-Mr2w-<7Ұ|{g !6E*.uK?1q@6}Pؖ60=q>OsCnԽ|v̮1ޙyoxwZJN:|~ecKg>.ёc3s85Y;&jY.^ lŏ،c}qwzccxw<49{;tS9(=`Mڸ{gT?:֔ `p<,#pa;ѻ& 3X"C1%D.rkUԇ׆\m洟vQ=)Qg|yssvW/0G8 tT TsɎ'd4x[o`vt =qԸiiNwq+5*N> ::Յ{ߑ$AN>G*xk+3qQ#iT}㝷Z,¾j5v(|?~}ҡ1*pfБ'|5k7}NPiX bחufJvo޷si#~aA R(Ohj js\솑:sfssTVMOܑOG[?_WSYz IDAT##}71`[Y^Yޟ~_ss.{0_&OEFL:t׮,uMsgYEft gOsv_(=?{QOD|y&)눻Vi^b؄,F^LgN5f=eJͳN1;inwBaKX& ,,A,ie5:{<kLvஅf%o-(6#gGPF/rj5S,/߂<96/oQ=Hýuz*W0zXh{\!TN@3!KiǶ kVjAgѺCˆg]K!Ɗw~굍~ϮbT3wF>8<+f~ګչ%1o˒Q)7SRA++h,_v7rml BEa/ͦXL`JpRrȴBBo5\ t宻a ۇG93z~ɍa.?@r&X}|pfmxϭQ,Ue!ΧĕGd cԩU.v¹N3:AT0OaΝ F+#;~T&a0 ?bXq  Uh 8;}4+X0B=f52Atyݵ3 k6?#@}HtkVw`6uԩX3*Wk*vQif6f~-7j|Q6`qU.=v4:\ FYc@4:f쵏(Ju΅Α̧{X,;Rod#]$ۆD`k⬾e^W]]v,6 f?E0iUR6+6?8z FO[T0 yk?Nv@ qIH^/ZƂBpa8f U,{hwN{JtUeD5Mw5GH!idCyvlj+[7ch.=+@w~FymkW/+ RezpfPhBrg#dgT4emeq(?29ønއx0Wl,>'T; aa M2 kW6ٝ8ͯu ;ؕ` 3uGd1?Pm>x%eorng?&oN'GXDH` O/w Yԧ?d>\ _- ?[47(gvf̸oQ&p AWowZKi>:8mbK@xZezm^wF'mً1#nU?v2^c} 1`v̝_;^Gֹ}mI"wZrTpCd1Oze$Evi%8c 4FAb&[P')҄p Pq& ChͽPdT6F'>8-.AC ~p7HcdFqmT?Mћ1c7H4I*L]4:ȼX&a,5~D(i-z7ҟ|.3BtD'.>Wwn0ͨh0YT_yj=yS+Tg2f:ei3G@x#fUo~wuGm8~/G]TA>.!>i[!vh^j-b*c#꺑VHQ<Ն ژ{ y_8s/PT] i{%~*4-0pEz0gX# tUXxfC)MH: KRZEF.2`5a\|wb7ȴl]Brmu㨬p')|$z*Mne[qy);H è`]bdO;*i P&u~ae#vdEMKaX 2q6 $q3J) n˄tw?{AU׻y 揳l/|L#l)X9>yϜ\T'oۋ;G{l{T8v7?>»Up]`OdԵDI znpS5]]4c'm)vv݆Lg 7I}w/.pGQuOF2УB|? S՝[GHxUs ֒:МuS<#<[)f˿[Z=F tnVe]Oav<N8%F@鱳nG`G@ сYMQm!q֒tro?'$i- /-Dy +HeWaj_|7.?p-O܏/o,}V{vaO<~ޙ`D28f8 xEcrh%2CslzG?0Z*VR[^t"3CzxEZ?!{W_Ԉږ w=6Iy=YCxs>p\u}fE\Q** ,xؙՌxBeG_0DWvsŭ_I"whtן Дsd5Q:.뾓kE%"X uGT gݏ‰oSEV\]Ff@WIU9RHLc"}iY8jGmvtGFUG8UB8=ݮpvx/;^|HscAIN^33[b a;Oyt-pS2t=fݝ Oa_L&3,D0 Lk>' #q+.qO:SF´;TI3ɹ րh^p69v8ۨ/5Q/%71*Vwy^rq~QEvIڃcvlurW]q 'tG٫n8iCVmWrg=o `X^XW󠊙=cX`[jջkc34I,aKQ}d@gFA;ܒxѣc73:bw|ɨ _ v=1}{9~Vü˧B6R';Kp2xBȚ"lλbŝuš÷e <;Wj 53T>?k0Ն`t g]]ѫ0Ƈ;2TBk寣7Z*sᵣw3Ì*BjCX wy /~i#5J*s5y.Լe|4'~)\sE_X”W<Đ#(DTmvg܇g=C;v]±X$>tKi]`p qG2b*'"{驧m?n>wj;VS%@ "+C*HB6&:>_ʟ^x~.VDbҐ[y9@ԕUNSO:3-ٵ _tYl P0bgG.Z9v$yB.w qg3Q:_F:*H6ƪoiJ MR3쏟zC\7۸ry{lh /3Go8ͥCnR3d9,rr잹u5h:agFy7*_Lw 鵍mM5)xWOϤ [d -91 ?H!ϰ/^wIq/pANxoxp85Im]c߸C&O\i0kea1tvr{z}1?2x'^PM}KO}奟iSH7o}Cܵ1wv K.*NR_EK?vc)qbĢq[Fl%FVwqӺгvT7GZ\#WXHd$Mlcs{-x\pewagI_38zqFȵhMTp'7H<g9q.ukS;Tmwpo\bv`Q:ɕs,Swؕ2%J#9*vb\e0WW\Xut`ncQ*g1nsg8yQ>a'3Hnf ƹ2Tҙ]7?A^.F3GשKl3 miƂb1zMƽ)yaYr.uh^ys Ϣ~ Ó_~=op)jENͬ;Tݠ"&#TE:TۑARM_7!s>%t3Q8;=b ʪI۰0eL p>IĽQϨ_u `65kMgjC?˴?yxU+Bt;u*}=)OFi,|q{m +4j߼VԘ|TxƉwY{'of{!GԽ/c6FBwg@oԻG͡y֔q*Q֍ ;"#+ ^~~ </W@%Wr5fV/*P8GfV֠swCj\އf"*5$[ݦ6 qfz?Rx1^N}gzy'`}3ȅdssu++vu7i}X[zȎ3٦/RD,K҆!L(މZd;tã, G{>o%8.{J#3G'TL. sbw&]׼5NUqwwx#M= wVIXt<*G%BpVlòCf^h<,^=:zX4FMP>s9Z8I2C5ViɡrXSBNZY\l A {a7]\8hc'ξVWb3F7ˈ' ŋϸ_[;|ۑ)vMp=47ta&8̍o`[, 4Qȁ>p-&|ΦhA݁H?f[V^twSYǛMw 6> 15ڄdP@v8me&Hoc M@%+<m<?'wq|zwpCz1ē_Q|`bzWw'8j!OJ(\?,lмz{hsŝɯ/2wtc;뿹`q[o1{ }Ro%ּU}#cfb}n'K:4 j @x*4 ?3r̙Z蟁7o;xA_|mamgxF%]$e|%ryONl 5SWiv|[f&.%e-ntwy4hO>BEEksGPJŕI.tGm.%F[$8uys_"v̹~ry7wr3A7eʢkMpeR\vwوk5)Lvfyc\l& #.Sرi5Y}_.%d*:#7}_q`q;zPly.@Y~O~5H/<,nYǣa {O{Ys)9XђƔ>ܦ^x08nA$$+Ұ™鲔 IDAT쏿|lqd2Ul##Ľc\?;B4](?Uȅ@D75Wϝ=Dl:RU-H*1fv-@#quR r^;Z0h/=Gf2`GA?a | !fV~XE~;10k? _yŋ^ˈ<"298?;F؛{H鸧Ϝ95OȈg#Nz/:s^є,iwOw V=%աē_s]ӷl]~dw|9hIB .0+~/ ͼVw8W[ ۃ b.~ЉW m.{zt-ws?ĵ ;.z'vaV4e*.-u.^ۃjkîs&A)Mj5S+,{y{ Dr)h<,*a%gXYp=27^k\~[7}y,Huږx;{Qjv+-R򑏷fӜ/Zr :1xZP(,SɓaAo|s/$֡FM/_{9C{믽v*h7pZe>ͤ I4(A+]pQ?~w qUN_`sӽ\U K\TwAş>s ۝.UTPc7np9k\eK?+{P6ԡ wXVKHrS# *CC??ėv~桇wyNՆ@{ mC\N\R=:TlԲ1 P䑩"{}O ꁇu#3x4T fJV{ m<{O1f7 /N{Ʋ;ї.q#^p_ر;~ !â蒸BJ um.0ň|)|]Wz5.KqztGYdY?|" {W/q򯠖do;w`ƨ! 0%h ^{>kȜH\Ok"^sѐ4~@a, v ϗ#]xqod ԎQ_J萢,I-j|p6$x#ouÀzW+a]#ݧ` *{4g^8sSUfw+|(*8RH=3,?f@Zgyt_AgCnJ`=es[t2-kwuKRSyg]^odMo_/}Jv=Áyګ7NnW_R`*Ak 5 j,{]mD Vk;׈?:$=бODO䃧Mx_Ʋw4LEbqXO6%Ý5q`gڑW'(%]r44kȦUK Kܭb$At4 ?M<[0]=KH#l#beci%APxjp)4/1&].ePg[ a^!eBA|5 5Inخ5F<;/>a@#W3/%K813X]*IyOTv`#Pv cQإ|f8FjFbW56kZޮ)^cB.N!l ^ %LgIYQD"!ⳙ|/3>K]5e<C-G +1 6 Y|DI U>o4AH/.Nidr JNEb l7ޤi+=<ZiЉIMX[6y@SVM"C[B"ʑC8&E$59">ѓ˰k,l0NGi8:WFͼ[Nyx==!XG(쉣rg8A R.^L ~ ᎄYE^1 B vv§YbƵE)̖W qΟL3\/!ka4|plӥG'42QlCU߇2+ĔL0P,tދ([`7̈́#|mja^u^&NV pgF4x"nt+Khiɦ ҒOJHŇxf4n&FU ~1'ؤ+I0cT?aY>GH!5OTi)-TPy*.GGVH]eB`R,;sË9M.H??ٵj߉3r8 dAneo$J_Yp4a5mdpNxMWϯԟ7SUؚ<{sn>gw)Zi5\'監Aj}ژugFe P [FsL$QO4Fuf mMnxaKzImV``JھA{Un9ŋn>$#RfhyU +U^Hu IݻKʈ jR^"8Q(WV9gdjD>x,TZ+Cf}uGZʪ3ڑW F`zHBLG!xLogPOGCA0Y BI2<X"TOg""3> 6D3}a`Clf"0-uYTQs^2֥uEd m6915깟K.-9vC}ΞFWsSnr0L&lCMKccnnV ݜt l`f}6"}&[oK7 M8kf0Jт9S &-~\0 x١'45fҰiLUu+B^w,ߎ,6lo 3z@|\́'{HQ f0Q+eDQ ~t*O7 XX'bߝ:q/g9jEv, VL ~"btHG䉔aQPc2mX,)e"Өt?2KW͆-h~ ^SI; _7px|Ϋg+2gkfn>bѴ~9S w@% oD7_?魷evyܒJ %H/dm6Efnv#}']oϒdKmDo`z[OjI"ĸN] SB h/bTAZd;!(k @%"+g@)qG* ]6|zӷsh{f$eh!..쪺c@G48@B6fsG7\fMtUmC=D2zϼWw&nL\V;+h:fN" n]s_Tz Î )7 #%0LuX["le #nt4 m\᷎ΞQ0qI\@9%Pj0BBbr>_^&kbƚhj#r;Y."3m(O\Lf_QEr/;`Jx.Rc:_nvH./qU1Һ?WǶ`"p #e8LT Cvn.WYʀތʶP sqR8FeBe8@0&;_P "ށ>E)M3EzB>,ƁE1+_fǃ줂x+\vͶx0`A!Xa,3 V-2L6'^Um !aZWިOλI*nE1G'NxE&p3*eK+N#S}m{^qd'0u #))Pی+9Ly FhăHCQ *F:'#*:DB0+25OWl+\F^e% $ڎ& c.up7O uH1ТH^)}KXOh,jҝa$`g U grVUh`u)E ְ-m+TAhNd ,[m0=&ud>Jp@5BP.&FzK EH Ob%!,}81)@G$*A7oդҨiYN.p_^Z^ ! QR JDa2%f\p)>f܌s"NS#Q[Q uJb.FVG 6JDrYIk&-MdTK KlE/S?=;1ٲIN](,T:HiZWQ!rXEUxoVv.Aɛ6Ioc-NJb R}  }uxWZK\QeC($kx/IBh : SO\A;hl=Mí(%RT8FQFMQt#]̭5k#*#ygl+ұi9k5_0Ҋ,H?I#0B@QF4ٟ1b7 ?2$g9@f(g!IN'V0ՠRLܜ;Mf.1 _Dz"넨rP? hɴ?m\],틬6sT^p6iL6NL Ug0 +f\F U8XFnp 'U&"kXɁ4Ɔv"Ie% Qa[0]clfzFx4*; ChT8Y^Y^_u|5kj|D~ŞƱxA Xge)-1zKt*gOyP$/'TS!Dfx`10ȸJ*Gnê xxõRgbr$s[5-1" ^BW (Dpo1:O8cŢOt pe iKngA7fѶ''/7nwMa5'djtZ!R_JNaFg""&i*˃F5M9I B"SZYu`hIo4m"HV A!vG% 3Fgg~y/W>:_  ~60^!pfTPp53^Nٵ1ea,jN7[@=<*It]*@oꏎ"=LtdA"EC2LY]AGÌ9A WGeoQk3H$0BqDĕa3roW>P KX)o H-p)mQ0mX_JV e}ML72[C7NA"M_;5m6xx3*qA pJ*X`1'ґ״&k!fM]_T.aZFM^˽ 7m(G.MQGoViKx? UuDU;1He8XIoZB  ; /,:2t *"4_S£s)3#\aR7'G9=+kr{>F+KzP{'(VUK(3G םQ8Q-"T!Ys{-~׷#%{Ð;eLT퀢&F̸6Th?a`}2GXbIOc\'gP8zqآ A_a_ P ϚMR˒#6&4v,-^#3a]~z̟dju]5}eP hC[׀xj $tDe!Eeחi#lPDdXQgKl(^Ya6<ஐR1Q#!P>O9AFO ay7މ Xl,oGR@)R/yFUuQ= Cx yB%MpIu↌2yfw h ->B@k^F8Ry|7 |%NrMW'E_/Mfva57 BEX囖e:#eQ9%$6VPPUOĒ+2!Ϛ8LI/LR/!XjWvEaHF*E\-\QR0oߒw~֠–%@H0ڰ /bkX-R(P/$ܦ/}d@}LݖWʄ *$+[]!IL/!#x ACMXxz"6ag6HJX0P#tJo𫫱G=ʚ.c!ME4WYt Qч7qZw[L.fzvܠWGo~z;"Z %xDCw%R7zeB_1?UV91BkFro2|fO~XǨJpp.MYP'3PKB\)xa$~/K&n*)SsOeQEڑ B+w-aqJ߀AW&k!U MU45 ҉.8hmt Z%zc{9)tQ?i)ɔ~m\I;:B^*EkRE*Ô[f[0 量JjL|0Uy C&d=|$aC}#Qp#{޼` ".=)T&]S}րT)\ *!,FJ0UNOaUh݅'q:;wz!`vgzTjF NTQ`]-Et'\d ~ekĤEբ0wd@mI,/=@Fw)jPKg֫2JJP`U`+6?^1[M *ͳd,oNrq7.ŜD :dQ!Msv+` }u5FmzGX8I,$GZ#~Sˤ?Fc-2M\IZF?+\J"*hȃe˦.q  r<@k>C$fI_ݰK`?~) K\ "xrGN+@# *ő3>O S}%A<%dgmMp_ N] Z] KLé- 2zğKU n׬ E)_7CT`kpNmit7"Yo ;3F o._PPV@b [FU/himVGGW4 Wc@Vo. o`JR;͋0c"!FDix̖bWMP{~oT7Q X6،|6-/1K*$A߄DjeTgt"^fmYɄS~twVHSkTRz Tm @(QG4a&83j;$@GJイԬ("x L']!o`"L̠nFY-h\k#kZjDU %/ 3zAR풑=:{FEObݯ;N,І9C%&^+Fv=5U;!g7{]wkT_iY(a5uT7HTh 4_'h:GXfB?A!A}\QTw~s9 F&#| kU02!LxT‘|#h!YkvQ< [zCqE6&?P  =Kھ4];Q5o]4[U"Zˮ&  aſ¹9Ҥ>Qm vkTHww o "h Zxoae!jOmJlSJ$TSFCx9%Hj'%?M(n^Ac)8}TsiM~K-R~r`kQcAd0RdE'SvU<%} peͤj5DĿ!fzGpV:y ؉^QF ! ,a"(jRo)x2k-H:/|Sr~JMGf=wIcBbS@@xMm#**GR‰TK#*+B*VFN(R Ga&V ^[}Ft3.3.y A.8M2MDh>eUߨ{=n.i2k}L)ok%i(T( K~a qM&^▫jHA*'q=B?J1ܡ5ۦJ~7گ8M7yt[p@U,-P'P(fhD@m%j"T.w4N# +PHV/20Rе{kJ5:s!4#|H4]%lMRiqDv@ vdcS25m9"$sz\xxhh2avEg,{snr1 FmЊ`30jw/,:eIG,iqFDPs6݆aR:t N 횞%=DtG .Q$Sr, ," 6&BKf$ 4F!e#$VC\>koHQ01D&m Q\k2GT..C+#׊5z< RmK&T-)p-x&hVM b7Y)uizR3;2Y*Xk}& -C'0"eqn%B?h^$=%e,35׮/-DQa3x+ deʭ)܉ EU:=jU:p+sŌ 65ݼTM5!t,RvQKH?0^ Ϳo7a:%.ꝙE`9 C "٪emqw=[ UOv-R`(8M(tc Ô|g8`/.P55eE:li5=N ¤^#2R[Jf3<$oh#|yASAk&)6$]=zMizR &`!_{D4:hEպ%)VA"B>^}&Wx28#"caLGekMw<Ӭ0nIhP*CGh.-݄KEڂ0Z5+Ѻ[hc>:85( GV p Q8G&Kɠ TˠIYTTRKpJ{2ݮ/0@۞ )_vEll|54!>?mI%!l28-'u;dpK  x#MI$xWe[/EאM&m4  '":eui5*.HrYkZqm؏a4 ,۪M>YF$;jZ3u'_k%h$,H]3zb~t]71Xw|UW={'W] /jhn.RJup&ӝzI{kR._ B!@;qEB̅Uex*^dPǒ(V>ዼ:jPiB8vH 32,u 5'Xt5NوȘ` \֮RcezU&S'X \|)YnN8Al\uP?f_ ,i}6<,^_.;\?0n qbm M*} "K=.PI)!jB wgDO\YV2=L"dZZP+?{##>=vx8Ua0,/<}_ʅ;g~ 氲d~z чz}{'^tsgΜ4)o}Ǘ֩1XGͽKYU;;ȉk]_<;fmw~?^`s߽ws7޸ziOON}3 tc tFc& 6>@M4ƠP6я<}nUEH\<зfR Y_hC{~7 ǔH 2h5BPw Uŕ?p`r||b܇ǀf)pO \kCrU52!bjfQ <8RZ>e3Hscjrboyĉ랸O6S1,e$pEQl bik2۴R.4+VQ@Ò'uFg 7L_sisxzejpl6L8Aei6Jނx}YE5aGX]t"*`1Vڣ>r]ǎz7%ûN:}MYpxg{ӧm GSOZ[Xy}=!A,ҋwQ=Dx [ߺow⽫{׾z۫vȓO=uS~__u~O}iPf3ѹdSJ2K9[LuUA*335CH_7V/#%a0Fיƾ/( _iO:9jQFϮ ࣹ+w}{W??3r8XoχP-d~CY-9sf4ûv;v{ܚ6?z̭:}!xy;=is=;^i ܻ?y|o{w/1Sj9cfxy޳kN܇}; IDATfe/w޹^Lfhq$aNE v᩹1{-KkF1(mfv;f l={f~a~qN|譇nll3gϞw`֦gfF?([V_k񙙙1v0OL=sv~v~ﱇПٟp~Mo[o˗,S #n=Cw0ʇǹ5P3J- 0 BIHy3["^L͢%$'ㄿTx|3ə 4nLcr{6Z~3W{6*,sP9hC20f"84 >S6IUX5ЦTE $6s_5dB:蟡jMn.{ĵ Ņؒr]4%u_XZ\;#v:}r._1YJPL/|Eefmا>ܜ 6tiCuo}qyfR*gHdcY eLy*lV5hx^.Kj5jjhn3X%9,d[sKɆ;;"ܛo1wuߧO7{+E[z#3W]u' n\S6n2"g(zE&fJy|'ʯptaok,@ ׿uW˅z~+-wqkxU?\y? /<ӧϾr৮/>k/Qҽ?䗞czwvUztQ7^}|>><}~gx٥_?|\wq7Jo}[o`]xI:y\G}+Ot1/MBF`A"9?}>Y,%UxЇ-._:e-h,_{좓'x~Ѯ__嵯}їg7_nH,yxwp~ |qCq٥Էw]??ΦĪ|pG]wŧ}>ttygϞ}'_W~ _<9㠤z5~x+/?z+A(tYؤ;~E|S?/;tWz殻>} |ණb7}'5]uU'»<*_7+o}ۮM咯~kOuݏ|g/NH"16A֘xӥE#4*(g_b> 3>cX&P-7B2iyl`QA{K5=X*92[b;Q0k+y!&F{l%AtQɝ<:AtZF :@qMRWe dn,|O*]F[.㜯;s=vPߺKkwy^k>~k_B?TIۜ^vUzewuף sT9T{o뮹nWvwO!6b\dϱϭEԮJ\/ۮлy-߼G}"%)y%*KnZ7 Px~߸]/'?Ï<,O.뤎uNqԩ6${jO=뛑l=_8v?c|3+3Rz뭗O=~'|MN6+zZG{|FS{/)ϛc\rJz'3wtĉ)kN<ٗZ 'xq,1B0P=>C9ߥ 3."eqS?AG8we3>{ͫou ã nxA5=KNu,X#{7Ra4ebFDp=PVHYvH "H\* 55lJ `-vftt:NՀEGxHLHH)I3FɖEo[[DPf %ry!BGD4 r2/X:G+ͫ8]чê眬FO$il;#zuͷ|^k/꯾ceHR1}*9q` ҆Cæ}1tEyn# c?w.#;n{ӄC!D1L*#0A6`\ć:k"<>AM!Xtߓ0>0k^@E/ۨ?P*MN10]*O ,kH7ၛӵ՗XB6 a64<1 hdYE mW^M/=)}vvGO=;[_o|c&Vkm7*r/Rgϰ=yхqg򕯼s?m|_{'/S;ٓ|y< }(I19?o=cw ROӵHz}{ߍ0q_[kyv-ȿI-oKJt}wYKР8>ˇ&<~sgL;{=tө'9qZ#!1$lUz%n/3z)m׾8zH6d9kww_b; 4|ns=}9pg;hyתDV7>͂>?H ;bOko4k(J㣝g"W>_m64Ri葡U_!I*)OPc/] TɨKqf/ff Ųop|$/3zu(_Vfl4 l$|'ĤI_T/(z..0{Чe h=KRUŸ-Y-?qw\sp'8bABoMzz2±HO.SOoko7U'|lq1?oS:׿cu׽Wr^c: TQ>K7v+/?%%ܔ18zWxJLo}7"mwDo9uM7gI]S??߯'~UXxą:~Ow]2s?w7M|%Lts<Ŝ k; 㡛(~?| 'rtW+/݂gsMAδ%y.;"׾'@fgWMxAm_z%zI)чXݿHrec@͑fMa$ e=`%)UF=c.T23ȼ~5K'qr;X8ex@^YvDP#,b5e0|$J0o'?Qe Ie H62^@)Mmw3)'H֘b %dMgdRDJDdf]\zdFBhMLkhW*ڟ3dhN=yz*Qk}x.N촦vz)Y\7ڗl =##NRIv L?1ӧ=O| H.rOB]?zw;.WH}[.>p~VsqӇNUd|?WN^7>O?ȇ }ȯگw~wZ ^;h:\M[l%yU{>Y>sGqGwΫ6G_|Cȗ}^XH }_yTϯ_Ǘ`xxSήeCaۊcΜ9F~wEga<(VO}>|7#c $%@F&!*a׏u:G3Ś ZP0AH7}R!# -*- X2Kn$I<]ݝe5\(!u0i5MQ4(I aǀ6PI~ e]I4NrجBo0ji`DPcrI~Zz[؟h]Y"g.:j>gEAq PzRFI9#uKҴ1nP ihNJ倽7Ńyv0~'vnƓ>sgm@s=Q4pm 7tEx?'^|F³~;2ybf=>eg7HnwP'[ҝGn8>vE_ze% }O/[oR`qQŽ Gcw=7z'<2=9OvYɋN6 x\ι1kQ+l:P-rjI|=ho3L 22Bfgf7֔iR%di ɭ5 F|uJD5w6:$835`<WVGa;^B"ɡ/dN%vT@PٮER~H7^YF4# tN>@@2mqrB )!;oy<ùd9٫}l7cVTqq)_K;4;uւG|FZBǞz~ui7%|N_:zf1'C1I Uj?OQ9Qꕈ>dѯ~~#f ǟ~8J<.]]YOH|9JfR;4%V40,~|w@E7[G#Ǟ,?2T x|b|U4|B_PEC'd8<-,+ZcC m(M&Pd}Ŋ5jIꪫ!8h5HFk֨ֈ\RMRH!\E#5&3FMK 74"Uފ",;} ŵ/KCHoլKMyx,ز{42BE  I#H$<O|G:5Wt\!6k>̵C$$%[!D k|ч(r:h3Sw;3[isSabLc]?vT|-DfAϚ9IoT(;:iu& Z O-.YQm!u]uI ("S@ pԞvt&|WY)+1)QysSgTBcJ 2(ߍ'Xӱ 7o̳CG5kq8< &Z5$xp3`Z=˨5 ˒I>j6:O@WQl牉v jM[e159^ßqOh$"IZXWĈkEUvS>tKA5?xOP&M-_>1Z(r (cI~&/bX62E5-ᜟQf 7 X&z Xl  #q8 {֌+C _ݤfq𴍳>sǿkF@#IV|CHjF1&ۃݘWt)j)X& ig状aEB*z_[:t;RdOJP9ډݷ.[ q6Q+=/ 9RDlH;qSDՒY Q"I䢤\pEm㞬x: "C۷QH^(8:?ȶCX$]|#=~BS~MR+su IDAT GdƱkջSl(5i[4Df% otFSaT1#rX\A/BzOظ m#Yw’<QUX3N(lHpL=tFtML$eX/[ s( W%5?(HF`#xB%.ZChT%.XOrqj2bU2sNߣ;brdҙ|5f˨5#i\#ƪ%R!basINJr̬惧"EU^79/"Ԉtc(;J_]xa?l)/<2b(@7J)j90mWO%XٜCة;Gs|9=78Ɖl%{vMXš\ *LQ;&ax2CZ1=7 Dv:Vuaf2=<;S)y` dN}.l'}L.т*%?uxyW.5OaDDW z;(`qMn..डoYV^h6׳XDLp'p[M"Ma/%N!^sv6_,AsLpKA QJdU-NYB_|X ͡`*nW1t `i [4ʖR08"v,砈ŸF ΞYw~anz+ύwy?>tS}UȪ6 <}M*Ԩ-QGU,sy#mu ɡ*iώR $w@VA@N_63&}!6֥Gl;{8Y앋2ٳWN-n3"ª:eVVln4#xEllQ[boqU<$iiS8;ɣqG*,tn.N%o#2Zߤ!c!"w"0K9@e7GSI$x]Z\KQD.h)C2լ<910 Ժ14["J9Qnj[YzbŠVY0|`UjB)wd,*<qH-W !,θ4I,tyo7@'YUɔ(#!MX8b43C]?a)ء_ } {"9Ε);mTKso3&yQV F-2́.<|v|#Q K&fáMRdzt4G3;X^xL'0l!(Zu}8i3pd+q1N&wgh33G^Er80<&S₿9 ĸ@YجQC@ig͉ҝ{wa$4.xC tW0Fu]=Nm~ˎ]|5юa+"Ή)!.yӗۙ ->Ȥ-GS5dݽ@skPL}&>`twc}5ol@{@SA;] Ֆ-=CQW;O >T?,D22km"KHƖ=T6%!1 )oT^tQ=qsNhkCWts؟YJ6C$ia1f"-Gb^6xh(Q&F@HTt dZ`Oމ >lr7W4^x${;ͳMؕ5$ c}az-xl\/SXK5os|:VSTiNTKkO,n@rIclw);(j\CRZR>˄l!3뜏V7ԅ0)N09Ԧ[6hm&pdh\2b(k'=``߂K4i `tҟ!s]?k]100H>h03|S[.?I'y,_TL\u0+ w\B1nPkirES\͸q]pw|p( 8E%Ux쳾3wh7-==j6:Ljo4vWɞ/8)} Pj h7Uϡ]`^N9ȹ79&v(Q`VYJ|-F^,~Vr8' LiX/NC k]c'j"#&Ppɽ1`G\2yl .m 0G4\ "\IubR5mqNI]u|k4; &Z./^2 c db`r&OtzC9_%J40 ^ћdtNtjC#@K!zFa >b]d(V;C _b/&/Nal;WҎO,n6=ٿ\e{<ĪVWGED5*qvQVN (,Ke`m}OCIf4I6NY>OB5<"\O34 3= y?S5.>TIZ0d"qƔQG,cia}j|f$u#{C^j}d ,9.%~CȫGC<M<Ks%d]|3`+heڭג*?@ٓ1&9ǰlD7tȲ8#ʘOM \YU&4"VzCҁ4ށ8vc^f vb7 csǧn )B411@ aN /]ޗL‚+. 9<爿oPf>B] Ld $fUdKcҟpcoGR#_]MG6kF}EY6xtgɡqnQG>GNV]xox'$U[uYEOJ[uS4qGBe"T[nr3E9ֵ,dLW\C n/\!hX?`j{AiK8FATL'&r9YS,YZ՞Ɩ;FL^E@Bich %Un7kYqdak50~^Z}Op_FMğ7UE}:V2La3$C'$gg(PH"EK ke5KUsL욗Ӧ]w~+ REucpj=C\^C^psg1Nԝ%|7Ϟ>t(䜀R.ކaa zL-Yo_$~B37HK8Z0'1;ߧq9rnh2[MݠՓQY%|料$5;.âB+W G h<iRlҕ&b*ѣ'{Ǐ Ab>\8N[>HL:߯O'[nԬ1w3ZM] iUK}]Ͽ7\wO1a;>9$E"~rH l'}iտ+X{Ot8ޑ 3#(u:"E;8ɓi2k;ӗ`YVLs$I%:=Xr'khrIw%:BW_ ,Q7cZ]N39tJTCG:SC)I zKXqQH H*QeR6s6ul"7G\2:Ym2CVĈ[=ȨWC/'1MeaXiJ9w^${O*~.|v,s{a`gk% и;kEUfm*23rPeAI~=316O)} r ◑9(J j9b?, m'cL F9V .n,>A_TC3ե~Gbw >%@(S[p3Yr.Z r ܪYބ= $@L&97dFr&X.F|02{n'3gTʾ\h[H}Ŕ4>21(`W|cIwՊZ vpBљvO VJa|hvLDv#R/IS)޻zb膰q~L+$_,秣_9Z9(!\޴*UV~t8= `q/Xz[gC[f(3 zۯgx4DЬJA+bH6|` c%]I[#s}扫I!ʤ/q\3GՔi]/RXBQЃ'u%/3<|M&Z#2(恻~,Piah*i`uMaj~fRWܡclF$#~8H0 ib1=‚ِo T_߸6Pvʕ`M-ޏ&k5:>eY&^dTpF|[ j46+H\{JARԜ-=~ %#Q0W\rB #Ӓ}&uJڦ+Lq7 FbםXkQU9OSK5iPw]3N *n'87A8WFnSdRj, ˑq5Ɨ5`aň]~0r9GF$RVEuMp>ˁ L8Cb!m&]bmKBs# AxG< S E<Ĵlxa/p+]&d- MRvmtrp,UaIk?m[ MR^3(y| ghfhkJq'n!Z qzؙtv:TGMJ8VEAAud͢Ȇw^$H|`u+sc{XpH<'K.(e L$ ~}"VjF #I~pFt%eE.kOO'|L~u%ԃY#-] ĸ)ieDݮ6Y̼GiodwƇ˴\r UH>_gwIG`%]i3'GC4Ug"qY:EqY8CN 7mkIq7gn6y/YE zɫco]g l%'q3+M'<ĭv9 ٳWQukl?hqV('ja%aڱBXe.|aeTwxֹ: '#˱?%Z+2Lp}&RfXTn] ^7􇱴Rjͤ6#Cy}:"ޥ8ӲXILxZ@3ig@ʝlRd¾d\J0,:D6W<4JTVV#d IIr#U~}й&i3Pt }~thCPx:{; *.v}@E_mݬV VxHDm ;pI굳as|Y6AsvjWߪN}U;6}h+@ɅZ,NI(#@ ȉ:| g F?3mTLiyƪv~֔HbU^f FKyO&Mݠ8m x! R_@3cClkkMMҁ-/CY!^]N◱,;Ԗd#up+9чjj;"{PZFș#0X¼hWm΍z/4&.=kn!,7%+79O{;_l굞C?0çju|! ^\xP9^,SLȩOgXmFSDOq6X0%܁;S5z //6FȝiiP9I= P^ԏԷmQX1 Q. MĊvP_8 1%ԕ+Zn㠆g5뉜! DΉvZ gݏq4 \ti/\-~cE_Sg.ڰ/O: hfpap+\ C ַr%61/c/iaV~QMA \r"N.J`1nclK&-Q:M|_`kցN[y3XE^S &ix=~txk,*%iwTY۹h dl"[M92'1ǫ%{:G?,! _J^yDte6+TݍUBBZX}iځٶjn6 ܅zCH*3bPWuĊ)9ki<60*J\ƗzhL& p\!*6].URuia܌͉UȘVl֙`)X$S D^#p(+=ұp9!>wg^銼$1t+҆Bٱ3%Uۼ.=< bh7jtji,g FR&{U>ff.Tٍջfqpf Z;{ wYPsXeyԴ= Mn LvVs&ȍ#82KF΄?k 3/ڡeK`Ouu(ndP&5Iq//H1g .D{m}(FFӷ pǨ4N},̢Y%/UM k zҏ"!Vl\n6Dv]퟈U9;Qj8j6]Bp]cgi+*;  gUWRJs'K]d:41l6󘌛|GI/:Aab*eڤ QL<YGF=^]<3l8dϐxኘ8J-Y@~ ƌi8D; 2}X*‹W5hֺ_F X#EkлOi]]!}pZ w0/:3D HsVxF=Z݁ٓI1m(&+.;ߖuREc\ he$as-)2vЁ(őR˂<.-g?$--'#[\v6W UP >fT)pãB@}5ȍ0d̘졈K;{D-C^"r'lHZk<KWB4Y XRZ^4XlhX<~+Vi+#դ@sͥ %@8~%:KѱBu&_* "Urdmn.@8!F]JL3p#,xy0w5AgSS1[*ynڨ'L[IHFR&qp=I&djp.51.X#i3Mv؀ P6 ?3ڲ0,.,:+䀤n~Jή:YsLQgݯ-X&hУXcv#ѼR:.)+9o*J1'M̟#HL{"S 0rBjZq:tXI߾bRs$_nւ:ٷr=Yk]fNքJl+{#ɳ:SٻDƸLBDRGq4_d'MI徭 AnJ _p3ϸ y;W0I$R%8J]72fЬ'x$Eΰ'ЉKL/U7\hl|ģN ]}z5xrQmG_&+D.N.c+=#RKAkbFuƖe6]qC:uF_CG$8ć?gY^@"7 )oR}Xq#Gv'vy>,)K |mcm7M YkQ\w vTkS|(s0xd|3Y餋!ݤL%d Ŝ^>< jshW􏶊M _"[za-~8yer mJ6]PeucDM]\s GKF>5 =/O {J:g>j3T֎La2Qf ɾ5#%[x9\T(ۓ8=YS '{ `_${ ޳[Ucڐkf\Xw 7W5svqe_%.9ݏlfo׭YYf{I1; Ӏcrє\[ksvRb~H(=!Xf+a((1opaTkr@DRR_$RmXSj(ceJ落c\$X8NG'ծ(N/* mJ3:SܪV N)Z'ADU<^SK",Đ C6]}z1ddgth׮0HF>6 (Nuو =XXwDˎ;o4Ʃ0r˃ޛ/})]Bk4bkmk.3\RK5{4^3*hL&+|aC0mELhW6He4%V0İ3\l7̪-0%Yd}'x՚շstgv4U8CR [.^S=]wFmjs Q᥮D0NjhFZ_<w ʜm؍]}x@'B) 9}y^/:x%䮥zpxƞ/B;śErd/jY`*0U7=yq8viϰ۴K-I8aِ%_d[.H>d*dկ+c=1AƠ fNvjN⢳0/Z+0%ga^*kjP,4X4a &BՇvBzR.vp-l7g(Wp#Tf NnWJMRn& :>r"PAȂ.9XIQuى\?QtƋ.Bs${=G):ٓAf5/=*vn}TuBC; âLNNhy͗MB_ss\ VnQaS}PM nD3Fx1ͥ\`:G53B.ERLzW?Tkw BpaS(ߐ /!Ӈҋ>ݾWI_$s qݔnfW=Xf)Rנ{^=ZGyt }˞) 6!$6&b;vN&{$ɑy8 o%{D& LLJgL#ٻvAe [k P3C-/yF;( O|)Kt+U+#L1eFWd(PV A|V[H]CG`JJ;$G֝Q]d,Ѵy*a #ߔդ[&kY/Iok%%~9#ZGgͶg97؁ %Y2-4v(ɘAAG)j m]k.bVBΘPJ0ה)z1Ub ,>$Z2"̪TjC' &xAl ob³0T~jY[m"#Wq.۶էRFDw4[y9ƨ _ht1ڠTrG3%=3gNL%cv+fH^Ddo`^Vҁ"GQ3vҧLzwۣ.t4٣sΚF՛̞nw;2 +dƨ͙gAhbކm'4XwҁGՀ05x]TeFԚ4 >w sθ y֐ SV]lmw/)$ ѓޏfP^>ƣ4%r-f!YɽXs C15 Oߔ9HM9ݓq0H+@/&ih:g83NÑ! ʩF`;}>3׹~*l/ݱ~d DH\De7V7 nLr+CP^=2vD눛v$W THsr^Fx6pxoVn'<^6Nh.{gQ? W[i;'yxcH3+upHAzF IDATu+Ʃ Or=r/4|`TU>Tl>.EFֆk@ٟkI<CL/5T3-t;TiU xrgHCv*S?yd~ ~d5"Z L (5QM'.pTBtz\1nEn]pHj `!vյbHlRIL e_5[xM /3Ԕ\5){'3 UN na;YC@EZ\1m]tk#ic#HŚc*2!+NFzMC_3[S@6I1:D$i40ݡX9~35[f|skL|;b3(>7Ҋ]jG]*\w~"Q'bv4F޽pz/ϡK%̆ޏ| %9*ހ_k2ע8W2}m`{4sȋӳp LLwڀPՌH5rcm|LԆTQ'j1q@BkP$*_}y%OE\ډ~A9ق啽b>ܨr8AqX (_j RԅX&A 2^u$\{2!x$sNJr ewL=O8Oer>(՝~&f5Uw#eZo#iKs)U _IH4!;w.ΌiEa6v%94v" ɕodSS6LIb\ hNFT/gRL%{~yߒ>iFe ;6dxWgMo. ^ޮKVa5; ' Z.5Q 84\hZpw컠Ž3]ۖPQ\LxG%{`rh:pw !r&t(l*[B$dhc eO V]>}DnguŠ2Š]e ԁqL{H[Gm˪#i<6H0 إyeLI[rTK3i;gőSR %rSa#oTf -s̉\Mağ%?̝#+FoIDnj?n8Um#`td^Bv槙Kzp9B1yy1Ũ:ih8gp>p$1ًU]w)#ధSlR&$&eL=4Z$gLӔ bL &_Rns ?+jyecUr?/ i-QwOݚjB̍EsqqHct;.=qY"-Ljz%?4A*ni>~z޴2?Xل eEHJbLG 5A H|RAA%j( C\CyV\>+u*20w* ^J"Jfv8>@䅩jC_%}[IOq1x/9CKhXPC84x#x7mu3@QZK[ߘSE;.Ȼy8$1g$;}*;{˜(GDY_Usd4~ӱ!\-FЭvQV:9(`(jԁtd;D`鍢DcdpL#op1 ɝMlt@1 <=K|7_LYKxL ^f@ vO J;;!LBwsb7R 끋c Xv;{9ba}Il%jp:jZ|i/>U!_RWCy!1VГSRM&9૭g*pр1Ytim9VWˀl%}< u%Bd[e?D/U^C>DUݘ 54"#=cF9ҧK^ؤ;CX^HɞUM~&W${M@:|+$ & MG_< k/=A>)ClhZ-Ib73vn l 0݆8a̅ju#PfgHԭ܉;1ꑡvlĔn#!my1; Zpr)gIsި!Ð-^+VZgGJ}רpW /lԙ !>e`vN&/>v[Jdvԁc|wq|s86DNV&!ً%3zޱ[=qm'ɡ֕恞qPfawD }ٽ*9!p !D *_~̥VBUkp*3+{ AK PA$p͒ L-#eҦx̗_CitZKs%c6`ԫMKlf)4} jIOXε~=t ơ$e9MU+p [ú;d4T L,CN,䫡'֊ϻr@On̾}ҹœ8$kUw^T Iq rS'z0U1yT!1^d՘I4QjXV4Ȁ]3lkw?(z,w_E/=̖z%ݒmɶ,/l L L&'d2f~aprr$LfmlZj-<Ͻ%ː3﫺u[)JK1'u"'p(n| ƹA5,* B(#'g. .-)쓨>juaerY֮PMh2GA3v{AM Xٙ Llׄ)_o)DŊ,0Th&9bd=0p4zR68|t2ZcP ^l *c45ebuNJ%]O ?-(]d(d*`GHu}C)Zgz9*,Fprʹ U81zU^Rmj:tMݜW)`W\"-0injβF"Iq)$ F(t~^D#Zj^\X,0f55Roy,v2!+lw]#IkA{0ta:2Bs}NSDf(iyFYQX7l9M{CeMI!)+⁨wuKFtqW`_6lj:2ƃW8k;o h`_ j-hΞ6]쒸osIJFcM:kA(d4#ˈ s)3\WWVZ&Bh \0nCVaz^Q\'mn&i(ּ#gf5oO >q4_虸W cEDp $ tc4h-52@Mk*Y8BIp$S݅inqAcN)ˉ%!= a fIeu)z'u6NMm/Ɋ`85և jȥRjmMLU5\P" w9gO_'Վ[/90ơZT魵BB`QooCbcFj4!F8J΄9<ڡ@aSbL8!qͱV-v}1&JrRQZEJI wWbliaK4@#L]NYTCU.dnd9$^ԦAd)&`,(J܈s}ppQ*~\ atG0cEu %Ggb:&DwDYE-)՚c-K -oz,2#útE84KFmPRʃ=:w$;{(B vg 1TTJ׶S{xS[9yVi0eF)*j&VyTʠ.t'uhי3&0_3*$#U~ÖUd[gg &VSNrRD67.$'Z{{T@fsHB5%jƄ)DpI :2蛽,,S*]‰tMYCd6Қ@Z`5F* ~Z# [l ֻz<~`z[!U2j8tE'ߴ( dE:؛nط{Ѧ`@Uӌ_\L˸ ezj3%K z!.UJoRV9]+CIM1s6RKQ:kܩ2!Z%p \ n0qKMU @V4ތ0=MqAcVY`Sa=%³Q3චO`;"ک<%FA% DSg/ߚ\?hLHO\MN6(X(jvTO=3en()*&xB5u[`!k$kQ 0󒠝t EQ-7>$)79֑{ۡ ց >(pYr۱-% KwϦ اIi*c87SXIUo "&yLs͚Ќ2Pr5z1LxĐyȏ8rkImi'^QM[I Q,䆮R RB4E 95d/Ѝ4߶s}]>" PF,ʨj<è)dl-]"}b^"e9s{bxጐȩq`iGł> 45>7 >ĠrOwdg]_x$kU(~nruݠdZ2Ԭs4{"$lޘ cC RI7>ś8hN$'!sNghDiA{ι{ڡ`?sB2k2 _.>uWG`({jS ʚdB8f Ti,THwf:9kp"h8g@!G#MMzBBtrW&IFXL#Z/K8#$rg56 &g͙1 fUG(WGN@55ˊR0~! Iخ_6 i%5Ee> gr#X&4Yop ȧ`_ Qby-8T\]HX5#h L;T6&+(IIw2TNPUSngmԙS _͊$4Z.P\GBq$,`ao{7,l XM mj5H暅,#njS\8!5DԾSHZ٨eWqǍM~F:1mAbY[YB1KÃ~'z=s=PL`/ = |W/٬tr>%c)GHB%z=;ڥ!`OAv7 `t䂠 r cYD=%t_2{TSM1챴Tl%(3ښ]Ys•yMQwq&G\V_묦IibZIVQrgz(]?S&1n,&Je lyjci ylS̰< ou:YuvCfyRe4XyV&/P%@)7I5 o:]}h`kd+Zt(& ,aˬ,أS9,3~P@M=dѕ%8tN5Qq#3gK6A#nj ;Z4} FnF5.\8x嗏 Ámumpppf.~1{66\'mV~ۘ9NwpP6{dW̞!7SHeupp`~fd}ݩ @3?ɷlA1' !Rt 𳿯{np=rօ&/(5hg@ۏdfrGbsR$${ IDATuuNWf*Bs3Ճ>u7ӏo ;b̪F [U)\OJt ÉI~}"5x _(Ÿěb_Ybvo}J@M̧wh!=3vK \jլ74ҋ/~c r/]|l;v{rrJgް`ʕ;C?{Sx8tΜҁ}C[lh6g2o1zԩ333zg0>\rx֬Y}/Q E*QzΝ5_xf'A@&+V߹?XY%(Ӈ?]<{쫯(%zmo/׷ ӐWo6~k_C޽N]FCCP=:on_oHQSkЗ]jH`l)i:@ClnA4d2I}VDړoو'Rj9 `K16`Ňp)tJ0prhl٣T .}a9v:Qt6PY[GKFmk-oYq;7p ַ.<1z׮];_s۷o;>?v-oe@oqP=_?7`7= ]?kqRMW]u;k-vZ7:V٪U+GӟJ;H8|gǚ5k,[; ͚5-q7u\sͼ8._~e9yqm[?ydk޺m2v9M ![ndҥ{1{&yg_GO8/%?9U'NПn ]#ko8ZݶmݯN0`ȌgNoSB?ujӓgۣXmhsŋ?e+g ͛7vK/|q}/=|tE:•˗ /]lߖW;Mžի/;s㳆Μ=sc%@O3."Y,_|xl ;;ЉeN>Xv~| )͡uւ>;ɣUrB%B25m}\LĈLzɂ)ނ3#&:O*ծwEME^Vd5 xdϚ5kF,H\sCs1E(6lذɧڿq5c88OfAwsxɃ=hb{YQ9tӍK{ ZF=XdٯʑcǎuOs}ρO_~W70g=xO}Sd͸喷,}|ΜѾO~WV+x$te[h0lZ|8Džr!+VΆ7MK'&Nڹs >G?o~2uG޸q^8wYI-ñ׭:'z v.GywTMCZʾ+l޼ѣG;⤭84ܞ~CÏ}kpa_xɧt;W>3O[n+̝;, doZ.\1Z6ȑsg{NM]o馥W^y弗_tǃk׮|21!l@:u]N"9F\#ƙ^w"zgtW;޻K֌\{5 qQ|+W<~뭷.,;3C'<80.$z)̃3|͋n0pQnX| ^ gd 6O#o|/[l6=w|v s;y+-Yc;w8v2Ea0IFVjVs\ #Vhl0S{`-i'L0B?e\ vBL NIOx]}b#KHyK~j@{ O>y+!+;V߿k_&`=O}*,7*~/7Q#jq:́.f^qmo]g c>v}sOipG3~ߌݿ 㢻bH}駟އcqrY"fH,vGf;N+{ag}sp0<``>O_[tz޵jw+wz׻.!Z.K]AxXHwpr i$K1/1[o{[6@Y&&fѷ86C7/s֭/]w x?o7fsmޱfGMc[n\~{7b?;޳zW&hݺ0Gph!/.=b'qV,3 $i(d;E;@He@hAVM ͡M?4hv2=t9<;A+EWXgIvppM^;#e[fUx% vK.Q{U8uJnִgyq]d';yP ,JPdPݻviIޗ%*"2݇!솎!kɒEg:vekG[8Z̗A2jR=x:Cx/b{Lm0g=:do" C]ҠS-0>wJ,Nݻo~իV]2neskŞv4{a_=kbddTӟeϣ4'~+N22zշ\B|c' 8v=ٳx:W^8q;n!krzQO/RR3z~ѽW^~Q,:q$w:tw l"r>f6{"U9^AHƅNl ?J4sON#P<·=ċzp, ںx`WɚCFacx.3ptrөe˖,#b4.xn>t<] R .A,ˊƨD3U]W,ѫ6l s ÕC'Ndugѧe3tN j_xG[o`}֎@wqˡ뮻-3t >߸46{RKU.Y,.j7p㢭[[KCCP@ }2뢐=1}{9ojkkx}pÆ.fg9zo2WY3 c{V޷o)t/Zp`[cw3oǏ"9kyotޖ+C?|q&<0]w[,6CمSﭷݶoU.AmDR^z#M7޴?lǮ|wG c,( Hɓg!svąooXW)D^.^4 gщ8yn_pтa<79{ïqe]:@Íh2åPk{Z NXF `fV S ҦnO$Vp|zDn!tSZ:GPԾg MsÊ7s<;'h|y9NK"^21`k t6h >7Npx.DdGox/`7·[~7rQR6_Y6ɟS淶}6HG2om)I Gj+;/( ~\6q}Lc=va <'qJSOn^4G}n{ccGpG,|f:C:30Ћ;}>||^ <cI f/‡Wox;aW;/*%d"qi*^?x0|tm <~og?5󻟼 ^K>ߙqh)J#Gv)w?[YgV؋7dZى8sn&%H,-%u>6w'"Afؕ{b.\>B]nKrB7v}|;گsa%y}yL@;::ĉ33mZ>\_z$ixpDC@ώG'=`Z'7j{99MYXFWCuj>F9X)gC56(N2_*ك:488<H }q*F%3 .gt煜zϜ>Θkxꉽ7m'斟YwsjcGOki4^@r̙7Ht=dFܨd㠩FWstΠ!9[9 $&r 5GhɛZ!s1d%~Z+Lpo]Er v\I62Ҍja7{] Үk H(#jO=Ly-}}1/vrWZ'6>ƉU&u(ZjI%ArFcnkV)1$,\,iYSK5<D"R\&#*PϽw^aS~#afΗjfyIDATYwZq }o$z/Ϩ`H<^t62iQY[i–xTLzVQ!!@rBڍ~,z97ݸ^$ɲecK/HmqVDuTQX1P,JrEҞ*bD̡Д.l+f?(Swz݃>z᪫=3S2zWFgo+M!w-,#eUM<`sMRt;{k~FvӼ˄#Q w]KȘ\ML`#"#PTEȨz4l:4}rLpɃ` *qYeV.m;vvN(XXq. CkD|hΪ&*ElCƒ  Hsڛ0] ԢҲ֮<aYkjY{i)4HxlkfЏ>IA&\e|7n(nQG == H9+Z[v UpfN 5EnҐNmgOXt`Å `O ݜ+FJ:UvHf;%3g"J`){vn(fE+93v J*ITX+$ڀ»vՃh93⎖\uLlJA xSE1+_V#u)HJnǮ|r9tUuqWa6*#~Iue`A'PkB-#?Ro0i&+X20ЖQ:qz3jUWeDpCL|C|s=[.Vkׂ>A>eNnHj˃=JMKDY4,X2gL&??_bhξC$v)&b$+$V`l! BUwQNVՐMr>e? ė>G ,8SK.ŝEqPʉ/ب1fXFL|UKR C^[],NF~.]hPu/ #K"Z"끟f9"v o+8tw7v +*688U UJ8t{ iM@RvpO#K( HM$3MzdH%苍 V 5p plX7^cZ8>Tdb<4\Xc(ëȜRzP}FvYxB[EJ~h"Ǖ β9(*ɆJd1N 7^k D%@2&X $Zrw>_ }j :U˼2P jglVBb/"VA&Bj Ӑ+po6ا(Z-6B`,tV6;O6 4Ua\"1s9Z{FPOJ"QL J.~83D"[ LFA?`kЧhf:ƞ" @9^ÓXw}Id8CzW$ZtSyW(tTXNV W_Md;|{+10*{`-g)['Hfʵ^cUQ/(؇6٢VK$3KEՠ23i_GUbMu[X։Vh^mqT9-ق;d>%,c'(cb9F$JP%EDp;UÆ,,7]=4DvՈL$G&d}(7t^nIJ#ƢvXb68'e{0YO 'HǔJ=ξ jl%h ^B]1q(fQL;Vkt;1ˢl2bZ J5q!T}ƈ1L},-RBUԂ Mhʝ!IkFդn@J!sqF*`љv+fC& p1̦.JB.%W1 Ni.8ѕ۳b*֧Yėl֞!-ٌ_?"ILNgЧHGjI6>@|S%+Ȃ$j#RKh!vVM<g{ME l`"e݃=pA P=Q1M5dTErdaO/ekײ$]0IkhU4ʆrmprbFGE 4SY5=\\m^(\@T$M-F0NV%I܌J9ȱjc5!=蛤q-L |*KQVI}pM&vjɄ,r@aZ45c#;ᄊJ&ˮ6,`4}}wT2j\cSY5-E%``FG;B4:e0 y"ccZQR dC{5;bmHUo2 HɕTlK+$)U FL7̰7Z]Yu 4^|2eX 2Ѕvٙob%NBF\t2ƂAdVT)6823@RscOQ)Z`_Fڹ=2]2]sx~iu'v u kۅ%r˵M:C`GBO3t*>uܙYM0*z=3 =D (/ KmC+zRm&EfBLJPb mEH. )A4,2j4J2z9J[]\ѰQy 4L'>e[U1XJQ9,<=LEM7rv=jbmQt aC#49E: `O{T"Z=H"k=)S^J848SCTэf94}S]4f|տA-Vw9h`Rg/}uUJM+35 `+^m]R Peڽ=醰cMj[W@I1! >-T`mWxS2@fLLѾ$6Ly !҆ D_Sl T!XWPu4GY9Gtnyg.JSsSemRD`%;)29u[zUWCOΗكYЧNIO_8)s!rLEi_&$U*-Oԁ `2øiq!C~U3 úw BTC1n9^7b  B"$T}0*pDA%N^ʴ 4Oc]RC{{PB;{נ)O ,MyY^qt@'lSCZsź$~|}b4Hu&A3>W\H?ϔ݅`RWĮh]Z+T0VL t MმC,TA$RĮ{5f%e| ~C䖲k /U -6 +~ m4|mhUU> hBdB}%Y*#̅jV n :D٨%yZ۫fxęB"gJmD#7wyc媻O`X)9au'GVA#} z]KEor!^Cg{{k.M5:Lm`C"vT*u ^NJEfYGJ_B H5cjdtOjd:J:٩6Δ6=|,‹)d?Mr}#}|H !L NTr;%v)'v^,Yr&q Qe~ W\Tؕ.3z >-JK1m:<]t`:vn]X5!^pe-#DmTe(YMPPYȥ҆pZZnyN?GE Xu%NA*, -pd`0`XHUWw`t tI9Hf/8\en{*{ѭriHb6,M0)U V`Kj-&_;SK'I]KXMEvr-=0NuRݙa^gN*:1/~LoLP\խbN7$+*J.:vdG ޥ z@"7wf915M$-R`"7wC9+^Iw#37u›W\=q3##Yb": Ny٬Y0 jHxQg9Q0 j,dī`O%Bw`+:t摞Pǡ+dR ڌlUK(R¥hs?I۱8~+G]c;0BT2]5 TY \`QH +%VGYg\ y~ˆ hNtA5+ G]q_ y;}YlYzZasd`_S2H21is.Ic+5FZ=)B21g2= eHe:yi{Y*`OYXl3MrqX]4T=U*Hj r7J D+uHEdZ¿iʘZ:uAuv`)8W*-hDWJ)HtF[Z&$N'l `bYrW.8AU 0 1W oΰ-Qg0(Y]@aN iT0D!laXIENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/au-info.plist000066400000000000000000000022511461511344300275430ustar00rootroot00000000000000 CFBundleDevelopmentRegion English CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleName $(PRODUCT_NAME) CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType BNDL CFBundleSignature ???? CFBundleVersion 1.0 CSResourcesFileMapped yes AudioComponents factoryFunction AUWrapperFactory description NoteExpressionSynth manufacturer Stgb name Steinberg: NoteExpressionSynth subtype 0001 type aumu version 1 vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/background.png000066400000000000000000002442231461511344300277640ustar00rootroot00000000000000PNG  IHDR|Js-iCCPICC ProfilexTkA6n"Zkx"IYhE6bk Ed3In6&*Ezd/JZE(ޫ(b-nL~7}ov r4 Ril|Bj A4%UN$As{z[V{wwҶ@G*q Y<ߡ)t9Nyx+=Y"|@5-MS%@H8qR>׋infObN~N>! ?F?aĆ=5`5_M'Tq. VJp8dasZHOLn}&wVQygE0  HPEaP@<14r?#{2u$jtbDA{6=Q<("qCA*Oy\V;噹sM^|vWGyz?W15s-_̗)UKuZ17ߟl;=..s7VgjHUO^gc)1&v!.K `m)m$``/]?[xF QT*d4o(/lșmSqens}nk~8X<R5 vz)Ӗ9R,bRPCRR%eKUbvؙn9BħJeRR~NցoEx pHYs   IDATxi4 nk[sm` Õ???|??#WHYW4VƤLGҏOxwnƇi_UٺdF˿ RZU,~_l`iz^]鿦id RZUeS# 8sY;g^J];mǬ3hwl& K2iDf^) Y#lĿVM)[h~VW$βVn-zDХ.W"}.ܚUL 4udR ꯢ[x9@L8fD1K0m$8Z9b)#Nf)R=`l1 ;R,ˊ4͎ēmpVB+S+Q!epZ{4@]&sS#3ċlM?TO|%`A'r_{>44Vd쪺rJ0^ߔ3e{]幑|.ӵ֍Ev{dxwZ= f]`r ~HLmE4K6x({݀3)w00V\kKf]ʂ8=Zq`S}hzc_+f(=RV |S=_#_W  H%U}!4CK) . Hcܔy$uj%"Mw1RV&E1p#My`@tJ#{x-dɦέKܮF?qҸ%sV-b)'em'LIٵk5"#w>Y-Yau:N͆ `>s-0ۘ&3A✗ L柛ܗYYϭ F+O]1FLvU29| pXd(yE#;uw%+}rk A1ioJ0) VfOIR2i-dDFNa,cZuDu3fͬ ę7lDӤ' 芀 3{Ex7!Y]zY(c╽ȝ@ykV=2=#19xp Yޠ=Oidpd>Y1TNfhgOL]n }4Z@vrs~e(Oϻ5ALO8FK03\LTJ2R2a)"|%SV&+[;Ebfce-4EOϔm42 <7"s}4J]قV잘F4@7pWFQ]]Ȅ g{'k3ەH1stf~ff)ҭ=L- H#2@!F/h 5lO)/jO&6> X*ϟ 2#$cO)#eXduIXE JSqep`+3@S $7x[oCw4 4 wdHޖpx6dF-8p'!W‘; 4-v\d]xW?dn0h50&g<=qdJ$ =A=7-x5\L[JVFb>=+M40ӭaZx&fw{=m0GvM²2CJʬ6>C7LpoÈ~q<{Fa*[-+_w-daeWv^Ld{G&N1wQ){9f301})j4F?}-tN薓K6M Np=4dOTgm^kQFfT d K&M SSumJ#-xLJ1=ЩH_K`%X $Mw= e/$iۻH4 {|-ߔa@?CYq9->OO/ݠU9e)켘~Gv@ OhyXH3{wi٬P Jl6MeK$x M +['S{58ٚO1eƯ>NY|P"eV6; y6eFY$n7 %F 4.i_kĻ&Mr&Sl /*@id@">?_GT_qW4ppZ27ϢUH[qFfՔ-1eХ,hÔp 0%H^b<}"c2$ ҷ q-ta" |:$RN|{4kxv]ê0.{_j 0]5dxc |d̹p`2@|nyE[tz0YLq632fkl Ҵ֍s#W ēy`ZZ+|s(wgx Pi.]覩% 13#j$9c)6HI$2 떌Crݜ8y|DN)ESu1WY?x+0DLv&"+ivq&xe['u2$S\LFq$ZEsNҍ H]GrGx$z*iӄxL `eLa8T-2'7"c5=^]0}ӷ5 &YdS+ LV@@2̡ٔ0韟-BLέ3R(9 1{r|@7qng-J@)P'F { )k5-rfe`1[]l_']YxyΙ4OiJ0 gO+0qm6u")c⛒u1N ϤIAlAд7`Yf53qnf 4kJI?3[0NczEJ5ixi30JyMI u qc8-Mmz09]סDR:SȖ69~@Si*1c ff[4-Ns}E/E$Lϰ'њpRN o{u;_ic< f~Á[W$` "xLFz(XKI$cA 8H} 3FjMs3YJM?Н[%:av2_̛ L%̡gDZ'./ΔHmo&a+tɁtmZY䌟Va9=g2?PxDVri.kh j5LS]@S٬)[2&E^ 3LVYZY8 v!&%R):s n'snHSlod,_0|L/cA[]4ae/쀯rU>xq5V֢Hyue^n3MoYk&F42Ár(Ce'0;Y`gkh> 2X'k_"/5=s{̛eeS7*̪Wc: m!!'&ךI4T6#'`{!s|2`xGv 6l%j_h%)<䶤 L}+Ј0Yօ#| j? ZANPnGc]¯kD\O$׍x}lKdEY([-0@GC_G`U&&@dr^WitwwTB$' "&Qn]lvu"pwoI36"EC 1DyFb0ש\Iܖ4~AF ,Y_ƶzZbbn{]u;c7mc*6H$,tRO6_+.ٖ!*o*drJd >4O8x>5EJ4xLb&%9fizRK3̧n>ސ9e&in&SIЌu`kY`y;su,* :ø:[!sH% <\CdYn\ p p//#79f< fE' yH-^9ho3}x+*72S @-KI|2U4aF̧)#{MYt" 1KO$Ln6qnH?t-F"VZe[2s }|Z4Y%H1E^,=LY53]Lygn#J5&`j&`)ƘpDڅon%wRLe&$#p9Rojݘk5A`d٧mlޭۢ^WfhYA9[#H8B+ RN4wiA&Fz;YS)pǬBpCd7uSKT`[R&K Az=~qrQw[H?() =ϸk{"l=l^D>O:.j6o-@wo2q!גmF(꓋$ݽO"-mˬ")0۔rwd M9bd%}] RK2 Snql֝J%\P[cڂ','MCq͐>f" );Xŗ.Y]Otq8q㲠?TAR1~q+i _o)dOS֒Fcޤ(12uk(y^@-)M},*;Matz<^CwCFaٶ}ndb]@2]1]eWu9=P 2*+G7/_e _8mIm&+˺ag cN ֭b JK:`yپ.nk89gcLt!hZl.)ql\8M1 U=K٠0Ǘ$똶c '#4J\M4,^=-|~qvPZrrJs&Yshf89M#{(JLSiG0ȍoDԭHsacf#Maz]xLcVqZM]ibׂ3V=B{)!쒝HpVןVy#M)EU4M9HmQ́g}d0~q]kvqK #6%pOM=Hّ]oht={Hs:.] ?q--aJʍTbE/:)+y{.f0M)2q-XW0_Y @ *g6#[g[\uS%YJDKl ТkE_Z)h9,WqE|);@i;@*kj&#Vė3ONL?k[ Wr t2FfլD 涏v!)ESrOQ9 ua٧{^'5&ȼ,&weiTȉYL6 %(o5mr$<1rd2x]N)q'R r ^({ZU_oL IDATd(s) ]`aG$"4.avFf;r6Ɩ1ehJPʙK?LKK#skW_0֟xǘC]1~q`Rlx?aӝ-io!Ee ," k*k$1Jb@LjIϒ^ɡG٢4ŠIJ@l֫R%|Ǭs)h2/ϊCA#"ZDHN6ҝ=śjUɡO[YLimu)1{-J&xW 7F#@grjјGj--J'3 -;,YQ"&]rFE* ?т#clrS镺;77e~ucF&觚|o*VL(ŦmxY#]JS6u[\[dg.K yɘ˕Me"+{9dRYEg+i n~nJ+,x=1MENE)7K4H)7V3YZ{R;i2[Z>WILّ%F02FE0 I4%ٳ;Ũ?(VF=p.Vԍϡ-6wB4_8{"Fb"aGCCR?q YSmG.YS9JS#|d+kJ][Z@q̟p2S0pSЅ}t`"3H-RSw83u#IJD8H8[N*õ7m'L0aCPfkUʵǴ=^)`a_)j||#ˌzq#X)TY'= [׸Ɖ^ =/?zx9sV 9l><.lcc:C32Z}dV)- )agܗ~#ןr+,w 7 SV6ޫP)z 3Qq&;%v#4%71-FƕԚomE)Ƚ LeӼӟ{`2iI\$jfSCWvGrn{OC)}s¦ ^v,":{>rFÝ<~QRV&xA%lzΘ])*[Gv%kKSewS n"[zú-}>sCv .J,se*q %  13x~SZxݜRxab=](e49F"ۈkuAK1/`& 2}g^z)fl~W`icpuuzҊ)!ML,9ZF4"D3m L׻LfSՊB+l&(wdy"uE3"[V;3x]ZʎiWpry^dH%0+ F̠P䐡l0'0ͳJ}&/UaV7\e~mAI5Ī?H<{1̵(G6?]RIy|Ѭ;q;Vʎ+ׅ3Q6dgՊFu/)VHI:oQ DW]^Z#oD!c2mD*˦wũ$Ӎ|&V+RVGNd.Q {H^ ,km)?/hε᜕* 94UoQ%}z9^f75~vɁL$kaqiZYr M w 1ld䀟,hDfd▆S*-Up ¤;Qxe3~r ɪܻ25rK-Ljr?Yճpô ' ֺf )gFvaoTS&kV3ͲYaD,$ٔL⽄V/n38Yd-9`k m9kkcq$sg M]B iz Ƿ,=[&#BXٸrH{;:taznn.U5tr|s ӳa"+it 옦0dX_nӔ ⍼l3.̮JFI74mn;;&lZa%G1}(FEbfLgժ쪷14E.!ۯ> '{R%̧2߈t0%cx- o)'``3GښRJ[7FPTYQv_YѪx]LL -1|YN$3}?83Z7\)˔",YuCIizSzHd@D&x?ݙ [q 7OK8e&9fE#yJ'{5f)1VH%p}cskچme|bn4rdL%Y1I#\tO^|N-C.Zn(>zjgw)]0mn 1P""sS&spLu*.AR&0W\K{+`a~4u ^ԕw./V7EՀr  oDw'!iۈ1]5`J~[q|75AV[OK78(ɖ{ `Ҋ|bE-Le>J@34<'ӳEs]{ێ)Ѻ٦ q!6 V'|li79@>%w40nJ~䆱ETX2$K#sdNJ<2#Ô"=`4Jb6E|#ӷTYL!s-ʺHv0`XVKZڲ{blQxnJ&έz4JƕstjLYUNWl @!)0W1t!22ڸw}[SYw||)9[b Cdh.1zc&YgdeuX *S"+S}ş6}p. mB֕ 0(san97'[ var)sߧ8Y#gS&k۔g[2;Rf3߳oQLM(r Y_ʑHȕVnv s+dQ7 7ϡde2V8,x|ڒF[ SO [) 7I 7e\'&F`}#n3W&L@] 3}U454HnnJ@^%2. {הպQL`dZcv!wFɺ fy_;_l]b%HOl/&S7 ]L/3Rxw*i $XWK_xσb붢7Lе╁;@nپirؿQ4Y-A6"$Yi0IF !@/H^Io_XkLI,Y+c~IGmj>yíI?l$qJz@Ioj^<&@֮R|{Z[m<2% tɔ'̍"%`EoIյf/ z@7H ȧJ2-&eVidZæoה'ȼzXT٬0'烧W"Sv_k5;7JZugL&Àl->J9ΰH~RjK*1i[<_&A-_#xLRFMo$p7XU7+AJwm]Z-w8pۛcR6y֪[ɐ`M3k闦m1xaWn ɐ7r{j0+3Y&DX*іxhDfn[&ȹAu&Pj n>sMF7E6+XPH态+V6(_7Գg@+$ <輻DFY#a/qy?i]Fn-FDeL8^nKaxz ,wU>f,xdMx_I4 c{a\)ثm JeP~ee[+ωk2qipϘ̑%mI<20}x.{_cnJK֊r&z?}矟i;sNAx# Ɓپ -9MxmmY3T=E"fEv4M!A/N]9ρNQ3N8.l2F+3)o$ f.T]g! a Lຝdj3Fave`d}Ot{(wU7|rx~N 疾T'@`<#[Y)rĸR=f#dN7F369p&k'uW$nM Vnd1J?0p]384kcX36,6AOgޝ)vi옵4'~/1`zLr%^K 5Oi6Y\@R)󌽱Vwhn-jP{S7)h/A>{JAY&#h7\'@82e8i4-#fw6WI܃L~LudHL$Y Ztal4uLXLJ˭/tڅܓg" Jp 0L,m +!׳Zb)14x1M|ϫ|/dJf{#!F(n= tI]J,YX'^tFf[Ka>s{=Be>e<VJמ!gR}^Hnȧq@Ìfb|Srpz }Fh&Aro;L$K Wj%dsh^Z[4&g7_}2ƾ9w/ĬFj`nU‹*n k41%Ɣu:D#30{ kmou}/joqDm#&]r&{-~Ax㻁`Fܐl{P]9+{%ZbAy|TȶwL-=Td|` q$qd2e"e@xk9U[Z.`]Z2v&4J&rYɋL fc l H+wMeH r7i8"VZgVȔ9=+1p+`iiZȰ, |x^*?$l+1{ޘJws6V|tAifHuV9멌O }6؊YtRIy9bzL\+xn`%=ϿoUwF ݃Q&I/+pX K_~qyqX*ߟG@ [&2h fbԶ!A0wI>Ha@ˊgb x m #3D WF`_a+]97u ZukJ-L+리+'3ZЊ.jEx<R b#ɾTfs3[nx{^< !+˭VY)w |?0d&Dz/+~^MzSksx.5L0QRnE[R_e"`fELXk0Av-a CLu[4W`7l읅*ʘSOFS{opvVYٟwL6pe|›6 ;x> d1nV^}xn@|NhKQx(70$/3Ap%1q ^ X!bmd|8p_myOb, 3k]x{GM=vb2s,Q<S|udZ{ovM H +=ZEr/q.bh1J3PKDr|0•iK-ljmV ;:+S>e)^we);=&R>cSn#NO3ML'q@d `vR3nfk5nJ7!R 唘<MMТ}ϓiS'kI) 50@LX.nucrۇ$h$r->@X-Y( dLa97T >]ȰVZهq[1ysh Zw6^|DrHX{ax+ȸψUjH80%K_s1dmI֊lE2CFkd mc#GPpX+eɴ?9 2ܺ? 1}Or拺r|eј'^V*e,rn0ހ h [2>O,{H`W3]sR>>2OGsJŝhQ$ __lo̍X2^@HȎIXq,% dUk\3%ٳhF(H잞.Oj퀿"Z[oqt)e9}J``]\+Y&p<ЮnE@Fqmy4f]]Bz9ɐ K,⁎}m5D7'Fxykl.}/'Mp9L3 s#yMn{ЋfYs{Rbv-*q IDAT1`(Y-s 3Ʉ(~jp4٧S'Q>A@}ڜF61" nd| |ۯg#inȡcɔȰhWu1L Frsg )[8F٠2( *[FjaYUv,hƔׂc]A A&8e7$F*s՛.@@д/NQT 994@e.4.d|Vx0` <(E{it]z.&skY}c54'3FSdZrS{-xdX> 3aal,lIP@AԚk|ݠ_FO1z>  qegXUM%0+`$0퍔2E3D)3 O<AK]&D&PIémղOk8k 2 Е)<_,'[7<[Jt?Ā@ƧZdh5,0n7y?0Z1VVur-M> tr>3q(u72M<ҟfde+ﹶh[2~1Y:x09={d;r[ 'ujooqGvە1_H#yE|-ae+v} +] D&u_c(g1I>7aT} wCk 1Z߈-q}{.b Bz. ywGnVWv)[3Bzd'L#d{vF8CFN_|}ҬHoEb:/e垑O&y:&?k~V0:ĿC #|z{y p>iܝdRp9wX)Ok|,T4-R*OګFdgɡ]O+ve}YY3dĢA%őY': c$YLM n֟.;ʲHfF2SfI!VDaeḿ^k>LEN{pXix>k:ZIi$eyel˔ E fҶ#sb`@D~ lFv,=}`h/Nl)L0bKmf9Y41@O6]Lx#M%-L,";&e&ڎAYvhY3%Yz@s,(;Yy<^%@ %01e @d|z"R3+-;oe~.x.غCgw[j4tO Iz*cyj)ӓEvXu[j O nn0ܢژ!V14w[w ]qz@y#4xR=i,Ui+#}F+Íx vf]ZmiH-lKc8 ?}4[҅[f8Oi0A []Ѯd2?v~#߅ vxmGF#!?E;vp Vd#V48fr@=LI.%l|`#{M6nj r[d~qL1-[t 2 zrXS{L0lQƍ 瘺砟/r4{HF².p_ӔXkg Z{6F< o'Ɩda[i{e<,rV@7H+0%Xg߻Mie /Sl3dkf/6L|𘶬lJ)nx/,/IЫHYY rF =f lOŖ-Kx {6kzdA,ڎE֓:Vzn1}@ }@>Ҙ=#LɵjlH)fK R ES"߃L;UWVf j09,;p9Kq7"MdJ@^◌) 鋉7Y 6™0DuJym gHTyvuwhݎץu[&9'3Oe7ay|3`LM16q'mn\ȝnEY Ϙ@gx_g`ӢVظw`7oc'Zk+3F][P샣xoIgF-deC|}3XN6r8VRn K9G`mh AH Vl=l*c쎶HlM_?p+,ee]YtO[#E)ZFb`$45bunU3ReXf+bRO捤N'aQ1y* +VЌF HnfjVM<;5VW%I/@ㅷD'c:)F;ͺ= M7%$ a2* Oߐ4 Вٸ#ϡA 1L TQΧYyI[wґgGrRFNЖmL&fq-@f6¿??XVX7%?WaQ~J[mi$FioaS1J1" ^gXnYLsO3e/ |µ60juZVn#?2`2Ԟ|J|vp29sizʰn>n [[x.Y-`JܖwoE6H2?_N}-;_e{ɲj/N딭;_ZZ> A3[of6~L*gH[8|mlRldNEmŹþ4,+1idb)ez R DbF^F5雑?HI|qOF.S8l<1Њ@=)1&2lV7l\WRsn8YoYyP_ |D+d dQIY;(d嶿V6LGW+*K){]^s]#iL-f{4~"w: .˨GS7 V{AkuEr0E#J+n\{8p0u7`ALR~2\WNqOÔ8_.̭-=Ez=Hgͷ=Ժ{4Õ1y 2n031raUp#?so)e.Qh|>)8c u, EJd| Y@o{#~*RKH~>1~0eT횃j ,E]sa3tySf"=_3U:hEZA ZFkqyeڬ迾FLɭLu^X b8XgS1w'3\w &f7X ˝7%{!>mGb[)2oQ]L^d֥IV);/5v.mEdJd_V?ҟ+&f+ c&P"ov'=7bL`ߪhQu$&a 򑻧dAFЅD`7]S8^]5i lE9. u^Ѣ f| {ۛהL6(V篅/0ȷIVmVSV;)nLlF ѢxJ˼r0͊4x@qƔ p> <+1KR|\W-uJ݀q8 i$>%YݔK2Yxr&@L {gb`ʶ$Fi{_Y4ZJݦT0>6֍ ֺ+}m3;>`^#/NFryrXNn૤/|ZJAYzF` muX#E|[b{el]?M[SI3L֩\K*f@լ\Ksp ܵ{iDDd- 1FaƉWUfL&mW-+.WR&{%tabZ;c(=aG#װq%^T1L֫+ypwU!5EH }LeAC6YdS2 ,?@GJ09@)Or-M5*@ՔB%;.~n[[fjk'4pz%gK-A֕.w\\h`|2 ssN ڻ.v'/bۥZ]|d<@.L!niZ9ǐɁ#=4vi>wSf'Ro`&&͙މ.EH4~X橷13xL S` l]'ʑrOk*P)]b # 9>}9 4;OI)(mwݞ^ݖ sz-nJH_twd'{\~12eKոu4 ]7d$.=u)=Z<x,~w`﩯늁7eu=bLos+_ed-_S d>.2Xx3GIS"2V'5B#]l|傒gJHg*LdVNiK01> l\ד" ,g>nZSJܩ8C>ѻx@md|L/'Ӛ2+D& |{ ,YO 7و3ڎI#}?ua|9Iu[$pAS)1X'}3ֽC7OGysϔx+3TJAֈ 傌g{wFOkȶGrƟ|LJ:aQSddE)N 40"?gWVrbybc6^7GK=3lo9 ̶'dyauEd̞ |d$s@ C=Frn)zQ3dR/w9=pa~J@ޟS19?92㽟9grRNSN[/AZ v'Ҭ5o Xe ϗviu7l%dxd>1s&]3 *vhv2x1,AN}4+ua_-sH4.^WNGMɶK%M SHo9tde/ud.򉑳 &ݘk}u)Ws n ”9̭sg}/jŦ1RtRGg;ig8q@frs4d.cn֍'ZߪBR)r Z”FoP#re:pHPkaz$ Z~q2\Nwũoil3$> :L?7ɲ´t%RJkCFl,NlNo[g{'񎡄-M|j< 0Tjyr ʝ0-@WdxVixپzͦѥ<["$Ru2}K㕵&H_b-x>y+YΓ BKn0?Z{n#$>FOÕ@#_o?k(ۈ#%dMͭ;#aa<gwar hm^pVcct'=VmhȪr%o$,S 2yeJai-1WV#3oDo𬌐V__tы.2$%X(fdfζ%4ex04kɔ 8G{E-ErViΜu.IL`u&]|:]d;~g[=M#ugWuLlE݇ &nրyL8a%k9`(L~zi2^6F@ +q(cdzs^%F>["˺ׅ7#Z4{Z⚇3+)[YM#=+Rk9{^tЖ 0b` z8L5i]|*u<-ڈEY-эoU9(31-<1BW2g}^'Ъ vah?w3I- 5 @/cnd7w1ۘlmp Y!;@ \Q<} 1 ڈ!4Bg^$}W3O"S^Qe^i`d֥Ӗ>&8 pZH2qupFd]=NV7%a6@ Ŗ*A+7oiSZˡGSw % D.xO#̪Z}g%xeodGWW92 C#/%qWq]#p#]9dY1+7^Kƕ@cauGg^I2l4 X 9 f_YVzr+fG\-gn G7K9쉐iLwK1=>p ShgG&9Yd &O)ȋ584]iȌ8ƿ4̍fVPx/^'k l$Iq޿A,Ob`ɺ%> F'dfJ|J451> FLIu1ijHysx]*FWv^3E"}_9'[&*@[D ++z~|9O9p|] uv M!;2YwXV BW<ح?nbplZ] tq|5 1_ƜIJdv}]ոVAv|09#r%#HD)w#_s7$Y`fHm}XeSsO+V8aT.1к4s ɹcfh݃ʹ(272>Yh)uѮ.o iK?1[0RC+'InH 4{%K$Uv6#`L)s 47"g.kuo6@&.ޝh22I>4@b=R&sU]&aqōh-0ì# n0V&ӖFHG;O_ lu9% am|ߘdZ\Z273 Պj]kv+$}: }x%r@_9Ͷ:2G^r:ņ#= k[:}{eʎ_AQӛڠ]0o]>)?oFF00&xWC-`?+*npVg[iת܋e&`a)SP-0AL'gT-fߺfmBKhwk$]f#ܘ%3lu<ҮJkJʢ3i;Wo@Z0s[NӮ.1}.Z12]S9^o 9a&g{]BoߪUj dH]@?1B㥟5 s#kN"O+*4nF^`qnyh-M5FİJxMv)ϧ%g" ľpV6++s)-ll$gFK|MmN98l,V,Ze+Y-7􋓉$L] ڞxv4׊O4x u~q0<B-23i@NQ6d_Ǻ\V熿4nm8pTf× vn3! a'MXٺ{#{{~DN75o'$Λ.ZEi@ݑo49k)'iadJ" m鹚U@kceە9L8̈2~q3ρwjo)>qZc*]yJS_wV/N薬78߃=F0Cb<7G ˜<272b<@ M{9 h1@Spӊide NO |%dt^@$eܒUʾ 0Y %R_āe-]}azFVh]Xl]Ð95u} 0ܢ@9 0]B|#V8f'}HYwHLY fҖLj 49ZD9Un)8Lt[Z6SsbϹa/ku['21@7#E\7=t2$a[DLC3fL#yݦs4Lf]m2Y;'7 oQVm̿GkQr)LoDKPZǛ8\76 ; ZـEl[o2{d& -_ ͮ;s#L3Vx VRE`׾нKs%sbhdHFY%gUk]܈t jonʘ@{=`]%Y]YHѿUO ϡhpoVr'o{B'^CI۝V" X^BM$\7]1u3ǧDLn9O=c.f-e֔eLSpYUd7L晬% X8LNUj)9OsIS49|i$ΤƊm fr[u@e9@۵zJ=#M;C <;Ri$sY/Z<+sRV32wxf)4> .>_&R4sjoSAI9d-QKnH l82𵐙r%dj6-)`"O<χ`emHW6'<~aL=ic5?{wC>eoD-C7b ԍE(ɼɬ[4Z"lFƏ`nq_ws7{q0)ɀ0%|^\|Vx89 FV2ڂ Pפq+~VA ݓle8y̭_( }@J qj=8WkNH4"MX d@vkŤRf5Q+~+L,[b$fx[Ew$YOm6&l*Pj+]'nv%(zfH'$ΪpS?~y[FFavII3i@P*d=Kpٖe@䓧|d)`Dn>UȞZ{4_Vl&9rbn|.W;~4k3p9? ]$ C(3[+^ R`~q4%r[wodnd=?veE\'Rx4ދ#sΓF)qd|runH 6n$Yk6μ;WH+B7*R"wV f .LoZ2VW6j#m)[܊Ȝ Jp&hd2Z.Gc:rぇ}c/ `ؿj"=Nyj V?pS5>ikXt cp@~k~qlJC'S4"2ʞmbd3cԕiaRl0ǟd^eZLd  ƛUgB6q.l|H4[ <'-mJX '2]m>+d@+ȓ@ Id#^%r7'șf΀r7䏤Dz-sdxZ+7dʯ_[$Ñ+ºr+*qMӮ^з(pN5>rŴqSBG$aJ!ܔ,UWE\ئ {z^#{9 t2^)PFF{_&sxּo- "i*HL\I-c6ȔH%,C384,N,ccRnpͮfZqb08v@3kojk^?cب02AMa&H<S4ni6_Wk&JHoLܑ7xn@ҝ0~q"LF CLCfV#fVNT+ek59& r-gDONRPz"]yV_&hr+Y0g9)LBKnʍ)[}b0̍9~8V)Ȁa+^lVT1p9&.Vi$\ҌAt|#&&)>?2GlʘVJV HF/ˋmgdLhbb| ꦏG$nܬE\b摍LN[yϢ=HW|1uAnP0O amߑ@v@Vȯj0ep_Fmb]k_6-ʞ d:-W73:RΪ'ޮEX;r IDATY-cO q}#d8ƛ$7xN늞MxRʦ1P3r3!F 1|nddL`v R;C4%#sSwT^L{xA]1mDڕf1@Ȃ``Áܺ]1mjfQg(3Cr < ҐUoKx//FmL`_ Zdj{a`g0i+Siꐂ 4LQn1Pi2@WvS4Zy-Rv=k8EuH8ۉaq_ sLLYky֝@P)+ۨ%xµ@rlu`zJS bIZ7' E6 ~W9klgGn˘"= 0۝B)iJKIL__u12Z۠=i)kXo (Q9oS=F878@4`eXYt[#|aS[qFfאýӬRI4rH=kٝx剕0Yٍw@ʹ)k} b1Y_G޲)i v-Lv[L)*s7O:xI/Nוc`c$,cw٦¿")@^֤ckE̿ndu4%lYLVMUܷ#ϧ2l $Ye.ϯVerV$-|%N:ZljeHƔ/=}9m e '*nYl ex r&dm7Cd̶`qAfdo0OhJ)X7l-=4ᎯKY8QE6쑔 zٛrL1,fr"F @kiz "{ 4񉗑<`&9뎁iڎ)fu/ |#떵D-f%m7үlN4pdX|vx}|sMm#X)f@ݦ=V$CuF靈MF_Fi<&ٝGփn[SH,mTu&CY7^,02`u1\ʞ̱Y ?ir/}׼i6A3Ym4)v `fd6sߩHl%{av׳+7KSSVE,nOIgUI\[B\70ufS+׵I_W6}d)-|Vēf!ZEgu@/H`ďɡ-bmj2Jw* b RW.F_ Vn]>#XQ/fRI|̺k5 -aJxZJ~ނk=?6qoVs&6dXLd&YYe_ӡ7gŶQW+ků䎹o{:)/[_JȾS^3:{{W6?3_ߐ_lk=ӿUA酴w*=HS !fj1ijYlS|]mILwVCæ4=;y9=;[8mo*R4snpi;y?i*c_Wpz`ZN(bJ7_ג *eJ9[+ܵ 9M[5M_ '}m0x>?JVKH%KVMOR7A]SN+Fbc*[ILV` QڞbKz2kFt dm&S [A3 g dw9&X+>u0F"r#x@`RVljtgxSk:^N֊I=EL#xYQ&L !n$:,&7XY5W֊L"gXkV}Q Z7,D{|Fⓥ%f' #rb2!쑹aU&h- 4~`LDf0u ?[iN: jmcCh8 ?Ad&;i Y]"3[d [!wndCKZ9Z V<[eSldjv{j| .JX{/ 7wZKl|O#`kͮvƷwp 4-M9V4H h: fl21؝H"|x3&󰬋1 E:$kvAǫdM ) 9+xExzM5R+蕍nO"͔̕1`gԍUΦbM52 wd=EX񕬐R(Eo)++MXJ`aQ ֗,[yY ٺ9ؘ^ ?moNO/r>fL]Bx遶._0Ͷ+̟ Hui]b~$UY߇1&tTd,jQzSs"=<s==KE7NW9i}@Ya+)7S)fNFp]D6;F^ ROz,+ku.,ʪ#<3`8AFDzbwf(358lTH?e>Jou f0ee#K`0De1JrG_%,6mtHe/v[hVLSn.m|jm 8an?񪞯nc-60&4@[0"@J^ F*/n`ʍ;F+g`ѵZmm 7-Y4Q ȿ;?o{?Ta(e^cL)#a2̊@ܫ: e8<pb>WL]V^.}7Rr zOf5oh,"eS[QHWepy`AL 2 gKe`댷nURjU M)^'aD` qvO>4b8H8 %Zܮ Y7^?z F0O&o| -$ܠx_4b#Zk|xm4{F٧8q qm31#y嵶` /b[ٚޑVນ͊~o `z Z@V; 9Wq&bhzɚݺ)?l9$^)#iR3,dnZp[(m𕲮kylӔ6 s 3iZm/AF\V]<5A#}:iKD;K$Lr~-; 7 Uka sP6}gwg_ۑ-$F"Vh)#_\jQnrLn٠Pʛ)ˑmߋV 2l ngn {պ.dNU*44=N'WxnJT'WVVpS@ʕZ@n@8h5ІSӍvwgC'ɼqfQa@L;uۥucgXSwF&Z|o'vxuz9$N6cz{2Zu;45JfLZu+ᕢr c8p;#c:i#XiD@$Pd |vM?@JM|i lE@.>=4R{F"'Z6@FHE].bT9Yx1= 1_3dd= =S3̶O1e& f]i9~Vfi(n;@Wh{A u!FO\'@>D%?_6*2vJux_>1|ĭlؕP%X(2LeSsȼ.><+g;e#{ZIifnߛZ 6̓0Uu[ԏo|^VQKwnJ] > ~>ٶH&ȭ-alp&Z_ݕ ;I]_?`\PbfQl[}>b{զPɇAK+c&A%Dl#+!L:@>j3eu1 ^_"@vDcTZpnlh6W+3ך6bɍRn (oFl6nG*%'[u4  ad-}#^|>)($9TzReXHVr1L#"*'{^a6f/&aVrVL3=3v cg nHx_|Z? 2 e|eD qm/*2] ~q`Z.`bRaeJudwy4 @)CeC2t&f7 hop_:Oy#u/$9ֵtSrD`ZI 8YP 6lV?~Z^GE|(`|1Gh5W~no{LnKy{c2d$'uԪL& ˍ.L |e50j>Re#"?kwܚi30߅ uНۥ'L | b3~^Jvׅ8 q^_^>%KWud|vZ)3\+-Ei]V4󙾳fg92en4V{kIi xJQ7\fx"ž{X䜟whcKڭ#2;YfH3,LR <{V4jW)`A-lukȰ{-,߲lLzeMM@z%R~ߣ*2I6?k3msV/NOgޟD ?n ~[";lsh'k "Yٔ^8"r(L} luӓd#䎖r\ _?̗kô W*'_Ƭm]lG‘_cLU;L 5⛒xOzsA{|oIYZ{&~:Bi;lb:>+@ukϹgA &R]Oq$x8[c>pbŘ1qb Z;MXNR [yVlUA!FU2Y U'v7qJGi6(RYsu,oa&[Czmb;\d)+2*c@od>C &)sKOd+zVU%4_-vۧr/+xA)GV>U5}8yx)ǯ 6>[&d 4U)kW[~a/`]h^kU@ussoFyctvXc/LW% l 3gH+sޱVbK!9j|Ec1܏ Ӻ.o eeU w$-*pYokq[2uqɖT\ fUݑ>;v³emd)  }Y/ Ϲjj8"d)a% 0Y5'K,?,wD)5ȡҷ6*#gd1ӌ\X_,T/Mߥ 7q0eʼnURi^RUF)ŏ;,*ұ|(|8z7"G՞O2R8noUxxCr\@+%E)pI?>*FȑFXJ skz}:kg2Ҝ7wo髻VVR45&Ř@$7Ǣxxatӑ4{ʺwȀ ұFpыh*5locUW, @zU;;Z03!Y^U |Ea0dSMLӠ)z)- 2}Ș nہSK_$)FTXik8^{9 ݫRX# l;b޺4֢e]!PZkV57e @dQ?M* ;QU47rܫitY]5ڰ4͊cJ-2ԫEV5c|k;ª_mG ++ڪ5?mŗm2pY[RܡSV2}.q(Z7+\& rLS:+e&Xz2r#F]ozFUa&jGYf73 J^'n2 %0#g!p7+)O"厉܉s* J6\u7dnry⁔0 [5(Vd[P IDAThaoGsS7 p*7.Ǻd1j,#pxŜ= "ؔJ@K>ud,}mz rcpA1ћK/d4utZ";#5ũ7u &?{$0 Qc߄3 ,A *`ʀ*QM^dyƇ56%[&g()gJ@j]8)g& dB/6"R/}|wĘcZ{˦#T'53rM)RaII)7:AZ[i2Z)2>\ . `1%*0=NS;Y n[[ oǟOiU"VuQvՎ d-ʼn$6E'H >JˀR8'{|ugXuO0C ]41,sA⪰pdž6EsYMxxbI6O?& do$hz8`fY% <%[<\:DK]*C.ֲ^|&Qk"2 -jD@%Nx@T wQV 3T3!~4dH) 2FZMlJJ_2I1=jr5Uγ7WIA_FW0qqmUg8'ϧ<EI옹z)z9|\UTO8:aiwqML<nxd]j9S6 8ȳ]ӣyz?]̱z'yqdKZle%.Ze#Z 0~䀮$l1 "d# DG% 04ZDxvǦ۾s|4{%]4wz>.3Jvd ̜I$&9mUVQi)cdAЙT&3d]`>3N4U=1mK|-WZH)J駌V*]fGIwpk ,ו?[ ΤƏaJ|ȍ#7h 0P Csg <|}wjMg|e$21swuS @+\!F.OoEiߪ$n+nHO1gHiIJ@frGe.Cyo v;M݈F 97%Y9Wr#&nJr/N[cd {OrKCP;|aÌYxyk~{Cn/r Īd: Er- gv5?-|#Ʉ.߱^)79˗!d@ }jYɤ} q^sd9oRXxepzuKIx@VcVȡ_mKPϟ32-)}>QxjqטĎLkx`^#KȭӴRn3 g4@ /6iٶ,˘uU*G2[(5.F+vs G&%cfpǪpl ܔ@:Ewf^ AnrzJڛR5L/=f)J34]eR=mO4ٸXL棧_p# PM'nXKWD :Qq^>ϘUg{w$6f}wؑFliJU<GجO= 2Ppe ު孚C2%~l9Lx!g_/Z=9aYiwyi4 3CKjdDfTxlUd[ 7X0j |zg/*^MO94}RhAT# 0rvG x%dzd Y?d)w;%U1ϭ&ktlJH1F:>8EqYQ֘pёƱL2Ta>.%W )]mWHE]J;Xd/Ab@4ySZ,AT"%Y=fI{솟soW5TseUUjbAߠ&GLSkEieb=ߦ``J^Ӌ]WUq\{R\d)_l+<kVb8S޿Uib&||$A]G)o'.z\\n2嵭/Ndۍ~ΰjbGXC8+̱5⑪hʪGOaVe@W#NP'Q?#:H U\bTo*yb k~5&hf5iyTM  @*EOdGC1?u3|Nw&bz TP (a&&.(([NcTZhS/Ʈr*̧+9ޮUOP'J=z<} \|0*Rf(o?z3Ô _Oը*U9$~hIVoӓɵWJ)7fupG}%+U&xX< FKV4F6_Ԏw 7e2GQ#[~O3 ֘Amn_+%c5}I펢5/1[@!7%q+!* hyL~v-6>R>IxAOğ߂S~RO[EJv")Ua`)U/JM$|uiD~]xX)+|i./Fnġ4VV[ yђIU[(x] ^3Y^Wcf[U9od2U*M|Jr %e3YU<)O# [%eV׸MĎkI8rc%91(,,fonʬ8웕@zxp{a 3M?*VOMljȹE |+ea'Y;e\%M*}`Q#C1|@㲒u]N?ec23Qm4@ӧ!|sτp_]3Qj.=[) 'n^]@H)#MEX Ȥ&YG8/0C&6Ԣwp=eqpCiU|$;,ncM3CVuh)b]50@V??sLZg9@z켈ӫ`%wj&ұ!R`DY^|vJS˪ {~~J5|r _Rէ VD&hJG WB#[ґ^5p]Ȼ~Ǖ3M"kR.MNF/OJp&uidSPa]Lx|KVz&<( \{_2OLVD 0t0^p#8=YJ$2%[C&AQLԕSDc?<9vz#IE"80ϘχTT^Ie d)n~GUgKP&s+&(d8pG-u9/Oi(V[^&dJV5+RLa$X#*nHy]@W2mĴ5 M^hnog's4bp] |rYa`b]JX/v &VMoAbw49dSd-Z&٪ ʮָ1u ஊ!@'1><&ry:7Zp- |T5_/XhDb[sGxYi>R]|89sYq %L>%lɎE-$ <CO )$IO=Ueۄ0aShR#+ы=^$d/Nz9zm LQj roji"F%3ّCd#=+>DɘZ RYծ U>)/k84R6#=R#E^x#Ts)a|J x=|Mq4gKiLCFGN:h%rFn\&iK~hHnڧ DL6qn׬[ň}G5fkQJ*C5mC2dΰgDU3r*&pm ;p(ə ٗ}LϫXz5*ZZ7qK`6N>6{.-K71zuI]E|%IǑ+uYDftA+`9@ 豤խ1gVmʎ <&AdFEdG0}oD+ 4V*vD d+TUZjG*u:cqTU47R1Z(dNYK|WX#A !v$8d1ϫbګ\K? Fc[;O'#Ǭd~"úz+UsI6>$$,i@#_3#DNc`3=s7J@ם pEޖ 'nL֧@_ͅ@a.51BiSTmW C2zW2.R]0<7cfa_vOРuJD*c΢ҕEb11+&"\&$cd<ZcT-Eʔ" _c4wtͭ$ϪYˀV[&Fqe /^"a.-CxZkm]v]Jy7itz߸fm)>k$k\X MQk}O߈UKRޱ'Ўd=&v1ɴ5H2m@4;$#0-Qs*ϯt"JM5/8ٵ}J)i̛յTᖌ*uMse5R])b6 !x'|.sY F8RJUe$UStLMq |#ҨJk8gZ0jwk8nvHD)yf גOG0mO؈xf|{9c~@ qVb2Z  eGŽ i9h0rr X_NH{}o)u4 !PcDƤ,W%HM'vpĢRxs[RI(mnķ Uu-MO,l47Q{by&J|YI&7J ̤jIYêp LC6s<&n@Fl $+L02& ^CUXWǛxJ&6NͫΖO/lm3hwL(s2Nu Ze?0>r%[\Q* iT;k)'HΡ֮4?Ov]_dڷ L4 K)1cx9: >۵I)ɦVw ZztIpJ_≳{5n 2 J3[d dG|c/s& 8۶R FW M1'mP Mndxi$ÈRlgL=<=gHBMaޖ{f$nرD|f[Utr,F*rJ6|eka +\VyB,ָ"fK[m+HIٛlL C IDATpU9$\l^CP[Bi*̢ZKHGcXOPG+'<ڿLF3L)XA }J,#פq15c&hD 1Q/qȏ3L2OHS%ڠm2l9w÷b56&hG۞?K1<Ͷ$وsS:[物J.07$# (טfU@~K]XOc`nØgyϿ mGsQ1 (!PrlGX/5ꊡ4hD;d$h,YG6.3$_pFa6'Uyi]57f Ooyl8+b` J9X5*} ۰^zȮQW ?I&1=GWnkYe@5)kLczddA CJH uaT4@|zgL)fDamRq\FUE10eDֲ{$ȳr?k ww2;‚Ft"Ův b=ܐ+%ILJYlnAU ܀ Z#fndaN,kː\5E6QYay-j{d/@LϜ=G1bsj= }ظneJ6}@Ve%R#}^Ȏ2y&Bk!Qi?k8S c5SLW)Ln09ϪktlLvcrHa&+ ,ƹFHfMQj%%zg2a>)W^{)|FZ^)zY &:U';>Jz~Ik?Mʮe֛[]a2#፞sL|uSY#bP#9w,TbI?Qd0OeWΜ~1 (F{Ŏdݬ:dbG@#`ڣik$ǮĞv-ȿFXoFD:JVJ?}7&M;eqnnc?"pZ@lG&UoW҇$XVuvTVKUE|%SeXL򩥌Fijj "C kWSQ,oӵ3MV4G{c=1TE:މpJ fdk}SS_df Mt)pR#Hǘ۱j0^19OYe#򙸖Lz1r-dG.keX5nΰ* \*<9`Rbh5R%#Y=O VJEB 5}12qz- 3Iӆ4czǰa_=f+MY8%,OQ(lJT8kdH1&s|fl䵂ۤ JC  m[xf z\ 1W#sV41yVYMZv'Wmx-sW]5aZZzÑ&LF:VYuwA FFw#MWH9]!*;6"fU+9_ivwU隰v⮜u0qe^I6A#UoRgv;(2Ym#i f-*FN_ҸR'OsjFB]jWU{|D '>y^2ϙcںC i{sɤWqa=C>7UPd/@{+1Y;b`yski̫f)~dGA *S Jkꍗ[)s ^6(R5 T^dyʰj DV5+Զ13`Z,8~1){sq-3ǴO<U #cS֥:} K 'v|+Otf֞J#WE<tHs2v|s3QPRA`Qʑsx%fe؍svlD2jI#,6:#(z˪[2^q$712fs 䓦dG&r㌄ LU\KkQ$aG- 9#F qC$Fs4B'MCwjLj\cT-/ZR*a'l( TE1#ߎ-񁫌֞-H#b#^c2 GRXc%G$*jGe\0.ؑm hx>S8qȫ BmAօgdǡ5 :rׅ9l d^`( Ui@0_y4%Z^ ?z5L;o +_7>01ͺl(F鰨J%16:t||=/F-׾A4ٞ+\0F+\u_!8A14RK G2od u2?LζF0榹&J]"aڔq-#wKFoՉγjpU$ {殃aa$,5 #FOvV,8-˖^wsɺq??w7$\Wٸ0R-%&2Ũ[>^_EdV)7߱A<}kixS֒L*n6:Xv 3e8|Dm_ H1cScUg8@ض.xU*_C-ݥM&sogkIcZ53[٬k+Gb@u]1+ﳚ_dwbYl4Md FM|;kܠ4vxQ4)nMrlz #eJ8=ndu9?R+(+57k:}~qoJ2dnH5z *%, ;|T!;>|^1u^u`2@Y> aLX8A|L< rVz2tl)7.@&2l r3W gU$ǷÔJ5ENǼ84ӛ?1512kKT&"Iv§i /濉^3HM!8XVP{)ĪE˔13 wRr9#+[Yc>y%G2]U󇕐rM֛>P^F94c LCT)晔c7 dߎV)8,-JyȺa-uPYu erέYdӛF6jVrI~?|U'}4mRouJvMT2QJ^|Z;AMLSf5h01FwL|o{U3yjFJqfƤ 3 7R;TnPJʲkb^La-?#Rd0~qT?IjN$~vc'^JmN 0Ϧ$;L)Ƥt\/\#VM{bժL87kgX/fukz36\{J9Fˊ^3&IZ}L-9֒cY"wM.,&1g ?뭴7$I]U3UMH-xba`IÎi*Q6HFzSKr$^MVt= Ǩe"aQcӛ쯯A;ՖE4k!rN=nU UJk Ȑ0T}D_oO_VݠB| Ty Mw(cR^5r(Ӕ]2C1F e@hjOXUZC?C+ʢSLsHg PnW_P3ҎCU3nYa*Q﵏y+OU'P] t*[fVx-SKd-;#4/9F{p1sCw1&I ܟ2j^Og oy^-2A>0FZ #j\{)&[n븵i6a OoV|02R&y"7ln;6"*|8>}3 H/;&d>zl\6OQ8!3Dz Y]+M1pKD&h L;@F^7ʪU1mPJ#lxFpkledעV;j>>PK+r]LM&qv%2x >+1) LUd]* G@ApD^sUHjlnbΧѹmLM#Tq% _pp-gD^1[5* G{{,g" TxSW>4e)We31^]Y??UL/6ד8&-cnU&dr`][2UetsOT9;ְ7]cqL-r1fpT q{NZWgJ9DN%2֮=&Y;-+a=x>i9J9o I ȵvS?"_B2?8%#~V[44_>#1]ϱ-klVm3il[#e)t wkPǴ q 0”NCzW]ILr46I#oa%b; I)ZJͅi cc3AvYS^hU"dJϡ*+Dd8f5׫q6qʺT1p T5f`_Gک4 ;{Ws_h4^CdcϢz=@1 n5qˆcaF2w fU) LGdYk2I`RK# ڻTLU%GxLL1CL[skkPK]3q}FǺT#k7NN~Tv~a.J=(+ϸw<]#%[#׾w@Lߊdr䉟jcR81J=bӘx)Ზ1&VSߎO@EkX8"ֈAvL_}%G,Ol|xjQL|[YH HZRRtV#[ごͅ$2U0^CkhjLߓ3Qg2܇k3)s -f^U +͹Nڿ3E$ƗXJ.[n-aQm r]1oS4)VE/^/OFC\`gQqoQ= bT{MG$=_2LcV͍YX iJG&n];@0sdgr{}2)Ti𢅁 zhdK;Hc*\fc#:i4fߑPpǜ8j ZQ 35CGw^KHGלR0#Z6N9@VWa2ZFf23ga7d^#l&9'j,iS s DU]ebd⪑2l.U߸shD{&rLJȹe͢i+Jy"St7pWӧs!OUiU ̉SvlfBkNdkV󌯝*b]ϐsp h2$ȤA30\*`* .ڻ65 @#YVK.х^Ud4r 7lH&L^_4.M&sJ= 1J6WYԎ)3Jr>s,|.b%@\YX饟Ȝ'Τ@ NɊ`s-{{LȦ kO6x\s48VY5T ޒLj/g[0UsS2ɹb`s03"$n |U֘@yja* =9>k$}N'$S͎W|tT-?+8ʺϧDbp\&&khz#Q)c_Y qd_ltʺRzU뒍ظJ/7Gc3P4Zjp_+Y}Uc{*ɉˑ#vܶdxؿ)N| #ko l:fE̡668>R{k8zkirVm>n0qw'̼Ǟ; ϏNޏ1JY/Wsu

*.<{LBv$p?4/%u6. 㞣͠P\5,N[~-(wv*f8e}-Zmzuz+m+S$I&4Vջ.-8w3G#4L랿Yn]D 7fH{ͰĄN؄_t*\jXJݘϱUέa\U'u+YOϒC08ׯot_x!Ś8­}8ROj+]'d)4r%`O b9JYr}ݫo+^V?4ޟ A>{&:8 1L&) Kͷמ.JH&3r^=aOs,TuNץL]-dV8ЗSu6c>IRfXSOM5`ҩ> cGL#+JTuo't k./JL:" &zpn.̒l ŠuPD¢V.!,q|EaQd'xx'3)w;L dܩΟ | ^]~zÃnCCy¾DX@Xulj#{HijRAڙ>P׵]A-S1a5ISY(#~qD)#o(窇vphz(_a<Lg΄_KX-%׹CNNG{`р*"!S9Dӽd_QΔhQ"\V%!y-pϿA/jkq_ )*f5|V"iq*lct`qrW\s'RqIV@T'( U9@@%K&N ־n2&Yd&8ۑq)CrMr ?v j Xշ X B"8WRqq:@{Xc}z(a %WE|KWT&wSCiIs5L ]rך IXAݜd*Fn@8Hy_&ʋ"iI|._4(hz H_8)Ɲ@?|x^ ȤŨXATd76/&Zf@tKbZ lQ%V:)D,Q4MRfQ6F`y| NїsWOzݾW6r,X^4plb"a_FP]iz6US1v'< B,Tba"HvrS& YIɾbUƬ0-5!Tch_By;-,:,+ /9l/,&Z'95ܼ9.޿!83BőFķ⸩:AID2(9Fԯ;(̺c(Gɰ7@/wmc`@hCY=fC$j.܎58,^B.wH?8F)Eqsz&M *:(?Jt OoI$Y6ދEDCŮ-u4HVōFhu !Aˮ@͆( ]RefeF1']?9Udu{6ٵ{=s=.IWp L:Y3zB<Pu$$6b-QM6aVhڰ9#t)1NQ^}z\F IH?{oys 27b:2Yb>ɦ}^Aj5?74¤{zGgY՛ 4iQ`tJ'ⅮbǢ͈kH@-֩,&]\ ᭸p"Y~qrֽF\>Fzjyv J*\r&vrN~v/~ctv_7L >$F`Rh+ Alީ6- KID=L $;$IO:t_;t6g̷SX=bM+Y Q#*pN٧B~M0M cG˽4+zwoS>qm!մib5|bwT۝PrD79;G`V[=GM|FbS|n'qg1CNd1L:H͆ILM$,(6k|LqAHD6FX'\X:ݭc=:2Q^K΍ Ր& V^Wh- YiBh"L:Ł (DN\]bk"t2I<"GH~QVN`5G_H]%o.E{GKA.i:G,y04P=[,0:' ' HA5q3@i"Iz:n(Z|mS|s;"&-uxr"֒sr2´)ä#l 2<F`-wBwαP 6jIU>!˼X=OcΉ1"!A|WB`U?>^t&`dFT< FWm hĒ10#F`xgQ*7XN &biڌ8}eq9q*cpm:j5ϲP/@j z] 0w(TYt%X~\Nsګ@*5 #8WQو8YΖ3,y #*6ŽPOX} eֿo*ySIM6ACK!2, { m1 %Y̙s@Gt٢[#P1$ũq XcBg({n?0_ܼy.hX`c- eKmTČTNg8rdjmm 5qß 2q7=#Di'4s 3mC\'lF[k\ZcE+BUVKf`txQ,KOƾD@%Y*R|5桐mR,ڵdy\~njeZ[ IBP8ΎJgU8+7P/;PVMajepDJϐza sr팮}/c3_Ⴝ6a$>`F3{R[_N[Ma݋IP>1ĈD2?Q *$VvW!0@D;@I0pwb@Pt,E8x>郯#.߁dۍ#e'  O8D?89TTQ;k^Dʟض(L06"IT'V) w">Q`G`i`-;wGpbt%}Gz5goν``I{+gn\tsδh% @AErqW>EAAx *V)66t2U"v?'^&WֽB3Y.Ojz`QG#ٹy&1Q|%h_9_ӄs 2hRu OwI]QǢ 1/A)րiMf:g!dҺ`$cMI:-4Wz*V`*_<=d8 4W4L:uzL{RqF' ;r{ZENd yc:OIEQ~0UGښ/d )%HUdCOՇ]5Wic\P D=PT\zA);za{ 'zc=x;YjDf*g6?P,Gƕ<~cYzm+zw'ߥ{/WÉotBaT@bsMdo#6=RJuWt>=ɓ֭4m⃃kVJBpF~wUAI7D^ +h&+BnsYqsyWuG7am.=lXbB"?Gj!2i F~I'JQ(LK|WfB8'"UB=`AJ\AQԏ"Iɱ mTiZ7Gh,ZS<VYκjN)^ 0T C֊HF#( Fs2;'ٕ͂;hU!G59g=Y5Л` `{YIp:;T$9BㅑHWC:G*>j*{rQ\aD E20((Of[fj;OW+b?[F Z6#;rf$}!g\qA(u`詶-?]_wʥիאU, 8x睷hun}|yJ؄c"k΋ELS-g@E̍cwlc,Y!bD,0)LYy*kkz̏2Dt6ƬbZ·xX7+msy1\5}0鸌srK`$!h  L52yW&"lHvOcVGc *.bI<QFA8[}V@d="Z."aھ$!ju86EJj5(f Jή4'8Hs96T|}Њt5zlO^{{v}d?Y3$riA8\N: lpp[XGG5y^|':&Ah_H 6)> 4cؿa~"H ]7/i!U8SD8Q~ڋ'NNB-ժ؈m='*5McRXSQe/,f&dm+ZN} 2yq0]$0RSr-L.@3dk ;'xUWEÚfy2[SQ;6QZE?XGC$&L:%!1 rg NĄ@hFFqVΎ~|mJ&;|般vp.S6@IrU[@2o$S2n="[<(Z{ %tZ6`֋-7dґäSKO":׿^0Zi-8#󌊪_|uٍM!vNl<< 04fb;)\1<.3F28 9TģI3RHŤ< cmb `ZY'B>dY>"՚z1k(JD:.Tc-0NJ'tNEu @fO|F)iNgPyJ ^lioj=N*NOKk9x\( 1殹ІS@ӵ,CEoзzK` OIA:BP=!3 k#q6,?nݚ,qctR]V+YB d!lVapk;SLELNh*bHԉ WiƵDSՇ[5|X%Qۀ92JaJ@!,'}:I8A/U^$'9[bUrـIW1p1}\${*m 渤:M^>I&E9>1'3tF%>FOu˛P\ʇ'7MعC¤LGӄ *!}EN *UD,kڥ uiu#%sBlU(ڵ"úOZE?EESF^+ig:uPWet >.>12w¤c'A ʋN -Z%Ig퉌rI RBaMV oknX%E*:25%;oX$Rqjk5&ͅ@=xCac/Y}il%Rl+]~qt8|CD8D Y%4Aop^g/L'{x {P5woB j80fj⁗.Lvv V2tXNvA),v (L_&]Ýֈ o&Sea}YTDh 39oEskX4&MM- _ .ԬIXF\e Nt|2ѹ N+WI^+BVWDy 0鰾|l(W&#SpX5z{C4qX%k8ۺ%4;FhܼN'leW2?j䷳r| qwwN "";wcw.g!M>Akў`I{ʉrF?6^ciavA gڕk%#}_}t8n䃉]vp%NNIWbcg$O -F8LzV Ô T#/㳃A) 3UEXJKQV:a$B+_vt+fEM7vQVؖ&DԢ*N)CA2Bnj%eä3Л-1@y^#?}tx]^ד3R,?S"R1h3t>M3MhӨܵ&`b= 7(͜N ܁hLQZ1Hfx@A1xPGREW4 Q@ 1vw(1%Kݓi,32cɪi>Ԍ[+H4-,W'Á<¢cW| %d5 'h<p=(C^<jMV>֥ۇ/b/yQ$CVYH ,pg6&xZ $X/j/@LA3_u鉮=P;%nGӈ>ŘtP^L`ұԴw:vgdLGkLUrֹSZi ¡aa%4ҧy kGJz9DKj"t88wc͋ ] a5wpbi 5U^?g2L E@E8B6WeN4B܈tii,w͈P/*J"4n"dSh ߱ Nmf_ݾ4ߗ٧)c_׼dhC-+&]C'?ä{"r]xM0.͓]?)q2|,e]Pqƈa$'#|WlEe3=ҝc1c#4L1)a9c{*)39qN~[{#3L'c &݅y0龠ԟgt73L62~ EɟIt&cұ>x29hOiN (Vb72aŬ|.Y4aRvL:4Z{ PW· cU=äp5 ne1u#،mۅIz>=M/YJ^t &j/L݃eE2`0DYpe Y%%8ij;Po#&-8fH>KIY i*T%Xۜ%SX|( 4݁Ԑ Z:Ρ`ia4 59p`*kI\.d,3l4B%0/.ζbҮ`Y|E6>ZbVeD=BPI 7(#q"4JL~E0O1!Q;,z@^r(8, [kWu%!:@Gřpu =hvK|{viB%&ޚpH0rt-U,CX)k+a,u&zGg ;^?="Dއ8p[$g'[>QNhJiZP (MaCԮt sp`viLo_| SI'G$ˈXDa5QbY}M|)Yg(%v =Ec=~C>A9(t@sL:yPVܪ?! & T`g'6e-QiIqOna=91.?Mh2“}$4_`vBa;_~W!leJBZ,^ςZ~kelה,)U';{| Zzy^+!+0NNreu+qy2XH~N*La&P7`v$K7p ( 84 ']@Nt[ݎc1`u{tVGHpGŽu@[ ~&*t92BM{1@%nMBu*#Ƿ .(Z_ Y p*j*eFũ:Դ GCH6V1h5R{`e߲ ؒXwO3&`ұYkuN$T>p:??MFG7x ~zf#h#_(]~H!pLͺER1ѠS0l4Ձ4H Ÿh-I:Z%oߚc 5i;9TB|;DvꌐQʦh^dB<)tRRKh<.^=- zLy)ٍ|moTvjrj݀5d \l%`S,Aط_kqR N ?'eR9 ʹj5nPCٱ=`BS=v7ΔIe0= /!Vt0z;". -dHN<تsvvz')h-˴."h{Bg3n{5jȲK.Ht[Mr%qg`ibYQ}E$=,|) =8D^77@$Ҵ@K0~@1[Z[I>܃9`;4KrCtrq2rFd ikփ_TݫHy^^D{I,,К8Syτ0;<:M_}Yi%Vֆ^UQUL#kY¹~g#n?]Cmvܳ v%EVDIXj,%,2 (1o)e/%W2Aa'$!aZ"pl .k B7ڼzR9V;F`Ţ @LmKƤ);9h\&>Q?GDH)*#7wŇ3L܈)i!*1fv1kG&-E0]GWE917Q>tNԢ1\407bVk"q洃(j,;6<ĕP_ˏ;nMY Ԩ/?mфЇ;CIK,^UhjWPEb13`URLh@_cl2b߆`GU˵2vycq*/i= W,(9^/(]Yn|[\F4:{|L:^X6_ZNx2$TmwJ_0:2.zQ"4MxQan:^gFŢ;ٍ@"D: r)tuU}v]]EJ1YD]ɚZ&c̹.qPHU稭Ieˈxp mc^NLB|w }ۏ]?N.;V&q5x+T]7)CQC"uI mBr`Z3L/H*9CbEVT*(E:'F|*l{p0қ^QNrΌ7,M{#r`(SK˃kZ-מJ6/پ{nb13Χ|:"J..*`#υD`xt='jFf)Hsq8Ҵ18H;han H7*S:L^[)cⅴ77+9ؾO`Dd*ǰp2q*E91qt$ /#af^O)|rr_rmLb;91xG|K]ߢ퇭,k:ImCpypjN)8T&n&=.xc .LJwy &=AUJu=dz#krRCX;-ZX(%y1; {rSU\oF kGHFfl_I6Qe-C3Ʀ̀ wl:pj"O@Ӆj_4sj_ڋx1!xQiI;pD}oIE$ xSem` K_"AiqN1ƵDYP uTaVU&S yhҥ $dq*M4;{'.Q뗻gAGUwo9MM?J`8؄!ă6q샘t {{/{7oeTX"$[ܻwM.%E[&ĚT*ڊd4P-O7@`O`XtNOO0E@ w[ET53]%2&< U]esS1rB,GRU][DzA"u,F'b_vѢ_JA\rLoyR>֟3bW2믏 ɣp/N2=>) * 8ɉd XLGQ˵r|K9V5bsM#!W"qSw4n{kpiv4[ Eg*#crukl0 }SxƘXRƤzDBS¶5KȇeCQ`aQe֭A~_=H!uN¤#&'u\S.sLզgWRـ+ɠsS޻wANtṂg/+bI+|5 lud̔OŤP*=& u>6 =ThsUJUe AI|o"{k&􉑬8_/L#Ĭ$>x_ElXk% LSإFѨU?ˇgTTKaT!%оd1G- Y2SDL+{hF{͓Ѡй5aiłʗ5 BX6j -#^<f gS҅t5"sHґ0M1hˈ+{'IRbJ>y`JDlZ 4yk5]*xrHUN Ƙ=ݫ/`ҵL )参mz>6;o *,@ܢ%T9a Jb!#&/'Qr#/18]q*vdjzèUVVWWn$ jHb=azavN+Z, @$`"hfmBݷKJ3#GJL"Hy7JmshψIWj|@^NJ^MwI{g _LV t&,N2ys$$ָۋ1ᄟ/(x0 \`+Dlj¼ʼ&VD!oG\Ɋ2Ё'$BgR,1o]#*#LU:m>ٔ86ค)&o`:F,)+L:E%Z|0 q&sļ SWakU}.AOJ@WחI NH_!,Y-~nw!߆uE; %_m)T8xAiG6\"Uix*`'E¨jopԭ8#*&=:] W oIE7 O16:Ci%lʓ F8LjiTɉt`0Ʒ~bA Uarɋ& 4c8's o"(B&q6<'Sb _i||rz(m|$Icu \_R #~Uҳ7&]o}q,ӟ1_ΐ`yn.YȂE'0jposz皉5SR 4$U#)}PuqNEm\. ˇިhnoJd0hE5)%RkJpI+1{A9k徍.ha ZbØ8UJ %Ǧz6äUqƝ^~9? Jiεr(8ec2jg~vE\k{})VXUf ZMlB'*gnZh`MByjM6"&a,[eUOAJ7l.Ld k>1"":t2Wc҉Y!A\.@C\жSH iF4E #ؕuiK.vwx=Ý)9L0t_8ړG-µv씡+~WDg+A#$%` Z/&Lێ8@C&{CP`<"$bGOX<"Pǵ-$0n^4oGLwo~96v< LHөÙGꬊ緧ik5MKà+L:&ph׋^TXLكLjT,BKĤSHxNE^N kt{XL}X])CDpq3r &*) :%|Mv^$_T\hA-QH0^Bks 98ws>^@K d?(*Vf;fP1mP#h-3*7{Rdq}3:$$ҥˆ6\A!.N]@~WKzpw^?J1z"e-R {ïT䩏۾MAcʻ X[Rä˺,WbЍ@fVuP92WVί#VԵ@V)̒9o =;V (QL#M>3&׎ZJSߩ/= IiRpb8d{_s}+;4D[ L:q0ŽaaK3&RFN \ڵIڶ8VqF-DLG3ݧR\.ݒ+ B0uS-V'G~R_!S&;NZ%7eѻի;i;5,eqMٌrtCIz\P>T3ǂnْv9V()5~ <#D""8mYݜݜY/Tc &lTD;ӍIIG IV>bF]W" ӰmgCw1'5g=%'Ţ#Jܙ%jVjtF*Rhtҝ!. >sf}9&Klȫ7LE ʹ!d7C3=)CB]0R믪n "Po5!~j-0$N䄋I^2k9źHO`uRVx`[ 9{0ZwI3xV1FpO꽏6%7]/2{睓Sn]+0嵀zo4Ҫ' nȊͺHpC8pUK`dQf tc0K25_ O\rh6j좮XTUN'%6X ?Kf 8 (a6NOJr~-0b0r M㻆IwrenU9 ob^:Z*Syw!'e痣Q_N52L#HcqQb{'rc,RÍtd&>7zIǺU΢*MV=fļ Q21=H1eb($*؞4Qh3RW6&F y\L:dei]}WʭG^2Dzmv *Kws\sN$#9xIPhCGTPh"paѻSOO. $YNp}֧MLOS|"b .]x&8kyIb^tYW+q?ƻ^E&Ezk> iD7*&`|X^~ً꾁KJ&"F:?C.&̓˗8)Wp~ xກh{L}7)2q&P 5lC[?{IRk?i8gtOJCb; bJ!/ ;x@+Jh3asi\f;rD)2Isoxcߊxx29*9 sVt?Iא3#ic(d-E绂Y1ZB$L'(2Ɇ$ ̥쁞R<}aajVy6eƔ)6YƖq"YiEo_JP&TU0>zS R)M[7靉X@k%TQW;qLk6q/׷6wt5e‡WGE|_2-L/hG<!ld8GpD,c*+M;}>?6n/}eI77I\7vK>e 4WS={q<_=6sOxϟ L:M|LKx{Lg'tҽ YyZ{:_&H6ٛ!h//C~F0 aDqt,Y`H |1`e@Ց-\$txDf:۞c*ȕH6KfkڤB۱Mw WUy!"|oɿIZEiϷ_x/0Pi7e&S yٸ:P7SojɃCjyGTδ1阯gE2 f 'FV̘v!up*!ψTQ1uF4S&YsLhW8ZyPAfӲfM9׈zN$w%hgS[Zpcs(4כ~lI(=zw[91Dx3Ԟq]G8KakQW7Z>)g\~;1֝$κ0o@)D1!EUfc|J"O9AWyͤ;79Z9$*r֥"kL:h?E^uV_;L{'gGpdwOUe|W Tgcp`K8 Xڦ:x1[D.?`Uä9 V7d巯vRbI)(AJNNGQ1JRɂޚ'0ޝ^'F^hD^Wi4%Xˆb@)\<6jJfTUg'#\I[5HBeH| kz#D_\<9&kx5}^߮~BRSI'"T5. G0MR.Er Q|DxQV#/&Ү0t2_;4E逭5?hF0P3$C4v;uplbrWJ!]TQ:<Ÿ6B}k -ʂN4z}O@.79]63 ' EQY./Wc@+Lq #VrgοI\M!?Yݜ#I>NŘLkAHMW89簐hsY@Z-wHv\,2+0~LKQ5w2*7I%LJjL8߼IL1!9TLV\b[%PTT#R4C/hugdz"/KatQ E4`>gi!ͧn;{$0/c0^Q.dCK$ d& 7&ƈZN\~s?:j"d oFf,_*XZ`ӁI'nW`gEhg Ux@r 2N4"8%i.lp,X8֦IsELmvYOV!=A_<'oZ, '@E¡^Ť#rN=`/z'.I꽂 Um"*0r8O>tnE-PIݺ9kS$~ yxqMɜey5',,c. A Qt YF~?7qNA8hEtvpJz FU1m/֡D\8MFR RB2ηQEk2ȽEhJ.82[*~`C{{J @d3 *Y 0,DbSw02a) h'sԠ8x4,'AE1 F'Di 4-m+'OkpBVTsBj}*VTV:aL$\!80*cmOt(>)nIE=iG8*3pҐ]F~B]*,Q|y!zqu;0r(b@LG"N8]moѢ :/ݼ)=Xdo10,#ѭwJ=Uis) IC&cH_c| nԠ*͛iE???#rJLwy0Ɉ&ޟMqs77*˒h$nݚX /biN_K16dMF#6c!! 40&=5WLKEv&޶z`πFӂxeZfBz/qthX<1TFRUSwS2aEV!V JN vmz{xg !A~r-ё\Br-A!Vվlig%An͞]ӋDSiͺ.N8݇>Ԏ"9Z a |)W&@ *p_cO~߈"WNf9~h :>=,i۱'i[Jm#up٨cNX"!e[ʌ`R1((^`_Z|+A 1TzWLde7===tv|Qou!S+,HC!#0襩.%2s){}큸02hoowRO /K=ћ hP&NS5 "(]x x[ל :圸Ťspiqd[wg. ya>^(WH+%ö=euI_I/(`°h8η5+"/bQ" VW_5Z9.U3=z}͉!z%B?2/`JskE!<耍pӓugハA0R* wۣH|KUxaڦR.. >$]lz1n$YNb cZԑƤJR 1_RKQ_3Q0B>cOe=J"W,[jV1}<=i2c5KNr1> AR{NO$[)T $)n"[ݱ3*y2.'(HiA'STtV.sK/ 7qDP`%Q[m`A̼uu6[ ՔjeSV6HPf6fˆ`T'8*H3E,[Gvg- qG!{W:L;I<( Ď'ao*>Wb00= >+O5=bF@"Tߨ ĤkܨYI8kMM/y|$utQWT`SKx1C7ta,H MɈm)o DdrTbݣ9**\Ke`UEmXW<ɳ[4 Q#'} dXcґ'?_V{{t!;Ny]о??&@i%PK>XZ :e)dmVRwI? ~NO=@8=)h= ]0}lpvs hyɯ~63g߁(4L[T |-A)q<}^NiGcҩI$ wr&@0LڴDHHJ&^96YEk14GxڵKh4\teLtzaYS(AT\f(_ȖEN`{5Sc,x;ԬesS, ANͰ1jTZ{-?j{.Ծ]'T.C*æhMDV,U6bL`Nx-"jO~ҥ7$;#HfgI;KGcUK\n֒ nţ-px\f @ 9pY$7BkM;e>kn{&N GbI6 UdPlF5I&"zQ5L$%p !=YGGڶ;w[iĪSt}PlnFj)|8S; d[7?c,~-!I>`l`w^F 32RGnݻBT&BE[\_ۿ@|` [^ &Z7K2n+Lt~mQBξ.QiYg1~@n0L·t,|$ܶQ`ςI CAHVX0kus,)!~8W1[m2!bͱ(՜j5 Ds:J Dᝈ"UC3>sM$#zE!޶!Wok^Ro47OnqšrW QpdžI1% yU / S\.jC`q/LzIG^ .D݁zJ)09V`'[d1]ςk0(Q a ZByK@H:]Y2/nȜRCsRUޤS'olÿ 9 ]*L&H|o.ò0RjPjc "ubkRFuOˉ *N"9uᲆHrҧ v)1$c'|AA)78<{IŻW qPQ3Jmhu3zЦ ;K&I Fbi]7j#k5S`)-8ү'5c>厩֋/(hNI9NM>'E/XFoxV eL!HBTB+=Dÿd g'JRi E1s:^cs]_x*+g .'%p !4cۃ]WH#c 1%aSk&ݹ O@^DLΧݎy1x-]WPQTCFXFz;6" ~N35a)nͽNj7Onʈ8Z6XtM(CGh8& \B6_1qTL6M.-Y>TZ biH_qjIG $˶U qKqN!鑥4^Av۽oDNuXNC==YZEQ6#;p}Q[|A\ ;<7E]z+ڝEnAVCL5 C*yqӟHfCPiKP[[*Y f pzX")i  A c>dR`R;aTAb W9Kw_[KxB񧄙 C ̞OlGQřEиfk>` ?7&SZ¶TƔP`?I{pM"Wခeуn,m?Ă vπHz1t|8Yh M&f|pL:'M i#q:&BfGF4#L]#L- $y='NՕO{CzFK FM6L1r%͒t`҅IQIt jR[]YU:E9>L^hz5fSu~2¨d%#`}kIn6c␵YՔ.$[ŋs17۪a>!SM )M04 8_ &6TmFJSh ߎcXb]u%*'؈"BqͯvWTw۞g:$5L;+J{ŊU ϓa5tгoysZWI'bU_+ZQC`:*rv$ ѡNT?lSLǵ\9_lk8ෲ_R)BW<.wwlPl1jIw;+t ݎVx5":߮p@9Zs#ѩ"UM)]jf|K?rH@gOp"4s:SvO$Z $zE {V`7I^+B/s߸h 3"TlbQfi7D}Iv^'-f1f h\.AsGȆĵ U߈YL]Swg O&k`~ 5cI뽅?hIda2;1ϑ8&PTBW$xΑBX%H|11D-JE!EL>{.}(E?{#I鹹3"3"_UYYduARC5`E BCB hnzІ`={%PhHQH"9î.VeV>##Ÿ6kY 7ss{{{97QDy`3‰Lg҅6U^Ѡ0GX5 .Md "AyV;}].+vJG͞uG1*&"q&>w(+$FcXsh,@YKpf0*qKE\p2g,7 {i('3Y  +|BWmo`uEHߔuQzhz͋YO#}UoIP]~ʕ֭[ɖKVfJljP`Ex>dbL(1ȉ,Id#P SLSY`نLl FP;ڎ~hf5ll1S},vh%FmauAK 1zXJ6Eord/|j[#L=CK$c'fESZLq4L iG(@7~L aҍ{ b3IGmJ;~ z"%;862SN+8g^*:qAd!H6] }TW\vT` @#omPB \=&fx/Ȳ$pCK}3 <MpkC (&d6gx1DX$Jf63Z0.5!=n`7h#qM| IăRS?ӷ`u|Y^qaR蠋I Rj#*2@yyS _~E7kF&TrVwpjWӳ׈,D%2N^Z#6FM8:a+jJŤt_kϕ S)U1ĝ?]iHL$!t2ZdS_f@J2q?tve<)^Zӱ?ɾo06G1 RiƤSoɧ;V@m@7z9{INJHAl̖Hm&tŤ;m^hWb:68\~=peL!sW[g'ysL'S\.`o~sm_:V>3LZCjmj PFwR둤5jɌ -;@ZV~;)]~o}uOypYe#,<Y)fyv_c ]8nsL6OנD xIT;&z;d0{D!j:dOGcVy<7#d-*>"`t$,ڴXi6}ݽ7ՊOtGJzIt sYtsL4U1鞆bq-22H:ś`o,:̊F#yf%.L& N9U8] M9VYw'<=6k⡣zEAVdVWe3f"ݨE_ sIW"eԽ~̘t26fjJ֤<ǤDl)lp?;^"[6a]fN4qOZ;LH136&&r .7vzwE!2O ZOB4vgɔ“aCB+R%ٮ$ŅznSO󪈫ߵW`Y&W n'Z.yxyN'S,{t h 9h$Յ"|iA(AI*09>ʒ[vʛ(3+HBrm"/ iZ~^L:YܒBx=rD _ dPX;n#Ya_]nܩ/%忭XNO, b|hbU)1Ib9L ƗJֱytODbfAB rY2<䂄h;8gd4>bs8ItE%E2MNd4y,[r{DI_|ڬoz,iډp^%Z#*d$TOcyZȩ*8Х$SKrMU<"(?JŪv;\ *NSF8hH]R% $,neFv^㿓eLA4Oy4@]8 ٶ'+P!x{\>|I ,*"/wYuW'0p?S>g*?QZ8^O~/&tnĵ^) JB?I6;oAE?(r+P(Wy989.wpI:a4/aOv#|>rt+ h=w'/zo}w7X?l>u}{q׫">LT1k\HQwC< •n  fqBP@qcwAƲ1FIp$A-xkX'Ǽ&0졮{!R@+cqh'1|yA!6Gy1Y!¿K*R)^tv$ cVx̂n^e4f j"ygk{,A@IDATXq[:Ծ9O [__L*E%c5L)^|\%X+dI^ēY(f>K[kbpch\Ȇ߾O8mQ^i\f! H%f`M^@Tpj0:vALNd& 5(kHH0LQ ā:߇GϺ[õQ#s.ƇClT '?1:҇w%ҌT%WA|L@`U#_zJZVFv#:kV%6D)4'ͅ73UkD %M" w!f>MI7 ÐBrMd99ajC\^64 nHp)I*t2Ce$cB+o'ld#~ׅ壣U|6JQlgv55`(cZݪ90Юm&e{5;f0Ztm* ,hp嚮GPOx4Mat~sR"gwq]..>}#nv)ԼS@)ID2ȓ NP; "cǩ*6OuB'T$$c\ΘagLá+ i$0 Z'ض==&ÇqLbW8t!f8A`IKZhޅn}lftD7G>n%F(s##\kGnܼ (J$ĵyIdXRdF WZ3˪Ku+jX' {)]D?o^N-߇=;#3ӣUi;%8ݽ"ۚƔsq~^'.9A?}]m"lWcTIOY/qd'oO¾|CŐ>~PkF]_܏ )QB:,*&M)g-mз!(Ehy`hBYClF;'%g M=Bn\EZ 9lu#N4~s)T0 4xS82tr50l= $23c!  qSbaEN  UFti?9I;W*wP,89ɡVμR>M魹@?ƤQzđm)*?;t#2j+%I2 /jݜ@oEB2*5𛫪P t)%ObjЄӦ~oo&{,Q_d ȧ9 DH,нPn90LG*K(JBmugBR.P:I o5xÑ1mݻsSK#-? W 2Y2܁;uɡ uV`&'d a@rT <#[,Y~0ab׭EgcW^y8^,{G %e}+ۭC) "?'^މƚhƕHB}J$$NR-Xՙ&g@n-Yx9gh˷{L#E2Ba.ӓ#M# 2SO 5S e:8 GhjqۿmuWpԋ;8tEn `kq6*@F29z`f#Vyi#KUs둸D ty{1CxG7{ppׄ%0 .`aPEKy2 pMO MJS1RR֒#]헵(@ h|6X y$Y.Hvk$1EA9D]-4E̲z0T.I&ME̳6)nSw)&@eI94&BEERDXqcP^ͩ֒82||RdZKl!-PKDeԇZoYsёF~f\_/q̡{_} 1F mb58H*F(GTmث%֌bH|5c=_O`{&TexnF ɟxXY,SkTr㰞oE9z15%SXk"y>#5cV (_u]=sFJ& ۏя.'SO-B6q>Py;B k5kT"(H^ V<>jִQVkcJn.N6t[Ty0)H,PI;$m}Dl̇c*(>ZS(TM A%"_{=[a]],<d W\[^!v{n}Pw|<.AMD=^^jHE@l'>guF$^fxʀ~@CPqj¥k3L@XP]]ij>#8]?ԛtWi0]v\,FAⅽj0} w'cգNnxggNnEAS&= m~#beNpXEZ/VbkLN[@Rd:G)bsk/Q ğRS=ivmzdf dJkGaA'WP=Iru']FP'wQ(GUKI}X?;Yh{I,9<7/@݆JNʘ Ka\Xq1b9᡽4UDPUnpStN{ ߆UW %ňD#.H Jǒ \;+dj2SڍVm,؞un)ܔ #mw*8*igR@k)6:m*:"MA-N;ͦx k9B[筷Z{߃A˧1 "A1(^ >vV(VF᠑m6 K0!1&R(׭|.9LzJ…+|HKBf"~"4gh=[ 6C*]}LdFK<ңHb[hw,#ʄx䖠PX|~Zj/>z|~yEIpV~ ]KTTIݺ:%( d/3qy @o\n!AXFVXv(Fm3DSsV]wyi/  f0*1XkL:(fFTxjPSFxm&fN|@eUrjcUKȶcItEhԺä nFh`Y*GOTorۭ7ZbvRSG\JR)@xPt(xBU,E+L:RR 0I-dB@VA>ݱާOy>Y `#,eV2k"äc]*↧t8D.f}եK¤%^vPA ġcZȇBUUNcZezHg(BC54jf0R L)\Ve]S[}=NX ⢍Lf(N?|"(N9ʦȻiuufċFmCo>!&z5Oyk<>VE2V! m-X/[z+4c jT`]#qdKtFr$,äw"*H @:Ȝ2c(7zkF3x'N6}WA~WWry-{S0<"dh7Um@TUu^"2Ag}&Gp% x^,Q]8_n>Hi 4V$u{Zf.|<]pL*^xuNV~_JoEHN2p *m4z= 1E)ɣsH1D`rs^bLЈBiȳ՘tKY+ )}\/x6IG-X$*ٕV11Y3cѐ)¡` g A8F@0+. (YءC2r@ & 뵈qXzBYI01󈰲MRwaAvU`Q@+069B)#X=9 "\h:V~Agjܑ ΄IQ'鷿[OUf{jH'IT~x<|^s޸IZ84]i&CX0ay&" io9*p?N'Dk@l 3Y離);{D75!_a{bOINLP qW8g˱Rq%Nj F AX3fvt]fp4S3(;S $?֥y{q$l! Æ_5Ios[XCtի_ʾu{3SyfT+|U`ww}u'bD+ִ](JHtI'uEK.:3HAz>SK.{B=D8#1D!;IDdQ8@oeN ,:5xt Q6]eб9&@'nƈoin[ݰz9&Ț@kӷ?b U71eQtۘKaubB^k^^r$KdrkQo|4ACũGF\JUIцcvQʃt͓]1zl5pcmEjcҽj tgO1˲aIl7~rsO=[X?1鞉1鞉tLm:Ǥc=;;#t Eu9&ݳR1rmJQf@K_b"",묝J=f>}ssbp|G~Nm Â{A"^`="7k1w~!3I<ƤIcAbఠ|G"صqM.-j׈r~ÔO8rϱćP$(G&NgN\HiV:*PFVUIXvDYɌnt,1=2N=?qL:eA}8btxXC~6ҴR][Ec҉ Q[\98/Bv:d!YdeIӘtz^'3Z1y\{ 8HL:uA 27Ps/PA/e'R_~<<:gI'b":''eA)S7z,ܭFO\+2"~j}9 kȑ,O"4) k4;lAQ ݟ!LRDK:p#yVYp&_`2ţWeG F?hJ\!q0&!Ja)D >KDmUFl}!Yˀ,l]>0ʴƇI~Gy )|ވ=!I\il?t:ܯwt|Ep!e۽gK ݣDriHgxJ9o+QvHzIlt8=Z.s=_@NGtE1K.j胾I5ɳ*ѕ 1ܴS Ⱦ~G#靄8C3#gqB# 2{8%wޚp_h^`9 gW: 1}/bЧ@D*haB9Qk@m[]veSZI5IEIT HhxTtЁ#ԡxs#oh?B=4a,`)_c0[]"̉R_qym!dSI fQ4OIGMUZ:NG{DGr7De?CieN(Q"݋#`va4V< #FVpTXI$/,{m77ϱ3C{R퓼} ~Z% gN`$}lf iIt+踼 pe' N;@/ݻ:k>ݽ$\!ĵ+=Lpok?'^e5tR _8eRR*kN}Co.Xm`S#CO?YW] Ch(̜pl mYּަ,=!&wo կ!v:_ 'C+r_W23 rw) >h5޿wMՄj*T .6IyMq5~#sB] aXΓb`GQ@ja+ ^ޮxq33>/Á=G`.2 $zx$y"5hBўA1^l%TS#'9N|_8\Od=rAĩ FQԇi1Ε+Wa8:쥋\GX!7nSIdIOR*m.K5ݟꚢN\='f6F”f UC#ŒhdOU88"T)Ga[]Fq^b}9.(\altqrz9(03/S6Up)0)IO$Iըo,& xmȱRW5bRu%A z@v=:~vNש)aHD&U\}CuD*bq5 "[!ݿFP#ety#%.}A$厁ROgb:RUGcQ%yME98D&/Z8-Ay3btL$>@nD4qڮQ-*ۛȏNHWcx-3F-?]a41铩/PdXd}}<G|$&}ի*]X##Wt9-C V5#&OM)2>ƭ`Sͯz%dò[ NJJP%&*K0Def ŌRM5&^&܋7lvs `Al0\"dRV c?&^/ٻrK}dAvnW\? APB-O޽#ä;8\&;McMl)CPwl!=uஃqEs7.¤غ'jVQH5zkN5[P Wׇ$#ZEk./Ki'Ge$S9$+sW5}{=; 1֝7O=^cnh$ ~\.^ H5F2h7U˱i;_ 䴆e*UkL|n`Jѳut^*£E 2FP,tk *'zjJAFF 'IE пT7 0-1LW%PuUkDӛY9\"TJ2d*U£mEVm/0ngלI*p#0uEgW_/G[xc1˿?p8}"LkRh-jXԚ>Z5VYWc_oݻ z=qkl8VT3j"b@m VF ZdBK X傣Cd'M^%hN51EĚ#dgW>;^AhJ.O:r{XtZdI-g}`pc:.])G_P5)eX1$XE&qD92Fp !~E)J>j:HbA/ 0"ٙhUDfkX@^G8~+u^Nmo:'Q*ަd6Ed!C}$xrVDmL:MS P<q>^~{1Ώp'2A!6tOwSBU)VgRutzoR =UtRM6^ܨ覆 V┺, A;5 $VwoipHTm %R,ƆFRwg$FzcҔmb]{M ugh$ =IS11eYM-i: "JRW^+t*A iSې$f 5 wmbmMeAIDqGVKmuOW!!vF8+^b,ERa%5sf8}fL:T\F)@| y?cp`tM6K*\b# /1/ȫk/{.r3[ʬoAd(|sLwe~ڣnzHɥƢuāF[Z#i<+r11‚bQQ2=Ĥ;* NPSg"kmmX드a@通/Hi&zdwS(-z8.{ HǫVq[DZ kihÎep?4?ldV:cv*mM6beqψIǠ$  )4$+O˻&ZZc1FKA!Ӝj0F뽽;0dw3%!3qkd%(MslEQ4Sfy9Bl1'IG2 üGon I[A^%(nkmXoBT&]XiD@Zzz `uzn8&deՕ(x?<1#:L:wLN8שžU7&9)=ҲnIc!i*(-$\d VtIA%"KnjH"̞v~`TK(mN. Bn U4a'2:n;kܤHrއ;i@WҎ%Ikp^$d8q\X}ߴG@KźRU".!$xk&0pkf'1R?/̀ap(lD] 3yXJh`\]wSz\7L՘T&s]C՜'{##XStFv|o9v˯L.l8`Eȑ_ 7I)6ak&݉ Ǜornjv2~ʟkrxbzlL #;UIcm˾_8Z4N WEdQ/75m~1ET&tzaaT}(S=ű)#( 0Mմm3diUzPL]Ҏԟ~ѰOwO2Ta=T>Pq~E˵=ļۧKeueZTRU6QMsts4)!i_b23M *3"&֥*EȐ|U7I!.&ŋȯSdS ճ6ǭI|2o{)s`-q}?ӢFvCT~U)_E^-&]y)ja v؝9$r.8:K"EbKER &=st|0\mkL:) $r׃v'n҈;5Y.~ՍeޯqsVL;Ûntg\~]lOMl6ۄbhVYG){hqve &#1hqZ:7.wm֛`ݸ1)vw1/ǐU\XozZQZPDB'pf,^&xEo5UmT#HsETgϒ"^O7l1IE=`@aT':ʐ2Lqܫުcl HOάL:F]L:Mŵ@3`-O‡$c+p>+B+tx 65bpd`FqJ;'L=IVFR K7/%r=j &]ݥ%>Q!e23DŽIp͢c LLf@41*d5 v⼽C@IDAT!x9ЏvtRrB89cgv3|_EgtjvDB͚(ɡRtΌpTb5zg.JSt8},sjUW9SaפhFV椟9E(pc9Rw sb8Jc=%>$L>|e".t@BMTW'; +많IT`eilamoA_YN]i)f9j6&sNƚsz>쏚 ulrO7$64D@ "G(aV& B,: aPO )RjA._'HڄFUX#Tٽx~-tAfyb"_L!4>) ytf/w'OO0B+_\P8aKS|/Q:ERV{? dBG#|sqw9Y ~(0R_p. Vah$xˋa3.NCA4uCe'E*hELlQ&].1O5M j|~20]>}FC&]c-h:`ߟg#8}yHzNkb̢;ݟ`B4kme VA#5tbvo\,5p(`ϭpO,'Lo=+0yO.&] G<}}bkc#FӮp3#\B )XD->ЃW>ףOt~Q&Coq`ݸt mjoDDFwL)m\504c#-f=d¨"Yl$5qƴ d3+cTn* P#9&݋h5tg0= %]8 ZG;& ImursQMrfHQ%nZ;ip_ɺr=K.Ir}IL9&R?t-ySݛ&sEɷ>!L5KصAΏI _@Йp.pHwaq\JSv1tZ9\B >@Ώ.>*8, ЈF7XTT($>nn$PKE$>$i4RL?>bJ^ƾۑ/ "̑ę*#a M4f)DY 0nc Qp_uݥd4u(##91~A0p24L:f!*de {a=kz_mL_Gd'Ͻ{/$iCthrRCJ5NWSF/ulm91:mTs*]aJu^ G^l# .HZOW8Ɗ>h=IgJ5/eҔ06 {+ 9*f.i !2HISK/4b3@!'ő!-PO!5tҡk a}}R\4#R#[#ASXv+zcI'smWxFU`6ݥ\! D{pgykpWl#A\G/%#ܨ7+87~PLV8u55Fcf[" ڭdϰ/N?b&F{9흝=B/lzs,*}*6GgJpAt~7@2\)D*f",?1r* Oo1 FS[Hс B'}eJ́;cw4SǺ=c~4)Y 1q1&]ˢ%树@+ӱN~OI GG]EMܽ 5+ oڠ-\d_O`M| jIn?h/WYhuHb \]+# gq\"( "}:{oZHJU!P]# irsf>QX.H$9ÆpDZyHzQ@qaS=}*L:'\xEµAԢEPp3,ݜ]YI4D!CU?uQs ơksAsc 7o?V /ݘ&C . _dd$]:1D$D PybL??ܸqW +{~_j.ϽǴl]z`} &<5\9 ϓm]u&|%T#fFHi%͟n>cE)*;$v% Ϗ? B?{IS }ZCU1+> &]~!{ !};? 'Q~cYR̗=t{/gĤhL +W\dF lކ"KX$qq'zik`kAt菨/*m⪳6n=l5 S:3&Swn=͛]'otGȯj@%c[l(Jұi0rQBV$ÿ@;"yE:_Cl #f@2UC3,SZېjpԈz^O݀GaX+{μERTQh>6ya7$&HE4{ث$GJff'` 4zDrTeAan~UBk9QAw,ؠ Yp$\B')Q)*DS !dNi^u7@2ɵ̩`<8(NN=!3"xPk \+F  UZԤ? wJmefnDDWYE^:@]Wl0<;(5xDlVnt4_`VT4pPCv=E<ZS24 k*AxWȀك 4lҀY^R@\ϡ%J0P|Rw82uztW~<&d (4+q⓮ 7 '.^ @F=ʍKST`[S mSYn(h9%.Lt%‡wV)@ieF/Ĵ"EK\R[[FAe֕- !_ &?P>3GZ~/63yz?@?]8x_k{A`=2C6yDCeK?!+Y)b%>Jh+Cz Ji5..!~;NqaNž[S }1Ao/3P5͙jInT5 8- -LS)p㔰Y&3yq(ZstVĦ؃FȍEK E`T* ,v.W;::]b2vҘdD'"v)Uw?]LD伲'3ffs}v&{KHEHi5AqZ.mͨיAqvh \b OhiEsLS2CQ7I>!QIWbWFўi]d)`{dɁ%\"# ˇA;-dV]am/e>jBw#ė5GVfpg`c={" *ũCl6XmC*i 1,S MEd͑sL$XǁFH]$c)# =臽T xgBDF[W:/NЫ Q0ZFQ?d vdR3wCEL!d)_KduwWY*6ImݰZ`AqҀ` {$lM8AO44  )ЃF%JS,VfVfW㜈[fe"Ky2o'c^{Z$`u.aҝET,?O"טZCq*Yow_g:#?!&Pm"*7i屙aUxaZARXo&5g-D׆ 5_>9RW327bxŅ[{ID%ͨZj.)U(r;yip8l1c9Fǹ)(vJFOe;*t "fY`IQk8"7gP]m=QT(;W~uR fN&e6($f(xgI'OIgl 2Q 0ěˎNI⥔*(`TVA&u r0̬gM_=g?ib1*h@m6?,5n3 `ohw/>5&Z%Z|{DRv:^EXLg6pP9Xm V93;n|6+ṆcQ{11qtl&$cZ*ӻ,?/z;&]xtBsƺtcu htmB a+DyL:[R&^Q=,DJDMm?qSp*% JL 0HNT,0 [ua ɸj <7QΌv>)Y$d"DቸV"]soh !k  vV)]rA)c`چ6x=)ƾ^\i,􄎀-Dl+j8,of ^1I2Ťh_cD8ѕ5Zg]_`@"8KE_CGP:oH⪂#y$g+ y!$QKtųjyIךucf3wFfXGuQ/e?aұ)!ܧӐ0e=oGuyT>*SVqI\{vڸxM<#T<:`*ĤCow&[L:}D&t(h=-4`gf8^@ic~] 3I ulOد jIAWdAęU;}o1i-vvz35&[&miހF^5APli2@9"$*ƈ-'$FItE"V:wpz 1loMV4՜xqЛ15dɀh0XA,L:|/<5׮Ytڵ ܟн8,’,h $#gs@J8@7sgGeiCԚJ61xk 6l#Y8-Sk{ :zaMLR3w|v8V|`96:p3;޻#1+Y%]N&QB|g5|TtT.F^r/K1ȥkQ2.իf -H@2jCxnebv}pI8R7r_!rD)PI`ZȨv]]/fhӃ,}a0zwY0t#0qx<BF>_bBLdmcUǯ=&Tp +;.kbBm8~Zv \EuQ.ntjGtŤC@ƪ#,$@u"nZhjhmoUtD꥘;ITL[aB HUeB1Ho#`јAh'SP-,nhq~a1l'8 `C]om0ȨEƁw".vʲl8i  .:om9fY%1 Ĥk#GAwL:|2txW>blɁ1P8 (ZuNYZ1[Z[)SͿ`m"#3aa{ $uDo9wiy&؊d5zD>LHNf=ҨGւDO,1tNB6ҙLHlT9Qbҁta;_'9'R Tt,2|oYeKĤKЄUI!$Ā !0 Ɨt*7pM[.ʺ7kq:+N~Kit3]%D'+ӯgl,xImK .jja% #Qfu~|m{W^f_җ=]xAc.~V=*f_W?_t&]r/d/1.I9pĤ{=Ƶ!~IzK^b=>%&݇Qt/@|+s/1鞊/1鞊ln ƭ[O}jn{.dDoz]șb KSAQ\b%N\4kw<9۫O<߿mT2'z6+Ѕ<Ϥ˫Ĥ{t#]rl~ ..#/s 'yO w-T& fJ~_i{zmFy?7CxJ,wtu .ò%m A ֐سcSG%mv:T,5f$+%XMgA{p jo1 h KW)n3>6g ae^b$|&{KL ,}IwPA;\^G+ږݎjn.[3M-Wx>ntөpxX4qŹab")*s3ܶ䐨r+MI{R!bҹ"$NbZE@Ě<&%A(xw=-!lP:VcPhq3mPy<GNL7>pCr@-·}D됛}&r(8DRW:1јd 8m7YqYu3*0Af"P|l@dIa\ 9ɤ7$oLnT6'+]1Zg oWx= URlTJ[ 59O$&k/'V\fZ)T9neSdtPx6o߶G>Ti?]{{(w՘[+I=Qkt}E?ͫ.*GGײxL;@uݶ7_.LA,,7EtcVO!ߥ_HyHYF k{pfvx8ցf `k!ICԷ|?xG k_gyS|FbH ݅Lrh}N5>N"a2[N ")_-#a %yr JU7Aij<݀Lpդuf-%HT<{N=E8 5k>-Y`fVd"ObE/9lM%&b4`; ǖC}k׈nƥkO[XϻW_{u2N%f%&LA "9 |F°@a F'h<ܾs9ez`G%]Kc"ZvIƸq[\M!TgQ|f?{t:#~@.kV&Fw"[x>&]ʕOt*z1aX2~c ZK= (/8~YS~%u 4d(qAH)_q<SRZ=qDȈAM@{dgyJ3:\?=O~~ANdw d{ePL+gńAV&~}oTu~+ޙd-=;LWhdD1$Y5Yu2] Q`B ~+=DċՙQ &;!IVknE "Yx i9 DG|7_J#WIt]2oW`+o-ACf::[27/,kt|=]3OrJrdK} P~:2)w;8$733 s7җCvK5C4/k%W|yt%7O 3IGd0SC$>k1oj3=%#\26̑@v! w|T3;lB>jl"K6zdRA.+*xI=}vE9/ 1@m\`4b {s¤y)VmJ/uv9w{3عvɥk?zn' /d;P:5!)XS@Ct)Sad@yxHWщT7_'P&08pjS*l#X(Ht] A-զyws67઻Ôs%/(D)U,z8UqTGtΞCn |1QIB^l%63D;a80n^? sJCOfoȾm%ބ=)@et \x@u{z#7ǾqN3!$3ll`Mr=QM^yZޗdj9y,55!C?d· 1lyg:`&o1'Sl9XB ^7>ƞc~pt[Ґ}i,l9B~/0JMnk޻~ƂX79 LSJQ*(aqb+s~9`}_}߁@IDAT2ېބe)7вh2zOtxGT+ :coL% xlh%Mq!όD q _Hר#:>Jpb(+0ko7GPH% 蟹]N VAqTb긓cd_թU}ί< r!8ΤGHį,B-PGp8F&Y1qޕ[̪ n %s ?45m!䨁,%򍿣ZnowqM&=׷iawPO:EDfvŤʚ 9ȳCwv{6G`5lhs:/Qd(CzSz˚ cPw-#l;L70_PP +g[L˩IÀKhC2ԒiDKg>9:/_MvDѥ #9Bp%b;OT$03UZmI>o œ. Vx2"?h p:JKɿOIkj]~ޤi_|r`5gl ry.z-r {䆒WSV,V߿rE({nKpV35PT}8  ØV#s>^=@UOE9X#ի$7^JĤhFmy)]Uԍ<8Eӱ?Z| u0GEEʟҚ1D/NuaѲErD38NBI\zV.BW8WMxD|# (%9%ptwiH~<0 C6IG"RB PG9ϊ?Jp+dSY rJ;D\Lht3L:@X%aѐ >X|xf !hf'QzLzI[0鴞#v:mU;9]!b Qjrpi!dV3t\gIGPV:ɀ3T\|s' ݿOL: hQ'8'PH`>v'j%,W"I)]%35t.N6bZ佮t} }j5K:]xy%HOX2CP[Bh{7TčF~~t&#쪆ՄIa&/K`7nXoth&uݢ5i+/Kr1P毾o WaF}<_Y"x$tx(H! }Z 4FvRAIj[*^KpG#$&&e!ӮE#v<zP ?<`4|N34"ʵ7f# 5fOu}G{r8ķ ]1$L= Y^l}y:W"={Ζ!!fCi28z6dOQ.!?& g$z DGҌGu㢭B)_bC Sb;i5K< Ct{A4mCMqňdI/df6ח;&&AWWٌ cF|(|Y+_jD,b>OX)bYiM/懘 G AL|r9r[cT<! Wm\:_vCa761AU!qGowM2lޠ{+$&X"&u믿yqà JIgk҂fAu}( dAVܬ52ve;"ǡ/-)Ggtw.Gt~/jGڤӣ;ӣE/b4X q-1IL)?9͆~Ҥ2}3rKBN;q ǥЭ =\y)$#}&0)>!ޤsCJ]%(DC> |49-Ys b0aҵgVyt@գQ>56kuÕ҅)_ҟt)3߷ֲŰ$P'ƤNؚ _D 0{U=lFE|XeMVdĀr_#ϔP~&wy2_\r&v5vx{ش8$Lڭn`ҡ2@t7%犅Ƽ51Ro%.p(n97% -ɄPr%cQ cH00ngȉU6s"xKO䤨5-88U^O[y칒#>![<\̜1P#="ͼItl18X${3'+o#7nwF_zU#9# kYK+zZsu:߯. ĄI׺F 7y.k>.8Qiqwm3~s?> #”s`GT9~_N}g'Jֽi&tNEg=9_VG)?gPEP["I]@%'%f"7$tzG]e)tw by,yEܧ&!06L\ z#K_:c=hC0No4X|LX.ldc+ h:CVbyϒ^'kJmz tS1.- #ǤpX@Gt6 Dzx0Of# bI r9dg*,) D=QE6KnWTi"r(jVvbl\kW㧜t1 @Dy\ xwvUFS"dqXNf~oz:0JSq22Āurd!J% }IL-sf>w?-FC"KWvnoo&nE$EVv$m~tNt9]Gcư:tkTZ?*$d haˉ|?^Yl`:u1Ť# wlkD7&]3L:; H9]Kz%dM.zXѨ ]}:u@o9sDU?S!LQpNRwY՛Cy `'Xj6"3"/1 .=e9:ÔxS⭷|2/ŗׯ.Y (F"sHlc;&xX+b y) Vh+bƌ 3dlC2 _ K!f:ղ1w'T (Ʊ$cD䉌!E㱫=j6a  FV>Qdao*Bg8I\D7-kQN0Pet}&yOvt69tB57`&ү raC>l+ S|Ҭ#?g)GBܜue 51vF|rVi718=vs}ycEĤcm-~t #VU̠Z٘[caClM0 u\_#CeKHKIgh= z "&iCWp .Ai ,{B]r ת6Iܬqr&nجV鴍|Ŷ5yo !!c< ɚɄb,E5\Tѹn@Axm:W׻W"}!2jyƤKE@F tVLILސ>  xڴ}MNS.ⰲ_oܳ:ŵy1f;5H˰ Y[pX׈ln͛X$Y;&L:ӈ$)0閁IOSNUT"t^h`=(}cVknQMSiz |uo^VpzLQQ]"Iz  b0g=#nX 5f=hn4!Ns5^bd5Nw!~;)MKNj 4/p0 yL֠Ol=tyqx?~"WQuxxG%Lɋb7YnmQѿ15d [\]ozgy]y8$놆Ye_BRB"L}AEy+|+tXpG Ӭ>=QT{o$\Q֮SqƅuQ1ǎB ;&=!0>W?{+PcɁ^)rwȉFLcD+qvp b-x~l m/@JG_% d (kk8 Pn[~kMAEgΆgL:}_L.hAD!^gzoZbN+2ִ܀xD7/̶/HLkCo;}ӟ&~r"_5ffeȌ?M-J%&)O&v yaSFra#Mq {w'>_v{oF<ӭt6)eB8+t0SW{BG,6jx1Ĥ+>d\1?l[Mp y3LxU9j01XQ}1)=i{]ac_b=2p./1鞁rKL!T|I4{{P.ʺ^>^ ?Qx}Iazo/1I!ԦtMG_y_#_b=.>:/1>@OKLg3PoiEnvotI|/`m  ",,}uS9b5)?{%k眯 k䚼e\Mf$"`uR ZۼQ3Hri>)z3YLRcAXEx,}ն)&( W=]X'lEzmV10yX6]O[sFsOw[r4T?eI\p~L,?1&r~LsY9]>6t[Qx'.#%KHg8`˓Ԑ4pכ/'d4r~t_1,Ig t)w9,U!xYH-n&~*H_Kx'(Oy W\!IS!{*by2 kA>Q rx~M$ v,u:/T [5o=F !MZD:C*R=HXI3\%ynTg5f;dd}>i^'+#gMxDCt(\УzpH+kð/ #FL@]+xĤ!n!8"^Ƭ6[tK5>neVY*0+@qYok@\΁٫ ʉI!6)äD',FGN5Kw"𒹉I!l!X,-\BjM 2nZ `EѺ2q $>+CZ,ZD4f tlۋ2d(3-HV J!IO?rraOz 9I+:vE/n?ի IXD^8&7 %God:f+ivAfn:rƅX8GDXd^}<]vQilXleiA3tuHR%$&5uقǦiˤ qȥnP㓾Cyu^|!"Jl t:)OIA 5?/~>ƠyU"x4Váb vv^䰛n=^'l%HX&9 _O ZǜWz1dU%ȁ7B_D@W(9ڳi^!ZtкF}z{׺ 8#i|4PlQm}SZds:׿Tt5tFzA7G2I8%mHF.qo[M كC\%(2VI̘$,ɴAmQdtx1q&'=ū90UW}av|#7jH Ո#)2~Eaj?닫{_p0sS~J.{ב86.]?zT6޺;Z2@.NߦoAd|+wtAnptnI{:҇D2dzL]™'Bgd[,ogw/N'42mQ:J W+shgä=oet8!Wm'Gmg6IL^5J)("nCpBt 8}sۏoݸG9C1"6MRO@NI9ݹ4]˨9wQylҥkf͛|7ߤ[*/UbXE4oI$b0|UƓ9N9ʼ>hs+'[tYK}8G"Ly8iq2h{7;:u/n}>/=>l6^62L\J$)9%05Rֵɵnse/n% [T:':i&["~"AC\{=i`9|AG1DIDRSt{eqB~c/s{z&Bs_FVavWdz9U \m&աR$wz'äYk,]=9MW ^JT8vP{$>>ݴb]*H %E bպ8Qe%l"{lxJ2ge1c 7_6ֳ/3nX ɤuP9`jto61^nsUmpN+ՎOJWnPTD)J"0sq|H3'Br18V,/C6oI}$>>;( *TH@*=L,U ţ amwRm\D$+Wzd,;`0%ӭڀyޫ&t#OH~#@IǭDo41$Gך i;_dۻ`dJ)l豶ԕ2HDQ;/G7DI$fi6](Ly aR*'2CG]<^`-W &~n_\.h{XCdK>byn8aґeZ]zį-t@NO'Z>߽uLv%Ęt**PS.V97_9u}p@)n;[@%qӽ-TzZ \hBQjjs.X쥄-ҪH?Kڬz^¤8(y{^!2U'kյ믑5d,*H{w+S6|vSb@h;lGl&,409ybIPZwDhcß! DTʧB ]!7%W3$EkW)]]cZ[~FZn18xma>U`%e >u ,.̫RU-ogR'NuUv8qpb }qhy'\<> R:d€LLUJ`69O$\ό#T~ ɜb(I#W@@vtb*b,F{%,Ҵ=Wfİj>G{%,آ:qY<nYT"ų 8P0p&\brHfEԨي9hzJL:b0Opِ7,cQĥj7T~*{Ã)Vrd%=9̾B(;ACI9)Sd4'7lo~o}[0h $l|` TJcH`l p~x9GS' ^&Xa&eh1Z:^΁,*a5L`H c.Fyo.Q Mḳ[bI\r霟ı@ڜs,M(SPd!W\ghhH*X%[K˼)ϰ?NKWڀGzKC!%#!G v{(vwtRÐB L:βLfdyG QIFE.|PR0R?ܐ=+:-ɅݕHwLJ"JWVBfyQe{yy: Gviv8SpT&/ԎGO/g@*9WH[3Qe/D58sDzKcQƪ69&l;(-oB/W*ħE709qp@k3;.5@_}teP(R9jw|:6ʇ̒dUq<p #A+KF8\Y+SWJRfz90(/ ׳:d&Sk-и7R"Pm)'JǾ0L:\qNn:]=5LCQT6А# ǧZYU=Cs ?](a229=IǷ2Q+ɑWkN6_9DAS1oI3&k=ᥳwY~J[!ӗ[OIWYYAV fѹ^ %ž2`E9D AH* I^kK">Aqewy^TfMURCKȶ90h^&]'۩ړŻHzNGT$ky-khҢ&b} V5]XWs=&\ VD`W3Ӆ+ش^n.w3ĤS>:DV@#Uʵ NIGr'=w/hU<ǫҿDqh|+2~ AvJ_h'baƈNop6zh1oLHItF~xPv:dmGhFJY ?e2\N*8.93r\ߊA4֧GLY  >uw7gaH{ lOL:4(:3LJ:"a:uDami6#x)񛅠X2VI1}HOj%l$k3L8\z@/V0'I@C1k$A([=IG,* 57Rl9^(x5c𤌃v{ctn<}k<>=$yu5ztnk{P/y*M2$[q0Dzs8_@@}<3T1~PNw{(hHhP`r@kIäөqJ/`˾Lf`Lj"&91fUL5a]䛥d}eΌVE+j:AѴP0W9-*Q*Ze݄uhH`ҵVѕKR Ým.# ƋxAB$.ާ`$$W2/da> Gk#F͏HQ`;9 &<$ Xtc$*=XI֠ # e)2:2. fP: Vf;0:kw=yLr},ḁ^6 @moCA.K  fΏKWmȟ0t`Mhjao00tiC*s'NE i [ q핗Xq䣄mw Mc.!;"Punʧlzb`&7o::6xT`nvY,'1)Ʌ0lOBL+Z·S^ v;KoEt !ӺK1SI`3Ĥ[z~E9ζKd Le`Pq?0$du f06{u;]kh !|FaUmCa?}5e",ty|\kრMB)]!=u ҽ`'^L: 0XQB&&.ꙚYɞ ׿>ܞC7R+c ]Y^.O9suG~*CzbL#ّ 2C5IVg5쳭"?Dau9mROb#aBāIG3l׊"ppi/TcI$ npY%KHk=AJL:ÑɑN8_Ls1k%uYWAj%. :ZK<Ĥt7&$@UUcj!<hXt]Z " t/g# L*jWIGWcOzInϳ7/WxIpAG:8gIP 0jYiiݽ+t/}KLasVS>1R<Ƶ}o:W:pIмܬFg̖]֛"o7Ě>(/1Bv!tySΰ|/1鞉9r?oXxsr5($'ON=gѨ0+Kn|;__aäQBq/G~I e^w2%J%& &8*r N|ITuP"ãD1gU6`=fX3mۚOϬ01$ v~=F#okvbm ߪ#ץ~=M?K €Ըu f EV+'~eFV,OUB9E֏03"?TikeZ+>SO<߿m82'**@ǸgBPuЗt?,vna?F KnT0,@4&z4p{PaNIV˩= IBlv|B*%i㥓-8_YNyo/C/1SS!#CH:ĶU˚{2{r5r364} ayXm&GY$ Nz9յ!8jY"u͔LVJC/m.^֕F}c8T%&Fgm9`a45)yQEXX=s$hY/XM(RT3l7nitq&6Nb$k~<3;nLsy 0H:x5]8_7Sms/b;RcU6=|.R%VL킝ͬ'W [kVGq຃0[)o,*Bu!?JG>dzcґ+2@7#Mt'xU[ȯa;5*fs"qI LILݾ{8! IM'^3PXIWzه'=\ؐ%uUFZ MvWIrٕN@j虾…0 s |[a!7ܧbY54ƈn%^=Dmr+msFqU22_U]wI5^aPVFP G1p̴HUXujh%Fs3T3#9@v\L(mn)d"Cɓi BLm?`XZ Ԫ;~x@IDAT z['jmozāzOgy 7Ǖ|~O0lpEkV8g\[~`Cx8BȽt:"ݪq2Vxa$Y5GeTq%Y~$ao ;ouklu[ 2ׂcɈ" t rtV!"_.;8./>ILZwZa \% mD̯4pL%! jįF,G}4A[3N@VᗺՅpn0P!1TLh ̟a@y l)g8ezloe[ߺEщ }k!O op #fx3qx-J%팤_1l]'jiX۷܅c((LHXݜ[ҹTDT":wO%!lr i@QCx ȉ^dTsT'H=U$rK6&P>0n2Im20UEL:֙ )TLjMmym]+p2LK. ټ}7~50D6^>zUoj9@X}S1njK1"x.27*$ Pj%|H+Sbi'm0 -cO}iA/_S#"qMˏn~X%W6sr kƍdw·3Yu7XTf*1޺?hF0J(b`T&qjץ=ΐGXM&%ٝ7o|OᑑʔSJEJI#(jjj*T6C^B TIBQA4 ]+Ppoؿ߱{{ >Dxv;5;vرcΟLYS`WF';I5LJwgg\<=j`8տJ=QUV2HJ~m7%~,ۖAj$^V=*bL 7> rHn/oG9^z6=ǧl%~,@b +ҶMe5fu5w` @PfE8 äy{zZY6!x"p~l,v$4y{I;9=&DIm)tDTY%7JA=E}BQNџ73EJtZDsD)漕&zqs<6lF)◧b7^o57g! W\( $fp޾>DvO=kx8e< |y4_ MBAXS?/s/!GbgzdD)P9yчcnG\9-qQe ~&-FL: --.0CE+kL&b)M9&DKYM0 U4بXrL%bJ!-A]sѐS{Io=G& X2[;'usN@tZb,lbDJ歏IGwaq`ȄYqݽ{턑aAZTީλ`M$h%JȤE=p`Ä=JPt er'ghA!b`@U ;:Ѣ> 0"p HE Zkٮ-4=;,, ׫Giq!dEL\j)VFo4ZR47Vˈh G137Ң Th4$3HQע.Rrf01>Db zCxo6NmBuA?%&!SŎS F 5,!Og@= ^d'[?;+摅N?J|Gcw`ishDŽ!JS?XlG!V?< /n^W+=`OpJXw"ɓ`1y\ gT _?@| n}p >F3, <-%:g$/Z+=V\gH` F:y魯\}eZcϔ syUz7+̗ϓU:1κ]E0a1c,jVQtХ~|clUxCϱlW8utr=ZOp95"che τLпhu|}ᲄLqLtL'JHe Jk.=y"[G'Q i͸_\:I\9K'7LMc|[-L+_ٯ/0\Y,t!nUcs(p<wio cVA4_!D_4"N8` 6|p}9T6Xz`^s=| ^ygg($O? נĤމ.}tE8=@"kl1n Ѫq8I8"gk\f-Mz.>^Ym@*C\B208?!5Eci Y:3CH|\>YJ-^Q"K4s_s&I&&7uOu'0NEi}LMOn4p^ujF갨 rʄ rÞ@{[4WJs{bgPb$Lͭ -"a*w߻MQe()Qgʝ0Pk 9ZFG]28l Js$vR-}Fk˅3T9L)|0t^V`'>#1Qė 4Q.b,Cy-n*RgE2.>~.~+ӭ jp-j r1S ?ST1m+IX?v ɿOI&B 66#vl0k&c]bUGB<9˟h8+]"y1wXו\k;)fE6gČm9X`.PZ3xd@o%Sq)2#4Mp^A۪^}lk{;0FuBjfJMc p&ʰј_6!%"Y"OS&i4s %x(Yn%gzy\ WE"s `qm8]2+K5A?Q l-/W䋃b^c{Ncҡ4yqLcU `':ј#B~/Ô͌M*ÈkvJjlWzN!c1D``kGyމ_<[d eRS>CګT3C94`. Hh8I) RɃ`1^'7,BL~Q:t\QgDpbP` r#A V=~{eyOm_<'`ϊÁ&~RtP,&.nǕOwxTsL2yޅ8Ρ$hsӷXIX@^+ 4ut/JB|\5DAW;[w;kSUTMov$dkN<6z0KpVf6u!,lZ`YHjd6gU!$"`# I㨬Y1vx-P4+&]K\rtL'Mܖ QΔ~\sO,mrfy\ A܎*v8!"42iS$IYw2[]^?Q# ]0H4hΦL%c_(6Jf屮%iaѤ]R?cq!3Jx13jb&ik/ww HݙԗrH6&ݖ]8sZj NMX l~X )]Bƨ<L:)"xo 69JP'Uu wOA8ƛ6IKj;Z.g4C}mrOlβuTe+E6gyB!V[)%4DE0?1&-A>4ut(Sj/&b:G5]2P]tL:^޸!pRw XQ[W d@ZuvU9I$XwP} ?SNɴPD=IwT޺ۍPȓ۷ߏ Ww觎?XB"QDT8R6T ~6"RyAGbAVV  +2nwbڑT#/H^ "v9AqATːz~T|y@6G ]5Lk10T r-#1 1sb|3ҩܣ̗'6~c'c gQb}IΥQծ+ftz_:fMT8t ;0E7Kd*ԯAT&'EuBtɧ.>:!h۾.B`uE axK!s¤Ô -uz{4,Rmg $0R@Vr5)iPsZJ XU'!yClgN&P@ a', m02A]ҋ&qC<%9vhTa4yVs|`ܷX$*'%aB4 e0 @Z-bu! gAT[WG)e0s~U:hFV31:կ?#DT~F@wW7Ǔ!ðռR3aҵ{ymQ-c1/ƨT5MLCalR(ƎI%Te> edfߡ>ڡR)Fr .`e߬a <Ñ8!m2j4)icݩI'ҽZ.ī-l ~LM/%p&Q2cs $)`/""ZP[L5xNON؟Tg6ZkM V@*I"TPGb1[Kෂ^@iei3WBϙޏǽ~I&cĤPRPSA:F?=s7&x-p"b}"SAt5}"]]93w*'Lt`Q`.`AF l(/iG:>c `e&E舛-hdyKv6򬔱y(#0dxg l`B(~}ܜN1z"~qic5 Vx_ 0%sV5Er"iX;ܓtHY^ߤǾC)M9~\!3[Z3=Iǔ)&];WZ}J{qu)E=GEXI 7J,NC'(s9keAP!?Y?Wb#:ffl84`mIrt]8M1D[0)ib<‡HdQS1JǍ_@]Guo{У'_9|Bm1+'* nk!t^60ba3àP L:2K&>Ueo]t gE꾅dZRB`Xx#)ňJrAHH)*ʜAm7'3Chd]V$gt0Ω`ft{۟%&0l~`4 $BLsmshZ.O6Uu1 <2EtZ%A@Ű/TT!I 08b){bZ (\ociјtsӀrOj/ֶo&K~֦܋mYD]m b%^ɏ֘]8`et=MYt;>!YY$Q#Kd]GveT4L8fE:dPNc{&]?f2b>;L:pY`a"{@L3G/ />\ʪa2.%å̦8 alV{Tɑs@|p?h>D@̑׮bJ9C@Mu4SM+4Dؔh Jl":?cL:x0]c1f6q'Ƞm n8$kk;Ы%V @6VH{9\Xek8 9IT_bΥolIewfۮ DIǤ# hɎyʌ$=S5b5n=] ڡL) /xd Ί!BmޤU=zX|n5Yr-W3KP@:w%nrcs8 ֓I(0& -L(ݴOb"\*Hæ@U[MApr0Okmg!h)d`>Lau*:7o#9IGaqŤqe #yZA:VN;-&!(M?PTlU r2>b#bIG  hOt,Ҏ-k><((L:lu&Yo!N?)ti* 95јt`*!!>INUv*'XѴK=dDSFi\%^` YI+F _`mb LgBχ{$OwyItto /}2i78 L' L'"/tIMDhVp&&Iء&ktHmR+l쓜ۼ.0 Ze? g?%L:\;ȼ&fCi:Se1 J$|sJ#<pâo.0J.3Jx2,bm,$:M0 L:YP`ܟhLS?/'& 'D"µ,wn/$Dz%"V(LԒ= 1.#AX1$t |eWYI>US _i%9l ${˞LӃ5SCczl)0yJX \Dt2N(2"mvYU:\&"'#>'憱% _Ӻ62}2'~WOT}\?L:2}ݼӝ_5"tl2T3[!c(oP a d։T:|<)ipx(q?YÊpt B)ns"EXNGvTlu e`b[EY&yc@-/{ u"-N(%pr! 3 !{߬] 1!^Ux A'-dcX5`]=*8g"ܳbA|YkOVra|Ճ?q9ct!-~W߿s?W\:K|W&,UX}ޡ?y}ˬ+TNjQ}hu[$NC7&p -]BSc}6{<{zMv҂f9)$q$gF%]`0ş="n SܼO! p84+N&H zP F bu|h Z 4͌8FhO1re<*tf @ۻzWkܸq  W۷o9Kg} <"DY7aOۃ&ݖqevi :oH@Vɩ< )z/,^*x98t|1ψIת^I4F֒v$W( !uQ[wqeO8 "^OIEyءHYAKJ \zypAQʇ<'a}ƪ?125vA>W3D. k>EFL(7hd\5D#Zä3X?fה߲&Alh4]-*fIg]{NV~&4 ?9V[*'*}EP a,X5T\?m\/(\xܐm3Q90?0 "dqL0:Ť:acp0',R= &f>Kh T xzbDN9= q流x! |;\>3V85,QlթѯsMyQL:=@_OI ߺ&yඃ~bj!$)&xJ>yz-UX 4#-{l<]s"tY)#mǰ{||I>zND*_ҜŤ EaF12bұr5XJ?"r-j%jńclQnq YBE LQP &ݒF= We6fH?s~)10*4T!v02#ZP<@NK9ǪdQ"?~I ^_tFY.kOyq ) 49(BՆ_5YC&A(úNMYJVb҉N?Ęt(;f'괏;Ͻ9"ެjszwܩȡ "MȒY3+~؍+F 1EkFg.FN#*5ƤtLJsx>k1Y*NňX2h.6=[ "QϬ2_nr(v,0ԯ!\ʢ=' M@y(5!(_ X0:' N%=/QQpa2SU|<>OxW1) [ 3 ni*J$Wt8@CwǗ^F `9uP;]l }^G,(ʣ42_O7_޺ɸwA#CBd\7m'P<zxkgAq}Vô)E3քx̰a U>vP& }6};rLp?FT޵u-{X;!ўۀ"KV3cju1 m:2x:͹(Ul(!9ycPLLcx$ uxœH`be-姁hy2&w؆T #e%i͝O% fMNrCM2AYc C0#; ΢ JI :~V[ X:j.简&Cjum[ٶytV16+DʝVyR d#);v/D[ ͜PRSZLFXt X0*Xvm} + 36D*j$g4MFiQ>_79UNl= L:88*'B:tB &q2K@fmة'ʏ {(lA 9I^H)lL9;#xjFmٶyy֛T^+x}(0,4= eYg+`05{vV"-;Ƚi7۫ Hp(=B(.?z;ydp@@FE "W>37D^ tCb;MoRqj2@Zg$I9 tj`Mk>L:3E݀Yfp8T1̚8gjqvzIN R ݩQILYk,F*WTUxƞ7P2 dHQix7ϝAas#@0 Bצʾ4& h9OIPw"1IqC һ.& 5e3ITj3s gݘNIgf/!c5q" 1$.;Y3|āIJj|L,*mHPDZ-(F [Y KQS=wi&QOm;dQcD [‹B[#\Q\T9#TIGE>G֨֘hA*Jϣ2RNzME4'h ~Ĝ ҊJ  _Rq zP?5nh>cW:Ll7Z)&]HMV۷~ɬ(/e5(qVҞTmB7P. ;9.%}_y\S{Z5mj /UaCi`w >el}/yBn;iT_6q#d1#gI'l j m14_M,mfR)W?;R%u\41"H_y86" QgbL{Ke s:DEl4&␬0$)ѳäiAIYCf,+@\ GY*S%b<6)؎Nd63ʛJ*WU¹J{=~ С4|3#)yHO)T/ՔYE}A 'er2T9/I1H }Jg $Z-PS3K40R{ܭ)|Y%]*5"W'@?(FA|zt a6S_Z4xq__cǤ usQsކn%LXv5GHӗ %bt|M4oFJ׿fqf&ݜiY蘔tP7/U9X\S4& ǰ ZV L1d=%3㫾4,_\"h7+4SLgt-vtК)ߗ5 )D, i-9X4|LT˪HN!;\‹H^4mM}%?[~f^O ?C8Q$puTMaVex Zu]26e.bO$s(*4A6V *˛}q((}^ugwM0k!leze8^pnNeUUD3~`^^gIU a36N{Y8S?g\0ܒxqTía>r;D3Xd%ptBES3nN/XVp8+d6 L:6^'/wN9ܓ9$ /E!ju3# =iT,)fέD)YdF8!C[\AjG#$dz S6ݧ $\8 EBr j󼵰]y=C6{=`"G&]Ys $2]m&>Y9hWH{9yP8ַ?cmѣd*v`H(^Qvps:AM98>B `b(tE {_vwQdx4]F[tL4ҧ;R#;q_H gGgCظnt)3 m0Kk};zp#bmrh_ 8ȆMG*d;X L("vʛJgR綐^NY^xٸL:;@y֘t d@K*Ia4*?,E,v(]Rc>gGػK/\r=7^fAeZL'L:"=1;kp@_~_Wzp(ߓ@ =ny 't4} ):œ73G?#\T.1CClΠ7Q-z&!!IW٣9J$>KWS":V|DlݸQ<ҝχܢu:IWo]64cAm7%D4g2Qd _7@<3 {ORܖ{K+LlttRƎoLq%L*틉T<(lAM88&SAC%9tPp[ZED%ՙ n}fts%,<ͿĤ{esK50u` m 6B|)B@ Sq^'d WVz0|g26w5ޝXݡr'NZh{,}tK5O(_I&]TN>ťf΂aݧS#~$$SbzIjtHA"h% MdX`Uus mYg0Vbҽt}/Ƌa3WLYh8^VCvi}(XяTs|"SFs8>/''wyxզ4٥˻ͬ_ 1mZPt(vUe]"TICt@ igu *Ly*`Kw(4iU!8$耗LG3i٦@IDAT'?zrfΗWUnLP L9h6ND{$6:cgIt[bwzS9W퓓_um  x{ .~hCXX/W8|Y (!|̤1ǻr9{;t^ 8孬yT |chCє #Aj¤q &JXa BbAN&jabБ9 hD̕@H~ 4 x(BCPp97CŤq7wL.`9ZUAiROzVB4Mg.as,.ƼkwrW2"l{XlE!A`|QOeͳfyh?GFIZptWHޟaaD.VLRL:GbU:,įjcM>JBI.؈؆pН")Pv`9Uotvt903%p¤B.T`t\ 3ʲb̫GG#C7aAG{r2ڦc 1"`]Z,φB(c(XETH1ibcIjSJܺ(L&]atHÑ>It1f oa,gj 憢 gv老 +HÊ.W8:^Y8YX%{8mINtO*&8"odCfLJ i8 4+Ac]\ucĤRmQϚNvA]' NK95ܪ76aP[=-8TيLtRL:Mt0HT;LzXBP4ZC(dI!XyNX2J"X>003EobrgOmR" I_zQ:vD)CtOLqX&jQ2kJRgW!p<Ȁ9Y (KTi5M_1}~Wh l>$o?{@Tb7l<^aN8M֮c_XIɢO NX7;Kp12 pcE(ZN<3.Bň= tstH Y\zMp/0^ºܢ>#L:rc^`ҥ:%,Cd(F\Qҹ<^7t< Lgv\+pƴ5cx3Vp*#bjWB!)\N 6`D{FДp#lIlZZ=.1v=ĭ{;8`>eԽw.t#]{:=&C$t.;6S[(^2"e5/Z8mp`QtՇ^P|6۸}f_~xYv:840ljW1e:KcTI(.Ț/DŸ<*2f;ovwk?.{hOgXEt.N]`} ǂ#/0>DMcCF6\rB_zW3;Sv %r#-]Ý- O%2E*q*#.-h=vvyҼâ{ǘr?P՟ L4#]`DBNg};_$/zyieEkt&O[,+3xiJ S Gdp}%Z Uܗ ѹhePe"k?sRaJe.1-lӪ/wՔ@_ ҟv>nݪpF60i 4Aĩ䩍w`|bXTڒ]~I/Mz"Y'>D  )n;4k!>SǐIcFurjVc/w1K+Q?xWۣѬsG&DVjۿ}@\,KhW_)>H,c݌ׄc0{MΩvkjEbgRҡqX "`f[/8O;&f7\upUrt,hT<>ZNu©'?|NHJիW۬mܽ{ri>ou_TJ$ c&ᢄ<[p Q*oa8I\ gSbx'9y#0b}2Iw0q{PC #RI(x[&IZ7bx"({Q0~I60?lE=_?yb>9B@(+ۻW.p`"WD%-pBc0bWu<Щ-ǃ6G)_:fAԺ2 (Ųv8[ߪWG$5#qIsVԵEg5}; I'1 . I[r8-DMӬde@& *p*F$,@ b4.5bk& U}/!D(4p8+7@y-%@}!K+Ve GT ^z0$M]_7odnk%(^{N\(VwV}4AFXVI7]jhy9fp;%$N@ Ǣ4fle g.|YD`0nzh۪.wt>ŤGbTFBΌQhH 8$ FB"Ǜ2ZK•1; d?8Ȭ28eH`t ʓ$_&DFJP9cҭV; ^ͫ12{)59NN(#!Y!_o5{Tscq&MlƱy*܂~)+(]({d"=m!]!TCb\,gN@G?Ļ6e!KK诐n(C` ưpcU`)'kH!%Jq^&豄 ToQAV Ay\IN+ y\Ax)ޒqlg[v&~T/m4tj:nY}CsĤCEwsu|5@r?C¤AL UN9+L Y06SsP"zT:-18S/Ltvh &iNIGk GfX"AYuH`=)`D*IZP n$YSQH8`Sբ\&}Lx7dYw)ra:zօ&&Y's¤L.ء%ҵ٭[1 ./H׏<<V~":8Ht%-oY+UBs77y=WPoBܲOԔɩ-3R042T=bߍVg-JVۀ. ? K[ ճ+ 7.ܞwg=:@i,HIT$NyRrrpx-X>Z#-_~Ŵ>'e+uVY$0(4>6UF.F{FtQ!@2X1ݻx];<W~}g0S^r X"֡tTZ͋I'FayLxh\8k|1&LHk+j>a*xT]˜/ yR38c92תvV'@`0dܞ { C6oUe C,Ae,eh |:3'Hu3ooݳ0A-@$Wֈʊ3#.BJfn7b $!a<.C4UiF (x#qD-N`is&GA`ihc@4TӦ]oaŢ5.ZFTEp ywv CXh'!;zAfGbL2 $5- 9L0̖Dt,/FI30˵^lѣ\mG؎3l]Dp pǨzUb-}'LJV)顤 Du|7} fa:JɈkςq%DsIcEISZԘr0ga>ԆxSFD 8 5Yrg"$XV+ZBc(`B/~80 :Z{-ɟ csVx [C^DdWczļ~|p4fij~$yreٛi  :g<@*XaP=qgmVH$bIP0 .ZWMGe^/}Ib_@2O-׵]VΨM{d4jwv.3e#|`W}00|FZU1:Ib# ^Ap#C GD떍@% 1ߎE!x,D5!mrf$"ʩ =T, 9Кӷ"/q=Hl I1PPn9a$j`Q|SV-Xe>='>gl`i#4;FkMY}cdo_5>J|mt_~m Ls"UM%tqIgQw*T,!UZCW2lScҙ?/`uNéPE.Yh{s |yH5mmV:k-t`P'%Hj#jRJ&RD Kpsaá</51lYޘ Q%ALX}LGY~]̶ɐ~HTjޮJ:3J + ggX_^LKd+oem9am2%@3>#tPnE2QPI*lC*azA~TSo4c/W.:ɝ=(ۧM@B>OIf ,eҜ/p6c1n9EԵmeQqQG~`&]&_i (i[qR9%\UGC6 l3Y 7v015zllܓJ6x(& bG D)dmJJ,c=i0Zu|ll~;},?Fl^Cpq}9v@ Y!F_ű;F @N#iER^AeL:FjK6gҗBa/0LbNdQFۑ"O!v+v-𞽻4- t2`-poW//gEb"5&&zDKyQ~A`He*C# dTD5! ;%`8Ec%p8saZ]F_B֑D=%g'A?<0ںd\m5߃X?ͺkĘuilQ0Ͼ罊PiV7;^;O 80J e9=*9d#ix@j::a smFr(n9S=)nd!j嘪|۳?~*COI>X9ٰO* t}HQċE6eOpmn$K4\S$LaZzsdyIR&3aJ!0BWq6I)kZF$l@{tLaim֝~;hk[ \im|`zi>L#E5{#KHq~6Me٧Gҹ[ɡ*T؜Q/ dѝEinHLN?ZeB  tU \:1Ͷj[ mcdZ_!\~\Q+99lGdtS<Ժ&XX'؉_AlQѪĖvم 8߼p u |:bDc{u5w}h7Lx>biS<6qB{'ybE0 O `r0V#jGVtyܤ.9XTrqKW]tՉ#9yh ]ЬiY/ &b m޴A9K]5z[SgTEƛHKvIԸ_ppfh[ m L]sT̶2 =ھ΋I+=MBYZYT-,~ AYp!_叙JMȴħĉyv])C'|́QJ3"\&Y; IʴW޿7Gx򽿞㐟eڻ;>Y1ho8(FВK(N>x7'bKBAdi-'YSL>t Y'+:DxOXl5ni6>B3)7ap( O,:AD $0<aYcLH9l)1CL{70n ۴ C5Z1s]ா&sSVRS5PDR$ʲڱ-;<#-3"<1;ηvOX=N61Z[[WT<éFRuܣ;08wgX}pR-?C|M//`yBch0͈yI]t-S]1yc>a&3yx)N]7",1 G 2_*P+GMGs8juX4%GkQ?IFvnkQ[~͍$< Io־I@f~rJr# 6Շ&vK$_ۇ` =Qc,5\Pљh`L *,.늘?&~ iзڙ\tZ;RLg~ 1 ̫ ØtpJbY`rj{F41:M_ *;KHLӁK\[(^Dž&pEf3( o hv H%&^3#LE2&iww.No2ͻ9_҆dFIr8%zb`p̒E(;,:k*݌}RD @]a^? Bm8n&':N_h%nULu}ju a ҳcMGZcq`1HJ[4Vcibi$$lXja0=ljI)7 T~&]vp %.oԠ}K$/p# "B0`pԃ3qI⣌Ba7Pߕ?w>I悸:3)&rsˡ(z|0{q=Y7fulTZ9gXKw~AHD!bnB8߾sRo8N?yO!qDH~j1E;F9* gpVdʀ1q{}&+zW/[lyȲc~ZoF1[&xuU&u`(tk\*c. aL:S 1)tKTd;YIoV޸љ*-w32q1a=X4+{9uv #knL"!q8hgfc޼r{jHܔoo yn(kt\tykptπHBV벴p@<4X^;EJ\]ÓoSJB l g&cňx% ˯cBpKG|^zzLwF +˧!k[;+k_>^W*7S(#?G~c^4*L|ˣ(s{IɪxN)Ja$)S>k}\}<8JlGԘ-_L&Ss/m`%&U)(sOҧɡA LUu? Wx"%8 Z dCtPAʾ_ZʨM\`* XLqSqг2qA'|8w̌MAhĨQ3UnTv1ηwY@s|$$K@Ȇ\ӣۧ{>?afGu>x}hR{a 6<4{si/0QU]`=#WY٧cM7&]AƧKotZDVRQ  cߏ3nyZ7tߓt L:eb `4LLIL&E$I1u2.4MB\5)' \gY^L RܥEÈ1&CXh E z.t&cC@l^1 8id~#d,7{X˒LLŢDɶ` A `D Q IOD#i"u  a Xm")*VU>Oߊ=7f2Xd~ĎXbŊ+֏iz?cY¦sbWUxO,2wo2q psS,NAO<=5y5[sGb("׮]"@G}8ճ1[QߪK.AnWwv;ZİÓ f ,u"[ղɜuכxY6=b R͙%Iħ7ջ=:6-vv7@OhG>_IL1;0:Q#~ ³<d,#8< jmEtIv,lzL # pmZ6_Ah.T lZS)a[I .[hxpn +Ǯj)g8er_4Xfඕo \nI<.f?vw}bvP4"͂ fp~Fy=U*G1>Н3VL=u,j;ut2oN/ 愶sbOBSD@h6].6jIG[Xf,iT8h܄fbנy7a o,%H>K: !Bn3:@/'oʱe.n-v@B*"q"qW]Vn/),`VBq7D'-`3+@D!LYuE|t;BA]!fQ?;?8د6h5 TzVn8㣣:fR[|l:'YȬjLN8u.H7@$iXϝ>DCW(QTk ߲hxN3Q/&;?&Դ=%Iw6!l`ZPxv5q|kjJDS* \˺?: ǨkiZvn$X",;a}#1HAm}jKA%9qHR>R|F I@ĭZ#1X[En"}:zO'ElF_G*]]7o:v "xylSn[/|@&ȐsId |/8TNAɻxR'D/@K*7d#} Ӂ+֏>V$["dfyci4I>xp4ldz] @'lB8J A NB6;ԅf6&]:p}KCPhn|;yIx~eO*5ťcXSJ1& HX8'oAM.td]>Sh+n:1$13+6 e5Pi6lLWs}Gl!Gt!Akn0X1 EG¨JÃY $~~p"({F3#;Hd;jȗsv8D~T#<{ʜ|,O)w.Uۻ6(^0&5dv1kCJ_eޚO^ X1("1P{6 d%Y-ϦM RLctTٷ%t'2 UT_ޘ~MzKczpio~gN+w3 .<7FڔnQUﲩ˪g:.gIHeS1 AYVe '䫜=g"kXCY5Nѻh uY+2'-l,X=o_tPw5yalaR3UM2bb-eјT:MjW姀Q>~<%Q*ۜZ-Z mݳŕzF/I 8 XWe]: F`ًǤ^i8':WONZu~xAjk͕ AВds Yb[;CV\jxž;.fQ.u0CjVbEM_ VplBQExfY+atwj[В"jGa=<'>ozdfB-9t0XKbX SL:z=jbdl};P[޸ ϯtN, 9˽Dx-d"K,\Câe.MQ*Y6Xƃꕠ#Js[qA"ɻT*&[('h9 hU;S^ &H&ʰAU,[%Γ֋gg4-)u߮C&]ZHsxtX˴uaz?U13gUAU%)J30aj^^=sE c rJZtxd(Z?L?Wvgb+v{zɲ"&f`LYCq8uDhv'ͰԐ`ب1[K*Tia*-2Nμ ߱:ddu -gˎeV&DB+% `~rcnU]% ϱ gKN3? !`HE)`3Q$$ıD5!6  ,t1hRs\rΈxF4 4zO,vy/98۶!| ك]k p E}: U$C^x)&  Bo}K8aٔFt'G)fT SF_,_M騙ljKn/6Eh-8{-e'[^LGLU6=&8I0*sƤKS@EZ I6Ԓު-U7Hc\= aɝܴlL9Tx=U'DH4دԍ_* p'Mt -ʌuLkgbZԖðNZ}#HMʅF&%>tDZT6&!#^ A+f&`9IT׳}klO`ZTΑw6^?IgZ1D_[w:s~ b|DSf+#U1SM , B:27ֵ>$5!ä+dUsihK Xuե-Or1/C|KħFCMɝV{ , a+Hfʌ(aqL.=fɿۂ !&tuZe+zZ΃ӯ4B.CMTCbxu"y0}4㘈%_[37_=992<}~j%q oܼ1`lAz:`J)H|y[/^Ϝzգ~ ݵ[ ז{{ EgB(T. s& <⽴|@IDATGnkY*2@Ŝ`Q@B_ꥌF),Gy`t6.. i.7cAG%ty>}\^a ay`R98`t ql<> x&a*ei ᡠJ;u^_Gca Ap:<"y7X͉!̱77W:mj^Trg%%?\G_]`1n{xozyͷzl|xl< um$ZDh%t ,˩z(M$TzObC/ޏ֒yxDE̚j(/95x$(X(#S1M`P,]n$jqNn&.Ξ.ߖnI7KOؙ įhVN -p1)0逕?BF*!hs%Eٮ3ʡ A闚SK"+ vaNwv:Q2y gE%|(jv=[5Լ0XctDNVCφ.1`w2Csnhِd^[#L/pqQi݊ş ꈭ$oqODa0( MO*D6>dG C1b&yHC~jL:(dk'Ӝ 82aJ`&ecH5)8:N'D[q0V `w4m)IE8V0Kyu{9q燭vr2( ]aA`}s5AOخiP;Q'=ڞĤ3:C~JL::x(:`Zjh5D+tOWI%-ěĊ0xq_Y佲pQ^) L:*V!h*d 6+/%]=lPȄcH {]Y.x4iT.%MFoތ^~5=Y i> vphVRԙcD!3@x`a!/_~5Rs ݮƣ2'/#B(%J3$`^z/}eZ1-qܱ2I0ޞ4|xT4Ig%io fR! 9BE ,$n94If`%I.A3eW) z &CzEI]3NpUvbnʳ^MD"گUY>eIId 9/Ӊԭa.mVG9?$=&]I ׫nΦ".j/ɮrQpG%lQfV|*RE xV⺳D%\CŃQoXTAD쟥ôχ 匉 3w4:IG$ڂɪڤݨDL:>TQ0t5^y+\˂i/)x0_Oȯ }Z[AniQ%q%Ǒ@A@^WC~B̈`ƇAr8հW)/)tإ+W!Yt=VmUTIdRepNb=hN Ꙓz S`/z1$-{, 6;=-Ĥv(/5>=`5fE-dyhrw<ςq2(mBZJ }HH=m*K̇ ,..ݜNȡ2IG7\ȹ.`pk/YV z5#IrIgg%Z,Zbg<]lKj;_Cd@7Zn:L 8vM[QϞ(Ɂm]^t<;_?DΏ{}F_SVQIWe4m%h?ӿ0uIʞn ܅D[ǟp ŤS3 S#khʇcl~~Lկ8:NYy;9ĕ5H"ujz 2My Is3<8S4.Exva.DshTe;8pͻꢋC'<*w22+=Iw;o3=:: {v(Gh+$ *M%aj͍%29ltwhvqBNvv.ﳼl?ꢺ1gݝ+[^Ƀq'_[@JMB,V.¤c KܤjNh-,\io@%֑$3+I!'IDNy( &kB|:当0Pb:;<6Fe.AusȅٹCeeekַ^ѿH/P}YDžܯva.t2OlP78A1$TVΉ˳%&!6AϨQ-J;.֐1^U~zcY~peI;z=b<Lc5,e#l :deM_GHQr|_ׂaXcz<zIZCV,Bȇ5`+8#`U֘Cdʥ* LS ,u;եUg@R$ ƤCݜ~L:+Ɉ ]L_erw6@ntwb&a!0-A:T00bJH>-hP ұ30>]:M|;6c}VG":0w^YT ;a2Y.'LgVY$#%va߾ jSqKbՙU ʵai$":rI4®`!\22Ds y%)fDd6J@%c'J"{Zt'L gclYu^ u+a%̠Mx-Y=quHqL=a]޼8-Wߡ(ںT!2L"8ȱU\9n_x{ad%ɠGi`6Rs;v9;0zZ,xR)`aL99 ֈ d23giNMѴCtT5aVmu@PmKbPbh{) a]\ w3BDꖄ'";; 0r`0n9c4 \JZ1ѵ9Ǥc[6tӣs9 =Z.t 14cEWsXp6'sa2D2{cLb^ N j,]Y_WWwvR8`:Af1N8S[||oJT mC4' Q]}`6)LY], SuNU s4ۃ0z3ہ|V/`20tPE&"Q $9ʪ3͸ (ӽ&6Sm tԗz 2>HKX[C5rnǃg&9L:?Y'OgM6E FMa0&lZktb8Pp#}= ,D$7Nm4htUULkpfz$'21_P!TPo F 6%%r: 'A*M*݄IUXQv&]} DLtN(&豴:N1iA.j@։mCNyhű7rUTG N%\~fn:W?՞8 8vrJØaąs븘YJ&'}t$ts܆ץksݳ*׺dσ  M{z 19M6PL.ٙ{tO͡f̍BL?yAVU5&Ntv8B/>@z%P3F,ScҁaR%4t6fBؗtp @!١Q銴ZPʘt‰yO[^}5\Vv|幗txH  *T4ة~qWʣtN)w\?kLM..KLi.tω$c͗tY~xG/1鞅?czv|.23?0[XTKL)Ĥ{"y>хP^b}"Z}M/1>Fjp$M%&'P%&Q)ĤsdVyIW"Q)ؼ^bt{j{+U_~ADv5J6⊐^AHeRqNDA.03DadeWNV_{ONmB4g*!7%1|6՛'s3A5LaU_}U;*}&I9FGb.pzHJ lF5tz:j8;&*T;5H+|\?*fkݛPJbtz5D vB-Mc8y87Uڎbno8fOxqp0Q^T\"=ѕOb5h0e޺Oq7s.ֳnlg҇]~]p0 N,IL| )%+X\fQgAqǦ7㙢;~lLJ"BUJ=dοS?:*>ǘtQrĬBP2}.&'O_L"E$l]_M$$NB~vAfM&$FΒ~נ{d8 $vm|;ԄduXt^0$=v#+x=o~쉾Xlx*Ͷ^"x<}ftj8:ٽz8ѓPL'ktRdew6qf=P1U?q3EwrUrh^Rcgge?SL:H6Md9& d燼bp{ ͦЅ;%!-djg5Yjdzy B>^Ǚ '";`ek5'YXa]QY`tĀ+t0J-S6hvE }buQDg3c4:!/?ޒ,nR YV :k;wnˡW%l-w~g%ؐȿTT]vPdދ^ £4E5q݂PK!0 a úr`o Ǥs(&Rd/B#fppY2&21C{&n &$ڐMJ zG%pS\KSN i[l\9 d8nzd9?&YWg1K$3Yy .Ʌܪ%^REZ;wI E>q&K1^*kuSkz[ݻ \ټy&i0ҨUX[ӟJ:,Q(\]]!28 ۤӇ -+1 ASHxˠ,{B8tg ^ܐ& FlMLWt׮^Jż\ '# xܝ qt&~xXoDW<L:"6JIkؐ5-AkD:C~Ȝb,!s3DRt ы-Wr!G5R#+^)UYIR%IW㽻br~PLUY7:7ap5lt@M)&M(d4 yr: LHipl%%JI+8ѱ$]~\OwqGq=o*O'Bp`y+:ѻlo2,:7=|pG0dl֫;I'\)Duƺb1%_bҡ7Io=(N(%N/ ʼnhq'8ͻ rML(6fɪ&] 7#0t74IB)@\|J1]#τmXkY6]="ZGu8ݐ} gX"њ2  HnIRpd:Q||tUՁ@ P{?8u&7teQ9׬T[΂JN+2,gSΔҰ<ӒxQ| Ayqqx$m f*VT1Ѱ$v:0V OG kSKĩh GX?&B1L)Ed ͗khx&t0bYD4He~͎yK2-c`} @1g{+5Y2?m.}kܹ9.9ԧKJ5qM:t ldsl0:: ƤsK0g2f\dtv&™ R1\Z{sz!"{0+/rv3UZPDBp+2e֝3;:iN&8{V~7Bs@RksŤ#?:#!z1Yx|{O+C'+,a6W)ZRUpM]6iD!7ٙ U.6gA\$!^F`ऑ9/%`mĭ'UG7- ;"95}[J8oT=^cy3҈>lPqi=fCP1)X9fF=16S$*8Fkp.h-z.f8O nTe*[LׂL/jANXb'tyu^cZ¤B)`CVEF5_ufxZ6^Z~e} -^eC#guhT8L7.JBdjMxlő\Fuf\|;!%CbYKl'1LwQHF꛽4y2Z΄ H_kBjb9o1VX00d? E3HJ.:NS_@$VV gӸlC%z~ VUX0$2=­ِn"4`JČÂwD"<=x'Q1K1Y)Bbj.f?_LM6m<٘Lbe0%DžWIv+cB1( Fp ىaJbD0$+Ҙ@[<جͭXf{k&|0d|] |f2|2{hI9%&mP\Dx2~. 'D3f́13.O|_;]n3ak%#x'/Ramzk 1:s9K"hw6?8jȜ|AGSr;{A~G D0tlEnC?m"9彡!$q^[l+=1قUHw8 61g̋m4UߙOI@(|d\'E~iA"Gn҂'P:ʓ2w)ddLF%rjՏjT?} t/#LS6f~%J&{!mTaP&mh @a 4) "KD1LM/"B:#BD⠥I\hjkLo3-;jy23fvRrǖVɜ AphBdw[ly`v7J)D^/e"6 u0i=P62;@C?8]nYJFYHI GC6}RwV0hA_n2N=I=Rƚ^.0l6/O4v`93L "/8@i0_g/ݤimR279?B[(p(Zr9ȉW[ o{QJ}4FB̝mߞn*aAo+0'(y(#2`&\MDm9")y t`qcW7=&NI0%cĿZf ~[C&QYV=fQk 2rwl>N,Bh_6%&]x0T#PWub!NOfIZYN L2ˆV=K\'lpӚ6}$t_$- pj:uO`)0%n'gnoo;Nǀ4+ubko#s¤3!3anktJȆK[Jt zAXٔ!=# 02zZa>cl z idU@\a4’$f02!a$} qed[RӶ;h$z>4I ihЮ͛ +bd05'P-D~Qocjŕ:놀W[}Udj nˎN3%T<=2HZ 57m *)Wf[.c? f43@`۝znseɛ$&%&V:TNWNtɉ3b2DkgA("F81z1Q Xw0=t,œyďaX됷@Lo^@`v\)tfȆH4RPgƤ#2 xyA&=!-e6M(be"Kg-p " Tsl=JXܩK(m;@*\ء}'{!|6+tʨÝ- -. X ~iZ^Cd9jXWls𰾺vsn;̌*5\K^Z609>,sآD`ē2%R,TqLc-w) -(n{gH=* "VE}.IQ;ud @ԅqYIBfR9,A+BXJ'a\?qwWfiv>Y]&8XAY6`)!#Y>]]k,Cš.S2`2o@zD'rƒ(_~D 8(# 7u`z62p܃8By3Gl}c1łS4l:09a9N鮉9:1͏pjHKmRL:LhtKu r#uaI=ΈJǷR5N8wcqb6YΌzs6騡"8%|, .YTq*s]L &K-1!1$L-BrM*[nnB,&`:0ѯ5i qw¤q> Munv0D6R0R5|qZ|WHŖ>5wXqg`k21p|D ߣuۻx4O:1wK K# Gfaޘ"ZE,%t'ŵQ[ܙN#( s,H24Hmyg*QFX} 𢐝#p'vB݄IgXwׯ)/ٲ0@q<<;2I8_-!&$f LL.xs?ADX˝/j XB%KӅPZKՂ#;HAFêO}%cûh.Aqߤ78xfw$lsI\(|JL^3cZʈ)PpVE8&EL죀 qy'n0DjI͡R6#;%.¨ ıY:@NdZ.m&:2rJ`ATOOO&l?3|5Ў5m O#g0-vM^`yF - !Y`6b@cRݴY,IЉ;,e4jⴺn6tIޘ >tӻ3fޘ nl3- di ]Tf28FF`YF(/yKHjn 8ͦ U ],GCOnS#C1lˁIݒk!i{bUh.Fdm j32 f=6%Y$(%mKd8܉Vj07H%Pj*i zqEs/&] tǨL. P`ZvDy&ݝ; .Yjvޜ؁SdZV\XEv9ˑ,` p*@',"hPzZD`"P6Q NX=(&V)&Ѷ)AJǻ`y83E?,Dbל pȀz tPѵ0"3 !iڏ REG?cq|nb@혭vSUhiڲ V%/{1&\j+:jvb ѝ= #tF_x:_F流V&S̈ƷOh<Ϛ3G0ƣ6 -3b^G[0+LyZCi슕 dӡ"N< vv(8, cX* XטnCF /KIg+t3jQ;LT|"h@QJ {5;LJH2򡷦gOuMZ,h#]?KL: ThbP::m%xJ9w6,=1c]ɘV~=s~ѴyrrsCu@XFTjKJsVg+eB$b8"?(/1ȸh#^^bҝG}IwFrD/1 =K%&c$y/1鞍~iӕQsBg e?_4r_b= 6ĤېSSAuЗtgG/1>-sn r nCy+/1鶖<-Wڬy*UFaN:DXs#1{p))Ջezē2 E i wC=9Qc51h~LSN'v H;sFSgΌh'fbEvfͼdŶP&˞u b#$Yz%\o]t4W^ &bxڼ|yQ*yh^b=qvƍZ=j ~jZ.9cLzE+KNPcj8-mytLQYpTי.*g\GV\YpPWY;oa\ScipŧzR6v]p/E ֭ 9ۻ€&:[۪ xTmL:s)vR ;4=Z{0{J7V$3G115m3wߝs3<)my-ǸdnͿxPtE&i EįTr1Capo܉B5~qrbV2-6$MNK87s_i$P/HbAXhY5fCpB2]݁,Jꯪ3El^ '}r"4=xVSsSԷћ>}zP֭ ލYT]^s o0£CڍoB # n폄>[frq/LG2gz^wQR݉^#8PWb%,:CxȍNsNH[ BΉ"5Dl+rع p#׿~7t ַ].wqmR7>dْLF!u~~2?dwܢs<ƗKJ7,pW_w Дq4>j@G6'l4,.DP ©pk4+5O$C%GߞN{oVkZ5NŹz4^~'ѼQ98!mWWuHۀk=qN{h<r؈V5TI8"|ь1te& I_yipIvi d)~AL|&njT_a d*!MlWk"کxkxbJ.^TW{0si;>.CsaH+8a7E $Ĥ#Ep22ףI7^;trptg3վ(Q>G@@}p{MPp5#BPZZdg.b#|"5q/[ 铲X?sYXvp ͱ>Qv j5cY=9|0!>{AVi;}W^sarEP[ZG?iN+ߪ&APF@SJv j($rH;_$8IŬ hYGdZˍIU>na n+WfUg==謰5p Ťo]A:j sG;;.1N&0*}O'DU~@e8LDShDP aP9pŎh5ޣtaY ?ss~B<Ѥutqrm-gIGqll:45L"^G~x`1@M7RM0Epb^+qWdMa.q"~[4XCz4;pmajأIIKäxiRV)/rYZ&B{Ava73VίcICxFk1?v[.) \U9@ t:_q y#6U4*'&&QkA*x 1l-b[@J$/ߟŤctDJL^vv|GU ۅEyw K߉W%~ne(՘/tތ"Q9bq@IDATB_:YG6 !Ĥ;Ol:'c\1WA('q'8ͻ̐{vv2PHovfټAhaP ᭿8L:75EYgY{w[f?YIwϵļO_(21-('St)Nlv[ '48Q@ծj@0 dOg}֪/ofȉ! L"7ueBom063|x|h2裛kJ͆rC\%LK&>AC:#+qVkU#r -LHJLtHʧq87X&lֶ IYT83NcBo?hz>KL: E12.KWK&a(1o!W27.q,'b/hjlX17l./Y-=As&B5eKzlsb  HtL8JYn*􂊦[TZ.d΅.Mn{<]`գa/}FLsM|:t~:qOu ۢM\u ?ch=̭QQІ|<`@/OYG9G>KNUqhqCBC({$hl.=)Ba`m[m,?j~򫄟>wJ>|;j7t)# 'vZ_:dM9D&v?|h{:A8M̰}#lj8d! }EpwpKg(YTT0dIGmZ=oD*S4 T2F4W )NəWCOĤ+[ҍk/i]4& ܶc{tY𮋕Be!t<L$8SPnıd\N1^7\%l-Pn[mmZ;F\< B8OP->H(fgo{[^6]W,;eEpyŸ&/T LIam!Ť5I1уdѳ EF>1&xCႚ%/"]dFz/C!>vF9ϰeCL * c&'ք*X,m[@`2K&]p;irpo]I)⾠.O&z=b@S և #qGٚ]9W.a 34h!,E\j2*f崳vi\c{'T}* ީL%9^y*'+oL{_MIF{ +{%RoCd 5j@H \X%]PfyY04kB)6`Б<bֲ@}pE$C@*\H(c M EUDk)9;{sTUYiN&G}jՀQVIT,̘tưW ,KWq?{l1.Hs2t-MNÕȽ:¥O<`?W.) GlЖw0CbJ6Po'{ 4tN0m9l+8V~ 3Sc4$39_p3͘Mn/ށڏ~#_ݯ,p\h tO'`mT} XHd+۬bTl1l9[zؽ00OF_,%hb@ ;be`?|tDhERQ񩭉c?DKqA˺R8 1*\- ="x:N|ymle5NpsǤ Q1L#3]ISW9*B`1w@^5VWSK#ӊOgۣ=x\i:TbFsxYjYfL: AXSEWKp0=ԁm\-5볽:F*g*+'G&TILBDn(ǭNKzeo 4"Gj8N";ѴhbMޝ96[L`0164't1*05+އ @II.SB[Y٤lيMJe#ĩt 61=vnT :?ųEGM/>$˳q)*Nn^OʲvVGTBψIWaާ?8~nO˛0%>} kwő'Ȟ|e1P6=U߻ڢ~;rZ5vr0AWtY𕑇E"ܞ2ID"a0pIx1n޼oܺۅm#X.'#N(&E:dr P_PHL:F( oLD`˻!&-ҫ<(z ȏ; nn q?b;(FY0ȩXd+1<@R1@ (Pq^BLKi{xs#HZVLOH4eS P3[`FDe`d\ )847z͋Lkg>ACDXl%&HxFL:|xV" {H]{Hm? ~tpEVx:pf%[ΰ=ezښ dXLc4S7[ۍI6#"j=0?b-"pqiA@MAMg?~=;F oj;V:˦v ynt ż09/54| "wp!M.<x+J,2 5&^$(C@`DFZtS!\ӉIH3{ N%鳆^{fL:Iz "Oe>)>Tp TEwrҦmrAKf%A_UU\HǾ,3[SR  5qqX6QKk ,CRcm1ȫg~X6"t/9HBsǤI&񃲭I(e.FB2JQ~H]ƶUo@,"[: J/]-|\w0L܃Q!vX6Tqr^$ygt9CȌ9f辬7(c^s/7x^t>7&Mc;{OQ\Zr|h`=>iY<؇|Y[ıÓ&!*I`؏p>U%\Ky:ϢUjU1vS ȥÌ! &5aG͕@P54iK`F׍,kf%M{jCrFD)B4-8SE~}ԋQ#\ftk83GG¡ qׇNm"B)?7L:tpόuMsi$[}#ܤZ{bF"$ȩv<ōA~$~漕!T,N!s ڼ2smkoW;8`&]m z#k!)3j~ṼTQ;ݯ-܁k5 nYVp7X`B}V^ +0 %6,yP˘bRc$_,d-Mv aEKhu te *S?54X1lf :aXoFh<+,m,O$t:31kgF=:g _3MDS*g T F\Fp "I`*',#t_QL:sb銋CӞ3`x)b#`@Io(Pzو^1X+L">rqM hGJYV}o0h凇ףy*nO͡1CvL5XdtZXcB*I.0{Ƞ?gMb-I3;cFfDRVI( PR{F  (j/r B PAkrUPDo(L%3̌Mw;shdddddR ~}07;vرc_s:Y;EmLɤ]aBZr" yс{)6Y( 8iJ L x)&]XH} `xV~4aO?fO]{3;Y|XL:̩AXP 1z駐?rQSbt|9&'Ρg80J9&1sL'"۹cyIw&OC9&ݓ[1ΒC;bCGgCC@b竛#}O4,ETt˗P01?@_'-(r|δ"}4TYSc0LO9њpxb3rŬWn3K @e<զd$0s86^~KٿNMÛ/izV/,[WLe3?%y|B$,`WBE=R 31IƼoqƂ[4͍ARM0I* TFX|WG9 ;;;Wx 2#<!Wg('_E.7qMhKIWc1+nwo|E5|@XR]7 gpӾ.H 2v׊'_;_|pm [UYFߦ@1k`&sYg4EK6FҽFMܻׯ׍28IGB|q(>Ksd'@%<5^H͇cX4 iNpYl(I4WSQCgq!]L"E b"XY 1`JSEKu&E}{`3M^/Mh%8b; ayn=/~?$s=AIX!qGXz 6 ea~]It<fK8lwS h gkP_IWk՗FnI?~hOBPadêO|A>1]Q*A;˚82\MONƸ.JיJ!1o1 ԁkE?gp8F؋@?H%`0˖3Swu}tyV\rKgG?/}WWAS7xFPm=pwpϘ[S8m 8EMa^8~2jfj4 `xG#B̶V _v J^%8 [-GO9'W#'V'AO|loW:NoNL#pl0.MhY9>>c8NH{-3\h 2% &m-_[oXBoczNדFZ`ر+Y5t}t^˟:y"TKb8\gWU~yLe]t*,cdÎEPdUxZDx@\i8v?[rl apzJ¤#NN`WGYXH|1.zu`ܐVHdU9ަ*t6XlMW#rC bB/dc9!N!BdgqcD | fen\5(f kf,/q̛ѲIQ\(Yb(L[0GopWNN۷>p|^ݺ-0*SVA-IҥXM Q<6h PB `={u]$x5T13r|'QU"ÀEBXbRlbuMLNGoъF[Y J1[]zj7tU7b0Qg0 .}_81`*[YbjV @IzthKF3|5h0j+|hGՅ2;/"ZY+c,YkƒSб Ѝbכ5j^oO&]".+ouwmG RF !y"7TG"Te\p`P\zQT`" / 1?o|/0Z :atTJQX1Xt Shh@>X>uR78~hA$g"==LR;@nkT w!80'z6'|!kB#Y/5tGrw$[c5 tLFߚ)R1e*=P$ 2]ш>HsWĢJJ}KW+ռO5AnjnX8"G)l+ MsۜKrͯxm t$i3eDgnk<=Ƭ CP=h.2V8+Y *]ZUo ;#rƜ%{ y;ӁHr2&dЊ. L f*-U8nYNu#IL9ˡe4,jR 3F# "'n0qIVh9XR Zqs iwZ`9~(L:4D;'T{VR7swXj#Pd~$?_nU5m֥R" ڠΔhcSo`+H>$m"m5+X=N_@/cZı"dgIG @9!Ԣe-o"NLt) kD, edzSzE|l~kgd12sb7V Y2R(!K&͝tNCTw_5u\0hO%&, e,wF'p'&9120 l:9f&cGĨ+$[F&%4̇Qkv} #˳Uhr?l?x0KgIg#4*XPJMJQD*Pdy~Ѧ 1TE|L#$a/ιĔRXO|EDJ-X} aU40j X݊M}cǤ#+j:5Or[j^q~G(PA4 XMĦ7I">Rd0ń'XC &ˍpb4lA*thuf1~DYG"70'L: n;bc{dg !9[\ shH/9FM !t!l393ʌLSpO65"V _k%R'9E#A3ыg3" /RZ!$* G0f mI|`WOO$7hjj"oaTSfR)1#YfgpxdZJ !oFGTτXD֔tN7܉ê^ku`x^vx2jkmGlL{ωA66)ba(1y1 *i>BIM^cd( 9ALs (نcJB` ٱ*Y KSJ*r/NJM㕣aZeq¤өI0:hhf~Q5Lҍ9ɯ2?1PF5ۻ O*ol:;m2e҈d@Q'X6AUd` Ϯ*ǼG,ɬG.?0 ̃. #ǧI'SH-,e=+iXzWI-Y9C6 ˍsi¿"_FIsh7L9x'Q{=Nϭ["\@Pg惝a\S=疌Tu}ö VhnjC"T]|Y)q4Q>}yRGT+[t# i7;̴͉OqecP0M}GQ̘FOj6f-`m/ C3V.½͋vÇQAMHH "GS_ a4$ nstu[&5N废nAG0d(SǾHA$"T54G|N% S&[IXVL Քçet鑿ڋE`4厒@وl:>T0b|ޣݾ?x ltr i;C(DH8Rnvpad2z܉GaN9(|v_ziޮ=t {ӷgnó>- L:Kī3J2$cdptA~!4+KY"-̫bZj9 LiƼE̤/}v!؇ R駩j DZ6u,q{heY޷!irQؔy8K`@ *.r hD/<%/> L:h&:tk5$ ̭/,}[!!_XҒ֍F_k!T9NC=jE~2fP| +DЏIJ:thr ԪHUK^仧%4ARÒ ףx1<55{ [6풀m4Zp:_6&OUkeK]?BdFHa09YOZΒ̇٬MG7➒c7jbL: Th$ȭ&=Ĕ{g3ޝQrA^[pF⥇HLBus& ox|Dp>5P~ #QX b%l: |R_&"O1ʴz|{p}~vYE5;D I4Eg Dt8cUC㬁xRA ' 'dCPv/5\9::ylvNɄ֐Dže 1:7.}7U eM [ x9$R ~饗 ^Ocn~S_+2lXY#щɇXc^eS 9 :렉C*'lu$s4`-y f86~=f"xgP6ADPg)f4]2yL:#'bd&NQK5éwqfpl|n96x£h $Xu/z 3rГi*=3X9}lgRn|r"4%dC# H`v[hay+*0\aұaOhlWPSgo$߲{8 d5 _5>Q8CtIWh W K XǩOœA 1-uELEq+0;Jj=dOrEH QKQ`e&SeOnȈl>5?[CV@O)B 4D˞37 j.E[8OAt2Y GG+XXyL$帓5&&y֝?t,€`<}cÜ{k#D ޒ gi{83r1ha8r3ژKtM9> t=|!ӭ1n=@Zucm B{O3E$^<ZZCpB[cE]2cv6GZh,0 9Q`1 rc&w />s7*퓯~gTҭ:7)&<WL]j7]֘za N) 5 R[Pa&̭ ĭi'_{Ñ%OY]afr<4\@oE/Fmh3$5žY=nn:1X`su=`csXql,8VІ/찔#\[6kgI(DA}4`1I 7tnppB﹨ .=ɏpC0/F*<ձޛACNPYFqc@j:`BEauX MT;O ¤O\T0FHR1-,pF0j8B)3u1]ubE$yo0g$H6r.s9rc"_"Q"03G ܄I j zfI`m8TwIdAԂ0rOUZw1~rYpP}<7T]V5˧@|ՀK,E'#V-X?L1-E߿ n yF\!ӌ͓l9lii'4eHhU"AT`钀Nztr,>G|EM]?:?"*p7ɏ潬z¼̷'4y73bVw-%&N}i 00& :)ze5RV(VӞ_3Ʋ9]AUVhrZ`p7tFY=) "y텖XsVhDv3C(YX&@IDAT E^D}焨*R6e2A H_ t.Sa* \cP4-.tUnIy}4Rg\>?uMp]8PD6/0'D[ʰ&m5{, ĥ8v29v(CXDG ^(ȫDV cmpC='vݝK1Uמ3DZ%bAX "Ĥ//8_ώ`MO{LX&:~6ޱĪ .Xîqʷ5WG#^a~oVofv&]2HE>"Nugoۇ͋q>W)^ ]>aηd/hd2a }!&[ȑG2r Ԫh6*̌V'KI>2-^ArIGŤ#,r9&])tCSHh K7D8<#ɹM 8BWG 1$Wm.{ b1ZC?$7y dn]Ej=͌tT05ŠGz)"<˗?Ǥ{IWctA#,sLC0W\~'Ek6 ?b4OS|?Ք,Z`gҗ4w޺h;}ٜm$W?Ǥ;397qC+??K֑gs?a IA=5y Sj j&..bӅPc%:W)23{TLN`&5Ik:h][%)qqb‹iCj Ѻ05_ݽs||G4 /fw~ɮ_n<*tU]paKfϾ+[ٗ+*׮]b!LSHw-)z<8 aIlTc;̃W OVu2^o$|%Mw!Ct&$prth2[3qJeZ9S6gSf&5cf5U7B^?DO''/F*nܸ{Yq:Tֽ( ~3!3ŤzmE<)NʂH!ެ>5.'%R1r6ó!&1p#<%UWϹ*Q#ux{b,LzV.t>3LoA|k̬p34 t 8BbX<3$&n ӜD:@Y[/: f'(7*1S׻߯ի{urd&G]wBj(0;N'k\rH'Pk6{4KPK$Й MrҥKx͛'GώF~E{߾hȁw8~ Ppqfi`ъfl dR@b]cɂޒx_/'ݘJޜ֘u]WKq;;[axEPƿUiXSbPe`6*g>$]ȫ:$n n$.pqG)!Jl{r v$̸\Pu,7).Mp›wu"bꃕ><[N6ԇ͙h HIf1*Fϴ*A@kl0X1,^tQIt;^Rd;A>-Bp'ё'Y{2+Ab+J ptQ): XsCX>.$k3KM#-2@a/bT.911$gv1O s'S3t/]S1. ;H^#&RvI\uYP,SЂɾ)0x_Bb#hNW%&236N6pOx+7 t}\Gm 5]v$QSgŅ&IS^eŘztl^yq]LX)$$1Xy. kұ`c!GmKΕl0JyIwWr;]ΐ~ܐ ŏħ&%zy}{655r@;hnG K+%VPQ*UgI &;džK4ƌ!cZL #[SOz$=](!>n|z^rA̔^,@bnFGM.I $59A\P0,#˹+'gLJ?L:*RD26O35,MlviŅaCNT:8&< pnϿy.y*LHZbqfE&&Y@r'ڴEtei# %&]}juw%d#D֭=Ty >c* Wt!q'aJnJCW%t|8|IGqAG޻Kq?|&0"I|,V BΉa!/!$%h[elrAƕ{ Z}o$\yMBSlh6dGj)&bkuB3W.s9'P#H`g}n%N0J\_kꍭ=n|2ܛ[Np@{Eg), ;ies''Miǝ !.DrQ {Ry7I5!h3ؚ(7Hq_]ZjJDQqmr\kkU-+Fm8hߤچ![((̅<:zxfOJ%UeYkn,!? b -,á7A79N/BGqp8W7|CV3nI$$YӍTxz)ĵ%IkCuG+M!$\/܌["-Nj_MsGN%EIp)#l*b"zp<8"$Q}6볾~WLbv BbגiX% dDO)Pk0>jAom †t<K`$`":& `~cg*) PA# :-*\~<Pʌ0b`32"AOJZ>[ ~u]CdSKKK3 --Fg^v(_[TKc$+6戲+řgˑ'؀y5h4,@ N00J |?q,>9Qe0I^&\V48DDl:WZe.jB Վ[pK>dib$ L(S$3eXǬ`SD|+y(Ģt*BY)t9u0* l$% -\|Z7?3n39Sboztfԡ20{߇#E11H'abjOζD3bH !qcL-ZMY6Z_^ J~^dj[҅(y7gbEe&l<%Uꟑ`7s`1ti;IPǬD* (li.Lt@8dhhhX>J[ S-\H?6 H1%{%,J!DSC ]!O) Ξo0[*? F 6Å2#.<.FkBNAn64Y<9YFt5]{5ê6nݹ_&|>3\#4MD|:V*sQ sJ`g08"" Z*oQgEYt"3Ƣ ^neШHsu9TC&GGǨ9؞;Cv ˾`Q5 ۑi:\:h?3@LmE9eDZ(ST"dAG~h1ə;_Sx r,Ȭt[9[+75tL7ͧWʅ[b9dUΣ.Hp+Φ!jkQ8t$^˗2t`U&Z2ajLp ' : ts_?͢mp8i"Uwc$a/37jH2֎OzN*4|zhuOP I¦̢'Li;tRp%3l |l2YSSkdʺjHt(NO1v] ל2@rRs0$Wvz|%&% K[4'SI߾[qN;0i܍ڭ&]|0j.+XCi4o! &^9:'o!{[֗.1f4{lcm3DOtծaN:YB B)Y*p);M-MSU\b|zx8vəWH~rv"Jzw rbՆr3aF{#Ff|{//Y[_tEYgbt b txr}A&]+0j`"2$l3Ĥo)&3^iݘ7'0@` %%~}%YIxO2P/@%ᣅ ] YbұnE2OS<3L:Ez'ƊWDx`8 dOxȵX؀A辄jJQY#2rk%IH7呏0jI\-`/$^wߧgW/'baqG>՘tLKŤ 5(3Iz Ќ6E9d$r6lp):zq1 1:ߜO!C& |zs`ӌIvbq|~^j3[i&yuٙ  25X#[+2kLC@1 ) #+,jD-p e>B-,*gcq/[ŤjpW->ŘtЀP-$ߌfaC8oqрrۣiPŦ$"YmH v!jHD8θ7tȇ T5;K&I}iԬ/ rxx<֩&SHס\sHB 1EtT .gzk7A.'p.+Ť޼stŤ#X y\ 9ԾP |󖣊u=0rxżڣa W?)"oi%ez%!<lrN/;2YLƗŀQk Jl' kYy yli9"bBӊIE$ n8>n2G'9n,XڲyZ}ɲ6 3ѻ 9TZSF^ڰ &o(vRZp}?6l،q'p`FVlf9ؼfJaެwq &si`҅c7r2 >nV`ҍN1HǤ J*c)bI野o%2cY %26Npƍ_ei#Vp7M"#jܗz ;;-o19qʽ F- _hΚyG sOObNAi}%zW>Ǥ{,R=Ckpןc=>>̓1> 9&ci>btO~2g,œrc,z}tHǾjsLǦWz!+sLI!ꫯc??–K}o/)}k_Z޲cB6lv~k9,&EZ7s?bt҉su4Pp~]պ[{33BUT.f qoPd:Q+  ;Z 8U6UnIwzh?& =7a8 lZ@prmz &~0Btw$Sh eE-;xvcL%3FQ`$Eu\L:I+_T jWRA+l=t# L"o/| *tǠc|_% \Qv~-^>9,n߾Ϫo3?iw[NoR¢ <7V |xAtW1O_b--y Ĭ?ؐjL: *L`>;W5 k?vUZ ۪CcPk XtyRws8aFTui%!QKUapwXFZ%vyTXĤ ]'q3K)ހmT*N*…!]ʟ]$y~L:r "8,YոyeSiЩ/|8y՗FI'?b8,^"{:].ǃ<_h@ϳ:֗30e5 wA -p vʰ*ڜ32c iMCeb-j#¹95|z.Rȿ501vw .OkfwBs?>fI$|E//MYK!ʛ|Xʝ`UnFzKH:j0TקeC&|G,t dmue['Kdq}f,A_wv0}z¤&04H[;5 A)%4D焇v\O "E[難7[l*mn"80)Q:BπaRdT&ysuY841h⌙۬E=9ˠ5'C-8Oyf" mԮ;*u=&uf,A`jTd ȗKeKj6kyYI@by.AoDji"?'F$FDhykxmKd<‚>T5~N^O݅k-BD|!x$eL.$?y˝-} ]|4m@4"N(p{`f+ʼ19S(tsA+~^8/p-ba:m`0j8^8\Xbt\9omBO*'cBK:qzn\?Cħ͋d-;w!MTV=@וppwZDX7\=_`EaB)LN'5J*G2g3UAdql7%L1qXTtyOh|>dEaHfMXfF8f3ä+˃gGR٪Nɿ$>8Gq#%rL}>ˡ"or C ȴ̅,j0yL:*+X#^3F/'+'{Nv?ޞL&t:RmLtR|t=* xBzgIYlϞ/z<-$Z$کi Q%8n_}T5?($Ҭ2j'Ij uٷ`2;<"QH%X܊Kyv*Crnٸ/.J! ȹ>SnPќm;vʜ@<:Ѡ&? & &x8%w&cD(,BK$o`ȭ~JŜ @j0˖dT9#d0w<`msDR!^&'mΌ ^jĤNPyID*FIg,cm&kZ ՆP7A*Ŀ4"_*dI00k,`5el)%Z֬,drg͇Ĺq1ŨԵs1u -5=csI: m@RF`˕19R/TRb;EA[!P,>)Z:ᷗjAN `ߎ A8[y}Z][ƒꕽkTShtY/Ji]Dl]m>pimr6Ɠ Gk0h%&]Ft(_44V0RxtYIp9aN>,)wf''`"=AT&jKĮyFYlh=Pˍ gLf# ~r1#Xŗ]:E}5&]WgYY>[6X1I+sowo62kГψ5Y߿.Ǖ XZ}R*XE>S^ecjk!F+-8̖안@[Fv0'NNm[!-)PS a&Id8\b+X-^jXP`T/OH1 xAºmsI"A8~I0,B Vt7\gdi قXt"f?=wSsۋCGŸs8M$kC$i2`\[G"B O~`7À s,aFKL9΀S/MXw30:#5cYtzL%UKbй`/¤ ҫFmhhjV/EQ FDR.g℣ރGStL@#PQDŽI\Q @C"&=ЁΞ]/->qvQz"Iw6-&8ăyy427 {tK•G9{I6T3.}sfQNlO^eNv5s(ŻNt9oKzȧ6Cg鲙v) ,\IkD(\w`tNS(>y"Cty2( ["0;Ed=9)Wql1jotኍд\"(0ZigqDZh3iaEH i iBSL$wF8/Cy(qiB25 E"ÑlJ:/a$M7WC҃13wAgOI9oIhaOKoxG ņWG",1E;B/y~zKq@IDATOu&Q/X衬\a`a9ӋC!7Qe8odyDa%Nԫ2ZZÊ I^kwnu2۬r)$q` 2LBou{oek}49S. $ٰ}ߤL &Xux{v1=Sщ "t5@l;܌Ȍ^FgAq%yeñu=(J9=ck1!]dPR&| P7N7I#cك05yȠ[J|a\Tflׯߜ2Uf0}R;<|>΁ *\ڿ?2xljg6iDuЭ4T49FeÂV5S(Јy)lĤ[ HhIiBVL0,a̲*TH#UaGaXFIF}gpDFE](EuSpg"ႚK2Fo B̖C0n0gO+`$IR_v~c@;bDu⬱c2jn* $50fr'ׄFuƿ3 -"S/)G}~逐6 q.&]-aщR|ro:6sbF|mz}*cEjflAF/i 3Jw<_EQBɭ[ŵPplXJ̰*сX#(T"XC ULAj_W &K^mC"׮Dn@>q7ַ$ȩ#""ubnUgVd f!>3P$Οa0<YG%(r=h8Tt4Rg r-ֶ`\feO9kױbt$~PdF0 u23acjkYsv^p `{ i&y$' 0{|C3T~ϟY 9j*657a3Cx>L:HߌA02JHK96LS&Ђa EIeawyA9 IXcr0:&Rԥ/8VV"bJpziI 2'I\ QXpp,3r !&p8a܇JN_pS3U@9H JtH?CC&LdnQ%6Fv* trS(UE ZWp iEA \A%, DEqP1SFd 9E3ss=s=cQnHħ"Tw\F9`ElJXt~RXaA{|Dj|s@[j$9>ˑw2`FHGB5*Fr+c;p$Fj49\G؇`n7",2Z&@4[4DebAG6,T\ҥKg:κHi 'VC޸QYa2S  IҗnX޺~G+k_u"_ťkc+U_ ^a  0-l%3o*&֜t¤g@k!+H*_CäC QOTI;pGnW~ѩPᫌzu6}ZRIal?U>y1Nȁc0w ';iڵHS <~L:`1Ϟ1c:1&10+MAElY=/tNםvگsqW&] Վ,s*RZ=R1pri$v ի!D~]/H@Ʀv8 } 'l,=գ"LNHO#Xv!$nXs:pH³Gtj.*b!$Ede> 3Oœ!F( ¶J hzŚ.<אѫ]_zΖXeuwb_AsOdi0LF]5i8$L+F pWf'0< @GTnj>7h_0b0IaD^㳤^ms{p$4!y%,^'ɜ]AxNFa?YH\]0$-p/즙D6Yu9diG׆҉SքEP yɌ.᪆B}bYlÒS0OuB`7IG0wbҡ3 }BZV6g4_ INImάVfZw|߃S[3t&Q=uHŤC*GJ+= )R ^6M}9t4z &"2R sNiĤ딘t L(B d/CH.\M4L:cIzVDKZ8oLHQT!`SIS1/}9"—?!([08#x?uナI-!9F $k0;E\E88|˧]L: j)C`9&U<%ʅGE?6ZY'2vCof < #0bqjSfП`I$8Wp\P%۝06%NDeldHDrq-s&\~>=|e3V{#':Ot?g M͏U}9Khળ \MG4:`y5KŤ.K,j'pN%CLMe8={_KNQNWJ<:!Iu=iiɖe5E$2k=P{;m},Qljvl8^X[19pv= ;"4ʿ1HxWDdzᨙ-:232K&ƮTz # 6S˿H&}:è]`h"rr߉bS'*=11@hγ| \!2MdVTڀ6Ft9%beeZU(k%CF=؀|]utq/]vʕ+ޗeww:3^..fJXb(7 ZҐ+P|*"`q9g__Ν[\!)w*C:zsy`L noG ;n8;Q;3Zv}IWO0\^\MKի޳T*a#lY%=FBߓbiqGO#La&rJL<>1tOMɅzo"&Eg5R/{М%=3kj܄G뷙;>C 7x;M_#Y30,$H 8H&|}pZگWC8p8 )iΥ pbxIWfpY[o;YJⵊFO]|8w\\2@+Quu֋9?tBj^:MڲKN( >DpsȦA +6S5\h^C70=thzӸ\gdjC0vwq@W{*lto(Н~+_i3vwX5իz<nও?>mЭk%tT§S ?ؘtI2kӍhr U& A_l#Xx6N*!T8Iꀤ+Cۧl2,nʯ<86ݎS5VqkL:v{y&+u<M4y{r4'?Iظ}ߚLO~ LJ> WrzҨ`/e5 2t(x9Y~[GV0虚ՠ6CKݎ!~i/MJTKq51g. 낾Hp U.:ʭQz)\YHqVaIjFMKΕ_IÑGN{ } }}m\tw?=v z/G` eCNN 5n)"g9/_p v{A#L.~6$|6,2EB\[hI'S ΆdJOe]PwX6_N`=dG^ˌ&LI h,1uP3K\i!2_ЬLJ}M ۄI!!6 G-[Л9FJ?0,LEc2, Fp pG[718h3'G/oG1~1YQz2HB!x<hhJ>tӒ+BLޅ27*R1 Q\ Rd!p4>TZ(M&F%9T6 / A%LCC"YKtR/$ƱNrp-oO1;%R(PE}0wU&_ҿq?ANz6PpRPR2((I;4g<jx0mUDnӭ!mf\pgW 0E#F׽3z ^m N8L:B$a(VL6$)vdx^pBZYen箃µ M\<$:i~K m۰ OsURA. 3#,ГL7Aۂxq-rUp1viϸ-9^łu~nG2Vy>1☤A$`fLMth2YZ&} &]&b g^: _%]Z;8ו+p$AVFb&1H2f>$QhG-іHǖNg⧤nXOg7.3vMae⍭qd[`tS<#Ȥ})ѻF 1C5M3<:Fp2 .R`.:؇Z„n;;&$'V(87Y@N4BqsX\Eaa0U&4)oE <E4qA~k ރF{QWXwV^yŢb/ I<\+Was {ʢIfs1h0`othIAC! n1E"&ґD~ 8pF\R}n(Y~yWwIhYYs`jp@5$ҢV$Nr&G &ðT!+*Tjs8ӻzCA9d1[wdƸ˖z|-v'DApEΓ$ID< nccN\0ilh{ʖitߖ%{x]1%QCaBd`la@Q+Ӭc z~.IC5 L@tYEZ4-D2qy0(MY{0Zi}Lj`efD]41f)3j~\Ɋwsj0;"""4u+a3݀`\{u HxP c]b+áhPhäC@b%cfy#M"oͲVTԷ4k+@LuR]WY}$jDV A n$:(>#ᒨ\Rmt^#d)uoذ3wÃC0鮃IH? |>b Z )6< ЦQ(Jt@&曞]~$ِAd}D8":'#!vKxäC&\8B a- gЩ'Tze;f߮m7;k޳WWsu鉪dIU1Qu3o>7gƓ5X*Gbnꦢ1 bdcb`f 6I,QXoWJp:=%*ߤǕ 5'lAG+"ߥ&ɋt&(h ` Ө+jhJLJx WzyRɯnDam<""ʺpܚ$hk2|Lɮ|^c*/S4*Bzj*/"@\@DI'HSkz+t, x*boÚ, v+bmsGKX+b6嵦WD=CZ]?=C/{2w([I ,Tf8X. S~ML`7& 2 zkvbBV̅ b5Rj)qiƞlsgy;Z't#I*"9}$DMP{te" ZEv2kBEF1۹*+΂bK|1ưJRv,Ϙ.*я Ă莃+.,مeA\ܝIh d)Oi 0@L}~!)0xkluQ>9@5!qY`[MպA^I^veI5:iDqS(OIY%jEņ&lQhDa@ CtNcmmyґ^WaҡB;ʆ 7dL:/ ЪW]#7VV3NZlt|܅s~&IR t몳I" ­YʯM;L:tC3d7E4$^2]M}"WQUw#XLȺ"l,I' %/΢/Yl5k7c 猭 H3(dcx*)Xݦ:qs*fL:znP6="ް(aG?b%GR;4bF@hYgYEC@.U*nwA(#/%e ^^nĭT%^'y V"K%ZOXB6A "j |)zi̊XGl#PP3bգd,`ݟwlE;K`S;}, l!+{`oA)*`HE*q=Z,C4ӧϥ`K Eg /. OruL)J% 3`;Z[cWlJ04`e'QO 1¤k+p Kb;T q&hDsiH<8kXo3/rΓ$ ۀ#poYxXDЛ"zeZ-J/hܗzL~ƓiHP^-:#`y*ƛ%&єp}`L:Z ׬<)U8#ޤ% Q4T+ZrU_ȓ%8 l3N-&r7>nьA\gy=nSptz&호?#1J&;,.1R`l3p6 _`E;0qjȨP۽~iYȌ)N=<86 q֦Yx$dxe .6:X&ά+9EV/Tr#bqWJBn`"ΑL1&|5ǂN A_Rꦯjd $0)$nU_q]`0olyδDiR*MKq;W6NHfWjXO\CK.hP^($o.\?]`2?GV،6dN-2S#;0?tnpf(U=\=@ezؑQfg?&AE<yrs?H/:AP1R%]^t}=tZLŭt2Tt{I7<]O0Q4w|9^7t {M? :3,&Ia;M8W/Qڐ,%XaPγW&<ރ[NxJBB?&}IZ5'`LZB̲z#q rOd&Vl&KXva 08 YTC#~1{~[?%C9_ke8L:M4; xUL:*LQ~kusz z.o!Sd}ReQnؗۋۤ(1$w tE2d8GxwwVh'tooWݾ:NlԠcҭ"99 I:M.&;Ό$顉kA)J*<2ncbN"DfGED#|_oXսsҽFџ19 z[L{AQL;~xI@*~By66>3ب| %~>13@яƺgqccf>nrQ 7>3E>HUc~Sv' { ? e>kJe*/=u'tw%۝y=͌կ?G8?3nB š ǞƏ?Q`o &MWs֙386ښqTp& KL;Le 3کb3>8icG$I-SHz?|oN8uk36w.Mܹ?0](>=fM ;E0sl 8WVi?'HX#[z'lRt1<+zyҭ׈ O~mpksk螇=4ɩ?}v>Mk>=N_vj<N/{s}zٹs A9xƤ;˜tiivi;&L2oF(O iH\0?8]ƓH΅]@U /ܛBe(Xd)ÏIfrKKm=@g"RLg+D"$m UM σ7qkkO) :rqI]f.P*b<]CྸƆnP9Ź,%IOؗ`ٸoܹ.r \oo ._|,b?WË?2Dc <^͡IUB+_-C,< * K+VԵ2/&żH"P:O#P/ox|O߮!ix~J-0Xm6&"; 'ђ4bGI`?_{ T0f<#7 \m) c9_Ro!ägHfT0˦-@T8«`/ LADT8HN?/8_yZiG e.܀Ad>:V5+Ew7Yks; l(ɦdRAy:›udl:No-i.A ,ExbdILT>{-p&妽NP('r'7nk@SN&]Lﯣ<%lܼШyg$o}[TP+*n;nz%oww$ B1LV;K"?-xZrL?43B8צ,x Fcex@IDAT! g% _s5l ȟ i1A$%*"8FLSHCDg~˻ E{=B$1$mWEK wޑ[$lz¤-u$z18Ox6mJ-C/_~ Ԧڕ#<͍OpP]^a> r*+.טͿúFy.feV~ٽ"*(KKIsE.4zup0Q>y8R#?NjIǀ!! Ҍ:+J\ ɫk ݌#a6J-09wp;t2\jaxBƨG}f9ju 1Y)M!z=Iģ6D,pB+ɩ\4)yВY- M=G֒@,[#!Ct1C2B6W^<7)UśYq\']w-SIˎՀyLh-fE{M DB>+%^=t_D:&k[ݵOxlި+A((W+ò7bHM^4"CƤK0d}b"I H0,ĮߕE &GXҘJ^\rTEm:ڃS%0#Cp)~-h7TVF$`6q!N!+_CԺ* i()"+C(fWW5$-3RHI)=-nRC{<[e42vB'h`j6,SDeQ{Q.  NdmRƪYm_Nv0 КDVGS`Z>u G38UbM +X64BKh\HSDqH ^hMd/G*-XZCb:Jcֱ[}PĤSVx%^h sa  c9뇢1E}CD^dB}]^#JZ\3T1W,@w. \8g/W_ʳF &吒}[ 㢞JT&.S^իWTcc~1*bu6! ÊK@?,8ٸzFw2JZW/p7uDe ڢDyOkoX1BC-% A(!I^ɷw&Od葷Yv5ipE1E'`oj:u L0W1Cn_}uBofѠϻӶ sطCZHh:- V[h,!(wGZN#N@%u^|gSWW R&l͓9qYz{rrPVnWSNb-=-&fL2uu?bX8j*t9s bIPxy;;S\N&AL>nAjr^:Q~??t-Y]VE 'JTF^*3+2O#c!{Yq j5aj;9\wJE){3Gj;m"˽paU&x_+YIR$(wJB 8:t:cdu\N5$GqXDCۜMT5$VguNqf*p$4;8jřz iĭjL73O[& ! (` Gh$桮pYipE,e 򗁠(w۠fpVCäCFfNDfmVRѐ"%rl RDTPƑ"(0<Sm^"] qκz.bӭcwʝ_9vJkSq{\&yU!CU/>0&&8ʵ`:K| }l͉@>sFvBgEgckY*x4a3Zd'2"4E:krkr!˅BV$!4{`$@9k[`tj%>&:3س$LJIRb7'CWXN*#\k  a4YBَmI\#,?/>㩀Rȼ0Gv` VwK6JVwN]<Aˠƺ.LũO㡐Q$} ЂQ؍.ypt0 hꒇJYjlVY#.0ѽ~ 1/3hfP1!GGvaJ/8Piod]iChL:fǘt>Ӟ_(ϓز H}*H$)M%/$ps[`p2og2::34$,M p|<- q>gr:l kI:2Ik٘l˜}ħn_6t{CäS1ʊU\ ו$$UR Ȉ,¢C9,l CDicኺ4#BL:어ÝQ7A,p"ŝ`,m] L>1#PQea`ҙKA40PZ"4.df#c܀RK㫫@%uBmƌhcP^Ld|zqB<D,Fg֘g۫tΝE:~0t:!Yz1R) dG$' 1hM:4]P:Ƙ0 Ctj\\S }DnF=T0Ƶ_=(`RDNto(,1݅1Π8䃯12|ԭIda#/ѥY-Ie% F^[n#caW1g݉3ӵK`7H093yr}w: 4hĤ`IWeF'zxtfsEat$|}@ ,sZm:*Љ͊ء[ pfC];~Gd.,yYY&1N5s5pp03&]v <?%νY/ BIh?*ϗki@VF ncy, RN.5x<Ǔ=d%{GpB  *tրdkcd0X*34 E?Bd'3VUxoa`&-=tF~̂iG#&W,:֕ĵap-3V+FmV%-GBHux\#&+W9Q[L tRt<>t}ld6TPa<|bmeh'I誻0 Ux *׺ki{ԩAx >XkITU~'čhd}wZ:a*Ξ9~*m0g$tRfN _}82 21}<:r!~ZZ0R7sҡ{ތE8 Z^|By /77kɋ/+"ݴ+AuNoC2bΞ=V(b3&6(.RftEUN)ǹr"a󄀲.XFF(ބuFӄI,.l#hFZA\w3h`GRfx̂|lQ , SY?11XkkysA*]w$h+9JH"wZmpT(,Z FAPfnyߟL7@ &̈T_]L0`fAGXJׇѨ&ĄIL27#|>e%3ŽFЖ|܇\$ >xԀNVg 7oNPf$0aqm7P.ik&ҀHxsjȭ$҆Y-̪;mEb"8OT50/lRLDʏd{XVGvZ[5.PW!tZ!mKQ[;m644</~`Յ1mihz?C+pԟé $jġsIٔK;٣`aYaM&]4 űxDt_tEWkG LhKxt$Bs\ѝ,asT7{ŤCd^I=I3Nt{XBG%f!h JL Xw7!Fse4_@X u`i~xdI~& ae)@@dפ w49^./ $)bQtVBj[a}㞻C72FM>Ln3,-9](3tq<`FK4ngc^ ȔHk-8H5!I8Ĥۍ!\ *Ja0v+!<@^Ja.NTI/`lf5b3j|nEA;Nt b#sG) dhWB8]~&mwߣcOϲkӽPZ`,>E+ǁuFmBˇj= pٻc9i[N]GT3 &:tԺGۆqilyL:C iVE; &Lq?44?õaKO0Z~vaxFk[w]G9.YmlШ4昝Nٱ8KTUGO06i<phƲY~{¾w]G V8l'twT&]/|ߘ ]Y|s).k=}ڷ(|c$Yl O|,w@: (gά NϝW2{?>A6&:l VSϟ.KsziqCbrΤU$zQd|Fu|X,jaL.@zo|;8xm)Ln&Gaiomm}#sokkx`]0xRC,AwS$wb1KKl1+rHp/LR>s ][_?\Y8ed =,CG "V#@Y9iAc~uZE Uc*F7P}hkK.A=TrS93`{zߡwzv;׿~C'0}ԩ>DF3ׯ-:d()0ހt}'=XȚֆXp5u}qH¤Sf,1=-Ʃx_0A6?=I ?yͣ3g^t¹!/ BN0 oڢьfE2ma_ƩLY7R gt};b#>8xk*K~rһXw(bX4%axYF9y)M(_HrƄ9KSS\Mp/Qxpdʐ8"C6 rZ5 LL$4ּfuJa"joߒ;mXhEtOֲJIeC*&?GGГO?u7üIiD¤kpP L)dpU"s7d;dC(\ 6uq84Cd[ d ׌S)ƭZGt$.C:n^:@BuV&%4eyLjb*~;63L̊9n qw <>gX+C??=v ϋTF 6)4^6Z(,oOBL 'jߒ˸¤YGS*ԟDIk8nwmFwpEJd<3L7C"h ۭ^}y2_;9O9:RTۋqI4t$d^88`(d vQ83+=R,\?@tjqj9H Aɯ5"霙a1׮&3ä;%~ weh K)NeɐP>#dG Kz)9qP܃|H&!KC>|L:tB-'6-؞$#\ߑ[=wMIGf.Y78?sI?9mV|y`Վ.OdcAQ!$H(i܋ SԋT>eLL. wU0]ﶏPՈoF%Fntƺf?&YL-*#<܆DSшNJOB IdhÇ<3;pYDD ӯ5c?%Q4$%%[&][d CAQ<="C#)@ID(P(*JB%m7|~ƸqlT " G/#8{Gpj@CPBȲ~ĤS)AW62 ZgpBNaz'Y?kXF0XeiRfہBW):\ ۃF "y]$V%&FSf] 2骲va:=J=Di@Mz @ t,U:P`,oCG~ D@6fmo<qM:Mp$}WsLs\VIl}֊߀#]3uatXi|X6U Q &\AJt ۠=؏4e.LGITE4;G&wJ4xfNoExeqI"4_ψމH3$lK[\ XD] e4S竇hNa1f㔬_qkZ+y8aVi:۩jX */)^O$2E-Ȯ7h:w]%@ibAK,+>nL:Bi+QԘƑ&E =f:\'G^TZ:^ޢ;XzySgVj#2RQgQd"?b9zI&ཊhgHiN9NG7I x剪zRs[ Zt[hdmcRdc4U+z8wp4e#k]ĩbBݢV~qwt)O?V˺<^mj'fY~S7(&)@s)UfWKGˮXOb1%`M#[iu2>@kS'ʊ gĜnIqW1u-ٞ"z@O+A'YFQW 0IucxA!4X6ǚQȢݽ""tš3l_5zdBGms"Mڤfbwip,eA,M`q}2 r ٳg޹KN,"%NlhRTBՏFxwVˆ BxFݘ|FEvb H؊?g+OY &IF4YrB.a-$)9Е+"a1is.6)g|z9S'sucl PH~׍ W0 !nG &վ38'7'H tus "rߖ@h$FHD޻X]gzqG܈|UfUf=HԴ "'- 6ܚ=UqI$h[hȑACI XnCMbUdVu܈Ȍ̪ʪ"d8{{k&a1A\2N@r | B84UR5#z'0)d??IPV!/8ƘhtScC6z>c)'.!$&J4=ZCtsS#;>GW0Nh1l ;#-Yѱ5 מ<]ՕIÀBw!`ҕ#׊Ya@Xjɂ*5P ;;HKĐ\$cZD`Q2zb}H&(qڟMIڄLTW;zW-롂JKD%+BaB.I!S#av,z@>udEeU lm[\z%# s < L XB:a=tjdäي;Y> aS`Ջ+ U@2^5N[Ӕx#<>"ƳxՌPɄ)Ejf16^ cDF>W{zXU w=[[[ۤSJi zʮy*$[pLq&:LXj 4 Ѩa*-7"}U<`;IJ 9GBb)y1qzQWX=\טQvM]9r0T |,RV]G>(֘H۠1%[Ԃ1."YC>ԙͮԯh4̓h D7}aX &rx8_\=c7F f!D5ndiSס@L ZTA R~ st}h %W7o O`pAVv҉v& `$auev8l Q21`\^%xx &J!gJ9EG8)|S 8bS2FDV|=5=VRfr>I3*E tGyy5+6UiצҜLB#4#h'i6tSyLXtE$%*Fig1TZ!7~jy|Le*G6j,Zr={A6 {lb׌ʝ+7zC+ t_?zq*;eE@dE/:~(Kd*TR]Ľ1`M3\_UDj'pŁ (tq -\˧ٚf$1Ȍ|Mv4Gm6w|ꌲġxQ_ po'h({ tA.F {Ff_dPbEԋT+T]|5%^ZWg;AݻՑnM#B{|VR+W_k!IɁ"PO5A5MxA=OE;Xf@/nI7q`ҍ䥇j`LZyqo0u~i3uY5-c$26Dp0+ 8JG:*5;ց[G.`5"=t/*⩵PP D"ל|wG.ͫNF(9c$zr*΄m-fI α1rBkwQv2{ h}_21+U OGOC9G.Vyk\;ŅF:'"Cy'|j F)4 븝J(S ϮK վ2\K fHU Iȶ&c i<1eB"@VQ5/ aXy:3V u*d8Zx.}̸Is:?φGK&4<L:<}f68ءxofWnYס"(Zio{F٥N՘ &qˣ`zd}B|d#r;V*䣪kX5j23BuEҌՆLǥ`<>GŤSbCVۙ09ōP2ukv8S-kCV9Aa&L!L*wG :"X2VJ@R6Ws7ɜP()/E7Og~ti"'-WFJ?&֥MTw$5q~**)"^E([V.^Ʉ@CAqu+17 _`0.7oug ʬO@Ɔ!*G->h mby CpVh]\3$%;@r0+cVQU2jRauON$!.)JÆ|T#f/]z;֠0'`9tOECPXSäÅfi#6D`nh޸~o]t*=W9Hy' l仔wʄM?)O;-AXirUFrU[M% HNc4J^Gj <Ӳ!'޹%`Й1.rxIms=gbqv<\ bMA|NA`%eO_a)U˺q{zt5d͌ }Tu DJU7s-c ϨȪX  SH[ts"x:6ltIoM{kbZAN2lIj}C㺕aTBdfRכ7M "NL6ptɥ~vQ9Q0pȖ.[f*1ǬtAʒ$Q#J+8;R`G=ٱG$]o [/2P`LPlXl!( 4̺ g֯bW՝{rFvjiB2넇 &3n0#ڸk3N+jC:6WOUݝwŸM=-pFw @"(tёc#Տ${tI[}~E((JasÐKgM Di9T8یCu$BS$k!`3$Gim &];$c:HeJ.=}J7˓TypxigK Kmqms,\􊢽[$f45?64l^d r1t >E_jM? ( X]fyg#?oփ+yuΝj{ef??j mMc1X%H_@})P6B&qR3:' uF7񼍟M ȈDU@C@IDATZɓ i .^ ]J Mq'H5a;;Z3u0,hu[H<C8c2H%ε`bHi5-eݛץ2BE~p{;!l}?ءmp,V"<"ݛ-! ~q;L6~FONjCZ2D 7ј[tp>QUjj 6yGKIzSNap=ɐcSN.Bx%!~a/:(Ltw%Aš07!Jp(wH4ſ_W!G#V$D'hL֘t g0!KCq ׌a*m-חQm 6sT=U3DnwZK'֦_N_0{teF~鄝n:=Iwf'a2[LaQǩi Q8X)㵚j5ϋva Z2G̀BN!d P8 cäݝ5wQǤ 2ԐtA!zՔiY6[s|Vo tBb[ueqD>9sqȄxH;d9  0"g$r[-@ƇBlbiR\ &]{_5I&+<ӊ`rs 6-nl`m%{Z.LaDS}&{1O Ե P۳鄙!.=GWAy BHw>3t tHLZǬ0WJk  X%Gi=dnxCK{bLΙMn!]#\Ox,DD,×HӘtg_cIF}Zc^'bov|%ä}\v3YյŤSW0"Ɵ?L:g,idp$<1{kT WfgI'4H/D*b+I'͜jITc11L:rZik= FmaWderbagβc5cpH.Ob/BcvXԉӘtOē1 "06egaё=ܰGgtqH/{>z NDŽWA;TX=[7 !zW' *r(=w=uQ>EDk̷zYԍQ4kB#jڿ{)?cϛpݛ7ۛ{a@V+bӻ1pg7MӽI+Aj IȣWǤn>gQ=rl֭_I{~5[%Sdzbb󕟀© T7k9&t$+#:@\.{{E W^6.:.\ܹs_Gp#N2:3Y%N0jR+ }HKJ8PplAQ*rDpU,ݸ㮴'm{*gOq4cJ7^bfmB,n"8!";!$894eW&2ɐ!v !)( |`Ivkd) )Ă% y@㏴P=KG`xy,{Qzj5z>dgպGl呛ݟlA|0oԯG TH}2͖d!j9rN'7`h'u~_AnPLH#(6| LD2^WG/Z#.8 ,LCMqj<]$/&V'wL.&l+ €lpc&ڇ@N0a;w{;oD0B^0ROBKD%!H:am$&D;"gbM1S01` FӰW@(m8nFr246i|SNF_ &XMi}@(+ةd(?Q$( R`U5mLQr`9TD3Hŀ@drg1.CIVR! a3zwmhzXyR.oz80FX)10?.vJ'n6 *\d8U0J9!|J ?k$]¤e;<tSt-ULZĤS,"#S@K;(`Ms\Ky (݂%HIwE~[qفW:L:4pSȄS&Jt>Ow޻{y:W hPʠ:zէ%Y`ǰ`uP_&;p?KCBFl]݄)h-feA"^wkk&&BiLsRSfI#GQh0/<;ռ> a3F;ϵ9;n`}8ag𓪊I,"v,G~ٕ ~e|t6 DȌ̊r緎v8ePEXؘX?MBGӤ]ӂR:f8]Qڮ1]":4=N (0ezygi+#FC1IcAP033ђ@X*wJMJל&JⰆQ7vG?[O=J9vfeyԬ k=N=ݽl՟fb_mRSz2fzf)DGj6Al~&* m>rCr6E%ά!&(ݧ@6b׶C}t EU)Yä/ **#+Y( ?Dhŏ6e;jk(dq\2$d1$lSӰゥ|j~d*Ś.2|)9<D{LǓKټx !`yz AYY,s8Y#-"L+}P`00^<үE &Q #vu;aDDhthVvb{8޺6ߟdʴ|^(t?A_"dPS 1צ@k^&('Xt$|,+V;NJwl{QKٝpa-!snzÇFBx_&[kQwcTs}HK{ MfF{D#?L:h>-<,wJ}H!:Mw! ]q5ŘT9zWaB\"Mz8{Z!u$V@ &tqonH3#!Z])$b@ŭ-¤u3f$04EòShd瑆wKכ$ي4hUe$!HJ{RVw %S*F@PD78v:{Z8H]V`B-K %ucqCOB2$$0yoѣxǽ)?6A'V8&k]WDtW A.s $"sР؋c &'2dC~j,s-i\! Gr.zN; D>@8CLЛ |ژt%WV-hR|iFX!q0[-s # #$4k]l "&z{Rcʝ(ؓSNeRR a; ]/\H^}s|\h cf n&-ڃ61Dď0 |fDxk٩48cY8 dOL59E%a7rՑPsj4[n ۋC!}Ctl4-uor]VN+fzI+FU1BV`J \4LN[(1C.'+X܆*-""ϧ PNj :M%oci2!Y5걯v:dVN0 .LL>;wnG-~0$"wRH(JlWj> `iZ:mQw/:LNMTcI*O+ Rh.nfSx--œ^%({0޹AܹjqK$~:JzMo=,1"[:OSU3eh}8ۻ#Wދ ZpGVQ J JDmEXpx$p)IxYn/ nAL:eoW'NISٟY4uKcM;hWљTV*O"ZzOeDP+{}T2WJi>n"6[C`}vZf).3-n6PcۦhZRآYjr'\:2ᖵl7nı;nL:H$yKmR5L J9;tPV ]!H A`fۥ2^/s@JIT|`IE ڜiTáJNDoPj ks #W-Bj\w,&Nk#{bClJpJdKVts21`ML^ Z@x*wk/n24 If#%cLS~Nrw磭XMLBzpi{zfbA7h"HQJE[~җ)uo`??!Â-CH/ )r'[ [N2ΖCtc9O(8cNRI4SLzй1&zݯU9a~]D "VIQq hkֲ"U9p$"qkrEx/HN{I4W ,*MCC.lv"$P Pg/-$@V`Pڤؓ;\XN6}x:kP1O.`4*>0cPˬL@yVnιCux:+rܣђX*q+Iꊎ6;I Nd៴4w9@:Tqd.ת dRDB}ہˑz)֜[T *|kZg:L;>//<*tx 9VTfJ/.I۸Nnpb. ^iFm=I$-f_eˣ 0+w,vq!, !!q:}Z"olvs 0Ѩ zFAiuE܎bl3ek%HP[m^ːs$[ck{1{)D+XD|Qaʺ2AP#T.SFPX#*N_k]ʅ4y`~Ƥs;#9xOIGaVP^$,* =.U=NQO7 EWDHq,؃Di1! Rfđ|!N dG^P Wni1x㺺TSӛ0g fhpSTAတL:Ghbs̎i <Ib Qn1Cq+H%M`.yc z\0p8e<[P]}.^Y*1=1&l9/}mP&[s{ r2I_(α.1:gAzx==!&܄\xa篼e`*4Y ꫎IFݐUQa .E!ܬF9Csy+0ru SLnfz{ĬMߕP 1Pwv0-d`ҡBp5&]& c.M`Pw[hsަ@#;ZhAdblu+>JP K+G avht L{Sk(9f!L:&^>6 IbQid0d mejaW҇fp$3mXK Oڋf7<Ɇj{{^ot"(VdKFXZmm|dr ­"Z=In0<}L:"XRR[:Mԭ]LXL>[" =.c\Q#kawQwv7_f~泻D x2 3 S#70pͷG+2&4$P3<":%~n, m!!H<}^@%;n]t^㬑]}ig3BnjjJҍOӝR8"G+pӖ9BaCu8t"}t̬0phQ萓Cqb#˓!FpA'y|_ŏ:Y-I6e_7q&3) V~bsc( d<bbP* $s`7^²s#U7o-cDkڔ4KR*1ὄRUKG_rKɚH*晏~?Q.u$g X=j%*~qQNv 4:&髣(%(-jl Nѝz$sL=s/V(9SZF%FuC F)΁'S%׌"*b Rh1Uf.4W)W+$e2N$ )bz݀Q/o D媘t&[8x1W2Kd/fe.G=!ۙibγaioIG 雄>=XW-D!ɴcfFהb=I*c%x e`E=*dWD3(h,^QvzوU0/hμr.7*kY?6}v[d{L:4`aClM'G1aCDab ; Ħ}c>y9cʚAO ֙X 'E۟2̻ \ܚ@ts`NtXI7N' jv.]ξ'x Tr~ o w1׭Ը_`+0Ze^ț@;eV@-Z'0@{IW-Nj2XA>꣏H:bBoC]]|I #_>Ǥk0+K,tү}\٩j;CO-Cf$C̅q<"(Q1u {1HO!brݣ nkP"buL`:coE mj j]B\oeQ8|.f4H>~L:Wڽy`ҁOvA3zbvUY.Nuq…VYo?oPnݢp;"u}Mтy= ե;1+ yVC$W@Hؔ0?15oNT#;).~dYdxf!%IbD@!WkͶg#3,_1|k3pLQš.EsI_!m܎Y{kgrVݴĊ쌙%h$eJHV62F4q?,9\gKI̖II !RylU {YpfҌAm'5.9P͍Tȶ|Ⱦb Ile FCZ7M98΀UgޢkӁ(c=Pr6s*Mʢ clWU<%<)%)t&[RQIWB5¤c~#EV(d)%&嫠5/3G=@:ﭷ`\[[%8Mv.#۴Υ$82>]bFtAL:NҽIg8Sy~1LU%IY>%{1錵o7nrߚ1X4 2 >Nj(&dsp9&sLS>@ս}v_G4\wA[]o3 PwPZKDl=3rce)1i>{MJo6RGw~o~a/c߁cgǠa~S=ǤD a Y tt^.1^,de3n0>Q^]U9}XoPЙ 7!Hí̈.@V1ūAdH6q eƎs[J3UN : l6M1 x譮 8^18wsjD|[FqFSt!nYkȌF$|V&:HI1(E&bMfzcؔ¢`9k>8z*+""֚ obo=O)Ct,aa$BE{|ȲU<8~7Lyot6wɌ3y eX~A _]L:iY/aq#O"C2\D!#{jULwFMXHe4/cRka`REp8@ llTjAazYupƅ䧼E렐VPjsw~Oġ"po LwĠBZt-<,YdRp__{5W^ye{sssǰd^Bjov\_s~~K^g%a& qX11ਁZU@8I|/bYu]K՗/w*H'> Q|;*Ke?f.2x$&ETeqKr@xQo0¸p N(Iҵ..s8kz)J+RUL7qb)*r8]Յ^zлřeц$ioo]s /0A' hӝKxc2AI4rt E>sRިxְz2ptZB'wmvK Hh*iq5?lk[KGp|$|%4q NCE * &-nmmm퇝!GLӗ8tɊ#78hz &]*H1@F5&%{  R#,QLPUV& P"qpGnvLwq,4>xiO't4D "yd1\}V1Tt!#P@%-b@ 7ǛZ<搑uȐHIjU.#qG0kmLC` 0=0`|F3=[@ pY+Oqƃʟ L:ҲL%;Y|l .ŚO"LJ!?R&K#$c9D+r QҔup-Utrbv"a-Gy i9¤Se'Wݷ7]*BVk`V `-P}p EX'&! ݉0.খG=FtJL~;?&rbrMg `3I=&s.xY j+CA>É!2S9nON&]O0Tbto0 WfqߟҨO0F3Hhw&,gxHU]- ]:bS Ɉ@[$x$Q?ǛxIv||x1 ]P,¿`40:ۼ)"ٽ" gB@̨ds(3.S1QCI]s r1H_R=m{)]4)LHI,ىZ$׳(KNQ6`,t `U#˽;+ yͷ` gK{Kh @z-h5琉]3~^U`u,,@Hq[,TJdCk4B AY};@ (A&(fB"}R=!>~t t!.Bq =[քS׶ј r W8WezzL'Q(oQ-1ʖĽعfiLCQ,XV1t #MH* ޯ?Cwfm A[OD-D!ntdmL5[3Xr&0t蜫=eRbnxߚtvj}lr|)i y=4~87QB+n$'"394% "E 02%Ǒ_4aҩؚ^JÁ?/ Bi:!ؑFO^jτ/j\k'׻3;{1APdAҡ>>EL:|+x6ƪ%ETlCcWG;TTSX vђ#2%$xt=P|>!B=.ߥ*û}Yt6N'tU=&T t I*aW&ϊ` x&T &II6X@IDAT3YH<(eK9Sk'9F38RV_60Efd(sk\u&!H"9z+ ;떭ԑ,U0$Gވ3H`1\)-z֙2X,lm繉RfӚZSm!fg 24L#.B /x9S/N_;oilј N;-$ i?zV"V*K6CK<}vvU9S<6iHO=!&42:H :X3DݕJ^5U#W%y[Fnna-2be'Q\Kϑ 6ގQ)g2B/M2@^T]J-czf|b7Kek>^s'GUh]Eϔb)7>!M ~iThXO/@P69ܪG|VF/sTU2ڊȪӫp”j]٫6N FP JT/)CTO}a/ C3ATHrib/NZ@L~qC544 H$f[ X21x0q!WU`9Kf `ҩokZR5: VRSӍC9.keD#SC^c惩"q,S4=2K,SȜ $J$ XnO*}?VDgB(FH]Jh}{C&roV)seӫ6ga"W8h'>pրe,l\NDP;o\W-ܾsC2Kھ|ZAw &0Ԙy>Gz ͱ,P5p.HF(ާM{v];w޷jPWnpAV+zT;a 5@ $T ךf)2HLǿ&GQa"u d*27u{[~cHr7`Dt2xDxhg㥧bZF<;.5 WX#MC?>&% I? n W!ǢJʗc&ζmxØKjdŁyiFʪ GYZ#KrXlUt_/>Wsc#5h'Z*aAA%lՠŜA.O|MhJXSL\AL(qO_7!gN6]o0kճp|O00YY٢L:g ճ`DQnU>kYp%O*ΞMDHӇ%OՉNG&Tyb23}YWf)c3E 'Jˡ۶piAhvvEFv5jۜa]*R[P\r6s!v,ƣ.;j)|xZsw5IhӄK%eH*SNӎ&{n9EH`tBxu~08ll3fJE&5!u&]SmujjP+TO/"BcruiL"lpj-2atUH_w_޸!Slg({V3:"e>WN31 ԚSN;pI;zz[sh}99 Tb"Y1#1'ҍ`Px2hAmub op.ڄ[ evw난}M']gV 'ۅ:Zvg!*i-'¤ `}Fh3@RuǴGOҘt$, t9t !t,jA/3S*Zofs1v9g{{$w `|@RY6 fuYst kL:w(#/AGĩ.yϼ rb 7}r :COdF0L:L4 d>=1w,U\&> BXP\wOQϴKsɕ*$j>((l[r 2?!_-60H CLRU3+3Js5%Ź))"tTWoS}_OEnm:Aq5V)ݜH_, 3;%@P4{ SܩZ'<)`]{4|H:T*AX ieËT 3-P g7iaWڳ% &Jl|WdZ*QF&q cN:IئEDxt*}l`Q T2g:ƭyH|2%VP~K$ )=#8&i36d"fY,qoWboƲW*fwK/^="QEgeE~u!A ,&/}FW`0gI _Af< ΂J0V33*\ Ą E1s\CvdcMoΞ93aJjayϳ̯&]Ԓπj8x!q;{sbL:TgI'b Z9ug21E?R/;US9YP &lPrAnX"XY`Yԫ"RK$rt=~VM NwcF%p&zƤ)`R@(-A*)Z8UL.rX4h, ]ܶzĘC{ F!9¤L5b`f:yXzj:&=Ԟ:><= X XI`A*^T؉J0&55Ő8_{^tGrOZ@X6 \z,4(! 8+F=*KԚaf9[9'wʏhȼs< Yd76džIGx_Uj(A1p|IG3g{@wNpV1ܔҀƴ{21p/0J_}z$=陏qQMTPaeZC 4 a=4&ɲڐqY<u r'&aȂ`Ђ$>% Jm$ jE V\];l`'0.% &mD$g^j رc>x2̈́6\Vta;*WnB*&b|'Ы=*< =Z N1YĨӘtZ+bZy8VƤ3G@-q<kOgL:,  "!!w%t B, 1rs4=&ٯ@ĤkM<$>1TSIl }>1Tame&D UǤYNmv[73l|,b QW8L:2ʭ3 4 L:yh2@fō$=|3+q~ j[>Hԯ~cI\hߠˇdMda6PL8{MWTR26-k;h5&kRrͮ N'l< c '^)(-2)!~t/&&宣k+7i |^_$a0j" ͡68vJZ>6^$ˀy%[ͬFN\-P1dL܎ $G'œ[8`ʹfIMk}V#:@QF$3؄w/\Ai4|k~Pz/{hZoŌ +p YZ0ig1eoq,# UZUz _yL:A[gq"O8nC{յb 09NɰyUw0~u'{?>siIF̌8033T'59tY魡sLGbҹY1J/4)ұqh8=l1W9f?߰6xRYy'>=y;/{I"zSX%RΕ4Jh9X8q Aݳ̔!#96 O+Bc)"q:.qX#2Qߟ AUtْ:'<ۗt:S2d?edzZ aJ){]޺8Nf׮}WCc'Mo{( }uN8{IJ 8JY8Q {&0_s0hFoLN|rb7xUl a[{ۆ3gR*Ȅgʵ𫐾 DBs<Zo:oOXb(Ƒ&j`N#q$CATg_R>tdĉw?={i8%Z?L+Š2km-D ~jѣLgpz}mƐ_|dz>.fL,kfq f)"y2$RkP@9+?xMFq8Y#zIw 3Ze6vwi쾺Wi7㵦XY+')Ht$MYc&c|tMmN#YjY$^".X7(Z<+WNlEoF?gQm28M&?}/C5{4Y.Jk)YJs={a:|׿D 92fg/曊]nPi!4gV_\`Q XO=&mAf I6!iqTm 4bH<("0@k/5\u:A F{(o>bFW1XS6HI4؜J-A</O &ްki8oxB5 JFTXcĮ?FNoN7WbL{kpj ϩhp:Q`S%k:=PW>9 gAO~7艷5ջ%%@ke$Ʃ]rC62JRWy3wtRI~ZBn"%N4@=|o;+ HɋC"q9¡G˪ci EI!؈ WT| `iDhdΔl8 !7Xy(߮eWhϛwo3>ii xߑIE#h(fO&wD-\A& ʾxQFK N _.I5&$%cY$<  uQHQb(hDA݌2B%༉lPMq߸X! o#ZI+b 't)i1mOӝyE- ܈Xc`a!<[( »xmPe;|;oX<}us$ؚ&ę d@tHq$axN yk!}1i6eJ{趠)"vnܔNO@O ILcfKn a0{Iu:@P)*p$7K}Ft7IAGd(Ilc: "9 ykiX \j=,ŻfxQ'{O.1j$.a FDmff4^OR2lWe#+~f Τ%&9w??xcq7cY8M[*3;y cIu"别&Țs/5ZDe8ROI!" #I '"Hp  [q%j/K?XnC+ KplD|۫-Fe3V0x}Ʌkd.}IL~c;{;ݝ#d&g$!>MdܙzM۝80y}3ahEPbd~ n#ѠA!_\uھ[jce5jV:pǞ ;1TИ`ҩ|1`@ ZfC2o7DW wY'9(#%d]XYOVi.զ6? P,x5&<.LG .ނt{;ۡ7I'?jx;O&u&%fY@f>r 939IY#lg;p(Nl#3N%?+ l%jKKyp]y㎷.sρGqF`F[~G2ݔ@l:+¶ߜ?FyW&JG aai]||q&ˍm.0E se;W~=8>JXw1cz[ozzy;RŔ=q( |&[5&g%6Ȓ¤;6UtSIZ,;V<:G\ #newo:ܙ,M(gqB*iu7=kER*up0tnK 3&n^Bpzf{{1D%ɮ$"9jT sQ묥[E+4 87Pޯ:,I(#$j{ 11Pۂ$dSY ?Qɑ uUl^DCd׮;@~h/5Y]" %ֶje>`b1ŲXafa6N]җ\={V>[u4+*!18`'d2 vwgggg2/bģ˞td6!6_,$ݗ 󄊹o}MgLπO i$'_|/'gu;,ڬ"**u])*ڈ@ө/U9J4{l3m^QNucRgd YҢh ESԍ_%A( v) DF&VLiʷ(#^XCo#o;|ozvG 1Wg"#PW<1qcґ鎁h22W7#OGd7:Ael0Qz][Udlܥwd$3:ƦRk[^uxxT69OdhO"0騛A̐+O[DI/# ;vspf!s,jR`-N 2d5lXG~:&J? % )[ ۷{B+̙ګh&-P6 ]vu ͧt+PJW&ie=K{Ť3J!W5иea879dƋíNW8Hi2Q _$%\]5kE@VpΒȂ"zdAzܺ;^_".%D&&ݩb³E:tH_a8~J,4Q.qiUj(\pÔ)2&P $[-g;dYԮ_ -Jn\!/Axme'H5:24"[YQ@;loVsI;!Zxޗ3TDUaҍ3hܣș8j1Wּ{L:-ئ]NZZL=%dpTӕ@ynӡ8:jم9S7|[I7$A fuwtnn1xC (`IkpHK1"_A( (ʱ{FŭHeJR. N ew D搸/azڨZ^ Y-zz/ Pu%,$,tmCcePiE;u&*&8HN.9An0 I R\9n6c=Yk!K731G9)T[a7X+n94^r\jou_3'9l91Av ,; j@&LqRשA ]V n B+_AjP;q:mpq*taq)1D4t?i@x`)cZ-Vפ!s-eA%D5ǃ Vݙ J"&=R!uю65~ dV}ҡso fVW'>a jw$=` Jp$͢m+WU *nƤs4U1sdʇ{98J cYQP:|,˲ &Q'R \%RUEDzJW ?&*Q66$6k6X`kFc16\FhA@P# "j֪n{3E{j_Gߍ%AŊ6t/(si(#>p'wS_ۡ&V;äP£T \7L:䉹^P"!cFNH*~maDnAZq&@׉o_ȑwZjyH3k.-9"\_p*^}Ea'hd9w9ձ@U(`@IGGoE`weٷJ徼⋫'MAhMКѴYYTo"kЈ91=)MI2|G,?L?Np7ãLV0rR*Kd!ILCb=˂MRrTN⛃ccZp ̏ǰjf d >[[H Ғ7WcBդ%Lϸh穟[ڒQc\o,RHd]7Cv_-jvr Yꀚu$Q""<Dɶ!lP{qcje>S>SݤGLYayW- RZ2,PT&FBˁ YEZ@esDvdw9Nݺ/9\"uDR-3 e,i9`"0Ctb3EW^rkY(Wg/0}ؔ:0RDrTpz+( {اnO.AJ UeAkj vxNXȈD<ɞCQL*$ 1JjEݢ`LjU$VеQ5vrgJRex˽{tNt.Zݓhrє6_逭#:2WVIGi,bD#"H-gt J*^?noE.xQBd'.7Z<81wz~B f `mQ925dEˆ(A J%񪽈&~6nxp"cA< IAѥEJL -0)IdJ=#k=g G]k Bl@?$L:!h>4\8Ͳ)oFQ,2'yu4]26|ã05XX2~IHȞ$HϩtZ$0:z"?ULde-P`'=_d NFyy˜0p+ݑ`K3DXgk /1Zȟc3#Ϝ9Z$QF y2 ~UV)0Q-SG67:yZ *d^d?<޺^0f̫؇ӵJdgT"%ت75=ojќ$NRKq2̏z<f3q@~4L:`V;Z]FǛ)t) u͐Yr7-f>XhǞ(zLesu9 (:<9L`,ww_D-Ekk}A9Sw]4<bCоS ¤D n6B JC7H|2<Me KULH!s`r%QYZa8~B8: MdtFւ&H;/vd0>Njp'7z53fDرAUtZ8 @ " .ݵQ`[ c1x_yd`b ">SiȠC=S9FƓVk+Ոsrds@R|#QΕѽ6][_{,|1H _idf2 Sdyc2[5fK0餡X!%ɨ#Ƥ lo_#JPm]&]0u)BAc9XLIt49̄ze6/LL{*@IDAT}?8(z/D9J z&=鼃ږ5V%4>&[-܆@m02A`=0k3&<L EhUW36ASkqb=0Z@+PI¤se3IemLIU ܰ9, IwSQMfU.h;*1pAUÈmȶic~&=3IQA aSQԅ`A[Ɇ, KBnj#'bҡnBIĎj_&̙sٳ%]\5L\-:NciqP/1l~!rVXt*]=KwuIͲQ:{0餚3ia܁",k ){&R2XP&*tt2j#]Wu&1G7}*L:]@3_7uHܨM0VeJ"\ǔˣ+w=rʒh[ߵྖ:l ԁd$;:#L:E涊tr'&ㄻ&P0vh#L;P~zIwĻݭ0nGp5UIwU?z0~YkT:Qz}W?j)ā?1M|7nUӠԅfdX_?rg3̊^uv<>njąGko?E܏0i~]ʔo9lWiWL:,4a}{Y2t2ټֿoj'H_/y{0?o,:^| Aגַy K i򕒔9bYvq񹃵5|NG!'eݣ1Xoij2{{1L:>I5?;[>x2"& )d@oI>jq6 Rp *u}9Xuunbeta2_7Zt_[U>枏(/`X3$#;?Bl o52ڽ_oA'O?4,' W)*3gNeiX;V@SF"U(eFB9bĽYtu}(xj iG;})VB1>tJǐ֊ 1g|CRޓ$n{7 Dݓ).R-8(Wრ2A2iCX5/}TmN_¦kɟWɃ{ޤL?}AZZb_#iw%?'4@"=n~Lʣo--҉B{! @KA2{p XD&ͫ7]D5/[ nR D~[6qQc8TbȵxA7/ICεyR ÁMX%,&xD`٤}Y/\8@4`jHv-1ETdkM/>)?/.kDDXEQK$O8UaSL:)w(O=Ns6}vMwW}!j)|.{ݖϲpg$Y块*<Ǻ岔~|x T,`n,]oP{u>jnœɝ}S֩Ug%d$汾+&Udmy' t{̀$~dgj:8ql:W|~6/v6jwsg6Cdm+"Mw#PIlJL::X$PL& ݅AwtYa* a<' vs*V̴ d7H?g1]'zp箸t@PCY\mIPZ5v0@e~ eV5.wC\_S[[3B?9 k~/A$ yP!$4kKPEXzq,ll^/&6/6^Qϣm^X_[)ײ[ tI^h!u fPL_EOrL{$UcĤ҉z~df⹻PNFKJ^7*vfrR0% yoI YH^D۳NkΪ˔x%5 ePPAa *Տ n%p7K,ۣ&H+9=DH͑9{HSn":v3 2]|MD4D.K1^3J;E*.Wh LQDm*e@zq=+ٹ굻iB9y;YH2:(ʙNh9.k ۧ S } @-]Z:N,,4?w?1Û[~po`]A!fI/۾j|$l2EBo¹}lVS,هIlbV bY+MB_80N5* n /<%EQ*Ob"`I@5R F^gAe/GK  6z10`w/[PhMF 2odA?3}SCNa>~) 9"H#;u/X%;\mo9n#% r5yNҏ7 K30< cW¤ YK[cbi$q2 !@:#:rUtlo[ÓDaau$z"~W%5I׈>&=Þ/+ CG# <$r/vH T]#&[%ptҿ>e9\Ed?zmYB]`zKNfm!$H ICɐѪ]@>$&-Ǽ~<y$IwanvcCŹ>DSƫZT|t,*Јc]a]Ay.9_*)k]u@/ J%NHc|f<^1"r &U!dD@=\72)JH#dM$!׀5G0(8*a 9i2aOkE"2Hb@ov<&آMB`|sY rH> L:uK!'msTfs̕YaU/dUҋkDJhQeɇI  U;o(ABV"a?-]4*K } ]Qݡ*#^D[09:c(MkZ݊I/@qWvûǤS,Ji c%d"\vStJ\;19=AI30ΔV2Lzѐy=\3)ćh*rbB_NFHjm/Ђp h'|OzMu)ap7o9K.ȗ91 ?E`WEMGs&sɷ5 3w!䢶y]2,`ugaXäwq(x9/{BIr@l` 5+3r,AfmYs@oIEyfNS`%A ew\I reIH^iZ};rAn`plƙNOQSu =L.Pu&ᬓ) 2q`-6ˇE{]i&,{4=>IΒ]op}{$m1_8XuzQ#^ULJ.kc غvc2٫_v&B-un9 M$o2a0 V-EdWY03m+ٓt"fcQ 9VF#>+tYR#^@}qi2tgjezjR p!{ qU܎u䩎)\\){AJTrhaĪ:'ű MCBdb/&@lדpGuB J^Y2$YfYy]bqH#v1"kq|gQv1fEp% FDcPQIT+aVEܐB>qwM/ҟx&/W^AӀÐ⨅'OipCXe !7b9ch'xH2;KT1FjC& {1O$%L*?)!駟wWtAƒmZ帵um{@^]dE|.ۅCf$v5?; -%4;gӫNgW|".V)&&5-[Fp'>G9U"<_ݪ?zȭl) 5$IV#)^"&k=0l!oc0;*Iu[ybG2_$mՑ*RE7&qͦFHŕ#J+9B:c9@'G-]t"-+nid "`\YDhUb0!h:Her6cBz d:%Fx3.}Ȑa6\ca.Y 1C#0Q85jTTYv&'3%uNuOIjfHM_}JF W_5.} 8cDpAFJgMM֑Qy):1 l\V,YTVTuҵܿ\z fA=8~tcCf+eXEIWְ{zM=(ą銄M)IG}婘,$T-ǔ0[j^:mVJ,#RIG^mMPGO9^εw}/MCA9p6z-+m2 q4&ά(<` L\֥J ok-/yb i#(Ҏ\977߳G Oww`6\E@hr(Xd883)K ',(ń`dV'PK: DKQ/`;|n_p&+OEq&> i:Ww:WnV.w );eJ ]NUoWnfIO=&쾚Y&y/# N7ChUL bU*Y5Ii$F%15>I,Mˍo.X`̹ D!Л.B]Vu!qU=Hvug_I*]&~Yl( .oy *}$ D{ĤEyĤit yR/X2(*y2" (=RĆ@D*2۫X`-bؓZ{ M]=vM8d^݇E#Jꆪ"*dr^$U$uWDbb1?E*}  ;+>^~ˆsFrE]2nHLG@-ޚrI[$S-.%eNFuK9̯9Rp &_-En{m!\nPCcp%m  >ĽQnV#5u;YV_LǚS>)$C܄) ^`%]D#}Dÿvxw1? %My`ojSfo.LĦO } t\>Kb]\98vPx6}멤I2`IW iAR,Rpۡ#"BڦA :'>bj{Ţ bCdp=ߵ:4aiBަ ܑ&Ԍ TgPtfh9+t(;rJL: Ԛ4-N9Ljun2*4 L#>ԉo; 8V_$cCnUFqҵpn{Vҟf{Fxv ,ۣwƧBKחZc[+e}`t%jAD)"ڂKF~`Ҵʏ;D$?=G<nÝ~}\/e,H+UIiz ^.A,I+tFIF j2x{fe_ț&qd֋~(;lΖ+X?;%-Wҧ`v &͏xK<#뀆^ő1AfC7~9#|GC^=bU"9}81Q`3ò@,`Z5'?~K-'uӦی]q4[Y`AAuPbjp%fm,-Z~cjsb^ͧBOD2Kietf07@ӘXvEW}[#y iBPtyGB,Ũ{UP볜GKP]Y{&]FkPSݖC6JZ1u=©YnK]BI{jJZE{D=|/klazn="=tZ/[Ov^(yгd)sTxB>RR=e1܄=`1mi lt^rD֣pКX~NIsPe/I["E'(Q?nL:h~OC6FwJ!d SLCɋ :}pb/AiDbr"% a.SҢ jTf'|Գ4U^ ڜc:o.*x93AdoLJo0T|a׀ԌӓYCz:GL>$]C XA'Ab}|P^nO#IAHT`ėfl*fKwJ gUQ &2 i6&@L4uO&jB|&wt9#G 2&V &% eHH. ,C"*b[PhXcyN!X1=.O@Ҥ`nKt f |b1e(kͷp7[ XQ8B\eooPЮ\C\PzMN2hRu['贩&$3YmK hLΥ4$uX"u/)x8jT]=׷ +:t:ʤ' $lj}M>)) Gahx2Cu3S Ue,W0Ԛ¤cE3L:=B8ä#=mz)4} ‡yZR FsxRQi|bXJ Ψw??vw],h-PYYb)77R7O`qgЃ qv5ȽL u}l#VmJ7z]`65ݠk6 2ki]żaҭw!1L!mO&h$-8Pe $VWN@&SYDeƒDK:`#,AW9xцvi}F#`2J-3=S`8@ D(wy@dnV'&wk_=&%|Ϙ".f6ʏ^ Sl3!q>3L<yMr8QCas! 2$Nt"CIdg"F,fHhz}Ǥk"w|z߾lӈUY񢂈;bHW9scL)" t@R>F`CpKV0#2’5^V<\]aҹ|zRlcy7,?Չ9s朥7P mDP=PDbҁafV}P]>q"b5k4&M9n;AQHRc^onnS^wyv=X%m fR{% tmcƲ.~sQdП#}rhY9/ ?TMlܮm빇奃&3reMb[?~ 16;;{{ۘΞy;hɥ% ܠPa+[DRzp=Ϸ',Yd_Ph}vA xK_pėgigw魷{A_KPɓo>cY#\KU܀ѪB-U"kKEvֿ_XUU@D[QZ(_D]1&fL:'|0JCl8Mp,C suushSgMFR]^JwƊ77{sVD='i +3dR]2i`/e$  Op^O__fXӒzN]Md^+#%ol*l+%'Yj#W ñ~y$ &$pZUdEܐAF{, O/n̆ Pf~h4(5ϑ#Z\2,.8y'18=Y51_GL:jFTu/ S_d0ZPLhm6p&]A%]hIƩ\] U} ק.%->^T.WPʧFL93&0C :abU]?$g|H}IADh%q/N+ Tp>OW^QYP[b/E"_0AVѨGQfYŵ{RaƸA jϢ` ?Y!Ҩg]>BPPj_T3Y3x`J3+((ϲ? { M^yxջ,j4>UtxbcMZFqt &}h// :F0ύH mNd(K:;uEMir1.'[Znd#řCL:^_ZQ+neWLIXtYHI2j|`zC:):h؉C%$ [m QW"u \ /0g6'vujh% !--/>w&gR)?bҁIä^PC2~Ƣ*o DE&AfցU|l"$%n#nHO jtQju0kyPiHV B-teElHy&?tٵe{$}Bz0c 1 #m":Kw7|W0nq2"C1$-W| VtS,p {30;Ĥ# !T*rCcXUyzJ "G2=̆L)h Y?FO(LJ_YNwx@P]j=z"AdfJ/i. KMTqBṲI[Ih䣅mb)yڽNn̕)X덮a"Mǃ[խpho9M/&ubO16uv#؁VƨvŮVr,݉t>,d%{$<6:\!|=:jqlJZh V| pofYF4O%T&GNHWpxX?i9'n:^Z#"Q]= hFxºD'.E/My#:~Xt(= MEkCJ!2m˼߈b_d0ivKU4<:j6#I/߫,Ĭ~v|+/C5/ ̮ zelEfdl,( о SćIAEr35P@2(Xv;ѣ!sJ js?Tto|Ѡ\p]_niݥR [uj 3gƠH6,*7R ں!w=L:W`5Y4wa'\&ݽYr :Fp&|PKQ[퇣]gUeV=17Y;1]Y詼O"[ oLg<%iO6>mh9[=PL:@f9WzҀnl/Z()9Zz^Q3t|F5WWcGDՇSkCmU[v/)ʞ`27R>L:Wi5"mOOy://RrlAZ t,> L:rjAhbHB4\kEzb0P۽PWI}I,9'&eo`IDtHV͖QAmFtTQm49qx;Ж.cTA1%Ċc#O+GJX!H&`Y'X7/׿xL" ncuJ%=K8ML*"ozs_8zjSL49HdC"Q9Ҡg8ߨ/.Ю..JrT.tXC_8ɘlƘ…Zu)F0g$4 hheܙ΢QRˆ LAƽ﮳R6_!ɨ&V%C<"2!f[sNO bRMFy+;p1=BkI Gm%6F2#i+z) h.1|QZזy,s M s0 ?`4vh DpKSFH*boEn;nC_ %ML%vZu "x(;IeB૸7CpcUgU_N1VP,yhS84igQzԊ&FIܚ̖EIz10 B?RU1YD-?\S9VB`UWy*ĩ3D{"m[4䪾DGo~"3IX !:ڀT#cnl,t3A$i)j OcU%|0 =*d>uQP98M]e3a2h'$ I%e:*p%A{L0Qm:!Ԑc;wVXvC9W0j XD-Ts| =dsme ,Aw=y{SREZČq{4lrݹIA`GϡzQ֦z{I' R&bWkEMG@ QЗ. .t[I8sɀ;ChJp6äc 1+RLepC12=XZ ";uTQfs"f~cF{VmP ͫH~:p`tU7[F5%=aa0'W$e)5%<ú1("ȨODraҽk@uh49HթZ\[ޝZN0gB{K>ܦPO$Aű AeNM E9=(KdC;9GY730HV_tdRKTVKURB٘l \̥c"š%VĬn-ʫt/}#H2$ p<&'Gc,Zq8"0[nϲ/ETAbN@ͫo5w7n\RAE0}Dé >V^'>zw|,m D9?eK0'Y}ӧN,ÇI'`vRx xea+ZU 77H;96-ږ@IDAT`P^+yQ]GYmN-5XXۡ".pvviܣM*KhȒE{VB!z^8AI48 IG65d\@& fzU*vy%Ȥ(3t&h!.M"@E;2i,V7YbXI`w }x z{Qyĉk"k|aCV66eݥtvf+ʮ[դ紏bXX4F#++ !Zpj*6 |S8."̦j+e]nP(S#to缝~ʊ+ E= WP\pR}YC6U"rhElamn nYY>cࠫIQDDa噌H])ht=:ĝ  ORfj{ș*9~)u~vqlO(FHr#bN"Pxwdd1YS,^%/^!LI(ꥆ}äcގ͉Nm9X A,龨$끒Zb#ȍL;@vrqGg;.N-Gw ¤OB(ii7G75:4ATV6)ɉ~)s J2##b-SJHrV3ՠ$5,52xEW/:i{:_HgW~xDN)/сNCOF#={0_;u "2`g0H"j轢|kfdx& ?,#L"W]t[,ϸߘt,`fГQJf %SkY>ګΔU~8e k:Oy1\Ȫ dف3wȾ5MkZaǟVFL=inLQTE8K0fx5;jئ2hZMnjd9gEd'I3n$A_#WWD=Q :z&++ ҥJ#4I R/9-V]/usM$El]|i;I'mtlA71@KL% 40<2<1A0$BΥc;۶Ԓ;ysSU{׾TP(Ren޵k_o}[k}[GP'F{W \N0;1fh)fx<%>#&@U?~G]w2<͑yg'D AO~@v̘=c4S{I'3$XC7D6JVF 㴓D^M[)/~,F -3ԄdD%0nwv(@BG:A+ h_1^< X qmi6ǡ6 ]Hl.\?]ciqYP44JMIMH5ƙeu[i6:oC._"CԅMQr}ѱ.sA7qYfJb[(X#h^k \0mą+t`g>đ<`8⸒V='nCWX̾lr)>6( {hX6Rr?V#sL:ĥ mrNbiJHZ?2u8ߺ; *jCJ+|挥!,kOIх *1iRJ]f&iZ_BhRk=გkIl{ό%p" JDb aI6ΰRȱ,'$b&LdNڍx@Y^vӌ ƙn=롣b9AG2,fnWǦ(@-)/`z!4ܣ%gP,(Vg KeT&nEFߣ))02P[w-_n)mJ5N~9Ѭ%zTA 5{Or?g\=ެ2o㽏[SXbCIKZF|3| }g:}k=&yvl-M#gY8K`@%Ez֡ybr΁g2fO5""hK)&:^xe.u5YжQF[< (,(pow8*E9¡D..^MFjnIӻh"4D+צagc1f$9~\WVIVS}ˇFL$|B3W+tjn_P|G /p{]6`rQ51&(qtKr34d4$ rbڜCVu:8q 7q-QvDqQvВF:mo˓E#BhTnô ð16CIʼnRj޸.&Z oЊI'A2 =q"-S(2'b乙\%ٴVװlTȰ4A`ǠIfXH0Y¤CnK@ ";YNivTpWLM%^5h)&.ihc8+Q#l  c3ԭԪ8lÄ~(/b]  !<;knl F &L{$E=Nf:$3AJAZo_=";I3g@&{06B8*L%,*L:ŒȺ᰷ $]ӛI& =G0zw]"+1#,\JK W5񧤝eۉЦDL9;3cCGCFv)z.cu;WQF D,i qM#bfҖtGJRcRm |IȠ[ra\"*"6X3OP&Νo +^8+XzᓁIg3rjTѾaҡAA0[SpAuy>/6E7 %df1ie g(flfm . 0dYE Y>6y?B9hr9:(,}0pb/ L;iP78j!F }6 EO'0]u@eŰl%4Os#FZ"'O'Z/ϢI dX~Xh߸6VW;4nbIKfdY\it's#=Ƌx fc>ߘ͌ 83`,6]5'5℃| u+FHmz:yXKo A./j,퍻m':6L#l-I(l#Ex`!e/\rH8ZoެDJi2AecB q5D)]F;k&ƱnR$1S@,Xxlh$yN1YX*]*d3V\JHYӕl>4IQq?-q[#hU$tIц0B&Yof< "فdaEXa-V:z[)\ӂM(1BrAH èlLX@vU$&d)M,FP#%ʙ'G"CȉB̑Z|H}p)}ӅR_ՁjhiJEK+DRq&M#9&]5duRY[`#6!FiJL:(kM7(팩. mk=*KەGC4 dzb *OB±M3=^ͼF d3Bw<`MO~*7PSC/};?E%dp`L:,pIDZ"i@V dY S0dKw~7)ޕ+-+RLV8ʭn7_~CELH:J@Qk7KHӉAY@-*`z+/:R8 3EDGwX0{,&íka.y="0g-Y3KL::) r7] 7zQ}7۫$9b_۳NuGC~ &Ah@u'@ m&At(_㔬̮_e P0rux H |m] :-YXܣ2QU^B#ehycsyNۘ7.̈#n}3~L+7IY"?<#~u\S ւ2 tzØtn+?II;R;ѷp)D܇t)rWbj|Iw aCL܇[~ڔf6'wHT .ȅ^{7DHjil;ATrT}{{RQW/% IO̿o$g<:-VWOAVk?6Zngttz/u2__ſ6œ/}+/,fk”JMﳓ'%2dᶻ`xq77{l&cw,Xڝw8۝Q#-aPxr&AljIO4G bԩS ׄdR?vwvk?!ڿȐjBJ#x^Up,SՋ%/,/m0=׹WևPlwIڤȊr&@,6\ȾkqIG}DSb2IT=qd1O/&46%V)nw4.A_āMկ~]O5u#{~؊K/&1D>t02Kǧ%(5f͌bf..>n! :L1^):N 0Qi¤sF($e>K^/ѥWĝZ# _lʕ+^xwSAwiyk ԘDGHE&p5fKZ!g } җ?5dޟ5Ο,lx$jtἶy);t3?Wn{ic-F#KJq(Мni e0'='kt˚.!\}CE`2NFFAA(DĬJfz(:DLe})|g J[cٟR$'1JR5@&aLGPxM|@}&lcsB&ǕTi8 ΋Ωփ7:DV\CbO"?y>^D3OO^t[ť'.¤uzYբ3@ RxM2~!O:ug-Q;Ch~e0dh,,Rd=,c/B]3!ܲ; r&1x據ISɢA,zZYŵK7  !QkyF)O:n?;w;V±Y|TzhGj6r=~^Pjz$#|`ڴIGr )zk dgcky8JoG\@(w0Ŧ. Zl xC?9zps<\O}a,,ov6+er.L:y&m$ s$Ĕ F*1HF+wFY֋Ę 6E'cL"#''JjnU/EQх"*bnwjЍ(:AH/tz}tSԜ rN߾6lp2 iYa_gVj|yNEN7(@8r2BWfXY(-2#*nWsi {yfk F4i%wL: Zڦ؞sP]vpMMTDޑc~+&%|*= Bm1by0H "A]g B|[sK Tz2[RF؄ΣߪAymTYt i'B +x*18}5Ӣ'smh79Ժꥶ?eyD_4%N{wK~ $Y o 0d7a},EX&B഑Yg"1_x7S~DGw9*, "Kre@%/V:sIy2iN` ڲĬJx^ԩp\"!="(pMdU=rr=Rٔ}2́e]T!1J'̍z1,Sqڻ3,~TVKԭUٝ73HTrƧV{ tz`kF\:ٗ-V5f8NRoXRK:bZg^TΜT|[=G82v-Ih6S{P=TB}zlQ]ww$颈ymVMwLKFyꡢ'f ݮӧP_-Z+Z:utt¤ 8FW/\?6Oٚ޳'I't["7ciV'7W9r5&a2UYQoԷyhۏjJ B*1$Ŭ> 00IW@С:R> c:#& fi_Iޡ+8;LߙAM:Q:,IVdAp\j̋*έ^wܻo4 b9Ag!*lgܦѠXkk&ur@GSJp]airmok$NA9uDbfՠE++uV5. օHRN1[5dg n7IQLD5!fNlW(-97Yu' 1 CwYN$8V`N6ntƩ?b`pv<Ծ-ccP-;Nqnɰ I&=KI~Q[1׀kalR[xu06T$.82z7?#@Уġզ.Qi0Oq[rH^tN>P[W'@8SCP H;Gշ"A>(cV?ECqB#1Y:y]<+lwS>]t .U^K5M4 eQ3ZL&__ [i(F9*=%uVO8ƺW][5EřfkW&@A|9Jz"Y(-,3P^ wV5hb$CzzH y(=UaґȹA)X g\t5ST A@3dP-_wZ_7 y c{A^&q@N$=kic&Y?)ayqI cRn r ~z/ޟIW,F sXZLHQD ?0'UHl8TRhYeEtp)=5Q&Xb҉gz,ԍHZ2N⡞\+nsZѓr,8JҝՇCPKz$Mb >_6Pgv*mފ©J༦C!h g&8$B30Ϻ[̞6]衍8e^,5Y=a0ǵ6%y$Z ̘M"I*^jm"e* Ej7W"{Mtkf% 'CCҵX֙ocQ 'K#WV?Yi,A-R3Z3nC^D)+Ӊ h՝gc\ b;ye2Ac%џCM_ʊ# LT @[ ֚SX=x*m~hKGTV'IIXh\GT/(Z\\R9 z[Yr"f`Պ@~h7j8wwg_ uS™a q ъzC^wmRAF. -!αt;Lx!QlecTf7rCl R^}eĘѤzDWvR}Ӿ܏1 TB{RX饰oRecxng 5 SnauRdQ"RpAO *>#OȊH'L:4mwIqzQbkgr:v-!ST]%++>:JFF<@CL:!Gu䨈W}sJNhFdn<~LO(f^8_ SԹ|*B|$sd1͋tqC>.ä3lJks InިԝDT& |xLJNꎣ9yf?Wla4ӳ$zdGd|R[C#0ȫC<Ns`ҩ;'Yֱċ9J7.S&DCVwQN#DDűPw{mX~Ӯx!T\JRO=NoP| kiT0HH᳸P V:gJJ^qf& IQ)g Gݝg+L:_p5 lKˑq=LTWG.U9؉Ļɣ)H=)AgÙBKlDvgRl}Q]w&SKMk-/% O3Blz*[MTxF(֍<Ɋ2ֆ䆀YGM. N7K"W6[,D̪?^l,io8U@r[GJ!Щ C$a62TWn!13񲐴^;[TAm>x  nr nl%w TTd0 cuT f˃aґdTci c"M5M]< s,Ip]oH+ YrqA̧,ҼiQFD{I'F^FO?AzANQvqa"K!x'o#΢a0BP wZa33@6W]L&16y||fXaUQ$j~tL (vڻ,eEhLti %ݘp]n,#'Ij[z´CPN[2ʸIH(Cu),iig wkPnNd5 ` V 2cR1f4ۭȶ!؞,B8GeӪQq0P~COtjTUV>#*]k֍E0*k@ī9~gr+)ILA5ԭAY(c.rTucbKoz$6Xg/b ^~sw 3_n{ Ktd67iw`KАxAXc̯'Di\t7_EJ.M.Џ:zhَ㻼8s6tmb"0$)ChOGQ0g銕cIKF }iaS`&<*e.u+x7^U_c>sَ#+Uwˏ $oek+: p&ONT( (D\u0apv>A-8¡U\:>} ㄈl *xhqMNV>_Y녟NFEwԹJՍ!KY]/>m6M.Z[WѯT7Ɲ5_pR]d"K"f| %iFkL&tywBK33 A&}Ǥ+Q'O!ƒӝw`u0—a}!9h-I*;ۄkp֒Z@}N19 ,rte&DIrSoգGA}ǕXP&K}k_;{ Z.\~yRV0(,1I{; _,6LhwY1|.W{A1_%RL{˞'@Ge5tmΈ(b2߉g^Ro0UMTg8}>#]O7Gy~iѼtqf)&Ɋ1\#>X LyR7>.<)Fr ;ULܫ~FPs;Vv)U'5z?M8("O~`ƃ)e*8k>_e80ܪoFa8IJIsMPdy>!\:v, IWɫxЪ)MӁicܚ۱:gmZ2Fp٘uK/3 /4TTk6ֵZS9);CMLe(MRq'A=aV5Jr] QyH}(h}1d"pCV@c37ҭl.h8XJ[-!!ےcl̄gb ɢzJx9_!#:˼=Eƕ /W5 K@FX5O: tI?x~l-B:[>K&x-&d@9oOY˄0Vҕ0_n>ˢ4v Fwt _$ L$m! VX6tt. M1FNF8v鴬,:r&J3(C;5q&9a2a$$~zO_wGi]y} !G)6 v(¥Mx$NhfKc *l@wr`!BRA<Brh= tL\"fi1mн|,O87a@<|YG0L墕fB4* o"ޚ-\i.F(Zf1X!m{ cL?Xt"Og8t[xI ZI*"82`t hH63+\uCC1R+P?9L#%5OnLDn:I}P@7C>-<_n!+]kufm (3ylb+!Ɍ1J%3Y?ÀdM`U|sU]I#-MNa19\hYSR:bTCJҜŲAPket#ejV'`*4?靟zL:'#5ˤ&;1D8&l&iljR`#l|B&YQ\t_ L:ZF&d/O;\8N)!5ĤcY1n;"Räk-?ĤCnJTkVc{V?h٫8߇tQ*з+&~;|nZ#dyUy"Xzk-n&6lK(ʼn9 m #5Y7.o |@A즵{Iw+qřtQDjOPQMAN5[zHpG9n/^|M,V<mDk}kЫ>ÏmC'?1 U>'(J.\`k>t;A+hƉäߺ\v'|r,1 ?c滘HgΜ/f/L:bf0X;yko3ڼ~w/_ai.ON-j1D6vw3l{ַ~X^>wg[ww'ZIMd=O&/oe׉]?glvVs dMIMBxDn hOaoZgZ;-=TrIvDF2=~ÿz3kΟ&\:nަ @khC;%{Hn{SYڜ$5etQ@|>S1CJ*CG^('t(' 6Mv'\h;k*[ءx=]}@pBꫯ(/Oq2/V⨽Ĥ[뇘tLgH;%Ow[7I&kY"u ՄMW Q `ldU5ME>cRY%#-2ŴY*.6'-&`asgstQS< o<^~g?B&lo?|hak,/4&Ab%ǜҔ$.Su6XQG速*.LXaͣ e6NW7w,oI⢖K@IDATz_/ʯJ l9%-ϒ__n#c?/WOkj|/,&]IPg 5tZNɅCl:'W giؕĞ63ol`E~j1TU5'_{;_t_o\Z;5TA兂s 7j}k&]u)c售?tZ#7ճ>mpk@xY˩"\\@gYsoo'/CNJD4K'8V)G?trcnăy(V7>é D{{ueWW:l:^r;X4D^{πM Kج;{{n~XY=#qAiN,5^UjvKLvX6@Oݠ'ޱ$cp~YCKױkaR$%10!8VjiaM ^5I8V'QAb8J*W',r @$8%pF{cw`JnF X8\Da2+H](I:UcYFh 5-.4w'\쏌@jdlpPj5")'r*]⭷^]; ~Hxҟd{aʸ)ȱ1ǯt] pkYz)zGʨ܄-ip/<n.^ba|r<>X[lggwb(L:uPFI^"<{G,iMLE7ɳ\: R +ljqT{i:;k_`ʷ=|`9 C&ш 5f41u嗣|alb-BDvlڔ<%5qA%2H #G+:IoNڕ%!+b*[U*Tp -9Kx\@x"d~6Ѓʓ qq-'ǔ7k fO>ۿ,X ,tt;VJm4{]dJB hU qK E eFd4.iu,ok7zZ"9W단OuÃcV'mFM#>,e_EUye?bq|5]@PbRIO}΍eJ!H0;.MHbb"_c98^e%UTCnGG~%KX.m<=H92>(Y7 cRd؇bp/m/1Y-@5D[ixKɾ(:I&OF-Ca1_Ht6F`(foNYpkÕh=7GI,#"isޮrG벒 ,9?YVW EEЍ?]Q/G2O۽11):*kMFxgNkfOT#Ydګp-{IW Y980q*k>rl q]"=lGf7u.`a7#唜X.DɿJ^ &:GO.1zs)M61,$!=BedLGqnlWXVf}XD!\ee&%NQf΂QOI2#M8yFH ٨>TjqT9D[M8VI C 9ΜpJA>UOtOƣfq ZXIݫatz(b/#qZ,l!%c GɲyP;L !L،vKtd"ׯ+Ty%bR]4?ARNOσkdPyĄ*BSeF ĮyUG ,5fuFxϦ8^&3L2"TdmIkii fP/^a\)^PU+8ŹT@q5$&N'L{$BfFep+> OaCXZ")1L35̀ςd2exIp^TuD08j/)kV`ґ24hFӼdGB3f^Z? :ҩ5Q] 7^SC14j.$NҥH_Z{p&$t6څwI'JK`:?e=|:RH V._Zg8D7 lxc`pi= U53Q2F4yA* 8#?Wr4;W*.3  Ds8h2uk)B$HFs>ouP*xǍ/MW=V0ĞI0%=nuz\5^b/5"Tgmު+ᄙ1juP -?ǐpƲW$[x=QyD̐{6-/\!CHɌGtoG4&z5܊L[NjW_ypu,p(8DnZ\Ah@`Td. TLZ$2,\6yth ]ʬ71,O w&+oUhN'(b$h.ZMLn`ҕi7rHD&Oe Rc) y y(oF/sts iFmRW"2F@ѯwI,h;-ަLsպ;#0f5(#ҽ*EDp2bL:oFw߬mmm*`Lr @qroݏ>Lw1F44Q}r9\pWe}3b>S #3>'~bq.T6Fp5Sوu\_$6nЕƚ:a* >i:[ŽbQL+H dkGT8jP+cU&.4+`F ?5euej52ObPQU&OL:|44BZat!&zJ>NЖ fb )mdOq]\{Pw)'&~oKW>MRkI&p .&o`swWSMsj81ŝaO1"dVOc 2+GXB!}]Y@<(.u,hIB5,\0c-g7>DçuwjP@8QT=: &]BƻN|JoW"7ʽ#4uQg"Mk=3GnqIGdxȦ$D@䜸0H]z3kuP3>)R,rX7>juk/c^$M'1CBav8ؾ [Yx0}LZ:p?IM&}~2u/T8,INAf\bTÏpzZ3X`.DGJ g$(814GnJ"%xnR1IwzJE+Y۝SũE9/#v慩:sXF2G4=!p0\A lE]:˲|Aյʯt[`S:iG%c7uf\ʈq)Ov:bu9f3$XXr4TH(- ʁyB3꣚q1x_fRJ >z1G0U?j*6b3e@yKL:Vx#pf;Cg\M漒t둍W5j>Aye.0Sк !e{;–rVO)V)y2,FhYSGHʺ|N`o3,O8gS"?u"3xxUDz |85L:xzA'ZGss.Ljo`0 <є;rPd' -.3E3\\MHFa Mm$}1DIB4#m_D3<5WvHN.a,BO'ɐ-KbZ79#cJ 5M/<ƆBݼ109J|5@}@;bn%wi8w[BѪ%uk>|J! 1ޖ/E’] 7K/Qin(^&KO0Jd+㧧-t g' Q+/-7ӡ St@)$pR+*/)_6ih5[Վ_S b9w8וF)]cF\bZ}L!Y;#/;Җu=QF>Qy?niGIGD=ttu"LΌT0C>5fcoBɞB8 z =UhޙX9h-Edd?PN&݉]CU, A `&2K2Q0~k rH6ゥ/=kh~ !/|,}<+L]>"ɛn˙*V8"14NtVӴ\3e,׵CMTv A7v@P| L:HAM͗ڍiMe }X FH%uJ~5䶧Ɣ^+"$D&@Cʁ[z}4Jt$V(#DCG|:aA:4$KGx Qz0zgW2VvL:ƭ,?s@Fưʍ\]b/s7c 62T1AsY%)^HIFē;N\$8fg@M@ "Lcr7Z^(,nUY؏~>bO'boz:ïUNd&ɂq>c=1 $( SɘERHQj >b*-zΌB%̛> ~̷=(sEDkEc TuX}׾:纷d,,CLgUYկE0&].-4Y&NqlBuFJ~?s#j$3ୱ}yIkqjZq*{p6En ]>0^.Z3O886 KrpG7tw{HɁC< }`M tM4w9iixuqKz>bIN#!k Y\%~cw?b]#9RO7ySJhF#U| LɩrؕF,.8D\]/6Ӄ݌3Yb2Ď 8S`0,ὂidgZUČk4 :zkL$--+$K'Gz<2!% #auEeN2s'9USg4Ϻ3$yo9upc}?D`b/Q2T*FL2\V. # fќVnDt,Q9&'˜ۛ[ +-hdf,٧fI&1*2WÍJ> 4iӲmU<g&K!6DNG$-2VtS#VD]=Dk@5 .>f)؉S! l|nU ޺ˡL7<&m9Nē8,V-t!0}:kR& U ҹUPz}JɩWPU.\#оƕ#f)(`ފ1al0hL vz]MπT MtK0Tm+J M D$HQ#:E+#La'BhuXP@c%SF>KhNYw140"` Q-&2 y3\_|"D\"x=/@;Ib?rɠj@^1;F( S47R9 Lj^gXV #Ml` -`P8bJGP!hB/A9&9L3P0t荟L,&vMOeyPUR<ޡ79x2rKoé6`ĺ < QqI%G%:t <̓HGtsr@ `4E9P# B-9]V}R0`**0S1x4\D~#RL$>*G41, >xMBqhI_Pbyv1K 86*/_&]=sJҍX:҂L:gսe+>tYR(?'DΉGdu`211YڥZs&.AA[X 4D.;" p"*b T2,:$sC#+7{|nK&p /:,9e=@txQ{Er2dp@$PdqL/Jy[^vhrn !$_?惘fJ"Z 9 SsBAHÍ&!C@h),)Tf̷3TdVfy#;L:E WSab =Mɼ Oޔ8rõY&l"# dq>!%|gef3ƏhC"Āf=pXtk.RP?ʼn{FpHwpPy/Ș Nb-ůAxVq(ʍYLv5^4lҘ2jtG`l|d@Rٵ"aNy)d@n#n]\~z0:5ZF; slfQI羡Czj2W O;&d>,ck"Fp~H}*9+L:EĽ&,SQ&]ƤMզ,U'ܷCodl@)br:]_Z{Rcނթ1E9dJ!gufdu|JlA !˗/k ?.qǻD˿Wiq`ɉG1锊C{S2P7g xOa ˬ^o}lΆYk3gΉY.,:0Irϓw;+xȗxŋgY̘ ۠9a^FRhz I5ܖUQ^eTOF690,ҭP< >?a*&FbiB]0UڣѰk /Dl+ǩPlr4~ܶ5јu:"wbR>^*=Ȱ8I:Te2 S̶fq̭-ރ'*M05+k܅Ҥa7G=GGU:0~0p|2&d2߹y S.=CK_+i;??h;?ȕfm-3^beJ ҳѸs.8o>nNz'5^3Mxm:.8V3dTZW;/Hr$L -fFb:]@MuqqT߰Qm}BK&\ޡ>rz0n_35 16?w-AEk4]A"  Wy\z#lS%ka0 $TP9,%$jG!y(!,-5qT"?8~P3{z;43G`E61N'+lэh] qvHHkS|oG9{AVoMJh@Vw+4TsE}@>)teeiXbMA֤~ml+??tĀ8eP}% ` 'УGn6)X|R' w b%A5?[t7mj`ctHuwqiWhHx'é*ɞpw$S=hWGn(U*dܦszU I5h &'Φ ׮K|hg%t* ={;C4L<O평%-ZVI1WW dG>(t:`a=ۤN"WMUK1$ZJoyi{a^PL7/`%ugH?PKaI׉ҕVa|}ܘthumn<`&P\2z$?{kYz~}T[-#p`&0$ɈI x`Mݜd$8@8p+&HBd2Hf7u}~}{{vV-g~|ַoL Xf=tfeB8`?JJSt|6i J_(i閐99h %d!x9'xhV~'Y/^Ao %KOMe9z^F Ff*!qp_r52Z_N&41S.VqمapP5bJ 1BjlDC $Q\Y$'Ӄ,}y BܡQNC8cig_$!  ARTt6'BUȪI7naPeR{8->9">tREF]hD7ͩveg7<yxN9[4G>)ggQCbjVU&)4Ɉ!@x,G>$K <:0J=z')ZaQV9VF*lzQ<`) $ =-de QRzsQ\0(89Oc+E!q+eJkél&);ap]>QEIkl.TsT$o͛R2w:ڣl<ka/~`+$kMg<~2]KTci.<";Gs'RIn{,DZXIVJ6˚N-퉥R\kQ>#P]Bs!N%&6JW6B`v{gטFV*A5 9Ȁ)R 5/`#b96qn_z#nM6PyWiwb"NțHIB&0/{hxĒLC󀴊Iz& g):qA#b5QVӚp=KD@ս:~\MfM|5$* pU_OYmT+ M׌pȩMaF<+L:%1[xgbA4_!Q)p H#ZĊ\ZUCfsXAJ㼘cfYwƱeH%# p]b&D3G&`=͇yZa젓(rjS8P`$ho>X.ؙt3p543Ĭ-&'!#@Ýpy#lu~@>xBu,0ߴ4@][0&]KɥIwBĜҘ9Կ[o\P(g GLM"@m;I-'чY\ p@LRݫܨlTnq⭴C$^™ -QZ锤j]\e"'YW2ef7۫i8Ķu!>T3PCXY!Fcl@UͥkF,#A &sFB219R:$r[F.6Nu*aձ=wqv.̌4%UP-^L_XG%%6cDtG;aA{'E =u(ZKvx/4yқN7 X-An(4SRWSI@ϧi3\|&-s\ v64U' W]')2[-RLr]caTOPBQog"BE;ceZ鵔@/\Jsw wkzR!orҼ dz,H\0@.{+Cww_,Y51"k2$\uu-ř04 $PMTsbd-A("X&q @Ľc2<.o:":~XUmT݊z L:^as+M{pRIȄPV lN_ E^l{Fdu4!g6sLKyڽ~ W-`"o:$h2A-Qw+ƾ̤R ycAjh7u#OOZFDM )`҉4jtT+C%& kSı5黸R\&s2B#Y2ӺS :Li=6u\)-=\Ovl/rԒFE^I,U4ILj[Hjm-f27[qC׳A<ݤ>ryiATF03g4h ui #,xTζNiig$o&<űaҽ8-3H6I09o~?w%'ͶZSL|+VK!jSH*^!T$אU cc1vtT^`Nh4CT jR ԡs?NBB =u׹6Rb%L: ?p]qՐicnz\mJucyVCEq%D6fw E]+ä;<>s:? ^$54Dbdn^j|& Dljɖ ! :M1f ׿ΝOMvvQ:~ ~0SD7M&P8!Q)*hltR3C{)5Ys&1J~0+PQ\LrZ}Pp䃄5rDWb^Λ#1+ %XAl+T@5\,QVq}1%1pˉHY_#ϼtGryt\YXi mE5 (&Ct!$ :Id:%zetڤnkb8ʻ=ÏAWIG9mAL)%I Zrbߕ7Ů"U׵Q?p2d5Op.l][V58R 0m,`BdQgCKv}ʐv* E4Kr`Þ@IDATAˋCWUJ,HL̘Zb8ձ%]< !q,q0&̴78V2]j -2O0~.G)z R ' ~DK Y`3 0n<=&'#i K%< A܂=mtAIމF C+oF7{ 2 NDnBψ$Bm`~҇ʌ*_rGZ GN%W3ܩ=FhJ0<Rj9WMxg-W2wx;ڗUt~v,br ٧;96ܩff-m4hKp9Vt$>c6dx 3 ͒| $SI)8zRftJ0TSliAQpz|W}-Y1V.-$ykH([ Ո/e[nZFG]Q.B~/ €ڃ;'m6'WI̮!a]KHI^EqB4\kMsu!c*n"|V|XׯΊ@m4T~`P*ݯBJCp`Ԡz FD_!&HYmr(RҝN^>o{nH0\x%zAz#1]=vm vDzK!*0XG=cL:x,OgKP>S6Z;p7:{P4GJ! ^ Bxɇt ey(YUymF\IDw &F {@W?9LFgY~ pM:~I+$/Ǥ;&]ʒ0dIg'//cM&= `5q<'StP yk bV `4H_߹W5YnOf(~]vsP_O5NuHw,CRbBFFN1JǤ'[71DzBvONNg4 ߄*pE2s֮X ddg7 즷Q=Ka>zI=zn4?pi 1/SEP4$:+nݼ_Ac8uo|ߔje'f 'If:i39~q2@D7b_VCt գbb܄MY<$d1q/~6]|??N[nH-R#1>uhk$wa,p%LæVbC, W«c5I˺cQ~ӕ쯌Cu:;/zEKtp{|@f.DmfĤcL73'](`G Vo8 uƦSCH Rc/.E%EpEQZR[LL: sDaӉu!Iۍ7Zѷ?IH.}|Ԁrf!#Z|ۥ| kYN7 hzGͯ}i(-\HU XUummP/w K-C2 b&6rq8|tӋ8bDkTkgT4@U5/mcI' B[Kv '<,4 }nxF)v,3f$ĹY7n۷!h>uhF3T'%.awhSP]/d^sI m ΑsMN.FzscٌYU%5ġJ~R_TuC;I &RA{:LQ|I0ä0{P ktQZ|?7 *=YRh l~ô2~I!}r0f$ ť5 IIJrJdg֧_bM%|˲GD0B@}/7?WL}0m 92[ Wc6˨&d@2%a#`$3I@CD̦{P)d /ڋr:yL ]$yyBcKb~4ݒ^g~g:G`Ѫ_ЀVH)\cUsv%/[p??{|:F$_3Pe+[DHic3+; XtdSYB~S?aLa`}aҡR &oMP }f1^BBBpHt%n\4ZH#Ɍdtu\. ]D(~yҦ 3_۝`A8^* kP YRaI $/UsTV䚾L<޽{#ymhl8%S'f:/o}gS\bD`N:hoꗘҹ2Q r6& 8iFp ;<+&YrWhU$Tu:Fg,9!^' ˽ A8;k_7&Y(#6 (`ũ@P  !H^9Bw v6z7!:PEAP}d0!&[X&JtB`)@UZ]ޔAe3 qRdĆ ѯ봁"\#2fV}xB9~dEF6npC3mJL34 quq(N}u^J#D\ (I);e.;za;\'Ì?-_V7lfeC6$;߻q|٥]^Љ! GrҪY1ŷuҸ|4$: X۔H~ U Vzڞ};T.N^\Rh#Ea0 Kq؍ ~"Ī蹈KɿT N=GL:(3(>GC8-{LV@jL\S"M*j|AIEzDvq4.p{'I6遰n,_M YOS|0Uw¥evN|2h4q~޽)BW/PZTaPAp'\.+ BjI=W*YQ|@V2=2 JNwxDM$NssSG˹SM9:ž'W&N]`4JD X &2@-W2lISL8oR#,A#:?|"~[]lT@f"(\9WWQӈiC-n[yހD88wxv@g`#KӘ Lr3 xWlC?}'ԃpd'I Ac~>qk"Yɿ#,4j,rbJtFiFTGG(u)!0+ ,0S4{m<31k 0(:o"\¥~qbrKQ:8;q|^f"fU 9~#ƸOM--]#:. o?D1j(phZs㣞-MJ/ - ^tOG`<=% L1%;xYR¤KZ¤e-J p1Dh2ӽyԴLKQGղm} ҝG@Ks4TQG~\33;Wwv!Y/)IigYk?nMP(`y]׿٣q kBA7_6fd2nΧ/d  L-R/Ǯ7%s 6jPCVS1Ti߬+k6Aw~C\#2D=?ں^6[秳m Ѣ|N&`:%=S4 dk4^&Zt11- 0aҡgTh!Z<8unrY8Sw"bmNB:Fb~q8@jc֭_9}+~-쮤ˁ3C&LU1|lyNUZTB)]&5 b3lGEr,-Ҍ)R%7UmWc_5fCP1pp0Cj.(j1G9sYjveQ~?7q(/okgE>99cA+YtAG.{h=#іqRwkfW2dm%nIFU(9 IKG zVvա6>6j"-&?H'&HX' |K| 8$,G!g$L^X~(koޤ!,! y g 06.&N:L:4dqK1 +D͚/ֳPc,W#8T7}FMW5NeNkK&T!\nH@*ϛGm&̴IAdDKmcR=lp:,c v|KzL&sCb3Ѻ\)&gh *\OEF tגIBwH; ihVqd4@ZrT$E*eU[}줮?")&V^ n^ Λ:^ &&[5T@YGy!frvms:lEF$ ?|AYMZ'Ga7/o{AIj2qL;ŚF=&#Uy\.}IKng dFJ쩬a:_гs s;Z4Ӹ:[Xx/M#Лi){x#)>8Sdb,xJ_#`{%'MaJ_aZch^٢T|kW\VA8+x5>^@g33OʄXXԄz}G2[AVG:#TI9y]/QZmN:Ĥ\⍡lkb0IPzA&bc*MN#Eku} ]̧{ 6:Y:š<n,lewaGzܕc՜0ŕsҀT59!rSffQ1^NegT/ZJP%rѯEj7B C-"HR]\=m aڸHBYKd$";ZOo"׺hR4'd`"< of&_J1fE6Lw&:Jo,2GsKTLRMv?+U@DnV4xq.oL'f3h.>dM}uqU <|oo~Co7np+k(7N~xͽ٣CY>ϘI< ,xCEQԘtrK`M&ЛtooM7H$uƛ@; 7glOՙY Sz[pIL {"u)]a-_];ZՂ[p|Z#ZaEC W(^m"6&[q4?C"+^aAs`E@/4lJ I= DaɫxjtR5^HFmuQXP;ˊ %i4].26C/@,&܏LY0jSS6skkKPP? jyKO!"br ]D}ш?XNyNJk56^&+W9ehYFA+S7`DsRisya(ʩ&i `yeF! gV@P~) %1Iñ(Jbq,ޭH@piU5 W@Bgi==DOI'Me u FH5UYTT7@oB"?# _u7o kVB<+V'J6ɓb|he_U6q1_<(Cs( ű6Q׉z03xaJfdp pI)h4jbzm A'14gXEI$s(cG["Xw|.2#R\L6xQR\Rh{,vN?z)sqKG?KRv* w%ntC.sĉVVȰ~i}yQ:yKt &7X$}-w)tYl#Y7­lqb-}՚c9G Â>1TEn:>b_c* S0hM?'}< #x'Ar ,NAy`rP"7L݊Uikd?L (2xxt3J\HBEHpo?M׈3 K|1i'0z1TouQ`8TMN¯iιvYb3e垣i){s1z?I!]v@vBE'XHZbV<)ci=MwJRxV/(T Nrk>/>Pq'+|H{Qsch^0&~Ĺ8b}9&ݚzڵW#sl qP$EVʼ `qSo[$,Bmv=gcު4i{! Pn2bBq51<:fD0mZ^U D~Agm؇9Ԓ, S2Vfe{8f^į C6xNZ rL: HLG;T>1axj)57TYҿwunFltTW@H;xC7hYvƜ4˿)&Y& 0tGpB]vkfDL@+>8;~W~ Wy&f=͞tmay"WҌ@ egj- ܺM B_D,]Pf95.pn/rnlFM .(1iS2`Isע5 b,V$ R 8wËXDXhbQ[Qq)k$=1>\N5IEMrҞ?qq!_:V>>nFQ1*S4,->x O*a?o<0#Y/l%Iu rtNɒ pgp{{D=0rzx?ޢ>p7n1ʁ#§ #SsQIVSmFt;Q}! 8IFs&cRNݜ`g ❝!(6>M5@*AÑXR]>sL:p$\1[q‘` th([ᖄ56 㯒kHDIey\I]EN'ċjG~%!`ցrG \e Z?@|nt x拯xӳ9k|Wx4G'Y Y5doOy- v4'._w͚OQJ4 +Xނ%f͈?Zx\2k7o_Эc tookM§-؍l0axރw~_bC}|9Da>Q-u:=J*+n CxOpB3)cĜF"*Y)BUl+zC}Bjސ~U0bA^Xl88KgkR 4nIBPvԆEtD>/=1z̄PǘiK@^ԑU<>mHu䔚{1}"E:9B_dKEO'xۡJ5!jBxNdEoKB3V 21Sj ~g,1wL2n.A+&{vG3~tQVϨÌKBTH2HShB[3E(",(J-3"4ǹ8!r $Ww&ak>8cHk(`6j=H,R֣x\k8erAz,3B>Ԗz=B8h2ZjXd5à|cR BC@L3+dTa!<lj=;i(Q53{Q1ƌco #!#Oþl 0ZILFM-˄JSą51&3)S&-]Ql0 f0;IZ7;+d,- 椽\3AGxBK_'.彁d;&1$0LW>i`7/S<"G$w7欄w_Eс T^ $ERX\QT;p*gDwv6#hAL}q.;tI.ŅڥfeE| dO^y{`U +иA4~7`kot$){baOc+6Ɋ I'.n(_7""t30XWK8CxVnce0P%1|pkZn<LWO(kDE*`I`)#S-O(_e%fN\5kZy2!PLIIHbN2Zeus64sm},3*&V=$/5w2Uc0 !7Umj3h“7C*L)ts`koU%.)U#ZFQ*,Hح./;@@w %QK̰([ =S ;L:h QJ9ϰ(NN(ć?I'Eя{*Juy8LmCB4¨!B{lnd @L3M^qKD֌nqVzƟzoTL}˯~Hq,ݙHwtR#$)APH]HDf?10Pe4p*ܭcuJJ"2Xui9uqrU%puCL:q cƱ`ĤzK#C\8Q!&4NN\_tyt" !\ #1#Q/ N u,`+LR0$TU}ŤswIhHFr(ܬO0&;[EnEԈO0{ H]MK%@.#Q1|T6d/@=Ǟz>{4I4^P\)$owoJy?}MKNoB/|Q\KֈTggeg?NW5DhDz Idt{꫿mp-،sЫӯo=Qg*VhL:T~cOw߄,T1zQtQ}VjED.A >ttK|D}-m fw:֓;w^G qN>3a82R(V%& ߽uߋK! X*k^8+q9G$'tfl,c2kL'G|8>?\_{mywz N! w۹>mF$a?8ѲKS}bR)'#T-^ _D>k(^/e+1Ad1+~6f*-V IK @GLH:!t&E'tp r,cB=K޼8 'q+Dk dfH|%WȬk?b]n  \\{LoԶ\וY x &?$ K\$g{ z $r6!<\zzYDDH&@?~O"3 x/| {V )u[I _ϴMD8FchNVi6ࠍu|r!֧C:|ȊMba}k1#5vԵ(Z/0؈IqZ+h ?OɃYܡ "tC!5kbtyb}|\­WpXL"ǂug2"f\Y%>~X Lj7A/.5?2bh+˧mBQ/g`kL:1Kg}$tz_@_oAΝ;^AH &q7,?;o:x2ȋ(ڱ嫿5tn@M *8K!!ܳ: 2ȱ1"qJwU&>C̀ 26Lz -+>ïMRg 8''P8w/ 7׀7tImj:0H8Avdp8LN~W^g޾JW j89=1/`&H=@ē$PB%&`Ju)DRZ1VLSZ}DNq &艓w> zc›;NIEA5M7SI9+qIq 8rKY{:KE>ai IDRn,W-γ!O 9JDv[aP/Yr{)jh>6t%.â,_Ndel4s|r:;SxtgYs +^^oowNq`boBet  ?[yKC3FpdaҡS@,Zy\"-ؓ sqǦN3/ILrSAB#PRR82kB7i:ĩ nUxX63( bR8EǤ+rA[NEdi-,˛:J%>0ʠ* մd*qΘ wQvߡ{.*Q8>uO/r/nJ埥?_dVHz2` ȹ$* cH#0يs@lD?+Î۔ZEMZX<(HnuILWK)x2AI.0} %o2D! DCѣ{H-orKe%)9'ıҽr) tY'!9LX2>ċbBDT/nR=ly,ӳ_ 5 |H!dHԕ4)_Lb,1*;j}0PR%,h$%x!,-䈒,$4'r55R.nZ{5=&ݥj2L:ԻK?zI~` 'Q") E$äjG1 @IDAT}?m=:}CE s@4Rhf:&K hgż:wۡqW:?LGP/K\e+^,>6O✺$b6n&i)lҎ*Q5;kw?&~77Q/^JзUzDeԱC;a4]{GV{42HG]6[tl/ &a}R6WDH{.tQV΢4' f::>?X gԣXV8 <ܤN&vf1њ7~wGH_râ+84$8'dzV0aB%;緶 ;;TդϽ_}nt7Tixڋ8HOiyX new2b 'u(>c.j&X''ׇ{JHh)?B6ZHpytPE i~M$&S Glex|F-& VLVZVV`hVS?lSŷZ֢ `uӍ!ygD9.sNIL^SPjwh k}C엌yWx,=TWe ]~d~Xh͡?~[uU_;!5yړRZ=wyp rYA'6=t8{”y+ fcPCYv6_͋Ƥ{IjE @O6Z.N'ɧ1dBۇU)[}m㊤ )q)2do}Ã_;LЕWH5/FvL8_襀'%$᫏e"XƸUQ.L.fMjj'Ǥ[e¨^B򷀠U!ټEެ+ƚPi]X@뿎6xjuXDx"n+f=A@1̬IW ZQ Ea@LbI7޼G5Aa$̛Ǔp4^O6ń|bioX5U5&hƤ [9x)"a9^O{_MÛ1!c4v,kw{Ǔkb1$[FnGsäf;PiNf3G]:gHgf#6ʑ NmI=}~I? LJJBbLRf9Q'K@Q1&3Gܟ3 aN]KF"hn- G? Ȟ]BH 2C k.bĹB 4K/O,$BPnڗ1jwXIoL,˧̆"tI ^F͜uIE;"mU%ZVRe!`?殀bDj`e# && mWx7ǟ&bf }fE7E+S^wM7Ae0OnR- a.!́뙏UgR'%ofdPjU6|5g!y4nQ&OTocBu27U7Ƅ9Eu˔L8O49b]lVW eU]Obat|: deӟq'k(C>ThX?Zyb cwd1 &ȡ)*:ɮXWk?`C^*a\C).z,ȃ YAyib%'Hz7VR%J0A8vfi :kGFm |zSމNJ5GV1' Fa$7j:UqvF#%"c g歓@ M2&^8tA5(i%zPUga+*5 R W YqrzeV]FkHv_K:Ό}OШ*9*®WRu)\E>Lq36fon97o\A#[.ѐ?Q̔jeЋ7YUzVK-eyyCle^Ō5/l@3uש.p8Pf2ohRo1:Y7:6UXrmU$ŨLH!g88ͣC=H-1zq~lzLʝxuL/C,PbdUU_hE 8 Tۨ 4dAF52 ̍b0&yfb<-&;%[dK GCT*ϱJvJLT;i3%#@ADV1ĕ"6k5qx&A6bjQNwcxt}Ia z(r$˾ 3$;%y1sI\ޔ +=$anu#/:$Yov3һw2}U'3p UxLzs.K: PBA#,1iFc ˸&b9~kkHw0Ofm`x"q0iLd\[ۋ߾GOCRp04fWX.HHۚ9c2l $j "ւr#<;j^\)NG00C+w eWeX{s`Xop( ^y, Lب¦ oO/8ػ`$)RY@ԢudV^Tz t^RP,|2ꏌg( 1.Rx 'W2!!d ʑKWpЙ7nx~n/Ii_#cMynwR YB61NS,.r&" )TlMx~8xsƩu.7^DCƯc3փgI t\u%cI*{to4_ aI''0D>^~Gt`l (ZƗd2$ݽFʠ+I"% s{AMSטngL7C`E ;O5G@p QIhLa&F9u$qOѶ-GdCRDŽ{K9^ߵJR=?7Cb ')!k)2#eۣe0 cL3G8tV{+ '҄TH%7bc NT8[6ְQwY^y^Qx\L$nFIɯ|= zd k[I[#WpH+ E}J8C NS-ZT"(}:XpA,R̓ws~gGOhf!@"%ȋC8IPPH-V.ECAgY<i,1N;2bX ˟N55< &~ ֵ,Zp4Z[#/i 20>D85VQ=jm^AvLMʦP.PHD&W(DIb&k)V!q)* ֒͒$FtSޠIr,LB'&ҀC1Lǫy&"ŠE حTMT|&h =`f ͘*#K(ltJR?=@ q,G f$eGj=GQY8gtn"AO&VNw O!5w_unX^&] &'Ө,{a~sϦ_۴]#Bd`UhT˫,S ًߤbOxJ=G<{٧>083Z*&HyuGZD`GYCS8aAYҧ dJTK*>3T>V9ªk*M]٭\Yqfھ,10va TQhnL5&u$6rgw#?_?&P3Ɛ_b|~N,]f.@uXndŕ5",amoʲLp{9zoL`8_ )! &4Y=L:tRHWsp7VԍEHEc9ad5ZťI2hձtke zbd'ʊKR T.ኃ*V؏I!9`Hwŵ ̚&^aV=|r%"[{]~獇1ȃX99XJ˴=ځ}Jjvt^# $ׁX'| n%ND19`k(qs~:]}y)I5+ [P\1r01hTZQ+ xZ9|m[ǭxIA"@!n=CJ6jপw-"p"C;#}²ƕ>&]B .6-8UBHmfg`b-Ee~=d1Ѡb,'+>N]37b1N'.r1кiXl7dZ!2ěͦ. +v1u8sS|T6LlK=/Yg:FMtHNc&?uE2s'+;J]\^eH鋣] õ|eBCr<^<2<|b&E#KWJi߼=dC;j*80%UIY/rWrΟtȈ, ,ҋ`ȢLY0a9>jt((ZӦ¤[dTh\H%,$tWeIGk0MZ. p:U5E ENE2MWB"͢oʪ@QPgP="|MlnVv~Ĉ^4ͪH{O2 zA_ N"8}QݥrIDÿ<Ӓob29Na/gmp"BxMPVؤBbkBq$kۦ.+[#;S &Z"mELXrrCyaҩy6]Xx BSd4 ظQR_H,,\5Wȷ6$fy{đZqHdٙG N4@{*t, akL:T0\/h"),L<{IL2^z:gK|Ʃ'?:rn9'WL͋%~Vz=k~h}L:"e'͉ýQ:j>ŌimgJg_ҥL4;g7е=%`Y.cηTr%1b XIqd{G@I'_&!՜3v^vpD?ä+}ExbbEI|v.*o|Cxpb Q~;+Q:7t,5)F]OKtiɍe$wAZӛLǷn?/|?g?y:9ooucCL:&Miiɐ x6@`<3W[D i EwwׇS=,3g32Qq `O#T(e +bD6'#!3͉gHLx i)X/c:xƍgg9җDD_4+/_kk[#C07; Y4  IWIKV*p/'MMn^~`¦&Z$"lIf  1ci$l)DO1]w\TY?ğby;Uoo.G^J@ Rۄpn!ζt"drYHIk2ϒ0΍H$,^{e}6׶S~w5{ׇC[ۚkB^w*W $o#*ii"S'R\do &h=L)40vw_1|#k/ЭׯoIaD0٩p&9R/!be@yDhV.0ʘDI?>W>Ho~km?ؐAxФu"{6prn(/.$ 3.+J \l03ǽ <^ gbǒ ezr$+LbȀI79kL۷ߺ3BK}$sޕ+Ws+eQ#¬{C2l: J52$S k9ņGN6v[b%]=1Am™c"@y&0RoWZ\푽NOf"+Lr\8YkԬ sgC3, xO]ͿȤhsԛ0qJb$ӑ5:qڄo2[ZKRI`o00}P698&_l{pwyxZ K؎$htȻS$QHOccej766W{/\}ç`џ\~cd8 ah\(*hlZJѵq-w].=mE0`M +Lkd3ra ˻{WXy2B,@4rRO0z<3?L:uNxڄ~uG!{% 8u5c @Aq"kn׆dg풣5]bmln{ uLb,p٬MH ~B16DIO#d|%QaUe2nR /ęVs7؀h`D02c*6Y3:\r}Nڽnp E/e9LQLۏNgz+-I.ff9$+Mf:b>q:' RA`BXƠ&wNrY} +轅}z%IKcOOK%JL1T[tMPCQ p;#˘MʀGdSA߾D uc^wM7d+I406¥ӒeuHUxO<7Z0Wq%.֢|GN $*͂(XWY)O2%8S*kSJEu=+ѕD@DHDJKȦ/Kx~,fxI`p5br+M5DHnD%x ^o*GI|aZ/F܂Pxm+}#uW [bCD 3_t$M%GދHHC:gؑ38"sULSp0Amc7d'7Ř($`"*U:`|)%y iŦr"qvGtLKl9Ḇɥf[o|=.} BbD<6oۜK;Q䦃4,#&]]-j|q vnLa2"5Q"!>H`?5ئ=NE׆$uʼՊ{#W1Q0!88UK*Q qӸ txVVrGZښ$ʊ+&W|doTcz?Q0P=qB'S!ORƔ"_3)ilI+}Z@zu{ŧ D~Tq3,,m A5iPApn(_= )ò&jGL:7֗M+$QY Nv!' wLrWBрOAP0PZ}6@OW9lXL}*Hpu5o$a͚+^EnG_<2"5xJc88ΌاK7p#sv_TQJevu_jlJ 8 }y {J!TzP1?ImozK0017up}|Q ,?^rb} q`td[#B@ͭg^3-230)j'2V 2abHHH0T2۬KH)D)C bKbЍfՇKH&X;_pp2&u02M_vzw"F1".wܵtY] |(JƍM\)[ 6ٞǤ59Qv-)`NFur=Ի:$F5hA L:($8:kWA?n3  ̰K^U!v_ª^&llQ7PN=Մ`dAXei;Eʔ8'W5]qIYRf:G¤rۑad0h<;uM{ʂo,Q4Z @ ,/W75+ژJ[y+OEXx%9x> . }r0\-.8&SAJ0 *OǞM"dѩ &30\Ou}NsԷ ' :6)ALTUS57%*sIWd* "u˗Eo0} 1 '88p?q3aҁmulfUU)f,pF)'.p3$\Ĥ Ui]WU6h|P-ƈXW?Tw`7L:,MP U?Mx|Z8%p'(P>P滌! j?׈#^n97Auy&r6&s]DQ$=ںwvTXb%^d<EWңkL:AʇA%&pkQR>l1İ Gwi RPWq+hT2Է`&b&ej]ں6 !.n97Io"pSŰ0yzm9Ƥc&ac1]hC|c4dbr\ H e);m"~iOu5qsհS_=[?jPߡ3M@P}-A:)96kzY)xv`Ah2"crJSLɛ7H)BU}q"#~tPtM41+$!N2ߟM!H aF@] J81&4= ;џٿs6TS<Aׯۂ=|` BWTX:}$FP<ЄzT$cOnVmO~*9Vw;vϩ:"~ ILQ,fX1 "LnXȇu>UPӰ2.FT"zɩ \/C]Qqt0̔=5f[[!iG|/Z+w- JӈR%M"Pb/Q]_Y>q=GŤ,$(p?( ̿`߃!"jL2AnU0& Zb{iNWZ xk) KGКSkq+]wh!D&ICI@j*bYܱL"+`GWq}6\"PeXccR֮P 5NvNM V; ooG!ע_]ߙLQ,y`"D0*$3usMԔ\.'z;\%b"++1ĥtN+#! ;lpl97x"&S842|?`\`F%t-)̼F-`HBkD=}% 7_DXҽY%<, #Kc- 1 I"N/J/T2Hv'Wbb=L:E?ɥU.u뛄4xAdL q;7ZkhI>ǫ6FDL8Wl"jgO>\Nн aGeD9 ,eMgh 8%1%ަeם?3.epd™hr:VLP}Pn|q&Wn,**1N١V{Tc0^c#@{1b ~ KE2ʆ4%LR%T)YwY&%|`m%Yw&a*T+@@IDAT,)M# ]"&̢0 rŐtS숔R<$b޾HZ *zb!#q~ȩ%[mP+7)C{+AuFIG tj]'0*"Н{!\ЪA ULX)A^Cch/Ġh1ڋ3B d$W V+cFAhräSgĖV<ɈO[ iW$r}cBTTntwHOMO>ah"i,Tb3ZWqɉ p0wPP*ڇEI7 \a9TvblVz|!1p"MP6C=eAkkfOI;?I3_s)"C'N{??X\'OԐWnl-?_qw| .a9~_VM<\'j~T,aIe/@TMY;0 ͏̈҅cKRIGYSlE= j*Fjl`>DŽG@h   &؂e-C%n{^7¤FZ ;Y{PstTHi3~Wth+;7s['ଧ <æw_|zAR| ##R[$ pqb"lNU/!JҐO)C8 t #\qd%zp-ӤZܦ`\,cK%ZMJs!Z|UcBQWĤ[*%\}3-G iv)%A,$p߼M(óL}A ??Fۯ~r EKEzFHz(K+DR"&uCd3~kcn3LƦN֜Y'Ѣ:90.k}Bw@̀At"8XfQDՂ,p\!|H &|zmO3s(Bk$c֥r(Q™))0Hlt $4NA_6G0Z2 #5ۊNd}WkGF#"ϊ&艳_~LPZ?%BF_ku e+'-VTR,KY, @SbVdtͬ ۦ,u%pD+[M`>XgAdH9?(gWm2#=00'j݄ >tQD<(B0x;, ɼ#V$굽M$iEiS ^6r l7^\!0,֐vv;wl\x8jwa.U?ztјu)HYP!`gE( s.-衮%$)%9 a1,::xFP;ɨaGh %&hGP-B!Z FPD&#p(= AߜP@L'& Ϣicd)xEZ  ]k`L\$Ma)˲v ybhnC1c<KM1Tśbf@SY slܹ{ ;( ϲXYM&z>v%5BvmH ZK"6A W^x7eg18q+Y3W(E= ^\**ZR#cKƕD!d 3F z'iH>P-2EGaYKy}&t 7f y> y[,~F˵.PVSf -wIXq$(ʡ f^Kq @!xΛ+;-XiRbd6%2KN,X&],y; EeHEe#M-Æ&KRRuWcC8t`;S\U7=O#뢊[ ]UmA{L0P68Fjg:x'Y27 f%%XN1FGMcU~i_5np{I*R@ڐ= )Eo̮QNk1g (7վt`gO0XgLQ^(]D(LG`#M3֓sxVjv}Mr)ځ"YXrk pV7k'uHhoo@ fI/1yO\u۩'or 4l\l 0ri4!D,Mbv G` Si8Gc+~RwH'>'Z皀vd7ꩴ:L8_0N35͒Ew<إ>k[$,lcEW X/ElN[Ot)Gs۬d wK^q-6: S3<9tIFCPP$*ml'nB!9fKyVaN|Φ? edp6cvdW!\IN-e@ڑijՀB7L=qҥ6s.  H%LE',߼=Yt}fOc DЩjy "IS@T8j2! ,#kj:p=oM AlNgp@O0X3`c'Z,E\ Zᶌ5Y{K' a-n9p0Ͻ(+b?.qLdl{R& ݳSeGGn9&]ϲ&9< ƕp䨎UäC8$\ ]i̤H#DB.VjRw;"n8V@Y? 0ZP;>5wΓKzQ5\#WqѼft~c#¤OE~19p"68S):~q*S$p[)rujy2:Tv=}&ݑ;g&P=` ['OONn9%K@HPҌe3 !CU\nc@6FUzj˶வ6'RLfʶ!5zƹ$(ϠD_Ȅb(n1qeNA%ؔf/(c%:ǪzT;UQ)V3ȭuvoD]CF8.)A t^},Y6ҡZ6C#vig7WBY j Ӵ:gG$ĥ$tpi{mvؼaAfa=;dZ$P !_ǒJKבU)vʷmUC+Xjm$ !*T&B=qD@_&å:e g7:JS)+S$beBd(U^@IJVߩ=c~{pӖ0[g$ʈEhFԊkbAE-o Ph߹ "&w3;k"V{ ,[)za`Ĥi'=aoZ0IVLd;[|4bzY\Ж%fOZ|~XD4U @ k3)ҩ9?mRLVz5mNs 7in}jyctpGrW6^#s-"x(sy?MDuηemŷ&#+UYu|4=D"ÉN.I`Vptt>P c^&#T]~hL:v0~ОlU\2)VA(ƴz fI!ێ6k+Bk,`o(I"v cw/DdIA.s#j2~_͍β?0#|#:^bxiɀ.ڦX hYlYRdU)E g pWdnH{tZpesT.IYq vAs Lq/EjuQm6Ǜx_OrOSzJI^OZ Ʊ^!WUէnb[Qfr(#`y`)L!> XlR#X]4Hn[Z@~P4=' '&NV)KJ7'Ӥ5Xa1-E.hC(1Zb b+< DԽg?FV~9Z²6떊AN~=<ԋH֠Į9ݭ SXx7Ι}$,+[tz,(+>) $ ^j8dy#/`&L jfSN6[=MI(!ZIMVR䯏U*Rx8@@C.&&ޥx]0ŝ ~1($՜iLW&xz /Z q6qHjj44Dz=ջt g@Y/-K<;sY$C[Ifj(GRL'9B4`MnfG[I^<ÛpZIWHW4Up-:1 1!I.!=]~p"f|ڵnvouŠCY-܉wL: 1zH0XOEub(qcbx9%h0%֥ExwUuEU;>w 3w#GFaxS]߂xV;C{fy:L:<*L:^(Hxu݊ъ!NihXXc#uGs`ĕv}wGW6"7 %H I221NzBzoäs H0y$Ϻ+C˷nKv'I o%<^_Ş+HP{9N bp[wK,nl>D*dye24i&h=rV2ux|Ȯek-V !&sÐh`,+0w nme 8^j=PpwՏ.7GoNڡG?ɼ|2S,Z M-dX_%ά Q0JphPɷ߳I]Fc ~Gj F) hSFT+뷿}uI HLI3u6'D|Ǹ b7{_KPlzd39;v -)/,GId# FmCA"6o1>ݍ(f_(UOZ˸;zZ>Y/Zm"Hg?`GBC,Έʎd J-ݞ΢&La++kw"V&(HwWb7=ZL:q)ZI&pke0`aΚ LlNBF&?UD*=al.DCUߍHI!,'$LPAYcWdȋ@VV0Y'g)W*e"&1'= ePmI唩>1#WjGmKg$aD52nu ,΄q"0{[:9y vR׿Fj"tLrrbVt^HLP 1`ұ{a)2W te˽ܑkﰅQFB j ^%hFE`/6f%0 tutmvYj~f<&Z6-a]%Hv53ɜ*iE#,[=XTjz93h+WX0ժN|Oi4@5Ld+ G18`[нsu6Z] D9`&]0nU&]Y-ˍcٌJD q2`8b^sR'45 HSf*ƨz4æ x8&[.Vay M^ 3\h &t3,*QFTI60*HL}aM2 1頞&$)-98"M^M^x+.{1D}~z)Zcsf9S6G;6,.$ͯ@hcTIMlJE فK^G&Īp^ O%9 _7S}shMfI*P%6bW:vI6}WǙeD$ YAOcґN fy/©j7!ōR6)bXaFȇ+!Kn/b0@&xrn*0dHQiY{܋I)ˍ |u`S4dROy(Ut̽#9YGA10FONϫ?9O0ĕnsҸrb~?/?;[}+&p` 851$c#{"e4&Eu]a_1aσJAzIWSn?;#n1ׯ? t6nw,&Wu®Pmk1ѨpⳟlҜe vk9Ls$5 1N'ͼy'=Nǧ 8ZGDX5`=ۇFPl#*1Yl=f̋Vn;fDp,8i4R'ɴpI?sY,g| Fe֍(MI b,*o_җ? l4Iab>8#P٠'1H7>!2C7ko3 A]vRyd)-fR3fn~5k}uRNZ-vYS;OAݐǸHm3eFc {1Y/&<2N$o.e$sUMjK?}2$/&kjl;.7 F8}$w sRfasM̔T! U4kPntB:3L:ACk8ힴ+,oi]ٺ&ly۟u"5gΡNᅅ:nEЌYdGO~D1[|z ( ay@ܺwvv{Oy@]fމBTycA2bd*e(|C,YElGt.o22o!7J@x[䶋nށfY ڰWf1lQIin 1X:[[ AMF6;+ %CU<"L:5!gs(oNj`(5Vl >߹ 1;4K¦~+n9640鴢MS!LH!3GlBе5B{X_/N&NGJO H[Dje^h8Pt2&::6_&vQo IOKr%O?$n|Fpj׮]#%HLt(ɿNg}}i;#M¤.yh>N; a}E@>3v<&_#Jp Ae7ڔUEcA)S֊7rWsѕ¤c}4dl(/ VK^^k>g]mLkaqDԆbXA@"|4'C8'QqL: uiz"?3ͺXD*Q6@(u$Z8t/1]WII,|:jt7J*3]rsˆQ})Lㆵvdx0uQL:jʡx_>nCKXtQ]Q^$Z6(W^e0tyČ iCí ؋fe!ZnbFa6..3 H*!d"CbUp:!t5o,7πt=4"OI3ҽNvZ ?NeBh@OÐV ^ #9[;&]RfF9L:txuN5wg3DfLrXמ."eE*ZgUnIV@3jF$%L=^ƍ yO?bDuH?]n̾!`eB&8<4wgeCdA)(@2t;BBdȑ"wG4( {Iu(L'XA(1BJtY p+WkTEfM8IS*#}tkM(hԼ9_1; ~;rVegMC؎> EiYo+s!YP@l5n\IFY'DE.Zg K_^*qkSG(L:4)$ >| A4\a"/WX9f1 > HG-)٧IGy16+_MƵ8+ . 9)0 7.k] S(5EQiӐ<VXW\{-kA<.ϟuO.4ik88 ^$O$r-sä͌^}kr5I,H>XF<gMT??eD3}z/Ay-$3r4ZQ-`Qr 4vY-Xՙxb?˓#䥰;GT4MA)؆3j!uY{p/ioU﫾^_a,(;Z}9b_UX>Ƨ(J+32VZ_,gHuX WS:\4_YIT~Ͳ\Bˎ7,uQ.nqC94MN.ԭzwӋ@O;?9$]R j3*im<>fC?)+?Oۡϛ5v{#dl9p=Ly~slP!#D'5dH tzt\qE8EѝDbۧ<6Q]0ͻP>ZYHlpN?:L: )Y*z ZU0cx4vU"qUhѣD7A #$f.GuNJ:e;"<:VAyA0XRjzΫ31e)SBX @)mQamu/O#[ݽ/w$>#^n(@>  $JuT{vm\]V7Yf}\%i>= l4e*e1D0J:>6p+YڡZS M(Eǒ8Wԟw&Fժ%7b1#L:D JQ &5ޠxo]d_9Zv-7H9"9SP*Ieċo>X";AS=h;p@[5&h]>I~3\:;`ҐsSm>]|o{luHABi @X$ &teIC¤CLբW&Il}".+m]\ո\@bfs'MWCǾHJ&[eQiz pIǰ_aҥLl0b1P:BX w^?+o9$qgJZ0PiH9򴋱9 b$s!&Y^ r@IR+Om yr:X8"U#&Vgh JS*](-RbSH9&f Ң /FؠN[=Pֆ P%ґuLgcR5QĢq^zߗSDD*raa+JMGJPC'pAvWzj^3.<*Zorih ;"RYc*@֌͝U dLG\()R1VT^,j7(!gI'b^ruP|[5nvݭFV7TIIB4Y)Q6a @u#aSpW`ρ%Awgsp?sPtBDX5 ^)%@ n=6Ϊ1|ݚ1CؼK/Ya>t1цZu#:VaM|Ƥ SVG*6uasǕTTX,C,f/><r O5_}WR\kL ib6Gڢn n>L@])ϵjF"ƭNq }5{c~ZA2&c !0b.)0~>)hHQ661Ao߾\],@( 1\3+wu^L:{ I&?&&Pd 5LDDyUe2}0Zpf^äSN%_}`@!f a '@kmooɨ4j\4uz&x@IDAT޻Z]y~=sNݻ}aIMd19b "/a J/$8X!r(P @6 d`@!&ٷ1g[]^U^9s1c} Nd)9E{t+JT7-a8PorV@?H|p nWJD7 8Y ƚZb ӝlll43c0s  'өnK/jg`(=ʕ6^k.q1Hk#B{/zc G6AKhE 븬:w լvwu2QSXEMT^ʙS{y72ز1#n` q_^;|r{2˛yLY|> W.{6&9x%pGIE"BFœATۚc4L::W8gp,DUrtȩ];V'SdFe/zvm*.[š%9JkZ&z)*?Vq-*[afF A0 ZH ֤4k 7B%FydnP A +9i\cN:"(HU&^=4(xa$-R|L"JHqsD7'X[(D嶰( 8^ AzGә⯅ EH)zA8Їhn8unl0*9<SP4gpLJ$נJ7׸ ÙvRZ))JD9  nC7}=OX2VK ;Sa3.1 Gf7za6e;#Vڜ&%AyO{aʨI" Pa6ȉE1ĝ-6] DvC! *uCA.W{[t;1jKį_+zP^a^H0U3z)nv z=D ܤ۽5": BR?]\3f31i UDY~ŗ|pSm'(`F|>:3v"LwM:g6T W sǏI{ ۬`NP(R+eo6ꄘ';Ys>auLu͊@i80鰳2EoRm<(0 4 ;8Kl2`>:͈ ˡдFT;{:8l>޾eVflէb҉ht CiJQc9H$Wb2 V$c;ŧ 0C>pUM(j A?RH  *u]Y(6@oD[1EL:' >%fȓ#ŤSJ#Fv{Nt=nLoB;g+NjM'Y l%p zSzo1|"KS g_^(;<®0i5@.kg{9& _fjH8So|㛉r&}+w >*5xh"&]XJ<cTmC75Ra0=w 3FrV_.wI8/yGzV;+MmTDgI ]k3dhca]&-˝/BL_v3WCo,_W3 ldp`AQia+K53h |S1sy.驰6:O_EPbo$i>΄K8A`ҭF͸ݩޭU㝝) cI)-diBLא x+0ҏcO#$Spb|"Xڟ_~K+cmİ\0L|IW3=i?50qQ hu#Ĥ ϐ;c(:Jk+T9gnSNa5I$9IxҾ ј5*]V&ޠMvnoʀp٥&u5I+j՜6IЭ@(x@) LAP[W3ۨ=WΒ'L|"eLjm0鴭DXM Bi1DfRBI W 'iڐ_ڷ_37YT*PU :30ajW*"!Yh!,٩e$)rتJH0*?%Lڀ{"j^n ELDYI@lĀjdp>_̦y9\1`ί]?@Vgit}0`74|sU^տX}{_Er݅Q~oxelaJ STKvA|,gLl6 )OiH8Gkc]|:sp;M *ʜ1ĵ0w &* :- w 2&]%@[t>tN1[Vvۍ;kP Ks@wDhbR!'~H5<6!K#r~IyPtYdh W0ܓ;6ـfF+043^{$&ܮ4.ؚ] äcFA3:Bte.,E&C<10UV- `j "ܛ!ճ dj(3!g5fȱ c(yD\nPs-L^b.ׯ?Zy2tN &Mw\D1NcBr*N %{&ԩ" tK {,.WZ:m7NbP&=r BIwA'0_c`ҡ0qƤYlrGBFuum` W붰mʑäc~&3T`]Ť#18ԧLˆqiL}le LmXXGO vLBN6\iO.&+btdX`}IڡCRqpVgIEՄ&Ahm*0߰=g"6E_Z5yF쓶7.ܬ~Q &?_r4vp_I 1)]`mZroQO1CaO1C9 )&ÐSLwχSLMGsnO&qCu80oO1JtHǂIWpn#^mqxfT¤/5+\E9+A?./PnĤcy SiwOYҞOHWw 8n8__ȷɡttWX{2{%tu"-ZވLVzqe:8_ՆY%L:OgEYDDžk^i%<ǩy۷ׂdE 4J;M=*ǏC(\M}K $%8:=6.Yæy5c1Q[,[O=C1q^+,{[ց>DN0πd<3 Y-+AWsl|X󺂓se~Ҙx&a1M!XZ&GP^_/l^z?L|tt3Vyy-+w~svv{s)%5YL񿣑o]_;|y&|dt͡p??‹ L:;pǘbxoEó>7mʏ,9ÁA#/tL9 0_j5r{&)1GIKxhBK)fOLgz-Çꕏ_(6<53h9q'ϒ DXۿ|Ъ//G_5YFE̵w |i/_bI aZ++'''-@.~E%E9 &7ǦuZPV"7 4XRc S4C D%t6p^3>q^&mtM&ցeaeT6$0L5gZ9:l7N'M?Nk]ӗ74;jǷ.GtވŒOaSϚMd&g$aq^biu|VgBƛ7s_wi%B֯گ~UdrIzjM<Ұ7gN,I(xL_~;n>_ Cw!h*ude2|H8؈:9g |* 1H x K#y6n8F$ŝA>&#VwX߁M T3~dhO 5 [nxnxN3WZލ9ԡ~@y)uP|DtFP[DLPq@F 2~Ŀ{!cRuZFg P?%;>P 3=3M S3F1AAtm73?88CA_DL:TQM/M'k2 0U"l0%YITi_N4`7/!у+r3ynxZ6{I 8u~M ~ 偌4ONJe]%r‚P<3n٤M \08N'Yz (˗鞵 I {ȏ\͈"ҽ}6& YJoX+t%\245.>ç9d? ~|1Kn91zg &xuHPƔAAP`zT hz!;9bs=J`4IZ*Yiq4HT(&+CQu MUC&Ԓ>\'-dRWb>Ưjs:̾HNkog?Ž0/ȧL:Hg-K~¥x:kV?:9BN{99[?Ej/L]"5 [G,^}$& \%^l^lt/xi7K/CE7, idJaswjfF GUpr<.'wkgIPo}me;doEi7bq}'<1 РZ!'4%,<Ģ i}"Lzr$tX8Idc[p"C]SWL:sr#Z6Y MW $k̺T'I0*Pޒhjp:q7o>Zbt,К.֗!L}5+ 2#v:P1[W6HL,N&qDBi0v&&,@ze7W\&'VQoNε:,NNV$C@b.qjܗ R8L2ds7[ka֥tȒ9 *Q O_~IIYXʝoِQt LfϝÇ`;E:=`фs(37:ɯlZdGI ,Έ:mp|l8nǟޅ3i6J%`Ui^pzPNX 6uT3{ӑ EϦ[ñw)+nRO It0Co4GI}D9:B5`3c-;>u"# T=rX?AO/[/퍟z^=R"8J#Ènh*w2fvNtq69ĺ:e*Sn\6{p2\؆6tQ԰_yx"2 Z"RI2Ytui!lT9מK9g8?. I0#i 1Td,)Ke}#!anhI;"j~LqyWDnuC-* 2r^絛UQVj o̓9+?k֘캘wc'~Ewۼ((hq>~TaE1Cm?~CG!^ں)~ GKwv{$UI3~PUd~h9?`-MlJvkYMu4h2'ṕyYit'H;PU7Ylܦ8$xB丗ZY 2bm?LC5PKc3Þ@N|xLjIǜ%.+ ;ǻ7 ٗf)CN[T|SD9eNRmb5GivPO6\bbBhY&Fv P9;Acbe-=etH+KXӼ|łXw2&Y .ESMDטt^KĤk B=5膰%VWR2"]%[2+ YR31 I^LQQ式~2\Jp229.v!(10/Ʀ1n!JE]IEiJTtՠ QOb%UN\:> l垆Z!2ZdsY4qT˨`̣75W~Tt:ٰ:MG5|{(ŔR(6vl1@raˑ-͕*ߓזn݌( } cȪ]1CGAG5nrk;7˧ 0 Ku%8[TI^q}hևߨəo6e< ouk=GIì!iVT1$RVq>mШ`*I #ԅ%GvKԿZV 0C#n޼\:+R6,?uvɫta4}'+,<(qRS|HIʭvyD wڕ+m:"3)C`5PMَ ^#j"$&Q1'cmO>Mqp0=1sRV'HwݔFr=5cZtBy5ؕ_ [>?҇C YtU}1Y4s5P ڽ#ʜ"D_Ԝ15`4MLóJĒ3$ߩSs$5 Fż~m#LjIg\wSҟaJbV %%P #]FWu3o*9; 6U-<0c7LK\2JHF e2hUWYJL?E T|` ,^]cqN`G mxsAe #&YΡfsD,Ht$ͦFlV}W?`5Io7t$ B1 ?d<Quvx|sUqxpr2T*顒5Iۘ0$Q;2? 2a&yۡ+^"e I\0cSXw{ܟ I;}xDC8' gI*<> Ew%ƀI7g}0lA[>Jxk-Gl>`MЄkUH>X%968Cݹ: Em0`%hk)Ŀܓ#3eeb&~0x#4.T82&! # I^L:~CTԔPZ_=SV!rA{ vw~ppu@$C7k鹒)/(AOd@E^qf F,i*#M}*Loݹz=b]E$A*)nW TnI8SݓJnad*OiXSԼMA(/ʌؼ*j1[A1'fsL:}JtSCj.;9 ;dALdz5/M!^/*6gQdUXz %N<3#rɶi("}HL:Q WPG+V:MMbMJ@`7eGs{xyH:}z|2 X%,;CItu:Bq)qǁ MԦ1t&fv'2σ)v)OmF{068CTTwr֛Qo"[(+dLl4;8 ©rb$GIẀc&!#G?S.;+Gv %"am;EK/a-nw8ϱg#nV )aǦ;85ԲP3j'ڗ+ ZpZ,炠?>Z<+ŵ!%YO=t-f3ވ(E`k#Jd2`kۊ-c ÃL͌uo&_ZZ ס1YVr[q,U8)匡WLg贡epȆ*@i,M%Iv )QQ 7{&邤ɲFIKdP(Bk[dukw{bqϝmW?<(s~g'j3U9X~hSxǡE{#}|Qx{>ܺdzyVP1;>ImR$ )`5яvg}*$Ett-X[y7X]:%tNC)ʌ\& `3.@ěaaOkgdY3Q0(ޕ܊K: Wx/Q^_9$~0 %68/ebqQpGbӳ;Ü1i`MdUV$_*RrE͊{wA(F~x<.'b vx>+fIUJwyN t'IB +5V^I ɏ8qLK~4YHڀ>G^wiqhG & !P-r;(&?LZLlxVw^sKL:%mP2b ?7w__g_2|yŮG¢ b)tTC `Ifjb-RҘJ΄yk}iܫxuO|:"a[9SD{)/Asn+ }5db6{֛Mhgf}}̲Vx}n_;z0@{^!5u0[jӘ[ ,@OtG_GMM*$_|#o ݶ&wt,؈r/ W@~+[VF3h"4g,kTu`%3"J*Tr1R1hݧwcBZ1nFxhȜkcqW-*t "Ry AUy䅄6MO"6p3|mdֿt \Fvp{cU)reL f:2&VNL>ӛ1e2cA'H} p4q\:B5+%B6Q$%L[Yj X&L: P@1USls,د`,o}|0 ˻}}T 8=&vw‚ oM;:%^X"C;#X9CaRb:ѭgc>;W#ҷݲ)<3:^?oT'Dͪ$!"Ǥ{~!&]cR&ۃ`Fٔ%ʝ0@|`9LA)|wn;3ׯ__Z-{dpu(>qt̤xGƫWT22K-edKp{ p?,UԼ' V`9+*Lw%(xS ~+ z>PYQYc 4kW`.Ј_Q׼kO>Of6 %o7XsQsxݢ1d `eH&ט\f#S1Ӎc55Y=U5  сp04jz-ayQ (5 .vڧ*/`>& ]BTUIGOOrttYu2E٬hQ-IР֝Pc,o3":cTi2 p%\nV4 "i8$$'TtPjX g,P.+aSBsLL:=&kѠߨY6M T1XaZ X3dI |̽PQ6j薸v{-jV^Yۻw𙯭P>5JjtmBgA/L:vEżcڠj29kFz1ْu?9(xB2$U"L`"3*,Yur cI tp`]$p-,fz%Llq`X eb'iX N,u0xwj,Q@Ḽ !l[n k|!x|j ?[ T]]Kp$&,iwL/&L d|,e^w8"h,T!ח(i $!Y I+;XGŤ+>SL-\bxD{tQǘFSL{0_<(4/~X=炻_/z/9M~/)զ)5}yڞ(r pxŁy~I0AĤ{B>M%So֭g?k Dvpڨu:.5EmUXd,!YYEǹbP9gLbpXόXW` gXfQ!nH0Ȼtiou5'D8 I׮ノaF g f=RH#&z؛aM{ Ow Օy9aұep{zbz58.93gI%@:$.o/(ٟs{ZCZmv'IG4ZCZfg#>3z@qk#2A =r"#&V熭wٚƵn c !1i+ƃYWytJF躌V,gqu45~ꏟ#SDnirrt4I#tk0x?CޔBGIm0Xc1INJ%NH.0ʗ3h!Te8>m$!%~ tۀ[(Ӭ?ʕ/>߈$]nz(JW3&S:E7fN-Y%,.}V N& 'g䀞n~x~/RP4|P}>?嫟xLtG$Jw_e0ɹNTXßUNOȰ;e{M^&YZOw Iӱ IPLꇯ JfqcWQGh@IDATI@Yg?{ez,_W]MG'qVzGGǍ[osdg{%էLo_ L:#6%^D B-v4̤:""hztr]2Ow6]#{pBw!n4t."G \W"+,\0@_L:[AԄ0[| Oȼ|TY fg0ofk86 Bb:Ϳw]\kwĦ{g+QbJD? %ӝVkϸ찐KeYS>z(_@K|iЖSDP!I饤G2NY2eL2uQytsDnH*"p8n}@F\u< ":ZwV V$Yɋ!-AcOn0td Gxz4h6fwQ=:B:9廤 , EU/ot{.7^lww:8]zM愚^UB{" S_Jݻ~#V"Sz/7~oo_jLsq@`sN]e" 3:b( E;ORZvQp %-S2BmL}KWl"&(TEjzQ8 P7$:FKdHD T$Uz"FLRĪl ybMs^]D(tN`ҽQ ~Bzigҟ[1o2*͖J (&ISG Fpl':2MW! 8oa2r(HȪtF nǟv&))'c-N%Qw`T* 쵈~{j5o=_yk.^CmxB&_|3+mL:k5T xÃB005=b҅y\ۙYŤ7dì/TU[l:ab|~DOSZ(4-T9;䌶AקX''wh*xbp|x&wҠ4U| 20v' p0rpss̈K2uz_ wMgowTGyfʖ5Q! Gƞiz?JwnL:=fٲ1Ӯx@g] Ӽ>SBCD'o>]NA?oO:@߂[6}{DƖD)ha;P" ŚPxʒO` o"~z:[H0~ծZ,w֡|I;;] t' 3Y7g\: B5|0+t접]m&[ZI0O8sӟ@jN*ZӷpYKZ˗!eڏǤA>CׄV(jP îh] 22N 7HB&IxpyWⷂ*8( B%>AMP8DOq)Xr:!Hf bҙk)#lQ5Ǥ񚸘? W<0&hN dJ:Cآ7EWn ΍GS-$3a6GٵKCfK ~5?:`'0GJ! &cOL:\*uä2JdfV0:*z%l%E{s| Br"ӷ7 ܘn%wKgMlچª◹s:I1*35zcä32Itgӳ>Fޫ$EʰsCA|dŊ z|FCFN'4)FOp8p٪b?ʵznmYڃbr2N sL:T~n.Q$l˙hzRnwm>NN$ND bqP A!ll}ynO>޺DL!|FatL2- zC} 0PKr T*jYr>q`K~M4m2ÐeC׏O[o^zpY&7\!|V6w8LVQak}- WgF8Iw&#r>-kON&{qoc 3/hҲ&ALu;S }ieWԘшlL5o'Kguo~GNWF<u!ޜnx/͈u+~7o,.ߜzW+,*,PƔ?I&6F08ӏÚwĻy3 1 7 0r>F՘o]!P{g:[dTvSW1zZta5 N کȤO27#0]^L}<2,y[ o%YȚnh:aҭ׻fN6Ge~]a7\Sj㱠,GcZԞM[ԉ? ,QFETY  G% xSH/bX'Q4L r_b%Y|H 1D*A<ǟs}pƶJRgtR2oԥ`V\=~S#7dݪSk._tA/[tj͙S,&nY&0ej̄l;rnRN=}S!BR&/Q`COj씐Hq,6\%ad^ U4s/[,)e҉ χsLFVNt,-N(7Û@OßPaDifjkV_"8Df^]iJho2Sϐ^2Ėu|OFS"9&)0ڈbҥ!H !?oh& +S݃Ԯ 9+I2 S.M4pQvA °gM/h9Tη8'$CF/-]]\NNnD Q?cڇƤCam YP{I%))Eԛ +[vw&?a9gƞJ޴>:>w;Df4U\:ܘ CBJ{I*7(ܥU5-h4q=QQcIL|4t19^@oz~+6j*؝vsQALHjp.ynukz^i ]Qt\0%5 VQI0[D1HƢk[ }0 e\!n Y5+CE$+>kV87b_!3 "^ؓx|iow$V}ST7sNͺ/ƁG*P[. QQ]6krƕYoWq 'F2drh杬[oOՂϷm-c+jIJkfT L)9T¦bsdm`dA&fFVY/ {ql;.:HGPBkb`)( Y|K6tAPn1㿶v~┟r@ n/yV 鯹MYFx͂l^*.êc^Qağ S2O=i.mz(w#Dt)'6 γ)dQ۠C(i8b E#&.n<:)챧 eTօ\JHGsqMp88:`wia1#r74NDIG%7VONǗ1(cY2#ammmd@ahR`msPeA6MQ2+ogqH,whiM[D+W蟧cVCq?ELU08N;wLx6K X" Si 伝ޏ VWl!.4] -sJ ϒzԌl5~ jTT-i/%"BNJ?4Om d2lgƳp@+|".%ѫPXŭM>E%X$|H3"qz0 COB ]b#z/IaUgxlSL]%2z-DG2< mS󮺺t2g?KGFg5 mhȒ5DEKw˧F CXkPIF0t4M`AJjVa*ϛyyD$U}!&*l<ȏ E|z-ԿhVkKa$ -;U|!xFVMe=F'Ldqy]$i0flt:ryƍ=IV=9]1ǽUNVL>rꩻ]ZM DP^x&U/J%}2X5yN ݪ|N!,]tY'{*YtpiX>=:wVXCK3x$k(|H]"Ye A 2{χr\btk)ZLd`I묁w%,f=9a_F]8vwIg$ĩd nú~҄VX e-u싽dS8ϼ5)9 BQ'$3czhrCc5xZL* :FoT!으P* ^lCi|Êfv  k|:hTSJy0(&{~; kT6@ͷEqT1䯰$.) ׫)̬^l1ZV@7TqItԒnd.nߑx*mtVɋ;*2/0"==g'$PeqAk3Q۹3̭|k\LNEo?ÏTpsZb3ꢵ`JzD}tx"[p*jEc1f3x:e;P܉.Òn/j{ӛXs]VTU.~>"zo.q+9Q+ Dʥ˂`bSk`3#L]KC)&]W.(k1ca3QJ Q.84I(ԕE K oi璝#]T̜K;c oC ]шF6(ܪRNf=>M?g, *fQ~J@߹I,ESŃ|K;җ7W MՈ$=wa~xoA20?̧gStjv *h1xpsP~1FtSoxJr'nO"qrQ>1CHŴOO2~xsHJGF#y L7tz*&~HcZt~TBw@ԙ!mk÷!'k-v`EGI;*_T:q^S\{/nMm4l5w?\`Q$+ ) x@WN6>Ie1P]ҥфՅPi7y4i%&n^L:%ׁ!D=`|ta”TVkUJI4tNN9L٥_ Wg%\: r4ri%bS 'V$@e(I';1}1钠%cseq4cuo#F'cB `7GqA-$h4}ȔRz"?.|]b.&\f3rȺф ˻7w#-Y1wZ#tƬ-Fj23&Wgʰ),aϹG _\lrUPؐ9o=Ld2zŶfvVLV¤þ bazjT}2%ЃS>iFr)4X9bXS͸#6l]$g1ڇ,E@@8Q$U>χoӽgWO`ވ.jg84ee 0scf]bտX}{_et(׾ /TB '(y/ͮʇ.^IWȨʐ6!=bɺ 'C9 gÑs'~R[?ía'LʋYl99#d昹:*QދtL1ɗZX~I,B U'8ɐpߧ'0{b{#tUJɤGC]_wH{2={'&a7Yiq\,Z:i{5&cYhh탡 j@)vM ѱySyCp|4GS34Gs;g>L: 4 qIMT=D6 {m9-Dj?Qm&U LW1A5w$A#nr!ќVh6p?聩aƵe R?!t{Տ*#~1j2 -¨Rw'H7x*")'L{PjH&;fmQy~Z- ~>c=eҸݽN{쁚*$a՝`eXj{3H& ObzthdI)CbFz5'30;me lFh\6TNd&tI# 2bD}nY=w虵L:NLT#< `wE!L7]j,`&B.݀PdxxʫޕFzAc[z6t崁 /^X%4+K9P)!)euIժ71tI'8vQZ3VZ¤v1W.LIIݱd t]i \p""&7ṡb0l&ss.;k8L:fFp*'6$ܽtx"gc4TٝX %B2 I b9UI2Q&G:j&a%9&Ć; us;Un2cc33k) +U`U[RV#X`t )ɟlDstAQEqLTMRIK֖AW)eX0%[AnSWxa}lN^8v5N K gZ`ҁLNJ34LNпL&K(U<>>O{xL:Yz:!*֔&4ä3CB!=(:i+ 듘t tJbb9M*]:O4Ĥ 봝>tM \8HVp\Xs?(#9W2fi1tlsSy.r(} 2" sP Pt>$A|[SL:l.n{c׶4=q%mrʠ3?YkLoXl?#p轅c?Ť*n6P֧tIw4bҽ qtBGp;qc](Ƕ@HF)&{]%#s=Nm6Cn#E& xL?|jӧt%A?trcmqrhp$]`M&'%UrH&wlȩXTs9$[35#Ƭ^:1izHĔWXFՄ) @} #Iڣ?~N? Wd`kci@8<#?.taТq2.0<][nNWEЂSP$$Nj?nnv$Rl= 56]#$ xP0D:Q6|xf41ϫd@RHf)(\N1̻tG7ҋyQ-`+s_k擷޺ǼDE<9R'I`t.i^SODxm62 t08hKg0XYeΝ7m>=A%+O $PI6Iᰉ7Jg?ewU5n8/MP'z|f:}/\B/]:- RuyGV눠knٗ?>lNqNM`q[T)UV{ѡ0q.A dU) WѳLCvFW7c4#O7͌}ve`wvҥKuepꐭsG/ bi`EMZ#4V8ϩCh0SٸM5߻sf0&ƎKd&pfdff dFf1Hc麼DI0R*d jlRAr-!XxA#*RQb2@K 6~pKupx}9T_t}L;}tHsj`l7 LtD6oܾ{tn<f}FlvHFRB '"!ԼK^irL,HD+hrqV:dtFʵR6JݞxHl8gus|g[?kLU-癌M>LѸBNmUgx| 3 T+l'eni`ѭw 33(X Dhd+dTizd6]\ |umڌ-)g9ȳp"(vl6`ħ+KXPg\H)r `ҡvT]j5,%V:ӌ}efUfVXE0@EϰnWfVӽ酀]fZh%mFjFY 0JZ|}G{<ǽu*p;vرc矲hq5}q:>$(nYE.u$= p6?)VSTӖIМ'b @ʋ65D7&3:/bua}8־ATz~'φp+(u9btXIݧ_?9Ͼ߿4"I>QM̚7oe^]β 1RQ_'NK{ ,k:vȍ]zqq;Ҕ}OxI^,T":lb " X7 #T6bmAoe4U`m`tP"؏ΑJ3,p"zR3E45z!%oC{k *Ѵguj;dE HU(ۉ,Մ۷VLW(_لZ5=hdj=.Y2HM'^&+±1M_twfY[?&t6s%HKDK$:Vh쒣{|IL/TnQ1U")-Jj*A@sj:>&XO/n|5wbܙNvn*i$(Y,b(%=~SX Ɏe(͖IDEdgҜbuV;g=҉s M]j0l (򆥅!``ҁZD%?[EX1r8ɤ`x~Tqv{-RZ8EkPp$Y (DmZʊwcB4L:D6W8oL/7Eq#_,ognuZ@Y([U_}-N-b E@5&$O樰;4z{mvo [c:yL q10 h>J0N8Wzi3 ZbCp-8 PI0q5o#?U~ Gjpr4\/ )PN4\80IWfpgD~lqqά.M:`?RsgϓtbF6bpejXvff{#ΉxPڰj~in&:n(a,;ۛNwii:>" xL)EoM$HYec3[S%&ӥR!*!U ʴ"t)U-SLؤ(5/ީpj[NǷ;-V74H1\tSqcXV28{8=sN -ɮo.α+d*9d&Kc& ͇ݒqGoSKl|Δ !f%i"q\V ayatZkT aHXCs_)\9n c@+y4JD`p\K lۀD!,ZIhđV^Ǚ. 7b5 +oqFg+.=tSb2>"k PxzG~!Or>)m!}8m!sJ7 7 Ph+v>>ͭoY D4XIFLheQczq:oA>7חf_'x|uE4fT.$Y /6H):>C:ju;};y6Q ˧EgNyGa٢[Q,k@e| *4z|i ET8 ȦAL`_qRV3%ג>xA O˩U*IPL:92)ܤh?<K;qpd(_(وcݘ𐝉nͽ_a _2=-I"P"w*Z:zly;  Ό&&̘F?B5 ojb{-2Igt' rHI]{LylqosRQ#3nB'8H axaɱ,s Lt2嘚rCWIE0w">~sSs88OB{(&0T$єao@NEfPS[2|Y!(̀Xv&% < +ҋĤmPhoƂٺQtD3_[#=\d+)2\XqD~WMl!xڡaIn/e!T2˯W7~d1F3H Ŏgؼ]<1Lt{^ 2fh%,2{MrG^03oqpm |Ȍr,Gg+"^y$u ˊLؚlqHƪijg>աa34_{FӺ{jwwY@j8 ~N<;& L::VkNq29ODlWz{lAK2pxJ:5Vc 4αmQlWv;j}CCOyҶ+&!!:oKAuHB_!'+J8~+1(s^ 1LR>7S5cDҚx@i_Gh9~gp}:L t hߥwƿ`Aֲi.WAgb2=D_,ZTW3ǩSbFya=ĘO",AVYwpH\&YO*ڟ 8`RD+,>|J t,hv\\`GvSZBMx'髖tr8OE.n;.$&\S Cx3Ur=q,&oΊt@CXC}"ApT&@OӇP=V'aLwdsqҭd?σI ammc>ȏF6¦ٛH42ü*Q-ܳᷚO+Ť'r;LplAs_6GNg\zܧ%to3VbtA[$,D^LDƩn {Tw8uSIGG%)dͷ|jXav,U=16LbY|{q87lf}?斾O o .2xpA#2A0ƒIڴz-Bdc:OQ"a0hNٽ{C`k_#=pWHUtJäv@#L",)I7.kN#f>̾eYH74IjLvtF7` im:Jl^dkbqGױz*{H*wy&~&jĿY i8S(EOTI4{ ä[c$kShڬO6'h&_RǍ]Ujϥ*2 c a/lS{sӢS(R?(XPnLu. ͇j o$C*IH| `F95oTl@֥IL{I&!_ &e1FV]!@A.šKOlr0 >v'T&>}N< ԶJʁZ9R{4K(*#NGfϚDۆ  !A 6=YG>^$o0iK͡ C՝3=ع8c5[  Ep8v.&N 瓢oٓٮ{oM&e6T~?{ҥթ.5`mhٹh_bx^\\oካAGT@V2dԑ)ۃw$wˑܙ6nLϦx͜w&5l & iptnRqxxc [:&t/ NTN4I T ܯW@:NyEʒ~4AA;>.ɑ\L~//jIW=#vucx@\ )El-XV4Eq} taNG*YW=@IDAT*rg6•pgňE#dʗ][1)Ve EYpr[YxB<.xQa;NW|TBp"bLh5f78Qe6 h90F~t֚MխrwȄ5z"8Q}夀D T콞ng9gC%xbsHL:UeVC pԚyI;ݾ@"X.r{;w`tGF&=FL䵩X_:P!#=(؎xT)(g$[yJ[5x,[]Q\2fj~t6ဖxU @pwiQ' MJ z1ongwx~S?W{w7wŚs Zzm'+F$rN&`0rz:Ȧ3a#jWTVcKU^-%oD PQ\]5ʐYL%&eG&"CE|06# ͋N}[J2r-ʰ[zwo>VH?GqJjӺ>h 7w_kWn6%6_;7>\ 2FV2Z|<āWm-ٽtx].FbшVYvt/=93^y|#wl.۾`_ܼ;SۅCjbkСr~btmuBθ o#Ocá8*-]6Y.#:&Pgr\-U\ !:RMF7Ic[yYZ3oSTs:\{*A Y8ގ0M61Fէ͛{ E)t61^6ڳ SOtxul٫;#],K]V8 ҽ$GHT=4@EDl2=#)=;ǓZ1Q >ƪ0oe=IRtKWØ|qIaQKգCB ?04+L6+d z(L`,3-ӳ6]Sk2ȥRzI*rJ AǤ#o!=RM EO*Хrqi>&J|׵2ꭄUb~NIyff͂ ,2}7v..ڏGX$;{2I{BuIF&0>c +^~F趺 X*~{\L:"f;3,TÓ~MMA5q̙QI;e%FM(VHo* EԀ E=9yĕt^tv!OȊR &| _M&'6KO`nm|bON  4h$ѳ*T< ̀5L_7G=C][`'sd>Hs9oxit4]bW0q=-O/bRԾj8Ipǵ7wvku@'Z\bҩkBg T<|OqI꯾wAT Tz*4&M׿_Ls;,tp=&u慫Psت,zuVC"F)ɠ4YH٠ ڃa WyIкt-}c\j3eTDÜ0 }FA"t =pqf)YNbyAp!tzjf78NC8xKS20RJ]YSSP&!$͘oc,#CcV -&"mZv!j2"2膽DP F]fC.wIƏ1!E߾y|T9z߆SW8 սjQɩ+֡ j.~To&]pq)lZIӣ",O G*f41ڸ >"P6ME4>tä#/8Vw>1:5`$8;}ijȊMB|?=&]B>&M?8b}vx1xy>&t$P/OTyΩ23L`%|IWɕ*gtW"agt/פa0!̳*|Lk_88 R`,aogq, 'i6n~xʑZF~|=s7j0T;0OE W<;L'LAwYټ?|٢tC,xi䫯{Et6yahY K4Sak`J{gΏ~÷{ey(5ˆvA?zT/it><1pꈥ=:. #e2 U}몂?W%8H@ψW188ػފw]ϱ5 1tJν37K0Ał /#{6loR3=w\ U=/SԪ,c%>=!`?yLqv!b}Pc|[ ĄFcIi,|9u #qf r X`aItbӑ&9$MB@Ƥi.z,Zt@DGw{|U@ Ds$518AH섫m5len|w +%fxΦ^w$FQwA־oֆ޺ha"'^'y6ZzNӰ\cc҅|}+0zuQtNt35lXBj*ّw-:rĽ|1K?B F3ml/]/=v,U~},DtG)em1=EfX@W0Z7CgLV/§. L&ЪIg>dSgĤ#z!7';:_?~+/Ëi%z.bA~`a lp "16Uhn!=Ӿ,SU:o\ Y~th'j (V;6"DKl{GU#bgxsj]Onh, W]8p!KDrAcbH6S JC> _'-W1aH8etjgS s)k"{NXq( q*:LHD-Q[$?uD8]\`A@gNQ_RL(r@o29W,A,uTUW$\L [➱ԃyr)tVsNsgkSj#VEElur힝e{H8oW- PIuyS!L: 0T-ͻ"Bqua <j',]ԇ1NvN;y~!U| J~%tp$]E^F'閕z.%2HRH_Dj #G'>c_&DM=WLsHLvГ.¤Kv$KSU_ &1m(dzh֣;j狍UK ^nI۱yelŮp.0NZk!{E+2CvC7gu5/&b|6F'@kh oo/̪䵽/]\tne)k_cvM #sΉq9!iE,(3PQa7R79;ȁaVV  8Rx$]{_t31d11-((T.x@&" zk~M]+R7/u&I ״;p( R~rCM}D)r,7(!,8h Pem{UIMRا@eahRCa'[v Ĥ3 qL2PCED*lb}ɨN &ͫ TރֶdS~@3sg vba2 \P;+Ujѽ̱mA-4d/1BIR- >&!܌΍uBhV? z,aɱO]er 2#-)^AG8R*HR bYuݭMA|ZHt}tL#|+1b-!bA nee*)6x/?X!G74^ RZ-'Xx6آ%èK+!{M ,b7=2K6}Zyds BeT,v&}%A߿l$k3O޽&/aF[ D#4Ɓ b>"QH~ULB)&]Ii8s67EǞ+1T͊8~ suh6xvVC`h7܉^~=;_Ș 3ϙeD3D;d6# MO1 W%r f "NjM%5rx6aAʜVKWPLN9#I>ɺyiAT`: ~C WBܔdُ~;?xߖ>.&ƉWQVN߬dȳ&s*NYf%_i8ΧʯQQ9eSq$QNyDנE8t ?Yɏ%KäC&C@tG,ZADfl"sM&aBZ_6Rve!e4r(_A8~ljj/mqcz6=NCLPl0;?c `yJ{>e=|o5"Tݵ֣(2L; g?GvDuxw# JKУQVM(K|=cjƽ bTgn4z;7Y䗄'.q)]n󙨬Pca,[;U$s|(CgɂLѳW;ޤC3AըwY>~XN/&NsgbD&UT1]>UIze j_^ /+LGp}tYoE H3 ) %bYa݀&f|kFff(S?3%W;b3+Ҹpgӵt|D}_yV&ݜj a D!(huxt,60G\^.RlttZ ^yjuÑ5:qV/Vڕz-!K|ĵ\-Cht@Y@Ovv C:HGsZwBb$:yEt,DSPߢ1 V}(xPcThKN+QWK Ƈ/Ғ*, #Ll>=7k)gVT>mYn,3ͭgnoA9<=?I7M."WiyppcQQw'&jF#~&@/9Wս'=nwp漘(8_M10;ΎY7uc9!2}"`ekITQ8!3bD@3`k/E=B]w\w{y4Dewc;tGcu\~158#r pLyሸBHwBV [~k=pU`ҩ~PabsYje]{腭`*0&?b|ZR$؈Gd}1#/eXOU lLbGUI(JǎrfZu> A9#,쇶b}:ua;XZwЁy|Õb߾}7sko2g|ٞ,P6o,[xy'&2 < J(|SVc0hPskEE2 Qζzaҡ3@9*<:&]s?^!1.k;>50#]YeY:0^J'V祦);]U'hu+yM|0afYe2^Ð|ݻa׫^~(ibt3ٟٟeZnL7۵m"i{jJgGYr}VH-kvU 3i,Jr]`qggfoݷc<^szNirq?ä{B}{~?no~-51`2@`7&{Gҩi2lӡ8 Eg=E!_\QlWݻw7ロǗ‘lC|wiEV2LTFmt~( Aӝdg팊Tm>*+AU0^W3-S\=9~,lɮp`YaUX{;0>>psM8~I|ꠟa}L]s{p$M3LkN9uX{_x/f}ֺ=FP՟O7&ҴFt^Nr=xX]Qϭۼ$&v \ jL}s@(Or#eW?Ub tqD@$Ň"$k )<(!pNH՞SlުB@Z 9g!@o|:eBݞk,/%u=:Ͽ3o1Dƙځp}ƚT01ܰ,Շbn?%d^;qM8N }rB@Hg|ż69Iߺ9枰8E}L{>< F7A9bEB TX{y14ȧߍl;J8GC+fc4xqHBLD, |Ƣyq~ Pci)AXk,Kl^~cqar]%N"x4UwHD ʪ5pq$\ (ځvv"2}9Ie~QF'Os 999iH!dB&J_qo#~[e+vܳ[o(>_OMP~>L:= mR"X[NSJL:"U68sZV]lچ0eŰjs)N7.t_t4,( GL:x}n $_!XlLN?}֟bG9TϺ avz0HpujF&—[U PР/Ȍ>oԵQ$t J G".ĥtRGE x6mwC$(rM`Ep߹E>zAq(]lMӾ6ثq? ó7YNc&D[US"L Еռނ ɷm@4wťiݟ''EQc֭}KwjNhm8+?$#V#OF#SIGQ=_Y<+eŊg g ǤDߤϻK֓d+|VH겹)q)զEm2@=I'>Dr&bJa¦>5QA)uBt㱫Y&ЬF/{8?OAl0`hh[v#=*MU$<$$A ڭWa"a.j?OiYoYNytˬWIȊ ;iי"SdY>N4a5'k~é(g8Q ɮ"1.ZRIr ˛ ΌADa @[?&& Y`n[f,=Q}_+Ck{o wH|Fs>DPd!uɂO/j t($23DW27$NNYr&x{Λ>=d v0i)>cN]w~{iv5a% +ݘέggOOѻ@|]GPƿ?WRX]g}/W,BdYV"\rZEfz<5t-;N)ھ8+V[h^4 NCRXaX; &A1[[XcW_R~mb}9i'v*L mWZ>HRVWJ(F>>u6awgb2ll’.aP!0VZ$[9jy/}q//_NTO:j39ylAG85k}KKPc%ZoAsu,~Řt*qLb%;b' \= 21ŴU%CJǕyQHWL]y8VNъ:A E/$5o뢟|Btd޾wݺ<}}67yB/GÍOPd(xp\E NCP;R`4F\Ig󼤪!V! JY=8kelzre O CMAI0rpkۣW}RZCR}(y'rojq}8f%)3cYxcjF|83er>?!LGg;N/7-R sA/7yr3H P 2&)5fG&{G;~7>]L]; FK$/]owI+u8kuFy6ы^9&SP9 rr6b kjO߲,Φ>^Dr05Z{w|ӵtҊT 5kưX#P1 0"1m ]8f 0zCrU1hRps"qmPGFA -3-f7DnYbm:Hv"QqhxE*ٶ4Ĭz{}"ilx:=Ѧe爮rgy݁G=ld$JA86,.L$S j-hd[GeC Ju Ϊ6DY~UWJ#ԡq7slq%t5¬y )J3♒7|.^hOx[4/Ӻ*#7bnUz(7̕;) `Lh9Ҙ*O7b;#/x " nIǐދɩ]ysNm^,!կ՘eB\g:b._R6A@IDATCX4n1 C'aVk^MUVqЂQ%ƂY7ֲy%Xrl=8V2[ LP]/ KP8Zo%@ޓo:N$Αd$2gfD 4t1QHUt C,5lcHn|jl[#56 Alg"&"h]=q5rEa1<-`yP -9@_Aڒ1S>, Imh"zI{bG,''H $M7>zw~kf_λ t`;}a)+5itxzE3M ""AAGs۩Jz!"Mt03X FmI bHeyPN K{InT\*+c)rM뺾Pv@y]H?*OAOnO6O6 N0 t)M8#*;aQ!pÍL]} |6Lv=]]I7Fۮ63%~|b6G|Zso b. ʝTml_AD 8'#QX`b=_Ox=DFjphaU_2͍$LXke ыa|-V˱eST<;iRWG^"ょʌ!]ag w&8SC )33 pdc"V5a )w|7$G=mn>71=/&݂j5%RڒeE| 8)=hޠo@JM> ̶" E9m#6ʓ(|FtGzP- ?E됶a&9ٽ{C1=m~c#PUg@ajŽoIM̅cLI8!>p)V2ОUg;-Q0`8MƔvWf#mSZj41V'q4̈́9JBlL 1SƐE݈R#m] ).Ve S/uTрbAyRltEAت=70#*M4!7J8BR6i_|$n]MA ͈r"J}k*zz}*lX(16\:_ޤkEC#6#k &)Wͽn!a& M?P^-  m{ U 6N/+8YK>p){ƓD䢕`NM@4V-A0bZc#F'Hn G|sDMLy䮼SjH g 1')U}L&} E7,V(eƜ#M<06zBB F(x/ r/y nIWe/D&sYnʴTz <=jM25oL `IGe@t*[ hrJBNDfW(L=)AS8A5zfUK6BO,5f/o],PZcaB8K͗t'tE^H{y%OY Gl U F^>n\V(+6W9BbjL_]6hkRTtdC%.`y /£k+5!n~Kjcʹ bKu c &2dI*Tpf^|eťSy F f6FELc3)~& s%20?ػ_Ťga҉afk tr5Q& ʽ->7FRr I/qiiЏMs )~h.MX)W5I |L&}bth4h.ymmK x/%g*N5dM]XrCuwlB[Tbj@b~&r:4Zht`9zmKrD L9J1A'"&*2˳W A@Aigz bb{ESs Ν|O0$=9Ál BwvX(Ev$T:HTNC]ٶLkss?d ~E;6L =b,tI ÝL&2)A8d؄57\ ":dɱɏtOnhZb_a6wf,A?Ig{`4Z:c?=tꋀ<;{tZJg~W|/_alޟunQ.s[E5 t|yPIVަ.r==?FcdeqYٝ߸1 $Pw2‘0@v}u ;?QL:X^;<՘2 # luUοӂ8=񉎆'UpĤE9hYGΨ8M+t=ZDn&] G8226 >tǽZvևZ5>htvބcYv㼴FiM Ge"ן*[:6G5H Y,c/pǪEXŐ9&`ok)[ /0j, R9g&V~ ;؍FҮLbWX]wj0^ 1 Lat &LȈa۟5ְK1z2 q5 y ɃFcl'o@&Њ1VTaѷael8cOh6ǁIw| zjٹLOne [F>Xa7 F&$v> Af5|nw @lŰ9ۑ3쫋+ r0TW[ @tDqwY?R?o)9mk< j/~lV8$^bO衻ha#LlzifXJT&漅S0C25h:ףb^겄\ F3911É .]YT0c$WZ%#'Ia /?3Bb1L]5fs74ϳ!WZ'º-Y0Щf3üᖽX{D] g_@!KApR/0Z(퀖׫ѭ]>t;ci2uw?-t>r뚎HT^|X_~5Z8(c80:9FN,]a5"}bXDQ҆)/;m!W\8\m"p.c. I_L:f]ӼI+8n5k(gI7l{"9t$LD 4E/ڦN+fG #`촁 :X([mhWVHg}z1pX jma}mW&h#IӐi@ #?teiu6wP:ȇ'äi[&t!Jɜ˜>6E sh6J n߰!M ś4BM+ h?ObA\ G6C=:п''w62LūADQLɣ#/9KtVE%UWmU~F!6E3̚D 14%L+ܐ{jXC89&9LrA`[wxщ=8PK)5b"a}院2s4DsbUG2yf#8 1Q ,S{X˒Lb̈9,  TҎFXТ J@mltWKRID1If{w:ܡ!3LfRq";wssssss"&>IȔhpb8evo_8h3̟|-r@T>k άg,]81 /0\cWu$k`^fMPz Y=IV{ITz ׏hUob)CMd{N6 vHIR,w%> {p IS:kq]A9 Qe;fpgsFw(_ޠۅw|2%̭4v]Hĥ2Tʠ+.de2J6Q7%́; BĤ$L7t?g|%&ݬ9,Zug Q[U\mvPڋ+sYSKM힋y2\"*;YTſwBq~i>m{2qهlKLǑF%&eΗtӕ]ٿp.Ϟ7K |aR[XTKLiDvJ/1鞈T}(&^b=DOxC YC,"z6sH**ɺ#KIΉ wX >#:M5"SEд_b=!=1#/1K|It${Ӫ?,cr*&.1|D@UT$"d΁,a|\Fac[mz2 ^}|Y*J@0nT Z H }|*5`xn²}u0`ҭ]0w'ױc0ܷ҆Bu{ Rc16sqbc~eM"A..b?c!O(\BG_JL:EELI jgey<&DbdixWWz[XuۊO=s >n Vp :nh>  `^[xI5 \ӌ˻ǣ1锑QQ-5p` m4Ԑ+VtSDkVy I,VksjŧV~>&]t-йf$38< 1ooP%WJƢSDZ(;?AdZ3NTD\.<_`³2Dpgm2+*.>&eƧ6}lAFDПcNAՓYƜKDvsivp!ryx"f]Jޢ಻V%(; 7k%?y ~_|Wvbo~B47Xwo~FW) jQ7q#czZ1Uf3'v±I}a!,h|U ~z.%n#5E_U$Q r8C6":cAqCzo'5YVQt˾-Z#DJ}. mQm2"J=/&΋8&Ofcb,6H 8"1xUЪetTw,FV23L'.da,XhkE{iha,H/yu#G{DnVG%h͛\{uI}n~;ߩ޻wM Ʉn e:.lG]R'-X%668,i$,NU ̥6^ײDw Ht%Ɋ'F +Y!Ң`ׁ0I.GI*S:Aw&jQwggP@^} k?•/h#&XrxX?[729:'Kݔ*zJ!UnF΄](:* + @ `f.@*p ]|I9),eW Jh%8kpR9OR&! zPBftzFޘ2Qm2k:}"bֈ@>X{CGP_О95;o@>6yn/J:š[bet׈;/n5LD! 5.-܃B_ 9wҾ(ay_xQV<,B[9|W_cu_2N3_`⥌hb "a{5Zw~Gַ]==IڨlXcXc!LPQKMq@G'QNĤĤ[ˑP"v} Q?^BP9B:6vRtE%^UF }Y;LU~~ƚ#ڴB/n4ˁP-px2dQ}F-BG-8 -w["hzj$۽#p9NuId6ߦbr& kanww&B),AtM .v-{b+aB4mEE6DJ|}I!j%݇ҼW,?U^ΐo'`T Zx Nj>Ul|$iDQ+@Ltڀ?>23E^u1v):b8!*ҁt Y=ਸq\< aJG9KqOHg=*U`4M[#-̇w. pκU/b*K'08Dۃ X=g>Bxj @ibXa!$~,7Mt]<\K+JE9O[kQ',"nj"5>k ܂)lvISG4go|!ٓiV(HYBn_lι.-HyZ}2E@,ShQöZ_YP\^-k~rz|Om Wy"zb$cu)ӏ'pg6iN]g1 ?ӊ(94R#ZuIh\[8tYY ׮eX#-!!%疄td{!1Gy-Nw.p8ne|/PU+Qt `*z̸=d{]Q3ruG$whbtu+Rt wΐS/MOm&E)\ 1J񗚰Cu=T2ݴɵnʭ8.9/20$0,g H[U[%U 풓3:ex ̥z]hy98hbBaĩ6͚Ѭw<1NQz4Hh9J%e ,{KĆ|rk0|EgCQL[7`WuȂ=1&O1h;-q6+try s@1G@/M|NL'D@X* äsZn MXzPDK蛉z3G H_Fy,&Vecխi:7HC:"?kSMb|LGyjg5b1$M/d4cĚ91^< X0hyw.LnH(dj(V3%!k:,ɂu|9qA~+iJ fN& Poy_#JLѢ3["7 9ē([ˑ/N]glN <")9-m(14s G _;"[ ,"FP[u&]w-`ʩ׀f|I㈘Eٚbթ5wj(U`QfwpT/Lc W%u^fgP콥I#Ysn8ht:HNuŝ`%hd -S?# pY=m^tBH:kDaT$gf*= nEŤ#2 TOZD~v݌Z5 U9۶G%G{FG<.d:c=@eQ,4$ ?g LPm= JIjSCnѪ &;ia6u']^vu4rƍ==Xe'R*L`Oψ̳9D<.9* F+FԖF6ܔx#>RJp+5R|6U(l{۾}3Hy&MEp"EDH"1m@֭lb1(@*ABph2Aml!b`c *; o-)`JmY r_.v_\C"Tth10ZJhIVIgP6gŤCf|>aAB/*!rАLs⩮G1"Gw ,`?x=6z=8$qgNjcLM+>v1|z(Lic8z,F}2L:Zx[kY cꢅAQ:1jlIe. :O1) MPȿl[ЖCF|;ŒvK \s0鈌۟sE< QA̳ c&Q3*SǾQ=2FI! SiZ h#$59|e qeS6Qc. 0[Np=9u1dּm+*hDNϫpe}p+o"_EMqZr:u*&aI m[b%pH `tDr(Oީzl˓hG鏌d)Cz%d,%SOdy%e$WCi"|f1kNc ʡkF= =/zINӬ!CWQ6{XF-:gR<(T0 O_R$~<y"b"+ވʉ=" V6 ij0yt5+&3ڇXPe `%$H(MfJ~ƭC0Or*t`ܮs?@!8s*cYz`W;p4Y\{yHl Y1{{!(>U(az3k'a]Yd⑝iXݦuڻGv{ Z #|L:gAR/aqr>`nx.~{oqsx, />ZoĸVcǰ&KRP3fÀ.@=@ņ)ZQKAXH֔HNxG.=\@ӄ,Áx;gc_4`҉ŋ:c]/RålS]o+w/ݹ&oy{7}VzUm#I+I)fP%Z,EloDx4'wY&i :ئ&kTCq=ʇx<~GaaAVPWzy6{^uLnwp1tkBc;ۿ/??zh9557 ϳuj`zʡ~|+0`mH=Gd!.HT5)`PFg Y Xt mU$_2L z||8duk~<L\;Wвϡ!3GACI9Zy[:({{Դ=3Ip&' 2E ɮ^4lI8uחH[lIWߨrBos@b!(=bաE=Q2 U9WlYŀ!'II~Ic;f 0lM/1&^ǬNɇ'w b0ƓtY{ug]h]ʼnv'M2 /!cnI M– X N!:97҆w 1ɿbt%L:NT\cD_Du;S:D^Ŗ/I 1\ʌ4J"3ss̉&nf&X!}0vw_!  }<{C}QX[ 4>ZpsUk~ I`RםP㱜hG`0`rZ͉Tvau:NłJLwvJ3aR.oq9/+&H[Lp&])FS]8d0%i2.J0ZM#pl+p"Lh+ٛld*P"Зt#r#ؚ:0&]`뒦\Pbhb~51ЯǓM@@5WQq. .`夦ǔ1l|/X89¤k4.ԥnu5s B0&]d"X\02:nHV]:aҏa]eu:|(@X CCtZ &HTAN:/kd~wN5T|賶>@OwmZ"MoT s8I1#.j5A/QfDсb?(JNI<:Ȭ"^a^_?mAתޠhsi䯭[B% B %L:PeI7)FC)S Q$_FEQ<%A~ bf ŰaY{W,Y:rZRkLJ!zu]i}aT}-`/1XZPtC9׽8]3em$NsgLj\tt%&]?|V_'ڬ[J<) CIW.FMmkǤ8A KL: c>Pٮ?BFĤmR&5z g'/1^bҝqó9򽗘tB'x0/1鞀POKL' ~I hv|._}]-,*%&3N%&3nRM/16xu?~I, iĤ{^Rb}ID,I3%WyI #ml/1 =c]Vcut!'$G<<a1U#=1~8)G,9`L4I@F]oo1[Zx:|NLR46XH&H7vx>vh4e?w/>% O۪/.}8H#ŀdt"I(f8>(8kg`g&/Y3VX!D.+oS>o=]ᔵuYZ 3d4gLOn =i 1R!-pvKyڅqRp>4`8wo@ BGnr(]Mbu(Nk5MAh n$%82K&:.SD%RB0OrCN(LDe`=|j{{}"k8}dߨN/'M#n%1tҌ)d+'Eud8B wqlUBǣ7|*▷.cנU D"9~8,( SO]^v||҃#n$NW)) e"Bo ~` Ww*VD}"e 3b#L1 DH=N3=@;_ CCtgS;iVDە#p'&LsrFH#<".O=[5E|ͬ% xؑ^yso_NGeGDXF醟&=ntt2s2:PniӚM^NFS" LF{XG T u4$N#^,jlQWG3gG`an~_߆Xtn7|3` pCGnY4!:N+tL 2v7v{wzL@IDATk|:$i5_Ec @z%ŊFlPEHYwCcaҝ$@}e!{tmK>Ew&p859qnEY>wx{>H`AҊ\x:SDĥ*b/tr:0OF`:} ;& E^Hҙv0Z~?9Q$uӬ x=Ko  Q]H`^Cp ?\ GB(,PI7B.5+`M?=b]VVV^kQZ俸XXܠyl7}|6a]ɇwO03m;׮ >Ν1! ']|} mLI|B\dR;,]5NKiDC ME7m҉ 48O㸼_<஠?Jbxy`V'cΗ dߋBQ!`Q-{T<ӥ6B'>@F)i\ۖzuّg[^0]FZ0=$;}x]Lgu;= H!0؋+ؠc;ۺ^_&ST䚡Mw^v; (ہ/r#RVߵXR)Ƴ)~qt@M5gECI zpPl9}i(}R0^,Yܱ //͇?dl5(@.̢'";9UɎM=: ^`f"Ac;ǡpE ^/Wqmd.'B2\b><|kwOgW f;\4 vb3pT6u6M"vlb^(?pAa:uPe?xdxͦn+sk4l q'H=Tk0m6/"3 oDrۍ a˝؂q3&ЛqM2T $B="[rFVi7H-Cի2cp<2, Y`#EM\[ejYtZbґ~`oDD=,^i7_yd&qJsJKl%O N^% nqOQ6Ppm."x u/i,O{pna%\~',_x5 gvo 0>$&?n\6;Jb=&^g%vDԒ,37I&M u, %4P3( os`%*+&NɡsdcݓeW$ 0XmsJ6OFӯ=p @% $X\BX{i"F h }ڕNLV'{Xh9-*t5 J"EKp:fe 死7,@h-WHzcm7jXIņM` ٩Ra~*Z",* ;y-ZS 䞑ҍP1p P(#8k<`$m̉: )|+ltPגB0lĐ1t`Fxp Ӱʯ3Y5rC]zpio ac JII6&.:˷xEȧUےǧcꢼTK(@AJ۞sl:0>'FspAF_hOђU> z +ۉ*=yɉs4`3 "9C%$&q@^^޲G|G噚a$`md{T{N a3>'0h[A{ȝ=~Kr#i.¦ŏk E~{V0/4{NL:/ cy͔otXpN"Q3UWۚ:ѷ Ka9N[;h++53zU`*ցHc'FQ.D $|)O(ű5AfW 6s6sÛﻨO.FlhN%PUJ/dU/f"πP=܏|.:d$?x4oMLݼxCC䠝[Qȏ?:#>OIVF#h,]FhPfOW\Ťsvyn23H9'쉳\ÆJr^C&pی|Z}xu$nK|qػdd1`'m{I%D`3ZKc䭐`ׯ]Sm*;yBnX91鐬uӰWg`UYf+#KS)#}[p7}҈㒰VTxoϹmHf-H9l9p[g_&\uRn&om!QIL;=1=EO/>ySy$x#3a*`\ !.өSenN MZf<`+ՈLF?viybQz$cxN)?Lmv4,`t0Mj1K (܇2#,IdڃR ǽq\*%jAX*[4Ϛ~ub0b G[>k5+ =PP\b;_'羝΂hbSuצ=#&RU~‹4unl`.eI߇ܰl՜ C`D7F.ty& yzFC2Setr'JWH줏L]"`R:K !Cr9}L2Y-sY84lfI},jCj,=ZntQ&#V:r7JN& w5xtxÍ, CC/xn6 8::}Cnze.J|>!p9c=@b%cEX_(&ZԌ^gDmZ{($[ӋHO)%̨jI`jƺV2& YP- e&<.R0@А@2@@8DLFӁ ĤcY_E!*Sn}Lݤ`.Xvn̰AD-*jʘvc_{ZIaYťr]=.q}2 XuԙzEեϜ}`| |F5 Ad ae03m$^ ?*M^mZ)MmSTW!icNP(YViAHyuF~JaӋR3O|g;LT<@,'__芇v`h: [1^&rcʱgK4n5( vȰs#Z4viL%M@LFA(WJpJd+VDh!^#qA~c;$!a֒D!؊<@5H${bONqx^th7(OqD@S@xiaO =:<^ՠ Nish*0+£;KêtpsfQDRTIɸQnj KUaxCyz讈b!*9}'[q<d8F]ETkDR~p_[hc$r͑.]ll:])k!V/d)o9!j.j5,4"t|҃]{N , -vqD1 z Egӻ*g>P.,Dv+(._O0B /LFwAq2Ĥ#9ޮ5jlD^&]d1('&pf3݋c\X*7F: B Z܍g )_6 y|s%n%).ɒ:H h>Wċhڃ1!hoTj7^&~T)\ݱ.1.[?z4c%:jwȔ$=7%n6 BnC!72+>l˞xNOnFPqv4kDqLX)aϿtM2C󞢻iv 34u*ŠApIP݋[>:%SJxǷ+TTx!lG@l¤jtjM}踳Z̘saRgjAAJS8͟stqym,H˾_LEvpˉ~y9)&1ˆIWV9f +QFARf[}+Aғ^2{gDfc G/8=kPjT_NLWqݓ{GsL5ނ99`z֐Pu ʤ]qMRj[,8|.r!1`Sﲟ;q_b}1ڠhm<:1#`f`p=AB9QZ$ZRQD0PcǤa0EC.M=/d`A`U#wWL:\~7Cqe`g2khV3 Kd-; 8%-b\l\OFR>f$6}bT:9re0jNk4̏8Mu ڂO_'R@)2V2/&z8C d,G1zm&k%Ǣ( {;%%Q9'UBjoVp6*6#`tuow"8$Y^Cϯ7&^ܒc<$Vt|/+sdJOe1dn3[R:L-TN@°*4[·7Idsw?IGkS{T#2d(*U0w0uds>uڵ7gy|*Eq.UքĤci C71`!ĪS=.NE¯='.JP üD%WJ (!͜15c7 M+̝EJd'tz%iV}lgŤ¹@zȡyΐڞf{"/. -Vz_N4C>ic;}kt0*Nl={$sV .槢$by_hye;,Z / }:&@TWN  X0kikҬhlWWDpjd^< c9#(*Fm2A!aHiN64)o40t4]d'I#`]CdM7{݋NG?eCK"S[$A\ hZjl4s@,LJ bf[Vc?QYY YP]Zicx4{0?@{>hDxL1A AkzYk]',W 3y=ބU&FP՟tgsOQ^bdXeϓΤ^bҝ#IHTƤ*|;- f'{gtyp.00ڈ(}63ܣ{9¤}_z+IEu%Bu Dt,G@X\ $ VTͧ8;%KTeY_ա(`Y۞$B03^=%zQ0 ʱ"n?epXpj+"DGP>  l 9aA縢#&Zhdz2c{9}WXs^Sv8r>Zv? ¤#>'^uh2 L: $z|<:83d$9,P,aDe5\Up4ES;beHS\fEóTקS|.[~r܄puPz'߯ZN=x^ޅWw 7HTocH RDPkgYKHBWA" 1I6Q/kRUMtޅ+[yt-"Y 2[{>Z$j'W:#/<!& ,5h//PèpGUmQiU83pH\6V AP`Lj|^L:9r2ɚ٢uѵbOѱ3o@t|D '`$aUVbX`( Xj2ͲL*FA##LgCyPFXR݇sq$]m׾׺\&LH$b3@\|>6IG:x}Tl^ +m49tz,-a/ܧ?3V j (\.eM2{_z'X} ~Tm"}n@/z):!i rS ܬcdKo]!NeMap" &x,8w\I|z̲uBE5=ǘ,)~ "(J@0dO Tv9]MԪz&ݥ~z%,&'NvQhM*/ʨtz{iy-}AwˡXg%mEb:R d[ 8iZAѱQsX?]s@h ^&L&?Cic!3$]:ec! 9߅b!/_!L2C91H #cN+ pEWQo?#GTiτzf $P@bI>q"բĤ#Bφ2/zdr^ha4 w<}<"y>.Åi_n* &u $Eq=)?88ޯ?v./+n;ͣo}[p"Sy$AYj63F_&8$!6tc p$rY- 6H_{R7e5!!ň4 WvAVr}we=8jWm<#֔(˙LSJ$ Q,#@7au"ptCVKe֏o}xt5VyΪZ0zG rS}g ?@\S: `Qו:Z}Do>#ֽt48ggD&ru+7O9]8dK3WPG|rݱ~j.QJ=E\wB ѬMSf@ΛU Ѧ5f yf ,h8 !l%RMs^6FD"8KL:? Br1KAU_ 8_&D .x 훷^u*`/p>ţN] [ἐ%ls%ap^pݔ^؜XJaE# !O&dVYUmӃ9 Tl=h")k'K): P?oL:9 Pc(Ìn@K>H_tF.B6PcSAH@J3P wy3Srb&LU ODQTN;ug2:!E? \,1:klerlg~|xx2t5:xM"mwA5ʣXCD&r3٩flڊlB3G;,kU׷?ǕfxM/o0 ~lG<ST<ŤժBkIw/bҽ3۬ V;efb ^k ʊydQH&}Ukl$*\YGq?պzq?N{CRt: \YKbl'l0t$Tm WZ~y}mOKK:/jrI֤t^2MmQ!V*.[5 IrF ln j?d6SyRv!h|I 76_c+V0y%bQ9KG3zq`N?a `1~C%Z`fDt)PU45)1LIPLGoʷ1yL:zvzŲKX!yhd }q6xߌdVdFK4vΰhWJM[(>nE=Q]skC!N H`wiIEhצh2!&tN9!kqPt!(y$ sm,;5A%GAi“e\MGD-/$\0,TS+ǧ&_,L,'}B` "8]!I +G Y do%4(G*CxvI00 9Dcwa"; =zcd.<B,:*λHn sb@u2^жF:t\0XyGW~aU9s"h} ,;{L!G8Z6[ #D͒:B؍&]t(8"S E`)H9q^$e gCg,kSn[xb#,Y u[>/!Wf>p9Cvi$a t.>]\X&4dOeacwX}'lr}ɭύIdK>a9M#Xl@'l6>iA$*`呖@uİ2GiSO R]}.0-xYܝWb)=Q-P(E~<"Q |Z|m1RV8acp5/u2"fXiq:ynow]&6pjL & ?߃Cұ:m(ܨ}:Nb'4^:Ĥm.gv#1׋xcU[WXW&]MPrhzR{THR*C5lA Q ٱ; imEm7~.{NL:d$0H/WS8Ʌ$샌E~+OKDN215针3%QM.n|xގ=t Q?C'?9Fg$SYaF$;DӉA^nu F;JNY}\SzI%O҉6AN-p"Pj$rIĒT H b)S&;LWE*5ddJcdGG{N Ꮽ  ,_gʮj5·Xv!9&ˆ.0cfN>|G1Mӣ&DxDH| H؃Fx1pw7#QĿ\Kg^t8JPT̶\{8"-q2.XNɥA&O vYPD:RM ^d4|ŒRzuʯn<#( |@[5^%_Q .& QԚ fY=Xd((ٕ2P$q}53F᪃=!+<7ȿnQe[6M2"hC)HU~>ung(FQ*3홸|1xL&Q#̔/t*0UɷWbsGq"ŠU8@J\Y37z!t6]t |itTulU7] "u~wzu ^W>WL:A&eGg3D,-6p$(p?7Ek`e'#B^dXdOMt ^P!;c,Dl]:ut+hvI*_M|3.t5a,˱fw ]~;Hx%Qc_RP}P-L2D{^GǟHo]e>BȎPgo5OgtԛaJM@WA9 R|0P ifk YWA!KV(2;p\;[\z'FbӍ<~!*igzG\DU". 隄+3. "'qqڟ ŤC׫:~t3]_c9?33$fOHgCG) ^q9ݖJJrGw,O(AC9v'ezq;cr \€iדc.AޙmZ;C>`OT\^dq"]E*ѨȽH\ND L L:FJ۔. u4FGAS8+nMRx޳3忔x|+t5q* *V2Mt8K(T=281ɛD!+ 0=g5ED?qbQ< YW5MDWjԏ>| ڻcA"%:mE;f2g۹SHP0zzB3+Խ\ƌrdv0;4NvwMAC&] w6 1YY'}No$jl؟tYたA.ݟƍ[JrePOWw'O}a"@_p Ǔ!g Aoe]'ôd*Dm).EΥ%+n#Cg3EG>{_̫&ܦ0ot۽}^6en |͛;;s2,ej2@X*i<u*fͯ]u%fNc(jR:nTe8? u\MÜ(J2C{ O(bTtb`ԚaKFyo/Pl@It4>r#Sढ़w@ -Cy#9L,7zWj1s@"M!_MYO3FE(Z2|;obliU~T~xrN8uE%Xl'g1v;X v9 "-lK* .L cOg LΗ?  m r O|}W qa9yDF A9wIlOD{)ri ;!dT`#67;pgl#,K0!L}|tf[`a:$KehSڵגa~Hl+yGvh2@IDAT-_ k;Gk\p}{`q(֕+L.eZ6gIuytݥ7̅bJcLNG5߅xKHI,_f! ԫ`I!y?7-j")**V @5Fm@4''x8 !Qh"( "ljM5U*^wm|w_z"%wOkk{{7g@*J1\¸xNY(Ou$(Sdzm$YVG*ާ1M:LkU dPb؟3 ـ֎y̿b˛M{ l`n F<5 葛M9޼ˎ<FٙmZVT::\/"7d͌RtÎ*szye,e5j&m@$Eǰal="X[&]ճA*&b7$seiqUaQl 5ꌆlZ*C+=_ۧDT\lK&h׿ S_,m Dj5uMNF5d{ޚA֪aG*ExE9Tsߔ|!4&P QrAv{6bJLF5 $SQpB>8L:IIQ j9jگ1~lhrO-z=70o1]IkL4[d9t>xgHn,9i\ŤAiX8/?gW/r&|QEZGmI+#vhͷYlM!'ΣLk›4aM qKX_1 ¤O);ODZb%.3p |<. $8-a^tc;ۓ9cQ0@2:zzzx&@uot͉5.%CMb2O_%Ġ% (YUʢ'4艏MPjbY( @l162 X^H|E?lFy%'K:'\BI(+k!`zJ3W-sO6y36=NLUsv/yZ N}<;&oKSFΖnZ7 D5DmiGi?~ lxʷNA4`) C H( .y2t+'bvՑn,@B1;E.B̔dc? {hfL}a>}.=&9aɑs5*  ,:P!syAp%D^PgEU[gIr%V܇Ka H)Zwk Soqґe֨X ξ2 %?KݦF%0j>=|ai@nR -Jۺ{3mlw6n0M|m%v.,UN絣l%,ܘV{d'-ܽnKd& 4/5.w3! tlUZ6>"xfo^`rgU~]Zb!oxB=CUkl& 5]`3i1#LQPvwnR^R)J.p* gA^,䫫Vb T;.DYh -3p˿#1bZ OOOB4`@E^T<=F@-J?sn  L:Ƣ:4>z~Gh4(V%?@ ͺ 9d/2Ԣ?o+^#m|J/R\zW:{Z%\}*x( ܤgŽo@{w(>=&&V`d\1|lbl+ac-KFq]dS!ܧ#.@i.􃎫 '=(bt AuE"ZE *㮹WW{x$Ԙt,QV#Le";;.klY mƶ+? 7.yr8sI{^ "*;rش/+5;Pg͚@#ԩcݝ4w"ؾ|30vvYXQc84+;thC@7寲$S{o6x un.P+2AȳhA2J0Bk ;} IP_Do Bʱ 7 k"[*H?ApyYEJւ"UXW}w@H Q!-p ?(Ή)qP@T\X?ڇ/ݾ9an w#vB\TbxrFh"H>cJqQ{{26 iNZ)CzI,&2\iBr#t 6ZW9ǡpEU ea]٣ fA~H*Lh1J?jqoBeP{ʇ\p ^߉Sx8XYk#,qp_ W'Wc;M1O'? B|mo 긦BYW???!7sU.P+5{*,J hF2HlVAAƵU@@IG, 뇶5Q|qP:u:ZΞ` ɡ~ÄsUv^l6a|pn 3:%#a(@I&փI13@^s-0~70%pnC6`4.ѱ9)|V?8="jonED,dnM\TF H5nYcOJCFA`,sN]sn$ WCښOF*}xnKZ2P祿뿞C\R9wݾB8+3rIL:\HL1si#s}RL:: "P F@@:|O?R4 zi?^&TC$t-xw㸾q!fKY E5=gӾFCkN>M41PT IgSEH̝dqaMCvJ-f *?F`ߤأTH X^K:5&dsdL$ɹR?MwaL1qe9T/>xC\yD }c#08%3,,O,)$&J,+.J#%nAjQ O=5"MIkCrZJ%|qrw?R. X0:6DU:b/c& ?(zTPA nef rK`4WQMQGDAf;B.w&-Y5&{^1 !~T#& rY!JEs_=޺Es9$1'VB]5L+DӒ%Xmt##8W™|BJm&Bxb|h{0YP*GIMD1(! Ϥ؜9w`NtrGAR&L:F1m{^mX 1M\@(PI{f>'Po`lY^076<,u*2|+Q5yZwYidހa81Ga&*զr݈ĭ ir]m\T1XJ-JårS@Zr5=%AOHd`|INi۬ Ҧ]p>}_y}: a[&Pzi2ܟwo&a{q7a_8`gp0E`{9Mm);g{/8(nBKFAY[|Ƹݮ޼ycծ6 3m! =qMd9'כrt)h\8wM4(*_"BdBX~5;Ÿ8ܧ$PUkP^dx(ߟ:m?\fl6J'xLpb ECrn1 (7JŔ:ʈQbU6G )Ë(º%L 9LdcsüRZ3fӷmE`$=n^9ʏ'EqvA`IinHd Fp2np 'e>B) ij`utD|`hi%,,YSȬъ9g4C{V_H5eD RlĆ IB2Uq{IC!WxzJ b:EK)b4 LKYaI%.0] W÷JSAc042`l!} Li7vE#і RBhoS>&ݏȤn?f@NęhtOIQ>>EFg19^"rCŞR`ԟxNT6Wo|w$ONOTh |rzb'QolTT srD%C!S뉨;g QS;gVu>*XR Ǥc̢t ESت&1i;K`"*Fsi <{26*ݡk6QyWA&LruR"s SkW:*`+)Ą S/1ZƄek|<%d/2 RK,g^M=9ÐwbqdhFŵ^|ޤ;wfYo` fTP#*r~l3~ˏ;W 9aYUKt\R9cQS[ 5 4="rդ/tp\a9B*53`+Rb"H^$ %/]9E5hRtJ8r?" k!K#\~R|+~1@RHQ?S(&Ir<ſ^ aJKɀMЏBYQK82Xm%$ FUZ9Nѽ2*12ym)CV7:7v ˥QB˖Xs vOCt\-OtXC&*bY{@ĬU2WrhPMXR )?Jо$,3KK+we&d iTH4/'+&%<:f;b`^>dROA&y+Ի̣Q;*ճe?:]AױSLRDax7/g3cs.54OEGWp p v&ƊęwD!E^Ι{_  GF;nx|.t8,AÜ PYTe DbF8ЬtˇRs]ȸ៴u=C OE8{>iwBm'2F>A+Y].zT漧S??L:EdYh\Y 9oƄ4q _ D?QO;'{'⨠'Nu |xQ >?6{)G@ UzAkp4zƤgm"VZ-#R=|C؁ eP(JRMǜH\)c>nW<ÂqLդN^`WP@gU*Q37Oį9QZ&29b{u{*LQS_tL;Ggk`,oӆ@ÂzP)>tIP"寻TA^G/ y,l9 apjTaK{B,P+kuZpg_ ·ނZ1f[ ׆UG֎tw\5S(O-?8D;œJg~zx/DH8pTϑONH !5"Vy_ &]h"&֘t#߂:Z(0DdyxHpld(aV 4yдX~MޅZcޏ}iZa#?a枚^ :83,И|~,*2v~+m|<;;n{Jya?pI"/q~ :~W %ēh>l̉#?Mλ q lݍ/FapL: ?>ݟgnU| Z)kVm4=MF\טũ6VX*d*Iźc| *QX ҧ p=K<G|=1J'LW_BIT`a7'/&QE ]gH <kA2B_2O" *sӍ6`ZHO1mr1nϱD) b[9)=mԙ]xМD etL}g8VŤwŚpgZ*a]/<:8f{4QfM7;/ d W6tؘH m !d'o6:iU:g}jlgswNB -=QG5'DsОqŽLwBօ61 u,& ]C#vrYy55Fez:¿tq A֥NGt۪:je̊L(&Hly~yݰ!hIWjcYr `W\h-s98^Ҟ5{`\IDcV,: 1x8w@/a$T_Jb9GEr:Wv(4DgFa05ڙv9L:_.wz_AL: ci [)OFzh+u#-|\BiɫW^baPp uK1>J'00tl8~5PY6!niJbҹIA.VaGSI9< %gŇg _IL:F׍ IPaNqVYb BG9_(e\* Z~%1鴆k#o45-@e?SF`+*U&nzphB9_MLԌQ,B4b4?+&x/1&':N|<t-hkRkea7Aɑ;;r{omQ{$Q*dz&4}wU *9rK{ntg+&T/Fr^~Uz#JGk[w~!a,ĽĤۤs8_c}IyAѼĤ0O{i)fynKgL~./K".hy^b=^z/b;IDqXr?Y1h3 tPcCX ~m:O~⥗EF pLe!?5/ɡ6Tsg2*eFc^tX2>I9LveY*ThU+7LJ賳>!Y7negn.Wυꠗt^Y4KLgMYĤ{TĤmBP7%&]NĵUi*%~AtDrrWeΈ&(* ɶf':]gGgqM9a壓œĤY\Jy 3ahv~&<,,~TRX]$zxDLJQ#o@N)2dȁpxzַ~@xIIgO7BgnbEEY9̅ntyHiK q㔦י=k߁ԚY-2\<"#1{0~~>t[[[ޢM]-,D 5Aܼ$皤yY0?/p} -6zm9?9@7$!a`F,!D R ]&3sq0oJaݱlyUKwX4艏))08T?2JR&Wc2yGx"/'&3⏜Hcj$,ێx"0YU-R TR럺Fgcg1;R1HhB̗'K+s>=ge'FO|,J̷0#3Ċ  F2  wxO/Gy%L:T!zxQ6l<>^:JeEĺyBЮ+Eh iZeV=L]nW'[v[]ރKgF'%%1M-K\&'7o_$PMY%+?R<AE`}f}Ojgd,F4 Zg kp!dqՆVH6 `{I JA*S}HMNFx+uTl9nVƬ~aǨnB⏤xW '*IX^dL{cx'{RGpLj;Ӝ @ov{{xfiPc! cnD!C&1yg2n|xӹ8^bk25Xv iTR2%Gˡ~k=>$5^˵Cg>~aE? [9u^#_޻&GG'_׎.~(?=6IGM;k >E#,yɥԛta *ZʊđV \OTP)MDx#[uDty\u8 5ɉOؐէ#8Ǥ;:8q[%vLp&YG 2ޟuh$hŚE4 8UȲyߵXaN*פ¡ !1eg0*|d|HXlXOY Q*nm#RƽKo?яhQ}&L:dg}&h2nƤeF$B.-RFkdNʥ;zxErA*EP²ڋʶofgEaD*C^Cf`Wguۦĩ D|\HW_..$(=5&]SbK dx/f_B[tAF e%VG%*Pߴ(ns &=t;5.\;=8`ſyZjFa 65ŋEuCCg~[>R/y!$i:<>{I4698^?`bSM1 :|GHSW"Hr/GN}ˆI tV՛ͯM=ǡTSaґ($Bpy7S12nH8MbI7:iLGDq|vVθޥ9#ʱvYJȬf w%0餎nҟɟLpKvk]: עxQtr!>JSX8+qf逊<&jEv/|c $хK$RM6YDBCOn\bsr]cIGx445ʱXz/_Ĥ_&d9 =@ziHS\6 %eaRY@`#BcCIB!p.?^8B7֜gR 2BG`ҍ6*Z-V6u{}vv^vP`{C05ξ L:{zj}sP3 M~D){v)? ~Qt N5  toQIǧ|09U(1t\`!!?&z*=2@Yd.t X :ߵ eֲvo6VWP,Y?HnkV >e{&od7Dɓ c8pKe A<<\>X`ҭ1,q_)gR><*L f{w,ܻw嗿,#']INt4R Dj\dfsqAOzqE7 xw ie%UisOnI'H*DY7sJ\ʳvQ8$s_+JX:d%3x.g8P ~$+:mhR1*(y^N|-{h%IX$bYF Q'Uz{ H6SRE vp<d0War8#RMl#P/HӬlsݓ` oG zBO3P{+t%( e0BxC0>cC8N b>1:${i :ĖeFч7#8|s ywϘՆ<1Y2&i>~ 3|Ȼk77}/0m$t|1K6pV",CbŀNGU ~٠]t}SZ Q^,z8-EQ&s.Yd`jB*ʐm!]!hsE$r2؊b0'R"t,$y7TRќU9~9al1'J\0-e;[蜚i&JNȿ? U4sY" @h@XjS$L:LZgʮF\yECM$(>hK a(=2Ґ5$$rs89\eQ&i+ۘ y>DF; L5Y_<Fx PՂU=-& ` X*D6Z2,j4>IT(AxƟưqrh)Dtq%=!_%-Ϟ*^9-PnYXF6IppDV<Gvg .I;+x>N0jvjé#=gRBؓI*.pb>Y=̫Rbw)6F31۽lw'UM %(ۜxWm)kQmXI`Ai)wOqty&;8YYT[s^T*=)&QZths/TTx-:v=¬[,7f[ /Y8:Bz<ے}J!ߥo<y 8CF?ncO.,J$@ssL= =8挄IGo27^;$tJws& G`M "q309yZn5NH J(zFDE}(C#Zw6NC,^C Ut6CѫtASZY&H8?I_ fɧ_t+&3tp ڧ$䪜d/ nQX dzn뎫 -[`S3#h+z't=o6GJ2 1*Іq-KC0o)ZBio4%u 0Vea:Ѭt:Xe_ӑ ?Qq7P! S: :ooo &`M5~XKph_'1Ԥ,!6.P,xSA˼T_'U9)ugaqHMl搙V! >KH 3ҳ ^ra; '4Ǫ?9yPq{ڊƊN\3ۮӓ2%!2L0㤞ȊAExD)Ž 6 q8~zЯOҊ xҀ#4Mh)}fA|;{`^3_ex9KW_c `@+@G,5n.̆Vc :}$BsF{@_se!=K)sa Pݒ{g4K:Z/ΐvʄ.z:[NJ8V{}3|N}]\%,&t B5[$Ԕt|MyjBA]<7Sjqٺ& "vL:`ݙuiNmWRMCE&? b=!wٞ~Cs?wY]m°KUK%:jbKG_<.not%PMځ"ho7 2qgiϿb6|1AuAX=H RaD.xtIGlt{Iugfc2T㈪`8"bڬʍ1/h~vFI,J2<]=R(lՠ;p&36SHT Q{Oj+ׂ|GZmyATHKb/g,M`d;"]`CQcGV=<[I"FHngd0m{F>iu`I.0DQ#&F zHzY!!Mip2ސBxOy碧ոzơ`'"'UŤ[Թ<4ƤScmmM&:zלiã-3_5n1ة4YÚIMZMTU/Z/~}T ±X7YЇLjiG.yVnZX!}1 %|50vvU~Y04bղH1!=а~6[qb*gH_Imn~v@@29lu|jaѼ<.lcKIw:'ch4x¯̱x{< @U$\H-BN55AQܲyJ2N_,@g,;jIʕIA"~}g0v~0:9&Ȅ@k:e|r}m\C Zw˰.'+u'~ (}w@12ū)f@KC&Q^;g41_VL1s"/5stjm Y:o[w3ddћh ~dflp$T&{kɦȍN͹Й=PAbf{4Èx.+Ĥzkt[+=6}b1:]Rʾt>tvnt͛7}:%MY;_bt5JM*@OZ`ұ^S8ִg* R 8AB6Z `EmQG"*Vx,dV/Әw◖3IJ^}W-&hz%zɲՄGB[hO_BD?7- uFDhA9wI' u L:k96rQf-{S&NGI/5HKL:II7Ӈ^TDb.ؕBG+O)(@LS7]P2fKLJsP镟5/1J YO nc`\}CR#@B}taNO[rPHc%vXpF7>9}Q8J;r!>CmOI7wԨN`x/ȬKg&]ESoOf@ɚ:ZOt V"{ IqS\RbBt#bY4 sV `9YErB WeKt]`q X[ sBEU^B9լ<9A~LNAJy[ NC#ڃѤOwYpD+"hgAl;LH!\La5$ W%"Q*!р7ytK8ᲈt`Mgc_\tpsj !i+7)TQsno" >+|=Cp;J#a;pFx&5ElQt<_.4OI$+a:V1vf \/E8/ :-BQ`BgEeTUA' 6&HeͥzYB= ~+oB&~tK{);fNBQf.$M:qpW Ud))!A)13^y5/A??A!WhVmPw!K¨*N4׿BŻs;XNp=6o.o$^uӅYKY"~K4Vݣ-K/trˏ>s>qbNLP{Ťb#)6 aҐAxԵR4)Z:9>I[%}&ūtQƞ0dU71vh;<5PTUPi7izax\ v+%M|$ Aohrk7X,sV 0Lc74Q5: Xnm&w]Ay1"0, lf<4|Z l}|4~4|ȁ!ਠ 6ܬ8oq]~G3jlIzywL|=omu&MSb]>C]|6㭯|hwWםMh9*;gbe$U]~L5'PHkm`47ecZ̻ٔޜ^g=G&-&\OA9lJ8^s|4I-3{Wp,8Se߃`0zbz[]BT9 F{WzMui06b>*ƅ~®;,c}DX߾@s 꼎`]4%m{ЛL$> Gm-hk4ѥ''>T[% ?0+YF(XJ|Q[>1I#BʍzR~ntFe0f1F蚻|q}e|#5Ry0g>ġTD&0" SQ~c8sTHveP4S>{ڙ6z LJ+\*tɣc hUźaEs6YBAɩFt2C&cs'm]-{?S1RGgʼnD*Rj\a1 e~Igۈ Mǧb}Gv5Ą*9}0Ev|H/)r zzh,x8uN\:pKbU @I;J4Ǥxg8vOWCrB n1‰g97 IeZjm][c 7Ǭ=R2D*b \}'xsF{<#Sݹ||To~~d2=y󕻐1a*,zqtSgKB[,(V%/)y\YHꏷ%(P:&#uUyK‚SƇLkAճ0R"FD;0) }ngd0/,Qts|B13I'M?fSMTh1 8D,E*Y"^ EU8AMM3k1e?AgvBNѨݫoch4A yLV ql*52DŊx+L? {r63A!&s/gLQAV͸$c|ZftL{ԷQ)ڸF47 ʢd^$;bBlEr&*S֍YuoD&)K;KȠpq9dyD8&,yU/ZW  _99oa\B&D[:&`+-:M'=0iC$1*RȼpDf_BAN ~&cXdŬG a!_>I ҍ[k-vͪnF1_#pmT>(7T1MxB%>8O~ Ϋ w@MWoE?6ƒ];d$lmz彻W21aخnӐ xn+?LRsq2C }r]n.X-"|MiOI.|>tXũ7''3>R&Y!` q!c]}@ٴtOQA|/-?J7G(݌fO0O졝#-HS2%̝BQ-{TȽOIWkvIi7[m&;ۓh|OJkĮ5>%!2iȋWYj{\E{%p6Tndc=S4iu"!7՝#iҰ/PNG-^p+(k{'O+`# !/l~lK)'#Rǩ,;뜩oؔ%746e\ͳE')acUPejP?1k1T_Gcɪ^h={53MG+"<QJH{! 26D-V6U̫RV2G擈 }=6ga ȶ&w Ş;U]$ϰԪM:h@PS&ɝ'vP$2"8%I7%ydD:؀2Odݎ~I u-Lt2pR>d+g1,[< ŵ*H( FBɺI&G>F [G0e(M.Y.V^tvj(J<Ĕmbv8kc+eV{믞};CE  cqǐDPr#Ħx:GCŧ1uQ&Wθk+pذDS?vp$:9,VjzpG}.'P#^ .ĸ}pO,6 xuK:WVIY8}\l!ҪUYW,^D(*[` I 0(=1=}IFb:!"Pn3dz:\\V-ƨ򱹇WkRv=K,;h:9K譄؊EZvtS6@R "A-Q/mG;"[|?<EȮ.P`A萪@bqb4OGn.8 ;p8,Jw6K,..0xD|׌0:jLw]=F;-}hm4(PpM t9MB%BqDEϢ4#oMV=MՓSf9wk&1d׹cDdD51KUBx-Ъ Z7 mVzfq %WtUC;5hj@U*֔SL>GDUdVN5Qafnnvڹ{;3f=0'8 5L:yT_= L:FEY`HH^ pr]+:47ZgS !~? Xډ97c3=Q臘aDy_N2+?2N(X'~ƍ;V摧ΡI1,sfl<5gyU%=\P3z1f m 19ۘP>DY A3Ϸ2,G'}NV9[)M n|sR01A99|!s!1{H{G7HxxQǤGƬz*Ca֜BBH8pB=z׊1~ujݮٻo|F.У;Pa B|ʓǸbIEUFwx ДytZsR]niuKG5I¤c5 N`Tӈμog))vr U`H]+ah"0V*Y,"ɡV7AڻzdoFoK+Hn.J3{0ڂ`?OS:& J"Q4q9ݻ_NuvCU1W(1cL"X;,Rƣ3LR_).C;wX.+.n0IuF- .!{L5ܸp¬(ISװ>Elnߛ`fztr8kf&tqtr>u@[[;GpbYRzZ13$"|bX{ýnrcj6Zk믿q/0 Z G A&[$_:5ng:VAM5\+G\+.u?ɯzT{?{8P1V.- WbfL D&a1'Gʵe+דnh# ZEgk};C巿mS{D@u6hs#dܦ+{o|պՃWн@Z ay_I/ıQy6hQTc*I 1l^~̶i4w&9'#84<—22O~/OdQ9r*MYbdMOrpNԸ_-{ nE0;AIՔr օLe/t.Mh;Z=ܸN|?"Rf5_s4zM@/?IZE0)J2I${9%=Vx `owsFϹCN AѨ?wjܡKh (LGbr4%RIZ/@OYX"Jnq*,>^WLbS1ii=XMm$E<gw$BF'Gw$X?:qo}my7_ݨs/10uQ->$FN, Eaaz[<|XDoԂQSmX#_ V;05s7TFMX At*0$UX+l9ZAC#S4Tz!bopL("fTtYF@ldDIIvB7~bj0j/SV3$U6/{#2]tQ2fE^dq\ɝ;#D3"!@bK`)ݒM"A^e'0 kLƤ ×)iB& +¥pKjp%s>jB{|ĘR)|PjYZD+ 춑wwz 뙃B/fI&7%\^`QZ<`m\`. 9:HXJɒ2MW'taU՜j؇^n¼PO4:'00byLX~Pѐ2m0$0QVXazė S @.|?CM(?a[RI- 5/i b`yJ@.IGB, L#YL:`gbpaw]0/?&C-KZ|nL'%CJħ.M LՀ O0H@d"Uc3bŵbW8]ND>N#@F踒sPy,50̀#y}r!K6t Î=:V%;2 D!vGՈ=K҈u• 'Dag.YkgOmxO]wIj.ZdtsW}/ &CMW a(G?ђ<f#aw%g$/#1ɧb=)L:yWdW1jN{٧ԃҧ??$H;({=t_{ Ѽ{*,=>oJqar~A '?_)|ڟ?./i Rt Lr86b $YK%2&* Zs1j=.wiA#2SVЎvbFWC{7OOdQ|yGF^`=sISݛ&ÍBmQtg4L1O<&]7Ltݣby$)˼ 2*lctG,5hH/˵2 Jj, [I7َD(cJfRU6 + äói|- n#2QO|y@fBl [yHL:`IMrv8涧ez|C90eENdpt&3$jGCtLɁX?Äi h铆rRz h= Z^֥Y0uh$xz Ztp*RA'`XzRi~E1`vL&]b@2>mBS0ĵl ޕ@% _%ɘ!hYBr*%9Q琼E<^ DE*M\aY4+&O0$Fߥ?e ."F掀 ZL$h/xyíJ4 LjI]"qו0*ɍ"%UdX"@|U`.?R%?uԩ-HäSh"}dJZKI&5­,hg\]'{D#^[>/ NGfvFtw2یF(~֕k{&Rxѽ%=I0%G %${ϛQzŤYI &Dnϗ%Xl5@>F;&! <d1윔FZa@[n"&bIDW1>+%Rl;m)RDP'<|D } ݐ 2%P'D&`սI+ؖX&P"m.KT+d[ jէJ=XJW;Iv6#*a7UCMabecmBrDKaXULEeIUtꖂ0%lb{ R }DݝfgKŤC'Vqb-z}l]{H? xMj bNL7nmWqޱ. ?&t\' ã~d!U#9^0%?׿:ZR 1J|Dd9|Aŏܹ{F}$OJK')yT4O˼K 0Ǜ"yћhhR^ L@IDATh%G=۹PF*`# (L^5-QGt~P@(dzJ*jzR3 d$ hMM?ͥgNdy 8@';W8ę"kCZGJx(hCL.:9n8N.ƕvY8qC{Os7n(PIJ8xO/Pp덶k^U[؋!dbi ➥Ye8 e_Bokiތp[n%tH&Lȗcw 6DYu%y !klXsmUn3K!(JI'Bl'9nD@oA:؃7i0^$neqJ&2#Nsx6"kz6YzrûɞwU#E] xrxi/:qw ^z~;u}lP&(DaD,ip|~MezSk!c;K=>Hݠ8OH6lŦFZb;QHE" =C Z`x鉗N_,HD6'tDtou_6ʪep7"o}F+WMWZZ%/fs2b./=$xEc2z+f3ݑD&j-E3fd,0y_f2h CAqMs aL/1t }V Pp}h_b,jvt4]`0>7t4᫯N)?bb1N+ocǾGyFX'򬇨Dty(]܉XS6Eϵ1YS|~NA)S$R/J'p& #8pfc<6P#?d,$[,m!/B#'%T\wzF(CL153+f c"2éYBNc"۔6{A徱 le@Sx’]jOB~w!;y!!ɓb=jl,XB`cU Oo 6䜨 |nxza2.ddhFu"˸gaOdd*$ s0{#qfz4tJIjZ}:m_LAfd*3s J!uKhm0= =l :9*^7vUR" FI;Ͳh辵КܡH,5;٬<{ѐ HF/PD Wb~H=t@"8>9v35jM0Ш:9A =_zƠ=w-EuGGoo gbJH0鴠pbfJSv6!H9B:H'mPGԵ*H~aS=զ{AWyzɞN*#;5B=B/I`,~@ΒJ0J3euIljUbґ'̎y*s!+nJq"$J[ |lL|&Ȣu||D,LDeBiHD_~x9F9IGcn&H.j,yƁRyKgw#/r92_Vw&y =cL:zI9gqttm6;>&]k#b\+dKc ⺮E'K;}{UUeodp@#V#:'tс]:Dta{1ymݠW4F??t7fhz~]r] /XX EZM̏ !\`'$FǝOTW-׺A8/kTȭ>.]ڎuI b5tvKמ#ӐhNRXTb]rk߬I?1֎qI)%\\ E]ՓX<Qiwҽ,@]d^R[?X`/*)5+ǧ.Q"a5 g"E 6vfsnmCPn@2K0&,AY%H3 %:Uf.)ERƢZlT͑E)JuJe";!& /VهCE[^Owϰ_Zu8y~HLR44P x u7gIKxY bAA>mԘSFL.F셹E9CQ3,=6jX JAEh2z -.{rݢlvRfFk a5+շ/>5&/(wu$MHH߃;gBZ,SxySLi.1F2T7n&/i5{kLR,R?ww]v|k7d*8:,1~>AL%&3;l "n4(IG{WO6|k DRUׄoI+fj>%ETm5q;!.Yob-&ܢe wvR->)Wa=& i yibIzJ^uYZ׮^d~睷$2F2rUT[}cUԅde^ΔXԵ|/'\cyRŨ8X1٩Z4ߌ ~eULKgQz@H+G G'RMjgISzZ_Yza)qFD_Ґ/*&.)H kve&c2t6usHhs Ցnd#;?B_]P}JS2T3"5Tժ3ӢfIį:m82"t[iՑeM/i[łTѡZrmxce)s2c3C2/h\Y?y,7ىc#Ù'gnlp^lt0tҌN18h!.m(ט2uzkc[-F\j k-IK1$H<3\h)sZ&bT`^H_-~#&fJ@l՝ujI{vVV[86HBy\;V$S2.h$0Ld&VzCb xdrr?;L:7± ^^H e+ Xl`Βp|vtJ88Auo5e]J 4瑛 VQe@;P*b"^cҙJȘGO:0 &]z`4.ma&"5ܛ:|X?C1fkg}D؆)=%dHC|]8G)&. =rKI7e3ڞ|ѕ 6v-Ԥj*qNsDҽ-őZ/ DHWRsIOX].Dqzԫ1+z6 A,J"%bjIYԘtdY8LpeDD+84茏%,ET7)hy&];0JuBx!BYczFA>:."'pk*L`gEIvioFb~(ESs8qGEn+@dCb>"A-oі85^FafP!xN l0PE| X`MI7<κEUd]_QH\x] mhq*c)H6 6Od!K1Hn0{ҭwiH׏ eMNtH_L:4FEɎ t;L: "~Uvp~)U$|/ig)(Q+9YߓCA.`reE46L:rVv;8Zocd]L:*2J`4tetd< _aε$ǒ@>8`/)+(HfA>O~  .-%(9L:|Q՘tɻ9~Y1騸+\U}Ig@.&ݰ݅ 0C)% =1MsPg Ig\ŝܑIEGŤu!2W`-fB8& HF4m6p/|JH$ф ?ۧM*d\ewo>8pȣߠ{Pjb;]GI zjD 瓘t=G|L:S'D^)lX͜h:SkHc84*?jQV|^4('Oę6Z dpwJbb1²HNܡ6qeq(p ]$C =G^uUYaREoDf %V(|OGL#롺QuW_}/ߣֺz+Q$LEVcc8*KI8ܹ!~`4\*5]waEE\`ҝC攺k LgLU鏯_`=c)&3m?9ttXf@)LDKkٚnBpRL'b}!l,_CyBo wP,K>Jd'GP @rg?~8$ H8f?ۉI'b+44jQ Piղ$9"B-~x ޼bɥ‡r>5E QFJ'B_ & [,rh6HUtx"Q3fvo Bmպ~MlXK2=#>W]yq(uCت?#z[t` a-qd}<0`1;DQ[z kC'V7oB@EDB=q|BEjTB=29$o|ڝZ=sǶ'äcHEB*IpcفcFeN/cj 6ZczTI,)9-.q܉i05GmA+)9yJ}H$p%#tBK%탱KQeU~h?A{{޹ʞ bo/_O"1OvHGP[<;p +^N:KT4&ԀWtk%FP:)h:(.ՆMMjw |jBbl~M|v; ~nG<VMl3/HBQUig7??:wDиk֕?T:I :@ C#gV{%@hhYB*SZi]:Y^|53u,Ķ|*:9: 9;`sŹbտQ)BLۂ;Y&zYDiU~O-DYb<~zBHQX̝sqSg/oW_UMnKU&:R ſuh!Z?sR1T*hB$r] E}!>5c9I;9BGǤp5Q " Eޭtt4^`d$cjHNj>'wr|)n|Ph@r? J.| ?ǫ0u-T 2Շ~ޞb:$vFOI']y%bn2'$͌m5?~9yB hJH 6=)Ʋm;, ɑ 7>׏:%)©PO(Wq4+68 LGǤTgIޙx.U]#6O=#e#mA'~?[DRSrʟ%kPv[A{vv.x ŵ?R[phk8 :!U`3}RL:ZT }D1:$U@f@fu zK0FIp*PTtyPlf_Mtm>^,:^'YL{1]akE',lkz]eOTS{NFU3 ͳ>IL]Aq]njA#1? E8Y'L:UfRM\ͮ?ƍsY]~.h`e`aH:t//Y.c~dqZSG~>6&|bb(*yg;-qvF0.#h Aecne@T]};6A+QC 0B׏gY=yB/uI20ݔzv=m0jd&_}.l޻w_zE8? v}3̎Q5tLwcc4-"PZ򓡓=Ak6ސ0jG@z?FS.f$|T%\NZTpF[KviDgu463'V0k# 9'?<0V?_eRn-*!&yޤƚV"H$aJJ»{fzK*7m2,OS )u[$23TB -В9 t!&$sw14]>Aݿw[o4G{{h@j=;L:/t3YND%!klSv͚OJΠQ`(3IL*.g~md&&H?ad͈|? miyDnådeF&cn> 3"%f4uJ MnPo#M~ɤ"JCxc!H XAQlp Eyǜ};:3ER*T^ý+Y jM<,RM[xG8 LlQ {K/%밳X<%#(LQspΆt<1KB{w;#qm-qGׯtHnѼ9 e{g :!ݻw[[[7uB9>D.W"C%(E&?6`z'Oq8KSwZvR1%'fh3Nä;,i" tgXsH!)1KJQVS6ur"AtŸxSl{BfPOx6i0ĤqBy6 ȧi17{8Yt)  (+XR~y_9 0!x-XHIDbPz2L@t u $i`-FpA%> x/x,"=MGa5zGLÌ"k*V)YwAMFWYs#2T m$RA[>0k|oN^|dkk%mAi*21{2L:ݼQ1$Y*^h$6NQC#/z1c=buE)bf% ROm'%6UN0 *R3k>hn;OJ9Ř9z5${&9އ4d2hGavw6NIh=͙DUF`m z,룣v1(ɭTy"}"sʵu{xB FzHpCCj.eE_%;},N&8uz-b13QVUf@=C##ē~ohNwGH)&@pdP.tqWS\kJIGbG":v|\7 O^ڔD:3#ߧ,cDfR#+iecDH%y鐞[u-l>j+Jsw[jIDK*)r|yUv43eh4 ֘tfR qQCU5uSl^NLXAxD =AN%[$VqtUDwEM\N~u"& B#qc,5~Nu߹ޢ>㫒@2JnTt NvK8њ+, Jb{Աt`=L$vet۽~wpNK?5`.HW7_jpr˘食!eRcHGdO6 izs]Z7*hy% |g>KL:5!4Mrt_f,29B'3BIYv_}\H HMx0귻V3N`* CO?tPXB8j=.$aY{a3̩U*۸^ g$W(J& xѰ0A++),&@F% 3 HCSHtf)*16# #Z;OGXUv&$;HVqxp,x/i 8t%~k2/wp> 9t&QWWTYQXȘ+4BMHX8 *=|Vxvq57TٛM?:Qm>8:QTPⅹ' wjymJGgIG\n03\Id;<6ZyC1x ͙ED"&Sgzkk$h)"ek`r9yPRSOm` dZVw]Dz>>nxggIXaL}0Vj`x;jJK[65敠!(Qf4=$?9f02r+/h!)^U+s9٨Ւ 3IvjѦ)/JZT~'?0Z' 3&Cb])tPV@Rh x w4_9-ӕj ȚO[]kQ[ʨy Y ^VC6 }DGt7ՏsGܩǫ*$aұ~Lgq&_N&xNxc IR!{fP3WGG%fT@ }:Ϧ̔ԎU-+0rbu^+eӛvS@-١jZI?5֝wr}2,lLc1hk!VYکO ;/w3!D>9SZ)L:K`bWhL AҒlp״ 3uҰ$z6̤7o0⩏ZӘf, |PW±tmd9H=_ &pUCAa1eĊ39BI?'}3fժYI{fy8E1,s%bW3Ǥ3(ȡ Y[" alE9|/?jS}CQ+ w{DŮ~hCrVI*hnL!}4kJ:yuz R7yCm|̓e|w ͦ\f1t֪Gdzm/G b@r#/0Esw'}MU~)%Hc68˸+Đ lZw=# sL{& ,In,9bҩ7Q_eAA c3ܛP"#JzӘ¡m{%;lQd&O?8Fp) *qqI QܼyS< rZs+ B ;#̶w6*(Սz$l4{('P%)[5y/ѥ"fFL1f &;EW3q=~=c-ŏ:ؾ&q~;Ƅ,_Hi{GŸ-äCv&ZwG~:\%X4?F[&Rc?ߋԞ\Qo}KNLb3R0܁bt,>m*E\ rN3B#GC0O>#Yդf`w ^͑CUYz4KM蛡/1 VP1&¤"B"ӌ ^iq׏&\\a8\xBJQyrN5f@ !r1L%3M Ht ۱)x`ŋiJ. l}+@5tamooO`&c2PWfB¤C2I"ƚA9Kґ`D[Eqbn CB- 46\N@!9#Däg)ts14Qϧ)_ LrQ^IGrxA"ȒeO)3fٕZZ\"5QR& t}900d`)&%tB^IGFn|L:lA+IW kc_bugц!żNA!2 &ZyU1XVV81zIuV(68QS`tF^+$voxap0RceYO0ͩ &1,rPK RNx))sI< L'3G;N#+ޗv;S/m-B\F֍{I0z=7 JSb>V2\܀%aXZL;`esdL /q$!W`Hjd+yrt L'q$]ii&R]\`ұZ𴌩vIW|##RYI KSA9`_6%b4\d zvb*/|o#.{=I#PgA BPk:%j+U$0"BqhaMXm} %7#e[cܱLb֗zs_6BY"wbqy[sCOaҽ(:I"Q_ʸFsU*]X bU˳FZFC|[ mX;"CVIɺlaa qe^-aґ*\~ 'y~ѻ_iL:p.uYR Z(brFPת\i%o%Asxj"\$[ZVW!5CY:4qT["ןG߬F~gp<^&]aVY^څGpIZa҉YOR-`c k.s}a0*%B>i$8&"H*dOtted/]5x}$'J0(Wm:ĵZ8&r9p?P 1n/Fv/SpkRydGP d4ig} wxVG8ptU)9t؈ QzL!TtEt8]^-3g;0)mtJx=PW-w9#7݊cKyVƓ"PCzq_ :G KR!aUäSFuH$ ~6 IW$#!!).$-[N;rJ'N>B)C9G&&M6kr$B?~ J!MCaa4L:» cIG& ̊U2Dw/uQ>BUd~#YLHkW42@6ީ=7r_U=B^`xr']G7RWވDE}\*n$ Z{& M^BH@`,d&х7l o <md^Mv(UxX8u^ - ($W{ܝIR8}i6v4J p%.2GN-IR 1Z2#Ebxc5>([ɴ@G׀P TW`1B2 \"K?/-dEU2^ @r. R q^>shޏWI:K&=~jL:o0He!䶊>bk (|SɓNp$spmlGUȆg5$C#Ƣ*LCg!TvΎxF?%4P;i 鯅ټ5uX$G bemeO_CˊƉQ>G0lΔtbFHƵ(*bwr=F﯑ /oQtCx]|z"ஒ$EX;kW7 $ȺX(z] t phe#8Zûdw*(K: G!ȥ11e=9u8KJ+5wz~ccMghk U5HBqr8>>EíTYZ UL;EGVKhu mg]^kĤS`"\am?-^ 3m4IS nkCq0b­46=WrgTy1T l~Ϗ`48oF>ǔSOfj :ܻ&'^ڦRĕr%T>t:+17NJ&pf3Sz2Qޒb%3FuOr͐aܬOh^\E(P :)< 8o뜚8D*l4Wexu.IAX1%9#DR#bc]`%CZbCq 3Z54qB^/v}T@޹ʽW 'Li;^4dxxaE3>:[ŹGǧ6uWH2c{?\ )ZtRG+o*SiiJMpvXGMgs~6Zr.?{iRz]kEV[ /yjo\ѥ7▇.: 5A>^+ Pch "BtFNI5.Pf4/a7JZd#( 5.@Gh."\w/n5`GHp`XRU7<_?m:@#B:G&h93cdQwjJ:3C$I-Ң/X@]bb2MU+Z Kͱ8 Pi==ηG0$4(nMJGW d͊D7` $l`j&՚kI}XY1LoF^2M${H_ 'no|m|l<A 04_M;JX,@Ք,@ !tiN;s7m>d*G9Hva1WF$ rekt:JdEZҡ3|q+*]\ϲ?VQh`ø-*ٴj6Ngcr;n0nYŧzLL:XՅh/9_`s/j"TsDaa 4 TQ8(@pjzP8PP0J$Kkwtib,K :+\FC8A PtU9RZQ.140 bcHvCtbՀ;N֒MWݹA!YBšV%(%? a4 ym/,< 3<:twr...(Rm@-$biV ҏy 񋹲uwqfiw#6אJ,&X዇q+Ics=Q"dDj(Y; 9ǸDʢ=d/HjAkww黭A(X 4a&(ocH-!&KLDNj)FeD8qVw^DеA#; FFfA@A ѫf]ҚRl5jAsiD<¤Gɰic, C*J%t,*/d#" P ͝ E3 ]o.ngym\]z=HZ8p]otP'9-Nʣ`$#fv^< yƺSԦrM[7*C.-D{Q)x0KPDC{'Bz0R"$*k_G:ꪽUEDu|b^]c$Mߞ6:n6ǙhHP 7 IrgO:4krcUJղX tMd~͆tI7;^g3I TMPYHʅv3QFӲ)}נt=a >ȷQH bٚރj-P?wa6DҐb^}glLiKpZ e:|i-hf1+J褬2VCaPƉhRklRՔp-Gzn;_Z)v?l|1"AJMp4Uwla,,Ťw1(5MC5ѥ|QyrN`dtu㛫޻H]nWxDdFUd RMtC&zp!@bVF @ZOF m hjA @nhU7*VVFfFßv?#"32+2Eez==s=l#4 ne*H]q赬!<[ݜ5ݘo#+4#'/f043!:MDp:fhwMDT-hJ,2ׯ~q\^at/\K3z rqp_}L@H7@023™-a90(Dr2 {3)od`+L7 Z4x-4s`!Uݔ@ jԣŰtF`r m(g5P!Q5L0͌QFA`a1_p2#xzT .!$b8} $PuܖWc<<6E}L,Ǧ>0X (  ia6xPJ{g L==}CG_edΎj 8MJA4֖Z!frGP0~u&)M &k GzBk*#Z=qQWLc= P=~bT`*)Y3)h4'oC3BmgH1|֗3υ:Y&]lt@T6'& 5}:tf^Ё}t!rViG>j;N6ѡ'zS6VU*1T]vc('9ڝ'kOE.1qeϔ1^^+Sä×}3 ;p,/+TtP H 4Vk)*/ Irўv_.s; Z 2?dn&Bkg$mk ;Xj͊*J(A]$Q?L t,TЃ=!AĪ*}W.sF+WBCRA@WB 0r`e55te2$ sa %7Tyv尠iwdfS`5Zcۓ}«3@N$e/Ya5lp(DM akju¤VR]:$̊1 mKGu'TssʑbI}=BIi󕢸K݅mv.\?+$_,.w <'SКQL:q lP]!.BK^EAG87|sj 8،%2 `VkZ#S.tϴmdނ@7E6Qqӡmo!TK~؎y~ascHRFvHBMq9T*j`ҝHhy3=Y43i&T*8AGk}07wGViolh_U|>" HA鞰6om1tLkY?";銙j|t]G.Xq}\AP$vHfd[0WSM Z2nΞW'o6I72 Bi *^H$5sBtvz3!6IzdbQkhbǸPl8`_= Q,%).uj_z:Ԙ CVFS%YUĩ1O%EvyI0cgʎDU,RFYMҼ W^y ;0p4s;L\u9a5jI%!Z2t~y\ĢWDĴ8UM 6i˶z(Wv3D7{ـ8G@21.&Ibe)t7zt, {=ԩqSEzDz&g'ﳔFˬa!3v>`1j1S&/r&] Te0Vql!hκM8ZsHE"cTHe`jaޖԺgɓŌ(Ni"cGo0Nh\0BfȒ';` [mFI!^gkG̳((ae?v{*Au??yo- 14uzFq,/sC~c# ɒLCE%iM%Dk+*;mBgܨkCaS!Zpb0/KTPjg1鲏Ƥ|] ;sƤO+֊l0j_+/[dZO}d/ LlU)a.A_LQ.>IL" A zmZt.W?+&9eK4GOL*P)շ\y*~2V):e> BIӝ[V0!coOӏ<7<Ⱥ5Z.v1XPo ?]dE*3zq 0zr\KII`ҡہ; X<'4¢sUNg:E+`)a1xYP; Hs1L:|IfBѿ˃IZ1܄%oU|2IiM5H$Aa+FY n"(x,F  bt+ t-/C]'.1QMXfw\qF35ڳr C?B/;="o>uW~{{b!_xPJ#Z uI<)ttCƏis_Z'xutgqK|xo9neOƺq;;{6qN;}P^Mϭؿ2|#wE;>W/Zᾌ9 6{Iw!FĤd~`W2>@0XXÎVnb`ۛB "’pTd3e)///"L]w3A/1鞡5rq%&S,?^b= d$yDs|p#qX}qV\eO*EzcY^v \eXbkVp#Ԟ0|Y8z .r?ЍuXbd-&ܺʁwq; n V&CǠy %b4{eM]@n 0Qu!&M4RC:"NX,ڳVb l֧̲O[[M\OJ`P5Ǥ_ˆ5Rogxҳ&0r㏬xCx+p+<׋I2֬ xAh"'Z>ɫͿ 33Mo@{t{DJf%V(_*FX9;YWbƵ(62"ɦ&s6&Ϊjy6H|3σt#_^9+ gkKQADTM"9^EKD_2UɊA{qBJRF"E]6Eӄ|<~ԙ-5ݙ߂~ R;Px=*JK8h#dx}|r$(%JpGܞ,7VAl1^N` Jz "  j4fi,E8)ݙP[,<"O33*EeiyL:qx2*"(Bm.yy&`o'* "p"26-mJiN|S|q2/'X,ptj \Du2/"9L:b]q  vJz\,&|?},?}w*t8A+>"{c MtAW4dF;bWÃĀZvQ|hW8r xX'l"Fo w*hX)5A^JȒݣRzVta[vH_Jhg+o=bcɜHwc2v6zYYA!)a!tb[RR'OlN@g?$6B} y΀X-<^0,y2K Q*  @ a M%t Ş.{fU%h7tAK~qE`C#8 fbGC~hLYᝃpXyVͿh~C"$851dU GUE8.SE݊mC]I'BT!rA(^7_=ChWdeMBM1JH6 T1y*YF^w2 5dfQKr1Pji'Zidj'UɎSK8 k 6w9:/[A! yr2TŶ!*i65x :U(F fqx޽{SYk?C/IH;\s䯪EA)wIؼ_?9mNy&8PIh;wwX\i&[7iP3):4c*Pȿ_ JAѲbU-4PEԨU? x*#\kgn]*pGNգX=} c+m֎m/cBn[IgJ)Otמwir(z+2% SV|d<8e\c!߫^e,|8eBt5X"x`1zp5_Rv35 ũ[[эLhC׫ud&R9d)+ eRk3OdVaڞF\)dV:%%IڹzkWAO_bL꤅}T엿߇^oJ? &ݵKR9E6Kf Ycl+l$fBn2 ?NH~(`K ͑H3YGĖ C-$8SF)b矬ws*V7}ǚLx, v{nVC-e1vz1՚E0 >QwކIp0L:ƠzSt;+ nӺfcUY$0JfBZN ͋ęƇR2 BQ%WXUÇ"kT HݴruU|9{֔HN(0) L:' \ӟ5"ya:2"|2cҁ.R?ͪ!f KRH_uUOb_? 8"5mWȰ):{o!(dI?6'KWҍ+4PȮ6[55,:3Ptέ'Z6A3N~?AM, OX:ӿ7B[idtZZc2҇J!Ҹrp:cS Ω"W=Hm€Ub=yFxL %֝0ikWڗ/^ujBjB0 8Tz9^@*>tKe:' 8KpFqw:oXaM hvg[Pqh@bAQD+u"CDWW([z6]aSSYTA.tBQspO%fPFT5`@ ۻW I 7 c\ld雠2MqƝz`{ N|aC?0'h2?[ G% 0,k[ǷF1vfdiEU'ea͈4v=4uuQ;.k栋$g*S ]c`KPeI{wP%o(Wb)u&}f]3|Bz 5iʻIZyu1`; Jzrз6t hLd:EyEmb_Ofҋ\#Ir6h '"˜S@zEHu9ɱLm uAyI[.Y&ͯ iZH;/VKt efPvIx PݻwYOwySPr>~D^^*s!#RXSԮ/wO 7tv>bnTHˊäqH5CuʢRwuR?i|2FJj}4LԁaG:_ĠEh3~r++GJMpIw֋]y4q'{{;'pgL&܄LNAE51vmwBW4O~v䝶#3 L:QA7VUDBc)Hmj!p ^g"8}tYΔ[RFPA \#Χڷ?zl?گP>zQ & =攍n6)_&x͗YPsJamXW(q Qnf;[8`]cBcL_UD+i{t3ի%ve)ԋj査>GOIxfm1= 4NMO,r,.&.vE=QUϔóc"*"@E8#" C~a!|ՃulT*SH tI"5I{)Vӣmv)e&ֲs2)#u֟`GbBF*{`Iet:j0e`.rQ7UA+(`Fksz.O=19Im{)9TwdA7>mVEcF s-|w[B&je6\UΘP0XHI1W[1!PRg'svw*Z)J/Qk)2Pp_ $sYVԭI5H28X&X{4:%EN&7:>#jx5Y1$rpWۛB\x|g_ a~kH0<@q坫{JKX$EYװ> Xa Cf}&k̎xcL <hdI,Eu(%Tk]O *<;w#0i+d3G4`Ѥz>`(q3{vMӞţu Sڄ2n D~:3ߦ@IDATG"/J< 1#9)!z:G[k gR ,SOD.z5:Ċ7HZ'A'U_`]ګ)\'{,EjOzJp8zR_U" sZ3Ra;h}\Nq(Ԥ !0lnY@-b#aЁPƍ-G41mĆ$@^+4st?<0[VR_&be0j0ꪥ鞾 s|-nI1 x-'dZSpv:IԷ) bF 9.PzrVVp4eQsKCex<YdЋIz,#SC"PB?q3_Y=d4u`a38UPyK, ᕌX U=&ĥ|fBU X(0.z(%V5OIucGq+G숰/> 8+#IrJ\\JK#ȲNLIz"M6զZ9ڢztdy"jcMDvoCvg'l"Būtj45suzAtRջh>H|0X>BiD kL0 c,.DWQj<}_{27JdOa`#sNGA8'· N=1l36x|7RʼQtm%W#'@:vS03dr/vP4">oGrT2unC͑Ng{ -@bwYTrVun>mtvOqVZlqYZIJ}e `fa cdI @پ⛍|wO[ߴK{WŊЕ, 5Z-Kz 0kB5)_GóǢtNۆC4zD^9r`-&]@Ugjb8*)z I?sL:4[Pe&Gp ܫrv:ev;X?XVPQR7~2{CHY͉a)t(G\I&Z .l NpPm1w7;+K*ic&]bQ P&c/NzxA_u`ڿ ex Zn*S;|Ľi*KFY44DfR!S (0aIv&1`nàE(H=y{T=wsOOi:Q5"m"$iL:&UM&s=L,ҟYO0}L:@먇3VPȟV0q0{亃#)͑ Q SE[ a,0A}mq5*wםQ"G@;[;7&K?a@fr$l &oEg)uWEUw{#̑-Ϣ` Ns$؟7`Ú8گllF[0qkh=%eA8N]<@ȠS=C\.e0ѯ; > r }^tI(ɂ p~YL#u>FA o#jAibl7drɦxl:e@:2 lI ?cr4ڞ 'X0VkymZälΪ5&8Io8*gpca$~WZڛW`!/ ~9]$0 g!dZ-bF(LHV@iQj_)G^ykYv]LNT,"tB€ {=E@;it*f5c0X2Y۳ W >F.Ԇ$cIgπV#QFJ!l_|WS?O^tB_fg%v:_*:#7# Є1Tr,nY*R Ul qW3x &]gcj}f8G{ZNYQ@LyǬЪ<$ؽkk_tQeD:Rcjja8]w[{v,tJzGNyX} Ժ$~M Mƕra*Jj79g4LkӷfG7ۃGIwMg'.1ޘ"YXG _"9.TWdetI9fvP@HVsy| ܷIystqo^b=?V~3_2,=8y >24&RR\= Z::W%맥l/^<%&|ag8ӑgދ\a/N){ 6{I8v>>Xq V1iO(M4HB{֗XX_Z[ Rրje3^YrM?Ĥ{<@řQ#EvFO*>+ylj *du3X2bC#w]4C" yxXU_8MoJOC tmR/`$7t=V#c1R̪3ԓ$+tp~w(~#*Mg ~,٪gLXZaI;D?4cțoiq?RKL:ؐt/R.1[Tݛ!sE`L:kF-1Mw):B Xc]]h-Z^gS;abP4I |,dGO y̥1C͛di{&TI,&V.YYry WܼQqB͹ΩDZՄ0rSIPU떘1{tgqTqR#EHL&K5/(T;Gz݅Snˋp3s(Gq&DE=yZ 'b $Û/TkHC5gp qKs7D0+YJr(86I>>H3%QbzJ5 œh?^G\p*P>~ 0pFPKS@%DZ:8NB~jY I$6Wugpg!B#Ɂug~e:Z )֐ⅇs^0BVdhJ5&q%SQ1Μ8Ժ40X!IWsT5|K=|ΆIgqlxr4'9zOdN=Hx SvN1.-!ɬO;y* ;50%h$D(J٠ˍ1(WPs翨,<~.ip' q}:xT-Gw(ɶ~y`1~urr|H=GCb賬f+!%IQ~x ú?g?KI85"4w4^I{Pq,EQC!YiOAJ"PJ$ =_}wVXET>-&F{7ѭx4v0-K zXIMLDXXS50鞨6tUЫF0 5l$!2O1AlEdT#"SK8QF(DZ:\^)m-Gam@WC9B~p~xxtw~/z Щwh_V  `~:Ťe;tove!H=JFA}Hi'WA{^`$m~qóUkm$#˧ LDEBv="툽'J[ũ:x* eia' ,{0 g@M U*lG-5ib;E(*Tqh'g{sxNֺ4~6N[1Tf,NN_ϞetFbEA%twSŤ#*AuC!92uZУٽq't]Uur3-}8OtDR!0Qu$V.!?dr,~L]N.F-]Bޟ qܠtL: rW=8  NwG[s=bk8.hiirgAȶ?h~L >AG 0]d_},4n ;z: #mk{M /;Gh*Bh}8}ͳ j"#Iv~9]- q; _<+ZȧO?]Vs qWtɳ }˜^@uEig \fȏ1gHPUJ4KdžPBt4P:ON,-n0ЧZi}v쯑葤 {Z;5jbp"u(-*T✶'7d, QB"oDFn) JܳNahA m{d!, 0qmooK#|e'3D (, yB+p0Xg,t,ڳ egm*2|6T0M!1LL\&S hE<LB@I-+x )ÁgPT0>NA[>!O0Yd8ZZaivfp>ϓe&Dv(PC}"EXsM;e,㣇Be$K 'իIdbO˜<FRg}#X9;+ud,9͗JUv&SH<_]R9::ZW,M'AsVd^}kd6W;y"t0aƁH(DaN+A7ũƈ\e; 9̔cxtܒ,yRtbICe`0eG%ۣ,|r5 9V Zs[XvRq& +BM,Kl~u2|pċэd'# &^cf+Ra4TIkkHٛ!A:([ *U(?R 'MlAu VdZ`F}u/9րqmLL/~?x+^2;ĪBMCz?dwS=gP=\6 mb:% ra$5KvT]'ۧh{]먱3;9 ~-KATI`8HTUQ CTQ>$`̪;]AhoVt.|ό3i8injb wN?8AP<_ rg+2 3'5i)ZC"*q%Xq8fD_t4t"qOKPmp@7$Xw՟rAȣFt _DZ#k Mo$qP|6a ~Uu>=J^{~ ; 0[ueG+_|6fLơupQ&TӭF JUY+I7 ~ēC(-Jus}TymcX]_rUNn?HN=i'5l%pJF1;+ *ٔ2',IO)NrUI qcq2TS&Vg%ɻhAQ4>3NkR[Zq& ܍ w<FRAߤj&huHJ{wXK[HVR#f˙#No]}_y}97t*/6|&}TEph\OWEd8+:wӮʢLcdzWT(6ID b,\\ڨa93^MnIBsS)QTsrЊmm &Bn8Vݪ$HI~taKͶk8*fcĄ/D\CPUL (]< dAP?txS\[mQOTYvnO4np`*/t#^\+O`H9ep,-m:p$*2šDf05Iaj݂}Õ"?{X^PU3HQr ,U_ÏV3Y(%rW$lޢN2=Ag& ̘DKuRYtyqF 㩥mCΑm\iUR7)g6mT) eCp$ ӄ(yjhkUsXLr\&Mxcl2lJûPUk00gk9RA<~qtj!hhd)  sҬeRC# ~"7H )Q>ˢ H ݍD{2pt?r&[/x` U)᷀l+8nʗ;Z4ZJ ,er~JI!^- Zgj%W#{qh筷:k_'4E{,i [JQP֔nJE0D&:9cy'qQ K>I@@E׫h.D295V!^PI8쥀ꩯmvN14@W ZB.k"RZz ä Kqb8+؇[RnPYT7q^gxQrE"Y`hof$c]ZK;2L#Ijr`ě#)^9CFwTTG a՘EV:#ecl!3ZRO%4>r;Cڶc@L:(5!vӊ&wh$[N{Q8T46F!Tf @Ѻp Vaě בp7iF,dD6#`CL{#H ZTPZGۻ c)Ǥ+K xq(_eՉUFҰG)*Gi=m1$N40DX4\IQ79BC zWV~8KhRDql 50Er,70)V9%F@@|`0[0qGo-p_Ӗ.IPO"DTԮKfƘH6!GQaq6͝uL0b ܵh ݲj ?O Jn[CXп$!zCk=~Z c2'DxNIqS^$dxL:z$J.%r!8q7S`~OHp+ԝ[z^,np3Mtf^)ܩLf8S MͲÖM$l̤ 1tyyDOWGPAL? VIG7N43gN[HY9h [)gjNnTOlbGV TsZ|q#9Q\KG24L /*R7wڝ]FwFlZ궎Ae0BKxpԟLoc.KBq{ ʑlaRtNW2}58GxMrA+ݣ]Xz1˻˭&FS83.$CPH[r!ɔ %,4F |mIUc; o{rb+L g?j5كC #XY~zЁ]9"!β2&2u&+jZu1e;af3H20fVGr:L;88\ȉmZ6~8 ̌LYZ=FRi3[N:D5X!I>3|H)<3>ؒMI7lA=w7a5N`E8?Ko-i{1o֭[ {hR"}gtlbnpt hdI?LYӾs8DT5x1K*j;Dc.;n5qsNo_I-OtJiM>$V3֪ qGŒّaXB;3t%xyp7tJʛ ]oy-s&31/dwX5i&.` 3Cн2C3/ &}_LOBIvg=:^]xn1'@F&RsN  &M֍4{_hL01R7:* X - BIlUE}6Kc#KJJ.BdjX&;5:Qw&]wI׳%ฟ`n80L^C C@H>ك:=T Ƥ[_ p8-910%=.10+'\EI.hh6}4>)&f[W2@*/Q~1Y=DŽV_+8١@+L:Tq1_Y9㫉'9PnNW"גZt:C~0  (LW&J:20pTI +o!܆0:ݰ -cVÇ9ޠ+bH (SJyAV1A{s/L:@ UR#2nY# R ~\ Nȁ6_VʈEzi6y`>%F\v=|äK : /V>D ,FŢ vRxtG*/t;‘Flm֭PR<"'W,/~ {=ʭäñ%<-\KPT/ &]LsfxP.臆J@j Ԫ1>1aЀ0s %8L ^8¥%.x).;rAe%äS>*t@KpWJa҉xBÈ$W ?O3nڳ*;AMkL>BTvX2dZ%O䫎|R 0ZL:O 1XW܊!N=+R!uA=]?Cᄏx `{;J"F)Jȓpewd8t5;Ns<9&γ  0I/ 5 DFUJ><κ<9l/EmNEr9*E*)/ΐ9 J{ḊWa/]۞}HxDЉ_LL: $$I:KPG4+F$B%5q=}cPh[@KsL 6ZhXrX_m:agO~ {W{m -'1%{: vKCJ>3&]o&]A,{"x/͋Iub]PqH[ dN6W Qb\€+i6 18kt}"he1Q'}34MʬL~e Ї4h9&EIG7d_Ų ӪdOlې ő?h%^ _El_?vUba";#Ǖ({'z"H܅S}ɽّD*ϊN(-%690=JG;uaK#owcP]\omv:uvSI.:#/&w[:u##BExJPg؏!)ΠHqT*YcҽId?#!e&AtÈ ف.(:] bhc7x{J;ÌGUzxLH^'`D/qX+2< <σ`ل|*1(p3+g)`9Nm9Uii )-S?SSΐPFH!Q'xMX#@?ႀ=bs5,+0n&fk&e=&Ç-,Eי.Ś4c!ɧQ\B| N;7om^Yj)Ldjw୒+JHpml]˔'1շ/[dmӪwRU2_ҝdx6#[y蒚 CH_Rcdzh^4MuēKdu'鋵a[弬xxp|kkɎ3ۻ~Wm6 ΄礇˷EYvyǤdcEdF $PЍ50 A퓦ϜZIAmSbZ n8#EsŢ3G!Є#{$RQm,zFwR1NR $wHM3Hj9S-@IDATvšo?al]+2يHC%Gp+qQE #qԑ#Em$M/!0L6 F8_e .AgMb%ɮ3Mw373sdFLRbU%^`-DUjًFQP[i)TP݂zG 4Њ %Rd&b9EFl6sx9"lvs=sܸsl޻1oyybg(>mU5}mw F.ߐP=q(͌4"h8#)465j2cPYarVQ8kQ򔲏<u!<ݢˇƓsЦ9RZ6tBn"?T`\=1=abbM_Ċ4p!, X* jP .85ĸVH-hM7³d6j5\նpĐ ⤖#S➄E*-2Hvvv< doQ:~2j_ 5Q_ȡ<&2lF40F`e 0.NU)\PEj6P&cdg!9[7[;PAW{wH]^\UIQ"ɽe?_@fR6lV*bVV6U֥s:.^Hy"-Zo+Day d2U*L:""uNd8da:s`bG#Sjiiihu ՅJS/~ԯ "8qækK@L4 *;SXJtDvmQɌnםw^[,'15l뀤S՞5e nyڪu!tFjzX24 [xmpLڅW]=mI𦓩vyx&;)%T8Q+*b1GAI&g3g:(SE#t=q+$:ى}W>ik5@&KWVfS~7 [Qr*Em &ϼN (EO¾ zagF&W06!s+vDN߁rʽJ7jR~AP2k7<xNn62;^ZꫮSRA> xR&х@tBNJ~+ܢ-Jp6'XHst>]mqHXЇBdQV(ajmoN<JKZJLY_ N,~`/:2Pp9R_\d"p e M__$ZX͝3g-D3E@w` v>nUh8d^oo0 e"$`,v Ս~+֭78td7.gh(Kthdj(gMIWP Y?'N M &BWqW_i0fOiqjamCkscgEbPta&0)NUy՜4bDET Nxnc7ʐ N\Jep&܂_mmmg$U-luGtm1bE1"(?+Do@X7hX/y ytB=wQHYjX }aqrCχŤS5/])6D5D**IZhUך.8>Yƻ-n# ;F%9>s+P HHְ. 6A !RJn۶Z˲L XfH)DF]%.9v%IGEXks2>h?Aָ! !&<Sn9 P?,ҷD\`=|nj9=_{գ@fhkd_FʏvE|fZ;fIdΑQ 6X"drb#}1=nJF =Jk q!hݪ`ID&SpD}pXkFS&/vajBפَ$P<l`F0Ǔä "p"Ydg%4UkTZ"raZ$ؒ{1@b)Լ95Q='Ю F5v9ȔHEc{XQOz4ӛz1O4T"Ͳ0t8^uh!80t򊇈+VۏIzi{1^{H-qI'Ӵ'k5pmF H^~H } S2;ʋ]3dOIz, !yaA6i*Iz 6J= !Ӵ#16Z*>'M44%)(B$XA=~k`?Ivg"Itz(t X| C8 XCiG" S^Ğ<?sEkrtR lvM54P4iTo tHR=[Ej*lU ł0X3*sEv' ^)]{j T5gLep 06{wyX *FS*-k嗄fgIҗ(PtEmuл|8&/W wbvEʮ0;lJ3PpOMUPHڵ|*xуa*^'cY=|&E0ډ{ݱaQ/Fb:ä9GI-FI&. &ݹs/MHLxbb0b Klx5F M_ 1:a$MVXk. oN%24Q(N s=]T K P )A l#`&ŝ!HL:GǤS :j2#48I8o1= sCUkçQ[#Z-úteL9-aԮoss;d*-ŝb""xp @:O@NdbQD_K>Rԩ41y7MA'6[ڼq:d ɠ9r?R ?rd}2]Ac/UlwHTP2}M:]VcNK:B.sʇz[-$ 2伏d]?IΑ(|?;2&6B7.vK/Y|!!QMv+@U,}$8A׬Ew&bcXD|W?NfM 쯂J7 ߄Awp3`2N>LEԻ'1Y+&V 3$X~LWűLT"jN[]F7Id:ng_-v,p&-A k`|F0麌*vb/s<Ŭ]ۻH. `@GؒDS(VN+ޖow&!FT9RU^_.8 :4dggKH&{=RUQb17G0| [oR1Tg%b WJH@ SP=zvEKZS)2&,$ѥ^ʕۻw$$|K (~g(zhf J`hw YPDf[q4R#$M=3fUe2ߥ/\ s[aa-PaĤ  =@ (U^Pf D<B2EkQO,Ǜ N\h/"S:o\zWGm~[eI9{pIPm53I SAb>yyye\ΊtumcLe3.a0D Ӣb*k3TcaQcTVӦ=-U/?-AI`1?;VBKh/ c$4X>{9FA}+R&E,90 O "!Lrݿ<œw(49(ffyo7! XdAPS7)LȘq3#Qu}}ɴ9&(}o[g ]A7{>R߽lOwZfs^:<$-Nwtg{QQZ`ea {x.hgլWLC_5wEr 8@~Y@mXid29P]8SOH~K+q? Md/`$._?s?!O%؉W60__fo/#tn01 wNcT{j'1p_j8Ut4c4fHI OqՒ&6h+,EP@ē ]LzK(Xc˻f0FG@O:&f@N-Iau1 w _Qk 5CE Oz{']ϰVaN1\i(  QTʨQ4&lv©A5G C:?Ll)< C |K<̡xG|N63=c:ư" 'p9\ ,.A5p5. #,= S>$~1$ O/3Xo -6/1amU̗_P0= 64>f^{5*$f9i_JC@c~Csh8N˯énrytcL:d="a҉;n Q+L:\RH߃I7b@*g |Ֆ9 Z& ݵ49cVQTSuZ"E>B74@Tb0tT0L:Zߠ C3N: HӾ+:E .(-6sA!0`LJEZw_=[ g|Kr!8 *zy:Y鲼3obi[t0Рw04tEhh`pГ?z#sQ^za>:)[t4ku\ z6̚9|u؆\/13.C A[ð߹)?T%wۻq# n^D(DŪ-Y2ѵTZ YGBF]m.ւ Ba҉7_G?{ݎ00>{Iw/|>Md&O* 7? ?ߝNu`}tIrpTȸ,l%&FK!ϖ_u W߽{w@5w~R{'VS3LOEaj昢 _w}مǢ>maҝB?N""ip׭ 3=Uxׁ_n2ŒݎF=2IƩҥqQί^'{'ɡ6a=(?ex3'k|G1C5=m}eu{; 6 mjP|I6_i#Md/ >aY'Lp^!V3{8+L>"\e$FX){:R`k& hTW9qf Vʬ~&ݓRgt@R0j[*rIW#EtJP%"h#|)SѪX,5EU/:?M ?~(mfYK+O8ڸGj*z<•ӂ*aWDQ9'?Ǥv&@9}f?]ZTd ZPJ4Eo}mAilJ?anC2t/\xeRpG7P,טtJbP4"yN(z3A"gb_H㤘äC eYKy#3UHsN~wM#f=/-LQXjrW?h~o}g P=%ػq:V]!-ĽtB&0Kz5&MZYN$M'' QULG0 p٬:Εj 9`J.=ej,އqDl Y7Cl0RՇ@IN\IW| Lj(Ad%*4@@rOS+%W894wW3iD)hGR1uQ-,٥ˊ ]r&YDrd: HrTHi 1@sD#8\Ok<:'(?p_gLƤ#px,L *Hb^&'[ _z[qOlg.cvBB!S] wr<.L* (Zݡq*^ipV|0`5q u EI>ɋmK&2R7ɄDh4CdpeKq 7#%'cIP ) 4"xH1Nc&<" njPXfcͧE]p` |HL6!&Ȋ%ɡ|Rh.(epEt^<;h;pa& qPI ;~gĤwyi)h H*7 ܄/d_voęAHtCSIYDl+Lm4aEs8M}+-g՜Xd :zpcoe2ֺh>)֬1,h0&,d<4/!zJ&qJgdk%>~,HA  A{]+*?4 f*\_hN$p.|*È7VC3gþ:Jܺ0"[lˮR '᳒`2<{™CbE`AE.\ 5DI:I|MJESƤ"@Bx +wP`2ȜC%ln`TӆcZvfWl6ЦxҶG#*x0Hx8,'%f1([>ׯ1Ġ6<(iai|nQC+ 1=L 8`@ID:N'N@-]KDL#~DnC2b盝Ÿ]p' ޘV,!C V<ɊJ6t[ %_AI'iGFۻ?ݛJ0)IFřuVs'+0?ꐴu:__nǵsnqrԇ!E;KY*0ڔ¤Px8AeWp :7tD ܖ=_0bx g1@!MPl`HP6D#Shh!N4"6 QXt)9W`#m5{Uh ^Ds.R$d~RtN1>2/=.o9xWwKzrL"#ꨦqԾVױ:wZX/vz׹0lXo?L:iU>{;-TQQ-/@Ld mgxvW]EgrBF=ơ=GC]Ia "tҾDP}2"̔l8 ʅ%:r,X^&G2:|&zBP,Ϻ=:}'bΫVO'p;kr^BخU6rѣGR|yA^{7$3Tc@!'׷p[B@\v&zĬ0Bj&) * :D&8_ʲ嘎<vUauY?s.)k"6>6Fpp4eHi XEp'>tDlw Ldq"2p?XњOChjIU]NFi³;%!}a1Tva*+QY ʊVXLH"+YrhCC L5>~ 9l] ؏9aA0!)6-L ]eaIsndweASTs`HH_8[zrGĔBbTɔ0To>1 <B.IFEjʶZWԘtAk~B- 4b Pſ^p$бZ0g/cɻkF{1Ћ͈ɿ3(3_m!%wzaN9?Cn<)>^A&,c\äku(1WRcQ\'!6dg̘x4 TVꤿjrBZN 3!*&#6$V(BPp';:Q%ׯ9ZgCW Rth'G`B -<mslh>^,~/0ce0iI)[a) gNX@N82ixsL}djݐ0[˂|7ooJ$Y]x%0CI{$m/GMqdH1P5 ɒ导DK2? _s'7޾ c|g: =Ot]+uD 5M[ +1d(KDhUV g}WY0j\MQQR)vR )-2>Xɜ1! LNdу-6~f9Q{(h@&Mr,'Z4)#9{1u vjcq%PkVm4TKsHCPܧP8CBT|;my]l&aq띷Iǐ#AɭQS+=T?W$!yKLylۀATFx7"jڔσƽYTigmB)o l8Z|ƍjAI7\®J4Q<:] P@M+:-bNvخZ-Xf?L;@ !ˆ"m"!As<@؀ x?6q{w.6ZZVGLڄ|::)CWef3+~ QE@x?:)iu9W$& ֛ouQëWs ;wWy uNH˂FM# kz;@5sͱv^غFa}PuҹDZV 6i,{M&c,HB=!JVtN%zјv)#Y4\D޽tv68qzAR1$f%]Qh0a6T^4B#@P/Hx3!d)IR9HE7~oJfNEL+,yv*]9X0u\x=c͙z[ QuSC4f^U&BoI5i`pNI ^wHKNzOofNS45.se1gO[puV9^_U˒A5`3 ]";ȗ#jեpd<.ےXaڙN;2 .PJwh~7mv~e/UƤm3@h:BLJeccpԫiHEQ^ 81P.^hdŢ7*/Jr.__=zTNMbxBΥ~Ku4z9>wuGU pkT ".d^]Y2+Z_$fPט8xGpEC?A4}fSz P Z o5 r,D(X"0y]v̉(M\Ǫ%`LVo6+1޸Li3GS"\Vt=CAmGE**VBeGVF0~a&Nbz`{XV8SgĨS?<)G(&I|=ugI\529*g_0n8Mb^f4|FxP% =As*;9:AXPEJr;񒺄2/U// 82 ۨUt;=?gt hc* &_|LG^2bC8HN:9:w봆sJN'{]>C=Nh1A Z]u2[H8cJG vQx ? }Ӓ>&R_WrE[k _/0 }yХw#r~iH,{^kK8o~k \&q6_%H5$-;y1&wВu6!<L:< --;jx"u\=^bRYh1j%|HHmrLud~3IF~qB1#S7%c 0OƓ*7Hဲ8)EE:bh?b]#U`ݒߩtu@Q-ei׵J-tLɅ-X^%TT3m4od0>+{v5t-t?Я"&D dt(*Ihzam5لBtZƒi3M4R>?[5UPeggFzH 0MѬʧbX/$zm4Mn.T$yV2F/e"b򩫵$) CwtR5mY7y+?*&$L2YMɛ IUߡےa~I@D"T3Vjyp ]AH>|^>&NLFvdg32A}ȓCA/ؗ9u1JN5BHeQkOP %=-h+""5HC4uՊrʏЦ:*;HTsL("ijx^A-/!3dɨoʗ]kS`Q7䤀7aŪGyBtthjEMz7H r>/I% 'ЗR"˚JԽ6 /' ᴵe~9'gիCH(6l`gJv~LpI_X!a4}q`ҙfOAe6GdHJɈ JEt e4ƂҠ>՚ZFL@51c GDh=GJS@p'q c1g'J>¿<-*s4W1aB6)}zY=cDX6s|hac|YU:"DpΑ<㨚JG6ɵSLnt>&](S1|W̑B@U}HpËhg¤`xUO5&f; &ܗDgk{@}x=iOHg cjLjԩE`;crt+{\c VXZѲ@cd@H M)V.`G\bQ]+ͺ,՛7+6nY~K2)1qf "0grS %í$kl؛C, ;p;@Uc,~8>> .<`ef``Fftd%A{0=:Ko6:&[Q\/.mb$J@'7 &n9:2L4&1=._N;& ܻ7<D(",VAt H*:L.j9?00,>n,z8@FI)[ʡbeF-+Z % ]ZDꐴN/חw{WH=p2NgoI\YH!_4mH6Pi^kC6Ĩ9tJ - bhxK.(:ޝ1F*t |"0%հOGV?oM\ߵo4kꣻ%.ӹ蚆ZZT < (56=BzBso<zo c$&`΍?8 #czfMæL'֪hË9MCe Fp%[Ŕ9NDfP 5D@8 McTfe_)۩ڜOO>FI2ڢx0xd3N}آp*Q0Iײeqfp`ҽm7& r>E䶆f߫pF9@ĩu?cLg<-wS04?w82C*BIh9fXL0ZPG 6z#}D=IuB?ߞlћwSnI%SC{9Tp9rBg:6_ PG(Au/PL:.td B[E0Ba'"*^څ:'{,0KDt]9U(OZ$bc-9ЫUL:TNɧIռѧBkgNA2O:¤7K\Xt4-pIKFXӖqHD&>jL193tD$KK zLhg`3c:cL::ěRn1vtΊSRv~`G$kP]fկ~##cCAy9S \_QS!u1فDgBؐc%oP To"y1mIPF4xCe搐]@IDATE 41Kx\-u ^8~L:X2WZz# I=B:Hq&"'в \5tt ss>43 (D0E|a˰sNW~}S8|bҩp:BPj P}jJl:dfj΄Gh[J4U hĺ%ٓ{ݣC AGxLM1=.a};=o<(/ qa~!+b6CkY )M e aKGh rńj%^?)riDC!b-1aERA[NIgbґM#űT?Aw4hC2NÙOVr̻!́;ՈuH;_L:\֊+OäӀBP$#ŽLt TjDiI'Y+Ntau l &p) mo"&1Əl9 p2\_ӹ3LBıO43L7ۄDȭ5=}qIwg-L/'4'EFe1d~ }!o_}[7_:@+ ϕ35&˥Ni Ρr SMO& sD _L^}MVnX?؊)3LJō3L | |262QR>edhC ?&]CGZS:ä{$wMgtH=ä{t{q$M ^<꾬!N`p(e(j{CjUZI/>{5 WYAC}tMB!tLgT<} t:<{k !4#e6ujW|1+,O?ä{BI&8|>a5o3L\ɋ߿/ 8 `>ED~JV6s?JQ/:Fa"9ı]h8MLJ%9~rvjR~Bֺ8%%IM&aLU[ǣ"`t_K8X<~=ݪ&]H*uyKLݐ쳊IILaIt4&e+{kpc  IzR"_t|Yݺϴ9P̆qF\8EAAI!"-N(,-NtU7[}y;i D@mᕥ  .m@tp'i@I%_~O%|Qx3~1ra6iݘ:nڽ{w4=sp^!ȹ]Ж\&CNcux8]MڳF)́]%V~=+GH.x8cI@T^BlbE"䯢G*M|ك}Ii $3!B݋ҁM?+^92⧌E;8rJm(ܦcj+3jH %Y&P2_w{BF@0 45z}0I=z-x ޿1~.X ~BVBx-+ECȆV u*. Cߔ7&+!76&"r"/㮟{W/̈SZ[/&%g-I?G ᓙH j'0Gڗ/rt`dmVe@xMdi(\9F'-MbH}*!ukbO?m]+ڥ:ng]! ElC~ ^=BAa1V_<ֻ{ݣŗ J;1dI-rm:V4u׋.qhnenw1Q =Ṕ.- iţ 8*0cQa WsY4SҲ@1\+-EXȖS?5DFt}fseAq⚔-P>7L:E N ԩ&Y¤SEg^Zp(_T 0Ǚ"OFlPcQפvKC&]S1 #+pKD#m42u7Xfӟ+5&jka|Z"/%Kr_W˪/l ]&9ܮ!*kh9;tr|vtRߊ4",T889 }O N||K3( IwaG/IIOFUzY prݼ0?-'s$]N:fXsM- 8A31xA0!Yh r= XEju8�z5_Nrp]eBZޒmh=׺IV'h]>7pKO )f)HQ V*4 Lt 9T7I.a%p!+zaFTcJ>0ĺglnqpD>jT]̙0]Pଚ8J)H`h:cnc{ "|;ε:b%iBĞ;?T(dYhN,05A%ӱI'1H0 ԭMZ>}ܠ~WID1)V-7i1eL֟0*VQKܵ" 3[W=kÎrzgh[ڐm 5_%CrYwj&IrJiF*"X1D}Z[-I']ffx{`.axf0JNeDB<ֳqH$37If#Wyw9`'{wr,]\u.-=tk`C(Pm%EEl8Va]TEe5fEF7 0tpQ{'`Ri%lym & FR]tz{5 bLB%DT$㘥n"޶1@똒+_|tZѽScL:cMʒT/ [G洭L[%[sT!YZvqAi[X #7X *m6űs\k`D ioRüag2 @A()#E6=|էuL_UfP (w],Ѡ#R hMxYŋfȳaGi41jR=yU҆Ls:oLx{{wNҕ_éZP=Ttj 0;ǯdt= txHCM>0eij01U :r&&7HmMPI36mSo9!@= !2jKj{vKeu@2 >` w4k=!*Jv%պ9)d䑂BiT0ZhHd)Ck#S3|}>QsGE?:H0*tJ/5}^MFJ4VJ|qtT<@<KNRS|8D-|4TXBҫEȬ\^<ϓx><8dzUцk[_¤{-x-8* 4,ܤ?XP+tvH?,5PDz7{ pg_[{>oOe𷲘UO;Asjk 9HQțk?( (<$GTIfhQy,sh.vxBoN6LL:J5R3oR.)M6utgL )BZa{ZM=wOqD59|P3AL0R&YΒ4C<(c2)K+83\J=ijƢ$*36Ws* t ytj?(ZTa-0.1^~ݞŋFNDjٚ3J".WIu9vvV؋!5cBqH['.q IbQpBV{/>mOh5'یIn}q!mѹs7N>&2+c@i ݵHL'23]]׵Du:FY\(),+9L:TUO)uJO5 5uQf_tD޼KiȨfqgGSgYEЄpE@s&@Z͐O1N<&L@I[+T,*p3$$& tu3٩VpV@R1W1*%mO8Vzo:Sa%_KOUڵg`U[_dv|,OrYkt+S2Ls`݃2…k >{LLIe*Ȣ &t!I:Q)/W]to+ˬz&Z3 m_Z%+ƩdyaNA]}L0(0`T{ukNP/-5{ao2N h "Gd!H|=G #% Ig (ӓ O駟Vju%0+2RSb2;,E~5 vt}$WqI^X +ϕ}mCTIc@Qϣx< ϓѻ*`6*rڹC={`E%jӪǫxky\yҐN"ͰvS; TS8hI D.,DhAHuϯ;PͰ DOF3OP%_ n!S~1dFOޝ] RPn?<'[ze4vo~zw.jEc!XB$e0?Ll}H+"I½{PtDž?Y{.7y^\y1809 Jw:|T&W܏zp_HF}K%# .$%BC8)v}nʹZenh+PBlI.oi}-8;# %sm` M4,'@VU^w\bu6?3?"S H"S. 3 qt L:78ɲܘtj`jj{]>%~}x{{k,(썸u6b:sv]Gf|RK9 7|.:BB-0vQIG84wK fjY`9u/5`/A!s"jy&q5kGՅS!߭$ &Vxzk$LRZٽtz~I'O:(&#m n+1$y:s@h>j:Bb]d~Y2Yr jN^>{9F@}C7W,YƤ26\T Pg (et'}O*T1HaY=mq^C 8Re"'LkĈ~T#4)L:Yy7K3Pʻ(|L:-Iwd,ҋ(I#e= : cXik1.d B.l2""eJ/۪TL fFR&#Ժb4LZa +t@gG"pI CIjt0y/ 'MP RҀ&nu( G2 Dhm&&Z{I;NlpW0NG>xIIxgt' ce m(gp|,zb{I([_{I&coR /X<"mJcVLw!"" M^HLW-I^̈o05(֖W}{}eg?Q ŏ[OK=ä{Ot|q&1A{KC3L&T#摢<_^ γPJߢi )yHs)bɭ2e$/gL"cgI7 R*f2JSķ8hdί_>W>;?gt-Vf9äzyQgt'?UL:& C*AböUL?0MqHHb?hʷ UC?7tfRA5OIC(A R"-'x?K$.IT1wp ';:JY4{2 G@A6RΩʡp /\LLlV])*L\ζ_ g tǽ-weE|f CV @9kDTEPjCXI]ci>qL-\VzDwߢJPaȵɲy,nhd8}y ΐ Exm@pI+b$I6])er+6~9U u<9O1{j&"0ϽYm"Vְ&]a 0%C)V,.GY1H(!OI-aEMVäFO1Bp0T?웱DO7$4^ċ!#2"TBâFhImQUP@׺]Z %@ \H$K.խJ)7d{}fEDƐ90ms9s?pApΛo^ȿ=jIΎC|~`U[K#Ѕ!XuqҚZީti.؋l$p\ w{Jծ lȺNV[6=[tϰx@j30/;\vsrxZYQ%NRdDC`$[†l):!O/!_NEja?s{ 5%Aim7^#֗z1lH5'@cZ5bE{"H7Y?VYmryHb06]X*G;ADOPl8bB .7tB7YTF|Kp쀀}y HFJzU?KүB?I3w*eN_V܊SQr Ame9xT[>t h")N7vK&%q{Җb$p*xA{0tmV+WW൐X ݈TV+aP@PDD5Cf[cDP{,{H-()Oe@dbh SR-(z"9Mgct ы'Hn"L|aҩ,R!ʈ2L:<\ B"*%k&Ջ>ębO΢*&.ձ.&a99DMbn"nZ|&ZT"J ajzS j K@^%|Ga2TAܦ㚊"Ej#]Ds?5UBp%}mPY*L>c%Ob8U#Pb4:>r݊t2{"IpǏO~ޗU%zm 7U8l}^Uoi@D8#BYTc~51IYq<Tm $Qa:AsD76ם;7Ǟ| 01dtIiIt0e¤3eJ}%*No b8"uFY4{#U؎NAjYhY~ '+jŔswqŪ5j@RHQ~Uz8 &# h&] PBE=Dit5(IdS0鱜i|KƗtgvn0hdI.qzݲnx _)_uku q d" Qs¸JCmQx1W詏'*ы|ʛds[=M=JGR R1ġU&޼s7L4w$C2 &7kj]CV*'ʽ482UN:2w考^HߒT&azv)tl{z:CrXdՒ,a}ʵFhj2sZQT͆3 Ne2_|#ӑEûW@v"3"01V\Og>`#hpxkI7iZPlώI֒~AyJ>a-Q'7wPVɌȳ$$?0̲9-`MڼN`!CbS;ecq.9Ml6wG7,[sc?wN3ʐ>N)кS%r.a80Ē:.^+ϊA^·dI6? ^ԓ.&JoaIgq0L/D̏?~'3Y&Ldi2St#?t; $ LIgvj#GކcXCEFWwڸB?l[5T0ۻ}ǞFTg Sxۋb))HBvjsUh6j8V2&+e*<:>"&Vn BRx6&Ge'ۋtq=rxN*mMlL' YC[VK. QS4JUlIpY<{0#`a>lgO pNfIOK̳ͅY9ХF)w nߗk%ozV%' Ui:k=iF=> tDx旇lb]+ȓ;IR~>/ʏx? Խ֝;f+mV?;ä@ Zi #q>J椣a_{TrVW. Μ>;W6Խ"f6d0ʐĦIvU1\ΊLI=^ E G,dfq>:ÊVtpK@q/QNU.mbfJdAGYea!vK~&#Eq%4shmvl)_7@3D9bFĆ3js3Gp~#EoHf:.dHe3Ddb3K[K_j۷SuoAM=H xjk:NbA%܌"أO(Pݟ]sN47_Ya2Mi֫3uXתs9xYVe":"6϶V\fJWbF)b_q.rAMOO;L{ nyPf]A?b+,yTƳf[9=((_X3J] ƆF+nD& /PV ZE&كΔyuQmz`ڈFЃ.KOT,=_h$ xw Ҹr}g?{j;;G+:x>L: \HgXwP(SUP[S#@9t& IjRUp}Nf4B$ȏ jo`tͩV"=޸#XZ2pvEn } &4I~LN` @۪Y%97 2;暈#㢺 8Y:mGmZ$*{黎IGk>$P߸ Ҽ K&>sJO<14thtC_;uݻQ<|/>'sC}aL:rQeg}TVUy?P~#NF%P a<Šȫ6o!BjCI& &m$2;Jrqܦu8z⚟܁<a4 5cGȒ10@(&'YH!wQ8+ |r\Q.aA'D5~ &mS2!1Io _hX+y&BgG[@w.ߢAIc8 /׎#7Vek]J3UxѺ{.$ew9,Ekn=2@vc?vRoch{ALڑMLs`g0ilW'fiu_[7&?ެ^hN[#9sDě1[bTT&Xä'82x!g $E"f-%!(<1l"ra =?(`T&w vkIo qG*JU7E#7 B˕@.<8onvO,cP3D] ]}FL:)xq:A?BhBv V6:tbP au ^> `ՠӫ{'ȸ9n`40pҙT;Icn$iu˧wԔ\ouz2V.r̊CJEy2Optssi~{ٵKO7t{&dJ7]^s0q:qʦ%KX*$23PH* Фg85tzM&O/\عvB"KMHɩ{4u[7ҽVr`T+]0Ls\^f߅I-q(+WH7ZOzpcƱJ.6mΤuBT/\+)Φ쏫<[B@@L Jsm˘R4]Y m.f3Yp=ކeLOt ԥ &z\`u{.a̍i,_d|2\R,gD65$|ڮ{TdtslD1ș)-ca|I{X4Gx@1K-=-}F:"A//^MJbP oa ;^ 3- %pQwd7G;C.&9t,F6gEڭⶵ'6>itIl_ 2HZ?~.#쀍I_utxI(_,6=MF=F[ʙ57"*VmE5xD6 vYC^#XU+a!U #-3Mhfuwœ~ntB$i|LmZ d:N)E"jjztI]{ugGn'#iz~xlz/Ną, +َs$?|!ϣ]J!َ_V9b1yRl"76t$[xS,h96e7¡YG6+vs]e" 5]&"5m9tLE0/IK mlħN0CzIvPR\`ҩ+Hh#99X%5o%qmdlh$kSt9wFZk{XM6voNIM22c^Vq#^"a\qj-#9c٦ĖBf*`n^$cLءc:CR>0O&vcu]:$&>J#=lŢ?ҫɻ5+AGvV8,^,aQˏZ~EI֒5+"BJ[2~Lŀp|ı$"Ԋk[}Dd NDl+t(@ ѱ(bn]h=+({yH vvq08Z\ўȡbeqp^;ܽר.~0U>o2#p5j:tV,c!Z; !COd? V[I&s-NuV2,+bY(=&FÜEA|݋8Yy.df{"L:2Z 6 bƑ!V%]ItT:\KWg8R&,I r (l `AkE\DlgGtFEk (ز$1Ŝ0PT6Yp&7*Fǀ @L6/Z+`]fDm~ tV цǷ;ںNkccEA;TOCOl*&H{D ^7E9Xyq[ J[MHYVgŐO% Y7UDb<7q?Z1 u&ݼOB;80I+VD1JƔ:y2E{{{;wp-< CAU{=Zʑ??RZ5&݌gT2GHoa@8&2hVR;c;MZfgc~c6-[W %Dͧ<HJ$䔛Rr"U`D5Lfjov1/ڏ}&Aُ~xՁ;)^Џ~RyZrR|<y vtE:+I& (INQDe^F٪ NE[<D:mfi@˔ Dv#Vh2cC}4 OuI{ʹ0@`eGq2y&Au)/ln>cfY ːuI hbR+M|R6it fԞ 3 `$Xf.#2Qz\q8S6A9%Qs0aL ,s䣹eeЍs4e~L083cdK!fxeچ""5JiTmeb2+t %A\egZj$IP2j!'c=?CTʼ`z^*45cg.( \@{5JbgI?pp&]:-0J?MtbضK)N`$$pi)Fة"\6]"s Igtt= A0q3C>Ve]Ќwӱ^?IG0yp003ȎAc3*|&< *&~JQuY) Xo>¤됌C#6b"2(U&m6jj܅wNm\;e&hIE݁ +L2e\8TW%0*7 X~JS20afrJղ q~^}Nu|VZ)㧹f%?͟垦?ϧJҰVg1o޼s˟CW\X~[.p{{F췭wfYBd.7fơ2_*Us}ů~6t]q_a=ٞpv6y̼nU2^I )%[(KY_:M5._ `vYhE#ɡX}IYT6cwzvHڏ7>G‘L"R#<~3Wgq}0UGєZg;*v8s|jk(`F!4|]hm7y~Eh|]iN+B6\ZRI#)&-pٌ ?D~Pү8Ɣv1Iys!0?>d+LNFg+w3+=fo B8zamĽX_dfՅe/EvMry`(阄TR]ϲ&<f YI\ N$t@'`'o?@ld0|f^e{IWgˋo=IG.d*-c0v&|, 0RN]f0"%ϻ"Naq:frnf{EBRšh͓n>$d M_z wiQegW*[S~~taRHJ[| 30x `#JbCBR U%ZI'駍Ū:FE$uߺĩAh4||m0鲙 2= Tar[~oB+e0Lދ^'_Pzf߂D0ZLAu!À4dN2Tg,'[.k,ԛ#VaI-,HaSz6Dy;dgM H)bMZ~fARJD7*o!&x.d !!dW,,NtV$Fe˲ <r\?v$ƩHފU#fa{H<`1$e~Lh`g8iAt0VYd;eŐu<+{E$0L.Vl\Xh)m-(PxN .*T8rO bywZV^;4L:چ&t}1RUUv&*rZVfGЀiY"į}q{g~wE?8.^o&9fO󄜛EeO}0"=YP40!4iKm2‚,/.>+KK@ɬ%Zb:?kg1/. Aei' i3L:X1!2Q_6&3X܋#VА-K@J||p<yqTU!'h  BAtXSU4ggp ) ws(TLa\LQl!'ӉU3}R^d@>N%^nݼډ_A?t'ad:VzǗIYԒndtt.Kw$7@"1D0H"c egDĦbF90l}&yR EK>PrvA!Ans|eR[I&eB^b2w}d%X P_Ա(" N>EvQhnY!@2"`nzL"Ĕ;GyMmSAP5ꗅI0ɡ-|4Buu ،LLX_wk*鎢j`H:/+ʁr3&k!n d[l@ W0T=F|+;o$iO>H2 Y,E>. U9CL[꯻LF,Ccltfd6&&|uRfG [Xq',eF Ix*ywz:|r]CVsn{S=┘1L;-dGq;EQGڛY$- _ч;AJ+"IئОˁ^7DjsqCD=i.~ HR, Ffʜbuoj¤cHgٽ`| B`Py8hk "]eEQ=Np_gV,e@G!np8K2{ .LuǤc K3l9ڴLy%9'c;Ʋ|ROP#bG=U pk8aekHaCG%(#8C di+b b1+Ld&e|02$_3kV'Bڤu(O6FNp5B;ʮiZF/L[S$*@ Oդ}M -F'0+#p"Fm`Fef5|-Sω؝?胀<<2V Խݪ>rug,r3= -UCY@4)')dR?l*OcvR& 3ZH(oZ/4Dy Ei Ӛ[ތŹ/NSJ??I@IE\7禎kTXJk4ڜ,vdžIwttht.n{2n n +j{^ʮ7߭Бv]RfNO#>WaJ2)mZ3$DCONz3 ˊ+*F*mnc*OGG~FXNJ0J&{69 \4@h K$LyW6 нoؗ(셲ȥ"^($z[N3d@ aV:I cQT\ʭys= 'd<## H?u]sF:%›/G}2?x!k(>vWDX ']¤G!y m;^GBGB%$lݾC..o>xin[/ -Wuϋo~"tfpA>[`VuGVTRm;:^IܢA$Au@ )Cn )1#Cn\Ys]aQ!q/KȀ~C](d0pzBk܅:aCjc+Af %*srz V,/7(Wv$>C݈0fQ?DK,@Jly1.ަΦdF1$9:T|B',A"g4 kř w{V "#MVY$dQ]2ĽRU\w(YY4v^?j߾Nv/nDfLMSUYru???C,Istp.`0|3N 둀Fw1ڱ#8%u^©xWWͶ~\#nSTWkvjPm:s?7eRE: &W$Qhd2^O H/\‡ Hw")41wTU<{+\[ :Pc_LB ]|kz?y908GQ3` zA1BQ/1CZ'A~ BF%C1>5 s hصjzjN*){}k'8Jm,&>h5p/vs''Hܵ?& `a 42Raz}]'H0(lh1IcnN49Nϐ^TLJN*Hs&EZ*M @s i-Ž.Ʃ,W [k]jg?y7ܺaҕ8cb~'Rrˢe.#Nis?3pdzҊ8;5ĸVOכb/ҒAQ\y*65{yY*+xRVႽ{im}aL:B, o$ֳ~RbfV6W4wldN>Bl2o"])3L:N.g.Qx{7~w_@t!~֔(9kʢJ/#ޤ -Q\1h{t~}J~ ]PVtt*)n82TRHEBĔ['dw}s\{ nQѴFB%t1hdpcndع`Nn;ăyʡͦ *BbY߁60$.F^F-fPΧ ]WsSl @^Far֥=-M^ #4~CBvq*GiVAxVE_;\\RG;.{N7LNS _ L%A7y %xjׯ_'1,vs!?hw8hVm#CGE/%jVNsܕͦc¤k-sgNZe=cswZv2<7ehK&zh1yEޡjA^}=)Phw$*yѰwq%Dnޡě^NUw1 ~ߪ|ͫ^ y,$^D6FAFs|tqȌ65 $zD;Q]/ZΚ%RyǍ3ySubFIlReb:M) =<2;Et{'~oo_UAðSevˊZȼsc!Yq@&f`ٟR)-/Neh}G*-3{/r)-1ӕ?HcjiӼٺ* Gɚ3noԵ7BkQ|b't (z X!Qs hPu d_Gl"`aҭ8&ݥK¤ctIw*J+D,3D`ib9Svb@C=AT=6UܶzW f4Xs{aԍOL͕v=~N#|,"h-feHOمw,D w1J=lsh9p&Z )i] iڿMOwu^xIgt!F7]b?~3+Qoy.' =PU~?q$-zR~F"^ {m , l?E܅6F 9m[= b:11*990g0 !/ x!KE#*=9+nBXca`ҚpN]Po9ۻۜusizHIW/ !uNWat4`p,kEN4 }"g3%\P)ND8tݔcdaI箮zC ^qdAMNo&b4ؾuks |3N n`ˀrY$Ƒ4<+Xfg9iPBB;~:*i΁(g;K*qH}ޮmLu{׏cfϔeNjI~2cL.wsNzf:I-2*W[n =;uy*,Ez۝K0}f ~aNHfs򡟇y9Ř&oY 0x0d i|tX\aN>Q~y[%aMrKa8sa4 /a& >YJuIFAe)K_&b!.9OwOtv51M?=ue \%p!> RFR+ȳ/M>gQC\4IJdZ>G_Y^2qU1HaڊY i_32M829oaV QmN؎d<is` /Ӯ7GL3p掐́01`LUwxE_7hMCJЌz~=ڐ74G5^#9mrW L(Xy@O"7YXAPD3peAw +IMä NGxYc<B0@rS%D~o 25F@I[iu]ŹZ4$R|0qZt%z8^˗q[[3mV30;qTu Yԭ/#CODU }@P,YIQbM<% [sqm폨1qBؒ;gY#V ȱ3 C PE@UL`5f'{yzǐX+IW̽Y*ap10AI]L~o0ܗ*L |/7eAn$$^4&r!q(9LؙLJLp3[Y? `~㜾qug&(VWH|}_=L:T%),҉rTIE-HcX桱(4&#zUז(9_۫B,(Le4'(یCJyIM mTʹNB5L:4ŋ` D0“CtZE̚}X&z Rø sDCC8Z,…c5Di2V}2@FI'N/R-g~a Go50P &0^dp{#0$Q]EV,8bDfF!?*D M,gT'ƄsJ`MJ **7++Y*= Q&"` 7!3P7//}vD6YcO;N:KoSo,1Ǫn)t>ZS?rtIWyi$h8b+74ߝgC0]¤ h EU;;!ED.mZ6 PyTݳƤ[?c;7|ڵTBgs&gIyFvOJS5ٱ0SĢ12,tHh7^ \(o;Ԏg$>{XZ!䡸GH9 \E #U&]P(GcW6&%\JpAa1a1Jb͙ Nsq!T1,ug%ci;8w] h`[oYtE6xrG?}Mnmʺ2F t%zj˕Kz=7-W*C,E>ä=p2Yy!,1 Ww+I;⁡lGX#pҀr!}dv G"#y٘&t0)LJ1ä;0Op*)$UL:,!( lRך o+ B6"aұXNQc2[$LzD!n~|?OCLWO.ホ3LMC$~C_T[ },))25YFH=pĒ^;Ʃm8Us[rMpl:9@ H\zJ_XݖF|P ?{gJw2TZTS |˘ ۃU7&#Rz}`AӼB2SX~ŎXa<#yа ‚(Z= =_抛R`„ AAZ0OƤ q` '+u9tqNg3 0e[mf r|O׻lqU2/$T2uqC/߱4$/m]I%O~һw/F/щCfSQYjQJM߶g5ZmZbS&順(q_aҭFG7_lzd񋒠-W1tU l{FP@)$mBZ`C^f9D:̸dFQ?@W⦭ ]^¤{ilWt/¤{2}}\!֣Wt/BյRJ&݊(/x`fA0^p].&cdyƑtWt/LGnP&#D_W3d)dykЗ)x=x=X&BSkN3$r{ER,`ϼ UWswֆ d:j@u,r< һsc+뾓 EU?&b{IWQ' U|&9}~)tTă2(ȚB*VaL:YYe2 XRbO aLdžI'Q *^Y aYԾ] ;t&Yl 1ʡs*h#vߏniԐX _?7\:RjaOv"[:ܢ$}){.X)Fyrh6x-ȐPdIy<y0A\gZW蹢N)VXWlr0XV4o'=">ўjטtFCjqtNT#tPȴ W̚g@$p? L:qx&$nOfi Q, IY~O Cŏ1? $":a.+qT_WL9T]P xƛk!vMKXRCڬg@ddl`&h 2XlE6=֖񠟲j0>}yǤ#gdݖagLbew[ &%էo]״<[Y*/N;gb }Vy  l+3eKF@K"|I9B[)%/ɔEÃky7!p]`8bcZ4N{$t)I 95%%!| ?N}-(.)I7bƫC s, ڗ T -t,8[Q,6X⥽^yYf.*?O&~ @.tE~KnTI'_G1l멼}Q@mY(\E r4OilXY" L(hymvlNh@i'K]SjIh1V bn=ԶJT[ϮݸݥQT7 .2(r(]- h4S x2Qbpz%'U0 o!$6D9SD2x`1't>Ћ(Hjg BD$)ڛ|!nqA~ĕq4}K1)vYiIU)H+I'"\ZCW%c7IOACV]nfbhpYa.b\JLɴU=?.(⤸N l! 6m޽ CV(i5J :lSl8$|F&d(=g7'b2[p)S@ky!v\L-c3\QP?kDG}q)hmV,nMf˓6@IDAThp4 . |&R,2Ut&0.WҜ pZN|*[|D.ZCu<9OܴH{竮z'TaccW(T@ q JX F^It+B`'\^`&FF7*s>M&dӝ$ĸRF0r24=QUM%2D+)A@7 =X t" _闅@Ʃͻ ~Pb\t?MN8J ؚjѲ5EksIX;@|]Ѯ:ўNS %D L:9;05Av"7)@ն~:Ɂ*[sKL!/Pߞ=ӱ59g*G7ّθw7tE> E rGL#[I|wTE#E_&Ym-#klq:o LC vFj~1LgIR&T"z[(OHIpwjr3xvנ(jJtz38Q&bJeV@Fv%]WK(B]8o6?;JiGjng "LS$)1vdq M TqO rOsKdQ`)QRlVY߿g n]1@;3c1䋩&d\2cґ+@ʁ`L.yhSs FgQy+_%@V"I赜?@1f#F(y0ę^*L:tч#&i0t 7 H#cDշ.iB}ߋl -@>CGOxD.HƧ66cۋόIGiPGeG^+7P$כ]CCLRp`ƕ6#ڐPixhZ*+֏W,u\M @PlwL(G͉=T~<% Ō li&#aґ5 i4}s {|^Q3Tv* QQiLJq6L;.6gΚK(46 ."B}r)tgS#HRj%A{ޥK[߈\‹v^Gec9Ĥ!LS<bFq&kTF~,M):j.xg7KȒZCf 9i ĀvLj?&2b)0:L:`xn 5"j6wߡ&kKXm&C ނw~Oä|; k2rKb3`@^q' na<82\-i0tqg}lDA%ᵉAh 몼ZrĐIRET,ǫ]`*JdPAƍ>{o&S/?(|w^2zazrњAw91.$N.]OQ(QJ!DLv.TȪˠ$1F,s9 b0 .oo8S_sO漴.'{:/ 9cm|}C Bo'tz0~gxn Ei߆AL&ӘSC?$̫/9ٷ&Gh2k';xF((Rk8*O%ϤQ0BqM- %GE@dlx8nI RbΌr\rp.˹>=z=ʃD#cސu#Fu%<]akoox̀!ƥK;<%=?hɿ(&6<&aq5TKME)X#ZHH 3+A^&V"HlLG0j)T].pIuB 1.Ϋľu4EjhjZW9rIbp_Di17j^B@?nD0]1y$aA!'RޠoZܰdVˆ\y~LOY\v]=-Ṃ'F-7ݰWM}`էr]V}DhB$Gm۫\.0>8 4q*2dEǿ/cdmd$[_M 0 r I2uq3BKYM$WmpDi`HYKLzI6|y#~[oIF6DB^1X0i!(3BwTb.w$\YX 2*+U׈bނG"^jқNLhRI_%aբPR~_ C0|rJM)8VX>5=KPJhҲ)pC ߩpc!v}rmdN \4 FlƳ?ᢘm UN`BZB%0J ׿~bV޹s.]C{>Cq=-9/[($ - k8Uye̒Z9.dpy%F\⽨6U+Zcx * 7 \MӺ>PLD֓?mpzٶ:0[}Ѻɽ"$F2\2xeXL!x)tUj&ZTYO&j͐gU Bd .P!p>6l$"L&.1?v* pg{dne*SyGHl'íz{phi_iZ1BOOhlhEL`ҥkaMa& ٻ2;rzI= lڗ)C/F3j(%ȪSj9&7l S<@"} `R5!Ѱ+@J69z4Վ}&ۇU(< i πN̾DG Ƈ t8d)Yٟ٫L˳1%lfRn:Gd5OG=-‰o=YZZnCo$Xv-QLQrg/yMOH%$8 G"(6\F2ukU ʎ|y<=r-Bپ]v EA/:6I7~кA|,\tuHmq$T 6iAJ!g-%e)g9dEyByRTxn`p8 E\wm웨[=EnOy0P0f1p06a5Z"&G .~zL:D.;J2=pEy^WGH2a LgZYzw>be&kN(a3,aauE?!ɒ!%c[ R3n~lS73i%#Hok~E/p!{2…1Z"y5nKǤG m$#mA-8'r#L`]_OS%umUsƏovKwt~᤻kEH8VRBˑ&ăxV |=5e0b$\Ȓ%HI*r]sAI2Ck1GĸL\w@5‰Qcn;?9p2BO̢tZ. Q槁 KO#?!ҍMbp^$^#gq)+{+YvE8xݸ̼`UE̙6 OfJtJ q\"rŸE=Q1&Tx,E `|}EdVD䄫 &ߛôu\^DcLU e&\j,'Knja.d /n7Nl!&^e 0bf[[eq+Z Qu|xOb'6RiŶ2ANir`4 DZ?8=E9Js+&J`,K; :tQ T$1S# |`L5Egbb&hÉSJp'b ouJOe^ǟHP ~!n>{]֨A {1UnViNdBS $ n;L|)'BD4dldi,2EFvR$|b$wU2Dz`&]Ȍ-`.3 ;a3ɵڮ#\xtyR*qpĘ:G?=_1PtPV^*7L:\Ŕ:!m MQ- ywgr%QC͒h#Ϧ1%6E3Fq &S4A55˦%%Lw#wdZWxǨ?U82( BYΰ{<@ۣ rЕ*(Ĥ%.$X~Vz%&U&Dv9K";ΒZEg>Ov:äXMܤ=D v>[P8EV/Uo ڭ2dڒa2ϞAGIWyxE.&o2}I.hL:EPr.CB,Y|A!+aLذ0|-ꭺ3B8nɨ/Y) tm ™Lxi?~?|\] #CīQHttqnt^:1OeZ#?>I$FwF7:| M=ǧAePukc"0"q!8L#$vfmVzWEJ#¡ʈjfg &jhtia#1#?#"dg@IJb(c1D^V&wngt(#8[oYk[$2L:1'[i 4&pM!-(a*]KnCA/IgKfh S3=Wh l w2q/$DO7J[q&'6i،0:d.17h 5kL;ۋIiIR5ςkZ)^c]b$ טt"kk ;wm{󏏏qz(R{[.=G Tp#T"gݺZK~h//Jq/LV)^ʷ>(=m)Fi5y81鞂X/԰+]^//YW M6ľāu^c5yv>?ݱhzxVSmo`=^Ф/ `E4dm$D$ͰᱲdHp"!Hkg* P# xKטtᤃٟKV3A~/^Uep$2}1@Ȱ'줲a껀-)lkۓ5LKQ3+v 2ڄg_i#]XSTSkLyc?טt}l3&JM9XXG5Xoueɞꢻ\r{bՇ>F'\DwtZth8EYAuD6dRX=-Y]^dW!huV*7q Sktg> At1U1L{8`(SҐ-`"Mna4~*3t4r*?yj|pyCm/ӛlerʦ[6Ea A ¤|$lVIYSF7T L:[y""5^<"(Jrޕ|afƫO|<!M5k%9ƶu~W OF$ tT `[Ѳ2ȏS:H v`,.&Z.!KÆcב:{g1'$vv =^σ(Q頗(CKDꌔ]VݜCp̱<rTBtH@qWy<'jQGAQ"Yäu~i0 t4<`lHb ƤSLuAt#c"F cCh&|$aw}ʇ)ZmaDh ^a9QI,HݨSl+1W(~ q$`.+?r8bҡPOݦr0{”ex2&HIGI& ѫ@mt%Z7*dwk2Mn=DQ= pXZ4t86z];T#`O~-W@!g&,d:&`lB́#Q4CXQ&L@At9i-L%lgz^P1\ 5("5.<%gLP.ܖ2ߟ-vfs0dRd| `~|/FH|"&! ĔPSɧIq GCA h줏c\I\}]5g77c8duFBWU5J9\UJ_h#KZQ0ʽL:`<opj-Lw+$흭JdQ$.%P}5ԡ80YZFhߞ'qHS`)Gu2dY4$ L1FtN =K*FKk^njʆA_t8J4yjDiW6O6dsIV:^q2/pu]ڻ8A ҜLx9XJz1|_ŤsOSo6&0 ä,HF)xYZX:إCbJ[U]MƚN4ފT(@F_YcT>?OJu|kMU < KՍ="8g-K;KW~`Tԫ YYr}|O;6?fR>yt "5cV1HwAɉrκ2ܬ>! ւ]ud!L,2Ɋ(3 ;)QYz `7X%i;s<]~z@uSIVonhuܘtZD`|Rg<ڤAnmMqv&)ƙ0Q/p(R%g gGdaREjpDh $b!@ [=8 ;B* dGl:JCzDjMA s}&' 7")LE!omLdzKcK-a9' }BU i<%}oh@2X2+ VII =Uu| Np%d%IǓuR:fZ BOLF0Ci馈 ]eay>L:#GQAP b٘q5(צwap SMQ]51-~grUFuqzV<6sqQ}4"y@U(]ot ^PoV6@C20zA.4擛7!|#R$o|tHhQekfp(s60fixŤR0?9ybʭˋ+EfF:u9m4<VSşoSwƟnHST~@w=WZHJ(OҠ0| : O@ށx蟡a%5D1#*Nh#?m<)1;j O%v$N29lnKÔ|zL:iǒu팢p`{0!*@S9t4L$m L: &/7*-`uD:mJ,:8/vX:z[(+4i8M*>R ^wѧP0ր4%Kb%$p &z2cj,زDh>Nt\VX4C{ 3g ,*]JPf\mb>f[1U WMD@LL=NtMpwwoэ{pR>_T3kq]& D]km}'Ҙ%Z SDrA%GސQltw3n 1glvcmPS_ݒ^Xut{,3[2nK'iK'',キw6*3ma6&L 2mL'p\l'9ZMD:.ʓ+uާ7gL8K>i?L:fqMV%<Xt;)W7,ՠBqE34qXaJ#z6F6 ڐR4لIUЕ25ޒ{LL#óؕ0P)07]`uhՌ@]v++vGT-ՄUE婓qVQ0Xf)oӢh#rHRA԰pj&;Zۚ24{ގ]kW#\'%exeG0zZxyԊ3A֋|#`ҡ/0%M1Z[Q1ubQg;B;؎MµF|NO!sd !)x{{pwwB^؋{" -4ߕTZ99Cs4=Gy~ǒ>HUPG7O-/K;^IiJMD]U`axQ˽_vU rͭWnA cU3u@6wiCZrt_} JSa1SmO9ʄ͛.J؀ͬNT]̗hr &0Z£ P&ZA#mltEl ,u mO_@"Jʊs`~1Jey$[QaTD\BL%Wn8TWhvބ/{$kp1d@e\(Umdeaҝ.>p>M/}vpi64bL0+ ]Aw'&#ƗWz}[ i{>ZѿhJS .WwQzQ#8y\u>6`(Ym~{9ހs(!JkeS+UV5}GWk?DJƊغW;ȾNG^z5<ڃƪRFl&Uz9Ia&&311XS {<Gt no Jh3mG=֧bk7b}bѼ &&tY򫬕tbo{˾,e#lzW a%8:lKFIr"p}v5֯Hb[.ɪ7d  xI? BLap ĬLL:*iIN)')i3]#Sўe<䨏("ٚp:n>߭tY)+ X,2[j_TŸbK ^Ea5ermot.)- :0鰀D)dyt:N~xpA{>nOt繳0Lx0防Yg2U1&jmZ<]/(6vLj-!tB0..b "lz+f#,TJF;@g{Qs |G\G r /=x "CUIv-im *1NY*KWG &kƝƥ9;bĵhm^wYDGrhs|AW=XYN]weN x`C"0V!,jX!?-w81Qt!m/~a^*+S'-53T磴 4$Y/I1Ki YQa{,Э08gPXa(p^fC}t{-Z=(e ܹ> _褫P^t\ UeE'Å\8J>fL0Tqu < >D6cy *') 4kpMz̀ie%tu"; L4)Y,E N3N.Nx):n/@ûSfptq[ܢ̏ȪC2E&QJ j4JKKE'Ś\S2fjBLH3|!8q{sԤUr=$#tdl;O47 {&x¤82=@*UR{;0KQL%Q !Yn=Z @kdUtBk:CqGm(2=p;] p@D00YzFą51҇MUd$*J2ZӀQțOIw'>z?VlD=|",h,`-qh!즩E.&&5cѵ;U<v$6L'%1$CZ[3@/&S#j X}&X/BCC௉@& FtNq :kl=X4.H A +^7}SGb8 6Ú@kC|1阷#$ r_[0]SmCYMc$7*qHCWWڂx%Մ+tP&]#3kl\AА##\C+i%qqW[j@IDAT\,JqW%զ?+fQ v{-1[ˍ$0=b.\8]4)[1 %DuHP^F8zAXBf0SGɾfɁ5z8s$pđB8 O4lE(刡XDa%sQ"0Dd>Tr^0U.j[&$7}I-0 nA٥;kO6ir>tpnG~E0pl`wj0=% Kea!n>]MP)EupD+$. sLn܉tN|D!7u6 &> K'b!l[I'х g5tXHb}&@k$kL:dž!şW6_1sGo!: ~15y2AtW59D{V-u2DK쭘 Jd1Zd.+8?'hm =o/WÈsIw"/ <߹Ƥ{|#sI<y)fi~s;2\9_)h_|&HsƽƤ{kLi~0 kL֓zI$ =oƑtkLTy_C?dЛի>{?R~L4˝&iM\xܞywqT3exYwQ*q-%V -6/KHeծH}?P+5 S\ciSn N6n]Xd5kL:j"{J N* qH$29+*kL:-aY\\OAArj 0G,}9Z {%R/Q}!p oeL:0V.h5Q'B~16\m &s8Qс!'DuJZ%/JfE7XťuiTXUsb#bSm"Oi['4@4D5C^U'{w?@ay,WH mLDꋶɃBơBX([ᝄ!'|g2|Ū:/q[ZVcSȯYE H_9H_m^yYGy8Om:"a*(gV83rvӵ>?_9 5 'w*7KA. j2 Xyˑ|q7htyx NTK2sCD@Bq'˄!yyi0HDڈwakoծ0MM,֌k/E%¤#ܪNiZ|r''=R>+vir5xd%HW&DZa{}F(yVG|+ !Oo!!Ȕ˄t*a!DH?pdZ3$X,!`ҵB:vhZgTe&#0hx"5WYfs%P#j[`jC5 `# q̀yhpz~+7c"Dd^?1X9UT(ј ┟ lI> ;A5W-}91H%Huq&i% vdl-kB,>~937pr\IfcT6>̃8 5.4&qҚT\IW*& r IN-7&ݠStZlL5Ɍd|v><57AMp@ &W'Ov,R$),Jv6p0+ƨLt+ 0#ws 9a}"9;[j6Z+vxtȽDM g%"K[,8sHZ(|5"H }6ziT/8H$!vnXHmB $]Jn4.' =6 O#wۧϊ^Paґ9ܥ$lғS<K7\ 3뭂5\t P^@7V%8 {~ vde_Eww `+ 0&KBW2O]dXVAZyڍvCS3-򂣩8ɣw@$|ӳdMGdg8#9@< dvЫF0ԔNQ2_9F:Nc-$/-{0$^$i~w ID!IEwC;Q_`4G4[{(#0×LvKӯ,!tB($Y,0(PڴXq; &q4"6R-&b4˻gwI1-~LPrI0nӬP0v@MϦWى#ܢGm$2ddžYrO<꒻wWGuynw&$,B]e}Rh.odOER_6Ooga*&Wu2C_& 7.݄KvN@Ad +V x٘tn4D>zd 4It|p2/GK)+#uK4BڱD~䣝] /?]|jY,g- <-&2V ɴre2ؔp147kJ&'cҩo.o0L@B_k]bYzq?:oo$n41Cmzb'|%bd)@e CmӞÑQYݘt~c음8,1WM *|,Ř&]cEt{եZϊIG R$+-‰R3ѤTE6T]>v6@ AIV  ^&ߜ|^3M0x$|o%.>PjG6Y=dp2U'-9Z%bҕpUZޘPw)9QូQH|>5&RL}Hd#a a4 +~SEO0UQDLvn8Z_]/Fd0O$y8 eZl>Iwy'O9a|$ePddF<r$&aADž3rSm2T ۚ1((#8 j'ư_yp;9]* R4s8kڑX.p֡d&mDW\g3^]DzڍZSG~vIc66@ԐI#8R޿,%1?=] lH]Ҳ-KP{͖v^U4#uc &/x+wa6~Y⇲c9.mr.ۈOř>NhldC"E֞,Ȫ TxN$يvZXe'mWz%(䌽d%h H1b%Af.ȝZQ(IkN(1c:],bKCJqt¤<NC,vAܳ.W7qAѓhu`M ϗTIʜYͦI3#],xb.SӌѮxP]7Ҹ/o0Hs%&m\f,]ѽr:owYbD (XIԪ:ֿfY* ԕ<6yoXH/>]H0\U,b4\cܩ Zt%~ʿ"}޴Nx!I@H.UYY Pr@Au`I͒VӴCe.s\t JHe-ҢC~w&-+:É;ݵ(O2~@ W]P&3j CBH*Y [yY 09cGi E14 UNoXT_1[I2C>=Sеg`L)̃hA>ӣw|| KoX5խ[kZ#v(ڐ"G}D OOouf G0 ŤIq!`o4T dT"hE\UQek^v*ǰR1y)"wnU51cZRyF1\:)&tn9!*.,6PU'>2c,b>s3sUwAED7RR;&V׭33vuÁ%z ؑg'.Ϋ@k{Z3KG-/s.29V(zRr(w¤C "&\B7{q &lVi9ϠYRcTXDfkA2wI_ދ'\=%x"i'Hq&MOH&W/G*0ob)Yj݈s钒u>b+M_Mꧻ)8BLV i6$&=5-7o6L:3T$W*) =n;}LqWXSUep:X-gjouvp6~AqӟLk ^&6*1}J4RIBXq1]ܠ &t!_p;(.`*@$RBWT7EOޫ\%}/Š,y9mѸ-όIHN|;#49D0wV+#pQLҥTLQsVdPU4bgx1j*Nh:#\qTwȻ(z{t:1gǧmҳw+UZ Aey0I4TAwgcr T1J+SbW U `=JZ@\ Шy׸N c21Lip-y(QXwád@3,:]jgb,"Y0mZL]m>&u14q&ONKbϊHäW1ҰJO̍(:^[j7\ƽ122W b5Rqe~kk'{B( qM#˭A( J|a|W]_wHГ{Gt ┆H^!a.14Pi00{{R1( QUpIzJ1%"ΊQC%0 <,[,>8D2peBO1@HDZ1*Roz_.4PZ@ /EB6Dr;In#^oM4+̟VNGPtm?5OYΰzVAV nKU) c2L:$Y6:nU4xм:zR=De[jtLXC27< agfőOr.WNZGAo޼X'_'z:ۿOt|r6~pb4[޻'VKtU@6fb0^>Κ '9@pH{ ɀHJrcZG#W}tj@#`4F;t9V}2yCz,03GTv仢#OdɕA֛ۜWM),hdP>£C؈Om>m%FFSztzO&Kg¤ j(cЄ<'_P4HmIרͦc~ӡaIAf^ [Ս÷\FK0lK7/` Fp8$dF/5"\XsAa|[ AMO_cW8~w҉wdp7U/)?4?f1ZWaH)m}b$Knߺ+.v\(*0Svw8UGIW[G+%mARn'VNjpF9G>ҫCMIPZ`tuCMA%F8'A!!>:*ÖaܞlUb֕@"Q70as|9JʤRXXz>ZDNxud>_R.C5خ~b/rhYcˆ~ KM" `/Y1Dp*@:+n[[#qfDָuvvN[apA_OJ*)ɒ׳3c)"Ws&8@m%Ne|(4U X4ƞxWM9*)hc\$܃c?n 횫YO9z$UFKqqzz*j",;E%yKcikkާŤkL鸗&IpIZ&ZTtڽ$5@C" yWnrSX: y'W{'Kfe9?4 ]!(ߩw~.P,:x `-&(Q¤syGȷER&Y$WALו,Io~hӔQbqn,#RgJz Ng:]G&K,;zqkR^c.̗9D\S `f ݃9$ ?d:Jkf{Ť[S@k /į4CC[f"ujǪVkGE[۱SjiWD鑛~zuE/.s:vO;pqсd4Nwwo.vwo,{0懇of!]~Ua¤` c"Ed<1taMFWs & js繤ifT9k o _3@X^͗GsiTF޸!8ys RuJ&<]cJa:juBUdZgb=SšV>N¥)k%Fs5ԕV N79*_k]\uƕDz634h[ l ewO[=@c(?-Zp"GFzCm~}^58<փu@ ,6)7$ 94>ewuGryWsY5YD%|\u|{5j-~ KYPШ]FIFɌA4/KN&tǧ\vK9,{0^{5< &4ij>L:r+mVȘ.J -IX{A.l0cH!ɶԝ, 25yb~8%_?D@C>".xJHMjiLZ>>JeWnlg; y0]% u+3Np<_ރaMo`֌X:\!rX , 1IɂA!$y3!l?CfV08cWt1]|l&A.@,ly ,_ .SCOJOZ #զW?ϰ,URKfxUH4z,jL: #eHlk"u:J/Ԯ 8X HatA^J@&A&s/"0H5i隰Nwg!d"^O? "ݸ7{7PϗK2֍A?I`SAS%Τ-Rˆ0N=SHʏ40@8s8ܦEgsral"sHYU;^#VH%E;edZiF^We}:[%U6[tHB`Û| 9¤+NJ~=<]218 A4J^Ax0BAUOP }7 }ȏQtj[q6!%l\Ll}1JZQsϦ}1[ȣi-exvU ܖHz83nJe8RL:N{|II$*f=]=$hyF tcI dDOB#I:*uXUƤ /YӼ"%fGQVeP"bG"(!rAš zC%ajDG}&thpwc%/G+#7p_\{PΕ?Wp%E.`m]+Epb'mȡfģ;Qt-݃6$F>]_r 4BJmA‌t#gsH#z82Yӯד31ϓO ( x~=CPiЎ .'ooe5ba9F']jkgj1 ߾qkvztuvD|>cUǼ(篼JެY牣:"kz$4szr*C?lь|@Ry]W!~OC%D$+ A Wp|kh8pcb`  hq%N`$ 6@zBC@' Q|qƷ?ΓDB\$iSIJJCt5xCL~p}qI+pEnv>`A|m>n "J1EcdA#n0g˅kȣ[Y?:ڂF0@F XҧA=X=Gm齾~'D2xw9̗|pJ:%PvupbjIW} & ɪ! fa8rԸ>N'Njϰ'_tx wu+[CBzd[!FFkä#gҊMmlt03an'41y!I6+=q!βѽ3?#~>>o1ȼ|k)E \th;ɯ#\A? H "xB+^sR0u坃'nƫ3eqP]` TB(/=rLd Êt{{'7ovJn":12F F.K HdA-[ڊ`,Ť%?:N/NnYmv;tۊq|XC1#5=CNRQ|1^)ay_ 02k-ͣa炈ܧ.m?T&Еt3zл7½t&[# A ؤt&kL:"dXL Kp4$"`ȆN" @is|jgV I̷TK TOm5GjĶtu6qwYy^NU ,geRl0' ,J)GPLPaT@Ϣ =YY?&S{+$ْNHS_g8$0A>U$*";)+ |TM9~v%zA|pTM|&vnxBGaIAU@6/f46Jap'`]!(I:Do9Q+c4S$͆7(ސ-)d#'SZ/#X[w*ǝ`?1zQci"bJYʄCmd+?@Mt4Hka%-q`k<Ӎ{ܕ}vL:<ͻy*UՎ*zi::p$"`J4.2 DB~~xp(MD0e9V)rzН5gvnĹzYtK("Yr6{lo vXBxӽ>6S1,1Z A_w JPH5̳hTdDp-(3MGac&[@mqqk:?n%I# xt"qdǔP*$zW2fhPM"8R۸qF%~wYc+킚IV{S=uy7sZb*@YfD d*'&K_*&]KQP5&3"om;Dѩb%ҦRtgIP FJiEa!# +,wR60Hx ڄ3~$UV&0Z!\;2.Vl:Ts-*!= ˈ n}AtI8C"dB`R"̓wqJMlՃ5c l7L6(5`( N\ڼr96N^4%[1|vtCL@ 2 ,uBC l=RTN"2bEh-%=9mZ 1P[ 1KNrJlX8ͨLׅ5/ٜK泪%Sr܄鶂x`(uVT\r2ɘmfkZ]Jpٔ%H%`-BɦfCJI{W1ںEjQ2VP L,n'˙3ʊyF07tQ@E|V~iiz\)Iސd CDXb ŤS #2C$Nv8wL(F!5AVa_ i@4ʼ>;Cw1dxX0ЖLxIä Wۿ,jt5/=2@^eUm^oLÂ'n˰3:}pdN#њ:Pۚ5bi'JFxPQXףy[,YV}yt˴ "ω)úC.,#*7PE7pF޿O}vƤsIB*ڲ0ݿ " Dw:K40iL57GQ;wnR 0RToHȞH "joo:%-RijX|.x/~l!24ߵgU+ .º\Ip4iʱ$T~ʮs;f1*MbTnrh""j!iu`R͑jME.q.hsVT#d,p@f$"jԋcw>$d:ҀURFG"*iKpjF]ct}uzrKaJ3;CuG鼭좆w`4E`e*D4z F)\zfxq]jJ[* 'jv)DH*%\vt'7uKŽ&H~Tu%z(#Ft0 EAVBs8-@* jkdZȅd4FR$y삚xj$뫡6^ьО46BzE5ye] ƙڏtyN^SҎ5ͭe hmma-rvq-wd'00G@b+$eYZ*YSADTdzB;ըLj&ik:Ԧsl&:P܊^Pow?̥&^"rRYl38g"/aEDŶvXly⡂&B R K^r=kRa H~%ގߙt瓣 ~^FЅ[aK "04C@,(L#ĔBjr5FZ-<5 c;2D4CjMl`yȕ AɺE(2 nptUdSKJf"7$43go~>ǘd&)F U@B`lMܲ6*PZm^p%mВ\5p! JThJMb&9M6s͞GzDƔnm6ع{9W1dG1 |.|#wjC.=Wo9}\L:溍|V9*C?l(R&!$.34s*P9VǗ%6z{fZڙ-\bpal~ƲT{^FytBY+ƶP*躀 lCŽm A𵯽|AO7oW_U VwGiry*L:u]o,eӣA ˩q:OETVI̪RiW@m٨D/W8E++{(\z9M@Dp$/`RDWm5+,x5yR}N d1 R5N3@Eq N}0CcaQ19OhD5Xj55l:՜47tkЛ0 !/&ϭ{dۻGR~pT.]Ʈ2mm_x^V hVnp6ʤH@hX#j#}>,F5nz e~a_G^~m?: E@gz#lߺ}:kNLu:02)R2H! FzBֶ4vPx>HGҫ'lٰURV]\x.P>Vxa=hfZ0%1-)GթQIGH61:Į~^eZ##%[&|x`l6] ޹/iMhARirI&u>$t:Q]IX]`d̷9\)@IDAT m*DV4Z^X_N}ix"Wpw%ō'$R o#᭖1yF)L_ӟZޡ5KmŞ*lT9L:@u` rNW#9!z|C_!U_W$k-_dK;DRr1-T TZ\#9҃f.jZ޾~VVFjV>c+m dPK$Դy<>~vD3u <^8ȕ5Ad)Dy+J7_|U O3Pbmy?xgh ˍ ʰKśt=lG7Aŭ~<@&sb XٓN1DA.*$W_x6QSֺjq݆۷2pA\=[,fs]#_z}e*¦ VFp&Fĵ&7yit|B'H!mΒ2Zj޻ \bC ?pʻ mӽmDd;- I7ۿ[0 yl搈tIf3s&5:ْDs_Dm]wJU[sQ@̃CȊLDeD*r4Gh}4lGN4n2QЎiMYNqhsQ0^f뎌U5Q1 ŋeQY^E7f!ACq"?kusQfSІvBמX*n͓9~yX6EMƣHHU/^p7+E{ZM3̔$x'<, Ay>ơ*dGkSr(TU5k wᰛ4n E z4I}- Ѧ&JGͶ&9)[+HC "WW8$?inEAX`'Qno@|3`;LQ;UFAgr=Lŷu&CoP=9ĕyU!51po1tMW7/~@}l} ҙ SaӦtse1ם\6)Rs |xF0Dt":X -K{WSd R˨>AzL:83t)|0hQ &d = T%L:91\R\JtUY"_( ~5u}qn|R8v8 0L3PijO wIxte>p4^jP:Oę8F LsL^o益Pg/grhsFO-£wLz0 7"1-x0z:浒hd\Ln0V"fX>( +:h^p TE5;δb[#ƐGDE ̒$ \?%#`~SA[ &#i{I]3E%ioI'08#t-́QWz8V9 h,h#'Ap#.(I'1U, w')9L:kfsBb҉s2eUiURgf y4Ce=~2 t_r /c$؂LaU0bpdDtq"'y>32i]@MxH3Ӭ` /~4l8VaQWiIfMg"O,"Q"]wjC,aҕDE!r$ q-ˏ &V6#s[3xw>[a.>!2 .!tqŐO:YLʫ@YtY\`hȅC]8= -ώ>9UdǑ.B @j83p_L:|%upI teu=Bp\Ηg `mw`E0Y%]ags!tCP dAk0>tN03_^L4DgY&rm(;yAih7A0säu>88('cFHEkD |57.f,=uo30:t76dD qd!k1 ΦHE.;ɥ KQ[qANruLL_ %=_mH_Ti.<qW^ye)$_e:m:":}*Eӵ4 :b "kw9}(sL:G)d#6{A'4&sLsLlȯsLǤ'^Nm9&'.PsL'ݙw5y8, wge&;^?ph :fܽO~rR\no/ >sY5̴rlS"׭L;c=YngJ+Vrbe Rk| dak&NIq$&>N^ sY[52 7}j NtOVtOKE  DY<񐲸"Ei″8E ĩW,f@u=߷_{̢ @fzЉ' h:+ $zo@?]g ;_*HYS $"?4:ҩL:BE"pݑD1VNb9qg !I1h,VU8z+:#l ( `ҩHt ip'a:l6]۟L'K׷o%,Ua}(ANB TxPJ?oH:<1>c%#c ȊKF~怞Jy}I5z 5d28l)mAD)i-ױ-qO"jCHZ-h%wFRz:(Pb8|>"+NW}/$]*aei/fC2 C`}"?%dz[F&*^S58C}򯤠y, &]LVq!ވ$0=I.7rcHp.<$awW_}UQs}Nx$%&%{Z?Q y+I#RKEƗҹ1L WJ|J2XqV4)9aqZ;Yig%3AC aʐG.FQ!Qs;km0V`y!{APtyEW39{D?=LB懙sH΂[qRK3 %\Z[*J⪤ש|0xػE0ۓ,L:rHK+(g/0&r|eejACL=J~Zd.R ·SEOį/TIȫEt!k( Y1]Kg`]>B G|3+*9}FX\W~ ! ) /+Si&jRN?l)YE8~m39Tvͪz:qBB au(ӆalReu*ߟ~:\&aNk Wm҈؀vp^q⃸RXa14}=: O^{JVDI˅|9|"7?I"ztJ9YчgHKt̥aGͻN_RaEi?%h$P]M',K؀ \ǣZ "Cg6 z~2DuXt諕^u 3$\&-TP ڬ3TEWkp.б]wKƢ+^pRN'ͣUp1:870j|x}D^Q ݪs򉧷&ĉ#NFƭ`ʐM|kPT`ȧ ؙ Ð#xA5זb{<"`)<&'8P qQSyq!T3)7RE,q^b<_1m`bu7lafO(-a1nF }ҦoPͩ#?Kg[#>b_kd$v ]H8!.eJ6s84`ۥэZ\e'F dhu@Kc0PI]JV E!Vv"4W$bn'CkR7|)IXY'qCL|LfDäy4#, )J9-"U4OلmhJRLФBf$d0Yä+2*dw:FW0鰂K91_yW`҉BS %y.AO237BȹCEfw]a [+Db U%W8o~5oԎ(v!S>0=%botrm2A#1Ud7fŘohY!a"- I/b?^<_7Dj&AɪXST&j"4m%ºgGZTFzzP-Wr*ZT6HVFeqKg!݈D" 6mر6fyr5%=äSooguo0`ؒ8ڰ DWd1ӺLX%XdRմ(Jm_A:d gdh޽qY)>5 *wyk 8Wά.11s(; (`V>QgQId5!hCI"#a΋t-BўNGIUP ȑGټ'ŬEZ%tR)u`  gƕ"Rmq! N+6|hwc JIĝGy{qmɒt`5܉vȆ#I o`1TA^pTtn{4`k9b? 1E\mcyO͵JJ7\~RT :z> Zɸ+=[-:^d0 |TE})͑\|%"\)SW%xnն2 a| I/-%ƥ#\S[yj.mKi@|M ?"nʚ3uiÙ'uL =f'S)-i}vIC5iOoq@x6QsZN$PeCPylnY6,u= 5Ӳk0ī2cH,-FT)GV)pV/($AˤʆtrhI୚eSX}oWYU(]oj+ɋ7Q'/`#U">_,u  jO ҺJ-:X.Fq\ʆZ㜺@PYo5 Ԍ}Uh4٬u/@Řx;`ڤhQiԲd(,Tt-mJ$)"pY1B b[ JzQxP"+^&{HX?Os=mmz2{$zDWd4FtUy&ꔱט))]qK6lQ4][2Qt]1:Ȱ|zO9` {NЕ s%ZK]uOz-ʼnF*L.LLyM2CWz{{JCZ~S@i1xSU:U g^]|oa5Gmfu\¤K 3.o|Aj^1B 4B Hpiʗ^zeFrҍ tu({iY_W2m(&lەD_BF=Ux u>iE@ѕ+>3#/>Q/=5&.2~$bH*qq8]ht(B&E-N\4&ݸGe\EkEAɉTfuTtE4/]ҋFD>6QW[UF%cIlWJQ4r}!_֍7t)r-~ӟ?p0\<֪-݄Wv_  UÍb/Lٌ40ѿq~6"C|jDS̅0kVAMU3aw/X'R @,\  Ek'&T̲UH&F{4agR}o߯y޾!q {Q =izet.A-'1-2s{qSŌTq+% (Pf{=,ת(F69y!tSTd8_{;uhjgUG5CB#=@F02*f(BjӋ4?BP! Cڍ),q4eo&F1ypB phI7j.>40o6~ݝr^~@>"-`k6ʁƤ#G-r¥./Y#Mfz6pq1 إ@xA"[2 $mov=^Qh5{uBkwn4=ܣE1XV1 ׼WqѦ #N^{Ǥ?)+/5z,t:ۧ"v~&(aE3mSpb>r %"&ٗM^`OƤa5m*7[59H%1 @Xz[ҧ@2U:mFVʮ"Bi]x:3DH=8oNhl lww9ɂК 9fX֭A8{91 E\?Eן.D-@A.THҪΉ5rJt [Udm8 AtLۺ^'u!f4GǗ5q1}a VLKKTk: 51g w2:"#gzʩ SKlD^#ct9fY>f8B#AG?p}j քMKU'lҜSxTXi>=b\@!>|]#@xN~-A~;,1e+v]l6N Q!DVOJ(KD54UzD}>IRZ+4{aZnANPxKc$:Țs w|ԖFb3@.n6+!(IRLT 5F^X6hpޣw.!F]j1ģ`yWIpt 0 o?X_Mp>Z 4ѭxww`"):qo&uV-)Zs+_([Zr^%Omպ g݂Od7ŭÀQx{oY3ɼQﶖwށOLֲ4s',]fB͙MR}ag`@$.DCƵ0!%j:z4ݬ놱ٿ{Jv'8!`xrS4v0قяpft<).GBm^]';ODTg0&N/|B>}*әäS?Ecͼތ?.] lЕr:]^.bJУ1فTwFIgұlpl8lQ3cǓ9"jG_죧g..H 0@j8c84,YBD/cLf~,/ o di|LjNo~SANY-jf9͆a@gzII`{z Ibf,-2L a)_gf(7mmÑA88ÿ,N+~:dHԯΊG1p؝ GIG\|'+aƤO<LaVxtInlux7=7O T}X Tklr~9#P׍9bJ,1%)P,: Jp8C ы )-ޡ0j0?@]j͙gFj+&#} ov*dQcvl~'B& 8aneДt4PmIR$:9jEBH J 9Ojg (Ӄd4 h=82슘0<@mAڒ^t2)+WLz:gzԤY[cB?^@UCʊc&]4b<*jqH ]f,(W!,^!10>=8 f8O *1Çg;N$}p; G3 ̊n!;.ikQo2Q@f.y.yh R+c*I:5۟HP]&(})#>,0a$j 7i^]rzA"j$z?&@{< -jxp<7d,ƚôᡲB*zz(bIGF/~(3[*aѴNh BTMh&p' |qII;VEMWgy%q7-qjo4x dK0NP[ݏI/g=}p?G<ý}3wawI+oL!s܏g76Ĉ y`pLrN&i@,:_@L:u&,b/%vCm!aXh'B ̄LWȊL푵A!r1fAi{Jr W&]t=O^0#{`F}Ac14 /f oLPeCݯM@V(.StA_PɄ%Q1gcժY!6ёB@iAt9 ~io!dg5ț?tE*25lg+rZ/Ɇ,'cҭ]0ЄIp 1\ M  kHyI篻=,]xWBXa=E|1?kRjEA`1l)|]ZMI(<Ƒ)',P_kg(-_w]S:~B`#t }.'ɦbXsT3N'0W6 8𔊸bʘ 9ԫ4I jƨ`&PGQQ,$5s")=4's !R;r{W~#{W)=?OEP=O50p3CX F4Az}Z¤VӠ>R ʧc 2_V +eÝ{o&>\5hpzum\u;q}YpX+;=fN FNfSZ1mnqWlVơiqj-6hGHSewev|>q8y깟MK ?߼A%q7_v0QJM۶gml< 5E o a #{Wr>ںzڵ~g jM)gG/^DnmG8]yS"q-uZ;,=1q_2I7!z&-UH+HYI5RjuHZe" ^_+Z^:/#g'Rz5Mz_S͛o)4W 2M7D@F^bki=~zl鸪jUՊ8[77ŵk֯' 4 9~Ƨ*cOܯsL$tK/ mxc1\g^ljNtg1J=Ǥ{ =RsLPqkyI8{ȵ |1!DzSR1j[Aרycz*{(9&)^{{ц'qcyx݄0 f51~"&fDZfBlC+# a٬H$"Ei%,cS%oA`FSH Icy4L39ᛮu]Sut2[m1SOe6{|я<,=rԴ@O9Rw?q#paW|.%aiVXLb?5P%IKRc1g"ƧIG^гI{_Zv%y8;ZHˎIbg$j`si/GJ4 |8F/&i*U=NgCآL2ث0Kˡ# 75&@#eXznjG8Nr @$rČ=&] ~JSnӔc|hM,$y&Q~GJ#$0&nڙ5@%=蜄H/M9n+&SI&1yrIG$ݖ;_hL:AIH눎bk;M09 %5gʺ[8 G4V19+!D&I,Io!p´teA?_lEz|%zw2 Ph T[1\ؘtU쑛>tϑu8/RTf[UNfeG~0bͼspoz1{QuqV<1}oH$ip CUaޅ@VU7Ir8~B,"eNey-*Zs9Oau?t媮"b~$8"/O00.h%('iRMH8&xPx Z L:E Ύȡ@oݽ4LGTŕp1"YD>q}c:뻈SpM7ޭaά-*~;"H&w:H R~a(9UPwRTJ1hu0o޼*BWh]X//8@]\Bt5uKQZz8di#~L>SאaFCڛ>~Au\˦S i & n8餄ٯttsCJxgl[yW2}vt CAO~yp<ב@'I˴!5KOZ Qm]Ǘ|nc0=O"P-A64^^Gyh +NΤj@2hBHk -iic҉C 5\ᅠpI g9ljju|U&@#$Ҧ잓'_\om:D8S,H!h5lpt6"M ˖ešJA h[\ v[}L:䥇҆_g! 탃KwEW@`b&Kt𓊵敧78ziL:5YʀAz5X}izfQ@.#õ7za\[,`>C:b`qokL0dIpԽBH(i[ݡMـti'`p%ygku5zfz`@3  _FB!'jc\IB }{ӣat1"-EZˆU<%`m0da'ߺ#A*tuiE3~=H_| Q Flv@IDATfelSͰ劽Tkqz))'c4n!3}A x!/u(jK^iv)瑏'S=Tճ!:X/QEz#lQlvn]:N=bw՛! !hOf RL;dƚeg\aaY܍V@WLҵ1jHy7Tj5W0Ld[Miߠ jC&&Lk1B >pIWm`JĴ 8][cpwB zt!fL|]j&Kx,uN& G8YޅqH݋8O?̼JuI%~$¨Dzaݧ"BB{޽)iEdr3|"@hU bo|>.MAX /%u`S?ZaQҽ3_@܉"DZs3f-X5NN{]eibV,͈@J|50e=?<_G,\"I!j&F H!YL p-Bud"?UO'R]&BcfSäk`01"8O=jWj 6O0WϗLtdzKh~%EzinV2z$ {sɷ6W 3 KZbINBb(+#) @SUheVid-)| J,C%C?i!1qvX^@ZzCrF dzɠtFTx> 12y1oc&Lp 2;'S08@1.~\$|tx#5۷oa|sj2$.+OsGSIG92uÏqVѫ^FvFx[suKrCr98‰N9u=ܩyh_өz\cPt.GCA"m`wOnh1$FC#CYY'QPe` xBA8 qZc(qw˨64Q[jX]Aiml6؜=9v:Iwp)L:>q)(Ew$ݠp|bOv$>׋(g?&Iэ#C:8H$`3Ĩ(8B5USxo8Ttzc*JwER(Ƥ#pm2Pb~7}a| mOף:h_#[%QI暍9Y1XW꧖ Zg8P:}z~ )ݝ?Ftqң@n  D?Ħcb:vG ^RCD{]TG0RC\C4RU#|n޼X:5;k"sDLGa@o ;|6J̅n\5-*wnʩhGLW1n&dvN",/ϕ)r[ST)1'5Ā^P5= wE=FNt[&XUz[~Ɓ"b6mq0_#6=xHܥ'/'ǧ}N\*1̫ؖ6Ѝ""TFgf)[:MBhP*\WLd>h(WvC >Re}I07:1U)Z9(yPM/k-c6/1%,BrQf@Clڵ UUWûP-& `^JΦff[,)6U!bґsQO`@R=ZMjFFmX`5gE\Y:TOy!kWkm7=&]J#,_,\ӱ=bTK=ϊb j'R\f>ZLԈg1&SJ!tw#j\e$ƙ* ֓ ]t䤰=T>nL*2R5KJG :s>S cd! 6x9U+Uv6Ʒ+Zx팦MB*T̚,1]B ԣU2x!+_Jl@mcLD}R0 R]{+L/=F,$0[+^][x~g8f6RƔ'PJը!2%Z c _~0bcoBvj?rP' K4ǭQG(ƑE`QEEL(nkPN%~k} häjjY#-FXdnRVp0P{i>,\XPFiŸբO-at|DX\*=zy@f0-jWȺ >AS#/|4xUn pv՘r<'y~H@k =:r)o*v"qgH7〽NtUtHKS]e&>rCTE zIupp %532éJ.ĮzzL:%E Wa'dթ3z]H'V0q `WS ƩRCW+#W].-$ф#o$X#Dhڽ9BjjZ'ǣ!~kT_*u>v@)\yĝESOő# ГƤԙ}okH.i߿,VmxI)MLCSWQI9] G"JE$ibBmF4yRK#+m?KA3p0a1:!7[NJbSGǫxI=r:_w~[ߪ~x)`%]VV^NF'}i2*D34v᙭(Nڻjğ~EPBzD&-uĒ}>m1~W:8E\kwu.māY4J6֍.ןC[bIm w~\ή|=P{o|_n9ɡI'YN;'bvT1cq k8 G$qa:Gn`k}d`2(η@# C[MDeS5V8`@ay'S8{EU E0ey! ~qNV0,%C1ę'sMjX&Z EBiiH&Dѡ.Awmu'O4ۺIaH P4 h5fd5!N2!Tt^]:|8AP;PntEN^ALF )ƙK> ǖO nPnS>}끜UOgx_D|%d"pmrۻt'A!1# :@QlCz> ?r;"\ 1& 2^>̂-P󽋣BPtޥ\>!4,/lDӃt]rwȣyx(bHp;{&AuZDţZt#LA3 E*$\I'*] xKaZH@L W|ݥQ{Ed5l7B=9?#Hͬ[,2~DpVcàRd2pA- |& 2`wyX{Wb/ŋٛ?1:ئ@u܊4=u|}!deӯ&`Fֈ XDwzw";w^ 2{sqïBM}d/7OERlQjȎ#8ju#O\h E֭WIwe0׾۹0Pt,y#띝/QoR4 irhs+W?wGo6F%wWj@~$jIFs|L>&]4%SPuR66 C`m.(@8C@/;V!rA/^/iVYv"4"TDT¤Sg$YIoϣHr5X>'L:1ZIQF'v֭p0W}ν{ӈ"YLPH_״:PBpBiYנ%ix sqy]t[s Πl,\H d},6L:͈0DAiJ=*=IeLb[ Ǥ u0.Ǩ.V#DBOjϑOkd2@P!Vǜ6`?`3Hj5"V>,'T~ޒE)iӓ0 7IsuCK0/5&6dC-`R`8n ŤSnk ҅dt4L;=L͂`k:&~&曄M58tp쇷=IQë v$˦Or/Ze_j0HHF@PVŴr\ ݥAFJp\9yNt ֏Idzܳ0X<0SիfWaا#jcy]8  gW^yeEQH$IvZ(b7~n9lKsu_W"61s`8qMmCfkle0bRnC.na\c>l)#q$*6À \^a=9<&Kk1΢S^sLCn=Ǥ{q9&ݓP܃vJWzWƑ/r_R3FXsL1HG>ajxKtL\(yƑtA]HAysL%YK9ǤmgQy|:t:=vHH+)}'m;hc7m֮d-l}ZpQtgVY˞5?RU7äc"*]"~ hCT1};Zqow4Vrmsp ;?fGy˔gJ|8%C_Q7GO{w1,U/?߻z٫rߧ(í§I_5G1< ::x^)*|>/WQ&>^2~ }1-1p|r3Ǥk0.6bN"hL8;u;oPDǓ2٬p$8U~LD_VLcdI:WulM7^v9k9VxbA܅5OB:f; H1;prjM`i1m< NPCҢ8ZCD/ũ! D@0$8jY2_y0D\8;x$d.)Xwq'g1pmPb$A;!HpcX$k{~g8 ?D:ke?g3oSQ75Bdb9y<;H=dtmysK^JhPE U|B8 e*Owx)典=d>O㒜"j>!',ObI)<\k'u[@ke"cO(j _"‚'nQzxB`y,O @JWΐ':p]ܥ(D) 6Q|/VJ#AZȝ aҡ1a`dPuoFn~?)HȄ|Xhonꫯ>RHJR{KPn8ܬ%(4M^Rd{􄴙(GM1G$`dh  $)L!p>cNasxvIpi9ޞ$ƘtJ%J*UWnyF$?Cd&p2]X/pnD?%TZR&%&O-+h 8DO#~!} xj~L:yH"S)7W{GD@l0A-R]Ot8!&a* B^hZ6mwUQFO66ǡF<ԏ敬wuJG&s8 >X T6+J&P=:ׁvn֠*ͫmQ}z-qW3:9m`,%;o]zTҬ'\ӋUCB1H8Q~uXt£ HF4c"l F~%zC숼|b !W|1! }Px`0vmM[٤PԒIH=jvyHkޡZSEȢޛgIrݐu:r>rꮓ;crxI%urά*Ela4hXF7 x%m MJ;76^6@ - \ !DW"EEVUV7)xwn7UfUVY|_ċqs=s=G)E:6$}4"/0 TaˬQ5u ^ĺ3"/1Q\(ϗLy3AȢur44-C1HJBU2B D @yb^dGH&\4LׄBl-8(1N"E"X'bŏڽKi~Xch4%.h-f}gPz]R( α5%P IOmr*ȶxE=b@/yȹGUJtz61m)Q4J1눁fe YZO $'h=)0~84ER#/Nñ,L3|#fDJ`ʜ8 "Ŀ 's #i't dBpsӵ1["7&`FcBLT 'Z \ynb2ELu>?AʰT?"]h2UTiԯyr3^0Ab&>?JSTPVr ˅f4L:sT</)U "SMqZ&Ðk|[I2H⎝GiEAcի޽|*B0hGz!$LsN1ɻ %J*|!_vM,1zX%Ο>vG2kO"ֈ !Fb=a赶08#U!Gy8[.&<"G#EF6L_6.r$4֦=&B.X ^!4F*d O R# o.-' YuD|:GZ{Gpx_$f,Z!YxAzms-#%^<0%gӾIà\o{ C)1'D̴67vS3:0lj{s֨6!,fyQND7wuX9~vɥ]avF:ν[huΝhECyR)!"gǤg5vH8 ~M%"[(2^Oqx ;Ww.ْ ~=—kHV]<_y:/DijCe2;J O202\f%nsɜ`15O&"dn#oD)ʆr(\j~t% l(@N9C Ce-:8y%E)s o=~,7u Ru9oh|NL:@4N +_5URhm,pT[nĨ5L!bNQ8sN3|Kpz|U9L<hěx&>x1f,L'6ON監Q"XmnRq3TLRKRk΀R2TacQXc(ﵟ9ԠvýYBn]Ef-`1N> j))%9#2C1ׄ4\C?x&[4lj4\qY2#]7,H o7"<4/i:!r=lHJ{Jp$räC!~FS1`GRrj@yòs@,G4}=+ۆUaFc0C$ xLqoA11K6T-3HRj|̘t\ dDb@~9D'(C*ga̱'T-ootNZr _B+ #o1Iw7P< .|MeB,4TIݔ(ZBɖ~"C5ySܦ=p& pszcaHFRzL: Õ <256pm۾([, y/jQ`>a_C3BI%A|5!cwn^!af#F42"aJg_U*#GDXƤ#bWl"0 .zYc#/N1"V{DvDi.r09}GQw xjƆ3'r1nzX9ˮwwn!Ǩ6N)7mĿst+*unҡ \o{؝8)pMHYScF /"zbrPPHM)ErGI0ɡwٽ̀JZ noHohݠZslBmCK@dW-}{Ӌ\L9}*B*<^BQ6?u!.\& J'}nLPKg螢({h 5D%5CtP*bn,u/gr{[-wRIڦ1A0S8ͧ\YvdRPzK^;jt pg\R:LEPscŊeVXLQFröyNH r܀?sCil*~"jTwҽX*ܓi r{|[)O˩|`VTked4QN{v\I8=^ N/WnH (Rhh.fEvZaD-c)~d"p# BB^*`beH!*Pqf0Nǂ" =X:ifJQg_5=Jw@Jxtp u߸#H (tEO;W0!rl.O so@~w3d7$ce&Z{Xg>{RЛuc pn?_ё؀JZ+ YWQw:Z[L y1BgyS*( u~3&:rЏkr P0Dam_W'?o4 \-d{oHwFP3/:V1e.氉qn{ .A3P߰µ$˜3x2H:ʯgw'UEq#鹸S};d@h&_3\'D]fb;,|F'+|M߻w?AG2&.1&0h{ Ϧ7yw2pd;Lrt5:]L.%_ʿv8F 񇀎G3 )x9~̙<_HŐ`ciiB׮q#!v.nY ;iF =;qYYCo77OIGDtUtjpU'=yHbSpIU)A5Ϳqӷʏ\#rWZ0APn6Y:]Y+p0U6p%aѸꌹ@ fbf6Qα4zh ZAX(AyIe7ݹT:_,tueԥ|=~X)9[p]jPqcgî<<-.Nm4a7{ׁW?8:?+R84׾Ɣe',0Se6&6`f*&8.Ug`5FJΖL*[-=tTGOK$笌UUNC aւ]|%R"@إ|w0fRu\Rޗ80Pyvף>⵻)Nqq&ݩǎ6o݅*Dzjp7; d9ukRhw 5g ,` #A :8J]`@P?@ľZ߿~,p:zPk{KKi7ly"A-'0vbK57jFT LAX)<#h8$r0L\4ncj31b"Y9A U(lTٜY*e 'M1R"r)Kd)7$ k=/P_+[RC֏|ggӓ_?ϢCOOP 4tt1l}nfYXn>cq L:*ɮtlG ;KvN臦!eI:a;XYW_Xm=ej#U5p􆮺$#j׵~i *9f%fώ'pf?ˡ>TJOͻx W:Db#gEL/Fa3jV~}3r.8LQU:chzu<;|rd#ϕFFˁj xy` vOgNsaU1 .t@b-Gm]nmI-";Gۀҋ(1OX,~lγo}[x4=D|'O [n^"zLźb2k:ԋn A;Q Y:E%H8-9. #Et7$GE>g:H0,7tE5`ұG&]wAw ܉Гy^ M[0J xrBdrecHc($կ;rjo4"26 )YLi6SO¤ON\lOŲ5>ƭr1`Mn7asSdm:u@(@N TX.3bB9S w_۹0FI} ? "&2-!_¤#ʽ`^[~&"3$5cqYjwe XU{*ڥS*G 9BU뮹ꕘt`v4Sbҡw[%&]oTHlu=p1ncѸ1 /'x(6 3h) K/K$`uL:<{iQ{tطsAtkg]6-4l3Ht` ic 1ARp"BoB@:w2!^ŤsIEUOIudRNg#"mBh":YS)t["-؀Z]CHUm>q-jG0R,*4 fgqtV#9žO[A8gy\*O<7In'L:fgՏ^-j^ȜWIDXpZKh]5#,#SF9IV,PJU/ 8YnAwuVݹs|f-J%տ3{{tG,1;6x{Q0B,.KLsL9ȑJ#%e**] :쨢p#A)bҹ[LgN 9*YVTtLoVdZFy%OXtn6#Yxh(h@IDATtaǤӐ+Qґ8VCWtL$d *WCq\!CLuY&;QR&ί0.#}qzI<-t|I$ٲ- "t_F ;L1_TkIGmՀ,5ټCl=6>p5pWלe9M!O7`M'%qԁ179cf{ 8[}J \'\ Axcҹ c, 7 rYf_p`2[oݷ3_Bc %~IuZzum #OĆMcgg~>0鼺3fQR;|l[6PZ?E` ˮEEmᓋk8$>eSHf$qWlWn/~ D^ؠ@Ƅrgja4i`6Vw۪ߺthჃ k#1}{Zؓz;iw2`wք}p!i "6Y@8cw^x39]ݴ@ ]HCcv q  hB%9NF"Ji/E Ư0~H\sag&}]So.2l=[ b$[ Y[2849\G@+h8?*E0 Zpjlϣ+Ogpdo:_u8Gv1wYZ#bCgtHLIq8Cµ<b:,6YC#{f[VsV,CP޻w\SBU3;,~!uc`o6ی[C$S~GoIH=%~t!G5]!#6|1B c찕@6O+Ikn.,k}ޣ[dнAr;ND̠J=q$;em+_H9`j=iQFC;AќP*PelF_)] ¤cc=yMl[v/t<οRӞO,B/&~GqK ]Mhitف .ɔYT>^ikChׯhX=ԨK}cO'nP >B+_\t!Ab.^ ѥ`zL Q wl5)6kTחa/I1o3H{y>/=r01FMt2I7{'_dx@7=8Ӓ@) g(Yuui(_g kN*-.̬'(qz& .ʒn}MI:,lL:7m+P Z&2t@<"+J8WN0TuAH]ekjwͼ~pU喙YՐ=PDz`ҕEc=ƽÃͿ8]leE j(s t*=p"a ܸՆ!8+1=nXa!8Ι(2( 7)}VeCvu_O&íc&UΔ@n 1z% c:7GQ\SYt'k!`䶸 ,&L^ UE?6(ó>xbmU^>a:dS4.R&14DrYޅ p\#e/ RF'gwh7[b t/)3ɮl3G8-j?0!wۅ;\/m@ełZgha0&?lgb;SiTIIA#eFyTA^uQdvz՝Z{|BّC/ hr$x@C: wY@&߻xȏd9i&Fw #X2geX"_Ұ}J6=p)=N}3D/wMv=78zDԓ}B&( A1LXkh(?(/AL=<_۳|rwo 4u?Ph׆AeFǣLŜUKpA+"@V_PiJ`>ZG0wAŤK#  9Eu2(Rԋk9URûI NdѭY OATWD4iZˈge rwT ⮵ogG5oj_ JT!h`A3#|z_2`),,ZNBdt⏲ҧ#Sy +̤%p.ĄškSLLjT /i֯uje <'eyR8B2Źb=ӷ\3u&z{hoCG2stp[}H|1RBzXsvNܒk+IuN4B(f+<2Kk f Hʸۈo$EX] }Fs;?~_x%WP1Z/VAiwaq+BZV@X4 Bs!L Ԭ,쩬֑܄*%=xqMc%dz[`q[mH`3|CPf'A":5W@X+Sbv ʌJ866"Ebґ#6L:*R[lRɡ*?7␀W?$ExFTī7"1K3/W -ʔ$ i3d65pI*Ygäd0̈Ig5 ];M~ CV!ȩ%q W#KSBnlLĬ)a"gtPiڵ/3bU`IH`ѾR%Urpl1LA[tݻWlo&L:J /*!F'Kr9?kfT° 7S .E4 Sq/G+UPJW(ޯDle/4Ao^Ni|kiF?Rgz3*fp|X/'U >7%. #mRAiOա hCf,~ Z!Z3 pD*<{'+QI%巨g÷eJ'lMtFƲ W38J$L:߉CNMnB "$6Г>&U9O6.ÇBA3BIhf#!WMB^jm>DLY]+?/ԞQqr }^"&]6rd<[=88<ղy`M+SYm!@ϖ ނ Rz + M"iT˳{ 1HӘ}Mo,;3G\kYe/٣ٌ#D0k!/ .sO!t* cQn?2C9&=D f8)Q8W>oD&Վai&9(r"vsǨwV) HLqyfL:)eD앝F4W'D5ن8kGgB$kDD`8$>ΠX8EGdy rzg[_Q3XbP;OtL,(lhhunDx\K11tX_.%A nP?d$hgsXg,Y DAaRRFE㐒j?5 <\[;! eeQ$ 8s0n8|i1cܔpe8nFI<1#qv[yϮa7/0at{bR H`r *$8 Fm;3hceVt7 ]_Mk:}A8TvJgJ'a<듄cF F*\߻挨WoS~f~JQ hԮ-s5C t( j:w#^鯍'k2L N?cVM&#~$?@bau{G˦q\N5Iǂ_:_RaK"򏽅^Sq+Jht$㏮Qo[`ri=1(Ll>CHLV2ǔœUGOY6^B-7|xSV2բZreǔf[<pr8X1"n25^LtCʩts>%>&p'\lZ{ 0 6Gu h`1ͪ4nW̓,5,6!٢97:s1or!k;V1Pc6a^$&B' _ .L(R%ʏ%XWɬILI&kGKZ9Q8 }20%-$p Gj^Eȫ璠e~f ]},t;\kwq{_|ٜsz:yu:k<ziX IGihYSHґsfDB%u0p>s&003vݥ׾x7T[B&Q;YgkzMc'*F ͧK'{4h.q\e6!%ndT^R%"Uy^Kr$.?xN""x)Ya P?=KѠB k0V..@G{7|l2j_)T՛_#߾zBp[S0&1>,&Mv)wM^,ѣ+[0—xf͂$ĐEet4oU/]QNԾdYQvL'1ivm;;áڭ[ "jxSo4QG?b1=|n?8pk{0ǍeQ.q|90DO@MC Sd*miAdJWrN__YSND9q;P>Y5kd'*Pmf|q|> l.x*v傁˾g.KZ4t I o7wn ȧlLa]S Յ=X6/b^Kf Lwa{x6zy &ᕂb3쌞6?]?+o'98?c ,}L:rF(aŚ/&]XLPou^m!NJwhm1VD1cK!_8q%͈t_":DYʇqqO>)!ALdi1Tݤy}ۏ-c J!K?Αc]]hۨ߾j8{9=~t2MgeLճ?'{]DZsV(c />G#Z`bN* %ւ eLc^m>mmG_ T@ kfQ]포Bl\r`brbYV $7ԫ3>B@'^ 4nfQ1I@9yw &KݽkKw `VUJ  tMmQ{_ 7s VٴvMyFlMT[a)jV˒<ӸNU,b6i/^!)Vb~pĨ(RJ͛wY]qv6Bx:ncei_wFt7ᄑ!IJr|,A}i0|¤p#e @fb'׉V3`)֡S q֜zZ^ u6e 9I UdJV8J@HeP1O&SB~w"+=|9/\1bM&K/"<O>;ςID7`j}i\_$H]܉0ϓF\…PDؚ:nَ E_R[]9`=j%AwsXfvm q;;#:^۽1{ͻ۷ Q__Dё`U }=z>'ro"{?%&?9cJ:j6L(eJ-Лsn|7cVWHpfc@ge$ҡP:/ZX}5Q6[`ӉIYz;$ho[rv\[?M 4^Ǵ:y7| gV~* 0FIrË"d_T3LF_;-zRܡ vЋuxzleU6@Ei#8(xҪ 5}f H͇u-|8L]#b7p] w ׷t ^ksx2vti;^wYmƟ0%n^SKw~?Ng o2*xDeAﮘqHr"Q0,[Ռ8]r nqhma{6i;\uن# @|#CD+ۋ$`fnˆELI=Sn|?=\168]@d3lGxBDZmXM\wgX1LL_/s@"dC.2:|צ ͠y6z{#ۍ A^ j=~XiI?#^?}8=5V/Ap,uNi&]ٓ/0ilX=\$wl n  j{X I.l4>->nMp7#hF*(s_3L:&lm'G1r; ՂIhęUG!NI EBX{/7[p'b|]0s4Y%'pF|JOǙTBV/TgrtZ?9Knp$R[+]pDFowЮd3 tN`=ɷ^O▹&aoebFG]~w]?+EUq.,05'vK9E`ݼ¤4wzIi(:o¤{ j=#Ѽyf{{kaxfo2)2\1ਟ%CߠwDHt4j+P׿R>Cꕗ"C&&n)#g5܍w{{׾{{7C/MZ~Ӕe<܊(4Y׺0.7C/p`ɉ0鞉"sKaJi XXk 10X-0jXa {F$nI37D`ΑJF?S_& 9ZzU&]Eg?GҵtC -,mhz;(;-j#\ 3K Nqַi ; z*Q)a8%LU 8Waf 5~[k^RSWt/^aҽ WyIW"90J">\^J~ &7f0`d}ևoF͊٠c"؉q٫&O$iFG$Ⱥ!I%Ԇy?XZMhl}G~ܞ7X]ݹaݿ_u*qVNO}z1Givz>QlCc5Z{\Œfmmmֳ.=:էGĉi7g[F~QaҩecjxQ#5M\aNf9' B4]C] gaI;~TF[N3?}&t{v*ʠA֟b}BXfm",RPUK<%+"꽶L\Tp+tpTf;!Lcɞ< 7pa6~NXCP 9p91f G#Xam&MTJ@pv~n:MVp1ix mNjz*J׀8v:oBjxcXB2Z[ĹުĤ[9Wx"HUs2@ZQ6d<JmӚK֝e|_ \eX8D--j˽Q+'h5p|p aA$9VŢ[6"|j@ml˹[;w W>u,_#7qW$Yw1,ts6W}XO5&qtBdz}(:G6!Yk!Z8f{6n"Dυo$D2 ( .9?57?ow3P`N.:i v.]^ QtYWyBC\pj3[ tD@wG HҲGc\GcYvĤ 9>glbߤ7_.:O1 ?|.ly,5H{(&p$q騣D^'R9&~(C1^ ަ!;LV߇Cg;eǯ&,&]tY(γ|!㈪:G2 Bs/4 NNGjuʅ{#8p_pD%>;ks QlB^!v&;+1ݦzlؚw8t}n XU}F.QX-p\͝A1Q)}'O8];r/:Lpw J:l+I]CnFǺ'P:69 p!}H9zԺI5sfCV&SJtKy GEXTJE8y ؟-vII75| &z#з69:9>n]/[$+j 'whsBF8=1ÿdEo+Jӫ~x +Ƨ {'aVswWn&fQO7lK;92~tZ#H$"e"U׾ԑ#{Ձ551䦐 )f #F|^j`ҡuB޼O0}IL:f@bvpf0G%*>`Vı%D3bϥ4ԩґv 7dyaTemtlajuD"Cg.oL4T?$ Ehc&Bف%\IDNzklkeE\o̐V9̅xa) A-, /rfh![KƤrೢ1;'G;tFkLdpk]G`j!*:pz@"?F*Wˋ E$ǧŊ7^ߟlN'tY,N0:KEdL:GҒ̪7mJ$#בY(Ipr&9T^/rgx H?pv[떠'ź#:nm{ݻUdBƪe>ۀkDiAmdܫQxt2pÃ=b-ˆ$$ej0 *y >wM \: D`Q|iŋ/QΊsXhutD8bsۧMfvC>}46Þ#X2M;ӎJ:ZG,jc@?O]51~m#KKqPcG219x+h=Re+nU5 联OH -@pK,vSV9͜7d cy?&[>z"3䇭VL:];9goVC_\qxAtrłrF4ؼ3bBYByT]rԌɿkf2~1r7+hd{ػv#G-4)~Qk:&`0LN!w2d`2@S>ddJ:#|S_&" FX FH!!)u;.ҕt cݛ|Е:X͝`7N3P#Q-^_ <6oյ{5 *'L&8SJ%\ 0xT+|eHƇnl49T{vA芜üNuqq'v7'CżA!gT%kM8]Fl7֛il%ia9R:,=D.c:5͉$ &+0KŤI~m7%^(Whp(̍#ȕd P&s^N_c65_穀v:q`&6́(uZppj\:v`Bi1:fX}xt4'7!cDNb( 44ڎ^J5GA35 A DgP6[w[Df5/ i x0좑wKłws46Ҹy4[t[q9a [xB;GְpHDK8%Ҹ!/}C꯴`AR嗋g"@hrޅ} r|8 ʛ/421n֙bhaŬ:ʬ ջI@W%VE0v tp!u1sDb H&(^eF 'r#> B642/8 :ä3c91銥=Ex! ztWQĥPD De⨢UMɪWמ=̻"l6ҫ}8%%0b/RVhTsN8wʘ"^歷biݮs ҇<%jɼ}1q:^xpp9%Cĵ$7TGYH$MdoA[gbP;O8gQv董7z`c+"zσh̍p0" 筻ҭd@d026Z:ἩhL IuFlP䰼h?$~ǜ vryɠc 7"6EH7 0NKA H_0~=1F@ XW|ۤ#ā뫇:c%&<xq q|%Gmx$(HL"yH бh2BrnZ68CKȧρI[ x6Qsr+ykdGD$٧V#G8ډ&:8tLR]#bAK^{АXz{s$/I3@/ErM*/~RRo)hwī#ѣQ`MXn)g$B1(IU0F 32%UoCIz{p1ldO׍8 gn^x `AZ=z)KG5uz~W w&_z싄u`dv2^&+3\^;cUKSrb"nGToZ<+T\t ' 9; ah42ۦXKxu`'_Ɣd&#)"-gj1Gg|,QV^":b¤?1r) ]֐K%[+ptV}r&`upt0V,A= OXbgBNjf3|JËFf!162%IW>΂kYp?{]t4l ŤkBcn=awڥN6,Q:˖*BC<.:j1t%;%5 sTX1XaesD_}Rn|fM3hTqBK+{98bD+{I@Qa|@CscN QM|CU!f*"p%Y5ձe(ק>@j>!Y/鮿&4jhGgL[FW8c+/3hO}O]G4 ǔUJűV>+Yɢl5 A,,\5Q]xeR_?yXbDTX:^Զg dkܥx .\ZF9`P<^.&]7 jBMsi`!pyv=d!Jis$bs$2#|-ҳ>_U<*({X%\vٚNBqzή+DV6J3A݋05beRS ʮ[ JK ~pb3%=+'ďT_]^JA0Zb!<(K¤si1D6PS7'>-[koSaΗyq@B}8ʻ|&d ~/q?*3/č_X7 5P/%3U טʩSy Ĥ#޷Qa;+&6a|P3ƄAN\S|d4[*7p\z͑r_/?へSൟ*xE.v$k[IwFѣGD:ˬ+]}hPhK6h^<&2 hUǨ017m$W֚ , *醌y]" Zɑ^}zQ -9tAi  N*?LiAD|haWu^ȹsl2/N#jJLAP]lYܴjl}YzAXI% j^}&lCBNvjwosXvmO;A޽{M,]@t <=oSu1ĝc)QP՜ɸl-bǷܨgO #ZISXq8Ӛ=s[ŻtؿLڀG'wQ4'Pf*%я]q[[#G|=qq Xk+f?/Aοk9v0Ѡ['B wl^:8ʇZ6Q{nG }a2++3ԁ ps4~RH:fBzY23wTy7$Q%(8-=iяOv@QpV^7yj09CrʨWgΈ捫GL`:L fRЄȬ2l ی a0qL\nQZ8Ly,d2Ԙt ߹0鎎Ƭgyvy쟎@<Bb#mk!^ ,M x/KJn -~2[.P%<VeP ($F4$\{JNF gY!YY7UAWվec?`\lo(zCm4Qf,PJ'Gm}om G{"|5/,3N?(" Jt\",?#OV]b5hGns=mKa-Kcrm G{{gLxP419z޳L)=CVASAӳ4-63 &C$)Ϡ,iq" ]`0;l'Զx1k2Y) sXAI$ ^_mAaJi6Mv{d ~ ;'K_8oTl҃mHK S_ Y z[S֩p&^hg 04@u6K#5ZIyC% Ĕ;է)ғ"Pg¤&]/0zLL)-`m6c>:LxN'HZ5XlM@njVgxB ^z; h*{+#hҍ13@ASjA|@d%d~*AI7" iº_`Du#NLcБb@3J#6*tIת0s΀I L># W0kjAX0#3lg޽N1Cn> 1PC"1#v*+:c+cȦ bl!6KA)k>tH[ШC!_¤y^;LYvZa˟ILͤۤSUӸ&D`1ӻ%ӉşZKo:.sL:4pb 3 ,~1O)|f.=sF[բ`,E8Ahn.O¤Cir ]K8#ÐoMf67 /\z$ >t@)|y3IJBb N#Cq4WntϤ0(ce2LXL:&LX]ƤC&:ӊt>#]\4K<.H<:%o:&]0f["t[2659\8j րz" =A*G1鞎Uye؇^a R&}w!a?X|żޝab:2?aZjG-_ap*cz)z5'9&Ut`ѕTۨ}W{D!&$ hX+,\L^6V͟ٿ(Vԥ})]^&3Ѕׂ^a]ȳ^U_a=+4h- pY}3ǠeĄY v61ñЉ_CqTg㘅 =E J3φuM7 7ֆ)[ݺȇjjG׿;՟Wt-V}CxIW㍌@e)_"&˜xjcS솥ҏ +L:܃ؠa7mыef\lCN5-kp=,ݢ6d,4lA=n?:ĺޚzb%*#w;l:.?%JrMR|-g$K<MǢez#B-SkFA+=!yjo_?>z}8Qw0 7?=7N:'dԃ+tSvJgEvi(gQ F(0y {#n6P+ݱh`nĊXpNx FBBIÅs.\9gEf7N&8`Ӵ[R'&݊h[ T2%U*q4ǹbVƩg>=mٸL~v~m5$p۹I}zlNY*Dш=єb\Ӄt܃#;?}-_WczE@cJ˸,ttۘv JBhL]%t.G &|aSI=y+cd 0>ezй OiUgSDѥҠN;+¨><߾åFgᨿּI >%›Ó*ë*#$Ǥ6 J3,n1 0m[؂@I4@ AP8 g%٘ב͸UUP!xډT̯8x |;m,Fj8Ǥ#p~rn@§yvlevAcP =|?&x8qBG:Ah&6j[ϣG : "tdLj*,Oqæ{L9M> '}L)6[vb2;go@5 EBU)LIG d},&KIGTDb}–q*%jKT)q_Z㤒4=RtuP@𜲠?kw`Utq ۬7!A"HI )lǼ ^Y?>ElU6fA2ψS)dO ʍْ|޼xtm0"= ,|Y -ݔEH?OƤK/aݬ97f{*ݔQԓF~{3y}h%&͞X3!|bɝ(.%\Ѯy۠_ Sd$ MLb_H{b1s=[Oo)^-1%6y5KW6ZB/*⢁p˻tg,3//Ύez4:v--Ex%΅@:k&$Vi5[D^hC`Vγ5r%LS.GB dK4&*Нˌ=ZLB'Փ>ȉ )+9?5O+Dx| &]5+ƕX9a"QYi|I,m0bp .L/yҶy8O:3~5,$1zZzi9Rk)e``^eV1vΝ. ?ꀈbzhcV-ONpGWVIηlT$.;A5N'``Jd4' G5js!;,!{=_.xDGi0Ķ\Xo.Dnx̀?AK"8zRHv#ma9V@e N a_*nؒ):XD:7tU0Y1|`ĮbJi!baHYϒ6= U"h]}VtC 8hec<;&`s-4VF;B&=Xr8o5BblivAlvq9y)`vpJIxVw{ >+fG#\}/F -->zF1!OpZ#%cls_ފ%*ZdY''9Fye &_W4蠋D{7WMgrUYE`%fkx,)Da< 7[<ɱ9I,4* TDo<EߥŤ`ʶ_;K1Ȧ>q' 땈D?ä"z$ej9ra'$re3ۦJLYܓޣ6N gӪItk|:B$ȬIcNoҢIG_`("RBM?=LQd֦QkMojy6ôGI!!$gI6^3rMi<^ hu(Xp(h]m\IH!8JHew;M!wJC^ }O ܦ9E1t&Tl:B@u>JTuIץ{K~{y.+QVUht MR6#݆monD(xC'<{?bA!C]K>hF8]&BFd\dT*x5wy y3M{TTGD1 me2zTf1CNNih:H 7Մ?A ɧTKYQ|K`9 jS,fѥK:EW HŤ;~e^/]-ow;KaQ"i8 KΆAvtWa{A7YVk%1=6af͗$6ʽvp7hF<Sni3kdF &]G%cRkt 2E h{OB!f-Yf!a+%[MQ#xtfeV9>>Riv 9Vn޼5nӿ*~Gu6;])'TR4[);>2tܵȎon66v֭[pP*0te &ӘXb)Hhr[""r>=uUtux.ڛMydfN(mܳs"@WАR='VNSK"Eie" 12bp(ŋYZ=D1\&2(_Qp9΢׻:gdHN4Ja8tXJe0(?YPѶ<'<7 %SMG> tjpr]$N^YЯų+~.R;V/TL:"qM$gׇ!TU6q)qj0*Mkv߂IƗ 廬ND*w\atD/=tɴp2+U=u|8Dz *E"3//:֛FABSf^@^dPCYnf} p׌jbNWbvcG 6k׃P t1}HČܱ[Empo;ë1]W"5jD5"he:^~-D`2f‘ᒞeSEt3a?؞p473aB /b`wۂyHӢV2)h1|H:)Yjd] #49Ni%Kq?rkӧ4^<ۢ<:3AQ?}8_VTCMz9 U4r/Q q)/Y*HDؼ5Ɂ>k^.Xn6c3l. ;V=^Cqӓh×5 I‰!Ngo7D$޿%wڵ/l^c%j2)OVɨ 5g庍"J[RӉB4B P hEH\dJI./>EehtQFnBN VTx4Jks/^SR-+Cj^p3OfGם_: it|(Q%I:y".!BǤT2#}4K4E;s v-Kf w@q}q͓ӓb[DES`h& dĤCJCBŔV`DKpFT4bb1XD b OzJs%.$Ix{mSz ?W2 pġ 'e50 mW-2yHK}Řt|`6Vrw5{H4IJvznnڭ$ʾW]Y8)yTJvЯ8ˋȶ*%p&˙ &F5g+Z *o]b(ѨvD]GwlWIQl0^,r`&,/8FlA)i6 M F"g׋&zkힰ .il~~&`0.lw/$ +J .gzZiBY]yt)VPA kx,8<:B%f^Ka( d*Nd.{diԪ2T=Vs*Wת|sw `k jU/~^x,XqfzwvwN!f?M֞NKݐG&]L.tͼjdc.*^"@ L B !Rk?#̝l手IN16E49͙3Q#:m OJMg{Pp=#8:QrT}W<1;Ԧ2T- b]yx+?gUH?@Ԣ[Cpw00ltnȫ&sQ<! f)g.1F+zs(wvڵk!BW~Wphﰴ׎Oow}gc{ =ꭷl1bE @!9$!?emT;Yb#V;b0~J:#3r ¬r"(a=(q\_:r1D!A0bBEMĂR6Vl׀OSfn ڍx6:tEqpr[oLſ7O~YtotYMm0nž•łzKѲ2 PYdIe@<[Ge-6!m ,-xe}6uQQ9;IbfGۿ[F{O`O@}w¤#?1X^qFQ;Vp;L jF%8$ # :)aA<'j\,'J#e{1lJ:V,THqKqR,gCPdsrPshv nG`NdAVW$Zci%D~zz_h"LONz?߿)]y tN3L; ;ټ1" c~G#Dw9=+@ .o_9 /R`'"pf >{I@qв@4iEvUtv#GSmf;>g  BB5ˏCYy@[beM5lI`L~B 2lhi*+3 M% 31eƺxyz&4Z_:sLVa\eq> p=nG@SǨBgdA $M73px<+s qΆŔwѤG@ɇ67vZ IEd5`vf,gYuj]vbR LAos7X6̡a4ŠlOߛ{Y=|gg&(/,ZI]2x_{w9tm2&#m7{Y=&RxtS WryxdZ(z}" E!֥6XDܪc@Enh8uW1麭:捵PZ_e:R2$k^k=yw0+>9=A},p*fWȅka$k)VˑCG$(R >l^WmX +pn0D&'&^vfI]J;u1yHƊtA `aV0oPQCDf" u-3Ĕ-2 )DfsQ}ZG4eWo Mlb\!aMW#{qq5}v1|94YM?GǞ pÙJHk(B̳1.LPOӾI+a8}(Z;fכDzD\NjäKobqׅYtC.0E_/ꯀDS ]Q?SUFՖE.*\Vpb>Ctu9TX};#pTyFJ_7/1鞗tv?W o }$G;pK:xqMC:C"r24+F8W)'|\>]D>K6_b= ^="|~ ؎e[)3>8;XT%&픎$b8K\]-Pjxu1t#<\2g n̗sBpBXݺgy_gRF?5gɡAz/1^"AwGnי&H~b G2wGLt | ʥՉa=Juj..kC^":Mu1?:a ؐObi7i?҆y)`Xv 2ZL=ƣ-!ahM JPg!uK$wթ_D+L?+k|bJJ;/;&O.1^VM!#/1^1U3K|:chla [8w;MаB][bBbf4;Z,Ws0xM4esqHD'x Agt^Ce ^XKL:kBcy)C,{qk1# Os%X3\D>|8;" 1NKnx+9K2FV!Mb #>MTUt^?`x >r vُ跗t  I|D Bn6t\3CX<x ϊ(5xo6\u,?IKw>Td&b;.L:t%؜#Ue4OpiY x鱐 o TJ֕n+X2$9nzi򱗨?uth>u)9[Z ]0x=1W/EH7E,Ԉ58,WEC,+Ȏ?J,#wɜ\%oJdٍ&h:c]:+ԳQ#_`M$um<*aE[ڵo%@W_f>i&CJnlCeٙ8{u9ou=Š C"$\^Ή]BUru+c/j}tܢ{&oy6M&tD ѡ/g'cB3+2#}]L ϛl>dmFHVM3X{Wϖ+~q>d0f`AhV-bBŠ[870gM=RYw#!q%$1Ammljkx4kE5@ub{'npg W,d)1j}`}lt3huǬMjl>wz#ϻ}_mVi^ %Oe G.l_qCG '+9:]uED49&yQ{"YxYoO4+{YN}(0&=<隓Y&ǫ}hCwaxBDC;?vy{Gp5m95 1O6jX=Dz`B`Òt J©xtO~ 0^G\is8Fx( bv17iJt#V/+dzN6[T58Ͽ1:Ւ5jW A3rowj`͸h:x )2cVLj^{^5 {K?_ow՛ym}u|sincs|j<8_\*LޟXv>_v=2^e&L*;kBt@Y"棴pL:d؉1]n(rblβd6c.zF.B"ms$R$r"qbtſ<ۓr@!B%k 0+Y&&wĤlPT4ZUh*`mX5ei qz/gټ`- IvsC'[mjAHBn)ى׷*(k4[1~6ڠ4pR,$JP`X߸q~ ?4&]RT b3Jm΢O'C(6d= 2pPʧ%Ύ|z*.2 Ժ[cgAv3 mIcJUX٬w F!d{NT Dt{ JM]jg縸G$ /+tQWr&&_0R+,y p͘K|!^Ys]̻:!'i>G4,:˷FJX``ynz^"V9Va#ClFa!OJZ"&?1YCD\ɱ"7LݳÕ9|gEm"a72rZw0G|n"BDD )hUh W4AuBڝ#(xD>cyl| F#&G?:;fCt]3E,HJ4EꙊ׸* YIu8陨?VلyEK 2'%A}oW:FJ QdhuFgC @IDAT>$y?#LbI`5D /0%ك,LtZI-D҆<"C=Fi,_|Ë[Mw$+Q89JB<}an[zCpHD̶#\3 D仚o'6'̶D,=gX[ͦC+To Yf"fPd+ď fa?~M Bխ!攧ԛ9*ˇ'r#w,KԖ&L} < `s5ZrDv`D@Zgc"V3v/zڇ@݈sL^W'ZRZc~ WtRPQ@&  :PI?#RqOlDx "Ԏɬb|]>=- pCu)O?)ѭPMyFm_VM ~;J3Ǜۇpe.`;Zzj-YVvrBٕIFE6oAF?+(+GL=5%]9`ԮS2,m[f=V-UEE(^IKJo.O)W, z 9alX6l\k52@Q=a/N! qD+D! '][y/:?GTʝ$[(bIi Zyn3m=,>&y|Ϟ3~ocuUi^~}\<NJMЀDZ]s'>Tɒ{c@g1r:gv-0p*X/,2 MTǾXrmWIfdɲxMQ@#hZLV$Ӈy Z|ěR94VPGۨ :Myκ CſTL:r"uKy?jG=bbKHa3"═QTTV< lGsPV[tDl4fݲw 4 8@a/⊃+}+2=8T}it j.`dXq$$/D\ΰl31ȔҦc^sB|pԍQN9 v3o!BԂ4;SPÙٸ\dzTxuC|̣7h6&ޱ!|L:L9k1Ħ(m԰*q8qțjBRBo~Ruvɕ~0?야xbPvA%gRQlgtw0 e,F+Jbb{tڢۮ=XsI=0t|$9*%BO(P4CT"j,t҈hdG%Aٵn"{f:l6y9!7R[ނU$xlxi 1Do?Q#`At)=ܶ)]7_Do@vTAѰe@ТINv%=0qyx5&M|4چ۸-*qakGRX6zyyPBeWIǗvsZ뵦qeBRY-CIXTM$C~(>>Ł]/q\@x^Ajk&&~L%Hخ^l֗vz-4  h6t_#JL:kl56Rn^NU?ѺNJfEQ|"DyPxXFB) h TAxu{AmU ^;fhiV7$R#:ѧݽ{\K=ZL _ƴ۝ hH0Bq tF Ϯ*ADʺ;c5hh 16,sGž`wšYoq Q!M^OoplrO0$7~**_x?w3s zq޲ךּ>, .˫ĤKqI۷+PiWN8cq-ε8-.xѻ =q\DF6J-Zx$l%&:`*u;db1%#lH9 38-|M{tK|4՛_r/f~. 0kkφQUp0#,yb6LKo`X R$Ž4 Zi;; Udyp&4})@U% x*19Jqcw0n]7hrtdF ٴ)cw6*llbBWiSJ%H$l3i$gEK7tY̼vP?g֭t8o6o߾ׇXrbLXa#fj5.3 |L:\P @EwʰMz9ª . (RzF1>%1`<]؉-Fi#nNOcC̀Hz©iFkqavxD״Fݬf*t_ĔzzyOwLN{6Q u D\0ցq>&T߀M}Mr]N&kUd2,RK!P.B<(uĴ\koi9T$L:(d<(D%gQ͈aƈhQ/@1¹E;9L7EYMTz>'JR; X-Y5a fq"füSCu'MTk gbuI6%I?1)jc힮> jsbp7*}^XQVt&vg![nu`[h](\l:$ʈ 2~ͩbc)tw5X6Mzk8ch6[w_sM鋚|労,߽ghׯ=?n6T`ȡćILV=UY@H{KWkQ: ai&qUyU*-&6Q!(aZr9AjU& !(J<&5D8 ~#mۼD70s56qt]T:DsSj֢11.bѩhA{> 'LfsaF7d q!Jw+AH̛̎rW[zu2^Z~jb>mDK_Zf,͈_ι$0iŽ_ @ m<3ә|jL:Vbɱ6dkW 1Ԩdw凇fBĴd/̡d7}[R.;бu|\ fe}UZ5Rɱ4 _4%ܧƤs]cY&]{[/<)͚''n"̦HjV:ZֻA Y4} 1~? zBFb@bpIWeB+m_<ĤĤ&񛗘tGg0tJg;Ĥ{b[Pʨ9jH2wnlx%z}:ݵÁE^b=FlKL-=>AMttQKL Ty4KL'4x71:`Q1 tF.bL;홴&? -fu95yL3qq0ΙXu>ynw^Fz%&݋TbU.1^MĤ+AH\bҝԋNOłiEhqȎg!8l'ףgIPfBĴ#8& r|fCyb4&S:4pbNߙԩ=`E D睶j9ԺBtǝw0Al7ɏO)UݿvnhEc5+@,f34afkB7@0\)SfN*ZjMtQi6i6AC2>b1 Dk]jhYߛƑ.9Nh.2)skhjǃ˭z&]4M\o,^,Df@J/fQMF\|p0xXXj6% K$޳%ox!+?tm6D)ekjfw0$`㐣teT[igvDŽ 솰~?5tљʰjwkpf$B(]>3tP'Z7:y_βQ{2;[e9f6ʅptt0 E5 ÷1E5z<%yzR㩄hq=o7w`u^9}ff nh -a2л"0qkH ]:[ٯ|tƓrdk bg`GX;7$ "ZZ.RO{I~Z8s *=B!7n '9a=X_x?tL'rמ >.A!1"3E991:Ml(kH ə,YnA3:( 7|cAPhh̾t% 4=ɔ,Tuh.11u:xvx80N'QĤѶ:cE+u̽F6ܛ__g TwM>|!=Wi<0Q tU%ʁEՃ_ǫXȗĤDpm#`^ɸzV;1E4ă#!'.I?)iDUm9N~(qγeHO pԅp$QA1wa{`w{r\eE~<[y~D_:lak}n| lO -_ orxt2ժ3A+n`bRHN%=t1eʴ,ғ8 PGo>eTs1NGh0b¤˱@Jt"L{xoHt9|w;.^ `7}5-\VFBU+G !D .԰CB>j=wē]2P$pwl ~<)ܱA[cYܑtiv+oGVYpynD flD!=Y\lO[nS&\`Kz'4>'D c/>+VU2>Ҭw\nrǂآ#ȥM( !B<&P(JKG8DPڋ$x) Uf [oEU*ie|":汤 &cp(~.L:]!PPcyx:2lAd}DMY)d4 <8 AV|%JH 9X&Ї'VRrJ$;iub;Yzkŕ"R{Ues-}Z#@*ȚhUhfmt|J0|{Nr2Td8c '&aw,t12k! {"cc=-S(u"2%FɊe/)ʱZa_LʃІp)e`wәXj]kݗI|LPD幊o}Qxu0?AM$tY $P#{Dى⛏816(ȂX6ȤDY`EXOl)EL\H`ҡwAuQZnv7QOn;颪C!%!w=dފo@lU[ݜq[9VU{vn(0儽 />c}~LttM 2dfwϫi|ZL,& G*ObOPmN LLeފBCP>ͼvKCTQ< B"7ȬERE)@O^Qt[$ZcDx{y;k6zs?:Wk̇])[P/I^ LC/g| 0]N \,7/R˒srEʚ|u[Ǻσ`rcɑgMgI%AhH`-Тz蠎xEI5(d98HWc fll2.flR}a/I-/kZHƫ..9͑JܖBHZ2' 9 'VN򷛅^La=1ODN7ϗuafBcB sA8A0PyI"J.,H \y)):3Z\)pJn*䶡摹zh3iv CVbl 7X_7[bQ٨QLk]>V?S s"fe~I%#;1g\#3lNmO=s=yitp4KEB5\')_0euDs> &I 46^~c%w'y1?ڤ N&xMRfRm6G`@ִh5>T3$yR0pMs*/AJv|E ,r.QrȍU 陽5 oԮe>; y 8ZpXwWN3Tr% hPHᄑg` ;DK|ùdC gX' Zl //w, fv BSU: }xRE1l9;ᒄr6gΦBɓYhɘv<:̴@iU`$06Ӡ Hz>7h8"I65-zu_xǤ(hׄRԬ^!7ql+dia1Bfd*\l)Ϊ%}^m< YsOloHsQ|bBJ10b>8i,Mb DBV0PI=S*DT{j[X$%W8uqs<Ɠ[I30 y ZIIDJ^B$ ;gS<'naوn4^RPnn-F8mc4r𰾾eo+($LG)!YU @PJ6*š񔎉K ĕe˗މ.33Ie7r=Qtx{hpSzeP|-ߋxb@k5n4ªBDԳ`kR.^& ~]L.ǣGք2ݧK30v>Im c(DǁH@#76S2N؛{_DSl%i0R?9Y,l)'vyJNŤdaҙՒ[ÄnzuF> =rk"D(syC@彩˱'q!`-ZN_UmsMLl 6D0UB /ưjL:WRrdJf/W.NU)T$D+6m>,(ΦIƙB68STϢOoaZ.Ť[2Aī-Jha9-4F{~uei#aҕ.8~]IyJPg _D`2(H 2Q vŏA2^aْKP /BHPnڨsէC"֗ 8aBFL3$~pjQd"(IRߧrb'%TRc;6UWv2'FGԯ.?SL:H)k7Q6.:C|ڍg[CABQ!(0T"]#JSv:n(Y<؏B̀uZ 8~4+vįN[~k}z|FWŇ`clZ :cJq3j1hLjrQO"J•{ic2 vW ipV:z=0ѹ{=@c&)\UYcuWkq _ƏGҍyʻjkԆtk4-`z80Jg %B:""!* ֔bg<(=~B 6WN+y{3(,T7]|p0#ܟ&]tt8nRv‚,ö$gEV<E2+FH%:&&Bdy`]Eqo2moޅ]C ikԌ+@F{$yIaҵY.NO1ˇ# t]放 ||ar8f k#9\II/Yo0zIp&tk7]sF}.!Uá2y 1Ƞ) H{¤1@*1tHըc!1_~xe9q׷ 438،^ 9 \ Q+ʲLxqM0^{%̱3@fO*V& ;o"L? ,hԼLPlτIk)sn_J G\uȉI*N1!oN/nh^WY6r(o~ѱ&,ݣh-1O3O>&ikthZeUQpx42o"V}.Xtm1\%OG ԣ*ʬ:DlT~~r|eG|FOHHPR(Cj1g:ynv mJg keIg&%ugkNA$@_Me-To!~R Uڼ#a'.D{VO氨̻ ZTc."b@BHeb@MdIbYT rXpg(@y@z*Z{'ڠE Lk)5\I`VO" 6ĤOp\׏NNX+.-ՙCBnZE&N85AHcd6TFAO3!0jRR*̞.Q?Of?m~|Wc|Th4Z(M;$(LZCWf0bTs8AL_f ca9qt z@bsuUÐrHm ;=7$y 1RZ$*y,OT {K.{L:\Zg߬c% G(jj 씠b5U1^hp>9=3R~Nvzd& #MbAZ rOhȚKLܹZ!?׬ƛO@pC.prNEgob]{Zh>Y3^)z8dcwbX95.hYXܚ~,hG Q>%3#yxZ>L&_SNEp2@Ga$,5rqDdL@ocAP{CXX*nd2m"~ң0 ʐ;ph+@Rӯk'밲DfBk_xԈ%ҭ'! 0@t9֘3*.?8=EC>z0W''''}*L:c`m KaK>̖B (U+5Ih= zKpRs~l *jQHh1(8i<*$d0XgcP|LM [^|5 ^&25*FP=;;D&'B88L t & L B(O'jS>1,sq N Vk:.[{ZV]L:h4u;~n&] LYϾ0^F#t "t/B toknڼެ0O^Czxd<)]b=*ro{>kd4]Iz1PmƒkO [M 푰&4!ҩt d6pڳ}2>k߼Ĥ8KLߏ=}Ic$lNcKuIKϬS8Rp`tGĤ{*ybMtDߤzIt=KLg!'P/1^ܦVĤqټItl8]8/%a1ɬ3 ŷi眓t9%R&"p6sxKDZ7'y:޾]OB^1&hĤD VȫNF\q񤂥{Ո?ctLk:^}ڙτCa&c< LYp/a^?ʕL3; :"g zA"FpI\?gӆF}k ķ:Q3r/rp=e͏|Ы w=x &ΤGJ̱֒Ufij: @wYW$tIx!RC!5dkʌ=sZXݼWy<{ٳ9% z郝*Ch#,6У4ݍ`G0R+.eЉp MKuΌGv76e@i] mAM MsBj𬆈:$w[,C^[XwDV,6/2DO _DO|N@3_[mT#"]k. 8ģ oP$B+MM`Azm-y\dvDuQv P6%>)dO (; f-RMw}B{OWGY#asxAx17&SH@DB*0OO|kHƚGC+/Uv# w-$CMm1{V1/$&ݔUMe!VЗEǡ3 ˧*OWvxbW+xLxr͟sNgryA-Lj(t95$Uz'xS[yw_h! 5=a>u@uآ v F# 9+Sj.] 0ηжg SG;\ @srZ o{lk}Y FS{("ڠ=A9Ӽy@d.h(<ͅ|@>',Hz/ PG3_'tҵ9d141T(w32*`$ g8.+=Pc2kL:*D]h-*X E\Bգ4dDi2h|>ǂ)]̵{0+5əٝ94nwKV].OXB/:CwI6p*0y,I"7 aL&!(4OΈOl<=BmɽjЕl #V*f=@J9:7~#1W渀Nr,O҈" m̏NX'8.n= ƛon?4Myzzj/qy5?1K"IDAT:??LjI6&b<#&;aBU'.&5T?M4(6Ȯ$X\e!]$=jRr}q њpX oQc5Dmfb)Hx4YBR?"~x&LEz;0vwa ckCӡdbrE ٺ)Kmc}'Ƥ&ZٺeZ h!u9pct%t@Yz鹗ՔdJ 2o1gG7 o} b)3+@'8I^a?hLgPgWIF-,T"zjҕ/C\wq 0ǾZ@eT {khvk+{9wA10T-ti"&]7E9*aD2$[ vTŋ _.[Hk ))ś\)`OY121 JL:昕`ٰcZj11D%\KjJ,M5*2X7^X<`C\R\`8ܛ:%(n.#x @*cki\lS!d5Ť!>3/f/wON7aek/RԙqA\8 8U}ϋ}϶Od %ys`Y)?v鵦@VhVx[_x0Vd9˿5 vl;/NL4B(9b7^ k؁Zƥ-qS%HhO$N@J~E:IO^ @r,q5AL:$kc:xm:x rb2SQ:NO/v5ZyѣG43?׸@Uªt s^2EIkw&ͼ4"k=2ނ+}lU=]-z4b1SB-5! @6YUҘtV""cFhgj W !$ ,N\4Oՙ^]Ɩ 23ɀV P_b$9C /iPDZEi#wݾ]W?nz#(tt!cc)Q$V+l4aY}͇' 4fkW\*P0r" B ae5\o30okp*%];vXѡg@"- jX7uX;{!QҮ/ƍ|z}1O8囉hD`ŸY1PkI%z Ǥ~„" ik(GG|A 5>؝~#.9zL tU*:M+W+p:#{ 12XZȓTyȏ4W6Zca/2ADGϧlh={$WKk&CA5QХv1$J PQUW0ٳ|M ~7|)ɗc w%!랟_bbaĈ+Jr> aŀM33hD}8q5w`vG֋`YB !R mi<>g`Ɇ]N&@B*]ReO#S}1Wl%(W2+D5q-]Hl*LWX=&wEk.L*F >(E R tjM@HP:HSϟ>AQV:ob2a,e8͟5@m&-#ڡuV!ՀP; XԢq~~ 0&]V .&՟αӨx5%[cdR"ng!:ߪ8>?S-#|.餡1IC<] 4[eUb^*PO8LAY>g`]9 A(ߞFU+'thЙK{l3x$'AudÜT/kw{`|7utz`U|KB{AG;ok}X7FB;#RDobڼqkJar8fMSYL8Z+b4A#1  I40aK#bh.'rNOı. a})c[aͶ_ӭ}5/d)&*)v2crfS(B 0l~u*@e>E-iS\oCO 4 T/G;1 X #x=j.;ɘ&@*ӛ4PЂ[3p6lsI+m6 N] k!(ҳ8l2 1S7׾op]Bq ANX7q\|[~!dsc < ݁:>상z7Ƥ|:?X|vDXӿ f-Jt+aWzKL3tDp I7cܸ-~N)CU%:Ll wwsv(7Hl HF pVlO~%xFa92'};q1i߼yNtBzV tد%{؏~ӟ^\5r{%&*^jvfFdK9j3-5WNL@ZUϺI]Ll?zC*K119-Fo]՟s}l|`.n.|MIv"9+$Дq+qK(&8AFq *7(> :d4pY w+-%~tv(̆iwfveVEN eqݸD\ `Fk3~O[' U Q&BKvhQ l/Bi( ! n ؁\&65I>ɌS#+Fӡ)C@XxQ_wNdY{K{4$G 9"|n ]AI;?#8l5|vF$yp*146^˳i& "XC]!vbP. HqjV%l|Kj%5F3fBK&0Nc[5MXmγl6;>LGb2ٝqyxs*T<"Z)|*;kaIc8?g\$K3=ec샀)*G,gX;//NT?K|d,28 B3 Y`^|~HwP,ǩ>srMt9#M1#=(SF^n ,;O5W`s_)jq:||kuG1I|;`'TF;f^ת  8'P7&!zEiN`RN|Qզӥpd%V5ݢ3n;GG_-&c!2ZCXQsڳ &R?x_u-2^QazxѐWl7 k%Z7y玦DOz蜡W_VlM}{#I&FMtuJ*t$Y.e.zt){Йғ"&8|p QIǤc"gRAj~J*=+`I?8,=,N}̨C L2 LFKQnΉG_@98aLY_I*,UJDj! C.*g*&H!T ͳsl1z~G7|]US|rgFBV~ xR)d .QxSQbƴF5H]yQH9w=!캉29Q!ލBp #,V]8-Gld ) Ax(c[nUh}~gR>(fF1uG9A `3H ubCf4QWYY5vuc SoeV_x =>@7wb A:RV=3mp Hԟ*L9SKbA\\05 tԳnMM?9'qF(\) bsqxxКY5i&h͋2GN C懈X`QWVx0kr {$2y8g-p kkC=ld?̿Ҙtx R5l _±,YԚhɁmBŎ]+)"/驘x>5Y);/o@ʷJlΉv+ C_-'<¡vΚ' ~Ȟr30E Gz!վ8&>YL@xCwʄ՞"8}'C9'~Id-\h(,7sV>vW,KrZ2eCߟҊwOG#k׾iH)RM;9BF?/%Qy+v4hMHNu>;W?2yl X-쪄/5@a:0'*cA&B䂆&P{'.YTbΝQ[?ؗ̇ kiq IbҕDOuLywۛ,K0'MWΏ6ȒKb0m7@İMGXvdSUy\ 15i2o7VeDZ d>(/n ]Eogz M~McŠI}{woupm>f #Yi6› *]q 8YX#G$YśGS:2h4PE#(Uy4rVL4zX21d@6PCMɝݻw1@*ʐ Y{qIQ{ԊR.Ǥsw cO$յi6GEܝ0L !ljZ>56qс~KK?ַ `rrQ5q9aG[ du2l4N';ʚ5m&1D)~6я~9+jj{ka9;(Gjzt$l{ұDыI~ )*=+%ncɟ;ӯ.mc 7R uLcY9,D̐d$TquV3)إF\. ?ܹܾ!Zץ 0pbVE4T >۫)9:A΃5b39f,_bD :Enz+z#ﯦR sQ' %pUl*p )z<^i7] PF)N6Bfw̅l} 1jCĤ-z:üeAܪB!6S*-L*rY4gՇ"yR$5"&xtC;KrfL"q'z̶CNkNYx&yLÔ{C!,9rͿne }RL'SB?2[,X~fk-;cVװ_WSր$uԜFI l"G%K+o yJo4~߭1!Bfu} _Z=F@gcc6hOaI,*0W!G\F+YXN60 9}gz.ƣe+ ٮ&B"Iܫ8v]d Nq9 mү1&Qa6lH\Ĥ=B _=!Pj0/OAoŸBKǐBex4 XPgdi|V p1.\Ħc5n]K{췧hGGGLemPKVe+؛AA tWm` !f.qQ}qd7BxڃyG[ P>Ch8y,Gg/o$Ea ,AOP ^^B@u,8+FKL)v Pq@A끼XQ|ibqwƤس1b'n #Hw7IWtONf˲{eX2\9n5c@*uI nFHs! qܒFI 9Q=.qx zf#0q :X|X "N]S'`TT/?9)}bIvlu(L6l'sEYca, q^6nAt](Ȇ4j"W(2C~y`kOvi ٦UGUQ1χduб}jd|2"CY{.}bPPh g%=}┕F fشa '&]cݧXj l ÑFJ 7>95A ? ]F;).0rFXSO ?.S1[l'fV4 aP5C*14?鷕`%8Q]IjbM+v.K'SQH%lY2_)J!Ldp7Fz+ËLE dZvR[ǯ XΪiƚV3fLY)pZ8_tY LqHzsx\o3H{tUk( 2Ū 4/ܺ𨄻bˤ*]U/o5sR9i.S?C"?|xLZgWIg&* b3aY%X$ `Dm P:҃U-8*#ц +VIW` obzփ>]:[* df3c8˦30$,*-og9 0,>WQAMCHϪz -wj +gL9+E~-&VHS 0=t%֛ԄtQ 8H egEO"<t~pP?AS_=&s<P$ t6.'Ѵ59s@el_ AQ2P!f p3kݜJ_;Pu{p>0XPQhuCg!#sxy "j*d %"ncaN#{r.b!d }C͜ڃbΎ&w2vhG0 t(QF},1MC'UJ1S3[9x)taM抇?$ڎPkŤ qu#`,!)("ʼn.MPɫ^ZꕘtM1dTo {Fc1-oOSҩzj_b]kwe6KLgdM?hAw۬^VM qL8) -eTkv~El\ǫeyn)QjK_Kn/I`SDW??;WDh+/Z6~)K+/׍JKTK~-4Kkaîʰ9T=Qɂ<+.IENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/knob.png000066400000000000000000006657421461511344300266130ustar00rootroot00000000000000PNG  IHDR*  iCCPICC ProfilexXgTM.9s9J$ 9(A QPDTAĀ"P@${ogyguiojƇ{ P0@Tp}[[+I=*?w0E"޾Q>`h@X\t8L"x7_G{CPh4Tj?$d/$u|f!2R+/LzkL*_\7FPT/o!1z)W/l 0ArE>`ԐE#spxBd@4>%?)>0)>9yd9w;ɿۂPE&y6Тxw< `1  zX}Pd@2 A%8 @#h@'=`̂y,uA"C; C@ƐdB^?@(**PtShz-A/L07,j>l ;?'Yp\-p?ógx P$ %RCPPTT.UAGMfQ_Ph,͇Fk>t*:]nDwwe.Hb40?&)4`1Cy:ebUfXWl6 ƶaOs5ǎiᨸh\6ׂ~Ix^gK^8~E'4IB=0O"2EDGb1XNL""~'H$u)N*']! ޑ6i(4444144ihidٍM. 7ߐ2КҦVvЎ~# K+N =^ސJJ_EM~AaC(C>C3E "B1R(u9F !z!y&,(9SSS+(23Yى96, EŜ%$5I_ܬ~9YY78r؞bc7ff/dd́ĩÙy%%eϕU5µm]}  OO O//#o o O|||!|||\f1GD d $ ,\J$R & \&|_xCDTYHȢ(h%Wbd1]ZgXq5`j1 XBY"@J$,"(Y-T #.&U+BFZ_:V;+LNoBnewBf)=  > U Ɋ&i]+JJ~J5JSʌǔwTTU"U., zQ}Ƥf6Q7POSqMMi`fE-Q-?z9mmyY>/s:TZzzz z A- " 6 5 S PFFFƕoLLM.,*&a, ^s7/[ZX ZX:XVZ걆-_ۄt{m+ja{kgkWe^>CúIǙbc89;59m899ϺȺp{GǃCz^x9{5{mSQkkg} }|>.i->Tth_ۿ)@74Ka`eJY٠}BCB^a<? Ј8iEyDuE3!D`$F,h̻Xت؟qNqG$rM/$|3ߥ觜ORSӲM3322q>ғŝ5wl4=>x|4G1"g77a\^ivO'O*=rTةB"Ģbܒ=O?(U*=[F,)-*8U]Pʠ י3վ5z5r;\๩;jEjKuu_Pѐװs1l}`jSS3WKKK--cF]/oci˻\t5kծ_!|L;c{nԑб9ۢ{G͋oUf}؛ջw'Z_xߗ~ρ.w Y 3w;÷h<~ʣʏGUF;>Syw\wh3g<:r)ߩ镗/f_a^徦]M[m*y~fgYKxo-,}:is/_&?z,,ϯDg~ҏ5۵7[?6nmka+n]#ӳkj/to/IP>tՋ]`?@%B`a[ZQ@0 s(?*:#VF"- Ah%#S^30{\cC{qqry? $. a#&M+#{]nKAS1J;Mu M -5m#]7XlRF/7,V\6m5 lwrvvqquuss;v˞jm'qן1-]Ȯt:DDB$5J?=[LlYxImSRUhu3(3vccǵrXrv:'ZOVS["yZTL\BRJJFYs/x4]Lln*ltݶ+__1!U­^;}NEfCU7HxhԓOUy&?g3^ yk0>n}\㇪S.$,.y}{^ZYU.C|cfɯ;.{{'A"h!Q0s™**}ÏFdpjb ɗƅ@BMÐGidc"Veŝ3G(&Ɗ5?!E/-&$.. ȣD )PGհzFfVvN=}UC#!czSٲŔU}ŶYvQT[GNlWnu:i%Ee~[wPul C! a.U)Kw"|c01b%'ۤp|JI;aiXQlcDžsxs(;'WNnJNV Tί.]zA܄}޾'V @0(!,d Bs6|EFEELG='yg4] tE'(:YްnS89MR9Z{xjB~~։S6EWJNٔ?4WmWpmo0_}w=`۝w6CW<i{:B{̏7nsyB'o\kʿ;v=BDR$_C2#" i솈7FВhwtP1嘧X{;,p'qSx!|~E#LՉHDRiƅ1ِ|VN^NS(LLL̺,1Lln0{ +'WE|2|'=DDrģ$$dTeT5 (d6=QT:}YgUO]?`H8dLӼbֺm;{_Ǘ]λ~:~cS+z{W/P!)BFUXȮhؗr I~hffd&8*]p[Mns ֊kOJ#˦*t*L>PTӀX|źu-*J;z~ǹh uA#Ouc&`JF"VXHiXh*ɼZ9[tVtoAB0V012ױ8XU99Ӹ̹Y]=0%A!4{DEŞ s7Re)rRȎ.VUʧ^1ŬӬoklD05yafa~j&U9h9w*pu];p#SkջWү_"!H$)T6;4b**4[6)>ZΔQqD 5[<(R)laU1OR\Y\B[DK͏sM~ .M험Z['ԯ\\1a-|KvھOw)?0cO't|`Ze:o ޾~'>unl^c%O~buu5?73~Q~"lElMolWl/y+ۺw)*1@ҏo+`poovoo 2w_oa,=gFC%ҿ],N IDATxyeu'v^յ&k"%( l9D=88#Q&cΌ=#,ZfoW}~;߭W]MVo$%uݯ}˽|;sgY} ty]|G<$R% YJ ie ϧ|™<d91_raPo˕ҲqsqY,dY$\i=hML|$I Cak_mN #Bo qeEQ%"A dIf ri2bc%iAdٶ¹~Ͼ]oP>i"Ir c7IS8@FQCr ,k(Ye in]y%=F~0",9K~2:'|ШId`Q :4Q&zEQxWe}sߩ˵b&m&BYYNDjk0U$UPJGR&b"*iKgx_( ?ğɷK7>!G{JzŢ:K [l^H#+Џ r- =5YDNEE!ILN8Qt)q]'b3ިJ(46vdwʋhv4 Q?4K[I'COy!e) X,ZrSD)Tt#$$ל J)?2ů~J1g%478W-ˢ([${AIe\^{?E\)BP7J$N8RA.b؝j-+l)θ`g9e9TuDl?űv08xI8NrXIoVLۛz'Xhe]~|qh ^ %?JjngmۖH@8RbY}[)>TYDYA_,˒;n"cuH6xN D/G/,IԪQ(LVs6us%$6lGF(HIԅ1դ豜(Ht"y>r8hkI3 fxfZk** n(2%<1sARla7zn(>)Ÿ[MmD mee"qBv%$@U)HN_DLыE>h&Ւ R9)Z~sC/P-@mjvܙW ՊTb#6Ԫa*X&Q& 7`$gf˛79'T060p9URJiJGg&|GHe2ZG󻲦S{PQ"0By^h%Q H̱lѶ2tY$$gFqRx㕿[1(Ŵ\.=ɡȢ:`/( EqL RC!6 i7`r <C ^qƗ`}0^KQ+pfzTٕK%7rrr~bCRm A@TE͏zxXd `TKEYLEӎ:]NXT2X__U0t `Ĥ[Kl;)}?s\DǑņ7W.9+ˋB(Jr8عwXgĬE tv@a1h`i8>>gI¨}n2FQUk5[ГR>p.NjhEK`ȺƉ-Jѝn{;[;ݾ.lCRW"BX `ݘX(T55 |lH~Mvg!Nsq<ns\AFD` ҴWib9TU.r6tq|DžA XIMaNt]UUk]I)!'x&֌<34 $%bƣyUKQr,Oq`媚aR:&P°{/x5J0d=]}Ѵ=qtJ<va*h0AVtywFll6pO^=&PV>_IxPcA  5MΌjB ͞Vʅ1<] !.7axD'I9U6fnmm33GU1:75civ.\rN@h.`=? i &=W=EAT?@%SLUDS*UCRU2>O<寿/z=? z5쥗^@8|`tְٗtahIeƢQIM!]e?Sg -]0?5?CL0˵}>@g#Gvj\n9:^x;ƈ8=5!ZSM "I*T2^00 R4NCk-n ەJ[Oz0.K3Q4`(:o~˿ۃnLÚ◗/q)P2A>ǍwD"sr*OЪ=;`KdO@7@ݹ,^;E䢼r[6 R M[hM[ Im]PĄ~W:HvgvouC~t7|8z; ߾} NjV6|w=r>r]9+ 6jd>iw0""I_r88|u qq`3TYH()$А^P GӍRsCzLώd&:bf a tֆOb(λ%]R,zrXx?3䮹1ZN4 2 dƋ""oYQǘ Fzȝo|c_Tӊ, JL, L􍵧?\(1x|צƄ4rxgʲX%Vc:E3Pk|1qd(o7C3z'Fvt% GvOr HHDb^n`Hr޻l:1&Ua6Ͳ2ӯ1\JVT-f/t]nא;rF]c Ffqi= .H60XAB/(;=*z }k {\dH9)gܽS7Cz#7r bhkء%nh@3ܑ;b.ܑ 0gMs%ʵ3 ^ѐ;Iap:L>.}?`̛ ZYr 5)ӰRPSCW Y*1DxW`n$Bh$CGsDzðQ-Ek=y$.Ë1A ~-$ LR)@jIl [q Qø64i=jbL=M.eV=IxRbnA]@*ܑx@G>逢A, D/!g:# Ñ;p1!w;J+<M' alᛱ/ØPb@8j#垏Ht'%\7Å#AǛHJpX,ʢ*!q$| rGn!91Jo0&XԆݍ9,f LNOgenp| Dt&at쨖-ϣYs?^碐"[wA Aʑ6 d,{$R#KRUegD]j(z׋ajǰNY^Ӵ#w};ؘ/^@CwIrćǁj >if[QlZΆ_|K2$cm K׋!wVi~sgNr X՘!,G(eFGgB\޶<E;BQI4$dkŒ #TnC3֣GC +KKKÏnvʇ0r&3L.Z_'h$cGCQzRB|WX^?Hb!fCI߄(ljm܁$ $n?r&N8Fvnkby$.k=z6p[A픆`[eNay^.2aR0$L@n[;]+džA*?oSssPt>#C#C>P < s,n!S;kJȑ+jPu %9}˹`@#) =A>4'u%vɕyu٨M Eunov}k7!0ȼF LCJfl$7բnzgsrt7/lvYDbr.P ji*W1MɅhU2Ku#w4zÜFU]jμ'Ey B N$3@q>cL>VLPpOyh7I {jw '#w D>7GjpS8QLǃ = dii8~b=~"S:rdQE&.s ^{jsg(<*<D0SD\>:w ӣeay5iu:;&L%!>⥯Ϲw@IZ<?$4Jǔ(H&;rЗFʎwG X.!a QlYd< É(wa6#_=yqxtڻ+ZD2\:r x5BBhqET8+?uk~躖"&c|0qt@R2~c? Tȱ&p0wA\\(> <|pa$ؐlLJ Y p<(8D;@pT2רM{6%/ 8R35;hRaȝFڄeRsVGY|߾m6m dBh8cE?E[ՒTxHɉ A^ Cȝn?U-fv gΜgfgg湩Ls#+O;L=sp&P;xy `P0|"F$;[Zrl1q@ IDAT&rG^;yçOahpG*Kc@%d{45$"X=6لLV!މ4Dr߽B:-|?6& 6 hage--78)0Ԯ$ .裿\y4rr`hrwPbŁgΜM*:7a__@Y秦O{LkjECR* ww#kxɲ?0 8٘E*N{,?Q NcrS*9wcVT )>rj݌9Q ζFrZI5T|;&V] w!wHTE]ͪVswG>nS!wp8z!AF2^nUL>i]N*H".s?y3fPBNW?j4G k7^oTmGl3,'A%.aBU|-Y hlU R0:W˴N~e)Ϗ /3d$D7c"S0'8bGW]6E,kT㭖 nQgqaD/#kޏP#s7%:aޣ;BQRu`$hAV4 wF(W N5ۗ[4bQ{fD`['f(Fӧ15/TwSv{ҭeCA 58 -.anHU'BEeqrKE,[&tj=};#WmvR9wDJ u#NKCѿr sg2#ъVmd|qLݪZ- Ǯ-wr,<"DC",bU҃I \Y$Vp/LJ |pP;jvXD}T#w( ׷mTP #.E^r7{94 QxμUD= &]&HN$M4q1QxmJɣQrt'pP-v!ր3CMH: 5ވ.[[ŋ!RNg漓n:"]> T7&P-I2ٓcCsW,oMV ցlˮPeꐦVWwyU/* YXBK1{6e9wl_2STD43u>r3x!w mݸ^KAB\!}s3"܍E[1%̉$BrAF!>#n7Fx"=lov gܸZ&#ll-`5'ICR$ƦO~Z\\BNj+ϻVrG#蘭"=S9nMeVW7+y_{!L/'ET//>jn@JOms<2KXFǁoa?*Jj 1_L,͎m6=Nx 'pKD``$STmBN,ڃLAuQ&$"'D|B /m.m՗t2<'$‹*%oL0] I Q0QUF[T8렫Ú 7Xն"Cs&5'MeF@0ʖ5|@sw;??"90?3SH)E ,eaanj:E֠SƻQ7Թz6I階ݏgDŽT$milMTQ#!w D0@s̽{B=N HAG$hs"*(M<%IW@O02KzZڡ12n n_Z>vt0??o#{0.8CS> 9IU^B>6 l]#w'α Ru8x:5bB 6،P=$e33I`RwaXo z P*eP7WVd(Ĩ yRH?UŨ`ǭKE0ebQ*8RY*(kAzBvQ&SmLuQ]+U; na2s7#*UꪢCrwHF!w?oPhXLʹ#/Yd؞+ֹ)Jܡִ ZwaN_:wň5rBO DQ@C0Y`T- rlr7Q_X ci\T ]ZűJ.jr`U@SG"3m?njCLb`$\3Q0BP{]rި{b3Jc]nuVYxseZ40`Q@^UMJK:(Y"OQ=Kvyav9w$Z:jͷW;p,WANn G놲ǎ}Ζv@j#bm>֏k?t.?uP-3~ͭ(FwYP9A>`W~L ~)+IDnQfgX iҊ6!׹G+.t݉ '+UKyif7|lkgg~azr {s'.=pG2 9E M6T@ |ґ>*+M䎼uXBjewFrGd@ g"!w9ι'QC<(2(&8q sh c Z9sGCq#_.͑B -rDF2XuFE4r&hX1 z2Aķ8zO\.׷+#+;N-qI=Y+]}C;\:2:/ k\^`y)+a \52P->G2Ӻ:wAZ>ՉbBуb#S7&ukuM2-xЪ"&&%RXe8WJ5I$x7㜻ֹcqr6R۵_ S$.9rgčΟksSL^x'w|Q5tRuVӺ.5H[siwMǧߋHq{Jl2XJ ƒ0%GˎG` Zٲ:! C^SQ29!!$􂙄q,saR!ϓ#w{ EѶrygd5X5tMĨIr)TVÂez^_\;Nч 4aԁ\\pgm5ifX6YRۀ $)E3(TSubFEܕo~yb+F]O׹N/2!Lx1F,JF4̯,V.l1s#&d3y%(;U {M]0ҞH.أ9wPS5(ß ɐ;Qa&!8 X t(v$a`8'Q4@LJ;ͽ@IR ,D2i9"w;v[я+! 6W';U U2TԱ:<9w&*ez :4X$a>eF~ڀ,X4?sS7~kY>}󳳳8ȑG] - $5ukleF1>&lˁ%+xWv 9*jv{ݟ^FR"˿L/]_U$^YN} wu#5759F_Z10"mKȼM&V|-e_Ӑ7Jt&6;;ZRV|TM$Pɾ#WE C 'B(Q"[ղu&Z搐; ep?zf(2!@vj' x[}W$ FM ۻqjbt$">Śs Gi^;r;3=9w]d1s.P_JmՍRmZTnzz˚6g+sôiLF$Y+:-}`_ٻ#wVXXI& y+n rr O"CʵZ s4@fseO*(I : BY +rM"46!w3ӃNEGe6q>A/}_͇}'{7C<ϖ0h9r7,FE|[B)ZMIד%чw) ^Zf#wI(멹P@^X0TG4IpZu~xɸ#wD4ZZq0##Ż&ZHyy0Mֹ#od #BNݘ9|so%w_û#z;Swo[ oݒwR-G>D>@*!p[!u-_#W V[+BvQ] ڐ`G~n9wS]m;|EYx=x\1:&<낢zKrJF!$(t\ OkHd]\\=RDUM+b!VFF9AN)Fѐ'kJ$J^f'ˀ'DO߿LX; B T$AiYB|1"8, th"1KH,& u{AЪo-w/?WZ]P~҅f"P{XlaCȧgFhs`sSKwN>5lh;2rJ~qFY\]Xk>lZ}'CM\;i47EZERKqT:{ié:006ܱ܍s0/\93:h!@lpI%D hſB <<+kwv?2rGˑΤz 6".HI+Q]D z(r WL>gnH+>:wP3d. ,5VzCt|;c Ռ/ F3nL+#0wT-siwzC-uDI֫R$ $eI1u@&$Ma|ez~aBXSsXg1riT~e$g!ʨӜ/w6/%p4$R)VA)*8#\xVH[$fBc٫٭4 zD(U0z^S3Ać`&^a4loe@ AM4r[JTRJpG  1/ `9MEKpWCZ`!wa;#G4\or'P]P!wWbE$?_P08 i6<.`?Jg6(eΝċ7@:9ws侐@iwi1 JQ˱&)e @KC ڋґa˹c$l&AOC."cÑs"s|א;iF#»:y6e0[{hY >iOC?C@WF6v!gJ0W f֨ M$"wZ}q2 >ʹwEj}sdIܡحs'~{8X\\Z$BQ7yp <>nSEx_ |Ӄ:JRD]h1B%VB=/B1YQ4`k4~<ȃ<~$ !Nړ҅0SCWjS''P;kmë3'b 7c#$IrO?5Px/Vui!!wPK)^"w(%*]r_ҘhpOp/op.}ZBH ^(UJJa,HQȝPasnW(iGr= THꪉE2yڱ+>>S:z(@.*\}{9w'{"MVbrPUˇHT¥Z^&y%LZ { X\BiÑ;F71~%TF^pZ:vۈaȹ̩ I(roLdz)OVT84R%KۅrD yL嗟œh4^~oo243pGŹؐ3T>$B x$+2.I6q37x)KvRF rK_̙i -ZAR(No-%Ac Q`$JC/')_Ϸ(KJxkiեciȪC87 wޤh3JHS'O> h_ ld9Eĕ7$;v2H8 #vpz~CPjcJ`C+h*L:aU=eM?WQ <E)A^;ޏ~Jw90Q,/wDN!wx% ́6 T(A ]I̱0 9H(h%QP*EASe Wf t|CB˛sFΝsp5`epC 9w:"0sAW#wa1} \=sQl `ww:wi06G8I֓Do"XH6+]q_8R0H۷)Gi) u<+0?јCƜ=.MK.zVCq1xZM1F1_̇ι)=J^ *KMfl{mA1 B{IWMn#`:EmzÎP`yf>sjgEu D&CX0b3q$lzAEČ?ǀ}p>WramDeG/ƿৢDmNnlmR<*U˄p9wtGB6;;ç$;XX\T4)%ژO䆸~ǣҞQGj;wVoLe)#u0Q\,+Qr#(ipkB)hqP䓟z"6C{JwrV9:f+NY )2sGqWCsx("ä_yk|_D4nxRqtO } U შUA#Qe⨴M'ȹa0nađڎ@S^jf;[}]pS!:Dε:T0oqBρ</P(אIV:1#|n;EXɕߞl8:z}j;b FU y+>yv٥%&p+sPڶ,=ADi bMC !W ;Rf'͹ !e_=wda9wL;SO=YC+d333'Čs\Pail8CxLGyxeD8HB$ݬTQeRrwӜ{P^?8{eSؓO>Y|0Q)m2*TнEC`#0Fm,sN73w,$JW+5a2GAC PmeX1]w?*^>+ ӂTx0gO_M,&Qj V;X|\RA2ᒕW:[b,t̘F@uvjE=na_w:-c5 +jhicf}BpBVmԔ2ܵgzcfq樔/jim5'Fmʣz*!}^@Li0^M^s*rGF9z̋Rp1rGFR3y;8zPSG^$.B=S,*\׹Si ֨ Ad؜j(W&tKF#NRQ LcŌ#h82*VA1g˥"<(c`TtyTwdqpE}PS+"('?7л!|/+һzVZ Gh6?ӨxsZfS߽<6SpG`8E139=*&}SiNqZ[boyQ뿷4??0B-BX&Ok (& |c'.,QIXqqLj?Dsw``BJ&H{7[U. IQjeyimnk AhiZOi85& qO8x]" Wp ^ewhֶZYs7LJf|b }wD kL;Vhzwyu䎝 dTP&QHoؼ 4Ǻ͜; y zgq|P:y?16#omVU&Ms q0{Gp 1SA]ј@,~ɫ%̶CnPΠ7@`.t8Kb(-NHG7_P|k7$˭Sj <@?p9@:G |$5Tcɴ:;MqҸZf1BTѓ. LS,rPAAih &!)pf&Nd:j#˞ODlQDz6 dZSJڤgX]09+RC1V j8`#wQ*#Ql>)5 wƾ̋w71rGՑ,ZNk[TAsր(x(29 |ܯɦh"wnۿp""I#~Cܐ*ljk5M?玐;<\_OB*Q7XZ:w{u9wd+2kх.s_;W*huquӁSL?f170Sɥ?E3R~>2`\򶧕GELuA?9l^{.oWQSFDi06drxNG~ țOsGNKUk򚀚:yAZP;enlX!w u+)S/| `8 *L0rFbBoŪq9`u튾S^(<^9zb(uX#n! wl !pUZnú8X^ i+_|gL`7U/*ʑ;mb!UjGjÕonPQ2{B;C>h{C$v $Pɸ'{1Ρ__(_~Gg>О:PIKrS\UnlT;$[Hpb0 CӕTurى6"%Z@s r6RxKSh ո)Ľ`Vф'Qd\A\Yo ;-)Ѓߏ\weO=U%#t:h@z5z݋:PNSXs{Fb2#=uHl`"ܑ-B#ht6e$Y<*7R>ĒJ|޸ZhP@EyCS {#pxJ;I@Qcްjj]S |vYmY?,۷a$Z@Qn_|a,xiiI>"u'|ν= f,ÖbH(0:Ѩ*;Ɛ1 ?9w%`p$`A,fRQkM[^1-EI/V8&i q\T8+u#5enVG\r:Sf6OtֹDaVUJBݜxG?7vǒX9!hyY*< kJT1UO[@`E|Z"g:ubn}.;j8 ;k3F$ DY0"ޛu}\$R.YRd[*OʎSSS$55UScO/LMEe'Qϧ8-ɢ(Q(nw_z_NwOo{޾ vyλe5D"8GPLx Ts@8wH$D VZ+r)H=Gi:Vӡ{(An;fLaRr*;VDFp,Id;͹d{Bnɧ#:quLWfiŁ C P` w*Qt"ȴ!wT1ofl:s!bW$Q F(nHxz.]+3!k,d$#w4d8C1ۜ;A$p@9wrP*[63{}ggj?\{mD"w{T=CẼ/x (G8}C(V@|x6ܪ)ym" ҈śj#ǻPu3wfOgCѨBޓswSgq<"Bnp+ dy9V>21>L ^le`l{B\&[P=Z gA Bf8Q*3g=o($8 9[WD r;nq'LܕJҵe~3M0`?LDŽm"Q'e Im d? 'Kl0x!$@*uk#evcАJ2'J]}xם(sW+rl#n՛!LJn䐕!=7N4ģ:#]-;"_a+d hL jx q1bbqeZ&#H-Pp1W۲=;Qd0Tʅ%;ЌG|=Wj"[|봁P0v#wPfX{?(ksm=^?FBB`.\T[.pzKK%B"zmN2\/JDA@hEQcG;V!y7*o(]Jw\g;ēoSe`_DJnND]Ժk׮uj*U2HnW8wAŽn-;_~sl|i.y,Ur6 L~%Y (4JfLRvݹu!/0 -<Ǜ˱jv;h;oF(Iyoqq9_97HB$7 x( [CB 6L #'->ά)_UjC\,]&$r2pNߵz啗ʗ89tR{L;saʢ=>$-GO^.pvv={$۶B\fgIBܾNц4:E3_>{KO=AwӂL7% /B;Lr!H@||#1SNHQTsԄˇHI~o?zl6o}$dpc-\")1%9j2P26Zoé'ڇ[W\taN?>lm)[9w2.<҅F8dHdp;ȝ$|LCN OMOga\Ń~?=&{`V1GV#lh4֠kC4j!Xa%]znʕ+3GۏPeRhIl*6$uIm%wX zÄ8*3R^ I'"İ|yrtnF8g?3gr3}3܁}鎇$wTTԈsu8[4kg8u=bFpL@G!Svw[x$T)ח|wF伡PAvܵξ_|s">_81DN;ÌطH;Un=^{)l>ŹSC's#.V5ZS.m4= 5ha1[#iF`$hUzA~ql,wu߾QxZDmCXjf Ecԁbѕժ* IDAT韔*J.sB72 su/2F0!yw2jWˡ`oD5 ¹Ls'ܡuNktVNO8^-u3k4v,R,b4ϨfFax8 @ܬ ⵣGԻJՓlG2?0\w\.bTkL&1vި73Nh+F|٦NOv:miU4o/#Y;vD?JkZj7Q @{ql9h4pF!Tqbƭ{ >-tKc+3$q_3Ca%V3Dݹ9w ;p|9w Jm1"lm8,%wL&!HгY&.aLL[ ?su#C$ # p;c䎶*S;j{!w!F"V+oIS֨Hw?FɌI;Y9)3!IbQn7#kɜ{ȹ۫=oHbrd<7GD)spk6cϝ}f&Y+:@Y_zn40!DRE?Fn;zgzLszi:IKiAܸ`^N v|L{r$Fl]8&}#^bum~WFtw{ hWmQ8!0 1;;wfX?] 7i wu ەnMHzo#Was%zڅi䨂Twh@V}'OOkuy1{(c )E):F!"0HA P67!wSS㏙أ`V,( ٷ& IICH'c2ྯ~x7} bRў0w ҇{dr{;B IRi2#|>XJ# İC\6+=9wZ~c̳2Clգb&tEc!Ȭ,ЙyՁv"-ob_ׯgscm_ כtm{R/9-ډ rsD28wF18sHz?q…wSׯ_y XT{/BP) Udf[%a퍅ۈ%':DV"b֬.Ul}y!d2&[TUb { ϟ9cKzTӧp걧JׯKf/\2?N: ɵ"ƴ ,^WxJ*SۨڱtolMn6N'%RM@ngsQǙo^]Vr .jxBcP[]ESLQvP]ȟJgPRHj0\Xc!M^d]+MkDiT^/zOf=vK7JoIG#.3FfA*Ҵvw9UI^f(L%ӥLLf;!w_=K#g8 \}ڍZ`! m^wLޞ@ Q2La ;6zob0b'6b *:Wz4EِbU5ΨeNW>4rK-Sq錷۱kFbk~/sq)bxȱKqT tJ5}mZo i3N4ܑ]qz 3[ PjFsZ|1+ [F6ߺck;m#wfk?YMb;Z(MATk0 C._ @u<"!Q5PzNO{tzߗ`V`M̎X.,J< urX[/#~v:lpZ > iEJP!"!wlVm'PK-%pDԎ&8ku]GgSL*' Fߑ;U8P\Y/.4+Bvs ҇78EM7r[CG 3._˟a h)K[<5y.)ُX*Ϸ HZI_|Um+pl-?Lk7Sv59R&n2?;dR)H xMLu8qj3ܽ}~ՅiXMb FI G Ozbr*UokKG |Dan wۥ &Qg37fWkσO mˠN.w#CRK"ÃKSl[O(Ybǰ,4nTd7ts {/(ʢPi$`!_8IEř|  nѷ{\ 6O09+ "rj]@$g|+K)S#F-v\䣪C$\0G t`xaHw.A:'g[f~Rp(G.= sw'>.r{k ?m>ɖRy84?^ֿr̵f&6lG#]InT5B6 {Qe72+ŋg݉Ӆp G.'SRnҽt\VIA}t39]-lQJZjAҬaZX0:Z&MȝڈKkw|cT7/N3t+B Qi<6 f_TF^JT ;!_6웸Rǀh}afLsQ7"ȝsK;&L׿}{Ν_uJGUÒtiGsN 1dw*#O6:doKCrɠm\(JM 'hSW#{}L&I0x\d](b,97ȭ\9ΤAc83qu3u4!QyTsԑXiB! mI#{$Ҡ`rUܱOW7 K?i Vԅ@Bwn\K+U>ʨݶx%hSNlj"b<1O-zg+H)TSejד8{aCwgŗ9?}ogϞq}DA3ZnK/ MNbg`fy%8B#-@;-H5ѧ8g =vз훽6?{h` wwE kf2F Wҫ˥e_6qke_2za%( \HĦʬKDCv@GI#oQ;V2X8ora7nG:jԼO[ݍ܉abz$Eҳ]WƵd2ɌZ1wIlȽ#wDƘ=ЯW=8etP:2k(Ee=z)Ci%-S@cSSkQĹ[6:y6sep:PXXBM8o,n:'/H= Y@ wF_DKo'QJu;b);RvxiqG~cٱz*jRcp]qeuHmM_FZ2-?XQms%W \}!2Aן^]+6S$! (|@yÝlTJo8Y!'jmx@P꦳R:~7_=胑rbh,Fͭvk8ss8s\[FN#ޱ1Qˌw>N;G^_)=q GfGeԖ=[GHHek67OllRG|dt>ua:7*-Q!\0'mCSҀBoF(ŊM"Zf7#wS@&8jrai?{mbL؉qzG(E ݭu#CDZ0# }CC0B8l#H͓OpՍv% FFF<gz 1h>NoJ;ve;F֛?H7]X0'y2Ll2\`(i=($mBwB8QX|3]ȝ`-L$㏟YyG6̲ON.ୖ冬4mXd Sk^W`,I5J 0}-CD?ܓ IDAT=kNbo\nQv*87*#F`?+$Go]Jx2cpōt2Zf1;er2ߙȔqo\Nmj$#NлѨ:ܖ|HqlUJq8)*x;}0khig#2b a|;!vTb*x%}]Zb%쮆UnLY~`I"ɥBZyN9 . H^P4 4=&m5Xxgjvׇe*ѝo!rV7{y!rG)SCcFXG)rGP '-r& ܢ)YxPwbKR L }4xv>LVxP"84eR8<&\qP :NY{XZK MuL8w_hktI|C"wyVg)g<=e;,JSoe8euHD,J_ţ)ظqޕSApe'Y|.W2DE؛ϯVV!4 pө7-HS0 !j7tkTzÇOܡ1|ܐ7;f:~SerE%?U#LpQoz!&V旟zC?_]:J $!me w#+ݷo w$*y[l b+ /!?{$Ѳfcv'F;MLn1G=‡B|!rKLC7*QEf0b^xm-0O?)" "&(uDR阨%#GZa<ww`IZkΞ[pM <ԡ76W/}$vx%@{lF;hk]:ڳ3 v`?@ͺ6;; R'`855%>|aFfkj V)LNGK5X+|]hI3vs)g>x2 Cl{8?.=99mGvʚk͕tR&@,7}.Q&l/DϘIqu*3\1sߔM @q6 ;e197shxW~Y+"={u NC7yT7is8o3L70$q7翴:,cm!=;\@8MWG_\ʤ!@S3T|63ot_~C>L@H>JBT 52,6]UeϿϿvR7x˗=BϷ5:;AFc#ȼɧ p3KzToUv;_UOHᐇG$!N>pG &W=;p#hvU3 r4x"wVx ߂sZVsr2ȓz ¹X>?c,9tJ!c4~6Zy1Jw oùs Tmg#B9w@qؼB6Ŧј۞dE̹=I%5?S-~'9D A@)Jrr$0f#I,ʣl!5,❎` um4bfʹ4ǡ|LC2V>ȝă1-߄I:{i_>r{r?]8B>482L@&)x'2(EDuOV"wDBT.xXq)FXXRVa WHpհ^l@H"Ȇ-ɑ(^oJ]{(:$ZH2r7 -sxg@mu_&MQ;@/ja6\OfpPiI6;dQM YًW~+}KL#T}eǐZYX.>^a/')3 ;Q*vcnNJ2+F_Z)k^Oo]\#W*g{ T1P Uxdd'ƫ? P쩽Z"+P.2;FОUkԱn*jJgmw! {yh܊?Y-(:du!ݏMgx׍hVv:G"a4 w@"KL rG2-1Z7ljLS^%4'aO]ZZ:Ȟ˧{vեvLԋ8CaCq:`u$Aօ iAZ:S%>Y򍫔FBǭ7T^)Ir) LehMI_ri^/MCwp>wYWHjs[# #! #M4zK=ѣGݤt~yM\8>dS- r>۩\/J¹*cN#=qX_Btv0t1@5- 8Ό$]lޏ#xv!ҕ7g>KP4HLy4>4N^^]8$=SL.ECܹgj<< " Q(čPbcو`y_k"fpbFrN?<$ig>r2>˸1MJPN ߺ/_GyT`YP"l  9d3cct$ q`t8w_I<G0W59P4CgcbFR1 5-OM5BpI8lAOiqĈգA!B+rxwܩŹjx¾ChW֯rH6u/,o6:3Ĥ<ÞP8扅]&"vKۥpE9-n5{Ih]H|@uaԭ_e rG0oBv[ҟ߄!\n~GNkQ#0K 12Sra& δhrԩG#xRi? #ZK"m(dt-\?0(>Kwe ]O<9ؙd2_kM77*蠡)y-՟~Ff8D#"^3yȁ8I7p;zdfsmC#hs}ig߽Trh?֎;U𚻎gO>z  oJZU<2!uYSG6OU[ȖؓsAcJ6*JӬ-='WcL[Cq`t4̑ /n)HնRnrY.6+oB$1M[2Us','"zɨ]wrji A;JРn}KY ;llh 3go% Z2TʹcА"GW%ڗ=7Fk[Aւ܉6{QhCg "]&ڽeJGT] LLdLw3AU2PwA\)^ɋQuF4*N2Fz$7!@-gCѸ53Lė^ 4a]PLVR#3&Zegˮc0fnZKDj9nOR٬%zp9wjWK3,ؒlTQdTKAH^iQlwJ1s;ONLlǹPĘ|hݶZ wtn;eZsc3^[$i fTq#= Di-YvճWQLnD#&Lq/ PϹwq67 -;@R{b*Ԯ-Fw,f &!s7QE-bFHɂkUl*r֨&XG&I2}F!kwes-~M7ZDJ(pz $@2XAV=dZ!ppdǴ-2. [.]&;XT1m(aHt6K).% vl&fJ&8  ȝ从lUR0F,2++ !js@d'j&QLVO{}ƇtO%ÇF#َZl>Qtu"%4`c2?QȝAvF7M+h;-8XJ <%'լp4w BJ"w\,O.8Al>QeATd _+%,ϝDǀ`҄-ryl源N3vAd"M8D:=jN8wd wheM fX=n?D;({:|h<%];t9eJG6؛teѥM}0OK Cų3r,qdOsz:ݷR#W2LR-sjq;pH򀈙(e{J^Q&9wǽMs\[DYo=}-M9dRBطAv'?O]t!WԳ(" w[չ&@PPceY`Ex}FupPҦƺc|q\Σiʹ'톞ЫqxIdF}sL*M{~s8]ig^i GQI!'"=gzh: H"w Gkk mu7Ql w#wT/|s6 81ǿI>}/uU68#'*R7)I2!`aϱjC@&;nMz1f*[;U "ifk5Ȉf#i-.nvvVx`( /qOJv5T&ەT}G< {d,uzEЏ@0r}SOdRbL sE-;%!rX 1|D8d$E%6]ꔊKM`ccxP ϒdaF^xJy߇)^ )}7;/܇;*˟gafffAvaLˁ[7[ܤc D=U֞]܁8`GV78wrqn93_/^tsD0Qm}jLƩ '@-uwee9@)(0LJC ¦69amhrJ{jhs:,oRg?3`(M$bt!jSvSX)vI(z~3I&vVvz&6R2 ﮯգCo M>m|F?X>vT=_M?f܉H։vH'>@n2mXE_QW5g1t٨6:No(ΝBq3*D$k6=d̈́!7\lqu,_25c!eV~QJ=;a@J5K,FY{+dTwKEs3ES;1jtwOA fP@^s:m x3c=1RȥSrLN#cց>c.s{I2B,s87 ^5?pmܝ쁙Z"X ueOhh0&+ ۪3c$ W!X+^Vr$0X N2 . IDAT&&*ӟ*B'sG& qz1M .C,Z*Xm8wȫǏOMnj;]V7YFU׫LYm繫U*f6 ;2C[gF!`|s';5$aSEsA o!w4!(@ܱ1B1(NO-y*b 8w #C1 :H-Sfs^ Md}PΝ,whc'aaw ZZVLv=O[ uK{!rGS!r A$哏/ϝ4ݜB C X`9wm u+l^`"9[ۼƇrsGDp-No;L/!/cWBTP*%Vj8Ll)e|t~ߵNjx)Zs'X;ܭU EŲq@z+'Zwt*t:^܁ɘw^abpfB!?2 yұ=U;- LmWjگOsSH$2sג9w.4}98I/ tB(F@S y|BOxFn~%TO>+?x"9s55???;>|Bo6nRb!? rzrGR>2#2׆=KFz.h^>77׋]bɹ!&opIH&1L ϱVǛx7Ǐ~w5F|#8ziu W.677^a5Y|d8j#W2V`CP")U O;ܞD<3IgS;xR)WWŦtFZ2SXƊeކId2fSSH.uQ_ߐGJ'裖=;5aV2׾Of//KMJZ,ɬ)#YN%%}S ئwհ{͆JSժ>>ApVG9w](qo`Ǣ ]ť BAI e%!20xHLơPrcz:NZ"yۂ}bl.R2{qnBQA?y`XvR|sb}G;%|O?80oη=NHmBhGרnu,|>`4$R/A:ݐ;^ E :]}빾FT |mo@(4 #GI2TݱF %?=T$PHvz^ =>yt*fٜeǣ,5s"E1Tlf.Ǘ6{aIۑ;Cz|ǬwzNFH6,␐n"_z-'Jm]Ҽ&Gf 90½;)SIeXU2%M";qOC)ZU8wL:{ ;PzPpuطי^;2Gov(sІ-{C²nz 4K?4ͪӷd T"C4V.8w)"˅"vESÕ Yv*ȝה}T03 r~nصA ]6\GNq$g)Q zQR͹˦L2x 0[v(e&:ZJ gRѣ-b^XZ=0#P$L29ws3W+QE+1H2kCBr/莶+w%-Z&dQXsW)3?{7bL8y Q]a|rSTbFeԔnWY%}!v?ښd迚Jv(Iy>DmP,ݪ+zcpJ'h(:bB dkj2SḛaApC BMֺi̮E)j}FiEz߮)#^ G NgPd"Qm+Cdej5}V+NT$ ȶ (4:#I@Gl3̤T*k?0L ]H2Y-2eOi3%P-1^q(1)%J&ILC;,w>o sQ8wZ&P[9wF>1;إY`2mCn4!rG Gs[jAxQrT?|}B;Y~T* TWSl*A#wI϶ E>q:&k^$"IPo][+jf"_j>K<([c0 z*/Fh#W2lcz@-p 8[~|>7z{Y jYWkR͘oivD9b0CO1AM] 7D9, gym</ZG!ħorX"̊'I܎lx }g-xUok4gLB]''7wZ*yfIq#yW);21ݕ܎o"CHPt =Mz\u˳Q;YkXGTv6lRyVC0+  dE Dӎ?ш4U&LLL!k4ڹmv Y't,[ǨR)ef/̃0>'ZkX' ]MP-$lLʒf6Zwf$ת7 Ppxn>玿9n Ώ<r>ڔ~B<#Gk`Q-bd P!ƊdAYjz yp̹曽o}럜xd:`WCሇ"79H a0L^ܹz -i %|3QH!dw'jFZGGnd!Qj +Mr4a ϥ-׫_tm*dJ[}W莱zaX^t!@MZ-]PA@+xGj]+GDo;6 |8sޛHv^gǍ}ɽ*bUI-eɲ,/mcv=jcf~ԃ-`gĮ,q'==773 d3'җƠ˦Ӯt [b1Տ9wDLf3BҮ-A']ߤ7Ԡ3yϫϐ+N'4iTOd"{*h*n6xf/Gh2]}]3pղ.R48?gfg|]a̳6BpDjk8w7܀XO>+KzzokajXi PM0M%p>Q +;o'R5v\iϽFY;9}* F~&$XNK/jYE|/Ӝ>>D)Q#Z5W+OV .2L|gC1/W0ZQ 61,5M]vch*L&^XfP#mO}[oORfk6p.X2oc$T/L;uOMV|YOvDҺHw[X]솺5Ӗm 6/ڡ|Z̫H0Z&2\;Dƒd @hh= R5\-~[pA_J FѸxf=mF꼤6o3eKEȴۧOBPz\nޔ7$߉S୯~w.7t(2}ry9}ek5O%HȀonn6KD}j>Bޮߚf ShVᠴYk,?^StWz^i(NdvSl3zrN;[3O_cQ,i˗ecT0h4Ba3W.=< Ətr6[(\Dkc ZcI v@޳sٹF Qs:wpIea bo5Ĺ wj{ȝznoZlt3K!w7!w;#s +]ܑFx>Wr8!sGW.7_wl`2X [ wQoZܪi;vfWa𥒌SÉ F=+i+HdLܙ"w?uΝ.\9?[j=vGA\G!Ho'As^'\L])gܑnuɸsW,!+4Bm=`z`^a=\| *J-EʊF ft셶Ә?9 #of: +8`5}IE⥱X;Vkup>Z"SSb LhbV*) s4i9ٗOɽDZbZM(M4@n4={{c)T]$sP,5i6/-owvCq!Jo*ScNAP=6< tS! F  ߃XZZ@v%2sS¯=n"pss(NJO} MOm|NưQјD &@a2SI{v;g6ؽDxm^O|1/%gZ\X Tw*D/QzMQ>X8CLRG'=c+NSTREtѩ [bcaCԙ`0/{W/r<*V|駟{,^yWnt q&țL^ݨs\ʦϺƑ:4͕pI[hO̰;IwcUJe]YY1 EsGDF*;Ǩ  J'61%C 8a9Ukyvy'b[R_1VQzN܁H&ciq?uKW?#:+W bD&Y@cr:jQBa޻oZ[}387DE5.do\h(MqzP^Az qw%:mlW|6Bf,x97{ͷF^\lmmnĊr@Êoi8b9v3ӬW-#+q=Y\nQY &j̱Bb)ܟaϡQDx '|[+"ƳjEXc| yKJ{P8L6vhyqtjyhmDtn4̲ԎǓh-7qDKbO@[_XU Mh%aѕ~2V-Ӵ(/f1)3vO_zbQv+./(φZ2 ̲bf|E:ptj&WWQFz=Tқ"wPruSRK}{%I=dqZ ^)J,{n~*HԃnVލvaKŹ}ȅ-78 ģ9])-@}b]8%>ӧp2.'%pkD )qUZgQd"Q n Fn7E:5tJ)Nȝ_3;!w@Hƹv3YY%\i0.u- u *7DhX.<]|Y$] };!w$1+3R~{;l_w gI7nrPjftJى#e!wcF玮cqo.; Q;pO<4=ps|iѩ0kfddjȰq8~Q L6Sr=p@-Si% IDATV.~#y1N)z#Z͸ŤmHU db 2V<!rw?F|x!zԹ;thMlgȒ8 'cL50&6V iӊ@v(VVn͵l*׶Dq͹Ke˥ݭ) ?8 <ZB253*b;[*}NLٹ;sHF wW܅6B H}A7E%@` ;bq4oF&ȋˁ>uC c] Z7> N8w㱋']-SAz&Sk.ÁV D{Ss'߰pa2[5H%!ƵL"^qeSß$2QnԹqZb\Rѕ'g6裏 k.ne^#?g`zSkqԲ*N6)er^sPھf'cq>sgܼ/| ݿbา /㻸V!nD*1u;$`+bZv+4vI?PzDDY8Ҝ Μ̷)w~oOx/s3UX#}j !NbŨ" kNCw{7?}ۙf] حd̶-`LӢD)V>^l6oo\e2#"q'6bD᫥Q:FvIRY~gko`7 ].4HI$Y*BGQ/>s\Bߍ6%I#(pzn.kQ8P1xw5T$`䎱c` -;u @:9ɑ#._1 C\ 9;Ɋ!t/?A ڶOeF颓]&1N""ogg:y;6"F|#ϴl`n~qBJ ml6 C&j55L ,dq/zy/.V;bnJ5{gtse>:[ZOAFh15OTUO~H )愢+k8 asڻ׬څ®Ӭޡl4zΝ;i"o [J@XH"'H;ȝ/f#?mdPe-ܤ^z3̊WY5ѠWd.R J-9pa߂"J49@+t]lXQ+wWWlC+G]+s3sb\[+$ {4_iXTUt&O_:d չ[H6]RE5R mPw]:;yOgg2G1V3eܠя0[V0^SR1{#.m n8v"7:Q~dǛ$D4vZ,FEeK3 $~dW!wF-3,ɣ }>`@[!*rpkK}zHl&]{L.N#r$ Ur`; %?:w7D8f'Y>2ȁi+Ƣ-.6ٜgl6Zf:w?%Ν!w^$+:wdX2Y؅AT.rp,DH@?$L气;-Ejcؿȝ8wչ|O9wgTy w9a; .wܩ'Ch8Sƒn{ZZu-[tɟy&|9C>+qg]eU{;w[.Iljqy.V|s})jugfmDp?]aFɀ9˰@*^jΙteSeQB5/}Ks/sd̃@ e [Q'/n,衁/HBG0(4iUr7(L9 FΏO]\{3;~@qv@NW~[ZHd"PvI..ַ3s͖"L}6:d IҦ;ź*_Mߟh<|fcip*-AAn';-9|`eN |}xatkØ SNj Q|PwCtG [ˈ~81~!BsߍDS 3F" ݷ廼B2nA2V]@ =;,uZӌGך|flDY{{kܙW, =yLvt|9Mgg~]i>¼|V>u4DC"`F%?6鞨vu.JhIAd}LDaom} _è *=$Dl.wo;w2Zm_R΀s S50hc` ĉfr!gv, "gĂљFucB%$JJG)rжd'N,="fϽ滲Qp*",vxW]y띋 8oHrG{(!^x. Ǫժ4u ezήLX"+ Vnz 672ŹcRP.2Kfa bqi d~.7߃܉۔t~~n\xЪs׉[j]6r1[B; ɽ2a#AqA>(zN{*:_ h3f}ڞ\=DSB]O9 ~򹣪s'#q6NXTӽq|䅢1F:-lpL>K՘33;]wS&ȑP7 :'۩: S-1@@R.Eu@&)Ɨ4t[烏}&ۮ1GLeYOfu n\r.Js+pk:l0_N Kls'II-af>趑;jnx3jf;D ;ZkdqNKI6EH-2jwܥH4K G ;+]ŷ%rի]_۴b|܉s՛8wF<~®Ag2k\&vݬ쾵i4IE8}}1^ 1nym%'TCС]j@a]dKԹkolNclA7>pd@85YAQ4{f N rL@ U2uV}iN)B9Flj:s`qbE˯LQ$,d5TeF+ަ[aeL;UdKӋ!2&fl^ҁ1f&L~ .N$p$AE Lՠ7!D}0} GYOqƋ5l+Xp.3ͪwE)kT=zl>z(JFq1Y-lngL2^^M6'L5ŬҀeM_y);ݎ!rWV(*Z Ro $521X]|q w`bis$7Sm7sDH;V:$&ZIPtr{OϠ?cw(vfkSYnsL2M)k;|ve&>^uR0SYT`Z:(B697?8j.TMZ͂ת]X{jP64LCGMM$]_G)!!Ph|H ]˿TdM2>VdĪ ] Nt xSkZkCm(({K2ϹÓub IDAT YϡAz^c?z#ycZ<_q߉EMBI2ueMJɢb2;57H5Yř4۸gZP?ݙЯ%anZ~!I93?[tbT}es$wwv~瓅sxKH.0CnCA7c㑇 ITXӮv\g:/sl-n2&Ad;8UrI#N fs씜QZEh<$4]csl{&BNtje:o^H-SÝ45Q؎v(Ί`1,B,e]LM_N"n ;䪶'ى/ى☄i#wd0u zt9uYػrMGDBՐ#pVD"2q1 u`vԘՍSj _:ITm |oٰAQsiX Dxr"1AtQflYH=δm|H~1zj/>z76Ch;joC6hSl;Ef4*/:d(\連=`0!wb&N `25N[*ӟHo[&a#@j m7B#-7#Bc5N$/"&+V<ݖZsrc`*ҍ`;68Dpь%R_oC:VҩT$k9r_^/?vƘ!4!Tx$ipjۙ#r T!XqwGoz/n"! ShnJe3Q8Hs+TF\`\Dp %ݟ6Hc˦Ν; # nyǸ?>౓'ONP7x)~+taKJniMPAd,&cwݬxr;[u͹Ȩoɟ_y}g~&/U3p5Iy9rQwGK/cA!w!wuQ^|C`_o]uB  8/[鐬&6;]1RƸըy.{Ecuj1t88 2P(sA\4x4hOwoo.nJ].|i܅La5Mt2>J}lbrI ;RF5,$R- uC:GGONw1֩446QL+OUhuncuW|kQZ/MV՚OXi*^y'IL%$V.zf4­::ۛ}or zAj+=ύrΤV$t:N9s|zZm>n&R^w#쟟iYEg:ejGxLKU}qt=/KĐWnި FO1]5n <&)v+ cv'jZ<&x].Q!c%q^: }sf&UC5-xk^YDPI%Lt.od)cqȝT^chЪK^*A^71,efNGFm1PSհ[koSrzRUc]Y\׉Pj+MJMoz89coZz8uHXB3 F8]as{o.QƵ=erl:fN &i$2J-]A-1Ԍh=:wY߇ZU|6v:qT$6ħxuI!]sNݴm ]M;1q0'z}W˄-䎌 k mٵZi +լ/a 8&[BR"Cǫ)KDLdՙ bM?=ΝzV*IjZ צTB H CR:n;8w-Gݟ*rwc)#QZ:N^8j@C!]2do^8BӾ~ׄO!2yl4jMZL~=E xO{hk^D>OӧOC0z>}qZXo}_M<*jOT0~+O A?D5qx7\B%ZJ_soÙ lj#;Y?ϖACGO[Ny@im`!$m"=:prd6h/60 SV/C BXn9A)r! ð/}SI0]۩?# l=YϽx뫜U}}&onn0ȟ<ٷ~;Ь,UA_iM3u@ZÅaپ^_Gݭ Q-hJwC@ r(p 3h"bv1 yKNKf9z ߅+e1$5~nr( VqQh?R3CjZVA0˗*"no~oʹrG}|8kνC'aF0M˽6g?8eRQ&(kܱhHuӛ"]FORo6(YTk1Z D,Q?z,;$Q -0|75$#a\2pww,ӏ ډ PvZ&o!NP4p?K/z1o0LABfkN bj!4wϿFd:M:i2>.jR:Ș7Zִ.,Y@(8sH Jp$ o'}l~1z|hgg;LB܁‘w">,iln_?QH@>K8wB'(7o4ȸU4oGnOeLdMF"ih:~64+΄FdtP8E*r8+[#w&s|ѿddzP} y`j" 3#wz,$NZSCgbi\}C]sx:sGOH͐q뵪¹sUbnc[D&+FsG¼;pXl!wѤURA``X'NUf1s ZqJs%R: ]G f.שAʥD&?K *ۏ=nZKؚsW]FvQl+ u=_zj,Mk!Hj!Ս>+zy<ȓH,-.by䩌9_-7.驑z'뇮nmBsg>o(3v6LhC˛ob$+5uC_A^֜a }Ё`*/IoALz_;F<6# r]2dk}Q-];l 1?]. ;=_ש!Pߊ.ydc5>|h1Rea5t6Aζ;xCDz ~8wVԹ#w ~]lށ[񊐻T*J-:w|oi׌˱@] ıQfپ{@lo`AZ: `10o1nTwz|m wb`ۮڥwH yr3A @/[[MRy}CwnOҴiR-?zB?N~UaJ3:P}`2 [[ rc3H,CYfW.1Lcbm%@h]RD}pbqqaiDwr~nM|P]qp9 딜r}gGlגI-.(LZp:VJTNp|uypȝå3HZm*[H~uk8M1bgw[M9eWkF Qn:37rs7N)OdRdӾkGjrƶ|]H<8&$y CҶ"O&OԺSG %rtaraQP>+rr>v;-IZ5>;9K5G;u!wqxc.LhwԢ}(hȽn٢l0iDLاL]sn:>z!,"PGCHV$dAԹÓy8;;/~"gU%0#kJ{9wnG.sơX^ƓRN:w`/@P˔t"~>}_n%gTFfX̔Ђ) PQ,;eOZ,h 5 T,t}ߜ;\4_?;sߙ/<&.Zd}}@ߠVoz]!no(Ԍ(SK(ܣ:02-+[g2~׹7ν֧>KW- B믽N`?zݍ?ywO0s(1>05*%1̈KSaWk4I-:j2H7]3NrL8{_ww&'z>j?EBQavdp;5#(GdD9Az9lR!?IZzZ,μ9PA1vi m_x|bD"^y[ք כoe߻ ib'N9w:gdH]u}虙Q˼nE՚Ba'3?ׂAC?mlGT*?ZNknE]o>SvZ,E64}ȝ O7ͷA9F.mù*uXhxЃ?cLD`A8zz>[A'&*!w™r7?pN]lTlvP"*eڏL8we½ȝ L^@R5&J49Pȝשe1z|.L2(s¥KA78DӜf!'[v8{c+&6 Rph՛t;4N(v r7.7M;.q?])V]uQ,t^!a^Kefg}za`CWݹ#.Rvs1yDtj{Yj wVB8WaeKi XecT$; BEdr`4xZ=v2Zd:QgҶNN9wDxsqZ $ʘtC*fpD0De,5C@\ 0sÄzıjg;ȂYQ?댕G|D4 \.FL7aW7s%r 'ku{RkqL7Aw zzek֚109zX#\J6[ʁ~/ry#N:>~@z,2iM)_!aE<&Ӓ NqC S T#NFUBJ1i/iL;P!w_AnET iRfT+m6zXo"Mam &D *`d=eE'N" f+]J_]0-j-ll k^@i.aN@)X=p 5o3PwFbv$xp(8 )2.ۮ, \zP޹ic/ nqNMmt@tfsqTɎ@#1h(့VnZZ9xk`/.[zyƣofqL7+u.ueUsIftCtRijt'~| w> z'Id8wcIOm EE>~d,iǹKD(<r𨴻x=rscRQͨ91.$E Ǯs([Lr补r7[F~yj|4K{!w4bYcJDX5Eg$IXE|U @sHY~g>Odqدpm7S4SHW+_WdZx?AiQ)\rmnlw4;\z(m M?XL 9s8o>tȅ )P;:0n%ߦrřK0딀wW Νԭ߷Y\ __O, @EO:AwL0k)YiߙAKH5)JGYiw1W>w.YyJj]ù:>ElZAAxw) ȷ[,yM /]GBh ql|f!Z3 qĂ@vX =9wB[; ggDϟ70{?xQO;"2E} /ύj JEoY=^\V Ν†UHz@k ߏ49,VwQ2ИUv_ǘVSm%zNuTXX*U[!w{XsGf'SO]$i&]]V:!ȅj,zji^~MFKq uyjt1|(:]mWH3~;u~icVͭKeRXK%݉}B$'.fCR!w#QM!ud\WP!#E=Uw"ѸM-Wx>;~n`о d9:Lw2܇e7Ͻ)iº>yQJzbR*:c; ʶR2 הB| E#wf_F(Ԏ 7X(S&U+_(GϮƅNuĹ˫N&yc oP) +oU6B+6I1z/rG<Ə)_ĉΉGDGBI腱Zt%7 r'Ν;6mCd!gE;6x(HU.ɽZ v%N}|r^-uIOrMXD7Cvm09 GLP05^MwScek63#bL$+#zQ~\[n [vXZfiMc߲@N?G?AŭK '+t(6~G2!>x|Ȉx4p>e%+|P1 BF|33;بWL΋DcDjSoz]T@J (/T%@.E 0}ā U|MUV40&St]-eO QvYkG` ]3 ŤTNf;N78Am!wt|P? mZB-3=5ul3+8z97%<󢯁64l3c^*] _cB).1VV$d;߱3X"C 0Pp P;;#Zͅ3b;u.T c|ԬQJ ~LmaT"McN\z,cf1&74KY@ˊsGٮ6@׹C-sn&_ݳ^o5)< m!w Q kWŤtD|'ɗgf@+Ν;d NDFM ӈ$bgZpgA %>@{6u9C1nFF-3MQns_HTO/Es4ahɤe%Ȍfeԉx}]N4O<,6sZcE]09#O(wt{wf-U YUg??v줿YIQ5ny:{ VZ~bZZf1Y.WKFKO.;RrIcr89DIZL;77|w(CcQ{@gEb]eS)*FZk[G,ZJ:  ?tN;0Թӎr#ЎchBLo{ݴ5nu;?vO3ݮZZО:L+_[|_qYs4z7AQ``:wRАCz_ H]O1Y"#c#rǑ"ժqL:? ~]\\<;D13n>;_G ˦()Xgy 1'O'f* j >ʂ]n8G.pI3y&nK7?կ)Lמgѯg>쳨j6d2ղ&h9փG6XqD-KtuE)n;DH8i; <^?sTl?gO9 "bt҂yP" FPšCs Wᐁřu'L-mo.-Ve/\xɓ'u &޴s90T]BQ2uN_:RkO-j/8,qkDoX-T$:YkraH]_T^ 3),5B 72<7N򎼯͛k83beI+kw$u aX~ XcH ^A$93#32"OTVWuW7 4;y^IP`xvbr*Ĺ)6s'䎍/hB;;-J5d{3p6 p :rd`<%h_Ol>rL/Ķ12'Էu:KT9 fJ[5D&q)m; /%,JrzoJPt s{4= GR) ͕+; Ba{j:x.w޻'Hw ٥2T-^@2,3 Ӻ0c/MXt8 4z'tywi9ww~WktbJz/0܁~Tbr۴*gF_Z\Yi4pPA:w 'b!Lk8]T7A&y50&\:s8I6 m_Ji9[ǶZv;cKqB]3#ٓ*,0m2#3L w3)1=b=t v/1 $SW2O\(<\=ϐv. NU#T;qC;gv2j멷`fr3GZZ2b(sYiG-zW7CRJv:-8{t]AΝ)Qd6a@Aaj%pXlU 2ҏc ,:tD0SI;V8];}]V\0Q,#Ν~AùvN8iVqBs1&7l5F;zވ1QWWO۱daR7eR.L|>^;J-T&Uqc@KI 'xMjvkL}iz] ]qz+y(J1t80sljƮA۵Jà MFH,!hEH$2t) 3jLk^p¨r[[;퍍8wrAf܊sGNĹ#,=VDa52^]3$AL>odA)g\n)5A %:Mww=յ(T2 ajsdZv/S*η \HxnmOO?Sumcx;h%Sp|a>hioBtI*AE X`!.ܚ4]|ZELVh!HΏf$CbY9y= {a>a*C4_n`vBq J)sO-ss5J)?q:5oҷXN$Ҟ1c`3䎠a2ps`_#XST{iSuZ=n1Ӗ)>DMd{Nm9M\5-ŹPgZc. s~`1rAխ{TЭ1uĽpj,;S} w3Ή^=켲۳lah6Vgjtgnat:-]%lqΨe~]ewk;y1]n⫑( mT3Aw4 ӌ2_=!O^ % Tk KLcKKr73Sf=ӡPj.a#`Fn`~Fuۭw6/ө2?q.$uު%zAx]b"C&,GcX/JJ-.6/@jkwҡa~2XT9 f*;vl#py^玤 7Ät9)= w2CҀbbeMbB*KRTB)rY Q!GS$-Ux6\U-Lun$m|JczSf'r3jf-rW{rwDX 襻L7rwcJT>-Pwa|[v& ԑ|ǾsKٞGAڐBO ..9'ۮ`-gԴ"x8}49Qۇ^esf̙~ss'ٿC~8?!ϯ\V=kOm3&dYd{Yb2bSna|Hƒދ v+'Y|KC?rqee%t5T|tj˙T}rTmU Nd$=T6kx4چ`rϱz|Bjv2{靝o?/AR H9i4^{mx…J8XC!I{# ahP9nCaىdd'etΐK$+sCLFjl&_dsKrB@Y/// .,,O3B/6&'Iw03< Fy4^aVgtmUj]w{6PPYLV \^(ZTl)5mÕң>zh;xd! 6.lV;.\ \]wO@3Z ! Fٛ? Zjګ w&]cgw[ rA)dd[Zis.Om8)]+F 5`_=śyOل,5qA|t"ZQ;rs'.b _z6xe ұɋckęKp{&(]7nt;Hҷ%˸l/^wM)!c 0mC=Fʻ6ax⣻ܙCdIΈ,.X:$N~)jC& ^dunZ+"ww }=I"t: Q&\6Q 2hτG?f(48FgJ*QQ;ڵvrnjǥ*#e KTQȝF p`ݙg3S՛̓ZNDGU]8wjeē MJOTtx :v/]:\z`hwX,fX3hevpg!:27 xtJ&}-*!J^B&2u<@8c5`dLTHR_ z^nۀpDSJ!J'Ocs!2qǎF\PyuM˂"Mpe8w`/ac.wvEjF*ſJ;8e z$LP3PwquRl3<(GpSYi`wݜ)+a"Up-9gh@:Z=#&NVwsFUQB4cci']v5vwb B!$缪:oD-ʘf:ޢ^?rHI_(ίzS ^Ky<#gkjjXR#S{FG}JPm%|rXA /+)LuP ^Js7(zrĹKFe p#;b5Hu"w&~bg<&=~2=OvbP wFrs^‘RF;:vF2u_Px.:ĥu돇js2 .5?!`(iu7{(.B;"JyP䚍.:Q~4F v3 f4wIo7޿#䎓 - F$ ,֜.#38vGĉCs|aDph}fNK V j^(8F3?Rq3ߕZ&Id>lř46:DkhdODڞD)^M;8w$Yc+yX)M1KQumYz2glTS p8P+"#B!CQόY~̜Jx4+qEqzvN.2;)161rG) wBO ˞GNHMÍrx4RN )çOCeyqw˗Sɤ2 r0;PTq_Nwo~ +Q@S|z5a/BʚxkBf'ܕ7~%wSȇ?F(aQ+"wlcR{ƈnV{/]9r`;j$27lU7Ⓝq8O-Tu>18wL8%avnw4|D6 rB@y12 IDATܽi 9whT{(, !iKz$.2&Eٌ׫PI9ӭTi%M+Mfj乫̀iAaPwp7|tȹc0*e^UӤVk$J#ybM\/WhmjwQ˴bSRjvvٖcws rI ,=hv 5bKg{;  E-KtZr N&LJ6 I/J 5vBHcKN9iBْ1M;Q<9wL 7eb0lE@qYޱ8:ĘŽx# k 4(%Q.wygws/%Ihn1iC,:Vj$DmhD>=X< Xx7^_Co~34(-prCv*xd~\>o˺] JG6p/I"tw0+]pG:Va<(?R{>ҫG^ڑSƥ:`'$<*N%mftie_Ȱҟ˺n 8d"{%N</ kF{M[Xtj o ܥX&kGdğ oJP`Rno4jwO乛oeJVݡ)TsG-% _Dz3':tfO `1L#˼[Лnb!"!M3l225zҡQ> l/E̡SM'GksJp >x8Jk8jlt3k ;ID"ght;Y5yn!B9%#"Um5æZ+3jMWx7*CTL_U]qvΈp#rLsDÜ.FxDChXbMt|DV.|o3s= $ϙXWnc~t ,xi @ӟ_<#G*mF1P jPy9 2mz[|,J"1х)8Hsk0̔2P0>%{ U/CX! 룔'Uh׉#Q)ͩ:JD7(Bdh:!s5S8$WHj,`RZj&eyPYk d zl4¤e`hsF_v]ڹ紼۪ )rG'2#E+;B0$k݇A]o ۈ|ra O:Y*MU:^юŭ}NsmǛtr$3mfǂ%P"U=Ytޙ ̂tLL^^Q$]C-ޝrrqrF53;[#0\JXZ׹;j>M;Fwo@8?H yk9[bك: ;a15:i24}N2zqZ rm="wV䮞yߡJtc3u{Fbc2ne:C53UB.@BSCy{|i|rz9h^f"Qj4>f)VבPf1lqZ.\:FWv},{ha%2ALjUtE3jIh8&༾hS;t,*+yn2uM+ߟ]7rfDɨe^+b#Ns&3,Ġ8ص'  e8Fγܶf:R;uny3}rG^skG`mtDLSlew2՝9v1%}b.GjYǪ\"lXR{#RA>Ԗ rתRv8^]!Ҥ:YRl*拭Z6)8YcvS䎈NpӇoj)r'L:"ˊ jO ?SN /F ?M v1_pTJ:@nU2~t[J NCs|'*/8wGT(5п"q䃟n}.'o_EA3+NܑT7sϸ}x,I2p&<*P[]>3\7ϞY}[Vdmm-,YZZ0 YJEt=~J;!w?O/~L_vg[ gTar&J,q$LWlW:U y򌻟8rG Φ!\|Y" QoJzw6,Ց2Z#VE j~pX/W&ZL2̌/͑Z>;|rQ 3xD? wɥk wjz!@-呁 (Sv6dd*-ٓՕcӬG䈁+2@֣C!^lO6AP\; Eʦȝ^* E`$:R{^ڙZfR'W~= wT#O{ɏ߼j1Tr_\43|rA&gmwf(FO>;=X>^G{ zal7?trs,lٝFJuy\1;A7ܱi# `e-JK:/B3D)a$d8@xOm#bS띳O&^O)nE;8_P3<֐콬5_3ȝ )I"9ԤZ8!gh~Dřq0pZb~ʹ3mNdkTqA׷{^? EV)PrרMl(E[ t ޙvP4cԨ@(1;\pVNs+'}ΝOec҈bXqj~MT4dְDrh͍ݑ";.<:At^ dyd$B0^ϑ6 x#9;F/ !PI m9``!w8a/xࡹ(X t` VwSpuJ)Ո{sKG"w)#2I$b %YZUBƣ0 DžɓxNܣ?gݰw|+5u>@#`r[9N]"wvwam9!L$=S]_^c* M%CP!^ ڷSj6yʊC飰u}SΔ(_`ǹD<|H_qCt>3Sh94C~p4ZH)m'>-T ", Q,_ChHZ]¼J٪6׷W׶ ‡LcB .rrkS:%4OpMBxw`^L ;܃xv8..z+l=hɌy{u0еw㻱Xm#41D f:f{ql"ϣ(Ʌ# rGAI[rl1`BOɌ& Tw.$KiE5iKlٛ ;l7O!{L?uS;Πv7\Z`6yڠvBA~8.M$U-vn=O4K=玈XD(7lWLY Tѽ_ڟl?u:kÒm}mC޵lqs8wS9w|?4iJXİcjtjhxӤRPcq%YP C乳P`0mTt]%bzfz"~ @* Ԁқ*Ep袴m Iݟ\?vRzwD]Ni SwmsӫŅu&>inR-]+f7ݮMҶk7ȎY& ~'2kgS=NwJ;z:k< &>رbíNޜA7۽ZD% R3âD'N{{'jT,L8w wqL#wڀŔnu;t$LaH頖I'mOT-VZ1!w E)3ܥI4n_-3CX;Uțn}n;C!cdLC[ :< #VB[ǞϵWf c0pp@4ï~.CD'_ w77m~.;b@skk??ʭ7-15qX,ie?u*kYK/0t !;z<]w 4c+!Z LVfT/׾Gcd7P!wŢsDڱg}6"??x!O[F̔ ޽;4 =pni8w 3)T.m.e2s~F yu!67 w.R }#0{x㉆q 3$9cdrQ!e ?yP%?#*1G끷~BN" $刌g'6ZE1Y#'$J.7 8e[DܩahlrTepb|JF X#/wj:ZBvo`qu8ځڕۗs[Bb{&_lSY$8wBXX&IзP&sp\hحjOLFa$l{hGe) ęj TzlXSh^z!r")_ιgxIFvRU7"6uƎ;moT4U+䎫 W"̐s +=wzxrg2 M+N+++L&c ȝ0&!w9m +A#>r'Gp()cjT;p@,D~>XUш*;Dn{ssez=9nD#֯&N/*,-/ CnTbt:1\G;C UsIg1%T:vܤs维Vv'-.k7Hljڝv"VU`CH wr_e"!_o1S q:mUF=t&3qneXsd1s/;_y>XH6 \v9Գ?FOv.faH&U0 9r|Hd otۜ2gXa#_$!H4q H`?U8Ow /l6B$M}!jrj<r1|RUU2N?tdЉ\)\hJ(ε=^HpRҁԀևNH-5rrr*[;2vJbzI!S{ A/Zfh+SC-sL9mXT)m3S+Νiv_-#f&J-sdv;`m7ifH2`rp u0h jdOQD&ɖNeS2 лI%}JmqiqU˼s7C#ڄZׯy\5Eĺ1~FY.m PBq bK(h`2qX*n۾j=49n !WS~! y屽*lR LTȴf&Y=P`42ƑX0Q'D*m.?3k L2=ܡ( Ӆsgw=1578rh9TF6j7"wFqn),u QȝI2QwEyr5LF D&zB;HMߞm(q?܃_ w -:>yFu:N}2Uج,CD~rcqQw! $>ȝAO_N2wzO]fOswȇr0udomlַ#H-/l?puR廐p!wC ^{M(. X8 Z! |^.7_Je<34l:"ĺUQ2RG"¬ks*0 l?w{=ܑ\bWt:dM fZ d͸ 6åfkP"jH/Np(΀L1TH_2\%[!w|GD&akawWc;5 NV!FSxoMj7I#t .%ȝ`DRx8Kxswrgf"Zn\߮HI#nad:pSBI,Bqٙ+l'q*y_:h4ϝ"~5c 9[!w-oP\ďN5?w&$~$Bһȸd1K =ޅ*P F ySNnwQqBn&ݐzL镆v5rg]a\}gw;ɾkuFj1\&Ư`c%]cǝ]0bX-S'pIrf|ȸiJj0|7Ź/>x5:8jf6:%"aRRp wOzG]f[۪=E$,C ;+E0w %o"}/xgٳDW n٫~.*ʩʩ@Mr$M-;&U)fԡw aP(%\8~"9bFjwM9w.9q#4põW6ܝ-h߈qu3 7^izlnl~ ynܙFL@"&zP#֐ʟk3FR ,'N $z/}+MePД[}R_/C HMb1 mjgM ,1Ip9wDB81r3xX%aXM}Z5f+^%cåglKt~y\v36mm\3O%zi$'sXH* SzPnU$ ۝лSL{SAZ;p%)ܱ.ś?ȝB(Lj^4Mdh-!>7ȝV[2pz|MKN@(Csn^k,1ɜ]=K%rZ̅U`a`g}s7wsVWSg6r$k3Ϝs'G]ڥK=vxϿ/ Vh5G>5#i ^ݹsODIx7l "ywcܹGf2yһB4DX1jijlm!rG3㳤LqҹrKl]+N:i ?>rʵkWpyl$Bj%̩7Osٵf/_J1O>౥oz6.E uˆE"wGO7r3?^^^^)*:OAx뽫z+ uY lэJ5ۓkkut.oO5`?jJDrL7ː92q0OXjvx/|eg^6E6@ 丌[2)y:(֚ t$!tc{eͼ7~1z{+Xi8(AX9d.y!($)ctlk;J5)2XzJ5.r' mM+c?egKZIؚPcEB(G;׋ -ixg.z*5(3^f9pՃ`$䳛ۃwy[FSU䥗{DAB^1 Sl49G;5+Umt6&)uzŝrS~#eF½ae;I&:sn/?܉T=Sp= 9wr'B< +~ש\9wJs']mw\``OsJaS#u1/zJ6EsW'/B!yv#;!vdfHfy$Uzg*e r|}#wǹkf7ʛ۩jaۭ;x}n$W9q۵Qv 7E-gP,:B4r@ܨ9ܑg9sjJ6c6vtQώ8Of;e.bIk0 z#12$S];?St7Nj_z%]?ArKx&Ind T#$H;諷ZQscԱ] 8\ L\{^;q"{uk˞Kf j+2Y:88uj5Ԭ՚T@wdy(џ# e(Y|^,:p;ؑFFi@bЏSzp_<:+4$ g6keM 롉K%&7o5ܲtxڨ<қg/\xs6䭙cOm~i"w\㷺"uÉD gXk,QxWf 99;џӊ Pj:Pp9uX~W7/foe`m>II)y̙3__=ܗH7w6rDaf,/,RYeEpM9rBm:e ٓrBwϝ={6C$.7wdޛSnFqG)[;LƚOsG?ӑ9|V h?]LxEVp]Xy:vf9y0h*ec&TS+')N7~7g{qRw ﭙg^\hkgv/£|.z82?$Ҩe''繛@:=uܛLad2qbˑ6h2AeLc0Q5 ]}ū5!<\,>"6er0+;H@ +ny\l .+rcVR mq|_]2iNͭ+k[N֠ҍ Lm8B1,3^"J&b!܌UO-T[.]Y|xx0#:x@I 3_ + '=5oR}ϊ;.?y Fg09wߞDs!O9o>zZih&[qO?cs ũ{)W7Kg؉RねFCZ=]B'w\8T^9٭/Rrp|5Mm;ۍllVoBLYQj(m ө8$qx$rG[VTt,=4 Zg[bR*ϝvUt]t|7zn:o w1D('4\bz& -Ȧ\c"}N S^Qdk9!wG"wN2uSjk5HJUcXBlm~? xFн)N6ak|WD8)<(NAw .:yE{uFx h{s4Nhcc`kC;;6L#QDT}A5{v'qOȝPwipL~Q@/iܽalgۯ \T05QƼ{CX=_ZpZ5P]8PآhyT q rwgC]/2|u,xU8U(`oer!wFgxŏ)1R c@R.l\ pr'sRլi҅r5!ڡK>s]VU8,~Di/$եAѹba皨mdt{S+uT85Zσsi5r@1VߝcDB(A긯 Sߨ H#w?ӻٹiO/ir.{CgN}iʀ&T;4俴Zܹ)\t [\Aܝk{ȁ*W=&!ɇ5Ҧ-*n;P^!3~{:81Ê(f& ' <~A[5z7״rj^|zްG#Hm$A0l syA,DbɨSuR9̡dv$fPOM@(rH~iU.+ !g7FVx';NXdm [\Au &'# ó"(sj׍Ti|ﵽ12t-˵Ĺ2r _֟1m)G[1+o^細N: IDATR\A.C9wH}\u? :WV̜o}?s[`Oz~ El&|6 Z1ztK,J.&%!Lfōшs 0$cR$Д&kJa 'hlG+慭v^7幓ӋaWқ[0@/a_%9cp3R *ϞM:5 UDWN?~bR({)rwOK&RonI0~,] ES.! k# i!{.N-TsН w:_Oܽi hkn8hi$2CJ۱ sDKMvpi)?rud&ϝT\=N,fr״mլ&IcժY =]4 < zTPNeR!w],.:?LI ۶mZq!wݮ¹kibڒ>r#L<^*[uCA"C>;;3CX_s_տ=}ZK>}nǟ'@.=rGO_gb?`_/^d5c;VS..NX,lofRkkح;B>jbEp.)6|B)_ϗ[Wdnp'?S䎥00bۍO=RB`o'/4@U;hiwEHgq3bX,S鈁O"z[>-,ہRSȫ H5zd 9"3q*cڛ'?MJsݡ)TXS(z\6s 8Hw]Z/yJlF|F)x7.Q~$PYgɯ՛gwy[ KT$Cm9w]ܮ8OsW7}.D;qÍ`c/snIۥ6e|ùsC3!SJǴi JF!T'&o]}6>YQ"hF *fH/})HsG }M)Zo^2K!"(\߫>-0JVM];e)V{,S wV43U+[ C.td%J8mU3{ {2zİQ?Ԅ aZ3)~R`jdo3}(\)|QxiZ*Fg[kpΕ#~(' XwvP0TtcǏ/wxlwb~KEniKMq5A+Fd)ѣ2!"r'Fhդ«D{ign_j9{V#LhxJ3;;ÂeNHM2춁,ieY\rH_Bhk 7q[agKDܱdr6o%1]Rys之{ (ġ6Q;x&DI:3Ng.کdj>>EsZ)*HSO78h-Dt`O@*͹=z`PG!wr-R2bL*7>SJ wVF)~L%mUUb̊.QBsSЂ л["wvʸ!a=rs2-VEas([ӽmIiܡlٰ``\Mz$jԮG?+8L}»PuUuUwؤjF$Έ҄Ԛ]mpW!mÆaw3TDh63FH("5CC6E7޼wDPUjLw?~|ep=!IOk"[1˾L4wFN[LAUƛ|00T~s<'j¹B$*2S[X'Dkp1Q8ntx [ڕn@]A/޷#wpr-3 dFR]dk=HqE(m(x[ǹx}KzEQ;<,m9_߂ eP\>G-l[^FCXl(722Z M߱'}Ou]l( __Nȁ-玮rssw+']nv)#Yx|বow{FPa/X,6>S,= bcù C1NW/ˬ紥7ȹ#|C8b&|G?Yo} "JnϞ#}0/KMݫ߰0.Yqx!vstCcV]NƆ1s||qjK8&>sC лaJz>t#SF$ ǏHYg~sT}W^>U(uCsr~ ;h]y3LH&"nD V*^,|2==c{_bxmad-季 DC Knt [Q-2,hGa{JW,K+JqĽ_^^#$v>r'"@! jrX rDZW=:t|/)3-hh(M'Z9y)nR׉X GWMOᆘUU9wZfgz%`ed񄴂:Hnu9 "nMCR>n8R9?;553f쭮&R2ƹi VvRV7VGS(V5Sr8_%|<ĕw[Ϧ'uX?s#UH=#w@jʼ;JΨ7' S-"m͹b2zN_rݟ 7acddL!wu8_ݻZp.]M\bX# b ֿ7? ϡd㱕@ilI?399(}TGԹ[Yˏe+2WFYD# hc`JbZ,eGBo " [˛WL^^qیvF;Ơ7%/7:ݥ\~=p|T1^JpL.A<#"#!_ Yp C݄n?gcPќ)ʑZ O:ZXAzt'Ln;Tr-!hz*z# A<.cVr7ܕei@zf2,CCtL:X׵HUs;pPu89%jor'Z+]µSjT ߌƆcUʍLb!4{Dw\Q]Ek :?q#Fݦ%+Zkr,9/A7; [Լu%!.o-_ڗ՜9_ȹ3$$5_"HԾzRȝԹrG=/1!E|!c CS-&/soF0XCĂ|r“Ic{(p<2^qvvF]1ǹc<.[3zS1^2 G4_T2(e8tjuG6-5`{Ӥ(3h# w܌!wTf;Nu%)~r'>3Rze\1ȝ!VV;#wø2W Eu 4hMrGdVsN{0XG\6^ZZ\|ݝёw zP; Jkެ5uZ+^ ȝjߧ.[MnLh.yfG9LXm=ODޠ2M@B]#c\ҥs> hMj狝I["wFj5Eǁ7y%^WV.k{m*Z7"&*0Yr>GAr}e ,QfLڱ%qE`)aMSa{e#Fi%׭;r/b$ Fw]$D7׹PqީnX&`!rb0"5 <E* sGP6oni3Je|a+חI^1^ɴJ?jP8]-sSli\~lpmpggRw_9U"K8YI9.Zdc]L5 b[.%beӣc2wʹx =Br1˯{%ÔÁ"}dk,f 0Zb󓓓A^F@}!w:wKő]oT˅j!WpvȈұh6FBfv299y`з}۩sb<0LmR]bOS8+kumhڦzBO';q8(Tld}~_ on]r1_~ȝ>eVP,W~ZA3ms [IqPڮcp-ޅ*zݪА;֡!.Bd 7;<9wAZ"a[N;gS)fF^T_-`Ktpv'?l+,<O9w:w"֫s'3n}c rx rE#ݴoHSN.|k% lyv9rą/\{}3fuc)$]x(8"?ᗈ|~g؄5h꾮B7^K?/~ߗݧC,Wb4ǰ~1ƗJK)ks pʶ-^:N$s8{Ҫks -ძk><rǞc3~_h xky饗r7/;}NƯ>2wN. 顡!c3OJ&W~\@"X4u;VΝq9OɉGrbWȝh*P\b-Fo%{rePǟFB}s)"ڣK8!St#q(q8G]bjn Cz?`k$d&A]G:y݊mx<7;y\_ep:]=qeIs1 $BP ̈lKU}>MGAUЍY8g9Vmr[uO fQ}&t,zo;a\cW(D纱[]l0Z.R-Ssssa4e=K-ޏ8 *[֞0[a&2e|J)P9{]TTtGq% Ƙ8ASsP%m1 䮤q+Njy5 o.FwJBVN5޽3m}䮍(iv=b( i~@Q9N읶¨ #ų tv_9b#G5nR&qqd: 1{sʥf łEg)N`>tnH)M!br}zvx * wjs\AȌinjj2 Ort}'(9/n]  p:++ˋ^v7NϨ57ԶP=Rm+Iiy5:%ښj5ueU֬H`$0{\I-X]F9T7w(VIM&gڄᲴ5?tWuWN^M8wҢΙ֙ZQ*1_׻8w >w|148c2W}bWFIbepjhkNLL8EB0:w9wBaqlD"#b.WꆶԟÔ#rO/nT;Si74JUYL'@:E d -q7hCo|zo\N'utJ%uƩզb0;$6G' yLJ ,EeQDB]m>~_Xe`s1U;k„s oY51>"$K~?R &kkʱȐej2saWΪVvJ;u0 #wҤINtQ  Qpv>4LAIN=$׸q.;GqcS7j;ՂHC Q%)e',.KaZ8X&YM rx rE# C6·rqλIׯDE˳W.&yQֹ w$;Nrq(mFÿw{]X s E>cöɅW9Vc+S$cv;ݖ8w"YԤkoPWԳS6ZәB(q< V[,.\m˵#!b8*AD e~ٔ*نܺE,f׫4h5fqoIK? { %Ҥi9<'.ɑL nCc{r4y7.뤾uD-ʃܹ<.O.SybpiwZɐv!zJ8N]]|^ѳ̰[=3hr 4-O.7i w7mNn);@"]YLIZt{QH$A˱0Wi*"dٳ:Өm>OkqT9wŊ }78wl~jj19ѳRIVb$x3rg$6ݧ,R5Mtֱ:w2;u_X9EsuIYZq`P:IB}Q߬?߄WCkTbX)8*Nb-TJvgp;ndd#Z<Q58q'p,LMGђ+#5IQ$nesZȡC1Bq啵d@āu]fX|0[$<2IG0,,ѱA-}Q{ԔW|Mn6?ߗ,Md"gϾwӿ561~;n@$A(juB+rvl6#w,1Iя~pjjjX][K?)R2-1@p9ۖ89_||'2߶Cx} ;%ϝ{~jvnn266f܅o=S Ñh2# -Zr%9yOQ"eeɵߠLh;aC[ Ĉ>64-,PsG{gsOr=pTd GnWˤ}o7 u{ӻf:1kX3yK"$SiO=C]WNoXR>H8sK/<LApJld6ӟ?yg#vX wuAh a|T}H{ӓHΝV> rG {:w챞:[IU*\ZbVRQ%2uMkD΋(efj=pnHCזS5~SC)8ANGcusuP»acFFW҅$QI?Vl+ד29v1a^ΟL9݆ܱ捴G.4IMk@Zf*Sh7.WCqF$.guY$BRlJ*IF.,db|-ڇQ {;!3 ;e\jeI'_Q򕏾oR~ge<E6{VCkT6Vu2Ʃ@!wd2RE݆b9h(B#.uQrǺEoOf*#)[0S);9ró(.Ԛ(`񭗠s¯sCΝ LW8wwB]`F\{4w!PdLnbOs[ w]Cэ}(9zv_6; M:3Uw&*vbR7ҍA k^+B($xM!_B0\V@f~T@8 WŨMv% G"S=@nBdlWaq\=W5BNfE"?kYF+53B *DeBqnᦴjnF*, mGx+:v%D Lnŧ.i8>k{cB8W}N|. +#-fLaߴ]V i:Tjdޫ*K[8zU|ʕ|2#' ὎dRE[NT=+ҜJ!JzuVQ'/Il\BXmނ*m6 ogTcQD͖;r{4'hki#T^sGOa61-Cx@b2յmܰ?X<uΝImZ^]Ǫi6Ncl(vI, nI5i]rJ pù!O&:.mƒjm#w${t@=rutFUtQ` @&Y2Ǡ͓:[=CN{x!`Kt?; T_sl$ ,ث.z/2PYf41& yHKk3r0 ad=`:w,^Ƶڈ^Xyqp|E2] յu;h2\9wpPV8wRvE;\w|86Aqk|~3 lNYi^.-)'MU^g6*JzsS+Eå@$n>j+,5z9W,zPr8"#8n0's2t[Ftnu/? C\*6kS4ϓԧf<1E;9&"ƬW,zt0ćG>_5<=kBIވK8wy T4znyUzG$k~sW URn(<]V5 Kz(e( N)r|zLC&· tQN $>a=PuԀ~ܽϹQv97;a w7ʉY;I§l_< I Qp fcgrS}p% oNŸ[?'TnT?IYSnns#Ą7L#42tq3ۿ {_}xcqdGff`yy%Љ}zvԐRk:玥FqX5YtY>{k0r~ɟ̿۽_oC8ܫZ涺^&Թ#oNչs}g^x4 V.w!_F,B'p ;'cawBiK/~?ޭD; i'{O9 N>o|Pݯ>XB(A=K| Ν wZ}E6w<_}'':y' A&/Ns?jRZJw_UbC .M&aJ>?4C&DQXH^8q_E#eQa7fx};W']\t]m9'bOYz!=G*^A.\P+k QvjZZ{p<cRe1zX޿ z"P+)>[zQ;}q$.0]t9)JČJ0 s1~!?x.H99Jx N<[Zwȝa4KKkp}!@yt%ȝ 'ڗzdS'SJ4[cLJ@܉t9;FPhs][-k4;co0 w>ʻ[:uBȰCfPȣT5V9c6*|@e| rZ.WTu+4:j rRvpYPom6]r|\,몬q1fQ˴#Ri>(s'TVn!|[T GLd(d}Oۭ#wbSxlW[׮]v:= e% )ǭ=4z2FJ69wza/Wbrx0rcZqg n/^N9/CV"wd²51zڏիH `tR8wҞr8O}:uOV!!` >zBjP*y|.wgJv>\j@S}qJRc' 8΂ܩE-|3/:# IDATrƮL"5=DAI왢Ҷ}4@(hLP0~EI{Y-ugΝ}In bj>Ćƣ#U3m55Ӂ6Ӕ:w6%\wGTXl=DެtvL͗ wؚ5=W:^_H}-D+.r.NW?sGP Gd &[ͦnj1Ak7B)j$-r'=:qb!wr^$RB{m`a՛XC4D*)YϬ| Ai#h8=#4 ;/eYǦ2E1ђ d;!wa|VXHܳ^f(/GeoJu$m8>c_k58wlnz%rGH4yh>1@F[ P(yOȝd]6]}fBDʥ)f;\!8w2d W=<lL-Et^˵jY쏍%]|dYiC-s3?BmKq+<"AٱV;/#~%Li֫k H,2>>P8w3Gc5=T`^;hQ֛nޕ%HfwSˬ342i.Q$N43l\>gvSe`2㋞NM"YJL$ˣ%܍x}vx;AA@>%"j奫]YZNK/lUs724RP9wvWu*GT5݁Qߤt{Lg}F s'^ wIF@uzԹH27qģdQ">+>TfǢΝZ47!wџ we-TdXmwݗ"w&)_W{2:Kl8wܱsosxblN3屉ǡGSY?uK7ɟ_?גCGIkJE_x3Ld?׏xbU>RNt=/{+_ բnzZx_J&Go@n1rW02qNw'NX[ԴSh fjWr֑;l2x٧N[ZCRjoON9O4Lx9T(jr={@;6kdnw6W?J7hC#U$-1)S<Vfll!Am Caȝs1nz;eJ# w]laTGNbYөq ,L܌tzԶֆ2eU_*3j>hU nn]f.ZiMah)OlܩY?g VKdB )@B?'-+-#E=5Z5ڕwW.n6V5wUqr]"/`FIʱM)5No w)oxZ&MOVVY.y3$FYO֙禍qlF,O<)GG} 7 x^/#XYCCB \+,),]fSr~}ΝԵEԩA8woZBQ:8ȝэ;F%P^hKePMݠ]RǥëcY/ cyg:`1Va'DzU tL?Vn\,;b^fg@.DcMu=]%fUא,eĜcAmZ<$3h)*E-6: \ ^4Iھ aV'sveme&LeqLЎ PRtL4l]'%y+U棧Y w!.@\oLiTzQRivq. JYnA#A/]R( wp8|ãZ+ ?M3R%Qi &R4 K]+]$Z2[Xzcf=NZGe+."UN cY/!>|D9J# ˊ)&7!;L'`l7 FA׹CKHmpB~# bajJ^LU:0np{'I [ɕD-P%9r[#w̋VKRx}|C J\m syev i6H#^V:xցjGܩ FRfj  rt(Z3UM%I$_\tFC;TAeK~#IeƒpD- QB׊PRM^T'V݆MC$;!O\+vFO޽8w2ב;hwF(3 aїlR(J?b}rBɲ\t3 y!M>6; KrXburKN3s),P.tw)Z?h욜,zrGڞF5=?R,LO7ss{S^osSˋxW{?wƦ ;N ?pM;l(1W.ξ/}s333dj?O?r<2DA@72g`8wј6OxB_ʗ#+KW>@8wfS{GPE?G^ x쮩'/\8=A5ԇܡI ہ7֛'LGA KsJӹbG 2r'j&oLfb./ͤ 3ND Gnyz(:vN=>UH;7 *VKST],ZZ8 0"Uζ_,L5:?|Ⱦ Y.Zk) G \D0LbXY9.cC.8DSJ#x0|I +KSWlj{V܍ۏL;>+{r$n T ՕdrmHae+j |%7ıXJTNQeb׬y'AMXRTdy(Td 5;SBnw*#6+a!wKdL4hS%9;B[NGu4[Q)T78f6KgRbGj5uQ("ٲj{'Vg9»#lrZ{ \>yUz.*63ֽB1 7Zl@ߞZXlu0LxDZeˋl9=6Mdg)$#2yY7aMWmAQv)]p7aFv-yaiPB *Mu6֮V[P˄k'[POtٚa¨).rjpeF^4%?v9@z݁MT "jAgQ ]U]o~]e$AQ9y獰QO7 (rsܥڿxH 1#SK,-)Ի>Tdo#o9V92{BmKt:}rim[cz(5\H3QC@bfrٙy&x qdH7fU-"b5 0km-+寳a(& H@2RhVt6D茨 ޸ՂPKpYEO'ShFHӕ)MazK0'@1viAmS7;F\UzPTsH!5Qfvs'@Vې;AB@=@vo~IPrh/<:lԭf 4b|pa 2uy3ZnPqBLEU㰻mV"(_Ժ慴jxUvn֡C*n#Wj-E T->܉h`u!w,B1 yzΉ#L U޴ rg6!ohWԧ&S$xg83`=ԝQ%䤱6_EglHBس;ȝ 3s  E#rsJ}{ ;"ѬvOr v5Μ;~F(ne T9%*DZ W=, 㸋f׺ބjq~*Vywg%b|z-:~8w:w;BX":nr;P#u]o"Wfೡvȝr'ꭢ)?rQVl6+I 3CXN~uEkUV5sfpr%eݾ7$o W3^s!bCy(m[;Q˄rؽkwa$Vzz.Pnj` &X%U#pJVyZK~l('566^ S{Puj`8au f' qHH\>T,"f--ɶxIxT|Vg2̵y LD!=hrE /YjεNNŸDApt@ιzsǞu&F!_-iRiЀ {9CBV\IO|AFQu綧CD&sWVjɣ8w8wZ(햁::Dpgtm VCpCa]|^N8w8!A;^*nQ9AcFZ@t;= A(}u“;JF(;\.[$#P˼r'F mpĹdxԹyEcR.'Ac|O-Z w>rr~ut;0.RhJ%g,=ϫַ~O=zk"ýc<~7IGNޫZA|s]-sx8)M}䎖'-jk_!JOq䔄NH䝈n w)R}__ҾÇ[cϔ 7&"w;xٕ| _:yROz q%RS?N*m;_6|w451ŗD;w,3.5>4ns'g&9&=qQzW,,GGGf.N;ݤ;ܑhjD*=| g=526ǢUfA@ղg6n_vЉKi*TI% sPN7`Bܵݠ…wNLLQr>]>UZf&$C Hr#VKH%C;LX@>,\ym~535Is wݴ:~DA67u tykŊ~!8i!& 0sAc#  bR]3;Kylq|=v7yia8Qm ."sl9w%}"W qBWZ%Ǟ#]%Ӽ>47$)=R~%Pi3*"Hp5Zy\΂&߬t*IB9AtvӵG9At y5,7^B~ܢ[o:d,R0-Qy͆=狍#,zIk,po}&#lb}QAebdFnB (CEjSYy$A$m-TD*4;C Q]!w"DI]:pZxwURvBwt[B} 8e˥+rOiT^AKΝ6!F&R\:"jR PwC>j6jB$dsG淵7=kcz7[$z3uH4F{>0o֕︳~lBﵙ̑~*qTs-wTx5dirU͍R76"-( ,ouofj/\sR)ӱyZ]=Ô:bz&дhˡM!dnv4k .P# d!3+\yN\4ʢI\G~SIHzX2I"X:w]ވ.'*foFdM̎m&VE-sU=㱈Y(,Cq)"7˿ב:|.3;=3UeKnܩÓsV" ?J`"p}`Abĝgrj) 1dUVW/StFU@js,mpvfΝM@` Hx9 Br-_^MS̄ 6P3c Kc3=H)h{qbpO2@L)cE7UK\ӌT*SKҕbl!1#:bBѻr,TցD [ʙ NjDz i5>1#b/˒ڛ.mjA.!g˻~OjPk,gQ'T^my IDATD};1XsFFP9M3]pIu6qL?xsF 9-6$&j;h,2CZ}Ӷωðw#w{񩃩VgtXFp3c_ B %^Mǁ󲬄þD?]7-1!pB<`f$F3), QS~ZRZPU^A+£Ժ+V<]垐;cwh4RW,9W"wBYn@aj3IZx[׹qo͆"2] qD- Q\4䎥6`;A-VB r'7 c߈7ZR@Ӷ RD8.l #ڴ:w)YW)c }W% G`XJ_Oց[<\9vRRX,qT4G`H!w,]*dz/aX,KnALvCQsGJp\PBOr>W$h4Lj5ZQ2'|ap5XizeO;Ź&sɫ՜h؏$w oKKΊ(`ijvPnmIݻ6J!&p+D#p| U>8w~hTr9 8KUGq1w$S@3tA$u.Jժ|H8ccN eY z¹{ jUB؄Z:_H mҨuG1I2@Y2L\m5riҶԭQ ';26^cUv,PL2sX}= T~_Htt\qqk5O P nh8N، rR܅ˡp46xZ̮vΝ?GČԫȝpr"]um)wqn' fmՌ[Ni cWwψZf(wGnN2y0[ZX~Uɡ>u#ח+/u7+sUQ*T_qP `:/fKX`yjع ?{o#YvbȽrں7vv"),iFR!#6`4C6 #[%03)iFE\KYEƾ5⽈߹/#+**$~UKFy{;wsG#0Xr.lՌǃl,%YO(}6({+&=Պz}yمW˔]޼cN>bm% T_/O>(OzfvyZFAGقΌ Ֆ 01~ fL|>Ky5t$bǠIu\LAr+V:ظ^L F>xW@޳w9*1AVfAh;O;Mv`a;Ae!9A.h5 dNTݭQՌmnn [!QO>3x3+c`uAq4KbAOk?^'bb p_ٺY[[P8wHQIuRJfWCTYӛM V $,*Y;EIZi.e wd戀Ln[g [F8SZ""/oԹSȜU/1ĭlq6fg}"?ť9=sΝ2Jӕ wfLG×uCq1EDS'UVCc/FnkY-=o6t8,v6p<ԝjwExbtGb,bxB6\4DNIb<sjS}iDjVR۽#!w2JRI54}YIVIBxwRR~R(M9fGn9;7/viz=Ph-޻O!rXXPy:κ=jIFD-3vF% u^_Cw؝x2\ɨ~ȏ[ZReRRZ:Sp4^9ǿ/䎌!*㋈fW/]Lgu'hvY  rnC4սVss3eη+fPdLA{]}Ώ;bOH&*,AV7k4'3X $"%_k2iU%nnrPl;zV<=zlgnv~Z,jO-l@0qh^[Xn4B9Z# zdnE]츶eТol,&wQ$$>q |&[Ok6+͉V9ݳKpLvE`{}n[Ggn75>[DNڧΜ-,,GCoSi!e r'f3K3Ąi[[IRp$VuBHթԸ+2٬>Y,TTG)d2Dx\{}to\$Qz䭀lzI2Ť4 B'9+79wMPx{ݐntr`̼d\M'\-Ds# 1e=sA~Hjtħ(Hy /QN8v?ud!r#?Di,Yd[u<Տf|׾BJWs~_ 1Ā7V/49MK P_t3nPHӓAwEd'@aۿs?sOg>Mfr:r$\XH~_O|?h|c 3@i;_'|R.Ng L>l2`MIr?Ikw,x'e( -q`xy9wCxo_[_|WWQ$AlxeU/<ʩ\J5f*.ha܍.rZ|WV޾x?q̙G&e׷+5F{;OezVZmOnu۹n'NF蛰I OBKKSٙR>ɟ3se3eJ2V(ܸ^?ПSOB]lIXOCd8 OWOK'N6CQ˔ZVfįn. @4 '(, V@M w>,?8E)$a wa8w'Z:D<Qfب[va$Ċ[͙~J|ֶGgCEsP!`TҲe)? voT+dP\ڨ̾+\]/W-A9wƠv.^hGw&?MQ|0[ ̼&H7-D~ղ'ńH@sTLU*n,mmwAP*T&4KXe#fONhd#|~zZL{Mݸ  z[OZɼUǗz8Fr-y^=\Mfv DJR {C ج j1{N\_oRy ]Щr%-ܡ7jD&JK7H)I;ðcG)L0'CPOZ?!35Dh %+&^Hv$BLΝ4t\˥y5;l,Zxfffrd[LչkvZDghV܏r9;D0s)?Qݵ;o+~X)G?'~g͕ g`P箛$!;r_?VU"+`hf^,*zZWlT#8L/^PF|ř4uF)uۭLR L#wB":4@i+>h'َV)3^MO1U@Љ'f8I> p -Lq$o:`N>rJEAcQ҄e*9 !𠲵jwplLM+ැFD8H.gA Òagiyr6Eo:<nxLLtq  8B#i 0|+r'w~&5'$ zQG^^RN.կ~kq-# !|v׫ne,"2U jq_B+ 0j*]Nqɩnc&IS rqTJ7U.7MC JP #~N݇s'PP`Q,"0P:B )_tgt{}}=!(K'sKOD5cq@ e!Ƣ|Lt M<p>;f s`35ԧkL2sZ;z'dNw $e%cq!kEe$]SOe.\!w¹ϗYj,cen&FjRVVH7c^kHQ]' KPh׃;9IO} wHZ]fi3]] sj݉I=1Aںuu;l $Dy(h*Yc~TLjZ#{cݑ2/]&wJ\5/]~;e<.:.8ȀòwRpYkBc^.󵉉iX9Q9wٴn Ν.&лrF(+X1N#YX YkG6J-s5^蜻P4 n~~:on8$4ق To9mCb~nl!wBv^ݚ7n=2Ls]«{OˏԢGAXL*E77?Ie6>&Sxk~epN~=uvlMhJq&SۿڋN-?쫯_?'[D Q[n̹.$jyW_~o+?~@Y(=\*nO:uƸE_Ήk~zJwkBT Σq"?(6t vk+Wf_G/| OhE 8bʳJIE`G3GӥORyǂCH`CX¹#VjgI!bw$tŎ!^a#B%"[Fce*^{4t>r'%g7N%$p6(|*lHq n7xg?-,E-mmZtI&K_=~|}s;%ϥөEt`Cv%b)Q,-cyl"*͞tR`,C򛫭Ahm◷ljJym…GFB-B-)TA;iSV߬~wN!S@GEJdZ؜R<\i CW6ODpYMERovX,)[Z`;(Wڱʟjw`d)܉0=xQ?obR`E252ecdi$Wת󭮵rwwL1JRRQ[5U+KOnB,mnI)?mKCEC8gZIO?L5ɄK 8g$RŒ){q0p:W&no+wjDC-sY@;D!t2 KǛV*?4rzɺ 4p*J9PeDd2S^. ح1nx]9ʰ6U |(~4Jcy8wKvn|hΝ;rFKA)!A@4` IDATA _z op.^|3f2ya,ȓmH3(Xs{ w|&+]Ofot^Ȉ6dˇK 3b_)_ ):KKKV<%$L};K$KǏuTW/ב;?y~ȝmz K$ZϹvJ2eFYcQ (]U0(9D{t}*HxYOFzP厒#w fZGҁ\9z o1jcM0(L'  &w%[}F}"-N{3ժyN~Ft"rZFJ,)O9aT D_GFUt.lݦ1r+wHe RW9yꬴU<3݇ K<0S\,T8_xyuܽȝȆqw#uHL%!A%ΜEuC (jg9{ȯt [R}c`r1qeqx.r-$jj1eZL`Щ|P8t;AGcf)X;ڦ2J Wr(tVC0ʬ BTt@nc ٨ 뙣cA<-aCr}d[kwkRQ!v1r%"N G9;C9FP5߮ZlI%qwffC.jݷG,oHQ9qΌ1 ynoiI(^\sdt*p˥˸0c!} w~$A8[8u c}Âu% -}5fcU?.f2pv4oӱ+tƇùF1Pޜ߾RF IʏJjfqb5'-v9 5ZN%+K6ZTZJDv6+jת91sSHDpr# ӼtiA*Lvyޅ R\xxjhm'0- ӚE R)OjH$"de"WeFe%'ae2 $c&,pkP&hlW4FY 2qy2X\= w܄&\:n3'Apdxn̹d V>E53zf !8Q>I䉀%Yhk煖#2Y-M/|Ζwбo?@n:=BiA2Y{<.Rv97}ު{8? ",ݗ wKwhhǍP_+DRqKwq|+ w׹#+H//"@! V,l2&r:F t{;6c'coI{۝/K'_g[:1rw:wl)OsX =>7t _X^~$x26z_G.___җ_='ry0LGQ#wZ,[NڵKyn__:r}ҫWC7 eCV٬e_y'^}ۿ \ _X! sw` 8wKN) D&}O-䷤܅,|} NU[w.~qs?OpHɣg)h!P{Lο wd rA־}0ouZjMvRczNg +  C-s y*_Z:[++gj:1]׿/|᎕-*bnbT6Z3-]CYrWv~ Tq3Tpve0tz~fJ0P' Dz{_hyi2LɝO4/rޮUJg/ݨu]{rO^Nxܩ:w.HGZ루e3ʕH&0v$">@f%_ﲰױ,ٚ_;RwW[֙nyE r'(1R6A>Aͷ*Ey{i!w6u#ֹՍ(2M$;$ w7s:bGw)L(݈ѳyZ;"ڵkwiGeHv'Nhu2ЊPY =e+r2( ;=;XL͂܍\!(M5+Ҥ H1^&>?L/%&P˄}#r qFE}2sd+fi#K!"Eg%ߞߌ{_ߌ+)E7{D 7Z^oްnҪ`w,$I$$D9FL۞Xh=.ZpΤrU.-歯iSN3pr_|XX3i SpH$X9/hV~SiS,_0pԠə Wf'bn2]g6kTĢ5H "rcOqS]Ox&ʠi&*YO1S&HDZQ'_BkTUyG0os'jxD5.ȈW_"83$f$S' AK7&&g|tٰf8N;D0ȭ'^CܫiP>-sxco)YKǫg;˿ymc?yN81)oz|caGM"k]Za}fq>DGjSo=uWnZJ˒%7k,;Ҏ9黈g#j ;F3<:a et/+! Y=jJ(mc_y23vZ(En wd\I|=4S\KFpd,4q;`I\A>n&. 2;oSn33e r+dWvsFҙX"õp9h`A,Hlmi:FKٍȝLb}rv;Rޘm-v?ME-EW b#K< :F.JR;D)mU]3@jck"!]ʓe azk, (ȝ22N+s'q!rw[}x̴/0Q>(oAD܍j-#e wl1ڝNfO')$kZn'HZQ;Y*Coܝ$)p f?䵿a8ݾբQło=zhsxL )r/˗/g~__)|cvݘ[8a2z̧RB"ps%p.= aiG fB֮ͼ[?c?>/$ԴDAeÛBqVZ:EzWUؤ) Iڬ4aS^^,ss7 FI``o6ޝa} A>%" @~$>C׮]CNLM@jܑ8wrl_zѴ"_Dqa$nC?B U_w(ux=|ne"Lus{L̠eFn'vYp%wXjXߋj2}ZL%LL S5hؘJBAgWbs#k<}-WFtс<"=&=sm Xد6(o .g ,>]`;o$ b '[FQ zPF=w[PuWVV P@B (pưVcHS!A V+ K_JMNT\# mBR*M8oQt0^; ǏR6{8w;FZFL ˊnVߟ} Y4D^eD(nƻvyM[b^|- ngʕ GOx}ֹk5zieҢ$, 9@-3I70V!e`31Ff.18.(``*7Ε.Cu#gmi ':uZ#whZ0xЪB0M]nu;G. w݂cW8vJ7pܤ1GZQdf&r'!69I;v DL:Spd4Kwq"K,r]rGK)N.CwֹCGL`PhÅ:MzR7Ո8蟞dpQ]KdضA]$75pq"ˈIG6Ȝ}+'7v|)a},6S7(Oʹk5F}IҝsF2`!#9Jtr XJZS'q,=G^!HyxN50mc^u(l1rτHcs ̷Y\|A0`E*J ,@Mr3$' )dCfsDt$#q 0!h@=7YOšqsŽl'+hG BiSj!jվ޺5U[eUҒٿ7Igy@S2lџ:bFw,fd#@n;;>8Ҝ,(|օBDIˋ#wdF]u"N^]e46#U{YIScLl^`jIi#usR&g;u߇Z,Q$#sB3lQ.7Lw8X P)y]EM3Tƍsr5z!l2\grk¹}׹c BZLTq2b#0#1Z[#[;$4#^smJg~nԌs 2BDXk qӮ<90g٨/DԎ9yz`Uo(^h=ϭs'G¹ku Ul 8Ne!k;Z\\n*}:Ҳ33 yT &KvJ7'&'ˎ.ǡIUG$$h{9wZf%mgiȎDMK50s79$XB ]օvLU0Ї]Nȝޓ"T$ w#XSL?LeL*5NZ&#Zw1Dywa_/rgY {|^R-e,z:zcx:w);/~7~7 O9]޽hL ~F%@bh f(olyXX8?5Au )%p|?˽Bv }PȝD2 NGeZn\tMg?sBN{K>|iۢF adMZ߮gZmE g^%fϜhXZT*bNz'K/X 8rg7+Vd)q295WR$9C! RpPF(^>{WkMI6_c$$cL"{KW uv k17rzi-b}e rlx^O'V`Mh41V~!/pnig 5dVkME=GF|w8.Zz9 r1 ck/%`)*΅Dhi!SE!3ݞ}*[a)nCVOp{PH1i3`IC:yu<1E.T'V:CL48vBn;7U0vI\]I@ΝmY]kҏ8I"q%Ak28p3 NFGCK\~999xJ$ htiM¹ rǕ a;2 IDATYI>3ZRKi t²Ƶ޸:b6dLM  Y(T"Q x wI' 0+AFZtN`dPQF[޺|·51'Xz2JK&u@>0@?J''Oبezt OE h.\u| -nd|Nӏ YI q^~9Lu[UT24P!8*xo__ߊ܅z,/JZq@;E`i";qRK91Rnopg[]}XgN_^݄[_,MNù pi&7;d^X-or@X<+1,ɓ[ϾIUpw`Ɇ.8Ou-' {&@J.O)2q܋s $mI]LoTʥ洳&t5=wqzZ%!O%"ܱSQE 0.DV'rǞ y ^jB:3`ܱuTvO$PmF9k84fGTtVM _!}DL@0 $ze D.HXX-Xf fP#%\,HvznrDV#~BA6(戭v:P/g2sh8gmJ3s8|;R&M_RrH\W: ]gEVW Cnsy+қH7[d 1IJB TLEc;@aL0n;TnAz^K϶erSnb"g} W_+d RT܂eKworU@ͮY $ VN'u؏srZf։hw=rvaجf1xl`wV$=go^fg*lN:3l!B)0W<)kl6 zW[t6oo9ZH}A;YIKc6}w~w\ŋ8ܱ7D!}P\Jasvss"V;k;]NᎨjT#QފIV cHn`]^~eJ)K/}L2_wU{#w3چܬL`A|-yu2fs-;z?3aT' 35$)n).u.]>Ӻ}oVṖ(RgWXUv1 ?>"@z꩏N[Jvu:ht* #3<Q\ ev ed|ofhvz=鏟_*MLBzHAAjlOǹv ŹK[gCPalDYrG̗S`^5F^Qcss]nׂ:w /8w]U¹ Eyd_ڧ|D0锢)45#@-/-%Ձ9a~ . omT Us=oSCu_Zs?.yݞ1H]^1P~ȱc@<*D>9P懶nQݮUr¹ Q-̹\V7b˔–;2r"wbBAb}’aסDv1;kTrG1 Îon0MĖDQju¹#q ZfO [JXX 'Si,]kifDWeWܩ>:Bk)›V7't;@M:,_"qTHiA8!"i۵T_BLAwMUTvΉkJ{FFosV9w{25<bl3iwEbp$ f}D}pY"_#])Ip/]z+i5![H“w`gda>-*}UnBh$L,/cDCT;ΐ>mN .HA(tX`Tx"*2+}-Zަ~%*}CK'=tZU1.0Vi|"K:ylOSjJnڍGmןcAbLb9ǎuSaeR~mrKʉeꏤ@MRvz9I9$+^z,ז&j5RqL`*-ݖyoNMYLңS Qqa1Ғ$ H+Kn/rE HbMYz8VY,7zfkӶ- 0Pbj'JX1kUqP=eX('̓ܠusm}emvbjQ"G=I939bPTjɠ)1(CQ;R==Q8 }w|c5D};wZ4p2O6UMD8Di8.Bc@}C@9NwNxCh0,){̹@2R~KH1t$in1r:I|̒r6NdQLt>&А;48ry2g!bQ{9wqX~;]t'hRΐ~~;qM2I)/Y;i"wd~+p/K?Di#PE-s_;r.aKdEq@jeBAcT[?/;eߟrGo {# B'oE7^} wfho9g(_^c/3;/=XX\t6K;yb  V-3];ܷa< H4(=#٬In_(SǏ/cђ?ZZZ [WCGqԹ5N@qtxWLe^cV0fLI7B<"#SkEw 9Fԙ҅\23cǎvqq]cԣ wÇlەf}=e!)pTJl Dz4215LE g襹 - LJP!ɯnϖKB( w#G d[h3]m7֪b/j\CG`x$*^D sw*~ {e._ZV8"X<Ře c *[SLW1P~M;*W޿t׈gwkH;=o\\T;2N A;QI$—w۫.`:sg^b0ghh4noi>yNF cEaHrr( /7GQ˔oW:Ӻ>z1E@ll#-(B0PEa(8ȅ[DV- r'De:2mu3igc>J;!HQ@V Д4A|L4"tb N}i #|YTXh/t# gs(xF~.e4i/S%䆃Bblh al̩U43kL@ Z!wQ%pM_$0xWMjn# bi4InCɴ*aP;; 4ygK CF-TۧԢrM>u(C:r)-^l٠ ,)b~mYqb |(6~#;yUW6 cz e$e$E Ir0%DO&Tx=Ѫ[8{of,ejrݦ #wRBN6skT ;>Q"GX&1 ֎Z.mo} cwD(T7. CC&Z^xnk %߿pS?@v#D,xfOOVbCcdg#MYe[s0p\d>+ h.?#w{9wHV˭gzTab0zn$~f$!,BJB Nl׿Ј( ] kShQKClDtȗO׹eJzZiJ=~>Mp܃Mr 0ƕ\&!@Rqjv/._ ±yEDv,H}@GW;q߸SՆcRPT3w r'[ҝ4z5r۪KW6? ]r-T.oo(HU1zDXpNeJ- {g'LD\ = CCXyv}j q三ЍͦW_~^xuv,ֆ+V` HqQ<ŵgK Un8h91N:kĚ.Ŷ%B7^ytZ:4l9A@FbWVk'MÁU܋ލ/.nr'o[UJ쉳dbakM}GvQhubAvBg$2urr)I>I"JK7b@wJaN S~er7)I𽎑nuO!4 D&AY~jTƦQ;l]0h׳Р29 5SLX*⥦ v3;nG*4NF0/AS!iҚCasK|,%ЎM(V{> IDAT/-Q!]/Aj96{rVK*nq:#bA+-yc>i޻o}WV+ 00ѿ~6NJY#$F4FWO fqXrPu8a7 ;7N8(l['"F '7C*\G՚fM/I% ǍBJ N )qZsa,01<$P$NR:n23:.|*F T fha}2J"K8R K PC6V6?DFe=o`ùcŵsz%+ePH[IM_]K ߬ V:A8FRHa;`5NEmor伨]ǗkccEEP^ӂRf2}a$VK޶Ms~S' 0P4ѳ5\V>n>JXtpAzsF1,[S AZAi8[ #Ѷ>0WF:0X (MhgxO=1`#.B93QkGtCt:gH,TQ1AUirwE!haB͢-9}+eO$gD80_&X1Ñtq# X=у8+͉&l}ܥ)q' h%Fw;.Si2 xrA񤟎 ptԘɎ|S(-RFG1E y ʬor4GFqnF % )K .D?l4]R]j6yY&`}R|0ywW9#Ev:Q7}=NNH\z+{n߆DHa ]AxrP,df}߈|.(s w|qW^61Ԙ:$rǢVZ}s, B`Ȑ@-VȝQ|mVY_Hb(yohO <ώwu~)MwulLN r7FFNrTxV_L՛w~)d1!0Njys/7SZz~ϵc\ޛK_1r_DwfUdUE}9=hzH ÆW[Adc , ; w5#3Ό 7*Ud,1M df"۵sZPڷ QEWD|Hx1\d fe" ݎ?ju4cd,2Xľ3rlsȀ ݞaZf=y!cO"@! XC_\rLq#wOnlcuW';LǾu~]sMr-ݡ7ؙ9w_岟{)qv !G-oC2 V q㩃e@C?Mo79 b-jV;T7G>ŝ;d.FTd9>#@xoih^lw_9{vYc.k.- z[N >3 wU~e}yzF$(UCۼay3g_pԓ/ڦms=QepSS8wFBcFwڭǤ;vw@>w%7a,f"jY 0Q9˿7- /}Iw]{ _xlg՛ *cc~bҹ@K=Z$ImRX-su| 3xL3 o4uNXDoP6/“_S0"b:b"f%N>1\ _&\.ёZC$ZaC NF\"=)n~ESSaE5+^{wG3l_ aD$HO*{F4QYƪG6wGzq]7Xyr덮F/Zȝh/%tcko_iU+W*$`wwo;+ ' `دaЙIvŌB;!w?τHj[\f;[@<"VC#wm~`ƤԬpPCWeNyxPg(, N򫗵]pZ:;wi (:@LU0r'ȉ*@RHQ((}Z}Z1?$Rzgb7g`V. zH ;D|ùC13> &! 9-T"Γͪ(b)āX-SuCȝl䖉!@ҎAIi0Cp,nDYf3QxN񺐋j8Ҟ0s~EhŹ>7 |=Ź#j;ۋzVv9?h)>rsذI $>ڑLR>3}-0r' ;@a)߮&yk]berpb׀Y=$q wD]{\tF媕RhrL9A'W,TC!w|雤ڪYx30ZD<5pPʔs9lTYn at̔|/9G%/IgL!^\6}$%+;V/FϛѢE2C",ɌiCk47;ŠlK;"p4< 繃s+ 4Y㋊ꇩ T&''¹ǍȝH@\; Ja rG-ةDEwaM9湓@U9<ȹrIbrсvI(Vȸ,ݧιc*9ǹmv 06j'qݫ$|̙^)؍JXp(NWkA;es;Jj3u[wՙn,}F]YT<Z1e:^@XЏs s Kx2צ[[{~,66m{}EV(|,. Hd1I\Zĸj\2_IrGc8tFy١`cW1"GE_|N~3CXXfz6D9Vdˊbb:Q︐paGF]__[bqkMx)G7-; c﫻C/Zwv'StŨ>l..j# MD"C AzuaR\Ϝ_XHDSuqdrSA&{O`m>s+V-S 0k8] ٥%#<?/Hƴ'xBGE`!ieVC`v+ znN;w/}O">DUI?;}J#rAXA}T"$O8$NT"MV),R#wBFFc J<}!rw(B>da^k#uw?* wᅬ 4s8wy-{Lv8u!jNJgתupG`s|I&u+hH;[Oڃy ?cvP@ޔz8 [Gz~ッ +j.[Ӎ8YƠ\8vbI!;U`*jaZn?yrtq $ZN1wIc$Vn ,^pU2rNlZ4G6y'1$WC\|GH>(ߘW|XuÉ|/ev:I_мX#˳ёuLҺ1uzFr澥cjӦZE3y^dlh8P\2ҎR>vVr1fN^' 1G)svK"!,N|9IJE V|W1JwM5X)6`Ԉ<84_Fam@J%į*\C$j¹c!HH@dGEIIa LӪj\; 0&' disbRƒI.k SЃ>˵/w/0 &ILJJ)W$;z lO0:j۪u?0WVΙ-I#\9|;Pȝ5Aa4f0F NUX C!XAd>|b&}^7@.42.!2L@lEn5Tr?LȁzTуTSLh ܓ1EX.KI!tFIJȂn`۫vw+d"՛7,z#玨0ɩ˷> Ѧ1eA*T%3+319# |N+hŒ]n8B@;OCH!| jЄNʹGaÌv-o$X@w5`,*s/vT@H4KvN :>_No |;0I<&Pxؙ$Ҳ% "A.ٙBcڄ?x#:h,!tm$XV8w1;N:Jƣ^"7b[2>t()f'Y%]!¼An*"RH~ōhv1df@ Sm j8Q(&4ړ"r.")oT|E_ڑNJ;eȞ}_Rx2VX5w +M{26" KR2ܨ!KߔHl"Q-||MN\aȝzղ'ݬ)酅+򐗰͆JaxjDKIڵԥ 1uQ4ooLOsUW{m\.ySr+{G/mQ #MgOjE6-38&:1W z-"e=ͭ\]Y^r@-)4Y=bsV\1F]@!+@tPwث_mq%_Ȗ!wj+n~~1-ݝA[&df5Ld"Dfzw8OzN<=Iᚍw!j-?1(MΐnuD2ss'&qS(Za*/Ex|?+$卜rgĠC)3DtuAt2錕ȝ Rȡr;otlg:ɿOAI,(+o1q#wDH5@+Y`ANdIe;r'XO)4GZ[8[FLN6p"GrϩeGAZZclvd?{歛)}kݕEu1 ߺEA w,V7JAC7C AwjwM3=t2L‘*5?)q%-mnn/\W. wV7Y?R>_z'2B=q lWlP٩SSS|-_F_W_O@Gnn*퐻jj{W*7_`I zlO-AuԎ*u1ǧQe#O>2?Ym( K/]:,._G9yq2Nǹ_,g~}9)I8C6TKgJƴHFRG{]n#XH$?^+/LX$pAX4y,MUjd!*uTo]\0\BkF0&,VB#H>V+W(V.2ޙ3+yм8XTIeHu*0[rY o_ںW?9&^_ RXoȓ<_FG)Z?|}mk{[rJ7/!/$V=(h,V\p(38'F9.b$_Bɗ5Э;vkhvNCX ĉ "=@S$ǥHN,(HHeyM,>8gn孑܅0mR ޝ2 wRP9F mu_X *#s'0q}bgc(~үOYW {bbXs77KR1?)uz|~[i^YQcb*]#w z՛Bw༎6'N/<l]P,sPр^oI+޸pB~";+jYc`rG3! g$R:# _LP-(YX zzh?IAU\f#UĴ>Z趌M IDATS#"G!Xk(#~FgzD:mVXU IuBN!ešHa{'*mF!e-swPsjJ8(ǘs(vH׻2;3Q* mS(EV]g1I(hN͘~6~31M!v.wNP }Liaaj"O'E+,2Yg4ʥC ` SC-rǗ!xojZ.eSeC@* +<ɍȝM,<؅3gkgN%^I\#7NxcFLn#~_ߘ( Y0_WȝM@ Cdt7ݫOǐF(gg K_Qzv ,!b~wbw wm ZGB6L#V jDdtꮓMe zp2{DA`tDŽ#&ʰ; w{.DCx䣪e܉\ΩSY0JewL} N,9&'r1,fWp I[鵳h=OdL #wv[9֮YsS W \AGFYXclf~&MONܡY䆎EpaLD-D n@s:7GkIT|e X"sW1P^&jܻ|}y#W={"p]}aM #n&pgDƜKwcUBq:״S Lru B$B͠,#=0 NMWaw&ݡܱ+@pFI/0&%<~Μ;-5"NKN#sw#r&X=)r7wcx`0tRhY >Iá;%)䎡tMU/ֿDȝmͮ^9kQe+S KǼD/rDV(;;CVQwǐ*q[= *PK~bYJf>Pd+T͙J1bl'2Pf /4Q\M,GCmGUn 6eΣγ| 5|Xۄ1߂?m s*{p*{;/!ш9Kb|i%2'Jj =2mO?įY ˌz]x"o}mz?6'8hG *d081B>t237},aI](e7$0%#"r!!SOJ{79M_/ħz?R!wF幞9$&?) MrY#w ʼnV<5ٝ}5U`o?vRvTvrW{zRtO9<~GQYeme*>s,oF071CC&$- LwXS0r'Yw^T,K.0V %ivXMב;(>ҹX<)rٱZ&ojh!8Νܣ :k͜;1#>l՛2e{N&e.exq S!i"}Ɖ)Nzx0y-6*z|39IOEHun}}ϱlc; 垸oBsgG&X7Z)XJwH(9YBez!wq"LUTg߀-<7VN-I( ff MZWT Q *aEZ5!)RaI;Y+Juo#FcQ:7Jo~Z?˕rϼPk:ic9^Y7@{l)XKBk.M pwĬ$9CŨ*TLLFfGCb1)L?FH^N TJTV*E`bQp ,nONCp6;Ç΢$FiNE$!S wbq#Gf(N߀f܆,Y&RYWɰ)e`ъR2R,U.+'\oOPΤۈ4ũA*TxMzTnVyr:BBA;#LXg\@!I!xH|c#\sZBêe;ի{ßN+ӑsh27bn)oU@YR4!z{3Y;n0q!w¹ۘzjv+SYvӹH,bhHJaqgd[M6 +pv.'!n:+ro ]biTZvo2[Ói%#d<;;3aJN=泉&Lu[lzn94ǸcR'n`ǝ%.jGP&(¹#ĩ!w9HLCɉL& f4n֧ƹ; P O#Dܩ.{`= <ݟlp9N`.4ŝc#5=M)T}ݕEu y-z7ȝ`rp) t'{ #371 wD{qq$ӮkjlrNϣ'Dc#ڭ c$],~۵%Rj- 7}Ig!5\˦tRL@R3g -(bkDc''6 7\NޓvyD-S;X>@EtF˲߇jee7b c״?pȨ[dt %[̥ӧ$UΠV4鷾o|e#>!w5;bU~i`N#(i>q^|^ C>)>!"1櫝>[.OĮ\n77Αlfޙ]?u` ;RP'o܁WvzT`vS;K'n%pU'K^Vg8Ÿ'i5/ !lfÒ z}jd,8ܥu.Gd 7B 鑸X+6naj9ɕ;|Uu$(I5Z[{?NE||AySn>L%JO *4I" u;TۢͮUi&{͇s8P1} pxkc0~TN3;MF|; bH1 6'ULmoMsj:;eE^"^vZ&Z~Υ/NJs滦譳Ke^/•G2(?)zǜBZeZI*k 72$qm ')1b7~cPN'I#!tO)a .|ttU_:><sר5%Cz|({B (">RnJs gG"":# {T`L2!NRuw.?1r֙;UχS%sr.-q?gB`)nzvo=T^#5E -U$կ  Q XH%o"ṳ08G1t0(t4Je"tܻdid)8=ڸ#NO~Qla@ڼ̳X% Z?@YUbM=5V3qRDNcf  ,n#Z; Jb ezd#t{pgh*^u;YhwZ#ˋ`C+8nצ&)h桐4~3+2eѝ..BiԤǦ v9VVx0K 6RZ)܅'ŬPflԽݵ w e?oLL+n[]صm:M%X< Et+3o1UV6WjךTJ~sxLAc H9 B<95ul։Qct5!daMgVeYf0O݋FoLGc=% >9[ 81lVt2lK"fs,vDF-(.v0 $t6G +jtƹUO.레a&$بEqTzɧz jz9%Gj*>RP'Ci.wy gm'b~sk sn<wHsR{e?ϫ܆ʋN V7xY~U9wuҋ_W~]nTNxr'#7ڥfzXl$|(e/, xCX}廬z\Y]׋q7J'?y0wv 9eމs'k/C39};JXofa`" I!B$DEbHܵH i/~xǺ1Zi]rn lY<IY]WءY!wRJ~}f:Cn/ FS)eD0QɈ鸱Ln8;Νn׀ mck#v⓵n?!vr'shl6j{oUj -"΀josJU<Җ]7Ȥ:t!#Gn=4!ORKIFnlrVj/DJyc$܂S_UaIJ12)JnVjht)TuȀ5eξkΝ Bs-us)GШQ;ť;;X\,392Ye n rUhZW\Ңdi*cЪ6s,X?@25ګl]YhmC=#1jndQ),$8˾l0:vTE"s'-{lZyfHO53)j Ne6jH$RpuL͵|Aoiq)B[WO䀐q;mX-ɶ:ͼasv#>05ZC-sjjn8!LA+ bf^`차R?GπYeQBZC1390u+]!|;Z.2lC幓L( SK:;"k^5^Ȟ' ;^"?S'oiCL2+^CmbS3{ϒ/oiS)vyOZ8_r+eƩ.-Mvt{Ӟ8n)](\ZCyIߓxX*oU]&I0GuidZR74MpX8N mGnԖ6w J.6UQ?8NPUQ}ngAa_Wq}L\sٜv܊Fae/z|~D]xL Cmcr| aV.,FvyYA+NI(O,Ӄ\">+eVndk/\/DXoj0+,10RLFb+ұGH] &cN4[Q2]`\,.&xedHۭN1[H ~d]r%m̋LFwQНإ>ס]kj[s.2pz@܉ۜ 3A JԇX'Ȭ!tN#$$Fj6"8RSO?Me' xHagĉx%~ 'Ij>ًx'O!LזjJ-/^.E>$o tlLAX`o ) q'K$ML P%(04 FQ*M\_B)-;^9ț;k"~!(&cS{=]( x<<ifO);.'0,1Q5}Nq4 Mȝds.΄!)}~^TdP( 6'Cvr$^&0LPfQe.7 ɇ<q+R^)/@$u r{ZfF#ZOZ 34&blidPҎdG4<;J2;B-[[Y1ow >N0ա!1ngRq0pEiKY?cTų0N/bBXV9J N{7c;FWws2"%DyXZzm/Dq0T='Iizb`Gz?Oy"ڪL-%鮐ǗpeeՁ?4z$[J%D!yZTJVc2HU.?g {Tr #w .vR[60x*c<E崃sRfH`כWP!=Y4^DM=RPDl-;bUQ^R@BeG2NuKJ!;҉e-6Oe!K 4V>8W6`ՐC!܉Jn/@LEk}gSLvݑy/yrŒP9{fj=ע2QV DqT9hXZ^8Qq\r}rrnK.G;q+.8g7oD$E cQR8wZy{J\k.'A'pd{RFn1 Glg~e2s7!̅y*jkc 8VT291-kXΝ1'Kҵm%C2ZRmǴAdl]($l/r#'Ϲ@͝ $)A*(&&!rC1Jإ< =899Z\;sP-"YD}(c`$#RyW#|u9ALST6[^=8/`Zە+dx<6wy̟Wq8 X_hk?K<^g~8#Xz*ޝrGEg "w3@׮?lmWż337&aҍT*gJeC$16~Q@Kap&Vڶ~it>12s\PYSTe,;ek9l FsPU*wu[*-، 1dC8: oݘsG|gꃵsFJ!'~2ORTC&y/ϤIǯqHRD@V%G, 1?&&J00k ɅHiv{zk[,X^F0{XV: n.Ŗ}_ vv{Ͳsўy ZbUPt쁇Y踪ptĶwl7*T7:Ah+?Gr,ؒx^ɷpg|Gt: s;is3}h]^&o~//K-&m̸ 2T9/y;Q6@ 5sp)DzWA! CL?0+T#//-л{綳Ba$y2f MUm!3H.#[`^ݺB:!b>fX-'%8L;VAέ4kkß?sG;zAi_Ǩe s ʶqڛB UCkZ2n [.-W% 'l~Ύ2 dxQ8PAJC}=m\[xg;mK?rlYHitc r=5{wܡfFIVPzݗQu)>*ŧ #oz맸zos59d r7YQk=dy)~%c9SܥbUcpnD"0̥gR-2O]Sm>أo\|AO܍9w.)h,#4M^h@1-;Be|PH ±|ޤ}f{$H9z`$O:AŅDž;zΖ9 )hzJg-,I$H6R@c߈=HSew%#>k@VARirAwŇu_xېWM, k;ia6؃0ϝXr~o˹#wZ`KB2|IiAu2b+ ӓS麃:-'z]vP M}yݡku;9ts 2"ȝ*,9rJÿ0$'E6AP;Yx J2S)$d'ANHn$W"; eBtT%';`]eS9LN:?9-.; *ZvÊ:;f$B5bmg7+N8wB\ZsE8wۆt1wzCk../džq0!f|z'Ż߃>TkNWT*ݏMNOt|A8<Yi2.Qڟz-ɗĒ Bʘ@*Af[ZfL_>./KgfrfvኖD^CPvU %j˲1\zCq?2ZHhc܅j噿rH<DS"AYv9TIy(r4Р6ˈ[^:3_9}:r79',KIWgr11k·D+N@j*㥴 m` ڃV\w73bE2G` Lb MHX7ݡqn:e_{D,8"`Y`VͲDEլL$Qܫ gupԜv1rnaSnU@`R%4=qqgurp#w(N ,;AƜ;~ȝyT幣ɜ}qd Kd;Y\Zp@ATƬƆWVy$j+$7͜%Tr*O%7x@! ϠdGƖ8}+1㸫t-GnߕEŇz;ƊߺE?*r'̦SJUsj$ /QVR˼'nf!NS,Hn^Ak3N n竖 *[M[:m Ƥiw`LLr/fD;Zuj~Z|y,A3Mh&9HRMBFbAI9٬Ktbgz"Լ+q/OUݽnB6x $$q,/+>aZ*?-ÇyK.L x<ЩzaS>Zxq <$eI>ܿx//Qv/l^{׌ł0=}zzyye=-B3}W;9ޖaMNr05%cC–nz$`.#S1Ôŗ>D\S#dFS4Ig& l:Wxcڵ}sNN X][ک:0wӊKܻ"' V}L Th7/豔^ny<,.Z"_#+_9 ,3D6/,򷌗G*eG2Z4RraOiG#.Vt>嵪VoGQ}vvV?,0w P?gPG0^k!ݤ`kp|h {:f,13'"JQ`בqi.^/9,Rwq;׮Vjx2k;-ȝ#ֹn!)83dB8ujI2Ùe&O2qLCqS~*⸶.kkM+bv&s`#é"R`qUw q&Ftoo/V;o fGXaaABku\xwu_ɛ/>Ϝkg*Ν2sGFBׂs"p֏z)\ܹyUOB p獲[~_[%^7h4b Q0aU n\\ۧO/>RǿOpPsKL8um ]2+<쎠}L#G2Ue#Z~;AGA&l0h_2ޔ,pkk Ds4h=;Z(U߈`#/N]]E-3 :AJ6jS>>8x#F #>)QN/L=i r~`U춈;A]j;'YHX dF\GfA#(x{ C$r'|[sic@\+"RbQ6)>ۋ%R6HgF ;a?wWwY8d䚺YDg%g2YhBIH IDATf7G4ɰΝ~4W6gD-Sje\H*r}&5 L17#wr6sO& yKRąP1 /%s){Mfz\˽J!!2,Fzf*P̴ QD""\ Z ɮ@*B¢'_m"AVKlLaU.啛tm4túëe rWfɸh*h*<\pa5MRvؘEXIԨpˍ2 l5ȄnB#wb(V? 42v$'XPIw_c3;[XĽV,4' Y-3ε Z`\*a,R!J'!jG)iȂRJe(ƩnM>"Div[x+V''<jN"=Rv3()XՄK9B %xK:N@~! z4|7==S{ /כW A ͦD"=('$A+žQ8q8옘=(:m&豣{dZnB6־߼K\;,pYUy;iù{P;9wo/'nw(I;?< )+hZ^[E类yrLVcʥL*(ZE]{r$ۈR[ù#:2ujX^oeyt /gA9Q:NCZ;pʔ+) r'e ;[Z$'RUQlE1Mf9V= x6$a{weF!J´~jܑAFT; ;6Ü]U-TLMH-S b,N^Թ!wpM_5&Hjչ: r7|%u/C;ѼOcn=G%ËD~Q{~nTP4%G`m= I.Qu!ǁ>3D%Y/I0,&~Kԝ=g@[ѸI箆~M$sF8ߒΦL%K ;c}МE/ST2:0E"`f22+jpi5l,ZeĤpp )&‹r_(S=78yP|/mNH8w(XX #y14F*NEDBps$'8^ f?}H[&'K v;)7nyye!R7OJ %h:"N6bWnƷ6_#LY''ǍA0j3J)38S.rS*N0{( } yD-S[^-LlV:9 @*)_;ap֔  D<}hĤ։VK ⁥e)@ VSznѽ;yaYB_ô7U-ޓk7Lb<~n0ȑCɓS`^y7j(/7nnrW]Ymc0vo_r2bOv7b> ;GUâbRfȅuq?7=x~oSD_O&X: z~+Oӽ^C$ D9j]]rʾNzQ:hQc9JG=E}Q3J`ymCݿ;1  L#•)*]kl ]%^]=*+DߧSn^OdzxRy@U C |#݈. 8܁8VWW{8|M '-_gwS2rw/jDp5r[~bL܉F(Z]e rGR]n2ʫz J0#gJ򇪏Q10h9383Ƈrxt JWo$m wġD‚(kizys[3)Wb8`{IJU~w?9={~5ݲQ1TO4<=RD<rעR}X#:;2r W{ }ȃ^#&ď;X>/}qЭfxٳܹ"|RǶ p@CV; _-DIFƌt(PB@=XKK ~$vE 'O7dܭo3x=Lv B>ea فU̗k J܃NdQ$`'+;MH>`n~ 6Hqfb(ݐae U彐W`tLRU V\HDB<FȽWX4X2V6er+%A >p߁Ao#w:{׹KqgwL#JZ=nk~w$?t5f4]D.K:x\X2 NNW^r(Tn}wP'duoA~ji:5fԎA w@|x&n]Fy;-`#V c`1gzzP[F<~ε |0eŘ)NC/ݮC>sYchYIӫ:wvñwm 謲Aʜ(@eb6Ki,ߏnR@ A-$sDN'wXik0$DȔ6&]r'Z 2ԇFmj~{+Pʄ}xΝe͖#ՕF4yo A IŽ3M@N[F #YZ ZE_2t#=FP-"w,jb7ߎ\"OS6n0LC-Ydbe*StKڬ=j/V,^\ǏTsL7j0Tv~:wrBCmJZ扞+㋥x#8`,[u^;+Xl5NxJ8wR9w;[9;wShiԹSF20'22MEB^m2ەw+C;QZՃGZr tV F!FVMJoVϐ:ʭVMMׯ,:!z:lI;A҉Tؐ;PLsרWBFUրgI)[j;r'5A,K8Rɰ$Ҭ]c_TPa7r7s'e6yrd/S?Ap=W rȣO;D/rǙgɤ("swOCcm͞K;x;K~ȝԹk6 eD,q&r'u*F,Wld7hK2-K.1RP7<~co&tl%L6)ȝp:ΝԂ|B`sy ƺQF*]'3tLM;y##d\]P," !~/%TIs،C%]C`)HO^_:_Z/#jJ{<9ogyg9@g1Z.Eȯ.o?&F|#" /1vp&y^|ܾ~cJz!"L19c2}f29??[!u/+D 8!Y `8҇L%\a tlHH3sC9 &EJ'[-"J<ۿ?ο5-1ܱWZk ƹ4N^^}ѥ8Eǜ*kt$zItWR/_:L>UInǽ;/]}/ccѐՇ%wfx1r!z$`C!T0ڲ ׇrj\Ν;G,`f*5ryDˆ'{L+jznTX*+ jJ,+ {O?tȶ?OsT i~\φzy7uJ|_bВ}QMOޤǐ;H2 foOdkI?l9==W[XZZZ ZN;]mt@x}^g}%;aE= :xdU+jݾxd&ԬƳ/L5j^r1LƩ[k!w3iz2cH[}6ݥ%V=;qs {N\b8r5h~nwVލ/4A `A[LУ~hU^bpuιK͂X&pK^ nT`H%ҶR^TRL~Ϥ1 >/Z(nySv\j4UENfd.UZmi˲NBgpҩF4_pQ}6b7rPt7޴dl,9ܹɥUXNs'Sd2q}GUQn WÆ YIwpJ"[uKgQ=;>@  Gtbާ VD)6M ꏢсɿPɃ Qم9B,5r<2xe?m]2(nxKuǘ1^]m]?</F^'1 q \dov,J>\Y[fqO`C0ά;!MIBhWaoF\&3VHes'sUA; @!wկ<+kS#f,f$OlKn ɤUׯwVrKϖfg]K'ld22Ʋ!tpju9xP(Pnq0~5@vV lZ5m1׋ϕDkHSd26t42W)ꎍMͭvW-eSoFxr䓲qp3QFjV|N% 4l(l2_jz֟v~5ob._9}:P>&7$5pJJUK i!ge0309؜,cuлF*K9ݬj]5l1(H%k!]`.aGN'1(DIBd&}9_Qi<n\6 ]#K0WrąZ jgeʑZs7BCV NtsLr K $`)o01'kap䫆hDZ|*C/&sf>Mnz$|<:LMa4xIbO8w'>ؐ{!rF<7Tx釬$I ā(IOj>wL6ləf!_mV{Ppb7_,6¾6IU;t(i\5뛅Bo !*IfWU`:ЗS mX!4z>ΝJafda:}8NQ/S1qi}o2վ {of2u$Dq?䎓ER!W P4 g>HȬ[EH l6m4SVZ~y1s w%!wE@fr'soC ιUα !M G` E).a_,H?e4\b#Cf[,FR#/jy ȝԹC-avlD ҕcTL>b'Vv]^)wZ2jYq&膍;]פQ; cfW&"7*LXLs'Qd@NONV44#&k˝v}u d" rA$+!w(XcccD$|3}еR YpҖ oÉ\~).QSpe)b^tZy І6A8#Lؓ鰵;Ы'ri.cj*pR- wwJf"ťraS`Ѳ|&lNfn@NlRu8zn>g9Nmcp!rv.ȝB[VX*f~js)89db c׫"! 7]@9M֬N F 6AJHVFRok{Ԏ%97c[xjX aB{ԑ@cpFȝެY6&K06DCv4kQ#X#䎁ڇW̑UXs'+ wL .o/vrP,!y*? 9=SzSoycxn=)O ate8{˦KBkΝYD/뫜v;B|!ɆdO2w\qw w{8I{<{Fݬ~¹3=A[=)}Gc,)bչ!wR玈_?Vc6M͠d'z$+"lYAP@3 >+!rgYB,JsB`4 .thqjo3 TSDMτsۨ5 +L3Q% s~I/V{xеNGodR&:#܍;DB+C4OΠ$xLHc379Q|G4BC7N|ih[d߯:_q)r!&=m8L)L*~ʾ^O5:͗Q<^w;1&>L2|$g)Ν r fG{>yC*Z-Uh4$ wݺ';AȽt !u"15?xWVWϭ\3ZM :"KJ9ˁ=;_wܔ爵gG|̳v#wQ"@LQ |(!!w~՞P{s('7n\y^oQgg )w|^j@H WnViC_“ԹC2jiY$g#z25˴El0e,Kب.rs}Spؗxӫ7.,.,OLξ%ǘ1PW!wlr,};^eI*R(7NG05xwS+-9.~V>E>ԹfbeZXͳm 4wPo]]_~K^z)}]:U^@w"wd ' Inak j~ֽr*AܥRI{_&e3c1Œ=DF* >]S ]7=|< b5ݓX* A@ΰGއ2PAlܸ#勈[ bqc}7kW\k^#/-rw ?ZBȁ*իWY,V^;r#nqS#Hd0\ϝ X<ݎޔe'G@ZqQN ()nxI+.^O~>wߛȎ[A7r7xi 1YlNt c:7Bd>p#ҋ_}9#LA>Z`Ky!pE|?=s韝|\>I8Bj@nHcah'o VNg{.Pqr2M&Ǐ%k"h>(5GF*X9qߌO7^m uO#vO=jR#.BjЀ $bg}~db3oшY0$F˝a;+mRxz_Uj0ɼ2=܍; 'UNmDe=ܞ0urař N .v=({SB)aD_͹r7#=9k{>eT wd0ƨߎy7dXف:Ddm+&Ag_P%MKT|zwl۵xpC1SqնQfO_KIfF,p#,-(+n#gdkKT)H 2ܑg"ONhԚL#zv2nNe\bF2EҬ9r?e ܱ|*PK>W.9ӜNXe:4lhF+ٹ rѭJ$]eݸC}fuʹN#pJgBoһY9ĞCi6 $47 8RrJFuvԔԹ_Ų r7>> ˤvݮԚՏtl:iH~@wPdW݀J1O}cZ0R e5'#' LeLH§iSP yI/jN֫eۇ˥ocPΞJlQ IJ'*ihǰ#tҲI,fF8 X& <K1g#ֹn@D.;Nw DGV$~;2M8wB%*^2)T0o0e2}X}8~^ȝx23d}U)qO;^O=<{<{XK=A>cmjg߯Z&+Q%XIaJ;,*賩s'gfuݴMw:9>x,M Jm4lm?[rfǐ63KPt/6OFK5~)n|(k n|~ W rǑ":uڹխנeFP20*Eó #szA?솾 楖x,Urfz=biAm%ī w6;ЯKwm/c/~ݤP0ێZ浛חgH#vڶH~!wЯÇ$@ ̄nN![{zss}LP8ɹۉ=YY]/Ny `<nO_qSK< t&'© {@% =S(o5}()|`ӌUFtaU;X!wRÄP]lv'GFN|FGrs3[@H~Cj=ۯc逋&]O={߾}W^j2(AMO'->eBR"K3~4ވQ?TC#Pj0H0p\FcV>_|3?9Ղ5Fe(Jקġ4)b: D"3Lb|OXz~K+}х0u̳q_.ךhڞ;y54]QZ$3O?cGWh.aDY;T6TnB=-R-N®\E84l"ٹΏ= %cC7~jnu@k!,[Sĝgˁ7TLO;|ibrBg0*/ȝ@u7 }b 2o]ۆ2?йu]Ƭ,ƣxRUIX+.w{-_<ٱ<&}#wL]*hK1 $n؍cİΝ tYOʰͦIHI>ĝF1Kxs wu;//pr+tZ&JUTd"sƦ8waG冧d,6L3}+<6t-O:쵒Ig - $AZ!w0w25r!u_T|ߍ $M<2pws=Il׺r$jLMv!)9wh"Y\ dq@${j74TYêO<].Z4^j;]&>#g~K:ȝ+v k8+.J`0@v`*+^:qxM8wL(jΝ7h 8wWڶs$Hu@8 9ǀSRl\mO2+bK\!a[P}m!wP6N!-0+q])Nx؀|"Z4XWjZw2 ^vhuz4GFUCF?2SrWZ 'mב|YQ #nJfV BT2e4;>9Ѓ\x*6%ᅠ_LdmwPPhjA&lۭy;ZqҴ];B_m܅C=8wtE@| b~PŨC;;AȒlʓ͖}T{2]eKë>'2 b:L7a {hx{?`ȝ jC=cbR8IJ}"wT$K&),jW21Rt5gq&:ރdjIqqǪG,MdzBt$;me >f[PHCg3js҇J"ȝƘ* $X?IWxHdwv[O]aVԩ[b RdM^; t-XF StoW/v?= TIR;o*iXgD,6pe3o|S~^/oZzw^ѧǐ;(qmr'S찶aS rw_,D>Q~ƌA O䚺ᅭh3Ddjy!׫'ٱ˗/Z GZxO[ȝ=xF7|/y'>{5)xez6+&ց0SG3j8YG]C?pdxzzZnk#Woj|\=R  ( NE9AN}\>3ˎ.AN~bbs~ x*+^9Dj rʀ Zv|PcGynˈF^P;$ex}Ĝܳ w)⥂ܑ+S =eX<r N,7nRjZi_/_ɰhݐ;+m-EW027ʖO0eWKaԽ~BrLƵ nY+^xk bԼ|pѻ!wl8HijUne&(ts;#ZD4yT{u&6{Թs6'aɟ<܋W5" OURnll4''7&!e̜uȡs"@nv&Ծc'wv Fv517, IDATDVb#{!w&'rsjj򭹹kR;͉CDIDamt D9w1;޴a 2r=;rUHeI~Tsѽ {$XDxZ{(!#O"J"ݮ9FsV"KDzcȝ R.4R5}fADBdt r'|p$"DY4+KEWG r׊COǹup,f?WJ7*q&رKe}.A Uo(ڦsg-$kf0=2^epc~07AFa};dlI1zh+P֏=Tdcs=AƢʵޕ/tQ>R~|/on±D4s7I, qvң%g1^:a(eW\Ȕ%Mm7:FTMYcۈŒӧOzŽbM4{Z0Vv$?fTswAot@䮺cKL)[T[7j%oL{~ԯQN>DT*! Ko.TCL"$x]!we&G)F[`hjq$gv'_8@D\$>z4lŨ ʠi&3g]Nj7FԛOD-URK( D-DwfC3@F“aHP1N2a-]0ԕysAd&}3!P|9%'u3{_@$'~?lӟ>G w{y{OOxчU˔CU,U$" ]?h9:w(i0$IH I3o{ܑHxn=衻zP,LνjBdG .کs7 MڤrP,#B%).j>S;>N7,P(;t(@mV)>O 8TRyO$MTI IbôL׈+%k M50CXԛ}Љ_殺٨7M_=2zU,L>ȍ2'r!lɫZMh@4<s X57;Nt:uM4e6r[+[sFlG!q O(qSOEI0`F:zusl힗D w RoTZ.4g?'~ 4$ fM:6&Ihr~pBw:gVwNyJ#SoTJooRnTv[>$TlBүoll\[yC˷ݐ;-౽~Mwח"A$$菇}i&F^7 sbO: AAwN_/#n !kss>|ᅯU w^7q|l'=e~3e^CN&sf_k`ʼn jD9ϻ#wH׶[8C'gXJQqT{sv}1sZ[CNkxwWP k %Ahvcn_r7䎮ùUlF*{w&faN!B1sɰi6|\-iF4ֻ"@eSpZ:p,LPtG# Jټ\>y؏n1VcS&Y:~0Lv2}sG XVuWӳ ǐ;5l#m}2-;ܠ߾Qcs n~0_O$7n.2]H5o+e 5TH0;?"Nq_˷Q>eC}Zjgɒ%q'fEJ%U(SSG-A9ZU5 xT`gHT D+M괷=R2ފFe>rxje:( ,ZAXlZ9Glm2:eKcc3ʼnc'zSӾfZsDŽ2˅"uJzVԶ(Prav"BisTNgƹu]:#@0lJ @(BcS@Fբ֝?:w܂Q5RH2e;beco]d|OaurnQŎA=®s/LFNl}. (w ;w|'j8A6!2YW%/oۗ/s7^ߟpm=~yӝV?A??GrwϦXLI ¹s܉Z&{bIz cp]L-P@h ŠנpDgq& mzir5W?nf c *{&W ]FO iR h Ʈ\_|e%2Nj(څ,FXOHԎ<*Hٴ:fc=}g  4T!??Suo<"dE BpunEp0ńi**yYR (Sf b<"@ \/4\}NSSKŖ ]#ٔ7 a̫\qUTÂvJDj Ī[^%&͞dOj判w>0N( ./Sp+!r' bJ*ckzdkJv7E'iT j=^m bg#qΝ꣣:w$S8[d+dLcZ%Ahkhتeч,R᫞k}+L$jw\f]ȝL#ΝuQ˴!e$@cEpRnɽ"|,jnbt藿iDCP XQ:^7BE@/^Љ332 %>; d7瓁4jN.8EzT7חvF=iv3;9oS !2kVQl2O9s* llvoD•O>[>2 w̥)X,,+LjJ wZb)02$‘WZ'qlot?@i 783?@̙3??n6p;Պܡ/3D3tHxB>!]ŭT*h*%VmT{fvKLaIVW Ruk߾Yב#GlfGO^rL_- DžBwLT_EOOAeO 3ݐI a`zz}@ײ!c8%نV4HW;6WW?fgg `i^8!n``_WU"EP{7#l|8z)NKU+7$mϥZ~0Ͷ;(\+&7n} 6pށ?ܱ곣bAzB x@{u_4M<h4`7O7,?;rC[bMTtE'SW,Jkqܹ/_Y,,ŋCq/N><@7ƅv??Nz/o8x!_3<o)nۓXG崷\׊2cS7zssL6hUx~;RVja0lĕZϼ t5 dZ>'?о[F0yAe ovU| JS??)f*+E4}ùJؾɦ跠vI3 (}F @ͭYH/Sma^ΝHBd ]Yrh>P: E@vrh:G:w+FeVo&q1܍럚sG$L UbD)j,.5QѶC$D+da'6Rb#ɰbeS"2F(uŲ%b.ƛNͳ.oZdr0-) *scNm{^ۍPП?|p.`-A+> 玕"\j"gMquظ04QtU])vz(%<ӧ+6iܑPb7s^/*mӨԫ[P'^z桔8 ?P{]V.MJf)36^{|?'S3Fz?egz}UNԵjE3JQV7dǶ" Sr0K8D%DNZv1h/Tn7n/\񱺑-#25'[PL /]!ݴāwȻ 9 $[96#"vX$"wSȝp>7L51Xnld9c5e}!2 w| rnǿp}t/ w{x<*1p8sS~H$W Jk&{3Y00[Nd`u 65;m=t_ )lj\46G7Wx#r8R98u%'=NN,W"eǁ #Ix;1b>5}q>Άg DvFp, RجGXjdhz$|.j[݈GVs2A%z47skPf,j@j 2sV^*k6:smR#G뒦ϙ3(kt],R4YL$KD"̤ۢ9;54#DFuy;K:9qDsG^ )$|ն}7.7jwu4A.W@6mK̓)F2 B4x%b'Ko zhUr{L2#Qu$U&CT?hFfS0D.R/6Q#{#w ^r\'n N͹"wwo80R$"F`N[>>f{6PZw{ wP%alMjj2RL]MoѯGlkNS0S^iA4BZͫh!r)اDR`:c9R)lADZY;q#/AEw ;5 *rם͕%T.^bv>}Rc;UIH&u+'iZ~c㙱V0u<0 k[}7pz,NILj;=k`Eʒ(,p!_XY'nNfKeJr6P0"wv&W@^n TcJ=hQ8m{Hgg~.mU2]]mtO쐢}ć}h =4_# rgvc{zzTi#"&";ʬjT̈ sI`C'C~/Jg#;ߥ.Ĝ(c3smNMG=rGM?À Ogҋ+'us/NuM;OiNΟo,~7yAZNx51sR箺hv b2 OPLWʘ5ɥ3%rB{'0/pc 2>Ș'%<;9_y\ PlTQ;k"ݥ P F11PxtS%v&w}ꃏ~94`bc5^U2" %b.dUo#;srq7 3] xQyCe4h>!=y&8kw~7iCG+XIMB*=B?=WWw3gμ ٤ }Rnr<S- }F.3#(*@{-4)rRH^ $5 TF U>kӬ?\_=r>FXM&D܂v"4^-5O?ʱcf M 0'8wQdtn;00BWFH~z6 u,;sC ƿӟ36D IDAT(}Oda2*|06] C(|#I+#|% AFl7\G Ƌ]?}'w}j v/}Csh 5 )RZ F(3Xs b45xO|.T_'Ǫ͞V7fz̹Yz$HF*gO^p-9 !ZܑNWbt]?l?jC)M}e rTSZv~R'O.w ""qͯZūV }"Kj"lR]W0eXT#f^zx=]o rW˄s"?~>Q6-dQb4(UY?==prm2cCΞ˾[,Nw9x,&}XL8wPe{n SD z,jfX&qvu I]](6ڦ'gt.';#2 頖 dW,Ki곍g)y WB-|bdߒj"" m`\czn08wjCKne r> hZ֔e^3Zt*rܻ:P˜Jp#lcƌoL@pLiO2^QdFۚ wڍM~ ucge"F? P$$=ǹwCp䈿}:re:#Üb 8&=%HuV޽:(H8wzsQ^r TD x>Ӑ2NQ{ a>0>ve*u:/dϟL‚p t~]ge@נXr wb'v1lb c2u G)H'hMw4xoke}ל;0k|i;3dbgnD_|s=!Ν,Z3Vtq7!wzS=q)ja"8vC$eC0TH,&z )m;~llhU!j~Llb `r)!~FJ,^r:[j3{#"4Ԅy! `0XA )cjfK,ggU-㷑Uldk?|*76Olnn\_Z>U 5yAlqQˌ 6Dz@[<' Q'J +L-)U+CAڹWO,eJJԘ̈́LbOq;IafxG5 ,z靋3.L6c[N!A::ѡҩ|ɍ2f3` \zaӋ/&p3Fu@ A)h,[{B WgP.?;߭4Z +h#4@ݤD*E7@TN-birغ2{gZ~\M6wv?8cj J[ '*D'LS?>lk_}-MJ)~.Ru$N7.!._\n.b!̝Eh 83L#пH/RA|9 {C(5cv3{ϴSԗ7KK""O ~ut]t:K6^͞_*6!ފQk̭ yg"ZL3˙ eǭ\b<¥cJkGEGݍ _:sT9!cWjʝ;ܱ9ۘbvC׃kÁ;I;31R zl!vhVՐiҗOb? hK.j&yF;급"IT#DR;7oR|{e|^-3s֋3ūSS'O.6\ᐻx$( ¹ CarX4]D5aifdKF7MzN-ff;4uK2(>4puԦnv(? |4%O&-mv.V&:& s,sGrޯ;Vpk;f9o:PKR?z[ҵHݓ>V4~φ&:MXM8wms3H¹c~Dj7#w]߰*/@KsA;.'3 $|_W̗BnjBqtrBns';EoxK*Ҧ>Vݱ j'ݧܱAhLe"8 -DCLZ6 꺧y`ZW3n{wьd(FcS{/ wxqKA1 $*!#S#Gk"bijx[LGHF-f[j(a%߽ ެBAU W2uKi(% GqtjLӢBA$$sȝm/_'C5Gᩛ.1V:Ue5гy.l9po;t5ܥ!yWߐ)ֺCY:ЭFJ)J ˥mY &F$Tuk͆ʼZ jqo$Wd~ )r?Rr/y4)X. (FōJ>S6|҅QcŻ7+p>yLuzLjϒ#,?;;XD-tm[AN&(9:^"~_B=!2;}=R Ro[{'Q+RV[4HX M šgF DaӄovVZnz-;֢T`49 4Oꎜ rg9Vq:tXce.X rɊ(OvAB(yH8Mn w*0@=An(j_U8 L%"4,/.^zkA x!/rǷsN2XtvS,3qrg۠_jkXN՚XCIk&n_b,Z2h|Np#ٟ73Y؈yt!T?BN&~u4HL+Zއȋ;0bNɼkbpbpg)v%!IZNP;ZB,0@iC>7!w r [Ge+]ةbxFB4?ȟD@4ŹSkҿWX~StbzU :׀??Bu;/Rsv;s/Li^aC8Qhp=LA>:LOloZ5;8 S Cї[BVcq74pH'2f3zѲݒe}?Ss@J%;d }@1cqd5v"]:wY?Z&~_6/i 1rGJ0%RBEG-#Ƨ͹c tӥC~CALcr3||q#Phcqfj_w]7RotB&{a#]nvOOG-S-+Ӯ:f3+)ndl#W, &M MQr3>N8wiīNikZoZ4T#EF)9CnوȠTAڃ:"(n0p@};MKz>D(\){cܷtQÑkQ&љt@k{cwǟ~ˍ)oeF;x* chGT[#B,0eo}wT: @z\Q?:w襳U'`K{'w _{7+6BJm0_,V#s'K{CuZߢaEDza*;DqIFo`DM@vTiIJH IDAT唨eN;G;`XOe2w9gI;>#Q+r'W;r=RT|$AVc朁F׿o~Q{#9Aq$50^;p:w)ʿ9@L}f9wPTVn8؉B/qX!w7{?G;P|rw~rwsD׹|P.,8R$[4A]5BAZaPWnPe%E=  O4@}^-"G0y}}22!x)I;9D-\8#B!U\|6%"c$v?Y-zvk,i $}:׉Gl:~A^f֚ۮwPx/3 CJ# <%_J`~:O^.[+z8f;Q>,"_:8o!r`1rx>1Bgm7{/Zs)r7ɦwͷ{p:Ę8nOeuy$ L̝c߬L_xPO~$jiKWGP,O!W = vAyZ&+iE("D9 Tv0}jT@EB%/AP"s7~vIMB:{71xl}%Py<nVۨBOoڧQ\t \붜y(&_G~k4wZؘ cIE=] ʞ^~svwk%%{#@-"tWȝ!~?VɭFN;e`yS=&w-”?m[Sz !Ӳ64HJPXQbRx`!EØ."n|Iub#]zP8]NɎBh ;-{xRr.0Tb^<PJ0жըGX݊VfM-UpīR W I1Y[N2wMG28t1 ,`VP cPC,E FHf>!RJg\7Jx\)Tn4 GZ2̒o7\wCEKO|iY$䭄x +'եh DY~nQ^&y^>y"GC@BX' .JPldY6QUg,9Aī,(3}!3{rK+_@V-Hzy  ~ImDuw+^G!w%XòCQ<)Fs["L6wFĿ&XdxGx͖20DO"-x rGI@엾gٮFҮzTa\fʧ(>775EV,[vGW}_ݘ rG[`;h˪q rJL9SKK >{8rfDjpZLd`8V ~syǿ?x:rAYovz011i7n֚c; @t<2H>d/W8Q.3^d0ܸaZT FF%W5#C+"ZR֟}|U[TG*1r wgzxd7SNTg!k`+_#.1@P(-"bAivIIHNK1>RyʵkSg)4]!{ahWV@/eF}ӏ1C\doa)Zf9ȁ I׾FN_W^CPE yM,/ MTz)8Pjos,au"@>Ze)/dX)Od+䎼lJӗg%2X+_)2_wT TΝ*;U \Vǫ3muȲ f; w6As@1nb$w154hV FH y.yw֕p~7#w@Q]81LI|2,X*K*k߃/# EByN[3mnWʃfrT)߱+kW/7e#w&QdePVg~_ T2WR0hQTm0Cf1ڗHA6a];ssͩvVrv?*6<*oXmd9ę‘4jTE].m{L8~Gt)[D5 =N,]˷{HQԹRzCv SXTux`A#Ů[ 79@-U׹#ẃn%R2#MTsgR t\7xI]xR>զdGrm]ZR{;A%-p(ܸp2f6yӱʾc"G3mu⨱'L0O+ R*$v >QYGpp>r¹KePy9dS. ιcFcW@ܘԵ=r'.9CXjuܢ&hY80cg^-r'sq/o\i2h>dē% d*;dtLe0HwyL7?n}cλ[?rw~rv߻Gs7?;}Ν8}}3%w=-2@_P/c.t.3-}SUu%Wj!a϶׷+wd/f*od2ډr= ֞Z& D 9L03yҰȄDDlZ(dcLh9~;l.`5 b~!u bi|J/~[?Mz-j \+pIZ2Q[|}uk?NJ|^IBL F&GQhnosIԹ2n{JBmw,8w̑0 1rpIFi$fsq9wzӭ֏n:we@h̓&H86#=LZw{W7ϑ~rP?qTfH^d%#zae8L=X ~qj6x-hf+Nİ2L%{s%ߔeߩ[pvȹ nIH'QL{rBAG[-@<OfiwLʦn"#c%f`ޕ>HΝf'uz-ak&܅ve\X jee]F= 3dv;MR;}#}^4 6y2tEED-yY3J?R+% Ԩ ,&M%tLzT)%G(LC~BoZ|Hr _DAK%bəfE-ӄI}+օj rdD`X# INl;5*ZTŔ'%tloNvo]7CsrFtCk2XùILDfi'xx`A:o*g]0e MOb{z*9./w7#/]J 2B ©!m\I$G2u&'ɏ8/˥Qnx2 58ӬI=t4HR5Jw 0u#gҩ-. *TcLcHBXK7#wD}fbfC8.oB$;TIk24QpΝQx?QmDtM7=tU*xŞf׌KvO7`WT}ON=nWY|'2Hu; @B-zh)8"JçCNx ((N.@^N!<:1R%#m\LdŠu~,cfbܢF=ƶQ0C̙({kU6/Qױ-s߭#j8GgL۔By7̥wRTL"`kd ,8I[@IXi\UTSk~~%K/U ERCtYg]s#rG &L2 ;ETkuGt$uf2Ur _4m+j ]ͽ28#4h8;\g?яFx׃IV9N;5= rqx̄h@ExI~ ' 2;-U5v  L8:HIA_K.jg;/,,<|;O1ت'i8rf a跠X >3%H_q,=P1b -ܡ3( ''9̙3ŋ/浫Rۓ^!e)AK0(K&KVجa0z.Ә)/R(21trl!jPC'7`0C ;fq ̲$w1yT: iF \96Nȍ9F@nFd#}{d@8;RyZݹJ2tV+ōBֹO~l_d LEVgj dI1RI!nxYnkued}u*SNm櫍?l5qG3DԹ+svޓ̉xz1'd@hQsFh5c`T,ggO>jzs^7~2[ = :-j KIa2 ;Γ]s @$k6Aذ!fsf.7.Oʹ .&Q)ƫ2䰸h?&l&ݪ,Xd\6)9uIN]4~δi#z3e@; -3L*m).;U@R~b;'f{TtSL0!EϹ58B|8;'f9v~fL;\Mr^ϒDF8Zr!]\&|XH_/ w< og#Tns9ue}~Y2 pyU:wD!ь79'=?7Z3ɪTWW=: _s^2د-2OB=lZ\=h_!Yy"D%<)?JmJ$!!eK+^81ݵaLE#C ݾ1xcF)DT<` j1TU8Ӂ3WG30xp{q+Tdaa1U(Tǹm]#ͧwS7 nEbK%E$H`X<_m؏<;;'dNpSIoěs{bE3[t=BMC𗅶៫˽^á+]MݍZLQJV'Gk>wwo wQ:r8w!(fOwHVfaav2>!w*ve ׶: 1$|½40ﺒ# r2A9}:z^sOv_p̩YFgg+Lv:b4hz/Kfr)o-,ZVAqq40_7<ʚu#r<[\Y!eRP8M@Ŀ|+ a%oP 5s2`s`A\xPq1r!xK++ǟRʏ4-TYE (<& 8TY_&hܨʦ̈́)Q|U!wt;<DؽpjiV<ޅ쮮?;<2L? Tt}RqTkQ!M "+"S+[$/\DbA*pMm7f L{뀶l{aҰtN ~%-$aG6]F t+Z=!wje:sGH+`hUw`p2}cū Lڰ1wI֒>)Nչux䣌Gp!X3ӰvWs5@BR; +ʸ o1GģL'm_Gk{}Ȩ}[-LjOc# mn~N{'u}ʕVCfB [ Ɂ@hz w2g>#/s$1@=<dMQ4}6 vµ+J+ (]#w$bF92b:a̎Q: F E1xd r7@-&:2sqmmu ,7#T͋}Ǩ (Qdܹyw|+m\[)_Cg%)٠q T3žy|sM#k^=GdbF^{M{/,O^іp-;wbЄs<eq"/OfpH!HM2fM."zW=b`5LGJopnnNg,I4Kϑؗ/ qv >NwYQ'k)["`еZ6Y[;\&U_]]?#w\ߪ5 ٴK,n_eDZG~ȝʋH5xjPNL4Q\fj"U3*&o(ʹt@l˝hO̶f;TlwZ{)ӧ`T\uKOp; Ǩ%:wv@v"H?BE# I%RN&2 > IDATrgK%Sn> >6Νʱs| rg&IUK9w38iǩ *)7CΓa '[ lA&qCr>ܱUubO|œ;!Ň$ȝRHEFv@{ȝ88=/ZgNDZrwʣ瞻q?›=A;Iݮ~6}69wML7&q{AOȚm4EN =myN|gul˴8NiIݯi=W^J&v\4'j3r(Xi.5;tk\\WHF)3I'&g4rRY"GcEvsWmm޷]!vf9Ut=鈪p9s"db\0wz'I/ؽШy2[=2ų" nt2Ǔsׯn&:w])B1u㲜9mN*^M, nӋ<&PD-GşDom}Ryd( wD@Hɑ(Np)2K )tb qR)]Ƚg:],1=x&ʬ,@IA/$ȽH4 ƹqsm9wUw ˝bwƍ?/:X!VpR KF I=>}g4l2['% Qj csh*԰ )k/MB9M!wq8wTy4|1r@^Y8r[ ,SODVl^f;Az;6EKhuhwxJ+#>UGAe^{1XCK9++!賾r=gR{@FmFZWN9{;:;"+*7xMV1r<4+i% =~ޭ0QԦ|=ïN%u# dIȝ6i{VuPW99w *sH!wD-r`Y(DnFgjŭ-F4s.?ĹS * $)3 >c5$0WlRJ t&'&TOs}COAhý)K^ytV~æeDzjB2@;#wѺ^$N6܌ȝE~ͿwB.t-WXICM0ٓ}S4pLw9օL,|`.أc]׏ C3Qߑʹ"gjv( Vw(= %ƱxWD[]^Il  $~2} y&lL v+Dݦ9o'jYm ):JOlӵF*q:uwܑNrMi54m O /zpwuj}F3 [H;dUk/ࠕ=o/#r *k#MIBZ|{ ÷Qt%?|lV$O!wi(YQgo ڙZfyI\;a:g|~>-E_0J-cK*YZ`Immu^F/pHF <A>{EmԿ;J">XP4P{KU;܂ܑKS_x4V#E<{/)y;OGuJOCg&y/_x>~)Ҵ䵱HwܓvfѵTuZk\%]xA^վ/iO{]6Y{pzGk/ݵB.@jӞԨ) nFJ[5c[F QN%߻tmp\n3w=lt\uRR2ʣeGZf\JFwlvSn3ug,7R[ClUo:>9sސb̠"=6LSmTkgߑ޲˗/L56|;QDBA!wi5=,Ei_ @z'!M).E)b+%Qݿ7@wʞ*?DP+O! nF&u·sx'J :4HqiD* r4I#wr(c+j (er8 !q/9w9N^LrdXܪeCT='E%gGd=ݕG}s-kNG?(rWmuQ4a OW-5rԻ-<9ph:AЯV-M>S9J]n4F<=x,NpսDĽF}T.]ɦB@[Ιe~]:wj{v޾sOyL0X&P&*" f WHRHCv\Ajcd/7#w%n_G%,}DRsP ǁNM ŋ"QD-[oVpt9 w 2O_܊w|x(idecߩ/kMm,&^&!-ސQ,-:n~~\z;LQ_7b|ZnZԹ)^Vd׼ #8K\|4@ e&EneGdBHrR1r?@9}-n5=FG<Go5:V}RT<"G<&>:dR^g@ w|,HlWCVLE:M^Bʝp`"Bigwf Ǫ X!4B!ȷ$4[# `r\7rzrڑ~-Q%C p!ѿ"M7IX JxUL"=c[KQuƨO5"D#(JT"s߫BLfJz rGvN nVˤ}k-c+%x ,B4ҮpcmA E+)v*}x^9#Fd(I ;=̧P  36 ?ҨZxtl#b#b 玀?Gi*fgL0!G0iE=g a6ɔ7]KK%n͜sb"HD24mo[5/ C49tY*Q\}ϳ-;*uɔ/ǎRfA ۝S567nJy@q áP#=:&a{#AAm szP@t"E2g:;ѤdIcBU݇>%.2EhO(3);i}~ ϧ{Џw|I1\~)utHꈵb4d>FF&I<!YTŽ|(( a/R $C[7ecz@Z=ϩlIdXLĊHg;m?qvBkƃW2EBl"`xR_dqljZsJ-r֡UÉ啭 ` 6h, GY t5qKzan02$cs%+ng;I.! wULA"ܹ XJRuj١Nk T #wRNӍkA7bLA2u v _Α[34 qOMAy fSłW]uMis3VJ:BQjRs7Av)g Nyjn <;?.CekIn\{J_˻CsBX:1?3:{* jL{o60ž}Ty.0ukYb"{4d$Jb ,\;MJZvo^>p f+nnlP`fT ࢧ~7=A{𡇎ܵrr_0Mo.V}ӈ3ӳ10?ɤ=-:Th!ABҥw+33XvҥKc` erB-P`AUȤmD٩>S $zql֘L3]*π%3Spiŋ/ V~HٿwFne(ƙ>lNCwB=EWLŹ^/9arʓO(Yd 2r5 oFsGI&m3K@v"~f;YQȝbJǧt{ȝ3UN ̸QjꟲC+rw-G3rwwʣ߾=Ǯ;zrVdOCe ͠P'K1 4,N6ۛ5 0IjNN;8q[e z#fMϓ+LHmXGT;8y>kWvVmv"IB"yk"GXOywL"=S|css,K+ȾfV}YZ|m/) I 1w$#eуn9K˷z*/WhBlii#w+u,;o?;@ݑ \-qjb }%Ay8K]#G/>_1W=ZK%Y\QPz;I-+֕9ش?LKPhlCœG6Ia(M#&9.gԷb;ۮTPj]nw͓D`IOWDA8O wd·˦7J`-=D+xi"Cn죽N{٬EICRq:w¹s/Es1z0m7{9d2 TlP RlMG#z+/߿=~w#כHݰAM%_cuCF"hFOOg n: Jֳ<"Ȉural<^.:vS]sTjDǹ2b8Q1wR.>ʕ67/U 4w.On\yp3(Q)ے"ZrqRબHvʮB첱E c[clz! ^ _@}1#> %^`p{scXܥ/wBe.@Hyy?Y,@Ceܑ‚=N |E}%L& $5hӔeoC.ĵ"Ie/Iuh:C*٭ >gMPXR,8G]D{39Eꍍa=כ?"Vv.L`=VRWנ;kd5i7ΞIj4a\sgBV4%ai$C= v5pm7> (7"4O]5w"wLbτO$p!TY )A%I6\%ͱwoAA\!wfVe4_ l8 s~{= ^ q2z}%躸N|%ԌtufSexzN>gl Xo;8R1L6>ukfbЯ,i6kBʚ/9cr1\1 nv{pbD^b۹Xϣgy]M^ȝ+6p \0tK8STr:(T?X,+11QJ3"Ɲ]2*E*T-S5w45JW,CƥTXdI+7lܑ2;L?-N0#(m7@/,j Un PRG`N#wW!w|-I A˵ר[fR@74F@/ Q1 t<9Yv'R)IĆ4JtbB[qtHRj~JOƛӉ7ԤP w&S T?vf-/4GgU߬9S#w{5w ;gN~MW6KH|n5Eu~m{-i?|,z@ٳ/}K¦ xc wϿ'vy\(`ʐKd% X"Q\oZV߭?ȥ -*# DH$Gv<^H§ǽn  f!Eƍ9 ݵu#-=YsWV׿n h_M[%AIZ+~g;rakT[Y$-klKW\ou_qq:~]u5xt"( :8%:™|0g;ܑaT8}^jի׮~ڵkZ4;9b֭l"Edj&rg.b'Z-N>R; V'?t޻Er_Auƒ%+z.䎈 %3òg˔Er–l8ΎxkJRw܉-w۽ή{Y"$$tĬ5`{5up?T "wPy.×`9'2InYv17}8N^wdWVNN]?tet`#$js)P<1y? 60_hww08X&;䜿wM^oG?B!w4(_:'qfؖ0$f3yMp sJ y`L١nG8rsK% ,Y'Qxۮ4p7q|8:&PP;ÖsܩB!d3!_AD d=< w [>܉-s}}o^5 I|05i$P,5W-v0n92K%rG^B@D !%2C7Vv*%EV2XVh5SJ h{/1 ''T,ս[f{zQf{Am֤Ll?.SyxZ" iQC#&?/.5w\x)C#wYa0gR#N`OҬVgZM4r'P !tĠ$ >쟵Zۏ&y3tH'弶-?(@ 񉼂 ~h4oCpì0X&>3beɳCܙXf*N;%xNnwwEt9&܆!z(#>]^)lAp.s+My>LEvn4FN2!ޯ./.Njէ~sШٝ3P1>4ruICy 3 L!o~ l]nl"T ']jcԎ#>ƀU!wGcykz~ \i{!!URimLFdii;b$܋JK'xuMƍMe6ϗT LshZ# #NsH7GAT¢ͩJ٢a$iS6O4d)0,5TIx 0lx YB2F]mfS=R))Y=T[w~Ŧ%љf -.؈QWe1+Iw9rkFt #lpm,G#Kpya>ᴺ X+{7$+ÌCu6s)'~6 4~ ; !_`I/d+rw o! hg˂9PO<( ȏ^׶WTRlB(87JMJ6adif=Xl2N];RBӐON.c2өiG?ZF#wLژ0XZoAقv2SV엩^ȝ&k̝@`V. s[Ņ3TLPGFpA [f}~m8Vڧp͏17f 4Ym?|)qM?}jzX$R$8a;0JexRl6AL*4'$x 俦O˛;jfD`[b|xQK N%8wvG2Gȝ24i/NQ4to@5WWrΧQ~r & K1ɯeNvvWsWhgH;N.'_+5R2L !wh~wr 2 B9˚뷿)L.mJ ugpe9243qX S >x@ⴽGȝ4za&.&c(v=鵿Q3E{P^;@39K֓B8$[c.QQl(VKX;6a/Z[Ldd탼%2zWj0|`HZ_x">!wD wN3ewrN# w; yw,Mn$Ze{}R" ȹ&.taMcR!g{BpohP?N{xKݖ[mw? ,wbK1tk@{A.;QܲS.dx}REhuzC[gZols{/dDr6КQ̙Fh{gr:R{8q2Ūq>y2%4Qϧp&9/NDS$sP%󅮨0}:?䍮2nYsF:RAYPeV,J;2Ӷ]xc@)r|}> ~Χ]M(\0Q,ï{R8Z:\Fd$# #QpP Mq{B(,y {G2ΥVE# }B %.{[ezǝ6\;6d,W]V# ۯDJ8'B3|;fPP"5:) uXsnml:pd5D7 9ݲL*TgZM_sgrq,!X=x7c!s_+E=z+}鼹x|3~>:'GB>7>6NMܕe tvjo0-[ƥ 3+m9@B;S:GykW2z {⹅B',I$5wNf:q]J,I AP29 D [pqRT3Wբ!sClt75toO. wzpKTrMP3c'DMb*QVi&RicrC;2BGTogg4=Klh 1< ^&_f@$zP,V@XiknAEngDPۑJ9J0_ODQk fcv)GiL/y8ա 4.tȻvnZrs3165w2{BzRWj5rin27`q2OAriJtQ gHˮaTNllĆ'Z_n}p 3&g_5ik4ǹ* T@'(='|<}ҥ􅧄/X Fg8L9a;bNŒ-Bp} SSQ}Ys.OiD3l{|>z,zmjkk+bO<e2%CH1Lj.z>wQ<.ĉzmR*FiK26kcS oMq2 :Dv~w?z߾T9]=ՙCeF<9u@ccؔ1<m;rO;Vw68SW>jom5+?@qwiSWP [c!mh#u$r2ᤐQUs'#L (sW._e>Ay[o4;F!{r IBw]s`Rx(AuO[Q!~=BPȧIENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/knob2.png000066400000000000000000002005471461511344300266610ustar00rootroot00000000000000PNG  IHDR@yFb iCCPICC ProfilexXgTM.9s9J$ 9(A QPDTAĀ"P@${ogyguiojƇ{ P0@Tp}[[+I=*?w0E"޾Q>`h@X\t8L"x7_G{CPh4Tj?$d/$u|f!2R+/LzkL*_\7FPT/o!1z)W/l 0ArE>`ԐE#spxBd@4>%?)>0)>9yd9w;ɿۂPE&y6Тxw< `1  zX}Pd@2 A%8 @#h@'=`̂y,uA"C; C@ƐdB^?@(**PtShz-A/L07,j>l ;?'Yp\-p?ógx P$ %RCPPTT.UAGMfQ_Ph,͇Fk>t*:]nDwwe.Hb40?&)4`1Cy:ebUfXWl6 ƶaOs5ǎiᨸh\6ׂ~Ix^gK^8~E'4IB=0O"2EDGb1XNL""~'H$u)N*']! ޑ6i(4444144ihidٍM. 7ߐ2КҦVvЎ~# K+N =^ސJJ_EM~AaC(C>C3E "B1R(u9F !z!y&,(9SSS+(23Yى96, EŜ%$5I_ܬ~9YY78r؞bc7ff/dd́ĩÙy%%eϕU5µm]}  OO O//#o o O|||!|||\f1GD d $ ,\J$R & \&|_xCDTYHȢ(h%Wbd1]ZgXq5`j1 XBY"@J$,"(Y-T #.&U+BFZ_:V;+LNoBnewBf)=  > U Ɋ&i]+JJ~J5JSʌǔwTTU"U., zQ}Ƥf6Q7POSqMMi`fE-Q-?z9mmyY>/s:TZzzz z A- " 6 5 S PFFFƕoLLM.,*&a, ^s7/[ZX ZX:XVZ걆-_ۄt{m+ja{kgkWe^>CúIǙbc89;59m899ϺȺp{GǃCz^x9{5{mSQkkg} }|>.i->Tth_ۿ)@74Ka`eJY٠}BCB^a<? Ј8iEyDuE3!D`$F,h̻Xت؟qNqG$rM/$|3ߥ觜ORSӲM3322q>ғŝ5wl4=>x|4G1"g77a\^ivO'O*=rTةB"Ģbܒ=O?(U*=[F,)-*8U]Pʠ י3վ5z5r;\๩;jEjKuu_Pѐװs1l}`jSS3WKKK--cF]/oci˻\t5kծ_!|L;c{nԑб9ۢ{G͋oUf}؛ջw'Z_xߗ~ρ.w Y 3w;÷h<~ʣʏGUF;>Syw\wh3g<:r)ߩ镗/f_a^徦]M[m*y~fgYKxo-,}:is/_&?z,,ϯDg~ҏ5۵7[?6nmka+n]#ӳkj/to/IP>tՋ]`?@%B`a[ZQ@0 s(?*:#VF"- Ah%#S^30{\cC{qqry? $. a#&M+#{]nKAS1J;Mu M -5m#]7XlRF/7,V\6m5 lwrvvqquuss;v˞jm'qן1-]Ȯt:DDB$5J?=[LlYxImSRUhu3(3vccǵrXrv:'ZOVS["yZTL\BRJJFYs/x4]Lln*ltݶ+__1!U­^;}NEfCU7HxhԓOUy&?g3^ yk0>n}\㇪S.$,.y}{^ZYU.C|cfɯ;.{{'A"h!Q0s™**}ÏFdpjb ɗƅ@BMÐGidc"Veŝ3G(&Ɗ5?!E/-&$.. ȣD )PGհzFfVvN=}UC#!czSٲŔU}ŶYvQT[GNlWnu:i%Ee~[wPul C! a.U)Kw"|c01b%'ۤp|JI;aiXQlcDžsxs(;'WNnJNV Tί.]zA܄}޾'V @0(!,d Bs6|EFEELG='yg4] tE'(:YްnS89MR9Z{xjB~~։S6EWJNٔ?4WmWpmo0_}w=`۝w6CW<i{:B{̏7nsyB'o\kʿ;v=BDR$_C2#" i솈7FВhwtP1嘧X{;,p'qSx!|~E#LՉHDRiƅ1ِ|VN^NS(LLL̺,1Lln0{ +'WE|2|'=DDrģ$$dTeT5 (d6=QT:}YgUO]?`H8dLӼbֺm;{_Ǘ]λ~:~cS+z{W/P!)BFUXȮhؗr I~hffd&8*]p[Mns ֊kOJ#˦*t*L>PTӀX|źu-*J;z~ǹh uA#Ouc&`JF"VXHiXh*ɼZ9[tVtoAB0V012ױ8XU99Ӹ̹Y]=0%A!4{DEŞ s7Re)rRȎ.VUʧ^1ŬӬoklD05yafa~j&U9h9w*pu];p#SkջWү_"!H$)T6;4b**4[6)>ZΔQqD 5[<(R)laU1OR\Y\B[DK͏sM~ .M험Z['ԯ\\1a-|KvھOw)?0cO't|`Ze:o ޾~'>unl^c%O~buu5?73~Q~"lElMolWl/y+ۺw)*1@ҏo+`poovoo 2w_oa,=gFC%ҿ],N IDATxwfu%rrN{r &#$QRW-[v-TXeՖZeI.SKR@$ &_w9}~5gz rQh3}/s9KO}׷Wp8dY_-[{VwÚ8;qqx۶=uZ;g/7 sdY<0~4MZuhsuDQhw4l>}om<~w, ?R^YkHV=TR8KKUV,$n$0hF|<ݿ ~@|̬ ľ,bnv~NZX-,O\:`*Ssn||haC&~H#"}lWVV^]ss(ZlǡlˡL-\K]m,~5NYmhZo}[Cmqnܸ[Rdy9%J!a}ibiYAJ k^V+h4[$"i^ `+Zhyg9aq gڮ븮mDM=e8ƧD~ѨG,Kcñ%p˦,̰نQ;=.Mc[ӥRB!}3YNf|<}>Q+eX S/đ7g|)ɘnLQ..ϣ85M|f "9rS8UYz k}X,K\K>0mS-: Wqq=O4mƛ!&dw|[gRצX)t l46/N9L$IVq=c|V,ʂAc;cJo?6 ó,ߊ<3,'yXp0l \PTdYv-ca1 NM|?x=2J;.N6,(cN5'uԞѰC᫇|CCCjDKFZ\>fxމJK+lNGczgg_o=&GZkǥ?ӿ$e?ðIuUUYo'Ia7$x̼ ?6| JR]) (X1PIDP 0!7-ӱvm$ϼ{ĥH$%;k )),2xLAbi+/,UB7joOic)D3@< w481eii10DTOH<;]}un!DnyRșJs|>jm)2`mUo .RPVE 8aDLfr!y)ǰWt]XHm1xY` TwMۖm)c{S{$D㻞_/|l6Lq<%3> ۿDSh׶]`L2o)dFa 0Af!4DZB$gJ*"؊`ʓO>~dڹ/R$G3mF!wKѯdLe2EJnLpOWW/O/4wuvѣLJ#Xℐz?:qDs|bm&LF/3lU~.VV65'NNa>k\_u$&G /1E5t9!C0!!>ǔ ~xS)Nk;|&uj+fVYmf= X!5L_+Tr=.bibe9.O go;xH:`E {!Kh{ڰLA"j9ͽ{v~RW.^TO3İHBMz2$.#MMϜxLAxe͖j4/SXg#=Fj)>MrZ'PݥS s@R^X(g)FJXv+ dP8u TQz%"[{wkuo6/=GjV$5C G-ktA)$ucʠNS:e26ƛ88[qg}uE(+aZ*Sf}mSJ^o:5&pVЌ,;D̤SR,j2=FjFTM;:%H R)H^K.ToyLx(rr8&¥;^k;ϗ+VI,IQ&$S:t͑~%qA12dtKǔN6}>w3M\FO @B}lg[]]I`qU>X'ze)D2jY{=aQa)>6X]ͤ 8}‡lˎ"NŲTrYMWU 'c9PFDsm0Ga#qO!>|P(㵹ޟ-qLNic329Xoxcl|ºScWkWo(kpaAs^7iJB`-@`:hZMR<3J(T)S',xϤNA<D&} 0Ogh)}UjոeiihfuJ'JvHqѯH_UnR%4 aSԐ̭O'Fwk<ur4gzOy P ,SL3[}=ΝۑJc9A"0d \ 6.]B0eeY(+]&2Ł"b=$b`&:ǟmWS)vi(Q4^A6~E)"6&NBbR"bB(? JnR.{;|*z4LUs@&8Thj}IysKf.eGU`d I-DzJ)d2Ͼ17i.¼(c~|qnvX7(DrU1u ˽ S&OA L&(ۏS.>mYgu+Lґb!+OᥰQ,'#)I=TyX,|dwL6f*Pv}2uqː xneKmDOو) ?FU|_V3!gާ}c!8qXsddvv#{=ep@\/BR\tԵL)xhcN;dqJBH$': b_qLhLM$O`$)bܖoѓ:oBhrlC8u2 T&zh| LA™_g砧 7,#ZQ3HdϮٿD=ҕ+u ` xeHr]Z׺PLWO!fTPB<)7TAX!NʌW3ggQkV/ NYAwFd ʂ8)VgWk==St-,- ,B Z% -FP)DgX0%2HZQrmSqӈWf@b>qaNiѐp Bl)>X,$1TX!u}S9 4P k)ShŢhl/6rі@^`Uީ;a{(@T*-*E9S؟./޽;3feQ|Fc'Q 3\(FTSƺ՟LN ,UY??X -;6\?Ni_|0a58D'1|,*lߨѓ*|TJ9nn&=OHũʷ-tKIF*pV0F?SfsKGB,XYH5ڕm=2Բ;;ɐC'c#2)[r_0X7H.!l+ip+(@܏'8~3T`ʯFKS3 }m 9 1DXP$U@<>މDbKCbGwzt._=RGLR  0 :Mc })DdRPq_@ |8;^m=1/MZkh:#;B*=.@&f891/S4+W)  TVxJZ߭hP8t VbE&L!u l;vǣ(\LQ!uJomDXd4?~{}.OzfNScf@tBbˣ:59Jx_ .pT~KKޘZƋyD3wub|qt(J(f:%[,e_'_mC %0տ =~L1mU2S E`c Hd|6_:嗂)`:uC)/q+KF»!BNgH$́끼Ē$g Jn@`jH EK}i͍^{zy`~f$9L3#;Ykѿh5oT+12zJ 8X۷o斍'X!3‘Li!8^Iņ̖VLmώቁxa%&WV/T> XkmC 0@#h!v-yRyTw4Va)Z]kB= zxg =c٘SG#ڵ Fa)&wW\W ;[W. ha 4z_ZnDqLё}f ?HG6>S-o3Lt0MET0DO!BN[YmEQ9;qd7ef'H)A r JG i&|hwS1'v>mq=z?SZV]Z5^(i Ӣr6'J!K߆t^Y"LMM疴r2P## TS嗔w|e<ݷ{W^Lyj%6Wp < 84L0NNhWWSDԟฃ*=8ͬa 6`y^b2q)r%&uJ6<BUtjaӾrTʜ+bS,mƔ?%w:Zl'"R||X)ⱞP1  3r=/R+2j!կ~! qV)D47Mbj;nrz#$>}1DQgz 7:; !>r &3')YO1,)5\;ӵ/b|,hv T)&@tq|v@jbon}qE"n1˙ʩ'VF SgʲRYW"Й`J;|Q{hL!^b5 y$5C!Huiø1F'R\BXuμ>8!"I2ܺF{dddb4KWҶY` m5Qe (]\)CCL8N,$A]+pJt3~2Ph:tq Xm^b.Ϟ}]xx# Tƥ#I\O° p@Est%H:7Wiz؞mkRV4Z0,WբQ\'ٙ {m $<2pW_(BL|_wk08\Swr"I0I!\e/ԔʫV)CCO3# n@ V^'juY޲).CNoJA)Cbm IDAT= 3(1$:%Eދ)lJ sBKGB %Wvɰ|x 0rz9ɶ7a ӑ;_]fXwx84›mFG ӦEL/di>}ͥkI䟀 Yt0uIj(8H` "7"| UrU\5u$f0!ɓ7n-± Ν䄄LX5.%A=H/;Kd hOEΒ^BSE&zf1bOPZ[9Z<=!}N/^?4<<ޞS-2ȑ#S8hxk7әMB*O`JLy?ϧ3rI: `q06p&5Lz yKOi$.]w RA:g2H9,9gN{rR7hk8F E:lW,4^0elEL_qp_?>9ZQ4|nh=NB׫f 3L/qLfNHO-.-w(9arYKYʭtE5Z޳y7$Kd0T=5szy Yj &|tՙ[nUdf!)K|lᾐo"z9B6>{gI V,DO$+-Gc81C)$&'@kN&~hەJ'q8-ԛ;[7~ &"cx: .0ykeN>=_eቫ׮H)ggmZF-x)2) 0EFbV[kY"P"C`1PAe Sp#l@ݶ HCJ %IL"o4]^?3=sXxHYٰjo3)˦'X>! b 7;6)NmΧaV].0K}:P&(҈tD[VZtSIzȋ~._@}Y$Y/ڦ}^b+ۏ<mh~glǒEb0}_DO`J[IDjDN>05J;<"uSVV&F|||uʾ{0%x=ՄR./_Ҿ駠P4*vSdgW`y ~Svzrj#e8DuL!8aڅH~rj^"fH% r3LJ|?PO:mIHwfVNཇ̉7p㼯b8ztlxAw=7S#W a:mAs1(@ ML&_ǔ>N$O; oPV`T{##NqsKVP)& LnĔD8I=}l,fy:\,bc)AK>SXl_\_9kP8MtD\hUkEdt`bFT0 qh:pznƐ[wnށ.t V'63I iIPZ\pR0DJu/q)NC2nkV:Cf8`JПV"18bl&T"IO,|嵙xl( ^ÔRl_)F $kJFl6^z>=,-&DYGIgN?qGW%n"J_ShXB`Hs)H6fydLCWX[') ɭ}=t-}j-L?eM54[pևsK|a~s:88"p@Leb#꒸Fd]!ҏU*F7_=FZ.{:ZwuUKӓ'h.@Ć$ 'j6[Q )q=9ex1|m 3ZQ)3##{ϲ\X"~]R`BUc>={i&_}>ZAzW0PB>xz0pQ-d6ŏS+WVzZZc#E.=_nOY}}ĤN!Y,ᾐE DW0E}_Nw:sb(Й~_ey}*(ϐ/-r+j}ٱv ?,ⵖ,aBg~I7%ބ)bqLbGr(!qLMͶxQܷN!WՌݸphvIy$!N@$4dBm-x% i/1K*]ՠN@%&S` ,5H-"ЇvTjݍF3=Sr>ɂ OC $Jf` j-fvѷ.S0m*q⢘/Ix\w5+JB b:|a/$3"S#^L~fh(wԣͩEr)ЛAB\>E~_~s*Ç| akJ LA0 E#CkH!-4} >SG\l坷ϽlW۰}Ywcaߚ , <s*%N G%hna]iN2 'L*<4  8!cz5,0#6f!sɏcJ*;E!#o͐J}_uJ"KU8"/-kc4(T0O"|Z]R磗칑QBLY^.>sPOgG'`.1Ƣ̛Wө?+}~ =sPUu;J*b#Z:jbfMe2=$hʒ` &p_|; /Ϳsi)xMy%V1ScJQ*&Ha "?eiy)-4.ZAWacSAzSC Lr4ʉ$'Uί0<S2(fV LM/vNR|lA'  A4=|l.ٳ+å7UC!nBi,mbbڥtOQ\HOh(&,~ EnvZh#Raʇ`J !yJ4Z4AuTTlVϾn Y4jK/4|2:2B 5t>eoj` w֭i]g$aKEK3[vSsHD@ /D8|ׇ)2}W]R;6TtSܙ+#xcG2y*a:5Ϻ7W5 }V7*ix0ޟXޘPO,F1dZԮ-1)LRGZ:b3%pmav-uf:TlĔMuJ*ïqp qk F֚3;?111} nwϡN^ˆ1\3)u3Q'zU*ܟBxn/XhᣙH鏄)DO?%xAe.oS?e00p_YX=S"HX@qzjz3$M;46SFFgvV2l¶{tDY[_A>Գ)GytJCե)]f}bb8'fb(艢S[/cW{_BjQHZ^^ OU0JaDD HvasqE >JR.ryVaM//Spx h;Ra ia8}w0ˍ`{b$n_ng2u'9]楡br\4G˜8(C6ΐ.^wue%|S8N7=+TIx̾KLa'>HA71^@<c]Ss+ѥ{jSÃS?׵ <)]6>? V"s2`XY9q:ޟB@O!Hޯ̑O|L (G0@s"J5gF Mы"]&ڄ)DJݱm|vDGf钡|uL8juzxw,=YyE+gr?`>sl'O>Qj{jPo `Cs_S>O!խ1eFX \},JC#~p[i~$"vl͓,CzQÈSwXzslddH^/W475VLJˆ$3SduQЬ-'KL @~4/z] ,wO`6KK $¤Y+H1w cr>_5G}jyy%[W}EMO5ꌯaxB4Kiy5 q Hc()=fH~0DK o U`".1'Cq9Rs"nIZ XI?l>I4z2Cfچccr!05cU\X V׺W#<hR@PahП#nFqA=_Vk=u eP ϐ&=%%qRXBwT S ?uomɅŽJ$/ 0/qQhN,SHb1$b":CP>ຍ+zE"&3 xJ͔rÅByPl} f܍9Ac64@*IƻdtCC]Kw)`l$ZPưߋEKr2C;Y-OX?4}md`#)1T믆n5Ϻ'Z^FwmEUQc S I)KKKb%ry Զ{SQzs|tdi}(!yBz 5J_Qv"t# mh72qܑΐ$r(ʾ}2Q maVhG=Xہ,2U)dF͟|}+1%H8 b+/޻ KZAšρ+Ȱ0Sk}_lc~# Ye޼<0 X%nP2:L*` r6h70<n Iqk!0S)׿ơݹr7%-F0de]P5=RQowcjH,yyεuL``lh\4IMY=ZD}A~z7>/o#Ѕ<xAegPX l=NHEROA?G a/qB,ˁnW2H b!v~ldq+l,Y^5p!0 pPCiiDȸS%C|92\sRvq4RQ-[%c)W1Ri63JɒkVN:]:r` &u՞Јh*JO؟~jLѕ>рݞ- y )F֘}_Q{IғqϾ|i}b8^`e"^-~`,zcIAHc2|rjr?%R{1Ѱ'?, j StVIuձj71Jc '!c-m ~-N(+gf3~b:2o iv>lܲZZ@.L8&)ip_)/ASUZ]-#.A`.N ]B 0(྆d<5l=~X$g?放GG-Ѽn{Eb f` QF㐩%d|t[/q!WiVJB?ld~ * SlZ13)[)KRv(|_kuGdS4uVhZǜW;zid=JД*F)N'b}|4נ?yĀ <۟kx zSҟ2S6tJhw+PD\S>N^}46(Ib~i,@y/+4I,Va> ;onYܵ&zl}sg6l}pZo_ft74c(S40L&6GK9'8(+ @6<ҕJ}DFY+{w>1yUϐT1"՟]~s |[j|s5D8` BXd\g_dz [\ph_HW+Uר\ [X/OswUl'YܥM [gvΐ9ΰMpRȦ.ABYJ iP&m113p`Rʥ5l^/b.qƢa0Sm0$@OAAxhܨؐHQ3IeU+[)p;ny=b{&Vp3LMS O&\*&r_=%HaM[%:h50%O@JF7١F=%(>2 =664rKݬr)w㇘G\k#R~lc/)!q_'y)sL 鰍ʯw苗X/zVpFJ:Xv(k}D1|7PMe8R^7p=`#S815[V{d6KE%F/ 1ƹ>FeEl`i4e~i6=E"S՚T^.X LVٷmSfvP0.]qn=BHgZ,FS`"k薡, QUoY3MgF]@®P/eM;<9=Ə:S0bgy>u>Ou %&+XRns)i$83<ĩwƻ)F=c}*Ő QHfu?G”}=:!SYv}oFO0/5+˾F2.adI^bҀYֿEYʶWz#ic#DlHjJe]ZTR8ZYh[b[o%=ctQ<{_b2oц10N[H?|µݞ63;Ͻӫ2̆yBI@BB/޿>I&}o)nZ]]~v!0N`%;1,ƒn;K)+vG컆)4` <Fش0˾B4A=C/RDa"(eL)SПd炰vh$sN.FzB0Pt[d TpO1EXzJ.& 1F6)Pʳ*M=+0ckXDllR\OPKL/N(=nOk&>({> ~t?Z2bu Q%YsAX @'}%q$$0 Չ={Bmp~[]1ɒ{Bȑ>,vV I剑IoΊ ĄҟL[j9ccps=.:ypftlK|FN5FsmG$EU_17-y)x?)}=k N.0W[ss;ǺPTN kB[X,$Li"H?fwVEn-JbR^QYIvG7k3/(VFKVbXL5j)߯jG^bkޙ{sn~ϡK dh }2fKow5`JUi~)s0R{C%(F)XQS0@杩j;F";JqW}6e!_BFC=j6'{y_<[uJ@| +QK׿ 5GZ B1%uO4z @&V&90xq$KyBطOF~BL2. %혚Y"Fdzh> Y4%]v飞G)$ΆC8B|0l2.?E+4/DcJˤ?o0C (o7 #c`MGe>OKL0e|8= g_ J%y\3\e`1p'h=n/d}%,\ 8]bL2^:qCc EmmBw$AqnʀHC0}}Ͳq2K_x$Kn):F}˫Z[ہ0iTK0&cϣi3z_iagڋ`6 gd9ghb==30$  Bӕ&vBR_YܪNaO"{pT8l?r>|° QQITO lcxl!gg} b,ΗWV7o}s`#*u!ڊ$E%8EKU]o)<]WϢ?E&+l|4x2hcBJ0K0 ?#SWȔI'_[a [Nnj)Ic;Ӌ(JQCuL6{}@8~]'B2 CB,ZLIzRSz9cH3u^b}MĨ~3% paDLD݁?C ʏU?`P0Wx?Q.F.adj( ^'NM)[Bs)wKBQ!+ViE: La')0)GZ.FZa=uRS>6%z$L'):+wpp>Sllhoa4osDC\\,_,,1jaʍjAcch"B3_yzNݺuݗnZj-]r5X;bJ*;< Y\ψ=Mcjma(UHÎ4=HS}U.Bn)d6rδݗ?@$d6K'H2 .׹_#)x陛NA@7-0 3a8}Ef݃|!+A!cXSkpS?ñAKxn\DfLI,J n #` LPp}1np)p)Li]ZF"[Qg/ K}mSÎ q 0ZBz8X@mlwml͖) r0?T@I̮X;m>ؤI`a&K?'?/Fxr0ۻ!I[$it xS22uĦP*B801>e?)l=x} C\G 0ri> ګﻞQ3 l bStڂˠM'"/=B)Bq)P!W w|~лBMc!\ Ib)`ay 8ސ# j |y ؇-BAhu-VS[? CZKhn!;qmq]ǢX]o6[)\ď{ `ƛA!HʡboWP0vu8#l/{%W_U9WuuFN ݙ\.wW>HQ%>C:Ƕte[lIkSkyvvvwD rntë\|_n! E_{{%憡+a ~ҽ^0e(: vO@"LW)j<56هS\GSS踓atso|ȑ{_}^0GW>Wpsvёpr/HgW3޲CDˆ]4vl[DBAϷWGOyO_viX=oPXي1oPTt}޽_ 柼v0};+VFDe,uS6mqb$|u˙G}!L?][KIEd宫V#Hh}p})*LL5=4y,SrŢ/d:;:Rr| oT4:nQҧRUiX FLaS9oYR ע7ys \§x|)I+"/߽&yfrKQ0_kD[%]t5/MUo} ɴ*l:NkzEaɧl} +l^Lad3sv϶e8d]61o>|4;6>\xcSO){yW3dƖʒ`ڜǿ}ɳkuӾ_i@փV<[G?.N9e;R]PHZE[z_)8;uXC=Oѡ%cd Sst[WN-EKY=G}qEZ?bpcn1/ˬJG>ef'GSͣ׮aS0{~kV+6%8gץ}'9E 3bev>>WmGS_?0d4?.E+sKo>%/Z施egIyTU6` t6Y/Ǯ|)Zk]藗C˩zI=s٬jrɬϟ+dDE@}}tˁ@دS%4h]ɺk6iJDt&Q>:D5u@fG,s E3}aٚߠC,U BB7(sàu-N g{,nmNAiB*8vPvWk`-6_D\Y,"u "̊93#yVLǚ2C룬ۼ3Xq8ޗ)ѯxHCF3uq{!gaEFYq܂ޗ)Gjq%{0ye.yZ:ְ{4oM h(ZbY\VK;=)§(mN0LŲQ7[4jf(\bR\Z*y5a ȇ$sO)hZS1i7} :p~F4ٌH,)>.0EM 8E"}1erlx~0dqB\ƙC@r>xS_{a._1jc9X9Z9r(3193R0(KN>m4kD##yOAȭc*&>奔olˣ?y{H|߿1e1SSgYޠn%ui} W:]tjfff_vK?So =m_V(|` :H|ӒB֠2&VVTInʻÃé{)} =p U*ᅥsYݬz0[#_Ȱ߼d3ht!k a6;<%~/M|)Rnhv.BE}.ILf(3Z_1CCX'Y3qܿ&uOI={r +w{#d( e UBKڡ#G͗njPеYRuhd@SS*uML}u"NqE>Laoxgnwڿxҍw\t!fוr1&3sl1_~=G ͪtOo!PZdL1/]6)Sטy# MPBNuPH=߯wG0RW *^3{1|09:lYG/| `s JOT>Hrjnx;l!yW7_޸[B$+`lᙡ-17<hr6V:鍙\e&MKXN9B9v}e0θ)zqlo,[>90G|8}I/.tWs)pJ\4hyX04 5|Jτp(dXA:;4H&| r#^%3dr "kA`rUoa)" 3LAV, : 5 7IZ3ï+B躹9u:75%=ܶoai*R*ݮSNY-v2֫LIb1鍁iD:<pY(n5;S\9` W$i@h3Z&)s=XAʊ)9 bH4,1͗F0R0%Ljp[bJQ8Ϝs= 9 wca?=vHjllX.Բŧu_tWv}=pP}LH~_+G>."À+#˯QSͲ%8 >};ka2OCT-qWML 4+dK/\55:&+2C9t(\.X*ڛEt_|z%ũI0i{ SWIS{hە[g M}!r\#&Vd S+H [z:>E14XXsC=R/;V1!)R~p4iIt/KP1EyDiFdQhXH>[ҍ<[مjG958Dň$Nz_ @$Sچn SEldZV0;)'kcK3%.B(>1rK3(3%9dZ It{u/Yv=\E!V8Uf6R .h~'[wC"ZP MԫK)&]d b`&ŵ0m~lxhHۮ&<&sh7#6FNHy Qɂ:^r9s{dQ*=^Z?8vp|dtPJ$bJ9ͥ΄wCùGyK1^oS~~/`d8)2N&bskSNg& ؾs =)TH''Pt_E2JgtpCYY=fՇ4k<>ROs%[FZ.-{CSvӼVe}| S2D*#|YLRë:s`'o׼LiHkEK\\z7]A#C7v1􌘳:6n%S1Ϗn\!HݢCMK,/r72dcg["&YSX*l x,1?E0Mmn~a6a})Z3Faz:c3+p(r) IGvjZb2Z63G׎KQhh+=`yd& 5c lSM2 ”")LI. Hs/U^3 05oƨ"XSm&FXD$M+agrOzڣ)n`JfdqDK>(TMeJ\3Z3+iΣ`J0ʻwk<)ʌuSp43hxa@SY LbΛesl~dO ! eNׇQYk'C\ Ü]kʂyoMnp3+I yg21)mj?ECUɶOZSO=*gE>ƭTxP<^4FQֵt0\ mݎλ99pŖsO/ן* ~4LdZi8lMoRy?HwKd_X ܋))OD`" [bEYe7ln)§8U2u@^¾AhYX %UOE9FFʀƧ$X4$5OzhJ_1D0FZLz_)3uCH>z3 uc/wvttpWMC)GiL*FLlSnUpYS8/ +3ẋaoJ?2Ywq1ͨU6b Ҩ X$Ri:_9G VLnXQ,wZS`Z61hx" j@8UE{|Zf8z˕t>E0 օZz q&] \6ՍuV09(,T)}؟BhL}A>0 5sLe(Ҁ6E}ߊt>E}N&W{P yGhBb`֖COs,2}lΞgؐ#46s>, U` Y71䩐ZLY;g6)ad7?G/]_-Ze:Ef~K7zw>28#l61E8>0}U78Eޠݫ oʛe/SMKK ҹJ3HݐUd6tߝ۳@ʮy\)0l>NHq4]0YI ZltV|ѳmk{0hvv.bbˆ# 😘3Go oXyܯ0$¾b*x\/ϡ;"!4'332(/gwSCrqv$i5a1 SptTUkSsॕ#^'wK%^h3쟋V6@Q.oC< T}ҭ^C߭s/BRhV-3΁)K<$MO 9ߨג] *C+׬ Dnmml,B|$St6d0dQ߫Mw=ШT8{SɭbrGS)GC_]?5Q/|?mL2>}Act$o}v% WRE<mb"m:Uҹ[~_ ZկjL+84La~ѱ;-dWqU~,L7\}bJ_K7)F{SURyS<6ifz91 )? ʛ)QG;'\/2a\;^Yww%LAzXq8a 47?{RZVR{`~J_KL'\R`cn5Q‘r$6ݺW_KNK~ѳO_ɻVwe]LWŗzqu>/ėxSXnE:tp۵%ʦ\)͡}>SD%/wO>K>Qv.rH=;bXv2܋1-/gxfṷRsgITB,PXa1S0c624k)R+Ťj>8}*~GA_7feSK->W3?#}S 5o-.,M{_wG,Q~a!,{XкSSx'ϽN<..΅sbsè+Z&]Y0GvpJJdMv:LNJg 2GϻSnё8=Sf>7R0Ŏ|KO:E38x6"_'dN+3 N4܅Z)%,Qht"K Zo>=C[5R HQ4 $:_7#7f<ٵ+҇>; QS(u| /+,6())&J=lJOP3l}\83۰LPbWp?~$HuT4|\!D+W@||JNXsk1qSX  ;aB3 ɪkŔqdR^7ؙ͂)G”~b={E6>#龄gww|={v+ ;w믿MW4,ՇOYX3ʶzSٍEI/{^Zg{'ͲZG3 1-,ƐGW_,֓xm` cLAN'ұҢZȺiK0k8bp<`džTR9PYdE/Fw8uR#k*Gz U縇b&CcOfG%Oy Tkd2f[N$ݘaxڍ p>/jH)\Su0E9Ri2u пؙM!`XaGߒw[e?lz>/ kS{z_R`Jg0gPED; ㏤%f%qg\6h_q4وu?<}!IChcٙxn?\cs 0φEUmߏ<[؏ n͗jnwX剥/d'-1%WHΟ2>5[$ɻaF"0""'bWtzrgYG"["àQIVİ*"EK uJS0A^2tg}A 7f.@ O+ҙ |y޻Zs` }04?#)7n-18;)Q,+FLxvK)6F(܎fbL ̣` Wv8ؑk X,EUg@ mStȻ("yM1E=>벜%uI'u ,蛹4h՛eQWBѭ1&Ɔ̖;^C;|m﫪oWfw{CO^r;PQ㍙k&Mrgd%n)]0TA%\bW~GZz_d=%{1EuO S~Y˯}mψ:i~z(L11En/|ð|Jew 5t;FuVDZ~e>Ș¬qgܱ}qN<~ݮB~ޗ̧ܺepW()k1EPZ\!cqcz`9YyRo Ξ}/ϰ` qgs}6aDK|';x!8+ M{L.mff}pU@$ـ)wii3zut6u91:7fsɢנ׺)y<$Hf' KԘYpA4NϽ^jj $^Vju MfawysHSTv㧯ep QٴNam;hS)]I {֏Lw,ꄋ%A0Լ;(uH>Hޗ)T e%DR|9JҟyοB\_6Q!̞Tܓ?]]vosrVS6}1E8w޻0-_2w2w2И")-^7Pۨu~=AX1R?6cyHn%>/ rCn~-Ccd\pGSO P2`Qr<%m)+(s.EVŖBSS&>9\_XQC}k~q޲0?YX. q;Jnu4ڽ|5mGU0eXkYj)zuBDŽUﱼz:0Q_ IDATszHjǔB)o崂 o"APuޜ->~S6SbeRr b /$hE^ou&/0-B kB.#'_KƸENF+d6T.Mz_S` dW*` VM1c>K:;@OZyI*R00% dǯTܒ`vnٟ^` NBrcVqGVpzg;ivc -()|v1BS|nV5M(cTO,툦]Enn=ݟF#C9Sm,)htAgȾB8Sc NQ̫/zQz_R~r9(Ԕ =\>r8'swx&+ n ?) ZH% 6I%uvDu_|ʺV Ę:߷u`Xj _VgPO=c(/qA=a˵k׎/r'zxB7?! S*Ţ)ϐye ,&k(|+Қ)u"ج4\a"I7)wY"y+RL0 NvV)3AxKxۊ se]"^d-kV\ D`lݎlUCSGb)"ꄋ}nɇtyhyra$ BϽ;sB S2<~nVew]"}q>%?^)}AK`:@x :) bvG%u Yhx :ũ0@J6KRv?k,0Ɇ0G]~(L!Cwe)z>$o[$#)g~044\|(SLRD6-dAPsm2jȄpIꔏ):όOK)/o˭0O5X,/Ԙ~_o'шx|#=?)ʿ*u - nM6PKG啩 R*R}Jn'J5J`q`ؽw☿orm/iv>et_E[iY锿Z.ʕ09 J~![#*QO S>/\a^ _G5_-׆SOd-S ;N>gSw1.=?Ŕ"Zbb,Tց{Ǟ?޻GuaǕ~g?S(aCs֙مt8^6CtF@(gh :_1y7MD'%VU?˧`Txp30w/@h4kS]>),yfs,uJ^Q[>.ԩ#/{)[bdrͦ)3 3@ڛ{N8znM_qmB=w`Jah[gzgeQቖ ުЃյ KCџ\0ݵr\͛oܘ.2\><%+1–ЄX?yuɱ!ݗɦyݣp "{M$:LPIB/$KPi]Kِp1f&2kB!#22SOLY%j ٥`ŰN) S" /9RV/nrC4)R60ӵ6Jy+K0N ;8[{‡w !Є qQ}>E6 J`KoJ5v3G!LmU%}<S2eۗo2yZ׷˷|.gy:52:Rz$-1cbBGj6Vя)RwJi _,Ot/ G=q1e׼0uȍ~EsSX=4ob^)"'K׸Y&O=cbۄm|t8¿199z堛`)<={۾0w;bN_.FR#9DrtZP`&G0EYxœR,//?V!p_>0dbم9?vw4x3[b߃QaV rBpP*)]O?е20F{& nS*@alI-\6bNLs*D a+ZL)QJb vl?pcf .nU=A11) cV5M=$^16k"5)&Y} ')v «ScF]S\f&GU:9( H&J;9` &Wu ؛ xՑZ rwʘlF)}^03dJ:oozZG3cbJ>w|8Y"̺rՂ?0Ǧ~$fp_%1(ᖯ  _bK7Jз0p5"WiCw-zZ)̢W!@ޗ` 'samN811F#N|s{\o1Vx/.$6cKo^lՊL9]W92cǶɔOR6 p-H-vRSX쨉}+Iu@ұ򓟼㛞SVaSթa'1%:_G= "5j<Ϸި}wACBVrŔL0n?XbQX |ţG)u7ӏ?1nh =3:gqAi%NwZ$an!c bXvqr7籏)|;BPW5 _kp]фIö=Dcla@e$?<71GX)e|h,+u$`ͭ&4w9z.=)Rŝ A+8x?'RVL((CSyr K`.dylPQv?3|t='ٵY^ڀ)G/,nOw^@vpUӅSqhIc+$nH$RݲNL .FE)©QT0t0ڇJ~ Y+%>%JGy([lDi9ɻtzf5dZ~[GɌ~$>, . SxݙR|$^0HO1qc׊')?,|Sznp<_xoǔ=u:LYwl*#XNA R5M9Qp=7czk7Π@}P0ES4-1u IDATRu êVK}8t{} 6H/->Oδ18i2ڃj lS7ۭK屏/d߀)os n>0 qS5+=mC7νͦ#.G\UO=[(DSB2.NBDmY,lŤ`jbJvzz6~kKl["T0*pn}I^# &TaڕڬĆ`}Z{YD*YJQ9 }Hv;)` Zz7RZ6j#ZU>Er!,>0RF3(G<$zfUZVip*e_TΑ< *0afeOT^))A 1f"&?!)Z?P|ނl%ޗ)myRx# Jk M+=G]eEi]LkW[7xl گbm[y4^S>L-mpH-ʣY:0L:K7DH]oq,8 )* ڽ,ꔾKSy%Gjog*E <ԲlFG#W_Ru hbbpFǬlFn?O NAq)K,Zťp4>E˧NaOŸ)]/[O˙fIGgV՚ 7K=zcs): p򚮞<'cD=][VM̧h%[(m F<w$ϹTFN L=TZTYH */Ik.kj#cr>W0Yf_bޡs1Ȁz_bpڭ)s83 Iab"z5B?,:DiK!Ky^g h ӿmd*1, OZaJyiq,x}딱hF->RK\#>kӹSCEo)^|O:KQN|lhN>dr5Ô{{_2HD "8M 7}C=SbJ*t2^"T]S\ק>/Crfzz(R@L5 vf:@|=rLmȝng&:ٝl0܏hu;G.}njbC̮Ôr`~f`q)GN0Zf&26um{?0b o:sD驎ѳ`Ҡ!BD b GYJګ{ [_>"ʢg1a/6$zN1(Js240E>rKm"Ba"Zg@">e}r%M g@CWܟ|LOKT!D/z ۳PCZ&/ @B"{ *e|p杮=PSM-p9m&fDiY5^ uN e]&^`BlhQ3 M0Ez_+xlZp8Ӡc E;2D!gV[/-]zor<+jy2:\/Yv\>92wWC#mZH2~ygG-Zx+=uN&?~$ISR JE7P{ll Sҫ= C KM{_qS6`J_%uK<(bȐEO,8=1eRB}Pbav7%%;wFGk2 tfaq~JfE \U0b7w<#3:j~S)&|JJju^Di H7ذI} Z~_0%xg,g:5)(#X5lyҧv/ѱlj LAb~cʟv0Y c- +}/x-wVFk=>6m<X 7 ;3}߳F$  HmRwnw{BK|) L]O&GWhd6;H=)}os s=/jL`] Ik8͍_?qSlh!9axiS2dq M`T4d ~O,K:MXmhKҽp$tm`JR!g-2,fj3~q9gk1[?..V¦ט/5>y+gn2tSJEitTzIdr6sl<66IBGP+f{wNϛLEpE6z_,}@PCS.4GkVL؆dȉ@V2'[1ES,&sӭ.Pr|hU Uϭc+([z_B]؂ FghհhvYf/8[ˬy*|zYS&S4̥h"Ino 2jûkc) pYSŔx}F(Nw fYQKF:4ҩU Ă)$>XP8\U rڊτ))Gw;:EovzQ3Z,<>6!f<,O6A3䌾Z={<~oK{_AW w̏ vTf؈+ImҼҾ)§ w4"9bL1[N%'*7s?TqnœGy}? T?u,c=kpf!;SE"_qp>%n+"VJ0ENr>&l_b/9j̫lo}Ȃ|O!rкY LSB씒 hjq`}~ ugKKɿV1e! ,=i̙-Vi(uhR(T:W."(n {0E=iRGոFm3Yk4C#jë%Y1߂) y\&5VݕfSMjP*s6J 槨u)bw:5N)\9}]%bGO4D-*e8-1uq&({_>ehȟ9jY)@&NT,. @ j:LQCrڂ)^_cz|fMxk!TIhpȣZrL.Zy<^m;GQD>rzx$\.嫹G![3BI ۂ>~6tea|l43?yv ?§ ڴ;ǔz_4 }< LYOԑ S؅OI&cd:468h+4`DX[<jz/+ڀܬRa}ojbrm޽->AšiD2q (]Fg8/`*La)^HţnV0#9b`&0A0EYzjrnٿ"/Sél5&O@0hx=exDd,BLQ99J,yaVNHʃe^kk [&II]ߥ/AM?Ǵ:"?%OTYşRoԛs=_w= Lx4&+/#mGf*C\QKm"f7e*m΀){^8Pֹ! ,*Egf ]oF?$!G46 =wi0f~KLqdΉli2<JpAj eQ8wc* jvcV @!WJYye|L tiK*L*߫Vid UE/]D`gSdv+;}ȓ&/$beG{TO dH>E}1gytEyG` [iK{ɇS1FC]cT= .EK]${z[hݳrYg ыȲ?nٜ)NӨK~7NqD49o۽{ge%NhS<:,U.eܫSܵ #GΝ/ -B!{^V1VnDޚ_2 2 GOBS}ISŁpZFa;G/c4 \N޺V;t`пAŹ%ճAEW~tܧHǖ70f;aJ͘"/xT`J%H-m#NH4bX\/O08k4jm|fz10El>Z\^}2Z:f_V_R~Q GK IVRPU6h juLA oܵkg1MލLtb#eET]Q u>|~sClLX 27݂)bw(VY)yUZ7& HK4Ә{ ׷`4iH`kA_r6VLJL}iJν/3F[O'-17])3>+hzw/s/4IE>1 '0EN]I-X8oPGއ)`rV0ejblub^X$A0ڰ:-LZ~ =z>e+|Nدჶ[W*<2'SRٴ#8f.K<\a Mg=Ĕߚ7vu '3\9 bAxRridoU<-SroZL!dt,3qj,pgΧ!u7ukhUdv vitKO^R_ L1*`7~6zHgp,)~z'WgO3-4!)Tk:Qf'h) .:-ux}d5C쀏`JWn'hj^,u{_J#MHpEa=99'SScLN3-=8D[նś){J[7tLopT Q]>]jNaJem2piN¾d7XWcbZ*+y񹝟$_ڙυXE@RIKe6 '/W"#rn=/nP:w˿444QxSSp?k1.ÂP1Ev ɣ'`aȣ8F,G<| -+O̼Lqqh9]a=ǟOo}@4 FۭN֜E&>T')\{҅xozjIJ:%sO"B6u/7_'ɖq0oW},LȪ1 Ebj=9E7[g@)OIxVWb/.Fko׻9|bAEØɁBYu8 [u_[0%WH[>rtsĞ6B c˱ɋ>>S4uJ"S?LZXDر Uœ( \hG+}kC=&|r[h64 @绀pؓ=)uo %ʂ ^J?E0e/?mٹUfR10E17CpߟO@\cQ0B,tЄ[t5Z+F~.斊ܟA d* ŜS+5vz)4&ci;|{n!\8zE 2F-ho,Nz#˚^Ŕ+g*d0m->f0F14 9'v9Mw(`,>qp-/zrۨ"/:%KED<$Q7u);E%.7hUW?W|~M3AaGWGB`X 0'έnF}ݎ~P4-H"t;se EN0U18B~llX)DOҙ-hBAX=˙ "&ĺ/JVUdK2gS~0w2ž%fu:i0EtDC3KJixrހXl RtV!15bi<;?)o2 xh f_޽?뽕J'q׃mjv!f')a)tmw|{l8LFcH~Nvug_Nik WT{``J/#xe8_dI0F!ee#]}ڊuϞ>JVLd`ƤX]x}dw.Uh ;RJ. LȣG۫aF_O1juua OʇSFz,uŲF:#x3zU) g ʭas|\1|L1mcM&[pc P0C|Sd8vL10':{ lUߨS80 ^8 pf4ӕZWfDzCC3Qw]^r|O_^|e>MRJkAS/I*_n9gʉ*|>GX** Pb"/m>~7hk+Ǟߙ[^Z՝۫33cAߺG`^0ebNZC0bS)h.ein޽NT&3r_KY6cG.晾ι &a62}ĉcǜOLX_(`eNr Uە Ce?x:E0噽Op>f>iq0GuʀOmO$R|5+9Eѳ|L/T:=V8Gy8粶116ٽo_ b-U #7n.]2b7)0z YJ|Of>O)Ϻb>;= iy/hN1eG._> 4ZcHI"/ :$i)5"bkf 3lc>E#klAsNT\3w0gg^ޠmܢUUo` ĎՉaϬ>Li)pz^wwbG iN P L%Szx 3pusKýD`2j7~s{ L/T]CGz_tRى-(u6.Y(ybt#C33܍D} R)W4DJNZbS(9*9 Rml{%&[ÞwzxG1>rW\v\4-IeP;0E77Ԫ;E~T Vµx&y􄱈轤  '.DG'^n!ie>p Xݟ|r՟.)B]p` ֚vAyO鶚<&tܛ/w4v`#Pܭ'Su`yQ0EŔgSLX=fLɞH%J7c^vKM0Q)7V~FN,>b'm&)lU4th'e]8z kgTW}quv 4ϟ;޻gWWOARt{,(RZ9.fF;*S nd5xHd[0nP\O2F΄GbF0Ez*)L0 m778}6˗2ek}gklb0e/y;Ͽx06>QǮO|=7/S8I0/i9Z\(]PT",^6&ڈUU ;}I27)OF.}"cc%Ael({:E8Ht͸ZW_0f¬)QUˉC7C2AbR&>WCkv La8)M_$KŔw<ʋ:cpBEHkdPLXK]k K` &KMBEFKCSd7 7쓩x<ܶ%uJ"$r-t_V/f`JM[N+5[gGL0(3ҸeaqPܟyNᴏ[@*ckwC~U˷hZZ:B`U3V7:nԚBgRXDTM"vA!XTLifbĠ L"$S x6nSK7MZb9W}W̒m<M\N'_=W\{%f_b\~RfZ͑,A`{TWmuNmvf=l"/;z U!"3/Z2uLAkVAC Mb5Wl0:&;n޶H9zSk|t$n~,MJ0_+Ȏ+>nj#I4C7VAkuҕ@=gG $mXKN@aGLlPS))o\4q-FVF1<.':8:E1}1H اa;XY4{iԭVkO!m*BJ|=y9cyH秘U#G=NZȗXq 435{A=bzcoSKײ{w1-nPD`j~vЮK!/Sfgo{#i^TS\ѝL#%Zx WBMF6ͧ)bqg4Y;Zl/rGlSݫS' sb@=öo{>R[Wז҅˜K' s2{D~;{ F@.7d0oX%n5omNQ=${t%"Hϐ~Q[ u}u1TlZ3Y}hibr|y\~$A2mS)Bk,XA؝ݠ 歽:L@"8pZ9}1W& O;pZ{H׽` ]! >E\Z\Zpy옚:BHDkOk| .<&>%VFA>{ݔ j؃}asӛT\5z=h>efbdQGNq ȕ }3XF:8ѣe҈?2 \ fڳ]qqcdl4aS'kX&̵Ϟp)j~/sNt@zYUlJT|`JT2Pb0SB(+V_iks9zz}29S+ڸ4zI<\.W 0X$UL3jS& 6_ZFT1]Z)BK >'`SE1f2jP:q&&hH2G]{bKWL6}A]0 O(Yf*` Ÿ|T9>oeMR)jod zxP.~̣`ZȘ@SD ]4]l<)C,ѣ}Q) 7C xa"]8zх5Yך7Ø"Zb_?-W\Itt$ih;s1R1e>'I׃)jSk nF @,-t6|DCʩ|ԟS|lVzJ3(-B}Vr33N٣x{m4XyM`JDM|NބHzۙV479 6.0_;|1e!Lqy\8gl +K` {sbѷw||2::d`?⪏FwicbrTdbT{'[w w9sݮge{LY\ڹ) Ag}Sq(Bs\ݻ.]^3Cp IDATt1XxX0HFJh%9хOy˦3X4Oqv,.}p0m5ɷ_H$ֶyLY]2PXZj 790hCCC(,CjIҐitNucwn)mĵ8%bLmblވM2̧P51Qimx J+ .*j IbNJ74>j͆~R@]9:L1v 2=)cI$s2u6j ^g&U ajh[Cނ)3FM<$1:H%p:ج*xΜyy"#0^[*)HIV/ְgn#gW|?U4i(3zdFǙuu;Zy+fG-K{_kuJ:%W~vL]b=nGnbt>==+|,ۊzaLm Sgj\Wjf>ePc@ΧWarE] LR-NYXZ,cʑz]7AI!]F1:׶2?7k9xE>y7K+uix ;+9 brS'4;,O._USy<"vQz]ťzJu04z'w=͂hI}BbN].f[_6+a4!h[ 3trg\snKEX,;Q:cP\zJc1hVmͣG@hHhTc=)}BQR QH Kd`K\9\&Z<.H V}5LF#du>zRSh3V{Rs.m* g5sxyPc𐳹kdǂ\/żX FbSPq$di5Ȕ2to0L9u}Gb!o'FZE F ӲЎl^39r;22jۥ❷/𼇃Y~ηN9":E0%_9ծ j6@clrvqo v"Zz0>_ߕזwuT$]Ny:e3ןS$PH[S][jrb֘cc 5Q~=;[eJ!K[OT\YOs)| `\8Kf)?t׿f-Scͳ$ث'42Я2o\p/ =LINJ*GtJ/+)t(j#^l6)vӭgk4H^$]g?G/Zb s,ꋧg0wsI1Ei.YzN7ʦc6ԯC/SėUCOA za'vw{yh.ٵQa}R`$"/L(lSssv)6aѩLv!NBCz +0E4- U-۲,[ױ5$P6SzX 0Ec|ky2 wl}xW00؜~%uxց)8ّ&*")Vs#1LjIsM.DPtLn|ֳg_\o5fI0ś)O0u` wcX,{Xt_JӮr`fՆYl6C!_o}}y|_sZ'SNl$IA/Sػ* [!hW~uěESXxu/Zb:+kbFZWMr7˛"d^]] zSK '#9Mze]_ٵJ_"$|wnaj5'dK=z6:L쑘"^K|-/y/+hb@Rd4ֽu?S)<ї# )H;}5-gHVj3Awge2_)+_0 ޗꔓ(lL~rE qo~SX lӞ vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/vst3_logo_small.png000066400000000000000000000045401461511344300307500ustar00rootroot00000000000000PNG  IHDR>(NI pHYs.#.#x?v IDAThY]H[Y? 4l 40yC p`|ȃ>0ua*RKQ$(PXpY|!Ȃg2 YBR@\!n;77{MbL=|?ׯ{&4jĄqS~xRJb(" w^_AQ*D6sBB蹜Yx BrjFdWjM0D\ֶ/jO4W,ɓB3<<|>ƅ0Fk[X5et:FӥpB \ʴkyuUH+ .j͵WH$왘SO󉻳 rq~F=\]x+9TJrkƞ":SFؘ(KdftZtE\ b˫r``H$w6rDgSdjGBLޟݓ^:]NfrkkKLVX{iv{D<㣷xCW暲69>\flG56vGt@ "dx")'NYg4ggiT\ wE'AvI'=^f"2M>Q)\ؑhDa.9H+aʪ"@LAZCZK8)j=FY[ &JkéRvks ?n'(\]4&}&"}ېYxWPPc p 0OoHg'pgtnF˙sqwgHQt V{ ڒ1558|iJ,WTKuBAW)B? %XG}灖ѯZ75Ͳ'+205߯!վs4"ɓ :D`hsm7{__ MG#13=v푰k^B:)sbnt^&)$PͱyǏ,٘^ph\.'Ą>$9>ml_'"C#}#VLh.;>U;@ dZc.pTtidxС@z\{H#VF 1=)d2O^Gxd"!ڙ>JIxxAkqq;)zg|is} ^c1@!`v_GvBoy3֔w7opG[x:9mmOӲ ڼbx!/Ggʙ!U*.= 1LuʌLYxt!+k&]g:cZ阪 =\\q"}:P3o($Ff}`_}29i_ִ}imlI-Vhi2 1&]A1Mxee_/_֧_;u!6.N~ 2(jz{#J#iRǖJt@V 912GM@9>d+hls5(ko جKH=GC*jY߅-O65J,8 iNiէi\; ӌ2f)|4̖9bwܰ/̼]列?$gV@NGȸMPN=.?9p._ٯiJM]A"zgIENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/000077500000000000000000000000001461511344300246015ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/brownnoise.h000066400000000000000000000070601461511344300271420ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/brownnoise.h // Created by : Steinberg, 03/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include #include namespace Steinberg { namespace Vst { namespace NoteExpressionSynth { //----------------------------------------------------------------------------- template class BrownNoise { public: BrownNoise (int32 bufferSize, SamplePrecision sampleRate); ~BrownNoise (); SamplePrecision at (int32 pos) const { return buffer[pos]; } int32 getSize () const { return bufferSize; } protected: SamplePrecision* buffer; int32 bufferSize; }; //----------------------------------------------------------------------------- template BrownNoise::BrownNoise (int32 bufferSize, SamplePrecision sampleRate) : buffer (0) , bufferSize (bufferSize) { buffer = new SamplePrecision [bufferSize]; const SamplePrecision f = (SamplePrecision)0.0045; SamplePrecision accu = (SamplePrecision)0.; SamplePrecision y; for (int32 frame = 0; frame < bufferSize; frame++) { y = ((SamplePrecision)rand () / (SamplePrecision)RAND_MAX - (SamplePrecision)0.5) * (SamplePrecision)2.; accu = (f * y) + (((SamplePrecision)1.0 - f) * accu); y = (SamplePrecision)1.55 * accu * (SamplePrecision)100. / (SamplePrecision)::sqrt (::sqrt (sampleRate)); buffer[frame] = y; } } //----------------------------------------------------------------------------- template BrownNoise::~BrownNoise () { delete [] buffer; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/factory.cpp000066400000000000000000000100521461511344300267520ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/factory.cpp // Created by : Steinberg, 02/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/pluginfactory.h" #include "note_expression_synth_processor.h" #include "note_expression_synth_controller.h" #include "note_expression_synth_ui.h" #include "version.h" // for versioning #if TARGET_OS_IPHONE #include "public.sdk/source/vst/vstguieditor.h" extern void* moduleHandle; #endif #define stringPluginName "Note Expression Synth" BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID(Steinberg::Vst::NoteExpressionSynth::ProcessorWithUIController::cid), PClassInfo::kManyInstances, kVstAudioEffectClass, stringPluginName " With UI", Vst::kDistributable, Vst::PlugType::kInstrumentSynth, FULL_VERSION_STR, kVstVersionString, Steinberg::Vst::NoteExpressionSynth::ProcessorWithUIController::createInstance) DEF_CLASS2 (INLINE_UID_FROM_FUID(Steinberg::Vst::NoteExpressionSynth::ControllerWithUI::cid), PClassInfo::kManyInstances, kVstComponentControllerClass, stringPluginName " With UI", 0, // not used here "", // not used here FULL_VERSION_STR, kVstVersionString, Steinberg::Vst::NoteExpressionSynth::ControllerWithUI::createInstance) DEF_CLASS2 (INLINE_UID_FROM_FUID(Steinberg::Vst::NoteExpressionSynth::Processor::cid), PClassInfo::kManyInstances, kVstAudioEffectClass, stringPluginName, Vst::kDistributable, Vst::PlugType::kInstrumentSynth, FULL_VERSION_STR, kVstVersionString, Steinberg::Vst::NoteExpressionSynth::Processor::createInstance) DEF_CLASS2 (INLINE_UID_FROM_FUID(Steinberg::Vst::NoteExpressionSynth::Controller::cid), PClassInfo::kManyInstances, kVstComponentControllerClass, stringPluginName, 0, // not used here "", // not used here FULL_VERSION_STR, kVstVersionString, Steinberg::Vst::NoteExpressionSynth::Controller::createInstance) END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/filter.h000066400000000000000000000116201461511344300262370ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/filter.h // Created by : Steinberg, 03/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include #ifndef M_PI #define M_PI 3.14159265358979323846 #endif namespace Steinberg { namespace Vst { namespace NoteExpressionSynth { //----------------------------------------------------------------------------- class Filter { public: enum Type { kLowpass, kHighpass, kBandpass, kNumTypes }; Filter (Type type) : type (type), sampleRate (44100.) { reset (); } inline void setType (Type t) { type = t; } inline void setSampleRate (double sampleRate); inline void setFreqAndQ (double frequency, double q); inline double process (double sample); inline void reset (); protected: Type type; double sampleRate; double invSampleRate; double in1; double in2; double out1; double out2; double b0a0; double b1a0; double b2a0; double a1a0; double a2a0; }; //----------------------------------------------------------------------------- void Filter::reset () { in1 = in2 = out1 = out2 = 0.; b0a0 = 1.; b1a0 = b2a0 = a1a0 = a2a0 = 0.; } //----------------------------------------------------------------------------- void Filter::setSampleRate (double _sampleRate) { sampleRate = _sampleRate; invSampleRate = 1. / _sampleRate; } //----------------------------------------------------------------------------- void Filter::setFreqAndQ (double freq, double q) { static const double M_LOG2 = log (2.0); double frequency = std::max (80., freq); bool q_is_bandwidth = true; // temp coefficient vars double alpha = 1.; double a0 = 0.; double a1 = 0.; double a2 = 0.; double b0 = 0.; double b1 = 0.; double b2 = 0.; double const omega = 2.0 * M_PI * frequency * invSampleRate; double const tsin = sin (omega); double const tcos = cos (omega); if (type == kBandpass) { if (q_is_bandwidth) alpha = tsin * sinh (M_LOG2 * 0.5 * q * omega / tsin); else alpha = tsin / (2.0 * q); b0=tsin * 0.5; b1=0.0; b2=-tsin * 0.5; a0=1.0+alpha; a1=-2.0*tcos; a2=1.0-alpha; } else { if (q_is_bandwidth) alpha = tsin * sinh (M_LOG2 * 0.5 * q * omega / tsin); else alpha = tsin / (2.0 * q); if (type == kLowpass) { b0=(1.0-tcos) * 0.5; b1=1.0-tcos; b2=(1.0-tcos) * 0.5; a0=1.0+alpha; a1=-2.0*tcos; a2=1.0-alpha; } else if (type == kHighpass) { b0=(1.0+tcos) * 0.5; b1=-(1.0+tcos); b2=(1.0+tcos) * 0.5; a0=1.0+ alpha; a1=-2.0*tcos; a2=1.0-alpha; } } double invA0 = 1.0 / a0; b0a0=float(b0 * invA0); b1a0=float(b1 * invA0); b2a0=float(b2 * invA0); a1a0=float(a1 * invA0); a2a0=float(a2 * invA0); } //----------------------------------------------------------------------------- double Filter::process (double sample) { double output = b0a0 * sample + b1a0 * in1 + b2a0 * in2 - a1a0 * out1 - a2a0 * out2; in2 = in1; in1 = sample; out2 = out1; out1 = output; return output; } }}} // namespaces note_expression_synth_controller.cpp000066400000000000000000000436661461511344300341610ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_controller.cpp // Created by : Steinberg, 02/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "note_expression_synth_controller.h" #include "note_expression_synth_voice.h" // only needed for setComponentState #include "base/source/fstring.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ustring.h" namespace Steinberg { namespace Vst { namespace NoteExpressionSynth { FUID Controller::cid (0x2AC0A888, 0x9406497F, 0xBBA6EABF, 0xC78D1372); //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- class PanNoteExpressionType : public RangeNoteExpressionType { public: PanNoteExpressionType () : RangeNoteExpressionType ( kPanTypeID, String ("Pan"), String ("Pan"), nullptr, -1, 0, -100, 100, NoteExpressionTypeInfo::kIsBipolar | NoteExpressionTypeInfo::kIsAbsolute, 0) { } tresult getStringByValue (NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) SMTG_OVERRIDE { if (valueNormalized == 0.5) UString128 ("C").copyTo (string, 128); else if (valueNormalized == 0) UString128 ("L").copyTo (string, 128); else if (valueNormalized == 1) UString128 ("R").copyTo (string, 128); else RangeNoteExpressionType::getStringByValue (valueNormalized, string); return kResultTrue; } tresult getValueByString (const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) SMTG_OVERRIDE { String str (string); if (str == "C") { valueNormalized = 0.5; return kResultTrue; } else if (str == "L") { valueNormalized = 0.; return kResultTrue; } else if (str == "R") { valueNormalized = 1.; return kResultTrue; } return RangeNoteExpressionType::getValueByString (string, valueNormalized); } OBJ_METHODS(PanNoteExpressionType, RangeNoteExpressionType) }; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- class ReleaseTimeModNoteExpressionType : public NoteExpressionType { public: ReleaseTimeModNoteExpressionType () : NoteExpressionType (Controller::kReleaseTimeModTypeID, String ("Release Time"), String ("RelTime"), String ("%"), -1, 0.5, 0., 1., 0, NoteExpressionTypeInfo::kIsBipolar|NoteExpressionTypeInfo::kIsOneShot) { } tresult getStringByValue (NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) SMTG_OVERRIDE { UString128 wrapper; double timeFactor = pow (100., 2 * (valueNormalized - 0.5)); wrapper.printFloat (timeFactor, timeFactor > 10 ? 1 : 2); wrapper.copyTo (string, 128); return kResultTrue; } tresult getValueByString (const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) SMTG_OVERRIDE { String wrapper ((TChar*)string); ParamValue tmp; if (wrapper.scanFloat (tmp)) { valueNormalized = Bound (0.0, 1.0, log10 (tmp) / 4. + 0.5); return kResultTrue; } return kResultFalse; } OBJ_METHODS(ReleaseTimeModNoteExpressionType, NoteExpressionType) }; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- tresult PLUGIN_API Controller::initialize (FUnknown* context) { tresult result = EditController::initialize (context); if (result == kResultTrue) { // Init parameters Parameter* param; param = new RangeParameter (USTRING("Master Volume"), kParamMasterVolume, USTRING("%"), 0, 100, 80); param->setPrecision (1); parameters.addParameter (param); param = new RangeParameter (USTRING("Master Tuning"), kParamMasterTuning, USTRING("cent"), -200, 200, 0); param->setPrecision (0); parameters.addParameter (param); param = new RangeParameter (USTRING("Velocity To Level"), kParamVelToLevel, USTRING("%"), 0, 100, 30); param->setPrecision (1); parameters.addParameter (param); param = new RangeParameter (USTRING("Release Time"), kParamReleaseTime, USTRING("sec"), 0.005, MAX_RELEASE_TIME_SEC, 0.025); param->setPrecision (3); parameters.addParameter (param); param = new RangeParameter (USTRING("Noise Volume"), kParamNoiseVolume, USTRING("%"), 0, 100, 0); param->setPrecision (1); parameters.addParameter (param); param = new RangeParameter (USTRING("Sinus Volume"), kParamSinusVolume, USTRING("%"), 0, 100, 80); param->setPrecision (1); parameters.addParameter (param); param = new RangeParameter (USTRING("Triangle Volume"), kParamTriangleVolume, USTRING("%"), 0, 100, 20); param->setPrecision (1); parameters.addParameter (param); param = new RangeParameter (USTRING("Square Volume"), kParamSquareVolume, USTRING("%"), 0, 100, 80); param->setPrecision (1); parameters.addParameter (param); param = new RangeParameter (USTRING("Sinus Detune"), kParamSinusDetune, USTRING("cent"), -200, 200, 0); param->setPrecision (0); parameters.addParameter (param); param = new RangeParameter (USTRING("Triangle Slop"), kParamTriangleSlop, USTRING("%"), 0, 100, 50); param->setPrecision (0); parameters.addParameter (param); auto* filterTypeParam = new StringListParameter (USTRING("Filter Type"), kParamFilterType); filterTypeParam->appendString (USTRING("Lowpass")); filterTypeParam->appendString (USTRING("Highpass")); filterTypeParam->appendString (USTRING("Bandpass")); parameters.addParameter (filterTypeParam); param = new LogScaleParameter (USTRING("Filter Frequency"), kParamFilterFreq, VoiceStatics::freqLogScale); param->getInfo ().defaultNormalizedValue = 0.75; param->setPrecision (1); parameters.addParameter (param); param = new RangeParameter (USTRING("Frequency Mod Depth"), kParamFilterFreqModDepth, USTRING("%"), -100, 100, 20); param->setPrecision (1); parameters.addParameter (param); param = parameters.addParameter (USTRING("Filter Q"), nullptr, 0, 0, ParameterInfo::kCanAutomate, kParamFilterQ); param->getInfo ().defaultNormalizedValue = 0.2; param->setPrecision (2); parameters.addParameter (USTRING("Bypass SNA"), nullptr, 1, 0, ParameterInfo::kCanAutomate, kParamBypassSNA); parameters.addParameter (new RangeParameter (USTRING("Active Voices"), kParamActiveVoices, nullptr, 0, MAX_VOICES, 0, MAX_VOICES, ParameterInfo::kIsReadOnly)); auto* tuningRangeParam = new StringListParameter (USTRING("Tuning Range"), kParamTuningRange, nullptr, ParameterInfo::kIsList); tuningRangeParam->appendString (USTRING("[-1, +1] Octave")); tuningRangeParam->appendString (USTRING("[-3, +2] Tunes")); parameters.addParameter (tuningRangeParam); // Init Note Expression Types auto volumeNoteExp = new NoteExpressionType (kVolumeTypeID, String ("Volume"), String ("Vol"), nullptr, -1, 1., 0., 1., 0, 0); volumeNoteExp->setPhysicalUITypeID(PhysicalUITypeIDs::kPUIPressure); noteExpressionTypes.addNoteExpressionType (volumeNoteExp); noteExpressionTypes.addNoteExpressionType (new PanNoteExpressionType ()); NoteExpressionType* tuningNoteExpression = new RangeNoteExpressionType (kTuningTypeID, String ("Tuning"), String ("Tun"), String ("Half Tone"), -1, 0, 120, -120, NoteExpressionTypeInfo::kIsBipolar); tuningNoteExpression->getInfo ().valueDesc.minimum = 0.5 - VoiceStatics::kNormTuningOneOctave; tuningNoteExpression->getInfo ().valueDesc.maximum = 0.5 + VoiceStatics::kNormTuningOneOctave; tuningNoteExpression->setPhysicalUITypeID (PhysicalUITypeIDs::kPUIXMovement); noteExpressionTypes.addNoteExpressionType (tuningNoteExpression); auto noteExp = new NoteExpressionType (kSinusVolumeTypeID, String ("Sinus Volume"), String ("Sin Vol"), String ("%"), -1, getParameterObject (kParamSinusVolume), NoteExpressionTypeInfo::kIsAbsolute); noteExpressionTypes.addNoteExpressionType (noteExp); noteExpressionTypes.addNoteExpressionType (new NoteExpressionType (kSinusDetuneTypeID, String ("Sinus Detune"), String ("Sin Detune"), String ("Cent"), -1, getParameterObject (kParamSinusDetune), NoteExpressionTypeInfo::kIsAbsolute|NoteExpressionTypeInfo::kIsBipolar)); noteExpressionTypes.addNoteExpressionType (new NoteExpressionType (kTriangleVolumeTypeID, String ("Triangle Volume"), String ("Tri Vol"), String ("%"), -1, getParameterObject (kParamTriangleVolume), NoteExpressionTypeInfo::kIsAbsolute)); noteExpressionTypes.addNoteExpressionType (new NoteExpressionType (kSquareVolumeTypeID, String ("Square Volume"), String ("Square Vol"), String ("%"), -1, getParameterObject (kParamSquareVolume), NoteExpressionTypeInfo::kIsAbsolute)); noteExpressionTypes.addNoteExpressionType (new NoteExpressionType (kNoiseVolumeTypeID, String ("Noise Volume"), String ("Noise Vol"), String ("%"), -1, getParameterObject (kParamNoiseVolume), NoteExpressionTypeInfo::kIsAbsolute)); auto rNoteExp = new RangeNoteExpressionType (kFilterFreqModTypeID, String ("Filter Frequency Modulation"), String ("Freq Mod"), nullptr, -1, 0, -100, 100, NoteExpressionTypeInfo::kIsBipolar, 0); rNoteExp->setPhysicalUITypeID (PhysicalUITypeIDs::kPUIYMovement); noteExpressionTypes.addNoteExpressionType (rNoteExp); noteExpressionTypes.addNoteExpressionType (new RangeNoteExpressionType (kFilterQModTypeID, String ("Filter Q Modulation"), String ("Q Mod"), nullptr, -1, 0, -100, 100, NoteExpressionTypeInfo::kIsBipolar, 0)); noteExpressionTypes.addNoteExpressionType (new NoteExpressionType (kFilterTypeTypeID, String ("Filter Type"), String ("Flt Type"), nullptr, -1, getParameterObject (kParamFilterType), NoteExpressionTypeInfo::kIsBipolar)); noteExpressionTypes.addNoteExpressionType (new ReleaseTimeModNoteExpressionType ()); // Init Default MIDI-CC Map std::for_each (midiCCMapping.begin (), midiCCMapping.end (), [] (ParamID& pid) { pid = InvalidParamID; }); midiCCMapping[ControllerNumbers::kPitchBend] = kParamMasterTuning; midiCCMapping[ControllerNumbers::kCtrlVolume] = kParamMasterVolume; midiCCMapping[ControllerNumbers::kCtrlModWheel] = kParamFilterFreqModDepth; midiCCMapping[ControllerNumbers::kCtrlFilterCutoff] = kParamFilterFreq; midiCCMapping[ControllerNumbers::kCtrlFilterResonance] = kParamFilterQ; } return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API Controller::terminate () { noteExpressionTypes.removeAll (); return EditController::terminate (); } //----------------------------------------------------------------------------- tresult PLUGIN_API Controller::setComponentState (IBStream* state) { GlobalParameterState gps; tresult result = gps.setState (state); if (result == kResultTrue) { setParamNormalized (kParamMasterVolume, gps.masterVolume); setParamNormalized (kParamMasterTuning, (gps.masterTuning + 1) / 2.); setParamNormalized (kParamVelToLevel, gps.velToLevel); setParamNormalized (kParamFilterFreqModDepth, (gps.freqModDepth + 1) / 2.); setParamNormalized (kParamReleaseTime, gps.releaseTime); setParamNormalized (kParamNoiseVolume, gps.noiseVolume); setParamNormalized (kParamSinusVolume, gps.sinusVolume); setParamNormalized (kParamTriangleVolume, gps.triangleVolume); setParamNormalized (kParamSquareVolume, gps.squareVolume); setParamNormalized (kParamSinusDetune, (gps.sinusDetune + 1) / 2.); setParamNormalized (kParamTriangleSlop, gps.triangleSlop); setParamNormalized (kParamFilterType, plainParamToNormalized (kParamFilterType, gps.filterType)); setParamNormalized (kParamFilterFreq, gps.filterFreq); setParamNormalized (kParamFilterQ, gps.filterQ); setParamNormalized (kParamBypassSNA, gps.bypassSNA); setParamNormalized (kParamTuningRange, plainParamToNormalized (kParamTuningRange, gps.tuningRange)); } return result; } //------------------------------------------------------------------------ tresult PLUGIN_API Controller::setParamNormalized (ParamID tag, ParamValue value) { bool newRange = false; if (tag == kParamTuningRange && getParamNormalized (tag) != value) { newRange = true; NoteExpressionType* net = noteExpressionTypes.getNoteExpressionType (kTuningTypeID); if (value > 0) { noteExpressionTypes.addNoteExpressionType (new NoteExpressionType ( kTriangleSlopeTypeID, String ("Triangle Slope"), String ("Tri Slope"), String ("%"), -1, getParameterObject (kParamTriangleSlop), NoteExpressionTypeInfo::kIsAbsolute)); if (net) { net->getInfo ().valueDesc.minimum = 0.5 - 3 * VoiceStatics::kNormTuningOneTune; net->getInfo ().valueDesc.maximum = 0.5 + 2 * VoiceStatics::kNormTuningOneTune; } } else { noteExpressionTypes.removeNoteExpressionType (kTriangleSlopeTypeID); if (net) { net->getInfo ().valueDesc.minimum = 0.5 - VoiceStatics::kNormTuningOneOctave; net->getInfo ().valueDesc.maximum = 0.5 + VoiceStatics::kNormTuningOneOctave; } } } tresult res = EditController::setParamNormalized (tag, value); if (newRange && componentHandler) componentHandler->restartComponent (kNoteExpressionChanged); return res; } //----------------------------------------------------------------------------- tresult PLUGIN_API Controller::getMidiControllerAssignment (int32 busIndex, int16 channel, CtrlNumber midiControllerNumber, ParamID& id /*out*/) { if (busIndex == 0 && channel == 0 && midiControllerNumber < kCountCtrlNumber) { if (midiCCMapping[midiControllerNumber] != InvalidParamID) { id = midiCCMapping[midiControllerNumber]; return kResultTrue; } } return kResultFalse; } //----------------------------------------------------------------------------- int32 PLUGIN_API Controller::getNoteExpressionCount (int32 busIndex, int16 channel) { if (busIndex == 0 && channel == 0) { return noteExpressionTypes.getNoteExpressionCount (); } return 0; } //----------------------------------------------------------------------------- tresult PLUGIN_API Controller::getNoteExpressionInfo (int32 busIndex, int16 channel, int32 noteExpressionIndex, NoteExpressionTypeInfo& info /*out*/) { if (busIndex == 0 && channel == 0) { return noteExpressionTypes.getNoteExpressionInfo (noteExpressionIndex, info); } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API Controller::getNoteExpressionStringByValue ( int32 busIndex, int16 channel, NoteExpressionTypeID id, NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) { if (busIndex == 0 && channel == 0) { return noteExpressionTypes.getNoteExpressionStringByValue (id, valueNormalized, string); } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API Controller::getNoteExpressionValueByString ( int32 busIndex, int16 channel, NoteExpressionTypeID id, const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) { if (busIndex == 0 && channel == 0) { return noteExpressionTypes.getNoteExpressionValueByString (id, string, valueNormalized); } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API Controller::getPhysicalUIMapping (int32 busIndex, int16 channel, PhysicalUIMapList& list) { if (busIndex == 0 && channel == 0) { for (uint32 i = 0; i < list.count; ++i) { NoteExpressionTypeID type = kInvalidTypeID; if (noteExpressionTypes.getMappedNoteExpression (list.map[i].physicalUITypeID, type) == kResultTrue) list.map[i].noteExpressionTypeID = type; } return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ } // NoteExpressionSynth } // Vst } // Steinberg note_expression_synth_controller.h000066400000000000000000000142721461511344300336150ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_controller.h // Created by : Steinberg, 02/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" #include "public.sdk/source/vst/vstnoteexpressiontypes.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/ivstmidilearn.h" #include "pluginterfaces/vst/ivstnoteexpression.h" #include "pluginterfaces/vst/ivstphysicalui.h" #include #include #define MAX_VOICES 64 #define MAX_RELEASE_TIME_SEC 5.0 #define NUM_FILTER_TYPE 3 #define NUM_TUNING_RANGE 2 namespace Steinberg { namespace Vst { namespace NoteExpressionSynth { //----------------------------------------------------------------------------- // Global Parameters //----------------------------------------------------------------------------- enum { kParamReleaseTime, kParamNoiseVolume, kParamSinusVolume, kParamTriangleVolume, kParamSinusDetune, kParamBypassSNA, kParamTriangleSlop, kParamFilterType, kParamFilterFreq, kParamFilterQ, kParamMasterVolume, kParamMasterTuning, kParamVelToLevel, kParamFilterFreqModDepth, kParamTuningRange, kParamActiveVoices, kParamSquareVolume, kNumGlobalParameters }; //----------------------------------------------------------------------------- /** Example Note Expression Edit Controller \sa Steinberg::Vst::INoteExpressionController \sa Steinberg::Vst::NoteExpressionTypeContainer \sa Steinberg::Vst::NoteExpressionType */ class Controller : public EditController, public INoteExpressionController, public IMidiMapping, public INoteExpressionPhysicalUIMapping { public: //--- EditController ----------------------------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; //--- IMidiMapping ------------------------------- tresult PLUGIN_API getMidiControllerAssignment (int32 busIndex, int16 channel, CtrlNumber midiControllerNumber, ParamID& id/*out*/) SMTG_OVERRIDE; //--- INoteExpressionController ------------------ int32 PLUGIN_API getNoteExpressionCount (int32 busIndex, int16 channel) SMTG_OVERRIDE; tresult PLUGIN_API getNoteExpressionInfo (int32 busIndex, int16 channel, int32 noteExpressionIndex, NoteExpressionTypeInfo& info /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getNoteExpressionStringByValue (int32 busIndex, int16 channel, NoteExpressionTypeID id, NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getNoteExpressionValueByString (int32 busIndex, int16 channel, NoteExpressionTypeID id, const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) SMTG_OVERRIDE; enum NoteExpressionTypeIds { kNoiseVolumeTypeID = kCustomStart, kFilterFreqModTypeID, kFilterQModTypeID, kSinusVolumeTypeID, kTriangleVolumeTypeID, kFilterTypeTypeID, kTriangleSlopeTypeID, kSinusDetuneTypeID, kReleaseTimeModTypeID, kTextInputTypeID, kSquareVolumeTypeID, }; //--- INoteExpressionPhysicalUIMapping ------------ tresult PLUGIN_API getPhysicalUIMapping (int32 busIndex, int16 channel, PhysicalUIMapList& list) SMTG_OVERRIDE; //--- --------------------------------------------- static FUnknown* createInstance (void*) { return (IEditController*)new Controller (); } static FUID cid; OBJ_METHODS (Controller, EditController) DEFINE_INTERFACES DEF_INTERFACE (INoteExpressionController) DEF_INTERFACE (IMidiMapping) DEF_INTERFACE (INoteExpressionPhysicalUIMapping) END_DEFINE_INTERFACES (EditController) REFCOUNT_METHODS (EditController) protected: NoteExpressionTypeContainer noteExpressionTypes; static constexpr ParamID InvalidParamID = std::numeric_limits::max (); std::array midiCCMapping; }; //------------------------------------------------------------------------ static constexpr auto MsgIDEvent = "Event"; //------------------------------------------------------------------------ } // NoteExpressionSynth } // Vst } // Steinberg note_expression_synth_processor.cpp000066400000000000000000000231741461511344300340050ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_processor.cpp // Created by : Steinberg, 02/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "note_expression_synth_processor.h" #include "../../common/voiceprocessor.h" #include "note_expression_synth_controller.h" #include "pluginterfaces/base/ustring.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include namespace Steinberg { namespace Vst { namespace NoteExpressionSynth { //----------------------------------------------------------------------------- FUID Processor::cid (0x6EE65CD1, 0xB83A4AF4, 0x80AA7929, 0xAEA6B8A0); //----------------------------------------------------------------------------- Processor::Processor () : voiceProcessor (nullptr) { setControllerClass (Controller::cid); memset (¶mState, 0, sizeof (paramState)); paramState.masterVolume = 0.5; paramState.masterTuning = 0; paramState.velToLevel = 1.; paramState.noiseVolume = 0.1; paramState.sinusVolume = 1.; paramState.triangleVolume = 1.; paramState.releaseTime = 0.; paramState.sinusDetune = 0; paramState.triangleSlop = 0.5; paramState.filterFreq = 1.; paramState.filterQ = 0.; paramState.filterType = 0; paramState.freqModDepth = 1.; paramState.bypassSNA = 0; } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::initialize (FUnknown* context) { tresult result = AudioEffect::initialize (context); if (result == kResultTrue) { addAudioOutput (STR16 ("Audio Output"), SpeakerArr::kStereo); addEventInput (STR16 ("Event Input"), 1); } return result; } //------------------------------------------------------------------------ tresult PLUGIN_API Processor::notify (IMessage* message) { auto msgID = message->getMessageID (); if (strcmp (msgID, MsgIDEvent) != 0) return kResultFalse; if (auto attr = message->getAttributes ()) { const void* msgData; uint32 msgSize; if (attr->getBinary (MsgIDEvent, msgData, msgSize) == kResultTrue && msgSize == sizeof (Event)) { auto evt = reinterpret_cast(msgData); controllerEvents.push (*evt); } } return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::setState (IBStream* state) { return paramState.setState (state); } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::getState (IBStream* state) { return paramState.getState (state); } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { // we only support one stereo output bus if (numIns == 0 && numOuts == 1 && outputs[0] == SpeakerArr::kStereo) { return AudioEffect::setBusArrangements (inputs, numIns, outputs, numOuts); } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::canProcessSampleSize (int32 symbolicSampleSize) { if (symbolicSampleSize == kSample32 || symbolicSampleSize == kSample64) { return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::setActive (TBool state) { if (state) { if (paramState.noiseBuffer == nullptr) paramState.noiseBuffer = new BrownNoise ((int32)processSetup.sampleRate, (float)processSetup.sampleRate); if (voiceProcessor == nullptr) { if (processSetup.symbolicSampleSize == kSample32) { voiceProcessor = new VoiceProcessorImplementation, 2, MAX_VOICES, GlobalParameterState> ( (float)processSetup.sampleRate, ¶mState); } else if (processSetup.symbolicSampleSize == kSample64) { voiceProcessor = new VoiceProcessorImplementation, 2, MAX_VOICES, GlobalParameterState> ( (float)processSetup.sampleRate, ¶mState); } else { return kInvalidArgument; } } } else { if (voiceProcessor) { delete voiceProcessor; } voiceProcessor = nullptr; if (paramState.noiseBuffer) { delete paramState.noiseBuffer; } paramState.noiseBuffer = nullptr; } return AudioEffect::setActive (state); } //----------------------------------------------------------------------------- tresult PLUGIN_API Processor::process (ProcessData& data) { // TODO: maybe try to make this nearly sample accurate if (data.inputParameterChanges) { int32 count = data.inputParameterChanges->getParameterCount (); for (int32 i = 0; i < count; i++) { IParamValueQueue* queue = data.inputParameterChanges->getParameterData (i); if (queue) { int32 sampleOffset; ParamValue value; ParamID pid = queue->getParameterId (); if (queue->getPoint (queue->getPointCount () - 1, sampleOffset, value) == kResultTrue) { switch (pid) { case kParamMasterVolume: { paramState.masterVolume = value; break; } case kParamMasterTuning: { paramState.masterTuning = 2 * (value - 0.5); break; } case kParamVelToLevel: { paramState.velToLevel = value; break; } case kParamFilterFreqModDepth: { paramState.freqModDepth = 2 * (value - 0.5); break; } case kParamNoiseVolume: { paramState.noiseVolume = value; break; } case kParamSinusVolume: { paramState.sinusVolume = value; break; } case kParamTriangleVolume: { paramState.triangleVolume = value; break; } case kParamSquareVolume: { paramState.squareVolume = value; break; } case kParamReleaseTime: { paramState.releaseTime = value; break; } case kParamSinusDetune: { paramState.sinusDetune = 2 * (value - 0.5); break; } case kParamTriangleSlop: { paramState.triangleSlop = value; break; } case kParamFilterType: { paramState.filterType = std::min ( (int8) (NUM_FILTER_TYPE * value), NUM_FILTER_TYPE - 1); break; } case kParamFilterFreq: { paramState.filterFreq = value; break; } case kParamFilterQ: { paramState.filterQ = value; break; } case kParamBypassSNA: { paramState.bypassSNA = (value >= 0.5) ? 1 : 0; break; } case kParamTuningRange: { paramState.tuningRange = std::min ( (int8) (NUM_TUNING_RANGE * value), NUM_TUNING_RANGE - 1); break; } } } } } } tresult result; Event evt {}; while (controllerEvents.pop (evt)) { voiceProcessor->processEvent (evt); } // flush mode if (data.numOutputs < 1) result = kResultTrue; else result = voiceProcessor->process (data); if (result == kResultTrue) { if (data.outputParameterChanges) { int32 index; IParamValueQueue* queue = data.outputParameterChanges->addParameterData (kParamActiveVoices, index); if (queue) { queue->addPoint ( 0, (ParamValue)voiceProcessor->getActiveVoices () / (ParamValue)MAX_VOICES, index); } } if (voiceProcessor->getActiveVoices () == 0 && data.numOutputs > 0) { data.outputs[0].silenceFlags = 3; // left and right channel are silent } } return result; } } // NoteExpressionSynth } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/note_expression_synth_processor.h000066400000000000000000000067141461511344300335320ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_processor.h // Created by : Steinberg, 02/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" #include "public.sdk/source/vst/utility/ringbuffer.h" #include "note_expression_synth_voice.h" namespace Steinberg { namespace Vst { class VoiceProcessor; namespace NoteExpressionSynth { //----------------------------------------------------------------------------- /** Example Note Expression Audio Processor \sa Steinberg::Vst::VoiceProcessor \sa Steinberg::Vst::VoiceBase */ class Processor : public AudioEffect { public: Processor (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; tresult PLUGIN_API notify (IMessage* message) SMTG_OVERRIDE; static FUnknown* createInstance (void*) { return (IAudioProcessor*)new Processor (); } static FUID cid; protected: VoiceProcessor* voiceProcessor; GlobalParameterState paramState; OneReaderOneWriter::RingBuffer controllerEvents {16}; }; }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/note_expression_synth_ui.cpp000066400000000000000000000454131461511344300324620ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_ui.cpp // Created by : Steinberg, 12/2010 // Description : Note Expression Synth UI version using VSTGUI 4 // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "note_expression_synth_ui.h" #include "vstgui/contrib/keyboardview.h" #include "vstgui/plugin-bindings/vst3groupcontroller.h" #include "vstgui/plugin-bindings/vst3padcontroller.h" #include "base/source/fstreamer.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstinterappaudio.h" #include "pluginterfaces/vst/ivstpluginterfacesupport.h" #include using namespace VSTGUI; //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace NoteExpressionSynth { //------------------------------------------------------------------------ class ConditionalRemoveViewController : public DelegationController { public: ConditionalRemoveViewController (IController* controller, bool needed) : DelegationController (controller), needed (needed) { } CView* verifyView (CView* view, const UIAttributes& attributes, const IUIDescription* description) override { if (!needed) { view->forget (); return nullptr; } return controller->verifyView (view, attributes, description); } bool needed; }; //------------------------------------------------------------------------ class InterAppAudioControlsController : public IController { public: enum { kSettings = 5000, kLoadPreset, kSavePreset }; InterAppAudioControlsController (IInterAppAudioHost* iaaHost) : host (iaaHost) {} void valueChanged (VSTGUI::CControl* pControl) override { if (pControl->getValue ()) { switch (pControl->getTag ()) { case kSettings: { host->showSettingsView (); break; } case kLoadPreset: { getPresetManager ()->runLoadPresetBrowser (); break; } case kSavePreset: { getPresetManager ()->runSavePresetBrowser (); break; } } } } private: IInterAppAudioPresetManager* getPresetManager () { if (presetManager == nullptr) { TUID uid; ProcessorWithUIController::cid.toTUID (uid); presetManager = owned (host->createPresetManager (uid)); } return presetManager; } IInterAppAudioHost* host; IPtr presetManager; }; //------------------------------------------------------------------------ class InterAppAudioPlayer : public KeyboardViewPlayerDelegate { public: InterAppAudioPlayer (IInterAppAudioHost* _host) : host (_host) {} int32_t onNoteOn (NoteIndex note, double xPos, double yPos) override { Event e {}; e.type = Event::kNoteOnEvent; e.noteOn.pitch = note; e.noteOn.velocity = static_cast (yPos); if (host->scheduleEventFromUI (e) == kResultTrue) { onNoteModulation (e.noteOn.noteId, xPos, yPos); return e.noteOn.noteId; } return note; } void onNoteOff (NoteIndex note, int32_t noteID) override { Event e {}; e.type = Event::kNoteOffEvent; e.noteOff.noteId = noteID; e.noteOff.pitch = note; e.noteOff.velocity = 0.f; host->scheduleEventFromUI (e); } void onNoteModulation (int32_t noteID, double xPos, double yPos) override { Event e {}; e.type = Event::kNoteExpressionValueEvent; e.noteExpressionValue.noteId = noteID; e.noteExpressionValue.typeId = noteExpressionModulationID; e.noteExpressionValue.value = xPos; host->scheduleEventFromUI (e); e.noteExpressionValue.typeId = kVolumeTypeID; e.noteExpressionValue.value = yPos; host->scheduleEventFromUI (e); } private: IInterAppAudioHost* host {nullptr}; NoteExpressionTypeID noteExpressionModulationID {Controller::kFilterFreqModTypeID}; }; //------------------------------------------------------------------------ class KeyboardController : public DelegationController, public ViewListenerAdapter, public IKeyboardViewKeyRangeChangedListener, public KeyboardViewPlayerDelegate { public: KeyboardController (IController* parent, IKeyboardViewPlayerDelegate* player, KeyboardViewRangeSelector::Range& range) : DelegationController (parent), player (player), selectedRange (range) { } ~KeyboardController () noexcept override { if (player) { for (auto& e : noteOnIds) { player->onNoteOff (e.second, e.first); } } if (keyboard) keyboard->unregisterViewListener (this); if (rangeSelector) { rangeSelector->unregisterViewListener (this); rangeSelector->unregisterKeyRangeChangedListener (this); } } CView* verifyView (CView* view, const UIAttributes& attributes, const IUIDescription* description) override { if (auto kb = dynamic_cast (view)) { assert (keyboard == nullptr); keyboard = kb; keyboard->registerViewListener (this); keyboard->setDelegate (this); } else if (auto kbsv = dynamic_cast (view)) { assert (rangeSelector == nullptr); rangeSelector = kbsv; rangeSelector->registerViewListener (this); rangeSelector->registerKeyRangeChangedListener (this); if (selectedRange.length > 0) rangeSelector->setSelectionRange (selectedRange); } return controller->verifyView (view, attributes, description); } void viewAttached (CView* view) override { if (view == rangeSelector) { updateKeyboard (); } } void viewWillDelete (CView* view) override { if (view == rangeSelector) { rangeSelector = nullptr; } else if (view == keyboard) { keyboard = nullptr; } view->unregisterViewListener (this); } private: int32_t onNoteOn (NoteIndex note, double xPos, double yPos) override { int32_t noteID = note; if (player) { noteID = player->onNoteOn (note, xPos, yPos); noteOnIds[noteID] = note; } keyboard->setKeyPressed (note, true); rangeSelector->setKeyPressed (note, true); return noteID; } void onNoteOff (NoteIndex note, int32_t noteID) override { if (player) { player->onNoteOff (note, noteID); noteOnIds.erase (noteID); } rangeSelector->setKeyPressed (note, false); keyboard->setKeyPressed (note, false); } void onNoteModulation (int32_t noteID, double xPos, double yPos) override { if (player) player->onNoteModulation (noteID, xPos, yPos); } void onKeyRangeChanged (KeyboardViewRangeSelector*) override { if (!keyboard) return; auto range = rangeSelector->getSelectionRange (); while (!keyboard->isWhiteKey (range.position)) range.position--; rangeSelector->setSelectionRange (range); updateKeyboard (); selectedRange = rangeSelector->getSelectionRange (); } void updateKeyboard () { if (keyboard && rangeSelector) { auto range = rangeSelector->getSelectionRange (); CCoord whiteKeyWidth = std::floor (keyboard->getViewSize ().getWidth () / rangeSelector->getNumWhiteKeysSelected ()); if (range.position + range.length > rangeSelector->getNumKeys () + rangeSelector->getKeyRangeStart ()) { range.length -= 1; rangeSelector->setSelectionRange (range); } keyboard->setKeyRange (range.position, range.length); keyboard->setWhiteKeyWidth (whiteKeyWidth); keyboard->setBlackKeyWidth (whiteKeyWidth / 1.5); keyboard->setBlackKeyHeight (keyboard->getHeight () / 2.); } } KeyboardView* keyboard {nullptr}; KeyboardViewRangeSelector* rangeSelector {nullptr}; IKeyboardViewPlayerDelegate* player {nullptr}; KeyboardViewRangeSelector::Range& selectedRange; std::map noteOnIds; }; //------------------------------------------------------------------------ class VST3KeyboardPlayerDelegate : public VSTGUI::IKeyboardViewPlayerDelegate { public: using NewMessageFunc = std::function; VST3KeyboardPlayerDelegate (IConnectionPoint* _processor, NewMessageFunc&& _newMessage) : newMessage (std::move (_newMessage)), processor (_processor) { } int32_t onNoteOn (NoteIndex note, double /*xPos*/, double /*yPos*/) override { if (noteIDCounter < kNoteIDUserRangeLowerBound) noteIDCounter = kNoteIDUserRangeUpperBound; auto newNoteID = --noteIDCounter; Event evt {}; evt.type = Event::EventTypes::kNoteOnEvent; evt.flags = Event::EventFlags::kIsLive; evt.noteOn.channel = 0; evt.noteOn.pitch = note; evt.noteOn.tuning = 0.f; evt.noteOn.velocity = 1.f; evt.noteOn.length = 0; evt.noteOn.noteId = newNoteID; sendEvent (evt); return newNoteID; } void onNoteOff (NoteIndex note, int32_t noteID) override { Event evt {}; evt.type = Event::EventTypes::kNoteOffEvent; evt.flags = Event::EventFlags::kIsLive; evt.noteOff.channel = 0; evt.noteOff.pitch = note; evt.noteOff.velocity = 0.f; evt.noteOff.noteId = noteID; evt.noteOff.tuning = 0.f; sendEvent (evt); } void onNoteModulation (int32_t /*noteID*/, double /*xPos*/, double /*yPos*/) override {} private: void sendEvent (const Event& evt) { if (auto message = owned (newMessage ())) { message->setMessageID (MsgIDEvent); if (auto attr = message->getAttributes ()) { attr->setBinary (MsgIDEvent, &evt, sizeof (Event)); } processor->notify (message); } } int32_t noteIDCounter = kNoteIDUserRangeUpperBound; NewMessageFunc newMessage; IConnectionPoint* processor {nullptr}; }; //------------------------------------------------------------------------ FUID ControllerWithUI::cid (0x1AA302B3, 0xE8384785, 0xB9C3FE3E, 0x08B056F5); FUID ProcessorWithUIController::cid (0x41466D9B, 0xB0654576, 0xB641098F, 0x686371B3); enum { kParamMIDILearn = kNumGlobalParameters, kParamEnableMPE }; //------------------------------------------------------------------------ tresult PLUGIN_API ControllerWithUI::initialize (FUnknown* context) { auto result = Controller::initialize (context); if (result == kResultTrue) { parameters.addParameter (USTRING ("MIDI Learn"), nullptr, 1, 0, ParameterInfo::kCanAutomate, kParamMIDILearn); FUnknownPtr mpeSupport (context); bool addEnableMPE = mpeSupport; #if DEVELOPMENT addEnableMPE = true; #endif if (addEnableMPE) { auto param = new StringListParameter (USTRING ("Enable MPE"), kParamEnableMPE); param->appendString (STR ("YES")); param->appendString (STR ("NO")); parameters.addParameter (param); } } return result; } //------------------------------------------------------------------------ tresult PLUGIN_API ControllerWithUI::terminate () { if (playerDelegate) delete playerDelegate; playerDelegate = nullptr; return Controller::terminate (); } //------------------------------------------------------------------------ IPlugView* PLUGIN_API ControllerWithUI::createView (FIDString _name) { std::string_view name (_name); if (name == ViewType::kEditor) { FUnknownPtr interAudioApp (getHostContext ()); if (interAudioApp) { ViewRect vr; float scale; if (interAudioApp->getScreenSize (&vr, &scale) == kResultTrue) { if (vr.right >= 1024) { return new VST3Editor (this, "EditorIPad", "note_expression_synth.uidesc"); } else if (vr.right == 812) { return new VST3Editor (this, "EditorIPhoneX", "note_expression_synth.uidesc"); } else { return new VST3Editor (this, "EditorIPhone4Inch", "note_expression_synth.uidesc"); } } } FUnknownPtr auWrapper (getHostContext ()); FUnknownPtr mpeSupport (getHostContext ()); if (auWrapper && mpeSupport) return new VST3Editor (this, "EditorIPad_AUv3", "note_expression_synth.uidesc"); return new VST3Editor (this, "Editor", "note_expression_synth.uidesc"); } return nullptr; } //------------------------------------------------------------------------ IController* ControllerWithUI::createSubController (UTF8StringPtr _name, const IUIDescription* /*description*/, VST3Editor* editor) { std::string_view name (_name); if (name == "FilterPadController") { Parameter* freqParam = getParameterObject (kParamFilterFreq); Parameter* resoParam = getParameterObject (kParamFilterQ); auto* padController = new PadController (editor, this, freqParam, resoParam); return padController; } else if (name == "FilterTypeController") { auto* controller = new GroupController (getParameterObject (kParamFilterType), this); return controller; } else if (name == "InterAppAudioControlsController") { FUnknownPtr interAudioApp (getHostContext ()); if (interAudioApp) { return new InterAppAudioControlsController (interAudioApp); } } else if (name == "KeyboardController") { if (playerDelegate == nullptr) { FUnknownPtr interAudioApp (getHostContext ()); if (interAudioApp) { playerDelegate = new InterAppAudioPlayer (interAudioApp); } else { playerDelegate = new VST3KeyboardPlayerDelegate ( peerConnection, [this] () { return allocateMessage (); }); } } if (keyboardRange.length == 0) { keyboardRange.length = editor->getRect ().getWidth () >= 1024 ? 24 : 12; } return new KeyboardController (editor, playerDelegate, keyboardRange); } else if (name == "MPEController") { #if DEVELOPMENT // make sure in DEVELOPMENT mode not to remove the UI bool mpeSupportNeeded = true; #else FUnknownPtr mpeSupport (getHostContext ()); bool mpeSupportNeeded = mpeSupport ? true : false; #endif return new ConditionalRemoveViewController (editor, mpeSupportNeeded); } else if (name == "MidiLearnController") { #if DEVELOPMENT // make sure in DEVELOPMENT mode not to remove the UI bool midiLearnSupported = true; #else bool midiLearnSupported = false; FUnknownPtr pis (getHostContext ()); if (pis) midiLearnSupported = pis->isPlugInterfaceSupported (IMidiLearn::iid) == kResultTrue; #endif return new ConditionalRemoveViewController (editor, midiLearnSupported); } return nullptr; } //------------------------------------------------------------------------ tresult PLUGIN_API ControllerWithUI::setState (IBStream* state) { IBStreamer stream (state, kLittleEndian); uint8 value; if (stream.readInt8u (value)) keyboardRange.position = value; if (stream.readInt8u (value)) keyboardRange.length = value; return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API ControllerWithUI::getState (IBStream* state) { IBStreamer stream (state, kLittleEndian); if (!stream.writeInt8u (keyboardRange.position)) return kInternalError; if (!stream.writeInt8u (keyboardRange.length)) return kInternalError; return kResultTrue; } //------------------------------------------------------------------------ tresult ControllerWithUI::beginEdit (ParamID tag) { if (tag >= kParamMIDILearn) { return kResultTrue; } if (doMIDILearn) midiLearnParamID = tag; return Controller::beginEdit (tag); } //------------------------------------------------------------------------ tresult ControllerWithUI::performEdit (ParamID tag, ParamValue valueNormalized) { if (tag == kParamMIDILearn) { doMIDILearn = valueNormalized > 0.5; if (doMIDILearn) midiLearnParamID = InvalidParamID; return kResultTrue; } else if (tag == kParamEnableMPE) { FUnknownPtr mpeSupport (getHostContext ()); if (mpeSupport) { mpeSupport->enableMPEInputProcessing (valueNormalized < 0.5); } return kResultTrue; } return Controller::performEdit (tag, valueNormalized); } //------------------------------------------------------------------------ tresult ControllerWithUI::endEdit (ParamID tag) { if (tag >= kParamMIDILearn) { return kResultTrue; } return Controller::endEdit (tag); } //------------------------------------------------------------------------ tresult PLUGIN_API ControllerWithUI::onLiveMIDIControllerInput (int32 busIndex, int16 channel, CtrlNumber midiCC) { if (!doMIDILearn || busIndex != 0 || channel != 0 || midiLearnParamID == InvalidParamID) return kResultFalse; if (midiCCMapping[midiCC] != midiLearnParamID) { for (auto&& pid : midiCCMapping) { if (pid == midiLearnParamID) pid = InvalidParamID; } midiCCMapping[midiCC] = midiLearnParamID; if (auto _componentHandler = getComponentHandler ()) { _componentHandler->restartComponent (kMidiCCAssignmentChanged); } } return kResultTrue; } //------------------------------------------------------------------------ bool ControllerWithUI::isPrivateParameter (const ParamID paramID) { return paramID >= kParamMIDILearn; } //------------------------------------------------------------------------ ProcessorWithUIController::ProcessorWithUIController () { setControllerClass (ControllerWithUI::cid); } //------------------------------------------------------------------------ } // NoteExpressionSynth } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/note_expression_synth_ui.h000066400000000000000000000113761461511344300321300ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_ui.h // Created by : Steinberg, 12/2010 // Description : Note Expression Synth UI version using VSTGUI 4 // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "note_expression_synth_controller.h" #include "note_expression_synth_processor.h" #include "vstgui/contrib/keyboardview.h" #include "vstgui/plugin-bindings/vst3editor.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace NoteExpressionSynth { //----------------------------------------------------------------------------- /** Example Note Expression Audio Controller + User Interface */ class ControllerWithUI : public Controller, public IMidiLearn, public VSTGUI::VST3EditorDelegate { public: using UTF8StringPtr = VSTGUI::UTF8StringPtr; using IController = VSTGUI::IController; using IUIDescription = VSTGUI::IUIDescription; using VST3Editor = VSTGUI::VST3Editor; tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; IPlugView* PLUGIN_API createView (FIDString name) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; tresult beginEdit (ParamID tag) SMTG_OVERRIDE; tresult performEdit (ParamID tag, ParamValue valueNormalized) SMTG_OVERRIDE; tresult endEdit (ParamID tag) SMTG_OVERRIDE; //--- IMidiLearn --------------------------------- tresult PLUGIN_API onLiveMIDIControllerInput (int32 busIndex, int16 channel, CtrlNumber midiCC) SMTG_OVERRIDE; // VST3EditorDelegate IController* createSubController (UTF8StringPtr name, const IUIDescription* description, VST3Editor* editor) SMTG_OVERRIDE; bool isPrivateParameter (const ParamID paramID) SMTG_OVERRIDE; static FUnknown* createInstance (void*) { return (IEditController*)new ControllerWithUI (); } static FUID cid; DEFINE_INTERFACES DEF_INTERFACE (IMidiLearn) END_DEFINE_INTERFACES (Controller) REFCOUNT_METHODS (Controller) private: VSTGUI::IKeyboardViewPlayerDelegate* playerDelegate {nullptr}; VSTGUI::KeyboardViewRangeSelector::Range keyboardRange {}; ParamID midiLearnParamID {InvalidParamID}; bool doMIDILearn {false}; }; //----------------------------------------------------------------------------- /** Example Note Expression Audio Processor + User Interface */ class ProcessorWithUIController : public Processor { public: ProcessorWithUIController (); static FUnknown* createInstance (void*) { return (IAudioProcessor*)new ProcessorWithUIController (); } static FUID cid; }; //------------------------------------------------------------------------ } // NoteExpressionSynth } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/note_expression_synth_voice.cpp000066400000000000000000000140211461511344300331410ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_voice.cpp // Created by : Steinberg, 02/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "note_expression_synth_voice.h" #include "base/source/fstreamer.h" namespace Steinberg { namespace Vst { namespace NoteExpressionSynth { static uint64 currentParamStateVersion = 3; //----------------------------------------------------------------------------- tresult GlobalParameterState::setState (IBStream* stream) { IBStreamer s (stream, kLittleEndian); uint64 version = 0; // version 0 if (!s.readInt64u (version)) return kResultFalse; if (!s.readDouble (noiseVolume)) return kResultFalse; if (!s.readDouble (sinusVolume)) return kResultFalse; if (!s.readDouble (triangleVolume)) return kResultFalse; if (!s.readDouble (releaseTime)) return kResultFalse; if (!s.readDouble (sinusDetune)) return kResultFalse; if (!s.readDouble (triangleSlop)) return kResultFalse; if (!s.readInt8 (bypassSNA)) return kResultFalse; if (version >= 1) { if (!s.readInt8 (filterType)) return kResultFalse; if (!s.readDouble (filterFreq)) return kResultFalse; if (!s.readDouble (filterQ)) return kResultFalse; } if (version >= 2) { if (!s.readDouble (masterVolume)) return kResultFalse; if (!s.readDouble (masterTuning)) return kResultFalse; if (!s.readDouble (velToLevel)) return kResultFalse; if (!s.readDouble (freqModDepth)) return kResultFalse; if (!s.readInt8 (tuningRange)) return kResultFalse; } if (version >= 3) { if (!s.readDouble (squareVolume)) return kResultFalse; } return kResultTrue; } //----------------------------------------------------------------------------- tresult GlobalParameterState::getState (IBStream* stream) { IBStreamer s (stream, kLittleEndian); // version 0 if (!s.writeInt64u (currentParamStateVersion)) return kResultFalse; if (!s.writeDouble (noiseVolume)) return kResultFalse; if (!s.writeDouble (sinusVolume)) return kResultFalse; if (!s.writeDouble (triangleVolume)) return kResultFalse; if (!s.writeDouble (releaseTime)) return kResultFalse; if (!s.writeDouble (sinusDetune)) return kResultFalse; if (!s.writeDouble (triangleSlop)) return kResultFalse; if (!s.writeInt8 (bypassSNA)) return kResultFalse; // version 1 if (!s.writeInt8 (filterType)) return kResultFalse; if (!s.writeDouble (filterFreq)) return kResultFalse; if (!s.writeDouble (filterQ)) return kResultFalse; // version 2 if (!s.writeDouble (masterVolume)) return kResultFalse; if (!s.writeDouble (masterTuning)) return kResultFalse; if (!s.writeDouble (velToLevel)) return kResultFalse; if (!s.writeDouble (freqModDepth)) return kResultFalse; if (!s.writeInt8 (tuningRange)) return kResultFalse; // version 3 if (!s.writeDouble (squareVolume)) return kResultFalse; return kResultTrue; } //----------------------------------------------------------------------------- float VoiceStatics::freqTab[kNumFrequencies]; const float VoiceStatics::scaleHeadRoom = (float)(pow (10.0, -12.0 / 20.0) * 0.70710677); // for 12 dB head room const float VoiceStatics::scaleNorm2GainC1 = (float)(VoiceStatics::scaleHeadRoom * pow (10.0, 24.0 / 20.0)); const float VoiceStatics::scaleNorm2GainC2 = (float)(24.0 / 20.0 / 0.30102999566398119521373889472449); // Mathd::kLog2 LogScale VoiceStatics::freqLogScale (0., 1., 80., 18000., 0.5, 1800.); const double VoiceStatics::kNormTuningOneOctave = 12.0 / 240.0; // full in VST 3 is +- 10 octaves const double VoiceStatics::kNormTuningOneTune = 1.0 / 240.0; //----------------------------------------------------------------------------- class VoiceStaticsOnce { public: VoiceStaticsOnce () { // make frequency (Hz) table double k = 1.059463094359; // 12th root of 2 double a = 6.875; // a a *= k; // b a *= k; // bb a *= k; // c, frequency of midi note 0 for (int32 i = 0; i < VoiceStatics::kNumFrequencies; i++) // 128 midi notes { VoiceStatics::freqTab[i] = (float)a; a *= k; } } }; static VoiceStaticsOnce gVoiceStaticsOnce; } // NoteExpressionSynth } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/note_expression_synth_voice.h000066400000000000000000000505021461511344300326120ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_expression_synth_voice.h // Created by : Steinberg, 02/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "../../common/voicebase.h" #include "../../common/logscale.h" #include "brownnoise.h" #include "filter.h" #include "note_expression_synth_controller.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/base/futils.h" #include #include #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #ifndef M_PI_MUL_2 #define M_PI_MUL_2 6.28318530717958647692 #endif namespace Steinberg { namespace Vst { namespace NoteExpressionSynth { //----------------------------------------------------------------------------- struct GlobalParameterState { BrownNoise* noiseBuffer; ParamValue masterVolume; // [0, +1] ParamValue masterTuning; // [-1, +1] ParamValue velToLevel; // [0, +1] ParamValue noiseVolume; // [0, +1] ParamValue sinusVolume; // [0, +1] ParamValue triangleVolume; // [0, +1] ParamValue squareVolume; // [0, +1] ParamValue releaseTime; // [0, +1] ParamValue sinusDetune; // [-1, +1] ParamValue triangleSlop; // [0, +1] ParamValue filterFreq; // [-1, +1] ParamValue filterQ; // [-1, +1] ParamValue freqModDepth; // [-1, +1] int8 filterType; // [0, 1, 2] int8 tuningRange; // [0, 1] int8 bypassSNA; // [0, 1] tresult setState (IBStream* stream); tresult getState (IBStream* stream); }; //----------------------------------------------------------------------------- enum VoiceParameters { kVolumeMod, kTuningMod, kPanningLeft, kPanningRight, kNoiseVolume, kFilterFrequencyMod, kFilterQMod, kSinusVolume, kTriangleVolume, kFilterType, kTriangleSlope, kSinusDetune, kReleaseTimeMod, kSquareVolume, kNumParameters }; //----------------------------------------------------------------------------- class VoiceStatics { public: //------------------------------------------------------------------------ static double normalizedLevel2Gain (float normalized) { double level; if (normalized >= 0.5) level = scaleHeadRoom * ::pow (10, (normalized - 0.5f) * 24 / 20.0f); else level = scaleNorm2GainC1 * ::pow (normalized, scaleNorm2GainC2); return level; } enum { kNumFrequencies = 128 }; static float freqTab[kNumFrequencies]; static const float scaleHeadRoom; static const float scaleNorm2GainC1; static const float scaleNorm2GainC2; static LogScale freqLogScale; static const double kNormTuningOneOctave; static const double kNormTuningOneTune; }; //----------------------------------------------------------------------------- /** Example Note Expression Synth Voice Class \sa Steinberg::Vst::VoiceBase */ template class Voice : public VoiceBase { public: Voice (); ~Voice (); void setSampleRate (ParamValue sampleRate) SMTG_OVERRIDE; void noteOn (int32 pitch, ParamValue velocity, float tuning, int32 sampleOffset, int32 nId) SMTG_OVERRIDE; void noteOff (ParamValue velocity, int32 sampleOffset) SMTG_OVERRIDE; bool process (SamplePrecision* outputBuffers[2], int32 numSamples); void reset () SMTG_OVERRIDE; void setNoteExpressionValue (int32 index, ParamValue value) SMTG_OVERRIDE; protected: uint32 n; int32 noisePos; int32 noiseStep; Filter* filter; SamplePrecision trianglePhase; SamplePrecision sinusPhase; ParamValue currentTriangleF; ParamValue currentSinusF; ParamValue currentVolume; ParamValue currentPanningLeft; ParamValue currentPanningRight; ParamValue currentNoiseVolume; ParamValue currentSinusVolume; ParamValue currentSinusDetune; ParamValue currentSquareVolume; ParamValue currentTriangleVolume; ParamValue currentTriangleSlope; ParamValue currentLPFreq; ParamValue currentLPQ; ParamValue levelFromVel; ParamValue noteOffVolumeRamp; }; //----------------------------------------------------------------------------- template void Voice::setNoteExpressionValue (int32 index, ParamValue value) { if (this->globalParameters->bypassSNA) return; switch (index) { //------------------------------ case Steinberg::Vst::kVolumeTypeID: { ParamValue vol = VoiceStatics::normalizedLevel2Gain ((float)value); VoiceBase::setNoteExpressionValue (kVolumeMod, vol); break; } //------------------------------ case Steinberg::Vst::kTuningTypeID: { if (value == 0.5) { VoiceBase::setNoteExpressionValue (kTuningMod, 0); } else if (value > 0.5) { if (this->globalParameters->tuningRange > 0.5) value = std::min (0.5 + 2 * VoiceStatics::kNormTuningOneTune, value); else value = std::min (0.5 + VoiceStatics::kNormTuningOneOctave, value); VoiceBase::setNoteExpressionValue (kTuningMod, (value - 0.5) * 2.); } else { if (this->globalParameters->tuningRange > 0.5) value = std::max (0.5 - 3 * VoiceStatics::kNormTuningOneTune, value); else value = std::max (0.5 - VoiceStatics::kNormTuningOneOctave, value); VoiceBase::setNoteExpressionValue (kTuningMod, (value - 0.5) * 2.); } break; } //------------------------------ case Steinberg::Vst::kPanTypeID: { if (value == 0.5) { VoiceBase::setNoteExpressionValue (kPanningLeft, 1.); VoiceBase::setNoteExpressionValue (kPanningRight, 1.); } else if (value > 0.5) { VoiceBase::setNoteExpressionValue (kPanningLeft, 1.); VoiceBase::setNoteExpressionValue (kPanningRight, 1. + ((0.5 - value) * 2.)); } else { VoiceBase::setNoteExpressionValue (kPanningLeft, value * 2.); VoiceBase::setNoteExpressionValue (kPanningRight, 1.); } break; } //------------------------------ case Controller::kNoiseVolumeTypeID: { VoiceBase::setNoteExpressionValue (kNoiseVolume, value * 2.); break; } //------------------------------ case Controller::kSinusVolumeTypeID: { VoiceBase::setNoteExpressionValue (kSinusVolume, value * 2.); break; } //------------------------------ case Controller::kTriangleVolumeTypeID: { VoiceBase::setNoteExpressionValue (kTriangleVolume, value * 2.); break; } //------------------------------ case Controller::kSquareVolumeTypeID: { VoiceBase::setNoteExpressionValue (kSquareVolume, value * 2.); break; } //------------------------------ case Controller::kFilterFreqModTypeID: { VoiceBase::setNoteExpressionValue (kFilterFrequencyMod, (value - 0.5) * 2.); break; } //------------------------------ case Controller::kFilterQModTypeID: { VoiceBase::setNoteExpressionValue (kFilterQMod, (value - 0.5) * 2.); break; } //------------------------------ case Controller::kFilterTypeTypeID: { filter->setType ((Filter::Type)std::min ((int32)(NUM_FILTER_TYPE * value), NUM_FILTER_TYPE - 1)); break; } //------------------------------ case Controller::kTriangleSlopeTypeID: { VoiceBase::setNoteExpressionValue (kTriangleSlope, value); break; } //------------------------------ case Controller::kSinusDetuneTypeID: { VoiceBase::setNoteExpressionValue (kSinusDetune, value); break; } //------------------------------ case Controller::kReleaseTimeModTypeID: { VoiceBase::setNoteExpressionValue (kReleaseTimeMod, 2 * (value - 0.5)); break; } //------------------------------ default: { VoiceBase::setNoteExpressionValue (index, value); break; } } } //----------------------------------------------------------------------------- template bool Voice::process (SamplePrecision* outputBuffers[2], int32 numSamples) { //---compute tuning------------------------- // main tuning ParamValue tuningInHz = 0.; if (this->values[kTuningMod] != 0. || this->globalParameters->masterTuning != 0 || this->tuning != 0) { tuningInHz = VoiceStatics::freqTab[this->pitch] * (::pow (2.0, (this->values[kTuningMod] * 10 + this->globalParameters->masterTuning * 2.0 / 12.0 + this->tuning)) - 1); } ParamValue triangleFreq = (VoiceStatics::freqTab[this->pitch] + tuningInHz) * M_PI_MUL_2 / this->getSampleRate () / 2.; if (currentTriangleF == -1) currentTriangleF = triangleFreq; // check for frequency changes and update the phase so that it is crackle free if (triangleFreq != currentTriangleF) { // update phase trianglePhase = (SamplePrecision)((currentTriangleF - triangleFreq) * n + trianglePhase); currentTriangleF = triangleFreq; } // Sinus Detune if (currentSinusDetune != this->values[kSinusDetune]) { currentSinusDetune = VoiceStatics::freqTab[this->pitch] * (::pow (2.0, this->values[kSinusDetune] * 2.0 / 12.0) - 1); } ParamValue sinusFreq = (VoiceStatics::freqTab[this->pitch] + tuningInHz + currentSinusDetune) * M_PI_MUL_2 / this->getSampleRate (); if (currentSinusF == -1) currentSinusF = sinusFreq; if (sinusFreq != currentSinusF) { // update phase sinusPhase = (SamplePrecision)((currentSinusF - sinusFreq) * n) + sinusPhase; currentSinusF = sinusFreq; } //---calculate parameter ramps ParamValue volumeRamp = 0.; ParamValue panningLeftRamp = 0.; ParamValue panningRightRamp = 0.; ParamValue noiseVolumeRamp = 0.; ParamValue sinusVolumeRamp = 0.; ParamValue triangleVolumeRamp = 0.; ParamValue squareVolumeRamp = 0.; ParamValue filterFreqRamp = 0.; ParamValue filterQRamp = 0.; ParamValue triangleSlopeRamp = 0.; ParamValue rampTime = std::max ((ParamValue)numSamples, (this->sampleRate * 0.005)); ParamValue wantedVolume = VoiceStatics::normalizedLevel2Gain ((float)Bound (0.0, 1.0, this->globalParameters->masterVolume * levelFromVel + this->values[kVolumeMod])); if (wantedVolume != currentVolume) { volumeRamp = (wantedVolume - currentVolume) / rampTime; } if (this->values[kPanningLeft] != currentPanningLeft) { panningLeftRamp = (this->values[kPanningLeft] - currentPanningLeft) / rampTime; } if (this->values[kPanningRight] != currentPanningRight) { panningRightRamp = (this->values[kPanningRight] - currentPanningRight) / rampTime; } if (this->values[kNoiseVolume] != currentNoiseVolume) { noiseVolumeRamp = (this->values[kNoiseVolume] - currentNoiseVolume) / rampTime; } if (this->values[kSinusVolume] != currentSinusVolume) { sinusVolumeRamp = (this->values[kSinusVolume] - currentSinusVolume) / rampTime; } if (this->values[kSquareVolume] != currentSquareVolume) { squareVolumeRamp = (this->values[kSquareVolume] - currentSquareVolume) / rampTime; } if (this->values[kTriangleVolume] != currentTriangleVolume) { triangleVolumeRamp = (this->values[kTriangleVolume] - currentTriangleVolume) / rampTime; } ParamValue wantedLPFreq = Bound (0., 1., this->globalParameters->filterFreq + this->globalParameters->freqModDepth * this->values[kFilterFrequencyMod]); if (wantedLPFreq != currentLPFreq) { filterFreqRamp = (wantedLPFreq - currentLPFreq) / rampTime; } ParamValue wantedLPQ = Bound (0., 1., this->globalParameters->filterQ + this->values[kFilterQMod]); if (wantedLPQ != currentLPQ) { filterQRamp = (wantedLPQ - currentLPQ) / rampTime; } if (this->values[kTriangleSlope] != currentTriangleSlope) { triangleSlopeRamp = (this->values[kTriangleSlope] - currentTriangleSlope) / rampTime; } for (int32 i = 0; i < numSamples; i++) { this->noteOnSampleOffset--; this->noteOffSampleOffset--; if (this->noteOnSampleOffset <= 0) { // we are in Release if (this->noteOffSampleOffset == 0) { volumeRamp = 0; if (currentVolume > 0) { // ramp note off currentVolume -= noteOffVolumeRamp; if (currentVolume < 0.) currentVolume = 0.; this->noteOffSampleOffset++; } else { this->noteOffSampleOffset = this->noteOnSampleOffset = -1; return false; } } SamplePrecision sample; auto osc = (SamplePrecision)sin (n * triangleFreq + trianglePhase); // square osc sample = (SamplePrecision)((::floor (osc) + 0.5) * currentSquareVolume); // triangle osc sample += (SamplePrecision)((osc - ::fabs(sin (n * triangleFreq + trianglePhase + 1 + currentTriangleSlope))) * currentTriangleVolume); // sinus osc sample += (SamplePrecision)(sin (n * sinusFreq + sinusPhase) * currentSinusVolume); n++; // add noise sample += (SamplePrecision)(this->globalParameters->noiseBuffer->at (noisePos) * currentNoiseVolume); // filter if (filterFreqRamp != 0. || filterQRamp != 0.) { filter->setFreqAndQ (VoiceStatics::freqLogScale.scale (currentLPFreq), 1. - currentLPQ); currentLPFreq += filterFreqRamp; currentLPQ += filterQRamp; } sample = (SamplePrecision)filter->process (sample); // store in output outputBuffers[0][i] += (SamplePrecision)(sample * currentPanningLeft * currentVolume); outputBuffers[1][i] += (SamplePrecision)(sample * currentPanningRight * currentVolume); // advance noise noisePos += noiseStep; if (noisePos > this->globalParameters->noiseBuffer->getSize () - 2) { noisePos = (int32)((float)::rand () / (float)RAND_MAX * (this->globalParameters->noiseBuffer->getSize () - 2) + 2); noiseStep = -1; } else if (noisePos < 2) { noiseStep = 1; } // ramp parameters currentVolume += volumeRamp; currentPanningLeft += panningLeftRamp; currentPanningRight += panningRightRamp; currentNoiseVolume += noiseVolumeRamp; currentSinusVolume += sinusVolumeRamp; currentSquareVolume += squareVolumeRamp; currentTriangleVolume += triangleVolumeRamp; currentTriangleSlope += triangleSlopeRamp; } } return true; } //----------------------------------------------------------------------------- template void Voice::noteOn (int32 _pitch, ParamValue velocity, float _tuning, int32 sampleOffset, int32 nId) { currentVolume = 0; this->values[kVolumeMod] = 0; levelFromVel = 1.f + this->globalParameters->velToLevel * (velocity - 1.); currentSinusVolume = this->values[kSinusVolume] = this->globalParameters->sinusVolume; currentTriangleVolume = this->values[kTriangleVolume] = this->globalParameters->triangleVolume; currentNoiseVolume = this->values[kNoiseVolume] = this->globalParameters->noiseVolume; currentTriangleSlope = this->values[kTriangleSlope] = this->globalParameters->triangleSlop; currentSquareVolume = this->values[kSquareVolume] = this->globalParameters->squareVolume; // filter setting currentLPFreq = this->globalParameters->filterFreq; this->values[kFilterFrequencyMod] = 0; currentLPQ = this->globalParameters->filterQ; this->values[kFilterQMod] = 0; filter->setType ((Filter::Type)this->globalParameters->filterType); filter->setFreqAndQ (VoiceStatics::freqLogScale.scale (currentLPFreq), 1. - currentLPQ); currentSinusDetune = 0.; if (this->globalParameters->sinusDetune != 0.) { currentSinusDetune = VoiceStatics::freqTab[this->pitch] * (::pow (2.0, this->globalParameters->sinusDetune * 2.0 / 12.0) - 1); } this->values[kSinusDetune] = currentSinusDetune; this->values[kTuningMod] = 0; VoiceBase::noteOn (_pitch, velocity, _tuning, sampleOffset, nId); this->noteOnSampleOffset++; } //----------------------------------------------------------------------------- template void Voice::noteOff (ParamValue velocity, int32 sampleOffset) { VoiceBase::noteOff (velocity, sampleOffset); this->noteOffSampleOffset++; ParamValue timeFactor; if (this->values[kReleaseTimeMod] == 0) timeFactor = 1; else timeFactor = ::pow (100., this->values[kReleaseTimeMod]); noteOffVolumeRamp = 1.0 / (timeFactor * this->sampleRate * ((this->globalParameters->releaseTime * MAX_RELEASE_TIME_SEC) + 0.005)); if (currentVolume) noteOffVolumeRamp *= currentVolume; } //----------------------------------------------------------------------------- template void Voice::reset () { noiseStep = 1; noisePos = 0; n = 0; sinusPhase = trianglePhase = 0.; currentSinusF = currentTriangleF = -1.; this->values[kVolumeMod] = 0.; this->values[kTuningMod] = 0.; this->values[kFilterFrequencyMod] = 0.; this->values[kFilterQMod] = 0.; this->values[kReleaseTimeMod] = 0.; currentPanningLeft = this->values[kPanningLeft] = 1.; currentPanningRight = this->values[kPanningRight] = 1.; currentNoiseVolume = this->values[kNoiseVolume] = 0.5; currentSinusVolume = this->values[kSinusVolume] = 0.5; currentSquareVolume = this->values[kSquareVolume] = 0.5; currentTriangleVolume = this->values[kTriangleVolume] = 0.5; currentLPFreq = 1.; currentLPQ = 0.; filter->reset (); noteOffVolumeRamp = 0.005; VoiceBase::reset (); } //----------------------------------------------------------------------------- template void Voice::setSampleRate (ParamValue _sampleRate) { filter->setSampleRate (_sampleRate); VoiceBase::setSampleRate (_sampleRate); } //----------------------------------------------------------------------------- template Voice::Voice () { filter = new Filter (Filter::kLowpass); } //----------------------------------------------------------------------------- template Voice::~Voice () { delete filter; } }}} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/note_touch_controller.cpp000066400000000000000000000123601461511344300317210ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_touch_controller.cpp // Created by : Steinberg, 08/2013 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "note_touch_controller.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstnoteexpression.h" using namespace Steinberg; using VstEvent = Steinberg::Vst::Event; using VstEventTypes = Steinberg::Vst::Event::EventTypes; namespace VSTGUI { //----------------------------------------------------------------------------- NoteTouchController::NoteTouchController (int32_t pitch, Steinberg::Vst::IInterAppAudioHost* host) : host (host), pad (nullptr), pitch (pitch), noteID (-1), xNEType (-1), yNEType (-1) { } //----------------------------------------------------------------------------- void NoteTouchController::startNote (float velocity) { VstEvent e = {}; e.type = VstEventTypes::kNoteOnEvent; e.noteOn.pitch = pitch; e.noteOn.velocity = velocity; if (host->scheduleEventFromUI (e) == kResultTrue) { noteID = e.noteOn.noteId; pad->setBackColor (kGreyCColor); } } //----------------------------------------------------------------------------- void NoteTouchController::stopNote (float velocity) { if (noteID != -1) { VstEvent e = {}; e.type = VstEventTypes::kNoteOffEvent; e.noteOff.noteId = noteID; e.noteOff.pitch = pitch; e.noteOff.velocity = velocity; host->scheduleEventFromUI (e); noteID = -1; pad->setBackColor (originalPadBackgroundColor); } } //----------------------------------------------------------------------------- void NoteTouchController::sendNoteExpression (int32_t type, float value) { if (type != -1 && noteID != -1) { VstEvent e = {}; e.type = VstEventTypes::kNoteExpressionValueEvent; e.noteExpressionValue.noteId = noteID; e.noteExpressionValue.typeId = type; if (type == Vst::kTuningTypeID) { value = ((value - 0.5) * 0.1 + 0.5); } else if (type == Vst::kVolumeTypeID) { value = 0.3 * value; } e.noteExpressionValue.value = value; host->scheduleEventFromUI (e); } } //----------------------------------------------------------------------------- void NoteTouchController::controlBeginEdit (CControl* pControl) { if (pControl == pad) { } } //----------------------------------------------------------------------------- void NoteTouchController::controlEndEdit (CControl* pControl) { if (pControl == pad) { float x, y; CXYPad::calculateXY (pad->getValue (), x, y); stopNote (y); } } //----------------------------------------------------------------------------- void NoteTouchController::valueChanged (CControl* pControl) { if (pControl == pad) { float x, y; CXYPad::calculateXY (pad->getValue (), x, y); if (noteID == -1) { float velocity = logf (y + 0.4) + 0.8; #if DEBUG_LOG FDebugPrint ("%f\n", velocity); #endif startNote (velocity); } sendNoteExpression (xNEType, x); sendNoteExpression (yNEType, y); } } //----------------------------------------------------------------------------- CView* NoteTouchController::verifyView (CView* view, const UIAttributes& attributes, const IUIDescription* description) { if (pad == nullptr) { pad = dynamic_cast (view); pad->setListener (this); pad->setStopTrackingOnMouseExit (true); originalPadBackgroundColor = pad->getBackColor (); } return view; } } vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/note_touch_controller.h000066400000000000000000000061431461511344300313700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/note_touch_controller.h // Created by : Steinberg, 08/2013 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "vstgui/vstgui.h" #include "vstgui/vstgui_uidescription.h" #include "pluginterfaces/vst/ivstinterappaudio.h" namespace VSTGUI { class NoteTouchController : public IController { public: NoteTouchController (int32_t pitch, Steinberg::Vst::IInterAppAudioHost* host); void setPitch (int32_t _pitch) { pitch = _pitch; } void setHorizontalNoteExpType (int32_t type) { xNEType = type; } void setVerticalNoteExpType (int32_t type) { yNEType = type; } protected: void controlBeginEdit (CControl* pControl) override; void controlEndEdit (CControl* pControl) override; void valueChanged (CControl* pControl) override; CView* verifyView (CView* view, const UIAttributes& attributes, const IUIDescription* description) override; void startNote (float velocity); void stopNote (float velocity); void sendNoteExpression (int32_t type, float value); Steinberg::Vst::IInterAppAudioHost* host; CXYPad* pad; CColor originalPadBackgroundColor; int32_t pitch; int32_t noteID; int32_t xNEType; int32_t yNEType; }; } vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/source/version.h000066400000000000000000000055161461511344300264460ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_synth/source/version.h // Created by : Steinberg, 02/2010 // Description : Example of handling the versioning and copyright info of note_expression_synth plug-in // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "Note Expression Synth.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "Note Expression Synth VST3-SDK (64Bit)" #else #define stringFileDescription "Note Expression Synth VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/000077500000000000000000000000001461511344300242375ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/CMakeLists.txt000066400000000000000000000053021461511344300267770ustar00rootroot00000000000000include(SMTG_AddVST3AuV3) if(SMTG_MAC AND SMTG_ENABLE_VSTGUI_SUPPORT) if(XCODE) set(notexpsynth_mac_app_sources "macOS/Sources/WindowController.m" "macOS/Sources/ViewController.m" "macOS/Sources/ViewController.h" "macOS/Sources/AppDelegate.m" "macOS/Sources/AppDelegate.h" ) set(notexpsynth_ios_app_sources "iOS/Sources/ViewController.m" "iOS/Sources/ViewController.h" "iOS/Sources/AppDelegate.m" "iOS/Sources/AppDelegate.h" "iOS/Sources/main.mm" ) set(notexpsynth_mac_app_ui_resources "macOS/Resources/Base.lproj/Main.storyboard" "macOS/Resources/NoteExpressionSynth.icns" ) set(notexpsynth_ios_app_ui_resources "iOS/Resources/Base.lproj/LaunchScreen.storyboard" "iOS/Resources/Base.lproj/Main.storyboard" "iOS/Resources/Assets.xcassets" ) #-------------------------------------------------------------------------------------------------------- # macOS targets #-------------------------------------------------------------------------------------------------------- smtg_add_auv3_app(notexpsynth_auv3_macos "macOS" "notexpsynth AUV3 macOS" "com.steinberg.sdk.auv3.notexpsynthmac" "audiounitconfig.h" "macOS/noteexpressionsynth.entitlements" "${notexpsynth_mac_app_sources}" "${notexpsynth_mac_app_ui_resources}" "macOS/Resources/Info.plist" "Shared/Info.plist" noteexpressionsynth ) #-------------------------------------------------------------------------------------------------------- # iOS targets #-------------------------------------------------------------------------------------------------------- if(SMTG_ENABLE_IOS_TARGETS) smtg_add_auv3_app(notexpsynth_auv3_ios "iOS" "notexpsynth AUV3 iOS" "com.steinberg.sdk.auv3.notexpsynthios" "audiounitconfig.h" "iOS/noteexpressionsynth.entitlements" "${notexpsynth_ios_app_sources}" "${notexpsynth_ios_app_ui_resources}" "iOS/Resources/Info.plist" "Shared/Info.plist" noteexpressionsynth_ios ) set_target_properties(${AUV3_APP_TARGET} PROPERTIES XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon ) endif(SMTG_ENABLE_IOS_TARGETS) endif(XCODE) endif(SMTG_MAC AND SMTG_ENABLE_VSTGUI_SUPPORT) vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/Shared/000077500000000000000000000000001461511344300254455ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/Shared/Info.plist000066400000000000000000000033761461511344300274260ustar00rootroot00000000000000 CFBundleDevelopmentRegion en CFBundleDisplayName AUv3WrapperExtension CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType XPC! CFBundleShortVersionString 1.0 CFBundleVersion 1 NSExtension NSExtensionAttributes NSExtensionServiceRoleType NSExtensionServiceRoleTypeEditor AudioComponents description kAUcomponentDescription manufacturer kAUcomponentManufacturer1 name kAUcomponentName sandboxSafe subtype kAUcomponentSubType1 tags kAUcomponentTag type kAUcomponentType1 version kAUcomponentVersion NSExtensionPointIdentifier com.apple.AudioUnit-UI NSExtensionPrincipalClass AUv3WrapperViewController SupportedNumChannels kSupportedNumChannels vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/audiounitconfig.h000066400000000000000000000105001461511344300275730ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- // AUWRAPPER_CHANGE: change all corresponding entries according to your plugin // The specific variant of the Audio Unit app extension. // The four possible types and their values are: // Effect (aufx), Generator (augn), Instrument (aumu), and Music Effect (aufm) #define kAUcomponentType 'aumu' #define kAUcomponentType1 aumu // A subtype code (unique ID) for the audio unit, such as gav3. // This value must be exactly 4 alphanumeric characters #define kAUcomponentSubType 'nev3' #define kAUcomponentSubType1 nev3 // A manufacturer code for the audio unit, such as Aaud. // This value must be exactly 4 alphanumeric characters #define kAUcomponentManufacturer 'Stgb' #define kAUcomponentManufacturer1 Stgb // A product name for the audio unit #define kAUcomponentDescription AUv3WrapperExtension // The full name of the audio unit. // This is derived from the manufacturer and description key values #define kAUcomponentName Steinberg: NoteExpressionSynthv3 // Displayed Tags #define kAUcomponentTag Synthesizer // A version number for the Audio Unit app extension (decimal value of hexadecimal representation with zeros between subversions) // Hexadecimal indexes representing: [0] = main version, [1] = 0 = dot, [2] = sub version, [3] = 0 = dot, [4] = sub-sub version, // e.g. 1.0.0 == 0x10000 == 65536, 1.2.3 = 0x10203 = 66051 #define kAUcomponentVersion 65536 // Supported number of channels of your audio unit. // Integer indexes representing: [0] = input count, [1] = output count, [2] = 2nd input count, // [3]=2nd output count, etc. // e.g. 1122 == config1: [mono input, mono output], config2: [stereo input, stereo output] // see channelCapabilities for discussion #define kSupportedNumChannels 02 // The preview audio file name. // To add your own custom audio file (for standalone effects), add an audio file to the project (AUv3WrappermacOS and AUv3WrapperiOS targets) and // enter the file name here // #define kAudioFileName "drumLoop" // The preview audio file format. // To add your own custom audio file (for standalone effects), add an audio file to the project (AUv3WrappermacOS and AUv3WrapperiOS targets) and // enter the file format here // #define kAudioFileFormat "wav" // componentFlags (leave at 0) #define kAUcomponentFlags 0 // componentFlagsMask (leave at 0) #define kAUcomponentFlagsMask 0 vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/000077500000000000000000000000001461511344300247315ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/000077500000000000000000000000001461511344300267035ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Assets.xcassets/000077500000000000000000000000001461511344300320015ustar00rootroot00000000000000AppIcon.appiconset/000077500000000000000000000000001461511344300354175ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Assets.xcassetsContents.json000066400000000000000000000033501461511344300401100ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Assets.xcassets/AppIcon.appiconset{ "images" : [ { "idiom" : "iphone", "size" : "20x20", "scale" : "2x" }, { "idiom" : "iphone", "size" : "20x20", "scale" : "3x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "2x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "3x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "3x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "apple-icon-120x120.png", "scale" : "2x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "apple-icon-180x180.png", "scale" : "3x" }, { "idiom" : "ipad", "size" : "20x20", "scale" : "1x" }, { "idiom" : "ipad", "size" : "20x20", "scale" : "2x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "1x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "2x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "1x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "2x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "apple-icon-76x76.png", "scale" : "1x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "apple-icon-152x152.png", "scale" : "2x" }, { "idiom" : "ipad", "size" : "83.5x83.5", "scale" : "2x" }, { "idiom" : "ios-marketing", "size" : "1024x1024", "scale" : "1x" } ], "info" : { "version" : 1, "author" : "xcode" } }apple-icon-120x120.png000066400000000000000000000223161461511344300410730ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Assets.xcassets/AppIcon.appiconsetPNG  IHDRxx9d6gAMA asRGB cHRMz&u0`:pQ<bKGD pHYsHHFk>"AIDATxw\u:OI& p  `dAW͕wJr#:k[J,1(˔,J HCO<ӫ{3dLL{֭nU )wqBY Żx|f'X2\늬k]B2ovJCQlvA܄$rĐo/ Bl-ֺ`f>L}yw}ӊ(.0\\So&;Rǀ3\#"]SQcD,gεת$P4IༀEB%^wf[=MW]T> lXrg!7uoom%Y Vϵ[TU> PKxB gn)Yz#X=WU+FQݳf "z< AOp*'*=: "Z⮖(^+1M0;)5G!AFǺ`D2\0ոg(4R߁X>TUw%7|+t !p\qT3!Jp\[*姁,H|]ш>`9 A> >4cY!EpwK< `yT#%׺BK@xQjb|!X=9PHgPA?B|ͤ׾`v>fTk\D=Eo\iWYeך`\[x~/'BT)n*&>oMEٻ*D悩Ch4F0b$ P0 FJK)+3S\\dDף*.\bhx}vSn,qUk4vԌMTw%z-GX~)BBxͷy  dn!L`pC(AR^nL&k'L{QZZPUu^B|Itgc V{9Pd~CJp.gRJ\iN-M{IZ),,Dh@dM҄a\9*oW_GW H)&Rm^9cjk뷩R!1dx284H,2x>mmEUc= l7_``phZ˗n`Ja)Tsm[ .6/s ZR)_6L.RQ ٍlb)#Xʰ۬H9s#O t:-[l'|޾B!R4b/*ӿLz9cZR?8oY{ e^>Xv _8v$rɨ0RH$FLF2Gh8d* TI4%fJJBhضEQf E'zZ;Ө#/]H&[JutZ2 TL&@[s'PNo (P32R XI V2$9i5X,FWW/#tvuD@ hZVSYQNm0Bd*I_> NM =\Av؊ >'Fx(.>9r6.]BII1yȔJ)ٱcG"L什ϏÖ6$lͨg}`н\*+EF9|lZm<)q8yyydéRƽdCK34 RRf6s='Rr;n?gppa\\^~47p-‚^ B U)%Es>tɄ^CS(c64 H$g@[[B-ZwIĿ;kw)$깶\0@Li48z!GK/O~( p6nhսj4ݘKK~Μ{7xt: \,GF3稨FkZ;o.Z-EEH)QUUUg\6sF[h T?~4HYL5#Xl[6)cWcGꡯEɾC*⥟bӦ 472S)qξݷbU?^G'I̙sRW_KScGo?LKK::Fmh4K qbE4i5K4=rm`L5SJwdfRJJKK( mRaI$%Jiӆɾs*R?|x}8vj D)CX7 A{G'.b8%% x>Ξ{-]-۶LF QZqRZZaV$cDR|<ٹf.Z}eLg[={vqӧN#oںCv"m흼;?\ĹW_瞻d˖[06u=p$7N! L Zdy:݆ÞhG::#f2׹XEQs/P[D+7#$0d%p8/'){hkOZW&Sgؼy۷maxd nu3>k`vyCi( CC#tttB |ИR>{6m &NyF(9y'n$I=` 07m~L YE B-8r6NrxgD"i3 uAd2*@xxR+_n,$iԩ3_<ؘ H)ٰ#oC|'z3g_e=8})YIOUQ}NQ]Urܾ ʑ K$8G|ӧFdEQ8|h?$ ^>u2N7YΞ{_R9z!PUf6nRqc 6,k'SiƼAxpC}L&CGG'C\t;N]]|RRVVpYq0ic܉'EQI&>r2gÄrG&+x<¢-L G7 ƲGhOBggGͥ򚤔l޴C/x2ڹc+[^"xhk}475b6jt:ؘ%ν:b2ض:TUe!LN_B<#ɠ'կ7O+X6rS+6Tj9z!::p2Vkwq‚iDɍ1Ba\Ax{X,e8jJK1 R)B0##v{(3RSd׮li݌鳌rkbiRrez90 44b6{H40U#wY d2[oC_rCKRuTTsCcCtr۶PUUcc2'}~GF p қN#19k2صk'*lv+L&TSՓ骪Z]5cGGz} f ILˇ?Iko^#HPWWcGuv mt1̥]w$)Zͤ15WUL&C&lFAѠ(J.`S"ZI2"YTdpx8ǗY":}ݽ%+3f'ŋ9~v'TIvrH4=`2'uߩj4Wɟk OӞ,OJ+N-(YM+g#q>,i2W]HK 3vIX w9::<ϥmyvleAX>b5ԩ`՗f !HҼE]ߟ dzE*g<B&ko!Cwf]i2 T7H(–kzBcۣ\ƝwqQAZ#HY%uj1ȋ'8{5{z9t~:HE|8KWWX(g/ܸ?K_:/w׺v3#3 -'<)3W:(*{H"CKsiѤK"kN-yG0dIVd2IGc?- Nj+kH`(?N*vB7.zfd}? =oZjBU%`7.ȅ"o N'JNXbáq:/_yS~Z*D*kxQoV 7SSR`EPL"gdEmb"a:u BdթaܹfBYI 5v L+VtC[bZTTEEd$:Վ6t ˻"8}xaBm 3VXrNPL}5 U6;%2\} Eg&K$էCkթP2jm6 zj|!p%5Sa*(e5{FHϱ_A:d՗ 9k0M3Zs0UB<( J*Zj{Y'۪g.;&V+(,*flxW_7 rYgp+y44a)@3e%_ H T֋Uث+j43JI"h/G:9E.[7.\XGOBJtz=zztc㕬Б=:x0YU78LW:zNK):YL]Ţnb( l0)+T*E<f!U TZhq`2g-/30?8>÷2BiBEsOL~\cu2GߣR}J<㨭=oQY sd`_/p!-[auPUnnͪS8`(B3~/%TWXh//SYs{ޙd](6RPUQf5,U66a)DY쑔@Woaoie84 "2dkQZ\DCcKBOT[^8kSU[~w}2 )I-f< G]=?&0;6ahf9BJohdF!$WM,Rv fwxU3*۽i|]$9H4)oK)[YL_3A<ٱBqچ&* !WSU1ѱTup Lf-RFÆqlOO{`k"X:uw?p2zm/g[+ IA9~X4``4 !0SXp}LMq-G~"K^?j?zo+vJGPURsڷFu 3:= pcsb0I{BPRY^6R4#c ݳfYj4U8>(}]2< ZGTU(8-;vcu8I& f<,$eWPLyeu)<3La5t8X*F鴚~K]667VM!ĿnRԱenj1f"r|\\D6;`sذUUEnP?鴚֚\X#!*R\mwL?s#ofGrTpʚ zv* _}!`JYA}D*yKTUd"ȥXO?(\AaQ1e zAX" "a#F sI1U50k$;P㜏\ɠ⯝!ȅk{ GݞY%5ZZ R2 Lr qs-$3i:(.*ax1vEodgoX5HJ9RJZ-6g-[vy#FSY ef'Rckټً:?k,yI.O'X<)o-ӀW>WO^LzFkip2s 8(~VW'~㹗o\ړQߑ/%DnE}DB8gI3UʩZfͅPPG9o<'x꧿H,vG[<d ,]KpVaB7Kj,}E=S `Z}9Q?&|HЉM=#tg) -[;jXUU̥_'[Z: ׬P_,Reh$DW`Xw'~ ,|T mp U`v_n!'mڐΨ jg} "Rm)}[ҬSra9 ֊(< Y"~Va~v 7O׫ԇrhN %pZQħ{d穒Bsr%x/K[UU@9\G FQ>so= gpn)RrPR>(tk>㗅`ȹ?SG_WWVUXQ|.n2rᗋ _ }CՕjꉽJZ ~ 5s5ikpnbRtK*%&ǻx΄i%tEXtdate:create2018-06-22T11:42:00+00:00\4%tEXtdate:modify2018-06-22T11:42:00+00:00FtEXtsoftwareImageMagick 6.7.8-9 2014-05-12 Q16 http://www.imagemagick.org܆tEXtThumb::Document::Pages1/tEXtThumb::Image::height192rtEXtThumb::Image::Width192Ӭ!tEXtThumb::Mimetypeimage/png?VNtEXtThumb::MTime1529667720[ tEXtThumb::Size0BB>VtEXtThumb::URIfile:///mntlog/favicons/2018-06-22/0a61a9b9656143d96d53d4fedb33ba31.ico.pngG|IENDB`apple-icon-152x152.png000066400000000000000000000277431461511344300411160ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Assets.xcassets/AppIcon.appiconsetPNG  IHDR !gAMA asRGB cHRMz&u0`:pQ<bKGD pHYsHHFk>-VIDATxwy=ԝ^gfv{o@IL,U}Qn}DI++.8׹&V!mK"%Ѧ"D Hٝ1;e؎3yϜp` B|ۤ_nwr;ȝ,0ygԜfvgNxjZQYͮNvkZgFY ۊ߫.kX[qwӝCxr#B!~ChIXBtxviR(Oo|[^߻^) Tn)1vR.a;vG;7Y%M@/𬢈o65e&Gh]`ڙUվ\z)x:xgVΡvU/W,u(pJ?Et`CWmo&&9Cy+ut[kCب_>&0[Oe0> $xڠםsu!j)KgǤ w!k1/mokLZnP5~/un4pQ*[wKmxIfd ,w5)$PuM9OtZ&jʬ*,05U^)K]y$BS[2mTiFLɕ~VXŠ=m)opFXA (0ykئjڧ l\ -ozB|x~ksCR4igUM3@RWhUxڳ7I_$IFMPԕZBy!"*G+Je J<< SG&ÚcuMo0(O !~v ]`1S2yHJ fR! H)o7!xڨןLDPU ۣر( 2)l6K2$F$I$RJF#%%%&ll6JKFPR).~p nLssd|okkC%Ku9Nw ;5M9foV8+] xIӘM&VL&# Pf'd2YtBEE955RWWK?X,bHځԤ<M95lԹ>dd,!6M <"Li._7+#Q[ʎXGmMfsuLH$˜M==}\܉&z=tT*^C%Ņ"_KMI$}k74 cQi dؤ=B/NW^eb^g=<8vt\34KӌOx8w: Sz|}⮅MG)+z4l.L7Zd?23s LW /H$M46UU4mb1 494ױ#>tUUD\Ab/i?}gFvGE-igG9K@rچ\\\2V R+YUꪂ{=Eav>?w9^Z@7i!D"Ր-47;;s{TUUty/yOPSSŋB(3O4MCJqM&EQ찫ە}xZri6ϖ@.){y$ɩ.)NRRɓ'hmi5M\x͕+'reL&ۃP~k8}R c /#L&#AK!09RonGCC={vs/L&g 8/ee6JV*++njpEQhkmh4'sJfnL6*++f⊗>K{v`0(20,bq~)~Oq\Iuu6g7͛zTyimi&NxtvusS yP 8lU5/'}SUZre/0Bߨ->*% 2];TSSSCOϿ~uss!ٰ}v/[gHRLj/~=wgMS.ESQ^~=&%h_ "ҙYB`ڙzUEEQؽ{]=5nA{:u+`hh78EC}Gl6O߭殣ٽkc.{cph`0D63$$IΝ{k~!{VeqiP$?!UWHtP'Hbޓ'd``覡`7xGFߓo^>Q SkWkyYV6nXO6{17`D"(\/P^^m[YBU5(PtZ|3o ŕeAna2_RJN;83Fc׉LUUz ;ٳgp:;9w]6nX{d2 A]]-VXZZJii)ֵr|>?Ctw08<#"5mF(z4m.lV gt7"doZntݻ~xuk(!>^&jkk7d28~x>~ssɻ3ڡl6䠩{ N.]qR5|b,fŊKǹ)w)γήRR^n8vi˝>T˗طw76RD1GxY'<:E$&1L8v'1_k& bә,_Pdq$1,)^xGx<9W]I8~(%fMD"o3ꫯQQQΑX,SUNcphgϑdu2b)a|_bӗ#%VyF2f$/v#0oUU5{zE8sDb?0t:ǎ[o(xp9r -7DXS3s VO^_oGlloo#Lz ƉwQ[S3ʩ\T^WI3lin>0--ѤD <dʘO( ?{|.]=iood229Gtr{Ak6o\P97{i7bXtMCMNL&_1RjHsl޼G~ۧn@l63m]4U#L}7_z=MJ"8`LgA?Op;  s>@]]oMӨ枻3::Ą)%v{#'߅j>Ō` G+?wYvF*+)))`pә4D@ w~԰Z8ۻ{wa+-% L& B9J̹0NޠXJǎm6n`Æ{5JDQ¡hh4F2*GaXXJ(+QVVVbh0\CL1șHffI)2"L+lV /cWvkSR (ijrrQEeegC$E"9Iq;ysj]~3wg[d2Y|ȼڸ zݣ?pe3'{phg}+]8v :nZ KY맵3͸35߫T:/!K,P|gΜcp`sC"qKA2jZuWn/:;9yqv6ES(D o L| ,GQ ]ݸn._񣴵-d9"%I0P eY q&=rP]UxՄ6i#ә/pYv˓_ 1>Jg7w8M1MrI޼)e+t:WjD4B`lAy^`pusn;o+$Ȫ*P`8Ű"GtwvOpr''EVzr_L& G+~*GA$7ߦ⮻cOF$PV"`dd~ ]M4VXI3xa䊬tXB!jDb Z 57RYn6~kHyN]%R\bXl7r:"P/k$1 IueY.RWDI0f@-U%d*GeU RGA:5<7`{kϿ|hmNj*&= 7l撏,$I]#Q*Vw{aښ:(+~Ӑdi C +1ܚ_9yYP$RW??ۜj0SB:Kl& F"HᵷĪX$bth,S#p{"1B,v8P23i/P$ਛp4d9 :/ypQU]N_)"=M(@-z,%E&!H+:/%P17x|tXC,h8DGz7;D+ $K D K) lj' VC`\]!c1z|8[mhh,.]t68@g=mvm֜;j뤔#\|yd5 ψ{|Em(U#N:e&;rpm*N`ydiƆ 8[;0X(&'IJ$ ꠪l*F.5x (Rpxs:elƒ!UgW.3bcV`FUM-JeM1 QBj6S4{|s^c)1ᨯl4.u3w, HFV6Bnu|@(BJ/:4Iîq<@. ߓLsc#ՕK7]E%hid+\Y\>L&hK$s=eV+͎*l+.X-+ d" E}؛Z(*n <h1pdr2[)-Fl+x-B`&s zX4RTOd &MX__# OE9Bh7R vH* )-+c]؛Z0-{]jv^%$ ?2Z+*huڱYW``PVQ:„"@SU| "0 vVJmeԤ24"=KQꪫhjd4.Ny^$zz[Ya\C$bJ  7Ph6M4&>Fҳ[: 58k1 K1+qb \F[*3FRJ) cQ>*k 2vfU踇t:=kj0P[Q_jq !ɠۏݽ'<JI)Qt:j걕QQUpcm0ᐟFG3 f,V+dOdf%`2hj:X&B'rr_yJRb4FEe5CLH& Ӊ數uU5uT:͈{ orLuلڪ9 Bz|!H3 U-QԤ((F`y\gbä@jh'MNǜhƄ?kd,%IeE! 3^Bٽ:_TS-?hHҏjRE@mC#6l;52D ȉVVF;&S s0%uOP*2 ج A @`h_֟xiW6}R)bP`g۞AnEIC73ThnE1fXܳAueMX 3Ex/z_,Sq䞢v+C𽪦.`Nu]mA:d=`Qa[bhljv6≜u :J)tUUl/4,gXF~a`~-/|d4ruM"RY&Ru);`ɈT*Ph*@:&  t%"x1`pH)u4V؀TPrn! o~C5v~XN=؍ȏ}KYUf/^߃]3:4@-z`4kt`w6SVQ9u=X(eh,_uE^^WKc]mI/ !j1+'XF+X~>|D r ,oHcGG(zXme8[i;0SfrPѹw9ji)$Tk+J_xhb.<>%CL&ML6l1FNܷx#RJ U5u8[QSWKkMSsHΞ_U%&MVUrUgm+'o^rOdovO ))o[`S?Xҩ#EI_KIGs n%$Y'O^U?pc}ӲJX?8cR[2MӞkoٶk(D`Sp#$IO]/%FM;vQQS;fdo|_{6oZVh<̮qFgҾnE+*"/q0:ԏAfLo0aNhEZ(ʟ>×X+X]%'q(7 \#h)6 hAe{#ւ?{ÃpqXϾhѤ1cCAFIO&}- LLZ X ;'AO*呿ߨOgh(*="``?o&}91f@u +Aן8&0~%}kjOJ)?5&Z%F¸Fp OiWryGCd292FWXV`ҤolDꄪiʪOy̅Igm}4)1S?)5}8L\zG3ן{9U?z $qܣ#FCS爐>L@{\Yfy#wJn ,g_{44)GڢJ  2CS56؉gCUlЀ!Z[io_ ŝ"06_iasPT|C0m7kv1eXWn;+:_T{Aˣ}.\_UJ)?Pԃ 5Mb# :E|k{LD}ŏku)=@Qyt:}M$gt?d\s' &ޒͪӤ \>&  Wq , 49)(_|𰋢\X5]%o;œH) a@s-e4O}`;`5ko*oߵ>UR*4E`Bl.r`M`3}/&飚q"`u !TSyC:_ k t61M_0'I]E_)Б)pq E~=8CմIɣRSֶƟԺb5x"L=i3:rh,EpֽudGRqY&.*_'fX빮cM`\IbOۚn`M`G~&Xg-kš;~²&55 leM`k,( x5M%tEXtdate:create2018-06-22T11:42:00+00:00\4%tEXtdate:modify2018-06-22T11:42:00+00:00FtEXtsoftwareImageMagick 6.7.8-9 2014-05-12 Q16 http://www.imagemagick.org܆tEXtThumb::Document::Pages1/tEXtThumb::Image::height192rtEXtThumb::Image::Width192Ӭ!tEXtThumb::Mimetypeimage/png?VNtEXtThumb::MTime1529667720[ tEXtThumb::Size0BB>VtEXtThumb::URIfile:///mntlog/favicons/2018-06-22/0a61a9b9656143d96d53d4fedb33ba31.ico.pngG|IENDB`apple-icon-180x180.png000066400000000000000000000355371461511344300411200ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Assets.xcassets/AppIcon.appiconsetPNG  IHDR=2gAMA asRGB cHRMz&u0`:pQ<bKGD pHYsHHFk>8IDATxwt\}gz`ef;)եq$ャw[+/7&N΍ܷVǹȖ[r$ّ.H29qf g--I3~Ϟ-ZX#(+}-Z,&-AXSbMt5EK--AXSbM⢉O\YV`eЎ葚tƉ6r{8hoQ5~(nsxۡ%\6Z2驸dā7E v>NK RUg%% gmQ!#Fa <%%%)8U~/y~Fi ;W2$-A7t[*M&xDH [=?o49 >[B*o !0o -}.ڱRUKo<!#nw.NKpJ= % b&WJ xNEсmRJֳ;u#CROK)iO AQ[-,ֻM_03BoYM#7l 䤔--h9IgӤ-#W ऀ';mon tWXz|}xTV՛kiw>Ux對l tkz \U;caG> zuH BAO,{0(k^Wg<=\d <*^B|hPYLmu#u#ᘈAM^r_7^3ry-9A1S(Ф'N֮]%/&rj{h3Z.hpRU XV !'W}*a)oq2+Bo SqUPZt-Sn¯IRJ*#n_K^vx\k-'"q1nҤ%ȟwOjo !^??VU+$h퍑IcZ[?#ťk=Ays| AGO쪦!uv`rS >Bߊ( jH$aff#$I2,PR 9Aڬ젳Mggnw;f|>3?y^~'_ UU2+ZWͳ ͐* %9W,-0V('@4BI{yH|@Rt>:q8sir9aBS X;6, bI4jJkBoЯbG&[Nn zWUU#l$&#~ZJ~ ضR/P(r<癘Q(&lf8|F8F \G4*BD"3c=:##b9nz(mew\vCZL7C AOD2+^VІK3< ?K,3L&7toFF#V>v]xg{0M,fnvF`iw%o]~Ei2%}bbV -&+\&U(yyOf{3TUr>~983ɀ;o/>ɡ!eA:$쭪ڽt+-sE,hyTȨjڍRLjzd!8yi8ϫ*>_7nE=Ϻ;vlr㭷ޡZ/b\knRժh:\`mw.k9j|sdҦj}RQiDJY,q* )5{7ZJs* -LlJqԽT+y8Lpx[p9_;`A,&_I)oGgMڷ%X\k&h=SDjR M2>1>;xquvm݂vWUS#Dfh>lX`d 'N vsˡ( \S{tww4s'X$RJԪʻ?x!rrfѿJTZUQ180/`,h>씒R{оvF %8Uu5 ZbI ?w5MT*S* &y'gСلhd>}hRr1;~/Jf"tx,N$%&Q^+@SJ)B~8}*K[-5d ]RE$ !]l4H&%<3Ñ#P.W.:RK ;vn;?@ggf ͊nGӴ󶕘L&n&MT&NʑxT\m۷kفnd6aXH$ 3?1Ķپ}+}nՂR \|SSLMٿ\ y T ;>tp88/]s#|T$3{7&FX ^?2+͵L{Dw|łj *o%!y\s;6RKںv}nҧ(A2,/r7qj>erDc1 2::=Ɔ>6oH ЋGg͆(H)-5hncC_7/ 3>Ev;mN'}}A6oēO#F._%pg+L_>v[wۡJ Z;:4ѦJZσ\n!@/wqH?BNb||+^98rqԪʶ[9p`/o=$LfN`s!0H$q\6z{{觿ڜ ,3vvw.Fi]x{fs{MXBIt.7aDokf:4ѭjC/OA۶u3 R,5=&'yz8!`tl7z-7T,3ϑJ1 _TU%O&]]0AxnM628ow*O/Cs9*OeIeMӔvhߨiWg(RJl6Q{s*&۶o! mر}nѤ$+K)KӾ(K%hyl$TڞZr,S )%mN'qN _L&ˋ/6o87Bp)|zM\2Zy.lEsu]رl.K4ctt'JT* uS`ll_:†~e4I*#R4.&.R$ [5!aLJ4CD1?~ݎh4 /L4{d SFyd]}x"yN|HeFGǙ GXzQTM#ʑHgW<{-Sx7ޭ(:޽7pjx^~JriQ.yؾm+7޸Mx?1D__}vcI.J%f]7:ظqÇ Mo[KکLh4JWׂ2Ĝ[yYwN\w944#wKH&q:v{=H$ /,SSa^9rr7$Uzc{Ģfc|? 1M6FOdHB̰&aBiFNۻ{n9Gk)%6 rA"Lak37Q{cNP9Z+{ٵk'Fqϳ98>8i ŗP(/,dÆ~l_1!Ke LuB}P*x7ǟ`*ʒ.8)q۹]tT*M>e49!lg}W^9JX\멻t>@/죭qV)/dr ~VKDy矿>"hlFk)%CllR߿uY3BA${g}t*=:P X,W%}عs;R##))!/拫˖ˡ( j'O133gؿ/;mf-yBč12r~α4Mbسz64ߩ0Ifg߿ K#%Z!3166E)~v؋f:(UK ﭔlH"')^xΌC0Ћ(KQ&qs M25Ee&9 D"1~' 뚝lݲ@v0rA~i BzCbzaf;&y KgP Ly_Mdr !kɇ wbb|wt:/ZJټy#r~1岞: 68 NDK4"BSF+=|>\fEQ `rTU#ΒJ稬M5s=_wy;yFn97&%jBT"˓fSilbt>Mfv͊梭͉́fd2SDk1q_)y=_L[I*K*r₮(J™1f#QNnfgUj/ޱm}!/~>@`5ٌbj_kSio킗^^uvaaq8=-W%fXE+%,xᖛz5l618a/ s3=QNFQZ^0+U4\32AB*z9=r[okþy!uXlSi)ݚRX"C._\I+ƪٔN"49;an&^f  2D\}9U/hq&g_ԩvaݍݾdސs+*tUU~Cr!n2g[8RJ"d*5U%hxk36>C7=~&RZe4tH?ݝ,f [H)JĒ˥ "S"wXWT %lxqĽ,1HS,5_a癜'z뭼4+A ,\ۛLcDIجHK!zo33$R首oZYBP.Eg{0 JUez6F:#O!^T$Of(/ Hg ϐdj#Zg]T,pft_oWg悮 A._d.+еF2#5P@O MϐX7Re !b^hJI,&+%<;.;ooju)}T׈%Sg +qWu#hxJ*ϓ@GgͅݥrpT:G =ۚ+*dLT|L4ld4i#:5;T,03"N ;W[=D95"H2K_WOxjRBZ%dzt+P*W}׃}= `Y.oX&VkجS,05:*ڝ$=T,%L@zE{4I:ݡ3Db[4BP[]Xj:Q( 'V+mmkyHM#LfI&o݃ ˴U(td0HۼBPxX"ِ-aqֲk/BZf:4N*o^lreBqw/E9!.?m5`i =pzX޾~:}̵2 [42>,V I=`F FN fݍqtUYκt)%pb*4F"Em@8#Z̒ͤIvOǂP( 'T3mV~7FqK gAyЮ*-A/._oE$<LFWFbThL*`6a|@(K:'n/&\ ZT#w9>zoU)e !hPsf SIֵH)1Ltvyqpwt19>J&\?JLd&L&亮gE_t6 LPv{&%aPJ`LV>u$I$-Aש޾~BcLNR*]Q&ۀta%T0i4qlbsMӈR+U|]KݗCEb~;eXb1CK(lFD~ fh Mf#<klJDxrT2ATb5-ck  Jv+sL"ZL?{+,co ! lFGW73ģX4W%sz݁F|zצTDLF)K]^Tv;_e/YAKgO?`0l#f*4N:D[`OfUUV eM&] eg#Q* (_lw޸еJ>릭A !( &{;l0(љ0|) 7Xe1uDP*1U+Ze3( >~TI( x:1[, νpm߉qR(ryQY-|^;:MٽlPxd*=o_W'}KV7Ȍ +{ped\4VRKS;+ǤR^ NB낮( .@]>?6kaVU0Bae\LmN>/*K#bNgz( !*Bb/Bc?Gb7iWB\Y;A)1-tv{ttaZ`e]xbLdT"FudElHϒf/"zHEQ"&ehUVu4?`RGa)A`Y(49ÉKOg ,idi53?;ق4]̝v~m{7WĒI&ódg/BAPbybOGA~{)oR+ЅfH'f;' 6-8]Ec0l b4nU*U#fj~#8v{ O6Qg>Pa <,UiR~]؋˼q1L&3b0\*J"3:nބظT.35a&#\;jslfM(zoܵǒT,&+):W?/9]UջUUY)!"޼ j亮_4.4"bTA<ƣ33DɆ+F_6GSYvY!E(h;~:WTO|Jg7+4M",BQ \7 c6/Q#BO9KMLkѿƮAQ<.{{pn:)Eƀ7tMBV|G{ʙU_Rގ>i"bbX)dT+K3-tz}7 jw4iH)۬ Z\iL/AQtUQ!_q̦r LxP_XiI؁n4`kHb''Wj@pfkrQAKfg4vv{Λfط#p-hG=]:1|T*D pҴ-'7ljGSUR]yX.H&rYF#f6iL&#.EId:JV`6uwl^#B?7 Ot;V<r> [>x2!M>/M ORJ\V+J̆''Nn6@_ dFhMӈ%RL L,f3n|ݝ7TO-f#@`w1V}?ُ >~TJYRv6;?`4vϭWX.V*s =JL:$N!l`4.Fh!$ix%+nuu4+Bj3_3\ #Sw)ߥ0=w. ɸ^ZJb߃7qAOFh!JXYF$86>/]w32OmfSkuLj4ԃ2w?_(~DRyz.%h$rY=yzl:F !pt!jU2 ))U*#1‘(Jkz9^:.4)?B|foAe ^A'/zg~:ޣiڃ}8 QVI'LONT|?QOxttlI9v9LF^ N'&'!hޗmmmpUW}^ƒH\9iڧjʩFn/v L O0lT"3; }Pxh"AzcH@Oߋ֒A1@Ϸo}u<_ѷVUÚ}Ϲ1LIf&M7r#`{ f&z!kUNO;A2/!#Ÿݾ{{}>114W}=i򧤔] z՚'1&ƈFf6vlkLO 0LtcknĔEwpUfbv W~\0v4)O>Fl'n6JDTlWVTФՎQTS &Ѡ;8>[b7B~Z=_ز΂@S)¡qfQXig5^lL&#=]twajmlhP{.ֲ7::?*%_v&WebBcgH%MuejADm6d>^X#iKg ;R/& <rY'CLji{j1n@N*BbX'5z4|wS*WѤ)9YhUcĢK7rlDgD v߲h2ǻ Io=$3MAL=j/?o8Lm.)h!h]m_-f3uwj6y|֥A){ޞo4kN ,$Lgg(׼!o3E֖h?QGKwةeֱ݉B)y@R&gH^H#'H&~'hQ}z~G27lXތ_c쁪d^` ̤ O˾o-h!]8MG)!ģ"4JK":R&E F) 8]lZ:t1[,B/E|C#l+%^?>VQՏ&;d.!|4ӡqTmlټ W'V1O ??#n=-A_)௿匥3j~R8|-[ipLјi=si hSUd YPzHPo` /?w8j%Ɛmj6K䃚3 v {#$fở,-y^Zn ӯvW͚RC4AxY%'>/d]JZ^Ʃh|PJ!MA AWcw[E,FZ^8w4gBOxtYRCq7]_~[ȿ֓wy`?ڀKB(ݻ\mlW -A/?2mUU\{eB|]/6t:,-A/2ysh̑/nS5WCmDy ADž_S7_lKЬZ^ 2_3bx<(+R> ll0%0#c4]7[h z p,WU՟)rrLwvļ@Z^Ʀӝ|Ú&?'%{6?.D`g1E|E|GzQy魡mraߛp"{0YZ^~VN[nܻHK̋BK+&_ R5ei Ś3bMt5EK--AXSbMt5EK-?/rG0%tEXtdate:create2018-06-22T11:42:00+00:00\4%tEXtdate:modify2018-06-22T11:42:00+00:00FtEXtsoftwareImageMagick 6.7.8-9 2014-05-12 Q16 http://www.imagemagick.org܆tEXtThumb::Document::Pages1/tEXtThumb::Image::height192rtEXtThumb::Image::Width192Ӭ!tEXtThumb::Mimetypeimage/png?VNtEXtThumb::MTime1529667720[ tEXtThumb::Size0BB>VtEXtThumb::URIfile:///mntlog/favicons/2018-06-22/0a61a9b9656143d96d53d4fedb33ba31.ico.pngG|IENDB`apple-icon-76x76.png000066400000000000000000000133241461511344300407560ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Assets.xcassets/AppIcon.appiconsetPNG  IHDRLLǗQ+gAMA asRGB cHRMz&u0`:pQ<bKGD pHYsHHFk>GIDATxyt\}?ͦh.Y^]^1`M4MOiCӦ4!49ICH!9`8/eFیf?F32l6mHg-;BJOK݁llEq9h=?L;60pPp>rW8&;`AA5Ua Lo?+@3Yﯨ+s̈KL;3lMW𸢈_vՖH.!KL=mS5y/Y8h@ (8𔢈󲳎-.U~!`w֢I-!ħfjJ JG]]l7߀5?EQRi>^f|Iii Bt:Yu]MK-y_4{"y@#UEyE0iz!& }vV)wp8,@dLDjшٜ@<' ::l[Φ>+ANv{innk& 1ԐRAOKs#ez{*p\~S'[jS |ɣcH4))ONp!Nt$|~^.-4Ѻ!89Foo?.իWRP`Ex<OTUeIK3':@,ܹހ6D.z456iLA;)3dI% H)ZQQ^On)+nj&IKIII1; ۃo1&''lY+u咝m&77]@c6gѣB6hgϞ*%#pU|;(8ƝLLضm >"ݧ~64mh46SZ\̪UmXPe Dզ``vq ϗ U'rC9lwҶ\KWŮ+J牓=vX<ΫKP]]ITUȚ+)++e߾w9t(8X X,`l̎`io_ˎkR~sZY, {ウV7 ;lR,|w ѤdezNvyw_l&/7eK[YfuX,4M%0 ==ϩ>Y\u3yyiK6 L=&1 ‘oiy Ͼ_VqCVVַ s ں3ϽiU+WжbgqqnوN" sc;KX5q=WDq&sNf.y~S} SwbN t W_1ZZR x彼 #W100ȓO=͠m(#R‚֬YM7_lrkښgfR04=/Xs׽ۦa|>2l)%wSλ\yL&B }%</ic;M(,,`sy)a./x` HB\nxg|QTUEQ>ÚѶb9ۮؒܦ멫pć}?%ǎuGSq{LPc5PX\Qs&B=,k^h,5A8h[$ 9PU5<Ik܎祲F-9g@K~p'R5a2tD3wUU;u83jKK9 , EErRLiE%z! >(nƺSmDv;â4Ta/ްt: FKˉjWߦ,,%)%Yf3UT5`6gem3:4uYbY&c)%n#b4NGmE9e%Ӌ!Ŀ[+Vy_yQ~NFwH)? swیTT/(rt:}@Kii~O11;qUM7AO]U%egD)u+B][^uB`/]7}42ةJE])%E8vbhk)1 UVSLN^^zXTMcxc<]pK Y&# ՕLEwڼ򭲂Moigff>x.4M; %'&*k0: 5X ڱ;] ,f3 5UM:EdK mH/ƾamwMFgOWDrVH嘳-gP0@w1:9|* `w r-kÒK:E 8Kꓷ<RUN)Beݦ+02׃>F"8L,*konۃ{—qk6S4`NQt|}^S8GkalRd0> \3>6`ooƆ KXvL |k0gezxܠ}]G0v-FsAuM-w+:FT%04 AA7i[\5 K92 ̵SEf2L;*<.'x\tP0L?ߊ*J,ǘ}s?oܱ!u&rt~U@mc-SwYŢQF# b0h[B*KKH{!ܗm2=xÎI.ߋ~Px&M/<{  Nuh[K)/)5*FA^cmMbVtEXtThumb::URIfile:///mntlog/favicons/2018-06-22/0a61a9b9656143d96d53d4fedb33ba31.ico.pngG|IENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Base.lproj/000077500000000000000000000000001461511344300307025ustar00rootroot00000000000000LaunchScreen.storyboard000066400000000000000000000032121461511344300353050ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Base.lproj Main.storyboard000066400000000000000000000132361461511344300336260ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Base.lproj vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Resources/Info.plist000066400000000000000000000032071461511344300306550ustar00rootroot00000000000000 CFBundleDevelopmentRegion en CFBundleDisplayName NoteExp Synth CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight NSAppleMusicUsageDescription Import an audio file for preview UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight SupportedNumChannels kSupportedNumChannels vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Sources/000077500000000000000000000000001461511344300263545ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Sources/AppDelegate.h000066400000000000000000000042571461511344300307100ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import @interface AppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window; @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Sources/AppDelegate.m000066400000000000000000000051341461511344300307100ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return YES; } - (void)applicationWillResignActive:(UIApplication *)application { } - (void)applicationDidEnterBackground:(UIApplication *)application { } - (void)applicationWillEnterForeground:(UIApplication *)application { } - (void)applicationDidBecomeActive:(UIApplication *)application { } - (void)applicationWillTerminate:(UIApplication *)application { } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Sources/ViewController.h000066400000000000000000000042641461511344300315110ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import #import @interface ViewController : UIViewController @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Sources/ViewController.m000066400000000000000000000141361461511344300315150ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "ViewController.h" #import #import "public.sdk/source/vst/auv3wrapper/Shared/AUv3AudioEngine.h" #import "public.sdk/source/vst/auv3wrapper/Shared/AUv3Wrapper.h" @class AUv3WrapperViewController; @interface ViewController () { // Button for playback IBOutlet UIButton *playButton; // Container for our custom view. __weak IBOutlet UIView *auContainerView; // Audio playback engine. AUv3AudioEngine *audioEngine; // Container for the custom view. AUv3WrapperViewController *auV3ViewController; } -(IBAction)togglePlay:(id)sender; -(IBAction)loadFile:(id)sender; @end @implementation ViewController //------------------------------------------------------------------------ - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self embedPlugInView]; AudioComponentDescription desc; desc.componentType = kAUcomponentType; desc.componentSubType = kAUcomponentSubType; desc.componentManufacturer = kAUcomponentManufacturer; desc.componentFlags = kAUcomponentFlags; desc.componentFlagsMask = kAUcomponentFlagsMask; [AUAudioUnit registerSubclass: AUv3Wrapper.class asComponentDescription:desc name:@"Local AUv3" version: UINT32_MAX]; audioEngine = [[AUv3AudioEngine alloc] initWithComponentType:desc.componentType]; [audioEngine loadAudioUnitWithComponentDescription:desc completion:^{ auV3ViewController.audioUnit = (AUv3Wrapper*)audioEngine.currentAudioUnit; }]; } //------------------------------------------------------------------------ - (void)embedPlugInView { NSURL *builtInPlugInURL = [[NSBundle mainBundle] builtInPlugInsURL]; NSURL *pluginURL = [builtInPlugInURL URLByAppendingPathComponent: @"AUv3WrapperiOSExtension.appex"]; NSBundle *appExtensionBundle = [NSBundle bundleWithURL: pluginURL]; auV3ViewController = [[AUv3WrapperViewController alloc] initWithNibName: @"AUv3WrapperViewController" bundle: appExtensionBundle]; // Present the view controller's view. UIView *view = auV3ViewController.view; view.frame = auContainerView.bounds; [auContainerView addSubview: view]; view.translatesAutoresizingMaskIntoConstraints = NO; NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)]; [auContainerView addConstraints: constraints]; constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)]; [auContainerView addConstraints: constraints]; } //------------------------------------------------------------------------ - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //------------------------------------------------------------------------ -(IBAction)loadFile:(id)sender { MPMediaPickerController *soundPicker=[[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio]; soundPicker.delegate=self; soundPicker.allowsPickingMultipleItems=NO; // You can set it to yes for multiple selection [self presentViewController:soundPicker animated:YES completion:nil]; } //------------------------------------------------------------------------ -(void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *)mediaItemCollection { MPMediaItem *item = [[mediaItemCollection items] objectAtIndex:0]; // For multiple you can iterate iTems array NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL]; [mediaPicker dismissViewControllerAnimated:YES completion:nil]; NSError* error = [audioEngine loadAudioFile:url]; if (error != nil) { NSLog(@"something went wrong"); } } - (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker { [mediaPicker dismissViewControllerAnimated:YES completion:nil]; } //------------------------------------------------------------------------ -(IBAction)togglePlay:(id)sender { BOOL isPlaying = [audioEngine startStop]; [playButton setTitle: isPlaying ? @"Stop" : @"Play" forState: UIControlStateNormal]; } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS/Sources/main.mm000066400000000000000000000043501461511344300276350ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import #import "AppDelegate.h" int main (int argc, char* argv[]) { @autoreleasepool { return UIApplicationMain (argc, argv, nil, NSStringFromClass ([AppDelegate class])); } } noteexpressionsynth.entitlements000066400000000000000000000002741461511344300334650ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/iOS vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/000077500000000000000000000000001461511344300252415ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Resources/000077500000000000000000000000001461511344300272135ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Resources/Base.lproj/000077500000000000000000000000001461511344300312125ustar00rootroot00000000000000Main.storyboard000066400000000000000000000265551461511344300341460ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Resources/Base.lproj

vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Resources/Info.plist000066400000000000000000000022531461511344300311650ustar00rootroot00000000000000 CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile NoteExpressionSynth CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright Copyright © 2020 Steinberg Media Technologies. All rights reserved. NSMainStoryboardFile Main NSPrincipalClass NSApplication SupportedNumChannels kSupportedNumChannels NoteExpressionSynth.icns000066400000000000000000006136321461511344300340400ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Resourcesicnsic12KPNG  IHDR@@iqziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5IDATxZ p~>ێ؎c'$NB&L(4!(3@iiȴte @!(Gچ#IH}b[e[e[bɲeKvۿaY[fؙ}OcjNʕ~^ }YC HAϕl?W ެI9hD%)$$)""L>jմSnNt;sDnVyφTvnJS844Dz[QЍ+oD 5;~B$?lL2lkQ3s1aC9iu3PhBJN/:Y'vtNGNFYY :6'gA蛭M`}}; $z_3i;;zZ*ixAa\f-,O F, ^$,~b┐0ذϒ@ ~xM8A@w@aaD'N]])ݰauzz{:uJu-c'tybA>;֯~JϦwoFaaXFf ()}~piJiݠUbydd$1ݵa onvR|piT@wߵ^%`ury51+.*E ł G2I-кҶwwC VM]4!;ZǦLsBkH5d’yLJeujqlմѹ󗨼 Hqq7B!-0,',~6$<8UTVY;pXpSS))1Q(Xue+NX!ky+Sl{,va%6dKJLX4XJN`́~  yghh5vtq!-&(߂mo#eG6YQddzWR.ZGKPߤcY&6`R_|/zyԪ9k䥺u`ʻqO?S}\I'y}ZWפqgq|]n~醦fBh4GxtNTyÎm{|B@MەGU5 Zw$ 5an$v×awQăؠx؅=Sw%8Pzmі*#ڶ */?~31%I:yRo^Bj=XZ$^J=}z(UըV5.ѳXRTꖔd$B 7ی!3j8("z+ 6eŅst1?6aDwRȾ5F [48ٌ$|/e|bltɓΎv:q )\?۵/9jjrV f5b- SHp͙5ncu26A`?GTQ;BbAₙ(7/f|[$/XXeRK:L4 1"Qg|?Rrqo]DVYXDָ v93rx"m_3Iԅ#`2*WB2 KߑAM=(-\c|8*ͶQD ݧVtfdE\ש[`(`w_576j;"q-J)$4L #Ე甑;AC$81>VdچFRuXR4q>(ճS1@h;X rچR2uvѴX$W_ii;kRltN,ChNX{DJInXsBn[iL|G&;^ \:8ad @I{_|hEDU* OLPHPpw``ȬEj(Zs'w6 lb6|rKrи~VU0QtE!cu.\7=F P[lT _ 6+omF85C1PO1q§1\)[>+bb/ B5׋|@ Zp p5.Ǡ'$#,EICg6!}~LʏMyB#@؆p ֺt):pbѦ( AQQQy_Le/`F; =FMѸ 78y X@Į)ґ1ip,3]Սpׇ٠- - bA 7߻FB׺c۠;q1DIhBPL3rfXMOI!)Cp0*2b/ו\=G׷/6mOcjU/CY0@(?5ە>@@3321H^qI]wj͢8|%& k_yӟ2o> x)l= v.,8M, MlXS8nQg +21SoM>5yi1_ >]n$|rd*ntHe^ p8<`l* Q9nF+WQ"A/}w1 } >IENDB`ic07 PNG  IHDR>aziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5IDATx]|U?iR  ]b/ꮨ+|*ʮV{ľ.]14 "5B02of{{!oݹ3{wD`00 ``0?1?{Xy@h{GqB-r~W"=ڀpEq$sso?n=瀢!A?F~ݯP.Iرo BE8_JD\b~< 9;C@z@ /!<F(A9n_10IC9k#Aa!0Pe>Y@[#I(%—`+{4$lܮ;w ~8PN>B=%r =#ğc FA)4Ec)0.BayE0Bfs<@x|ۼm ># Bߌ) L;7~Ӷw~0Q4}ȭğ Pً3 9fW')9-o!;nQ `&wh16/“n>'-܇>OEB0pn9 $}Ya4@ϝ} z;::<&8Up @777446JMuTTVJiiTVUp64\BeȐ! mmmJ4hx{{Kmm|s81FN=e0މЊ8F^>gu@WIjjkeǟʎ]ڪtbl .!!!Ԥ0C LA⇅JT%Ν?JAa,d&$W]+CGJ`{gqgDeB[ /.O<.h{w)pI-#uyZi,ڲ{%P #&#q(@g@p3Av(v&J ^ƥ9clnBG>2axel|{Ӽ|\ƍ B0_,źg'~صGߩ*H۩BNn;<00P/Bi<͝ =~ @cSsVFv!3E˷yWufAx_yɣafՂO>BԱ2M /B:]A<E*wB3k+.#[f3u_^Q!oUy6E0F"!Z b#]Wߘr4tf9EѧlŶ1G#)i֕wIƷS:;t*w ;w8ݡ(;"Fؘ p|om+RO:uDXkouM}Rnai42 wğPF.j1_j)r 1 =:My#;o8% ZF%W_yijY咋* }B U+*dN]4/EH|n;xp\"io,y|ewk_ɫY3Z2X.䙵e-QVt ;wx(Uu|QIŞSj]aPU ssqc[SS+obfSVC%%ʐ t3fj\}1yUB-HMK_WU܂ҽU\p 8?RXXB7YﳳseyСʼ%e^kL{I拍VLqp1S^ #gk8e: .~kw,5r[&?,J5p" ?Ҳӛ[Z:lj𺉽j"{8 +WVh7"''O| e=@kvU'O |qt8y{?Ӵۙ3[qٴgk+㝮U- wqۨcz\Q\P%K.lsEuZ-1e `;EIDX Ʃ%s{~y2zϛ#cuG/#? {Ьi}}4*陖,aݫǘ_[gıU,QxKhmmȡ%Ha[  9F Sf ϕƪJc͔*728VB}V`u~W ʅ y2 -d0"5ĢT+: %W0ˠ҂28_Ъ*WVfN{;!Md<).H:x8 t2-^FET[÷ӼK{qtηUa[W-pDd^20Qʚ"CtGҙZr$yF޽k'KAuz"iu>[1 8* *j۟QFNh- oO*W J|w >1 GROpW_US\gXqUùÎ-*khr} !B S`?0y2 "%%5=A3vm?@UMm6ib݊o(>A+};ozUUrEN(=iHcS?vk^`Rp5{ [7Gnȃ<ٖwpAzv~4}o_ m.hfJaJڱ;0jv]"e65b#P ]K+B6~ufnr78p8B֊ 6,I>jkmQ{Li{0&e-@A}CS7~m?hQ_{R[A⢇V,bI4)ϓ)3Os@2s[G dH,#hpu:dً߮`{"hiK5$Q -nBX#@K%vT3ѩ D5WOS ['Oe_FLr(I|'UM æPvhrLG}&;{Muf r8q2DZ>:z=Z ;Dv bތDI@`z%x{ '3o0?מlJ2l>^$>cDlK\cnQL(P{E-.{SSؽKv'|/ ujqB9w$G Sd0eA}5GGH`gy9 p,|O5e%E#Χu/WIJ̷̮z.خ\V=~ 'S1'S~f&5MRYof0 QľKByLgoxf@gӮ1P/Qc,j.kkj[=ʉ_AyYR 9XF@qzIg啒[NWPέ {X>1b]X&M3ɣqs} Ź_vLⳟ!t>:y><)nt9Vɫ5Q2JAv^.~=̦5oQR8Ap'61Q^V╟ȐA8ΕCB ldLZ7`lLlcg^l rF1v^Cg"طgGX! _*+%,|rRb`9n|:f6kuoڤX Ư TRmvvhߠWoO9j`|0ϞGp9jj FшuT>8#aG#"&ji龥̒8X|K2aX d:\oSk #$ S,fiUyYA" 0Ș5~xa Wib9ESӺ7xrm5v0@&q>h?=IP&Fxqj!W-PQsq>4!"uH=|J= F8r#6x"?S^g>s*  Уur\σHY)TP*Sπu/6#麫l!:KlA ~w lgH g Vc8Ou WܬO̜:IhZh-4Hk$|)/lߨ`9;K `TH"HWG:D}Zf>voFXf;XnvօQI40תyi;QmMBzuF}/`>.Axo9up9G`o 7ȿc^f XJ |;@-%pJoZZ xi]ٲDFREaXXcTh .XܤyQq__qZ͂u/Ƿݖj } ڬ&ACxspmߠ1^<~Õ雭h5Zc|fZo=~=0ZH_+"ޕ"l#|zf!Us9'iǫi))*TT綮9Z )U4YY)պgtZLe0M뺟mGo3Djo7Ⱥ>LԱ}gM=^2%-Hrm{'M8aU$H+._h{V^wK `HKm:EMT#uTA] J9fp=Rؘ珳u6'wy1i6"K~R1{o!.SN2`| N$0? q>4[`)ԝCB,vOCCEv{v!Fv=@ki Ѹa4 xސ *pEp\nJgGNB:p@ˌIƾ <%7_vۘvN\OŖfF3xִ?H0ǩ?W|40ts I1zt0:z7ׇ n~ p$jz 1?3K@|sV%>7X zߊI"tjzkh֐ hV2^K`ʸA|Yb`e;g ]@E XtI ~p2v4뾊NZP) FJ"-@+5qhD<(܏760{{i0o}6@00 `d:%Q!IENDB`ic13=PNG  IHDR\rfziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5;IDATx}ű~)tʧsN I@ r$??d $0&et97Hewovgvvۛ[U_h(:y]Y 8rGv7sL]Dq@+8P;A ʐ@+A >5i ~ۅ;ށ"h{/qeY $g M=@s,oE5q? |jJ@X$ kbd/HWGjAz"+1bxt0|t,mP%}PM6ѯo*0{i3יx.׵cUmo&IH!@ xCSr@bll!_"=RF=w`6-DMqbh@!=.v٭FJ][W p*By\0˪Aǐ"h]݃ $?v8 F܋2/4H!2h#`d|s-+$?NKHkѾE)69g7Hwzc6 cftI\ Fڛ OAAf՜^(h2@'jvMRYm#*PlH׭@Q8Hd`Q}\>}3SH]\Ui(V.1OH7Te,VC|[,X6k¨Ab/tx`wAdCgLTAϾ Wo7C"iRGV+ ? "+o '_$,74w"2.kxFkmqB i0dZd~ XG8@> EJmW+}?4w&{@?q'j&9J#V2A?c>kMQ4Xià@ H{ 3YSh9AG1G>@+VJPM8@់o# O? 4Xi sA/=Nׯ)8JV OcgȴaF!߹{1nC6B%$ib!=яk V@o40R8K8R:3Ra譾Á+ g!g}n'Ŀ---ҥKܙN5. KWv%=OhH}@14ܫ{2/)((ilhFijj&(%{wϞ=zdذ2iС2t޽[}}O7K;ƼOFށN cB;MƾiNFmmmmYv|nq Jm-ӁwR2zSN2`@9b9BFGȈå[Rދ)h357%Xi00Ԁ_w| _}->h_#1cFI?L'}zKBʥETUW-z7Jz1F819}jٷƛHMM=d̟wvء/}z6ee5{Y؎P{/ ~-&nJru߱<ܕv+믿*w, |RA`5Z7A#MbS NO gF`ԫWOg-S&O %MM˻}߈8SfW3]HǢPݞBgyy/ېϡXxGes'g  Joc1E 08g`dV"M X?HX#A9Ζ{Uy;nM$Ž`tBF=8А!dgQr}wȸq1o X{[{h[qmp^JZeq~+MǝP>jnn?GپhqjX>$ 2FY*P0Mybnݲuniʮ4@PB|Eec~w4ЗLppD&Fݜy4. :--+O7_bz|eYo-Y94]ze?~p`#v 9|08a\x,frf񬈗nwS`q`^FZdTKS項8_n;}z /lʃ}ze/Sn9yBHzwE'OAe^`ӠU%CS zAPKAaddfIs=ht QπƍSa+:~R{Uku7JNnݻD4hk-S}Oǟ&Dh_>yV\-m6 fNb`i>7?| YxckQğl?%]{p_:S}/ ?ntpA̮hؾ}|| F,ܑ: y?˷\\\(0zҥ{ڊ+VQvyIF?#~tp_~L˥:KD!gu8k=!"0%Tsy6qx~ BMM-2rF_{WMYG eh?ʄ !뮖=ްWP-a63פ ?GM yXF\V}ojl}튠}>_Y8{m?Ĺgs}@U̽bnz?LjFK/@^|镰xދt Ͼ}ZD)'?BPwnL(gE+z؜Ca;m[ RRZj,!h2Or+'DE&[֭F)`Yº_UU-]t hup((Db"݋?qNd` 8 5oG=B#B(YZRNjcuO, c΃]~|J4;ww(8 ;ƺٳgs~]329􇿠r.cWګ嗐GjfJíqOj.y^c"wރ"W>|izioM.Z9O. ^E綶o+vȾu` FqzMe8@:&-Ǝ-N:􀭠8Nrsem^7r1=pWk[BR4O(?-$k֮BX;&%;4y9;O`a |Zx58+tz2.ྜ(Z]TY^~GV#yN94]VkegbvKª/PXc̓ on3Bt?fv<=?}^fee_|ens7/ ĸH{w؈(RVy)ܟTTSԹ]d{%'n:]X(pJ6nbg]B8S!dM¢`D]p ,KL߯m+*Nx+ "WjsA.A6c_G>G^krH 8C?=T #:O`#ݍcLG$Uu}G"^U% LW eOh)@Ξ5w'~-pW_f(.zߙt8p7?x񅋍YÍŶZ;v*ܶmaQyx*:5Q|j9`J~ s?浕5/};4 j-K'!_O;-0Vl'KU4m~{edfcX0>;~=pY,||%T#s>`fvZ6T@pyxHӳ [Zj| װ{v} <kă7|7g?^~-,d+m ':V{*~SPEZ)g/XSáD^sEDBLTcԘSBc4|\_|0*}5Z ts ֻ {Kl u.X^W\b)oL{AL~;~Xc}ͩyaag eJ -sLYMBF98$X>G8߭Gzn><8IzeW6&q1̑y/n;!3 }[\ڶhTN9N:6*woY3 7 ڊQܳs a-R]sX D RA O"`? HЫ$nA/+>bucNv]]0ݷ\u%I^:㔛} f]Á&6bXu%@X0Z.䂤am6 Shx>`G3q@b)?X3q5ik@k`nvvnU^{=_/*[ K*O~G#0LG|;k&n.eo$#0 d8~-\t [S&vwR(a!f]lvхu!75z6646%/&]^Q\?V8㑾bZ|w\zW_7b3v9 bx_èt802t=X+(ߍ8b`G%q psQlern%eNAW1m0ZaN=邼oG9RSפ,!qzBQrylp"Tyݣ":Bʋ/tBQ:ز3S~z]sH`1ϱXZ SYiݰ-SugZd!翾(yi0 t~ktv9@}Hu",Za{F{ ilBpV} 6JүZ@n}V"V!cQQqI<s|arq/=kwk3'ݒOiOFꕒJ|zI< zwZa|l 0xzG? ́R).n,դZ*v_[v 4EƁy oV!c!A綥f{~+E KwHSsFQvppfѴ\/]^ڈ9K[,h*LZDV>gNS&>FjY}ghcKg.1ڬNk7퐏?m֟m%ڻݯV{m\)T<.щ}gb_{] Mnk' ]K`$$ER- ߖMDeA@Xbz~ ! uD"@uKZV$bMs@yUXTZ.L$&W|[K+[~#g8C~BL >҃i{JxkWn--FEiR]۠^ժ:Ϋd`YQ_ur}vWȖiҶG]3fZí(mljon/Qjj7@!\*mOz35bWt3{}+!HmDw|+,)Yuh Zϳ.7mO3" #u<;͗_(9^gۧ'xkӯȊ bΛFB.]8w»/-;G~k_o'j`թs)?pج)2qH%+ARߥֵS]YR^ @ǍKAnu[AfѦ !.~Boݕ_k4vm]պF_,۰%xQie yGT*1]V|*dW_H8}i ̐>_.5pr J~+KJlڑ*u 'i۱Mk,_8TKbk/@olr< ںFYW oAQz-仕ػ_V܇+%Hu -{izi~@+x{PɅ͗J^vcxP>--)T9:uR5*F@l9<U"P܎sʻTved(FDF0+*dŲ/d-ֻk$NUݷ8yZj fH=uC-WH>}GjVi>˃ V hİ[B6]-MN2~FBA! E5==W9vHϔP[zEJc8V|FœQu9rgaMiw =eJin<-d7_Iup`BWUN }pau}徽{ia~|)Lzwz?Q&N/{esCa6"!iT.X/S})}eq zx&˿LJ ܨ:Lr}D52A<^ AgB+뼊Jٰf_B܇kІpRYU-[ݧ»o԰2y)7e.yERQVj, N_Jc+?z:JV' sNCm˾JÁ˴ hS&\k`yz ;Ke BbSV^>FΘP9zBӷ’(֭1Bzw4xޭ߻WOt/nڡCٯ9eʏ \|$3u'P{f`DCOV~l]V$g?d2lC\,Rwl plI>}ݰ pKMSu{?55eu:iQlc fڴc7jOfN(]tZ}[h?YA P~sEXh,EFhO--CXd(ƍ[L,{I4g.r ,ٴ >/ŝ,ToU 6\~F%𿀯kZྛ'* E`V N0v ኯ>tPگHᄆ#ݱcP hC/y 30dٹu8O!MTy!f2G`IbO'D^L?&|n?ewv3~wwGGϓ=箯5GUN>ߥKyur/?Z`U2T-mڈk c#njÆ!n;)tf. 9}ᲄDخ2pƠ}b1m鮜a{7!6 kZu]f9BF+qS{] U\)"iٹB_4}S&MpkjhO2޹~^4&-0pld@B;+>7Xw %3;Gѻo$`)~" WPb ?Ze7_O2 ln} DaFzv]᷿frZ8`'٫y}ҭCdƨ+A;ҳx:PM~j'~k/7lO{r/sg5FPM>r4 u`b;*8՟<~ b/TVsu8=P^~j|¢E&s KJtcMpg*7oU=)rKvp[Z /GhMO8[^OX1+F/bJ9u+!<勊  -"x~,`_>kA@7v\P l ^|U@:='puQdt)o^y(*(pMHXȚ 30_olh0 uK?Е}Ȩ HOmwqGH\Rϓ *2y(P%cb"9;_F)0/rQ~G4w.ݻ0PG ``~pk"$ =?S]P_tw@8 @3GP44| V| jk5@ #!TBV|B)lmpiCV] |2)`vJJFBPrYmo} eGma$oedIA H#Nꈂ)#**o ~4!.wi ڑVCcf)\𗸬Xʑh$=.v$F&g﴿0fнWcGغtH} oO;brbf=ugT$VUF4p? g3xp풝P8I>w_.ry܉`ȱ"ӭ$@>#!M y΋1?@hѳa(FPoLd >x`*w_~6TxxhZEWλ%Č Z>"`ѼR"%I&'sX1HH L{ph {TU) eg9vK q*ZQM4tP!."@P(#o(2(pD#+gnEݨA`TR2QKWE#:!)4> r_v :R} `E.#NR/`L}x-5[RTh`$ci"U<+-KwCc+;Q}~.Hx<izGy#}ΈٱehN[X"%=寽Ⓝа!FNxb6HH34j}* @&6#׼' rrD!K2rWbZ}P!@_W8($a J k(p9 i""rG6})HB#% ˀw_>[}}yUA?^B)s*^$ ot@ 4|?Oeo@HgV@[ޓyU~`[Pw_%:RPL[KΕDe P!,=;_2cې~ 2 :R{p,>D_#/=~'JބUC 4"EH;Rf{GZ7߱CK"*g`)85S-"W"Wcd#^ %%<Bk*N'hg{p<*φ|wKP@]})vOUc oSܿQ p C BOģ>;7\ǯA<>f&"J%$ UH}Q7L5`Mm6!N2 BPKN(Xϝ4I4@W啻z>L) P30NPu=TVAJFXu4Ql5][&fe% \߃*UEe  ׽؂C6%ˀ p9 :w(=d UnWM!#@x֠d@lj(D0@nAd>[pʄUd!,0NLy3ңH}; }] N:ˀAe(`<i/Ty'DH JJ*L>P{Ў]o_h_"@EPoH), rI<ч=zk$D\!Gukb5qLXp;sIBOXXL輅_(/ C P Ϲ ht]y2lOTfv*}kW5_59?&P3*6o[.G8~v[yJmG bTwaʟ У`oz 2|맏҄>l7 *,V| C*/xί{B5$Ξ%G|H"9礤n2|h酈?: `a2nU Wd8l[";O$7+cH g`zѷ_"?h'x8nxX֡@@^=e$z COkN X6ZdS`$LE٧ ]TT=2xʌYr'#Kcw*,1Z-_i&=PN{a6@i|GJ6OݱU}O3'@`Ft7,kΈ8h%5h m?@- ]q)fM@ ڹuȗ|wHA|mtזk0F¿:$*$/G8z@! 4F\90cG&1]죦(q@xb60y~wԝj M vN8޼8]:'[W[#Ǝ#ߏjGS9@ OO\H'u Kv8ʗ( *B)H9QE OAt8'rwXs~Ynm>-`H6"aQxiaj)OoT:pTEp6Jnʕ F>(9k, 3~Ω2G'¶a6p(^Z3bB?倞xvh"of\sӃfK  6DՊ0TK#43(?5L(-*Ѿ!ڻ@V.3B(F{ ݎϽm82 Btwiwl)Xgkl $Ty@:C͞neh`U`!zeAP~ `'ӻ/z  X,E9t  ɠ.&FjXcCd UvP峦Mڀ?Q~GdCBg 1uTa@766}uń(q~M;<IENDB`ic08=PNG  IHDR\rfziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5;IDATx}ű~)tʧsN I@ r$??d $0&et97Hewovgvvۛ[U_h(:y]Y 8rGv7sL]Dq@+8P;A ʐ@+A >5i ~ۅ;ށ"h{/qeY $g M=@s,oE5q? |jJ@X$ kbd/HWGjAz"+1bxt0|t,mP%}PM6ѯo*0{i3יx.׵cUmo&IH!@ xCSr@bll!_"=RF=w`6-DMqbh@!=.v٭FJ][W p*By\0˪Aǐ"h]݃ $?v8 F܋2/4H!2h#`d|s-+$?NKHkѾE)69g7Hwzc6 cftI\ Fڛ OAAf՜^(h2@'jvMRYm#*PlH׭@Q8Hd`Q}\>}3SH]\Ui(V.1OH7Te,VC|[,X6k¨Ab/tx`wAdCgLTAϾ Wo7C"iRGV+ ? "+o '_$,74w"2.kxFkmqB i0dZd~ XG8@> EJmW+}?4w&{@?q'j&9J#V2A?c>kMQ4Xià@ H{ 3YSh9AG1G>@+VJPM8@់o# O? 4Xi sA/=Nׯ)8JV OcgȴaF!߹{1nC6B%$ib!=яk V@o40R8K8R:3Ra譾Á+ g!g}n'Ŀ---ҥKܙN5. KWv%=OhH}@14ܫ{2/)((ilhFijj&(%{wϞ=zdذ2iС2t޽[}}O7K;ƼOFށN cB;MƾiNFmmmmYv|nq Jm-ӁwR2zSN2`@9b9BFGȈå[Rދ)h357%Xi00Ԁ_w| _}->h_#1cFI?L'}zKBʥETUW-z7Jz1F819}jٷƛHMM=d̟wvء/}z6ee5{Y؎P{/ ~-&nJru߱<ܕv+믿*w, |RA`5Z7A#MbS NO gF`ԫWOg-S&O %MM˻}߈8SfW3]HǢPݞBgyy/ېϡXxGes'g  Joc1E 08g`dV"M X?HX#A9Ζ{Uy;nM$Ž`tBF=8А!dgQr}wȸq1o X{[{h[qmp^JZeq~+MǝP>jnn?GپhqjX>$ 2FY*P0Mybnݲuniʮ4@PB|Eec~w4ЗLppD&Fݜy4. :--+O7_bz|eYo-Y94]ze?~p`#v 9|08a\x,frf񬈗nwS`q`^FZdTKS項8_n;}z /lʃ}ze/Sn9yBHzwE'OAe^`ӠU%CS zAPKAaddfIs=ht QπƍSa+:~R{Uku7JNnݻD4hk-S}Oǟ&Dh_>yV\-m6 fNb`i>7?| YxckQğl?%]{p_:S}/ ?ntpA̮hؾ}|| F,ܑ: y?˷\\\(0zҥ{ڊ+VQvyIF?#~tp_~L˥:KD!gu8k=!"0%Tsy6qx~ BMM-2rF_{WMYG eh?ʄ !뮖=ްWP-a63פ ?GM yXF\V}ojl}튠}>_Y8{m?Ĺgs}@U̽bnz?LjFK/@^|镰xދt Ͼ}ZD)'?BPwnL(gE+z؜Ca;m[ RRZj,!h2Or+'DE&[֭F)`Yº_UU-]t hup((Db"݋?qNd` 8 5oG=B#B(YZRNjcuO, c΃]~|J4;ww(8 ;ƺٳgs~]329􇿠r.cWګ嗐GjfJíqOj.y^c"wރ"W>|izioM.Z9O. ^E綶o+vȾu` FqzMe8@:&-Ǝ-N:􀭠8Nrsem^7r1=pWk[BR4O(?-$k֮BX;&%;4y9;O`a |Zx58+tz2.ྜ(Z]TY^~GV#yN94]VkegbvKª/PXc̓ on3Bt?fv<=?}^fee_|ens7/ ĸH{w؈(RVy)ܟTTSԹ]d{%'n:]X(pJ6nbg]B8S!dM¢`D]p ,KL߯m+*Nx+ "WjsA.A6c_G>G^krH 8C?=T #:O`#ݍcLG$Uu}G"^U% LW eOh)@Ξ5w'~-pW_f(.zߙt8p7?x񅋍YÍŶZ;v*ܶmaQyx*:5Q|j9`J~ s?浕5/};4 j-K'!_O;-0Vl'KU4m~{edfcX0>;~=pY,||%T#s>`fvZ6T@pyxHӳ [Zj| װ{v} <kă7|7g?^~-,d+m ':V{*~SPEZ)g/XSáD^sEDBLTcԘSBc4|\_|0*}5Z ts ֻ {Kl u.X^W\b)oL{AL~;~Xc}ͩyaag eJ -sLYMBF98$X>G8߭Gzn><8IzeW6&q1̑y/n;!3 }[\ڶhTN9N:6*woY3 7 ڊQܳs a-R]sX D RA O"`? HЫ$nA/+>bucNv]]0ݷ\u%I^:㔛} f]Á&6bXu%@X0Z.䂤am6 Shx>`G3q@b)?X3q5ik@k`nvvnU^{=_/*[ K*O~G#0LG|;k&n.eo$#0 d8~-\t [S&vwR(a!f]lvхu!75z6646%/&]^Q\?V8㑾bZ|w\zW_7b3v9 bx_èt802t=X+(ߍ8b`G%q psQlern%eNAW1m0ZaN=邼oG9RSפ,!qzBQrylp"Tyݣ":Bʋ/tBQ:ز3S~z]sH`1ϱXZ SYiݰ-SugZd!翾(yi0 t~ktv9@}Hu",Za{F{ ilBpV} 6JүZ@n}V"V!cQQqI<s|arq/=kwk3'ݒOiOFꕒJ|zI< zwZa|l 0xzG? ́R).n,դZ*v_[v 4EƁy oV!c!A綥f{~+E KwHSsFQvppfѴ\/]^ڈ9K[,h*LZDV>gNS&>FjY}ghcKg.1ڬNk7퐏?m֟m%ڻݯV{m\)T<.щ}gb_{] Mnk' ]K`$$ER- ߖMDeA@Xbz~ ! uD"@uKZV$bMs@yUXTZ.L$&W|[K+[~#g8C~BL >҃i{JxkWn--FEiR]۠^ժ:Ϋd`YQ_ur}vWȖiҶG]3fZí(mljon/Qjj7@!\*mOz35bWt3{}+!HmDw|+,)Yuh Zϳ.7mO3" #u<;͗_(9^gۧ'xkӯȊ bΛFB.]8w»/-;G~k_o'j`թs)?pج)2qH%+ARߥֵS]YR^ @ǍKAnu[AfѦ !.~Boݕ_k4vm]պF_,۰%xQie yGT*1]V|*dW_H8}i ̐>_.5pr J~+KJlڑ*u 'i۱Mk,_8TKbk/@olr< ںFYW oAQz-仕ػ_V܇+%Hu -{izi~@+x{PɅ͗J^vcxP>--)T9:uR5*F@l9<U"P܎sʻTved(FDF0+*dŲ/d-ֻk$NUݷ8yZj fH=uC-WH>}GjVi>˃ V hİ[B6]-MN2~FBA! E5==W9vHϔP[zEJc8V|FœQu9rgaMiw =eJin<-d7_Iup`BWUN }pau}徽{ia~|)Lzwz?Q&N/{esCa6"!iT.X/S})}eq zx&˿LJ ܨ:Lr}D52A<^ AgB+뼊Jٰf_B܇kІpRYU-[ݧ»o԰2y)7e.yERQVj, N_Jc+?z:JV' sNCm˾JÁ˴ hS&\k`yz ;Ke BbSV^>FΘP9zBӷ’(֭1Bzw4xޭ߻WOt/nڡCٯ9eʏ \|$3u'P{f`DCOV~l]V$g?d2lC\,Rwl plI>}ݰ pKMSu{?55eu:iQlc fڴc7jOfN(]tZ}[h?YA P~sEXh,EFhO--CXd(ƍ[L,{I4g.r ,ٴ >/ŝ,ToU 6\~F%𿀯kZྛ'* E`V N0v ኯ>tPگHᄆ#ݱcP hC/y 30dٹu8O!MTy!f2G`IbO'D^L?&|n?ewv3~wwGGϓ=箯5GUN>ߥKyur/?Z`U2T-mڈk c#njÆ!n;)tf. 9}ᲄDخ2pƠ}b1m鮜a{7!6 kZu]f9BF+qS{] U\)"iٹB_4}S&MpkjhO2޹~^4&-0pld@B;+>7Xw %3;Gѻo$`)~" WPb ?Ze7_O2 ln} DaFzv]᷿frZ8`'٫y}ҭCdƨ+A;ҳx:PM~j'~k/7lO{r/sg5FPM>r4 u`b;*8՟<~ b/TVsu8=P^~j|¢E&s KJtcMpg*7oU=)rKvp[Z /GhMO8[^OX1+F/bJ9u+!<勊  -"x~,`_>kA@7v\P l ^|U@:='puQdt)o^y(*(pMHXȚ 30_olh0 uK?Е}Ȩ HOmwqGH\Rϓ *2y(P%cb"9;_F)0/rQ~G4w.ݻ0PG ``~pk"$ =?S]P_tw@8 @3GP44| V| jk5@ #!TBV|B)lmpiCV] |2)`vJJFBPrYmo} eGma$oedIA H#Nꈂ)#**o ~4!.wi ڑVCcf)\𗸬Xʑh$=.v$F&g﴿0fнWcGغtH} oO;brbf=ugT$VUF4p? g3xp풝P8I>w_.ry܉`ȱ"ӭ$@>#!M y΋1?@hѳa(FPoLd >x`*w_~6TxxhZEWλ%Č Z>"`ѼR"%I&'sX1HH L{ph {TU) eg9vK q*ZQM4tP!."@P(#o(2(pD#+gnEݨA`TR2QKWE#:!)4> r_v :R} `E.#NR/`L}x-5[RTh`$ci"U<+-KwCc+;Q}~.Hx<izGy#}ΈٱehN[X"%=寽Ⓝа!FNxb6HH34j}* @&6#׼' rrD!K2rWbZ}P!@_W8($a J k(p9 i""rG6})HB#% ˀw_>[}}yUA?^B)s*^$ ot@ 4|?Oeo@HgV@[ޓyU~`[Pw_%:RPL[KΕDe P!,=;_2cې~ 2 :R{p,>D_#/=~'JބUC 4"EH;Rf{GZ7߱CK"*g`)85S-"W"Wcd#^ %%<Bk*N'hg{p<*φ|wKP@]})vOUc oSܿQ p C BOģ>;7\ǯA<>f&"J%$ UH}Q7L5`Mm6!N2 BPKN(Xϝ4I4@W啻z>L) P30NPu=TVAJFXu4Ql5][&fe% \߃*UEe  ׽؂C6%ˀ p9 :w(=d UnWM!#@x֠d@lj(D0@nAd>[pʄUd!,0NLy3ңH}; }] N:ˀAe(`<i/Ty'DH JJ*L>P{Ў]o_h_"@EPoH), rI<ч=zk$D\!Gukb5qLXp;sIBOXXL輅_(/ C P Ϲ ht]y2lOTfv*}kW5_59?&P3*6o[.G8~v[yJmG bTwaʟ У`oz 2|맏҄>l7 *,V| C*/xί{B5$Ξ%G|H"9礤n2|h酈?: `a2nU Wd8l[";O$7+cH g`zѷ_"?h'x8nxX֡@@^=e$z COkN X6ZdS`$LE٧ ]TT=2xʌYr'#Kcw*,1Z-_i&=PN{a6@i|GJ6OݱU}O3'@`Ft7,kΈ8h%5h m?@- ]q)fM@ ڹuȗ|wHA|mtזk0F¿:$*$/G8z@! 4F\90cG&1]죦(q@xb60y~wԝj M vN8޼8]:'[W[#Ǝ#ߏjGS9@ OO\H'u Kv8ʗ( *B)H9QE OAt8'rwXs~Ynm>-`H6"aQxiaj)OoT:pTEp6Jnʕ F>(9k, 3~Ω2G'¶a6p(^Z3bB?倞xvh"of\sӃfK  6DՊ0TK#43(?5L(-*Ѿ!ڻ@V.3B(F{ ݎϽm82 Btwiwl)Xgkl $Ty@:C͞neh`U`!zeAP~ `'ӻ/z  X,E9t  ɠ.&FjXcCd UvP峦Mڀ?Q~GdCBg 1uTa@766}uń(q~M;<IENDB`ic04ARGB8܀ ]eJ ͆0(҄ 0(0( 0( 0( kM  jǿǿɅɆƳUƣ&* Ġ&''?&'[Ȳ&';^ru&'J0D{r+'DfGF &'@/U{|'b`6ImltjՈفٿ׿qΆָ9= ն9::RƁɱ9: sĭ9: Ov9: aDZ9:Z]\ U9:UBm;|yK^؈؆MM MJJaсMJ ѾMJ a¾MJ sTlĿGJlonǁ UJJgS„N\qic14ˉPNG  IHDRxziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5@IDATx%Es % HPg$ $ d%/a6缳s3;yf42;{g{C9u)&                                                                                                                        X[Pu ( t>F$gGBqՓ x<`:X<5/73wJJ~ @GhtDIPσhFBF{.%! XhA @ǯ_G.aᓉH!Տ> @5?|Ed_!ὼHhq?M"Fpoa, J$#4|ԘTDhvo`$T!(m8/"Yf8a\6#i(5>ǭȿwX*'q.O$`5 6t@]$nA~0  42Ut '7`,SHE4\ͪH#7ttG]bHe4\H=tW☮\֘O#C 7rj p,%kFkx^|? ud" >iH-AbMH^9oC~ @Gd$@ "'r5 絴_. =^ |E@3 Dɨj-;4m䏡F)d"(x(_HޓC_13_C^ᐉH@0Q(w S?C+aynh@ a C9mAI| `"3qnVGB"Ӣ%ߍ0 :ja$@]%"^@@A}4ߴί6&aCL$@.Y?DfYN/"CD$2 :-1E؛UGPnh@BE p+J@>|e;f0 c/% tF@gtx@?"s}{;66YW56ˢH@g:T=x69(a h#L_/vːP_#+2 H#6dQ#G܊|FC1sS`0 "AHo6C"J3@6$B$=ѳ>&_D>jzY5u30iH B4"O dg2@Ļ )MfJH,4jJgO"(>2;qfzn$L4Ժt"F7]S[>[bSZp F^@>0(N=o!}MۗuA4\}tG?&:"C_Q @D/H@#P@~ @Cx*?ocj:?{8C$ n@^Clcj''x׆DI`9SGUQHhD8u/#^7HTB :JO;jF]0WC@`:ם^A&E50B]c$74֢g/t|Y{_Hc8u0t!&-m`+_`QXQpi60 㛈FJ)I@BǿEg>Ӷf[!L$IdQV~?I%Qu0T![ ' s:ucݬu@;almwh<#Ź7'ut 4fȷu^VEQ5://B! : ΁F: 2h4=tڟ$`sS0 ␀EO@o:mOL!I ;q0 DIAYB@?'t OS7/*% Aii(8@I-02w:")>aH!Py oL)H[:BP|@ Nށ .9p '̨ 8#u!E ހv_£ t'H hCau\4ũo|wڎ:qHlw@ o!4ũh˛ 8O^!N @#~.+D`;R.t=q}ȿ^G#P}F~@]t0`:83C_$@mM/ЍH f4bF"%Y<'{y= :诎K΁@ YD W<,x% @;Z O QX )xGe~ iǐ!PH$)@ǯCq7 T?!@MW< J@?|#P V9r 0tt:%@S<< t~uK9H "qu0Gt/krwF6je~۟H}aluj4J>SAϗڎ x6ԐJEM?Q c|UsH 9aTUVn 4A?f>y[JO&PnC~ @5r]%"^t L2kyH;!ucDu]: rdvjY*sa>וu@# GCJ%  &4lbO!_$+ @={>ו >@?7|DD7b (w ?C+BS Y`@\`!PqdzB: v]+tХmIH3!?cBD#1F:m! @'^Ź15ҷO_W?is1cϾ}-±O?oYtYr9BA[!PgK,u=]OrjXQ KNɓ\\))-ۯCWCC# F ?|y[X58Q#Gmwv&0ޏS^0t!&rCTg<ˍXGtw ds.in1緷B4'JGN5zL0& Ɓ 7SBooa0Gp # 崘ϫfN#PU]-o6Gw%8qeLuĠ[~e媵{J~iq@l>ӆ7HpoEWo u]&ɯZV>[Rņ7}T !9C!2x ~O^jjjښ:]34&MMM) m;ݨ(5'p$<)K`iUuGLHLJwÇ(?@7Wh$3`hNȔ4)(P #3!Yt4'W^|>CMXWx_ z^#y:ѵ|UW^cQFՏ6ișg.#G [S_r崨K H4ܠqqu0G|'op G[(:~̕2xC{TJbR~ܸZNS9NܬbkuICal5R E @!SnڼUbO>x:ϙt g9NAGz舌1uȷ/ !:yyF@T}rջk>L#/_Ѡ>v'vu>㘵8)qyDٕhEҵr PmOhrրW~!_ FfoH#jOk+1o=]aW;nY88+4vfi4\*} lx4Bu{>eD=#8Ç oV=LOMcֆGc S1~v a@%32}wy7o& 7{ґG7R/^rr~*NL&[<spTuupg9E>Ycg 埏=ex,[҈rhBv/,g aƻ(dXL9ލѮ~ ÏZ1۝O}c~LckM6փ:t )9ro`4lȄuw< y>]LrrlJyQ#Gʍ®L$o{wJlPl~7wi܅! 뿲RN9=MwJ|=_u$Ba"_- "ЂwAD>(8cƌSO9zQYqqve6cxR7H#m8tGB7` ($U`GG,ݯu&_xq{ύ9BWC4*'Ǟ|-/_#}.7|C'z9 _Pt%9V(iojp\E7hM0g~LXen~nn.E7x7>!PglƊAئ_05fhČН0kdu_LI7aY}hbƛ%nh1MH:ܐG#})o=y', 7_,nѥ?nCmKwf|E[aMNEɉ'k olyW’}Ɛ>AFNRre$!-=Ctz$K2Jދa@e_;jaéꟐэ\oC rJ6n"oJ;D{Vhoᗦk,ɲ+)u]9twt=찃e(C:|ک'ɱ):nL`L|]_ŻQxء[Y/-+X|G™~qBC9F ~kաyYT(4"%x Օ%o8\UO0N4֬o.zW^_k:/~#~׿vrӭ@t8}9HgwKȔyrf?@C8⼅l̢nf'455F]Ίt~ٲqӖN_'xu'uX鴍֩jkkEh'M߯W?#?hѷIMALx3ǟȇ!#qCalm_`H;<qH+V{:[Λ7S@;[n;f?:uʱ|1ۙv%!ACkVx[y]p6MCW 5,#aVH3[A~Cju ٸv!j菋u#Q#utDܯW1k])djph~erZSNatBj\+D.:&0`@l޲ <K=y:Pwdv8y:z?Ƨ˰I=S ig%gx:`%EGSN۞dgg{n}yWbҫ2mkdN weAP#]wBzzc/俞+tK䫳u9/2O&Jb%u_.:nJ|ӆ^G[oϭ.5Uw[!yh&2Cn,}(6v&?Ьq VZk̞٭<˾slڼZ6rOn'(pA5@ƅ\BɜrW^{J&5TY睳7帚oAXN^+khnhhO|ͭG@JPcSNSd> #ȷq4RMRsw~!x%Hi8]s/v ΊQGnm\>dIU߻LӝQ-X+(@ ~ŕ58a' p))555 yu!ФsL'!Z ;1C߄Oo_p 5k\ 2d5->{?GUGѴReKh377o/. b/:B=dBk!hL?4d}qOqHk2Dpeڏ&Hmu5{SS-oht?$[ V,LݭͫUWϫ 1usJ^ym~x#QTJȔ%K9UΙ=\-+Vh+a8 c1xmo|)ߣ뵙C`ذ]rIlݺ}>5޿Vt}*霳TO>VH5N:F_Bt |whyBFk8eUug_ըs*0oNTQC1u>͋qD;gc]mpZ~:_&_Цek|]-{X4|աka9⋯kIw.*{b{ F |(rr:j!.CdDk-jF[zQѓlx_ɧuQۍV` Cɧ487n&5FBBpSx5ᑟx?xغ 3&>4:iϗoEIP6:%|cg eܽ{<̿o 0K묻ï#`{wM'{t@-={k0F|1GʬY3"ɋu#]e6U=DH&wht?,󫫫o;j14Ukoߣ$Nn5s|S:"S;?VtIF.X2~ٲ8y.L125+oc2 \i y@t}9.cNb{h$B;~(w~>y_+CzrjͿk`ei6HRr?+.zJe1J@ЯF '? LNiiֳ&lknսn3{\_J߾潈1wҳ ֎B4ld'AyIP6;0i+JtOp w/XFSO qhtqÒOG4ؖ]_;UnW2x𠈋HoprCq=IVnQ 2? 4jqIG|XKe7N,!3%] v'M?EԈJ>-lF7 $9ǝ]vhJ[zkM 9dַoQKBhp(n3'M/FAmmwnnelٺ 5 Эh/&-ٲelظI6n"Iw%> 6wkDt̜Ʀ@uW{B @(ěf\|!~ iq?NiK|mc&deÆꥲJ*.Ϥib~?r}^|![[o:_P hgRY?#[ጔ555YBjPY'KLHzl6bի'r/{6ۻc74J:g#(K|j{;9Y][5r$ϓZXwFa ?Wf iyaaչ:mDv%s+h'x!ȳ1Li_\穥C7\+sr-j_=]lH%4 ii$`xIoБkKJjZ/k<;R[\snv:ǟ-Y :9Vjo^;4_0_ƌ!p@Zl[D .;%Yo߽b9#{3`7`cCw IwYĢh> +**04sEL IǢsW?1cFo5n&+wKv6pf>RTTV?{J>_R2xLЎe1uY嗦$]`1k5xܽ*ꊓZs Ϛ#^[^pdӧw Ugh[uDF^J),Л%]M%]yx{={"f}p{ΙJo4⟛5 ϱDŽL#sfl/k=#9yuT@ZԈ:y[Z;y=&pCΫ53.O2@,=WG:$1&~w}>cn_4 fBkH Ϯ^|Ep}3 @g^Ǥ1 y QD$=~ z@|ǽvup'6n܅$@][~xBJ~LR\R@TE@2sDe"h 0j>g-֞^pӤG>֖7 ?]D@,|zoCC?#))i>Ւj7 hpvl;Ӥ`Z$OVV^ /D$?G^ahx_& ;( udgCVۚKk%Iynsd#@sMu>/y/Bl=D$]uWA-wik[4ݶ}[o'MM\wl TB2<ӻwW0 DO@{gcc]I@IIOLˑ $@M y{"O>TWsn26"PTRnWL~4g?_r\|TnERP\.zqn,o_4$PU]-OYMɢ@IDAT%#L$@H̓Z ( $$$- x}"lNmI;&3$/])R|w E \|VX $mҤeO7֍8x=hÑ Px=<dx(4֦)|O .؃UUk,'%KI0XMOm;!'xQ4[ ^O?o$;;0?I e4ۧO f`F;FTW^](ћ@+݈#)Ceʄ!@ >]ksKއVH[jIBt?MՖ-K/>" )/T1 $+sA~ ӝ5HYnlݶC.<9vi?뜝Wdm۫'r^Ӎ^k1[WW'/pijIH 5#W*/mo4LoWXP(>GL$e W,[iiGٲy<˒]E(y lMHC F C`4 o ,+m "Etd~Z0EvE+dkBB&0@~\ojQL). L$`z䷅Lk )TGX~" 6' % $jޑ~l}*Em@K+9X[}2cxn!ʗUTIfN "$rs446ek0 2w^Q 4ep)*)w>Y)':a1 R ڬ 42]'K';܂bg"~uңBҖO3ڨ3֧+6Ȳ5[ p idt?ȲH p8s@FN,Z\Sm+uز3Jg- $ecSݼS>XFS%Fҫe#@6D6()>]% /DgF;}/n|4o#Jh}ӹE-lxo3@8lj 6׷o8j. +:Yj; tD Q'w&g1_Gx MH!%r3eΌɌ$ DSR^"FqS5РA'DJ@wGt?:9>o`5]!֊Ʀo%[ eUҳ'G}Tl/>{QK h̀B9|2alqNi@^|T;4Q5Fd IB_`47 > $'6 --$oitnS"aS6*^4-~RtA&hat?5( ?[#7nƠK}5L&FeR 0|V2I, k?[MpU_<~mEJnAe@=BîXM>^Fo(R=ݯZ3M +dkB4xB YR^)Yԧ'PR3Nh// IF Ђy@ &s !sn~gQ#)UK̅JZ!Zyۼ~z򆧿ѭᏆkؗ }y/n* &C۵ynd,_J/Mp)mGVNFɷF9p̚63sFl'V Y~YygE#"zI@Rn),]#e\eCPYU#ݯo_ffYFLhĄ7@ttOWɆLNQ)Ǵ|~WHhۜGSdI$uܙ!9rseձR(4_Brx!$G`5ut&+w #YnK~X~]-pGc͚HSy0S̘L'hF/u/1E_ q#AqÊIBj)uZ P`ڗa V߷h"jYG":_+_Z1$CiU Vl~! @Fh²m[dRYQ>=%>ZGonn~v P?ZTϗH-X67b rQ5``MRbD`t?*y_Aoh)ִ@A^n`nUTrkļ{Ŋ=gKJFvব,U?~mY륎׭kVJmm5_5ߴ=It莃~MUeWZ:Dӎ?  x ܏@QA`zJ f*gkd-dJ%#@2#S )CL$%4Zu?dc@EY~~ 9=Gނ`Z?Dr0͑_T.ϟ/)hY?An}1t-_o]5S=ͬXM>^N*;%'^E]Hhx(s2d٧%?'kz"Txl׼ x)rFNtzْ(臉JW[rwH?U˥fBlMHw?Y!0JÒ9Ljt[~ ^KIC4:D^'PRT(+|,I&[>”N 5_ْD7نaFg4L)1^)--͒CV.DJ祭΁o-^.,)I77nOr+ꄝI^i6#  o Uv}il0)^ .|xzȳygKbdDŻY ~RdeXNYK5p; 鮃H5#1SfNf2_<,em:@NlOLw>Z!ZTчDD;3$+ML\#@5Ԭ4 X߀];$7x1QOv\H7͆N%eS9OHIJѰ| +3 !Y2CdĨ~Vw?ta 8Y2kDGeI卟uۑ& "' и[7#Ԉn),])TD=zx:LnMHf֢+A+y HF-srIY*ٰu45>%)uS![gwY)(밗 {y4нvlوeIue4 _uܙ!Pv^a7rkB nL)ʖ?wXaAM޶BH=o@yiIܹ-p_tUMj@h=1߯zYS!nݺSdQD9|H;K}*O@;$)ɑy ǚ/(@~a|L3cro[`IRZQ==w3llIELx#P[[#VH}]oڱ_@T?HS3{adC=dN~ӷNO GE 'Se΁*#$nTt;7’R ofb'htyCDH64lCɂAL ']Mرe# ~&Օfy;9fVh^={9t۳|g p/Kw@~#r_`k*/-}"I;:+ϤԷOoY0o $(}N=4,: 0b(ˋ>3-ŗC.-9Qs-_@^TGG71) ~ ?&_(VgRJq 6UP?ښٰzl^F4/IWA|iav~y#GwƧhaX+:d-'Y'A?x455ɶ]ɢ&Æ ?&6˲?r.Cb%NNegq&l"-ʊrcLzDے,Uk:scG! Fs{.EU'sJ3j`F;P QÏ9N4_Sey|ھը]֨~O&+30Imb,W\'fv1j_`t>~L@,+>H [oݕ$ߔ#Go9X9 Fo"Uy@w6kr,v6|S⺺Zٴvl\RjkVoUѯɜ%o)H1:s8pgT`Jo8hq܉6;IccSڢ|)-.sɔi3(,.,j󰛟z3hStv*E B`_tw)2jXQ# 7+_ ~ RȐagv~ddsիWO? $Fj_b0(E Gr5"0`*+;n /c\oEp*ԡ~#ؓO.S'Am4[gꜘ!l͜B߷Os$v(@a'BP ?"uvgϕZ`ĨѶmRaXzan=d]v$JQY}Mv:4~/; jt~W4hDC@7x9#K eŒ%5ih^S+u֜4bP9~7F2i9$kFSt H-q&n;eg=--͒c0Lؑd{b Qmeht?7`w쉧拮k̐e`(eXCVj`*1(n@q2tf 9u lw ~Sĝds;XMeFtd TZ^a 7!)I͙nvt QRc60EE t;D%76׿zԱR6Ka؅XV.DΜ-gȎG> K$%#"_T"fqPx^}"Bxn^l5l1[Չ.+=ը.P: 51qdA\W 9E;t)+7_2"C#~P}{S_ Gx 2ԞB ,E_\nX' _Mfk`cro~u 3GOhDώw~W#@5 0N+5] ͋4*VGitDt9]/[M@'c=Hض>9Fp@aQ mܧ͜Uf47TQ$3Gu7oK!{.>}Ge9 ߻t"ɚgOQGЬŭ'`;9Жt$%qd$Il9vHD}nݠ4*b] I=BsĦ5LI9CРA͗cO:M4&[[_ĝd57IFOBXC' 3F@-_/y%\?186FNk┩2z8ٵ}G=St&J%1-ӑ]Mfn@y7f%U xg](-.>}6ܮn1[ 4Yvn$ƞ)<:2o4QSS~Q1#xn]@8xM\h,kVu6.2QQ2c\ɮAsfkpB"wՠvηGgb$ e֜dҴC~K_Ɯy2vDٹeh} h`g@4v2u.:Q͛""׍pxhnj[dK\# $Gw?pN."yL.!GtdN]?j^㉫GNu a)?@jk 遡Gv|!2qTill ynf7q􆟆I=~;RvG7Qٝ(Tt)6ɢ `.4 p<y@>w2Zk(@nv0pРþTG7])0>Ǵ0^gDcclKL54O Uutё'Bed% V];tDhx&:3T6(͑ʊr!|^Oh@=(r qG,,3Clە"uuwa.Z6h #mQcZ]쮖tޭ :΢Uh>6b8Y2N .W~h}>6;g=92/<@kȆ$B>ZVIq l۷_?4_^z$ h@477_I%:a3c$0vt{Fێ9&]lpmOTQ6ǜΞ[F>'"xFmuf!_nǛCSAd=} eW"D3kYR3ť-0_¼9H #mb4K'8YViÿG2^ j$~L$; D֥ qeuz<`t6d͕WX,Yah@B 0hip$i]%p$2GI0rk,,"T^VO[@G;tZ@CJvo> hڽ%K 0߇!.NJq!.! j3Ҭ?`+^S=[Sum?FvWeFa' ['oE}>0JLtKcm'@0rafWj/ L<gs-Oč .hA^ Cy\:y^M4ZEYR[[#ÆzАIP;0 T:xaN!}O /yj1?@XD~z,:aXUYa-ymُI=uA&XzDk>T0=_c"yIe^"ioob&Cjz::ՆGl&@fv#FK(s+FgYbYX.o=OS +_Jӊ7w&6R>LrOLm-FF崀89Λ~35y!@@t?71 nCzȥoنG"@!v #}#]xm~4ZhT .2dp׀3kwׄ/"fN3yc0:3N݀>F@.WY Ӱ*m :ɥ7~oltqco~ :w LF@%+0t;༪_k%+6vqJ锆4 ndHKLh'$3C SCҦiJH& : M ^eyŒekŖCh|[λ\KwϺ{9 (pA߫lQ% 9TC TU.hy@R8e`@ZI34}}$aKbIL L Э0VJ6@09K6·j:GiI1D7jb /Cu5*A`%N\;``;SqPSRbPHv?5O$55~Fu(b@@нF@1<"K,/3rm1'> U_$؋g;O@vZQ~!SڤtX_S* {9,oxH$е Q&J+L) I(kc2mg%LiΓah'} $Q: R(Vha O1Fbt:p'dӾ6xqI)=%HP2/ QdQORJj_I5A.wL|+`4?pF3c݄h KC+3(xiPgV9,=]gͅs8!Qd23}KQ~bT*R@  NF0^2%P]X .ii馢Y.\0ccW"ȰSnxA-P?t  B'_P̣CG*G^% Hɇ#P]rdkE%'7l{}f9-E`nD}߾m8rVQVj/S2 o{3|9>4`H0$p9T1DyB,F&^mFb LMM7 $ACmolkX㸖$!&JI2mkO )P'@79dbIe+WچF_RJ$?epJ|ϱE|M!zN"oWBWٔ`*G#^9 qޖJ`w( fy$@5!F&^ Dy߅6vG? a! ¤P/1@d9C/EUޏs9cocEN# L:gNQ93jY)*W)=WK7w`\ DrvX2   TI!i}$.$sLnu1Z:MkSjȵp='oz^h$Ϧ: <C9G*^ rK~2SQUl H}hw%IVxxqK WjGqv?q|/]U7K:4nʣWFxW5N6"$222Mum,'!nG kK<c5$QI'ls=Rffg$aO.ߗKB4pcUF@ z$_G g[@ؠM#`wWC:ᬅ R3~ Ņyfi. `kWwi2Oz8Z/1 7`|.C_~~Iu3_F W iڳK;ޑx8x}p/j",c9X}oxdt?lr ɡmjRXmlRELqkGchWY^f5`~v?)84cڑaHm9%' ɑ=R$/[TRtcn7=_}uT;WuКOҪVH Z4B;u #`0^4rRտAXjk?H,661pZN9b4AsHI#{ښ趴T-*&5y0NlǞ H0V0:`H]9,HbD57? }:#U:.1]A_ f;~'[f[ͥZÓ>,Y:PUk9{F${dH_[iV?3G?~]s\bܸ}, /u5\0UI[Y]:`$MR%KIe8X(A((<d/έ`tx#Qը -$wC66v Q>d?ϱ* a O!F E2U#H0s$(^uɀښ_Z_U. dz  b|IB?pF34g1%f^* K;]YSh2u0e-X[H gZCKP v uj#zϛ1mi 1-3jb9oߣVH 4tn% ~**x܂+5-͞ Mmfj]S Ŧd% |mX50e=1⛽"O}\ hLr\0#S5xR(G[kKπ.b^A>W#kY,DF0 mdf;gsY'Q0;#A'NJKh$@0$q˚|zΙ7Ct&ՙI  ~&|/l$ B!=pĸ9uٜjn E '|%Bi\;R( 8ԚϜJg?ϖ [RWM-/XbQtG "oАj(.LV,o8 G @?#o}[脏Q`It耹|Y}O@uE$? ȶ I2R4Fk(MX oBޣR\(7,*g^~7cj{~yVڪX_`!@@"xm (_FߍnY JEbѼ8Q~gbâhzXSfJ57b I뱂U:}9q쨙Rgl/ TDvB ~^O`׹G'h&-ͳC٢&m6l < )lQ+5剸TV z /1ywwS),c3L_"P?E0VHQ'wzmn|׌"̌ g_NQIF$@ F##@>ECzR]xazs '3:p$n,φ3CI@j0DW9ƍIu/xZM 2_~fnAA p|_}  7o [nŅH XrXp]Gj$ ȷ ]s %Hة482$ -3A9|'C`;} ]N XƑ/DӂEfKh6en;snߘ# a(C -4@P6 o] e69AEN$J@,' dUObC`ΡH`&D%5x?f;$I+z2_X ,!2'BKéAtRKQMԉf#ņbi9 ͪeIU%B,$v R~`[d<nD jgK #m&_@R Kހi-#,ui5M+珁PRT=O/N,oen(' I'7^$  7 f[ LM]cȱlR|qQݯ zIv_̥G6٥n7@?˓ݴ|S`h3yj*LvIv3eh$9#!ɶu(zM 04Ok/~jӾdM&neh$ nH-AOF%_RSQ]tv-6ޔ_o^LRo} S$=^P=Kfg۾A%IDATCˣF<%溥D+n _+IH 4b`AlrL&i2ذF+n_l_s L L@!nti3,ՑH`8Mӕ?`܈Z_q0>"PifZKɿC8_0SLXK}sC@dP{ PDa =ro;lL]H xA$i hK;FokVfw`.9 zpE`y;WF %< CV%N M=)F$%P?}D#F* `[@ IϢ_T)~~o(>J ڒ@0j79F$#1IK0O˩-@@-=şJ(V4 JZ0rߠ)C W6 H/%/ XKM^Ƚ}6''y- {O (% mn>b% _9N2 f:R]ӤOsY5NYH h})R! }}0NCmX5KH&i6-PRb.{6wF.6O1u =A$xVѷ$p.l'$@`V4 &oQHD?nK>\mQꡒ=*B@l (XW G|{!l \.BG31 m`d@ϡ5zdȂ,rH'4|aHo0`̽ۼ2dK^ LA3s$z<%nG]. I d pr(! x A*Aw}1H>F$ ;$ qZ3=N@<al$@@@9, Aob <9$ L#@4 IuXב GXN$*@w{,wqcм= DKhI}$`1x?Ap??l$@JP24!p AEa<<ş7h˛z0R!˱A 0&p,z1A$($ *Ho&eiqպGF{lu LDH@w@ o.XҦS^wa75~K$@> eH$@>iW0jE:djJjߔ;f.S[PLœCH@xL$Qd\Vyi|{ ]W6  DI@ xB@<7q6zB4Y47U{j O1vhIENDB`ic09ˉPNG  IHDRxziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5@IDATx%Es % HPg$ $ d%/a6缳s3;yf42;{g{C9u)&                                                                                                                        X[Pu ( t>F$gGBqՓ x<`:X<5/73wJJ~ @GhtDIPσhFBF{.%! XhA @ǯ_G.aᓉH!Տ> @5?|Ed_!ὼHhq?M"Fpoa, J$#4|ԘTDhvo`$T!(m8/"Yf8a\6#i(5>ǭȿwX*'q.O$`5 6t@]$nA~0  42Ut '7`,SHE4\ͪH#7ttG]bHe4\H=tW☮\֘O#C 7rj p,%kFkx^|? ud" >iH-AbMH^9oC~ @Gd$@ "'r5 絴_. =^ |E@3 Dɨj-;4m䏡F)d"(x(_HޓC_13_C^ᐉH@0Q(w S?C+aynh@ a C9mAI| `"3qnVGB"Ӣ%ߍ0 :ja$@]%"^@@A}4ߴί6&aCL$@.Y?DfYN/"CD$2 :-1E؛UGPnh@BE p+J@>|e;f0 c/% tF@gtx@?"s}{;66YW56ˢH@g:T=x69(a h#L_/vːP_#+2 H#6dQ#G܊|FC1sS`0 "AHo6C"J3@6$B$=ѳ>&_D>jzY5u30iH B4"O dg2@Ļ )MfJH,4jJgO"(>2;qfzn$L4Ժt"F7]S[>[bSZp F^@>0(N=o!}MۗuA4\}tG?&:"C_Q @D/H@#P@~ @Cx*?ocj:?{8C$ n@^Clcj''x׆DI`9SGUQHhD8u/#^7HTB :JO;jF]0WC@`:ם^A&E50B]c$74֢g/t|Y{_Hc8u0t!&-m`+_`QXQpi60 㛈FJ)I@BǿEg>Ӷf[!L$IdQV~?I%Qu0T![ ' s:ucݬu@;almwh<#Ź7'ut 4fȷu^VEQ5://B! : ΁F: 2h4=tڟ$`sS0 ␀EO@o:mOL!I ;q0 DIAYB@?'t OS7/*% Aii(8@I-02w:")>aH!Py oL)H[:BP|@ Nށ .9p '̨ 8#u!E ހv_£ t'H hCau\4ũo|wڎ:qHlw@ o!4ũh˛ 8O^!N @#~.+D`;R.t=q}ȿ^G#P}F~@]t0`:83C_$@mM/ЍH f4bF"%Y<'{y= :诎K΁@ YD W<,x% @;Z O QX )xGe~ iǐ!PH$)@ǯCq7 T?!@MW< J@?|#P V9r 0tt:%@S<< t~uK9H "qu0Gt/krwF6je~۟H}aluj4J>SAϗڎ x6ԐJEM?Q c|UsH 9aTUVn 4A?f>y[JO&PnC~ @5r]%"^t L2kyH;!ucDu]: rdvjY*sa>וu@# GCJ%  &4lbO!_$+ @={>ו >@?7|DD7b (w ?C+BS Y`@\`!PqdzB: v]+tХmIH3!?cBD#1F:m! @'^Ź15ҷO_W?is1cϾ}-±O?oYtYr9BA[!PgK,u=]OrjXQ KNɓ\\))-ۯCWCC# F ?|y[X58Q#Gmwv&0ޏS^0t!&rCTg<ˍXGtw ds.in1緷B4'JGN5zL0& Ɓ 7SBooa0Gp # 崘ϫfN#PU]-o6Gw%8qeLuĠ[~e媵{J~iq@l>ӆ7HpoEWo u]&ɯZV>[Rņ7}T !9C!2x ~O^jjjښ:]34&MMM) m;ݨ(5'p$<)K`iUuGLHLJwÇ(?@7Wh$3`hNȔ4)(P #3!Yt4'W^|>CMXWx_ z^#y:ѵ|UW^cQFՏ6ișg.#G [S_r崨K H4ܠqqu0G|'op G[(:~̕2xC{TJbR~ܸZNS9NܬbkuICal5R E @!SnڼUbO>x:ϙt g9NAGz舌1uȷ/ !:yyF@T}rջk>L#/_Ѡ>v'vu>㘵8)qyDٕhEҵr PmOhrրW~!_ FfoH#jOk+1o=]aW;nY88+4vfi4\*} lx4Bu{>eD=#8Ç oV=LOMcֆGc S1~v a@%32}wy7o& 7{ґG7R/^rr~*NL&[<spTuupg9E>Ycg 埏=ex,[҈rhBv/,g aƻ(dXL9ލѮ~ ÏZ1۝O}c~LckM6փ:t )9ro`4lȄuw< y>]LrrlJyQ#Gʍ®L$o{wJlPl~7wi܅! 뿲RN9=MwJ|=_u$Ba"_- "ЂwAD>(8cƌSO9zQYqqve6cxR7H#m8tGB7` ($U`GG,ݯu&_xq{ύ9BWC4*'Ǟ|-/_#}.7|C'z9 _Pt%9V(iojp\E7hM0g~LXen~nn.E7x7>!PglƊAئ_05fhČН0kdu_LI7aY}hbƛ%nh1MH:ܐG#})o=y', 7_,nѥ?nCmKwf|E[aMNEɉ'k olyW’}Ɛ>AFNRre$!-=Ctz$K2Jދa@e_;jaéꟐэ\oC rJ6n"oJ;D{Vhoᗦk,ɲ+)u]9twt=찃e(C:|ک'ɱ):nL`L|]_ŻQxء[Y/-+X|G™~qBC9F ~kաyYT(4"%x Օ%o8\UO0N4֬o.zW^_k:/~#~׿vrӭ@t8}9HgwKȔyrf?@C8⼅l̢nf'455F]Ίt~ٲqӖN_'xu'uX鴍֩jkkEh'M߯W?#?hѷIMALx3ǟȇ!#qCalm_`H;<qH+V{:[Λ7S@;[n;f?:uʱ|1ۙv%!ACkVx[y]p6MCW 5,#aVH3[A~Cju ٸv!j菋u#Q#utDܯW1k])djph~erZSNatBj\+D.:&0`@l޲ <K=y:Pwdv8y:z?Ƨ˰I=S ig%gx:`%EGSN۞dgg{n}yWbҫ2mkdN weAP#]wBzzc/俞+tK䫳u9/2O&Jb%u_.:nJ|ӆ^G[oϭ.5Uw[!yh&2Cn,}(6v&?Ьq VZk̞٭<˾slڼZ6rOn'(pA5@ƅ\BɜrW^{J&5TY睳7帚oAXN^+khnhhO|ͭG@JPcSNSd> #ȷq4RMRsw~!x%Hi8]s/v ΊQGnm\>dIU߻LӝQ-X+(@ ~ŕ58a' p))555 yu!ФsL'!Z ;1C߄Oo_p 5k\ 2d5->{?GUGѴReKh377o/. b/:B=dBk!hL?4d}qOqHk2Dpeڏ&Hmu5{SS-oht?$[ V,LݭͫUWϫ 1usJ^ym~x#QTJȔ%K9UΙ=\-+Vh+a8 c1xmo|)ߣ뵙C`ذ]rIlݺ}>5޿Vt}*霳TO>VH5N:F_Bt |whyBFk8eUug_ըs*0oNTQC1u>͋qD;gc]mpZ~:_&_Цek|]-{X4|աka9⋯kIw.*{b{ F |(rr:j!.CdDk-jF[zQѓlx_ɧuQۍV` Cɧ487n&5FBBpSx5ᑟx?xغ 3&>4:iϗoEIP6:%|cg eܽ{<̿o 0K묻ï#`{wM'{t@-={k0F|1GʬY3"ɋu#]e6U=DH&wht?,󫫫o;j14Ukoߣ$Nn5s|S:"S;?VtIF.X2~ٲ8y.L125+oc2 \i y@t}9.cNb{h$B;~(w~>y_+CzrjͿk`ei6HRr?+.zJe1J@ЯF '? LNiiֳ&lknսn3{\_J߾潈1wҳ ֎B4ld'AyIP6;0i+JtOp w/XFSO qhtqÒOG4ؖ]_;UnW2x𠈋HoprCq=IVnQ 2? 4jqIG|XKe7N,!3%] v'M?EԈJ>-lF7 $9ǝ]vhJ[zkM 9dַoQKBhp(n3'M/FAmmwnnelٺ 5 Эh/&-ٲelظI6n"Iw%> 6wkDt̜Ʀ@uW{B @(ěf\|!~ iq?NiK|mc&deÆꥲJ*.Ϥib~?r}^|![[o:_P hgRY?#[ጔ555YBjPY'KLHzl6bի'r/{6ۻc74J:g#(K|j{;9Y][5r$ϓZXwFa ?Wf iyaaչ:mDv%s+h'x!ȳ1Li_\穥C7\+sr-j_=]lH%4 ii$`xIoБkKJjZ/k<;R[\snv:ǟ-Y :9Vjo^;4_0_ƌ!p@Zl[D .;%Yo߽b9#{3`7`cCw IwYĢh> +**04sEL IǢsW?1cFo5n&+wKv6pf>RTTV?{J>_R2xLЎe1uY嗦$]`1k5xܽ*ꊓZs Ϛ#^[^pdӧw Ugh[uDF^J),Л%]M%]yx{={"f}p{ΙJo4⟛5 ϱDŽL#sfl/k=#9yuT@ZԈ:y[Z;y=&pCΫ53.O2@,=WG:$1&~w}>cn_4 fBkH Ϯ^|Ep}3 @g^Ǥ1 y QD$=~ z@|ǽvup'6n܅$@][~xBJ~LR\R@TE@2sDe"h 0j>g-֞^pӤG>֖7 ?]D@,|zoCC?#))i>Ւj7 hpvl;Ӥ`Z$OVV^ /D$?G^ahx_& ;( udgCVۚKk%Iynsd#@sMu>/y/Bl=D$]uWA-wik[4ݶ}[o'MM\wl TB2<ӻwW0 DO@{gcc]I@IIOLˑ $@M y{"O>TWsn26"PTRnWL~4g?_r\|TnERP\.zqn,o_4$PU]-OYMɢ@IDAT%#L$@H̓Z ( $$$- x}"lNmI;&3$/])R|w E \|VX $mҤeO7֍8x=hÑ Px=<dx(4֦)|O .؃UUk,'%KI0XMOm;!'xQ4[ ^O?o$;;0?I e4ۧO f`F;FTW^](ћ@+݈#)Ceʄ!@ >]ksKއVH[jIBt?MՖ-K/>" )/T1 $+sA~ ӝ5HYnlݶC.<9vi?뜝Wdm۫'r^Ӎ^k1[WW'/pijIH 5#W*/mo4LoWXP(>GL$e W,[iiGٲy<˒]E(y lMHC F C`4 o ,+m "Etd~Z0EvE+dkBB&0@~\ojQL). L$`z䷅Lk )TGX~" 6' % $jޑ~l}*Em@K+9X[}2cxn!ʗUTIfN "$rs446ek0 2w^Q 4ep)*)w>Y)':a1 R ڬ 42]'K';܂bg"~uңBҖO3ڨ3֧+6Ȳ5[ p idt?ȲH p8s@FN,Z\Sm+uز3Jg- $ecSݼS>XFS%Fҫe#@6D6()>]% /DgF;}/n|4o#Jh}ӹE-lxo3@8lj 6׷o8j. +:Yj; tD Q'w&g1_Gx MH!%r3eΌɌ$ DSR^"FqS5РA'DJ@wGt?:9>o`5]!֊Ʀo%[ eUҳ'G}Tl/>{QK h̀B9|2alqNi@^|T;4Q5Fd IB_`47 > $'6 --$oitnS"aS6*^4-~RtA&hat?5( ?[#7nƠK}5L&FeR 0|V2I, k?[MpU_<~mEJnAe@=BîXM>^Fo(R=ݯZ3M +dkB4xB YR^)Yԧ'PR3Nh// IF Ђy@ &s !sn~gQ#)UK̅JZ!Zyۼ~z򆧿ѭᏆkؗ }y/n* &C۵ynd,_J/Mp)mGVNFɷF9p̚63sFl'V Y~YygE#"zI@Rn),]#e\eCPYU#ݯo_ffYFLhĄ7@ttOWɆLNQ)Ǵ|~WHhۜGSdI$uܙ!9rseձR(4_Brx!$G`5ut&+w #YnK~X~]-pGc͚HSy0S̘L'hF/u/1E_ q#AqÊIBj)uZ P`ڗa V߷h"jYG":_+_Z1$CiU Vl~! @Fh²m[dRYQ>=%>ZGonn~v P?ZTϗH-X67b rQ5``MRbD`t?*y_Aoh)ִ@A^n`nUTrkļ{Ŋ=gKJFvব,U?~mY륎׭kVJmm5_5ߴ=It莃~MUeWZ:Dӎ?  x ܏@QA`zJ f*gkd-dJ%#@2#S )CL$%4Zu?dc@EY~~ 9=Gނ`Z?Dr0͑_T.ϟ/)hY?An}1t-_o]5S=ͬXM>^N*;%'^E]Hhx(s2d٧%?'kz"Txl׼ x)rFNtzْ(臉JW[rwH?U˥fBlMHw?Y!0JÒ9Ljt[~ ^KIC4:D^'PRT(+|,I&[>”N 5_ْD7نaFg4L)1^)--͒CV.DJ祭΁o-^.,)I77nOr+ꄝI^i6#  o Uv}il0)^ .|xzȳygKbdDŻY ~RdeXNYK5p; 鮃H5#1SfNf2_<,em:@NlOLw>Z!ZTчDD;3$+ML\#@5Ԭ4 X߀];$7x1QOv\H7͆N%eS9OHIJѰ| +3 !Y2CdĨ~Vw?ta 8Y2kDGeI卟uۑ& "' и[7#Ԉn),])TD=zx:LnMHf֢+A+y HF-srIY*ٰu45>%)uS![gwY)(밗 {y4нvlوeIue4 _uܙ!Pv^a7rkB nL)ʖ?wXaAM޶BH=o@yiIܹ-p_tUMj@h=1߯zYS!nݺSdQD9|H;K}*O@;$)ɑy ǚ/(@~a|L3cro[`IRZQ==w3llIELx#P[[#VH}]oڱ_@T?HS3{adC=dN~ӷNO GE 'Se΁*#$nTt;7’R ofb'htyCDH64lCɂAL ']Mرe# ~&Օfy;9fVh^={9t۳|g p/Kw@~#r_`k*/-}"I;:+ϤԷOoY0o $(}N=4,: 0b(ˋ>3-ŗC.-9Qs-_@^TGG71) ~ ?&_(VgRJq 6UP?ښٰzl^F4/IWA|iav~y#GwƧhaX+:d-'Y'A?x455ɶ]ɢ&Æ ?&6˲?r.Cb%NNegq&l"-ʊrcLzDے,Uk:scG! Fs{.EU'sJ3j`F;P QÏ9N4_Sey|ھը]֨~O&+30Imb,W\'fv1j_`t>~L@,+>H [oݕ$ߔ#Go9X9 Fo"Uy@w6kr,v6|S⺺Zٴvl\RjkVoUѯɜ%o)H1:s8pgT`Jo8hq܉6;IccSڢ|)-.sɔi3(,.,j󰛟z3hStv*E B`_tw)2jXQ# 7+_ ~ RȐagv~ddsիWO? $Fj_b0(E Gr5"0`*+;n /c\oEp*ԡ~#ؓO.S'Am4[gꜘ!l͜B߷Os$v(@a'BP ?"uvgϕZ`ĨѶmRaXzan=d]v$JQY}Mv:4~/; jt~W4hDC@7x9#K eŒ%5ih^S+u֜4bP9~7F2i9$kFSt H-q&n;eg=--͒c0Lؑd{b Qmeht?7`w쉧拮k̐e`(eXCVj`*1(n@q2tf 9u lw ~Sĝds;XMeFtd TZ^a 7!)I͙nvt QRc60EE t;D%76׿zԱR6Ka؅XV.DΜ-gȎG> K$%#"_T"fqPx^}"Bxn^l5l1[Չ.+=ը.P: 51qdA\W 9E;t)+7_2"C#~P}{S_ Gx 2ԞB ,E_\nX' _Mfk`cro~u 3GOhDώw~W#@5 0N+5] ͋4*VGitDt9]/[M@'c=Hض>9Fp@aQ mܧ͜Uf47TQ$3Gu7oK!{.>}Ge9 ߻t"ɚgOQGЬŭ'`;9Жt$%qd$Il9vHD}nݠ4*b] I=BsĦ5LI9CРA͗cO:M4&[[_ĝd57IFOBXC' 3F@-_/y%\?186FNk┩2z8ٵ}G=St&J%1-ӑ]Mfn@y7f%U xg](-.>}6ܮn1[ 4Yvn$ƞ)<:2o4QSS~Q1#xn]@8xM\h,kVu6.2QQ2c\ɮAsfkpB"wՠvηGgb$ e֜dҴC~K_Ɯy2vDٹeh} h`g@4v2u.:Q͛""׍pxhnj[dK\# $Gw?pN."yL.!GtdN]?j^㉫GNu a)?@jk 遡Gv|!2qTill ynf7q􆟆I=~;RvG7Qٝ(Tt)6ɢ `.4 p<y@>w2Zk(@nv0pРþTG7])0>Ǵ0^gDcclKL54O Uutё'Bed% V];tDhx&:3T6(͑ʊr!|^Oh@=(r qG,,3Clە"uuwa.Z6h #mQcZ]쮖tޭ :΢Uh>6b8Y2N .W~h}>6;g=92/<@kȆ$B>ZVIq l۷_?4_^z$ h@477_I%:a3c$0vt{Fێ9&]lpmOTQ6ǜΞ[F>'"xFmuf!_nǛCSAd=} eW"D3kYR3ť-0_¼9H #mb4K'8YViÿG2^ j$~L$; D֥ qeuz<`t6d͕WX,Yah@B 0hip$i]%p$2GI0rk,,"T^VO[@G;tZ@CJvo> hڽ%K 0߇!.NJq!.! j3Ҭ?`+^S=[Sum?FvWeFa' ['oE}>0JLtKcm'@0rafWj/ L<gs-Oč .hA^ Cy\:y^M4ZEYR[[#ÆzАIP;0 T:xaN!}O /yj1?@XD~z,:aXUYa-ymُI=uA&XzDk>T0=_c"yIe^"ioob&Cjz::ՆGl&@fv#FK(s+FgYbYX.o=OS +_Jӊ7w&6R>LrOLm-FF崀89Λ~35y!@@t?71 nCzȥoنG"@!v #}#]xm~4ZhT .2dp׀3kwׄ/"fN3yc0:3N݀>F@.WY Ӱ*m :ɥ7~oltqco~ :w LF@%+0t;༪_k%+6vqJ锆4 ndHKLh'$3C SCҦiJH& : M ^eyŒekŖCh|[λ\KwϺ{9 (pA߫lQ% 9TC TU.hy@R8e`@ZI34}}$aKbIL L Э0VJ6@09K6·j:GiI1D7jb /Cu5*A`%N\;``;SqPSRbPHv?5O$55~Fu(b@@нF@1<"K,/3rm1'> U_$؋g;O@vZQ~!SڤtX_S* {9,oxH$е Q&J+L) I(kc2mg%LiΓah'} $Q: R(Vha O1Fbt:p'dӾ6xqI)=%HP2/ QdQORJj_I5A.wL|+`4?pF3c݄h KC+3(xiPgV9,=]gͅs8!Qd23}KQ~bT*R@  NF0^2%P]X .ii馢Y.\0ccW"ȰSnxA-P?t  B'_P̣CG*G^% Hɇ#P]rdkE%'7l{}f9-E`nD}߾m8rVQVj/S2 o{3|9>4`H0$p9T1DyB,F&^mFb LMM7 $ACmolkX㸖$!&JI2mkO )P'@79dbIe+WچF_RJ$?epJ|ϱE|M!zN"oWBWٔ`*G#^9 qޖJ`w( fy$@5!F&^ Dy߅6vG? a! ¤P/1@d9C/EUޏs9cocEN# L:gNQ93jY)*W)=WK7w`\ DrvX2   TI!i}$.$sLnu1Z:MkSjȵp='oz^h$Ϧ: <C9G*^ rK~2SQUl H}hw%IVxxqK WjGqv?q|/]U7K:4nʣWFxW5N6"$222Mum,'!nG kK<c5$QI'ls=Rffg$aO.ߗKB4pcUF@ z$_G g[@ؠM#`wWC:ᬅ R3~ Ņyfi. `kWwi2Oz8Z/1 7`|.C_~~Iu3_F W iڳK;ޑx8x}p/j",c9X}oxdt?lr ɡmjRXmlRELqkGchWY^f5`~v?)84cڑaHm9%' ɑ=R$/[TRtcn7=_}uT;WuКOҪVH Z4B;u #`0^4rRտAXjk?H,661pZN9b4AsHI#{ښ趴T-*&5y0NlǞ H0V0:`H]9,HbD57? }:#U:.1]A_ f;~'[f[ͥZÓ>,Y:PUk9{F${dH_[iV?3G?~]s\bܸ}, /u5\0UI[Y]:`$MR%KIe8X(A((<d/έ`tx#Qը -$wC66v Q>d?ϱ* a O!F E2U#H0s$(^uɀښ_Z_U. dz  b|IB?pF34g1%f^* K;]YSh2u0e-X[H gZCKP v uj#zϛ1mi 1-3jb9oߣVH 4tn% ~**x܂+5-͞ Mmfj]S Ŧd% |mX50e=1⛽"O}\ hLr\0#S5xR(G[kKπ.b^A>W#kY,DF0 mdf;gsY'Q0;#A'NJKh$@0$q˚|zΙ7Ct&ՙI  ~&|/l$ B!=pĸ9uٜjn E '|%Bi\;R( 8ԚϜJg?ϖ [RWM-/XbQtG "oАj(.LV,o8 G @?#o}[脏Q`It耹|Y}O@uE$? ȶ I2R4Fk(MX oBޣR\(7,*g^~7cj{~yVڪX_`!@@"xm (_FߍnY JEbѼ8Q~gbâhzXSfJ57b I뱂U:}9q쨙Rgl/ TDvB ~^O`׹G'h&-ͳC٢&m6l < )lQ+5剸TV z /1ywwS),c3L_"P?E0VHQ'wzmn|׌"̌ g_NQIF$@ F##@>ECzR]xazs '3:p$n,φ3CI@j0DW9ƍIu/xZM 2_~fnAA p|_}  7o [nŅH XrXp]Gj$ ȷ ]s %Hة482$ -3A9|'C`;} ]N XƑ/DӂEfKh6en;snߘ# a(C -4@P6 o] e69AEN$J@,' dUObC`ΡH`&D%5x?f;$I+z2_X ,!2'BKéAtRKQMԉf#ņbi9 ͪeIU%B,$v R~`[d<nD jgK #m&_@R Kހi-#,ui5M+珁PRT=O/N,oen(' I'7^$  7 f[ LM]cȱlR|qQݯ zIv_̥G6٥n7@?˓ݴ|S`h3yj*LvIv3eh$9#!ɶu(zM 04Ok/~jӾdM&neh$ nH-AOF%_RSQ]tv-6ޔ_o^LRo} S$=^P=Kfg۾A%IDATCˣF<%溥D+n _+IH 4b`AlrL&i2ذF+n_l_s L L@!nti3,ՑH`8Mӕ?`܈Z_q0>"PifZKɿC8_0SLXK}sC@dP{ PDa =ro;lL]H xA$i hK;FokVfw`.9 zpE`y;WF %< CV%N M=)F$%P?}D#F* `[@ IϢ_T)~~o(>J ڒ@0j79F$#1IK0O˩-@@-=şJ(V4 JZ0rߠ)C W6 H/%/ XKM^Ƚ}6''y- {O (% mn>b% _9N2 f:R]ӤOsY5NYH h})R! }}0NCmX5KH&i6-PRb.{6wF.6O1u =A$xVѷ$p.l'$@`V4 &oQHD?nK>\mQꡒ=*B@l (XW G|{!l \.BG31 m`d@ϡ5zdȂ,rH'4|aHo0`̽ۼ2dK^ LA3s$z<%nG]. I d pr(! x A*Aw}1H>F$ ;$ qZ3=N@<al$@@@9, Aob <9$ L#@4 IuXב GXN$*@w{,wqcм= DKhI}$`1x?Ap??l$@JP24!p AEa<<ş7h˛z0R!˱A 0&p,z1A$($ *Ho&eiqպGF{lu LDH@w@ o.XҦS^wa75~K$@> eH$@>iW0jE:djJjߔ;f.S[PLœCH@xL$Qd\Vyi|{ ]W6  DI@ xB@<7q6zB4Y47U{j O1vhIENDB`ic05ARGBFÀ..P zh LՏ33HW`@`O`Oی`O`O؇`O`Oӂ`Oڂ`O`OZOۈEڀ~Hށg R,܈@dՇW:J߂# ,ȘŃȕDŽƒɈĎɊɿǂ̷ VȷirƀȆÚ*v¼uN1mwBa^Ůǁy,s7':BaȿàX EZuȿ+mBa''[:jQd4LȾ'+ǬȰ°Ȩ'D'(dž'Gt'GmmĀœ' 7UmmoÓm' 5';dmm}jf' >0')Lkmhh' GjH('3]fj)' ?kma7''dm'53\mlR,o}d3&'6''Bhmgxdt)''FR,',Smtdx &KmgA''9nd} qnmm[1'cnmmkJfnmmnlט܃ْؕى؎׋ǀȿi{׆ӫ<̇aDSsqտف?I:LTsմl Xlϥ>TsѴ::mрM{duG_π:>׽ع́:Wlj:;׆:]DŽ:]Ԁ֩: Lmԩ: H:P}: TD:x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5@IDATxU DbD%b#f]`D1 kdQ `@STĈ "b(Afӊ8CUw=efn󫡧[α                                                                                                                                                                                                                                                     jW# ^ E@@ E k&.)n  @  @FwSCjo(}s6[O1E@<%! Pwj ^ǟRB<}eA@<(͇g *u}YI:ݧB@A   P X@4o^U3ŞkjT(Iq[VG@ @ wV#ԚgmSm 3M@@  @T#Ld;Fώ   g* T AoS^ :`ם DW@t-!@@Z`|}v >@@ "pI@ R$v,F}Q{T5Y/B@ P#\@` h"4GN~{D9:@ 0 `!_@sjj}xX@@8`c G@  +i~jקYVݤfdk@-@ LJ@*]1 ²9ݡB{@+@ Ǟ@[mZ4f˴;*;g    8D  V/5 I9S?ܤ67f{@!$8d ja@k)@gX) @,W֦]fAUv! x'@;KzB 0"V?j}TXd  @4(D Q7#v𠻠wB- P`@R[ @@#Pz1Hw臛Նn'@-@ Ǐ@<6^fy/*,   8 U@1R=UlH@ P'u@ hX?Dz;)* _@@ \u@ ۫[oR+̽jP@8PQ&G@24?^O>V̕xbSz J6}@@ y\ @g o`/;{zQ*O B@l '[@ 0WW0OȻ :&; G@ }|@` j{m?f&`g QYٙu  ?T@ wV`#Ԛ2hU4ݥB@~4R" @!@ Ǒ,@*2XF7yꦏڣ*KzA@L(dǶ si3`4e-BF @H(@& @VIo U6Qx;@HR@P . [*jy oR!`F3%A@&@ `p@2b37ͼ7zAv K|.@@  @x4?G?V5Y&e*M$ @("x+%xZOo{,>nRBf] S@<;Y#࿮zVH%d>S6QGK@_@G U6_;wCxUA[ @(D i R/5tLnZœ@V % /ѮU.MnVhP+ H @l4jW&i59j7 Q!`=  PH͋@r(~9 ]VK& 0; cF @,4Id;7z0y'@JP "H@#0z Pr/`<[y@`Cb-kT<$_J=y}*"! g q>X@ oЂ%0_VB@IB#@r/@ ǀ@6࿑zYMGzR!`}2 qL @4EᾦM&` Q! ] fo h~Nv9CnV!`v*. Q#J> @4Gvv?56 b_.C/!" o<'C@T4W;;X4]GUXfl @((4   T&"Dk/WU`8BEH_@vl tæd*0VD3@!C"()JkZGJoR!`F8'j@*Pk x$V=nRxD K옾@ b@b M_5 ,Up}*ȁ PHEu@࿥6;!MjCU` 1 @Gm~Gg& ($ eP(@2Z{r.`^*Ly$ @@c@45j: Q(Q2Q!`Q#@ P1&C@ U;.;fgdW`vO E5{C@ = 鹱 @)#v)iB sjCTX @ :s,ȩ*W4v@nnm1={E@b  @_UVUy R=UD@ |ẅ6_E ^.xJ r  ~@࿁6vxZXUOK A#D| @4Qaf_Y@|z 6, D@N) ^ ajÛ#)kOQ*I@ b}IH^@qڃjߒ5@`S*Lq~D@W 9   *G.FFd@ !j70; @,(0$ Kj ["@z]*䗱# O(j!Y!V-Da*'0Gݬ6DuuV Q#J> &oݰSR)Dc*"T$@"!GB,?DA (uSəwE a#G @*#v`UFxإOV!`^mX@ r H@vZ5 vבT~@C b ǪER9r*,Iq[VGȁK@ Y u:xN@ K;*;f_  f25/F&uQY);BMoTBȖ o|c@ } ֯~/lD3& ('{g e P('@hQ{27W@WK/, @  OO_@ (v B#H v V>aυ@RV~jU(*yBȂ, @< Aj!nQBC  @(p,DM@ɮ(GK=g)gBXǠt$+^Z&ɲY@8 R=Uȶl?@@/OU] `0/*@W^:G(z ?!(}T( |@K@4 gԺ:5DN2z]m^G;F.;Br 9@g iP[J|&S@s;.Egw:Db"@ &4@ WU:{fo @݃jwLIAt࿾^P;2d&oW{L5텎@ P%ȭ;(vm$TeKmx$d($9 A@x5P+^wW_3 r,7Z7*8vY`Ig̈3#e P(K@$4V4Y@*,w+"E hP!vpB#@ *@9  ihVdۦ9 dO`vu0& :{B` 0 `0 Q!@4?FScDh on:NY3|RG{=j~ @`^U$t6Bo`cuI࿚}Tt`;@({MBDE  |{MgzgC  P|DR@$+I!WwP_#Zz' N`"Em ! 0 GtDe^2B6j뵿O= %$D@o> '  @F):`r'^@< N@J)b< #l,`rّDZ@/!@y۝PvSy c׫0x@B4} Q@ v3j0;YDF@d% @oum]X@TX U70ӇHZ@Ta  z`dA| +"@64odes @Jߣj}TXqt8  @4?Z m:G@+m?*aC2[#@4ׯkU,Gǁ"*0[ߢ6Du@ ia&I%5e  P$=zcJ}@$($ j   *W FDD @Оz0%k{dG ) :$@4Md)! P] m*+s-@JP !@4ﮨ ^tD @ G~ wvFG@{YɚL@HZ`ּUm kފ@ byIph_C>vz8"&J@r&`TBE@ }x h\ٿ{|@Nvs   {(j͂1  2;[T |#.]#@o  @P.o8"@L(6As5@SW=Bﺥ'1E VZv L@TKm LBdQ@Y@H],  cu*oD P!4.Qϕ@Pt 3!!|@KX@֣jU*^5@@'wZ_EPȁ "%zڵqə<@Rx@V ^BD4(& jG[! v9jT`@l Pȶ8C o_SkSF@ L6AMh @D(D@APZ Il  'z, r !?@4b|XͮgA@ (d ># $ ho?WO;3@ȕ ZrE(oǖ P[@lsE+5A }| hvjmC@Ȧ$zds ["&^PS xCT!`JtS$3!@ Ǒ,ȩZrڽj4v KTMy}"@*6b (G@jzj痳O! @< } p H,+"E p7QP@r)0_;Um ksF P!@ GJa3VE _ޭ]֕-)q%%j?}u띫T\VvU?Wm[d_ HvzsJ۰2yzR!@&, Kʹ9Fp h"V+5Xz[ĭXn \A^jubo}/7K66C ABSA}KY/@( VZi  Z}r>w/m?G?[WLv6g6mZh(lBoP3Ƽ>c 1‹v}}LhV8 A`ƞ  bA ü²,]}=y)2@jg jYۺeDb?gtOo/ Iʪ(0"A9ā@4?]a RJ= )``O6}Uoi-NZ&/zE7 i} {pzqs Mq%+2A[2ꈍMg~4Sד]qqq5zݺu\DQe8`g 4۲x|>q{z .??˜9A!XoT!kfBt5q hozZ{vʎ…sK.PfIJ*K06`ƍ]&\ecҗ_OOH/#d*, Y섋@`(k&-{gWfÏ>q?L 0,K͚5tj|y5jTwv|jU_'ͺfreQWx ԮB@WÆ \-.[-wI;C<URPBJz.@wbv@84O$%(,,to5ƍ=>ѶxD;Ա~_,ϳf%fC2X.0*ki P֓)uCPjt W7~Ǎ~'wivݥv֮G״{}r9b Bu&G4Mhi@F2cc-%epÝ #;5ߥ.[!_YgPa[ǮB'*͞ݢ v AHR@P@4S;:j^ oxst:wOʕ+}u9'Tٳ纉tRq n qMRD=GEInjZ b}XI4^kT۹5y^Oz͝;/06qߡ?&[bWM|/tJZ M@ h|Im@JpXf镑z pGt~fgqy~2%Q](DȒ-jCTXqt@$(D0 h|Drr[Sk׮jZ˘v(`jtkWe͒\NG7ͼ3zS+\=nRhN:vQ]>CmSݩI1ECp1#uDmH'Jrd(A7uڏs][JjtW 3O?UT)mY"%`զejK2&@B*?Jݤ1zq$Za{_rAIj~ yDww$ojG zu zć@b=$?D5 PoowZݶ?tI@),bA-^ "o= h+3};@ vLl⹃/pqN%Wvgq  &`s,{ZC@({Ggw%=Am%O!0QƦھ\;bi ys5L6DH lո}Hm|cM!󑚝LKjevΞض6t!mX"-PU]ޛ]V-ْ\(DPes(ԸOX0"t2 &#V[5 npD5k+/;C8? @(վԘ(0ֿI@xP@Llvna@Zׯw?9}6jelx$pGQot9CO `A }x.#JvbTz{nV>I}My p @! E/m5R C_|銋cytSvnv;G7A2C/lv4'Me p@Y2^8!Q#Ey ?hEz}F|t]V+ uw6J6>z9XbBPƑ^(U@/؛]'[ԕxb-0mtK gR8mרqCw+.n]BWi?KS^]~'H=Z@ 8気je}}La<:B|=zqn^V; Q @(۳gu0{xfPp-*d.ч) St/<zJr߶6SOtC_YȍܸW{9@J쥯#(wYv:≓~ .{11 ~:Z?~yV NJtIO hzlzkvK?,@ eow`/Xu<&zi?Q^ȏ%# U\p!t{p lPݢ ԓ?S y N`u5N?_Pk]e.% E&iA}ς%`E<&|L"byIʕEnݭ7_*W.mU۝wrM]eM.^lmb'Ίb~[|?׏r0Wyu.X\vن]^3 NpSޗ;<;خRJP֓TxҠŏt)**tY8T_͛f͞2/:zwKl绀M>}zozT! :}(Xzmn]{н]nEg3R_:C 'ͫg&'va{m?~ ?r:vm߮LmiؽSxRO',ԨQY۪ٖn97{\7{V"A/~G~>0(WtYێPknܮ٧;k)QYd[b_.uK,s,q\PP"/;>jܨYLVOכ߿O٬jku[/Do{& Kv* 7~|c6]:HǵQÆa#}uv^lkmp׹S_uAϯ:.m=6'x8q$K춏ͷjh{ ,%_},?G ؜/]ש06hOn(Ɲ\@/*[*v[6Mb%~>SmF?(+Sv`ӦM-ڤqcWjwjk-$ ڜܹ_ܜ9|95:6k2oujްJNNG>];T7O?7O'ā8c˼+M4vG~h<R+|7 ?ir~r%#wܠB\þs/@ ǀB$Osj(CO9nD۰KIGnʠc@IDATeo}4-'y[̛L޽./oO}u6mvt;l.> k.C90ʼntsv>_ +#ܞ{t*wB?}ɸ$uYϟ.P]vsֹ g[︟~->)~ð 8}T_05b*]FS@/6xZhfX~V)oW}x]X[YDXwBcٔ쌉mnhGuÏӚ Se=vX-儲++_s#_:xS7i, =St Gಖ% vYxD쒁#ҀQoN|ߦ2z_O_P$+N.V\2>OvVCT#>ô^{? ~>hWn)~`_rnBF.\ו[[^qJH߻l5d1GVI[hn6;<;41W@63"geSv.6;#qyFv;س< eS[z$~4Ǯzަ3E%1Y 7ϩ1[ ͛7s=֧+*|2q_ <6l0ql&;=أ2h(OE_6|M 5kd^ֶ]t{fs,wTj^fs;m@E z{h֕`)˅$`g_v߫Px B{m~_SkGQ|纇'.[{9G6lbe;IJ.oa7$nMtKů,?h6kN}Fiv/q_跉z!ng{NTbA ZZv=3K Ћe-1tkm-6Kn){~^|nߺgvql"ݛ~|U}w'R`љ@0qtR ɭdgN\se.X+K/tjtW&O -ɿ}wea,2dhh2 'usg-<.l4sω ]'=St&/ԄS|_ΎsܗUV h+WvڶI\&` Ԯm wcs(\}_!8tjDAΫ *& _,=ʻGfwȁ$4~Tz&_/J܏OO y ̟$讇6mv0鯾aH8yr3{Ƽ %1<:zm[_sOlYZvRëWgs>e[;(I 1:ؤG QjW~B^ݺ"@8N a^G45]̌z?fg)_`fC^pWFϾQo-Al]w4"@GP~Hu9.vģڗ'If'VGQV t(Q {.AwO8.!s/'i0T&|@ժUݥ&Lt>>ȭ]x43 C_vN7Qn/kTA'bg& වݙK.pxWg^@L15kJn |0ǩG>QZ~iV(\l&l=Ov͚mYf/qOY9*%Mht? 7q/2-^p-l'uNb. dw?}m4Ì_]3c2@F|l& 7SJ1V/L9Vcڥ6 5a}қMf?M>~"&+*'͛^7m~^rӦMDŎ}KNAl@v@#3;iq C!c>g^eN("Ȳ(%zLY>[jdlQZݳϿ؏?u ,L).;Np7TTtVәo=>wյ7O?&O䂹X-)wv.Bf$Nv29nҟJJ֎ivM~G(@(G c=Ex*pBc"wڬ]?7SpH;Y'>!k˗ة x7{.z7ߏO>M;N4?&@Ԃ%`y)in+aVZܴ~Kb |((W\>pXLUTI|zr ly]R~=wܱ]Ď}*g>\̞hlGz;z qG*Ѫe ݑ7jԾ6xb%_vmM6}p @Zlݨpe3fϷBEV&?=r' h{V8]=HMhQoOQ\\~^Q5N~|O>W1`94j>DknS@J\Q]yݢ-]~$ɫ| l4wO1i@y?Ǚaa=mbn6v[)ݳ9K ǟO4N;wswk|/+YvnEBîfA H{4 pIJfYbe 1`8/Qr}a\hoW+g اyilzh,vG0#jJ*ݖm[/rSux269A3îKmM+#M51G|"@v۶vgL:H*+y!+W])5 yv@4F5hYg7ߺ+ 6y&?>ܕ<_}=YKeYF/ϫ=;MڈpӜŀ;qUV^dF61e*u F|V3fzM%IDnVrwÓ'#51{sڵgV|vwc+ _q>}SN{c]:iu?NNY7\,w0=пeW^?oGwU׻ǟ+ t@6;%I1v+i¶JSB{88 4vV54M6LњniIVmhc?f) c92mZrSOt}nm]V \Y~<=7_z5I*cF9Hl&n,[֜,Y&ɂww]~#ujFykBiygcuxu%%%[tywϮnuz !P7{)]ošj3]aa k~I_ժ7st|0κ$2t9.|p*esO}' k5jvh]7Lv֋@v͚$Xb\Jhd^z=bgx魭Z(Cm[ [ ݎq6W e ̚5= ׳׭ ^UyX@c53fxu;X PafWV{X=;`De ?iQY1Xkf-VZǧ'anǺ%qV@~=?-^lΏk G JR4_Yd; p @l}"VdD+@_ϘSB|Ӧ؞jM)Vi'6;Ƶkmժn/8n;cw˗p[mլY# r @\dmYn}lSp @gKIho7vxJN>kpdl3?K'DnʷRkѢ;TaR.;DW BXP`;^7^+*=T@TX\Ͽk&`(E;@ mh:;ll9f>.o3|mTʛs& PEuըOwX̗Qov۽ˀlN@ YUsϚ3\da=ֻ"H h࿙ڕJFLm2wiooo;qoyޭY&Qdw^S{trm6\n:N*3 e XQ-&Ox]hOsƿ?7d(@ C@6O]@&{H cřբEyi}?}L'vO^'%A״3=k⌀s:,%0wJ 0J)ˈp˗s2ߴy'{ɬu{z^'q4T`m̧ q>/WP  r3g/`e}ς|wWjwW<s6Hʲ 6<*Mnw9ovgzQ_4it^}.mL˯q}e  5M/^::onbpœ"0Ǯ }&T)v3h,Mc4-ѭ]6Zmx,Vm]ܕ=xSOtͶlɲ\ D, ]y5%knd4 A;"GNJ&+B7nN~\#K/$;ᅳ0sz{+|͔vTvm׽۱)mխwwyW%EC. @V^Sµk׵^vdd A>:!MSX58Pmmrڽ|kLI K9ԓN<ժU3;l.+.uQîbmNfAh.1k~sW4ih 6[1V$EJNs\'篎|ggרQtҪU wAI,֭RqDʔow&|+M2$D\|a"/!D&~T?:5xU[" ԭ[ǭ[-% ,L|绁z`5]5 o#\] ^[6m:uu=0:+,^4te ̞=`}娮9k&G2z(\6w,Txx>;͈3{=\niZ-p1]݄Ͽpv }~By+a/Vf,{﵇qS$ڷoh{ /t+V'6@٧G9MrC ._pqJ;cE')ϱ \ﭠl?;: r\)5sN>} ?&&;IJ Tҙڶq{{ =qv7zꖾ^w?H DH ,Xtv%A=2Ks+j*@` ʢ"g(,6_ӺS0,6QuK.K)\NgfF`6s5Z.hviK,UAi7;@8}Fb[Ix,\# < Xd=툕/óhoEj6yȩɚE/rrW;=}~{;/{ۦx9M.g]⏀vqD;S܌?I_}&M͙?;׬ < 6[ͷ~$'`Ys-\Y*ԃe0 p @Vc࿎B?ǂYjժ!}n5h@y{ҫ)x';|+l]kw\3Om'NիWsū8#G,Vg^?G9?.kZ;|G퀬!@}l;CFn=wO4ju7T+``I ?u5X@ הY'( /V4?")Gf9ѹEV&7|8wO=nڵ)pam6+δi;㴓=w{;n]6ݽ e8]sEVjmX6@ p@Gp~7W28Q  tAvr>" ָ٩AYԧ|3%prݎIiVΝjsnŊדݤ/v'u;,y%ǸcZ< ,^?EZ\327\7PRo1эOB}Ufd=OS]N>SY'PNmJqe箻rw!:'K0^{-|y0! b$prM!`Tɓjͭ[t'Ҏ>otqF)]s){C  Z8jL' 9ϫ5L 7JWA8ܳ\5 >.2WS{}tom.fYhР;== zv%q,k'~kGo띛;qђe+o0d7 ro[(eeAy^z5ue!vanҸkղEZg3ݳK cPٻ89z߭4z !B-鈢X("REno@zU("\D 5BHf{mf?g ٝٝg)zkgg<>͜yG=KWWO|1zdɼG\peG`ԾV6oLO3$;Q`T;zj?,2@E2 $ .T<_W):C@/~sWohl2*_Ͽ=;} /=}e?IW]uE|~x2|p$"_ccϗ-^QяP8,{.v*%~'NCZZd񢅩˔@@m{;*m]@(uT㟪ӄJWDZ AXX@)wn}XY'%˯)7V=5.%IuCG?M3gw3_/^}L\ 9ܳH$*-;KJ% B뇠`zĤT?iZdtLʧ*~=xA$#3꫗oJ4y6ы.]⯾ǤsMק})~;PA2@~~3ݩSQY лwAljj,)a"`~lt5uaN.^TyvXʑW\Ox3fŋjHb0I/~ӏLk(ap|['$o,2w]%C::M~A`jPD]B6S4g!`њ+c^PG###߻V!utvk3(z6$u |7K#޴0 'П姞ӟ@?%&MM- _?(-VU + [j.ߚr)L)p챋/M%?jU9kI2:ȄOAnwT0$:F\Cw؝|Ҳxg?~L֞o\AAB {ݧWeǴr0q"4?SS=OE~䁀rۡ(Q+ )KZ<\͖6mjg z;]|?>Lk)`S[,+"`&AttH5SKH2R=P=ҿa8cU+ee"ÂN^ŗ^M:Ɣ ]K%]N0nFiԉԆ1 `)Wߐ,3"ɊYx׋ݣBYuF8sec߿_=UvdҒ㎕O_x^2XݡQF#O@ G<]<r %S8Sp^7t`LJ(:lVݪ'ÖEcupQ |k堃ESšsr\h[oԣ*Uw1j3xyg-+.T զgO1iy|EbJ1> GGElP(3gƇ ֶi_WLz4E>_fN}RmC$莀:SNwn3唔s,m0I vb`;6fzBqmo% 6+)A 5gqw٩,ù/yimy; H$3g]9:?M(Sg.@z.YtIK!ߟ:aP8JUEt) ŠfN5Ft, ;;00KوT |dΜ٩6#长oP\}v8L,"`[!{=W/yV0b4T xCwz{WEM}/GK{+Y.nNQj-<](rAAx) :KK礿^~wI8U@!ۿ)ҟ׬~RRZ&U}7> eeL$9W`qͷm p'ز\ D6=20LGof :Q N!yU N8cDBzk EPbY^Jr@эj is47'hY:S,9ֲԝ$*V>N%W8 =OV]jʪBPrG \~ecla; mDYY^4d㏓ ?7SL}Cw`kvJK[6٩HFN@$@j;ɲR~2I~O$/J G&K/&zihhXVd[nLK"7mDi/ ᧅN>Dc D# '_E!< 7[xX / e$"h/ڢ^O^yˢOş,^0C-wK/>Z +'-pW.M3:-? 1!`n7wƢ#1V7Ṱ.@k0MA }\Y$"p׮#<ݟǶIi֬rݵ_K+V!E 9SsΒ;?r![d,6J?8uIy7Ea&!`w<@z#xUɎܹ3]mKkJW3OQ@/\) pjο{ltlQ[ btXnltTbw~xC 1F ,;a|s1{yr%:T;뤢:Uّ#z@v8sӗۥ87\+KUUӊvXܷnjJ\pJ"iQP8 O@_\Z$pJ,K |붛d/+m; \ٜ/ޜU])+]v圳?Kq 2" G%Q @BGrD ˯!>466Or4o#`~C>XnZdَ$K|MǟTTV'{*[H:=)  !wG0e:\ 3j{{<ȏ/I ". ؤ"9qRb2-\pʔ?sٽgo$ mLC9{:HQ c);.eʴsdx}|rǝI,π]η)z<;ٳgׯE1 ϟ❆]3#XͿxnn?|O<@qU P[u|Gt83^aGOݛx +r5_9sf..S[Q-7l6[h3E5kxvNɑǿr%(?,4^K!<:W+S{ʷֈFBj/^h?G^ L/%y7,]{eh>?~|h4OtoГ| >)@'Mx%hT^c}ì.9=j߼ %'isز(H^`MYE5׮B;jwR~~|mgnqa3Yۢ瓓!P:m^~M;g?sic$0*02V_ jS` h/DfЫsUp衇X%\Sǩ'y\o_ZH$*-. $HjSyHxsHY`.!~a*_Γ4}jJY!My.HD|;͘?085'P(dj%CitKT !@H9W@,?Z-wg;@NI]m7uKS.絾x$G@O+{J{{y'%+|4O'zDa>9;v}XR% y3Ƞަ量?)xyULKO P0c~N>i+\.w|N1GGǤO$0@_@g)Ts>iL_o$Uu6[.?R.!O?2O~+z;oZ;oF9 JrYo+ڞ &?ZoXYU-gq#gxzv؟1_HD ,wONE)ȣ4@IDATG6n.}ŋS@AA̝;'>{L=t9aٸik|>S7~G R2΀*Dw쯥\;P}[SV^)DŽ|tЈcsϲRȶ5ۺz%ڢ<}?XGKJ1P(${٪Va[d;_H^} Ps ?GNXz>zEMS?fΜd.o۸S-s϶[L[vuCd)hii|Lׯ軱$2!pnyHMMj$̍_"sۊvrbRpiUsb1ӻU"Uu2gl3hh z׽e4ejN</0[ygDw9O<%{SvJGO-Gإ( d #+Ti٧D-/[ 5fLnL"[55Lrdj =bjrL.-mr^#`Ѣ~ c*Ƹ%%eFo;tg)̸_RZ&Վ9 M$5k;@?K{L_ymF3U4ca49ݚzc=Kt䨅HC@7[Iݷ[nҍtԉ;n7̏o5;PBYY. G?ۥ{"\(} Z(=JBR K:1?~jQbUW'̔V7q[-lEt8#\=Wވ1ҋ.Yrs1(yZ2?zSO9m 6}}zg!G ,/tP|,YG!w }7shZ :P.g 4/6mhjuYut14[}^U?\ta| Q󎔹s|σ d`țf0-3X8$Wyn/\բ 0Z`dd$> ˘zT|?e1:07N!W[y^V'p攤l)0jAkzEZ[7a?{QZ=9|J?FУ9LHT?QO<?dP=C?W AӮ`溟={;#o!'yڈ?O{uGqf.tc)zȿnVo!X qh7n{J曮4⋝%)az~<ȏ ;w7Dqqx\Ε>*i@DܽFYumgGIа̧"tgćzd3ޠnW%鯍p׮`Σcj>̹fi4REF |yٲHuMWm'!`vePssS쫯"Y*/׻]2Iw 9W 鎁5Q-MfϞ%O=9?u ' bj^ =$Y j媯^.W\%L"_*5?LJJߺ%aꎁt# hiniPf)Oaf3eK@^Q`)&+K Dԓ6$֯CJ`g+h|[7˲t%u ߾E~)a8Ejq R2 Hs̎/x/G tٚ[Nt5>*BLؙkwIE VtIBvs~,=OT[0oz}~ϽDw\ίYfYܹsU#/ |ud'jH@߀GzgjE  `:!"b1ӪR}|Kw[00M(GTi|^K=r醟[{*)/?OS9Ry1O10YtTǁ^@?§zZ^ ''GrC?WܿY*YACU#FAh4r)L)eʨj.Ke2oAw>G`KaQ|8oҿ?駝:{(*!aZVm|]Ȥr RĚFۯ6c#&eru׈kCSy&+g>}SEe?I8\p5֫ (N(W04q`[%%1@ ߬xQzqW "" [dZnWY:!! K?Y8G x/|O&}-.򵫮!jjozoӖy@"jm^?IL&Ʉ>֪ a*&Uѝ$@@ށa4"kD `J#d{!xk]/wu ɳGR @"Y!0&Bp^𩧟 @@ }2M'E  +"YStoTU5W_)~ɱfA@2&7$@#AH$"/؜H4 XM`d$&no#^'@@ wʃH^X@@p@$:"-n G  1qo,wyo" %Bሴt$:H DtL{@`g~e #yyM|N@@ !q;,"@E*00@Eed5222b @ s~\Htx& \)߿ax@@coŤl `Q:,Zq{#@ R&@kq@`*tLEs@`[ RX"U @ mj%;v[ʃ eڤ,DsZ!ǢG@<;! A%R*랇kD"QI\ LYK-;(9S΃@t .iCbX|yP$@"a_vV]D9@tؼ)fp{GSy,a ShnVt.'! S\ o)}}a tgb#VmlZ?;VJGqt8)0/C<.@HPYFDzh'a `.:UD_yCaQ:), `11)j\EN _@ w? {3D@`bnϟ@EL.@+p@_ɟSO?+CN)6D0@XmcI f0yL.ɍ8(kwI|뮽JpŒM?e >`H:dfA>߬[wDmBW~ --m-'C0'͝7oLA)q G@7{xg@P݅!! wߠu2?\*@@Z$+W]~wDOп@0JWÒLY2'@@2$!044_ '?}F$@R-%ޠ/'Y ` 6MQ  k嚫Kt _8@ j(,lք& `eFX D"y7&*Pl@T 4ʏ|@ `֚!.TSzq͊Lz<  ^WAr/ @tظr)N_6l_$x':)# XLJ*J3RY D 0_<ۖ!L.^5?o96XRX$wylZ"e nx$S`|^E |~yjDK !8CK<5N)@`"N{ `;ںz=D+B@uCD1 #VnظEW$027NJY@ tR@`P~EyǥӲ p@pDN% tLJ $&GWސp8줢SV@^@4-[i M\#0::*~W{eͻ8"JSk0߁O@ i:&pᥗ ]N)6D,#; }ς4E Q~.Vhkm|T~W~#V@ voЫVϵ}Y)  *:R%I> `kȈl\ACM عep Z:KN6_e^Wć\A4 `rYۗ$9k2 GLx [%++[=U0JAn4 s @kGZW(266fR"@z?'!LMSs,@ jYy UI ֒5ߟ&WpNiʉ ŲNFbjn @ eQKj_H,@+#@4yKM M]8X HyMZo H$'@@l,*K% ! 0E/ Ս4i x0 !hrK_N?xYd!UOӓ@YCSUpJ,+02?q.%GН]=ǂIq(  1q 0uu'MeWYŬH  v'9 ` 8HL@/X&m٧( ؉8DCuJN6R2 _ sIp@0-;ʆ=js!(9 @Ee$6z)0B#TDOV-ԗѱIm@{%;!aJfLA, (XlTJ*d͆"rT), S% j?VӀKtIs@`?CݴCTI$QG@/Am7>$ XD [ZL/BSJp^ ]f8ȴ#2]\G Hrypx}) `}7 5ϝ&%@+ `Z#f@_ZMk$6:jR@@4wamSB0fB Yu~H\}+nנZ/Ϻ r@tؠ)[˺-hw#,hڦtOG}V]JV`@"cںW>u d|:Pp@]sJv6SkDv௱k!"j@JywNmW> kXlLS(JX\W #3}z>ڱ:S@0ؘV5 7g 8Y'>eGK IEm6V@L ɒJ '@x*XHݲugCa EN `'htDV7̂; `@[U'A' \}r)K0ʎ@T7vO;C`@bX@߁QZ-k7PnyM)!]􂤵͝?.E mmR0p@బP,{*\1'SPv0Pw`HZ:\7И@T JMBL$W⮮oQJgO"#@r;$yyv(e@!@#B"l,*K%@ 4uа_rsoSEө͵@ w~lB `]pi,P.ؘdgsH Lr;)58T@V޸]=U 0Uf: y @ppy@ CygvUV#ёL5@BzMҪFa𨅪P@O ^@!6ɪw BSJHZ IIe+'-  0_ V`(,[v E{\ -Feou,(0wD  1q `>YPցc/0%D !4'TM@ZtX0T :YHz #y<>k @ i2N@/ݴCTLBԺ wNSRpK:)* @CKttdyɞ `15hp'yy|EX. #b @pD w{ 8#`sn%7'%x spnSr@ )w6)ihRr0[Fm  G%;)C'_q6 (Q/noQeUYƲ$++ˮE\  @_m%E+$a9IIe|T! i/~Z `O.Oz,Y4ߞTP`$SydfA KG@': @B5xOy {} A 9ړ2 I:2ϵ@ e"[U/ڨj)|TյrFuJQ@dHFc@& [Jcy+04쓆.)1#j 4UA  }|߶[,`(lQ,*^o6 @*X0 0@kGtSaqxcڻ{e㗼<+M `:"B@(ve!x&%oPrrr:" @d IaYXTH TM‘Jidؘ XJKU"_[vZ0DjTtYL1N'u "`+"L dcQl^*@O [$';J*$/7/9:a=^@@,c @]nv'/˖,n?9uzj? uGB᰺$' #XkČH@7Zvʚ?Q( E"4 ʸƿd `/#$(08w6m]e5I,CjV׷q_^ z? S\{ĎL@_mlN}ډp6+!A zkN̘ڌC}SO$@z ? `C`(,[v E{D%!'zOfM^I@OhĒL@t@`>YPetoC}?9uvKS[I$@.tإ&) `SvIeP$C6-%B qNCI@Ck]JF @j@d㓵v*D HVHdge9FZilWoї"@ #td"LUCV[(-S͂@YudeͨʋbRYר#6d\E2^ @(]^nɞXJ@ߕ`XϨӣkģ#!vεK@ /yi)FFbRZ٠+pbRfHyM8p. \@`ᯇF~H\j[4v"RV$3 hU> ףH pB-SF@_m%E+$̗yԸU 6V+u jQB <\A4 hj뒎^ԩ'q VZ4I9=C^iUgι\5ɘZ_8INmʊ8D JarHۣݽOQ +M4MX7 `1W@ȐPV/UH`&(2@3Ak얦Τ@.c  IEmtȹ,jv[gsI2Ó8CHN 2 9:a? Ujؿh!!|T7@ !XT"rСƿCƿd`@R,nw~lB LSHGw0߰@oԷCB_* zkebW@PrK~~t \RJ#B|@؏W޸]vs d>eev%흉q ptSxI8S9Mmj]Z(e"w;HN_Cٓ' `KGeR(0R@,ܰN[nj$ۊmٱW6 hlu-A3::*5 0 dS{+BFQ.+aܦʾ/>YFGYlTc`V5JvvI_#T5~D t L `o)޼A*ݾ K>F^l(ށ_牳]=j|gCXH$*5 Y#uK@ MzJ@KclSz]=i*1'k7%U&$ E"KԝE0PHj$d l,@+!@z(K(gj -R-ޝ@zF6,{~o0m18Cg3D4 57H`3}p8"v{[wt8\?M_j:o_Y(##li 3Y#CpHESLH@L}Q([6g9zzmS%愓+78,.)j? j-%L 4:V*@wp*^ QVW$.)h]u.Wt$?/ϨK8>71@ tR@q"z:@wEO 9GV*_e=EdOrssQ K Z:RIn ~jk@^(0`~lFS[W|NfZ~%JN6_Ja$@ WMP@om:ii1Ohe76{*#>;1eP+ԲYYY)s: z? @:q%W@`BX,&uRe ewB,vUӭI]ҪaȿQ52 ҿ^ `ْ3 0[7IUYDI{N^ZHi)t'MIeȟafXa5:^~!@tؼ)XC9H`wg5&ʔAYmlY&P8%yI"SnoU,(H]@0u `Ƹ+ @$=dwqOhU g,h ӊ9ƿQUUd֋^ :U@{EjD/Er@4:";Jej6i)=~mο30䑊FsI  }\ HX@7jhzK<@బP,{*he:{%33pug\7 5tp:)%LU  }^ٹmTh$[<^u%>-%5W:zwPqI}KS]lT%@h@]muûPg[CT\"KE?''-znNqqxpdV m3@=;N> =gnrڻ/t,[P] E_ئdgs_Ĉ#Zۤw`Ј@ KC@35jd4ZftĠK]^+k6KZ'f5=Np~"Yo ^@2#@@fܹ* 0-1Vu'zskoHSwK+$'SȈJA|ϰU'Tw(bE-@ 0X/Դ^W$"UCwJ"jhitˌ|ܝ_j[" @tj @0Ewv #>}Q!+մnm@ݽ<r'K-풆vX@ T!"puw lknKt1-t~8m彭sjm$7'BfP: gw2Yƈ.@?#0䮩([6g9⎩xUО{ls65fTcg]O3mjnwٓ' Ah,"fЍ ;tznvYu~H\CΩItɒ,;3ceӝHUM700 g!wt @rަmPB!تs]R 7bӰA<^.A  ` .Y#fBB戛~+H`ck-օ[ 3s;koQ-@X@@omցc#nj1ˎ[,8 ,*@E+@L t Jg{kCiCD6~nt%7:z&ɖ'r. `R\EX #*K 83dS!nJ'/˖,4μnIf"dG V՝Z4@^nsfϚ@EL,W!VklSk5F/*68u}wyXO;}3 ӽj?}URJyM=X fOC@t~Z$Pm{w 9G`p+oo1@'nR&fr;_/mH4Cx/g͌7gB K B)۳Sa爛Ύ=H`[k3[fΠ5eIN U7I:HI|ˎI@ `Z"F@=v '".6dYlr0-;G&qQwOM=qI IS[I zrZ_OB"$@L(0Wv KHt-e`e]Nԣ*@G= @~Wvn"%X|_/0+N|9ĥ2{}@,j =ۤ#N^.G/XhBR*G yR,1LZ%G@`. `Q=@#V& T|R Xq8[g?Gl+ئkIXI+uj1+XU kmF*"#e"X@d԰iK@OW 9#9cȈ@kGt2rm]%ZċdLҌsa@t ~]\(e{vB,A )}j >V| $ `{s䄓N KVVL!mj!5`q 狾OBHNyq4 FQ*+硱eE#jʺF fvv,;n8OTx @ KC޲m^/uUc@+T-cDR^S/ߖKerrrlj^ 05:Y?{YvnUT9gtM =A(J%ٴLqWWɛ RZ("ih+Ң8$G3pa39 Mc @իWwn8w8w$@>&O:9c]\v+_LON? (r:R4q=*z }cM P{Ϝ{Nj|LC___}Uw^͍uo p55f$j;`\(msh MGIM >CC\J|$|{yz0YOKrG=ƛ?yMB $$@d$@$P\Z&zZZ;ET1K ڥ KߐsB]I`zv^63O@hLZ?)% Y$ K i8"= d6uUv(D\]R;"S5\,B$@1o՘Q F 7/p%+eQsg) 8km L$`Ș _Uyt4Za" H. HH-յr&5@ ԀL$+dtb**.W_])f @* pSU*m  1XSW/W.%31873mmhhjC`t; i_ʲ . @B !|L$@(,.G8'm$0#J,Jr%y+mQ'srz/Bv47 @($JIH FGnS[9WXJ`eiIr+;[[n5v@$%ujz7ˌ 9,%EfNkIHP 8M$`.\9i% ;Zn엗21:B"$ ruY[ p_qL$@$@ gB$@w3O=+MwD67wMY[[_f/y xLrMrs/Ȼ$@$@I%@ 8 G o:'<W]G`vzJ^WK4h?ng6G#'I(cRm"d5 MmtH$@#PPX$B8vBtO,vE^}k2?;c@hyfjO?Exgde p $#e$@$`܊ IyeFX5VWW^ߐH5vѐ!qFr`kŅV HL!@$@!ΖzT@֯&0:'IAQL И 6fPxt}PG`T,An% ;Vh=qc- p@~@>c=9\7@)LFrG4?cGKT_wIJ`;γiXH&o$Yu{dko}S.ln&u6lqZ,%iϵL5KIaO|'p''C"6`0$'O=$>zFsr=Xn|t 828. 8ݲR cV+p~{%$@m58;TbYs09sEKIH6%ergݢK˙$ڒ+΋p9Z*W$ʘ nv(7- ,$@#D|G]g J*H*N6F$@8GOKQIXWkr%٦Ùt68(\^Nl+!M?A߅3(*$  r~\J|4dG `E+_LON$iə9; i|kN-a"0",a8_0rl[XHIAΞ{Ni |ۯln\'02>)=CB9D$`1X8&ֶѱ" 8~֊]d61&V !u`*Fept܁L:EO(a"0@,> qPH+ { hL@cL] YZ\0w .\^\i[j= x|z" @Nncg@0Uݰ]4-|2=^[m; ` UTWspA' w_fx=b ?ؾP\s$@$Z{b;M5޷_5XOZ6#cڟmhkʊ *܂;i8ox0/<̨KA%A3HHr >| &09>&j^omEq_uRoliw"-x[V4: 8N=pWZ*;t? 1ys҆32|LGQv邼7di1/6p$8ck[''?W[BA󶶾W^'T?/_<пsϑ @ZɦvdZ`!οuMqT23:{EW0O Ȓcm-ڿ I`yuMv.&pep~ٝ$ipIHɑSQM߶٧ޚoW&ƤINA+rU$e`)h$;›f )hM/.ILn# 8L` ,r_vC|82 @EUKO)si%NPUTJ$;;'~P|essh[sW_߫N[GDXA?ew>%@a dfe}R\8/)S{=*pnfZZ:HCS¶xԌ:`0V [k7{Y"0oFB2 A[EIHRKH})8vB2<; lW.ɷ`q>3ԇFǥoh@}YIim6^+,K6]vP8 8J@/ohn3瞕%wt6K/Un6׽S 3(ބ~pLڛD^'KdtB_2qgv{| @(-?K$@$qysRPThB"fd "@[.^L D?V{Dy ^O5jl "$@$@!.<)GN/zreu}A8`}ffoo°y m/^9îտ @O1H$@"ˠ&J._roػ4@ KHNv(I-5k49t_rOm']\K$@$@FCrCg$'7(i, B ;g,(3$zx9"h1۶CjC$@$%ergCa4 x@>Dm &{f*Ln#? 8L` 0q_vG ȐΣRU['WpM}$'05cG`tbJFUf-H#pX3M!YRÕ @n^L&Ƒ& gw$@$@'PYS+}  Z+@koPWN`>F,"X~80ːpf FzY\YYr'%?\`@hQ?N?YӽY.]nn:vPp, ܐs]^Wefj(i ǟ%#A&+" MXdFh&H ($'#5yWw-؋d.C&=+e?eNĔtb" pN@ґA o~>9Ï="Pᣡn!Q5ڿFd DB_rgvH) )&IG Ջߗ!9z~/(ZK˥ R:=riv[g\yό1kpgƒ>(EHH ^ 򭗾!]/6D&s 1mNX -Oƺj: }ߟY5_Fg'uHg6 M@X `[WejbxVs<p:$mMRSQ~pa'W4? ovI)%@ x8 ll׿eu?0~56˙sIEuRG ugG`3%u*}/{Y+Aaup%p$(l'f7:Lf |Xf&IL$K@WmkܜK\D&H߂i]cxc+>zg{fo$}`P"q T0 1 \X(!F ImC :,Ϲ<#).)pQx@` ':Z$7G}WV-k˜)yxp$p 2pDOǑ 0@2vU`tho"RT\"3kxiz[IYTTUҒpG|3% ';UBнWo{۬ͷjR9EsH %gJQ7߀ XT+H$N #Cْ޽O P]W/٘˅YL+geqW~S3sr6){N KLSI !gFeȟ,~ i% @2vT&D,,.piՁ4CPj!K{/EakW~G&oH+(9o7p= Oq'0CQA7םF<=m%` GEE  +ǖ"o_@lpd QW%(d"7 U  4{"@EǐŊH o 873-zb@~[E<9q[\+H!8$Pv& 5PK);y٘븵 ̾v7[}wI{7O߁0 1^d Ho3%@*]" uE..-%cާn P'VVydShTW#uVqw@f罱M u+z18Ki@ PH#tw @/@lѸm'R"N =w^W0K i@=:Pnoo;$ZnN{ST1 뽲b գ) p;wy $@IK֑!ry`{$%Nkn Xp$%BNMCD#[`@dI@rik"qvG^uMWN˽\58<^txW(j,D!$Pw>3Gƻ>%w}m }zZC :ƴOQVY%%eï H8?ϯS7^PL ?N4p/|N>H(~5"6>;[ 8-( 5?;#c 2d. X[(zj &A9*9>li|ieZ^L\=[-& (Q'>zL 䫏{E?HYU)*F@8Lf=:U5uGAzg_t,3v ';$'z|ޫ’\mjڙ]eZHH M( B on ȇ!2vH$N`w\+KKֶ {ՙd2@VVTI^8f@)sv,r, lw[OIwWPp za8/9+;#CP0di&DM/A2PsBw APzL#H`]LЭ M) $F*Hk3qUldbRFus(nJ`98]g "0 @=,2E0q1"lQGS 0"3I@箴B**677H VQ(/-P GQ.Sp՜^5OpU4\F&@A~B`k3rm}$lnvǧgOKn^uu~G ʖ dd~~Vnxp iv?.ȲH&gfm`f5 %o?h N͂YafG"V@ڒq+ˢ2$0Yx;סXec}͚SǍHanj"vO-A% ÊwW$UW&`⬹f]x#ȌD)!f`w+VL .?33V…E8'Ѩle~r"K{sT4M#"h뽢1QH),{cq?YN!DB)wI L YB Tc2@n^$Px!H` [8,%>i{3K]=XAph9)J_g>0hz Y0$y 80E%=wvɘsWRV.U( 5X{ntG67#6%SH W/|Zd"xh @~Bp+ F4` Kvn(p:?# ABX1ô. V6 k (8^8tgvH!@#a@XF`"H{H.Sם[A#L]*-aBrZ1LLYGLoؓ0c=#( X7 " dm!x xA1S2=17ɅXN%> n*8,@ɼlqR(F#Mu!I Qpd98W鍝 Pix |6 ?Lo#`|ds:20V@ `2! ,.-ñ5֖5)D:pԟn`GohTF&,ӝ(I$-> 8-A)ӉOװ!h7 |6T"&0]K 26<$l^槁 ;' ۮ@mU4dZ̬&<_@JkhpH Y($$ۉDUCx C.&4H29>f3_X\,YY G- m[Xݡ)Zh:Lh? A&@`o6 k.cJpN"@ ]ٯE"@?D=K42I q3/ VW$pZ6]P \L@UրyQ1 )U.oǒ2vYc? P؟ͻz#3"$@JyQ!{ 魛\Hbs32 l qlФX dHmC 07gouSQ.@FakcG`ѥY[߰׀jQH A8;Io Xt~^ɟE}RWGcH&pXV:s=WS Gs[@2` ]qyt)M- xm͒Kӯo#%iwɬW_])uL PףHRH+RMO+V| u[a H-"N `(d>7@V յo NCdrUrsxݧPb'ڧ&4ܧ o $$d3%`^@ˏ 'F UPb;puKܬK$t5Km}D[@% uC@O1GMrҷ([/k :l9    g&Y6A  n}m }zZCwo0RJ+!KdS_ƥ>%C:"I׍4S|NȽUz_=o]$@)'@ A l# !3h56Y!@Mz0بEϜg2@o5H`&HC`aOvI[sU|j \Gsplg5 [&8VsDyFWGs H"n "262$kkRT\"|{; # 1յu5Y[YI%Qj/=}C2:1ikz&-A-}?f6+ $DNA/B_NOp@OFm@ svoN&\ʒZ/(VDSήP[U!5&`t:Oa?SK$~zV_lƲ x/Ϊ`K3x|0n"gbAĦ''dnfA{Sj-@U$3W 4Sj*˱翖fvkVNqHD@0 @ Կf"3 trв}P[228`K`fn-sWZ^!GAnnl$xX(=O'XW-|?j!3~A!@ =k @A~Bl3rggS$p w!Λe؎=Ap#5  m* qX6dfD.]70nejkR3?35>'>8Ͽ #Z/cJ?=;]3GF:u$&._N;Nmj}"^nn|_oq\֖Y @Ohi d6j'lf%  `e$]72tN {l sac@{PK TAXg%jùWo]$@ @@#M"@!|mBfdCq{O.YB5u[GmCl!sqٴN"=rw@4S|8D?OqF 8/r_ LH >֧5H`05=U?lѡAq&4-hrel0޸ǛW}d 쐜Kۧqe~G$2#e @~B:c) M5\+P`ZfKNПzAlP@G_^3#0<>!c*V8/WʢdQzجj$@dv?!5Xt PHE?ybloE LfиߡA"֜5;{zЈN7x &22qn>?a> 8DnC"@D"}OHK\O@jhueEFE/(,#̎PTR s[ ic xA_0ؼUK{Sv&[Z? VmV"pGq3æbp? #udfdzb\ 1|h\+H!8V=@S}B`G@]闹Mj>{xy*zV^^8[`E G Pp7;sS> FGL?dCD e6ԱRgVVpښe^;K.wʪ|^KW&#jOpm$@#gn%qr?Vi;òhLCqTy& hǮIc>ؚԍ͈\M[\IEz)+f(Ϫ$@i"@ M٭{ @x}ݽVҲtr}ʙ&1VcS1kp$eddΖ&) GQ}p?e $H'nH'}JЏmqidrg*X{u $0=^5c(;[|Qc"LBpc-ϋ"K;?ov/H<tl̛3ZQ!5;@7QDnnfZ$0?\'2'}ư P\c@(P?{,zߺ/H$@iN0 @#"k@zNwq??9:+[O- (ĎmbzVzn;I!.N:*0"0ZOڬD$*\54ƍ }MzZ^\! ֊Pm>&d`d,,u,eKuڬD$:\7%4ȭ #B d=5ɇ(kҷ-sRX\,Ys m щolmÇŢ&a8|o/ItLA8C4H:dVp|!߫w=_^j{ru {τ>ejvnB'ʲiojY7#.8= P0oh @F~Bg`Nr ̢ hݨ4?;#c摁6:YiooX/.ݻKRj-Û-??o)$0#FDy=W5H r )!Y[[b $Mn3湅._U=q)ZxQGMߒW@8H7 Iayᰬ,\ '鬬,i?z\8`V `~$+D'pۚ0Κ,~ | Irti !at'{v @NAX pր4&mhkֲ.dddȑ&шLCK?k6+ E[.kl Ŷ?|!M8l8`$pp>;,.>b?S|tq󗟗_E%/~ οc" >dyv_@IDAT)ތ1U(3.a˗\1t{ 2; zdg[}5 V]w#0z= oh\F""g!izd `2'Gz"ʲ A2~&gg`:2-`p9r1$Ɛ9w%YHP 8m]>5fMmֆBrS07g97FXY^ѡ2pA! wx, MȘĽѝ?*3~?h> L9 Hn !1:cFħF R3C990+e\sV|\+P#q~wc?1.Rk]h1&G1 O>~?!5XAo-8nyC^[(Ȧ,/)L&Fy#5FS Eڊʥ=UB>E:(*GM "۩D"@D &i-HFFWV[[e+&4ʊ [ZPXĥI@?rWֱń)>ϿQKG>.  ]D" tIzGSn![,j$0{$s7;=%.,=)9.[o#ΣmRT*˿I@矁B$@p+ ~M. `"aǑm`^n5!@բRΛ__cܥ[9uorVuXA0%F\h1A}JrsUrso@e! ; ;{p${J\`MI V`XV յV@yf]4F~.DZ! eH^>N&2^fZOLdE`-[YH(x~9@ @XE<0 Pbxb{aAm3{FQYPX\,YYG~(OH0x􍿾t>ҋ6 P$sI42v8v5YUTJiy,-,.+g2*ȡÇAH Cc2827V) ѽLZUH|Ce}3 D_W1&dcegx9 ܥb ) X[V{I[i!zDz"lATDgEz;9[YHW(j9X/0 /0]w9 2i t$PϘuI^[]1 m@$ ÃފJJwwPW߀L1:~ 2imw ڽo* N< A" _1qNaGL# pR@~A͉/g22; IAtEL4D_\{'*dPpmH#@s{Du/B {hxJ݁Kml[v<=  &`K{ey/^zѷL 6j6[`E _i砽F"Db\g36F7'UQj@ (XNd.5+H^XTewLw^ cJVu4IYqeYl__YIH`?{$`/C @n5|LM BAk@'KƼO#>?;#c؝EuHdkwFHUu?D$@PH C4,8r{52'%d ָeu|b޴zk+"c#C \cbFM~b{ %;Z%/7'-{Ey8_X8 4FRE" |s[jyP[N \33b@,Itow٘(C B_Its55+NtI6c2"0ZVmV" [P$%_T11!H`/B`2n阞iK "OH0~o-ޟ|7,x]<F$@p~C$`"|!t j*)+j7T:#x %:;v 2S rY2oֳpJ$@"k$Av!S^3rȐ)PW5H(;Aw'FEԕ~In_#,/)߉ZIhpUg" 4l `b=2 c{R!`ssCVM@c;CX]Yi ;X7 ӳq#+TKKC[$% .J$ MLx|A"@D`!䇑bI[ݡdQ-E%V@6d.A3,A(loo>_v~kf찻YGhUIH`OD$}"_):M/_hu XKƼO 835)zC0:Va\+˫kރPT/U)/ݿhfKg;{'8 @ tA'ιȢMY]Y[Q+&PǪEZ;R:ީ\1M x'$I;ZE1"Zlf% WEIX !x[W:@ s˚%+:4>@^InY&zEW0G@cUko|<H 8pKlHb @ H,B~"`s^ø5H`XMvǑ.يl"Ir13؈u$%oa`aiY`"YSxErsr 268_# pH0DA58c xsMd=JJeqa^"͛#ᇉt{`5EFGZO03 ]-,dJG2"0ZOڬD$@6 P H l!!o0ޓ~Ac4MO(;Gj} O 8;=%.,P(qSa˕cp"~k\Esp{m$@$`XD"fzI4S+U5u$*l&"\GF"k^cI)]hf@qaX6[+P *p'IHAA} X hA.!eaxUmea~V\K162$XsjJJ38,Ӧ r:_M rQl;Q8Kj $$@d$'V?!%[ci:V/sb-loGiq&Gy *=9)`ۄӸkLZcN;$$Y8 ’dlH >$@7 @Q|O#N]6^Z^)"zPctG˃:%1_#3OF+=U8qnrCu̝Ʒ,GO/"xgRR!%Wښꥬ펲 oIH m|.m1 Vb5_`,rΕָXe}mMVWV>}G>Ɔ.p[Wol=L>#mRRX_E%~^' 7m   | ׍<0{33GܜD[i elWХRXY]+)>YrEyUdiCDB$@n#@m3B{Hp֑! rÇt~vg ԭ4d.?51&sP,Y@*@_(`0 ;Z%7ק[щӷ\$@$\34E" kd$q $(=򫤬\+dyiA6\cdp@n`>ҕR! 5D2C 7;rC'D'g?S%H\I+F7@F~Bg0V/o!k/-2VatEL IO؎d S30ll\]u?S?:53m  Pp5{"0@C^A~荥~ַ Au%^f2VDFV@gd 㢙)~Oi?&{ Xj 8Gs D x涀|x9}k ? 2񖰢:^ @kh\^Zѡ A,@ TH{scsA<7_o,-$=# x@0~ӆ.(G8g)w[np[@8;paq=y5 }l@ oPSm'ۯ*O͡Ai_A?v?vC$@   ;`D g Ieu%`c]>2J`c}  %VT%z>шLR ?I{- pg$@ `[>o;MC޳5Hӣte4KNnjv"rrGV&q>75HEiq,0[8kpw揆#  ~q\H""g!yzd` |$ oR[([ {B2b8DՕe+ރ~Hf#olʥ=OdddQ+. W"p_y"  P0hh* xD.8C#!)$Q^Yem XĀk[ ,/[A3__c`dx5|WtS|2X{sc|ֺ4#99R(!r{et 735)EE NXGн?ʭ%qCrUr;H:)8A$S|:6 D ȏ#b3fBJeM|}m5XU676='NXy Hq? 9ٖ g51:Pk=#p] @J PH)^6N$7_ghX"%.{$T[A4HFqg2@>j@;)`lrZz߂qR\M EϞg2v`[ *z h-_E@79ڭ5 x@J8*,H D_WV6%j &w{ʺA,Z.;n&p q@!l w@t?S|CA9*9١*o5 x/.F>&`"_A/Wd}qAQT5ƺ.3@3" PNlFwdS|rs,?6@M}F" (8kH &8S Q8PngffJeu%,IKSDڙfX.*. Q,tZe` Fs$o== Du/Bx~9s(͓ELf(.)ԕIgKh &j~?IL&AL=N$W2**"O\UX#9&=]]H>2`RL~iQ:ߌ% ;{~K$@ qf $ '[SD@ˍaO+dRD9ͶwJmS cĀJj*b("{Pp?}^&  L5J$p+#4d( XS(g='յfnm7x2%2rl$@$2b|B>pec5m73$Z\nmEf ;>cH~2gM`5_#3 >$@'!`K *T~t/;'A( [Gs5ҿFgM`5-" xxpR9$ {-ۨo"k@ =槟zFK`m YrMy1g{p/./ Ps$@wE9.?" &GcgJ 4x$4C!9 ?';jpR%  p ɳGIRF[ v8 hnH5.FdiQ3>9rEYYwm\O%% ? ?6J$/WVό74x鹬|VV@<| :gEa8@L | 5۷l#dE ? ?2H$`_ _}#e-/.Z64jO #86PO $0=sor/+)FѨL j2m-" ]I$@ȃ;;;:73} YԄEv||JCuE4xlfo]{e$@$`(0th6 `1EgUiHjYo]U['y,-W4VK}M]\x!f}p?s $ C@$@6`5C䟴QU\H %=]Wdυy$8t萴6IyI&չs]'  ޘGH M ]1r}L`I&0/W.ed7G ;ZE1&0--" x9t `[G%=QdFJkZ[ = V{ڹ߶hcR)ub\i8}  pgc"H 8Y&XKdr|q Ȃ"١&,kܷ1lZK$@"ZC$`0jO`$l (ZHr{7o- IM]{anVv$xy @yi77dU_(o!$@$8H![  `5/OT\O`ssC._Q%w\j 8 @2MT2(  V`59LУ*jDtK:^\TW#uՕ"` RG2 W*$ `5@)T }]-7-I CI[S8nؓ*Y7HH&@ alH$j부N,[Aggdl MRwc n4H$-FN& l $pc:镱u@ +$+&-YrEywWb%0_ˑ 'ٱ& $VQzd[\rIFa+g_G@?_5& K%z$@$d{ېߋ<\dx)y㒛%itGڄBx_B''ĐIH n\72V  j&;H}o ; 8}׻dgL]˕m͒] ^8 $@$@6PUHH)C_|©>Oj Ջevz*uioiÈdKp?&   Pv8# x H ˨Aϲ#k-$pۧAM XQZ" G1&oQcV$ HK+ s;=@tkK]TvʶMZP[U! 5UhQ7`_L$@$@i$ iϮIH 8?ȣeYwʒ#'G>)wsk' lO "k @p@H pVhHy]N+sdnܸ!}=uܾ@55Hiqa֥wIHL%H$@{ ni@d5zLO{`4{@Fali0n{Q.K c1HOA$chy,r0E' 趀Z/( F,ݭA23XGqL 98m$@$@)!)FIHyX P^Yc0y:%`WtW9" uo'hUIHRD@Y H@0y\p^=076 7'[5K+0l:j8%-" @J p @Jq ptc[Gs& 4$`($5 ěic1nPgL |5v H$@$r\rHGNw X`$!._1Ot BhnCdQWonIH!B`f'$@$/g Oc{M&] p߃˩GNKvNN2][eH?Wt$@$Nf?$@$fX P~i6'u_n{@}u}U}/<';(PZJmP TQ*h2t7иa4ƈqEeA2f2폙Ef ͘h`< $vSn{~}x}{=s>ss~8z(|(a @Xh@&%SsR뚮3Z'x|&eZ(*;zx.5=_AEMG®QN ޑMO֤[0KpvelP#6 &sUkϾw"ed/l4Z@@O  0;d^'JjEgnYwcu=wץKǰ3vyj򃫲㿣gSsm&|  @`6)  0ZlxSzpJR?>ZZ^V6ZN @~X^Uʅ)~ofܣ-$wV~!0 KwTxI|L+!@V \S0@K+פ5ִ0 g~뫇,yiWk8og+ֻ2V;;= @ d{I`Sft'N`llw.|aM~m8gΜjŲ}c}nq%7g(4  г@SETLoy]u_(;{QzЁUy䟣g/%o * @@m<!3+SS-xT~o}hf}(kIY|,E}U  @rZ0B @@r[-orq)6 MѿyWKXZ͛??<\m<{ AWd)zI{ItD@@GZ@V/e'n{(:z^{NN L^97oOx  IvA @`tx0-_2tr?ʎ]R-sl8&e̙3Zj={]F7L&@2&x$lilLv̀6g;n]_yՖIn Qܹ;WG,?Zni/DW&7:J @,̘L@N5=}mSO>uG.Oxlo`X*% 8zXk3/ 2 0 pNjʭIi6m$p]w-&3`㕷IϛiS3`f՜M]Е'"lWRNnHus =Wݲ_ҙft_= ޙ=_AEh0~Hf \?)-򾔇{ݞxVn/x){jaudM_2>2)  =s @1;,,8Z 9"ceK} BUO> @ XǛ P,~\Rnp@`˖-ꕇVcc-fd!|4/u  @@и!atO \Ndʆ /Y`Sjg?  Y};;'@@3 ,=/ <o\\o1zv&>*$@/@H6ڔS~[ Yl%)Ow݁"}݃,:I@@FS, PKd,M'oeGԩgO?FDY Г T"@H6]9̔S~MgP<,. @2$r@j\f<1{{&?Wh  @@Q6 ,th}4BӟHle? 5]q @@# :-߈g|)E&{K P[#@. $6bʅ)s|,pB0\o @ $`q*}!=3\ 5x>TkLk @`Vfŧ2@ޔ־|x-<( @p @kV` 6T4ecQ=uÏ^ @`2oE 0kdܜrA) ܔט  l?'@U e)o3'No&y+ Oj"ҕr[ʚtinhlLs$@-p @ UH Mp]"?:)0i_ϻgOjMh  @XJ9 C|>zA >@w\xDaC\h&_aGA:"`#-L@%ϥ|06)^7A:/Pt~$ @ d!4qMQnjZS;2:$ v`H@6 QrIJw8?  m0|K"l*eܝxN. ~ @ $\̔S`Süil0ɵEMФW 0d,e/M(eh9gh: @X @@]6 , wg; `7H  @@'r[OhyR)O4$详e n @d^ @X]rΠ:ه Ϧoˠ @M4b!@}B[r+SY, 3/O1p @p 4F(-qJ|ʦlL3H4N@@L  @h :-MGzx2힕Ѿk @ ڈ(lRĔ S2Vu*W> @@U[@X S )q+$`|IDATt/rg ` 0 ,)տ|yͪyΜESԻ>9_Mq  @)0  @ 䶀r?~3)̉NSm*uD; @^vu!@:&l ꔓGxhN;sߓe @`2ft @`9rA)e&G/ `.^%@f!lR2;tL&[vT @@ozsS@Ni< eL˹ @`nK @/䶀)H«-k?  @2b @ ,]rZ9 |{f&ז @d ֕  @m p{~\r^[6o)] @ @mXt% @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @f'Ο+.POFIENDB`ic11#PNG  IHDR szzziCCPICC Profile(}M+DQfY,nVcFICb͝;oʌ۝+dcl%6|6Z)EJ>x)Os9pyuӜ-C6g[pP* FF#H|zCםJQH (7Ln]MJW8^›XHLX32zB^kd,~[ۛ7x-#La C}Ij͙KL:ckDR>w_{To4ޕjmP 'n酒[+#+ʧyP8P8,}jqx 3g8[5\IDATX VkLWQZJZ@)X&ssMۜf3s`8=K6?,{df-[Sa> (PPhK[vn-/;=sws _j!*  7= L4$iIܿ޷&/)ȷ(Jz4=Li%Ìu-o I%a3sN5Dd; f1I? "J#Hoy % 17AOo'bb($(ЮzH+;HvP>7#%%1-:] XTaI '-jHzjg%gHQ'J>/: ;Ea: EChkkLukV*4B^nnl""^Z],: |;5GIE+ (}yB*hWP+cE+Qp.]ř36?jfSQnz N"p8 فv_o7~V6lxjuOU;hll l{y+8XE$Q\\)sW߀Ǚt5wLEB5XP( B?KhimCm]=|^>|>L!Vlid#VCI]ߙM7w\kvfRS08dEBζ*B|FZ&wG53])+RrwחzhR?x\B.bLfą̌{`",&܁@9?F载sB]Z "`k '+kGNEMô3[)(ȿ(\3UUS+PBGĹ?Xbcw&!:&K3Z'*L`T"I4v{\ll!Y>7c?VJTۙR>9v@"IT:juϡWXa8=>?˳@H<M@$O]KӥCކa1nzy(ˁL*c_ =`vŰB umMk/@(CE(ƁALmK A9 ׉QGɩ%:R $ Q~G$-)tZv W[~̃Veqv"OoA*\6."qLvYz'WBTMtyt눍C,v?NmX"SoՑ'j,ilILD$UڻwAIr^V&<^l!?YHL$DMIɫӗe؊=n7D:88Vxh*dj w8پD$Iyh>_N"A؉1Ld #M͞fcl|ҪH8x Ûi[L߇.=JJJNRs.~ݑ?0H#ҽ"m.{X޶qNJbBpHGr2TK-sHX]/j0xL IENDB`info bplist00X$versionX$objectsY$archiverT$topU$null WNS.keysZNS.objectsV$class TnameTiconZ$classnameX$classes\NSDictionaryXNSObject_NSKeyedArchiverTroot#-27=CJR]dfhjlnsx}vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Sources/000077500000000000000000000000001461511344300266645ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Sources/AppDelegate.h000066400000000000000000000041721461511344300312140ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import @interface AppDelegate : NSObject @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Sources/AppDelegate.m000066400000000000000000000045201461511344300312160ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "AppDelegate.h" @implementation AppDelegate - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { } - (void)applicationWillTerminate:(NSNotification *)aNotification { } - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender { return YES; } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Sources/ViewController.h000066400000000000000000000041601461511344300320140ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import @interface ViewController : NSViewController @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Sources/ViewController.m000066400000000000000000000112271461511344300320230ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "ViewController.h" #import #import "public.sdk/source/vst/auv3wrapper/Shared/AUv3AudioEngine.h" #import "public.sdk/source/vst/auv3wrapper/Shared/AUv3Wrapper.h" @class AUv3WrapperViewController; @interface ViewController () { AUv3AudioEngine* audioEngine; // Container for the custom view. AUv3WrapperViewController* auV3ViewController; } @property IBOutlet NSView *containerView; @end @implementation ViewController //------------------------------------------------------------------------ - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self embedPlugInView]; AudioComponentDescription desc; desc.componentType = kAUcomponentType; desc.componentSubType = kAUcomponentSubType; desc.componentManufacturer = kAUcomponentManufacturer; desc.componentFlags = kAUcomponentFlags; desc.componentFlagsMask = kAUcomponentFlagsMask; [AUAudioUnit registerSubclass: AUv3Wrapper.class asComponentDescription:desc name:@"Local AUv3" version: UINT32_MAX]; audioEngine = [[AUv3AudioEngine alloc] initWithComponentType:desc.componentType]; [audioEngine loadAudioUnitWithComponentDescription:desc completion:^{ auV3ViewController.audioUnit = (AUv3Wrapper*)audioEngine.currentAudioUnit; [audioEngine startStop]; }]; } //------------------------------------------------------------------------ - (void)embedPlugInView { NSURL *builtInPlugInURL = [[NSBundle mainBundle] builtInPlugInsURL]; NSURL *pluginURL = [builtInPlugInURL URLByAppendingPathComponent: @"vst3plugin.appex"]; NSBundle *appExtensionBundle = [NSBundle bundleWithURL: pluginURL]; auV3ViewController = [[AUv3WrapperViewController alloc] initWithNibName: @"AUv3WrapperViewController" bundle: appExtensionBundle]; // Present the view controller's view. NSView *view = auV3ViewController.view; view.frame = _containerView.bounds; [_containerView addSubview: view]; view.translatesAutoresizingMaskIntoConstraints = NO; NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"H:|[view]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)]; [_containerView addConstraints: constraints]; constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|[view]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)]; [_containerView addConstraints: constraints]; } //------------------------------------------------------------------------ - (void)viewDidDisappear { [audioEngine shutdown]; audioEngine = nil; auV3ViewController = nil; } @end vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS/Sources/WindowController.m000066400000000000000000000050631461511344300323610ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import //------------------------------------------------------------------------ @interface MyWindowController : NSWindowController @end //------------------------------------------------------------------------ @implementation MyWindowController //------------------------------------------------------------------------ - (void)windowDidLoad { [self.window layoutIfNeeded]; [self.window center]; [super windowDidLoad]; } //------------------------------------------------------------------------ @end noteexpressionsynth.entitlements000066400000000000000000000003601461511344300337710ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth_auv3/macOS com.apple.security.app-sandbox vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/000077500000000000000000000000001461511344300231205ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/CMakeLists.txt000066400000000000000000000013211461511344300256550ustar00rootroot00000000000000 if(NOT SMTG_ENABLE_VSTGUI_SUPPORT) return() endif() cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-noteexpressiontext VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Note Expression Text example" ) smtg_add_vst3plugin(noteexpressiontext source/plug.cpp source/plug.h source/plugcids.h source/plugcontroller.cpp source/plugcontroller.h source/plugentry.cpp source/plugparamids.h source/version.h resource/plug.uidesc ) target_link_libraries(noteexpressiontext PRIVATE vstgui_support ) smtg_target_add_plugin_resources(noteexpressiontext RESOURCES resource/plug.uidesc ) smtg_target_setup_as_vst3_example(noteexpressiontext) vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/resource/000077500000000000000000000000001461511344300247475ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/resource/info.rc000066400000000000000000000027111461511344300262310ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS plug.uidesc DATA "../resource/plug.uidesc" ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/resource/plug.uidesc000066400000000000000000000033141461511344300271150ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/source/000077500000000000000000000000001461511344300244205ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/source/plug.cpp000066400000000000000000000174001461511344300260750ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_text/source/plug.cpp // Created by : Steinberg, 04/2005 // Description : Plug Example for VST SDK 3.0 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcids.h" // for class ids #include "plugparamids.h" #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "base/source/fstreamer.h" #include "base/source/fstring.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug Implementation //------------------------------------------------------------------------ Plug::Plug () : bBypass (false) { // register its editor class (the same than used in plugentry.cpp) setControllerClass (PlugControllerUID); } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::initialize (FUnknown* context) { //---always initialize the parent------- tresult result = AudioEffect::initialize (context); // if everything Ok, continue if (result != kResultOk) { return result; } //---create Audio In/Out busses------ // we want a stereo Input and a Stereo Output addEventInput (STR16 ("Event In"), 1); addAudioOutput (STR16 ("Stereo Out"), SpeakerArr::kStereo); return kResultOk; } //------------------------------------------------------------------------ tresult Plug::sendTextMessage (const char16* text) { IMessage* message = allocateMessage (); if (!message) return kResultFalse; FReleaser msgReleaser (message); message->setMessageID ("TextMessage"); message->getAttributes ()->setString ("Text", text); return sendMessage (message); } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::process (ProcessData& data) { //---1) Read inputs parameter changes----------- if (IParameterChanges* paramChanges = data.inputParameterChanges) { int32 numParamsChanged = paramChanges->getParameterCount (); // for each parameter which are some changes in this audio block: for (int32 i = 0; i < numParamsChanged; i++) { if (IParamValueQueue* paramQueue = paramChanges->getParameterData (i)) { int32 offsetSamples; double value; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case kBypassId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { bBypass = (value > 0.5f); } break; } } } } //---2) Read input events------------- if (IEventList* eventList = data.inputEvents) { int32 numEvent = eventList->getEventCount (); for (int32 i = 0; i < numEvent; i++) { Event event {}; if (eventList->getEvent (i, event) == kResultOk) { switch (event.type) { //--- ------------------- case Event::kNoteOnEvent: { mLastNoteOnPitch = event.noteOn.pitch; mLastNoteOnId = event.noteOn.noteId; /*String str; str.printf (STR("noteON %d"), event.noteOff.noteId); sendTextMessage (str);*/ } break; //--- ------------------- case Event::kNoteOffEvent: { /* String str; str.printf (STR("noteOff %d"), event.noteOff.noteId); sendTextMessage (str); */} break; //--- ------------------- case Event::kNoteExpressionTextEvent: // noteOff reset the reduction if (event.noteExpressionText.typeId == kTextTypeID) { // if (mLastNoteOnId == event.noteExpressionText.noteId) { String str (STR ("Text: ")); str += event.noteExpressionText.text; String tmp1; tmp1.printInt64 (mLastNoteOnId); String tmp2; tmp2.printInt64 (event.noteExpressionText.noteId); str += STR (" - id:"); str += tmp2; str += STR (" - noteOn id:"); str += tmp1; sendTextMessage (str); } } else if (event.noteExpressionText.typeId == kPhonemeTypeID) { // if (mLastNoteOnId == event.noteExpressionText.noteId) { String str (STR ("Phoneme: ")); str += event.noteExpressionText.text; String tmp1; tmp1.printInt64 (mLastNoteOnId); String tmp2; tmp2.printInt64 (event.noteExpressionText.noteId); str += STR (" - id:"); str += tmp2; str += STR (" - noteOn id:"); str += tmp1; } } break; } } } } //--- ---------------------------------- //---3) Process Audio--------------------- //--- ---------------------------------- if (data.numOutputs == 0) { // nothing to do return kResultOk; } // no output float** out = data.outputs[0].channelBuffers32; for (int32 i = 0; i < data.outputs[0].numChannels; i++) { memset (out[i], 0, data.numSamples * sizeof (float)); } data.outputs[0].silenceFlags = getChannelMask (data.outputs[0].numChannels); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::setState (IBStream* state) { // called when we load a preset, the model has to be reloaded if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; bBypass = savedBypass > 0; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::getState (IBStream* state) { // here we need to save the model if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); streamer.writeInt32 (bBypass ? 1 : 0); return kResultOk; } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/source/plug.h000066400000000000000000000070571461511344300255510ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_text/source/plug.h // Created by : Steinberg, 04/2005 // Description : Plug-in Example for VST SDK 3.x // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug: directly derived from the helper class AudioEffect //------------------------------------------------------------------------ class Plug: public AudioEffect { public: Plug (); //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this plug-in //------------------------------------------------------------------------ static FUnknown* createInstance (void* /*context*/) { return (IAudioProcessor*)new Plug; } //------------------------------------------------------------------------ // AudioEffect overrides: //------------------------------------------------------------------------ /** Called at first after constructor */ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; /** Here we go...the process call */ tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; /** For persistence */ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; tresult sendTextMessage (const char16* text); //------------------------------------------------------------------------ protected: int32 mLastNoteOnId; int32 mLastNoteOnPitch; bool bBypass; }; }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/source/plugcids.h000066400000000000000000000054551461511344300264140ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_text/source/plugcids.h // Created by : Steinberg, 12/2007 // Description : define the class IDs // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { #if PLUGIN_A // Plug A static const FUID PlugProcessorUID (0x8F2B1ED9, 0x1D2C40E0, 0xB60F4AF2, 0x0F27711F); static const FUID PlugControllerUID (0x001B3315, 0x818044BE, 0x8FBF4AA2, 0xC9993C47); #else // Plug B static const FUID PlugProcessorUID (0x1E4DC62B, 0x974147D6, 0x9CAB1B86, 0x50D4B11C); static const FUID PlugControllerUID (0xA8D238C1, 0x97F54908, 0xB32EB808, 0x3EA43CEC); // Plug B will support Plug A (could replace it when Plug B not present) static const FUID PlugAProcessorUID (0x8F2B1ED9, 0x1D2C40E0, 0xB60F4AF2, 0x0F27711F); static const FUID PluginCompatibilityUID (0x7A8EA518, 0xECA24036, 0x9AD492D1, 0x70AD04FA); #endif }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/source/plugcontroller.cpp000066400000000000000000000164101461511344300302010ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_text/source/PlugController.cpp // Created by : Steinberg, 04/2005 // Description : Plug Controller Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plugcontroller.h" #include "plugparamids.h" #include "vstgui/lib/controls/ctextlabel.h" #include "vstgui/lib/cstring.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "base/source/fstreamer.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" using namespace VSTGUI; namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController Implementation //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::initialize (FUnknown* context) { mTextLabel = nullptr; tresult result = EditControllerEx1::initialize (context); if (result != kResultOk) { return result; } //---Create Parameters------------ //---Bypass parameter--- int32 stepCount = 1; ParamValue defaultVal = 0; int32 flags = ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass; int32 tag = kBypassId; parameters.addParameter (STR16 ("Bypass"), nullptr, stepCount, defaultVal, flags, tag); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::setComponentState (IBStream* state) { // we receive the current state of the component (processor part) // we read only the gain and bypass value... if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; setParamNormalized (kBypassId, savedBypass > 0 ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ IPlugView* PLUGIN_API PlugController::createView (const char* _name) { std::string_view name (_name); if (name == ViewType::kEditor) { return new VST3Editor (this, "Editor", "plug.uidesc"); } return nullptr; } //------------------------------------------------------------------------ CView* PlugController::createCustomView (UTF8StringPtr name, const UIAttributes& /*attributes*/, const IUIDescription* /*description*/, VST3Editor* /*editor*/) { if (name && strcmp (name, "NoteExpressionText") == 0) { CRect size; mTextLabel = new CTextLabel (size); return mTextLabel; } return nullptr; } //------------------------------------------------------------------------ void PlugController::willClose (VST3Editor* /*editor*/) { mTextLabel = nullptr; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::notify (IMessage* message) { if (!message) return kInvalidArgument; if (strcmp (message->getMessageID (), "TextMessage") == 0 && mTextLabel) { TChar string[256] = {0}; if (message->getAttributes ()->getString ("Text", string, sizeof (string) / sizeof (char16)) == kResultOk) { mTextLabel->setText (VST3::StringConvert::convert (string)); return kResultOk; } } return kResultFalse; } //------------------------------------------------------------------------ tresult PlugController::receiveText (const char8* text) { if (mTextLabel) mTextLabel->setText (text); return kResultOk; } //------------------------------------------------------------------------ int32 PLUGIN_API PlugController::getNoteExpressionCount (int32 busIndex, int16 channel) { if (busIndex == 0 && channel == 0) return 2; return 0; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::getNoteExpressionInfo (int32 busIndex, int16 channel, int32 noteExpressionIndex, NoteExpressionTypeInfo& info /*out*/) { if (busIndex == 0 && channel == 0) { if (noteExpressionIndex == 0) { info.typeId = kTextTypeID; UString128 ("Lyrics").copyTo (info.title, 128); UString128 ("Lyrics").copyTo (info.shortTitle, 128); UString128 ("").copyTo (info.units, 128); info.unitId = -1; info.associatedParameterId = kNoParamId; info.flags = 0; } else if (noteExpressionIndex == 1) { info.typeId = kTextTypeID; UString128 ("Phoneme").copyTo (info.title, 128); UString128 ("Phoneme").copyTo (info.shortTitle, 128); UString128 ("").copyTo (info.units, 128); info.unitId = -1; info.associatedParameterId = kNoParamId; info.flags = 0; } return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::getNoteExpressionStringByValue ( int32 /*busIndex*/, int16 /*channel*/, NoteExpressionTypeID /*id*/, NoteExpressionValue /*valueNormalized*/, String128 /*string*/) { return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::getNoteExpressionValueByString ( int32 /*busIndex*/, int16 /*channel*/, NoteExpressionTypeID /*id*/, const TChar* /*string*/ /*in*/, NoteExpressionValue& /*valueNormalized*/ /*out*/) { return kResultFalse; } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/source/plugcontroller.h000066400000000000000000000116711461511344300276520ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_text/source/plugcontroller.h // Created by : Steinberg, 04/2005 // Description : Note Expression Editor Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" #include "pluginterfaces/vst/ivstnoteexpression.h" #include "vstgui/plugin-bindings/vst3editor.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController //------------------------------------------------------------------------ class PlugController : public EditControllerEx1, public VSTGUI::VST3EditorDelegate, public INoteExpressionController { public: //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this controller //------------------------------------------------------------------------ static FUnknown* createInstance (void* /*context*/) { return (IEditController*)new PlugController; } using CView = VSTGUI::CView; using CTextEdit = VSTGUI::CTextEdit; using UTF8StringPtr = VSTGUI::UTF8StringPtr; using UIAttributes = VSTGUI::UIAttributes; using IUIDescription = VSTGUI::IUIDescription; using VST3Editor = VSTGUI::VST3Editor; using CTextLabel = VSTGUI::CTextLabel; //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; //---from EditController----- tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; IPlugView* PLUGIN_API createView (const char* name) SMTG_OVERRIDE; //---from VST3EditorDelegate---- CView* createCustomView (UTF8StringPtr name, const UIAttributes& attributes, const IUIDescription* description, VST3Editor* editor) SMTG_OVERRIDE; void willClose (VST3Editor* editor) SMTG_OVERRIDE; tresult PLUGIN_API notify (IMessage* message) SMTG_OVERRIDE; tresult receiveText (const char8* text) SMTG_OVERRIDE; //---from INoteExpressionController-------- int32 PLUGIN_API getNoteExpressionCount (int32 busIndex, int16 channel) SMTG_OVERRIDE; tresult PLUGIN_API getNoteExpressionInfo (int32 busIndex, int16 channel, int32 noteExpressionIndex, NoteExpressionTypeInfo& info /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getNoteExpressionStringByValue (int32 busIndex, int16 channel, NoteExpressionTypeID id, NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getNoteExpressionValueByString (int32 busIndex, int16 channel, NoteExpressionTypeID id, const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) SMTG_OVERRIDE; //---Interface--------- OBJ_METHODS (PlugController, EditControllerEx1) DEFINE_INTERFACES DEF_INTERFACE (INoteExpressionController) END_DEFINE_INTERFACES (EditControllerEx1) REFCOUNT_METHODS(EditControllerEx1) //------------------------------------------------------------------------ private: CTextLabel* mTextLabel; }; }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/source/plugentry.cpp000066400000000000000000000103631461511344300271600ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_text/source/plugentry.cpp // Created by : Steinberg, 02/2011 // Description : note_expression_text Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcontroller.h" #include "plugcids.h" // for class ids #include "version.h" // for versioning #include "public.sdk/source/main/pluginfactory.h" #define stringPluginName "Note Expression Text" using namespace Steinberg; using namespace Steinberg::Vst; //------------------------------------------------------------------------ // VST Plug-in Entry //------------------------------------------------------------------------ // Windows: do not forget to include a .def file in your project to export // GetPluginFactory function! //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID(PlugProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) stringPluginName, // here the plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers Vst::PlugType::kFxInstrument, // Subcategory for this plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::Plug::createInstance) // function pointer called when this component should be instantiated // its kVstComponentControllerClass component DEF_CLASS2 (INLINE_UID_FROM_FUID (PlugControllerUID), PClassInfo::kManyInstances, // cardinality kVstComponentControllerClass,// the Controller category (do not change this) stringPluginName "Controller", // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::PlugController::createInstance)// function pointer called when this component should be instantiated END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/source/plugparamids.h000066400000000000000000000043511461511344300272640ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_text/source/plugparamids.h // Created by : Steinberg, 12/2007 // Description : define the parameter IDs // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once enum { /** parameter ID */ kBypassId = 0 ///< Bypass value (we will handle the bypass process) (is automatable) }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_text/source/version.h000066400000000000000000000055651461511344300262710ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/note_expression_text/source/version.h // Created by : Steinberg, 01/2008 // Description : Example of handle the versioning and copyright info of note_expression_text plug-in // used for the resources (RC file for example) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "NoteExpressionText.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "NoteExpressionText VST3-SDK (64Bit)" #else #define stringFileDescription "NoteExpressionText VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/000077500000000000000000000000001461511344300201135ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/CMakeLists.txt000066400000000000000000000017631461511344300226620ustar00rootroot00000000000000 if(NOT SMTG_ENABLE_VSTGUI_SUPPORT) return() endif() cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-panner VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Panner example" ) smtg_add_vst3plugin(panner include/plugcontroller.h include/plugids.h include/plugprocessor.h include/version.h source/plugfactory.cpp source/plugcontroller.cpp source/plugprocessor.cpp resource/plug.uidesc ) target_link_libraries(panner PRIVATE vstgui_support ) smtg_target_add_plugin_resources(panner RESOURCES resource/plug.uidesc resource/background.png resource/animation_knob.png resource/background_2x.png resource/background_3x.png resource/animation_knob_3x.png ) smtg_target_add_plugin_snapshots(panner RESOURCES resource/A2EAF7DB320640F48EDE380DDF89562C_snapshot.png resource/A2EAF7DB320640F48EDE380DDF89562C_snapshot_2.0x.png ) smtg_target_setup_as_vst3_example(panner) vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/include/000077500000000000000000000000001461511344300215365ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/include/plugcontroller.h000066400000000000000000000073241461511344300247700ustar00rootroot00000000000000///------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/panner/include/plugcontroller.h // Created by : Steinberg, 02/2020 // Description : Panner Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "vstgui/plugin-bindings/vst3editor.h" #include "public.sdk/source/vst/vsteditcontroller.h" #include "pluginterfaces/vst/ivstparameterfunctionname.h" namespace Steinberg { namespace Panner { //----------------------------------------------------------------------------- class PlugController : public Vst::EditController, public VSTGUI::VST3EditorDelegate, public Vst::IParameterFunctionName { public: //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this controller //------------------------------------------------------------------------ static FUnknown* createInstance (void*) { return (Vst::IEditController*)new PlugController (); } //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; //---from EditController----- IPlugView* PLUGIN_API createView (const char* name) SMTG_OVERRIDE; tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; //---from IParameterFunctionName---- tresult PLUGIN_API getParameterIDFromFunctionName (Vst::UnitID unitID, FIDString functionName, Vst::ParamID& paramID) override; OBJ_METHODS (PlugController, Vst::EditController) DEFINE_INTERFACES DEF_INTERFACE (Vst::IParameterFunctionName) END_DEFINE_INTERFACES (Vst::EditController) DELEGATE_REFCOUNT (Vst::EditController) }; //------------------------------------------------------------------------ } // namespace Panner } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/include/plugids.h000066400000000000000000000053311461511344300233600ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/panner/include/plugids.h // Created by : Steinberg, 02/2020 // Description : Panner Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Panner { // HERE are defined the parameter Ids which are exported to the host enum PannerParams : Vst::ParamID { kBypassId = 100, kParamPanId = 102, }; // HERE you have to define new unique class ids: for processor and for controller // you can use GUID creator tools like https://www.guidgenerator.com/ static const FUID MyProcessorUID (0xA2EAF7DB, 0x320640F4, 0x8EDE380D, 0xDF89562C); static const FUID MyControllerUID (0x239F80C2, 0x4F1442C4, 0x8B58AE6E, 0x7C8644EB); //------------------------------------------------------------------------ } // namespace Panner } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/include/plugprocessor.h000066400000000000000000000072371461511344300246270ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/panner/include/plugprocessor.h // Created by : Steinberg, 02/2020 // Description : Panner Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" namespace Steinberg { namespace Panner { //----------------------------------------------------------------------------- class PlugProcessor : public Vst::AudioEffect { public: PlugProcessor (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (Vst::SpeakerArrangement* inputs, int32 numIns, Vst::SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; tresult PLUGIN_API setupProcessing (Vst::ProcessSetup& setup) SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API process (Vst::ProcessData& data) SMTG_OVERRIDE; //------------------------------------------------------------------------ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; static FUnknown* createInstance (void*) { return (Vst::IAudioProcessor*)new PlugProcessor (); } enum { kPanLawEqualPower = 0, }; protected: void getStereoPanCoef (int32 panType, float pan, float& left, float& right) const; template tresult processAudio (Vst::ProcessData& data); tresult (PlugProcessor::*processAudioPtr) (Vst::ProcessData& data); Vst::ParamValue mPanValue = 0; bool mBypass = false; }; //------------------------------------------------------------------------ } // namespace Panner } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/include/version.h000066400000000000000000000055201461511344300233760ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/panner/include/version.h // Created by : Steinberg, 02/2020 // Description : Panner Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" // HERE you have to define your plug-in, company name, email and web #define stringPluginName "Panner" #define stringOriginalFilename "Panner.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription stringPluginName" VST3-SDK (64Bit)" #else #define stringFileDescription stringPluginName" VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright " 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/resource/000077500000000000000000000000001461511344300217425ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/resource/A2EAF7DB320640F48EDE380DDF89562C_snapshot.png000066400000000000000000001311361461511344300302200ustar00rootroot00000000000000PNG  IHDR\vV+gAMA|Q cHRMyR&:t iCCPICC ProfileHǭwPS7Z tIo ATB$\QDD@YХkdbEaAdQł #}37/=sss~3_,  ) GEq t-H4bwMsd9 "6P0; b L4W!,/D D4'r4ÙOY,aψNBsx|vasY --}aIGxIN+I³ދ'rRsg  wKI0?~q8331[3WS%79I~~@IDޡsaJdq/bRBIiz>~<$>'5_C(JR'[Kb^R}%~QVLd8<'X# WfBvt!/IwGnNg-[YX2{h}9KE4F9Ŗy=TuN}aY>@( d )Rpn r\`%A(;nPc ep0k0>IpBʐ&@Vr@($~ ?$ C(&$tn DYљFL&'$I@ZB֑IGIWH/d91ٓKɏ)>ōCɤl4R.RQ>KQ̤RRRRwHݥKJI%=&Cїaɬ9%'3!K M&{HK9G._E!*CXyy||q9lJ3 4MƤҊihh_*6+Q䦔TԢt_2][9EyrS*U.ʫ:U U>VՌBVP6.P߫~Q}LᦑQqVcT,<@w]q-5-?-VV֤v:DNNNθ"<&z=Wo^'}Hm/ MCW Z{FX#Q>ư1׸ lbg3gһaA>Sii,lYs]?,l-R-Z<`a؊mUiuϚbcֺM~TEm;m Fu`6Z_39dtB .rvf98]\~vpreֺ>wqչ'va!8sy/WWww3m$&q_[U0~~;L69oڿ+P<8Pر^hעzۂ@3hW`ߖ`/\"2$/;"P0'؈ƈO^%QQGDcp11u1K^:k[`eW,O]~f ֊qȸCqXAZD<3*~~qrFJFK_&9'Jr˸c׸_ 8yqމԓPkNxm=VZt3ggN=7q^p~B҅O.F]׵R+}._v>w髎WO]c\knw퍓7moieޅg޹p{{/ þؾ/>z8u§2O˞=3^7>2zo/(/F4G_Z<=3zWï' uc 348 118 pIDATx^w-uߍp2@$"E4 V-#Yήr9]e#[eJAN2%QE3@D9BϚ޳Ϲl}ݫW=3k=3{?319YDH!>cs=@y$o:!d i:=2Ć4Mǒ.(Br7=u(Yj?jLmMORqqC8"vvےl7Wı~`gfa?P&gTp G1L \?oŸN-El-rȽѴdt5^ 4uxB3V~@N(MFf0v4@cR=U]jtl{G`{·mSQRt=FPp)7NFeOf$qՇW[ޠyU@{s"ve4 w8>݃>2_fA7NhiK67Ͳ|Ly'wf#ebjZ jo#K \NةmJ`(/!&,|yúLrS@r*DiOcp[v΃i' i͛mtE'>/ 0"6 ooS}{GPc ?gw}f_q $iUwm7~1C>go̍ߵJs7j{AwY[RtV_v8 a R'|ϔ0 >.a;wct6mG>`-yqQgwxuE7+eM抬p<9I Szbr 1To^zKfh~<1H"H6tt6},.cGT&.>@Ǐ~J^w @6@wB  ,~jShWU ]n2EL1Hom<T!}_gJiu; Ae2bA"KK~Fd>c"yjǍ;ylFaVW}쭮cdU6֖ҍl wrfw2`U.IΘ\6o@lxudW$v lvqAOxBCؓt>6to]Y iG- Uw$W੝S|(qFzJf=ęl3/Yo08}{ݑ ^la}P=mcwhnCd/8YB};c62Pr?e6pQVݱl'VYGZ>hu 3{uȷ[Vhvl3ef.sƀ$vƊD)Ŏ,%쵫Rre څ Hm_s$+4*D @O7hRV9~jWq +/ˠSu:_v止S)uKy11~ju񔑊#䵶o @V,F(yb>*k~:X_]ɫQ[NPv(ySa[6L"zAx⶗Lkڧw,pM~Nh˱UcvcWuVF59+̀||{[akBc5 #),)WzN# m j;0A3*iSL(u,l02T(Ł_Ut*j>o!47UGYh X$st!f>Չ:j<^<(O_vߍ+Nn~Q0zj{kGRƨخ:ݱ6:]tzɶڷj \g}淓,vMWUqNaDm@`6T>EfoUD; 8e +,;d\_)k\^[)[\k2g9 ^g5:Cj'I1M6V㻇[P}75V?kn 'v06~Mn;1q"UA4s1+yI'9_yX NV_v[{GښJP@54[PWk 1j z&۶ [ә?O'ّN zcX-+⵲X7HfTH[ru¾c0=;aZyb|^9_6߼hfz`)H$^5g,ӡxԨ':ew3tӫ;w>&} XCpէ&0[` epY7545B^&V\ǫc/*z BzJkU "AyUNXIE <Yr|Y|r\X_.Ӣ33_&w}wUf~Wt!>ćۥvwuY$YWϷrՁ~%dےU˙#Gn7.\+=CwL6;{u nk,qrw IL-jLǪ u`#95]:סKO%S R]ӃU=Ӛ+[0Wݶ29C Ձ4U~E'RUͮypa 5N]F:o&թ݋*1 $:'Xik "zbWʉ*Ǐ)-r MCirܜ )eg{id^0 ,]k~{p<ʝwY9R%YKfr/Rgʳ+s'(Dwq ,n+h$%+::w;څ=W^Kb,*t`?~e:_UhFUo7:{eBȒQ=Ծ@#И]o[-10.ETVt]nO*D{ࣳsP{Ӊ]yO9cXVI6wj7c7~̬]+}mo7_67Zx\pkg+m/L-;J?uL0KS'ɩ)tE%aʕ9GqoGOMh¾}lgd{q.kW^,++e29) hp-2xoUW" $:ɋ4vȽ T>iKF*fvWcA݋tT1T ˪mW(K>]߆?*2FY;Hҙ1nx+(<gnC#|}jn{!#b_0&U0m/ΦcHRлx۩*8ڂd+ZqMʹ|o.O/69Y\۷:t;v=|l\{p9~Ի%wn,仳 wLE•ծn5i0]eGyg{ѣG˖?3W^)[[K` +}K'ܡuڻARf7Lg`):e].iUN-+C4QuRiÐq\eAHYU.d0`RA2 4oC}IJSv:]0E8,n w$R!Z`"f>.& it_e=iʀ@*Fp#/k>W6V>{_C7(_җK/(e*+ݙiItTqruc?++ܭ͵rS ׄ9۩9Ie 6NV‡?W^IlWWW7rܹ2)/_\Ξ=[\"̖ÇIҽW&{Z ){-D/h ʙXj1VeJ󠺝`RPe :oF6=HWdeԧN}Go av4[: &$ۊaBSX biz~JTʄf qvtWQ:|\I_uh`Pv/?Y>䓒\+ʗ\^{r M~K/3ghL+՗^-G*-W)e&+٠2n\(w8XN+7Q].Ŋr+ \$#UԶ&tTI{[c0YE0ưx2-==X|ܹFY(G'??C|?&I2779ԾxY3)%7I.CfsL.^(GdJF_X(/J?$_9q⤔;ܯK;ﺫ7o%MuΕTBNPtB16@֓^e9Y.)6zu#(=foԷ5BK۬O;3m:W#n$HuНP{BT$/2Fs >PW:[@wLxVuiEȄb{$1kdHBkBզ"a*3 Dї$f>ʵ\dESOk׮{$3ԙ3˃>(qo+"V86'*[pkOʲ]'e6ֲ$2==]W?VyQI';ʬ$kPwbY]]-S>y⸼̗k@G4,I2(Uq=%>\E.m l)m,Z|@>r?U:(BRW2ѷdtX>Dv0{ݽ ),{3ԺM;Z%3UR"X t;PyԢRJipi(2kmq,v$֜#8MY0^r<ú%QkfZ|9{ =$X<9Bu2>_V7.q9*upzKtߌÚehK<|׸*Hl/]H~J{)T\/D -ї\}iіImL;߄yGLMBQ>B7)2}G\Ș8Cdu#0ˠ͝I=al9] AJxFhyyY7)6jfrd[G& ېNULVRM Vͯg^WDlllxigXʹղmI}m H2_j,(- hȷw!bӶ=qkz%P;cǩ>m<%W5Ӂ0Zvx#JS §V,9[lG]VǩmkXe3h䊄˗bvsؔѳcwBW,* I.7Om@f +;z=-8p@opؐwwmplmm'N;K˯CG_? M]OIDs{C!^3QJTOդ~ ^!hcI\ُ#fv2mhl~Fz8O!jIo`[1 Y^. :7y@OI*zs@%nH,ZO%luuKҌZR$'p*;B/π>\YVjC˹=@8z4f-+΋K.JK_9˜>sEֵkWc},.TK/b^ƵݍQXfV.;8Kinv3+IvJtbaU!_K퓧N;_~\X>2Pΐ@րTJ@0Ы/Г?ID%+P[jklj%dg_+7׉JCjׇYw1 ]mˈ 5!(w lp{`/||Ca:}dRTIEҭP]qpcFYJמ)^>]nxr\\Qsk,5& iUc!b WRL 7Vn^T`S W$Mahrj7EW_}^-;j%9ōn흓̻;^\9_6^l~d7s+kz1sUJe)*ŋgL)OS}LMs.΀#&!a:2,YG%h.@wδ SZY 'F Tnz)6Pmmm퓟mZ%mU< IAg}3)gF10m)>EV )`V bk6k4=XlnxҌ93TɎ ke P/\6uыc;&)Щ}=xG;rZʉ2cezN<Fuݧ};U+,u( nx׆H?]X^.gr/ntr 'Qq <(^//BRqa}ceb_?,kKW7^I W4;(0'#FYj+W'>tHWӒJof||CS#nt c}m#ڴ:yֶiZR:;"g=HasgH.xq&6£rUkn+\6:2э'6:7נ*X+Ѭ(P@GeR|u~ Er'3Эp!:MM9:. 5i\W?F8_AIݔUқ/KOfO+}N+ek˪U^ċށ& }ǻAY.{x _֕M._1g3G\(NuR$1_yC4WTKaYHzD695);SsgkZ~+soqO$n[{Y[{Gb//])7/ȲygK. eQ)4_q~+OP.\)GD9x~}GEgi;XN(cC*Kr1@ l*ngJk2k+3mEUɎPSx:Nk"q9m 7d!Za*xjD^7C0L@KWbm"w~H=;pT}S m*;O VxOS]-IkΗ/~\~33-Ko<+ɯ] 1>S2OTiku^! ?WJݼ*+}P>; ?S^n EѐqJn;pl- oX._Yo^EcsCƽVV.(_yϖ>Bٹrplp77xCN i)7NODLch_fjrg}gfʒ$ .^9W޸xO ww?&AIm#wttm~!& a#ـQ;Z#vj&Հf]CmEp8ݝRAXC̃&(h`9m7`YUe]v-t "VwuzKRpAT\ >tfu/ۊc[$X/kWϖųɪtl\$~zMRrr|_$}PokYɢ?yш 1CܧTg}6Oϗ<[,̔}sשrz:xRy뗗}/}T3kiqJ!=nJ$s3LTȺlRe9!>|wYjouYϖ}')y9 1!D)6Q6YN2Cʹ ]ƄH[K.KW!x_m ԁ2tN)t6s5H;L꫍GQr?@e6q m2F1Zw/a"*DMѤ"s=ӷ#I&e|]?(\w7v#(Ee(R%Տlߩ۞('2{I }ȕ 0\_!5Yo}\媼N씃 OP,(;e}޵H]nzp#;"C$^=r]4U10wD;xD|:<%A:ٓo횰$nMnQ :R+S5&9g[ѓ-Lac}$k7 W_?5y3=2A5`k=$QSde6M{ zGo+#jZ5$t%_)|޸y,lYJYv,_9[v֗T&ɒPI<5slYݲeIv(F wC>S]{;{3Op9(#Xb\ EZUs }"]|䔀湸`NSZR=$~b_>H LC qvh B wvz̉ IdCD7DE'Qx1i2ގ2`59gR)C2q[3L_Ev&Z|iMl8E&Lz~{poO΁s 9pQP[l@t蓹_NLOVxŚF Pža:Ԯj*z* -x$A1x] v ;F좿NplKPuھ͞j,ZJShn,NY}qSH|D|j-+\dyeN I7lNAG(hx9N;RN?#۟Ţq}u9kPiWez[iqJ/>3,$s;؝%sp,k 8t.Q)2VevpLysS6@[jNO }Jjٔ 7vMRAi𰤆d+$~xHqNRcH:.i|ȱ!,ž+ nYZ*׾SnlO5 F_j`HR@PUw:~M,} qjGЋ.=&ĝOt s{PxD%le2ʁ5qBR%`HncUk.FRe%iGȈSJR5'bx$(t_N?#II ?5qn~;ts:o$ s]nMgK3YN! E@^auxOv>HY$]Qiͻzmz+EaK\ۺxC_ySMτwqUp#Cq7}VSm7G 2'P쐖\DZ+y,4%|~MV0[+WՎJ9rDm\2+Z|Fh(J{8o]uHYކ ΉD%p$\1~X/r#E#`F.F%\rM ܨ uΧ2,ȶy5_=XU:jvyul-I=YvVGy.6RЁ:n-Z8}x|n ˲Mne`H:b_'_~\ܜ8pTmrb*kGF>FحF5X;/׼ Wq=̻yw3QO:ؓaKRmƊ^n|EI 7"\-}Gh#ٲe+PI76˱y#.6wʂt)K2)}IQ?K \sﲔkpK)X}ƅʍ($_tfʙ'CK$UMҤzɟސ tB I/ք wK3IKQXNxXnG.;kG?w0M8 CM? nm2"2lt p:R2n.W4Qf4T rtMU8"_^;dz ܢiOwk1 {t|KBȋRm%\[Rn5&/],k_Cw贺m|Vl6y[ y}pPkBiK"@v7l%n>\m1hW©0[FqF;m+M 07 /0}>LWVxg>[/lW5nś; g ݧNI|_^Z.eis|f9SI[R\O!ƔH^ORGv̗O̔Ò9u"hVqʧۘ U>㓥 ߛ*an6,15o"L唰$dž:ӏX@$u>3ۙl!V/< RbV$_Uˁa_.GnCOtZd Z[@[{ĵfb0lrkw:2{{@秾FT jH2tƪ Z?m )+g˕oAwP6ͫl_S.H$Zh/Is7o7G$dYALt>4`1 dmz\͓e`Y()<:eoHJAN y׎beN+'p?&W—1JmP굷AqX{F~maԫgUaVig`b<~& xr-K7TVdn$[V$Z?HŪd> 7cז{%nIU@ԆBLR9-%m@YRX-K|99iwI$MI~OPt3ţe#`]8z!uƖ턅.Z Սv :ӻ+E};Wtm]`\Սo 0L?h,Uȍ[ĘmMVNKnx]޶"\TvoDhI/d']U7ʝe N?],Gg"tY/_-k+Rmg17bVL&wLNٴڍtKY<|yR6xdxJ!Y2H^;$>!`B[egү@,L Y咀H*M" Ƃ#Ԕ3Z_tv$~Z@؂~Svlvwݺϳ9 \MEz3mF1!7}NBm^}Y]`RB"ҹejA.gCgdJ_k$>&J9˗_c6VoJ$-5V$]-]dBXX\[($ryIg$s;'/MOIYU2U$w&6˯ ERQnJ)%weщ I n$85<}ʳ7<_8,El[ĕ)||[ v%u՟8@ϠU =Y%/f+͵޻ǖr};g ntSGˎnS>QKΕR.\vX]c/vwwhV2\d?195׿^N:SbYڒ"_&-2cZd P5q@w>%3.9[ÞƷ]tPK'׏/8pߕcq| omVG_-W$lceTTZ(sRl߫L%IߑzI^A&zݑӟ[ ]J$uY"و6S6vq'*VQDk2>wsʱwTJrSr %_p;M[oy̜KzQotDXCfyV^}E3vQ%m&ɔgʯگ,=&W0K%r _B򗿬ɕ+~T'BPLtkYfŁ)?y/O .pH|Hߙlk&FhǫKIUt쉱^'Ǝd:Ox(|G=KSYcpdSe9I\[^֯gr6N#p*5]MIrqigFfyE|FGu| u8T+yYY$I=(6ܥiQ>!uInE߼u1xRw2='h4~?K!f/>I{<#фkp _\n,|2X>я7n"F+/>^i?od| U%jk_Zyg5!WWP\mLJ_x >ڮr e=2tph &[pC3t].n bMh]1/l*/f0 _DǷPeʫ۰?^ *r.j%勲\|" V˒ldz!MRs$H4bw&;3eN7%8q60q=.vwLHu:(}ryF>M&Ar⋽)w~G|8t9u{w#]B1K_7]_КuVĐ:D.fM_=X"Û,ی'Rm;YصD2 'q_cN?*p wj[[t~տW{Mݶo04V/CKu]_ګ O޶?X 80/juӋәX  I=2NAe>BU'™ ]Iu_c_a[k7~žE W4B#վ$kb}\l#dv{e 6Ǡ7w6,9^9f|.%!K/j10ۍBcv:n ˄c`$O)-^ NISD耥t`fts ^[gyFΝ;W*nMnNRvCu &؏=vRVW^˷5.r;K2vln&c@ݏ:N ̅5j]ZJ7}VZR,|&a(XTe@o,B7^zn\/RWZ=#o7>!e?J>>Y6c4WYu40W$ˊXnI}xi$O1ܔ ?'FS -eZ{v!]=PNyPxgw{љ#Ƥ9}8 D~'Z9 -dSOO~CP66Ju6$~W~E?rq_|awK&qq s<.vlliG @c2_˭q}xͥ,ؾi Y58Z{w(5ƅa1]Ud-+lo$Bp<iI 2ɋ_--h  /`ܐ~ϱ*#@=7˻duئ!M7m$||g/5h'6˯uv=3(Ie];++qzŠLc+~ϖ[ЦK^Y"R5p̏H.kO<Ӝ/fl-AHQӽ4ucw/Sq{ H0,O?>/8GJWZ^x<-*HnGDK/RDO$Gv(N)ek]:!j&;Ng?Rِ=pʁ|}|EW\,NRm롇shG\M<8/3/ܞl~D2ttN[a,ΐߨhwt0L a,]*̝[rkBvK6=r\(Ŷ,qUÇL9>#,YCkGQc$)Y*7n ~Cr 9!hjH=˱x~䓺Oc)rp݀C#}eW)f' ~JaJ~$\ "Nxt`50 d>Nv wB&&9wW}H$CjIؑl#c刜ߜN HT狯W_}US |Or0.<D&_F '|)}<-?8$&]wU}QKL$tmNF9qŗea2w@8>nYcɔ*xYGePN}i2=s3~7n1?I- v2a? āJua5>@rc?)KNYzVWj\+[닪 .Xږ- ىr7UE <")qFB@ov=ĵG$_L \9*cOl-K 9q ;*& *"<ϛZ8Nn 䀪x'7R#t v؝fwxl$6?+ "׾r A@͍$JV??Yqw6NJ?hYsSw߭1g5M6(\Ɗ8VG+v~`Bx#9yt7tY5qՆm (໬W Jۧ1d^:a_Kr>]'-dM_nk)X /C/IRxlOOKo|"!oeܹ0SԗdY;r"4v~,vv`Nb0JsP7$-}Koq4+%{vS{VxP"3ntiWR} Wo|S po|d) u$$w>\;XX*VHǿ=v2ɃuXC"8_ve0YIvXs  ]>>=η%y:}sΙU0o<* 9&Z$\Vyxw/x,GUÍl>鳉M 9DKlЎ`C(w2UK!w!v:}$ Cd^OWƋUQ} B79tvue"ǘBko<8[O岳99{] 9]*ө\rN\OAOt_)_I#${EsKrs8&OYj'/$HD,*>uuMևAk^3ax3M~JASsw<<]Wåsr:o@y'ZXHAhsgI\/__& ڼ$Y!Q JzssSYF&*Ί }_j"HĆ/v`t?'A͹hN&[@vkٗfz6a5 ZN>)Y{* y'S7S5(P}TѶo0=:1C-٧f%./Aon zuO̒W;k,[/t_mnV|:ō 50j#cRKu]5IKij&l\̺u~cK1LL'{kJɋ!\Mr>pH_:9u<`mr$(c Gjr@Zo}[zt5K‚z_`$lt~G{Ϳ74`E.وYUs(a,B/A0'wvNҔ~ +$nӟWxBeQ]9aC#NlߢڥۅcL0*Eޜe_Э"kݶ m-q6wk `fċ|~Qš[r\%MnP_,YnY;J?W7?ɣMewNLˡ.`X}u$_L۪9 d])KԵiH!u9 $VWL%+<6Re]mdӤ<~N2>?+A^(||睞U{G-MoW"|V9>X5f)<4ՉMR/ŗge͊qR5vYqn,s놶H;jkQ@)˻(*?J-jŖĻ]+OXG!HH.ɋ"^CKԧ>>~~ϕ RO=BR y Ѱ@'5Ϧ]vBޏ~wfY)<™taM%1+O呌WDvIg5i!}|:NeA.W?De=-9hV^FnSRU}Fp!P޵?lMy dY*Y+?]j?#?һ*>;IjDv,fGR3N[ƍy'xaŧ^U{}} ajvGbHCg jL'GxIPQݡGRLZnsB:0_>X&yޑLh߰LjhK]`_/k3工|fgĺ>!7v'ooJi?%|^ن0}Q ˌ};YjCbrU@YmOdä :؜êIѤKA;5ɔ_#*?gꊗ˫ =jʄ)\rȾ>BugKLRn ZԤn:ŬC,i6BQ**֪ "3E* Wyb}V٨y;s@jeU^G-IIb[&ɇ X^vH8yS RD(%\=V YY>#۩<'gv6B#_j뙾 pm> s>:.G3쒭g>)P:ЄRR}TF\qX٦ 'n,o'6UOi*s<Ӗ/v?.?(s$cvէ^\%j${,/Ĝ6PkAˉʯ/LtA=ݮR"EJ V$#+7_s-I- 4 3sjg^׵4h`\{PWJ}"0r1T gM#$ِqIũ Ów6|h?SuŮ!ÝP;5Z4ohտ,/fsI$̪[m.9\*ƵGy|Ar2( \@+d =$M+  A%=Ć.I UG1r)NBdS•=UĿꙮ-7QHސ"tb02jZ $}f6;h}C;9Λ, /Iؔpl.ߐc~q-Si-gH^C{̵+olȧ]m|z9!oD[p ys~YN+h!~x*Q7-N%Yccen|FŇ}eá21 /78 s'OcCASG;L qsdG⋝&1x@^.xW<ɋ+59 ŎM&1Bǥ5 O&3qD|A;C_U'KxkU'u -ģ oV>JkMSQ^ц'2^80|%4僸7ξX.>W(]=Woe冇!~͝^N)>yRog:/~L@ʇl?3W4' ~sfݵe=),8^-r(w<2=/ k7эN4m\ڰΩxƳecU$Otjp85)K 7-NnU& ڏlSŃc4F hGje@лx'~>۲ _Y' & }O>:x҆"Կ"uc G)[2dDMcJc ]x^ӿ$Oo+қsK/o;t#>,pqqf%]ο>_[^ n6$y* |Սk+/"鲰S{adgv/c}%ߏ/ޠw0.^+W*Wίs%jà `A YV`+9<'p. c&vAe0'72vHa1ю~^Aԁa>% ::#__Fȩ Q6! Uhmh'&a U2zd1;41¿ȴ璗(<&PױdټNkG(=CI/-x '-r)NY/1VeU? @|;#=E*} ~t ;t.6)u/\G )!תNhoh`y"!E'DL2[I~l}n 6Y:LqЃD)Ƿبz"Uї*GU[@hR q.bn[OmMNkWOdߙJou;Q6|&SkxwlC@_>۾b1hP;8D"繸ˌ)1uVH|7ˀg0zH VjMZɐz\TZ^&VEaY `/tZ_OKORokM mf]KTT] r V_;=N"X5OQ厐7닢cts'N OIYzl$Ym$Z}qT,I9*)G2vC ڵ>)U2 +@# #>K7,n|'̙f jAA+ftWJc*<\#m[֭-oHz7ujm?G(!Dv3cmj)dmc 'zgWRaee͠3oԸ]%>ttTЦV$:/z4*lVI$R ϳ3?Hpk6'\ʒ$ (5c? g}q:^@;!|jYj_h3&Dt$XҀ}S_薲@-FNDG= 7C'M:w_M甼Ni,kʲ!^:6^}Eefj"ɔgϚcta#1 h1:n̏rsv{G^@6 W6aٿRB(3?3s dm~D\4%3릯rs]˲,c!4w1qn!6Chu˻$Oc$v6ʦOyR|)Obd*GN%<4z'>*X)G38kKᵗtg;}KJmIhK 뷲8!]0NYեӶ3ZV@} 5 ZҁMҫAck̀5CPYw 9^6"YA0$5j՞cMY-ŦnG/[87!ڡh5 2s!oftw@bSQ| 7}ʙ؎$[緧y33z'mᶢbk@F1~W7}DI'95Ѧ Ov.F W!qKnpi ؁5DM zl@6onzQKLFLv>?<wް v11g1N|k#7;(yBKQ?ϊ:YO4qHoNf xCݐ;clomRactcs\ouRP_~PRʾžeSF<5Sɚ+ r fέnǎޙ*o_MFJY7X%z@y?)S|:$YxtbC޾j)zn_|X]Ԛ/z wzaOLTp]*>:Ill.OӊF,-/~HL$c??as ?қ'{a?6r-wq7srvnf?>ΑkL< AKrK0@\"M$]y}c}[ ?XT#ƘW|@Pz)}; =9y\)˲ПIGŦνmHnc5R%M҇Vh" {>zʠf65PѶWZ;ίӮ$Y}*X;F5h>")l+b-љ/D..g"\\bL_VD4[޸dke8)S86w9_=#~#: 3.Dl6sZ֦ T_b NvΫD4ɖ$6ƪf_@L: U&f]0fJB%L\wʰ"~x=~x$\%|@w&&wsnm+OsMؠ3g'67|CSbʗ12q獄BS/|t!Y\Uwe9=_U$ŲURe\$Zc<`jn+DQW"jgR#˔vyv@0Aɔj Wyb\T}+\(F"2゘ͪ2lLtYن?"XBA_O?~W): D ̃mbc/F~~Ji o۰ _~Ȓ 7#zB9lO.`7~+b\j>j}hJ%5Gm(e;mBNC sA }}C[q\"6G4;u_L;)B88OOy_mK!S>?)5{nk=hVH֜;z śrѹJúWΖΤ܍gnK$IVwq,¿u9 mUmWDuRXI9S Py"H~$FLV|9_& ?oh8 _l:058_|/~QOOb͈3G9X)z O U=&ʜqkȩG_hQm^y;FP?,k07XQvA˭e]t"$nnk' C'1tQL˹}փL/I`QKs. %ʚv6ʵ.5T\.YO>O5O]xvIE~|Wz$ R`j@]8ALcI1 OCHiu#Pw:K6ɇާ?$՟a/|A?N`96/~ICP=@'*YKc$9U=WDHx/%r/ٻlqoHU-c9G `U 71yàw~GxH>:8FuH<*jk@UAQ05Xf1'J!4m/-ߟ[k' Bam7εXsȌ}nyܾ2-K?$IN/V| rQۯUM{顼O^ܙ$x;gFOw6/lߵ3?T6JX*[wVe;#Jbo;rB^VQ #xu. cCF]8'ۻwKEq6˝^[w*;+O#%Q;fEJI)*H|yG#";V9Q cI pNqwCwL}GMp.sB;|Gr kdF?ASqIfEea:\. [^l읨h戲~ j#B 2좯Ȳ[=FU`Hom6ѻOKzm>\{'㵹^cBaХb|LS}MքEV9 I2DFho7hbsRlywCJ;K[[keWz9?09#+eޠ,VÝ|R￶ VX:DזO~tظY>y՟L I^,뒨(Y ݙ%90ٱ=dhAFb_p_{\\b)+d&6K;EYer/e&˒{gLh*Oo\*78pI'-I;9 ,>mCvWBc+dd%A .ALlYynI9"a},AG" #; a;`Fa K8)AzHFec$t7@Ba]ThNw9i[}KO YлoQK^.,IRc'z3՞ejD HL|J$9b!AY9Ih//Ѣp!2W>)߱s!?/>,ڙ/{/Bq$HIldd yjv'-o I;+Z^#3ė*w:^[u=9nAA`%$v+h1m`/0${+@Hu'6(~nwR"=Υ"Gi1^ |Gn{W β,ouo5^JnI+*B a|#E,9meIwja_ xHXҋaJ2E7z>Mvڷ tC?|43V/Hf$U8R~$/#Dž)I<4GD8)Z_ٲP6om-ie+b$HqLgeǧ͛#LK0DM$5xC + :)pR;Qk4Аb΋܆9 %~"/a\אǭ'ޭA8mDm.vqGDHFvӫ+߈zKv{2'B:Rݗj37MrHǓ8$š츂aCVX&gc=I.+|N7͵vW|IW^hGi!6( \Jg+6ڧV˧$>%JB2)e>d^88} +X62+V>,hpI}+l?10 EjE#_(U*7$[5ף޵q-!P0`td OX/!?-ZvP#d\r;lZ=841B%75 =@|1>+  `t@K(>T5.őSw]4΢.FXk4E~H HD>WMےt%a6=L..uCN\zuN%oXʖ]bZ[#_-K{^V՟޺Y~U:/76[ɛbbJ-"k2X-oM1W4K\/6S|nP%O 939-pm@KQ;3xAN7:Ub䍫J։2$ ^dCzm~浺,Y6B7߹\'Zw6|F;b`;d9`v9 Dmxs^M:V+`Dm V['t\e^$mm(m?hmx, >Y U >W#U.8zag\~H?;И #My]| ۫0~=-_&swI.㴊dMU2ryt}SJE(l>/:\|îݖ7Ï,,9ƻ#zN٨Lm\Xf`K&hcNk7k {&:JAԠ'6u΄ΐ^ڙauMKZN xq' Sn|~b }3'Zyz=|/bmAD`>81cDD֥Ȳجd_c'^+{r-.sCS6es&^U0oMo/_?v@w\q #CFMAmIθ[>%$/IehLbħ}^pML;?xY~]V*<>CpGiz2_/Yȃjt?OW\{;$yK=`IW'{ĩ4ul5%rdVhE$W̹lIMƇ]•1~h5dJnLr<]~LqcGYQKyafO&eXbFس.J.DFY~SW;lhmao9VZn*ĪOC-?S|:1ۺͥ%b ME8_rZы1P`g@0j 9i%)-縧%VzO11譨FiU!<*OƤ W<].+;{K̐d@dpD \fџ8ywbb8]{#Hڒ0x眖IHi1e]$=Ғm6(dGfGfSir$; ,!K FG`2Y]qAuW:қ!2o3yǡۄ9zIvW&N5Im Ҋ^/s0F[_e-ĭNa778=u:L%$ap `ߢ%\ٙ5ɗ8 ߔՕ#-p|ocHMI;}T b$]VxCzUNdD΅c6NɅ eeKb(L=^>cB +G%yL jzCĴ$f99恻+3'\߶Ŷi cYe}[{9)mIN9-[@"H4{!Jg D(1*vG~,6འ^,m+zd#.lS;6;%Htĭn&y[Fd;xLoǖkqmPPZcUQ#PQVvBtFh稂n@k`[535yʖ=tԄ+`)vz~e˪+zc80S/,6-I"(Ivhk@xæEM^GmjVlhC9}Glȱ*$nj]UOܴ|GL28(`FBCHVoI|в]80pqk $d=,J mVl>1>9yZf%]b'65FX1JQZ|1X뗍!5Tbu*b8K I͆W"(bx`;D`(DJiXUf95v͆?cJm }֝A-:bL=tkG$N)$S~TRWkϕ$Y?ҕ$,.-ŽUs_[.&2}7k>oз;8e(+$;*ſ H<9e@N#l5 /H/!I.l=+T·(>f=;jssے9[W2BY8zJܜu)x@ūee\c+GO+smVbY3@L.ɋ5zr@*t-[Ln5U7W}I}:'^6`.ؗfRw@ EebT{/{܂^@۠Cr}+p}?$#-IrZDUN'╤+2̓ 4~ \- ?<;RRHp#RNNйLD;ה LYsEJ brj~2sBdLnB,IrKe%'`;*NSf%G:Ip). WeHj$~k.ӋG}2==UV6+KWˍrw>*< NR.Iš$,3H1 V[}`Inh3tѝ,3 zflv$v2Q=Թ (ٶvJV?c;c][p 9@ƚ#zP*E8d+ ^pSZX*|㑐BMj$X!ŋH9^Vo^yL5Ѳ:H5?яњ8Ij)t%+4yhbZ/cD&.DYjgх.{_ozي+Wꯁ?̷מ},.Y2#~ ܬ/(+W|+ w~Va8È Vۄ[!|DS\<XOw0MMw,r_-?飯'WPuT@\xW~I]-$Cc_DnK݂+G\"ԕ}[0 2!b71y}0Is0dF]Sb#&.*=FYNIV+ͯF9}P?ܟ.z277_Qm~edj;raRd^D]<|j~˜8!wiPd.NyZy=;Ϝ) zirYY}x{ً+ߑI_aEB/ɑ\ یU٣6m["u E;:mRÁ>Vu}t'r>ø{htii#P~ r< [K$Eh6rB*ѹ}9HR5 _;Ut_׶ DO W{;\=OI\]_ӒX?iCwt&KK=B* X/og|7Q~>\_WdX;+~$r=܍&ɓzچ;~IyNaS<_ȃ\?1~yMsv\y,K7s/Qn^\L;OYW#3OiǼm߇n/#}T;Tހ~=j[I8&jCԮc 6xA MFgol03l+PEA6Fo;0vSo\jIc*8u!1qWkYTqQ>¯q yҋ$)?IN0~%IG<+ k\IbU째Wbli_-x&_\1BsE] xJOTY7^jygrMկ}j뮻4?/`9*I^)Nu2.n> 4C_x뺇..^,ׯ]N=?eٔoܸ /:T^|+8?iYm/lfJ6K[G^C*Q*$vr{&'!=>Ԅ5:~O!ACT{x u'FD6+=v+>9kdGc[EL7ߩAiA5q~m{T aގ*yBk7$Tu V/voh%Aj2DZ7I!8O \U(Nխe(IU/JVm*W|K_//?)wy\xΤ,4&;S1uY0<ܷG$(k( ,,ͳ%\ʛ up&+/LiWpO9aooqNCvر)Y74nG;*2P.C V*SmPډ` Cxt׹(GJ:샥aPy 2SeViê`a2LJ* 8?#!S5!^B⺹-%Te"fWmЌR\$Ne BWJY]Te=1+V8bVH dO$KRRZ۾"Vt }xm&~TFmЕ)m)*h)NeCOUq;Bؒfˁ͛,*OIYP{fg>P~!@8w-ȧqטu6d5gxr00&ay==3?N$9 $Qۯ(Aj:$Y(N('^ !TdBxz17eshm״_52p"1ڹTY[Ct%w,ZkNJCԭ^GtuB7+@on[alO+&SFL2*WWr@J$1.wDTϧԏ ʓ/;Ir4Y:j98&))1iikGv骬Z}*|9旂r+W%Q|%QtY}l/ >)op)r|b,vKm+"N#C16lJr㲒=2~K¦%YxtY ;~\ugIڜOltA?/ 3%k-])kWt*աyɧ6W\u\Cv.N=| Xuf#6Uq;/JԉRSt9:^BDz6{-aʘ(eҌehb/7٨;D R$!/mS7CVV>KB&^]zemM'R %Oek"Et&-lN!J[S~K|u qY%v j<ꪖS̴=[n[.}Y\%,0WVWeXG@ $5&+6(;$MY^}-W WW._.}H@s0++'؁Wg$vd'3ŽZڃ;3l?xg0{vݻ`CdIcsf^M3b -~P1Љ,)s"%6Wt2 ȵ_(JC kPApuhvkQ80!vVj$ Y*zBRX˚VUzA/E.ɗīW $ORlվ $UÊq'ƾC`|$*ZWߒTD:5gozSī+Y Ē4S_ x.ŒeIΟ.WZ]]Ozuؓ$Q _˒YT..˧T&bId7K.ɥKő#G˹sԔSڪ~v`2;7[$ؗ_yrRٖCJNT4܈t(~Нf<uW}RGm[Ӎv?gvY'l`ߤg}X^tX!;ڇm,&6 sT+u.`&jERS ^WU+ݔpYT[J~Z qʐ['s&\Z Nn_IVC\ʖ~f%&o2.wc ƲʥWS<'9Ӥ~'ŝe< P;Pu|r;3h.­<7#o''GR©ŋgˡ}eu8y&W_y\r\ʅ7$"#˲—^^xl9vO9xA7s&i: XKj3Oh& EBjlAíJv=4hK|ͻ>+o%`~ È0qh;.T` lFo E̫Ik\N1(Hr%JDR !4U>m:(nˋ/},=Xro v,{XI"v&msܼZYq90W:Xfgg~~4\MeXgΜӫo}\,K@A:*Ksaȗ_Wߐ\y2w[9|D/8ab x򥧾S˱?+Ri $BӻTu?hthudFڰ]$ s ;{ zliLjڜ^pְ_v#6'qy>K!U:'#ݍ(%T%meP2E1x8t˜+jIH0Uja^\'ݐHbtcŋI~lz;I\4$簊P^x$TfJ2y|biX~'a=jil48Bbb݁7.~o/~>0]=;誖\9[gϗ7m{+N=S0\}WIhod#jMm3z}&c]+0 ;f nьU{\gEb6Vրdž>̫o#[7 koۃn1cȯY{RV3"ZrԻ$1ҭ&[,wҸIG9rOnՖȗV89wIbԇ\%yۊSU8_h]Bc˾նǶIbc_IؓQ+=biۦ>oo>[6Vl} eNVYY]/7$yR|j•9҄{Ss&|g%.ANdeM'l~_wHKTc' cBڛ8h/A%}C~{{дzD8C7mـ]s?4~tdI6 y+!R=&.AM%BZ!MN*hD# 5PM>b#*ՙ%X9UHg:s*|9CVZ4DD2E]W$x i7'ir*AzE=9e`l<ytwG [ 2V{ q8ZfxT$ +:.e s\,+4~\.[Dµs#t%%Bhrw`+ .72GocH w ~)bM4 ֭~*=m|]_9ƞtH:A1e ou4ms^IT1tErihuwCm|V `CvlhxCu~tk0Fts{_PnUHuG(o 3ش!aSyڸ ~r7B+DO eWa$TTZY ӶC=Ɋ._,<'}ģ+\/jRƗ`ziIx~Ffk|#W)j6UI , A7ɦ&Y:]'Ɍ֦$\Ykent*=X4( 5dO TQ}EcH<0$}}|3aW5H2Lp6Q|T턑Xh~ƒ`cW'`^v~Yݏ0^REH-3+== !HzmO]"sS ҐDtyQR UM7E. Z)6zUj1Vvn>Uk-F6 u1XWq0Kw:[$H?-!%X7O8dIC>s%oF7 c?"$Yڗfpncx>  ;/T t]v{ـ|Dhg kytBLnFг7>U+[? |j~e'ɖ$ r8Ԃ$Z~\ Mqį*Ahi @)!4!^2$Gw@>㸯}b:&g~8SZZJ.9Hx5ɕ8Et6BMGUP꺪}&;5\I}ZzJl^I"va}D:eO҆XTnv兠?3v|]綑}xγ !b$NS ivs Pjkd6IXVڃ9-&]֬jٿ%mO3M-$F&P08TKQ``rppyvn n]m(+F@N6BĆO9o/AghS^}yؚemEϾ8ɵ &CH&PFI?J@?Z)1O$ |Nl#ε4oZz`8`zqƸXie_Ř-4q1Q a ~*չ舒DyBENKH'5/Jd)E`DZ7F AqC=Ў ~56̯$N#u?v9Wv 5>z [#O.pt.a2F2}%nt׷V3# ݚ[ g,3bm][ƭ e Ct}3z:WҶTºtf6PG=b}W'v+zW]ߌqo _VN-)궁iW.q;?WǯTm|  {z vhtGxI_Y_~&}LyzJA/pؠ /2{WЁ,h&xv5,AѶ}ȊNxHP7&Uޤ w' cdsg;B9 ZWSjFu{,ayW5`K@Ah[CJCWxT{/qFIƥ +Ag]m;ߦnuWұ4zѕa"w=K[;Zh_z?wq1Y7.Ǹyӆ uNNml! 헷$}m"s[x2Iѽsc6΀6\!:ʗG3j1 6:OJ 01ӝu*odڲS D)jف sV@V<!PT|X:8Gƨ}M/i>\N*mћE  !pZnj3jRmj) .;om?P+h\Qvl*uCiж;f =U!q) +}U9*ֶ\E壟Km\d~(ϑAi!GaG6AxKRS0Џ:'b%JxnYûD:3's)5ޒJ<`yY抽-rgwa..ܛ g`I}~r?IxE!dJIgs/|3}f5uB^"7lNj5Ƣh:mF4&.t $݊Dc(Db1k1"qL3biX= M®b]!8Sp8.;; &$:[ES+nKAC#8u=JBa0E%$b1xO@"4I TL:KE$}&ˑ n|L~D@Pt)ΔhJ:e7r2)E2bJqJꥺJu]WIgII'=*Cѕqal)('3.K5 M%{J+9G.Gu!*EuۨayI>_|BBBeKcRh{hh/T,_sQ͢Ek{(ѕ<)5(=UF+*)U>|Cytby-~W9Ү2*P=z]uT欖VvEmDS/T@wЋ1  o Q)M=0ͭOZ B1mum ڏu: A6 ]= zYzz}'4 XAaNCʐkXjx666ZYbbI18øxЄfgդRK-m[4Ŵ􉙜V&lR OlFwFG,ZQ[X}ZXhڔ1][[WlKeoll2e* 9h:: 8crppb9U8=wr8w~br孫еum[;=ϽC#̣㙧gg瘗zfo>>*ͬbli%>35>,/òO 6 B Yr*Sk'aaⰖpȥ#F)GqǣWx8b8*&7w̕W)JYuyj؈S_Y x3,n>~qrF _&8$$JtHܟ8uqGyn޻$))ԋ|9~2uښ5]#A` .@ژWx\V. p(͘\|l&?}ẝ^fyfeƆ-7l< %[+;'{x[[tk֏"5l\\anv;;x;:vZ<{'Ni~Q]]w~4 ;X9wӾYC ?X}veQAAbCڇZ-)u--S)Y6qsr/?~zxh}nE1챌c/*+~f\u\xo''Nl:rjO5\-9s㚣_b={<| euԺz~]Xa1Ŗ&_M~=qIRe{\uuYxyQʣw3O=܏{*ʳ ~<>~țT 696 236 JiDOTv(vv~9IDATx^YeIv߉7Ȉ UD (0H zj(3tf|P>%6%饭'뇶VK4l$VaBYUqGZ{m?{#3 d}ξml4/Q;VDNSzbX-[y 1@2P%9؏!qdЛVM]h~вK cA1Z=f^6` o#hQ ; z6V<8ǚn#04!hYG5X=.[cnU d)T]y@IVdS'̎ [lz,G~m;)UٜuIEaA0\V\fJF ٹctDKgP0A;%{oPg7m0mG ~96?bxxȶP?#@ Lh6҅c k h>`WPb^5Q 㞺uN|:QWz *`ИaIVy~$β tV]>ՙdΖb/U#0Q$'NF z$@T`8i=Z'{;ȓ߇@l$oe&U~ZItɀ5wT>5|U) Q%Im!U6ap@oÚT̽?kd́!C8 כ]K~/[:a 2]6Eu,(YNMrW4Dͅ/cl' ol;`MfsxQ5?..pIBvЛ~05o{o\ en6kB/ޜnW,c="b/s,qUKzcgN:P6bx wMɳvX#m\P[ 7q'4o(}tjF0>Ʊlm @~G lZc磴uG/}~ak;㱪z mUw['Ikce MI9b43U~=můU|>Z;GTgx+5T朞AMuԆf֞ c1OKƬ5jkIp6Z*t&IVk0߂y[ORǦۚάl]4#Cb'{NM~:w^wŔ\H_ʃ5 SرoCM8NY HJ.xcΥ&hKVeUJѝ,0z,61푘oi #u<~<\3ˌ> u;9*Vwh{<˾&M=A"[7J=OzjYkɼxG~DHʃ\!L3lV 6f|⭅;r |.g!ڎ]XYr5dA QokkUu^sPQbČ>O}#"yAL+miajI7i OQυvxA;A{m8a0U+d:teT42]&@'[+B#|l-PmCRm^܇7 76كKe`]j㢀 pf?~/ *}g\=r '4ny%&?:KS6tqubA祳 O#~U ZAwV*/Ւ c4Fkı阚8hnfsi<ɱ9(|1rkiq>:t*) `bq x)uxN:X7%Xdq* W!ݪ>~|?B:ZZ'؊^+*ZJ癩_}LwkrΎ 7.mCGrj/7fWcɼ; ~p&bc'&#d<}hu Xx u6Z ]KXwrCF9 jm)+jngN&Zٶ'l$:6y\c͢E/`d0OF6oN~`9GaςЂ'צc;SU| `!Aϰ\O["NQ8X٬_Dg |@)ߡsoN/CLq 5u^}ň0>"t~AWv1D4]tXbLt160pU35NZVm 16~.ߺ3̟6z8@ΛP"GF_hOk$ĩQu>]`#IUǧ";Aǫ Y/q}G 'tuUL' ӤD;0ZU0cl>LImnoYWoG8 <9F_'=dγ>ڡG/֡ϻU1'/&4p N_hͼARii[KK4|"S'F: M"l;ftC@xMq0q^}eʻ5<d#4:[a#aIQ~?(8:K=&8Z=֠@; s3.(ְ+tA}5[LI7a5P&W렫ԫ_{sHfX]!Fx|n>D>TNutb]qkQB!G!ϯ$wnKpvcJ$l+ג[OpO$w鳖lr.&Ei&`Z ڈ`Jm΁֖Oo:_E.݌%C$.10gb1eؼ^N"^̾7遾 c%n'jF0;yJ>X=F&'7_{J&fPE =xI6 op.hf4#T~Eģmlzı/> 7􏌸ݿ\euPL#hŲ/1#datim#SLǃYGq1ǴV/] ?sx|8[Ic֔7u:~~mK< |\zzq檆d\y@u/E^էŜͤ%nv'$Ʒy$|$<yѶqbOp Γ@& Wc'vǻO \iU'1rD(^k>ݯ %%4cWkP:~~<4z+ %Yы=(Wc_7<%םc9 z xwc͓_aA߇Zиe-U1FclnQŤ5O@oxVEXl۫J0WK036ӗd:v,G9aI>9^xc1.0?$"0R׆/GiYU} *+c9ƾ%y$dݸ|SW6Ԓm=0呪']u5,}>I(Ae+/ͦ$ ^$ q@Mb> $/%mKGLĮCTP˧ obV qGEfm`lO@I0; 8>b<Ĕޟ)._kcޭob3M%޿GXUA,&s]f~<Z{>᱘]KxsFM[@k%|LOsG]̙2Ѯ{۫ < U΃x:6"e*zku]5>$loTAD#.J[29>[& ::qL\F=$*b}?O:mMpMG-cWc|^kblDZ{ҭ6еq`>N\SghbzX2uk:P{ǀ c YX/ڟ~&XoYb)o8f(2#׸QSպ-rjgٺ9׽_ABRS\y-+N0sϝ:P49ccgO6Uga2UVPxH~U0O3*@Dr8%s,ʄ 0ݗLL&tbL '2nZ czgեHLX;y+ѦG ~\3|Ƶ<'u`j;WT3ezQ#hpׁlꝊʀ.ařy6o`=ɧl%mh6s( h\PmltEG@u^O"mtۄsF~£%E5y:F~$D󪶰WyBQ]jc<>a\JfO^ 1TVKQ`'~]ZYrLbxg)D{ LgCЏY!z])[8coLP>1oCqNt]\\o |rǘ,ѽ1nfo!C Øp[$"2дq=+ImֽIJ6RR}AoﺓL\f\@<ܱw1oySuUq1Pbϓ J&*S?t\6ᛎ|rd= COԮA ż>'Lss2uxSp^_՝9wvuZ!.0(OW4㑭 ^u2a˪M _Tߑm^XɢvF"S#z~7vt6uk}Lz7|~׵k(`'ۨzNO@q1&4=Y,n[6kdO2/QY@*ŕi[4iYxBL+E[߳ݮыv{Y{X9׵CJWX0 NJXJ3zG/0y*A] ~zOJ^\JFu?0Z?0^g#cc7h 4|u+fm h-ܪMZM~'OH . N' G`i|c 2cgJxm$;XW7e@&Oqi.NJ {cu}qREd03$&JTEiabmyUSkTty ؄1k s4 YEf\{b.,Xb#T) W$,]1ò9;r*ܵh^{kBD{LZ.PGV`6K|f@Lde dO.'L(w6߉*ګ/ jkxdgEb;HE=%m^XswocEXBpLmgMШl#oQi1|SK'J;4$s} Qg2~길3m94x>sU+\aKsX^$=F`pצo!.]7Ug2qa4OYAU0]A>j5RAZ\)1% G8:+ }Y1Zԯh]|c6;{zLwng/?Xi| 2HcM>#X1< {?k(sk?l8+]ȿtQJ6.geV%Ҿ1I>_XW6W =.9ٴ贠ŠI&}reJL B[)~LnМ%tW0q>&L⪮@/tCf⋴N7WY@H9mޜH[e|shׅ_e(Q]<>k1̃:lY13O7ol~"&b ԍr9FI1˼3"Taꍵ{ּ{=?|͑.Z$/,sy:8J"A|9q]XGP\kq}Ǝq2EOqd_[Lu.|zG3&,Ψ޽OCs0ǷacqƍɜLV|aN3Os| c{7VS'WXA_m} KD BRz+ PY6x;}fa[a v\f]O ~ &QН%Yn^z E9+,.6~4k\)Z~V س'1s2 ױR$ͻt Σټ0Au`8־G @j/w0c$p~"MMY@^00?3P77^4ݏC?A5׊ 䖶Ήk΃ r8z/֘jXuca~{qmkem&8G^MlէڵrP./F@:;J!`t|>y J{!05y'% }.ol11RWeq`>Gi:)2Asc^@$0%̣5}uj+dYkqD+ MS݌yZ+]{Q<IkkX[d=YAd GbD<‎*_].(YCbD}2w}ܹo]kvVk?Afb*/陌: f:3ti+?N(IЪδyEG,ӫ _\U5^eˋR4;++SE[$0.N ߢ9 `Ĭ},se*زuG5!ǕlP[h&h_j:WZ (qiY=N]l &g)/5>H]=4N1IةQECsPו܈UDG*+1rJ({U(~M@[uF%pd'e* Qqa`]k]o1aк]x{([Q][$dq.O:s}Am4}rB1y/9&GՊn'EX$]ļYǤPC΄o.=_L15,$WͬsZS/<竕qof?ƃo9m;]~X}/ cۖY>%A9pYϡ{Vl̆Ə:85Ƌ4ByiXfƦщ^k[˄`~ uLkiѧcOv-+O_/o#\Y%<<.ܩUCRf7m@|^L~(Dv&_Aw7%V˻6B5p0;!5$,^dG~EOBt7ox4 aT_gsDZ5e츋'GAl#N:!1oԴ沩o<{+ߩ&{gcJ;EO['Mt;uF,Vb3#C3'ê}W 05L_^'`_u谶7&UH^ff|%k T6cR*@KaL>jM՛zR{Jۿ^ۿbI-7'߶7~OrrDč=xٶm“m6_t|X O /~͑ڗi鉯 ^pK1@ )'X!B^W_?}ڞTEU|X'ͅBw,&:_5'"' !i$}1:f i1nր9kԏQnmm?bnG /oi8jސq*6N GZxkE-]_'h]sZ|ڧYC;~`?AUGNб1y5ssMYzHw!zyM^E+|ۼvU`їOQOg'uoz|?j9Ǥ[@.` MC]g{vM'!e\yIb>wQ{u.ePo\1sW^>}y:`zuk%t}9h3O*9i9n}+#|r8ayMǞL8Ļg7M{m>'[;k,e+e3&_G>\mޕ޵& v^ ~wvh@ܨ;G ߻~;x;GNoGϟi'Op-6mwovڽ=.bDO:Q5 w{N1pz2/JOur}q@]I@*58QĜY)ޯ? u'x@]o P3Q޹!4&wǟzx'x'Poalw~G|b,Py5CLF%}M!L(twyk:5y>dNŪ/pTZAߛq}8h ~ܬCr&)NN7@ו$JR#6wt.01pSBꞦ랑u'Ldd9UFs˲U'wٍƲ}iocW}Kd[m>vݿpl;gӧ3ڙS'Ipwv^{`y܃vރvs{g.>eyܗֳ/YwQc<o ݛrג[y<-c;+(ؤxȂН|S@,ݿ~7Wړ>vt{ 'h=h;s'gΜZpnjoi׮h].~ЮݺݶmRIڦ%/XOON&8<౤L|s1K>u!- 5QN+IֹzJOµa7DY+Ljwv lM_}yӹ+>1v]ιw&21sT=T{ ~+x\3мm~M}D7+/uG@}<ÃfNF8^5ψʯK;OrA髣LdF80]椯su]2 IM&N8 C:|X.zX 5lGcFn-RTǥj1lFgȶ?0NH Gzr~9O}/n<|z]Џ#>؋_z-9l )OUͻBB~\W1;6+*aןչۅ>.TLY{|m(fОpsOG/^lyrӞ=~ߧܷ|vrJrFzr;r]ϴm>sqbM\+wp# [/]skۛrܣV.g&bIqe{=v=wt{gSO={%Ξ ]瑗QXdևqeyb4풜.i$875Kw`NZovNvKx㪰ЇQa>G]q䧘hwFH~L8 k.}}ۇp31ZRSQ6X#]kDW^Ūk ?(.ƽa&\1XIt'A]f~G썁V%[(9i3qn<P YuCב8˜U A4vKf1_3n7vkE>3O\l_O/^x ~krݽoI.r'%wi\|ƛ7no^?HkSē/k%M<5Q%POZ1g>wӖ:ӓ[wtdK?fع>gڧ^z='l/^lΝkObI Kl? AB{mΜ={1O|wVv6}m >w5!YOK!yC1l℠f2sI?5ҎZ' Qp=Xݷ2*#&P;&HMnꫂ y[9_֔H '|:9%qHTk6&"HY+V#Tr \$!@ufmwf;+xن]qm9vr:gϴsVNmׯVxt%=yqKKk`ۏ_oӖ*`(|{'-HwB}zj֕O^|ӏYM8c #|21$ϟk=\{|;~۶߿c'_lwBN Pjq8ėM4gZJ8Z>pH;%}t DfQz(NJ\4%S5 hVMy5[R>8|2rɚAJ#8)n >͕jC=VxO[cTOp5]g?ox1 Jp TeV Aﶚl+}ƜFBzm8&^%g[c+㱶X>fo%'ZJ\*ѳJYգ6::f+W[!{YF:=w>Ϊ}w4CHs )䊺{l sf[ZtFXկ@N;OFb'_A_:XZ0_lypإmOq2OOG8E8e]\NcՄ/NiJt)%5rK 5N)>܀"r^)P dz3XqW7R0@Tߢ\ўv&/T,d3xB  )wE6!Xc]Nq 1`xU,[Q:p<@{%! ;W3y(,ԣ Ē[k4[ j> jGS\_k%nP{ˇ@JV0Φ6cp]Edlit~ꏴ#ģpxN;'x, : ?#fgG_'¸:u=oGs19X74:Q_i#Գ/?yүMKZvݳyveOxη(wlOY$rAv,vEKj@[C"V\& ;1nY /ޞ|gmSO?՞x ޖܞ.~~_Nhڛonݼiu۳AƝ\'[ozwݽ}𩹻˄^X;Due<7@IⲶtiMFubZٮD#d[H+ԘbcdefG$&P~6@X *MgM=L CwWzRihzqiVZ*. Lof}\ù>g|l]%xlXmWP}檏z|NX$/cX#oEɹOE?%}PaAm֌m5r8. K!c{rhkꣶn&$'zFU /8C8qmNXf{~TP+ s}#)ĉ3hORZOc_\aK\[1N ?v3Ou5~m:s8Lj;p"7d k|{';~{`ajk42o(M=M-;EqM;ܤ]Imp'/gdse9+&֤oPV8Rf>/ g[*zd ÔXJ K?uq#|^=W%~F:s] 6c~U}ҧhHkZ7 zwpS/7}d{M$9*"zs8+ T~UjYSI}tIb4$[YG~bMGc4*gP{=:SY1)8 ylv1[gp?q}`ʮx== 1[^rQblH=[|C+yW56 ͓[=6/|4O-ތsvm!bh)$#vI{,y8`ŵp6""N6_xc<~~&ڝwڭ[-znWK/;}^??x4 m\iδG3k.ŝwß;=5]t?d;$nNO7S~>s#Y֩O9ݶ€fhL%@ YkP `1*ګiߨ~Եnš#y7$,$;N$d} CċC#Ҹ2澦LDc~>\h^!-cPn\'V@ZB_V+I=vJ0n|= /ʯJ{ڃ~%׮]o^ηcO؏g%{3(KKWϴ}#Z[d$4ߛsVߗ{y˗ln۶$dhxN~$*1^F`:ZWvQgS7_ħ?}Pf}vpIBjk#ZEtGb~;ls~p^)fОt'~̋FvT Zqh0A7лn1ĺU&տE٦S"o[FLP".zTV[:Vd㠝dv3S:ـPcӝ1`w՗2?XSpC00Y,*#xOp똢MSo1ϰgj_#X*皡AHoŴ/2%׷#`m[6C4S#䱓-T#fdsl ;\{m*~#ؾYvUJm7,jp B1%-mv{m]c=>W,W띻w K_o.]jO<[I+78Jg}֒ާ۳=^xvc5s_}䂻|͟|w='-+q!]yD!eV `NNvQ(.vvȅ =Ce|_Ww߱`-i3'~'=Bc^|&裖 D׈$0L _/y?϶mYNX-?7ߜ$k!dRFI t<%z39KUğ'̿lxuC+a?MxfwIt_sB7V@6@XV%>ڗksou?̌F8u>dR Sewa:žyVtoiz4Kx V B ~@,I#q W Xrq~9VaW沨~Wu+Ըū}K8Owrge*]t_:{`$V%)n#;j笰FUE<MSGeN1}c0%y124-gK!hxTxk xm(e M 2HLEѳ ܠ}x |n,$3OrN `wa_yeO>=Wc?7/?bJw?MP ";uS|w Zk4F] bsd97 &?N&"UpWE@{Ƹ}# K['&:$l+1?6)@Wv#'e9Vf&dBXuevDrj el!t hM[a9"!Q eW!e]k3yB|L. UJ\g}X}.<;Ѿϵ' dqW_y떧=m9(76=$7 _v]G;]+rsܙmx`6^A_\|tfƛTlrj;sjq'i %=?~/Af>d<`ϴ /cliͫû;gP[z7J yꄢ9&]~E>0Xޒ,6>&^i#:()ϣ" Co򫸱WN]kΦګHuuN={Lψ,c2KM_oW,S h:kX/2N2 ?2e\/]c+QyZQFKvK|8>+@z?nԇ(/ {G抳֌>9zDj%L]'Yγb' j[Ѯ0D`K,Tyӗ 7GƎsbcXCkE0{svߡ2)NqGCFQ1]WaOS6AY&1.<ݠnp=u|{s^ElE}뭷=9%Wkf/F.g$]'S.Id?O{.W_GO_Arӻ>s] mERk/>g_{sϢmݹN[ }$swk̏_&`h/ $I..}\e2~#C|>icb"?? 4 jOw'ig5с Ѝd 6b>_]\:Vh1,11ϮQXVVh/:q/%? L볏9 T:q3|-P1N_l1z7tѭ7 ڗh]o/>)yM-ڮuCdġ"ٮPWM KFHVqz%DYu}-J\RZ[y/P%XݷBЍG؍;'aITٞi)e]m|]&=<-~QMiz,Ph5md`H6۱7r#m p=F?>fm0R'~]1TєӪrkAFA.+M}7P-v}XVX>-_"MJ@aq{b 9{~'W=9&ɍGV)K{7,x#0Ag*MEёZWE?VuK+TƏ3p fR{y x$9$ɑ'H,|Q0( &[6 2gIi%ixd[rȊ:VP䜯q: Q[B:0tԕ***</Oq4bW}.Ź5 m4㔙p M_gSdžب[3ō :Fo%ݤP n gKCMubʡTwu:Zn_ U,1~hQFh+݌9w]?2àCP-| u#Gq9Yrs$PUtcEj0p1/kV%:b|o:|$im)$;[1άH4 Ol=l \瓟)O-O:O8wxtЈMam8R>!cևZ*z+c/ly"s_?u7"y|wRzf5¸ e}A|wqyc 'fsIӳw8ehYu0xM@HKHr0Y){Rw[\߾}h 8n_k`E.>Os<¯fxR0`lr` kP?Fyy)Lh[3|\,\1Hbo'vdJS[Ԩ!qXEF`TƱx4"ͫjV(,'S:7A. 1l>LƱEqjDʣ C/R:ZdrGΓG]iB͒f͖04%sum42*Ttv7y_½yj1&93W: (i:& M6q]C CMK:Coߏ`Lc+aFnydkwZxF qam4p(s;vQѵމ3h4jȯ)b'#+Y*΃P2'u9M/%EwFx'ȨkPP%ߠO\wU7ʤ~Y=B9I(BHyq,6OcJ)o?N̓C|v~TV*E]xٟw BbjR_ {$[0q);1wQyH_?sK#q.AΨ+9# ~=faq|`TS{:cx!F6cI\el1uߛ07L{^&yv > YzѹQ*U$V[I-y,\xج%@ A@ wЁ3t3^\tz4R4>YW>>_su5R#\.m;XɈ9k@ wӏCmꤵ:7"3=W#RC/e/<.uP <;w%?CgΜݼqoby?~sRܙnZk[ėԾh7t˳"qVs6-ح._C{=TAH \/ùGv22qN x$a{ :4ߖA]Y͇ZLmKvv%wi_{qq\ cdw@|-^ !]UJ5Wі?="To`wx'x{48j[MA~eC .kA>q*BVQ+w,PClU8(9"yHh\DhO/0x݆ҍB=WΤguv, ~w;:,2πuA (<&D=rwp) Tmeqz'V"C^@ 3hOr8Z+mr7hĵꚑR|dr8^IxF4*D]k.%qac!:p?5{q)ZR{+,|u#>Awnv]8ܥzZ-Oz/~$$m#?6\1_^|9 C'2'H'I?sg?q'N[{2{~u# 6FcBxFDxww'g?b}'> 0֮\Ҿﴫw,{ - OFO=^`b8 7ժ8xA'Xw &#=3􄪠rv)/|{o_S<lCs:k Vƅm?jk菢cN&h,U1v|LNlNƣ9XZ}Cz19DmjkNԝ\u7Ň t[@w|fkmd՞h,QCð`{\h=c@(j#ʼ sӚ -#YU=߷($]|?iof6Vs s5dõ?g!Lݵڥ.~m^V;xvͶJ;{˿W5>o~j_^LN;'uzR~o@ ?/CL% Ӟc8"0a+:ޘ{E/rs\n<0~߀oRxzAحؑws+Хv G4'-'P|m|krl:s"_ >l@]nwodw jQ8ejQW>׌=X1S^ݾuOv#*?ivUڎcm7?bOj&Wc(֍U| CJ;:{YЎTlg u7v^T MQg#,qeM`[Ρ#Ys`@Gu:z\VCuNi_ae k/_oVoofou{w^W۞v=k$ﶃKovv`yގqj{\~rf%E^uEA\"14 F*% 5i. SFxdbU<l}dWKo#mX&6u$_FǺzgWk/#{'"]Xl?h5̛3Kp? %g2{j<$PhpA۾N)8?׃ +}۳=۞x2zm뙾ߙݷAnߺ^xcZ|?}DMWwo+6I7n^OT8jى҉(/=pI8T𺮭X:aZPmxQᧂ~P?4uV J%FE}ELN 1<k*NU?><F{utEc [ٴzu4J}ѵF,!WOpGlscR5U̺9,xAd]ȊU: inj$z3áOƏu4;d!B |royW%"Y5hV^MWIƜ+ mc$!q+G9>_&+̭F Ik{Ymv./ﶃW[m͒1a Ck=% +o~vھ%{~}{;kFlyFAX}_S=tʁ S۩n;w5M|쀖`Zkv+ny>G#۹8ų5d;w|tr{]{ $zQ A :v5Xg| *pJ4#t`0AX`b]]냶Tw9V/I &s_ |~:ݵEpŬ2伿R~MxB1KY,[)5St%ޚEmn<ڻx~_[R/7e{p6V_G $77,n~G_oo|\y˒~wӯAvAu` w8c0 E\ŋkNuta*Iq%z#^qĝmm-KLs{?$v =ڰasR::LuFG&? ^ގ/gy|w\e!"3y7sA-gwH{m[~fv2?%!#_|O.yKxxO}}37oeݹ{׿ڵHn_>N|KCb1ZӞʎ ɮu)$b Q3SĀ#lXYؓ6 _{s|xM ߒ)xNo~ycDz7Ng[?/?]ܤAE(?LcD Ǎ30_(E{>rXVW'ɛr ]n.N(t _J;V~mG,Y<ع: g5b)mkK|RHrųwZuN*żds:O&R^\+>V:SK[\ڶwwlb瑹nz1L.HyQ6,? cRtnOlD+y[mmgImƕm3&Ru)[TX7ymٟiOК%D"f0{>|7Ih]>nWyokjf٭;mcwyv3NOkG"1=#M* cm_l[mOXEsp z̔e<3's8Io׈ɲǖ:&m_irﶃ-=Y{vf{ǸtMGn޺wqoWnnW]kom ?6?9s[\+ \ɲqA@[cwnx돋fWwpu[>hf2Op @ADjҒ2~-'#=>qt;c8s%]geXwwwۖ`#$O<6_Bz<&E blIzg`b5$2.VwKKEDfn~!{WSCqJK] 'AIhwj?# ?~ϜA9$y9Or@=X3ȱ-@Ș?fGYKb,Jk,/."hXab4rGǰud1LI"V',a2v* Ca~A+Ⱦ]=sV팗i/?UܥM@ m[j>uC^+1.9}0@eԩ+tbţ;~ݹ~jyB&]kj{0uΫmֵܻ۶o\J|O 5!jS+i%I;JjࢷKc^WؑB;~+@|`l ًL?ȳ0$u;7p1YhqL8ILgvMJZ޷mL#,;g1v<,y]+ܻe+Sn~mǾܶ|sΈȢ'IgqYkWwpu֓\Kpym0%,< zw' >)@{W|`X xa*>Qwk@ /XÝ[m, ⯼>u/ Ȫ]wwW2LKFJw+lhY5*ɟ b q)ѭ\H>B;<"E/,w'uMNXG`31Aqw ԝΜCyRۃf+(Tz i83~}$1}ylhH&e0 .,)XQx۲M +J CXQ cMUKpWAk=xYB5@:b8+"d,k??i5ګy !۸cIv۸߱ݸqw~۶dcLع;$jB*ZɫY MMIh|Ե%59Vj]i% X*vVz mO_M9澎[&w{޻g=̯?}\rYS7H$c~[wQ\|+3. eYsIJbEm &c hR'yJN&sA܏6$'L69[N\,ewUԟ5Y[f}֍ۧ,=_Ņ o ?i|_Wv㸖,kj|q*t a7jmqta7Gb⇝I 8?ҹ]GoAcAoz]—fܽ}0Sm̤N}ҬX1{ֶ+5:կPx<Brd:V3=7 K&*MpD!|V $u-;; >*DȧYedћ_! hb}my]rogݽѶ]V3Ԅگ)VNYOU<ֲ%c iMZ7*$j!Tzcm 6?s6̀I k#t'Oˇfwp &It X̉b3`}($6Q}>g 9,-.1Ęx|]/u}lbLW^H*^'B?~7[v&+D4j|Sj-cpU{!>V˟C䉩?©#Vr;J9I5M/EoW36l^X_ֻGVL-+sX"58G1_:5iտ ?rj6ؙn:"TgY]g:pKe_C_[b jShפ0b!Ї~/vyk- CZ*ړA}50gy%y3Ib^o/ڎO/maݶ{v۾qܺH,fNw9RNZJMpOWS5DZ%hB>@V*wpt樴O m&`bf\$]iR;mq MJ4,&xĘ90 qmoc<3t8>tO qKĸ?i@ Mz hϛܹc(i?7AYO Owm|{y0w8O2ڸL=z*ksN|Of8=7U67H7܅/ xQNsf XlC_rc`^[ iA̺ZN%%OI? ٤39rؿbQ`x@<1XϨ{kb!wpC9] '?U밠sd7{$*u}a 5گQ~^dGŸm񻷌gms#f߇&yIӧ{z)N@$&KS|*Kut-JpDŽ} k hOkmG2~gF_恷)(XϿ8yr֤6]u뙵_xFޞY : w=VO(X# %EGp}`woFΣ,6LPLMB N'L*nNs cHᇒ a>a|~𴩙,KÁ:AVaOwY庑rA@c[؟`['-ݶi} )=aqb֗蛘Os.3=x${ SQaOR3lH~ye{6'I`-^?1&Φémekg?kcDsO͘N1۴988cf~%wƾעe b8ϻZyޮь1N01;|$^|.pެ)i8fܩ@x"kd2;&-옎g+Я (@ gNjbFN[A]D?sS %S +>P!BlC^M}ITӕ1W8L•QGw K5=pOpc8 i;_BIEL4XhKyp}} f%~ezA3x{&nxmU0לok85ɪZ _Z#Ȯ&\R,T&Q6~F]%hymk1|vjk &:+4Ϣċ;H'H]g&.24xT րY'Vٶ[mnf msk֮ܕoQuZ&&g_IpyD( &.gH%)@:`%&}`1ҰDϵ?9I.=KBxLaoXfwbIl:J;N'Ɖ6هNe\MIs|$7;O@ :G"\NJcFRGdl%BsG;bq^tv7Y&$\nMw铨 _DlB1l-N7#uʔm4V{2l#bI&tѣv=`qF,v36x\zmIzI?L/o}?{ݍ sEQ06jq Y:r 'XhDȦ F8H"+{P1:bv{f!ť b&h=40OpOVFUP }L+ t\ν91s>֐ ~wz:99ix~]I{g comV_ܿvn\0|Bb$$%sKQ2V=QSHVr)JVWuNM`Ut-[ . OG&BAJ>GfkR{ ڵ<N5l g>dTbV_qL'xE prs0M=-=O>2vy5P o9>cwCwE*棃f1c^9LȌOG\#bJxgm^v C"s x cDKE7K̵ 8/K\%L @Eqx . l \ۤOCҎ$F[쪢VO)§ym}EOZ"{%}3Vªd[ݽUIh/} ! q WҨ"d@M?ғUQDRPVpv˿Ҷ> K`xB.|,[ltNyr &'qhU .H^- d<i>_ 3<2;)"]uwpIX|ܟ7Gd`8޷Z7ޞM `#Q3h؀_8nϷkMѪo,%^Y%6d70%*5ɀ%ȷ 꿢+īasɦ|O~hU*O*_[EWT=#oͿپjW.oYgI^Jps[ٟC*L$ƍ% p*λ D'Gq@σIXD]m5^6bIV]yB:Pp3*gکﶿ'>ܾ~w"R^kZږX/ #YKګ T~n 2SeP?S?($hF]gO߿~ηc#[P(ԓeHtt; såRqfj@r8cdè,@Z{YsVUq8VhxGjKGg\9PWc= 9:YyK#QA%mBr&< Aj[a|[m]0Kn޹NۿmlvpΏDDٳ')Ν\j  n8 9d*)]y8Tz{,P|P+ȵMxraAߍK7^$fxqͶ{vpG(\g8ܚĪwnaQ%1E鞶˲zB>kBUߣ4pq6r?l&InY}m]6 l1Uh:kala/,곏?g~?JLkNGo'>mV|&_M2pk358Lms9[roQG!3>OooQX1&$z@$%' 0OrfZL0>8Lǟ+s=}?v齷_~}%|,S?tta>*lazrԮtŨ> U^m>x?07o^}v}Ͽ{}s3sk|&9`UsMUpU]p8dNJQ'4Lj迚\H3 2* M+$qN2Q.I.7dR{!㧀}~^w۟۾|os.Xܭ́[Z8> Mj7ۧ6۟=~md{'[KFPqtUt皢d_T:뮽?jo~ܗ6c8 ֊# ٜ@[$-jwA,b`U><TN(sˆI̯s[ϽFں7WlUL+A$fK ]k=>][j}zYXXdK\~j 7ت7bO. ~YXBɏ0U_ҭ6Kj#=cg(Fvll dS}mM9|Gӫ?ŋC1hnVNuJ/ktK 5PUocx= }*ype#zgvn\XjalW& ?bZ=)GmNr$:xk3XX5=n~^Cߕ V Y=S≭/Ɲ2+Uom}ǒ[,Kx-_ ݹusÇɴRs#!#Y%i%-I-|Z%K*~A5N;W?mY37Ӽ.`Ա4F{q6/.Ϳ{[,wڗ6&cNWaJn+MUZ .Eq`q߼v#֍_[P@ps`q/ vDz"&%Wʹue-?9Hnf'8CGrY|ݩ6h0rR\9 +?pDo]=&CbumSkpo-2VjNR %,+O^;ʗ|Tb bQG1T_Ԝd#-ʯ<@D#:*_vKkʕ++_JaGOI7ڎM3]<h_%*q@H?9>(}N4N2U 0£v }ujR1H[U@0^e.54aj$g*.zDtnȨjД3K2_qaU:NYg#]ߪhWxƃ]KXeɉ'6d9:wTD{$$UNLn$eYDݶ5?x|!}ko߼mJHx`LnuV&ܭ%$$~G-{i?}g=gI) {d<1ƞ~=+Ok7?Z˖:wu~DNB]Tt RB###Դ*Z~}X h$EqB|j9\3=kըP_V|lՉd@5^#ߨP\S/Z ~}rYwX0:5fBN.pUVs;oQ+ݾ6m<~paٳr;׀iߢd-2VW%$# $v6'־~?s{} \tߟ֠D[gj ]mM=Jd.}zq7leTKt͟%1gӝZU>Ub%?{D\ܹݵv zHlG[!m_6xguk&rIɯGɩ>:s8gk&t.yps_2= ݹ;+|Pg<_q#,qN<~wYwjRP֡T[ȗ ?xcߒ ]QԮ>ī6# F?:% WQ{_vG] L%=W^y};iKwmϷ/77?=`Fm6&q9<#M`$͙OTz jsX s&a/K5ZmQ ޶C#TԴ> *S0k`8Do1&\s3SLqJT 񡺢:ɋx{n@uu(V 3?5ꙫFj7!c]Ek|Ed].|_i&Dxgܾ@= Bky{akVC1$%Y_3<7Զ`s:noٳDX{$uEIN={m?l{+RV r+]3|<*voߤ̛ Gxf`ɭ"V* =@𫡛%l2+Yܩ63]1ƛ]gE;J% 8Zc]1 sЇ!TѦ.,c.z'|+_zN5c~n?k{O|}_l_Ws`<[|/o%f69SHʊ:=+iga09T3 Ÿ^0Pli3Շ$/i6%TyKl*oqTr(^a*cjx حRo)]R{ެ *Y!:hm%PEyW8}8jgi u_Iw[Yץ=.H ҎDWϓ[OlnoNɭ~{IO\IfIluǶ&>@vKt?`{{~ݵ،0̝ }dέCV2yI_ôYMg|8IKnT5+lO-+y]ׂNbڛo+;v;=dֹܡ7<ֲJns&GDWԞ^dbp3`*sl+5Av) 򕓼AԀh3ukS Yb+`a'X%%z@ىqѷP]Qe)[h+oR_@umjWoVz_$SO׏'|?7z_฼K~b+#f}(ғ\OLmȝY{.Qj )T `ޱs` x!E")9o>n۵ ADڕƆn_z0g3>;t$z/+CcsuuXC#;a0'T9&/WOu.!Uɝf(ˬ~_Ito Kx;&}߼nI-ZHܒ̲VE-wm-?qg=w?7$J*kUI%f iL[h2 _=8Ü͂ZqtNUԅ"xԕXS"ꉏ[zK}UhT=G9m%K~vթj3"T;(p᭷j|޸_|܊ڟ52Ӣ3dTsie%uz- 4Mc:\w}H` VKjkX݊3AUDMsy8P1(R/k-hk9owɺ+ONWKa!1K;Srբ?X1h{]i7m$1&{nkk}dFgnIjǻY[{nkK~?~oҭ=1c:Ї8TSo4tes{pC,s2;?e'~ܿw؁%c2_KR;_۽mI;ޔ`ql<3zQ ΏN\ɔIH֤S90LCOz^ᡉggS )V A!R4$yr h[A2u7~<ТgȫD|hI҂G ҩڊV]k0~cN%;O=i]TZ˿xw\ܸq}?o| ۴"t`XY.()D^])ˀ%_? x<2SQq+kgUŶҧ2[%cTѕKvU&=j;jƗ;9k; vp"iKʸZK +$b6Xݓ&φ^}m=ېlٹw$Q*[!A{_Mniܒ۟?1zLCUYVWqgqvvko]`mFkZdnLJs82&/v mU|0빃N?N&~ sLQK-ʔʎ2:u}-_c`ˌ\-uỌ)۟<#.@t՞kzGW`5I6:M NѳC69rVOrOL|&{CǑ?4 t@[p['zS|1LX0 I^dN Oa0/٫OWuj е {K7<#F}G-PKlj[_5'CyGϷ&տWۧ?iץ4 H{b3`8 ~qXf^P xIvWE\LF-=@!= Kv^j|t&y1 :3t9ft"zԭ2v_WWzWu?07y쮊"get,M䶮WbU*bҠz8ߥfaVo|mǛƿ}+gb",,-E.޹վGr[n;ڏo,Pnxٮ}<ծ$_w-zlnds7rw[Vmϭ/=2]fo>hlAjnl+6'jGL0H/H8 ld 張gvђ\L9z6"`a}ܹ3uœRc [A^ITbUa BvqIa~Q (O8OGJl5qVw3Y\QLޓۙ:$(rp"ؔb1,k?#v8'PcY|U,@Fon>m%2 տ+OԲWʄ-}ʫ58wd_ Aqj{qLbHw,D6¶@w2(ҡ'Nd5ebbfÇʼ{"cIiS{ wow۞%Vф+mj1ܙ%UBKKBRڲ&뿞kx{|xBm!3Us~l~skCK;Kx%ÿi_m;%1qH#.5d"/}~DY\ĶK=Vl_OƜj7119#t"d[f &] r}uK`y9zfP*!`b|r"zaU;`L/%?@mڹ%uNDZtw:]T/*zl_KR j]dHS}W j[CvaCc/ߙ@OoMtx\w{aAz4d6] Mwa/ E׎`b>wFT[Oh@w;M2ǃ~kRu751)Y7b[o: zp۱b7I2А4%}0}X'CTTgb+FmڏI>!h[l];mW=aa*xpw-% yݣ(Jnl+Oa2oq2K!1Yu@wFBC>fxH\!ޚ jщ렝 SNځ=i':ク^=.d/` Tq8GPGJ)jR/cu1޻w ;C> I&HG^bQ]u ߃K\|U/}~{IvI1|7y8-ҟP*J䥢O zut?Y/B>cd7:S TcS~/V4vW/jCPٶzPKe8h|X1N^#h=dLԘkϹ#>Ng_ަd`)" A펾氱Ϋ[VH^n۳=:`|&I܍L> )PYMnԪ뛮JpO<[vڈ<_ŚfR#l\%Η-M^z#{}{Qr+V~vN6^M:@BZVs/yLZ2&;E|2m\~ӛ]+9:3l#]:IL{cfίy uDVrV/A:aYI+mhP?et`Eb58?J\#s 4േ?.M_( ?>d,3gϛ<}8Sڋ~#e]w~'>Xf>~ݽwwg{H'sdJr#6r%Kn|w4XNӉr1)0u7--־Cо,@Wخ9u٠|>cV{طعK{%$n,[ꎘmj|lѿ%I6 !Uc9[pgf[|QNOb\BV\FtOCb? ~aOݐ\J^Sd1Z51G[ِwq/nSEcwς/ G-vˌ$|!pa 6:ꤏ\}/z9;E~~ճNOjxS+ Wߵ["  3k0v.SA >DKz?!W3zC"fܠUuQϾ|^m_ε+HvٕsEmDx ~>结[jQɹ|Y2$ewm/v~䉲wMe.1Saڀ [,:}<瞝rv,M{ю֣ V/ǫo-t*dGt$繕d3lVmW}czтv)_`c3mx 3ѩO̯? KR$9W.}wGFg,3\nvJc<>nOݢm9^QU8Qe̝ׄܖwpwݞp\y ?-}׽oO6>t4Avh&e0x}ʹ<]kmo+7p/Dȱg=EBwls>#̭(DIW ɀl#^Ve:HW Ȳ 1p}.?[ˇlQ98BaC?0.[X2"}yUf$樲g֔+քp 38_d;@]1Dx!9T_:aϹ{wB<բ1U|==6Jeր,#+_뎯X%kKpaϴ\nؕe5'عoe'voeɺO0wo ts&k`=ϻW:]b\kv-`-vf}Nck߾yF<$KjfW<w~oٳvc vc[n<꨽-:S5cXyrU5ḿY~++4~ʷ[[kmo Tg9-^&{wp,6ΜvG;f9u˚@;`k=#yoOh vWH6lvA4s^T:Y jN'?P/˂_pe/+ycRnIܖh ;k' |w~gyի^UH!-Gʏzih0WteN~ejmeܽiC"m/C=}2V PygMƏjn|`hy 9c z}0_L>ǩ+Z~ Tt FĬmcTë$Q!aHc2m%i d?`'}7%[Scn'?Ҍl3G@^˒C.ZKv+oofU·WUj^ dLi,OQmcȜzIgf**8ԜvDr֤ڠ V95>@x23JOFn~Ry/|I咁5V-~sA(U-O9y\uEyw맆4L9[nʾ>fhkDo[ݭrվV5˅<JfS-# Ivo#XB֧2o۷!!(D{G\~0nfRQ3B6:Qi|qI>)5 o@ nl 懕v1Gu4i8 #} Yr 2_:#7Y[P#dn =Oe?y?;;]%!2?_26@֗xґ~)9% ( v-#3R?:kj>,tfEk؄̆ج}g9B$-4Yjȼsk|9*ioA?R"Sy6*5)D98s2WGIyԌt0HݷBYIX^B3YG(iv|"6m- =<7βv1ǎf֙S'Ͻ%Y$vhUy55{;;屧Ζ+[є{y֎N#{ &uh-JZ\}E>*G-^h pn׶ʂ=lϏ{]kcEo`yr<"%viKld{ۿ.{W=v,~X}  \Ҏ@5q)!ԡgiTvrI_#qC|jC +NH刲#fXێUV3ּcй\Q}pߪoo3 nA'? K'n26-h Oۿ]=9#>9rB`CvB__y‹^"tge' YO\s׃fnOn]dW]`0mT:FmVYZ+I,:C(jIë6 <%f8|HR4)K m5㉮j2Ԫ ́<8jlu\o!w9Yy:1CG(ϼ,Ur}7II6k?y[ʹoyV<3'[raYh:$e/fLD0 ,yը^P]6V^u#*o@=&yG9TyuiVl:TOZhy3}:qhҲ)HXsĒaM"xqA:tƒ?VF.]6c'͟]V]7jbkQF [\x*kmλG~ɝrjjhk2OJ|o+M/|XH'm/Ϧ {VW3!\|U6'Y,)|s-xծV6(GYpU.Zٗ+7];s<ɮ鏓 풌]' YDF'aʬv~j1%Sn6lO/zУH.h [=<^L.158z[ƀѷ[ 8@x NQr?rM{PyIKN@Ht$]B?y(jW #2#;+^mBp]]^ 3hqe_3x -d-p <{ ^j/ۥ-Wt\!ّ i?ak$_<&=7]έ ˛a@%Nf0)ᄹPłlCV]?jo #;Cu 2h@d#1 DɇOQ0":7[+,(Z6<ÚH1E hL?;X7̖S.ہA{x۟kewOSvo`wzu=5'aҎ')O94r 2w< ~Ă7oYU3Ou4iHǰ%T֙r6,ؗ32K,#n}Z՟6z|XJl"4urUT cH4>۫xn3^\B7dA.coynD8;ZhQA]\mw(w⮲:f\E6M.t/zo #|%ې1xINa<o/{9< Wj]z6:yDH>O$˂]]jWA|'OD :2y _BGGw}7~cyϝ:Pd3?3}_컺w''|ܯ?P֟ΠYd io;> ' 8c [|`Y4'dS5cxJģ!> Mfz;wVg^e >3h1YLa;-XZ6b.\q#+&?Q<!ev;֡1};x6htѡzZR.ઍ|7dfb.pr$7[qOBYtzKZ|+sqߔף?=~GٻRΜ*ZzO wf9kICZ+B=[n߷:[ov%>Pn<ޗe1Us_(}S= `MGlfEsj#Net&jUprVau/>u|ZNs}7J=o~)͔` Vvy)l$x$hvEexRx}#<seYtH,F`n/ /&%l|;!xG>D9 J%}Y/_ySmfYhL`%}s㯽V~(:F>ť7~gs9N'B\}] ;1}qP֨=3'Vf7+.p=HuyW(9s} $3,<^zDY]95RO@`!=Vׄ&k8%h&69|uO߻.v~˝9S^gnk)H2!]Rz{h.=ԱmW7|k?TyJU傎!\I|'-q-liuUhȌu !r͙3{5P>XuFmc r 5u겎h GٶW[[r[>,[+?;__1OfϮ8ş]>\mxod.z'N+yy롏x90+F GZp[D]v eẢüTe_-#ٳcV\o l#uےZ[]hE;$}p~}^%?rx ɎϞ)|W>:;_e_IM(>$vN,A #OLgd>A-Au(g9_'gёv _,TYW4nm?Ag>l+ hEdvy,nٗ^  ;6Qf'/x#X̢OfHC(ƙw揾0E8[|&?wl ?U٪4t#<]չyZU$$Xs̘0ꚪLFNGƚJI.A*{۵`iPNM '邬frK }~1~&3Bm|9ҴVCNu^Y/Qp~rY?y]:EȃdkWvOUOm q}>&XX Y_*eml(]5'wʕ鎎TnsnU}n?GlP;UA~MGZL Q_*$=H1asƿ*nZ?Lk k[Z[}8曊{žll%zn_~e˝u MCb6g>ZOCOu2^_`Ubʲ>r v<5~-ux )V" T_j9ˬ=rJG5њpߌGb4>taC`9@ m'C`  &re_vW| ՟YصeWOO6Jn-MA>4\]~ųu~$ŽYɐ<_;.c9QVF2#$CΗvtӑiA}ՙ:vXwME6š ;׋rrXխ V m@Tz]\W7p8q?g&gwxWƓLNr"+` xJ;jǫ{sZ¦{dD۳3>'3ZS-زϫcm]eyrx߁uxc槻ef#ٚhv,H~޶?>LՖз?dp߾[n]ٸ:%[]p1k,~t3M>)r7ŏtm<RBo5{ho-7`}3K6!d$.̒AH N7;&u2Є̓q ۿ=̄&[Đ_jKds_n3ہw 7fDf'[>ym+,n_(yk<_?>7>e*c7< >Idwe YSu OwxjS+4%zo˟Bn~{Bk# ?YZ^"S"j!r]-|ZI*k6@C\ʁL{ZR~Hx>ծ#{'_̯,Im:3ZhgyAeH0v;kʠOOVxʖlc͈r:4n:azC᱘!\{{Tٷ{oˬC}KNzڦwem>ڂ[^B5Niͻ,;C[ߖFuh{nBF}uq >Б@A x<|4y=L|5v{|f ih-6'xUr- glz[%i :F'uwx1TY>Dl_bI,dCUVmi_ ;MtpA 92&y.pŎց2[bgZ~ieISddk >ws{H\m@ޮd'G} F雾-%c(m1; s_)}_?嵯}?{d >Gs6Ed,+( ),@K,} }^n[4^,وyUQҡ!Yrt6jB?*ZEvodp`B)V&`*SfȊ@ْNWmoWr/{^mEg=HdXX+wաQCzku3] |=tDGʮ` ^{^)='-(k"P! pk7{{6|uNAhl剑AjO&y~]}}Zf`TeZB#~Yh{g|=^1n48l3U/!d4\*s;/\_ ļvT}p[QȈ汞{F;@Y#NΊn,y2 36X1ﴋ M*띟ʱtĴk>x(u쮑;:ؙ'=)Oh}?}#P$@}X"ÏxVk˷ާ%[9-ih??;s4μ} |XIVu=-s&)@2_"!P9eyDLl1c /o\Fn}d4?ka$!0H!q.XKoSq6\ 5w$ ݄}̎WCހ6pk@<-YO|e2_ fdaĻs4#Zi vWj#_&GnF{o+.'sT~=D`q-exZXM=.ڽ`]"`L`BoQ;q O|C6Nͼ6Xܖn+ꀮ\:a/ZÎNomljy0 >{r\V'r`~ʒaն;(L;~{ٹF>'t-%ٲ:%(SjPdIߓ %`\K+A@k Ԏ9IT(/Ώ3;M3@l_g4mP*Až[7. ]i!95=>@Ł]L9 J F#~<~s@??ʿдyBn;׫?OrK9Wnk'>OP6?Gooo+@.}>+/E,eGRnkPN}(d~w닝gϔ//{S) C9~˯ythDN9-{axOG݌l#W[?岮K7|KyMgM)ߋh8Cmp˙4E3EH4lhWc{և=I64s<ǐyxd?Ն#U8 t`5Δ{H|a~@sr`D``9Y/z0Y}7_ ޟt7O^gn<"[D={,=ƋA ONf@k׋G-5̸sצOfmܸWޱڝ\кc=U~ʮra %tUnA3&^6&V>H>_.قrQr7Wy ;9M0 X޲<$yDJ4Fͫ1s8x-x$%uSdsu[>]9f1:K[N:SUiiTfPp:PX-Pm2(-KI9S9' &Trvo &? AN.'+M!=?vN/yKqajr[菖W+=g=KV*lH>8׿~+vD+#0Y& lqb0/2ѐ4v5d[(w9VMLE9S)g*-Ҭ5wPP]\'F4l0<#^Ϡj~d&0s:G0-|qplD2-#*/ еO^Pm?XvrЇ%d=~XįeȳMe;YVmeA:p{9]À]G~~_˭ Tf%(q>rW"<ތq; c^mj<R$<:y%/8#Q:!wV6f* B2>9gk&{+@ nƒ9!\#_ wbJk88:?H` D5xկ'S!ۙ3Ӏ Ofѯm@Z{ G;8@2 Tw9*` -eJZ+W8]` ^4{wlϬbyFEy;uGJ9! 2wx=XǬI:Sg#_$TGV$roH[{KU2bkؑo#Ze/0tc/ብGZ62A:sRס`~U5vr֘uӠ{<'9ɉI>3hLOz-03(8#,O|pG__2/8 Tv-G"+~ 6.46-"^ϣLPh`PɟտqK"/_@|$ӗ3㵽(}2ڇ?!yLvFXjKMak [eQVD{$@Wğ'uKr٪n2*aljs}GŲoj~=A0U,($ P:a;4f7k#ݑJ;u<*1FnB-W0;?pNFaU- bCSE(zlT(ME 5u/MS,贱rWg;Abr`zJ l{c&PPtVH' ʏz /9l:ggX@c-dܚ..A'o>R'}|ه'x}w}wm [xٱE <|N}s׽uAnN.{~՟ F}}9rBd`Nh7ԯ<%9t(VV haᠲVU?B!fI}ËJcBíqϊdmDoV%t~{?j}O4B7PAOM$^΁ r>7zל~ҏZwksR=P`^%*6^q[@Xau H@A.#YɏѸ痝ܗz]%}|Ŷ<$r4=딄^`*cZvIEcDŻ<]6mR߲е:ULЗݞյ> VO?Md]] 6C6i  2?Nς0GW9 !*/zы?U*~+_J.;ȡ#}}ԖxN '~"+((k>dyh%ɑ@ۂ`X[,[+zw^60@x{IrDf3l<T70rh[M"]Q %94/& #:gH57r8FӹN&f@s}rڏu}r z ^;ZCL 3.~6ufOg8g)>yX}.7]!Iu#娕>);>2}qn6C#'T3qkVA.<~#ziV=M(N%V [E/!˂~p*ur_y[JM#vcBXeU_b8Ot/ ;u©2~}ȶۗ_]_ˢGmbgż٭_\7 >(ؤW#G^ ;AN|`ƎJ>U];^N/$XL2ϓ`yCϮ2?z{ _軺< v.|%G./zxEI Ad&.` XBY7'Fà-W vѫT֯lw2D 7dbwϣn lTX$9SkJڐ5HP:&#8]tHǫɃ59_3jٕU@^5ޥOF=Ldk]]g#ȶR diYe.m[]Yk6n0Xfgaڧkzy#Zb'=Cʭq^n6Z =p`CᰃؼN56ԆdrُQƳ0\gc>?#9^pEAZU1ѣvC3nUHD9YƧmM19Nov.*߈rli挷jG1 ^e;h~<*23Fďl|Xdepk>}նIɐhՉ|.giZ=#!]Ѽ֖P>_~)<{D ۖ?z׻~_@erz}Px?y|p|۷}[7'e]rou_:Rc#ۤNrocONl[r<@csx^LFcSd;ջM8I+RI7ʟ=D Pޣ NjmGvAOIlx 5Mu`IU|G2h{)]7+-r\Rk3Ue /pIZl0vdֿyDic S/ZkwuRvV}Z۳vo p;k3ke%AkQЎ[و[V{3/V;yAB9^ȭq(z.6V յb%o+3YS]ˍVNY]m7Ql|yMj+=j;c3q]$]dl'69L2#vmscD3c:0 X9E|b jD}06y=r z .o nyLHa&I%7<1kv 5<7\x#ؽmY@m }h^, vs'dlkGZPl'1 )o]) -v'R#@YOu@/'=? h,-UG ?Տd3L7v7Lqr]氁fy ҁ:범s^iZŪ$070 &nDRqhl<2Y:YeynQF&sē9j:Fƫ"h`Mk$eФ,8Ve*kC+Z q& ˹OmO,R.67c ]'sSm9-EqJse^v5!#/_S?3_6Tr~AW -[B^}2Ɖ/' 浑~[>C|Սr]@F_ >|ePeF@ȆOAP>BnKvu FطέՄT \ǭA=Ö́G6*bb9\F_ lA .j:}CJ͉F(jTvd*{')1Xܚ V6M~Uy+CД16J| :gBV Y[}{.f&dyig y? F[Pj"3mk@i ȕ]i9FM<(zyQCp~W|EMi7;Wڂ7[z=bF߼Wh2eMKo1w߯֞oU-A2K}_32:#]EU-Y+9ӷEv^.f.|&L$>GË񵰡KueTو3z l]8C&XoD1%hSGtoಖ"G Q%GZP0|Ѫ qϟ}iɶI/O LJ[Mm62o+ړ|n{@˛Ͼ} A Ksc?veܲrr Fu3?cÖ7|AFsVe)r-7觋befmr3?Dl} pLG]RвǰjgX> y}=e _I9_?VƧ{5ARՔ)x/қ4b3ZidVo+ OwIhW͎%kM!+r%pe& 6t|ڛm |؄Ԩi#e:-Yux]&bT&KW>d~/Cc?Hg77\H彲2Ae!\kuHsk2%"=*g׺?uTWWs:3 &wpU5Taչ3J@F6dyI^4꒯|p2ۚÆhy_myy׾ &0@byb) >S#xa˟so[.گZH!?풣G}>Ӑ^eꎑ62NjKinmѪ[͝ r-h(ͧL\`n67."f۩6j]F n⑂\Wӂٷ4Zh=r_h<~oo}vϮȹ|@@K[{=W}WIN<{Gۧ,Xy\lo+t.NzD/V|Y68'C̚Lkhl 'cԪ(Y_=,pRpld*֘ KlfeG?: Xcg?Mv"ђYe#4sÒ{ |߽Ψ\5\ F>@)v0Lkv}ÀT .zhto(Yi_■G[m9,5G,Z֬Q6fr31k B~AX5Xte{-ᠶbSDVx9^3MXjg&ߵktDhO n}v1=?7_{ꁸ:PxlN\*ehtZR~*Fz9I&Y$rv<d9B Gv\?ON+eF;<> =asƒ?9πG }kk^CP[/ȲйO*ez=A{;;Y~D6tzKYdyq"Qg]h6)w bVk$O< _e!kul蚷*Ѵڌ@V0~^=޿r)Y:vAY=V8;L]X6p< Nƒꇱ6Z*|@3;s\xx=8~A/(o~]F}I971oCEW>oSʌ6Sϟ*7y‘ .!lkګmND:(iRaćɭFFFuw{#̅Mm=4T%>jD<ɀ2}fA6õ{}HL<δ,]Oں@hCHv-?;c ZpwMeZBtD?3)e]a-cMU/{Гz:eǗʏ oG>_[n~[wXA$3vov}zK8['$sj|l7\Ier\Peuf#,U::UrǟKY¶B9#kV:@we瘝泧퀶:sYm=LN#G-+K./[]An!5'A4 х++^ܚ87ťo vq]&$NQʭX^וWtBXCpԫ,[*Kok=|wنmя~9Ej_fxnɃXv?SEѩzٻ;e/{n4Y+X@5W¶2[fϪf:UusUw\#u#곍\ےH_TqomHfsYehy~2irk-*;kp%ω6p|rVV5ns-\Mo>ݭ+eSUɃ3& # 86YykOYc}`~l=E]ڰґm n j{iٷ`^鐗 s?rLN'Tv!u&h]܁*Lej vmZ~'^\^PTKɲ&WMoz?K^' _W!{ gw=Ǣś^b$Ɏ/Zw & $ 4%O'|UI}%h$x$p$mx,(>A_ }>˲Y/#^.uϭO|zP6ghyu-uG./pc p+`he=i$/:H1 #aKzF,13jk\#fTw-_*P?'d;w`X9o~5[:յ.euL2^sK3]~du~l('J\bg׾zMD.ykmKt_*hHV p~@<{ꃑE/a\ +vG[̎Uyw-j6*zw']Vy Xcs#N!8n=%qkI'VJN)g28S:%됇tzҙj{d-73ѐfHd.;# Tf4<焧:l\]~+{B|dN~̳q=`Ai}t֪-K/8Kގv+Mk,5|/zΥ>t@&la-oˢm>b)?N: mSY>;!Vpi'ox:vuSgCcBBL|4O8dMe7 ]%U~XN kA=ww}i~.y76t9IW=O>(} ]:Q} Q>ں#/ q#¨Y/h9:eYBA@fa˟K@򤬻D'l#\/}Y `$#!~˻ Q޿k (|6e?J%Uc?1S~tN~A]^b `X%9?MR%88\*wUQ*AzYh`V\5M)/׀y}p9ljK3Z K]ѥXN@ѯs.k5E{Seel_[׾;7MW3[HYzUyxⳲ)o\YX# # ~Aq.aIsXy>k1{q M&;[u;Gzyeq͍ ko?_k}3 9$4gKL3rB}^]%簓ƄJ#px$H;TMGU56h*b8y´JedU/h g{tmaH.zt%+y^F.K xB_탾ש pf?RP6N\hF9u 7FSЈ _ Bv>`֧> F! Ӡ5CUuuTLJ5'ah!KYgOE>T=Z]lj@ޢo&C=i"Ӛ0~ ^aSX),gM$=TR1cG>Y9k 6+~LaJ޺㻭x&CmCݬIDp[A#!$ hY,, O [') \t->c Mñ01T<>pQrژWPN'OM%ɍ7dUO^P]ȟ%d^gF7 d%D =]AtEt+v'wƭ_]t F6`J֐鄬 cYcU$9 mI@Rؠ %=Z(E, <%[coKrՓi$tēZGQ C2zOɭ%sb6'*zB*aRUk+oce`r#̧րJee@֠\^J\ջP6*<\k'62(K2}d_=꥿$$mf/('\;VMfjo]VG?h<.;)+o2F"<2O[QV (D/7R\Ŏ&k ;ttPycɎ Aud,wn!d9%x׮m%,?j'Gne>¤ô9g l9o+J}>ȭ1H}pTFpX6ȼK<#,^VN\Wі&}Vn[ZWYir ןTZSF4kZ2Vpk+<β ϡ#m3u6Kogd UThV}u=ցv%aEWb6F,?G&Y>`H07;,aż & џә[FEn,W\/z($9veڃ0ij T3=݌x:; Wbֲqr*ef^ц|a?y4AHGO6-JW2#d^o_e),#r@e7lkިn@V $< Qlg=.HGoٝL7$3C%.-ʙW"-^:bPܷJz;GKfkdkp'zT}'kзqMYCCYZy,c?xzdoCQG:7că|;:E!QZS +x*rxJ|_NMTP{{{[ ϕ\ $#t.3se sZR.ב@/!=!eG<4UT@q`='' togS߃zHWy{r>tF<>C:!ˀ^GvqdOIeeHg}@elO9lSNɴ{; Ž$H-ه9ޯh&0˝Y@в V Z?Uqol4 X> CGunV%;[[z瀑ʬW87с&^o]\evr,TYux=A#kxsWa] &KA.ngcFVȣY>1<r'`hS m|ttIdM}?G_<-!0Tp *}j4\fr6۰Q}Zm[/>j2M:G =%3̫UNvp0`6ĕЩљ3N-z{큾5hcQzMG վd'rK:Y =a녬7-ɑr#]eD@?ˋCdOz#,28ȏVF-=ҟL4sL47EHeCק[y#UNfh| Ȑ x6<%8'>\N[ۜz3I\+IGr9\|۱5^csM2,挝ر]\ŽKυ[s$eoG؅[=(H'#xBɑg}^Kr$ez p G9͓CI9_&L[mdo=js t 3oJkOaVq l;5uބ}x9CWY:EKd\qot;`j4gS{ |mlw|$5^g\ܪ.-ϛ&4]4=jmJXOBdisjۂ܂{LD:iW3q TI,V,:mUT .6սij;sVϘ[v"D7;nb)^$](H:Qwт= jw9AB}B~c*ѴmA05Zu"m.4wq3e*F?lTF(ȺKvlmԏK|!os.Eb|'U,jc>}"%/r .{ 5̉=?LDnnsƻ$DFWת&V֠+Bty6ٷV'Áo &C JBPGQACA3zʣIeP'\i@f#[.#׉%?3-9ЗleK/aKzM:Y^o5k `V#T_ڿPZHhTc.T>gcݬDGwS=cֽWD<^O_L4rw5>j?rwڸĹogjlYPF u  z !cd<Q ]zmQs"S<WZP˾{ ӺJNКwqI\pelcKLAߙ{\ZG{Y ިl ;-o@(1ֲe2g&?R$>-aAx7AÊ+sXs=oWBa#i0bM˫\ͨ.ٱSC;oUbbXc/,Qf0$Yxf>ubddz`&Ol&[䛐$+z]olzzd3O[vzɋeAYr "B.N~ك<5ўB0ݫ }>mp _z۞ 3f۪6s.~ejL!(e+ӗI[[ɠל!}z;-'# tim}̷^3eFl#2 `ivbڷ5duygאd5+.TYLy{h!0иVWvvfZ6r9y/'Hf>c,<2W٫)JK?<;nDfoylw.vvD9PI# +Ftc~fS{y#9hR^$%l6')k jim/ Ӡ/ [}ݨ,3|^ {#d{tmBeLjfNH >&dGS*U2/UHRеʥkO^rͻ -ؤtȝ̨|7C^dx)p>:6uw:;ȫLa 6)^B3;uvJu<++ "<zo*Ƥrk9eςF¢򼃫4 tI3q @`;#r-Z:kj/m/aj-> d~T/gld_ Z}(%cUy?cC?mS_k''ܒkb-}m8]R?-MqerKzyhDwPAبFbꃗ4x㹝Twh,;Wя}5 RS![,({T=F|ڂuY@L AF@zMCֿUVO^نq[ \25H['M 8D9,);jA1L쯐`%To)Nr`"ׯ-E+[ڷQ㸇4|-$GvN#}_/|:@ND=6?c jKIA-AX0nQa?67x..XR9K]#iB}M)GF:V9|bHezCx*fnڧrU: y\ӿI͟GVOk:( D&'X&ٳgˉ'ʝwY?^N>= $+2}n{qYP?оX߸As/eLK4nґ N#Lo#).|HoK/6Ԏ@e=5*~-"_eRἇY}21f<'Itu~k=_\/Ǔ{WErxr3kvWji kn{z7З{*:h66dY+ rjLl{ͺm)+/b?;a B;{~ۘi؋i;f#+"kJQ[O|EvRjthٺr |H!t:0VcvP):Zb" l3Asu]wT^,rc_[[+|<~c+M71[\'< IOzR+gMP>o/.yC\я~h=x_Kg?[9\r%++ʅ^O~@퀣v/r<a e/ԧ>u_Fw7 XH؞9N'i C^z"C6D g~AGCWZͮ!6ДUy\_LrՓzl?y)vq==rЊ[q y6)L6_u |,mw)R{=mǒSNq⿽yc&;"Znܺp-o֬;W=5Ee=ɲys7CA.C,)=~sy+^OV'&\<??6y'>n A m\R@K/-ysK_rUW5'>?4;ec`~:<-??^.2/ӟ.{|sW)}sgA@?m<GWU}s3A=q4{\}mR~7JMs,t ?pG@GLabơ ܧ&UQtx/Lg Z(C<,vapNcT-}WB>g#̫Y-z۴l+|eвɎn5EQy\(>iRΜ x;q'͟)"nk0js9ZLE&Hb袋|g%)UG*/uGWDvj^;dFN2#j/#jcvvp?Qnhq-Ih͟kWdh@<؅4ne?TkڌG@檜 Fdb_ j7;zǕU.q_Oq'޹2,3{f[@)4)3>ϗ]9;$v|3˛ʧn\U"ǀ>Sĸje CP0r-o}P= Tۃp'qQ *x`Ƨ};s CBrۊ@&^N|NrmğcmvHNF4W(;*ԯ9垗0S3ވt ^Pn!Oe1c,}]҉4Ys΃ #BdI:=g A m=m[7ŻQWѸr˾#\uOֺVn#p js] ٌؐ,K,2l.>2=z؎yr֏ϯS;>WvE kKe/cLdu9Tg1,߳kt RlZQ͑:k!euUX,lu"2HS٘uETcozw'[^Gdωe\,-fi*,俺3KKI1\r囟rω}{Ne_egN*HbmmE/z>,zF q$`q?%/COFn@1yL 66.g+G%vٍsԩSoBy '~Uo[٬ uR'2̇KWjj0dpo>gUImT;bU6)?&c3(-?bS3naHȮ_&*|Z" VpLNY=CduMݮgMD[lA}I_JY\OS-z֞|5g7RnԾ \uގl’{Ӯd{9n_ԏ Eb3o-%S6SN O?HܺQq[|k;%dMe4G0lLR5 5ZO[qF6[zYSjNA60:iWTQ@ , c7&zfvyi(0Fwti0!||)=`L;H΀.;#2vP6{,Dz#gDTIp˓dn`  >tzܫ z +~׶{rl){K> /˷ٽ<' e%8; ,%/92'%З7@A_i}2Hl.QdY\}ϑBR4; ~J _TH|%8#H.O@?+W66 ~MYpǟ$-~vu{*>B>*-+`V q{"h# TW2_O>Q^||XlP]!ˍd~z0Qf?;& Ƒ yeW lMYͫz2*xXm [_Q;&,G2Y{'6}NP۵CNFc.?H'zLڡ1ϥZRQ.XUzjNDQ&iϾ~Y6hR)-C]M7)^k)NDʕz'jV#i<*X4K2t{ds%+vI]Z#%=ύooޙr%hWZWZ{ qդyd] 3(C΁Mw*9¿Je<" .09dEk0W![iKk5FMu9[7Q+љ3ku֓ &r,FA Y &D̮v.!ծ(v3=OfoFԏ39? DƟŤMn7;Gb]Dh%8'&v%C?x OO FKw#lGdfm |?3 \!^0mq[ yN^3.=ȼܖ,1@vPgXWVgeX5d ,jއQ5A6gv5 uUm9eĽWf99rkjc2Yh/Z},j4l9L>'+}ɷo5 ki7VX~|1 o,WHX]g [80Dg^KrC\5<(O Av!| ~,uJpie,lc#{qw-q,jQ9!,X]zECޖJ-rK5T]3}hg&eW>[\ pڿX+if`V}9q@PAnJ٦/ƛlzvvʱzo%[K,O|<F>MPfV.:-vT]m zЎ^R+{J>tK}Uq$9~(.-e{=>~pk@G?6nK vG|aǚ'9__wƚ[-X.!G~WO'vƦ:(ߩprc ohg JfC g],)^F݈I{dI RgنNV^vs1(6LzUv}zr^l3ߖbz L$\}0&EmxC{q6J>MrX"FYe }u_eY3=o@ lNr@.Z'vW?rʐ 2Ahfv d F v y `sN̏xٻ.QcZ?gˏ_= f'9m*@/ e#p ;Rn2-ƟVlr֣-}"ζA_mg\Ѳnyg,Yd{mM @%໫;i) nq ԾJ2T<[dG>JTh6LB=˩3@QsSH,чBmű5nAly,Sj&T{vƅ 1kG$bkߖ`=sނ%9b}9+[6RKXW3/Qй}ڳ@?XU{B\ KgY{M Zh-!&;al߲\#{ +um-YvXq?[>\˅M8)-@k+]Uaͷ$lρ: }e9K&26^-+Pk#ɁVD&Nqw T:/ֲe'r9}GQ&QnͨkΐOڱE?f4u. =ЧhWN9"D(5{c^"?iykٲKT~7wae0:vnQ||%%8j:vHA!e+1??P~G~3mW]nW >e=$2 G0Szx2 ;λ|q޳ G=/dlKd\a,(׼c`4j9CR` X_E*'~ B3;Tg?2ћvjʪSyI| `t;̪j͋*g>F GKq*z3ip1ՌKy*ۋ6"`΋ mp]K0q.阉n#l^i7}둮A$x/k}j׀YhOvT5I=.ڣ ܄n& ɷc#~ofl@huGvŽr :3#X] .v-v)ssdo,P:/M<نGYKprMZ29'=1-)PIrwȒ.35G>#\ sGnO<>>C̣~П@ xmvN p#@ۅT/y##ۆ&q|qi6]GF#5Jy=<Js:9@=FlZt,y̝QJyh<Պ,+HK&#sS-ug>- T~s.A| A 8<4"K?"a|AD|?E+KGZS#>wvq^go;z .vGܑ%k ZoG@Os.-ɲ[9=ذn?[ޱ:SX|#I:}9H=V;%'@#?kvOX'v?~̭Pť 2תD @%Fj1f~_iVfd4"@ LZPAf(SoEv:, VeMt&__~W~"x J@<c="!=rܥ]T_H"ch2pk oڑz {L }$:|VJ+7x}?e?<ےl@֏ Ydgd^}(:Ǿ-sLGތfЁN1,;[pBn殬5uXk}u20Kd#Ŭ:}ycl(/Ue>t_}urR?8K@djr9eAC#WGb> c“y4bo 7ք ZdSM2@d,ɳeYy_D`yt%xEyٗ}&k"/7VnG^/9fW^Ύٜ4be|ge9ڹ-5XHl60 #ÝUQK'cM6i`Ƀ ӋZgE @9!Oxeg;Ј .qooch?-ek-ﻛ8_nc-k|&'cu%x$~uQvǯ<&\#Mt]/#A?fO> T9js1A1R9=BU9 K8q1V`s*?6CbsM^srb:c-:tȞ<>L/~R%9% vq?&GZ7 ru]ɹҮt^]KΦRd) w!dumט&}]o9[ cR7b/vLǾ;^#ʢz.Kg,e.OLS raS㴑U3p3k$:'*ϙ7d=W&۬niQV_wzX;Y8|i=dkv ^ls)l mC' o}^aK=@؍~c;-j?E^8]l2|'##xg780c'}},=`zA,dDKOzN9:7ǓfܡIslڤCM꠳cqW{]9ͷ]gy7^Iر\6 5oNjb{C"4r9Pi47$Hc&&+KC^O^AڨO@Q?0.,=d:󱘣uެ%^?pa`>F< ڰ`D%h~P+xQ=Ϝ uθP\~NN1@/wZj~7xg"k좾g.jjc =y磳 #M:c\#)`}-oX**xU`(!7<$~\Ɨ$%$.s)Ad9WJ]}3k~s>/Mʸ8W$ٌrAvpۀ93RIw/YP#,@w։DSDsv=名NƊ[tcLtGY 8{ǃ$ZD"S#,~W~-Cs;^wH nx+'fs -]~K"%69&&0&H#Q @}X[xX6)_,!;u̫㊾0ٮV8nE63㖲əh׮i\>Ze0{X:n0Hw&!{%lV[iFT1T RFV gZoB4Dwzh]ڥsN|n7_<BlK^'H AғJ?BbenuP@ hhU%)eAF`G_;n=hA`'}֮* 'qR"ǗhOcj9y7A69n R `x>>&9O$s91b/xퟹܢWY"[ -Ŭ/C8Q5y: k0^u#$ &fB,'FJ>di 'RwȜx9M[ *'̅VYyV9e3kL`<;l\D [ׂݵ9u!l>H[}GVDحڱ/7=[lʭ v|\Izl)7r`7v+|ӁcY Gr9Hs8Sa2kz 3uu+JvBF+Lv: heЈ@՟#irmOZ\}-7׿(/ׂHA:OlLn "Q`Z{g[V(%= }drF0'euO#aFVzЉOK9drl>S9-'Px]ed=O><؏Xyu.y׭;Ae-h.i#D0\tlӧc_zԩqYfb]4! U.ÍlPmn_긕5Tu^d1V[Ađ^H.gvzluEJ{剻Gw2ol>6ȕ$O[~֗Й/l[ rNx@j;.o –zQ &f̈́3ڪ:D*w} $@|8dUbg63ANaM_zC}4}Qr9[ d1Ť5]x_dqHJ);*Н:`5$D䒒5)<ϓgǹrMKE9ј[Vzu6`=Re{s&뚯eς r_,@qߐD_]tŬhˍDY:b6a{*'ksBA4jL[r)}28;fЕ`h bAbR~IS9=/#p|Vyα KGU7ny ػ˩<$S ;ƕKmp}!HknEa,v`W X=qD4~O7Ge"$:6g;?+yk;Poay׉e0w^0m*omhV$t鑫n'd܆a0ҁ,NnK dzjG]@FH^e0v@s+ YcnG ;>9;mа7^ڐ曙^׎v+4>55o*yn-5z鈗s%eؙ$򠾑F\Yt1C:< j2|zojKʠZv$fJVuɓ+Kv!h+uyn c ʷƏ F{ڲUig k) /*#ô^,A(]lv-% yc+/.WY%QmmLj-/y- y_kC:Cf9z /WFZz7L9mcX&S޹_<9+0ߐg6AY=ԙIQm9%3/͚!փۊjJ+ED2l0= д+QBW)U :̠VN'"SsiӦzN%!Ob& hbh2gre[u#=Ah\:BoelCd9\nszLq$%*RУD޸u|ze2~Z%o$V\fo9ZZ(vXZK6qG}1GʅVL[3YWN7٘)Iǁ[ n*ϴ ;;R#ɤR!Kv+zު|M/;].1_fVdSOK־_}F;4{hm*r_nsfGXOb.YG+{Q|ʹފfO_e0W T0cD7b;' B7֋Աd1x4ˉH҄gY#3OԎV/CY5Cxμ{lKAcl+P9'ټsqVz,=zY }=˴ uY@) Ў@wy5j]| r>U-Kî 9&xaf-击A.W p_fZpaZ' r7ݪTVo:[>\ڿ 5W_/λn_. \REeH`{\}Mu} j9*U#C5u˜G Nih'@rfق[00&/ ۲d:of[90ggzxJBu:tzYviڷ78ȃ9~2L *lIy2UZA7bA@e2#ī[>)RUt+eT*^]BdkD%!@2y.*\zؽ|߱w|߯`Y& b,A?o{G-=VsBӻȏ g:z~dMz}{*O&Qm;<&3mh٥.٧DMUV޼Cf74lm U.= R@9ft{dL2cxwP}.ĘvwSYF}HzUU6h|9|139nu쪿6fdK|2Rg&k,f0Y%T1x`Kqt~i {e#G[gʻW vsi#3xѥp U̓m ld|GlN۰q 8~S"R>_OnMfnԏW_;3#MW+*_ȭMy qMW ZCldjӏQNed?a-C"L劍Q6T!s+㿡*kAxT2%; Z{dO"KvrYz t N0Gfo,.1;d_*+6^ΑNN/rlC/Dz#<TL@2*ѯAE .E:u,Tu{0;6Ye[焾J@,t^VE@l]ImɺPJ3W)ғ%<lgcdp_TkJ;mʾ4BТ xxQ R=_Zpu@cz,nUY$\UKNd{ZetxVϔ?+gy[6i| * -ϛ0ʬ E<]Z5@IFZ) ?RN?X,o2<6 b1~v{\×Qp+yo>iGCTˍ|,ehv+/)JFXbUQBQHh`Q6;;\f0z c&\ $;Iח y_@^:l, 3RA6Uz}9Cf\_'y#;YVmuPfܥ]v(o5%v Yk?Hz3g 'PgEj.39 mBQ3T+^R :㑏%0K?Fmjp/Fy@8>e9*E/cGPeId-"Y.Ap{-_?1SKkei<0#U r[2X{r w)!cGn ޶:U` fWqkBE)5Yd,ym\J*qhz)&sece;&sc)@]>ebG5P%G@ < *`s.,,Es1+/n*wos:[pk^BZZh1!Cw[-p{'~Hv2h!r31OA=<ka_;&/vs>yV ڞ!$\$5rݰ=z+PArPp#2d[]+!ݠֹ9@d~&HS!^fc^(6DH$Uqʳ!y)8:ߒ93XBɪQt[G2 UG5`GY2H܎y{ 2O묝$DFmms%rLwt뮮vrΚ;V{kX{iAk1ӧOvsL9iK7^Δ:oԱ̣ap"e E+H5| ڡ1U+n/|~k9YF2q3Ҙ׋-pH=Qz|cꏍ/K=; ׷yFL^A'g??ܲzZHv*j#%"Rgbr?J\ei6'##j.ܷӕv{ݵ w#6=x(?Q[9MRplՋG.m T{{:Km\':<{?r9rѽ0NdOt싟^̶њvidQL]RW୙q6L zK'.t\!nNrc>PmϚmI>,ιC1oCUee =v%QF4PFQ"D`I_@/"L_߁EO;%3I2 Bj*wZcEhۗɗ{xD'FڝF !G U8;2^([eº;U6NV?P]8atAnmf995e1S]p%ecdfLlW{䖝\>\#ɽ$mJ%f$=P?%Ig'R{Lш&C5Z~״zW4d]ih>b @St=ݽs{O+2}K-^*^od/n?^O]>o%_&rv*޵^Z]+~W{-{MǟO'u!'Zu8+OE]8sـ[ tC3gWkO`_;+~ucp i(gkqo4:3m9)о Վ\ Hw Ku6c.Ϻ"G@H5<3;uc^).論A]=7NUW}spExCP6;v*wL_FGi>#;Q1ֿf\ pi5|SSP=J?VN&}\[BU}8]#yZщ)RHZ#-~ $/_;%U[;a_XcjH(Ji3nwTAKSN<)KRRrGZG$>|Ơ`7Ȝ3 ыۋ,;xLLvM{Wo2/铏>;ӷm'uI>e[nCX)[J@o͖'K WN%[kԟ7J^XZӇ;)}r蚳u]Ptg:]paoN~8q΁c]"u^N{S/Yٯh5^Sv@q5 Q>nV+yqpm4x5ˬ{ׂ/:FL-?viUl'{> #%9[c N꺡l/u :u *Fn\da;yx_ӉNI7ߟG|"oz7}\(\)WЦF^:ERjcoU%Q }MUϣ2K;<€m' D:'OUߔ.kTh^ ҥ;W"'S>ANWE26򺋹I鯎lr.7h?჉N5|3s1){.M cHaF&wox" |w{zz y+< gd|ɯ& O3|:ãc bn}u@P6!/';w>NomC^'wHP:kWϵP6}l%C>Z=Clݡ ﺏ7nL7?9Tb'yB#ؚm Gw,M@ogCUĈ+&t Ǎ]ؕĢXz>T$9)U\$@*'~ޚ_F°\ߪTR{^9D%ů ne뚖x4deDX#2ǡ; -f } q>VBOMJ \ӫzWHb'򷆓۫/x6ɬϏ]Kj6)ӝvި$SO:Z/iԲܸEMB[SF_ISfWӸ;yUIةx^YZNp*7|>^ͅͱv`A쀡X1 O`;wh o~9ݿw8MIR.m>:|d]R'(Yo]ktllW]o^>{u?zE똮m^:7_OgA3u幥>Ϸ,V W==ҭ C-A?/ҦL64gj{YBjx{FﲰۇqݶlPz9>L;s(=pցsukyk=\SSX%H+;ΕwvU[Npⶄ]{jpm\?b\VK ~+5+l+/Qz.`G4{E:wEQ m8'NZ*E&7\1_S>) Osi:_S!u, ,.kH]ވmUƳ۹IHjKtX8b^n/m)>:G5>>:%񈂊&  @M, J. bR{PڝO~{*gyXLyͿ ɘP%@mP.w2X`"#A@RoxYŔČ uc~ʞER\AK0 w;Q !~k:agyh[Rq 9l@6m/hk~MۧޥK37GG<;auYY%b"uvPWeDEƬWh[(u;8ceUT5X3x.峡CT^)XnAZMxobw@ώ[O#pQZq_ʆZ#vbsgYص"en9DIps&F^OR<@4c[o+ވ?TD埾$M\?g_0ӫ{`N:z c3VX'Et $#uAs2k;7Y>!Y=V$ȹSwsN,7o^k8q5M*j_9=O\b^ɪ*`Mtclw^J۔|8\1n:>\]Za4K0\xlAI/ec&y/k,1̡kxDz} jm<t; hoFrK\dxq:2?K@AD~(h2ԮT8b_`g ^ ɇTcl `$@`S2ŧCM 04Ц&~̓cr̯tm[·43(<'!dd4~p=t^+UKxbA|:h{~_=e _ '_F+Ӥ7|2b<țͭYXwURQt\\=Ph>F68_G9Y{kuG:1 CA<<\yKtbo4Npc;-}mܸjȶ *J'1 Y\q?'wiy7914؇؈6*ǽћ%yp_[%ϱKZX nAOv{ݱnrlRwt]ߋדWJh{)۪PB6Hn564T̕rMSH}vpoF_+X׬q:&]y10PXMܻΠ`B[Ht9;GJrv|Qp@TYc8|rZ>HG|Qaq@_՞鹍Gxq{Lĭk& *IHNKyvlC7%/'&5o4lc]YfݴA;ٿ3<'̃t<q`k|u8 EIwi|G\Û,W>3o&Gq׋dGƯ䎮DŽM1{^g\ ?/=bצJ5%]Svp1|m6AZSt/JgD?ƽmZB)ʩJۙ -CMȡ1 lѺtwy}ߪl#+=]K|aDx$]$Jzp:R2Ȟ$ p H f\ z!rhUS .t%Um gH^{Xxծzr[:PNnFJw3K BVےزAD]ߢIs4sm9:n;˱;n `[c uoDg,!4@GGCG6G>;{ Do3%l,P8tt.99c<F!w_2-#cE׏'.҇' ű'GE?~AƉ}$Oi ?&D}"cm;]}M΋LpUrCf7d!80*tj@[a۰PԄ_H61Oy`t ^vφ*\* ,j׎ŷW7˾>.t&˕e 1ٲt@d[cQ+4}kYlo<萘INC]sF$A"xC'wcڊsϣ^u|[yK*ahY+g&`0/X;zˁBǖ 2^cӭh{{9_ѽYa`wH"խz)Ӂάۯ" ^w 8s .5!Է&xv&ց!SP~p,687qW)$UWKNv˦N=4#)kuSJf;uNq0&9F%?I{ؘD|Ws7 9561w$EȖ=I&x[, c6@͋1:Ie:GH͝1zo}n,\̔/\̋r"j:0;Y>p:d'N8Rc¿I$q II VHUSL؋ E*x5| yS`!V 씕o%j yNu3jD9u$AϾ]͹Үlk ky×U::3kΎ,5_96!k:&_ƹ3-?FubeZ͊*`e>FtksG5w8^QZ(v)uYamS g%V/tBsw:WЈkbiϚۓ~"s#-Bx}G5r͝޽}V5;Xf#3r+R|rNdY+W<}ܴ)yd|/HA19h_͌}]N >!~Ro-F1xþv*U};y좎uf 3] qw-|Þc&jΊ~m2^ JHzr͡R8 l3ǹ6S1uOLX,ԒlQ E`MwF갳-s-_| ɽ܂\yk^ҁD{I =k_ |Jk.0_ȁίLmNZIcےFZ<,ZQϥn<ӛ*Bo0_uU΄?.}>F]^uu]XVYG*=R!3$ʱ&>Pv>(c,_xj{7_l~Āf7|_&#y$<;3J:/;;&'x?SQ'<{Upߘν<_T[n=f}o21ܘIcf&a%X Z <ĉeE:`qPsuc" W5At7tPW@M${0;^G7Ǯو|r.a=(3k17]e gF$ιdnoC4M`$TpV.6ݟc2U7 Ȇ3vnONgoi ~ܱdKe[>'&)-u/ooN25w+ٰX+w2ڒw}XExNilk^`:qL1W ;q`\S/2\iLR*w?A{榮>s$e\NlIz5ڹU>mGX~.LiFUgRgS |O&GizD =Y]Jl+مEG2mh[iyCzGH6\ʾ<Jm+4xEMHYTyJj_ ͟flx>hs5 pt8=sBy@lNiN*FCu}X^:ts/*Yӯ9r}/ObOַ(h9ʞgpU[3ʿjq{мE e?i1Hz4ptY}/Sw:ӓ ܻ{{z4a)?Mm:z5ą$lGU(+DUOz㱞 BQCfm qѕl_nag{'Ʋ1Ojf[}Y]hi#$uƜX}>ߜ=&+T ~as7)P[ag̿(~3@F0~Vr>q/ځ0cmН,$ηlOݦlުeURa\60StDRV}.RkU?s |pڏ#turfgsZ5,+(ds֟z7\:_<ٽjMeLGṕWɠ@'Xo܊kWkzrW* K'޽pKw>0ݾtW嬜]t@ 02C#BOrjO. ],Ye("L~̙MX{J֚J#=I.X2¯F.:.{FLiGPw}cnLP B7g<fŽYEvNekn#MqPC)Gm ۷^j8cu`v4wlQ]k`zm$z[ذ_`4UR5+[KKpz_ +WGY;hJLx[f$t&᭗MoꫯL/צ J/x>St/>d៼7}x/>Hkvwc:RPx51/0$H%ұ4qVzul!M]^i̵ypg`Il3.tC[~laNa0lcoX u| gyTa\j;Cz;"l33aaRMYQ2zk,cي,z%=m8\ !U.+|MY{(v`.?88fYhkƙBE@(e̾w|3&[%<~_IcXV2ͯ ,'%?׉.IAl*urSX$ )z /uwz k/M6?YgyƹbyrNp}.>}o-UD=iL&xcp':~W_~7_w}ӛo1KӍ7tʕ+~T뭷4iߔwtgӹK!^a o4@SƓcɌhm]#OS%N=dGԥ0Xwµ1]oUrNzt"bi5ܲЗ#Vz3ck$#)U3PhpͣQ>vwz4V3u*Juѭw Wz.e7,gwyX#k[u`ZZoβjs6#.Fe}4'Zj5b~SR(q@WTX_qM{҈(L0`𜨢Y+ybIcQ+ֈHZm 9q 䋛[8+*1ubQJV}pR(@1(:s_!J4EتPlDĖNܘkvzٹU -@s| <ڞ(}yzߟzw8oo~cv jӒ6^vI+/+{Q9yoq>wwzv/|-Ʃ15:34D:Z~7rs{%JpU5)){<+j*|NG?޼ra[/OLַW_}ջW\uR75ٕW=yw˛ӣ ו?>d@Jrl^4{ph ^mz`>*J_@`IWEC#U`#h.!SSeP /Ra7ذo`Ri7A I)F[1DF9k^qqmKi|1+ɹ,}/@_a{ngm LXvaFPsow#^uU׆}|[uά5f0nk}^4sb+E8"Xqkw ;8$žonΈ|Fɵ%nߝn䴜0ZRڮsgG{j:B)TYJpA˟|LJKo)| |^ Ԛ*BՂXʩ+3؄܏Ɓcb!Ʈ[O1dߘ{yw׿K]𷧿goo8#~Qa+,i11){A6}o~ɇO.OOݟ=z$/$Q )Q|ދm _sK`h4ҵJ~ƽgd]Ethv'X;S%]ax^nn١Yt?@jμrMKY+J#g<@QW'A)`-Uc~'uN:ig`8FdQc'%LxJ̗ vM˗$8qV кvnc;fDLNjq?~>^yCN_L7TRp}CwT>zr1A^`SIG;wL|Prؘ4yW}U.\'LD(.O%/Nλ[ٱ%8Kĕ§JBZ2E e &UIu~[:9B]"VCZ"xI,bsT20aJ%蝤ZtJO#Bt#XA$,lwKgEQObGԢ񅸌\̨VAy|1 lXoP6 (*+є40SQhN[v_Mcd 4?*Zqpf,wO4FJvONp~Y fmZUlO3| ^Okчh'P XRMfȶg.OiKFRd䂒5S$(Vbdw%|U=`7k5#sYHצ藢_cOKmM"?1&{f'nvDǖ+&&.k3q$ׯ8No0ݺuk/F{Hrݿ׉J7B9֘ggiO/|XXּDj]?L3as_w2H'\;-wpŏway@XZzt靗/O{o1x㆓[B-[Lƒ;Lnߚ޹;}ӇJ\?sg/,%o3=}0 W{_~1$MN7ވF#͞pèq2e[U>w'ZZt_{QۂcB' xQ, ]bfo,z? Xjt 1;ƆcIW Zz|Xu=@h^ C)s6k!YzK{epb|Bby.c}XFKo$ dq8EC).{$*i빯![lMS2:>m:1C!^&(fUI3hdJ|[J⫫4)q?eǓ Hfy+c'GaQ$2K/.u*!lظ$5tIVIx23>Y?9iݲߟ{׾KW_ߟ_^Pr_L7o-._@{[>t裏ӏ菦s\[9Bh<ޝ΃c}[_bNjm59֩ GಮQ=>dHn셋z#Bc%?魋'ӷod1_N?>p~O/ mM:`V7;|Z^>O?=;g;@$3Itg(6WMB:^{_+h/P;hّ_";+I\ǎGOMYݻąuWcISPsd?T/V1]B9a_^T?jl:{Ja^pgqVD#DܺK4i<+!u14OvP1:I$BGC[/U-#[w2J\'kMP=7Ыie|9)alN{(l?hP*7g'1|n|+Ӊ.Y>GH3n@c+:"NMV(>+q0/NpG|vk'$$M >ky< ؞]ko}[9_L뵱sK"gM?{?{o{oWJho~qӏ}g>]6ݸ񢺍c%ǧw4UNGy/sVDL5FȯCfԑ3i. ݖg'?WM7W_yUwϟ?gl䓏\w/\jnzP?O9I._ѿn\;vqj7^3193t_;Rg4zu fӭQYN5thpưJG#ޗTֳվVz"f]v,Vq8 &,倎|=[xN5 ܏.d_O8L69՟/=>Gݰ[i#୹Unk=a^nW=~l'.k{g iyQ_x>Qm0X xNp܌v .vG@ס6NhAV][ɑ\ʟf|>)s߉oY&YK,/ :Zv('߼+\lgl)^QBJ99J Z4 2vXZ)X%W<O ~5&dU]b.\HPIFկal*esyq$Ǜb')?K*}xoz>㥷ߝ{x_[NnL?[فn/*$},;7="_!v޿7ݾstڷ8:@rc믹;ͺ# ր5Q~SK32pz£o=LGHN)${<$|t=/jx$a^|Y󻱛;ynxißM?t3w|Йq1מH~ j.CTv^*vB!ٸiIԛHƲ[7Z=eRbA\cmmm1%è%HjN"ک7yJ?й.mjbnļ_!'A#₦We6Aۻ Ȫ_ٷfiQǨf_ş > u,>:=O,WeBg*%[ukSPԅa]XB9fnT38= '؊[jQW];KuNǢՔnl:d="'i$:^*$Ƌv! ڂmļ,%wܟ,vŸI\cg, JAy1JHHdIMxhg~A!w#klfg?iP I:1ǜ:1g$JO4/lH8ުaGoӳ?K5]?左ٿW[]GM^xћrt ؤ}K7_z;>>)?|Qms>!`:tʍ ;C]~;zƚ%e*R(I$F=`&|P{_N?7wWٕ%i;oO'"?Go]OW^z%Gw#&*y}H-y?˳/4yvn'1aOu{,r\yb"#DͨD3F:%_TVW>z) :ь?j4tXVdnz5F@YæOٷlr]b}%a5>}Ͽ,[({aL/ IG=H\U.G>G+L#~x >ߊEN? L)Sz|ɅKo*IJ4aGL]`f@ '`g>i7_ Cnj}b[\IMT&OaFy,XgSgYɓvb;֣/qZJc.yߋwV`;u삛z@dC&S.+W5`GAYkczQ¦ 6kmg%רז0f>i*#]s+ Im$60ɔlb-t%O2H6? ?.XH@j󳘗1 ?⊯Q3_zޤsI}Er[)xzXAK'Ajzc@SdžDm7Cwصcq?v}/  Yby싏?.\~]ȷ"׃j_|ᢒ57ww{v'#oo+sGWlV8/~tEuzs(En๜sqO RЌtas⤕$ rv3xvljBy'_޼pPHvo IM?Y\vy_xy@ͤ[o._lY+d||(#ib@ S25$ (zpK JA] F~vd!t@ck;"'zkFq;RPsȉn :/]Kmuuݐzb r-nG?:,uHr[~޻.cVtkaP|MN7HjJYD]V;.ⱹtz ia_||Vzk-F;yö&},J e]"Όd2Qݯu̺͉M*u+ NnH|IHb\4|vzIl*IoQ "d\N@6eV<,~TxLly1x]q ̺DeY xY܄l|U5c4u,|8y̜kqpX[|ޝ鲂V1eK|~֍̞ms'L4!wL:Ctdx`q?KMP%2i^q$5%JPZX)fel#`f/u^ vm?'rP %U8WQaT$ ;l+IJ=\7 (B6d8N߳|A,4CUbd:>YRSt(Q.]2(Ő1nb_#8X*X8:Q"-̶QھȕiębMMi0T-rK>W̒C p$?wOWB+}Qwu_h K4)p:*0=qR[lJzv495(lvm(2_yyu"K$Ԑ] o>^.dĸIpVNE}{9?Һ 򯍑=TbW>*oIx{lF^UdN#q_`)#,zjM st0נU̧ Xg?3lb/~:f 6t|-HЮk@e?٥uZnLYYEXJ#k&*y:qbNr3+.C'ݣIk' k:ylF]qRNb=gNik9̬eȳvqg0!~ҾL(!qxJ)ǎyפA-xɰ!oL1П?cc= RyoؠO^JH[r- ޽KԒ *wU6,yn8ub|- '$_y>\uԚ0O['MȬP*f$ Y=z5Q|'~{ "xW/ ,&u5[agJ}ywO>q[ǧLd$,nP1Q*߀'a ЃFlULͪqhz+Ռ殎k1@9p Ŝ>MMDz8XFuˮzc*j>w3`I\KҺm Y.c1U:\m(XiqNl`u8喗wb/jXԪbv!k?|4Fx%񊦹bvCڧAqSA,uP\˝>D޵M'H*٥8Qw״3x?h #Njh Wpg Θ(A1fεy92iSCBBɘ`*CjvcKGmjȿt,8ȗwمc@DH|1Isdp,o&T52&#.픮Ij96+)1r_ԱW(ȸO=uEp/|f D8ܹr"H/)}7l|mFL100`2{t}1~B5}pPhzGL3Rɫօ9ORaBW.D'YmbŴ!qUCdgOW':R6 cN\klbIny/3-K Rc |CtwAC#Z4IReehGOxsU]:0oӃ53Qַ}59ƉFDwO3ςw*PTKf1ƫ0\ܱێ u6)q@1 B#ɅٳV~.ygB?96 MNHMo%Il .NzJx)}z: ]|AFJ M`ՍህJjhoNiqmR6v!/'Աa9$$?z~/^3urKotxs1a|/}8=/vmڹŋH2Y#Q'y\voȵ[p/:_)>@%.o)pFS"{~+]߸ǦX*qR ϻ4K`÷y`~ӟ:%{gN5̮wq5&$]~q&<#܏ f'JԲ '+0ɮIWY^dW -Z"\{.Ngjo31ۋ#{]ݸt[ B\/fʮq/\FDƂe =uHI 藣r8QkWc-$9 WD>{e[z-ok V0ꚋ2Vi|؋YBINg:wkyI*Dc ϐȂSM-Jf' !v;zo5.XɅt:L|ǽ@%byMG5gęlM}c"WJկKbUHla2הH7Jl\VǠ)ćүs|+.ݳxLf{З?>93>zDȫb15ǘժ'Ɇ%NJo^~%'?_hvwy!D|Vҕ=Wſl,VcCdfb! 9|j<0??6x]~,vy:u`~6}<1Oէux[*Yp⋮P<m'~J' YC-iBC:>ء:G}tmÚ}Ιh6e%q׌a .=v|[8򴘃ϔZ, =Vf{!^x,qvWY3Hi.¼F`RbD'a܍,H1DAKJc}醅y6V/C\KA9J^Źu\OUֽ, g/^I$9$%N.{&~@]CeV:S4:4{L*$K;կlS2mץbc-6/UZ} )H| Z(xjB3?CR9WARKaw];i@ -hCD> pKc"jxf$2ߪp^qŁ&G6=xT1 ߕ74-EIGL_*$N1%X."<ҧ>Zׅ#L!#5`r]uy*]g՟Qzi/<[(G5 e_]7&gT fbN P#]dq] =u=Ƚf8Pzɺh; Լ<.fU[84]͂Y(,[K`|*WUѪc+EaBT_ `w6^Dw㫫3_GV\uT;}x.}+nwuݭh_]K'I@t4'p)ɊJ$Y{W|2iI>dGCmA䮳X ZqY D?"V(#^b/q: #>h6uk0U̅Ju8$f=Px]%$n[Wdz1`.^|9voM멒^v$x@oq0Q/$>zțӇ_ܛ~Ln}Ur4r5>硞<~2}$O2;M=','e} h{w|\ ۷nM>~FEc;zݿٌ$Dփ~GGDج;/_ .9q Ɉ%?H¯`0ť'yO>OKZ<.حewGMn~6=!KRibeq10yZ/i^d4)}.OT:@E ˢ]zE8(k9nX368%^^ΰ^WsGA]e蕰É*;f)XwG+\:‹\s菵@k읃©ޗAlz9b_~673yʘv& ,ZwܝkUf/1YtGW yk~N5:._`r?hHn{G4‚ ;#$Lɔe D4,qJƎ[/%1 I({]=Lblczμ U=İ˸xeR5F'#Gqrښj3 %]+L"xc@B8l#^OtoКQ!$|tݚ>|0Z*J,IDATt+/O/\"WČczy|| رZ'J?ޟ~(i7y뷝aVI͛'2g?ϧ$~y[$L.Cb9?x=vG|c:X "Ӂ&1c3S#֬1S@(uiCy j%|lAMfv>Ut:ۆYoË1jn/튎[eXت.ڮFqfQohWe:\lxffuUh^;\>:+;CkƐ!Hkǽ=&p`>:"D k4 @uV6=S'ߑ Ų{o79߈E.ԒП~wi!~w~GN~˛7H>>}>仿5f${ ^ѫfC7QOƯm&)ep8 0ANpYUb\180vq*#ޜ.]l7,ђxwYW oㄹ>X./i|o=3C;sqm /%/kN=+M@LY2T&s,ߦފW:Jd Ū **f<@.+vzKLOqw6F⽆H p/( {'xWw+=Rv]`09ڻϊ]cr5IM\d7|^Qq%*yI5(/(辺9XGkg͎ƠZ";KÊA nY3H3g [_MeZ*|d)xT[ϸL *qu{=pq0[I$:G9lͻ`_)rX0/QOmbhxIt> I|bgNE; U=&_9uMr#Q3ӮD61w< |՗NL 9~dt$i5ob瀟|ߞݻخNOݚ^?ZGH\N?ycxs__~Ww9~uΝ֗_N}r?ty~sQ9g%#d_<&%n;P n|-v6bĴFu ѓ syQ1 rne7d 2e8ˆ">FѮ$6 d~֫6b$z}c-11G"ۅ ,܎YEX4{92_{ ::g,ZzU>6L,*UE3.sku;`Km} Yu x /]EXb"-]^Gw| u9D_ P/?>nlVhk")c^HD =N_vim6cO<3GPlStzUU^CX)ĩ$Ӊ}PrɼHJOPd1v D W`K1z}Uqd13vq5yc|4=}ztqz+ޥ%#*ַo~/Lo {XK|^3s$?{O /Oi|3QT3\\rQGTS!fdz,N?\T)~4yqڱwq:MZ;o>}*0 >D.?xh}1[L㫉 ފf|dIfy@U'/|PA8]3WL7|֢6AHj. sg6">G >oF.,Ti,FOe0Q] ڼta Ύqw.sV-֊{o P%^)Xoh. '4A}PsVt5T||}nU y .V`=.,ڇ_QQ({ӎNo/v05D ~~.(4Xu k[5 4Wr: 9?Ub(b̨ʖJSqN޸U%(-vjc̈tЅ ~u!7J!Z$܇U{IZ *I+^:sf=JtH e$SNJϤ+^"=7OB~Αy ?x~<\Ϧ'nO4O}o8YO Z?}קW^}Uoպ_4p[~]{عO~'_No&mVK֌Џ'ܣ# %Hp4UD;;Ĝ$lU3Tv:: %Hr",d{ߙ?_-AWPP?|ŇxGJn?&:Atg:za=н|- q<"m[jĂ5F,QVOE0G{[XOSGs c쪬 TҖuR[ДObٚQMS&>>j:™ቭyR .VܧrtLB/CV{Ϗ1uk>ǤgPRi2f5i y~|ڊrk,uKg] C $:h/,|,Cf_ϢƦt@ߩ-z^j{iX,ƽa<$Jl/` OP[;VJd)*SV笗ʼnAKf_jq>x4=~pW[aG?KewlGQ*M~{|tŷs;_1-A_-rAwקgpm%!3\ "h񏟃cAz?[0&7&Ŀ^AoM uIz豿Ia;xW}OyaioOǯS"ҽ@T/\ àiK ]Pq+UYKف.EbewGn @DaO}Vqr|rq2L,ƈ9աInTr ɶ.Nhzu A؜]c^kGԺzZrfvvѣ:`^U V^rJV.i z:_ QPmB^j$tďD\ ?M}Em3'U2!#wgw?g_ADJ9w?$#|۪v'ݑdϵڕHdU<#O?v|EW9F@NVzzTHWc?"y%9fWAKb&#7}[ȗeq۹<ъ9 l+Ƀ{NrldzMߏy_UuձkDN޾}[M?~ϧ}t+ӹ_2? $1^'Hp9/pƤ<iBYq@rBֶD>%W-b2>>ɗws!|Wt軿9m/RSs7yĻy=Y_d_X^KTRMSm'̭bɼ'DqV=wA ΡD? %.[|Оun~A1;l S$ G:ˬo@6쐟0%lV=>BvϏؾ\C_5t]n_}tƋ/%h\]~ 2[wM.vX0/9{צmxL6/.1{ ̾HvYnu1 Xӏ` tbف{d ytoDPbu{Uǎn=3K5⍊^?uѻ(ۮk^Ǧ`Gt?_:|>|Gf u(G}.ǵGW_i-6==4-xPڥO$ NzuSwL %OUԻj/=Mf*>a8)'=6KHjSHicP:"'ࣣ>qbn/$zgH܇hHL>  8#Z Z+ߛcN8WHݷ>-rڪL.m>?dGnG%}v"NL (w׾+8R~I^ĂhT57x*8 p% pA!0ePit ?9:ЂQtCc-q=!+0]Z2DĢǸE2-2A8 oB^nҮhz\_$ @ZAxSqv`dq;s+l\j b.g>+:ffԣgVlkUNx:UXҐ+_%H hlՎLh\IYωIO;H$ ;)eÌ:$2ծ+1OC>Iѧ}fLl9ȕI?c~ɛ rMȳĨcbv(6N:0͎+/#o @k,0O@T3-M4<8NJ j~j\Eւdٝ/#g$::ӹÉxzqC VH s1|kdSmzׯK+^1?[@D܁j3-*Dِj0Ų9ZYnEy9Qd==r< ٖf hg={?`wkk}܈uq6r@{>z Zo Rw-uQ=`{USȵH: Sg] pr^<|Ҧ$e<$9F dMubHN4UG,l".8RC&(tL2r!HG'ԯe$ø1|7 Fr+cQ#`|`l9GcڵUxATkhc!*L'5h=m Շj ._lQpA^zdWCf{\#΃pc;x(zEt@+hǔ# |o^,!a`GFZq8= c5$sp/^lp..j@,l8*|:vwX>@+|G7!;%? 2$h.7B ta߲s!zuFd^wlPq6EYybYt7_v0C6C-E5J|I]'#$?+]Ms/`+vx82a\XM&%!-(c!N_#sXq~X\Ck+d/$UR,2_vK'ܪҵM' DVFvc|u$A%"uw{~'Y *<'_M@ҙ_ϒ#'jB,,X(FPzH/)\{77%t'Ŏd #":q#ʩێ,㴩Xj33K*JTФv4S~"g5uGWoN'PT 3 (bmhɢFaKueA*iΟX@&sK{k.Xg|3%/v r[s-KVȪ4cQtkZWOtc6S-b]: GfEVmd 6YfX"šG-1jSJƪ8V7Q5f^jF47u]* /0/ȳ"<ֿpu5d0PU)Or+%^{]X;ʾ۝Ga˾y|-ڶ]֩pwgѸEw^aH` Ek whu yj4:ԡzeSp\ekxXLX;DX|x3Iy[:ۛX 97\RRJDd&={3oh#䀸(BkcW = XIb`X&fXǟJƈ| p\$\@r=4giϱ3o/ L:4gz#$/Fofh`%zvl ю5Wq Of&uׄhc# dh`Ft(͏*݋.qĻSqU͊uV%zױ&D41]w&ijMY8jAt^m}ZőBUJ2]U'1`Dwº:i Xw ѯo6׌=1zl)mw z0öMpfժ Aԅ,l?T׼Z?8yzޡ) ]uJ<ށv *6WcLx~\S ڛ0 JJ"uX9;+o]"NWҟh&i~XSIBSqrGW$_>w~e_W; xDŎo `Z%TFM41T,tj9)4 6`5=}Fon7]lfq_o>`,e=(;׎YD`?o뢿횅R'}(JgzHdj4SQ-اXJ0@K\[q6taO[t)wtAeݾ;.8~GޖjJZՋnn‡'Ij>g40?8ɂF~mNk' uڡU6}F M4،U}ͿtH|w%,UH@HhIl1yvǔnFvIZ(Z|ȗgR(a'K8!V|꿞>vKbK$8P[Z:TrƘzm4@uW\ft۬Xĝ~EZsKfZ}X >>uke^ ֍l2[C~Bm|dƟxGNT8d.bB'u |Mu] [!R.MOt4gdw7>`Eρ~f>Q#AxjmbhpY4h񲘇v14:Fag=6ә׾wMg[vpkjv4}utyG"MfWE}>6`Y/_#//]u{\N36ұSηb>=(U5A?KTqJ`ߵ7kY_},[:-pO&xVkٞtՕ^2Iqrs:NZrr2.][rS]7qHvϼʖmvYIT~Vܫsj$ v=V,<n0*~Y^|"R5'.7Pf;z( eV4K9tߢ!nZ+uN8}>SYs\'3w- *ADvw8 (pրW?'8 x ~ &ȭzlR^pslPslq8V[͘SC?F/g[ęMuM❟&ڍ0K1=9F[#(1+M;>J>mWI 7KAױ6>k!fǴ}V!u֯7)׌BBZi^]۝ǿ<0 ;sQ::Y1dTJV-Dϓm~unRux?skj fҋkF#]]?l yvJ -.W>Dghy4vhDOvZ+Ae;?%&GF|c frhw eՈw 1;R39YIWg+q zs]v;|ڇ m&To~BFdk/qPۻ~`ͲίE蒔 *c 8 9gcn8t0X.s^;9xv G^..NKMB)هU{`g~1昙ĩYŕ8ka*]猏cqg; =o$lД.FvgZ]sTES!n܆;vxmɊWz~1-^ -4ۘaǿu5^.%+^k,k0ʹ^}5x%f [:䱛Fͱ{W`o(bD@;ͳdr6%q!Aԉ);THD=7zI2z.3?W퉒dz_R>.8֯3tM"3,]J#bN9Xwbfj-ϑTE6% BeST0ǧx&G1k rޟB 3;((JpO^7`<4- UX&iN&'C6:DҰ܎..bEpqmM%Zp,^뤓ZP3c.9k\c"f`aGc:? |E7 U8v \<19q!U{k*iZWbz05)1/jêkǹ7nϙ߅sƺ;} a {;̚yZulWn;>C^c>m}8MqV}zĔare킞k`qe.vy`qX6amEգUw-¨4H^tW]S'h6szX9)I (E_%oPy aMw:>cE}pcDZkm]T4`AF?+ m'Sfyk!pnjzLُZ/ׂ||GXoMσ3Q m2c}Ȍbן2ujg;zHTU|i 5O1>ؙ@W;oD>w@4;"ԏeϓI;eC"%p49F]>D  wo~s/2xO+a_xj.?s- 縎;A`?`^c]3!wO]` [k}@EnǜK=XE^Ska$Ab-x%5.vX҆8?}|G ҿ13]1'P XKUBbOqҧw/k6 ,>Z:5xk!ijV͎>ΘeHwg#:i>On[OPzv|3ltW6öv]ug_>_GB e6gZ]+Z+Qq| B8u<(?C{_zBwEeowGdS1ez:W[(_k tVNψ7 Ȼ-L0[.1<ϭw*OlǮzS}.U@5Y7':./H|f*蝹L-//U|Yq] $_fJdݿS%|,!3%34C`N5СҿqsXpä<0ז%?}}xU+z9͏iXo; !QAUtX76Ea|#y5h\|_bbC /v֙m8'mY/NyJ N89҈NR8.q 3cz}tE*yݮPZb[TB{4;P)#aw"5Z(봾_kS]Ghv] _Gxs,/0wq6XZ 1.En٭e>m>uʌy>^]wu;0B^tH` CQ{`)O~)V7"''-IO=@/4]m:Q6f5>p~]AwOBOXC*Pŋ^F򇾊Oh+. |@~PLF dq)>X6k =uAE*zo2YhUE>ڬ\;|W>P t\%I([c__V`_;vem~T vPvm); l@!﹏ЉD3`9 7H0C#Yqg],ʅml#|߱^Y'kaFT%l"1WQ}OUϚc{ ",NB{ W} y~"U}Эv ;L?}D;G2TgfŌcQqTlDCe /j0^Eo>Rg@.k+>}yp! k]0_gt7Jޙt%\_#^NJ4Ӊq7dn8D6 >mtawP6t%pB7~Ļ}o/j,%m6zwc3moYF>S> ]'}vE>RUl.m? VE݊3#;|Tf%u]5~]sM񤟡l7e+Os,J,Gza[v V~KWF:'q7 /uJitvg{^*> >6 زxK}չ(۱20-{X_VF(^oCW]5 ʦ.?nWvesUSز? k eu7\(:aۤzfC- ͚Ggu| *no %f^񎮳vRcHA+tvű@K:GJ9Rc.q}@ 5Da!!2,$g#m C:ڥqHd;-A>X6Iϳv3UW 䍷 9vf5~ǂ>!zUzO{GutfȧJB'?ՓJ,ci.% 6|h9~zՁ87\@xF,yz.^ŊuF{SvpO;ư~k~RwHu]rXo5a~kݱ ue/}]gE/m¡P`FkD[9KZuVt-٨42Fn([_;Hr5>/ C?mͶ㚶fjfҍYrC [ok~}S{I\Wf]~PzFn8Rh.t@;rR-_Jc[(wV~R 6$8;xBQT_~׺(ʰ߆;Dh'+^t_*Ce"3m=@{,¹A//أ?΍XWv:J>f >Q 5~VuiLufY䂲qJߡ]^^@(&of" 1K؇ϹϢ|Gk4)ҷ 8m[h6BPR:)0Kgv5D +oX6sU,P/vtRn&t֡2KDiC$m=h3Be_X21NSCL4奇XꦟՀe@ї^v)q'O5ÞvS[*?#F9(qϟ!7k`y.Qtψ~_Cr!aWGYVOѳ)?:;u(~ },EB-^ *zu߷~-˸jc =ҮcGՠlkt8Вw,4ЉѨu|nIENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/resource/animation_knob.png000066400000000000000000022073671461511344300254610ustar00rootroot00000000000000PNG  IHDRosUbKGD pHYs  tIME- IDATxY%ٕ#xǼ7XY3Yd&%f7)hdA/a~z  2n~҃ C6b Alu $lU,֔s q"^~qqνY#y7nֿ<==========mɣ/qr 蹶>ViaZ O[~Gཌྷk   yR^Odsm/(,m%Ǵ:IWfd))ݺxMG/dyв nU[TcZxPDJuv*ƙU(-֔uR7iv-6=Qÿ#IPӡNw7C/@R(Zܯ!3^KG--R"kT\3LQx]2 TGrětwB`T_jUU.د ~' q+O xT |bՁ-T@`Rn"6wQz_̼9hl4]#[!"pͅ6kmuVl*&T{Տ)ЧԻ{x ~@>Q0( A& #r$"?{3U-:n6ժTd 9٠:3۲]6 .A}q ƪjA[ըHTm]K/bN0;_U[ S~M]n@M|l -]UІKV8U={xC&bIUOȎ`S|G/-C:$KU Jop`=;;' "DkmcL&=9sD16Eu9u `6nw5%f$y7"o7݊Dc֒i}O~ 4 ^QyNE$b]lӛІ7HI芖{l)bH<3:|o$xBvvd{og% @$IBף3  5pMbb *bYQNk{&IL 虿p7G&wh~rŝ|E-}1یF#~-uʬ[DpՠI\s(X,=Ljo]vzi#xm6tŤA n='w>.;,.G1iloo3 z n u_ ,PJPyCMwڷl2N{|Ll'?G//k>%i8rz*찵E߯e%a޹ҿv^Q0r]9Ǯzeu5bgT$'6vZ{_Uy_.Һ{6e 9$O ~W{K ϨI$c\{{{%Il%/ C9pm{H QB2A9zTϱzA"$bE #;To}Oo7$ڦuh3o?3e^%piﳽMCDޗ eł- n=F9Kǰ4[5DTWgx"2S7$"y?g:4n]K7>7>\![_5p;;;aX^ 0^i`)KP 0DxB Ob1G(3K`V4F}a$?b>֓w:[g7t멏eB+$իKEd2?Kg3|P (N94"P G(H?Wy1v,&<|Yb3@{ ]qkAKjz/w.[QpAIbl2t§W VtIBq [xzn>S8i0+m@pucH*/]@1c2yVU%4AFTz4 <ޓOOY{vji;<lsMSt#lׂ|R,dw@$ngg4Mk{t‹iu)_9boj\8;]ʕ+59d“^%|W *ŴM;;rx}*XUv y{U%G-gI )IR5t7xLG ZH2HO|ǘ=F^W pHQL'N|rn|Ϝ|rzՊMUyϑz(IDSFӹj&G 4_xW%Tezg\_|U|xpJj-۵0 &|z1&!Q /SԻI׶ pr .9璤W0TYQE`@ETtϵXܢ5EnhW:n?6J[KURU|vP%R>[[[loo3ew2㳌mTľ"(O(8Xo sp4-xW4+bդX]ޫXh1IG E[郘5گK=5A-8W'+mh4~*g9O3-ҩ?*k8-e 1X1@M0.('״(/kƈ4 )i A,Zuͤ 1.a^Tl/pX{g34 4Mki:|>?\V,/J:*%p ǼQ6%UE@TOJʡ,qF9 kgh?+hڤlwd;c1_A}RjL&ho *-MS2؛e<7_jD7aSαc]wմtIqu ͙kMMIY/%PFt Tlʷ+mꔿc(-Qq8c JQ9n5l'] nv(x/K\.sBk/1n?Vʇm+b#չ ZUk&/t̓=6DŤ*(TYbPuy"gQ]u:JmMeXh|K GRTxA%ΏMweԛffx 56}G92@.I 90yB)?3[@1M  ~ # |ZEx֤ [2gx^)lӽXFS,hQ;!K3ݼ`w d/B:bi{|Mgbfl7xhkִ-){!|l/G7:]6)"ƌE8w*$ťy+9|?@yͯںv5sl U3uRީ*'>*m>Rַ!iu+̆:#Nll|PrW~q"uսNω>6EH)]f87Qc0l)6.&9E:.'Nt$+"R/]eX2*$mr76u5}{p(mځ MQI=LWv@ɬP3`s[0q85iM9RoӺUlx @}[rK +'UExL [־~]t0u2fݒIWڤCOt)_ ?8eX9髙ViFKC3ϋ,hъUf[qޟaj% Mg"W-c}^\WK e2gldF e.̸j+bl!p1Z: X>OkU)+/+Lկ ժ -hQx̓!TgPTky*4\jtl#(b{hbH ƺl6Jc+9ZKzWP@' +{]& iL,꽞UzË1+Qt C ;G~[֩.i21ߗWeHQ{xelS;V;E6 *ԇ2/Wy~orŽqUyB س&T/:MbTy/0P62ˋ|^SahJFNsؤ-铆J^WI6ljJ-u^W`-3,T˺*"h_b:BU0hth%TS~TXY|42lʓ{=--(ZOGU̫Vio;/S[vYEv/ fYQ*oY,>*I,Sϫ>aV78(F'-±vFDmI.[d "I]j};MSeJX82I"'0<Zh}|y p <4/1Ki㢳Μga#oSM6!q_7AlYVZdo")ϑTuSXB̪< Mz&SY#|DVUW>-W#fq3D^WBI]ߥ.7a$kDS'k@䦛,X,4b^B'$Ip1Ź5X"+,(p8T3sSsRĚ7]$x᳤=瘟EFI\Q:` I\ӑa'Lݟ`1"HGFijIZfY]E&OyFAgWC~ȱ\妜emϩ Es}/:Թ6]l;~kS3ؠVqf@v?ܗ2 bl ݆x I3b5Ν7v(G!o")ϑVe Ho/3N;Ue)}9 $|u Wn7LiQV"4oI280Io"Pi 6 nsuBվ$Ēr+4u~rLGŌWjKi `#gi_߻0xfC2ÐЀKg$ؤ,@\ij$0T8ĆFeK{ \ðTe6>R>B싮B9.,%H1eʬ$>LhYnBYMho>waɣQ1&]E0AvpC`C0I#b SJ_iDٕ4R)$Her'|lQB*_.̢}y*0ɉ yS`A^(g7?ܪ;T9*-=IP1IʧT~kv-(-슰Yfy7Qe$' u Ƌ>4m, >OKlF2/g|)q]rQ7H8 7 sFd]B `}hxtD1H\̓"B³%>f@$ J,K,0R'YIy+bF=63bqjeRw_x-((HiPԵE败*4ć?# 8UxNebDl>v:U1KG_Lٙ7(W1`[GŰЏ͔rh8UǷ9jU819&018EWl3c9i%ÂAj˴pYtIM#;ڹ"iu?!;;KOsgl= &b-`KaP .cH#."gEQ 3a*boˏ"`b6~O7.6;^oaTo,x٥ w[:_?+6 ԯMNjkaVZS_@*TQF*>WU ^u9_qsrwl_u9b_SW-"DQiP\.CX2 (p1`bNgJ/;=v3}=3Oo.( ֮"MnK7ePn`C)xMHs ıd(yd۹"˸,aDyX}]*1' Pwj" G \ kP|XJ>&)y].YhhOC0^ IDATs*O 'sޕt8x/B34588DUwYKO<,ڬo#/Q5"b'*p}Deƥ:cEN1&It}7KbBN6hɣ?v"O+gP4| z1F{5Q \cC;efEL_~Xl]A]BEGMe_m_>+5ܬP P]I@B4I2)tG.3ăT^z~}/ ƚF#נȑ"4\GA$m}'$y ?l`Ր`jkgѺZuQ ǡWOu\YW-:A5-QtTwh3.҆Am#(GoSe~+iŽ QP00NđGXP(D fZoFhNodȧVېW$neFzGY7/h.joC"Æ<" Ѡm46UU¦ޤ^\^g-|3M-Tk,|sklZHs,, AHD6nN{iB.ێosQxmt6MVDi]Az&Qɽ܉|;AOZpx kcPݦ״IJ9EvYe\Ddoǧ{?$K-U[ TfJRRȸJPXtd=Q {'%flJj$/b}U.pR²& \tHŶ +i9fy4beǏryܣ y"Z} bEc BHEa"N-ن4 6HXd&J\UgI* xٸ<ݐ <#)#XEkHeY&&J?棍XE:?pޝ𙷣pIE$7/VOEmdgAnRŔ [aqxJtjUw|hj> ǧx&Qv~$#*ݒ{}3 7fY9. Qjxhhl}e2Cq,H݊6ԽHǥqyzeg^, ^x{$RQ#H "p+dEqfg4tV*w/ OB>hI`UQVVZ؏>#>gT[̓O֋2.ET?Y{?VE8uQjIàvb54UyB?7$by&❊Q"הD$"H@Ub0. F<5g?$$=s$\E ?@t[e*j#uDIߙDXi\Fh#RD$'lZ=]ȞŎdyFRi"E6A_D𺾋ad=lGGGGGGGGGGG_ț\_/Aή94|%]kWSflM|%KuMj-nGif7?MJI>"k&mҧ6ğ;\j j h5Kì!3mo}mS:_ W3kl1ҫ-u׀cFJx]m&Bw#sZzk],kjWcr٠bSzԽ9#ǭa.6 Hy>{Ӕf+5jZ5Ξ7XpATfjkH\'yQ@M 1Qz&A}nY< oDi('"UtIDL:LU_ Ŧ=!Bwi9UTCc2L]>SeAa6k\,xB.uFV#I-$ϨAsx!U"}A*"=X¨Dl^HJ.b׀o+|]öSڡn \n H9p/]bvE~Y|KU}չ k^Edk z7&钾w\ ]n[;-IGvpxcsSZe19B~zi??wFZ&tՋ_ۘb?V@"ﰅmǤuC}v5|g.UYJYo {o ɋ[cwzGԻs}sVU fնapǘW/~1n)~g.!MKɽfm|l~t&g}4iy|]m▎qԸxW?06 6|]m'n[A[ Ŗ-[c|4tivGo4k-^`h4b8)I jڵxqsfBe܄M_!?ݔEu[YCXT{k7z3UT>=5;`g<xoڷ!u]I#XJdxgW7(dw~Z>rU\. *~9ǮWc{v|yfX4d9p9O5A;| Z=Qigmd0m~?kڶ C\•+Wjl\%eU }X0 ygCV1a^ Qzճhi_I`dYFeĖv"n`"2(x<&6uf?E&{oRY$Iʕ+pvvvcꁉ,.|hQp#w9O߇x|xEzj4,&zE ^sjT fYVY1R1=G- 6pڔEJ⓫ ~OE&o*g݉)\vk׮qxx>k-EQ0NIfs,癅c)WRΘi V^*!<) CL`h,νWLo$7łղuYK eLYȾdg=c)Xe~ -P뱿իWk tdɌOMX ·EO/%h9,ײ.<.') hY _6@D/.e CKi.6 Hzi;P)\vWrxx.^(L&&9#_ƵD--fJH[B,XE8BGQըOUݧM2<$͎I0<KKZf۽io{0 pǥm뱷Wwpp.IX,M&N4jIڸjWsP๥)o:9UNFL4 W0\7L=GT] Q~EÖJ[)'45ES^m=wPyN qmoo,˘ٔM.Wig wPNЄEUB“0fג)5|MhOHjNI^aiQ+z7Ħ+pޓ&^b^ʊ 8u)_fO|p@/X<=hA(IӔ<ϙM&+&- + ċn#"Ir!_|zBq|`P3ڏɵ).d-Z}ccT5vűW?%|-x! k@lwᯢXUE&[ !^G+ -ҩ?*k8-/{$'׵(/+lDxOؔ$bu~|y-eZM)6PLA ?$pCՇqK9:/gJ$AUɲ|sY(].[xf @l֬.POPXs[DII9SK^sjCC Ug҅ )"d$l{\1(TKEXVg06O_jPLxxJC:F/f%Q 5MO,rF+UǟiXz[IzN`H}.%kO$YI6/=Ħ`&b.,eSlo|J׻*R-_xFl "bǀ~K/Md*VIo: {iq6hj-@Xݓbא>T/ hzlFs[`[-gnj֫4W51Mm8BњhDTȮ0av?_coRi Ǫ3u3eЧHy nk\.iJة.UL=ޭMOyxyͣeX!P&n/eDSϝH04v%'Z~hu&Cy8ծ$-%Ͱpf~~vSU:gS$Hk| fi5[@FiTf[6EC5Cnr+bW U^sQZ%9+v:\ҕqX5T#?πZ.?]uX TMs2F*k=@Y`+_,.HUWîʹ;n[!g^~9WY_= ,{[2]6M|q5t-ժB ^ЪIuƉ/σWEElM\*p-EYڻVO5;VuSKsB$99sNoᰒ|YJDkhyC\9c9kD@g˫6f=GEH8}'pKSWl/!\oLt>O|v! s a= Ơ wSf"8b˅}?H%UVg\W @— ^tY}D=Tx5"=V L`Yd%&坎Pb:0N U*O7:0&)}`rJU %n$03G/ƥ%a@teu|V`\ûA&͂< 3+:[L"ƺod$1b|̤7'("\)O OyRK ObOKe]L1WUR>\0R9(4N_4$_$){zh7B' IDATV?tDR11M bTp ϖu'  ϕeE\а >+)/pEL٨QB=3T9n7;Qu:?Hˢ.uMMthSʫ bzMw' $}Qyn)VUR7%徵Ι%ۣ/H byB SUNEcJlQG<呬}1 6Ah8U79_uY*Ur.uof/J= [BaG wvP)PzíR-?n]9=:3קF3-->A)+ $" 2 h8Sݜﺜk` yHª5jܨ{QL9`4HP✑` c6EVt8Yr[=ocelIK.e)Ҟhlznˮ`ȊEq&b;7@+ɚrT=Axn4k4^1^d@˭zl!ƈMk+9RG`֓#p5vlM +nW\׊(\smELr/W9GDejo]Yl J^%+Ccc$ivKYUEk]^qOKJ 1#Wҙqi cu/r1~"'o*?F]ȏ(wN"wo<*/D Vemi>3F+MNx7PU ʶ?ԂX\,qWU ^u9_qsrbŶ/WIJ$ Wq! ŎߝDRwхf[MgӐPMΫTG}'whIz=_n`)aYQE#N#5;|Sr"IEHt!1UωzP'C-& QB݈E."F~bO/5벮B>ʮgaGN MQ?wW\bzH%";5j.y58Qxs3+=בWGE{$=AP^ys:CqUd"K[r8w'Cmډ" 2P4թg'EUy?xRB4|`k4=zϵ4>["3jhQΗYYT+±/7KʖL*| T\ K우% wɹ Dkf|GWKQL pS]5hD;%'M7gMGrAMSvd)0Ǒ2 Ey1)2[TFZ5tcTɶM`LIߏbtw<`SOw`x]3Q$ \6T-@;IB4b^!~6R!^Jy ?-%D,`k2(/6[G&Oɯ@UȋRG,rAQE,"P ];ňnV} VE2-̠I] i*\ԜH.2lwν0}~ϻ҂EP$/Vzly^He8G;w;bcΧ5|b}\ CF yId(vmvE2)DgQ ԟ;L=\ud:ЎTid2N<ՅmyM8fۋYºHTYG_9s}zrE ^L;L<Fш 1b0mRCHXz0"v޹*G#J-'i>x=E]F?/]ֽ/kԎ GCMD@[GQmem3-B ^UG|D5fI)ڮϰLJjӡkΑRp~t'`ޤlҴu"!nk:kabmԅ'-?%2 ]P)ۂ^Uvȶ嶘13un*"LA SUΪ5"w` %vi# ^K٣a`H @3S|k*"/Y-WW?C-hFXH3XqZRDwSb*5\}Gm9spd:QGg-uȼ ~ksS#zv盷պԨ\bt^PdֹȽ,nWol=[?W;h=[ 5c%jk← nfEzLLr/Pg׀d#*.Fd)ftXԋE?pv{J yNף6u iq[?ډɇufukvG ^oI4?;ܿ<;?kʻov`YQhp8\tI7 =C͙dS;e 6sl{)pqRэϽ@ocOo.'Eloo3  aM`jPԖ6 +<֒Kޯٟ60Y#+?h1ex1OS!+OAu!{{{찳XTE )m #@\PS|~n*1m3ix"/^{&-۳wFm"vww7 QE:rur1ܪM]*SsT xl6,h*YS [Nvvŵ75vlPe \K{[}?5I1ɭ vpp z"*\Y2j:vc|0~٦UP(v 9^𿲳Sess:!nץ٦Qsۃ'**'2&nr1+ȶ\ 1 %|yYYl<]N]֥ @fQ&zUk~㡧t|>,6|]?v@qp㑽G3kR_^y?=])''2ctfPڵk\~#FdY JLf3OʴҲg)Fi&޷jXӦ O F P ь6@ùMξmAK#&43-JLLa7>Lo76C_G+rU]{{{ T717S2)Y ·\:;Rki!“bx #P@#?pi]T_6Wկ6/.ޘ]RIg#Ę/~s l^M!.`׮]ի\r]zu]3靍O*Fakxy  s:>D!ܐ+"<@6qVTvuF[:-(Ue.+~49彷q+.;<3=; _.$6(Lwp*CFe⦯65pVLY N_l1[PQ[gzC{}&ueeȹ|Xn|KAJ=S{l1B $.sfgO|qRҏFƷfU9Vǿ;MEi B;(xS-suE90 Zf/]i*81y\0_lˆ3k[ȾylӨbf*GGG dgg<)˒x3g8-kPҼ1qceZ:+ [(oTshIBM*$BnA3UYS ԚWڥ^CM.rI="ofR'T0^<88haz=b2smRyӒx:@=AVU%)824&O7EG]3<Q ^e͚y"Bc8R^cLy~VmݪD3oji"SڲRm-Sy&|S+ŵ<˓ٵ yov٦ed&J60.$@Юh=],Z7 3CtTV(Uwa }Y2GpPATU>84̘sÇqO.a*t< T*pI,3䚄sQ%7ʊJ`D)w]mK/ 6QOX} |[k %9Sݒum~Jmy>IaH5(,^yZ<l++ MYkFQkvgv$:6F zuJ)S02-:EɊZxWYD$/rp΢tEAQ u:ڲk>V)<.oHMn4/cϛ u\("lnuOM WiᳬW/}yTE^Jele@ §& ԋPF B! atDZB2 tNxP782/eyֹE&3э` rm4\TyJ3~lC]ntug!?_-LKWd}ڧWy^L 8kyf rn(VU\n-6n@rbx.3jE|]6bQ甕SU5L(:tykfW{!cU^IxQ96FOIgRYIHUr*,W Rhq qRzWMj*޹TTb5ҨB*\h)HO359k!Ts4o)efVIߏ}\DkesBL΃Dz 1>Y&'(eʳj2Yb53ap^9ָ,9"pGֹڔulOcsVcV('me9N}ΥFG]d⒅,[[mx 產Mԛ~;*W*SuN'f ڢh4|> G 4PUSY ͟Gw|^ ~50nDa)8D.dwynR&[ܧgSux`mVE])@&U22(+ R.*=ho(qR[VaW³a$I  IDATj+* ^LHU&[#‰:m%NTdu})G:BY70 yb:-}#opSؚ*QaWP5ťuӌ/tKmڧQ E[IkH2N\G.D9~h,ϓ1Iz *7ղeW=w6fyc(o")ɨ՛eIHR!g6g 9AMߖ)HHluĘ0Kd^[\}5F`[it^hr6EyP|wP6?d8+Jt]Eе;jp e*wlЮ[s^e9]Z<4t׬o _pk`jԀEL_j>'HEu\S5C2~>0E%pGOo*bh?qF /LRϙG]e6e^QWDٜ}_:#5Ӕ7k=릧osX.ÌvPmf+K#wahSjqzpN<{/uUenj֔{3EM=; WeZ^y uߋ/4N[pZiFJCZS|~=pgQҤvZ5 +66T/518&EC}K/\s{RPVT''^4,-Anh{n]X[٧?;h>YPz=#Et* 9qk<%Hd5Z5(Ty^ąA\G'Eezbt:~Z] Pw {gW\-+pm\-1'u+ap[=C YW0@p4W=e y&ET{i⪕eX}ԃ6v?h\XQʥ{ uYHt "WE6$'U"B c_}2J'pS2"$a)"l9 ?O lFPgnoUSN"B$؃6r˱7YmY/ {E>jHmzF eM q]-X' +`xNrnb~9X|—@ΡF1I@(]7緪#2n,T${C]}'˾Y6uSpvSusxy:89uץ?<Ȇ~h=k! (~:g,}1mMxJ UNq_'((CSudqWkIu:U;gw8ɏշvSkMH$ע VfE)Nnވ1n>FEt: Ŝf׍e}1¶fj:u[Yt%>ȭE'Ǎ L#)r1r&tCZRLZZ"8r禛b ?g@fSZPZ\*Òymz`4^$uiZ'Z*?Iod\}N֕;F9$SMt=_WzCڰʳfQ0,FK{Շ`xB!(4QV3Sp@vz:{(͘))%*\xT֔5 I CM r[սy$Hd< =@Iy]H.l/|7RQ @VUĞΧec˾ϳWFŬtxm#lVwV#PUBIS2`ץw@:Tq{/̦,E;:x,"6QT&?b44ýTGn>6ؙQP1vt3Vlƈ}TV}UsV{ip3ٺx݇^[YʄCs_D dfLa_.`zzfHmZk]]YDƪ8ƹ&DVcNd"oߛEn'xceѮE_W%>[Z&=%M1j[fԦV" oz>Rl!e\-8S8=}+rl*eDg^9 D 2&/։=4ϪS !2o7HjMQ JU|\t,R<ڎ:e(zsF }TAZ Ꮮ}ɾ2"h]jh !OjQ[̵, bEV79Evm $2EAvEI f41ב:Ufz8:OGպd`"ʱMT+(a&<˹ ( ^ۑ28H(յ\:ˆ5ضb B9kGA:յl -B"}'tjQ&&+%?fa53ښaZW]@die0ϝHWjq?L:,+7V$?vvY: BjTJU-,N{>(()/heS^EO#n ]:*suɵIJ5?ž,!'.,V#2i/DZv2P|7KHe\Gb[Ee#e%nsαSOiuNf|:Xh!&,*Y$v|[JV ,=[RD#$(LG@i#Ǫ> GLY`߃"*G1Ω9Te/ˢ|xBt\TL̃{g׏4X?)uٌqK3Iۖx|<>yO)L[qgWn'z~R(JC.J]bHimM[d حC;p=iC]@Q& LϺ|(R.BұmU֖V(mk rQX:J@[&tSZEDVso]]ײֵL\My(\DpK~Q^נ. K x]:MZ׎ڨֵȼtU^W_IOmSRVa*6CQ':cz]{G頤/lְд5becwئaH6MCr]8:?#liCq- 6p&r6ȃ u@@."Pl%_7Ws[]iB;'z/]ڤ17 | JL-9L1k#3_Q[`xY񿋘Ֆ7[(l ]>rd%%,߿]yOn~zܟ{ - h!s>[[[F#yx:(oM[3^;Ž=[R ~{m(%n,(>s+f5=2wKP_y3b{{-~6c‚S]2$x6܄.PɊK>o\5'jh7~3-ލufB޵Odպݬ6ZO!Ge}vvvhh4(|/:n({ `Ysw7 Ucm:)69McB~s/ᯊKt8ڌ1El\q9PosMg)6="LL?ߗ:2N|J97?V;%M0iLyMY& Vi?uwo8{cv!9@Kloo3c3[ +q:vc|EsDGZߖ@w1> *aSqCWk::[F`ekVmqmK3udE6ί1R}a^j;88𐽽=vvv dYR%|N6sYYlgr6N\]3IYK \85 WQtsWo=&L]?6f"BUɨPnl5> [īB ^seFL>|#\]Rj( rgg~OUULc'49=wNohwq̺ru ԱOH9@pḇ I^j!$d-,^eTSPKf [[[ppp.Ue61OxΖ BJ-Z~Ҍnn~ UcƜ3I +U˙->҉OS)1Mq\G7n BHMpMOU͗hA /Lx?$R@kNÎE_7+Aw C>^a>ӟx~^//JZ@;eYm^KA=A]vݦJ!KRp24nLq-}梔'0KspKw5nrsvE%ʒg֭zHT9C֜&91y]d8wQuk y5ԗG3lo [4v .$ãb:]~b/p%x]9GcA_P\h^rWFߥVe`'/UOg=!BHq(!>w$O_TM>Os v`f;,]AwJ/7QUFY1Z (ꔻj6uK,5E톒UbJ U3b> IDATYmJɦ L\ZekϋKƋxz8@46`6̊m]|,j" S` WS ž^eO7I)z?ʕ(.r8UQ ,kkˮMpWݸQ:⦄ܮs9U~c썙"kf71FkT/a\Ny?9"hy;v6ir-= T"fkXV71A7.xuMp,te&"RTu( RT(][(\C6zBDH15n>>\UQk9(oUYok 4ޥiUjIxȨd+luzch6r]=~MeUjڳe^<Ĺ=رzN+:C>uXOME6ùE2Sp ABq 9$ 9tXm%C HU^PVlUv91S=n:Em= *9Y #Š:R[18Œ¡vi{'2XtpAyq|%({@۬v*bFLXu{_ɚ Yݠ*|%w8_7,c=U9 l\'.aiqzttV,L[);׭:3aOY F}V[x 7 tDF/Ȫ ![b.Juz4QusΌxfvq*tLVsUR#GG>f]jc'zUbY5\=_4/i4IΥp^9)nyK;c91x~ͮmm:z\HA|!bRSsEV/.ZE2EZ`J}JDΕ5Q:bMwG%YVB!} E5Ar&%%q"h *;m'1h@1L މgfe j8kE3$_m %IK?Ulj+Y+ QEb[4!Ғ%2wuv^C}Ag<"®Cϑ--7uF}5ƬDD43%gvtOS$ČP禧o_KcYa<E@bV_P=hYۋr`iFi E[QPtny-xK4]q:?}Gނ]l4iP ³j߳9F/MBYeWrN<7NBMf Id"ak\Dy6Hr7RX K}_gC2}8S7;{u"YB~B9M6WS!܌.q 4iSJHdt ֢ʧհro;-$:az[SlLStAvPu6 ڛHVl yzCPc8mVNO _Ԍ7pT9Ex(TC3,(QFU4Aלt1clTV6vɃDmD[Tm9+a`-76S`#բcC.X~R@%\(ս p/b8,kǪLo<MmvCYN7G$ l%jgdJ:oys"{ڦ[oK! #s/RI4ϴVvyNRH‹2*wl}΋ȻRUYfhMOP܊B.鶭eo'nvV #d9ZY!mZ3sh =BϐG%mJۤo LnPT3uI=a([݄; sYg_VIN\qWMg f Y|c#6^WǏje" m|J _ N/IFU!sj) f,|yÝa-Ajq@uqհ_J(f%`?>sӓKV &mWqnfӦ%r&e[aJg|=ro+pUS0[1QWE3"fW(kG?z( SvXiABm`Q"h5(Ty*ЖZū(yzʏm}_ xbj| g_&^YT}:/R\Ix!,y,Ħv !3Mi8c{MJKm @`pDhNQۍ=Ԇ*O "=>CNs1*dg|.)#B3wA<`cVJtlU/h+m𶁑*3SFK¡x,bE禤 Gķ,p]xhr0[J9WϘx- ɦ;N<Ս7T7@}kا,37j̖DLָ2|l䅯ah+Ȩi-쉰YF2MɸPc) Q9!T[ՔchI6uÚvh.5z~ӆT_r ёɋ- )l>^l*J1Fs]"`ur IM wR)qCh]^9Cj0.nTwݜߪf<]tQ[A:7TޛG˵ً46y<9E=wr5>!tpNcr0g3by!'@&rO-ilgۛ ۏܶꔉZ]3mizΦ3ue.i}Z׮^:&uU=.oړ{Gg%3r>-$o@\I佡#d7i7N_&>U<9=4tciPl(ڊoX9:6 C7wVFϧ7i1_wH x߳SiKn&*bͲ[j7}m[icx7RZE)/FыXFմM%/ S ʲ$6w~wyMkIЕ%k7$;þ~Vw-r=#rHf%5=c5GcÀ-~il!@d?E6,r8p14V=3c;8'ĹYUE77]fmpN>?DL.|*y6ETob 6FiBWM֖]EH :߇q+܂vj+< ta`O5q^s|[4~\T1H(=ajt:-C6 So)x}M 侕w]&զ8~,lɄ S yQ"# kÒf:ҚT4A4Xp1U#H^ڨ9#$aXhC-ǞDƱ2E3<0;xav7[3 Ji;.<\t@4 C@ą}@" $)fV< Jp9,xEGC/܍ ʵ3xկy0sֶ^  ,;xq`R͙X_yQ-`,?B>G=h*hjy27 o| ,LʹSϬRr3oyCDGyxkꠤp\Zy[oeZ,<@@O c} ̀i xHC6E< V FUiH5UYvMYmk{0.x|T?8Ld iQ(AF4%\(}ͱc7h0qP^缞zJFe>\ɱ:s7=!PGQFd2O ,*ˢ@ѪAƱwN=>>^GsdoϕG <"n[J5sM:M}c7Q_,3 N?"yK/`&^7 V<2A4PZ|s98BYn <=s}nyY"K)Ggڣ,9;۷wIyI9X"GOsA+M\b6ΥdĖzJ'ƺ3Z'ycϑЂ{JK.$ nY;mwQc4̣VyI?bƁ\t]x&>b/L-Щ=1YbEOI9Qc3=\n y[y"}ϞaQɓ{mBk~nizJI)#a# yXO+x]`x(O HOxz<=Oa= G4.kq&ێ~0\SS>uw4kS> -:BAh0'6jl.9~X*}ykzOG( 0_vJ'TBi$˚eX jҸFءZ*)@-&p61#Li Th$ݦ2({hXf'<y_~Qv]JGSXzCi1K~[6-DKOnaRU>-Zx%`ԡDz ,/hVZAH!sf-5jLn/`WN" ?'Cd(!G zGx@Yp.ROlb{]>̌'&&|" kmҟEWH.y"j"j!'PYJc!-}Oo [kԛǏ$p!@˞m򑢞<099(L6ab ":w7R[\ׅͼr`mЩ&%It3E:hBou%ſ/w?afGR*Xu[2nT@](-KRץhuoCCԢL4ZTkhps5H+Nh1y8uizvmS@T_&s1y'{]2M4bhRy;OɅڕM~ J8h4.^ .`ggZ.g3$ 9>5|fa1 H</VR96A 0pF@n7UTtᘄߠxt߅ZWfZ(ix| πk*1vww .`kk8fF$Φ$;Xx<ƅ looc<Ck<1NSt IDAT9^NrdŸ-kgKq))02i"4PkM/QoRhN蕎J6e^{uq/]vwwx "BOp6R\(! 8q[ ޤ||Ʃ0 ;QP;]i$8*mzE |TSypH[C6D͋__@1E29kr]lmmacc$ ggxn:'f,A9&`S; Գ!B`P/BS6&H -8nfF>mpzfٔ_~)V4#zp?j9#@vZc}}*>Ne{#DdDp(_[``P{.E0#>oq] R@U/U.p%}7+?-w K~ܣ!&BUh@ZD"LQ"`0vvvd8e);I^ Xf)oJ?!;`̭Lkǫgo3:Zv-S$ Cp1t06Q6V/A UŏE .JY7?*I3*:l:tgz,~*p J@rڂ` cBpAE8T0?AsJoxӿԣJD/vhM)OZاjԟ(ϐ&C䨮#nEQ`eu"D[-پO~Z{,Gw"xY5!-6? /n1KϭZb"Ilo!0eNe#a]1KL-& Ȧ)=vIɛBE`Օ"<)^ج6M G4xm3 |" LgUdUY^Nc@ygs9-8ؖ)-i -L5/R54D?NEbQ3d%:'`=&mB &9meumF|0fI)*Mr˜:`Lw!=kIdE\| Y%L-QV4Vyw25-_g"@WXۨ)*Q2$u$^HԢG,)HUmm>` bn )< o -uGµ6yF>&Wk`_2{- \=ĉ5(,HG6'ޕBmV a_,^P@gsxk\UDK"S{=4MVH0R! y`WՒd9*l@<:`F\ʂJ!K"Zo@cN: Q| $.k=0b>2rs BHѶ`7 %yޯX'k$*R? t*"x^.{oо@T̪r~(H >cvӝB0wcfbkD`P۹\wH+!}wx _eY8o* [F.%7Y׹jn1k[7 랶O#dUEQO׬kL8`m5` rfe H-p.UZC{)od8Kn<2D ݫ;sCɝwM)nmy.<+&yH 6ϱd`.S1]a)8?pǦlE53d7Z+k`U"P\UbHg8&BX:=+GEPE5-Dw85Qr˨PZDD8t/Q-DyҥmvYI*yrGh(P\.'Ah(#DʼG瑶?'+U>E9{t)OƸ@uIT\B|!-Qך əN6Zle@0Q̏M^""Po(])-yemC (5EU~O0]l:rp]fk\ JFLLr7nSc1ixM6  $g?ܝ(TU4{ 8>w;Bb/%`ʌ\b7ِ 9F7+3/†ڮs'qlS{YӁ]:jQV4WwrF=$bS+-ձAʖ (pEƦ 'E~@aM nTvv2%/Ti"@8Eega9N[6RwyrJfxM6М+9=D%x &p#e4+.A%!|:S)S}| 6J?D^*5^d?[W7p˞M6ZbgCZ0緦s2ȂO^¹>3npX<J33[*-s+lY (OQ`6~9n(QW▦Qm.MbVU :ǩ ޔ ߁gK*ZL%p5>NQτ-"z5HwDO}j X 先sGrRX:!eB j0($Iּ'IvjEP 9K]]n_+3STgR\3q2ޱUS]`'ט3a#⾵ZO}orZ٤tF&b2Z *d?^O-Y-g&Eqi:w-sOlFwϡu6"@$lj0yv46OIIKKrqa4bܶG[K{%2" zSaA1ǻ8׫,:Row28s>+NLYj1Ol4 l 3y2`+{PpOʪUj#πyQDIm%2I"Ct tWMo@0SؠcJ#~!~2nkG`y:*=.kU%%;$$6T_(/l A0(˯f _B\`60\or A+8UԛMKiS{;ʹh&?X氲0E=6>Q ɬ*b*?din DdKbkՀ$"1(bBqTgs)qJ.u|]L`jpf/Z:yzB *ڤIQGZl*3Ɯ+; Ƅ[Pe:XH-(@@a`EE5g 6)zKggr8S" >9wglq6i;B7g0u> m}G@uP: l֨΋ƿS2xE'+qIf@ Q`i֕n ʒ- d*aL Y$cb\4w ff(yv^4cL\yvaoR37Ts//c9!N=r9*VQI,gQG (yi'q#!4Ǧ&l&84P ΎY@,8.Ț'#σRx)~kbU:cG 7R8FӠHtʅc3 R+:(31gkbcX%K PJ ϛb C+vj?v`wQ]LyC6$HH=jh|O3^8'^tJGylf4iZ1aQ_n t-@.+Xۆ߅T!5P'$`y~`ju~M/~`̓qzSZ `..}|d_su.6<1~6(k AR ttZi0}kZZ?>٢ӓ9uMe J}'4XaG 頶PNʦyf S+PUmo%,O:%҇^:ۚVYLl) xY@}6)) ;3uJf.*N}3?Q @-yUCK1QtP R콸Ek,|zWR$Ժ[ϟz1'D/CE/\|Wd*"n#:.@Kjv/]RQkE2w+fz&)s\mb58FE>]Nm1tω mbX|=0EJ 3;E#`~^jZMkvwǡm)#߇9!lslP;xRc8Rq4ѭxW [3(@sEQpp`P)>`&P8ȵ߯}$*HAQ|bP!8Bim뿩W_{?^uohX!19!q 8.][rKln1TMT%DhC~PSK(ҾNp/(٘7^z}pv?z0`2`<c4a4a8Vm(V9nB0Ȩh(&9>;*5jPNT1ꯩ3/~"o="uγhu8j#1L^inpQ匾@d13"U+O" #c{LL< 4 " ES=F~xJ)}lmm… 1 MŞSM  `b$%Ńbp}a0Na(xA5_eW G'k&HA_9sgmW2zmA(g_zH}gL&mnnb8.;;s9>1gY 0%2 ʑ7xBl&}!L U(\XɗN)'I s|? B_6J`mG_kPgݿK>@ RL&vvv0()>9F_`"^Ki"a.0F bZg@{v.D^THМn oIR)0K,%` "/쌙 cBR * &Jؼ{oOAmp}ҽ_P+(eyuE:G~x ([[[pe$I0<)Ɣ C;bUاrys:l|86&PV;a 4~_L6k<tm 6I&m] E31$=EF&Id&26y5!9RPeѻ&w=<@Jw(]0 6)e:*Ibς(jTuq=BPk RͽLJR.Μ(}qW!p(H ¨wl ᅾoDT '|IaݣSuUÏŃK-kG zA)|uPLC1;dCJa4qD4MO"?nQ . A=$]1 ۞1^T @tcO 7TGkPR^WN߼i~"aYsvTQ]d2Nk]/%&)=_sZc\UG %\]mU#G?"p[PnKl*t2͋Cz /槐|jMa0To@-,嬨;& jݵv*,qù0T|D5;ꫥdp*GuiLX{ğ#Wmை$Oc@J"]K[Zg.9F,+ߑrdYz6)=vIɛBէF(<@7IǽӫI*ʽF8Qdd)"A92,0ƀs4|\Ym-/3fئFE!U۬k  Zfu),$xQE۹ CDD \( l֍#aͦRVU:b#KlGZc!=M8[x~OɰRò:pipAz0ysNQ"'gZ*5O*{#.c6)`\# ɪ&*kev+,,2=vP  -R.v:bPh3"X8ϼbT0`} \㺬 ]``煬@}P00SYeDߋ#ppXda4,j #"PLf穭*L?_̞1X3|N_Bp@"&zx Mi*׉p D7HAHaI4'r DqjkO9TUXDPk )Syuru-lbApn: Yo)"X+24v`%E V _?%T8$5}&eҜ%աH%̄ZȰ@3 8f&D D82V̈h\c^^D^Dp.g]A6)Vi! ! OuŒx_ta:^6-B[(ђI}IղkFw!@!gdK״鋰%&+rUG ζ,&`,i+]sH\nZb_iϭ2!A,t<(`k% "iz5U tq= (Z#c 7ѿOVm S'U [ϙ@ 7H8CAH["ͅyVFR+A%5v 1gqA.U%$W-˲qU)e؟u>7r w*"nҘBs[/B{F%L2Fz.&?RR5vt˃ D@y#?ma%<0{2i%.PArpC ApwEn.Rd5ue2gM31,&w'SGxmq"μA /A5Df;2vVi4L΅2x,|.;8i[Awޚ9n-M@nYl_c!p͹|` Tg "3J5*pO0PZc{ 9Pt;Zƒ氄}0,<J:+ 62k@{ (l2)=\>C <4& 2f `saS)}{/TNZYZY(fuɦgB +& NX\ E "oX+?tPZDD8X&@|w8Ax,sLw'BߛHݭ٢^)Z!jOAp qY(ol0aʣ>xR,IJZ]:QҴ&D>޶Y EoY&r`F2S }m'%{V/-3+\&]"d"f$wPG6j,a X AE1(C8!xZkR `ly^v@`d&dDȎp& E!Al+n'l9䴴R^p nitJxkbppf/Ax t/knmD*v+֜-akgO5Z`ys5),zwds_1g'71zC@-^&3npX<46Abm^YYivQe^E(>9MSӨ3lN-`nw:#-M%m7[<\5.S$J;%l$>s@|lY2ED8}@b;Eū{?ƷL 7E86r췾Oi{T_i{%g~tAeچޮEuyO ~$y.#n(^OCUv*.7/)S,*3E2Lq:ۤ5nVi1hnqFM 2ŰMJ%!soHLhl6:"|e[˨j"|z~-g&E &:6-reiz#=w~yMM.HA +ߥ)7Il)eVHu{mkqLwW01 . TPin6v,O-1!ZwMLU"EdΪ2.} Cd( v#a 2Aj#πQ֦d"S[E |XF0`-3BJlq%N0{΁7@[?zH1R,LVs 5͍IAe)` A0(3f _B\`60\or WkTG }]6ẘ,uv+ȹA>.uPŧLK}DJ;+V)lղ=A4ޝqlV#RJ@(1:Y2g/!+1X \oq/s˺螰 EZR}C[ê5#y.2,1gyE}P&Ƅ[Pe:xO$^W0n\Hء@xM>G1^AmRbdL_{ WSSKt[o)vj S hX\Vf76~˧0 st{ [T<RP p@ lVFt!5 I0%Wt}z-L$ 3Ngb.Ɏ/̻RU]U&fOO,FaI14 =~G^ɆÀ&ؒ e6kf!IpHd/Z[f?9y#ϟf%vyϗr"Gp[jnڒGZ7w6|3 r/f-=9CHK.Scm؅Cqa&)) "m),75pN+no9- UpK;gȾ-&XKj=Xib9Ʒ9o^+ 䪉j-4Mmgwk^5N dX|ɾo!.og\n-@iJ6(I Rz 8lv↖a,]`f` |rƩATHKC.J$.U C)5d!%!V*ͺv08Aec2j@Quh?YBB_Ʊ8| +.uWPDK\u9PrM\Ah%OKK}L=y#2P\|:KI6t`)e B3uJfwRTe(hZV]Ρ\7]_p | 﫹ko{U=H?3W6p-mbSG?ɹ?@{ 1Bu0xvya/R{1@9dYiǨg(̸I_#x&9U‰T'¸ 3QmCqx9@oV55 $ܟ(f!bkWaUHۜnO|߯9^ۍfcIl ީ70s՞(amhJwDȉpB;:]QŸ,_7ڹK0TmR5>MHA.Mh02H+j4®zzՒB i$ 0坨ҋ:Z{=2 gkO>SgB*e~͢&,3iR6&8W`T.tM.W4! &9 $' vUxT=W{8l'JaYu K1=-ƾ:d>OY1$W&Eq.&J]],Z2!yZxϔDU ᧉ"s&Owb 7 yzOOxwmcӔ弾V+g5jYz:O!{5awdTϩTį1U"6<] ȊA'kO#wY$ΝݜpknjwwP^\Nm)-a_3 3p݃GlU|7W(J݉qS%#ټΚ~j[u~Q$b:bv"SJ%(1$^{}&dl|}&H *o]ȚsK0,TnO(03NJ.q~#'7.pYHcd ݬn1aUՌXr4d*")}#}*U*['3["*<> -3z lA N.qN+oUb( "(TA pRR@+PFOQG.BN} IDAT\Sv*Fxm֩ߘ,=(se$ѣB]4D))O7 QSZZld2b- I^yqJy ͽ$Be {cM 28Qҁ_RʙT&rh1fN}_$LJxWپ{3ZGMNoB$l$=9E߹_mQ`[qBY(8F}wW﹫hyS\8Me/,|SyԻ@5ġT}JґҫɹRZ=NZHԳUhCv#rR؜ek;HCz.3CX#gox0mAnxcĥV՞RD,eJMc-jf[x5^7WكyĆdŻ"zHAb3/S4w;9a(t7)ik>Vt" Ryaԫ2b30`Sw+FV}( ly.Կ@^c QR9h$>7tӚ1P#mo.R$J]ub V۾uUAlQ/j!@]H TQpmF~h%ϴw50kM1/]G2~%T7~wDXg0 ?*h mE\fvöظ $I#3`qtݸ -MSF#F#=J-i.nqB&}.\\nwDhںKK3=R ;|g;'w(6e1Ȳ [[[h4%Nlk55Ah *V0_J1m $0MT33O?i;2Bq-[4x<x`,ː$I-etY39$CƌL WPf" #gGǪ4B)8-skshMI ,2d>k%aG;(nqyMD]lmma4*j %c1`RsZ#( @p70bgZM2ۜO$\-Fz (1&dSܫ?mH 3-&o)&5p{{{8881k¸"a D ̤?r=Usr'p}dEߒDٗ>elDt@k@91ibww&g|jB$eN1 s qxoYz]8j4W[apX,r @tOpk",Cp Ӌ/lt,"W"?j;}GD瘝 ,6 3 58܂;20@\U\F^K&ՃWN~ L?ڙҶCK^O ]W {(^!qppM$IbdNxicFDpW%qKD5th-^mqXc B4vww1̘N&0ILϭ\X m5ِToqOHK.Փ,%$me"z WRǓ  !67711$ K"x]iL[9Cנøi %ޖ҇G >B ^)L>=?tcj v4X&&ZRG?J (ώ jgmөe9^X˓"+@pC-ۢ.]+T +n[ՠ0DxR\0\) \ TuBtJ:`4O_ȳ"ar>N7Qe677뤪ʛ-xacq3B"3"%N#V/tX߫v W \[8}eª*2 ZfRZ$d&;vKV d~Zנ2H5ƀQ9./ Xp[%vWٺUEp__'ە$ ](#!? 2E(ZsqefgUKAʲ.[p΁ONB YA-t4^갧%(  , ne\bVb2\-JFZl|R"xS?-LOݮ>AD8Bŀqeca#[&$2>u<[Ϧiٛ ڪKx.){IGXDk}Z"~֖7'fU5X A Q_:qsH'\*lW`Qv>;&իhC_ gIʺ~^ᤖ(@6]N-S} -Յ|WQɿfmyIpYnPV+BՉvߗ؞?}Z!ɶJ wMۆW WE1[ YVFuURIPvDGj e8Εפ܏whLLTvޞ".Jbw: V91m\ʼnJG1a@r6Ծ>'ˆ:U*.nK+KhUq&u9|ou4(B*3ލoK%ՏPhS0x$R3K"x5u\-Pyp0zm訵8ma.;"R!ct}\tjGH!\'؆3NاhN%-`* "ֹVU6Dy#.O̖(ɖ_ssҼ 0"x#!UiQJ*Uﰯwb𬷾& T\O֞ @na9PIj1+ mN=)n%lRoՒnj3&ٸ@n8,,p k?9c02QN(q5)Dn+֪N*0<ۂR 5B [s0CDZ+""J|M ܂,Zʀթ,C51c֭ux ܐ"e-6t`91q[L:"|n(fsn!K{(I*O>hcp / ٫m[oH9_C&Dؗ*w'K0B nQ` Z)IZ2Dpls3l߻T!\`9B*Sz2YۨR*O)$>=$Dc S0"6vT! E0ީm.WrSLc IYE]v!̓&+ \Ģmx tSۑdqR,n R6%A;`x5Kb8cW+pF;> >0`,R=z -^DRcP>ƛ\D]=k nu Ud6\u5rm.';BfmʹcɥvPg4WYsa30xAhkEx+ 0xM܀N{o= apHITLD.@DԜȉlĕ[cWlbL_4FgGRwY يWT%Qf;xFd^.Z+*"+"+q~p HD"x Λ@Hᓭ 5r+K&{EV\r>{7x_LRov bM)1 X p~OuK->ہ}gz@[6Ow=MĤ@M=V6u)hkS|If6,K,@}0/E.#nOÀXNܯt>+WVqMjEU/[rMi-@=m!ֹ딻`r u+y~|ŝbKru-׹̰Y | ۶VI:QK3H"e~?׹H.I3LI',@,k8"f=ͭn)lvdç+bQHLd~+eޮH} " 8`ݣ+0'` O#˔"UQpL3s]ed6ĽAzЙW Xu <Dh0J6WAj0Ci]$"uɻ.H0owdt a pe#_K)~~ gX\_vs|Qttc|{SVAL⨚3ٷ٠{f\1q!mHf0:$cmGBKߒ>GY vS;F=p]+Ϝ@(D^wNֽɚD%9q䮗SaUm:2i_>3,FdӱI1LbZOw u7$ž ( }W;: |R| F0a9ra|bc%m1pU8p%pn$OVUD'N IDwKՄ%cNnl0vOƐ؆2=4mjG~C昐'mGђ!+dLEpJ#q8FuLnڒG tW‚8|nYK`MR*ugPxEUu sJR5/e8;32`WB'u4b6ՀiPsw l ) /U֑'-3Nwno99 -.dzP6B-FGq IDATmOKPMR !P]4TÆl[uo(tPr.&Sa|sᵲ""'0鑰>O@Y?p!0'3B8 Ɇ#62_/(/]>Dȉp mq!J"Eq ظ(P2*:Yea_ uTޗݯDK,+mj,kd&I2&ZVy&_Րĩ-;n1k89uq+Y/^[~I%ꖪDe{9)f`bJҡIR,Y붕R{ ৶C-aZ= Mi3%}GĽ 9O1 1c%qwN{}OJ8*E'S)}΁عdm_2< -]EQ4;P3zWbl+c/oÕw}9CxZ)pQ&=O$Œ?23la)&'x>lsێ7+c`M l,A_DU94"Br%xAP6l``%֙u-漘HO(JJGpIKWEjRܒyp s,!| <"bA[֒W_QO]z_[M׮;pK>;rq`cBJtG@ | x߆(Цĉ .]!%U;TDejKS2;f)2N'2v}2dܐج$fO@4#ޮ1SreB"eNQ{D* V:Y*Cɚw^"BM#  Hn˥IN4zpyf^]+R<=* n03*yf\ZR8݌j)uؙ=?1v89SK}BELJ98m{(*=[<ڣh48_!lZ"m/nGP "',+t3{ș|MG0j;y 쁉TlXy͇PK_ip~`IhXO|t^NJ{ 9( 5 @?.ɋ% KԇuNEbo:DkzxuIB[=.* Hm%i<тJb oF3#4-jQrء}R:j9h!Jr_l-(8WɣZR[f9\]P m(ôxJO-=[HH [57=xs +[>=V}&)Ɍ%:ejQш[0_Tdҽ^E(,rvaOQ&Yԕn/Jrli¶XRsAr Uw=s{6Y(5R{\6K=*VEυ8h蜰"ؿ#vX*2SwO@ i9'*]a@ _#kwZE\,kM)"2EdOkJz <=R UR`Oy¥DITm$&_-XIQW-aa3 mm/_`'wa/C< f*T{_*h%bwK-lIXIs"Zhq+O}*JæT6@n*F~C83*U\lLrt.W*FaQt%U#eB)9ĠKHU #0 hZ"-9]r`8#d^(ꉺîK")6i J%A=7nzI*JeΔD-"ԽAcU1LCV"&A^oi / O'Ǔxr<9O'LJ+C;V~H5ɴڶߡx#{l'G=>բT,=ui5Ue[I`zyIug^7)~;>[~ Z%E}CX^*x-?Cb6vQHp2 ~gzPmVM螂ܵ  Ĵ(H(:.z{ Z=m̳q@mRgZm=. 1}6HTڤ5?#^PZaZm"=mFy]*?Qh{: =7Y2"ðռRTCdumwnXiQ<6h¢Uv,%t}W)#<#ߓb&3mV`ha:ԡxO T= Ȧ!1Ia~.A $2 UWę [~S@r~>{^5^ܡXʺT`@&tpW \SpqH iNlmAtL~ d [n1^MB{ yM`ʴíQ2]absR^ 4i0t 옝. Z?!S\ίAء5#8s#}_k]&1f z~y7;SO. "R4;`<)tlݣ}vvrH{]~^M+b,mƤc;A6D~}6w7;B[Y!MЇ:m&Dml! FJGG+$9{Ȥ0 |loVώ[$.oHX8 [.MSXkoTum9eY6,J2a m4EXx]ࠇ`>5_xM-OO;MTJ FF ଵﱤi)j!jiTsrWf+D9Gq*g:Hz윗@2K=_d V>9[I=^Z`xmlllVAPmnsqOiV.]ٻ&#vrvMi8R r>n o|ʞmll`oo[[[ޮ _`8tH1 q @ X@0L938SK`w|A$f_ g}M'+\ $p}ζn >U$ecqt|z.]K.ReeYb6"tWgv e![ր☵UL \ų08#P.G @d/ 7 ܕ-P>\o0f~0f,o{ W}\x/^677)ʲ|>G1tW9%F~WM 9aI˵4F u { BQ8C@Z:Տ3#n`j 8a9=L2 pS4uvjFl2]dB$0|ȫ˭-lmmaccƘj&tONdE (%ߕޑo<ljpߔKYt'dv Se5BXϴ@f?Xk-ںե}jӤ_#"+Q݃>JFܬ3Z80qu-juq"Nz fB ~ܦH.c)[#x.'a+H+*VթH] ބ#4bFOme"3hoKk8}ۏi)z3 e5%;l9>Ǘ  o" ,>P ~IK謋Ȭb'u!#aT6IȧɦMZw5Ȋޖ7"rlC`uoNHG -^=&dk8"1\bUqVDyѳfKGRo!-͞\v>BI^*dlB@ٱh |Rҹ0l`b^'%5=L-|O#O.t-lSmJqȈ$i<)wXa(7҆/!(1P N^  "J}]0$"]c*R-% s̝<:4+&;~ .m .Lp%]1AU1:-eYV%'^`96-,f+yZ/W0vi=IT{BD%QH|F,N"Kwҟ(Umv!6PycyC":%aX_Qkrtº0ŝ}j WL! o-DENS۠BNeEїGI`۽.اhN|`K(U.[SRiV`Dy;̈́L#\VMifeֿmӣ`N~!]P5M+ '#"(p(/7 k0Nuz' l4.[;DVR3!-̌S 7I6-!! o WbT-E3MXRqX"*նs.adl#"~@װpD̞F_SEcYCxcj>M Xu%H6 Ueu,c_pp d1 !\D3vza]g=ۂ, 9(#M 2DZSYSx:9JZDdZlD []]s "\Ë0HrjGRbb`!ؒOp Ofr5p["\eT)g[lNԃ*"Z'(K$m3F v創ImȦ]:k;28W˻n NSZA[p*{mpxJ08jH Դt=F>*K4ӻ<_]}xCEVcCTK"[ֶ|2r!dC!شr\O_9x]\%x 8#UC_ `03U6{xf0'7.q^e"p.gZȻJ8(D IDATzq /a\U mP˾'}"k> ^ZnZ#>yCDqapHITLD.ԅy<;"z">&99;|SJ!X 4K[X+s v *j0^.w~7򟝷u wѺk#lAS)Uzb-0tpއ!y14 7X0&\[m MFnlhs6=9R(?Tڬs.S(9W[r>΁4Aj:&-׹*h]S^AO]s*Z v~ ^_^:C@@ u!\J V,n`p_Wŀ's` q>MY$yNDz^WMv)j!%q$J3//<=<? c66521~alX@j!!e&ꮽ.F9̓RD7wOUlqEq)I<.7E, *7Qrmm&iO}OU 0VS޲ZlΛ3Խ <k .>°¤豧vޗ{d݊4Y>^dUu\<"R~Wkۤ U@">A]B]Y\?3)" {KPRE5#,0~k-"ipREH!^ҷe>{AmQ[B9[ιz~'M}1n0<ਸ਼_ه-! dU fOSM7i\1:wpjG}"MS cʎZ7cL1HspŊ]W1!p ǁeW*1\K:&m< Ex xE*G.TbMWW.|۸ u^mzDN I Ugo؞@;`NoG1bJЕMkı#"T%*W\/.# )bHj0kbyw5ϧ=ݢ.7VX"D{N줏1&=|J,1{ wV5p1kHT{o댱X^I:tTz-Q%lRD3QLg T dQ^su|v4Ruࢼ"]](x޹<IC=2@nr?EL\&IS[w@+z:.˲Ղ$rO%]0Ʋ6#+ BԷu:GLU|f3I\k+c+D7?`}ԹWmn4Pۿzui98>Ib$Ug1]\c]G-PvL(eM.[(l@b_V.)oUB #r6p۶cGQm_!U]Z-f}1N EIX];UoX-]j?$%mT*S7mW?.眔%6jvV37p}B7 q*zCpyYP)#IVhg`Vk?*B;|ߕWKMK\h=[-;6-WTdlMd~W]9H&Q|wyn[xKSzH<l9,e<uɽ`$5fw|ڌ'ԃƊpC[5r Ű7}dRx[vcuU)jl\*ck5[`,bn+@U鋌(AMjtXSGnP&EtuaCϿ^I:u7w/Kf"LbqSQ%Ngm{t(EE8i]x\w\$#rMmystɒh-DE8΅6d j44T/ױNBl(IT6P$vPq%xm+C/`ĿuSXuHrMu=Vvoy;< !7xmABW$I!NߥQylLfx'f^]B@È`4H򶪽FU". =#c#:lCwk /|A 3YZj9ٓ3KoR2$5n|o sfu~Y&XØz W#iq5b#GEfCcKReϳ*rA;T(j^*>nz.ѩ wLov/ti1xf7 ;l|vlzް2AuuHXVL#9Rw+ ~̏<& 롤,| W8v~r*&vȆ;ʁ{.Qsqڨ_/֒]Y(5h5uR. <)&ooĞMC(USe, [sƚi$}((N#uxscxi"TUIp$@ ƎlKD-FըyCҕJZm 5Y!w#VIla%WpNXe"4051>x[SM]Wcl 0^?YlW.oyN#9ԦO3~TѰPD`Z˾(S^MSru6p=xJ2+#ɐЖʼnH6Z`ꎙa1n:[{urJ#՘`%/Nގi-O|.H@ہo'kAAdb 6lxīcK<N\FԩDwxuJʴ8~n5g$dI{@nsBK`:^qazޱ2\`_]P;, Cl/݆U\(qB,zǿ7 !A\3xG<"3$hCYPA}@{3z,7wy}/j"U]ONMªwFԿ.5?*GP{EK"i4 ^$,{6ퟍp㟻"Ҩ,rV퇥>*G<42 HjuI 5BV";HYVsu=`(Iu>G-t7eUZ(GRՏTA?OLw_"Ez R5{bHŒhjvX6E7A?/x(t1Ga8P DTb2;yUn zQ(?w=6|AjI3yĄ`Eow]-RIayx|<> {/a皮=Q\Z pu\۪zk 7IR#t mSQmeF]80Bxr6 l䣦R#"mR$fWvG &ymϩόp-5s͸Q<-i6iJ4H&?<.Uf ZMJӦD@9ˆz7&l&؆;6Iܦ=~?tm599 >y?kg%!_|ƖM5Zir%ԊU:G:Ēl[(v辯y$YImd:&﫳G WEuz(hIUBx]Q[Ԡkǝȁ"%TXtL6g:{uWPz@*` "8A :&{jk~krMU RwH2H6蘬sIO?+>ξ-G&2Y 6I[ ~C;o:H(@aI嵩ESQRs8$IltjUmu""6re,s6'=LIvV4OiP< }ꢮc36Ƭ\<=3hA䮘7TQٟjYu4nGAi&i30?Dznosz1}|~睞 t R4%2,#MS$Y<55GO&{IG $A;6R[(Mnlz8$'{;o2rvVRܿ MYvN\-4K^}fBySZ{qNUxMl2Wdw?|_6i?UuO|&;`Ooihnp8d>^oѪ?HZ&k0"VLmȕoj1<ߵR* &HbRIw/OM616.$i0pg0,$ ‹*j-UH(J^5dTsبu]l6[iӯIH߸膪wgFĀe[UH''_;bҿc9ӻ`OnTDHӔ]8::Z.I6EQ~QrdGֱg;W N9 XxO9G|>_B$gvzg [C[*iq{L{;|ſez{Ra!2x"/^\dDQrXGx"^P `$QǛZǵ# X NH{nvZěnCJ’ۑ?OwOoJ}Q-Z+WpۣۭEt2!x~2㳳s˾U2[tSڜʹV \T8@xg1@2 >d?jQnxm^d]=69'0ϙ4"<ꘟޥ*p._˗u:ʲd6Q<=IռNy-b0[װ%U)1֓%YׁQ'1ŝ@Y͋ w%.]{{{iJQF#:1M`*ոQg mKX200F `OK‘(S>p#g1{t@Qw>&]Jk (K؋iw"|?@9[wxx>I9g#~bst$pf~.}7r qQEֈl(bx$qg} :O>fuuζR[!=MmXJɗSUcl|C.^,H|t4фOMrN WR4ˑ*q6ʙ*.*7誰eg0\0xephQnGjycsXLXkA@WL=7}Ղ( ("=I^/ v/ ؈+ fnnUo2f\xey3yl˓n4B4Ϊr_JkXjչT8aD(oฦ:ȢK50U[~{o@u{Ƥg"5ulP@Şl- 2IwA,={.\xq*{^Q<{6ihz坏1ojMkMm-;(p$9DĶI$qKb. U~˕5q%NVsQٟNί^TUل;AaA9<<`d¥јόs:0]U _ђo@4)5&Zx?TdLHwF1w@m((6 Mi\~bs_ʂ}D*kgggEvvvfш0^œKJ(%X& _w=8ZH!a-vd#"3?-ES h9cҫ-d~ l [֞\xИ_SlQ#"~p8\dE"{s^Xʐ2B 0l.$,lY[ ;(_ՂŵEJO#pV M?1r IDAT{n)\Cm_{EOHB,P6x+3[<8c@ |؆ZG׫K3cTyx2^\BpjP=V 8kŰ:pѵU&}wUkR"yԬ7Qԟz%k*99HXNdN IWW0f R5v^)Fx92d [j] WmcAT1[ج~*pZ9:цm3e2+%(EHi-(yy'Ern`0=/RO̪! . J׋sB̳)2d ,rQjE{MַyqlujmEp Su%0S|ySڻw}(JU"u\xa=պU+@V{TٽphU9Mz6:S} n}@lnd9yWfS6b:4zAEci[ Z}!]+95|C\X*';.EdcJgs9yŠ]U;۶\1gn+oSM #Q7ٷ.i 41O8;Cd_,oP\7 DžH્U ŵ/T 5 *'T8Nkò-q|15ׅAr]횦>Kyr)"aQY Ry$/VԕűI+.NrZf#N '8TWmHG /k8f3g,w0 \A^U[kHe樾<m=zΰ4m94+GZߊ3vqws|OmẋOaxQek䬔l7d|EJZ)殪ܼ!_nycjm"ItȲ@sby|3%bZU9΋&%=]u[ ||gO^pT}#uI9g}5/{W[ۥ9F6RzbGEuCBet:mT?P\Q:2/0Ӎd{M4Y5\'݂ű9orQ dWwٳ)Xyw[ؕdxAZ Kxj6!^1Yo* PUW ofF(W%aPwnR7q)>!RYR^N. \w_*EBkE;fy>-3VTrwst-;$&TUCbRR&<% Y-˒r78FLo^/ϑ Ycun9-90hedzۇS@yiYoxloS=T1HSPR* ±Hfp>pW]e#o qR'eNQL׼穗3:7cٓ7; '&H""b*#E$FA}xn"e_CL_XQFpTۯCϐA |r9cC_2/u3U]c5ͣz4HebR$V1JyR;|ߕWKHEARJM-0U-y| [pǖ N+\7w#y=oFxfVaCrk3=`7&Q<rs靷.WMw0Cw {rl|vA9kaa_ 3ʛEfTsUZz#,kbSU}[#$2~ fZ"O DaC0Wu^zٹsg߆KOnO+[`+3aB=}\i;g >s)kH*[BmU0Wy(tAxSnɑ1Mf>+$"I3ifz U'k/Sra.UM?IS$c;u7n-H]8y@ÀƼj7@L qT Jv2 Z X#M6ҚJ5y1U1諸PwHH=GKQH\SpZ#/^ޝn~vtw9J.&:;ؑ Jb_K[恴,MpQ|T;jim` ~˟[e+]=wbZM ] O"¢w9v.z£=mDŦ[(Rs]|[[8% +sQ4T*Gw/qVcU>tɃQD_E (껚rԡi \H`%ֻ\#$Tzi=Pwo(%yXBэTVR<5Ҿ^Z>+[D-ƹ-fYy;lZ#?55>-ؾ憡% $۠bA-ښzmMQ6 p!͈|y"~$Z җD(´T햶_i]NJ 7zR2򁭉E7mCbEv-H(zx%O Q>y6/YGC#QFzNJ& BX=S~=Kw.f#rϽ?3P_3G߭|?/VOetGyu4 ρayVDkKbVDq ߹rf*#[‡wH}H&as؍th}igߋ(D5b8 \k0$,:^43vYV.Kx //0R(6Tcg.wBl8{﷊Go@Yڗ vkל$]{Q#4JNKiI[AIG#zȏx(#F46ZL o*z C\ۦ,~g9P^O}QZmEھ& jT-U0#vIm kM:N>$>4WZoL"/"Uf ҼO"<OUpuϏmmXk+ilIHiB&;6t-v48- $l#^Ӥ6Pju{꒷ܳuyM[b?m599qփxW'}PShߌɺV rSKcΡ2]DĸQoڡ7[# h&YqS&&$1Ԥ0PLCa`)&溫=E}#zӖ1̝eG7#װBGRb6x'kMĤd.y|᪺ jG( sWLb:[TC#gIZ7֑-@JO=cegϻ|9-EvU5i>1':"&vvKU-m #9o*pi 41 / ;;/bK䓸bO%lXme"sd:rvemgۓ _*|ip0;UX"tx_yᅴſ<L~rN[3ݬ Tã9&}M?beʙ۠>N6xrΟƺ-@oO|YΧOL3 4%˲#L 6I[574Im\w%/'kZ~mtG*@Ke}Բ] ŧ٤Źλi].$ N^Gߧ.Au 6ζ U "VLuI:n~4i [< m6nOwz_1&-wwZNWbc8`0XeZ/t9Vq#[H]_y%I:Om^޸ڛ'4yvNI$j\g_bh 6ڔ J pk6Τt}!MrL4e8rxx Kt1{1"%Gqd{1pOsD^w)Vwy$u |N5)LNLw߃wvz|F=!ϭK&`ۘ^6K{- ݿAqpAM^x#ݥ,|>'I9O%W ˁut~p"EU r-zSK~8Ń2¡_H:_y[kg%dY/_ʕ+\x}>`2fe~:?C$awwwEUeB;$U:װ|mժwPUPe"m7p\S\HMv'L(Tc:Mu0;j&)-I6ed@v|BgWEQ5,ȏobGIK.qvEt<晳1/O(ԫ)|Q%MSo^`[oqLq GʞCK-rI $VRKzNgLlB=} IDATp y3-WEX i/>s3{:..\X&{{{}ʲd2si<3+98%1E7uj-WV8Vǁ[*2K&eTHT;I~S+FY>䵱' H@W_y9~#\1'wGN2{{{ C)ј0ުX7eJn - & _w=8ZH!bve.ͥlyMۃ+ږJGô?TUg)f#쌐HvCף׫fBsd+9NQE(Q\K YI]6p^okZV|Wib|ecN7ګķ|!Ҽ^dO=5Wb'g>,l`0`8vv Ry>lΕ.jTyS-aV`C#GZV$1"̓= dݏ)rTw%OC? wfHEy`%1S[j,6[Mz6׵X]DnW|K" lt%I[F $y0>ie$TjRdń8[Y 5fO6"={jb` An%"FVi@TyJ᧤S*$A?! !S"[OW6 IH#TO*";im6mouuSs,"u E t *k] ʊ䭄\EW*VHߢen{'-(-ӻrQw\=\65okkfXczK8'KsU1.oVLMl{63*i5Mp Su[n e-"[Wn3Ԩbw,߱g+4dŝ4纳St#w+U[gOAט]-h5vsvce qMfT}**6vhEVM&9 no<(*|B W$E*yUe(^{"Su9v*0jsV: lJ JdUU=,ba$H5KB=&Ƌ;]ϨS"_ruB$QMOFsq]+.LьCfXâ;+!IfyěcVu_U13=-VL7gTyCV{C%e>)62.mt`ߴ83$wj4W b!wWTyfxs]*=*TyS(s-8QsD[xma.Ԛ.[.$=nٜǜ~4zy 4f`P'j>%I: 1HEq53,ja1゘gMc%ɮ߹߫zTMpEɲ= 6``؀mX2,#2,H xA 0`l hr!9$k}[.{!ͼ/"3z*P\+_sT -j^GWP!y¶^԰\oU8-څ,W-u+iE>Ϫ Wr0 *Sb3pΤYCJ`&K5UoI67X BzzY /,8iŵ.dXs`Jƪ|ەئiXo!g}ݯ_]M;[^{;'=ebu|m-s|ɑ$21BXvZ,'{HGVV+뤸6\!|Rש+yVe 1oDg~=3 +$I[xjrNl!i~ q(k-3VK2~DOpQTo# uϐPU9yR* .#ػA6},J0vw_ӪLd}d7BcWąg'J*lkRǓY yUK` 荒w#eg˄ZUDGj>{{Rۦu$"$|g]4 ܐac߹0oxS|C%s$Z].q;ՔFӝ%{'R![K{ґln5a0|KޡICE.Q4$m}ǕsYI]9H%!S]8`cU`k/9em߮a/|*R}U]k8# M1xZ ǛL5xKoxhLb hYA{ R/ƉW'C+$u%6Sc {=u|P|~Yz|ĺ:*`gQUPx. |go{ sdMaU3$o8q;Ĉ0޻હ5:e_ꝧ~oA-g^ p`Lϓ5-JT.KՌiv7;bu^Oc0GK:^Ux:GݮD}[Gi˱YVwU;U.gGbaR[u @͢)Y.sN6#(Jq?δ!/I:էuPMjݐJUҊʶIjb8K%WХv[_[WΆWk݉T,~m=ǚP g9zT?$) ib)x^I4o;ӾD/Ҍ~YW㼡t;6SlmT9Uu6J.g 6H؃(EZ4K6"E"%rj%$dh>]|+HZimczՔ7~[^. }q﹂/U3j nْapKeR"$@X|T gu@>,xf٩=3768]]ٌBY["ܖIX$"d*ޖ9rQsҬivJE^#'kSy;",9kS#tk[* '3 }*nvj%W?4mQu4!MSz| Msw||x*[f)$])BQ5Q$cU}W(Z8.E?w=@g%Sg3o{(ZN.t=oήfÁgINM6ظIT3wQ{j "kUh4r\fQ#J^WmE=?ɾFjGKκĴj#=I#PގVWdž6kYi` *3x]ĠLݩm42x͊E y d>7:-'g *@Ld;QG5c})UĔù36*]QvsH ޣڼM2CӋle!Olgv?m b.3CGKfpIF!fmU}NE#IڬF9C鯠qz)57hKui#cB.8X5.ԭ&~u a4*BoZ4Js~gpFGI2 % !욤bV%nB1{8mKM uibe6vA (G7yUy=XQz?;V-{A*fZַX"^\($ *mȁɸ說i`t-CTF)M}EzH҂ bHt T=IF?2ۚmnS G}g@lH]D=^,#Ɔ{j$j׿@ę؀ 6ud>]DH{Z;Ł~ agw1,gAGA}? A\ T˛C5Zp&qU&ަ>8;xi>/VOUt'ZxU.u&><8ae_<:e5<8V 'ch~EV?96A/"P9cDR kD #<qʛ\>`sQA/x{-~??ƒk=. I ipbf,ro?<=IdC7$0EAB O$*R4K#CYT@q]DR|Nh/KW`9EBIK$ AbG^Zvb-s0R*p(kY,r9^{)t w}?1ly$YANXVz[#"U: IUU u^He R>*q+M5vX(xϢ<񠊗Q-$G,O2HsoNΎFRbIh<"9M5۬⎹f1xr<9O'Ǔxrk??q=M\5\4dsZ_5A xq^]R^λmR ?G^DmWlh}O u%ceC`VM^g'IY>Jo+%6aUӥ:HaR?h57KvٹoYsm[!n)`ր`mI.J, CM<,M5ۜiƼo:u8*b3Ǵ X'ot80f76N:T^ Ra6vH~1|*r$*4t4lxPwrI:[7U5tکUKzN> ݳdc"+ΤYcd#ԖEf"-{u5H1H{qT5Ԟ9[mu+x2Hc dg-NϿuN];KWu(i?NDyI1WHal }_P> nsL6JWowRmg/wuyO&0W^WދW)& L-,;la6i!FgٮfdNJP 'ʶv_*ggnmQg/l%j:ƭF.w1o?WNh]c7QgBM4$}]>MjNdŽQ?<#'^o{:m6T3$1؈b']WZFvPr:M9ۺϦ +oIu]3 F C,#MKäb𚽩zM)%EQ&DoUmL#]~~N{7%iN~(dV8, # IDAT\[@}u|ϥYoOdz->s5Fp8e\}1nP Zh{O \&b{-mqXgJ?h ex9ӟ><Řgn-!MSF찳p8R xBrX쪪=@ 5k&M/JoI6*;g[s6=H]sh`k`c]mۯt.I~8>>𐽽9ugƪWYe_aZcO^YZRM'^jpY.Mu-们Z$LeLk:'F^?ʕE2}.UEpxx,`(W:vc|0~~8U(`?:NQDf<'xJ{Kr*Y0ި{/%yit [~|*f2{P7Wrtt!}18"Ie:S+\4J,&zM+$Z*4vh|`ztIx \6~u9%p`]y~ fQ}g26V=N,c\ш$IdB:d%=dN1"5OƠ4ժpZVa 0.F8dY?e_Ue-P^Wf:m Lpʧ2]K^p sf3k)_\/*~<8]Qi`)4Y1 H.Bj@gd#&ClaL&;z?1I-f]wxx1W^ʕ+xLb̏OԬdjոQg캔4֥ @F$'( Tݏ*&jfGBmN<&.iQmIz&==zWA~U`U%[سwAcjvtt.iR+c~tsr$emb\<8U[ԷqK-qJJ'sML'P]PT羃:K{vToJLKh0M;¯:t%?Guz pS۸ݹE$y~xRw`TWOPocr[;qْ髰r OaxAGjd69_K^oC]uHI6˯5aZM/rXj4m}_$`sD MSvwwj2Ksc^1pVjc*8ŔKRwP^Zru#~$زx.nzh4ʕ+srgg,jĽ8-E?U"c 8^16IJw~(oHTshiطTcI(Qn .ɫ_>/&{g[D n2jEM o5?UG99'sBB /O zK3YnV Yrulq=^DNgWMXXLs>z[5&~Cm9^!qŠ$ {y03IJh~^wnKSvvvr<A^Řl0;$X%*4@[- ܴYq>ʻ8m̥1Rzi(qkdUdm\:,=dh)2fUѧQEQStz^OP[[[ zIɄMrvT(ъߥcWM u{unUwŞ&p(Ml%RZ*<}U1v+k5I#WDITu;@]cFtNUUf3>1+8."wN,wwl[Y'g7Ok׌s|d>A~}|Y o6 %ɪT`)_t/R$ `ɲ U%s/t1Y=ubh9zMPP~WK]Dɸ"R"@"bV7Τ MIi̯&~\|i}ȂgY6,)f-3$Z3_ՊK^c㵮m-mZ;|U <4)Kϰ^~QL6Z]qƺ xmgrs4κ7#'Se.f=c ^o.1dVQrˤ7a^U=ګ(`Ο*?84$/a5 F9hѽM4=V]SQgqŴVPo~T^?[# NojX['=]Ϊ VZU (pUjQmne`6,eEP2Cle]`t1x!2eɳPwpt\JV nJRP$4 ^+?Jp툯l97,1$/.qqB^YkuY'xAHtI_L_]G,\5S8QpVH gP2&:j|6%tWtP[ yAǕ#s6soz2^f6_U>%I9vB QEؔFHJ*=mUk& ).I F-6ؗ/xv1Is!?S;+9x yBTŞ[hMD\A$< "\\E5@IfyX^?CPgdQf@$W>SY]֦V5OBЮ" @E*3{YǎK"=Fkΰ#U^ä쨧dqPdI6,/-Uf3W"p !¬8P0^ 'V7_<..鏎E`^*,_Rno-ZZg:lOIϓpY~oèfU] *IsussU)ԡvD8iK,I[;ոIMk&ɮlPgY-H4:+UTuHjTTk^&YIȴ˞ Bwu1`xAPg<)u'}AĤ95Zl5F[JLrdnܝ[8 ,7!QY~\^DPK"8.M6.=M$R Yankm^5q ϼsH"փ녵ꪅNhcԹK"UDr2!~y"\ejЍfB زtvkx;XĀ ҵf^T;/4L0!8P91q|K|VzگKdW?֭ڞǏ{&>ousݠrO$L*˸wam!m=KLH:Vo%V'9^gYTf`9e,_ফހF )iaG6 ֪R`˫7S[i/늎.vy]ifö2pV1R_MAεkdU45@qY`YI^K@;*PZ)Q&k[=%;c44msʝˮrmSi?8~)=@ꙢZ~kɹ(Uuҵet f|l9]:=-H2э vc[T[^f5;0\h}Cc7ZRaWծ'8 ^rZ !<ܦnZ*ov$KuD8Srf<ׅm v7]otҢFW+fI,=V04[q5:;Օ3I`?DZ8#\-c8q]K:Wp 5|Ka0? ʧ԰U8-:N,}\u;]Т:zu&ї/qHm;xg: $ܞmUUřWmO /K ڄz0!CVo,:WEUubYl[KSw.NuLG|?w,}9sy°My >[k#*NrDVU]ֳpcUKv=v\@*[_g&ҀC h5@l pb*-.^ݺ킀I0]0 LMgby|}deغ.u s͞fJޱեxv{ż~ S Z<.U859#YSGQE\+j2 ힵs|C+fo?"IӾYgߺ ϐh:ɣ<q )PTv+$6?cJ`M7b%I1=t=fK/}u|O˚.0TO`+"]hsj"z؜7]lΊ HYjʜKK ޺k]gm v=!UeWDLV.IЪgUR<'$>Ậߏ0oxS|C%s$Z]àw\)Z!Op՛,x7ƞl-qukv@=~瓊#?-$ۓ`c4.hPKTrMoWep, *]*i~jjp~YUM;>HgVtHaJo=鏎$Iz"LZ qxUy"0TBRQۍ.pO]m#?)i_"d\L UzUPx_UՒGI+8n ⅿ,w\"YFj|&QNpg.u Bmdhz=1b w jn{.mB'SiPרK ~lʔ||1-H]4]兗ݍ,ZYVu'{Eێh7ܑ$$/Tu=1ܝ pC"T4 )"l ?OKdlǗz T.唳Fs`䤔wQwIyqѐ#R[_[WmE\Q!JV[݌$k ``=}UUh{k?N<=liPo#/̋⪲vN1:NI%#2ϥ6XmF)lmT9gR5`df <ؽQE1nJGEoJ i[$5&Fc$Mk(. 8=]o5%HIHQId*uWjW]ld o\:C 7nQWI# ,/yvIX/R D˩&ma1iQgTl5ъ]*tiZ㴒 Uo+ް%_w9_3-k%֦*:(<yĦ^} `%0:G r>d8S4(G^KOwk<1ބ2=e'*r$Ad$d:@{FTa zjѠVx=h22zij(x/\ 'sx~\m2;Dɵ^,ۆMzZ&b'%ª~]Dv4'ڼ灿 U_(ٻ`UZh_\=`U#16⌷s~{tga~В4qĶRsm eUk͵mvmQ8*k 2]*|4#uMkV m+'{Gע~mQ6,bMwy;rNN"+"iXJF>8)yCLr'Ŷ\zLC](- N!B2_S=W«3K:bDqт4p*趡mx]mvo!ny0O=H?~a$#r^aL;3h롸7d*(/Všjn"/Ҳ\qD,?h;{7lڕ2b rEMDŅ&bpL#{5l4bB\vzyyY>i\]Vyq" IDATALg,OŤjc*o(#PFa@ "kJ帡?C9."$j2/QQ/a?tS/%HʦyI -)DRh[$x1(ݎy~?~~WQU#~Eq[d s!S=#ή~TA9$>݉:/=kM?E1P4kՉq; ;u/9B֏l`]CbY.q<] e~bCLQ,gK8.yÚ5"@e#$Dv180ٷBP?^ ]Dj2<8uq: gLZ]>&G38Tr"s Ե]$ ^W;M^cjZl]t֨O @Ɠ4-Wx߷l4$3SPŌpvGu"R"f^pʅLUuQWHZu֪@ osZ}Riz4xba_V?]1yQ]UI @X{%"a -1[y ul@P:l*c`kty*bH7:u+?e~=G^ݱݷa @z=>~\$K[Ѣ8܇.@'ƼI:8\5;G[Pkc>V˦J4 S?;ܿ4+*3U>$IȲph4b4ɲl.}K~_6lKv3J=o:nҨCOZdaik$"(]̋ϔpz&6bIeF#vvvf41 0c ."K`ڎ qZJdfoԓ[% U\^H6+po[[WI{ WhqsP{{{찳F4{Ja&~ ØhĚǦ?Q[zp{ȓ~୓*@6qѥ$U#߰lkz]7QW.ٵ]888`ggg.qA@A:P"9Q2UecރfXQ/*IUWVu94Pv>@+m F}4ʏ8޻=z: ኂaYq:c:Foug#Zer'@Tǩ:ȑiX(˒<|i$%/*lk.tM"涮wۤ||&7qӓ$,Ce0cQys.*};?/+8 .ԒxWi8N#y_R5$u__\aYFGg6 ciK$%/]?7$I#ǧ~Bgoocr F#$Zt2!x~< Ӓ ˞U2DiטV;Bz 7HF P Lfy.oWЮfaǙg iDLjF7^dw5SG9p9pGGG1 惡k)_\/*~(05XK  Խ>19~lwQzU]!|uy],ܛDl=򧳭_ٴ^y`0h.mGGGeUU1])\W:jlYR4֥ 0B& WD8AJ-] N=`'L6cl塧bAHlK93ysTݟMbF~&:}\+WpxxIP+c~tsr$em_lm#4?=TݟA8k)`čF#1y~xRw`V,ʅ*xUU}G:F.M_mcn`x V>LNɿ 4A*R=`^,<)9Tn| ]w>0Q-'اvZ$z CjR.qKu3G8P]&iV[\TH!C0ٕOfÝ*\쾯{ڔߥ7"NI>i2b&GGjJս$ Fܦpp[/=f/sZLS/s 6!̃ʲkz8Qǫj[GxS3hY7M:~Nj(;ubjGb86 јxOI>Лwזc^6uv"ic@tZPWy(su<SVصT|XБ&9IrAp(1| Φ4BUR}o,-$\3 oi_\@d,JK E˪*'t)D2(Xˡ=3Xy-l]gp1/U[k1"T#MM S2vCva))sڧwzAR)$!IXt[5Kl8Dbk%9<9xeΑϽ3 viI\K#ʐvZK^G*=E5WwtEߢt*bMnĤy1-hiߗS2N#Uꁷi<) 3{$lzzŵ-R%L ^.S|d]q%E-oʆD/ƢfbǦWk‚9xr{ClX|>kx5`|N U,Ku˜AUĶu#-YB#C1I}S,~?@ΥhR}i7e)uýl+U a~ SDQ ""!J[eupSaHpGa}J/ <BO}F!HlY^0~9xȃ~ԡjqRo (l;CHʿbͮ9?aVЂ7&b)S'RHE )/Xorͤ~] NĠU~6y.jF`&Lol 8/b pǁR ๽?< AT<dH>7tԇR⤲l+O[KD`lGWP&j+ kGd}b*I-㖩ax풇G'k)<),<@VˀF}P.f콞%%C((Nc7 /\X YJhZV?ĮL7Mpn 3%2?*&!N'"U;QԂ6SXp*,hIvІj IDAT ^Ll٧M}=JezsU%!6'd~\P?؍1m2n2x @e5bMτq&N'~ F *hAnQ\u ֹg,*Obގx;6:"\,IMh~RIgD.Ѧ<o5W*BUp9o2O-9 Y<*D@{ēΈw&Yd*̒O璧$*&pqAqpRӠE:? *:WfLR֩w;p/Fb/儽{A{GwGuԪΌpԾS)әg̒#lnhkaSd\Ģ(>_O^[$tGؼ a'YzԂdޑN/ uq0vUSy,iAsC5󐳩j-;bbA;C0{16"G޳NwsR(g {!%;MM))lB(mc]VL\#.S~SQ%Xzp*B뚼7N,-Z|w=sB;z3b5Rh.c?Zvì>]N,x.7厥>GsO.jDz @,͓xkjEeMNassgyQ߉URNN_:JAPc0q`4h+~^os*O 3Lw.7Ba(Op!OEog9#=X췭i>9Z M,@s =z~v@q,.x4X$vvgO.*Ȭ880=:um<$N!q?",p3 P3NI͉xxl$6-;rN ='Xd xō'S;N(=X1=tlsk߇E~n2gah>OybFG-7T={-gpO9gOm> :]r`o[m^G75][R9O\ΉSx> W P|YyC]yYm ̓~>,, mZ?·<.~ڼ7<"+'ݎۅt{fߟTϲ|)'Η*xM?ׅ"59sc疥^~c]fWɵ5?Eux|<>AbSCLSq*ݰևvPF:wDZ^kJx RZS6 viuXWQ %@irhMjl[Цډ.M5`mj .xMЊŕ5hʠn[G +m^Mڥ)*8,wP(nʤAtQ&kZX-嵎/mٚUbuQ-{ thmI xP`pw:(OްVua;Gec!6ͦG*}`Xq(5h*%"ET q&YZjx.Z }0ȫsj=P5b̓@bJ@  {`s "e ؤJU-imXn[@G,.F6yA>x#h_".ŞkHPwfx @NQ^U^H ɄM6- wzJ󳹺M7!vGb>rrq&e}uƇz1@ B ="cR"elz {TH8tȲ0@^7l~}6;#i$mƵ],. s":TUwRf@ֵuhHpC5ɶE,ixxoAoOw<=V`~qk>5vO, I_&R#OixB6ynWh Z埻TWm/٧ғ;IyrEMM$I18^K6E 7(nZݓCw?|Ԥ6Q`XZ@Nnz.UYKm_ >J ɧ (Bh4p8D߯;Q]}&5%oݝ)Vi+x]j=<3 (Ho7^zt \G511F>zޅ9|A|*4L njkK!IQq_bl^ܷFxP_t[\ϧtq.Ĥ,h^بKm}ɲ,Yfsݎx8Tt?fS9.vZ @p]Pέ& TDHF(GD 켟޻ 3=M)8kжQ8ky5u0%z3't0'ޠ(j]jeY,T)濭!$e:l;qsѥ'>z%JGlώTvmH6&l 601ZPF9E놱g1d[ ET ٶ| 'D-wIL8nݸp.w$g*!g\3O!G|ls:X&Dc5|JJ2EqxR$I `gg5{yAg%nۆc;OeEPNvU s;`u)&+ey4ݲ;)[PFs#K˿ʡ"mϾKQ bh~z[W{{{p8sN,PDUOۦ&j` a4& mCSz#@\?`,-qŶCk^,dhG?! JώP n8b888.677Ȳ t>3q#/1 v9`I OSPfioـgUoϤL$Z=4BK'j̧~A'D  {opW^>vww1ka:"L9O bŸ-KJ_S']{j" AN{D8`NXrڂ1{ *ev|Q\0*R]}z2D3!. Ƿ%vwwqcggJ)dYd ~vJBwn01&;¸%` P e%_؅u ZRn8'AI"e6osi1OE/j(m ͽ:?=֋$ 677qa{{D4M1LtrX ¢j${`܄=uTu!<P5eR=8qO!ˑ7%e^W|mhE<ΗO|tD؀L8U(V .aMqϞO,G!$#ca|%qWjBLB3"܅50nA&!ɲhw}# "m5 szPI-e Aok0< WSh4BELxq^ Yc uK vیw C@ˌDp@wl n5Oxe){hUq] 4+/(/|FE?0R(oC@ڪe$AYM8Ҭ@r2x\5n˵˫kWcBpEEq)`#oh9.>T T)Ľ' (w1PJa<aww;;;p8itfdo5!wF y3#n ` u$A؃m1y6_uN!?t#/cMS90uIeIR\y:H}h+c@d]_GU#<f,ØfHNA)! J,z״.Z^RVNJT ףFJ_(#1ov$YkՖ ^SuZ#R?<-Nu3 Q&IR)4iYpo`40Fg|%nJY]70XD{O`bM,H'MIZM$^u,0iKSJG* 1YfSz^MuYx.+%E|O Npm<K1Kg|E %O8@Lw@4j -Nl.ɇI"m3bw(<;8`0Rud๴D)%umiߒsp}m:wuE}ڣ0"aӤg^JLu'-Nh*&$/ѕeglXQ[$ʆYyTVC+(qEv }Y2 ƫ0h/Upn SAV<%bzptEDA0J,΅wG{Hآu}]ܮޒ& ]Xeg5q/Qe`|0^oD)+(P$mؠ !Ӗ1]Y x,h}q]iɹhl&e~-D(Dp^S L Ng/]5 YS!S )\Qo!.v5Pp7"xQT?JO"#JUh*%QA%U)J>+j+b坻-RJ=0rA+@ja\GHi6' bK]&FWtn["H1&U|"`DH{ @K5VǍ{f5ͦ FDJҟ%H,NY)r|-11li!I"-y>Eq] rU,<3a^xҘ8`\<*P i=i6"4)%ma&jj/!*腪U ̐"L.9viD0b""BE1{+,,Tudں6{?0CX9. @ 0*|{[qC?c4z4u_Q 7vAtw+˥,-:nL/Ȓޅ=( `QE>z$|' ɥ4ݯ@0R 7#n. WZ7226z]-Dk30#d?jW%K>jH ZیuRǢeahAcy4Q XbPtJpnvq.Jr3[3qڪs%CRP@pD/kP^!I;A$CTs3)Iu6C=*"B@Nup[\^vH+RYwD(c.P:{¯2,D@&iw6%vQ8s?"oS0 *%!DƝ<HFªX@bz)/KT;ZK̔Y_/P*HYlDq:nF^C\*ʓ@Q`_c.d=Xx6]X;k` j\`'(prTXf Sad ޑuMuyGL9_D" -1]-04H  Hl0kRVF`JOCܖW9F Z2OZ<הWPAq^H~~ѸRT C( BTWe[ψŸKYOO&"""x7cqlbCI/w"x۔u{pQN]Yu^R;"Xf+5c|F^vOPiy F hS"iZˌw3[jG hl:Vu> |JXfW dW-w0)&3ԫU: LR"\DAŢUi6VGMxua|̐{]T=^ 2"P^w$'ǜNoW` Ə<&Du EU@,k+!.9pCtU\{u  oslaQ =M^[[c֦L1 IDATNNMY0=G zͲUTATU~>F"gEv6#]uZLP\cUyMm n1S2|REFkv:WѸ6y4bpgH#{b.BFEd_BO"^'z 94R2XJ@ 1ZR Y)-ф Nq%Z#]H?YU!7HA(3:ol ' ؇thF6 W2r 0.Km5?Ȓ,D.o)s\9Q/T>  Ԃy 47k< )(>*+o`)o `(kS].@"]p[D؅ A:pmKEUfPe2vN ZcKqIpWդ U8Y F H)p&U 6QjG" ҸB)Y /$("b|bm#VsB!gb֎#e R[&zTئՋ ^[O谊3,sh*S@ TQN[pL*bH(>SO .) \p?*Rvtum[bw<,P'/ʀ]vgm4'7J˯sOM9:EOnRz@7ul6CmHk'tJU%}7HIQJ=3ͭ_AY^dٞ@K'0c&j2̃ƪmku L7p>_c'UsgRLo}uґ&Cv`9`5l6[2]히L)|E a ʫ p ضp%v)0¸'2)o s1! 4kdX$y ߯k㻪&^ s@<"(GDDb:R GY1C0VzQz쬬Eآ5!,c98g9 ]cyIJωUVNǽn].xhlZ%d EJEe9&+ĉb`Z4ϥ6XM!xI2Ù1(-[,=Qg~Kg+<ujAt¤ƣo>NQ{I5y H_i !Q:꓎{s̖r=.x&9hlGW؉m5E3x.nl/T ^_5s|exDў#Š薘uʬR2 #8Jn {ؚ RB2%'X%}`Z!m9,%#)8\Ҩ;TZ;ȔxgI&=S" |rr@ߴɷG]s{z),f]ymk ^hsrb_%?,wx;8Va,ʡlt7CJL l" D6iDƙ0N 8eFAdsP|`IU&=1kqyNq##.3=}]Th@iYCc1%&g93=ܺz51Pj3b,oPW DȉpFᅆu"uIS:~oSCEG=Q܂y IJ0.7Q`S(`dobL^p6HYd*jA%Ѿ2R~AnB8k,OeF% x=̲S2`^#E`TBJ5.d rk&|TwDʷ!/|ia& '^f͗>zDh?,yZ&=},3ɒ hkG()\6)8eYSHC~-R%r!"HM99Ug=Ʊx>ouqˎf!VT |&ޙlnζ"JApd_+L[)@w]z6viݷz#u'8`mXǙ}L-IJL61{S 67pgK/TF ֩IXŗ^ C\v6ݹ #3<l Mל!0͒)$M%C)E}C*Une3(ԑ[{ MAxmbm ={s JEL|'{7/͙'֍[ Kv JkRx\el3,J3@&…U8QTz2ᅄ(x{msGGy劕bAuکiHhGA*Q - V*JTrDRKY8PWSMyUIyϳ,tl- 3p;X{7mK29Cw]t TA@mML(W `yi@= $B XMG= *l<|*\MX_j:cg<3c#. IQoLچGHC ,mf+5$-q(#=ev%ݳPԳiæ6 .H+{BX>vQ1b\m AsBk<`\8Ɂ93q]ԉ{[YTU*Ri->&܋8ȳN=Vybas?I 56컙'9~bJ|kۨ̏pHk߿k_{( 8r2O x pMe ro vת37Pjq>%Sd,(NouQ؉9G ZXRHn3Oq1@Ʋ=vdthv >nNZdnslԹ7U> ;o]Bܱғ+'-hlGlܴyog&E0}@ o|3DeY M-&G ^{r.svF~.h.)l:wѧh{Q?M-ʚMtr<S{ ?qI{a"6Q֮e73>Kqp,p:CKUXT$m b*}tn7S=tNxd!{PG1.뺏E`EKȾPqmy~#{.7F[ tY_!<&$X]jllӞsx`,ϗhS2 Ԃ}Pb8-;{,6fvw;KgB x||hqW4\g8Zv9pc,J UQu(hUL)(bU/zաEMٟZ %TB)BlRfe83iKWĵ|bjB+( <x],VMIMm2ɮ4 xP*bÂfw]EiTj&Ck5tmٲ!$|r .VHP66 JHvJ.vhm`ņ2xt sOܡұÝmp,?."/%`ŵi:^.#!p! %&#M RímR'S| a3Kjl?pS"u Л ]+Rf R aF{zp%zXJQ{{OmE &2~ɤ/F"L>PTHF^g{bʴnyD !oj`mBY LI6EI/KdST6~ưPQAnԷA@Ws,whmH&e XYcDt'UFNZyv7/Qg^jc֟s2+V@T7߸Ⱦo-kxb' ARzts߽Y濜-O(1R+F8FC߯{Pq\[hchB^LL[J*]ېddrG+wjR4φR?"Rvv[")SKpT1!!>z$Y8G="RgՆm abDC*zeJͱ}vKUzFguo9;;͏o)&kUrLk~pxp`^(EQYf̆6k7  {8P`[۹hzzzw ̚b%I lll`kk#Z _բ%"ÈAUy `.B>x?Cs>9 (ʬ޷S;z$p{zt?&/"'w paW1MF# $ITMUEQ ĞaƦa q5!9& F\7"]4YeSXync)JFFIOO<>vhf(hx_q_9S4?sZvvvx\HAȳ :q5/p06xb.+ rf SK8 8*)pi4 T%*Y%D.v7z|%?wDpI=G765ŵkppp]lmma8Bk c tx672$hi,!l4ƿoc."H_@z֕Q Q7͔Uэ&?5#w0Y h4>ppplll Ic)קs|fF^b`>t} #r8;V] OSP n7_V>D>{ossIG>Kj`sԉ]tOS߁dg5Fr ^}`4Ak(0NLdCXcgDҸPDp4p\]h6|М+k6>cY 0\JlT#I܅Hd0OA*FOt M58qO#Z q815ٿ&/ʷ.V2GGk{cQ;D,6Og >pTMqϞO,G!$#c1J|?H՚#fD k`LCP=;gM\Sղrwh{uo .[hf%CCL.ۤDbɦ("Bvww q<1N/戮|L:nU} 48^9{7"شshhF`bE?Sh6 \Q&`BGY bn(;._Auh :5ȤK_JSl Yi'!‘\Hv]X[m--Fiaz6m]п^N`F %'"~@f>u[g]jLV֮pŒhM gއ{e%2 IDAT#TBKRݚhU%e~|c" i-.̈#"HY9 *ZR09eJGZj]顶YޑCA]8s LPH5 #Fsl@'P ~T]D!TQLhK|8J~p<_[M6YU#L$H_e֊4,lYDTģj#WI_\#Z^kbH+i] Dx וЪ5@ԹTlc&|90 O#4\(`pIVZhUuAva `EY0Nv, S, .5m cl-4Xiu&r9ULs+UBY 7%áX+T heY,ש$1:p"\-JIbhbmYb~W˼z`VOψ,ο'kdp]M1F !8 /A!?! :ѕu#0+O;RjF ODT{ N)@`@xN{.K܃܅aqyͬ *2]n&W)_DD-ܡpYt" շK6ltP?3:f(j{Uݻ iSANIm*Ί4&]׉Z_m FV3g4D BA@@&ŠL_ 3n /Eˈ*oe~e" >x*:d8R>rŖFӵz.WY0'@*6+y(% թ[e:1-2Nmz/"nxI:.C3|  ye!-Q` W@yM= ~@n= v[_Fg-n0&rϢLvU*kc | 1X?lѭ2fw!]e*]EWkDGRfNn-&zթfƜ-ޔsȒ_@/ B˛W""m M[}gMűVyMiakMir `ɧG\dwŇL EBic-ː AC0 IyF\ŋ=][,C",fv%MrSl 8`Vg<;1x)J%BujZ9u]& " Zs*Z *> psK"WD3ŇE"]'ipuUBtADkۻEQܾ%vd?G&TX &P)Vψ`!x"$>*fp"$"0^V|_rCP1^A(OT33csu#1owLp3'~ K*L mn`k(\1Kt)PG dc|W=3' ڌ<5 1; )7\صlB+b-;ǛE3)A:8ÙշFnBU5ͧ8 {2{#"2(ʲ-]a&ZlH6^X,bQkd4Sa|3|vQ z\ojŁx2qSfJ2:O_!TIˆsz#)fZ{,P2Ka[ ]%u8>LYٴ7SR;ApxzZ 6W2(zGKLm@ӶnC++o]]Tbq&H(J jV+X<@=j-%CPPX,ߴ3|fm  4+6(UH9VIZmx3VkzU`@q2d`ܮ"[6 A υ3RRP,2YWe(VZ;xxSfs>[4lbn͹"n W`W`ےeM%aCLMŞ2w;qj5gwos6;Loا+ħJ7n~|fvy1KߦCl&#"$RZΖcfAB/q5VI7f?Qԓ8E^sTuzC;̝\wZ""aQgf{ ;f1d~\mY<+&w؆[ N*5njKUlܻRdԤB0W,Ӈ&bĥ-d]T%bb䳉yfgJn )CؤyO]6,+vy \A؇)HK#"e|"0bl.l"?v/yKl;PMCV ʲ"$K7h"{ReZNSqrsw;sA]isC|j=R 39wSmGGƞ~K0FƫOM%-5aIPeAPD~#)j-|Cs<8!%/,yHʫۛ!Nl>Hc 7͋CIOkT'\<]:TCf ma{םnB/q-euWmp;0(iK_  K9@`, #HAmey]v,608,@tIq%e3SGVfR#'v 2 j #"RgNN`SszDDlM[<{̂h 2@}ع3d4] 9f*x7$(f Z񑅁b:I({q [)V'2}dmp1Pisf7IP9@f^<LJLqkp3[:" ^9x/ॵPj@ ¹@1}A7v"   $sR0t ԣ..O;uW4DT>xVNz:_{EPVg_B3) p/zX-v8Aݧb,ouV"`؇ʷʶ_aA b%eaVH77dva¿@4eE ,ۉT cG Vhy.StYolJ]X$ 9Rc;, n͢h:SP8(7MT]_uF:zUw"TKs99|މ{|?V%U?NZ¢*ZlRks wI D 9 0o)s?*KۯbEZ6Ĵ1-M@=*'y9gNNk>PrǵxbԷFjDO :mh8Ce+{]|~9NeY3yr`OԾ{_eQŢcP_9G[SK2Tȓ8S~ȁ=κ}6 `:lEp rLc,E.B} T#)ê{)1s ƊXXd}ewA rz>>p  ;s6T ܨ`O 6Q g%pcR/8ŢA<}DI:t  [HT; )U:Qc;ph ;f| Q9b6Xe;ޮ{nERק6gb{}>/%GX$O$u*ҳιmqT]㞉׃Z3RvIі[l@wm*95W$Ɨk@=y(&Cf ˠ^)0}&K%nw􋼥XlgOH(3UVLC]ቈoW l9IPgS3ʖhC=HO3xM4Q6ڧJ{c.5qa=Fm4xQoΦ3Y +X@iXxr<9O'Ǔxr<9~\>ym7yއ!H] 6Y}#R缛 _K cd J̉~ELt(Eu|]^HB-niQj4qdRd!sbDx5թ_WMrpʜ@w@&u~M@?E9MҊ9Qᔪ6uMD&\2< f*EHk a"s 2?E l>?&cQtlQ ,JzO3ۯ/\Ge}YjӨoƘԾecK?)>k p>* ۭ!:χ ^QtkB21Wtvz)j($ 8^ S`3d&q>z+b-yU)̀^~a3o o_N\lz8&ZMzB™wagE?iJ?C_!" GY[q o] F(qd |l?lz4-a~I I糇&ሙ1'+fS47+`nEyJSo1N>;{y~toO| `hh\8ϏQ6Z›0@2!8=&UHb&LAQSԿpi?`[7 \` cc C êMǕ]ӶC MqǾaj?CCZ4;xtrbIDhpc/<̎8YmmmassyiR&"BR-#aF_1LfȄq8+nArZP4c{)Ϗz3uc .Gߢzu @>!EnfGw?x""I`kk ;;;V&{^%I~Q9M1 [ƞelYƈݎL?K ` 㦛r:=@?c12$ako5/#-lZ@ ،/>7Lw-0;O1;;;.0*2ugi(Mq%+p5ر>x&4aV*CI}a\?(iV3g1%B&v~r}l2dX0"=ПApx&0Na)8RF沛s0ғ5k~ ]"kSC%Kl-\xW_|;".2'!6F%m3<;i>baA`Q$ X܃T5(}%!<0| M98| !)`BboduKAY ^ Si|L xS N`̜MkԔǫݦ܀=0"l9P6"E!6(7\𩩈u3-2T/Jz_@^%u[[[h4_:ifnM)=0ٲ]WS)<JBR& n`Qol}GPNT9sZc"!? sᰒlnnVex6OR'?/bMGew:mcj' \8CL>y\1bIl"nXQ,U?{nFI!G31$-}(1QeK`S2K~̂@  ,z.\K.\r\w'{dŨ 'im- IDAT#Ib/@oD62#Ș@ΞB2q1,.jpa1 i^ힾ VK)(iSW(2:_/H'NO5tIy$O:2޳Q b-1$or scc 44E6 i8)Y,-T׶`^sBPO #q_·r{BW)ES)X?@&th4i ͺ׶{+{P>/B" J>q̗)^gذ\H8 Xc\cl{m#HC-1Ws/(Al g"QRJ5_9vLseLQA&u^A@-,լ & nzC@Q>6?]Ũ res8~E{h]ަjW|ADHD yˈaQg9FĈ@Xp_,+bK .$}7 n#O 6 L!\Jev}8u)o:`gV()Ug(|%iMpŅΆdzY>% %k(`tZ%قEp%x6̌13"5!!‘pU3b|G !­OT7Iֲim.H3DpPF-EKoceI^u4HM?qD|akh~TK3l:; msLq *OݑG+܂.PWJgSW4RKgf L7m_nR̈\Y@)`|KVw öպCmPEKQ 8>|hB$OImRi(Ωvް,(%]|eTvŜ঒uTekfbLDMv:ۀ_ 5ג*HGJbyZ ћ<ʿ\P"xC Da"+__Yj󑞅 LDzXDxSF|#V>Ol@&,K;sXy^ =i_)Pj,Ym=;E)`βBI0jЂ"MMBwm@R8ERĩ1S^'R4Eёu] 8gXeWP5nJLVu8Dkk5H.YzWD^8BOE`}%uOAMDE2d֥èKz`S(XVAT:T~uԯykX>HƒA$uVd Pe=Ps.xq_B FxDXu̘l9e\&`]dqrs&SY{ʥ6 TI+VdY 18+⬢d`^i4gR EX6%X+wwI\` u)CjYV1˕. ahZFD8R R`11 aUUjvdHϤI_-;g$?΢ ɂDp nmtC᫒c[28mn]g=|x5(olS.{2J(Jс b )Nw5'RZdωARw!Ssu܊MW))2k ̑x5'uְH yL6QDrPܯWy iAH(4*8O$EHzlK=y mkYU]͠M%u,K3XK-An)"2IgEBL 7ݠFK 3n/eDqiSHFDu#mIS!+w8ip0 w\sp ,GʤJ^lઇ3Lفى@"-~~3[ B-VO֮5[MDDqjS0؇|sV*!$[jY0\dM}f#Eo7qb_ga8WuOU>q},s[Y$lP(ѕ[YG+~,u)gwU?.P~-n6g7$ ,V|.wn"bly ;6E$gأ5Xځi}zkidf[wZ4Q40ޒCT0|L >_겑C$IT)")QϦxI]fqKX"{F9v`jC!hP6ϟ M9ݮdL*ՙeY%q*M\ߘ*b| 5mursEpsK"ohY3ảpqL D_-)}lҁ60we7)] MwlbdRH:*>"`(>R_1` pi#㊑1HG}-[M\BSפ͵u@#IB+b-;ǛEyGsqׂbNZ}c4Z b]I-dF݅o.9Ž1qBq(F!1Bf5wqC,lh"#u/PdEdmWTngxȑ&2 Jn 7ɝj:5yn;Pݾ)*Á; gFJ5>3SW")"a@}FlPzdӌsM2@,Ao=Y)XG-y]|UF2Q̕Un:$[K\TkS8KKqG N=+c$6*9__/o;p|wVX/NTՓyԕ .n(u(n~P*TfB[~.eNUr|QJ ^* *Fi[dObCi2+Uc;Su^Iܑ R> BIl/fuGn"w%#BuFs"Og/gYyd4Pn؅[ RWlZh@)@ zU 2S*W4twU{ϕX{N<-=K#W*g-RM4Y kLme}ϕZ g5-q;(Le{n`=sƊPՅ9YI]8>DX+*I?n(Jϰ'X~H=[iPFv,VAq)v~+zǽX>^JGXG}wǓeF=c-Jüϫrk%mUH?_ qT{ |ԩ)}Ck:(4SLѼ%03^*>wޕgN6;' =Q_ԡ &huŁ4Ufp-.9DŻ},RTi()g(=N <}蒉XJz#Q 6UqhZމb-,C`A|= Dm$'es,g Y xΰ; fw%uO'Ǔxr<9O'OѴg~V~GǙ{5?XWEh3ܼ ZX?#R#*VھutJYJg Pt&i;Tu ׶d`j%4<;aèM]AUX3!yh yxonQ˻Xgl5?HtC+TeͼmSMx]f,eUp[[I HK~ݲ@s6;Tf6h!7#B&"E 3z&#DIeͥA+^aS!׬,qS],EJQog!/=2E~%6;)Ac#pM@OHbLW(xd_/>DxؾJ\) 2o*- 6`ۜG"=FkiTf9r7&@3RhxkͽcL[le߅Jj1xr^<3h Sΐ{TF#\pW\ŋ }l6C<x>ضTΜi^ agY j ԙ/ &|]lv劀H =@Ei?4H\<]\ ";{n7a8… t.^]cq(ʙB Nf4õ-|?öX˲i2x TNn#5B~Ā5-ΡU0Wx7oPDFvzT^ pE\p{{{0 sL&'|l9F\Ng˒ HRzf0*E@#f}F%"7b^M5$:'p]d%bYHQ2ҫ&N~.""ȧ0 Iloc 4l2fXp9IYS\<#7`.,nXq* KVS&˥I_";rަ9LkG>  s7OyVD @vVvn<coo{{{x<a>cvvg'34gY 02,ʑ{nA^ .`,z'4( be3vƩasdE=F+ymSHL>#lGmE>D8r'(&8FO&xtjVb(:,= 5)V=oXIU4kA .`QeD D>fkV~ .tMKܲK/E 6#uz=… 6~(&xlgz:}713g4 WqJ ރE$C e.Qn|C8 LMۀb_E{ hSU'gjRvk _@b @(gonnVF'S:cY"Lm0)9PMlH?nɦq$. M <P"Dѿ" hxԒtG 7,};>nB-f0Tmmm|d?K1f?ȞPX=A[PXNp0l,v -ǖ̜d@ ES 6elfpL{.rb" "clnnb<c4SF+S|jb' J P= J*p.9KQ)i=2RȘ**-e_th=PڶA"L2 aF>=O+u9 pX|gg).evT?,b:,0M n5(.<lx5!V|=Mpv Htd ;B:VԻ'oޛZ]iB;EDFfD:i]]v *AwRUT ѢjP D!hBBVF5*egڮLg:^ċ7 {-~]ws/"r8WqYӷ^K$.2p8V!,ЙlVOJxSAp+F%f]73P 7ዔⲱK!_/F GEVxm9;' 7&"v(gczaVy,ó[yX&Ija,i3B䘂s y`|ަjm:=Wv- X=Py-x댁KW7X *։ԐeAZ^.ʆx %nzc@6QZ{ W)p"Z}.($\&|jE44-JjzٮN8Bf#A e 8c E㩬`!1" `x +jE 񩡶 &+|WJ+r=!|bi . DM٠tr%=f.Ov/oٿfZe"P*(TJ`LcI*IXM`;> `AA})BJT>^?&, |¤Qx9$/])gj]ΫdPaep"bHYg: 4M+3BEW D RlxBa€]ɷt<@ (I0܆OS;C"x ,(~lY| R)ӴaP#̆ymHeٕrAB}ep9\)i \_2}X\W`׃T=#,;iP4xgx~{y"?߆0vRI׶uX} #*rŜ? Ԟ =Y{@*_g-=CpK\d<&)"p"x$[e}w\r_)DF Ky?l}t&zZaƶ%y p!2gLE#a!@ qOK-fL;FdЧŲ%oX3dLS;͊Vk (Ed^yj~OLv-A0Sj_CE87du P+ϟp=z/}2V\t@'Z֔ 6Jު2dtY&} &D D8kF0nI ձs+č:zU!"E0C4'TU^T" ֞1J+7A@FzTW7ęwϐR-.QjZ='s2 ^XU&ac"W@6i '`IE|mTۂOƍ@^yu{ZUrlCÝs"ަr\Θq{֋&&9 Y麊4V͸%"N.Kqsx303vEpJOQKHNhwMe< 4z/Cp[Jq C["0ujC޺)y.izlR{^z8,1-ZXH|]MW6]c%r$X&L Liڂv0\L+mRތ[G^m \il׃2)MkV]YLC,J^ ȶ#Dm5bz."m'$Ju+?l UWk <[;.m 6ΦoYJ} rx t^5]Kgb:=7 ۤOsV|v$\f!V&cAIUT "3^x°^z lُNMBy\Y(~\DD,֐H!_l\TV_b8Hm?rrV^24UW`q7} &M%dz\d5o,;TgE9qU ,% | Dvm[y_FR_cIW60s$ϫ Q[,ohm-qJ(/◑V5 Kk Өwgh:613S0~R`bq/)Hp@rL4pgx3bS%mjMI)A*NgQl]*8bi[B=w~4!Kf) ^fV crxv%GlIuxJ &"8'8ZTy-T[`NJtAX03|e*7V"ĕJd\GK0x(۫d/򬀜8;}cs lDPD֌scVp/.``1[B*GȋuA m)byY]qx2G\|8=awixܐYۃz>,Mz*o]lғ|Z$شglBtf"bF| |G7ġ1\Bw:<涎㇜㟺)^+ s+ <;(c2z{7f`aUš -t[džb%l'!e`0ކ.q`C0,9%Pde}2` *3%jԤjk3D_WLyҶ ]R/(b,IdC>Z 7xUGڟ=T`w|)n6J^*eë\kn][c>.'?R [}尸_xq(g`P b:sI6SXWC- ;IUvfGyHJRUBA\֎"8v%p2|  t0uTck _PʼnʽJ"3\ygXHʳc%އ#W;k}bөi5ap!P>;v'U_L }'8}΄hh?s-N;ȼ- Sx5(T%}C'kМy݋dN$7ýL7[`c { @Qu@0ǒ9N-Rz +wX >BSqr8ʔ6Rk6o :fgvyb6%=&Y6&/va/DE7YETB Hye]؃6e|`.Se`k)$uKM630gҞE҅BX(m,h:O-b^RMz"MDܧȇGԱ 4q#yथM܇ ˜+`\2OH` v}H1ը(eh}mX2JNf$_{aǙ߁-ؒ˩4@pX?Q9>oi\&Pw~RI?xi! ]bib0bV oz]<~^QBR51ܹ͔ĕ @yR%o SDP 9UjẆ4p!4.*KEu;^NR"~Tے8q/] qmS,mʕ)HW(5| R}&Ay?Vw%T@qL i V-ѥT*2ڡtWg*8?/S4^i~ƙZr7uMĹ?u_-w;6j36Es)#;8%Tkip~1k;]TN}8E,n6ǰhJu29dg :g3.mkbh{a? ćrl4ӓD1aSq,ar ə?\7<{?P( JK`"QR Qpg{*2NJ Tٻ>L D ,$n;PvnO@ _n$p`oOu3:z hYODΪyϮrzR¿6WYWSD &P;߯rPaQQ 1Wv&d%#/cZ^e0/I5<DZrfJ`D4,J2R͑X {I!Eύ ^}Rs>0W˽)xI*- {d;@UA?t[d fx8͍ IDATR[J%{ϟ+(gHHՆ`\~B_xGy 濥XEVx|<>x|<>>}Ckjd p\&&'._dS}ѹCwkg<b:j{ xMִX']MݗVƶxE 035H:)5@6پIM.ޏ,xMQcC6\%yD5_>6hލgB̊7kxҘ@mF[[\^&p\}%i1*8 o>eڜM,"QVMl̴u׻kEziD5=3Lx_Ve CުvMi4>im ,1Z~4=p8quQlEE⽰>v@ZTۢR@d(wM\%=0"nFd2o$/ O]Y r0X:o]3q-AMд'gaQҳd$_/  % D^,q+?4& WERf!`s>Q )p5jufIe.%MgW$3OegUDɆȼI ͠z+u|_րHO-q \5˦:çbrtsOE\5YO7 Jw 9"&l{RfpjUAoj lO>_/&g_O^u4t I MzPnƘޚqsPb2"p"=m@J ="U5X?NdR=l&VggI\h=Iַv|x_[ΦwEqQ jD%2}fׅ9xl@+ Mbҽ'$_y'wn| /n~``n4MtIU 7NN=FM{d$w\f(.x*<vK {dK3 fEp86!>z@i)2~M&/ 3sL1wM_D||{b e Gz ҔO}Zgo3d՛=6vvvk  39C**$4TSapDg 5dJJ_%m"\jVxRR]6eIo@'~6`wwXy~Qc8Ǝc `3#: 0Ʃ0r%#pQ .oLc[yQ4ku'?{{_I*m0;z b.]!vww1$I-ey#2<ռa1g㉟WY ROJ5`u)jނ`eL!W)Gnv{56OVH>$p~ʳI˲^<rJ2;*/lOfxaZî,0DU[ۦќUێ@xAFķ C~v_vG RQTgΡA50=lmCaFvvۀ8ctppp˗/ʕ+88864EYf(c\$D/|LylJ@Ke^$< C) 77 (DiJ:_2\@ѻ^ YM֒G&Ï= 6I#ʕ+ڂyc<;gFS|rV`GplYB=MMK@Dp,p8M d&&(\6&;f8.H„/ ɦ_.oR :,PV;+Io. Ng'u=qxxZUxMrtY ҢH7#|v7 a +BxO`fגIC1UcDlw:zƑ@BI3,9&M-yhQhJ-euZj`!3 6E bR+e/Lj(Y)qA{ p}losp_|WJ+r=!|K1tZ\~Y,~:j#s\3UBglWPolA:Sxph?cӨxƾ`@"DHEaR|r<=!CadaCXs0rϱ۔FK?%߾k~sbR3i"(i5qU_y'Pk3pdqM o4903$Wx~yM gMڽw2ɃxM.rW0cB-lbv"1iW.z}dBW`"ij' ]R?\,>%U&dC "1*XXh枱f,rVT5aLDz%[9M&Ɨ\`vTxK?B(X{n{-l`&[\+q~'|t=g *6Fމ 88iD$YX%uqDIPYVjqR"\@K.\|\amK{d?$9;b걂J)5 X}.=O[̄u@ OZhٴ扚k=l6pV,>H0|5u\{sTҦ;~LnazuԜX_8V挪 K , /mv~X;mJM'k8DĈH$-o &D D8*rq~ pYad{0+['0^\}I\=hB`AmV\5c#ma y2M {"?{<\%yTQzE(1 t IY-%^/WF= ֧LdG=dKD._ЪF5N<:Y^!LH8k2nn@(YQ3%ZnaJ-=TĠ1TEw]:N@`qv|lV%iDش lyN )c^bUxT* eSO%pIK%`8Ba Vfa!R,Uzx*՘iS1qȀe2W{EM/Õˋ |GJL*EERʳlrIh8 ?  pLfZǶP5Th*D2"\ۮ%?ޕJ׹o䬫A^6WHW:?y) k1|0m6O k\R#fal6*o{ (-Z )q$ ^Fa6%h7qT6ulPyL2_j!2w.X9&M6kԐ(EfPqEJS۠œkQe'xӫ7īm^* Bѥ/( ǐ*Ma1m]H R}ђi7%k_jk`$ b,oHQ}^ `S!'1 + [a^a&$68g"45Vۊ8'0 Aؑ0yz1_&OD54\9\BXUoSxƌH,~?"&vؠU]g`}<)K G :Zlj\5O ܖe}z;!AHm y5(gS*%.1݉Epg"t[TGmQYA_VlCpuN\oq Æͣ )HD ^]y$(2 Zu23ny0>C!\Wؔh]ʤ4X|R ve1y j'RuB}uAk5M -1,3)`:\ŝθ^#s@ [F7 #@,*'7y*Jtf Diutj V&$n@CJւLZ5^Pp\Ud=UQ]OYyÆV$5MBy\"Pc 8ua.s,c'I[ƫǚk*z;-qnZ$ ޵13a;\.&@,@5~6w]HD")"OS@[0UE°/t+$Ev"ɀJuz%4 ?.;$%f%z.S,M@M6qxA2GE{ {e8L _\bwݶ47jP7"1MI(٬MzS?K#!b%NEkE1.*~ MF#-.I@Gk͢qU¬ЇW8j֎ 3K49d{\D 9H%2n$$`2|:~? M{֪N6*Z2;l{ܟ;0m[d!܃UYSi=uI.L)_)N7 Y" 6rwWV XWN[:$yY#i=gߑ'xEp4&5YLzh6R3o,A' 뻧=+0pJDp_EFyDYX\r3|Q( =깁JnW5>6[D؇2֑zK؇)u|ߕBd_pcG\ 02x F0gx3|t^sڱu>Nj2T)+qq~v3kdtTC""82ØtTzĖ\'`"s),AS\{B':+'re*7I#{DXc+ ^m\B #D;sP%2cl'tեA40uaC@l"BWtް%FdLx2é+T԰793^^BA26j kl f=Et!)g(%O֒I{@9`]6#Ov|);UJ]6͕BU/eëkn\Qp:9ZM"N< 3LKؿE VmJm\w\7RL'1d>لLڭt9tqn`bgQe+R\82/?[݄X9Z;ؕx.g]W"Sdl{KjD^.R7UBP#16w)=Ԕqzɛz#\7maScv GuYG0f#-"1A>U ̮$*I'۲3a@p*LEC[VR^QAG-x#59UhS/j<*d)*,Ֆ+$XXx|l]!Zs |N^TeY_͋%2Dx;H[\n}Mcj}@py"Dyίw!.4_"js5!7:&t*EBSK^7 NZ:XR.*ZQ8˲l ^1($ԫ+L EH8 @w]u7a2˦߱2=^AEQ4N }4Wjt5O\e"aeFʄy YQk'xVN':6*B5r6rfݥ%;M .,4=+qUi$hg.Q"T!s/"7^Ix̉܃ + OCv~phz]T5 IDAT}iKTћ5 >l ;V/X3aw HjND9hSeDxIjCؼ&;bl^;,s #dN M;!me ęU`MIצb 2P2G"|̅]v)n_H3J< `S cʡ ?.Tqrg s2]2Ibׁp܈fe^o,4HrQ/8&!3x#_GS5Aae,w8'naq N_ޤVM=@:EbSl; XЩd"c8ؼ\!/W QX_lpNXo\%,ѿ&Ram\k]^K-Ԟ4g]E U}(аPPj4İj9NM),DY5Qm`SINwB*S)S,Os~=jI6EqI rQ~.I% \#o~6Q 5HaZ;)Eem^c `0=/Ѵ7)еm ySDQ_^ YQ^HԎ\:RTR4o@kv!XlwȒW6Nsu3|[`5+/ D[Bl%7D1EׂZ yI; ?gTu*/9RW*ԝ`}AaN#iBOjŸPMHmt!r,.䊃={_xJ .ԬdhЂH ϕ vdx(X"$S{MCgQwAdj J`… yAx)G'q1߀'3Qa_ۍV_Z;?RDٽq?yPe廓uþm~q:C|/bTsܿP9Q8)I9w>J Ϻ{~PT9!aQ?<'tx0MsЮr(N{rKtp?dkn۶xzi>C!o C uqtq{żdC+j "k`C]] S(/~#q>?x#*?VR5Q} xڡ`W*IxPR]r\:e1Oʦ0L32Tqۃ4*7=%} !>W|ĶPBܪb[ ,Gh*֥1M4x|<>Gꠏx( f$!{54Vu,'y CVIH+V$&Iy5+[67Qme@{y X%]Z'æ׬uJiv JU$5R45hZ['UBۤik8ci>pw93+śMB-hI&ǏXVHdnqF5U{ڶ}d=&=Dsl6 F)5 Ki賩AJA6۝`[vgQ͓+xU.~ZbjQodvBZI9xmsZBlޢ10IBd:&;`w("<&7'w sF r x뚉5.i:G(Z]}"Ya @A2DPB^H  s +^v@u lRaVH&Hglk 9_p $@S5׉NlHvVlO@+H\1ꝷm$U5JpxX v]I65\F_g/+q]QJ/1n?"pJ&*EE.id8rLb&0 FԢ4;KO]I_|kW9^꟩M[Eo8j 9MbUGSZ6HiI[gO|v{\L?{'A@%I4M)$YA!M+IطvW@w(<5@J ="UĞIVx`" Y_޿c\Y<9;c㛐rV).zn \-kI6Lji(]]U)&9N+#+Rf3hKIl=/ڴ7+.[(Nn\Xk0 01  hAaN0D7.{b%07r[MU57j$[{>6g"43{-?+t]lmmխusps0ˡI ChJ#Dip 65yhUR v$d'-1.bzm$  AbH!FWD0Tskpӓk;j <;4JY7+ +$;Wç>oI& \d{jn{{888^ %8p߬ gGt!8!ma㧜dQ{~ ^JRh JzL'-r-0􀯍V8,zutS@\Y`v|۵u:8<<>z,r\-J\/~6x+¬@^$@UԩT^oqU02DL"'ߖ V>0I?Q 1N{{{r \CۭEdd6'30+a R"P5cW,ѡC\aa1("UD Haji1vaH&/Ҭ<1=_IwpMCqMUib/_FAYf(c\$D/|LyՁ|q+Ko5ɑ$< CA xP\> 3IRf//̊@rPl $lt[ƍi=\|V;;;HEQ`<3gF3|rV`j\ٲztۜ.ƥ %kdq'L 5o!%p4K&p,⽰b/]Rk8[d|2k" #&Iq]Xk9&1GI%4f~.-o-qƹ0EDD pk"ㄚ/EFFH?i[Rf/70*M kk#y@OSI篤"ϋq ٽbT.]a-qZdYhG|n2`YDpps޻ To–4 0F%b𫦇dE=R~v+hY]DbK^c $zileX^Tm"h~ iݵ 4MZ{_@/G{"x@ssi VQ: KDɽJ/.sHYgY7X\HQb؊/4~,bC)P YS,4 [^L'5f:-TT=(9.W1aQ$̿޳ŏ~Yg v9Q> ֭,ހW-MD@Dp.7`ٻhWR>(ЄSIG'ClPͻtiK)AGCW I .X-ܕ̌TkliYb.g`(8mjhf:s}"܂ v R=RR~̟?-VxTnihN2.Yfs 4gn ?j1gkվo HmE yfp@ +R&(|U JjERlca?70է;J}03F̈ NOEHR-bD7mEOlR גHG}-і_n|5HVj`:RuZk3Rq~ag+)eP a_-~WR뤾F\!l ]jqw*"uJnd͚d@9d*sc 93~ ڪPg9(#rz9d7YJ@hȶUomՃl]@#E-5N>W % (Q@#hdxjoP1n*;D]ER4t]%Bg' TGL6ڷ(b{NjrH+ /l]o jx-&|: j3l,mF;^.Y'7;\QتFZLqM RS2WMC@Xò@!ܖu6wJDnZw<*}EW"R6(/?ۍd1*ϊ2~esreu)*ά؂:Em݂UK<,Qёzl5DK*ߦOv#) gXt J*>̌[\x. ܀dzR(w{"(숧5is HvRn%+tl;imS D_hxu=x^Ĕ>hȱUltS3~o 'u fp6}\&yӬay@vZa"Rfo8P8Eis㶶[{7d4QcBGXG!:@ VLE3.&=TD GhO6!8N0n'r"(hrprY H|vAvlP7[A b~xKswudMЛ`뙵L$^6QX9&[MHF)P tPXGR!s<D聖 &:x /"ƶUT0~PȽjvC-CmȻsuVu/pd3}q:3H>7n6QߛxE]FԴP|D>bX ,uC_^6K@2o2Yr ý2Ԝ ڙ݈A mk&>WhVwtTJg *z6 ]]@su)X0C [fICJz#Ea5lVS"maʋ/,XuúH*E#GUPTL~<CuG.@cʰαmF{Rf=z}":X_ z&|"Jm[`HxѠ IDAT 7(!zk</PmhN "z9o rۣ:np(°3ذ& ܀lu*c %!"d0 %D(I!e袵Kq "cL=/˲X=(6`l|DQo(=0> h  1BJ"}Jآ9q$~Kdaa}dF Pvʎ̅Mf2m^>1(T "$W9X!"DpGoFjǰU[̅`Gu~}Lݓ.9^JҶ0^\<=u{N5,ԲrcU! #GI *A%iǮF kS^ƩhR+MO-pōvXs^s|qVUN$oj`@!Za8<_˼Vef( %!/"R9>(ER/+CbJhCԴ2Lk}g .G:wtٲVŵYPԫ]C}ļW8m/aַE~.P逢8! JqJGTx+F!ՍMuöu7tso ?%tdvAs[HT5=D6sLF(,~?7nwS3)X Mu GmBh/sh~-+V[DCGDaLﰄjmRKT`fBp&\e Aw x""@W>VYSNަIjўF]Ι/nWP6%}R;j T-i 4Mʣ%Qᦥ CH̅b{DgpV;慱fO<7G G+ L`dV R'"JWeB5Tz&\h Ma Щ8k;FaVdk˂yksr\iZLt5'J҄ҡ].}VzB)\Ke07ӖmwEu>s\ZVXԀtaL{0.uϐPR\aY]50vau&*Jj0ދF#{dg*24 t]w5.#V u,[jxI8 B&Je Y'1 sסԡEaT EIJ`;#HY(X]z]i~:љҹv`.Sk}ỡtѰfq\s_b(33'ZZ,cRI*!Q֕h y]0A'ds587GpbxGvЊȋ BufBc),q_4Y"SPd'\@}p1%&1 1 /x"29+;cYR*YAM Sy~frڬBK u͌;Ba {l3T&kȝKkS:TZE@nUl*G/ʚ8q{5AM$v\jc'p8l&BkD&@,?_Q"Yq ݘ&Azf\qwhZ鶱m0u@Kܙ7BpAv4K6+r'2pa>{P"!sz?a's۰ܶ}{CP`Q]#Q sP\Ȟa3]kk9\0ڦ Fl̓ '468vc~بEQs[':9{qx|<>ʃ>ЇBչ@87tc>kB}7M?Jz }\[QvʆP(=W׺4~VQPh CI:^ ^uۤsFPYh&aJDYɗ/84x*t Q:B ut):AHwhbBluwinmuh]Z} ƇP/xg^ϴvWeoe: t@Dg٪ X&wPtKtu胳BWoo =DVlr ^Ca"{EN%5"@գ/@Έ;.\c#Ih>SZ9ߋѮu5"7 "YO kd'" ) ,h$P "T}>BD e X<цʉZ:MJQC"/_eR̞=8tTQ({=RS*k̈7 U RD4T:q:W󓿦gσ˱GX3r4У$ #m2;?KO#e>+U vSxTo哓]*05 j_gq&̼@Yc`цϻƺ5 S2P>\:D"{r~:nE(B$_ xv.C}¥.N)PJ{Ĭb{u ä'FkK*N=0?_LϢm.E4E`0@ogǺa~gPb_ηm%MqcZM鼃eUj=m@y.KUg^z7;* V~q[rb~Ѩio'`lҥe ۷ny|骫c*n@ƅWTO響hKH/WU㳳7 pzk&HnKZ @xFEG8+Q"Q:W4ŠhRWɺA2~BӬ+dgwP wxx+W`ggI*LS^ĐkָRQsg˒Q4Z> .e3 `)"ByC7\0]EFXT4(DQ`t V96z;O&E?$uM=G$k ի8< ,B4ˉmh܅߷Tݠ'4Aa$KԣD+Qc^$$id#?t>kC~ F2C K+C4|UCOB|MH>ZYB$ ={1ŧgzQVNmh "MCgP@)B*7E#YSOzy;MdLJO!:G8;Dqm VH5@O<UxrZ9^,1N(aQF#-bȴ%-#|x`D"6shE1bR;TQ`[B"|C%.^]M noϩ5dGM-@aA9;Gy zZ^~_)34-DַR'`dCBu55cKyU0Uȿr\h!(,]wp[KQ\(oAvRp8dYd_doT^jv&AW]ຯ3cn ` d$ @hL N4.UN i)4hmu eeUN\42ÿ%"7D`*z=lmma<߯{y=Y-F J˨ T8[ո:]zïIפ]0 >)|1a&-XރQ Wͧ6lUBdgE7 D+eKِNky,ǵR/j"xM4 H'`݄J?@/(ƋQ8#- bĪկSHE+13.lT8`0`0@kYeh^-.Jh|jV%,}˦s|P!C)q$nAB(C}H9GA ZϺf:R_H"k|y%&$Ih.EY涇D+.\6 k! sj_NFoATN4B Wވ rP}V>[LVhsbbn &aȕ̌,İ_G:)DA_ETȌ\95pJ Lq ܃4v:CWT=(9k.wU49eD e Zc<(N=VUX8n,ZC%,h6~YDȆ} kduLB)*r/K#A8aAGT?e`wy¿ hOVUK & H v W΀cgJnYa[/=N*} ȧtDuGWZHR;“B-ݡ^wE24Ƙi|H᪊s/PQbMCAYme]•hQ/T%DHdW+FRlfm710=kFo\B4WiAD8hKk*u#rr`Ag10Bx"*ҥhI1khxnW> #xulؿ9O<_A+6ݮnC #14h Mh>vֶ/ ,@Ocu7PZ=Ä(Nƀl[)e'[ZHzi|-9hYlO)NA0IʆK}"܂ v zj)iwQhoC.Amw+NCX="ٷવkhfDz.LBPHx]q:j^ V߿ uQ*69r3Үlt%— 3.~M%oCm2F̈\(!©0ΠˢJ6Z(%,+sXLt ,D0roA"͗} AEɏ ֞BlSք(BfP; Q4}cf$p6'Krš[R;R!fIKMs!w#F63|}n6ڨBW>u.;!@“_w칚{9d Fijja.0eƟ$ڪPg9(" 衻NQ@Cl 0лr,@ 'K,鏚Ku*EBDwoQ{V"*!6uywtHun3QS I\e2HEDj96G,.}>g˅1?Ff0Ph'@k'wОJ* 8 ^R[,9;)aFWju m{|Y.T4 kkWOZ|)N Cf{UX R+Iq]x0玈LlC'VpsUdX&Jek(ܐ.o" ?9jIs*m}e(2_ ʣ51% `"#aR>@R R.p|"LDp" s d=uxҚ]:].j oYKU DF\",L jt7 _rϭ wE׬2Dp;.FTQTۢRLZO#S S!!j% \nC.5ܼK\<+$Sa~5j5,3:92`e<^r-ݢ!o>GR*) !UTYkw2򔀁WՆv#*vܓ* 4x 'VwtT -Y9!Wm3SPu6j(}/5 [jFTv6cn`PN:pF]~.s`%D2:3"*8* oΩSuҹy3Y(7tNkPO82e.Rɐ"꘣ST?f^>C]EvnPC*a:ӛIDy(| ^@mhN "z9Džt,sAu("/sPV6gX՘Fu)HE HR.jm0D؃#ނA9q }w,R,Bk^%^;6/# HϣR>zHV)9 Oue7RѶ$ וf ۀǟ< ǯ!4O_ ܆X;c(gEY9K(Oʭט2sv *Re9(:( Jm\EurkvcHα_ @rfόypy^nY_cK=NHP`ϼGnPJ*=Ä́(I%,X[@z99ʱ,<6t6C/Tzlb %r la RDGhGN,$94HeEDks{tڑw'X d/T`չ<"3h[g&v܇K&.E0p R1erA4@9ExcP-Ք%* i胠<YP2=,RǤе_ ZK QQ>Dz !Y2:1H%. D; w xsLuyF;trntq{:"w ^?W4$\97MOigNjqO~K`r z@a\T9 S'zϡsGI97Lm+"2Q5{ y򊐔4Sb65!sGK+N3ǯ@:^Vs\Qu[iT;NPujFm;w*h ,xMg .TٞbϤw;EhwTg#wQrkkb>3qGZ] s?Wbܼ]6f{ ܯ[a \Ͼ{|o2an޺l6Gq,6sGpP泙#,E;F<(#QU,b],JsܼW@,@,rXyH@bhN'24xp(0B֦ { ]g辐9ʀk^\8D#y؋O>y0=GAikPg儠Jݩ¹^c| Ui+G۴ZQ<|y; f߀d/K3ͺ96 L԰C`4[} O:6Q;๊Q|*J,\ZRr(N]H-/U}G8ny~a@>G;He=\ ]`-YOgsd\~)^׽(=фx|<>:h>7^844$MB Z*N. T y {.*{/5k#{ď& |P;On%G1 0~;.UHT2i5 &bvɸUcұlSi (/נPrjBrTEVЃj1` C5lZH>t!ujLN+6kpP+DN 7=, !{))>`CyPF#;'q൐͸m T`Rpݖ'};y.* t٠_fŪ7N!2&ROaY@f+uxBspAH]rK\ViC/zRY}VNt_)qsRf/@:Dm t AP~ П_@g̺mX`G<@9QPc BM'z 5[\vf.W  Twar \ p>0* >{_bzSš|`VM\Bi=&Rw*_*'\( ^Hv9 F+fJq]Kǻ]̦/wm}6GMm7#!nS#g]Loc9:D SX^E[=Y(Sxo8wEWώz!1z4E$xi*Xhx3vm$*H%JQ\f(\e]d*x>թ5FƩd o|`w U1e'<}E#()!4ms;ۺnZĶVHŷ=ΧgXn.@ARH 5<][q:D| ih-$IZmU3Nt\5LCT_pvv@a ׸x!E+SջT|ONyRN/!c C`{{~5wenkԫ@ .7(NO J8}:#)T\yu)(*`\G.T詏}5S@{o:gY69+W`ooPJsDy' 7J]豙' wWez\`nf&4(.L\c.g52pmdR6i$ώO~_Wiȳe>&mJ)$I\zW^mFUUa6!gxnY -HX@?5Ku+T <@a`B@if3mCa=$_dCLsq#&ˀCPJTz噭Trf4? ܩOF$IC\v W\.>YNq}:ggnf}oIv8"KZe]MxFEuwq̐}/t')ף݇vIХMJ~dwpp'u!xrX4MWW\4EUUNH'SJ f+5w,EýֈeW" N!| lP'\J sX`{xdKOҕsDQg. d54MCbۈEQ`>:qXq=IYKfApmѸ ',VLs"ryU[l6l5Hh,{Yl7K- X~c"ذ À"daf83lΐpk]u\b98'YUd{s8 3a v>QeW aӒǜV@/tJ,dHާ)-sBw@w!2`cޅ9؁ib{{noYa~~3|vϲ`HYg" Km5M_[\U(</BSr_l!w@tqeG?ydg} &6%dt?ⅿJ*G39wHVN.^}lmmAk]S'ϦxaoɈH߂O#RL 8];;ƻb cg =jnHF*Gv(b{=9Ʌ~K d0< 2exq jh4ŋkr2 MSEQS =?)S^"[`]5pJw|4#=C`ΡE \"ۄ*D8=3wĔ?@|@LYY+6SDb{B?t?$oP"b~ ~.\hk /r3Y[bnbua`6]x,]TJ IS.Sab93Оb=4J=|_mJ2R4_f]I [jj0ޯX+6lV)*<7޿ȥeB IDAT)\PxZ󤒤#H:0Γ@oDҟw!bjϭt>,qdp>""x:O%wWN"OpXhhjBpXxJ%h+ "$F-i Ĩ +% u|F\d6}""1g_sscGx)śj5D ?CYt0NXEFo!4|JO2WE"?I/C[a'!(i+rW%T /D0&FVb |-шMbO+_* WMM?& a #VM]܍-ȾamEa=CIUy0k&"S,'M.6UXh 3$[5xzS1EVԴm#4>dffS BZғPxVhYڵ{+FI1ڕugKfT?bU44d?-!3,'Qw20D9B8QKv#!5*Yge5x| s\,4vAgW˳z {-.pÔ+u㼤5qDf`} |+@yդcc>S)=7g?h)sWr}h|ٲ϶{T)<_Amxu~! :*bL][^5&FzL8USP[, ~GKa[RxF bX W꒑C"WDU!,x1c/[`JY{J@L&(8FK~SA`21R:HiHYŢNwp D8*i s*mlqP_FW˥p |4[^Mv*?6~d:LG◄u[v׌  fL7)"m7 "$Ր.F*[v/f[LdokHҊ5zSaA9[e7AC@^XN.Qpx"Ӕ7S$+ h]g3B*]iC^`32v W2>S=¯QFQ+f9 F픕pns6[g*tvD*kVn|F^XibX:>D 7܅RH ಖ=+EHKU)į`[kӈCź!UUf "x3R.0t:kʺP|tfL\n)D+=,@e@zNH#R *-M% s\JTv RcH*i\,$aLUx)m#VsO8׋9N#˲M |bZX:vSoݤvC>d=i |gz[`laX )( P6DT.9Q x .ͅCrGg݁6I;8֙UZca9VfmD>ș)}m L顙-)MbpO$J)wS2xQ'ޒ+(DpFbpjB'aW{ B#Z5:~&q7 a W˛u,--Xvb#Ok{i_ !OPrϙ =8#S(J[ HiJ*"|WRQl8cJ-+4=o?5?nH7Mo .32gōq*=6o59#u)*}-k>xmy( O /+ba@Z$A)EIZm~pwЕ`lGl)m 3QV%2NuJw8MS# ηM9!<= }}vf{rq k9jK(qZżTWAEUDO[\H i$4-YVbQwMMqo~` !BnJUW<ʛ3gSkg}w/N[6Ʀ@)n9a>SsFۏSj͏ s`KbוRIT⻔W%Vv&9$B*UrSfd"(3| QLD^rewzDZ%AygeE 7G5"{a)3@%D4J"% Adj6lXo%2Nͭ~a#FhйOqqHX A!"@ RKH) 2lzuTWڍz[,0?Сq~~2oڎV"m웃 TVH2209r~F|yP6}`M3kӝzdav>My@kgʣ2)q35) 쿯<ȑhlޫ^Zr R/pf?DQK-(kTv5i+Ȉ gīrEv9)wV?R)g~$yByBLcsbsǞvYzqm#`.`U'}NXmUzo<=c.dG;~|~T6xlcy>y @O3lFRxq#{ wEC @Vai>=űء]mؾ@s3W5:BgG`WlեM l]nsqkϽ5q1ľaǏxL$\p|a33=r9gO{l3-aCpƁò)M)>~bd=2)*{QV=1{8i~H0iΌ[М"~A<*niqxt<:GǣxtO~naXXro@ yGa `,ݡh_@pGീBkyc>}.jlBI(mC &=dױ)0IkCRb-\X^8l1d!=,H`@Y:Q&%r;(k|@~lMДy#"JE(.L_CKE`Inn|T4: H 0 Zm)o{O+k8Ɔ(\EQ@ _ />`|Ԃ os>{6n4PYQXBZ9JGzo`vpihd-F# -~:)ϵ,β1Z¤)gg6mB*\+P ɪ|Y W[MJ\>]H~ٲZk looc{{αQGaa,&^f)-leY bMDB* 8}aS{p/}ȓ|ୣ*@2@x "&_l͏n<$IloocggL&5Źm,+ۮ,Fʌl>T|D0\WC@!{?bϤ\EtPFGEZ9у`t_b~Üݩ&oY r8bww{{{٩)끈3Z91,J\4 m#%4/Փ D%plAz09%l6Z 1'!X.p{ FwG8}60b UvJz>/fn_/I[[[Å m =y<ˠ WW ]賝'ֶC޶޸6L8OCaoRwq #Hs| \^|;j0QfqKVlp:}hBR[h9jӤ{z]\H6;1e߆dgz=xǰ=F#ha|6^,t/ <AEr@Es}R a (y_fbz7! D tQR^7§_p/;?AvmH>E5a0 p\t /_>vvv0 Pt's|aJ^bh>Tq8;kYu1'S#Xc'g˒5qt.&EO>!SE1imF@73]CmK~ަIosO IDAT'~G ߃̏a2@k<1Nql/2\*,%[;#0n{0qS q& CN-'-v.X"#]/xYF ]aiP&T"٠8;OV_.]/… FPJ!2q|rY 1k\7xwDp&b0Zmp Aa,Kv۾(` ciLRf_փ̏o(&:7r2iMNUro@@@DP.(^L" MSa<-S|tf9Q֌Q[0 wD^TY3"ܩ]1Ȅ1-Gq!n 擤muO6Gg/oxvD5/bww[[[Hyc1 / [%Ob4)[ؕ}xwaضshh.Fm3?Z?b7d"!Dؤ(Jhd GΡ[^EQ`6tgz,+)#0θ\ X^5^[.E> \R ` r<*31,"ޗɠU"Om\sTΕWnmm… p1js`8 c7/3 o+(qGm5Y >Bp [P+&I (sJ<3!—I'AOdkv`(d {\0zpN׫&q0K>o,&(3_YGpJ5)rʣIJ9"94mԗG+ {Imu po#޿HDYL2J) } z,`Y(Y. 12Ye$ l/be%uQg|C YE!%*EZNS2,zC1ߢ,48^4|Blڝ) bZ_OHӴ,Qd>(e!0;R̢ +Ts!`!#a$ua%ڧoDEmw$_E#idpA%xI? 旡KwP؁kO]QuVd`)jV$IOrKP#WM#k6))lp90nvް-|>:W`9$ͻ"xNg&mդ@Ï+Rͺl(5&Bl꩙PDS^WTs<5 ?T!hRn|(K>4B.3nuF{R ,笼2LxlPb>:Z"Z5)ԡ %"gku۔|^hเ*(hIb̭WEZŵ}. Ehz+5/"{C 4ϨRѪR"yiE%lml*d"$C߂R J0vLu@}IryWPO~G>PNb*HcRJJҿW/L.mdrlĔ%.i/`\#,= XH${WMA_2~D4`ai,@)<9v=R{آ c~PZg*P}JkMT &DꋕF%,lXqvFb mrڥH7plrUq,5AZX%C Uh 5<` VpC02Ac6pHXű Y0n5HJRN=CϠ0␴b'PmZgs#H%KTZ§8qw&AuXۦpR, ?@ߋ&{Tbk`Y5}weTjR'ȼV+V0 i!ƜFIU۱Nhn 1X9ƙW62o̩j7P(m`f!(x^ 煘f} k\pX._c* p^'4!lۦ,ҍ=uTDt`(O(o]ʙqDbH ]7Gn5FqH{}\u6:gfx^%PH2DUP]u3Olp\R^ضiOe:1W-0 @IQJa.MMDlcOn)r\3_(,Jls. QRWo\H>YGJ8ZqUA]bmdtES#4Dp74@k.:#+Qaf(0l3Xv5rĜ!l,>(7a_)W_j{tݫ uƾgTu wm.ptXt "gVI# qkg4X0I7c}2-.G ` 2!Unj`" -K6to()^zx I5S 4)~l.M#lhy:0Uqq'o][ ݷϖ&[: z]Pƹ^n9%$HB7L"כݓh."oӞDjgH( qn[Y3 YLI N Bֹ\kY}h|}vk8ש>NQυ2CnĩwDVhաĔN#f.`;7L-\8˹}[+^?7Qv ;O)@ZU V>(llc\ʖ]e(l8Uq<¯"ŧZ$EmyWY~S|7`@Z;{%8G}#p(`gj jYj~[8p;TU >436s`eh|i ^)- ϩa f@H솻&]=Q_rP S$=S") 1(S\щ cP(+%Jâ0IDy(|)^[9ps1] bZZs2X?q#f11OOen`HUԧtU%kK]\QϷ"T<` OS+PJ-lb*(|RHUE8{0~^,p)(~g\'H+\ܶ c ؙoMi_FAh|D+ݗ8;?ܥx@i4څ߁~O)wS2xQ'ޒ+(DpFbplzBߺvG mw)ڤ8eL W.&,kKKh<#"Y ^X,ΖvxSpqۜݽFIoLI)68B:7W|WQz5H c J$K+PUg3/$#aaw Ͻ.U;qošOx^;h>,]o7CRMTjP=J""RBO\KcDL Rr =4ɻlU=ĖIoڙ0~9~,)oxƸ屳}ƾkeGu=0kԭXVfda*BA)%鈔"IS^\6/L7X PUgtB-XfT"MeS@sw)PMHf<@ڇ0b@H@zlT9iRz=aUx bU=j7~[%+`U/D ^cr4%j J oA9˛y33lԶ^E|P]a2"Zi QI:J4=0`&@^R%"(QS)8*B MKꇕصv]SmS{fDf1^\ļf<ؾ>s7#hHf/gYӤr{yvPl{`2`%~o&n+R!v&9*WQ]TG2#A!OOq >1?rksvtqM5 v[ J3S.2z3J̎.tSK!a9Nn(ւ5gJ|d k`so];{ͮyNy/% Ӆd3RX[0++| ah>{D *C%wEup962ۍ:2> ޓ^ Ԓz 5ړISq)H>I6;% C-? G̈́C+!YBUP9H1oAxy\z[2Kinyi88yW>؋s,bhS;}&<"br8U^BVJFWW@ CP2 :u95$/gzΊc\cs}~b<L1wnyΔZslK*/dvҧ5V=8;'YD' zRQ&`kA]c)hrkPk䴩vy = Or6O{{h!/N2dg7Pot8A%R~ƘeW%/ĴIKވ@tbA{4c.q ʼ猎<[gxʋұ3b}1y.b 6н9锫+[G;73@DnA,pKyQʷ)ۖMΓ)%((/hb{MvhsNOVKJXL>CJ@-@Rd2k瀜C$Gszhߒ89d6ezu@G?(x16sy i}{ii\ahT9@P*%RCFd8ԀH.l3ϻ-Y\%(_گ̺N,hG"6{ڳ/~`?ӳȒSr ؔ3z%_ >Wg/Dּ< :{jEY0@=|g "_֘%i/>x4b>˞Xpݐά;xus„ d_{cӄfG} dfroV"sx>}Ls2ߴ;{6Qhto?Ҭ< 3m`HDY77ds/Zr-Zv9>XM̲Pm+)" NBwx2o>D[ָv&ʁT> nWc4P_\'K@ł9.<ʉ GXf6٤Im+x1ICLWϥz631={L{fǩB;X{x1s&dc#Oi=V7q)}z=:Ϟy`=4}Qt أҾ"29;G@ϳ^`*U<>SnG>(YGx37vƹ#8xt<:Gǣxt<:C,ni{\֏ Euf䐖bө)-.t.6X 9uTu@irhCjl[PڐҺ&frB#XKM pĽtPl1 <,4[D!m\ WNms[}뎄4x4ίҡNw)§L}d/)EL  HF %9@ :(y g\XL_d IDAT22+4E-gsuQv. {[{W_/Ώ_鮰ϹP` C^JWD*+V9Fema(0 R]b?0엲;8IEyroXdXіyB0'Ro+(Χgh/Q#w&5xmuE-[Tᓟ8WȜ@lUIT_3,tD*Cebm.EDPȿz3D{vJ'f_X'7!qz=} i4Ms@kxZNOR?6z'ũKur}u(n6y?_J{jvvw^zR Ic4a<c05)+um)ֲ8Q!ڻQkץZX֣ǟyo7dpF!~c"F_hz8kڟখ:No)&a@w<ntG0ܹAE@G!&`AL&d2xxb. 6As\ޛK]gz߹1e̪@ A`lf-LBFNmRz!u$S/Bh2i#9A@ Prxޣqß{DBH {ExxsA+la | DCI8NsRDȲTϮ"7OuEei-jX]z</YA(/R[O6O'LJw;{{{\z.]$I2ISM$̲cS: קCtUEx0 3%xU;D3IoZF6>]I&%iqNlt6~7L?Y#?|lV7|2\r}z8JU5h§׳_:UIK6W]Rki51=#;|9{1._>0融鄏LsTK5M<[bcKKYMa$\eb+(?g/k1`<â540'F[NTsa;;;;e0 "LS&gg<5s㌞Åb)G,wT9݂277=6U9@xc6lJ2xI nlo$v:禇E3+/}Oh=^6i_*DQٓ#M\t}a%qшgNG8E#DdUPU,?qGl"*鹜LX;(x[-3u j5\eS5K /NUl#?h@ޫڔbٴd+91-xu˗8.MS,c2yj;#Ղk8&ަgͶX$ ~-5G%U@r۱,É 냾l_}.8++U:O,-V+&<&S` gshvV6 ҥKMۥ( ƣ gtN&/kmyVryxmmGإtZ$;@I9qm<n!&S\\Oz!$b &%_:NoDԑO(N666goom666N Fc~~4cÅA xM-_c6X$&>ı lb΅$Kn $ 1i;j쾨IKKZ$o-t5;W#]Z1풦i2ȊERV{ܬ]s:縋E{t$/W0|ߦ?/˽e^G"r]t!X:1I^*W6[{QTY"MGUfV4:H.YS]l>pmRM.ٹ6$V nE?EAn t%HԝbdZԹgjP]XIx¤$QsvTTPyME:yZj lT͂DWUZ]칅)[nc,> ;υg|\_ 2)C XUI6ϟ["[ڲ \-t~^;&s27*E_9G:ΰiAPF/\yxN*&:[NZ‡.#qeQ)g|0h({$n,pƜ e64BAc>-rPg Fu]kiS ۓpR\=g|u5@u6r>[dŰE,N%HS!oTb$Ҕw@g b> eh>+(@αI5QEE8RP3'FncSrk&ݫl`r+^Jh{hjJh8SĔw+)]r(t@,ͧXt-͸*,ܴve1-g 񌆈I*-ŖS^XN=ť8iq^D-z#Ĩ,vS`K씜Rץ\ ](+W"e,֕Wps(BI/j؉{>+ Z2y-mSRW&m>'8nсS灻.Xkӱqh:VCqA#K[sTg<=6TyksDV-RY* LQG ǘy5^=X^d'EQqj#Pʛ\7_wϒt~MWvF^k<dH]vĹHm6ڶAh]ʁ\ї v1B!W t~+x2/.J$ʭ\2i)/Kg^g/ްhȷPcL-DD8sB>@WzB,yD5擾(]6ͼ<l^m^^*%"S3\l|EN#TLWՖRzqO]6ДY5iI9LrK}uYt#7,tf[_O"׍rUݚM MKwΦ.Pnk [@:A֋mC4K fU!!s/w,3ȩThҔMŇ̫Y;b|NLg3%] ;v|=*(Y[M%L˺-- %ɩcYy!?~=lMD7n)N$$-Lg oa%*:JDu5.(6,xw'J eQ`y+x=fئȚа ض e.WXuErH2@u;-(Jis1]Ts- IDATrT.ϙjPF}Kڙw'{-3EdNP$,NEYr 7Q\/"jil5XfmnD֏HEb6z?BPFΟa?&s6`i<8e/s͢:y:'\!SU?-Ԥ1.ﱘjFi`iL@y&8/}0 ^…Я_qcjLZxOh"&FkiGyt<:Gǣxt<:eg4\:SŚ} l:幦{EU[ GG)[,} ZլC |ȮCĠiê MjR6@u b}h$Q~צ C[$ əi4i˲k2uhVʺ5繆5h3,UVͶ=m߭m_C}m_6uP>ϐ%IiQMsuѶڶH>(iܲDgv`uu[,xxUmhio*x]6J#u&tL b)fy9i 6[Zwg* hmڸ$Ig$QyGm*D]UwCL{շZfrWfV˺37>WYĤbA3&-Ƽpů|b դj8o 8`"}ļIuۈi1sq~HaҦbe:hjh֐Ƥ TIIoVg|19&_('/PL7U@:jB#ļ&T|S6V?;RHS_[ -HJW?vmoώ\h1MX0Uk0jCk:D2.+Z72Quh(8S# Ԙ@djwɗLlg'w(Nrб.znv:ޛunƩ-bK&D8|<~ɚ|\D~'4ϊfw/'ڬ,t:z=>nwzz.Vȵ)N[$?v61T}7Fj 'K62=ˤspϛ|[Ml$It: C^W$.Vqt<I_]1h Q^*\%i1pP]o\7/\>ɽM~MK~p8dss둦)iV$Ǫ2Ha:xM3´Te \V7^3 Yanu7|NչO{v觱1kiJcssM666 Cnզ?\D5wxw~{y^XDܤG%]U.wIU]1^ wɃ"&jǧLJ&ZLi$^z[[[lnnF* yNl sTI]9@XQ2D:2p-iUw1V-IэDcZj2ϲ3&dӿ7"Yozt[Ryqss]vvvޮvc*7 .Y%ضt|*~cH[8n$0Z[ظs1lFe@h1ckLJLh;*$O7_Z4}<<LϹ"WTIg{{=*zeYF62r]9?O}GxE@Uk^aI,tq4nQKʡy_&4٭6Ӱ&5מLWB&'w) Vjr8իW988ҥKloo3+i$)ό&|rLfٱJ)FQg洕 |.“$5θ שy ]}$w KZv1I]Z cs7b\D#&] { b6Ѥ?lFv:=\r{˗/I9шh'&|d3tj\j*ٲ%dAq)C(0DxB.p21ȝ.@71Fn='K8˦0 ʒ}|ΒŞUq\rK.p8DDfLF#.8JH2`0>[jy:n>SuX݉Z#Da&a~X'(*ȗpEސlEm6eػJC1&LJ"$ [[[\t}vwwLS&gg<5s㌞Xʑx!ʩ"U驰“ðfW)KjugCg|#QiVt_6?x6mt%}vQɓ5Hz^I<*,Cn.|r^pL=s:qF/!%}u|b;e"YAUpUoe!R͎YU\ecuQ}!m+[-EQ08M8Wu7q|E +f.6 =x#uR:-pŤMÌ j{|'އ*yǥ:@\GJ1j2Th з(7յ. )Iz_Rݠ}Lȃg@;)ennr{O_APG>:ƞ"8$assI'|joPkbXF߶ 2D|+ܒںEUʕ.v pki5)gTxKka@DG DUj3XP PgE7DUEL;}>Ig3flœ|M Nkp"r+t]:|VR.#$VkAz5͙k ׹|<&IU3b^]6t]E M c~xoc *c(fOd"l+= n6\6NYpu_Єߥoj3H5o;g/WqǏRUHeFIUXUQy?ILCXy!i-KsUU[`'e0&Y.ITt;$M .sj W@ j?bi?-@eqfĤtzz3|f*j- Z]칅iL[nvp & 9s,8԰ʢdT& ƃKjTZkeɞF\VtrJv ypD/=kٲz_>C.TPRAJEyG-Lkޟ7Qew|̞RڍQNcIe p CڠF۶nmLoQQϤŬRqsLڪ*][-;UN4ٞHU93A|W٪Uޖ88UeJyİp \HYe[FKw ЎcH # TQ"*NȢҮNױ8aYb4L9 ( #UYxZY̧'t 6>K\UFW*Ͱ9uљ9MG|d>FZx_rf,w/"q礯4RIH#-<#獋̹ $)PKD]T,FK<7*B\}g*)dU=BkqLu} [']U$*n^35tI~FiM$1 IVY[DK3]-WpcsKu)~0+2s\*0|@cnY,aM\KԵQejB; `4O`ZKQe3V28)NUR]Mm(&e7MO|\f4-T.8;>.a$i^ X9ǩY>#o8HZMzS'JmeepEWT&^-UJ5&ڊQHR$UǻTbcw}v|eD2[ڦNlsg[I$yi U1_#=Zi|s uvV1&A:*|%.{8S9ʹ¶6ë\eH4,,DWTd!'5|BdbiYoZjZvm+AMC-;[t 4n1S-`Wzvבw̢kЩס҂Y⦖g3o`>+-`Mrz[qfͦoۯ8;};<`dTg]*bjU:gByB5!S-[TUdʉyS8Wb>g*l:u+627syy1xdn4vC]b j]87mي2 |T ;ZU,7g]drD/6|oIjTMGspffd. xES>\+R;>UUbxr\V.+Mozs*]+$g$Q\<ԅs/cx܈PCcBHe:1bD{K LkPyCNtcUbd:=$T3l?n8 W˗DtO,8WWhx]YO LJZ<.-9+3C~7=i LeYѭ|ѧ6dLu:zWm1B au&c,Ղ)zN/$X,Uh#dm[.YR^? n3Z'uoRlKf_sEb͒dunht k)Qw&b?H$-suW௑2yybt:XLx ⰨZx; 0NQĔU-IL܍;P<({ .Ov#E8 UW fב6"|.#%P{"#ki8XS(2Cpu%xM|[ ă6vhOI<9pKV[E%ʎZ~K̜x)(pm S`6(\_.LW1`xK?yϼ"^=5LBUV}D٨QwQ)NU}U$\A(1E m".3hYCH3 Yߠ2;QxH)f=:ݡHd^aMwG4II }!"ΛHYf8o[Fc;բ s},(9p@jÈA{e=:߳+uA2 Y` 6 lEvh^$t@R%DMDԯHLYٴ[dNc)Q9]Щ2Ay|Nj1Zܛj^roFm6?juX''-Q;SfNOLґnOJ O{w7UKUxE-w)VST+s`*,UDZZ^q9_f3n2+^{QHP [jw#1w(`?,L ֋kz.Pg I'!EBԥ|.T9tiZp_-Y(; 5N+Q{ M7+vʷmΡ̊\eAYļy<fbq5*Ba_3ndxv鋆 mR2_QUN w/'=uٸI-82aA LY'"Ms7ҸJ5T5W(UyKm~#G2eQc| Keuy=7XLYͧcI;=H C 0T_z X?7 @TgoE)FjȫDlPGQsN^IF$K"%TJߣtͦMF* IӠ6'#[X/X& s7y WF.~ /„Ӽ  C95>pJpl\E_$4IH=fgf}9jw`ݿ12A}h+YwmbsOUD@N""s! Bǖ>KMAzgn$ժP3m^uegFg i Bݔfj+NH*bFMuerwiKM*{jK;Qaٿ~dCX+3Tt H&Jg i+˫6XWK2 Tuo&]$qydH; |%ołX`;(]Z4OpӉFLLҮ$sbeY:{̂ »Q# uț,(xC'Nخ=g\N#gٽ>&8ԡt ;"IFhByORX1>w,/"UD1א 5{/=LꪳtH}`ۯ]CHq3ja!rL舘8(:"հP3EBEâkak/5X cKIY5!1 y讍NQ"GaޅIՁ}r!|Q\YS.R:Y$q`=GDO^=˚]TB,H|_WczTR}] ,q$rSrxm^pLEF.z"kCi#KlߴAڴKt-?\Q^]*ɫKK=kVp~DrPfaVd@)VklT(46!ș69|hs6w2@}acvٚCքIe֥EדG~8y(,psO\ $t\VD՝)i(FWQ[c/a.f"ayn6ךW- F[~X=BH6V2:=RBz!&f봵2)z>9-?k l)9vDOkTc<$ sQl ͣ-j"g$&{3N#}QxGF!Ė_M~!u>a^&QJ")7'&n[/a2#OZN/dk?<Л^*cM!eeٍ$aƼRy8s^7Ti &mo;x5;Dюq7yǿ7~. =[4$~*YZ/R=8O"} a9 %a_={ FیRM1Ogtrwl3g^E*]>y$m)mV4>50H "$$xC |+D60زS9;f2H8Je<`o+x"4Ry cR{ ,nY䵞D4T<hɦ<A,DphH%kZ69Dā93ܚFLOx8zn{(YY3>SMId4 =F(fԈƂ[܇uQ~ڎxxRFԛhIQ\SbF}#fVDgxt<:Gǣxt _)WIm>'uL8ʫ@  xim*n=jmR2 6ҥM.+]|޿MK@k*nk80ihk32? %KԦyzeC؜uh~3[?I 83 iVUT$T(Sh1̀Btv#hSu\9: \ MC*b0~)L 'qc :oI8[my(ksB4tkPr*ڼeHK`ZTg$=A?E/i1|S~եT`?GC"dTC*Ilkb +R&/艹= }F"LEODl>=bq]&MB*A꽧^S\Lbk%7cnj@ϵi?bB1"b$\6D@*'lRyNHiy^ ${lvr.7DC$I^ڬ7Mw<XIRL{XIVU/=&gY3F"EAK P_ ;, O X/fے@ʢ =l{|~s"Oƍ]̰uQ7fFF|)w]>O{'vP YeR۰]iܻ"˒+f6]}`re6ΤFa2|g_c~^<;۳D]d$a00FKukĠ UWI^ `sS=q$ǒwiӦJ 7nk̬pPK2xS$lq?_eBp6[[[KzKky"rt$? P(&ok\nӤ޴#cxr40 ~lk-㻔n$i찻h4ZRAT^hC˒:2諒j s*S:$J GT%_|YmK`itE Uv%{zWLGU[7#e[ IaQ'y*/y[Gxǚ+\DUk^u-yI4!]@'%^Bu]HgITQ'I{&jO(By&8::駟}1t:ɔL ^-{VɜbDm s([b ϓ CB׮ x*dϤQ[|uL Cׯs5BDfLc]qґă %\a.1j1 u F։!&a㸩m<.yK_Z*䰤"VL_#\QP=@s;;;3*..x'9}K I6X;'" V*lPy OaxephGj93`K|9ubXȈM6ۈ_}yگ/}ג4Â`==Ϗ'o#hm玎꟭-$a>3y|'&9hh UX_䏰9,mu(Tp52W[ Ь=iS,Pho x9+f:24H\ v8/5g~3IG>bN-(A]ݥQ\L4}U1kuSoچ?m[8UvZNJuI(PyY}QgWڊVxLKH&$vۻ:!~-uqxxɄ>=9h;;8%1Zgˮ|mVcߏ-ur!EQ/WxĽkɓRCb3?$W*%(|Jq|"0988}vvvjex1's\Q"a^(%},G=bW=In@k'lc.vpZ.v1 şoa'[m!IBmqN..).ք5mI4fG/'Y?Rmb|Mf829錗to*CATIj/"U?M5A=C=-xvnS%Ӓq$uEHSZ&I ڶUתܬvmmmY$I*w>Yζu *(_ҒWZ,C_>g`u/]v((_҂u&)J2RkhcPHzB75gSo <#IjPŴ mNe0Ϲˤ7(ӡ7iQ~'R]^-}p|HKUaR }K4g;4 J^3-Ks*YUUE79Fiws"Ϲ9/* &BD@-P j}ZRB0l!""=&"*/%'"r}>*i]g.@H]7ŤKVВWVmχ8`/3i7@w+(gh>EPY Z6"={m\5ý/YCyn:ETU32)VAH+cP %<>'ZtcV/U]/Q]_AbhV\´hɂ {I}F*RpRJb8UniM1~[>I;Y'M 6_էV&geOS8']UhV?R ZL TOk5K"[W?ALd9*M86s_ҾQ:֭*Tg$yBe IDf|Çm*ǚ=Qwhu_`$C^8ឍj]w}U:]ҳꜗ؜`GJ2U(NUв]=b1;ab5ŎJl\NfؠUWli:-^}NqvU־iX lL;BμY]F;-s@jzm[sU:G/hmvjpS/Pd0 C,eL]FLrczfӠu"t1J/MT_hU$WXYks_sbV.`H&) ֨lKrWK1AcQڏjX&jsU¶#@RQ`ҬrZ;9Unc5d^PCُ%KR9*x]*w)}.BlY;PsV7"s0mSWocVܡU<2 m8_Ad, t`6M7B)$끘iiS9 B-VbxIek䬒.kta`ʷ]Qۻ" ?$ZU=[3j^M>c-foW+EsU5/ ۃ?z}dٵ[uMO6>ϩ}W],-wcor2%NUqA\RRN\>T,ɐW5n 7n9׵d^#>GB˙.si|D\:[@kH[.0K5;׿ܽkzpNv al6ޡEiQe"u15| ߭tCg59M RW^fKoz%Ry9NtI*@cЈ mշ=tgj+7_Tg*1||ba'f&bH6ܶi .?CǤ/g?9EKspsu`Z{,_7N;ME#_ "-P=uOJD`QL$ E! *wi6ˊoa0 )E,J877lq[R1ox59f)0rv:6{/r(rLbrŌFvjxpgqx]U٤5f7z6Fϰ]{>d?c0=4YwN5 .yU-Uby% $Y5LTZNby.<6Ֆ_ ۏ01"S&jJ9vδabTM#D\AV)L_S+QiOZLx/_/sf-6.ne\sh]ЮǼ)L~(/T0ĕCgIo4$ZQbAq[-mTppݗ*?ӥf1]dEC N-)yDu IVWNī<<򾿪(8v>ޑnMV1`eYlX6;ip('7|{MoGv_7 .rVxsDw_d_Æ75YUVL'̌`kG,sS-exVPB[y\[V$9@FEG7ػ|js lE3Ab5*Y5\|zIK2$YBը@=n+ḱsKi$mAQnuC Y6rx+xcq-r}1SdòAhź9Sx7QώQ0~Az&Q X\{6FyDV,rR;6ȋpĕV]Yh1>EDL2D"#TW +*E B՝Z[]CH0 AeܯCBY1͸Z"?`pyy߿16vߵx GUk6)mR& KDY]4{BBeylLJ؆ ܎cPίKa|ې>zI;m4rV6rjTG$R;м;:[Q% EjIc Wf=hUwAxMؐk|tQ4՝e[[yjlHpxsGxmi15FjPkڨ&]S$)m3ΛQE#0fBHa2ngѐu\?[;<"g($A@jp ߶uaA(ў׵Dsm^MzpQ1QPgQRpy_{x4@"_P3_$Rm#iMt]+# *p9'3/qE qͫtmcaj2/(^M,[Ǧ'ZFKBEIUj"O<.r^&ĺr1Sm9_='Tݣ9ì[m{e DaQ8{ak< CeXB ]CPf 8@lk/p dpz)(GD&gQhhik3$Tp,J+mE:J; E>7Կ6<9/>i$3$k يQtzHO ѝTb(?:aWh5uqd7ZtRX"EDxlҜW?A4lm8#H?0>ז\֋B_<"S 4(䩍B -Ї0 4HPc# )kȟ+8,H>Ă9 t$ OWI#b; = @\4[|Uӏж+xr<9O'Ǔxr<9~d= دikxU>fiT;^dsB>_[ZPJY`DaP]G|Ǜ  Ϫڡ~5\Qlcs{X JscJ:@bCTҡ:7"M[M%MYu5m - b5;Q)Ȭ6GU*rPMu{q*=es]ҩ? @-֐]ОtmsJ=v+F:W*V.Xˎw-a#WI'kyB{ﳆ?$*H4ǖsDұϵ6nF~+%mdEI:p&1I%󏋘ٗP=?$oLeuYU<(!pm@t꒮DI"&4{U՟U[sϣvG%qC3c$/+n[[~(m]*-B{(q]oL-{"i֬QhU !i耴o 9;bߑ$PǮk\uxJw }/ը<曠k`kZ]L@L|W/{mk֍uiߎc"f,&31ܕP[ ߥlH(^⯹| Uu&*nUiZlւ{ڤbۘFP[|Sm1{tjm}d52`I v^HOۋGj Xhe^^GedYF$$I$AlKf˽EsOL/1?Õɘ-GHWV&uy)BƋ;?mLbs׋{KӔ, }A `yx}G5cA#e-ժ81LHϮ[m>oJ:d&͆`Rn_~sI_/N;=uK*12azVqOfcfu/@LIU7WL[l][̼R*n$GG1u8b\K1~p8d{{%*2l<ؼ<ϗTix\Ҡhܤ} {@ =o=3n~1]3zOÝ~F]NR$|(b[_1H:7j'-p[.DwhbkK\??x *:kÞӸƍܸqHӔ,B17S^< 7i:L]s$wKYe^BxV ϓ`N"k#p٧MĤ7b;t0$P\ fz楿%QG~qBqGGG\~k׮c(xLo<3S^\W:jlY$zcOvSD8AP ?!iM'ښ ^W`bV$O|ܤi)ה^ !ۈx̵1?5ι^j6.1 sPqUm,?rKǏpJnSQ_~.I8]bz u=eM-g\6i]ґ E:B GIo-ZlmmqttA-q"l6cvq)..2(j$8ncʹT*lPy OaxephQnGjy3`[|9eűeFmQ'5^;mpw*yf+d $ G-Dmm]Ƶk8::b{{4Mx >1G#DkU9V(#,*SJ\b 9k8neR`Y{Ӧj@qO…lj^4iX3]*݂'Yԯ< -f^]N888AQ<1ӼHz杏1׵}SoӚ韕9h'QnaIvZ"'"\垰4@eI(.]g:˦L!;xn?%1ﳵsxOszN/9Nׂom#߫-'cK62&ettYIz[~lrJ^WНx(O$g?J}!(&甏c0jgwwc ٌxO^rayXU+>7~RR3.pzP1V;C8pW-,OlρKUWtMIB2llgd'o&?xA\N.p{{{zyu^MZϷC%okEp7= } } *֦ Mw6VIƋc}p{q\O|>7Ҽ\\.maء-.TH/$#&W眡O9mZ{ (I#F-!VIz/6Ukl Lf`>]ݹkPzpƘ* FKE@-j FbqBvSd@eW6+hɉܮ$y_,={J0нX:In$u;@m^ېP$JB%6"={m[H\"{|&=Qx/'1UqctٿcPHuL@%ZSg_kmhU%ygyI${Q}̩Cաek2qR%{Eɮe=5gWiU<,P՟[?)/I\DS;,{aep,{}.OI^ȑQ><ٰ(>s1 ܹ-u,uFzT% .&\nUV%;h5DG(ocD/>j`nD[N}V$WHv_ JJ3b V[n1g0f rb-R~m]` ݏIdm˚rb IDAT]װ|W(05*o KܧQI0@%Wu8% -L[eԎ2zjΊ.OYv^(ѕO(V;zIZW&ldD9^e$/UJ);j9xq,l]}6OJ8@^yd,f5Gw 51޼;*J_ۊtT*BP#\ܮOPXD1x:GtbS ZT\$>!2ݠ8HMGsn % .N-0 !U ^mSАRFcatMYI֢cduŶWSu]K5s6KF1YSYtUi9?a_ Idb ?ZI-***+^bYE6 #n04RFfΛrsYR5Icb֔>tQgi%O֭Zrf`d򜘍UvogFy^{]-)˯;C53\tMmvp. zJ*SK^Y7rYX)&lJE,Q]QYA_V7%YEUyӖ{YZ"y"KK.Xeъa$ELD5%9suHKlSmk禫wp]հr,w^jl;+["]EGj鸼eZJ|I*- s%naO$.v`Sl{6$K(x5k;$/nRt'n.e[^@ҫ?={d{j+0,ʢa䬒.kta`ʷ]q)$jxnE: :n^-Vy|[>FLX6My9rjJ>\ŊbV6y]Y7>IJ<][ܲiC]ꪬYco20Kb~'P%*digp,_ײ PG$|~#dX$nSOuóy2vqS;'-@ْiW;{&+jZMDp77(˒|^7=-*~K. FY ҵFUs*8WKY[vlyIe.|b8w;Rqf90ޝ͏8+‡u7\1Tٙ*,/9],L Ӥ|V Ɇ۶6 =gH~W'6h4[ΫLU7ڐ8 ,ˍiuAz$ xHk >=M Sm3|Uʯ r}5Y(1<+/[H7$!SopOͣ\%L'*xo)obIP}݃6S6/9wrۤYxbu]m-fCnJp(Egٶfp"նk$~c£Kn`أq&҆*O# RYBݒ*395T=PcON3P+{S\i޹ =x`m-I$AL9ؼNKW[uKT[kPI陗« OE!|rƴѻ3H^Sy]] xUhQϲL6s]*q60* EĈ1|\sjT CǨBP$\G(1U m["|xQ9!Ŕ󎦫KΤ@] u3S\%%pd3 r6@HL*'l,wű-X7)fC"YJ&ZB65jqZ(&/)tYLq %+KªMMʂa>K*&;UKc;<3(d(ZLep') ύ* 5bZHҡ$1!Z#Q"1:NJ3be \LQ^9_ssZبyj4u9C1ٙ{ c/i(<'Qt%kJFNKK_郢4$IG$2h:~O-VSBm^Jz^ (q﹂߷Sdsr9iɥXQLvj̀Hg^,W;tX3e ꟞Z̦8WJ$xʥDqvfG9%גc*tiZ㴒 UydKް_qshy`-s[^o0}ukT]KK{.'QP0+ec[؂E͆fnvHU5>xJҬl`EY9zQ"5{b2Cc.PLVZQ R4JU#S mu[TC̣t+Mx,"gKYu:xuà (DQS[Jri@WM0UpJt 򆟿g#!gƵBW]-fc3ڻaޖ=m#j4BuFM]N|9,hKS)hR:bkZ<ۻS$Z2`jeBFRũ-co΁>r~S uu-ͺlU }a'%8)|Y(|8XlL>rSICvdM1j9IP'vlZb!JDNTy g'SbRg[o3D1ݙٺ^:]5yQ,;EꬖR1dFnlw|m.R+gO"7FQ>s_syœW2j@ۥ!UVTLutW DKռ\K.lcql; uۃ5RxyEDA{&;.%[xAēR-%Pdj 9KMGl];0&eT0`30-Hw$;uWƥŰѢŭr{ xˆuDZ-FS59QEa@Oߧ7ZFm'<(xf\nejmSFH:ڋ]lÛ ?A0@={uҮ"AVo۶Mz_;VOz\F1l`MN(*s1{ O:$F6 ,f/hZ Ty3G6E6*vLp4{xy`]{'xmNmd&,ѰmY*ms8IלGv_sKܝ(7gk=Ľr #, -voL \Kغ 2ǙPw'IG1q~GÁijF'p:ThsYXDRK]6\%7:1`񟥷~aCpfgf 4m$CfԿ(g൹M G(0}ۿn&эе9 nࠜ߭=D`6{>D0,l`9~v"^ ݅$Z^TR̿A?l⢡Y))uS$n?R=F)Umh(YX3@.nIE#t.<9B.?. @KMDfBpz`?:iq,4Z{[VHMnޯ!  @j Zl0hQ5It3iog1WUYns33`wչb{546PX5%MZlmȤ'Q"Uu+_TWꖪK14"b"rM$=EO1bĢuض$x!!fgI[fO/+?Ϫ+@3iqPkƉ^g&"bb+fo]ה.{R("pfZ\5Xj2[{[I9|?ueoi' dh.1;])E[U߂8\Zi/ F N`G^{Ovri-6 cPB0X*Mq8zj,nEk$QOT]S]!o|['Yf;K1(>ѧ֗qWӟ+N\,t{j,uCK^ܣn?4K߉I^'⦺2 -ld[W.]b8jb[aQrdֱkjWs??*(ccQn:NԑGT.RQIz"|uuE3m>]~_ɏ/IjVsfwžޮqtt.]b4eY-ey$yΓy²g}gw'q.U>sTSiɛ8#W"|>o${Magꮲy'kb=ŘAо- fobOo.O<+W888`gg~jP%Ʉt6ɌL ^-9ňTmmۚ7UdpU۞ {ϒF PH5.7}GPA>%o+oDW2.yD;GG 3lG1׀u>kc ^\RMeel6yf23y/|3UGSpDRkY5só$m ۈ}8b=ļFCh=yE W%[Ͻ$RLNve\|#&I{>c˅Ab^S(1|OH¶*(l: r %`sa3 7rvNM1ɮI0M7l,y&r"͘%`Ĥ虏9fVMR SLW۹((c>;rh`?Raت%_= $\Qpsg ຤0F ld! DxC-ECoOLMk-뼊tn"M6I ޿'"/Wǒn|]+www`S^mNˡ I>+iD l:l4{os]LB߷0CI\CzT-B]vC8hKK$&=Uͧq6lmmթlF:y8(], |\;@VTaE]~^SQ%D,^s$iELqUg)T vk rbw+oe[;BA,e溜X/o`9@Y%qܪ+,>*OI$u-F -їVSKik~k|69M 9Ep2A],;V/1Z ;l]x;v$:?=WckF^XMUf9/P\ ڟ$Ky,0qJ,-S"7/-TEH9}Guxp*ʬ4YB}W/(S/[ι,E5HOT*P ;pA lb^|ۄPS{o4,-Ex[ΑD<UTcu8QB[EZ*pUP4]׫u}d FKc.7֕/t\פY1ݫ̝E[cL,{UV<ڥP&eVe|PKބ*m!8MU0LSjU4*5!&~>\r+I2g-$ @HV-oX:P/.p]*g~aqT47f $]pQHT$}. lH^Ze]9qa-ϴwΪ\b7qT܉p#)P:])%Tw2TMUeSgU¡4Xwy%&lueڤIMCt[Hfё mE$T3Y*~rBd6U}mj} gjBI FT$5mӎ*斂 gKD"361R}>fcm4:e\ 3U--n`i3MTL(C6D5QjH걪~)L] a$j訵[pл04hY!#*b{sÆk6p וQ%=MS`Gq+DYjE[M#o|."*+E Xq*ZFBGohEatʖv+뼡WSum'iw:ZDvmx]Dݚ e>c &s;8sʹ:^dTUVMYb+YZ6f[WTd)8khN5/4 NunI_sP7_x%D2suݣ.@_b6frrH&g1d:[ZR Z4pw))tܺf#RbVRL'ܬIR4Y*;Uzu <{6".IYGT6a]*wit!WM[.퇿(rSUx K%m @בih~| "HUoǪ&YgfڄhG1:BGpIe٧U偳R{DԝBFmoeQ\4,av\1se~w!;IZ^i(ܩzUK$5qYo{`Sl6'H} QĪ Wp j2tLs6Z&K@5^C]pO"&?s/Mclr5+i /,vUZPxÑeU+хy@s_M#[h/4]mcE*3\%Mn#IG;T)ם+T(=3$54ͅoۭNB36~ϩ+a ,^E:$+[W9響n]Ѵ\uWo"bR4D3g C@Bfi }r1ugdbGvN Qפdf,jGg"qtdR]홛L}$ QlP87-pY(Q1Ӈ o(]l߫iUF휷lMb;VuY6Qlh3Cv&+$D} |aGٶUŦM`.tyFF}8 {ȼܣD]_"eUrl WrY,WqM= 0.*`ӒՁܢ[_"" U9"S.Eaw+I_$cdqiurUigQS4w&-u꺥X3Oacɋ]3qtGd=I^UA9S(ZsRa[y*.g4*{܁!)LV`(B9_+gL};ԕ ?ٻ^νf5Zo:/ݦL٪ATײH6$A `EsE{Իl t!Re$g%2BIt>L8:j1|%c;l3'B9_-5}ՖRwumlJ\geY뎑k5ꊑ1$ iOA7m_H5±->X7[Ia/X~soI _I9C>\ssZ8iГs~;s܉',g,m5,BeqB#|2?χ41Ӓf ˸[*2/o댱X^NzSFd\0QLj9>h0}kإǾ#WꔉZSת2L1Ֆwu7Eε/๨@&(p]Dwҡ$Odo!hfβlΓ7U>{LL_H *jw!k?*B㷻#-yݕZN|SlP,qօ.BDž6WeߛF,b@ѷq8jל`R/vϢzql*yy;^"NJSwU>Mc~z*hd[Ѷ{ZM̍ ZsX 2F:4a`ZP({/¿ȓw`ڢ6RazR}åϕN秅KH[d[8g]mm9V +2 2CU{WO+Y4 e kY\²qƅLiŖb':g gĤcD $v+Q6H: ^CݽȎv$*gn;EG =6":<ԟ :_UgK 龈d A{_ hB'9"g(Ǫ2*ng;$+v6%8Q៛Eqx/{ߟp!"m#SA5l=?](AH!^4Uu;ٮŋ݂Q a ic΍}&q*W-(bij1'qI]-QjPjcauAAUFbcYi4T&$ؗDv4HKҠҰqGyXkP% f9.By5yrY,b#un׵0Mg(a[&"{lMC:EbCR\"IsVoG'2=Oxwom*4l9%iY&Hm\ס։mdwidʆv/{!e nG.@'-R Q/^DrL2O-׭DDi"T=MF˅At9;}]-ܞ_ȑF򞷽(L'4(&i?-ń&i, XT&\l"rȖiCa9Y~KOxdERY;sOBRtwI}xۻȟiڎk$κnm II>t!` IRtSU%|ctje޳NJI9 ƻJJ6} A#@>ִim`6KV olt15SBW~HYϴ,@m"1M :uDnDu ? C6@jLJŶm ccK޾&p n yOQޣ^5%<`m$Ļu[~ Y> LO+xtHd4-ԴwTM*JA CL MoUduY(+Z ںbo,""&I$g*{":{쩺#Q7 gj˷pLܪutx뚉5QK$ %չQ:qt[U@OPߪ,0qL=UUUUbōU6AO:Y!}R]bR1> 6O}`{\8U#E/'"w0"淐[.F#ڀ ~`[b뵤I%A?9*/_O+.+3TEDkre b[/忢I@L_pcU-kĸ%m5m]'WE?O_߻ѷeYi}꿱d-iޛb5In~vVuXj#7H1&h]\T݉LAW_>o]Ms,IbZe~_w~i(ͩ`Ӯ_93(o\޷1T]-ơ9NWTFWDnx?D I4Y"l?^/|ޛ=Ey|E$a00b4k.. IDATƨp5[qzI?9I lsK>*6fHd) }◓l諸]17>p8%/- v}3~ AmR/b?l])-`}'w.]boooIBDXtQE%+-:z sC1LUpa20|i"&/S1i¬so}kmX`I_=tE o#,c{{Ct[[[`)EsEɑuXǮu߬G Ou1xMUBSH:?Ĥng'D[‡PMd?z#9>- ݿIyZzqtt;;;\0!2I'󒫅e:S/8 H1uՀ״ ' `D&Ham E$oI7VټuWޒG8h,e&k$y"=d%gKߡ oo'x+WRWr`:f0i U2 94áSNQ+ZM|0 seMQUP}lԖPזo =@=L6"ba,GqJ|瓴:Ž7Tr+WpݥQ%ٌb<ɌLr%C͐Wȇሮي,@&9 OY++6,\ \b^ OVHpk`%ҭ??OVw[͋ we._\K\Ex§'|dV0rj\IٲB=m.֥ |"I8ej5'Uc'%}JldM$=鏤,§AM1=c~MWӔ %IBLcdґă !fa.r 57rǙ:4^l'Q8I8K ^@UI[~@[Gp"/#2MTb,un^}l?Χ]Gf$I|>gz~γ~vw`d=i6;(g]U髰g1xD]?F#U$(%V!>2Wߦ}d[Xׁ xEVL'ɲ@uOU)gcנ!^&(ƍF#Lc.'|j[[kZ}\ȃ>01 dVcH:@p٤^c_s&d+mK͍>N(%0>t:'\3p >@R6"l6c09[. ˅(^S(#X? VZ6-1Dılc.$!j98hnCcUmqō5ni}p3ý,9gϡub6F'eAawwhp8DDd+RHKEOQ!S0_$$Uw(ӰJ.~iYt@ ?24pU-1+jwim^5kgӿ  ՞b˂ZFuvts9WrT?NX& l)GfD% j*M\F %״+RdDx^R>ddIs׾/I6^*ԇo΍U.Uw%Y*otzVK]eF:;Utd6џxq^.JxC-ߐ *TyED 6dSׂj\J%~؅U&=4"J%e+",>5#M*1is:QE-f (MKCCz`oWp]|Om%iu껆/=ժ632xRmghɱ(]Iמ iT-IO,\ms֒aM'/$e|RU9J @FVWM A-~Dt@uPAϓqӪW?թ1Fb :w,&K8tiGrƶt]bxU¡eA<;.W%]z8VǫζJ> VGgPas@_ eE "0Nocx4u_ aـa6[77hg1OdC˼#0DB# US-qLX?[DȊORtbZp\^"Y>cQDOŀ+^$qmW\j9pIgh_0ꐼS}tjk$hu g Q`ED8qk-1A&k#0 NTĠ(3Uq\:IUue<U4RK{ Stz2 {MBE͊ Ի r!'o*/93Zpa`r%G!aKsI\Pi\\Msm6m:rki'V= 5< AwR_tfLJzsuz8'K@⌶^ؕ;W >Zg6QMפz Ȇh]yŝ&nqeVu5DE5_1dT(gڠU^h^gKo[#;qs3g[+ҜB]ᗶ:0:lpΝ)͖2j9ǹVw4Z,UTv¯""eo]Qah:"㬡iuUϘxmzfֵ]Vh1jYd \} 3"IوmvٖM^dg1d:[ZR6O/XUfAVzϬK`Ī9몊Yᥧ1ڵFrVIRWkC] GeU+ [x/r\ymafr;-Y&iݩ,پqݕK q: m | BJ=-[Uf|GMu`1HLeUkѿmý욝Onց"I^ }LY%3BC@B4q1;~n *Q,\TE$Gݛ&^ֻɊH:dIW4n]X9jyWIut:]o'ZBhWQ1Ӈ o(]ljRmrZ9orRlʼΝ6‹YX OVH^W+8=\>B#UrEנNԊ0F* ƾs|yGTdDҫBP+j9,j>lމnߴA$ |gFG=$)XӺ.شUSR$di1U?_ ɪF}-a˥΁4I2Vu?큚P厏})ĹrjmxC ۝Qb3EaY ö'~#%ѯD7?*sgYlkL&ξjyyCulj[4Rq1YF>H:$AŠVιpKK"`B *iG>p] _&j0[Pwݜ3-9R7Su?=6^X7[IaNK,.ObdLʁHirI؏/NԹWA4;soԕa]+".9<֟وu:﷜'j-{v7䉫zd#q {LuLmmthfYQ}3gU=|-ekoeu H@âG`Mf[3T&KLaHU+I}|4iBym PMRu_R.E;z-Zz8ro;ղ <idD.CMWڰg >`ȴbLlI0YOPku[yRu=zMjsi,XJYWvv5u;圓vo41%Օw- 2^_Ҹ2(rz?>=;}ԩB@L#I  `HܣzoϷƌ_^Hzv0(q*snڢl× ĕHdf=2SbڋYtO# S e>?$ez*wZ+y6*qM \h}[-u;m][2ob5$yMmy;q+#"QdaK3^zB3zN? j9Þݹf8jÑd}+Z9ں_KĻMߛ"ܖoKPGİ0!luDsU}1xOƊF՞J#vx:k0qDdlKdv1۴{wn $|N˙swb7ؕl m (v^ǥsDk\.ԜFLM2; }uuF&~=N# .56Gw.l?_U]O$=CگThh.fBUj9-6 ي)m :7{ĝxG4b%ٚac`Y`IտY'FF[\ ,73n pm1[@1RuW]*P8JT` hVRZlu10{T7{ 52#y]yR}/f[qsi6p~YYIöt4S(D7*W˜]ҾحHƯ(s02\w,uu%nMJN|hSK9.vB:O moGL.\3ClzP{_.doS8bX16/5GW[)XҬ?>*/N;1.m~k!EM}_\9N8J3uܳ(RDXJmBlƕx{JYˊvXGqUep(6x>5.iN&-!7W)(5$^.O-qM|lR^Hؿu2&Gi$ i2tOEn[܊(kHZtx[w7&QD]7ZYDNwsAKbGR ɖm/H{XILω%/TuuB6fCI@IG6'/2 gHa ~Ɣ(rH)qш}r8's#" T"ofe.t}# IDATFF6U<RD.I၂`gL8ǂ3ASAyASe~-[pDy^ ["BWDh,qӟj$kYgӆ<V"IJĬ wiųwxaol{2~$|G"V R +/x P[BPSGu"rĽaw{_f?E{XJD:GNy=JMڳߙTo$Bi:s?qm_>k!X~;a< ԂR^9OlBɱ2=x.cT=YP kax@gx8*eEǛ3}H&=P._L/SȱD,l)5ߘϝ GidyԠXTx{OX3d-`9i8 \ea^8Gǣxt<:Gǣ=^ے}~'{aJoKX|aVu}]`}DX~֙->V7Mא}wMz耤B': >xaIP:3C}ms8öX(##Dy}Vʮ}B92~kkq-ﭢ@բQd AKODV(&VW}G7 k,pQrNF7%EX_gp]`uj{L aN'} FW 䶖Pbu\GQ*muU~?} )h MaJ1h e[M`J9:9e~ls7"{`FZ*?gMYZ5H昭= Rٖ/3`8[-$Kdpx.CD9R #>lf.;cnaTN Ih T6ؾ[-_irEz?ZA3RP?eU.*ծ^3]ʉ2N%(}|#oEa &sjvk{.NDm8';60AH|jQ0 źWnǣ'{.JsM3?Q`{ 0_ g϶5o4L,IE?JG.f37BFWISAv&)(jgJFCbQyzlZkh1$AExLu \VvoMy \Ʀ(#OFrckXF$l(Sm>6?_Qq,Zyv~Q!I C  qeεm\mC{ɐ_%}kl2!XäXSi ʓ,ҫ_8L6=d['X~7:cL&pV$ eT?3xo3Wadqv&>8x<67711$Ice݃Ue h[{K3 S76!۲χ@sԢ9v3(_B<:"ZBq-Mmww888.6771L0 Q@Y") `mce-l5y9 $(=Tt5y_63^-_-pb|,lzD 2NEi4/Gy[jqr h1=loo׀mR>,ǰ,g,ŦYg[ f G4 `L8qwSN2Gmy- 8R%,ΰ לC>?R[&S/r4}/MGoJWS[$5˲ yAg9/J\- Ejl1 BYfs\-ʢ`0bPD Fl`N[%+XJi SиUji8YS]lce"ɧh':X꠾Fv5܎W?:@ϘMլ2c5L, 2Yy[U ~8 GrXԪ Rx \9]Sb._ ?q]D: ?kSJْx/\}(-06wmoo8FYNHS|bFb-KNhu)=%i"@BD8cfQTdؚ[l%X=\u6Jɵeo . xS`kk 888)."yt |iᠴrp Ϲ\<0aq Ex-n1,PYquO](\Q[%lR ~te=y]Ö&M5oUk-)ZFMmL&Z#2/. H-/6B4 f|wapsk5+eL0~6zMTNc_qܠV92Yed#8\o +9Ql3B)?O`Kb;Dh)nccq/rbUÌcJ|uD{".1#m0^ŻlTDY+ pwYzw*jv(?lڳ)H ᳻dAU0+[OnN{{{߯́4MQ)O@"n1\;d,~"C C?5s.,436ZQQq$XM#"\%?aS'V :jq6K@x7Ao9b(fg("Bf- Nq0i1%%K X|K),hJU(|m1F+ObB @E`h$ ^D˦Н@.UJO}:I3-2G7*G3ᛛFb4An{s%ބ-bHDpn"Z@d-#0nbIlp4MD2o2{%imʑڀhwѿWe6g5Kب:^eX `DӎE +0`߬q7]4 .)|5J1ֺKGmR[Sktڢ <0!wocJٙs6/eh4BHӴv*g-26*_(.eʣ4"|AňZ뤢r1QkS^a iѯւv1k8b8"MɼX,.x6+E Cp}IDLV;*/s k$sBP&fiS5=&cɈ< ݗZN|]ϾS݁R`+- pXq "Yg9&6=$̸{\8ֺ6jGy+i:aʅN/o#F |~{`7޵:,^Y 29`W+hAuMc-Ihܣ?ez2jU%ç<{`[yUu,$EQJ^`0`w'\-:g`׃[#@~j# [ܮ(k kF2f6m8S( NlZ$<,-];]~N93&uȣuH &qL,vxP,Kø+ە(*ižppY,UPr & [XEʼ6rN/#(tF.7aq bA@A@\ .dVU4٘[YJ,.qСyw gB=A)$(/8pLhsB_L;oxq]})0׈s۬nkeD8פc ]Gָ \2pY eE!FaljCJyNHuD\7(-ԈmC64 rb;  "RYTJ$ʞE ʏײ¾kZ=f0;-<!.G>tr\n"ma樮]ͮJ2A ܸ*`mu(g1 J,י Hv ͩ ídb[t'R hSRdmS 4+>rj填prv %~@ke4 +aU˾m6LȏkHi+PILUViJtU,u%+sڄ92 N=^dCz)ۍh6nµOQ*)qr.Y\r5;gU6fjm 功sʻ>&r/0Q4 e-*);vT\Cs4ܧp2j76Ȫ\wMjXe2.g;ЈFn_hTqtWgqKv;a& cPih+0TQb{A=I`W$1zraOLOm"r3yBrv>Lr70pZf[GYǬϫ8qKfmt,O!RNސP[:n l;  cw1x[|Wڡ JꢔUʺFenBDș)+(%7H_T|P8mҠdK%pnqAUa*TDEvtؑ`4ęql >`sl#nGNOD`GuE;]g%Jҵ0eZ;LxWjGble:^T7MXSJA ƠxPܷ[F-ŏ|K}M4U&xWa+*{\f=] 0V5֭2ƙ ;<- w"GA8-l.mJ7IGv[UM]7`g,D"l؇{e{l^8UF sչ?09J.yTtsgεDž{.W״x}=ힱۘ`;bc&j0ޫ|Rg)E52XD)u 5߃eDx].) [,߯E6Oc sS,綷uɽt#Kc#bL:١8HkTM}z$iD2I#fM8^hݎve؁`[ayVT廃9`,nc.=(\*2\9024lQ ffV\(_!{BE'l7HgyBȾ 2A!%*}o8oA&I'C)ESiM}-T5ۤzU8dض6&g5x 1&r0  fbsaS^[Q\P^PU浱>֙XDS2d8&c(1,2X.9aX 1*_J ;75pX+%D%U5'67NpeTw|_3؉{ge&D-T/WKkJNF8 &&;00_K)GZ8Ô ^ RRUg[2p4d#68m\p$k%Ȧ2ˁ}L3~wLi7nes}R܊@e<9--sծSNf>d&",FF\3,:6 &<F⊉][G 8R#4 [a~l dŅM_!uMq2S*)ðU$]6sh8"`c*Q˿3{Nb-x `L^uo0rx9Lm?c?9_3e\d3FH\5o9f;uz2o^Wq$DB㌜ea c(AiPEآNR24 wD 8a /~j2nر5-3`ar|d2Ù1(E/jw7:؜ ek3g sb?d67SjHa fkJc"IG3d ;le+VS1WƗ^(}-N5[f9nBVHn^H[ GyS}F kWf]|ared E1@@a7P󥗾tm%޴% iuBӒʰqdJe fYS6d;׋#bSvp}qM^6f-rn"ߩg8=2Q'U&j8Xd-(I Ic67pJ|rWbl†+& 3 'SkQma~cLM6F9fSoyV:j;fL3+a>+wɿsFgiRvqj%68fcz`H($BNSR CH)- G IDATzy3o)OVY\w6̭w9#l wR-JΦdIGJ*ZHdZA[西[ iZnɽTҷ 9du͜F Sʩ i "l-sJ"$#͖ɇ$%=dsmiw3Ct k>t([;em7H<(UT>~ sRcہ3\yYrLdC 1g&P抢DN$ f[+J*  o2cWx N[ڥgYB}R<=o9p.2uг3afe9H'CdM`1Uq@'Vefs  6ݥP W\L:<{u.ǩH)1{U fe69N@:&oV&3"~)3rMQ 3Se 6lGNIkr.( |+xm O 3rr"dl{Bf%2]R"]M_fW]VgyZw]?<0);JgL9E@G8.$AyE}Gn*#9bq".«Fm NyH!)P(\p3&7hXI6s婠@Уx@xQ;XֶKa@Q֗TaUmc*1F7d` F MKO]=. ꛉBu.ƃ=BgC 9x.'--."fl4}+>Xy>w$VA. YVoR(rכ7”)H]Iw3H02"(06'Ay6wie!^&逽ٞ[O']-Np ҕƎ7啉D<KQOFѢIU kE 5(72߬BSU2Лك0 >JSa]3 (`<-p7{&<DВVcBWތ ;. Tx{>u߻+6ݹBܣА.6\  =(< *r]a5;\Re\Pݹo9-pw Bp8C˭>l9v4r 7ŲaoE)Ѳ[ze$TY:(sёcAg3p> 6oEX FnD[[ 47\"6N>4+dm޻eǹT\@3fiGy[ζߛX&=<nG-2n*޳#iMt8R(`{Ҹ-D\$I(wo O\xZ&V' 0<5ᛑW:r G !}겂@,=)?{PFA S =& 6 bjS+6O ,?o!yJn(@4<̄S:rv!(M 3¤:G*e[#!&z&<920/!p%t %Qj)k%fF 4u/J3R}dGǣxt<:Gǣ)=h>7^:SdR5lZioY[n#>uuQهI-Jp|ZS:O^XDy k@PPT;ֵa}YE=3mBƣ}j#\%Qȶ0uM?Q? cju}*_Ֆss`aO=xm-UԦzjm(ywa>d ԶԳq,&iڼD9 wl<k~TCPŶTضCQ6#x-M!l\`R۶v[a jخ0M5>`aM>‚8V -!3bb0`kI0%f(2[F[X2D6WՇ;d[v+xr`|zvWL>/|p/_|`ހl3~Qn6654ׇ>ekQ\E:V/_ϧ޹bg ےB`W^BiS/ӈ@-@=fЀRT0Fشz&Ei4|d 7lɹ}rq8xFGnCE\:Cbvz7]} B7S)()$ALjpmHmG#pKZ6MCTt;ż>Kco]vکגDDJ/6'8zpAKI4&aJj [Zr|K*C:j $t7Zp‰QXPx:>kq:/b߅ީ#8В$x<&I 8ْXeX״%67 o %T4XE]բti 0S>9}7Ifdށ=Cloocssi"F bI%~}.=p!x,ːeYs!=*Nr~#XmS[s0 4kx';W^BvMp1gima 6cLe)K$4f`l-fna!(3R$'y lkޫƌ_~ '}' к$?(¯"7 ;;;N X$5X<<ǰ(g,ŦYWim58r5 ac ƉrJl՟9,4tţk?aeh>MA ; x0~_ԃ3eP<QF& vvv]lnnb0@)km% ,EH +b啙j\cf%ކID?xo)7[f+d`m.lfS7 H7U|X0@[!chQ%fg (p=7226-kiX"U4Ax נ0pA@AjzjؚEsfjx}e xmJUPUzp+3~vzRB$m XkX,O2Yy[CR/LlC/J%-R$)< EUwY Ҍ`C/xԟ=p=}hIgOD?`1%vwwqppckk I,KLS$S||Fb-KNѐwԘ t=v4pƜIB͗U<Џa˰S8iE C3u*95}?o0e ((777E<|:_e8(m5IKd*n.ǰ=z} ()؉Dݓf` WƂ-Nhɂ%%6&|1t2|͚u׽-#>SKB- Q97ˑZ^0l$U,/,ރm0Ϋ]5rGI0 OA1(YN M5m 5AqPF?<bt:y,~}C9Ey] KF54__""l(( *=p& 5=}>ŋ!*o0-~߅6*ȝQ?6]6b! Ul`a[" (mx 6xPlk4dG:ɔ9[ڎF۫5ʍ q(0^u?cSN\;d&,>4eI(]xwa"o3HUס{`j"KkD[j/nSDڜ͵4^wWhfb~ 45K\rrx1˳Ic ruK6 ,2~O}fÿ'lƖA8P. m戈hO-99 U4P<3:m0- 䧷jd=`ss01K c;%o7Qvg%pcX 0d A\~ju-ʉBn*Jh0k|bX"/A$L& +2/2l8WR*&j0Oˢ3343>CK+ےѕ."\V.i%D)nUYm oN[6VQZ3{@,TxRZ8 l`P($%+ҨvOowa0k}'Y>Us _E!<#P.ʣsbDZ7|TbUDא2RPy1Wv~QQT)8.],lV./|*У|נ0hXLVAKPmWH}DxYاfI~w-ʣztBQ2E0oWv-3p4I0 "Yg9&6=$̸{\<…ffrrك#>/B7u1 w_箊C;#kfkӍڢ7|/lsU0Il& Uy6YȞUq u4TVCOPF3 MDx %h҅Ν(0ѻ^k0K+_*3 vn ˳]Ʃ֤.y|փ5":65\dm!Ux0$0~ y2!S @BjK:6Ǖ W9CwL(kM5NAxFP{Dޝ!%WTZxjq-jX)3z\fu3]J]l8f׭dLp*{!˸ _d١H-3^T~H0 Ae=9܃v.Jt2lK'U8,i:fXfK3]x8XnP]c2Wuw *}lE/j4HTUD' V䨴Q#@V\?9EFvD_J5Vjn~۔u2.WT-j:5?3d.voP妘-Lg~ D{mZ(\ZB6OCxElAQB  ×hwe]R$,}jXAur:"|v*p[iot5X0@k;d_ jFC&WDjV l y]j %k;'ƢC-8Eű˶!z-J"`a6,nr 8gƤyTIa2`NAc]򗂱]Qݵr/w`1ri>f[,1]LK9*3Q 1N8ZɏM=UBTX ֳ`*b1#6u6iՐQ 樦 kYkpLŹ1ݣ 2q9F'Z7ۚQZ Nԧ078.>Pĭ+!&rzl8.H=ޥlJ4Yu_d- M+($ݮo1;kYxC$7)d`>g5Ek;me(R5s%|.a7AE aVimh?0ַyWEUM&ODxZYNgm![5.#\n.G@c?e4 /wT蒟DA=a^#[(# [' qCpad+MHx5M;Gu ] b75k ^xg; 3e;ǃ˯֪nEq1xL[hF=᡾JF20l4~ ll4WM0%.2 Py Z5]%^Os<]2l}FQE@8XE^+`en9kBSK$͝gAH{ͺ]rc `vds8sbCr9IZ\B{.ӡW/ڎP&,;P 7En&l2z:Ze6`6!J5" [Lm?\LηFD ROai[nںҔPQaH7$̸Jꞔ*g"W:"k%qRכo;(:e /xLUA*.mɮu>sb+l15Ęql np|wwIJ]^-".zLp쎝ֹ]HB:ƙ+"&"t݋ .u(wȰ[Y ۃ >Wi~kyAG:;8rk"Ndbg °`*?_HWb$eZvj68Ca`ʌ& Gp=@3wʨ0l810%IA 7׬sX4 y ߳{hYmP9[W\geƛQ7Ky׭OBwWGK'pWًٞW36$5kmd/c *Z/}]IRx6\æWTD[q! (N/AhhT|aU)? n1tt2S .l9偘*}OⲿMUau#C_cU !s ~`rw,N0w>G5=r^؞AwΕk 4WԜylTN4r*2c[煈TR\։>VK|^/a &C(bM-,H 6 v yZZyzp;]͙*ޢd""*wY6x)N} I҈WF̌ciEZد"KǃuQy>:fZLV:Mt݃Bugθcfm=ODQO ,ZcfidN:3ޒ$+̘qAlpj_'*!MR@K'[ƌ ~P.MVʲl(=e[~\+ i1T\ckD w&4̙{6vHJPŪ.Rj L2ї`\G׬]6Qj -KJj1%[lo |aʆDj)9_Nj7]To6XG}kN>}{A򊋅_T( E0x.QS.-qUZ7UoȌ#S-S6÷?4!ۤ|k,(́}saݙivƶ)ap6бϹe)$vz6lYc*NSSmqMƘ:|F)DEߧ*4!bM\30NEƌm s&_93[ vgNyg4>4x}e|ϫ3).s @ fegw9yc@Ń-=F)`s)I72i0$9Έn(o9R>J\a*yW] ʏAxjǯ:ʞϔJ8- g\9u:e^CTRሙ60j%$YTJ:>O3Df8½_`Ɔ3[ srJ@ISSL4l狈ArSlJ*>ҰCm6)wI-lnk#ߞu4u!pS[[,xv R{\N D06T%Sc%[nvݙM:>$xs>6>E߮"M 6P*%& ly66#T`X [[h@8KaeȠ k\*(w%s\op9[ /괰`)n*!R7%;þәϹo=6M")H;6`-8zC؀(IK @ A DJ I=}sϸ֪jܾPs?OX"D ^(gnW3C$(+3KViy 6|e8sNz+b}<qSڽ# 0ueJSO )lhE%̓sǁـ4|'Wk^>B?y< ^@ U=^ʶc m+.M<܏Ŏ3pz~y7 XffΤԠ^S9j[x~K㹹\^m5vO3-"pmcK%r !7 g4N-c,D"б}}dzzO4xMUp6-jhX*!M"76JxұS;dc9*O&=_pp@jprgܜ.&WXyWZdxmԡ"jN<0je%%ykzqBy枡ʳ[] Ş$' x"Gu;Y{uDԎ~L4œ&pmB2䒰<>K-)-6<(\Џ<@?~ `ʏ]M04W$Xdg2Fk;{׷7cԣʩoS%. l=K`MFL<"2`ǾrtdGw)}\s <ϧDC[Km.vafvd{lR{4Q3cROTVx>7\OxXu-hDQ}bAՁԱ }Gc,rO*<_3\V\ Ox '˴k4J"3}OoX+4.$x3/|3ϝz.1_+쓶%Q:p\p䜋;EQٴ+1U:Q`E<}D&sa`?[ t3~CgHeM&X;͉P!'}Rł)hņ(\,k}3FcRZf'GkR4;}" lmmaccbQTEQ]Q 2=D\QHٞH3̄3<6(0MjXBuf>]eZ/ArQ.TI_uW$r6;7`c"hmlmma}}^DT-re, /kaC%4CD++0'SU}ÆJ)iOq R'^l<7|Uu>#s Urcootvww8Q& _8Y!e84.&E!WHcJWB#Vf-ߗ"D(ZP]f@e/?w%Ye@T͑޽Հݭ:Ȳ {g2Mqr(nU\v ດ8.'jعJc.cY7C; zI%ɎܛyiPF[k?߂b6&.]=`8Vl<)>7cY 0Ŭ> LvGu۸'58Hɗv]]Qc )ǭ7Ĥu?7;hN;lv?lY9׋= h t}HAq mF d'O'xa/ɈH qGH%p?`J; u1H1UpeU.mp%k3Eb"1L6"˔$ٍ@Bl wvp8.vww5DQTz3&<>YĻT K?%OY|tBsq?O uh6ZaHH#6cF6Sqb7q>MZL/Y*੆ؤ^$<_RadsG7@z^e'I<1L?iW27!s4q4/CKI($n,z7-Ʊ0P*-}1T h8N @q1z oeYM7P[e6 ܹuCJ)F6660 *s`0IA #P9j(pn׏ KAT:¸%\g r֠Ι$1;P%c4= A}f!à-XK]E4xQʓ!ҽ$5gg=D(szr^e /NST )(?oIG4\D "4XD_DGI5aD Kw(IvH+<[-~C% CSD6U6wJE"MQo%Ee9$T8KIT~t>faT;b(0mvD%cEXE(pMd)"cpΩ"iERQHMP.E(Z F9+[DA60)KJUe4MћtZ,NJ| 9'{g'ϧY B(P,S%9,lecTm?ʾP:qMUjUJjzoq`)? 2<Ww :SJa4kL 8 6eك#(eDx(B*vߓ 3pun5)p,9K_>Ku ˂u"1/[DCSL-+M5M hcQ"z޽Ŧ3CZ#I \PqRzБ65& S&T(ID D.[]"N)dIVB<+ JvM\$^j=Ϟ|c)zW}qEih4?o/0@-@R*sx|Ag8nF_R,Rk4*{nu5Rjɜe\הa;گ aCW*C%-&@ZDD8Ƹڝ5 " ]9F#-$4" aST(Ek~0H7$"jV6˔ŮJC!mMnI>"dleE)Wa!_TfsUj R6 \?IQ3*શ*f:Pɠf!5S~@}ԧl^g]&VO%&;lv ,x2> Y* ;W:# MkU;-f#gDaSn n9״v,9vQa$ZNٔ+*&U |Ɠw--@ɰ2\KN$_ )]).$v`Ul#*<]qQ[:Edbu&XziRqxOJz.gb#IE ]cu:߂j*z O -JVtoX.(=RuED?EФ'<&Џ!\.֭-TpM;xld\`۠CPԫ2 3ƚ)[N^B^B(׊'SԴݓTD޲맽МFwsVAaI^,=u cPT\XO}s6x] !.a_Ft_ƹL_^+},?/RV}NY!uCOCڜ mII+*pGrYg<_v%> j,bz1xOoIv W|F^\d.'mR\hMm&h}!ӌLS`wH)JUqk巍2 5qcs[rUR+sV>VK""jߓ9&dN#ޒ>(LEpFC18Ai-:,ڶ =?+"`*sI1khk7jHjinXxB^ Κ:9#}jf|MQ<(pN!D;Nϩ{XkUW(⯄a5!\@A+֑Tn+?$0{fM^3^psyf׹GimDKةr/eL*NDD*(ɦ@(Dp[7ĠҥcIiSi*ߠ涎 NCY@qiPi .-`S;lS`r,oѥ 9 HC@fZIE袢&Mhp*:7frrwgeBs\5E `ji/+J{CE{ȱ|6l:Øc^7pXL+Y6 YB% uK' Kmlr,-zÊ[y$%B]jAX&ṣУm)LV>uEQk6q~S f(1Hsd|$/gzΊCM:e}n%x3ci2PڻK35\N)O>SP 7‹S9 t.lf|:,gZRYr5a >~`uf)io锔S >nC o}7zB6i* )YBe~~3,,|`+<35 G^&@R/,4/a{jR 1I9Nȼ XgJp5x=U{ɹZ'< |bМ-48p(/\3nGꎭK-p'f^ Lŧ6T^S@x ,-3z6S/&WXʶ3ϋQ<-e3O=9=v1zKmd;"i1 kx1ب$Xds-tqQ3{\(Ob>O\rF.dGLEgC뙁LvѕwC ٴ̾6kesϩ*zr/SOx`\gtlns߲CKr'[#K)b]w=GsmO5x> w`%nyޢ,5jX3#KٖJ1 Om;3 os_R.lrمt%gXdy7.U!)I.J,ΔzfDq3^wɭ<@r׷ xŲ۩wcNޝ"cq/'}sL)4>X\>(9 =LjjdE#Qi/eRWϓ]~؟kRy{i 37ȟEi|i(xip{=np{O~.ra:ߙb@}֙iMZkNq^mM[/zp&`iPOSê2kx?`',jU ZҺ&f5~bX*}dtzZtkʠDR"}L.>VΦ.j"AI0U%7`i1(;#^rScEհXt@BPue[Ko <} KiSxv)MFbKa0O#x -a\{o3)jWE˂smvU~0VZUvI@*"7R#l.&ZR}yEV +SbѠ*YQSĘdTRM\| w!26.ůM %+O4x⚺#co䣊J t?&O&E|_Ā( '99@ лP :`Nؘ(dר7K BCXBia6W5D}7.zk[OR_-l;FGc M@a8) ?P6J.YִXC]m~)=sgljwϻƑ1@3 |:d][60q@ \!˚dۢEi?`co+#svtǵRηmC KBw?.്&_HRDT vt`+gE:}u~r0(oBLVQ멙$ z~Ճ:P6К݆k@ NHt?l6Ę wM-G>rC5pF:|4^J(>$XJC6IF# 8k|B*kkUvkz/TW4m:/G ^ZOKdzzxzk[)=o+0 FX[[h4BG׃ֺFq~TGEM {g*A[)f3h{CP*-4+Vob~vHuH6)ZV{677+zR 2, /p0v c0l+2Jǘݍ-,W8&-aO HkyW7!MSdYs>/U2 |6!a<(9:P?}CLO8x$I`cc[[[ޮ(Ck )YXBd9[c;Oe^ǵA` <`C#ƉlmI"Be0l$3c2ſˢ@TXѺ/ZP~kz/J~ALN]= Gy6af|&3|a`b("קCRv&C ( nWt2|C oAȦħ !kRPtrT<מxo;$;R>.]lnn끙KV5d/N3\ ‡jq8;k @x"(0ڔ, LT/x/ҧNA'ib>Avp'{G!"Edd<fxfc%k4lY;]+9TDp4vp LQ2#lC9%Ez ®Jj|C\Pcջ~"*A-2vww=lmma4A)4M1w6+ `b$%Ń[bp~C73a4I@UA +Jc1-Xpm„ ?R?x 9feUaK<'xK6 bf38FEm[[[  "s<>s =ZXT`P$0ȎȨn&}#P?N>$@c+)OŃ7M[#0CS^ <&mM$;+;D677qҥb(n6ੳ1^fy#DK2"8B?#R# s1\S"܁m0A*!I5Y.+ p\pT>ECoB"}XIK˪=Vs@(#8C+~]V@EȲ O'xa#.Uxͦ HBV/A6E4@J^%gũE^9¨l) *5'H/)O(IJIXC)פ(O$E &gW)M8PCHUt宨zm ң>O UTA4Eoᨏ_ IDAT>i8)Y,b*k[l ^FOt/JC\' @=[@'T>&cԹQ~)H[@B[Jyk({/ @yPLϪ)Qa0 I"Os{HD0{Ra}K=^]y$ \;%#9@@HϢ9EMqUe4ToD3LBr 5YsEQ@fdEݩQfځECy-Ȃ}O/jb߹ނMEb;U<2#LYTKM0ej'mĥNo`f2@ۄ!(;yJcXK b1K\)/^MF ""J;`!IcaϹ]*%[B,EP^F[ hZRq,|)l L2^A3EO<(*\j9͍h.1P&< %J[6'bzS_n1oW~y| gT~01: e`YLT Β9_4dۅ\!H)P2T5 -0~HROQmLQYhuDDpU{p6^%&T QoiJg<6hPh~(7!8 vp3. 7EOQؔ@#siOMD8CI}d~zc'] H ͭy}טs:Tf'o"PoXUo)33\Ą^&{"tV1#@xQYy0g n<ЁnȻ-+MӔq.&T]T)T\)$~? @f S BǠТkEV%5UL%(쑪+*&"0AӞ:5 Q^gض4AOӴ}foٲ֑"4@gW˳K" ,Ă1sf)OۈBM(VĶ>%LϮKW'-*gPFjK9{`_F;3iTUMuNQ|cay"ܥR@{: )=*))Pdյ5 pL@=h[#"p)#/_ b<3|Z!:Έo a:v?K3񶫬Y$ԧ- -ɵ .UM[`XfPB]in`0D؅é".s0R.9ŷ9^@_ԙ@~`*g&,hI%pդ7U6Q`bUESHkp6LV  6UQ`H WI0ޕ_VY(|1^$[ yO>!87NZ;ց# Ku3;fz&QJC_SucO9_]"&dO:Da$T7Kh0p 5"lC뀽ElC)p }w%>}>Pat%Ruٙ0~)q((΃0 H;5'N,P{s ήDiO޹;s.n;oNFq? I1NtPk1!uYU=\%Da   uqm)6@聂ܚ#‚V'&4`~KM < }ZLn||^ٓȽDZ޼iIPk0 0Y剘L&`ҽ>S wxU@+ 2T9HeҐ*Ӟ լEVƁ|1Z߁?}wc[j|5=3#Z4TxHD :.\lˡ|;-bЇ`M1$ﴩªf1T6YTsdʞ,ro9692.u9w zG8q'+뎭ȓYmbIhe𚀓ahH",Q"0]ب)Ƕ+ıAЮ_ع9^9$ xc3wocRfA͞#e@=1qa:zϗ ]V Ot׷'2lj` IGJ#dݥtUeDp 7.*[Mo :D_ƉmpӔQ08bP"S ؙ۞]w3._4 AdH1+$OgtOi}#)AlGf!~ siUBӂa%vEph kr)&WP,߳w,qbOW0̋h]S ywSfHg`kGwp3(8@r$lBJ)"R cM*5IFe8)yzџ@ey!RxJ3;`NG?BӾ.j*Qv p29-L6U2Xe%cH6)2.t>QW}DȈpJ-wAFY!7 `1ef)йq`\ME&\f=ڳVE2RBX,S?{o3Iv΍\ksh GacY - ada~ C60$4 5riG:k ^CV+Em>o%ퟚA2>rj76iz0kU&ڑvcV3joZDF.A sHGU]6/|.'pTż\Yh>2H/?NlDö ]~5 R"\&;icqp" t1kTD,jViuF[:+=Ӻ"]D[Q_ېw47qGGL .=/axIxUҜCMfG=J9zGgV uGF͒mHxu2%Z"b }FN{GG=ƫۃUچK%}^m_; ozμ͋擆 }/kJE""3eT%'M\ۈ6K.w u'ߙϊkDLN_w6F jyīU>zǐR:s\ͅa|7mE `9'AR65QH%-JK-VEtạ;w}Id6p5xm)Tc cCSrPZ}.O%6uLYdB̲Yd(C~߱22JQпf ? ; %Q%@#v;%'"$CP< :Ipv  ^Băϲp׿?7iv)-rQEQs5ۂfx+nmxɋ f\6Շ i(p}I b}obKD}2 Kڻ]GNzN:ZpIf(-݉TU 8wA`ul\."[*LDXDwTJ&dm$H7 |l L#ERMj+Ty?9m[j[>: +>|^Z4+pEl`mdktڶ .Z&n5.'ue6f:Ii~ky]@n `=?PC-JCB]ȚmjR(gbeda1jmwuהЮF^IG5'k$S6\t/|Sݖ 6^U[lnZ\[ !^\ LjDHM:LP'6A-D:l[t<]g&X~gKn1Q[|uP]6pbk{ʪEBu$Cn("pM) $& U#~+P6;#E <@GH b҉+f6ҥbexB$T&ՙ{/OOӳW(@m:R}#uL;Muz[m`jM>V)|7tHt3#I&I7?s= 拿83#"RO_W׿x6" b&&G|Mm~[mGѱ~| @yMИ@djo N.ӿ8|yv7SL<Z4&IBeu|c6n1+VE0?4vl/odK)ᶔ<$?rSIr1{Ogw|E1dYFc0VAh6nkvl6IvqТAV{Hy5ģM.i$hs&=qqrT]y Azh`0 1pqf_θx|DI/i2..Ry$F3f:SL?X|e~z ph1գ$ hx^Ɇ2_3&jwM~ Ϋi$^>찿xG@8zWUPMWwJ.OnsQ*yD;Gl }ƍҝ>Ko@A|zNP.j`gg+Wp5]!;;;z=Օ~1dg9%CWa8kn`)˵4i1m?r5$[<x" k\K1g>|:*1UY F+Wpxxx<&I`:ПLŌ FRkME<[VȀ.epF7$XCn Q&6?Wmcd Vٔڇ3;F+7cп$`9[JT6xX,M&_Ltґă \<8n 7qK-qJJF`$ Gn4]PPtI~K]Q=8D;Tcem6ҒD_4_ go@$<<<1ϙ]\dǧ9}+ I7r$Hj *r 9 OadJ=8X _1ƺL['U:cѿ@dzђRkDVdKGLx|+Ӝ~4B4IVjCJ~wqZ BojYc[5M`X?~4|;<'<$p-#(Ӓf[Tb37>GGG<ϙO&<1YQ7BJc--8~cmZ۰`jy:7x *{~- rM ;,CDm>߂&5/0 K{^qP9wqJ$3)˒tʵ)^"NjɷqiM<~OHƇIm-kW《HUrښ/$PucқCT]KcuLRYL3xH@unC9a8rttT[۹ńM]d/!P?۔ܑj,vŏU}rUD$bU^ q`.vpj8^4{1h&‡ίr~y/yHt Id8;e>UquG~7[Kn >YUɄMW=,jڦr5H/ AI 0.ʃh[tarS]=@r-jNXR42G6 l :% bzG?k~-؋Ր^xdd>Sq Ԩ$Ou`tvL$U=s(g4T/S'QCv sKrRפks#|dT?g0\︮Rx[ZpWҷj{&§%Y!UU-Zu {tWՈm%a* x&3/ȟTUŖy-u^"uITł9;֭FHT@5h֚LϫX,Cا},iwQ3\dh(fpc^^.ۺ-x0uveΧ8_%2l!˪1zeY2snjPV۔P+mYڢ`$kX%Jcc|8qd 8>R_UJ{ny .鈀9\*"VDUQ[bgUWyNQXV# NoY&[pE,z+*Wq7D]ܮ$@JRͶyD&XO'-mfF{?">f "*P(.[*VLbxInau*aJӨ$$ <`P<Κ5,M2s5Ls]ytГ$htE> Z8ֲk_@Wbm ڼM4Z;-ץ 7T~Y6%Pb0h˦@FMg[{j=muyDUTˍ5 QJV̝*;lO rBԑ*٪ ]VݒgPyy) ԑvNZe~{bL])ry/퐼u懨աe^U_'R#V%FD}j#𻢤jWHU鉐C.OPů烪59TGrR>#&+bTm1(X̧u-`Y沔@-hgrz 5Z8t"L3.̺E+%ͅZG!ӺtE4VIH#'ZjGeI;hې$и4QgwT]jGwR`u+ʂU.pqukbX̃7T6< u2/y\ܮ6#ml%,#еlJ* reիLaOlr 1mU_\qbuT},L*`݈ԍ~&}u.\^9O:s+ſ˭t3Lu_*]lلr4zbwŤ#8*4Ѻ!dkc;B6߿ `Ek* MQG34ʚt,>X2~,wzR-wD *'XscLw_Y1kbHø]5)pŅg EqYW-+j jgS*b꒔MDa\wnԕ KƜ-qmѲrTы%tw*NZ[,|' T,yq[(獋!<}6fֹ k%Va_XrKm8 h ] תfD%xvk -ȧw-OIް&e֮-[mԦ^qV|*Q&|^=8E%ݭ:;ҷ:"ٱ"Ж"vZLG^35lo|7+=$ k ]qşuᓤ+!+x˖U ,H\ᜯ+~۠-᳸Ho:T[ΖBo5U|KK%LI#6w1MT[#xKQ\ܳn厪=S2.ֿU{T=Heĕŝ*8]@3$Mh k~E.KjY3|ҵFQóTb) |.xݕ]V;GmDWJVMkԩFHꪜn~*}$ y5[M-囮*h >1C4)_CE:göa%R>&=~y=+p]PDzp.ڷf,iGOKEm I|?4_YG$=D#-|ZPԬ(KUl{CoWI$div亞OOJ,O3Qo3^J߲c`&[>{>q] M 9|JDӦ78"RiOz TQBp pO]ۂ0&u#+v7ʜ<HYP=68twmkT} bL"bQI_ `=Kۢpi< ~e.w`|%iI"۲*r ~3Z\:+@y./I'H9Sopru|-ŜӈQMUW.ν -dSmLU1?U9x#"bŤNfz#OΙIT8hDKTErJ>o0^W[ŰBi]qQLn:6\^-q 0}l$M0 џԌIe&i6SEU΍/$}0Jj_vTA* D}[f&ʺ:ƇU=`n[W *8`~Exf ڔ2_ebr1PTzIH3-f˔RW]FQǛj오 꾒POb˰伹F'vlA*pDkj=pjܓHmƠnul ^[TƵX6p]͋B@LI{J8_ICj?vvKmT|r^o-n{ $"ؐMfmRQFq\5OITLڗ/x%)T:{T`|)-J?( }j+m;6-)[2r J$yCmԥèYMjÀBF=]:겪B]O&(*i:0HGtU]%y*w{Z5KMA kЃx/*oE|Ts0ٽ:tsyK mڿuEGMc`+b L."&so oEd%ж.3ϐEm3Q|L.J6H9UT|X88VP{P.* «ɠ2 yTH-60cW~.uNTStg@ :g޷Yp HU)p>eQy_ksCNo ǘ(/DDK\SUWge߮-Z_De9aߏeJe֥KZ۵TUFH%is\&P+5W6răm [QeUXSun'-WM n? .t|8SPzY*ߊL ܼ(kcr7}ٛ1[e860/t2: &9w(z2R| 7g6۸2zOX.m\,]MlmJq,E##p̃x;b6b\ INKCMKT{|4$CZe2G ao݊HJzb+*%Jh-l:MA i*j щ/ ->nϼݏI$rKnk8!ҙ'MbtF@J"!ZgB6Nڼzi,_GQs4:zF/%VyH2lr*,+gְŲkdv"<#Ti ћ\&3 d"3Y ~\Ʋty D>.w޿C9 VvGXG~yv"~'6 g G;3ԟ(]HLИr5O$xwcy=:=#_sB=84$~Ľ+L#{{Il `P7Yj^SGyT{8ZSڧjMe5m@ֵ |?kk[HtM:kϮȭ{rOxTYc&]YfcM,͋=By@[)>"[DPOmB?Y6c)s QvHOۦ:lPibnk9r q[.6J;{LU%f0>?6 nՔhzz$|U-NԕmMP6vʆ86IZ,e^|rQI_+?%U;B9-?2& k8mg߀mn=v)wA5M@0$ό^ ?_N~-w|TP6_-?C̹$?IuS9:0q(2 X5Q6ؿrݤW/Ϲőm1dYFiZ2fije Ŋ%ubNڡZב <ަDzI\{qsyu_?f=ԭ4Ɛ$ ^~_7z+0ͼ;ۮ 63L]Zp7J{ qMє מ~QU)|fqrgf&-)``0kJ:lctZhI1si\L/$=W|nj'ky~ƙH:LOhWD_)f/]Z .>шhT$.'"Jsf.ɋl'4536N3-7I^>_%ci~M/GCvvvǗKd1hmcSKB0p9~FJF];?@{KȻ <91AK_D6DϸOP{E-iI0cww]FQ&,H$\%8Z2諒j *3٥JCՎ)i?qԕ-o:x@F+imמS& GԖ2?y5ɲ=߯ -HYXTW:c0UkPLPND~KǵgexQIz(ﷀغ@cO:TYbIv^/&YWgYޥx55pш}8::booh"iy/$O%;?OxE@Uk^ZhI0HcpX$hgQ.nu$YAݬҝ?e{EsoVшc_իW9<gq&:;zr ׮]իCe|>L1iγy/|3UGUpDלRkYs$SHњu#b{#3@]ejԖ,bOoc CF`2ЛLŜ FRkZ<[VȀ.epF7$XYELlZ.n^5 l0r]=dg?gĘT s{o18<<ի\rNDX,&\L$jH+\a.ߛ긥8au)QR& Gn-Ks=k75-s.7uJ} G`m1IiFL?|M 2'?ptt! CD|'3>>;]0\)dP,Hҷp.9fjJ5}vP0lZ2xc] 6buK>V#e3d𤋮6[@(.N(Ds||̕+W!IZ^<4x *{~- rM ;^Ut"'b~]-.m+Z ÀgZ.VilkHQu,c (vwwr GGG0p1Nv1ӜKD U-8Blϓ"u<`5T׮1]&(ߣ(9 ]mRexJ wP~M ~e/z3\SEme˒$ dt-݃mļR"w"QΞ߫ Dzc!ᰞ¼y~.jp2m$IƭՑU>'HIuխ>KRgIZr`It#ٍ:n[&^XyjFeHM(ٕ7Uu@mI19EYb0wvvj?כyyQ..-|M5-~._ e %j5:NU}h&§%IT1 &ImVvtET_$;/.渋}1pH$U~yΎuU.P%zhv)"+|}i/ZSH̳Z Mu-Nt|*H ̱U u͚o6umWy{d⬥U m,e(ϹAe#XoSr#َeeIN#'Z^l!.S᫪QR }+%bF{d[kfŵEPGnzVe qق1EscQ0ZI(8Z3NJ*_P%:4Tؽ+ohɉ(];TuMx1_$@ZmSux-g&MНjv6ʯD%$S"EӅa?U1:D׏U4>^ jf jj_M?eΟ d2bV[e+yMK\Ӱ:¢k׊I%;z9UlO-z+5'JY%{uN5iJF_dx@i. 0Հt|ğbfZfᯨ>-~NˠTmQ+E+SUf bL`:K}tL|Pũ8I|$eQ<\a^+&k}ബoIa*kHnnRumfZo0 :P8XvQf$[V%8#30@yݭںkq \ՐXݧmɖ(a"ɪ+>*OKBQ5%jhKƤYdmidN|Up2 @ j$^Zė/Еaۂ6o 7q,: Ҩ:ͳBa͒[(suCb4J&.z]ѴEU mHV/iI['L獘dGѫ gKı?k-}[歘;UEw؞ Ϩ Gj = HīU0b9Z:TuI*;uʣu(]Ө%j5a]NۗIOOTLWՑ'6$.,9**‰:\(F( U^EyU v"a/;Nj(C4'3QPeR1e}36N醢n?i/,[V6Ȅͅ6k`+T!JU-/JpB_A3hL<; i5\_C:uWj}>`1U5o+]HYIZ)P.`!uZkuM/-(~s4<8Qq7DU 7"+eqkb%xi|1؅ZD U:aU*;\h&էrIQDiM魞4s0')Ylln*4DY\j4cUiv8AB5ʏ5_0MoB5PUg$QOdECP_16_c5ymD IAbT|Έ B% w=㿻FAjWPkHZ#,mjnc[=VIDgWT hJ}*;V u MǶI1pUNaTҀ 4[عJl^W˧BP2-o:*&DSSůAdZ=dmin:Ts6mj`WJ2uAqrJgֲGl Ln[0L(o:17w q̦ Ct"T]A 4om* VF3i娞y=!FU˴=PW^TY I{uxY\|Q.$tVӏ-uV$C2\e/3NPW(ٮmMWb?U>}*K&{}ԆQVkfhKWd.buXIZg^ {bx&.m0.5>ocVUki}P.^=4CհkIߌ^\-O2AO`Mu WUdx/=e`ݴam\sp%* U x/?,nzZ>l űM]%[$}^6stݥIR|d-\YYug@$)i*l٪2ݓiRգjW*[xS'I%S^L:Y!IV5pQk-sgK2~Ll b.G .%RQbf Z;d9aXrYlNgo-/48&A;߫bj~E.Kj [J:9~Fդ*t^wesR?4WE.r'AQ[ĶlMlt2U@Zb~ LVA(nca-tUAkX§I >!R) ~.(Z9UgEK'OKޔf0x'X5EҫjX@${d"7yF2$div:=>|lYg(gf[?+wPޅW'vo^}3-ImWG0VLN]LAKvЬ,'/W("\;{l`B:*k|=P~eKLu'TEG?z:%-x1`]Bb0>N;ʡ鏞ILe 4{cBլ(RUI#`c 7+uC$,OK(T[Ycv1?PW8Rw ^xӳXlq&[9ӑ፟O [$]1Yo1i]JK՞HzQe$g%*Bid&TXbY2>AN|٨gN*u ~qң3I}U-޷;湿6dѷ9j]zy57ܓ$TU|-f֮ 8vD8TƂ ^g1 |WBC?b\C$ HLELbr[ŜA.<`3ྗJRVBhh)cO:G"3C98,٬%STI*szs<8kRF^N]{ juT f2{SS5M: O j{3u0-['*Eǀ\Ώ]ё\|Թ9*؇YG^eŬ,ҌJʪ ) 0]T"մ,R.0s%!etP"wハS axnVB#:E-Ia^] %D;NuaPmJMXwרtZgc0s#VmLQiCJeB* Hk>uInvDZxh6kYOjU״o- !2`rE`Ju2Θ@Esm/o;U8s|}>,"o:Tζ;õ  j!q!xIHdDFXl7ekrDxj<|/h.9C'?Px#lnb0=MTOg}'3w{lWi_9n{}f}Φc[Q69zFNM#+ Bg=)._1v?Pg{PO$eW*8@NU'XgGxD&zu+U|r$tj"0bq\)܂WJ ː8@n݂NOT(oa,/Qc,sl'lRQEn7LU\S.S|ѝ,npJ]z))ҡ ~XD? ^R%ax<"eEe95XgБvM!1zxz<=Oxz<~]Դɟk:)xw\Ch;ܰU<[ZzmD I)=ACfMh6UC@)[iM2D`75gH9TQHmRҤ&6`a'?ϒ=0 $N2i͓BoXu]7^i$j$ MyԦAH4iSuñ~k9Z$VXnPu3 nR@~~@–ZA9j %s ٦j?Pʺ;oJݮZϮs (@FmcHV\6hs2DG|[2k(JLK6bapn(u{W'<:X mZF-vN$D1EgOE` @@NNd^_П gw9`,61&Pe@zRbZ j$IJ)LҽE+lCĕΕ9Qt?ǐ[B\^GNE: h=~G-DK*U]8moο*\lvDw@Zw)kd:lv$"6ld=r)\ä6E L*_^ۀD(`i̍>tՃXiJfB&(?g7Ps4-7xBŖQ,ܐ(ٿǝs6|r8|6aAҭ} cN /OLt &="?;aLSo&Ox瑬:pŽ(>_4ql:lt.&IN$Iʋͧ kHIWI#Dt L~$l/m@>tl8ԨuD&z_m_Ec,~v|;vvKtp=MwRVr?xyVķD&_l6)ئ5@Qt%פ BLl⍃?tt<߻AvZנ%I~_^<[-˻ff-d~g?rÞHi =viP20Kx<|U{Hgq`mlmmassdDw}`XZĖA8 RLE0F  $wCQ?l51:0AmzHuI-.AxQahO}& _O0$*`kk %x~Nq.i^c2-c261X20n)'`F8;h>62=J2wxv"6E}qG *Ӭwy)owDytr[I \- jLY"q1q%ر.x@R Sm0-~Bau~BIyv )5Cl 1>IeY 02,qwDp&ƅb27]!l@p(0ɗ+{D?|[3/8P_;rJ-̿y#nEע(m||ucE>qpplnn"IixI!0߄ŏ#R̨omt&sa @太pF3h@q[xA% ^O!^gׂ51ʩQ b SP,.G(fc>1!:D"H7"@2na<ԏ?e5&@\3yRXwTdc^u@DhX׋ypM? wVm"H*%`"(]> ѧ@#*Z5eaD3xzZIp8DCCEEe>Nj 8k Z.-s0"lRd7@5J?B-0.eexFQ۠݀^o_NqC °y ;>YH1e<<1ՠ!X~7zCr_FK[j%³B+K`Vw२}ScɈU:Ϸ u`6 ,+$ " 3|\;NHZ,Mq90$F‚bC)Kְu'PM S$gaw#9UpwfAV41?K_#<#4o)W d_A 2jsR y,óUf/ =N? 8Yhqt7Bԉ=7 ?A^Fo@x$YpBXldARgU2Dc^٤tn}EQ9|'˱e uj_F=rF/>s%:"dc'CSUa% $2|p%xf~Sf6!gCyw:^|TDl"Dp-]5Mq-?/2]q-6b-\c|g;\uK[U]՘ [0HW"+`a ا4KY(i %U:@aFqHՎp!?Z} FZlZY#H%XKO!ljX"PPAeB aR\:YpvHAvՕN7WSH ˥J]>ɻ7A"QORCd젮dZ+ͫ;``{X™؆3 \aO[d !Ssg1sp&2Q'-NU{qgěҖ\Q$f#CfD] EH֬ǎ i 1Y>g*AYk_߭B17; m%O@Nm/#O`kB[k*NZlIr(1:p*#ifroZص*͊҇:P&a;j/.YvMie~ԖbZ9"#0H2$G3D\ @mЮa4&%R|:A)㞡ThjUDFqAE0 잛B䶻w ]=Z&AG9b$ئ>!N&N>sNˌ`=TV4 .E֮&Iuu^`, Va1VP?Bgxܐ"p:#6 /c"RUuf༢Aa8WWh1g]ĈcnؼBtc:wUR3 +4I8!NZe37}.O@IHو&l!5cHdIi#Ym*lؤ削* v&,$.?Uh>eEuұ"dc%ULyrXq 0^|!1+,ZWld/82l͗JMEcun4sιγGLf<;y~Ydg"PwЂujen-x)S#h[7nX_BQ_&gYp@qmOKhaJ(ܧ5z${ @@3HૉBp"$D| !EHDp rIMMZ b#fRJ`,?ʧx敎IZo9&:rV)o:K%CP!}"բX ] @8&/"vba bWyUÈ-IEgv)2%mM|$āw`ݩ0SZc+x@uF\`)B"HLH_܈pD؃%B/ 0Wkr^E/!)j0kR&_gs1ȼם9I$KQΐ!bD^usA]"c,x,. W`s]2oBq' e#S ٩0~h|n#)0A Sw%v0S$u*swB IDATGwn@f}HQl&$O!{)t:m3Oe1Yu%SP Zp"\F$''(|yF<-Y@DL; _sL *" s]l~˩ER; *ksj"+ec]ݐ+2u_lH³"xc"Nm‚ bg#At:Eڤm%-cp, }"l&M#AԊ+ꚁCp"d! 2VA{ ^wH}wl]V*<%֩?ܳiپ".${pm\5`,^%'BJ׼_\WoaGg=4) zKlvɽGuh:!m?cxtMK5Nw[[gᰀ6Uy='FS4l~ HVR); &"C$ΙB̑ rID@S%YogNLSQC::w/(&N4MNZ$Xi^,uS1DJWM먰UDS"|,kԓ2PQ9v;V+e<ՙ >GdDL,nK&-R:qDm;.ޗ:< iڷ!\1*z\xC}EpξXϽd}&PCN:u$T].PZ ])yaP!EZY%xYAxMșՅ˅Su=u6gggUx(u귆ifLgbn%OB5~`yrdDeI2 Lut.3-z$ѳ K9[S54_5WT.Y}EH(iYh[*fv'Q7-.Am&,{ΕčT-|^8k&m 3p5Ddm@< c!ӻXn,ks'UĵթC}mZ&DPܹDU!z 6=!lcEZ4/&bM@t(@1;gG"qiuLZ$=!4 /+,@R(]?a:<6$* i L;Mw;Gw݄mB$>vww`NSJUg9,c2`R4d.'rd!8&-apSNJ"C58kH(|o ۴A[MlQ>sVo1&-:y65ӛ v`{{IR)Q4Ǖb2fs'0P޷+ƵYxWoH8VD(YR)DBQ%߱?DBlC=$pmZ-o{W{.Qgm'7YwDt:ŋqRevE <1LϦx~2çO- a!3fj~R̺xhA/"s0E72*ƅoe AD6D_W!-#NLv_7Q_O#91H{{{8< y>HKZ\EC  З ыQgGNΡ<F^M u%W_T\)һqpMDQ,0/2 PDMϖ%8i*&]D8`jM@/LjuIsqu35F\/+<7> l:u줘.\=loo|h 1>;Nq!b?\<%.Rܿƙ0,*C@e7fM{]P%v[U.n7;!05%d%n 6C_<6xzT:߃/Un:hORtY +  HqwDp&j6U}6 8U\PKOhQnbUÆxDlw$ LT 1IU#D5pVG>r|?`IQɗ"܁u0\bN\Y;1EJp5eb=c5J0f&:Q1s# |Q騰s8fagg^ '1iYHoM0ΦA[*m"&\,"Zäb\D\7}`/EꦯxuX|%o7>!l6 xrakk .\>vvv0 ̘L&0qNen]񓘀`|M293X6ba)1>\X;nl)TV4ႉ1=T'`jZ|kޣ(yMl,^b;Q~ n$fb [Op8^ s 0d?ȞPX!wױ& !eQJo1l!6 N@؃MS3hZpXixh 8_%5DF>ž$qrss[[[ 0/Oft,(COZg . .A'm~_2!yQI g.! |eɕ^5-4Ts{&mMam`0FډZg3<7bjNb!߄DIW/U`OZ B,3J5R{J#;_K 6Dxb|2J+`<u2Iu0s=֡Pd: /3 O27$ altKboP\J —` */ߧ7Rx Jb=3"J .ҧ 8Iz/}R:@WuDD"9)$ق^p^n cLMS8Ka!"-q :|LDx_nE-T/H܅[b .HЄS翆@:[Υ6Uѯ/J"J6v>+_A6Kag(Ji?dw0Oq9ͫAeC9n6a!qH0(=+)#1DT.MWh/ASX?*ۤO$Aqw!,ﯗ&gVӠ6u$ _&J CȦO.k-44à X,Y_FO!.GbB n^Yߑ*]!|ĕ i bSX@ u>Ŭ`9u]<0MBq )s늄$)P0Yg3~.6 .E| r7zW%=3̦s(8(b:Y3d9JPVWG1Sm'Egyocq4U-3|&"q;c]k܉P 1`yΊ%0 &)#RzRq2uPy@β5j4\U?EQ2]wr0ayD`SKKt14yuRYKXꂤXI@ !5fsmBW3jV;1uT_Zu"jlꝊ4p{s 2:;HKb$ l6޹aY Y-Au~_6vNvPBhL);JljLPkL5$ *${`SU1*Gn 6 uSX}N3EG l.RFUz3c$ 덽urֺ1UGgT6S_A0YAv@T.@5,Tqc39yaUZڴNYkQְA>Y75*u2PSaʦ£ᖯ^k LDLgEmlf[y̌3]"x0Ȁ!1e3 -Qxe IDATMjI&))Rm% S93Z% w%Uu3t$.uQ0ζl:nC\cPAm+8é*IsR7țh-U&nˑj!<}` ŠhQuW&3,3^[9XTu .E֮&IM!U ^DX? 6 4s*sl_XP{DxWv0vfA#ټOQP {I<;FD.KKuMWUwO=iq(q8C,lI0`?ذd?o 0h ! lX/ ?l9\ftRݵkqCyȬkWsw{Y4r|aU1p Q]1$qBSqO8-"| #y۰cN ]+  \܁u/yDZ-4C'y#0re(I鄔Y>e2}pYp X-aנw}W +h>KpWyJ$'NT-kJ1&.l yPen6 S,rwOëJ{#سV.8;<DŽ >3Q ZGU4+LqAc68C-\_C9j\mɺ d{2s2lrf.l{B%ʏRXi2C+a<+IR*awy<3 R޾t:MToa/n.;W`4M>Xkb܃|iJ_0"`Ą+PU͠kHFjēal 3w[ie[Sp߭#jbZXrv>v6pfn`fCh( = @Rlq `Þ7 `YNڠx[O{63Qݶ4 oڴs?$¿;qdI܁Xl.4KYf *(I4_s^#DM8e>\+L$wXJg`ir|,g Ⱳj3٪ zmy3ā]o-9Ӈ/| mtև" i .g9TJ)Uh,PΗ0Y^#lpk3j -Q[n | fY>tV5M4OH6ׁ@R֗y(.fSRI H'ؘڅ*Zݵq'lrYƩVV#3Mlof3S)h S["nPؖc¯:9bfAK,@4s7#t}u[5lC%va,84H[kީnR 7p Ib:&9 BUSÌ3X0/+ILlc`KCgźXnd6;e#-}c9rC51sGvazqZ*˲n!c޷ gDxK[Bùc_8kHڶTH`[OSuY8prgBp/t?jMIΞ-), dH:Uc7\#kp2v&fɇd%`Ţ& }Лl;^yIv=|&¥HN\avvzLm]:RYG(;iB%EQ bd3ֶbye`%H*=f{ە;rPi}XU@-s7x^l8 =j8y+Ol{K.l1pw`L1`VJU=\ 1maRVJM%R' [NLJ'q>cVd"@Tl ,E!s];AZgg6R]5:8C9U236  K[(PSn5'"fC]3!q[0w77ORKŢF-f<^;h}X^&J2,R7hQbIM6_Fc uކUdXE,RvWHgܽNzT0swOKEfz~' ɂ#|TXRC&1Vh{ J `QWcFbA`c0/z lMy_ع4 (%/t.)ϝ~ey$Q*X[$32H`vذn,w)r6Pm-6X8؞Q"sp~w'a&بyET$ߩ3Af|3&;ʇeqmW]+l#ca>`uP/i<fCR>(b[XOw[) ;/4& 08n#YlKlqn"^y*^n[!|$E띥gѤGG"@\ۢ!l aRE"㔹h➻#ANf~?QJ홻3u(OJT !8"Fh!ܹ*%T`")!r,fR˜H %DL?ƂAr}_hQk,$vN 2( 391Ԃ~y'Q" "E)q'2}b{X@r$hۦ&9Gt!1 w;:q@$X6څ/.a[ 2}pQ㭷r=7DHL,U?A&ogׂf4{-Ү}')ܢ:*,s ow>rRxwϽ\ !@6_r̄=q3HuY:0s|.$8D\ODܶ$רLDzs @eUgɧNBTw?GT0^@O˼z0P="A. r"T0òi?IBD*>~ BfeyUmDDLʏZ~ I nE`"]8#XҁZbY"ZR~Ў_bLhdƲG3rh $,OAhvV6M>9O'Ǔxr<9Oh_'ş]F]џ^kRlͺnm#x x\A-`Ҋ'IR1pQx&2V蒮Km0u5RHYJUL8Tbq#@ڴIVFyp ^c[+7q&yOEXm6ۦZIP?ZssDdZ\ ؘlo!~!&bֽڡk,r|Hҹ,Fr$J.|nf[y;Im HdL *7Pq'&lQYdHɲ-vo0|F- &o(aTFۨv>`kbv l.9ʪrT rM c޺f⪃qR J H ).gy}}lP\n!עص%C@3".H߳GŞuXnQ!}>h@lK0/?˶T;G+ߩkj[+Dt:-fbY ]Kuٹ6Ъ5שN{hT&L_r~lR0pz,(n$aB*:%e\\(10G_[WElpd\濺 خ!M9O';AJJC%?[lMuO(X裐<ۀ ԨTc:Lb-;t=3G4 THIԏx(o9:."I n2fm#hVJQwމNA /FnMym~vOni=KRzup*X{ZL(S}tO)sv.U9T!ѳd}y6?=*ckk [[[zQCE!`lh \ bX`vqs-8"yR(7F"k਷yKIu`f7Qa9akk ޮz I@@KTR =DT ~bX@4P? pm͞. RlWNsiv=ljI8<<.]F~mc%`2ص!q9'! b[~ J lzR]RLcٿ\e(L0ElcP84bX a-70P1M~-",4AgyUBS2mR1])>_KנN.W?-KDqZ4NCF,b@X@9%{Ƣgl[D8[Kcwl#\|ACYf(&\4ǵ-|};?ц#,i j5ɑ4)\G5xdLzq8Gxq$)Hz^[ZOP~ 0ռ$Ijrggi( L&&SxO m;-KG-]JOJ \%C"1S~'[^WJ_%~m1 @D -SIV (n=꧒UU1bR]$I<1Lpx1 !ˑ`?XbwQ=nM68[ qPCˮ48E%\ʆ]RYcP\"B>]}Ed4+D`.Gd]:pB3c͡EHq4 0nT1?o&j<Xy[ϼEJҿǑ̻r>A~]\Ȳfpc &S|v#kL%&,%9Vg̫m@ fASf SCEZ)G*-3™|`T@[EO{p|lcqr <;Q.Gppp]F#9 >7^`Ag&|%`[]@VӝB3HpwbC"`܂.ԊKl0ƪҧHfSG=B ݰXfQ lt?*؂A1e"dYm`8b0t l[xRC.(qk U5_2( R|V,&LKs0 e᳔Tcm(}>YH1 3s\J.]VJ 3' k |6sfY!˲j/ l Zg0/p57͠"7[\"!qQD —U$0f8Z3z~7`#Kp5MlmJÖKhk%OE6J`&? `C$uyF˸eSGIٺ1LkH FbBR" Tg%Nيv%]{L4%HBWT?~Vg6qػ.,Rz_[`[5<_Ux0"CX:|7k? *GJ2 y IDATGT m!3㄀Pbi/24W)-y:ٖ@Jnmʳw/_:<>*]eYb(cDpE!)]6?S3q"$x w:\Jf Tkq6NʮW$;;:Z~|e $īKY,d" 'x,hپsΓ$AJr]'s{pWRv#泤#huuuJkwA{fY*@+[wlօ[:,ރqzbOriS5Ӥ`kFzq@_瓖 Aغ#ΊИ"{M…ڕ̌xe]ĭSF5`}0>%>J R^N uUϽ!(LjH0:V#F JM"db4"^S0QH(-u }F0ȸDj4sX1CѪ6Q4rR5Z\hR,Y*QBJL^U’ P4fNN4]}b> ¢E5e/|NJim ֕=XM!vo^~De)R^/A1/|};m[.3`,8^!?." =7PKMEr2[Z-,;8(^̦ uǦldRe`vyh0EGm=Pf. 4uGLz֩5 l3tQ3d=1BD^]5,n+?k\ir{ Tli Lylؑf©[\87$Iظ]i0mK`͔)f#GvZk1gv61g]f@FFD8gq`Vcf1Hb6 ͮOْ-EE1ɹIK?gi%{̸Fj#e6!=yס`ep6A*3!Hnq6.-'x 3uЩSsI7`hHYYVu3 )Qmlj$s 931ev! :~q* x1Ú2%YC|GPnq\5ΌBvmmV&i+rqb nY\ 7wF^qGNuoL\LOmYY+xkm2EtM\"5]وM/PRcal@*77?*+qՍ-&6؅V\%P@[Udeէ6*}إjiXUU,WksXX]mTB3cj9L/X:=c?IWw GZ )xH_poy^t2 HbZO Tk%;%ߘ41cH H-;EOCU[)H63~`J1Å \Q[b(lSS!yS?/SmS9s!EB`S"JRpQfXHm#r"܂ňW.A9Jp }w*Hu(Te^ڟO/JvsIY(*o|&;s̈́vu.csx|\ >—4gl[NSבdj@9;c;<DŽ >3Q Zp4f)8f3T>•'((\k HaUmsG.7lS6V9\%)xl˾~ jf#>(x>sn:2=Jw1Fsǐ&||^i'k?P{9`ܨ p ‹D;`.|ܔ0u;2bbtͮ#`@N3IJA cV' 0dS6胠}D͕1UÌ,49fr3Sto  [NTu a,6r?u9ﲚ̇y"ؚaY[FH:#49`IJUGkS"oKx%%"8DU/[l9Qi -?̶-4p mÂ'Ujg"K(ŜlSRI@y#|RbJfܵ??%N euARʴqlJe |.53ǟwMd䪍9@o-/J/Z6M؀΄yvQ λj;anoXT ;n6&a]$DH4̎Y[S0b"R W/#(3f~fk 6~C!"%3\}^n&1G^ 7WIk 1H+ҺL!運ECŔ 6"ԲD^GV>լEQ3@l\M9zvBezW'fKgkTQ"RF.p1rQN5TK)*. `"ŶmNWdK?Hu'1.GR@`ÂKX'ĩM-܊f݆s^\SR@Ce U5'amLP- Hc[6snB8wp8O(y@%fOݹNMNܝP5yq~f14t0lI6(?|H*,Yl 1 :gM9se*TbZ<6oQEi\1cE5@=J.h+_J4ek,$1L|Z+s$ŃyӔb- l{x\ .GwAkCF✗ЗU6#.P=VUb[2T{i+DשS)xC|@/ò,٠F":mCq][+"v{x}'qS|}@ϝ-?w?җ QDڷBID O.BTdamƝ 69qţBmue.σMXX١"foc wg_.TdBEv*TS|??j5aԡ_  1wG<A-*A{#PzMpZR|@8{F" JG*?JdL6M>p(X*ŬZ!/F"a{bw9`F6TkuE"^9 ORp C yGݣ}IT. BU׌GԡcqAKa?ЃB>neM̞}'#Cl^P>g˄:YL1[Bd1EqOl[<ܢT$N*ЙpM)-SzΏ>iJ|$eCf/}"v)r.XvaH]:$$].œ/mÒ< BH[fs 7|N-D\ {wLs.엯w*@/?{(k_>-''~oFv?x>\{'">yU^צ ΰ}AdJ6.l5 $X7}d'Xif鄗FRi$o h.?dE/v͹s __8t/jc?-LT$jxr<9O'Ǔ<r]5?ְoXi >GذGOuIZ*C6:Ta}ֽXc<5"K" RHm[ڈ ҇9PZ]@}g[$ԿtۡN9O,x])`1#wբQJjsm!:!|QikkPj觚QETͷ%U mv1 mA4Z*󋓴a&RĀ&Sҽ^5D1@}R: (5g]Ԛ̖ypAJbDwy8ZNlS,y'a#f< B Rn@ ZtND?߆JlV T,[~\ ɉZ:c;z:پt Ƽ[~њv1yM ج> B% cR(U݀^5moQ*%+;h%[_/NTW4\]+׍P-ﺎa8{(~`hڦ!BBn:g߃1~:?c' lW-\ec(umCzKR('b>v}m-l]5$54EeHӴ~΃'vζql{\HMHg*﹘m##FCmXF[$DYdgIꑈ$ ,C`0@Ge Boîk/-;1t:75٬EeCK0'eO?;:3kQ19;ysm~4M=pRbzNv8 6:D쟱JG;?q1i6~h6 8՞jx߆5oͼzRH{{{p8`0@kL {)˲4b}~˦,h~z ŽkjR2pppC\t ;;;z[, <Ǖĵ`XǎV @cՀ7[8'F-dϠb'w:l`K'l`LRQg^% 1_0eA($I˗/˵ (P%) MxuV`0RPDjL,Ҹ+[ r_ { \3PS54[eJz_gOD,} <RPPjn]$zޔ%On<؊Pi=ᩧ!vwwx^渖zqpDZV]#P:~NXK[Ͷ|Q)ҙ-ӱIlIi1@odk/ dFq p/_,P%& ?3C[NS!g˒#$GK&qHS0fTIPȰ5/*Hg_C&niM%ynHܳ4#DW58a?G,:skf`Ɣwx- dM3X/D`w`TR‘c J&!^@Odx#`Ħwt@lY ? ; *rC@QM&~1K$pś9KxcJ 0ޅfƎCȄI6UeGWI5߇I+u n%G#3T: 3.fToa0̾ V{IvE$R\vKxʳMq(.e"+*Eb>KDcZ+MG%Ctטm,_΀339z9_ˋ"Dp]ED4Kk"| @W,oZ/s0 eRHYJqH/S^aR }HhRz_s p9M`0 .x~^`dl3BŒ1Qca)|~2<]A`| `k׹+3H%Y-lV)֧i Te3/UA~;Z[c3oG0¿[O JA#q]Ķym^Ȋb(wߕրY}`H&P}ya#1€eerX0HW81Q}#EI_ [\┭nW=&|p>/>"zFgE\unBTUaJO\SVs$ /OFB1~Y&K @2'$t5*.A0R#uO^|^CYGok>RI$oEcZ -[BxmSB|i"R̦t*s)yXw;&CN k!i]翎g23sZfycHrZSuσTұ$M |>& 33`65{vN1xHEx,h: n~I kdRr͢$zQ}qU%AH~Z)=UFV2ѹ/<8%3$RW/Y-EH^m 7V27?mںk;r٠dCuW.P"ra[00AzH1c4ilZ-7P9$T@TM:1xiJ8oYm+"=3Ma77PĚ>At5a,]O`̥) "Ye O)) }h: >X ]EjVlԋcSR]1 n> ~9q V8j+^p!pH ۠FpSO3[fW>GN-itZ`-,C f0NF̫@(=gDc6 q̦ hKew}͙q[=$ EHbk>,cdo\n{^|eF&d}]~п!s  Dse"O&}iig]l>H=ZNlPE5~A |0E`Ab-[huy7G5k0 > Ac c8UY s|&"}h0KCu"6ͮ lU :]\7*h)y׺uw Ae»GnP"E*uu }TBjʺ=+1ΤETjq:flGE{Q*hOP6S|ʦ@3_%(qDڻT_hcR~u/?\DU)]Ek7^X.)uRZ0`iU3̕;'Čh#rFfM Rsme`ʶ! `U&ml;T +Ulm⯒4վp|W-gE6yq47MR ÿkL(\rɐ/ijp{LmrW 3<XM+FKrq1m w.,-;꟱Ņ3 A!C1劎2uꍂ3%ȂM91{PE[[60d:ղtC5`2J72 ¹N}3]f !Ew_kxlV$0[2?eNPPbbSFj#e6!=nyס`eis07֗$ADyu}T|qǵzEJ] ~̸unQx{JEa?ΥR1pts93SV.PEȪ)lf[0Pjv_fSNtҠޠ~1y7Zg/uU0p jm e>f؟d]gƉ5fE4],QܕF]Hl8(^|~ΧeC@ڞesk/6lEH%蚸u2hM!mFUIgܰ[YOLpmYD B [p9xEN}M:!H㉊ŎɮID%E0 =h\^; QpإSL?T/"8{m_&v\ӛl~]tݯ!_dO B5-]ϣ[\hwjޛے]oe|5*TKVB=؆@@4at@8xh :h#weu B2-[Z53!>rkܪ[U8;>{Ƚs7Oqu}-WoSk8)whehzM7LRoڢY+WܔqDqN{ER^A.WZ# JR-8:W+A,?B[ƒ7鼘sc`+ $lIB9*30 ,sxrn7$!So0TtՎ/IyYUzbt:Iu[{@uދ[zsYoReyZ ǩL1:,F2J D $i&a1ܖ*F I/) ;}u|T(ȀzϱN%*(Z[T08{{*;tdmLbDfܪs^Wb("`.~,.>s` |/9@w\VK^9).tX]˷w^d6%_?Ug ƒ&bOS4h1k9@;8Dأ)SSnJuJx E%2^xۨ/+UJ,Қc0~#8Ԏ>,xmu-#`2b c$C 8WKmƱ%¾i/xEIaR}v_ /S8'-.]rIdĊJVoypb;\DlVdcx\bjYs~a[vU>uF{!K$I0[r6o:Q[d&C1ugdܔg0G9H-'6Xsq-꒬}1 ௶c)s|Zu7MqkIRMT0QE3fU4}*uhrzV2ٹ&""fz; Z{#E] 9^`ugI>MamU l[**#.&qgo5%HQ2 H諎n-)[V<)뱺DGOIyd̀#m/#?,xeQl*g+5`IHԮǭb/}AcxU.^;Nf7VUl 0rdR9*NthU&D8ٕ?рґKӥENA)iEKUWQ{ٹs9uQR0OK,(*' QPQKZ 5iޖFL:b RT` K̾EJ黵mc;u8$9QOpmpf=ei$f4)-:w\WmOm WtTZyb@[2lZR\L`R!Y @ pG="|XYFO}0Q1}ח[a# x>INO?ͭbc,SԦh]D12]5q76v`EUw]&Bz++><-|XWyc{j3l@I2t)&my(MS-)ANTz0Z.SwAv Vky)+UD+x]@Jtim#}Xe>Q !)UAJrD EhGTŵWc9OϻG-Zn7cȦ -FQvdp ߎ,G>']fط)= %i6\}iY]G_Ѯ5 QQr7邇EZ{T^UgfXf[JJK ։f8ZZ,-(Ͷ\^e).=EXex|)3E͇C7gV"[Ғq\B_nV4Ȑʰ@Y/}8H6FrWJ(鑷}rK:4e -Go{0O"x+}=j*j䉈/h=-DJ"FM@F.vٲAݍ y{7x TW MD14zNNpa[ˤ@-!c=hZVC{rE rAOA |7 `#o(n-UBȃ2s:Q#^r`8hU`ȟ:6Ni ^%y摼[Rm ^4e,D(|t=p!mśGeQ#ΐ[DeLjUZé|gŽ 8Gp$%6֬w\q8lz`BBT#VMKO"rU<.6D# T:?-`C94NY5q EĪ!UAD]15V-X^h4znQZbL" ۏXY0Q^kΣpi1Ae&8}>+jY"/#<4)46N8VQʏ>{4P"ݞ]&RVBXd\EzcGa?]a=Ok;lxr<9O'ǓxrDn }h/xIH]>])p#ͺr[.~WUFc^n/WiI?,,q ^ʗ. UhذT=o\F=z{ZI]6']rAÚRf̆`.6fFA&G ʇlyx) Z[=FZUoVcv ĊbIPo-Dy]uzX 9DI23pڟuByry854le#LL?7--Y=H+CN)G4Si2|^ IDAT7Ov[Ro3%jVr~~m#ŏXA4sE6ɮ8?'WQޛ"i<<2,[=5q0nux+&UrW̋MdW.clbt|ώv ])uhxd2a<3ItmbLm]mkZhߞ,&} coG=s}k‰٠Hp 29LP՟tq y=m26шpFq2tu{KkS_3sz*%ɫ KWw~f~ϴg~dkz[pbvΟ3Pmh4booL&F{ [WUM} yN E$ïlW?@f>zwU<ʝsyjskbU9]ܥZ-j˲]vwwLݡ %9 :pU( (]=@k2W{1QE%PpZE,M{dC@y`%ڣt Вd0~Oe-ܢ/'ɯ~fy-[|KӔtﳻP[pR9&yYZcl<y"E2Sk( g8iMj< IݖlwV 2v)=C}2IK,{vAyꩧ8<'Y,yq ˮU2 q5zf {ϓ#P ьF-gp *;}MPPV=v1>_'r.˻?Ɲߣ- ~:7nhn45ٌf >?/YT·=$!#cg< Fb3BՍq`|&|[]Y=ד.:"fp{g+nb{o\ׯsu].f gق%WƍZ<[V_\D spMcE-/xy<3F8sn#IOV.+||WLGƇ5O`䪂۸;(ƍ\~vvvHӔ(Xfyʑă ù\<8nM,?:n3uXiDmE]p9XV,o@#F~&m;<*wJ=2 d=(td%?=ž!8cw5]t:%I=/:] 0\KY67C9C}{"]E"q3Ta cx 4Fo(SjdĔo&fY/m+;neg@w}ק r.e?e1ٯQ.)6o\-$i(#g3>3/F#D˵Yz*J|G+.p,L +fDyGʎCKKܐAGMoY:S$36xQ]Hu)p8~ſ,ȿ jTj9|6hi)(pHUUf3nܼ`6$'p ״8r',_!>wAFkձGH:@pݤ)՟<IGPmqڑRã6Ll h_p8.Oj$loosppA9X,g,g {R ߡn cs`OWꞌmI!bs^GI2x W}s5FBج/. ^[4:=ʆok&͗ؓS{gs>?[rh#)/RX'll`}ـ]>ዤ$ G8Nf(okY-O=?GuuGh_D5%e"7 }B3!ɯdM:fOшdp8d86S(9OveT;ʫj=,wm/{-d)Ÿ#ȸIÞ /br 6ohUhh#b2$YHb+LSb;2LeB\ ^AƑK×D͖ Yh4b45p<.|,V?JW༭K F5uUQ2)_fM5d޿̗)=E-ve7K;ϊkRZY 'Ŕce`-C.cw߲ߦScWRzաvx&pSX ;щ2Dc5/B65nt:IM)#Z USZj3SHt}Zh]Zhx\Cu%O;+`b\CuJ qD9uLLak~U_`5v#/3\K,+|WY?-é2Ж2缇=nuLc|KPs(XdޥhҬbH˃(M Yf%uMEnfd=1oIՙ^ lsMvg-klfLTV֕E97m nj"K;e].z c gL+Yq47bKM]cQh]7P>,/%>׻iU'm ;+6f]Oط2q^KՋLF.Ρq^6EV$d37kM2p;E=Q|`KuY]0[km琮O6vYJ{1tR  3`kM{흈""Q g2{kOŇU8Q[.:HY,/͟ 1BMy)\ē@15a:Tˌ@T+SCRk߫A[ȕ>)@{qUIg8svr9듅z@ym1c,P6˅8 ꥪIWkksrKf&lb=}Z]Wal"k~,'LZZcsnrLoJ:j?AE4Qŷ`އE 7\InbkW*F0d:ZQE%"\ǨZTww#Mi #SroW I Z `ZSMdQðdzSԆF] <'PǶE2oY 56Ⱦ+t+ )[~pLcd8y!)YksՅ'v.uF7.5UyI *單 'r7Y #SM} H#TlDfb{v~suIFMm\(o8u=x\1|Q\(qѫ>EZ18^w%g-,]RU3Q)V(zT֒`߉s2 ug1\3UJ*Ăo %C yO`1ZoٛGT˾$Y:C~2Z["ygWe&J?YR9U^s%oBGmhi+g&Ȧ4/}Nz3=?2&!íPmsav#aHw9qyU#x);AQ|gUNޡQE:l@AQklRpm[ $틘:tynR* @̌ \ |Yv|r̛ثuPH %Mx^:`|TQp\E8*Pck0u%"a]`U16S$"I|d}CAZRʹ) Vݹ1oxڣ8D*/ jv9xە|Zpj7q{Uus^kuY}^_t=~.*=P7Av1vsZSB賒 R]! *}〇"JbQx)%['F癩T ^+ຩ.oމlyAs'^Vg.I0&^y aD&ў&@9_(kS" +.Ea S( ɨk+Qvɷ+^1Tg~oylJֻnR^65c]-z9M)j`&2!ƈ0拆sk(Ép[]0l }:{a3HY/Ujɢէ3h9Mzξz)lAYxʫ À5YmSd]IA$`1_K6kb= !XnJuJx E%2^&c+6uxR﹜ N;;eqAyDgD$+f} LGCtqCn*Mt" IKO(?7δN¾vqW["Fu:Y-V6 ּ)&9WW (չW{๎$6A.)Vzf2TL.:?j: PIt(cql2di]֥A҄IP /xQő{j][1խ))b:9~-%תH (6<(*PHQuF$$h\3 U5k-T72B2Iz2U{gֱCW?UCm8?>;xUdHMj>2\a&N1ƈI!IB5i2^U˱ZoX:,.*!/oa-*wNT=xK/-@HMA,@ڡݽ-s3}dáگ3 ZkY.eNF]޷Dc,ߤd,t,A!jT('Αj*W2Wqs2ý1x=A{gm.XjjXֵkf0Kkt^H`@Q9 "kywo!XŴd\E22N"yS)oLD9g3I&IF6Jٗ 4 #jCuZ`|h9mƢkDd8q' y2]y]d( ~ʉ;{AQ]#εq 2Xxb]mL͙ǖz8T.s7Wp:4+`D%hF{Ay}hLhL:gߘM5m6 (H٘G*Sܑ߽(ܳd,ϴ.HX:zSMא]]{JUS<܎#7" IDAT`='CCyKև M$C.ʣej-"3`󞧸[E)<-Q/{ ^uH$&"_]JlLW+Xѩ"B,b!Vٻ o iǟ#dM#[2lJ)HIVGGEC!U~a"tH 5@Dw"Eޚ,.Ȩ"PE-xZp7kG8o2 >#DgO'Ǔxr<9O'Ǔ'Ɵ ~\gWvJC3,W*O{wReDni\*5>ǔg]@>9*7c@e]-k!o4(:lfy,(Q> Yu^FWhW3 i~@~lsK( aή\k]ƌo'eAXu=OW/=WjL.ĴP[-w3(N;ЂcU^I},kwU= WԬ6'~V%MD#-cLz7Y`e%w~MvUC۴Dd=A5Szgw0f$huG;9$=R[՝#4U+lPRM9u4\T-V>i:c^vU.sjPAu8!VDT~(Y.GG`#F Ap:UY6լwQ{p.顴v>jL@<٧B9;e8VŶ3񺴇i%@"-L]Uֻ lT#6ɲ[xʹ)4n09|%$_egra\h}F[G;bү"AW]4R>vHG \=Uz pmّN:}SʲJq~[Owo=7}'6 Ĥ%&-n ..@bk`Izf}_-n'PPT6 Z԰v}]msl{EC2p]T]MdWXiɸ$drԯ$:[}.?;Jol ,FLS&I=2Yd(yZ%sAPb}}*! vYf8R%ٌ aR-%cnu˫kcZiu I9qS$/ljy˻ (ﲸ[lKvd[gQ(Ώkaakka24x6g9SٯJ5|RŖa};=` s$1V9z!뒤o*+jSrեJyFvD q-/#EZEnqL сF}EQ ^l;mRPP*wꦗ=jZ>Gg1 q巴Uj'ei p /$C&Y 5ETGj tzӤ6*̆ m$&z%*򼡊p7 ?e\2^PL*2)m`+>I0Dp G V /6,=:/J+I74M6+~Ry1?Pgc-= &Fa(Ozȸc֢b/j"(8+y.Zrjto-6)$yׁ-Rßה_$EI $"dujrU-vݦJ&$㚘 Q0֣7T78PVU<" I|";w-ΚY5qp19ZlY!QgtO좲6*{/" *$Huc,:=oh/1Ywpwްr[iI+. Z>m5L! "/ [ZcV9ȷIQ\Q;`Kŭ֧*)%:TLt G# !`WSUy)poo\S3^z۔@W%f7iUPupճ`@etQ%ErO-zdXF1Q&¯hŸ%S#٠ExE}V۵sOOJ2.LV2Uy1I-y)mxTr g}%I^JYLi#GsX(qu+%%i4ϗTeI]VN|ވ:%AuoW$58SH2hl ǟRoƨ|ȑ4M G*ˎm!:~F;o>& [.wsYx}S8fl8 I|˅(4&nꛚ. mwp Rd_Rǵue|5V7*[O*N71{ϿwKK9 J#D msZVk<2 ϙ$v{T#Qz+Z(Sz"?SCjy9x .VsXvح˺tkɹjȺn,UY`kT^b[!3}\1(3kW`6d<]31ZlƶOֱmVtr4^UT(_т[j&CDYŁ C[(KuAbuD׹8Q;5=N:`1jvÂ@DJzbXk:0H,;@i+*U^H/Q9:OJm6gBc{!Աv /Z6D:tM&1zhtlĘ($* ԛy;:kڞp뱲Чt|"9R2…F_z2ZrN8n>@CyiU|SH>y*`*[V+oE@YW&o6~ӡPbq1 SG|/P\ $zT;".q5Er:G4ƸelK&-?Ғ?вŚ<(Ge`;LEC$>}mCQÇ^lMjeNPUfF,RjsipՈy1C*B= .@Jv{u0 ba籉*7ڍ-x֚0DUsF-@js뒗b~&̵I0H [P|3>q6"ra'0\FT*v6m%OT0Zm#\޷nP[Wgc1%QC;:.κmp]-xەU](3$ + ! . %}S{m[,*kC26N _O.BXheor[.GISQy~uY%S\> ?NB:Q#x2QbgrF(E]o:FG#6jaqD$d")5ITKU_ymrOuyFr<ׯ&u9u)0N=qE`-Ph8mˤ;!&ɪAK ću 0N jOa]҆*O!|A:O|J|NzGc2_|Z~{3x%2!Kj[Y]S/y!8Hֻb֢hTsIU-\51ܠJ"ɪP 7唉A9M:V羅cKa\6 ,xp{moJYfxJL"&A<zYd}"0] *1ܔ:/L8,dh"xYT>.P2O.TbICk%$|AxUyEusH5u{hz>0~l$ۖ-bDDj}ιyAn&̀86DTzKv1L~Srҡ+ע%=$<*gd_̳IZ:NqrSUJmU\8GN婪TD~ q5vEw_.blvMox5luIōΖR;<ۢCL41R\nGzގ6GpIP}W#B~e3:]MU^MUM˼D|xfSkt *[X xCoUhlZ"ŽZ~3\'^PQ^%[_z`Z\PIj]d9-&cGgHRHoIgu+9MÚjFl ,e1hM#{e#i{,#z^2DԷTljcZ (uj S'L{j]79l,bOl{,yCP6j}/Xgw;HʌG3c%hLtyo”ŖTGΤ94]ٙ,˲qMTٵ:y+%"':{P#l&L"=Pw!OW+RNA ^ [{ +'nr8eΰo;dL˩mb l2" 9Q87CPWD!@ׂed.}$U ~=.!r:l3TN.R]l k)h$ac0nA8ZiH0 ;^GRjdsɣ!|eH"aʦj젆꜖r:R1in@]RmT]N 2Fy^`L~2vy$uj㘓WXKM̼b4FS""nKeTEm#rI <WVتE 'mq̣HM>j]>p2=K (eg,wBzVvʢayÅԌBi]WR/NQG:Scx|'L#)o6+v .@H$)5e9KR;"#QJ算IEuŢ_5E4R#=8_-nK]6n ^v1HL=IFP/?ٚj #Tl؈_Ӊ5qŚDd[ e-TF$|4뿋%@V"1}=x4ذa__m|/ 9mxCiH7=$wptX(V/!W7SkK'V~PG\vϞ-dw_-mC%%$$yΎߋ^ GD3I4.؉@JkҵM(G[~ސK (?IH"OgTO{,bx DȦ,Z2~CDXjɔE8O*(OٺQt*:ߏIi^ `sȶu_E%[c .@KSEf;M" ̘EB&pWLZ b'~C{nD^7*5DÆ-JH4Q<$0H\`M~"B 6BYt xIdP!jҩEOB@ S|{Wgqs@r:,Kd^EqKt#hEF$G? x,܊|,bHjM䫕52a3X?(5W= wO'Ǔxr<9O'Ǔ`W[5媶]'}֙"<4 x{5mH:?4ŋشUWIS>$`I]Dj;+T%+$Q/qAD:?Wi^^SRx)kc-kڹTVH+SaV|FU0k.^Am`u ki+Xېhk_ !Mr>>yjcGUF$z=!s.I,r_|?V-uHǥ <0W'K'/aG'G" ùąM1HT㯫O0<Ƙddo]1>c`SKYCf黴s:jI O=IP}w'o&-Helnn\zYcX,+(K֑9GW(Vۃ&b2IbY7t:VCWLh׵|;Ks8x;;; jL&$ Ϗ&|zR\nٶJ#!vZIUaY> 5Y`p=L~GU!d QxH s/zNfgGó \rk׮qUڢc6F(f^ _}:Ha)4@1&5Z KޣEILCĐ OU Pq(gӃ02wcww~0Nxv4G9]KiQR$}[Xn\jW U!<:Ɠ/j鱡3$Q4VLsF/ k,Z#Wz] ms ̚'@ϙpU\YEg'T6W^e]\&ϟ8UPNaUSiEPYcZf y:j#s-U\;7-lNN}Szlll,(sLS1/gt]dlkjJnK56;'+j*\M niطjBgIq4tڅ+&I_D]UY-AL~嬃S|İ񚳊8EI9r l&ʟD_H^bU3wڢRM\ak(UDMu(iΥ.ԛXk1EӅao㘬ݚ15oHQ9pMEVO▜pCW)hE%Axdj {YNm-^ehO[@k=TLUvQ_S|j:]ZIaHT@zdȕ0.as" 6?*KA-heCX켪*j-N? Rn;ثW X_k_jAٔKT9RG`UjRӨ$UFwNzU32R }'$tKy_[:iI%|ZmWPLZPXǦsy]IRV %x-D6.᪨w?C;(SuKLU]1j%j%"; e\ӦFм[dYZ+f=A򂺌 tեFezИ2AC,f%r(Qj^^ b|vjR>RgME R a_DdP~okU]gv۪*N*FVWA1v=xI ujseC-7UŅ+-|/?w .%r<y6b2un&>ge¤^Bs?5imjCcEJ6Uml 5E,y^%I2m_&8@{ Rf:3lb S#t2bVrK i)˻?ZJu:]`1[/gPY2{ʰi#'m4JJ 8[X6T QE2dQ]ٹfZ>b=0g̏Xb|y/sSBU%\*uX]BZR`Sv+I cVE rLH -oiUP3P-l| !A记7}*UJ/Kl+|RDt׷U5ĶFs 3v,hHۨs*,TxZqn.PaKJ⚢/צ^]SoRVNϩ̘fAfv7kĚϪZ : xap d>"vT)U*H*_"QU³{]-)#R z*#7!kQMm֪Miw >T=몽6N)y%MRrCj|N\[{oD{N]!mu{6 *b뮺eu$"iwawSu 7\evMrϽOa[kXCgviR; cH˺pIdLq݅&:=x[ (:d+8mnCP-Xyݯu֖A4m9ۿ3BفMj&R= Id9[Q֮Gs K> 5T+`IJ䉊țf5 IDATոɯnmk1*BoءugnrZGK.;SCs٪ʮvm* m*}_go |yN﹂wyP;gνįcV`I\D M@ceq<ϔ$iE\0KFj,в$8 ݆g\G/ro"BV *Qř:}{Vs"Qh5 ]k 8\qꦣQGBڟ1@ .1oZT;Dm7 j,qzarYZe#Oᦚ*iU|v-[66[8b&~Bt%kXݗS.R ujx~'yU,oU'.3k+8„!|ϊ!Yc.}hXBǥ/m?3Ftˑs݊$mŋeEJcDƯhJ?C5<>Mqkg%61B7HCSJg$!Rkrח_i_|lQg-'a˥nq@lcg<̃8uE3krLv&hTy`*dŻG}+$~ѥ0lt^]RBtaRx J|Nz{;gmty:kxZHrem͆^u}Ebg%Tx.}1qDas[k 8J3}S$4YU٠ Uf|2ztƷ7Q{Cb8׺;"{[387N0tפB1 n6oȨ%Umv0,uRUb) WJu_~pX1C^d,e9QU}b1\Vy׀E節=``Hm eflka/2- K*7Zd\;3. v1UƺR] KM =_R(u!|+2){bH["vo_,Gn@]c߬8-m6(EQp Lq;wdOT[`Mwv6_8Vw]턯ٜ;ʊk!j~o[p#waDXqI:I7K"yFit,Iڑ$N_3p_U*|OKՒ|&Fp*mnW?9dVS%nYUb{[^;oQ&{"x!֊e H{36|:b#du$l;XMB}i"U/-`3ɾ`zޖljSfz1w|E9:WEPjp<y#,"ɻPH貮+.!j>򀎽-< 5ZL`7~OL%P1%p"@LX0ǥ xR/ѫׇdԒo5HEԇ\؇K鿬ڄ6M*QuTf/Rљd6R-w궰^ ܬވOmi )ީXjv?iE 3璭&5s* 4UT3GކAE*5@ bК6ߺ9Bfi̐䶺6hA )`{襧z=DlzLK&μGש+npٙ%mS;>uX^R. $nIT6Z{Vg80XBc(HG]ADV*yc)ϧ Ń3 V 3ٙl"YωII[2϶ 9ȱ"wۨ{8"RK:/E@.hiv&MZ*4 V?g௶֏\pA|ӯPcD:lI7rpQQ3ՙTLUrq}}WF0}Pukz(?WuyEp?6H-Uڼd"WftB&U>S(@@Pο6\}'W5eSo>h.'x&_\z5aBj=w]mZwtV0YcUk*6Hx|\D _D}DFj#[{4Bb"t4䍥ۮHNj^"t9ҔXm@;'v'"&^C>NcG6tUkpI@󰒦ʫixI' y;5RyLCXU% D_1L6Zg5spJD`S'f<`/Ha>^{AڊH޴IѺT6\kM>qIԃKW_CqQD !yM(n2ةR)eH|T Ӣ.5vB..dˢF_mBL 2/X%Du? Ȯ֤,ܦf)CE\RaXq;y=6ۏPy!DWyǑ!~/VٰbXFUz)EPXiHQxHJsQLR" kӈ#uUa9x;52qE$yDZKkNFܑ542`!Cf Wy䊨q ƫ`N#uoê"}9f,Wn -1X6;xiUu#Vk:sn|? Ij7"$it 1Γ EGj0ނ>h ~/>bFDdxpZ`6U(x]&c)XfbĘ YV];UgcV(on(#hrU* #i #Io/I+f?Q8̷/P}p[Un~[D^w>#+Xg!}:֦JMt%A3""SCLQ-,>]uηEE9EW<ˑȟ"S[Wm^bexM>Z&u*P;7+Oi9UguG"ro!b?N u 5@?6 \zd%iT#I&&'W;ߴEwӇ?V^bDp?5 G\1!2-Ie_?u`yNB[60kͦ5o3m<&~Ngv郮ڙTy80Vraliۨȫc+fQW+k^k"7+xu%ږ,b+7^2&%O~avFyrϨCt-2,[X(V&ď"&$aћ~2-7jK}OV㤦. 5i|sӓWˣFʼje >~\}&߼m>{{ VL-I: 1mi4QDkM_qポbɡUcc00us2`YAD1Ho++&-x;x!a}3ݭ?@||;{xG聟|=)x>l[%sAx9mN.<* P VHI=Vh&{,No~fg'TU\1cvx΁\rׯsvww$IBQG#1>iUq%Qgˊ%=F IebۈIS%nnvvDsAm>)ZB\K:G~v=zmW^e!"l6c2qlďg\-gb,krZnSRt_v>cH. \7e)`?'7Èveoo]677t: و&żJZx۴aMym,8UZj 3U$((nG\1YVVx̊6sls?W$lmm6~k-kgc>5qzh;;8%csƪq*"2&e @FPQua[K {גIj (iIP()ݹkr{{M& ?:1 t!Q /SrOMom.ű l`έvڪk\ L3MWΎgPkNy\갳sDL+nwwmɲ`Fhʾy*bZ5WI0By[|PCZ *z~_Ĕ_R]]R[qcq:";y**bWn|҈|b{zZ )t: z^4Mq1LdƵ.je:דIM@VKHߣ䖖><OdDxNR>d>S|5j_&ԂĄ[subI6CcO#8Iܘ,Ȳ<'|fkPk`XF+l[]$Imά^$S$|R>p2Rei ;!s7UkaˆPukj U% Jo\VlcS:;*[.I*_64gúg_ӒSUb(MGNRugH]91;G(_ӂ!cK!Oh}giv>6*2_ٷjUߦݴb-xR`ZyLw#NF.`:|A 97G9)`r ʆ0\6B HImޮ.<ḉ哤UҿͨCI3f\HUsO#*4,8~ru]Ij  ݹ~MD6J*jK踊!-fs`E9bpCGHa D2_:V?$RmlİR;NxQRL9^-UjRfhyؘ 5=gJL6=&ԗAV nK!Myق9O6 4R斵5(taMFbmV=>x7O-:%Axdp܌@mڶfe T7*I/bUQWJ]ʲdle;pלmdXm H%N?36}x>*c$\d7fM@Z[Ii\OD̏Ul𕽫 2Ȫ8UncL{MƮmjIs5's pU+ܚ!":55W ȳieu[;WU=U7MI6YmZ Ɋp 80$·H  2|?F`b$)"%HIıS;s^p>wιVHwg_^˿fOaH]Em1v٢wm[g|CSt:㫯֢яxyzu;D]s+S[,EN}x,NUQP_`)lۇAuGU36kP_9ZkrfM {K xNqmpڐf7<D2H]4CyuMMV*(VCUj˧6f7X?:==U:Z9L &o[ع'kTQWM֜bi6Wrj@zn{{CjzG xM{ו gIE.轋C税G-Ev gy8]D GŪT[@,#i0& R[3e7[Z_ܭq$μM ɕ'qKՖg"q[1Uq*+zPvIh"jAh=wmF7sME2íhAQp_7d;mHw=W["HC$o>|gK?SǙN[Mks{uu)tIf.&wV} Xk~su>dk;*+[biek[ #d%T]vھ$&[u7kDֶ9Z-jUmA URX%z T.S*qT=m{]zsM\zu8`9}&<um&Z㚄ṮT&#٠Y)[-嫮X ޱ)r~\Ld֑&׳7\eXlۣL}yft%9"}uiv~Nf2&թZӆx}q=09ɼ]Y$M8AfWN@9,O^g_fn֖WK]}g)0Nj3鍟5Q؝/"Ŵ(Sզjz uϓ:aI95"mClQH*_s P͙E-bHC7UoxI=ڙyu ؿkS>νyI6xƠIS|C1K6K"\,ԡ K:1~ E/c =^n|٨gN*p ~qX.f}L~K] /a3ֹ3?K$5 ^t}ž vu.+@aı+X' +`\0}WJJ,ukTOKW9S8 u|-\9$"(qciy΢}/sBc6(f7IpŠDR&TM{|<"3.&PN$l6k6Jq,_蜉X^ S$Z2KƳjrO-'>آQ#up bGߴ~Q(S|E`sL%.s 5=\*/<΃WD3|`Y.0KV8{:F/H`OJEc)9<ؙ1|>Sle &b+l֛(+ BԷuD#ē^VXuQ˗휯U%s8u}[P"دGQtF>זQAfDel=S-j^,d=-gIm[xK-C]Ձ@W*t,Fb˶*COǟ9߭J ڗ:.NHfEz=s+{18c)"MǢ}EFe긏{#ʤd!-m\"(GWFl|m^h6#x:) t%?TtIvhq~\/f|J6;0W"X,(˲b&:,"T7;J͵TyŬ%\|K4ʈ{ |( C̓r>ժ*LNN>[` cUi TM9K4m(Cby]]u3E[{x /%ؚai"ҏrUȍȣ7eb—wmaPvqe߃)lAc>oYdR3W <,, : 5<Q^zK:q"ۗ2b*]4mu 6B*'.;݋II]4 !Ĺ781HA y(3Z0u#1d0$5ظV@\FQg c$lX,‘a_KE6N !˔N?"..(0EA;Pk I]"zi3 }\a_ @ŕhiyFxr<9O'Ǔ?u*lkښn67}ܺy~u]Tn+ўDNҶ>k.]j6:&Kj[C-5Kg۵6K: l[HR^* mc96S}9])x]j^[GBCm^9"Im5nC^HZGHdu7vvmumO6YC`d)o\.K3(kjgk j:@sW--[r3{((kz-G!#2cB_a]*raՕ&B|ZtT#{Z2$+Mi{z\>0fW3Aݏ^#U/cڛ)cQWUWmy&X&@YGbƑŒXWold071_RgVEu2}IzaE9F䛘~1P[Wgm)(]ʆKI\,e]j2<7z佽+Cļ?}X]jHZZ93Uo}N~WǨKH ďf 338T%CyqƖdNDN0Zx{W9a @y@ה.[w:bGS&>SΧ~-ί2(cL8ʹij "CLj%eǰ6}oF }R򏩭~lq~PwA1}~i$7`]psV* oZ=hFR𶕸XFS/<:׋ɧoA mǪrzC526gZ6kHL^:=KË{yqm\q|cш]vvv!^<ϛqڸm bQj4EHjk~)M>?uӯ>!3x$ 0fyx?Eg7P[4eш}c<@D ᪪9w*;Ra2Se:\"{ fM/PTJ>\1=uU,avۻ:PU(\>lz#jKܡ:ز!"^}tR\ &A¢E*R9c:s\F %Xx['(am#hE%GNn hm9=rVw9w^?o9ޥZ-F/_o<7eUVc٢੢zilg㩟sFj@zIWu' +1X,V̇_w5*T7ŭ16:vs?i(uR(FMcx駹v1 04ٜNg|zVr*=9e 9mz]xT</`e3V}>+]|kjy ˣv-Kl71y6x#$菡*U`qmtv'k +Wp5^yNUUsɄ&3~dZpO^MT% GtlKYFψy2ShM `CbTE~3]ԹL+gZThƣg UYw'71pȕ+Wz*W\1ed2a09]xx Ym]$3IƑ(Lo%o^5œG l0Su YoGV?;` 9988ʕ++łd• ?:-Zz&1 sP㸩7ooZ8SD++3C ϙ-K:u<#Z̸8gW:!f[mЅُ^W*)Oմ!(5e<#"sf0irJ!bG-,QP0SU7rM1P۸$3>Cpsm(mɼl-yqG_ *Z.(z!}8::}eY2Ly|gEӋ%`58^16-ܕk[(oTshIHJ5(Qn 1=s~D" >xEb56/۽2>wEkXÞBP15ˌcșSOԴv7p|A+\ IV͞ IDATZxԤEt9W].J2F~GO!Og3>YԝS7!ᐃ}1s n`Dž%b^U 4zx7p&K.j0T[wPm9_s#c6A7I_!,F Qi8G+,]!Yӄ1Ƙzt'{NrJMMbˢKEZVuKξbـj>Q[%D578ޛ܃Mblx*bG?#"?UGauq0h4b45S9/\+Sn%,qki#n5}*T.> 9>s23ayb} i<{W_=n yAuF!; outQXӶ=5v-T]$&[g-vzVK UU1* +*C鿮7L0TZ  0aa$u`:CkCnV(]ױ|*aVp,VFt-?-яf:5δ89?T\NOٸ!N+, ^ZW:jm.7Re p t"}*TW:לuv^;j ]^ zW[Fe$ZuiWdM]6g;W&uT9-_'TyDk-R+ZDLK\Ӱ:¢ksһt)/wȝp)Y\UKež]sx{]gim.A${'a 4+Pg^8Uc_Gb&JibZ3s6fw*UW􇯨 bLdJ1,d\{CA☢tL8XD@9$k-(872O\ 5V+<4ϙ,.!EPId]l[?OZlGCU"$yk9AD gW6:ȕTKb|֟gLZU^bاQȢ"ԟ+dJ7|n45k4z]%yQTJ,UMTIA/zֲg݅ۚu$e l |UҊy$f$p[ !E]aT6^Qע*˰f[iI[+018RE}8ge`]i|X}c=ЋY֨3=k SױhwY~~$Ç׼@ɬ uZ e.i! "ɎsdDX%tiƴDUVEa.eUDo4|] Up݋HN0N[ycGd-HIm:C[ӬHu$)fk(qkq[:~SKbW/c黍XG)͛d!.nZXC'k8n*Fmiԗ Wi..pΑ,]ۤ6lb u|IKյ^x=ʒwypElHfUl7¤]๎i@5l!8WX?x Ji\lԫLIԖ Yl1o[oЋegjy3QmcIZ>OWVd̗naiKvu-:{/$O+cd u֠ڿ&?LT[j9ء2@JtTg ڲ6m$f%\Rj&(&ҷtW.sF]zY6__ z'ؕҭTe)psdTtךUHu렫0|W*cjuŶsMq^PvIJ\|9y*Np:0kkk_ve,S0yK;UzӨMPà6%.IIm}M)(axNͿ"a:8uX;.oY.U?|&-0\ eqCP39_/lNu0G*\>bW s]]ۂ.R%Հ*^q3+΃%aQǢۨMMj)RۊfbziC;LYovהuz?xfΧq[:׹+ ﷋Q} QtȪuWr\DV-(d=4CհkIftC/rvj)خ׽sMYH^zK*˭]""몮[+ԀO`Y%*Dow\!+]j{ئkJD]yF\a ^lsov>#d\F2Tr$n$ǟC9y~N\;jU˾-u3*0y:ېm!dH{uۤdU^;״kM?" yMm&³QvAx[Օ,;,緯c i: _b m-LunScmФ=hYin$AkA 5{9KYOfV"RߋԤTed.SЂ|j5fCA:TUgܔ-JUWq˅ C9?.lm[:>|T~?zV+=K̬WLLZ!m[ -@KHiidHB61hj#HR/ozN2oWE95r7xٕk=13"eyb:uz5u[6SLMSԫO\ϴ&v*fA{;CdYZ.p,0TJ+.GanY8iχɽZ:X;vWղ3 }p]3Ef9JU|3k[e)&{M]8󈸤;M{Z2α;Iֿjz]DD.9Э$n,e2KUvp]2"TF탄Âe +؍/ Tn3NBj<`~6ԧoc/9@F{ú|WϨ1ly48vE8dssw+eEt~%5O᧥+I _B_w >W9ii\ | 7Z,i:f&lwULJg Id\g0UL{j9y]*y]^Z唩Z[v,R5$E"{j;0a (BHR@Yjq9n]\7r.?}]]\Uh9YPU-`Aj.rǏg.c0!0MZ& 4mҕxRaqW-c|*[7"(]$8hj۪M 3^ef#-Y'yo`\hY+)KUh,2D5Y}Ee{-˓cvSW/V%Eõ^muk.<)Fj̓e(#iض}UQq=YyGӅ`@HoVR =jsi϶+j7H$8Uf8^_ T-8*(TUC5Ty,"`ԟ@m_! 9D 2$ˆF&5qu|Gm]J߷,,lg }'j+e[pV}KUetvHvS} uE&k0n'A-% hKu E4( TN\!yo$y/3jYsʩ**w\u5BMP .vT垭xݖ|-G䎳,XzwTyG]6q3Fǂ -#6mCX2 x?j)d^ܡ%Ö|%vZ'X70A.PU+D&lOhm4v% &IvC1uUN lرiADڈi>Бb ;~ͩg}Vw4XTFfٿi4j41t;.m'^I%-Zb onZA\d rÂZAWx7nEQ -NI6=4= v"T`LW]K׾ ;pbZ$t&Ⱦu9=jf/zQ -;آpLŔo`lK ģ݋B`9]G{#/bŽ\lK>K$fYu6P\k;*R{3/]w-7ʰ{ˏ xm]#Ly*$9R w-$ےK_$n+w<@YK6kÞv۲xY宙q^A;@l kw_;Ow7lUw# 9˒({[St˶v\P/8niElņT'd B7?Z(."mpxUyը,"ZQ>!yBo/?߇%jۋ66jy6 A ~oFv=_\"H`(!Ǐ"ǥٶ>j* mȃ~0ĕ,{)m+xPv߃4,Rۙ }Beh(gVE`2ŝB0RȕDrBW*b?QX k׃jb"v9c@H"i|,@A/e1hps8]l]=䮓DATy +u 6MTm?@c(eۀisR@d H.ym8Ty7^\R%- Rҥ6`nag:?0$M2I^*Qm7v-B[eu,fܽQi,:3hx\k\ ܬS Iښt5 okk$8}Pm3 )kԩv*d mCczN+֥Pm%mܵO+ =zmY#QmQ|tA m%+VhϮPx !Xjz]l!"31&Ar@RWi"YUXm cރKVXlSF]Ύs$"EE@s{@&")bȟՖ7"uF֮e望/"p52-Հ(&Lo Ϡ8-W=AjZwЅ~ ~Cms@][_^.^toy"ɳ]#'pgUW'6MJZb//p_tm WBmdžf:+*S33>)g|3KC.Mh vq*Y+go'-cg?][oֱAY#]msL|hW^˄8[B59ˮ|[o 7C/p9UC R S֪X^Һ ==dX~pxʇM|9|y~c%X^^Go~*2.':^+cgb7Ue#ӐG*I-*)]1ߴe3ۇ\ A\$.H[MOf^A nūlHyOR"y&7 ?_>SLNƋou+z=Fшx@ 2ضnz̻XKi+Yے{WTmM|tKgH: l /]dhq~,ŝ7pf1`xѣW5X06nvh!O=׮]𐽽=A=nf9䃅UzN1"u۶ɜbM[T</`E Y۴M0q([ 6-K^?.d{Wzj-ؓw!" Cz*׮]]zeY2)'ib> y50ѥ#,eu{ 1 xqV E*XN;79::𐃃vvvM N W r;8rG3UAѲKs3Pa cx NH4Y3dGA*md1j];]1^;V 3-ڿn6~ſf8?&ܕ+W8::boo^GQ鄏O ZU㏩oอZ iX#tϹ]oe1ҴLhMRK" ~W{ɚU)/xp5M*>l8P[)z!%888 ÚQN&p>㳲‡z״i1 \KVq*ʛ82UZrM2J[B3@1熂M-]iM nY#u;Edwb~|w~A1ưH˗9t:OM :/qN/hɟ8 j :.SCjrq/@/PT3gkxIv1%b/52D;` !\|}1s~|؅Q2R ߤ;tnZc{(7q\v1VpZ RE_ M"/mEtR\85v- ^y.(,)OȲa<7.Nye:g-T (ʷT[lOp]^x\[(%jU7/|6`l&RqUJ>5]ZXǨ 3;Wg~%3Ʃ$.e๢j槁]+nt,,t}ք#t[Q10a*7p6S;8c$ym7|(USp+˨"ܟQWU+_퐴 0\B*}3bz 􊪂s Osg8699cL{(kSkc TyW^p J`T1Fh-Zu/ǯhu 9e'lr!,AH/dyWu6i:雦/\ HuOLWT5GUS3cf( *,yQ>*o☭݂ l.91aj)@'j3ؼ}oQ5PW_/C1+#C3U忊dd͵=-1Pޛ\]asz,6lIE(-KB8 HA^+y@)yJ`D/~; (QI`)fktW箻>]MA]ܿ|wZZDJS"8;TbiUCI{e-~hM)1(q|'1 ,YfpGe\${e@KZhb%qfk D?`rk*p7 Z*d/WiqaYLDOb LrmzJ_NRRFj#X̅HD]v{ReW+ ^=5 FkX[ H]'nL6~< 1ط&όwօu >2EAfݕK, xJ 0-RS1Yp fY"x@1@0*I<̪Q=lz_Qz`5q $)m%M9uTnH95>L3~n1g+RK[qOs7, T e9j`ۉ5[0.]]]ˌEϩKI/G@ u1vxKX"]c0b䂀 &D` fN{-|ETG(;\bQ"J \< vuY -&D8eԌREZ$ m[9*nI*{w.3ưpArR}E)qxZ Ff@ޤq o6n+/[&UT8qDhN=[ygilG5:|85 4PT\3ΥudJ,;(w֩͘Mf9s{ nv^8 ,KkS@kߔm4M)`4o﹋',fl6"'m risTށ_z2 pYfl;Dtxk P  ȜKWZ c-~s@D AL]l#"]/ 5!e`ŒF\Y f{@ tg <ےz-*s"+&wؚj$ʆ.Y B:oZD@5#4@s~6w=§ 2GĻs .{.K] A~V"Utۆx$T\OlP*͚H 37-0Rsk:WW4~=P4O.߷)S]GxAx"(l-p/ zW|BEvk mG,|fNacʆsZBTU<ϗԧmx:\FԴP|> 1 yP겑C WY{m j6 1ۛn*Q%Vk%zI4Aoc*;?f!AQf%-7߲Ny0S^Eϒp֦:'?9$en?zfl?79.4]X;C!L3An/,]q1p聹J ) sN4ૉi>0.Fʌ`(\H)uiR`\Yn@'5;Awm%m)^}j#Kz<U:xtp1m ylQ/I8uv#2v]f</S!q̂V`Ɵ9U(EAyk[%[NvkgPo p߁70m]{NH}!s#mbagXaPxzy܁WyxP5Q2uKo<'laMUBd8IG֦-}2-J{[&iSsQ#q{H-^2cH WI-}p՛Q> Ŗl1'Jf|B9El*K'u3w?sm7M Z:ٿ!=J!)|ąI{-cs|8AR ԝ;Br6CղoD'"2;wHvNl^(gf<DŽ ^zђ>+LqA (\_AB\{LD ; \wq/[)[|_@E[؇e[r* ݂y"Zb% 㟞`mw~CD.5f4MܹRf⳺=((ta-xu\b֑v)+_3s^G$N2ŲS;`oXH JAX6UmSJ$*ӫ͞{\ΪtڇJeB4*TJVuǡlcK:0K%~%hCu#EM/m?23*Jއ+\0Bcw?0͍ 6m_#voR;z#*8rVaI҉RllY*0,N٠@U\y2c5S&ǟU9Ϊ 8o}8lB阙߄(S΄0w2BTQCĒIo! .t2 @@kmog-dc`g"H }-ė _3n*Å]ߛOVoVc<D"ymqϰ,T=\gl(Ik V @>Жc(Y7 iubE`}kGf72%is| S6rr*l悔LEDŃvJ-#ֲZ< ᯔzpS;?;zwIK0 !1ގnaoomkq A% u[]_l9bg" J l@mCH?xчʈw,qGSL@}\*Lv~vK={^j_C(zAMl)"BA3׽?\VHS ^(q+e >S \0u=.e嶯4HE?[2&Ϲ,fI_%iz4XPDf;|D` ~g+edA"" ƶ:.+.32L8Ճ4D JhWMtdVP )+GRĪM ^0q,&%lYb󞹿uwF R!b<̜tF{R8 7e.E rfnb~;WTo8Nl%mWa&Fb)^|I3LupQw^΄S~!rwPUc/,HFz4fx)[Ԕ Tv6N8 Ж%BUUƳT-fsv7aB.g"CP::m/+6eXq?JpSF];?;!)nQog|&`K]_aǿޥ,b%Jֽǫ2H" @sQK,5Dg9B:R lUr5)J{hH,_T1oض}UcAXf4kX?6ɋrzc.XHv'^E1UYt2"ʥޤ.& @5'8s;}KgBdf|p}cX&_ɄLU;ˣ{$+9r,sl*ׁ=GTgu1[""R]&.BdP&RÜmS)0DJ0R$YoD-"u Tߓ 뉸ڟC6#Od± Y`Qp.fB"Ȝ c﷤} Y,cM4m&Ÿ@{{@D|G2Li/ 3$ T$㎌4u.D-c9xz<=Oxn~ְ ⻀u,=okHvbO\-{~k@m>0 :6n2 0"W&*<~NDHQPk$]#X+GxSk:TeجNm6-ҭvm/DLLK^y12;m&0۶ĀG qWjaܡBבy^nNi#3 x])`>f|Ƀ*"=]GRH~k 6@CkLQuXkQB=`K0QJ[k+ k0֑iZ nQË~*QPiBD}J#b{EÚ]`ctAJq Rol5Bs'uFZi8O٦E0!P%+Cf0l n3svu-}J:s[OMfb"4?.EBpHJmJ`ͧTM^e[ճ/) ŒH*"*۪@۶>u65Xʿ_Q'5Z W| ck@ZMjt\QE}.&?`7bm[1cZc|?rmigIgIs]Ul1Cp|Mus V6h/;.$CJ߄ ߇)~d[.fSk$KDJBiSُ=`\qzY THI,Da nuX/YR5Oﰭe#%Gk$ .* < ]R?0e3;Iy.qU`1Z^_'=Ö<[NbaN*6tSǡs)sl&Xѳ$Ctv|j,Ubp8p8`0@oN)$mapfy8.6"qA8)%'.u1O*Kl",ft}<6T.⢅/ r%o",2 y=q9I[ S)=p^vvvel2K|rZ'FJ 3NۨU|wCI^2cJ` g!h1'.ЬgTRv9e?l(˦fP9}7.q1H՟%fE>3]` (Z0Ccoo~&' ^r1dJsc׹Wؠ]:wpqshfF f/.l'j;6/FL>(Z z1l6`#w/;;;8::0at:xW'up _߁.v kObύ-%< cy^OD*Ʀ a]E$-,fWgk- FކR ?;cd {BQ#6STUKvR0}0nbԊKp[l03hW%M9(ƒ:U[uK-jE:Ӄ/265آʧ0ǀF!Ruw:+9]( T`nY!U]JF gt#r0q}5T_XM 6/UmezJ0B9>&n9`0@$0 ,Ǖ,jwgq iL!$pQsYb`"˔:ESTKMAzQ$y*u]U7|!S9qGFQ|l6LJjxWmCƇ5X|Bes0KcncFJW)Q)pu6g!ŶGW@K;Jl{PM/崑~p~^T/ |x^` 3`|+\˘ɕfT=0%l羮OY?YU,@cox ʪCIDh5fyf&- E3qYkHO030/|Q-TbBoB\ayt##z &,~#GSK5RI#¢րQEEf(}~X!_xf0[29ܨLH5&ƘZår]{z4Ax #̀"Cq "a7P۰0BӜuTf>UUL^"-1T4*|S:U-LPD7~J l&O'+ UU*K<[hv0[Ym!ʰM|_jHb0ps3op5pl_n[abS*+ uv xUUBz/`keEBndcxY8aZmJ:R"呱wQ nz[fpG`n}0PI2la>pDۊ#ؾ`Q'%.WZ/b hrH2BPob> S ZI ,r^` }JEpX? cauF[y4 AHc@,ƫWeo%sݻ؅ u9=h/j]|,@p 3bCX}*fv1,<ۆWcp'Ii#(h:,i-Bm:aWT) jsTGU.7&EAP % kEX8x3.G@ И{7`X߆ ;)Yv #-lM Z:bjly [yO34)΃7ZhM0p6YL]Aަo (Խ1lmI ((`r/>ݥ6sInF,XĩZkUb|9c[&3')y %[B.fO#u Xm\qbv]NؽjhW4R2I]Y8fF˭S1;fmۓ',fN=͗âܢF}C=N.̓6hQ߂װp}J# Aj)w*)eKֹf#apse$;߅śg4E3Xuٝmj3V+q@Rl@Ge+.5upJ֒ | f+2gosܙ%? I~ѕS5sxMEKDU-hA[Nۼ2Htz ZR,)'GR'?#C])3]?ֱj.V'y]H TMG}Dl,L퀖4-/rw-%n=-?#\i[#~=נgtK\H԰'ZKYm3J7׀,ȑeF@3*֑ws7g\ qK.o5=38f M@DዡAIAD [eK{4'u9Id[f[C쐉m>ֻN 1Zɦt[‡[2Ή"Uu.)(" *&-a[!l͙[9evX XыPK6fNAQO=c nX.yMx {NƹMn:]σ)$H-qT+\Mu6( u%FVrrݖwtCZd#h@<ݺ|ߦLusH㉊(ŷLBUY ,oP-QNн[vuMbe0Kq9k&v|&[Sՙel,o FRoś\2"CY(IȃJWEVʪq&;Zkᘟ2Y`26ιKTrJ2(C=D~|z(Iꋳq1i* I&˜WIc;W@qջd5$xZ].zrkK|"_/z 000vRhZez- SGsl@IiHkpYU"HЗGx+9H$ \&0] .i% ^AڔlɄ--NZt T9.P3w;ucXwf92%w9*.RH)@)p>k*ʬ+T婻km7.Ca1lm#3 22| 33Ƿeз,JnÚ7HN_`Ukxk[slH,u8 `|@I_9zYBzNoLoK}(Pp) XۯC #k0#Jd6Ǘ9f8)yB @o]g){B& ڪw;o=:ɈHe 0 ED܅.Yjf1$qBS`aS ~CH ؒ ;BɌ_(gEv R(}/OI>=Zy sLGђ>+L1&1rPpdÊ[Ɣ Y/LިJ!7Lo)J@W1>,x>lcl/>gJC%t/=&7a.;;˲%l5ǰa Jl%L"` WA+b֑OZ-W%Zi..E&3-BE^G$歛R"{ gz\ Pi6DI jgXJVŌ̸`l)]=u_R.R;2lO%)[|fV% LNdeuOP¿;ɋge=ai.,MaI}ρH-tIZ7dui z X7R;q*YUe+ Ztmu3 s 9L X5 {>C?N\sҙNQ*|*8Y^uorcԯ\)lW\^#Tlqo_f-p*.ֶx8Ϋɱk ]4OH6ׁ'O~&cb:#$>iM*+fLJ13Jfܳopq6(xQ~E3f72%is|=S!RW8߶X-Lzmy(`cy9ci Ps͜MU¹[[ "Ava,4.D )YRC@X6}@ t-N8ce@7 yp 0V3ǻgPRlG2u±,9rWZݕe{K5:$*ssmt:EYM=ړ8#u/ma!܃D; [ RV7JK. )2 Ex,e>N'*"d LLZH>``ZRpXm ^'g%}w";`>mm;ާ wOU @|NW<:ek>Nr6[GΡO IDATJ6x^l8 =_˖pXyuVTog=$SvzD ]JDžB?V  H0&;iC`y bbEa.Cc{Xɳ-Ḱt.T='u^${l:hWFv>P͔Lzm^lu-a9zK~"cOxa/gcqUb(/A6yu_2q-ć"۾5۸IPP 'ms=>{T;8榄&ք-2[o=-mCmZGx "5vvppƧxHay__-HT1Hl09"i&>E^܁6wwID&$彔귁kPrC®5cJ;$ضج0Ӂ WN;q\}T5xY,2yjȅ;-:ʁS#//;w ї>vkC2XL g&(I{|xAqx\{ۂ\"Y>LtD1:6{Fy-w+ GnwT&:5/]E r{} l:=_IA<-wbQbmHݥ7 T$ :X|W%}йzl0 !1< h=m9G""%""7q>3{Obf"c7|R~_*bsEg@nŖhWB_{g/DlEz[/v+ޏI8HHq(lb/@ iVI ?'yN=@t?I5*_&LDLKu!=MiX">s^e%DدT0^' }dUjҧcf+{B&"z 6 Oݭ|N<;&')4/5^ }4qjNהz"3U¿L nO}SJh&m8mة\/E=OMI/ ˹>EOp# '2'Xi\b?( pȮBRbաaNxz<=Oxz 8ab"~ [cCpulA\O෵0hiE@ATzO(] iCU+C ?%]]ݗ.m;a;TO5xn29Hbn*M}  z mZ a$2p ^c[ԫH†=~$Ou|ņ ܈)!$X2cO xmi$Hd M,ܢ>cDsOx!8]9uaćvQD]$DR%q^K#G5%E=`18A. ,onBG^rȋ~PkgCk%EdZ\pa {Z˒e"*Mv۵4z`c!1"RW7yļhf) HekmkwٔsU`Ӧ&X5Wkg:x3#!y?ؘ`sll1kAu\AD .QO5$>y-?Q Q/tFjtiz̟r9ϰ5/f̪KA+m9?#bm2$ҏ .!Hz4F:蠗l@̿T_7Os5lR0pzm%5ghJJt{*kI4-жHc b1mצ6Uzx);*IkK}߻.& Jz Ȳ Y50e[ lk=pEQ(%I~ך\N|]x]P!0r\JW?;5[7&_R~^:"Z6ف]6-ep&y8'cΤg.7,+6U~zD.K˯ g*6AlizFNo@@ŞdD_R6[LU{} T?$p1@YGQo'~Sg%*8<<.]lmm#MS$IҨFcL=de1ص=ck-v-cA\ImHt}q,w6VʾǦo9%j\T˶>s'yS4?x\$h^$7Jg80;bhf=kl ,u&@tSNra C*dsO&v~vJ1[򵡴QkllGu ~筩h~r彷46qxxK.a{{Gy]xp43=fcrE`1[\ oԩԐz<-$2D:ol~]eYb:"tf%^. v # EgDb9P^Lh1`1+X2zMFuڼۺCRjҫd#l-kpGGGr ^0PL&x~2kW aثqpD Hh(r #1Vρ(}8C:ȋ/ҩ}F#1>l)8Ay-#5)ʲd2A63>2/1j$jr,g4bf5橨1[M 3RRC2M*5ـ83Io[|٪j>E~|\w`45;;; ..pu{$F5[s"񚢭CD5 Tы/Ĝ23LUN-u~~l ^RS,3Wa0maxmF Txg/SOKܢO )Qp#V ^q%:2[cDQ$xi67yQXw+TU@$_,Mѓ @=O=6 ߞE)^$o%aͧG]*zkao'"¯0sbaMU^ɀ+o[.GH+\˘ɖm,cR{`|K`羮/'u;:/0}>E9)×|l+| Ī~Y!MfyUU%/堲"^G[-\!.}a5cm&q1!@H# 0(BA C> dC$$ _OhqH6I8moyyj?ު9}sꜭ}y˳acUU>t8H/u 3UI{6@m`A7S]EĤC9OQV&ာ9 ˊ*=( R{*Sf sj]`Uq\ %-x>k2*ImS4_4}FH(\i3I5nNNbd)b_s,BI(!tzLmi=Ix2IYʫ8F* I)'eI@]ko"Ť\dȕ%b 4k#KRTyGc6}dAV/DXkZG׫K3_y^L&j{6Z^RQd/}1phSuψ$ 4sҖkjbA~nyx-L[ΑDZUTu?mU݈cWKH-8P>1<{s / g ɋg(G$ e93 zvzQIz(IBihXkQj#-q[XeGLXS_Cަ;T?4RlY51 n-V6d1 ؊IssN2CW֩&vʫZ`WqE?kR@K # rR ! um+hSa"eꢬeEڷ)nmUikiƼA<>cg*sPpy#t;p\ӪOMsH&T EeVE9EB9[HYívUUU+A]r^ŭL6 eHRA5yIkNslǿѿ suSwgEW|CL6PT?Vj2x1~tMA<4ࠛǚzP3q/hގ :僎W:pZ Њ([0a;AA`O3Zp ]KPEp ukr22=Ubڒl ʢHNw/‡4@'m@N6c-p5绞4Hmt(5AA.@g,&^r/K9FWz1H11LnrddU>2cXNccP.tl,hrMcsOHEq.Ƥ蜺5rjez2ʈʝzW9-I* ,`U;ZN$l56[%G(+nq-[ }D6%gqgo+c-m<=oK{Oct7wާN TWƲo/%v1W-CLdGŬѭRkXm\qMkcLVM/QF|=dey]_{}o=")i*om.kdE:;0{35$wt^@Lo .KhB"k-SgyY %|H/EZtCQ1ugdQ\;ŌYC#䨾LՅ{&lmRJzC;#izv6( i:~yns$^k_Sj^U x]"cN/n$ė2= kk8CpnDJetC5q.Q.PKB7q 6rHyA:\ﻜkPw 8R79+ 2Wd>itWYOE0I|}_./IIr)5IT lɵ&)R^$+K=@`-&e/7 Xt^ Lm ekR_<>Z7$A h>+cˮ|FDpį^0]஖byRrG:|sy]:;sUe|Z>Sv8^<]WS ~J׳oyml>@d!bDLA'ιKˠ,l)ʞ+O&ZRj^ IDATJϼ+pm@" HV`6(\݌oS&o [LT53/i^ns>@mlUU0J|GiWNW/ƈIRT"cW="KZ2uIPc +Uܜ%0"/H0l3'\W܌#hD1?{&%#Yd4WޓlRm3)]`: $I&b9 Ɖ3&2c]So>g%i =w%Ţ:\CJ !V {_/րUfutν.uI˹>*4ll&:RcBb3=cOv:CC1:5-RU)#t芧hIxZT\#R`*%*+z.R[\NbY*RDR8m^D\P{PgzRe6/l͉uu/R{&OdF.fxwvo4N+;,u>y{F.{LuH!0Tqm \-;j͙R*]@̑:{ytXE.t/jsx{ :Z&KM#F$Jm4JcZU;ZC 꾤\ץvkdʞ,9Nxș$.\YkE县?O#;.omQ}l:Sy@gVL֕4"uѢXEQw38N 0$zf%p5J;abƙ-hR &nQ߂s|R۪j*;܉JۺS7dbH|._H]4oXU#-Ky:Ք7~[u!B_ǩZ~rQLsWo-W [ꊛ ~p#z~Rsׅ>xم4zTS+d&I%I$+׮]*h^: U8MWp.ϫV7(6Z;rd ޲9/`|ιcKAz6.kR]ETu6 ]ǀ}I`x?UkGdi >4 Z:W+qDHD苰d_LXKƾ ʩcyCmQbҩ*o%0sOw]lpgz~HF,swzg~3=?֝O74݁&b\.8aB`S PI0}ˍ!9\E&9QշpŅפnA3UgH{AQԟ$|ՉL< X4a-OUΝ$Hnc>h:Vb5#mvwp2,[ )wlDє(JдFy*p^6O<Բ xt5w~DuvX^qA+EuFl _/-"iMC] #E\H?Ж`z:>,8oG+BE*.%vn{Z&J#;!4/5fZ.RA. 7Qqi81qr4ߒ$Dh\)[;@{:DRT%^3cyJ|mDY͢k\WB.md"h9t"v9yP7^KX'")4\eA\m3IiRi,+ G5&u݋`6HVt>Go੿|؄ Uۼ&1z@^"_aE7Kx<: 8|ZVbG\^/>iIdZ._DUXTc',.?4uXם(v{g(Sz0M-z2釶|[L߇SB^GiaĖ]Y^]j"PywL##Ej/ԙt< ϩq͗7lƢd0Dbv OIYle/4"C6RmA%vTI)r,tVb΂܎RGa~Vl;%("}?_D=Ȓ܀ 5GQF?0G(}T}Jk}ZPHEw"=y<9QKf5iI{X Jt҃$ᵁ`P[4{IrJ6t"""!Zc&4HPf,&5𯍀I Gjw_;HG?iXd%Hz~DV)jqE3a5%-`?)5֜zzlmGۣh{=mGO&?O|n6px6 dˍ7)^7xWl MCxM `@\5kwVQG-eS`뚛?@C eMׁWWFͲK[a#?vclXM܁6I>35Om^$o5Y kAmmZkY45hlYAf\D t #4, eT"6{VSm *V)u5[i(]M W 9nu_jd.Bj`W]#bT~.+nS,+t?t_>Bd l,EBU")&D:HuHOZ]PU"!ܹyjQV}ڛ;i%1I PTg?P\n[с@2A!Mti;d.̅yKc+fPVXmQ'-l߉$W?%u/lig[e/G$ǘEUY, u-$ŭFCnp'v:ýu~q+Ϩm:Cm2תm[Q"]?i1}W͹<.c 6LXԓ_E_>7;FG. sZ6wЭm"%7@مoVB~\ɆƺUQҞ=ǻuW?3=v4 O̲NCekP sd6|$&H|bNsU6R xu3k%uILbۖ<<'Y﯃|1;EPNCߧt:h!jmtSV˳_J.w]ɤEeև$cxf@b2"?;9ד4w'3MOnp8d8E'˲nXbV=pq'<4y٤'&}$/NkbvXGi`F$S?ݽWq?;;fv-o{{{TuJEXi=fPC-mtǤݿ]Lڜfm}>M>Ҟ &|["_ԢN0&ZL+"v988ʕ+\zvwwzJBkbkm%Na[˞ž:Ǯ+'/w̳Fx>A$Y&8i_J[B6jeM#Q}Yc1i^L{[G0[w~ڼ:}߯ #bsy889hr?XO~OG*5VA YUsrݒ෱oq-t֜iP1Kd習6ezrre2+gwwn[l|6#y|^tnٳt-:#E*eu?qR`#[L_ ʥxMAK&Zu)3AE.Gosp;;;\zk׮U}1Ex<&Lyvm\&7)ߩ$.2ۣU-<5}Q ]}$w KY˲`7_Ru $ف t"ӱIlIYaӚH$:l=.IByٜM8c YիWz*W\awwNCQF#:#~bg9WƕD--+h,%TVCE <% WD8A֢6u b$7[Y@5kEz{3Iӿ%sVfgw ݭ;<wF9G}{/[](T1 [O v_Iz 񧉢`vv=7;ˣڒņ ޫ䵩̺K$%g^xtz RLn#D I}|9hh|Vc ۪UCg{UpueR Y;&A۸\Ĩ<.iRO|qVm6;WOfýWPWOnFw)#'C\;;;t::#?zb|rook׮U~\+]ш1_,d- -X[]x=J",U2R]gUèTSLrUmaEP&]pŜMt~Q$a{{2 N.F|y4c˅AbP7(U& ]R}Ms%0P8;v_-Ҽji՚ YkN|@$ <:pb6FUjv`fј'3Ѭ< jSq[mkm^z][(9ohQƻ")Be$iZFx gz-qa]^֯41/*Z'SK[ tjt3vT;j&q :X-ئMLm-ݪ܁2)IBF%IR+'"\o*MG'k^bn+ 7u=e+NfY2NN|zV,vJ'}*"OG]6W 5څoKe"|Q2YJ emzLp2PuEEU{|?Ȓ$'Q3 |~n~Oӡ "ew69C#$ZF窍v]6IX<ٲ^T/hRwP9\oa?Ʃ%T3UKt;+ƪ ijZ{*n6ͫj0>^v9l+27Z|D[@7Bhua#*?t80apu.twEEV8r?60e{ i W-:P'PCϓRbD)w=-On`IjջXְxI NERTKՋTu>ӠFƙރPI ¤g)9IO[vT)iVd9O6 4d4n"3$&ɓ;Ts IڲVбjWHLE$ϙ?96%%' H5PAc> $`51pITu&ybtOZ\=rSIvaKIKcuǫWq<ٟCIf  'Ql[~6c͸tb E: KE‘U;UǘjˬKތr,jZYJ%@&BO ;*VMWTY6rߢ`ޔAz!rYkkÖȊ}ٷx͊4t^S-++iFHE +$)s*c Dž$+?$gLZ'͟7KWz}eTJ*\mnǃ'$b^Xl& oZ:}KjnB\1ʍ:α:y9{%7*BO2[@RJ:!,ܲQNͪҵW8YNAtNVb G8L6BWmR e&hETV'-45i4,|1IQ/!+KTO!9i#3a{[w.+--x G Ck#s^rWk)@!9ͶzjnJ/+6^F(6s+܃2ȵ2xEҾz}S #Uja2^SW]xMJ IN#TIU_ԨкE}7 IDATM׵`{Zu nW(gkZsg+3"~T:Uzh҆j >djQ[\faU$"1\pP"Ž K*kq |] e 5Izy/ˣNcy*[SPuE~ I<˒W_?W i]U6GJcoef ܺExnPcjPnjAQ[>]UxuxUC{K f^Ġn>1LIJgh>k%]'MDBXb <%5m瓶oۢtjB7A.kpVVd*40No-FXLtxԅr^/vOc0WLnInS3j1; ,}1[,lu{1N{:qɭŔ1jyp|`EQphy1CZbߵS^sZ 1s_X~E)g^ 6w|_$+k0@n7)ORb Ύozm]D/y=6YI:-^H;tf1FĔJ#qNje]0,ux*1\:ưR+s~Ɨ*ez_Uyz>p[UmODRHL⟗7;wd-c$I0Bga}GԖ_Z.LRDVc??/u57Ŕo97lAByC]qsoco%K{od4@DCř#iPW'P>7G(T?Ԃ7]eTдPqZɅ֎قlKn)ߵ9wlqɶ5\e ļfK0Σ]׼gFTtw& 0,S>nrt'LIM\6:k?~Xk/opK TEAL9*eg8F9sJ0w.AP7?idli_*@,"9|iēRTة}:dkO,V*4`_xF}j!R Ex'HK) oGc^5$vb"$o͏ŴRs N#I5A?LWXm0gg9ѹQIӎ$EYa:KcgiQka FxVg䎢i$AK;'^N͢`t{OAі6 %RiThPt>|rKJgUKPD$uժI.T-}u^Y/m ܉TOV{`[6WeEϼz +(0@{I[(UgErlc12B!&E̖(Ȏ=iH &GMɣziEf}WuA橧y dCj$YR]rM9*:+"[REN]u~d:Rtj @k-ͳσD3 qs.Xs (rr l_*&ShB\Di; Elb|8د ./}GjT"ݮI~* OzlZR'z=Ha۔4H.I[(8WuϢ̃v7roF.qpͣ","u2§zig%-l0B Ͻx.(qK k#4BdEh-xkpI40úd:OlldQ:'>cp_kwU,:*Z̪N<[gk` .ڏ<m%.'HmDd&}G-Fv#$N7Y.jR4|q՝5t]xwH{}Ѣb烙Z*j!7]&!KjOZ /"KYȾ{ *', L>,;a'QR"߯Y$wk4p!յBi == ^B߭賣 F'x`p`OC᠃9Cv"<6hIC13YWDR374}I ˵>eKv}~H}ڡZMYTIM"ll#C(Fȑq(K?{??|ه%mmaz'nFgz P=N>3DE*#/O%p Ntou=aUN\ 0 (niDMxiGY(k ]Ox~Qj('?n2RJ{{zL%$eo #*%T$P(j^'ѭ$qoԤ-=^B' 7$Y$R,1YDH샌Q$W&-nuы$bYPjA2v#2(b' C>IjE>_?o},g.EyDeWO& n@P׏V?tTXD`eCj ^qPc2v`Z(M%+$m˟|^sR%h ƣĂn橚ζƆͭc㐼UfH[k ct R_o jr֘yOZȇyy Qd?rc &*+쟴Mcu֑?36-Z? H[ZT_] k9$h]lZJNk!*`3bX^aOZ5JJl,Y BʖM%`Gs;YGmjJ']65K򨀤%@bIlfW:;H"sTsLuiuMԺY[܋V`f֐S&gIg_.oO{btU5p=Q-{_.sx I^ٷضU*ViWP'LDlb:={*qǣz$SH| \ p{ UFtW %~e~rY;=+dU КkVaI}I٤"=8k]FشJ &Mמ]Uc_N'7Dy<jmik3Ħ[fhSQC"_,hM~* ߓԁN m*[g냭keIҿsOGLoj{0ڢU6.HZ,%(ֆqTl6ƄWR(b%~tQ19ĪpۇަL$/?Εkȇテ ,eww} tj`T BaI\9V9p1Se2qܕl_<o>W .bd/o| O547~q}{(t:[lDg&JM}888XT3 XǁuXa io-gǓ6w\%.%_ҽɒʳí'5v̧c3cmH.W^ڵk\r}HӔ($)ώ'|iܲk)F5EPjsJ 8-Kpg0\QnLֻC]lr?u/'ܴJdا"=ȧ#~wqr¶tի@ 6{ ӹ~!b~C ٘&z*W^ʕ+t(hDg4g'|f3p&-+Y_[h 0@xJp2.MI +)T7@/H{OmZZ[Lu_+ŧ:9c:W??|?DuA.3=zw~*{k׮qƥi|>g2qx>W WNR.a.1jy8U 8WڕK0 pAM0IOx~<תr?X^q[$%pm'mq:H5rfnp 饥Ps${b:_Wi_?qϞ@rqK?ρPٜmH`a(ɲ<ϙF\?$z^y1ByY )7qLMmЪtPEyKRo*$!GU[zIQg[J$Vɨ&"l#iۿ#/ *dD~>h\ۥ( F.|q<ϭn|L&P6*1[\Vq=J"2&Ǒ\5sO]&³dPm~Ps_.CrRG-UugJ <`~z!(IU`2пь-{BJ!Z~ ImեpeOF&]`dnm(&鼅+4a՚ YݫӖHO_Ttiqr_WnmmEۥf3x‹NʫZU6}_)"ByC23M@ !ٯeyw-b7CI4EKd8`  H /N^l#H" `G)Z2ۤd&3֝θ}ykks]MF:q[31"o,/PQxfP-̶Lۻ¯"*K@ !8rEDxUJ"RhTa%a*ſ֐{Ÿ%ɽu4QYm۔pPFD |ZDvDžM-D*eYAik>Loza\JCI;: 0Hp]P)+Q (U0>N*Y@u$*큍?j[{~%-|ja5&\~t 2pY4Mk;z4 !fAK.-4 0$+rT `.%!;jƂ u7ݟn# 2ux E+]6E]J!d'~^,@gv'jg#"Cknnʺ~*169Q҈[k$D#B%$EU Ch>&{x`b{O"ֿ  3ޒ_\lC֛胢8{.1W2x$"nt HW\Ƕx7wl1N?c)7o܄PbJs`^Q;WfHH%Qoc1>$﨏EclrR۹tH+j0e `\\".~.ܒQ'9 ] 1DXfl.S!ր4=WA1|xх+uy=TS d-n R[j:AmTf聠칯5wDn|NZq^cVg ){"B$LuW+*nRNڔco N!J܌P\cxY,"f=6J=Aq$b`gXiUNmΥxGv@͓0{"-´--Mv5` H5K+QPGBwF|m$",Y7>`>-- [=U#(e;JaP37Q{b`QʱFӲfKaL l$t{zR1|R2?IRq I+e]րk1#LQlfAؕ*) ~*) Ʈߠěh"m aoS NQO>l<{̓xԢav?1}sV:QnZkck< gܠ*R\.b@ϷeY([lm ha4DqF3E0V $ - P-~̙-Jt ,wa`s2%vQ`p@mKDI7ה1%8lH@b=1`m 9,]9-n-W̏!l}y~PCp$P}]Z&An>~QqU%Rش]DS@au^,86wD~]W׏O.LU^W#@׊K,^46[:c7ӔTu wm.0N)+wD X&bf)6wf <0a<-jP.5uj`Z=6xq]Ccxޔצ=n>2$XLؼa/M˩ҕѧ:,y9RM@5)S'kb/}+f|OJ t#h24mi(<; | vQ̄ec>zS9,mxz(J^NߵhPi:=~,ץeNk@ Q"ek%^KF|YnʽQhb~q2m1[;(\`,eWSu "crU]AF aPwAlqUU_FWKY'0 W%A(#u,u6qGW6 g !>>Gdz})( d koK"rep*mp/榔`/"˔ kof+:g0s\Ԫu aM3#,aʄJ'=0CEs]u3HI8#`(hp%6o]JF>`*tq@KHpjF r|ˬeQj},1) '@($aLOA+HFB!rK\D;ѫ`sfAZz:v9Ǒ/WB٦ȾWBx)N ࢑{`LpUEO8_!ry/j*/Q4T@{0Zp5\[$P=1]^3 q),IEtlDm{\X;/ žT^N8 ("BMg1D'Z%Ü ^=IUz-ADa!) N *N8AUu@ "ƶ{\waUUv3}@ 460.'hQG\|m {K{Re DN{PP1d Yնrl\Oq/>D.ҰL)T1BnlAQ]1Y{@paSZI!U aWL~Q޶lMo79"p"̉ wH֕ў.^0ݗ"#U+ǰS̅?غS=,@ p JSº egmj_7{i_ze$$:ah> @ E44$Ia;:qIsT}XĠ`U~Fhx3?EMOLo. \_qc -ʜ޹30o~iAKyYQ^zR, T$QV>l[7^˗Y؎]iVSdk#g'm;σCd}bc·M[f)|۔s"Agfo ,3i@٥L(I4 M*MPZ1 YU bBxKA.Սs7綵NLMr?1+kSؔ *'>yfAk܂y,si'}\elu$Õ P_YEfn}gzٝ(LTivkdZ,˺{Sz[DC%C9Ty`&9$BjI#Uw0.q932ԅpIh{ pyW:8nfFMʈ-@%yRə|gt{l+C?gX[prK}Sϑ1^ Hvqn\ш59ڑb!%8'mIL!`K7tKܲ{Ʒ61Zܵ;-Ty{aXחܲ́=񉽐5)sؔO(sJ#&j|'E֗b|g_(x1VږH\K{Tԉ߂-8J ƙgX yΫ}cߙx)EH=Vv9' S+Jf)3) (}FhH]3rsjK2Ak0d!mq` @H@XLZ8|No+Up,>,xm,TžtdGl4 \ 5%OHzp1k7j7/j}+[# *83pG wͥ}unةsJ<_pРWX'.t" .Kl!bAzF:-1#Pv6m4Z +@tRED!|H(nxq%I=OJ~Iy]d{!SKq<9dž.c)M!)>t{-P`&se͉GESKeb_xf9zAIl̲c7xO|O  C8j ׎j3[o R m&2-i N-V1qcl>,=H8;Q%&{!#F\_rui"\`B Rk; B6^нkDDbYxYxG} oC,=CxG[ƙ6E10F =9 VfO~?#>='+< ʙ6w<ԓنl8@ 2$5nk\Y;Uteso#Pi9{ .!3]xO4AwcAdZyl7GȮi"F{o^Bѩ.V;oʻ.>U. }ٗ[(slC ċD~sxԘX4eeQ9YG),;%OϽŃp2g-A3pwfޞh uoo){ufKM>{|Q:elihхǮg .+La?  vAuri3<9֙nNјyfK0ȱˡx|Ts?g8*ֲG6"!8&$hW,r7uӓ#x>~H?`#v]lr[9*L6uzuQ[605VGX[[Y. SXeBky-wlnΟzk_XD>+hoc]_6=W~bowa [-Xa8;L ?uwJR[jmRuаVٲܡ,?൵(EX @6$[,LhY0O~4ڠI#E5~st8  <)HI%)@SaCL&¥Pvha>٣R ib0`4a4a0iTj;ۆ-ނ?%?.ՅCe Y/f K8tO`wkj~rVIH?XhX_4tʟx16Gũߢ_˗WS]Q {.vvv01ѥJ0~,A{]<- Mlsw }[I>u1c[=ۤ(LVS>xjb}իx'qttchږ%r+|nY`R("4קM,UAxBU (Zl\f¿{`hpa"Jf(==~& )i>?G~mHQŦ!kpX*s\/yy]7QHKZ0iRxsH'sk{.X\AIoC3ۆc"5~泟LG ,:_L}$rd0W^ŕ+Wptt]i,1ћg_ IDATtF\NNϖ%kWKn2MIg,+WBfP@{oqF<[6Em>tO}zoA+QȑY4;<<ēO>+WZky|+9~aቒ`.7S0n0x[bp T](MvZ pJ#T(ځ+9J_O#@B{.<,%iz7](a|~߭/8MS'1jn9?gY0lE& E0mV7}!L *g$n6zMTN<_;Z i:Ŭ~hu1E1E۷J?X2o0|{@$ OY{#DK2"8Ɵ7aC0>ZQ\* V!>dyq8kSJC|`CwF|B?IIz6߁O<,ؤ ~:1S <'8::>vvv$I͘l,e9ߓ [`,QxﳷBp -];*iܱ:FDC37ُ; ]IT (*I]M*>_$M@zۀYV;~Mq;;;(WK Zcn'R` q`mjv0Q)-)O30"JrsDx _1"1=J@ckpQoK+HQaf a(0qxx́|/3 _%o?C;TŦdUOFm0L.v nTE"ON#Mש3R.]i/WLa\$h4x<`0@W1<%^ZdʅSPJ^_Ghx۴.\'~_ )e4MpH A1VvS5آ@L7ToTD-U[QAXGDz_'਒ـWմ^~h^^W) Ϯ2E U.bJ6ǨCh|Ps4pfS%D :,`fPQx(!ʹieTIg`܂mL}Y U)Ho!@XAJT^|ʳߣ{}iMh%DPP56!L@a\$Up (w& E OxK.6*Is]Z& L07}_̾a pQZ(gN B |<p‹H#J"JRgRaE{- I+klG/0q;RVz1e'SVPBk,f[:2>':.ED!L] CD]^Ұ/)hgHAPXhf= Τ+k3Bb6_H}̅4| nlwND 0-b.(\zRK#$xTqE z"T/)kDkoDG=f[,u!SDemD]q,ߔAS.5Ո7 -y.ijץ!pW@Hm2lN5Lw3H/- 6͘LWa"2X;f5}J*-UrC#& Gs/TG6jI (c3'Rj wwrʏstq=I@A9A!OF.;漼?DR)Dה{<QGu ~i"U;aȥʳBdļ]`+&/y"3^fF7a5.pT_eٸ#)8֭tG`Scf bRBQETL1QVvD<̼ذ?x ¯OڎCKAs_+@ot|'X*AVæF?&ӷ/a "Qפ&k'8k' h+M º5>PoKS> <`x:'4U 8:|˭f[ hOE)\I GP MmΥxNvA͓0u&ky S)7W|L*( ըjw9,T ,KRR.W'uZWzn 3nt% mwd=$U5R7duƶeKa\:֥(Dĥ첷C#"pYJz_&Jz봋v2o*uD̀.k[s^RSa|%fJ7" …0Aud.I YR(pP[gX "I^.JRP҇s5a~5B$$ pnj!8ۜRJ܂z^h%< 4x!-%H{{&u ޕ.i s$VWF2ɦ7,$A@ʊi7f cMj5]xN{^]ata{0Z-n{m2G;\D#B.wLY)a֦KK=eEwǶ$8JJL~ΫەKO"r i^vn@mavioB( {B8)֠y1Nc=߶-3ڄ-)l*׆k>0U1G X׽h]9-]>  Y#4tYYQS[G,S"ul+9&`,%TcRed)^M(M.nPe(\!TTEC.`  ^c=]oisx1a0C̩6y?%õvQe{xk=>Sܔy[Ax _+l4DGG&vHThlȣpҾ&gDI +{y_2Wl=)\*?/Cjuqm%$u狝 O ."N@=ZV ܑ/0˫MaQ5W%1Rߏf@ Q"ek%^KF|Yn'm pDԮE!Rxʞs7f*`gl[0ŢJqP҃TH}1SZ¸KHAx H z˲m MF~Գ-nqi2s AE̻VT6n E 6BJUh[HWs@L(~ - 0\#ȳ6֎n(:$x:=0V.)/+kP?wl(]}[K'7xFHbss\lj@"=5_#hWUjD.uS0E⌀WmFp ڪmWj/O"(iD.o[ȽNF]/J)dzf=knֱg!y'~`.UwkTE'}HGCK UuT Ẃ!WUfD(D= H0i:L΁0=K̩ꏞ&ms) :װ'>:Aֵn XQ6@D/QmjNU8? _-vlGʀG`,yWKŕx]}|L<}ҽ=JDDD2y]uNgxnC0!T< SP@2BWA(|R΅}rsOAz8*yOwa,pS 2`Ғ҈'nڦc r{O&_}tP]l:ڰX,.{T wc +FjaBUSPUu.U,׶u#5ۺT96+|X-rn1oC@sk,":E=Hm|7V` 1i@(Or̗4˩Rw6`(`.dI-5U={+80s5Jν%\YN-YXYf/l۾*救H6*k)]O&Rit@:vw\{kZfR)gbh%Xtb,!x7 6,ɠ䖘G]+OQY8 :54ͮL{//GqOkTE JdHJ+Jz@im3=6!fDp,஍l)k^!1}s Mek 69n**ֺ)(5CVɉpu<ܲJU}LE& XúxgveI(0*IM P0 VSX?oqS1ȽՍe~X]kGo bVצ) ̈d&b^pZ9zn) ,?PQGuVq&Ѕmcyqr"rOhG*V;u,+5mMhL.9}':TTͺ |ɹؚ^kHϿi/Ѵ0KKtz#-\12>{ sFbb&8J4Ke%bނһ ܵe޲-wXu?MdC~K h\ztfO77b)+Y4C1ej(0V*<ډe:[`sbc\“]:NZ8Nkc[ZYփاSl|%t;c5>8)TƥeY^:?i،Iq6;X|`[ωWH/:zw` X8?q*PX v`#)2 ?IwN *2]`^R{JJuU {uN9"S/ ^e(.(>.'MHZI2JW{Uj6?]vq@%H-At,ywY Ǟdjwwγylb=tC.&LW;򴭋 5bS}@*B%!{b%@ @`), w_Zeh H ;"Th نyqie.yRN<&(?j2Te%e%3xX{˞ce!ü 37| % dG=Ntтx^z!g~聿zMN<%K w-^φ*=' -gUr6g3Ϯ[}Xv0 e3R/KB"AX1# NJib39s d'V*6Àg ON+dϢwϓ%mХhvqSK] kZ}Q*?}Bc=NFV΅ǴR٠y7Mk.*~nAy=_晧uNra OcsJbO'2`P=qUfsP='^*R[{xlԤ"1ɘLwL;6ہ? ~ࡅ}pŹ,"2i1[M- ^/=1nSϑ|n)-oE \|PG ^L)0 付WhV(ID(T9sg߱PLKo3s1<Golqdb SwQOeyO99oSP{dSOou??_dTXa?sd?g~롒./L0mwڂ16]nsṇs-Iiӏ]UYPS ]'/SO6:[M{r qETpQu R} t0SFγxTrE@.P3όN;xhd5svO߷ 9Raϣ֙s4+>jŃz>БΧ־]KsOfO$ XG'r "=3g@.* $,e+E:l^ e`̣?.yߜ\t Pɓ]lT:"y`~$𜕧91jXb\J,jě;Lez|<>x|<>졟 slU';1x=Euf搖} އYm u mjVHIX]7Qc@a^O/ Kw1o]`}Gm$=IJGTD 'QU2|rdSE*(g.vBV3'b#$9[>3uvR(""'I EuG":;T 66KU ob|-Mg$ա܄ծ;ʖ 2t]lrc^+VZU Qv)bS&,\r Z"oryhK>uu["-iO vĔ/ɟ"\LqH-"wwDd!%]_-%r7$x>817s~-H)5$ɗ!՚~ IDAT+"Vtj"!U4@B͘M)llꟴը("?w%I\56v>&{OKrWrf5{JLރ;SIDSwE .z"c\7PBzm#T P#JW>KJrWϘi_lw K Gl'$ * t?%_R C5.\|e1VGҔ^yn2H'Y-~eu^yqĎ'uI7:?6#4D*}?b^Z9fmS/ץtS_4:=>] IײIqv\5(Kk4M1 i85^8(^PbR*'3513@:4ОPNnz50*la"R'{Ok/'`c~;w#.|ᨬa4a4a86:;j)ok֦8xj)&&9%Ie ~Qz2NiPEdwkb,Ni1 01Lj~*]kⰵ~؂8IӧFR %eĔ OiN:<3?qTDT(rMqDzxW/OsgԔddxh4M.'Gc u;~^\wa^VW7?8kj@C:ːThKr>譎/Ϫi$Wti/"Db)3"H  `)0 㻣:}Z5P%K{R,/2m&!~ %`I%~L$9@h?縑څ]_B;jp$w%ײCF @CpN{j{y ϩ_Hzh Sp5K?("TȎ߅K]zW\& $AYtF\NNϖ٥A]J"qD3sOQ::L~t PmOX@{OA6!lr<C),˰q4 O .tsxq[ nޤ0Jj4IB8l&7Jgx !s5ݯ"DE<'qopoP,r9OjSVP! E>za#,*0Fƻ0J;zj≛&" 3Px c'_Dc-4mP\Ɗt7:ľ w5$VQ$e [ڒmY1nCi H$p䥑tC^ / vۖlKD;-SIq(Xí[w8a{sdQ y}ַyD9 К{ k2ޏD'2J5],݂̎+"loo… 8w1 j/LrQ oP۰x;" |w x"TwCYSLl '1D^6io̮bF?{4(^#I•L rzX"}׬rssITx+ ^H_%|xMJ9YnQli~M`D"vsh(*.Pۚ cNBm)Kp *e]ԿSW"["?T};;;5B߯g_MITt ƷU\+`mjv0vQ)- &xa/d(J)\wߔg֠8vTL4;=Rfv}zW̌lx'z;+XJ\jl9G@à Q}6@yçMT;ƽՏFEbp;d̗3+pefh*6I?KQ @ ;A)PϽ)^dbWPJޔhM򯵁 q͍}O_zP: |NMHBo˟4.R`⍝/e;9K='l(ܨvw Z[8Go פ.K 6Dxb%Hx)?)--2/ytOƹm$ n/{%[v6:1 U,Co٬_sk[l`^,,%PO S)p v&;FQ_g+Nf AIo zO<C_AlK)N$TW9ش!WilBvDauONHp}m:bgH{$\~ d^. '-TdzL'}g٩3M ZC$,1sA[KdWDe$ԜUgxq\Ķ {x[l9>!,nm0 c <MX[U^sdp"}7yqObFMCў޼+IXhD@A9M.Ӡ8A-/0⠩gFyVb,V&KB&DYV}"`) 6Ỏk?_HUi 35 jWu. ̂)SCv{Q@immt)S.(լSka˹uv*;i d#dSP.0osocv1%l}Aw^q{40QtQRdץs gX\~ejkYVjoG .4|rS~%@AQ]>)0igS\VlwfWJ_qW%;(g(QHg?7\A!%%J%*Cd{cS[x$:RLq>*l`D[]T xq.0 |F '%f K{kBy֦G!(`s%')ZpDșq͖u2p&><ܮMIb:b/y𔧣 4(׋kcf܄4\Ua2Jf+/J]>+;h"7֠-h,Rϩ4eLLρkWQvD17" Nio'̸!sgp)V\2΢qvgW >CVWip tHj8Q\sEEm\ |z[|7"P:Ԕgl' ŸBҮs6Qi]H^y 6A!=r.dx",@x,[y $=Pү+S}PΌ. H,":5Uim,pz#~E.aBp\Xs*v똴duy;nH?z )cCaS-^ *9D2"֍¯lŎW6C@u +b oe AB=(ΦԮ["`ToB{xK"n/T5RW1,QUIC-{ 2?L?.hpȺU+;ϪJm-jGsTϫ讓P*ˬū\#ƗT9+۳DU#z7_ dѩp6p'=UD}QG-0"w| >6(E*L'gM녚Rli \nD3hRȩ_CyF9U[.5[|?tN2V5?&٢Ij@RE. pkt1aR"fS)\ᗑ;o,N.^-skU`* F8V\ fJ5^keDSWfU`h jj M",e 0+{G"r0R!87SRJ/bo8qT6p{˕Hjcxm羻 0.% T28\tRNBmap)RyIC2L.P c*XWEJ8 BsS4t\PR'R^u7Uγв%_HaBn.ucb6.p RS7,jdnI=*bX=|25igzB.dQ'2iB 'w%dxchA5u@ ^Iaw{|KɿIyW|5E5w*O?r-N-z#3ُ6w7xRB;lE=_j (:kuLБx(ߞ"x38>)OZZ(<('gAefmmI<;w gPDŁ- 3莈y#m*pRTܽ\[|XlMrN} 3PU;E.d$l'm$!pTPqc X0@A=et=U{cpyYrN &G^[OgxZUͳ-rƧbdJqms;)kGaJN-mpQeoSPHT}=DKShMŝ(eeWmyF9skǖXlC2q(ل&76XךIPSJrn*iRB0Rʉ*8V,ԝLJIk643p>brLakl {5LFm5s]^0n*rX=]nu@t򨁷7(:Rqm Ctmxݩm i`̔L;uzMYB,TKdde_fX%Zآ47 +(UЉj)VoZ-&p6xMTXl2Q.&uk=@!jiW@;V[ıe2dʣR<,VQ RK\,mʴ-2Q+Eb X,&RT(T2xבR`JscQ?*BZ`cVbAaՔ:. UT{@:RQ-?q߻~ðXn-О[vv";w}zE_ 55Rioݹo{חwyA4g}kbO>7RӇ6P{*J! hѧdXUkąrMe~PCA >ԃa}@ʃI{sλuRѨ ϛ+ħi$ix]́4USD+k5ԉ؁9 7n9{m-l-rGE<QH#;tl}@HQ9|ua}%<3{ýC*;u5Nn,%sgBɸ^iyX.|n?S`ށ",jǽHz}晗pMj"2V!<^gpQb8r::>%z+P=5z$Qk1$ +%%>C˭3ce9:qe͗)mp"<;~h{*-2LM-x|<>c}Џ)֝r8jXN]uHk=൵wVjm1xIefM:$+zGg&56T풓 g?n@UM@#f܏"%\:ۦuG 8MMn'.>jTwDG RmŘ&BV(2M촫T<u-7imes p!GE:(:(saZ ۲er1=[& ^+5>haKJ Ętp˔\%DVYZ*6ci2x6%?R2'~O ۞C D 5o6#`l6v*CaH"pM,?֟u] &N|K( ۟rvN]ʼ[ \M@ yu"2jԛ9l44hf uo}JM~NO(pkVA++!Qg g }O^`r@*$|tfèw~~G?_|SdßԶqub&yE7pCC&5-x+W[e>O})g5R~q#Iޛ]]㖶Ld :I+bEZ(I os=* 2ΧO߷7çʓ;|1i/åRyys@*DSW[n퉻(NCSI>ps &2Jvrx$5I)̐" 3z" ,O" #g+e&gY8_H(w%;}oZ_TefQA^zoE?̓mw߯'Z$vww4Ma( p_8_2-c2 ܙ\cHpK7ܔQV`dJOYiă<;YMuyd*xXVQxsi؂ne}`oo{{{f Ug,y˅ŮeƓzR|E(/%)GfiȔ1VE}K)&PLb[O=k&N{ .ivz(Oŋ61b: xx:رT͜ia=?H,0R!pf PMzoĉ?ol ˍcg">\&"2^yQoy "(fcw夦 ?/^ŋWS1L^d?V4_j4dp U9hi=F8K)go*@ivi:]9"󗒍A/qcvx29 5pϟ666Ed(P`B; b` )KڟԮ8/D$9X.{nd Dg.TLk'>UKP| f0DHvq9akk I( c\´AKsפķS'Ӛ=7Ϲۄ`F$m7E( Q `y~`E?$NtL`e^zdsRMD~z ۵`0_MIeIfn-)0% 04,bƑ0vQ)- &@F@Ϛ8}GA=ѱhi*@=/8 He1CqP@ Z`{{s_g`?ȞK;bMM6 6pU7T-0vl,v> n*1qb'Ņx/k$hټ04I٩QNN D@Ek0*d+ JA)!xCJ)J,z.ZK6 ޑw'd𕨇 SMϴ̿E}|{'MN )NZN"'_6dK-r{TC 4pI1N4pob" Xh`ꔈuNc&euYj`!(A> A$"@$[Es ee+CKyM648@ 0Bq! r\o٬_sk[l`^3BPO S)p vnW !)8T@l)wLܒE4爚u)Н<Sܧ DpEu{ҙU#*^exvcD*+Ra=Z& %iJP y+R`f2j ܏)t7-FmI7cJ ڗ\Ԡx<ǓyT6Kk(q,DϨ𮵷~*F)#H;Uo0O˯Ƞ9t(+3 eH}zKE` ) q4Eyɬqb}d[E=m N`KJ#aܮ(yW<$_'ZL.xfdwYͧ٨i(䩎*r4; o!- A8&-JR=D CK k1Wkժm- 5տIx~CfS͝2O ,_Zlۀ'*_(4#Ap(+|HcB>M0^` W+t .RJO7k?gm[#H(>yZ|<9q9,K\(l+E>1&X&*k$\¦3P!o!ar 4gO| aYP}I!RR W'ρŎ6-5< dˀK5E.foX-DXkn~e]fUR't."92x^oě8Utϊ*,>EQo0)MKAgib!|7Pi~M E 9}yJ #[V1Fd{)7"E $x[Jơ#^LdjOAYC:(Yyi0WMЯ-H%vܒ02qW=O2cs?Rfg4nYN9f*P>2+"#&^,K,y ,W & ?&VYUМY]xC9-'EX|ጥUrb)k -i-J!**ʯ9 kŭ6 ]l1#(dq6 'tY0w)ZH"~l92/n1흄BAlrLD80t~|*\_mТC:!2E!X|J.eDeL_BOLŕ$t-EޘϮCP(D@lekFQ)9S+ \&*ed/̒N~f@Iw+dqKxQ_(}&1Ʃخh-xn6h9J6#*1W/@E#akaSۂ̀.keEp̶^wH?7D00BDD8ƨ)s@c,uPO]e0[C#)^E#2Ar/]8a.YKl-][?"S&J? l=˞4"$87CpKJ K_m%`Nλ^[+N , 7d;XFA3㐦fܠ1%BA:WE։ >CVWbKZPY]a]cOxm9,]-C; \dʆ`Zid[b+?_HGBsO}9tUQQ ,**"x X1(Yt8Qk(50m0@VdSg%=IE̸|\JD gaԩqJk9[Obز^c0ok1_? "mO>ttCE1%ho3xQ_Hˈ}j-^QQؑ0f'P'J_ػ@;]5D{*,- g72E7{bv/X:.9 bpY܋N~hJ 6eZBAP% 紷 wm[z,؞ttխRUű&iEf-^*/#Ɨ Zlk]C~ bs!]UϓU^@Aw+&g6p _Ccg2Gzxx:2{&yP 2-^!2R@$5l5pTURx0p58qTxV́#WT9 k ӠٜVn`yC|Q2$L<`OS0軾+ag.|d*$j0^ppA4X߄]Gm'}Wv\N”9F'Rή٣[iҳ=2f ObR7L^o)tsE72Ø,^RTz-L>-N]@ ln*s =]Jp/aD,^-g0UlR]F@W1;jUtX&7/_ꘝ?`JeܕZy )NJ0[Gsw IDAT\B~2lI$ Ɨva`FW@"K0U͠kHGZ6Xa+v3Xܷp3 J*8tװpS`"~_lZ~>"lHQfR1 `bH1d1, { 0EM <|Nգ b">ZWz0~9vY g؃:΂7)<:69rlP)/3>+XnYQl@eI=2QBI +0Z^,K_8>LT;f(piUwloSf8e Z(΂ W_8:u@Mh#%ghwR@yHf \$NaGIJ@D- uXu"k5EЍ@-et@"877mh ͯNGwpGJai ש׵=.H V$ I> B=M).' : nutjo(C[-*g=[-6 3ׅ*Q]Hܱz|ҳ0LEn9v޻ oI͢ͽ HA!$juZ4Muw]ujpfRv&9 B"Uru ' (0Uѷ_*M #CE׼ ̰@|>g1V+Xi5LGGQ63ý`sl7M^SRKT0N(ۼ|[𜐙tUceyENTwƗm2 7V\@yn*ͦ01IGK9 Pafe["h$w@`rm|l 1+ƃaN +C}dcZM0 f{z`s?p's׋ڨvi35eX$isQi" k6+H@׵o: ql 6QuXTr,e>:1=E[z<9!)ƍ&z^*BmؚMj/wMgT +rgu6d`m_mĈJ+?,H>=zCCI?f[jKkbἼ&vڑe \ؓ6)-8SFC%KWa8Qx]^+D1 2b}Bߦly 99Ua-G}S>y_`yXG&󚒕n**;Qʋ:gKrE7[+<)=d›2@#IihRewyJ+PxT3Sɺ̩v*=~aGAJssOBY}Cp.6""SDPJDrx.' :l.faipJH5˩ېh m`"vdyhZؑ 60z=uƁv48zBq6pgX̯ʇg]w>65,|(Ck{Z*vؤwd8pyq@),}z|?Ō?a85d-خ[؁α{/r:f%`c5H=?u*O3Qhtu<ɨU#l:"y}xb-P8p*wVm {˜*6(6= T#$A܃]w;Z6oP3< \)햔FeMI瀽s/=*P{@LH}aPZ%WΑ1 l;5L8vr]H0ƼlS=Trx} )vF#YoRd.5=5X#Cc:lSty۽g7Ei ڣ^ek@1Ige =Y`O.>n>Io}Kt)SqOZEۀ>I;pa=S+;z"OMITDE Z x|<>x|<>C?F'kkڪAҹ)m<Zjp =kpS^G\Ugm1xh, &jkh.͏KG8-eM,f& e9XgLY! 9;d(wlUF CWvQ^imҊo;hcZ lY!9M= 滴ζH<iʹySfXDqMXjsa_6-υDseSQ I+*#6_*"d E)D1L$lKbs եf`nQd"劥F&6AS_Ԩ7<`m L\"gEe9Xy?.oc.]@kPaiz4@#%ddsU }Mu%sD7AџM@l~O؆e!(mf?uQU,3j~6{7ekR/[*T[AK+&2yLB_rY.H]WPCn}Ilkk g=/Q1i"MSz=$I$If55-mQ_Iobv )xRfM`'mO\Nz_/1A .S8F`0@CC5hQ-LFlzIst̘͠dٷ9QG^e: fgbczS|&v1]~] 5`~~n9 !lNaWw",i21L<Ӫd4ijKИ-N8Ϳ`0&66601 $IMD@)у6 oby].(&8;+,7 |8#&8 .^y)lg*۲?;=kJv otw0CE\Z$ 3WO!U?)LE0F (RgY0{~_ .BWUԠQټl^zL:ok5ks]|{5*+Nyň ̙oC%LNV° TV}=-bJ1`dq ^q"-9VLaOb_ | UqU>",w]իWt;;;EslF5s}< g˚yk>a)˵lψ#p,[8*SfyE)f0-ٹ2ܺ|7ȿ1?;~<|2׮]ʕ+\tm1TUx9F45ٲm]hIFrY#邁6ѷI{AdG &c%%)ȮtLuMgcz\tW'"s1WܤjIʚb>'Z0Pa 70| ö/A N_5CvtZZǵEcJUE]: D!B¼69fgWnUc̿ P<;~,˗9񘏟dMsߌaܻfa]ř hFz>zT3D`8r%988`ooc ٌxϝqDy8Wujdm(ONWGGg[![8KDf~:D̞1U_Z,Oykׅnb,8lpaDLj[ss{SICNF "_Oqg&8 akk-z^3w6tε-ppod .̣)p'5oh£ˁFKm"LNA aUk?:AZчbfWi)aWLPPWSմya3˓"$ݖ>274k^ h]uK^=>/=A\I IX#ƅ'B7mg m]5/6 gS 붷Tkm/y~VjDT}j.YKxZ2/--x(B?t8G-FEÈMtd{ zO A❣nuf,^֫Ae#8QsgM:""G c2EOUO>.g b\ELs u2Ϭsi3RlJ:_b JQz(RTeyh%1s:l]ϯh͑$0@H`[o5we^ )f& at+.|==C)B^XۨJRU<]$J!@> 6i>@GԋM# ck}MJm ɬ3Xt\1<% w~>A- R5U͞U9ei5:rh//ae<4:oSgfk.ؕ}!|N[^\ Q" WTe eX(e]]\=&g◊W LfDmdW9 ~^z}~˕%] >^WyhM;W_DlJAօ.呀Y,v`D/:hz@,[V%xp>bOa rmml\{U006v~!}~>diji +Ob~)6n45k,C(3CİR.r.WAz-e9&ږMv%q#*6/]/i9EG܉brΨMVdN\9!Kr$upC,W15㭖 TT [bE8n)X1CnO3Zu_&kt'on;* Rn(>P=VREE8RԌd!u\4\M﫢mJ,DxX~,5QQb QoHYcy'0`Lja隶XLƞ91*0N{|ȒoqQW'5C.Z $lH e#j O.μ ?ҚY RFc`[pyԊe1͛RP"®*Ůj|Iʙ/bz_ lGm#^Tli IDAT1ZZDz"@"{Mc8s)Y ?_(0WOQ~G!}U>\;nkk{wq/M s(6~jy-ϧQ/ĘFt!47CH 2`EbkAxAfCryW+6 N"hs hNIt`3$T_EAbS~U:1ƅ g0<:Gsve6վg^pR0VZTd&'1E~aSsuYmciLӷ\%luy{ABqMi=R&,󦲿.x祟uE *w\*2i&vB>c7 ]#x:fڗ| KEXUBoT7<_^4T}gS&)pyAͦ`A20аѹ>L`zp:A[ 텿c>uUGdv|B _ ;nٵNG_Rój^/nu9pnII$`Nh-xm 4 X+얯q^c6ǨJS6w5.L)mmbEj} ~M+S%bjY'\9Uq(ijb/~^Webzץ?ilgʥ 5 [ zeO,ʭ8a,6r[,#z~[%)~@; ᰣp?댗cxmmAoʁ|Bl1j_si99WQv88RmA,aotxhO!yz|^fꔪ|n].XvHZvFĎ!Fǁrޮl޹Bl~ ϡ FDiA }4%ʾ4;O%:~.w` ٫2EyU|V=9ƥg*wO}*gI48XX)[yߵU4mPVXڡ=#V%5]{4`C)!mJi LBX?_wSJn*oLFT֯~ɳ ^+y]᲼Id@n-sWV Wb{#)z P++{J]ּ5Q|&&Uj^qsz5V؛Qu&QO#-^<h]yxN0.'Pjg~LEg-bI9҄ oJ,-ixN*gJ~eʨVb+D^WW Nl&qX*%盅_EH'eGQ8Qx|a3h5>r'nn1msIX_q%>7"ueZPp ٖ MiIz{SV9fyM]u7L"qIXU&>^t}V4rrh7QJKv׵V3T)zCl vn-1LF$"m FېhxE}u?}<!***()c?A٤n1c\Nիֳ3 M`%Z+L>"/ϧu;:ӻ޽qKA 0'{$%󡎂wwۏscvJt-~v|l*v0:WMzaM53{Ik6U,: | Ciۣ;r~11; @1Y+/FcT$YeU7wzv-%3ɑD\vz>@-]Ο&l+h܂iMb]غ|bs̛n6*{};8ÕS-lߙ נ^\sUi擽A"o-3V7DT($є*\g \{_[׶&1Azη(QK-'gTcČֈTHڔmLMNgTFO\H:0nFL,y XUygϫYtcpnx.EZlȚp@]Z;7,%og>:E N0LEz30KOakiY:.w-Lv%3Ys}}"cq4y>l.l[Hgm-&n{'T{iƸ{$(N`4:K 0q뼮2NYXF=L*D驳2Ʒ^#VzX@hG-dVf)qy,rشe.HE2t41H,U%l:Aǝ&yb'O}'o {V'tI^'2}nele{'!u.}^>N}"eV^Zy2_$9rlk|-d\""c}9*10?}:y]zNh]Xx јe;eHj['*;'$ѓ4-x=1Q{IޫÕ< hc$:W/cc1K\ILac˂d]kE}IQV1}v` fq41]sOgI@c(Jg'VEa$-(o&r~`MDe?,~?qsE"&]V> VieE$Vetz-a'ئ [#b3݆ytڀL|Iu^_VY(3 H |zr<9O'Ǔxr<9푟/asg'}0u .mzay& KCȮ|4l > Lo8ihlD|.yHVI `khy۳2~|GQn4H3۬϶B;o^u[޷:e䦹&[0H siX+H2Z@,] ο{ڡ.6x!) ^fJt6v]l Hy[0Ml#_PCw[:{~oƷYև>xǔs S*=Ez^k͘7k;ѕQa@̊j<k;#C1yxNE@ yKcc|]qj۶ 0't6k:eZصQL!bo]>|=y|~4rWi|MvJAn#1w]k޻%}b]U?uK:X?Yv5ŧqWԕ?]C}t}4N4*@n)!6mvɆ'6yc鄔)'߲v0:PW|u'TDfunV`GW-w04]Җ >_c~୳@ &yܘ][|ֹ/gǿgm ]_evы:Ri ⼋n2ĩc_WesEn7{fL)>6]ůWU'>U&,=tMdbzʼn1obz'/KG!w$*1)c ~ň\5vu#gWc82  +礢t>+!vLk}Clo+j={SZXIf KWD0b ;xzk/٢ׁݷMz[[[F#EEc]SR&n([Eo5[bO}1Td~Mt1^`0`46[[[ LK[o<6c]nv2MZtyO[ǪL1VF7^To7Qכ1*ZMàf( F`\_w}{9zB|3lRLUb亰*y|R%vjOUn 67xrAE-, b{v>U{Po)[˗988Xu[9ė%úJ<3a00)T(c#QnmLǷ,˅N\{I秿,!!bO:Dd^Ufw"kr6f~5B C.]˗|2F#X,3TYl8p4L]NWdԂ5 y q`b# (F^_̓~hpeA&-O -$w Cyꩧv.]bww`,%M|aZ\wJ+Fĭ9mxmưppOa*$Xс//^ˆ#>kc\cÏ}1?K}v300k׮-١Q5ٌj;Rki-p8ftHoKثwW b]bg6Jh;/|oz 7~C^ʕ+W8<S8Df;pằH9p .&KGGl+Y[\zvX F)U_3?/h4Å\wvƍ ?=)x]0\)dPHw*C&ef5n`8}LY N?ol?軶 b+Cm'ڙZ e#*Ғ@5-ZSLQxgGDFD]r+WGף,K1?I !~]u156G~#x!BMbdpp O׋@nd`0چu]3\/ՠ᯦ 1.*}.';Zoc?UhsaE[|6Z+5?zr~Rob]㮗䈂W,Vθ.cOX||Gk'*|,|t`sbW;B#k3k|x ݿ'~MU TQY(udz*\hn~Q-&0wΨy #EF+ǖWWR 56Uv\HL{]Jpj-,3cH9~UtUGyٻ|M/ DxY z*?3" \õ,u_Ei`QF1`w5ZPtQI`Qp"~73Q]hS-02= p?fi}?X;*+ 245SzwU}K,w0N/3aюZMX17T!TFݲ z/s{p>b?| uk}"~ - j*Np8a%iTyZ,&.-M쫯$bD@ IDAT$fMdekMّRr,7*\){ _ϗ`G<8MZ`H Jp bbaMjTk{& ׈Xj_ӷUD&RUT#un:G .U U"=~G(Z.RS|()\8¨eLvX|cr.5΂zISb2ŝsT7mVe!Mkοo SpkR3ΞwJ4ҚǍ\~^L&KQl^l䌋gstcTa=#,+; Q !+m½ Qෲ\M'׊MQt6ys~q*`9Ɲ6)Rz1.spWhGR;Nd-|M\f^_o|)WkCm2m>`Ԣh ]re%41HɦVE  .2G~a\Ug0 RDkRK.jR8YV+y ZԱ,SU|V"4!|V`ܕS^iEfm)7V\/⩱3 ] 3+G^T(ku;cD͢#V|5ikWi˷K|м,.>Sm x•\;ȅ.cMbk+VU$,7?1l kwTյ kS[gY1ZO@%O e>/?Sp6li781tVy4cEd60,*)E3?9y-%9x]/iՄdDOw-KjxVmS JOݜ7\*UsUNXCΤY[r%cO_8b d0Z}闝;w}S&~r|Q ۶6a>e ^~+Se|3sf4uhȣ]B]1["u1&f+qδ,-\-IBqʅ'\d0#W(xQz,ӱz~;A0yQzoqMJm/t[A #=-4a2Ur(SՕbeH`p|@v@av^e<4Eff JUf|.m{ǁqgp,ИTSd7Hɭ"@^ܫպ7CM)1-e6LE%ʾ<.cxlr\;|W55-R{~]UUP zilX7 > xmDg.amujRGb[)xq>K2%.a 5Y կR=Wd"ϨsieB9[8^\b8Pv*ww<\@*tUՑ.UrT1[֗f'sVs^USe,> ۊhxV,Ϩaʩ(qLフ!o0 B@KbCy.{͙f]rc'"V>1Y'9G/%L[<~QkF{W8}Mp^oE̝VvfQ{aG`Ghr~.QrOZf z[nYKs\.{q~4%`Tᖺ^6r5Vh'sܴմma1AS#R/:0g :-u Qvm˾T+z͏.HClY$)mv?%MyqqjXU *πAw}tHm^mUesn`njVb-1-i> +9Rb϶-w_#zUx^q%psY9E9~%|}4 M gwW& ]E+}ٽAŬphPӶTDE(E8ތlN<+33\rU 7WwPG:0*^eYƑʇ/bM>o,a%$Ӳ|u5fՔ-$ K4VJxnEE Fw^6WrtːO+6"2^ KuFKXEtjbDl7zȎlhE]n+|HI:;%S!-U-U` I$A# (<(Er 't\~O"Z 8uԝywNhF{wuq{':sŹib}qjw>eX &̒GhR<9xM< lqKn;Wj2Εmt~*1 u] =lm]Y|[戹~݋0a*.gI40(Lr#*ޅӬ8$WI@2IepN\=?;>Ho#Hݼ@;.ZDȑ' \ƺ44#&Yr_w3s%ytWeuz8$*u3Lo14ɋD"`sTzSgӄ]y&V8r'aݽ$2I|@%߷,XѢ%:sma\WmDNx\fuH_RvLfPIN>Ӓ(q=y}3X?g*%A4KPo%ϻ@qYed[|x!..a_kbTՉ7NXv/[Fn*iGC ^[4 ^,78+.LO<]Vtwlp+<~Xq~0+>sN#Nt@ʷO6"9ue`[d՝Л+_WB\ .@8g0^[r~p|n5 "43-X|}3aYGAIy/dٕnRI1:>e`'|XтPn%~I`׭&(Gдō[a>Dz2s1i^m8 O}[9 |.; [!0!Nx('I\5 l's‰[@9 kun.00:,3Z@ Vxq򒕻aѷ`LCL;;_y/<7p(V|MmHn|XKgqJw>, `Ux<+ %9$PՕ6T9'k$@]^y1IsWm1ɝ?aoo]~<ϗ[a8S[wMWݛJ,9I)I8[ZM;̉"ZGnU1dGD[MLn?O/I!.\}!^oNmAPkɬ%uB8EѺ̓*U&(]+9 AOM0QSr / (x2Mv]~3K{l9erm-n YǥKp̩ a]Q0(+.YǑu[e.NwgnZX[᧜"\`-Z(Vtnvmi3cYލ3[u=~()`ç+I Ձ nP8y.]ҥK3glFR3)yX%sA3-w«!i݂^CgIx Tܢ<,$u&ӺFIa+uΫWMM7Xݧ&z&B\p˗/s9pySUg'|f\po6a蚭Xb}>!G, F MTUA>vCp=yw!f~\Ĥٗ^N>*ΛPMi!/_\x=4,KG#s~i4iլqϖbm]`$" "LL-r jI&Ϳ(ZiuKrW-&NO/O$Extшύ .W$\.# sPลqS-pJehÑ# ϘM9OT:qz??b5-F$b>$шKpoWLMp8ŋqttI0͘F<;qAbRT(#U6R]c z*\QY W1sʔċjMgGg|;ImKޛ@{%FYN(5ҖwH2-gR 1;]c2;Cu|Ufd\QL9/ z8u * ˏpQ;J,ӿTe,Wq:t IDATbN\S&AQn[#4uWLRW~kgoB-k8Iv}ImQ}\K.qtt!~VNy윗&bȂz敏s׊o5kCuq$94I\i`KUj Jj=] 6 ڦi1Ow.3wYMxܖs1<:|inWnVW0Z3+ 0:S׮M.f$.b2/rd"oR[N:x؜ӕvH6LmD5TQN{\ۛ!Ƙ;xʮC)(ʏTղfő?Ғ״Sda p$)cy-%|=H 6kZX`I~!p(֖Thys%%Dibe:d.jTyM-e-i{mFO/+lD|:GoG]7dbX_ٴ<|@,t)+M:]ϨsMp'<,ٙ^d jqQXw Zf XvPOQ%w.l{gg""SLzÏ~R[ZIG]ycCTg+Ṣ~zcjGoQ´d׺e*#ojY#ihEklw}BELpk yԗ4rgY{ [vܵtl6CVRD(*p|r$+0dw8+xF?Va9S?FTU^Lr.U[W|b64k٦*$鯢گM:\9r2{ک %Vg?yJy-g~38}{uR5$  S|>*1Y@`4M ѱ1(pS4EX 5[g*(;{UDUQgѪ`"IB!o䰬ط̇cuEFhu8ϋ?˩cqVDkQ[z kL&eS8w]$=PCR3n$1\YKũ8Vۨ}H2)}77M >No1)I# 8VT'}bf(/W/ss-Cb[ˑ5_y-˺V"|j)'9yRڴڹK7XaiT,Xe |.ZG8tmYc J]WTQ˭eꊾS@ J Ee1 pJP2kbtMp|:qk9kpEU&f"$\Ӛ$RζPo2…) [O.es@g۸Fv܅" XcE#K"FkMt?WveYܠ&<,%k2_$9 `njTVbrN4r6gIjpiS_ XL©*3tWa}ڽ+*Ur>!U65  ᳻ ;uz'm+BmscVHYWY5em 4ؖ Tk(-r&qh[.eEr~>IS\t1sl_#P3`,er hn|.BQ\8-;SɭŚAHqhHv#՚Z2~]zv,Cf6AR`'/f KWFnk"H[>RBXtf\rxVL7S&J"9O 9+'HF `/R)/Q-#L+LǩkTD1_])SM ;]D]d+KYMZdb”f/ v uK2ꚾ^:uC,uH[aM~Espκ+ A9H"$#K2c @gnˬ9,\vd%y)T)Qƛw=IWLSI7$QܱHa=~k/]SP%E%}"RO nH=u edSȧ4"KCn&_ױ=;~"u:rQ&(jFUHikָjU1/RL jJgZe3AH uɗ6)>Fe&mjO۩qgtVDT4c1N5l-xl- j#CcF$I(UIVפden@GE(DX~olq s-Z6D]ul˳9".nf:2V)suv*}|$A5@:_ĐΕ:Q5|Oz7(4`{08q\xYx ˫8ny-[E=UzP8[ZѪ*10;uyvkCZ, @l#QkdfsrU1q溰C'L(DEU#^݋j8h*.Z,,C!)nq^] |}N];Z.\Et_D.m(/10+ݹJ-`R=ѥ q|_+芒|_!~eBsm!|Du#u|(1%ގ4va~򮍔EjΏ_Sg|d;(˒t:-MuT]Fcje c{!jI]gEsbk8NPE<+I]v7n !RW*)/K^K] JRM8k_;I^ٷ^|b1]%7"r+٩w  .IZLв/Pc*EyZ2YwkT" *|〇4jU!|D{pO]-#3SE/ɖ#*ߴS[eEX>yg_ l(IkҬ"suBkD8¬ Gkduf *Uj$.P\h.穮~{Fnۻ˼ml -> M}(C41HlihBpׄYDCTUb& *uCXc vkd, !"R_)'E Jܟl[W#c⩮젼u. В$ӌe~hYCITLd9ZL-wm>6%].`u 0ዒ2)Gbb#B?p3RM9ia'g.A~{ܱW\FݔUmaHUUN]+$2нKj2%N9INOL7%}$<1ʙ(rroi`j\d] 8-(:X߮|2VPZ*bn5]IW^JGG/r#.$2@g=Ko%{"R󭈝sLӹѝMv$|(pr 1 OQr^4˱?iaXuU˷W%SlƏ%'IN"2ؕ6e =X]fN`j1Yo1"iN L@☲*;]WKe$cxR.:HClU:6X?tNx*)].2^f䧨=4ʎ۞;=یYVǶڀk&eSm̴YĈI>&PPM LUU/j(X-=a-l1OZTf ng|qRUk(x9򶧴I{R +- JYdB^J$"y la*x$. RwZQ<:J3uG8QO\oقU9yMmu21pkro #2^ @ b2$%I{$"Y*M圗?J]V*EMH؅֎ܷoؒ_3g ڊY#(n0D᧸b8M1UXCڢ0 ؋JbGww%_žX(sb6m,V2A>Znp[,ߖ—X|G`XzYvcuT)[B` ZpVLz~2`5Ek54u&526J*;?U9;s]Ud{QԘ˸;s dY6oD+fojk jcgDsRQ4* M9JJpD&Cl I%\QU-'cTTt`2Ђ6'-pq%R5Fܭ a|BK2yC Z56S׉@?uj(U"~=NDb,IHH tޖV<-xM\Wuo,2d<Erp%0+}H=CiZy԰Pjr|Zۓ%{8ЬczbKpYBQy1lPy7P;FC^*:#>+|ӂG%>"ԛw=.]n>SɆ;ov.ٸG96q0 6bJm h9p]S)P8b_[@TD<:a' ^`_Sg*;ĤioH+Eum IBBK(fVuw=hqJzmy3k2 ڨ}T!)ڠ$zNlKvbIFb: Mq mӪqۨ i1)e(uk ܻD80QD>9ƟmXnpKQ3 }lXk8SxXM׆_FY`Vy9%6>}/q,WI{yp]3jP5gn" J.uD<=SVMz"%0SũkUY]U$0cFm>@ƻ]΍}7c( ]yňuff yFlqyՀBN UACJeusYx*{eDjC=ND6`\kȾ ys  bhkh/ =B~Jt&BHsQG?H RihdžLiDdiYPٕmກ.&H<]#^dOޭ{ M[[t:,Vŵc][}+o30[:gK@TPYӉ̖T% (+<\^se m`nC}MC[>95q5u,̚_G}fFtM ikIIE܃m:9H @ovPsЬ+w J#EMJmEq^SGnJYC>ô,p[YXުC3µk4Yakl`&MO^ !jQꬶPma ]Y&le%7]b"&e|8C$9BduCU1I3ν-;*-ɭlPM6MIhX' rWD 2A I ?uU1I&U? I"bȿ&q $3<&iQ+ZNEU{MGrO1RXobM}MكhYp]$-&Pcy]lY3M$ɒtb/9xuQMǿk'h9=R)L[xM֋l1eҌE̷$/V_jjd60~iQ0MRH2.>}%}Im{ʓW]1JQ227hnlٌmbsL%':[ugl쒉 -`E.& >ý ^9=?W .Q1fo:2,g ^n,U֣e$CwXGF]@wKXeeCGzW_087$I_}av^Ggg,z zYnkl&4@,$Ϳ%IUO,$n3M2n5f?K1ɿl?=Cym-~ IDAT;;; Czyϻ,27oC9(3=͚ULzWlqp^ztŚlҐ?+i> W[&(m3kE/|5_05Gr7ui1דx%l*' $Y?)Pyl._̥KtdYFUUф%C]&-+~;Z14RO{F.p2ܛ%QQ1Wjk;{`+ LRm=9&v>"򊪚b|JqMρߟk4( &\:;+G. 0[jy8Fꨤц#?% G1 3u +y 4&WoK=F5͸!-lrO=Zϩ:wݝSۥK_wvƵјO zN G=r;8crJGoV並g1\Űˠԣ.7>;vBS;ؐZPW;}ݰm][j>ʣnkbKza{#]U- n7\ eYV+&=;qA/!ߪUZG8᤻*cm1DȗFs)SV[]q7 3-+)].C9hv`XLoVwSEqe888S%шyiRMybyͫڐAbxc,pm*~-(FeI(QnK= 8vxπgL 6݀gZ<'&IOw%@]UG9Q}ly>WP Xks|+ҔM_׊~S`t]xC?TS{ӹlRF긏*WU0WpUբTX'a{`K'K<ંك[HdnݭMSc>;tgR ?k]..>M.f$.b28t)WMj{t}yue6s<=UNF,B-`P;~c^Os:W.RX+JIǢ^wu/HK^ӪN+5MH _Lz옄$I>7 ]A$6[Ivُ[fت:?A=409 FsW 0S5qKB V P̥[P)PVeECKʧ̇Bl1L ɇ{8t;ێ(kvN $.uTqEqYeo:Y(],;jK Aw&(%w.TDxE2.Y8QS: Oo C\ ta>#"Cqb'uP/HyNse9´d׺e*#oiYCh׺nKNjʫ6|[Z2V7pGIM}iDy?ԟ/u~]#Q^'tWĤ瀗j{̡wk$yΉ1fz%ղSVTU~XaZ{O 1\*/&9GIB.uUI{5Fam)tm*ReϻP[tI@-gᒿ]QUν$d&Rpk_ъcusC>!)]N1sYg'xaa4Y"&y', Q0#eGJ9/p[ZynE~L@ |d :"fp6ۦhuR-ޓd=ՖZv 7Gˊ}|xW]K)*mrKi{})Mc9 \tuI{A7k[kqU vsirF R9:fSmqNVQYP3*ݟ4V>u}II).b@Lk/+QuW0mI8 N$UUR:IUZ\(Pr YFA]7A٬s>OoZgX^*"(y0\2ۖb%bMx'ֲguFg66 ?TxQrER~-b;D2UpA FDC|ӒfVmlt( ݝ f = ,S0E׳83%d!EP[\# UFZE>SP^t]Uu_]fC`PD#RT=I1 _θ֢Α 0Zcծ֘KOKWe2YZk2_$njnJ+T*Y }P ^x"/z}u׆T5\M+0F{/!=0ꉸGhM-m6jׁ7jF(u* t$_Mcve x׉\exIճUNh2'hf ,fauReFHyXi db@ՓWViw/Q1W#!ٿ!º:@e yb})[sy̍tS/[^5;UAd9C]fw }V'J n45Yn㕕de{- ~𫤼Y;$f(ͷA)aYfuɼ9%S4H3v~^jM@aTى M/l>p)zx,/ k;@:g묝5NanR*ZPcM]Bgԫ;1D;*Ug각F\׹}&/ ,3Rt2s `G*JC(%xstcD=-,mȽm~e9ֵhG&>t"dxY86e!ahIEv풞[:3? 3UvOqKdjq6KX-JM "X} h1FUfVea_뉄]u]>Πd\"y,:HŪr]-E+* m;utp"5J֜ҎpYc43j.@Ό&!\E]rUIVצ=6qyPB _Dd:PnxRZֱg1dt(jO7 .ئT2,7$]JQ+#WbLZ$;k:_Ծ}5 |T j>4QJ0Vbi8qXn25D 5$-Bo yb~bNQWVme/E r\瘦=H􁪛J{hq60c ce g8.D.a 4<^y]qZr-Q2LQE5ީdYn]iV}"Muv0 |j;,LC{ޤ g9Uy_3s=SyipK7p.%Mx Ǵ~$": !1{~=_ qFxÕ62 {1e4Ͷk ]]RəY^_zHқxu?~|^PYv=s.QC] SNԍsU~Jl%gtg_WWmtȻf'4]jF~l9UA7B/spb֚!Yxޔ]A)i*wl""UļЯ%[9<,Sd jps%AzC0\NNZ1EWh" BBӭmNFC")AQ|#u|1kҵ)Q:`H= 4 smŎr Js^2$Y]h9B{΍p]W" u^nqkFl##1~M^$q&؂*a1u9u+)%p=.%볧eWbgPX^^Hz5.btC6q.QF\aPg7q[8JK,y.ua(+J5ѻ,F EE~ꁧs(hmvCEvԻxv_һb1He1oy+y"D-4 ZF>f*@)"^_@|NnUP6Z>6LŘ7pwHwBy)(qSКK).bbv#bT 8ZD84 axQ_Gkduf *Uj+'N?AS˺;N=pk3e[bw J+.9i9II 1I"P30nJSwppUJ*C1\:mj>xY2vmCDBʏ܌"2n27:Eq( gǖƶi(E r/ AE"`I29Z`gK ږY\p Ǯ0uĺ K5 }*bW>/Jˤ!Yn4B?p3RM9i̅szN݃U]|N-Fё[RR$u<'7.۲ͮ [&F!Wd\dI""Y^A ”HmʪJ긮>ʮIȻ=4EW"uE>sWOWA{q.}҉?E8ow=x^Y9ao4g'dƙFT͵YI$iL]UU_x:zAk6]GjAS{|jƩT%s@uIΉ)y W;#wɹ6?f]f1я̣G:GUv$-f9CإN RwZQ/Z[M qPx*PD-?u%_&|ܬʹ הoˁ IP[;nA|ت!?,x-xN*ѪJbL*I kj@ sV*E%Q"R(ZS˜(kgv9E+\?g~ Jh+DwA,"'zxA6RF {Q@zu) BfS^o(nˢNʹlp1}ƌ|-lm?R"@;xeyPȖɱ<=O;R$2rz?uYnʓF64ZjPP7U8<dSN9Vg'}ن[0494]PR&Qt 6ov,Wͥ-k:r3(BTD UZ&,Z%X )vfoU':';l̃yBh>{s ߧkȿSo"Ph1n\8˟ZT+_hQ",!φ>y_߈s,Xق|kK7X',W:O)IX~G484.xxeă7ϧ+x=nyEkeQԛ4TqfI]vi@u{6oQ xSJ2HaDZC}~wcǭS WlDT+篶 l7Y1gՅ; N*'wɸ1eAkj喴PkӤX.(, G {n*cG_׶c+*i,r/{*xvPFsѠU90לc6 :&f" EEvmYf4ډ&ȷw+b-}u;[xO"!xv"'㲨F@Mf׸2R @S,fm|gAqxA ^=VQ0WzvkT8MEX_ȟ{mN~6sE 傾Ѣ(0NMO=?$4$Z= 1JR\:\Y"< Tb |WaGqk6 8Tr?#mh/q+n34(1ʅ^M8#XdQ,0+,&, l 8Kη034ՠUƔfk?l6yyٝȫc?(aGJʠ}E6ays\{ц!Yq8>]Vmm-(ml\pH Bmm%m  ͺQ)[9k:1k:ksskH +5`6P^`ZJ&Pűv&k(p@-ҥtuJg؇ h!]cM6JviYb^|6R1k6چ'6.D@mUsy\]O6p z_ O{:~}z~|oMD^c¸9;4]n㶍^1K_So)S0'\u#ܪ//]\7E̟qe8~j]̲fe^,&mu4oοe^d*&%@]s7`#z|5l`MILd||Z9dwŞu+z=!`@[i&`s:n*^,+/'ICLWgYlIX?49̲ALHz~3UL19كpjdﳵpHedYvm,1a$.=ML^6I{S1-ظfw%iQ_ZmVx𙗯wsqvruekk`PКZ_%2==ku]FAx>A'IRb?=OٷQg;ڼ ݗM6NLp,ڢ^h>׮]c0-O.%q`;1rsDH6*(??dp 3H`^7'Ow%5Y#t՜} (a˚3CgL6Ͼpl]G?W4M7npxxX|>Gs-ܼl8eAOLz0jûC 1i = 7Br4'l.mڟ70}[m].'-̲$ Iu=z9/۲٣w)jvvv~:7n}Fʲd:_xm3aCb̧+^I:..Id(ٱcuٍ|!aM }S8&sV@ 7J&ྌ$ٶ= *ɶ2ļUEm:RH3`nTy[SRӗۤ}Ugg*"E,$QMIҭ5i]w@̀"r3I7Vj(HN[`#h~_-_"y/m:o괶X*gä2.cTv ݎ7LdUSgm&Qw xn5 mMaNF-a2/,]H6W7ȲhiC6UUJ[ NR: 6$=&dQcwsWP ӼA6 +xd@#'K$2\RIe|QEL5C$L$K;^6UmhR'h#e:q-j#T]>UȥIYUj jF,*A/Ӥ[DyĝLZ%H<1io$-#~fG9&˫uAAuF;~s{inY1§+^p9*/D*K_)P-xml6v5k3 Rr-jeH5oahP}BCe|rRA R<˟"RS_d+zV:|@=.FZ97aW+LYu8yJΞ|Y K߹Js.ږ ;ʥ݀8 BR<պrZ&x [U$ow[/^rOՕQ8=W`]+*S$G~r۾cs\&pmт= Wk.I1܅|~GJ>][Ww HR:cоd+7ԖAJa4[F͝U-d_[L82g*);Dr"]& !O+դxPvĚWɆ0LXw[Z.vMotCl.(]C2 Eqdb ]o_:T.IX262Cki\ -S6Z`I5QqReϽϩH69[W2,fu(Ƥa"e|uUsے0l;7 o%@{HKIyEz\vDw]o3΢e/XnypMHWxWlVEIF;캘.{-Qd̍`Q,5|pC*op)l ?Hu+lj:~9MpIX}kOovF dCl1==7O7ړ$HRZ~_(M! N@ #u|R(M_">j"Wwo9yԉ8g`I}Ums\EbUNl8FmehzmLbDRܲs^[sS'=Qyڬ1TRzuC$|l*_/{fӒ®H[^H %:BU^IXOc_6>E$|-bY.ԭXP{Ag65g } [ASG[$"HEvQ m7.{8Do#:3T(K- կPE?j@5|U2^!嚘QO \q ~8S.y|'ăxk{ȥZZċyR-DM$%͌$)fk[Xb_(ItD,$=b p% Oar&ʑZS`:H[ d~K*>U˷9.jUt Vdν hYVE|J [*h,bP@mc3;jͪ;OQrg/* )a R&h4]!Oh(|'UC|y#8yWN#Zuvj4݅W=-l8$D$Vg3~AU4t1=U ڊW bXX 5%+&"qKdȏUۨ[D* *'+edHR<+}iG%{^]lE:yKo#`KT˹4L`RJv"6jsl҅,@kp&/mABHL,"5X$몭/8?CV"y++<oǸ2E=@D9"fml2AUwY8Di'+a&Q0'^|ńs#=ĈjSlUv1.f*r"flucԍP[7P1m;R/Q!TNUW3^2n[Q"lN#d :B]Q ,@sТltIdl#K^3GɃ g{; UWNT @LG.Cd ճf(I5J[t9j׎}O'Xդхy?"&A}j,'kFQSX0X'FiMvZk34=57]#<騼ոmfq,;$G͢G uFUo촬JTMlS%.˲9{Л#Ā]~d ߖRwZw-G#`Y%9ɩ')'D`ǧIJ4AhL#;4B[p yK>ny (j&, _Dyx.Խ,{GqP#EQItfڡJ[菣pVǝF.8=nߴaK>p|SGaa(֋{lXdg= ~9& mO3x-Rʈ=*IնjE.N(8cYgw?zI,+>0k;%t@bwPՔeZS Fpa4VeB(f< X$ZaK(mzн(p/_^`?bETۉW#9@B %|cNy/„P; [w",-ׇHM% {IQLC\a/GK%^h{F se7ԥ@3}G#B8Q$ˈu$i/vZ^d˒H-ϿwSs^4Iikݕ/iۥNש]X֟\ʛdtk+ȨTH[l. &}&?޶ax?uo9}eFQwI4LڶN"uf69yf5kf[u#!$On/6I6%=]s|ڦj=eZ]ԦVe7k:o41-NZ{)gKkJY#u8Rmlw)k&f5^Z~Z0dҢP%W Th:7Pۤh scw?$SZ,jf<FAt %̹KsEFTpEskpXX,$٫ +fHE+hO6ظf591i7zs/mD~.1 CvZ \Pqw(pyΰ(9kֱc#;;Wut9*~ԉ:#V>s<ª$7Lo_o+[yI äqߦ2We2>?MR9;س}KӔx>ﳻ`0 IzIX` n% ˞u!WĹhT 3UHRICu%?qIaL` b2Kdÿh+kl l8Hރ迴x&K7^|Ϙ z+Mq>U=nܸ78<iNrJaC5\wqLշssWa 1@ղPgЬ=IPI\ؕs0I>/ U|9i׿[pϣ1"$ 񘃃"2%YA/ ʫZ qcmZl֥h*pm,ŽCKaܐ>)YC_0I_Mh+Z eFm`sEAox?ȿ-h ]1 loo)˒d)b% u-} &/.1D{TEtU3&e 1ˌ@tj3 ȓM*W:nt:%&ZK~=FP$a{{k׮qڵ:rf34Y0va'$X[<`M53 &9)p[ .Ip ]GS3=:4IgQF>L:vs$4|MF)XfU_@Rq*y3>7]DDo.Ewu-xW4&OMR\$Ij6$}W\ Hd'IU~XŴ@ :┋g nvTji컕HGPM-my*(yK괢F$g4.$Cr//LBw5/پv[qEWbPҦNz=2OtKZVxN:@=E--xvWE&%PVǟ4T"I]ޯ[$MGy3] * Je/D=.@/sڏP^.STUd1\9/W &yAosKY2e S=ROF;#DPǫ*e zEL^0ZI(8Zb%l&"8JK[Zr. nW§%m6iuӬWjsտ^Jmn+p.G-u.IZ"E' B)U1:K $X?)?7"NI^01`1IF^x$W!,Ķ fU՝ 8,g5p--;VWp9q/C:b S8&s>& u: .%y1"i?5iYRW+kj* ʲҒU9oTyKS6u@ڠ>cWCD8btR*DCU[:o+@p:Χhc<Ȑ&@ļUB@>-14P\1s -וܪkok ?jcWb)Q6V[WZ&HU>!I݋=9`}?u b"!ה^Bj)*&!r^Qbz.e(kW?N{Tx1*96on;dCM~ƨU A9pZb#8@pȕvxMmrP"&W2nu0q/մ5Vi\&c[ 0KzisS 3oTUHy2$'fk4lCi:BHmכ=B9[ HacdSXN2/,2n&5vRi˅}Y̺lt׹ m H[bPkmVι U1n 5J>>IZ:K"pHآ=C0ܗbs`a:r^7ڷfյp=^ֈ|(ކ5WW2.M*[ȥIY}IT.PA6-euDyĝT !xp˅$:tRp\*˛[TRO2heg g$܃e.n28NJ˘*K_)jsTua\[l LK#o}MfU#ڦ4JZED B[VoF t1Sg:2j CZES@|WUeX>Va8aPs~^TYnzq /cWm`FZYa8?Q{6:+=a:~߷mYD ٝ skAr~NOFmM\p\9WooھwW0CPzIC2Me]2ϑ6ϩ+xז|نԝlL i9YWۈJX5G\ݙNE>Yz}UC[&;ǫZ2o7K }3O.wYl#|@T}v``fH^WgCϲ`Kd&Qm;-nvvG f&U|>[`cuU,w/ĭIѼO[U[j^R]+/2 -MQH8OToH[mmQi3{~c-Ўd}dSoL~Z'\IKnۺ#_%3׳w]? "@MuKZmbG¯p7SƧ4TC@ucL-bDD$|ZWJm8f"Xg$vEMnHBW.nVF/9*z&7bVZdjzs:Q IDATީ;-Ny՗lH %Ƌȇe*S$iO9&Zp"0T'B.U6`\UP&/)2oV3*c|V8L#\6s+"6%܈fg34h{ IπEK.-ؕj4̭0x:BW݂sf^]VTI{I3ȃ8\r&C)IX^p_l bTx1s`8 ~aRcUFb- JuLi)"E4OG f1\E] ?@q.O߳H]yswxMٕKlM/U.$ICX)_pl2֍O1vI2xأ$蜉X^IzSFlܒ0UL#<uCnda'ab|ǩZUGvQf_Ε8IOՕ[SF5A޵< ^\.5'Qx0Qwdݑ-Y(& F|?}l)HӴ,IFyI$ɟ – 71(UWT "r {YaP-ߴs^j"@@tW{/6o]`D;d%nHQ#5IHRO^ Ip_r_w2@2IQr3ul\Su{vΏlA\;Lxu_GT=˜E뷹D\*{)D THLzc%ŮJ*>,'j$ ゑ[ʆ6XmFmo9S.8ۈ TWB`&;QW4̃0+[x/RlaI`x hOd1"iVOg=n1 ۫5gy%VSBm5h:5u;6]fŻZ7P;oq܍HQ:mTV5fUg|VQFĘ_%!|WfQn[ kX ])hZ8BkGUlɛ[no9g ڒEǰnA^SWN=Ty 4ʫ^4s`g <zɃ"7ݛ&~uOjCm]R0aLr(B٤UT(αPPwt98#'Y-T5\y$?6n&YP,lnKUi> &):=j=ѣ6 >CFSdhAMVL1 b"2&(r~셍L)_\TqَXͻ9^}(>*me8 :^"_0E)f+~Ur~@map.6$(.YH߄'{tCn Ґv(a# )s-h"{rr9,y((#G mB} XsK[ֶErǦA Fϻ(GAi 5;lӛE(],ȇwj21kM[.8epu4x 2"h8iOط,F]9`M#a݊!kIc b "Jj  !5.yfEY:wg3޶~ Ff>ݟWWǡ\]sXdB9ұ뚶Yuϻ(Y~r p?TʇZ"o 4NIв 2ׁږ=5PۂĤA0U605XY@n͍`'Z悷jjǾ>]z6?I@m5&$dtZncn:aUHgLk(d>إYBUʎwk<,6VUTͥEͮEֵN<ᳫ}P>@d -P:IZ<4C#:,T "F=Gݩ™HrW=@Tpr6k̇ٮ~(#pafZ$=Ժ_rˮ]U V5\"g=[mT/"&:ٶ~ ǒJS.jƤq< HGόbz×+ИP ß:+CXۈ1Tj7y uF}5L:d4HT:7Wz~s'11hڞ= 71oI\1?mȺ]`g{ \b˴sbzMV@ =6n6m5ƚVI$&ͿXlPU(pqQ1I2xcG˿nۙ=$ },[oSfG0ƋMSʼn1IzHacw FyWNny_Xiȸ$;^ i/gf4e00F $IV`ܟ fI% ~K5$ ?/Aai6FfK .Gzܒ68[˲4McF 1_l ؤ}[%[MIz'\-6NhxZKMwcxҠ8=?_+&jO${o9ǽ=vwwe<3jj l_tYUssu;.karR8NÈvy4Omfv6n3kjH ]G{G):H~M4wuWrU.]!$IAlƋ9[9ňT͈ۚ7UN1@OHxS(-ϵ].u?@{`$YcKRiI/?gϪsY>9!!R` p CTR&L$z^2 o*\s[KYeGDxF ϑ`N"ݜdnm:Pۏ,h]1_{9wW|z&5p/_ի\rK.Keed27ٌ Fbk9M<[V_0.D5I$1ʬr%\F^#೦7}-wiOGq?S_Ryf'v?EMtp@qW\𐝝$!sf &|nJI8E 0x(qV[XޢYzK-pJec;\upIXXbJ>E}IyK9Me52jnv~sS>9;]0\ *\8rW3? v h$n*\U9 Oa5eJ=8~10fEuXP!4YbҴdCcQ^毬</I*e>sD MSr /_|2ᅳ Ls*G|˷qUAKXYyT(Z!uWsֹ|a :7Z.f :'cQ:ei:aos*{~Q1x9ɔM]d4KFmRŖa]6}`s$.a2SP$ȴ661#%W?>;?'LLӴ}>y3>5[fHAA)Q^WMɚhx״ E[Z248&}&Y ymZ_ mU[V]c: Dz/ \3uUʖV ~|Ws4S |j'`M f3e JҲ:<È|:| 8ej|ѕQ_%:E<)].M|E,5-̻6|I ]Ed\2I:c+ Ikd\{s5bRz{GA^7;,c8ֳύ1udyuUQ%g-C.(,Ea5-s y|*H" >$s-Q\<4.&HyK]@A`ayt9rթl+-JnuxUqy-؉ld?SUcIh~{x*!rt $.|F=?zύ:bZW=z+&9WyBgKb(vds) )lhOq \yn NCKNI>b2-%VQ!85 [(2 ֕ `zB+j]3Y,KJ˞m!Xsv"ot.mJ*xcpU.^9Ĥ{kT0T-y|3ՖtdӤ\jtj#=FxU%Յ;ӎ:0BL *Q 5[VDŽ#4d9h;FPvZ6!|Rૌ."r*>On}z9SǙa*Vzcҡ j6s1&UHf=+%2AC4C &C#=5WPwfox51b=VMBW,V;ÁT2%8z{bxEnogdZr-,d9$9AxclT7]Y p+,]̱:;띴d0eenI7fX(4in1g;AM鏰Sԕ5D9x|G,/0$bxI?~zN :n\^v^>ᲘH=/|H!k<~P"""hkmyIZ3,jjwqօIKd8;>^kO%]禴?mnLk"uw|ܴJO ,Y-X2%f/DYt}aD7\8n&I3d0; ōk]U5G/pK$ }3N.޷IE){AQ0kDMrS]y᭚ab7kg xWe1 O 3ةҤZ„^#bH,֐d/|=j [삢ي`[`W(5 bS}69==K:bA n~=N6T%W>$dFkG)pj) Е 0Q3޴eVS" 03LuN4`vB|pq1ih%R#|=T,;0C>*Qۍ*"9۱G6TyqRҘSU};eN)-KŤo-A:=S:dktz`+DӦߥ+ʠe;fLEN Z=KEpTW12=k$|l U|3:T))3uOG@M,S+Q\?( $eE:pZd"`Qj*p] 6)c>d*;m^sB(T[;ŌhAGE򮧸SޙnV+}ŕ>xzhƟi}\ޗ(YoWDcL§+aaG`GҸռ D}[Gi:ci ,[uW9ߴFeݪK}u1hamfS+A.kZk? o$0E@ގTB$Aj y~1JUh?lc1\i 2–ulSum;{ orMc?#y0z?7~#^ض}UWٵDZgTyJI 1F$*WV\B6/oX-}`r?[+eƊ2V` Uf8ްg|\pjmp[tHzS]qWD I,"S!(/v`#b;@qHI DclI=kK9/F[U:,XUϷdՀ:D_ljZrl|ܲUT,K<=Sg m7nyEe AQn֏I ili}=fZL &U`ӡۖx[s׵VR]IhZV(9f<%oڂog+[pYeyCLz~˹ c<牧ym2QXr: 2=/d/?ƨ>e={h\+20,P\&Êp8ץ`{Mr(BIUw:Nqr 1&( 6ȸQF D ݽC;+tt6'z }@9{xK]3_MF{d&.VB;0P| 5{0ҳT$$2+&Vr]Lԩ5Af5]*^1+kl;4 .D *#TyǑ5A{G fBLFƔ48|G=uNB&?++[6H,Kʖ:#zGp;LH-: \Bi 8T6?7n@\٩ ڝ61uER2)RBmo@;$9U}+)>׭7l8p,z0fν74А-lX-0\'wΤcƇX;p36On\j36)sS$ pGA!xOf-<D2IDVK"A;EE/f D{̼gj9ݭE65bR^\_`dxz#oN19}f঱ӇfI0 FݡUqf@ymڞ&1ޗ?8u@٤1 n05>PZ*5lTV(N$]{_$]^?'H{찳xܵ_B˙\ɵh1TSn`P\#سMZÈyUW6p; ,celsGLʾwNEb)$ c xB5Mƺ1dtc?[D~ƕy2;KyjZz=8::ݭe9bAȹV\-w~6˕ѶlJ\R >arRf" cؗ繗v?3sSW.^Qmܒw.qH>O̎Rܿd4qttիWz*.]hD$d6ɜr^-VɜbDԅ+X] iՙ@Hx8(ӓ&|GJ l25xJh3>&:YLN)X5pGGGqαX,'M|vs=/o#Xr-bw19fJH4`0!jy:n!3uXi m8SpIX8lU +#nlOKjܙTUaцĴxN$Y?or>ޫ#dY./_𐃃!"|>gv~.EK5&E9]J57}vT0l2xI huEubdoI:ZͲ-t+Q(<W%gPEmt~$IW\ҥK1kO&x6iN?!_U:b6+#*S|[jYc]hpIP.C6US&~]6xlK*C $&Z (gg1F qtt!;;;dYV“ ϟOyeӋ.U"cZnm5Tmp$94TP܉iǿŤaQthY2@PV/_K  AHӔ}.]!{{{ ʲd:r|kӜ n=-w2i`t]x*E2+&}5^{$hxMyf *bU5I_>~R3v} vwwW&99ɔOM]dWɰ7)!Ћ本#n^O)ek1Ϛ>Ϛ!xbeq.L|&Z;23h*ldGK%T{agh1e] [1tӚ!Dy]KD M ҂7<>'#1lgl.C@سϫΖј55kr:[ʟ4>R`ggw]c''_ITF|OviT'˴r x^ 6l4~*/(yK괢F$IFk>Dm+d_ "i{5!̖>1m38'r O`0`82 s/-Iro+R׵, |I ]R`DxM2.QMCݎ_1MOh IDATp2[NJEU\Y`~J'dYVS]p4[k)9;֭zHT9G&:6 -~M JP3\}n<Ț\gQ}evIGViLKdb?/5 ގ|*1~OU=N˲d\U(!W"M6[p}wK1*Mz%CHqT+1ڦMF#1*8>*nY.w<ڢ`Tp=|Km%$6QOX% I1_{mVG3Dk[r+hV,;|"WqI2z^}QZLQLa#Gs(zwfHt]PuJ\ZuJ1hP֩UFG"I8(2O7텢FI2cWUuuUH1GY},z6X~Yg|8V]K)*mrK Su,oԾVJr!hr.ꮊڧL5m2eE*KI>Sl y!ZVCV qLNVQYP]o:vXEMӕek&!@[yeU(0.qSҴVyecA s-f5% O:+7ܪkok ;j. McUU*obŠӨ$ @xk)7f9;MJ}NUw* iA">}صzA+:GW|]$P.{shAw eC1 :j&+-i\vXt&DO hb^g.y=k׋+g̵6imp]eI9wjg]^ SvGP {T Lv;&JIWivɼuHX`xAYhQ\Gc"bo076=F _Ԕk$1|Ob-d`r^dd ŵ<#Z^Zeh4LrpICbfi GO?8_cmusOc&~*}ϐB/P_iJBI#ualnym2m*rۘ$;Tefu\ٹusjXtȻM:UW%bx Lq>=0>k[m Gwz]ةNFcBGR߸s59ب`4Ъ| KP}1R.#v^NZ=UL#!o-ZOޔڈY&'1:A `(QU\sݪC=%Z딘0|%l§]qb l: c+mL&nc*4.w2啹:WL+;kVJL7S&ڴSUe᳤ V5Q |J$)#$}JLrNҡmvr2Y~}c"+i5ӭ>&3=;[#"Vôll,t 󀖻On :u.Plօ\G/̀M>NT b%9 A(۶^\+* McN1YjgI##AfˬIyj۶ .&,N=Az2.wαP i=FIY>IJAu,͐)BB?:QxCơ֒qn0!Skcmm6MBmG RCߩxLR+-EQ\\U[`U jjgSv6:WIf.h +WjsE&},B [u:ITߛaڒFNhiokAοe=&#^6Y ;똍>mbusUΥ:a== 1ުZ%ΒUj׆FCgvErLw6Lu֨B b(ͱZevؤ Hex׫)é86RO h -c-x^ N詒*Z*۲A.tFw^&ryEŪMWpZ5Ҍhr{] [AmԖa]ߕI*މ`Ryݱ!6$:w%D}DY /]>xAZxd-u֪Dj6) D/|QۮF\% rӻB\l@8$\D\nɗ&TW.Qqw3[kT)%YqnJ I…8~ ކRR~غ5O6ϩ}Wp^ i?V1_|mҭ[csR! -Q['$HXUf|SKs!pU~eBoT79w@^PT"3\X.[nyZDQh7-Z}#ݭIN׊Obvk5Lje&4MjQ˂`>c&DXnb`Gϩ&UWhU7\yA@f?EuDޕc7m.ls~չ|g iNB͋\X*5,L 5R>/dC\oönR^_ r`(53u yY8peM:jW謊 ӫ]=Dl E QkgR̫tSr7vcY^@ʧȖq&rƛlniZNQԑ{.}liT"Q瘪iZe \:QgDܯmHs-=.xq)igIDlp]$M$͐Cb!T4NQU~<5/%}O`0F+}aG`G1(UW$:J#Xˬ{jM[0he.M@ z_<2lCq+֍Ak~ދiR~$Z2Ԥ"HVA_;q㊚NuʎI*pCSӖ HC,y'O\o9߳yxKJ uCP00Tݲtc-3XiPe-=;Sk)q{NEʻ+$r)*EmvE>xM RHi TKu̪-sI$Ijzf/9m*|*HyjJeT\W`%+':NWe;k6疭=!j}ҋ)p'8RXn( ֙Dgi>ISI IrQ{_]+#u-&+J'ZI{=3I1=Q[ԍwFEڨ9m(T&E2('&x3vn@~s`&c=̳T w0ܖ{2=Hv.,řċhQ+3.ϸ\W"frG驭m 7_c<n@u6b]25iH{%0Ȭ:GHm|zL\l~aasS|朼͂LaC!q9{=,$2 ^W/M:3 jk+hA,$%HI|m`nӞb ws շʅ4.m^#SE>p𚆻D'R=hYfe(fSTWK,S鋘ޛJaNDwuMvlp49AI045ǀ56"Ѓx?H'Ћl'Æg9CRágat7{]s'#"VWW %23|߷30QD V\h,챨\9D1q4fąvlX9Ş .gVޝyqB(!aiRQ]J;1?("?;%b2)QԼyER)+L #낢yd]p繾Czj ,lPɐ4wE,#%84K'5?܃jGWA԰,ϵˊl6 :;MҁsϾv |#Cy5JRSp/'ur k$v]uycqZ&jf}A[<,o#9 ;k 9n"xM{̍p 6KʩWme y,=lؓmO"vA3,"F\Gs9|jd ԋչ+Qx2?F]E 6>ڱۆkߑͲ@-.- J43O`3he?G#,r?;eM,-R Exn.|ci59O=P;G=3MpyMW6:u<@w=ְHcyЏ)#oQV<([:1xEq. N]>(L?֖}jmTwQ <^R6 ^S+U`)FƭCimQf.@Uu@#f܏"[>$Xj؜46 7#Κ.i @Q+X;4+ڸԥsysb_<hSWME&  RPO$Oo@x"X&K+?rbuGzm]:`/3$Ԫ#heU":"R?_#R_fGf#85lWpNxBQ&9 HEw[I&q}_nvΉ臤/7E=1SaQM!l4@ *4RhppbLϏ? H5"Zu8!, 6]u}6k6"5#ZHϯ y xMx V=&T>HESWJmis~mԌNnnq#fR@Mm)%$?E< a(+d4xz*x(.|-w:q:pHѯ/%gG;QSΝ˷p>S:li/$'EQL߷GS d չQsUI_ne7IyҴzFtP;7οM*'[*}NQg"d:.=4TwCRno?utr:߻A<;XI.F!!~9o67uh.MDLŃ["XsxE8EqO~p7H+&4;=]H)zh4&!>z^"B3$7Ǎ". hO$fH--E^6'bߧJ6/dMohRh3׽g%OdG,2cF#looc{{jSJTe8Is=4wbp"1#@ ;$Z2YHITTQr:<2t}#r?kY!DO\@)n]` "$Id&3431ŃbM`SpRb-.(c}T4[)5ǺC#F_ #"0Y,(FIm &3||˲`X 7C[ұRtF"8.Ca(KDTCIXPB6;:[|+]#SQ=S?#/@DmJ)F#coo Z#I'K]o "~MLS"܅M0DPJgxBٙgGD>/K>?r}AB.P>_Pq0Α޻9:vvvlnn"cdYdk)^eQ7O]x i8^yM {`hl94HH#O5!RCu"&Zb{uIT jqӝgG?# 9? Zcss8g)^T ? %C*P#܊MD(^K*{h & bkXMyBu>PRRfG>t Hy6Gv| ~Iq[[[a>?' ٓ! wݤ5ne7#n `1{P-$R:3K hpMˊO&Jj`d|zI  YLxy`ú)(9# /,z.\K[y- -}K .vC`0? OTU9/E>(tiSR~ %(4Ls~ YY7N`fgs<=Kp95 c;04!DT g>r+yqYx"Eg)+:FD㜈H?x\MB}eQ纔WlOSzQk%O̦tRJ{;$_\,!5-6UuYw^_ b6Dxb\RL2*; Q.5% E,S.]{_DI93zօ7IcD65#d"an.kE>m> <=3QF0wa8L1sV@,1zʚjz}g;p& =qE- 2W涋tyTRF[ \) %(<IIZ̀1e_sssirUօ[o)r@}Pڨ?߈m10SIED?=["10\Qh*XBd6Wx' a08KKয়XlYҗAZ[M I7l׉p oBϫ7Oh$>0ۓ4jR^P_{M <0Ӥd~-tM()bqM\WQq+$Ӆ'V ?眀s9,Ia O-jXs 6uRhs `Q*2d -@p"E ˫ͱƺu}D_DmR8F+00CXc9kC Ȱ^kګلU)@1@t j)>K=-*Yd:Q>#Ž lCň_&]F*P\Z-)"Rqkq㢕̈8p5JE"xU"y'@+7N1bnVi.h75&Bsـ4W8O~*aI LB&td= PYqװcTI\D1@P:;:(;o**"c,u<ٖ9Hy!-7Pb\Lv\`UF:BW}W(*toN5 &(< eäF%(YS-pV3p#7,a|h6 b 'ӛRD1HE K͹ &zqpg5j"x/P|0K1dƎxqhBdL-_q:&؊y[$=6hn(&7-?9+?x(HZ@PjP%"!ǡoPZ6/ ?ƙ}b̭ kjS ;l$c7*tEa:RCP񰌄)X Xsbb^ B~ׁJUL3aL-r+fEV[ꟴiBFTbcC(B0u"Ecig_UR>Uv^Q TWBDxA`#)\Bܖy5=>娭.@Th6CCg'߱fZ`)d}We10\?Q﹬6^KDY(D%- Ҹ\+598i-AQ;uT5Sߩ%95kWjL c:\ugN [[Y6* ;WZ#u:  /*#ۮIx^$EpdDE$:qn`d%tL/蚓]吐+쎘~=HR)15r/sFnc۪bm)$1_t_Gl46@ h[QȖz*k7@xQ0 +aB1q/7kh@MNAQ IHf~DG~]4 \gJOf #-&rOA9!|u'ߑ ZVq a`Ą!":kd (Cy-|kU[J }yˮR*vcK8ñpArW᳤,Zא_ewlEz~8,SM¯ F.Q_S}^݇Q3;g"3ms `&; ,nj.71OY` %e"Rf'؇.#Uq!'6'@EtQDVF RyZR]]G&[ r#zpmC)|Jtu*a)p,l.2%IE](/kP(2\ 42||-c42^߱60pϻYS׷CyҐKym98#{O ""3s%% Qa;Y㲰D0 q \SID(|1^Jr*l&p/g3tnn rQwg՚'2œ{&d]R[hJsvVQe6#"@`#v,E bÐeIQxb $j0 q)(~W)D~136{3tD' UHƙy`"&yϜޣ'#[0%x Dn $iߑ9&dKP*i<% S$'(ld#Ep$k&v"‚|+&8O-=cI x.A Ms{Ovkw=0it2`J]lCAya00efĶu#Ua73Mѵn\9;b{x p&5yM{. kiOPt K<Ma\# p_ThY>۵Sa=3Ǜy}-΀{b[dYpdY8/ ^XnY5JKZIdiJQ%cׁ6-a*r?k3nhx9~ L9'83y (΀ .{]\y6KEM׳@܌g"l GE]!ټaLj0{(m5EUUAR"0N 537M[{‫rʀbwlF';Dն"5::#ꢅbD !uU<GXr\x]rPr)ɕk%ٵv-Nu;&!$5PUׅ*QdQ83q;,D-L vMlxNVc/ > Gw%O=ڹW[cHz^Tz?WKJ)R͌;d𧔡&-RذEM5"Em~0dA۩0U*s~WL S|EejaܒMU#.x\:Y(;’Od7V{ijdzHX@peq!3W\l9gDxuk~b{T$N7QYUf<ޟyxrnQCkΦV6]9 b4l$O`88@#Fݺ|ȠQT8![mNt[bA:ʼԏ?HmCM`R'tDSOkH$K&Pۡwq]wG ڀK? UgTT47 Qa Xp4cO=d,uC3ǖU]nًzy39=W=NW®ܢ k|?:=Z<Ԧ0w{+<=7<w_Ɠu}{]=m)akgw%.uj )!3=Ɏk]o HM%&cebO{{nNg]Xֽ&9`I1+TC[ǹ1He7T!&@BGk\ku`!@,أ̳2azQ~)AWw?(ga_ɶ. 1dRAZH׭!S\nǎVm%+ŝyK=w¯s9pK6=t< <֧*&4LS2 &}W?Q<0NyL. x?;}5hp*y: 4ܨp, $ʫ/H̲j?_jRc$-yv χy4)p4:#=M*XVʏxLqbvHt/G*<*Z݈m=J=ss9gMgk<#\ܺvLN:mP[_Q\\Ԃy* 5 <{B}N2%\l@'I ,7N<,`wS8,` :p4 'OP?S@Q ɁRGIsuݵݶws 3Iq<4DM +}yz偀yؔa5Ԥ^5S{3 ܱhfb =h{f}9`ēyDul8_f5=蔏{o{v->(;o]sd)(ߦP6vv,([oKXݱKv%?#K' ^g*qvj6n[`p;{EKf?wԠ-<7x2؞<)nmSa/ܣrDXVFXT$ O#]fd ?o#N<Ŋ=ɻ.7x ,uFйp!]-Oܱ=7oi@yCaSܣ^+Ulr=u:mQџ_<*,Nnyԓkau1B5+ 8Xv9:f.DjK<@ǂ}8%trb y7' 'g}?vD^g'n>,'&{9Ô ߗ֠x|<>x|Xu5 sB"Ϻ6!p0mu'h=>m~_7Qk݄u:?X{V:vBCM jXdS/WJpZ d֠:Wy4f\Z\TNnU炇 IDATZ )O<+a(4X6i7-TʨogcOyhX6B{F4n-IXQ uݔHEZfRhQiYjra>#쿬X^nsWJf!=jÊ]rW}$:V:!lIpA84_Z*YVGuA𩢍ܢﰝ•VQWiuгDb'!< H p"oB_ g7fl6Q `uJ }5Q 5Cg0zt4 ?U1ϋ? D Rn̕e2":P+'&=6asJa <5P#`uu @ΰKӟIL | If z7Ť1 '5`=p* mhtROg78~JLm HX鏘N "'&{O8wPP(a/~57j ^m]үK<&Opoq177ͺr3-RZٟr]2CVE9wvz%=9srJ:j^~nnqWցSךkTCu~g6ٟI-rpU^ͥZ :PRݍxpcqѿWnj39$P`0@C׫PcaKc5lZ7m21@ W+NP߻ g E?ho <&mbm73AHw/Hw+ ˗q%`ccnJ)ylh6dz>5lje1 Q!x0`XIB4B,(+QO:1 /.LP=VPH R.ǣNBDG6dۅ^a#r8;kYt!yIm'H4q%$l2s1IYKt\<-ޤx|ƹ0 ރR Z\v1fm 2ѓϲϰ+'Gtf804 <–: =HsTN1 @D瘏Ǹ6]J"Iz0 k)]! 85(\PɗN)'/FO5jǵ9eJDHL  DT zSJ) 9i7BΈX߀+R4tp!7xO a @# U4.|twϏ5 }aK@_&/ LP+/ue,AzFAu:]lmmxk)^eeCMeiV@] bi"WY)!x -M;#"D"Dw,Wț4}1hNޭKjqTv{MGD %HΎ` PJacc`03c:dW&):f) $HW6f  OmǖT)8ᒊ0՘`*J?J\_7Q 5i^LTʋ_PQOQ4xCL9~]b{{PJa>7 ٓ C[bU 0?0ZZ](StPhgHm~K8Oj4OjyׄiXq\!DMKg9JGRp7Mxy`ú)(9I"/*j\K+ޒpR'b(*oPbJLDi9Mk1W4Y^u) %Rp%@" L#u pq}s\%Qmo`S70~Fg>r+yqY`Eg)+Fx._#7TєEDkQ^SNSTwcK^)'3d\PUk]˒zHSr ʭ:${i{MG!ks׹#|R [mq_qo}J˚6!^=R. `#Ay(.2EaU"lVC@aε& K=KXR>O*~״.*5 (l,as䴤:t:%[afI+IA%0",mTjxog48%o Jj;6P+G.6rWJ)6 0R]^AE)1,Ó{k`ZXg*а1(ב"@XA#U毑:Vi^Tj[:xk)|Z 39x>Y9Nk Arl!xE^G験M Y1ƌ7{pt0bcRM]Zu1&H¬(|Z}AAu%tZj.4"Q %۩.ӎKA|>Ucj,czM* ebg8) D}I.$(x, ,“v#j"L"N/u)s+ (\hU@DIQ D>FҶqYvM+V ǑK5BiyR #/^3)MZ;9ʣ?@Y6ZYZ-H]`yss5@n،uT^2k3+TC"dW7I1p@:cWv.WҊSʭ_DRn$3IΒ^RFkvLd1I58D4VS!k KωY)kʭ (:V*+n6AYD,De(@TG^"B0gYu]vúQsdkmVZ]ꚝ#V Ud+tG(`ZK9iIM_6;Ljt9)\mJf8+Xx),8N ֕Vd2Hr**M! byao%:^8=\-3z+t ^YM@G"xS|sZOSTh6edL5"rǣfm/ 0,<;ԗُ`)ͥv 6&iB>1A DUO  'QMJn2c۲ϙ0ŴD)pw릏mԊ0E;WPȃ^8Kv[ Ul3Q5:3I7!wNJ'0v4.&3m6^KD,)츟ZqH-=&\rz+!;&_*&"g0o[wD3μ憄QT5yBJNl,yv~Yh*(̸ "WQ(.~ 7!8DڶyGuMRQ;R|WO.Şg?#mӭc:Q.ˢ/)w p0RhƲ "&%|,oiV]#ma=HQjmU:6ıL9aF@ac$IywdEP|D> biuE֕nPzVDѸ*a1R_=}ve~'`S`BvGhd5~1K2ir +{1i/1 'X1 #,Zא_ew|^_gp3IyftnaDDPs54N557Ѡ)R @X.e2UED!)҈<@8 Xm〵w^Z !'#}h.QJ_gxT{wJR&Ɩ]1Urܭk>iW6% WhfNj3*JC % [ cXE "x_>*Us"9ȼ.~c زʙ0 }me ͕ali{ ˮ/QYEd 1*.n`S 丂mAif&ӣh|qYÐ2||-c~kѪRo oY&ܳ [V8r˺xsP`ҘTDD!ɂ\ C ;`laj@p4. c U`Qې/@ወ2bm#Vs!8<,OE=w<X4/7dt`/|gYy=f)n1"T^;Px"\Bvl~,O«eD%U(&AV@H=NlӀU_I1=8zYv^GƻMzBpHlB2?-Ml֘~EcB/dU(JOT$8S6XR^l'(ڱ ]?+f'`*I0QN|A=1KU~_9erg^&M'djjCdzWL,۱ל)N-x^~JzXORDo/lϹU_{886 B" 0B HD$$0`1C !& yWUUU4{/gswsoUvէ[?wZ뷚c xe$ܭ{? GQBR-4;,8OUUD)H_pƏWaACr"%m,#,V$P)-us~_wG6Ȃ$˜/H$e2{7aʙ\TQtB(5@rlP ;/ZMXم{(wH`R[pˊ@f2\0wG8h,loILhJC썭OhΑpvYJWYuXیM遒!m2n)\F앿 sBN+ = C@y讶 MB^.Ss~[zu{c4t'< Ķ ^,!hc' R9v6j{HfB͝m܂{^ 1|63S T&(d&l6=碘$5)PQc Q-%).a&c椺 IDATݿ.31Ok<#$/1,ѬW4u3IZr_a>!I+zɱ $/xaݡ4!4wjĻ# 'Dv🗪}w;EF`I,@q9oOzax1*%4 $0*"y]*-*3Ft a_W{=v?Ii{!MJR:W6g@qomv3*q}QP@}TE֥OC➴RHTطTh"N-:L)CRswT$QɁGX֡xpIDOf"e&xGgIۡ{ē/6%$Y\snrG&2YW<+5<mnGc!;nhmSOGBJw¤ ` G{.\O(mD(j'qNݢpp->fE 8  7O;gZy,܋r$D-.D+=uRD.}4*'݉xLWwN,AfQᐄde{Bŕ ;isZ8bY&txVJ,/ )i3X0],;/x}MrR%D }B/HB;ة rÞ-T[=31rN_(U2@IMO0R`smaY 4c_8e&$̾( #-@5Dc\rtH~e뷄3 m Bԫxu:^Wǫxn ɍ +C9";tnS{ay€uwG[Rz#lBF W5)Xiv[Tey|#a/F:Rň•{p<,P䇞wvMn9p*|nH G. SkK8=Zm6:F}R'+P6XuHee$wHplJ,@ ]t#xHl:kxmy>\Ӝ' @wHE*/U.Y-$SN{ uBI*%%я)gf6)/lEUbКqAk _m>}lepO{XZl~uA $*^%Wj{W4LrvE82Wݎ¦K^[ӷ G2uu65EsJz<7}n=d܁zS$%] v>oɗ㏛1r0V$zHӴ.;Rt?3bvDžZ3BBi'R)0`—R̳/N엧wU)]I MS} pIԝo%p>ᬄp؅SWJH%IgV1;%x൩BtPT+ᕟI~7af^`hp.IzR W6DR$pRcSK*it') ZlҮ83OuH][RYSSd7`gnhmF#F# 0"ۺz鱑nPN0OT:O 6;&tvxSoS{Fit ROw_^69AvbV$ 1vww zHL6 /l RcX>nrs(`*TJcئi)Io5C %Mpo `?ggz!]A(`ąXlu[jm5N,@bf-@4ZĤ?_W%9}IAPbQ~{U@ ~J_*3,\ݯ !h$Ij9<2\K\- Eߺx.V \J].,N$CYQ:8W$P?&pllS{>3;U~,rd?ޭҥK8::P%E7gs|v^`0RPDUXC`N[u\MbCPl " ITg>Ot5iG-v!!q;"Gl c'7Tqxx#[[[HeYbXNlr\K ‡!:#p$w%-ײ#@B CCpJi"\&\fҿ[d DWb'AS-@NǯUK0 u䵍.^ch9))~|2[#u3VM#g˒F:׻g#^#C"1WU`͛*aS~CLУr!`"}җ;Wu d5AIpB 6RȲ 'S,V98E& &[b8g CUA0hvsٕ'!P VrqԖHpgk66'W`+|[";=?p8%p ^,Graa0X܄]f3N3a #&KP| M5 Ѱw bl7az[93!g#ZEQW.J'OP޿b"h4!.\ .`ggi"şSq6'g9b`qHp+3"[@`0]p>~]%e^$-UL6~;ѿ!0Ȏyp`oob)^?nv*͑),%~,~i2ݕ_f 4;n-tSŒ#(C Pm.,>U"kMSR'դdwѝĦq"]۸=cXk1pq2g9z6φK-X| | ptZ`0c X*ByHALSaJB l/SXK% ]0˭Z\^2[%RE>9EPJa!)~bAT%1_EYun"I!m ][P+p[l0ACRM>CK% d8cQtkEt3gǀY1˭-`<c<C)zx(غZJ@K=%>1(fgS"إ C$Ik-3fTˌwQb X複`,I)?Q:ioPdpfl>)=h!V ȮӻhRm.U))^Wmbrj@ehV.O:l|ZM\5A=w1oO j $`˿Jx#D%WG:C00s%u3z!0 eY"2|tcf׹yXI+H͐ ?s9l}n<tOZf4U'^"ؿMJ#|bcɣ57ZmR>x_*,lZZ$Ghe3oĭU.9|h{`|FwT1ájJ,8aS%- o٘pgC$ `*' }f[ jP4K2Ơs5# X1| l:i#8m7KJJݫ>|?"jBN6ۘ"G ll``7a{^RT*4WG ƟbLHh0$AYGo GT!5=oQ2k1SHۊ%I `oW1"QJTwݢĎp߷f"oB:bveXLRZQ0=d#InRߢ6whyUZoGL./]>K}TZU/b&z%emk{~gfe>P ZQ|.o֍6( h|)%=EJ̚W@rFjTx8 JC+ϸn.:} Ud.)7̸Ch>3>DJ0\>gn!%a%Vg-紲{`P?0YmcW\ ;[m-M.p [鐂0ȶ\̟ z@XcyJNҨ$n,U3ola7Xc{D W ?p.!)lY",{t&嚷DUP^կ#R=&}O¨Zh5 & ۺf Xc @K\n`s0&p "`g!iA IctW -Q#"V3TU@0M*+7&Ny<|1~ n  ]iRmO#5X6*}jDNOD2 %cCWmǮ[$A$@%WJn@62ӖK&tZE9"t A"c'Xfl;:ckcQMΪu1hk\q>Raŷ]%S$۠=D8 ]2A04rs#w&v5mg`xmv&ʑ%Йtzdގٚjf&H%+*3,N#}t_  mr߿ગ$Q#3.:IUy`]-*n"M eı5,m5Etm. ͗e ބ.dkc&06ݭm~ݖ8@J^UJ7L34Jh"s0A5QPaSVNJ|$9؟<:@WTk_‡%pB*[(H:* ŌסZ0ns2Xrl'XI bevSV+h/ ̹-33 tvN-3n+@x-Q!]AR1BiԝA"k1rfgʨkNܩLohajHLӇu06={H'.L:$扊-0΃A 62s0%KDD4bs/D!&0-VejnckpM-y˱^Vt]l3"`ڈd.O H86#pf C-g7.7NF0j6.B]͐Ȗ$l\p% <(9!wG1pI؉(| ~ ;`>D GO czLˈ>ajcI.? =u_g 4K)[;sBQoE,gNp9#”@UqH p*JjW{Yi$H2-3~` |`ʆVYetǕ流N51mƒ~qZׇU `kR+ʲ^ƀy0~nסQnj )[\QbL 6$0?;>'u0r$$f ?"fmqe^j{3E$8e;k?zIym,ky[D`X3(5Ֆ 3 T6Y]}`mrW(W->+3p َ[OMlU&:JDZ 1f@ؼm=%:Tu!ycoتUATA"ᶭMy؎ҹ==?-[M"`Ҳ_[;` 6jc @ E7\;`6BRUA`4ĤoNk+e6`]MCO#E*chP-G95'u6pMV-%vr1R2%1 UsΧuEtفp>삋hpܮMx.,Ǒ:t'rfYeBHn3o|`-9 :bd<$ yl5yb[DʬQ7e4Tnc\t !*hPUG 4(ߴZ.0zQ =Xs ܁YbouX'=+Z!;[[vL)I) 9` HÊbO b{P,Wq-fݤ/1ކSbK^6̨AB?Rq{5a>S'u3'iNڼ϶6mȏ5M61R5H%|P̼ҙ2 -"C-X}(I Ba+ގQ2@1ViJ)$8 %s ŷl F$H-w "`QQB|iNADzk2T<Obf"ZL̸pA $IDATS2O qf8'}68E9e  qqe/\ \k&\&;6{Sm6]P~Jw6죂' HIp wBvNVǻG0ր]+bk-y \Ÿ}AECaIa-&\uA vm)J,-fo9a.]-xZ*)+x>ڢZJOQm^4D4P@A%ZJ`Àk.m`X] TwqK R EyU=Ė](1X[|rEAlL;`s܂ i'܄|MSII$c[N=.%t:" 6W;!~[waqb PUg,3\y2cwM Pf85ep0n!LX@sgf{λ 9ڇ?2xk^Kidpȁ!鄨7JG]B#W*{A6~k&\.H }-N6W_79nbQ*0w`3'M r;I#$/.+K R\OO_H\.`0tH:Q76kJ}g[ovl-%~%A낦j%.XڑMk _3)plJd¶I<$'%U MO* 2c7nSB ȋBo݉(3x"T*Iu_֢Zo n+;dGT`]$T*"fΖ l1J¬YuVٞ_ }my"͜z,lGcNYQjNzNZ9O(hia8QE {ȿ9Nd^lCJ\$l;`.E^%[A\ =͋Q8P^m\٘ :$ITofĘpLXR$,"C0NHJ,3 BMZ]4vYNA:;)̝^O @5=`ur 鴧CŤ ,%<@$P& 'DI n2 >wτ2aK?t*y+ι ɞXnd3s~ͷpHVd'ǎb,F:E"93%+.I0p֜\F7!"|~8$yDi[r~w=w#`˼8o;j0Q<$E)/Yj{6:] bSR0c0ܧ//6qw"[7eO``U+;NB}Z2ovqzB:S:Fo{L6dkAv%" :aa˹2 #„sw!Y<=aȒ6-Կ,g62g̘J3mGT. !]c..@봎ϚσXyO%s΃ (!P'+F Ib'.iRZ[>Bx 7IN|dcT NE|b*2d6,vt !]Y\X 'eht38:oIQD dB>svAGXE{[,l"v+ 2&[)nN-?uOz5*iʄmeQDs_m mVh#mDDJ_\;=w8W TVB\g^9s~LSDS6bvx΄ʼ}:~=kC 6XHLH ]`擇T>mуsٱIJ3s-O%xlsSXn?D&Ųu1>7DXC;$126 m.;v&,Y{\9H FUXϝr Nд_QsމP{S:s1I%(xr(p{l~ݎ K'ֽOnbߚ\s}w{r=6ò<2< b"!%>ls*qe%{L vT'nOEʊϵ=p{΄~Wr$84t?t=tjkpZ ʁ5v}g!2|?2;.my^E9SJ/ 6Ub߽w$t*TvLϜzūG`YP>{-A:w |^g's=Ý V^,}*GuB|4q⓽m ݟ>sq/ pSRF^B`jpE_C©Zq}4dP2x`_a8X{_|Kϧ`IENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/resource/animation_knob_2x.png000066400000000000000000064332451461511344300260720ustar00rootroot00000000000000PNG  IHDR4b6bKGD pHYs  tIME1,LN IDATx[,YzVD^O9VݶmƌAE4xFx$=@͘v7m/eu9uu33b\rTWWwHy>;3#3#8;Ύ8;Ύ8;Ύ8;Ύ8;Ύ8;Ύ8;Ύ8;Ύ8;ΎQ9gٱ;X$q$3g0g*EF/B otyώ3Cy} |$&Cϳ x.!!j|s^s9g]]@d`Rπa!`/y1#ǂ688zq` mƚ$@4`KcOâr3sA\`kFɱ΀]R 7䗍61GF>_u ]#v#C1__P>i ۤLϜ{1cB&^<l9Ldp^3b~)q X?'##erd2hU>\p)&z u %Ňxڷ{yfs?M9sw6¸DЧ[KƆZ>t|?X31n31|͘1Ĉ)3%Tӄ?'#7|77˙gs 7Z94lg\'63rƔИ b({]o΀>seAI0beLS%&\dX/ ?ʇ=xRF(JB1Q"gV& %bn$l8`aW3w; 1q%_8X$RlbEM6ƒC`)?%FCp=j)(ǀ 0ؐ8:=PigtcR~; 2uk4c+OgdR`0 p}Ќ2W}@f >hΝR%̀BD pnsr~cd={ hFE\vd SnQlH8!p6`Q+𼘯:1 ]avw{5#Μ;OyBcr,g L6bb W\]p>b 9L)EKF cB c6 l'23B1$Z""@1SDU bZ**RX]PNQCL})SWpwE]>gX`jh0EoK^2ƃ~bZ`&FĔ}ET/8s+zgA&JQ #!ȱ01ξ_su>Ʈ*Uu4В`I1=s&ITcMHSސnM Rp)ALaMQ\ 7T2Guu{n3k!%AQ'R,9S%|U+lc oLĔ9#|  hC.vK"~[ /Lt~3Oi]?^C%u3BUm1a_2E\Sgcu Ӝ٘[1Ke@S!4;>ƨ&rsŮ 2[的鿶ϤEyxuV{ի՟uU,qu E; S1_b%z*ǂcŎt?w) f"rH18_6blW%wrtIjjՑk^cEޛOu(*"5_c]2FȔf 1ۘp.źgfS&xd$KLy]-ʮN>c'Aɘ|W@9\lj|ѩ]U7sb*eޮ'rAT)2'-^/\y?~:95w`neh¿@?{wnTYQL-릜B}rM\.'flrjz *Tˡc\[b&f2/'_;bO?V->+Z/wfx>1Rο8֏ B=?ˣՉER̙?7$|GOïKR3[sls"jv1{O~tr2瀟p}O<_ݑ;hu #4 |Pu2 "s^+d3ց9u0À*H&{H??z$RȱZl | )0 2U-ERL+O_ܿ|7%;JVGwYyF1(ֿ7|4:|Okx!+L^b򿨺_'o( {r#EqxC տ_hDXл{=b:Y9j;ob'+w3Pe>@}|Ѕwz99W2=u)'= !sl(tՌ =ƦaM#ҘA -׀+[wP[^eYR%Ʉ,{/Zʟ Ev\ԧ ->k--P [2_ށRhL3<=8'xz[~ayמM9EӨ3YVX~ jG(:M&}EQ "R&jL-go!ӱ_]=@fh)&K3;ߵa͍H)*j9`ӈ#:1"d闞\9S*Xݡ&:^BkPMSfp1.fRDJc1fknدc@1YS+f:mUonq(Ρy )to>Z ).&1:#Stw4"?Pn@by67d+t:e:2˙!p1ktT~ 3dⳝ@S&h* >zc\_ owviTd2L"vCOY^zrog%SNN9&J]-Y޽E}?+eYm>3f=~Д֮(Kc} xǘb +Ӄ?4kONS3T3E'ƪa< n1mMy{>T.zu-ݷPW%Dޚ&gh^ -V( {~aLOg#k{_on"^ܮA]oƋ@2C ~>+O'RCtR/OXܹ/ WɄ|o>;SaY[bqCz A/pؓR\`*]?dLbeۨuUIou ؕm}`ѱ0oR&Sݻxxdym= Aׅ:u>B[ȡjtFuwE縨9+L "Nں*p"X <: bX`L 7\)iSTʽuGcN*ZN߷RoㅩYCJQ*5?Mp1%O~ɹ+?/"?h.ש&t]p(*TU]bOXUc-` 5\߼o|_ tRjyG95=Xݿr|n)9.D2nB\LJ~}\Emg ԋO.<"Sk]-{vBu"]wݬkuMUUks++5;(EmWdb1p~#9y\לpN: PI\MrMcw[^3;v{ e8>[t'nQIwJ1? fb~᥿ zn^9]ϧtg9tATl|mDeL8PhLv4.ŵ@[pN.`xZ pj}L ՓR_}U[^HnPfD }(54}.B09LȠ{7<"?ŝN )]|n>spps8נB說bZQ5Wלk>U9^ZYnԎ/@`[0"1N__Fabl^ňpgp 0c *.Emuݘ2?[r0P wr$0_,KBԀgٹn|`W wnuL[ ŏA3]uYZX.V+V{e-k˴\hbπ?Ƕ0AL`)DYv=m/0S4B C3Iݹ1~*jbb/kxl9;g211@ (@']x~wz`qm[(:\h^vA.qBg.kn].\V|2f!۩H♳;lfϧk/0%7DX^,b7.[_[݊xcZ@TGY2!xYΜu%S"`/b?ucvA)钝;V,ᅨмheueUUTϬ,_9b/|n1"~^[T @LgJZt$ƠDޫFQ8(e9`r1^*"sfVA忎LYhA.f|/׀ Dc[$&?ON] ? Z6;twD2td Bu ϝ?׉&媊?fu3dy4L1@jPlb߬k{^'cn`8A߇wLx`OUg]S~QrDxٲ#I"d.s"]o0/vJfݛh0 rsu]I]eŧ}Rz<ũ;Fgy@Tgpl jWu$Ě͒XlG./\@i'3?+sVoսt1PAUח+c8nDs)&kj 5_g8ic Z(o"7w#0UŊ50fG#zxo]+{qʉ\uLM#;#nbasb`F{^b8𯁪b][`yOL~ۉNDY-f2 WVL,.h+pcssDO|Xc4m:ƯNϯ:gv]:{zUE͞ /3v*ϴ淰|]"rC#RJa uA9ʫ(oc, Ibq{i_{O Z"6;UP}9&gqJ 3" p ΚF|)",f;jƯTa|ctEQW5{Vj S oaV^+YШTfH87eH*8B90}SZ"1\Wp(PlͥcWj6$?WNKi9 d'Ɠ tb.>OUuEmYK][}RB%2rK1lW#™J(&:7=B4TTquE>:3VAޱ[.bӋ'k[zxfVU,5!q Xb 7ӎjua,pSள\qټ(AIEQajDj1??$^h`>K@=55s3 Ri`$5u1{מ>0 ;gu[{qrpj⸇hcL]1Ǥ)56/ P8 `WELUGS \NjdID R^zOY S1aٌ~bd H)J23|)? /:^[aOqZLL; IDATr9}gy׳֫Ef1 Y:(ԜpCU$/T(I0^/g/MK[]9\B'MQku~!\V R+u{cZ /db~,cw11S9I}-Tn~[n~ÂKSƸɸ~ݭdW2xQ.t)eҵ{ cOXn(`17D̿ LgnYjVT֎[ 5suGV+{gZL sjmzdڪylg.41d?j kԼ,7>ʄJ2b<SD|8C>2f:uF4KPrrn7aLY+]CE;es].T5ϯ33oDwo;r|2. c>d!FuykHXs>k\`Y,*(2kxvOk|L<@=LެKpaE$`siTg͒nY9j[-߱ X}cF+ˁӠb["-oK儀8PlK#&uZ1;Lel|Et]v_gr~ʔBcY}L'w;9W+)̌뙢 bc`nbSbܳ`S$o[И5v՚ []?5=7V[n%>7/$ ܍0ʐY}S.|ܣ1.[FU:^]OC"|R&<&&jb8ORK%D2T2c]UMM?&54b7AMh]w ?v>uG`i˚p}"BW1<1.LS9·K]O|S<0c [@)r4 My[bu謑b4V^_̭m.p-/TI[KJF>=u|Y,ˑ&߮ -6#T.+UF4jV,i3ESRd ~93岘dk ub&U9/YdpBϑ.ɥ2Z)J)ʗٺ:X~ի[Phpy y܎=E{? Wr'GYSPei6)mݱ~&kǮ6_`?i!„/ d [)lb}kԄgCS6ϛ s~],5j_d*Xg 0&td۸ju yVlf~xY<ӈ*6xs~J@tZ}dM|6PEo 6i'H#GD!3̙QT?59^4F!"4*̀ȯ ڹ>/f!kb3zǐ.")MA5cM/~Ӧ ^N`8Z+t;v$B'z"[[LY&]*5&H^nL۔i{LܹA_O,0i)ۂL-jq!)HX27F̶jAͼ#bd"U#PNvn8LAʋRi t}ts\t碑mxWo2\2mߋx"m,; |je,': kOHမȾ Ey~X?-D 0 O3R$& !}{Zdj]]ټ:uײޝCQ[P:ЩsܨSZ[+jDH|ze3uز1wK-qfuwC.M@muU%rI5jGįӄ; Nj=dlC{'X?6QZm;$I M㚶Un{t?$`|s 4O &CP!TyEkj}X[leMDx^(l/B3z_*' 9I&%8SsMisMîl5*~(z [_Ɍ>*{\p^6ޠ !D]7f)Sq6C |SmOCoՍ jDnJ5>QWƘbeb^Ȓ$+|-7mrOE)X^UmZ%ΜKי2UbL-L!&s]ܱd_̙C6?|S& b8O=/wH!@!1׹+ Ч+(bevHZ*߷lĚ%u"&+`M^87IsJe [l޷: l55SdV ,c;J3ܸ82,'93;R*g*B8|MQ}L9re:7/3*s(8U.Xyc>Z/s@ȕ*rJ8C6B_ 46XH :ULSҕPs&+CArv^NJ0KE&sHk~# +h!H&/fN3_cK|0(/fS s$ '*N-AVݿ*w"݌c_~nܕ%v-9z78,N/;`VDC8DT`} 17]`BL`H4 *)jrM US1"%JCsU[& R-RaWkb@:}}Lj-Ljaod ? BuGNYw 7+)k eӱ* 6EcRcɩ3kKFDugBB {@.Q6Lj1mp?;,fŽљ{lA>Ho))ES3/ Z(<2?|.eΐk05s&dbc⊒ p% ayP3M-6Jڪ;VE1HlqS 0ϰY9˙c,aeP!3`.T:GFz4ۍ~fEP!"E~KLlRM Cs̅t@1)s9IeT͔)5 M5_SMc@QO9 RZGU);M%AjB)~ r#>퍲6DZl@*9NOɏj>F  36;FJfO(7+"b駎DC?%>5rފ $RnSD3#"*=@APMuր!LlRu&"|BJ~s#\]߇^cHvѾ? tTlVb53DXLSP鉎c;皈klv <Ɣs FPp~U ~!*EJqv+VWk W0Ac<(?F9MxTr1{/]񖓈`d~vuzvqS]s-cMRbs ^ 31%Ir1e_ֿqu+Ǵib=1鼖)긼1LB<(Q)9Uƚ~@ѓ5:\ #]v؍JqU6 OD6. {f-3n)4u 60Eڂ<'X~zvlCdl`S f]Ci>kޏ{i>^G)8`vlr֡樂.Gw3[O QU,efj$nG¥6M\$GDnu3XxwGTˈw>kc!GT7F@)|MmLŞ|%_ K}i^cjת]v{5mUlۇYDe׾E 6%WȀsL"=gh0sS럩8Hw,ix" 3vr0WQ*3|?{-vO[>oWKcdwfliڙ%)H_/9DTLdp!)&k/7M"E/IҥDڛq_ձ lEZ"8/~x@3Gu[[Ywk% p>cR9u4[(1dל>r]FrgkhwPwܮgr% L /.a" nsvsMj-BOPFw3mkr6Zqi2D}@f&`֦S3' O oNJ ™ ]tMSHn+ 6 YG$dZ<9QCjWxN_}8W$)[;H\Uy) )9p9ܿ%)|քU]mZ*T5t;bY2>I15uR!X/،Y=ڪXRrfNSK =K ҤU#Eʓ">hh ]XY!ì <^ndW9˅-2Mosۉ !XsJ2Ԭ;?("KuPժK cv9U喴ʦn8n0#Bk/S _-Q1;OepP)LfKFydn-cyYM`%"cfƔ0Ӿ빒?cnvYě\߲AD7ҁ-dP7(=_,]Ut-h ba_w &M@L֎6왞[[(|RJ>-`MZƃFlr?Ug%8lw6L:.cz:p}Fl従jW+WG~hM )bڗؕ$be,a^_XIJ 7N!Xt?6~u%gn|_(ډ?Ps6TTh$Ρ9k9)6y)}wFi8>kmaM}+wFSGto[1#TL\"K,k^'ntiN@9$+vva< W鼼AiJw&X'"I1ds&84+Ĉf%)xj9fsJ^z3 `K SSg_oעmWyfA|·&p렏D!&F4Tk<W͈7+)Qj ..*<]…wI1^7z mgF%gwldpQxxb%L,t@Sfc9WUI.c)1zoe=5/1[=uuwŤy=&I,p[j0e1 #<m~boX8!H8N`MD>EP)}^uz$ZL7^X+&95e{PO.ΝݹtKb.xs&zyV'i'md _/bg7pTaC`P[j뛞5mTb]L>p(9ƃt D&04ﱹh贈M=,dJANRluusw͢(]of!SD) כ}JmZuZw\͛jr[X獩 ]l&|WRbW,PZܩ+Z/+l=F3z `)N,76\]ψzc؞bi"o֐uv"ctw׻=ֶ]L@V띴[PRUz&z7֗*Ÿ]E IDAT:.+c^exI  uȪ2 f:%8mZL@p|pcEwx,egQu hEQß\ȯ`?g a3j΅1Ȗ*`|Y,!;( v hEO(|)-Mz ,%[jQ+jW/ h/}m}|9FĺS)J##adL4!ա f:?+ݵmZjUcNƘzlءh2Q~{#Uv50Ʋ͉;QG5_-(vGze?Qn9F~ծM+H<LgL;h}ms孭*|U՞ҙcGΥbԣĕ|UdV?rQUnKZ3mמ! lXq!`ʏȄ~*vbD@XC1śZ/kjJb/:o؝1]~/v`P!3XU}L"FBSo*zׁoS(n\./װPn^R:[~NhƥǶ_NcL!)y)e$Bˮk&3vEUܚl U{ۗXy Ϙc+Ą%1yk6ZvN'f b~ t;$u3`礦 uGrMI[=PK6Cx\ 㸋^nڮ&NOR93e*D6M^B_ ^;l*41SXxWT@Ӗ:AO=*eNՌ-c/7ͨ:BaMX[{&v5b6rhyig:3v+w[1\hFl戦\ U8f2.ژ~*$>LЅm Xњ:|Ŗӻj_LLU\v?'?hDX/$}la8ˑQs mIto-ͮ31f2o:ݫ.iZ/T' C ׏vB,E$g1Sx(M3hLGX(~ f%1^z)_=_ğJ%V$.rzܰ[y f:nѲfs8]j v$4\35l&t (Z/˗ gMTtNX,y^7֎n}`8Tx(J1{~Y ?@5o0O#[Rt*#]B w l3YyJ?)!bB~֦I1ߪSYE|_ujoz/dbx^W/gvvXp(%?6l?»x3oǴ pS)twޕb2mT$c%$kVU913Ms<Pqf1^o̰f90|\ڠ:\m,(am|fRx,_Wa]azIˍM3B]h&Xz )P?9Mn ^/gƔX߯ ?HՂ λLCz}xݢ(K1)GS 2c/lv:Bu#V";n O4fk빓qEGQbcK 'GVx{z:Nal!X]^/[:ba[X@ż⁷κp%BYGHwm!=d2[J /ޙ*vH9oJHm[aY/6Xҙ;«8L;dҚ{jDy_T#&tOK[P⣲4"eh1]n=zTߔЧˇS|l* Yy 5`u X>ZXyOF\X _Z>&tˌ~^TCW,4L#ˇȊ-05U!Җ_ٞѐc1}UQ?yE앩.E%̥:­eW[U@g_KnU-1ܑWN{$qEL6TBD"ŏub=yl*J&}1E3dwP9)փCy ɯQ{lQتp0cw,jKvoeu~hZ񺸊Y*R]/)]c8 /gTk:^Dv O6xen]ez ,'N;%Zq2MfѷsDPT^l~ojP堭h梁 t]Y}anDR$݌DKvz')UZ~^v+j1\r&fRni&*r/OufW{/LMdD ,<+=0ݦJg0U垈7׷) <Kr̐[U-oh3a+LczvFB$Ф=vt?K~.Ws&2Kly(.r\omy+PaJ>G;eq 3=c@ [bsrm陬 i)d&rng߳n+l?wLWsM5㏞O ZFӶM 9F g}6AUY ܴ5_KV5#bu!:Aʽkgy[O>WN78Zy?Tf|x1͕S6%ܪ:ӽMUoUUWuzbwi H6lذ@m~a- !Æ?kòd°Is(E,M793"8;N){U^Up˛7ȳ{fD7 m?7j!"N`uwV09Uw`<$6exB$*Y:j%M_(ʆ6+UL 5RFIkÌ>@ y |CӢ1}Fbt6nKf<o~['\X}68nփa0Os/5^}+`jx\-U΄gs6O;Ip2%G,tHɩu\P UXrR$ vyO}d$IJA60hK]"*b">4!Ž]>& Y^%K 3eF_Q C]-9qk;xGiFɶr3q'rB$fTLxbfrr+DɀU04'ky:.m¥z,lѯB2q^‰4PnZ!{&_8/]諾kh8* ؀OgLie9t_}F.BS>:$;l"EPY*bnve.| Z6$)RbMQ/J0nLCrJD8>s2;SCuAѸ;T0a%M-^Gf6,ψ BQH)&P3記 [cR+澪dO@o6rT {۝=15]͟Y)U:6dpq5be,z-Ox>'Ad "L2 Sf$s42l ˥Ϗ 0 5@e .Q;aADss\ #c%|aD 6onsB6›WV?Iв,Ȃq?!%KɄ!q/rl6u˞ԣ63NFKǰ\qv^dU. FmVN S RCB-LDψtJXg`/&ž'pӮ5/futDlfj2?+n9?2|TK_8z²2lNh04rp`"w4Fnnb9xl7;E\Nʶ!^ݴg? u߅',hc׻_NZ{͆5e`ubnNtsvUyTMj>g *Kt3v"/T/( sҭH|<eAR]SR|1cb hOXY`nt}|*d1jbJ*RL(SjthBJ! ='pxcY{6Zlnޫ_ Zsv3lzX-6k۵XSOwx) `3Dج1r|>)})aZNBa_ᮣnNm3EՏ,bz]HPI͔hϠ*xuXyqgq;v`-ɕbYm#7h?uBCn&OTBQ E@Ȟ ]6k)>&U@U-]nb b bP*?b`z)ܡf@ (Hl_㉮q#LxM|A'xv ,;rR9wtYa9c'(^/IxclRA} z|}5'}{<7вC\B<!%s) R]u)ԙ_GliI3,rLLb'e4`sCRTB]Af'`A!;0wC|ZhVgX,=x87'x!6kDg}8/1 C}8 N3`CQBfMR 3;`s!Ch_V FZa܈F;CZQ(_9fwȽ070gmu0kBS\|%6!3Ta!G|@kVD\ qE2 a]^9@] j0v01G)lƹ|"lpWFsd@u'@@f]|1>1MBDrrt2 V;;R;{υc=i3͓$nD 7 lY6Ӆ\3Қ-Z #4O}=;|I2d p 溛-4`nƳa g}kؚiE`\s(V0`]w${"@/djgɶnU>傭*& 6 ,g3Wl p BDc/Dd011#9?|ŐpQ,kGH)`ÞN1aGXZw3v`(`nblҟ"ن0aBj8!%P&)A ቔ9 Ș>[#D\u{ 5S-*k[ e&~Z<;l%bh_O2dB|~ X7MMXhpYkV@&gi Z@Rf`'WO~Z ?P*DJLJAv)>e&>6҈n 8'L\U=BI[҇2hD39 C:}tb#qSvY/ZZceqaRs >8L ކaB-WY޹Ƹ΄5q2\g_}.b۵0%娭13g9$̶<50F%Me?GsJcs8C0ҼNղJ0]~w>cΩ8awDlPwqFm &+6 C!>ٶ{ bU|Ups]Ӡ^~GS  p:i^ p@T2PX#;O8S_qg tdjxݴ8/w1ƖЃmN3ֵt7-gza)/7HnVO AV=!ƜoY62tDqæ9W)JtM8#p~%YqGXID+'7p(?ղ)j8NlAP*D}*3-lx? 9q31Mgfß7!۝הNdm@dl?* ԙ`cqcheR8A%X݁+3df ¸_צ"4 GjYazV0i,o嘚pD)Yx,OY; JLy{۳پIB)u 4ym=q~ZV8ZqJ<)@9u|SqMNksqVb\zB瑣`)}ŕs<&/W  L z%|èv˒iBB窅`q.^c)cl8cϰ6i0eEB09dCnXP;aUJiNc݁%a%ۓeA)GZۺ}XWM\vn0'1`C%Tk:NՂ9w">a nƇ>wu\N %e0j+șvx@x!Zo0e69.l- ҧ*ocqub-6;5Z"fgAϱP@Z x.0˒<*Uȕ -Ƶtz\cటK!T Dk"aǸӬ=W~UTb\t[^sYlU3t^ºł\K[," g1`@`Ӫ@^x!fc!0Ӭ`R 0N0R:0ľmT(>r8zI !V=lS.zuoNH"G6B\>$|^pn~l`x"S Vk8xzf^o6mz՞kBez[bWqʊzJdVBXrS>;*0t)aJ@ZQP / 2,-0b:Z`-˚3ZHiq[tͣ1Nr[pPI`B`,fƚ{ [R6a*hMQ i:eE5ϱa=+ʁq)Y"8~^}>%Nt*e#X*!ؤF0P!|&,i@ dZP?q+W=ѭvl\7_4OP|!@;]tM(hɳ #zc<"lNg,+== og5xף{3r/@+ޗv@|] 9,@HClbV"G— .Ewǎ9 2/c!&2-M &EL}l%|8eCM 47;Ƌ[9?ɉs-@xAˊ!#,l2$x@wxYQYRjb)S>X1f1xb#_Rxc"jC x|)?v],s]fQ-'@F @35?ס-1\ε <B8Ӟ53C~bJ 6xO1\uH]1 s*[- `c\3;=&6)M&{cDŽdkDy<R;, ?EDx=7@{z`*})?.ㅷG!9R,]U}n>F/"GNl9͑sU͎>+ HsϕJl\\\3DzV,Z Sz8ß3pdTd-ycn%] <6$LIT6V_ B^}.!5!rlc2 r:Hc)[OǯGLsmv_%M%|;|ב=Jܾ #;yj-7z31F-f)1TG t]BccIhZH1їqc2LWܘgEe2Leˋ+弇Oh1$ RHgtuutͿL)GG0Jۚ;=#|mLm5&2crLlJ $XTМŀz>%^=NҜyx _۔(`rp8Q>F*F@P;U> l Ǧm1f4_HخXsx9}C)Rfh1+W^/]}-Aoקכ /lA @!n 0ԒI+hr}iA3Es+ƻB6A.~1oѿ lZ>_<p1`D.c!)M䏩O!Y0tE/ BWݐ ħBzR+CdLyD`9q>^!JK+|urCđm|(3lN{lW,Z*ospYN˜bO y?J0Vƃ N|5vjѿ̷Ye:`]gXEQ~WJA)a1fZgz*T7"u}6UӅ@fg.(Œ9'ҧx9 '|7F^Gجܶ_¸[`5T-Uugc ]/:y0cU'x)0b>cY`?MY#Ӝ{(UB 8]T[ӧ^+UR['bȹ35y++7Vl49V>>6M|@?eYn|9bNook7wAe@"P1}& Ϗi}Aw79d Θ}AO^rTKoG8J٥+_{T`F7ώQ?>O\lVUSt1|C 8 . :{m T٨ޯ~A}4Mt$m19eϧx%RlREx ~Rjrk7( 0+fik,y!xuO\*Edd0LR*;21f`GJ >I~]&XUh2Lq@XI|KpjnBSxۊ#(xe?XzR@0`4zÏ?f7 tt:n:,ˁb(_Ӛ!߷]pJL\@RDiO} 1ܠyڙt/.b1'CzT/gjF]ay}$˕e9l6'MLy `<gKex jAgwMPYj?pu 焪ቷif/Pʿ0փfT+zɳ/̞y犲/\tVރYևd (VNf#|:iZJSQ]kx1}4]e3<IORFMf?i&CtmR䀩 }W|Vf;Etj_y~~?-Cw߁Y ߁+|XYv[,>$E.I@XYg/bY{=bSΉus%5?$U! Pk Wa4OrW%NF(TViϣr^,nk+HKM-tScutwiПf|>𳿿||>Κd`?:.iӆcP cB1i%St1#wX׫%gFWoc (S3'"cDw2yb X_/^r[].PEjY2e|>b5 2ן@5/D%aL1a4MH̨95Dy55&3;O4'VǪwbNJ2LYB^X{@bcv{tskQZD1hWX=CnG,f3pb)iU+]P fL1jWo f TY lx0w #B+N8&3fh浬(X4v/;ʨ*z{rwΌRu1qD2RŠ!^~`U1HU([x?PE_`hgXH˲72)%nHjK 743f)%< Z2 wf qw&f|}6|RL9+BOLUFƃ|zT_Q0vr+7*@gZg'X=Wf}9IR.Bi~c`h föJ\9X0VxH`CI|>5vy>i*g(ϓ]bm}KD+1 ڄ\RajQ,՛g م˦߃9{0Χ\0Nj)g; <م4 Zcjj|f, P}6'_-\pnHl/PhAQ&Vu[`\L IDATl0l1;74-'H(<"2U?7d{M"@ e#1:֩T.-YYsE(wVK7V-^n P0@ؗl=lz nl=8+.C6 =0Θ"xє 74b/TL&w, PgT g$>1ɅLEk(/:xk?U oPn:9D}}(h^*I&Q 4aZ5nS(YJ"ZCQ+єZb9]^>AhpdgйLgAgE)u=o|}nnd|d@ǟs9ocѲW )[\6%0Ёx_E"xvFGMrRjy6YS`AL2Vagtˡytr: fX~0! ,,72U.mnZkiRϬZ2a( [ʚx11Yk'9k&k>=3U@XXnbH+ UMIv(5::8gEX|l1Bx!皗tkqpy 酔^6tּ3eW7F`0{Bt@~5>z eMYhC ϹJ0*(.%*Cbr|Q?gA\.Q5\62YhXƌT!0>5+F!1.%50|u(r0pWp̘BuW#{Ộjk nL:h/1OWDPd}ԝwoH|Pc3/TfRŵ/%UYݫ ;0ʻJ`lL+rCDY.mg`BF9ǠK ?a  mșRqܚɭ0nA!1#K$ L_Qoݼ*4X\2{Tq a JlƫW&^'X3nVhÜ݇6"rWe͹1:4xieCl$,8r߀ƟqJ]\l~Z =p0x5 "LM7߄ǂnB! \\c9U;fu;l'!ϯ+ƏZ PeF`rfܹ~,X+Ldp f _?_ *5$h>YaڿUM#P\񌖭95F*桓5oL[`p'vL%+rBlFk|ָެY֚oGnVJ1Sm{MWf^z(t;gi>FK"~\SՙYΚL\1ݿT\w(: 1 嘚a&*h.vX絨tE _7 Yu }0eKYyijݎU(^Kn[1~h:k2Tˋ26 K2)/` '* 3"|2:e9w E龍 Αy! TVq@Ub2&[,~im`Vg`w~Ͷr ܉mۂ^?`l6ضrietmqxN%K?*:fBC;$)>QP{X 'l=nPdDI/S뤂R\fΧ$p uZMF 0ճ3|fNΡS4(T5*pSVm0"}:wijh LK:BxlOI4>9'(ϯsbU! C0² |E^()fq)6B%JA qqXd^8; U ]:@w̔AY9töxiq]悀;OCorz4INWeԱ2jc|rۅh QP+&x¡mf4SQ=͂jvt ,- &TW h*|WIB[tl K/9WwO7;lf?eXo*f "1Fem 5'F;qֵH6,>^" 4'ތDx Io펄0^nyDu(ρ`4w+LS6xHROΫƞָav F=1siơLm]l@vN"VH =0v,a;4el/UUa0+CLo #FKB)q µQ2,&W@MhVBld<)X2󠊹N_h ,du|t}! ~m^|2Gr@xL BZ 'waUfó H|Vo*' BE"t3ES5}t8^qTS1v]Ku>ο{‚e8|.io$  żr#w3fچLss3ebuzlfI^UeEGV:S5[*^3Kֿs+a(wC.3>fTx &iԶXqc,m6dB77qNw0Y9"7 |Bx3+DP 2}Zw+'hhl 1zHKLu\vUҡH4s+(e(Pfo\"9nCGa ;"gs0WWpB:+jTT]ELØO\/gfH Nm; !)7"oDmk X V2Y˦;e@J,2zT65.l -zU6x(3*HSb@F BXcJ# IDAT @0bxFMb⃗$4}s튁TtM\qIl*,6ţל㘗ct<%#F*fvp^hP< 5-S14T>4a<[i"+y2ԽwЄDmwr_K:f㲍;] o|W‘Y(9.py ._hznk y[1P [;3es_ItEd>+<~_HW1hɘSXhҙ[r83}_@kn@-""Tx (Ri_ki6flQPbs%Ͷ_,{f]%[K?dJ0I,(2Dc"LM "U  3_P!2? @  ȫ0H%?5@#7RpkWDU:OFtjᆦ=nofuulX  fUjUC `!jM[Vq'1T6B UΤa(Md6=1a1e(S)eb&h\qi94t 'GnN :MRGY@l-81Vm %;vQCQM Bb(z5#9S7yS[:~R5rR(/29_;!&R0ni=ǩkP龍Tט>j/@IΓ; `i4.0ӳ^NdP5 ,Y1/ia| ʳ>+, 9CHWЈ>fdfF%@\s:Qᘙ0Ț[(TrM D<<)5 ӲD|룩@%sR.8D| ^iú4>68Ep70fm+)Ĉ*I3s]wE(f\?לlF9999\2䧦bCZ*?~b":vb3 \"LnK۵*bM9+H?(k1>F" ZGٝXqR &G0Baغ ^uc)m()Ob4MRiϐsLœ Ɏrde.kN3^4A`f>ꓥ-dަXdcA59˘2f ;RNW;˺9b8)i瘗r,͆C)=X=F7 \"o8BZ qmV.(e0{( 3^{lc? >b=$U~"g@ᡔa9bվR5CY9)*V\u^Øa1۟Nj};kv\/#6h"(xոJY%WYf#{lq/E&#DJ|9blTX!ZSuY6mkw#XMb<<'O9PL@bP@`(L G5ܜr[m>$@DJ#4baP|?vD D r=Un>Ikc7kqL 6[jπ6}$`5ln#%wc̸g4NA:RG7R^M:¸86@07Cm%5=[8b?6gG1zI:~ Ȍa֣$MW : T[J^~^/Pd:5+7Ĉ9)f܆>m?}V NiZB(ڙY_0ak<z PoK zM?yV 53`v&{hh۝N0a3؀i&3e(\hOm {BLnjm6'N /Xvkozd3R@D;6x!STqQ,Z/Pf-잯|dϏV hvg:㺫mjeY27%I\-B"|進&^1Q,k3{509t"4ܶ38TE(FIws*ǴB P("&js ؁ݦIa؎eٚE=&k2ɻK@HF#-GBck1dդp s~|'ۿ"MH)H`[2X鳞d]( )mkE!ͺ&&4 + epmd5W0c ա܏l֙S2x@kh2H*7} u@+ZVƂܫD8A۞a1 $:VHi L̚a~ݘc1 nh&^0r3Y0Y).l) ġY 1GP-UD U*Ϟ;ͻrӫr7\Mt,|/ձ^SDdXb cbyUW o(䆀긷ㅲU(p@DS;N? 35R99CgШ@æ^uo&#,ǰ{mcR\nîQI6SSTWH m SM̫ /5\YtMa@X8 PmB8 ҤSoYДZ})ß/1[pSFY79C>)3# -~:KJ~4aqu{նU,5q:%h|U~̀R:/s2K!;lt YLRklʷ>pLR<^{3MɊx126>ʼ`ѽnf?1MDm".oi[oj09SDqB"z QRڤLXVf26nHs_e/SނoKs2UL>ƴ_A1zngY󔯋[ID[Ư%F*Gʂ)ot,v.35]P=-,֑ B~E*[Ma37LHMtNHԤ^MȘTlܼ\]gmT1V1g@y* Sj7#;?Y:cQ.^suVʹ`;:QJv3" x)&F׽ׅrdBmMҙ* "JcVgSu Jϩl2W ob#.4VComTfئQ`3Y]2vғlg"l`_w.ĕ379 Iž MDec42f;YO0RZ6u+D BBKl"\"OZ>m!f+<)g֪*ń' +}>RwMow%?.G%ڲ}9R0B.`^ ƓRB 1xPϔN\Q|;0|SV:XX0Pdlo(L_K \W`'d HCP8`K%mm POxC/"%rCQ/ğlJ?/lL&]\cS^B.>tL39x"^/Q9C,! U+8PB. &Ԋ&=RY\p4M!؛bYvL "Fȝz^¾` 7&^rf (nmTK}Zq6lXoW&biMx9a;d!Z(V FVuX%Bks%H v@7z^3K[ M ]Zq |C'oqQ>cm4L&Pi U֕Ed#ݒ5KpR2Y*J[R[laZaNBl9^subY'@P/h_Aw~n4'e\/8Tel*RlJ:HssQJ)r9$w`mX!tu p4>L>v̶y>3^OQ"ORZ9v7W3ڬeH && 7`nP)E`ٱRU,5BѬnh3-G]%ҫ7S[ϧgXoNJ`&6Rǩ_D`ZRl'obˬF=$?eKԛA*4> &A 1 ]>I_d/#ǧ*iI)ѺT,fp*RyGQ,LgIXw:(.PD(S3 )P5+FԮݝaw2qk޻p)kr XL@6T؞1u]o0+u@Dxc &Rl!{fjk_9S(\'[{U6s)SSn ̕„+܆XMt ׹7%^`>R~{>cWwDX!˝'^c, ٷ k?A0/0 !VŴ۷)쫂HgpK!II>)]6 :oKc6&)w͛5z "@ˣSx Q̼j;ë ;,wHm \4K|Vx*Njj>īy[ò]*pfd#@f@-`M$F=جN&]HiA373/0E,V2}XwjUW:Ƅ7a'y{US=i>rP0Λ#EP .iDusr Y£8 ecYm#k{$SwA01 @oTB7wC'BSWV䋚8T؞6ZmVII2yC cR:,5[_߷5mc)a]UB q9@'+[@p:ӁNa:f0mM{33f ;PpL|yʻ\&Mء5t*'sl> 6h`O S'PlQ+! k.`bp6YU[gZU:?5, :e3+e ֫u‹k YbsJИ4RJ?XD2HY`"ھ) )ar6M 5wM3|`^W3Щwf 2@%`q )lP'f2.lRklS9>RoX \ktt.XMw]il^B,RҭП)$0I1KtƶV к W&g TCǨRgd0}rOoef?2%~,=`jMP7Y"KDw઼PR Ex R [:HSQy7e&~7 VM IDAT e)Y:Eg묖D`=Um&k~x (@t*i'i-֐"0<0u|6kv̌wmg}np60'bx@3e n?VegJ!8AEiDꥸUh"Jax!fU,Mo-ER"SWY@Y96P,U;mr /4n2 x ^րȘAlpa׹L&LӈIb8so7K|VxM[)igg+@ONTj0)cKnFܞ fO$~Ĉ/fy _Ք[ pJ3,0Ê1T|vu6;e}A:? ޴50a?}5$wQM6xķLmdpϡq`BL3G"Z+.CT$*. .XA$04'ᡙFJs/Bl r)}E{e ,N Ԁ*H|W.cQcg6[?056mge W'zсf򾋙7hgrwl1~+5xnfTK_+ gll#U~JpU }B }o# 1 ;y9ENl׊ 8 fV{,YՊUj,5aZ`#BP6;NT1,/(a)rLXfXEZe7-pvKp; ]Lu)R1zrƶ~ @׈mRw>A( H3&_|lw?;0u/4V({c=es\-Ln[SΠZo b ڿ D':[TJV$D!UG~V(RmNTH'LސxS.cFBOauL篏F\9Y rբDN ]QjHHN\sS/TA4(#Jп]</Rژ+7f\L0 8YA>*좴.n4}sC Xvtd׊_n 5s)gϜU#3V bL( ieƊ SECj[-ψQw}:5t'8|+1b, 0z}|-sGE(~ ^I˱ySHjF Sy ;,˓S 1eq]a"B^x"`k>_D9)|d~ۅBC2djrLpW*F[ڄ}M}.$fy~P25;hK8JX [)SsEB A$`fiE=|C`3 -6p13 DJS^eE+qߩ+$1 gИY2%eՀe܊宱߀mgԓ oV sEn!TNF@gMkkf < ^ ʧ ͙j:+z4ɯ4NQl-׋%lM RJe|(uI3kIiޗcl?C%9t)v>P-5f(R_G"FWy=źJJ9o\{笠kOH`Y_rSޏ5,K.NZ|U1ȦVo/)#`ۊ*)U2j25~ym[Ŷ~l V\hfda +NτzRs%e@66D#S#pN%~_gOb]R$cz9k\-Ne9d)*XKob_^!vzP|9ET KFipmd0.pI`r@sBLu,mdЃE@B*zwU}%L)tSXnOo&YD9l 7妬8<&]Lh7م v2BeF)\RhX(3F#&IJOb?;CC0`[W_e_rtzCjda,gw'fHpsm=.Qfr Z$ud)re RG'ʧ{jzBȶ)P2W ΁OSc":[lÚ8o]Hig"s)a. ev'"sB`Qut*̪xKX[C~핼 ވŏܾKO,3k +77H!="؇'˂ſ'3ݺiQ`bLvm:pms(7xAim^>p[5 Mwud!@:].7tÀ?EϖV\0B)KKd\o' _ &MSǤtѐ.D=c:_%-@F+4407 1s2D4b  ] e[y\oHp}Zn!/Y h3.:dyPZx cBͲ茉4l =>l3;Af(ls~6 N9؍j5#3ּ /J$w@F<p%E\Elz!03/cw$~@݁nhҕƏ[ڦm 9z4@H R5H fkY7m5-NNfZECS`!bScacJAtHM9{`L&Xb,@%`>g E6p -Z(r~UЦ|.\ɲ?`5;=l{U8YFpӃ[ LP+L66,>BEf̒"cvm ۜ%R9HP4c;&F8=w2qe1;0OCCB > x ] CsV*g@B*A;ض:dJJ |b~M\|=b8> Н l`c[Ggb=_Z J].c6g6.,(cي¿et,~8@9 "-uϛNq8~09 FĆvt;4dp~}x篻4G4~D@7ԗ3Ć䩓@,GZ跊MN0I7*ibM@〬^C]bFK笔'3]lLq^Ȥ3ݟ d,z߯S;t"&EB܆, aX ĖC쭼L+Upr~>S.]O~Łd]Y}b !>LZ,(--CGd:9*p&R7 F#u+sǎ 膤e=&ԄVqYl.CֽT6(1ݣx)3n!g`&TR2!G)1bWxg~lFOp+J/l]BNEH3A`9]0L `ߤH"d0WF2ݴOR߀"~OJT 1>|0u 'LÐib@YQ s ,;\yG)Kbޣ <џ:ZD@C܂X|Z])|H N  plPqjǼ 3!= Hl2|OٜV*OKɀ -n@',#x,ueߖ0s`3Q.JrrG&ogՙ Vgw+:MED-'⸥nfx4X[+Ja"@"MFbb.|Ew hO43St^?Dnu & K@:Uoτ1|IPN-B Gdngb!N0!UB[(X2Y:TJX+D%!['Oru2 R,cJrր~ &BpEX,xK]܁X($@nl'>HP|`\,xS&qxlȌ&2-cFA?e,LĞJ\`#![a9A\AN ֭¿r&I`'6:ᙅ';9556'p; R)Ԟ# h!̸m!ľdE᯹Пv/YйMPO+MDȽ'G?.NO|fc]4BI<]x(OE14 B~xLN1r`uᄹ0:nO2> h!Kx吕`A= {u6əS$UC#/4‡ U"m"FP-'@qj 2g*O'Tg'BemI:-?ʱ@uPT'Kv[PU JSTV<Ptv#weŒu&UsY^J5'BH9*K2b2gS$lV#\n BLP@3^U`<-M*.L&ѱaz 3W?;DNp,ۣJvWn)w&'ɼNI-ϱ|pnYLsl6uq+ ԕ?rXg ƫ< Ao+ہmv#|Ki:f>کx'I~PM"t,~RDo J+>Ù(fb_r6m;=ͯ=cG`'h 1gJEq_0RB6m;>CJM-@[x,C6.+ T7`t\2nl;=Y^]ݙo`3e4 \ŸwJqApp6|;}P>#'TBw+ :T#;DXPv Dɐ3kdui"ꌽv@XW MmmݶvnmmݶvnmmݶvnmmݶvnmmXlݶ,yϘ9qCSqӻSP@ F*L]N=+4> e;VK1%'1!w#}"0c쉻G M sfh`xcml`wx`XvLvc  w>nKc N֏˪r;15c@cQdjݭ8 wz'La9fFnc&vb>ƪ),ƾ6!LF N-fF!->gԩGC!۴Ӏfv}|BC~%&6cz?wۙI$:_1ZxhLʉ-!Sw`N-Δ- V0bD 1f,>p =+9y,dw TLϘiO#ΐ`3tfO($ 4l(hbf=`\<K -ij=߇"q%`#B8 eȼMN0kIHސ{L L&Ed1%淍N_ʟF#LX_T3}X> 2RZƦ!\)e4J #Dɲqm|7q*Px?7utLPU\1ma."p |"1¹OHOбo & lH-/tJ=c|*GD~I1 %SG!~U CY")1f TΡ0N18fC/2n7".vIX3=<8:X.8)Fx!erĿRǞ8Xx ߎ`ǎ19FE0h$`ƿK)2@ʸF.4v IDATbH)ictc@vNadž#`#zs: 6禧-L@Q'2}C !@Ǝ=iG[쓶EĔ8Sbk3{/F2S 99$8b)eaưX/ń1_Yi,l(-fgH#TM H79g RX|c1>#(Ad"t(6i&X "lM(&7+G#Ywv *x0]ʼKЁ񝙁t?_ȱs '󂕾~lHK3E0_mA07 2 2`6\ADt̤Na uS *a+öaf4` *b?[I ePxߖ -$$2"]gΟm^dGӰbS_fL}^w b{؂PTsRSuza5&CT3,`$L=NdlK+Bx#D{XưF0Z|Qf+)Eٴ/m_0g6m!}(U '!I!@z˘Œmc= * Ƅ BfP:$x:N5 ~RƀFUB5+KWj},N,g[wu'hM1( RI?R krSE̡j)`:dv$G8L]|Q丠Uq|2vS->?y)`X1B DH_i_ئ\ VP(c96sŬT+{ Re_5h凫iszǀi }[TT:Կb-pS:;.nL?$;U@Y" @H*ҋg^&ӟ'/grqPQ{9 } :|T?fySbUᔸ0K:|$"XA%X;LnKɞza+_͊jwPހ6GDSJ_3Gc9@#t~C6eW|U.X`d>z@nOB~!dޥ|}^0?eMC wAǙ,2"RjpYk{Yk{cbB"e)Ҝ߹1S`Ly-J*fHV<ɏӽt2󳰆L6f1hV:IpiFeZ'b)UVS>uWly, 1cFU?ʗ>W*y&%G W?g#RofӠ:;Fyx`(I@Z#sdYZN`bX1`fc69d 1e<9e8Bffʏ 7ސjx7>Eۘ: >l:D`.QAup|R2[eEQ 2Ex>`SbL t!Rf>95Mcadܜ~ 0DroL8`ɘj ЬgN^OP>+ӃK3`& '7s@U@L&=sLBह |?wHi߃as~f6FD 25!{trigHBǿMc9k\]E}9pJd2Y/˲ܭfp1Ř7C ~4=A4ǒ')V5*95ƑQ;S}j!Ɗ4 1 |*؅g TKG7Q^7UԴst:d2Nult~P[1f)Yͽ<DYJ6L fdߛcs`' Ac* 3o@h!BJ)3_g190)8n +HA eOb> :1 TXA[C~`m {{{|>|> Pφ|[_ 8Z데>|4Zak&k*\|.%v1)c-1H|~(j-+O uu!=W\OuM`\(CT:܂B[08!`["Z1bv/$XQ ResF0VT0 Dx> x |8P_̯~klA"}-[S-< stld@k 8$:{9se 6/sg,՗*ldۙGxo&u$%Y}52BV柱5!3տ`k}ͨxCcB1} E=`M]ziw奿cE0]x;׻,:`Z |99ҩ«Mbj,^4M{s#XP-  a ^'7-}%z~g@_or*tו| ba\ưN/7 H",GO_?ywLץ l 0'7z }U0|6a[J :΁-ȦiP5FUU0uj/ >T[0Ak!Fr\7.u`W۶ 92i 9Z_pT_?& gKKPgwl}ԠN\_'';_`kP/Q9Қ"9;88X΁m>1cQ%Lisbb%s1˛N.2 CAXAEϢtl'>b~?XN-P޹Hr6`:ws%WUU,KTUieϗ 6Eua`q}Ѕ=w? a yx !&Q% 9yMlIe_гz^I5) uV[ a_c!dC ՞)R򧾢' R_d٠Zs, :t>oZJUUu/ ^i,&mH6:;VgqdW,ԞGœUn_ɚ$Qb *DXq+g>& ObGX_1r&=F=4Q+[E5^,_7d? ) [+.t:]u\W~3-~U UOUAē&LNhϓeMIBkW o. 1(*+aCb#6^}-/.~BWmS8}j9(RW5wSg‡k~=X΋_mv13l]:s|& ltϓc,a /-+|yY9%+?Nri( :4feԧ@ Xõ(<`X_qlʧQ6y"#%i 6T$dJC=RVI*>ٟ]'45CCL)9,Q%g J xxЀQXXs'lqhe3X0"y,)#+ 62Uˤq af l.D٫ܔeA?؎@2}\Č!8 6ɭ%\rs. %$ p9hD~ ~Z %3Nwa,. (f+rj```p Oœ =PP%Ln_EToGĽ`PSfy7d-=q9!1&dʈ)^7f^A(3?M_=e?^L[30V0M6`6R\ 93]]UZEkqC d30baqc7xw1"0]0^'08 :]s BD8 pؼX=e6˛<-x|+_OT"G?L RɅb <e;gZ:𹒞dѪ.hfUW_\4-+8ujRҚGl}7SbG@%Rb1/q5~;km 9Sx?=HJ~8FB %OM-/n,z>==L,V'20.˲`5>T7²#6xLL#X 76 ^B;7hPD4w؀1'B_D^x>?< yU6uP310]5t&")_.ϼKwXœ0|1)t~=3/O焔_(6yO8q~ ^,{Nv(- c0ބ bLjO:y~[}%lpL8ҲBN O^<<CWS$f/|*C.Ց L]&8v.LU5+YgTxSeaFdP V `-'Xx 3 M1*6qD8`\a7Vb~ {sN^lLxMϮٽɥgs"9W9.O h9f;?e>z_F3R _]6m&*XcWj^bss7xf\$ @G=v%G Axm535/|5NAV`)1fh}751B\ Jӛ! ('RThΎ YenHA% LHꪪ¤iE]mBr6 *Bc ,wIQe%gP[b?[opЇu15[/o'F Hj7+w s (X~C͊?Shs:~mϚ}HTq Lux|bc_6uFk17&Y 6% nF5 Ps\$"aPfusIe[lc,b ->j#TU_0v'@TsLWU\j>Z388lg-+R6#0,a?AICB&gLI1|lAKPDÌQLp27ϫ#`_W3ج۴#qH!Rd3z6K)brDvT ,+?'b ijrѶp2n'gFٞk\j|4ЖW%+uVGC[08aPƄ R1,R SAQ`scn`nyԄd)|MMp L5m0;*@LWD !:tcTʯT {Wꃃ(rMhml)$5-UU|4sy̼ya@os<;B߫wWb;~ ux ,pe|~͂ϒWt"БgyǤYo1 lD94a xSSs,7©cH\ʣ,`*YW- a*gBYXvI%%}BĐҙbWfZ. Jyr!~r|th1ف 6@#ȃKm e1&G!@96:6E7|׵2SWK~\[>9E'};uT_OkxӶLWP-aPY nMjpKTïhMKEBXd1U@$bo1?|7k#b1R#}du^W c\9!Ɋۑdeg٫ئ@6B7dpM$&~H7c_(%ŀE ]u'UB9&gTX*Ic&T?uKZ\ͭ+RRk wq5lIѓ | {6.rvf`:94$,6 k ^0,à GF<HK!ԭl]QdDFWH]m :aB]*cw )1MC2HQ62jm3@kM.]Ӱ@'M:if*c`@B NT a!d S"Lj,!?z~RAL.*/^HwakEj #C~]h\@,Gca \&eda=Xe"z.DB<hHa :FA2}tYx֘VDFM̗Y ~l:^hgbdbub+f ")Fۼ/*SkDmR(|tT}+סldE|9B; ( uBJP\8PY%qBJ%`5&y){ga՞1xk:_dlÄ={fI+=;yz/th40Y $4(ZD_$D3IO2I&M2I2BIq0 bFa`zC/U]wGy⤻Gd-UfnVfH;;[rKmJɌ} lbʶ/ù^42&Ƙ B 瀩@Grjp\%;,@oA8oF`j32SEw/7s&ba.poƊ9e 3 #$KLsiT9%OۜUa "|)13/vMRPSFzD6VݧbCt;; =6kMja:;Ef/Z(vXnMN~Ps1Ɩcs3v={c%&M@x]a33Lhӟ+0P%H#H)%$2b/ᘠٌoʹ1,5n75Ym|/X@e7M']v* ocjۆXQs,3SscП%X!z  +}| "Ԯ)dvK1 ֫dB>xrb~],E^0h+bك>/Bl'/o޷8BZcƛzwI|w\.P`zllҐ̸K䕣3Aݍ wiD\󔥗hOS/.o٬"ɘ@)z '$d\-IB /r7N3`ś`FALvU1D!!Tx7hֳܥ2YbS~C`oYdY1wG9gjr㱡#&l1Jsm|mfʼL)̦E6d~10t1`} alAEMk%ԬWI% 3ct T;?f wy]ܩ̔!u?sMf/ 4U4eЕ#L* ߺ3f>ىF}!y葙b1*_l,^nm:JR&gnݘf1v]+v_ bL׆/e^<d$bjr2eH+6($=v+N3#,pPb*olΆ{mWy4¿˵.3bMX+p}Fk%V'a Nux9S}ʰT3@"8N#2̴v'd0SnS(RqTnZ_K1M)F6Jy6=h.vb*KRs?"0. ks#y*0Do0kT l86asۀcqMC V/cii杹i#bٹ|J 7 @J!b!C' 3La)c{]vnC{q݁5%daJ䥶'ob ůH@ LlP j2'4VrSTc,yf.&a>e*o3f\DP饧p2_׹CV :iZu5+S)Pk6%8f!oj@K#{^7wL.ǘ!K]uXMVM$ES  D ɐ0;c3$B k *&GJHIm;1 79x-*/3>I^cVROPbMU_W ]^{fTh"tI,'"Q>zR202|X$X{3B!(~?3=:VM6q.x>-dy+~u=Xb3 -!R,0qY *WiY2\ǎ@6 GVk=HsrI %308e g_W f,%:yMƯ(GbwCaYㆊ 5֬ W/LxZHj`՜mX",hGv废kOݖo=HMmlp6c1ҝŀt!8": |wXG]Jv V_.'91G^1e$Pwto`*ӥ~Il*Y?_%z ' j&nK Mwnr*솲V@LfBfQ4#P2y!xSl<A:c\ҹ[nq:Xٻ0Id7I@-]s79άa߅Q %mrZn,[P1mM^Yb= XZt)\y1&5FLs۲UV'q=KbIVW}%`*cУ* /(?olHc瞓zvUu =y P4U̦,N!#h=#Nȩ592^I8U}{Y=\L-Ƅ` Q 2MvLAh[ؐ f{mC :6VD01\̄~g JvXa| Tr mϵ)[AĄAc}[ꄜR'ZFx^@o+dđvronj^2o b1f]%wɢg*. Yq%% i*He\ЬUzJ:Z2 > 6S;y[[Yw|βS_ˌ/zHxg PT(=/;mq)C93W? cYKp5ҷNfa( M>Ag'D{(˥77m-@nUc` ku._R̔U `Yqvk^)(uLOE>E- 7LR ? hL{1ЯwdzetdUoi+5S7ah&AP EDX&B Hr&WfX8A%{\ŢHD@[ {.M&h= yJ-=T⋠@ܥXߒ1p+$n[*b.D_Y3.QnWT7jlj7u).bn>sū1{7TN=:R  {%^ >f<9cTC!yAoEnUhU<){kL6Jp}Sn`s}.%+{woԔ>_Q"J"ƨZb 6H7jQDdI{}bZ[_2ȖYE\ )ѣx1^:=^`e62) ٲ - _-9^7@#=Ltnd侟@wZ*N>SJ1 ^s G"._H -|w!K~D9:vJJVz:l3EFN],6"nbD kT5X rY:SC3 osxK$͍'ӹȩ!Ep%$1I5c}.yfWWw[:I@T)R榾gT^D D/`kdU }%O~#`b <LGcuU<&<_J]wod|.g"F'q:j+0D`i f@H&%'D@W|/OwuIDl 7#+R>;,;c(S1q۠)ּ΄#^L:`\uz#owmSUz\h$Ρ9p_&IϤm6o\nnc½)M_?yu;'$Ejh!KLx[? - E{Kk*l0BJ unTXhgwy%r`֦Ef,D /K8#f.oC\_ ׈ A$[&31]b"KX̸NѨ/0'bT% aK?>{o!2͉3mI84$kwklH)Mۮ^D)׃K!̕+MM)Y3fēMs)54\]WSv cAYz!ucerf "%YP6}Im|fQ7]]ǤUJŽ.hpܡ+YN%'K`K|.bƒ% 3ڍ:{E(cөbǎ\}R4˄_fC-v[V̰ ww/s*8NQrJ8As;VGvTl:,>yJ3L]1l詘&zK,za|dqLփB8B'X<O?AC&D0]}Yj]XT90{dc{ nH)ٍq y9ԤXѝgϻvrΉ/ubΰZ*cWjGhDvI<7;*'ݹu];y5z$bIZg~?./l" 6AX1ˡ~Kj_uRÂ#vNCLc;` (Mmz'o 6 ~4aˏտ 𢳦 |ts4r7OF]̂F |Vt/߁Wa B v+1&u]Y 3Gܴd6bIr}Wq9sL661%&" Ll)2V.וc_"&eTr $?s!"ړ*GzqJOM /T"ؽ]@'6YWp;nq~<ˢ249Ǟ+ǁ8fK_ܼ.P_ň {l7ZCSkel(,U{1tLLd'7iUu=!Vm0V}K@fml9݅u1ֲ3; ASXzV6Ƭܐ𳢶қq6VGH&޹"`vC{s0/S!YM}.\KfG-mn|\vLnw903=:{jCC@+Y,UN UB*_Q7Q%/{kmN -AŴHzE,s,x0yzB_FO.cfA#{χM+| ʶ~+MCWMvIХ\8ەgT^k a%\VJʧ*:'ĔLh6) 7l4;EZes@kXO.ޠlQ)l㕮 ]6G4F xŤʹ܅]w飒{nh^15X U " IDAT#Wy;H̍)]f \WӥZ* ;0.S0Sμ8 BK٩P1;4 Kh(4ALlLA`}""2E0rfq @g8QI%c*1 Dѫ+ ^b‚Gtc| ))|-~t-d^O ר#je0ĮPݜ0%­F(Z,uKw^汹 ,BSl&k)r:'YO ZD7f?ya0#Ѳ ,Gx ׁ1U} ;]y*qOF]_㟺%.9.x[KN~6ŢO` 4c*ǣ&c φԌ10Kh.[[v> ڙ8nes59vG 'l斕krÌ]IW^Pup3bcjMqzrns(<gp7a(a0u.2l;\PY?!z= |YrĿջB 4BM +aAe*J/㍭LFsEՔ}xT!|VQ _/](8&vzhڐ upw|ZH-^G;`p3tӀR! l(=KϕJ__E\^=F3:xq,ӨqQLʘFX-2gYx^o.1kŔ?ۋ]M G;!SbyG \AI00A(MEa6/ğV-_a~Y&;{l R/|JHT`(خG|XMj*P=ÔTΎӱ^Tr˪3DnT Τ~zzdD{lK!ljrz2l6Y4H5Ɗ+da=D@x'/S/p{7 cű! P৩ij02.6ehR~-[BRXnkx\)!e_`yXr =(FcpM"&hY3g>#7+CbGDiN-fݝy]6TuBH.6;48"RiN~(= R;x.PG%~WL!2 Оɼ0D@x%K۱^LX(A 56$q0Q$cuiSB%V\26Cz)W*IMȢO|0 `k\2!s#)kSo$Oٵ?f?lVn7١Xk1Le|':@0,R8Zt?v~ F'bjNvNҥh;`8`H,"e\Қ8X^=C k#7&|}osDž1PJn dJchDW p x}v#?wKo,)1%0] sSt"aR `.H^ 6 @ m89xXS3x TDڍ|Ԓ3LN44f$G`wP{)ZT3 Ǻ9m20^gf"k]ERdL]m0ּ(KxcՕ UI j<UhaP3s^.E;M+x)gXO=q\- 2ŴSH6b> 1́$.x~ N|`BA b˄Kh&<hmNe&LJZ̟z76K\S_'EqN@o[G N#Ra2/E\&PR=3S r]vti8?YPp Sq OQפ c,`lۙl|PJ]lxQ,aɌ;`7x8aPD9r%;ܭ8 5uo7 j`.gBzDNȾ4P!\ + +!,RRZ J^ h[6Im*qSRK.9+9%D^w% K Vr +*7:{bWh\ @C)'d6ibqiONlȱPMB>Nb8]1>ܦ[.z^wqcSd[>'@'3SX)Wi WDV!H@L/&RF &Pq RY+븟Oܜf<@Ҕr>8j)j`Ʌ2sc*|8\ :,Up96 F fV c,2W`C#O65Q^5%>Pjs ^!~W3ϓ { e s\ruyM 2k *:NG*#6f8'3TAdXrt?q#)W z}Y$$||0]yЙߝ Fw@DOLuMd֊63ZJv0H]íj_]sS_70ӹ҃PcY9vc ļ9PjP>C!LK#|1'vN<'`ЪﲻOS9 &|l*?{܌SRGHDJ^`Q1}ck.Z䨜4=TL-vb~U0ۘ:\YtˁlS3;͇`_)A-+y~nc`JB ]`S䕪(yb/G9=,i$BPZIe,xc2|Z\q8LfLn2f6JmbωwP%dk{wU"8 -E-Zyz̬L3W؀WDv=d@'N'vb"bZȉ "4Œ1/VTΈLiL`&<:=x^)r)Өk%s0B| .D跁*r#LyD"czMP8s0C29MLol:h3 _ܬNVd'] <ȷ{=̶JҠC$~&K95ԩ2P^c'30݅Y3'}?Ml &[>6sJLəsS%qp+攈` dcu1\1wCO^Z q~)2P+rMlW Ow,\a;B_(>uo [u)U3\ "~V66#R+"]. cd9|v؛Z@ fUW̦#9!HI)քVUӅ0B_u#:3`ʊ6xҀG)5N"t@33z s9mDwb]e 0>BFo}s =S4%ntޤ \)oWB+KE5'$}v xEgs\Gv C*f0O]cc)yҁ;9c,,i[ qSlK]v tv2#ڀ8-94bYB\˕ "w>KL81bO0z4F`k")K|lT _}l.kzJ\)v`3/S)v͟bI0j u;U?Fu cLF-P*Tc=cU>OVvzRd`NQżw_A~lI\O*anL|5&fyc‚tDN7t$LҀ MZB4alϪk/J(NN\!FjВLS=WaZlrϏrDCmJjAeL"BK) 3.mC[?\R" =L4aE/VY)cD@Yb2YN-iP <5a&k@4Lޘ KZk!\kLcl:TŠSi!'{=! IDATb&\J@da`F3rf܅+(#Cѡ 7xd35'o b5 "p!(~j~A(!>@JP6=r~ EL6] Mėp:lTOK7KJ(mlQjART=G6Or+r~ ,B/3YV˟ g̥,I0ڌ, 1[𕱼FC"6ϊ 5jkbVvCFh!&5(9_ /iZ %/M?-C}eOl TfHL,ӱa@&0B:޹29;}Mʙ8'/YNn {HWU*tnYX)"suz.k+Iݻd va1薉څµT8e'dK[y6&> lä"G t'49!b)\G.kI )rI7{0C \׏Ta^_aQ]{=O zA엜6#%6]dIa('D Ӵc:Ra{{|T6X &+;֞ t՝X2)M:@ͻq)a ޒ{=槞 +Ybwր V̺d y-#`Ta@aD?d sB4 ͡j`Bӱ`:h^ -Zn,T`,tWq#$zNL8-ie2_&W=.C{.o;^}C -Og }Jdk >[cyV0CBgYA~!6R~w#^=YBjVaaLI!P]0ߑ`#P,#&8f@P]CLn~ NiwܱѦ~| J T&qJ';gu}HtzjJ)&”_@?WQn a,S6L@ ڙ`R *P  &0c|?/Fp<-(&3dNRL/c@0'%:7Ÿ0kK!˗Lnb{ ~Sx ,,6Rm2EUNmǁ!"ȩD%@41sabv~ϱiS=D1p $d| ;:Ħy{~\`I*l't`r5t[.?'&?t݂'puK,kJfC UWG\b/^%=B T5*W/mlc&)YТx]‘DXHU[ 0+)3PfEX~e# sv%ޯ,R,M+TB6ӥ؝:F/:auw"Z a&fxjar%J &OJxb{>m`\dp=<^*k:, MȢZݦ s bH^a agLݥ*)ϑ@`@ `JfJc%)j2{.|lW&06J6)]BƉ|A'c΄R5-J!cؑU+@3oMW8 5`"Nj+XN9{%^7.{}j% xEx`._`h`:YJ!!kF l{=5h0~%Bd)0^-@S+QGV_7 ?$OKjo_xOŹitЊKF*AfT 5c׭eBY+%^3QOcu}u|js}hXL $\c?c?c?c?cY9)c<XRc)7cv<_O X.\XNG#)DhC +ˁbԌr$?e+\z_Fϣ^á|\N M&4t"Y$S9ǚC~0e̖x(;2'#Dϝ)j>@## /ŒC,s+XX2+E> ,|m1ԩ{5?P|LʘXNKmtxA>T Ϝx gVbl(!lA:d^K)C^}t g!ny<>Շl"C')s #,(s,6nk[,}.󀦵L8]{{+"5M5+0Z#xPA4Ա09x䓱whICjr`#KJ)_y5yh{אcLfR>2|D2r@= >xBV0a1)ecMRj16H"#rt<)<"Xv=>͙)Gq9a#V* ùCl(W&)R >[4ĘC,1&&`fBC>_]w57)㻙擣b mn32) x*$@S~f1>X'z)1MehE^G>׍X[Lͩ)a *{=fe(D8^kkhm(po{!ʰe"fu#| SbLޱ/Srnv1sp&C`c9D(Jv]R&aL F]^]+M3$rbPm!(O4/QB3hRbԋ% 3%@GnBƓAAn[37Y6dgY1 MDx3\xaL>I!=E)0ސ z!%4iSq@t!ٵN|{?o#Rﻷa7\1@>&cpg{}̮>aW-Qwt3}TL +P'T1"PJ}"NzgL&̉*eCNL3v`T?o_UnsxG 6 ڿ!@f2>' b2挈j_/k`LN0O.y 8TD3>ݐ){ Ϙڵ.\}[|lͤETPy|rtu_T˿g|x7 Op005 {BDw@]9 3>`\fUdL2Q)>``xq@gLx0bWoס/&n}Uߨ8+ F " #ڜ"GXQ?Gj@ d> [@?}Ǿ^b;yՀ ːXoHfkaJMg/\LToV'4'Y=^wLDܚC20?#_f6f~ྜGȧa;E )c|X0e[K_}vzjzquzh. ȰSpӥXn v%-&|!89T#X.ڜK#U LLc"Kt41?M3M;{_,g1>g2=ǀ&#LM p{WP#G?O|L,!30&m #͡4Rc1srq24y˳g(&ܫZ>.&X~1[ < @}F"OO-?M:?ODPAǘcOSݐ 8!t J&`{.u0ꕩ.N:~y1f}mcL|)0h[?Gx'&$b2%`//5ƍrhJlI6G|6h$Ca!ۄU*kcwĮzyGhd(PtG/zbÏ~@$bMy3闧#vP>eq)lO==2+c|Xcs d~azx߳e޺Ow1ke-#*}]Xn|ιC 7M1_ px忏 /1Mw>G9V2QR6UMy[f2O`_FuuA?.lhd zlbGr&dbϓQ1_qS7ᗧg#41~JYސ6d&Fb- 4Oh×?3dG\kVރ;xL& Bkm$CDOx\B%bch4o'K3OÐߦL(Hps| oL1)&bţ1nho {g\Sau~|u>ft\뤺K-t@LR>cdޣi5(?-w},tod~OUOQifQFםAĔWgn}[ľA#4]`(~ecb|FЯVrf6?ozQ#æzW`f`̱ PxC!ӌ[3ԬAf<3ſmMØ׈xߠZ\`ur.X\L! d^ tҴ3)E.Y/&lȅ.dC?횦YHGrW\-*?ڥ"a(%})1sre`;`GcX_x;x75VQ܅_f}9mV :iRJh|1Psfł2E5#L~n.O7:c^bv)rLfrTĦ.ʳ$S=;3 /=whV ,O~vqڵYvppO'w#qQxSϘ(kpQa<TjN80[-8|nyl6/z\$wqW1"\FPF}H=H/1PfUr.WId 3C@u|9DELJ : 8t!&"fY,3fgL=f D{]loW {㜀c3㔀l|cU*{e̗09UxWT6Jj!Ջ'L}"M14 us_}vk{fbfxWAP^g%km3e;(&>)c߇ZZ/?{okq}+2s(jN$RbSS`t_ xx˽6 \܆ Àjjn[ՔT8ŸX~Ȍ̕O)RڻCb}kOL]act~rCGGG8< 2āܹs9kb9NUU,QUVॲKbnhhbC{ 9|ͮ Cn9R i(̸x y;[&>k^T"(JVsOMOX)7wWe_y|}DrGtv:t~<,ڹs:2DEѥzIUUtZX2_~TKNvq-^@,!n wV$ 2/Oaq>c3dc!5_ΖG?u M552;)6S^ k*b .js^__2 Yjw }#F (EQ`^w`s[םs"昹ʲwXxreqdh\<9$8OhteZ \Yj/GNXB-E"yG #F96WX󳶕EDrå.5Sx4}d`71 ŵ../^DXvt{]~pNWځN:q1]tx9֒;ĹԮ7w5NtljXNZ <΄[#H"aZr{Y'#Ƭ[dkWV׿N-j9252Q\z+~Ǟ{ IDAT.SY癙F:scA2ť~9Kb9 &9I8Z˕qzlA=9 N~kbIN ItDU,zqp6( )O2'Xjq: *D8f` [08D ^@#$ pA.,N5Ҏ~Nc]0+Xb/N;6SK /L;+(ki"ϼ5U,wwoHpqЉ =qR NǷd#&b<|MIhiSTQ燕<¼/ ]໘H習-V3(\cucx[;t sO~FxU uot1*r?"3/c*qߑ\SxKf\ 䁎$($pH Axr'6H})[}ј0#nuDO"ƛj0b9!%LyYH--}]T/]<ŧAJLv\\eRֶ66!p ^G_Q'ΔK*~_I˂xˤBJ$xH$"#ﰁ%O6)[ﱩ+{D*큕GS[cc.fT@nPhya&C[y=l=vLdY;96x́e1GÕhx5Oå3CcqqβJJq jCl v!9xg׬_ gJ -D,&a+E<[uiU0-7Lݏr ܭ|\fX\Y6),NȰ ,n#]ncxsuؐN<?M6;&Edn x2(BdoC^ǽ""zHKpY>w @] >4}UO\PHX.۪sdǬKZ ܹd508ElNvLϩLjcZ5e vp#W.דmeā'`{I| C\xN!C8!bTBB ѥj]Z7ӥG]6`?v{ɸN6婪 1x48p<8D3k;Bp¤4SNp ,';|5a6\?5lE`uhV`pB5 ΖW"kD %b?`\G3Eʹt)#~-l 0_lbw [`=t3(unuDv)Q]װjnεb;Ⱥoቭ)`.SszLIc]X%wF 4Z*TֹBJLfY?ox1s䠳g`@bka`TQ6ZJY|K V0gg\XPDש/;`|4n~Ene \5 6_t3zQ7u euDs&5L~ o2Tbh kpkwd r9<_ -{.-~DM}Obȏ!27YN_KAGe bW:jjEL^EU>vNLH?CL] S{fЭ42x̦ NM@juaAȁ|0 U< Aȋ:}5i/}hw Z=fKk1b,bƀ|81p:P<߰sj|^'K9Bη~qw`6K?SY`r"c&2}7RB\)̂ '.Fn-͐^ ,d0A/VK;aK Iac4m #!!Lp%F366c3UsOIcXqxA@Má7XNb=Fr $HIk溠X?m֍@C ʇ˯@xV-YsgVl?Q vb\j `S3%#݋p*M!"RХRfX6MP Qʹւs8֞"żoSvB `~.f}RqT5F\BߡSX#j΢G wY?eQͨiDbocv0S3̩!*VÞ*|-!Q[la-X}##NOvશZV?(UJ)Om }FbhJ/g*F݌=2&Gx0J0>f P1dHd|oܟOµ5mByw~"91ROjw=d"j3E~9iL1m0S" mA0 [>F!KjlyB:C+{9%沚)% _Z!L[D9vl ZdAk>FMoA9#f?79bZMi@&co34LZt@K _"R`"T+f爠:Ս7EYvq뿯:w}ſcO@EjLVbAR-ezV1hDKԕ#oa'ݷك9VQ)+75DcdJDxzuC# Tpva\EGlAG\sJ~,*Qč)Jh6@RcoK'He_m1M l^4wY>:&3 cfECK 3ni!yn6>kJ6l6liMff"&Yo3@H,,2׉Ԇ?S(q .uؐ:](wXY VdH|F Gސ!b_0ʿ{O[b O 5uctRt\i(gˏaM3ƶ mĘKRUS S=C3*d'RX L۸M3+RB%:бd+\Ԋ2ޅE6eIB =c%b)SlT|j?orIj^ r %5KJ`݅\PĈ3AZʹf@<} Od&/gAtw*H^dI=bOY2F[nb>\KMDI4X\bf3vba*үHʢ]{|}֔B !5gI#5ޟuŷ>F,UtfvƩt#f\0?}o 鏒"SBrJ9. }@{`lFsAU6Oir*eW-̩WjbU=U wح7+X|ԵRltE/x0U,0'f8~Ѵ>m~1/ $4#xJɄ^w ƃvp*-v%Rȑf7SDS|az:ORgo5uۙX:KȐnu j ^(A'p?nrα+nf .d3|L|^,vڗLŸKPXb~USD>mZ}گv[;VyRX lgyV?FDI)+e.?r%>'Ezr@dq`Ay@"Nж—0@2 m\L6̸ NV_YS%ʱ~DjI[`AiKWuy$E֦7'Z[F(RjAYS3,eRw;t3ݢ[uev<2 I1Jdӟ)/@cT Ԭ12/PWa}7YȂљznʂ>hc)wf3,pFX.[+GSH$I:q79@2@4[ l- Z;mnu;h.s׃͂0BMXߍ0-ȧ!!`^Fő7:b6czȘg[-,r6CWHV[x3r!ƫqP}wkb@׫Ie]-Xa+897ZzJxA=ؖ;aYI vr+Px]LF놦"WXPIHۄ)51]>XAM 7莽h `oy 8 r5tB"scѷEsw*X_GmZ˝k-bq1  I0,~g (L#*b>01@ n#sYGOl2&e`{Ю;noO!b.)15!"Nd9c0,PI=$-r~L%k΁h^SyMa}(#ՀM 9_E@ajRxN').M2{;pPLn),D|3V9AHpǘUlh$%P,HTDS$mŁfb3-~[1FygqϴU#`㖂WpÖu #1LmrXT@Awl/ۙڡbBǏ nڦ1.&Bg#.pڌ_8qU|Gd^33n/VnyEZkد'%x%( լQiH4VP,6F"9Drp/2i,!ogMAlfXcJ*(ad1+oA5)Se0Llo)qȌkudP32Z 2)4z,8xSu5}bˀH kW abhCHc#ŰgZDme7X[zcnLiyS ۬ v~ȉ2g M-*z}ë 'ڍhe eLT5fHI^ y)=VS]ƀqO;c$Ia*ʏTr +!1#nJ3`ܢٔV6hZ$K>s/"H 96 F^֎Y$QŎSȚ^7hyI 3Q(`(R~+c=W(bl@uڵ/"D|L0`>G]64xQ nz>B.(|ĶxC[&P(<C +d;D_EGs_j9dNjdL 9.Rf cX|F ;wKR#agL.)O'vs4o[]m_we4[/13>e"뭻9e5p#0,% ]OmO[ƅ{~s)xewcLnw ۤhA6.< @JB7޶u߅PIWX,^ )|pL\ )]VM8.,6߷Zݹ~G,oI cFV/繿kf܀EMcW!CM4}8pX2xmԕEkrvQSy5\}k|g+$fHhS ~60v;&Gek+;kCF$A:V¸hvBʚqEYOnMmZ+B .l3\Jq |B@yO6崰#=H-\VkMf:,-M 4L?jGdqll,ZmI1,xŘa;&G(W+ AcmuqK3:C2;v`[ &SnajY@VWY*elgE_غk0*h8T|,6] #\ jc2F]KMAQL4D0LV-/\&]|ŪC,-zRnjQh,`+XD-#𐹟oUd)'pw<>bl]G9$H*ۇ M=q^/D"~i5f[ ~_-\I@ۊFLjċŻM* Xnp ܴOϠ+PEPӋ-oٺ)/2a) 2lAkLAIS0~azgA.[Sh.ɼul0""<)OĄ&͐u{ת 1S[=k(t`{)-?:Xjw!w5.sA++ R`e&wu2{i/m;QM; f;.BB|1e2 ?ŝBv&"ZvSScO)r\R^ 8 榭1d0W2p;7ͱwArۀW7iL w! ʼOZZX7޷eE8lF[.s96`외WeX6VK?{E^ƞ`T_wDvj Δ%\KYy݆C'Yh @ي2gewNG]'BsDD`++;a[溼97u)db`rKn "s,G{p.MxAi\Dǟ;=nɱ~!p#Q|%3w [l=Os.BUXȕk*dɪXFK*T й ES5,ΩZ@u tI f45F1҂fZ}TU\ Oss`ob0Dr*=[ǙFM PܵV[MN`mnk F|]*,d3hʜb8?9KKغP Z{;5ʲ,8'ݏ]1%3Qr}es@Xp2<:c9Mi%x6q2|[-JVej;UTndI28~-gDLH ЅC Di%@n̅u[ :w0GV\`992ށmZRvP{ċ (kh9S'+R '._P߼1J2H{}!Zt_Ӓf?q^q:Ha=פVxSpHuʅg(}p`CXp Q]@"г}c{σEhLXm }}.ݚ?5;AI72l׻[f'G+٩|uk񌰀j&55b%vPgw !BB` H ZRYMD)mS1A},@H"Hq exr|h9\I!pČg m x bA8;ν \Z#d{w7[ǝ j!#_,oN0ڝx(O 9"Y6%@XM^lOR9(_byhdԠu os+ﱅbˬFm(ГsyEʛywCgI P7E#S;%ș 9n~21g& |9SRAREELp ^;5yÜd0n˦XK7ё(,#BtWxOx2B0OCe(+vYQ/wnfY<ܹCZ^l2hQzrK1Rk$Pu4T k!{W* p /QŖ~4e;شm+ Jaɭ39Eu7FJ[7D*'XLgfedEo;~dB#qITŔ(,Gh,gtѶOьz&}u܉*Dx [Kʊ%dP_-_UU8 0RY>" kw[ Y\!aIYD@.@k"99mIHX~@8w4T41ZVq+o~`+f;RL֛;b#͉J H섅ۊ: +ScYB|"Ċ1.,džlr6bueԀO)v.g\N5u> mX(n5;IHr?4IMQ-- };X=>LZ1[ָΤH(A+:W޾׎r|6"5k9a铎h*wz ªvc@#yapg-)Wf_Xd$nd*,(ChAD X^ Nu+AeţG1eBBb6czWP4sZ,|Q`l!>-Jrf2;0sFc9d )ꇫD3LxRl2֥ugkPfΗ e`2e˛7tdFsBD?E%aT1$>Kl(jo\J,,P?l)ڂdkkʊ%j}jY,ߔ9:.2a_}k`LȈ"L8nԩ<1hkq)[\Gz 7`[9`81ۍi0ґ%. ˧[`Al^[cX4ALQOK'_i!a匿r,/Hel`VY$SO/MYY;v̸ Ư[}60KOB<E_-J0w?Z[`Tu \<7 :Ŕ.ojIv F[P:EV "D#`xG b%C>J*`r^A[0Lj̆TV1-xKz[ÌS4gb7M0o5Mx!Y[Dz4s ƎX})rla+I+7YEN Ȗ'l]D6&Vl{V%H;Oq`2<$.eGj=Ϲ /co}na] WiZCe"b >8>x`'c<ϑe٠|%`2TT 5<ˋp GD8aEHAqo-7/uklqʌX1'kc*tC_V l g,JйÒSaojNDV1a^CsZ; W5uAX]V.e9H K଀ f F9yk|2SNuw\*uAMMe}͉rmjn7%+[)+ҽ\4l~ͦ HL؎O1lrDD2OB)ݣr5clft( w̓rA85uX Zz9[w[wwSK""R"fiQS`VX!;(tV0LLV B.4"/Oa[<"3 @-XGʸ<ú}&* /%&D2^d \o,BĆ, k4 .  IDATflK1/S ?28 .5+UN`bWt2b8[,HS!#wZ"s.xό 7ź/QB`W'P;n!TT2j0$~l ,k"*H\~̒b:vεZsXI'T. :R|y d["Jzn@9+UJXx*&}rZv`k(t$,% u ncz J*r @y2,2xa s:In4t_(_:R"lϹa eK/c#>CBӋIJ|ӹ +إ0q5W),Z-@[S/>Pbn_Z -Ԉh/`T7 Xs 1- VH ZH^ lBS9)&3U:Խf=ոjܴI J-V@;;%+M1#9eȚuB gP7ؔ.B7vnNTTN}1i)vq :#ݮ&X̘&U@\/ g06\mNX@7B٥ Rm[(;JCX=Iܤd0|ցGLPb?)6%;Y'R-]m85zK*Ie9-D&*ujtHΘ$Buq޻ )ʶ >[Nt6D)&qAXS]0"f1>Gm>GXONDK"cA,"8japɒ:9fGjuxAvp^v{Og}vfˍ1cLI/OWr\3MP[`s)!6/*(OZpe8I`7c4>mW3NO1-P Aۥ]ۿha\hr`STTVjVWM4&bH}=L1.߁l;6ko33fϒmv-\_p9,+bBU~~Ck*j<<3b>-wRZdzf[aj-EkBjɨ9 Ώ2P C}6wEY?ƛY7;)S6k%͎ay|b4-^j`T  ˵L=. N\ gN0U愫1jU,ZK30$MƔ6x&2dNXAd->d{f6ˆlq N5"'Iia 񴰀 0cx)pq DO03k*P'al`zVo(Y-DY u Rwxl{`0ul#ZNsVNZm۝'%T\1V~j?E@*e8rd. [#` CXDB=AjP$*5C̟ځ}M]$n-,c~MTesbSAdϽ1z1itOЀwעVJpR}Y 7)6AJw3L,ce՚w+&TV [<9`Sg=(y;` &Z [r5c`㋬ANx̹[H @;Ol~o1iglv-}SLr,Q3hEL}ÿk#b4:GA|޷ίB5Vj>b<xaU/߅])a}ws(@;\UDQK?6!A~zeA(΂ ~lm 3"Gn2aJG_;wc&p9en4Mjg`&  Ysrjf|G{3m;P*xaR$'sh>U"ދqhO2m̃p#8*\ w_N=+'BY(D#~p DtӦT甛 k3,cNE m71,d kh",X*Ɨ$wc9eSbmč"vj :!w6r\>xlb ="d|_GϥHg;b[P?4yM.1@ Os_y7{O?X!$ MN<'ZěSC.,sad+b5"ˊd]F:uAy<0dBR3Yb=Iޅӡ"VZ%\;`Z0Eo1!G\F Pn>% N4+Asjh &~ցʝCjeEHF ebGՂݦL`~=yl(L1'U9APa:-\SvT9qm`J~6I~&a?Z!_R"T^Э1la% x Q-MDLbRrŤ )D\(-1s5Q~ʔ[qdUo =Gy~L+d\.L&\Ux7RD" H]) _H&f!`qn] M{( ^{d-]Lxt[3B]"V1v\,~q*?S#\m Q L<5C @paC}a^UƱ T Z=@_bcFYa.2sZX=Z5XH5ɺw!,tX*@LpU'ٱ9Nŋ̒4!pFJ%_\.ٹBB a)]z$*?o.t)}Acd#TZ4 ]CULOlj疂, pcĝ[{:I1B/,%a Erx<9`d[dr$&%9 r@K >:@^"S>b:TI͌i]XʦbeْFs+m~"[Bi`2bc@{+1-Ug@jB!Kb5K) o}@>l't7P`ߢ_h?/1R~/5rQNh (w/! _BGL+ SBUaCCPr.9[`.fsQO pjϛ(q&}x BBc,; xDBI xPGLB"4A̱JD6`اTw}ILX`7kO E_*D3/s^wIbfwSnuqaQ[KjP/@7JyWaX TYv"DQ\!l  ǰs_4xTOU񒡟(;Dy ,v8aj7z,  B>BR8J pUbcw+tP{hZk|$=#W@SbݲɸЍ:plFXK;pIIQtes wlrh\A[q>V; +4('̗%\pOQc 7c, `ȚB_h_&[-DwUwr^i +h"1d9w@nXcX%.jwպpn2QeªG)[ˡ( JX<7[$Eeº sE[J-BXxJT#9s#eWg{?{+Ir}df9}siΕ3!9EYZKZiƮveieZȀa, / ؇}ߌ a-ZY)Q+(J䈷 9>}nU2ȈȬ={eUy`UUNЮPuFmOrs!|L`gB si{Xw&0G͟l=/$2K./Yys)1jMBuk^L0 ϚnjXYd]6uJR0։  > %2"37DŽcϯq@5|X컂qv{MhwaM=+-@2z$6qΎG鸋uѪwoD])4s~'~{? 'E)D*dz)vqI4r'n Y\&K0vwuK˶{4?ChT8!LɪHb!cGK~QT[vѮpb&91=Hdsu p[!Ȥf"p~`Y#b,iN-,v)[NݩP(s"9X0++xX}kTɥ W'Dg9ޟXj{ 3A}M3K3O<:'# s-^8&v aHˇX u#*G`ɬL\VO*Jf267B Q8?͙2CfvL5q`u1A\lKn;1T-OYރ;@)yDFg:Q7<:~' v3X.*cߑgNxcVy^&. |ˀ>1sܝ:~0$b=f.KI`8Pm]J#.i7h[g~ #H2LNhw3DϜ4v93b,uq9;@[z_I=@(=STV=eB 6wLx$'Ƃd/NZq<09.Ր-ض(2(~E/BY U99vA]t)@/[r wora_%C` '8.^ m%eHx= ܮn U.g~zyhl RF +ln-c{l=c{l=c{l=c{l=cslS8Xbc)!#~+q y?5X;B=>Cmplz! I[oN9-BMBuic؎#Ɩ!|NUS& q ن|<K1ݐǠ0Hs WͩpƁDzg=@m`2e @qbύ=7`١ߦ(zLy7x^/؆)T<zx`xa!lܿbl3ER 2[=(S}l'  )K=z+ȦKtFzbdL#I .Ƅ`mO  hl !zE:. P>g;9ېܦ92Dc>=P a>f1R*a~2"bDJ|yb9!9;<,?iH$G G_,+!ft<s솲H=_ P 1TaXbkj~L,8$7b9HZa=Q%Ŭ/H[SC - c!P3kދVB%CU3rSӚ#9=~ؐ>Ɵe+6ZRf?'dzŘ 0JDXV sF0U3"oR .Gh(qh?䓩(}9avȗ#fe0E,!}}Ӑ%̚Tr:VD}X"EZ9l1x9̲Rh_w&O TB櫍l",آD4Ϸ!T7C`ECBQn GRB#MÐz\CQv4QGxxj&f&'ТW 3.P㻩󅀧 "ӥ ҡ*os5qH0 5T" 16,Rʻ=k?Vy5=d6I)!?1_}Hr]7S4%YlB'#a 'aŘ;T /9M}L(!̛iڷ1 d@@l|6 F3#F!t_G2TMXgykŤY|N5ɨLC(їvfNJhl9V'`hѮJ75mb F>0x-!?'ʐJVB$ԦBP{)ϊe}D?/ϱ7XFl=?ȂȀT ВN R?w.TcMurnxfȇ 1 9CCч|8:1/ ҆B !}*'XMjWRFM[-`'ؔSf5 {.Y"2Az^ʾk_ak^#5eQ0RJX3;S&&-CЈW ],7BO%"fl{^~.Nc( ߷DJM*>H}*~~u`6:bzB GAc"P1gS MMb^*"P Y)qATM WsVW9w{FD!Z37)`ZA_o3&bGWWf42tCDf8=s%Ѯ]7N)\|yr)}|0)mhĤdI@wI?$;lUO%U O=ч4МD?G2t2v ҍޅhlЋwwz)=H"vcmH"eA*{,f]-u͆V. T+~އ񆰜/ۇҼRVੀeO5=O>~a2"6C{*s|l_v&4/n0@%T˔5\2,, IDATPNt/O 47cjI^,ijLAjz!^yRDf~ZnC fJ)(:cl~@%S>&emy2B[@D_'&u<> |!}*!a b,z>e{W+7)_RFߨNa8옔Ce,!_ tVN{IeTNY~~^ o雈!eY<[fYb9#'9vt?BJ* fuK(6a-hݜ9ʿh4/8Cb" 6V!& 1_첵v> cMQlN2{N !JT>=eZڅHUĬ\RMkO|RٯæZf݂]" 1WQ?84/}AE2A߇φ\$eU1{YpyeT.0O -?2cz!eh ^(fW?bk*5UU#,n[Iƒ`EQt9iZ|iIB~] hH!q& >ewx[=}oWL_}e>z_SM WY .*fΣ~d4w_#ǭ֙^`qx.{p\>˹?rRHQJuXbv!iE ! Pkݺ3qW!PV,xek~<; @=b=0ǠS'0 C&bЌPA05@4}之 fj7k<ؤt&x]}fgbEfLTS, sN.7W^ȴ }P.h_)d1sHL^7AC$5)/Iuko# 0Gx@zN_j>(ά,voǤ/fDyzMA#xd47+>(R*dH\X !pS9 1`(؀Ϫ&R:z¼L6+ҥ>yH ;sHѕ'=t7T_%1[rT7I+D ~;PD\*:{L1lB6F17 R`Kfl1'P.1e_ٔOɀI曞2e?olx!̔j^_T8mN0/WTbS-&;T`1lފRtfct4-?Ro[3F`2.Xy,ck$Z܎N3Dl$#q-p ü+!> ªV kdR>6dԇ1aeH<{h6Gʋè٢Z.P}`^ę,tt2+(}Epd j,.ƞ&80Z\D\),q7Qmz&P%fv e#'2ƋkCZL4!}d<=&T%jN탮u}s&{ ĵak(nՠUCyjcll23C_􅇕If,Ѹb,6c,FC7ë[nk1y0>` x-^-0*eRh Ym.M?+Ԕ]}5ݻpIH9O!^Rho@ ˅|5R>G'Y U|sOww `l5k )ʃw`nu@ 8fvvv0N10N[a@-5ʲ5J mӕU˘Y ?|k 8 _vkX'(u o8ʢ!<09ؾgX:ΐJׇŰa4H@ ֱЗG "ϊO}bv8Fcfjل ڠ Ed JY*TU,a sK$-s6/rYm}(< 93+ x%:fLϦͺz ll$#waR3A1AohdL,}`J犽_|w+R:=XNWU_5 g״Jfuy(\Dm2fV?ljb)u30:2{-^ia :fj~}xqZ~Qh4t:]BtU+KKǴŘRPk_+9׾v,@ߵ a*Z(1< 37*u",3?Sgz7h1Ô6﹚jd̈ׄ Y}2FP%:YޗoL/\ {+r:)oÞ%-TI1PɒǕeYseKJ]PҤ#VI$:H)TPs`TP 1ʱ1Zcf`~>u|l`LT=,P#GpC~ ݖMO{ڏiV<99w,t>IÝTʲ,\.a .+p^q—LCaБPJ͔qHiN[ 5\kDu- p s0sbl|zOl9 >Koͬ!<迩s@0eLli?ڹRۂ3C ^5z)}:b PtLr6xaQ`k?XA$_Okskp G`qj-*fpBh$:=[[ߧHaG)"P|>zP+ ϓʞTj~<@T @5d(@ >$Oo 2hd GVŸvs (Zq9, >(qMׁiQozsk;AjX2-qZ4_sb X*@ fd1'c<.y(Jذȍ %pAi|V8Tp {-ϨF;Ԗ':%V h?s/6{d GL*v_ 7q~-^:誘tN8q'k\Lr[,0Z6y/|_ʋ˭93,n`14mc" _'݆L \)Ҕ#@x?5PZG8ŁR p2\]X'VhL~Fk<&_ڳx z/7$@٤)(GkO&~NO`nzb;YGIUX{9FҢ.ʋn\WJjS[?fo]Jnvpe*8{*y n6i#șR*kPG{65*+S߳1ңFm~Nz?Hwꢁb^MZm(<s w ۹"d /wq]UxxqkEl$h-{lG0x'UU@ HXjB,zpx 3"M7&>fp lp0Njkn|\2ԟ4!] a5)"ezQTu72_5ܹd4x/)6rs| ۹xTd+:i^VU /.5/ng^NNk|? ƂA 3CL2 x w w@!/ҼP;lpHnf SbM|@E3 OI1|7 o\;1;v\mBi`UUa, ݕz'> `_mkf1! 7,n ' 䁎Z"m%C jx oo53 V3bw'Gj02!91InYƳU  +=mu2BZڙJ  ^ ERLwmcr}P}`I. vGĨ)C=Hau6Љ 5iU;f|Zf_z@-Rˆ~:55I#d pRbro(_r&^o徐\:בxqYmqMh؉s5%?f? 7`M=` 1\:7b,i .Baq ]TweBLJLe *4 NJʌR{ 3URBB<X@n\VYx_A`icb\K3E/]V1O6bހ.%0CwmtY$Rojb*pwN >Fx2(ogh&`|@%[~~TylA; 0kΣ qM5\vMf9ޚ7z ^M(UUKQw Ffye^[%:m }cb|_,R(ޯa ?f ˶ pS.ד;%5C֐ö}.jG\-C5=1}ZRS ^C)*Z*?e4j9Mk4\.V9$j\sϥs;Trc̥Vrwc,Pfh^< ϒ}J0M ?b6\ߪ_l糜]Y>"bmf2$@9JT2]LOzv*H<޿9ض vq ec;JobQ1x4RYar$OJo68j֥$M>5S:S5Nxz =S2X46aдXKZ e&hXƺ1Ppf+P#\ zķF0fu3}! ! ěĄv @(M3svda%Z겝43C*ca| [xmb Wr'GŊYcHjQeM ez@X ,U&V`D62@'iU⛚p6ZQ'G%Bfh0P{a9g]CG XN6fOZ&Q N8wT {H"9$XX*<{HMY3Ex/Y8|6Y!F86"vfb]ƭzwZjZj"bC.SE]vl(};GŌ콎=d"܂;m4C/ ̐aRiP9%_Ua DnDM;&N;sU1ļT,RWÀEx\dSR/11I0 2},MLw8)ڟ=YG Q2.n*x |;!Xuwy\zmfI#Ty]ܴqe ,1 %էctT|y?)?Bn!pRFCπ襕r&S`E؝_u }<tVlXv x|RNJ"8b`v}TKu܅,["ÔcTrfP`{AO鬒> 6EV%˾e(L.a"DAy>uV쫙\.VYo';C˰S0][(.uc1§B5 p,}TS-Rf&,"mg-@ e)ٌؚ@=9P%\dۤh580 IDAT{g;)~̪-lgjQZ;Df?HŌn^?vg-!C'&HgxL0T dƫE"@'+ cX,XՊH*b5"L!!؟,`f2g"8ίB;?UZ"Em`hO,TbNO:N{[[׉q&2](/ToTu}`ϕFa`,.E2! <2+98R d)PN>W*2iGTe[T!!Xc; cꗫ15>n}L&I;^"ҧVx>@ >)G؆Ceyd=#O,*kMBcge_­bau@NV>L+J/1% ?sN8[kY%y4ISe [ll1 4=TPUyN&hwc';  Q5rO0Dn~~e@= V)ο[WŮd2^R`:YkAؗatVGlqghKj@("$Pu!BPM0-=Қk\j h)!jlԗ< ؉fW2[l4}8SG-\6B_:"F6b0.l DC_l+4P~7FQ:w~nfn}lb{Sie.@˸@ 9føwvS"Q6ک6r'%ÞZSǚ1F՟+2R'Q!`kl}҉b&ZXaٳ ӎuv:<hqZϰKc_q?G(Y:21!eS$fE:,m[+ ok^sl`N 5+(pbX'b*!<xl<ZVØV/}(&VHesk__1nB"&uy sL"u#1e*8T4k_s:TL8Y,G<Q0KDaQdQV+,C a"f˭RzU7hKƿFLiߥG]>Xe#Z8Dgf}BX WzB>LJRrfڿcn NhC6Lrn{qJ!l& VK anuS@o 34zC@ThP j}*9Gz zW+MeJ_}j ,T$uY R?툵EeN_|& ^[`a_af{SČp1X<&˝ { <'Xo!ecH aӥDn61-;_!D XǜpbU)ŧ",H e"m#B kM6:+j}hu#}V3yՆ/^՗y )G.g utv“=hPiŨKb 2 g .GxpFݡ<-ȋdV ^'ױck*6_B¼V5+& ĜJ\ϳ¾M.q˘&Y*ӗpC5hlzj.0T 5FJ[*FcCxMN`<{(0]Nmm`q(zwl;o! eRMg8 "h[9$eIq76~VkE18hCks\]p1HdHx!6C>^8֋Re|{WKdg g}^Doog z1Oă7$'k,:CQKԁϑt\cLy"BN4  Qg;c4W2X(ĆAX5ˮ*"˂17CE^;ym?x$:}k&ine^%~$eP63pܯn⯝}hk yY(/[- P6f6k,17}ྡzhʘ6=R. ٙ`憍>n½)P7eh.r;J3kuى' g>|K%"9f3Q}&0 @1RYo(~!c!j8bvuψW3P25cM8c4ld3QzVb5v+f@6j wۙ1'Q&^h#_>cBj0jԺմ/4Q)aF§bO<.ER3#[?kP{Ä Rd+:EIf,QF:[i*eBpX(=6\@zEkɽ ~i:w5!ǰjss_`K԰Sf9PyI}](o:M:AsQOuAs&S8Bg1sx) ;V뜫-'BcTdEH)}W_r1ur=*Oq]غ^ڔu~K"׍bid&1ȡL 35cUDK/k0p-oX'Ч[*"")z`h<%46GϢ;.I0\ۅ|S@"PV֏g$s5Q=^I$k(Ǹ؟a8o bg)ojIRm ^7wƓvA=uvK@Ab-\ʂb ?0B !_S^muy" A]H+h!Lֈ1#g"TT8j5_w4f#k"Pq5.3ԕJImSv-E6#㔅eSiW@a,fjcJ-ٚcy9Un" )#RO@gAT7ϓ4K^Tu &)&Y7=}-R~z "?1AcmŤu5 ^˭ Fm(1B#)pYG-oh,7t3r9 @2B;?"K$ieq  3Cf'P Tt K W.B]m6{w&}f}\"R]tkE ե; [%ǒ@N++r[[N"?lGq0^JLcc@A٪`eK@<-~TgD60dr֔ ꎍFfOHPsX8oL_}@,Y_W*+jnPaѤ nW*Zxo$[BƄ^?&VC9BY*?h]ctXB8 Rb%Op-ߍ/7]kp]I2A:!/VL\Fٱ%~ms^wyq[;NNy/67{3XqlHxD)A9 I3%k4YVp:lyw Ilϳ811Eojչ;k;H\!uSu5ʸR$ %T!CKbE}2MUsdmd]4Pay|.9٦h4iEFdަZɌ!4m |-EJߓK-rF CDV|Cx1_*D  mZ M,ƒ͵W J (mM$ *Dx@$_fh, .,orq{eB' M@*_S8Cߓ0^UY&rϸL3C7u*y)`"+]⨳SPW)HėfިTEj҈  -} 7 M9FIVDevxyzLM6`89*ZqV6b-aGo5KKVj-n^mwst;keP6n _ 3&o:=RjLa \φ(kk]ZN1~m`cρB_:Ԑ4PN@h۫[IfvrՔUban~Nj񗰸֛-VQNNjwl P"P>M"K,w3&Gl-[ ^0Er ?K#{gw >IoW1aN<?l_mH?McG'9T`"a0JKlOmz%_wьZZN{n )6C~#Q$XɆ&U.nR Pfej49^Y֍)FɅ(yV%B}l}&;WHèXa8I֋ wn0ejCL廎 c0n5CimP3u\ᯫE-sQYle=M>Bho7,w"nـl)pu&igIm*pd12 Ksi@JF*L\Ul}g18am]Uzi]?p..v K1\__MtBOi~ <.,JZu Ы$ [;l:K.ٲC^~_k!fc9-@W 33FK:5$' ˄y 0+u0v_MwQvXky)K.VˌK> /qY8O B 5K?+;K%pDm?n:$&AɌ9ցXb/KwٔcDN3*@1_[8pN!Kg65pC )DX!oM؜\f)/hfU *zrH`y ny~+lSRx.p i/5Ɔmsgs(&>m,dr)39l ViD:p`7+D#B t:^)F?&b?CÔ0O? IDATU@`ĿŚl&;2,OzT?#_nrvBO)| R =L)B<Ϣ(pT㉵rNMsɶ]&c5˷[ p9?n) [ F~s/,~PC_#Ę.V|B0T:'1ZzBhьHQYN4gE[%LΔCD8+M :t pc@^9"1&z/}p/#Udm%Ty`/oKD,zq@`[ Fs>~c*pUl$03Dx)/oT2) Zx $y&A_/3l!6Y3c_>_: TO@'(%q:#i~9^1a$ZAywɌo~ߔAϩp+bㅵ;S,Y+haarJpH&fyXl/#j^.ez)83t"zXD&DGG'>;^L܄߂Ō )C!tj.S)ǧp_$r /Q/!OPMS(p[';Y)J/\u*I~0m\JtA^țY2+0^.%}lBY>5ؘ~uV~\ivn%` e-ݶ@O>"45/GݘZSH)\NcඝZSFca(|2|3#u0#[W(Z*dlUZm028OaY/o5?67 tI,LM̹`%ڳ?|s+}GēIT7?bAxG ɽl;MfeĖh4w4[;kT__UCkE2׵dmaB5T?e(fd3i$O!30fXEu7FJ[7YT0 K ,M7й5Y'Jڥ_w3WpALǦt{cqMla4qxg6_=Ss,ۿ0T&-.ZU[dKk k).*"$؁yk*y " cT8Z7[)lM%(o ; ;br^PAK |Ŗx-L"2xH`c#]f婔V6Q6:9)L c3 V9vV'Gz.d Mʂ``E%>3!4ɋVs'pv1LeZCdFD[eDR$Y /$+"u6{LPBl)[FQ9@)JI~.ܠRXKks߷%]W-S=$-MN``cIp]رmެSw|M$}31UDŤ o$:Il%q$l ,47jKi@HLS軡|cSb=od!LJQ'a)Q3?{o3ە}ksj;lI wZj[ e'Nl! 0#F$$% A^Hɲ,5Z[-&y:+uv{;P[s03S1< ƃ㜚H֋/S6-MM[:dV]RQMQLw$+~A:I:iSofF#~WhVI]<ϑ[3>&43u5~Yx5HA[AQf'呢\+TM:8uLͅ091` s3e  S$ޯi6xB&8fD9R!k͜h9 Y3*͆@2Kc5si 1[5A>3t֯Caxy)4[-o;Š|ĥ4 Cxȩ1‰mc& 57DEAE1[;E &>$/l9B7Yhɠ\ 7Xh{3Lx٤9̌M5j!w8MB+_yYT-w[C2ә`f-[@Rds S/Y?lBH+ǯ *d&a\kYo'N6;*!Ko1@5&kŚQF p˟pF(."O{ܧo+Iڜi0)y7ůwKn&>+Я5}>eVL:Pչs~T:kl6;jb;M~ ]}jA)abjk~fz]*'TI-ORE|TDB~j9ݠ7>'=0i:|۴8b ^IK͘Wl-wk>n1$2vcg:9-UjT:ng JvLj2M (S?:>#,KE,BQO-R pw3o(b \%KP8 >3U҂hajlpƌSc{08e8\|,Sn6.U K,%dEl9¯wn=LqAT`h V۳$Pj# ''[64r]FQPt.J < c ( cVs+sD8ѼPøfa0X- '|&ug}970n`ˬpqA a9觑u\Է{Xf .* - l.,|Ezc1fqκ] @D}7 sG3.KqaFdd^Nnf+E61e994tּ|gc,ou$@J+fSlLb=NXb&}C{,~P@A/v彅XO9u&<v 0R:@ =6f R)UQQeE+ٱ^!,%ȘB sY,כ-xၜ!W[ I`Z2èbdž(p &o&n 3b8Wլdžfzu-7`hRŔHDj+'30| a L|鍆Ŵѷ{=~ ȡ"dχ g$x#n ӓ1@)g-8cB&A|kKJ&"*+P5Q 6V[!_gvn > :_V|yP$[+d:n3gb XȚyدff'D=ź=q|ZS3a|~o*BZgo8ive{!TՐʁEsW7Y@TTA儨THN`N:`>m2CcIv[;,Ά͖1sb}1;ibgϝMXN'{+<@XkjLaQ}ɩ- P4d%pW/M8ETIEUɌ)ER#}}~/n?5 -6ݻ`'k\]x[XXgt;Ei܅=bX{եriDm!c[얋1iOs*ʂ&sEؘ.;^R!.3e` >v6[CE,S a\P*K5Ns\ŔGijRBt},T8BylL8xmK Y57g,a\~ALA 8f>X9@V,w$ĴO-:.`aG)ͯeP2y b0@ <'xpuwuݲ6 7# U =AkIu=m}lކ1!&Ůe=%03B0AP01Bx0)Q>rkSJP0KTÏU?^%b7 \ h|hF;:"UV({T}b"B1@%u%̼ŐnF:lLg iI9fYW>J08v~+%Sue:kP<1?KlVosw\iY7t`}$UΩ^!wC!hXT 𲯋bfp[N5 H_%I::;{ߙeB[jO#q2463My-fd(`gw=仹 !g5My : &iov6|35Mv/N0IC,ogw)Q8#'TRobG`3MBY<>fE$^'N1np$')y*ħ{bPj$\`\V$9a\ XvD>9asa96y;BۤH7eExcn)BPӂ1[om|@`8>,!Q"et'@H@P'|}B`S'?$B;aJ3R{J0cW<`c{spnr kvp9Rxhӈc]J耣l75lbtRD5 @xT"Dp>EL@EZnLc8ϗinb!XaeЭ4| ޱ+sƑl8;rDo[׈sh檍@ʩ09UκsI058]kپV#DBH @l,h cjb8_H}1%Al6+:ǺOaSQ!1N)'!I^3dz!dk :bඝ%j*i51}dmnݗ]0+OXΆ8`nKd.,  \)N\ydՃba=;MHsJGe@MU42 VbHs+¥m阛PGsUΰDx,a<%%!/ rXcq@Pq'֛u+Ȇ@31ƌHtq=C},/k!;p )?Kg! qT\*͓tS~45aT!~HR:(F} 2P5`B?Y^; ]f%,kq(& M&K-&-Xr!n`'TTj}kYlx2{+.o'Rm}w1>n; le}*MSZ&|pd6eME{ CG$a!L0)ZmYw)N[Z;875epvTvGX|00AaŘ)ƭ'4%[7#-}`dH Iwυ9h0Yb0=KȻ} aZ%VK[enQ[`cQ346`\b7RRcdfqP[c-cd*51ː0fxJF|#8ּ<w&{u|N+KȚW#%Gx`ˎ6N:‹ /TKBd&3I8K:f503:sHc#V2&ܹvG!UPU 3'bGb#V H%A66x67=vQ ϵ PB<˽eC-b\ %!Jxĩn;O$CU ae.k"TV㰪J ٦٤*u` c*(I,SjhvyG+O*SQL+ E4}2l,>8 *?I?H wB͔p!5APA%0Y`C%|C+2ڊm5I 9or(KO\?0mG@iB!g!6$n&96gR#. Vf\n-[?DkJ`r,Xօuioc*Uib)0d;=ql1CTtZ9%Xdz6G. -&5,HcNv= cv6I֔}^Bbowcwݱ;vcwݱ;vcwݱ;vcwݱ;vcw<.pw %4Vyx rw >P9vZn6澇<%L?&ڝGnu>Jvl 3e4<1U!}z1xO (BxFDM!b518ob1H0W a7 ގw{lQ0Br/&θI>͙,;v"w!b~#t>E"&.E =dǶcnȀBb;ƞcwg)9^1n&"@ >3OhFiQd"m`N;Ф;l bɐ9 7ISg8VQ嘈۰B<,G-X7br̐_LF(. ΋&.SdR?В2m?S 4d>?Ɔ`X<-r\WG}815Q}9q휹aQ;{ !y)aCX>&Sq%׌7DŽNbHOH9r=21fK}F7 Xn(Ϟbე3K1ssxwdž şRH !L(B7|͘xS=c綢xwLnX)m>`|8@E݁!='/&p?A8iN111}J#'MlאRߜNKB'N3!3Hʦ)@oSr^Lb .r] 1m71A(v[ޣ(X _N,e !`3]bU9BA~66I^/EEVE6 7#Ki~~3!uuC[nvfO$9S^ }E!Gs B0M`I0PL eDs$I^d>`mh9qy=>H6""SULfTWR:}^d/0)@K(uND 1A&L=n`tm醷8b 9BuY,Rfc Bz?SN׮\}'b*S3BMb~pD$!ӵr\w6zf0<&T >T ?&~1k? O5q3-sX4;1<1A#fĎ:S%hR*U\+ |t͏p[nʬ&R/MtMQr|h0C\n@Ј-P%e$>I=m(͋|qS4痙;߇m bwHU D1] (&>!W&'yrGxۘcmŀ ċG}:x>_RT^1WE )"7?*ieSV$**Uʠovqʺm=1[.x'4'ܤ,.ås2cSKUZ3ZHJͯT+ϾKRW/~М?ke 6 .8 0.bI"M<"U TKN=k# g,:TKnh*%#xێ fW{_D/lJ*旫3/\SE#lOtzyRnB`J+V$2D)O(9@_ˣX]d! 70/3?%bijXOnV}5{KlRn=?~=?uQ|&AϨ|~J??vqlbT%_!Ղ"t)0QBbN2ĖP"t*pGT\ϼr2qf) )iGl(gr('O7i[f&"BGR>dpoMH)9i`>)oLn8ݿSO9;F}|`lvL&.վSe>}kZ&t7~*&wTGALl yv>J\W І wPO*U͋xu!R?/3[>6]x WY&4+?2|7T`:vtYF%0WOVU5WTT_/ʦYI!' x)p (Ynuy1՟QE7 xk,NQ{.: 8,)\N (ҟsJקqc]skjƘњC짪7YiNۈ9ٹyXI^J,ٶe31P^9]~*`S13L`yrwF,5+(΂-:iZ! "ڐC17/2^ m2]׍ʽt_fr}d0(X|0 >gN^$LMKQ_'W0t9Geҏ&d2l6[2ϟ x  <06 f^;G,)\'g?Ujߙf<Xx!7fECu﹡"Q͏墚g^a6gnAL:ױ4'gpҧIQ^S2> hX@ `00 L@\ {曟tЋ2:5򁌑.?D3t>怍kb >BYf>@aFW/P߿s:\N$a6a6 Kķ@1c5 a\a0f TL بνeD5g`pfp@ly,J00iwvwNEp+zWIKu 55Ot:|>_],YR, 1Jj \׌f(~_+NAgl:8g{`w.R:|i*Jof-}w0CUvLI RY,c?糟nѾ]U_.gDs h ;ho?Ϲ|>bAQ\ii\/h ՗Zūol6m 0 L@ @f}b߆-@bk6ʗ$IVcӓɴσS/1M)Va+<(blfl8/FR|s.f{@;m3)u]UU+۬gMd2-eLm𚦁4f]Ok45a{(A3{ "1~WD8d&>AgfB+x15RgWM 0%,Yy>Ai$x9 *n\IB\"qT{ת 0j|FwhNkdY2t$,I̲Z4hM@7 .iO;2P0@dX^` nl8+.C%*+8gmCV 9/LlTL^j/]'\WQ/#??8 }͛DDէjRt((J5'W[3O3>SMbJوrmc\ `EQ .M̢81ٻ_' ]obhNt [fYU0%˹ܶxu:)mJ9V,Wv,@׵ a*Zc$Xf=/aǴi~ ]AKr7WEZ1;SEjp{ y1EC?lJxT$FLM"U?_L5w7F=?OǦǼL>j18iZMO6x/IG Y[b1J?Oh]Ve|V F%^ ܧVfoy,t7_f4]X # ~,TMX(qM9!f |d?ak^3f^72q: mѶ-F]0m-~hȕ'|949 Lyl!<l|,c D<硰>Ӑ)=bگ- }~ ! YR<:ލ-"P#ۃbx2+ł5--蚦e{q  !{ߧ1Z q5'`0 ٦>y"0fIlʺ2 GߧH"])kn 3;@Y8H;r,RxXXfJ*E ?UfJNaYœzdI^n\^өtMӠkMN7uFnFP;6`8aĸg _}|O,E(00p"\V>ELG G<>? _5-aFrІ]ln 024jzK$TςG |3]^ɤH`I3NQ?"soKr:t0i-$W/T`AgMKuxnp<5\_ʉ˭93bw1: Tyz2 sn2y< 쁠s`FM73#M*D}~ s{%|cfe>)5ϩoF(.6Gܐ@*2~Q9DOݭ٠]B:[E#E\>ߴ¢ea2ysєf0 =mmF-tD8ax߂ƱPLPZGؓȞR p ܀=v Sh@9ȉyʪC%Pe*&zVb (7_Q>~oډZf|;Lۄfi^te!`sO~UqZ | h,G +; Uh]5 g&!gJYr12r!*F夢nN ⣸cϧxp}J_a9ϒ*~@<61hOO`;Up\t]m6#Ť2;׹ïAM0N/TH`k30q7 <ް#PAPЍͬ>?Z &4B ƐTSZ IDAT9R`s>  _1}0Tm]xb/RLSrisuqg^NW&KC@[pƷxzp/rI7J|p ec>zKT_.OO'C {";pF '|x!$D SА+*5Z͞}?&0 ўt3i@fUY s x>&B*.XqhؼAz״%߆)@)MZ{ :z^*)=^Bנt *^q8Lf@\R#ż_*KlIhKc/bhΏfqK$ZEfm}]mۦi\:Qw( KyT21BㄍW@ bq!v@p陳ynw0< SӶ3IjkQ/w@o8\w(_WH%ǡ[y^x,mܸyO@y兙gb-N)v ٠2;;J|:a:4j!6Y(9e6eƄ\w_Dﲆa㯌UٯY:b9vtP/xln2G)2'RI/>{;VH4zDh]&Dn0'}"ެflF$_kbZеmmWn c\xWg0c: _̵ ɜǘ4b .LA/nEcn?&B玣 FFM柕i .^}B!<̗"M͜&#8ȬB<*iz%ǰ:wffatM <`9ƙvng{SZ[}N6y*yx ~4g8[jĕ 71`,|cÕG xUU DϚQ%cfl'rLN砛_M׎ t=2|/% ~`>5T˖af).hDuNZNDUxw;a7Yq*ˈŭjȐbݒ 9 eU/ԗGLdn :wiL9h:(zaj\o}I"4{Ѯ?-^*!\nê!揆ZK| vqRպ |VCF,> z7PQUT-rƋ97uW?vPm;3)?+sfK@l'F#nxh ƷYdF%<$@Hb=Lq ho;Z"&܁YGV6 xS$Z|~<6構dr} *@ ,> e.? s}VVliogVfO'ϮmhW[je>oF3~ uW(f|CIbdN8>eò |Z}ۊ"70]* 8%L),PM* H9ДVd/L:g#;B|;Jyr41xw8|lp7X9 4:SFmam7*~~'<<&1B,k~{.pEfL\ csD՜\P1kH1E[妴٣{85zQDXӫu=d\Zw]BMIkbɩcȗ c fHUox"|YI|15߇K& 94NoJ ,9 >Y _"@Y+SdJm,׳ʝdNsgEmIQhciDu`хb^9A򇑻3mCi칹2׺ }=v6@ä :P\On4ElvUxt6kV%A$zLK8 .(6=kԊh^b(ZP\1҇3^SۖbŇ݃|q#74k $$^tE*U"c"Asl eP WLԫ/Q\ze*/ Cd1¦٠dfZUUo`b<B߭M^'@mL%*T\p8'?4~xAvCn8͠\1_V8s*KU\Ɂt@ %} ln-^1Zp؎GŠ%6qXk 2<̫sGTtK0&,&`rFx( ` aƛܡcV&hEP@E|oJ`*T9G^B%ƣ9/M_TP?w6 Q E#`6š34;dLq'ߜ ."NEuB"T?K5zMdL! vPT%&ޘsJCqBC7Ǚ Ba2"=5ԧXe7l!=,Zl6W5c斫1 >1`la$HNom3b=~]ٚ?FkqeR9! = 8}>bwJ*G\TnL*g/2p4;f(AoQ=˼k,R|+`MN=u=v۞>Kc .[0Ф*nPLK}66fnKgL5 V&ԘؤLdPźD{1֙"F vK(l'K7ƌ*u58 G,.\f3pS8>{`bTQk9sby9;`, ؋aYS1f<}~ !\f D>d+e TLUYºvK"^>ea\qSC0p[T9槷EAQ*q}s h噑EOӃ%Wn}2lbT:Sie.θJ %!g:]"`;/ ! >afƆMX9NW8%r>+ oLt1N.o7\1c".Jɨ۴,;eyiF _ByF.6+!t^OBm@m-0Λv%Rx6P.gB}fVGLCfwdZ}Ya#ػ@xk!YGtMo+ ;iԍ{`}}èܖ N+oˌ{*`-@W(J3ĺVNx Tm+6#'h"6ԆgY+< 0䲅ϯ":'+[fPxmimS *M)9b^"OJ=2d51@5֪LcP*SG>*ߥ`׾O'rJ tKf|+di49@6|,f׭N[N~Dtl>]IϳKF};Wzm$A 2mBmx:WOLXVOxs+#^;Vʫ>=s 6s-%t}=Q!Ҋ;/A&/w+ӄ"4> ԃߕWbY`gD1&F%xDN}N#3Apa)@PוB>=pڛdTMy ^&iYsJAU#ˬsSVeQ71g0+mx*E*R vd,ot1fɳ9-@Tq>09u!HfWBYֲͯ 7|*`nxqذΙy w`v)k)2ؘ>k {XwkBQm%#ULdv?uRx~fI!L|Z+ofn(}< $`TS稏G C"'A%k}&ߞ7jXi_To5mǖ #e:3ᇠ1*ٟĖ73 o9^Y.fAd:VE#SoQ\Ce)b` r<`uUSS +; w)3pŕ=~Ԕν0*ƝVo}§̓R~h'1G2-'-r!E1Q*_VUgM %y:~;+?ևXN_e;צU`A6}c˕v,o)X7)`<0jSfy-cf#Nfi3 ȌJL6wdǷ$P$9G >1 QdTcBUԯuk~qۘ έ;=7UT@aUM 3Ea>?gF%:"?h?:3)|sY0)@N~jC@f̒dRu$$'ܷ#w֠d aZAXw`;E CF&ސJʮBA/LP >k}*?? QojZ]S9dP75kQYUXn*b3#7s8(+ζ(m6^7Nqb;-˰1ʉ)lvK [;13id!]x Rl}@ӝn˗&+UϓAn'^t-M 5*f u=yh+IcXEfN*ʍA2147ɸ̄NWC_<f(-%uo+88#^ڶp,K} MK/ (' ;^xǁAn9cQP 63NPB0=4ndYӂR$B<0{6شXk\kRs9$T2# fe"*0L>vH*&Vݜcb*p W+$xr_n=W>>Hd#%a# 2`Vʱv-Zrlb >\: -wcӵxoruc"{Psx}C1tӰR9%6 xʓ< %&,L&mfy=DۄuGV6nаO=) TiU Wd).w"oʪe? tqeqj`/p@n5Dؠp~q(q8Gj.ҟ"A\} ju!#a2W |%> S0k ac_DLDN<~N + μ3hRV&IJYnJ1EfQq5,/pr$$ʬەV&5#%'z*6.:f9O!pNԹu.dg2IٗrJhL9yh`xΔ` l+6w:a:9 ajS41sZ>(7 [y3W#ѲDZݩVD4ToX}#L 5~gυs-%XS@w킠&1 L7W9~QJ258|vxZ\^#3%m[ڭC{ 8 U#v)9JKm3*B)қ! ~?Yē!ze(uM=3p]]\c.z>1 _t,6gǶNI_S1[Ecn;1s ls,XJYiREˎמּ]*My"ZvJQ7<0v`+(Z+4FTNd]y`_} u*")DD^)){lRU~!׋۫*ZۃMBOm6nMHx ?uv)1֯x}Z9&ok@vd73SyUm+c]jQ`fC4J00:`fJd41O뇔  _c2X-f7|,A{ӕclzs3T8cuIR䔈ciڪY"> ]R |ʥoԧõs3xm2׶WRW4+anVr!2ZCp٧:ʥY=^[ݦ/l5h0lP/J~5W7_bY&dYp֖GmfAm%gy#yj?*)zylX٬34YWs!9P#X-jc\"|jV(o[KN;m1%/RQ.妍ZD^?v^C"Y>1Z1G"f'M-u$%UP]N >5HE"aD`:#c\jUH `Y^)? [Q&,E=R("KR޶BW.{/jGsHDƿ̵&@J5vv+~'3xfjM'Sa3;@C= 05]H<ps dP9Z,f~^%69|M'ٟ¿Dn#s䀹yj(eَ7e{nQĠ-vfXdZ*uYѸ! QFJ Ⱦ,?~?C9h/hL2a pD4/Ӕ6IM&WOeɮ)-|5>O%F8o4mX޶Mb0{O5;Rl7o7o6eu?k21/D׈%dY2z(h@H_p )6LD`g`]$~Z!ˆԺeѢ>l>Ryζs>1+T[eѢ~ p䏁.^6=ζ>hdc=+di2kўL"x;33! _U6S!(] U9k>ޕgZZHfH}eӝghP(!W1HhަW03w< ¯QD٪8L;yK-~p&dn; NEnu*m&BYsrpG(LC" 1bx$&jX铆 7]"umB8 66Cf\VziShvSxw"Ҏ(^>K3$ݎ(\(qp)XZϾ u9_1Eov+6 *f|n(ML.v\Q3gN7焸d.W̦fbs)p^!a>%@yHɩ2/0cuz,q $Fo,b@IVxʻVbTUYKP (1=H[58+v]뮆I(9.xgl767kT˳bՁW0^T@2?gɊ@t9k#,^ϛkUQ M;*pr׏vB)p^SZv;Cmm XY%>I5M=CtO͌f&dr] hS i| 6^J)&\4DsJ[ɆI.k m?g VY+6MN },x1J4)UnNZsAp}jPp*E-\ݹo#Xx&\ !tjġ!S^_/@Ⴗ}I34}f<Q/'PK#eֶ!Owffp2/C.&Jį,~vU^΅9oϫgYׅpFzlmLQC 1;]hPj`^f- . ><XZEA9KPFB!"iAps<Ġ3ݲ`ƀ \ˤY3_ʒ.D Xŀ729a0^c K[2A2r:4޸KaaEp|5W6U X x)ٛʹ+bx}mD:OӧS-r_b\p]*RPX/uz2'S0&]H)6Բ`_r;UŐk` =a." 9b̍H"ϑ(Z> ⣖w;f/^e۪1].D}7LBY7GobD! }^ ҥEkBd@r(-0QMU1 ŐJ/YO`Sv{pd[\kZID Ze4$Fڈ |UC$or:w_s18P^g3{dV":i^F<8!} A[r_R!T FPv /q(Aj^=`9&`/rfc aha±<ݍAKU&RllB2̌EcR~.UWlV}/]blV*f)]%5o4L'׊lw"n.TK]}^`4_S1!"]jqJTă!?6U(IZ0 ]x:X|dž^t U̓/\d)`ul>3qη(1ؖ:% *0:\?4 |.=gp λ )tTfNAV-P,. C ޼3" _K f*T`fN" m,lJ@\CR2:^&{ń>*hW{~?5ށš3鲫_)͈Y ִn3.\s? -}xMW>~i6.)=A5g7 a# Y]>E W*5V2Eug>K¡9N6";`b((1M\|J 'BAiRP{nҠyQ`fh7h:B qШ1i,/9S9ÎNn8v 3e/n <~B%-J ^zv+X.X+Z{&T>p.1[cʥK~3FeK7fhs9K0޺S/ E A@e.׆&<|z?o &!7ٵkUZv-PZE\]߱+ <; ~fq'Ba"}:HƐT 8crY}R\I8qBU& _]> 碏Nr8  /8|̠!Jj<*r424/cSKc{N|Cm~ 3ϼY73M[A˼ʝ1V xrH2~̵!'䬃`NJ'vjaA!ݑ)dCY+1u#\4E`lPW0H}=}1Є#~۰϶&`n\j\EzJ {ŗ'9[\}8 v^S<磸cC0KeZ PphN19|pʑi-Y1:w @A5t $:_ ,ϖ}Zij,946cJon7$`q?K 5H Nx*$B ClN"]k6gd[Ma D)]4yT,ǃu)4Ճ$783&v|;2X9zm} l9qˉ 9StusݏQ\q@}2^/"b;hE@t*hO6L"W IDATF%-7(f몓#Գ)ϩS!4>Q2bD"."- %4sjkW\2sP-8&[; f1M(brF!VgL A6΂,AaaR%F9 ~$L.6'32y}axY/NQ2ٺ ]j5/eqf@_ חr[= UAuv`7 |0 epumYNa q\ P/UD2add |?= )`N|N Mml1J yU3,hFđ*J08KJA9eW-"&:AM&?K :aZ|q;.8:s*.UA_\?ElXDX l9pg[v71vs5=uf~D)bI ȂngJ1hI3 _`;/}2C{q@}9Fֆv?q6#T)Jq6 3dR!nntbkl=t9ۺ3 dBb-}(Rs00!`g`#"/W0U7v*xlVC`ń^+Nn!~qr}kitz?!3?' lΝj[5JB&`eo0\`ܒS\`ĊDc.`Ai0aJ\`sqyiPjDonk6yXpŔx@u-"}AXn N2aO+ `P45a64HDj=bY$t/;sj 0PaUF>C< Td"t82yuO,9Vk$; ́"O{@sqK!7Knuw)'a ln'?Fh@fYTY )Z3aApMNk`T+b*o<^cI2x^CQCESZ?$C"R"4$X`Wr81Sf(g9qKBajʟ K\,❶cT*fx0/?gBe15&YIRH](K~X opsnr臀(Tw2ɊaO-hKY#,G 3,!^.\B1cj+GXJa[wBS3LЀ˛wЮP&䑰bNe |x}N$0#ś/0E'Q)_#d@~'JMT ϙ0" !Trcއ"ezSSj,cx>ŷB Cϼ#% DdC$ٹeyJWqa9k%p@ 2e^SUDEt>ŃHJ pJMlt;u5Kԁq[e@opsQB("A[%ߟ;|kDMK힨fhs {4 XY ^e=[1&LCI|UObU]| p.r$L X`$$TYlcLЊ7% : ;A=L{3CBt,λLsDLmn6<GKa *! a*GLHQ HXryc!c#e*B@<KzD@^36Z2zVh0% lfU?V8 KLLvoe6^ dbN,zD ade{E5: cbЁa^x (s>V6ih5cl,@܎[(a!8$dPv=L緁hWK[|߅ű2>̠ =|W|Z(u%PwSBI71ƴ'b0Wwr쯰.9ce܈| 1;?06DKpH% AƿϢm}c. y*55EL 8PO6z̩;`П`GOɸ)Ir1{.~<ϓr6WEe8ʰy (ѳ$ cu@]/`G+ʪ"S69CP*1BX8{/PK- _WFˍ%y.!N)D+5&]aƬdT){q_J!nhp2zr&d=NۙД"-JFxv:'L>{[6 ƍVy˛G =<e&/(<fOhEsَ@V4c6Ss0А% g6p$nAN=BĨ`!B;G:8&`0YⳜ@ȷa9>,q,E(Šp`s=a@12b Lk8DH(T/W;`SϠdC{v`- ;09!Ȃ`2oj`3o7 y3 퐀Rr;6 އ;x }B Bqr; sl/So!0mwx CҟzpńPDC99 C Z>vx9s$Ѐ͂VvdY(46nIa23vQ cK$ФI*E Ioy(ǘə;dVly(קkwݱ;vcwݱ;vcwݱ;vcwݱ;vcwݱ;c;v+x繻!<wPQ,><.u#>2`;>|:0x=bU$z j)0P}>ϙ{=^d=`5΀g6; QN7*1R ; سs?lv1zqXvkYc>ʼo(8eȝ9zN.FQAB(9ߎj`ty>;m>@F8$̓c̘oS90>wʘ}y :D;Afm7u[9VI LGFZ!qtbw~>b Lur b4URa"rF|1e)rgS=^˷ߏ#suyZ=|dž1~1p\;9OJU+u [9U0E:LH /ן4l.?@6e S|BEO=ޫEXXb~*HT6r9)v+)-.Xŀ2 p~7mTE?JdǩgB\$7S&Bfyc`|R3tZ9ˌ@ϙ})|21rC>DNc.G~~!KxIS_2hK`Hv yI"L \2r t.N$gz$@z>8`ϗS2\be*%SRr>SWI >}@dCCr#0b sD|iI%tm`0e?x9a5%Œ'Hs?cLݧǀD)Yzu}nscqVC`BrB@ r$9A2Vб;ݧI=k倭|^(#Â,4ϊ,P)UZXuE96N)],p9f=0!m p46SRk)dG>(ڂ&N&Bxm#1B a=d5IDJ+f0tT1P El*f[8K2 {NI%^`$A_Y{0wZL8" A> @b0Q.2av`wc"܈C0A6R@t:[pm]5o#e_ߺjcᗾfx@դ(X,m+o D (xF{}ξ><gi Z/Z&"pP&RC%¿`wz=uJ{"-i_u5;!<}S9cvn9>KzxPR1H(egO[YKL,>&Ro{PWٹo2[\sDe UʮC\2GX!zt}#x}.@\ BHBJx'>D_pUW->˶¶"*~G⫶_cW9G(H.ot6tvyI ߋ.I-vD>[3P_K1ϧ.(>_bk~ՋW,KfGp1&*]sd/ d'b ܧX/[Ň;7:*cRDѫA/ha8+l_\m;L]8.%5 wjzHgp!S'e675H]>whR{'wuZ,\~l_GD- !b!#҇T Gm&'fQE|3~!*ߦTp oPO:P8yMH a99x~oSlfV ;,RQ{7M1< DTCT1?z8=u+e-Z¡;5t}DBzH@VH]uz*F hoOYhd|6HDvG) O39-`DŽHǤ@E@u`of.e}2`p1Kymkbi12!c]r Г'W.E9ko?gGW:51fZ^M?`$B9`mݖL/ Dҕ*(ꧮ:g27CQ>=Nl.4ы1*iTѥ+?Coj+U'Q-d$iFQ+Iu.;mm6lr^#=m߷Y# Iu!]>c';^qx. Pa6EH xv2>wJ ׋q}t\uqkAVG;f1C T ):S3P%R~]0W>r۶lLW22-U"\HrԳWDJ+f18Ml 8bEQ,I Y.dB-[叿O,Htyo΋:[ϥ Eqȷ๝0Ur Rjen3E?&-l]:ອVvoh`13 IDAT`Dž#ĔPkmK@p~r1ŔΘN=fgHJ;*'ߦr[\M.N9a\XW*I/r>k;_ۢ%>ק]} =0 b\ @8x#ǗmU{̰0wi(1,KF#F#cF# Öi*mh+6jbF`F cpnɪQ @8Z /aB1dKK?&9yt% }׷PWbs!XcUnxG/Rht,tR8 +M&s\^X1sPXǸF _ 츭 0pD0 cq 2DLӐ @hYP2u Z#_ij_R -Ojt9)3UZ&,)5zˣO oyY`8k85pu5-XɤyRmA0Ukh-3e1Lb? @y2^-Fk^Yݓړ`^A"@EVx5?SU޿]g'`t=yRf`W΄R sa^ߐAxRsMz >C=.xzx< p-I%3=Ќ1 l-F3Ke˘8UK \1D$l%I*%u(sX37`+ޣ9<&̅^Nw/GKMVM4y0%#J\}c.)0j5 bF]Pބ; R+eooot{{{+S?ObFUUpusg%k 6D:e[hY2p ϑs/#Q;=c)I=GbtȏUKᱮq}\rh8S`Muya^ɳu] /Ti^^/g pG^+;88X^T,'JoRVUm9cJs +a%k&Qc򠣄%Ly"x&H=`1Q)5:g61{iw} 2Hl">5ˡQ14/C;88`::bXbĢ74koM.x9fybKB=LsHeCO(FsP(q 3-c=ĪO7Lp9З,ɪPWPxX|naa P(ȩ$7 َv$a*Zɚ$0s_L< \%9;Qg3X]dMv`Wz]g.1Udb}Ϛ"6@BO8*bZ.{S UfHc"9kQ-ML3oeHn8&Ag -'8I8(L(fS$@]YͭeZx W03\w3U>lqeeIC|ͱT0 Y-Sg>`r߃IV3b41-L&A ti00k?af<0`fb -`Ìq3 'M,TYWin-]M>ϒ&6bʱ` U]nHt2KJw@wߞ\m}=q,- 1:eÃD^kʙn1 ey*\ |4xO7Wۘp.1neRY`8,Yʫc \ E(\` 3PK ذȍ _u5Zr>}.V1/Siel.9hY:tHCxitݯ24:+zO?E"D.j`l{{{"AMKk n@wr{%З rE &0p lq `ҒE Q*+vYb")wV#CaȌ P„ ] x΋+28v%TUS׸ZYkqü"R70CX)n4xͶ"65X9 E :ǑQ0Zm(Dsq;p8 >{Nun?/r'l?0oTq; p0S0 W 4 ]",6Bc0~ƻ @˅CA>F,N|Ǥ4)bcJێcWY5gGb,L@PCJٌ=r/F% ěR*tjiJcobN`nvъiɖ ޷q۷k2rUc˭2"Y%70 r?cF/P1d; Cf '`aDIRtɯ$8aǺcGr9/ak! Qa>pXjΚrˌoH2h6DC|`~v3 &xq H,ȼyRE4 |U s}˫2HEf`| A("K, H| 3MobȌA%nHoaY b;z^ ƿVGje~x}3M!!@7 vJʿ篎FO\O͍(ԨoÞYrrp؊Z:8pif\-ŏD_Ca1bc,`uW0;d]j ĨqJ$pI0[ B7'{NÚ_3LRuZ{YcSUg?+J9֛2١醠MLiZ T|Nf̢Ƈ̲VMhZqFdM629Xb 3%"G̹b.[<q;eRj*w߂˰[A}Uwzs13eJmLjxF)(VAD?`/ bD`률UgTd";:ib:cE*͡zɉr0~_%Cp$܆sL2YC' .wp }'y %R8bۑ )נ7ҁKD:r8].5}ۚܓzd|G,g х*3q蜃g`Wo|xvQ|3ॹv2/eV\֨_1'T a`s&8vm;05s=G _P\&"c$"q=_OGjG,3FlMsLo %)E#ްC/L Fܘ^ *ζ|NIZoics^i_ ~o5Bhvr[X01Smj3Z*@8ZIU7T9Y:[MuNo vL,H˶20t%Fw.fK5;%he#;U/ _|K5S 2(V70/Ȋg >VYG?I)}{PL&T >> v_'ߩy2_H[Bw~pnBl9qkS+jŀė} ޚHH2X.[aG`@4.Süb6y173L4h9o¡kaXHr 6_&[Š~A pTl]:[V`fi@> ڛ Ʀa=NS>jt6.yݦ@OCE™aG0c `-^-n>wd1fSJ܈N!PsR"LW{E }uUB\ʠ&"WT`}=&g濦O# +'7=C ;tt/.P*l@[J'~ "Pv8Jf{xM]ia粱jے=fo0(]f]ʧ6~6b*$c"O\w9kW-.Adywͬ= H""m)d?B ᕷ^yo#lopXF &e-Q(R 3<3=w̼xyNʈ]9yxL'ϵϲ~%i13`Z\Y)z'U3z(;hˣ]%[ զ!-,J~"BJn3nkBwNߊ%bmJU %rVm94z?jytL#@BӀK2^__ RJ8MzjcԳ%Ô0u 9x4҅${vxeբQ__)RJ8Iu*ەb,:ŷ&RZ ʄghfx-B ϰuU`T\[q~)Id8 c!X v=~dl >XP7?|>| 8U!"rVi;r_l=uaZVǻfɷ+cɠr\dUr=2s@ eec:z9Kv^Ep|&l`eAyW2ᅒWj>L#Zm/τ)r7!c%,svx;>6 ^n;,0% s TӴo)! x^1FCU3u2ɹ BtCdl ^bkbIMDN'2d9R󇦚CH!s-Kp06ClmԀ˹TRs]%k0_.gdeylwM̌%br|{"!pr TL%0Şc"BѵҼ ] e?mC#$槌QO9k^:><?/oSjJ091担EJΈ!nؑX9DPc2[Z}x|lXWQslZO q!|Bo!T ~x vb"2S L/ 7B߭MvX.eFN`;z.6lZ4LI tFP /fM) hhP2r׷bަ4rscQnڇԳ\t~K] t ba7i 9xyuzDߞA-w0r@>lc>E٥cWU,BzCh)f.clDxv1PFVea ͱ]3,J\3/KESv^lr+s$㒱23oæhL$ !.>`U/Qd\UT3=3S%vjͤ)0w+U60)ĜvPd*>3Kw_j҉>}"*MQ٥nn>W3Wg\]D^czu#ߖ"GLj{cUbL{x>2%>W t3F?^c w*-RR[Ki=f| @o|fy*ǚSK C9ߜaX X|;2ŀ1UX?l2+2|} wg^40zo/~b=7" \o*'CGIS3B/=) \*Ʒb/ 1,zzO>N.z?&{鰉ɶ#ӈdPvTocw_$[ϐ+NeV1kfĈW(ø/< c3Yލ!٧m׉/1I|G}3duqoŗ`aκ+py47+!UNxbT¿& IDATyh܆_w6xҮ dnG Sc3rd!iAt3d90ZǞ#w؞ <5(#Zf9A ƪLČZQ¿-31Ҝ{}զ%D |N5fI;,[mHG5{ND,Q?>YX}בP"Ei͎!qF:H֩9oh3c,:o)OEL0]n;1sb[8biV /QKoT É41b: < oyPnQp0-w y0pH8ADvՊ\ 2ʨU0LimKG9R#Nq.SNj7^jSR 3~_55*9֋7`p 嫥ʅJAieV:-+hz8Džk?d>$CĻ)A)%3=qucoȇ4ȗMjm){)EWW] p -c_שJxx;9C^ƶ9\2b4U$i %g ;K=BZ`2 KPEc'V{)-*ĖR^O܀Q^mzk|E(151G3 |Y&֥bwɠz/a)0+r3+6XӐ1L)=Wx1 ܅QU7 2+"|&߻cG}D)C/s o˼o'"*bXrSZQ(x%OQ,G;L\CjkuQNa 7`5R1 Z\'Cߧ *aT؍9F=CȄ U~SPzLץ KÏ S= t#+ 6Ibv% K Px˹E6]{k#b]8wi>[XAm4@sԷ1B:^3nY;gz |e]SJ` B I+YtUbɔ~h儗I?E\&l<]5`n* aSg֧qG1؊u8-axwTd7̖PTnT39Qܑ)U2a+X TNǬ|@ranJK#>$( L-+n Jf%<ƭlBs/G@RxU`ɛ~cZs*"P=p1{HJHLE}<]NQ;v 5r*_VU_R̰_A(ck/OO!31Va2Ri,y4& C=v n){wZDE.5T)1SS^FFnw9c$aETc\`[nr.:Wa4VǤw*zct#8띘+'[vrX@ -Yq%d)}&(uܵPk-2Vy4V2 fTd%m|5QDe\hl_`/Sc)m ݝ#gĒj3>6w lAb~-H>0!GM~Or`Sx !8~jtbJjdO]k3ty]{'k "J*=X: BU!|oSof}",I|T$MqC6tda't8 "6ݒMd|WNUD{^  x[VNwݡEZP1ģިiQ%ʆ.{p|˄>WܛC? R35:d̸ʴ|Ww db%h\!B4@:ĕH ft p̝>;X_*sJğzF \l6fvw9C}X˴wQ3*Nσ0U5g<=0ᝥw`?Ʌ'DX﹦HS* c/`TY0rTҊۦ?9*F.ӆVj" Ϙ3U%lŊ0IYF#x3jںiK$!%Xrg{&aߋO[ s9i=fo6uBFu mAC 17YN8q\&c,< )8E3ۈσٳ"̄UƯ+%M,z@Jx+ /oo8p-d!c { ,ĉU$2pR]cvٴf9!]Q؝zζRĻV.ҕŋvˌap}n85HsccxƯnRɐGXh#Fs|ng TbJq b r"=/sEKڎX_gGW:pvhqJsz[3& ʦt.㥳x [k !:@Ub6`F3^"#`%VS Qd] ˤ1z'vR\9fnn _n͝ΰx| /M0Z)]kDt["e#xh7x +fϨ2%l[c\7){|>)MdyhZWK Rcxbu>tY-|ɫ ?o1hK\FgbZLv'&NjzAi.bj2K:ĮX3 l5h]$/6<49!tafA Sq3vﶮ\3 !Ul6q6ҳt*Y$h&dI\ɍ[wˍ>BS"^o=6ryU3pN-%GKqEw",/:9o 7tD/MmУԯ0z|va T Cmw: ATNH!q3[ɸp[֭vs*Lc̕RɈ笥|971q̫b Gȗ ~^NO߾cxu40^Pk SSV*K2WJ]b,Sh8sm07wuz2T} s3G QJ#Zeحf-X"L1*= ר%@^1ܘ/ -&\)!!ޟk&M'R(j&%'=EK<h?ݦ۹w2;Ua=d k&ЄCbzgīSW@O(3'@鱝 ;_k۵ P0$j+nCX `5 dNN6oG@cLl#-b<0'&%p,E&\WOeɮ)~ Et[B0 [t +RK0_ Z'y"; &/T9".MPFC%d(!`giF4Hl]3b[}"0XhY@~"nl]csύwWh)nGR[s >PC2MvͻP}O6?2|^RBc,t[v65 fFZ-H{Gb@p]g*#3?Noxew+ % jf } I!iCEb]\^Cg4կۥau {f2}TF &Նkq~죁r2Ώ/w`f p-&% @KUh|LkR"v!sH08BF<"DZ `DO䜲o6;4"],%x\ >F:YDZjHڐ%x.ih,Gz p] vI@Zndg?n#-uA Ry @ Gԟ;&HC# fNdL8!m֋[כP_{w̌gɎ'k pf\#W`ї6]ĆO,f7؏[o|aƿ.~(&f0-33Kf`wwN!#oLK/DV+M 6ʘًgt&xߵR74=l|v5!ӄ|09}vQsDx`\#~8 ϰ ׫bWub' 35/oƗPC"Q- {[}/˝L2Lf6ЂpBP:'OD<:eMxp)s3V+M( Ø1r(Y81s3%@H^i]? gap ]Q`]]A{Y6j2jm5|#4Bl1Ϊe.{b)ylJeD[dz 2uG23?|n_6/lR4"%[%_x.{jQAXΰ5Y$ MʦdJv3ʝF193V*Zn >d |:w2 Tv.xҨ})%VJccBBcZ| j].`vn)T.)?M]?*бL=ڼ>sDOT1ϛ#C0 !i G#!d(>*#bJjP0\/%~Ϸ:831%ʶ":]ހoτBf؜; ӉJuav.3% x%q"la456+!05L]f|3KB^ | Sv8acL%Vi I`{ h䖤HrӐ˲%'&k? ?[\/f"Ӂj~?brqYϙb#3R3G <$XVV14tbxbc^{gn//Ԇ]ƀll: ^w[ HXNˉ]FNFu oD?>e<ɗ 6|?tKop{ R&;T-.G5B}$x 0MkPu[NIdSD_ &>~}fr `] Io d1TAvE~f0 sQO29OFR>s$쌲OInj;o~ۭ&Qxl6apK|rל1a\_'τy1<jߵv7 f,|+"P.3s;7#FذrzcvL6 >IA~!o'J@MhTFC[SRe\pvQzLt'3nß~-%"_NwȀy`gQ7E^XL%6UA1_ 9Ӈb_*d|xVU~D3*{nKx8LNM|vic^)7m84c|PMGN8x:6U&RlפV=u}/sRb,̵c91ZN!D 6 K t%Pُ= 2Ybv)P47%UBl1̬CjfVKܙ> ",ύR|'q#nq (`s$%Q"W-I}սwx[aoS& ѥ=xt]·?dל5C8y)"4C!ȘS:| tlk hFsۅV0+g"`MOG ,N( {fxChZ%{q}{0Θn;t:l.H*@m7c<ؔڨDJ iI Vf2TF*r ͍. 7YfJss!<wK~=8lr̀W0,b.9 glm;'ҎlZ0-#903G<ש:7i)fV?gf~2W!JxB,  ͡SK((duJ\*an26cƵ|:clm|h>TT}hUC ԆIb 7ta+M0 O+ˁT]e=pս(e~!d܋,Uّ\0(L."0~Je-NJq c]-!?v&,T8BBCH)a&)M5y{\@Aaj[]&|wN/v"frvk-(|q%X<lXE"X"(s 4H-n+@&G٢|r@cSfMe=K.;sSݜˁS@mv{`d, yݜYtˁVBTY ;jzv|TG x+@ &ZJf2 vvV d~\? .qXrX#xXDVBRq;`R&~qg2c*|a٢8 V @d3C5 4)f{ngK}\Ɖo>T!-l,m2-kZ!S66 {%MH)^lHeX[ &:"@.X-uK2v2uً.M9p\f~lnY.+mz`dZ6 ][b{t($@ĔЄV] |;9SqF 7)u13H_U %CM:ۖ%+-~k}]NeK6K4w \אfv֡O1H "eZa`Z^6T~޹`^v6TsZ(R}B$X u;̭ 'x)/ G1w+whux\nf#kV0W $zsn}\߲݄&:?/7[\4fLdƮv0X/MLo0nTRE03ks*v*GdS%c&]3fnXP PEnraY 76d;Cf|{{ҙ mR JCg YԩC~G3}LD 3RFTORF!wA]ťo.Nе 4w%2@YM˄O]XNvNO1\Jdbp7Z^x%p J(ap*lHxAtwkΰڽgt\;jP5' ̄' c]v;"D+)yJc{nyHn>Sj^C'LJBp0\g~W FG:.^xILbءcu2sE w1.=;ӡ}y~#VM>'x05*/a !NP*\."wphXcavhGl{E?tCBճI CP _܁YQ))c !H fC+ӻNZ7\ B AɘS>x))6]H5X;E '3abHuq;u" =eR6xbzP4IL/ٓ ֌n`bt^9! 8dk \nQbJ`5,UUx[OLT$}ӑdBsxLlv*iIhfN~ 0}S$YCv9x,{S p>GF)2!YϺ `#|;+"ǣbe=ZqOԭEDX 06j22g|+ N41=uba+)_Ft'}Δb N(o!R߁3*lTt! M`Զ" }CYDN8=*@.=̋:V Xo! @:T`cN t[D_6XYڟIβJhp>f&+?Z}HI!{/(6 F9ӲH S)FL)Ռ" w,#_2S)3Ʋ4P}7G;q8+q^wMN([P4O#~^ޫv#*(2^ZAd@!x0&)n),L)aJ|1KkgJ)JVp wy ShȁQ^ʟKUl1%ͭX,FRN)"SƇJ1)JC92"~ M 3xn +۫/1n0~_ %X! C!Ȅe9=1[,' TN^\L=KfOCB!c7X)f9%V>LKprdT3CU׻7ڹ`KaxeL! 0ۜ^)_$,1)!rʷ‹4C :$LTE걥<V$o x BU@Nm.yczԟ=ʋq2E(S$a͕Z"G*9$%sA,$8_1S\+y+Nsz0Z9xVN֣&.%a z!0d\W3%pLŸ҈@RgnF+l`V^ۖºX .Y kk@+0x2=dMb'$ۊ-}s%tF+qHP< 8mFí gw"56ixM,Gf86!JUlu$X[*6X?(` 45qABl-2?ȃO2ne}`fsZ~(L+hGYb,(,a*!^XS0eCm[xbM* ? a V!3SXy|{XIrr,!Puk'a@M#ҰC>00w/R* p^`%.u Ifq?~CL&ba)3Kt$8Hh~[|ޕ0ᎄ?(CRr+@n&'Se~7'$P`ZIN5|m2Qe YL+a\[(GO_еxݧ*D$DYMSɂ!/dtvY0g?0κ:[ IDATY|cDɊrC+S'(2I3EY 0 4AucD=o$[LH:؜@x=Nޛ&ID3c?c?c?c?cp쏉 &?;Ʀr1S {P> E6B%} }%KD مxHgR,?{,|br O+O`'M/VeRSb\y )ve lS{}h8׭rfa{;CrHf &@80AsQb/7iS %3$~GD0ӔA)0}4S Sc8b 2C) fJȧm嘌2f,&!pb:& })LFEN%QJ>ԅ'y~\쳘 o2?YX4<2c97?M}G.{{ CJ>ԪS6V`Zy}Dhə@}씳sONYLҹȢL1c`Kj>(eLI zOz@HO禉ߋ&/a2AHR斟qJ0R'-1MElφ̶KlpQH|)YbJs8b2lxA1sc#t1D)Ilq·AZ,hT12ndh3~ Iv>3cLk7%MN}wt?CHH)(/ZI9ρ{+r!~\`~@D` VR0-nR\FN-: eDSE)*0xvU*SM)7´2 HaG &9?b~G<^R>[6% &2dJ)~2 d b&Z[ v2!Sq2 O 5!¼9wgD0scFpyW DOaR@$8DΔb)h#+׌m DD6T,L=Bd* 3p2fK"a;|wǹn)RSQS}J kM=v<@ ӶRBI굵/K*"t QM?MD/1@ϲ0~N~2؁`>4zD޿|%|]LCź9ճĔ{=(1P9cvN36%p=`"[5_}}w ΂\?"OdV/@dگ? hIeXSI^S}/v vb om)X6Dz}}] c#2wakߞ# {Y*UV_R@K`o0{Q~`DiΔZBSb`ngkD{Kmk_6#Gb߹#<'~φl' 3/|sqx%m@ w`)ޔS)_.`Cτ2]}wky}` 0l )MikVdLfc.WNn.!X׳kOO%SS X[~n+<`/0s 7vy}kKcr.L[`o1蟱ko/[ISOCr1T3ITOR~LU ]&kŵ_V{{~u2 Map$myޏnޏ5M<.UߢjOk- `( "r`)S8?fng&NR ()ȐY\5^k]s}wyywy}Gk0o6@&~1ѿc {[b[0R5Ǿ]AπlL(S2dJI-GL0S#=#&ۄBpeqﹶ䈛sbMf[01fc]MNO3Tqm{]?w)d3ߡzOkΔx'3irL.݇БznJe|1QՕlw]}euvrMʃM3-b C xd)u]udL}jow{5JARN}b758/ n${ώ~q]s9[n]M$IUUkO pm 9Ӏ ,~=Tok_^"^ù FYEK~R(NS ErvTuҫ_@zWԜ|qڝ-&*5iIpj.i?-p1?xι5sIL2ݡjde3QI -V>crNQ?1v˯̵ (ʱVTG c/Ƶ+s1+SZ[zYRaIpb= >Y0@dg?cv>08ϕ)xJSS}'K`$;_KV̯2;t {Н[D.#Du]oN+933I3Cs$cUjxOnNOػ }Ƽ,%`#zq3ߣ<(LPBcɘ={x/z=;A0=V'7ѝ\\ ,6ֿ^\ p', 蘚sn[4545mDѢL1[J#g>WR'\* k Jo=s_k+{7o슀 "l6l6|>|>_l6 (Ҽq>~[lO}t14O>6jbn/2WK vdM:Cb/}~v?z@aҟ g|>_nX@'NZ8Ѭ&3!%P+,w$rbK `dg?/NܻM`SbǏB T@>;Wlt 4wg:mVJ-i)E)hv6c5 g7|7 ߱pA׋1'2bb7i|?xuv>6s쥁`J1=~ԁw?bLLi3md [vvK̞ievVXݾwvs.>!E+$cXg,=c] K ?pC5Dqa~fG+{?'32_ߔ">R2J"1D.tr9ǯw}7spdAbo8<<ޛ5K\a̻U]+z[c_ Έf4qh2e&0&I2I|⃌%zM!g0h[c@Wz~"<򄇻Gj1l7៟s,{-#K-#(: #e\`3xFXP/ a4"`LZkN!8&1qHW7DLq=5X?f+?O܃ϧiMi0Ge,5o*Y|/狽µ"q.\*]iA7;Nr~ pskqQq .2A&Ì{&8}0cJ"5PKx14;5X=;} :eFGQ&yi|gis ~`ޅH"l6.], tlt$i]׽ݟXq7je̺/g?1u!! !ig1!B$f~_=}|> i'[6CՐ} '>J!Йk"2;/~ˀ8Fyz2AeX,>.\i&wtzUU*X/_,->Y1nX.9he{ەmX\sTR~CxA}nepK+ڍƪ(| 2r ~d4#)N0,^#B#?^vmZIN0$" CO_Y\=dn6(NЕ'ݵ+TA笝fKvP%ʲ*\,xb\B&k=,]µ@l-8 .ydx^ v!8AHgU` m`c؀&]|WkOiȱtSeoj+Prk(%dg ]gMɎ K?/zsa#Vtଜc*;U%z[*7kƜ3Rΐ\Db8\RBj 0D2@;-A$~l?ec0mw0j?,{-^+"La0}dfreo>l~+`7v.^ty-ÔezX; _h7k74MZ[@/m`N*`@u  $0EpAI`)|}ސjMacӚF-60KtB;"@dv_;k)5GG[ \L߽tt<Ҿ]ʺ ŗ5^s*JzdNtv YދV4ZnQ0,pK}1۽>}hu8<vcv&y ,DdR{'.@Fuvܒ)Ac:΁noofY@qIY UYbŧK> HZBtH#8u42-PfIk "C! j0.pFG\>*u_.lP6Jz]E$)zr*ng]`1HP!w4ҥūx3CV)N2Amk^UqJw7q崥0L(fjĴ;O,KO؄@{D}# `p K45A˖$lv;xh@O̞&2f5|ce;Dys Y:b,˺g5ʲĬڪkŮl,Bbܯ@ A`gq$#0N 8R%I;6'MI}+YYo Ax2d$xff̅;ES(,.sq3X7V9`lu˟"4 k#cD K XxlkT^f qc2Ӓ˳tzK7-`F3X,k q2KJ4Y(VxciD@0&&2e1`jVg(aʳ= CicO`c˦wxPjSέ\5lqHOST,g%#': D9O)f0ѹX q%+-X2q\Zc0ŻGQR`㹣Ϊh);Q`12 n (Pc  :4P4rsIU:9EԲ^uۜ- >L!v""RCC?WsJpJf.kLZ_ss#EW%AbqtNӲ1T˺peK 8TCp b X%[f'opj"Co,a !#Q$%@m(D dp`$Vhb=rݥj?j%2₎)}a,՞=Dr3vo?.Q==~0H~t]ps1u:vt UYⅪƗ(JZϔ40^şOHu!9 VQ ,,O/⃶f`F:S<ޒXoG 08$BV<4GR-xvcan26B&1g"<1F{/~kl]M>`Q|XtN)]1z [UxnHa#$s1,pN.,^S8pwłDK8 ]"3SA!aXCSbqY4~#E4y6雳 ZPއ 蜋]K׹KHz,|Yያ;/g^#N\` Ϥwaf, [)kɉU _k!x {Ę`,I:w:<ғRyxnŏZ1!,)#dH'93rc"r/Kedo/v ('U&#`jQWes.wF(g * 1D^O.Q?⎀\b]o!7%V;֮$eJm'z* n,5k&Ҹ1CHuDԵssBs1ƭR.&5>jg/%w5 5lX6%2,ieM{`\aR' ţĆQ ?g&+6qb}\1a"ۺ2KtP->ɋFD/¨R-&l IDATT:g\xS®Cz%: , c 2E*Hiq)y1 y>_Hw 2p52kDG0s\ Z3&s%Foe R@ŋI2kXף xc*t6#:^xKb %א!lQN M#sJ]W8k5^[7Z 5,P.5O ?xW0Mq1<{Db^ ^ _f%NdžsM[>+lcSu k"8('<SkBC/#WodN Oxy4,j536|~ˆ`(-Wms-;7<*@#"Jy P&ڔu!"x P=Axz JYp{j`6R6-'SݣCcГ1Q;Xz,Ճ{^qgb]Nu?Lʹ9vJY|/]] xk|*)iS)oxjcHT#j<¯hMX ɌZ9 ɖ/(e ٹ\)5H]N`H? •oߑډhv/!Dj}AtY'kkW5`->UYx{Ya8 9Fncu?!F¤; 2dzb{v~!]Bʠ&#k&&ƆsF6[e[F7J V x4!5N~"s|-o*e!";)x3HX;9iҿFmqJeF*j:ƟIÀEs|N5Oo'bY{8!Ma@*r51T I ~Bcv$I>BBTf,+|!B)ux(Z^VnUw(E9B%3X2ԐK+#;M1 Ki gX/fcY0=b ԃfYO㍕ӈ]Gwgl}\ r,Ca58*V#DRiuuP,Nت8yeAp&륆 ,_!C_%2ѥ :ƒMZᶙ+̺ah +yW!X{`GYT&# Y#ѯ{373!](KE3, ?Jg:y*.e5M)g%*r<@@\b :Baƞ.kሖw34C/iDBHe7/ !5nn19-jh 8e=2gvy?v/& BSWy*˧d` oR d6]Ժqv;uƋrƃn2Cp$ ־g4" I㱞FJhc$w 0%b15Czi; q~ l7N`Ns/D0S%Iy!PO #×B%j "1FZlCF}%ǁV )7=qx5DcXB߶^9cMzT,Q3aV牽l@8Q1,cKY<1X8/ն ⷉ@9d/Ox(Y6V-"cDYkǁm= oHאЧJ0dm۽f-nҟ\5sa>kQT @aF&!VxK_ٜyhP!X1Sir_tev "þDX`Mm34GR˜X/nWpFMqCxc.c߶hf-S4uM 1Rſ JB|`K }VRa/,l3MC#/UsгC1#>,hՆn;cMS QB4>|!jo5LU$ɃD"{ @)jvF9fPlBH ;Dpr3 dD !6"` f3ݗ6Nt-Br)1'oD}KyR(I<"אS"5& 'SG,͉.Ֆl2Y,T&_FXuk^#bedh0s/#wH `}vNN w$ç!I(}Ʊ"ݡ9اX)0SX0Aԫ#l H{CWX[1 1(fs{>4+Sߞi 0R})E Ek 'R ҍ0,knrD΍ _w'eUx4dUz|[{jݘygnRfDga%Yn5Y%t: ZNbJ(!ʐi5 %muZK-tq6Gt yH6$̲q]o*oK%gsz2xEL+ZOHo=eet /DDAEB˱^2@1l廚Cb&EZNq  &rnM7韭uHV$4YU4 ·QyobzCM84n'Va9C=-OZzZ fkP3H-%4N P)ڀL\6¶|^HsRBC}xM*( s MEYӨiInG9F,V1דZmSR: InK[^Ղ`B;cFÖ!Pc1DusVOm-7kۍק9#4C.gO,®BiJH^̦f7}(q s8(6S"Fw)f&}&(7r%_G+uBV=J9ϐ95Fy€)&ƞ[AwJ:R-1^pcn o%dd\c1X'^~Ja57S4joB어x)):FN#FE | \!b3͆BN'D"l2iv@!BEOgfҴ#֠%Hwss~5F<7>cRʃIa>v.o|"a~>W*f6y3H€`pt5k?A=2 4"]VzJSQs6gocra9|O0yr 9"8۹$ 5@HvGBMj. yFوAY u/ee{x~zX>3}/ ZNLHց}fZIrׄ)5hSI *q62C/FS1"!(VQKNt@>V2S5b"6Epj`Υ 1E} c;] Lׇe*4LI jWѶ\a.SH. ތ9Y'{ȕ"qHŲBD.)bVv@{ߎ! D88<6݆,ھ1NUر0GhxDLľI^@HX9 꽉/DSZ"vG$Qܛ t X\@v7tl[`PSz 7` h[|ԕ02f,LYy Xy]$tDI-P,N^$d45kb(S8̪ܻM8m4_Bw@p@AW -/Eak _'`7@x n"1 10DElɛ}XRS3b ?/Ps΄vK;GKU" m5` hf"[*'3=8   ڲŔzQ E\I>}! վIykƺc8}x&B uF?w,6;d1ׅ5 ,.h/|mWNeA1W@ )E<=opT1>UԂM)$q?UrE%('ů4r>jPIz]6ڹ *.:m]22NX\FfQϽԇMeJr !l@` WX`<# < b!oE ~ }LKYyufPP3ڎX*>uշO5RCR;_p}1:~7kVxn3$c9˩o /NJe/>'Lg#X4lI+g+tA{?{ |^̰_#7d!%n;a ùm>(o65K/.x<3vܭ[9iPs6Ѩ}4kYjC?CJԝF̴Rpe5=MI3YoCMYx!~[Vj,D9n#(f}LH=_|^Yo#Wg4rΫ{+^ pt#Fp_.[6{=j,)? &MN !zW&8UHzДkKW=V29K" %=o:!axhlm ܚNZѦ>kCTwc7$K~JʹRu; ᆪ? mZo9S]'FImga &AL[;aX{=[R' P\ A@}IX%Ss5G]XL(=n.ְ̽~=q̏@,2QA|,KXάzK0d9gz9:"˪nC)Ms2,G? #;Bqe2vL,~ T+:/ p !%|1~6 iUU(Kkʱy!"et<&TbՃpNh ~DN|zm{ФQ1uީPUU f?]g 8gD* ӋbTQA6NƤK=' i 4hfh\Mp9ˆD m-s5׊=/(/H̍ 0*"_|KEDg+]$ 8fځO&EGV9k*1"}S F8hk/N@K5f-rY]"2/Zq Ud,ːeٴY e0zk$ \ G`՟$VҔv[Ig& _73,|Ҙ\ ;v;brOňfV H@V+oj>u_U 1-5/o+ॆ(!U e@]ZװPpGlyg F&롪V xS$KYנ'vdpSKajS%Wh@% i[?k|_*ԑ8NAV WZ ų =sd6uy.iqOFFerdXnXI]+0 |,[]֐Y=0v5C>i-7A-x *yͶ_b3EwPS-}OЮ+:j1 O;Wj)НR.DzY:A9ҘD i >j;.bA|DDMu"wz[@4OT¸MY3¼ D9EP&[)'g,ߦ>I C75~G5Im@8)!M_ޕ|GT+esr1Ù 34b%DHlW::W}|OeAbabw6 |\DxH U~%+*95dJpwZ9c'`{RcȚQaF D]$0^ IYG3:/,D~Ʀ΁ϹTL HL}}R"NB}SRqx9Hg E +C5"rU ߭V/x5C/g82'2<FjPK?|9kJz۸_/r#:gVqk7 vV "ۺΥ۹+劊"U*+ R ="Q҅LX z3ljX}% hQ6t9ld 8n@p %FdxgzmiZB:뷍?36d[0(qmc ߀k_G y`sHU3%+ړb5w)oo rH{ ՛+ٲ:2bGdHQFnRBMc9`<#%;!SDx ^g(( ƥ&fxE/3dڋ^` XJ?k)XF}R%$ebwkt;V +)whY>9G'O xHX6`4x %;R"kuG8р bQӏR.u +DhP@Mz ~S2PTԟU-*U丁O F7`*;СݟpD,7f֮\r`T 2UtK =5IcqVuiU`a#媦|>m71}|zi䄘\ K"dږu>hzk-@ W(ó6V yֱ [ef*w~Y໵Iڮ'\FA+nMl''ʵt;Rs: Rgf؂}(7 LX)3lc,Baj|A&+tGBdʥeLh{=.Sִu|:xQ)Njh@-"1wq 0 :r| \irb%CY<ޡJz? ˀdৃi/dZĞ)Uv\utXρw̝ tO"'4(IX Tr F*>[>c c"]af\:A14jΡf.< >K#f| s\2ȫe-tǺqXtY`)jO0$8H3I: 4CBS3k̥ 7%EKua'*1+u^@L(p|I%"FjuX.fӖ@m"JuX < Y~չό=psE i*ǧWoP^]L{| Z޸,h1]\WIcǼ7mS G[4`"~M0lp}8ݛVb,cW*hUKFŸr°x|rQ6+w +觋jMXo6rf Dr5i9PKp1SlK!sBӦؖX.)E+pg`yT\/S[0\h;͠"j~;I# % $ dƟ%+1wxH]LY2wĮyҁgJ<yr,OuN1Bq hxѯJddN-_-e#"Pumr'}m8>P[V䓚zֳ=cn鸑49u_KOp30~%]uQ% BMq]0]V/QrW*P+- ьOS+&p`&bRDO}e!3Ҽ[,E`65|d|5`$9)CpG,ja1 . Nò 6{\{vrGƒ^))i7 t 'ꝶNS3,6c.kٟ^d 2_#emvYcmz5D?oqMD/( ЖFI5߱kkw#} oS9O2A;RBX. lG LߩtKp»A|.A~!Vyx"VftBKPNd"B&oKV 6RN [}X=Qԁb3kV"8rnKX'hkd`~%vDjo+έ\+21 &$?!d`v_a:ʓ'M3Q;Y e4{2m!{0"Q3gY<ϻf.V-鞔J$#u2Tm,/S3}g @XANi3"`L-EƩ` i:|!,7B'㹆<wĮUFf$skE96TunJ }"rI]j1v j7[(IΔȮG sYʋɚ:}u2"3<ł~l],9G!eSgc bJMJ cfDa1ћ-`[f컉z+q`[uJmЙvTvO\ t׍/%W.6 ョn+ rBMp;'c> -1ghjki\uAݶmscb@# m<ǁMy@RA~U!e>K~+%8F\ L P#媘 z˕ɋaQ>S.! Bc:cC8Y&\~Пֳ:ƭEsZŀURm91z/"V3<)(A-#gb-(6~*bN&+t&,508+Vҽ&[9` &+| \$< 6r• x+1@MNhHxҴ$,>dʲex!LD iN(WTS1sj9y2G7;5cTk7UV_]jt?Uw4wHvNB8pX#4GOZ<`D(,?iݍL[6QJz'w~ [Vg0fAdLތ<0Ƅ/b_bfcBrVxOl+pu`% k\ڪU"PY0ND_{]p5?kaϏr6CBA_ _ 3Y j"aH-z\˜@&fho ˞קFOM\* c;bmM?O14ԴVn(ѼRR.;N~Zej2iZ xX w29&PZJ3 {6Blv^K)Na,u}D&kv L{,1wv[w24w%gd&{Olu\/v@s3Azi5Oy~Qϥ?2S}oj Y'};oDJFN̋Ҥa^I<c Q^2[ "ujTO)Ҽ#+A~r/~<: l\U&Ԡɧv?L Y7±MzidOb}ۓ{ۗJdwy)9c[>Xxd{fs3[ ->z9Bz?55gWb''0 VZ].8a*V-OUW{ixz3MqFskS,NԲ2OKt)Cy؜xj^>yuxL|N fs{sS3Y@I_L4{o\бl3]r<vRw9@s`cit.F>7beCU \6fF/`H[e/jI dla CY3g-}+ xk ;}hZG xAL'Rrc/ {?Y1bJY^;3.XQo t47D@a 0s@Z0JּN L"q )+ϵDuWhNϸs릵G(qϪoTWDvVV(duQdZe εgI](g Ԛ5$2-5qE3"]߮5㎚i3C$Q6'`6l+/ jC* |&gm P[ɑFo`~.2Ftu16;׸ȯ0CKx)+j'T@\iwʄ]P& W)! 8הO3hS(k"1A޾@D)EpK d`滓+uX: IDAT.zs_{'[>Դr7JwI/+ޕhuR@u?Xi;!R=QZd n+C#DxƼqC:2Z32"{d}Nt+7mic҂=ץRLZc?C,]h`Gr\t%8`cth"G Dr+%IBDJ ^_8ѯ8fc"]Δ^YT$T> q,A5Vciv \khpE< P"aCm%X:S9 "4{AH@+R|Pv%V-;7}ԁR ֡ .<$WnG\RE Z϶ YQDxcl$γ+tLL)+Q)}QN5,q'j5G|% E\*7=*WSLwAulٱ;Oy1 RA"^yqw}PbQmyu̥iܑܽ6 ŰYPx (Kfu5icN/KROY)d91E >pLMNfЯۦ!щr#kEtdc,V,k(nƿ^:Γ v)<ōZHBQ~%trH $X0&"4THgnqHJrb8Ur}Sܿcehv.;PdJ^sUVn'{$|GY=Y'%0H1_DPɼR.175F,PaC%8p"LJuU)Rqn,c劄a-"> -)D5@|ߍb=+u^`no8%"9# 6~E[1"+ܠ[:hCS:Dݮ 6̵H\X潟fey=NU]]Sdwsh"e[ ?ذ $, 'B @H/cQFġEl6V霽Z^{5s>}=>o}xH >Ʊgf<58 2!W>_5d1b`XdVlَYS<:Svd:f$?RjaFʡw4m2XB(úS Kۂ}/Ā& iGwXݙNòMO"_* eф&fT``:[S95-{5e8Bɩv[_c0l-޹J?`wyNU嘤xU+bbk92 F0vYX#LJ0lH`!@fC2ncpLkyrmo{a*QXVIEPܓC.pYF.b{]ywہP;D#-@;}*޿^_r7,r* \ߧH0\#[*J6L'p5=b= pjMc>r R!|vnGjًSQw/Uۂt-ԝn1Mw̄>C. ja@,X\Q%T'k g5¿&iUH%^˚aNV*Q8~GI}n|)Dx9,jYjX,˙K{g{~&X@*5Д#Vclɑ0gkf,X3s/'d=&[ Y(827`< 4*XrJ]g(GcȎN>٪Ї}b#8 ڦaaN x-@-%5Nlc!0Sݸ+{aǎ'MOY xL.^k&R{B;vq, s^oUp@)IXNvf7YF%_c8\bcяVO+:ㅲEB9X#|#f}3e\OϪGgG߷BdB3 .tbS~W08~WwKfuo\9Η2f~ϥ˄;' TܱlS?Ű5;/[&C?5,-ho0l;*dٔŤ!TV  <m&CfFB(mfg!'XoO SFc7[M1]B,mֽeIcKv j {|(Q:I0#XK.^ˌU`XZ@˦WͅR =jM^:0Iӕp$meBx#4mU5=|2y5IeCm)ka*+:+$gM-@+y',>XgBc89/e;lvx {.7_>֙+2; aA;U0O*a&c(i[2n \6ȩ#!f[?Ki O 04 Af#k%v=ZGh#4Y#:/~\)۸HrC]A;sN-NJ;Zi3Vdz[-J(Va@ J'П% ECo g-q_?2@qɅYn!#|B,r\ײI2~H/<)KN @l A[mv\OY[>BhQA0lE(Vq̜r=Q6 ~[Sj}%K(V-8>-e8CUs-0g”,R ٲ Y'Axй4dm5;-e菎vt6%@)Bm:oxU# wol ዱm-.@ 4la-c{l=c{l=c{l=c{l==)c{ϡ ^{{?vfS|x||x-{}\kߐMxnZ/4=v{l~a8M##[=4>a$< ra@u(hUB,sfd 4p[q` {6199qCژ(aV6x.ޛFO0le6f5$&؈"̲ha%?)GwLaɐ[t cSrGn)@όҦ&g/ &{O`ؓ=C81M䳆(_όB~64E KT%X) LJ4;A8h|k{q4? .cbwl0=l4„9F(wc8y)H6y#{o$LNck&/1uLϞ2Su J r]ƚ4M|1L龶O܈0(8b7%LSΗ-eĤb2Jj ;X6W eD |T k*!hfwyǏHb cT 0o؊o년>Tgx?A!%,~i}Xdf99`jbY2cD3abqw91cbJtx(ꡯ{$>"\HFʝGc@zHΑ@b)]5„`p-~%%6UB+a\5sa^!:Ϙ3?&ʥ\6 `LR<@\Rr,ty!+i< leb>C)qf #T& gC2h*yB {<~xPK* f|~A<[fAmLul( T6ȈL^'C`(sSha7"R٤ /4g7pQBl ϧkncQRTU< ' lKBfd)Rb6lH @y ׺I)Eb!` gjҋÎbb=R)1 lmL"2a0']+V%[($E+JeYF*aRW @7+ ̏l.3@D*tDY~ " oټbMS|MLŔ#R=v> ė)96"eR@ JKTQ^NTVR= &'٘T (nEa!8yHRٷ)+m,\8xJ9cwTkzz<tR֘ǧ@ Tf@$1ylCW%~2놈 H-He//FWX;f$#|S1Y1;wyI >JYȴT*kě5TULs5ٹ@Y~03?e]=Mu'`1 9D5b"uɿ0cśà9%,a/#Px&^,=&ybHKVY^_Aeײ,guxundZ@c0 xT#//ⲿ/%2kc*&źy1SiXcoYh\6ҷS2\򃺩?ú+\-?bKEg2`Sl\ 5UN͢?ڌbː!&Ƅ) 瀷h,D_5|5(*d^\x_O}XL1Q9 #ۍ1> Ve7?o/4M, 1Otq1 ԛ$;c< P&E2&} !+)߿≠Yz;#ςa3~,mg Ie%*+HΫ`ml'cn&`ZD0_b@;##Woݟ#/xuztw+ק`]ǘ(SJA)7 ~mgv#Qn!Y/)?G$* l[RG*+^E8`nXuR9߷;DzDWkX} ͽLfedYxǂ}? :ːI̊3Ub]?K;ߓL>AelmnMo3۝GT/T хa@Jeb,s`ZUP }z`= l,[ ?Ӆ|< >p.'7MӻeP/[Twg}v=6Z؈7`6>_ ma= d1tc7inJY6g(CTLF.NoB?qw ӥTHBMO?|I_&`zqa|LU,CQIu\ |"orc>i˂HXrA˥hf@|41MG\.XO&2WyV\;~+0hi2[Y(EQ~$\a7 _edψɔOR71gwȦ1W~<” )?Q{;c)h!ugR$q4''1[LmF {sv2y(V`L&-\ǔ2 `G|e >-!5ouSY; P,iӐC1XfT#TOM:J&}|"z@f0tLJ5-%IY%)& &I|/ {bgbʧ#&wU9MV| \b&anJPoLӹXAt;?b2UO&t[A}U8 : ltt:0/]6&@1_ݿu':ߒ]`8Lu;:Yɐ IEBxc)Ad p)!?50ݽ? B8::|9ʇN=YӂN\D'~ P}}'|2mU~_ooQ>S=< L%VDLN 9epw>RPޕލg)O2Fur[? ҕ/W%ff pҷsn%L90&Qȍi?1)04%3*glp~ Ɖ /xYu GMO.?Ƿ /\L[ |!_rLSݷxcPnfJ =7- \+wߢ,>h/gt]T^/ `ɪt;;;+Jp웦3Jmg . c@@u67 pߡa`а0-6K 3tl.)擦TXMvIlN}Y5p[DLͱ] 1!k(YU{ؽ%S=L˷~^zKVXp|v2t KM|ʔcmpY3 0eFCw&-`#6FE1} <%yH*frj3GD#lGX1~BjN*`ZtPʊ_pY^cfzqkŝ"MĢ(0Ͱ]bgggxV͔sR멀ZgՌ+i>2F}Ý;ړ`^1“phԭ@'eM C mn,;f̧ȧ_l 3b)}ue~تxxD-4Q9[ݧ ULkVؠY.8l IDAT-S݅Z&p+N+e2/%Yk1m4l4~2x6jsX`9 خ mPaPx2\7@A>/ͽ~ڋLObO:j(Sa$b>[xƄTy>36A(*v'>svlo@)2R[c9$_gQCMӠo]8h4>\k|bq6c&ko^&ɩY0p)PU'̤-u{L|T)OYV370BT,~P=@o>էR҈LR>Ow~  Mݷfp x6kZeS,--Kui5 >Vi\k &P2`N\9>`YQ+-#%dp^ E9ב&)8!Z^s28+k2FL,HFh]MT}[/57<5[EaPk ?lś>MScyWQV,'}:YSmtuUa5>e \h|d@vXn('%l)2` `8y3IiJ UUxI8a\"/et!3q.bV`\_%_XɠͿ\As5^AgrR *,K4u5n6Z60&3X*ֿa ,@׵ a*Z4dM@s׉`{0 x5.`y5 F^_rĔ3b NϾ*dwdc+؛]CZ/FQ>^1\ Ҽtx y5~j`0;Bt#Sy@o N]-<\>cPxUQA1cCb,%ːz(7[`0٘6#20 'H3?ed{Wg;Wo;Pٿ ^*V]N{^БR(b2t;;;+Aq r S׸U%+?Nri:r41@⏕9?bEe2C {0/*Az%j^H<<{lGtEbTӻlP/NPsvg6 R E'K. iirG+9,BdWg xpf4N=6c0N`pfq7 N,AxA+Ǽ}vAA1nD|'y*|i13e~xc yCOҊc4[m!֗~OeDg7 L&U|OUh7Z16srj08bCb1]͂iAQ20"\d P3cծN_"Æ=0C|O`ϢE4qϘ^o_<{{g:6˯38q|_"p(B1324*f 0t<e[eSW@cЦFzW3P@Δ*Ǽ`W)\]bolIt\Q~@Y۬zd-eq #;|Bt'\ers4~cW ݷ7]&=BL}E,5U'X63;F Bl n"']:V Hޝ!ֈ|i}5s"&bpmBcN Wpw;u4ڡ]T9:"i 6q75#c1GQeCrT z m-T tnyX_'Cj|b`6~[ c4(i.dyW%*BXxZp.rIŹt=#+p 0%(sTqAeo${DPpx?8^jH, @HDy|~3)5c?_ڶݴFuz[t=Rd|έ$e=LWUT5>h0[o,3JȓU}נe 9!i@v$2eK]b)%I%Ax^Ɇ~_aOԋ<ʦO͌r)'ryG[bMbx6`=ey3f q'6Ơn[7:`q۴6 U,6eRócYYykñXX HR(7M7xfBr@G=v!G@xm5/X=C%BckBJ:\9Ƥم+/v O ԨaoZ6Ί)p*VL~]4YG/7ۄ")~ &-41*_x$f#P K#9?dcQ j%S )oGʹwX*}r7߹/R ̤vjP/nҰ šnYjML7l\Xx_c uAkz| ^71^Y2\ p쪇!^5.AaqYChR ^<"IUH 3jn4_&Ȋ">\{th8f(i:B!rOƔ^90,s3hL87K0}l']kfu uM_ޛr]x4chԔV-\0okȇ ,Ry5%Ǚ S"|2+qZ{:?6zF2eyå!m#eSm:N #G|o2/M 㡠beY#mGZcǰSM}Hm}yR* 7HbMSvuubܶJ~+QA'?zTuc4f<_?攆fqdʕe;#MKTqۍ_m4m+a]:9ꪘO̗ 㛫Y| 5*|wi1,Cȉa*pN΍^>EJ} H$2U͐g"~]v?2hLL0)DEXQE (rm M̦izBQ<0[|RъGf'z~R@eCz2n~YӉpgB‡/>k;26jכw=r DσA֟"af-t*e;lV)r6tsipr/]9\u?`t梉T!vL(b Xto;j" i܂YS+?F*sv] SaBȪ 2Yǣt5>"oc*w,/ɺNvjkSuu,-|WWɔD. .k.ȼm87}aMbf.K$e&mMb>zCݺW L_Pknj>ٷ[f+Uڜz9a^eJ>m0g!{#ro cARB PO1D ج)`#'0ex|pË+_RŬ E L%'C像\e 4n&J_tWE431x_5BfXc9gJ{lryE[M 9n}=v6@äTޫ\p34˟VyyUEqƪCXkJ|8;OBw4<^6&s"z b7dEiݛ3rO2Ǔl5.hɪҗC0~4Զ%Yc,ma>_.%H.U+ ޼ e-W+jc3<ʉO |].<^L#ڰh-fMmyp mDH| Gʱa1f辱eKcM^#27#nen蟧(Ļ4{E@n],Ƅ7bG7u75H:ͫsGT g\10sB ` bƋܠb + \8wuf/ػ~@#ָrOzqyM(M9'~7yOt1Vg>r$RKdƳsٺ'gݎ 8PKtormif^Ԍ)CK] ed.RyyࣆʱG6zDXp?aHOd֜.3zYW>g Ƃ.4ڹgA&Ks1g{XGdNU܆Ko,W5yr5iQ}|͒x Ņ9X.אT`Jt.kUgcCp@6UI|N/CG@SRg72U3)bj|hܯqB<x H%ss0ϣ': tS;&{1@ﱟFD.BWgc.1pY|? X<5 Æ-z V$HQ}[-QM0ʢu̘Jdz{B} 9!çURN֌zG)CׅDM!P ΄SK*+4!m=PЧ4ƌz#˦3B 8g߮T|Kz "T#C|`T7;'LHIZ;}ecP] ψs +B3v||8YgV}P0~^'fE ?M~Xv{Jgy6  8.J8^'`A*!@BJ8 ٺ:tlc;V[ܕ+e]|ȝvߤǬI-/IqOK1ylh!:@ݖ`z'j`!_rDl v|BX_!H9 ۘP^k4+]./;o}gwκ|*I߉+"bƳPxyPnCSn7ZYSH; 9*6MRUсύglhY;9xue#B]> dK-H-crảQ(w+Dc mpe@cFlDj&8Х抗,2 XйnMw | p:9NJN+p֋ƣT*P7&gTLnM#oF:N1sUP*֒ IDAT0+>֕)dj)jZlɸj+0d"cT`T*7#El ~Lyn7 ywVNަ08ءs$6fRX\*Bk5 bCpL}Tm`X r*RTux99'dؘ^< @OE9jW.9 g52 "f>W $)PŘ~ sK m8@8 2X)𴻰_mGx(zZ>5O2p3 `ؕp}3/L)(&0ȑ/+qzI}?rgkhkJ(۠}ՒsqB.Al,"JU>_yh o]U-,dϬ@Ǽ>v-6$bE|9V$cti90X67]`R6-X 1y+Ƕ聎DMʗ݊hx0[DXM!>$uņT{ՏȢ0< y}Ln*:oH 5v?D1v@%}%&6MdP&OeٖOz?s *8NƴH=&t_AX)T[w#36QMM5H-I o" ;L/0=UBX ep)aō!M9 pT+_3ih.0us7YߞPAlN|)hS񸘩cŲgJ"pg - /7!E( ltU(DXJ(c~0kS_I/8KR\U~X⚁`/vfkpRPG:e5ϑվ<뒥c(A^=إ )A-lZr!0@=#+<0"&0Sj%=ZX3FeO9ry'^g\+f Ҹg;8;3WA~Ԙ"ks.0?tL)FMyf[^#kwGHLn8DG]鲀b- JڔB U(iWsQ2rfRk5@K"&GHA [9a pog?$_;(o"ZL\1ڐK/2ɝ0";'_ffel"4)C KS2Cl$F>UuY)=!ȿӺLPf1|AH15b ෨r7uʤdxRrDo' N~{bEq SL'rˉ.y4~u)/:+à B h#᫅$b%QF3{&7Q0*YqŃSfؕ D) +LMzƟ4x .#dM$|^~(0{xByxyLF*yH-~KbPK=€;h %Anx~<8P \8^(15h'2I;oۼV.6M1jv^>q sA[gYICA@ݴYaz=IʝRP3׍1 ǂtAErn/zJeĸa#׿cEV}rex ]U $;V {E/C{̄ #\ >kw$RA,Q/mژJ5U/r G 1^!Ɯ xc](dK Aj MUP80O&%>w$f@ޖHw Ao^͗ͽl7^aOg3V$|2cNNұ@pהT"p{dz6Tgn7wg^;tɎnhLNHT~~n@0/0 h > XX EBSl~& gSw}2S.voF %~9`AK:GXah ½)BŁ<H ,aq6H㲊R^6V3|'2p5.KߑW5f80Dˌ| 5 p26oXњѻc6}pl"~Ħ gn˜x.ۯ-8`T?Gr /4!6|xLn3Y2|d X7e#ULMdWg{̱n JM_4"K.Cf,70+cU1@:a=͢Id,]$bWLu~fLs k% %srq wStC<16qN" f̉7u4nD%z:Z{lVsO#C0ݞ1o෩ _5]B>nsdr&ϺMVd? ~ڻy68W ʾǦ96y@E<9p%TJAFNOTЂqNnM1! B(Bsq0PF=wV~3OonJ>^mHa1pٖT70 70F4lGmOQK"GYdra5f}0W" Ɲ%Qj51=J'^b,]57jd=|ho_xc^%3VOR_K)4@.8 +dkvV oMu.Jx7fݼ*.6hҶBQ @A.:"jjT {%tb7L|.2\3 (X%- f |BDjPdlS$|11VJQ>J(2碯kK]ņhʠ9S`ΰiJC>`H ǂnoW𙪼!낚=6kl{((&=s\4h&v 8q.x- !|d&ͽ`ӬplG-j'iLrU1֜ (!?N!Ƽ,"n@"{EX׹WLТ2r*X^4IsSJ߻;vAE`TZԈ׸ni6ALaX_r3ϼ^bNfY*<3&G925C>T++3Yr t>w l uҴRb *eޏnbÌpugǼ2E᳜av{U7{b昪ǘI(kb-MSO`;`S9qTa8'…)Et$F{K _yLf@MB_ f t#7(#bSBa|r\TY?DLx nVmP<.dg0n-UeSŖK 1̾!&_`}ud#1&GkU']Da!*U1[n:F]F?75Lf(Vb}D+26x21<2&V0xS6i4﹕ |r|9)q&K& |9la 7>VtU.n͆I5dplQ >\lV:QJZeY+LC6,ѝE"B ݵ r 3"< `G$eo 1iJ M_t2"tEPv;0(ߡrOU$`}ަtSc lwB %)\ l^B&}Tb|>Ee&5GptxYcFh:Uw6uw{#@(],G6M1@Ky>)|3ղ&ʩ)Kr! 0\YWMS2 NTle+Tk0Mf4ь483OWUg@w^KBeYw^gZ_(a7g",u⨙ Z ?11 fYP_A*ڧBU:70!*;P*΂ -*z TBlG"t{*_3W~22 Evr!6 *fqs~ܧd@W2 0͑4N3e3aJQ&bffR5c>^(yBXqłnuBA)%Piu B !_wh"Iւ9g+H1VxʻTLXe<3},I (Rb±=S4jUX wjx_oL{n3Ty上/ V4$_%dj$_J̷M=ֈ\d9gںGE/AC77BKd05暊HU@xֶlɴwgO)ג3T7|8f8 00 vR(fA~9>I%13ȍ?[w5LH-ts3=]wa´)dzev,'YlSi ;7a6wl aOV`Z6)mlj*ʙbNlHV,o?A|d!^xs.PlCo麃 L\ OR'@нH땐˵IH!ˌP r| \j'7+oz-JfgtP^[UA(80τbCޛ̒A{ND}w[UUW2Ӟ!,F 0d$KH%lG`30=魺ku~Kf,8o-AiPo^נ22D AjP"c P4i|5~9^Ek1'ĽiALp_kVnP!cia~^fbk~kDm)S/F$>^P Tlt/>(4Xgh-6wMļ=u :+dq7b%Su_C⚦Y,˲y)R 3"| m0Ejl7R!LuS(|:U-86&x{;3 9!!30a&ܥ mYE5ua'*Yr߬m%'d>f:frS`3KZK#͉-6@TW*3%6'"X]į=nVot1Zhg}c 9xKz}!x0M ry\\ AW2dpןuY. RzқNRY[P[da0޴  k y2  27& G`N/DD0̸)lP-c*_Qg4 L}Y YYsc|z T24lkf9.V̚4I3 unKx`hbEJ)+LOTE @!xI/38PMwgB" cfl˵-Z\FYÁxgZ\lNd%˲5p7l6!F9DRX06HA-3"4܂l8mnmkg0>cSX%&Y=k7aU }KlFκVn \`P^,'Ȳ aJ8_΁L\3+'Gc˻G̖E/S cVNd=2(e:Ca쯻&mY fa[05{*bp4-C'`!7.8.YF\NxJ169NtBK-Wbs4F O  2~za- PCxj6JOHu-l=lf,B1'r#SB\**wԯîi,|T%M+<bSc @CDI)ބY*ɎZg@H.3L<#i*\xҝ [ǘ'cwR`(WpI9:Xf*TwOe_u\d,{vxE1NLdFT@M4ZpSP@ȉ),bx35c;r"6S5 ëB3t~ lvsLbQ[lipBH~Z=1٩UyAb&C5/PL .Ȗ'0pe39CsRS]\ݟ>mmV6 }6-FXn$Idž'T(8 ˬ(ns/&&8.mn_Pnשx0_O[e*TSq0,_ŕˌS * e-S1lf[DBřH ~Мs}wv+ >@zd_,mj'82W6]3'[u?BGS+~M [%@ǤsM|F,T9lMcИdLw=7d< wVxvV X[}.ϕ e Ya 3] ֐E'H<~"!ㆦdď9A?Eh#Uæ<5w%鉅ʻLDbI|GY(} Ox,Y%K@Iݜur"s5w,=!LpX ʎ)ؼ 6]p3ZϯgS$5^ 6]Ny&Yci@cJ^|ENJ! ?nEj"U^غdSm)TVCig?>@$tRwylO=" WXab:@ +MŹۖ)A8@!`xҲ3=OE]Ħ{9[ 4BAyrK:AtF*o;`V- ! @KDQhr*|f|Vo99SsM]V֠sݲ!\g$KαFywUN:6,zaXk{nܖqpOލ7ҤtP" 3#YÌۀ9sL"NǒSL*hDXNi+晜c}bb' b4N,|ulNxYwcǔi Y1F>f"3u02lH% D@jH XaOvU g"벑ߕ#!qif`;BW"LlX(ƣC!]ZU1Lin!]&Z.`8⇴BM<7 0tP)'rr3qٚ.R.^@c5=J0`~ S Cs$s ϯ3Hg|(LM 4˞Ӕ{BJ.LU) O'/*$ ,XG?5܌roKnΖ1:GEJ!`̿l:\ 1FA0h0^X1ό*8f&ϟ*BVB|zExD5|!p6 R,3.|!$1TÑg_41bSs$؈ )6YJN\!qU WzÄHHBa[E CfPl*(Lkeә8xb@PP0C&(G+TJ9v  FsLN># ^x&i!|hc؞4@4ielU\E1.=BKNXiV F\ yŲaƣə }/"I,o6f/^R,`.:CSdҌr;,E*:B+:i:+L+9[za3Q^̔H@k] {j( 0kC~N*tBt*!hxu;@؞ioH߹qSD+ĕRMǬx5gj:9aB? Q.~D5HP& 'L\a<_CJhp$H9է޷DL#^34'sK"jZlW)H.t*'y [j&:aT1F)68J/8^~w0K~vsʤ{D7iZaO0 x@xQ"4Q\0dYՠ?KD!/8pCB1I;PQ a9иP5>]73@er%eE2m1[# !L#/ 1sc"L}0+l0! I0A%@@X}3;SsQ]Џ 0/H噂~f,=,RڈY$IBu0lXp;&G.|3Oռ#f*-sQ#Z0#*:pl"&&hhDP@X"qDB(€Z֪Bf%݅Nǝe˱ ˮc2K!BE6I+E(GH' ~^%Ehoe[=)&-ѯ$wɻpKX{1ىNL?<,a^!416a7Yv"@8mIuX=\x-d$wߍ J>CW-ODE Δ<{Af lxDO[wTlSv?fpTl[xe>~\fF0B~ژD^c- יR0pY ߕX BWuaROyqw\ƊI.^֞Ri#j)H ش<%s*Lֹ00?Ƈy"y-3 3ɉ$̾Ys6JsXCwY|"}c#qYswg+*Je-z=mo$~#xU$FY~PCT<@q0&:_.tN7S/ExL'xvovυi~.\f<@ b*Ꮼ$ą 6Xd|X\̄X M.KG:?t~S VxHV?vRDbTn;<5TzLB)̻ŪџF(RǞ;G?KxNh3EcO9`GVЀ~i.ޣz/2@N=Et-K.ZBJEFG?T.c/sʡ`<.. Jܤ[eo)TN3[9! ۩\'uf;&;c!M86Z `e4 sB" }?M,{ީr~k+fr jvw>OH ֓mX&X6o09!=~޵sI/~Hű -zgty;cN9Mi)r"9 Εv H<&1>L_fLv %}Tt@q B&\ P +av \ tq<ęf=.TKiE.QzlhЯnw@kQVx?5Nn'74D"YU#g; cB2h~C'f} ~om~om~om~om~oOo`yϘGpJv'xHC(}i4@0>`)Y#3!ƌ0= b#`C쁸b!`91.#aό{=s4ƏȂU#eZƘ" &c9t) 9(d<⹡3F0vy.&oWebz?ɉcrȏo{\ 1AcJy"ߋfL3y&hhjQDL,ǵKVu9!e<(R'L?Q L{l;vb摟#D]=@?0ֻ^\ R FĜXC9!C/Їl1r0B߅ES-Nt;5 2Ŧc1^1S\=7!gLbs*nw/|$F{ |uv| | ưC@ P>&LQqL2yR O|<'9|F{=g&T-]GpIЮBG1LM!`"}>{=b߇q~H 7VzC?q|L#)̖ !=0L `Lx?/fbbH)á s C'̟#l131Q(r dh^Sߟ"\w$.2c!?wHF#޳gϝ)LvI5q?D̾19Va {&Lјf0wa=1Sb!@aX IDATXG1c92;y`rĔPΥ?V!a#L|܁7 -cB!sWcY,4D`Xa2<<Pb m11}c enP<}cMšp`3'0+kC> ) "1bNNH0t{pc.0<)|Ğhaec[ȱ_}J$TI w(f2dc=>#ջ{aX66FH$p{`Hƈ#~v{,NzLm׌{ѝ9q-h6ءR`]X @TU@*IIㄹ)y4=r9dz>5` 1P+#ŬHI3)EFAe~猭۵a 1% K v{,.cRBsрªjD2t)fD=+>n)S)>cE h 1uMnk@!d2㟂M?8Bx ~hQE'LΊ?bM'窻7/fko $9 "b;u! 4AV$Ր.~HYbV?eۘ{p>1R);,} GdJtNClBb1|bve͗S̜`s}pɿϐւ{@ 4@P5eRV57)6)OEL]3bRܘ w~xbC~azKQ93ů(~5ךY^F}t,ۄ M)1T 6d2@&oƘ} R (]',UpnlH!jHv(|xC C ,Cy27ފT2tWu1W )f;M;.4@+Gv>́Ͽ lSʊfu|;A~~]8$:dS5Kϼ]LM"2Z6ooc1 -t)vcz7dgH7(+:-n5+bAs 9-jcF?&k **Sgt6;׈W ֢^bu -2dYySC,cTG5+>s*CXƋ5 6.^?X\ؿ#R/bk֠:;ii^,,˶X.p-$>$cfg40ƠiC&(VIg,m*4;"<Akyyo53hi)C:>hR5ʓ#TQRPEQ`2@i*C 1f CBJ d;ws@0)V'gs0'-⹝CAhcB̐D#!( |6'Dd0u6[?s~|Án:(M41%<*^q1}J|֓&gOř(W)S!LĔxVP7棇RL1 U$}tq_UYv+:zDRF\̲l d@B,΁HKOkB~>u{yivڿE@3tkntDc/l|l67(!O2Hy Fiw l.QX@,6!(>د)T,_~4U`!FpP]GRq TP=p T\^^|?&?p- `195XnXW/.`Pmi(e\KL8 tll3Dhآ$cnq-8e1E~1gR$bʦg߰I~CdaD(XS5w?OVbbar:?*o "ǟ\cpnM0Gct!曓yNT\"g Sfhv|שbp -zK,n.,b[`D0I&B}ўߧK5]O`o%KDЧpHy1|MP-trsyvzRؠ)XzPExy+u]o/BcS9x0ƢX0kpwo1͂ 3M-X '$U~CCGi盓[϶SB$fdP`رGB\ٕHDG'^=n><7t/t.NT%V߁9~t>蜈ℓ5;6wA4c K*OZhsz+"ڰX\5D }<'!נ2i\@N@M9P%%lUpQ0K sz~\<"#[4ទսax\ʟ x)b"|\!|dzx`¯%ESZЭ}nѶyX 8lV5k\l >S|4Hmqͮ5XfoR?\ĭ|ΜPx4^%3VTgM} MpXg8yGkJNNN1!pK y8@Oo/Q; KP. Bb$L&kҁke 4` >[[LepX@H]EHȇO"a)\+LL`("AIaA H- 0!MMfԠ1Rk7cQP6 F*yQǾbq/菃Yf4waۋ ctkgJ9*e035>WZ\k p} ]%z \ N.a kv@|,'q2"?`k~kƖLFS p(olX 2ܚ^|_/3L{yflc9ߧsNDq~\SG/ ^lH^8]8οrvH틶Y阹^AxNeN[{7d>0e"wZQ}.@tȡ5x OaDW[?O#?%t*Q}(t2Rùt:Eek?qδ *W*PҤ#^u$.QPr,uc`TP \Epb#M:tLl i=.x<2#e s/eG+јᏈ-[AqG? ?vY`FSW(:"B罴&IODqIY(BYV55>?Nri( :4J1@kPlB,cD<PXqW{kYb>Xstez22vd3zPQHMj*^0 >ּ쾛itU0#Ef8I9i?7 ^+kVyg(e,-8flq c0N851~{9"gIlʺV"{>HHCCv1~+BOTS*6mغI0| s3syCt_Kj+OO.>`d cڦD9C%<;1pVA @y> ڞJqW§рQ2-㶵ӥ~-Qq{ixR 3 \"e(\b9P{B1بr{ < \V jk܅%*2[`z 0_]7_a&Y9ȘPd@q { 9*af ]^Dd 1oW7Hq>b z 1VL]㩺.,Z?d0 ǰoq*^PK-^&`\Y(\3Jcu:}H u5ax ~xǚ4Xpq.U,#/'PJ٘Ԍ)cSc͆ҭ zJ~ٕk ޥZԫeryWĄ|9΅ OWWW5~vYFqjDۙo?D݌~1 6G0k 4M$9a(i< mXx!~-_E& H}MmzH@2ُIsw~]UZUaچl/ \[X XK?X?c)ʝd#Xqi߈v4) +%IMބH_&Ulg٧G!Q8w*QB7*|C+]"/2 4hwaobLxe=R h: RC|aK017ܤqؼԐʔ3]c~ nSLq4ɻ.!)\᧰(wRSz::#4=GX`K&vP,C΍lǿ?b\[Z{m:m;| MmLnuj,c|>Pk F͌+#rE   m/RIǶ=S%E^ p13خFP3 tԋç39n]hN`OM |s~|~Um(uoa&I.7⧰CC*c8f_.1X0l!~pڟ?'c<'k- `1ϥR^z L%8L f%([?~z]"_֢Y9 OqQ9sfcN\/ίs_TmW/9z૝>䣍1 waLVQC{T ԁhQGI>$`AxM̿!ЄL1!ss{PĀJwS^TYO|׎YVu1;ow|j-K9W61 ߁WapݵwYc@>9<ƛ RyUJGglV`4^i•b$‰X^赜]ސo3^/E43]K2٦W6P]eQkhR\ ;eeK LZhm02Т% %]L<]?g[:jm* ^%/I!|bS}2s,Sx0rXKe} C5%]y(+Xmb.ng%^E:s76W*5HЙ'*u'$OJ ">KJy >XhbȬM36@o%MO"'IEGN線ذ5B, %yЇZ  wH|~V ٮcvj  HK9s%:]|j0oܾ^Z1~bi:/sp1cZ<[`}jpSPW4x&LE]"6Es໚..GTĺ' c)yMXQHN%])Wc8hl-lVm"^007gZqY'YW*ebێkdp0󌍳 IV)c2[>_EfX`b%Uh(I:2wzYiyTv$8so꩐ [X^/.E2: h)]?LyB)Ag6 z[SX|cECGHB>XHe8kT^~'P'2"|r gX,l]AXc>#SN|ȻZ^V,}#2(G|0XhG\]ȯ+#Р\XvYuī*!0ϣ= I|MQfR!bh#}ۀHغdxn-pqZ=|xSug o/ȼPm8mnp+X4F2 $H̱PPf .,~Mb>zCϯ@xIxTre/h, Ҍ2d؎B䳘8px43W`mÚTN4UqqAZ %p:TU0nxCCbŬ1A$HcyCձIobuY? ҃ 砿g+]E8YZ8bg35rHS$5d_0.&JkH6)nՀI!" %, |[NR}l>Z!. -mS2cpr{ ~?4el׊1E8~&=, 6ɾΞuƞOmw\M`G|9 XP K{_j&;vҿyc1g`1߀=d"` 6i'HC`ʗS fg 0)4[mΪ0[Z>Mu|QS_ ]dHOB"p>&ΉPZ]|QW:^3+  6'+}w|s1bF4FKLA.],5&H~/r7Sm4MwlLj_[_YaR* 2MI?_3xlZ)<8b@"W Gx4ƘĉX˵aHN7)GtvX\¬e$Sx dF=X.!|ݐ#RF[t[Z69p0 6ytv X~Z,DE̮XONV#K$ԛ$xrٳk@.M ٭K2S+lbvLokƢ >HRwa?3{@%>k(l0Fٌ=7li g-AF8ޠda;Ls*<@H愎ިF*|Nd lHb(Du33`m7xdelDU1d-n^?nϠ[#qv@HJDf\/CO"?2AwU-}BbܠYVVPN"Fp|T#ab~^*l*8]bJ1XPhOx*>uvpġ =Hn4YB~T3y3GAUuȐ2/qe^a/#˔!s)݇x1BX-0VlNK\ l\}%bQL! 8Gϕ yBqP0PZL-~W$#!3+g!Aއmk0. $@93~I3aZ(!QLwe]>碌ɶ=ӈeRȰ}q .σkTCP e LTBTIU_M$'w]a4HKtCgWL[F)TZYGYU +̌ŷqgfmۈA,4^yre1䄞yR-"nu+5m?"Œ $n܄m"^p#%lD( 5> p" B@:3UOt_ i d2ucx,v2 P"Nq.nlsϓ\mB \'﷬W`3rL[1)~bkQxͽ.Vh%ߍXwۭHQPz@H!KRD dh/e^2sN/k3uLbBq=1SC5cfʄԄؼ>˹e͡܅X gL\B7cFi;CG[h@l#rf|v{\8Y؎\ ,FV 2?C_b-ψR=B~ Qֽ&Mi5,7N.6o ,NɡTaW&0(SDj"ctU T4~dgg ݔ%WK UoD1KY7eO OI3ƂD$[Nui9q[|JO`#ܔZá\LSpf!Vh*HT!?:G6HJ])Z ' Xܞl+f ;Y~9dx{,ҎJe+f6̓1~. fݗoN 9&`;~´t  8P+*B+Ht bBB \\@I}S$IzkMݪb /fULIDF~s)k35^y*^?PΨgMOA^ro m4(E"vu慺bnWHL%p"NjR~| xf :dHZ.ZW& 9~H FQۊT' >$- ^7uN{A˾tbŇƖXNDMCؘ.򹰸4MuMLjjZmy1\ +wj=?ZIYnW4 EEw>mwM&f+J[k3x>ɋlJ֤ٹJ[Mż ;)"AyTcd:[Gt,s9D˂(?=uME~6Jme3 ?nŅ&9cM9o#F-i=ǻkj5 cvΈdXm$iV [›{;1 '~ ~ǖxۺ5iu`KQB+nG9N0C>t.TRQH9Qv^Ztׯ@],GCllo1[cxZ'PV%Mdc.p#*r][IZṀ@6AB-̸p(Kd6Zls(\wpS"3zzM\r:PLh9pf@41_œwq%eJܳn>pQEL1X ,; #_{ O%Sr#w|`xOi.\ 1qV܆ `FOCg]őC nTӴ"uEPK>a T1Ms|tSE;IB'x˽ЖoĸCh|P)G?PխM2 e邫սJW{OLu>Uߴ-eoZ+ ;Vm&\{r56G4x5"lj~OJ,I< LOy5`,W`nH cnF1&fE4hY%fԆ @E@Pw zOZf#/B7azbs"l#K>Sn\wm[CNj~ͪB/Ǧ|x%죢" GYYQT8nSDP>tTO/fmY<_ (<g }c:.{Jb3k`d $T ϑ椀E]€s6mBE=Jl7BLP26b̧??oOSZǼ<m %SSkP>m;{ !Dy٤IU5P[<_bգ9K]<1cM?s;9dj+E# #"Ma n9;_DL(!mL:|A"ַ ҮgRRTc6| Uwp̋l6H"G CXwf e7$-z)NAcyqm쬃]M α#g0߰Ez|TXyJ* ""0H]6c>ՙA]eCj:VI͐0X^q]} -8k]*f.z%H.1-z xl "λ{OYݥ.sǚt׋(| Y۱[p|"k*{6]vζ~K$f' N(7JT#A lp?K^U2ʰ-{~]nV}=ގ&$ik-tY+$Y~5L:tYu'o %&|&duX֛ۨRZ?5,7h fb-ja@?ͻ U1=$-"u غ!^ pJI);"P9V8M]|T}a]o_ G,Eޅ)lƯ @oW E. IDATlX2`VxD1`4/4+f突0y >?nʙٴaUzuzr}HF;zɦ͕ Rx8فv1)jva]^+| o U ঩;oql?x!r$L˹D)NTbPƷu]N.wؽlglLCRJ XV`Ӵ}s30&x4JĈ@'& @8l}];3!Eh|EJRcxKY AF)m@Oacd`Uw$x53̀[0'@D C\9gcL=!]A>;>T)>{<vٟu&, k2.nɮ1?Gy :-F6K%lCzlc6Տ.=6b)wѽy!hJ'jUF+ei!SB,OYt`zd>,/53YB,٠26- kDgwۮ1M7 \?Of RG~bJ[PT,H[뀶k:%s%9X_ 3,:Zejv_v 3c>-8N l 6S׬7[YW:Sf4#/6yI# yA126z4]v(sWlςR9R>p,qm4F.BȊS6؜_׈BHv_/-ٚL"r'jSnSi{)lu)|Xh ^+?hV=[b>L~L:M̌mnXKX;~]-|6]陞M@HA$෥|h&x\!2pt~B&2Vtϟۨ' iJ UerւS q3=yl>g_o6fxs@qYA@P]҈Vq~ !Geq@L mo%fkܷ &ҏsS6NP=nxҹ߅bEB =֚2UoG xR>KN{>,οnʆٔtVYL{3v q߷-̘"_zh .9܁Kd˲% O8MW?~זmP欄M6ulcf)N,屝j*B|`:[`+T\QY8{2SL3vLSQ>1jk h=ϙˏx X1tSH&n~ o_I/FAxnoVp/bZ_(&7 cl]@wt\ aƊ!z#& 3_5%^g: L (cD:B3tq۝I^}8'f<4stMFs/vp `yٔ5鉆f'B g(Ne'f=QǤ' M6qǽT#qe^p^x?B?9:R={K9>89~g&(q5S6DdL>I1-Y.yG<}&#(U`P#X"uZu:Yqn =LVm1=I:4Xp3S̀:F9FI=&\)R ]m~¦>~g9Uv%\ُl%xBZ)k^ַ{Pf8{/MB?5̽~*LP7K6WKRꦞwZzųC51GAnػ5IҭXm͌ltT 9&gæ1l C~@%;A]R}3 b=Z$#+qa.T&˓amek^.کF).}%3yj9\n1 yL\8rcZBHŦ|V s',r 2Pxpv%S>Hi9tdS1'LZf^@iMJ.8@E_q)ɿY1P f 1vs,Gm6}"ʹ}L+J)piJ41&/vLhlj_>bfezC% ج"~THl89DN%;B0 Ae Ô`E>2#⸵`>-bz:žY e&3LYjqHDA(qϖ;s|T(ԫ!cjƔH?Q ~Z5P=Zl˰dOt"4qSD1I9/Kx CvFWYM} [j⌍YutI @ӌ2=C>` N1k:WȜ&@@g'ɶ6ĢB <߬Fn%Sb` 1v[\ݏ r[D}Y *8qz!x"bp*myquUJg*dӶHA4Jc˥fЅһFC*;Mͻ"N8Y.Gf5BT[U"pbB ]ir$<->_ ` uLsjy%h2SMU:ಖ.7ƬAsT(w6Pbkކ5KaV2,%Ϝes%LO!: 3~a${HKEK GZ\sXWi*qxҁ@ڞ'fM0MYbO(䪘|JsV(bXFzǦQCΨk.Jm1m9~ur2?*4_w"~}\fQB6 NyiMigZ vaO6 \/%HP6P>SvM5fa˂y~P/Բ1aԱ  aStݿ5&a#>wE01W"$2P2g%֔4k*jfb{LL?sŁ' }SDTZpKnvн.JBu-ɨ5|WRKS[)3?/t a[M]|$Y4Yn~;R~k~C#) 4?v bbo䞟gLŚτ! jtjڬ䦁9gEEha`@䘛Kb P o2۟6v%ܡˉ+VPx+Gqe\/ rfۿoN)%qGhA^5g*VPYg/zXC|0;VJ/}M Y,8W6 a.-\eS^>oX^Ȧ0Cخlŕ)0k 7H2] g؂m,`D*2HwLHx47 %H6gBCB g݅X\!D:]yf~#Г @槠W\cT"0CƋ#.U5ـMۜ} ղ!=\!.;8;rid\?z.~d-$e~gHE(M`㱅 &06U>@w@Iemp{q`Kf_D Sf>sT *bYScIܖ6 _0 73e|&.O<0PZ* B\wz1W}<?E;:iīcҼ>6O{ [0Wl*{DӶY &`.!ZThՂ +W̶bn`IBmM 1m=R\ f[uL ȋ$''xC:ΝXcHlqYtt8en?N~s_㙘{LE׺1@Yn ozh2lk`aAe'j=vnaR,yTMӱ4G-{̖9d'Rj:(DkjďqcqL:rUgX#ΐFvu=0 \B즰=h#^('v N$d?/ ݣjĉ#P32nrQX { q,Pq9#9jB8" `3QdK z]8 Ѕ2:^G x8¸dU&C k2/@.I?O ǥb|7'bۄSdaıZ[tVX,v~}Ղ*av֑pA)(!PF~lۈ/2젼k`gkl1x`!S;|)S}8b"YlO䩅-g;0P}.X?.6'7Eu} }Pq*a =[ I|XR 4C`P@aH! Dvuc/Ѡ?߱)6e>é`Aoso7fsH 2Eh`^ J||` pv$!>JX.Zy!LB֮hK)OqYOu{4Uǭ=&Y-8c2w\O 7cMQT/~3"Y^?R\vZt~ cӵ[_`T oyg{H,G3!B#2EJ *sC&11c1fMv]}7#LpN.y%n0#+RHح@.ѥ*-/rMB!Bᘘ,{eDkq$ ɴ*XC = !baP?#l}7BJݵoc.IZ<xfx w1e82S%voL, xaH/RE%xB:&ĄM#!s|O\0bݝE.8<*h/tJSn"ZZiȻ2[k@""UR1ź'gN0KG[U7s;_w8Y d!ρ0UI m>)CbqI`fWKBDBP `oY$ @}ܛ*JN5[󏉟V(l[fޞ e]tk~sW]w*6( 6Sm]n9@='Ao`UܒW{,%4NʽD/9Gv#en3dc\PSx̘wR}@fBϱi/a=}?-RPa%kBBt~/~YN`Zb Qt)Ld~wkF\6uBLM)tEƃ> Nn"5`4mg_^[晼Z0L5&> 1r柌1,)~Ksqn;eReؔ4]u_xT0e4=34DC0Q\`[Ўd%92; 7e!@1tw c3xDts*TWBW!L{p2a{SnfJk(8J-%' >P)'tuK

kkb= ->gSU09bĖD+Q&3ƕ~MH+cQlBjB*/4iXcYsDZNl)˙y1B6&1ztP:GXL BNfsoۨȨף8%KaMB+f|,^zj=uO? F"m63ڦ`LmS*n11umImr'e"1J04&>Y.Nhv!`/j^ˊ60uDH2uxd( N }^N y*NŌAMl#Mt+Z/2{;(Q w@jݨ .:żCHYN5`RC$%t;Ge0{  ,čnh]ҍUK<1^3>4~rKg} uan-L{HJub[|VUsrHO8ԖgVm.Ԇ0CωI;2Jmx7wz,=z Z7 ldpOivvN4C Cq0 Υ@(f߄+D}}ʳ ^%_8*5dy DWd i= {la( U^hO=fQX7](K :,aOMH;} 8McxHNH 0><[Jŗf[y2Yxw\yjfdx]:qS:-h! F1ԤʋMvg[`Uu-nQ Ifw-hF'؆ 0zZS )DG}Պ0ɂ|FbqJ5T οon}"ƚ:|w _ υlmM7yaQ`CX<'oիeq!}l1^[9.!E|(%)+) "&c=a.jlFcc[d ~Keu g[YbYmbֺQe uװhDv b8ŋpcg?j&tdz`fBO6JYj"f rqq}Jђ',UjôYkkEhu$ Ոr5o0FQ8oac`|ҍ hŽ`q?dBݢǐ2cp7M udӨ·qu{Mt ߑp5K @{4DT#|K>GZDkg}1A\N8F=a6~u! { ^_pURzz?0aΣXה?[;+kdt1GXCX^=rCBɖ)ng ֣a؎=+Y.-DYjv!rEX'@7ͩMWsӶ\;D.Ym.̚lx-@.l3$h06 {Ԧ}0f[NmئPv|nM&,i_x1 " W)b>>)^*g\^eo&̐L.I,.q*"6"P7{* omX% 36[dА㞎S>HzaleXWu v3Ƈ MOdLiUM:^s_y=|A'TBHSvE;"2."mw5VlƛV%T8xCq Ǽ϶evG+[N8Hhx U1Ibˉ9jV{o YRJq/%]ǂ֜ufx߃mb;E4%aP?3T};{0p mbT,XK'4Z0B}[}qYƟt;i3P'ȍ6<^xMdϕd{,`մƶbﻺ`wVs|+QI2% 7ɶ'{+iccG6MlS,R1pYG?mp9a{G=ۥs:+I h/:366ЁnMթǨT<"O8`Ʊ5?5@p -wmn;8H،p?S`mWpm^k,0Ɉ&[szLLIk11^h1"qZv3$-g(;YW\ETQXRYmnWBT˾fʟ:',Ɛm21/5?}@x/e׶cݹm$o I BY^D7B(#c9)!X`izTX!(4st<:*lu{::mJ#C1z|32dmpQcl]@IYw ?lS-^io8d.s UBSl!@E, c2fctAz,Wg+{'!᮸ 8, 7 0WǰC=0)226^KŗXN sp3F|VHX `\KjGR4M22Qky XE0N еY'.dw&%&.+r<1w3k/~&-T,N @1=H!Jiw0_3,yeYf6x&7MIcԥ@m?E;B3G<12@C[ R(c7빣BY 6<Pr-̀@$}˖J 5X<m+I; |m[wo1*vc. l0iC}A@fPs Syɍr\ZwRԋ| yrcQ&x>6`y!w3}ٙ-L9rC締uq|Lśc4L$rLI֏;+cm-V8 ]vF7ѝNl jbjL0e l1flmbϛ0qM`;m2N@rL&Kپ."ia!"D,R%j\;V+Ok'>odcTL2ZT YheƏaZ[4!wmt pNixu:UΓ"*Rxmc]S)|r|EM7 fAԖx !T~ [26dvRpX*XH1&cóvhNXsu Wn}(*f|iz}Fs/XㄅN)& vH#{]m4ԜmՔ+rdgQ.[pT3S6W f{n-H7#OQ#vm'dDn,!&M۳g5yRG"[ W_Y!˲LG`Lq2(K&LAB`qcDGu/z'3jT*E^-jV&jbc8 ߅Շ͂X KV6Vn:Kh2o8ׅ6x$*a(\0yXTh~eA USJY3K0!¬xm'qFk |v i8mzm~3|&V!{5b+kY$`},E6 *aN$茈spNlՔ:[Hxt W&SSBM(/[u\lnF\;I>Et 6OօY>2Lt6kuCÂ38_ b3&QS 9 6?8{nlL csd߲y? 0oczz߭[3f?5%Ny8B@69bSl.46+cJ@$<+  < .`u,㹾R\w@zɠ *AWOxآ0(ÂoDmdc"&8de5J&N|S_f~SHK`!dhkL玮 Tي\څ*SCz]Tν&V:Ϛ f}Jv/p5)yXIܸ blqgD_UvRg:C|`P5[5z nF݊RXP SnI;z غLҳL6pKw=H|(B,ajBFOyT(hc\-W g`!j]N @e5&1_˰P̀Xzu&slw=3H#P ܵB֑£8@EzY+¡8r1%+-ْy:¦n)c!hr*9);z^J m8"HgD$LXp]Z\.KRyFy>ju70mnc 68`]s'5C1IV=@P;wdHrӐ˲% O8Mך-^%ĮmMPBM,6}G 1'.+= YCK4!# /eu2*Q\F- &6 Mmulw+}7w3ǁn R$'a \Rwj{R,,#Y/Dq MtycXX6%Ι3ZʲY[JlNʢI !}o~z IDATxj; L\\WI!s#) 4Q5Һ) tO: Ì}6^f[l:Ҟte}db:c<'- 9 wUG2VRjr$+F2WVgr^½T!˖2^`2*@%7lBSRC ^fכVsQ!PH=]ppu'V j{t5dVxj,zȋ{݋l%ZtL‚[+:}Q,^ƪBE;951'E{z|RY bm&;lb´aM;p,Oq9ВT<Ä,e&cͦ3cݸk|ՖeUC,\Ha"eS0XE,lJ@79{4R,!?X CRrZDؓz͖ʊ9Q=@5\UKYf [ls2ݝ5\:sRaSd _+|ÔS|JJz) Ttߕ| 6='VdxYxo_.T= 2S扠:N创Y$T`:m$;V [ĸ1d1>78HRjrVW 6E*p +p9fR:uk!GoEʮ #4IfhqɛU]oܯfg.,٩=aq:M d@SY&sؽǀw6ڮ;ve:w/>c``Ɍ-G2TXpgy΁פPNɛO5g2B] dSfb-8a\ fCBetde^Lp2y,D#D+RPB;`؈Tl%(tne!#fpkaWK{zut @ j2={Ljv,D>gbwSC] hmOd ~ۦ:3]41G<թ:5g0&SDzyy=2cUO=wрyF"V )6)b%qr )7g KYYsbus;CG ē ]g W%@riR&]MnS-CAbs,i.j.kIݴ4M6D>/5S^ZRAҵMlc;{GK*G~wEn!Cb?V%xHv1A2Ϊ `:c&Hx|VK)?LM=_\>4|ܬIn 8<،t cP*,6lX ׬縴 e S yR+ENjJJMN QiY5%<zz&|NbIt,v\{PǺ9J"! AglכIp5eZZBsS{҂;%~ဗH:8' *;ج׬k| rb&4D~pf 8!7u G!ho٬{)3:,>CWp(+3*}_tGN-b<@lLOydkMry ʈl "g {5[Jȵ_X۸)-vT\ʴkFI FQI a+bRkv/[IJYbV<)t0}K[ NW*8n6l' HbR,B'P $p~e@  81?80 @+rɆNKVՓ&&Ys+?ϞbxX{5fY* *f]eC9 `{Vh"1]pkӒ~ĺzlVns,|Z-% YBsS9_),LN;'OkF:%*Rڲ:U &[9jBϋ=l1iyc`]Ia+黌׈mŹljt.;sg 8bjƲ|ݩ '8vW6lX_4B=b6 dp}~u*AH)x* /$H_W]htUPY%@*P6-/O fǯmjlV<aF,J<_호)X(?LΫq]#e-=p{L\0/跣pKͱX733l 5 h:##p}`Hٔ)uS\]/ X' 2ƳV|9ZˠAl.ͭhucBSB TozFd&XPsd9y+ueBpVntiNy?M,Kupx9YgE3"#|*d8˕K˺z_}zMlxs%Q~mڹ/´$L7tap5wvgJ%w>4CXG4" E,vanˌ^-Nؘj/t(4(nmC1c2L>?7cђ1@E˶̄G  Ty[l}Ž9i*!cXw$[T,DiU3OA'%/U ++ԭr8@/=c 1 qa LSs\Nj@11(J0΀nGl 9ðpҧ>dס`;rI'%/aצTp q/1_oL1W uR#R)hؔ0zpLj  4@f6GCt.n_,E5tN-dkWppϔxS  Mm\8Jnf=l\3VO;?U6l f9AH 5ѤS^`ӥ1fi f݀(Pz"`58#a6¤<ꮙ쵶ݙ#Ǯab btqMKsaj.1̒юi ' Xa l>S[8_?dM h4m%fysѶ>r{xLȬ1QƒY2 Kfr xn)IMVʉ0A- ;sc2;9ciB b#'# 2:C[Ydc m( HPjyͽ)t=O7VHY+v*sCaQEC oėd}T.7-U$}8j1&QR1JH4CA4yf3!&`G;*q⃮؂| iD155- yLXi} p7 'c9ϗmYdUbs6+XLV ',BA҇{M^rI%F\fS%vd)FI $15;MČ͙>K ç2ʳBFƹ6r)%hg5T׶,h{q}`Dc dDX 5zi`=!p@A1bϼs/ݚLWp~Y<>~ R*'BLidWi~A /ϥ( 6‘1xB*X*ֳ?%3;c&hêi<%c^]6uޅNi`- -1oa+ i<x9 "" b,ًYi<0e(l ! dUk U¿vdܱީP*F RHi x]BPq3d_ ɚG)&*fL$<d1Ǭ'T?D HNв16OtW? a6t9aj옛.XI88y~J hȷO?D 2ܹϴj}F%-h{M'92g_bOhݡ0L Aq3'GU!VrSh5k6a3|*sm:>lB[f`S&89y+hv9CݣGmT:(ݲeX<ϧ2mPFrDtRJ)ac4pPˡ`5]~cGe#>m<| )Ѷ@,=Sw:?9hOc(۸ɚr FVU3J׬-2`_,0WTDA҄_w$CX;Z 'Gt2+]lGA0LМiEf$aͦ<نL`j: !ւYdIP9Yc~^JJ#[Svjs9\k6$"|G P*ſ#{!LƩ`. q@qnc=;{=^*#JDvC+u"&}  ֫0߈'lڨ3Yg@= G(;B}M$K*G<9B 1lߠ`_b8/švǎ{*t.>8†8`8`>'Nkv@!G9:!hYz~]?ŧ(Es]'f59C?.8~ם Z Кeb"6>H|ӎ-τ;&=?y$ĢAuѡ]hk 1Ԏ#abY5x)LK<>QBieK%|%p/U:%[$9s&+iz)BoY>D0QcY B xݥ8wl*kN-Ov`?2P7 SǛ֙? ⹍0;/ 3n-aJ^ۮp3m 26̖*Q%k\Hll8,3y Q[l(g깿OĿ @IP*}n،.:0-ЯzFfsz}!-fsYs~؄G{flNJSS5G p;}7t7\(ZD(sWba[`eZG wk-\ i#>5!e@{~:D01`"*OHOJNJT#S˶ g¿9L~;y%Df;e*LEk.GMB %sMɹaWBYζ?fTCK[gJ[eS a)JpOk  "c7 q]Vhilw;0,0ed;ojn9w/'0̣=2FPM3\|c8AD`* SGKlug@\H%n/-$0<#';ֱ~Zp-:P/oqaD?SΊ8ҧ @a#Tlsu2TΜ% _蛻'˃HJ.YOYߪB(JlKp,C6m;v{ex¬Џis@~9,v-џ`j*nlgeJnc pv觯I@ $X|\d5ڰۿcvx}#Ŕ0%CTNg|} #^_ld;>wwH|5@m@w{hEƒQ89۰gG=cbݱC᳥;(l0ٶ\9Qwxߖs[eN-<)@bWFvg|G9E|,in3nsjd@mBwDkB#[6P3e$ bB~Wr?N=)&L̹ݑJR2AC"C38C0 2;mi<({)"DLc3 w  [ l!gb7Meêx1$^!|+aRGX3Cd;=` )ws<~!arMS1 gcd1PMGE<=+$|(;/6CfJ|)0>r]9b"r JcPl |fXLm|2d@:3X`= G}\_iν-ר? IDATs,ň918\cfb ;Gt/gd}vqsQe1$[0̡B\ٗz/if>#G,=$!r)# er`q iUgTIȜʜ!j( .-އdb5pjz;,jX`Sl%, pD {ң#tޔ()Y5Rᑮg/H13gӤ|\aex?A!%'G[)SFn>dZ2!0cn]0)#~C~9Ijѧ1gSaygL@LA #OUBCǀ#,J0@Jl1eC}(YF σH0"!@ 0`&r¬KZ O%Ťɰ .I?XB,<-C;BB&ZLTWxa2QDh*9fii|^@R c6Gϋ!?g=rۤ{SLs֡\Z q\@Q1b0+*hi`f@0 8 r_*DC1֍1Ccv> Ks+'^(XJ0c4&kDTc5 10=Ǚzu, *`?dcꜛe0o`o 5VQL0$&okPPzmnTK%* z /x$qfGJ {5 DwH#U~mt=nV4@1Su]c1Sw3MIcI"hHiFr&U1 T?źyu} ]˚"bXۤʯBbu}u; TȔ?C`5 | .WUbe;_6 x_Ej4qEKԟaM dyhA|+ ;l׸YiXK R UAX,'3;`x|c aS9*PsN!1f/cEO'56KOn4Sfk J_N8}}"&RPHevc" gm9Y.K>j'=kb]0tB r2_=@9yusT?uSWC~ޟ, Ҥʷ,-B,͂-ؐwS9ۆ \S2Ģ>s靉P?16LE\->z5g$MX p|l\ DʠQ1 @MS8 ''J-HPQ?R Q87nk'F}u+zu%<{4dh>HۿC^J=4%&UhU*T5qB ='b ݌ **ubR0C"*6?1\zE嗌NWӋxll2} +@D;^ * c 1`,S*fo]:=EClgpp3xi[3^̧ r) 俅$21I{&}/gG7wg>G l1QG(mEQ : *Ƙ1&]^Rߧ7wYr?߇xt#ܐ(tbn,N$1_}'?__^}|Lu\l.,, orki  HNi4ǪF7GvGrd2RLx4r1R6H(ۊsitʓϗ@DWWgE}tfy\WsMekV'皘T>Ƴ7M 7LSY/tMB_.'H_R (ۆZG)av{j*g_M_"kF70gw݂G( F!R2R*hVLO5b|oR17Wu0ZbMQ?1˯cU'@jX9WRJSluN,$ʲ\X,'/2-- )e\ɿ-hf Hm5]fqc#@K#\HleT/\RF>ː5= 忬\0z-4G @tFx55}&r>W #.8\0|*j*_\p[Sqo P.?*RQ c`d﯃tccЬα: }r( Y%hx\_U1UJycjV '%C1{` Jb|FoS1Y׾ꇜ. SR` x9$e"~`/F7ӫ_zyЧ7g6L0Lz"N'YL L 嚟,|ሰɏh?z4aN@>&&3Vm[ΓR,^ͷ,&jK/( lҁ\ǘNй~X(.\?5]3S.r Xn@*.ۅP 1QWxb5'7lrp'}Ќ=%j*Fj}KE& 6j2^sYβt:]kP (j+ˠb&x} j_1|}>`|JͿI0˳hUb쩁`b@ 95/)`S*_|9 Y~I5QYr6~&IϧW8&YMTūQ0Jcn @E+fTlPu?Z@2?c (Bh?;<:1@Ri% P@-~X[H_L1m}~]-Z; L&59f2\`}9os&+P1PkøbWo (D+mN"4l" q 8gF1S%SS@æ\Mnw3MF9ɽ^N 0PүST~;b{?w1L&Κ{{{tl\| 7xJ\ӌLQP굯; Z.l܂9 qp{E MY/)ONfdYDqjz2hΌ'xmIH1#!6~嚜}o2[_;Їz5Rih=|>xVT4MGk 5ipx1\xҸPTTִwOhO)p /p cՙn_f|&B %,4S4YPŐ[]C$@/w(d.0Zxn syz , cwoso!,,ze< 8u\]`1m4>hVR<{(!@Փ,@{,%>"OCTX A0@ JI.WU9M)Pa`| J!C1~K+Og .{60FZxu6)dtg>coooYQŊ(S5BUUuZUՆMlf#蛓Y䙃فse(_)VŔ,gJTUiZ`As+4^.l)!rf PDxY %'?6R;)&{/=3Ck2;'6"*R93K^:sr`c;t֧;88AOP*fYbZPULkZq>6iɀ'zϝy@x[,= 3? |fL>fޡiM1S5^9Tv0{_(mfJR>;P߂9-r0im)00z :tҴܸieϬ4E^V<*¨,98fq fT|i"gI Re] !=mSsT mj6_}pFE56K^TϜSm(#svJt_N&70gH`̝g0'xD_g8>k^ZӲt/,+<Ѭo~.'wLu ƒ mfQA1f`@Ǡnj T:} S=9?1S jjw(&~Mv\LEWQL+4 !r͘'Y7Zp bNf̌M1TO=[& kF8Es|W뗰k | e:*X.].ko$@RN\nș4 &kM00b^3d+#"qwm<2Lf3 \{ (NǴ>t8iaUxTORѦa64/9c7ϧnR((D4[G}* LY0Oe8Zxf@uxjr#U>Ƴ2b #X`)3xx[( y5! 45O/{?o*U6@Yl6Sl`tuUᅺ שhV:y=AkMj0CnmbLH\ƋN6%=~7 )1 L8KnVW OCG 41 j4>M՚R 0fb䥑)94VQO|1?'Z7Noe0H>N l Rt]ck{p ZfG07hYW'X17ak30v7 < |X{SP8dĆ :H]bY; [Fq!cMz=N%D4ECB<@Wf먋U1ԋ34ǷM ~ X岪*<_xm`6~a7}hA@V>@@T;<`OO8uǜ|Ac]q.{HI*p5N(rtw\+Ƴu@'@LЛ w NUxZ=;^}?%/1 Q&0hmuĔ& WU_Z6i7%*>E{* 'Tv]R1.}H )L nHvu2نdҳ ?lyV)70> `Ɵp?$ۙCbC*c,O&?ƄI9H;p I*?YW9P_4O Tgw"[)n>^ΌFh|Jk*Ƴ7 F^>^BٶE]k7ۄ")~ &m}4 V3j!0%Pk"F͌0B tq@ {b "1<&U>Ffm*e;d*va `@>st}O^?+'w`;_gEYsZ-k<ۘu̢mBAS,x?#sr.rSP7}1Yq(9.s<\vIHP s'^ލf؂R)9_p[zDLΧ UEw/[_gHf 5\|"ZU6P6i/jR쪗pE׀}28'}pf1idI^ _af.u 17$`T~Mx\ E &GLΑ3g_4Lŷ3 x|!+&l:klfM R7xe٠06/EbHD7Y  ߇ƉkrP+@ )@wԄͬaƜ~Fqԛ$B#ˆPL@@IdLp=j 2UE%4Ě =;-'Ϲ <:Aogs.} _gM̪P4 >jg<  Kn2EO|`11y?P-0l* >I~c"{;S_a5*ȺEN8ʬ9c[K\GP"Hn/~cTK Yj!əl4 LƵڵ 3)^G_Rs|B)6Ʈp1k4x7^^xiq՟/Ƴ(|cHF^L͐Ȟtv9~'?q/_)xuŔB*ng9y]. >Q5}g[:C2]IerkupV,Ryw=jp[^ 17`J/1#5`9ٟTρ_Qb,H-\ 98/ |NM.K2~eg-lwmm`8e; MZSܰSMmXy 41Ț* )y)5c]&Ԃ!TWg7}8R0y |J(lxuıMh`[N`{?P㘡=v:יy=;3fy,wAgY$옙O5hުM'l()U|9! _O̧@q|"\YE΍+{ IDATD)55.6zzϐR@kY5sD29Ʊ {B*2)}\S ޓT9Ŀ/feZT ij$|;*yU&:^aac$3i~M{#>1`,%kښ; N3sMU^}n tٴJjv1v7Gf-|ip1<;i}`5CmETFMz,cw_M?"h;wtxT[u|L~ 1Zp:L&{Mt>s#oIEb(ˣ\} σᦆYuև 'YIkTZ^V>|4Lo[n 1LPQ qhPI Y,1§U >W!ZxIqAM}3z`G @1Eu^Y]2c wvT-΂7*Zk<^7y im6`|܉0ֽ|aNtNf.嚠_0!7muFcNN~F'"joc8%425%k#uA9aSvwvOxv5.=16i};Ãlr\@E5` >!k0nwb*f "1Fem C螟N Gs ף)?뀙uqRgAq/VAp̕mfݥB#&AmpS}; }9lsƓ|Zךu,5oc:ȉɱ)DaB$Wxh[.knP_(Nh$CS6B>F8w`& tشD ?ޱM1B~nYEl 3#2Wi϶\qp'> nЗ&MhYH=F0;^+J0FhtNR[5u:j ifo<"| >HBߓ j) ;vv3 033jz8|3Q%p7Vcs^DL._}`2n'&ncr\lʚ\擽Qh}QmL ,3>ֵλŒzl"PAZ&GM;!,u.PŸ:Cq6 g;W0<A*iz>ji!77jχ3 W"4ǓǏ )DAInPh<},Sx@6^{)I 7+l%qE_&w@<$Ə`ۓ JY*x \a޵LgYLqkRD|WX)iMPl9(vE^nן%wV  pJUkX5#6WT909B`b~NǒK #}e]vO0Lͦ~ 8)9\rv7gYMB xuۜ B3s( rjJr1大@9Y49"܆|lJI{dV@ϋ XW?MY )a6'qAq~癄S{MU_t 8xD w.IZ )v^; g-x *2OڼOܦ& kz9k0 t_MK%,xqq]bύsjn+w1a;upe6>,# ex)x ?|SRxJck0E"[""(4S{e9`fմ>3F.}53zZv\25jieQ26166vJR\hn6`pϪ+~}")W90ֶJt3&,dt5eC1ennx`s`/xYEYϝ2{m° xebƾ[1ʈ <(Z0CBCBEy) j\`ȋcO1'Gs"jpc<\^m[9oobYD:[Ƕ )`AcEH6NJǽ^IIJfͣJ+߆ƒ\ -#*nàhg7S~%; m^" %k*)y AP7)C xhaT X8&b ="ԝm"maZ_Ch}X?T[J%j?46.cnld6fӑm=7VRu8ФL+{$[ѐz ,)[Rb#%جMmsFXfFc2KgRbxn(~yLA meng5>i b 2Cޘ?4b%mQ/N7 ށ` 6TLtZo^^"XD+3ʹg:cGPጙC2hQL?@fnjSRqkSA\80p AB ?+05ɜe+[iPgV5.RzL(A*]0$bVQ[S/TjA- >*q{TI$B P˘+Qlt@.JN&C upPԢKDxQشn&߅[Y'm;+l8&7 9"D*A@C9xlPCa'ʅwXyQ-ǩAR 8wS!¦Uۦ8Kz%' vOqӚη3WlT A4r|0mUQOY=ңMaBy AdaQ5""olxEx m)<>"b AEfSDl7(N|4of# w w6V+nk)35s_сĿ5 j*9ŀ 6g%Pyl ZƬ|Nr7>2 JJ7=Nfidg?p>/F;2| -AcB*.D{IafRXa+`v2™[fHQq%ZM0Vuc5`V0Yj'{zYs'CPRxR !D&cěCEQJ! )noƘP*]pyq ӮH\5b(xڶkN jvsL? s*r_K^ j%8T{);u {l{NCF핝bv2V}{Jn 06;{, Ulr嘉u]fӆT9Wd{Pqv#[q`_^@BIM-<AX: o[]0]d 8=Y_R``:A݆bgvX9ftNaIӒQ5%5ښ2@ӛD]10ߟ'Ͻ +dw)R* W0c4dЀ{>5c1 QmscO20wZ wnuU!7"$bzHjhAl"X= !{Je߻nfzR/9}pvE[3&u&rx_:[73ݦH7Ӏ^Z]t# C}?>^f7;YBmJ8.Tco"a&|4H99 wSrT u=(` |aSd3d9{m[h }lSL@j8 .vh"=PAx;/smWZƪc8sM^^D{]W_!ǦY m0 c'U s37ӗm|W߁׵ ^3dӓ P1CݎWΉ 1N)`P^By[eηs[LIOlG cZgxXzhdզ\R&ML`EbM ZC;xb~nUW\-oqd(3- g~{֩?}U|T")_}:pXr(mV52Ύw%Ԩ<+0M6M$!X8a0_b5'R E-B*lL iKy=fSa7aP0]i*'㠨_26H!&HKpD+K)` }NY rdx4@=>*䮛KE}voHn͌Xdt!Lz'!>޸]l<8CDu cwOBMNNݠx4榓&wE!ozCszr3\GNNsM{ 2+\d?LvjEwt5H +qMl2M#u"oj穄_{3{Dԝ B|Wg7y{ RDkfz 1;׀w֛{DϢS rE4OC%md; ~WW>7aMs,BVlo A4Aŧrj0v[#Q/S/dWKM=;(qE=AbM|Sn֋z R ]$|3= E  *}*%'B$hZ[ܤ5h26=r R~$''b:G`|. ;u#>%-eEsj܂9㻷~ۙ^aSU&,O`"^'`?%X|bctHQ@t! m]gB cRxc݂eT.{l K%o/w)PbHp112kfQ;@-:6n}sHkjG爎C,# 6;`Жjג15_&* o)hpSYKU1eST@] b& MfH2l` h]%"4$ZPr*t>L>ضz϶M7b]J¤t=;f6^>M;._2?9O3,]۬݅b<{T xg=[PB#JAwx`: +!VBA.͢ZVsc@tRdlN'z3C&gl3Dx#0"/1:p1ϖH Vx 3gR !N_EuCFP7%݉)Xj,!)Oc0/IsFuKZy 5w1koކB9Sj=2n p'". `32S+a/o!O3P8``Nm3 06ٶ }9^XN/!8f2AA56k ̅i`A¸x8_l-y<)cܱ!7Ke,mk~oɱeGpAyWdC(Sxߘ ;<אKp/+ڨ$_5#!rT^OGN0Bv X ՓtǐiJ!Qv7 *Nap:P'HpN&nJKД|i=+O(08bƑj} h] S@Yx9$Bxhvρudx \o}z6~[w}  ! bŻl t.lӱ ;!af LK FyBe*R, n &\*4ˊ鄔*Va|A* )3Зނ>" !7/ \$OPg@x7!t4f< C g(ǣPmh qڬ,M0&SŒ1 .l?Q)@t.3;bOosr+I8!9R6\29Hݜ s]Z6d ˒锔WC+j=kq lHx&[(xUgЦ2wݟb 34 \Ƴ Rx \ 1 ! >M/Ɨp4f|~V11|S/+NW83Pk0{XxIPJ\\+gj:aܲ;`;N'~?eE򇺺Z%E:WO)Ksz=}B՜"5=*hnc6FgeY?'·V) :а` 톳R!L8{ P4u-Ę3cVu 9S  Rp|Rp,RB [oKw2,mVe t~p|85@i;X\ d/w>SS+<]@ A&* Lx̬%|ss.SVLdL" w<љ4$Ed=jΞ?PMOEë߼>"r'4;S@ nnD#Q,v3ʝz19oVU\j4K|Vƶ׹_;v튊MV L3jKdV`<lԌ!8ﺏbBcQJI,0;]xaOLWs(lݰ1%e>)l# voS%_Ƕmz1Wa'yױl`fH#W8 RFT:w/BDQYS"~iK֮1!epZ;@ HMy {.㵗bҹE#|=32Ny>B~ y,$ZXd.zdS7lLEy1u1x0|ʝc}-8ԕfo3zE1o\?H2yY 8N*/l5%^ )_je*+8磝 &(O=*t"pjg 'CD6'*&E.ws&X Aԁf>R|PxbF2/NcS=M0^a0EA& 3nnJ|Ôx H6?t^ t+4S6e-?g/˹{L1Jr*vLM\z**yZo@9Do=l LVeLd: "Dz`ww_e7ϰ %M!nfF^ /U˸?0%a3`l齃>˥΁7˗J+BK_}b| ӕpetm x@am>TM-GpL˦*A ="ET6>?2I_2Z Lўk'Ch /r#Ä7{YJM]+ fFIm?^f2?&8E.C'ٔ/Ú t.+%Bd^J`}VNd߇j"_#W ,=7eufufY>jgv?Yyx+Yf:[׸e  (`nj#LӈImս5xk|Y۶+lpζW :7%} 8T.f24^ɩ~‹ӹB S N4!}75)g)O,`L(UOfY2EJOI@lPnd5Rk|l`۰f~r)&pWq6x^S⛦ğWML[!_nPD]VHٱ=P 0Wj `U -gHJHd-s3ME;'OnMEʏl[V?9%[mctҹjgU{mٟ=օ`qҷֽk'(A'_+Cw⏩v&%Ҹ@{V+b3cvyx6x-¶#np nvE0I\(gsL@4#uG!7*pCOB:[v8`cuBݱ⢻7Ne ;qLA~PlԲ:VJFe&Jt1I0Azw_u&nQcY>L @8 }UX{,3"]-ܒ-8=-0Θ@CYnb 6%̯r8AѬkau9l \y^ taߊ F$Ȅ]>fEZy?-v~:!jU@ w `3,ۨSJa  u~|k05 ` bmB9]eSd4_~tKؐ~f,Sޮow7ŕX@}ڼL{w8^EVyb nl׫n;(KVglwhvxhƘLwk5Kf,{ Oc d(kM ^cS)~vb(/Lә2t8#;nR{BE`RHɄX\0{9{Ք VY1W Z ԃ#*/PHx|)8u!Szȇ !&p8l]% ;T{♼"M5W3Y.ݒ٤e>;R/Bb {cl?m/aS =96c}cᶞ` 9QV}XxʸY62V1~xp J,L 56˕T}'ۆj(=%R5N@RS"R$A-khtq ).<8r:M*l=2@dn)LOq*O;1@!S}ax!]f!ޗ S㾂J7#uWf@S۞QoW`IQ(s%5 3X,PT-V=cʯfWvmy._Ѯ\6EHw.v~#\ >K,AU zyƔ"r ,VH2Pjvr !sgh4M|U~4=x)U4?6g/8_'?2[h T\/J[pUB銊=ETZ R:&kHh sր Tva_m$2N'N* q'd#)HqOsX%+C(H=rk9WSXsJ٤R*ڪctֻ3 Tv U[]=p(aR/oY9DwK?TV,ļ'YG3ypCNc=fkBf5 O gtj肛 3E 3FJdk͛]B 69m<K>g!E3;u7B?^Vp$o=[A >g2AtS 1365r[|L*;eTP5ڤ sטuXN8鿌pe\Ȁ`4C 33[~`[~ט B|dY鷹_ɚ`3C?) (Yak*N9MDS0`%y3p6Rh@H4ڏIF`] g{3"fWF@g™ $P8I֭vuP L sET,;jKժP2eD]ž`վhgsD`3+m!<ݠ_}P D.Ke 9'Y)y`)L';UK`L=@?Ӂ:N\~ \T65'S jMZQ;H- ܁KG "nWՀnEvD^x g;9&sj-BEw΅Z)MJ <4>LX0;dwvv]1s qɛ@Gw~\~bC*J|6y`}}<5oE֖[%n/,-+0x5563)`3NSb!;gk'Mr$o(7`JBŲ=e*ey4)#`DAsŭ撈.dc*ڀ(M3T7(}29ܙ 6t5*K<uf!}/{̨[ J!z2!SqhcgKqb(ڈ5YYF9^x v~!F򞛞> 9x=P4-6Q6Ivсؒg2''@ÇlD 3^c b3Y9PNTb ٨X̉&bgXu~p;'4VxJ|р h qe?bȅ)"{~JFzUbRmgLM$MrCFcaHH!E:Sg9m)>R xlHL!|PrS@.h nh^[Ȥ}刹:ʅz7ܽe ͅzy]_Cx#U] &T x2OPi:wbZC*.'@73c0%S3q\.k&4w$ĪBd.g?#FWyʧ|#bU6d1b / }ObhLlD$莵Tg>:SM{aǘnN:Xf5r{" A40iNN(fRVQ +17_eR*42CJ9dD2Й,`3!!NOBC>?/d"@_D$NZ-޳Jg,͜Q`TԘB ?Xl-˔#`Eo [-8r.![c{ $z1; lcbBꢿ g1X-eA-LL lC#PpKi=dudoKQuH z A#nM;NПhEs )I(|@L)c iXzhp[qN2H6z (~t;)w1lJeX] ^,=>^LlIm~9,W*|2%Rk<[!ȎDŽ~{BDAN.2_"p*qf|Fo:sRV&D@&(~R~0{20j2UDp't*Vk)hO<~i ghKGpR,#*:K(·5ױn0B0N"R|lgG=(CBe 6t:LF?E6Qj*YZ6`<\`Ƣc2w_ {v(0/gk 3YDc<~CyRS_-ew ̻睯"lG见163M㣽Q@h@%&[ȒX/o x~\-dw^t 8v.BX)dua*ʠPυxڙE8)V7i*ֽL]b Lc BQgT{&2Lm#!lBX$Q0[v)5~\ߔc }a~>ӎ {u1qS,cu`lנG|!#) 8rN9t|&X9/hӁIBowt, Wك@?mL1bpBuK-B<1;xcxU$NXLCxJ6w[t-f@ _e޸g>SqL*ϷP%I(gq.c@#_|uD~Pj0Z9Ft{—rq~ڽƉcY:z!Ŧ3s*qux<95ց(3Q*!XT\֔ycs:#| pęk$ o.~`{oVPv.{B_IBEgv<_ssd{fǘ2rCK?lٵd \Bu.}&~nCX^dՄI.h,R|*69L?q|@7S޽tl(2 /e/O->4w%Ё3]`):{SϺy퀷oJ1[#J<2T5ˀS߶޽Ovbbp;=ǟ"e!HQVHCre~]_vo 7|qBځkݶvnmmݶvnmmݶvnmmݶvnmmݶmvH`Ј)w=!x߁NBBcw`ܙ&wp!GׅScw-vB`g}g3Cx#`pv.T)ӒІ>V;bl nχwStb!w7owF-L(`H\h$8Rr1pBᄹv7j |nRVYtTƊ'>x讔H#rGLmLP@H mkrr 35X'~/j ~ C#P{{aƣ;h`qӖ b{]-Ay }&..m:~=lkxEAwb1*(®ozG#XX$}CvleoqP V〉b`NHiJx>]1#MM?/v}Pl0Pwc)7ql) #DFxsפr,S&Ѣ,ARV(6 Vb0xWcLT 6 ZRϧL1E:h[$+<^6 ̐ b7PؠOȞ(R2y.~c!.7ߡ.@E oCuz\|fcEgv~`.UB i ^`J_>7v(aBnӂB\\(00+o}50*9;n" 7VaLvv7/a16@s[6fEVС|1+B,2%p$|7sB#ҔI|_t3s)f9 P>&4-*HM0cq`ʝGc@O#@HRiWCJd긌x?l.Psx@SHR/@*K #cN0Aw >Nj +HeP@9tWȔSTBaRI!FT|8޿ >cA/0e= c!Q$fsc.CY0c;-2xwop`Tn(C?/  6l7{a!z6.[bN#Ğ*GѾр9p)b+v  )"+"RsuA:?Aܾ-l kO H-lUV঱Mi=S5%PƍNa;&;wsmT"8rN|.@z|D@QҚt6G.)`)qf3?k"`M""b`-K:URmzM]mS*˃1|=DX s9w Q@DD|A`1&dLQO2R$cULu@QI}4O/#vl`AdA4'G~AolfQFy0*\kzGAw;ttzԘw}2.HeEɅ}%>~m3lL.튱>TI?7g[SG# eĤL֡$YߏFy7ܖQ 7+Q6)g^mgk?Ǧ,~ V>!RfCDK짔H¦Z"tG xJؠhsϪt|XoO<ƌbHol:/!/[_jqM5I9`ݍm48I5wIMJ3klyz&V`#̐6NGxcLš4IF ,6cNя=M[-n\͏TxXcz} 7D"KJH,D8=̎Rϐ1&ńCfGxw>Ʋ^Ld U8-d> 9_C3=yl9"kZb=?qP*b 16O1{{ǀ"ʮQ6-Rjʳp(uOaۦF~B?s``R)br*R5PΎ;{Jem_W7gv~Ts9N;pɿc7s$3J13c $R ?'i3?ymDNوi9d~T H$)3s(+HdG".<>>|bvK1Ay|U`k1XRPJ&{w1Q[k{s7MzN6ňdM_|غg^G|1 0l|񆄏{р(s3|+# :+~Tˬ<*2Dq0ֽKsZ^̬ q̫$*~>/}1Tb=e|x*)9ϩ%R^t˓م_TYo%vߚT`7kF$>X`p|p49!.nb/?17~֘̆ Q`@PX>L#C< >L>?} xll-Dyr {zqRY!˲R/1|g){LDG}vqTJ'LkrJcm1Wo촍 Ix!rs:xӟgRoZXkДK'ܖ8p$X{mBJ|E V'A(P0nHg*~t) 7#<5S?ȼ~^e:pi3e9+0A8Cy*56I9L3-}Mblg!,X&l*fMp:G| 9~x)J@,WdP>3ON{D t[Ӡ. @Bb nY|/'co{${N>-XoR  QVkEBj[IWNe!F"( L'Lwd` o.)VL&NL&=9?TJ|YkW/IӽƩ81x|  GD'7U1Yќ]{ lLP`E'T xC3ƨ* 識*Q6s_;>lƠ:?Fumpy S[Ddt.Bld'[S? _C'^.4-vxccqP+pzH{sup)?|S[a˫c[j~[[=Y(f0N{>oV: HV`D6Ō @aS(dֶ R`%3* XP1P@8H3er:;EᣦK597g^iG[jCnJbLSxcLFz^AgcH(=9¯,_lgw! 㠐"Jt{{{_/sL& 2Q_)(šx2f2 v``}%B%`plqLDL-!`K~J[59.jήlH lc>c|5jnVfY.:l\ў[~ Xc @x `Id%uW` G4QcǙ֏(Sn1grfŋ?GpL̇ <8CY%!ӑ[ٖ ` ;|sU'&Z*8ٵyʭtO$蜊g^Js[]װ`i⋕e˘Y UO2p\5D$ \'Hq ,E+BR(6ښ>[55+r c FR9ƣfhEb {+ʥ8OK*#S/0[V6kUyc6`u~c9宩P_=~b:lxt,WEϟs W k/TW#69,:̆Y\+0qhʲkH'IC:CH2_ |Q2?0a]R,C~Gɱwdnf`68ESf>?ܯR95d-j:*ҁυ df3/?W%Ae+ <F/fN.lq7m{`IK 0Db&';`!"< Aaƌ T{u<6쁡r{ |R ikDf^8C \|,liʟ`3S]K1"=:r8(ACjƎW28w0u6ʓ0'W[ N&9yxxc:Ze SxnE L4{6P/ h8G0> ~@/7;I 6y]I!)x`S4xKkEFIR 9p< p~1) |~54m19>0Ss(C@F׍/|&3?[yv *` M& tyƘR%•-jYǍb@|.Y0x #?ŵ.ٸ8m]1<m0^&+08 :ǁ270ZDCR MX0 )[BPoN?U&z?71gתR_ho N7 : w`s!k阮*K<]7xaQiŴ.fHݿ͸1[ :ӑs`{͢M {ݮ g 9S<%fo' (+P8&qdAH2zulsʊ⦬F܆Pb+B*nC~ I(qC3Ӈ/ԯ]g33r*xu ȐdpZS/3U/.VD W)6 c8Gd2]\ H!9>W3&8 ,bbƌ]/6#PŶxfN;*fMU$.~Ppm @9!CAS-|? M9Gsz<@ d!\pܥ9I[ …WM n7y~IgV^qg+28t c"{*o`Œ#R t!zg'G@xm5|u $.l J-T-*o6G=~K_r0MfFleVJ3S_W4 Hg{p FmLnuj,1%Ox ؅&^'FFH+cU 0:*mlfCd~T{dKpʘB@ܶvN~q@&GOmR?ۉtl ) j Yeҳ i²& 6\37}x6 dxepCQ;z.[0x ~zbQƎI MJ5!*ϥRbid[u#SۜZ3UHɥ?d(w hD3?W¯QnΙ.T ϔ|Tmی@_sn{:6Y$v3dP9Ō^_)ǀti>) 's(@YU9RPC7cR\/ ʊc3 MH곢Ŵc[oYIBsVL+SCϊ g9AjݠY6t rgV:vsQd >jʼnz%:h1 }0l?&-3sm&x1+0u͔`S?Nl%Pk*F"(t'0U,$h'\yj)Zغ]M)T$ӹlr0]u1\0@0mN@om ~5^g6\߫_%.P \xcsk_ӓĐk"a1gv0V#NSO8Tp2!X|50\o $<>Z]vrvu]4 .՝X+ߎ<)~߆Q[cCfk*41tU~3&oָR=`"(ǧ(> 76M)ذ@:r‡K nju?PQoQ'cԟk\^o?|@JMy/೺:3u<7GO031yT7xj*TdgU;0iX]چ 1H>u-37`J !tCC:ft'X)>-nߖ FlqݯѧU^{d[gnZsphَ}A=,'NήYOm Tl[ [| 2UN?7T76.ːUxo)t%h|NeP^.s%6irx :PDT?p+b+ vh #?/V<yl;-Bhc;9@Υ3e ýޖ,WQ)[| 2dօQ__w'~b`@_XhtNdD Ha ͠,3R:t]"y͸mT͘ ?.Z]z8,U0wuk)^WuV2kZ'˙~;u|2w)DCt`<4*䇅16LR9Ǽ/Xx+~rQ? $|)/R 07dj榝D31#SH5|tFM?T˿^ыDKJ۸%Д"5LP`;wWLyȩnK_~H[ԷMRQ>0C11,b1]hGdpv] .τgnPxTXjzޚ R%?f]%jŜQf5"ߧAZمO3I^u؝-`lfH_NߟiX'kWbc#MmAz̟ _W{qv Ѡw^pCf+/#k+M!&FHȪL9(h De_l!/;%*Lkhۄx"$\/;c/^i)G˿A"چ!1l`M f*Os& F˹n[C~5e) Y)(\&S2팻h:Y/kLJ)vJ0!sjc$߼ /b(5W"Ţ}!5l;DK W6 u xH}MZɈ$WJg wZks+owү'/njŌVm_fE~9Vt~^^,܋"v]l:'̘*erR?bg^Htm{!<,.j@Pėm˒hdD֓ >ѶnPY1)? IAgc WrFSt@@GA$!9oRB/4^  8x3apV! ^"a6! By׸Bۥ"E*(hT[#X"4 _EDz)}|wAN5v=ssyxl-onǛ@!ݚ_f6' %% [T̛_ɛsd *F+ngHYϚ3@x|Dm^=5DzRxR*9M@TK(e#IJ_ .^K,_ 6ZX DKξgYͫGTtK0^xմeƻ\l-ZTI]wHM`v=̌0)Ѝn~;3^(Z[ ʉ$F;ҕHn6?GJbP(!b1\!RCO$#ʱ`h2;pĽaѣr A{8$%1Y19o_x.[LzCTm+`p;P DMdN. E %NyZen2NH\0Ȓ*AC`8PX=׵G8?k5&J݅+d336\:ML~/ko[ǰXugy;9zwuبRm̔m} 5%"0=M&t…(1o 1x'n%pzK $j4x@Oas ) r":hI«댙[N#J_&oj,@ |.Z~/|@kEZ'0#4+33ƚc@-7`V )jLptr5_Q(ajg d-T"40,"@VSW}4۷q$6v0b&/3AO3lgƬ0@wX/xn#׸冞۾sG| mD F;h0/dL$)aj"2yEDY>Y10EV9]ec:T̨2.p&Y-Yv&# ʱV\YemcPZjC# O 1>#uP? h -1Hϸ\6Uk,xNxΉaC>gŎwy0Xc:ao1sX7I%RO@6E-d[oM#"ϑBb`+` =0"P$kw u3N/n@X])@t3-a* z~`93 7=5N0!.qprOwj=8 d)Q:nj7vMÌ?Eׅt't44Un;1AjDA ؈9ĘP->B+c|d]CK/ɚۉ>}SW~p) ^:P zwѶ3]_ zYTr"*oMLˌ໰D=K^RY,G"Y$=vVQCJkb-dc8 L)`#նL]B#jbgһJw82pyS*{~tB ,E/tt$'ݦbD|Lm n 3;I1̀A>Kqp\V",``v_JG|˵.GQۧ Sj!eN=ۊ[]3oxXx#Ju' '=Su 1 R ʙ-I0W1BJ[EY3#>ҔnoX%lς%'c0ւoGJSC 1j0BUӝ@ƻ1&>B=􏱰FU$@8eI cLFAdoW>cY:9m7\|c3 K+ki'I qL~C*r@=}B4&OB/WygWfa)5?ট_ştAxF*[e_r@.γ"2h{C逺IM~_m"1ccb)>Sm(R=a |C'1[כ0 óC&6t-"(`"B IDAT`kb^[xPz)C9щ63 0씎W2VbV1÷Rz0 :-b81;VXΧزVf,5 ڔq\5:l=X*S`a)1TLm ?g JcB8*2H)58 )vD Q!X5eZP,!SԽ.l<&+zXaŌK0AwX z6Tl=2ێՄWLeGSj =,23A.]TD߿SojC{HH2X"hL| >B?H6aW!>z?~Œ36hzt)MmF;Le/~s/ȻV^ =6Hg(D ?:<%D&Rj Xw/ IPc[-LV&,Y6ͦfc#y8 'OΆZc (܁b1kj+kSC)S)v_] F g-|m^ηuTcűNu-+jDX5 :rGB!l.;epaU2=UnTƳ"َiiV R[:4=cqP)DbS,eX&# n[mOB>⿏dӜc V(`3t F:$Pl1LvA;INU0Yc`w"@i.c 1AX}b\4PH„8|AOm75g2t?U )13zVGqk X3WHf.T͐/^c4o"Uˈ(+x[%Y_js67]Dz ,a2xyKn+ԟ*~*aI Co3j:Uc)ozOYw?;ǜāU|c$~w z4vzՈTHquQilf[mc]0sP(+Xr^Cs'`x5 ӕvse3P(MQmR!0fƘ*ϳ‹.hoB+ ~dz^_m;0/ uDH:UN*6s!(4G}3A\oczhnJΊ<)͗߆}k->kSM=}*V4͟ /&BY+ q?);fFY3BQ3- +j.[qČkx;&ȟEp;^k#;LSuMn>۝d YMJ1Ih{S |}B߻O~f] YE ߬g6`y yc;gYَrϒ+5jJRJէB u~gٔzsoaCt᢬hgA43`#XMၑEBoTI]_Lrq_\Yo1m7$~(CD?ak.[F6S[f"=M+M) cЎ TM91[J0sP1*r3ƛu##ߓ_m[^yz}Jm%8ˬp27-jj* jLU7EBp 0>o&Ոo2tpS\}`5!O!AŲMwlE4=GRf-amA_p[058]̱E| C&I̠{ImU~m}♑3SEd&FSQT́@xٗͻ^;=Mx^Hٔ0t,x7~5WL:~ǧ0ge2aFj8e~RZ|mgOJ-c0 FܲE)XnKOe\csr{.K3fIe'\]aqbPJAkVZyΈ)$5Dx.N2PRS?k ;c /P f[y :$|ϖ&7hV8V՞yurP4WmՁϳ0OSVl>d4YZOucaװ΄vVIrT_ށjIu"7z׮O `s&RPJ&/ۦ;[6t#_; @8Ń=k_vMe,Գ~~/  U S㟘p%ӕe:0m[2+Ns-@h1L.b7=&ni*˜~ZkWmqYP8Ry1؎p$9M pK[k_- 3^& %Wi*fiG%Lm9/s_T*h2l;f7!%S*~:K*{M6<Ή&Uwl%v,5lca7qbX@Ǥ3a,9ffcꕟ.m6 7UrTdIIE(܀ͳ!  քL6>1~5~t~wo mkJY*!S2xQن~l9kЙՑ (Ԥ-Kb_$M9W3@T̏H9O rjQbϒ S0>9x>+ |vk{C-+K0)E-[㟘M/|&vDL*4+;(`:!&"ar&ej-}&~8.6_)5|n >BzlM+b $n^D{30tͦ2ҔǮ"D@4ߍ01-LZW"X_A*ZafR|Xq`uET,P*'OecqB |/|(vҜ V NX!<.ZD:e =Г<9>.,JQ_,l[?fG 1/P]6[؜0r)ĔuwȌ.}R*c!OT।S SOZffoEdl-SXo0 - Nsc^9"!13^ $0y}Q̸I `Su_B[~ۙ3Y㛶(W2o6Ÿ;]v{k!4m2alRr V?$h$06AuIqe!@~@(S*/T%+kSXLOnMC0 O \۱WP7XL*6L (_??FzU#[){b= t tccRS4te<#n )ᅇb<cN$''Kd4+u|27l(He3L^ZM<ɤB۰xrvB̈)cVv; k5OuxTwĵrNmSmH >HTMU`;^^^\o#byV ͽt}}x}`J(uʄYtA(-3UhηlDi@6`@!Ω1D+!n܍i};S9"x ¯P_@\`ܭA%thA[刐+T!Uo Zߥ'x:s"P&J{RTyX:憒%H3rt ) QlLMM]l ^L 77qC>߀ b`+PexzxdvN >¯ QWP"2eAydƟ ~VL ,~!sDAv"0.Eܮp&AOإM <$W0c~]@:C{ % XYʊ#RzcnEgN65]xG $ !A# \ "i|2|݇4g=4cf _jp!OwhR෹:= HnsS#bpǼJ '0)dҴ0eJ*Tb~?%6Gju쨸ԠT-ܕCr-SGDZ<6&4_%v732AxCϒ« \msyC!ծk."i|5~9 ƒoChkQh6|T!C6]l6?vP3`;&D)`?Fxq `J>^J.U7u&˅8HXj晵Ǭ P5(wOۇn\]hց,˲yv{sE%ƙ˘Fk5+BP ErJKnc+0*Nt$`A3pL KJa]qRp,R.^pO٪fFX&zR\0|#Rkshj8+PBAIˮtjaA®fʈ]!c.V 5)ŽuA|#sMmfdi-Z٣6P]S/sO-T3Qw=G.>*͎nvx;7EUbўϷ{)?h6m[#c^V*.)Eg8!VV¤tJ*!4޵j#!4+x&M`BއfImכUB^iٷ'm{ -nE [nIu,cn''f"(T4:й[9ҽ_CHQYS"~x`Yl3kTn貢bԧ"v]J*jOdȉ cx4>Du`S)P HLQUH-܊-VPCh'lq `ʊ|Q7yg{Cs7S2yY 8K*Gofԑ!)TnA/YVbu.BP3]N fAs|HXrMG-ޅTLdh8r`̶?"Hey'NP 9`LPlI/J̥7٠acR#!#i@ˇ B80ȁ,&l3p_&3]4tBٸ]-\U+rV\a#|JƪƄ| M ry d TйuYٶmZY]."Wm8bBA Rs#)h{$) OIÌl'M۔x͖|L i es۔?lzY mձ,)VdԞv-?SKo;% 3@%|9Bq&D"TbNr|41c K?aw*vK !s=^ w{e`W pso,>|۔fk)E'8?=ٚN9'Ȫ 8`V"gG p7xCBNųf+E9s.|Bz0^S>[hWFԵ bK|)[9|o[0 -HF0X΂ަ)L{YJM( mqg=np9aAgJV6H/l͏ؔg"mAq)Wz"3//E*@?I:&o8b˩H}擅Rtq1N_gƲ1%e#RJtvsJ'cFCrN%o5`02&dD v3ݵI'zIۜi1)opk6=[M\Eq1)ʥNФ]Ђ\mDd7a P) TMvaxfj. fDnd‹Gf5̵uC KYl;tjj'eL^lcI˩ àɼ m'l`UDZfG7q5%~ǔmp%HZݨS/aٔ"fX _|8fvj/s"}%'"8bnZȎJtr*sJ6[bX`jݙD7^ +3tu|-<\%NJͲ643`JDxŷ1v&Kq4v;DnW?3=.fnL.m.[܅mla" -1mc6Չ`9x49CVw$';\U={}R5R1Kr4yQH%fnN8]9Akztt|{, 1X +"X4j,pN9&#DȡQk~[fXEhن-.8= (-lI$,T~ך-z t$TdsJ'DK[qbXQ` E}"<*V3aq5vsvB|Y|̹gJW,ˠڲc IDATdc ;6Y$a~25p]=(4GX/ruZ HMylkc#N]-V"iP sms:)+z Z ƞc98)VKҾFYNe::d6n8Ľρ6M0$~ 9*tJ HbEHw&k)HeQ7he>wu|d Q/EbD@zo+ÝpFc-˭A&"tEd8/h!4b):K#55c 1<ua/Lj|k_++6"-Զu ԓ}4ۇo*?Lʅ7Iܱ\ f\Xe\?Mr;.)zaMY|kf_~.X]c\!q>ؤBLAޙ:?cM5^_T=sȔ+h `^J(vz\ 8aj2Ud& Zl[.6 RZY4}j}HZn~ |owMgM⢖B "ەEpݦc7"'&X;}c@TI?yoJP`^Ћ\Z[([9ּDօa\/ O_Vz̔=D7B )Ip3Or֝LLYRoG\V^=/ -|ZS>6<b Sy1"*ڐ3k@lnML9UGBtv .oV\)rx1Uv@c7 ޙk˃JFHPȄi=&%[q~u\lcmyV<_C/ g17UեC+S\ӱ~S*;Vli>b.+4R=Sw&&bP1.˖a^gD*+4m<@d@o`P[zROf(. @h3\ unɂj)LYlu19]eLN.- 4iɋC5`5+9H]M+M'`{l7Ԧ&dVb={LNd :@?MJ t9 *xNHq㿜ҹBL-P`/0lea=;Zoc~Ccx#5#9n?JOZfÂT#c`XO'G)~*r33>o#o(R/zDt,͙3%]ܦ@?v.NLO)GENxB:y{(@Xف`fJbebk0]Mҷ /r~qk+ &KdȠXo W4 el`;@@ʼntؑ8!Աlj*S|ŗi7ccm lUi } 4 (T/e_ޅMdj^3 %,Wb=JVB"T}.yWmПxOȯ PXcaDjT r aݤ/1 6e;W['ܪ?(}E1|$|TFk{k;TNwv;m 賑 S>P!e2$ ܵ_w],~VOu=9%hgA\OK咄iJ^_obOЁBEyRA4o r"גF М)\\c|f!E7dX ց)U{liџGO:GJY Ҋbiԁ/ ' T~~ZU,#BJj"X!`"\m$9RR8ORւ]OL%˄i)5bQ|=$.(" 2P )VZ}2:şJ׆b1ߒ}8\ ˩`;^-n<@3 K\٧tOpV/UN=@F;9M+DD^n}XvKjqM\lsa.] U\t&$ D6İ5_#LR YRb/ۇD =LSW(J6cLX $W褹w]\/>cC7"BB|hY> ݝuR$gY 3OglXB TNMbb<$>ic0% &=շ|1.ߟ*3J.kfB = ϥX d?L- 8}Wf3@$w1~-G*;B E,OreH*svfIN0)Rv~]z |or'[1S[Pg=':%?瓑P!?-%v E$@xMr{~ɹ&_3GO)k.͹`=Y-:VN] Qf8Rgb8lɕ!Jf]|wQ9A 0T7e|Ůc#BNyGYS \vqPrzؗsOvv}0bמS H㙖? S0Z(ܙS97׳,O|{w  ì{|ս-cs;NY|!~ @/>/q9wHgͬ<0p &I2h!${z4W7s} |RgBYֻb?Btq,9{![KER=cA)Y2tP/<jaj Q:spl+e"xG'xBi33>iNtqv hN)36"[.p,&^s7u®ɬ[t6f~|6j <'=^x ,-åRfB3 a1S*ϡC7nOi;.SĠ?Wޥd8}*9)4d@O9Z:Uѱ& ;F,s S0=+ P=9YzM{2A # ·bIsՊאPJGfscnB c.DY/BZať 2*`JӔſ 62ͅg:P2DŅlaOE)hm)Jvs~ky8p,O!󁝡y@*7ς/ePNQg"Vst r'Hsg /s iTR%9tx9Xd?61]]| [Ƈ;l}ϑF'zd?;lva;lva;lva;lva;l};vPyg{!x /͑(::ٲ!x"؍"!6-`r|'q8r}Bz|&l{> "8>#xGzxOA&0Tv p`>c4D_/dĔ 9dZƘ" hSvW‘ ,1 Nĩ<x#f>Q"d!Wy?ɉ}1?yұx b[#(lbHfL3ςCWx`H 0 b߲/8&-M,7i|yѧ2PkHZq1S{8cB8RqC;̾1#@DL*؏uB M(d6VM)afӕ&r}r@pbcnj'z)]1K0N=6!3C%3vPnW|l:+OIyU2%8V%f2VQgQ:X99f.NٿԱ~Oz(eB@SH,!0BG>{|vGY&(R5mc~Gʧ !^K7?S _/yėbǑ} \Z90ń3|T:J0ی*8¦NIT?=PM|"+zceY|hʸI%hasWeAJ0؅O.VX> cL ɴ3$VRS>JS|D>gJ\)cL"L1_I%T=|M&GڷD-UvIT>7sBDzXh(.T %|5mA(1OX6>u BMeb )*),w JgVuMqSuS~O*glqLŁ~҈?hlDyR:\ .h?{O`M 71TP͎eOS G#x+SN]SIo 1T+ *>p{)C1.OIOɾ훑2EaU>G#\ R5p6bd@HUE)b)%Lۧ*GO~sT#ÔSE71)RJ/"2[=))mm]>CD"L OXKB,=j=&c<c^4""iI*#JU)`cJc]ck1]H"R5 }JJJX=0uf0[P+x-`m,*M `f:ld j_LwHۦsn6mSUqbyXOP]eNZ9h)SGLw""ETn<$y_ekMy l`1یby"&" K"?~ԛ31z2S?GL1?'x{*T_K5z눩){ˤ,7ξkYSsl)m01?)Rel5c | TfԤ-*` [M ֦}S?%k/Ȳ un_5u[^)y{?/;IfsGlM%FX 2w05'f, kc1Z'HdPfϽ|/lzur%[^sVS/)r?X IDAT |jgD_GD]w(?zm[o6, ߎ0ژJW]% g|CWU4&sDT,Q|xv|:˿aMkgD0yK0_qgEHgY=>[S'+ 嘆c@| ')Qc%|Ϯ:xfxy1d_ؘԛ˛=m.͕=&?Mʤւ[/! 2wT6@47 SEL)0S[ - }۔oc!@j cyRj鯼0;Wgk>Q:.Y!俅Rj;/$!I1c^kʗO:~הTL Ec(o })y1D~ "q_u "Q]<>vPZ->S B` ݏ3lc43e=U,ۑpΓ`#:ޘ 8%_ɍ:= ~Q ]-Byq{ŀnȲw_/n1%s AhA4ۿ}Ц6?muQbX>_P<<>xX32tJֈpT(UHi<٠ެP܁9 6([9@eY,ːg9Ƅ3,bӿH}l[ju`koJj +8xinS.p>C盛|u]58}dozUE; 1%k ScxSXnoNé'e?ʋ 065{g7[( f4+A!eLA%2/%雡R .D{X=klVO'#11S2&Č408c0$E2;׳ŵ~ L8A}?糜3%%EQ@s${}3Sb7)(?'̤C6gw~)S! (ń줉C|XGbb H1bLk?ob:mJ[ByzwM;7||3/% g,^f`1Ɠ54>c!Zi&*o?j1X}{?$Ѝ{R>@&(u7u>>C ..M9f3, X.X,X,[s'M BfRj KPzmH r1oCA|Ͻ?~_b˿f˜qZGTo NcJ7) cyxM5%cdtn͏^~_WYKe:6؜܁9yl9tGGGI`{|3gڅL{C⌡S'Sl5tyTG+#Y:5`_n AB|rF*f*^P&K &z:ErX`>c\b\nK42)H_MJ͙kP`d ˘YF   "%3*b YH%IO.AOiVS^'?i&X։EF 5k/xJu9Y SzG*(^/|? f\<m6=!Emʢ(0Ϸ&d6d\Iҗbfh(5x2n2ᚵ3s;5D[+̰,( 㜀`cS.&,C5\ )lWfsYؚ)9 ڽX^J8I}>#lH~ @QϿMm6Py8:8ߜ&^L/ 7{/,n ;[as6-BLe[,=W/r̨zxe >a,>i/Ƒ(?8]>L]?F1 fNVjq˯.nmCtW.]'>ISӱ蛦قmij-ci ;hāv,Wo}6 }<'1/C᳤rjB0UTT>X S}tjvM[`'އ:z"#<2z2tJ/}?$# BOώϘ7m/:kT?|⣡yX΁1c=)zlV5kh TliZmq zٌWR'`S (|4> #+f#T8coξ׾- a@X~Xx R`b/V\{诡!0-r1 9pڵrQt"3-AUUheY4 _ ^i,fP$s/Qlye8^ E%B5RXpA@.cELlO)}]ͯ}V;HO?$0X6ɘJ ^(a# uٟ\qt7@W{fw/;>>ނNr :rKUU(UU*K,ϔ5R緻Ǎ10&XB b0t^eO8LO/Ħ?2K)T% d7c <}D?_?`VKX - \v-ӹ+qq7gNVUu+0f]"|Ł+01Yk'9gѐ5Ib 'UWas@b7|0Pזw,D"&䱡 Rٌ&" +B"~n]J] SNžDFK8:ߧ˲l{8?΁*U5^Leqlĝ|!M: @䩛ޅ_: .j^>bPUQA1pOScNQY1 Ķ~T97q6J)S#35S_*ߩ^g|y_++F`4U.( ,IreY,Kغƭ/ljlx7EsICN>fB)5S"H&G2"^>}aC|[ϏHMYMPM{}XQHMjJ1 ^k~սށʳ0^³4/B!gb:9]^7JY+w~!.Gh 9[,.d53*bVVpB$nM)R8i(b`hj .l5~I͖m$XIE=%|es3{syc yZ'gמ 3II4 ʋ;]۽aˣteHDqꥋ9-_Tx9h{w@ܒ1`8gb<']ך%K12"(0 1p&+,1V*lB?A%xN5[LyB VŠń\l~)5Ayq4U5seʀ{9*afnT緾ޛ5Kaȼ[Uޅn,Dc`@b g(㘌/fГzd7$P"0KF[Uv̌s\'ω[@uwYս78q?*xu}90Vڵkk'hBXn\·-٢ ϛEfyλ/' h8Cmx`<Uec0gp g+pByLP_y5͔tx?"ƇԽ ǞnSBW>}mљQKnc#1tn1N̎@wYQxBTDC n :9BZq?kW;@6__6u v5p1s|&;::Z]F\8bVĕlyKncxy_1LUXix13D1TzMhsp].Z'@a#86N Q/WG&0VX(+ק*:׿[ ֠B eIS(2Ok+Q>W7šֽ4d %q/P7GxH䊉yD">@imE 8 0nQǠnᐪ',{spN Y0M:s?fƎi\r^.6/h0! rH&jvÓDoɺ5gwf ,z9e{bzsuo/[zV6UUIm[އp_"`aH>DS5Q]<`}:C'zJ3_g*l̀0!IPkl]`sR#LT^xa&]čĆrxpō|%fU)2m.N~I"+(c:2t2m]u-ۮer#}} yܡidj]n^L{M6cΌPH8&@x]7|ʥ)n~֯i%θc"ZSHEK*#q5X9J4جrUyҕƌY Yv@{v:Ó}g;>>^.nu w ˿t E8`L;#5u913f2%6Lݯ. v-b4x*$)W0+V?sh[lFiK9&휦+t)7FpF0;{ OT'O}o܀B۠xp:}uZ!q]yo.vBXkЦ8J-Z{GnPwj 'NkUX QQ<]oEh^gH,+'hc=R[S0qkfYqKiS,?n6Y:X WTyL(@|X`q+rL$w'7EFk'CW%}@ɼNY;߂Uw]/md@colXKG73x$)'gxlY}k9Ɍ]U&OQ8߮% +z.8pŌik.KR=ELuA8pHڥp ܈m<LZ Ek3 CKmu;h\i_/1˦z^*s]:fƒ+K08` `A%Y5Q?-酩. ܟsx|&8\nQJ_×m I4 Jgb" zU.+wte0@nFEggJ=+V:61nyo!ϵfu7B`4 ԁ\xG}UICk fmyfL$~hcɌ30]b)4AֺJ_,W⛘m6!< GWϳZIC?3ȜJ@zm)@^VG52IC*zPңol0N{bO\z>-A߻=d"GDH[OO7dŵט,9D?ömjzL\-WDjVE6wMv IDATTsk%$o/P?'WS繵+J0k* !^S ӓ^;Ujk&Sa9pW)2uI!bKhzaUb13`,9|?y- .? Ax5*܀-;HvqM!op! \9\\"oQH, MtUke\\oj Qmс[Js{J[o hLѻ}AL%ro"dSVŀ<tDDbe-R2tljAxz$ҌgNh͔iruk,MdyM|^'r/dK E ӀB)gz<[LJnBd2#%B~tק!PZk1"Cu%4Ty:9\N#N;%{OA"(p 4x#)"SXKsR4L fUFH| (o!@9mtz(/ wglH)g-xCK(.dž5>,eރQr]w bg"^E<7U35nѮgK/[UA>b݌W^tmr 4TcqL{{ ʉ ;vżKRЇ792| 4`咰iw?$,Mu+2s <M9W$f1SDH%SlX9Vsr#8 *"=6Rrbh 4􎿶v fA$upr0]Zf9lZRtsbn ejh9gVK>cX2jyq:uJ-[ 3L*F^G3'1M9Y9KcEWȸ;?NƳAl$w*f\fj.a]J#X`~5`Z ^cr־-~ޤRS4͜‚qR~7ӈP+OCBla>HLΖR0^ŦU[L*;^xj$R +Zs]_g{>$6'b2RUJ%@u(T!',/`W$UN6V&]x5<'af7z6گRa vO $o圲CJ*3FoE̜X+gF_\C5:ɿL}=- lx0~-^ͨTOa',;)wH_ UCj ).%r|9<#H\b=;$7!y2iV\o Wh'ҰIeՊt7]aݞ+c f?x;}w֜d.7);9E̊jt4$Lx:JN@Ik7_Q㷩RtIsn0z5Zk7CWXx퐊g\t"lRPyr~PǠiPkݭY]*kbiȣL{X_Y겊wcKNT|'ZdW7a+0^\])^64hOdJG=Cf7 m?ZF-^*,HWXKR eR@Nnn7q9)FZoxΪ8SEr3<ap,i 0#^ PpDsؒ9&K7r)#Z%Š:+g gRAY`@]ߐ`+JHSԢx[S4 9-t56؃&#]2NZt)=D )̸7>s'@#ol&x,CȰ4(`!&B@v"e#ELQKW]Vpb%M2YS9ku5S"8- jG:O2,IFJoY`gZnL6aL6 7C&we0SHE(#he(gqIiM^ Lғ"2xl$s~09$ߩ(Lu9)dob׶Ķb>Sb_ wof,%a`]ܻ^a1x@ P.u~\3@3 8{JS\\*4`8s5<\1r5K#tZ#A!Sn:R@{A>`uNȴxL!j/z`6Id)K2)ISٔSPݨa7@ȍ^xmgLI>V.1˵X񣘗7%'Mv;-7B*+T2it06U6H?X*(4DEy@D% G4Եo0da6wVwl:q/A`#` ->İ+aL)z vI1-@EGJCNjh]c]­W `-~S2Y*S`wSr~9oƝYM|xZccaTfeYϱ ,xSB~z~72J<PE%@ bzR +rKQĺ p iw_y`A4F|"̱pœ+1m(< $Ĕyce NN0 {98./U>[Ms;g#gRC+e 0lZSp|I)ȅX;taN8DŒ /kZ#R\]'&f"*4FLy)5S&NGbZfNR1y`fZQs̭ HW\g1HripW7!.ZX :*9 R{3SS)qJ }J}[!#Os m^"& ~߭dOvL)SIYU-db̫D00I\]$=3nSlnLV㘁ٝ⣜uXESF缾#,\uE#c(Ifo^_-^oΥT /eR_.4WrOfҕ?}"0ڕM eHÙwz*n5e Ra.T[Hk^S$)vvK+Hn;!k^;m|ފW|q$rv9iwRc&M~2͐*6~mOTݞ!gH4z>Ȧwyp8,1O~2=/[1᩸Ha@k癚W}ezld.˅]l&3ǃR `X _y,7gFgɇ+AEe8OgIk %} |:?5*{l#Askwuy"MNhE0b ݬ=`%O҃mM`1-#cl''%7ؓ@=Lk?KE3-&9&wH֣伬0I}cAQ7:aEbx0$;D29K{n^nxF`l*W\Щ4$cryc -9 N~A/!G۶I+%=b[M$B &e{AOۅLNYQL߼wx '2ZWNS^? 9-^6BɹgH'ϭ&SI,0fjsCK4X2-ϫ;^E 9P51-U, f|^tpD#r Uɖli2ej/s5]s!rTzvy?ЬGRD5U;Ak`Yo"fn k平;X29<2JYf*)VYX^WpuUs'Omۮ]N 25%ǐz-4hR"z.Dnn]IYҫ gI4H+NUEjh)H)b^-S\xj8˺Q"7J[`xNܚoJ!s7,m;3U>OX,tQAؔc ]tM86`<`:ʎTRsaQt [KUoǦFC+(q@Jfr;2.%C0>َ5N?l 9Uy`,,щ͆l삧  Q7kc b]ݥ>Ӳʔx^Pf ƯC=$j+Ud-s8³ +Ub-Hw'lXJbj91]aI[7s!h6Mrj`}`4MYK`+zI9=0RH&T ye*sVi KπT~A x?xUlT=[ۊ~@@! he\xpx+[8 frN߰J쨳z^۶[@bx}0^`J,Fĸ1Euc͇IW |n@af}eezyùb 6ѱPk#-Wjb<%W8`<&׿gzŋ],u}:hvБ,T%Z>`ٺ~MݴRu~͎](5WLxTѻ64Ax e7HYZ`Tk,)fy,оKUHk)l6dJL B[K)U`s͎(;u@$`[1g1gT]Z1Z"9QSQQ%SEsw%xp-@3֦.sx]t!Hk'oG{\AetJJXG"aRe:NxdJBy:4Aof"8Dhgbfh[qTr/m%Ƴpg*f@7 ·tSb] S | |tY `h]KU*eS0Eu}{Wʚ5ŠpQjTLH EƆYb %|\^R](IY4;:tE5.taE\GDh<E8H7A=`a,øSun˭W%? IDATX.Yh^O,[ٝa ^2`wX&侯jb$Ƴ,/+a ~"`.жLc"Wl'm ˩)d'` R۝XCrxK`g3׽0łJTB/ttXuo9 ?fL ɾy ɘ[kl! s%RZ?vRg˸ųry.Dryz ,) @ީjz rQlO~3FӰz 'Z=R |'!w}S 3YIr<NN #hlWYcT&*4,hBQVOHz-ZNO](D/V Ͼn am qz`3Ӥpz`wfE:!kUm))ƥZzP^ 5-> O~uhج]ML΁S#dUW*~+reab lw,Į*XNh)H TW⹑ArAŬ:J"8Wt>ʫRI{&Y@po{I-9YulP1ff_X.?]对="s} BXlJ{zl[VQjکp2wI|3႖ YTgp|r\a{hRJnc dr(PIN>QS*&s*4Rr|<^?n<.8 tQWL// *RxT^e_ F" }m"2$J0<93c 3])S܌C13ںvU\@E/'Z(6nJhFh=o:< $R$Zw9I9w8o><MZKKH0*6ǜy ƒŻ~5k*xKf~F"f+IS:]0ܮnW|̿µTehNjVS It 1N7ee@ЈBXy8Uv6p8뎟|ǝ/Gt'`[K]ޣ,KEº,`M^.{>e"hp]M9!cKҗDpZfXp3͇~wɶzָa.'T/ I³ic Ħ kD^ yhk(L #OaqB"Zq tl[e8GN(wcq/<7c<W,Hw=hiަ ]N `~4A%m=%]A'_+9(7קخl1l׼_-R(JJt8AvDRvH.ܟpX$ONw(8iP9l\Ip8Uɶ視KgYбۭǭ{Z0ok{m6Ȑs 4qGt(_Eh.U_^.晈½.BlڒUzblRCx9 -z,g~6"z0 ߱XTӇΊ%h[ }l.h_ lRK*5+P12no.0`[B-;͌*2Q `PxS>'$ UՔӇtͧ|M.ܬ.@\Qκb>Ff0"_4ɀ eR?)PYssͪ9QQPTx-˹s.IXhV`R6=-HRZR,ȴ,յP`a@|YrV3A7 W rEEU [S*ϲS\1Y' 7EzX. Wp;ڋD6/uI $r*8.U %Bųa ڌed,PV12=`Vs@hP_!pMD "*n3cK*p±D 9՜ZeRZ^SGDO+=\u`_C 'd<`)Ȕ"9K,@吒ŦkkG}1n%ݵQ dy`^܄ ӹ́ŊWgi."EYCu*f'[?㗪谘\UH t9Re%zFx.t+Oɡy/3:(p)]*P"ߙ]Jy dܘ#a&c2l0۪d%l$YL͂tym+W5\//h]*DaWo+m,aMt j͑-:9 7-"(sмОsx,kwMX- r5 /A1A)97OѲ TmCl%K1mgeAAՁ;Ah=>LKoky@oshv^u _B*ؖ J-1s$&7hIazSjF<:Ж-=L,hjoڎ)Ahs5n}RְK>VAue?2}Ԭf.Q4"`L/)N%]sg.6{,94`RQ.^/}t.ļ]JOaW.@- s/6[ ¥KK^^fs!bB9n%޻#V~!?gU,:@b7=T3X1H}8 K2-B;#*.*`0ypo1w{װg%rfak/Ȥz, iKlh4ZG*gԔ f,TFW<'u \@~8'W6p֐5|,%\!w9ww)S^2_&[e^>6%bFAV9 GZ>q^̚'r_! NJj{وA & /JƂ?Kk('#Yȅnѽfi/XNP#I?.fʱY N@3ld#1f=lfFeF!dj ݖ ̞}]xP\q@~ֻ{}έw|OXTð2^H>az`=D,&: NdQN["z%#֤wKY8++ 8k]Ʃ2b-`~(:Nuczgf\kwgD Ds*7s7R&As|%3/^Y Z"I,Ysol0AmB$L|I/V޼ZW#-g9ʝWu,v=R;ft+cM߁HKsp(B} GY` Urjm!hxS`^4tᣎa7zj t^r'hC >8gxM4.sFɮXvu(X1y@M8JeY\TMIm&VN-MxULG@z(#VLٽOtWX*v@:GEreX?884h.'ҝrS$N}>R#}) Ԯ,Xjn-#ct~O)JVPX.H kh @aȸy .IU7 o11)~ͩ E FY6cƚhS.ML޻U;ȝZNrV 2,n}ӠY!CJ'^OW QG&`S -u_sF l{e#:*D3rzq;pqm3o.C~bb 8%0ȸdXT%NPtlb*k r)V\F\mRĆ;}\MӲxCP{li3%vX[*AR) EנD&~}P$/w+R<Ű|%^'XXvI? H\˒HPZc8wV-lXO6J B.Hd-F҈ ڝ`7: sjrЌt1}޿)=s`(h/v&D+w&bpyA\7%SD kՊl%85<H|$`lX!=IBnlӹ/@{_XFNHFۥj{}DV&<WpLuY)ARle|ZLe*.5E ҄ RA<\ՋV9vϙxyoct_N&c(ފbYT"%\O &P)I'qZeR}wr;,H1FX.pY x 53q}(Y`+6D]%Rx {})0L dA87@+ ?ڄt);v"fa}t+ .qXSRs\Ly=>bvwmc:9oaҷ PqvՄ\v03xBƲpt2&AR+V$J2z?R\=ZPmjuNh? Y?D X$;9*E.1lkY 'º)70Vvd'cWtc,6r 7@Ww)KVWB {<K@:)SB}$P J@+'s c-r>Z ,w %^+nD\g؈ca.O&%*r':_KKI=t7dJD8nX(>0[O9[R/0I ebQbBU8ze%64R+ ^~ۓ [N \ߑxމAw!+G6c @IR<؞2y/e_ҵ1(wO54h Eo9 ^۩M`OӇS ZJbKg=XNX7`#qCE-1l v,r\wy *fc:`{ x'RbaB˙8wIsኞEL0x{LRX&iK` IDATឮ]QR%SDAzMYR)an0Jc6Y?S,ۚ 7~ 1σ0%Tnh-Hi`wv,W*WLPXBota?fFan+_G򈖣IhuJs[z["=nذSJD'-'ttVs iI.H999 'Ņ',Jưqw%bgb@.X`X*UL 4nr_ şU+׈ EtQ#%d6b]O#E" w@JFKxaWb ^W.e$1XMZЀBX"Y0܅x}kFq3G"=o B R9~֥b[ 47xY=֘m/ZaD]9Yx&b,xHA{,!/;½_͇{E(PϿ/,مbGklԟeK#ROî?gIgYUU)mB{1YՃI Z "f9P l1n,$`$VvI5);ZZLW|aED Dč1o]BGLiD z<ߡpYbQ̅Vѽa]k[a7Aa!,#*-ǟօ?l O JOy$ɘ,E؇8T#Y+Fwu޻¥+˼&qOK\`d?@ Lgѽ~ jj9k]/ aB.q,";X6bˆ9g%K :aq?>4 H nŵ?vYva)+&\􀑄 DzJXV^-6X[{0(' 5Pps"Ek?1x&dgư3"YXFܓ(sxea#O1(a"s&>o R01EA^b[u`#=oV~PPWAŎҵlz Ū?FP0G">;$KpddHBr] {aJ`=(Ey=cX73 Qz>.~.QM ۹`_CTxv'x*D,BdwD-R)KY pC!XF(3bb=K\Zi=* gZV[+*Ɛ&VKZKabO\x.j˧cD Vݑ]H4PxHD`.AeͳcOQe ê`c?ie5)ݠ[=>)e) h I%c?c?c?c?c쏏/ ``J5,K2sx&x,,Pj9G1c#7;=z4^c倓Z4$M'@jU~G(`g6 Lq1b(`)ygɹ4b Xx9RZr$a:բMuSjodTjSpi"62b);,˺фMr%s 'qS#$|vT{n ]"'0gpHX1D=!ޕTdZn CSK č&oMdo ?EW\7eVlRG*Y;Fާ0 ncD2|Tk7՝Q ,0{}B˃&\5cD:-<,7ӊS-1~bA/NWuW CԹSq'b0ROXO<O(zXL/bYZ+Mme#>,I)rRV-c}Vr,ꅟ2AKX0 ]#El3N!`ƃ e OئvvkWwv=nk3ш}>FcNpef#%Lqqmm(>a x9~\YXcFs`ęX<ʸ)+$c\ԟ?XũxI<0PƢM>XmNcS\n5˹ F}", }>U⸜L-7h+2 αfb\r;l9H'.Hƍ'q wճee1&S?7G*mrx0bsqnĦ#Vح{B|gY\,cnX|dY?󊣕+4/7mZ#F:#dTtG9SӮc`ps-#6WPP|\jޛڒdakGdo7f=6=KkFLJ~t:֔ rJ9+GYlƜ~L*kO5fWjruryu쑌`L5>( <U߀<1Jf$F6劎+y;~}ki:|[vŮxjs_SJ`~єk}]A?{|_!] Y2ƬV(ą1["9G 174TҤ{O-~lUMWgG(4$zowOFRɟlٺ0#ktiQ8&#a"ORVmHKi}`)}73l.XC}|\RG+@DR A"̰YoC` @*;SJfq}6ݶbK9S~,o] sH΁,F:O>Y]~lu!۰# M)T6uwx!WfNmZR6{GMfӮ1ob%DcbB`\;X76xCnCY4d~U/?3_g`-j=ԇ*`Z#˲ow˲8gBĊƸC='ľ+*t?pCDMM/%/Kc<*V~AWj3V^PpEu86U[ϽP/J`ĦF8Ayp]d\F <{7i `¹;W1.c1&ہѹ) H,?|{fuO:]t'BMc]!؎?T f3FN%\Pʮn|-t:7L:NZ8 ^.::PIWQƘsCVoBDz: /?+ >mUm5'.EIp >vQZ>)XRR#c:6l@tk>o|_ ؂Auva\fpV9WE@c:T1b6IqVIg2SV/~JX7i2t)WN!5@Jq5tc>c6a6u@t : # =2&da&j1 EĶ˿%?zYk}h`ʘM:G|ޠ)Xx-tK*"JV?f"cJ<݈-˲9bww|&ITϜ5Z H%: >fވ'%B }!jr]-Ny2X3X.o}d`b ubīPT@j耧W٭g?Mr%VP6e4sd2t:l6&c: 2 4-s=`Y S ˘Z)X0 3J XPДۈ8D='7XkQe91tQ?#PI9!&4ol1I(kEN+,܆%nLwo=*+6OqӸ!QXs|U4SJ!2L&f3ts%]\[6?>jH(Şe\K YƄv%O7̰,jXp 1`gCΘa״b-|W玪̪WH߭OIP}ߐ7&}1&}:bUU)R9K7ww?7Ig ʃA8mjߝrt-)K S=Z\df{2C&e-hiY>I53Xq0*"2\b >H~OeV_cReBvGA$,]WE…>W̎>G~M<ׂX|2 }NttνoFUU}(cx0nƎ(/g{p*l=X `T -)2xcnWؗ,lC.uZ nl-8s.B x ;`,88D_rNl]zsAd)HR 9 ֵl,]}Fˢ(0͂VΉPqijBY(ӺƧV5~nep6(ZLlUTȱhǵv.90()X C0~騦M/)3^ƺ +2̥xHMs8dY⑧WOTVsЀj$R֖ z(G8eju'+WO^SX 8.r(p1YƁ~h'? wV:aķ$OkbQlq,Cm,6i̿'[4 vaǶuu4RBTp#uȽ$3ןoHέK;9@}p'"$Q$d<aҹv /k|4ص -}!]:LjAyB_(H9WA6"bOP] ,cb6{`;"dM'Ρ)Sテ.n|ѿ`>[ɠ<=D\ :s.s_2s䉳t,n^O,8IKCaБǙP͔i X}\ ]Y_DGA`MBn 3^jvoƬA~|$ I%4}gS{;<; H1(ώQ6q_ss.d<@ZZ5>`8'Y#L%aT 11,8ř ãBJbC^,kmS 㤡!r})lŸpZˉMENxcK{[\{H6SyZTtZKt{{{=}N(2s$jnU7k@`톨d3MZ([ۥ|w@P`d 1pp s&Dՙ!Qw*fkd+q:-3[4Su]}S40nbR-%b%C?0n@6c]OWϯ=Fy!j>A5$˝\pN˲lDY. W(qp?peχ%5xk O50#`S`mʅ%j2[ &1x`#EFYgpXkAx WSd2n5["?`Suj s<4?Kq,D`wSwH =-PˠF{,\r窲Ͳ.ZǍ%lHbƷ`Xmq:9& [@> YE@MjqfR5$"\  $b"R-^2ރ lQ;l '@5K G m\DJکdjy~A&g>7q]<9^7эۺdgGHй2lGŗ%ēevۖ堀F IDAT-^׹+ĸG * B=&׸EvNMAgJ[rk툡]p 8#Fd IU^N1+\#ux) VE,dz: @Mo}Zs"u2t1(bi`~KvvsRj*(w}E&[l LMOvnlwy@u#:&UcAeTB 1q|!+5,>-3sm \@%-:g(sTk( <+yM!AQp؜g=/|3 htu"t%̖KDRrڅFc^' 2cUK͍mc2fU-໇>ipXǸ~^rx@l`ن+{Uk+x4~^("Mq [SԿy c+pO9!a\GTJ*j0'y+٪fR.rt1O׫Cᵕb;Rh%xpx,Kc!f0&M 1Ct}5뒠D' Ղsydg-["Y")+3rmcBSlPܗ0L5/Kp7`JU (aB`sC|jb`CgJyFļ S(|TNz<@YXSîZ C8d,4: * v,{fq*a(7K1O=76/F )k| &'(PI3*"+EM.vf I aеC xHN%$mɗfɆմU `6Td3N>j7j[:wq*j:fa u!81PO ٌ;\5߅RDFH N#J1:Ig7# MuH;=b5cE*D~<+!b]U -~ Kp]1Zp3g2}[!SP1{0xYaƌ0A[0BqKb9Ǽ.Y{0WkI!<\T?$f΍c0u"%ʤиGc x!QRoUm=l{aժv"Zwr`tWL7Ѻ5-F^ ubWv%<3>硰zhgD8b% nyCnLBH1PWc\U.]Ups{.Vn]Kw|s᳛l럅.*s .6H-ha(c,%t,6bzUUɬ'Hfa UFs`Lqr.PudF +⨅ @30Q?&`ɌSb!GpM+=_X4ؔxk}4%68iP,[sE nJQX"oE]U:{g\:J쥼Pb[g $PI`e?'^_@fs]{ בB1"7%[m;C--2r/|)OWn(;!φ2E]B0& D1.cդ>9Ry`XwiȊD{o-#X%N1P̸:Dݤ`keg%',iqBFH̸#eԺ.gWemھK~h l7yseƹu-C T0|X ā)xc \MDY Gciy;$ky3[1ck^+`-@[d`SIu/0ârKoM/T1T:ˑHGh+DvAI<0맩ڍQb,.ȏ_<Lj ~2*P? Pw]\c .A<+v,oDY+ǁʆXGdu0Neu #p70V_i؄"bK l$ExF Nu-7r4 hlWX;߀ŀ~GB'!|lT[ C 8紽Siy#!y愔"BJ⹘0ǖq!曇* h*.ٳ:B!ⴱ /Ђ=DtTM{H4[tnC},9XE& PIY1cV?yONfbd &` G!z2Jaam@Pw h HY+]|PO.`QDƵ(GC3 6x^R/)xk|@ۆKD=$Wt½>6{;y8(tߕ l\9J0U`A 3tl|yLu6eRڏ::k 'dP?ؽ-9c:Mo#C}[j ߋG?耧0Ԟ0FV#hSPC>0'"MkD;| q.@ .-PqpNJub>pDmZ7 6=O=fN/ N%Lf| l3E :tB?%4RrB4Fr܆,߶}y*mOLQ?ƌ0wtTKɉZ)jx Hެ *W8@ugz۴~Uw C)$[CKfI!|TVxNmzAIV%b<T) ^ⳣ .5\uˀM '>۹/Sր2B!4?w^;o=bNWd[FW7 / %,X,F10)g&m:bZRYAJf=k 0&D# Um&r',bisgj a,t`| 1C1y15c95cq!&HfMDTqa}+gH#]M\ mgj"Nz_9uLY7 AfL7`,zrL#-%݂nbLƊR37-ȟ5( /K۶&P#WB F`v|=&K<b8p>oUD'12"۱ JB1\F?C@>ccz1!iG2Z,?c> 9[[XÃG2MچlIl䮱a!J^ra3fq^9"^P1Pf5#}h$\*ij^T}٬4cHknÑ,W^hJxhZ[n:ArdBZ1 DncFBX7r[.}(d}")4K ocpГp3A8/skkbG=WzAļOv_<[S7-Ze6!h74]\H,1Vn; .0y^;fs3JK@x.; `i<1qc"zlت=!4yhHRK/BT"TQhs0mW YA8A/Iff32m۹cc$b#Pf[rr87DX$NZ.o!\ÑM%3pXM&B O.d) 6qlMO'"Sze-^PΘq*"o"uP_3yu xZ3c2iwbRb]D/2nƈP  $L'̥_S 63ٲ1.^[)%ނҲn'k 5./:9q 3v'Ǹ1lL }L~K ]6!fo+3& jIi!%%C1]6g݅@w<g!v¹Lut a\JIpfܥz=Gauwɒktogs [mļ@~o/ TȭTYH IDAT!lȔZlǪu-7&syzĦ^t^eЅ]gFE%E <PxE[H瘖dksi'nAMVaMŽX]~_P  "2Fto͔ŋڒ%P_ .5l3[lf?Dzm$!qj8>8sh,ccXR]gln E[}68ayhB tnZ{'Y(!+liE\cDj%9Xu.\79rxEwY'ђ΁Ϸx%wᥦQ`iݠ ELJnSArkuyݢ{4^zf}M-wmFk{a6L)ZY:k#&!(=8/TAv۽%i ݗ>lmĥ+P> y;WW{,7ջQr^y 硑oALCY/cPXr3LxtWxЛ67"XLJ}t:!?C'yTzHK;LK,WT'}@Rt7P5h{MePn2yC=0c\C(3y#.6O xhyg Mގb%32d1F56ОkCӂR8r$6[?uqkώ?lnr k`rȽ-̸ͦ76n, Cn 'YݟsM7mc} ifퟅ Vd&N I x9d#"wfR]w\e׾GߴK1m0h53^EEJkGk#Q;$%:i5$\9'lv*T8>Y0o5 76+_3qEщcj{g RcپkHebR`7aBBwau З4yϲIo3|&exL9]A֐*ܸݞl{IL%?m<Jx칚XX*G4Lg#y~LMk>Z^a,aQ1:i3[^xͯw]=Y ݬ!Wp)ݶu?c +Q+4+\LqUC% 5`R\&$(}=Fֽ="6u`-#!aoj: Y!f'StIX8ѻ\ TI:k^dXX:%2fԶ!VptoFX*? y,e,SVi ի |u`A[/Dm[62$dh ؜s%AV0Y@L@|kjAxcp!Ljjoo" lӃ,׭EOȧ=V6#2ƠՋ^7l%{lcmkX_Tβc<7p [5'VϹa*6 ZxC{-~ucz;LބPkϙtan#xsL֣Lx&6t֏{he-o+5 Sz [yLq$\K~GN!cVH)a z8xex /p8vJPYozR ,]a7$~8e"e"ZvCSBae';v6l 0IT& )L[.!Ǻ]EhȨrGCkOZЈPIo4U2Qud f"Rn5M٣QJAk+_t9~ mzQxT2^ Ĺ¡=VV{c+9dPJOBŗ>pƒ_yj׸V}  O{߰l!}n z#Jhy9 eXd歹/:e0՜ʊ?5D fD3хeƨIwD&5V88iI\Tۙz)gQ #o#^1+|֨=`n.1u6@V))n3B[ @p(a B/SBHuuNڛnNtGJi?yZQjOZ=p :>b#pCXla5suݦJ/X/I&Q hW8M2%$e-X/sfN s/;*AHN3Ž^(C8.^V&Mv@k&0UNdɜ ԟ/@ jz:34G! 3nnHG#L@AG8âJ6ݖyU4%ST`Ze.f7D{N3\CLz՛-p-m{Jx1g od(kfE86|h ~udwռX ɦzzLVNx@kPgC%[lNc$pLx[81(LI[74} B'7SM6 /QB¥$mjo h8*!EGBor]Z9K_xĊi':XX۔jV? oI9' BXJdgtVt-:CJ5M 8If|h"/[EWL>Tqz"\U"q6 7FH=~s< ToZH+?`ͣ QSeހ))ASA8X kWFa^L uytڞd5[r!LPsҔSgHu]YP|36#je>cWI]Ix}7V̸D C8hicϣ~.4r[%3Q/ͶJȚ9|\|GczeJ٭Z2v ]RBRɰb5e]Qm =1Ȧ3$8eM.){C H5Vϔ/zKD^bf6`F UN8Ia\ (/@א97to [PllՑ)1@cǬ l_OElSdtFvVX@sp'G]Z<u)`);Y=mo=V鄲bV#[[5Zl -p(w`'d I)(2pFM3 XmmAtc*r|9.j/ٙXη+f|Ϭ[b= P@.nY:\iug}K42jR |cb15*K4p_, Dўu)MvvIy鮽iF!sՂ .(gV/!\''%ߘ g/!t@h7+|V8 s1΁.~S6YZSlk.m!HJ=h@MЀ(bH0c*ikHkOvnG5+Iv0E("’w"3.&C6D)00&! yֱrOE*p˒nϊ5K|ٖ=ЅKZ:P7a!| g5ZWI#o?e oN!f*/ w sc߮#TwcS*UgutP^XT^xs&\" A̴ .FOSp}u=wq2I(H ?C9j܊p]Y-KF'_ ,߽L*Dpz%Tdʆ$2fm )Χ^8 __DO#-Ҙ&QԹ**b2#6j7Ft~ؖؾ[,cB-.s9Ihj,swHd ~}zVBgɓR<=C=7\$46e3Ơ,d(z.ǀ3"|McJK$g<nt bS(\ *lqjG/jN!9Ja)rXׅ7ܥ8wƗ%^`>R-Sm43eٜ9U/Br8&r*x)SzG5>ϝIk}5|h:#E4 j2{A xt75|?U]9ǣ*oJcjy%Yr&4;zWR{}m?~ܩycB⪗~X/-qmZmnp~kT1w)p#kkv:+fs ~?Cp1C(NK!k)O+/sTB lMFڴV ZRth6&x-7Nc]{5(W6A@Pm҈jA~)dB BuWlCk{Uc [88UO*}:HQX.=n㹖Rex'ʄBC*SºS&~;K k9/yL[2(W*/ jҨ{^jAH 97g[x b-+CPY*|Ϡ$ͱVnɸ$+*e_Kpjb̮5I22X}4Cer#NB%dH96s7~ sVbq|X}:CZ P)\ё+xw=^2e lu3fqCid#x jX[҆/#ǥQ7ŇA{ tEM[kf"ejLhjȜL)+s_`ѯN2E.ސ9-V໛:T,1uma]~R[0Pҡt>\Jء7йS?s#)kS5Һ) OIÌ}6n— Ahj(e$hd2U3G觅ƬEP;x* vZ{mu̅[`kLtJ{ư6It2c۳/| MK2K3w\>aW p4~sm3{fnxMMbGPt|Njz~ iv%* .DlW Ͻށ꓅H9Xx Y=?Ex|5֐k`e(wֽ)LIa}h$a1Doà%f~q/ڰT3By>ؼ]uF;3bEƷ /pSE: ۘrBrxfj4Yp&\Zb*1BfAO x!F +' =S`-W˚,܁$˩T3ʫ`&m3WjcoƁ5`02&LWMx#0O|sM#.%z5x+|^k0Mxd{mlFE,3%#zf9Z!UN];"bbqȐԀ3-Oy&l !rדL̪:A( =11zYмPXw#[M[ xo'=Q [жG9oƾz /ŊdlH蒛g'lV?$Д.Ix&jgY4-Q/g:}JS̽#`_m3W bܔ@^0M)KO.Ќԟtn?b aphkT-HݱA1 nM ؂6eɌYᛦs?b NQHȵIq|g*)OQUs2YFpi 4fTwt2tbʪmb@|\b!uFʨe]͖.tutdr\ ;P+\#z~$Ђ^!,5gfBY4]ʓ%/ώQK"h4IsI^T9ڹՋo %-:$pdo FЮG֍j(pPDVZk/֞(P 0dN6EEK^KU-` LnP>e#֯35ZcMY׊! %6y [|+[/,کs>y@,(SPMzqoƂ$(g1/,DhuN'<hh,N,bM>13(6V` \C2K4UʍLfA!wv|by~jt[>ȵ{8dWbbZ=he2ZcY⢫hR9/`.)ˍ2 nlj0ԟJ@ IDATY,mBVnHx2:=G`;,Nr6`)+:!\,+y^_[}фz|['1΁S)-p<7i?ob~OU߬g."|Z&oƻ3d+e1B͔RTu+`뒭~Z(/4FMM@cw,2=֎0NW*WbW@E#:?._M1CL#ME4'=ǺdKae ]XSCRxqXbytLxB]3xAl5rn` b}ph2W k0)u4WpK;򴮻ZYM#u$늃Bˢn7N2uI(ݹ1xvO`[CݏT&dJ].Ѯ`tgwe{D r!r2M&4c/U1]pMC1j,ej)KmY'lPQxlR(0U hQ Ju '=S㥔N >i(o4TWOhq!>Z <2/ QfሀRlt3@${\N#[2A~cAdȸbc ;`s}PF pZ1x2U*'=ol#*s7i.H9(U\ߥ>!KFe=@B*Jd9L }삫C|6 9Axz݆@nݠt[ݶ3EzhϾԂzܱ'7*չzO2]vb<_0CP+n$lbesdc 2@HV`Ή́ rl@伙Á|.dEڧ^*|,qQO|e;j#vs8}ޅ[6~3%=;TE W$g>u,p4;;9j K 13dL!bj^d\DN9\Xl8FC6bӷ Ese\ZT̹GaO0OB42֭I"ёqR˜`,04'V+8} fЍYRr4Xb+v42#"3Sځ%k&+A H8L hTH!ehP(H_lPLLU,YJ2jNʳt-Gņ!~)2W5GrM_7wO +~J {"C~( `@V5!q=Yz(=#A|h[U^v͜uҁtQ?%O+D\IQ!y̳F.1z} tcaIA!1$vcHիQDxhOƴNH)n\Ĕ3iŻ0/N) j}}Uy~72BJՋȧ!r(E- .. %%q)!Kg'f(& <AE?*D9aqS~[HыexgE t2-<Bѩ`9 tOS@C-2EA5+:(PNQgY0(?hR#đ J2~EG¤IW'X)zibh=opCb"0&hgO﬜A7[Ϭ͹e0 k"e4R0qC č!g~̴Rj\3es2]t="¶0yUOMCKv G"6 X7nIN"ˊYT(GNn#*%-ם;:O;Ub\D< I^l d h'eS;J^@$((1@;wTЊAuP[ݩB Xkx7}SQ`u 1.z5{u"]DɟUZPj3"=9]q-)ZU(Q4Jeu慺)c]/GU:kh˵C1$ijΫQxN~nu60$Ai >uAHZ>W@Jgx1竀q1f4Vzz^(D"X%K+THW0uj裮{s2G d+ hd8w~ /Bu0]-g xC r"\ǩ< 9z Xfx>dȊr8cD*V]Q*+0,np,aDVK%ssf?M׺LI\]Ҹ} ޗԍymn Kܣj?sE1 \緻:|ú FŕbS gxj|F (ZuoR`6X.Np>lj7ZvPv{VTnK"ޓ>l=eeefE}<|愉gu36rvt/ݷs>5-ܩ$n_"j1á!`*-"7ʧh7Ӫ ֥NhNBp~TUZ'iyK˳0?ƣzs,OT5 sS ̕żuJ|,iDY\gM6ig]o5Rt>ӡG=x^P*]^UKֹ)?Ղu~ =-`- ]湢:YxSO9oa?WL*E;:g}-^軇O݋Ee}fμT)}| jk,. d,vm1KC=>ĺ\5>R .bϕF݌Bze5Y]|g,u9:LբA`Ƨ[#YSe]̮TQ8>j^7zBw;9LYZ]CnvU xiS2O)eQ-0Q‹OD6K^Rˆ.ꬍŠByz:@\T6b?ğ>W7r3ub?ɇr ?'c:R*Jӽ:u\SƝs !h6S ;ʷGQ]{ޕ*jKCG'S=@ߠ|b݌H>Noy_`t2Q RD;6[7;߀UHc/Z*EQ_gu\z֎t:o]ՀLcS%tTJP9SB;qc[ܐGE KM`(k-KQstk_-]d pLwQhg,>h/:U.\YDv N'k/VR[e]\msʀO-ty.]Lov$\Ѿ N#X)\T RWs‹9PTsu R+ڕK+Dtg '|*Xzȳ:8+@,U gOTG=C~X-@>Su$`]Y!Xpx92 u{ D}@{K) Ţcx6*[pkJlܦTo?K?GYF4rx}Hz}B"nzLHQ~l-6" }aSu?Gw%@<oRFe iӥ,̓$10[} W )x6=! Zc%lMN:H_?$0 YC2ǔѡ{7+?6y< 6}/2eCcB>pg*WtH"x cgto NbE/H1ci*E07X|3f 6SkyGHA(=4$:D?{3GgĤt,l0Pa10f>7MĔ2>0*WufJZ;?LB8CZCz=P1*7DhYXH,Őr":g B}"?+emRqb S9e{B6Ng5c?k!$v}Y&CN  )1sH1_ڀnsj|A(%R >#8Vf$`H,N^jxPq !!o1%%8/#^M9a]C bī>cNѳ!pB l&kQK6mHA%_H+P kY@zJQ~%P&t&b!l-R "hd >)mO8@HӪ[M⇾52k{Ewnzjfr@S$ر|Xߐyx$":>GnL}gm5-bVH?jDʋ }<`?xzJmh3ńXG5ZH4=ND;Ҋ+{o e,z 'r>(B飮CNE- %T!Ɔ!D؈3%DFrp%DȈpU;F(DI 5%Hޣf0uj3ZBpY)#F cFfc ] _ #lw <\Th)@IDK>@!r8$2'Sa[BJʳ&`eLY?xhOP"lP0%|>-ă0Jp[Yh+DF3B .6:͜/M<"b$\d>ԳNBL ` #"eblRVR!Z: 00 !YFy)^w+/_3TWm8Hڢ=fsYBd > 3d?yf-xxxL`-{RRei&ӹ1E3d%"%[dy~ruro՜Fx.CHL=2d|M-eA15)ʊ ,|܁l>.j(hbBDl ;˟F㯊~׋Yy| ,G|O  迳o)NsW;"rIY~fYcL5}>oB*@ <S $Y&ox7ZO+y!о'1`rM&BwgϿY>U2 ΄-,oOAD#U_%c .U!$i|9F1FFQ9kє Y[OPO dƻLkvqKP}IJ>чais O(\ڹt寘lo&aF8m5[|٧\GDA`,߭ZTUd`Ӡi4 .ew"" IDAT68? ExP!) tjx_g{lݿ ^EYd2YtsӀS/`w?' =Ĥ2Jʧf4*gHgHS;S}j>j׿ e'g3*fbm \t>?M/5R[9g~\ZQ,Zhfv R|rf&.uj/z gx%Lno굆y}2dPcyp;V:*9N1N1L0NWs.P5B-$hP!+_KY>iVUK?)/d2fO -c4Szb} |!Xܐ|{}a%?; l4kd bD\uHyhK5L0VsO-K |18pbsTӁN[4F{a?-OnXEC¡1 xC1PVDbs`Ȍ]|+.0rQN&(tVl6B:m55-L-| "?Ed(k_ݧC^9'dkf<ʣZG>/s@='h %,s#s d;/|/Bd HP)_K?&THm?G-CsV_? 3 kcfLțD AA`.KE]) XP6K x}+˲FQzKHX):j{=~'*f5޾ym/.QU ʚZ޿ 2Perɲl ⬜V`s~bϱ, 0BuaiG>`"TXp !'#E`=+0U9:d27M> a@C}Y6yP况xXJ,u,loݗ>c BFcqt&.E|9N[a[13. p2Y>Sdҍ p Z[RL 9!8l(hLlqSPO9}b2'w<0\ J ވ)|JiЭOͫL fO|>M`@n[lZL!^-B[ c-VZx#,Bl{۬,EpHx;`(̷!%5( ĢPX/KE <#|6->"^f|˳KWjMyQ" ND9 >* (6:+~rDԡgY3eRZ\P(׹,AX\g  -o0N!k: 3S>;V3>8!! o#^(? jXFj>_/1x4Y/VEq~tEYϝse=nA:e(`*ϕo.-^-B ͼ;6+ dRe pPW`\a`*V0/泽A"#H'ۧEɦ+TH@ A3^ Q6>;2g! E O\/vRS,=iQ5 EQ,K,Kت~e c€ѹDD(QS+Tw; ,/w!pyLlvyyv7. GB5GlY1%j0 hra/\>oAڟ饳tӱl}cww+Kd2YZF_.(EQ`ZUO,-Wp%jas%Dx ()rGTBT|o|/S6TrF ux-z5IX,PGJdl<5Z_.X=ݕssuZ:9E%^-+|yYᕊ1 Pׯ_cuuy CmQARtָ}QjR[h:n/a!cuH}eM>(}]DHlǟƻ0"|[1s/v_2:swgX … +uNDeQ-JYTlc٭`bNYiuLdfH$# KHHd`«cWC,^0-_l"ӯK8C|l(H,QMYĉ:lvq{_6oAyJb-(JTԠs: :',ڗ+ (/XYZqʗӖ #O3!M+>pmM_DG\0Cp D:hlo >0ʧߔjAeHfa/P  3bBu?+x_Aj15qJGwt[9:9s%Q~!>F TlqD,q g̙Q4h}WK<+#+KEL  e0$8`^3l<aUqc-@d*:O|`? >4O&W>E3"B[L.Zo0;?r4P?\.Q,ث,(p9h[*V R'8$}f6_sJ,ZZ  0/%#Kb#TP"U(fWQYD.cwQƣiWQ`P =^*e5: H7 1|9v  j|N,. @T}4=߹vuv-ВVԳ>7`@KL/?to ZPO[tƦY.ŷtΟӖKZ.KEEK\dN@|."' ?PSFlؚ=d@E|;$,0BFfɓ@Z! cV7" q *E=a&ÈOG&rI<=T ei4x%{w>dy;t.T@ ;zYUҕEQ %V^4q5_)0ނŷ.JъI1IM[ [SG*w C{: Ip ?iQ>L7Zl6'BBz~`=,$FKBq0B>SDlKuNL? L<課' o.*t +H桚MXB#DZiYx_,H;D7<p7C/PHP+* ؾn;biUkR!0ʃnj˫3Ɠ+/ Q+bXT3|k]tɤE/LW%\VuyO8q~sL*|@7=vZ*<%Q BpjpT/I;Q| XSh)2"?rSyCQ>A.FM T|/ ʼ~:O6׺hJTG󣨵s*W\E_YVYmTF JoR p_c钒}P iI A8.0m6@̰WX %DS1XP3+t?y[:?E/ZPq~6B(0,~j^2K&/R-–WgqoQ$ZȪK_:ouEsQ]{L]CHD}2X؄J~ MmDd!Xy` ۙ0wʧ꫿D&e/@VAg-Ns›/UuC!z:jK~(~?K{&p:YTlJZHp`qYClKd@9M>9!w+; az$KvcD/\'DF+M)CNytZt'nڕe *,juF( @aXA%J$=H0-*5<2F9cHJ6RN]X\+XvI]fbjg*4ѧtއ>BخK~^oШ)/(KM"'3 @7=K2@)Ett^oKR=kTពn_6c\DGY ΃Όfa=Fn+)#J56 Zql_]<ٺ8ZR.}6G3?=.˲VK:g-,vYm Tl7n dqPG`$启6i/.ːi"(qT6oV] _0yT`IM>yVx:n%1 B"F͕SW(.;GȲeJCT95ʹeM3%fSzԭZhf~GX7N-T80%EdxEsHpkDV ZPʦ 7%hR޷Ep % 0X7FU;9>O#|*"Y]7p%wrӟ'%S+8C5d "{B-g\,M.&t f[L[)0r][9=@3ńVb0P ۨ>s"? BN6nvc X Twp>oڬ }J'XTNgM-oy>G#U%E'$c V`ݫ5Ǚp dMlyh_k^IYA|O_[)gXdJp]\Bi`$k:a4MYŤ8UNx:şкE𲘦FV` c"8X|MzBRr~!Jj*2\P@Mᥩ݌*#hl]Ckm:OGHv!z7xƞP<ڰdWɘtTX7$aױ;M]u>V2h*k-Z^2F~G.AMe[sGX)uV>RYO" 5R7m0n3j "f|Q>e?1& Eݳ@10$6m|׹Qp<}Do@Jz"#=!e(h(#&T*23^ 4j漶v^Ș.tt>]-+\BT]='EPA'RT0uswItrȄG]A%%Յw]=d_P=f6Id]0>!0^>cv 2c\ w<$aKcfi SfC(B')a!S¤lbGcsfYjߏLfF7Ep|yzlwjdOȌlmm`V jO);!K@]Ӛޭ,h+-׺IL=+`ܦm]MM&~v! X#XdOuss7(]jw VɌ., "t$X*އ{ΕCS7^3#LALGm:Q|$$ (6_tH6J pHXP0^bCHG+.3A %dHʐ2}݅]T묟y7Lɛ(Y,S074Z py44!]ɨQr-E*ReZ֒F;~HR.tJ,ADžطKQAٕM?vBP9mY;NsϏ@$ ƠdϖXn4}Ks_$l7(^\}I"[ƶi 64>pSaIY ;~NS^zڪ]ʧwII1R@\fdb%p!&CwYw>Dx 68~}f P( uZX7ieddЮH=a90 kҠcff#+/ Uz["XJx%S+hڼַ>NiҼB}&)-DT5ˀWA eޛB&X{Q) q6X<|h$A wb|"^p}@k&ijv t 襦Sf\deQZbF;PRq,7xgQ{y>ھu˕D[ }ur"{|$8v77&_C!h1 5ǺO(BJhޠg"Oޜ*嫑e|dOt} WZTᅒ^ 9Lr)? ^,J^yzDZfP IDATͱVlQ])W"PD7MR"Dc'lI@o~HB͙ Dd$TP0GHpTD'L/ɾ aZ9!r *h]_}}XptPdGe Ņ (>Z)|¾G^8iֳN*&>Hr&>^9a?7 y&;m泝 ɘO 7wM͛:?S |W\MEΪ,ׂ|РS@p2%|TХ_|Hw/yhM*Cp`xKY 4zDW'Wfunf%TwY8^'\^_؜ER=:aJj@|HHhpy9xWtXu)=tMM&8u[w\O#"ϑA9F^QcÂA8%$L$&q<}uwL)9&SDН_D[e@^%ZtTcT-`K"jOa`x쾟r&0wɼ*,*%js>'`tgG "z C/!} c/ZΠֿsog2ُOAQ= \Dqzq݂uuC:#=݂dnNrad3P,~UtCC! u=[V3н4pz-+Ln5yODZ tz]Y ~KJho ~C{t^qヴ5Sݝn("MyJH۟1nA'3a؈ZǸQ7Y3Y>}V߁XJu&7R4/j;$$@N:rXpX o־NsFt^M/-~G )pFsbS_Tg:VC-J^!.%1St=dLbbۃQ'U(:djW]'N|LA Z:av)Vs"`sn,"x.>]RRBu lbYT#GjS0ߥlC5cy+&ܮA2 ?m r#ʚyy!H MuBtbޖZʑ?U{x>9tU5WAT(ntݧP"7Z ̅ z@H *) U3ԡl|BdPvi1A( ȢѽUQG* ?8MSs Ru5o.i`!̷':ޱh6@HZj|u)E3֥ ~S$m@4Q<"Bhb$~N GUj=)VjAt2SVυܢ9GM9nY3!@Өg/BDcY?L)}N jZz,FMbr $Ѯbmz5;X6`1w!O7 qA=^* kVoC)%]ռvL2ʺ"_kW|9\="׭f z吱űH/Vo ̾FMOԁ.e!ZKW.3Bt|FmP)c#B!VpvZ ![TE5,G|f;AXMDʪX#ց(=pz$h)h>x ~T/@,7p8 ID\1ģ~S!8Is1Ux/ Rwnޭɀl韢 >MKkaCPzD[#&\Gw6}Hu([; M,<S۸Y Vf;={n_&ݠ1*)C 9n}@3 ˀqs@f.,ha"5wFg am`4$sw}w<"H7P˞lʚtެCmopL@pAwCKxzLѭ3YQ@Z8C6Zu"/ $]/j]^#Ldd ]C+X1E* vjYߖ]͠&.EP`{˼x^Hà*V.Cոᴡ GncKUvHj (yUkZ\6͖" 믻+p`4{sJ[JyT~}/4n\wZדnmW)&V{hfoz1=mP^W qy7DM,e#P6V3BjgHݼAE ^47YSb"ozmSL Jp9*߇L!3oeXё+Mg$$-[3MCCECxgmy\# ωzCJDa!Aoh3!3Twk\vK18Ͷ\Y}Lv@&Sϵ^UEc:Ax;R,smR IAnJyݢeU$q 4wAc32NJIV'#18pP `+;%m^uoMjLzȐjb>ފ~Detg0@H=޷`BY/CF0uӹC&c`W)CCT+{Ϸ?{b;#b/& !DJE1Y(񺐀BF7Ī]ć\( mrq("lhwB5ƦZ^B.k^C[m"ŭb0!(Jo^[uZ-e;V}C30F0'K$DGȧ Qd=^ⅬPh5!߳y~T|V $dM]zK)VeP{:l"|F4xg|1e/.kcs23qfŭ\o ].W#*Nff#e4bhURHȪ1dmCL'g-ju'w]M?mƀFSP6jnQUUX `$A!=H6J6Qkh̒׽:--T,׌cV ;nZ߱y+^ѩ)~źUuyg9b5PG3Y'p1=mR4S_qql5aswAq1OCM=M,Tt3=_@^tsvRts OVi*1"jʚ+R ƅ/ěކjQC"e4WSzh'kpϠJB+{ݱ%Տ !ڪjfE͕7@!5p)w۔~@ܡnf;]O\u eCDf!Z:_S (y$|ƈnXoJ5Bb;[! oH|vtl>4 Z nTU,8"7#U7CTu54,6EiSGWEիy~ 6H/CB LބlO 2?{o+I}9{k^{⌆p1SeIX" [|Öd m@փ0 6,mxEsjfzatwuw33"9"N'ωU]U$nf\#w- u@8Xvն. «eZBY0/sy+~ Vl5f:bV0W]rx$ڍWYSи,!YCʎѼyOegu ]Q٥vzDJZG gm2Gtz~&M[4bjv=/" +MZEW1Uw~͖+Q%X<69u>gv_3o 5ݻ4e+ -cF.;'PB+w-6N\b,hLhNʩ[bT Ų]fInH a/!ӤTBлY-t`\_agV-ex˗WUJ,Q$ |8!҄|R 8shoЂ^D,3V cܭ}GsDF} 6l*7jlhg_vG26p.[Uv C9;{z$QźS&gVK9 hَuHHܩ7GٖS5t69 6HO)՚ OCOC ELH#Rx8n^۲S_n(mGϱh":Y)T1[b%jIiC~ĶR(Kx  @6~$=p2a*ow&%Wݰ]I5Hh_&ؘ_ O$i(Ksu_B c 8qڶ&N> /&RTdZe.kvWخ<-'zԈ+G>z~eY45c`| - (9Hpۀm679>빱M,kŭ$LJ`S{UgvsvQ3]* bcv埀ݢg2zLRn)@)ή԰TYWV&GB 1LyM7m"@YLiJi [Ñj*z.h׋-sMw"cUnl(# CD ]u~r[MBqm-N Rb@a6 -y!e!XN^_%X(bjNj:P7jhargUK͈lGO/Χ'Y _/Ɗ1365;NkBUDgu"a;/6@['"~s<.,J:S!8g~6,˿!UtV0\Ѱ5_q#!FQo(u:Uá,)dXmszh:+wόۊRm9WHi(8G`ػ vx}lx Uov[N%3eJRDs=B&> ~v}> JJܣhnRMmSaX !%o(C V{g4F3"PNU 8R"K   A!+\ e]c6&~9^D֘&קU9|dopUTL29Hƶm.hB#XnCM͔ҧfRy"(0-,:`͘&Wz5Ԥ%(mz^|1ʿ%[peG;!SdDJ Aa9KJ;!1)ɀ _[xGO7,µrNS\bVrXb._o| o6J3s.? ͥJLͩ ߶> cGXO4 e=B@RV4FK*"&MN{V0rA^9@"r|n (ƴ *W;WypV?JE6#.2HV +hM{侸/P@Hzan,yJ~u֋]Y (9k\-'S$ Œ˪In(X'N@uq ؜ —34 F"òV3]+l B E0o r R–G\N)4BtJۦn/CBh6G fG>se$JfXQ)P6UxDD+k+1 )! ]%0cЫ"h|ke>x4 ρpyR843Y(|2|~rي: IDATr<UijӲ,_ v&e*f0ew,lL髕B7\@6j (Fp2#udH#3\ZؔlsFݽ699 z-J?fXՍn[ m/Wi1C h| ' \ºQ"cƈ\.x4>?@1#ۦP2-U2fcrx 7e˨+=9.P2BBq%59V=]]*o.kžN13[4`m$嫌g>ee YkdT-dBCZ+ZCtN\<Ƹ4( >M{E:Nq(D*b91̘̍ōi@+'yգfJa͘ KH.l.x lxEqOo̚2 u01`-Eu%R`k^IC]juz5|d^q3Qтϸ<;!.]"ڐ1hzP+X}$Zk[ietDC]tL$, "@orr4JQ,v<3ʝZ1`VzVK?0K|͕x*Nkv:b3uM*kK %=~5T"b =9V|:X.ϕ27PlaP>)7p*fX[!1ࠚ'yӱ.ksDO$'qC=֘AՀSZ!,)D ?:o%J;4q#K;Z埁 R\L#(JUǓ,u("J(:XwL:@]fրF=Fk*c[u/Kty-a)+ EM9Y؞ѐ6ZmVsH$^&/˾JuW?r%~3uGp싓Jldg_4v&rFqgxso1 nRc xH(}Ng&]!}3ngx"EG/U,+MЋcIklap@fCJz e7?Pzd"]fax|.uWN`ZP2W,JVr`Ffz eSV'+,=u] K&@"arkg>ۂAu:z-^PB%mFKo33@V*Ԭ07"6E#MQd}"Xfſ0~x-.a[%j:-{8q'8/bp*y?v.ˇ\l/fj[!Ehi`yv\HSMWG9+U;_Oj(i_4sķz-~|)h!PHqÛ[)``V p7q-]lMgS LiC6WNaJTsK}Y`s:ͭ55cbRdQdC<[&&TE="RzZ>QA({=^Ƴ]ub sOxâtr>#p,GQ,O4gQp|+}68Mb歅Pє~]t\#8S'LfI9ʩ`?vBF 9 KuaJ3OQ?| Ҭ|Z`J)~|r1 ®b pl#68r FM bg 0y‘yzͦP4M\W;W7t%^S:"wͰLNa٤Wؖ'Xw8])|ۼ@"A%A10~n,d=uz0EIDMa-;+)gTN_=@ lD.S05C<ň3xU8f ^SD/(($npWq ^u-]f[=g!~X34B\ٹNans,ȃNq"J^aX53 ?LBfIcxQ1Kʂt>&R٪G|:˘g 049G~C6,A~-8jI%2ufO%3Mg}[m%,ނÂ7[w\;k DY t"rgNXe] 7.|dw :+-N;Z%Z01ޤE[+]L\OqU޵kzwuVR j<#˳7,[pAk U?-@I;4*̸γJ @8hR&TYZ;3 p:A?cmSuN I'? lZܼȩ0=}PBgn=*攦g^DO6GRJfW-읷?{|`)h2ȁ*\-\zrRuR'ndmʯ _6_O8$ %²NW*"V'Bٻ^9,y/+z7{})1>r!FXE|ppq~Φ&LLQ65$5;ch ː1 oKW7-A˷I.p X%մX/iהmyn<t9_qF&/ˡ"h$WbEN6v+ua#~]<2[bс)jdL%C1sU; |h4Qm El0|XEx l[y&G'lRm\EқXw.E6xɁ0l T+k1I'EǏa^Z{ ž2Ös.sфh4%RỲw #1ORW G Pu5-yhD.Ю=Uǝ 7K!T KY?paOs(N)eY:9U j? -My,(h'R5[mr҆u2~1X1M[m *{N]K_uvXxp ys# v}Aץ1+bLT6. = b KYTS>:`R,.ج!j bT{>eEh15-+#s,V`X|׼1!/;A/oh%6Lw/C:NdJd1a{"vG%)_%~1AEC&fge~F{jY_8x9W睩g]a0Yvb"*1K%ɶ:slKWqthaڠxrc3Է+seK)X%?_sBdU <`Yhb_48:P|R&="v.€!RbȡhAoc0nas.L̖ X(2sŗ ;Rwt#H \]CC:œd3XH0m^8ar\r9?ekOBgo޷9r Un1&}l`  y;ƺvX͗HB\-KLh>}R~[l""a:0eGbA,XW؏k;jjqs'& *S`hLH]!n1-{b6(ۈܳhyyu8dAteI2nƒyЍdz.09uLoW;~SÀJs1HR6)IT_>dj' Lo9%ÿH.<_.Pe{u\XzB ¾h4sfwveDr)xWcڽ17 *HcҟvO8C8GhI /L8*BD(C;17d#J(cip.afej. ,+"" sr %\*6I? [;yc4髝 PB?Kv;uK]I^l ?TCIX6PB 5ȉU1Qb(4epJ1WeO +Ѯ:;+{Ӳx12I0fG4ҭ)t ʈLzB4_I5bTyM`)?"\rUtS\e~ PuoKƂֱ\O`ҁ_3S%XNq&N.)6峢CΦ3",puJ`vg,;%Zr ؝7'PvĖ G‚RU|hk\O5C5+#`6>Pʃx:XA1F;ݳR2mLNa'Hc ", ? Flǀ+6MkaNȖ|K瑅Fi&Oj1Ů"tog^C˒%-6ɞYMDSaB|{>oKe=r: na4+hw;je=dw-h0={300 [dg2^e"JHZI|.ҩN]2~HDCđF'G^]A.sV-Oϑ abI?A_ |Tc$|Wyh ?]r $x!<߉ $x + ěJl' PA d'R+Kq{!LJ#G7g b]j 偉=JXkLhE}*]cD>=a"6cWȂzLXr\(e>d)0J%0/=+ VbՊoxwuu)r*RR ThOŒ7O Ӧd[Y8X?u(]9]"M_e}<":#@# =1rވ`Bh}Td-F]V"df>G>" _C~R sB$2/P!X2ieCMYt "솎 0e[v~W'N>/Ǻ:Tp2>Bʣhjv,mdl,Xw^ `ʤk RDEdʌI}37&pȉLn 8 &͚3+u)g!*#!3!bk56< 4)BV120U苍f3n@7|h`֥hdu)[ݣ8U֋˪5`fL{|~({Y<'vHlr*MP(ґ[#{H,'Xy,f#_Β"QvYP 5qvp]άSu*aꇬQ9`*ukg S͚%g{_b=>V87 v `,,`8#H? |-\M!9ͥgsEٴ0@zdBH,ٱ0'$& (d#^ 6cV3aZ`iD 39V^A\ vuUTٲ|{{6yQ-M 0ɖ 0)eYAn}2?%IV e;x9y"B?3׾xp ~0o=Ìʢݱ`۰!{S%@Ux`fFdásў3GBߎN|jĚJ,S f2PF !. T! }(fb% `]62˝]ApuIyh;y\n:vv8KzLHc-)03_&%(g8(e(cq@@,}+9@= 7϶)t}g lœʤ7hV \|sa+!6CC!Fsx|&@M0/ך/ljMs ~ A?G;g4ϛCaZB<:bѮց̫is*C ߙ MiJeL*`' f0L8}Bi<&W&Y{ruH|/YxN*8Z]ŞBjEr4qE IDATxŘ" 9}qK i!(%S|=zSޤ#Bjf.<ɫyVCYI&r{J^>tNO _ˡQcr톼0Q=L@Lx8sI0ɑ0s`Zh߰\䓕K`@p"A!;<Q2a07!=}u&F֙-E?)= )n> ̛#X^p"`m-ĨAFV(vfhwB!?v81oͰ䧂 #G6Y V2@{a=1x"0A%Y"ckF1>y,|*`]t.޼ú_o|@_c]3m1¢ݱcR$8}!X h& H@=p%I@ʣk;="kdke1#׆r`Nي L+ԝݱCy%V SH*Š= xeRyhi ҠxsB DKy1l v&x*;2C;Żcwݱ;vcwݱ;vcwݱ;vcwݱ;vcwݱ;.Լ;J uhK.:8dH; A0ېs:0#x z+} a+޻c7;aDWi$J^ǩ糅-% NA;+`\@܈.LǑSnj>C/Ez w0J5/ x'I),U1.t) Rhd@$b;m,m؍+&ء=6V_RN=;;!^6$v~рϳ;bzX.0"{C=Cd2i )uDˇՏ0кza~:"JkR{P=QA` :/ۚ}LʔpїaH%6$q.c[l04p3iSWLGФL-E= 5f)b)3Oh+,v_J r""I_amD|Ⱦ35@]$$Jj JXbJhl%ڂ|?|ϾDyeSv~mL(0 ^1VbC0a/*ۡi:V6}ĔzV\x#" _Ti s) F3RfoLLFW+L q< Gso+|>C!-ox@U<KH-r0P/܀<=K17B`t,%s{t= ,!PSl0 w0Q*a‰)be7}cAsߕۑu Y '*r9*VMLJtgۘ}`7=ͮpa>@Wkx <B-RFMy_:3]3=:@>Y 7+b;&VNG:\kǟs&.7R1DC"]iyBzH@v=8cu!dHeOCŝ^xmۥ![74{^.ف'6 1]B AĔ.%C:`cu} bЁt4 ca&b^l)Cg3eEtZ@0TlM 9S1,ٖA8$Dg`Jtbrt ' B1@w{C6TP跥@Ũ'Eg1bSp9`Ι-`)hcw@)6ٗAMW`fH#OH2aP'TW`X,+п^ၬC= e;]yJ yI*;t4Ϻj r()& &9H@g 2/ ߆sKҥB P<t3z@7!CmRit#VW٥ce~V_˳OUg{&##g[lY0œS(t7C2exa@Bb'[;3$:nR ]ZmO哃k,9g_gN4c[ fՊb^ AP ? ۪BJ_FtyhxCEmJpR`&.t>np3O?Ӗ/Nݏb@b"r u_'ʾ~Żk8>p=u~â}{@mB ]Z44~rgV/ry83Nnޗgn+P9"UU6=(o)ި:!)e1a\tyodXI°PTI ݳ-SjrIx|tpҿg?o^qzHp9Y]@CLFb"GoRwZ,~Y ߹m<lP D! 8Q!:ADz'?l/dС$"Q6 )?ware'U u^*ƔLP +j|Yyc|_S: >dѻ0m9G,eȲlu=.ŃEouafXk[@cKIwT>'ߺs+f3+{Q.(=իʋtXW1צWd2[.<oq(<<в,C竿@7Դb?8@ Ę@"m(GYοf1G<B) =r>V Q9"  gWhwnjM-QH <ϑ9FQ Y $gm33>yaĔo|?ߛɻpƊ#ZKC7*]@~ohCǨBL<\B9U;*-/N7@c訨Hp”Ks#n:'IJ`w<(.TJLX֭gaPwέ,,Z21+8dY%c5ٯp"8%]CAﻯ,:b ՃR \Jpё ͏}twoCF;j9GqNXn2`:. \D_#`砚o& X%3Jal.*ʊy+M^9=V=I3+<ЪBQX|Taq8OEڼN6-SfeSen;'0f ܄Ƴ0# "Q1\} >$T}͕s?f޳Cc6:"@!KSɥ+`h17;=K E}2L0pppb:rާʲ\]& aM4]c+.ustu&n3 d a}@K~6vg|ʧ_-%bkkH 8eV6!i}0a,a> 2|:ib?ޕ~Y'0G !%LNåKV& 9oVzE,³g gثQm6:yH(baAœU("H43Rn’N:pNj8 j,+l?Ԧ1cؤ'/%5`E0\EGg_X_`vUn3ޤ[;88XU<<1ʏ+{eO/Aē&L: ;H?OhiԳL~ㄈLHKHA1p g)>G(N; ;)=ށsu-_j`PtXhH0$+?O#2lǂ*ɕ'~Dl%AJgpgFwaʼ Ktl|ۃ,KE^VxD8I8(LHIhu@h^c Q};xP %]_g58;bOtƼ",)tzjq{w.1yI4n~W~΢ "*xI A9JQ(yeɢ' =S 2xQX89S8aS8q f0O&mKv>gd-W.Fj!hXlA[&["++z$_t=vOH:wpfFU,`X]Gqx f3m/Ct3 7 C>V ɧlҧբ6N18c"$Q򳘡10pB fCի3VUH 2pv1Nf^]Ֆy<{A?{a3apu%HZdsqGD! _uR6oѿEx,aOբvүJeaV^̘b#$0m@ p ßxsjKRRbxo1cFQ oP )< #8[dδ= 492~Y:f\zf+E_p)rs3V)$y': <_O)k[\Ez d,UU٢§ png^!N`)|/l~k.@H2eҰ)k)49gi{J Om8M13'ί?6B  }1{xCƄ0. 4mFǟԯYml9``,kZJ?YV\a0Zo,3J(U| ۰W.A 6(h`t l."p\W'q Iۈn6;:)bKX z4}MZ$գ\.OJpX"# K *bb"bnTGO||3 xَ6bv`2l3R|C"`W\V`ڴ%1`6;lMM~0&ַHu&`.?ŘIAцHdac~]`#Wˣi0oKN]_0`1F mW2G:kcëV{v (|maz3ӷktXS*ccekN [b?6[|#F a>tOC+ɺ,P IDAT׉Q5ȑj8 9Hd{1-Mو0V Nmjt!KIT~kg9!yzءZO[r=|gx2 { 1uC!E 8WX2|~ oCFI-r #x v3L>I*m.10G?bS"Lξ̈g``s󞚚}#S!]@j)A);tpfbҔɚ<PGk C Ry 5R8a;49BJ_g ?ٱKPVRDFoJuТD_ev3Ȥ]A` pVJr<hj >^h+inL̺FOauX:׹Ї]pq"% Z+]9G _P#\m$y _~&X.Ba 0Q) fjї|naj=U$7,d ʛ[[al-8,i36͆<_|wg:[ۆ۪_y=(1:)7=,]-^_2!0VY~MҤ*%+MJbQgd!LvBKǫfdL˕I??hKgycC&.vE],x#{788 E!7W˟"[_5Ę!+O22SH̺x39r rcHd˰:ob^ >V3܀r$;39oJ& LhEh|4^j̵ tMt 3dp[NU +s&D2*0a<0۱3տH'Jw]D l MJ履Ɋ{2W$'|&Ȱ+`Y *YΛrV9J=8aoP]cx ƾ"k\o v:؞*bMjJW\0riz#Ό[|+"F8pA!(9bNBxTƮջSnrd'՗xEW\EzĶt]R8!qV"+uH? sl1=?` !Z;bg=i'+N0x&Y@1\"+&>o9.SrP,vPKK]k&"lk"Mer4yzo'̵X6]U%Nc˯E߁śqOk#>)<G_~ρ0m=*}Ac YOp\R; VzYiVfl`g%NfROase_@ `0˅GM!T"ZeKyЕLY5-|:K3Z'+Ǎkvd{үc[ikC+ K\Ǻ 1¯ _ O(r>0<*"Y܆pT7Fo{;8}J4P.OD PĔzZOGz4 4chQ9[XH&gpܱY*U겞? [(x۪L0 9#$"/qJ#|7A+ LЯ+#rx6 Ji!ˆe5A.Ȓg(G!, aD";GK&_H,WhY W A.ffJv9>kJ,@X/y`5yLQRJh1/ōi2&=<̶']^UwGBݝ,[Q[K2NOeXsx[őzU'mx14fEࡩ eU{?P{7`e*(7a0㥤3M) sO0DFf@퀔Yl{ <ֿG'a4h>TU3'9)xaC1V_B75|ޱT ŠL |>Ө찙3&F:v- { 4PG +(Unkrq Gn}=VYa Ϛ\<YgE D3{bX21^J݉;'XUި `275gb!SWVaR 磑b~|նR0*-Z( J'J (11EWb@Z U}m=GD8ToRFW |ሷRz60ffO̧srw{'ɘ :령sպڛ֯DfN5Ҧ+5ؠ/nͯkMl#ߠm"my8@*?csgkbɔoyPmxaS<'cO`:bjRƟuK9`X1vE/J],x"J,A9=^*?A IIeLD|Tޅ)9)MP5Q!)Q{x"U4p*f ,w%2Yb`KN5 ZB48Bo"c)ל1OufYJ*N톼]x^I&r q F0BR! ?1oհo+`~R{)AX]$6q{q.>V7᫦øša$lD*f }5}LE&JKkd`"_ 67sfBwHnx1\%ؙ['sLr' HНqoEs ө\\@~. J7uą&0 4ǜ8Foѳa/pa_޵$ v+WwڼU}{M5K~技w0]\H%^;{fI[m7|y\\{^Ch)fTe3uM<ҧFBMP_&'˦u7%Ms^>GՌU=@8ŨTX/;?ԫ^{m* %H33:\{?3n8Ӟ9u1b p.8 M ]3&s$nCG|M~ƚ}d(#[ؕQbv߀ol&G,8Nx$Η q`&}X#_RAT̎/IX>ީ9Je(q09o$hHjyf<$U>3Y12N>fAdTT ]u=d[gM#"Ƞ`:b1T=bKRbLx<1(O#=HTlhOn O3$͔Οae%HUuUZa1c0R C}\wJ TZ0ǷCM.0[@ j}}S=xVܿ&7`̥Q_Q+F@6֓bu3[aX3[|E ʁ:qČe])3Juoar"n+9by^1QQS;}bzǤcY^ &phi7{ 궒˜?*/2Je,*ll^}rVd JdJC`^e5]RuLLLbJP.0 rc )@c`KDqq17ѿd[\[4&ߜQzdE?@caZ0vSu3(cɽׄ րخgrfnXT$є]Ek=A+:B/#FlT ko.yjA]X[ëUfmvmvft&PcArbT35EceS2Ɏi>kR -LbA:a w;xy':;k"0l[+G ǂR\N)51G3%^1HjxVC_?;G=ߢn㉍f_.5S!7k!=71]<v 4xXt, x1 >&D+曛2%ǻwj0xэpE-$\gs<afʩ;5Ҏos;a>S_E:5{ԡ2i82B$&))B.2>clzG`˂N[#0ɆлKW@Pҭe]}qcibϓ 4l>eON-G`:u^ޔ1f}C=E>v g<\>yLQMF2p,DH,I&7dצ2VYP3Cٶtsί7eu03p gomXMXn6&\`(INjׁ ܾ̬ۂff>l GLT+LBS'3cu5dL'Ӂ${H3 X6GC?éhXp,~% 0 b|MQ^'ƒ+̄ ?h{}|MJbGIߞTzKU$y"6IpJ!hKA{U;es2N`Mm#aHtCJ{V$\bsdڛ$jJX*>HLamfD2Tk625a0^6_)h;[sd/x& }̱Ԝ񫘅S2SbnQo{RK>ޣTumuS,1$ 2`I} ET\quq]sIcthb[d@ SLA]ĜlblӯX Ca𒘼3Ŭ*y60+S"F7{lF;OЈkum,5hqT7\eF*{HuZ {CxכN$bz%INQ{k`pssb .tbfGɐ'X-p]7)^2 適 HTդV)duZf=(a YoR"S6%uD $䧲Ҕ͹.S*uGW 1l1а{v*5EZH~}dTNYd\,a5%Mg[nw]Oky]T."O;[p{RLYj0H ൈςzSZR2X'y^ ncw9UPbogv(q"pJ}Bc|K^ŮEK>ra"w%OQuas^䍱5>IV"7S,ݱd7mp*=&JuM{N[ۡt.77ό&b} :zZY6\/ozs75eE3?j"n&knb\6aa„Sy IDATT}dyNH}=ҟ)~'&dhwvBH1QhV1DןDX3mxpB,,KeC `_]mUh$ 1bT-_JR)oz}#gQHGGA&v$!hr,d@c75e,tJL$l2|o5Q8ۻ c,/I%0 x4LW OyФ@~TZ457VojsG DbV\>_'Nnpdev+,,SD0*TM6El`bu, FʦmSWC>ddyP ||Nx $"x(2slzXNzߧVJaT6S?KJаK޴K|7; Uhjuy1?.X)x]czsk`-߃tT>6oMN2KNd _Yrad`3TcR8k~@{ߩT| ^fjge2~y237ݻuAU+"E5ǂS|T}QfEaE~p/dݪ pSGfu D̎m?/ϓY,?R?r</2UZELSΘ<52W_T ~vx7x]++5zcn5ӊDt %P$HZ< 8"B v9q ]__o{ Y-ژ EgLoZsDxB ?׶ƽ1%Jc>8/ ܀äMG[;j{3$bv9A]5O}][`؏ DDDbFy3a?X~z |w;"u"jйR 5!ƙO0ۂ%~/@U*WBUG -6 % 6ALduU\{Q{>KvfF)t9S3עZK&Ii7Wp#z)%x2%p_|o%lG>)̙7_o@!ޱV{qHpjr>}]X{Z3A"tXc_xS;F~V>R=N Jog_]sr䗡XfcƷqɿFB zQQnlQ7L5B ׮pY0M|)bzs3 =}҄.ks3uW&>S7crp ꗣx}Sn2TNE8d ^.gSosӥAzgƝ^ |Y˦)f}r~^=cO]z`=cENxȮzOMIوB꬗W2='Uz™\5X`89 }W;jcv'r7ű)֋1{px;XIJLI pΈv0ػO豩9cU菣=௒QvuE3+ ory ^n2PXs ^0>yKa2A#'MP8c<䴖0(nZg0\YH5bUpS ˅kH@*! װD1Ҍ ^ `}i,F7飒{li^zPs5 ' &v]Hsh|Tv9›pՉ1#?N y1DivSr$s (nw'0fq" ;W`Ep3,O;{fE ^7#ׁdTXp@k7Hzñ W"6>)~ Bdҳ6n?5DrdX[!x_/: kvN)0qئ{ξ=7#6,~fV&%Qw5[}2]Ps0/X wsBl"KiDHV9cj͐ON^o^`7zٕT=Ob+܁)xӋ@#$y X͌0ܗ <*8s )*!V0w#\{ 08JG'U@]nx%mpJH|.5rt@:2sq?q´ XDu" cJ@@j"_ r#`ƌMq9kaw^y닲U)|%^C4oeDl'߁\5+|p9ˆLo7wQ(?W VP?p(| TץXBh<Ō2'rse~`VuA TΎHv3m+֋)S*1Rmb2H&ʯ1̸Ix 36}*]UX|3 f7Qߏۮ IP1㏚wrmFOLL$B3L&7Ta Wu"`S7')̄`06MHyB')$#Z"E3^n9" 0nJց)U=clhS+b ,P_AϡLӫn**.q^>`ꀶLǐ&Sjf-X.KM@<x13#4K/D(WMf @e4+L޹벞gk 3=Wc9f&b~ؼ \v:p]EuR`qHOIk3Y Z x:3*smXWf"BE?#_?%>fK2!؁3YS "r~%޶7;D|O LܩScb[|Yk8]_'@gAg ?fyAoA`VN/AMv)|ِKSf"ň!lj`Wgi)1mfhrjeݨ?]29bzi>aWpC;֘ `Ӂ.Sz!,)D ? Эn&EQS@0;ܬ pHmΛx,)7}WRffD k? Jx%3kW)fD 5QhnlW^Lt3)#Hrֳ=! Z A۹$FL^}-iR:ܰ}|׻mr2e\a+9oع؂BBX.c.s)Jf,\SL4 zoρ~XP: ,}rzŀT&a>4uҬvXYmEء), ;15|T JԎtEC{+ev:`\ᾘX7g_/"DZZ(2qb;ڋx&z&sx[(3s(Mх `S' cv Œ\j4ȥmCXm0 7йgeOlI]"ϑf(Z>&3÷ uv3Saym*_)h!+ם"'Cr1U q&%'@K CLN]:i^UMQusSX-E= prޤݷ;|#%Ѱ!PHNaf]5I-<{gno,M4̛ln#>1%?U*vg.mt)>(#w5J`.aY.TAP`ح+v\-0蝠-@ p`g|v)|#s0^Ǜp Ȟ~:X~۾3;{YJM]+3cC7+|mKbӥ“O"uWKݥ|WOu]e/}A%'%/'`ZaV2 F[{^ͺZ) 2v'c>%|/c9e0H.x~ x`%e<=62M&%3Uuf okS2cs'zL⎯W?|IF' ~[60/0`-3Dx] -ѠRuV;gdhS||Za;Dd -%ΘߔPCQ,a͌wo#_!;86,lطD'q |7|l5_U`f&Y YvNYЯs".*=8#fpT3+EsL 4|`uius&>_kgW+nlq撵#m'j|R`u̸6{w5ށCߠ_&}CJ3oX37o]7\? ?eUU;Ձ;< >^Ag>77JK\_-Rd(!T/!Lp.*R2qU=J w:۴\sU7.tbn:Vks|yߠT==gKAR5Z k-.{PZLH0VW]5<[dpD8aAm>p{fx"hkqɌ=0.F;fʾl'aOh\WF Jy)@:б07^#6?N{T)579-HY\u T)r?cjmwLuzAG_0l{|eXJQ<8 0;^d91mJ #^j\w{+2'[&tS}j vJ'@B P-`ňKWD uuT7YY5u"@7W`<{;#"@Ek ;%='ÀUwWtmkNcj\XrUB֐ fHVjzPKFRvNHx9C^N!2c<Jv5u脓Z=fU !&"6O X0x2Yg#‘sqpdώ~Gg?@2e[2N( ') L`__-s b.DVJ#0ٹR,b&=n{ шLfI/"ˈbũa@ 7KZcfN|$3+: Jkm6g'agk?dW#z/jC&?VݠC. >ޙSdS*>"oJc)xB|,H`s^-D# Hb10\N-S2|)ow_)& l2#K݈( V}BtE/zGoȒLNm_)UA|R''}s3`iAK\//\^@EyD__dKblPE]tj0fO&. fyN]sTgB>g".G"^ vhk9tQⱺym.)g=)h-(97iu^B+Xd[ٙ./bv"!_#j~Ws8W15X 77KE/-(ӲbRsr؀;Mx^'h02'DH@NYA UJܠ_P :3 }PL<5y/-H rƎeV M!k)g̏ R@HZ䥄2Ʈ{ %6VY>ėCBn!0~)ÁZPq }x픉2\ Stȁ9iUݨ/<{f8*g MLQ;su+Avc06ؽvT%%؝~)<jRB\߾Vz IDAT PL-|CB݄29Y|7̺/ji5־ I*U}zyW3xrNf~d 3Sg 0ٿEռ^8/K;fC60E ba> 1@d6 D1㧀)f6m1!x%>)A B.$u `*靖A(1?/52<>2.[cŘJe|Nlcݦf2fTOq>fcjYh۫`^v>b11MzJ~`FЅjl2fh%wa> _|K팱,c @)ėV0B|N|X ˇ$نcLLrH-)?@&ˀdRx)^O>ŇО5XELBu+ʚF #Y4bNBq4c: s f=8X,-֜'>G|j1EVڥ!m,@uĖZ|z eX(AtrvCcܔYXO*sO/1,tk64{0HI|GJ %bTw?`6dPd'xZ7f+RfKՊduCUkyc!9R 0PJe^Jq]CaJvk' k F[Od?ėa A}̜brWϨ(G+@,``66 L' [R.:cF@ 謖XgbR&-vqR\3d"#|BȦ1Ɉ<)PX]\AFv0y,Y'!dJ|p+"Y)^8 +zO3sV1A+ƒNM&9367'yѶۃ`09h2C[6sk1| \mٙ@һfoX* Ղy*K2E5RIu ڧ|HZ1ѥӠ|ά 5HC*X~Kzއ,6R Sg~ : ~S rҥ\ð ǭbs&,sS~vR+KS?->ݳ|HEgntY_s6~groaB5~0?L$Grϣ?Wz17! ݳxa d`q'U`.DiEs9~3t lb`-ܩ-FpȚưyMBnف1]pN` Z!^}hb| bl{=nck\ttڅi`F)#7'TA/bFnoV0ek#Jj#LR!Aw]n@Yd%eA#ԃx2&n.M9>& v%Bbձ 3G"]:ScZb)OJEd(osygo +?'')If `lZY \(` @3}0C9O^sqNrDR| ,%RϬ",}>âeETv`„ulz]v}?U̗ōP\)VnԵ(4)SP->@@ϻs~ vG0lh1$}H<>G x)(xd&,na׷ӣXL`N4/O 4`[s [˱dX{#z)L-ĹUɳW alj]bt#UWF棛)TwBH3Zx\#PWBZc؝+DXg3X p_a>ADX!.ktnSXw}!| qM*LbFD=,hڿy|3Xu,LSS!P fBHYYF|9Ynu}GC8O PvB}НCit` QaV$߅0mWj#%xy&W92&F Rc]I,j/Xt/D{`o `RVbx\2K$l ~xz1)g$BwN,|9wA a&0x 2 XB;~aRB ]<6JYy; mD oll:p.43++VB= }I?w.\2T4:e?lg _K,ЍPR2b*b}+pNAKIu%# yHB?vr8{߮NEj(Oesgb΄LB/0A\~0б Ah]0.~8j1p;^X9~cs)hc ́X7ץcQ0CH4r(09cM a1U_ {M0Q\BP&b3PD1SHL=31xq?&^RzL 3>gD31g,Ŝ>㏦ZU{F?羊"_WM\E;g+hV|x}?3 D#@*cLρbʡR\Go2ׅ2iM*ҁ@2e^%Ä2Ui"PhØ/-)!F1ƛiu xOF@3Rj`\1p1|=ψ+1ws]T3egtj&QmS$bfЈc^`&cd)%JSK}/6W1B7Ɣ )D*}9ycȊ|ޓib5 㵧2,GX'w. c>`ΟÑHF.,&̀s7d@3`2#XNgQl1_JS,cU-|>?\y S=5jj5'PB "آD4!TcfK?o/E{8~9 GĜXtD-ؘؔߖ&2Tpx9Y41pآ7 Pٴ2GpRY( 2UAi O=)=OJvS1\nLȢ&3Y",eVjF^ )Pbd>IT%MR1)tSU)UcS, {!;L: BRA1)4y2s GLޫ1=F_n(c\vK4^b`!c)$; n 0kJPGD?zL({ \NKp_}}] GTA`<@D dDu}|`aU-7c>VI911gj)ħ&GOpumbt)$υ(L=1˜[7r%7կ^w b5 s2-SaWm5S3V(H9a%&LfQe|앱 P~ɘd+_'Gd~]zu1ߜEsq66k`? :zڜ `n33sQP@8Έd̚"NbȘJAj>$䓑:apM0kL!0Qy/~<:`_^]w\7Ub` +EQlVotڧ4ι%#juIJ6dg?bwߜQ1B1Zcf딌gxSǘQTX`=y~v'>=;O@O5v}v.fݲeY(Ot]$}M X1ņ9)**lj6fc&arᅩL6ů|7%*rᅱf`R7?>[& S5G=}wAxcY(1y? oϿbqψ^i]C}v\]L)6ͲnX1cJ Xbsg2 OT'7Xx &Wcҫj7ܜZڳMKY-E//?3:ؿTkxmʠp0 ` ? _M˘Q9}f01t~>{')o0|>y{,8XmzZ +~{tkv~\ z7V< qI&e`8 2O3V2kc b_c4?7A 21,URS2Mx7E̙11:S159UO'o{Tkly.|u9*H`ssf3ʲ쩖ڞ)~4rmN6EsGz3;ٜV22fԤmLTH኱T`j t xXv_Zx7-9sfum'&$?\JRgHO,;%sdp@Lp$ 3;s3[7~ O0VTo3mS-Xh<t-~y0`sw \fgJD L'8cg`.} 2OmLc`JϨ\ wq[]L /U熮S瑱X.Jp"m.^'מoȘd{`sv̓wwcV_03%d!oZ3e IDAT X00g`b"aF`+U@́pӾdiz-|?E1?goj g' 0\+Y>_3`M܃wTZ)ށَ˙RXj1s׼-ϸg,(``` a `p%3\` kŀWu4+ ,oPQVs_t15x)a3>J4^[EModϼt+)Όkm=Ͳoʲ1f`GGG8>>1]*\ ӽb0{̝u^r/:u,a9RmVGXra~gx; {-B >o4߅)#[N>O#iQëvL12ʿ3GOOo0 hq1٣^_.@ 4v;>>Oi)oդi<<>/71~0[pwS'~-U;!1ކǏq:}';1G75esyR79ru!Ks93M> tNqҴ44;\a#k6kToÝAK^f1NOO$$|*xh|v ˎq4"ڱX \1{m"K$)3djC @,دژz< }ʅg?k'ԏm䩵9enc# hBTI5b-2GO'Ȑ[$u&̺vLO  .V2ڮle2edzӓd&$Ӌ~ʤ]0 .stwUW%"!3Ox{DV \XOUefEFF;R_!@m@65w2g=$$7Vp>ob@y5MaWgk/V4L ǧo͢on\āՁd OӬp6=^`ʁNzhǹP V6ŒSwrD]JS'E}Kˆ1v3e t-Iѳ/|Y{Lzq{^^"k̓}8<&=<0n,~ A򟧸1 !S@J<駋 g kws <^J"E.&x΃*TUxjBmqMI.(x#w  X8gp`,aŌG .$@^,-Y9E G gChNIRIeŌSK/W=E4CZ9zs 򴹿zTK{f3lKFb3^{j`P+I@ ` bIr4.09 0{D 91!]8ZWs{'lq8b9v~53e*2!3>47edurCw@n|io_Wvqkױ`TlwE}o ^ -6dY%'0 oraH=d@5EC>xpƌ: {}'JSD3ucp ƒ(*onVbNe)SR#&ݗ´/ ޾1\Q hO 1m,f \jv4q4ڴ(qKE>x+ldqݭԴٍle䑹|z9K`93NHAQIoO}Oe[L9nW"{1M$Y(B 6 t0XU={ۍ:&{Mfugl6J2k̍WV u_a EcL;l-ZMnY1\&[$x H7Ѱ5(crIԖ&żvU)V YсS"M ԩlN)s?I7>R{鿛jsq 4(cHdLx&cuyj ms:Vz Aodepc9+*}SX< ~Hd:!m^Xc4#1.r߰YWqCz`R LvC-0#מ:R 7V]/D"]{^-3<ݴ]yT /9'۱S@Y̼swb ޅNsRO07 "  )׬)'9@˜VfЀ0x9 |gR4ؗx~}55zu9unfQΩ =ڠiJeV2Sb>cWW8ᙹuY/ZB*DpwKc6X0 >3b9&< Œ1Qbs‚h[8v^ >N_3̨IХ-y1sXfDv/%D QX1jǟ*gm ~LEaE $u:[?iaL& hY#1')(<qE9EIcLTf:ޖ/%l>X)֝Y?\<!Ir`CiDX 껐+cse1ﱓ -GfWDsh-i**)pHj݊{,XԞ[3U2૬4 jEcq ϑMXhH )5H?fm=&-vr ^wkhƩÍ.iI|EH:ł岯c' /̷"s8\H!WݥXUKDM,+һi,]I~$xMm}\ x "T:cZ=ۇ,g͇t{tnM48oQ>>xAPAɰA~:[pSzƞr T.11C C&43CR pղR҆Tm|qSe+>k-n',z[mG:g 4b`1cF'(Oh/AJkw gRl W%nP"d)u oPz =.4ρ?U,&c8i9DK)?ð@wFy뤊?"N]_j[].~/!H[wZ<_[݈)Dhx ya|3lRhmXAR 3wP⏩oCj$F2rN$?ϸ*O*J'J㋝]Ffp9,dS<מ1R\9v%U$$E- 3e[uY/,[-"a'CD稳xJ'(hS՜"XTd4D.YA;w¥ҝ 5@^ Eϴ|tMZ_"Bj&t1#cZ'I`v"5fZ nfy]H7ƀ'R2j>2;cE5EOgӂk3P p:1afH=_)`PK!X6,1pTz1!9g1cXRhs=c)1X\CFEi4^k]mSUn69Gc;fz'hcppA@vۆC/][ˠR@P:7^Y#YhocMߗܹLjS]px xJ e +>fFqw2nfv9Ŷ͈&TD"0ƍ 2xͱ]$hupm0&Kup|{±Ykk ޼=mvxun4֚mq}0}F^2:iL3i<JWvNλ],N gE>L. '2B| .HTX?UNnH{PuRygA-l۳b=̮m*rqmEl8ݿNhK(z{6A8*G4Q=6sn 8 tДخᓪh@ȕfl׉hh0bV7XQhDEer592(#+wR;:Of:zW[7t+=|vL3>fX/|&m8%ҮC+:pĴqEVHv4Pm@?D/AuS[E\xm^Oµ9[>R; %w Ӝ5xslwri0%hakck\>h1眅V^? ke3^lgr8}^fjB̔~4B_-~JG;jk(;uT^yK> A.Zn-H&z\ZcL ,( J"<d ̔Ym_ E3L<RO93Ebd#.,.N>ƳB*m[7xpC9=pE}x/Ҟ. ™xݥc`8Ȅ#D ) F+m7/'l6R*1^'9Ĝv*0Kuz}5ϒgX\ ڝ,eE$\a(}Y U 8*t+.S_a.w> ,evXޔ)M,v6y&\y$kc#w:JE@S6.lZ*3%ՂbjY}fh! N_B;0OXJP*La.eCk4v'r6SnfztX䭂b%r̈iA)Y ׉IVg W\Oy6Χ9g31l*eYջ]'A Z!)&rKuvM3&ӈX̌  nC,-o A6;I=zk4C/)##L=PZ N,NjD/P1AKR҃Ic dХ-.>b0Ymz(ʍm*g̸|I`}84 eJ{SV)02VÔ`z Kc$ D\ҥE.Tl̅hBn*ۉk3B8"Fq feB(rg !]L(5; \Aswlꞛ2ސ"=ׂbH6R+3]),h%tGwRƄ^C> IDAT#^K{S p RuSpurFr,cj#ɔ%d۵'3j2}RS܀ʶMivvM;+a=p:Øzl G31d}ͮ} ~J.LC2975]0\J{L8L8 qo"k53s@q1&†|fZ\*"f,!a;5hyJ8Qv{p,:oA.kZIw_Rsn=vspg,Ku-ȶи Hm &o.!)-d]MdOH7t $ߦZrvD)m1U5q7,Ri[a~VF_bƚ!lb5ΑV|·3\Ŧgh âƶuz{buNzS\Lu[3|:mI%b@k tNkXtomV kJu5w;H%?tGc֑(oqz 4oIіphR,!=rVXn }%zr0w\`6,(:Wﱍd K5ܢ,2A8691o; Ljx;wJos8sn t{qmkkqenЊ!G3%3@7v23V 4"6"V` K rJ9c)sD )rZ=-؊e%"1lcǃ^THpϵMsZGdUD ְ5 &?xKl]icB&tO{qUD "T`!cH;-7`o+>06wNӃG i498 "H.I xZ|666. ƭxPpNiQEFc\L >3,OJr9J>ȷ:a`#Ӧć /pEi*/+OڳscjD>)>Ko2v`8u2<xapcT&5#1a1okE[g|痈Ʋ:W08d-&r&6 ):2uRSwQmN& 12o}F061LU8D۾ŀ3.8b?o l;(0RuS~npR MMHXl7 ó3rbC9:/5Fy95noBMHaع tC&눖ok#Iah*~ d#V&oM}&VЯ'Ɓ$3Vތ:sOc@4ɩeƪDY♗YʾI`<ǾX6Jc.jFg5D_MU%eSmYi1Z~< Y%(ΑQuQ\T).]΅,8X15=a{GDuzeƹhjrٳnΐp-I,J(!ff$#p +Dl(-ij\ﲳU%)*^r+CVEk\E+.Qw̵<Ԕŷ96$w+,26ABC {H <x@:?\d. >OLJ.BP8.q8c\C.q^dx pSkbJ?P2(NF.S61 ND'D*Eb`5~"칰zr$ G?#0jrbxn+&āaC# =D30w]Sep%DEDN~Lژ\| t@Ah=%ֺLqjl8ݝGߋB{I۲1^̾73 0:NkwS d4a;G龀s'Xx0WZޥ|{m](f Z XXcbaS>erߔ>y޺oKPOh paFq+]$%V'gԈ@PQM$׋1 >A嬟~어t)P{S{R-3A)fL }J~!#/ dvm,qvUlׯ [MNaG1O)Je F?ENJĊ.n[s? TF(4=emM腍w_YstoUO)fp`v 'Zn{`@#< ;f+J5!拀[^ U6*hDPFʜ]0J'Pp wSc8wc"Y vG*]JC32Jyby+WqalO]|zC Lhz,:{-~䚶٧ SmN ~f"Y2rN9)roA+jou/PB4;|Udɀ}-!!X!!RUGHLx@y88gJ X[tF}9[{ Kllo(ւ `DŬvסp,6M&na2Vs\kH%Dsؔ7 sC- q ̈>vJ@WYZsW?'^ڌq lfttQD,,Mw+9;,Q1R1M f;$X`J)h3|8cP#Ѳz_{D v۔cks{noRQޛD=XojX\X/*aPl}%8OTB[i4g$gMhD$L1^l]~2`S; xo+-`c܀/fj!.4$i1;%XИql6"My,'<(8s_iOS״(d0E ,Blo 8apE5ꀴȕ,|RـӴc-*w%W8vM-|=ء ZZ0 U=,!x4;/F`C7Tq;kx`,S[OHJ>%>ToD鏟'@, ?eRJ1ٛl`[ {KMp\gJ,=S ?V@,԰>VkDJzk`z~`Ù[5fM#fBʜŌL]X .fuW| _ WMԏ6[%^*XN@STHVpLj)h k^x6 Oa4wq5ej؁XOEHB)G ]3SA8|SlF^H-^K[`qAs%e=IIVx x ve7ǬX΂J̔> ?@OQcRJ䈄f6X/yK|UG8~2EoMAGH(1F,.ٮi >J| %!' \A] - fs;3%h|%>7ITh߆DƵTIŷsu$Y,ܸ^W0T.MVTk&x_a] P ō"ѯA+LMyr(M0o*`wjߚhZ)CR꜃Rj7P),-bw_'J[ZN? b6{PPÊ f,kyב6GpRwcS)UЅ7ܥfWٰaiO,KM%Cﳭ;#Nd}"B);^MLɁSsѱ}7^8p) M`(Jqӑ7ھE,y:?k" 15~ەxR(Dj , "@s{Pʾ4K^ѹТXGxK+wirXA55ոvdNaQKG гsp`l׍v%NO0MnS,6g*yiWsxcX (3X|Q39T TI:T- Xΐl%+'58nIٕnBq\5?Bk1AN5 IDATՁ#{Q|TGDGp9+kpܦ<ׅx%yYY"Fs%(OHϪ+&"%@Q-*bÁa|'<2 榩Sv62bS.JK[}`8{ ,YzTTP7q$-L^}-)JmW?w53ɩ\fo T쭙F6LZE(wܣ8Tbbޛev<Pia6 lFJ"E8%(.WRkla"o9ȇ56 ђ="]fax|ۮ-W.M XjXLe&y?c׭lkbzو8Ċ &fceX7Dd>g&\JfZ m*lW\2ͅ%_3opz ;{UBªՁ%[Y K g"-L0FâZy upZ±#]ΈF*T|Ȕ$2:;T059Gb)IfzM^Zo3I~ 5=vϭpnk !9 5ՓXdL :fAV^33*ADtkp$+MMJ=k5tYQ6m@Wldʿ \.쟲.lbF.,vb_ţc$\fG"c8߇I   9pZɒR{m A*vS7GOi,T1;. d\”c[z"1:NHm{<~cą+q6 U8Qm>R/\OU C r\L!Ӂ Q iw5K*ATHP 5<ɋXS)c[\΀"V=?3kc8O1ԆF,Kپo+8]a[դ _iza#ny@KYXրknV vtֺf[{sSnhzMzT,sbt@ﲭ6HH"Rsg|Fh}Vx',Ɔ̐IQC)Oy6Ӆ,TeڟLUZD3"E P%6_Ԉ HYb`KH+s@ $U:.XWHp?FkL ), %2 a''0q"+sOć@:ìf5)5#Rw/fc(\ijGW,q9u>;e'S{]}7å :0(V^.D1΃xQvAX!O f02SE͡?DmĮ~GOr1cE uUϸY.i~tEQ1rFt(\}<rz^|8(|mr`*f[5%@vjv g΅糠p7z"}` >}6U#c adl'}λfWϫbl Og٬+\T̈f{}c-<9+r7V^Lr ξ guPI6SU@,ҁd4*{(<@Gx1j_%@<'+^+0\Nd\q` )].*^_ QNB0\戜퐶P_W'62~, H{%=r oP+n"L*X˴xtʈ졨.;ׅ"|']xwG\ jYȑ.45nLM=`.1^{ ~l5X5t>Ń\V/̵`4•j0,9nRG*tyJa`6}&{ sK1mUqjyƂ@S1W>(~_D ROzٽgO,'c%v2µiw.:-|plkq:sneܲcÿ_ CAl'AfĤ kh34gs ; 5H=fSlYI @i(D W~>}_/&]Gp,e {ymo\ bfPRѯl!"}Vmt 5;ᚒ1ܽ!ȁPW[F\4aev.fDRa[Z Ɇ|Up>tKQ^53(͕\+B" ")"YŸ6+B3Rp]NhZ %pu w31\q=؈8#'\NVJCli RHJX4'LRC!S> ]bu=ߘt ؞R)wX%"Ö9Jl25]dK@ZhgM9.m2; sDqu{7lcd"Ԍqh`eSFXsA\tgh,Ŧk ?~]x@;t}sk gͱ\ Z@?A 76֍XpIKU&bRDX<2f "4u"s4ET,>nBؤ"l!U=Zb+{LX?a 4-!㥞sRZ+rdDggkqS Ab}Ec1 R/ =P_o|Cbũ=[qK DN\`.o@[ lć.!ҾGQFr@" s|v'RTdť1@K n G6` $tTf?;T֘Ǒ;0e$hD\ tZv:sb:B c>zG xbIȆ@+ d^FvB$,eX sX5d@wr\%L-@&jZeX: Я7d\RZYh"8B|zf"a9Vȧ|r\](I\i0 m.#]uVOγcL )H ~m&^,1DP0f07&"\%ؽqc-ETԼ6y}ҺD k _V 5U&}ϱen g}QGx90~VEqa,DxS8v"!S#I30%\$& Fd帬9I `#k|c9s)e2Ye|%n !Lڂ7M`(~@khGȓ>]ѹ@cSeE,w.\E>yWUwctlk`Bw3ӪD tIg1~_*%ػ0;wS1\HʸS*.8 2b ¹ ZI?0Y`[lh ݯ Ğ cX&3XkaM vYcm.rD{=&Cuc :Oxq\~c{BqqdKF*#.gʢʅY $nL-Za)he</yA4q9aR&" b8SXVT|-@np^i.Я$瑍 JJ %bØ;+s!SU )!zhyHpws6e>oַcb%۹c#LLq e\1肅)L9|E]-]_9H22 f.^+v,53Ηnowց{k,9#kI\CxIAb&`fW'dnp1TE X\6BƬ%\ ]t͓%|BpAOEYЙ`rO8އ  daͼil~ئINc!pk9Vs@>%%iĒ᤮&Ky$Tτ4%{+W R=[i'"swݭRH2S ŘD|TD;F iyklKJLBm^;p/Y`D܇҅c~ t<Ŋ4'S=&1pd}XvJT.!Vrnf1)H*7@Ͳt-Ki kkh^Я_E}x1&šESdʑ'xLF {؊.M9:V ۉ ӯd/_) \ب-Zv3PBNVO?~vzpȪ d}c$B¿H*͠t{xޞN5wF/c- &jJRƿ,!2⵲bij#,K`%ki,WSC-~#l4xv;vB⏱׽f{gbnɮo:?ܩ}{$d%bdSXm 0`!1F-yI8/!؉DQ)NAlv?sj}Ϊ]{&)Xַ&`];)p6] _&K-L48\9T;-,O%Y9븝5K&q樖2Qmt| astF#klQ]e~)DVdlK  ݖȆF,3GF2Q^'.̶*`+..xW<*Fب}\d gr[to{e*Gm>P!>w(V[%S6efIZPvw$Z:,LLBev:9wU Ħ S֚2\p+ ;mm"c~86L`+ln$6 Zd}BDJnJn8lh}K+:k?k? L9mﳬ-,M3ٵ0}; p[S3 ijЯl(Gd:)2U`snZU;eQ "8iL<:p(>;E6V;B7Hx}mg1n8"w~0EkZ 50 ,,Gm*I&{~Kw8|ܞ0u-,ĐRl8'Y1tH;d"TsOp$Aӌ0, j `E<f. oWa HYd۾Sa[l(<@bAP_ͷ} 0Q4s!L(tUw!B[&x ʱ`NJ~⨲36Nhf̰Nz&5l\Fus.Wߝ(#{2F[kvɤn[̈́Xanvsap%2!(g趼PI~[|PTP L摣uj>iױ)l?yW͔+I5#{35EY2L Y&< 06H82SaQ6e H_p[3r 7)*fÆxI2rpLaNkʺ$ə Q6|ښ[kɒ.'Z,!ЌN>΅Oú9#mm ,X,2hFN6ݕ9EL[#MU_$x,7Ў=c{l=c{l=c{l=c{l=zlSJ&ަu{? o-!"IP(`Ȝ|xtݨ7a'ןs1S0B{L9bm6 3$&m-6O ݇/<`JXjH|cn^THMslj&r$Ox`9 ܤ `"a-a 8AB<,E Ls)o c7z2?}Zy)a s3"FL٤/dƀmp)DpS͎ YC,-|3b+)qC`)""2{C> \}v*u!|HZCEn?Kb" !Qg _B-|a+C :0Ij{N; )g>@%`-Oz/.Ps'*ǯ"Z7=xϿR}L_1ĘM@Z[ނc :v  :<52IL;C=7Nh` })~1 ω-O2ϐ(LbĐbo+* X;jg$fW~_&ESAc!4fC} 1RU76m8 K~,3R$R fyZoce( S}6E^pnXC"C c, Lyd/P$@Ri|l%0s)ú˖X2A |0 ڄ|$jmhn-b4Jbj@l^`VxPeunz`\KlH-@8#Sf: fcˠMfqu6gS@ ch!st&w,wt )kWR}}<ܻ %,dj<ۧ,献? S:CLED` `4/@Dk^2>.7c>i& [7p<P^,epYW3fxA1)cPR1߄_3:Y @=lm oAcSS%k,$}e ",R,ϮS^|,Oj~`Iׇ뉈 TT}RA9]\{I`% Jjf ݼer@cT36sY]_$B{yL]) sk&.DĠT]d?ͷM5?kX̆ -WMBo*Rݴ/=<m.\æ*?[Oɣ\ͧlK>{ PGPU+6[^^.c͡Eʉ}Ӏބ S S;LAhU܂35^l>gçtƺ$lv>fZSʊf~'`Mc0lh~_fatW|Uj*S|~^lFv?˺ZZuvt}rj0kCWgarʐ)@%Hk]-~S-X顂\_P T/<ݏ_F"` UN΅b|Cd)6wG{ّb$e(D.RG>V>WcpPk?,z~pH@kfwSd xCU)=^8H Ϥ(|$eTF+OMf{P^5S<9x:9lLF ,V :qu~;0I3ʧA)?20PZtHSbo[ }>0pD9d)n,<:_|n٧;py|p>LuTMK-$ 0 :u }e5S1?Xʗ8CF" uD{oӪO7Xs"p2"U`Ѝoq]jqnQ /B~Tx|sI>~= J34 "U#?G/WkW퀷iY}W '2dfWUe(1e[4`/̀#֘i(Ho3U;K[ 6X79B72S|Ƴ(&;~\`cZbyp 6^&,C@s'JW\@cf(V%-,5wL%)-.-g@TV),_2Ya#״ oR0Z-!p )[H)RpVZרΎ:ݨp,1FQ/'g_e3iFXU!}l>6sA'h3SP 5W ̔÷ 6-IeAJVB.(SӇ6ڽfw~̊XC}5pu]Қ, !I}L ܅z.`}eC 蚠u]X0UT?5e O)'z1&l|9=_Nٍ?QLv!} 0F<6-^F 8k6cL&OȴL'Cn(@57٦1VfnV3à^H1I||;#WI/O Rcv)a~f7Q KELP`=dfh0`Qsw_L5TJn2`2`:v'beהt4wA7j/L 0! :KJ`Pa*NE#}a y^.6 >u Te`ax8g68&ᬗXnPUB8|n؀='FӽJM0O Bt6Qt.ɰe8 d2--$\$&c1c 8aL(LMlӖP qL=wqHZFDRYuoZ2,R|2%~ ;ވ&D/N1M;uJG mjxSjbC0S|ɏ|0"z`6%ʃ[_yO60V೾d9XE*68g6 L #~9].f*Ms jg085([5#\|‹4?}>g\Ϗ)׋6p i>޼/ְg[+ݢC!f=d ngQk^2rVqǘNNl6[1 Hĕvma\;`pma 8okfn.v΃8$ƫl#"jMO% A~-]~v/Ջ=]29juJkIu2W>7~94*K SێKe\<᧊/P`-&P@ޤ~ygLQ+~$MӕiKiQU xeY5&ƓƇK+13@Z1C˂H)8oZ6^aPx2\g0PeLB%d\4MZBCm!MBG/A 1+)H{}!@1yAyvxyR .vvvb?YRJZkeP%tYb_k<[Ow]٠^> ^u37F'Ag}:vx}b˺QUewYbR`0[Btb~Pʴ@@2UA9Ro))(Axr8@ uKQV 讉)S& fYǼ,gK :iZJЍ_TxRc&Qx07g `p)̙QhB% /HuuO.7("]4SPR}Fdӽ BZzX%Pw"X; =f37(+sfvJZB6Y1PYYX7Z-pczAX2 q✀y S{ ' g3Pka[ႪS*g |Inp+?߻nͥЇL䣡9?Q$n2}T,b?XNkg0gqpVXfptqEsZ7 й[-rf050q MFI QI&@-Q1N2513Γ5&\7ea B-3zlp|ȱ֔xc:I@Zyـ'THgaFn<1̨i'f皘֟)֧+bh"e.j3X+=4`cj|kӶNј A @Mcf#h "`Ą:ǞtG0Z]">)\ N+-u D]Y1cS < p?_ K0,ɿ3ǿ[ɡ~{:ڻ&`+T`N\h)ؠ*aӽ%ce,j.֯U:JIcJ mbܦ|- B>5MJki#əRq#w*kP8$Q_U4*٧|#Kl:1 Ý &}JoP6QORP-bcPO'96d`}l]]Uxܲƌ!6#8_Ƌ`{\,P1cFX1,Jj)\7U +cPZ~X/os"CR^,sr(%P!Փr]yr1o<%0YPvRac -kL{YyG8i(]EhH[c>.1[ȝM- 7 CN>iĹ=%+p YLlMyvQ`ċcx!$DVEU XNe|v%&F<;>PicZ eg :9NW [*K\-+|tYcXf'5A \[ԨN( yiK!3^j LFtה&O̰}8 s ~S_l4bx7~G Y).;*+:9'k¶]KTwU\3E@&dATdu n)!޿>5Dw(mZUBWHa?3M@@čsQGvH"1'Xl'fyJ+.WU7>^,Db0N}f<^]M/?wHe0hT0'wVbJAEd:m_ qUc/7ۄ"(~ &"*| 1XB^hz H9bER(%{ YC 534/jn6K*@p3ȍ -Ou?, ^dEc!m2#=f΅:1%(L9.sRp\m}fd̏d\3E@~(6*:%偀ǑxB@v/9멝K@^[;LTTF td@yy^Vx4U/9j] l&4 *Œ1& .=8 & . g3H:I z>mAt=F;T #A1s3I`x:lpQ;]Sx#JD{ hvJY馄Y۬@j:_FMw%h!,^dDx>F9ރFS`7%#>c*+~쁠Hy4ucD bj>k%o. Qͩs=,tR*|ʥχ=SO/>3޻6/S}`t`բOҷΦ,YAe\"kMY{L:V@I IDATgF\5۹`|>A*ӕƓK ڟ)M#$HsQČ < 6]GL! ]p LUٺ|i }(m7]pd#":^>f/\.U/)bvxyj<G=Oo3DGɔ ܾ6ښG5nEJ]#o8΀Im2oew)+HX>VAD55cMgک&229)gO:ٷYؠ^̡OS{=d0ibYIe;(W4wywsd4BI &. ̓tm>#8kۮ벓/e0uHuΝ#MvJd) 8әbl6l>Ϻ2w֘AtȔ 2L4z^S6 S]L`'bO?fЬM0r11)MJ9>F6Wk5wz[ءWXm8f/ơQBQ,D)z3ndu$e8>oj`ǜ 7lfk\w9kW:T2rc2PɁ6\It,jC udx,^gtA>LԲ13tYu )dD)ۋ+Rcl8B߀+`o0Z.΢ez5LkC[#hуCD%2'C0A!7(-/zzyS͝u-RY"$i'~r4SXLSЊKgy7ȶ|zXs>uIu/ dV%ZQ@F x/3I| ub=2c@v_GRZ2`eS9i39^>KJ}D9!}{M3C!JRP1k2kc&/򘠾kWO`_eo9 z@ 84=i?<,/.>':dx%e%r֕ ! Rvl7cF:H5u/Ք\GyiDu{6j 3 9 啰7rI}O,|'FhIk}(YlϖL]~2/!&$C*' LLoSTS3䡀9v(쏲b1E~*׾0܉iEʹƕx>-wͿ6QHK1\"vuw-r&wniѸvL'(gQ3qAH{Wa]ݡ)]T|BCe3D+$8A8M}I:V6:D$*mК  3?tnN+Պ',%Y=RX.|&-469E['SX~'YĚ)ދ PNZEP@V'·`pf1Is2>Oi/f63};tH3SŐ]ַccp۠+n/n%dK]~l#ssq1ݫHEqqԄ@4 1ʧYTYױ 559دZ0 DŇ>'Ag_0u qwAXEu-IQł *U?nƏ؄>jn<)W LlnMU̘ ̗xkԫYPdDx*%xꦂWY!PBGDn{JRPoZ*HPSd'9_:o0uՄ L,w"ߔ (1F`0ne MYLԤyooBVQJRit|ugOTܤfoLcց93R^S9F~F_G#zg`R: E 4h4@GbòiOfXU)؋+r2hř|8cABr' hCD$ėc<[?Ԙzr֕Xfc2XrU*˚;F&<aPD!uiR D0A[3uh|kH9`IU3S[q;;j-wXIU@ 91ν7`^HR0˯a({c WƐL`ЈRD`o(*"<;\\9T6'ҏE&Zj~lp9I^ ơ16 Nۤ{*{}JwapM(f]L~hb3SC.Ǻ iMҡ5S&v?QU:opKLh S(D_jAtIЬܚS23eMb4D5 % {7,;N NY.Pǧsf^gsWYQep3߅&5rxd]h\0϶NLA." O81TqŇ|&++feDh*Y`ͬM˾`AgnLXf0ܐlE=&'p:`7I44r"nlLWm)ۮp$MR'3iw8(()s],<_"8@X&N9 v~ v3RSO1Uv~'#6P'xk zf ۇԶQur-FP^aњ_EWSfFa~6JPI}ϟ(`f <ψ]RIOxL.CJ"ҐJQ%֡WE(,ecIv:4շl4 #eS76!sxgf Y/y.4S!v{lxJLԘ+[lȑDZ\`!Qt^ |13z!$Je:=ɊnuB]fFSOgo"9KvܙlmZlPӄ5gUkc`qos0(`9e㋽ln"q03ghzj>7cIbYJd& :!9gSi6- d$LsF:ʗ !@}LJޚ^b=/eXP{e(mx~\xZdӤ&: IZBű:*&"+a&KjdTɈp8so G ) aSՑ+SK;_M x⶟e>5V ¦vĄMfČE*dFۨm0a-NQfSf~g.Fl}6ccbf>k L0HPG^*Nr/6 8"5!ʔl)@ bb&Tǂȁ$nҟ#.fb|h}hjSc6!4^NU{wj q4@vcymR%W%u>`舍[6VBDDqn}Ps[&chXЌi(l;ҬiXmܶʤM8VnR4cҾ0)q %%0H 0ɃJeMSㆲ[6ǫAk&WA'ns%2ZlSkwR|<' +'Cљcv\8 Z#ʢ֟yn*[j nfxԄᘯ$+PmsCzSfJny?E!0'ЪKÊ.ʩr`fX.R6)f1)eAf!tLcKshjqpՉuE 45WfB^1辘$T3 -NѩCʹn>Dl/]jW#7*tjMcYw ueX%*9nuLt_$_ΪnBf\$_ d*:*)m*iC =4~%Rٔc꿙}5;Ha&)Nt:H\U-p5C]#xŢ@?}q2YSc:;cWe!heE' ₊oxsZ|!=O1b1cb \?!rzYe2! @hV9_G:0+Ҩ*k^$˕1MlW}Ȳ6G@y"82ٱEU55Ȅj wbJoˡMEmQeU^|ֳNa[ȸP[ ̖%  DB*O-7R]:Heʅ&kO (S4)CeJfHJMT658E{ }fsYv#3\5) r7ڤ Cn)נ!V> ص>1ȾONxbẁAȳ-v7Ms_[fS b3BC)h>zH\pX:qxrg,Y2QI)ʨIS+s/Qm:P5{Omp6k i/hVR\sMm`G)㐱9r.muu?E I8`黾10hUF+jq|̦j#H@PX+f}WB}5 S3:3xmS6ʦ-\ .ک? 81fljې1wQeHf8u]'8 M]څr yXJP:`SAZ(+ZA];nCnC;S`}خ]g6X.Iv3U] +)#+ ! IDAT V)Z+3leo,5+&2A"H9CʹR.u]pZ6IĴ|ЦASț1vS]\{by}KR7Ͳ]_vI6NzeL~9}Np`Wfӝ&&WtzQu 3[ ii-6Μq͢ 0Ϥ7ux sXΤ=fGP`Lُ;ii i*F~|y V:1)|똵T )8J8{z38}yի(Eަ|hO#kf| w-9 X9NA99AA.6(^o'm@젍ii OwIdfw36vMi!L@^P`= M<1 M'UMO+qw˓XWKLh0=nXIƱ/6!M#|[Ky+) ;~MA1quU8-kpj4XD*^SIls~GBT¥)Ɵ#!'6@pw{hTtB]f0׋[\sís/TL4. ^|yxjQP1/5s v'(dz(̆MD{k;fk`sܾ|ٮqo$9hv@!`%%KB\|,&Ava 6<{ mY2OAA|s}\ㄵȲEq`~9fIʛY nLQ s(<ȿ=햩D𽥅 'tqYW/۶O E:aY {d(10BZeog]}m@fǬ=5\coHZV-Sw>L β Yݿ3*ePrfclKmo1W( xMA A&pʣ2lďXgueKY2{--v%g o>ϵ ,^%?K]0 XQ6ݟ ~4ڹN@DnqիХ֯Ȳ JX>KP8վc7"OHnHJ`2Nl0e+ǀ/U>2ŌH~]꘭M;ߥEi`Bkz6t>voT?mv*|:+ F[}!XDT征7F\XHN)K#pϫRYyk%\//fٿOGSV  |qlmH)U.pY3\RQY?v<[9o4th>D9:dS9KLK[l皟v. :&4B"Ą|%bYٙSFU1iuG*=kn1I]f7A֝){׏Zsӊ.(ArrG&ۜM[3Q3-sM8yr)Kl SRxe-X `Yn!JܯHLR/2  S>KƂВTSP>Q.RTv&0pKLK)<]Ψv&?t |C ڋ&#;b77%l#}gs;0PVH‰`cBto>D vYc2W8&*焫ŘшєNZ{M^[b "{E6 ۉM@O/%A Ty上+ VmA7lJz[(`11 TC[< Wliϲ!{ \_~,Cci}' }$ VfOQdB*۸^WSY1 41j|c&kPx2J9>#N8 MVW>UǼtSw93t<6/{.E{ bN&{pZ%~\i*k>ޤ$AWhUfPY&"ѪTw@:> F| .jv /DiZcF.א)xRFq93FDfv3Üyxr\ 3R.iALp_Jۢoȟ@Е`6p\JL+KJRhz1*ee?-Nĥ9x‹{=ql@MJF3isZbɴ֨יbn)k|Q5TrZ` |6&lpsPxm Vm~b&+"̘0e`f ̔˜g)?)וӅ3ܥs hzٙp5q]A肋}bDlҲM+Gь1Eo(("0} '8ݐLf^F(GYLvAzuY\Uhr@SJZ˹,p,K\aU wl,;j7{"ȸٵP8~Err4ضk7k樯ܩsh Z~^6Ё$|27]uKl">T6Pp,*̀f/Ʒ*k؂6ɗd0x 7NnZ7ɂЎ4o EP 6iDQ#r{'@1( {Ɵs|+ : :_G>2F6~+*;rV9Zl'biY;1> / x1%"e0RiM\Pqؘ 3dYp,dRJ?7,ˮ>ޘ{YS]nA$&eQR7)ق!em D؆`!5 G6 6 M6gv7ERddƜqs?=8Í̬㍈{[X0eE)g= 3X-@zIyeג9KpjUl_7-D'If ={+`+ӻ] ^XjA| '{ E6؉ck%1PJn d f e`W pso-&foض˲4 ]?8PCMfS kj WV/ %+PB+l79Jww>t7/U 1RȜùmdyQgiY g2PNzO .cpRY߇Ac-P)5cu>z?Qp o>5V̌7)ϳ&8Mbs BU~<]I^Xӷ]6֬`3",w޹1zπUbT@L 1vXsaEd6}27+l(g]bKnq࣮L1L^>[|[`& ~<=mNn0)[+|xMI!AWɛܬ6%HT&M&>ҊTF4+qFgmk% Z!LHR1ڪbcjRzJJ2ES0T03fڌ&ߵ-^ tg}1a($qWq˶x6m j[ Fݳ[jnAEC.2'-T׻M`(wY(Nc3!H_&65$ib9%=N e0?tȦmV ]@TѥEq\)s35 ieoضhB$; k%u3oX16xݶplqwuΟ˶mzڀ+ܮEI "cȥ НCv f s^3:;K2":3b2-Յ9{u5\% FC(anr)frqE`&/LFejfp2 @ϳ|;pŒ }7ladsfwmOvCoƚ^*@T.ATzrhNdJ¤T")ڈri#!EY[ 3ǩBe ~*b4ǔKaMc/n\g4z~e A@Hi,hz[k4Ur%^gW5ec& u} w2!6bl\ kZd ?vu `fdwwjW b!1ND BP7xPDCA>\l%T1~e7-)Jr?r]c`mKUܙz͌o+h׹)S1X`<\R-;1)DoU| ò I̅.c2]*w̼ *~A%!6x XoExAL"66-zҚt!M*@P!zHwؑ}v5cR b-s]K64COo/m"{*v D8Kaݝ  pIOl 7s0!^tFJI2b_nJ?G$ב dEA pYS.~l#e{C0P=aX+l1{LTJN3fIQ=~%y1?J'6V+6m UITCQݚ͐%#C,GvaB1CY(楫^F/h~(Hr"{^HMlW "Bcbwx` 5H0Vk g42eܗ^lm*n "]@iGfR Ϝ6"y5[*bbkYr gDTLA6٭RB 7SL7 s s3~Y" 6}jAzmom$ pPm4+G/VHX! D.w&Rj/4o5vu|fd~TjR 4;t ^䒐(R0 b}~s)!q%'mV6M6`S.H@O Ų@`EȚWb-!h|^0ޘE!ey Ƃ0Cʶ~zɹJ!%;,$e0s$He9 DgƚBM'APl&F3[76$Q 1O/aES݌01b1Mv>bY4mZ?Af<.u E]. WP\̆Mm` S堩 dLaFruAK̶]v;>BCCcAi] U).mB},փ{XObS5~1^7֛E.lc̅فoWyǨVG՞il)5*If0mXD P"MJͣ\_:N <(kYܙ-,3`Nee>8?ư4MÁ%20.cmmj" })En+3՗ ̻rWy/\Ogn΃y]g_#cI'7ܰ\6 Lɘ Xyf幸¿rCd/`vm|}.V3C}0 1c0gАP= dq1- IDATGEdG@2+C?F+7#yi1 WB uVs o~^:GB ޢJfS&*azE)q`a|#cs!S9:7dgZbvMAd'2C/,wo҉U)oG6B\=sv!1P"!cQ@F&#p=vrs6daľxm+DS [ eݩc d˸* hCF}7oj]h<5 Ӳ ưT@S>Af"*. C6t]܍{]`tM". l6q/TP ՞I`!1E^ \T?BeLNf4f3 Cud0 %:&,zdnʡ0&rfa_Cqn+ldp*XK AG`^ ،&63Խ߃GN ,Jl.>Xv q΄jⷐ쩽p[`aU[~-`TcB:&nXXKòB,9rJi膐eֹc#8u)>-gxSSFq 9!f"kMڹZ9:zѥI-<5v*R,N#b9~-g;Sى!sst"XV:cϛa30nSXyr/:Z-l7MYayaưDFYgBpnY vX 9ށ-pν+qsMV; --)J}Z~0;D[ο?>x!PO`;|/ L~1xeD(p>KPd\^nnZ En <2b?hml/biY v+"H)ΠK^ $LWV[΄ =bSjzSg9d )?r{S .rhr+L<, Nb-; !R~1δg{l)'؄n ST]W*/Bq[,ˆB>GJlV0 0xf*ab=: p=zx(L q@ 'B8,D>_\&2#ĐJ\;ٟj1Iy3-KM >f:USc=BJ . =Ov(|0/)Ӷo1niw~~ W ]47ApvLRụbș`Qz&u{a|S==?#eާO9(I͐&8Ie c'R.s$ycJ0lͰ?{OА* TO?Ov"I NdL1RG#@n<\ә07[ PQ=d6UXDr*6z](…7*y Ì&\vp: B,l.1L5e  *0 OpˑԂ5'~er}=7Ge`}`j !? NcVo~{L9(0#) <, x^4/l?c?c?c?c?OB)1Q쿂{*'Bho,{ޝF}{@}16 <Jbߑ`Lx-R,'(HȀ`W^Y?>Y@]ghMlawg(X۽5i6,Mf-gqqdВ |N#ˁ1dA;<쿤9tW">bB0Ϯ9wɐc;bj1}59@)ʟ`:?Y蹻y/쁷 HiR@/|4Mg M|np1No PWJ f &Mqq?xZ 4-$D?[T)cM|?F<|KHdl9N9$̷;M\z]Rr!5gB@27?pz/*1!\ k!خ& nW#Laxx;Eh (gȤDb^76r XS ;d*"Ğ̥qx럃],J0XqlprN?E>ǎRFyFޞ{l,2rSsQ%L6IAt^'<\塳! T868SIC;B(~7F (lC9F8ra;ɖ}(?kӎ`!Pi^LSX[ba @1t9w8,`¸Dy~#DƇ-"1_ !%9?=aw īw1qsbuvJX,&dė\ .$Č^HrL=9LǔîԔPSz\$L117_R0G 7v3wX2~.mҵm1(#XScϪ0sK KR# =26&>9l.'!hRK\Q eȤh. nk@$&JR=b&a/g1 .;cE"A=)" 3QjS1X )f{_#}1 '!Ba1>FʘX']B3[5&sR*4KkZր-13X4f~Zﳧ$LS+F=TЍɛܕTFT1&Xr"EoX!"UMdzL)cc>‡ؘK0R=U^cMOL}a2_J#D)l#s&xŸ 2@ҶB>c,0@`*%M..WJ}MY6͇aSl+l%(fZKwW-2 @U>Mf{-jmJ S1Pld1}v(K%2'٧̐Jjr=yaOib1 ݽDLD-N ~eRj`f;- R,cWuL!@tc/ŀ]|KH" .D͎SJ}֚glynWYRQ15" >ck|UԎ'gwL:[H p_tǘ8Z-vwؔk)l!! MB)4?n7ՏicF Ȳ }BT0ˋX!//4w}v}9.$maVzvi^x%kHtq=W kVPźɀuR ? 4C. %Nx,D$}dv?iꋓGT[3|3uoZARjpNNƘ\ ^b-mVrZȔC\E}K( ^*]+RKTlf^O%T&ˏ^+f_j'O7 n[_sL.`EQN.%H c lv>$eT1{YĦ #Bc9І|<|˗ R*`x"U*5;*f=tq E'3魲=IlV!FsYQIƓA '!g@lv D ZtD@R9R?+.jwW̯ʇx6 f*H@*P\zb6ԋlH|5lLFy)r :o|XȁDr,$% P9m}2E.^H0~>%F0`*ĻIJҘ\}p3E/5۶ oW`;\3!$leYYMg9gr@}H2%H9@%>w *gU0M+>=FW%jYp\{ZT{7V{̖|}7Uࣥ※Il}7T}#f|kQ1,&S"7|lM7`Q&dYL&(dxRP 13C)fT*"lwHՔ,d>)Ȍa@"Гwd?1?77`Cb"{^F1vɥ HaJjhV*5}WfWρ-l۠8A}Mxh$pdù2T shYp>Bm|6t߶mcA¨Qk<27K0'c J*M,JvOgwK-1"Pr QOI0O6n: Zc2 6N׀sLν[d%"/zہ1K`u|s8>r*M6ɪA${%RAd\ ,nk>zbxſ]N%3b0[xM[o-E1d|dl4/竓(⛃)f.|5C[t~!1TP_I/XM9[ߛ70LhL\/+c1*=ЁDeLĩSkt9G`.aigxl@盖0T |}=$ܿr>z@(f&b2 k^]NVŌ-bgcgp$.k*)_g_ʀ#࣑2&(Av,76 _.W"itct3W]ud:*p>$q9?/ZZ(fLőb0ZLpW>( pgues0N  8&&`,|OP!*oNy5i`5㩈O3'cE)S%B0'^|dv/Ṟ֠8E} ؋[[L)fրq:? w~ :5x07G1Cv&N_n1EM4;0-0ނlq&*?a,_i7X؞.wgGh8X։d?U\yfx왿GZSo\hWo{q{!(0NX,pxx#aX`X`6a:/>$[4Mm4M[j<|Lhma\b` fi+== 43(\i(|'K9aD?zl,<; ּH*&p\D<\ bCASJ}eZ->XR@ - > k>!+ܮ'*aDl8$ꥄܼxi3^|ُ\4-TOnž &:'fS~ IDATL7,'ij5MiP5L1xcc5[s͜8%$xD-M, H9(X2ꅙXlOɼfk5^f "B[lL Tr7J;ϭMMR?ß+g*  ojkPt.]0נs,'Z4Mж-꺆m[\2n,>S\k-P%g@Fˁ"?03I~^"),8'^d VJkKf|B/}V/ccL|>ZECb@l )<B5{SOO/3>6B:G}N~p8[,[T1/FSטZ|2Lz &-m.$$2Gwr㮡'3׸c`Ɠ5# TCjrܮsM)Y_Ħ㍹N#pPb3t@MʶiT-k-VD_\ LL~ s9h}$ T~*VlqBa-ŝ&@퓪-6M} ~к{ <S< (k/|o*~9M{ȴn :htGGGN2k0$8gZ6u+/IG;$~(H9~"p K tʦX]g(O80;]d;Db@V XL{,^u9' <&?*[fyu0^Gճt2 )ҧs(tN8qm<[5U' o&8I0L(fJI8?{~7u{oYx OAa Ɖ{n" A o ߱Mu]45Ug- KeÐ<qP_zcG1%Fht~d@'rtŧV >U,EH, xĢ <hh,S68aSXq kѐG/M,TY>܀y),i(bܤnIgylP16VH 5<&kQ&ywKel'g JLS^.&Fڬ'fӢ9?vu.@a:9rtG5@y> aP90*fmbܲԯ,vR(00p#DGXaNpȽ  Z|~בN vS:(5VV1;E52)Z\:+9xA 9L<=vTO1/yuk)T !;88dp9ЭV+=.n$@R^\nș 6xw8&F m,[k㑡 =W$Jcbb9;Q@cIaQ[m=5׋+ܞ]Ob30B Co\ EB9.y`Oxrr LS9aθobNu|p+lXy˪6 e%s)q_۰xg7xf;XZ"/eXE &ǁQ0Zo(DK$n̏%X`Sj2}Zlk!D‰sׁH1"&:*fzmR?A44ލEuv n%<;9rXjm[TU5[Ȫ!ڋt1[|-NԎ"ٔZsXx?gb məR܆0tAᘺ|4Pғfy_g)4r@>b:o˵a-9up}>TdKssbXW(K4xibH)̩̎ag0x sck3 a:3Da| }Xw-ncܸ007Ēl#j2`m |>P#cu10pFi{̘ TVUŕgGωgdm[9MLntΧq:S|!幪/f^Nos> JR$B,Ox @!/t+'Υ9)ӹ뮮U3R O ~j17&/ K )I .Mc w4c lI I)5?FSd+B` eOP N` '׻fE SN)ίQ5. ªšuXtaK0[| nfF6Eb{M0~)3.yH8 ]5|=fL.a! )ճ߶̈́#?B|el=$܉Y0} dskA}7;ikԧ7anܕoTL: 8$w?, Ӷŏ/\ulp1h XT 32j10XTGoa hqJDpIG}60 S87O8{h@ۦE4qٜCl Gۇqc׽3'ŗm|m#B s.[1vF1O~TPr~Os!3L]9 *rזrttĴm-4%GEׂ]n^JOh3T(a&\a)1̘bҘ< P xWA8j7:px1gJEJ:x&2yrsƘ)_p0SK/"{}"5-7 Lv&|\]]׸tuIBMgKto૰M9y |&  \#3NC@̙)_lqJz-He^-Q%@zz^e? viUN1Glh%ړL1,lIϲuzYUtV-8S}Q"2M^@-'!b1H < gH6`J 3߄U.6fRUNtʦ gͤPvFT_M\/b,#QʦFױJ~m=bb ..Om `ܶ0SLa ^22SdSi`[j hi63 [t-𤃲"£PJ*hO13`f[h5]d!~J|ttԴl虷ʶb򙄺bUH-^^/(HO,@w KӮU$09@0pRvi=)<Wmfo jhy@ LC(sTⓤtޜ &M-n"UAn}3"2` ¦~ ̿4!M'%$D5  {&O~1* #MZ{Ӷ 9,=shf!"r>]Q< m Tl:cm OGENF2#-g/Eɯ?4)˃K_Gxж`8lxu6v09G2%ڶœSz'2͓^)[Z%g֕ `]ׯˌ Ɨ'+ŹA*PnB2/sZ4tnT_٣ '65CM\HclwKFe{55cw$WWT15yÏMzoC4A˭v0ǿ2[Lmfs)Dh'h:8: :bL Ʈ@}?ﱾ5.sԴLmw>r0 *]VU:/|IVq[.Lغ ՏX~Wb4sykБ՟%O;Ѝfηϭ-\kM[dh ƫlM0q* #%[x~.1 `Ǡs(YhLAwrr bJC'07e?&x-fza֟#T2,S6bÚj!pLQaWHS"M :7ڷ3U$!%dg2/6e_K7Jy;f?AKkѵM'A>۝~J| < _:y^26E--o]O:f/zmG͎Mwjb(ΉhF#>=(fO39M/?>E+{,Qy.<`XT/m1!s6 r6,^SiAsA*\?T$O)?{^.<"id8^ qOH#׋GH3^ Yo` ۬mݳ2$B`-^4ܩhTU0ao\}kx؝sɿ.Ln@^tHs\ċP[d}^O| gl `K7 KP(LԬz3X TLa3Bx=*"j(Tܘ-A!MQ]\0Ol>kZj xuBvnہ1xµi7:z_0t0n%赹5hZ/.<}wuMAg;øHu_hvCS6v/3Ptw.B[^ 12%%Ejڙ;;R R oa\]l2XXN\4gZ ; rDx/{3_d1h.SX~}KMG^ '3x mXB3s~<ӾZbKHyRASY2Q6O'Ijrbޑ 8.tdLXF˚s_aRƮ)?ݤT%#th!Qe-擽Qh&^g Jy݊6Sdj8(OCrx1xk^w{YaU!Es\'3^1Nx&5mB .H%+hdRj'X6K1,A΍Κ ;5S|\Ɵ.G4l_跉*R3Rpsy~{v~ܶ։4WI/@[>glPLLIZco"H)i*pHj+>öՏQ1y!ER"#ȟO51m0(`WېOHԺ+$9[5B̔ꥻmƢ33Z}`J8tq_%L35S}15&]E4 C:rifCc:>'GTt+0^vJ&8Wly}wHM`rƒL#l"9V }P`fKܢA7C(dk!"m|sPjRmw Q1{1V8׶ˇ& @%+e f  lpBiߞedHwFH!E(r%Aрނ!dM]jr Ubi*0tQ1ۥk s"p@c{~ҷ¹q+}H=1bgZv6*nU̼bs\^g`kN llK>1V xl \tN^%*|\r@.o c;碿z.!5mfePP ;P:͘1Cj6iB.ůͽR*Μ$/t![[ kݡ{X/;h0W秊 ~- jbj᎖߷7PYM oe3عz˜xj3?C_b}egr6#j*ssΥQ=4%&xk1S3.HBG H)6481`%vY0> +jr1u1-^pW87MWI%AlBi3 G)GY~"-'~ݱ f;CC.vPWS3UZlt!75uÀ]my_9SlY$s!EH"խ=Mˡ\;5K9[|϶3EXga3 iuXa4%IUw* XTKm%`B,6:0/ب-P[sl ]73dZCWY 7}׉i* 48+lt gɛ-=vغkSdS[۽RMYo6tC$[91+xviImv>[{;M,+,6 ^D*eD|$`*57=fVZA|\[IُH<>*s.5mo5I%֋ $SD؎#QD,$Hsil۲5MD zt0Җ0Bq<2,E=)3cfn+pN- 6o. D@|ߨZ]Rl0e!dj‹}GBĕX[Ktcfcy<>Q^W ʗ.unPa̙sgNzs؏ѩ^!^Lvoy < :Pm{;^_)ǪRIQZ̡f-;Z2Ec]1JVyeMHavef,H 6Zh E<=,^1SRZ=UZlGC+!0n@˖m.`IW9Iaf,i3 H ]uWSήŪw2v\ ?.]YʾgBcGm>f=KlW pao2* ؂?ɊNJв17:}RuB_Xv@t?#vה w*LfMj!l?!^wBüica"U|\!X(|-|!&Kybݕrc-s,X+n]h4R U 05C '\ɯs@YrLfȘcMرqƱL 3.c$߁]o&#e!%wlo-%@3)CkT P 96b|Eo"9c%o}ܖ3KlA˞tpEĂSB#w/՝λaig9'"\(v\M6_ʲ<6zP)b^x!0U]3]g=_TqۜvNޘdqH`㝡3y{83 esl7,6j@n jʏBuQn99ߛיl0 lmB; mc>c'#d@nW+^ D @مN6:,V$=srk:3pz@AL,o7 dذlɆ%'=Xz1l"$XgMqgCg~\OdDUUy f̓߿ f7;{v6tߍ8C; qs2it3E }Xmwҵ6*'pzPPrtz쮝89{N A .Ϸj*  fR;0~srƃ=tlI8%v$3B[wee :AJf5+^1kbk(ΐk;Zba0/`r;4IR"G[ ~>[3:ʦt;xYV9}b|>lwú!3y d䮟Nfnص^B lG= '>T'鐓Ha ld(\6%&;mbyn /#PH:Sd7$\XeH}+@1UvibQ1F3.b 9[`n. ƣD bCRiWX4>X,F+E7Kv'KDmE((39Moʒ4Tٵ]C!g ,C7f.kk;DFD#dJus3@s3ljjʘ :j1CDMMczVV#u1ˣpH!nT2fƊcxV_.XB }>.u}sbQ_h$Ρ&[/nAdQ,} H49bnSl ˰R |_<1T.d3a#AF79@\WLmےX68:szx2u=(YgE 5,s~D};vlgH=CĔ>6uL!/t𐓑h^Ż|kK) fFTO( e+C5&IT%[{-6VhS"$wݍ1jcN1 KB„'ؐͿ+ײav7>j s \r:S%`456jI ɲ!ҧMCY U@KD )IQrxVؔYm󕱷 ,)_.&\zsF BwNc8_LꯥTr,mV)u ֭^ _6ޱz$Zi 6h ^rl"j7#=5K 5D@@Q"Y.͹.oKIݐl4z!-XThl%'/AqР@tJe:5wR!gƘNy“;+^ ~b'$AGA^;㍱]]C aH@z2s%rRLMmbĹw-\fZ-| FXRL5[MtV c=Pzߥخ}MVi+1{5d^\^oZ p0SO)v5?c x_,H OAog몺V`i+b c+5's瓢[Y"Hއ似1$XWHfɚń&;syvu*|(&t [PR(x~O*SoЙCSB}V|5E ~9xGRNdc-fĦRmB$+fGTPhlWǮ` ['j$D|IŮmD+3_D/zŲ1Ng܉y #ލ#f2<)N>&hn g =QC&2 fk@˱Gy`Tijr*%ܪޞ+~J)B1nb+ ׁrP>il: o&0xٲ_'(9"בP[(}a1/dz ^T盔Ŭܴ=mďm9-T}99hATVW)LB^R]:,w 9nH.A43z&GQ6:T %`Η)R Zk(g]DXBۆnK2wS xڕbtLR<+<6_-T1o!ӿUcV{!c[HXWu J`8&G ^r6}p 0\|e3@=OPӿ{SB5* g Sb<čIC]1i8 Lm[_m!C~9@jT*ش6yKYm6E> aPە\|x^Չx]RNJ_1Y=e-Í)ǂlK4pt6f^Dղ g-b< psh+hR„%po]|!TvI|]7Xk7I"LCDz(o^/^!bS ]!eu <E <qXLwk'@C=_SF!b+ j32&ڼd+.[hZ-p 0!iY&Gigwې}e7C]C][7 |CCYROؔ`;ofZ[^)LN$bѱ"TV(4is&.4^TY>]^qqzr-x1֘(Yқ6Tp* 4`\g^;(W 4 ;M|[-6uU.?i`o< !-[ o%TuDM]Q%g';$$|? bxڟ}M"PMH鬻[ШMdH@R*(D$n6;4B"]?$4 m0/p}}Qv =COq硛ᒊ͢(qioK@'&8^h?Bϙӈ !όx]1"&B }]:9дP7s4U%#z 1'DB@Ֆow!3 ޤTpdNb%Rx 1XHAwKZ>o"73~z~%3z߶5l"AJ&@:/&>ʪ5XxR 1J2u?o8SJUR1\ިe>'̄sĦQ6Χ䕘42p"N- .2j|-j-L W2i<$6iovT.y~ J#\a$<*} fY[Ĝæn1a%t>g[lO[A*%il2lpMJe,/5g{vOGpNS0Cs45]HaMe +t7UϠ%& qŤm3!,fLDzCݙoh \ $iD>K5we>sqhHA8dƋP*e&2,x}n'y{&++&WX0vs%]ϣG5~S l'L?+;݄BΥ/T)%}:Ω]&t@q4D9SOAD䙜к^U3R*ﳅbX5n; m/DiFcF!WYdx6>2߇1fpg i|5_DgHcFmhmZhwQMTLw; gSo!lRUl|n{hMFN]]H. BT-K/BseJ82]3s~6г'X5]ae#EXSk#ݫZ*˲Aҽ wTc\Tua2:R!Lɉ(< WU bA71E;شSO(Q_н^pBB8p*@)5GkrHUիt'a ̀Xzu#![h͑"(T4Zйr Y'@1(,۶Nc>_ݨdOٔؔ,0rM>T,e,(B؀> |#HPN3|SBղ$Ҋt>qt6`C[ elq`Ԗ,l`HcA$FL^}-?}Nmҿ -or*BA@+溸!й.p 7,8LiЭ:7䄵e3⫘R#+Α:̡dڭZV 01|Fj3ᐚ1!bBK`5,Ha7ᯑQ솷GEıa#a]fQpY;-Nw )}L=.zVL/{*ۭ6@B٬sJ7+B'Ox, riKMи}~.0_*d)˦D *( $Y/|+`kkmE{s#)hs$) tOIÌluooY\}b,lqݨ[\#V )SqߢۙEJݟf27S]>VS3֢F2WV;PTp@7Fw`cDU |Jh&_R51>|?\ *C[|D :e4$Fڊ n>,ow`W psϯm3LbVxX{[sͧju9h]0Jt2 psR Xfj< 6-bxSt+ե s]lL^Ҡ,(jv̷`aqN[l. *k1aԉ2 ^j`u &~Y5 IDATRl$7Qp~]۶ě\c*1!萍W`2| &`)Y "g=0>v2YBvQd1 N)mvLYJ|FDm}v-%J .y`ynIO eJfp2~@ #Ip„TSFnjZ%[̙qlqsfh7 .dZAG T!{x2f{ɬBn azjl=(!vpBx|E1[-XS:P:( n7WVjviOԩMGU03@`} tltv = ;/ur츭뫸OOuNUSDzyzIoW;H 8k\X]'(BM}Wס'&x+h3WܤұZBj )˼1۲Q#X rX5X Uc T$IX̨۶:tiR1 \ TE)[_x])w횑U+!Ȑ,I<кān ?S6X!h/E{1ejRғ&޲O5-^A }#n qb8Hk.>7(2 _c[B )vKBtMr S5 !>aj6z2'TۿmD=mˊezhW 'S&_ \1 XL?FH˦|l@ʠU ;BV`/b1lajR"k%X4@}*B#D;SAQH.V\t>MuRPM1KW?CW:vaB_4椟3-Gg~ʦ9:2;EY(Vq}"gV Wx"Kt#>PLcL|t"=ںD<2EZO)i[ ld~g|1 c֝lHNRʯށ]lh g<ۙD56rT*XJ<6Tq>d nf"y@#OtalW2&JQ#'ujƔDiVۂ/&SbHqLv >bP=|̦l /DFJq=`e땭вDU80bwN=0P,wyuJX96lkr֞Ĝsl~wVmm[K58F2 FS0)eބz2 [2?&a9c~E9eZxq|ჽM-Ado!X;~0c̐)=/m;IBr,w$cOCb2 R˦Xe5=z\&PZS6:FcMjv+>R°1u6rY֢ۧRnR;e8t/7RKn3>!ř3qA;< n 9bGɲ #b3\$b@;WgnR gWSS/vtp&OdFMAY8iz#c,<~1bö_ecyrY6.^R`\ & u39uOuB8A%DԜuIlRy r1b ĒSÒҚVOg_(">?O_kv\rKzmǰvc+_$Jbr9>2mzs(yPG=(N/\ .؞{&g>(ϹX+(=jʧ n b‰/ˬA%Hv2PBj(үU#ȸRX>sgKV.E 5㽸?Ϭٍ2x^؅v}O6_yn n.B2ULݔ xCe~㔈IP{ |X#xb:akj uqJ*[YRnZZ3ݧ~| 5 ;lG`[y߷_Z7b|.bs\;FY}r'!23uU~yZP´5u$QщXD4Ī9\2;MpKtU.qLrC%>U>iJJ%ŗL"d\#HAޫ ?$,{3M n&8>Nm瓟z&nKt 8?~bm @Q^]_Zp\XYaSgHpS #Yr9،#ϣ{ï\!BaF+NHqv,PM DXA^lJ!ĥeI1ݻkMX 10#X6F6Q_  iI؝ ;޹r+;ϰf!y@Zf0C<}E0g8 N Tg^]+Bz}Hb a9-\LKϬjO-Ń(bfIﲗl&2ET'aXH0z,tܟJ fk/F7bLh;æ c 5lr3e`]g>_Z2a v),L L R&a"Tģel6WYeѭ]0 Z^s3l"T${6"1|y[LJ$l89A4 ,0%e"FTQp-P,)bJqڞ%!!Ff˴`Lbht.8~[B@B #'s{L԰ޢ# q>O9OYħ#<`k~DS&h6(x{hsB0qc"䐋 t2/)4-* 5Q )=`s1'VBGdN/|1UKC6+r3Ox)!}{ݽG= I`[]eˇ\Z П%!|"Dx"ƨ1Q'Td"D"/,gI9PB\ Nδc/?y]h#xGA2W薰Ȱ,W=@U9}>l 1Ƅ>_0*3*q3 fkB.U?$!%X{G=`C -Fo JV趡KeʾЂ0'6йeMd:gVʔ/ijʜclƭ-Фja'1z1A! N~iIQTG9D )}AyCiqɶz'=f{.LR&3n[VP?̦&/2!峝(&:E߳PKrN&)}lǀj㭷 ,q6[ :9Z|´MTFʧǣhe?VIOrD78+)g@{n\%q1$R|>OlI8S B&! H7{d*`=?鴮חZ*AeRەͬ0'e8\(Kaj!fݨz/ƀ[e6X\,9m)m27TƗ>P! SKeL.$Hv+T,InMˍZ.CEg{XИTbԞj@dMd^8{~ V+Z y @q%;睴-Mi/L[ (^=I·`SSlJ)%:@ӳMUhZH!)檫b?<CHP{r 2S9`YHFCr6  Dc^׭FF-3x16VrhsOPnB)Qes(_Dm0FB;C-ޏ[G5kjRV2;~XUO#'fſt k"XGbQ@3>Ċ`[cq+6 XtͤR> ⾓#ዹv 0#]K%Ĥ[o~5[]=C \ d٢ϹBBetM7y8{M9[hMst윢 ݺ_z$|8矍ŹxEBZAt9S@%iOt;t?.sZ90OG7aM,Й39Nl䩧2e۹ ίw&!65qnp$ĆS 8"+f==]`&@oΟrJd&в}XJgUI|t{=&}-&YYE#!TMp -Rw汬7ŵ?'aibJAF19&ct,9r*>iJT =֠;f̅:Jpk̅p=mЍ!.z)M-02q @fZ,t`w$@rvH0`.Xԉ2G\x~DRDr>Kc;h:6UI_S~U_qβn/ |:[a#̗64kS=\Pf(sti S}} ະ vtn!6T=>yH)ksaje@7v4WĹV;M8E7x,|. 1LJ 6%yfTYPNՔsQӥ7Fw4L 49.ұ0 8OZvc S8Rjp{}R~_$R9w=5-5|JS9љzcKYө UG{gF9Ox)?(UIY& 9= Jz>tHL/ZifL 2{ ܴsYe?sb S3@y>Bɉs)̩Vy) H13q~xȠ/ #=>eX;Xj(؂Ǧ6!{ShSbѪ@0| å@27?u9ҁo()BE9ߟY)CzXt$9!|!KũbXSLˑ!Id`&g<_K={ItnmG uP=&|>3E8f>xv1(@ VL kHRRdh_ 0)P<=Ÿ&!v -*u&hhCN!zodS 3mH 'zаC}Gts)JJEEak,WSE cCL4I-oE,#Jz>Qy aX-6<2BHg =E_YJpE|V'G{f .=;'r/{_*O^#%|1$KΥM4!&%w\T;\QB*<@,MK!^[74gZ`;/N{ +!Cǀ#,a1O)MP7 IDATܴ <ƟaaܩDf"1F>?"lEBlyI= `r1)Gs>@[H:R:x;wH`tC!P%]ScqY](ܣBމ6Dq}S ?'[CTМy!ݥ~k P@([IJ!D0i 03fa3 r@qgŀb=lg|o1%0JbNQ{xPLωH+ZM.LupZK`>"=^5̶$Rs"̡3Sރ)?ƞqxJ!l3S{E=gHb. K%sXpecH `D/)g.?̟akm` f^H1 3"!)l͏mU\,jSlS˞̐0&E!%5V9)j<; = W`ؚ͗T/WuE,.I ۶>b65MB j@ /V8| n*"H'(!"\7G4hBq"3< &}JO*6~ 5&H1OOc!{ T#Ug:)H1ߤsсAꋰٚr]Ķ~0 Ȉ?#Jy3)w(C@G8[y amC 7|T@=IzgU{f* ңQvp2. l0ըUiWl yYѯCka9ۺfqb,6$|ؐn*m8Uc-7M\W_j, Fs ,}!.D"b쌲PkìNn!^"dwT.9GRho2w>QX@ uҹR~S.fWj͠kd8y?tkm|iJLJ(6evb BBUP>`X > !ʐ)f) G(l>=I:Vb #fIHV H_)"ZLXk;A1!lIU6US-Nϰ7 -zĻŒSe)2Pb!̔t:g,LLLʦ&cK_U愫e&h>J5b?!@Ƙ5m0|߶7l8E7^y2&~}OO鰃!]^CQ$<$1./>E??cKiuzl9.6hDZk(~K/N21f#A:D |-5^/ xߓQ OxHohpfcj#O<}Taq~[U7aWA1ֺ"'˲-`s7$f|IN)#RjmqV \'UƇ(O5v|?-4_<T~hs_&I%0?nMk7J dYub8 ?Mb>zg;C7(}_5˳@|71Ci&'/1v˯8TT= ;.:x<;/@Ze cNk<`kzđ>FrX.=ό/Jg 0f0U&kj @ldY9p1sRL-Iae֢LPRl=-ؖ9_f{Ϙh,s=zSsVvs؍/ɥ|zԗE]P_96Ep1h4Z>Ӆ8 )B BL="`j~㋥!:H6]yR~ېϒ>C4yώ.*" ZTŲe@1F& 4/cL}I` }|y1o*g*TPF 5=_^: Vx_c|7a-rDŽزJ4{W+YsnnUkP.}99sr:b:vtRM_e23fyB >f>;ҖFA.eBƂ29>y3/'<<"={˟^[$7 쬅)[j'\3)' )f) 8v^3[x32#˘3c@fm[Y4e%3JKX(K P@3_ x)F2Rr,X*XW.>}W^gG-H 0k. Qd:T59M5 i~)]! Ej-3F₵dpd-& 4t l37D٢ `',QT~h&Glz~@)ސ CXjXH /4:o :%n2:r k9ҁN |7|E2OƑ&м-p Z.lmfn``\lq 3}0dvJZLz\5fc1,5m_NĄxo褘P+ƀq _zatO3ZYS8j%ff8<<&Zt?Rֱo~YcYx0h[î1?}y[M,@h8&x7Tʆҧ~؏t^Ťs>lm#إl~ya$#)|O t<6_ѿvk Wyp.LXp@lGp { mMDPkሁ+P,i2^ 4CEXjt?ڟU1>l+km;>t:tμtLtn8*E,Q% E +\hBd@ϟo]H`%z*&pÀ'` a FӷT?۾Rqr tCP*E%H\Nz^lz7|0WKZ.K>$ӹWe /_-jP3̢YT$ 9pd|c sV&YgigUgbS.׼ό u5=zGi3U#'/SpPo\FlĔg_}bt!(gn(^?JU"ANϩZ58*K%R|8  M:L͑Sy@[L \R$RP \Ep11 7rQw#/eUٯj9Od%tP1R18tr)Հ(ߑ>|r6{D`-`-o:~.t.PKs+EQV/*|mUi /' #O3) $ ]&2XX >{< g=7"Ċ&X,eァ@SGVza (T5ݾA%DP_se3JTʝ S(OoS)<1N 'A瘎Lˢ(0kZa0~!#X!&QXZ368e3X1ci-JjSNR!$lF@O?a>E @Н|kJz>:5f RSos*BȠw(itsbً}8QL i]a2QdVc/t nuU,Q_N6An<ːJ|R0tL˺LY.Zl-< H5eAaqe7xw0=D8cƇ`Eapj #&hRHD9Pj. ܆ybjTC[.nzD n =c)_1/$̸`jr1=0UNALarL|:)H1ƝyZP%^j|uYiEqkrQo;+%)y?\qquB-Ċs܏E?emLxKnN:T WpL;Xt"(ƷK$B,N$ձϏ8a &=//|_xseaLPwun2l ).٥IT>S1"6-sj,!j|o1oRBDvhqJ3-sjކl@̘ao"x /61#ph;d=)FVL5w 8灦h}B8e PZOoz*fj9G}rM~[2d 6p)k!,BQtWX\;0xUGӠ^l4 1e- ר @!/tx/kOI)RōlA2_ңGZ#vP|؋&(Bq@]y;Tg0\~?%Пc&Q&lQӛm_Si)Ae:8W%.+|Qcjثa/*i?EG06W!,.бߛ8lpˎA 3ށ9@t)Ma{O(l0N"rqD5.g΃;bQ¯ ([2T|`+WUR/1&lBn1 @r(^:W[,˶UYBY*oH,=ܤoR2;c1؂w"\}q4uD-}42^3Eңl3zE/b{U PJ:b:x+_3Ԇ\Z&tpr\΃GR%Fu/+aJN<૏ɅLP&7Dhg"o6MDCfXcP-NanRts*psEWJ ;zYt5V'^ Feh<F \‹P1["J 2!2pL5X<` GpN/Cl"5p[ @=( )2p%3ً_c}II^>.Dt7;Eɞ)\Ogb>Vʪ:Op57`01vzב7EB<&":8Lϔ8![<E*^nbdL޳5=,<#SwmzᲟ%=p02UpC%0GUM`8*HSIAř2%L5q)"!obEՊr_"gI7W@xrn9wjKj@ڤIUW9ҙlaqc 'xt^gMz%ɮ4ko2Y,&bfqjTUwU jRk@ -V[A $@Aj- 4ZRYHCd1ޣu?vk_DdFd/ ws3':HfD,x8/ǞU6E*y.{ q9$%0ЩYd&ESP/26>(S2# muf%/deS(~ۣ߫ ߷r*4`սG๾cJ8:eng?K Oy.va;l'[bMxu^^%>q U4t-Deʬ ?v(6eшh,4 0e&1p B95%IJe$S=-Q]ONTD"xC9_"2md8nɘ 4|?>$RFr%H5Գ'`svr0»1xԿ4L'.ȯMoQ^Ea"ed IDAT0`8}ЀÔ; WoRgg͘IMbf p8 VvX|T0M̍18{?#3;9NR`\Wro IR)/2Mo^=up ,WArj,wjVsoj}`ߡ-M)!ܧl^fT 4,~ 5>3RrüJDhpѵKexg /FOuy1y2cnXvS O3)g^T)Wd"g@מ*\B*}/Al.y@B63ugrm=1Qxw/ȡʬ!8ZZan³dMYNL*#2WqѡZ,q|T}ۊȨꘫ57],d*D٩O`&6(h7X0Z ZlLf6'vNYun5]mRàz*Y/*r3m.ȼrp;VD!ܷJq _ڱ{pWQr8!Z }x]b1FCbi2 R}s޲k>0 =CtbR.(MS:c9l&6}d0^uOIn n[Ev09.K~Azs8LK6a {aN rs> <x#"1U1&2dۨazTLL}pݨ-6,YC0<٨1뵟#cN8Q$&Hᄒ,/\volX}ܻ[Ex1ȁ #etχIP1Fowp~p;#`} fAyq<. s.UF4U`da" ,lcw<0628B 9=X8O:B;{beu4wTɱ%@U8A|-~*\SR3}0^G^jleT}5J /fBPċMukℐ65'ς2Pex68[IIOx'|yXwRr}ODh,+O{D)X**1jF#waib 6)tR]$`~LUcgv ?Q>/4!O T }DO| =Ѳs$d>RǘNc8fʮoNT15 <,`19lSds0agSp5dLo*0kyn}$Bʍ&h5frƉݱV/hHY,fw$a9@*;nk'xEi\ d:SbrM` xRs Ȉwg2A%0^YѵQ."5?%߭vo],vOY+4A<)9G=#ðhC6S0uo-~D`ox?G'C!\,E3Y,w琯BȹQ&#,MKA}<@Z|o{XwVE #xaq]bY -z2PBRO1]cQ11`ǯ t׼Ɵs( BRi-0VKel[C/ g뙑,;%>ca4L oF]#>G7bzw).w13fxNj4 އTK.q/󏗁OdL2Xx;|ãEs\b>nyg&vJRke.lx *Muc>]J9ND37 %3U3#'hR&2q }SWld;. Her"Az{A qfWsZܧU'!gMzDBH; |?ûCc\VW<ɵX/ eQX z fW -LUsZj= &RqmN1^jzJlHjܭ~3&"&zW"v|qsT1ޑ/3?OQIGq- 268[}]!f HbvaE0V̸u0G2?T̙v 6~ShDD8b gv@wSyŸSJ172cn~-8❤ul62v7V6ϓx]A3`˽w Y#6&_ҡ:<~DLt#prd[pXu Vjg/ %Xm208B?Lv`.b=:)\}b _.xci7|s@utM >yWLQS7*f9,lw#j#}0]v>ޠ~jӒc4w=|58OdIN8 *㈕>|rbԜ1CIHz؇Dmc%&&F=b"J4+(^LȊ W3};7tCu67|R?{ p* SQ]Ĕ{@þ_nV!0p χᡓ1!ƹ:LLF<ɩV vjC%;+s2f`d!5a"P̱47C!$r)M1݆-H$oB(~\x6m`Tf*n OɩWw#h&r%-snD3xnl N^pd^T.,x4e*{-?o /T"FЌ<\CkG܋%{\iK} fID #̑3`\0U0 b$UI'bw y. bX|_y ^&!?\Fp7XFv|/";(u), #uEM-M<ϩ̵Yl}U%tCy)m:QrM">XHixvǜ()P5)x &!ct]W,+ic%m/ %hoQaO2Ţk{L꾚տi Q2X~~9c (fJ~r£v8U /MT1bnd:6u/,bZ"k=73ұnYKH};RZ/E0Uâbg * (Mmӊyn|br%rh !Dvj$ MTcU̿Hˤ 6?%H+@Х~ھy%{;G^7NqƻӘSD1Q fKgʌ1b{ '^1'(8<1F >k`VKzJLRsxaxG\{}vٌ8&1ȾdA`affLMfOJ*3qTY'TDP&<Ì۬"7G ѠlJGO7sY(KUxs/n##a2ӻF%nZ pVN2AF@"dК|lJB zepnMtU2d3; KF+E^ ^g\jY">Vx)tȰʶ9{>o[dW XmN 2s2xARx4T'[  K,_u71l,]Pާxgީm#_+̓:_IR2\Upˏ8m@kcnko8"JfJy|Mqg$pcm}1]175 dk0WԳCAx @]8J+ӰOAIUEg`yѰJIm1&A:ʅ} f|]'֪4A9{H#jfJ+)}7x\cNl쾵Ö}8iO%ɈrrɗD%_׋AY |v<3b1)I#LT.׆|4Ŕ$.dJTB~ WjbHv3@O)5H'VD3jQ7v}ɲt-;ڧoS5,P^df--&#S]#B4J WB╽0f~ xYM\7z:gch]Կ;"\ ݎw!0#A{׾4gO=u6:ͶK/ wgֈnoB|)ε/ HMɀp*7 RuwJ BI]1w9:Nd#= ށWn IDAT&^.sƜ/4=adJz}}:w`µ[ ;Rv,i!aԎa{u)~\UGL=?ެnqѵoTXp:v Qʫ $VOe5|)bv&om?V:b^\Ia5 6k- O\ $aX\¬DB}c93A:O U>Ͱ\ Ist ͎NԤ1:zrYk&j~n'a ѲS/=V2n9>6}G ,Bmq+ hr[?nx]`WoS_ Fk@mȖZarJΘS"SSQFs(O~x G;,)W—ܵk^`آ|F "y EXxolVH%B ,aj ըGM)|`b-q1V|iS@vwPuf]X)s}֑K1԰y\Wa<:db^l46wY;EM1"0SmwiNZE B9Xk.ih,ʈҟ0O~3`?wp!Ev19 :0BTaF-v9_ /!}l%Ėҡ21^J8GlHCN%; T.-G ՜TPXQ%pK ϒ(ʶ 0x ^pK+v/e)6Mx*Dc?nc'Im-- bvRG{]r¼t酯N>cf&I{)uύ)ZXہA qk`k=͎N`lM uݎ5M-^G`\IR"kGd 6xs0.Q>!xƆ's_P HjwHvk Dcl݁VBإ``b.:J萯KY{E_>˙2Ndy %1T7jܙȘPG!gLGLkh/VG'ok܀S \~2EHE08eng`}@?hg| _CXYrNi 81I%Dَ/I Z  x>_eO|PCRorϛB(fha9! 0ճ#1M0SpN3Hbfna=i",ʘZ&J8 zEv6'[=D3Y^ݤ 1aC7ðlF#Äv "EUaA8EX !@xi.HEbƌ׸]*[|5 /1oBƴ4 &ܭoC3Q 2x͝0kn`[Y~) KV$" A)}O.,VQVH$bPkZdX+BD0c={mG,XUI%T_W}qX-d0ec abE` @E`Kb\rad9LG8G 1`0;"c+;7w+껍z*ѡɄimV7b-myqtpݡ|~C7akT 73YSx "rp FA#a'0ciScbb5߭GG)8Nd\57.̻[+]l2T¦,P!xC15i MMB)%˳"nDw_;]jvLl"XIT[!oVuxaI=o]6:/sD/_e3 fH1o9l ∘BmO[~A(2vGB m[ FY0u\Kh!β䜮jg,36~wPVEM9Y؞ѐvZ6sH$ ,ZtD٦ㇾ5;ZPJ(T Mafrz}22XEwkgxa,d_ $fMuB)i9C-LΞA]Ӳ11#{r:&f~ݾ$ 6Ckd1OO؉ѯ#ʇL B80HHH0YtĭǾ-6+c?;@f$5#R00AYUKY/&qF4'ZafB0^h$yqSn݂ᩪ3,zӛpn4J:÷?}4yߕէs#)hs$쌲OInjW?͉4ӥ/}M߭vc'T\ ~j k1nS|td= ͒ I C&0.|7,u 6Tv: Dn:p.oq?@MhTFCBmܝcx(L &j[x~֭{nKGR$rL@Ǯ!|V eS.Of:}~ *x@amw Z*QƸpv&n#EkY{LddgCzdҖg^eá!gtZcy- ;u>5V̌57\o57.wSbY)1˘L|Cvq:W9*A_ ] J }V UxeXnE  %+ `FËTUm*VCMsW2Jό 0~?w|o~U XH{2S-s5ƍ`jYF AuVN36>玪4,"'\v \%1R,y\̔΍4jLKF5{7Y#nS¼Ud0VҪ\r< LUe 0mQ _"GY|xoɮiع5T=/T}{ .)3,5Vjbrfꔿ6^mJXeS˾}HkE r"\Jkd`fE܈fDE\LuBe:`͂K[L͇vx1]Gb{ι2I×7Xur:nW+te߳Ԡz1xwF?)k5JU16$[2) Xk|iVpē diJɸvS՜fB(q9@Yg~5\^U($VO_ Ƙ(OL\"fPLՀ[%`:h:k넨67ST3a~Tt9%(=΋.wbkAq -+_:֯ff~|ٱ|y-.gv%bu PgD4kJdo웋>1mԱ^nF^^rk!+ͱ*fFJX= =,CL %:Mª -}8kfk`[-w%Y[ ͏`+b?̈́)$f--|fxi12t|K}PcYaA2BunF*3r0^*Pn"{;9! ./! 6'ʊvp9^n}-)-OL5:'n/b~c>0)+FR_,ۖnud5r #tN.X[*Xo.Vbx9U3&pFJV1\?\JfBHVk> ZlA4;eRq'ϵwxc[P>_ooYKگyK'34" )_ UW LM]e^~lW K$7ϫMޱ׃m:n//<ΨM Yl==̋v'``~}PI"neLJl'G9bK td36~bʣ<(S2;M>N2bHfnxv \\k][݃gr0S p7%]+})s4qg5p%5sVVqw[~SqTɑO֩Ynu)V;5;wwALVAʽTV.KjO0[ey#^3ϛ/O2}Y[s|`%[9B2x p f Aٛ|p##BHʔԦ0>h0;AuR(u-+aH%CYG( Uls!r%@*[L9l X U(E16 %;zPIP*g"fb%=؍uvY5`CǁKH{Ǒ2]b:M`=vk0#{aRV$8q?c"&WO}1{0ځGC!ɀlϤe C SC3>&2@6'HfH/10iA]75R2%J=S;YqNJP&^MY^W^t#W獀.X?:e;&z;71HK|N0C[!xj29|+V|su~HK.' Ib d#P$8;&6 |_jrğ1,EXL3BK YFr&A@ *"f"V&el.| 7UMeXD8YA8 Z-m-m[pbV)0W`cZN1n ˉNm-e/?SˡBQbG x@>poCVo`6 *ijutpcH& 3OR)ә5g\Y! _b<JH|\qǸ%x92ؗ^Gz8Y,Rtg0rሤNNChc,a9s)\[s+Y <4$ ⥺(8񝶑PG69 uvVѮ0)J/͗{NIS(0$]$ژz_9eʄLmW _[ D"iݝcoQ ]QZ"!!v[ pK:ib ax$Sf*e;Ŷ{IWb8 d`{w a3Z]^o/^?L8O/Ԓ>.ٍ2-mB;x-#x*CŔP@d(S\4ȴ p%J6* s"KRzˤMش"VJ+|qr~^}`K婚RB7VJLY/聵`><5-C%^3-uy/HNg3ŗ(ʶ~=8T:#?&V IDATH1~=.͆ʁ%s dr0WBh9W! Ww!qe9OM[~]e4fg_q y,F0zB !6]0/Z&i/`< +%=|SG1EXIRV'kY6yڄss")L G}Rvۥ;DQQN,b p8b0J${$?.>^Jləm@0eXw'[}`N PX`Ȑ q=.wO.Ay[|o-lmeB'81G xP5RGjz%t{u۬[FCAL&HU%J pc&bI/LKKl>2w KإWׂvqޣÀ>"bYF2bgZL8ZAJ_a\ç?q\EM.P6V!L4ZDP]dL-|eWY@_bs@¶W 6( [+'|; ؉( 8]''ʆ!Dbysl+N F<_ aױ-; )"] \?Loc8a[E):fn;NKq{&;\MR,i˭}c*b=$Px\=ö]ĵ'\G3Z]\vBU|n N2x*p/Y|&:z`0msLV =;yb98 /7 G8bt73 dRX33fXհˇа/`smz5'1BvBZqydN02[ŸX+r*d aɸ(ROi>..x,`9,;V0O0n1q4,kb3 =xd+'4̉PRc⏔ϸ:x ML>j6BL¶g pa<)UK p0J9f %1fF3SBZՅ`j)ΌQc92VktNCOdA)BsÅS&]r&]hluOmp@cQA<|ZȖgg" ;8WvN`Űh)yH*0a3%_a1nbJ-LQ/cw 5t·ݝ;#SNIpry# 9 : q:CZt`|z>l~0_`VF;)@-#;rzqڊB93)2f:%'@k=Ep)D;ˆ)a[ $ Vl-=~ c̀[qF,|9av;kbC#Q30!ŦMiDyxL>9,O͘r*ӊj/el$-x-|ą8dY't{PI1 ep*2Mf1h` p]^%qd.D`6ʀWb3C}t"`$΄9)g/7CP_.B8zq.:嫮b~τ) x:MD\$e_OًRaȇ8GPJxQl$LI8lMp=jז`q/O+X/R;R0eOX \C xJqcwe("*)P3 }>g*c%TVɇ\gqcPN1Ya->Xu8ca#uYӅRޟ*t88pq88pq88pq88pq88>)p shsG nĞ+Rӱ߇C<|` GϝCꕜDz=ʰ8fsx (f$o1xƉśAVOm)Z)+aKR>=tsr_'=$/N{"S<pjmLXx)YW0geLO.߾,y8LMbL?%\r2/0ypwޕC 8aJcr0@LZ92Ss/qMƼ ,eއd5mS5ֲ/s9cxTnB7ŌaS쥛g ظIϛ?cQ=0A>>v)1NVscL, y%fh1E{.M=oL,\ qDm1GaӜtcR`*@b$g>G*9 #pSX1}D?S KL Qk8|e.&jЯEFz6Bd9 |S'X{L?p`BS#]a(Zxo,(#zŊ)&,I1T|Gx<.%0%e8f|rWjNNwd}?;&od0eJ@{)#xs :V |@bf)͖yl]j<Ք_WR`:%c2Eh 6ؼAzeޫIl>4aƧk3͎2q`G 2v:1|22&iL9q .AwzR CM䛊وEKI"`:2Vd3iCx_3޻ x1l &_boAtFd߇1o"'}׮{P15æX0!9< #S&┪{%Ca5jql:g |ϰb>vO[e`b @!cނ0ɮ{zɾsJKf=ل ͹>&?ŵS2? }]Ix~}{g׃~_DԒnؿEӵwMƏh32gN1\|G(Q#cƒO2Щkěas;?z95_Yxiv4| p>"T[0ح3sR~ |)v,WZE~>TLDM`fv Te!=/5%&j4@=~Xfy_%vMb%1iy7Kvv4ny6v2m,h=U jNN_oNNriHTO4[\&}Y7w3&w{1Z \Dc6{yG ;~#ߤ>ub~^iH` T1G񦄏{ф( s3|#[c짟vLSϽvgDe{t]ho;WJLVUlZuO.i)xҜ?NHI6JS}U-f_IbX"W}`tƋ19ԗ>k '=y5wGwkFiY1I1l6mc8 Y.X-&`Z( edN~l_w˻zZiUT Q |%%O .@HUʉB+Œ`j[<8~T!GpnʴԠӀz;M3VMb3-S@s'MP `NZ0~y~iOSdJ9>x̧{F]dqT={ 83 p"&K|>l6|>G]I5peʗ4[${%9FI-vf@ <ɀS3CUfnuo`.91%VoH^:YD 2Je<2GT'>9`{ ͭ/o'9)ps, 44b"^pVx c? IfP"PefG33sw Lt?+!@jX+U {/}ivt_/1s;[/oE9)[k7 ;::bbl6uҴ4brG9ڷR?xR ̳h~G _[[7AJ٧"a>_>dƛR۔P$cfS|[[_{kVϏ+N<`],v#'''8==ޛʒ]}#2Lw"SwMU5D<@_`ذ_z Ȳa0e; nZMSjj*xk2#b凈\s{HCss^k}NNN8>>xkcge ج_x!+k{1SZa1?~Ψ᫗ZH}c-Z*.XGe1cBđeKĂny^(% !;. @'''`v@r2(G*(K MCqTT*R!!X$f;Su/c= 0z+҅lT$]쏤(A?.r}c1ۘ}o>q}LВ*=lcGgWj \WX!j7;\ڙ= Br pO:m2Z$1C<_EC rGH'l<c1~! ^β0BQ#Pzrq\\{կ6Cްt~o!]t׮]uGGG{'Lz s4| ZX Ie+TpYb )<`!p(5c{|nu-ͺ"?QiL c>y'3Ƙ9b1ηںSwT1ʗچA0-Hnm㭕-^ORzUUEUUF::pMi֚f}|Q1Q.98 7p|J >:b&") e'4+j:v_jn`Ԩ\/}ڟdfd&YmANfHIR+^oжQFfC"r)׮]}|gɔ>-\UUuf!xϵu+VXpv\mzI۲0e^ʼnp</DB,sܷr«nur_HƘkxxnev1эnT[3gOCNw' Mw1zڵk[YK׃g.{ {OUUl6꺦*W75nZ-; MjP#+Oɓ"Xtu؟?p҂O!=~" ' %CUB'X1Qgq-_ .90>2* 8-y'oDcr{UT :Ks]4Krֵ1]Φndok^nwĹ6XC!l>j{6}+V-lXL$Jo5UUqV7Հb>6~pCQ[uts(aNhӼQb0"RP 5OฉD]D0=,jnT,˽AoZ]W60gRE{co ˈ^ȝoBS6 ',;;;VE>[智ᵫ^):b@R.]䪨@y4@pZt(wΣ4R&-u< 8,c'wZJɩ?5nBo H9M EݏM ?k(Sk uKv*q#,e^E)N??VW -b0 `Y)j/ ZHq fC]UܪjzUs#c23\((o4|O<F.[p3QE(yBɏ%ײ͆O ]5)(J;K훦)i]! "ʇҖ'\l˔hSznwU8GRLDKNW3縅(]pSj!νP]P]>Myh! y/;%2$ϼrcuQsTz}Ast}o %Xq'XKtD52lbTnJgk]KRL-NMN1 x;UNDXƛH<%7dy?'x= 1&ܓUC)-m6ߋX4r|яxS(e=xR+Ξ9>' `)EuEzq|ǘȀ+ zeu^3n*pgRwhSQ66#Dߤ݂_ TxmbXr"3RVW [{)J'`AFO%g\ dqӧΗz7BuLO&kR%OXlTIi"э'⊿ 賈.)]tAlҳ h^]׼؄nH^DvQ{:WX* / ia(_Qkn1 /.Գμǣjs,narf Hw8 :U@;VNr xwTf$/'N2Bq}y$8hN/g[f%? [m{u3m@[_>$ ;ٮ`=_#ŦUUœukW53\Ih-$O^䒅_D,(,|g]R9(1 Nc!8q%-g)o|pLQ]+?Btcϻ[,,(A9`9 GUt(m} elōe=sf[5MïoN_yέnn{G4|Ϛ\󨪔&:lݿoQ.sfMY1.Oix7xt/2U  [wgDjnꅰBo\XRܘ8F3t:J:Z_nS/?-?ΕQ +Z>:l";  jJ9 UlKb[+kǑl7iiX tdU|$6O1SY9 uⶃʞg(+M<~|(.A7x2\R0۩)/nۨn>P]Y73?6\y>蠷F*zAEr;*S .NM0{{]JWYM)8BfIc0PeȍXzPU~kMer:w[kqA()+t79hU7c* NJxPD(Wf]S)V+)ӞܖikB]&`c_fʳ NV͸0x+Ѡ]ϔLTX |Y EUM%m ;NI/rnΙ`>ް$Xp&9GzXαxcbznTsmE7Ae2V'tM aR/!\lG%c=4<5^Z:de(=-< l<$,kR7e\mۥ~jPt-PU"Ϲ%Ht93u :8t i0mU;%9Y5);:z:4ɜ5쾑M5TyZ)/wn]x8"WC{d7GPtL f))\~FUOvv-U:"ɨӿh/ Z(z63b}gݯj rZBADz=$> +(:EfFrmc=6Lä%gB<s_&,J_SDa0RE:#%(c)p;V}7 \(!>bxA< -K[Da4;eN<*j LM{d%,x"a5yYKU=Ī^ӑl9, W*WfcDV@݈+&X2Il#q.G0Cw.ߛn_?(w/ci<(ːdHmvE$>OY P=B|փi=BxOZG0I#ɺ!!Yb%},HkR,zqSNRČ{^3Xun."uw; (וֹ9%v#AyNyu񈪰?nc]R@-'nA=$RbX<gSHB[˦JjCc‡Qe-Dx"LU! 7 rY-L[c&2*jTD;)ȍٖotfմ;`o,1}K$\1k(R, |nsY2~r|tBЌ纅,1#R bvJ[ind\#-rÇHMg51gX7<5h鈲n}AUz(BmulZ^P!W,eIL}ɟ2z cؙebGI;\k#,]*2-UEJk!:C̭>H-D\=Ȁ=֩pmK+γr8cxRQlI[.9r%p'x"3VzV>ϙPw?+ q ,J.;^~Эq\qԬ=Zf,N1KԁMP80HU*TTo]Ɠi`N2Nc QSu>#J.4z&*~>$], | I8^b#HȎþjW:n'4`#J]cx2?$.nhlt;.1)aj\NE'N<m 8 3]vwx,!IܵxH7@#+KQ{ޖmuJŭb 8cqXŘ;tLΨDKyWh@87~Q+5:Y@}.+ڤ!ĬRoIU礛d:-vfnf`}-K4uc]L#9f)3E=VɴrAo< ܖN]'uRQ`t֫wh/ #J3yO+4TULבλ}r#4PJ`$(-.@E2e\]:Vv|lBtϐM[jnv41Q!{yC=H;7pcF2@^FPmQ}& gfD P=,\t9č'STs&wQ*xHQ ,muFNaP;)ioEPs2 ݔC)pFS:(x#G!p.+( cM+c9d ŽvDZ=\Ew:=3>#@9T92XQ#!}>Pc }Ѩڵ{o,)>oj{ҳ[k[iibSݐˠ%ʇƲX}̓9q! ) ۘ.r 3•g i &YRXt}9{Hasʽ3L)uꝈ([LL,).^E/6k &uJ2arVb\ (N'QҞo5!"Zrűb"/̏9Go!]e*)eja<2/EĴmOB LN&- e@{ժY13wyȄ9 ~Cf?ꔟG!=izH%~!DF`U& saUP̵Lss5 ZCwe"A[&MGU Y;-!+oIrV`|αRr.\?Jssu/휎0\Q }čdo›TXN N\ܕIłcykKo+Eh<21ʄEq5uH6ïٵUw3>qJZǵv6(1N1`MA($r2>$)mI2J3"w3&\3)mdk_ln{I~] {@#~H_Q+uf}t 1l|[/T0jT\腉t#Ba:[n]"F3\c ߦu]`7`θӮfܴ֖?M!6ݹdo*ŲLYC@pmlc=6Gp;_ncҐ$rG~bH6,bS:wnK*c qL .bQҥ/th9ݯbJv1EJҳ1\,m>QbEg̉O㟥bWg et%5/ ( ҅,&$Zsck-,I E ѬӈQ[ռ_׽@>(FH1W 4%{]ySkppLs2C< 2c.hXTmdu1! os#톼$A'HU}Pb3.n ;ZKWD'Flf" "%s4Ci'bg7oס[_sJhl!T397lʂOv ._)K n.w鹆 h{S [4ڠ"#Z_:Gst.'L#[VlVZS:9m-=U3MWK>tT(|\wQSvo~Cj^NmVOx}uyeַ BFsMȵHMM!ْzQBjofZiX.{aT6fjEg8s!+8ƞsˁ&7a03;hq?Ҹ\&keHYt7Ꭶ ECMsI/8EXB%M#EvDTqw3;L }N~㏛!cYذl[i|~r~EC .mC end]Frw)ڟP?㒺Wmm[*daE-m>ͽVx6hq1>cbj3¹%D6~41n t&Ì2B8Xs1ZNXo}F^5r9(wM-b( ॄpC|\h;VTc&cp|fWŎpy5d߹z1v!FoF?F(lğT7aOz7宍XXFYI8_&~(7i #,rRTuH9T̩]v4l$bٷC&Hg6Qd7%WU$FGٴ`g@(Teq\2eʚMR Lkm+DK +m)R_ @îC0R$Yal2pXP[DƏ c=Qo55{W-ErGDn}vwLYD9XbvnRY*6G`9Kq߼wCd(kʇ=R%~TnzP?A)bVs Ʀ_q\Δks䄱JcCKrZZ?P;ah) )2gb7+hK:(],\L̍˱\ )ѾJ Z]5Rr 9W\zt}]#1g<2@#7dcjGQ`9,ՃP3-ͨPj>HX%v?)J\X皧4X`o NDc2KӃdV L^B,l=Ґg3h ::aWƀ^]Jn͠?sMrH;ovrg]?Kh6"!en&Œ,6OhEcmk L SS8~@ܹz_NcKxb?3?n8}fPVf.6fc)A=i9"ҥS8IU)Q}nXs ߋ36O;^_חhF\)+J44M11=ouТx̸g,SejܙsSruSէ, S< ^׼$4OU[ݺ@eGk5s$S774w dh韷ٺ;U[YA%:ޱ{O4IYł63RgRv/iWY?3w.s{c5uaFu5bJĸe^b]/t/K2a|uBx]i\iu~;T{lg{3,@'AgY'~*ʃ> x{n^l0i%lĬ n/»dʏ>`X{xTEL5×r5s1L6 ?XODއ1xiAKdyz_R^TUcmvg br98~S N1(p=Dc9\Τy^ߠd%n!Y?MPs1!.vYRBÚ]nhoG'6KF1d a Rjznpu=m+t%vXb loԮG6R,VQT]aqz18綿s+@gqS];:]&װiu\AG-P*tMI# ෤YRf'4OÆiC[b *Мvhmy~>FBJ~ScD{XM|0ceghXTŹbP5Б"wkREQdg^9.I Kq<סiJk2:*U k~o8O+0O,i Jkmsj#=$&`0^0 xX) )M4Gκ8fs,-V'۩yuoj5q2w ?@9R9)pvklIVJP>.dnC M^A7ܒt.i24muYq|qOﳫDt=ze{c<sNlY O}u&)GVowMtGgH w.>Y7py6"۞#qRJغkS9$9 u|M:٤g# 6~0Kź)=gr?CU6-Z󝥻^?wuߐ'j溈MebDI0@c6 1ҭu[)'.Pe7}qiY ٩|-߁/9ǛH\ֳڟ*kY8HqЁEB`kJ;^ֲ^0VβUCeXKiz.`btKvuzlCby"91"ڽr9 _2gnwpS m_7/"%FٽIZtǞWt8J7Xk)\{sm 4Z;E=ʲ}![k-s\+10’m pLky";̉Ag,=xIBG-t]  6I4@bA{OQیJnX[a Ţ-Dܞ3~/ZCT@=YYZ;9[mNlq fͷCŇc6\̸c@[_gy#7ݥqI׆\NjbOՔЍ.Dv.LJϕ&E bҞ G}лE6T+0VVݎpNy5?!D"NpKq[;lXC(QY SD2q+YVUǠʣ+Ʇ`@TVN[T'ḏCH7RS]D@]OF P)W'Ң*#[Z%BJ7V zi 8VʊbR3)I?j; ˶LOsq-xg%XxC=ok;X7шaeO1z^&qՀfMP_ ԯpO1nRNV6BЀ%عSehԈwCѩ9=Tb̲>[FVme2X0u4FGLj+fN\"[[A9|?UϛxX")kJ2x0K7*{F㲏l-xUe#p7|?y?f2N㱵hÎ ;E #TS&KLؘzg%ڹx)˖0/4L3ateCk>فOM29JLs.PTϟký%B!T<=}5͸VO͚saPk9 RC341 OY1wmR!Uie]u r rRA9 …oMA%tg8\@CH-9smFdަ^z̦~Ai+$"pAc^~ÿ ѐߦ* R\tW-趖Ζ4Z {Ȱ]߅eڒH eL@S>"'vM{ ^Vfgv WۃY?)uƲNoz&*eYn3Wbk׋)R&Gnp[4yڙ Ju)8-wCv q3Sk6墓< jB%f脥eQ7]RνUF:O xsuX!cvgUF;ݑt~Z19j2uX-)ecnCV]]ۅd*/ok5q~(BA 5 q\q&)s]wF* uW CmC9We@#=v0X/RΜ R(dʂ2 vU bdRy?wSJLjVy exs^Gs]B/@pu>nނEj+I-X6fTY8 :c=g1O=- Kjb~vVCg-="RtZaOQnq;lnGQlטneoDc `l ϕ\I,y]s1e4%!+ǂ ng)Y=jFőtu|[ҥY1_j⽱ 9@utmt5]WcSrsԯ%O&P"_z+xI]ݺH W ˁ!9d ~i7Hd* g*1"ɡ,_Œ.ȦiefSi]]ንUtLs ǦkS{| 9-5i{V}׭u _wɮ[X,5E ,:2;,M&6")BL XZͅIQ[H IDAT.E[ZWMn~)7klq_jV-@5&j'R,7H3P!JĆ">l+s l{Wj:ʰq^fԿt46fr3 W`eaQi.2ԭൾTj)c]n?gkkVsҔśkRjusNn[e[~s|u^p޵T\{hac !~-gMXD̂>_(ǭXhR_Q:HT77~Zc@k%3M\Y"L|z M6‚xbmȔ}JoB>kֆŬ#7VH'ݥ>)v}:jQ!^⓳4F@:F 7W ,ʼnsE )hS_΅1X t<>8` 'Nq5x[}fטȏ,jKج2+kʀ6` b0W K <*"zƶڶyEw2͒b`@k\\/"p9)BL'9 nZ)K\;׊α1qwz̈RVm~։nF. S1}q칱6&@0hWs̱E*;Q|[:$}jd[R%_Z]\j~U'wdy$!d+ jz%Zƀ86/.F͵O>h(Q4HˉԶm1譇s*jse8n9E'aO=uD'&GL@aκ4'͎4ceEzUqObuXButs.Sy9/Y, +4|+nj#1f-ǎ9#4HqD~$&RҁDu+#kxב#J( )IXOx9%[ WU;a^8-"ڥ(Z_6 GKY׵VZ]8B#9q=Z0ԿJyk:2%qW> hufs7$6mz}oeΡ2{c@3-xK,.2]H vY% wZGHt] bZAl•wXIy|p]}WE?ڵKYdCf*LUR\c(E@}WQmsk!P\B>5qy/;2ﳎHƄ-[Ԧ\a$^Kd S&^NpVsw,U.!AR}@W{IC2Y}Uu ! -6~a/c}Vʅq7׆TC1]$v+'D/"`ZnW}Jv`Ƴi 4R("Dcpw54c\FH1}lmhw9sXp/y_Mu Qq̸\0WITDNI0*kBs@=-6O̖_~ "EpQ|OոE@a[ݷ񳵚WlLhg" x935[=d\"zzC.C'3hɴ.9\0aΠa"渚Q!hm0td^Ѵ=R3L ;gXPuS"9_ap@(]1Dq*!#, U2NXIM8P @<)A iW@<y_UDݱMr8 k, CB> n6w SYm2Swԡu|[dew2W%?vX:#39SGtGCΡr%"r G T[VKvB@jpեLl<$͔.b@ېݓ&"p[nm'#̉)}HAwe@c0cf- 0L=[`$▘:g h{w[P+D qKв-1@cT% "ҠzW]IN9|‡y #D Ѝ_&oǮE,цuၧ3d2[v6/Ɛ-aBuHkOW4MG;d%ǤjF[6b}Uﮝ_|5Аr %OmVpl $׻ 씠Ksw㥀5\5T:Ma@)EV5QKՄLba$i2ĥ?d|fgRdЃ0}U>V+ 121/uovQ梋Ȗ.<%ݬt=f%aR1pΒpdĒKl R.Msgm~.aى znm&ü2A#D.2"V xZ* !|t;,:XMidn7\LZ[jglBrH'vBBfϡ,/ex啕)vsm,3d3ޛڒa߿j9;owI6dMh0%+$<I !!A$'@ HA^$~bD-3LI5͡g޻PkZ>=]9gϻj}lᔟ0!Cp0>",k"cㄘnN ΄0v&bXl q|F&KD骅){&M*V;8ꪫ8bx4_fjUJ yh;ߠq|9ZCc:8pJ[u~^ 2bs/jk|U ҿ+ŤEF(|9"JnLԉ\ҁIn kR1aCP΄iX[.KH= /jD"K~f~5M3mݟz0&1_ ɑ?ֿK8oЩ#Kxݣ;ɢW9.=!-ޥOvihpeC%G*u Tp+ctܿCC,es3~֠?Gΰ.9@159oHkXg-0.? i^ ư&` 2 ˄cslO e^X eX5{:C P5[`8n?'h=mt`DC[yUyvG#G-BsG$:E9B&ϡvɚ''<TۗLGXͩ)ȹ=|El>i]*KKd0HDvZF|&2VBU#uϡem>%/b>Z`N:ֳmϮ0L3-U }fBRL6j {5aM;b"!C$qw?J͊)ִ֒@]11h?OB-PjibDEjp17Z&r7hͽ#arJx#v)4͉0]md#na G 挸vmX ?.Z:bߥXNq[aD_VH4 ǚ%S`T.M;g6KvAq~+ ,y@a" {|Îbvv:VXPJW"˒Z?3jJIX2˞3ytKq[#B-dJP\Kk[o*cG!q ?L:aZ)0Mom_yzeX{^{{|m v0b\<XOMvg]0p$33 (e"'?p\=}"r}C${>`8qHV.&voG`O0 )9J ܹPa>xXiBv V4Z/[;&ͣ#;>j%Trs @-J_&쵇+LhB=úDW$M3%}eMYDu 7mL2L0ͤ&"#a*֎niutK'}jGzˏ2(Ɏr3 Yo.1 p ;‡̈́9BeNYd8E^>GΖ_diXϠ86&](ҝaҴc`F4aaj)WQɰrOf3uxJ{Z0pA9sUnfb&%sȌk.NdA! Y֓9+ɢ8%DYZdł,<6Ea{eŁ~騎F@P:3j!U ka==%xm dmv@¼o;Q XXYogKK9/E <>GyLO)X&f; ݮoiWea>ձ>+2s6w6=:[O?^sռNP wv~]jbgdȌQ>ܶ`G],J&ct|UzVJlFp3ដT GY|l։>M  :Ң})^0C?>'CT 2H|9ccYrh؂m u9 ֹ_Qw@ABښ m&w\Ϙ8C?h+jB/efld3!00]CjR%u"L7%.0$oDžBlReџ'[4@jBَ4._gއGqF9VikÑ\9$[Fo{)ym϶c{l=c{l=c{l=c{l=i?)c{,Iyx=;|c)|ǹ_<5M>GuHew6 -=xO=[H(G{{v c 'm BM6w ->pfK1fg 1Pm|@?G)~z|gZڿfxRoOA2B`ql-CDGLrx"J> ,1A&U 9I|v ޹{4SE`rr`\3|G5x&}/Ė13ݿ͈)6kV"'nG;i1qȂw%Pnb,x)Gy3u GvW-S.՜My-h2XGژg@-Bcu&,}S!%X p&>P4-c8 M ;7c?fJ6}NNѲ;;̽OhF{\(GĕXV )>4 $ I%o#ByC]&cM> P1xt Xk2MV1c fbH (a6|1.sxOwD&@6C&OxXԈPb1*%0-@.ů;9C|+ M%.R '`Lq8bAf7[}{XϷ7I5Ū!s7.`(r ycqCid!"Ј/bia!>']o1XFx6W0b=fL vdbQgQ)];eXIS8\4) T|M3RR1 ^' (aX Y9 8T̪G^OPU@ Maŀz>xӍ01]SB !2bBGD1@"&"b  }Y bfLuba6po0`- s3o0! xJmDLfb! kb5}B *c@*+g% e9SV0c6s"Ѯ͜T>gfv0gc`&R12DP`uǰj}LaB)[mr>XscnوYk"ReDK3` :o-:3_;l)M*u`fgW޿-L ԀTCcd[DScfTwl&"}fX&̘x2S>1@'t癠>Vat,`BRb:Uӝ+`sOOn^b]09Q"f_'"&RDgD=(5"wؘz5:N`= gUOb>GR+-})}t+1eC&edc0|}` =C9D|c"FǐjI#k{'tsg dKe6zqW>Tp^@ٿo6Tyy,y(]ЮLPUVy?W6u`ѻ7䜦xc  IDAT*}ေ21F }yRKKe_k}yup!PRjudffcVٿXqJS1# bSXj(" UYēbrz9L@+R9n/kD3Y7ώ||}41Te+ɿc\^ lc?Z Kz`'GmR꿯O6'\"l"U7fdnb@ 4&oMwy5+g:3Bur;0˃2WeYnsAcG_3 1^3<Zk4M3d)COYtu6KI53$~7VۖF(WǩCBHeKRfƠYbqp )brtcfiLo,!SSHj{?$X;i_OLP5P (J5O K``ts~_1}c> .d*|~ZHLl@_d;{stR?6 LScq9)KfN=~R©G*Zt!1Ƴ%hI2?IU&O/S.TM7H}hj\}eݘ:I?F> R;{+t7A, `6M4Ёp& )vvv]-$ fRtX*_ߍ#m >&f||Ħ|EMoqu89)  ग़!0R삮έD|W0%.vvv0ͼgA'};׼ $ַ򙊫tW7pbn! һWL`0s*|<KWGXB+{֋ϗsWxě)jcU3 W\{/Ce6۲LgAd<ӊ#tlpܔ |4߬y)>t R101@nL"dFE18Pu?3"Τ.fTΪC*&MǀAI߂INrtҜ"/ (>״U͸`)32ʷT1wUp!Bx?bG`TD+F? 5h|vF@|.f%PF>8曍!'9(/^_Wpi‚nmwV1]+Ҋ(ĔT/rhu]PZ65cGX7Lw˧8`*Lg0x=;]43 >iMORMvwϛouӔyF={A<*2}bK6p*25SoD_lO_35ӹʥ5-biLӞiNJpVrFkLk ^4>U\7rY.1DΉoo/ (@n$ @M4P)R=ޚa)+^Vo>n{ xbWX(Bd(4!x+KwGL dGDu֩\Jp43˲\%XuƧkW{LȺ`60|lj=<<&B` =1:_ /2w>lyD<2A<;e:kZ@gosAgpUU~F㳵+ƍ`b%e~"g0X~DfS,p=sn"s0'j\?bxp=Rūj2#>-7fqQZ&O"(eh_E&FHO;Dp3/gX>zntR,'|2-b\.QUSҲO/[K#qc 9 XZt~6T L ςx N=ƍ]Ħ?榺|cwdt}=qƂ?1`!25xbuvbg_*v/:~jASuL/^n6ʲ\6i\xܲs c¼b"PȞj+11Yk'9kѐ5Ib-&lp$_7bZX1ڨP+quz4.1Aɀrl(x1s +B"|쵗݋_&Z/dX>sxm,Yr>2]0֏\bR`0;Bt[szJt@@.jV *scXY-ef{GN'&t `{ d!D1?S/|bz@`4{]:"BY=",?g}rr ]U35Nڏd̈́bjDL'x7^S[B&`=*ʞ|inSV^ 7*!Flڐ^j2W i9D5e^xsoԗW]@WA҂Nyi3R?'AWU/Ws^Y3@F h8bC681'lpƌ1+!>Kb^*$1o{"]Phcg3 F0@MT#1fcs3|*x @5˝LRM1}YΓ2m|rnE F%-CaKFd<&#cK:#b!@ 9].%.œn=U|_&u*-u=鿓v[7˿H\.z^Cl7x}|M{N9~`)TFkԧGhSr/m`2@g0e]Ƙ?X,WUܗH,ș4 k{h3JY *" Vƣ0aEnM\Uf dLQC{:ߩr*o%!*~N 04gWj6>yzk=@#~]lnj"" 5͔뛵TsӋc90g}kD^>^5LgC>25/-%eϟ7X+wG 0`k| ~61%chpƏx߃ƑPLH#yfOCՆBD#PxcJ'3= QY9SJuPC|,@R 1Pm)yT,{f>ѿ'=/P>9~0AuxՆ dMLW/xnY]ŝE %jRҚl:47#b'ꘇ#LR cЦM;]@I9S<Β]p 8 -H z-*_7͵Z5FbqA#"WcH͜Ts%߹D*Y]oS:zstSMc;׼|>_UXIkW ^]4#6W*RkB 0doqҺB*=1cND,NxCοly| O5JRV^!jvQ9C`g޿k:d̹U3d˵#+K?`pуL}Ѯ2mPu/٪ƫ3]TR5I@ !4 vu%HR/mZoq & |As]Y5RxHbȦ |Y yXomC, H5#9FP~,W(C6m`֯=ҟ-뱉xkU/4;6d;Y%ݷmx_ة]v1-f&1x S\a74ybkAxށl1Ma ]PX;w~`3f)ҵ~۹ߐn40\)`.is/m@W5hLUpKy ,O?"^x ( x|Ӎ !f&=0~ 3I!9H;p e~~ԏho19R^~7dV |"S,c._ܝN駃"߹/+uwY6C;Ar E6lS0'M/Uܥ&$aOc0?DoQc ? ?Ev@cFj)2ހp-blp2}=Ha-6hFTИ1ę)fpsնM/{ oW_T^}+\ٜ>L_X}Rl >ׯ5-jjLWMֆ0εm6oPx*j¯@ Rջu)a5wxW0縬?Ch}j/{NBbsij/rUn<,YcSf7677?<>&>=ٵ) :|ghbמmk6H΂NfXӚɪƋAƮz׻]t _6fcXK? ([߹{-G 9&0 P3Tw}*I5Pc܈2Q8#6F7zH@<% #,&Gus`qoS3,WLY4n\-@9s\K F"i.7Z4 K9W묎?Wq&(pkP !^PK1%P`?'v,/2@;`\t&⁩!/ .ߛ3{%n?r~{ B#&c|;unvc%BДet+:6iYLL>-{V xyG\h2aukн2ߢ A914sp Hb{2kn*5 ^ _Ks}K}KB#zՔ*;rf7`3)<~م{emYڭWg-TR [-j){^ZFN7 >Yi\J9$7+K %ju2} z~ Ly<4A#g))\REVZ#~/] ѥs9~(u)!<(J=Ԕodvq{3Fh*ˋW_ `cjt?p mj0[c)>:(4:џUY<`I'Z|^S?S3dfNp}R_ce[^gj E9W(ʐ||5jG/b~p ^Vyt.;C0Fח6ZڎBtSsMa[_@W= _Ƅ?`IhzvX?Jl[{-Y),zw| <2fQŌȺ<{MÃ+T x@VDeo7Fk 'Ǔe9>M|#"KMKO/f*KG?p6O+: |ҧY?{-۠9U'[bvCn/혴ƋN_ϯk)f7I㇞z}I{VSVTД+B OT%3Y8oB;\tO*Yd*ë* 0]:`T1`"$2)ǚnx)+h M*fʲ/N+O3nl ' Ab:9h\m:΢qZ0o 1'Hh\F.GBA%OmM|GM4!;wR|\P=nIϑbs!+$Gy0^Gӷ B TwHw Ԋ+Mݟ'!IΝI ڠX5O>>i,& 6e_a:nB L|9^Fz:;9c@Ӧbe]>rd^opF&DMgOy"JxJ~H]R/ b?F6-U7&w.Vl j.ȼrpunXVO@ԅkip{zzӘ%*2&)L3C|orӆ^P]/)邽8~MuF#+K%'@ƢB*!.LJL'\ mk S/"X JI 4ihC"Ք\}ͲQ- еV VÃ_Bޚ 5%6X4 Ĉ^‹m8 n#,zÁX ox)pk?xh0Ͼ^AE`UzaÝi}oL;fjѸfUǴζ:HIY7Iu5oΆ)SzL}=b^4P+6MV )~ ~?4el㣟HiP ֹc,}‚ZБ4 S"{ wj]ͺi~'U Ou0ɦo7^-|&=6h4AB2pDz\uY4+S } b֐ 01ԫaڜUy9^+H`[ERYH56] >$Ų ?Mz@tǖ{feG``r17,RO۽|7 kL ,P+&c@2 @ /SO0MLS{;YaR Ux̤'fb]Jd.ĒP+&hC5xc >Ɲ6% uu}a@nͺc'C Ҭt}<Լ .j 8>햻߇f-@!٣zwع,u IDAT N*Y39$ -C㬻^,?~""ܤw.V`6|KӒCݩbPbUz㛸@LD~xa?{[E"ړ4I 띓+ vٹvl n6%{ -[NS 8Ό;6MS92ȂBV2L7] x㜸Av ܌u>6"Z.*Z1?N98KU_H#Yu(,`[Rgib·sͷ+ZZa\n^; g- 0f.rwM|JS\lyfv3Ex>5"pS_i0E+v ;*.T@L 65']DHGP{;  *ͰG*(+ntêɉZ@OHqMMi^J`F0q=](dlL'=!E(r%yhht'Sa07i#1VGswv3Uovx*g7Hvd"zB5pRb>!fFh9狷 EeP.?3\Ś4ܔ&;s HX -RbnI=#Ep[)AA.5$2hpȌpB!Q?I>nCW`ܪؐod 1^htz!bElfULA´\c5i}|͒uFR] -h7mCYbB8a3S91~FBVz06%"242Z0 @/@Ng \eFf7" ‹/݆AI{*]s" 3ݱm}xnw[Č}m7U0<'-(/2;ؐ>J~BE`x_CU($?cƳd%-JvU +hlA%XPe'5_2=3s[qICn21%"C Pp9e5R݀'-}5y>`@& 5yfRBwc0`rGv-) 4ӗ:6l>CY1vFm;aPV`CRߥ?ٸt's?i;Za52[Ƙް)3J+s X6\b@ ǚD^07X l61Nps*apC<}hJCOlHsi|sرe_&4rh8I Q_hfkXܥBfWC>T4w pI2|w娪U{{ >:^43 xhN312&]0,|Q5LᒥQFf}Qx$~ۿ( O \=>(.`j0=}cY%U^x]n0g/-vL[3}l YtƘQ6赒`O%%! qMbA-9$W'Ū-bh2.S;N<^gbsxdK,a?<(19aPmL#H)MRD h/żas ʺ DT#Ar`XcLԌ!8}OĜ2{XV\3]On_lgL*mָ Z{-B aplpbQ73s+ݤcn0m}F 6*b Ax8~/̦n\ y \0ւ:4?ҁ yw_DؐJ-2{3Sgn@+<DŽ&O#3Xa@~.ѡ cc*1]HFP7Za"cf+0? RS9k1K'p #&"GBP?zKkc|RϬbQnkΑ๏}1 PjfOE,c$ۓ; xUX7e3 )~&  (ST)`7as.QvL  >u$f4_\pP,cvhEԜM\f>RpYK&} 4iUIv7-XüͼI`LXM6FvlX7جF>$!a9C5Kt8ziIUG.\qňE)"ց/t\B]X77j&Rr3ϻ7=-6yN=sX.]ˉ3/g1s>+)+HK;ꭈ+5W -%qAwjŦi9Fۧs8'f/M)`$!븜Z/b?OBJ=v-Ƒm!Vםs]=y gW+0t<1Э"PϬuN,Ae< VʲU8ͺ] |~etg8\9uQC`Kewv 6Y.֢6qf<>#p\dd+)p>' B>k.J܀J]ΪȂ/Gd>nfwSKkn:2!`F۬;,^DXZ} H3fD߭}1I0 r &jb^:]Le3,^HG.FwV'v2XV&)eRσb Qhٴ0c ,qI4GS9i,\;*~Oyv B]hj.Aœo炱Cznl7IQ3݂nMrcѐ{L辂ZM5.7_1R87-[azpXBXC}9 R`hʓ=-yq+gڧH~3CY)Aν*z)131!@ܦ;kP ^fWm>{`v]V1wBBXj$SBb#B@P\\{#XVbS\m@ YX:rΚNYAﵿKdR 53z 6yhaG=b9e:Wxaf4^^P3.Cad26$I])c y:>Nb:@V6~6.Po+TM_eAj!V@_+qX2EEsaT&+:U\@jn$fO+EjY1) 3ހAMƶ,Eۯ)=H6J63ܢM9yUE\>Ǭ] @f?:1-͟ sҪy:8huS{T0㌐o<`|ċCxU{)IZh5<:iKgoeĤ{0Tsc2VTtsAnD :_1L1]]3SlAv#B C&4h!pH݇t >0ǯOd`}S-ؕBOZsSrMx2;SxUH dch3ǔ1mS3"B1FVlbϫJ[Ѱ PTL`|K*>_puB=vN55Cs}n&dNsr#ݰ7BTL@Ť!e[Bfc]PRέZ9WftJ>S0*"uAjʙ/qπ28e?6 ׵)IG[)t@,6ƀ2E2Wf {";:;׵U/@9(+n3;m@\ [:iw8gm&9Yz/>dfkݢG2{ e$}̇ U2_vGkU:5P9U\|b}'B2[ %LsלޅƬSVgŴfYbJ g:(I<6IĴ|7aM| GގBlg:?MP ]v|lrY?]6y[01)Q/I25C>_(#,雭8f|яL8Wp*3M9Z2D /q9ߋM)7So29䘐(kO]j3*$eooM\D9C&&Bǒ+dTQSi$$ݼe&MwH PPgMi5Yǂ-cBaboO@hHe(N"=&c6bJ5yc.)"W3U~T[A"2|IϨI>L;gXg4h6@MD+YbO2ZhDlcÛw&^wیuClrڿXaa6+-,bsϒŌқ\Bonzwy* ʡHy3Z vsH\JquݢU2F;&o,ߡndH)"5oYy\H%LTM3ʟvton,WG0ĸF mP/0#3pC MMԆS_+q`{RWP"ĺkV fR`}~1p*gɧ:Ղd9[ݢs\*^F0} 4ijZ`9T1b2'"+Rzz.Ys'7rΦJR! m^)-Sl>*> r}uC5~S/qIsnLX|Ⱥc;AP`A3"p8b!>ĖowyKvfhRMvv)ˋtG6z*gFs}b1auʠ.1k6xmtsEUb*Jy6u^|U/=֫9Z2R$Uعimx{LPO WPzYw&䴦g -M{DDh'5lԀGYϚ>_=sq PޞD/-n0ጰ2;-m^t$>@Z"2 t2Y `hzq[D2cw^s$}֙VdlKNrcd*UMgtA fS>[NBmlA[}q1ő8668% t>Rn<6\}3?~ L\s|ռcbv7ej^ )ʾױ]ՁI c5-gBDD\\1R)_P1j[vy'wM *;P*')vp["i]Y@FwVf[q*p&`:m2cS _Ei` XzY3&XcˤB^u*5N.4#RÂ,w^gj#& vi`9R5V>`d,Wd"EPp].j Dx@T~]/vUdB`F >?n/&@zBOrᒊ͢_bI:c4t|JfPTQe߇ = SI' +l t+ ʣ|*jrXper)8Zƀ*jrZ%fvT?ˌg((JobER1xW*>~7&f*^%dJ\f[o3֜LSb5ϷN@ HdI!ľmjñZq&)@g*o*޿3G9nٜTW#Z%iB]%vh">IV>=3R πp^mϛc,cM( x vG*6^wbJ̿ dﳮ;НYe`J(7JLIG`x(Z pfe)X/npMLr26݋( bttw.+rvB&)<]Nv&?t_Y~^CK||9x'^wLHkl df!ͮX#ĔE"+,;ӂ$@e& )62Jߦ>EX&!<o& q9jo'n*CtJyQ0.Juf=cid>6XvL Mof IDATB}]rgG5yd 1@@2与/ V4$_-A=֎P D·NpX aFm#\/TN#eYO,ertS1DS5T 7[*!Zk1sT qI>3U͐ɞ Q$Sn@zzx_jvA$_FQL(,9֝'f u.eo\9q 3Ow蘛a-LX{ rNlSoT\,%`![A[/&/Ux݋4ꎙ2x _DOS+P   _]Y-AF7,9ľ?nںzgolEREPmEXc6 /3ciF ?O ?̓axY3҈dIDSĥ{wUf%9Ȉ8'owSuo'3K.$DzTakvʖl 3aJ.x"A8b>~.t}#2YF|2!M9Ҁ5/%6a X5n;fk YUO$f AERx KluL"p?3FDg)(F_&p4f|~V1|^F`615Cq] "a6- ۝ +Enl  a1.nJv6tR{^q)8lK{vxhLDcM"2>*ihZUFNJO P"9r o+b2u D&NI(F jS,m B㹩0S cnU KñH.l.zmR/9!-<![Vm,"j{j\߈З &R  ּt9r)RٞIiGm9=?Wo:L hv |RxZ] ,hW_)j3GD(' 8K|s<4Ư&"j׳ĸ" WWѭ$ɴ#8f(|KMƟ6:NAA.RRѭQkv.BB,gf, ;& 3m ՀI~QߥMLУ,iML lPT\YTz2X^ =YYt=35C%>6>Xe$ V4"uQePoA( 0dzn[V&f!b9|I/j{|mw;?1K|X٬CE "~HOؔ?˕Ry,KaNʚ=2BlI2&j_]fha~b!s6׏4Uш|y;DMjZLҫ.Ib:Z0#p,OqKdt>5TfFAƷHO?Fr`Aj3/ZNҡ6ӟ88bJ"I w&B }t%~FZGch=Z-* ,X&0 -68 FƄ(`nosziĤdU/-[ Efy|~6MKԤ~m7mC60uD/(p}+85ް. S໶GlQ5!* O/Ӂ0\"l Ȣ=Ed2\Uj՞E+# ސzMȈ)cnX 条jXp]0]Jje-0w` x9F]E *kۛ`pʲ1YT̖Pµ *XEDIQaY^fΜ@!Bd5 7Ut%[qܴ5aP\-2Kue)nSeHSMV hrb 662J76J:tyMǜ l8FiQnh3ݼ_^sNp\'ej"B[:?hOr8Q3J&,i[!l[gݠj=7Ob v/rȝyG\`݈zHw{(jS(N /aBU KgP@ hlԆ'ŗXg`Bb. IpIdkb)@o)*UD9/IjRs,"kBC[w)`*q+MRf;"J!Ch*P@Nb &_W 5ˁj4dF<{g5_ڪx4=?%0`krpLϐzXb4M|uCeg>`S~ub.Yj ZȭaBY+5'\OT`J w,XO^¿"3Z\^'Н"kf)[I+|JjRn3E{l46ql}o]OVoGہƓ (tۮ r!|:L*,Q54|:@og6Sr'e‰9={>TO(,br\";|6\My<qP\o:Q$+_ߠ!_C&j,ep8`p|i0ȻLΥc5%MZuӊ#G3̐;b;V$v8lw췿`Rf"h왳:!Tf[\(NΡ&4)6qP}%F1s4Cj.h,4ؘ" roeJgGl;`[r*^&cw|R O-D2,Q `9{/X~1Cu>,~`rX|1R&LZ'w_2`kk6)9"P34y>]Pv ؏h"!0]Н{P&R~gZJ> ;Fw l`"\noT[| RH6̾9&}8?Af(9p?0eB Oи?G,c%ncbPZ)/.',]Ȥ g{ >(/%@3sLvn &$at{t*/v䩯*ۈj``ʚ&#[ M>ov |l` !BIB+O q ->am6dXBƟ;YsUIxv}U\BB*p Mj既0oh?Bf1cq9z~ݦ8s= NLOglDȅ[dc-D9 NW<  m̼R^["I l03AiaZi{-(Q^@Vr* aȄk13*$$(@2ҍp?5<W,ednic&tE{!1=^ȰsL؞Mp|?fvlXܲlnBDUƒ>L^Nf3mhS @4W Ӷ>3%]eS]9ֱڏϗ 6=Jf,Y-Ӊ5d\~vl-cK|T&H}LB&ClHE lMw&|ϓBRҼ4+= }*$ap03+aRZ0_-|=bXSb&HJRtCSXVFv#3Pbt!{!'Xa^Џ ? [d[w +BlC!?F؏{#24_DQ"N``>9SbS3B Y.& Qvx /Lf5 d p׹r'P)B ) Qe+01pu˳IG7`Mb=`3!Ӑ6+lx.63\9 tg!T5W8B)n뜈$悽&eՂ\FUFk]9#;il6'(mJ(+EV nm" J<>4lU )3Ṣ 8q53cj a[̎Kx>9|[cq_nv, f䔱 Iھ:"')BX Wv>;,LVTͣr?-fHP Adt.G&Q,vLL0#Ge' `16HxO$$&SB\l[+:=OBdZx,#1,#G>n*T={ղv4c=t3'Xi<с͊M(g1&-Pd%XG,ЭsɕohՅ|%DqZ?GdC%gbB,dX`?@| IDAT{.Y9ay>Tg]k)9i_ R9[ :r!L3̵Wf0?NO;!JӓO n,D3gOs|KS_ʼn #arϤgdXgⱇ<0{>*!8onH@v0@8%AR k!c݅v^w"BH %X 9ow17q]Xx r'd ,Zoi/y CRf6:L|71dZcK+x¯36X\, ưx꼅@(P 0EǞ:@uS E N`7&{l,tkE@7%ރ4GC yhXL 1d)K=lVknR;)!HNN֭<ݱCcwe P`nHgB8r;z^;Zc§ i0eyݑ8)ؚنk]1>Ovaczh)͊q,*Lա6L(ow$Ea J=,[4} sx;ƻ)ZC}ႏc ?}0ovf  mY#,  `L 2;]>hq(?|IFakoMdDŽ?EY豪E$vPWLx?~ 0S1JcCn9")τDL1QJw{L[mk&|&°8Ez]$<8v!?{tm;=+p@盓ۚeGA(c10>{bXmS>SIJEKb´{ >T}u඾G%sfس= 1ɿS,bRE H 1PXP>g;bfcɄ1mϥ JUP9NhV=QkޟJosCLfC|[ lP@R_9ՎgBqO1]Jء0\ )D}qB;vs>C'Ŏ1&]^k 1h_,pRSˆ1c#!fZR Z,!%0Db~le)ARb H1|O}Լ,/"q! C|%ճRB'ט?ܗ'6h`?'=wLߪ_Cb̓(kBI]z|ơ)fC>&!ȩG=h( 秤bH1䈯,k4㓵}s*vD,dt,)EcED#RzF:ʦlgʙ&0ek&L`@ST1ۊH Tt 0Q\ kaSp$?ĿW/)z(Nz?ȍBbJ;$KN2R=SaڧOÚl5X3g6 DԐq{ 0 "sقh PID ( )c0wA-l%ʠ?= ?{оX5&(퀷RПIZeofQ6Uz:SslWm]}E.s6|& D'!H*Vl[ }w\{mYliW󫿤klFyzG`-v_w}PBstߌwU6?@U-ZSR!  wC>2$r)COuLR+sOW*~ۺ+'(~j " nJY0>`lʧ5AkM pd}SCKCz@\*GӫzzSfBD /5y].<#p\ PD5Ro} ֮.wvXyҠ$LZ\-Д6ct*ׅ@x0-p>y&-zt':ϱښ .R(cL@ZMk oK/82cLϔi#Vz'ffq~r*)0;}|._ɐyy:>{#Jϟ=/f + SXAu>Z$YWew[ϧ 16 mE]A@ƀص>uI[*}<*"x8 *l0gJ| G5Jm /' q6}/.;J50[jy6`[<;?$B3))3/$1> $bʦ?Qcr9i{@lܖ=i1.P($xpF 0uN̟͟~f504ʃ`epJ)y,0W`F+'r!6 ]1;Lѱg6`' !>9/r>U3޶r?zɔ35cQe4鵧io*ka5-0-CJchhxxh41SL_$Ȇ!KOϙcG*+x[߷c[[s3Ǭj( < Ֆ*o?Igzk?36H3 l-rTe,6~?<^Mp꣼1f/ (st (/L1߫N>ٚ:`rZě4Yă}ż4t/؟9'Syl:xgl4[Dx`kQ.NP}`O+3r:b<c2lzjhQ?bˑϾ0z,5Ul [XAy-py<1LAO_͌o3KIXc`|s9}Xl_L`UlmESJݔ9fB6 nt|1}Y( +ў=3?M)`tuDqt`S99NW?Ĕ M~tsuThedmZ,@-*4%6 /C gAUUS>IO'$b.eX7fBğ C>p}!>$f;Y 56VeeFS6aN>(r&$F 9N>WL! Z[U˸eLȹ lpf30N8[p ü#b86TUߥ,wx]lbM ICýP:}0oqeOէ'7UG`<)N:B& fg:'MJIgZ\fx0.Y` ͛R$_nAKf!\faqx-(V G-!⢋f5S}k3-U&d_gr?.+d"pmzk7&-Jk*gG(8Li9:L3/%5]Yܴ2E,WowZ?7 >'œ[Px4b PKpq/fm6a}WGXmH!] АJp4 .zXN͟/g/{Dqr՝wiguuδsc;9keP%lURm3 +}&hH~׼ %mR_\ čMge(^ێ a C0̖f{z_ԓ]X۪諔Gw-GH)3UEWuV9pyzDeW7L]8>@}~trAt:~ԴL&,KEu*/c0Z)vဉ];Ijw5I2Q~1lq"7‚m-l=%j2;fS]Xo( }% uT}t@T!R|FJugm+?fȊ 9f^ &Ҵ++|Zi0 V&A&5v~^` +Q9S‘'6"bQ9("ah (clȶWd?۾ސ!A = S^ʻz__;Ydܪ0:_Dqsߟsc:[xfY/,+4X/' #O3) $`fkKSPXq 4f )?Mu:[u6lF x! LCt##fv_HntuvR:c9НAq႐⒚?@W@^lQs~!.(~PQXXs'lqǰ8-(ax>"eIlʺ tMgIC.Cr=0ؚ}Kj\"aj|} B}wS _䋗gןψx,I;Eyس;bNׯss`oo?D(0j|qYV :sXԎY2 F8$Ɓ8lҍ b<A1&k`+p+P1cLj:C9_yH*fk|V8tO1U"4SY~[40 kC BT_{dxaBV mݧۛ]oԿK3-W fU< >̽/wҥUP\.˲ e\*\j|eQnZ9 ˎ )Kj`. ?!.nS.,Qj",p1,~5"!["#j>1sX#y A xp{B2Yf5ϒʞB6mK^r'>$p_M!>}5UMNg>%=BB7Byz{r\/s)2d Kyr,q( -֊F@|.PMfE|5Zv3.wa''x׉ N0b&q g! VlHDD7A8i"ZX?dؾC0maT) 9gbN&U+gq7 ?15 e{JIjއ7wXPxHJrxg ǭD)LFf <睁p>Yc1z<[-f+QM#gހlaf>Oxe4_97±Ơ^/ɲltNt@*UUrY+˺DYT~\[dp,ExRrfic{1H1G&``̌ˤAhCϰG @xM505$%ٿ%sb6mX}d?U"hz>R/+ԭ 3jٮ8ԝ9ӱS\ ]*,K_^T֦&$aGk87Q{`^ 1x2dDPhJwn`Q%\~. v-jcBH/>)&H&"ܤ|\/?loq :`xv%ITv D%{╀֠^6lW/lBΧ93w@G MC!zК6\mĖmQD8nD[ |99Y.Z"!bZ'0測AO\fI:my=Oٚocxe;44XJ ߋg5C_ůJjtɯKLR0J_2u<yq;c/pe-Kz RQBT[>3jsOppyW$Yg1 ^ƗF8DÌ7Q}6ckEdn#~N i($ȍ3;۳U*? Gm="Z {؎=2קz4[︃JpY4ݞ;!nZl.[/Rvƪ WkJmiR,aDY5omP@*p5@ l:r&,2|jSE@\mavn9~H+jkƺrT1-l/&eY"~\"ǫ.z 6ŧAnM_u:'؏#MeS#/lSgK_9'FUY- plN0 NCC\:dց*\jT]9Kvf0޴ U,g@6KY8">܀W)(9Ɛ|OwqG x6_† "|IpiN5ckr )PK,ސ,nDЏY+< ,W_[,S5~h,߷ݐۑteg٫ئ@6<[dp*t).)/B sMzT=!MT87Q9&o@s* v.A'M¦MzC$p@B[x4|X@=:nRj4fd5Z݅$N+MMc nO,K?*j:aCH7e&.=.i~sZx,9ë"$.AaƏ\4߅2ԉO @MVH'Bs$5$N=}c,fL]3 ^]L`FR,.HT^DSr( Pzw[d,qh\V'.gUZ@@liiF939bP:WJۨSN8}1ú-8, x ;u1]|Y`[ +ZNnmpI#^j!sD)P9bXo\Tm[A鞠:S>IWeq[ oj:LK⊕& Ff'e7)RvU^Z{_*, fźE8]ᘮ_ 5ie@@Ql3ٶ%|>YQ3 J+} {3ۗ@zɾV~ShBgF}z xz~/kWL`n17ݼ:DݜA ^Sz_U@H|URMR|ةN` >=PA2\mbLP`d\ ʉօ)531UṞ~.35~Pb7m,5q~4O8BvNC~ܕ'3aC6t!b(۹/%FTvZH!E(r%)PDc\K&|X* 1ND洋HfxKe־I$~ ͔qTOz!vc.}=|Je?DmYn75}ٱ3Qz/Z۰,\l23.3p Hо7Rr.:ǍX&ϑ4 5%"3Cn(I.ퟗIwl>Kzt 8X.6$։!E}!vE(\P Z?O{VA露g|=ۂM6e1vnDM/@|=9)m,`q*yC^ațu@1[S&|C9ކmZwRAOeB 72G@-D")PEH$Fbp/`'a#;TLޜ3Ww,N`J)̍wX1*6y8Dv ^^6MөJnBEervnCoc~CK[ܠbN*{] L6 &cI~h7*fӛm7 ?bV3c0i ܆Z+n ))jkr݊" rd;1v0O7Pu26*)l!w?㚡!ij0@rĻ4[ȱ[/qւ%YtVMnIך۴[a%͑*tl'M1vEK5 Cm4!urW#S9IsbUaFESoO\m$C4ly!@tFH@?THL*[Wg" o_8Y6Es7o'׉7Þ.壗6bQںX3;Bb斑{2pW8@x 6Ҽn i=IܽC8, dQ,SBJbha' 5O 3&e@V9`,XR31g\q4nH队5ĔqpI 9J9`~v7}s*Q(aDҗ@t`}%Ϛuc#qb&f2} 9[ר<ۇPłm0D'0s2g-{P2PSqr %5/3 ߡdȦzHf.8^H, IAsZOn^Ha^=^c e>艩 '/&T U8b= :kdXW*}_drA/1{3sóft}Lqpv-uCLEDġP<."!}p*֣U;3ƹg;&*Q切0[ hQ`[ ghyBu#@5X%h~%XkA~~n.2TZ,0ȔKCh>D Ư&a? DȤk*`_>W(kksAtȤ ߐxQw_?C FFϠi*j#u0fX@X1O(J`UR2Ve-%rfHphRi^[jSw`jٱ-`8#7hhH3+]s9>e*B{:M)QsP%B l8(Y|#)Z x@jlߨf^+jfEj&8?`hnE66=t绑 0Ascx'5F*2&t[ M}@k7HT%̈́Dr1wJXd(">hozqB8Mly.]gb%?'"2o{kiR,vsir8$H`%% e !@A`؀&0~1 9Y)pn6n%Xq28yΉ[U]Kgn̈߿%Y`|ccZ T N+lp᷑ݶ`!0gŊc ))p&Z4 ;\xL'U>:w^; shkw 69ӟ;%vt lcYAnWf$BmQ/A|WT&jVSn8bVL (^ 6 `j_7ݢ׋ߚ#C2.:&0bKW%@Xsh4ҼC郵aZV.fP 1`2KU'2d4H Cɽ! g:ۭt0p[+fӍw>.kZ +;1(㑭e'5]36Te(ПߡAtՊz R_XLLӳUVɖr2Vhخm7[}ɺf|>9ta!hLAM{.v'Lg-ǣ0 *y6 L] 0F/dX|myZt1,6pBq)sj{ Ʀ=le™# l"bcerZU)y1ŒFb;)Vb䍺^ Rm8<`ISsq`! k2M1c k%4q3p{#LzMέwtИNkB5¹1sR Ǣ=Wbrj(E?HTDlM-e/H ޽C)]Qsj֘uMX\I,1V}w/> eOyXzqrgbTܾ+ [Xcʡ4CFEfت*soaӖ%T[> ऻY;eN 1RX8!6*9Dx'Pwhad(f8ա&df$>wS6ZIVm8d@iVJߕUC}9S113/{,bml}?-O⟇,'k="`*r0+p&Vֱ>8aQ-ι3!ERwF!2g<5"( 9VwY=Uc T]xkm#wb/V%o X&@*`)O c ~<ϊ Øa\zuwSן C@YFz2=)36t u[]tZ!Q&3]$]?x A[Է]6>7לmJsyPM"\ %:G 1^0H_W ؜soO")C|%F;]ɞPqcw"Jv9pL- IDAT.UcM^>Akp1S}hl/3R'obkτyVz9mb1nRbb["{AXOU"gvuq&@dϓi>Zf%E6_4 LCMƨj&XuL^y~H-M6LQLîi:,:";>mt ypzqa<+V) /@*m\,y;`" 'Bxؘ;V}=Բa >j P:S%`u=kpm0>N+f~p?Y@XnrB1>!.T M*Å#Ϊ_m;lepL Fu7d 빟93n+ԟ*>6aF u%x=p2_KX[ cb5>ͺ+RYo3xh?7=Ng.X?@j^4%;@6WQXm6U٣D"Y*B[!fF]׃'/ZÌ`QS|  DAPKPs)|I(@I+ ~b(ħ^:[;@5W`K,g!b)cP*CSBlV|a#@wsnVr~-3TLAZP>b>wނ=k6, ̇ "+.Y5yJc c|!VT[ݻ۶iR ]ǭF+)pŦo Qo-^+ lqF.{D_+L3 Ʀb;V <_\Y짿"-.$܈h9-Bh9$Ƭ7,2Nέ^{=6Mn׵^,5z+4MS@>ˈf?ˬnev5Yc;F/UP~_жw\pyW3nwHg՛b8x~@R>?掝x 4J vIŴ|M| "k$@fP; ^ɘIms.Xn(.VyqށhWK͂f 2b|P[8ۻ{\ͧ7^.iPu23 [QЛ^P:k.t0 \w aΔJNvM&|&\{n;$PaJXî ZD9dKJ M1x1D*p2H~Z(Msy-kypwGr ֠wQ! ^n'/SR/d~PzKM=Ӕ˫f Ɵp+Jvq%~m}XlVޚ@'3‰!['H %0Mh) jeMRn`MfH)%gHIM4U$i}䴡TtMyyyUBw VWg++ȠdG~? i{fw˸Q]P2+f-Xs*Ʀ+jFZ:ۄi#wS8˳̖bì'/O`PKy WS}JvIj76s aT uYܴ̦HRȏL};~msցv :=U^ /Ԝyp&24onD.y&'N[Vt bo#"g8فv1)r.wa]|B|K*9oqXە`:`.@N* <`)p2 xBl@yP[xYP%ͣL(kE+9qѝəZ`Li(yfﴸj= /,4Uy5URT঵\o^vۅL ۑbؔ Sr%Uus{thCb(/HED =3ݯuqtsc)CCwrדG \̳! ]yp K ^vI|45*n7l`h}Swm&62I%>9.Jʩpibc; 9ƀ7 xS)S\c<MOaCeSULZ#Q-"XG6E^j6ml”D˂lc"7s,k)7C]HDڛoAW#ŤqSՁk!D98߱\)L ̱fHjE@r%Bo>Sȸ2U 'uYܔr/TO*IzG7/713Vb{=<24{M|SջY6Ak Q66L6畂KÓ&icZov~x߇8[0*XO"6z!f=BlsǑTUDwpEJ&n/.@zP')(92t;\RQY?Dms= |YGl`" 27,dIMu&c=WV*7  +4aϟ@`Hۓ{\tfSj*f3Tt2J^ȿVϓ;RdNb5Rx }VҮ+ugvq+fn6Pb3WY2ο#f&56>N<&Iñ wkx-|V(6frgdHA0Bd0irpDJk~Tgr6 `-_/z nqk%FogO 8 <sp.#xƆs%$| 9> #[|ǔ6oĔP\Uw3a`8ih΄\ LT<:6)hp Rjbf8gJgF:s3@xBK[)eŁ[lU[PCt1p*N<#Gpng`]]AWwq_E/!uR.;!8f?7%i+,m:;@;^\i!e%B 5} -|xj@,R˜zpFdvkb{6۬ P8βsD+!nQ}0A^9g(W%辀"o0J5)|(W311ʚ`pv$wڋbH&B8TB2Ie 6e.G ʴ*k׳MR "-6ʌ LAWIy ]Q§@3e*p H}vguZ=3kV-[a(Fo0n2 R?OV 8[ :5MA@x7S_)l7:ʅ)z+ SeTftњNEP&M,gv\.HC{?˴^.x4>N>µ o;c~3> P!(LJZ9vd0|}e,mViuaPV&&zrM:UJr aJG2zX{pB*FK /Nɔ\؂-&c"^X`$  /b{n[(xUgжBm?fd p"'H \Ap^IfD8vvgHXydA3R>m EkRE լ{ܠ!ӓ)Z=kD@ȍ`;B UJ8aNrBOn%wHd ~X$BܕsWvuxgϵ0ڸ3Ơ犢虠ot/-뿌 * . =\U* : P u6[,@Sv#MW,@p!)@) ww-KñHyst67fm:;0!c2SαIRF``\hK{d`XN ( x)ӊFv+U@y;p< /Nؼ8RdBѴxuS9e;𺮃&]m pbW8M#EHg~->*͎u/Xݨ3Q,v3ʝz19oVU\ i+eKz%9KRpULt~fv7cà_Hmᬸ/)3Yl" *=TS0r쭩 eK g ʧui]:YHhISE )7Bq;$.9 G8`7G@P]҈@~ˑ@wT0-wߴ5Nݪ"*lST=:l}~Kg:R'P, 2v23}!ǣ) Fuʙ &}Y8  6CZe f%H IK%Q lpGfL]Y/jY $=j ;@o$eגҷJ 8I*'ofmZ9J4b2T7mqVsj01Yl\ uYmb>(p*c~?G;d[6&Uܔ锔.SZv^z*Q}0`G0EL-vb2r<4DGtﶁ.`fmm·l{iWBOe0`˞Jc0z ^/",7ãސ9-VB[QrT%P~pHJ~V<3IdN>\*os }"/  276^#MQd}˅%fw)r)ϣKl¦^ LGӥLUn߅_n=-"tA<>PG31 K2DelLT[[Ɍ W4K 4t2ml{0fp^m0ΪVB>z bw |į^X=6?5+6mMd Z+h@gܔ=[23/UJ`%pq` -x?sSQP|/P{`;ݾ1TW2X5tg:#V5'ڵ5=G;MbB!S?Xé9ǥ٤ݨegRaYu4! ͟C> mwY jzYcK&3=/r&UvObmh|^h@bOZT\#,VL*=0׫A|FQ:mBߕwU `ƛlnpj  (`nsosziĤ.xj ^nVL[)S^;t>WbdYމat2љOv&e#2X"sňK"+lBb z:9a&X2 B7e &KY1k7U P5; }$DuP*3-0~lako%~A("pWqbnkAS[l;lQrڔ)2R0O#-z0#Js PձA:M*xGO_ U+h:~"b|W\*Xb "J` `(|e|hsoŏG-v["X+o&b +folJ{\_Xw``(=65, ))Б.aOIEkP+k]Ss%Kz8 !j#T= %?*p*U&NȲT#L*:wo74fHxb1טnj Cezjf>L߂FWb{] P3ؤ8ؒd<o5ZKaFyaW`П4$6GCgk ׋9U8URJPY;!d&aJKCÚ)7! xK$dVW*Ŷ~YkM-LH+R\' aXDP~b9F왚2D0[B2P :^&E9Ikz2lz_pz@H.o,֡o4W 7v^::_:V3/a/ 83-+[x18~Ҟ1ejtCr~o*g\K,Tk' =i[HXY)mxƋ1?NV @ 7ʤܘ TvmS\\__§sѪ(o~co_.#B=Bs^c[-X#~e;Lv>:bX#+GrY<%aRNceB`m+[`M IO4 P-} m(1X>$}G3p _-`ͅ$/lH2R]GrnMc#L'ܬBY+O<ܪzd?)+.H3)dkY\Ϲ.HFJQ ]^h\JalPKpDom~Ⱦ̲MC-bpŦħ;k.Ս`<''n#ޘGᬸ9p"ĉͮ XuD,ߌ[z4bWl&cCT9sFПM2ʌKBy!t'e@z]DZF?ү+)>u ɯ*@%&ʡ݉=o}/wMRxBE?( E'X f:myvNP\ LlR0% !B?DsbLo:m t+7c[u7 9SqV\`v !hqLJ0IĠ6 IDATiDݏY ؤw'u+B)N|]ew!{ l/HRVL]T+uPDL %S/VekfAHw^܊Hjf .#affQQx)O[y*, ۗPE:>9glaMu K*i9a^X.kdHMmXs 7#fYu"d0L7fZ nb=H/X:9)rsIuhJ(:T7M}FJ(RXw1!]F R+(} m.خc4Hs-9:힟w "&[˙/_گV_^, \q-f~ lBmDj4nR(ޕ;S3;fc,='9{L@P|KB.tοEa).|!.rq~D1_\Rm7*bKغ H礲C:5G`IT#DK 9+ObfJ0e>.zNJR1gx9c;,ֻe\V跊_ UL*YS]bIMuo$6~HakV  DP C0O6[mDԙr`9v٥ĘzZ:6#$XUdN, ='g/4G6x28..p@-Xp)i l79 yL}7~4m\mStS}@tAJP lOA-Ԍ1VSg&pȄy"^Vl=E}CLf# # Sv}6K6f){G P9, 37݈u}.Q%M CcBB'} 'Jm%B.?A0"G@mؐF5\3#tk`1}8&C#7xX??7( 0ޏlb}} ZlZx77[w-/O"TM`/gȗ l'<+R΄ #6+`8?I<4:OrI*6 s8! !8B-1oF+}uJ9 tꦬ<A{Mc?4@"ɼ00C>Cq  Vȯ ZX*s$l47΁] ex~ZLVBO$/Xzh2L5;IT0Àt=v JfHE3$c?WtHN.I*M\ks j"g#Cߏw[PMLv%l4QR 6AėCbBM|@[o8Vt20qʭk~̓R j=Z<(*Rghy }ulN"| C&#G"֖@2c1CJ{!LL;SFTA Kd44.)5g,N@6æa?ލ[71`\28ֺ iWY=?P='a;\!r<:Px!Z3:ȋdSnf'd1V-JޠuA3 4?3,'ͺM7k" v mN6hg7:@w\vKU#~tП''ɲ'-$dBB- "}&3#!ڳMIw 8[ D2<tϜ0nүjq@wwhPu uv 6j!LԼ&:MѯοemYw&ٽvӕ-žq8YI_ SqsۅλNJx| \|NI!>+,oT2uĩ0' xk1q(|Eh\C& (kփX1) *F0<0+lRB,iz.ODP!nN%6sy&2I/.e=&$ja"O$`a-c0jB-=7ᇥ`Ps~{|=nWa.rr.VfP"$==s!e{3rObǎ-8cpUSс*]L\q.d"j[W☾o[)EwS(ow)2ݫnhsj?r"T\AcRѽ6Tl[xM3lr ӎfx.9&Kɸ/>lO\‡!K /)3T:2-1L{4+qȕ`J#]`I9@>fˉ~ y&.D&WxE)rxPY4G2A?xq"̷C+# C,80aO:hز>M%d }痖No=.@r&{;̈́@p?u~HX'B]Ҡ5PVjgU?U2$_LR>dE-‰sMI9|9~+!Ȫ-o3Kzbu;|:!n.B0^i[V#;ό-⥙))xka>ʸ!fȝXb[z>) qf%ʉP0*]caxgPA\Xkp(hgb;'&>`G~dX50nj3z 4"~U_IʤĀ9%U`@A`-03v@c7,;O=SSPSXHA|Jfʟ|5_ذ Ie y:=U HOg_D_kcJ`gi#{RJg3rH CJslWdSNlvl}E'F1` 2}}?#}k{toȔ1v8. C:%Fg`ݘ2S`!By8\2y 5OIOgm2F c0?@: aɞ0# ec~T\yBE b8iė1x xCu ZY KMQ"H)"h 1&R l,Lm-l-|;p]8t$T't$n: KSU_ȱsJJg9f|O'ٚ)-1 DV`\>x O*;eS`S5,2K&TVLE$L6& 7BbJXC~[, \[t(eWjSϳm`l) DnȂ`j*A茔>](}mopM=PYffŞ`c*$'( PBX!F(OGO`-ǰϣf$T6ϊ_l]~ݖm5 ~ bPQ "uJ݂P:1{lVteeBJXĬ] tCY8x}?zBj@fЀTy|l'eY%[WT_5+^L_N'ڼ-?@d;ROjs۔9緥n˞`_rMq1^ZN5^>w`ˋxP{{`Y"U=}R,ߵ0>H=&eb:EPac=Wu> _1ur~vܜ!SͣFD`$. ]#0Heo.Tߵ[6a*1y_#3xc:DNaxP²n~|+d'~~DW[ 0"2:| @{A@1l]"_lS#۬"}H #|>W*UޘJ0  5jvx՗󃣿`~6UV-Ω.lQ""(z?+PH*lئ*>F A= ?1=CDuLJ1~]TXRe7?bv(&~ɚr;hNoXZkhF$>cr>[RnYJD ]ܡlRk8 `#1HolQP9P[I B҅ +*-lS(g0 ,ːe=!Y,0 ƘC`!6M~Db$dVB .ݚ{ c^1MU C3ISvEef6hVs߁96u_HhC,v)Zc/ @],TqA7o'a=}Lx!%`|,>c%!u7 w1EuD8YMš:&G=R){`S@U;|l=|]UT1h(RWf_*#4*MhYݎx4$<_ock-("ܔ3G1hĔ`#*?xCVW%alB Z_~%f*~UH'GTPYc&'ßTqx?V:`-iZ_miԗ}8d(ֿ(ysn˿!1%X>}9I @YqM?)-12e~>jޘz`1 )g>T>O+XZ:I|ЬtNkM5|R b 1Fj1=(a$CGUqY{q-Sb 133 :=zn{L>f굌pݛOEX0=Ao/Y1[Dy~w2r9II1;\nQ;LH_)51w('/>cz 4=Ufw IDAT\erpL;x0>yy9?T[oG}U[z5]w$pppf>^:q, aquZ("X]i /drJ0JSi`̧2KU俪OoQwmļ 5e1 #7< >yx",S};>~ΊpfXӠ< brҬt`sL~B]ȔEpඛB;cS&9D  dF`K*R j3ilO'ߨnہ#J1X*fI2zXg3mXP1kH! ִ<Ae83 EQAPo%"2 kpl-ǖ1aV[GaX"4lQ0㜀0) f%C~b$jr*˾OLFj>UG.ىeRB)QfSqo~ٕMJY t Y-:}-TQŁ.˲I9l'9<*p BpƠWxX`2CvdnW[нM#,N ug:|ONR| XwT>;GkC=;)4*e+1E4 & 뺘 meP/(On\lP|_.:\JR.@ab:î 5?}y[?&,~Z[\59b:0属8|>;زKفwৰx-.5 `Oe7;ԩ\C 2٩2BXRVqN>ė?7r(3BƠZ,P0=@kkw]P>)[0alC(Yω( AUUheY4 /Xh,&PȳhD(baeWj{3> WHaFe ޶a[߄>3[. ?f1;р 8F!fSD_G+_Փ?ѧ[5/5^ݏ2P y||tNPq eP%Mϔ Tip1(:oM?TϯWUt%;{7Q΅ fL'Y )NDaWUaUKUVG'M:'֝P~3e[M p ik))( e8b>S ϖ`Q6߶rPy.ۣ<YRYjnPǰ-냫G>o,;`iSͻœY BʥQLK 'e,a YUK7c~$P<̈́Yx-kc/o-s/@PXqΘ"fU/P>l򻶩*4H)1&52D. U1ې}Sq_brbJS{n r|:s9Οs_ fJ x+0jKkpglqs0`,AMnmNzɑǒr9&`i;|-SE G L//`M-Vk-znxǕW>EO3ڄgs~6et2ҙ|~e9 ~iUF(Gsz[S)7ݥçՀQ2-ZR6 Űݰ32"(0 3p pf L@ N- *PtfpQj۶ƙ°=/5T3[fuq2d[x;R92woLk> /)P# 9x勯|&tlSh`:^:sh]@BbIAN$awm0qJU"wǓu{N 6GPx  JcbtL9@3> -[m@%?OfFe| ۬j柰xVBpj& N t),eBHXA%Xp>7>w_DWi`/ Ig:g^:ղ,KUU,k\([M_@$v&l4w:v3.w9= !1^5PLФ6<Į9Pj}C!"\!@8Ń|Ps]/otJ.1=1@Ήwn$Wϳ)W>+e`CEZœZ$n :8^Pt:]ŝyt|y3@)[1 ~ 1LH k܏pZ(hKΔ*w7턡#p 8e 54/\%]Sn:Ƅ@S5w7<(81PN!ޮ"'/~Z>w";A߇`J11̽t-B1:SXKeGl$D2)[| c|,g5 3m6 f̈P7<ޠ&feꦖ+X)UrS~&|}ꦾ$ƪtofr${LMf_+ w척jQ }PcXS/OJYKe/g^N``1<a}"BR}*xw څC^>V]> IFA oc83\ #,<~KQJ,5KdnBԢ}{S.\'CJ?N's.TJWm#2J(U}[0m}X,=` MMy&| >ձ'3Fj#fRN:+ LFtߔ@̰; I6GFssUzzj@8Ṙ ƣ`9"NTM⸘~ *j`.NբS2-t.W0U^A*`o_{dp&czrR%|U ϑ nݮ{IZD[00*)h:ꉴ[.!CRxVÏ6hvZs5N[ L~ǣ"Kt{&IL;Y׹61]J&Azle2ӓ~~IK$1 Uqq?z=3=3feUH;;ɦ:_U]_ RLK 9n`t1nٴxykd\eqfůaQeZjQF`KCX2>$'`/5%h* uűHu5I HDJ bQiSgM/ohx {Fʥ7t*;Uo"Ca\ݮ zT?x^WV o@ uxQ๶k(]o QW,=Od6lyb"P:^_5RCdS1&qw/K5x G~ 7۟SdnX!znb!ٶ&HGSαw1U&GHI/<]x[YٶoTz)q9/E.)z D&~hLD}u"g`(ll h*!v.LN鑠s3mk':rQ?Ԣ% |HoT(3N -sH/G2$hMXzhcsa=ͦoڄ =R16S?`ȴQ|2R,2Da-x<_zX@2YoǖmTl[  %SfXx5ɉ}/AM6!S^ jsB&"*XPol免Nቺ=x>>ԯBp5# ц^_% Ճb 6Kt t`TkhU ?wt-N#2e֥NJSy(}9ʁ_QegQ$UTUB֏4qk ǓeM%`jmOش?Q(2*}TA\'L,JN6a@nT37]!wqdݎUkRbiu"AÌ_;OTĐXd3^d"pĔozᏹ xTιY$;_Un(I1ÀRbJȊSlEGbMZ40v.M5 * TjTR?e@^t65l l`;#8>gxmD+BMx ^g$%K`|4$%}R(J+/Po@'9]쾆C]yvx^hff;kc:95[&s bV }_ƋME[ AG˝2λJ] SL'Xazd ^h,ʾJs餏wA534/ ߄e9,L6i c1*hJ2\R=DZZWϲwwT ~jÄT,OL=H8Ai86n*XW=oF?;3s|KBN 'ʸd;c kZjHMLNATb\e`%D"ܮQ]dD_%|Aya1i8.3nA2ঊƖ9X.p6Z|0^_ 7l꾘U0XF-@ -pWz 8` 08F&b0]5(N-o ҝcf%'EF>q:5ҙ+9TUQyeŏ:xsJ-}`#9Z<>~Yh#L}9(صe [pbw6Z>b;;EfɬϵLo[La:,a11@V "8Գ, )R%\e^@>U~094$\Ϊ+fA2'DPќYK~sȩ았y9l7hЁt`v]q|y}.4-֥EL6I@sm-Z(4>xͨ.U?67H.Գ|1EvA~'IP^s5Co;_,0iUYvsd%_s3f}RL5rCS,'Wa9-<.|>)m:a%94#;f,nXi٨J_MRAE.oCwunq=_.,mf] PCkv?KW`iJ.["³T$va|U*"7 4Ict\tlƟ s*cArƸ]EJ⇝. о6i!9ba#N>CÌ`1&C xN)E9{͊߇LΜ6ǤN%H{d 1r[\Hb41ۣ ۯ*-XvINxhj"f2E""aH_knզB! f (~xyuaϠۂU&s9)eS&4!Y\&S-٨a?E|mC{=c>X;h5O( J"|~lʬSJ'Y b@Gk4zÇ':53㓯x^'شӢ0L4ibʹZ5+E6b`0>hOk_BPBvQr%y(,bh^B'oo,2$[mO >"u7lFH cJMlNGQrA1%8"0BOzY&7-(,WAc]kEm57-Rayzs9eo ׋usC"SvPGFfp*I:Oʤe\rJ=nǛL¹js-^%]R/0x1\Dk-2bOY8 aZlg>PSzhls0:&uV,|kb "pVIruf. @Fc@./م)DL`=(3M#;*Kh fZkbC]8l CmRUA;4 GvOv9 }13, 7+0dTuh܁ݍwo@t pRIg(<1M9Wd@/݉S* Ƒ $hZ^?RB<mMrc( \F[('Q yAlz1~z :*Y Eo םwث;xwhd9W )vgeX4E ሺ  Pe׫0b.`F"xSm1,⤪w}|q"݀+ҥCQe$y0C.2 Y謵fwgT7@_VXBhuAEhh,cnކ7v=>>!n#1C&qv)jM@o)%:cFo3R1U8^P1%Se!@-ł$TTGiEKDtcm"i?@N`3P>S[{df3\SLAD,3ᘁ?@@E5 ԱZH'Q0]^tb>n_ up *Eԝ Y;'AJ~8-8cN5-bB:٩)JUd< PJlW+ 6j҈M (c[uJS3- ⋡m$s75[0s3b*]XP]1($لƁ%4W)q%"a~"͏&|]UvTh/=8\t113Z,> `MLUMĤڪh)4sL= u%z[v6zBa>&G\kwxSlLn0LSRȅA+`QDj cvb۽wM &I '`']41l 84fSsbJn&^QA6W9<puzV{rjd8!̛S#&tqRt(P{9.{LMR5rUnav{i^{3j.uλ=izľ W3A iN's?o1N]̱ch_NGn#v R"Jc"P> #~ ﮠL:m^nX`|msZ T L=&9^ir2:p"bx:ZR S fu멌~ʨ69F@[koU")ivl )ؘm\Tn3~t lsYAnԸTI5@Bn1z<צ숈`<#gB SAvN1^,L c*al\ eG̴ }Ђێ4Ōعc91Ƈ1/o ,񔼍*T*}3-W,ڏa22υBf$jBdBn玝`y9j Z͹M9s:N}M}5q(.!|*_VSgS9q +BXyrMsb冡$M +֏E1?rA"Zr,n7^q?:ӯL8`__RcgTK©Ǥ+b|h)l⁏n/ i~T 91i3 L2345]80G`Q}[ˑ_9S؍"WO2Y!SavG1b91\dH6 ʟ*ddٖ C[lͯN?fC& Wԟ 7ЈY%0H F^hJ?U($ K@JS~ھys+A;A/%aYl4+s,K)3Иw* fڶϕ;A`TGmbAȇV G"Q7gZ[<f\vn r(3AŒkF؍\+wOnNW׈z0/-VDHFh!ٞ+Xl&h7ҹjZr۬G EEo93 ղ24~n(\,9VBb2jǡLN1z*2Zu86j,r~+A?2&glB&߾ВXBE8l'UX!ղ~;-R.T.V?!ٯpfmcP0E>ϛkU/e7Au{偌r6Qv F0Xf'm'E ԛB v] [o?,?LRbdɶQAEd eY,r#̕/ }Ŕ)sr< qsM7irqR1eiD<ʰ0h|'p^h7+-f7&619R`n.VdbKE| B:L.\j k?Vbg;E/!cжm2e`, {e@sz#M5WʙS1]_$FHS9w8TV; ^@tdH bZ4a-R`f3WrbJlrfneXne=nA#8G9% 6,J^@.1cm9} }̽}R2TirDQ77uf#ߗdF wH~YӭL6ZԘH՜jWfg5lw؟^aJ ջ.ORA>Eߣ1%.4$q}MJFˬp2%~wkNFV,ԇJt//rwd`;t,O3S Mm$pN 7[ P8 ʰ$G Y37˕!!T ĸv!bرK"|OT&<(ZHm wu]d; -s nIs-Z.W'HE #OMTo̔,P(ɲ ^S" ȯZS7Ff]fmzw?Nq ?fK&?}9̙7Si[xH!؏RY ?۠Lp-K_?_> l75(^*?EJ{j9bKmnLЧ*k [0__gXw>+=I њ@6B3<~&W8{z a8Tѳ֢i/45S0>LlK(KX AbٜY9G,}@oBq f `|!w5[Sa蟓F%@u͝>v_j.5h@I(qbSmxNU?jw |e'7pa:˔05[ ^tkGmBHHĺ,q‡XÄR-.pДNEJ6J]}.}` R*:#=&Z"2iA Op {{׾4`Q=ǬǴWx,T1M?x1)*Mk$n 5=6D,gv陀&xp:"_v?vZ0H搑h TZg.3KfӮhuRJs_;|= c=[!C \%[wHi&l駲OsZ~ ?t2Y a0K_M"Rq;Rūl7zPmdرަ?d+|X.<G 13gth,޼,ն%j:! 2eی6!`H[`<^$GxӃxsc率vHa ?XDonJcdFKHsn˅q (E)|`a}OBPik#jH@sl7MKx1g15(ꌬxnlcaj:VdYPNEy]4*}HߘzzOÎ#ͩX~/<ljpșn/>@zP" .%pIE~(%Jn pnOl ԯV0Y-ʍ;VtJ0s7 CunI َ{-@&I 1ڕZ܀R(z6 $B.V'|97HKPuXj7ņ~7Mq!7|O53}/).*kX*lz5BHqFĔh6"L`}j ު+R8Gn3!>Hx0=ikT,ys ԀmR*+h>AAbt4_"eA8G2Gnl> R7Q}_Gj;Sܠ4k^v_daA-6m4g6V܈E: sƹfJDR3)c x L8ҘNRz׋E6!zgp:IP \~2EHAU(0&`KiG1>&>0kk__,µrNi+S/mM'% zyM]x`+L{ U }?T㩜YS`vؿN8%1Bl܂ŕ`lwYaf2SǩJWEZPZGǤNAȠ89bKlѭgGV29h0 N@x_GI:*_Dq7}!J|!cR!iALp ~n nQy::"[Tl߁>asѕW6Bscc5W\)T\*+ Zwl{0n|lsj.}1QW5 Yrnz۶#(aM\K\W\l!sFC^++(<oRﰰŚkfTbӷP `@8b u’nd)r<)]Ѕ-Go-uۢL &B ߂mOD"+a$i-&,6ćW`\_MٯH~Isb]|tpqsuvՕRWT.AG'v zwJK5xL+S.on'"Dpn'\YU$؁w3Y  "@sPC'f{)l}%(njr'/&ъVmOmlG13LΛAܮ? { IDAT|6X[0Pnae+ֱPj =0+>hf"S U31 DhB[WHr'ANg)v&'&e۱lpRX @"8I1Ѝ5&EP >iDs2/@1(,_ 6(6rq|)Pqt-m@IaBy2(z0dM `7'GHO P/ӕe'Rjn[ѐ6i;$lp-8bˊBQSzg4$X h7wHekI޼ҿ* pa|*[?öA#|<|7' p]B0>UR2tBLd`:2VX<lXG錶{fhx oKB1 |A/):mDC`&}Mg)0"?~jk[\Pm1йۥAG^]6m"HflgABd7`07B̖ptQZHE`b2.Fb VFQ7@]) V+bfg,5Uv=o=k`LD ?kk;GMi0)Z׸_[x A`zJD*V>"&`:+͙KGBi0JTG !)vT~B̖pnnmݕqQz; ƚYɜz9F>ol`gطD'_]u?~f*m[Tl'6eb:M@/Z~SXs ­`>ƵP5𓤝/zVc %<,:NǺP K 0)Y\0KɻT 7ՖrA]2"^E eaf07@~*4x.Ý3G,]wk\` lq[c[b*Xazs2xa_7:Cx{"Vf47+ ~whL@Rb\A~yfzMe_90ЈZTȴMτrG$n7{:qSD(݊U#U{YQ|*]Rj Lʑj"p2^WI נpB+ zTA Z [\9w.l;?9tm@߶>棄kJ s Ut&|8'\Й9 R IV* AtJR~ή_aʮ?rI*Ǥ )`z (9rQ.2:\C ~V|(ҢgA[=Γ#,;>9 CcE .fnN7TkßX ӥ.RmSe})bt4#e6ONs_Kaƙel^m[0P{^pE_nl/&N)Ì-[T̨m 3Ln\Ix2PnPjl &=dBE p 9 S#kH "x [ P5r;%( w-7 *%P.Ǝ/s)q_/7g`nX&ʤ߫|];ZoJB\no`s91 Ęov0UK$Dbr^sS]Ŵ%VTݘ=/ƀ1_'%L\NW跅?TY7ToC",.k+2P΃TJ3p p_ƦN~(G*=k}yOM&?'lDJ331o'HGx(%|?{0člkাȨ,\**]Н^tc˚)p'+C[_ 6A@m$#XTrBn1UmSf`#rJPr,&RLY ZDD)E"Ocۖ͆},PcM#r^̙)r7U+W3's[ b lĊ0I)ϮEʙZh$.}LIR'2˵ʖeI\T?PB<]-Uc%SA9[ۨrH<>0qłծmBb@p*=y l΃ʥœ ƪy_~*̄r>l`|l+>fqpH.1 Y,axa%vt1WxE$L%x'ӓ[Wl7u=Z\9Q+7VWݮE?oJ-Ӗ"|0L ⋳ZR5Hca 0WmDZ-:^4/Px4ic</ezP0IYƽ[(xT&Mnx嶪muqvCzyT!L%838%ėڎ Hm n?ۍ,c@Pe"]'n3DB(Of#x,:)Fxxqx@6 (j&8MKn:!:'R K z`}A,b?*B~پ kCƷ X-: 9HDrE~k+@q)&u9rT,oXVD0=f+ēyRmf>[{EMcMRwO}]T R[}wmXs̱@ e=?S.z?esepy ~$/E%6Ё!YPaRc\,F>6[zfsUCJ*(0=Dl z`{l[$e5IX⺂{`}| .LW [37{ԀL!l'ŗT31LrB]/^z%R|T! f{=G B07@Yj@ n3 ?K)6+)u.(oz39a(Q?-Q^3˙&l~T.kɀ8L%\\gn.Yj i="}b@iՏUz@; {cM ER1!|-Yg„P/zlw&lrk²4'eIRf vѺչ/™.f#QbA  %f92a*? UAN{- >⠎]z6oy ^Łg62hmtɒmr.v's35j\ &6"2RrJC&%+0Ce;+EṦ=lE59li`S* R+^x =+3 xذzf PJ1Wc<ă~w6`pc27\'׽JuY|,7P(O8팵PD 1HE24MMغΔ~лέGJjh;`&wwΘIx<'6";;#!nz2(.H|#/c\ru챡瘪EF!{lT먌 8f7]q`BDRsXe${rߙ@o~ V&QVQݣ>.@8wV |J@ 1sN%/63 1m"Ψ60)sMM1SFj#U"p!|S |j&Iɺ=h,#@`PDɕ3a&(9Ɯ\2s)E %pĔp6P+78a"+b*x3 Z#rF(P+`A|<7t~i!2`)S kbciO$bbAFe"Z.(3n$51j Jx93&v+RՑq[ua33q8SoVF s &>'hJʯ&Ir. ~C's_)5p ;Tbdx~'u*\&{*ve+(,J0VNu\.:8}9#ϭm:~A/f^Ι2F$-3Bw7ݒEMOL @Mt1V)0*LRPz_:a~>&`tu1\x;T,Mu,'bo$T]l&!N0ҝCrnwJ)MvÜ˔_Nq i*i_P8]0+eC VJͶ;cc-)w‘-DZ(Lt%EDDBFV@*&Xj)G%20.UFW1 O߈? $qB= E?3G] x':?`\]'̤ѩ|MvM"^"E`RJ8F?ۤ sUB`kR _xߗibFNms=WHF5Ҽ]r&iJ< s,qE7]/l"RLʰl T]޺80Q);aa5,,ф63`?⹵o%&|9PsBSE:02O?.y1V 8:Q{#>}!UbWɆbf<72YTt+&cyW,&ゲ MLS"s}"V"HŽl66§;%&Y3=T^|1' zaa ? $\V'_&\)㥤|fHaU-l.Ra~hL[kaU8?O_%( >K4WW¯j'V7b!؈'3(E`<#f#fat7h!rdYl]d$8m%OFm"*{F{(ڻYp.9+F0Mx!F$}( J)ƌja>W D`(YMűײ~{-Y]D6$RQ] A'f5\N}' 9JX΋) CMJy-1$˅mqfq/lwR {؏lri!?LyEt{^.`3^*Nx|YmĬ@ݕNl ZH.91|({cxF0?;ㅇlbP`#9˵ <s : \`,ѳJ @LrNԎA\JYIUy`s~|tcnc S~UT}Q  NnjG'9,+BY.`u#UL[OVy%.])XeXG/]a>!@;҅tL>.V JCq9?O\a<a- `Tw]@3Fn#i-SW\Ԟ nnz[IxdV%'|sG>Kd!LH_!L⾓XGDifq8Qc- ,@ g'B)=-Hw~nKv^cŲgB0U* [‡#T[I3t) Xoοsʉ`=k_Jsџ Tsx?S q+pǯg6Buck`['6x=C}Lafa:5dGQ`ǒX.wBwSRldIyPߵ*UEpn[ _1iMsSHy@>ˆ]iXi>Z |E#OwUr9qX&8\_v8f(EPc[ &@bC6Q s9R,f#|=+pl"Q 0mo]7pCxý= ce0cyvN 3Qz05?y346mjq60H,DV,|gr >9ƫyUvLuWa I qe 3{kaʴ6v_Hp3AÉR-g2=N VSƹ fS%שs5&>*hX3Iu`Z =ňV~|qlK=. z ?5出-LĕW}CpWbw]@*jrf&ϝ @Va<* `]2\߅`C'[4oW\sm\;i>~=B2`/vZcMD.-lj9XL{64F)ō0+e=>mx;" 2Z 8$Ntb+|=%Y'z!*"T={ Q59(Rw_) >CݜI@8~&狕arv8{dqXā(|*̽ S 9p `2" |qbgRYVMBqՌx~ uD LOSvK%Ku:3 AXf;*;Їb,v88pq88pq88pq88pq88x8%wGyxp >Pf~3hoKM=c?’})l/ϠY IDATH ֣w`HLOt2B0R1F,*{{BDŽ997u2~3S9p_4ӣ5*a*dR2DQ35RSeX{t)w,5e"H9QDCLS0S39:h/-2^X_+ &htJJduϦgHtV85W7i`V*[6a)[{NDk-ư,Vd*`B;@sAN[.0'@ \W> {-鷥S *4'Tɭ1ll`{9W`.`E7`Ԇ3"; ־d`szlZ0@+QĿ2!c v|$NzχgM0T>&gN1Ps6 U__]lp}ޚLS0?^ Xd@=R]ހү*_־CDglꚭ1jR$("T0VP<#߇ cG,Xp|R(/n= mTfk]DLD @"}DoA ;of{lւm 9vKd!bN99fN ?j Q\3$&R;пVŵ'cOrm럘zfsZћ{!x̼=&|^`Y uG% ocjͦj1ZNhMio 3D˔ĄD5qxzk7ֶ.Nm.mu& 3DԂ] `wiZg'n~1Y̫x䘏AOS /ΝCnܕIC]n> ~bŽ6'oO=Ʊ^ \SJq@\?ԯYmNqNU Dar#'H n_4)S%K"@Ux7'7T心5Ǫ{> [$d)A$֎<0%*M'wԿz0s*g(s1K?q> ˅R"l)Oa Hu>zgW5m}Tߣ6!bs?J)(v@āoΏ|n{o YRXPfq$,RFI?eɸOqrN霖Sfb,*?~ɚl.: 6$R`fXZkhADZns^ DܽY%Yvg7ffeP#6Ei ` |-[a2نA'=~ 0.˔̡' fլΚr{D{!bYcqnf ܼc{Z"<HDO% 6LyPR1FC^JJ@("Q8HPWnʋMϰs9.=ze(LY!sy}r2mLEa wg 1}f볡Hc`#V(W/tci2yK*O"7j#됴jC EF~$G8F_,"b=W~M^ ~&6zsL1cD8?Ѥ~4<T^S&?M_LaB)w^}x"c_Q d KA^s/56(C}t7V2Ikb _E;T ET3@d$I*VߣdSU 02ȕbwT#eB3|.W,˩ϯW5[]/CT>M+eYlb1r=$`Vc ez:P-/}5'z}/7UkKC`eAwU1n;XjsJg^yX k_55{G&V:̥.- sp.yޓ d(ݡe 8?"5PݖvQOk'w$P>{i djRݎz< 8ńVa(!dT&.Je2FuzbL|5{SK* 6YO͏b~ ]ߑ,J]S`ɽ '-yxƶSWE}_!KOVמ: pVCW%ûGwz}esipݯdjG85MvdO;.Y,zwO)E`ܥu]fϮW V-W9:LsN-Mm.RSÙ@5VORk dޜ|p`ds)hpHq ەq3ZśY3 9-Q% 202 vZqyb$:[c[qMOG bt*R4%]j/,>Y>flFmu:&.-^ )ҧ]}$  cp2.[%.XƂ1s=RɲCEI)<38`y>ypZw5ǘ[?3lc?V7Laˇ%®j1ptmx<"]JhMbn\gD)_/~ PG6:(4qs2E8|*8c0f, ,{`4vo?:dWYRp >RtQ?~_跡Y6[m_Dܡz^e '*F %B>'ujy9{f RefB` ʣ{Їuj\.{ss(}4tuLָf,2놱g,f݃isP}=43Rpw}z .<Jf}xw oKN{S]%F;Lu^EEF1FZL`5wUMx+{8gceе ^]|z&7;V^=>K覵F]׀Xgų%cQ .#ӂ],spv-EǖgQ<̰JX?'wrEt?>e'O5|jn6_;IJHMO'<[AGF[C#:R_}ju8'm:r9r pZz岗^+Z]ר qQk|xx@hS20O ơG.#,ex {ΘQuAfj0pz?#"({-[Vgwf^#B'0SVkЀ7o';BTF[IQVSܘ_x⟒fI5+TanQN yui^xsthu],KqAV|4-Pd E~NO-ciRS/L`("@ ϑŠ0J/eZ޾Kj:{)goR=hk7 %xB$O+Hu9daup=tEQt) :usdWUU+ nhY ~IYhÔssts ', ς3p&$( `Tob۶^u 8V)m?7vb+ƞ4?mȼ3[g{#wDDUc裻ARJ:\(IesJgŜy :Tі$ݖdD:mQi#s{Xq6lK?iB4Ɨ[k^bF7yL@̛~/FX2E;yȖϼz}_8]WGNg\.E:Y9й(]"\]Uثj^iRY[b4)Laр$(h2-Pf 7y8Bs"()(.c%ғR H1ˏ`s3GkSKc (+Ϯo}`ݎJWN< X[nX`{nZu]+LYK wO4y ɴ2ZVnOxM1pm"jdI(܄F$P*f̘sb k`cnrG=Rs(=R+'b,@^|uʋ]"Z ȔFqؒ)٬K/Cd+EZY`%,B G7`8flq c0NX[2<>+A^muD!*RYʠqMZ`>Gxͧo{+U"*N5#a~h:TWPH򩗟W⿱̗!:׃ !> tdZkܜk#mM]uQǭکՀQ2-Z_kj0 5-_]aFFƌ% \2.Aay* < )P"ufG?.+U;S~.o}t=2fDO>w Î&pFbk+@gf>S>Q?~:{ ~ ;l59n-ҁt@(@'I]׸ >pp : -{Ifw}0qD dDj]P=p 7x2@PL-)84)#Q[K@N`ϒ-Z] {v8 &b Sg:u;kn [3jm)T=/R̋a6f5}pyҽ&@>ϻ*~g\J*ܬj|q]b8\@mx "?k۶NҺs.$z46 ZE ǁrRpC,NFfCk^fljɰR!MxZ/{MjD=ՆM>Dx)-%`>{srA+K+0.KIj/ki:Иx& Gl B{Ԍ5%9n LxG{+P8$фlƎ=6TG\iw6ȬjR4,7<*BFjNAE"Z\{ouy}|N{ν  3VD<'omFC8x> >sf u&c3c`N؀K.n0bZ^ijf۝:ŀ5ӇCP^ :9}9=WxX6s qPpƟ`8 !7'¼ڢPKFc05598z0j}6xHiMpaOQ>_*~ui<(' (2Gh%vBBTbSlqSo9Pl5}pe2em'l|>j@Az.KycQBQh>Ww`$&M edr<j%i`{%{ . 8b;h.'Ta{+m6}tz_fXW,PFK Ny7Uw *b"nf͞'g{#"[}v {v7Pjf\]3u]㠬ƾmjK*_۬ 2h!i*x2,A &|D $E.`ΌR@GJB{pLdhןπ({QW3z:ic6$-՜FOr,l˝=&']Pwҥ0[j}r1ۃSd]fyӛWl]x&$ac0ס]j43c/ U%y.}4m\c#~ēQ[p5[\!DcD"RXf> z+y9@ﲩtC%E󢻲7ukkV/B ir.=uav?IWՓ|CC\)Gz\"H^xZ7B mb'0.kY6w,9p)߃`1VqM5x ~ıE&.$66u&_f˺vY#N.K9z Y[d쳗!Cx ,mR-K |^M7Ġ\ز(76.Q8$,@r վ@L [^ +Peú\;JSK3'Os+0КN?\§;4EkԸup)mF~:a歠1?˘=$%j?`8G#-^JD) qǡ(_ :7^ lkz;$x6VԲK3JiA0`|x{{W8Iڧ)eШcV^߂ր Te󇔧E>ͧRB1<1y`|&,?sc6u5>𤹬s)Abp >v% 7aPO`-c=;@"~k9\Ŵ߿gڨY I#6C}7DtHzMFlqPCFoG#Ԉc+8j@z13/Ŕi-{^y'"2ÚZ6ܐurx]xd-^ ,{^aS318ޅ~:/lf4'.e͘':|nv6_Ccp7Ρk5w2"K#vM%қU"b7ڻ&@*sg}n{#R/0D/drTso2K c k0v܆k~-2ŖN93>ˎoorFV:2ńl\۞-+ND4x.Rk %?B&Sb #S7p^ P٥_"8&ߋ26i&GHEF;>Ǜ2/Ws)DmOia Wk1cK>#j<6/nR9Nw u`:-rפ-I p7 ]_s%{3**G~u m fAE(dd 1L~})ᝧolj7aX_'"u9o5Ta]ю{|սHr͞1m6͚f O`p:OvD@.Oze4hb FF'ƛFmlL^6jgR*,v2k0ATW.n$M5{[8O/5kNdga3ϻ_Ϲ&cX1Ӵ^g"܅ۓz dȰ+]JY:z:BrciP$w`qv"w΀WYr>| V^oR^I4ve1%N3L_Yl]g}NvifЏvXidhYdf-6,B|f7tsn){XD^Md!<<^]=pSw1&@xѓRKzO5Ko=H!\|Zڱ[%dw::~?Wś _1a-L%H/?u L?wX\Aeۃ~Hʌgl[i]){i;YdD %t_#VJ {4E)<"ScqХv_኷YKplSĀxzloq])3°ԓ ~d;Jsl‘z DJe`]7*3d,fhDvZ\w.;AmB iGk ~˕;1)2/q;+fZPE^WPAgu0vNG 8AZ$B01@S3/vQ+3 D^sj.ŁE^c#!Qt1_ȩ8*e5["uQJa#n|ЮZdOlnebxC孯 %Sd&8c Of,R_N<R*~(EG]|^@lM##Є/|Ke,qxS[Xxuj}4q 8*2ʉ7Rr/:'l9)) @њnL3%"MU+̒=Y )$25mۜ$ yz)4')3XBK),S5}f{ */C[62bmP#@#5^锩XPٗI'7w'w:gCbo 3>" iؘ_wkN7hEgho'& "fbk{;K #%QܠI϶b |{S 0dgl!%tJ 70~//5쨗j6Ch? '4,3.r3/vc$Jj+/ܿmK7NT5lj*~L1ikM.B.;7.H$ai+'zWpxnJv lErdw˙}mM`qsD]ay܇;/}"u1+Bq{̥3hࢋ)9b]*zr@dT[u S \Ҩ4;Aր:"[BO>3 o<:o͌#л;Ğo" / +dJD@wo,w%e?K[ʨ_˹)[D6qKX?e ѡmGDX2as_h%$M0`yDJc,> ~Wg&$#(QT>{̳bvn)EWr@ƞe(#np}k>c>Ub|+8%3O)_ @my@?S#.3iEDZ/oJ ,.JXXNxS lŹH4ZfAc^@xi̥MP9[S\R_0DsaH5yۥ1SVs̍;uؔ$ ?%E|7AV|(H0*_NS#kR&ٖ"oh{WUj 9GU Skff* &դa?1/eX]xѵ9G)߮6S)q=*;Ԝ~t5!1RXLdEL[[0t 1AI"^|J*Z4)K>h{b^ KRFE !+`*&RO9ߙBŠ"㊢S4t2v5( 62%Q/^ʣ TH23ŢaR@OB)⻦CRD@m֜!B-BjXˑgර@\cڴy*;/8[d}Gv0uhǕBfh#&m<PcE*c4/1(ˁl7Z# hFSR)kWNS5ȩ ٥ D`-ds_t&"VT4e߱T:tV<{ܨ "<̥h"1?Cne;|p1q৴Zɡ]396Js߹,.|e8)6V5fY]x;dw$[#u.fGэ:04'n2-vá4"ʋrL Q{ ܛJ@Ws <.)Д:ojZ8mOvۼ]úG+[t$X;f\y{&#Rc|GHj;j$CAQlK3 y)Qк#9j>$H|&^2깫`liܥX'mHԨ3>*"XM8ŀQ,[; kn0u^n/:_9xeb&H_J|Q06},C!mOlj^}cʾVJf6tB d d.=)t Ss4;ةIb{:@ )bxl\s @ȑ43Tv%r&@¸۶ }[v@ 7/S{bR?8?87 (x7M)-SXRϮ^zάpMfu`Ad.aG8 \(aʚhk ;Y(@ >}[,rDb偓/VImz[ iSn&:Ǯ)<&S~7D%5A0ebj ȶ}ݘ$ {V&:ƞSU$l Bu_ el]V4UNic.|}M my&n:zE$(Z7| o@jFm̩kDLoj:15t]BK8,-n;YO{\beo5RIqdģdV ^h֏9,Y}A\`j|@EwZb'1&¸=(7pzU.u&}sj(5j EPl( -3569q2)M':v$l̬9Z!pw Ю"P]fkoqM)٦Z(:+߾**aE DsEp>2^K՗Xۘ.'9s)v;nl9Yߒ:p҂BYɏB G Jc9@Ȅ(Z);]{s>^wh)"Mx!I}O3mX0>Px4;Ńd$eA6c׻} OpQc- iu^u`Bޜ5wβ3HO0ZSE:ڹ@YjJf3 紾mʳ#p:c?,;Cޤ:K=> D}͔bNQ%q15zn(1EVioab.V de!V?H;W~*&d)F|t]kˣb֤])9>qv :tV @9 cS8V~@Zu 8Է]|4E8/+@a\u5 eu]Ԩxxlo5LQv9RO"֘;4ERRQ8yPD LmBqj IDAT75zh:h6o EPK1a xz^ "|L&<0"-.U>i:گ?0z}RR5@Ed',VhJÄ詭'!5>uuob؜|eZwOns]>$ƦkICr on^,xIr23ayΦ1຋8>%r͘m|Ʉ/Ԁ!F?Zq1fP1gw5wjŹ̅nGHJ#xc'<ӈTS1`ݜރv*w[LW,2R77~ G+>xr|"FGvc[Ba. 帬[oxbi|SL&@o#!;Mu( duckƋt[ & SRMS٥9 _7/ߴM=̏x!fzfoq*0-"\)Hv& 163d? x.#>.ꬳ] nnZ^N*{[NL'[e2pXRJd)4$, (o> L >ئ]w; 2|fV)%Qkݲ5ԫB(3Pw`[mjVp@tݺ=#.tk.)5^s¯RBQDT+sTb"^X[U"TI` ӝ1y ʼw`e&LHS *I*PL|S6Ի׸6.fXayL'=wNk-ʞ ;w!QnW!Sf_g 9 cO:m eztI-Hu^!CENjƢ}93|{őT*DDxƙR4!G%zr/A3ț咊fQJ5g8ek|Mr?AQ;$iP{Q\%Gx1RD"dVhr.mّK%]al\VW)/${YX.Z>z 1q$9H(XWZi{ 2 fn~ם mJP1zoTBĉo2RLFV˺|OpU~#W9M{ M6P{$Oa4wM5PJ!_RLh)z)eb|`eE.D!!65 =??x8yCg+/l%)< WA8 :&aF ~^BѺJpH`J|A2EU~;O`?uU \ҵ%z?'R{h#QH LƓ{]*:LFi:bA|gnMdDp8W2EIy(3pFF"...,?eR'W!fƷu kQ?M1Yl˳rEO[BjU\quLD;~r? +5_2EށiIrD"\T4č۫ex wT[L"8hWx_B);\4. 0e=a]H'ׂDB`M8n>6ض$RR})ETяaEʋ%.uPWuX`ClpQ n@Eqq܂=79:O/

^sld66tgpVlTrWиnM!! >"-jn{ "/hЖcF>7ExnpLpPs/q2HAO0TQ5*kRd1bj0m}&DjSH`+ݪ۳C%NBJ.L%=Doz("ykكT,rSc'TA}S Gkm1V kh&slfjPzm ,Px ;Eg`q Q1 cS-=RXR snAa-Rܞ [oKBfm5kE?ҍv܀X NR22BJu|J ` ѭ@$F:JR>m1sʋ%XYZ1M>j <{1&I*"1 -TV +Dtn7{! %fnx慈:O츋LhܩykB7pmO ҚcT9S6m #=|$KI^:Y|3ူԴS$W\E'loo!"`bU,I)%5z@dyW .8)Z2R>eP#3HmQ-G'WeqL!y wmxh5އGVong^əuLCe˨Xhxc. +;KC)łςɔ*方xPgl*h+5JJ5@=n ۻl`%ξ(Òâ$olcIIxƐ2Զd ƖxM0SSFS@6?ނZN:8ikZwNs;kΉZ奪X!v?n/Jw2 rc%rc=mP.Xo,,4 E>jj!mpRb-pC;laq&|Sb$2fg(Dl#)$lL\,4w_24)N)/6M6G RXDʋH)ȗR*uB3>vDԋ-1>#yO/+T4$Lx2q1`hgjq h²0M9kk6VxwN:_wv)dtSuTu2%jܘ@P-6HH oZtlڈ~EBץw&,{;5t06Nĉi{* Hz]7+V#`l|>d d޲Bo{gX(@1l# t-C^ j6YȔ-wq|q_H*RLjHW=,3?Ndžc)/'V2z.OϳMY6%J݊-"b$ɔ395Q]`q ^SإH^:<0ᡗd23Jn?%j+*&9[s~/0wePN1ls`;މF~I[?THX. ^fHgKOcRu5ee˳3RDiM3U*72%S0nY60!# }ft$^-J~饦{kľT .1IΔ/zvY7FDR+nE>,tJ|Č-,ɝ+=ΈZ%YM鄑>,-Dxz]|Tk&Ii>xtF0v^qĦ3_fso^%'nqWqh5޶5K|͔ոۊvdXq)|qm3qkp"#Kւ< ӑnS^,ƘPQ"1C3PA|rްyTu'b=/^~c7MSC8Bfsfy05޷oo*W6-ZWԾ)]+%|bCPͥ=Rlq 8^<V1 UE %SG "7e7%nF0LsNvkl/'}.:9ֺ,Z_ț'9K0Y>;lSO2Zke,C҃2d1!k_EX2XI"5"}ނQϼe%Bfn8x榅?cfK?Ŵ:lR 7^W1NRp\;kAfBPo&HGv 8bۓp9G'7\j=݇[6<)@:-.ZP]? HA8I4x"Ŗ ).%T6S2| d3ѣ/X4I|tˮlc2&zz-SntwXWtXO:ۉ Fв69#ykq/ݧ!Ţ`%p\DT^96UᶑXe-TS-Ge,aFRo+UMQ*>dSl++ s-4:P $'hG;}\H0瑗rnFf="e楫*Pg_5\o6Ӷ9xFYTئ{= 8c6b _p=C`StLqcŧb[r€=2Ŋ($MJ!hC{Ŋ۰"jJ/%O(9GX1Mu\u8*gg씵ހTFYSQC3X:"(nC1ׯg Tq} :K%kyrL3e m<si؝9[1K,D$ =_\Ws> )5#ϨI?Ig,-]5= y,ckw>*/Aٻl[^=0" т lC ح \u-g./%OCR; c&҅ FNVc -0GevsxdS5ۿ{WͳE vs.tN^sEͧm$QK'Z`smyx+X3)֥n2k!1@E' Ml#^%@ڡ,fFOgk.6?W H/ ulOz1,פTAYlAML!bbNꃡhJbvy~9%=[5*w` %˜{K<^zȍNE.iN" 0<>77Rcbq;Xa67aLE*T1lK9C[hb_j+oÚ{`{$pJR-:`#RulX+LJNsyd8GP_ۓS ~[X1B': #m jkei\UgPS1l(:>|~DNHm[>[.e'HNjmF$2<ƶ!TǢ;ܭBz"&CM`E@.j'Ublz"+.OOA͗Ԍ`- ވ,HU uD-X{lN1cC@@$G\v$r'tD߲O?,(j<$R׉!A܁}d>t=93/]8Ȗfc^<=>|Vقgbfɮo]}o2363rn#^ċlID!NJbK@AXH$@ I^͏Aqؒ#VB8)ɹWv]kϙsta9ߗoo݊=}92 [mf~ npf!F2š,g?ىَ&IUB5WT57Q>ޚ[X(%h&߲;QPj )oӮ=s}Vs}vS&;S1ۧr׏[mħN cgA  *`w@Zɹw^m&@ׂ }A9~JūjV@_Z CN 3(>h"`N qsդqqUGГ^19YlPN# @P?oGV9<Dž4hʼn!h.elp^~-xv8[nђt$&~CiP72)+g+-\KL=5s]ק6?XM.S4rѾD{r`ߘf+ smoN2cevWfkbe ΄Q8c5$dj J_ v!C+e=^HsBT19 x#"1^ΏvВgBD Bt3%B.0Zj U q?PS=qKN/|etns(tlvq1=><'x6V:1H9}?X<_.d+r\M#h d˙mZMd "h(KtJȏLIH񀙙0k9#4 &D tG"B-aV|U8~\)]qDZ®V8I& f"1?I$L; :67S,?QE`'P5~nvc Zs;a#8/D2Й"X$Kzvv ‡ա FY&`}B13\ ,uJTlNb8L~GlV!ffu$^sy"Ch t#V>@̸ d}Τ=g ^@w\.'ʶE$|` j〲/[ e3UͦE#?)q;~xZ?|d#sӊ*v\+i.v\ s g~+MC{B~Z<#'0X3t{ 0M(;@~~5,Ǒ%9:< [6HL.j+F6-Z=ƶ*v*:{\`l4|f{'Bfyur>XO] "N ~N# v>^kUK>'tTNt=jsRRɜPKRtQK[{O&02"9KwFbfJ贽}~3! 9x]/̹PIjSn``: H|{vZ{hz oZ. C`dz:CLz-EvJqˈKs^Yic @w@)zxЅ9P Ӕ{4{p댓S(uOYeq"G'C`Dy{`}&KXNZp]BdDl0 TؐnuQ("6I1NP"ZD[mv]92N~hkN;; 밄TYX&KSyGoAl,'}0ɉiP2@~G<>d2yd{?/`lČSB7L'i*=B$aeGa3hXWUH,L,/)E+@(PRnxBQAm1: a!| DcHasNOB GdB|k!x\Cq&cC3tit%<2:3a_4*F=\xX?i(n)|a g~Ȟ2$ʥ0wB hdld) _#F@wZk_&l{m)=h1+D"YwoM-ڄ{Zy9x35<$|L-ȶc{l=c{l=c{l=c{l=9)c{,ɶxN\vcrK2ИєOi2;^#|&s_E'x`ц@qjcN;ߖ!{l%@ 1D{˙pS [}X̖c':}c#/!^2x5 #/d3,y^Pc <ܹ-ʹ~)_dL@o(; X3x #l˘@r!2B19scwO&2L92RGM=F3!9z-Θ5Eϙəקs0T{Dh̫P)f3+%D  UQ31''s9x0hseش2ГTsgC$2B/\~j*0&΢y 4r&fXʈC2PLLbG2Pv-s 1zCqs <gBh-Mx.FPrA\J-^D{ %TǼ->$bÞcZcBO#!gx|۴9s->XL!t92>A-P`lZePd繐DLePl/WoLC`|Hi7seDJ(L8ct}1Kv>>M4J +ϐ2<$g-ЍU7(y~.%f/$7-sxnD O;`Ա!?`1W 6$e\aL LȩL4u"CDa3"Y"c `+A2 MWPk6(>|R,85dnr. \5{D ;54ٙ8wd`AƲ ; }]j8ƚ`s`sBMU8xG1lhZ6kv>Pb"CvbWz޿~އ3@\ۘ@q"1KQBd}Nv~kWty6T˘$PC,{ydl@1%ɟCfG~yt<5d͞8M$*v^URhsy{f~]byz4Yކ; v}idc0LP& &IlSJp Pi qc%QBpج%Lє *!m(fS3H7ɥW_2wc.o>|o# Vg:~v|: x"3Y(1gAH ;=#2+op}P%дL?”>;OӠ6j!G>+l׈/w7]Aux \>\wP\l6뱜4/c_.طƂ92 Gv6M/O ccl7[C8[-jSn+[=To/b$Zd2t:t:]>֟  hc^;d!t~#3 MAM+!(|~w3pccFLӽ7ӝP*RݏxccicYp̿)۞g ܧn.d90[jG(݄; zh@'R}@1|+94Vab s[$3Mwwrؕ~ e䞋'xC~ohhЀxcw ~|XCux2RNSsfտi)p>85։٧DŽ7 ]&?a1cG;iؕzJ.0TbA`7mhGjڝg_}i%2/@jNuI`fJEM0hڀOǜS0 { <@Ɍ{(OX5”ࢁ.\oIsǷ}Gx1 crB) )CUfpęO|ogȼ؃G].<w]pL_δɘ5-hˌs8˞q}Ϙ306|sw1DcI G6{'.bIM7I3p|v~ᛰ_o~})a3&JTY-s;3;O_d@)| ġbgggeZơrR4MA}.0py\q̙aY)qon& Z.l܀)<.P6KiI}~n{ѿ+1\@yx fGKrY=` ,Kx0kX9|dq1v=PF@DkCsX"0p/ &@|⿃Oi 9׸^.1PL7u>q=lQU:|~YﺷwL~5}q-{VW a1ˀWLHܞW _pqԌBNNKYk^o( Aԇ_+2_/{ϴv]>{Ӟz);;;*肹) @ qPxtz1s**E5 %yəRgax v 8cz0|[ל`M{j/2>D&L.%hffx?移k~i11{սwh`eZJQ%.)eY,K-+|ܴ\w Aߟ7x1N׼ u fV@7t{glwZ;iu+^Ǭ q:r ` jPejƬ nBV.%׾Yv,ص aΚp.&I5na9|+Ev&A~L` \5 |x)(#h‰ Ѐ >uo1IthL_vwwUJ`"cZVeAҤ#ـ(R7%zH d)KEr$AW F^ #2nCenv>ag;g` u,t3 'I 4z=g_iSL /p 7=ISGWC~Š ےr*. ie2)f (bV>ᤸsY<>\jQ.d/5{ rᐸ@2_2oSY~:Pvfp˹ Y(1\]jՀ#At/g 8Mvx `'F H^1R{Ɉ'`] 3.p n0p,vA0L2f~| O~Wx 1{._6;Nv?+iz'1%SyN@c-J(E& qpm~ '}'w_LiÔB e/.*\X+k%>|0~߀ßV$65SdO@M#0ψ=8zC :J#+! cV Y\. W)3>{5Fqj.E sj؁Ki1j8%k0Xk}n&xq;9b䢔DP}HM\udI{՟#[;< nj<;V^\l6uA {aY;/f^!NNp.1?bM³π2),xxp,I{⽴CW6;Q}f7$N21. എv>4Kf `57J|t Lvq^<傉 !YƯ8(?*i?A;p*WxgQ ɯeyh+-O2/Ō;h]R`"385I2xN)iZ 3{'3yN/_ s&tO!9l<4K dJ: sXwt<R dv)3RB! dŪW52'? or#4JNj2 nmIVno7f̸H:"m%GO#4l1Nvz9{Tr`|1F15ǘ:-hDr3ſvӤ]sowze;V.`zgj[+&$aGc0nƷdžAM/Ll`p 6c|ǘuYg~@=" -\Ҿ;)1dId^6]%ةlN bɘ10/u\@}|I |~fj/+X>P^$ ;6fro{%MWiW ,5˺{ل7vV/'rBLIC%'ޕ"kԥ-YM$ŭCy`Uʺ \rwWg0k| >Fh)8t8vIPe@*0~j+"sD"fg|$2M4921!s4ԤN-gN "P75hԵ2ZhqZ>!{ȖGJtp{mR*y{|xk 5| d::xlS/8Lv ]~j݆&uS`s& uʿew.~L iif3 093]::>k;%;y>=\_61$mlzv۲SnÒrq_1:g|>K&s۪ 0Kd mH]CPv"4]4OMi_+_"ji|Y)%'6>qNI˔yDŽӘ\U߀"{8WޤVv]ܔ4a摯b7GƵŚt7療EX\S}ӓ[^<!%+pW%iAh,>g] ̄Wf{Ea3؀GoȮ32>Q2^ff/X܈՗ *Ke-N6GZUJ;{үc7%v$,i|/m Suu~#cLjl0Z}L#f8Lg ש 2ihKe}E*> &4 k7M8 \0u6uU3Ei`C <Wd2U [բYAkXӯ;r/W" ֽ HErSۮ9XLzݢKM}zrNx,&I*#Je{`!jB .k 6䡱^TJv~!v4(0 n, 8Ej"0X`/.1Z/On^fZU|XTlxqqA@Jxk٤1=ұ4{XD"Y6xԮ1(!mx|&@]uʇb@xLM\TbW^W/M۾D3 i#fIl1P@ Śg̼vj,&_.Z2Urc.^t5m1'`d7ա\}1faaٖ9JҖ"_-P 0%§CpCM5p8Q~U.UY96I{U73d'6Xqs{j)hR+|1hzA-۳6 5⤩.UBsc{jUߨSk+S(:E2 >9~9A`*cHД5ZCxL©~DS_m1<cc5rc615S)iz1\ cM19wjz \.Z3EnI2=vfZ|kRܔ܄R3#t`K |*+S:iE~f> )d-Ԑ\x$ހorV[ʀ"4|)9S3%yĻdiẸ:i+4 nK-‰-ڛѕ<˰՛ס0ǻ&nWucwxr"+Iz:do^3T&7)a1璓'-DpdF}bxȃv7GYaL̤IEQhi,7B.ߧ ."ؔBfʉFc㉰FPxw[*/} +!5 ~yulk.0e\qKΫsNX|/*bq"z6'g`ێbR-3ZބY|O Ii @;RCLRVPK5# 梚Ohh;#c~nגoDjٖњȫ#|#nAQ!M?c4':G | $P:%H$,5-&/ f51<,npzĤN&8#(qicI[f~0!=#_wh ,>32>],%q@텧# ×gdn}aEC.xkQ3`|}zEc?HS6/cLOMZ_i) Jƌ0̑|Ɍ?5su ]eČ|)?ma\e [;4Uf('bڈVvvs)0>&=6h̌F˚ rs,x1`NQ7`֠uE|TSRj0J\I 07|*m#|T*sbKi7Li&?/셌J!%qx 8LR"JM.x3\v2IwQů3.Y-zK:;q1q S?G !aƼ2aJpGFEg] ]J( DPJ׋dp!#.$sX*ƧſoŒ0Ǥ2]Nݻt2F~)kǓ433ff%Rcɡ76pMy%V*f Dm~!&,,+/]v{3.:tVGqf S@-qb+& w"f1bk}Np@d` J:2٩$ 4U1ÅAzzT&J zx%"_־`LUwWy[/f\n?du/QQr/:q䫭 u+ vL4εh;j71־ M.A1`bUeTG=2m3ͧSFg3 X r=cf'w%f *kaWŠ_B =ϫ:_C7!{m.(f&EhSN| !{ƷU;@t f)M |0drBsA;*@<`۵oD9Kٜ}a&!7 *q ô}N ~N4qޤC5=5bzl'HKd4'f;rP;w+h3%Tӄbxa:>M *+yItNXN)@7A\B*FH>s1 "-8];3~(c&0Om=X2r-/m7$IRb+p8 3dHjA{[iB;#1l84#t IЮAQsM{5{ԚCㅢӺ!qiu )ī@J IDAT戚ܬ[u Fr&A$XX25WЌ@tjaƦI81pr2?X-.aq'B܉K7lV`DW3LU3xfD\"xV6-`q7 zok8B=eGnxmf ݐ0&7 A*7}M=iǾb2AvmA\)D PDTX.{=GnZ#GPx1[Q#UŁPI:b:I: u\ϙMk7r?OcR꣬ThFeQ\ +L"Ju 'Ozo('lXj ]z%ɅE %_Flv𪳲fB‡e.> d =6)$5.U%+0I6!l3:ea1!$ Tob͋r9KcʂbTk*qEBoz]YP-qli~^a]M&՟6F /0TћƆA䮻"ꨜnMV bEDM2ߘBؘs-]B rw%w;N5m},(Zt}]n/ͰߔraqZk)65u7}(瑭e+4P3龍a榉%Ss\bVjtgjE Wݎz05=/iǭY{xSgi!o76Ă*\T+!\3~3Z2GȢouyG] :2˙HD?~.vNN׎ǕzرcڇŢc\dMų2!|FWl_f<.^,.Od[0wUZLASX%t\ q#j&0u #T1 4+QCer5gƏy m_W,é1fHzݴ `Α*f[D5vh 'qC# =d P\.mCEL [4X)s9*`YOG=[ɂyu Xs0ifo9-'`, Јp:n5d 6})45>Oi/On7e0Qg,vUρ{t8Θq 5D3$<"=o&@I9AB 1.dǾ3S VD_Wǡ RИ*zDxk]ni]%rWY=_WԾ<Č7 kjNv˸ 6'ǘ)<r1?HWA؋CdadW$+{e @gm<b_ȄF12V:2 RiRMOF| T\/ﲫWkPA;nƷ;fܤ+n'=n!g-A_8z( a^7]?=c醖LR?ka[+&\%BRt#eG_m(m_.n ]Lb2R :=3stcJ)2" 2i̓,Mi̐+9%&.Ca\Nioq9Q"WA0bEUy$kG$ڴ]Y NǡsJ<־pSJW.[ӜҔ#snrq245<"3css/ztmE 5y& D!_o2Fm39FLb\Y%- Y!e>uW["4:[jR̀/S(7&F^[d8 {i0~۹ii벞3Yz,!q؅ۅr WyؘM `)&{?CwxKa*;dH3^55\z1 ]4!q&& jb}8y+ն{D-@9cnu=Z 8|顐\vZfz]VX)P䐰- ~Gh2a밞&H=xT4]#'ӠQ1=H6Jr^\m:_or2&,"yu_,يٽubt-3W`)ẚBM_!>z;}ZA{(o)h '$䦣ů DO+?$+f,OaIȘ4LoQu^єųSxܧ6PWAWyf]Yyiá!V2R3 NQ䣲v5.i^UxvmM F(1AMqE\1J|؅mwgM s_ZhD CrqYj厺H:cI,>EÐ)!t=!hjyli aM|/hFIJfPۮķd8y]RI s v7"WCjZ =Kr(^. ɍFAfjoXh\i4 `zewn;G $r9al{ΤQIp| s1LqL0#SǝմWW \<ƾ;uTǐ"jAf!HWj~|6 5TtswWz¶~^~ŒvR˾[v<(Fq@Ig\77LOR&@ʲ`LWc֋wzYd LEwpLtϊ ̆fG~\`>lF_:LŴU7M 1]% 42Wq->GŲ)r$Y$ļL=nO*B?.=pK,&ewͨwZI]$hU6ȨZрƎ2W( ӑ"!$"-ć>}ڮ ^nAt虛Zƌ?ǏE,;_38D&xu:WΓ*Bh 0i^3^%ǺUҫKb_iV 1`]ajBpӑGa7u AIeezTO9/|l1Uo'eK]^c&/D8yP;.8b#M*{mNC1 Ic _d/t}%}*[ӠUhAz5%ڿsNZBEߥe[:G:;rsri(> 8`]8yĄv$Әz"K`M̌?go&}///AI,Üc*c9b(M;c?KfL w]y7b22f"S"G`våř(CDmx!Ws`.n9AXR\-vvkmOjM0,Ro8dp g6S$9eL|-DEsܔ; VoZP7*!|uQQ ̢e5 z=^ss S"B?l"L)%vXpm_7<&mغ|3Z;~p`0'nY@1'u\ >ƴzΦhA 4[|&Vre&f{|p D]μ7%b7>]ko ͓^a8,;Ǔ`(cRL C xtV|A]6+Dd\MLWe (xxdgɮP%T반ql6ܖ <(8s3 ,MI4aCX>p?.y+9#;-}`hdgBQ[aŏi#an,/@ A%pI~o2'f~pNe< /Q:,^g2̸f#)UD";ꋲ T)Д O<+V>$$mrB| ! ";v` \&헟 Ռxьhs$ҹ*=A=lb^,P@3mar.(30'^"1Kt7x11N9 Aw ߊ6*We6埁BXJ(i૱ڈD\H&#KѥIf'ĀfLqt3E  t/֏TrņՓ e6F_Fx[08ˌ9C0A & \sV: ΂q~H#\fHu>_ֳČ%)7dcF u3[ p,,_ H0`5]LH(DطI_d g2iHm(Z**b2C6Ns2 KAj>śmIIZż.\GZIaL)m6i(堼%O =uKhPIfn(bƆ)9'mΟSt^Uoy,3y"+6wCRJ*cF >XnOvŬ=+'`~ %HZA)|dfE*ҧŀ6ǭ.64?d@)EJ2a Y -u &£BXi(r2:>3l#{0yZɒ"@ZIû*y %->Y9\vz1 ί isc$1h)OhhE.k7o_{Z<QNmmdFpOYh2}L-e y}JVsX5 (=BSG鼩/4筏- )om }3 R'[IGa1~M)A'Eqs C;\qLjѝvwդXJ >:JP~-}GKںۦ*Q-OOhRn*Ѥ}U{M|`z zxm۰8Nʯ-> 2SjnG̱N>ºs9 lV ^ 9d=߳fB=#O-KI WTlB ~}sXrUIeDHg|Rynf LAȤ\鑲n kq~+,T韰):Z-GHM hu>\.]X/sI g#r dw t*]DPf/Ѿ%\Gk"tV@=4n8lSs~j|D&{,yo:HϿ-cGAS$)}ΰ*?5?a<gX1[r e1@0O``{*H}dODF=fwCPǞ$xFWxˁe&eᔍu}K)mɦ`9WN*C{VSJZ4j-U. b.(Se:RFjjyL)5Gcu\Iʸϱ\\0 wEA.JXqIѭLAR+B`?hЅxN;V5luD0&#Ъcpָ&#-F'%[\Zڂ릗=0,WZK6,2ƫMp !R\7h}[m`9zVx@;O4Jh7.9{A0\9= [ukDftZBљ@I*SSMaA+m ;#iAͭ>)+Ɠe:M(@j.΄nvK TXD7D[#rGdg1R1^1I I3X$y >1.#x<[nH.dzaB$^fSx:DL9ˌ#g;1\vm\c6~v} ձ] sHz#Ӡ[Z8xDN,sllB @F1#8g=c<@c-<:p)XY= 퐛⒄.`[$ș̋8`-Z"bs},db֏~)m8![82T |!StMv )A DwG#ܳdRgw16?1 Җnh9@rŬtâ[5P kT p!@&RY?mǒgaxqo "V wѭN0 ,T,SB&RTCS•B0& Ĉ%x.KHh.҉\863T*1;^ N + A<'496sOs8Ȃ0$Bv=Bc^-ֳl2Q!\}"\ja,%~^PwGUŕ;y{;56GbzI`{$HtoX!l}\iN`# +cI+=j`O0#q7c;m(p @{BdWN p%&b|ȅ{:{bGDbkXdMD7Lnzp7sY+Rqqs3 <{t PX(w^{P{ylK$I1J28; %`N΍Cvݦ7Jtαíf{g=ngJ+uijGFT}"#@XWQ*%6Y4=W,Eb1xVK D,2D.C!WJbqƁHl9 Ÿ}1!X8:'M*txd6ɡ\v*Xc7XDNKއ :(U;R b>ngcP,T{=1r%c87pebs%.Y?XN\(ZXDIZB< :=_l67r=Wκ5Gon`o#dІC l $e{.dnwjי8sjwpmwimlܵEtE|q6HQq$WsFp2U:VJF)XOk.]̽z_bpɣ4.M2xX'5]l#F9wn5me&Qd>SMѭ$@zl&rn]LbӰs<[P{GM9q&,{ޞxq\ ֥-s1]\GIJ sX2\Q۔$xFbӚk4a Q(ї\)SH#BOY'WI[ z-zGXH~"N)'Nm&{gŝ()TN{RI A<6g ݇곒-& n..V*<׷ҹP%Hn9oU7e&]c4 wX =$A0:oźXKVзUF2S tjs| amx=cDйtBď7Jȥ`~c#QY{~xssE'HS1_.bHԘcGQRgH e:ƴ,֕2gRcwIls"t eC،m0ޝnց#RX%#Ak=ho. /㏖v{!?m b!]Y=0z,V.Xu P_`sj)bcC0tC)ᚲGK9PstNd Z1(Enȣr(^ODLb8,X!b7r϶fY{dݗy1`E 0 6@.ѹ- ikR&p&6{ky Ca+g2%ŠIł c-CXa.} ,\}[=o5BX+?ՌBJnwB7-Cu"^߹pW"oXM PxǞesa=41n댖zlL>m2L{`&O)DZ0.6 EwLn`HĔ-XJgsZ$L$jwd̀"‚X4s]6Bi~.s{N%x 6:K7b=_ܗc5$ʻWȜP,) ɅҰس'aϒ |v`Vz;7r{@tk[IXp2 #IYFT…u$mѭ;w.e%9HzwRS VOH,2NϚv{A7f?( SjAv@$$98rw쀷;I;Yu;vcwݱ;vcwݱ;vcwݱ;vcwݱ;v;v)cwXbccovw܃G; c99h y76zw\x{C1ІYu;w_5O5u=7dU)~;w/eUEL@vhِpAC`ݏw[[Cb1 |̘Y:GC`\Uy-r3ڀ%8zڝ@=TML'%\[3qoq XݱxJ}<+&6ɏ'9b9b1cb@F=I&t',!m GfL2;m !V1 x #dR .11+XM|oNwC@[8pRV/.^ Ήƀ7CHbSLxb 9B^! 6-\>sʑ!SZ!M}"C m⹔y>MWjH=()KO=@ Q) zCӆgW\abuO&KY{ԺǭL{!}.fg9T$sYOcՐpCGPvG7^CB\KYH! 1bDE7ͤ6N =eC0L =tIpC9  oRb{F'p+gHLwHb^Zĥ_H#2lxA;ݛ.f`KC͞ cRC`2BTKuYKe soKS$NJ}OaW.}E/ qC@P>BZ d $6g,f  ^B$Cy !_oO9 bx6חw?ouB9*Άd0O@5lE e$z- a]MS :UyxJĤYdX:bBWy#vNBw#'Pې8}gj4}.P]|NxNX)IhV@yǂXGq}evkgBxwtCY;^6 :<&bZrŇ콯v=Vtk IDATXL8PAEBWn' [heCJvKw#ZSs5F{9,c`[Ddaະ;d@Mz*|iD}M,v@ |5T +Ɓ-P E0ƙQgm]>JDGٚ0Dt̠}JКkՂmj%<4{@W+;6r;;ޖiH׮!#ޏTe(IiEzdot$? l.eSgSLb\_DnYZ RM"z~1:ʴ@&VK')ʄByX>+xOt~N{>ނ́yr{C[(=ݿ[*jl3lM&v'N5$C:Z}m}ʦ48$z} E;mo۩XTI|A W5n#\??Uu[ΟbSΘ- 6MGM!  *5f[Ǩu$fd1ĝRpπA@i +!ɥgyf\Y|,Oٔl<hshvKm I?$+Z"\N1+BWHհ M)L ylLe߲u s,dR11 "Xk{BeIGD:5禮_C(br0$? w".,^>B2R=>؅|2 f9zuzYk6E4ns*"JՏw xǁZtC:u?T/nҵlT3)>*~hCaRX/qA8V26Ȼ4t d窓S.OFJȲ)Ak >|>|'.DbR '_0)OaSU=qz@KCK x}n_ 1pҚɼ)uӣY>ܓx T/7ϙ D+eYp)I1031eR"=1l|Ma+5#p,< ]UPT6'ΌϿ_u96Ep!PpY!sdYdL^t|YkQs DF63OO0Y]e[W >6fyXĕN}i`}5`(b>}ˣ?+ԟ{T\ yus?5s`?['RBsI] 2l2TOA3`鉽Bbn#. TmH3#`B'ٹL~y.Yq|k|'5V<_=.c:I Y8 ľ8[>ysI[DŽ=1 Hge߃-Næ*`l^}q} 4`XmoDt?~*O]?̏PuTG`^āY<1yǭː 23!y}1|L[ޮAIߣO{c+85?r[6\_w^Ȗ!㻢!"4TVۤ?4gk[9.ƆŁjˀ+eB."1)-/hhȧ{!ea SFIxh&-t/%%F's;8Ŭa'JЦV&ohl?ly*\o`;om9u>0cWV?W*Rl9B"~v|?Z<&NGP ]sjz>=WE7 fX<sxl$qr)' 1&Ɇk) d kxe^1ܬfXςi~)b$Ge5_5/n K C5!a14"9~o"K?'>,i_\-PS_׾y(rI!yʙR\" ǡq-AS |)-4~Ab[=t~|ڦO|A|=/eBa*aESVޓ/*)1^mL.30GvS6pl6[ι٬#HY8,Q&E/5.pݽ3PJpu@^,X70Хd&XMl6xf*GV,_ KE=njYiL]T>{ zdtM*X}P7@tgΜYpk鬜U+Wj1m-Bbr1c3ڱN;{Qi-s_<2~`'ج{I$;)1:zS9MǴc]2sM*1T%CpyA8\dBAmE˦wj[!j6WFcIf,.(^[)CA1&&g)+Ja09U%pdm'U% yUUuS\4e_ٹ?2&a9d%'[cVF#kFmMA=?;|99doo/wrk\j|qYKt~,rE &f`&K.5CD8y4P8Lx*)1[jwp|aߦws,2˲Uåd ._V3Sg[W f4 E(Ķ]WʘV,!VfOS:`rpytn6uK_2"Q{YW/+|yYŚqp\`47{03XZ7זnj"5[E Z@#$ V׀p@ p'Wq95ףɷm9@K:w x} ΐ6c5>sy6>w$\oƠ:p/R+K7Vi`GuNs^EQ*K\)KϴuoSWƕkjG^l@̘ao"x OޠupnjMn RBi'?jrZ/o@ Ja; Afhl2gsO4\ ~ec7W֎Dd6vɤCHKW%^,jL7y8i(XCJiPǜ ̷h15Y8nX#Y<%Kp (6vJ=&g~ݖCO  Otk1:j˭dF*CLU)h<').U?]r.xj 㺪pS˺DY[*o^gk| >aZCel h|PxaeSoM}0ނgIAo\~-b:2ZӹdlfCX6uε޴5,dŒ#.e|QYuc&p39R Zp .BaqYl@4B>x v^X/OL@\=u5S /u,Fp*5=?^|[]>8== rmDg0g{7Vzv^ںEJ >{Yt5pT^+3821&v U6M 乬.E,.}>3H/> p&ܵ@I~[0;P'eA"tjӐܶa7N)^~s~@֤ ) 1^vvZB79Sh8_IJr/YN:j~`p6H z">g 'qTHm or ˶!Xp53Hkj ج 5WI_%R e?g( n xCab[>;T&DZB)5qu1n秂&E|E\l2fe`QbB ju= )Gy]jq{!wD7 WwVi|U0 `kVʦgBP{XHv~KfUJ͡/`v3Ee49 ֗.мٸHZ;uvA׸ .Uvkr3JiWKpt@L DGrd$K݈< =Nǔ)z_M.o;ր7Ӯ & ^~‚ң )}#^rU 2C]MB:G-C%&@ϱ Ə\9̌3hS^b@r1~g٬t1ٺsE [c.3UXbB{~"ڡuς4(Ife:ߦA/~En_#Mkc4oD*%cz @j=ev5c9dlDFP S&3X==:͟ᶥy],SanyC'K=^6*y[| &t^R(.yQ̠i gV=`,Cf##%T8lu\gU幘]w[ |:) ld.OZ-!ع!#PYߑ1xm"-@Fr[1 Ҟ+N#ydJx፥q :+#3;njC.k 6 Nn.g]~e|`&/dJ1n(#ܼ6L` O(ufXbʖ~W g#]VswH+e[:e1xtc9U,q.OIUyت uA7bQ:׍@]uʇ@xVpTpI ,֌aT>eјC5}Z0X lH8{,>zO_)kE ]Ǒv]5j#ͨxmo`!X1zz770@t=yMC@Kc`z69dABL6O`fBҭX< @BU"EX磿{$ 40ef2E?R3cputzb6  vv"| :6¥.჎aD])< 5غE9x?Be8۵",^rfa28A\a+05uճNZ߇:/@#%G&gU Ȗ2 ŦP7h>Sbz-M\+D|ߺٙy5W.lU4L&X0O=W!œ|7 ml7[Ed3H/25d8Ҍ$>J\#=4t\fi49mэ͚HDZ=TE1x*EXMGK; 拱:~*r~3P1rt7ٚtUvVn?{\P1tlso'.| _eG-v~f !pSo:k,7x fap)HDx2Gh@k_6QInbp UOjL0P"W$ d#nRA8bn .Zݮ]hDns-ݿiZ<^[8` %FiB MBզsd w?s,@ 6Vs3 42X2 xA~3 \ۆhafliX쐎c#RXeoLDh't+ \-74ص~rp΁OYcΫGTtK0^cj9Mb%_@#S|ر+WzqM<fev2GKfjkb,v(r"<8Iv|E|dm3uwTCJ(b_OiZ(jz~J:i%f aE?A*=|8kE6ͽ|G==]ȵ`Cb3qxlZP(Z F+I":-F'T60(1Ȝv WF Qhʶ~J=Hޠ+ FR [LGBh ͥ^4'>̄6 X [.;cB;L ewg-/W1Zƛ(}H$D;we'\tg.gk!\&b$FD#fەBg7ϒ™ĜO|9abŲZCZ6:^mzq,u#=ݿ!zop]@ǬHGXL 5KzTւwqk>REl`ts/W@IfxeBrOCӒ2sb ^ K?!H'*$bb8奦c b=+* Bhi0Ϻ A-.:j%]L׭. f5v}2BY<-ȇ`1Qxfnc.Q,Fl߳` <  J oQEzh^ҖfKhf"cl%L >k @KwvU"m;a-3ɈBDe~շ+"jb+a"rN'Wl Mηݢo‚q}fM<)dKr3óIE4ѢCtb(1R1u,R ',e1hH|zó.c:ٜ0c$ȋKckKvCDM\SL jhh=9˶hȌqgGFgu)\et 0bb]/I̤r槕X2± BŬ!`&W'DL$ tK8 Ѽcn#$ Vv cd5qYƽ YÊo618`YDŽ)c4}5ü:W.0 -WVO170E(],":MCk<&92 0YRMlaqЙG b"z2Rk,❤u䔍5fM`2vB86r {D`w PKʼӍ8&${,̬-{n6&)!qF.a.ZN 2 覃 @]A5"(HPåpMR]U/:[f/ xgvJ 4Z:d5Cc*}L*{+Ͻ%2R9)P00h/v!yD%+Oi4 .FB~Ră25@~D ,XqMAtIx6`;}e3[b7ucŶ9RW Kf27nN\gnpN9Uܲ<0@.&<:)rI ݯDͣVd6q?ܖqlLUҦl`?pbL5sg^= H=;J` U[*6gנ+fV﬩F30nfƊBl?+e̦?b #0( >#F9wcZoXi?il Lvmq%Vk>J"Qhc^B6S)bmlbN g nr6CLq3e)=g mͅ &h ?CXkW!GY+j}X&ϭ3lO % k!,#\oP|%{[[bxkQO2o{c (bA1ݢ&cRC1BIjL5zʚ=v224 Xۄ0/Diz ΂ܞX϶')ٗ81VO{MMS8b!`SMBύ.U#wM\);uMO))d1P6)%y m:"+$@a*bロH^-Ą1W]cfW}D1QL%E8^SP5iѽh&.ø pc{q쀴H n|D6{ #IǡKH0<&>&j7R:p$oAa ?32NiKr|@.dcو8ܶGDQYSF(7!:o3+M`k{^TN14/ ϡap[c1*+Z3:KH4!D~ ;|GHGŸ?*Z8ϸVU+qϾ]*Ǒ~ER ~ hBs2.shtƆA䮻S6~3DGOx.fvNqH C"B0X:Ԁ%e[h;\:l?iF0ǽ$ _@]6Hgsu&oaq:4rW jYcb M2{UĶ1AKZX!f |<NR#b fG*B)8 "Ҭ 詝9fkgoi3۪fǙd~ϭ4@hlLq<Q`) US7EV͗ݹʟXw*`jr@~;xn&$LTt#aBɤ6"H7\/J6b*]ǴĻa@!)dbҙ1CZh=fLjU4ŴERbGm冬Q{)3%=`FܯP;`hLPɖZ^1'HZ$Y{m5[~cE^dPac͓jU1-G:e ;$BMfj,㷆 wN;.=Ҽt#PKPkXOh=#:{/}KncK&,U_`a1 }ByQ;N fČ[RCƘWaƊ2)4Y-@^g'p7V6RgX?`=NbNb&kR\]@U( c1?=F[jIǃMD;vORf#p-ǤZL!E*jP&IcnvK?2۹V`18m][sE :HIi090?UKc}lԝ!ɋs._Rdakbsd <+Nۮs͇|wrՌY{Ìgl;qr[.7 &%0O:9Mĺ4j&=ta;_&׋3R6qv&eH!ݺCtB\xiolaBWDK)f%$< qxU n XD:] c@%jsB'VC v&&ҥ>Y*w9>}OV&u%U ǘ:"2& 3Pln“flǜGdc/8VU 1O82~XwxWZHl}?m xKC 9IԲaLp~x 'Aᖃ rw^?wnY VsӀ`294'Զ/GlF "CNj>9bD؉,3[m*~Q 2tR񼐹],6Bci^]C )cJXW9|uk 4~hH# l:g!䞚kܰTǂdg5J+8Drql+‘[Dp+nz>$ 3ހEMƶ8,hT :2:56ܫT Cw9>IXtR"l}DQ] ;lͪ[gRop9M TfGX~)6 ң+&-.Hyko eS1K1~ki~U񢹚۰8fzª |H}58c|!"VT[ݻU>7GD 1.Ěw*${退B.4ڋ5RDPDA@ 9[=T'[LdSVt=X6 Q:t29K?47Smʞ /ͬ!SpH)v5?c x_,H CogV`|0خBH̓ mlT[o`@IRw{ƛ{Vy^al[^?hݡs~Ka QE] /ML#ϙ>r4evE /sZ2WRE6pC4;u(A~z[7fP>EF [f vZ)sfΉx4J vIŴЦAO"k$@fPwI&f- Q\^fx )Fx$,XTuBgf,C%g"Y+UlSc4ej{EhgniY3^YĸIuLcZĄ ÄԖBa?Z+[^ʳ1)D[#[SqR5ۭxH)4"n3KYRt_mevyq^ܧ emc], T:0/`qm ~ e*eAeaԣo{#@gܬ o`m̀j=_qe|T^/a;ݚq0%5ጬXL{Ǒ7INg\g`QŻlL-YR1mM/]4By'`97]D+3_@/zŲ1r$Y$ż=`ƿ Pn˦*1@^#wF[e.\N_(D,ZuN)an@4؈C,/w --4۶ZxzJ x+> ~,`&Yivc¡԰J:9T u9ܴ̆=mwm7:JcLe{]JӱsiVc;1UPQjr^E|z @&Įbi`{jy X;s3\M|}:V48 o -Iy6 C1]Ք)*A3ȑǼewL?0j;+A5S X6ҪEk<saԻ 2sAy\Sk)3>k~6̱@]l}gZ#Zx0EPrfk&Ah@g8AI%c*ot+*0J9Ae. oYvy1 IDATPZ-~3lt@+f^wl2WJrOh>zȵlG-H%`S%{+/Q>98w"ݙ4ܔEDZC)11u< ZOIajcikU[ɤg&u"h"a_T4U^IRɹ2.el=d!ʍ^JL1^ ɲRerJKq))scQt]FҙJ։ۋZ S0>);DgwۘCcCcX( uY1[?3+\6B˖tc6_|BSe<&Ag:p6BUwGm ] 1ۙQ$ mC 09m(?d_9T-E:gTK5[LzSEb]XnAcƝXF _Wgx_yi`BfmNw q݁ZHkqB\c:/oHšYNpTwM,PgHAiWZMcugbֻJ/lHs**3CY"bR 7e oC m/qWᒊ͢(!jc$%[Nw0uMwT9ٚti`ZNd)kiI+ĄԔ=ɻ/~39 ! )DhM[0CϑI+f W`a36}, 5_Qgvuq IP1_4Km>МwE;]м w}"gr^ ւF?~3ݐ^h" EMDLP%شvisfNu(yƀ'ˢ5D u0nUwIn7) ρp Uذ]{@ᗐ'czUG*cS[ʝ~] ~"&=yM=/;FsLFJaZ:5 a1m0^B S2>"oYV4|͌P!R~z4!Ŗ1`6,a)x&3"Nt`)dypȌנ3ky,TӉ<x½Cfg^@s y~+r&K6_R JR.ߗ"Sݱv9 &!ǟ냷Q67r[gllMdFJg!R ¶Gr(: e,kT~ e-nBn{ m/DiFcF!Idx^6m<ɋ1  >K_f"iI-MK b2S6f·m9 :?f*߇N6YTR `KU ~+yG3j /U7j&~bm )/L< (LX3)̀:le2c u178sT3k / 7s aBu CԮ%[,*T ! RpmYEuua w.mn ofKːOlu ձzp@ d.q#n(xG q0ܕp]Z +؍0fuk2持g_AzЩ 4;Y^lu]L&`-*` J{v9^92/Ʊg~->*5cm99 7vfiʝz19oVfߵI@1S6׋;،Vvy,L)5q=cbnRb>l Sc6Rf$RkД5,הsP`sdRfmJW|ˠBuNr7M#Yړ/JAan%(jEw+GBDQYɠD?`ܳ ~,ƩJ_'A4S3{,X&5/]%wm⥈n_<1 }*MLN?L1Ep@qSܘbF5#)ݶ}hN&;V`nUb80cʊ|QSzg0$V[~#)e_KYrS-o+-۬[ Z}ftГ^ YWQ~?L&Ay!@Ju ߎŇ"K9*+h/% CDN0UMDOH\r| ݘodkoACR"&exh/q- }G͢!}[fo l)`c{S%ܔo_3\][ ѥB*+F,x!{f(./G?i3K!?f r T脈@:>HT0^m0 QsFR DHvS,eHSOܔx ꁞ1s,蠋Д?m)T31]fʅ-:]bs3<PaZ$! OOb,׫,#'kY"wwW̘%B2M3@[@#_5Q=c63[7+m,!9r4#zvXno )Sb|u jmS(Ogf( mqg۬G#HXKQS6{.E+6uxK4NJ@QjVHdK*d*j91R4Qda HDlf%nH3"RʇHdY6`9d>?d49->8 FƄ(`nȷ9iaSd5լ-SM6mW$˅bb7%]o+~dbs#Q*K>+,|㘋E0y1 S23BvʔR*[j3t|l=9&j˧ۡqӊmC[ xo'-Q ȡD'q{ƿlJ),ƴGGN*]h 9etc>S%D/<¼鱉!?,ORB $l7XO?Ksnl>[&RŌJYxLc|xA]"iX+o&w13N;wLo  e%3b~c:ppIq|mؓe+JJ!ùdK~xUVe p=6ՙ`5ߪ&&L#q 5R cT"b /H 6p yxZ35LtNZ箢e]2 @\3Z*cK?\ }aӲ1EDАbm\@\hⱗ•i<ߎw򠁇3w0LTS=CB |& "'m:Xӗb?E!v>!惇q,Fgae.osS29BeNb92 *!a025S)a>KwD|< 7ʆՊMS&D)ʋv"5]5X;K(PScNCJ#CI( >g e?fS 8 hȊi.Hbu U}BXl cxtMJrJ\~v5<+%.DLI/f~Occ7Ԉ(azGl;]@㳏o#m! .mLV2X!lG&0* /T]2^]yL ӈ=l 7 0,tOV )cXρ/ uQe~ \Yr85o!<4$셐JaZS/τR0Ff} G_-D6{'Zu'T[݁Byw$ݟ}[XcիK̮=!)*/ʋ|9ޅ 19Ѓ gpf#SP.=- ۊ G6b#u)29Tq +x?h{FR%ۡ +oV %XI,1,/Eu5=x 8 YRxH/u .'1 lC`L8斃XdxB̭uOl 9ش.%Kj/La1<e1^yT\`<3O]@cL3oHĊڋŶӻ\//hz Rz~6+`g@J^Xu "cL2%d7ucCl58n@;l;2Y>4=J pCsBYf:Nvmͪ,WTL5`mo~ 4pK(>[lZq*__yj3+) \LJumQQ/df@^rg\,뙣;<~:FjZs8i.)+ SE}-6> R1`Wm#_hxGg9O;`a@r1ITLH/0V(" BYL['b23yC~Gd5lWK4)@ ӆi,HP`q7} 0<_7- U f6Ҋp`4Fl`7}h!`*0 BɤD8rfCMv'lIN(H%MMEAd܁d?MmL^mT%)\81uM^uLrur'soQ3 xeS\7l t$Xu7:.M+%.[YPXPwP-aP5r3 vK9fX+@F76Řy;LHx ]RdL|LҤ mW4 ,a3U @ 23Vnȁ[lXoj?W5`=)UjdlXL{x^ 6 9~ԠM͘JvsaX񹐡eV??kxdG~2}gZM׽Q X07x=G]4za_ۻ? T#$u9\̡$jlj,hv!|JsJuPUńX|7Noo=SV{ʖlXN2CCBQlBf#ӡ|W9>2❷bF)o͊%%?K:lB ^ߤ=~؋q^wb=V-O @Ѓ j~Fmjn]ߴLg (&4rM BlqTb3syq^j) HX!dh٧" &CJ,@ +#,s'BMO0[#I9Ps)Έ/Jfͱ|Z+yGxCC76~2`LBz緰g6RX~bu0-. S&Ue7TLRqI-CxΙP>W\z?=Cwjc>w &E-F1~U(0C$#LPRS5!6 #ۮIJh,sl-Wyt0Y'+ʊ=s?xIe^HAVS彆KPx,Eʉ`IL`H3/䟅)MsfS~>Q0 ǙF4 dz)$fY3lbBNN1E}R0eP}" dOoqMB(2i~)]&L=vP:SR}~Ph/EG|-Qʟo=7d9Υ80}9ʚ:kS,/=QE BJ|#g!pR0B90CVցAfGq04ߗ`R Ma~vПC'k\R0ʓo^T{*XO9tO0Bvhz2Jbs];x-k^hZJLmv౔`XDDDq̫<\?0RD(\9vPpbHV<0N1P##<*$btP-:SbSOW΅X _ 'kxK*O2)&l0\YUcJ,|t]( S·~+Ϭt,K!(.w! *oJmz͓4KN| IDATkB͸ ,8݆ʇ,͜0QP 0Ɯ9a0YZylA$w~Uɝs{~s&W'e!? Q|ax`UsD?W}ᛍ6=)LԎ幒2)r<,A܁B<)s)BU/F 1]gpxn姚y2DLB0c)sW~HItoif_,.Mp\ 6pn^T2נ?`ӟӕcHP;zco8"zp)T+0dKDؼ\ɱ`K҅]_HB`qAzRR MV'EW L<~)h~S2kE8 S%J~€L<\U@%|7L',;{Mn*@nKƦeCO,VQ; Fť!+3%2ZE?d=)LΞ9K{ fF nrʪ4\r٭slG1I"p&X NijzPBԲi mK #fn"{leׇOĭcBO &+OshJv|u):|DgN<,Q^HPO.v~ u7a޽awD{k]5u{'4JSiN"خk7;r&#o MXǖεs8R0u`' .lVbi ~gN"߹ܲc@'Lp !Ȋ Y+ d-C<I/t\șT}3Y5'&RYWQ9NYO?Qc"PA'1ܡ0_':϶ Ze-Xs M2a#^smB}e.锝*O>Xv7$Jz2VD4b Ed]ʔ:k] -C)66 LK0c(.]|yP9]%{J- oP?\-,':sYyk{Y@yZؔ5M:9BktsqLmτ )IVs-ʪ=;>k9OAJsMJϿaHKT\^!/s 9ڹ3abw咔Wfp.@꘮Յw'2G66W2 }B$ Zqά+e*z ^7-{9v.`ҁ3$c:`ST\@?x]P~h=P8d* 1_<#yC-IXJəwyBpUB,ڙQ0sadȢ^Yɮ|יd8:Sc[7˶}+Y5!2gsin>'bĢ?jΤԝ Oh9}3)ha"7HdD?+ƅ>&ŬvO1xcL~e g0'f3a#؟03 >}XE@t}&6Yl:zBqJJ#olezy :m/D(.%K ;cPKLGW-h~xqh,@bYރj?c?c?c?c?c?BS9c?#۟G*'3h͈{;|:c@{=q \!0Pc98@xb\*iHBS_SsƘc}(~Ft G#~t!Ks=}FY'Q~8v`]1p'Ž g ]칱i}*\1 v<fNcxWvpIRrIy$Cxqa +!PڈzN a gr@k4y/쁷Ku(Ul@i" 05bE޼xcUFxCC#XS VfgL ^,#Z uLTߍR"9ք [cD{B6]՟C|j2%D{52QL(SGUO1ELH .ZylQ;vC;F퍝;z׺g̤h)6kkjaLEĕx=Rxx c< >4@ذx?G]@'|;!Pi?Wb;/sH 1oC®is6d}EEXߔ#LR c" %1&|ƐO6xh<(Op¤#",oS#L3rܦ>bZ ~;x3@x}l'@R2cEDeLk%TfhJmXaH$^7zw4{Hn! ܱ %GLW<)/~!b8"RHbLژXu9銠$<V‰eXᝦ5m Btg|h7aYP76)Ai$̴]cұ|4TucaO p1&$(e߶^MYȔI _~$781 w2'C%T/N&מ{%Ljfs~٬>[l!`i{?>I&_7!O xMӀa1f >ɖkʦo~ JZ6؁kHІ|<|768g6j#RRӣl+/obcR//^(lQ"]G),ˠ^@78 #Yg>0>H$0AAJ5 D5[-ߵ2R4M!.Vs+:@6$T*n4]5ݼl2wI_ek>ޔ˼<;}pܺ^!MbD<׿KIMPb!l/: > B؃̦ߣl?3nW?f[8Xv#<%d)ĻIJO^^+JgH YSWZ:y:~qW 1[Ȳ Y8_`I RT$}>,(A#kʦQYcO[_t'@F.0֡Tpy ǚ>rVL#"Uf{h\<s~ܔAXpy~ϲIL'Y髒>0R] xC 4MATP7,N |Tp^1X\ϧxC, ;;|[i1{峟̯'#fKl `.6'M_<ɲlnt;`8|;?aH|QTW>lz_l 8A}=pyXbnJ5&|K:O >H =_bRA!S8>|#*fVl!K=go0!&&RQv%O0f Ԩ.NP._t 7zA'>?, E " VzCPDO|&jr?Yܻ~!bb7v =0@1F/Of5//OQ}\uȗs eNlt,PEPDq lZ(e2k[ZmNVɌ -*c-!s4<qH:HW71 S;ԣ]Dp~_'}? -:kP.Q}vu3/}s`r '7N&18iJE)3G`kQ#ke`‘2s[( r_A`nuaK0 ]8%&`,]|݄ ˮv{$4S(e( uu5gMކciU)B6+Q &j7 M)Ƅ FP~09*>o,/$@g`?l4/?7pppl6|>ﱞ43}ku]om`^|Lma-A'8`y.X")@r"2"^',PSFfhKgObzٷ^VOT GF1P "nu_%Bj@XADTbU*k:i>)6`$iytt|>|>)yifuQUL]zcG9q"x%$xD-uWIU(X0rg[|>(c V/b M_n~l -Z=404h?jJ/&0'L͐?f=R-f @4aם> [ ]eNk;::ڴ h6 -Tj,&P2ٙ3f#@GK"LY\~"):^h# `},ސ /Av`%X1yQs>Oʊ}_]mQ雗ҧ+b1Z0)˲pPreж&]j=u {'ue: LYV o/ 1(UQA1p W)!'(A&̏mS@|oIZCCeB96ЃK׾z6c> iOn-N\ʐ|>_ /@WUl]㕲WW5^4X/' #O3) $HA`lEey(%g%ft:Y=;< F;>=QR! aw)kf7_On<ߢxr6^W.K|.gYtl@'J1KfQr@F `i -`q%[,QwhsDϒ /HacAx41|bN: 6UaXyYjxZe/K |y c(s/*@A IDATv8< ^ϯ )d~|ePP//+2|4xO7WFɌs8!=kq)+.Ұ4*5#n(`93&P %LylB?A: <jYUjd :_fCZJ6zlL=W!+1gEp ~xC!s<d1U>QhΏjSEQ`6EQ2Q\[ MӠ*V+ GgIz3 h86x;``g:VYKuw{IPhp /Yy1A3u:fnjvDIrC~jG;̌,zY0`m}`k.ގ' !̤:N&>tS_c7TO . s͗! OaQS)S|Nf8󲪪55u?qb8n5" ROaװӱqq<]Px7& έP0AD8P3ʁR͍HE%XRy1 [Zbt9N%=L2Rp^WT~WIj [u\Υ45_tʲDY U jpؙ[Weř0`w`/;-P_X+X =X)a ڒ3- {;aP)܂)1?1ĀSjz[ Fz>b h(k4bp}tV'E+_D1;'^A]֢^]9Ӫ]\lYmNO*2,Kg͚%3ODd `)Vf .3HHy1マe'LGJ?J2MlBމFh,U."N9'N* {o;2l${yfCnX 9Xs-J/k fa7, ~U`|VNLhV2_Wz෱$ ό4iI .!³d,3dj;$SoQKrD@׸~,e>VeƆ~p\1_ tW^6G-` n7y.<buu7mWMn'^o[,>64AJ -: ;pşRY"]X,q HIH ]tss'1YE 83ک2]uLJŔOrxxȌk19;$}u4.dMo<ݗjp1P'ZΘe B_ė1 \*oáTh MOAH?.)286[؄+=xE=4EU̷!F ,fTz,GTvDq$0~.wd $ܕ]žڕ ,L:suu]__7x6乆;;n˙c.-,zE%*?\}Lw|XXbs`\286UwF0t,Y:*I HCOK18xҥds_Owf-sw7w6OhD9*Sl_ %GjrEׂ39hŮ9am T{|g@8X_ _ 9 \䄫?kuh-WKf~]0W[9v}^ y]3t۠i\kZ|iӢpu/Y|ͣ@-?`q.H R8?8U¿@gWlYħAx93`n؍7W֓dYiD$X]&q/!ݑ%s i=.e2!$F;gQ;๎P9hBhy[9)l6(\LQE}eh{AsN)9-,(;C5/S[Q> Pj&Y]r| BIvi{2(Ͷn`͈[sJd^S1ɩ^%i\=ӯˣ$wLtgm`Wp볾,6tHg):++Sdǁ_h,n4cZnLX?C_cxRExy*<+ygvM*pqk*H< -s<)O//R/R.oK[_rz²Jk1^˺lNjϘ`a(GŢ<|柁P0pQ`5pMPAaJY9^44xmӎ]|K [(0Z{Ѣw /dci&u 9T<;`|Z|$uQtGr7(p9cŠlgo"AIS&t91 _di?%i|4izӵ 9Ь.r3=ഴzY#VG1-5V,p3T&(G_?'S/lbYdXX>3>DEG3C `qbVOf*+0ə Y Lxd"^bfpSc2is.A\(O33z0YF4-\*sZh]06m? 8u0zj G|68-9Uz.Â/d0biwk0~vDZ2 Cpi AH-ruL B\ %vf5S#iun;b hw>2];k69`"X'ң_jn}R}ܨ*G 9Yt X_CIvCъ9etE)n&XZaZ ?ڎ=ɜDy -tfiM ~-e eAAηag{RO[:M;k7tj2MgЭ%,JUo2u&<Lylyrϲʻu8-3v9R. &h'3e]ЊUiv+8gdħ j_l@]+W)!B.2G -NsIv _΂m:,pՉj4W Ƈl;VF ʮQJHFv(}&rs:U+bi)tZ7~ g5Eu5jiê,qU2Dg~x)b8@c+1&3XCp?$,`u,Y^'*R]9T+ `,#QRon,k58e+d9ډ.\ܽH5[vg3sX30&l-^:3%c ^'SdvFZǗ3q $1^qk(9wXVbl KmaiB.ͯ9 3cSX\ŋLx ϐ 5NI7ȷ@aS #F;p7hy +d`,Rsd;[NݬEXWEb9rf299j It_  ̇`6MZ<cDZ\L'13*fxC@Ìd.91|>X5O3Y&< U28 r=2m$?m/XIY x "r'oq9WFdi#cn@.524^!KuDJlm@b}k2QFBzD&'aD?v0;߰phpuKj251}]ziGxLn qW~E3>W2'iyzg RcKT &Bg䜍snѯ6@.x8qʛj%tAFS.N:,9܏q뤫)k5=eOzpFdƚ{LPKg|Ԯ'BˌP7Z8d^dp KBdkg7էs%=.О'$򽁹$m>ڐp"!ܽ0!ntN/dFMd&*撝3aµdSh"e^qh$:PD΅$6"}m%E D8c % <&<+pDuM ,;|d PRr6<ܡ,0]&S3qv`:'<_Ls瘫J`&KFq y>2A3%I1d_hT/gEsts鄐%+KJVpJ)i[P#q$ ) ?KpJB6} gl@i/ ",b)VR 2Ze)#Q8"`!w5 ;kI]҂HGb>w[u剄\ߚS[ػto8#} ia, #~&"Y* )s@f`{e*:FUW! yfxà?`̶yND;3sb[S}Uf{9\@FygޕM=> hNwScǓl_$¯mjrdJ HWkk{h0f鬟sNR{)i#<0j*H$3y4U'E&f^v?Lk)MOahtI,A"Ĺf|?5؝ ХT a#e{"~ 'yap59E`&C VQX)ײDžc/<gd IDATRH*!.п$KѕVt\˲9Us95wV{' ,@Ee+.,3N"A3Z?])XR&Q#Lf&0ɍ!8")fO:}>u2jl̽ZS\˜XF^%ere_72oݶ{#E'z\@d6p-M,L`͎8@r2>Ƕ`nO~PYa)[!z|P\I,:B_ 8PY\tO2Y;p셸 r' BBHfrC/`"T !`*~$kL ?u*0f>)fgvM/!Y60(JT%Z ̗!jU g.K#׶]ԑ\^TqG+fL,^C~/"Qn$ ד+O-031Qxܸ)&̕ .8;JWv&rݶ]tMӘ+ k שHOԻ] x-)KA>9o۠ I>tYbFib bs\tAN!UV[~R;Gj1VS@d)c$׷ ][v>G%^&\9p.v(X| nVՌS s^Fg3tK5:Сby|ZݤŨ[A^oӉt `#7}+0Tx (j{r0D ,'(20M!(sg ցTDxs0]^d0IJv4,H%&b67?5Dd Ug,};j]]CI"N fLll"&E52l-pWL1p&nJ`YpyVσ/kE*fZ삁(3ZBEʹ- xXpgAWB5- Ew-53vAo΅Y [chG[Xn%YK";x)g.[O ]˥wr愖O)JIB]gm S v@CKw,xޔÎ#ݩTDCgpnZ9]]DO 0S2nX?D]s;8g+٠5YdlG2;l_ [3۝ Vv-p8b Ki0-" Y<R'SB9+U vNo< 3$Z,S+x˺XP͔1ñɹ .)'-zWv5:8\*Emzv='| \~P dId* N `M@Qhr W@2X? 3n]Wc"u2Y ~bq\>@ۅH eb9Q[]c< YBD Eb=@_`,}$|a@۶X%ɷvB{21ӧV8;rJp [ L} -/x下) 3^P7P+TN Q8Ю]nzڵq1Q,Zk x.9Z}1\{\n/Fh$MZ ͅo3ܬ-`Z*#12#[>.OI5eOnGTf+$ 3JN@$'g#bX)f| >&*|%nR#2ھMkiILp-߮\];$@Y=L`wخHS6߬М<ʇv!IА>ҭ jP <.G@d+7 ]\GW\ޜNN)4M\2~A\j `a-tz0*`eYvXmŶVC#c^u)r8)/Ra w/;ov^yMXv!.S@=tH# c#Jzup1>bX+'ˮWwD 3wlѕgMY2Z,aw9/%Q~\Қw^4J/B:0c=Ǩ  ~5-; D14ɩ1ZV~֮]W#vRe(΋u3nJ'*V%sx̦d3C zxGb%4Xп_,dZ.DJ!* `,ꈈh, %%eq"ۅ-v0 8z2]6zO5IrC7o `Ӄ#G),)D8u-]sxY.$N)f }wuԃq'O};clL%˳̇R5j#BX0ug ;'n%_X'M1.l<NgqC,+x9C Uh3j0n0 "Χq|5CnT4C$'}#ywx-Z8bQvdql$\@Ll-?k|ոÝs R'L( -nPNp-^oSVclG;YG H BIIn,+00HU:@fQQ#ʨSFb;sժ ;q̄xqWlV@ϑPegT}"]M"Xfek7+l$4bV΃NkA@׬>XvX.+f|˩%+i!wpRGjrp.R2H!"`Aܥ,3kM |FY>drXV[lkX+ő d"Ō/;QiDw p4~o[mkgK~@҃Þc9a|q lk3katDn/!3"+u+DϿAuNs[lmCeu2`Pzb[>MH t2goâqKt3u̓ gRaS-KXF`flzo:v;H%@7,]t|Dɹ|2y^/K#]OI/0M$` 9*a*R".P@ٺfˍ!"(;׳me]Zr<x~ ; bBAHbg 0ww9kq)worn&ۮkf,M,?Z576Y%?d& kdg1jXxZ/FD3'. J2հrt~[vAQ)a!x[T&]vt̚s◮}tKOzAar(SInS,>CKFY.T :2L'nB[vxBL0NT\TZ< %w>Gdb]pfB!M)Du(_fiTE;f ~r˃YuG`/^-vₖeTČO >;-8af2@+!-dx@Kqq3Kslq>t-~Y6s~|xIWTP,>r~]c,י1EVª]NZdĻ6́z)wYf$JH-xsc5Gמ7#`৞;3,QS  /T5㩹{!"o]L wn4]4"'K s̥s(TꃾOzp#@?ޙf]_׹֕"k34R5ZJVXѓ+~KtUudcpf}A,a%|qٖ,zN$ rA&@Nlr rg6X6mm/+h8-5%5qutˤs0͝>]\pjcv"1{6C:0w.awUr4gzwqa&o%)ꄹR,TlWI̮f}* Yw+eʕ(حʹus{~7#s& IDAT9 ײXb[ ל& |w&G>D(#E@X0xO&ejw,?|hv&GEqЕt)@ղj97hCAN],"`kvdᤥ,B]Kyl7fEڀZ`$MY2 6E;;kqͤB-&&&Cq.~^I/m S.ATt9T5:RJbN ]̱v!ڸUr%k\ZX'a]aaJU<]U+ ?")ŋ5FT3m!zFYBU<;Ɲ٠Y˜b|Dl`ŦΑ9am!DY΂Δ]6g#I eB[J54Hi1 KTT+b8-b,!Γ+rCUjF9}ܷZqK8QAƓ. XrIpniL`bas7'-nֵ\̯n CLu\0nLz֝odJ[:Y[)TR"GX/E5S5ҢZq+  7W}-,*D/Wj ƤR:Yswns@ݛ} ,l8`U&Ad+'R<=CH1gJĐ _)n>s.PS`tvunk+Ϛjy4ZO սh!0eO6%nTU P{~ʕm}En#y1ƅrduVŠnKkEuЉOx9T*ly5XRy x =u(b`ЬYm%LOK1u!&5fi{q0=},"zx<lםY髢VkG{ &zκ$P|b,S04zY,Ō[n75׫ܶ;2eSfqH2XX.0dJ R"B!w13t,皷l@XX}nr)'{ ,")bE"f(ZFmq|t `f*dc͆79kW0+-( ^ !R&e,`kR 2D Ly d(!0,S:&N Yrsc'iR9|P4CY [Lèz:nޜf} UKGAgc~&ǥ͂2E *nKv !RZZ­M@9Šx~`JSOiu " ;9ްٹ{dK*f6pd0Gξv2JY8= VWx+f5gȮs)_c%Rnk ?Q=.ҬD| y0-BQndlP`}gsp>cvY-LǼBy H 2d=f~~u`񆪐,Xl+,R-KNV΄1.˘Zz٫UѢ2Vl?Lg=YobZQ RE,ZݴSd-@f*zB,\gG;,@5V`3`k"̋:u}uc.# qv0DpG$/tBBս5jrn"e?ޡZ-^[BBVXW;ccf+udL{/ATQt?ݸNPD Mx$ׁ 0- p5b'C#ᩩ#b:Y7˻a(~?o%6aod!ŸUNJ/dC "1wGdېRqZP,*FPJT &oGqCG=z7,L^GlPmN#ۀ墨> 6-wa\ =F#7;~J7㕿aaРLKq+br("zVRj.{Xp6u ĉYC9,v8Xbl[0n ^R*5\+LĈMl7miT"9!F`P`nd@OcqڒƄT%]ȆEZC P\"Xk&S>7' ҧ΅7ԪM2t)`+ed2wG5iea-R KXBF!@ @^iw/=Sy.]ˏ E{#^sTox\G4CH&"6LZ+tv!,1IXf6Fz/' (-d1ecB:RZdapJ`} bK =n"n&!\DݮӾ.RQM&r>6¥ S1-f;@\)tKXX7Zʤ J䞳ߩ U.DjCiAV0uo2bP+9 WPK(\;M ŏ!qJXV> __)虈OUTn}lG\g}#m2p/97!g X1)Ji7$b0!r XNyKc w14SHj3CZ=D iIl$E|(Iª bm˱.Åe yg:>v{Zs@YM´KjKIɄE$r(OcSzlJ#$..zH ,aɄ VdQ o\Vi;ȓ<̐!RƩ*4 DL)0f78NBxk+#ܸ*SpA#~S D>[ RR$ۅ6ɸ[^/`ܮPQT'$⺘APbgC TCB Crۻg.04O)vV3W1xKQH,j!S·֮4)]c 3d\ѹԂ>Ip`31"JIdx#\̻}t炵 Y|SqcmY]$$>@Rg{[XKR2\N$$R8uCeqőjZz0]`(n,O4鳡&YG-5`c)pA$lVJIDSCa@DC -8g,1yŸй)+E.0U}1j|bȑ)*LKd炌[Z<*gdəE+%le@տRćL%@+-l,-㤾EX;/ʾFm߀A6,(Kt%^>=q\\-@\=x?qCxJ;@[EtK E@gW[zJ&qQiH@@l Mf[7(PboSy_l(0۝ WTĥ e՟O!,+R-uhA&x=H+aZ zq*SE.-d+,+ Ʉs+U$H,F#_edHVXZ~-^.#k4KR,*"-R Wx"vcXS8C),'07\^ # `x},/&%U΄ib3 nnF ļi[GLD z wecJꥲFCZ-3wуL˅Z2i}_,~B Կgp}[]/E\RXo@9r-}3 +LS2)CA\ +~CCWۿmb tP[6 E㞾<_-&DJ" l.w`*IT>:\!CIOd==6e*SjLgο?q$I⧏ "zKxb7GtCq\n_W"Ɠp oVk@./sJ@Tlk-Rk3ɠb^g0½@lBWݵ_'"f hRO)V?pp"]]J[|uޕ?\XI6Y8ЊDVhw쁷?hP@gÖ"9q\-Ց 'r\ܮEcF)GYVXD#6 bņY c Ig?kR"5 EVXAx>B*n $ZҵBĀM!_ۏ7;}a|?OGւ1[DdxcZ6b^)‚VQ`_@w>vz[On#$xJoϣ v_l0 ;4dNN7+"btn` 伯>Y8l!F<^KNxsa]X3؞`3w*Lčb\7 mZKhGA@'ۉ`Y`*]VObBLj#bDBwYxĐ;(q)Xz'kǨfIYAɆBNk8A\%VbA/ȂL>E+רzɑ5֭<'R$ {*&gɸ@l7’ƩVb ̿Y&'@%dmRPxp6xϓ5paCyC3,/w죷#[RΧ5{7r' 2NdGk=?UN*i&)T)KYbF 2ɲa]ާ"F ]YZb *gJ$YXbTxqN!q$P?c?c?c?c?O/#qvx!?s߯,XzPa~|=hxz]58pB = (_C+dM48L Z$\ϘU=11[ `đuG ʑq}h".#fb?dZK ІgS.,xwQ"23B݌˘XBr@~9ϥ-Zzf)و]!~3[˒$H I|xrɸ.Òr̹1k@A3ʜ K a&^ 91Z.pr{Bf>wNB{|Z%0#ęSyK1s1:^YN2,0B^J 9K7,/g_,Iω qsy ҉p*ªj0|(J)p1+3SqPU!)%XXFyOs}Y9wD;׋H}Oa>ŀ`33 [Vj]f1Rzu&&O 8+%)5v)@g|!lj]7ܴxTn\ 9*bUΰ[,-@3TN\{N8~D<ϼ'}@7e~.\Fb\%Y#jfb5ĤB1".#el)D{sՊ1!v0YT,zMѧ:)@Hp!"#'KKX\KOO9S1}M[ %F2-xo]nu&6`.Ȃ/! KsXwBX'>3hP&x,ps9"2-{^8 !Pb9+aʂD 7纤{= :7wUŤi#y=="*bfXtVUb%iz0Ʃ(Vg"KΑf=kr/<ϱHΝezIZJ|"]ÿnH+9G| ŝs..ßۮ^9V0E Q`7,b, 'R`* &Xtsd@5&t<S C kxyn1KVsonJ0 @4reQ@LQ#*5C)|BS +l+`>%ₙO:lpkBAĊ;w?"l̅}lAHBZ,LBEb8O"baXTE8DQ>ƫ`*<;*6ϰ`WD` T?%*#9]h#1cZLՋeax},'x9gs>v%jZyb`KԄߛ L\j/k6c<a0z]1Q!S|Џ`ö}˹;`Cs=X\wr.W|,HOrYTIo|zBgb-I3<۽7I6kS܆H3 d% x 07ˆa`~y60ðacƆQ")jEHu7{[ޓ!332"2OUuSLιg͓'om9"EzFzS1}8[)v0 f{vsvBzt v 8wmDĚXzטS!߉?vˋB& J b\t9>k>|;Y0[ 7ivfGbRH~JΚd6<S(t3V4fnGO-v1cX&IxUX\$5ۛeԇ5_dȘym}1~ 1dkN$1Hߥbk/9S}L+q#Xl9 o8ֶa}1X'^,gЋ|Gm}^Mum5coAXp9P%R)߂*l ]"FXm^*&jJΙ*)q=1_c: ރT;O3:욵I: &x|=s=1sv t 2)]Q1}ҳC[x /Ws y K ?CMA05^AEKn5U>oO۳ܜع)$AYRJq IDATjs `w9׻uE ^S]U4/Wco[a耑.ώU.LTJΙTĤbIzun6;xi:2f nNFrfT"^Rc xmQ:Ug5y2&~`Upa0ޘ7V/*ZcXHʄ$Z-.^0;ħ<;^?[[w'Ik 39Cp@'OZx HTU*f5W;A!l;1'x758NoJeLub# T\ػGb3W݇lS{݆cHZkhQExݤI)9cLy! &HjP9i/ yjxx*j17S[oPrq޿_&ej֧o: YQPJ( %gR˙!ۅ>]<<%C0@"Tog9;̙%.c~ɉ? aoST12°4sf+ϼXW&4sʚ1{g i\Y(bsbP@@,*| RԖΚUǷVK*&ƀnRxSn3cJL{[zqW=Qݿ~0Mb`^eY.RfT*Se*}1%3dBzkf'TQQ:kώ~MFr=܈mR~ m_.壥@6RS'g J}5s0G7fxfKЬ>_ū0g4 dO'bK1&Ii@߹ӣ?eB R]vjC')%翥ܤ^8ZxgtY;0;غ.Iel|HI1%Y$Api.J\AØ9T16T,KzwOONG|\ o㦨 x)LȒ!ÜJ7^8+=cNLw0:/HdӅe2 ߞAel/v^Oj?7F !j0{x.5gj(ߘԿ`09ئBux fR,W%9VfyOHl[ [c;7A|ft`sP A_kbiAݪ׹[?MnN[ )`>yJ-e^0 yx /.\/ ؜WvM-wFAl\n.jcZf b '}6= uW10s93f ε_9)80,53v8PwG-P@cŗئ=*Wolwl#fd1/SELoܟ Rfw~Z>k󃋿R? \{[[`[%A}|jrb * crsP̘Yp1.09-mr丿3D0Pp1x8e?8J3~D =?Qv9{wǔ\E{ZJ^oJ )~]*5L%n#ZJ@S/]4BΙ{0 6g-Oa;o^>d8la`Znn-1p:\,y(n`\D#S8&b`4D 2`.%%-bި/6Do_ ~!aZmCQ"<""IN AƌUhrί}µ~;Q:̽i܇|>rj=, 0>\[+L0fVUtx\hz5MiP5l༵hѲ9f?}sr u@8KCx {`XKc,Xbk?tOO̖bf2oj+=J9"BTEL=+~T1/l*Sp* Rr^^]0Ơk8cp`,>8|nP2(zf#ǀAGDfp^ E7 )pB@MJ=%EK2Sp9ytU6A3d{>4cd;Ld<5S 0@{/OJ 6 {xp@Ll6g:bJRoUUk4uxjằuMl  Ad:\\ N2a: XqXLf`/bgκwj}T͹DxTӏtS(2`͙*"闞+W^{/CÛ`*y)Cҟ nu]L4@YcØ3f-!PȑSL'oK?0t8Hʿ Yf@bIUp߻;p |%>X#cj$ hb*$eKb&J0"Pk:p?%?GBSstY?@sҀLCt?76ᚦASث\Y|vw  M:L͑)< /)(ԝ .1("*83T`CbT$2)s ^Wgt9bm詡2cc7) S QbuH0P߻ wzoׅs>Ń· 2zdOW >npDo8I8(L(fJtIEC_ osx%+P30&Tp$n%8$YɌ;!FLH6cǮlv-D )yb>T~Ѩ4M Letr)Ktޗ|X"dv(x+D0g1;gc8qƩshϴ=i"gI Rec=mSӤq'd $NZt9s#+cT N1{^=O.f\l֬r֠99=Ӊ)HH_.LѺݯ$說B]U7/k\7 |4m>ع~P{v,3auF@6 Ų۰1C+jX8`p .@bqsl 6>_ W]*oFTEK?ۙϫڳc4À\7.FK?G^jEx_, ,ȍb ghiYӽK`z3Sf]UU ipX|V"З rE &0p l8"T`z&( "qoc<2;̙q טpW 3F؞@t8iQSo_ʬ_4=w|v':=%usM]FL'LKdž&F1NE aFo-x?gցIf}6x}tL31CڍRUƍ58 <xu:[ ~, Y{\8 6UXw4m$#u a(PH+4[Ű} zVW!2Zo)}lKFLNWՁ|z~m.HKRLB75eO(x3gEJ]gCd֔S5teTq? p0`| W$dax<2ʔx [{vPO: c>{I WI.y0|C93vP|\A.ʫD@OGܟ 2፿`5wxfx1ϛgA]׸Z7`iXfP$w`Un-8EgJhD-7+ƄD&@X Q]@ J&;dZ%C է(UxaXx1X0<ƚ:l) 3kCa\kb^L5u^,b6h_oKHE C6:Y;qry<}%"<'@89_6obΌA'\B{PMcJP1 g~QMa;L$/cU P$-fD^>ɗuEؒ 6t<[Ԫ^`ЁW0cbJ]טϝ5[+&$aOc0am0*(1%ćAh\[p19h7H3a%R(%g L]gi"u z``Rc; )ӏt@JX 2̟ؕ_S6kU0wΎglMLYe Ya2^7xʴ mBAS,x ~ބ&WsszS [MҪMb:'l!j9IG l7i&j~ åד{5%Рvn0gӤ ASZLNuRQ7'sl,V@#MAHťglzkٳN^g;Zw_'NOT+ZÍm@af' 4vB&׹|rc D Pcw_A±W,x4>gQ|`x;xO7+WlH)ob.R)21G$SCЋKrgZ1;e;[j>IVY%蚦3j,6݆u 30` O 0sf|5>< (S*s 0xY tQ؃<>Lgაy);.`*w}w\rWg0~ fjMZR[1x(qoMV@QQ&?T]0BzXpAc836,7ms ut .M-sð\BeSձ{4?ρӛ,pv^S3p%Y_ddv/+A6E*yrFm}\.b ~5^EoQSB[2''E }MNqaf%Uh|\P~s1`D_/V.#y<154`՝GyxðJBzU{~?7Y)Yo2Tz&Kf,nV`: l;R "&#TI,D_WІ t$zAe81nɮ A(v=nPmNV=z "D%ФLMMU> ЏR+ BmB]TMD,岺4g*g| }mA5\}SX`fʉ=rr1X|6;{a7a! mI讱UϢ&lPS{Q7-㹔3єMX|mI1*3517;7k~VW#>PG;Bq\*b{D.%Ӱs[m`3puږp\.e $*^7W o,mcQ&1PIIuj3\IN䄱>4JL U"&YvK܅Kd 3k Y꿤~~)nUIJ˂yp'\Bh?cR6GZ,OQd̰i/f^͔$yAEv|&k|Pvtц@xGdQMT$wa>40ᯢeқb9/AØADX*#1u!߇A--`m눏:!iUvH ]sfmfb3K&2Z̬ J8QY]*l3 qD47&5,д!C%Z'+ 26Ҽlp7XKepD~J\}zv y90} -/aZ^ݘ ش!W>-sjKmC34aojOb,tWĮ ܔR"G"dv,!7>. Rфsx2fZUVo3GrsC;R&ϩ9V$y7 {LN;8(le‡IGM9kplcg1@]dl\jb0~ՎR.$܄!Rz<"~vr`C {& };?mZ\5.jͺ e„Z2G)D}=b\Q'^/ '`ɒM۵" rimv1!~*fXo* RemYG2U<`H\D֧Êo̷..mm8lQEEl.L=[ \~^wdsa<x.x$ Cˤl܌)K?.">_1XDg.qūȗЪ\T`pMZaŀ&CK\~IN:"y?8 f Ϻ]lz86aw=, Pό!s&t;8B,?;.톿]2$Re5sEܡ>6ȆRة7wׅK%vEų &>֙$XyLo۱sa3G2msH|ԇa&C=gгd/ M] ӦԲo3hL/wl_rDLMN%tjB&0wI')}KHIl`O**[kAqyu*7AUvIG ǀ S:KX1&Y^~H?,3H x #yn f+l`E +$3P Ipzŧov8vɋ}BXD`H͈ԓܵv>gbOߒ9"A#q-( \]m@ߖoJo?_$oئ1vdbMiߑ*0˜lT$\Xa+2;b,UKՎ;HB~J_fޚQH+qy{J9\eX c&#}g]fLΙz%œ OF14~>3n!0yR8a]$^-ʤN2fjX/56֝IaO2D%):׏` [)p8uF^.3oĚ%o[*ጀwK4Ц0IM7ඳJg?r6(u !e3QL Xu+\5zC7#y\|@?e,{LH)HdL]@4 .bMļ] ^7CU9YS弙I8/鬂|)̌77mlaM*uOoĘhp͜($M 1ƚ]b}v%*i  e /fG>%eZ,!:UwJRz;ɃJPV&R̆s(q}1ҮН%qhP7;b\eELN}훜#CSTnm{'P&)K"|faeL$kΉ Ƣ94g7KE!lf%_vJBMJ)6-cj 0sZܥu2Exwp 0)8sm"ܔIEv耰6pd꜆]8\-{˻/ IXH ,Y11AEn Sw8"ש@T/2pD)p:SH<@ @鴃:?75Qĝ? 3׻wbfFp8A.1IVx IaEjMNPM'~,/KaŒ9h84E,:. "’{ '|sשn h$̖s(@/Z)9x[p";IUzS`iתX^8Wr1ǎ&vwT#uqc`]:%Y>QmopuGx WHcێф~y} 1-ydXxJRpﰣw\ F|L%Rzm`(K8!8 ۛH,^H1ޔY豲 `fE]o8>Q,if^S7Mfy2…K`| )> Wᙐ6BeLHv3 6mD  g~6W2Xilh9Vcĉ|l(I A܆d:t)O+]nD*{ʮU3}jϮA_*FDD8d!asDx>ˤzqJimHR@2eS _f ө f6kElp!sy"TT\ݰ<"f2[ܦ&W[ v c77f})NԌn 1& [@Cb| )&'XaEԪٮ.`z ?Ka]ew[lی&-1@&]nSKX& \pN eabbY<@.xP$.9Sk|m{t .7u3 LT_n,u vk\va s(D2б`ylwV,qa}kY7gX8XܭpL$C۳br"~@2XR&vQ_sEw L&N Jg hIQfJ '‘^Sm \7͓\<=XZѩ/l"8(=kH!N=vkxe6w7mCܷޤ)̗8DU'.9W jlTLegzPLq35Udgzf+G!1~48 9C)Vvǀߔa)Jr-?Ǯ`kt*91or̮vl%|8S1M$W(YjJQ G>l &YMohh CxLmRI{-RXT&)5gW®Rji!nlB i*GZEHWjbV*U%l6qHO I5Bas[\YUm7x%R; C6Hc;1a86`*C0FT% @6QV 223L$1`@zFB)?7n.GD8ҤSk`=23&tsW ?@$]g>O[?c#z20~S*i2]LGIs4AVV JUo{Ҏb*3z #TL8 9T^Jwn"xk `w]^&HrT,b4 }lCL#o¢s{N걒ZM +,Ce>mӠ53SlS2vɍh)q%,)59u@λ12T.[}dͲHorFinϫڴThJ|m,?'v좊q)iom凬Q!Nڸ Scc +򅰡eiOSX{PsLm\^c%ӓ2f$$I]r@l3kRUr9q4[ /3h3;L))*)ǧ|ƍ=6UbGsYnB1xTʟ#bf 1 E=VuT"*=xHb١* "Bps~d@ Ո=h'J?P8YS&zLF }/XZT37|ΥN` #"kgqsLl$঴v`R".o)1E%/,r *9ٙ-9NUbc!L,x"8m[:1bY8Um|،XP=qr>T6nYʄKeef0"S%ۏ$>@|<ˬa)O0b1yڀ%"O"Ul'L5 v>l.@I%G \$ V)"bDd#vv$3+]ƔT#"d/9ʑPBhCm攙pm#Bj91?aQ{}qsrn{)ćaTIңj06Zl;&YNvȞagN5Y 0bI>ad$BQmbb*z͛ [?EH)ijʿSaH1EfQAJOE]NÒ\Ts4ᐕ3t3@* .t-&j@Tl\t ?ϱbQ`~+f$i8v668:5HVAǡh`3́%*~QȈhŃXYWBŎwμc% u3kˍ;)>^b٩̖>Hઈ uΝ $^;:!mXp[7iq s0'XB c>.9RA0bs]#aJ(}ә69HMyw1b8n.͙@o[n 9%LGdEZƱml#3VR -'ញw~( (N R;(w&rIۄSYo,5 wog"R ]$C1sS2`~Hc͕X | O& E(3E:_n>멜$}73`Ww 3 Rm &w%&`clȃEE&}6=V`ȣTvv B3唿 n3X isᓬսSͶǭPc}2з>U8M̷LmeRsowν1Ne c11MXk >7L~5Q{"%qTa3cDXx+?S-ۃ5x <  pcJﶫQsR1F1V =LUԬk`E6n }l /./)Ƃ MNٱM[݉[ fLT'Nu10D-Ƃ@V{pD~4gΉKx.SelISSb}ϝƞwS)J\P;൶|g28 fY `{.ۈ p <q"A03ѝXn8,߂4hIx6Vfx5cd6ӬMRv4TpN}{ |$wFu o 'Հ"K)d!kHx,Յ̍( sHH;_k9}M}ͽ9Nz1ŪҿMk3;vIO@Zfl`Q%4Aymd;Dx6ćNj!;Lk,&N.VLf.@ Ն2,)Ek8sUghȎt*f]8`,cf=f|MzY&dXcIǏuAk7@ I -V]+zMf@DM[ 3 |r+C~<!=F05aM|]vp;lMyؤv-na&gv53Â-8\̠,]|kQi*Y*PrSRa%tOމbmakl֋zs4Lμ;<^ |fKJLqu*)e0,Ty<>7'o{LKtۿ^LdIzG`. `JDlά"?jɮ3v1/Sϛ1%xC;E ?YNlcU&A׭cp@l/a3# uTx8j[1Xc !Øo('ǟ+XwE-/:zYpSk_Zo4O-UR@5D  2PrSk ;r|cIMx &49v~ L,*L23At}Mu,E<ऻ6 !&nGJOpǤT:XCP`̰ͧ[؃lyJnۦ SC%bsp xjUp{NGQT{[VmWx(T1  weۻk`ڊka4-`|$!SyBPccΫyRNs`SkݖIE93tPer69H>x\RԦ <8]xW3,BRȦ`Hh*nk逴JfZ<ۙ@v 8RvLB",0T1xssеR'5S~u45K+P8gC=/H:Qn_mIKs %ϳglA' M"loJQ/cl7 !hǤׁʳd>^z=_*M*tۻI/rjb)YĶӓ77=-̸Y\.=Lٜedz) #0‚D˂T| |nkc-1h|P&%Q`]# Kc0;>f]rԔ?eќ)#X<[|RW|?k['}=+ @AˇMw$Eܼws0nwͦ2ҔFy.WUP״(T0,\l38༉S5R띨թ~N#܎rÄ^NM^d)⅖x{M Z{#{7QkBig73oLNovbDxk8Ҝvh\&=0N#~_Gz OpQ%E)+~ݜF9jIde~Erc&Xt&.u`8-1?/7aqU k0)X  C9Ҹ>lo2;v9>—P34u&|p樼[1_5N8TɆH1M՛UBiHmX-Xa31LJ{wذ?ai)2xc!l*CLC""9)V B 161_tw6VL@zCoo4L3^+A*A.tobxL),>C/Q'Jp{';Y)eune d>_KU2l|lOOBʙ`<7\47>/a'=J8!&PNE.$񊍏`&뚊&]) Rܘ.%Sfg7>dXn{ ŗ f4n>ס< %.> c~,̶jTQDs{SkN$[ .,( -3JaC^ q׽P0 8NgOvgd\VJNZ4q'ASSYaX]Ѯx@am:T Xd,[΄Vϱ*RKd3αksx@+l:,0a֫dD)|4 $0xPG 𰗥٤ٵ`fTrk*|6$D'M.̔bq>&In>}TXolČ \&K,fJ W Jsu`@q, nkPI mjY E[F4P7(1Y04Q$ݟ5ܶDQhsi¤.x,^a l`I2M||:lÙ:NaULz֫D抯HƁɈ6 k}cTZ1Rf/"41Y0<̦ZCiMJ/<m;Rt6Ž{S[0Lq̸ k[Xv2D/(n"~%J*09W]5f+LbM5' nRFJ2pPwخ_9qJ-2Uj[:v xd _riQ11^*aXBHD"3U> h&ʶq'wozCWNP}܃we2.:ݵXv`" \WLq4/LP2:Oㄙٱ?ͨqpY200dj`c̠CtҀ[lNsAYrz>~))N# pc@LǜcX;^J.&.Sl^-"({6-NMEQ9iA'{PJńPp=+"0pAa{ ,UI5`Р;c0=n3@C|x(jVxٻ` `(a^ʌDAG,)30 Z|5)c>48xPbɝ[/X] ]P;YMA{ 'w.<caT/Ї$ns rܴۖ[ӠS-IU"N~ʜq25(&k݇3mNi[~Y;W[7ƫ#V,vUAXlp>^:nuCP  m6 ߯mOun3@Ab)JAeabύ?]`KmtŌ]3t]l秥F_mJuAl:S/&@ t6U8saF2ܛFX?g__.[YؑlGU+J .9ZPq2f} KEAm)Ū2-6 -%֌=op*rO Bګ)WToF>)̧92 =l{ȹ &P0eF (LUA$ N $2\)+SRoɦ!=[ERک mjgFKpT O}~JDIUqדִPprlu1\%W=i"EV„5c-ˍhO&cXG 4U rne6 F̶ԧŜHwL˭W8)\aCԢcZ9 @YS@څRJė &klF6g.`*W8ߪNY|~&\+ӧ|fG)LPK Ɣ ۹}XnaH%.T|żM/Zkh]b31c>.`ܴ&0hY$u&ۿ]]]N6Vj$b`c`ذ0`m؀<0 #`?aGC`AK ̡)"lvuo?D7ϽqbF\##wsw6T9p d&"f'{iJcR1:aj>{wld,‰T3}]0gmrQߟ`v\/\WsPQ˜1 7cJh:ņZ9n 0w[*rX=[bs,'l |PBJuk+>* 4a&*FMN PY5KN;+AT )AΒu8R c`I*U$22O,Wﰭb Ŵ dNNɶ~^ݔ)Y NJ}?&q6[ '}<Wbs|tr1[7'"CJSF&l B X[ߩsfw,9)o37`[.e-:L̰`.LۃD| Vio{?SRƊ:Leܓh0'S 6 v ^G4!gx:rL8[';if'ZLzvB>^ ~ba ?bWlaBE#D~) A-/c/B",f2e]dޛgZJ|i.ZNNOݡd㒗'|0 ǂ$a Zx_lQO;:QVǮKōzoN!rmi`],tVIqxÀg" hoc ~M` 5dpX1WrNhg`J('辭@BP>p5LyپO"XQ][[ E΃l!g ln~lR@B..R|Ѓ66&S nmquv[Q1^P9%*'g100ŶAʦ]_M"q+#|`  X| BՃ B HhOBj5AB$0/07C9P79g4.H 8[sXr8sG0YУ$x y+AV$&4-y#:t2`.{ua6.Ձ e`lNj\%I@M |HkS+l1SsWK 2`-fvg[!> %A{?M"/Cr~&K TBER~h_*-\.`C+bSa &Xqa5Q*&*mV jEITL`FS0<H29[[">W@&,6ոCF kY]0 /62ד K$w_ԬFj^vf`QX;r+yDmum3!1=G`..ZPZaRG`{p^\rHXF",W{h/,mW1%A xuK 馁Z&@H&b~J*"Ph67m.$f FOlAiFDn.zu:Q{ml7*9h".px14OEV )r̖Ot.ismAއ jX̐⹕09eSx pq͟1x@ [>c F0uRd>_d@D ЩdPID!I'Q^\\1Pc5f?+М a>f-6'CE0Y :tax@ZBL% f.خfxj́7ʢ#%;.|h)Bqvv` Gp:+I*z ܢ ŔFX-ǩ$}\< zpMO W=bwO\jI,(@5BJa(HfjOšbfU*/4NNQ0S(>se81 @MRdLۼ{=we8=YN^ C WSš; "E\ikpC1`x-aEB1&=)*V$3BiY y! 'X- E"%JϓP0"B n &0bcpp$M.2mП*4 Q1&S‡s VOb~ +HXlL@D}{ʌ~4\@5(^LkG?%Yo6uGtR\ܕ C0c-|@ _bR1"#s ^"&㪙B|TKVΑoD$Ee|ᬏU¯# xzZSԇ'햁`3pm=Z0ՠSӗbfL2 MZZw'BXwa~def @2t~J=.\8,e2D| }SqTH 1枇Gz%{HRџ[P ˙ 3!.vi!B,ku=7$^{s8$W e3d;,P˶/q3h/+j D 0s)f10BJ#-~v{Ȫ')f_|@|E^Z,%͔\nJ^ÓG*!`TN-SrtO$N2R~Ys9;}xbKlIOP/>\X">!< jc?̽aw<P?08`1Lv&RP{U+&xd*B8E:u))ԝQ/J|K^>S 5*O>, [k&><.Bʓ :E06{{~X<!F?H,MR'vu T?a6Xih3J[hs'8?rLhK|OSSKaRp6w{DPm6 [z șzNYu`$#H@[6t!ì jZ?_gT0 됀n6\G$mfwJEsab6;'pZ!h:gWpu&wy Vy>_P1Iwћ"͘ 6c.]ؘ0n/џc}e~gy}0LVwʦm8O #<ɇ\2}/r9YO:Q<Y:@xi4[ yV2wtQ 32,Ѡ?Sϱ9D2]K =:zWlR>{śgABKE{"M'E28>B?zE>wI޷/g&%KL#o~RSj+Qۈl/.P >lZ:|1ۤwѯR`~oWZ+xx,`E7s3ԞXEw= W{Z=2з!r+C%U{ vXl ]V_I^_m!-ȩ>Utx@ k&Xlc}N~E~E nfŒQ2}+C/\GL [9qq#!ҴZc IDATL3rF]X?F?>=[t8OxL o#1~a)LYo$|B1J8M̈́P*&XXY=g.H8^)ŦU7v"*+1>n%6$r;ƋH3'Tds A(^ ?Ftjr%/Ϻg滂=0w"YWl{I뀵AY?BG2ijHdG1&y|_ Pc|T!RAh&|50%c~ʭ GpǦŜPD8 : 4BF-LHU hW'l4?mwl /r,or;=d4C)z q&IJT(R 33Tc;iJ Li\sM))nێmbSc:l-u/;TϞ 빀jEZ q"}F?l:_{Q+XgX>+P鬻`Z|6_Dbv֝Bl yGx1hBme~͟L .0%} V3bQs$ eS0Q `]]?,R1;fwlŀ@,o#8RN۽t>V%~0^mCU΄! i (-l X 8lJ@@ OT>;CkZ:-深[cwݱ;vcwݱ;vcwݱ;vcwݱ;vcwݱ;c;vG&0(~'"1^6!6l+˦G02` BI h1%1A9sv~.Hۚ14hvr;%ͯ盄933c yHV 3 nKGt8ۄDv1fБxi2 Ƙ =>^~͘ q &),ޏGBAN‡+CJꐹcƔ騅8voY;!C&8sC>ڐyf1eyzsM)isi w^33fNr p^ƒHCKlJ8|BA7 ?0ZM\A-tt$`]-[4132,XC+!3_{o:汭2hS@|Db sR̴:rʧv{ā(CI-Qr9f"0S$ė\sRiD~!3Q!3Nfbb@c0vM$<;?1+i0bssMp |JRD68WʹL!(~.27'&s?."a5DV)Sa*DJ(əy) 1mɈ0Y \At1L՜|Δ2NV9~bÙ093yqP7&dj1=D.~Z& "G+oJ1T垓1 =& P—Iɇu8sj Q^يnb@q.|U4 LK`8=mQSN{ &\e ʝl ~晦6 *b) -Tds!/7HN[C Wl,kcalp1CS"~SLmذ=&疓r^ 4˚L3V Ļ{89` ILIlB2DP(C@ McR>6\!f(R35@b|c7>/"2LI SP1*Ș M-3,c0\]-8-3*G(j7U ̘5݀X1[.xRL"rY%_7Ib0dDD{3c>]2gAyX{1_"e0k >dT?M2lSG7,](pBݍ`CHS&#v>3G 59 l-Q911%fdDiu"z ع縩|!z ̆ԶXkDLdaG{m`[7e3/ 2C#@zDAwmy|*3uNEĄxS3teЫplK!؍.>D))fLa~Y%zRk1&å~G .ˆ7;4t|*F(fff4F3l/jIyvUvvgG *IdzD?"303sb~0HP24|;ĐF;4"rcl/94Opv9fg)@x<z'9PqSQl?ӻ¶e䥕Y.C }B;n( +bH&1 N䠘]~Ռg_Wr8}Ug{ӮObm3G߽+)Ψ}o1?'`d53'3TmBQbe4ࣅ 3R(ў_vqzO/Ug'wn~Dl+s6[LdɌR9mS,NͶ"l'4S3 T ˴S1'GrH@ƌX2T^>^xWA/g{-z+0cLgcV۴R̰Zq;f<ߝu+ק?kjn`@Dƿc(3l|n(2^)3 ?NcUHW.|ь?jY.:Vcg1 S d 4|Cto 94Sg^r̰M.7T΃,Њh4RAXNEhR{iz9G[4?wC*|ckiAI6czI<ǨcJ§_O11[غ7ͼ: p<1F |!D͗.E tҤL9_4TK39]2o6|ec P0 }>82-+֕+Z]&21b<:K0las,߆bgphxEQlxIsńͯ|؏fvJ S9aƳon~f'p$en2%c)&W-6 {YKv2s Wh YԋS,{lR, L&L&Fۤ)2+Ƙ(Y6TH+-|)p#SVfru*ǿig_wer,i($Й2\fP#2_3 W c.agQOQy6Cߛptpa@[}~{@zIRc;6 x!6M`R%rޢ-wv罄ƪc趩drsd @k`kFO<=72}9z~p'z[3+MS93M}sg-Nnn079g4k&cpke:`ʌ7UuC: 73`p` 0j"4@crS 3`6WQfmM~.N~&XjjfnYN{b<  ^J(?~)>bvy-jwoBd:p+_`~^d&d8右4X|qlxx2.00`ԲsqG{l5` S\9/肺ʮKC*~?g[9cR>[ΌCz#J|0㋈og/oO [WX{轕y../L{ &pu]V5ZL4W9ƞJP$P1i%"GD8dYB;`D@MP&4)&DQ|`W_d?k SeDT? ˰xAG[R(BLI}~Zk^ {y4; _ج^9ئ{ox]t^Pf+1Ň V5k\l,>Q[xv8d&k7/9❔q8G \TEqꄙ!jIQ38b2#,k  szy~(lXCS{l&3ohkX݆{utyEnAr/xiTU48l,>];|8L`O\9ld XtѶd6bnWa(pJ@nr'gp 4޻O0ܙiH8do('D?@X+}<{Gag:rǛiŃ\.[-Z/ktxwM TT|7\Ĺ-z= Srˀ%`4X Sdc_2w;pPS&#gd::H=TB3?rysD3R:6NU z)A3/YOSK ^l^oKE\.V>:y׾Yv,е,Cœ5h5IZ3wLDXñ`TeƂY7Sb|} kKQBc ׄj?hQ0b2 2,W_ݟ=Jd~Dq,#w'+FN>|n2LKoNVUsU+OTa/I;?;yJ?Oh7e[-|HcP(*h`KTb{XFʙb|4?!vǎ"={L1xFbwAuz;Ha4@γ$yd\b\5^XҢ5˫ /'tQPJ͔H" Ffkvo9pa0H;tMx]sd^)&{Ug'\qlAVlD;%(+4WĿM5t%=w/XZ N2;ljhXz*^bOYg(YyЀQ;3lqp8sã!>Kb# UU2@y "0ĸ25 wq>8w)`Y7!] VIOI[C!Li;'>0O_%S{nsh GwT~`2ryU˺X,PU_Tx$Tq7Zs6srs`,qq9R`;@(`r2p 0.@o4~unr{ |c\6 ~8%{!*U[FuE5#~1=]W}NQr ʙ$.4_{ S7e`3۰'wD!k?VWet>e:n|bgb[׸Z7%'З rE &a7G`>DKH$"qwe<2 ;Lq 2:W1;fTnt8i?'PbCw{Y<)RQ+Y>Ko)Bj@LURms2f]q?WN;f~{"ޯM]7P0}d2tާrlU֊F t%>H3DoşVnVkˣ4D80O7`q, c&d֑;E*w5vYmNa7dbc o5k/ o(I,KwN~W0e|zW/KXx}`Q+I@ #ƢiРS(X7xZp. I7r/Źt=#gk3Ny IDATgu(Caf󡘚CDRa͇j e"xchO5*GV[)jlVԯ=RBILU㋋3˽26 ܀soa 6N+{ y>3ބ @"R.upVcBrM9}m<8b^׸l{޹ P.6c}IPn<>r9FE8Cst\w&&mߓ~J )uUBU VU Q60Ombb#rY$&`pa1aE2(@'naphBwϚfyL&MQFA o՟x钡0as~S HWdvytnkb F?2@uOk\q)H1hmjcrC3PC`I ~gk0xi.B "5;\#DZ;C2vhpDK4u6RBdB61^H "c4,hm-W]"ns۠|(&Lv:`T0:c-^_xqݐ<ۄQqNdpz`(,8 ?sTExFf@x=x ~"'7I pᅂ8os=_b3 Z+M% p/58$>F$%]墜2-5]bzS^AribG5>V9E׀]}jռXmLm1dOīT`E󄟹{@؇?dV×x /< h1q^j:C/!`uX!.^f#))J\m1p1S 2ʒ~bvw"?s=mr 0^o)3i䵡8ncnFX]tsNSpێ\]-Nt"1;XVk. 4(UU^6֗2ajc0a;?07+8N!WA+s4Z=^P,31j-;2We3T'c2EH5UM򫦜`0*x g c? mAb[Qۢ aEJ]_(ƸN$=7 i$ mRXJ4[3^܏U/Շ=ҁ)k+@up\/[AvҴUrl[Z|wTlRͫ!"ن指DYipH|^BAVR,v]u¶J~gPӦ]u3!R mS5bciK"Ö{>XuF`6`9`،I3S2$٦hb;cvC4CGld(&i~"x_UMtQhXu Jpes;|kT:s%>I#\%}h~d x:Xθ`y o m0Qdf4E0.yrU \/d|a;uc-^L^'s͌?A[77:jylrbhhM䠴EݜHp7AGc%z~RVv)W6(}͌A(H_|TX}R,QIC5Fja>6~ y3^E[U.vOB`;lT;kզ]K"+x-CNE&B3U3l MP?3ot5 Bk* I)@>eҩܺ?ؾ)PLf_p)?W ocz.*4t~Su7daw667aM)$ ~KDڴ\M\5t$M OPnD Z~1jX1c`U9W N յ` 0x vh\$ަ%qQ[ˌD^gx9eagʠ$ y1U7P7jZAr0x%[gFZnqH6`~ 3.YVskbp.{  a #0/as84el/ U3ҧW[?E^ z$i۪v5ѷі4<ӞU6ژvp/'A'F8aoA_ׁ7V0t< s 2TKȶs>&0;{Iu[SEG[p8f^$7@N`H!e }صep_r2>-U 8^ND>FVb2{ /o09wŠq[BMaeKSAآ~ ϘkG&3zûi [`34Lj$-A`믘r|EאPKU̢z(d8߮/ S_Z7bJ[₵Ԗ-{x ."3 ?G%.wG[`Q)U,-cECurEyPUAbel>v92ŧ: CsV!o>"uf);-=󱳀m6X"m۶99s3XV (w뱅$,5s8 6aV+-@/1/~Mnd _gI݅=vP1*R* +ΔX(`L%Yk^Gdxl_;1q7.Q6g-x]S A)`U`[)ɘ=/N}kH\侰U~ t'&hqW:9Pw\Ͻ$fQ*")bb5q~~٢O)㝇TWh:RC%>^P5xi><HU3F2>`x7ݴjxČ2Mg x=pr{_FMנJ/H>Ooň+d QMP_H}s@;hG)'aσ}eAdf*$M4F z]Ԥd 2<F?jLk5m#f\~?LF:SDI-ED8%pmۮ =+I19;vuvMF{qɶ=ӈm70ɮy<͞?PD6 ]M|m+C-(A Pk7n؅3eXn[X(cC#b]jP;‘s7ٚ 61wS;֮P5;pΛ+/] xпKy.Uep$ Z4^&/O<%V~`@W*r6S )5C*̌OckfE:z9ff*'1'1.r2 `  D  s}L> ED *N7LcۖLS!V)vLg]em u?>fl^Ww T>vJ0P6>4Oa92yPb"cJ1f2#f6Fd>-K1^|'-J9T@9 M%{Ɍ7,ū%x ƠnR>`L75R+Xt;Z8a6ȢU-Njr ,. ncF{ȇ{Yl4wA<`KH (TF/okEWPgj::m45jH\ sͺ!?3Tnp߄US0c` {=o0b".{E>.0A6!p &T4 N b 1q"o3C(J%I3jD ^ )ubfjҙF^WPrZ+ 1^JE `V14kLКRV+,]7M$'[R lJ;\nXpnXm kq^QȘ ϟhaHlʤcd'cŠCs9SirؓO96X[@ ?`*fVH۾cQgŒ Le( ZX!UMaD{ )=s{A%jj6(S\_H o{lSMj\ 5^.hBqdiMl935D $658"LE}Y:gza7#:Y\d'LA֐;;)a|$l̍.2Ts|8 6K't#L3q05ì ˬT0)$5?G0,3&İP55!KՊ 2|a*0oBZ7׶nNA.>4m$1y;Wdɽ۾.6e#mBDʗZlse/jL`ch߱`F\๋([ -Mxl=MѤY% n%FIyzUrZ\pϓ'Nח3#mS!xbim$?j29&_D[ٍVShïo}σoG[ &-*$? uM BȮ BC1 L 3s~11P7~moX9ud66RyЇL1W|j7sg,\7çN:be O +( X?!0*r3Sejʫ5B08"Z :hk;td)񱷝k>k'#.\saS0:qqXYN/D,K|"kFipV5z g-Esu$~(iEC5BF̸I Ov>9U5 s=HČPn!#n2{lWpSE>MX.6EhJDk"oQLev̍/Ϫd۴/&SdE0d|A64dȡS,7.cSY:c' \n6A~ ;b3?0J +.chBF,Ea< 4Muzhʩ 0W0)L9&'33 V\jֶ !ێ:1?S`&(kUN/lq3=/dfR2L8ꩢ%X؜. M5jUua\4",e^[x$3.p=bX(aʭK=vhFRbx:u56PEۮik!#qS,fXz&++qXQfCsg'̮^rep}ʇ4SvjtmD IDATyF b໭Nb^%ΝCM E fqĮYnWȔ 91NbSn<˄gxXNP^* ȡ9LAȑT`t6MkjR9f[a7PvK,N>@YʸpS!0du( Q۶Q [|5BfFgfŚ,'8ƺRP-3t,é(D<ݨ #Ik@(G,yB  m8q6N WgϲA)o_VJs*vC>`|e5bZۮmL&؝u`sBŬnGׇjf$%6z 3U}c]\$XgkC (ƭ,:h_MlXoOwlFUS43GwNe"~ۄ&3YRD! 1T[ YЧ`=wۻƠ4II/2ze,xIr2.\`IG6L9yי0!ُ{+k8\i@U~NE;c!D] t#/JXwra PP{N<`&MQu>^nOX'KdW t$ Ʒp]?^o@%DeAeaԣo{C?}B5@t3mGMȫZl4vξJ@ce+,bWTo1jd _wP)mI 9%&yUO1E%nR(ZMnvmo"VvwMҴ~PBIR+{ CPʀT7us1g %jzUTaGi""Na2"\XA&`\Wf饫EZEt~4#q7w`(^sPv~(E}ױ@҆~,𢳰xx±Tɮ0g>n%Y<(9>510 y@"W ag#bEv:AjcBK3(!`21}VG8ϯWHq4XjO#r! kf|, (uR2UY"s;&9âm ΂VV.$MJ{ BL)RL)=s\Ef"߯Cu5Φ29S u0.q.ܿ> 5=zvRlo3ƽY@<Z`P9= ux Jb1؞L)kV zȆIrx3P8dڂ\0;@%gAi*PomUAƷ 5yn@ ]b[H٪R#~.ys z bx!z7P\bJ0A{:% nUi4H)pSdM|("’f\VϷX[ NP0x{R(w6egPsT*9D²+f]msNH +*ˆ_" fӱgͮa񮁇  AE@:*l7J8`2TN椔"Q9Nz=39mVᓬ7֜ ^Al$5e} p4>D•v.bym?gT(x oz*X7 EcbXʀ4f~V65dc@X제Um0me^bQA84>" \A]`]8O@EO@c9J| ߶iALp-jWΠfeo@OlI'ZZhWP< =x1'E,Lvçk8>tvnp.\YdiY(ۺ M "|''1eAAB1_,kPu6;\t 0.Q3wʛ6?``N 3fJae)r<)Р [oKgxK˙CM,DY XjaVzӁ]*T.`r oy-؉lT|tQQ9v3~;!P9_l.gB=h>Ÿ(-W\'uٖƄDDzn/,>*^U]*99]Rolaw/oz,W-v].fVR> 2OŖ"PNBhie,.| _qe U&u&fۊnr,0KA;nDJg>t31Nd "vAuNوaH#f"(T4:[9_CHQYS~8vhsx.n'jp?kdh@&9ͺM|ަJ&#;(rR3R)bx@ lJ=C`A[;bUNf H6>/mv8pKDMY*lhHcA)UQ,Zpڤ{ Ldo4%A٬&YvHIҧؔx_p),,(ny;ocTw >K0Y qų<-@JlV5TU(]:3 UN 1 [#[8n[]Q7O~ ZA:.Llם_u5nOetQSIWYk7"01{.L΢R {ve`\}^L@sS%%B$by2!;3,WTLu% րP0]+` yW3"PJ s#)hk$)OIˌcc^bf?S1?$7?c,v>gt-3{Lԉ6 wӭɑ05% ajjPGM&;SsMMdJJFDYF{]n!+g8PVB> b45k Uk]wv '–^H]s[1]u* 嫀Z(o*p/ ǀJ';- :BesƲ5Q")ve4SV =&6uq;%xs-uvk# L8։rQ,O4gfΤY+w:ps<](z=;S˵ Du4̈p#p .lvpJy|Nn`1mOQ=#>RLSx(&^5v6gϒ)3Ls!*xڈuʽ3`L( js8}.]-lQ2S c2-oLjvqBZPUSëSEL$u\PEQ@)fAٻ3cXp~ͰDq 7Գl 3\Z"} p\)1e]j+R 7J\BU"v:DK9%{pF~'h EdK@5}8Ƌ (ބa4yɁY)[خng}lV+gPjRQκ5/f1b]A |ǘMnt @g!U8[)Za='X@Ol>GlՃ 7A(+; <$QJ| @W rH9H1*RJ)jKl(B>Ρ9ເzH4d\AmΜ#1`'$:35_fP/ODP]62-(Nx`씔ykv· !٫SPE|=,1:?gӜDJ+4AWsݺm#4ƚ 1a;'c>\PU#*dv?n"߻߇ 4 Bz܃d6y' G@7Foq159WȾޮD՗x 'Z_~!4}5+ʂ\M.r24g] J,Xgnxp1R'I ϻN-9Œ*0QnXD0JT\)w8au=o"b;3PW46{b[[^Ե[9!]4==pBꌆ<ǀPަԫb20evC" ^&RŔmhs2 vAE2b~{'X^fW]NoDtpLȧIy֛ Z ,avY/ vrH!=l3B6 NJn?}¿@ IDAT)P {ͯR*IlnMW)"%kJΡ2&ת{;vxoB0:NQ@(MT[,v!c6oQ1R188dg+L.l?gا$Jk I9l;`6߯lӒ".)qG @1B׈ߺ6}D<~"#D"vzYl*c:02+!flfu>%3*5T@8P~(2owVB%}kmYi l`wBL?>5l)~# Nw#Rռ(#29Ծ4ݥlh G%ģHN;8Ӱ/ B 貫xƒA@l;RECX$Aw{&: ,M`^^RWRU$'cv/"_fxG6avBQc[gpXd3 `v/7nH鉨Ju274"Nrgq.&vߩp<49/R-$JaLNߗyEX p 5pfnMD'P-|=`d uWe ~DJmJ^LєRHfτSNh9U I-޵/4?A%B2K]Z-O_.fLQ.,@r p3mӎ;0mY) \f}Yti RcY.S`ޖP4 e@ :4ay1\J!% 2V~7"PRg#a.ML``׈} "UBQ۾h҂ 0uքTsvlo72 l!{]`S\tߙ$.¤X##ߠ{7˅ݏ|$)!9kfX?ďUFە!`N(I͆p<7Ό kYѮ6DJ RWFzkv+/y% '2Bk BkNJ Qk9wV|>,igf~_96{~5l.`0M)Kk)#;dh5n.xL.0K%6l3%3p䍼*qTv}%b@Scf''p,yƴ.5$6z7 +C9rD$bMl!Q$Թ\-GLeDvO 7P!4w?h:QƋ]ak0b"!r{7]΄(uirʄ`R9|(u~@6 ,:J0[lab!) +{DY sr) DT!${Ej;3 .-ybN1.]6[,v2fP͔D 4iH ˉ?`na3O|觙=0{PcTЌ*Mq:3̂*A?!^<.TH.fD!_Ϙb9;WJ#h %w y`a3ǟ[~>M({p `) 3VJA\RrL˔ϱM0^lj\|ðvS#jaTRHE/?HTg} ;@\pbӜH 2sɝW*){aW(ctg"LL(8gtVwt{e8ߖ5 Nyj0cnaa6O_] Y\0`,naÎ $Rl\+aeX<)w'>7cx?&e-J«6=ڙTE lZ6i_Ɛ8LUAl`VH}l Lj/ǂQ~!>n aCP.jYWqϥ`BjGkkݢ~iM[~ )fk?Z` "a։OY P:_̷*MҿNcP KU]HƓe0~0Xtˎ WXUgPS? dIb +lW/*0'%yѳO%ewwe8ע٤=Fҏ ;R @/pCQ*`B:Ɓ`Ioy$@6g_BLT!MlO!بʭd >gkaj*!6e,iyUPc9l{|nOZ0 \ޤ~a|ZeaNp[Bϊ*'N#XVl Kw3K8z%3R*MfRްߧ"BFaJZ7b MKT_+\Fu9e`wkA9Qgݽ lށ3mm^,oF l7´TBy}TFؙKJaa*;jnF0]3B,bƮ!Hpً$KZޏ`okBt` w"' n.MN]f̟T>Y)J(PFO{t;~"g,Яpx#](Z"jz-ҙ[605y>_BID%+6w1 P( +0)io9ZB rlW1YbKf.MIk!`l &8=O8]ݺT_2^p<;"fs4zSؗ0I)IX` - Cg/mxCq33`%+'M`HYSa[k `]gB/JSU&f]9A?Yj"Xh̀|%&`FlBd]=FTߩ@a5LV~0;L:oZ./:-Odvm`fE (D%f4>`bS 2 >dBI:fs#pݭWޣ~ܮY*mR.PrW6f.枯2ϧ2v.tx9r*ÍvB߅Elq~C跏p93"MMns1 C"еQp Ӫ?Fƚ2q:Ş'+ 1ߣ752k L/Θz1)~a ^ 3s‘8]& ? #Igp.x?1Ƅ#(1SpK8"r|>xSahv7 a\>ʰaI9bF+1ҩmc؏Lw!fQNq2}0#8Ab`12rc1؄!9X2PN.X?#c?%lwyຍ5SQd!' c?z3]!?OfdPs* ۳uܡ!nSŲj[ƀSd9o(fAD 1V\b1LS3sZ 2#6`I X+ci.@:c0;!9]3RvaV*\.L@*f*.x?mtha(֗ۈxs.@QbH7*`o" clQ*ʣH1`g@h`"نҎfۀH1 ֍@ZcCBpC`.6d"fb"@C?P2W\cRZ1VW SvJZ0w3n`( 0;33Vn& a)cggVKmjLcHy· x)HsC3'sfw j*\#ιp{씀 `.ff&N邛?D U DLS$][#Wv֥ JfL!dȧ|`H(fN\j-_/S F|fÞtG怺x~}M b@@)x b5PzAxt`;k-xQ)'<x;*@z:"} v?a/ +7HrH/9k~.>fyLYLXh.B_0㟱_tfu1`f(LgNJc %=6|""jzI]%vlunu>gR=^Z~|#|- xRHE_ֿfuDkDLɡ,1md=`Rs>Z1NCfh,ȭ׬+.W˟f~Y\s~Cvy6Y>P|{y9 IHl6˳9.D1- |x_0wR9gsV:X~f4yKӣG>N~Y-Oocf]JI; Z)}ɿĭN[e0$8+C Cj%"ǔjIȗcHɵgK>'_dg?Ѭ.W'ʜ7[X6|L)|~t~]Q15U)?5Ù&AJ79M=]a>zAGJ; |Hhsk?_EvmVE}~(å*.R}5)IpmZ~@~ ʃc6o cXj(29 PN#%IN|@ fuxm6/o+/%,;7ќf'&RJAk t']A rέ$[L'LP&]j.qsw`;\`ō.ɘ4L1Yc°NnH6$=?OWD쮂5O:~nq Å@EQ_SJ p9S^@8c =J&L2 )ɋ(A09|lY ץw]cXjL8"e/  "1]_'u0+f[/sΛ[\<(EQlo*bOhjJ ($(HR幪~ {q}fFRĤ| x9FտK.jb~#%X{XR)΃m2ec<"ZT uk}B1l)%?)?rژJhyR˘ ƻ[?eNҀ35S GͮT5}ˁ;fyխ`&AUUUg2YNNs1 jC[ʴ0>sS8 1R@nȔL 1C~{x ۖOv 4'U;Կa8X] NԟL& nHS1<}IMDs\eNf͓ȭ1QkP 7r~mXhc9}x9TL~>@q:׬:֏fpn>c6=ЕeT3ce*ޖ{,\"mc T1m|ٟVi==3W/\NU{ ]x笠:?Zā+{t0glV.c[! _)53*kq8#L8tSJnj q_A``aE9qp 1[s-0BU9{EMf,Wϖ#B Cacl{'OaØFD1:?=Q>gR?pAvh%V߀*LRD18yf}7&a@ɓsup20emv 9wD0.p px5њ92q* ;&{v;sRÆc91|!3$@lkTꍿCJ:f$nuؓ׳Q))HЧ_5M_BYGÓq2֡Z0ktF-[?&Y=`Ōx?[`4ΐRa$P1YP5o7`b|ϋ5x+;!T!ߨ(&D8Jjz#}X{t /x (RDBܛ[1ql|p1f(@[&DabsdK"1p &'PP"md҂-g>]8baoh,cUQ"xq8b@}6m˳Yt.u@;p \Ӥ4`\tbڹT(&z.k5JWfuHzOux_7^L9` "&gOkDһ J9 xh >obzjM04%cӵ 0q2?Qp"EYM1_̆Y,L`("@xϐŒs5p2],-NV[#J/\sqi9FЌݥ`1^.$?o6341tq@jHux/׋ͻ<~$dato'E4MjQ5cY:g-L & v==w0p5p6ǫ%[Ǩ}V"HgEQSh(81ЉLʜ6OP>_KصB ӷBڴ,M˪;\]XV0Mn<Ø0o>R(e@ሉ ];H$YߋY3T ’NfL!3|ͳqr/c&4~o-^ΜTBTH?$Xm2 T/}yӿd~4-u/IG=3LyBPL=_N./0!m-E"% &jLad-9,Tߙ,HZ Ȁ576,md'"^hnN?ʃojۃ[!wҠ#"TUf:o^@9c̚Vl]e/,\?Nri(: 4ʩuI:K:"R_a[# 8Ďo{XN#rd\C:y<_AgU 7$KPUU(?AW6\5b&,{D9G<0`4)[)N8g3jjSǼBH,TY׬cwAihb`i[ c&ho1ԟ6J*@#9fgsx8=J?|9`vhfǶA}v& -Cdu K%ds7 F%-CiKƢs,nkӼXRa)CAQ1p+Dx WXaƌ TSED {@/eD_ !iz`怛-o7bN%W%DKuz޷̕!CjC2a5ۑ*O>3w Xzw^qrGGGkBg:*XVX.౺g5.[,Z_d0S8&w0APCXZ`Œ+ ܀ \#m_~4k12 ~x-2`] HĪ:o/"^ g7f]ko#$89 )U]{_^-9ovsQyfe̼ ˦qcU64E9/7aG 8%6[r۔"*/8q &Ǒa0Zp4Cg=Y9JW@{Ce=< U)P}vqF[>OηǦ '7ozxP.Y]n\5%u- }pއEjRҚw;C6sbE@ gEP{qhS^#lzWa3Pі)U`m CJ.]hf${VMf¦^r52~41FlZwgl5XY""l믙j{ppx-3"T&mBcF סpthdb|`1VDQlE41T K2oO >48ت~[ `%YV@yE|*?2X S0~0a. I,Υ8)dM$nr }0lo' C:<Ӝ6f8EH΄ӟxhcuYKn3LBsz ^܎/0e=!xKA AVI) +lg`,(žbiVcL"&3~30.0}S"1f m'bA|+bURq1E]k0ۄ")~ &M* MՀ?6270º,ѰU(EBQ>" 34~TD6jU9Lt9qd*” zCWDTzE6@y,t ,:<2]6xʸ׽MhZaҲ~3#6=r1\ܶ1\2lܮ<   , ,A?es.wBxMR3b#^xJ,YCSfw67w#><>'>HNsj3[MVdfz {~\KAЁz݆/";(^MCw /W ~)2 wa,2?Ƴи˴)Jnp&3Hu_s}4WIn%&a|P d1pBp S%\0'L+S#?F6bSm [z muro.J9@ &]5/ y2Jt&&aXK$C]¯OSQu͔ "l zzA"R2Bs72$QmUSTqpf^98-/DK>^.L }0٘ɽRXO fLm[ac XP1p,>|__BT,(N?YTh{glBٚlj_G#"E(*ŽQ3G2v/gNV%ΥgsUTd9^G̘j moK`/vB5Mk -5nzrmfR wwa5ml.2'<b=ú6"B SPTx6"]BaWi23. ^u7>%=n(v 3gW/G4!"f&ؒGXtC.kZE/<`&g \*u' fi=ߕõ3{s-V{:ák-sp0eh,J\%qvЉ.oSJo{dpS2 +sDp̢(jk擤G'2{BL(S;n05SK˅ Qm _ZٮԲ́73S!<9|;*)R7kdq8󌍳 a_ESpk=zk*R37{4M)%L"nL]:71idb*y+ W#iṶFNvvt\7OXd駰Cu܉4*ؐ˙WA( (qT+q3"„˖af| ^]9,C(F*L[%Ug"Csn9FfLy峅UF%G~z~[rvmڌC/v'}99NPփcGk.:mIf|,~.MT*5<ؠO0WQ]us"Yl.m#!4Z[xMI1*lH sOrӐ#ʐLʤ圏eyw!pR;Jr9G5W,^] KЅ_.k7AxM![|X1#TA  ~%i&=8`"pnS .gn?*@Z ̔ɶsD* ߁Ln 0^G1j&)1S(Y04/ a43YMM)H W'kơ\7O(|;Gd’? _Q 1%x[667jʗ8E16& ji!e5A*C/2PQ9S f)ԇ #.x`dٔZ) L]%^`0;p킬x!H!9w؝* 2u1ӱ jӼ~J|K\ %80} ]F;h iC \|  WIe2 ,fb?GJ:KU\*~ +5QLٻ*l[iۼڮ$g0d՜?}-lKY(|ޏkujD -ecjؔ6 '‘0yq1%(|4"5-{퓄io&\&F$%Bjx!@(ƣAsA#۩Peqw؎]+D2|43c#;scqOZnq6z]0\`>Y&k| fDʈ^`C2@]K)$ qU8lh&خêqQ%7!O @ ffLh{ c h20YS-`{-M` `-fd:|wSa7$pq[f7?n#9$0Q6n.L=I~^wdsa)ccQ.GڜUa "|)Q8C%re 0tY$=RrkwhI6eW/w" &<{UhriN>,CM.c]/I9(o^$a*R11AԢV>ÄRe#%%'T)Zhߗ]}Ln}=6Dä # `&vgHTJnmǰv4U{k_ Cq< fr2U(uccqtM#Tn\.xoj^WdUpo/)ccMT1(0 UD؅(6cDX]KE icȟe߁Ţ{o;b[_B HW@lpiH6IET#橓H9v ҝ}#"zD ;m"$޷` ;Wyߎ謭O} ݚ_Mtbrl\DG0#$,5'&,P`|_M^#Ͳah;=G <Uxw %T%S9)S4Lg )p&,!އ4 GE*@?6Zc\RFTtK0~.Iى74ܽ=#w$ľwD^Υ]l6բDZ")JDIeacmXcÀ'aÀa@3t!Sh(b7®:u{/?D+y:Hd3JNkI3MjϾQJR mG "3'\-[s؆;~ds{Sbuy~ecfbBmEn `pBzBl ,-Xe71i7ӡӉ: ;fƳ1*!R'v6y.}N93Yn ]@y|E  *θe;3^*8^йnzHZS2ڤ QpmL1NNLv=g`5KfTւpV k70~+ wȽ$vQ):Qa#Bэ[\WdF|"K !p=+d32nzXqŻ_MKߎA̸qbNqgl˜-yj|+#."7*'DiE})XG0o[K6 IDATC/)\j:Qt718ǔ}`"6UP<4mn#%{Q2a&g;1pGT(7S ls<Wg\ɽ"&gǀƳ]Y S'NE[<5/7B<%UЫS3Ўbq7ti9cnT0`<3e+⌥G w!湮ђC hrc_,̏ #1ujX쨙~ խc2@R {Jp"gƻq^+| SR/ĕ+pNǀs hʿ]!i9?σp%b!r@ yS8&r~@DHy|lwxq~Z~"scDz]lWߵQ#Ggū0$}ˑvS%P)] Gn7{`kq zg2x"B 2ԕ& 503jjX$X/!":v:/xeBK*tܢa~@:U Dz @-0ޥ/xO68;nאyʘK蕮.ݴ#FjN우 CbbJ\_dKa1g챱:DEyH[6JW;lx&ZXxXʗKyc!&I5>0Q b ԶqqO{oaն`R,v F =$'~4q)w\ΥϨ<}?=mf({gϢԚilܑyΈ LsĎ)$?l”))/ H Xěh 3[dI"K\1` &B 9/X<3^Ns wPFZ3&q >,M OIp[rDz:cqe5+"S'SRfE9TG0R},ȿ4NP#(? y'*~^PLic}{LDjܸ,1̚d|:fGՔrl 3Wش "NsmMtY,(TC]9"P3ɸh-V6&VjJyQo`Jaac1IɯøƊ2CVpON)Rj7.d\349cM8h&Xr, ;B ]@{-Y$oLY(?$cS=_J72 ~1X:jP& ^sf~sɝWq@d~`&d.\ y !bG'hxwv]$ov&MpP ܫJ(x^|]Z 2$eW8|־xːiKZ{K0E]v1P^_w쇙p(Ԕ,J1%S evrljP^ָ\qb*b-q/։o_ذac>B"ܿ ]7>-sJb_/TxBːYm"{OR1l)K 7pSCo[fftѫPr, 5# Uc 8i@ -;`^7[2rca٭}!=m)PGʴtLcm;;c*icDȷ4G?3"xsVB߽ Q`) GQK1EfQ ehdH5C*fc9?6;J[) Fp9g;`9I  >.\Er i6q0A%;wߛV#d-Įk>3ѩD`pp Bvuol'| υ& u.]v0VooBϏpbMbX1K bs35Cҷ}uל֐&cAV"+e3bJi[R;4LMĻn.XB C>.͐iإ`LUX7,7n^ףa,e:A3t /:Yz,%]bNXv>^,K%5:[vI0-3_ J#؉_{ix~3:Jy7HdE0}HնQS)Cl61O[OV1&]_ƦBjTWph@`P s3@aDbFwUH-P9i?>8K}@XO0af[*U*烥a QAx2@}EymQĿӯ]q]rsJ,C ZiC!5dVs}yW 'Zդr2E)3S^.;BaIC٥B!&re.a9[uw^yi]-5rza۾^DaLG&1oqұ^$h Νݹڼ=bJ OmTʩ GfJ l$U̘pLE!@3NbLbzuP //AdK9qcCxj2=M|CfkbjXm׾&4<RPtnyE{L,vJ{̔b6ͬ7k`N d: '>Hv_Ŋ˻nyuV}=yd˞*M?O/e _Y`QiM3x 4L!pwL(c}#Y6xv;3%Wӟ{Fq7!6ldf&H rE:3c,T9in5uhnӍ0pΣ5R1ޏɌ7qJ Js_]bc 9S0S,cc!3xl/e—%@^&oVch̙0{WݻxP4hhr}dc!ZDXf u'uΫۼ:5M@vejRb!u3j+!ǘ1eGcZ(܄u[UX%kR#cb_dK\2&䐞ݫPVk!q%KGCNJ4te}N?bx+fD9P7f`Ġ( sbٱK"|/F. ѻ64ςy evcWdŰXHhLe~"1"bQb$G3dGc^# xq=^-^ H0}S#1 B 3~MzY&!2nlqpͤQKp| sTBy„_@)-x~[E+]_,\]! ZsskEc ѩ9e\Dﱅa HzEhٷk s k0dւ+~L^l?Ihω(N^__? lz Sw PYc{jeNt3m"_p+ *TS]6lg;9۱ߪ_p,ң|&@J7Q8'=371"^H+;t'帻mWP9;b2069ne69QHLDÌ[l:=s0vk¡=6^yrg07穀!?Kf9nhƋnbw ;h*J]طN0\tKT4xr!?Aa ჆y̱I\=lfN0֒.X fsJ""Xk)gx !ks/r -^`K0L2d*ƾ֨;|!~ |97mܯGAk&%Qq ]D O>Ъ{Lj4qh*3FgO:MTLdvDj@hKuZԘf@$iz mӫw.0!@8kXۥJ_d_|uBnsގŀV}g`嗂VµY W'v2\!79ŖoMΤ>uYMhrxD,B{VhV$c֗b1eqBoh=)/<񰤒Mswx4q e3L+D6M^=xKwйbfv>ڄRO!-h!1r冯:DfߖB +뵌~6&@q0(u94А%K0 gCLz9Ƨ%9/רlA'E? ։'ARlNvrƾ>/*h\KBy%QsI\-XcZ I),rBtBdFdH[dLլ_,g`FfӲ.lcyl%9*7ŭ$LJjS{nK'8BA۾ 6\QPΧ[@|TYB It]SS (R 0?//Aޝw <L82`SMalA6 +4 $3ݟTˇK{Jv=<(EU>,`|u6Ee]-:M*7c#\{ns=\ N?̥[09KhWR6cbI3y`JRPR~MԁZ&uJSNAdHLJMn*7Ʌ 9?/=jMQzyVݮ_x/L! EH*hK|~K4oezH4 |߻hňf;=bAGpIj^Y#0v)tF]:| I1?06L +P92; 7+b>7࠮!QNh!sGxl@Q5Ɔϐk0ޏTY!b _1ql3I}+3#Vʪ )P,/E. Q1ɰ;XS0M"'{֗2WKyx.D![Q09]ҸZr#m0n -CwInU9/pJza *̔@BiaU=|buTL@_uZtk,v\~,M  iks3 1%dc0hGmͶx*u -4ͤYb@\=vɌݯ_a^-L`dBP@&?¯0QYr ֝'f|-@]d䌇 N[+B+ bK`Z+5DŽ ƈ& *B<l7N47ˆٌl1Wܘv$ZJ' \v{xMglX7aY7[Ix ^[[L..3&D8f|,~-?‌mhmZd7% ir,cx=:XD>B5lju]AX< ۥ*l%8*`cL9'zRQNh2`c f~ W-z[C ?z]kPE"ZǍ1"r0McA'bȂmhy>00"uA'W;ӑ֙3c0n"㖥X\W [oK,C ]*:ɔB,Wa5\P f p(\}r IDAT.Srj,[Gȍ@NT|J.#8_奿3GϾDLh3:3܀CB/NiY/>}M O p_U[1[AE?D@ |Ǯ \N7bD*|KրNfo w':IRNwf%WfT(Cha)t?JS3KNy01bDhavPSyS'""2 c;!dd uކ]DzY(3F|D f!L4b:Ѕr Y⣲8"%<pn?5N  2%G,*X 3B(2Vw `ALtoJdt=2Ft<?s!f%Ls)[O7b4]:veSS1KGp=̙"-jPa{FCkZ 7TEekI9Kpfb7}u+|7C#m\rKv_JJw &CBH%*rTbL`T=5$V5yhsl(cTN2b^(k:Q{N8-vhqD3^K؉џQ6qe7?n^J{tEC 246XUWpՅ /U&JPʧf> WFǦj%O,'*;EAR8%S|DdNҁ&'U9zkʼL6~x73@瞁N}+5OFRs$OInjvg V!;ԙqhҗH34[̤ EEc>¦4W]&x)NHAMX0at8_eV-DB&j\*vD]Bs[)x mvx s% n dҴOIA$ҝ{Ar-Nogc?q+[}xp.M p| _'R 6+:U^-bz-Mcr # \1]êK!8U>x^,NӞGet^|H-:DR- R$(1b:#c׽Z|n _ؕwM>60;&7[SEYmx^<=62M&%3U\[B 8;(tNdSaْ/ ~,>FeajF1񊅘WʰDoKlHc!  Xk4Ғ!7釉dmݫ5N7v~fQOw+03Q7 >bA2Ua Cޘis_[v76"" | lP,Я4w"~gk"P*]ZlL\\2dTLT{L2 QKv4)Jaa}Crn0mf=t+=;|A]"q¨X+7C̼cɌ}{no +;=pKb=&68ftvR.%Ldѯ0+\^_{޽Nx ԈB|:PX5nIa8;Bo-טp}yμ7Gݢlf0cx-ŀSUZn&۴xS="X8,%08"!3S4Ψg7[%ܶ3h'2#p=M1 ^!NV+y}%"(z%BrBz {CD$X|ϋv$+B 27ԈKҟyGϽb&CKju[l4|2,{c ʲ\qX\c]"Z+K^(RmN2ړ`i] $1bbʶ a%ؿD1 LRb+A74"@a]a+C"˘bv*[0=J8i'CS-` cd.i]2ErM\wblVmMg:')ĒTg钞,La'wUoUUd/y=p&lљҤA9N*| v{K)v=tׂM!@#kYleN9zisy)Sf0K22S#RcS>h.6V,_S]SUbʙSBxn%NS!̻{lRHd"[E&I#4=us.%NZR *;9i Sh$Rj(a%[}^r.cu.R,KPBH#TwB*X@ {t2MSQ>ByNTRLa繾zuEd "SPWSvÀ)p rܩwgK.})j]w0Qx`slDpB 3SbsS_;S3U7d^ǨGR]vъk_]i2dL c ]=j%Fc7\ gj35TDoշ,# ,W*w=FCȥxP5bKݖ*|.Fexb9P(gju-JbBTLn<̖ 5Oi2KwoebQR #v+aZx-"ƇV}I+AaC0IrZqBНsT~ڇۄ,_7\]]q8gcL14i;|rr@mRdSRsI8S,aw@XlryX/+W\C W{ī QQGp'*.L'th^}_;¯.06Ɂ)  PDca^)$5x* S^{]qƀh)nr& )c8j)X(Rf 0Nq=M$t;LU1?ܡXػTfrpDKn\A/ZPueAe{I_2$hTg<,#"ˤo'Hu%ɐiw!2UdLYUR#||Ib̧c%{nIB73ts-)gm KlF8*U:fs uH;Xlqp)9p}sMHV9!-)g!,Da)4C C<`{9G|̇8Ԍ.R'zؽV#lyt|9z3p~QoުMv>fKF]uSQcATQ/OV}/ٞ[?~y%~KfJ6Jl9s&ᕹ҈O&)HߜG{eR)3]H] 0$ #Kde"Ӷ4DD`m{ (RjK~^*EX(_-X/1Wr_ qaX~3lY?XauCx{B[/LvHjxVgT q^ֳgC ǥ{DGJm]OD>/GP( IJJ .CyD̑-c\_ΡYZ}, HL*g#&SI, s2>0g70>d156Xa|m`S,Z$82vG% p 9!KQ&LSrJ'#@:NUB@s9d!9O(e p+>2 X!+g1+Eu$"oQeb%%|˜`L;,\ZY p9g_ R]i_)5T*yQjoц$XF%J s"pB)1 R@c 8d! ,lC'6l{ 2`LM%∉hւaV3$DaQƇ}B|Im ΥOl B WJ-L01eǯH! E;>_`'UMXOI;4ZP?xlfM"X1s/[2O>QLhsTT)dݜ *,f 3W1'U9x\A/kp^ U Apu16!HƥRg ,1'xxU"8Y@alZ_ \ Q>\xn)E,IWrآF ! R|yz~eW>ZHt:OCJe*,f A@(E|T}k6YzCF`{xh ty] D"{DM)9 E?Ծ)e9`KI,U H3;ش,(&HL~xEB`s@:?SV/3buˢYocД/'Q%}FBg)x>3(P=Cm佈ioF q? {LܐK`;+h/"3|^-  6=袻 7 aād><+cN7j2W(q%KW跋SXExW-D+논,XKlœ<JeD#>[POH{&ۍk=idO^$iD k*f\|hU_ LqA1T  g! D2=0O HDxu(RvL9CfDdxOaOB#l&96u 7eg`9#D9lc(ͼ~g=t?pj0dWw)63 eLYE3')?f/X$I f B8B /Y+SH#X/]x=GBdxde.KLYUJy!gd dO?χlP( A &bAH@?'v$#a}!}*^=w"czs8g:SfۅlKa;S7cЅ[pʸR`"ʧr폸g(ozRAP 1A#|-Y!.uf])> ! +7 Q\'ky\ 6 >B:E)(I!S){4BFQ ϕPNKLU 'Pp"E9PBmwf^y$IN P/N4udxbŒ ʧT0gPeH`=Y0SH;Aw =C-R O=]~)XPe1?2Ka a0Q:@I @ZseRʆ?slA̘+մg`)6IϺ)-/ ưx@}B"2?Ps*a>N5^?E?x/pD+@s,6eD(q{If@[Z:M-, Lԥxe.fy!bZ!{lʢjPe91I %e P29EgT,~iF3FGىKr!o~.+={sJL[ŌjŚZWA |>X 0s~i(D7oHy/ jg-+6ARl@)B]0uxj IDATSiB 1+s¿ cts ^o(T`dB}]w}=c?c?c?c?c'اBr~ܟ9ik^GO{}*/?8q?F3u'ŘF/p <Q4Ģc5+X-HH`,88l9}x v0Y4!p9֥b;1~%"TsƲ[̴#Lձ6L.b v2#S>e@Q$<CL%sy!`؍2g?fA#P`h!<!Swt{=+ǂlVL}%sIsorMͬYdoF$@ >4~J _3 mJ{\jAQ ̀0cFbC fc! )eL5y^Ha~.l >d&rjsH)S60h20]'>cG̓#ly)^1C6'U z?C5d*n)0N)ӕ#ygb]ս uI q e2,b# 6]RHQb#?GO.be*B< eȼ} H3`rKs{X>r?3sJ&O)F}y2c$W:7Ǫ\tx5h`sALÀXG ȗ0dBq1嘠yNMas1"i˅*1, 5ʚ)TIG9-ϙD\!fڥ|x́ޓ&Sٯ 1`4 Wb $%8PFsɐ ׌hC~]%XN-cӘh :潑x!_ ECʐ2݆zBl>î1yf>z?0-"(C/%\EA̿2Ϟ8P cslpd8D9 (w~@14R/WPlN[9]Ҙ1fc 8Ci_Cؙ#~?8$!|Ԏ fuBH.|TJ & :x^tFx0 EL@cf 3 V){=b:Jq&Ü"jP.( *| QLS~}Kd'PRtJLqD0h|xڐ1h`:DCiJZHz|(qgkիO3%s)=bb "b Aa3 ˩Q{ 2 0R>6$#R@9qrzucuF@\HboKeOK ;1TL-M(Jϰ/pɮMwSԀQT`Q D ,7Kϸ{W3s 2{+XqNkZl0\RX~p?2 y){Pa } cA 3=<־ c_~]ؿo7<`9W!3k x0d<<Od  N@3CƼd~D޽̧Z2q6`\~vH<b&@&01dI9FCvJTMq)'}+qz]U2{>AA5S1m"|fuq1N"Y3sS Ïb>ǘ\1fmV m1|敃?OojW_gUE \ =%S%7 |/>bOWˁ{S'ǚ]6Ŵf% )7_M{ٻѬT_tSj5y w؃ȉ<]-!D?^eX'T儚\\mS@ۛ#1iXC R,qKTU3K2q)R19? (&wͭX!un4b?y~׈hɔ?61[[ܕRU锸1!?vc!2&r`nԵ8C hrdg/ i`evq]4 l pp?u}[K.ˊd<=39R)a~2ۍ-D{Ssȷ˵`96*x_' عWXE}|}9Z c hW^1p{M0\bB2[rbؐR KUY|՟Td#%62-u<ÖMa˓pwYk p:,@'/dg;fr??s{~8bTomLVDBɌ(cz=zarO|D/8{kiȧKoI=)$f͟-__L~KfV'm)E(0N1L֠ , 930f)vKv1ۺR [^obƈ()A zx9v-ejјIsGD23=|`u~ોF &Lt}cɴ_̜@L0v g4I@Hir{d˿Ի#x, xC5&.{(ێ2ZayC4?H劢.ܦ}:kmhEPG>@p0 >2Lp׋:arUrO@<b|b(؆:%Ŗ$39*^]؃Gpw '59fYx Kι%i3xLrN izL3gm3=} )dꔙ <~  S1.y2Zg_o "39ΰ.ڟ&e0˲t:|>pppssLRŖGF1a#f*}T,10 tLQ.3P戽uSΘ?fYeBG){L0.?RXƲNb9C4W~G= f\=Tw\,]%f{|f3f!)10If45sHVB~+}٣m1}?^LZ.7z(cmjq1`F&ˆk)OF&%.֦Z{\lqZk1L0֬-t@Ӧ4d:E }{@z@G3ze+fT PwLO/Z@!YuﻥOemG[uP։pc&$ɘ :'1}Rr!!$bdD2O|rw0@%VoÝ|ݥeL.pmRjNt\iނffXϘxcx3e3f p[zVwhіXp '`eS7bW0瓂K`N$Sx3;}o7wPB%Py# ? }0Ƥoqc)1sK$SR̭?[0); {lba +&&/9f̰#Yd܂<&a>5lL1] rJLX{]9z8~ 7 +,>n"BEQYNN/d.hUU* /_]9|8feo/,lcl: nm8KndYqŌC) r9&3xldW*Xr^)lڏxc2#[CTL$nGѫov20V+cpt!.Aw||-]0ؚjon_=rxL=`d:c#E1?vHZf +ap+x $`J*d8Z'xw̌_5{_7cܨ3 &De$LGmbvOKܙ`kZ'2Ӡ,wpp4-OSUV՚fW5~nV1'čρ.&Dx8=^۾0 -` )#>o1!ɨKa@HI;sfIZ/[)&77F{hNgdP|>qx2e6!&Mʺu_X9xL7_bKk#8W!#&&K?Pv#aΚZ͚$ұV_xxK8;s*r@_7~ 7PW@PMh?VQ0`N"4Ndײ#S٭Ͽ03Z!2];>>q餈R:Rqu]*V5Z5bqĝ|!M:LJk&" ]&X{&y$Mǖg"aS#cVƀRc[,q&媪ޗs HJxdȖg"n#&7/1hD"DSD;mwVWVZ9$8{j{fqkWnj T0hfF,My}̸T̟k [0frgfmP}.9/+s!5H 46 \]__7mXD.'= ōfB94SZH ]YFoNvX+`, `<hf, 9{D52xi1 .V *Pޗ~&~Y S4烼'ft.F'UKitUK_-ϳg#G`4V;)XÊ5GKb^($x1C Oa@:symL[p3_}ױ:)I OSr23b&Tu<]1C`>ҽmP/O:itUU (G /^5lj|mC8FH7c lCkXzfw9dog`ƫx g0cBAg83 Ø7$"\a {c/ uC›M%9s^X_5e9 Z4s16;r:  HffMY58ffQ" "fG2,[1QBʁb sK&8+sxGl 3ځ3%ʣt0tl 1 #tJb|ͻMzebg0ӧ?1˹m3b1Fax󷪣k3JJ63lF{`9 (5`tm6uO7_Y2pl$x L·?߇ū`,-Щ3䂝"NقqHDaodp'lq2MBi2c[2h:9z+.A2s9NfԧoKtvv`?EhNvR{|+;:+@C/P`*uE< b/tVSJ/x#|6@@#U3Xg3T[ҸSNbq.GhI!RSBB)4$Y[/}+۳J<Ҟ?϶D$*%A`nju[XV$jo2.,-~ ƊI(-$ xČ=Mq0 4eHm:L{%_(.v f#9P-p]J(t0訵MO&{3 Z|8qS'N5ˌj }xx aK )5[pNUal8Ey`^2G#+^:4\פ Lpf~ψ6nr7mqv31($A"RJ44M׶xqSD̽ѥ3Zvn}W*L#(I¿1a6QoH?ߡTx17mfx j ?$cܞk75`MDS4DL~ǣ |2znց)D's#)^l Qf0,O_YN`%~1V/~S IDAT>,.Pn U02X@:J|J& | g,7\`4,G`&Xe8DZHǦZ R)tO9cY=ba(*'L:0`=OſpcpEi,xuf' `)u AѶ̀`P>-/sH¾LJ.7bc&| %BE* 22?V!7A  (@:K]Y3Fu f1;?\>!s}z1# 5cO#@34@,fĠX7e^)m^ [f03x7,Qm[Tx& نs;.n-Okp2K!S1YxSbA+P< }3xY4G9ThHժvy9!NZzCqbH%j|!STƜ"*:NNCCœ2tMZCW $Dr^iIYb !cE*1"mDG:̄mjq.'?C_-f6fvl0UX S@UqDE9~/wȘo\t!&m%/H0!K59|8r:)ұۊtʳUmpP{Ac_G _Ht"{zC;g%㄂gP˦*i#;kU\R uc~ F:+d@Px|/E= MV!*7++Vl7`gn)CMk-<ж U;Z<ʄd9$fx)8}< L2x^/-~{(ǡWq 3N1zӟϒ_ ?PfiιǢk?K{ = qcsJM[Ut5v l,'PSx3mA^ׁ 3~;!R)?6so+! pO3<Ʊ $;1GKYd?+, b)Sv l@4yC)#jD;gLx\ʀ'7;HX׀kwR*ؤǓ9ۭŭփ42p`0^g۶LrF1Z4 3<3Ì綖48RU"G7KV!<{p 9caf"]0?0R&tc{yTnccS +|9&]m&75ص[B?Iۂ3BŋC5@9#vkX}0v_lG U/iP*H>(l(Z]2!Z2BPe |ɔ(^l(f2(d J.ROǣ [fU)  Nà4e[dB" >[{4}2'CMdZkTYw;]ཌkHςʗP
a ./'p9ŴV'sQ 44ABNI&)E*܄7%6TS^@ ${ Ȁ* 9IJx fp$žM<^PwO/ yT1Ľ΄Z\ 9cT!u W\7PnC7|?)6vyYvM bߡ7dqM:nӇm¸ ϙ"nNn/O4̑uMUDs?U+cAUSJ 9\N| :̥V&;pSE< <[0#U3AX 41E; )pxԆQ0KL\ᷩ1^,WB$z's4=|jɉ`vғ!HUj7+TgCH28tb:_@2bpIA;(Rqx,@8n6`*=D2cSY`OLC:(yoGpxm=Hʣb|?@ Oy5jo️#{Eb C镛XL61+FČn̝rgϙbv50X?^jՎ#jJh2`HH */pWBzaaQ]BrV Ɂ4FaS sw:\o|ۀK47S Α9֒dHmixt1DB0i ԍ>n&O(C9^8䅔\*HΩ}I\H Cߩ<((H@̑k"ȧ9}:\R4EOpQC/} c LxJlY]bl0:fed eXe0 }Jn0!ңwKts+f\&c|ۋxA*m(PΎz΂:3fiN#1 Ç܎Fgqd tjͯzӍU`;83/9 # & MKn2v ³\+LA#䘔"{lpN7pwDgUݒty>,a fI.xTR.ϫ# 5qO `gsw١5 7!o7d%SmP53^u'T9@ml̦ HTR NHK.~8A5Mi懷jS>+z=IN{;zjpלFo`be*ۗDxXv0ʰ]IDїm7;e!D.2V> mbNmϚ9wz:iR),2R[H|&`6C0㝺i+L5C mTy\O13nXBw>@qLXc Ri*t/ `q0 s3s fw o`|9Π)}R^r s lWBHN)^C vD`1J>ϝp3G'x4>F Dlz G9IJ=ɏ#[;FxQ51*!@+oY 7xյ=ApeږM 1s;:}ljN Dݬ#,S̅+0q؝ߡS$Pډ ˌnT~KPH`]fj0圊ݱWnݠbE~#Ŋrum(@fc,7"^dJ!^(Œ!]j^fw3{g+wO(\z[01\{In 387\26F,";Qy0Ƽ0^IbUdS`">;E¡r  ٘b0tn:6 ~Kvú딧AS#:(3V,d`xcH+-2őB6S-@A2DMHhϣ Lx!Efl3Q RƏwC<´CF\V;Hh>ĺ)%uoOo%vTnw)c+ׯ,e:RB7tKc@MHUi84s GS&=@}Sha%oi e 'ߛҹ2rz:hZkr&k}7,sQQ~@vk@4X"vŇm>1mL?Szn:r7>sxZ|7v8o]J|O9/>2o)k+O†˄'Ӟdhߩr2F?4iT1t2ܝ;U(oXdS|IrH1o]w1*ßL0(46s*>EZa_OP11w7!UV)Mbpd. ; "^Yb\o @)$,TxՖ,3$EñI5i-A5 7,RfIE}s?';Tgq9s 1ǦÏ#c4+4!biwm{n8D +"sHO;N>̄>ptK9ϞwBC . fW`#sB p/WL[ƹcZZj>#,<>aje&蘤!7ԃ3*xIE3&td*[+"xTWwxrH/h.ZLPT)/@t"(ڥ9%Jr]80miX/ޒG? /ǼT̰N=G>?AFaނ4,nAdݹ0<-V4t = :55E%|ص^߮s%<c cxGT";08]n =6Uljec=aͰHY9g9$`ی Zz@/F)4ܘǣLH9=琈-^s@բwؤeӈ6ȭwz6ø³HQ c9>bHSzsFFr95 T`mzOmf'U41t5 JXCef}8n$:6#!GU]E(_K^㬭w&` 5Sf4nvmD uCj`"w4m6}Bʩ^o1eW@^j ._{o7@De(=d"ƛd&2nD"Fp"v\z vr*fbzmF|)z9/;Lxǥ֧S6w'=8)I/xa9l+U"?]vY|IsU*ؕ}ȥ\=ІǦ BVw!4xP)S\~˃R%ocfcܣ|s$@ʭZqdS+i7S>7E Oz; ] G+)ש9<$,1l*v;Sam5<`֧rY(C(xiy^ln4¡rVS :#t"L< —-@N Wx׵x͗T'7ID *} }tJl"H~!66u,AKL IDATԶ1Χ?Y,KضMDn1AߧkC2k0^%\6JT^\a][cK笸`v/{99fJ? %]d8XPrZnLހj_q|m.NʹȫƔ!P̡…dz,#C6]7Q6hjyا zqhM| / Ĥs ;+܎b  0jڈK{TIhQP`9I,w+~/VN;wm(@-|ɵڶzry,ܔF^zYd\qK?})3oly{ _E9XUqOG'%8 5`Xe|#he7'yE:pz@]*,0 n/#b f6=jf를߶cߡ3@Y9_%_d~\8nlQ,7Lߢ7Blft̛D,iMmJf>cF]BEq u*A{4b%db]\;Ÿ+y ; 2ETolnDs3 ƞ#G|m0$|yQBד M pbZ!99c1‹(aDpv9C/{b#oZ +C_J搗̉@$I; n ~ F=C*Ԙu6u'T8r 2NzVIDx `<g=X^S>7f%oR eMWm\C!8$RfW oD肱Y6:!lrFK*Mu* S[6u ש(a'Q7Dy=u/Kos>bH32xS8<{;vQ=56U } x7 aToGl7pͻhvh֓m';t2Fm jxRt`s:1J_@[9Un#f61ɐ3`̙qn $ ex_7*p H8>C񮏳)TkfXhҘȦev>rFU)foEYYyhC#')1#Mt=!6ĝ^%hx72EćMX 5.I>˩x"b܂5@d _&۰q=>唜n甑V~ |dѳ `|nnנM)U'h 竅A+ׂβ*'p" fM|s<J 24VXWǃX.a)JH4tkE.X0>  JQ鍏palLMyX?MU?EN^"67\oXa*fݼBn5at6fO䉞̩f j#!/;7y]%p./%͏(gۉjԣ 8 n7IB™v[oHE;(0W6eb8OB-isTiS"{o{M @eŮ}lWހ5kHT&rI/wYp%K_d@'@9}(Bj~[Lifc14*0tgiÓolߧ*m~ǑTL*%[(Np7!=.Sx W$nX!X 騃?oW)d!CJQ *`+Iw$x0@i G 7S^.4"8iݔ4;:wql n^O/>,pxa+0:<ӍA.˥Mv ]{({z5/] fkļTv*'k7}"_-KA/_-,]jriTS;'%/V$Ppb=P>.Ḥ2Ɛ ㍯mIz2:X"50S^+9y2< ~·Q6!"7多Nѡ3?w E3Ja(R76?C?i*TOaXɲnYUt$6XX,|kRo&fEi`-`T2I,wqpS ̅`D5o5f\3]ηvXp/P* }xG/-*p 7ֳuܬ.RQ}-u;m>h&ojgb{3kf_byaUOdGS1ȶ~P*}yPSjA=_ᥨBS ,=<]h!  G. Pt9I7 boxSh,<=Fcn0:͍C1958''^/@UDSh2T}&=)x/UߔZN `d eZW 2f"c|`llbi,gfzԦzvR7uﲭ_$0Fm\bq^ oJ#~KBXËy9D*\RB(3 \\ tLmtG 7%7 1dL "cP G9:o}di~G|vCLܬ\ٺ*`nsf7 f=sqD1{@q0D?c[-:q"!죓|Lq'κ  mx@~fJ7ڵ|*XX }|v^Hb0õmv cP Tt7_nfDslF\h#F&K<3 C#xWq (QЊx\z@%d[@0c!8`kح5nszJ|nfGWUrzRL{]6pP1`'+N6D|]{+r6fC`06yp8 Y B!#XCcxK8%ܥw1Õ<F\=߅xB=5Y)TCz Lܮ׶]AC*G7+ڷ &H/9E"UxF2+ٹpv]>'6Z/# vCٰW"ϓb2kԦ`BGEC:TS ŪxRDA8q8;غb=\Tλc'q=sS(9P)xٽ gOn#^-7k$sYEy>X2 d -* WpGX׳dŊMg.GyxQ-mȴ3 lMJ8㻩\\܀r )2-{ S"9[f9bE3\.E8*0꽧| /!pN"2GD%gzząQ;Oف/g;E1_ÔI\T D2[p06S@NFष3{ eξ^/8@1.bҮA+Gȩ/0S/@ߓWcX2Vt4R-R;FjAĮe,l2Ebq 5=kO1@5@?bv`Ix PH$F 6(}:Ef"ȎsPOv̷HzdBMy%.%[tgjQԡ"b] \#"zS(f/Ԁd0]{9xpys2\`)dA-6Pv!6Y}! 1BG%+v*[1X bW Rw2`lʅ~j;9iu #SV0@Gv$gY2p [1fL:N!@]-&ʢF ӧF8FfDRԓU#+jhfxcDbKk#͐'%R𔑗Hi2m"L`fu<38%أd6{a#V (mck0__(RڹH(7!وJB"E,~oE'(7d^`# "$(w0F,W EYܮ9d RRQ IDAT{6]>%1xSa*ς]`sAHȝ&_gjחRp-ʻuXRp%zjYEZN1AEJ1%d1cEN56:<{#]“cǹ$:BlP.Ah"an:j.;G_%>솇NHä́!.-dyX Ӑ1Jp@9!3FgK4Gb2.Ʊtɟ$ hRVVP"/y6-b} /S]_+"9;NEM&A{v@sq͕fj2<5w$%FY,Eh[T7K<= <ȋhxy,R  ub@x641i"N LU| hcH!.z !F]8JQWZ êgd#axB ݇y@Ek}J a53" 씖UPjJ+n!S!bGyFRZɥo-cPKo\KUS{Y.  21ۡ ap2$ =xBr2E\g_hsJtNrg'ihF L=y!sA۪k> FQ5s,xSb0T. ";kĢZ5mosGBOL|0Zy9+k#6VހesjαXnxc`KlagV(Y+%Q(T61F0VŜN}Enz- `88/y&f(tfd zxlx)AskS};jsc(? P"! PSBPd44n-ea[C@VzYxR.O9\H$Jft5Ky; 3_95"G 7UX/D?0|+r3ğHxZ R rD'a8N£Ъ9^x0({V9sWcp BV{ $١R%VƢpD}$P-)m? tRFQ #*70N#I9 z. *jXscJa g5*o}&</j߉@s/BoFcRV20 H zRU#zP>YvVb#"WZuBB>4'WGs]XPľfcYYnD.hEhE)y&I|}iuj1x1džkxha E ^Mppf!aTaJ gʻ g#!Ƨ9Չ!{"d<[ S}]e³u[`6 AceW0Uc8a#Y_3Z@FOЗ\"s*X@=O07rЏ);)UQj/!dr|P凮c97&CʡP(i)v+0 F ʃ>^ o=7ǮԞT*2)gV|A|Nj^J#3Be! hF.s[A,Dkb?DO a@,7;nJ V`#P|lxPP}&BlsadrJT(n Uy za1vV }p4B@=υ5a Jcdž ;ZT(F{bqsjox yCw(r0 #" #ucyllJK9%X!Wa`kK?~a<2 }zr"\ydž:RSd9SYb9ði! z!LR!]!($}lx*C4o!?@_B09AzG'rÙR" JC{XIJ\3Xޒ/3+3++2kꕜgjn0_f244}C A Hp+lw1^]}[us3sUU]ρ@sgNv o뻧:<9%QYU7+`Fv{x[S*ǜ.[ jpn6jO M=NMd.@ 1t:nvnvnvnvnvnvnvnvnv׷t;Xbc)JMwT1S x/G>t o}5yq +H {Ru=iLV,GZ! kpiOh+'~G>^}n{ם?(ex~$=v^!Nx eY'X4,hd3/NΜ?.x?sDHTBZ7 X%;r1XVlХ,%@m |cȀrǀ5P> O-ø}Lb.Nz'\aqA,v sIY\7OH9#/Q[ x`LX˜91ߙd }M!e%XT Ɠjr<XS~|Ɛށc Yʈl%HfO-x4Z<g``Ln̺Ya)b I ],~@e!Ju,2L?*vThN"}?Ka4br;$\оC9$,fCVw SF /+tbQa3Oi !,5π6<~_31P%>y^n& ?5(.")!K%DJ#Q0Ӆ⬔^C{G\YF< &'={p9dȕ!Zb2&))'J#d }4fw#&,E9-s wY<.8qSV3raU:bXyF^;fYbz^j1YOXY|O]J{.?fb>BMuw5EqSS$ '-E cS 7cyS'ߥb8K%U˅?[N?6q#=o=~)z|ց^/c$hpXM.h()FbH-9a,&EØ̧{-h˛KNz[n&XדH HI#5BĘ"ɈB _y/!%c}4w9 Pu!bT`qdT@E Ĭ "-[a[[fnK`l [Xop]CEJ*jceK׻\; KϢWկV UP1RQn) bc>l(<0e K0@j !@DRo5oRo1]a<5G Z63)l%TH)"ZO`YJ0cq[JZeѧ>-PyZ!Mvu}.ˏ2o TW46;`;a- O!oдT 'U&nԛ^ ylYvl'#Mt)p,K/ bܸ́0v>"ѱxVϞ-ٚkoz]mY*y}1  }R-~D;|ukMUu !E fCX0oHT#E\Ū{Ji=dv\b8|.li0>,~KDrR7H߂JD_fytMc zq[ fAЈ˚ÂYS5ֺ3L_ٝn=EkS/?\ٵR1)X:~|\T.Hƪrf']^'_2ulu5Q1st'&` ĤNzZkaP^fJ'3r p1߯;I_A9sKUxu#@J:?i~Q߂YrFD=P瞏(w%|_l},E!i1ޔ zW4ܥwc%9 9r,`N&UeLg/L~|M]VLJTB.,'AEDPJw7OfŁ{,`$G' ]>Sn| EI )0HL|.22%*ivًstEf;1B >>B`#"hQE1-"c3s1;ʔU |FJO`8314T7f1u$ 35TAv.<+d(3Oyo3i{S`=YR9?Hi&9BD[?'*`M\Q NzVm5x|H -٦F}t;7`Gom2'A'R,ߒnƘ}5\/R12߱_Md{cih9^t'>1}X)˙j@2zES*^o_S8 ffyZ{oMbsn2`2''o8n<ւ+)¦iz@ S(SU5]SW]1&2Yќa*\$:t, dh\b~ǧ33`5 {n1d2t:큯,ALC^Nvx.tA哷cb>5[Fb[r?lOx9z`UPL˿JJl5XB}Mp2),BJ 'Tl,]к{ɞaWj5]ܿі2 XɱN"cB0Y$U)}9fW?re{?&3`&6 X޽st%>V:f3f\'-ֺGܶIK>26s>wkfub[q_t67_a5c 173 :ctcy9ťJh*jLKR% ^byo#t΂Mथc:u``/%KNOX\9J3hjIe&*nZ{$.i'FI.nX-YTIǟl}?Et`kP/{&6nzl||vKnXZ E H SQxM[>mtdƶyCrsx9%rtnd.T+8sy2t*>p&PQ}d}O;=p>R1R*J:̹iBo/  팵eL-cS`0̨1ڛ`G413> x`c311=U>&{f fR _L;[b2g `i0nx΁OZ9 {JʸY8k 1xX\1G cXLV_ 8rkZcɶsM:,~[`ܷ~>bq)jTN;*%a Y xLd6{@e2{˳3̻`kP?ΛRAHs`stLd-}ɅW5`-f cq3%bwa˳z>|eD]dZLjPjYp eIt IDATl(&9]|໊@^BvUxo3RՈ+s}zۏ .v ݳwy5 [v/ #P9loockkkus tZ]ר qiek. J+B.u`mq `1åH?$4XL-da)'o pq@C2 3cиF Yf|ǂ36WHϫ@&mc#< G#.`p8,:?۹¯_6kK۹7`QK'A|K'3Rh>UUr5/k|lrc174v=L-^.ܝp cZ{`5aV4\#]>;_fy W΅?5C~q,$z(vYlp2@ a\'2u9b<pg &sYz*lqo`d2(LA*'bE0:YIn$F2H(vp'}bo8# ES޿{x&EZY;b:t~R`2ѺxҥsIjV2Γ"Pr,u#',! "b WB jc|=[<&ГsX >q709BG#$K*6K͍6MUE/|Vvk.߆9 bl6[(r6a22Pq\.\.a /*|jQQ@8NrP*x I2 yMeG}d "1&1niW*eЈՈ^ ~G@(IHes_Mv[w?$S |(9s@q\4xaY`q!3%a0j[ghiC8fFE ã^-9\W, n*R PĸP>incSHUm5Flaxi*M[W?1U[fffq`QE [KՕe]'Ks-Mb /$@RAѻc/ h8-6x[h3JV I 'XS0Βe&kԸAKw-oq,>_o_bk8A-I#g# t)q,> jleDs1<4չS\6s+KW#Irp{kq5( !0.,nu8szx 0a&V8]s@PjuA!"!GA #jq|6g`CM3r8Ӡ<@}m<;ug7I8Knl,/,WlRwW_- UkUO,tռuq(LIJŷae4&1\HEbq7  60)Y^[oG (P'~¯䈼`ͣTL %5&K}ԩ1qDY4$dSNFГGm~dWWW L's|>_]^@e-fϰB 8kYa n%\mcRDM1c" .Bm=n ҁw#L5Ϩ+\/K edě%'e7 ZrBJ>t=kdTF<9 ׬bt \)8~Ң|P+xĉnE\'`4h] -X~d Q`71e6]8Dq,gI)0)}Hv>o0I# ^ʤ*Y4%A{NM{b; |O"4Gauud'QN's.{EaFdP & 7` X{$U2|![D8¬D]i h~@@ okLld9RT9bu#3LSw(r~Y)`.( zNX4d&s3]uA,#eEf-pćr D)2Гr;DXep `0e)h:ꑴ6)5ccr{޴sƬ]n:(Юf.ɢFѱa~O{5@ηck:ݎZ;)(R 㺪0|.6!{p ߂2fZ#[rlsABmqyRm !%<$vIa +l`,fX5=l؏G(^45:.+'^nXf7E, ŏvGYUL1`g^<؇]>X t *~,d uxxcyˮ :Zz|,^KG&n p3A6'yx#Ps\d`kI˟3ers= 6&bx@Tǒc "]t.gϬX4^'2H}7ʱ٦4xjYZmی@'dXFLљv}NHYƐm #M?@0]کwL& |LM i@'mEjh[-!R]d?x+E;dGL={Vx0fyrI__]ujU#BT nNsN`:k {)(%:h QAxL*HiqXC6['qƫՄd6)|FMp>  fW`?Rd)jBF_+aQjhR!a{֓rzቿGJ:N`3j s߶nd2{\Kw?LVWzI 9S}QBi6)Y,EV&W \Lo T#xgv3>pL-S{3 7vԷ ~zGl7N2:9crs5;OYK5W;. l-lAl'Tx,vzM꺆i'A 36 ~,cfdgoX 1!ALr1'L'2|/]m/K9sWMi$MsWZF*!Ϡg (У;2fnG'S~RӵE fHFxlUT\¸[R16QW1(Q+&\<֫COݸ(:}^,q:U@'}ؾ"mF ` a&u, 12,Y0ㅄIUH^o9``VBSsJ,nźE.Aյs wB2T@;4"ܶ_X Vqq:zLmR绰 Ue;ҊdiW <&x vp|\rbM֦cmQ-2-^(Σ'ThCxӭ8tKvzkfZI1W؇ӰHX\ML-[yCIh!-ZjHRqz,X|0x*Ev ϐ-t!ؚgh8;Ʀ'MS<kdh;@afzɽJ"Mbce|''lK vךuM Ǚ w|~&88車I2ZMDX̕T^h+c@OS9]MDc\& &Fl<Ed3$(!->VXʅt{aJڲuʹM6oɘNso,X2c-͏d˕rOSsL zXsv0z¶d&FȢ|Yj ;ׂm}4Z< e kVHkT9p2V8K92sO H' kgΥ6u3mՑ*wLZ7øw3xȓB}[5[|͠n,q9G$s?HH aύN"QjBxݜc r)=w q|N63`1RJ_'Nr FUb)`ǚHZV\/ܧr *]Rmjp}<](HZf1gkɼJ_GQQ;&*̄H0`'>iI'Lv:@GK6 }!"\;u~G` 7M!$, jC=UeUG1}aM`t*<Ȳp%wutYZسbm`dlOk)W+h+#RHj0JO$gIQkN'Fts,]@1؄JM*j[9]0.>"T7jJ,/&ikh#U!tBEO [ӸlHcXO[kerul2+WaY*9\hXL O[܀`tf[]F$FD̸1}3.ݟ{pV*!OC"kc(t1!;'\  c+#Zn{Jsُ<{әc%نg-}B͒n$VZ )fu[6|@ެބ"Ei=r2q[¢G@ 3RD:gtl332)cjh3`cG/kh-H:8}p}mh`"eQ cL_3v}28 kAK4D`+EVIm]EĘh޻ඝEJDbxe/|o-Xh|61};1sc>,^(vc\^rMh*]LF_%3v ,#QR/a,s\N \H"le(:":0lk߳~b])Ӑ݌#X{HM0 dP[Hv woHgT(*KGA4Yq?Ove}H;1c3ْP+sLt- oPe[iDKG1sR{^25;K{ :C  "ޚ<%]'AgiqS# +g*^5\M4&0Nף8hp4UUmF7wIm>,3I 0`!|+g+Ȗ.W/1~1IU#Y,GB!"AFZuٞ'RxEwc/ ͍bJ*{Q yJGZoa l:rrklƚ\ۖ3GX%fo_ӔTh!|RdQ-YO%j_':`[w%lz;va~3Lѯ̡ Cl<"+,3B.XQErzvbh% 6M|?dneUy BJ%@LgRoCQ&KӍ"9;⥾.-+Fo(+@A^LD4C_l9EOOxcwMђ0 ŗw{۠ w82!0 66, C8݃ʛH-ros:5BX~FuDu5ccHp wOCeҧVH_cfEWb7ݰVc= ,.#9NF@OtS*mޔraG=悙t u2Ws)6t5"uRO3X`&r3+69ژ~tD;L`EF_-r'\Eʵv"qzP "Kd'\5qЉ{b5}Y d6S~B 5CZNwAj@˸o4MRv -Jٍ˷H' ]VWDE\=&q%·PM-~b.w.鴺x^5 8ڈ-^Ol^l'5=`as Y<`]"±X߯I v' ,ؑ56lq A\-#553PnB崄>IR_K'o8a{ሁEB~ھo =a>6@ZX=9ok 'VIR8.7|Eg<]#{-*֔V!W 킣WI9t,[` Y> kmT>7x88t tc.}&{,=6-7&}q٥78h-co3cm!D+M}3 =?E~|gݢ~f֭'Cy2t1F.-`M\Ung߆7f=N.etaMf2rp3[6**Dp(#eJ9#`7\S %D ޽\Fʚrvn'wcM{lY tVR};Dx1f3t ,T@^̲YDuI"@kO~1't14%Z1s| AcO3݅YEpx6c7VyH`ቩ!-s%I)لl`چ :Պa[C(+ԫ`?;HW2V֍_JyR0sZ\KVa,Xk_s#Xz888sa x,)%BʻA34W!fo2$\Hl-SY[-n%JJJ-W[[0TEˉr?=i"@o?xَ\-ޤ"7=ۺc4 nQ$i_hC<(x'{ʃ3kRv!˻i0SEɐp?vn]dơ\,ʫ0p d']'M1(c$1^ i3E_㶥bc9!RA1VZě2+ %*4NH ei!65MD(=:&( TL8Ou͵gq:fs O? <ɒϵJ1V1dbœDӢ櫓#1Tf@#<ŦK2B[ F躣FJ4;,!C>fX.opbQY;)nrײD9PCyE"-ogN:FTBx듉X \⭈e4%z4 S%1)%U<b|}lvtjVzOslƦi 2\R),'~dfƳJp [.7jlԹr^b[~Y9oQ^O- kRC2k`[HSf ׇ7dNDjkH8-%uOP-.X8IIkSCTRcRn.[tO^qX{L;W^ l9?`.xx(֡C{lt겢2XP#c L"V$^.M}xPNUUb`%G[Y7HgQn@LQBI9l_KkrQv0MGl񊛊Wʭx톦nuwAIBB ţ˩}Տ %;>{][qRh2 XM ȕoAma-LsD?Y}΍&F< n9Hy}bd%M5 >B1x8.$L ˉJtZۚ]!"@itd iV/dz8dM6"szW%"lРLlRA׬A/S ˱fhsq7@ʕ[O5~hH1M6HX|C)M?pۯ(ZG.o:5ڑ@-pdE}vBz9W iVV/ɫgaY,^M˞+ | $%y9z1W4fIs,S hX9hYT~L-M9 >7 /R)JW l`d߄m^[)֜ u-Я I6>5* +vUg-p-8w`fHid/`s{`\uB <i[x);r>J> {y6oQW4I}mSu<ܑ-Һ5+ CNmjyg`ṟuwYmŦ1|)*g@Y=ȑ,`[N+e[ed}.^I*ޮ0#-. Px E & dgRZQq\G,.Y[ ˙ztԱp%cŜzX&s7Z2ܴVwe c ?&093od<'P`Jjصjew _Z5J(F~Uq\%3rt@I#Hpj"҄t p/}7$jVbްG[ii>yŴ'b>7`qm/}ip-KOPOQO.2?zk76( o9תC3Wmp"6ɑdslOv=0lgm!bHBh+chu] `1}&SMvV~pKtަE{idc.>K#&qM^@Elʭ̡63NJE'η 5YbBsI*^g[Y2⸵u+\RE,Zl\A̪@= FՐo`>F&̖x1ٷ÷^kIBf1hz|;0x|5Bg\ lKTB;g([ĭ=3U+ȓTm隙kwkº9u^ R'y Mg*,(E|c?TP,7:i6˨zg!lGq` Y߫fxR_DG`\&p :itl>*> Ioddb7M?K<+U[&JX~M83S#xbms}U +Ь J)lM$^v[k |SfEe :,d0 5a$j'WėnTGp3=Gw__nbe8 B- إJͻcRkJ*{n@\hZ먵 o8f$ZPp(mo2lLg掇vϱǨwɻ8Wl?2 rkoN&G`S#@K/:aSbEdvG"Kv X=ޤ =Θt,kk15zb&fnWlqJ]%X>24`bFCȶH9gjߦ ei`Xzwc4>7 C2#,{:3oH>FܦCDO*EBйȰDM΢(cIz 3bHߐyxO+tB"~"4..,BPEHKs'ᒊ͢(nj po]6np{ˉ@zz>BXJ\1]#$ "aTpxAujI({L;.)nvdbjҊ\m}7 `±oTCDb3.3Nr%(s3ΒP=us--=Y=?As&q!*f|9WZ($)Г~9#R^ +}/2r:1~sXk&Esm&L[mW)*(g$Qr:W~9q c%F}=9)\a W֏l3Ub@7ic-BQ` }zU#[YK2%%HPk逶"2+̥pC)YMBznޘYYm%'TX*SlW$kxm Tۀ*9aI\-VOs|1y"Q^Xo_NJ@,J| (|{EJ+l,rӊa_D̶`kHވ ,5M|0&IFn䄸zJX41k4uCyn!xgY="‚`{k0)k Px4.8_H0'cwπ EOAޱe=nKf|,z U` urKJ-`091]#NI8VI 1E,m u2Hx 46-(f+ʲUK Ym Xlp43KoC a "in' 1w1WRvq ASGZa5vzOwhRMqo@m?Z-˅s7lUrg"&c9)!9&H #U ^q,d{.{"i1WuX5PlqU GV$c; \S($)<!rrT "2p ϑYS( \&-R}Eң ` ,UnPes>YS 6}$!7B2+;!&jabOb \mv!v3j& g%))[Y2 \kngS3GH3l TQmz \pN֮@sO%E{JZu^mE(ND kY.qE(Dցy-{"~)3htXG8*wirPAXj5 |VͶӅj}| UvFֳ`-GFDzIϷ5ƋYBhv9Ł\҂t)ֹunRU\( Ӻ(OCcBq;:$|$9ڱƤ %t^tIDQY S"qk|ƾA#XNv >*wYmLYL-Gp9OM2뱙264B<_"bNo | )A乛c/YowU*ڂmM4o+" )  :)˴LVe['5g{% Z A$F ,Zx4_KxV#wDN6Jm6Z<.a1섰k-2;yZHޛ,YضIJU V`iEȩ]ِ-~M^{ ?d-vHab nxV(> l X4ܴ dpGivCsbunw!'+ -өkBUY^j%2$KK(b%-^X2,TA-Q$@ >bݘ7-ƫ,c Qs/qWlVI^MQd}+"fe7KY:#dQt3UX nNO !,:+Ȓu=2U$Yc0>j<+7v5S@k+XO -O`=HAɚECTֳ-^R XTs_ ܖK$%L"u}įhX6Ke6&raQ*fwYbÞD-Srp5Ri!I"=!CjC_{q[R1 t1'"Ո-D.Xq5c򹆹`\+0ŴJ>a'KyſǥdI끟ΥkC IDATͳ761 ԰H.G$g|M/+ߡG @Xϊ T}Dryo 2Yb$0]˱,9;ta\-¨ 8,(" aYZ@+l27ط FMC鹦;=p\_jpL^BQ6r/P1[aBZ\FdvG,(=ưg&$XG Ic'ZdPz-b8Dha7fIEE4:@EܘQq_5$‚7mC[c xm'~Aa5+QMn ]ך%`mp-kr17v/AYGp) A r){`$jg=D?k狋*K8c+& Y\WǤޛLea߹ۿU goΐP!))hOӖ( C^d0`_ ۰6~ "E 83HJ9LoS]UoDĽ7{oDU]]ݝQQFFF/sQ yt&z)4  Lo ߅ʼnQqۯH,DJm3X2!x]l_woa܌  < 49"_4ՠuwdrY7K!,̖SyI҇#tT"cv@]?*/h6GsZs>_?FS(=m/23;AYQ4M.'W%py` [Ye|J"L)Vz{L~<˫dpD8aB953㛘 fFɌ;\0i;xƮ)nONlBmt:X?F6`!\E3!hF|<Q// 3^jaaTJss‹RJ|Fˋyvx&r2@19wa`O'`3t2bB!`,'^gq@@SY 2溷~qSc@l ),QW/nA'AJY߹"B c2R8OpBzΩJ`?Nb[?5dJfZ1,x[d\ C똞V!Ӌbĕ/˕)Эh&T=Kdl gk.\WmkAȘQ3#"jSS3cb`  Cﰫ>lENzUޯJɄU鐁$O"fFe*.{VϪx4[]w媚ƌhL4/ dR /w^m?Q7VI0 pBlV+tA{RVay*W PKl@ܡ'< ^2D=1Aj&cfNݙ{2N`j5y^P16TL 7'YkHR}7d0 @ԈhjPv'UpW} =^9* E B-,Doٻ] 'H/RG‡cCTGR8\,\(hhioX2 㐺X  Y6M]jVSastLgz8E7ZN L$ 65dj5I iaRBeJ}٘͹Ŝ܌)  ) zGH $Zyp]} l/p `|oP[pK!,ѝ buIO fzP 16)bI!۳=GؤMG/43]󗈲"Ϯ"&pָ\^3vAsvt=$x*wEf/bd.`Y>lZ9xi?g>5l.2Wd'8#ܽ3=CK*Ӡ< F*vKe҄Oɀʕ3X^RVOsf.ŀ}h,'2ԑY+ƣƁawѭ&N$PvP4ejl"R0:YȩQ7Y++L\9 '#3]8>'cM)ӣ0F};R"ʖ0}`vه`^$. (N6ՃDX}YϹiVLwϺUDX{׷'<Luk-:(q%dN*(bb ;زj~VS0ϩ4>(e]#\@] d,.o 8w]DF8d=Nlӣ*tU ԚII/~PBtÌ%3VXǐ[23CH?9\R6ʈ[zθnXT s x po탆:#w-iN()Ѣ̷{M)p]>wTdHB۹Jߓ3.;JdYR P-ZɫUL8'1AH+p!BlnpY="GVmuW @Tps0/@7k6éuL|90R^9jR̳-*Uf{'=~+aBn'2G"C}ƕ0C")E(H1,Ol۲-K&01U95O`=xU]`9K[ 6Ӭ. f.:)Cg.J1\$s>'nj}l]/ E|kc/[5 (<3V:1CCY7!cKLA! .6`~D &٘h3/\[}6n6sPIyfrs8 jTM(?4W )UW.1q zMؤ#•.b( 0W`[K(! 23D+ǻtBY>S1%@+.A2t["0eAPu@ZO~et:Ss!Ca+e&zc.T.!t UsˮpJ7%mf-5F`Ap[PP{]9}d#v)a+qNMVEQo-USBU,8>W*ClgzĢP=Ca*0M+4ڿvu$)`q@DཱΉ6=5I9%LFSaJ`>1gx6tOBR,w/_(Տ u^9!s$LlPHa3sp.[0+@Z) ŽiEN(%ރ x!25)^!v(Ai@8) sGℹkc 9"@F]b+/H͕`؞ !ssWTZg0G,I]b>O  4|ɀaJ 'PNf,_~ش껇͠IYҔ˲g3o$-˔6H8BY`aSH)#bFEU^ȠBVB2YljE ەqO~b?. o,np +[ qPc giPR@5d X~fYs(6';F [i%OJwf1)3Od-+L"&ڿMf9OtCP+)`a1˕PXh`=0W3q۩{JS <~|48 qe'Z@ YR!0UcLt7Ղy*+R\Jrp< B 1:2TI{Z78|LB]ktg")e!SgħڅP1-[O[9eNʖrn fB94n+LSa^l :M M)S? ?Nw*!ȮY G)jC+8c] tznbR/-7+/r)ۯKD]%AV/x}+›ubp$ڒ݀n<)lIv0RGRbOHHel,%I˲JD:"RN͇bSʓ[6a+,J-b"e  F[>ghz~>!>?2z"DR9TE7ZʰiNRL/ccP>BB;/syOZ"aV~R>L 2]/v9e?? AeQ? ]=FXNPH3tѐ (K, &&URmq+&=?w)z EҏcźR,aayojd!Ήl@,3u-H |n?oFNWW >ĦQfr{}@F#1b̈́Ŗ#bGkct+'EiB;a.^B$}..0/ |a 2Vp7G7?Sٗ\sq\Z\DEsbŢu-̗KF,Lw2Gba\xsaIJc IUrB sP3/x)VB)hP==B^0e W(gOy&9ub?ݮȇ̄ŒfnVŒyW#* Ge]Ȫ`0V>Ηd7 %X%mo GP `׬`@lX)&P>+lJ[syUuM||nK2Idpgoj>934Je1ȽW+unV2%{x#x^@!u^8a6s~_'/nY(,ǼbiiiE3cRg:9O>cClbr<&ΰ=l}6ǦtcyT0{aPJ&^<I;_'GAg\rW6eI#Y#25,䟶``#[)aǃ~{W  fdgm i .@(F)^$DB‡H1V-Pf覃nL5C/~o4$s865r1~&2+ۤp{WdFvfn~̈Ʉ,(Pd>6r!Ӄ"Mȅ>M&!Tʿufm'ʄ&|P(A}C=X*9#+T6Bk>zBYU/+}HA?u~2EeWHoSȖwb5ozƼlVx ᦼr8dh,ωom~om~om~om~om)m],y"n<PfdfṾЏŦ')x7=2f")o=K}K,p{y} zr39q kԞ7)n)_!@b˾م 5@ v Ssh0(h~tq@0~hIhCz=_A6;tZh_ߓ+ğgKCC)@ R>e0N}aqPSw큷߶kP " 1Pc0ocR 2{1'ޡI),Ŝ)4+1{%bBFӥBCdI)lM1xrӒ6f3E0b$>W^_h فC`9pS.sBG|>!#rrx+E/T@."fNSԤ- H5Sp0? '-&쒁jq|4ېtbS4nQ\C_l 3KS`esLvyY=dbK gwjN]M!1z8Hu=lefjC n *sii3=aH&Z1b )}〈0E,!}}(O0=__ -Xx(F:Mp{0xYO@8s_9oaI&8!?f *_@0LD?'ϏwH'c # ZPF TCRljLhE IDATda )2>6b=1M}E̿~b_{}7:!39'<Dǧ]0B0qu' eTGkQB=k@sz< ,:Mȉ}i zCs@So,&Mc*{ˠ|U*H7{!pzXk&|!~_Ruc&Pa^}pl!cߧ0@:`zU;i䀫&!;;m]D!A7SR@Ku`==cK'Ƃ}̡@O2f_9M1 ee *;wf3ع Έ݅YGD]-M2@0.CHu?ޣ.fю~ kLo]2[iS1l]F&?:~eWcsv631d9=;DM_gkD'\KfW I,%|X<[t=f.,TLJX}?2j?.f2ʧǣ]]~\F̎n  ZL@d@3՛ٺb٩[@T0G%ձB<Ԁ ml0!e W'Q1FW}6M']3y:3GڎgTdWA} ?)r f`Y\Db6w ?Daה1 !tof|r9i[L8](6%@fD7aƔW󷝭JD màC|]S>BCŌ>3c0,h)ѳ9_O9WD5?XyvĮJrl bY;D 4w=د/)?=9>^(ȝ:Ըn[s/ɟ%W-G;-Npk<ݎd9l}dů̯9[}vZh&o=%x2dПDR#MD4!*S<ʍ/OjByq'`'ۨ}@i4윲0ů1Ǯ.mjv*$2C;w,} |74$ag0`$L36+F?JyqjV'waÅ@c@1h@6OҀ$rd7M1Aor5W %} 6$+yZL!}s3x2, 4xhv9ˋ_q]M9V'`۲p0shY!m,ˢ\sB) 8dc[Jfs#}ϓkQz 6I1>',F_8>e%8;sN:Rtq<Θʙbs!fM ÔL>;Ld^F86 > !]" {pίܞnxWiVgQ>x\]@B$F  P-cČ2-;ˎnf7^T1=+d5[X=xv~8x<^d:ϒCny_sn͈!`AH|NDs8} Q%ez*]{|>q@\WHMlzϏ% ֦{?.[d,֌VF<&fc8"2%0\9 4 @ςz?})bȊ4 (0_Sl CJ{оZ`M)乏]]|474;N9tj4ÍF#餉 CUːckCaO_^b`a{+e LSGU^P11g^Mf4Ec/%V(܁?HZ0kyIyJd9-dHMl0SP`]QMO"lr?Q͗sO1]lzeХX X*~7;s̟ 1O}U Gj]'omVjFр`˲b"/A*_ITsg>y`&߲dR< 8nӗe`'k`LAtV%VQ܅[<\L&d2b;tpb`\sQBυ|̞I5xPA0hR>__` +!sxW$ РL9B5؜)t8}Fm 'w*z%eYQE/0;8[au~^RuyNAyt_Ku]{ƌ8rkq#+ vfe9QÊ 0xf0Pz>P? .3^Me3/nuDx^( 4!m:qOPoRu9]e|n,)s uyT@ гff-HBk1v 1sՃO?=C ?4%;quDCCUKY[3J Q}_|N~2O} Lղ[me:D3M& fp4.{e7eXː=.6_X{m:20c`|+f<$ƛm8%B7Iy2e1|zxR^VN1 uUĺe@x{H~@yv}5p}jn0:_2{˘,6)Zauwxtޗ&l6d2YLfd8UU8ux:\9\b;wL "fl..<ǾI|&X6[| a3/:Ìӿ^QAHRaTOף^j3Bb_(+TZb&ԭ[Ә8jg++,O [f7-}"!pxxf3/Ε*e [U8kR9|nUሁtd낋rkp%<ԂQYV- \K%X0뽡_2;e 0ߗOӕw"IlZL 1Ṗ~b7ŎԏfxnM5 o5LW<{]XP@Qk҃R0fȴD~ϳNkRs2t|,qeY?(+|JiqјxҤIb v0Im2h)UP`BںPAxr2}]>MށZgIcQ81]|c2 8Kdώ7^2cYn-poA7LրӠf[,[Ve%~hY9˛%k?Nri( :R I2&PMZGWYxaԿ7|1%3@6=;p@I͈ dғW(&ODJ\KxδI&^|Gb_?U}"gQPUrZ_Fyc:Y9:Uϖ3Y/ xĂ ,[sax9_K_6qD _Ԑ!/RChv#PlreCnIjh>w|X8!8_?穘ǎ\0mUOEGl>yS i>a٫ j%nM`ZVP;uZ-+fCbijVҳ7/=yYW-(#ADCz{&fq_÷x\Fh ]pF=0^'ƷG:T9D=hffͱr8B }8\ Cĕh/#ϲ+ZTphǺ=czL|?>Q )Vu#tJـ1p__%?ズEC$&MTjN 7ق1#H_D7EhZ{џƖjŞhFՅeH1ݚ+(] `7W`-b,;d!#ce30 Zbd~ n}88vlv/bعZ"2Huɤ|.{ "@ j.*|Gae?3&̣d<v|&,: zUzcQB[ |_ _B Yzlشё 8aƫp8I׈p E;~!?O]~|4pBh=Q  MLlY͊g^Z^O|E#avp v 2tuZ W_\8: ߇,֬|vӣC1> =nj"p7`1f2@ t%Ҫ3u@S /Ǎ}ѯ–=j]:=S3`-ܘė 3OW筠:{A8},KjQMH'R,Ž`"cS"Pk^#FŌdBJ$($`5NnlXgaF 7)\Ȍ+J_G/3@4E)TA fd6̰B}~U9dKH6㏸Ɨ  1 waLV (@<$m8\F%63ȴ?o`?;!{HF&Ue)Ke#+*ݐ3ԁսY l2ivU]U­Mk>ߨLNjOy)BԨ}_Ùhg:c-<w\uu8-͒9m8pp(/1sŃ<說k|Y5zLRRz!j|Kǔǡ@LSc'|0B ڿx[΂Ӧ''i`H96^/;OJ8~O! ܃TYPGQv2Y~̄<]|^&Wu^lJE'WUUnmq5~,9D@ I6S~7@xnp˜p x]'wL5n5n&-mBg#Q/܆sd;{ By<&׳cWgW(uZO,2lj }>[Z"mCD?kIpu Zm)‰f۩˴Aӥ)S-jRB@_&IR@#D-m &|^Ǡg'aJ;"$};|+F8rP%G6I7&Ǘy{&W}|ߖ3!T]})~ɖ+`U4D2WRI2xЩ^4i#hO2ƳcHtM^3\+>!̔e[mςE(!~5Nh`wԋyv @A | un:,o07PK(0bjci]gNH5wo{ >x!sݮe3TvOeቴ;/U&fzR~:篘,Y0@13Qe"DT!HRMW뺆,-ƮyrVxx`wJ S!Jk IDAT|Gb/nLȌl[;vvc}'3 B̺!7 ?9>;8v*`ؖ?nFWv BLĬt=1><*6r50 '_2*^MԄo׷SekfnGRtrgA=&w7~l#ef]/WC 1Cn9D.nұf^_o),E.P*k 13*J%2p@l*2 zϷ3đq_kq&?I+Ƅ`\ w(Lpzd] kʡ vN@Ӿ~1p /4ō[=mΥ>-jvM'{Cc }gLc]0 WϕU6dQ .7H0hR4= Rn`!5`&t@sV5Wܪ='̔i7pE}CIG80 ɠ`)2Z%%Xֽnx172)6,Yo]~_t;|$HѶ1X"-\}Ș|z# &+pBrZB}kQv%9q5*旅Ĉzz!2*O P 48j0+qw똝¼̸`'!eY6c|2ܥ0"}}R5CKO}! 3 F*8b1j'p<3F!`͂``Wf\2ѱoj37[nA'fs b2OvQ!cfP1Hc1bM>$_:=dpHPw+CS6>`fzzLlX 3PV䊝8v0D?#x`2d4UʍAQY,\5Ԋ:v'v2GKP;X2l<ܔ܅ëqPȾR +9նE7./#Ph&enH] &6kp8k, q2LH9!4RraMl)嚙;"`g6ԏe`&dُgl3Ut2&dhXd^(eT XVJ﻽Ku _D۔!#apڄP+N:DbDoWw:dW_i?M[*U3rݮӍ<[AE$!1vπڶ>V o b)3i%!k2wY*C%; |gMƢ78;D)!J[| 27D'ZZϩD b<ʃCtNx>|>X;ZU 9ԼeF.pRyԚ[¶iNtYJ3cn#|Ii-5F$؄Y=E{Bm w .m[#nfѧ)a!ȄA8| 9)mkLd|47PW;$TF"};*=n ƫ좿L_eΥ2g ;FaIzG! ( zl@QH+%3kbʀ Dx n#G`~+P :FknH 1̤tb5]1LcXBiή\T2/fijNñ쌭N~-N(`U2VuP92-Wm>rq.M J|1؆Jbxm_ +e6G@@||K0I$~ Ƅ}ćJSq za0RX(E b{_R8dkd$ܮ WR` A@b޶\Kep!L*f|A2f7Hбku :>fŌĘsfF[Xf Ưw~)G]S;s084YG<!"Lp,~؍ ,. :X+He Uҕ⊦j2+9eg\Yαl \؞T4z)v!iL1n;/J*RY!! %WP\Y8.f@s*p'c#nQW 4@4E;b $t ؎:/\ 3s{1kaE2}PnnD <"\!ՙ/r D &0CO X{u7?-(INͧK-t(;~# 'h},>D$ꨶM4E)泆1,1XZGBfy|+DX&nESP]c4SXItHeT3Ibポ]=HzpZa_kT]qb&2_ΙqNk6#0Ar""dv{Mم?1NCDĎP{3 !$>45UL1wN-A'iG^q< ȜN .?p}񰡳Cwʹ+"6,αieJnZum ,X^r,oLC F8Mϴ"xn;dqUέUƈ8*Н*sC= Uc`\%_! g΢b2vOK_j8n'.],we !B"T k/Z2=!==4 lOm^Wf >=mfk!5ͩ M"0vb 诘/ kFE8_SE|=aܔluwPG#16ФABQqK{lm0\CY)y 3f^N?_MK׺ *3+^esHg#$!}Mjq:T( pP#@AB kdMͣb"X\򪁵m 76. حyO`{6XCۤŞ~js0kY"&C8G5`z3S6:[:"H @E va^ɁF9Հ)3/eԬq@U+9d`yTWl] RAF9Gq`bՙI[56A0Q vdW/u_o;l nVWqp[hC5c] ZCNzqHRি"ҚPirsqp20=ffJD@Ϛ%3 dv K1Aܩ]S>ϔtCkW5lzTm6j!ةoy+Ar:#&KE2T8rPyWo8n5C%MFɅץ)ImB5KSb3z je1Ⱦ _S{0"sȷs 3p>\p%xH(Sb{}ۃBNмPjyAv7Hw(hnsghu~pk@8.]NK QN?N+xM5AMCzrtn+FR4m4/S-,RɡaLD Ta,W% J'(σ> kM QжjĘ3 L,@Cf Psڊyv,(\(R2Kh^a O&N*bm%cCO mc@CBx eJ{W׋\W'Ѿ#m5nfƜ50Fdf;deeSvJ_`*ɻ\ L١nO+* *luo@bJI861Vg$n•l]ϧg9`.nLM HK͏Ujk0r99܌di>4+iFLLh7A-oŹw |PG"dR)w(ևc9w}3BRN4t0uij3xWz2(m}뾔⯎wU6ZnE䇲RjyLU 1`O8ѣ軬Hxu%#wv2]r/BfFYa)K/F,P"ӌ-iS;xL1Pjf[/Hj h4 4?ݘv]*Eю!N}k. ^bckC_>cGݩ/Bp9g{/z]ֈ?ҝxv*_6OƌJ`J؛][-N^R)F ʄYBQsS'FX?E/456 f&OMůLeHG]/>ԚӋ;lq.i9tƁw&JMGaىƁ7ȵcvs!3 RJ0_Mg#Jmm (Ÿ Z67Cfߒ2Ÿ9,b>k!T j0u}w$s WwtbD`j[zڷѤ +(W(u]GSBY,o"6Z֩ VCC6}?nȬG4x @:S%`.Yq2&sWbA|0IE vdA>; 0j!,|-οZ}4D2J~67c~3VdDDw ^Y%Gz&y{oU"YܺojIf4 cc4@dX$c mO~OσHV/ZR/"KY]92?Dd,Uœ=߿ 1\(˾TPW]b3`@5mZUJ yg#qH2ƉC=#LLUbxuurmYLe֋}/át͌80.F E(&{6)&=O^)ApzWS19)DY-TW~ז iM1x2< pȂ!t, )w1XQ0O£JUa# R[ J@9W;`*xDĐ=kijR]/ZH04dbZs.d+7α=G$bz*81U*_ȉ6()C2Sz'l74(^Rݪ1V5?nXxFH.j7RzR}DX-E$Q;Rv-8Q"c,xy:[c[i Y>*Ɋ^]6m0)<)dTP,2+H43+MCE8lޥgO]U$V" Sq-عhp-uuN5 f.pcBtnL̮-ٔos]ޑZ,&nBxT2nj5oW[7,q IDAT,%T;CmxUߍjw|4CM[l8f*#H$Ikv՛"f')ol <¤KaǐQ@{9ռ[`Y/RmhLՙ+R ZѽECOm.u0P£ ܁[ߍ>%1AcLp} |}|@ o U {I,=?Ֆ f*9&q`؀n/[q!= F~nG*+;e*t˂]_D7e^^<k iHgPl+%Z)UvadUpb/@oPg$aαûz%Ut[w!6d?u%np|܄{muGe*g \0 }%+|gi2If`(>Ms3ŧ\Uw|KT0ٿMpj3φ()cJ 3aIM?l_mL?]SoY㋔c*æa0NK[[Iцƴzήi?RIhELW]߳+q<] )1ŔLRŋlʗZp*ʪ-|2TS $Yx@ωЯ#ZX/DdxWͶʊy'Km8v!b 4yf`6Eܼw0b^$s{⫽~A;MBSջ,q]9U^@6Ŷ؝`:Mق>R\^ 35뱏|,+uq496[@#!)!1 7_  701mviNZE~ 4!-0۝{n/.@zBOc Mfn(%Jz p_3KdX'%$2`7^ɌZ 3+IXH=$snQOPoI َ[e¬@M1ʲ v&o)ޘqj;]'!3! ŰH)(8ξ牥vx}.24yǭW$-ğTRerdSly3LwF(aBLfXԚy11C%Χ5cb5])_$65`C bD,qK$Foׁ!JH VxSzUnT@waϛx 9>AmK|c@LٕH ֙R LJiVz,bӯb0<:\Gé@S 2b{Yu_ j&(˧$vלd+MR̗? 58lP,L)CY׸zxhvlO>!L(D[糇e=[߭͊`ƟjN r)3@zrM2yO8 f3joMLB/X ct]z|pFB8]2i(>V'kb}kT.z%S`kS&-oT1 LDzCݙoP7&hj&Ƈ)ÇAԾ1$ )hx _FN q?6+|y٧^z3lÿ}&+89o`ާ[ &i3J)ω^8]EO&} ο5@zBJu 0u"&gLO-ŠbY5n; m/DiFcF!C#,)\h#O1Pp' k|9> WIcN*mĠD UD M>Ae{ٖLքt¼Jdhĕ_9.-d<|p?nnSwvC5= ~D m jkfL]םHݐ(RpA)km2 T \Tta+h yKp Q,aA71e;ض-U;vfRpmYEta wiO56YegeXY~)_&!\rJ:H/;q`׈wIb"?icrw|BY1KJP]W#૪*z%sQ*"{n~sp f0YY0j4ꛓ5UtfX'Zgl[39vCN =;_w>g(Uk~ǖ]{`M~VԫlVY&`3J0sKPq,% #e &ZMYs]-)+&mMZK:kAd(pf2ѫSψ&KoRM̒by!>5۪fFIukg c{2-e{!KU#]HݕRB_ge)LWnT-D.ń2O}3#1'ڕg "m 2z 8N]8;g`ڎ, ()an3FؘB30M&%;eM7\acr/ '>k&]\w6]#>pMt%Y+ξfxTm^* CP6q\aIgS:Ԡ3 +ZJn^!Fێ2Z`Ōk` ^q5o%f;K|`r?v5̔-:;c*T*VGWd|ZKJtgB覎-`{jW*/eZibCJh7KnM)6 $DR!m&׫j (k;₴nBN>e-3/ŋƛ jnڸI%2efj+ffםm?+|Ys3&+2tsxaAAzzmJ;h$d͠[ji޼$az0Ec)b8r72WߡC6-{OS\Ae Rܧ6 d%O/]R˔YSA\6`Iձƴιu,eXc%$U̸ c|F9x.@ LQI5o1FS d3v8;܂)sb[3N@xafY+wJBŖKu~eREwt'ܢwvx},)h{J|߿T^|VKe5:8[ͷ^.5͛ 5=; *D{,3w$T`pO ;"buT)MB==(t=<;vf%>ILRۛ~&mvaD #^.kdnO"+ץrꚫ3D QV4P~_tOu6;9ZSТV2[3> Z ;e[=jjѰTVHPuξ,94^yx}lHjHEO[,ѹ/>7l2!ftV(,䋖<o E:07qoh e,-Ţ)R!> bZHQrZV IJe9(5آRijc̿ c_FI }ݜez2.tV"VW`eXZS"P Alg37ө, 6P0e"'foW2ޘ)7ԧI ݗ:z CbW뫙 .5h]z)QN'V~p2O*RGn]1~O&g3"&{ ѽj^;@'45nݻ< 0X @3Y\2n6H9!󥺝qDFk~.ٔ&G9T>&<23 Ne0E/*N)}._#յ6h₀NEܮ;imՂM)ZdSc&!.j+zٽgoەr㔢l`VNl-EΛ|ğ*.g@I=W{SO,F&53 +@1n7LX*Vl+lT(/2OUÀv'ocһ|jM;^7`cprhdn16i_>MMx^DU~/^ uɡl(v"*Tnc!0;c"eS<;:%R5R\Ae}n3` ֌:9!l V-Ё|*B 0KeLb#>{v%X-Ձ,n7)|>!UdpB%lqr[p\[sFٴRLCO4 a}6RK›:ؾvl6I`iI+!A0 8;sWZ/OLih.kVp:Zo#("&lJu6h@gnf#p E0"cb;3O ;" ;zKV"T =t{Oy=4Eٕ`*@.D n ffg ӊ+:HdC0f`GZhY V3/l\~4!^$")Vc9;&Z ^!WeÓ7A"RHN١f,܁" ۯl-e 1.9>3SMnvc[4s-ocٴWq͸\2cf5\2`-xft K 7)3l [WB1 d x1r  $ =}&K%CZ$&d#,{zlfI3He *Λ mbjk&wY\7!j0>.x cw6ᓇe61ƫIHY͇ |3Z+m$C7q5LR:)/{egRRp*-܍_`v`W6z=#ѺWsv-%`qϓEzw=<4-U":tO+ `4ug> rˡw`b<J@\'EhC>*zdv4BIKsPR!DD BWК>6}4kbA_=˹[-w3ReJeٙ8I:SVI fP>\%l>[ IDATOs4'B 9f4^bj +a0DTl)pZ!FH& l$<:A $E"e~ 5s؎˫dʗW+KpUڅ8G_{ཻfhQΧ"̷vLnȂJ_ 2_CS g">$K*>)y0*xy@=ƴ޻"!ĂX| Jl׍ xuE,>$я1YOAc0;#>EslFA>~w"XN1 swzp׉CNK~dWM{N*("P(K)cL n J,`ݠͳ4Z;mE36!)t+f`w|8fnۓI)wr9CM&eDi,>5aPDw a}ägDHΧ jZ'un// _&]  ?f*gR޴)3;kv6")5 y?ahX =>]*SR݋& 4Z-X."é]&:ݤ(}[R3/bt"ۥ.9`ݰ{/%EJ0aLIMWjz:,٠'F-?)={OS5)n &K*!gˬ dSWl (@ YMFY?W7:`w[_уvw{ݻ\6"ׂL|X'到<3g aO>;Te/J9D:&+%,y"TBL/@c昉p&¤V,2Xx = "aZXUNCQi,|lB?L-ȼ[SN!i ;kXһd nd!eA~B^lv^'#t;WO/Yi5]qe$@J vdw& HRn缐BGVׅ$+얰7;zY.if$TFK@,}]8%3^<@ a:tŜEyC&e(}Ϛl^ZyT@y2l-+3q{n% #x)KN9$쒵St03~ؑ`Cl,v&~KVo]bD9x35Q ar,?,3fg#[͹Y56}YYjlZ}=N>6JekȂMă U=0/-F| #-YfYxJ-xM%2,+SBal%}osn[$nn7 ,MtZćeJ ?BL!neE21-;U]$@\$L9+S ",ĉS.(L=an&JQdK9DV˄AxK?aH0&¼:!_bE'·˅-;&Qsr s Qi^m" xnw0+T:sjtcC16hi86PdNdтd"xOHTķѭږ;Br<}؄nY*>ijؙ`2T,e_L(.gwHgf@q?M5h\0gœlJHa{,٤dA 6=L{nlϗLSVȨ"J T쁷?vCSy_O/iWgfUBj7?OɄY B#TU }o}cJK2լFWZa/={xnԞXx9O 61@/x0ib2矈qW $N TV%3M=-  &L9e{yLb%c^ޟ ?̃kTDf% 1,LSoRzsn=c]ShZ)xH䴤0Q;Li`{MR];Gx3t7,"U{lmƏI L=c?c?c?c?A:)c,ҔxNXr}rd=e 'KN=?~}<'x׏p`$ VwFT}},?>= m} Nz^oϐ{7%@E,@"DžzLNJ0t q؉yߘ|ȡLMN3xo''fXz@D#1l?F{Us_4{ƻYN%v].'EL!sU}_9T`B/zLt11O7n)_;}_s*0=6V~$9Rh@ U "f&S`y MdK s^#80c&$=&&w[s{Y4p9eu]#ܳ"@l-סp*o3ά*0(p0kt1 6.} 6'Z,d=tCL(1"&GImˏ3G`[Y ̚dx TX@e~*s;*;SdQ1CEn )O-3$ { |a>pL.vC}! %@7lBjza''_r/8S]ujgybY"+ )3|]L E>ߋ&h;`L{ tnyC"HJUvlDvg!"gbgWdW]]^-3f7?9 TADPOoΔT+mpb sGcl*G;hb&ƒUB1[xP6cי9e'ںe[.`Uܞ7U e"ZTlvf^([_  pa) M:3Rٿ&3stRP#Om hs KS#$'O$Ӈ-Oojsr>s2d4hJ]ЃHJwEK "TC)./kwU'Κb! QFǪiC ~C@;! Δݮ@i5{KK?O:Gl͗Qy|C[pf9@k 5h}Y&A'+A#.%@S"nS6'_ۭ0F1 H>p7$| }nCH;" e=NJRJCtV߀96U\Zk(e 2pmZ0dDH$t/s /+k C@|7B6!lTV S~My<,vk S }U:}|6Fd4t1P~bz_gk?RN̝vIv` t1Ld!ƀPZŴ $bR-ʧ7W[.^-U2UٞP`yܥt,"#򇟞~cdԯ3WjW7`NnŖB#l`EQt)!<(|c8iNJ2hyaHgjr;7GݵWP=e>z_v^+ԁ~g?M%35U߂;{MZװI3ZQL&LK< :" 5MlyC xB fj=9@5g7^~PX..nH%G؈Ę!SE.+}ʓ?RJ*=%[: szcV'1M&L&{Ɠ\̜ .-|1V3Cc~c: IiO(s 6TK1~|?ol,m, ۥC^ӣ )~ ڙgF&ҜeJ fH`Kvr׈bP J%OZc:fr>b2ƭ_W!b%1v+{1ojTɆA[3OmO~>ۨo:{Jet:d2Y@{6L'_'R:׼`%@f(:&ֺ\qsc';Ê?ɼbg~ͪF4'xF"iӌ7&t0J R%lW}P8QQ6{c(3"{|DYDurk26NYNbi!Tka@@G %;,TGX54U>n`>VKTL۞:;z- M-2ES/ x\LYgGUV&;s0 坷aMT+C?m6NR@~T'c>R53 kq9%c@ =if8J8!7 f؀%COhIOIM/|_eo'׿>`l ^ t( ]19-EXI?&L%XTu#&W>᫿tOn'oNc6M0\'cq!I6OEW,Sfh wk Z.lufn`[`\pZDȄc>}Sh jrm'mNo{83&7$|{Bݑc]UpՈҒf|CJ `v0ג"d9iRs"UJ0be .['18KY} l}YdmbWuOfLbC̙HeL?PYWu!]z֩|]q 8T " NQq? /y :[Wo_bYyppCl69=yB/<[[P9dg'T1?o-M"QKgR·&E7KR_6jwLKR:xgGp 50-R l6|>ppp-؜dQ5GӕU0q-ea.Yp8%2Fb)mECaUhn.j2}Ԏ^䞰ֻ2ZEFR"ITBѓ>hqGDzcZ)gM6Jy^$jn2`6` :roZLUU(UU*LsgKǍEw 7"w<~M\(g1&Q=2I*>'"Y=;W{'R/v{xds(,dA:{KH:U&NȵOׂ34-Cq:rޏ`3u gjϗO )dtv,е a*Z͚$/PŠsymi"=I^a@#cN݆ؼK| wBDY_}ҿ `a:0ZTgǰom.yg9"~\UU?WU8jPi ?bg̈1d랖yhN IDATP5i@`&1 (?|3ͺaբ)\-EBT.%y`2K,KSe/j]ti1~GPG,t0F `,NNpKPGZ,TY׌a>E ᤐ!pB)Rsǀo6"TW??'ƜeVF;[wZ5|FN:=^D)_޴\VQceK? ЅTe93 bx ;0 Knzc#Ĝqkm<2;LpW-3FlL$2UԸF]y.vfEzKjRNǔLG1;]P1cbZ٥hra6Yzq{zMB373SB ˫U/,k\t(["B$>95_eoOaWpxe7nGG'7x?űPLФ6<;r$zC!"\ @+tl2+|U@ǡ %nwxC8)+¶ :\ZO~Ne0x[07ɺO쉒e:R%y>O*uULk/[qP)iL;}X| K )_)u6%7 [\k-)LK;KPM_ [G:{*f_qrqcB}~_#=R@LQM_O 殉A}v wz3v2H' z5>TPƕFUMev A/q&+H:V_T\-:[3D(M7iǜmv Nb%= >58v)aG9Fwx,wҢAަ=\'Vj'~Ze0l=vU s|,^ɐS_E//f^!N`|?"`Pخ/v2e'e0^:5Pp('ʿ})p=#»xC Bx0gOL 7 E}v T[0S&;{5'; ?VBi0Tpd0&,k%o@ȶD|TH#3^)@v)MaZs!klqN &4C7#RkWwt"l{* zl5ੑq7 ޶{UGGՏk5 ZxTNZ̊H$⸳_&_vͦ칹KLot\c%OV[l+o蘙ҷfL:>7WE+ ;| ndC]Xʮ }84%v3߅Ώq 5~9 n502ԉ?E9^$k?%6>EYk*+7g* TA,ܟuzz~\xt>ZTٿFC`Qdn/fR'}"."l<\~y1op\̍ha;_2MɏOWLP,9hN+l}ruu T)d[> U&\! P(Du{ ^0fP쨉GpG\,5ᙛUxMNZ0xt/i;JM~ޛJdgb1wdfe[wդ68lr(R3AyӃ~= @@z 7 #&{cnVUגUͻfGqZ2f,wwG s3dy2AO]'S;OmDfmaWsJhN5=Z8T#{Aaw=v`eh9Tz׭& \!Lx OQ гX6 JB A?SObv>sĻ$i &kgp_'Sf6XB, s|1/4'HWGEQ=%>,u{۬:QŵC !hSσγSMl9nU]랓h \jb/q )&I@dѬS8|[|T$F / w-notض_Li'vPUkՍrH^hC(r@CI7ݠV1GOL9P4vgp^zBVP K1>zv&;DeX밬30?<§SLx mCMAfРOiXfw9gpEdxyTmRPJQQms%Uy/) 1eRȅK9 nӯѺYmamD^J3ݎӽo`[ ®rӵvQ!c<~MT=.J\"ڨ0&|4!~\ކVa;` йb=4e0v\g݄mox|L^hgg.Z Jt83e`oO\ݖBYۡF2h44:%c#Izܮ6a 1޳a uk~mל)L4 858l19 6aVsDZb;!mU9$^0,s@]p³fөc#u_) TR"%W%TS3U%udQ=1ŗvy\-UL|Kk9r{HڙQ[[ _mdNP^).גgTW8+2b{)hY9\.WjؙsP'q@9"]V=ֱ4$x2PSXz@͟l` z2smHVJh9Lj[c1%SW4Pqu"*$ifm7!ȴ).&33d1',Y\΂\kzdܠ& P$bq]\Ђ#Uֲ2-Sc8a .@(v}ykAKsU4VLCČkm>tVg.}2ReC߅wB!=aJb{%@ZQOrgF(-"\R0R E4mQ xH=VEQ2G[}շ)zr[Ō<ɈBd(7ئ[-8|}6Gt\Bcs6ulk?`?8$ɠbe6@sfHG, fGBd\"EX0WJm=037)MXRX"N81҆o÷\arC)i[Mop-ڑʩh܁[wևU2pO;~ar" R R<0dF@x#3~Xń ir|@ީm*PG/R-13*]XZfUUϡlA!Y"r&XDaa&1* eNg)w!8bщ0#C ךbX [c766V{AoW4T͎/03ڴdbbpJC rvGvXY.n6ᬊT%7`.'%L0B h oyXu`D}&f>A'"f٥"BIиX@"  MW/ #-1 )6> wٱB t !62o|Y?O1})x]3vN{d13}FY 1BJ~zb0J pA#`j =/ӥC*2;;. %n` }#i؂ܧg@cS'~_w+\876d#|鈚e&37PYY}6=ɄXAosw!~RLr5YJ=C YH7[;1O}֑4N'M+LU_qsşqRXK$r} ꙏ` vzte@SNu[ 4DM?vFwlSM',zׇ3@"ݹtH*i8TV!_ى/рޡ ]6-C nM 89ݢcr"r +;i/q>ɹNK`O[-D*N.7f`*f"5'O9@cȧ3S4uy)l|Rf2,70B1h\Htj>TK+uoqsaN`i9ǘy=k}l?NAovՒy h!D\SHHKO> ^&H֛Er`3؞FnLY+El|Fh=HFf2vNk\b| jv{ʀc uPc 7x cw;vL(PcYDN 3, I(4%v-ox0KcX]ks4t[ÌoQ^VO}V?m*!`=DH KqT'8eB:Tu] c Yd̰^nDԩb[n OP2=G~Iy B{Cjfv+?N3AvmWOJ +hBʼC]cV{?J驗!&t[^s+6~a @ed@2t]Xdx"^S*cr{eD69|kuvӮ?ey rqU24WZQm4PC0OSʦ'CRԜR| IDAT+ Ćjvg!@ -~'0츭vq\Ly*SlYDo:"Hg4T"Qcj!woϣ@Eu4X5MjZd]f;rMu)֊tLC2a&F@L(?RvȌG*ˊ//$,۶Gƹ1w޸sS 9c w0w qX2&k&Nc/+ &JdfZC/i.j0HL@izuWؒ6ITXB47U9dP`~4 _#7:7>7%2+@Bkp++GQT A|Yf3 w; lʂ !lגXѴ1'TGl0@-w6:NN}iJR/u 禐?ܽl"<ZZ 0Jj*OzMU)/VIG26&p$H1V@$fVڭ7έrI2D)@4~^(hoǂK uU^yUc)feLO%y_&s:a ;Ja;iFh2{0ńaϦ.6! Rx k%Gx"*'ːbBZ3f\9f$LxeXN32]i-oŃ[ltj4^?W%pY^+Q) 2dXs )lr[]- (10-3nRln“爁gå٬4&ÇZp'i@t?-.;Qnd䡟OfzZ{cS+-!^g%+$/z.AN)N3Rܬogw`f (@РI!l F#EîV'wYB10%..4VHeNW"! .i1bJ/S^b)oc]b9~~ k#rH9t҇|b۩Q1CU"RM/%Yk~´tm~o)7p- f]9(5_a׆Cc4fb |ηc1ltxZ6kγۉ @ ew^j+"r { FWͮ,Yrms"ch0L L}뮁S_cxx z}GNNQ sQ1U69%~wk֨UJewk+ٲ0:&*Q/ֺ]w KA;KD>v'n5?AOƳH/ l SJ1N{ {Ѐgmv_@g@YeKB. 6 92.AL dakfS2cI DfמxկXM69c0"Z&\8q|bP@v?5/NomR:Oب]be ݰY ~ ^2(p%8Ü)3' S2[ xVEtP.n2g"kڵfxI!Us,hλ0ޘj%LB ,o]msZWL3ᰂr75-??Б# E**];KƦ|]Tɹ{zYS3Ox"Kz3sA?_wncG}V%QxxyVAs'x+Ͳָ 8'Dx^tN󤄊9cUD;TWQurV3V,_q!;"tPa1q%G gDc!%.(4%XQa3Nive*ʉWŶЬ!O3YN^n0S}i4!A8kWv2.}TR-| D祗o U = gxk' cc!<˻Ǜ ?AI(iZ .X}TlP^>Ϣh ٌs[*pLO¯PjдH+bcRΔ @ۼۃBnd K-۹ !oo^Ȇy*A2MM_/u,nk'fv9*頄9SY_ 6Sf4QS6%ucp-cBDxk` cn>j/V>PWQCEn0J5]/IpWΖp'pEy >YчV..SBĘyJL.%*1h'WfW`LI}c|=.b@\x 1|-j&3TI$;X _ eD ]lsbwak\p|~a(v>dλ9md. PW@FiU o|*/yς'Ԟo`Li&WIL!"^->{_4AC-wM[ˮERdא`^f9~O-!*}#^7n,P &h ZGViW][`m48Q,$_ٿe[/(Qd6sKV,iĤZv`m&"۽(R%@h v%UMt0k6[**Zm8ݍY(Gd-e3 O1=o:Geq@L!ykv۪" )ڧKa`~Dl24ӭx NjaYخIMFP}<Q)i^G-DxT[p\&d F#к! izR@L&[1&pXHZX-38@)~>:ekI٤Ɵ~uTp<YK( @op->ZҩzenzweٯpoZa>3 3Q%{1 +Gb.YFXTbFm~e,X-]El ]UJTNEFFu ok<Ll-_K|ոnbd}]1i_p|QbXAßK,YEI7 Ae^d@'F: '{eL>>s3_DE9V9r*+0u{-S7!o`Q_>h!РcU\pv끹]5Q?utֿ+Kď\%89{0vlWL,x5! s3kr+nsRݥӇ7g/mȏ ĩ Y-gbTS"*׌Eb~_*Ä9ś~9`±{"uuBylP=.&}>᜙"=; _u5~dS5u)!NO?64 1v2eQ/exźHj,6I5AǮjn P1!ST 8>IO12Cbu̸Mv98q FɄ()a-}<=62M#&%3wU5nv5^R@gY4-ofI'7-.1ljD=d¿~>(buA@8Mez!`BB-79`rȀ('`k &Q!KG?s-p o%f!G'quW[ _+|ϵ *2$$pڟ]&wU<1*1JXBlȂ1Y.]\ b@<©`D0L9^_ٹL11i OetD+u9o⧶Z4i4lqHRTS%3N;ŏ ߴ5k-nÜy=&Kc?F;{Ż`vK`Dz~ 0r!Y_ ̫.fzp\N4ኲK/ t( en$3\BY.c̸KŏhpY^'0BCf3tp v`s0]83wB91,~A灗ܘ:wzvNwt*߸"gt.\l +j ~ljc=7c~ϳB|P$lstK*Ƌ#a+w n*L0 UVI 34\/;ЙiWeTOR]cpl—T U.3+63T᪟Ir(pl@XO*> 6 %kw#s,ĹeP?ccXL/dzH PN-`bJLWa"^,Tf, d&U@E SSxh/cI1wKw*o^kVE0-zيw&XB,+ B]a`1k)e0]u06@lˈ jdPճEO"`.X~'c?d40U *n]ˀU ! fElKteAsRT32>Ag'kJnE&W:>mwlKnynf*""*Jdݙ|abʘ(Bp), F13u\Цhe!l/{Эzf[p[Bu..PX~HKAG@ X 6?ת 5p0Y{knKn֝75ͮ^5!:ҥO"9:Hϵq@F} !s0 %/p0mv͛pvցS&(,+;B7^+ihnyw!7%]pbӐdMeD P'kٵ,\/Ƙ LaLYMCsLݦBmclIݭ'1Lћ욷N`B;dΗyO p> =Op2eIo_oǂCJћv1fuѷ) USPٻFRCa۶s3a/˭`w7ڻGJ׾@u%2OVB8s^\d+V$%ƒ9 >e*`Q|Qz-\kYsSAȘʊӮv+3',XCz߶0Mgo0o"?"3Syaڕ0'e8*]GxaT{V R?Dcqǵ sd0#CTL1LaZǠ)2 ћ\i) kE܋+T#,Dpö`4ׇRQ:Cr~"j*uJoEp9g.n$]{=?zyPm SsL St߀wN9zK!UfkD<ŸyJsRr؈U'_\t'ERTE 4|2sCALkvµ 7)L) f[~FT40-v=;m²qoy]hAp9ؤQ:YncGx!_*$tp$iٕL )NHڱ2uBbԽs 9iM S4qg>Ȝ vզH(ɪ~W~k%U'MV>6451R=Vx2%{(?: Xpdܼ䷶Ͱt*?4'2D`#L(}rK '$90ӤQb7/I- EpWX`c3 k@dV N,_"rs!XE!\6RJꥷP.g'4b;;0Z2 vX:sBb-J%>̪"MH%Oo,ڢŦTXShL  lh$&x"+ }g)ȉ.p^L)4Ƃ2=I(>J0BL}cCcQьr,X=5` ? qjp +2d< ju}! }xlMWK_W8b=k 1VPP1cqf#aQ"Ց"Q\ SYP1ge=_ ݰhޛu!τAg9H#XCҙ1 j!ʹk լvܐF\JYL9"כyI@K[ SsKtVοW1`I? Bb a65S۳TP PY Hʡ'})iYcǔɘK9e&:F(^8P)}̠V(>E0ݟe{XXQ^P )SjV: aHFȡ̘K#]*M-'um $4kyy!Ū>=Jzae<|}4zb{)nX?Y71Êi+k݂\'9&bBv%9$0uZ xߤy5b8fJ2f,){TY|0ި9ePI_G 7x6~[h+&t.rM|י0=MI &73}_cg3EL@f,1[ ɪ @nWF@B Ɓk1lZ+I)`Ip؜oD$azLmȪgBSP=05uJ(:Sv묄pr({EA?pT2Y,ewgyV2)a!T9ydZ(ml&8)j \Vď,aFR?'M;OXL\Eό7:W%*kxP)&c[X,LVcsͱiOySlZql+ fŸ *k%HUbOMBr,a84н"X3l]glӟS,6m+fdN*p' pZj%66}y/hoec!}!u!'n׼'Sk L(B(-F^>0lpW16)`V9^1Q\|TR#N\,Y+Y jj<&بY]PdԥNϦw{~%~ s,~ TsMgوp{'"p!~/goӝWhUoz.֒l1F,V7"ۗXz(\Rf\<Ǜmb9gwu&6#LO?(D#{'=x}OΤ?6R>jf,H|< {H?NxҴ*LI+b3cRKa6OBM-M(eaٔU9ȍHfda?im=! ydac]RU; !S9*S b>f/)`Tzb)`֗ց ]Ha" *?LP$O=jqc菫o9X0gW .ukJE2T0%H0 j] b MRF(S  ł?0l_׳WMѿ|B`(x*TJK +;9N`;=G <޷sx`>^xfS {l2_.Ĺd?(ϕcq~&P#`/i۱P 9)6 s{폝XR ,> ?kyXab!XHǃr*T|< =υO{|HݵY2:xGF-S `!8ðTTR5 @'@'``S'dxs4gysvE6ǢB 1/y,حB`[bLx3jʶ2${Œ%[ɮp{1!)`J_"JN2RY bՕdnR\#@ ӎd[TV|$BȘ*FMcG$E Y=ȃMN>vA`{`T?A=fGٔ ܀T?c?c?c?c?ıO`Myxr|$tr3=hVӯ!co<98pǧ@z{=_Ñw^Rĉs k"2@bcMaĽ,N<"|ƨ12k3ރqYa9"̘8;'Ή0'AaA6hP0AB礄iK# b]>!7=ݗ){,2'9c~X.;i#,L{oX9ew2 F4(ȍ61u k>cox10I1 cpB r͉pQ n- ~)VY'If,+E 79"h"yα' xNJ9~\.W+a1x3.\L.~rTĐ3 C K)0'xI/vm X!dpG=z],Be7t/$e1eccLV2'erBYRMst)QJ1Ƿu#xI =%ܡ2KN37f`seN|o,T3".gg~ʿ dLrF]1!?;ڼG)1g#x&aΆ@ȫb {@H(*.:9n>t5.B`AsO6f>;vny^LLV7E271"Ј7DrDX U3v\/vrBd9>{ӃɟH_ *}JLY:v8&)fC]R]K G3RX8'3 st_d񁩦Omuٶe<ö9=00  d1o2߲mg׶= I1NQ cy!2;e >f'= LP <*1"`KX:*Wm~W]=fgLGMDŊo}ok/V1W(i:͒J F?۝.#PĜ j (ajF|M;Yj47w=Q {0ɔ_vumep.t&ʝP(R칫!R I(;6e ?rM]x5Q׷30Ø%3s)ۦvv_X]ևOXX/d(C/q?p _cۚz|FAI䈊s*&?)9LǶ/ۈo+ X"ǜ܅ $J JoI)_[,Y]aR^%[/-/~Ջ],Fb@36y[ l VbȇK/>k-`fXk׷K4  *?0q[`׆*T0]ƲZiшOG&p &~S)g4}Ⅻ+׿TTl5WnM]] %DeY~<<oψ1Cfb۶ 瀐LQ}LG6'Y<,r7yH|I0ҳri"/>?9̿~Y-Oo=nYʤ<ʕ@'54JޘY8~!FĘ8)3kӃ?w&!',Yۢbu}]m96N1L?lޗ 1:.{x$ZkbL*42lרm7:'bV9&]y'^ 3{OO\j+*5YauzɻfkқѦpҼLr P3`q)#А0nz,`^ܾ7:N/K1hNN-S.cY+&!ά:>\A03jjwrV՟Ece|KxB;Tb{WQF{fr|??fmQ{wBdNu]oWUqX/_:>h{bzeD H))% %. p/-JK5aP_>(ng'\-_NDyK1"1'l(s̈+[s;71O-## eDPP݅,V6uژ-l888Atp~Qy9P5j\v P;|eqI+k=p|.FpMg)|,> ESVp'Aŗ&\Ʊc܇uX, )=6Yg̴{ަ]>U@bdXlw||t>=ଡ଼lp.5 T;|ypa0(kMw-SnexITIԊ4\!>`p :cf꾌#qucOҿtE'gr4 W#/gbXќiX/|3q]}z{i_;88!.]뼋Z9O9;4GtaL-^ʵV*TU!unB#ll(D>&mlZ;q`)prg/1 e}ϙ1 ϔŋ0+1!@YDk)G{d%xclIԈ"!TB`{u|ܼnרO B)x޵Ԗ[9VzupPj$}]:Lbi>i Ld,$:4XDF @8"`ijio3d^4K#ćxb$FSfN'h0Pd܂jJFDte` :QYk17D<ހn^ϯk|}UY'ۉ%8NrP|!RPԧΧR=&ve[v#j|d  n`Ubt s#Uuphꋐ;x1PċsLf_Cd>ůr6PfT3㻽ԁ^Z, oS>WA]Kϭk/j|i,.!C(D\@זpDq gX"BJb^,%Y1C F1;`iHDN%/ߢwHzyL%.0>MC*،de\jb$LS z'>R1ynpnh%=:.ϥ dzFS׸UڪƖqW\dx2Cpmq9]akGD[ N xI0%IQ") c6 2Y< C0N+4׮v9;HDȸSĀ7*r PaPf//>g|r?Jx2e->{{{=k |}ƫp4 u./zͦmI~)ue 3Й ,/847apD Kj>ήQ/^W+BaxvA/g2 ih fM/wGD1p8؞ѬﷄJBLנ+r^zKWV EF*(HM,4.^-sϩv5 co80 7e$;8Mާ6&< zҁ5R},{9-Oxyz V5nd4܁+$XpM)9WT[<`BpE߉vu2xg\6<vv$$XIw3:dReOx4*%5895n)\@[rzt!t1Ckg`ꪔ+Uo:٤A&XB{pMkL󟕲zpD p XP:ꑴ<hSf{ǿ"z,.2-j'Q&LY0c ϴ*W˽g_'DXPÝ<z>Of0_; 5uYVxVMH/'"OIǦX1ЁX@",&A-ȠD"Ktq R!|mc=2HxL$G;O,ƻ:0> K+l^xs1d MBs >]Hг"KUO46&}:Rmp\&+.=o{mBxG4 5.cH)B-.9Ic/^IJdu |V-Nc?D;|jk2 $yg5>W1$2@k xMBmX6%2,iedG `<!y}" ]X"ca6dbd' |7AG]!WןC)1a"bZse^*#oٸ8G )1}S!5ޒ,8Մ|h GQeIu Jd m?&+GǎЅ$ ,_KO}гt1d}\م"E04u}_,Ím@E4>`drwB>ev 2uM< Q8p3eϐfp*x͹^a8|FYP̑ʒH;7oBD"իCHwb~ƿ mR,<:黙DBu vn]^Vq-7n&qfmB|IH1S{ϐHi5M1"m-蟠 2xltm꾄Ճ4/HZ8{)W5JLu5SdrvOL,f~k3MfyMTg2CPl6t1T5>np>̥wuMn-]=!ֺfr ?!p7`AfX4?gL.1>eo'rgW3LY7!GfXAZ\KO} ]|Sdj YB\5ȟykNZ>KбM.9#nyٲP)f1u,} dӭe ,d ˩}̢[c {GMz2pJM|! .zV#;& _^LE_h/[}6 b;=G dk<0n-E)zw׉0"ḙ@ljE5gs:R?tnY_DA/RVnRq)0)Nfc'U؉/~9XXn-.n}-s 3|*v ylzw̻45tNI6rr51K; :xx`X|V/h*#Z)IRW1̨xݦ+#tc.s-P嚴e0?Saczs&|GۥZ9DDMU[v3]]4:7 su -.x֕)]SbJQ!rnJDׅpP`s| %5ވj"`\XB}k3Ï]`1l:֦ycWh֧2V)V,+ڨ.)t(:R9ۢhSҵI[f :\6>Nc>S3PKкGsrv`#w!,b,PdT3"1_]+0" n"aDه )0DZ_3ri_6ïcIH$LNR;P/&-dH)#4IXQ k<$# Tw 蜝|}npuNm;]eʫNJ.y+v\$ŕna֒ ,9I@"rLs0^/{; 8Ql%3.ItI|\rf_\-Ů^Mƀ#Ɔ'xAy7 IJcmqpk}UdkzLq1}z8\;}.ƫ$ۭ/:l{u1ٳ"D,-J!=,W?*| p . ?v/=5M)J‹lS|jƕĚe|& y, "n&04g$̟y":]47!4FY UqX'19\|'(0xE,~ \A))*vރMiU?f |C{MQ s;vJJ!kߌ$L ՛W@HK t:Yu:giw1m6^: WluJU̺H[Aрԑz AgR&6>M>!Y*{#"-jY6Q Hd&dJc P1*51G^5ςSv]͔uW҉JQfjR+zLcnV7:kA$Uk~]\+Nt,۔{ y+j|k)zlp_R@K0YY$K T U.6F7MWLe.7u $И)7d.`oAyc @U{?$ډ [;>ÂgW o 20璆;?α _HA06 M,Sg*V$۠* 5{eUA Dx&1kY1;dԖ|2A|v]1p6ćG]1oJ_D MdPA:Ӯ`!+qyQ-/ǔť.j\V'"]q"oh&@%(ek Nt+#8Ӯj7[ imQ7sn>o})R1&Hc=S>CźnTkSF /@L(%e7 UR.mnjkN&yebF)L޵kȘ6 ߗg2dsh Uoq3DŽv22%B3#UK"eiXnٵ}YQ=qdw=2xE!>r3.z"뢦Ēc, 5T13~EZwSL E Cm;nH4zLdl$K'h"<ωcqNlT7SR,$8A/2?%SzE3c!}iI`ɰ)}cK+|W7Bۓ{`̰qwl<o;}>At 撷r&0evzt*z?KY- zzϩ!8 6;)hPe( Hk< ċb;ؠI]T”ODp[iz5'ta4E]!lQ;a?| D ŸDocIbh.ό+ń`3~[ӑg5{O_^8`ĒVN"}qRSbhɥ-Vr[(Fy}jgr1P`8 x qǮ %)\e3VlI /+<` uQr$ OH?v v3NXc^$՞D߬9 <^H.05t9SޅۨxJ{\4HT\]qvzv_oi z36\p%rƻ"1 baWN"N?c;I<}hYYCɽY@ Nw;8˸;tx0tA@x򺭑T؈r3l&Z645+%wHyf3&F&c0HjJJn0Kbb&67e0K"Z`R HԄѽQFZ`b@Cr SY2! \,-_FJnͱС%#`MNtsoWyM5eS5n%%-ƕb(IeĒyLO^VEpw.l?ƈp[tWTa! pH sRSf&gҀG<ą'CU>r;|bwquu4TeƔY> ILFHTI sl#6'ε>x 7 OD#Hta47Ľjk'\Ejrq=4͍z  7Az2oKYױ`sbMfj0{1 _Z4#&Uӫ9xP}"g"P:$u_,0,[dofoj'fNuRR +hڂPD-™0ޒYlRIV E/\wCiM=8vE&mvH' GP}hQ1|+)$I4KS1wpÐ!ɸ;eMa/$c”.v߇;q/SQ6Z_\sٸA0Gz|)@9f$ M8M&.Mu&8v2ٲd][-8d3qTf0VPIri;#j v*KDm,>:?׉ngI|፸SG՗Р5%=E(ځT_c4_8b0]HZfEn_4plrUCSAQީjbs$!Wti0U-5h=N \h7 EuPtJ15Dxy^κz.#GYKy>)mAf YOX> \:H"U/c=2 [$<.YzAkȝ&?:n >gd)UOC#?~&5&|Idu%mٷ+xK[d⮚;Е !1Q0mπ5CKѯjԵKsyn *1)tA6w&cf}{a]PHm7av)svCMSAP>>> HAF\J걒# DȴnLn`fI!Ĭfl^\%cLj`2 XzF\}ڋ5:٢_֔h'%{$2?F&L8.S`kߓ Gl.}vatJ|̤p֠&|7<kђK$(ݱeg,b`9aD{RLQL5m#Av=;?[5G `^BK9Zv-Zv*BlJ2?eX*gvk  ˂ 𾊱vfS~}5ks 3Hp8vs&+^Lyo\wJ%=&}1M1Y6KH%nDVTGVڲk6) A~Q.ON_s;iUK-c؀]r;>'{DEzICW`Px2]CB%FeHح['MrNbY\]F@"&*,CbXb?%]˔@=̂Ph}wODuzjI59:WEa;+vX OJ!$wM'5u9ܥg -jnfX N =.s!yNFȢJT [#b5TgjdqtIodКq9p#9qdHB껐V.z#~C زWMfF]E!}U/}E+HR¦枛~Jsچ!uqڶˉ0 '&SG^5lw$Rgcxɑ+Ir`9ScW|S! *=) s9 Z}%M'܄(^ҍ2Ǧ*MuwZ)k"9>#`Ŭ;\rCc5,(Y,p 2,clw6SX-j]/Y@8mqX.H3ʉ@EߢV[r*ƋMbIkjH.56#:$SV#o WKS߲(Ξ:j9, w q)I)n[Y x g@ F>O~w^]ǐk8¶Z˃¡䟜dD$Mx)ܔi{sK+9RCEMBGDΏ&Xb.g59pg#ms"> Z $,\HLre`9U6j6{ԯn)u|M7#ѦnCW, mvAg1|5T)13%`8.&)kz>7=࠭`a)s7avƇZ| O&%hBMEH%H>0xTۛ&49׺ T1Ĥ\&E65F@[R?.F rwa"}rel&t,`"ޢ*;_ܬ=@#|ȱMvvű̈́e1,wqv)bR=cP C7Ճ67|`̔zQ=,Uf@4%G@Z (v>Xz{xMd㼐dGIʅ]PDKpIbc*Ef UsR:_r+ܛXK̰ ri\|Xs@^̥A"`cX&Hl{`ʘ F栜:uw,K GRi$ȧLte |opg$r~X|Wb\gJ?+>&W=J.W41~U00|J֭ EȉL!WrY{$r4 ~:g(J35;{8J,Oq쇧how gAXˋ`]\Im7` em8R]W5imD:aSto1\;<3JBH@nTҬp~4D-8/ XtJ ć" PTX_I4b9sI[Bm0['f_qBxUf: FYFzũ\qh6V3EЄE-yjs7^/1>~3\@ZX|tY `hScFC񪔐U(*59JwN*@;:V$ 7S~9/n,$b6 `\:cm$k'.[\~O`Af+Y0"ڂpׁwܩ+E嶹uBhg'J5حpJ@vU@N:xM;pjVxͤ0WSK4g̍DB͹Jv.6b]@^bx@V/}g*a g]D_%N6u1D4EЏlgT>-UܷB_šB\xq%YMiiBY9ߡfAp,"鶵AՋ-Nc [ʟ5v [HEt~,!18ctQv h[|~OJ<426Hjx\M+ttJy_\.yW'\$PRĉNLH&xiR5 *W6V(p7 z2J/' P$z/eNU2x S-ޘ5 wawqOۺ,gONWСd,iwD\UJF>$0FqGH&HL)^/`A IDAT.Ø(PNi] R)`FSDx+\0:&C:({d\YcVL3jEϢ<)i U[ܒ)v9%b⪿b@n-a[ X)맋;*#ޤ˸ŋP3b)X8 Rn{}afwHD&,X=D:ޛ VWUB,p ^%ΩU;È%%>t$ ;(UFhj=\hۿk[\a)k2jg+~g;8BATnnw/G*J1hVYU({TDނSׯG:1" 4^^/<;扖  +"bژo`IXp&bS E}c{^ |J3az [ r$ P;'4'Dt܃0PH hBYMʸ& G܆j ,W\\Oq34S#kʍs.gkN(u 0Jv!̷P) p9dxWcԔp(`5* "xu=RCY<ޡJ^z^n5vV*bߚlkZ.G)I}B^ Ec0-h^>.i** 2ӗUV>%AOx Yx#ĴB=DŽ Q`4hpMX|^"[ \Vy5: -fD$-|,*_G@dO&oChZdS<4+7ئ)̛́TwUM}hke݌UK\4SՍ],MXt'oRwυ)L|pWg u9P-\%DEQdMcf9߁X9 .(koVĄN7`yjWRޭRҹ>`.7%*Pa w.{O^f^iY$ *ޒ.iK*=P5UgY(;(R'!%AsƶnN c8_ϻ{zSSrtE|3` %fAUz8fְZk{`"_W;\9[lu=~/X}TVG_ }[R7傌)<2f;S-:>VmJt+q8!=($5g{FS6sHǍS/k]KY30~_ƫl$9cXnR~nցy,Y@y9?+Oj{,]@v_~ /IR%+d=PYCvjr\5R36m;I2̘K7ġ H)?1z% nd?n'J  yY4 VWx uky3&Fq/A\\x 8O*l476F3]ݓ^@̞Ģ{ YbJ$ݠ|e-eP0EI+޶$fΜB/|Dp " 蔃/FzH$(m E[vz'$Cqx]ܦs|]tG5qy߼;V媳rP|O iwSڅ|RdRK\H]F #uO=tʱ5db3ݒc(g|ܮqʜxS$DCA^ )y-#C^yYH]<pk[ܴU6 \ T~KkXP1_W/#2yy҃Q]R)B?d\der I1sLߙ ?ǶoϨz< ^FmDY_u!%07Nrqvp3f {rh>]7]NN4KXks ~mlt/yD;, 2*Y.\PU}[~*[bTU-&| thd|[sҢyi+qPQ,?k7m9 gh'Bj@PEY"|lsd>' ".]^pokK2bct#cҬ7)L'krV*P)@$r`DmB@SF킆G&Y(tNRw;u-`e<}u-n. x5l'pc?%_$q7Ɵ7k+npK܂DC,9> :S2WoB\_H`"PΔ5ceTKR \4yd x) Ll տmR0[ F,Q\T+PQ0e{ISLi4)53SksWqZ:R, I3Al9;UƟ ? ?wv鑦oʍ&A)LyM }Ra^3 _+2P;E?vc|aZQ,~wA[ؗa8k72#ܝ}?U5k^0CH=gK"+EQ{.s.DC ~Wgy .",MMwYLm/Jg"8 8 *|!-;xQزҜđ2._ VߌTT,Hj1|E80|/OrʭVs~ᫎ: ȮwԵٿt E >3ۃ\2RD]Ϙ_xEQ,[hDx-a51LZ?tsYe˅1]tx3[x]}@4KЗgI}0vkb+P*UzX?O;ȏ-b9S*^I^KTψ645װ!,ʮ KRޔ aji㰵.亻U"h:YA'̹VKFYˮ)BQ@lTI%4vm]ZYJ%utNOpl)&ÊxOOqѤKqO(*4͊`m4v-1K.a^o8n +=HO„x80\ö>MLѲ Eˣ ;WII#gyMh}럳P.Td|ǝ4ҬN 9CӔ J 1 c 85{l>x(=_[/mRt`M[TۉW+b2iEzf̦b ~}ԝX jA7l fWw 6 =@,ڹb/ y. { r"q#?EW$έIł)* {rH:H9us&۸Jri"GMR!( .Q+Gaʇ# [o$Hvpjw+Ϻۺvd ]ߋ' x1Q)#0!QՒGDo*6vSuhB]_)G WgfӦDƀc!Gz\cf>h`N7iTj!wߕ%cqײh@mq RG6 MǩSȕ"P*c?=BeM ,^nB;٭(FӿnR)~|אަZL7E7 vF)v0743ec[NrRg!H8@D~V>S+\ħw2x *Ȕ{ckbS <p%՗ |Y6po(8 v/ޗzub.] -Ȗ0 9xy҉)[*uUlv.+EKY@]R*lm{p2շr@v7kKXX{IL5V0V}P >RL̂.N iBܹTRrdLI*fDEݬ_KYPa9c,n>!D^W߇pˢ=zr'QPZ~7ZjBo=) VB+WDbJd&XA^sTSt HbN11ِ/L婰4dbfl`gyH_*I`5nnCC}JMv -hT?T{>*P+r\`r馏ţ3ɝ6OD##]~&;2C\-r)4Gܚraɔ$̓ &t.lS̻v;4DR a\Zb>zRYs >< ^``1&%Խx~s!3Iġ} 7Ҭ+YH:l)YH@EW`w H3Ns c5s No;QD˙:QJX)ԙX\ vN(WyAlGт-H IZJu~>&2K* vOQcOzK݆𣮖΍X8}9D&A|}`V/t;SdJ,?H>h:Yͩg.1iJAwm'ܟy!%u!F1C'Ff#-s@!<#i G"~wf}ϝ7%b`HRMȮWy̥索ZͿdn٧wCVS,۫1 aXˆ֛H*) /qD@fcg0 \Bl0>p6Dkka>,Ckye]43a[]hI5RŢiuM" cnhBy*F2E\CedId;K kͯo,oyRNk +g6#;f M悆Ӈw)׉JdDl ajK93 V de NVqf1&UD$AR@"qp"+.kɄʑ[9=@Rt>a}N)+eW~0xxN,  PVT;,Z=cV]2n -E4#,0>14C50ñz݅\yݱCH\,ޘXRl1UN;k2tRة=5JSƀx†!/RR1N9Q19]~YfOH oœb@3F}'ViXQnRȩ~O!(`$5rMY[qS%ƪNh$L:@ p"km< ۻN':WX)R+X4F(59.J,uK#.` 8kPS1X3&џOV$+r9*1 >R(/#!,&R`~o"&U,=l%,2qurN^S=tg{bBa3zΕNYB"A,uh\)NhKoPZ zY1H^Ķ +Fp!`RR)l02 1\Fy.e@A ( bZ4CjhK;λX;DDl~~/2XU*x׵ahdZŔYXDbXz%]r ?ϧLNEG}1܀7tu;0S+ RLfV:(Sld1Ċ{$RH~Ͻΰ8)멛\E=xˇ`[=a1BѮUج9St, l]r\রקΛd\T+Ww,׷ǽ9(kefؖbh-T׆?. !rTBS:evH|`bBA<'PLF1'ċz㱴T7.Qy^{,w>D,%ܮ 56]7x5}^PMZ]Kc*s]12ŠMJRڑ> t srM][}V/^N}]:wq5~,nzG,mΑ&5< .T*zl~Kn BMx9 8Oŝ Ma96pBE-,XX_ AW0WJ\bk yxBD1:)VslG $'dV '5cH7ڢY,əK-眻BvdwY83H3~  , C6'=/zaԌ;9 )dSfw]Ϲg̈QgdDdԹd/@:֬?Ku *Bܾu;au=NJrʑl//'?v̈ /-XO P@y5"w~^w|SR3:b@XP:v{sgⱹ-- m-ɸr|T&{i<ʬ+$ʾ'2BAsrmE?Yڪ qrR+cX<-sM69ɮԅXn*:7` `O Ppe8yn% C*QvN IDATʬ~2 @TbnuŸm(r]{#pϬvR]DSV\(80.1iw5k'Al6DorLcd@>:&L|;Y¬`v'́~l',ҼXxHS{Kazfb&aBk: .13m7=i,) yuw>`j KcJV KJgN·6d5b:qOn&}/4k*MJ(vWǗfl({M9Va!-=Dr΁8'ۧY$eme~^3Q*e^2;=A| G zZ?XK5TuVA׮Xl{-:Q ?І,Â]53|갠eXWhv:ڍf)9 hE),i=j9V1m dl~@ޚJ+eºV T=]tK|.Tv_w.cKE m {ї2f~ `᨞P~ Pu gՔoOaAyF0c=X jZUҚŵ`\~W&9̓<@?mY?#-ߋ h q9ഋ;^w- SLP,/;'cou r5)w.Ve! Upou ҠdHy fSxC1e0*V̱YrG L;b5ikŊ]]{vCoR^gliF] p4\$Ino w6%deL ia2.UXcӳskJ36D i!indvΡ04+3bi⏬ԗ({f{q2̗\TlJ5 as=F~w.6r.8ˠrޝv9mwK9dC$ Vk>L+t:`(+d4& ^k.ĕCEgh?=el'ٍg f0 f&q~W2 9,\Yn.@fmѽ8BT-@c~h.Tre)G>\~'ʀ>5T 3ED0TO!6VwTt|YhKN|B(ư?#d25%W.ySaP~߆"[l+-{Yy(6'Ks޷-b[ 6ŅFmc c--(wY` + Me>x:5G%1[5PM9J7sݾ,o[F=JcJB|w~ܔ&;e{l=@ߨйb&=c{l=c{l=c{l=c{l=c=)BCS=ށ~?qPJ~IP۶`ܚ&o^2mٖm.7ghc w´V 10b>|l:x@byObNaW1a2;ą[Q (xDGqq{ۉ頣@L|{noy *`.06aӱs{n-m,~wcY†)>oI9!/{l) BJC1ʝ`;?﹛9_ 2[mi}1g1SJm܇(Lt?Ms[|0%ca ,RrP 7("z?3" sr|uA됨/XދG<#{pNFAsxϋZD l1`D2ʘ3E0ů"LD2Yr`|y-c&1>K(|RM-G>o H/(yCA%cc210b&.RxsoH#}t+{ J0?c13E9##A̧4ϖy;lx>Hi>8=U}y "Eg{ )%a,+&~cLI#gwAqa*)sg2VL۝&[f 9dUSBXRf*oɡGLX]!'!żmx CqL.XT`M@\$V0O( .f#?M|-~F,YHwA Аs2d.cCLd 47I2H/u9fR|1aOy= ssPcm%Rz+˸11% 0d1 J{1x 񸐀Ap)FTCF΂.qOHT0-}@1dFr&p!VKS-y$ QZ,˨ 3t׺)Q)!D:G p~yDLlbxt>3m yY 8Zy!>bAsy;LM|<r,)ᄱ>_6`Ða>e%@Y14kiэ "bf6 *$Pb=xK@kSX˜E0_s1PVTr6,p%"zu622rC *|DנWͺ˺:4ͲaSj8`F3-ĉ=SxѻRRRAk5ǔPmX2nKPYyzy"|l0f3sάk3@p{ "0Hi-( ^+DU+l{ll61u-7 =[BDaBd. 53*T6OT9L0ϰ1/ng<)}R@ e3"Sܜ\뒍NDLH]en4lxĚMRat#rߊb7"0L#CD!Gdw lgZzuìUhcY%Gڜ "&R'PK?4~xC,>.PIG{_o`uJ& )cBBY Ȳ]'%L]}%6Mf -c K&SV~֟3qF%9b;gΨy0g^1O*\<960W nS6Z1Pٿ%}J)/khAD0&[ IiR3?zMw c`D4Xz=@:H'3|PE(+bn1?1כru򔩎l5\0 8JյwqYͽc㓀HdHw)|1Y`oc jd }Gx16a3TN' Cݙ}>oG;s,| ,2,['lfmb ǔO3uG,n*p2g/}fp6I%aG,QT̳to'GGg%|~[(de"+Hν4MfZIj @-(~We?6^ ֍$f$D0ZZ ^a^jp<şRʂpMTt>Ι__1=<[`];`|2|t> 25I|ARyMY"SZbS襀˧`"9d5*\;o<# RFNm7|>Lɲ,CQAN,H|l37-]YI TE[ȊMp}|Mzq@<39R9Ndr;42MBA4o/u̪T7.ي@|8|\!ŧf1ܘ39]sYP'DR󿤼u2}@7 cai4o`: \MޖgLD)fT/O{XW$$[Yk 4v.YQ\l l 4M^TqO;d%kY;8&bb<\Bq[E٣yz2He3̆ԋ#,\> & p҄,eYgAq⾗I`s| >^ ǀ>!S)L0M|b >db!5]1p|&bj O|Qgj瑧?Vהel<:@}- sSJ@6NW`sV\_N.X|\B)[0X55SP$ B?2| {;|40\SrGū( c `b%ܘ֞6D  `Ɍ T`c e/x  rʝIwƛ#(È J? ;X̔ 6Ze+zl6"g zxU 6!ot2W& yp̔))YCf֝*f`7L5S np]|0WI"4l${p 1M])>eANtq:iREcsRka6{ L #cHY갋Y.jۈE c-w=*iLu?/NU&o;?ffƂ=;}>ndX_(A!;35-Mf{?;(>v,OU,˲l6|>nܐF]׃5ø0vAEk^i8`׋_`:t5T8P#N OZM߆7F) {`̗A*HE ` sT 'K'*#6|@BZE\x \ K ? C,WnPC߽nQM&d2YV=Vg/<^q o=l~}l: 6gex s̨+4v S^6y6+ ?c]53! @ *:R[ISk}9߃^Of #ww.sL;YYvlp QUh44(YJ"Z>?R%0 \EIaFK3x|YwvLΦ6>Ҷexf|*<{_V\|bgЕ r7Z`ymm2/;2t,l2]]Uj,Ơ;}M%:y ,p}Ʉ)2`]0tČҦ㍞gU9O'1(amŦj7Ј0$$(|~ߥцz Q5`݀93OgYt.IR*4u kl {LL~ `0g}-&ؑ\S9‚ 1`fYO.SV~ҳ+ CiFNwsyLPyeY1{.7uY LL5͢LWe/&gr;U/5>ZV!Pߤ# uSht@@ʚԭ.1(<*8c]0|>&*LH|/Ť FĖQ2%^Nr~x.:eԋί[ ,˕zi/6`̢(V\]X.X.0uG>hpYzbʏd̈́bjDL' TeP #O+#t^}+c3@<TDi ɳ0BVQFPkمk H֡0wV:78^f pRH" UUl4[xn1~»\ug(+PV7EBe11=յ=Їd42FkgǐBD ]L֨`u=J@fϼ)PUUaX*5_TѬoZT oX2%cpKZr/uWeRFf`d #y(c9P:ÙlB?v@4JS 51eYfFeq} W޿iT?rf1!]V47/4}lqhAA\#*ybFD l +EgJsFb:+ȌW(sfH)̩amnhҙMB]pt0x5s"&bpmBcN p*qanaA e%1Oazvo^}l2649p𘅩2 +STv+ODEvB}p+b lŁ\A3'p doB)% c{`;vᐓO:@ҽ.m68HX`ctK\/~ XGPJq1T~^vJ&))7Pv>rXRGg`FHMZ 7X- ~wo+DgRU.U5^X4ivmwJO045 Ϡ ~譱@thk O>3^g@)Mas&8JKYgPy>ǺeR+**wOx&f؟/:@G@1?V!dfqfߚ51_'Ά "M̪pEf[Ieoq-JB\cC*7bF h"uhLq2:ꉴ)<h:dX&/YLDwkd>nLTJzȅTADzTn:~ Lq0i|C]mBr?k|5*R,K@-10B=#ble(%{Q[b#S8fTΦnr2_G (R=l`>qY0;WR6)0U@]m9[_uVT)6r\_Ը֘U̢mBknZ~ >OTʩKw ,Qu(L9.s 4p}u^Ф#8]U싦>q/$6 F<(<T4{jGgGR[A/fg-jr_Ƈ5 2vK䴋%G}pf1idu(ކv/f~Jd 9T~)DnY :vu]|Eʼd5Jt h4{lJJ  )>jƏaၩi3R!РgoT@2fݏ!"=KS7^ /mۈhDkJB"JaU oسQyK[A>%bv"tnMTleri¢y`/# /;7@2%#ygĔrZB"P>:L)Μn2hH*4 n<`#$xJL=T-乬G`HrD㙦>^N Sj23EG1ZCƥڬ՚+3)^B_`xb"AtQE&1aCsOMB| tbPA &:Ȓʲb[`~mz^,5!3pgX5MˍUͽޖ,vU8m`(cf]ȯ\țALe* DW\5߅2ԉP 1iR'9m|fXq,lT D |XWT03kdPx-뙦^I/ Z)̔U3xҘffƷ:! ԇr*aL܄UcC[>( |YyZ : +&f׳(bZExSR3Y{wxʚ衫!Xb'JєC",)K$_\l ΢qZ0wɬJx6M| $nFIj("|,*3kFa]Pq umY+4d4˹zՓR#32&!\0H.Tʑ\ /=&@ŅGAeU}n@ W KIx6(܎\/QmFn&'z=Whk&ԿsnE6 ^Zy 4U s{.Ϫown?74Modr;T@h@'"ၱ0!c͐xDxʪ0lF1{={֠"%glwnpQ9eh&X0bfdRP]K )3v@-ߙ2PmQȖi O ~ϡO| O%,G*q4A$wMr|_>#fݞ[@'?|͎LJVbwa~ ̅]_00pSulNےs?`nƻ10Ov#8Ңq5q ^$^sX\-osg @v}/]Ԃh5P 8rEw?+Hq>/sиjH9quv OQdFg3o6{`*f_7ГX0]B Wdل|*J9X"? ǹ5Lu\;DVo'hKM jè 4)!O>.cƓL(e qx+k"`&~7>eϺU5}>iiUHZw3#P=RǪ:hUB`-2XAs7\`rtZk<YtvQtL0xfTDL /@PqPEn1 ˙zຓy3hĴz<߆isVE4RBkS|aQdO~I2 >\,u0 @-1j&a Y͆ HNֶ(˞';t1K0p'̴;kbgHՈޫjcPg?>C͌WXc<6`qwX.e- 0SJJaIܧ57x̐e=an3 \ Le YFY%`$^8KTĹĈ?:)=l (zy"[D`{ZGZka\n^; g-xXXU@(.3%x K"f7SDCd dw`{:Dy#?WŌWLf5]Zì"ed>Pz2Y&o(&#>\(X s7\Ƈ!J~OƥbgzU<ʊ+Eq1X.h9^flpֈl jx5(ՒFLihC=La)QWtb PɽT0׸Yl`?T{sڅBfxU( ʞqЁԟ<q8Ff,v'ZlxPRSRUwdf]w?VP ׌)Ûbgf0~ *ڂ`<>2bAor[ؽk?a?H]".=:e7dYR8P5}q|2Tv-b,RLP' !~l" gCU @j2;dʜt#&۫a}|͒EF[iW&7LDBx}#v~`A¦ [PHW6%L]7e;CDO鼕c¡(B98Wl.b0{M{NkfLJ$f&fFu=YZoۤa 7uʮ%"f1bKk_<.Y0;܌G= 0lO}ڡ4bȝ3)٘ps9F*n (AA@dׄqԤހ2zP1H}\}D2P `ন,Qbo Dla^~_Eb GjkVRdo:|߅qOU@'<*6uy`,|2XDQlB"\R$;o:vɫZFR(`|ف4+WX1`ʌQzj`Mm#꤯Gh1^nghplLD"K_rgV`|P,eνp۲jo5vG|BS&S& f6u{ˊћn3^0$ҳ]24K/:G/65篹'V&}`6:cJef(&E `7Uw9f1_C Ux|nD `|+&.Nsx!zWkPX jRio%m51f5Xq%G4 puCjD -`&VM"U@7 <;@%OD/ƠW qRT0 ? ·l ? Il XcH"„'oG0biĂ )jlh/V>lgvn&cclX?($[ޠj NJhƶ)ӬCm mg>i\ͶW*v=~2|z!|\zUMߗHj_;H?doZxԔ, -)/vTX'T2%>:oUn*x඾Bl'ǠhM8g&|'l @E>kjĕ(׮AmrBݢHs"1r@T|EDe.7%qA1MPnM$%Q۶gl\~a2Fq(ffZ1Nd~XͲ#9clk7lb]U?k7s 6z+jW1+Q,7` qϊIMh&}VRB |:M+n/؝@Chpy~n:VE=S0/4Sc=* r0+I%n\_SZyۡngdsi@m9@YpsYt@gsjGgӥ.M0]4hW1t6s*OqV\l/L4Ha8>Swf. Ew5XL>`<겞;IAc Ȏ~$!J͕4HȷW2BlmWX X 5zp4,qoPc0 G`|N#!R-ՠ-&M"*ff ܴ`פ(@C+ `u׿c&?[Nd1݇usDp }(/0(%b{:S?SJ;pƙN-ԌA `Șy;|N1fKi{Qo/@06 쐍s6W;sK ^RޏDž 7ϩY̦^9E&1H{eXqb&kĘ3pA|m5ZTRLMm%z#~iε:̸vW 9>^,|o]m)6X0` /n\ Eb>^/bCm㚋rnm ^Ȏ:%cv!13 ? o]M1(cD,4!9caw`&/t+ r''͞+$+&-TK &f\=c6zVig)_G;"2œ)p۽SD1kCy sv*u߽pu}߀M!bWi$\pxʒƊA?}L: 9ќKJ,ⴙ$5[T3FW_6 "K?Ϝ f指1u3 :Q9Bun22݁M Hx^A5y [M"wnPAuiҌ芍=.eC&o5Q|'܀,z}(KQZě*cfaJKMԲ" IDATcCBg9hgW:~7yBX3>Ls27xMe0^ AplQ ɢ1xZr"!a368+T>ܒFBf]fvM')\|C{PE_ˆS\!p-q+rFE>7CspQ$&LOJxGsD{+okVnZS@* ݢc33Բ158 UP6iR IAJUEks۬x4^7cJ|ƛOgMͬ '跜K@hlZ[Pn1CusNK3)Xp;d5:J2"o)O!C0}lSFdT26S㔭 Sh1VBʵ49+5׻%_b=f͌Tz133Ըnل ^~M7 @XBʋ)Z5<~q#r xzJzWkBLiMIY#zh`3.{C6 2 LOt>ӆS PLh޴Φz?Tq ?D\USu{T{%"I)dDliHXfM(m&9H)kz5-FMti^g]I t7c$9:2 nKR@QAٚX4X7GO wdhH(Ҽb0";4+G37nB TL#A}P5^nUukO)5h{S |M|  p~m+M 1FL Y.D#ArTwL}ڱgM6rvU H榏mz=f }yi(x*4c*EfIr8^\}Xq~9x4xU u,KE.9f6nYe2J}}\MDkco |@y`#bw6s!>̂M}^7f16AY?ϗ]tuqˌ\U ?׶=?<͜߂/+äN 5jkV5֨wDuE'ȄFήM#"<*=(BuD>*pi엲 \ T^~<'D@KR>{cD9d JRNMO8Oh!i(BImd; }nS(F8P.WLD# (ؾR,djrIǒ zYhx s!c1hMӌre,xIr2B3a~ʤMkN˪=13%v @ Bf~1KS( yl}aRk@;er5]24pό]&U[Sܗu+TL@×h&4X;0c>s bRORq 2#oz=H9dvULYKDʀ`cwZsErqB]BT ~'2#xLs˜轭ˣl}=RE|}. ^=0S,2+S$"9̽ )P2QdVNÑ K,˺b&'l72=u3@&57RPg42ۡxɦidê#cTN" Ks3T5`Af|}@v ^$'Q),p,5,xU?jw|r|E+7 &N E݅i;F053T cXllSC_(\jc̱e%R83sf{PWf~LhRPJysC '`<ڵHF.%)\w6`Mi,F`Q=6+@r*zÈlE2_|13TnYH@[N\9I'=20dlVviރ*/k@7j;B),z5~%"1aeʠz㜯3$L@D`p&}ZJMM.|>JL]R)Ϧ@Z4g$-dҳ*zs&`X;e۬jZLgu`#~( ѦF(64UrxŚ68&3D<g'`1n$ZPtdx>t>R=gǦ /sb=ԅII:dj^(1X_&$3 R߅ov;;p Нt@<]Ȫ6bVƺL'RX2:RD{p{VL9e*&.ݓM zzv_hQ;P5VI|D7ϫWaƍY*# /8c Ti*P w5>upٿG};#6WNU5O1=o(R//Ą R&PE sazNASiKYVW9GxnmnAhi_*_8ҜvEd@0+&lzr¯qG%E)QC МFC{BAs얽ekֿUŌ5's*JX2^ew9p02!lFS&Kgfb|7$ ,|C:g8GNb0ICffpea\=4~>@NgztbJ `>%)&Uuzh9v Q3Y#^ϸ r Ax2b9W'DŴ$kgt+DVHh08Y{;!̉p.,(( Ĥ$} c |>Iu??_eK|T8THB+x?kVSl DN۴P?YP&2X 6cJrDd -1˄O'c+Mj͠[f {crWDpF9WdC ej}=z~)(Ux_@O!ed}En0ZѠ|:qi6,.A ]~{"Fg8bt$6d'N'p@`sY̗5FňJ+yTya6ɼ!6=YHu*g\l KC,3Ϊ0֠aB!+Px2P PmL'^8 mVʟhj0]0yUh^owap tM$p b{x1х=&%< "'7ˬf7KFCEv3,cQu6P!m[":*6rvA O"p35G䏑3$ >B>>"0'P(PƗTʐ31euvձP+v;RU59!|dvc%nA>E24:Td˙v%9se.3 NRy<0Xw{+Н21Lc)LpVe 6[Hmo!LرS(\G'lpB#fT̝ĝN0e`Xs0ᮛRd,RLNpn^ox4+r t|r &wMxl,d?tGv5yG7\(\@)OtW|ArWNC%NY 1<3ǷdjÔ+8 6fT󚝮bVhv/p,qk@.`f\EGα-X{] CX'Xf;br-_A+/5 |TŦ]K2T~ ^tkDfX%&Y̆89ujS<cB& bZTEdbee@uT}]2ۻgb%?'"{o]]l6#c$m ˲-2 $xl 0 `؀iXdmسCr8CC䰻{WW33"q28qȪꮪ7&s@l9`7G@P]҈@]G*䐐u`x?Qm|,lck{Ob4ʚnaSB$B a)lnjP:~h*N{XʋŊ`],ρy,OS^e%]λTvS;™tT:%Jr~`568ds5ga{CsH$7 ,ZRޓwS[fl:*H]' 6˷aoMs*X gfuf!LM8e3T2LM6p$bzz*C nK0*="RzQhkIqZcn 48 b⍰_#C~ GEıa~ʁ.`bhx6Yk-nY&ː9@s| ̵0 e0/!^ e~X#īzb)AQ?_өnD!B `fYɒ.fDJɁ#ˍiͨr,<G`U3aB Rs#)hs$) OIÌlf5+frϱxVuno3)eJXg$KPUB{Vj0598\ؤB \yͲfYUPQΉ6U|e|QizGiW (%!b;_Loeb~,}`NI1/WĀk,Ӳd 6ɹZ@TӇtD,oO!Z Е觗\ 9T+l|kBQ ]v>_d>o xceS/k0-nRcw>-D}q|6kv3cE;6%n֣sC~\bl׹Y f녞',)vMB+ +J0S"keHx81;Xe33?)9O-~~ DYUlQ"V:7;c2 `cq0.i}VX~f%;癀s~1ē(cWOS9B] 4̬j6ܐ.gƚ(xl`ꖖ(MO'qmWlo5+YEFO盒[s@윁WY^Yq!%3!8εvp5yxK|&6+L(ŪnC=5c  w>,!3i#C0zu*I+i0Ԭ(7y(I5~ a  lϹU;i\$9uEb9bf_Lg]]MxuMes28kCώ6YyҾ[g_~riVD/Db5%kW#X#4# 3d.]lUnĦW<~NN ϣu5<R>RkI.8 WDSU̸e@^gy;Œ% jO}–M%[1kO 3Vh7 :?%TKȽج^]S[>ko Bps~ys݅*)-RY)2c;9ˌĎzC@\ۼ\Wټz%gVuT%(b >Rg|_Qt#"vAjܮSx\YWWspy1r9f]+7pL4NvJ% ITlew}\ؤ#] 36:4R9t Bd)MBl&`M*Kn*B&8䦻]pj+f,WmMV0s'ycT˔iIt?fn@vY9ll*9o%Ua9GZwxp`eXѢߟ̋ TJ75׫6%PLcS\b#c 7LH]ȍMe`TBOn >iIq;p ouT{"J{{ 1>a, +HKJp@߿Eydd\/mmDVɴ_Qf},{#˘V l>$`Ɗ U~$˵e *^gIWa@ DyJJNoɾB(KPB?)"^Y"( BMZ:ehNDhA T aE+Kzqc*u$-j23u͓x+ͭ@;o!kDp4j99c6=aNK9 ߑb7z/"TH*Ty3 ;zl%srBJ'rFLm#Er!.yk[N@6|Gn {*e[ h@Y $'8Ef8&l j")t^he bzD;Fឝ%a5\/Rj".r%4@{sSN$мTfI*+VE. 8'K~vVl>yF(RͬoF[ A7;e##aZB1x)q"?s=pA'0M빰\PH:c07\/l̂ U]N(oLi5~M=flsȜUgxH[6[cؓQ* n*԰sf !,;Ad02x15cY<3ؔǻ)n ܘ?Z1)]t*gmG,PG3_Sp *Pu6k`S?k.f31]<Ǚ3g IDAT`LgOU"v":Fx9&r^}UI-cE^_2H`V6Af >?QӋl ))%X].]b*4-38/BPHo@۰56"LUyAs~,sty\L̨ yp{uB8A>x-%,- \v Y ,kqf3Âmr ̖VХV9m㛭H,hcԬXVkYD_jVjinjW 5s%2R\",-[jk'r򹫴 <(\833e3Ue2p l6׬V:;1Y@k&sy+殿T>t̜bux"Hl^mN!΁ Qg<Ѣ?TfQV#=?ѿ>dhK`&e@&.AzajbzP&K<ġ/v ,W:;jy%SP9 (79v{Z(ݴ]ːٯ Z52r&~VF keg%꫚`"]F|.?gOmRmcY.>;IK*Lz qA R ̯šwVuþ% iaLh\QM$~Ԅ0Gg:bqo2m1Nlj6ՒM}P ڲqՀHOS!c Gy Y ?iHg"|d(ט2E( HgT(Z{NNt}!qC6al*S-A4@]4m hDvP { ܜvnpP)%+iRNZu`<ش^1ңlc w.ĹOŽNvZr)xdB~^ j$2b[Û@i4 ܁۔zIlX0 nbާog9gJ3'>$n]q+9JPcxsϺ=,UW1ȝXkKa$=j6Y4(bh([1b^%4mK4\HAT[{zs= 6IB'2Y]茙``M,sC#񩩱ڶKq{әdUy)@WjLJD 쵢vC¦]M\ @&&iT1Cm/{Ff]S ywm zE1ꚮXF#ƪ9\)BFNv s+wؒIR1%oRT`;9-9f跍wz+ S׳iJe'FeȈ.vF=(SJ ̷aJ*6؅ѯsw&\yJ l%TLH﫦`,%x~@𥟧M*f1J8Aa4~MWYF|G93+BѴ•h/&~'g1/ńH@=Ȋ|\D?n6!+8w#?B2X-t~G6N'ʀ AoT$Gcɮ.@y&̪R3u/hGxܴM Z,Z!v=9_Oey"IJ3aB"4B9AMѱY;ԡp`scџs♎5E;"yPAdl19| 1@]D0;AEqŽ|^xKe;d=J^ؘ?(i˄g: i1mR1Z_T Ua+Ħ'}: 0Ǣa.WkOoKe cjefL˔tB%DPx$|PMF]?{ϗ߹P,+\MNrsHULF2qDYbU #8E)YUX10"c) Js~+"Q(|.?u> JVK^uߍl koC%6sk8(?#ok0b@$”i9hj`Z:E@~+vFX>؀h"@Oh+؄8Asȡ0A(1!e~NNc=Xsw"J)L 6R  FKN$3AY0]X %0$&ufb3 H)"pdsr*Bt(u 1?l~R'rW &hFs>]M?BbQ#{939㭧\v{xNY `)t.|k -g*[߷Jo)e?,u8d ўhHTHM9Ӕ 'S(̔Bm "2uLf-Ye4g^fU{0j ',dڄX$A.ߓ,N[N@,hu`sB͈!nCw|Xc?e0l^?c]rsOs;c-+&j!JཟlyCs; w&I#aR:`NoVdײ&xctUU;m/bmdҔpeYKvʜW2FOflPĈ;g#ZP#~r"L8)Ivv;w>Gd; <6JB ~?Ng:ja^( mW"t={^l:f\s;W1ch|̱pS}f<y oZ!@+A'u zL{5A_Hx>d@.b ,K0tr@rϙw羈M@7V `l)/N跗W%?co@1y%S&NOKa"Jtaox"ĪS:eV?]~2Lf,0Ԅ{B!O;1l)| CX|&C( k~r#̹`-'HH<_66!sz*h%-Ms_LQ9 Y n< u?n_=13S+ *2'$B 3arZҁeY0 0Ԉ hs(9"y]۬B`$|:mj|tXh(_ 픹`.J̽cnN;@hR9 9·ũOR%dN,^~gQZ j^s~'ݟ (7t.LnQ !3G L,WEuJqGuʙ0ovvKM(ƩU*gݝ P>>ʌ <% OYӍV[w6@=^֪Y{;S(Evř8~Wݵ{L*o$?u$IDV!/a?J;D+Vx^)|CB u*灧Nd\>ܿsOq!0N_~8?DvcpxYuF%XLA?Ny_`207@3PbgdZT@_77 ͕xdyvشs u&w&cL!5xQhFN2⁧<bM~Oʁ0Yc/Z} J Dߔ)eScjabTDeڗ/ݑ|d؁"B,y|s_@f ;,\q)u&EKTU8tNCct5Ay$I+iR >`BVu"L@#Sfm- 6 32.h 3B'E%ɾ!ӏY޽_@@bM._Ǹx$k*)O+! v5 Z]a{T,|HJgau>%Js`BH2Y s>t.P ؄*XlNJ`+OEtny 2(2KۙR/72OanNZlFb׫(U<+e[±FCB9wL ai99*LC/Z*0_Clжx6V0I4v_d)F|\9Qa%ULoc2`8B<n),1ޝF}8rFAB| &%JL~!~cAbТR#IsY">T.i$ XJyJq9ğXD21s&gίx `8οVBH(1!O,s pČ +פH릑2XdToyKȧ[gc-R2 1!ٷ  )cr* q9}HC vrH2&P2l8q^b|u9GMە&e z5ӈc~"F,%י')jG|x-~%PSR+s;1gw{p<2 @#cP5BYޟc7ܠt U>/}ޒe|A$ĵqm,iw34Dv*gP|OsrH{:u11] E@e.w1, Gw{`Z|;2ֵMu@%d1 O%8yeN&H#4x^ﴈ yKڶM#ť^\1R'R*.)}3exB2E< ?#Ƙt[1h̵5.)k`a|-V2.h6 5TJULh"B35 0gVgGl*`ʆ0=CuΌY&=l+)bƋcap۴\')TTQNIԓi)?OsS?6y["3 24 D# R?MsV+ućbӿlD>)20 &W[LE쵉4B\ςS`6s\ff f`~ "KW{ Hl[SW`6 R,c*xKsfn*"P ȇ'RaEH)=!UfTή*E|}M[slg^lo"uT'1Wa;lVg G0[H夌ɚi.32;DBJsTT 7Eb'ӰqSm1UX3[A`$D xT۠⟰i`L h($̥7iLm~;]Cgj:mg|sl+0̈́n]uG@ WI5nla>q\KE1k*z^?F#o ,e:ATH]O.=ˠ_4_ ,aSMZ}T!ɿ}ˁ+$H-} _M<>M|c̐(e3ﻯ/<2;CUcTNʘ> U(}Ȭ? ?Ϧ[-`gfvgb1bRH8eRb]?5Y15cA{fvp7%?p\& ̓33)!pxI>;R6*yf:?s^7~>6ww#OZ k4 ٷU9JSUW'ɘM()%fƘxXjo 1ҙ)0!Sqpe2rs_5ViS aF .u xlƘwQ9Y Y/ϓ4)KB鰅БKH 1B8xʝj~e2zɅ+?CJ+lh哫[esrlum-/v)-< 8[>]D UP9-ULbV_zQqk@2d#@نƘ5sbt *.]=M_fk?nj:9]qp9fZ@EQ &+ 1\ p_ $ISӱ_4tғT(Z t~ !ۑ.eb2w :, 8Xl2,KL|q F$ g"_ b4@ H1j27;CS}]RbJvlC'~؀7FDiK- 齫S  IDATJQN>}m)MknV7~ ,ʤ,1L0N?tRLEl=p)δŖmOO>&$ϢrSQZ_,U'^1j(=l۶'巍ϒ>UiسgWm9ESPA sZc6a2`6Xb8?Bb\ؾЏb@g~J0i~1ٱg7"BI HT$䘎? - r(`W^{Կ`yy÷{ rZ5ssf5"g7w w|QB edX! JM 7ы]!;"0B>> 0Ųc$'{S &ןwGDϕƁ[pAȴt~l6|>xx!$?U(L )3& ֶ)X0 3* XK "74miC*Y.)קD(Rė5սCcX,TWs]ߧfO}ңR-65'z\/z=|9&TJLK "cqZ\L`-f po l 0:аŊ30N M8"MLc9$A#M?۷GyN1^J~0^m/;">ɫGu.:, kNQ|\ K9d[ ~0}M%3E ̘y(ˀ!ޟ\-K9,xom0*"cR@Cyͮaoĸd47bC~ ,& aFBlcW Mw `kP6xu2R|s… 888XvRTq i!5 k >X|f<_=xٿM;fnjxt h{&^]`c0k m TY|x0,P@'8`y.X"@J"0p ϒ( X)?i>j:?Czeb#F2^P4v[lGQ 4c內H٢Y-Q~Hvtt{{{888 zf359gFIvUU5.5/_\5XmqѲ9f? ~}s<ڝs0;p \3 u)B#YVÚϐ I_2!/$s߀7ELX@ Iq A 6 53MS:zݮoOuҿ3//\3/X΁IlUUMs+Jy69,:|%28/?jf PD h|8#Z7~d0)X)*ׅRӘƶOYl|OUGʰ%ؙD~sz:o}A7h$r';O?=pNG{ac:;ˠ3>րLWEtݪBS/|aLEߋ([wa Nv$YECt3w'U'dc.&@+ 9=Mov; XFƌEՈ ?Q12XAy c̮^ψ{kÌ-Y:Yug.F'^`:s-9ۯj|2x8 n&A&aϓ|3~礜)~ˇB J0*(. 8`B]rUlE_m:;IRĐR@cCerc?0˵6>\rQ_TӋӽ'DXgPxw`o@~2d A'd$˭V+غӫ?/' #O3) $ }&26p"j^cH{|2'IPWEwkڂR+(!WU3F}UB4,Ab~s?[4"B}M )μݤ1g+=YĮ`-8ac8)gl`FEmꘓTB%1/Hu c>E  ;9yU@$8w9@t jK @y>/lm?=X;Àb &KZPB1l,E`h"(sL+p {̘B30a =;80mc6S~ W_z+_kNoB8{EfQi!O>"=r8x;cq8á*0{k?i{|,NsrDSx1Ң%-|_ʋ˭93X`71 ٞԹ6 Sf\&Lx)91;f 9᤽ (O?C=?%4:ϵlSgrJЅf4 XLnMMdÜoj8567:v3.>co21^5 &LФ6<ԉr zC!"\$ǡp#}Lgkz:p#JXkiƀ/*ƙ|WO RKޓuRg ۳5?.\ t0sժjg_^48` \L.|5%%| Pu .+C fs}9Xxf`B9S<ޒ۰u(3Y1\Q鯲ldJ9dhx.4bw^9i8Lg.+55CW~$@)S/Wk/.1{FyeNev/a2ghRBD܃X\-1W`&307<ޠ쎽;5E:* McۑԀFH0"@0x6FD+Sz-ϊ\,]FWc+b-%>~3U/._ϼ't ,Sn5%!sb 0vD0T lw,xƫx> zpnu7UFl,gg*2yD@}R5cXJTygᵿlQWKGy\ԹDg2 ת?l07[o,3J(Uҽa\EX,sbAИ.\ :6WO <"3DJK~QRxg{ /L1#oF$ S >Cffx[l7c;dbl#Q9ŗcv5 F ]2%~A+rk7SԞ9ک.@Nb O?qKMH.ž`"dX'P9 ZYZ1jf\%(\ҽR4 36(R0Z 1tXcH bNSGf|r~7~)*(9+05S~tl ^E'$\\*# r}2st:}Dk]?⮒\: kj N^ٹaMϭJnlʌbIErd #eUoXq9=Tpܴ6̭U.2a\s"qdTK1URcB 驞^z@K߶w90,2XVV|\]]װMǑi63ɓ;]@|S1uNo*4#GGǮY.e x6Szmln1YyRHO ">֦&Eȁ!f`a9/`Q؁<0sZ /C dY~k\j|b|K ƫk)smpc}1 p ߣ7E 3"|YOp 4ZԔYNo8vi/|̽05K(SŴߣ%g{:΄dz:f])MKrGvHvlc`߲WMmXy-Nm}/čt>UN_IA&.ːCPVk5h|VPns MͶ5wQ;6Ɔ(P̣1R BSU6PU\}7\83@[Йfumz|YR ZN^7x<{k}` OvV4 *&lՍyK .t_MoM.@=-":(2^4lS"}| rPVл'pM%rTH# m-v ag`[.G&|:sƒAEn LK>[vnɷ-C)cB~\{wРFYvYuOm[ /&M\+K-EלX6^C,w@%MHSTad?Г2jdt?|i#u daw6zb \w3Y* ͽKƄQGw^~WiC \|[> g wJES*#fE8O3/#^@ t1=WRbJ:BsJMK ^W1>"9Z9KɑY`->aBD/3#YW.zL4ۖf]i;crso /Ll4I:.g'`܄k8 \O;0x*\ չQwE(|4n]Z1Q3gzv :]BDlaH+;|/#׍Bl\ǧנB 1H} wLr~5e rAld5RڊJjEo7uwnWQ'4Tބŏl@Ϣ}!75qogsngni~HcdqѡGNwGf~6b2Yjy~ {_:,g"I$H}ǒKw"EwnX5D'ARٳMI~FtۏAXeBLm"/a ( RLl>$IZ<Ѵݖa/iA Sŝ{咆v+&LBoxM.>}Y9`Y\z$%5m77aH^-ipڏ.)4 U<~ڗw݋ m>29e<ݼ:DΠ[ ۨ#b@_u4⌭hUAg@+ׂr珺k27h20 * t/%6[],J{JLLD *;*탹HEu0H$EO0\a3Vj d ]bv%+Q䉽j]688|`e9-+ ! b Pɽ4 ]{MdNP^ 6X|oͿ~IsBd6r|<ߣL@$[qj5)}`ͮ1]#iGT*};W cơ}aaQ J's11W:<OTtR;o70V{}XL]"13ޅ)cH.ݯH"c͎VO@|jK (N2!2qioFaO2hTKxݚ_p@Mo'+B__&e1',yR ƶ@ېhLeiloB#2=sZѸ(hФ*5zgbMz})s)`%d[ ݓ0B*"E]D̢CU9rDb%cEP70U0 ^1٦aP%ȶŨ҇"/ƞ"@vw 7X,\ꅌ0=5HgWw$M#N Ļ;l]{06ޕn+qc]`Qf IDATQR/ئ+YpIuߖ"M@# LeX ޤg0B藺l\!y53Y*v/L+9$Ɲ#Dm#9؈۳t/`J1;2-`!=Bf읈)cRKׅ1^u'ħ_zCkl`S>v>ER, c:`5_&r Un6Œo1c{D)+ӥ)O3rl[(B|f>zkfXkj %5?"]s_)ӣ.|Ko}4EaNb9bщ0a>ƵAL'vOXoLa K%GưՇLןDfunpޑ)"ȅY"61G{$P7xGɵT1g*lZxd'$?9NODEY@xPua0-L׷!Τ@46>}!5,<=2 E7ŗ\MCyv zƢ<%%1VlӟP2hgx:~UyӇ`Y} #7S݉gdAj gƁjrl8dr"8>R^C U~$lhgcEjX8e. *>(rBF3T"l؇1)I"any <_11,mێ EF~%l6玽*k:I]LA e:{Q?hۦ>#eTKΔc5UO7d =2Y]{an%9efLޘ w`d MpۜIkpT G4WmQڲZ^]"! @A Q68Lp^3n.wNz^Yc)aZƲt| tӫR6ACb ʱ|䳶 : MSӇ8Bcz2@S狖Rt3C{0D63[Nr:1U/Ǵ[0(m>SZqfvDk o β|s&MP*,@NG0|ͅASȈ_G9x:veydܹٔ3A$ ~3)9rnu9dᙇ2c-~ nUkR6Va2o=[p,jW Q'i9E3@+ 8sbEKNr^ ڴecVo|u*znHE`+ T|rI^-oܬaHm|0!EJ؎.]6 TAYi8KgG% ,LNȩ<X3nXwhfOCwn22l?{okIv};2YŪb,řliu m[pCa[l Be^Zn 1 Zx%wZ VslldEXSfee|ӽ7"9?=Dܗ#o$q?inʙ8`TW.=бNNs((UǦP"h_S`7Z},' P\ M̈́v@ q B"f 6Mm}cbg Z's5q2!ͶxRt}&p~ N{\'ʎo FH RxcPG%xѬ?]EGd3IsfJb@YMpbX qks0u C|m! ܦ`HUPםa[,6닭ի^7>n5pk2tFEiz 6 X|SBq.c<9xPq!!:9&Z밊0AOh 6(Yd {R*EN X NjO2ze?]C\`33&.OBPYyC} i[x8۹x1%TWg[ckPӶ/i,wx4#43?n͒g9çָS&6^(+\ulj?2^4E/X\b4a!.W5 CT؇YMԝX^xvw,]aOޜ@MHq;<=Wft4\WBIlgAwLWx3=Mu؞P4klVH!@:CEɍ}9Qm(6p5rnsa-nlŜ"P^4&*i1Zo(2!wȌn;GKD^P2g3*vFr_ ytY GXC{B'Ђw{4UۋYeX-nS{=Vk}H\JѮm 6QH)=vƘOSՙlr+wxMsx6qyde5W* u^-eJfC\u ^S4H7?eXe 4疂 u@ ZpƋS5LI~?}e8W ư|FYW7XO.,6/mb\E<ѕGB W λem|!&61~3|t2Y `hCS_t_5TU.2 ?G- +cajr""`h0B,G=ǔQ%`Mdbb6SY1(d2f-XTx< : 5#0> ހpӂnx_C:mS2|NNc* Co_3KEط'+`^2-|1]]8lyMM)SBiufrabNԂn` txR9y(5&5;uMmS&-l]% y*2v6HC;~t { _W^Ei` Xz7&MT҃*`S+qk\ p-?}Gb)ޕqT B2.fPJ;EM5WS^#m#0V#ͩP OP(p}}Q =9@/rg7%uE)*-xHW5%ffQ5G"|5oAT ?-+*mb2zS(|&+{q+rˌb#Z+Y /MȐҙd"cOQ-Pw\1)<  xs66}(E_F/얽ekb? |ռPUnYqz[)NX9R*Z--J`%y]*NG a%t5{ u )MBW^ICD"" -u!0%gX)A;v/| /"8W9|beJ|SB )a%Zᑍ*}lNZ`-pik?Ί}jnM?Hm/3N$'^'d1>ǂSAF=RYZB[0n{Y#^mxL# Rx ̩v&?t1emP-)rN'7mEĬ MfE4HaS-buV(%cϼqmG߶>!^z n{t5XMlQd E&X6r3}6([=I "(z0rAYA*"r<+ _F% t`q8Y-f^؎ۇBDq\m댖[ik<=)-bibNBt=1Ҫ)ڀSW (b4s#%]ۦ/K8 ΔO([0Ȍ6ka0A & \‡)S! y}ٱ=@_EW0r]_ֳČ%n+%mk`+&Uzv|;ALtz*ajt}aX`q\YPH +Y‘v(d5eT6!R+ Y6N ) .ށ K!#9S}V-&p/e7ѼN2x _j*Ec$C0pd|W/M0]tJfVl+`)9s)bwέbj+ bݦ]岻L(„!J0sɊyIxDY6"R e\5tfM!f"[lIVMێaB GVUd0r@ @U:>=3cDKs(IJf|~V1|[/=֨"(@yor zOltY)."; ah!`;]B,e Pp 1Vg'n *[wM!FS%L 'д:zWJmLqh*׿1. %` gYYBP폝@2>F*b1Θ1GW#MӇ  SHaL)-N۰904_KjJBS6m6'R ?M:Z+h/qVE)Wh<|9.Vkw3Tuw&A!OMʼ* IDATuڮ#MY7WQ16pWͺQ5 ٭6̰xueDp$VDc%QESWb 2vү¥~n~뷊b㘱Dz`-} 'pm'8kAFu V !,J)LjP,래Ä*W+ eyP! ֕ã6 %)@YѬ|PohWBq3h;L`i2gssqAI#CBh..,PМ ph5,M[Up<7'es^T7Eͅ 51ڙst* ) xC 'bxF(e}klkԔfD9Q9(5uH)_On7 @mY/jPa{CkZ 7vfeג':d _3%U>Rޗ&)cƷX/f)N(9ޗjf- euBl"VH{ <`xbJXrx.>zZ`H٦-[T5[hꀏG̖X<$ @>)L{?a'Oc؃6nxp@an]BY۶mRRۅ@@5f陗s!H0 SBtC5U1 /%W J3ex*f=oŔ3xѦ!Ef*ݒz1o30rC6C޳ 9B̍k$) tOIÌC6.īlP'TXUoy;zV ϝ,'$ӥT{nj7rnNP9,$@;r AeLv!B;qh :*cmSq}-F)Bp#!s 1c;_w|į^-6)? poPV\ l@4`2+K-odtp)ҶRr*"W+X8Y;ueVKʊ MHU5C* >wݶp40 cy[́uݐo>5 dI/ug#8u Una OOgv覃9g--su)>ͯ [-Fr 2YBv뾹 HݬfQvVq\Bؙ,T48 XkY#gBFbwg 0ckDxsq LӈIm<5* xSL1ltl|VM}慞`,`a鱟R T4e۽ߌUfgH- NM96,xdk^KRJZWH \(}>ސv.qXm#605}KK%[ܕ`Zl?%mJjjGV}R%mӱ0Y2fw⩛ jp&,C,6a@ p}vhBnq,sT$F [˺\4FZXOlI o>{0 [l6xԸ#Q۶_p(}CJ.fX2km5~lJ|T.WS6x-0=6$˩(UPd `< v=fe)'k੣1QSޏ=T `"s!FMrc=̙NPv-_Tk{vEO]b*v~;ZX]׫F; ^ dͪm5qh?\f>)0&H3ZfX"薱lq)[rv%H1cw7=rfkE֩`e{x\MU Ĭ:~30 pW\\X':6+sc8nXhpwS3j($|9`f^HArni{\:tI3i=k.rE*7bN-ðYbZCa? ܘv ݶ4'@3%_f9gZn?c[`s0[nOu::C7+KM؆c&+TJS<a97A{{ !SUP2CY,Y Ņ\#-+ذ^`Xʋ)9乘Zj{]hԜ-hcpb٨l Sgu^(@T9Je-LQ+TO%vP?eY<9A/5?z`8d `H1@\~@nկ;b™L2BTl.{iG'&C/1ݽ^` x[i6B:SrPŔNŜM] DDJ]1ؘޖRL1HhC3C0l1$n15lt u,XHj/OwG ezԾ -b {B,Ă\*Y%P/IKg2D(AŸI4O`y@sXbjn#MBE~PyʮկU&p}I_y2:r6§[t)2Tc#֍4 RIrڱ0IR`Н/Řuk^̹%,WYNh?5͐τ~Іގ1[Axb[٦ԘzQ.Ree8WjNE *H~=hҽ`{x}X(!eW瞹O"e"@{1#e˅-Ǭ+甏ӶOc[7 T }XPڗcq}|`X@G9~ζ~ l?L9`(YV Nـi)B[υ9DvwoK 6T {[ZTn?嶑X]'NHUFM#Dl n0MXn+>y\'AՎr_[ΠakA+)%ɫdC#@NT1h.NN2lfy!s7Ee<ZF(F\4˕ӂ|Ax AG\8ɒK`J?0q*7}(T0Yh~1F7&DD@dĊٚbn1pPvH͍$@ Mz.F¥X BDHA3t YC?A)bɪY9':Csx@C)[,6G1ɺ~Dqy3~`w͸|w' HȌLr$@*E7 v:`x10%_}g$rːC,Ɨs4JLY-8 X!cIO#z)|S t~l䢲^4CmoZoьi v_΅izb=}RnncqĂۜj&l@+̜ TnG"U DmaXxljCVm#犯yW ;PB~amkSL41ocG Z: SLg%[X0CHRHy3/c !.m%Q,IFxߔOn 'TP&fJClNoPa3(ps>ܙm88fl.^s&|Cn# B/f}~{K,2/" PO{B+ A;Vmwመb!3R\ibX\Iw*|X:ěŦ0K.2_X x/[}c#JM"frs@">\dU4\)c]UHy{NdW1g0.Gx1/2I҂IGPa)bZo@flp,u"8/,ܹ=j;OTO.)52rUج\ҷ9qy2G91UEPF8K Le07~9v !fռ|/U| eng&W^iJ_F{>e,𬗔}B2Qc*d |.ĒP:BcJ-e CaqB8> {MMG!3H:~+>{X#;c66! d[O <e!4x*\nǀX v;@i*lv {d/@Գl <{D{)b#g6|ׁ-Gw^*m3,6 S+Qg:sЙG@6߿LvyaxA8/AC!c.@լ}ixޱ.gc!ЭH [PHg;YY>fR㙂wm!.*-G~sZ|z"0f sXe/Z:f*|RRȱfOMrЌ9S{`r}EK9,N6 jJiyfNS2Љ8!e% 搉Ό ^wjW2C\+=αpX ̰S `pt֟go#^c4)F8,T;ˡ[/ &pB_޹P}0Fǜ.Yx$ĹP] Wцe;Nnx*~w=-Ғk2|~M{-(kF".snw*d kBo V<x$~cքt9kSts6QǕ&(=N܎DzgdZHgyXZnN%1GWR?圁㎑ro;UQ H^ ʘco>PZ6~ }TjR}T.awtN&莦.⒥`0eLy"U ?v $O,^_ŶۺďdE<'C#o0JgX SF]Δ *LIa@<0oxs>D^%עj1B v1:'H@m-|jg:v(ZׂC!( .a—<wjt[ZݟM x-L[gW /ݖ>>~Z KZ yfXn!lO2șx3_0Y(/,,cqr~J(dA%H B;fn*fHEx\2E- —r=Jݜs^X3OSf3ewgx&bw.SџP5B7*2Eua*TL8DSFб ={t]gs7en39-2޽`@ߕl@[ R:ԙKW%6rd.D\(0+ͼv{ߙ"Œm } t/d< 12NWS(MZta Dx'|t#t9/4 [,N$Y +k@6y$D33ҙLv[ MӋ` YȁA!mᙤΔtsCαv[ۙ;=[} 7̥=&&SK0dMό`ZP46gcs@JV3h=ӟN}dX_Нw IDAT< V 9)nݶvnmmݶvnmmݶvnmmݶvnmmݶvn{] nmAkhmі}?=&󓙩b!pݶ3M~aw/N<xK t>1fU)}vٶa9λ19B쀸xRŨ~[CAl0n(p|}h쳇omj0Qdd}#=Jeh tH|w*ݶcYdReRVYMa.s|;ݵPC.C2ف@Widvfg{oR{HV#oqDvKN p{~ox4p1#y}n,7/f>X)qg/%"П 6RB[C\10qŁf$4kS3;=F`)7Θ("C4J7M1P%x 1y̘94'>K%31c<PppB=S)6$@IH!Lpryػ 987K&fFRcj CW X}&f_)Pv / :O E|Db @bGz~7T" G?6˿{o57"}>rJ\P@Ws1 }fbdgXLP("n !|7#T0eq]ayMy +n-}hiy7'zLǔ  6 |.6?nM(C|TaHaHE@a1<-+= iᙼtR}*˗US2C[϶ /vScaW| d0l:.jŀ!uO&HʗEE F39G{54+\ k ߌ3W%9p@n#jc0X;h11wP=f}?h ҥ=CƦ>zX.!+)?b!R ކxǗ,CQKmDK 'B,kL"Lb"`"STD oL79n) )a*(QUOm !Y*<Q|@fPJdVư R'Xx.e O#I3b)OjFlLDDP8+F{̸HD2]%+)x)Q Qfl"eyID7I?5Rϙ[Y%5^ٰҔP23cdJg@KXey^p6Sy}iRٳl_c]=M1Z4b1KiJO* .nE˚<Àl!y|4 ļ RJprA535{_1%6y6E9>&R*E*c(*˿n?^F#Ū9aGFyaġ %fA};|B`5Y_4$~m|CD*IT;[6wؚo#FXܥ=fC'CCL!5w)O%DGb@d~6yh9[YW˯U[LAl-$0}m pØĤ9e)+e?vy| S۳LT2& ɘy>  …Ͳѥ+O䓽/U8yO\ωh>|x!@ۡ0"J'ߡ|Y]-O=I(;C @HҗH!SU%S)P1S./Yc~^Pݚ2|):υ=̰n<dDL*CU*GzyC6Ua;625&fL[7d70g_W *T~hz/~BYy|[wbrRJA)z^ޖŀ3(k-cS`6F-O߄7/P b!T!bcoj1\,q{XO%ɬ~r/b USyuzM!30e+|vM>XBhYP>3O?<3ŝ3nln2yEG=m_x_Hw hf.l4[;c^s=4fe(,:|u;y\L@ 1> 2_e|8 K̗:yہM9i;wVkTLWXaD,{!ƊV<(T}'&W?H uS[UyYKvR\?;+t\<|(}x+b|Lɐ`:mW[|3?%RM?ǿѐ.)1%TGp}PfO=>2G /+[e "āE]Q޾snԟs,Lhd2d2 tlb5Ƭs Lr1AEnz?3_HxZwT@IYORnǞ:Lkd{LѾTB冪1czp<N.| R't7`$M,66L0V!ν>jnJ5Q*} 2t_9en`~<3֥bm}Lw_|3^X  Ăy9g_<[ B/(Ü\.β >f) ߓ~|}ҿ[>V (ˈ }Lc69lTd]X:[=r{.ұ}Of7}`!U⡼NVB8HjCp1;*9] Dː?TJl\!nH9eL1b ւHą,b"b`)O_楻دlIPMfGfkj i7T6KlXXչM }棣#_!Z-kQ;; X 01uh}9IULt -N8c 1Y 1&o+A\7'͞Gم+b-tDybL7LV~V7N1L:&i?6K5㣕3q1 N-W.niO- ( ϓ4*SJ%i@Wkl5:T[l1(gP/lT$J%""U}bo+>k60uՀƪR?XNn6< :'Hu\]`c0/hU/O[9:BXb (5 5A:~\@1O2_Ƴ[lMTJx9`UkXhx[ S S㊲B͞ijſ_-L]cy&uQs_)t\ V5k\->[j<_[0V#l =UqâjY0p Q砰 r4T3ƕOL} t 5)}OW󆈩DW9`A  5 c0h̝뀩1rt2퀦FUUZ1xLepU[-O!`9QА02e^ Eא9R#j\D˕Bp d~F&6R! }( &Q|TĆ!ҏ5c"FvN)R G?p2,2'0pJxK]"MGr!QB^EtμtspҟeY6LWsb,zKB.tr>}3Xk': sVMt-3׋gTkDXʼn`|þ7nȌ: <1'?OELO@.7F5g50ώP߾OW0tJt7QW >^Y[V&A&~ƙi3e]-|(Ġ|W F !F9Nji5HlE@}^M܀dCQD"L*tCBagf+ ݬAk5cTW'Al6 2R$bYUʲDYug_\x@8I0L(f $E`:5\{D}# p 02Mf AR6_8JeOy#$ה5goǢҀV&d:)Ȭg^y"Z)tUU5^.k\xg&U9> L#րB`x''B@DF]}/<|B.Q߂=x2y<LNy ftqܢ%/Ot/VLf7m0nqD *Ofg8\ ōO5 \Vf (Vl1'o*|9 [:q''h{SrCh"A@@7L:eQA U5>g(nM.jm|1%0CSbG@żYX}cY)I NF[a30 9S<ޒ}p G8vy?,#ê~ XY_s ]T4UNS0yWFOR/ 轎JtΩΧ+JKGl$T(ci :[5Wqɥk՞ E 5cm6 f̈0/"x /A 0#p-{Lj~;1ۋ,ٚoG\~/nAd(*v#xm6}D #.Q߆=d۹Vt˲sU.5_ͼ' s6 ~Fg.ao2 Oxw @!/t#R|pns~onMN&dzjD.C7t}oH* T$Nz^?*syurѨO`Nr#3)`!NV)`W_XjL wˌ dV3p? H30P籡Azo?& L)I .uSJ[%jlQlf]K:EDOCPlŦ"*JuzʧO|:O3_!16zy}:mML*~lR$m)U U_^jKH6Xܢag+6.6+"}]LXD [03")d ti7\B{Px[h& c>VuMM~8" цwS[(fFЂ?m5 0_ˣ'[}P8رmL6i@$N~Ĕ~ȝ_ḺҢƓmBrv?=64~DMLu,1!e.AOBH?.i?f`M4 u>Eʈ.P>κ =bm9+6 g( _:^y?"RIlF8=92eʙywLJ\n1K)cejsMhjKdo[P,!yG5Eݗ;i| n;D^O.Qsc\/1+" 6CDXkAl(a %8]B@o5GY6~g73WW? ]W0nŁ.˯tRekd8^ pF2>_Fa% c]Lef0~FCw`ڴS;) 's(@#AyeW؜`S}T): Itf +}_ orڥ=/2_:dzuF?6fsQ1E;1NPqm,DKKFfye^8̝^guh~ o7km4<$ȜFso{\Mְlajz2cFx]P-&S6f S fK8ސCU3b@\2F_Zo%lT\<׆@?JUUȍJK efV_43 IDAT}Sn,ؾۘ QA{MS jm2Sef+K#RYbuc\L_S*`<4-S-Dl"&/|0˄`qdvY&6&褉iGj+uk, ڷ#OJoWڀ1q(S)O&`nrAXHO^Pb@z덝T)l0C0u{oչ})w?Uu$tׇhr6YVB]6SW{jKU=Զf`js2\)̵ (T~`|4n* "|>"h\b~ߦi3Xײb2N@),,E> e#voʶ3_/=3SYi= ,50\MX |;t!-ǵր1Xe0UlSbA x-MM}\y}P'`₱ 9 BdX`b%dxYQ_goa,!=.Ԥ=L=~\*,DI$Iv&=%_r}klG#A$@Q A9IN E :a0MpZܦfUuUumۿfOwxn̪̪pψ=<V|ܸm@S Zޅé="[٦ KzR8*n:g?GSŢu;$N =PEHykT61,ND%*QWSd77A& 3X(C VG]wjdx}] WWj !q?U^Ri̍u>;53n.%4唦IfO|sU騟Tyd7L_1yO^r]gqVa'9ȯ7E b1R gdoL~ ƌjչ%AY9v~X Mv?^tǴ+i*FhZ)bӬN;j"%YE;:wu}KċGd%VxQ1q Dj9Lfk|_jވԆ[/[k|s,:9@2ŗje62;e"DoWj)SBjq]Xzz9,r_ \o\/mwmgg.%'T9ҕqB(x])$7 @*M$Tqi)tWCVPv݆[p;i6j->g2(z7h}#= c;t]Rt`$)~Όh'"$ѭI,e,D$Fh U\QV!qLz b)h@|3M.VLB2c3/-΂M㾌sKHk'c^,o5D 1SY)E 3edKrhPDݻDM`njpx<ؒ67FG] [/Fe/cV.8Adl>d0jb٠ۙ!KL &C(=ToY[R⻾~xy_w7wNmYK_N\2;eJ7UHGB~׳Re$GsjAeT4pmƒVh/"˔8!LY1E2 [E<ļ8 R #3 ьL |m]u .^%-\fsxaN1'Ziބ R pKjf;` |L$H w`hU`{&Uf"GM;{fĝk"MB$3!S%љ&< &̈%[iS;MBk୞1^n^]8 5o c#[`8~} |ZoiI+f >l "A&\T@r"ͥE\G$M,J~x6@7K?va"\|svD6tam`|g]nLGK>a$ b Pɽe~l3bin/eds~]'vƘghF2JXTJќ& fM`U'vOYXλOYkµ'cL]^C߳9|&8awod۹P1ކ* o| ᚧ_KMB Ւ1ޔ-"ωF`w@dm|H9M0@5klY}f\s\5za a2&ASukf&mK \=fY>.,impiMΣn8orE(+5}6Uf싔 P­K"ߧCG ܐ+=C!WR$I̸!em:p݁3,B1UrX"22e说^h=bU鰬Kd]s0w{ _9)>"Fh $;\" `;C:E/n4ƞ+MIek5m3qtx(tM@k`z0N7s`U'kd Ј)[Fxa8dS&&&OAJZX'ͯ|BW %BX jy5hu/!0Phoi6kSh%9뵎"'Gd'(܍Pۀ[hKGɄN8=2#NcV1׼kօ/2{ha?κo<IC}qWϓg`ťziyQW3U+ݟ 1e@ȈLJ$~@ۙئ^[?`hU`RTeia&?fs=lX8Bps;xoa! icUKp3hxX? {!~3J RGC.FhTlZcP 3@HS&Cq<5ir` -Ɩ4 ,Kxl y¤X͂-9sx *.Xmj~S4DI aJQf~=xS)@IIH!&> 83(+aL nbp5Z Ԗ҂][5+SSm)mH)K#=׎=؍rKn {TVϏ^Δ=۱TmLaY@6#Rkm`T`k7:AV!X H7ظa# ЩtZԂc4`k`=N++Qt۲?w;D=֖M W@NKR9A9a@Y̴\܋-vBݮg;Rb37mr'r"Z${̏iiM dw`#?+)AEL%hj؉sd*# /5%D 쐫0>"چdG50z7eDT | +7sC9N L$Ԃ]-aj.VПp*]=Tm4:Q)>Ot;[%v^5xӘīFjIa>af¶sd]~BO|'QPSvn9vsxS@#dݱS.&_xKX XΆ9r>a;(GU!Z)D!l,LI1KӢ}CP[nJ11kEO6l뤻Z0SC:%~t~3vz~&7hp6̤l/r7}VW ԯYL2*/S*cS䇕w98=mܫ0LG%pp20 ó0nj7My>c8MM|]rkMkS(bʦf$3c E~ͦMC._=Vy8F W˼IPFٝ 3`Z%ɕБ)!%ڛNZY˫"boP0^|KSb唱űSv ?9#`khS{0zyF$7nva6!Y*BiZ3LZu:P"C] b\dWqE %#eDao $ ,ğkPXS&=BEu#hgZ?A>iyh{ݘPi+g{#, > i&%pBYRÈN!ѭ9aYQXpGh߬;zĸZ0. B<cF3k:su̡H\N͵a3h)4o Dↄfyթ8,VţlԽX6e%؊wM_pH_CIUp!25^KŗXXW1R>W91w-?x՛hS6Q򛬂?xTz]~t,8)ZwzFINl"PO;L`榺 a@(ˁ@,4̀h-tx5ie2Bk>g@ɸn ˸pR!0,U/99\XD\nXJnЦ5waX]5华bJ-w;j469u37'µeB}NY2kfp|u9x#^5øor+&?])3oҶ2~9fd KB &s"Et]n~m4". m]ƄBoi;JjkEJsqkfVʯ{ͻK7[('&F>AE+rЇeX2He ⚙s :\hވ0{,6ccr ~ȧar?qeplaOb+CNl%@9#xn]Twa6zY>n[?`!]i#Ļ5{лB"6j o512|BvŎt`>!, ۚS!𴑾!Έ<ܤpN5̈\t)K2悦*zw(7P"f[ ':54 &;ff >pl!ɖle A<$#9bdRAd,,f5c3A=ڱMsfGȘW5 K 7 -^l/į ]:ux'5d<p8z:vLjv飒zl77ܞp)bl?k+dä;a[ aCh%[o]6~hͩnL \osߤLz2A mh ۡ$ ӬY+``JlVvS)Z)` [M&ڍ}tsl}aw}ުƘ,2Z=[ 6vl d- (=2El>v5My8`Wu!RljlWE⻘X;&Sa΢U.^w VC: RjjsX#RX98Y;o غe9"2AG]sIWPhBR@/S@Ja^B7 c.r< ¿o | E!)b`c.q)}ZQUy7U,FΊXO&;D*ɑEijziZc҃L`mϒUfdmɒkY"p*p LRҝZEt~9dxX Sb]kv)R ·g% E3V:NkŽdi&`Pq]>Y dH+h6tuBOYIT२SpO S^cOZ\0#";=M&"F]"7ihPI?k|ո!Rba1kGYyc2f :,Hll1l kcʃojxD\WKGt6ۅ]<8%Q۬-0Y&M%[+c̸aژo` s舁9/ Y/6 zTA2N%^dB 3h`ǚgWpC خh[;[5lC-(YͰCҹ`0KmpG>!TG{Vlt!p8dMʐmz?M L3^()`pK#..\, ~r|9~ <ίW_zj[XW Wؚ'SBNAS6υe<[y)e" 3U*ĻI1@IL,]89qMYa֝(zfܬL^'@[!(,) D {`i6m۞cذؤATA bWH2x/I>g$:/૔8o/#KLh߆DƵ4Qw K9 !)/V?JoK'.DBMn)[.F4…$ `y`1wymBp.NTpO)/fvx n(+ \]Yd4 3 Z$",]뿅n $䳰Htˆhyf<Qmâ`,F[xב6AGdp¡1q s bstfZiVǀι嶆 p߭;\eS1a5Q=$m{ " c Nf|U/ޢXGxwD` -{15+pێmc s1]LLy՝n%6;(Ċw O>p/c$RgD9=I~B&C|>[㚊1?̞ԐNZRT2ݎ6;ngzaVq&pd%tRN!>*2(%j:7" 2Kbfٽ W˲%'KǼ|P `6 0"O$ƛRj"IX Pe.^wm{6W[PF(!ZPw)exOfxAo, ;lq8ueE!ٛ=UIñV@K/F$L^}-i<}lӿo?vͦzJy=L`Y(2Tk2oIDDYu)eMmxAdھU8*{{|ج07HfH-eHW5mx-HS4S׬ۥXgVdx7[E`.GrXL[9׼W_ \uo~qVoH*[lw0(c7ikD˹`<%8*MT;'s/,Y#B,Ŏa .EO.܏qj{񳔑T@GO/Ь/CQp!2dYZ]Uju128tk" sjYҌ1F[ dK0.>mϙOYsמ F6[7V'Jl%I6B 0ۀ%=R66aY'Q Fyv=2l2s28Ew3̕[ܿ"͏ u 3;pwV-m˲ yZ< ҄@K&ڰ'%9Y/0hL5Nn^#/& ӲPFF&;\,p\6VBio~*,W*~-]0f%N !] ȁr;)a8j#O,Lݬݕ^dtk]5Yʹ!"YϻKg,6A2cԴCn26.͍IK({}FpVLiPgجR|A0<ЭdQlE H'qK^ٺ5eo( mg9nM@>&kd+O`׏Y3R&2Wagmt)Q/a,$U8: {X4b8|ˡfjMO'eU峂f׎MQ\ˊgzax}IaܫP^4?9A vN܇l0ۈףE9͵g%Eiˀ ;Ɋ>>z<=jid%KE2W25b\Jm)=1f;K ;N luvzvdS6QyxDׯ6s]6X.gLʟAY cx]>-c`؇R;I u MXXK + $Ŭ\lJ0G.ĎfZJ NavQc]׬;wFD0 dy[.\sw"^@N V\L֋g8TϿB̃.H xS4Bۑ*3=YƆh\ *f NYak{lOzo%+ /P^ Kt`Eg45{G1z<5͕^WD}RJS:f7`WN>!c@urIq~@$D ݇`wޥhR,hVXk6/'>{oYM)1a}Ԭů沲R^楃 l3[$Wz8{=X7ª΋vP.\6Lq.FI @:O WJlZk*g:=ФZ۳6IXO0MX̓,],|)S_22Fj֒[BB@:!)j-'>,;6ʹf,d t!}bfø'e>뚰" {Xe fIi֊f# }jQDM0K'-X~Ebzxsgy"|gJf/?  9BD3ͅd8N>7\~b0uDb=M& El&FA*r.$LBbDZÄ^/ď{)x^-b*:v.~HXe1|l[h= piV -d{e;#FI\ZRT6Iv@G[-ӕX([7M]y,NoC?ld̈́&a\kK,y}%,LVZ ݾwŦ\3`6嬃6#q$YBz̻}G ׄp- :u_G1'EN%D3aծu=[d3^^# O4dYaX:$] HNW-VAHV \FX3qc۠kt>IRl4=f1&IC Ь{a`fš t =>gIbaMԑDɶ]hB%y3 ' !g>.$8`,kK4H(~g鮅n_ Kv(ܿw': 3u+iדjr~EP}A_B `!sl[1W"[ ԓ/͔$4qdtD0LZBMH,n!cOO_տBRg<-ҹ~ˀ}+W}+M&JJ_%n t)n,$lOZy:3OI'k Y~U.ɡM ;,gZ K$GWޢ}BX v^gO`|(Ηo Y![6-nִ4 XF%H{?.EcџVM ,gNmHRcnv",l]K9A?}S>rYK4MfHwē0l^/=XD^_)?G_8FA s\ <%,'(OM++I'wUJl[RF3M.9Hmml%!ȩB_\k&\K?œ(ɼ^?dl[)d ++/*V{yv{c^r(wLjwgg<?/Kл za+Gs!>}l} g묥OR>. + xz}A\Ƈ,b@ւ֧ο̆b. lsNeE@[Ed^b;dž zu޺H, +QH\>pMs[fh"-J҃^ fNqYB X%-5Zal9bl 5v'b`%弉Uw$0eݢ x !"wG9 gdkY:Pԁ$Z0 ')BX>ׅbUxE4}|?q +.oCƕ^BXvyQ a={) XW_/8Ck@N?aLXgPIo!eYL-.#±cOa.a?zW6z"c?c?c?c?c?)Iqxx?TS@BPQXy<c|*ԉccǴ(r]0+cU[^3cޮV.JX$< 8aٴᦀ=8`|T72|y{cR=>s4QZ*qOvM3OdQR|?樽g X4₎G=W2 %CxX<#wt{=]])VqD>E413↯'dLܫ+)KGJܗr5uvʲO S,FnY*!S)}9uË~=$&Ryp G>n,Χ٧ĺi%|q皉')A#5}g(Ij_348{W81c%,Zc&scVNs 17xK9ڤwB`4>7Nz)iIJr\T<{=F3e)A)^! MĂ#30 j|BL>1wh _xi"a&>#G>X̆kHح/sBOgF@#?d:NqAS ˉyF=U "0f ƈRʹS1%b,)͑J LGZ }rJ6H&rEt#@!eƀY?z>`A-1dyi&<.tX8VVj@ Det\_լ.ȱ=Yȩ J<{lu) @.`r8n#Vrj)d Ot5N D|]3R[t .^&Ǟpx> (gsal1 lSb],!FޘiQ@@'R֐Dd]C`v x7bD͘`?Upc``siBLA1 @SU1DS83a0 LΌf`7[;,?`hN ,mӀ2GYBd.`ǗnEŮGXĔ,`-HǞ|c..I ×s6nP>ˈhnʃM_`< ~m ]3 Pr9;> A [ W#" 2 Q%.x`kdkT:a+M5fȓ"=Tj"@MKY4 dzd_pJQ^!\>W/2/rSĮg`gZZ|kL~SM 3;\]P$Ȣś @F)%[_5߲嗹Z\g >cN FVnfv5kltoLoLcm,n#@7MBQ̊?C]jW-V۷8o启6Gd>_:[)7SfgG"͔o\KMɤK#:%~=So<{<+`zu숛%M]SE2z\^/L,)+Gݟ^ufcoJ ”+:ETYw&BtxR%Sgz˿<4g?s}v|1VST?h.хXvi ?.LS!LvAAVonu21_o8ʎ91[ace*,\?sxp_k=SWr*uyfI>_"3o/sK B"&S6_d]ή"(ƒqA]cCȖ :$ܺe5iLZz&ߐə=oҘ쟀iv{OoN,ːet_hם:VσJ^wmon7dj. v r ~)dK)ݚ> 5%J\ɍ1YZfOW!y3Yԋs߂pbyeY<768::1IHI Yk7!P3M*g9t=Lj6͌1գ=hGa,̌81d2|xiV)} 3k ",Qe(y ]Ϙ:ŲK/.筡(@4d.Nb+f4961#|xGs ;ߦ4\RVd#f0V+,OoÞ7kյV%ʲ_ZЭ -djsm@)˅OM)4M-[9*Dy⏹^ A {uwrd*vfٍ?f o0`vz[Z!AfY\)R)v1VOxxeL({B"P>mmiBbR܈F+۹KO\7;5X!O9Wkc]@uŽkY(6 feY1K'{"-lk污% ҅Ms9S1sn<Oʊ+lo1 (Lh Gfctri)S_z?3fpAuq{pIy(007i1TA!8kp'Z2d-Ǭ><I'e̎~`?u5 5P6p#T]Z#vF\sdߒL %C6}k嵧cDW `z:)kԾ1fC8<<zWE/ ;f1&)tEsLhi=M!?dj5&6t/s2aEᏹYULZ!X1? o0,˩Ln=+]{>?a1?Dd5U}\/zoV8`#X[?-Ih1͟s 1mQcpX\} ~Ly}ח]f7#ܘF],VI6k!F@ѳ+_M1\=׶:޻=2\lUfy&c:0\?yaҁ0#P:1JstD@ŌsXfp#dSɖTnjgfɊ\;Q űcRI!iC6gؠ ]0&hQNˮ0?~KɊm<0;zm4?{o+ɑ}="+&YXbm=$hA &MГ e$`0?A0Ҍꮍ,%%3y3fvf-=nrk/pqns,>ۦ^>PH!nt%C@*]x2s̘X q1.3s1Ps7O;dsWϲy``aI)v8$&H8ޓq_ "BdM5tr W?č/Sn0xɥיQ%,7?'].+iXޅAO.ݩ K+'A)z$19\buf0cMv!ZaAGt>E`>w;,tgcK,Ų|nFpgv?VյS.zጔ͒I9X< =k{\9x^*%ڳ?_ ._f94ÏA7NWʅ \_mc cpXvvmhvenGȼE#r,oSYR\VʟT(7R E%sly+Dz.ΰ<|r7 @L^<'@H2tMӠǐזYZ4̅Ǥ%6}c8׮t`r 37YI*p0 a' ;kUiU~Ls(*dĨBH4$aorᐛ:4X%r" /}0v ;K'`r(A.l_nMӠmp॥aksrⴆ*p1YƁqh', wVMIx]Snñ|߂9Dd,P=}BOw^qIʕ?S/c&4C/xj^ҞsSfsOIzWO&)$$,]ݾ1MӹPClZ>i/= ƒ5'e%J34v\`2@2+z^HЋǞ?WO\# Ƙcm^mvz«OEMEnPCpҧ2:Ǯ ٲv*Էo`_Gs/c (.\XYXn\bXM .[K$k/7ud0c8e !GE)Sf\&LkJcGyDdNk1p ~ $92:.MZ@R~H]+i{=0#f?,>)oLs H1KYrk}AR<:t}JAsvt. z%=)RN2m-.9ǍfD }.A8"f_zf1䤷)0D8fƇ`Eaq,&hRk%9Ü0Zp4n@>NVhJZ(O&8{Kճ=EPYDg !Pm#n'/}?uR0C=|&ъV t/CL9rXm<ٴxibkxwOh-Ξ^O7ĸG@-r-ֳT|5סK ߳_a30 :S<ђ[[@ +Px@Âd +SNUm;q6ōך[)8#p@8\,.ޜ Y^sƠ=vC?Uぱ .;;; q^ЙӍ F6Rhı!pZӸZ7tMX[gcOfu1i\͜SIzo>]9r63L@{|&2Sdt'cK7Vy!:]4޴`ro(DV`6g%SAJhRDpnP kK!3ށ A!StB.WI,Nǁ=2 o)6IŖmh0i1)J'sAUP~Yj5L;akR6|y$!Jf J۔P)at;T2YuʹwC<Ǡ4-of1x~iKWr1`XK(c s/yc;`Kn8.p5f WNPgf6?Rg(U *vr9-U["$8w &3v! =x!x%>`7Vƶɰ1 :b)vԢ& eh3Y6[8?]iUٯu`BI [(kvT%aiJ,S`S>1hwHjꌪ`'P Fbv&j}T]ˁs1 X\o :J0xleܺ8rY=|$ɋUURYХϬV;ޣWqB>9ȏ}uFdA9$gIȐ1b.ɣ=O31s] vnq9.KDRklcyx%:ZrmcRIƹ2H1c2DNɍ+"wfDxIOp aH4֬sq7~Hq!)Y:Jp4Ƣ Y>,c646;BzOWӝ5m Es7s?bWEApd3:X5{mJTl{ Y!mylCy Tv C-䋒5\|Nqqf%uh|KURS6י=8o\ež۞g8ÔЕa$5BPM1T V4 0;f 6Z;_=Hxҵ^qcpXܲm2Na]3 sCoK+M.ʖXϬg`(ե r8:e/dxTC!rZJh/akI)lѹHEwQMb9LZ<8 @溅&|w黙; "Ƴ1fy-sh ;l_b91'6yCZۥ~Z"99|׍ .^a 7AYYMϚ+{t <%/5#J&m3/GEp/RIc x9'u@SHӸG~rf{Üg`0rz:   o o& <*L\cF"v }""K(M R\ҒdVʥy z-Fz`\'Rz{:E+I$]]ߥ]8D_.$1tCVqX,~[Jr+U T̘z#U%UpwF;S*, ֑y!"- ae =#ׯ.bF/.iolW]>óaLt~ľn0AU Υ~v"|߈#tJdzl~c3WRi14 H$.}Hbr!ET|+-;Ō# oˊʼn7(ċiNL,: $vcZXbXJ>ʄPߥ{fŦg2G˳&“ƩcRB\{ip) !)o`u{תQb/K T#y#ǁ }@x1͜%ǽ¯쁾,(X;#u=]ӆ{EՏ6'>mfN;n3n1$6Q3rin@>c87<@枛QU6ڧ0֤ܝۥeɥ(8!q2fZ\BcsЌ2cW GE0 1?Ԭ]F1\ߜ26})\D9e,w(]]E9=,v5 p\rW] 0>dXo, Fx>z|FYnf(W>fXʚ!W:y;O']` 8Ezq8A\=); ?TR ew| ah\ Y@%,S=Q5%j|iǶ-8XSŒb;f1uǾ2ܼ9g8 f1bk={+-N1v;;( N-h%נ|z d"o3E<1*2WRc60MvvtJ { yds)W3"afg;1pOT(CP&ʘʃTt?%u` Vc(1EU>s~m{OL#"WHmc8S`"=<Hp r=y/'t4:b.xK jDK>[niЕ2taƌIdĎn G2RVϓcKcwg`c,)3a[\;8[w\Y[}WsӹÖ{]?d`xTArHᄶxCJ 驞zkѴpDuLFLXq_Ƈ2sWFJ$kpƮGӣ٬HYo'.wlzOaV ZkBTy4M'M0϶?)g9KЫ\J5&n(FWkPj]H W"fjC 6zS[Henml(r / nqyڠY2j'իܖ`avD q\8 J{:*|.t()+R1)C(5<}x%Wsyb%S,rS>4 /_.;r;%6AW7h$ݘp,ΩS\pGT*h% E9FkK5⃆?$ΑcPeAO'Uy,܏pA.P5;64R2DƈnѹjrlŽ#p8 r符R -nGVz!xy[iyHLOym IjQn&K|jP5@EJŲsĐqE~c8ѸSQ|h&Hc]]yͦ<ؓ1rv;l2 $Qe>%_GAA)sp̯:G$ *g6Rr2&Hې1h/RDd1s*"f`k`{pZ XsybR$׉8!ڔ2Z<|fb]9p 1K5's;t$-pjL\ŀJ3Q\XeȥfsV/eN2Ř9. L]"5or̶4r+O߿=˷^WM<A_6q&pJZOґ+Y-=FU%bXCUt1]:7q7]XRe;)ܵFw2nnJ11Ќ#<ieކ UQtf [6'!m#MU(iqI%~BW? 9 aWXM|VS*uJQbc4sG#6ܻͱ|v׸M_CnT~& U8|H|[1P(㑭efs2<]5b5sKXt<zc&N˙c132ԉ".M Po$$GМp Sza]HG >P7Nd`#e(BÌv n%7R;c5u?+ G'* Qw6T0F''00ReQ*P9pq9j"j)v|$: ˆX/Z~s#1o *m1.]IDم3f,F-I'ZQ xU QRUwS/G:mFJJ]<+I8;gNhʬ3HQ7ŵBqcs1s;▎%5X4̛'TxL;x-^F&jk;8DD'1sunV{76yŷC` ɸy2:ZHygbAZ] =(; ݝ1cK <ӄqac}^7denCOK;\3۹#J mU +a8T 1L#tJ E; Q*wXm B]F *[ݚ?fE::^g~ Mmd0NxxR6nnGP2KX8@R8 [3j=E2XRߨiA)v3рdGEod>clK^ I]#VyܫJ< 6uyck!)׿N7YtenFT^*3<8+Q˸Ʌ[X%BQS!ݖ2Gzҕ8=k8fhIJ~t%B%K'-:΋@d2d%ׄ0g)}Di @ϞݲaѶZη3xScq Fl.Z`f.+AæEh^#`407q;J{)F.㋪,_)=&W*2V l9izӉ@ZxUƺ9zC( Íp?'>0@a^jv]{ap_r`:Ŋ:ŃTK JXRsθC9:\*c;luR3";v3N"P=7dێ:N=6Y,u-6u&<_4B^'lq.7`?jn rrR CEmNi󝹈JwfK,]lY=Fj"uq [处!rjL-6c*ƺa=Cz*3p*ɡn>9L5֑W!_"Ӹ]7ɊtU9@z Tdg#Xb1,b:FGVN RWy]Uh#1L)R"9c[m>oL\O!~ٮfD3\ALx+zVF,~FrxEzXѭs}cN^egV 3UTM8f>'ğ 1z7p[ǸmTR d۶99gA;Msw uST6U׆jRyhZАM5X$kf[$Ud~ԤqGl֩5YZ]"Ыm1C[RZ),%,:;^ynJ1p'aHG)`2p7S{ntc)֋·Ym>Mt+菭-T#D#'8w@ 8/k6!r t@zWX\JL8Xasz-N7n_.Rju/Ten Y=y] sVU=gcA7kb bmR;Vip:To?`o] Yl 1Hd;d7%SE(7`PN@!D '4\9i!ɚ|4uA5[=xmn0EoJѢ`f%*? y.e,KVi ի @uGmF^[^z~ vBˇIJ2A!z2I䘲7GʌeÉ1N=Ë#yFCQ*vA\k-1I%v>mr0~Ib v8Ϙ1eGcƂs{ޣfp rekۡ[`9PU"ZvCSRa.#Ըtg#b|ϵxw6jfL a]]窌Qq#uOS!`g~xY؁]ΨS5ݥ0j4 LPZCk107Fо+gʼn8|ho C8 !ۄL5 Tb+FeGĸN )޵)r 5 %rAKcku^{TLPF[ϝI)FAʒ_e]w×~]?藳-pGqG jnjN=x;W@OtOILRJՋ-\^7< wqOH:Gpv"l>*V ߣ|˅7*pǶv"E y.vMٵH(?l)Bq0-6KCLHQ/L 6[$Iڇ dLdwt5_Ԫ`V//s} Ɣ7HCfE_w tqzoa&N^T*i2[lWݪC]]L&@lEct [3ZRx2oS }P$HTf3; n>f`4%Jt0Hyyr9Kփ:.A%<3RɄ9av>ۆmi };ɤg!*WvnQ./eұ䘝yvVn`,[wjo/E3HCe2r7K4^F-XbN1`@w%6Kb!CaFjݲ#;n`=`-;| _c;v<4;X;T[I-l@p۵WvSvz,a\)-_cҒӚ6FJg,1L\)ÈzwJX5 ctoJ_hk"%^4x̱);^'Q"K|MhL;m2ƶy ⟫ TyQ Ew']GUc8&5ҝ $Ltt7Ѵͭc< ]*ć2/n L&Ք%c[U=H"R`" B~QB Tfz>"_Dـ0&۶Vnx+P\ TpIEfQc1񆳰)}qmvzms୚ߩgH'kD3壇^*K"Zq`\lNVד" %ڙRUX͕ R ]h6h);+&`3*~$k+f\&'<ojicϣ~.4~ ;VCo96/]_(Iä ][AX+΃mkJ|]V^x(GHwF e=-iNZ ]Zy]3֦^8\ao*g"Rx 8,6ٶKi/RSlI#]ˌ_%5gz-Z[=a햂@a/D -`ޗZC<24B{pI&30lj풩퐮~neZ)0ˢ ^NT҃"\TQ7 Q}>gX$ޘ gQt@LhsW:kqu.ٴv\3P$@w*pۈT5^j^$Uxq7sCiM'X<-,c Xwzx6BYnq Xz%K޷ =̌K6,Fä9t Px*\ZzX.@  ߥ n2aeE~7d0P\Ό|w,?X_:!υ01_xMFho}0B>Te!b-lWdq l4驢HΐQ懜(1`[\#F7>..^A[iD85x*< Ar4}f<QTQ(%F+K%f? dYʵ)KvM8s&9֭l2%$4o=,J*=gp ='UVY-JۥNNpB}ڮ%\V]۞cB (5 pϢ3p OaJbƄwYMTEbIh:1![l 6hX1[Mf6澰PڅIX3إ~x (1cJGlf\ +S vWkaP& Bh-nvNܣKՔ X Vt \m@{pэ1Rj5 X_yFUS\R]"â5 \yXg(\ȋNp0Fa`vAU S;܆i-R [owfD*V@>b&ź / 4ZlKJX>csZ;F~ 'a+~tߑ7'lz.]:E8z89vWGw =񘪻ҘȯNB<(:D*\Uq/'G-{N=&2[oɜ.hY'=[5A74J3 @d-t#aBT_b $2,]MqB|]ώ6c2%/37 KGlJZ{bY"r4NZ ;qރ9AA EP (4<_9_CHQY S2qu QO:QE$R7WPY|^R݀u %0Ա@ )uc\9Ps%lBvYl`ZC=RZZ-6;9)Il0zh oNP7 q$YQϝ e2t:ko-3A1mن1?Mjvʶ=؆XMnK!,r4k{BXTۺ6̜/,_,9LB+;跍P=R4S5 E$GnkwdyS}1laptQ!6{9WEZAݎ3㑻4q^v 2eN)aUHOo.O#aBFbxXYr&,z`rKj%OYu$+!+`8YXNjEUc`Zw,U`v`ƞh t9ԏrHJޔxn%;^.,2>[Yvآ-LcJt̞SU1T>p2Evsa<4̸de5?sWe[ a.dp_((U, U)U]Y-09TӰsaϰ& B>F))XuO$ j[xqtֿKo<8 -~\M΂}f.ɸNf4"L{MPY "t6"BZ!2*w -~UBϓ1DXFW^h9ճ]>*@i*%bd8a8e5)^5\ ; n>Ä7{YʘMƚ3c]_%~P AKG T휲YZVb5Q|w"3ܥpQ)-P4>=^*O3W*.qЕ8n26gM~%-ش-ճ=RJ#t7O=I1zl甀df7ܰ M<=}5͸U;+fo*V"SRq]tξ9̳\ +h\s IDAT 脠ޢ )aE2 vtB* R'b<E!YRk:AwuvOdmDX0lW"e6 J?EwQEq׀Z,].;,]T\.46F'8!Fx6tRD_5u",PnH[Xs=|\Fd8+dn$_6F-m [P-q Е')e194xr+ɮ~uoG8tcRHSVLd!0b, >p%6snΘa%y)A |"g'ֈ5%,[eux=;v'ػv4AR5ڻ/#䒩UUr:RX+p,*!Vъ9x=r=Fji@=ށhv!$%9$׶aVғ3ӁJà_a -U#\ΐ"v,tF17KO&')9F\94vH#K#sI Q2AtۼҪ$ȔF)6s.b3/&/rU \KUᔍU"2E:xQS]Œ)Hi=HA@3|cRTغ@sZJ;=tw6qq 5u,X˥ U ~WzrZTe Gm/l}J*|N{bXp/u%M0ZnNmTEtׯSASfI1M㞒%jˁ,t)=J=&i,86rZJk'@Vo)/ЊlLHxn_Ji;>9ŅE 9$ʳm<;1g)RRJ/8c Y̱$t@JɭhbX\S)Cݍ"B/ !4’}RWdrtnZ1yVXHE#;e)7S0u5QDz&2ŒsRKV+Hsup%_,8-.%y a B B&r5HeL2nԪHr%w;7ȝHika b@~$6\3õSn'lmCJ)'ZMvNv[! rIǺc⻡Ʊeۦl'jmXsO$v ,6M%3k$D V4t59uU*|Rƅ*f> T9|3v>w˓cs5j*#F/7'ear7חZ/Ė졄M-A{=neN3S (.PXW;!+V$b/eC>+KY詌+2_Z/p$N]ƺ_ u-T\*r;m$=`\slќ̡U5ݧ+l۹F~nc̊ uiz\u<P3w|x_I*KDvR #t8;+-sl+YYGe"%JN#q ]}X}߷ul.{x*aATQf}`R ə26؟S7W&4uo z.\S! @j,^ `.0B愵SgʟPv*\ED#=Og,]Z`Ɏ;МNғ) pKnp0k|9kD`XK2HCX+$_X|NiJ>3}֬&214"]*bs"BجjWHO1JTSbspmמ)=-Hnp?(luS?ܻG`;L G%]Vȭ<$˩pE 8 xRNH0`uװS"}WL ;<3K8s #"u=1 M lNx$c|J eg%F^KldH8?ng=:""R sK!P*Î+Wg \ b 8svGDթ[B/ us^̔fKȋµl.l~g"EU )s<`N|(UB-T|G"wUE32C쉐)Az1t@r?bAO|`N%0Eڤhe@DWF7f Ӂ`i#9s`֪1`%^ qaUѱÑYDT_3g`wH;ke>9j@>{`{LߎυpʸG\ RKN щN\/}^搋F1 P8\N2b &b+)b.% n/cKNv g]E(iM(yj=IP1y N|枕t w{*_qޒ8偹~ cx\sm3g`~Gbk8:}(f&L\<.z]*%T8 ^H6`6`,ZM$I'OEI+T 0Z2#GX+e:W*MհhSD|VA?)XJRLvY}㢅+}w֯\ωghLr(TV}]c4Q3Ni@l|X5Bx'H+gUJRssk@HuppGCwb:|?_x`bh;F_b}[B6CLEE¦(]67& gQbž ,xyr=uS`"`d 6YtL!Cxq*|LeXKR_Ρ_'ϰ]\Fޏ ɐ ȚfKrbM brZʕފ* mBAXV~\~ (" !9YU:N#*FkrFI˜YTGND F=xDYoqX>Y[ʹpAБXP_7T΢"k(H "zڈ, Puȍ]\ao 8%v7\֑,O.լq9GjlgM)gHH< eleܗxC?n@(Ev+~|F_L U0g Fv4!+íSZC^G0Z#8A)!;L'C\M9DȶO27"39"FdL%vL+b=>X'⡘Z@ao*Y!;!!4%`_Xʉ>K眿kys [OmrbRu<%X1`=AZ򭼑`#i?PJ .AjIzk+ Yv;pTx`b"Y\\xbns%ɂZlIfܨXJ{%wQdbRg./3ι A6vcRXe[I;=b.V&Z2WP ͙3 t))2S"HbL} TIy"@rv\ L#{UBh\\b~z@ǁYts%%S99ڝ̜X;8F7q.Ġa2 ON``%.^b&vy=q.wc98@o&MFA[vb6 i=',`8p}n6!ȦA>Y)B)Weϔ@N_IcQ9zNX} B7W;v4 M&W',Xϧ) /pBn}&A{AI/s(LOݜSY(2p(.W%h.<EQ^瓪?o¤$OsgUL v3^.@Hʷ`UďHc3Y]8Ҵda.LPKFmѼw_|n=R?JLQBV*JܕPOb=!<3x, ϗRWGnjp h.|3:&H|i.ZfX5mtt*<//WD9ҷ RNΪpWp_О?E8c=F9a";0;L*: h\7y9'X90h2n/LHY@hW%HՅHQ:BKS6u#K'aV;],p4;=A99~Z6Mf9%Vf E7M\Ut-ąFw~~s>[Lr n7lSbA+tGze⟻R|-t# V &s>}U97hi;'}6vo*;6g—;uÀK\ \k}َePCI~MˏBe~[ȅ+s4ݤ'>3[b*{m uU0~vaLM2c7 )<u ZANcros$G of=wtlf#hLU GYr䱠\1SAľbwӉlÊ*-qq"+8m<6BE%ją-^W@ }w7u$^+8[&/Y yD\@#\|_ E,['ZآL{:b)|0)Br*`Pgyw|LϽv{G{œm؏7G,1aV"cc#8nt.LY\N`mGy3w0?cO4yϩ`"#}ዞP3ԵqJ^[=td9qgT]4m@ R@*yX2  ! d[.A`sBB1` S4z1B\JydzؤױiC`NOpƋ3O>3' $i9~j|7+.xQGht'sF稧=rͅ7` &2<k!Y !ZڗO0T v-0x_m4B*c'v8gXՎm^4ϝ:*+ݱ<tɰcVSx0o9:-{hG{е刺GK0*@H8y,C.͖F?tYN\9DR\d -|VLsr鱞T9yNqf'vl" jD&cHv"`-!<$|JDNN;1@c!HO夥J t UWo?gOfae4 `=^>&^&@d9R8'}d"-y+L'_'Gy_m2t S 3MK80[&|VieRu V* # 8Sg8nHhW}m ޳r|̩rj&A<&kƁT5\S!`i#Y*=B`tO\Sh0No`SS7[j{bJ&"NJ{7ۆ>pYj(Q< ?Ym<@`&#z@@+1Xxmn]?.e&Gk:Xh}&|s p1s0;qvD:ʪL1>@n}7} ǟ3y Pm@ޙ9¡ [S &K/i3'Cr8!`wA["a9`׆ޫz@=~ǀ=L3ԏ ϯCqsXlb2p!g&7?b>t8Ǹ1✧S9'r¿V /ul}F M_L5NqH&<guM-N2P T$f=+'/R  ]b AJsVp~!gަ!Ȕ+b&a53Ϲ?DŽ!3#ɄGx}@bW뾌1R oUS|33UvoK Ԑ߃-w3Rr:B 0Pj? \,-FQDĈ1d>ߎUpG}=қ.uH kcQTxss$gJ?Gy1>X G#tC7Đ_cuلRMc>Qm8ۥ۩w"᳅}@,Sx0cW[+v / 䀩zWK'N׿o# /;$~Ozďy@ )U C[c6 }1;N4shpȏSć.(3kҫgggh]!ycӗ'Nz އ9:H` ᴪ>h 3ݐi9H\ nCO IDH;&j<{Vj%˗`3ٔcf pY" uD*C**{Glm cRfbB뵎 E|h}?ǐ+5@<5P0U,;s}B)_Ƀ9f\ &"ʿOYu^a˯ru6=}x0@Y 2o:0ƘVeo_*(̵CdHR>_:!Jf)z>ЦL!኏%!! }?- BR9NvLV*l͓h4?GVznPsX#|ʒ*Q_AӜm83Ū-)qCB)0 ʐȁ3O/Ih^(*1~XO>`Sl{Q||(ۡbK")KYqCf51pc1'g_@O 55i ( OSfREffG{n–R Y-oǹ֮vv@b b-ʲκ]SR] dC,q^V(zLHQZIS?&H}َ ane4ׁ*2dYo'O0~Ĕ57 qK-^!# ZVy 2^ȧWh__#.3 }{`fVEQ,A1s2>IƘ2M쏲NOqxE74^Z&#Cjr:)2k-ˋ gr=TuBVl_-@.vҌhC˿i!S6nఞ"M# < fO0OBW4fןho~cƠ<=b=MF#F#Eh||}j~%& Vs2v!ZG!\hG؞Ta^c%l+~ۺcv6TAtlawP2OiEltOK~ 4"DQ(c Ƙb)b`|kj<-8ⰌlTD"D{ AMWO?r1GD 3t1{7kR! &pdy_"A1-0aP fj@aR T>Va'Hg:XvJl!|-!r1c +~yNHx_uyg=O)H}V<>۰'6Ͱmfddd>9;94 !SOXb=* 6UL,ﰞQLFD>?R@bR(ClP^@QVɵO]]ydE ufX>ʻo_`4t -lmma6a:ϙnʌ?&>KA{ϑfm(Ƙʞ}1~%+&TV= Lȗ[@׿o\nj UWT9m}OT`c.;uW"d thd7 2i^fKhPY cȭ`0JfZS%ե |3V+MΐYUUŔOFo+;7 q"n,3!OL!Muk(MBY+ye7 >)?/eYNPݨ?'crɤeR:agIn-hfFf#kc,ńk.{KpSj0׍VbA1Cbq-p üfG|E_>>S'ªo?Xt2k ?$W^ml~ۡ̔Q-I=UwNh'X{tΙx 6v\@`n1Y]ˆc 32H%Ap Z2 Q>3`p=0noD0-!Ž.,d6C*F:]|<@| )ңx> '|8]l!Du?RN]{`5uWufN9_Npx2d!_ߒ92q0h,wlZx`>1ށ F5 L2 RHA1oj09)\!x} &| \L\auQD@ >_Z|j3 He"ZX\57axAAYpoKrK A\1}V cEC<. BbIh*)}9?g~9/]h%܇^뾃P L\ OA!c sF3낯:Ώ޼xhtdqf$}/uED3eb>U곗%7: L˵N-.fLK9Ue TOW_\<-̠+N19Wv,@ߵ sV}Q5I2SZbq:lq(;Sfs@lvGÀ8o]a((P1'G_8BM#b,U@K,CWAsnga:-?*TeKϔۖAҤ#DD~^` KQђ$̑':KHA1p)6X Y_wN΃d7-6jhX9P568ݐ-E&Opyro(MIpz&X/W.eΥ3/?ZVhKҖUë%K?Nri( :4J1@i 6_ks}d2CaA޽ ev%5=-[LTuK_g;a!bmRw_n&"jDj\5-pu{%t2\9s]5^\e;xZlp8-NQ7huE͒ʺIZ[?Ha')CF{ YW7"y5.WUp3؝L%XqHޫz*go)I7?˓W1 l-1ʽFϯBΝ;$?WUNK\Ӏ 3GM>%yBHX8cf0>1:y|]WK Bƈ)Caƌ1L uPP~!q*k|Vx`M',T]FO$n}svߖV nfÙM)Ga4>'lrBe"q0L@u>yXJ!r;;;ggZQ9ָRi|Į%|Adφ"f4qQDK~f`-GB-5&\g2e̽屵LU, / (MkyLeO9uVgvqjm϶l1WXP > }wn$+G{X]tΧt!sPĵE/VصX)\@`| MlZ @wxo(FLH"y@Cp2\,Q.&d]6Bcyp,!@7DLDR2|뙗kZ}z}p\.>ӹ::tΗssZAbjSN5gQ F̀-~?d.(QG JYnc6Xl#șR~{;ah[)\>1 [CG1#X|ZCA7ds픲/VClgs#套f =ؓn,璝$33fHT[f`g0xcR t `s.;ހ;l@̘a_D^x$-9#PgA}(8&9G<ٔٷ!SL2EG \O{}2xѯAM ۺO9/ݪxʷtʥKg,TYsiUv-8? ?d߇TP&-Z),xT[zᐗO+&))\ 7ܜfOdT?hJR!X VgCRKU$B Djz/d|nyvZJ }>*Y)2 Nm(W _kL {${^VIM47a g`}RR 3boʵ 0MXqIۈn6)܂q"P$* S_jnbWFD/{͊۹~uk2vhЧ 6Ȳl :v[[[V"̪[V\cʯ$8;dp,pP1" % 䁎Z"m%E Ar 1;ٚK*2t:a>YK`yT"h)"^U1 @5yug.3%>40WC!Еeq%.6lCaHV1@-rI=űI@$ 4C 3o!p O7ly6i`<@dI=J{ Iƀ,QlJk]w/7 *5[ 3?9_v䲳V)|uʀ[#E'tl&bNQ,x5~,nD8nDء;˨f [gKPs\VOR$nJW 3f3Qj4'כ)F@ZyO_NH* TF^9c^4g;iJFD՞˰pIUUjJ+ R1o@cfWYdq]1#7vj_CY!9X 3~ ƿAwaS@xYtɑ =0E(i=st/gŮ܇fۭQdGgtǓm8_i<[ ܾ3oښYk upN}~_ =Ҹ'gM17`B/e#삠|`<0AEO\AE6ȍx_GY xXGP=߽|(ۭzK2Иl_ e^Fdnt0) ,{y- NJbGLgfT>5]\-~jG/b~p>AQ,lfKzTws8ra` pknv'ςddcjZkziőY˿`Z6n,y- F3b]CsB~bXe1-V]x9,Cȉ3T277~Rp1lp6!aH!uEHB_cfjSeTF.XcU8(H%4Rfj8&>Z$@<}̽>rVM]Mb߁k\tN*ɮl@ЯK k5c6Iek@}2cAWum19ZVڱha9`tG͔\?x6h^rd%&ߗE.AɕgWl؝N'&1x(ˊ{ rɷ.C~|PC&mƷQJ [mEʐsX`RCS2Ն*,d] VP+>F`ٚO]PYS5)Gr#Zg)T MiUpu"TVb9fIjW  ֺ=@i-5n+mL;lB4 ױ}R~T5&i(;w() wCs ϫ,9ivXX3/7/sJ~(c/,3wD}2|5=K*{%}szQwNgu};Fa[3hĬ=CC2AaBj d.00AS%uh#&؄1^nFbh*؞)³Tu/B bS٨]ƃQ" t[ AψPa3VeϠ7VhX5aﲬ~餢qtD7`:}-bf L2l5 \qBuqh ! ?V8-`,[# vOǨd;,,t/F,}jtu[!6aC7dHZ"px(/W/ UU73wZ9eVk>:DȢ@pQQO~F޵RŌcXQm:ߦz DGksV\ wxV 5#b ' 1)1a{8a^b+qUVmqʱM 8(Db?Q[|G Ae3x6῅X;X .l4y}VV'љy֢\Ʋʥ av9:=⪼k: =LRW!U[zeDwrL <  {~S[x-ko&!&,[pA.OSV(6b&FTҤI=K 4R(37Y6tWyb1u=%ʏ1WEħVk-*WMV[d;zYNZص*bvednMМ8 {}H"쳅ו'~RK[Gmr9S(\d3-ކ`qqO .<о-Xp];'J)cL"ySSXH8-j\%vԓ`DNhks^^6%bqܾSӸ`_cjZ۰,!@:iēZFЪoVpq3 4¯b0v+<׋[.)C|a BRŌ%4Ws=)t;CO'OeK=aYl |jJٗikf@|5N Z/ LLKd=GlE9_*gHg 1vA28n mhp{4jTRC'-a5"d Us0$Hx!V$ HLU΅`]m=/H8pJ&EbS*->p4v;:&)`"4E"^Vs66a*=cު(f5J.C: Jk)T8u>usȴ3\9kɮ.6@-i7ڽ@'-ծvuMX9"J-q0i R!]wI_(o f[ ^1 }IvlMHw{"&-ӈRQ_B3D*o7>[j N* D`,IQM ]U-X }uAZ.=ݞ0c$jCudm޺[ h1$8e,[_m'&x { }x57̧zAt9-ZDRe :C<Jl I/H+Mfƶe~K}:ʯA/. }6deNj]lV[ls1f~u[$-eщYzV 15 @M!\%otWh H\#g)e'V?l;W*~HLw,ws/J)@RaHaO@;Bbo C6=W蚮Z0=cwlW@j\?O` KW'Se"X$#,j7Me6`4BőNٔ&1]^EK@u9)3/T0Sd)hW12jauc';|14>Hk)-*!nV`{QJf_019)ejŔOLV̗ʲ傧t0Pض(oy;a[)&ǾZCuO)sxT2:*8qȷ /ٲf+|M++U(YJ3Q{mJ}C _ZC[ A%dEDOaX}6H]%ZvJh|1I.QHNO1Kкސ)_ ;>gӱ;<̰`n+|z76,]8̓ʛHb8.61 N͠aBez- DFln)3w_\:3 -ȕXǰ>vH("~[@Զ>_*1CN[0=8Z8MsN;XFHƚS "uXOEBbv}Q`4="I̤ bҩAwIJm9gD.Bus lu(P|dp@X6П7 v;' irR{ҧzF7X\aoHԲ>vӼNAo?x[`8E+}"LK4B0Se,Jj,.J ~X1^2N<Շu"723]DhhnЀ C'TTY&e@`_3)5kN$ vuyˑnv#16jii2P~At=׸m s ձI[ C4t*WPrhO_K~n  >;xw-y(l?ۀ*e!JcJl xf ,阁K3Kr )N儸Xk>u0U  wx*n1_{]؇+\v&ܦL|5$-cJmRӑ.NfIϡuV%T Z ɋC9nlD`Zޢ4fCS|Q:8{ *")x-VMhP3; n~*Yuڦ` h$2Vz ,]q"Z*. mM.~ǫ?'X72#H؄tPL 5sݛeg U?``Tb%ÃܩtC7}] 0NE\0s0K-b w.M`=DO0E]#XY%, Zjeߠg4gb*A6cG&*R0]o? pЭr.$W3d+6t)< bW0-YQşr/MV WVXvA )۵o޴#EiQ%D,9uLЦU͐>$g놓+3K vZl/Sk*4T{:%@CYi+f܀i'Hnj}-Wbo#[?kP ^v@ͽuI7ĥc g} @<+M̓ ."L1yYb?YՔb ?()r 0N x95h^[ ]+@Z $ |& mM6 /*vH2_;\'i3"R%`sR*86zYe.Wp F秅=~^p q4%eZ[!=4uLX"=0n/K;)۬Y)}O]ڹKnnkGg Zv :Q's.}_0R?;z6:t!CEQ&f־5z#`R=񧓬Aap.L֑P Tga#10͔[_=]) %pK58yȤfYGUژ߃%9ÇRnvD [f'eaAl/*i3+&H-Iڝ1f \e:C!ZgH׉qϱiQ*3.]x1Go|!`5&E<(T_+*>7mH|"&r$aЭkh5T^moKG cb a\~f"P;ffâtPN|5ֶ)7\&38Rp޹ !sR1uR mʅi{Jx_0Mb}5SvB<=&z @Vp̏V|@((nE3UXCb4\l=hkTu@݈Aú~S[w+>x|,bXOd0=TsRam;-cMmU gϏ*eG T9 A@NXAy0M^+@6~all#Zx2laY7df>u. yh#Dd|36d.z8pʰQBY,|N~K5w[LVԩv+ceC(X6[TRL 9Pg2βH+x_+קV`;X?žOf}D}9^ .|}ofFolPV(85SqЇ('c&J:*ZX}>eX%@}XBõ*>5^>"kP@geB ddsw( y0"d߃(=knY1ǩN=]EX)$:>Ƌ=U1l`&.3%TLVMmSySJ\XU'ZQ,ЧR iH- u* 3OR{]{J,zٗ!3cRZ1i<4$R"9Cm>oL\i)k闹h4-jB1.t! )f|ƪi=6 E2Ty@G$v#z)>;'װYܵU{Tx5u^oGxZ™J%s?MbQLWf\co>$(>lǪZXv!\w+!ƋT̯Rw`_SqBj~ @@|G|C?_ڙ瓃w` _h46T͐Zq\vdqD)< 4"X\"[K1ĉ(,m[OV39L@yܬ|< @͌7`QQ }eXk>K_7Deo9K@)cҳV s൦U! .kb[dLf:VДP@X!,pe8mfh-EŸjE @=U5co-> @} u̽uRƆ0T|>nx 9 PzhtzBW]O&2^PuIhBdA7 hD4} /q=kED^]a%ha|w.eoSΡ B"mx:jM2$xkf mSS |uB;=c$/edJv s0~`eŲӒ?r\H!B!<*& /j b9@pJ@/ sw]6prbE UU~ Gx,@[- >,lOѱʩYb>3xh/f>g%@6O&e) {h]ʦsFd:CM>oتYh$ [y?h6CGYa25JQW)H(&͙wE]T EӭRb1PPTRj{M ]Wsof\urxƝ~$|lW#A^BAYNB:Ä .E(ТAl@(Gb` )DRPI_n0`ƳlCn)\kYF.nT|!й%C@x8qeeC(nh{=6b/RQGBSft?2YP'lwU5J ' 8%,)`}L=x!F,p>!8Iw=7[f(&[Tgl5F- (x>qλjN\Ì1.j ek;s|}@|r I]α\H( .l|9;i> ń:+1`2"tԘyoUQĺRXWl4?C/:$_e9z_MS0uWFpX^N eu^+|F!]6~,p]?.df&cw*׀S6; xۋt17+BQ')ck*N!Z,]\IVOHM", U%`(I3Lf\ 5;L^a p3T?/"W_T*pZe7oY8`L*h^vŦ>f-<`͛#)bF6T>1rkfʉfciÀP_ShCJ+aEN)U5`]ֲu$,}>#",nx IDAT(BϮ<RƄS|X[Gӭi+ej@'E= f#j4/r R߅/ +NI/`zLTe">J24!V9'DHa<6kdI+ss ja=|erxPhY@#&Digې_C^;t<4ď e[IDE-[wlB/$M6/0i lwL}!m4 5( nhb޸;̉x| g(x{Y>"xbe;E$S8c%[2 MHC 8E@4§}SջOqm4@FsX},t,|Er ;ϟ8Aa+@${˄dvGj4ڤ-|~jWWV@xr1"H`ʭH=~ <.,JQ[,ԡW)^e )>l1TvuySaryDIc>zX &pɸ b{cMw8~TS^jCY6Zꩥ)ss|1emGWß=|cŌ$,}pljX76,qvW3ruHLԧJȄt~1Q,._ 8@8iIpWAˑ8M RaϤjx]mS|~,FPBXq!I8\lTh g^5&ր);\B /Ē{Lw0)s׼k3OwHeY 0MKޢzRYbuED8+!n 񾧡 @y3 | ~9"k (4;ˁ5^{j#e{F7f~S>^XS^6ܰc<;aR ОaDk6Bc}6)A!TI 1e,ͱxd L[eFUL! @md|lˌ]U|4LΡ#& \³1 uQS r|Fu}/"~YOۂ6sbK'pbvr Ro–~Ί.`DHܗ>L +@( {(KBd5?=̉)Y˜\y Fg4mR9A{3kSzn$^Hm bƄ![AL+&2e$x ]cz]`OCK+3TT-#΁ /Yj-KF-=7<Ҷ!4ﳞJa;r*Ҥ3W\qxC"|qo&|\ցmUH2dJ&;Pug 'S"*@Y^ڦE&@ \v\N =hЊmbiF^I:Y!-H<C8d퀓X{u#Ip̛#C0 6iĴ)dB Bډ7 J;42t ipJV&Ml%M_qp~AƃGHfKG 7T6Jſ>e"T LlFY>^2ٮ׽cR][!9S[VIMY*|Ϡ$X h3wdHrekIglӿ}WwajDÅ/ӅzuKiA恷ZҙV<\N``K=0dT KWbۼh%XA-y*sũ/thlP mѭZ nN,+_DʲVc>r/e5Mn3$ؓ dJ1%y]N7&LtG71ş5~Ϯnl"́c.]pٴblקw0fgMB]5*nYSH !})=o">cn|0\,(w @m]MXK^;` [-c!t±ߦ]ff[jXpk,5EP.a,[ wAqٹd*}.RGB] 7Ƥ}NF\Jfnū\ _w%^cTG U*Y.Mnp|Mtɏd4x.-+'BpdMhFY9=^V1d*,RjM&(/fb@r"ˁP&Hl^T.o{k1[XF2w7DwQMn Ƒk5j3W&;9>Q7b]ZKtf;\_kn?n*o8PsgZE2Vxsڝc5#S7.$-(`OĿs LŴaW|w *R"WbWj T[<&;|ߵށű:T53[w֖C.m8,a[w2dRZޔ]^*aK^ғ)ޅjnq[ mC[BxU NR 3N y{ q@ Mksp)3dg j]EYmnι`QR(1$ww¢ͳFapHfԈ# jkVp);3Vh&rR$ .լ((ЊFaVX%W*!DJXEY\Lv,TˈAϊlgm%Uß@3lb qyvltq&`Ʊ?l.i2ŋZy,,>OB \#oAS?lΔŀuNݏ/&FI88aWʶ< ZeS/T\V'+&NwpX)~}'WRi$2E܊1;H`kZadP;\L36Z)n ob:~*nK4+vXm[A+X]XI(Y$ ӥb:ʦGlUjH]Mvs< d2I17À0O^&,D r옫LLdDd9(6ÀRs-+ O*iY~Pʗο5C6[ ng\ѷ4S*EH3~#{@@ 1A) t,O^JJhݩ%+jgl$[rUy2X@@1QU/:FhU 0SUNw^0 G:"7ŻlWv-.ăŧBuK"g&uy9%'m=LwnӱF1w"r'b]Usy~n1)@vR [^(18t?8dC ]bs=Gҳ"K&+ #͘''t lǭkjkTuPZ?L#r'SzF2Z n ,L|Q1fрrE574;/bbwM{.6"+?-4`eGgpn' !.%ux2R~b>E~P* P?RCtS\]suq+)r'LS4z_ڤ2?ƂN^b)^Z8bb U`up nDZ0]l+jtRJ=tƥ䅘i7*U *UrClrV'pv cMgshT|8Dڌe%y`*O(~ K\vٽW2=(9Iv#rAn)9kwBcGqׇ⥘ )`7%!"c\X0$͕,r^syqUyF&d€ p,cv̡2@,.ݽ 1L0շRat]oJKtGkWµ>|65Ktp ٺpҠ^rC58B~rȊhUǏ,gj9p f p-E?&FmZ'זd$J5ȡnb̪>r=c]M3TOԄTr}Y"D_\]s+)QlpHP=&3-0ބ7u'MX|$.\2ƪu}'-= O~S~5t>.$@N̦P!|wi e s[߷P;uEg 5׫s ΐJPFM6f~s МQl_7Q&[Jm >RS.v1mWs4E WarDt``sߙ:v9!@!)ӭ%\ +'_(vԡ[CN+7zԇ`|q +RYË`rlӐۚ%AcL1 ۚk[t(+`9@/vvi^.M'ySpԝ EWHO9yQ '/"`mtGtag r\Sdg 8-"iL@<s]py9()NVl'rN}fzy$me :46IEɼN+B'_v G &4f951 \=n6VIⳍ[{mV R>ł>VzJdz 1w.rJr6sBs(TH,daɞ Wr-n\8=?{dn35>YcX&ݔ,SMNv7u IA]1{s1`I tmstg B+@%%D=7{Ā6f gE2Ԃٔ`f+.R,v5b'Ec(9qa n F.';zywPvn'T[p>Syc;T1b-@ =o(lĉ4<% IDATv+A^)LQ]C '1ӱXN.VDئxkrEk }pnwZ_03FW3fr.DP _a+ʇZAs If%M>}\)+W VZX9ӝa;g6uAl cHFWs}7D\EnfC;5)w2GWKm$1#nTWW2)`,^]ڄB$HjEKײTŶB܋> Wx?\ ňϷx@a"D̵$tɀDZt f3q—p8RCNLr.( %y #KА IwїP ,?n%,ع ]|13,תXa^\*(LmWxϙ"Qbgf`(C62D,PuLЮUV^fT*n(3PN9剒9͆Ohe*/@{v>lPДU ~:߅u l*TE 7v~a~2{4SC0f%{!.0"RK~.\i "R}V;aV UGuqfbZ2}Yf)~jabqyg*^E:UH;QMŤZ:Fjr /-3%[8v8wן8p)+qR/[<-/oB?3>r,;uI羱Ҵ}r >rn+  S/-CsP DY tG\I?^ Wnnd7kt3j! \Ϣ:D)"̣\~T]Mvz_"~KpgN%"@,̹Xy2s G51Db&@X>.+2ϔ団8̣U+bG#,L6Jj۰޽FP}N\>O؊v!z vY]PmVըaXi, id-VSlu4?Y_|M!u{&.woopeɅzPwo[J d}|7 ]*>{nzɖ"dE>h顈 ]]Xk^kz!.0~͠Z B>p)#y#ai%Lţp=߮f[# xey2c[FoU/ 뒈u Q7?uZBDHSO{WXDo'-)W лwv+鏧w-/š@wel>[LT$tǮ^4/D %S˼[V)\1he2/_6sªYA[|~Ʋ"RtYcskNVV75?.~[?9H)z%XZ 7@X\&叫[R "ƒnܹk Z.PBn9rXIGm JqtKdSضLX z^X/qykdwc18-Yd",sVwQ$e| kh͂ y', ԾnBĊRFnzˁ0%BkOY ߪAJdlLJk ;AicD $ %W}W߷;tN\|]l[Oe\j%JVnGʥ ` }o']stpӤ`̄ cK⟣?W. 7-Ls -τ[V̭xul(GE{]NeRp>4"^[[eXS 9e)kzUf"V`}݌bFuj'ȹ x,ǒ`-m| x>҂^NLYT|=*> %GwT)ߦϑ\}EsA@"uy2i@7[=R ,ݔ5V+7eI%1Q@ D1~ Y/h{އ%&ԒvO3YW Urw}"Oqm屧{*Z-BY/W3=պ%xs" w3ʮաCMiw~om~om~om~om~o)mXb(Jfćx3C+TD !ˑo@4p&pau}LK[Ss!P!nq,٘.qdz,-OI YmXRx.Fτr'S,fqb#~#e#,(wˌA;zcna*S$/u0` ߷x h=13EbE\QsM]以 #-Uwn:sCq ;0% > c]lC.Zt8+p\Jƺ|F-j  E:dm8Bz=dǾGOw1x)K8ƺ 7X\+pq"Ar`$( `{rc:X1`u;6/kb#x(2 [,X~Ťor]{EJc1(F#H6HlF"^ې=~-]11X,lB5CdEvw.𼷾zϑEJQ>D8+b@ql 2˘oU_ ZQ"VLu"ʐN,9DHΡ* \ӘӠu#\ޱ*wb1.PW L$~@ Gc\Oa,wQ/G6ᾆb\zQ^J7;cPv,1lv3("fpͶ["fU޷5JX$Nck'9A< GpHtc9Ăƪ ? ƨ8 SLf0"˲',S~O`[?p@ gv9DK ot pΝ2%۪ə5[ lUIr1j"-q ѳ^:cSi!FN|߲1m&%/ų*!M]cv9D```@fIdKdnyd"|muٝyŶhS`!SVbi\"rey !EX; kW&,Ɉ1Kt"_j+/zWb ZkWØ%d[0d#W]*e0`82"@#{Rh?An,T {dxҧ`]_/_+l lv"d*9[oso)ؕ#=UR4$ǎ [e GǰC44g)'֫/ώڋ:${/%b sBYe?o]]cX>H=f!?k+(6B€MMqb3߱uSff`g睈I+ ǂmgP1YE__; <ΔN#f0)tF^z~9!Ԡi>'\WO/N&`Wu@נcǀ.6L.@_und$L1ćxc<(Ar)\fؕᕿiW sly^z91IP113w˛|>В`$Q~Ny07^"Һ!%t5tec1f#S &fv\p`yރ*2dYc9Z8ιοyN>C YŤ$b2m*f;vyZK" y<⾶C,PLNfcD!Y$Ӆ0g'[lY[8[8 ,eBi+p\EY9} dfXk D|WTL'ӕdӄ9X.Ęv?`eOٓz2;uW9KNn>z\{PdyPy(y&_#]Pۅ1.> @cfu}0 KSoU>38 )0vwoyу( EtڱrLt)&l<9`a DS1M8VY FX-X|>}c\Vʮm0243R>]|f^bur ]wb#<1L0LP&9mM9" (}mi$cčL>LͭOІXc-XQ$Ȝ-ܻ֩XBzD.!g>cqO~`5g(ޅ[+-t:t:X(:qrZJ.P&_r5<(Cӯ9a>ə/ KjxovGxC \Jyb3Dמ-stOd? p`V7Qۓbny 'o1[2<shl1((PV49הeiήC )ѝFƊ>Kirb@J;Vhu|60Oϯlkg!ܚ _=1`S1XpGxc1ťrzי Ӄg_[y1 Νsۨry0y{]LMhA"}K !tA֏2gfAY?evL(Nei'opǁC҂ggd 3؏}lrxײz`gQ-ϰ:zf4KYm607wYm,B pyP2ofGߥ*]WM}?>M/}+Yur߰B_߀tпcC 1%rtnXsyg?Y1 }puոwo-Kw+' ypxlR2Vʻj^7Ӗ9`X8 1&o %%;, (ThJ݀&(GtmL/%ӯT'7Ѿ#JY1-p1::zur6#⸐H3- MS e?&5f%PNn72A=VnXl7L0:΃NqUZ1&c\sk :ƌ v]ypjvXpw\0*+5C2Y?2li?|Sc儱;{0nBj(C%<-Iq? &;x<;/dӃ$cFVGžk ,6.yIӻ3U sYsSI˸32k$~h8; :# 8b`!i3<{z66Tl]"%Ś5 ŋ!rfb#QW;c>;ByDqQye>ps;88b<="YGk-ʲDUU(prʺ %&d {QJ\vGԂQ y< `\0çk_ߏy}7C6y9|Օ' ;m l4dX0C !!S'ϊO +1m;t>!.]b>`lt[װuKuϖ_[\0H Կߴp9%OZfz&0  < /s0pE}zLi|ˋ@XЀ<,(cMf˱W>8|_'OAҽ,g^G bK.m@-t/h>ezwV[|f]'5p]C#Tȡi f8Î|)P&g'L1}p]=TJ PsbD<{|a ^5"aYO>k&DOmg/税ޅ[EKlw/[]K,ҕ%PUx Ôy#z :W8<ԎG5o5I:׋a'u?cVPM9Wh&(}c>v!'ۘ^ALjA "ɂӳS/?&܂^_: w~:8Y"A-|1f#z{UU,qPVx1ѸxҥIjyɀ)Ի@@ƻsԞ0:[D @9ƸrI?fe&_zƸCbL8'kJ٢Eā;lver܏9p.(OnH1r:vHyyKtޥ\pegW%~zUi۱@8NrP*(΄[xCu Вcl>"j,< g` j0v>g&5(cM3#:QM Y=B ="&/Y1o~{ѝ 뗿{):ZxN,KuXWlimEHL GX Y\8ev8dFIã,9RVR.GEL eȈq% -G\W IDATu.W1Cl֟I1~pN[ݘ)~CkMiS+f3Z_5w1dX,6NjuEQlqyV5*q|lYuXʍ0953NwQ,6Me1&&;d**,Z *0ufp—0US㫮‰sV'_zwٖh-ɜ@cM|/f|UL O?m&S>aK'p3U^2FL󮥭jI籨PuN]la)Wap 0$e1<Cd/Cf /#ǡ~Uxx7ORx>fj<|q?n7-$b䉾q1Ò@]ͱ1P|I],|W?b ׹6)6 t/E{x$^Q%%~jYÖqS}.p`B?_fkݬaBgPx9&Ll<h0\P( ܅Y]<0n*]$e'|GM/v}Pw ºN\U*iɳs/t+ߔ>ۊGxsXl9:YȪӭV+Te_XV8dDQܺ\4SҸX|5ZwCqT=,CFLGgJ_С1cbtE ~U6xbP"رrxc dLsOs_ݟdp|qwvpe4lw/y'KtUݐ(F %lA8ßsU4%;yQ1)"{j'^[lAXa/"x %ov[08b-ttؽduUX\ˀ^7䄔@40GG0?ҿg?0Nu=;:)aY)x>/1ǟ_Wxe]cޫnq0K0k| p4.@\eT?k)?ûĘ2,RNhb_S[Ўlf d/峃sy4"!RNrzA p&@r3k+ S,3#{6'Qu:sY%.+Ժܲ%*iI;*Ws8,M,c(.c`B|D8g`\au44s _0Y`P@>pU {~>\SIk<|Fv e\)+|iU7(qV\dq]&czRsRn琈,n&,̸BH:$m/$p@&jwbt>Mo{J#T64x#bQ]4eWYL.=Dczu{va2IyN&?jtMj: ϡ+<[v޲mB䨞εOoåa{ ;&yA[<Y7eIBPsVAMr[F1S- D^@n]Gci-0|O c [={Z^Vb*Ƌ /THap\jeF5~n#>.tEO`1,XC5J^ofBw`۴SO& d`rn8ٜկf/7BKiv)c3z.s(b4Ϋsœ&%f6?l+,\rdJPoбAOUUxxim9޸21S۬`q.H RZ\" !"eܻoq7c㞫 YÌ2Y3cH,/?2@? =R}-c\ 3EmBRQdJlbxVb|ӂ [Wp 4P<9.wki!Trku z |k|V'/0xRQv!d6/*]2SeOQ&Z畻-Q6]b>ʐ0M)ο:Ya\.;n\QDz\5`-^,Z0u&mwdq>Q2cd7B-) /R ૨p T+#zSYG &&?[{.昙;o( #ʐ\vpN*6m%U+'UǡqǞ͔/-,6,I);|k#Y?&J['^*Bʖ*;|+P9,NDq*$uÇتz&#L-cFMdj&MyuW\{&ݸ\dA =IV㦶xau IP1ۨ92$$Ĭ-qKb9Ǽ/vЋ۰WJmˋhh\1^1yӁM\xJHDbJY X[ڸukfJ?P5ZX9m-]'+E̥11;,ʑ.߮ =;4zYoG2`eC~bz xs2QV /dDfREN0#~̲42S(0fnSON$yrYҳܥX]L&Co{; Zq|ϲ.R1lcX.~u#1Pp>i&xLԪvs04 8EMTJNł,0y6]|S"1l-\)y`_.h->kOu1ow);!KYT+f"Cr1K߂řM>XFɽ Lu+۝n>e&+w!$hT)Ez SSLbeU\ edlO.pnYR l1ڮP/SibrwC6p3CxoDL#s ?puXt!CC64. ΄ eO5h"aRi9%Ÿ59Ba @4|))V$}&ghP* ;X!&K)rE"$dK/Ҵx߭FFI k-2l5B Mc)z \ǐs""rPRӧ&ބ;KB!ݕ-0~5>RWzS&w XkGXp2e*qYsJ%6C/.K 5k@ *l:BIrk7iBYzUpՊ(Z?b$;ƀnx/Ir?e)kFFCp~sE?btj 9CD[9 8;%. ξH|y-rt N74wC\ѐcڝFU2s༭8;s#7uwr41NNHraқqU>xiN4Ţ eľKʿ]!gµ8f52 ORsf܆`IGM m7?t`f$8| F,W_ʛw\:Q-&̘i&G.9!p ̊rX BeWX$"7 {A$%ػb b\28Wgr TSXCRjC n.3n(`bZ+pexpAo9-%3^/YZqAs]ںM+&\Qp\Q xqѻp;-e暙Oxwn̾᭝dByspqWhL_5kK[Tezb2pBm*_0 8 ϲ8ނ;pF59~dlqbIQ3cP,0; o Ne#b2x !޽I-&d ŗt/m.;ztBy}xw1f+hGB7 8; 1{(6Đ 8d'Ҏ#0!ǘ|~Lpx+Qj?xŒwpM-+dpm$"fS2t۵V#34$d%ITc,^X1#,`jޝ6Ǯ݇nd~d>=^!\5~fX 5˹& 'Hr x䒀wF0cD+s)=B17`tZ:O;!@F f,p&,;E3Ự&H+^#Q(Z=)û09"fI湈U . % C荁0$""ru e/'`gnf#9-l@ b#4ULp`r/wd ]`#)O|mC4OA _BG fNQhG3!M @xMp%ҷȸ& #Cib /.8u\W{IEȅo7%Bi -QY>& dLXr25T(ǰ,?DC|h4)iS@ ~dgqurl'2 R% B8?$d,Ȅb&RGtfS0IK $dWɮ B)D2S[3&M2q,(Z8!f.\8fӨ6`A[>DFlp8;pK;wV2 lCfh2ne"JU A#uh!nl% >DLJymG+ 90ӦѦIUMX{u2Աv]CM#Z3a{mf_#5ǘuzkk9  so ,#lQ0Kj8%5W\ec@$ IiI {+&;>fm\l~:6hp\WUG軮mˍ=vRw)6$X0&6JS.uUl[ 1Cd $ZlV$DQ2+b MRDI t^˙}GD(I1P>Egqg[ Zn'N:"\Y~CjM c"eŋcR%bcd81Y23ݸNc*hbY\E ` W9H/ bJomV49Vm1uSlf'AMr8wD[/UZ(YJ%voKye! |b*ft3z!럳ئ,'@UuҖO-N` ̹*R/' 8۩o$.h8hY|XT ˼@QK4XI8(EP&- u t ĐjɀvԎ/w8h6 RW&6>焈{y9dMwVq,KGu+.XOkMMbo.^Nˉ`(;oDUrtgE̓d BgH@ 8%*M/J#s9%6VOJll3!&>`EKX,7qyl scZ>qKh*1v:2P/)&lu]άV\x!gHP#~⌡x y&]"cݤyIV38C|tHǢw,HMmx4Ռi\2wͱ:{=4fɘФjqHXa|orߢoe^Дb$&V{7&zVuH4WLf m]\*X8J]cdqZ:%B iۂUmǡ6`ʦFf u*0V 3n+{cƻ"jx2X?BF[Vi$>v>Tmddw˿^tik#ΐzyH}NP.S;U]ɜuUp ^cqzn:ƌޛL]gb߹VnM"HX 0/^c{< ÆÀy`,~1`60 =/^DQSH6VDĽ!fyȿ3Dlԭ=87MY,H=(6үWAM1]0V=feƏ`u4-SSBiGA)xLm?wT̖,'ݡPXy$;Q2tVLn?9Wsbo@,RM-pl:)z!C熚SCZHXWn j<pHgtJq&48(ecʭ)r0*GI MGl) IDATEozX $(Ѓd(v NJ6zK*TMӱ0n!q eZ:S2--լj"9p ~mۘWxe`̡ #%*M5bS'{_IT#foJ(brB؆RPkgd]z#WHe +n/wNğd BQ3+ W ~dhi/eX2-kl_Լwe ׍ꪦ[V`P0}!]H }^/b )Kf/ ޴/X*2 UB@nEFx;l5Tmަ wꀆū:iRT#j>ζ( ajHU٦Kֺ&b D(dˁB-TЉ ^C!X& 9q~{R壭M}X0c.}?EDgAzIxEz x kL˄8Rܭޓp-s%>kRelg ]^atT/lJ5Hs8f]XH]Eb $˂S;c q 37'}C|CV߁9kR`-u2psx֜f*f e ^D+t4}K-KF1i\Efty,JX^޶toAZSyG) 3nSlnܙ1\$K~(+JXu{`טs\-Om&jG_rP^j{l]?$E}.-x&g.t<":CֆԟCK ܮe!3i8޲d%،1\ߊ n67-$5ګ͢yD* e_" ,NP%u]gY}>H;ŝ ;j*J+dvŋ -2 c1eDJP?7h<{MgtD@f,Ё3b;CwX"P 5}j.~ -N؀nHG];ܳ pˏ|UU]kFM("r<kTF.&DAgsv72 AP^޳ZouHA& :ɻdyX`o[ <|}=6S#U\;ܥ`HfPٟ #o4,^1.:l՞U{={p?2XZ`5@TوIjof~ioخ淸ס)YTŢZ}k-,A$1l[gE 5 C1 V5>i X]m>g\)[[ks^V@,M6[ػDAQ3 e-km"je1 ia ?O rM9c*2M[u3|&ZG1.bS!BɄg-*2kav&^J}Fu3@N2VD$3fXpՃxKH!!-*t9[Zl Pu$$D\mW9}ʍ@uV=s20b;(ح!+=q;j05 |?VﲮVۋ j3xh/f> %@6 ~BaRwA] ;Bb~^;e{r9ֱFwPrjf niJᙟu{ Jw.[c8A1PLDl2Ƭ7(wVeids.ur8/S/8Oh!vP>W7 bl 3ANa.[5Ǧ,4&24A2ސ6OGdW?[V+Bӆ-\ZTh RF~H  u2D.'*~3LwtZUC' &_F15q^Z?Mvdd߸+f;"\ykx}v>RK#>.f mَ=8׌ 5sN/VN`qܚ^Y}^_9_>| u?l7(wg㺳DRDW1դek97)b*_JSfvMѫ&gMj3cfēF$Z VYRxVٻZՆd)+@)fbJL0ͺM#C P)<y(MC$"̽ )0b?/"ߝ8,mf`n ~ߔXEYy3]6LfjEq,S3MDDSC,WD|9Z@7Qg`-wZT,s3o|{3aod竭qpU+{vC]R Le׼kr?M9~ E#7m5a|m`LH|a%vaw`ҹ7ϧ hIvqaPƾhuu#aL4zBç)m_yyJENDDXbۆ.Dc)< ,w`]٩/F7v飒zm+mmoj)qa+\Ϣls;"8۩ QMr  ZInTA{ 9k4br.y]F7!˲-𥚿0fsAufy?>M}3Ypf a!Mswx7qeda+JNZ%[Yu6߿Ŕʫ?o ʝ0;}0p#ЮzC>e&]v@cjrx--W?JGlF,*|=b<P݆+n2aIͼtjCZikT4I"LCDock@ͤcFo)65Z`r`]l(+eL摪Ls0("?v33 a{[=uUBUWWJY-4 Ro1(LH,H oG igw[ !CCm /rb3ԅIIԽ-7m_5+F c+01>mN^ r~P+a5JQO_?n/Fa1UkDJusN eb^T9-^lӚn^Pn"mg4T(~ڞiRӴW0,\{l%nVے,Pk7[P9 ~PQ >tz޷ kQ,!m8Lx`Dꑚ@7Q*?BBψwʟShўs SD8"d$ G| ?>.D@h3gb 0gK|M2H&36w\(\n!+z)R*)| cչ%h]"X(e.V4S5R(iBl4ӑ&!38)/q^pciC݇2^^(p͙D]?n:$6&AŌK|n>9f4<+*0^O[Pct1ɂZ+^S)cl'XL3 ΅&s^.h4AY>&ATӮA׷}C[`\p:0lT)) O0ُgz!0)Z~  | 9ƱWj{HhJVDL`c"׌Xo5@gRy4"C2 T3cŁJ\LlɄ{L8sϮ1HO&;Ux P2_H p *N<"9P8d`A⎢]L]2`}g^/OuR'!8fƟ߰lu 4*97'!,K瞺,(c~cD$T ϮHAU:dCq+f̸o&rMp P]4W( f_ ,r|FɄH|wwKfY7l](_[oNTխ\ZN$X]-|>nj&k,yƈG R _E#M0#۶P6-U4NzoFeȇKa mD7-=u35V9.PCŕ;$2G}͏`@9e 4yf,թ]gGןcE hrLYLaozhXZz2=D&WU v)<QbI93h.sj5 !!5S cnp["cr)x]:]?k^5edASg#-ۅ8d%Q%V0:Br~`t`+ Cag|ԭ_Wb3\`-b4Y7y h6 vc9sˁ'3^!wPplW.*"oEES37j.oh ~njrNL*hK}7ll;qX}iV۠˘-[LB_I^@2PC-@:ՇrR>iL vca6 fT. ۠:8 Ib` 8)ڎewYgi>XcRjFT :w-GwBH8:SМ pl5~4;6:h$Ɏp17q[2-3O\o%NNٔqZ/xa%ĀxK6i&L++;E65:gˠ@Q\#פ3XAEIy ͨ80eE)g= 3X-@z@'BR˲%{pjUū¯e:,dNBt0%54& \w!r`UJg^x.< ^r:c7%26gbwiJAE1kJD4&'$~.S>x 4[Ra'=vEe7HVs.@0qo5~ˬM[0-/t8LՉ0)SVgVJ01q/5w_2\gv:uʆ2/.;De2WL8,6أL)?|LjW`e5&:6~uج>?76#MQd}"MM"f_7%^X.֖O&:\~.P; vR|Zx+l _W-9ssѲ\S*/x7j|Pn65S_"&'O%c`ctpڐ+5e|)P^`  ?i׹̘($B2K>,9|Ij{{l' ߱ɲI Pt]֫7֠ S6rҋ0BckSׁt?|PחX/ 8[0<ƖP/K)˦DDH*TU;Rug0a&4jk1FÀ"#p,G)%EMP6٤,fܲY~5.DSTP LG ONY?l Jʚ;01h_+,EXFw6z,H=/͙M2}LV07'O8Ej\ȩkmC<*51 0X̫qbAȉA}`$ru'Э*zpgiV"h)2E&BH(2 %>LQ17c -8\m{e`R38}hgt|(ĀCFq Ir-4ݫ߰5Nd+-Q ow%Vu[u4%m5nQF&ReR1ٔ a#Dd#|6̹xf)yυba/fZr O۶gv25rYLGlwt0"}w=,w^H0V & IDATnkt$ॄX ”0/X} I4 T6:xY$Ƌ-=c}MAwPd8^ߚ~, 3-$)pFv(SjXqFS>!K{Mp}=Pw>#eMoIǕ?Ĥ<1BV+`Dz&{[A7"P^0sH~>䔌!8֐[\/\sb2MV  X+b zlɨY/@MMX=dxE9_O -g"(\>l pa0݃ ;豶V8NRB"lN y?j ̬WKs^l>9Qëj<^-> ^̗͛X~l1r~TX@cΥ*[tvyV/ -2KS#-l.?|N# #/]Y(\ʼ e{S"7 ΁ec꯺KVks̤U^4fR;B$ LCCbq)_l۰^; R*6ploDx¯[ \ \ E %? bM'IOy\\& r:Rcla\/ZQR^dj2. tm\ t$) ća;C% AutGP|ѩ[fZrqc2ToV2H uл&sl&XOJ Ϲslʖ}F #aS>L5dϑg. z!LN%Ė" 3<c,MYqAP`1,(@=o H6Ẻd9O@p;Ŧ~35ͥE@2Aw Km)ZDhqęMT6U b}!A;[ú\q.O@jER>J-}ehֶv=f6mM{" ';9Me³f5N<\y. -C%sܟDwR9%l(l(|KI5=1l*ScREUPqpV9Amh993/v՚0e>eh>]*}rO-@脙3VM#v.|c Q^(vǁ0"$q]` HЁj٪*EHyqPR;(f˦0UɤY~l|lg j u 4O2%luBWJt)l](nŔGx!AԐY'c{8j`ᙧVT=sWWQC&X[jjzR' UPV۴g3ʥHԖWk h#>{HK2CE + 6)$Agu#?C~(}Ьa"="'{̧xL[P|%6-{MAm1 j 43}SLEYm5rR5F`hmmz4U ֖ks`#K83 7-9 ht9HwbᙕKt.| 0jbșC "p}M;&\E sӅ#Y?C %XN,Id- 8zVR6 òiA(;r$,BS0븥bEl` Nvs8iv:Rq8 PBǮU>LU3ŀC'IrQHRaP\Ez.tCb3ڈn/&e 6nj#g:p`VX#P"l@m8 `Cى>*{ԀRI˲n1S.x]!{Ȑ ]繌-m @gptgVT8'v{㤘=p.ynp|.N+ Rq^ȤLA g8V\+!fx.z6>qYNX64}6c#c!Y) Bre:ͭ>4!ss&g*w/d)Y3B}sD! !3&P!r䌝`8Hgi?ڥ|csl;BP3@c.x :B_c7vΜ*~c屨 $ .dGl6\DB71S)ԿDdږ ;)+\>$;@NA{҃5CϥVQss$n\?Frj/$ u* 66Žbeh@#S)KEh,kcXh e.9oMKcaNjzsrpu ׋Mr3l*tB0%N} r~_l?>X;X8h\ۜ%r.bjTr70?VRL͠YOqۭL͔Cx 6Pmϴ2W/NicT5°xaAS7%ǂ6r'Lc:+fL-rlr>29k]ރ(U NYfK]2qͼЃ Uʖ)4& 4@M@8zX96,3eapւqM2wT/e5~\@82^ ',}?#3WH 3-4mRݫGMCĥT- I]//9q%@},rY`SJe:x# MXmlp!f- <=fk*e:[RiܳH1d02If,m D"{HƔ*mNC[bguYx|92D-@HO֍ŀ]nu-L9g}g0b ts*ˏӢ}ZD^Se)=BxlᏝ"lL1.VC54b<9lqRNJ%[`9Evr|P<0kϲ;?`'xPbj.R)y{־e]Eݧ+e9i+w ڿr "p|ERkqq]#"xtırl9nMNM%A`D`;3I`A-]jٸ}l͈g8Z0}@#IB|F!^;P=o4w!ax>L[)9ؔ8\ŒtfXVm 0,}b'Ax/|u:rP&Y3lr:g 6 FsfldkiBooj N+O[)tO &^]/7=. `k/ ӥy}O(B꜊<'Ņ@p(V&ktW{"cSp`T#hdI/Jtd =% f0Dž,=&oLg=Uv`"#eojn]rHsFSl*8<b.fWg5ogtGqx _Me~#!Rٲ.`=7kA4'!ƙw>iMkRwt`J)ܸx7? Δ̅p.HQ]^`tMu_1j2dn q._eSKt;9;i1B%n,3G]`\8-*!`lT !擭IST{; &}n_Z[&|Ig*]DH#,-sTN :r!YD[:Lj`RD>KN$Qk,сұё`C8'&~I0]M5\cc;dp~Sa*fd 4<9B ϟ᣽ŊE^%Sd`D 9FnKE9gBA4u&N;Ŧͽk[#w \~).eәsOܩmkt[A@'zRAQf>=y (CM=HQ!ۙ%7ę.+9jA2Rw߿\*R|Ldύ<63d򹋀jIxÎ4=*6jH?L?x>Xg"ČBg"$&L)ꄞ=A>k¼=A7hv%e\VwT ?R[X %v0IT9AVTCLԨ]#9KqpWͲ۱B"y& ;WORgg;C35}f4?GؤbE=L|n)NSleBguDΰJ 3}P2ϴr~Qˀ0@9e֙m6T`P`i.OϴTe 6ql:S&#lOP"3t0<\{__HCpMf)^,8™WI*1<oZf TfLi 뇲eYtr,JU6 =< 6oL#a9*+MH ϝ4aK#st b`:׆~J~yANEΒ#k /'褯(cJ+ŠM$d^k覲)t{{y|n NXZX3Ggm.!؀`m~om~om~om~oml.Pf$gJ<C?x;4?.b˚~ ص C, b3Yʁ ɉw褱g=3b8̐iH1u^ q.{l)ja]H09nߞ{dQJ OBVF\ {\E@h `m?$ r}E>1#$hB E~3ޥMɡ/ˆ)v#l=o{ kxO'b z44> c/#~¡8cRRIR Ę1I f<1lkƄ>3T@83E}Pाo 4)K g`C|لIx9wȇ#̩e1P' ]>rh-|}\B u=j  /F<oB#`*U =f<$Sp0?'1B']2PRY-avM1r>hnQJ+X, #^:"sű997V 3#S) ki2K9S!b  )oZ*`XjHhMx?n ^Ǧ!@s>K),`ƹK"Qns@So,&wUL{Ƞ|21A`ƦY|Ym!32drf4T9Š1w0 /|Pkߧ0@:z<|e.*I!gL0e̟OLD$!~%Xsx໥c>D P^/B:y:ID*8ʊbʖgDGDXf^<_]Kf 6zVkk!ekI"]R`(c]Oxwż'$}(Y 4!FMY1yIB_auqCX30sl3D ؀bH{D&H־A޶=6 l5-?>aȴ|X|h!X> 7f`F2uߧ8i};3UUP`MY{@;,xt}eFCL=aYǘ}flyI%R!\f ѵOミgU_.bS%A06 ehM*cP80V%ZG?hNQ%X:EL͐:J 5&|g(^f(cR cHegϲ|[_cSS_X9 \H 4v b#!k?ע}}H@M* .Ɠ_m]}Z;d`!3wn%8/ KY~ݬ.^c;}:f)> > V!1)K=**HT\`rOɿ gfɜ IDATOW Uކ#dR@L)~L)eݺ`, FVCj}k*`~ L~Eq ޮ$}Yb 11nC~cӃg_Z^6~R//< }~lJp!eY,ˠZ_X|vnvƘ{|p7IS^|M~ 4E0|ʾl|T7d Ȑl>f%l 0dSϿ,/6eXs%N>g*Rzk1ޔ/a@C{j4Ih] /`)~OUU׹K`z5Z̞GW RYSWT/P8$8ߔ "3vCXnBs@MT~(R1wzu~V$UbP"U 4@II)1" *f+όKY>W~Ջsw`.R+y7:,b2@(>ݖ1K S H*i4&TwS/(ʈ.rPssHiOw_6Pg>~}r_GlM%ӻOqJŘ冈*҇ 1\$YkzI'oh+fu.W ezҊwƻLi0=3,L25~sQg` -ɖL|_KLJd1g)dT>^_;&d?"l|l=f(Ef YKKvgs1SSebroѿCz6m&L&k8 :6Ȳ,J_ECbcc@'(?7f~R>>SMߛu2Un{]z8 Dס61HQ4y\o*@π-Br1ɱ\|N!Ec2Bl2fǤ>x$&BRGk}q@VJ -C6 i'\j@ \LQF~hr홿>挭V(OoCd, ǘNkINx7n"e^!PO}'}?>Pp~xfJMg6RX`{ [y9"Z)lT1{_'DDlz9Gyr . r+Cr3 M&Eܾ•aBZL-0!7sZMyɌ XPԮV@.ENֽ_\-0T#;jzTfkY@Ƙ,5L 8.(oH]$+}LIM^_{館<̰Fyq괓LJpy-FVrK.cYu˸eL(3Ù@US>7+R%s0 8p,/dc]NMK'r7n6rߘz sDf;d#P3TcNng{^gFWcU'ܚd.Qށ>jt: 83/F8slmøb 32^K[>`~or` 7@`˰a'`wJ@N>+EXf5 թx_K zz\7bXmz??L^Ϟy䗉3̖o S(OB ֫^йLl Hp PZYce<b1M S3s>wU A/Cd)1aaqdANX|MC.闳cmN SwFD RR+I=pGOܘ޸K u9Zн(/Llle^N&O8)J_UU˵UcQ ΒiA$c 0ѽϳ g2,[~a, }‹LPl2% i{SB{Km]"]4:klgoN?ul1/3-qttE/ΙkTUS׸5~Rrmq@ʖ'Wp^. ="hٴ`*^ /Ae| [}/泫k{A۶J(Q0cCFk`eoLGE2UB3DEfէ dpnL3f+g8rΗ;<<Ԕ9thu],Kq P|4-Pl#[%m&Ꚗ1KK2wDo=3GIaJ2PGG`}*t6>Yk4:{l7$̅LT?+O#k3Ѩgy)-혮( LSh :ij:ΙR`p eYb >WR㦶MjOk>v@^ n8ay9'`hJU~7fb_zJޫ)=LjڇxCbu!32fς_y]2 :f > .J_60T=@e+'eR1v,M6`*"SC5fdE (Ҵt,+WW53>?Nri( :4feԧM!\ 6%G> 3LxJÞ3K.9a BT3ϗe>bPL- J0e7/T^/g?Z2Чws%K_Dq ˀPZ e/T3YD_ xĂ ``- `aG^J䱤\f#V]Ax2(bC3 %PߘزY}~,}pdc*Jjh-$Hfg:![_sj4O,1Z9`K릀F#fb鮝?*qS,ġ6U L˯|@0Jf 1I_2,5)_kaFFƈ)#:+\ŒcfuC1Î&Lgf 4F4~8S-[οL*jz?0hn!8\õ`ZĕSfGMϼKDoDv>[9 B.lBᎎ:9$˙k O:L4cj4x5 ?xV_$D69%HkK-0~@M0N`ENԚR 9p~D{*L^j'ultL~nZaT:Xu|>+F3+B%{զNjyxxtL'K 7_YָjQV >"} "Nn.1E x׈: έ0bBFj@fBJP"ǰz:]j4yV$|Tnp~,\ao!rVcnyv<,;1߸2𳴱Dփ^\lN&'.xJ5·qA4)[|F;T >=gKj məR܆0tnBN.f ϧWa;-}ܡj1:?x S\a54bf ]2?v8'H䜠i-0ePPq&֥̺qn2Q-0ķrښwi7=:Rc}(Oxcf\% 䁎DZ/ pT- S帱5WSr0F'T}!1ܨď !߿U>:_l]8iL993Gq-';kZָѦ&$aGc07jbrCXb]jĨqTSCHD#Rx ̎ffBM0|>`(=(]^̠b<`~=Ao<(pռa;Jy)L:p~i/5>B -q6[d6lMV,!e9cI'l&Eu;&}Qo9#lzZvk).{x}-Zυdg^x>9{nKJl{{ʵCh 70"pp.}КM r!f@6MUWsdfч̸ɈȼoUb>g&E\W'4~26 Nk|v] e^rD]t /_YdsS1Ǥ)U< P xOp>0LFcAx N.8!79u2e4.s}Y0j+$N8^@hhvՖG=7xhpl';fu]fzޘ2CW11_pi4cmlsϾp̜ |oc9o5|o|OmI!%lȅGz0vvyqV=ړ R]'wp^ %=Q% m.d-W Bj%766ixysYEu;W_4%໨;x^?Aߴ3DUuC>WYv~d¤̵L(UG1L'.#cj,3;؍]}@/6MQ}Sï`_bjӍdk|vx'3?/aTՔ?3sjs,3k,WhwAx<S8mI1ັ)6f`ٙ_z v  Vޥr5/w {A{ {-9'|0v[jxʗ5fҦʈƀ~2`e_6ldI vw`gG39?3;B㍵85d4ʑ5!|٧@11Đ~uі؝]Sˉ=O v<\y1w0^w ,KLT.A:`N5MRrh3<^ 1Pp7 |4_\bvx+y# E45G2,Rx'fdHL:QWw6'~75Zt;INsc̴3"W:8>9?*U̚Dr r'S ;Q,w]5|lRYSoeFej)`f*r vT}ƜLȇ)gͱv {flD*Njae{#L#5kͺ /4?2LU.=%lsV/ '7J^})`5RCN*929"c#@aqB Db3-O&3 R7M\Ge6S o ]x*\TV=Z㈅콍o=d"F;?nWF )GΗ=P Qc"L4*D9Mf9\ 3rxbv\rJ`p) bѺ6Y*CZSM23|]3Ug; :p!V9Xo\FAE1zϔ2=s Szg8ד ,n]n'аl,>%: 7j'] [ڹ//O=&銗^v Czx%0 efmR>c[TYFo^̍Ok m)W]\5E,}pY.*vVL~ϛ|Z%ygMm 2p,82qGDx ȼOVeaۜ1Oe dk>'`A^2cX|,N^û`.%f6o\yۮU -M[1%]$g` dCLDeHI`s1bf2Mr(S`>R 7QjU䛋$ƜqDWgL{=ҋ.ŀz7Wkp4 S  d9x+q Dq \1e4xy,ٯ^iXDCss,/p(15Gm̢LTΙc[ZǪ07 ]'>}Dii9Kk&s+nfXyx|4ƩF1:69j1  hʧK}ň1Mwɜ4;دmO! 杘Zt). lG̸<̠5*=iѮ5l0U!iϹ3c|{[o|as#UϸJ7oM;b>`w~gf"g_hlzs?bk'l^]Ƥ{G#f&XOw3RAHW c̛۟JM53d1*Ʃo;'6Na154%ʌS]b#~XlÒ6,p ש܁K+v@}){\BM~ 7ɠ@T7NAH<ͺb3X]OA c.j}l0GW'#!خժo rӱ3-fLF,6GX1)Y.܎_b9aaS" r#f2p uwTo;"-kd0GCӁ%؅ń5.̈́yBx12Wy۶;Bh9[rW;ngLm54@ǞQ }]fƽDl:wb]Ж/mfZV!UM[0p 3,hxNx:`pLk0|<#Sx0ؔᖽٔz؜;1%9cꀺp qA~ v 4@`kM=g(f+u H܏O7SUSK<3uƴe>|JAU\dƴ֝9(A8QLG2JI%=r2'1GLT  6TNC 9S9~+(0n H6`6@5aGx#s*8rfX` +c '={a黉Ϝmϧom5 3!A*V.F<+@8F:=L.e-fb'ۺȰ1YcS7#jO:`~j;mX`w(Ĉ Wݿ{ LmkPʧ .M/pmaĉc]=qt CZ:Ǭܷ.4b{r݂x3:/̈]|69r9VƉ_v2%&jbŴ̯\#2ǽ O]31 ;U+>)~YR̈́vU ,3d[sǹY@ vmv |t­#`Mwhـ&t&/:"m"'4dŕ1ҝs5Ś* *ʛm}:v`sjhA\ћa,҂=+%x:gƶSB9A^)&lO94|qġ]<1"Ț=)Fv=L0_!Tmiy_cjg5qA )8͢R dd,q* K,h(ouE ~ rMR,p~bOtQ3_q1ͼ|F?8w S:s*-'0#g s RFDƖ}TŨYX̶ͥ'3et"n0Yfj3lj|-nfoӪr'h[F霚dz}^[zOU{ܙEowaEvqDHI,'"'? 54·akz $ cS|DDߋ)6'mwM5c"TKj_h,"KƒS}Vѷp>26hPS3PGWPE‰Љ캗v({ˍ!ٔ‡) ӿ02"l)U3_qxX$-7'Dv h fUq DhseDZUw+҇et4];VXq="5;m}=JcXPSحԹLA,YPY܌06?-MFL5Հ'VdC1&O]lFTRu*9Ov9t >v^8H5Sfӆv͌_+#eԮ 0d`~WNӭ8wC0 3ˏ1` t[ry)[(ߏ&[/ 9L mfpKP̌e!؜ƌCLKjĤ˜Qp&"uAX!+0~5 ֤;|MKye%zkec3}|uXv,'U&Xz[c.YJ.hHEuvݏ29_Wg۩> +U?Bñ_@ 6bMMҖ==Y2'Нy1rFaPqũ&wB(T`<\4BT13$_^Hx.v ;뛡53›Zlcy$tiJJajp;V0E`{)&K, ^7p;%jڜձҧ\ B;Tbvw ;q~kn H@ @sgPuِO(_蕤.W uq;Afo]JF1`L1eJ>{Te=:~{k*]m.Sf?2&zH,wXLt풵Y"UWN:gb|r:$ߥze*R-vn)c:e2z ڠF+|f\&>5L>3:k"貉ڊy}9⃜ }axNۘ }&֣E|~ra4:+c fW&gcb>> (A@4&$0` ,w &eeSbWrcV6M7 cRc$ Y~|ҙ0Bb?r,53K|)R !$@.11a3\G=zgnB E bt?De>㮏}W̸ #7'cS=umoP/GPGҝ3-owȬ A I~I Xw!xwW)USMK|06h78^{/f.(nc@<+8_p:eUCA[ Nf@ɘ3e#kĸNo[_yo"º13S]hv^6|LtrU;>@La0oX8e%1sd6[8bvЃ̖%Z a8|)?ӓVUf/;OތC[qعzz$$4uN"AOĉcyTwFu>g /:u-mE/ϣ@Y۝/^,)d+jYc]AdL9 W\;ܼoxZХB#9_tg`16ۍx7=."_Lk3w,<\T"X w6lӘTQN99SSRPsx륐N]<<$%Gpr6{ZKt Ro[}XՔL) y$s?^N<}OKa G6rrjwDVmA"(#Hz<(M\ T;~/I8:szX\*q_)s.Sͽ]RƦ2ԔVg 2ƃ$m&70`ڄJwRlgwߪ" , bjHi0wL\H*=s*c"6qrK+T },Po(01ȼM]+Mf5C -_z#>!h?Q&Kު{d%|sۯwzIk!Fu{4M59n˾r/ߣ[|m{&dO);zIsdlp2#!ynOȺtaPwcd{jXuBNdS6_nrܴfNON+e[ow_p^2a%D_Fq|Bj _md;6\_q^IT_ʀjl@#gIx'hG;/'1gT]\Mu6m)"I2^ӬwAx6,fKW=)E1y_2QbNfoُ{i=~k\$~'bN29އߘ;w4V# eYS"hnLn l wzqR.y昿sxeZ 巷1ߠ_> l76(w7U̴/"ɪ-Wٻ" }Q=JkR: 2X{'dTݗF$uMn h0~MF~Rx(U,2+HErٙ{R{`Ʒ͡GB3pίJ :%0f.KL [<b@ahtάDBa8 _Z\^pMu&X$*D[]Dfo?[v ނsFot)"Z=6rljg6WsM_DMf6~Wx#Hw%6HfBDiDU@' ;RFL@^.۫9sf;ٗ04?|&+U1qz^ `|kCDH32xSxہveT[:|fK/ U ]WnX{Bkܲ]dS/:fM]sD,3.T-97ز=EUV1+].Dc H89hY@-@p`eP9>vxp2ǰ=*1yQnz[S3dw?_;fe]Uӵ_R!U36`LƯK`= dC v98$b\ Pn{1&@^Yہq*-X͌0ܖ <(8sS S T5- wYɘ BBCGs~s.L͕`.߭ŕR_{ejHfMX.vchV=`'Fp]4"irL/ ̙ Slw Hn/< px0X]BOs0S.)pICfQFQ_./nd+,ۙ[`a~KTQ&|5۱P40+6Ƕh~X;ANxp\{^$K ]b3)"/F%7S006}*Ŧoۘf0"5 *fYo^*1M7CܬOP,^ij řtx*ŸhIBK)|B`fvpDrtp*/ IDATzADnE63s-b\bAC2x ]9bR݅bC 0S,J̣=C_GŔ& *vb:`-`8iVV"J{ēKc?3Bé@(ɿEDŽ!͌]}dWn[ΆVp}z>zaLTށM]? Q͂7y3؀]]@i_CdO=f!:fOʱx*0J0\=G?Mq%|JS3gBcaLb)0m/*LyL=#2UBP;{7V8p3dS2P4>(_<H% (r  }Ё3|RnNS1agpzSdJ0SXy0{ ^N.ohJxV̮9uŌtbfpf=mZڹ" vΌ Q p /S e}ٱ⯁9~fńHw]3l]V3~VarZTIu>Z(LmKV!XCzOx@>m,Ch c 'aEl 2 "#2߆Bƴ4 &8a4+-7()!EvCǧl@v}a&DZ)s3W"P+tSQ< ۥh"C]x*r Ԧ`XaT`>5fǭgZhcE z. 8NQ\7`A\&n,HuakSJ0ar $15M LCG`]3ɁXUp||Ye j(cu1A%"x-nuu$ .kA"VᕓL{QˎSRCwE%8{3P1#eʑ-cPWg_UU@Eы91?}"?_ijD!`f9~O->*6=a\Nb${NdbN+hR}t7dK.}dgw||ejW>0 yT/wA:{Dv\yiej &b~D[r뀇HxA-l]ӫN'eױ,.띟9"͏Zʼ#f!L4b:Ѕr{/@1(<{5N6ZԽq" &8<`WB2)A4 ~]- Z_5I}@@Bw# xsb0#"2ې^WC ]?,&:h9R\5=8p 'tHZd*:G(śtH1,ZR>+g_k/C(r#\WoZdV%4mn-^( eCpe}~ciQ%{/B($Rsr`rTu.L("mpW'JkIoL- ]0^a=)T؉џ13Pp80A@(Ll ?t+W+LTc,NwC| ^bWc"D@lhW |NH,+LLM)f,ꄙZ* Eȁ  oly"Ș=wQx^8ߔ7x76ЩwfHyd7Cђ^R3O5ʭ`9ށk=AA͌٭ ( lJc&vw=o!( w2PMMHI)Wk :A!%LK8eSbc1VJQ`R+7jEE9oͭ[V3=ysg` P{9^E<#p,hd`q|65̈ugR}g"78MRڂՐ]6oJO|囪JsxB޹.`_TeP_Z e& }JxLQA}]bAd =.Nhm8PXI 0^c_snJQ%}Ja/JTi¤.x^?lV26ktAD`X]UeeH^!~+T_ IJVR!}xڼCJP"| 3Yafx~!ܬ`dL>cKu{]ܼ`\X# aŌկ'|;i{&kW䓸{o}k[gm083|Ĕ́YW{ BNi%T΋] |&HwTP2-scJgX)x!nmSӘ=׫5W2t%k 01o׶1Pʿ[oǯ%Wm85wZD'T"o&/yƊnq+bEU{l4+cJwʿ$˰ح_:sKd<.0ٙb!L:!B:E SF ;slwݦpvLM=n[ '7,/i:\abV W ^O_1ZXkQl3)ĊwX8"Unu  "2g'B1֒=.{q3fy SfQH6% {ܬb]"B?% ApY Tu?xLbw3~gI [Wl@*w^ZdXë𦀿4pC,(^_ `/U/;5N^91,ga67]4¸)Њ/gbjetA _72{D̒Mgc -{)T+nKa6PBt"T?({nVkW  M b)D}. s=.7m)K}>WM3 xDžx,tW͗jB25urCx<h彥XHA):n}]vՂj *a m6LZԚ%ssR:%5ĩ3cfub,e]vկV"TM  _\`2]_"P x1u2\{ ϓm H'\3{eLZsM̌1vv )a2SnRzSA86=u=u_ p:e!S8P&NQy2VN]^ W(=rC&b㥟gPbr5Si՗͝zu &91TtgIa%<96:T6fRN)5Ⱦͮ5)Ƒn4JY P"#+2 $ Gvz?KS¯Ԍ@;S, eZz^L2Kh=ubwZx12gvƞjSj ;M㶻]N 6TJX%-rDa8A適1 5LF)wKB?,#we_7)K ̬M_b/١#&r̔rMUn#")n/WIPR vm^ۤ0AC*t0caj /9ЊN# ?ND }0?}:SCZK 4;jOIY/`r`պ,jy&gj.o0BУS8C.fխa=~sFIa~C}K5Т sBh)S9J s#*hTT7l$z;Z,Z eifskfGĦlL\1stLL͔UTLռfa ~޽ ZqPS"P.Cs" )X2^n`;eb1FV.@V*YI 匚EjWq\/\-Oٹ5R9fvhfLQ7sCu-x5xد1la)9avB#}r, >H!nJ`D`]œ( gie #>$ԭXbY43;4 kZ>A 7v<KŒ9Zx"0~ց @Z ea^JpK>hSS)6l"<)xky4LBVN)q]X.|8a\PyXl~ÃȁdN@t>W92k@<S`/0/Yjq~ju~ >hUssvʦRf@36u)3&.뚭?GoUӦ{*)ƒ6ψLx"e#ʥX\VD$ޫ xij~t CTB"9ǰ]J9xےU,~Bbw9AV/{|@2ԢMKð'%Z }+7y)?zH[ em.BEw{ʂG.fc6 I 6bYc{&9j"45@001}K%y85ʴ=1CB0X%zTr%s2{ٙt1*!L!C`b26yX;GD1 %[Pc?[Ce@!^yV{%~̩>IPf_ʌUH412D_9>DJS> (5 FMdyfOF(*6?c9a0)#=]8O fB) \0OGxS@SaY$gc n+:̍ÀA: DكQ'9#Rb1a~|Y%T&B6Hm|Y#S <1X7 wir d2 8atUs.[ݧ@9&ވ$0GK)r)`x{!R0b$}.iY_[0̈xrmR2%X`,B:]:ξ#$ԈW\X*UL}Je 2:z Tlrd֙^t@[s̰M#]+ <2`Ss_"03Y|aw|DD ?|nYݷTbCL+(?b؋_nJ=WjHt'K9NN qJ~|`:MnvBX ۮա;ag|=b- gV?xH)3UsH#sbԤ\r_ >r#}`9`%LZlB6 yH'o!s.-|wg79%@ԏOQd)κo0̼5J1XΔq A3Ҵ%FZǘ='L\UJ Y|.Ls5"ՐbE`mǀ3aaHЅRco{DA 33)oxJI2`#'!ҧѨ;V0'ef^lHx2d!|-/o`:qiC`֙a)eBKˍek&hl dž^`#Ac:JwuvVAtIN CS?VZkGO˞1RHgj\: _aR6@@0Cuϻ&+Sџx!۹KɅ?CWr@<砻Cv=&],#lSV+;`aL7~Uա`C)nL56Z-H:c-:C!߯q" %y IDATaWUe79Y)R\Y?b#X xy$z|O6R,R^5w3*,qX$D羏m{'sON9™` !"@C p]_a0șb" bFO&#ef!3X05hWĆ9w b)6~py¤0xl`&+@{ WwqFtf)VBs3lcҟ"jG2^J L ZqRxj!9bVfV? yG 9?B%9n?t.A=\2^#Xλ,c ʜUXư|(xc,/f̈́p$bÄ́XbXs0ìu{N^Rl0**+o`[Wfy4Ǔrk9LLlWiiƢ?,8BT5œ=~)Lӕ87`HX! 1otlt$LA=q=nwR&9|:9cY34XN-*B aJyu[xs!—*:+$ˉH2;fց/wtOb;̸CR0Zl&X)_ؚWc jA2K%X#,b?V g)XG-_P`^ @'Er`yw 1&@m%6-91Lxc o!E~.ls a l T`6:fr`cǭI5Mwj&p5 ~w$C@PL!7T0 ulCN 2#a6?A<`PSKd<gvc? PΣ#c8!d)L3n+C!Vp-{cד^pG#z$B~40~ €P*YC,PɎBaFXRrj PދUcL(A`rK3u zȑPυA$nџ%W&a#k2(p2%oh0̴)M&0C;0J2 Gh=W6$ezJ1!$ #"3DHFvEۛ{}dAhER= 6uB=Ȣ_]!B{o/ 9ۥQ\{3q?c?c?c?c?>R>pK%5Vϙ+@(ױ'%Bμ^}_x<Y5%>c,a[$\&>fb3xSg=&2Š~A^]RÈ Syc=?ŤR&c1qzUrAzAszv|5U)F4Ehѯ3 FQ9c<o,q 9Xnn`L;?01z(I"6I^O#>c3}WƢISt\mK$-G:.ouD@2iu xFJ]L*K|}XOR()`. @K>HḺfDٚbߜrh"[iK"0*bv䏋G1!'آ_'˽7i)sƦD~O97T$ڹ.y05+LW]1S2'L()dj%BRcz3wlxq^()S1rn3 *_k,d '(m|b;0S )pS ;|b]LL0ua9j6~| 3g rLUA 1us_vOLDqE(iit4Kut #GUDeNa)~tSUƇy].idE !q^u> W0AcY3 773xW0!ygc"h Яa$+YP uQ.}rŰSexX|?ai8%FbJ\D3{6dgd=cg_3Yo,#2kyL d?Gz}bfQ^<"Ą .GF7|(JrJU;6"ോOc߻7^f5cfF|i`@`0} LcUq^)+Eb~`̔%oOI~, 10#e*@6we\/fO|)k7֬j1cdF4 D@+{Ls}!~㫋3x˱O SK1CDkzD_F|1্=o)|]K̏]_n?k֋ԋu߬(gFNWxe l;#Gƞ)^'~}qz9R.w2K#LKt֢Jl~E-%l'=]\/^8Vgyuf7bhp9cz{ *kd` 6{_km$(DssJxv tS|ıj`y4 j7מ9e?bGGFhi֘:m@-&pvbq3Dub}r$$Hry(m.Ŭ?B|M%D ;_UyXW'`Zw #lJ_oJVk9R oרRl6prqw6[L<*;F[7g,CQ(r 6 :g\,tOu1Y8y{*d *vw3ڌƄm_hiM& *>rw诳1כqV܆> nkr'ʲDQҽtVN1\K7 !f4;?AV,mG&MO߶q/Ci[A7N: 3_.+lES/Bo$H6 :9K~˘nepI맵<ʊc5G?ړd#ɘKS?KM=x{zf^~myѝ> opꚪCo:\ȥtWY~1rE7g>oٙ??w^ðVpj#cHGÅ>dS-mTmKRꯂ%k j6ٹn6a6[9ߵV'OJ7\|\i%(%+*oʘA?'߲2*=ނ&x綵 Ox6yO ̏nP>`$D>B̥$QBl5 vrK.PIĬ``-tCclh>r/[_>2,[Q|)}ȇfjj̊M VֵZH叝ݹxo=4}4wGpJ9fY,˲GȌBݥYu j=.q;?Rjm0[iR]5z !#q<#r5Ļ}h.gZѩ9Fdk Â/v{|2؂n*ԇwܜ'7H6|v3CrrrV#l-TwJk1PZ`Bnڿa0ŲAXZ%gB$|$rcp[;{ܘ$$c1Ev5緧Tl}QXIDr5m0%K"geqm9w\D}pf&TQҏvvvz(RLZ~戵P(kq23p2f Йu0@: AEE1[p üI+ 5/䂺8O~7OT1Jsx[ FH44"/F r)id*bER)5مTZ4`o">O)E|b$P ~<$b18øl,X`Ό%-}-yȅMԻ-] Fӹ!"$ćb4MT!z7V?vb?M ~6VQ%OSu 0lreY\,[M,5 .G ar{Y31qsM]X`4̘ v/M*c5;ǔeQsx0HzfCqJVEp;!$Py&}ŗ]ڿs}^&]K`XA:G8+I׻~7MX<-l,:d[X,#Rgv $&,ބaJ1:8rg1R߹a%;"?:Cp1CCȩ^&gv eO~ g6Ѩ1]Z9XsboogΜ.zr-idHqMʋ\l^Xʵ0lq.kIKE 32Em;0ppy*_Vf;F^|] E4aRi:1laf{Y 9ɷR0å&$x ڇ/OcƲcTeJdetmjCp}e1vww{Ϯ5CD ipY|fY>Mt~,@f]0nO *7vD1#C \e2,@PL)жN_B] ާ!T4:I&u:]|d:췭+Z=`|6;Uu@j\DHDZ&QW\y?&o!]Tӏ뜛)FKZuqnesv1 \`x\ķO=;fzGp{` 08 ǁtGHJ7"Yp{8BcXb6[OnaGȑ{  ́8MY(@S۔;*B6;T09й0@'-]Sxxy`Hp5m j>SҺl* ?&m굍q'+^>t@I:S<ޒ%{JqcVօpϜbvWYV;EzHGG< 2fe1+<B-.K׾B @Nj"k IDATڋ(nʲ\~I"EyKgLFJ$JϰSG- Q%1)"k4]6 f,PÓ7&YU(gH >)o{5Og7aWI1!?f!6@eYFI IyOe3Y"ꃎ^mÞ N 1sMt{jR3~<[ 7apC+1W,FO|K) :+x`ܤV |A8wH )eJ[=?L@/rkH1  X ŋ}!5"  EDq_0g\?7;}>;_vpz gYldL4;Wa0^5 >[imDF Jox?$f`XH#` NtߕfؽGH68|㻡Tyy򟰮B =&C^7Ų>4M݀pNj \{ YQ=081`ꪳvGIkLw[J uM\] +=kTXC6ܙ8p9*r<23Cp w`0c9R@GBBpwVç"yJY46VKU7<NAbPt0?{?NT@֠9ه=|]L/Թ(25_6Z+x&$ac0n ܘPc`9H[$[^$R"1C" ),:Y~iK"z:T1>n;^>oT "멀k{Vyw롵{TG+mL*wItV mC!{&qsu%o;6 ,඙rb%(s\6k<]/T<_l/|n6J#q^jD\ȍ󡺚Pb+S.R_a h`uLГu= :_:ν4Mg/%Gvi0^coc<Mq )KsY}G >7aq=A@H {qONĜZ[┰f1wst59aSbb\>Civԥ]Mn`VGm0A |tb9ӵ&Ffy^^lk^7`p6HĘ)Vvl|?oe偫 Ɍ]R*q4$G(eT_uMnuXA #f:߅ b3~ڃ=sgUyٙ[B^WDhG Mq;\]ȍ*KƁ&Ww`PyEMJt .fh޶[34x ,pe|~cPg%Jo̴, M ;[ˤdX,&u[ 1b{cvDQ;+] RZ;C%Y+X(rlKѤt[L0ҵETjr @*wBW'm"NqY*N*[ ЎT9h<[~0܁ϵ g]޴ cZm,\lz9YɯhMeU#c%CM2ݤ1K0"*BROkbcʺ!$DLAsvJYzwLu:7uLeni=2%LZ<kebۼ n7a3UgKY(|+F¤; 2d1@CZ!CQW('U5tK:8u;.$`TTA3ѡB!ݣ"4">(/U> <Zz :nq!b;9RvnUmq]BoDwŷ(cn]{81c 3nşr|^'K9>N.S@r`h]>GĵJ!c" ‘ |(5Xs!6}5tR BN葿]vlLe 5fvֻX 3~n.E&2uRX)m`7I!iCeҥN6zfMgHauj vSm7%|Ȫ<+g50?zXfzt֮Zz-N2ckBDtzh\B|gox7U!!ے&!PX1)b Y)]!w,s/7: 5څ-oMQaxċA8) ?9SO"S~ ^RpJn 6fu֫vLO5m4j!xke5n[G|BF͘bXHes 0",e@ZN49#PƘ!p(fu*_Io*džTWj>P.[9s i ..ȼm8 kMXB)sȧZ. X^PwO(,ISl/rq)!~S[ư&#=1ʍlf,~ =1ӱ]$dٹk*/37bfk`%[kͮL ]$>)=C+\[lg^XIQb!HS6 }zG3h^]Y(ZI6Sv\6`˹_ke4~t nfh!bXl7&[)1T8.AlLQ$sk$={E! !#bCBuy6E6KŹ- X [ L/TbJ']cb(K2nq;?n1#ELLcHj~A,f 0)4ȜGmΪPc-- O+E5_ʝ2"KٔmL4ɳ+G4+O]#_wf-t.Lz0ڝQ)rt33k'EFulUhTEӼ#w3.qK jD nc=6Häg:A=䗄y6};`҇D`+E `Rg8<}W(S"\/l6II2IwX)~x]l&dG -c3+T,ڬcb܄ş=fT#1T *  EڑHB"Qʱ 'Ƥf/BP(2vqCJfS |xMZʲ_0s`۲DvEkkƢ]:骡|C$@-m*Cnw/ }f ೜ e}jG2"zkm_~n>,fŹο9"rm2PxB h@&^)"62lB'#R/of}5aX,-]H瑠ZCYU7Qe3V`6>bHJ~ /1Ц,Y.Au zYWoW`͌iwA "=C5&-'(|J6JLMk0V$![ɼP^S9J`RY~Tq68 `|@jȘJ*XL  vUV&SET86]$v!Jޑ*l-.Ǝ_Ocr-mXD锶5&toSE# 9p ~2pjYM=`Mfrc)v!7@Jd=, $zFT(I I*ƴ>;AE"z^d 6ZFAb#,%c3*kI8]kz_l@Tpӿ=1! 2| %~ %> "Hƌ6 4?T瘓UOL? ,JDFY^X$N A@Aa&γ|De3`.dVZ^b׏9nö5f q9Ɔ1;\ݍlþu%(\/ś0x6=6=ʽ2Me\ &A#r3d!c8w#rD|jŊ"Pv>I*ʟsѳ2Z }fq֠+,8q(YݳRN٬MbE(((A-ldUxGifswR,r?=CD%4na;'+yJĂiyl6s;9Kb.e$WZbg'?U:Me["W UWD0iy9TDZ1i_LTs21s;BFݺt `Ns`LMIdJ3)l#3Ђ=nĀ3[t|tv Qn mH&Z{J ΡK\غu24DxGGCy4c˙53!u 9_*Z0F@c(S`q㚲RA-B`k)cAhFh[}~$:5nl[*e-6 :!a:a%nw`edi !PCq.pKEB I,Ar%_c|̪! y.ܡx'1o$J3y#8Na|Jg@=͎9j@`_6cک߃ ) $p@DH̠)KL yb$J.>3ȷx,Ԥ#emFTs"iv6r~\ V.ޞ#v+-EvS9S mw\ܛ'f됇UZ|oW`w|u/@_^r1f`Q4;Yt1q4ʚ"58R_iؚZ|C?`@H ~a*.T|T%ZT+\g|[YWm?wg~ 'c8꒍霞07]L'^Bp"`CbU# JH),p %hz\,mޘϷz._S:z_QX9J2{!Lcj͵gmr}Ec rxVnJma#-^f3Xo=ǥD=ۦwHK=B޽9C&9|.a{'+􋥐qĭs2R\d"i!C߭0e]؂[Jyn)һ=}'sЌc% ^(5mǎ E,@87f%PGDꩀRwW7H~to৐IkdƱh~xW5<"=mY--,J?%7޽?5~ nt<1G6 A&Rg;}t [\$ cKp|p jڅΞenohlB<9cuȂ"@Ea/ij/ju{3.@a)X`O]2ingzbY| Ji W@X'Zߊ'[$ÇT9T6+a锰v"S5&*PutAr)i01k-X'̩l}f:uE[м{bϻ~֎amX7@DYR IDAT)ȷ:cgຫom#==]b سZ 3K^ƺ1O@g,XyiFa~ovyt.,Xu \BvCh% Y8?:V^ݤ;) K'|&A9 ܲ^jqQ1Qkι/)Hk ,H֣e6#['sc5eSAƺωGŽbʕt7Uל[]|gG#lu#!)+ĺo j7$Z'/fh(>%'%]a$SJj~SjbqXm~eY2_.> u𼆼wSJ>6)bFnJjrRC{p L4H~7}nV#ׅܵk @ لŚƃX&elX9=Dޒ*nnw 'X pS% p+ 8znv|n>Bw'C2FRT6UǞkz*  4YMX fCa, _c2vw(pJxox ʉqO*SeUISSBb # |M`\9V 6Q68(ˠwY777@ H=XehTXrs|}w<8cZ u4k%ri{h"ߎx3|*+yϘraqOGYV֫jQxԨf7 l.f~4ep3/ <+ (a;cV2Djd}+OU|uD0I\3j+֭-6;vAO!U4&!zAdM| o;vKkg90 {kc(:<6u Wb*f. e+'p/C!t 0F?{A.'vu>1L]H,!.=p{{4fBT?/r)ӫuU݆Iśx<ʄcFjoVSe-~h',n'b}b.ӂX] #ChZ~)݂jI VK7hﰕI7qSY;;w3naƏ`qUjsxr|r|zA-ԃXG0~geq5 J፬.os?6E,NqsIeAot]#Y6M,\\G56#OstO c5fDnŦe՝vb6>_9ϲK((lM;Fȩnf^3Wo3 A&B&0U8;y0e(@Lѥk<6E{YWwmurڏIqZ=/bH!#_bۦm'Ȕ!Z'ќ¯R;ga%S,-S:= /#UouߛId w8W0bYvM}_ȹ3 rԀEGc6t* !#̻6B7>8]T+P*s-[MJvsw;˲^-&D2f3IÉöզ&9fi _ s<BD f=X;PfA+ͻ]R k'e[uSb=8A6VMfHa!}6gf/ g^e wѱK:#bZuLNH5<`C5b\1L  v. ߥEi!B.yLYcMwlӆd]廎 30n1&ZqXuZp~P@kZ3l6.Sw%BIC37>LncWp⾕v#i&"pp% +uVs5߻F*+ A/@|w17;NOhwedx7|HL+I@2xy;\RQY?rWc^'lqoB=tk>+gS[VKZſ^,'qj?^,< —*>"7[Ѡ| :0~h*|68BnfR,fStkDΒ-O;f*lbm*B)"!`*ap78ۂs*glV;pY* T.b'y 1jc4L&ډsAizZ/i.YK2ƄR}0ҙnŌfjs6ү&%UTnW Ҏ8q `6c#C^jŬt)Cs BX@@AW%(UQD 6.NKWBzxU,L8OugSAL>F9yEsYMEFR1I(L9Z9{OwhR^$13"3Wot,$'8@6#nt؇q)f_\j@:Z n9RQ^,@{'֓c[Ŏn1=@y&;l"mА|Yݤ nj=!34)\,HdyQ B9r\ R}E1|S]Qsܝ-$7Y6A-b<9GE eџ2Փr̃#]l,/ ݈VaTvC=7 Rj{g@ 2|jr5M[e=E]w['Df7@^'Bpe- ՝9.CE8jWb7D; Rq`)rA AS_+ܰz^ʌy_=Jdcul)֑;& )C8!D!Ѧa/R SMbdGiPw ^'ꤳz=PQ?Z5y%&XJ~v 5O{vUrZC:0;r 2v_Ἓ ^ EYtGCN=M*hWS7lla۲dk\(' UPX&),+b8ǵs7r 1>%yjWs @xk7ݜcLbTYVY&3>eMV8 P8BA`eP#3HKQԒ6B֓£8@Ev=mm}kU~l笜ߘ*Ҁu֫tNX ͮ.󒎱);k) }*qbЀ`*OQV e$L⵲^)V3׫$.ӑԵ !mT<3!M6g0A z:DYte/i{/)v$LR ڤ,k59ܠ(DȔ0cLzeeoq)5gue%b6#!/5v~(R!_H.fY%?%2\W[r(K*j.HAe:0q(bzfvWuӵP hh0%U>{OUmTYOjtt0UX'o{Kv.d%\O'^F,Za8'ߝ:}A-B C_ LXL9)g]|Ȗr֔3uo2EP]#\NXP N&s[ tD 6x Pgcyzmǥd%33*nZ?1akz2Z>0PV]t#a*s3OaU$A ;9>-T@ \ VVQydKދ=MpZkmꆞw=ceD{A8n}k`LȈ"vO skyAsҰaSNܷ7 25niS@KE,AV0k۬L: 2{E{:"48U Bocq2XdQgfxJXy F YYH((/@ lt2lL?rV3%ҭn+"{nn;)sl& ͼLL`jMK-@ gLnglN!_B1T0++qf ud*F}fC ti@٬묗7*FyF4˩^g@}CB {6(L6 }:3 S`fuSϩ (ANvAjV! 36^yݛo^b@̽ 'x5+W ~uu3AfA'FxT% > |盤e,Ւyz l-jFPYIrP&s +cm$RJl~1-mK,P뽩_k'kl{ CE ,WYZLV,;2\ Jgj(Xn-%/EVH±)!?457%QTIm!HyٲmF?;CmL϶JMZM>Ȝ67ʵT2#ꟲiN䜴:VX9Y~CϕqR|lE?CBӋYib2n=04̳t>6,AjP&XgrRyM);96v:U=bnh YyM:^za.@z$h٠v%١ڱ`>k۵H?K'Xc/VK1])'AVxnjs5XW+4 @PY6ccv2e4U3NrSæRrb~A*kI*4T. p2~d0e-#MT.ǦH O;u̟ 3![RqspA°7@J l4ՊuRY># DDY ̣;S/S-Qn1Wqz@CP%#+~MA.12e8w"@r1ؔ->:>Rs`(<+NawbKT\JJ5 lk1͒f{,,lq6/'`L^'?wNsZ;5c`h\dB귅k)Ϲ@'J)`(ka<=ju57s,)x<B\ fK IDATw3L }OjqGXByZQW|r&WjEU!+l qPi`Ɍ^czj VN+ﱩnhaf_e-^:ܑ [\ݡbJU *Gs`D'O\*RX#$x ~̱q?16\lEwh췍+ NcC@bv X*lނw ƩЯe>X'B$?ҁR{`& {}TK.N~ si("꧎}X99bݜФBQ1#J1"mSPx:K@e:Se\L0d%JܖGlP[ wO3UN#b8J <)e9 )Y© 3G$vi4\rAd[&o c9kT Y37n\יطvUu+")heX,%Cf2[d}͚tZ3޵ߵ/xP}#\o#OltK ÌLkZXô 7Sh#RECՖ"U1;lJCSxټ{k '7iqNؠfUwW j' )nsK(߳2>ֵ$ӆ*5°Tw<)ȐpeGY9/:sBĘ,wtֆiTܡR99G#-u u'5LDbc3)ׂ m τ(KsB9?U[osvŎfveoT"b9݄̬5F;?aR((]j[`])EW\kT<xN ô.^Yq)jֳ`uvUHuSN9|z7w=O->aol Vx1,$,&`JiH(aَ!G]OR~0U߮'`^-jKhvȠB`@K@@ۍ__ӂ*#@ Axf88 Sf=_Ղ5g6KƋwlc/f+e 0W- lР+a"47  U}>YWs_*:Q S߫ 6}KQQ>}:&{Mq4w!/oBH!{md^T3,ۭ˹qds(~/M͐≈~Ʌpe\Ί+-Vg7ؚ>#p.h|˨\GG~юHpqbRM;W=\rCG3,o0l>0(O0lgiR աC֥%[sT+"bOOg5Lfo3M9@a#߹c~eLzeau4Im0@NX|b : PHB.q!*d-U 0CX/Ofshh <I(e'nGc7TSa<#4H7Bf].a6^WtĔ`Ib6[SIJװ;H֬_~%A1e"uB_fNF/8+5(8_&¼ jQ0k ;yNA;ߥ ؐD|`"CFp}$,k=qks!@QT16 k ) Ft"yHXrK oHdELao6 QEǼ-VdK빆E~޺>O( dE)hșnPU @Je) (磄bo5e<&dr.)C0sX1/%5%rB\ua"a|&Kŀ(xZx*gg.0#Yw}Qb)q@! 7_#0,2_QeEeL5uɏXNzo*=Td^܇y3Bb %BJIղ?>Vyɐv "c#>DGD׳׳00 sњ5:j%fteeBDBPa+u%c[&ۓgQDl (;p5`Ա(j MNhm~O C,! +0.20Zd H K\|AxRDy} exQ@eu=q-ˊ'”9a1b}Baj56)>T5X)5C{^!.3@\("cBG%F.`TZĹjs9\fh!{/qX80 BpMd;y0e2n!^+dQT0>UTJkv{1W2(>ð6=+~fXl({mj~cưϦHmy|[svs,@@J?r-ҝ)EV}BJXMl1 |1#lSpcJe;{wY*'qY}t_zFR礿e& _hN{flW'+֨VcmlǶG*I2o-|,1$maq̃ -!>' VXnK{Ƴ'vkw/Xvי`kTTrיb3 RŒ,m+`,+f5l؆ f 1x.#6 pm |>kIǍ1ms$LR3sT=PNP1x͓s:FeLTmafZSkNlPc\`Xq8~ pT@-grOٮOs9u*ߴ_:&G<Ű_]E{`;B {A̷{ 2 Ry"@jMQ;u{󠙖 DŽաQktm0l$p"8u125,` ӾmkMı0l`;bӨsl8sXLGao˚9m s˜Ikټ#GŔ>9l EC|^YTcSlp&{pe= cX5n J6lP [0 ‚H NT]Zl8&Aw;`os-'شXmDnKb~0JG X Cmc9gD4lLX|n"[<rn[3O}Y$P&4Bu;B|Qd-TF 4JR=0IiJf3 h޻oJ?P*aE MuI6me*#FAH92n&C=O C~2Ka T^8~aဴt(g>@g,Lê%ߞ9&i(lh.L|=iVn}DŽ.-d3 BYi>L3~T鼮źEe+ L#0?r_os,d Spɚ#afZ u`uٰB+O Fg=l6fm&DchEVdCՁ+caGTV{Mcslͱ96cslͱ96cslͱ96cslͱ96csl<6)cs,ҡ9Qn.*gVa5=oh4ؘ&4y=} @7{_\?Á^bAK#x-b,' U9! H>'6 7>{;qB bQV02ƫ60~r8 ,^ư&%θI{h#}\lQPnJ0|IwN)6Mm4L(smzTFcjbI8:6 ^X9 Lɾ1? `B dͺ&=Canĕ(rB<#+"f^HTaygl2!ïЦ6 7@RǩPĬ}.UDHIeM șiy!FLys@k=,Sf)y)0f:s|~^,c#/2XuT\ 9LzLE Ю2+oڐMrTł}2LCjeH5vU"ZER_]J,Z1 W ٥ĕ_0ƬATp%C&r3R$s_H0clT/GPA/31ཌྷsx(Ca |(>= hH(x*TITm`Uź[6Y 0Y2gtC#!1lHlFB;k(ASv,/^ &RJEQlp9F}F?K02H]b/yD>lkligǬ[ 0aUrk|\v3X~_j2TM @Q1*ܹxٴHa~~m0"Edd 48$ר^foѷ`T2VS|!gke ޗf'݇LC_ <*"[?j=)vϳn`L3 L8z'.5A9QqD߄?g>f]k|Iӡl{I(9&ovz)QCEɔ;s (v`+Ǩ}FuKfz.&p|Qᄑ!TW/ԗonY׍gRB$9mr誀!+5f,EW$U'smӏp;;Ϧ- "om`1Q1S9%?ΏzƂg;ʃR,N$å1:9 ձV" +5? 6WM={ԧX7Ŋ3沞|\ tIPR1(BĆ'0 vp]{_*dnL/B/G ɩȽ/pNmbRYn'm_fvʹӲ̽8 B`=*oB;g?vZc5G3qHHcqTt_/+ TR8a%"UTjtKT>6N>cq;kw"ZnofRjD.1%AH |їTQsWmiydy -(R`::jiCc}co$*Fj|n91szzOƬ@bA#KDPJ-%|'$` A*FEEIWX30M㈏=FŕI/:ad Ļm-otCۓ*~ٴ4'ϵ'9%6&J`Y\pe /׹ಿK?q9f)CE&?__ms$< lT T}@PXErBo}>wI+YᲛj>Y@Eq׹L&Lm fzq4MIUGTa~̏ ~7kBA^n=E|:F~ %B2$ UmsFaH&k:e(P% >|fLOg5T1rj?"\gff+8ॲNrTTY:룭=Vm|Hx{~x]p;OC,YFey 8d9Qk= $&UR5P?iNft5>{יC r|ñX *{ۗX/inf'.ڣ;v&*qUU_ F N #>s.@ B{IS5D7ش^"^5|w]w ,V К |֥.§n4?z>ΧFE1h4Zi)_62)Y'Dݚ(!)r#UM{݃ 0K!w1^m˞p|XÓ}o~ IDATG,3N1? }tchMkAb9i^凜փ @k0B0>5?rFҞy$^S MUIY~ʀc-bO˩#~l]p&6OQ߂92)@2V~\k^Ira檐-Xc|_'H&m~+mDz/L}2.xXغd~޺@c~ݠ @@)#| Gr?S prDɅr'?Umg"`sGw{kZ2`5L0"t֜$"c޾d0g^yYe} (0$X|UM?5oyvx(~dBj`fbf;@zfrNQo<}q%Ul@7s̏kAQ҂Itx\ɷ 6 aLod  -5)L!xLAFDŽ.\MOƘbN&@b1 }[G.*縉*ؔTis׶]03jkL7 (C?n4akkkc'A皕R1/Ō68g& w_ba?86ԭ/C%Z6pa,KJZn  <ڶ1C2 5+i>ݴ}39sRVBSr!35-_Կpjd0tS>Oiԗx-looc{{{t!R*.\F`c0qM\Ռ=LQdmd C) & ~wh#~ec?TNj?1;K1ViB I|_&B+8q[M~@%wW[4^sw,1LawwwiAh.0Դڶx5Xctfc` B l-w XB Ax Ocp7Gg՜ //h7 k|mK0?F[GLе["B͇C#Q*aK^XPP'8g/\P7/;N mmm gAgMMdze5YkDk4h^zϓ lSxD2&8#]bhƦ5C#T1X_{ Rm=dH3]=fvfP{AgKקYN'җ`kܴxiyG[ƘyV@!{.l {LL~ p0g- kH~ !U&flp蘟 7V`~o{db90{URTH*.0 JTu+"|a܅?0MɝAeH4-%Yf]4h;u/IG 9$VZHYSGV"bQ #[ڟDzO^f|ЂHRFъdB/l8!еe("~~q+5}胷]{Ax<^t鬐"9 i0MG >1kp]B/8I!B$G3)/]/{,c 7w-+Wp `F=oR1AU_b=09R CcS*_wf%"~\>Wۏ1>kJ@-XQA1b` p Xa+Ta !'§0E˦! U(ZEQ,~oτz~ڽ`j τM>zr8(H9Vk8'\yD7bނf0' Wm-I(mZ%:חrrE &eX`〺g`XN0 cf\ LU* bu̞=6 t8>S#(Cܗ.V ,Ek2MQ=u<2ߌDd\XoQCTkM#?V m=Csx,a9L!k^Ze>kܬܴyb^ys0`#Z|  [=4K$khpČ7>1^ơPPHfO#{D =GVeDYb4O_Gx&:% #b^T)Q% wvj.V+[m *үqc"ZdXӲk ׬f_O:09SC7 oZ0oBlBM&,Ag8W}0N:k-CǬA&D,NxnBcCa W.}cGj27:2{=DBX!U"/ 9 yc_"@E-/=3>w"j3ݠ9 > vz]d2YSlڗFyty/f^Nsd`%}fMվ۹MocL9hԳ?-|Pp']a#q.{o5R!=*gU>^Lv skA(.+am=̿3hB:؅;kV ihleFi?7oyEAf;Y%'h 4 ݫˉ}2}cq %I% opބIikM _b|ĺ #8S$(9kkxV)!0)Fw"I32LPrD3<) t4iW\B;p UÇzq;دYcjM3i!#FGXc aSHMW[[ !}r}t X |q .RE8PL۬.spuR K`/a$0)T}=HaXISl`6T96> 3BfhhNc,cw׌ +,3y#O\]U |nW HAEIqeNif nB Mb$6Wf5n%2x&+åV͛GƏ/ I}q [9:@ ",=&""~ǚݱ ,-_Yقv̲Mby¼$;,YA08bPrBX\LL .nn M0- ! !O.S1ief-.ZS}Qox - y2abs9I:!)@8ZIUU9YC|QT5?OfȔ -;xPlBJ9jX@RA4pJ0䇗(2RN)nO5ך+8caZ.Lry]@|)` B)6Ʈ5\ -0_OSXm_l>N\[>*3#Lk"٥Ÿ1WLeݵ? ǷkNŬR4/,ibZ3|y;4 zU.y3?4-MuVZ|ݛ}m 1s ƟR;rЋ[0!HLN޷S#sNhNU *t ` Ʌrw"3⾥y;NYY{$lv8% 5 ;[l28yrll (|y>/16\|| j60^p A *F;rNv%9mBlk>k;O6U_K7Js餏w_Fi B}2W*|!YUWGf 7vؿ XvYc`k[Vvj S/XP[,@ t}\MuˤmIh 3;zGE@p!vˉ=WW5.ȼk8].aOI%H'3LT1얗an 7(ꗂ 5%/,zֻb1 .ݶp80BX!l%L[0xu͙)#b8&BTXm\-OmΪ0[:^n@ ӽ&1L[.u.8"Z3 h8:tΠX 5b4`\d?[0ijpS@G鲝]nOGvtל(39?*s dc,~*30nA/IU0lP^-~'jecD8߯Jݟo*f ]\Rยګċr$2O=JCDT&/yɂy7>N v5(a5a\~^;ʬΠ*dsDy6eBVg}]QyϠg30]}n aie`%+"£(P2+E59a"|7_3]LNM\Im]ڡWmٛ7,JJ5S dfL(2hTTw!e{T&:T?K5y+mD@*yTTx4Xƴ~H#ց9Byn3ʾ ES$=IH2Α㐸 o.$V㚓,hsŸeeݧBO\Ԍ[4Vc,TrL˔S$7fNlghI&a5T +챳FB")p&*yR8=W(!0p# nsx9  Ql?e|N-xds+>fXʚVj+|I'-,](H#&UxF>^Jp1^A &5&p]Dh 6T:_R p*5rHŠ'\-ׁf&grJaq^|Y'ed*)bLMV(\cT36Rq w~Uf/C1U*1JR`tHd7Έٍ(0P2{J&xZ=i1QatmQY.׍oa!?tʭ)/YK,.S_g|wG&&OL#"I(Uj0"kG du0 IDAT2e, 2U'U:M@ϭ\"[y>u,04lNxf8 0GP!ج"ZM^LCS{ G6]xgxKB)< L[L$tyi"̘dqd'`"P֕%5VhwBFe@i9^#e]fTnKÌ{N[9`(%.Rsy0b]0p Tm<ƞMCןpD-v7G=c޺B> Rp}ݿa*X﹋tJK"^zn-hH*|*a(ٛ1p䩋KR RduZ<3`>vJbGI\27GJR<쨝](z {D`1e<a~O^aesY!@EmfT -LK9銆JSsČņYpԍ9Anf8|֍gv̫Fb_sAhuI\JgiP'JvAI+fm,V\"aOp2 %#"4F|}3uKƩ{f'jǪR9] t}ҼN@#2ktcK3E'vh5`,P(UEΞl*}jP z"%骸MHw^yRGct RMjYP* iݗ1Ocxᩪc9 1%6lWbh: ghϣyF0S0'5TDZܰ"al9I8qWsb#a2 &fmKuY C;a (햷53 prEǂ۹&lC;椏)k>#A/P _V≰*2dn&8 hԨK;IKTjN[?cCa-iJ{@{ȴڤB򘋾 8rP'c=)l{H Dqvo@ KEm%핗s-[ &r'2:sc`{4P {LPX."(RxLtag. RwDKFN9F=#JD]@z~0 Yu; GJXhR` 3Oê`Oub]|UVT0 W>tU o,e-#K}  U1cM `N`{Ⱥ|l~]}kA+pyN`ilyE5o 4[ǚ(Il"W!{̰7Z]WlLЅYl\Ԁ8ªoKcxBHYlbmІCD<Ђb%1e%梏cNF1+jX ϙ׿%WcK');49oYɩ s`Z#+n nz_-1#sf u񔼏?Q@ԑk7?@-[XN"VB4()A<9$gL &Wt3nNbl~ b_L}IZ>,똥)fs8^P3_ofD؃l 4 j1s 0P2}\dz݋[,kqf.m=4v/P ")6Tۤ)M&l9*.ɉ2e5*=ү+bЭ#rr&TӼe"QYT4Vu*ZEݵ uzV aۓ4*W)4}(AxBVFÔ)Ye$hwgdXXϦYTV` ܉S+]r`J}}Yqh3&ҪR-x `co <'1=e\8m݄ Zw]5<]ecN *1u7f-k:W2k~tr5c]SES=YY~fo&CZdĆ Țva39q5e-&@ߨ'sssy2/sn<ޯF1gdpYUvl6k (RoVrMJamI!2y2)oc6)Īz+KaGPIz隚=N{GE䱥)3pԴMΙVs0 aql4^$ӕKeC\Oxv%סG?u5ӹ3n2@gO\&jN`u4kEd2.|FϘ ^aѺc3vd*ð&=6&}F5>fE*l>ĕRB#ۄ@P].P{$cP!Ymى5bB D:>*1ȌPt ;'7g;HX6R7Cuḧp.2^8 puxϖW!2"f"gCDX9]qOWQm';Mh9>X}AZ @`kHJN{-3nQl w0p#%o}:}9ݢP¡Y[x0Gſ;Sgg;kf>u̕_iMfzu4=P&+fY{* 9d \^L(o S9B]{5~ Q}{A`QxB? 'Y#P+3-umU:{Sg^]h|[|z3;X7&i;Vp1fBnOjY6=>9{NUF lEӻlLK(1^%"2+(>G1!̫.xo>;4?:unqeZ68dW;5w(5&\"嘹ryg`aƙ>6s `w{ja*8A;'g%>Sybwh!3Zrg\ T^e<p.fbeS &/GRbJHkfH)6l5֌rqoC5Sawy{`nA"wxԃκ73-*#%G?_=N`t[]1+C]TܴXGTVׇb yj@0+T$%~2lQixk]&b'sJBigmBLc0jO_:VL`Ǩ9rJS6V\_.O`Qټ@fWL뽮>w"hni%TL mXQF@|WuboHO1οZ|@r{gYЋɰNj`;)^]Wz0;zBXcX/ZHf8cD]ϣFts&K܋*wS*fxvX5Y8'JXrGlUH(o @v 6ʉ-*XB/Gk=Hk^AEWrb *(ifLH㻭k~@-ݪ ck(M+530^2݃͢/6fv k7Y KK*a1% "Zhsk}!ֽ|8f~^Ic @=(kjbz P2`p@}f7HfLTIAe_/~ f;)~bZI }Iz_cPik s׽` ^IN<)p-Y3{&ZB}B ZJ8ύXfvj^u#\c Y6`_g:ۙ2g+> 06+PQG-^3 js+TQ@h4+Oʤg6\^&Q:H+RG+Ҷ .K>EI;vEA,,X'!z R(O$^MCx[f37}3ny;},ǎg6Te~55CQw_>AZ@MSJ{B5wRT *_ {P&o׼ <>Ϙ^nmYYu'oo20&/oX572 N2}-}WF0T',-çj&ag>AUcIy^&C ߆]6ffG'Dg2]z;lz C3(qQCFlwGo][EXA B f|ۍR #z p T0ԠtHjO m'Rg"xU'7LT}_˦ƫn>a՘y2VtzW+\qPS &+,26A ɈOxv ,3-g,Ȇ u:փmiBKΌS0,:`J<Zbr|X-:_% < -5HU7c9޲# p RoYovMx@tccHuEʌGx80]JW2˞jmܤrj3SMd`)}O ĸPy6ꓷ&p Ӿ RPϗϩ| |*LDAZ$BKUnzLO R RŠ6Xl`C|D4Jߍ&߶tۗTZF d݂zPT(PEp8a(LH, Gg[j^s}lxh{lE.T Z$. wgu4c=IF*u[T`]Q&yyn&/?%x>r_AƗHjC eqV^ %^Z7^sWK1]ӝX8Db_n[h ٌץ3v\igBjHRw5xMV[qwo4o{SτТ#'±`zq|Mr*ݚV!)&6.dR!VփG]].w3*;`؂UD"C' j:V(/qGPt%-k`M |=CL !XKLf D p[$y&u;msBHbޖVWt۵zmCm5 6 xa'0}0l?,}X6 (3V4e#p\*3"~?dF՟QY===@u:.YY˘/Do 4LÑ^wNbQem=rrN5Gݾ(N媗u37P >3%$@o(f\ #o76}(9_1Eov]W%|kb9uv _VYPB-DXe*keP&MQDϞټ2tdz9*/lmGH/wX"\<HG^I3hCVxMm&Xm{BgQE=blB;|.kĔhPv1Q%]g[}΄)I-،),e[!$)x)L+Eñz֓ojF}"R׀Olz1(lpyG;!SJDH Aခ3vCmcRn2 ?F/MrL @W3;f? s Bs9?'Ybd;'hU+ʥT5]xC=SCbc]sSBє&H0޴?f*K*GS†,uERRDz%"SAXmƳPC2Po|PW 9D%>O@wmT@w5NLc25*`\j&z0GeLOސŒIN/7-ђ[)H#R9@8[>Ӏ/ˇ-L*oa I |cfi_gW\))]P9P[gl XbT~bKP ƚ4h1C“x>B A8'.PA'#"p# IDAT3cJ|$6iALpTrPM6wEg-0)!m!:P7c)cJq 93j=bkz^RSO=RWGD9 T.2dZu"e fFQIsӇ$|[SxE5,B&߬ 0VcPX; rgm<*A)r2$){0am6,E" sl{fםYj L+.r=qȓJjd_'֠7- bݠS}7|m`rOϲEv%vu$8m>11.]bTJB[7݇rL|9u^Ni.g+'ĸ+]6$ʊ߁RMh FE- b1VԉcbU|kFl}nb~]OFq=F]-2x1/ej&E/UELoSV]r<QˋQ2yR^_doAqu#=Gf"(T4Z;#!d" %EI`:77*: LLrƘ>IOn]%W1 f,byVxx׀7|1/6=6o:y$^*:^=TƤTպ jھ;&gkr8dYMlqLI%K @G(tlw,ZRZ-%^sfre.U| abX-(OzǁR'{W8wNL%#:M}apzHjL]2_ȀC%NMElap@IF%J[ɯӡѰ7G1Cđp.`b0 ^ *bI߼T =9e[s!\)2-ƺB/-g=)=36#a4= TOqkzByMg-(IъN$5 7!f1!(9DIٍ"ϑ(Z>&,3nş%nx-DP1 \]թB 6[/E~|r FE>%Mx^sd6'm6lT;׹7 mR2ftyid|΄UL.v`; :P3夠.t/4rt(VI9}]Vl]ǤTb'RM20Y03>'*sola|;irsD| ~j|,];Zw=!S⹎މ8Ce|TA ԑ,a0;eչL m{j/sN/C>LMtlט[ŠsS'w)[-a(h%b|z#Ȟrq!#v2{l][X:Ӵk2#DٯZƂmg]m??f6|:r%ЦoY2: HDOV _73:-'D] =C;v}2 *qΧ>B݁fqfOX.=Xfn7|)fw)EQ9vbHbZ16")MP/Z0 ;f8"hjpʌ8d[`3c n:|!,w(.AM6`'KÇ\ xS-ϰPH$b7-zJ gl3 Dd?i'HDdwS\I8 [3C52\ȶf= `bJOAJ"*Ft|=rH I-YnتfƲ-ے̴mmBМu rj*''`=Cl l fa][hFB`*kb1*5^t *3?0M6fȐɪCZ3&eb)2Q_hҏct |+v#bv`>nPfyclGw&1=Z80) -&Fs^aSt#=(%N yRܸܘX.emzX7'E^yNÙ\膸 ])|ilUv? %ָNRFjjf@RB^Tm" KsC Cm;\/UPHklȕ#|1Ӌdϗ}>CoejcH2d2{*jz v1 M-iBP)l6EFo  {[jw0)kėJA#kpur˚O.e " [,~aJphDlX|d/TAP `٫jtZ*q L5 1or^*/쵢.2,x" kˆ-W/;\'tIj͏1ۄ̬ə1 &azu R54vyt`sXT*`3󲵄c"x."" ƻW ?2Ub$+[q3t1g8%UAvppuz KZ EňPNG[m)մUݩTWX ؼ˛`~m} Эd+>dӢ3E;A/T ։,N)lfigzp ]Ԝ1\ϸcCJ)UJ& j(ۀvo9}0Zr1T3o,Su`/,Y )Nlw* UfF]515QD(B1>I UR$W#ϹbS0TMȜH;wcB ~}X|al.WՑxd-+LH_Axue`,(CJJ! GyL".9Bw$0l(;vYsuv֝RQZM3eD#5l(}u Ǵֲ].>; tJzlHch uVKg3MP@lyaV  uӿ]-~ *~PKr"}-@&d Ϩ"ZjϝZUvq̮>$\@uAz `~lr$65Yt Tdpuo>ʲXnCl}M*5lGMv&*'. @덫iT-s5f6ez.v^0spv.`&p?'lMuLMu0_g7Åo\Oa7wAA22 bjH\l݂ͳ%Ift-LFRJ&oƞM;Nxx=4㧗Xĕ/zڼkDh&\)ØlRIg5<ºC%69+6Jj Cl1Gc)" )+ā tɊ /ӧƘ3frˆ lGA P8/|8^fEF aR.D jyn% 1&T/46}Ȋ`<ʀF7 䈅b'X'\.c@̑ǧ@S (NNܗ= P4UK/8tW!B N+ėnEćx)3Ll"0T*3  eL8 ?SʜP!U)"BF*H "`3 )x& F0 m6@'Uȅ'3Kz/_Ve'> >$" ˍu [ţTfQaX%z60 nѝ۬/x}JqF.Xgdx#TJyAafI9 }n7aD=? Wh!'3f:Lb(bBD&)1C 0'-9wgBP\C7GsPE9{o@%7u^ JU`jK"`?9ֈU~l16mKԜMc*UB%:e= LJ++}*0ecc~Y3 jn$80WfC !X+fLjrS߉(0E̔ sP]|)E6.L#Y8m8r$W8U8`z66io˱\ΌK*gB$Lj,w sKe|($g31[GJ 1Ta3޷A|z8`[;53y PS'gYcl s)oTQd>F s}t##&ULT00J)tG,/_A =>%d{Ckʀy%P׍ U 0-)H=/(0S%"*exSsSeK79疸#_R26cwr38>:bFbtpApEcfk_g\-@Ftn!+~#qOv,|:;94xNo™dc%+vQi&R\Fs$"Itkz3Ѽyynttdmq1ERz0/tcv(aWƒd6Lhq3s"K,2d d}e'y Py}̙ o-? ;o.E9l/&?LPNy_C,`c!r>tK+az3D x'o>me\2^c1td2Z>?fL-&jϪb?a3%T) 1X*aU_;wԚc}JةNЍ)tg3S[w{kS/ҹ`4ķ Iڵ0d D,$mDXx .l0$&ւy&!Ӽ dgmnu <Q1X#8d[? fujپ`=4͕cq^-ECSdo%Z38l+Sd0_OfXR.b9=E|]gf ͜J9'6C X@:&/pY7N l>?&ݸl }?!|̰.b#ʩH_ױ \פV1%jʑ;=86+c>Ulw”fO ?eu]E049J9u:QRz=o?eܧi)`#p0Mb5tݎbr(-|Lm9g]R U L~H({ SgL'Yó̚ZFחEs,*6 A }ĤZG6A~U\–RAu#|=hʟ\*t9o] H,`?G .s(@C< p!~ȱ087Uѝsu+E3HKBe a~8"4p`f)[Upw3SK a;sc!@iz bԹ<=^v,k-K&%\ |,u %qXyagT)bq2CstHSLbz,F`݅˃PBΟ ?̟ÍYk x9>0_{0nwG|,Ueh`$P~58/` wٺn_0 o]8ϑos)E@} w,#( (;u?h٭ZO*[f!>F7(e~ٕK+L$}}[K X=pgh|(7Qt]},^`nnE/B0)s 7{osН1t{HRd͜rv JrκR FMmON [xZ}Z< Ac*1 IDAT=c![f^ ؍wg;isٕ0)g{FE^W2cݲ<edT̃ԫUÖB`r7a+(6x cJTN M&B%D`EBP#Ǵ0e)-G$V۪7g  [;Cas, ȁ `&sŸE n9V ;b@.)c~2&<vA(#J2+h#[XLigunle/d3v1Y!˙}`*)l<+a}3j~}C_ "Hj0%Ě y}Vvx'6 ><;ݱ;vcwݱ;vcwݱ;vcwݱ;vcwݱ;vx] J=5nzsw}x%렊ot4%Αs=3w4y(/kzXPN#[`pR= 8{^z;v/E@$}VK10r}6x ]s`5<CؕzLؾ;ƻ$"FX5LK٬2I1;s}%6&1+c =73 |)c"mƔLrJ1mo(py7T-rw쀗]C -@23e\d) .gΗwx~5mP)){)DF^Q ')1Vt;7oۖh R}3)X*B9u) H1@!rlR 5Ǥ^N|/}eLO΀3bC>v9X-e"RRl )`-M!+zP!\U - xg=z?On᠇ 8>?mʙ|>0|/@#lfCclc>S S*d.JMrĜ$kbfaʤV=<9;C CgKʉC93?9a*ǘWRcC9.5:1l2N88gw?GPbmkzs&h_O!-M53ylw9{hzN;M[>2 ˉ y%/E;<2X-!~Zg)z)~wXd>$3)sH;I)*cZ26}*b 1/MʗbZ ~xs })hrV8\1L}*#'X `̔9ܗbg*w7ۘCfvI(Ȅ@BƬDQ8"G=gFr.q̓iE;ݥECCEL`,Ҋ^ 2dR ,'TX8Ý{M `/]L6H>, ϗ`+$;@y#4-*f'= mF P|4CN03L DRPl+E3%I@:6b/OyNz@@u}5ujdT )UIi)&J);OGHO2p ;7&j g1tՙ-bwjRS 32z+h&N1Wt4Y& X%|E*H1i5xN9f9v`,.ÙS{fhRWIt5:xعXY" p*r6xX}YjsBPTsKĘ0I4ZOP9$^~MzCF>5fOq< LJ/?LT=?ޒ1Kyt%nׇV\fU8S&P0b/)g/_fx)y90@%U}tٹrּOa2ba T;7߀'h)nESm#r5m(ԳsIO5?嗸?flcT,v&Y'vy:E\\C*8Xg_Ex h'11x+";UW-~Ug8Y]@A#&_w˿ fCRt#UL]#W/-ONv=`D\>j=x2zAH 5ɉ-ͅbGXy*ztɋhIg/s\M 1[lLL)__,s9׹{ 9R *ƿG_\]ꪓ3Mc 7Yt!0}}Bo M],jb6`#OOgLk̙mnqF 'PJM>7b` KrlgBb +TN7W-~5dn)_ˇx}-0^0Cn!"(*z|GUQ|k=I*-~& pg 6 Иz;3ƀaveJv Ub'Pev* ]BI 45:d?e)ʂ)u@ITjz~4}S/'umOm5g?{hWkQN.eZ|b`@ T_[}.OnN)1/6t .i;oB*h~BDsOyQ_G}>`&}4 2+˲s($8CN.vR@ }tb,Om3*Hr]8>jz_IPR_tul繝t0)3 nfe*h䋏N?s"ϱmT![ˣ6d6`ъX.r!åb9 grJ? 1 2Tf_] \.m|q4ٻ*uqt3?[&.},L5w5'Cv +r_ ()_.41cL B%3z)w|M $uUN7[!T)τr-LۇxS8}&dX2Vjr~u2~`' `koj M.]וҿNDO1;8kQ/Ny:lV0@66n!؊X1dЄC#Idž A`Bc˄ёc򿳧ms2B ~}d$uU's< c⋂镗^_My ,OP|n~k##sSJa<c4a2~ g0`f%dAy?9|-Ɏ9S3e~Nrk\U-p=6R62PT9Sgd7|骳#߆[vT<1&}xaX3ZNd+`|y3ZB/̉.} o whߺz?suzn!rᅾ}`bz|oA`Sh@P^cZ)_d_ v?;b/Weld7  }3 ]cLcpHaT̨aPZ0%0d;ǧj{ࣁ_. }m{WZS+SJLW{r2TO@D .fz~wN똗!xsznqossEQIs hBE*lҥ=alv;=;ÐƐI%ҾRtpuhZ uO}Y& 2x4 [-! 8o&cLSf3aoooeb!rrZk;_"%Mm)Dj'>b<`ZLMws(W7;Hojz gA]װ֢*8c01->]9|vx2f(@ב|%GLL~` 0g-dMקF_@ \&‚1aT}4T1oz1>}Ar jBc5T2@ M9* HsK0 wvn]|Ĕ_Ҽ[tl:߼iYW,^]#k`]D)ʹ@@3 7s`TP Y*߲2~`sOS1xmf2Mjbj@eHSLI+{t?RvCgFuJA+h BW0˲\rt5X/'⠣@3) $ծ`fk[e(,8a> 'tRȷ۝^ T*4"cHA{&R&ļwzC2|Ft: dvT.%<%FXZ̄EȨxQ%G0jsgq-`Üq; N,TYW~Xy)RiĸfIRSu= =B-6yRӞgM}UQ>6#x[CD4{/RzH.ώoA楤_MJ)K)x,*3k3pr]KY&~s3l0p kl68$Ԧ?1oSnGØHI&\f1ҘZe pҜC e#Sw+YE½S]a͘ſ'_37@qjFz}`b'uS9IWeL;⋚^{0ѯQH`11kBmAkLːg5; *HS0~߆`p&6[ǻ Bp1 ;0b&qf#! ֛Α ܄IK̝guq.'8ku|؆/1k ͞WUQG셠s΢: {x/%,,'}PL%<TUblm~kn|Lʛ{JIcJk&1ޣ|/$oMJ;%[\m'F!gJ'XrkоRx ]i^|=(-~.On}n#?]"P$$tr7@g>hxlNYOaN} Fi`lU{HujO/ fp8mScOUXޚ.:~z*{ppx-3"M7Z[-va*ZtI ]N刵6oพMŤ!46+g(}ғ~]]>zJŔ&4+i|NT5>0nTq7 p0g` Xt4Aߌp `KOj t#'Υ}))0Zm8JO`x y?f*8lcآA>pȌ7p9&]#kJS$fؾ GI*,NH6۪b J*\rvT/{ w ǔs?B1`~z#k;Y]/Oq~d;YiPF*j|aaoyV'~7II!ێJ1,#Xq4(uD )\Gh:u?3OW0S ˉCݭ`>RE>$Elkx\hfp |m]:wzMhyXu"A76WԶVMH.Ž`"\gWPPeڐ1}bːu  :Cjc/BD?.if~6c sƅ7U(@+CFF UGNowkFƜ RBDzk`L5fof!9~\.AӋOVMhmĹZŒG Uox塀T1F9[Wq-´> yjuĤ?dz?pGU0c̘u63c}/ҕ0H%UMz'Όˍy!CfjstofV IDATtiӗ@Ll]eVCt co!GbnÌ9&M)Q]8\a2`) 6ə9MIaglDt51ssȢn䌩:d ġ-ftE`Z3?/E.fwq`lźoAbuGʼdq;%:09,cvQeH 4<Նna *5bA Sg{5%FLX)qbMzq\<'Q3!,K)}-S: 3 o /Fg|IT :vޟUd;]|nQW0Ee~k0V@C򵅉Nz?OSS^hj&UPJgAl}¼/1ۧ;SΏթTD$ŔEQty1ŃkXcBmXvcL˕I?E_`œ cB}fm!uYFx~!D%^܀NA_C,3=f:X{ݖ3y*w\.Mk4D8S-'MwlXЁ41W5_iЂr]x!26 k7$=+GEK  "|Vpq#s VW_& sJehh<~hlS<%t1N i\xmM ;?FZ|}/=`->VY9*)R^*YaS+,G@EH09W}U^AcZ!nQA c$,MO?|qpFȩH֦&E"DhtA,[9M\‘edט*&;<[ڪ՛aY9'eb:foC2CF\ ۘANe*!Ddos|A'P' "$xT|1 '7Gm=ΥۚHX6ҕ @kjo8`;afJ8RXW3x2gfwXP8!6LS9FJ4, HB.K28XoTBم4TK"7f8kg)-ZP;OaZʡ5;dohm b9_2ԘI*#rxm&E8,1[_/(ݮ&lMYk5lRUmXoG\xaXd UR9^IX-;8Sg`צuz9C!=R~>FxTRLWtQ.\ Cs9 ŷA剫]__sf^gWn};˔ bJLk͐M @[;Nى1A~.>9?*U̚Dr4y^3T gEmYU9(D:f3ع:8t*+Tj_cK"*Q;"]_x O#lW-`[;] &S$-wkڲ:R &|EȚ2UJǏLWph:خyUbMm#0;Ŷ=BC{R"MmܶNd\"LP#F/p>&>hv؉hq9~>%AtZ'>Q-]t-aR&3ZX3Ҡ|Xvpm+0-f~]>smf}8xnxooCjXNS,Ghe5l:_D+T`.sUmE&TTk\K +Se!mؒhAs LJ3U /)7K~5F9\nGgm\o -2uXD69Ă\ʾAx 4~σVŬc:}wwp匙R77Y> U,Ea 4# rFp܈y=65 ΘbڎqtRӆ`,`d+l$x۝? 6G/N]}RՆϦKP_A5j ~p;2o9Wx Up09%OCdй5w,)毐dpmL|;Ձ,B~\5{Lݞt@M7rFJ?ߙZ& #/T0SiW>[ߦpމl4*w;}l׷9qV[ 1aAx _~ĺ+65{} M8f.j6˪( ˬ #.L%}cXP RSRIgaxuSa'5 r3&j44o`X*]s_zIR;cn R=}_P-HoS-S5v.@Tv5ˆ=DNC :N '*ˇd䄏"N2C9S1i-_&Q23T77ylka?1\$bhX}ˤԨG՝T>s.&efpj1s:~tb10rRXqaW.dYjQ'c{f%P'a >\`OQ_yLŵpn5yӀJ;O cοGT9 Ud!)Ch<6.Jǐ!cSو fgF6-.h]1);FgF kfgcm}/(1n۾0EGr'_34*4=l `8NXt`0KlNav ȦM:TXe_[h9ʘ')2C$P袔hbT }!5u4Ux&ap܋4TH1g.l  m4Vf]Ec >O%~FxScKzV~*SJVj~|9-K>7,\&GLD0el#XY F# kA'_]A'rkӧ  anc| @i[I#9X0Hce3ᖷZ274؆_8GJ2dҤL)'/75Ju͖j^1Ov|1fJxcZﴷ3v -"F~zSʉ:!KvNonq4H%~ SLAf^͛VϢ%Vg0SʲMuW;ǝQ֊#3ʌYdYvˡ.nv7$e%`֏>(-H?d!aE6-`IbI7)6YdwƬ̗ogo{"=qι7^fUefEb^{KQz0*n 䙒n,mOMa:[Pl17~r;Ƅ1ݢN\ꑶ2b{Jtۍ,M]PCvNQHǖ@drs+Ջc(4jJB" \nK[ŞmK]S5]nT2 Ką,}ڕ7X*Αh3B>}Ph3cBJ=.KG$=IB-"xre zU[41oȵ_T%rWOX_ +!)0^JVПj`1,l3mǎб1)}3ul73>96>BeӦM ~+gӔ/_ 3 LХAhZ:0^ PzM3 CSB=X '/!% .lB =!bʫ S=B(<063uߘvNN\+\Z_LViF< |uK}L61>@VMȋxc.#ܶg9L} |@Ȥ?0!۪&KŴ4n$ą¤T;`&LÂ0${ŧ=p&a^4M)U˨A:ڲZg[L[qF%KD%+ZˎxrO+9y4Rx x!VUT7$r lݲ_ȿcs^ym2glۡ>A@4M}S7]6V3ɻqUZ'M񌾏gHE/ $(Yuyv|63"Vl4*s:Œ5E>լܥm@4i X!t˶/C0I[o;5n >>Z!LMEymbr/)~FT9nOZAra\s`1]* dJSH*e&=ld'qWfٴi|CT=\[2R+3n ը]oÂ.FEw.,CUc 2Aic'y Vxs煒  E|7KUцB!%'8U; .r@5Dcip`E`wc\z[0 Q\g)hb%$sQC&Yx7UXUY ^j(B)q-:h% }dL|E")6A`a{*d_ i&NT,<0hMN_|eA P6L,@,;]6%3\|UtQwضKWINLb>!䙮ʯT1>+1 hv'֜\{hdA(h2="䙞5 KiD7iL֟Ca@Yx㫟 -A桅>J.bS=Ƅ-~=Ф˜h;E7jDp?$=\:R> `Wcb7"ou,WaMe{, 2 #2|Pw?Qlh"[U 廱A♪\8 ^!F5*D]Iv}uBGg։7x,^#jOqDLwD`Y1!-.n:o:&@P蚺Hq?"Dp@᭷ m{U*X1e|;WSeaDi X)I ({=Mm=a}Ls2 *&DBl:9b:&ݮGUzl&=Q=Pj>(r'pϑQT%RoZqc}|Br4SB`, xBiDxFZwC)k~A,6DYyxkPy(0f#bffxc:, /)V^ݕ±H׋ vkG|'Et6=> ޣB,0d.ĖXP,:3;d! ֣ukˇluGmѽ~v _^֩F >ݶ!a$2H1>&f{$*BLs7 9K7R3ڦYopvv掴n*bZZ$;%gήZ;P@e2rCߙb/~t&XpW44 gE:߿_s % 1fj 5mgI%{aK75l ϭ IDATM49iwG&bբ-X0^ tnc#"^D?sZM =H+kn ߙ@!06%(TG1w  Xn66d,Pc)aO|r~_! D6ː+Vaߤt>^P1B|r&!DFG12q͊DV*?K$7'"Y**|5$u úO =AW( /X#RVƊ1cB;z—I1m&TSUa!IOcDEnu[e`H41e( H ,PL uP)Ev-z3E@YsU>^8sƈ Cf G)siBŶynu&o~#Ywk.SQa29al@9H{霓VfJ{bF}*|)0Eep׹ܼxl%O!۳# 5|`2g )7@=Q{~v~B OmIs)S0!lO 3&7['C*?%, XQ8!fsA +rs!MuhnwfEٙhf#>]RmA_ETT&iltJ}Ӿ`mO1v~V4ɍr Z 7:vY&h $jZLMZ>S]9@=_m?vOtNH!IncM¨۵o%U]U{R-~9m户-SFwHKf1X$X s;96&[+S-vo`=cLZlKO﵀b57EڨT?޼NK&Aeaԣo{k~9pE(]LZk46~1[I }lD3?`3Zfw-$M(h2\U:t0]6KLDgxYĺvlg\"|>bRP1}lۉԵT/9_DM;U݂>Wx]a1M1[݁ PS>c]fC@h .Hku;Pmǧ +d+Z= Mѯm"h.2xs0N`}iԜ/ψd{!BxǶeܸDw5p:I5J~+NY_)@0: $ /0D"C"rߤsz Ϛ&5+45){01ȲlDe0qaj yCYid93W* lZۼ̕0eK.ù!3swe5D6pn;?h+lJ1@ &aPؘ}7} :[\<(^?Aӓ(˧)m @4e"zDT!0gC<VŃՆ4rK ?'ߤtxM"lߓMa@]Yw`T*Xu偭N"^ (6֝~_Lo>4_#c29us|\pY 1p`0#ݲ =2xc^sǎv9_ _IEvo{MHe ta.}\QVRMZ*`:EJIXSxFLi*Ș)Ss<-ӟ-Ob25wnb> 0^l@p*p ܖXFs_*pL]/_M~+`JDQ>r?+'Pɒ2.;09FʿsZ).r%/Ƅ2B>Ձw9yX4̎Od9nh%3v1f@ɷ;NA6x&)ː`9)_/"kK'sǀMm3jV[XOHѩ~{vd&~S #Kduwϕ2-Kn"bXMƀ/hpC 1C <079̏6,:1Ř/VTI]VU/J E( FQ h,H*Br?fB=5Cq9% pS#}KL2'Gdzc=NPٰXY" n]fd< %d U7X,dK 0Qs1i }ل*a|ז܊))D)逦;( ,+Z]_H ŨGx)3@ñ EX/XHr.NrDx1vkb!+ n]_ 9~Dx > k,v&ڷ{6{g^_@ot,g80?%~+:킿5,?=ZK%`bUwU'Đ1uyPk)P⹔`h%z;[Qxnh2?Bf GԚ}&]7|_oLZEx׍{E7čP\62 Nq1(ԟUx~9CP N"rC @N^,Osk[JJd+X:sxdžPHnXG^B>`X8vSD] eKȍ"Qϲv^zTbs2[BlXx 7Dpô>c4LGdig ܂OPЫFcwn9~9~&D_ֳ:BߵkmMIS2-c96CBR0Ba2pxa@xrAzNT}n>23]ZY;8ޖHcd28kѥ^'U Koq,L=v=w)g(+ ޤ2ִte 92x ݋<xʽCfoI4/Cөaڷ ; e^qQ@ůM"pۍbK(`bdGssmvtiJKMDF+Dm7j/1!qaƓ0Q 4h [ <uG. E0!5ig|2|C2|~9nQ#2> EDL,~YAqK)IБ&Ŗ?͵[)P9ρQ+D@諚2"|6$R)jMm}pZ{ZU Jyudώo<'9Vhim8 Y0X:~m](bX;$8gb&k{j BV„v &+a,Y_%0vv 'dp‘1J̎(X>M^6xOfkl49nPP!e kv^(Ryj-J|,>e'x@|2&{&Ax0_3*\vLxڽB{ 37p7Qb s|=E^_/dr_Ԣq GS n`X[uAoO/8f ;4BW|߬-p/8&8@t-lnV:Y(*cũŜ(ƃ49x>P/ń&\B2ls6n?ܽ4 ,Q @CzgА96Ýs#Eױ.}H@l%`kL`@0]҈@{#!t ;%I`2Snvg̽xʧstAWzMlyG.42#bDgEt5Ӆo| /'ӴPLy2Y y msu.H|4QS3PPH, \++Eެgnc AjכN^}-iؓw3R? ĖxM!!%z~)&{K8'6*Z*ŁR[)SӿFAPe34/eƘQ +}B53BbkmWŐ|NIq".aثF[X4` 1)^ 4pa#~?kW+=Ft F)`dwYZ 'PrKej b8P h/A虊届fSn6i5|u" B76]xwᏻv⊼/$zH (n%;mjvNaK&u[*^jD̦1oKQ7[Y{&d7c\&{ӽ17 WH{ Baᙜmyo2O-eF2̶JܙE%/4K?>ubX@M!m+):.|į^߰X-v?+HM~*VxQx[M*@V*~mrk끯Lﮜ>t?K$byx Ql)y~S3KҔ%D,ed mmmϧu,nGMXT̘0) ǽaM݆ ǥٴI_Pm]n,_f2UUS/tf4wuɁ ;\nR̔Z="NG6)`[HH1MՎت5y1'2ftN0_,~bR=aԸA.簋jd;ϑTxȷ9=4bRH[uImZumXd?Y[4;ŕMt cVUx0W+)a0ē(S_\};f+ z&s~[eQc?ӅFbրZAn8 +҆0MOI{uMo nwyh.C\o#g2_4q~Tܨ;gF.- jŐ}ŪnC=5c (nug[DWWw;? >;Ύo_/w%NY* 5@ 206Hw~1 jX@p!m{{\`퀆xܱӀ \2 2A6[.\w!Qk=Z(e(.S+9RY)K͔MO@]|W 9x ŠestLg;_eܵNsr|Sfc;nsF odlPJ@-w6EfvCc]SdDVY=t2MK]?w6֒k)N6B"z U}) È 2uB`qI:WPskʊ)Cd@ym1N&Z/A(˧lS̲v X 1` c^1aݾ KnC vjRe,\w1~oJO)Ӭƴh(LXL/Ć6ih/$eNnx @%Xʲ9u$Lk MfQ !ksk̢va18(S\\xM^ʌ?WRҙ=%̕bVmN*'~쌗?*=ߠiz– E\6?N`!bRr1E\N`CLb @Mm>(p܀iia73+e<(:rulYc[YylHqlaw=LOB?25kKEz) 1㘯4p1"Ř~90& d@o-풜OujuVogF;u[?WC)~Wb6|,L.]ɠ/S~YYzY2"*@D.Y@gy>CAfčv Y<1n[-^_x\^9nĖ'\(:n1l,H.@t~~<Ϩ)\'*@6SiA|-MK{^z69L1< ^y~:ڱn7 ;'RaʔN# zGluEn#I(oLB(rV2%R*!X?JHՎ,+V,Sԕ;&ph>noWEʋӦ^]f:AdNYn|^%j 6)q?mXN훰rwfbJ.cYL{ f$Fe ϱϜa"wr3ufl`7ҬR-ϥnd$39dmF /!sth:.Ro*S'!y SDgě!W]ܺR!KĶ݃ O@~?(/VՌSgES,b- L ,*3RCE Z,\K,)3gygd s@"!+LSKݬ"h;=c*uZ7Rt=Z 5HXTxT>c\5 IDATzwmBmJr S4`PZ-مAєѤy}@9)LOb3xs\v's+ϺsUmˀx#vacT0IN@Yw3u2y;R]'b2  QFd9:Q&mAbnk7a]^45VY p Kbϫto vVdDe~VJݴwR3 ULup:s]QU,z;R~+71C~  H5b!(l0-̦5e'PSM `,1 Mm VD{RΕX#uz߬V>QaRUzOAe嫱2-MfFt.k9Z z )8,{Ħh(}8.\"7oʉtoq:z<u=kb~z6&>FbBwfEg͔G5Q?v,6"f!<^NW Ь^"B=zA%`\W_ۅg&֝YSeKe\ݚOb`@!ƖG,ʕHž:Z(1&Cx߾>$|$>gX$R@b&2<cHX%Qg>)zШ2q2ؖThcwN\`]6S OhtѬ;3p ߧ%Վ>p1beS(d0wmP B˳t )_`7џ@7|!⤇$| TXͨEH跆 ڈYKkfb -N;CQ11w@tRnB1J=^ɵgRH3eC$T=f)GX9geLWUXk2崻23mA H "CD$oWlfRrY)RѦ9RlW!_bR1: (WS+ΰ_Ea^Џ c̐mA@3]rSꀺ ᦾ1?ŀ,^1Q'~MV.O<\mdV JQpF 0U' m%:V&ۤ?Vf@qVװ:_:TH?ʦfl, zb~y#W H#OjbT f@8dj6x?NK\UKr ms9.ioPl{&(-|0d[d~<ҠX9b 5w MS<`K@'@|3pmۼ.6][)߱%yxf#q^\pǐ*\x=*~K;nKi}Ʋ`Ps֐J!RϪڴԹwqw v/k^)} Cv|죸`@k)a[zXe]P[x&NQ=k3.ڴ+$6**ke0.q .}LJv3lk\5ut|ݶ(jvg<p׭F@ѵZ4zȽ4|)xfK_A !~SyKl۠_`C{1{~|~;?~³}T}LljB:{ M `;Xvwϻ~lU߹Pխu]cNی \o~(9\MmX).4p)jg˱'|^nj t@ktn]b {ymQvG^wKwVu3TVO\>'hqK>6{܁Ļ-3jNПpw}Y[3j͕2Z(Pd^E`E,Xq+5hIHS]`>g;R.pRf,[Z{,+L}GO 9鷐FDtL0aN88Ɓƻ+o꠵nsXL}KbK]*p]`;]tacJNql9!wo<q]|T{3C/Gt@QrWtqztnȬ̕g>R uց^:.!m(ּT{ɪz]ŸN\SM8M{Y/~hg* 0Ѧg{Jѥm4Cee؎^)C.,14V Ķ;T+Rp)Mc[)  G8VVa{ ?@J̕si2O eeN?)!O(t ŞsYt^ߨ@WjTG=VΔv'~).`Kf:,a;cru]B9oėI@1 `NJݎX\p1S9YawL?^/yv'6r83l>9S|>]RU2uv|w޸ccʧcCb(`ymxǖ{]c*'X #9QHN::FUJCL ,d=kt^!vCLlZ(q5h<N+=[p٬ϺZug}X8YtxWVC3ՠbϧˌ)E9Q JǢKzLii:3rI.{)||nStB?oT/FP'SM E?=RytKzwb l9/w>Qwߴm=,v6s|{Pj1TZZtdu>۬'m p` c?cw>2s{-&hp=%*;p1VF2>y}"mģ)YVVȀpb2'Lj(1k342 Dspw%d,Sў G|ic:nL< 4 76`OHtmR,'|C ׏</؛C IdԤ=2ry1救'#D1x?n(F 64H1s 004V8RCjV܇YaD-ڇn)F),zXL\"}LQ.8]G5s| 6H'cLYG(֘1x 1dzX8CL+!3ZLi2"RCF;=bp 4X,);I(%dЀ5o^HS@/6{{Xr_ƻ b7`1 22!! ^pP8bP d( h G$4.KOXlz",2}L&P~L}X3%WKlyB&p/Ϥ{Eؐ/}Tf 0\<=!H'z"C> >]zDJROe!_.>~VI*F X2دGCG1δ_cbe:S$,RK|a#e~Hƒb8*xX1h_S8&0`?=\=ПHcүRUC+4`F#`0cU۠K \ߌRz:Y`.c=r!n()_dZ|dIڧl{6觐%s}>RAsׅNF<^({2wmt1H `\f[ZnI x4@8>uxB3#RP @Cor> bcRB< 0R(n n2(3Od `DhNcs 32VKU>FJ"1L1 N{dSL0^L@c.,$CDddyNܠx E$/&^P;prD@ T Sх|.DjYh">Ta9abb1)SvQ%##@tf73XĜ3(eynLfO/6|I7\ ( b$}Lb"¯r^Ab7\fɞ$X2XU2UE`֧y&$"nDScSi'!y`; "Q" sJ&=&m]U-#-r81B z·xCP, wcZX+E˜kY^ g*/ 7v lIl&lHdjǔ2eg^c`3lkO$1ƈ-F^~; 'M1,kTnBZqql$"eKʊoSVlK'l`S,:FLyrxS1eB K1C ygN3 ZW/K!*DνU `}V +4IȘ5?']Ao6\"%T`X9|ҁKN*1*' ,d'OG>_%_l+H d!q{.36"y=d?,k!]> Kx9@=h=&RDI?!boCd2*|vt__igO^&41m1=Ƙkׅ#"`mfѷ$1%?4m sdlxv({e_3>c|vC\`7!83^'^_gO5ws^BH|sX\os?km+gM[.zy~ΤI_* . }Cci_Cb(ď, 41=z&G.Vw)-/˲ u >@|p|2Źߔe]/_U)} YN~ E_.=Nςb,z˲ Y!ڼ .r P,OD6@n131IGM6Md~.O \29Sfd(97o?1>ɨ1dv&7&GOlz+DWH9a6uFy!z|ŘGXe(><υ@_ь&>xbozB~a DN@}5(‒x9F|lzξf@X1;I6ͯgND@[öADuv|y¶wRhEQ 4iЅ@B@Mʐ1^mfX L軔*lO:?XD< cƔ6=6jvQ$ɳ/\?-+& -175STARc'd(6|cz|:폅\s(dK39߅BU=x`ʔ }0bۦQwd*LE kk .,9sN5B,:Pi`K 3?0W?]iLuIcŵc:ɣ1w=7B:ffvl/D%;zU&5#Ed7N1N7~[bY)>B1s_/|jD%_,/\~e5B CJg*CGrWQ'S~]*T`s* *|x#+ OOʋhN߁ԫ ieY|>߰ofjQ%頺xvo.ҏ7gWZsPҘL' DDS/_;~LwtP}{=Ѕ|9r GGGffL&;> 1b;"xz_bGm~갂[ 0fz"S{dPPxalloˇ@<&I"n.1S9>yMdm(vtڴt~l6|>|>ϙti/d/t׈ 0a Tr3Ȁ!JTVXLGę BϤi5?D>[ҔeL"тB;p(jD۹]3[?=%cMkS)lΧ{R-zO)6s~6+JifL,3`B8aLBھB"@XvHۨ0J\p a!p Cs]KN/1 )c=b1~[H3 f+'Gϼ7@o"(/Py R^K1y|c@+ڗ_pSkq]g-Y+LJ:&<Xqwx[TD aB>ӥϚSz15 IDATsbx!M%oL j!ȯߚ=0Ehs[sڵk899Љ*9s i?k-ZP j+OYu d7q5;tA0M^+b2\Vܚ:] FzY7;IoK*nbVD9x LZ6DzmKsSʊ[NP%w9׮]QOPq6)z!bX|ze1CF*s`H NW( LX)Lo(f|6ۯb} iK4ƈ1Rb;I 2khz#e6\֨N/>Pԭ-& prrLvXku`7/Ռ >]3Ij\K͜<}s2ڝ3:;p܀K%XAP:.eze-(>IRց̖PQulL3 7 xc[QĤL5ig_'^.̴M; ".6X1V1i9pUUmn|fTeqaL05aQBr)y}E2]!#dpDj\D(Oo-iiLc,6I$ܗN=@H3#@;(YGLO|s?ዚ؄ w[)Nw>玎6>|>ߘ· @WWfe n5I>ф6ìn< !%Y]/6 [#h!v|f.s!qB'^cgٵWM^ 6c:6oZeIcW*#YĮvqJ b% a KX">B%^*&c1C' H2Aɐq3!|_ϼZ0`F/s{%KB92J/SVr/VfLvݮe6z/?> ddL8h/D:,Vj8Z6u?\8t0WDh?WDgdؘ$;? [}woyc6R$=:+[b'/mBr?&;-~E&W:% UK `/Z$h crIQWb&;sN"2Wiv];_A)|/TB&j?/TG1m:khoŔҁ, 4-`k(Mo&tkx> dxe=?/jrV0e{^P?ǮINXϜc˾>`R\.(^?Zdvxe;cYS93%qĊ*F)æS_'W= rgwpKT φ6alçA4 |ˍզPrۑ^_n]y ksDYW].Bw~ xltt ind(wl=iE<;D}ԦM1":|/5g!NU90q BMgޗ?].7-^\C撇:owph&\XXlRܗ-0Zd7cg {cy,qS[)4Y*c`2i`1x旭w`z!d3 {^/ݔ H9DDvHcϪb"܀,TiPDAlI,Z1o 0y0Ut{l*ndoٵ<cIS5{;2⹾ݫe+bS@7S_~3 b Z-πfa2 L#Ь9ǃޖr>{-(%.ec ђ+9?kU z KF54\=%;!׭F>J@C-`/P| W 0GFUz]~n>Ce&G nq/^śM3 3~w(/V2uRX)ϛM~W٪t4L*E$ŷXZ!\ߚj>iy4ŵ|/'ZyNSqfO} \sû bZy7ǻAc- :M=llVj}`"?w%MJ)A\̊Nb5Dp?E;óPL5,$.XOp)SeDǙ`'1Ez:0Hp-zvUl^*۬sxZAVdw=\W;7ʜPscq<\Kqb-=$XvYc &ALu7dXmAylp "k eĊ4(#0Őt|׀+z}(#h@2|tɦӎ 2?U[X jJ ~LjS]Q, exm'1p~hfxL=&Y+Ϳ$!%xijb3t$/v ..h&sp4oMyfv_9(po/:LSzkpfp!ױd}rqT5E,Tba gp8nGdF[LfՄ䋺1k95Z3yz6Dä/lefέfĆӚnjG]5LPěQhYB=9iIcW@0ӘX=͌zx]{Proݷ)m%A9+sSc/ەpX"FyMDq6NDF kV 8rCMAB15yq H)"z\u;ضVJ N \1!B3^e5'@ rU r%1w䇦ytFP%2YtZYuS}t֫/z%"fRS&0})5^1WoH8oDN?<U~;A)@)uMu:v,-l0n+q8*PSOxx Q[]^c;>g6}>. \f[Ki=f?cl\_/%䉕 lST#lbV/U-5p3g m 9Y) }n8ufQפɟXL5K傀0\mK7rF{|4>c <>@?FM2<9c<M&*3f-..m~l} Ô1F# Hw%Kv'5.ڥG T s{A-Y WsYS.77S@RS l9Q3~!C d5 9X+0.>CX?1n"8a 7K#8䦩:"!4Ÿ)Q%j|Uz:^ǮCf؁JLCƵ&*+xdbi+ƃ+s44L12h"'DWpYD%3; :']Xlj33="fNjaKfͬ(THYΘlQl좥@Rؾ+BO*Lx&6G|m׻|x-~>w- CR-gUR)?FD/YĚu˥Uғ(GP^EJOd4Ж}[,9_7-ذ Sx9.$]: Kټ̃ q<Fמ/9&iPϻf!y=N6UgI/c8 a7G p` ^C.+ԧZgSDc2$G+l0ЌG/jItz` >r _,$_24 T@g9Swr; } j),3sj#tc4X\FC``5<'1n〉Z\G:J^zhI_eV Z) wUlv\I #`ة)mHSzɬY@笎A6j5` IDAT*ߡt@ ECYG*&-s )<%R[ -PNǛj6cm>"-#AeDq3Er,Y@c},*ѫRU"MvS\>wqɘ3[ 3>Ok%PEg,{a%#{`^K)S'A$=E(o z6ce/N|ĚlYa=i`*ϛSs 3Lj| Λ6tɋtNMN=Zl6@`݊o^Sd;dQg,EmMd.ރ TTs@KrR/Us~kL3=CEnT1Ptf&aHlfbwOub^NsmJs udP=."J8{}':v(_6u&ଗ2uX"t*/Y] b99!rXr9!K8 5Z:& Ѓzΐ ۅK_Iڟb s(w4:=fZa#Gr·tUX#WzKucշ VBt $U"\Hg2SV; C#&iSMREn$GÎbBT4fH nK4_QMzrc; ]w[| KG'׷Ѐt̓Jg;4 >Iy%FUɊ`l=@]gk{R Jd_4,RF ˥Os=D9mJ)Oy= lcz YD]ɸxD*|q0 `*_VSw˦5&[23i[M/ke#TF3eZEu>!`_l7 &jm\{Q,Ơɻ49X!\Nuţy̡EŞit̷.[ދӛ_qKꅣ. oH12XnJӚ6a:mX|Xȕ)n4nFV#faFIEƔi*L0=U(^yQظ)1"9a9\7 YRdלVPTLPwkg*Z7}d8(lsx~äEwwf< ӝNW)8c]F197?"xAatKMRk~t(ٙm{" 1@ehpΌ30N˲No4舺kâ]]ǩz%v ʤvU{QE<X58 8gdlᮌXEX9TZ0bM 0VaHxNK&RxϘXع%{:AzucPǏ;Mǭ>Z5 :x r㔧[إA Ve|ۯE|dŠ=n5ub$lN7p#]EKYƹes.hp͙祿}k%73<* 7`VhSJkZdl:CXxw[8؆"s!u-%t>B6Y@/BkqJ0,@B|nŋFQN1VgN9eWd(&)t?iHO+'g'2MIgqB3%">mͤZaӅZpgx7LW<7!"Fu:cv8ZԲD{ĒsHғ178z/yPڌl #UUbJ%YpOu*RAx/JŵSy3x0r[;/,k yA3<8A%a]۾I-3mڿӫɈWpBլNRSR4Kc1R9>0[7SJueM__)%K˂KlPԛ]"׈~!%ZbdKDHWo46{q(G]ޒӱ|c |MVdXsx]4^JkZ$tyl1 #U!Y˜v0Ts]>^E `g@J{t1wSs6aƳ \NQ"DLj*O ĞHX* g%&{%`M2r9UK^&CP-r6s;\g_]3WU†.L>"aS2[x@f}\ΔΧ9oXO̚'Mܦcb<;\AM+xnTUގ!E% m;=u`]eux#0www{ϗXs;#aVإ˘f3cݥI$N^:`߬o)pTH5ޣmۍ۔с*<O_^=%#f/$d#nxSvolf2}-{=o䚚RrCvsL!)5yzp%86{/')Tu{b:O[ݨo\U8ٌ{sTmjԮc%kYy1K$Ih3oJaހ̗_ #(cIS\]]ZAL]}cN&_g5Ja K0~mVo 7msMW kUk( =jNnjXxKWs<_T:wS|;жm@<w) EonxnHnk2h*1)SkRS |jQσ =5vɘnZ 1ü BJx/퉵ThgJ-u\ު7 _޿$DƂf ѷV/FCk0^F,F%ўx-\(Nwd_ɝc6 14jVInʭ7I9I(WLw;eg#ZnNH,W5 Y6+GDvJX]/tExw]*.0T;WSfQ!^ |)~EݴRu]&7aha~ʄ).Z9 ԦAQu bqm]F7J $SfYȎ:MR0&$&V)B@,A̗_/swU5`/%1o }h (Amo ZwQ ٓ7S9xœ̈!Za){:DRrD{}x,\ +g}_ (t:LA'ibJ'@ A-g׶o5Vs4;+҇jbڶz]t -0^Too'/P?jө""ZvG0z*<PGjycv/篯][:[ DJwNY/DDz2}Va'qN T6lp1O'ivfGC6^px2=ng`(6 x?R6 CXZSe]f %Tjݨ&_  7&{nalXH^?k35>sQ x|]l, d fR!9TJWHDK [%)sZ*j. c*m54ʯEZ,TBU/ïo8Au0CApOsVj>drJ) ߺV/-Gc3?~hTX\3r#5G"s!|6t=N}:# ܃׮aKT 6Qzltة|bU } # H2 {`\o%Dk{l|M!DH9$eYugw \!W OHyvksbƜϐ}H,& \%{sj)"4]v׬|53hҘ7O o?v+niwR.YDdد_ +[Ȯ_p)a!sO-^*5̑*֨s{ ͭO`C3;8[Iw Vo Ӗ/-b< PC=2W e‚q;^N\ve`sje?C xMä_3Tbė~voCRRX<',j΄ ks`JLĬtX#}_`7k8zWsᑱ|mlVO.k)!.ɖ>Dx׃ ]):: ,Ev R6ղ7}rK%OM}-=ZA rﭸ=%Iu5%d(z&XBwh~t2T(Jxi7J{) 0ϓݨD0/= 9fS+s}<ŸBu7e6lH "-v8M i*zn}g)_p){RELoz/lSEcpHB\,ZkV.h% o%&nd3vFd6mt?M;bV|Em0 RK e4cȺY|ŋE2xOQt:y+f̈+dlGuTx,h6&6I .;]:AhKRITzn}CoTgB 7 tRBzj2M4G֎3& >2 k![u,Tf< ߣ<`q7H5sw) 0pBG 9;S)BՅMOTqnxշrBxdo Y`%F=[.2',\3CB@Ūug2=D1P%+-$߻~.?SQ=;nucf~ 8vw;m۬E {à&k~?5uWDyt,5x3D@\/(;2H6o)$Bc.7~xvmۖlɮyC~e ÚظZ>#}(&,ɨi&!)@Po鎔[.sۮ1f Uu#dK,) {a Bw,۸҅eP#^Zd'tHA a$tPԝ p۷[wT/eُN E|vm3 |p&~_XNz Ilx%!!4P|t&}mIl[7TTݬmrN_w!/+Ҥ`J6sHƍb2yYrD٦~ǭknZZ+7%-s17-wO `N-m)5T3$. kв  zjH$|MDF+x8HX8Dh1ω [--\JmdLd-۹5yr]>tW[o/'I?WUܼ.5يTYd+$-XNKY3#H*aB@ukAz&Lt'3n -+bNMLIҕd evsy"tIJh||+Eƴ&,^NuyR͈/Xɲ<% ̉y]ZYuْhM=8%Uvx[ʈ&;!0xT4xRl2[Y03V\s-~YhReN.ЍSI T_]sҹ,x=`;kbVnG\&K6 j7Tf@X> ;T@+=fF\Vuoz}Z+%A]8H-(ό30dr;ށPEDUғ <\ Mo)V2Bp_(\TJqA&4ŠAX :&AIJ pdj1ypK͒R֔.'wa(5SInm5~Voqs\NH:=@ '`,1$@i7i?`k1V8TnQYs:jv2%0f=A5ISZ3ˮ{p[4k!T=h-Kfv+[y_ûjOhSHIeHVoT%nJEρbGS .J|+(=f8 +.,L õf6Vڸ'?9yy`~DV$֐9|o%^U&E%?1Fk"p3~ Qgyg'D85 *O_Y o-wkg`=03c:|!>R,)u~NJs0kA-n}Vl: MiBG",)xB*=?@GI$ag3l;CkDV[/w`vxB`:Kb+K;#[Xka1K)4j<쀆=:G()ӷz_j w- 0%׹]BFr[X?[iPb]U\BلҝSAuB^rt7CJ%^۩zþ.gY.Ԗ=x%4Tݢa,Ll!-~'.c]SqZ t6 ҥUEnح(As+B&5xrByk+%^IT c$L Y=F5}8&"l|>3Q?`w,ô~1)PT:98In%`gky xB@͋bȗs!{[bcE6~TX' x柩*iY"/d(WgX՞parSUlGl R2&]t?ȔKVrB ݟ,_-aۮ}[Hq)ٰv&r T> WOCSmҪ>zvI,6d윌Bݎ1fެ:_lJ@sUsO[ZNI=NTvٷ5ooy=MNm!h-'WFXcx@DQ։ \"e@]o6M)֯|u2 |1)ȉJyRVnMS9{:\s^1%83 r_Q&FKF4j~(^ `)qV(Q6DV10&rf ۸Ys۬V3UDDgyWR_ 1Y@'84°7د6$d *k0Nn˸}XK ȷ|jbXB\εk Gyq[Up@ʯOjLEl2,7&O*)Ml£DfDo<}D4j`{SEQFl\MtKad# +,R8>бs#=mH/ fx t1A.s<ti8`fn >-Ȑ1A=2]\ Izq"sAN)+[l*|i%Oص 3Ũ"וT(zeo-3%AH#ߺ?>,WrRB*yZ2J Ŷ2}Y#^/sϱbv_9c-U{kk Ę(kKioX@Ga3ɾyo;\ĕ.Ll>S\ pi^7:hܻ:x ";Z,EӺdۮcslSVe=N,R1{wso4;: pƫs|rF2-'ιhKisĭakk`R$N"q`WZ 2k1쩲6%, qU룍UL 8-2z @g4;4;0;dmbV0&S@ -_ldRNy%kaȖB.X6TS^=>4}TKk`bԤuI"4ƒ:q$挻#[nK^]%<I%-UFL'I ޽nI.7Sƥb)瑟b{'3'ze|KãXrLzB{Pc[gNBSd39N8 ٷVknW>Z0@#uv3_k6-oUՒ$JX XdV)x|Gx'7q%EvDH}50n0,IVit w |sʾ]Mx7S yo`!\/te^w  3O B|RFHZ0GV7cb^XXAL8] \Nw +kc 06EKdg0!> d -f7 @r L[ijxy&R9kĵ[/j1aU >ˆm~%/L Fr-eU[OXI,5b_Mkj̉<v%6 An'\؀@F=fa=g/wx\)?KY7(7ONP3aN&b} "|9eHma]Hbf-,kA4'Js?#?RR(<5b{|o"?"6EPhpj AZKV.! 繰hxPVV5>N@5⣑(栅V3?|yK1%uX7mdK hcO7rpo!mL‚s-C{Ńр2eW/˜09r"oG_|)a6~H`Y8b~,cM)LxNp/*u+`Ub>Wd&bV, @qOiodX8t ҃2l:ȵo"%t 买t3ЛtcrddU.lU g=al>.FBLD޹c?zCbfc ̜xl'f́P)?[ FS*r1Oņ`8 'HO R+%xʐL -}ƗrS9'3)ᦦYNĬl$*sF}12+ L+~ΰV҅=9v%UJϣ<2q^-rmfbc,q25(Q`P1kT]8DQ*+0iy!@wض{L5tkI^b+X7]1L19RL嗦LwXLm}`ɀt;Ԕ81X!;ᄚn炽\kb$-s'0o{L~ծh3:k [ $ckU P)lJΠ c +z By)N'E{ K#ɻ\:] ;-1n';cnxݛv̌$A ˹U1+2ۈpecTbb6gPfVG h2$0oJH;^HwyW|_ᬰ-='?)O|,)ŋ-RE0G +d80mDRl假5H_8H |K()IG]FJ Y,ױ-.8-O2rċXxPv[Vy ]e/8^'Fxy|OpKeq["TPϳ"me}ރ}! ݧ3cIP2sEHʅ .jLP5Cs}GbeOlfJ]Q)Рb@Ak}\.@f[ ) 7.xS,a̪ ^ZdKal/AD'凘%]NSR*17+Pw'Hٖ +)Dʾ)AR`%Hi!ăaE:?,{-UE#lEΙ-; ˙0:Ӎdca x`*kzn%t*#e,w~RˇQƎ,(F@RCՌݚt`@*d倽6BNrR '`bKm֊d s,g=E`1o E{`R.i䇇H4eY6;\c%.iW,|-<ȑq2KV Ȯ_g<\!ײZsџǩԙUAo*I# 3Xdۈ;kd 9HC#+X=}..AȰavy972-2bM${2rG.Б(];P=]6dTccy,Kb:еE%!>D, 0ă:B=9)Ĥ lmraoX, U QkV n}n` IL*?VQ: rEID3\}'sXff ty X̪bMg r B) hW U^w[p}o@J =ðş$jcIʪb6޺@*eۻL3Ä R/aMB7l`]R("Q Jaҥ`YkҢ5Zb8J'J*[ON"x 8¶a[_9ư_']*aIe3C9X3~aɓ .s(UC2$<[l+TJv.Eob$e0:}d)něH$Xɥ w%[,Z_}C Zp +(b`CWC.bn]o,_ZZҳxe:Hi& Ub;W % @ r87ٲ1c1w u[& fxSaϟ pV}lXoƅuFŒDYwjF FJc$Y9mcFnpE ö>A|@X"8Tv)a*[!n A[unŵrj,xӯ.-LX`$,Z`BC eyax +Js C=1A8axq"< 2µWw[ V@M  ~M6Obk"% ɴs 8frl%~b#UZP4ym($Avȹ}LxmI: +N_6.;,]I-uqb>ߵrR0@XNJ!N" gWi{v+ U't9xa 'bna8o E\aX;BkK%i_`zʖF*Rȶ3E\K;M8K妆p^D<4zs/\;ka%Kaɼ>bBX?ne``ev\X@n@,R C3k`5wIw,IXHb5u-XQ >x $gKXaW0HlRFL6SDZJR %2xaes a$Y# Y^cؿPjWP!3ݱ8B#EyY}ⵕru%ͼ?Ёh ȝd sG0l1Xc|vH}\bvx6U#ra=L`8+wroX\`(9T{ ,*+lIȵ m ,T#\ᅈC3)A%ˆ>q3 )0J6TZDV Z# k(]<6kaI-@Ml{=[51F9Bqb}sWcH[A8 SZ# ؜6^rQEt/wtoOh ùc?c?c?c?c?c?B))/*&o"]V4u5y$/?C6'ϑ}cOӋU>^49p]wуT>'n8%@7R =Ҕ5Y˒ӄ4b½(ɋqXz8Xǜ+zEb!c=>Pv8c1+P7x7 ,2e veeӣ],~+;k=(ARQS)@MR\A̞ؑ\eá &.lq#y[˞c~5t T+(Hul@X(XK.=pf"VDDLY5>ʸS`OY+hiuGn/Y2 ,Rw3%Ir#S-y~='%ȋ(MǑHm(+Nw) ^-o&Vl*lZSc4^´DD ][xxgﱒ)kt 7Jd 2.fHY-"1 2/ ښDKxC< 僸^5 IDAT()94%6ORҋ(׍'Ʒ<]L>YXORkI#Bz`r#)𔀩SrIձs s}#9D,' L5#rJ;,hD5VʽOLpqsD|8>c)cHW= .Cm!?g}2&8XbHx4W~XƔ@׏C} SY@zHΑ@Hel`mJL xV$_w'?Nה5AP1B$˥@C•~hs r_SǦp!b;Vq=nYF\wkG ٩qc xHb|iԦI KJ)D$.^TY;>],rT9`W`S"ZR)` Y[Ka"y? PN?.'=DFsjL5ؔ OrdfP;+1r$2D&fOkM}`\1s[÷;O`6U/9aߩry⽇2MOSL"n3x/}=w"` 1L5; 'AxgO|3Y7 jh 2-; իkmszNP`h@9Cĺ@s?l <5eGPma@ f~ oϐg<|{'s`0^'̚9MyD- ,@XJ`vYmu99vu*V]Ůb)YXRlYHz B$CD@%a ۑHJ%JŪbum={9Zss-ˎ/p77!bf Yb4 ?cx 2ΔRjI==^uYzM4;$샹;`3뇉wH _qzݙ"9!G,f@| 8 J U P1bB }/b[l5$գT"{^"j@˯#[>⼱ >Ù*c!n9gHgYH)i:zV/za6d(j¿ȼ(1)uBzuw^ cX`b*Ƹ~4 ݽcVo,i_JMkz2׿bv}zͭ'l-9]^3XLbRj =0L$6s#,Pˉv#s% ֲ f+%u>I,Ʌgoj%9 8fXignZ ~ NC8Hne  U^z~~ (~zu̝> u\! K5UEOsw;||IT)VUɴgp1S|?f7 XΡ[3ʋ_~"=oEu|_ՇU<@K)T.3)`1swV@ĥY't,\Z km$ҎUQ/?tn|0βyr#IX.kxZo8>D V@|㿨@bv3v۰om5h$8RZR EQ@kyk.yZœ=1K!1DMtYFe&F;} iRFݵR>QRbG>^sԯqvp΢>y[p,\2.= SNWH,sn͔ o,1f娜JV.# 2^bVU.,zK2Q!'C ROb{U=28 ,{lx12FIX l)([@c~ ].tCϝ>3*]x Xv)eWxg!Gx$W0D-zoR_d)`v`y A o& ʲ.˲Y\,+.z y1,^< >łYbU_Wo;Sv01X}oȕL1\MUa5ƥ}kܛ/,AgnF&ST٬d2ي$$Ȥ 2ҝ`YZpJg][.hL\?bѝo3&auɑ)1*I+1\ƜKR vfyc*ā] `o&9y 7:zKs-|b&gg[B+dJ?[,y=d4c1tA ()&WκN≯!ْj\ѱd?VGNb{ ` j__ҿ{t%V߅}xp6Z*0N;?”K1t91x1@n\⅗tYGRS"9Z[Dw;ycR~k|l΀2 fש๝=?@ywaVK߂=Ձ.&r{d6aX`{{{b|>߲|EWZzU5+2]hIcb/&ޏy~Vp%lbzȸlg ۸Jrrp7Ak`6.,1;y"%xxZ^dA][xX|Xp2(@ۮQ;6Q;0m9[Mߚq|o[kɷ,8H)(q `:8c ʓ|܆e䪘ޗcVN;jސSJ6Nd,!%$Hͮ=syz¿ @3.nkjޅ}p!x!A'$=Ќ1 X^,\DX. Db1%e #!XPDX84n‚qƬܘ^t3woÙ\{d-5x.nd&㨑zO'N>W=0 7g8S75c^Agz $yRU5B^cf->uI Iu۸ 9s&خ]IKpu⥵ Ø2#|Lƛ,v,0 ;{Ѷten'Tljb#` x2{'xzH}V 4SP ?}YSJd\ޕ'&c"Bv֠:9> :KOxq {UTws`l$`H +KjᄠKH[KHA1p>.VVR7m\ Uf_g[ rhSt˹"?1W33i^K;ć=_\y׉ԯ3xT'Q{\GAGD(˲K 9bTXJ5\ܪ5˛%]'b9ii(: 8ʱrIu _G@q(,x("["\5i=sWeujݟȲ~ݮPG"n*}޵$הNP߿^?Vp$^E"K <|eME,(x6#w 58p!81*jRKA~V+FJzasקl5%i`t˥2g.%V¾1̲uPAc9c)7JPZ08bĸ_KbT 8BE 3"6s D `Y 5Y^|m 2& xM[L?vWi`*\{بRTYd*-R≏UoBVwN* A-H>'6c^Z`k+g[s$@Ra_` GpoqMFT@^ Pyd(8Lq(91[`ipIJ@=sW&lEK.~lVW.[=Y.! ϥ =nC1Yt5T'WH{rw;kl]zx(kK^zһpenб%G8 & A;u=ph 0D80^%k8rD FHR?G$ p4pǡ{xv:e[ Ū)nXД;»z@7E_^DYMzz:p֠>99V\'K{P -zF]Ux`WZwBq%Ự:|w@#tO+SBvWV[a30-:S<%J:ptJ0MjGdR%g</;kH#kW "@7Q~ Dlx}uC`2[,]g/}zk|2xqe` 3Z8kd*'SRuʢق $D<A$,4p %I̙ fwASٙZ!=F@K~7a٥?0(/=u0p7@ 1fVkz_mb s.uyc/k`V)S~Ew/eK>:f2MC!tMhsm7\\ʀ%fwɲaHXxAaq|D!91In0cVDtEMoW/O]}"@.?@udx]8E"gzzvԿ;텃+ӣ^uYek|3"SW[5xg5nԮHap 9g`R!c.gbƉCjwQ&lv|'Edn>&x4mhlNc?F"o1&yLm"Y-2q]jȵK⅙08}OO .[:NFE"1NM2Mf=o~3H jK~96XJض(3 u= ]]P ǻaA]S=x-7Vi|^M0m '~wfYQ却u-s<FsQ|&D vvu ^uovޥ<{)(<[[\[k|MlG?gbi.@̽g82%M 19*߃},x+ -V{ם:rX˳Z],\j뚊rƗ,P +wfDxIOp{\ϴi5U=Y,2`N# v!PS;np 7[;e8.*?cŞb">eQSQbB}js,[F~ßp|A'K>I%AI Nysi9f\\0 IDAT@ 殬&'Ұ}J|XlH2X| %b<\]U6q9"+_b*`:Bn.'4唦9u"03XJGGv^i@ 3f3Y=YF1}NaxfޘtCDnWX#kvQg\MAĨ(J|]>sf5 FiYr'dʶ">A.߮ KN 1w0ׅ7L'޿ Jzzdeϩz`r7ٙ+LHg a(kb<iNU.BP&J؊E.7>ͨכ*m|&Tuk- X^yWw]E3 T.AzLX6݊E^gH \|= 6 2Dfg~z2MgN0ˈ9p{#Rj H&LApcȼa`[o^"A&]06 ~tX$M̋`f{نCC'GYSH>3mC_x8v׃Za#sPxtvp+x&8]L!("SP΂&ţh9 :[!OQ9;>`%9t"6;5j‰!$57޳WZNR6,N;8<Չ9gv)M11w7o0}?á)]+GT9q]4"v:3 .#‰RemYr5&sF"`vHMݏnڴOPTw2 F1߀=d"no,c,924'W@O?krV@lii1gucrlb]pq%&M@xFmA6s+M4Tq <[*!`c/Ԉ-acWGX"3H)*Oʼnbg&E,&!"Od49 V좿җ<Gpۘڶ!^9+m)@MmDwalYes7='g\SUbm#$\ؗvs<%j~&dV|* insx6ݖ6<-[Ms3$>` Ql0L=6li&&`A~S\n:{μ ұfT/9⌗8j:YE" 7kÍ(BBlrrk~^]8mk+0^c4CF.V c0 ylDܷ+)n3^e#‡OAoeHO&z )v/sʑF7M%J ep&a|=[n ^o$eX`=fpމlۈx-RB%r,5kJ"ϴ&CsTq61]0/lUH,ڱ{˳ilG{" >f^Y/MƛpviVxw2l ̸ɩչ+!%u9”}Էzr~%>]bߍgqPD,anȼ`"K32Vx@4NQ R dT Py?us?}<<)-'*9ފ9ݮEvq M$'[\LR"ƻ |&xtrEHK%D|R3RY^c E8k%æHG"I{FNIs7d֊vFF zAV8=2ǂ# w%D}@K(񂟙z TaqΤIR$`mXz!{(27aA=^n' 8ՏwڿSvmmk ƔEM1oJMXf6|/sOCA1FW+6%E\zJ3Hؔ rGC.h\l'Jt3yab9$\\')hIJ@|p1)vȂ^B[wp/Kdcn&lNoH;njp>{]\`GbPs5 %bYl`O7[^{l̽CSm1mHc `cF H}~#.243ZrK@ TlP jH~.KH]h.UV gCmRzVQ%jJ=w5 v)!rVR{Ak|\Ym۠Q,/6Hc.]n6 QtQ fDxJ|$Qen%#{?1v-J7#R>Sbʻ"  .cɤ@t_ ڶ_'%ys<=ii.o҆hp-=W iY:Zal\9Rք,k @,1AEKb9Ξ1b "Ϝ#Re@,I!S>ax3% h%J"π?dfƢPfhWnNkbw%D*<63w_\u > X니KJ1* (q> R벮`>xk#IjjeBv r~4وL&ސb/[18C.{Qx ѐUbS`k2S{5s[#4P.HY'ɮcsWsvm W`Xzqd"Rq" !PwgFpOZ1iT1uisWvNNޥʘžP<]ٛ?>cܠ|Cφ<αiGяcɧ=* ҙZPl2'/YN~:3p"ҍj'u%] Y\4qa+^b`ݨtc71p1<^;_/S怰M\rKK ^VH5,r1]8 p+9fX;%ƫ(Y+Dܧ0Gȗ3e\1c9xwIk7KX.%s +:ҦOp5 Ld=Svf)bKa HQCKR!Eb |PP ,;Wv‘hХHw&%yEb#45.G eCa;e4iA5wR_p)[,q`_.4l*Se&dA=`( rl0>1l.\$d y1:jv^^^2h['lLܿ >SmW`LtܜՓIQyT9>0.Bax,V+7Ny켅n Am% lN;` |BKE>ÌcvS֔ΰ "̽Dmp .)khtx[`d ⥈0 #6xqשfw1aOD uS&xԶ$3㎳ncH~մ=1wuḲrgKf|U36BkT?;j }()үmݞ2 T/*@~PtC11^ri-:yUw?8J&shr'}݋o[f.)h\8,%㽩8K6MTA$Ikx;]}6ɐ` UVoaS{ֳH,9DL6jR@b߅;ypYl0%꺆1&Tr?شѣE5dˬ8\jUw!{r^'O0%b7֯_vr5Nc@lb43vGPqVbZrl< . .nq$l X'ۮZ#;>TAjlJv[TV{x"-?=vv TsTqgB=z Sw/QJ~eT# j|Mȇ5mU nEB`r|>0z5nmm ,ج#]״ Cme^u&, nXmLCVs\k|t:9㥹m]#<;gvފ+imIe{? (]F/uㄅ e|6~436J v3kRӽ}RJSQ[NMłkzC4L>^!̈pۂ1w(( ťY#uc,JI'O쟽fLgXJ%qI %½\ svbb^0@|_P ͅ>VO\-i=}{$ e9cc|pNn`eP@ܦ7zE)KH ~J|A n:m[v/'2U2P-6-Z 'i `]F)7Y(KdAmGrTQ4LY!1h(3o rX0ih9%ܨL3^+4071ܯJJ >KA58uzOwhRaWLXkjx,ͤ'om#ɑRY %ْ08+ !K :C ;.VPYPTQJ6c&Q;(vĪSsLb9(0b`F>ס $b/^uc/s1ݮHiÌ7J .x?Я"w9.ϥڳ_q+UH7 A(}g'@6Y޳*D\~M!f[߻CL ]Fd ڻ>2YF]/cL1lZŊnOnffK L5ٛ~ UrrtxD|!&,w ǕI Z|߬W.7ۆ@'YKߥ]LV]6{!VV"Dh%rY1j`^+U r鄸O RJ |D-\W3 }ju~ȷ=%!v93r#A(۸.뽆9B3{G EP 6iD󗽑HvIQwR2}guW\C綪cMLHғؼg}3O|qY{WDX;x/t $B)qo S҃Jhx@*П OVTLfmfɓZn{)/a-+ Iެg& .˲% OxMך^q~Ϯ=g9.?U:(&@TAlfLp'cv -w]*vXP* \Ͳ"[+灶~{6o[1jMtBZOe&sӝL5-le9c[#:[8 d`H$#a"hXvrJX8D"vlj4 fWp/ZLyyK̤tBf&!J%,؉`: e)i>BC oŬXA K>  تB1]u > s;S.(ھ=o330i]-\Q 92HQ5Һ)Oa4k]UȔ036 =pfJ[} ɸd^J[ !}= wu |ɑp5% vOcqYC98g^-J{up֟P;KY gux`nt$$&k)S ^#g8Ǹfgv8%82fGbdg~g$X$KyF{"R6IvLbSc PPMUc!/e[׀TN ɻ@>(13 x-ހEh,&_M8 +6,Ԍڊ剆`Cl2l<3cݺlX"d5 O|Ju$GBz>^ xM!v"BiB\/l JIˣ$i= |!R -%_" q/9CONAC[,\I ukp~2 23齲R w1H2LUNi-%!^ تN )hhcT faF-!ɼ]PNXE Ta[pl#ƥs vx 'u<)s%\ZH 6pkS4?pubӑNד/SZW`I)Ѧ-(jg˗1*WQ,cw)Sn尕+OV[X;[=lpA* R@p"Cib0H7Sr9fr` ò"-ܱ17zjyRDS"MWE[1 T?BU*&qҲ&qb6oGȹmd! lɑ]NJp:bq^>ޛڒdakGdƪ7U]cL , 0lن  Ї lÇO0/lA0A&%Rd'6t߻9쌌s߫Nn{Ϙ'OX{=[s@(\zL⥧J34puzP RJ| ;=QԋuLʶa1?ܑk &b8P*o5w\%2HN$gOEZ uQ"#)AQIw>t!njˈÙ:=f՚3Dj2Drfb117B'Y>\k!1l} lWߊVirMRd왚6aN6x9As0'OD̥'I⋬=?z&(gp}vbJU=.T9+W gGYf1`*O2 S w?+7<҇=6M$B*b-wZ&*#uh$bƤP [f* a6@ݿM)_`[`s&C*K/dvA_^jyuLcRB ܱ13fn8e@}Mu&|}> 6<|M A}`x֨- ,v%-L?vz$\K}!:W؂骲g`\0±ւ,rm߇LY#f~ fٹ ZƯo0,sxXC;PZ j4'/pG,|CY {t`<i%B.ca&2` 5Unx&[@Cғ =fR}wc9&f7߹~8`XTȂHo6wC6boJ"0ZImq(v"DwO1Sb؞wo4U4PCtLi- Ƈf=鲧gC-ְ@K] U}l][=朸>%.+ .EPqFAt0w`q!^(c6`/\3I~$? ~ 6s36`[):SY16b}2;`~lo爟[5C@Քlr0OЎ$O;hlAc!26UBєA07ŗ+-gnZPk0MB:fƺת$gu=Fy`n @]cc0˞~$!`1! +:;6ƏUt YKKs7xm~h>pSx .u1K=6"v=8\ @8ælVwNw%+|yj6)6 G[TӔ7S2y 1:PLJJPcp \B lЖ,ol7+{ӇQ\~EuF¡.CB D#aF01}5P,bn-"h gavRr.dB/H>v$s(e1XbVRU ~#eA<2fJ93ԊCRbFl& ]ce7pJ#pV%ϙ.(NVYyZ:#xZ4ZwB4jOWjhbǎ0gc)"S %6<‚~T?@YYw@%pWYyly/`(Y)űY)ӓ-6-p*$X(&ƴ#C!19}ư#@>T.eF2pMAwW0$_y/;zf Ex&*`F擊lϙ3X" 5綉wmdV属U@@.2TT{a b|ɳ8ίǺBZ%T0~; *],Ki1a3mLbt{r y }F9B˙.Ka=F0!6ҟsA o IDATB=3[o N \p6`~\),Wt@?gRGv(gV]w}o4/k}É.b SjF80Ywf.ob9yČcxmuX61 `٩k~mX.ؤruwgw{v/:$[.? I^cĔTRؓlH9¸fDTVTM"sK =jBW^y03O;SK 9кۜZy)Ƴ\H54Z*o / Z9N#T:oD9agJƪ(+rhp|Nd|Mx㜈2&'C.2/Ҽ|lS>JQKe%D"tgdo7UJwC4HH@b pDЉifYEp*x9Dtn{Lb9Sĵsٵg@9v{UO1~%0 }Sa'*!6~tRˆ_C|™(crs(f9T8!#۱m *o'tO:Big1\yB yιTB+k!v]%L/lH#*%/UJ6#}AzLWyB9ZjF{ ];́a\ϙ{ _E x!_.Sb/]`z' d_,>ɥ l" YϏR~%@C;93:`xe+G/:>*CŸc|~LYۧ1L]s QZs܍xo] fgk GW# c6sngzKq{by'B%>zcGy|kKua!ą6V&|MĤ񝯸;3 3DwBhߦAOah_ !c~>J<zb0c"-@-ʱپZl|t~O0E0M YbWAXfB<{ؽ޼Sev}= QluoP >> 8>5\y۹'7Y5?T,kV|(O;coa;T QGtۜoyrҿ{cC;Tȕ`\+T*V;3^T93=Sv&# T %[џ~s$3O1hk ȩ,0/OOr4kZl rpN_ɹ >,' Y!ܙkJjN -N /8pB)Z{ u?X}.~7IF{QV:F1#.o& f~\H~$RbsVu!Xδ,{A5KEXEw.wyU)@Ǩ{By}H91̩\tsw$~ ND: Odn X*ai:  O{ZpY%2 DL=Eқ+3Map;}L(G9K;iq}C#!A f fC ;}̆L0mcebux>@IއaN׏[a--X3"GYSO <s!6Gx$N;{(S" ;ňm|?<Ǐc0ov{h329J43Ɋ ۄP 0fdv@C`1p )NDv%K}VF&o[LyxcX-6$$ xc2?A%{VmcV<2`ښp>RGlcX۰(Xǂc~ `ıgi};=+p@>vmT$?"bXh d\p;69>)|[ |Tbqkc^ p!s>]T#?&(ň4"r{[ qX1#Ɛ/_1 %s{GLq1w[SuGˍg9m?x2Sm$ f3zjHsE)9\瑍79)[ET~5"{sI 2:\gL X *0Ĺb! Cy5LePb)gK;ť 0Ŕ~[jq@IED.K&5%4T播)S0O'l)HM%͘ f؀Tl )b"HݱKDKlS\4`nFTĔ%891KqX.J0g4KCaGߒHTL4TL,R72ګle0_xM='BsӾ_`r' Li[j@"'P@H?g=6A8fRD #!srL<) c ZE"c&Bz ?VɔR-Su\tP!M՛_anVg{{\Er~)DQ1*gEJOlUAn{;ʆǢ.}Ƞa21FC—4t~g&_eki{[T>Jo8: nZ!!|@U~BY݅5ʈmRCC a>6*̷eKJϝ3JivawW޿W|Zbut Xx$)z 4Θf1f >f1&Ȓ)*j;o6Ƿl ^lsTSCnM{ŚP&R8bXS}bvO+|`ŦAuv0wی2d125Xng#x$cNIYULrw`aa8̌) ч>9z 'lfPfrR1 "6S4VLJ zDTDe(z?>Hcfj}BoV/~|<HjB9=M*.G 6iZi0SL|2ros} o6#<JUԿۖO4j`)Ko$)M=|:ڜH4` 6up& )&DZ^ȯ q)F@ l!S;~M |(m5;49 bّݶj6}j>ۦ^PU"Ov 4|~S o\M&f(bLƘ&A~_p!$%C H\oyT 2Q5!_17}c>.'O 1씦xXipoN&: MSf3B>/H`Hg5d7ߜ=Mb2;%rORdd_ofUg~ ff9s-0ɡ?mNh~['Q4-܋ӋW])o/Ú}^r5L0ϱY,X,N~83C)/dɘ~WI}1ǝ/,!eWo2/)MzYz 644Uk5?K}O *n왖={_,.& faˣn\"ZQ=- 7&c?X%(B>Bbʥ@$3:Mc` c `s\Yu%Q1K7]7VX9Z Rm kR=U,yd4V&YF3YX,@sS1)tߒ3/eL-cMX1"ZP؀9蛱1Sͩ'77t&]z}t{BR>X1cIթcMu?t cghS ^\?鿬]ٶ[mz96ss&c(֠ZX_53&2.[%&X)nY lO̰,Xp 8eF0[cńBLHJ3MќM{ M9sqe< 9K,uL*xKnW.SWo`ۅ n9| el6fY/t CM[LE 3fhʷ*܂|xp {` .5њ93t~$&(r-5[zsz>Ni,#%5t3Š$2X!$nKMў'ר.z`g?pElѬN.̃FA (>yJHA]=@øn{bp`JvMT|y[&,~{!Z.\0O'Kg^:йV5^1dce,,P69цB C&"D8`>I7-PppuEߐ2.tfkFӉ*gKMv"X/k2qc|a翖bϼҵIDzlu;oc~[" K9cX'KB6MP5k\l >S[|i EOg ]8;p \<1c 3*UESe1|&k4CN#~WŠzu*/^ LP C@"#jg?1po Pf'X}F 13-z*33]x`u]cZgj*Jm4smVSȇW"ˇW,p= nByRXpB@.XL/ծғiv{\wgX1W.Q;7#dlC"`FB cD^&?^/*L_(2 eq 3-YZPU¬iU/ n4p=9K9B˘i]xs <hX`*` [k^U*g߲5y[>T$>1356H/ Yk-c {ri?'?>nUU*pWV o,@!.\X&&K?w'a*Z4dMקcnX*p%,$#\&s_m>C z x9-@BQ, IDAT_xMh?P*QT1: >)}׿R_$r׆;[יCйBT :tpΧss;L/Wr3žesϤ#D6|Y$< ַKʙs`))(.y*!1VV-&Nk>' ϪՑ2u 10K%v*s/]O-ϭ P^Vߊ0LzʥQBs2cjSUxnYk Or _N2 AGfB)5S^N W{zL \,< P8 5Q9-@ŷجqLd v|a9bn 84Š2Xfb^|ѓo݉)Myr.r)cu|-/"XVXV(_|eExS x6ȁ[ 53kp ,8ZԦ9I7\ad=0 Re]!=mSsq e^6 k `cFTN$N!*"TX'>U5_h {GwS#*DgRDqL@_7ƍ5+:h~ n0V8bCbܳ]Wɰ,Ō s \"e(\bSP:C"dž= C|O`o`˪7m*mBؠu]*+6gYU7oǷh`JhbG3=L~2Ua[6q:U'J92+ijTLJ ^Kjvpt>ӭV+,KSu/Uhxj=#Aq``q h@9$ (Sf\unZiAu#m 1k2S4Ƕ;>.vb"X.khCB])ې}75S>Xh!lH!,11I3(/W~PAuz=pu ǔK߼jBSUQUYq5 H3 ߇ŭ݌o4Dx`N5PLIm"y"q0Zp4C,GVAv`U9'"n08p סxcKMkUؤӧ_ֽKi^:iiYWj|~gn\iׁq5_)iMl]71nw&${BC6_kѦC] rTy%ar' +PO 0vY?1VM߳MZ5F~G2O(8@˫/O?Կ jԨw[3'i`~Kvj|jeGl$FJy8SCTP:g5,bbƂqcx 6ͱ P8d͈uUL>7XyD#⹁3s*" Lz7?(]g[>Y[5z:?d1ݗ /g^NN>7=Nz` >Pc%g*[G` څC^> 'Υ{9)\#le.3c'Gykۀ S3rʋoxjՙ"MD}tl:+ fٺ9.NWUU5l07U۰eta||S%bRfhl,&=Ӗ,¬oDMi Z) p9:雺_^`8Mg*3sC)bo>sŚǪЏ)uk~e65}@h-5!]je}2H ndp,W5b(7K[` )3.y#%G W@xm5|j20g@e47ٚ.$F+E!P2YfD1҅bWtk@Vm.|'SWghnɺ.nRtbʴnW\k/ۄ")~mm6}ja1P}e֞)űWHD$ q~f|&Gk"uCfuYV(.5m&\'3Hj+7 5][@M.^!P0>HۉX|0xc%1&><OP八_c5vӺOۨ65lDK>\L,;9;ݕu|a`R+y (3 7_dDoabgl4p?e6\߫߰5`B*h1ȶ̦̬"k)rIe xܴh&+z%Tm"VTmV$I,h6:4TepH6-׾yRzm@| u1qV\ M))v̸lJ~_PP757տ\]X bRBBLL2$3CbXP`zg^%/A D+W+Y &8й!4 . ^ Ձoþ]mO`Qgem.d!c KT]05#|37`F .<.Lg1gIїIRoSjlkS2NֽE0sza֓/xe[l465lu]I GK24"Kfͻ{0 m Tloaɍ%(R ƱI)tLu 9%qns:5h|^(>_MHOG%L#TR0"񻱀©>Hu Mej q!936@º4ip1iےbu7?AF3B樯b!er|^'P' "|J'I(䆻97)fJtJ'crmQvt9Qx%Ub=CS`S:y^21 !?BJZzdeSt$.Cs,mStYbXK 1X ,jK9[B"l^\: `2a33",U\c;oA@vmáp z]4IN)XXJu1ܴ!s~ O N*j7_ғSTqHxq:!T$pi#viwD9ߎlka4UcAZL;q{@;[|O:Oʏ#l r .bCDOۦtFRn HdR@<ϱs!/ < 9@~> ]L>Wjo6jD/A)!73{Zcf]K C?t  * [9)T8y?Eӯgh&خ%UbJS!N1Ѧ(_d5, ""H}#&kLڔpT/0V#Ymv~8?bBD7L2nG @rb𔂙u+cm6gUDc--"HYז5|zZ&=bR9QdžlND%T2kUܛү@v>m{ ďYk_j٪LFSw`YtWNQnL6N|n[_,0iKJT(l&ϫ}=ohD('5RV6ӑ3X3YR 6W#llJ=6KMF,"MLGw%+℮ʁOCbv|˩mcGO\CRE1ײmY稯#Dg~$%9N7IJxx;uhe,6?U2@ *6~{X噺KXB 5SekqS_h!ݚ_g6':GsnK]9fܲE;d= q=vp OLsȧ85(t̕T aP&TLx& JKqyu*;AGlt?&`|%=FrD\mU1Q*f Qڵ20 *<>d)) fe"]t=HRX^9)1c&rBّ>LTې0)V\ŏ'[|3kqra=6t18?5柍5:s4 1D *O@ eNJπhvfH,Mю(@)>CKbO v*~$?ўku"B̸l/ ,+7`Qmy v@szcg5h\'> ne0zğPxr R?/"UIO.O"]pBnU+!x<C3TU@!]Ϻ9Ei3V3}vO16}B͒uF;8_hG-ހb&PYh | _ƯrHGa*ހA& HIu4|nbSFț xaĤ8,dYhz\P9_.n`Wԙ`J/T,/tdrg^]4vs182;#큓=-aub )^§Q8D ?_F)lbx %v -Jy!%~BPA%|`l4m(a"$_r U?J-iXrdA= *SDI-Ek`NR1yhz3g |J|'U3sTnm{'ˤ_³FHpb A]TKZl ^2(FE+HUL@<~->k-fmݝʥ'Xpx2d^m &X.5+O=:W{;aKT⫬6+-ީZͻÕu/5-T`!ͫJxei)cţcH^Y ( FzDY6=X0gꞙ)/dP-[x kfɱ %}9&24ý˄)_Q| ttй1,Yb~Z&œHo2p;`/?2%$'Z'sS*0>lA*&ά$l-ԃSn9gy1s^8 mc33Z*j&;Ax*P7ĦwѶo4>oZ(т/FC \!]^!?Qw , Z<]f/a҅.g (s/Cłm= VvS ^*utKp/73)3txۘə} p/y@d>?K%_H|[Jeksh/6/bnk7młcT;TC1"bȈ\BOYmLK_]% :p?gN甭kTTF~?O`)e$t 9V(@Gی9멸t ?O%rt1?CϞ6}ۛIj.Sfg: xXLrUBdRuKUsFL0 Ŵ sWqp+07Rd_˘NɋFƳS>6 /_ʀ pT3/Q &L~0kݨ03*4AT"^􊑘^ \YC,Ǫb,c!P#*d+&xc~Ϛ~ӬDhZ53lB n皰9 [̌kL8BO\x?O!j0(=Rf b+C@ID /hjr"5G%yenry)˺Tk1h~_fF%haTӡ!ZZ>E@d?^ϱPnwM_)_&˜*J6gS n\*a#FL.c3c*M؆XQ=/&ĎuS<1C[ޘ?nC7;y9jaN> 7]9-O%fgϠSf(]K)PZ #fJL ݯX9-bL /D I-G,At41 +ZB|˹cfrno.ǫY$רhS"PA o,Jxigjܩ.>bBMz e0OZ9+惿-'ą }39ɑsrYgj~{늭],eT[n2LD8^|W-P&'ԡGXGtP{h 0x6"x_C "Ԗm dY7QRr({4Fmt&4 ?#wƹ7zSzwAkL̠5<4IKa`}y`US9f?ocm+wUc!X7XBX$uQ Ѱ\8|R,FauUqaB0qI*֖K?f.׻̌Lx sU,.0s^ DEc\]l/]M5HPTXce`,q((6 2"B6tv C7c fq*(sɺܫ>5C}I0O%,ym֠T{I P9*"(K *]NXu =yμs)1.ItBq,TSy4k".thišgn?p[A(~hS57x f:%4&ͱlSOX.ԟgt&^P./At`q tI8 5bfP50W,eTu#<+Dq[Ni(ӄ& Q"Aq b1kB D|)eib:)Sy+ IDATkbk3"aoGh' 5.G hbtHn!4w´ھ2n o5[ex> g\j:ȝ#I @lD @zDxVTRU-n lM`6SV('|ߏ B<cFU(X y95j2) \v ]b#ttXRn?B|]YIUvEg*DaFN8:d1])%Vs 0amԬ+,hsIږC[S62 ,n2D.lˉ@}bˆEtJ%s6_b/Hf{mEpt?fp'yR1#MnTh=I 9 "^,"g`1XS3FXZ5u̖Ea/g%Qc;_({P3NrRxF\WK2`}~@]Lf`k , -oŃ-[l`G7dpm,`6c<anFnEcMⳛҘ߇CYT>p*s/Dxa-AYjύ(023@L#mzvNm4`bǮzt%+R[-6^'iY٠("i-*"@CD7{؈# ]A4{6(Ւ5k~9km,j¦̢,~qMr*#$x/#qRF n Xƶ1;lc1x9G.,1p%"]-n yDo%ȳB:E2ifc/drw:q& +fsB/KkHi0m֮$IP<%( *'J w3AYkI\W +\ EnpnioZOcRA0?!mnpZtlh٬{lq qS y 8$/p-f;fmM.OǤ?n.uGPe_D8Fk*Uf~Cf}U(%uvR:eQe#&Un;M:w"kO,/(1 %C@ƊT[Xt~ 7NƔ&cئ)mt OrPP;&%R= C' ƻp {|-6M@:Mfɬe=/˾miQx淂!,'ǽs_Bdj2UR<͒ +c| S)J';1 lHC%_3\uӭPP vlؔ7jk tp;<=W Ob n:<Gןox50g|юM:&saf%fJ !0{]4";2dWh b:Ӳlz!X<"”I#zmrcN֘M1M TLA Ӑ]|/b<`T9l "D6УLy趛^BI nOY|YfDНF^Gҷ<]^iW/ b^&s@â=A]k)Z{ltѓY/B8\U{RXI<Ä@!ްVZq\3?t\ fmT 8:1e1^ e@=-g])M5eHcכw"_VUU3t+|w9nn'QQ;gaanlQ7Sm77lq+r*u ~.RP߇5M.`!L]ZY~3gQc,`6Ό*}O!?ş}>{# 49=*' rúicǦڻ yDDl,t"_g3_ %M +lT6a/QQ@yUp9{Cz,)䈹`{I>w2]涳3]` .AIYD%>R`Ha+laٲGX~%$A4EI.ٹ}㇪>UlWD__s~&֞@X6.yClx KQ* cs(qȲ,L.8M3!.(A-Yo&ZU ukp];>EM'Y;, Bٱ59!~ |F|U#g`@-n{lcXUw`;N1@-a|PBBє 3g[* pf詚;auW'(X/dؤ2ς,n"wB @{[׶abtcl*_3OOd}˅7*p6m[F5Bzr|:y4`8,yw 1YF1e͉DŽ1DϛjGtxfg=RKn1`Lqfj7㛂p4phs<a_WPT*i*`%^Vv'yV#xLҌur,ذl7dfy+F>!D|]On &MAWӲ4M^hrfw$.Bfi۟ &,+AnrO769/Qق 0  LB /''Ι|;6ڈ8ח(jejhF/WYN MIgbzJσd[MIO&TL>z]J _{g*Ef(H^7b;yy|{ȿ?Ań"ކa m8|.r@UНt@Lzej$P« 88~Mۉ//'"Ֆ BKh֣^ؖҪHQ"ژS9s!}Dڼk'qwSނnz P%@҆fL) 7];Xmtr\0+OI3Zj=`>z˙*#@|T&"LTD|FE9[a'ER% 2'G;`0j׾`MK&( P̸D p+|XZjÈŎ ~? .{;˭VzsfFXaXT!cSF|8y`E)XGds<"砅/WE 'RpkA>) Z`MkrMPL7% 9}܀9)< WA8,l+)>V)| Dٙ()ٙ Gjvc[DŔTFQ.5 u9X`P5m`~ݢcHhG`8*UI+e gTdסeP Bs5pEG;!S/m4<8#`IiG16&yc0`~,O ;V T.^l/Y5j>f4 'zS0K++aA+iN^hѭi.%mI_/gv`̸u1E10>AW* r'§@Y2Mp pOK~{bƟ%jE&(6˷V 5LLӫ:/47Mj6#cD^TFFYd20&%>k'yFQ1-(x& pir pz̛LDA$SV #ۡ<.x _??N%Z7Í#ws)-AFfq+l_mG*v`&b-SäY SB?Yk*  7P%dBY"{z-`]P= 6THҷYND -r;|5`WXppkҠޠn@)<'0}<}_0cBCƗX%x"=RvQ2=ڙ `a.|r@GltX+IYX~SԠʁ ȆcKa8kA^nj%ty[ ̝޿MQ+h)&!Yf>c6Mߗ>?#V4(D^NI Uyt OB3pF[p?Prm>)1aO)L6,E"ta w~ělU+",*r#5Ƕݽo|& ~'ZlJ$2|mԙX?l!GyAPMeͺ_V ȝM+yB΀ES;&{ jUNV hd:Y8n|0[eCs(5eq=! .˲% pjU\*|Ǚ^X.v=21'lW|P 1"Tp&΋+~BЙ| Y떷0J0YLY~G(6emOnP8PU"x1]nd)J'K .a7LXvt"EeClFJRڬU[tEȚRfrNO-d 0c$} rOI׽ y(Uk~VķlN}OS~]L~َ>z,FJx3=?B&&ڧ+ 6v+#zIl.lmHѬ HsݸW 0a"䌸^qoXoM赂0^gf33*qT=Wlp: >/" sEw'"eL,0Q v F=:=  ac\ q^\)Y%xdžٺ4Z;ѬB;N hH?ky=ϑDx F x}g 7}7lW`J|s, ,'@OpEs§ʙ| E@]Ɗ9yqH(pc17C҃K vr%6TN[9Hm$YZ[BYDX2&gvUf~fQO U״f+3x*v 7Te.ߒ2Qio.cSyН AF&NqJ*#35).TeSijbYi`zZlm٘I;Jс[BKeUl[^߳ ކ}gpׯeu#3Jdޖb,q t߱Cl&;,V1D]δqҢb6´0/e<05D\G"Io(x^g')CV6Zm @uץ9lR!̘X yVi?bS oDJe՜Sٛ%'3&vS\YcY.ZN Vi8^}g4)&(5%RjTT;od }ˌCNc-[5&I6cɮb#%yƴhѤ/7rzv g_n{S,>P~_'l9)+eCF;r@ [`Sl%ב~`gN\a Y ѭ>=cc.ܵ(K ʹP]|cyA愒0k4ڔ 5yy]s0d5#LG1ekXZk !Rl%r >S>`ђ4`,AL+,i@ёlfJ.37\1)Aoy]>nK*6#~l@| הFX\=[MvY*.?P257$#!P9txED% ϡ[qqs:*'JaG4 ΁.֡HU }\f!'*Яϔc*n`c:^wt8кY ?pi:?T_(3Wd5SGly4\iNuJVTIjc&b#zeY9 V<\uvkpLt'\F} l(ha{ Rq& l듁F͉90ߺ*63`X(]T(DŬm*K9m)va( hrì,j~\sc_GB aGXVqBxS\I]O r6 _=Yb1[$ʉV9A}mo8ѶaX{i=C|׼#Zp;XU60 }xɃL"`~~N}vSk%Kz:SӃ}]>$L\}aQ km2EK/4CǪF Heg߆ALpHߎoLT J3\*ˇa|*r[8"Z{\~!C-OElTd( 5Du\dsO(NmsvoΨ6˶ gagT!m)b[ A@-f~3+%L6R‚S4B`Q"%0-!Nwa`>z{Xw4&cl@yuNYA;'S{[MFaE.>N׾CژJڂ}o3+\\R >lnsU1S47=94͑ZPc@NdS8P1!|?y)%9O^@M,nXjS =AK~p?bgoÇ9e$JߊXgº9 D_JQ7GG _bqeN+D3΁ĝOhL gNwDΠ'۱x pB RJg`~s~;M*]Vld`6Id}P'_]@(@ R0~'2`Rh2Σc3cfL_ Έbv`3`OϠ'Ї ‡) u_7+˹bKV2CDxgHL  S2ɘo0qøGOY lXD*pc-+9岃qc[5`wHB5W! RH3g\E2؜HZ.|ټl'G"`(GA plgB} 4ltAo`w MjGeNY-BHK07Iv.`>?KlT\!Åt Xō>7 VkdT7UQA*(α';C '6Ar}O$BՄ~OLҟG`~PNr.g?k&b8os(L"PLjcb=Ds!s .Q&RH@4!\|ĶwSJݍ)R94dF}S-\6B0BZI쀷"fhhjBNLD( &bG(bvƔp1Bj35qTJ0X$>W=H Xx( P C nO;emmߥŎ)sy"L#YȎPH)"MLux"Hҳ)0yOc0|"_}H`QT28![_$Gt/HdAJEjb,KN]@('vBd)օ߱V N6:-]Csa>˙ر6Ut,F\<mʦZ 2\K C6L\tBY<{'J9k!LM+^_i>ˁO*da*n"vr%\!TOEIu(}66L0 SP ̷:r´/&h /w*W,|qB&R`12gݧOA I: @j{G"clD'cpRA(tE:9=x@::Z ~w/ h߅}’ aGx9g)?!?c]8V6"p `cसQy*LE|@ܗ>urc֩a1:"iUؘhP&>>ATR8 |Ay`Mm9{\0/0 TO9ku͜< 7mKa^6.q]|uƋe|B_Q [vx:'Br/4 H?ׅ0΄0dE燝uz"ԫs|3͗<9@9(z-Rׂ$A&=g/@HS@3@;bZv~c9Us<.benB?C< BZa7'퀷w"/E`!a'h#=BtIt+Dys<,LB +;zm{D` DX[dc|*BCU|-j~LPÃB`=|DCHb#RuzuFGY iAI퀷wϔؤJY )Pa*UM V߆~ui  tbsnGĝv0RqPdɑ~@*d2Y#c>߳ )ɰLC& d4Z!Ú)/=dpaC}S!/9t;ςw> xŵF2x@ YMe 2.\NuG .bEy*G>{dwݱ;vcwݱ;vcwݱ;vcwݱ;vcwݱ;>.pw쎇B|dw;1gp ܟzF8໎b 0%'rIcl_1\cF j]漆Ę\|.LQ25wmM?GN2XdcFilssPUD*ci[}?I#@;6Yg=z?6̎Zx9-,̵ЎK"!ǒ c ! Kcu(fHbա9U7Ϭ27dF jxL|1 cL\B {|l.żtιLS ȉ=~l!r}> ܘŞ3=yXDzf #PF8s1ǘyfN+sXRH1= ctۊ$4)&SXV%zȄ@^5ZCGơ엱>#g|Ny}1!p2Ԑ :潑x!_IE ViS2Hj$ eSL吮zp#@f>0 OB:SLX*Vjy 8P cbzbt:A 0V0(Hl9EEEVJT/8+tb>o9uUEo#yDKrNP}3>H )Ӫ'b!=B53_sslC0dXL?KvRaxhJ`clQBM|PfR3#c :I|P吘HZ7`nh;7o 2FOU[ `(lL`Pnq>93tҟ0*όU!j |ˢ[(Ep*{rD*iND)54fi.bQt.",X8U%4VC+w;`\<3Bi( #@DbZ2c'H _ri0k"윆Rg a抈X&p %r@5^.06!(s[ʿFŀc vgjfg*6gp%3&BUTA_8 AO(iygnJ0`Z)xGO?ﲵrsvrbKjZ<:I[+29 PDt,zbrNJ0m/nR "4wi޸A1YKs*&rwm*3fbIձH DC~`NHb(ޖ2Cs(cٕOL.◜i~,ϞL]5|,R _w`n"K|⚳`4laR͙c)ۆ$Ūm3_}:5TA問g~\ID{,Og2G }cE7q[3%#=yS D.O~LcTCj!6jeL#Ѐ2gJ"^k/bv:;` &#"(Vc)ǦeERt*wʐo7}c>zAM!2K 3J~!sU\qS*`i:pb /Zk(VC@npι(Мs[,)Kd[s[a3F760Ư,Ue|꾕**X? D^tqtv/M+nT , s&6chWQ+Cs `<ιC;j1r{s!qK-1 u~7T6?1PX'̹R M/]R&kL4O6kFJiFQ(eYnZ/492 %w_8 0x ZkϲҖ7mO*6Ns~X&xCǚc ۚ: 6U^ynoӿ'ӿЧPFs֗`9o2ze,Q&ɊB49?7v_ %_fDLzz[k]tHv.crRƚZx{}=UK`;zq;'g~\td,1LbKx)|?NP^TTќ} m=ƈ()A rCxS$ r1SSƺ3b~ IOf1)5N6F<4+=<& |̔g(9v }99 'cS$-MFqwky,oڙkďT[2HRa34Mo|ɽKOP21kj,eZJǏOYΫҴ<Dk&dbxƘ S4 >RLt7luꤎcn R]S)=c>zo92mYT+c3/Ns"0J5-)wnž 84+B9L0V PLϓm%@brT1WM~ꪣ3\R)33̉-C<ʡ iT̵-reB'^"ff3O:ٝ RJs`{{{|>|>t:l6[ fdQ irƄ'CFG y}^vb6T9e}MUwk=:bь ) ϭA/gr*{PQqd @Hjz+?:zf8Say6ۯYb6au9880Vf$(rb7b!>9 YSac` a C3.g.5%6m\lv=aZ0ڼT?OT)j{gc ʬ&;`J24 s+›\[1s0q)¹C:"P3&`j%. Z4MRq?ғFMO9V!b>pc&$ɘ :C-3aFHARygL3"9fVs 7aOo'9"^Ϝ7$ #kqÌֵ>=0pD0Pp w 8ce^G#~d}9Փti@4'wbD!6v(6>Ќ$48QDPTKR%n]{b 7U;o-B/$crޔL'Ǡad<wLg舂 ?sӃT+fܝц?ΛpW-eǽbtY e-O[uطՇ##\mk@Ō{x?-0L=rO7rFpjzTN9z盭ar1x=F!c5"H9,\!Ɂ>|ǿg{@_Z65;m|>]}iID07)p'Ҵ06,DײH=x`._@#dݷ([gV,^'ðCgG J|KMf #l},+fJ̩Z_~"U  \./}&q[v9#mGkӕ1d(;S5↱t/!čρ7.&Dx8=^۾P `gPq a!@f Ll+~ś[4<75hLx8l0Hu`b*B͟ӳW[isܕ {fZnoooô >FnFS@c\cY0ԿҦ_'?r(11Y g0gFB$LkuUdSʃV2P'+J/Kٛe:RsRTgG<0TIEX m}@͞gfC%˶2Z!]X%tZs{{{+Y(1· B?k X|v8p hMOw,OcPEǴ9 ӂQxiå=Nn|Z/E83;d##%Lt>+/c\4 UU|iiJy7Z-.iHpw=NXЀa /U#5DP { LAbr(a:31ee{}^~egUY/])9ǎsKT|8R,d {g @o!SfDaϯF=Ie\k5.Y$@RѠw`8-xܧ6٩Lb!"qwe<2Z)`S .T?ٙU'˽0 9 =75dCU\bA`'6i1kw\2߅; jtާ!Ч Λ^@ M]FU' .: )T90Nx-Vx瘃c x W*,"`MjH(GBJ6"Rp8f339WMKʢJmDO#[n.:|FVϾTƓXwXuvkb7m,>0UK\ExUUh 6_^tu(W ֔߁]jQ~ER`m^f] 6L0tn@1'17{fNϩfn! W8N.'J.G^ÛlA#$D<AxMh}uw- =;W_sWomꌚ9y!s}NZN$2/2(ٕCr¬`vh'wXTJ 3Q|i^LW5|2oTq? p0g`| WX4 4d11dAt,x xZp. I7HKsRFwƁoczvp!9p0cRSH^} Dzԧ?ɯxy55=H:S*s.}V\S׸^7`n9%*>amX738,"Mn8ITT)קƁ\o0.0}S"1u@J 74bv3Q58RwXyfE2!Sux}>'هgy%:ga'p'lE+WhWg;h&D>#E*Mb+KU7"`| ~,n[C@ >K[`)3.H'+ rM!9=9wʩ3_gumƁ|HKJ0"#0pNT*g Ínvˣux^Ŕ&W.}A tu]cԢ]TJ{_.[| *cNG1$l. v5jcjk) pH { (2ފO]x40!!xce RSZ))}|zп ߾l=:YkNJa|ji aۄֹqNdu6]rx/m9v,3YJCUMbsO@aqYCj K@`)=Y." bxj 763M1؝b pW>_lYy*>5Y [-(nD.i) g >Ybށ.jeamlr0njxXxBv.<ˌm.48'Edn%_P|4mͦzyƗ7%6_.G?7<9=d*HAlWۤb_NiMY/|,σn6 Mಱ@;^,^: ߃1͎ bq17AF`Sn:8v};05}m$O _Q\m4Еsc$)Ro*]P$Q|E:/ U baYl84/At f@g+ )2t K| k`ϧVƑ&tB ;6,}>;wm4x-xe|~͂HwN.z̮`k?tI f8#0yjݦNbЮCfRtsDc%:kળKƘYO@ioG?C_"=o<%(lL3WDŽ&Ρ`4}a뒠'⧩ħIEAGfhlY~y3rI*!FuƘ)bb.?rZ40Փ_d E[a:9Gx1j Jyp@Gefjy^چbS>d d9sWග5V4&̈e=ET0=6!6>Yfl/L#qt 79?|S띙($I_zH<3SG2;zX372%<^P [Z|wTlSbW; 8æP?RX?+8\(ǀE }MUBԣ1?ϩbZL/zTHwKR9(/g#^L@=V" Rg@^ւkA:1\fັxJB_2t@2ԉ?N%$j!M/ ^ 3rlFԹ|; 37q7T0\nê!F-X|uI124~Bm6 F攭YRe켔p2fh G~co̬Zx0=CHbu:aYMMJ2H'mP~V%DԀ˙#JpAy9S4HA givayp Ff|=bn|S6Ċ#8ccXXdH10bJCt}3i*p@jPXZ 4@s:Ʀ >jRS!ݴ(ĖTY0[=^OtQ~ςڄhwR` v;uHlB [,.eF` w\.P`ol3o ~0#h;p#1kLXJ_$]P[ŦҀN\WH9.JtlH}³OJV!!S{.jpDۜAU^˷0r@ }0 `9$ B͌W$Ϣ_( g7f]F_\?9wA$&OOg(2ho#օb8?5 5k3i &LmH U60m|ڭT^ o ,-s$}xmRR 2a˙'c __~ &ְ .0Mer1\cR toS%k ~XuD#fןšz.`svO./ačJ)1s=WhDp0 >"=ڑkb:`Nь8 L{*c=',y   Xڑo bO!}Ό/A6$2Vpq^G@SF1#J,Y08K|g]b%3?'"3o{UdfS|ɑhIp3`lG04aax^yc`V<X)i1"9|tǭ̌s~/"Ns"ܪy### )0"9 ȐObM1xg,`lV<K9Y ^Y_7ۜ Z00[{`KD&jx,,51>5ܽ7@w:ddYj^04 ͈Km[\z m-^j4dyq3`HD/Joռ1K?YeWapM5;~9rl/Ev{J|Kbυ-RSnיr#C̒1,2LxhxNзnQp@r~D"QPd}jX3B.`G !BsMd'euxSyxx:Vzhi )X=2ǂ#GCw QΜ[gAwߵ^@ '6T%~ T|t aĞgϑ-"TSKU(l.;F|TN!e]|M NߥxJ0bMX p -w$}`c=^v e@ \; T8=;Ҿ&U!Lx,8@bX$rT37%fN2NӃ"k_sCh bTK[n>e%A*ÇfK} _K͋0mXLwh”XvO56e鳃[װB{Ipb1vpL"Rԓ􊄏(iY*"a[jC hT3xEchH 6]ێ E:$H& |mlFr: &6(z5{Qa5nwS{BbD(@43 8Xh*!4<( 롍mR6V>A؉ +r1m_/>b[dHEI -XkG; 4pkFA~W'xҥy>, pƝlW[2$HƌSOŨ% SϝcVdD:+Dd(L=Eh'2nP ̱1v+_LTSA |%f>3gW.hhvdlu6DX1fG)39UffBPi lWndM1gfXRkX[u 9Cw|-\XrLyLK~@xP'eP=.B෩4=R]5W' צrox 0_(f)gna^H 졌T/Հ(VoZ9T?3 TRg0)*(2+w-xΈ IhyK5V 6 @ ]|,_]os[? N2AsC)H dR6g PrRM |v5ju8=wkq)4ՎE'tZiDxoA ?vtYS74m[l?1ԧY%dok kKW VC=q?]oFy|L0 ǫOX;YC]TMGɕ 5069n>`Kfa죹{]jͦb\ҹ[~5c`ݲ%fӍ+EtRJɼ `̇ |\1Dl/;ɀBABxce`6ͬN*Ul:ssP>hU'ޒ+Y˄OH]s䧵 p^C7ha1#ϷuyӨY.Ѹ`]dVxHt#'{=ƫvNF|$fN `" %TxcTs6WÛoZSGR~RzdƒD/ldu +Ms~]$~,qh:)i gZ9*CtŽ<.y itLz`î9[/ ] I_E baF-E}Ux9w8KOX\`~mUp'yu\M2ShɇLXu8RHfK{Bp9gۊĪ_]I2ңw+͆R#Ib-S3{Rt7g^\ >qG|< rgީD D7`-1%^cf\G#3]﶑7-o+bm67~[mlX~w2w}ҷ݌9cvNt6?^ȁ)&PK[̵~HEi? S45؝w}UERӍIˬӊf%V+IhU^(JR)wi[*TYߟW* )bkRKW[~5N"x&u]fp-.Ym]w+l2VJn'UBH'J3.2c > ]#ʐnG.wѵ%a`TP]!H"Ƙdu?Ak=$¯ ui׬XT(CiOЬ)Z.ubT ` 8w)1S9 tWVͭč=F~&2oBȖjJ<2L6ߣ 1g#aFN&I[p/z߯.rHp83}OdqΡieW]ޥ6w-B‹hVCrA0>]ni2v7 AvCZ˵b%`93.\2PM.o!YMI6 Ax&,!6Ǐe&)0OTBlˉٻň]*7-RtFk30ӷpptauQ]'Tnq19kmtꅋu=vxE'JDl.7IG ײa}DLL% ,`;+X1c){>./Xttk_[xeB;I|;z$ZdLS_2{z%D‡\hFg J|=#_"w $(h\+:{8,DS&S`|Y< :hO7ހkě6r C<s?^v|<9%8>ENaC "q`i ^ BS~ڵn-k*b80'h[|澌h9(c2WbԴu#_׷}fϽP`:-c--^,jyw8|¯vk1&2F)]u3nq;`wLڷoD跟G^w/Y.ٻsBєBlnkj a'.c(zB .xEE,Y/oxd,hr^̺u]GC 3~(B*עo,T-T6X <6A2:~n˒p4Au-B1/ UB10&Ɩ8IH*G29Zh ` &vCZu07|݊ r129^f_}42h]f903DU<^ר~& j@DSHVEݤ1jR-U j-cHxcfO^Ymvi[ ;xLZo$—aqT1xz _k(Pv>no)7 Ż:py5xMat*OB(7O)1zU!^'DK`>wn5bBkZ%z_i5ݔ, {NJge6o|]~[o4ՔvBĄXw/c ?5.9-\s~vK9ʟ vkFtw 3 H4*|$&7:MLLJ7~y~o]%]0mHu]il|^՛)YJ>x |uڸ Ca0M ;(p-B[Xi[Ə"ivBK`VJf{lH;"oOGD!=zu9 hz,k׹=g'Umvk6zjrEmv=^){YTx_e-]2`4IC= 3~JF jۢ=Y}UA!ɖfPC[ ^w~ 749x MBщORARvdtV|3G1;tNTSuaלBhs_$gHߵiM,gs0d eku^2&KEqu#~VWA /&%mvwFJ ;\4 zP i2N.#sɦM%\=3dJwMz-$3TSEѝKrE ^';X]'Z,9S4D_IoddPnܯ֢tqۀUVu@ l%RNr3!1b ؐSjO0@0HLi2;z5)d+17'],Sf\'۶T+0E8ǽ|_ml..*,~L0J1֦vrK.;meb! dNnpPɗJCFO a)?dgCLB43Roցn=O">S]!c (\n*QN|ސE|ٟ &,knrOdHK_t U|ˑa042eMw:,`~*/'z謽]}ށpׁ1wƼwxh{ll[ev+?sK\O R]"֎Nn~-,E`ݖ  TQM , IDATz a&{(J3;cK;ȴu\޵c)35]mӝfQ͋| XLm.*`*gn{E|ʶD!V0,\Onv Y2Y,6 P-=uMj9nf$ @>7H&s3A1~/a)G0H!Aτ.v;`\7i_X"5T.AhK3=BHZ=7-_OZh>k%8bd܇02xabi䣈Ŷ+~  %z(d#)&~4R89Xu@StXq<  aYՔTS۔g=Y C 4#|`Y=Q)A]tlo "*ϐJH[t" >σpʘbZѭoNs0} ConB{[Ϲ^)s.}ЦtWvlխBV4a;e,Us4=ţH`|=5( Nu*Kl1 s6Iv3z,F*%%q(Ώ xZHɉ%D2f"PF(Fi4=8"2C\zuꅅ, ڪFZy钫 X^Q`AY%O (p/Zm n?ȘwOZ~݅xm)N+.R ʃ=$Bczxxt_ȚTqFE]Pe׋Sid9+"[ 3fGn"p& vU>o7@&z[w]ğ ( y ,k'} p/1[1BgBNs-) 5%Q,ve) l:߲7(>Фfo ٯt9Ar7˛u#^YdY5 lȩ&료EDfJY a@6-\-(g5wB9-܁~ 8)c `H$? K1B∘Bon?{UE .ʃbw7K+YO﹄YEhfnnB*dxxEDX @-z]v*`n*rz@NzEXTP}RXxH8TphHB @ekI٤g?+;hCԜB}5G -ünuWisMNf(B+z4rڙxKb2~2\XDD tBU1MfDƶ6kۘ65ֆ7ء1ٶ2T2r:4nxH#9 rkS Y4 -m_ᮢ.aҧT0[ɔ7-Rzb"BI]"#hN/DRM"8fwĭ:;ԉa"V4rNU?@dXg )!{%y%x_`gdFG9>,,wp)'sɜ;~K9vZSnVA/&wW$*aBp|ux`8鿅o|;{n-CߴY66)kKN.8;3v%TšV?(kB FӝH#2^r?2'8Y,G0nVTx׮#c@(g|r*Mʍ,i܀30^Ǜpo&Jt±ߺ8$s('2lʫRU·|q >֎!3mr3:(}u_v), FM"}Vb܈xHF CgȪtǂfN,x )A7Z*l8U0^[ x~ y׍P&XH?ky3ϑDxw3 9i{|Rr7wxky_ õ9ud a&pxm$X =VO&?±\PEO 'hbn,n/T ᅢ'ER r@-f#ҺZRgS x*1܎)7q:nu"OLq {ƿjV[-n榲R3QnqeR`MdEBP0?pZl;)bOdj2*Q!υ$'/ח 8n(gDdCkNL7YRr΁,EMsVSvuGSmE4#o&3d=no#w\eE7sܚ&jzL77ڱxn^oֹw.LbگoM (n*"p?`QcY^#+08&A"ͻ+ jq5?a dwғm-]` Arc`Dz YO&jx3X]|klFx@R!.N͹_Iܟ_ڋfv 5d ` tOenDѦ( B]6[ v@c),nq |9)Z2)u"Bdx}KfB)й4 IZXDX 琎znpwAt'hЪ؞ߕs[hoݔr]ک}X8)daǾMgV]!cɾM rW8 M%evO;M.`^dbSOwM.ovѯ#^U@ix-s>Ýj"@YcS.d"36,W<熌c XP9m]*Y@Knϗi \<-E cလE~ι p;z'zs(ZERdT"T~&=*ph1%(Ց2I'sHv3~%׫0=SE_( FN YVg%V9H9XAx]x% ,:bwDdxʄX$HǑ?@) /7 W\-/x2TddROmW!Eshېso C pK,;Y쪷.b[ԅ 1%bV" :~,-^H꿷*sE&S[dlb*k$xղA}gv{6-EOs=TD)7';]~;ݶw4 JY )-E8aьqI;KJ|\w9Pjl߁6dgqjqd%[ZΩ A E8T ?56Н\NҼ@.Fjl`(wH bYc<`\X*{lTq<tTTJin+Z׋_]i0vrP)[dⱖ+e1S$gr;rI0LQmW0fu 7FP?ٍ@ tuG)/B<RR#SY+)AZ䄕4*jY"$ŔIw AG eE)cyIfns2dVܒ)@.h߇ Yt#)V0publlB`"Q"ELd]&C{lW au+cEt|Z1*U(n`jɆVY8w\-Oh2?4+ι,[an|,+V}?12ؾcJkL fr c+n3VDFH ؝T+A=kP?RX?YziԹ$R 4|Q"[3e*@fͻw*Uv57.*EU}*ffvx^;fה~uIh@e^h1ιdb8cfEk υ;K%HNTY#\%XC}TgRH6bPp-|]suydvvhi2-dž4M)@7[KPy#nBXR7-b=ʆ'xX] =*D +ֽhvNn^P/h]eĜs*&Z؉6`HgJ\ 0@_Qbac_7~)NZE7ZXCzB 43<&W6a? @|=W^X ŠpkD>+6O{zy d.&A z;}?[%pwNXrlV睠rj,~~.wO{ @K/44Jᄲv} ZwJSwQnઊ) d[lLxlld=f~޿ݼi\/ySeυ Ӆ@ )@ -|ʐ+e!;8!Vki) b*4W$; =&l͊}Sq3d's`wLC}}0@V|ц8vJp8i ĨS~|l>a;B{YՐ[Oŋ}8 ?@…+&E9跍e՘1RS2݂coVp"YB@ؿwY$F9,QGM t~{Kq#e@vŋib=cr^H$U%G!$@%Za{Jx;7` K$| &f߬c&Dvb:S+=͙D}WjdJ E*|P>X-XRrc޷P':lo(_S/`<ĝQf- 1>Pm(ZJ 8UFV t+[D섌ÚmȄ--]M B6sj}^7#b;?nrmdKҲdt3)p&S#tc'wF,F{ qB.'xƲ*#~]*ȅ2f2S.i;Y,XZ$eb@qx 7憸@Z*_=~M4_oW.n6O$MDXP7OjB|)f|4t'\3x1w Z6uT"V#>5a8s1x~3Y!#,Sz@%,xT#c1'Qa/ KIv7!Rt"xFb|}cL F+eR&8~MRXslȆU|xiJ+ V]p`=g Dmzć֩CJP\c-7P4&qP1Jg @p2| \?>6 t:xe')-kx ^(1z$אjhەG?eR@#]a%П#觀*U3̮#R$j8c`WTXҭM(:dXmk1|nh|(NÔPS~Tz)WqRN|!SV LH~fN fW>$!=L!NGB<p;l ft݀7w~י=:+E_2s%B;8Kl6\v/Ux* QwfKn-aLA*de.(PX1{|"`b+r—Gq/>9@h!`(eMd A``ݠV{=f2"e,zah{|"\\ppp1p(bɀt6I]~ /),P̕'wVurNvǰ=/ $VJX D]?E43<'xjrhQ(gcac- ~\ +,J23e'38Ef#q^O"Rbn3/ww@Y Z$Ut%/%AkcTHDy.~()Usoz^ T*~ڻ  uuN6ug, ]߯S6[XdQ;:koR&VC @1 s0eGj92PlZ6aS u-doZx@$Z\mBsnĔ% N8[^x](d0SJQ9Q Kc|V0Eq3q)d=:A~=C-tn]ix$5hJV߷_ZF.Sd(+Jdlaܨ#vqHj5 !џEZ5pg(G3xd -:0!828 1GuǕ~%cYVi /(}(| ʚPw۱;KSu& Ϫ9+cQ2شݝ""Ǹd|b;I!u/I!LKB|rKs齧bZ|Kv vii5 IDATJAc*+% r 9j&y~k8^. \O!/7-7޸ V~ qBlnYSq^ t!D!HziŬfOx(470wo=7fFm1ǦEgV[ϕ=b q,%c,ˆxfc@wfA dAame BryY]R$ )Jjm w$CZU d@}{BE9SpIB_)++&F0Qh?ml OЏuRtO)bQCX. :&TׅX@)p&}lj9jFRPJVp>+B#Ĩē'&MBw&A͟*Ei.6W*fŞ-6#sl&}WĢ ?ѯAj;u,od@_C+Z^A8@4‰NBXutA'4J VXU/Q'>c'~K0Ri ٽxF,#naQ5tVbc%|U/h8Z#,D*…WBx@VCτRy{ !Bl ~`)gľ*; faiZB &EF<kM Eg=&ag~UYPɠ^=E DZ;|}/`V>,=k*@4U4%5NBгXW5:_KWWBqFY*W y*ĞauvHo R!2gЯP7 6q<+Of񫽥ҥt$UӺJB+b'>vo){4, sKadl&}a΄bBVgxl'gBDw~nL,wO3/O?!XAI [ Kr(ZdЧB"wRvnVB> Ka)/=82,M?(U=D5jm7 88`D,xB uP({rLJ!VX*۠&cy3!0@?8~Yla8{Ÿ >}q2mbПT{=:PNXe&L)y&!H;*( jၠk΅Qb]&BY (Ür'^ Ax-znLƬ̐_x_!IX1z"hX89h. A#|]6(B:&i`"(UtщcUhL2/ӹ2NA|ҊB%th~!8mߊ>Fcs\q檠Ik aj#A!6 A@jqOUneKq9JL ˕Kad-V &}P#K2JT~vۃmi?P+@1I#| ϱtWH})&gLA]e +a{QYB,ʉr,t!{~P+B?,9` XX}* L`q:**{=UH2kff/FmJ pL(3Je 7UfXW4sQROZDi&!Kl7X Bܩ1EP~ba\!3ͅ5S <i-xOUJ3( ʮc* jlL[S}M8"@JvŎuN5(~om~om~om~om~o)m=XR(7cv=ٟ X\XN|~SC>bRύN헐t{+ˑ <5<yqgc=M)+5dٰ8Nk l<Z9p,s< v﷽@ 'h| $~R4_o{@Gw5|yN~c[5M}1%Po{^X:9vzR"~&&>#a|F(Ɂ&EOsG}=v^bh[Y:7Dj}{wYL:{RVcr c$hoސ6) /895hi"Bys~^*{ nWGs `d!j s3Q:H3hrT<@ 3#hfJ|MK=GY#g= zP_L(\JfX30sQo kra>O¦'9c%vo H|GcvCc|{NX(= ޏܰ?іc9 ZcSmr/3cI,l4g4@X!+K##p,UK3by9`St Hq$)!v.sHh#2_ri :!iL@| 4ȗ ;UJ#(ЗcVJ?ouN.H)AcMNLM)Jtbt|c.vWΙ KAc-yٯpØ˔X2D5hʻ+U!}1X1`11(-GcA:FƑwQ/.#D=b%_l_,RSXX"* LrjlaAΐ̆ `榮}r[1yEc< p9#fo؂@a@&-'U]ڌ{{ K4{:ϙ%d(w Z29{1 w\//ܰw`<N9jPES`5 _mL,qг^F:CIC>ƄrĀjG cM9y꛾Z|WWC+٢jbx 0DLD5@d93n[ 6$2o1MM}.dWI R*%_#Cu#>݌Xq(2d\3plƚ392xngbW;ų^`wGDwAM2'~dl3.KM`κ Ĩ.ZR8̀A n,T *L{`ztS`fSWywuvvhsX̏xM1V :!cwA6/ok.nF{zӾZ<<oʂ#.滔DP1CysX[j5wqRpSe׀#5sPn),Udda cw}<C>ÀPJX1?{diǠFWPqdl;Z-/^߲>p Ʊ` 0$cScO||8Ǚ/G" 0>+kvub*b!Zj"Vd 3y_MvK\޿C6ף: F>A#O=`$Ȗo2⻾YO,!3zV6&pjʜtov9r٪s2^؃oH8%;KjY.\P(!17Qq6DKi,I<KlIŕG/~!-W:;Au `?hbZ c9L{.Aޓ%$b2S_ ߛ4MY Rq] j٘) Nf1+ƫY%}?fP8&;wY,ZQkYk׿Ki`C?-:sn|=eS@$o5WgQv14Џ5=.'xT B 5"39^{<8Ol90_gU ,Ow\/ɂ *EQ,(z|Ct2g44ι5 Sr)_&G:75u^c c(O<*`l3RلpV*NMg(> v 3,On]JiE+r3Lր4sȧi8u 9c&HMq(_3vu=JCX&*"ؔ%O'zL'W&2x Y-<{`>d2d2Y.O.F/-Yi| ?1*_`{fzzk u@>?p҇ 11c w$'VC *f/}-'=5XGu&ɖY@'Ц)it R).fՆ@{bL9P 3=?AvwovU)_풢c\~ځpC@IQJya-(d_ ޡXݻMpJrpIIzYEZJyADϖ)'im- [64993fS%sAw+br$9% ~/\}?5!@/=Fuq/O!*p"ll~,};\K 1_H[58ECs7 42ՓK4k6Mӣ1&FQ;cϕ" t$HҌI2#M-k[l͎>ۖ* =\l}wGY`efQK>~Xi+gbK Ŕ#8hz3=?twA.1?-鲋_8 !NkcsC`:Nm80~yz|0ς=w/ϱwv2.'il5e邅Y0 P2f8GAU8%C~_3K zkˉ]Ri#oL2r|nXņse˳_;} pu='7W_ʃD-]r2JZ@ٴ`aXxSϘ({ <@Ō =Tj%>  jlu]_*HƲӜ-D?҂i9{|7VL~fZIVAfWd:4%Vo(ҟ JZ|l|t@qE\p<G1cl?(m aΈqO%31_1F=cZ?2l&GƔ\ v'@ghd 6*+a3SNw=Hm egrMbVQZ?=^vK-ʿu0`xנYcy=:\n1IN䢔w6ssq<&/f 5-ԀS[?'~,~[M`Ō{x-0D0fRO*:TߡrG٭qNjSIعƎ={,!D $$kkëaIĮAuyME? PO)«3Dq5ua$KY= 8 > @损9^@HSK*'Ĕj[oQ1;bmS~2f1rLQG-V (TGߚ^1%طW:;Au=^RD|>!pttVsUUkTUW׸4| XHW>+ frZ_D ~U|,>`\2`t)uwMdtm_]4 yF>B Y;FBy ;Xpg|+lOӥ~'LZyxx57֖.Xiր[VpM*__9h<0̇H~ܶKp$"eKx.a0%XBsXESwN'd'2?y$"ƎhGzrX<'x㣏>90;]&\@cG5گ \OUUaZ5[ʪcN 0rE>n:D€0p->pk*i0>|ڔfzm_].F޹uj=kN{`,5XC4K'>4'c!zA^KtII+BV:YU_]5x2oV:;P"jꑠ&싶&sY~11S%",Tϔ`eN)sr:7bxX)6vG<jb_3e((EBkmYk/̟{?'c]bwhQ/5B\\ $P˺pXU*# FK$ In :$n}P t Ɖg,!m-E"^7kľwFo@7{ 9d2Ӄ4fyѫ d6z3IIzaMrH5IhP۽7p?z'="oUҬ*͛Kd~8e>1vo 8USZO9r>t,Lfs:DSFtϿߚ "&vޡ~pNjӑ;::^נ.nkm[@8NrP*(΄[xOjB&\߈GVn9lx{vd-_GW>;)\N94z10=28i\fE9F _Lߙdmx}d󠋹,OxjZ|e;cg.W<|<hhl[;X9kkp[nGԷFV̓O':/x`6 n6-qrŒwdi IDAT^2p7`bܿ #pG\m&}xh7#';$gOHKStM]vۛqOEȥw`\[- ӾfXk x⡳0,P<;rD0fR[09<LOryxhLH4@Ea]'.i(N>jIJbv {탞ŤQIg0}Et5͔tvx-wz'wsZk6!Wlnﭭ,hDgJG]z{b܆}bhgpg>󱜔 FӿFgm,mq̬  !31??ū`\PW'#%bf#f/HC7lA8&Bo"x %oP c2lq@ e:ٕ}Xپbq^CD`˲%7̉9a<ֈh)s_W(g+p~Az>xJF ek)%_YO|shTaq0k0[ 8 tc LuN2[30^=bPpH哪a`ۙdNnOT/]]O00˵%Ncu$AÌo(̉!!$fm氎X)lg@~ s3(&8*U̚"Drru>uP ,ΝsUl[ƹ+VWH0 &S'ΗRp5_z捓T岨ќ/zf׹lFFOK>Nųc֚, zQퟳHۦ̘{߷ !zh "U]ߌ8/ v) `9XNX1"MX@=%$YͧP \(Lvc>2Yރb>|~{DxEɲi{ X.%T%&ari9%pַj 3 HY=lbq 3bF(F6n)i1hkXʋkA"n>$R< clf>e8)7 ^a;J\#?͜krMs){;.c%&-@xє}&؝^a.T8^MDB>-QML*1oh*Nk*Gp%fdId쭠H *iGuDfL//kIm`U|xԘvũ ,6y*qJ&jt@ι\c\pC\&\L" #_wB{~9 <: >Սh\S86i}?յmmP1\wtmZ9kNdH+[z\U ˕7'ѭ (t<\%`4653y2 +(wB fu||UwKf;*JFJ ;gtXd!'r@kI*^=?$sK:{Ǝx-8M&ү>3Q -Um͘3T f"P4ibE J2T_} پAb.'Vפ*,;?@0eGɑ)Z9JYS_`pR.+ymqqZ;܄ ZyDX6 5yScRmjLe 36 (3fg<GaTkyζ]:Oz PՌQ3rؔ59ˉ;\LZ}[ĩs9q-2#.p#n+юMfXMJ5V ȠĞb[[Dfdv}ͱS,,r%g,ZWn1NaeEQ\yBEmP)Gv]%hhVP t3pID;b0SɱY r+DCxʮOP 0c!Ofpn?y;qҮq>O'+ S!s-ceda&| DU]N __D ^f2zAx/O-AT:Ì{te_rqS5Q^ %nf*yH f5#\-2+0LITWb2`E$vI,| sp>X;"d]LN8q<9A9mERY9}Pwq*Vc'>̈́e |xsr) H7>6RKޘDKS:M%\xAe_cMJN1p2P kWdĩ"dX t 2S}8hA˂l7Y:bNMXkv-b1wQs&|ϣkI%_ ρf9?w fQxCe>sd[0T3\ Smܣ:^J3x-X͒1i姃U$@W7: 2]j1 rHe*çY#*,#ev wQbSs,%`G94b"9iE19<ž)=;ZGP.zr5|BJË77 WԆbn7s'V"ۃ'V\ ӧ(#1l 84#E!:4H> ^n2^@/ÀfZs@LlP 5{G̹3<; pZ>L1SD̄pɤ|a Q$jqoŮ,,$̑+X\w 4HWz\EkfO%_.!-|KM~F2Y[.YZ<_ŃC({W_)UY22WIH iEl(edw4md7QE53Lj|u~treb\$g@m~A#jj ?Eߢ2}1to^W$þs<["L/",D8|LM<TXi*h0b%5J~SmBWsܹ8!ߊXn|csZ§ާ%,\ X}^LzHY.օ:5μ=дIkNΪRf+)-y09½^贛cAp= M/BZ,iraXp@2ڟ 6 zk)Ss`ubQ Sr/(gQJz!:<<Ct!\o\g1|S4j|MmhAa$;@s[ؑ@aG1ܒd漄܃jcT_Ag!3f0[T0M7~HPrK*U' >GLHw 0fYT˾)#5'+K%w4DHJa'ܳ3O7i1SG>ÄO uz YD]]/SaHLe?uqQqy=K`(H5&V $jj˖c-ƍkcU0m'7)T[bl7nʁ\8`Ofiv p)7̡̥M}K_rlB8fTr)D}VКņ , z ćL1Y-&i>MFs0 HTOnT+ٵݷgߧpQ8"aP@:i`:flh)mc8Vk!/2yh>=P8N /-ħஅY]a:'v"I[74hcg<; HLf.95l=ɝ*}(^3ww*ÏI$,'okt᭙M^iND\@Jh.Pz!:|oX7 ~%^:8hHgq -3"`өs9@ 2~/4r@D"KIrR& u;˶>g^ĵiEџPɲZBPX8//ᓌ#N@圱sWꆦ,lpatդp}˽Ia1r_>{0r Ȅq-sol]B1FS,=E0ì(0sxky 9'mʸЉ/\݆m{1!2E& S.pGQ7gAJp54\a]O|*"^_Scn`:pFg2" YQ,X$BXf+ .x69zKP!`M䳻}Dm~8;{ 3)Ijsd&k,i;dyV,2v/1ᙎcYps-G /Rb^lb0ǹ\q-`l  +BA62j<>.HM:xL'JĈ1bb<3k9YЬLfGP{u7EHvsÌ upςgKx@JĞsK(QF3Rd0)\q2Y4+uUlRsR1bNod*,,uT]cbl\$RUoywz˂guT-CfqfSVрk]T92M 1jvHC>ЭW@% ؐJS~Lςp 0aj$r3մ5 Ԍ}!%-~9av"K~Uӽ9bvH_%3YV IDAT;#/,]mey߳P8fv%Fk+RӲ{l;wFS$YD-Xo$-s%fpXNCG9oom8YT.]cF)2C7BK?t$g*/(eq)"I"ђ/@HOsi=  w2lm؀m+ָU"d9G=ٽ5s1dLM86B2mb۶ 2[f P/|1rECEsC1`lr380gw=?5y&MM͵x4Dũ i4)5_}m[D*YQG!"l6jwqj r t9Tl=Ү#Ha :bKڧs58ëƟ%C2,3[.)ʾEjm !=9JR1]Ե)g K 8B/ f?v6MgR-AsUzp(  )Ew:~=r;mp NxS.FaKd"!eϠfCWf9C.W{Qu]}v}0x Rاm#R`%!ӯ bM@)‘#VSVLXX.5RAba P.kV'7HP/+ˮ9A>kUU`ӽ7s0Ơ^"Uj=Wghs5̈́܉ەp;,5;3T|`JD} sZz nR1<MKk*S%S,sssoc{R%Jp`-Eξ!LoafjC~jS wddJC3n=Yf&ݤ@ZHLO%Nk0=QQfi~ȬC2gZewdf5*̤n{[cq/5>b9v͇?r%[Lw)f=p%LlRBrN҂nsvmkto䓦`@^X/wOZpv_C["2 M>Dxi_K(1i\$3m[&)= b|"a . uOixaj{gWfu,tIkm Ƙ`Fߖ0^01Dc< C8;zj@Z,9SԃlmZ`ET1l?;q~jwg?VVdKN*ÁnLaYs*։cX(y-:n@G` 6;5aQ0,z\X10Ayf@}NgC8ܗݪC67wu6 > |,L1Mk(ݰK2LL=CNxV[-1!c.hz1tfBG=^n+  Z`:5ӧ״hk5r8$o0F='vWdp ajsZ25 ;ԃo92 /]OܿxoືrzVpCw6"ͩMor),|EP d)5-N6e $^|Ib D"ml>wئfy͡ϝ;ߎ( Z ŭ Ѩ/\Dob`,XѩAbp]O x ~dpE[;ES|LZC\M]r?SrJˢ\%\td׉w5 \h@bPT (%X(}fic9)Q=f"U]ߐX3"] 带]B?p(v؅`7=ؼ2 0w>|LZCOA^$u+gR{ZBRZĮ/kVfuzXLAq3&Uw X0)'ic & (NPkFD!8S1xq2& 0̸N/{>6}ś|% Oy(Cop jfe_A(΃-ָ*2藰=!=.<)]QWLX"Z.jz)D&Dhn+:mS *`عNZX=n*oq 9Cl #`69V24LJ_P=]"6j'v&Jyp1f.=ւ,U.g#@Fܼؔ-<*!Q̄ Dµ,Jt TU"C} z2z) &wh'd%"5[JDd.|?DoVǬb9D'4ißs lH'"Eby vmBݶ'X Qf83a< bfȈ&B[ [+a! ۺ0(ɡ4tV$v4pD]Dj sP@֝ 7'QAYςQ;(qORk }yЁSßq W[~Ŷ>rNXF+VoR+]%U.<ʘݔuKYBMxg"[ vS2؁;`ȋnۨՋ{)טqt1bB @ 3> eֱ?@ߢno벞l3~b37./ vZ{k!+8!#x15'񸁗t X?z961dw2\SPBeu& :oٚm4.e ש@A^w>I>O%> {l9 <ŹBQ{(e4LULR,]Vh!7$rccNf$:Xv:5B2𮦷ba%{TH񩞒f[x]z>N!+D'BX#aIZ\,%}vT_ )y!BDnIdthUfip NA/9bHR%3D/QoqWP68&ۘ(ڻ&)b2lv'Ȗta3BkcZXpEcyrrKR0)wTj_m&[0lHw`?9_\M?"Q \7s]";d:&\G*׿% k![Xn_{T?|.M|ԍ^WnB dp ±1XrÍ.*ILp[ӣgf>nW3w N^N `draf(`%2kOoi[j]x-b 0@E4nѐ`i | ;_ǩ ]5Ϳulj{vY61:*7z1V2ƫK ۵JH0}l (T|&lbBb+]"lNPL2lLg StT&"U W,ja)5 :'Cm 15r+fƎw]x}˜kj0t(Wݽ m%š;@r +JFdሔ_ph^c9R¤i.P{2qٱCk_oL͢ϐ-1 (A*6! 0`_r΂(PEDps>V8bI5M݈Unv*3Sӥ>t"FUlGK`E-Xi0Cx͘j-h(B&yKXMq[:"2e҃,|M/vNYҝN{#l.p-^w f_z Dq]\iw?'je&vl )+C'J.s3/5$HdN8FiNa(]&pWz.\f(@knf[X%ToʩQ[L;-~nEӻ~e!fg`lq[Ƶx׶_qcaü.!L6MŢ{\N %K r+=`mk{w[]K=EsW wû9%mٻڅ9zb 2j r€l#ME(P~1&Ak%('wsWhqL"08% +Dҋwpp[vg93`jV|(t:XnsBhAun6w{HJ-R|毹,Bdh瑭ݣgz1d|);PV̍޿fkNzG, ܺojFD|p\V:@7saL_n1 яĪbJbcrfdbт5n7@VX1V3_K"sybm5.=.W&2]rN+{͉S,,J/f(N6SLU @8r)0wSEMuîzz”j :ݵn*Q Hs喝,AKj.§K% 0]}G&c:+u.,a{o#.N1$d\͔Rϗ@f%+DlW(KW*U[PNd06\61#b'3_ܺ50⸩AZ{m[9v/3rVHvk/F3}4TY*F6G4K%+gUY IDATJ7U\))ɣ{5-75׻N(3l3%ŇS͹1k,)6;Kxm:x߅J pER`>;LVe8A1XiJhBYp>Zg!M_Ƿ#AiEîZv *CH'u\ t[QQ=::Ft'$&_mPgw!H_]~!Qz-bC͖RF"M1A1VRu qVRDTB-`,:t '#B̍bMeˍ: ) vu\hZM'6FEb D;VVPNh!Sw cU.FJѫd.(aD.PBf6+W+:FUszr1u\Ϯz`O[s+,.7 v؞GΩKO*6''%۩o A.FHظs'IDjsB՟ȥmT D7"t \o.ޞdZfqT\Q'A؃_0zCjGn O zپ xqÁr= VaZn-& U>VtZ lz+%V$F+n.9VЍpZuܬ7[1ck82f2`";(\TF˥c+I).zk;ec" ̕ !%GkC17>,ӍpsqőP¼o InO՝bcu,Yn;Wor;5-$8GxLZY1 sD1p{(Xm]罋\ي׶B6Z>l}K 0\Pr(;~)Z&X1dJp#]]NrYs~g)[q%|o@5mf -[HJX8+Stt VDqͼe!&a,gF9C&ӆ@u/  +c1X>DH`gYl6 CrbyJ f  }D@duքϙy mGP%VVْL7yA(aܠK X#MD/qDf@F0^dW0{K1_%vCAӃ2qI(l,rn.ɔK+D*fC܃٭܀VU ww We'ESVX3Ya|'>wA7C/B!1([q;!'El^J֋(E=GpJ'•,hp11f"mv=AA%ȔD :rItuh_sv2s)FPH$}F)dpт1.nEHQ>Q<:3INLq=$9II/*dZ*^{09oUwx >fRF~HIF-Rn)95c2.G~5F^/Yۮ%[3C.y.!@kwE\OA(ķs ڞ﹈J@vG xx2VQ$j@'HR*dxVI#b`5E1֐ c.'\J(fm]3cfo.h-3O,ˀ->Wl1d8"X~ 2b] 5O VL.NH0hqNǜS92Sq4ijv[!U A 7RZPb:z zszqTKᎵp[j*l~31 hRnKXGBXЉ]uQy:VX4]w-}]&ջS.?roʽLMZ4:Z F\,q!ą $HX3_̰S7g͉1MdǺ2Sj%4W_`;q$歝] yF~rpE}DŽ@HP6BWK}OiKa#*ՉLL\CH1\)K9eB̵y^{4:_#y`s:eU}܀.'E Xmq6oinY}.fPteJ:Ys@9x\&CK<R|΅GԦO0q^DN-MH+X#=?MRFtN 4;!n%6X2f !q.[dUU1'{q%\8F\D#D!RIV, )g4rS.1BnlZ1fE&&xKk2ҧ{]`}0PBX6_Br;qZ ~;cE.t¥$2†8>o0e#`)c簡SRU()^VlZrnF OaܨȊ#K|]Tm=BՀSλ5o r~,5bDݱ'D$SS N,tIl%:1 kEzabE\ ;A;wDvjMh l2TvNr̚pebTyḰV 5*FRssτMo]܈qQE[|@e*>@(VZ3cX8 LqBhVIsqj262N|\=%s"}{FYt2Y1CAP,GZ[bcy~eY|x9ƺ^]c%޿Abt.)%5ob;kiXcSKy^n i86U [ۈ{9{np s |ʻx7/Y L۪]Rh$K1r@ )7Өj DZ',b%pcz*@|E|UllQ!uE,a#6F0t=',Fٞ(y \œ4wURl V̭NIl9!CSI*J*s(zNXV b#^ĝM2mU X1am~S' cjaqev)tX'rrw-ӝ ™8[#Au!eEz+Eئb/z˱np]%v.(͖ri`5U 'w^ \OnQZ~?'d @-lDpiPn1hkEXtz~P*YX`,7Ȝ B ԲǤ牫ṡ4-KL/(#-B!i%Cosa ,VX>A?l=kHK#M@H EwwwJx Sdde!# r'Qyb-\aZ\'z!,Hw/eHzfR6?e >ު,=N޵;ПR&I PR8 l &iUc >X>/>veEl{HwNV;~NO gb-_j_ΥOwdH(JA3dObc 3y &~0yI 0Ivxite4Ќ,HfN콫j?Uk^kڧINv/mVd-J24V;G@U(bRV giZxΊM5GNS}$l,²9g)~bl8F|l? Snvnvnvnvnvnvnvnvnv}dt;Xbc)n8=?S p=~Gcs)v|$+gfA&GCC| mG })O:~NEfZrOc )OlX,er^N-)>P(63(UĢl.O=27ϝnthIhtIcqJ оoJSF,Z8+ |k6b)Բh93 b }-sPC cJ.RpSXV2`0* XL$uJ.kz>D &s:J|{HrbM t .&”,V"P5)u-0g޲9V8k15!6uCHP\ڔ,X˘#@|sk? 6qrZb-dpcr" *DH@5a}cH *AP ,Fvy[(&ιGҿb_nsǚ!x +yy߿ 2TPjH>H}~̯T`sC*3q1O-6ȆȌX7bbg)pZo_(&.=TD߬ևw7G n:z/́ؾHPBR]y,0黊C *!)|N; X/$r#JSTk{㭝T1mn_Wesp'e26$%P U&t/Wm=u峞9dH 6cȿp/.d .H}OE ֥- zn-o9paQʿKZl *IAI5J%߰X\Mrҟ A^$gC1kSO", -Wx,@MsŽ[hoEeAZ>nk{=̰?l'$1Z@b2s}TuĂ!% HʭBnd/DTeD|'m9^`}Y< ڤRM.?~~|SlY0{ͽzt ]&6{c.xN)LZX=J з*&hOL5\'⻢'É8gngm!6"zj* ޙ+.).;%ʘF=K|S.`gc ta*֓g]׽%#&=:P֚Q KoC`Y?r?,x[-9srI|h7.!!&Sa?_~d_Swq0+k Ŭe+Ed2$itpŔ'"Ik-,Bag OpMDYVjinH)y!Vi>ˑRyl 7Ğ5 sq}/%#%Ԩf\9=F#L&埴rx}b~_`[ v2&`-0Ptϑ R` fTfl1#P1`g 1WԿNvsegW6GdZ7 /AZ"g[3rP-ơ)4 Տ?0ڻ🪢;΃TWhwh,E5Ln2`:.ht-%i"]:X3/B3cb v-ec`2& ܞD~8;H.^lW [,8 ;n1.LgEŝ0HoO?iz2Tm==sKw]@(غM͙n^IDB!{.,[O<_Nw~}wn ]t@ss s\s`l-0pX\430C]˖vN?y2,)48f}0ށ[lqJ@.R/7Ta!/,kFfv>g b C6AZTS$| D%flawoA7LOH-̺{B5qalPwD/]׭~Hb` gx f%ƛl,nP -]H8trOVv2̷RWMnnYxTj hS! Hg܁kbu(V|>C4>- gXܻ=:)XY-lmm-'\,H>W5L5cpmz`/ Kvwe\SƔS.Ax ^A \>dP=;@@Oc uޣ.ԝZ D%K_TAwz'4ff-߄{W/Yhm,N=N^ٍ1 u]*ƙ -v \7k4AP˯\qցd` P5 wclm>.JHn*&Q176C 0T}+ .ZО`Ӵ tv%̓d m :dJZZ]X,0Mݦ 4c (o]˘[)CL`("lp”#s!=:?P)=s'`s@ ZYCp5cE{=}'ǻ1:bb5 뽺X<7N%趷{t/%@WU&5774?-8'>~:#U L\`aV.Fd"&A*IbX/CWcz^U 7qՌ[AWo?Gg/HI137kAt9.f$ >0x;1a%XyB;rE2Fb U"ޒde0|YkP㭚A߂Y{b 8a(ʏԀ5 ju{=x n Йj-أ8$FKK笜s-鬜KeUUخj|jb2Ѻxҥ#D֝td'vfˈQ9Wֱ#8a iBA8#T`>/ʥ sd?,%S'g{j!!KA}שrz詿AJ'r23Q޻ b.H/+d鶷{s-erpm^ /*4y b{$azM2Vp,\U(x)'RvL'"td >gOj}.eBZ Hl"^Bo? z4G`[&{\^ȽtZnƳ,B/fi\l ^U3$HΏBBwg%X`6`G^ PPZrƝPh \a4 htb>h: Q {^k =Y௫əB5JsC "PG#dv`u cOۙM@}p<A7t-%{)-d.65V5^سX1^Jނqlm4S2!,nvFkS7E.z"6UX E J@f$ ".)\,smu?Fz`<`xpxA/^HgaL@x|ѯlg ؃[PYOxARܟT ^aZFQ.u5)i]ɻl2 |7 P{{ f!'lp&FFgJ[rܳ`G)\]bܷ$vH?]Lvl-CV* wqBHc߹oVNO=u['42i툠)'tڵG^4-3l$Bhj=l]n 2x#E@M> U.;T;kNv2uuR:ufw_~ EcL[lu4>ܐPC`,y=f0:1j8O%".б[^g`iN&y;\UFơOep<Nv/fp)"7_O_rϓDhsԳU5;uڹ^xc1+27 Y nK ]<5Ab\'` ¤"8c2D%c-Z' Jʍܤ~=^n+Xk|@+|ZV.>zn>U\@z_: tϲ25\x쳗)l]Ək.VdW91eIc.(@xo3Hu79p n fJ?bk,dt~e/K"X EarE(&tf,D*~-?Zkg \m(U[ϵߓ3dKٖ*o ^hKRvc,]LFC`NQ:2Ls >4y(>rEM WcG8?S{qggSO^$"m:VX|@zTc^xX/UWH&c8u:ZbRXt+Zk`j!LHݞ?.TZg;^eF˶7;?'ѴB`q1䰠)!jm2WeH%=H~olR˳ԗs5ލ؅?Ej?: bݙbռ!'m0*0=3r[huq1h5xp7ǿѯe\k 1<@:IǙp5^0}~L ds60\/6klZ[9羸E% ~0܁s:mM4krmbBݛSC KTm0B nW4x&L=̢͔Mր4|@'a1OjRP c.Sa=E@y5"UeKK.E\ºV_97Y; ضeb0wǥ!mHHU+`tXίxYKxVI\m_bL `b5s: BWQY9WW6vy^ zE&zh3l]@ZDy3~wˍUò_nþ~ ,ʐ[rGA'N ,IJ@!qB$+lmQ滫+ND$H 8o >C)]xn98R Fݧ7%W8%ܐ %D8ОG%6f1f:$"|5Me DSP3;0xia<48qKb9sX.w`cW% BT*K|MoOqSy 2(W3xC9RuH.a2ԝ~cj󤲀&=N6O颸Xpcdߘpcח=J9Fl~,h?zvv˲.0M`OBڝ]S|` 3Osl2W:8d}RqT5F,Ru}P6 sw.0@)݁.nV0? Eޮ!)[w^J4v '/(T]Q跩v*n[鱋!REɓ$nK 8ܯ52Xj߃1⬓XB"8X_,Nnoh۵"GJkG{q{kڄjW35!9`y)Ϝ/kn;,g.rHC c-Y.p&9f 2Hr1!<`b rM) nb rzliRrbEUnm!\r}IbM[h{E`픪:@{p.&d#ʜ9D7឵9d>ixXqPdoZjx 1MN.enbOnMpw14L*v7%p7TZ_H^qyG TUP Qq#sXUt G{ DsWΒ.~T1c NBtr.sO$3Fdq?trjۆ{!\CelI YwC#*IpbiD8#s(73JhQm\Yᦸ *[$]{':7m l)鬾iGgqbE}vk~MۜϹ,J}אllƞ-[Cc  B/1lvދ!]o KG9f*aR \_U,ԣ2"[ 뻙VN12wUv}WFZ;&]b/e6cmF66,.NIo~TLukY)Q@L[緘g!\:m f!Хn fI!4UX},f"z.H%oc6d<'۸"TNhpGj_5r)CS:#:cEa}ӚVRl]VJ?.+zZfѹX3cEɌ313IZĹKaL>d3sXC0֗w?H-\~ %S |=/$J 7gXgI~ m=pŀۓ"jd׾FtsMciD].ߥXF)~M;f7ifr"S&nx ]a/Q 0[mqtbX^ZD A8ȸP%  Z, b1ԯez'=|B^@5'|Ŷ;D@l13-'S ;g2XXrcz`z _^㈁OجzknH}Z(AʔKV@:B"`A)%ݨ:A&3sKl@ψYgv"@ 5'1䒔d neWI K9x#3) ~\Rfߥ K8˴!~6);Hbشhg5%oLW@kbLmJ;S)\K#Y[S)fSE@sP` A~sγhBGe$/-FhT kw&&IuߊK$e 5I %(%,cO*4(z5{䱁),qW(S-|@ZVy* Lb: g % 2sgW"q,Esbۉ5ko=UӀ(>4`H-TӡM=΄QEy$1h^Z_ŕ_;+v\M-䭜ں1]"*adRc|wv+P2k 3[ Nk#ꟌˁZW|9%ф(frr MY|Y)SV-!Kb~ ]:W X[y>.44DtBdy{JWbxx;bAQ>-Kh@7k.HĻ*}q(fQL )! /~mp;=>0V8#/!ܑw5Ŭw*pN2^qpN6#E=D4y_ٮTKiT4Љ2t W2T VTuy%߱ʓR}B<@˼ٷx"Vo8ih6]r<1@?>r$Y,Scݳz%zcZ|YOh sƞ BU^ ̩E8"ԬXmS|5cI(ݯ\dfڞWRuitd]n7OH)>յ}5h<5=\5Me$<&fl7_^"t0d! B&{cW%v|fTG3hI" >^ПofXSc9R)Vrbe8OC2tU?Γ;85,mB:qY,!G]1HKŒ}CG UzR e\Fr桫 p՗Ӛ6Q;H ynd^u^by H9m>>Ȅgm)SyK˵<&JiV8Y'qF?WB&G4B)Tdinf뽁Ԁ@nW 㥐ΙWBڝ1qɽle窱5H|>q,h̝[%\˜9+7uCCVR>XY^tQ=k Drx yW{ duMQkgD|@SU;1mO~kl&5W`[aWmOt$!0]O4$X(I,C+ %ϰ5g*%YBR_<[?"׳wYpkPatB-=PS߻^UJd/x@M皧h*CnECѲ=1ppss>3x \fČگb9j[oc=xU&y/OfУNe#W'uWn硰ظ;40By\_*Y9WY} gh'axp͒%'["&ce@` ˵c5}F =%w$g{|KJq_]> п]1k"lӽ9eh&K10Xt>e4*ӄCQƑ!f\n{`Fy 4lqjL@@A16Iի D\z~u "z Gts=-GmbD*'GE}WSs$ܵ#hGp-o:pr)aQNCO+"+́%I%_ ˖v}2mNۊp9`sa'(36p'1Kv v)FCBT'd yΏrx)P1\+`y > @_`p's@Mo+ r{o}ސT4J!V*ZQxY1T`BHVK wǝ -68d;8"mt` =5:0q@N 1c$WlB4sҪq NtzJ ΏR{Dˣrq޲wvONqCpx,n2 L]Sb&sBjK~NCs]Z;OPrCxvWP;Y[Zoڦ߅d jxGش YB-BS,-OzcT X;T,{bToxqB]UѸ?;[x-ERvYXoY7,AUЪrrBufF;Ӳ&- tYܳ68tM[YZ&35Kc7bƦZC,n\a%#vw2X^]7/AHY,b)f"&xn9s+.xq7Iblö1E,ӭa+cV1I (Hcc<iv}ųwZNq#{Y,iƓOȟJD"{]S٤B!5$=D يTe\T>{.  ` )jR*"kYw M9\!֜k^)ɀ@9@jj/ۥiWOוq.}cw6 ^ EFYRQR*"n߀1s4C $q],,̨`Qwl- Emж0_0,,2 KcZ5;DmmB\qdgv-<Q{lU;Q$NP16?.t_8ozXj]:!ݻH@zޗd"UdgcB Ei]h xYNZkXk{'!WRXPc?wě%9Hc'c ygGe@kF٢` mN(C,TIuh&žkW=³T YRf,fQfknw΀kW,VlJPH]I>##ts9s3]\^yD] .Y,Z4M#Y[=4esy]cOF6uIbK^bQc|TXGGzlka BK Ώ6qz(6]_gP`YpK2o?6E,u<R ү5Q"kyY Հ8O(J] 7%k&j?NجsdGo5nn7 ]tVǬ^*srӥWxecneNärٷנWw7V9GO@ǀP֑"lqb@rq$~/XxNrllA(fĐ5¼.e80Ǽ8Ѷ[vxj&)s7׭^8vYMwzHsDϢS,٤Im όv}?@/|4>ٰ֚Չ 5}!lovkMjv,<%.+v y&'ŪXC~󧝈(Q%TyFsD\oG۸S3YZXrC׺6t5"K ܃ŝ צi(4ׂC- /(P뵄-h8=̕Pƕ+g l/tԁepw.tZX!WK|Yi!7SZ҅8X;fᮞiMTTt.S.S),g6X) CL?_뜭,ɱCǦLig>S_} o߲ bdC bSFV!y6 ZCKؠK 'QXﵙK^V2"؝tck&F g"Wvi_pgCz6!+LpMIboɮ19,$1`YZ&B,M[ XK^4T۰m3qA74.-.46B,*cZF(LK`t,,M/*sS.gl6&$ZPpRXo l9޳ksCm<.$\J}nkmҺK&=~M2t@;6cQr)Y-F>Frb<3(X".:@8)TMv.㞛6ـ9>RQ-$9@a@c f4lXJ _p %Ui*VGBls]*Z;>z|lvMw꬐f" +g7дC~ shP̽ kBWqtdmUd&PqA{Z ×;4֬$ՋYF1Z^q .B"qPjHK—5pIEfQnΞ;-C6$&vJ,^ lڍ'D$Ju#_.(1҃OBq`L)btb6bL3tI~Qfe8Do0Qf1vqka>eUg%kPrs-3>cs&q!r *f|[]/P$ >7`N؎=7u a e hζMXu5~Bx.B>R :wSX,Ȭ=5쁈I zQX/dfp=0-JLIAVx 6e7d@7i"]JOCK(J{UG*Y2EnDܼ6KHHrr$B.Ж[qހpr Ⅼ01 ϟ7 V,^4[49ЛK۶:ݚd,_X5{LAU 9Rx ; 0xhr  2JȍkًS3;f 3CDC#,&CrS].s3s <̅ikHNC;IĉJ-xH3̜snTCxwiHZzH7 ]!wg{E6č/dg/'~A]%6_E^صrC GNnf{h:묖*a’ !]Kx)4d쀾b)=a} %6͘ŘHy霛c;&('KF6'M6cƞ6]^(p S ,Г}ֱ;{ < P34&D[o׺}s]0d5@Z9ˋ IDAT *&Glc9bp YNJ 55O yx)=タ`p o#ɴ9 ϱ ` 6֎xKMM\MƬY:ib x-Xlp44Q} mEx | ݇4\ӆbu3‹Ts(I*TOseumVʟ4s|{ r3q]́3ٹ0.&u+C#obN TuN2x `i Vp chLh{r J+꼐%R&2Dx-86@23K+׬a+x# -s9#'``D. >N/gQB[|N-]K1]6z3Ƿl*: !Be=) HE\M6Y2R/Y.IqQB@d|S-dT0ObXQgl޺;:"&P]XS^Z:3Ck$_dsL㞵x c) XX 1ZuPhy)\13@;]bs %& [Jau Sk"HyٛJX4 me^S.pTK( \f88k|b5V5SMwYLzܞ賗J*6^/)` \wxP:Bù->*+񲽹.<$v;*wirPA8l5s|Vmsb\ZHIfң۶>~ሐ ԭ-ĺDH felݏbU~F8Df/{d4 *[.[ nv:) /м.BuNʮc]^5?@ky1AՁ+I$,)| _5Z۫"uN'S &ئzl8ȱdZYɮlLM9x9,eT!gDe =}͂چ.@=MrVmE~NMO`-vLAPr\o@cy̫kerJ$(rۥusa+k֠'MZ8Г#' =8s&@7@v(ȔY@̝ŘMx'U8r{-4<-\maPY0%̂؆F)t @T0e ~9I˽T A;0AG |HJ^a,H a]Ţ!]f k)YcCxk~̦:0e"`5ų";Tꩈ1)/t,|NZ'9)M$RmNˀY/R_NC*omfl3aԉk"OrHI^MQd}"]M"fa?kY6 I*53f/p%2LaBRpV,I]OJR 3AEB<@ <'F!]Y͍(P +j-,}oCi[YŤ~>.Nj\ d0!p_|O087q c=s1}.CunjQr,,]=/,,e!³j#o/ ]\hHґ-Eĺ.^~G! 7$K0ڜ`6xg^IO͘,:֮:w{{n"IIiҊb)۲% AɁ8<y3$/AĐ,$!$SDͩ;j}Ϊu޵ݧ(BgOwk0q5f5.1`m4+8ӕbrΩ/ gFvw.TF,$|&w/Lˡ~&TR*v#az跁۶\Zs)GDfܩ-meh6e/~)3$̸:;|-ikAݙ I*7}̼cŌ{ v߷~+ [KXkP0*e,@rr \~+>+7'LKμ;.bJ~UBUR>B~-T;Uz ,7=}u^lfǏS91)PN-MXEQ( eӘ9Sg3PƜ' \1@aZtc3[ZÂg]{{`km2?+,76N_cJKQNoqz leJSff!OkZ!E:~?lj˔pJI-Z|a);}AG@ȶv˻w^f2 SLԋ@{(O-b8NPO&gK_QhYt91@ -PwcdRd!S(àfm8kx";;4P%o!|R KH<91$”b Ρ:vR!T ijq*bBD1xPN/"z\1E_ayV[skBMVvs&&LVJՅ$AWLn]gH)0B,LZ\e,#ޤ` "jȑ@$ScV| JQ'75Ղ0l&6W cL^ |bhHjcbaKn|mpM3,U,2@{+o:aa3^N!FЃQB 6 v傛jSDfch2 eڲ̾]@,7TC0VE+UQf/v@?l-SvF<lDoa/unluܥP2}?&b*T!w+jqFCdƆLSm1M30T.ܷ0P;@duAY]*_g~,]9S)t|{);视*Wt5O UУ !s')*x@fP"+tWB& xfZt5E"CT|f3hClbSsX0'$TKvR&e5.~R!@'x-2R|&nB\=l{MT6K! S 4iF<-{5 ׋%["c *dFvC7<8@t.ŔI PSLf*CCO w.睊p¢{B>V@wt0$FJ]MrZr]]2c2P9ފ/:O:~P)?4w S]+fUo]D4rrv-BP,J"_-u,\PnkP]xTt_nDC~T{P-^@b, {n!z9Ҟ߬7KW&3, ˋtɑ>mOxJIY,GM 8 -v;5Xl^+|O ؝bm|5W <+$pĘBg&x>lF'%)q(6 Եz2Ɣv"m~P(BlpqCmb+BjS5 pcyK>Uds[ \B]dއ{?k*ɡC~M r~6)" ЈȡXpss0Ũ4㉡ɜ@` 1J3^;x֏+n1{`؝EMjq\L~'H'П; $˜N=ZRc~UJ)z~XuH!Vg3£x^\p>R1hbh4#!@b?4s屛)y}νvkWB$Dx lKԥP/WT數6Ɔ2 YMy | ~(_T0Ըi{k ^_܇u * gƳŒ&G  2K6o>ku=w**Z<߽g{2B`,To,vI=(d2+kخ+^_sƒ&sGY*  Ȝf p6- l`X!aM ,2Cŋ"mm&XOf,Hv<~n(T1 ]^*,`J+X e܄5UöZa}vJ,,GӂQ"qיn|)_0 >eGo6-F͜8"94΅'yA)Q^lP%aWTX r-EtJe@qPc;;=mUV݅)Fd)1137c|`݅}!(ؽeEhN 0S߅E(C\c5+3QI:BmgKiRkKfT5v M9mqt AjR dݱJs P-k4Jaus{G,H,dV+HzAF[P++&-C!ߔβס>f0Wl :)qD0% GSWLߑ:WBep~kb+mօ: TCX1?D))XѪɁ03Tk BZ1CxGxšj)haxV!NAoclSR#>0V Ck +)IV$f^ _N}jZ\[uK]aATZnV장8i^bIRn(1(FkBQ135= ]1ٲ Q*@md m kc ;D#PVJ4+NBnk΄<ön%&CSlr(2TZ_3_x_F'ŕ8G2T}K0o3TP )-cP5R*%CPtT+8pRO)< `y?&`b">dE<L2PٮL (xԙ doYF, [kBF!v1Cb eL1)Sbz,E#_B e*9}#M;6.Ҳf~"{oZ^" j9Y #ajF&^׈B1BC>n"fpLdJ{d g%'Mcl,Z<2#;5AuFğP1]LJ Tw )V 0 >b'w;@}`16V'::0@@*|v& 1JCe¤􊨜W(s8@7 -Gx'`7e-p.b &oI *\,;A;w.QWŒ?h>GxP 'A)WW|0?k,;^_(,T?&pĤdȎ^k4o!DFnt'1[N/Z t9ч%;)DrʐVwu}O>f]mDmocK|A}s˞0Z.z^aϥ?BRiюA>NZ(_LiaʻѻrxVB\M}Bz.v[4el[- v_;a7^9B?~w [YFB,o3J_vK=@e}mJ^tn^ +:0#WO93Ƕʸgc ̱[)owۊ!S,nd`*M&FW{<u_0#e Fö0?  d*lP `$h"Y8 H۱a-&}oVzF$({->/X3wMc|҅`k=|X0Jp!T5}QdZ,YP%U3%D "s?>`bBw{۹Kaf>}#lg?`,*cR&:)~*!!kPVSKA2_)Y^ Hs uͧmWB B|I߭k+/FtZ%Xw-%`\tRH#<LJ#ᇍ+zr"v ]ǂ=s8WK;P\FP IDATjXsK>Jc*\7# VlK~8CZCHJ]a 9A}Dd>DH#*JtfN$;km6LVzc#l[{uwֱ vg8鷒`5]LQ04CcX+=mR9<|<H2;f܁H oJ'b?=>}*>j%eݪsy`G-9)p0IKq‘. q$|0cYX&&fKտ?iZL8(RñCKXcH/wJSl^I=6 ; -/Ȝtn3^QbW ˦do[@{XHc#?Il,xV1%Y('Y7k-|NC2 f0E bE3跑X_Ƈesf?D_T[(Fp?3X03AW?tLae/[$CYm {‡Bu~;, $N1( *9( @Pey&E?~v ˆ#z]`z@؇/(3Kd>LW菇1 4w'B3K%n]!@n9\#\V%{[Q ab:abB,ka)HVL_ `,ٴI΅ zxZ10P m8ca23_$XdH897VÑ%=k O3\㵬z."5حo;xy Hrf;=.cq88pq88pq88pq88pq8LJ8`sr{8< B@?j=^_>a?~p HAuM>0|~?d)<'Ā4̿ ^LyxEBۗui5Bx 0ŰcLg=0xo#PȘyL,7g<f>BKv X]HHAk@@z8C$"^b*pv 1,x81PО L +COc`3A9o/|<|S&$'n1Ce݀bV "%XK.pIP$3M1)|CLKAzj,e0+? VLL,dB0VP9cc!>ܐ034f"bqBːi8Hcna>@ 3SL]Fd@`M ܏j" Hy{lN{Y.fXQ>)`Bmچ $8lu$X -?2G2=HxR>B|J1e(aTvNh=%e&XP~I1O)&HI6X5sL~}?n 9ⷄ= vVph*!?\𜼡1 0PG jk;$˛piѐٗ eL; 1`}s>xgUR&`s,+'""*rf,C V ?LƜ׍{?3!]uDr(LX!&oȿC OiʩVp1s64}ЁJTL̀kbAJP R!*D' z .Ӭ?p A^13R!`9jE@mvSg M * yIz{ rTb HB@2-\sR}1u^_柏Hkxҭ"B/+)rx-m_:#*`BHz!|P )K&Š}IsрyIL;@`}RD.ҘbL);` P`lcLCLs }}Tx1q!|CLP@<.~?V"#h41̤O.xι @Dm8e-|[574%ۃِ"Sa@#jAB }1s nVc33<lt n욒b`fzFdȬ}vpv+vXn !цdgb*U-7[fd)=/y8`)0'FcJT3w6`Q9|ع/9[W-/kJ  *Cdζj霳%a%$ \'sXx{&]S HEq9US>ˮv[] LPL/cǓُ2i˟˳](6 0ӷ0@M2_WAW//u n#U/y }}`0 T̘H b2Vhbt/Y_l8{^?rʤ\p@ܾHd[0W`F k{ܬHeMaydG s-W4Q_lѥٵ'3es,_N}ö~ 9t}/@9bI|_ 0kVMğrbȐ:t>r٥Po UPAm&FO_tqSbg-tڰA w@ ]5@oQ1 fGn}vm"%c 7t{A(/Ԏ%,׊_h_"SRyd3/_߰Isv\u93lE: >zι)0LqAf 2?iwoVIu\REc]ӆ/p@$SAu`"!ev|P-xx~ڧxK4?۬..\\XQ4h4Bsmu9$4d732?ެ/.2<`} *UptCpR4!Dz!*N|(5ٕd/ 濅|3jdeY{y {R=C_Llٗ_C әU2'ln̮O<K6.N[p"@heYn$IIs2dZj33tB914 B2L<7,1حRțaI+`͍Q&)ѕgk7^ώ~lzq6Z݆=p$|ty21N3=JsT2mDL-*' k<}l@HE|B+}ߘޣطiej%#6ב@4?6?zϘrw3lX߿{qܬwUʜԌ6{Cel!׬2x1T3bH4AMYhoPgW-~ET`2}H!t)r}PQ1|~O/^j ZE}pH2/ɲ,76zC>]X.Zj. 4MPI*Fs-x'C1)w]|?sy(8Xw+`Ǟ9]} f4~ %׬i}qMŝJS&=$$$I~XT=۵ !hs3|Rl _d@S6e2M o1-}O{л YH{0c X/)<9;z/WȘ/3+lW ߂=nVY>7!1&ItҗBLY}*yvRH y1-Zx ?SH雞i|Lq(e}/GD/]]T)O0;4=wW=pGNI@JOqxJ a. 1W98@ɤdZ H ƀfCi@m:oW_2G357CӜڧc veXU:˘/~V+6^n~l@$&N\(K2gؘa(cs0s\0QX@9jC>y_{7&_wyxRy9 Ho3חK%b9|cGG=wM9 fY/&VQDql|hMK|f<0clNUǸcLqkxZD;opvXpw X0 X` (7d~oxk;{@n @:#r1sMP3}GnLN}S `tshK{6ZYņfP C ':\f ˸)3  : w[0Xo v FՙZI/u]|l&'_7QC&'7TX#x(n@)V?gϽ40g\23X߻ޛo: |dlאn-xZ<7Ƒuow0p wM\.~bLx߁M0H0',|r,@`3TZgs2r g/׷ f\Z \Ox1D /XfTN&Y`|;J MiP5Sgl|p:[[X444ec.޳!ŷ=8u@eĤ|>y+^@[7l icRyŻ`bRdT/Pⲉ܀O4>vpAuv}/ 7lʣ#GGG8::p6mD/HkTU[׸4dmuk Hn;{x\bԉ#yQ/XV5Mʥ  #MY5[lFA@wL/7o2&ľlHդp ))W_Ā!fp&ڷL(F,?6_{$C Ft` ]س["9t17f 0N<ؚ -~la¼b;uAo, B홀$Y_vY$h״zӦSdbSOJQgboHalBgkwr <%09^̯KMZ+FUj#Tx!Pě"dfǟ5u q;qM..H;4/r)tR@[7^te1-(nf]xЀQX:3v8eS8qKfT0uÔ_#UYbvMfq ^UB^8j*( iD˖[, i_* gpoqmFI%^ Pƺ3/1- 3I&<'LSc`~H:i(qDD7v>Y&>g %3= 7ήM^ÓuTE"0 [{r6]ᗉ/\Z% `W;&JaBOZzƏ/k\v*;"B >lhs8Y"%{ x׈X9 "`̄6ǁtG0l(DKTwpBc;ywN>ڐi9To(8!Xݶ(5lr/?" l;l/27Bd?A'E|V ;sk:i5%7`U<ɚ{s"5xܦƴ#gJG-G1/86O>1Nc~G-郍uFx SKU\ޜXS!wx0b2zN;qvu4}5e|czq wg;$)`z5^|n`ά#Mev__k`w>2Jb*bw[3DM-^sN7`p*Ԧ 5㗊[\<nMa2g2I=LŲPmPIpRaOb<|chNoק=*7)%|2S[4 Gw^KSy3l}-?%9`2{92xS[S&bVD~W>S_'hWg;Jf(P.Ul xvX|n]u3}o>Ĺp!m` 14C$*ĸ,  p#Zl13m~+r~^jD\Ȍ󡚚ӘBS+S&sH3>L?G!̐tyή'_Izd7/m]㥪+CZa.or>xG1 aLV (@#m8<1L ӝ \#lq7g'|L~U˛eЀ%}c>,i~USˡk4gwkvIRɔd\Vk\k,>1qBMgKtokX .^JhD 7?.`4cL`kVKMM1-u@ZߜXI4? Ǟc"M¯ Fdwܐg[,xvxdgj W1Bi->n0qI7\߃:2.- ; _/L)a&}%!7Ql؅+{U[ ޠc?s3Z&2w]߅CMx̵Ŧ9 C nݍ ?VqLfLl SH.>0g6nT$5Y@ Cl7vEC77;a~4M:8C7,-a^-m Tl3|;5tyrlCB0)c2:mgMB؆&M Xn6s׿R̮\Bfaq7 ifb>SN.+۱,'GWݲFuc:9 ҟHvMFceY-ݜژ@[hp?(-B¡C2H1&-6;[QBx u$§h'쌯N^[1_\tǡD":2qD QKoxycI)6pv4r`On<kr`Dǰx<:BHNaԏMm)4Za-K'\˦e==7tܜ8!݆=י0W3xtioӋY9M h*^UK5`Ĕm0ȍ ":=?Y7xن#ߔ m&!PXPD˅X4Ƿ 5~,nR#X$h/%򥉛Or'8nam.^V59ꩢMT,c~rcu6mZ3nN !wNb8YkQWKJǻ@Lo_n M +_;|b@=ԚdeŀbB}D>^rL鿥fBfdD oj h};!{ƓO|uZk',.ȼcspN~]4IN.F6嚠;(?wiC \|;1#4%5R0vOJ"c̡Yh _$2CJӳR~btK34®@nCPݙ< ƞThgbdo՜\!IQb֘ b}\r?Ź6[',zl.^KTP ~|gblxiTT eC PDBX"vA* \Ms[Ӟv`g;v@'mfqYskqqf]K OdÄ1n(l o+dj p  3 `fJ`i?=r9*ƣΉ48p2"zpY0G͋ ?ڤw :s<=8Yۈ\vD}!#%0Ӑ824,$3DiTNu8.$Bϊx 33fpqowxj?KYl&b0i#1TG3iRyv3|Ҕ'>KcO \q@k:ເUT#=iʬ irtd.{3Gع6K]6xZTap2\*;Pa 1INOޘgg! C'"2fr7˥=.D@#9Ā &b@ A tX_`w$bztRXq Q2Pj ,%c;*kI[xPR>I P$M*Gٌ}nhd* `윌yHB1$D83p֍w&O0ot Wh'a;f3.[1BY}ޗ) ub )1'7x5(#۝:Lx"^Hןr&aU FpPM"9vzb4~x3l{l'ur.Fq~! _&"/ $qmN;T"u?&z9 OL#"WɠEM͐9=BїfX:+u>fqLMo<ӹ))!]ƔSVE/ʝMûx.|yʌp'z[=1A!ԬmmN{w]aw܁یwֹ_ishUQ 87`r YXV&83zBD/ 4U 7u"# #f6ݨȌ] *2U_'*^#߅w r"3 m@AE[!"̈p,CJ|NѼ[~6+!8Iĸc{?ɐBf4 _0 EY> Ġ?׻ƚݘ}e WBNj |%ƬC'* >m”g cv7n"-'ʬXsŭ;[sn@!w'Tm\v G`Wm`k]4-xZ`6aC٧mN("GWF8{Y-,X/'|9-50Aԫ# ;k6o߃/Mq 3 ܪə` t&|6B}xI%ʒi,Ę(ɓVԽ7XfF%|!0[>T7x0{ ^ٶxmbSYc`^ o~ZcJd@im$R`$JcY-ҌԳu +qv!IA1pɌN $掷d37mr'e"ecx/LS`K0eq=S@ln L%"z)0x%sS8B4!,Xnd2ƘX8:KYzEsQ/Ci2bu1;|g9h'|F>D;=5Q`TU*tK;uHjsN&rG#u J+$K+~,Bי>mjlڴ|S%*@FXvUI6' 8LZaŘ(WLzN$/>՗{Ɓ2A_+DI!ce}`;#oHyJNY=u4Vhv++t{4 RkvĉنZWe펱@l( ;>FN=7>>(T8Rojv0 0=VJ F z*ݣ$xt`ֽHN 4e>aǙ/3 ħ|2T&H'rSFro h`ӻn/W0#0+[uM^Q^6F$lVmyƛJrfٻtM:dTXa+}:.SsB\B;nD @pճB'OH%=Np0C=̘%D#H= ׈If| \Bz$r4mk~jDKvYۢ bm&6'r31I$|X-%|:0WcI$;~CgW "A !T'0cIu v$a@7{*o1~ZJ_TX2 ^BO1涅YRꘐX~nU% gh݇@t~aPI1&`R+m7?v\Ou!(a"/pfAqb yެ99mg4>b=Wa.LZ;}6 DW2L65 n'"7Lr *v{q8n׮b+ȪpGe@Hb@q;mӸC37ʦ_dF͂ ytxA=0ckhe~V=>m*de&d.C`TaQ@ ,|jtY圲 >O.uV ^\Tw.o-r TJwKb&uNYD{刁F@ӽ9%Ц~]Jh7hΧA/y TfLxu1аkoLYnC#l}BN2^\N9N07V 7|EtP+c1а?k@ν@î$ȁu&d0qx ϊ`n)mj*`hxIǔѶ\]вۀV]Id-sQb* 7 (@р:e8ސ2]-X[݄}OچEgnA?}[٫ۍ 1}tC̖ZqDFݶֽh:e*`2 יp F6x+fbfgB(#l<)ybbmReD2aڪ/Y>oѰ)@xA!?OӔ'iDyD%Ax wsX(aHjg-hŭϴ]UU/ 46[&t^w&Rqّ \͉`<A{^% WC8obm57]\#)HfLܘ`%[N ]yLu}hC]6"3"K/SAdy<ƒ9OWu6;nȧK*x^`7,][z3'&44ie>v WND)ǀ2nO֛8U`A,n<Ʉ'xzNP|ȷ ]$cM`S]&We9Eu~>)9^_L7MvQe13aRP/NJxCb`D4u@]Vعfw x^ *ũ_E.6["ϿUs2)M $I7Sx[6Gn21S!Y5\m.W@^ED{7#rp9PрiUx";1Zi36+',9-GB(HuU_}q Y󶦎6*`ÌPS }jOP Uim}0]V&)ꞓ|Xj t$ ` IDATebx OC]|sMJ1+DD !ďXf ;Kt-]hy(.fSk1榞/!,&3)C>p`=r& IlIT˖*@ =|R^@~ɩRU s4Yږw T0{qXMb1 A/dP+FeKx)Cwܼ!fa*S%5_aHh6hjZ33H  Z,,P&x^qȌ8{gXe"h6c5^ Ia&D0`vʁ@։_872 Q~q3M}^1 l5ZhW_-bk\PUrvs"M Cz );)>8AԘ!Pñ DX"_y(+k?5%Զ1%3#L̹sqXss|җL=*dmkk^ ]m=6Ftq) +i,˂6A}?y' wmblaY&f_0J??o /ȭ 48?b[:֙4%eC.,I`* TBh OI~ 񒗧o2!Rm#R7@/n;GwV֦.\Ny(|3Lp.ywê}ї &|U{ :;?5"L296GYSXgM^"$Jf<$^-Re~ĽY+>^VKdʠFThahn[V/'))Gvt6KuÖמ5r\tiS*\OIt xٮ/ M.P?a136@VwNt3"Y^^e؄*ؘ;WjYbÑy-Vom[om[ɝa h´I֋龛N1pExN̓ ŝdĂCSC] s_ϣh 6ٰ3[eb%Mf-yk!H2:fp0%' /$Q<.e jۚ594p}r'% .۰BxUeȲSys0j2h51,`m٩/t( f"+"֟WH *p)qIfĺ5ff`}҂Mf^7g¿M%x!4s8y41D3̺fuCߥI[*N! ,1uG!' *~Fx"X29էm9g %58Tv%wbx }[&J&Vu1# ajfbvc@6vlb͌s€^uu}6l!%-XojO )\a‚[7~6ڐ{LvY D_7xU"M:bZJ.,H~eJpe8-Ǒ0A ⓱fpK9+Ӆ&&MG0!.;DŽW@0-`>^S>eoS g,.$LJ}Y6:BM܍?wѩR'bձpBLhG\P9z$\7e;ŕg`!=F eқR;PngGp*p`\g& f!Bw q ?M#| ~)|`b q_P##9e*~TXVj vZ5BKB\5Zmő!"\%bʐu{Igt .Sg(GAОDs\MmB }f< /P QG9N8 MV:j^11~]>zrbV¯s&q*HNP3NAwz1JhrssM P^A)ꘋJ!fgtGE7B#FI=9! aF= "3psXYGwFB~ခPx2|3|>W)ÌoBʴT &8b%o5*> S&l1!Jv蜢"ݢX >upP8nAƑ%~2l's=c{z FjviU dh25xq|邲( dYbAkES%q^e 42 >Z^hy>0e(/CU0C0^e }R vbkxh/ͽq% }GBpj|,][U XTH IFBeIHP5kÕ⾥x, ߏJ& YSXpD xT\2u!|$O`W%QiC3+'M/d}3Sœ&oX 0c #nΧͣs#)hs$) tOIÌC6.[lP'H`!%{d +bx Z3UΰN-FXWM3LАIН[p榈1s=/IeR*Y-T/)w*07MSFCI=^\pR=g$j{[lǦo%~jue9>*,;%ҿcdN( svq2e,4/qb!O&@y@MS1˒.)+DTzP|*o}> o"{ ^Am-hP)c E* e)}6ǩ5)Yz59eZ[PVzT.٧ @΅)XZ~G?w G-T&닏1S r 1#{jyF壶@B =a{NNj 8C_r# *>%mG陦x5xk|O/=Se6MWXR.e/:y9.؜V `cAWj"OvL{ <H6kB~2X pIVsm"Vot5k 9@JAJi,`Ad': $x+HK͘C,AOw%5.]SG:,7钠Fxmo*Lb6^R2Uq@x߭y/+7@ďˎ̰nMx*^T6QL44_g<c(fx-^bjk:-f򶋙k0̸oYL ?ab Hjc;?@ޛ@Gk#LҞ Y ͅilo v2 Ͷ~!f+#lbT `&.[vT,c/1nlV\\xϜe9EXm2]Bʲ y#n2_ ze CYgyCaYvj953ZfX"h0*f,8d`m_3ujbODg\" +4({\[+5_%n/;_{ә:xJ@f,?2&s4!lswI{6|u]n?OJsz-ϝWG)+ 2d{av~0<_Mz`+7j"xQ-Gضf1-{)S2cݨn2Rڱ4.6dY#KňeR%gXXq)3ԯ@/o{2f&+J%z _@NDbL m1=|ضgelB}LSsj%7&䲽]1Cm *w2e&^ƛE%Y78FHse莰2aYkp8?{ <$P5a'vc"N^@=1Vk4 Q]mEAE[HH):"Bfd̼ mP/)o$ _TqrE-ԔJ%lλQ0L}S1S=U)3/ި>&[rJTjh҄c>o(@s/{Y)F6:/)oG| NaWYqJdUlDx"6R$'~ cq[V=&'afٔ%r 5Z1?-!<CMI3c߆oYTKMl,n`?YBԯBE~/\F#3,:` ;Hrg,@j5̺C *r lLoK(Oh^e(4 -KUTM6k`[}?3Eί\ُ<:ƺߖ5kq^NG.(!V͂YX=2aTBAƷz9|L V‹7=}_y3%S5b5r ?N̯aszpuL9IX9ӥ P|-"d o{rx@/ &rD|,>0Jh)mytM5Wj<;2&族Ҫπ.'czX3ROULc1-5(Ʀz,uƩo:ѥzmbpex` jt5zI!#ϴ swAL. iBN\ ES$KzqfΖ [N%UJMvq.OzˌCs ԹS`K8) ʗ^gSlӿ Dlvja'~H6Ӗ\_vӂUlBx @x,'Ayرdu&zƎŲ֥"BʡTN*#UakbZL3CE!S1m4)fT.yV+ As+J(.rʁN@yhy,ٚ^n|)9$B1f&e@T'S甏cVbJl#D&4T~a_57T#{&R(w䐑`N0Н*[1IbA tR)8XW2/`E/$P g25*)KΎZ,STsͨ_463b L[{/f-tLJRx V*6ۈi',CEs99%s)Z#m`{7\OBXvS9R1EDQc&Ymm9?:%RZFS(P,Ko IDATT6e7\y@?+ 1XZ0ة0)OZ@xs`Pޏ+vxj;sJ8 ԰ a뒫GBS>H ~H ,H-A&@o07a-] )p{FS} iB+Kaf&/T+nip,@h@st{NR$LV0eU@kR3jՆ.^Cʧ'{zgM-ǟcD`Z*`^2K\ \$2-E {R(ka^֭'[@2}/HuC;IȾ)"c"Hp>s50ֆm]tiQ61S 5QJ՗ݰZ 놽;fac$._e=9_&BBp>ܩYu?ELL{A~2^ }ulv80rk-FSPkϑBMhvPX|cyP0Mw|IYK5ADs5 a&ٶE& s6؜jXypN(҂&ld^3+τ&;x}4?4fL mH aNb$</:υ:Q9C F2h=r֠rت)ZCN\ohQv?wTK/p=/Lv> ]).ˑ=ljT+3WB oge1T.=,,뿆8GB>ksD Y6>){5&>ZAeޞ(LR @? 2o>1x!_ 2$rZ2"LLG_I˄j6yz}SDXZHJǁ1&c 4|2FgOf;eB@3&`J}}efHx ‡S %;5qG$LBzE}06SbDx4lbc]k%GW[ab" %>.5\_gX r6(ETL 07I)Sôb%ct&sjuo[? {؀8;b"wPIf˱2aX&Z+P&?%LI "YTEp(xe )dUօwRlvs]ȆGdf vf?6r/tgY2Fzo/M(m"̐ʉEy-}ՒѭМI)Gb]o`rf]x3=m3=fזh-!w]uV1'Xʖ=_mzLp񪆔 L  _nBKkt`Cr. Oא=,BУbm)Tί02X͚=:4c0Y,/^(V^GsN']`<%#g.X3/s6< TЁE7bNn<ݞeT@A@A@ Q M۱D/dRZ%@M9X(ؠ'fvS<\NǞ@"RU ?(3[  XgNkw3I96ʻ^}1(w|ezƲ<Ԃ%u2aY]:vz-#nj;='Ba9Xipkv^́M,@m;1JrVDARߜI RNW `el$[4S>+dfcStt`ڇ5d:0b = oQKvtHnAB9kM&Rp2}yx'NFlU§y3r9s[!:o*|<7"sW*ab;Bj/=@‡ l|`*xrХxp.B0[v. Ƭ*|BKnE{ݸ)u]Va`Dǥvnlgb3qZ qɁ%y┋ӝ P 6 4qdd; m$}V&S>ݨ`15NE'XDx Lsܞg2[uڗilsa1iW!hcrw~Yq }LC8a G!É@8B46O٘UƬ-{ߙHO宵j# 4wx[7s8s>HXZ"LdLһ{7^iE :P B7V*k)a3Yy* ulTX- m~ Q}S8K/,Z`D4ج\P#]6莂 ,Nt>{^!LYɸ&$L1'j{'r!ȱ]n Kq]e$(sl:i,4OF W >Ŷ;¾"|y Uq)D\5GOfʚ{eɅ;lD4k/PMZvCq>NpJnљT?TGX |J_$2}*4Bwm7RZ3-xS'X~-ޗLZv~g؎1U޸4f<Ck^aBd=G{cLvsĢ.υB!ajt3bŒn`s*bg'[ _T3Ke&ʇ~Q,'csAr+H/OJ쎬})Y1,}(/T}tgAL`:x@׻02ctB<~m QE v[1e X,Zlg=8ϱkEKlΞ|wwbB2t J0f-F1.nb}.;  qpB/y X ,GmB};ཧ&(Э*ȰY2S> & Pn[a(C5k49"Scstk$;a tG6\LdBu'ʑd5s5B_|jwfx2ݾ@3@4‡4ē!m.DQ{TiF6Y_ӎ 6t7 [(Ya*ff<0vz~\ѝ';b:#][vv쀷N67`B٭ݱ;vcwݱ;vcwݱ;vcwݱ;vcwݱ;vx] wX!>*vO>o< M;;={)xb>p;-9(p>0q\;/r!^ܳ)쀸޷*NGd5s4vFC8,^F¼R 9 c7d8P@WĞ;7!/7fcն2)vT̔?[ێwc3! B ic Yۘ~5uĕ$bdJdQҲ|c> lk =e u$X,6;s3O}OA(J3S&,'@:(52\fPx)0K, S!ƦCRozҖ`ny)}7L3+CEPyI,2(x~t9n Gӗɣ~n;{C_*VLFh2&!E<7‹]_,ÆDރibg =(-1c,`2WR X[_%д>6! DJ}{Xm!x ScLJtC&-R>S*352V=,P>@+ögNT#c d/}9waܘ0d1<5hh %r%S%3G\l6(5^gcVЙ.,L= {)eq[s3a0 1n9y‡Bwy3LTJYJ %`CDHyB~d@84?ϗJS{{Mwh>2x6{9"m\u{mxεmc@@^/t^#O8086 ?;VX9!&6BxwqmY֋ BJ(}>c륄0He D5H V[fffS1`T&ž)$L`}bCev> ->C!<=l9L,N*)5/(]T'YXs/8֜<1 M̸FAD[]zAʂm X V }k4ĬUK XCoj9T %b<)!UOx?FsL~aS=F_f`A ؝]oD0@D3Rٻ )?bWoKfc XPy1aX8P>f'= LP <U1E>/>3xrb:RӃ+*z-ɧMHD!HзڟOBIӱl`_"+UxCǡz1@ 4kO@waJ`*+VWq1[j\;5k(˿~К6}? KMޡ;R9UKŚmRbCq+H c5=EJ}rU~֋l|(Ј}-xH-I!&'lM͘b3ҝʃXr(?SC)[\((O?-fRB!PlvPl?cꋶ_f[g Op>dIe/BNY[_lm·1$6$=4Bo@2J V s;0] g(+F_ e[.DT~H}ӔٔU7(RqUtyP/K !R8 q%"*߿tgr [?z9bkh[GDR~&BȊ7T>&TYWo=fg_Z "݂=`K:R5t4СM1^Po*'ROF9S,N>rMU"#I@ɿTyج7 Jy{ -O(O)O_gkM)6bC2dbY01L%{M&65$MoED9TF<9)?S̏sȚ$H}J,Ce!M\w >w1&HJlgLyz "?ohx`Skc%zX.&1ŏ. QGd6=*˿j8\urxolkj!9) 8w;t5L<,9JĔnbPn^5>b%D}bQ.Sų{wkzY.e2BC(Y (UF会o 3] *`*]G>g [/l=/<bhx_3mBd@})R9KȊevjʓ[n_W'I&c(:?!盖2\\HT ,>3ƂZg@eT1}[]S.Oz8N8$O (r 3xcϜ^xOb7 f1T/а .IH(qr?Ѩ<tsUJuwVNC>3 e!bBtI3 1e\)3f~*6\O'!> ?Tc> } )blzq2{(Ƴﱵ0B}v57)h4Bc:T}ɿw` ~)Ig@{$̨b(ȖoJ!6i|tXnvJ|:ej'/ݬ 0?&`C#JM& sl1EW,}v ߎ70RCɻ4l?1b8/xLȜLgH3CW_vpy4{%9lt$&x<^LKZYk&177=](w3T֫ hBMk&Txo`f_6ݱ*D=wH*=#G;.ضla !wZKpld3rp&4A]9eL 6!2 kP?MfHy'[ol*,t IDATkH2ݖ2㋉0.礲` P܂>|\ϓcxtdla:E.H'PL4k12qZ\`30ftot|`]m%f30N8&[0gX#}?gm| @壅lcG^ 65}>Ө?0%lr˓ QoP߂6Xϓ\e+m6a6N 'Ō$[8όnje8``boV\Md繖` 5L|11&v曞.#&o7^?!_Ԃ^69wLi驗 =56/ 0_vY>߬L)$qR8阖P9M~QӊWbDY["pJc8 85gj_( hT7e`.i3+DI~b)m6#0f \EHaF)eD @Xʊx\O6|ROAKS=KTFDT[HlbV˒Ӡ>;B}] qX1c_wlc؍B߬tCe3)lU|bkzk&L䣾 }%b}cUCCuғL fV.`fJ~FQ')\.aemE[, [-rf0X\g14"`إn+㑡=8Z0A1:fˌ6:4)Soo<yJ&3WӋ.,6/:"vG-wkjb@|HׯPJgT#z"C p^> ^a~B!%eYB5V5~qQZq0`856Ch ^L\4x "`Ą:ǁtG0Zm(DsqaqЉ2>fl4o֨KSP3@'u173lf8?O\>!RuÖg[6 VJegM& 1V>Qӕ5V^&6jRҘGl ~5~J * bJ9r4)am6Lxˑ;K(8quT9픲<zD=peGxLo;X@> hkTu99.:l~Xsfʯ ZsnDp B5,G1k|/qFh ZbDt,g91W`3fD oMh}Hq(fH+iOeE?e߭ݰCY;8!Q2ibvP>U~¥/\dM찓$v$wsd;)SU-5_ͼ'`߅,; VRl&ryS˂'` 5j|=Pp'`.q-kOI1RB13c*~֋I@PC_>R ЁMĿ?hҝݴq'0G7ruL˩hIvEeUǫԘ7%*i߁f|kU%7$<6DO W 8b+85)3l5)gkN1br^|r]1(#:%}x40+%TQK5U`|fuf>homp2+EyL;_Rc* RC|a 0~#ee3bkM:o`̌󤐁֋~-l3}Fzq'jxp=`@",NBH?.i_f^g0-elT>~m{2TW+Zg>Щ|MN!\"+&O'bkݱ.7$@ *RHq;b c,AZsMC!zК6\bd&lMV,!63su@xPvs\(5[`ob`Ex][-:zE$6r{a;8nڭ{ 2-{)x \ZʼA%:y4/;8aP RC!km7LM\OfW6ʳBmeϊYz稘|#Pk+1<_pGG.`}2 - )V7bTJ!0F}r8Xw|;9AE&=l`veY"_\j\t HDG34~|ϔ:k)F}suTu}S(9YoOIeT>u2PLɾHXnC C#lU͡#BQ +Fjt_5 էf-L]eZ9R %?[c౺mfX+3<)~& DxxJy 9}e03kS*4޶^,ڕ,6/psab]~TjRDYq}Pn @pgPmƼ~nV0@/V"Q9ݤA'':ә/u4hN`f5~u@)c̵ ÅfJ@[`|4n~Egn_P#\ 11W.ʍi;*$^cX>+@ momSXcJfł4>s:gfbRlPs hz^S{x2Y*)P^kl]2c3)&nCH~/|bÕGwPVvQϨJZ >zeϾU);BH@58Eճ,Hv&hhgRO>Ey7TP@hu8׋թeo ;vfFk< VM dׁhϬ @XyͶ!*qBy-kT:sP'r"LjU8,DhMWOϸ ݖ8)nvOU͘b+;py|l2@M/tU}dk%ru&7m/,岽8OTc۳׹"c4us KU%)۰jjsHc:rIݤu^e,L1SSbbS~]/ɸ{.L!ӀV6b*\\zYs13eki>6ye?GN_-:lg ]+-s/]!RL8udRa(˅Xto[M#Ji5`Wx6U -m7这f/lJ" 8T"@Uy>K|em籵0,6n]h?DZgkd>;b߇A9dP9dUy]2> m?F%-oMOYbfRV|y*ND|YEiz 4 %L`+BJ5r%9[ k4 eaf )[. o.ȼi8Sq |a!P/A7xioL).EXʺ 1Ppv)(Q#+U[ʚǴ [֚e?5:ڰu/@vJndLɌ-Y%ٕ#9ޜ*kPlݚ-@ ~_ lÀg~0lYl-jzf7I!ry=CDOXgqnU&3N73Ɖ50~fEҋ>kJ,w3w<iFF;HBBO3{vf;d_EyoUGv~I筵˴dW =8+潥rw=g9ee#Gt"뙫b'OCΪPc--oŧf qwPOWhq$Lz(8UÈNI9v'%1XS(.3E;<[1I1Z{5B;{b?`Mbэ3Y}5`O|SƦf^.XmfI3>k PV.}nLo-_. $Xy?!#]Xȗ2L$X{ FʱJ-j;qT|t\H OZk. ˑSQmJmۘU0񜕋{`ƙ)Ц\hymƪѷ[sI3?2׵1d֎VБ-ٲKw3|Iro5Wg-[t)7rjvrcf3uԲ)w[MAv 2BLd?cvG_fS_ѼȋrF\4O# 4a kgoy< ]pCx c Pruw0Vfn+X-+s ٓ篒_ #M[aGb]Lw׼Ff0gmO7 r0L~UܧfogsBf)0ˈ<}*^$oPD,Op x 驉+1kw2a!9 >@prSuݮ).߱x1tCQ'scB>ȝJcKeci#f)7>ȅxX:HΏywq0ق۩:<"8C'e[ww }N;3ؤ)/cfdĚ%6JZ/\6^I4TTbf3uphdr؂ ^Vbzd uR3}B~9H7HW!=)b1cActX1v-eiy8'6UX382\N!4N,e%wXτճh^RFYe6 cSֈ1^:46F¶1:)}O^L"b2ػ]a}'3<'o0p2S3VYS9h)n*9=61~`4"H׻Mݘak S-M'XT P>Ldiʗ 5 bŶ̘k&[q9jE`ΰ*9R@˱Y r}ɓVo;:p2@E=:Ѯ;fU RݎU h+b_hb?Kpg?o)g<3>AdI) IDAT`e೰j>y\rbS ]Xpm\ѳ:Cxe;z&F؀zqx?v`檿ۜEK LD=fs,-V165h-^ bu/)WPKDKHx9GyMdI;eNAH 9G.UC(A:%/ҬCE󈽻>u0r^Ӣ 92Nfi pq.3nj7J9J[3q_ҺdL) ]bKvwEݔW2v()P\rBTZD >j,FqPLas-r-收~-> 3)S/BmdMfsh;Ëoݴ[2EK@ /)PYqI\0{;ҩȂ2JUZ3cvmDZK2 ~J!MLeC-D1hAdpHdD*n.Sf?,02X{%dZޤc2w]%6f}2ά2#t(FLI9Z+,כ{`_6{AVL\ꅟuP/s5yP/$OO)qޔ׊-pK0e*wU TݞZ>ގ/tcD:rsҶ\%Y#Ls:=1L`D5Sqyx9{ 0`u92eu,\_dƅtD@=}qkO-8;àȢ{ -](%)?d?p8O+nX-+~R#L&%VN҈6g)ӪNw̵wg4& NR~l|̕î}F{P1cRC)۔Fc:|KWdŶ*Q2`{~~+di޻V%P'KHͥp^"jTlA+'VDF0Y\MkgFznGJt`dW=DB01],Ӏt̸C#"K+[!2QZ)74 LM(A 1ii񮶎=iɤ `'`^7;40&3aG+ KY f<^]QXn~XBV~:Xe^kn[s['MSV/aZ)Ux=;pr DWm0&OHs$ ܄ū@Smx5>PO]ʓIהC*q7JA%G$-^.Ƌѧ'@5WXJT$r+S!35@d* /ҍ2 w?GhkA[o> j%X#T%)HonlGG<-طпrV5;&h[z"k{9̀zR@ `=A) I*П Oly!e=~&Mqv\SXKħb\j3Ma5pbe9.a\ѐ:W T|lπ|迄i&x=#8, ^VSD.{kWN(xu@ZDR&L߅zSi]pǐw[ț{䝅Z GHhHW)Lk,Ȕ;Iu6c<>lZe6~.n KDc2",h"x|sIb=v"482G(.EjxUe(_! r/VH9hHT落d t.03 g6.d0L)In`sf~NXUnk0o֧@;+2X]&G-gѷ=ބf,HNƬn x5C zy_"H yՌ,.s0xD$~Zz?@k !2wfVvVnl4#ZH'if!H";H $1mL@h;pywƚXu#P9k3MY<`VlNDxD;YDS| /oCM,l긮}%vxWpWZ(GP3?$:v/Q N(ZRe0v!op7B^+dhn{әCD6s,G35DXMn7VKbmÖz{ĶX >P@d4tx{cn<^dEke3T)8fM-5ǝ=~v" np÷ծbJJc_"BǼ~ ^"'Lx=`&$EL&hլF.[`;=LJnWO+ϽAѡ+*4ԭjVTQ^ rls_)Suq%:Kw3+5K cx|0qǸs*,ny9pLJ:6іBrs092x /p N03wɶQw: |J$M_㺙mqV'`x`~ǔ)Sʎ&uxF!#u ڪ`<%B{<6x>-S2 \'@ CREZohюi=*/75/)#"'«\a,̕XL'nԉZ/ć;9_/߶WaiYBlJp5Ml$I-,E$Ÿq}]W]|)m r.eb),^VۊUz u)^W@)s ̸K{.& >`f^j)%:tw:VkrЋul4OLe]45(/H0l8 W` 5"P10}'6jnkT bf[Z2j |-oX^bdqˇyQ;H+",>9^Gs2j2T.mW{qq'C9W,;)mou]jɳp#[ǔ{kJ#JO85{7$ Mu<3N@,c%C Ɵ>*\>| |mq X)pUu4߉׻ רsF0m_pȭ'1}Ȯ9,L.;ᜈx DT\ t:J596|ʛϘ_~Nֶbޒ,I1MO)MFa VXhQUltOl˺S)6cƷQ}pA懲 Dd;K^K"O.0eї5qV K2I! tJ5\*g.T=vZ-ydI`u]gSbqg_ᝰQI(yAvISCS]E-x?_W c 񍡨ݭ΍ J4W# GLpd`bf3dntB6wZ з%PM:vi-ђd/;npnY9II'd(by&S1fu9c m2GD({jgN+<`WNzdN.tY 6H'e|{;=*cyО@tr ,Z;yx= 93^&->uB Ax,㡚Ac:>kQ,ifXhҘ]^Pe{n߱X=1/U >8lXmJ}&@Z&[|tR<%r9r,BT'`UaIP(B1@e`2b}]0#B0*@I8yX)' ,VGa V/m S0^,krǂz5ׁ)/+;u;? ُVHeIS lTʅ=u- Z\&VC`/ys-j6\Ph&[L7: 0,n,1f2u')g G]Ih[na ]v2$Q>%> ΡP:\^4+p-5|4K-o@i+a6`FF_! =`+^8S@ Q@*ɔWM9;*if $K:֋ycmE̸Œu\cq >!x^2Zjo^-X| 3<nkI|KP14+ ZڑGSb;ͽ8U O\gXX 2rM0a`:L~p3-'G4?cgb ] *ob6Avq-: /!pDM+:UO}aQs(1Oq LMb6oɔ{^<+tyhnNrkS ֜&}XXΔ1Ô#(R%}_ٹ02!LkWEEsrW .wh'd^ɂϑap%0b],ad7`KOlnVONvvV3/᛻@aO湰~+aeQla#<$,[,#%Vܤ{Ūsf郻 `W- r9 ˺r팹9sӁy"\3l`HAx,>%d|P}PW S |%/ A˿dk?q|׸\̂؟ۼӭsZxX(q]7dNisd76uT"$4+>NϹyIXdcl;}Dr xיqx{Is舁3dq3 ޷u4y_^a&箛|:1u.2.FH&J@v~7CkJX~JC~OJЁ'd53M,f+g-D\-)d 4Է#cc/;4]cXq\-@}X6c*Y,^*;%7Afbw0XˆXł-*Mrvc~P;$4 dc7_[apR~Jb؜{G̮5 IDAT C0 .it e.@ k< ~׭;Ʃ[qk?6o-s\wtsGR\Z&m7ޒm(ѧ.(+r%1;YX{}Up f~z;+عL&cۂYR d ;4J8Ҩ.qK u 9:k>l }5+ʥi].V`#vՅ=X ~7"[%K5sq^n?1Ԟ# 4;ѧҡtRvf [Dfֳ-1ɔ_ `1 8>"gq 4<TRtn$E&.+k+ѡ, \aw!z&k4Fc-P@d:…Gu}Sg9oP{93!owp[Mpd KED)]&cMox7mK*KVndvq^XR ~їV'+ݔ1JhycSK;in΅e+9蓦 %[ff L(j[^jFՂ]tK0ǏC`LD[&wX!sdiv6E\JS&f okS&vx ;ȮqGh- O.^+ATY O'FzTEOaD[jT @(e ձiFfSsbA[Dm2\eA;ZCNm0~k)P2ǻ]طD'o'4|m'}vHTXG,L(wU?peB[k k`8etK1Xܔ*մ`aM$. pUMFv[P9l v㙛O>E؊̸{~j܂éoڶwp|\lHɿOX3!7x7n ǒKt!e.|1h8D R{AJ6Y})2fƤJed0}ιB*Y)y=Y-y9~W+3 }^|F\.(stɱᶊ<qL S dUA O |zQXy3+?a#jbY I 8pU5j [@T \ɶYǦ^ 9笜 (Pz50ܬ v=#ׂ<LF&^H @Z& mt̥&LD@g{I%lV8H@z{Q5h]OC)3SS T:+#E.,d9|XP?^%: e<р;ۀ-vM484GJ;PXD/W R1x; }OVÔ29K&UkFkk^_0#kYN$ ;:fӣRs/6;sγ@R0]PQ2U˨xl0BEH6]د^чm'U ~ mDsYF$Xn)MʣT\o.lcZ]&:0'ksGS)$\cYI%Y3˾zy9xA.F-1(x}c)%C!c2Ru{TKSn>5\.~.(@M3+gm3׌Z\2G$ N4@c3]@-~Y^l.bիW&&I<~/2$χrts ۘb4U-c.lę2 S>dކ1܉K 6{r] IpO ^OĖX(x/B]l֋o-s12.,5^EzΫ,N3civ%9b^{@grDSI۱v9cʘ c-v.K^xʰAHױQq\`7CZ3U 2ƛA?5K$, vG87*0ЦїoKJʵO#WK_?0+7[ؓxy MBU9w81>5acLq}.[t|Gh51@k)\I@$!&[=)/T ։,5Y*ҤP.Քz`!b9)+ pu9@Š-hOJc fJk|{xbbɠnư;G6=m ,9fKv n Sb#L|@$tJHcdrepZZFX~*Jcqs'u4B[춌TJdư-W:Q4F%lA>#2K* j<`4 s m?jlgU/4;Z(av + KbsO=-mkԎh+05:t HoVnaٰۜGs[`K"czzFd+=1w~s 20I^iRE|v&3 a8Z9t^y.O)~N_Gz-+t/G6!l(d;@ւq,3{i@fuGj8ZpΈ X4\{ה]ԀP X;^êƯf-|}e1zC,/U !BCZ8X\`@JXZWאZ5Ni.skv8nO7_LoDDL%s p{{J9n㲰Z0kmۚ5Ͼ+` gYǙ.H{-myO RuB\;fYqOKh1C/Mhf,4݈~a1D$'P5O3A2u\cU9)9q[4K|bl:ҁqۅM8aT܎ x9!?@YZ ʬp3!$5;wLb$Ӣ%jv2`jrbc=R^ 0lD%;} ;?Tg1J.Yr ܁eǘ> f^I؇Lj!K>w` %*SV/Hl ;1[ D"%X'iF`0vUfc`iN9enar4l FU8"Ga0^ rS)bʖ ͊qYxc͒bDJqsq\lЖ ?8+Հ}ƽ̦ dH3k-N|6L5͆θq975r$c¹N Y-,X( /K2Rl\o~Z@Z2]2x(8HT.֜@>߉OIɑ\ĈEe\T\+p5]>1_buB + I-7ðQ MrBK4H%>3DOL9.D> V.2q.n_bX{`M<ْrb0 D7:RcX\D@ݘUH$K,I1)a=/&{[.1Ẏ0U+.) ~w‘--VX H0`%5 r@֬}1@N"m~B 㠈/@']J'ȐF0 >s eG YLqM>Wܘ˗Ŕ!G!D6t3eb8 @#Sa^FBQys-kUW`䌃^l۶"gQOeU$EP`fE#w kMߚC5uRd%,l6,ZKaێ,g<6\OUBFyOE1뇱?Ϳ n弽iC>HEX=[Dث-3Okہak`8LVWȌ~CŤ&ƪXlPnStRlJƿr`)Vї_=İO!ޖ1o*#G>3*Tegp^`ExNn0yyc! Xk3KuTJvmQ6m4Բsx@9{|p9:![஄+&!,Q JX aKٹxGG[?V`ϵ9hd=6\\˵ωMꙨ,8x/"g0ș|`1͹9p( ǂ Wv6s ;IM솰!~)#A^㑒$eG Px`wJ +f|)6< r.; 4Kf8@<°F0~J WX9B_EP`VPΥgadG-Ximȕ(yIKY+3b!|^L%! AT0l.ߙ: HIzRkQoJkF1R׍>H_]en imODXkWpéH= rCù.0, 1hV8H),`!X1Lπr\cvRcÌf@gs O,z=BR.CږKR f2-Ւ.%0lU'=He E$)CĄKaEe$zP\!H / 8w\Xsq=dMn&k.} $yzzusZuG,ŴXiVXfַɣDߗ2BT&^j!E زh@WT Mn^"n4jy˅H4/ r( rI| MxjBFV qAbCyRZA`eiuZXB2O32r0֚@;izeL',\pg}CUF J3pO%x-vg NgPVQ1 K`w M =3BNR-)r}ax\l؝gH5z CÖR;6-R͌b$pXpq88pq88pq88pq88pQ:)p\,?5vsSx%x젊hMgyv5\_:c0G~Z`ix  O8{^Fz8{*E@$}q.f!5 sfbdĈxsm*psq)4R>LxԒʝq_g\͔Ւ3<og-p;䄕 $ ڢNuEj#RJ8cǥ].jnߘ2Z)1̢10vY)xMy}9eH\>)_^m)`]&ݞs7?vN/~3B~1&k 1ŝ٭KK&Ǭh.C&FsJ@9Car\g⺱c n @ucDKN#:0rNȓS'~g!]}#N{MY.J?Zߩq^c#q|)~]{:s⽧X̃{>#?9KJB < r=9S*DDoqs:)9T[x<94 srE!_}rAs1X$`Nl${ {0頭L$*b=SW#Y/lyNzA7nTQ)KW dc r.AƘrQR1;7؛ z̯kp%& 3 {\o,]qU#+eRMb.3PG0i 1#$MjбX,+'E/vdWgck͋ M{wN{_0o@d*"s cn)~ݟzW?`*7*&$ȩ★1b 6|r`/X12\۔\á#Cfv\rqgػs̮:ؗyd105yWU`ϊ2N?v;#$0-7Y5HE\D{*g `Bў1O/Kv~ef4*oU.^:bxsbn c. VTބ;_?p"kJU'˱0c0+ey$2I}Lf+/՗ ᛮoU6sxU_o ܯOdSsl1DǤO|/'Bz@7fxr30+ϓcO^ͯͿno٫^riR@~11HP=7y2=*~g޹7g+LOB)eJXбꋟ壧t8S\}XawcOn/>W. ֿY~/|!d4$0 ~c$cL,/9so-TV"O8S2c/U?.AtK,fbΝSW7_OߨCbD\&nc`I~t2@<7dNz$\ DKЏ ,)S uK=ȔƞUb6^EQ(KЅ@A'|5MsIGd߃)GxN1'bqX\ޔ)ţ4!~LaL1rk(c~{^/>Gwjl$Ғ۴uu)+$ v%5s;nsn#_c"A0;?qb54-zp˹Y+3vr1P3TLa^מ @_fN\!7h;u'%`$Њ@YbVN<I\1~ 1q&[>0 c'Y1Mhfc͔xAɑ11WCMZ9[^OM[s"fh56wќ7QwR$e,` kňz1 Ny[pAsۿx*0OŃ>F\\X|?OΕ :]f26~{˟rqW=h6KlAsvP\ pV,KfoZ%5l{FÂ'Dda4KQP1nsi3~T, Lo ;~NS\ku /)/A`9]JJ60.eQ;` diCpXѮ\xt?%b2C`L;5dcc5~cdO$Ҧ4@I 7GWޘ]_{`/]#n k hl6l6b|>|>߂PZ"iq EE[Aƀ X],p ɔfGOvj۾p,[3fX-`iR2ȔS_bq&3C:Gu]9 vtt|&S4"_3f4( EXā~1 2f>`[4;||uJ,'/5^3},f@4*ۓf'߲χfG^zpt%Ol6ۂbZR'26^aF`֟D@bF{lT`xvpN ?|oc sQ$i(|zbO)]06tCܜ@x2 X9LLƚ zK7V^}J ,G^bs{-eYb>GGGQI@%4V$E= 3fg7 JnwAm<qQ'p,DT-K,_oȖ+>sI 1|I{T/s LєK h.AͮW>egkk-fpgw >|Ht)c3pNjq fXئ\]32\O w>5sD* h.!쬡ɿ$[WO:Ɂ'kcMozvjIcԤ#:]}(n:|kV̏1?`/7X? wzuIx ,  @'8M^8PN&i<^sy̶8];S&/aqaCb q:XOho؏LoyXN$": z<>FEtghD~\#_d0(@Aug~eɲgNUuoͪ&`,` ?0 /_,HLR=P&Mnn[=df;sν#"oUuW } ##ZZ[_AW5\v BZµm]4W74;A9 P#/;d"dgr#+L +T<`!p4Bei)ij NZ_7PT"r #4&XڜRCЕJ\'_A~YQv9o\m/G-tׯ_lkb|A,Nnf jrP){{Кeߜp=6 8^p\CTe#R&瞗/+mLxo|+K98o9?1͕ғ0lU[tboE2*ѵ%.t͆z͉|eKֳ744MZ$Kmޞ6Sa|h>(m>ϟȯTGG=. RLKZmto6\l竛YPu‚|Y](hQ_-|$gA)@xYj)<e=eqrB}B )ޜOl>kWb(t+K-ϞZILiV4tU_vzz:`/#NOOIrZZЭkBV-w&l8YK#yI™i$!aD'+G%4ΧJKѵfVVRM%˨Ki0'`dĂ9mM39No/^P(U|yCb)٘)9Ekk놯=&FX,xU<+S*x.s<9s ؈H &0,˺{̉ %p|x)NYRrgR-wv}Uؤ:Љ59NV?dfitniwII*R"o!xG$9ٸx*ֽJ˫ w[pIc0`)5(kU5@!/hP^.ҎP 'u[qK GH:C% ux՝q;~%]7Q__7. WU}N/6鎯g>BGFىO/?_- p'VR#[Ԛhζap1]`Spml ХTZevöZsmEi!ok̚uGH[⸫s H)Ӹu1gNcX_J=-l^]jX,KꛥnV_?ȋMY,@@'3,W3Ν>>}ZE]tol~Hh:Hu2Y2tfs_j1{U&?B"?9Es=xb:AVsUAyM< 'Tifj&nsTAO1;sT7]6YaFn*dO x%PM*SxJQemqr~ՋVZ!${v;99.lXl[_ڶeٰZh6^nZ~LeEirI~^-eJ:W;'| ]NںS+%²"B+ {W_^} ,eδ,O=1twq<шyU\=xrNvЉYz876\&,_βV$o;y_]\>+cǃ:SA&OOOub-o>ߴ|}rg Ӳ]PxHm6ٸ.Yk-,͆g7 j9thRTߠUx72"PF'M'VA1 =t%3iqs13.w7W-O7B%J`Xl?>H o,#s2{rE"r;:ܥܖ@?\r1#lA]{ifƦm7ݿ> \|G<ʼU:6o h7/(o9R8*$ Hڽ&ޢ놟ӗST۳z͉ܘEѥǰvS̥|I~7Dv]N7OO6_)rٶ OВRE8`|?!Yhs,[@L-sֹZ]5ltͱOcA!Kq]IZzRc M[j9Sk 0N=1(@+}uiAu닓;?m*pٕYV7e9 Y P}/ uP R-]BGRBY/7q̸50-׹J9{ w s_|Ջ5̏ IDAT;m(oSx;ȭ X4 M˳M,l]˭) ?ߧK8l3Xjbʭ=TN@`$γ KKRzO`fi;!g sc)X3R;saD |u[ N4~}E]L.hT690a>* ?xrr2B|6 :q=Un@/g:]mž\[z #{M:%ӱ= |[<S csS76%mr-cp,}1f c=opnT 0T|ոĪ&MVBC[wJ y$nF53}킶56-ϴB\9c \t*8ƌF2жK1p~)8WܒMio/i_:䮎M<(l9R"ՍoU\[СaK!T;BU,S <[tw,k);9K0?W>cqTDYxoz]w \6Wr/%=¬Y΃B IߘL$ͧө4T뷿ڷ0$C!nXs]klHM Ob 5ØE:ٶd!Д]r«n1y9Z}wM: c2Jyqя@3$s()ԝ=pN"#凄ImNo۔U$cV.,_.o7E OOoH(<y93KZ\JpRD}ץZL&Ío7bDrn#Ur/)QPA(>2@h 0p=,/ᣛ!\X!"W52 zNonKj)scsۖdU}w%$)"(pwFl#[W\Ub>50=rlHe u5J^dĬ\P5t3r22]" 9aIfJ~^]:*Ϡ[cb)S"Il:'x09Ŝ" akleW%*tœ)&oT5sdblK!+SbJv<;ze4g6qًJakiIPnSbAtTw)#OOMgSs6K_rٛlP/i7̋t]W.kPC''#b T%/roμ0 9\03>^@UO-`nEJ wac; A9NUHrL}28G*9D!qH$PL#B4a8|SS~MqH6ѱrFگz~ŠBҐf"l;;p:Xi7ı20W-͇\>k{BB1wvg_"JR[wOmI m٭(Dg,RID.Q>:kZscR*aNwhqǬh >KЂGgfEV8I "g(e X!9zgC*5BX >(%,X+"t'ւc3}q{ْ IbK[H6AVrcp2bR=3.J94R: J%5ƫ-`ӪUz"Mf.kenɶH R l5 (kaRg四*cs?sxN[p*k 6v*[wS 9 t\gXƨKԺUܞū .dǨ+}@%ՁZwkNug*ߊ WуЀ71^.6yR*?kɊ%Rs?x~G[V*fSgN h43Q8ێr 1Qٮm#)3y.OgJl(]"kz"bFv>=n19k]̽j4>8ΕIrN.Ю9 <7YT| OsA5rbo LЕA!tatՈґSԥћ[9DcLpevXj8 (,To/ޣȕ1^hkLy.{9'>BMyt)Y-%3T,XKp ) mt[ev?V-;8.0&8F 2N@mPIS{NRmY lgIV=vƵ5lfkr~=9tX߷~,tˌtpE\)=Xbe[SǕ':Wɢ}h'VE'j%떆RZ"WJ]sdʕCZ6؂ӕɁ-v]V8Bx~Ɯ4Yj''AKxPQ2Su|ؗf;n .V%R .s$_sDbw nرIZv*p`\D&uZ4SC SF@f?#&ma'xB8ѽEHQiJwQEED6nRmT/vZ*RYizn޶`{|awюh8Igp'ٸ<;!SR.XحRž: ̥%IJ g.+%ū=[nT Z?xLe͹.]T9EɁ*'ۇf]5]i5?/P|VXێpمF[$D1 O7ajCwχy<3(|= C:ڬ;F<10L2cJI, >KHq a'&ґ+,0{ HpzJjPn"<[i*a*>F_P~N.mn͕斍qC9p+R^m Vh(%P]O"Yc4%p׽35/m $$uNW~@ux$S_R-1KNce7h7d;:Z`K(/DbFjS;vNT)ۨ!WĮ1YSeM 1e^jW&RoJsu$?ELȼŮŴLǦ %I'LM2;KTDs'C7}'z(5IvwDy\,~UYVC˗40WʰxX5Ϗiښt(bm9'+\6Pm jo-w. evVVU xP$U芊 Lʠf!ԀH~;(PI+\F74DA}.G}ʶ~ߝC'SZŶ]7i.*"Tݘ9Cal Is.04h*ql-֫ D{W𹾚g:QB"H97B6V4U}5 }VN-2Diri}O =ޘbPV[ I#TJ-ഹ<>(NAzG&tmޏWudʧ7C2IY9qݨ>*{XBHʦ0Vt3rs/xF҂%~D:X=?m1m0q7:[֑8nl49DQ%K\M+feIl\acvfj81_4kз|☢knwdr\4o[a}ùvqrG˒0b⻒T~ '=΀QD2jnʇ#3\\Pi_|.$&S0'h CW*L K Dmauj =Uj7 H,P6,wk(Kݒ`G^&"UWEy T2, שx〸'W26_a4;>)sKx #93gr]LBו2xd-8MGZ^Ww,gx#UMoĔB2$] U ğ@|1YtIkwz)pջF;F ^EqGziۖ-[Dx zh[Nc x5tfʜTE.#w<-׵SvA:0j!V]( (1$UmlǦ=MT< k2[SPI!g'V3*Vt x%2K#I KڮXYPՋ{6P[4[{z׶-"#Z=TW5pDłt/_Њ ˼)Ib9iExw h3/8nQq]Ϊ} ۩g;/UոK!4i@lnoQ07Mm1M&˺Ռʕ1s.V (=E Bldm7`rYf9GUU IDATB{ZTbfi]nLM,j|?M[Zs&ڎ<iS>FIaf|oЁ D m4G~ͷ{2e `%%=ĩJ- +^hܕY'ufn3.3V/|'\ǕTq݀ =S\4\Xl{n+ܴ~V Yg8>LR:3&,!١˽w,zo\:\iX:P5L7\e-]r ayB}4<2V+V\XIM!Q'=Q+E2e1; nF.hA'TR-}3נsF'=Op%+iSizlͩ@AY ;TC%>ؠ_{pQKO6:}n@㸕a,I4pV!!U+T WJ2(m-$K  m[/ (zFs|)95#iouOM/"5j~YEXZbi~ݺ*¯=BԿZTGjhln1#RscM4'tB1+~$E–`;yr߀8:IeI:A$mWي%ZrV/8UTT"^6)&/T"5GտI;g87PgW,\]7cLxG'= W^[. }BȀhm\U4KBz>N:a,'7 c6[0ws\O~FGH>?I9c#[pxJ]'t;8+O$UR*59&ɩ3RDת,E삯H/ků/QTJ^+3Ztxo+mٌXRlO,_4b^nl$#.MJaq7 b:I'5;J֊x)4&nhKDn/E# eIgD3xVk+j^'+'4p)ʥ*t^6wB^8Q&hS׉|.ҮDm_{Be/ruѺ, E7A2.Ê1[u#!PI!q!] J YӆjJ]IzĹ[ uS"S=B@ojxhdv#¿tp?+aբ%vITDN@iJc0츥IڶI4J2NvTł-z V7 >0HnKiXvTG+ /eFVf-e+mA$ZZ`'$Y%ga|'YB7\G^̙&cRhshjR/NEI }Wh{Is#-opE7*&= )[͸t{ E#]B҃@wo;i-+Y0xkv)Hh^ӎ &u6k2y+5k_ 3t Db)L#KW>-a?滈떀;\e U'6}4ns|}y3Dz׀ԴMI0>ܐ7ݔa-`Ф 5cU&S|ە5a?kڭ"łonp[WaͰ^ѥ M.^ ܖƉ}s]մV%Όv6[GmVI eTՉz p5l@\TjXyP=ݙnj^|\/i ʃzhvͷ?-06κP#P&I RP۫wvj~La\ybwB cT ;2A^hyGYvdR2%+:Dz`vBl\ZZ_㮦3O=OpcT#L le ʃHg_&s<(^#բ/vwu KmuMrLQ#~PT4jWgy[[cuU ]/ܕ.TyLv窬#( k.gF=#u*Y96!Y"-\jҎ-T`OxcƂұID$lUt j;Օƀa6TnݕzLGz=|9%cs[ZKi2 #J#"3rʇ="2m XTS"C)anʉR-@~~N_lSi\ yBXܘ]7*cn MX7FHaR*ht+l ](;e7\^jV,q^vվU[RZcT\ReN@κZw&ۤ Ň]xsP} r6`q|22c2\:E? ԟ"2Ac3sd^7 %IֆG_öt˳[)Kq Q뗶 QFJK۩QbL)SxII)Fh շԯ?_ M6Gf6 '^0_oL&ՏI;i AG<4?JU& ژ$gXk}vRpeޯk)dH ߳Ճz(oMR/;գis|VTLi9W7d \TjoUĔTWnL|fc c.eAip(}WW. ?޲+.d=yW椦'ƪJ$s@ՋFdqr"kjq1>S1;w%gҿvR#S\H5<ʯR>Wl 6*V6n*H7*iYO3c̑.ue85V #},nVIX0s{ԀF7zH[%UűhPA'zͦ1Ģ[[Y- QPZeLaX2w5Âxϰ9ڵ&֋ cbڠ4|nNxS\ s )aUwXC׺xʕ,TGshOfz@36M ?]qU l.~OY2l&5]ʸ"j%5C|')ٿO?$y>RWzL}M!ZvuGWRU7(Rq] uBӄ sjϵR bt|X@t> g>5' )W4m%2GNQeHg2) _iZ o ^J1R-p續|No. TpaNϑKI<6Fq1z^$LRi `ʐ9—qIvӲ\]0^ߘE<_峖"$Fǀo {Z:ƹT T:hEiPU U'B ۘ.Ռ+Qe܂΂t]i?!MFYfʛA5E1y{aĬP.qc/$0eLg0:pV}8@*Y,pn =YvG5˧~\(zmNH .s>횄96X.geX7Ks>Q|dgR0҉ݮ1b6g UɂqY}qE m}j[`?NC:h5OujlVK,K+e̺ tYY)am Sr4A F&JR+17BRXAYp5)PF,ä~>6P'sSp bSnj)~t؏Kbhق0j]?4#CT?g #V5i O.~$q묅mVonAL<`U~]stE]Bo$i?=ޘۖZ;lU5S--s=:b$lRH=0KM-)k n/&VtѭnbM ALz!oi~̴Cjڜ8weBvh(#ٔ;#C\ˑ2>9bvlVk)=?` ㆅ6Q2ň$ustxYҲs)v4&MWU(:JƵ$?ޏ-%p$$1CM,]Mb5 `kkAC2jLi 63s; zd6Hv3B ñ[ԟ岩( u53fm]~&qeSB/3 t:&&.Y]fyeNFعI1DjTh3.(qA+<&g)&1'ׅ O:xECd1n_?4.CP.zԖaAtY%Rus5ǪGr \9Sj֭e`c6qm[kK`"Rr sr:=?$W.ʥR("ssjXL03Ȗ\Rf^6=P[߸(ݳ9Pp uʕqZ1&fH¥X̲M11C+sVƢ)^ YR Y/.c[$y6Y!ciubo 8k.wԳD͂TV՛ޭD˅yM|M<2.lh4?gPC,XuaC({X%kgJY b9lg}ےeycۭbf,UYW6K3R;cjipl=`ivH5M?_aY"g Ph`3QkQak{0>X1-E @3_-^Pn8prGX:y`ҁA;l66GAͬ`F*wpdۇ gqlZPW P*S`N\ hx+nk, ^@-LՑ6͵{]GtL11"eL3zZc -뛥Me+qO/ëS[-yYlz9Q=J`|*̰W*`+CA)\^ǂ?md>ani=Y`MՉ1>̘hJ;>ns;+J |&5hT  9NZi~d๥C6;KgAEm4z[AE#[Kcm=6pΥ6٠sjj-K`l `!hC{ocv_83T~ fٜGZ٘uAjcU`Wg6&_Э2})'@*( Ѭ*[Z"ZV6J|-R  Ng +6UEs,3~)-^:RT9>tЄLǵ8V" t&!P30{7U`"*2q?7`PFp^Atxj~jg ȯ^5TISJ5ffc`?2A7$,mL=lP8y9e~+~G5@ %\G@PS-c5Df,*Pw^탯nx* ~Nih@2Q!Y,ͭ\P[|哚X0lfO>U8!xS&BKE 7ԂǒiȚ>3v>9J27橿bSEkK4c9bi4m#a1aZ;oNB7[!,/9jBkVO RY?5|K IENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/resource/animation_knob_3x.png000066400000000000000000147155211461511344300260720ustar00rootroot00000000000000PNG  IHDRMOYsmbKGD pHYs  tIME6ډ IDATx[$Yv̛Q]Տꞙy̐C8i4lLz/ن`)ZiX?aa@mEJEJ8$G"C΃8g#32OYU{++^k?]v.el]v.el]v.el]v.el]v.el]v.el]v.el]v.el7v!.e Gelgk`F2|]vy+|q.+}ntv.[.>HC9%HMval`qmMs(`!\@dl΄lQXU7ݒ-.oV (> H<!0Mce[.o0,}VQG{З@Js~Z[݂vy3&89_z>gR3JgkRneiotԞ5 R\:آu)a9Rd&S@Lde4˛{# K Ph0Ϸq$]clvy@ckR&FP"U16s5k.E{c±.lזlvy|WN8}nr%7\aܖpSюeP3n-܂v(Ia?zHj5iI m! ,K͈.[.|Cw9 ) %>ʰ)Gl@F>Ժ?;l57PUh"gjރ5uVsĭIsYYH+ BXچ[]Pwl:E`\b¨V)c6®~("Gl-h-%\=a$PY )M8r+g~*%ÖqnA%`~ƴ(# Zu: Kݥ,zӪ! sԎu]Z>ow~hT+QnjtiN8?rXGt9EZ*r=t |es.[gRḿU> t+ݬkڬ. {az UdK=mnAxR2Asc-d!0 Pp -|ʒ4 \(0{imalc9PxYYp.iYJ>hvhI Z0_Un7EXYB! VYbE?%2 H 5$1#̥V>36c͚ZǀmY"slrPe(C8VF;d1r3pXay c@Vs)0tX"k@bYŽ܂4&}NMjҶҒ -UwYxKFvK% k#&}%sS&}N]Q0Oiɥ%0 F[P R];9BRhah"neC@A- ],a1E?$T/52S#Z au# 4( NB9:䛟pܐeغ{Vm89􄳲Rn6Ĩʱ\Z)eSzQfBLc&Ce橕wPzo-hnp3 )aj.ahC3`XgRh2HMҍ"MaJ*/%!>䜗y4 4d6<ZY\l*< Yg[K-;㐑Xřv3 %gAYDIw(a$!+r4q9<=[6gcn]OZBӺk@ cg1vl1Զ6 JXa }?3Lcw0fmA-an؆h+gHU 9G;gbLW>Wך[f;J3ITBX>qJߓ=Ӓ| K:hv:ms nha` ظ=~C!NR E{y 0Ҁ2 Ki@Zf@9ߔ XFZj -h~w0F+5V`Qr93$bRԑ]b1\ApP$V>O͙jC@6+p?hb4GFd2yRs- TQ膬_ Ӱe* n+$mIAҘn| 2r.0@w  iCV81%P{:j`';ڧL2C.l\RsG\ya1Ђq_rLZ;/A7݂[44tvț(hse(6l۟)aT%唋% G)1 i S@IK-02JȞ$g[n[|5|ZMjN,qۡ!yE.QbSGB"ߥ lG3JoI\tT8r&H6J-2L22T A2a2e>_wSv),w CM7:uvUXws#eXu4]19|JRimn"YD]&o>UOs!c%S:#rm蔥vd%Yi?D|أ֔koOBg-9P5LU%[Y6< ʡ-nh -d õ '`&WDՈF5\5z}㨪ko+Mɹce3)z\߶x< Ju.pLTM @f韩i0}2} o qKl 'R%pIP%(  @@hׁhQrOUu%W9Kp+f{p PE 'T5DargDt); G*_b ZC#jG6*cZR*e/E-Ufʍ؂曔aJ -M @5@foM;wCHCpDdfz9U +F#7!.'tMbC.{p9r f2ztS֎68էT^9E^ lI7 lef!9Y)-&/n ovqȇ0:*lRp`h!+OUؚy#7zt=n)ϲob7UB;s s dN7Y *r }gp>Ϗ^^S꾞1sm$=D(Q+[P) -TR f.?RxosTU~v}Z8s{H@2P;(P5~F;7 +yJd@ȖF|Bt Lh S @tҘT?_9~5cUU }sQq?;9#8䎁&amM1eC( TO^zTc{~9nNguO/X+2f]eP7-V&YEܴʌ!lcӒ7| M\Fjz_o.?ڞ<ΎavJU:ڃ8a7}x;'9?ڋs!ԖjsᲅZjXjs^9G}75}+AC@lh#]8] <51@ܸ}igoEF?!H;;9;m_'n1A5$IڣG:T}2]3/}NHDUjmOw?M|(o=k&+ *aIowzeitB.lͱ KlВvdmWl`wɵ&/TA ms7;9ڇ s[t1H@0x1j,ʓ=64Пݽ=3Wk@%YsyjC,K[4jZHkTt.e2 f)X%U5O^~j#Oo.hvz.=ϡ`]1@a)L2B " *V+t{Aoӻb?aDD}%[u >Itߴ -CtXo3,3\}xzSdcƾ}۠9?As|.=8d0z[csn B[@3MvrhO;__j=DRl6ꛥuhS>-=@4dc bfIRO X҈Mcx~psw07x쉽G;;]Bk],K*)jl8/iӻϡ]I; mR]au[C8)tz mϦ쬀|!`MgʭiZ%z仟U 7hO1Uo14R=/?Id 5r'G}8%D h'SsZM'^6giIgWhDy v% jΕ:-jy7[TwpS+ -f'{~9ښce40~2%L 8cTf;xUMӿmǯtM'c4dPKu&aezNg}ho|P!21 ViT !K]yjoƓ?F;!ܕ2/b߅_Eڥ.6OUUkX׵0@Ң[Z@'gԤ!x.LO)r1H'<󔭬m4sH3ƻTcPtDB4T˷{/W㝿 -1C@-#4_E8}=9IL1f853.>V/KK PCS %2T~bTw $rկ' Zs@Q\1!s8o[д0F; wI*ُk<9t9W%"]]X9 43\E{U#I,eUUFѨ1PIT#1hN ͭPiϜqd ۉ@ոu?t鯴ǯF+zb Z%'@账9M Ϗ `lrd4IY F'_$W}Bsh np\L)-cPv?R8ewQ)+Ӫwӽ'}_)] 4\g۶kVDiLo5=NK@n ,ۄZ2M6MlZAa~C'ݭՊ#/__9}F8^a&fǯ=UKMSsKpxe]E\Tc`s) @S}NTg?Χ̍ðY 5wAslr=g(M)==)H r#sFŕv1&=w}rx?rU8XohfaO8$OCs ,*VQ9YZ55SH S`B\B\ci:$\~vkGR%cu@NCuqIo `Z}& ' bUZR&,qihh{U <^4J V G. x'TLq)2"%PX%ր/^o z)Lw'$5&jIIshȾ0Ndf^2Bi9ͅfߥFoT KK;@%]ԠsIb}4}SާU~hW?K܏sќbvUWF&vG1vvv?d{2@QUUϋc2 cHvϧR@۔+_chޟh};f߼G{@_g3ZnlqJ󸐉J n+AoA ߖߥ2F?$`wr0{{>\O6P/`Т9;W $RPc S~%)UPv:HJQY T2Ԭ$`5SS'cgp^!:Z扖Y&[r3Q45e5SuS!O2s!ɦs8{Z+D]\8̗_3wqvxt1XvӒXLMظJp7U,)nvSS6; \ XL5d^#mOD}čv?]! פ!Xƿ.62s&G 0H6Ci)]RBˣgh7<Z!xΎ1 @HZϵf;'<'2L_GƠjK-*K3̯ c0a#ZK"f0<3#q|vq9:~k?+R)I{,&Jo.R@nT/E :h2c`3Fdqm&-y)1p U͝[)GH͕;>]Z0*<%`V Sh4Ze#c j@ٶmdⰛU3cq g`ry7vxfP=3f\p1^g]8]\}AI:״ՔUK`ʜA$Uݍώ?w[C`,Pp(7$fRi\TQr3wtJ![ƚh}xks?ZwEH>fSкDOw&O ^:M IDATVjuRc 8Jr\mc"T׾~( p"cڻ9Z/ Dp+'̐."Imaײ ԋUޑ}nz嗈%XJnH`0lwV;CFnR3 ݔi3[;_ py 0@`bv>7}oLOޅ1ÌJNx I]1s]t<6`1NGyP(Tqݍ)}b'9&^]>$eiIK*uuwfU4/!xV1>iֽX)5UFPsiL;}Ӣ3rAȵV3diJLH d~ƹ3"[N1%i)31R: ele ZrĚx209X`]pDڽ6)9;H={5 .,*܆%<8!+oJel<onKfg@[,X [L,}[4dhBxl5$pԘSmoLxOSUg.̋GV4B 0;v1pPjwӶ2 Bƾx `g\OWYNٿWtvJ1}r<ǒKn!dpP *&%AzTť; Nfo>V]27_C! (]` @9IE 4-Əsθ. ,5$w'yC}\*yiz t-Ssc3P,̸|pdcO%27uvS $QdeMX2b-,10y Uxv`+%^ 7AWӃo_y#n iЁQ1MRAJ^THh.)Ơ%ݛ33}HBUHܿ> 8chO0nc۶7M4x3hb<p&x#QzX2+̘%X Nq*{DxpR4Q.@UWX*{ڐ :t7BES؏ԿyߙJ4Z]Pj9.y}ZgU_yj;>AU`I]`Ik%U)EiH.=1`v? bƍ35jf:@>SÆ 4-,7UZR;vsTRvUyYW y5te[e182N# w>uˋˊ#t,0utȑTQ2[N)҇4x/ R?R QX,9Z#1\!B͌׈3)%p:'" G/c}HTrf q<Ȁr1>s\R8N[_yjw?My0/Azb9GwY0\r 0S'.L|4'gZ_Նy!FbY%hIXX'W=5CN9aWDZD0pUx 94Z^g%{tgP]~^pq|$D|AY.]Vpt1iQzd)R" :}9\ jxOr473̎7&ٙ>L2M\f_ݱi.`9i:Q[6Mlʻ |]x\@q&Jdh3fDD4zh/sa4!!e/}]>.#==C)b}IWW03u\#d8jgAioVAn9af-:4ݕL" OY-뭰>m7U/IaoN^ώ?q)dǓ#SeߞxcD^km8{ *ӢLY8`ƌsNqf~30HrQ/N )@#.& T-'U,G:O" PczϪ1EC"hª|r^tw Pl'\=7 &n]띏X!]ץLm\.~c|n6hVn)P4MVͦґ86xw/V;.Yղo0;=F{jl!{`%sH˳tnjکT#1Bs8=F; 3GEOw{b#c3'%K_(P ;.Z<7 EG@=#TWVԕHvIЂq->MH/QK`[4h19RJU0QQt:_"Ɵ"q ڴ;a93!פmv_FMj2Ah=Q,7v+J;PǀV4M߶>rɖQ-pRO7KC_AO_6<Ѫ@7gƼ}G&"DPEW6$Qg M&׳ Z!glT$ngK>(& +{~3ҭlJg;h#v !-" kymݮ'hwMOHj _7gV89bwI̴[q=8$ȅcMX#&. ,RsIx=~( Ӎgd 3/y,8 c") TBq8<*0%4RexiA[sC`;O2ǡ<'BAݧhCfh4g'wF#ERSQ3 FW}TN-F̂6igZZ!0[ 9zFjavju@892<"bƔ5A*$\a=`+D6ϝk̅n:q7ms;WgW9,Ee9U9CfY48. K٪_ss1c1}tg}1Q4~><0nERӍ.{>#-â{W#].Qh`=|[Zc|YiR=ԘTJ!k` |p]r'RZ HߵrpoqVvюpjrsޯ׌!sԑsA*FjX# 5=rHy)u~IԒ!\z'િd{]}L9=}`YS}712Xnj!iOÌgfVf?ִ¼[׶z@5=60$1N k3 !M(TbUb#hD{+z!7cF6Gb6<ōeWO跸;uV\;9[ (>6mR0Wl SwG~V+jgo̍О![T(uSpcLSu-b +Y2mqk{}c]u-iHWppOCOq֓YNN{.tO%N1t̘ORNse {HCd]㴲jojxwאoð'3>Y ͥYo<J AC]8ѻd&vsC2sov:1fiעܘ.$5㥵{zhq9p1CZ"RCFgx.ieaK6%dҾ5w*4`B"i^1ј?p8 k&Qc~z .)\O@*CLceJQ# ϭ%CDW|C)\G=".CF?uqm|pseo­8G{z|vMȵy00;'nUqx=BWEsgx% sfN /KJ` M7"|s{]Ȟ`PIoSG.7zY7)Dpz[®r.dK^g`|h4rḵ4aR{ νē8+ڿ1}ٿ _NCx%7hNZ&DǬ0;{o bɽaG[<9΍ZRbץV7Ix $-x)r(+K '|3\x I] #긆94pR=şYFh El.hМ4:aˈRvb@T~'Uު-'#+f'sэ⊟z36}]a),R\ygڰ:\4edP_w!K P3P ;$]//JTS3xYluYf4BD;fgmb\0<%_%S(@S υI 92=1y fN [Mnh?gyˡբ?fhgggˌucR:'I̸'f /Z{P#=sqq ^{| ->CCkK:-)@K 8"(`WFS'{BBަ@N;pTJκұ*A8pݯqs/"a`!p,avIn>_-3Nh۟ ^gpz,q4ՔuڴH-3fӥj[|cVufXaiL^O/̟Љ1f]8ޱ`r=.hFP*-]Ã%34,1N,usmČӌA̕%pc&p7K&ϼlyLdݪ x v~ŝtڹAD Wi9&N\9D"IC3-^Y$7 DxiAax\Z43^~ k,CFc1+QnFxC[[kJ =JdIO{ .]}/POO&, p;/hL 14ҿc jM'G" IDAT6,BZ"Z.y4Qtxs„97p=~ |'nԗ|4Rb*>b?' r:LkS`qJ@.IpWG)Ϲ@c)cvnҔOtm^0pv R@36}:tK-,Tw@ f<۴Q]Y'g8[/30>t{j4l֘%Ѽ:4ܶ;Vݶ$̬-OQB74h窀GfEL!zm~M/مUiWnvpzeơ9Ҍ}DOƘEƠeb$?=wH~pGx)776"jﳶKM2;= ʱKo۴KҖ}6wNI+mTFn0wS5zw- 43dK2=AeihxΙ9$% !5y9WrƱ락g'F1  44ݑV3v4cd5/X\6R !==X _cOϓ׍]}J}P\خkͥXZMzz~ ByOx΍|MCp5gg)C@ԑH%Hm$}$(Gz'Qw}I'azX0M,L^3,;ft#NZNĎaJnò7 "pIZՍ8$ȚbMs%H/[ky|94 ^5' ߍY=9)UBtb|N!ԮY@磵tw{OYBL("TƂSD'zth`Lf`huD`NyUUbJO13m=.萩_mcJɗş1:׹V[ɡVhc-Ǵ(rf,{Re"bO(*gƓpuM@4J\N02 P5C'@!9޺]J4V* .bAC ws̝? Yع*D\׌dK|BI:f|J':9fmNG)QrO# .\K(n4-S;RXoiJ,˪{Z!t#^ܠ-Xqu,)t~ Vs)1MJ*}cph3AC IʕikQri04 sFK7Z&(%uM^aG&tnˋ.4{݀Rj$b#| P 60*w\aj SZ_@Ig9o)C9ReͰP\!&f<ߘJL"a2qDM5Tm~L~7Пו^r=s +`Zr/C,F+ 7jnj"~׭n>"zc5E05bNsfFiC4&a"L}D e{=^2R]dX.BnZ34ʦs7+K Oy &6,Tr^rY+ط[ŗWMEÔҏ!L^ KiFdpБA\9+da{f^ˮ`@RZb/s۠s29ZB)PL $S&sq,ZuX'|#oRkѢ5ZFZC\u9_ed5w}dP4*:w9Í0%e]%= onLԚuy='@P ذ\rCӉuOīFXUbnPYe9.e fnF,|%)k# }=r& Z#!.%[lnG PK-ǽ8peѲ|wez9}*<ԤkP՛7Daru,2碧;#T%fK1CeuhXji]f}3<-ZqVLM+&ӟiF]{93a޽HagmRcnq7eOԢn #vв$oo;m{$eFDx7@m3l7Pop&͢qy,![\04ӈKh4Sr|A+]&'n[GNaKEPnv:N8T!K3EL N-.T3nzNOAO$p4U\1jYkӻ_)cgX 7drAWdDp<}F`܀!d}pۏ@o+WiWir"I(:Hڛr։9\S'wga&W?^h^o /&f# 5ԘŮcmX bYG_.'G/w-:q|Q+kLN;4ʾ,m4C+^ }@X`t+q:L;fo/M-f*t´ PVJMĨNkLSSs# qjfCo\bN SiEaVr|@HQ\]"%(`nݥJ5&^ܘGpM|I/lux 1( s-hṵaeN '%bLU`':}7P^R m +x>m5ך 3]w2 -^|ZI[%osH.6m9cWA %s+^OCXLI:]רK~=ǩ=DA iZՕkN.(fsP_.h^K48@n2,HS %q_FsW $^'IJӈ0it2.Cy!qƌ!haEtarlR9T,Vne%t/E+^L[4\F(" K0p}h<~'S4vS*^/[JΙ Ji[2z@];_wJkiحGIst@kGEu8υ؇hvz+(ˈ) UzP@o!ɅŹ繶I:[E׌'2f "v Q̱j8x5Yv͓!N #!$OcU,mZ[ IC[ci1DəFV]:wyK͝Swqp,LN:] :9!nrU ezK^v9*CP957K:^ tX%)@ZmF,=.)MZ `[AAJNЩC:}v#CnPȥp2:[s @Gnmlc U#LQB&. (Oط|˸I9GYi*\Qq/"GU}0IUxH?պ~aNCfI0hqJ뚡c'u^-Lr(˖¢ne]7X3Zy4Hb- n{S'_fFDFF5oc|[a71>*<ݮ5>ei/1\N&Nx5NF+k~Cf2 `9Ww1l;2 kZg,.6祔c6eiIP ГVoP {Jӌ1$NtHS,Sj9i[CNwK};LP^'/ <@?]7xh?sέ!#{u)yzSMc^Az5rdG3JVʅj9D?5Oth$7֗_VDAd.A$:̒QA<8FӿJU)xKA$;̄K>y.LgPA5:*Txn3,a.c1_wOdhxXy\X9iBdG5 IDATö^ ai-|+^JDa _p:N@׿_vLi.7#8V~XESywgsYl(+RjP[;$}.8_a㤺WlmY|L5L~ ui)]y!ua/Jq묍3۞NN`&tN.N,ˁ']Y5MEfcdv{$rݕt~u|D9%gÿ2>MN8i|VZ㒄bRNÔq5crzy5lN#7')chޞRNEQIbol8L?bQ{NP05ȭ;AyE$d.g]s7$23u98IyfVeaęJT*=ߩ$/KfE)k` @uT#xO0mN $}j.IFZ &ϑUWҮD2sS9 k{Bp2K5NjQNu#)rN2fiFToKxRї.\h=:N`q#6Y{^LShұ3/>6S"81[M]Tʩ)F),v픞9\*w4/u`,X}}fnfvҍ_B`+/4YifK`:prkJr.W}TjR]YWΧ{w 5gsrR2`A6~H} AY+0E ?肞νKi P}nq.tC<ڃaB 3Xi<)kGp;=sjP@5bjx\qqn{%Qs :? "lp/PipZUvn#5 7Ij ` 3FGC=SNbDA<$'tXn:' eN{]EGb+%^0 Q)aN)DVXtH9Y* dҔt,Kt$ s|lXOT3ƌ3 V .Yf}ClLq,pӓ3 $cN4,KpE@a nzXdq)xs`瀥~A9Q.0">A TP^?"Uԛf9ລmK&JᳺԈ[4ЭE7HKrx*rU>j<z&TZH7u{auWP)cd*hNZע;1 RH|X.(lzdORϙQnnO 3 Ǚ>W-Z1s'tmX)^oG9 ǺpZ:dՕ ʕ%f?&n76{p])Φq~22(T$L:< LOQ8gqxc_Z5G:/I R'ns69ǼxЧh\no.aN\ٗ]@Q\)sclҦ!II_#s2K/\`N vLsm2D;]pJ,>q% ~1sʢF=w}s2g^XhDyNTh?VaoKW1FxLj'3cgi^l /ϙF,>iK;/0!å)|IHgCh\ \M=שQL&.iZ|xɁ|Nk]pJ!drQN>(IT|{a$ƱKeآX`bd`Jnts5>M8Vqm:[3׵Է6VL!۴Ĝ  ֠N]+0,KS>GvTLͰ}͚̤ȟ}i88Zf%χsxkjN% Qp熖,m/QN|-9X@7cK= ކ"0|rp+L,[a-GgކAx`h2K0+f|jd_Beb!xZ3`I4 k-T-<38$FYSigNk8kBe`pZ1pkpV Թ0&P )8 _Luݐ;I%C<-=de'SKsxs1lVjfUɵ*BGV=n|QxK^]t |K]a="9F3uz`+nl$k-aXS!k~_͒*7KcK=1j_'_&ŸN'1#;@,ph?Ti˞e2U%9LLdLX0-F-6 yZ'KNCTc؍Խ _)3Cd )ءD*i?߅ͱh)̕KFKxjb$4B{{b7_Z:֊ UOhInP8Q9JF0:F b1S?4%: 8>f̜㔞s8B4`N+y.C&t+ѝX/dLSV@9QmceF9GJD.@j5a)e\~kUQT-]a|jpL̒aO_y:uuB~n:Kphj/c}Rt6SkQG"+LM>LHίXuw8P#!>̩NX`ztq{!S [ ~/>xd[r$wa%1._3&;DXh5ғ@q\% c0ߌc+B.IDZvT淴=ҜOqF~b`ܺ[w81v]1\ycwWbcD䌊ZS!jݶȆhCG+8kO6[΅+Sz -`n \蝒szDMQN;K)?p} cBpD:.ܩ]:i/VDIp $49gk:Z2j٭7vx`T}^7{5Ǣ98X3bǼ[:xeОhx$rE"썷ⰄfKM3F<ˌ~M,x# 2E->$O1r7z VDx0iZ3p9C#a;y~-oeZ6>KQN9MkATEs+ XJIfP}a< }<US3lsH\9Gc(uX,9D`\zB j|'X ˟fG!.3s1aS#-I*? |+9EO0?${b2\Ĺlp  F4W!Uk=Gx0v[vȰIR/ :ͨ==>zmqjAWUG"Y{&- i%h#9{! \hq]r@w:7l'-[8)ZlҼ]x?/4φK f;Zg /Q8lp)%)9=&25aix1W12g&f@QA_\r*d?f~3*ϟp}7WN ZU`2c5/1&16jKc#dkQ%xf?Sn:):l\`bEf1Y#JƠ g-3qOZ]@Cj4tdT V4u` .gq[Sn3Z_|(@0[*{4+u.Ww;g8Xt|Y~:hP9WhYdZW 9[~+S2;ȥLbt}߄rRq_ew ~Ygʼ D>05>]_HV0=,R 92L¼2ş b*ʔ9-ӺzXk7|Sl;G}5:;g O A * nA4Oi@(K:!7'TX B VG<>X>O)S,HݪUS~^K&#(V&nl][fG73>1u2Ծ,ZϹ@ըIr_rzF-0Y d\jn7NB.O 308,YLa:N;Δ(x1\MU.h і`o˭ m#r|}ޘ+oo>;C/;|`]KW@l4;l31trʑ$"Ck} (s>NGpx7iٮn#.z. uH4uY*c9m!{w`s[e40=3~uDOZz= º5m44BybRi9nnstՓ(g#[q.W2^J 0,9怽?<DŽ#W6WO Qϫ }Q|̗/ ;H A;!^dl=;0Ny2"Ȍ,z;HɅn L`9ux1X&W-0x8}DR<50dTw8⯄3oMX%k "ʑ[X93 $.Gܧ͊p^)eRWp>ӧ~UgEwL 0!3r:(7DWzK!2E5爷[@?IǷƼm41 s;Gć3bҀ9֚+MMP,Cxohg0˹)A&bhUŸS'3:NYbYZSuiT:QLRMHSFK%}sp>pD}qŠXsAcWW4/GV=X&[_%if,^c{?, 8s@khf|-1JR[ٚyz~.pNw3A ]SnSKb_p?"Ljx aw.qsSwuKy|?K!8кq瀿>Yi3\o?UB#L 2WNgߛ e44X'M0і ʵ2YiHiϢʺ IDAT5V.whuv>أ81e)lxZl<^Jm2q:G -Gl9x[Z:)E|Hmj z䥜e)R/QcM|Ff7+-r㼖~yJ swm#@2p(%zsT m!?&D-\i 8dP:{?+gMƀQοͦ?qn0 Ɛtk y"[:0М)cƜknO)%M ))Nd/^2igjVg#LFApfKqWQ״) GAA& PoL9v5}D\-(5S(d S6[^)g$d.-=v-ZRUƳSUzCZcZTJטe[c(ӎl 6 J&yJ=s]Azbqt37`99u!{5P*koV2\r]2o[mNBJPIה1m~.ҽxAe?9|\²n_|vɟ9,1++CkKj^adO?;-ꨪE^ڋ4Pe2n_ETNC0Z^f.Q7L C/y1Yibg~x:me`鄾JIyOK"r4ŵa6yhha̢=QjGrSdOw2Srq㜛&ZjΧs$淘šj(qCׄ$‡m?;\ Mfn/'4gaDi6  }S 0.Д+ ns&-RWpGSe~\h*3=v_ Z:ǻXfQ ~;J'm:</ * QȍO;px {؝8W4L-Y7r%VHܿu&p'Hj~8GaG}SXjfB oy#trB @L_e,߭v=rA 'xBङum^J˩d?1R]#< F{rc3eIDDx_YJ*^Cxq+䰵p/aIj֞T3P pOY51g= 96G+%'Ri Xtux-Z\:D zav"sy+J:+[J|+^ xS@S^Nf9̱T.}/̠ԧh} W2xl(єP JlsN.?6xUc?zǮU#/0cD%=%t#73,gyńҺLMcjJʏJ0qj9RN{m۱NE E*SN"щ(CY]ǒɌsrr_|,s5wzji5SuKKz>UMªؚ{ܳ޵vT3~vsWJOff_ W3ȿ&EO^]%{Kٯ0^m }~ K\L?UtF92]Y0Ktoa^4w+%jYo vÜRlqLo3 eIC˴侒#:'d{@3P}mϕ`<3ݦ}G[]\u4XΤ^I#%9(׏E%%-ةbp.X_A&iRai0u_~Vx N/}`J11M-rnOLW3\ F{'@[8"ǜ 3*\ ?4I4>eܬTReY qpIGMW#@9.r-Hg!g1}\as0VpQ3.OS?CKA^ePv+:.}qlYcO9ȗ0O6qJ="fW:V2\C֦I6r^2.雧nt̩\L.HV{TɪB 'gDyƹPq >[ܺcj,b,(j9gt0cK# LY%./;W@ؕ30gA'DM%1B+|OxXg;6m9Ga)0|Z&\pkؤӕtN8Il1jض=#`4Omȅ~Ksh4DK"l9ZVKWUNt9n)#2 -/.aE& 9Pj{|MaZ\dp 1*S%ψ |OcL7ThKrE>ȖBqva-B!m.X.[F|aFeL-)n܊mv8p9%S:?>iڈijF0mCz]aKQ'}D.7t XZ0k8|:xFKvƒv"*q+~2)6q%al߅*6Kmo@~w~X`La[Q9 Uq'Xd#!pbܞ .U%%Ӏ'LO zBӔ:Уޓ.ې*v:5#e ~Ьȁ8ve%o wD/5n`pIkf,F{\"Z,=6/]5Wa6̶făHp:a߷[0;/s%ob}c<eJ``ؘ^-aR=42 |j4f99-ө<ډi`Ksu~2f:yK -00ASZ&u>pH!.Sl".JGgk_cwQ2Xޗkhu+Gp/qL_+r*oYǾI OeV蚲}#O'إ%39Huna ,OME y^fAe1~1 8\`N1VⰏp+ju.Gnrn:IH9ݮԆDה`%;xC:YKM`LǾE$\U8 <^K'3.'A·\wPKZƮ=>@#@ZC$ ]#Gb0Sf)cցB_ mQ;ׂm8݊V*EPKtqAs!s5H{c(ϔA$iD2>쌜fGgӎ@u]D׻gFFP[;֚8 -a#/Tpx* ;fLs?(7%~G5~/8T!T2XK'GN\Sfcasvfi=էyRyP~>ɈXJإe;>qDYy܊إ!OU[U3}4Cͅv#+Q.+9hA /ʞ}:߿2=}\FI∗aeW9iYֳ)x px߄ǯ5W*h(X"O<[[W}n7LQr\vI"9|bE}@s8cEr7uȎ;aXK҃kqE5A/Wk&P_e"0ED*ɒ]0a<\vٯv^o"!kQj;WN=J( ͜(~g,%]g4ϥE~r%h@)gГ}c)8 ngWU LM~=JMDk8=̠KZVg7>H)K\8-J|g; +>q#t¸~ nʪX2.0TK$Δpja#ZTqK`u(4Ïc=Jd(c4ϭ8g71G0ix}暦 l"#a&t[94Rt.ư7SncuQ`Tu,CC|wI6$4ըWomxgBx{u]aS{5Q3Jyp#6w~[]f.Cg(KK?iǟ-cQ|zz8-'9sstCcyjIۥ> +Eɵm>e +.+}RIk:~ "`DyQJ(Hq]Kպκtb@tyf..݉8u/)7_ʷ_7O=@X4S2B%yr@'uok+9loHuqZfw@l+?%л<ưGs\k1"( (OӜj)@lb(R$w=$kf$Pe8!l{%it$hu~r!̃DfrŊ VddQOYu;85o!`#a_RWz)f;RfbhԷbE#H1b3.:#3<{9Zo#>B?r:/1"J/;;}XH :!EY# ň O86CD|37e3Lټ[6%L-&7G %3d(κl64E)& Sى8?wǒhs@ &hU80|~Q%C+#Y'sp=V6]0\"pxÓ)9wHqw[N|bC; 8BD/.9 sAp΁? #1w] !F0,#+flD.'/`֪ ε-o)O_1DZݾ85JwJ.bUqmDX8/+ ݽ`8('-Mn1Md*V"RT!h,͙ Viv%seWHp<8 \_=yQ|wv B}4iYS7Ms` vι5pNVϧ\#{^GF񱹶tZwH@!a>lzJrE]0ui=wrLbd3kY|/V9+qN!L2r*_B j1*UL?) Z64BNé W%⪩.Q[\/0ܥ.% 3nwmW u=cwG?U]8M i=(-ഖ1Bs?L)mQǺqBSAPsu9 ݒ+n.nTS$*\Gk!G=qV#ĤsV|_6C`g $S}|-G(ϨI6pC:Ղ!ϕ_]2Csnw v߭&oK\F=9H3xdIs%,&zHZdĞ Sڤ xjc޾7HHߠt褔6=ʲ=Zz[0![P_7R}NMt\ൾu Du%GztW΢ n3|]1CpߐD Cw=nFD̕u{bOdϥ1.>kYz}.<;w5:7~<߲wJt@2-FsOb;QuyQCVi{H"a0|*ͩ}rLMϨPWz)[4&96f!_@nM9PՓ܅iNYJKw_>@kvK,sA{*yH2%$-\};J^Y~%Vu>^Zz$Pa0G|{NDT>>͉ NJI(%2[3Jٔ 8SyܽMjH[R?*=tj\Սokम|"aVTR)+L esJ̕s% {.sė01 _fsuE䴪MPErVdq8i@m1甏3vxRR݀T\T.I64\f\2O+YH @,+Csuy=펛b[䞙újO{c2zgp.-%c]Y .=Sn\d U_vfN$5ha(i"-So&D)^N8*:L燌=zeC4 sKۦL#LSmX,e~.Rћ4-H 7[\ 1/|5GLfq9WE5S>+ XᘳZ0{D1ðK pqxws*y"pTr%G DW0\)=S镛'QJ(&Jۄ'*Td%עi=F \ 0QGڄDu"` Ŷmgyh1%@a|Via|yZ#V?朸O<>CдJ`%y m՛2T_t݈7]WlȀc%?l<밿:?sgw^;tqsϐ}1ӍgsH%-FsF`\?vD1sѨLxP%DZ=(uzHW}#O6%xkrETaKXpb4'f1U[-JQ6^ʤ?ʤ exj6gi*:ZuS̘FV#3"v3ח Юl[Q~ 4?sDM-@|lrDZ!B1s{%Ft v$"e&ET^{t-DQW=0).cFtӂ5ˌG>s J뗶<#;W[0{*qP+QKXc(璿rŸߍ#s ۠Z7Tys7 6[%cu}p r.%eϥO|#~ 0S[ N. 0حN̑(> hN e-eDJ\{.j^ %cUub:Ņ?Cvfs<YKժϢttNVTbx !6b{1l&Ά#Y7K`l[΋/I܉w'.ta1SN{%fk ħ^1@3j977g&VSzbN Lk VO%AK R #o84O5uv* /%_!XFؾ<Ӈ%-͒&QN=v0C }/iIisd*㬅Vy%s.71㟩syͩ,T%Q%b:Sϯ{ðByC9s>/b o+kyw\P}I5@p 6`n`!S=vs%?e1\+Am#6$Wv}(kI&et;``3pr3e`SdNXP紴O`K&5=3w]0JFSoȰJqnRu"hhn'~ H_D?I9 \1rlGlo{M8=[Mz-En|Xmɔt`.o/n#No+G'.ܣS3x28zQsv{9X2siW9]sS d#8v\CWƻjj2p Almc٪'*Dudiv[.QR2y$kLxf:p4yRpzdx읺4P*ˑa]?L F9rJOcGQ0%#NIA0 ɉݺgSGTä[-qa" o)E)U{w=&y!m"M횕,-z#lq'OR)5ڍx(OtLZ &t$d@( UfK7Dy;RIR:^`YZ 2DL>ca܂="oWKL70  ѽN qcFKg$!Tftrǰ<q4#Onpt#},Z.%h炔&dT++::n'Q.yrJIMM2οưp}@D)Wcs%]Ⱥ0YT =fcDT|u3İG~gO@tO1t?`PgP1u. Fi}Ȥ_~4brW\`.| *]C\2 Ԣa]\oSg8NΫRg%@wqJÜz8S: r+0vӕ1@O5\'_1 ~181Q^a.Vc#$rUǖk%Re G,ӱy6V; W]?b:(7g>u\2P ґ4kJ-^A+t1o1%bnЍV6 i}-N=ɾKņk-ʁ ̈BIp59kpt`v_Ϣ鞺 f+o*mAs[Upl,*+=Jl3x#yٯ q̳?4V4;-VL {vΐ8DҔ`(![04$6 R0`~ÂذaA$eR HؤpnVUöd~7noW5Uz/ȈȈ{+[u 6̆r8WN}Ff/aQk7}"4T0ʣ7 街}]zx29`ݻ.?~_CԩMqtUjuCʙYvG΁\EDSjPy Au^uz?4vI x-XظtF!*6n"dH ,IJ< ,P)3c Z۔Լ" >q@FX}Rsҭ/FkCN}cNطZ߆9J\ n61m%:~}N%@TcPɾD>y@h3G.o'6D|-ڕcU#Efq }B[q^ɂۗ/Poyv9BHbb޸ U>lfJM(Ys(/B&#I75TEFd@Y' %92hј(R}w!u-7`R?%W ɐ/baiB"TJ%ȩ :K.9*i2.?GXx*F1W7iE&2ԅ3ʔ-SZT BjAѝNI 2d|w\f1b>9.UH؉PQ"dĜ k` 'Fu7L^eH[#ءۀ4Vo1Rry-MJi1G1aMBs6.N $SQxLv:~K&$:Qo$b:ceH6֝ #I'^_x7¾X2u֝`{rucRxoW]-;oK/2ȥ9qm!W uW(8滔J#2_YLV'Yѧ0=|pv@X,MQZE:t1zScπTvMYI w6سdp22.Jk)@ad#tOº"S0TzV++a?c!0 kB S]l~gOmLxB0*hjDPE4K2]kbzRS--86l8܄,!Dcr"dڍ8ލ8>ar?aD[띈|%nrZ]x"<3hۚ_1V8 yѶ6ԝXqV؟p Ct% KM7y 8gcVW asB{$:DQV8Ā J0|=}.Y7buYꅄ#YfzKqvfD8DGB@%]3q%ڧʻLe E,4&bP#3.`%f+(C,xlOpdvIz\uy=5S, IDATC0Bq31`WBߡkݕl7 o#h> `ʅZ&%,k$o.& Sp_{WU% i]z[d)TK6b?>10I 3Xfʷ]֥'k*F؈Zɝ'fۅ:G.7@+Mo٪m:4# : Ht˔DK2ح.EF2 *&Sq2OPj XHVjiX:U --z,;VwYr^;eBdL(+:ú.4iÑ4 N~\{vv|$4P&b\sR.Bn^d6TA]{faY?V%4hLh?&1#+aSTL/EΑ_ &{.d'@7# !VA}#3ghAw4.ƙ˨S׭XI%NDR$HVޥbvL}snRFSg)>%OJeLi9fKlb^QZd(0azG8 2w;@2f^QךK=3Mv%Ƨj7e(2X,CEq緦is5r:&  34v#)j)` SJSR/0ʕ˅badh8ϦصCtjLtK*\l5C[X#iZ(t;7"$'*q2W&֡!neZzq]+K$ʛ8s#3k 鉹R᳜s*" !?ۀT_N.*{ uc^sbCd#h>a{ih1Ԓc:Ʋd?#-MNl{}"6zT fmSDYYIPIG]6;t i`QA4X&L-HSguRI.`G@5֒1`IH LR3]53XҜ$J!ɒ+Qۤ ةO\11 ݮI@߄}Fi!Dž)y<z!܄3q>I+7}r@G| @F [MNe$PZEθ0)[~Tkk%Nf W -3|,/!Bc(6)KFH.C;<.>=V 6,F,.`+%\né>V'j J'DT:ih{sw'La\JeefAfÝ`؜`*qΣQ a}"b[* ᛕHzcv5kVc*7 LZ e'x m%C 2axHߋ[B}`H^`)2n ^}7ZqAM+^"' 70e%. YQ'J<_RzxP^L~iθXqlc)qpo{H*ψP;-/v9w%nVh:`Zz)^m#έV~4I͙Tt [+%/Y9A?[)¹Jq)lڊs"B>,!r|le~w }ewGQh)^'菘Xf!k?.'@c#+N7 z[`ay$ndS/D"'U" 4+ C͞qFZy~IpW9JiD\(ᢔ4+RK[ -˜X~$.d(=.J+ A@Onl։@<(XbBps  7ۛu]è݅p/_^czsxI0&|F2BK]E*Pp`Ҿ`TMcjϤZ1O},N$ Ķ,TȿǦQf8@lROwy@+Ńq*)`Q,m3tvY X8k5em($9{ʒY5Ʌk'h&<:qQ/3@(iɾwd9]_%8K[>W*Lֆ+Zy1蕤+ddb}^(9I8o.6 CԎg؟2y)$plg(`)4̙0B~ 2XC4h` /LTOӣ)9/H\MtHΥǥ`qZ0ؕb^*E9̪V'-gN2DT2%.Pgcj'C}lhUYaW'T9F !\s&l:TuԪ6\#`@fY%mą&z)v`9R+{^z@S@ѥX uXaζL4"u eb2|")Cf;o> 9Sus[D JP4`Mꆕ !ؔ>/oJiKҹ $ C@B ~E&$ ~meQi&k%Y з n#V,N*gLОydLi].?i>Z2O.IN'j$ W)j2c%&(6\m%wHv}(@0d~yyagJ)vF+@`ΗWbU\HЄx)OD݈'n6H;ҏ sdIFs!DykͳSY_3A\A|..)%0" (6P'P xn: OPBNOT]_/Ye(''w.1{Xߙ`dLicX"@i@)s͇ejpwZ5[!{F |~r(?3dHзeOq.@߁^Ύ5C4ȸPỜf&Xw4Yd -wZ"6l|9 , uf|\F|hlmɺI¾f'BWY.Е`q n+RO׉]V)];XhBv.նl'j%i[ C-mH%EgB˲/ r >qs43LS=GvJ\de~$xαKtnV3js.x6|5YF ˋΰع.Qs*R0si܀D ##o.sY<;Í̾@ЦԆ&Z4G-q#] Xߥdj/Eh9 SLP0aW؊ =eKڄB&iq,tJTVX; ƻ0gy<*{]miR`k\ex#n+%@Eq˃>)sZw5~FYօNDxLA? 1B&_PeԵV2!y";& >^ ص3PbN3HB;'=3U~˩B蹐d҅x\bkPq OsQWTa4m!l~֛ĺ Bzve T<mٞC줙mBx.ˬu:S;z[.[CGL42լ&٫n.Pd1|OT*eO!nDA pB]{>$2'kK}Aj*<+S)kOqqy?Y,oi;{u&sͅ6Pfc {~wkDH } oBw )vGҺ۬R<Zn#TzVYW۩(G9.i2V|>֎)P~f\ 'Jz>.E8.ǥnZI(?G-0s~7dK!$6!ʂtV}ÒFfɘqܧY,T=As~+e-`hotJCh:x gVMQ%>`9;!9:9.o>^"}r/֙z9r*D<池I2;}! t9Q }@^w<` QJ \2Tsk[~œ*|qqyca;T'6L(ͩCJZ;w[P8aT0b9s]e~Tn0CA?M2=F|Q|-,S`ތP{u>b> v=0$uB8;E?"3ݲ3yKjr.p+P$gȱEQEڰ5F-M4 qP<%@J?jCFCԾ3F!+}CV|J'xUypPLնJX?.X7$GOŀUN;_=6e YvB )ib1W` 1$ %/ORʚ̱|qyB4XjSe T:C9Yϊ'~K:w uѺm?^Y[!a2.5% K؟) sBt%pc9.ҹD˩P_ltkJ'Vt!79.\xo/Y=vVx1@ |ְ:$e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\i\[Ar/w/y׌ ;.2.(RX)tq;.r_øH%|sHW) 1 -YhR<.{˨iotE }Pܬ OIa\b_v6b\F9ʫT[Zs|yc'7"~Cuǔ>XYilE.R}Ń2GcC''Bv΄ɥ  0W1v[W ޛb,n<MD{ Q>I(˸S ₛ:G?TK zn;'ed `T.|o*'[`r4p1fb~5:# As\cG1c+̸@JBPI4G>'WəcĉmiqydwE PH̽" e~lSC;peq]&^JC!{ӌ*_lۭ z0ѡu\F@UrcQCʜ~++UC\铵M*LGi)2R׸P"!rPdsziK,\| G9 N943/HD>|I#8n`H]*-#%H9PNϫT7h{Ͽ17yb9k6\vn2Fk$NՑƬd^zDn<.QR{sd1- KliD{5Mgċ5#uhͅLoh6>uo 2v GN #1.Xb,%'[,/)YYJ^5")7R%ZW,#q L$>/ )Oi>W,ݦ,0yKX,2'>]}$T%Aάx]|C㔔 s!ہ ^[NKF ٯ=2w,%\JUyXf(s V)cP-FgkaW4Y%IJK=w$,Ouqє8 +2d]ύm_ .k9dD s,8܊aM(sOH 22v+%MIxnSaB.-P#%B1pzXf.*cb!nqAa%l ;%qJ= Wpa98[<@(ʅRֶk@s!7^["Sr;+.cqLnUŘCDLm^2я s55-OX9 x.W ř\ฌL]?VW))K1R0%2Űb6c Xy8BhdiQ#/Δ snRd2UGU:)P H +5ʅɩ0bqqpҥ@ s :zoJn`VT یjd|\g%:鐂u X[X.R6J[ا.Ê%<SI.c}y65sd#h^xĒ Uއfsے c./xoUTðѰGyb*acK% _9c̬yH%wfOfg^@<楶t xn}O]:OĜI 9RvXSǽL˘=UIrH[J+%!Z 5>*/x-h IDAT=Uv` IE.Nޒ6 뻹f\ƃQR cK$wA 5)!+ K5&:ȽxœRnĄcHU3@:[>=d?Wc\tP# * rH]eZC_zy܆Xh1UZls,\ֱ;ܖJC= *U  csl6F_sW\%CCeWKwsuG"8]Jl[,uCIJ KWFC懗so*Ti )3lbZ,KgȲ,.vrEB1q־8Q$S1A~ 7#ﴦXt C`ʀ[I;#HPiS`$8{JF(R6T9u,cu ĶKLxυ4 qE([31ԡeS)T/*2PتG]u'Vu6s\N@~VRjaL#h>y1Wa1@l067 9º#9:'.V0` U l1\=|^{)rZn{iWPIh #*Tfhb*-x4N;9c^⅊KOJ+,:i N2*e)?N3Xmjk)wTϼH@15ZyP@1\ԱHisCM5`{RsJ%e2u8j)>$YZ9Wb-+6:LHRER|Hr%~ӎK̦GQRW\+%e@#oA,671ULJ(d]s@s l$$gP!0REnlOL#zuO&r~MYL,7 իG,t[W>$wHh ؖ3ԅ%ؖC: s橷!]JvZBj[}r"` nV[IdRWiCЛ;=* 3!\x͑rɫ&r'JIN@,XXY,blbRA|"'2L1̅\HSqN6jV=m-y03*Ԍvj { ~ r Ub~U};se}V|]eHb0JF| W+|vlsj;SY}\Oz%%6/ݳ5Ow7kط5ޕXFZ"9%W/\&_jy)w Th{cڬz% P͔3ca fy;1`, K|tCYgU˙J1[6j7_g/ov,?_]θk& j RR5CUL~vqz G2e*]laq ;tU@<滷CǜK~~VjPʋ-c vnv\G7\U?WOzg|zɯ.]T1{71U~/sYB OsTJy pus#_HP'=g0Dx]&K@\C,?TP}ϼXO}/kV.pذJ~WR3̡l S 1xWáY3MήOw*pzÑ2;\!<X u-vY#fneۄ7&Z@م<ٵ? Owͪn.O: y .6wA^+gf8 (jz&,[- Cs `)ӑX/\O[Aۗ :KYIxc1vZE;||v܇?\OρV 0? G׬M|Mzlq1 %,1e/P.4^>1;~oνB}Z4X}-zCn,0'Io :c,CJVƀ48vi6|Hn1O xs~_q_q]o'h8ˆV6<dK M 8VI2KBs Zo*cs(x9M o7^7t?oe\)׾r9z yET@о**N"W1X4̮=7,X֮%zdtdcu]ov)F:ckih.@P %Jp-ͨk<볕_"[z|&1ӒX h,.Mz>ň$ @ (3(?]gP|̢z^>8 0nL{'o;yܮs)]JӬRf_ꛖi \.;rksčd(CKu'׿&ӿۜnL25#g6X]%KoեAsGy& XIur"뵀w&7;:&9/;4_ ,`dL< )w̎[r 1吠]k)AV:Teέpݪ̱N-5:]nvlruo+HTeb1sa{b}VX4A%cNX;PU͞|W_h0߶X^buu Lܖ=f3LSssLSf3suJ)Cys,U.F)7".ֻn{Ij կ19$f ΝSMK ӉLJ腹1ي3]:y3q !zI{ݜ% t1_*:|[U̓N7w7 f'_Νz@AQ ǭ" YlQ3X69[l2LSXHL^SH1ٶv%\ɪlyկ4+RtP`{| 9 TDL锹0y ٨fv}ge|z^]{[Os5Q0;t h<)Jl&Ox\l66uds(,`pf{7 rzB<W~0{,uP*$@saLІ:&vG*q,ʁqi%w~ãC:{N pϐ v`e50ʮKY^*mo@3 c œ)3*Ϩŝjb3<3:GX1c R Ų:O챰iz~fv16H8kLb (H>=6WbVn2ɩu#=cOUýCl5E)Yd(C-dGoX!5`~oόsf\ \cUO͎ Bކjs ,9G'|dxudwS2QZ=q{z!,!^X"uQFwUx|;ouP쩄yZ !iZ'pk_f?ҞnyХC)|Q) @=ffiQ˼ JǺR#7?>~~-zw_73,e)Q('!3uGkkmnc{8<>z|x; emmF: 8BօZ1:DwR8 2P `%@:Wu)Ť蚛LwgI.:yz A)p]0$bJqz4zz )Uk)\ `rFOԀ@2V.S'~ºnإd9M{Oz'o^y2smZZ,ڔ1g2L'I'TtstڥYA[&K L‹p2' bgƘš5smi1l ,=H[J ߵb.2ڠA/= ʄʚdO5lCvG/|~\ oArS6X2 eC Yj]Sڽɋ:dkO`(Ccƭ㛗->0nui|8~m25o`q}0 z.ROeI Y8|׉p .!N^`)Fe#}:vF|s\Dp\`$\a;= K/ s-VȰ70'#C))r>ͿGD˛s{zK,O^`>PM亻MYb$0~}eH xU75{q!S|oyk'Ct$6~P [v6-px ׈p #4d93kfu %nK(-#;\Hq\-fdW~A~.\kVZ  )f 䝌d@493V>^{6-onESK2]ZO`{{<>je':vn8QE{uBN|N:N^R,@}޾iTx?0Qguv|ү0qj~4sӃ_^n퐩,"ITybjZCi M .,rmLsa;%Y>ﬦ?G(\q; sQG.3,zvn2!,lr IDAT̐ 0J7Me÷,;<,H )w>)H\(Sx<Ɉ%I`CJ: d0'³T8x0Nh7\'"JCWMLRfٷhhNr/>Gfȵ)ˋꄏ\&yxE7Hv E}%"%4suCXՕqB|cc^ O8uhh"(!ojN/rh#i$Uȵ fB=gy`Ea\>.Sߘcf5Lukkfy\Z uRꖁUn=U/[\$uC歎z~ 9PR{_TP}Dmq []Q؂,9#U#„ö́ѱt9ME-Pݷ3z|w$4)2H]9J C;tp~J, @#nC/z#nAۓm =f.YД,Rk2 f1RK;bۖ-k=jKkvk#ApZܶeaaFu FRYkKirݼoS ׬3eĀ$knMLP}\2wWTCz]RBNi8#)ߠ+'B*%qJJ9pǞ?<~楿JU][ǝuf׬М;d1`]) 9t9QK me/;s`L5"JA71H 'D2vT"ˉt\߻`6 k~^g[uQ S5y>k~N6rZIYX9U;^T/9t\D(.5 ݭ.D.򘫮?3?zC-ĻxV\= ^}g1 3Z !nv-&{':o[vx_S5( ͩSAb,3ѳv$T0bmm>$%K?bVV~s%{]ހ*r^x)r+]ljWKupucO^Ȁ5f;Y" D|U{7C{K- l7@dӠ쎟\Gm0<4]Bsq-;"fMX~+'wH `~{jɥ1oeaSEV?5a!/J@wˡ_=W_z_A9k!jRX;p0+'/zz,f1دF'w7E\%>V.)ҙmѵ-u]xeT?zpt c=~[:Z wm wD;2QXl.<~;`& D$=$Rzf7T&!6=N܄sIF eM@G/艹wJ=ۇ+/=f96 ]L3Py&I;z>V~GLۋ٣ZgW盹|CJ4`]gn5~WhRviJ#_U׸P&0JF"[b~WW7,p׌|J2SAԸKRpyssN*\g5th @2iWx:py7=98GW"&g"gQP"q χdDN5Z*]& 6P2xqztm4k\ nu~qϔ0݊0L˖Mwj;hx'کӰ%MfCS`JR"oaE.`@c~`m7'BM ؏^#!:{8h:k|R>u_f~L*S˦M+͹Qc;O zj7a"u>Hd=r '@/,}hJ@ٺY]>R|xeP:>;XDWLzf܅oq__GomfZI\wLI"gL>IW-x88$h?CNƩic ]+pZXͤW h}:8. Qu`RY/ɛ@gw*<]s\DDD$#(ȑ>}䪿 ]rXE|cYLUN$Sia ].KzHdc< ĸխeġtg;m0opg/G=K5jQy{ٽ#s]q5ɀoV~Wg~ y,VyU`%U:gΑb1]$gT[IP,ZY kv:[ޝuXvA0x!0S4m[mWnt17,Y;"ٱu"nIUHficix8[h$NR2 _g0c(*bk75o><{_?-߈\S ^)x.H:#-%2; CZ$$R;lް38eiz}z8WL-M]ע[_n~eZr912ffYg/[<ɑ^h2@ gs3ghxINcBf]V]Zʖ$NJ, ƫ8k!d Nmonʑׯ: pS=;_nZjUה8)!"S]BI eJ\Q\v!n%;? 72Y ϼots Vs$0쁦.mxO?sΌW-x"m[d722ڶz_Gϣŗv#1ɒp<* 'ూMd.тsO9rx|sڿ;u M7yՓۉե7K4M ^{IM|WAWm,a*x23NmjևnL=wr~3طhyb6o:,ڥf'^4x_ᄓ/WCѳ۱%-~ނ=s)I¤_)H,JΒ w^' t198r-YFyam9'wx,^|wMN/M Rp 8AIһ ;@U(MQJ`Mj[jnrnFΤbSbe@YYSvXϤJ:<=-]Z|dQ87CDG٫_$ƒLsKXL]h:c ( w{f ^-JE)PDD[ fD8=vȪ[dNHdϻn"!{Y`!Xf4>h11ޭGMv-~ ^x&xXb( %G1X79`%B1@ps2`PP.^Oi s+!#_w5r\(ÑӘ@ܮ6s TvɺKYriYumojNʒrr$|ii=_Q51;FRUSP 5X@L^a.|EuM͉oWN,L& mXftz`uU#I`)@)|uc0dB}*Y(̎ѠG͊hR?c6ܬ%6L ) e{d`2CtϷvLl1'%^› ܨ@ 941~9?I-C-3&0#¯pe8@ z"rSۃC \$4\o͵a9֡/GέD eƿPwEX2D R .DŽ۵Nm޶.XCFi¾Ё{nH \dJg,[%u٩7JD/X3M'{~hHI kUR08{|wgt47{'#cf)#>W/<1[3gE kn?>L})ilpoQT?S%IO=NĜ#gq-58)*tF-rRu<~_PFݺv=N$&W#ߍ-"ݢfQvXi&Sl3U4wj9nnZөa񶷨+tk;R!zrs}]jNZE^>S 6Pg%'I*bJ eN7ޢecTRnly4'zC4j,y,LRceV5pBve[=<i*\_~4u`X k^*s<*MZ.<>6OJ]`|_E sif3,+~Kzfǜ IDATo=I()f2+ ͢Rk{r 䊰FHJ\o*Fd5O]((}j^X^꒢2`km8L|[Q_PyLXrNБKŽvlF-USFX:Fb?!T $2f>KMjqK`}e9y)!(Xߚ"w[Zr9*%IKtroCH'n;,EYSwC}&J3q˓{&3y7:/$,".Epfp|1saxu=y͒xR-F{l'ҧZ6Xr,s*Qpr[t;@*5pI]栁n % eMJu"o9 ;ԥ% 9s[󌆨8bbp ;`2Wu=fyꔩ\2W@L9on[C*QS&X[tIq{C\gd5_H #/ 2)Ij}'Ԝf,CqOQֶQr}T= u.[vJ}۞ b㸍۷8Ңٝ-P٥ia1cdC?&|&2]RׄkCQTV)A:/D|SDW*C ޠ&Jj655ͩHBzU.%|ոX2VU<'a#q#=s/8Q:ycG1ʍ"8r{f ?f]'wLyR}L/E #vr_JQw!*ijhUÆGpSjTu&?M aJvKordr,A:+kl-S&P@zO}FHr/|%'yXԎ`gˤC1e#A5rϸL{f8EPǯq\f*=FlI9B~5k:jzO%-IH3(*k8Y^3dڔXFOȅQX[rKO]lSޙˎ^9}\V8XQu`ZBT%٦ck=!{MrCXq P5cvkn)YXp Kvq?F~+`LdKL37Zm@HbW}v*7Y`&c3XJNO0Şq*HC3gƻU2m q{er45VWSkm}߀XjX]i\<4tON]ΞI.}"ŧ;$diԤ eRnI z)q3St67@85U# ۣa!<4T31ΏN#UH"<LFɍH.JSjGD\vmQ-a;?w>bQ<7k9𺡢׈V:m/oiLYV"/(GRgn>囉L/W#6%̹hܹl_GT8d9ljAޓ0 ba dyX '!-BCG1"kF@X@Xv,}3e3䲟 S%>93ny?͛zrEׁV]QYTִH+m&bc[ KT<SzLBXLOq<\r)'KЬO5r!ҸC_ڲs c bz<( Y'ٴ2J[j78Ic$sjhL&)dx)6 }wR^3cUp)M-O-hզhCYJ֊RGR&V4'o0^;p N"s܍@yǵ85qkUE*YѩÜޒTcfrq֌rJ=f=swͫ$wh {?xhLƶ#JGf. Xڝ]@(NPOn_G3k+-R]zZ0s}Q%`( ¾kCҲ|o0MZCsȍHQ͙jA"va+R"ky)gw\2#%y;A( b#?11dCR-1)@.Z15)595l3ֈ`T^όǑPtKcqcސ]r;; G _dπK5ݽ~>l0D5XZ]!'Qzp DnP ^53h ţPk֚2j`f4 N,(f,잀/BL-nyk6Ԃ3ǽؕz/P{r'KT]Q/!Zqy.V!f9w#r4lP6u{-zzdDK<#6_ ##$WM0$ksL5>55ScFDɉF59y KMtqb10#)T014u[ ez[{ Ȓ'E\rUO0>lbU'@ًq qr5gi_beo QB~0Њ銣QNXYhGIrd,l1⵼gcNt\ŐcVP(wMZsc&SR%!*Uyq}fʱk;fԾH[.?+L9@o,5$p?oV-`r)@$en?T咵vx-&5KsRtDPi>)mn[a50\0@@~"b<W0D+OVSϸfyx WɁhl mVϚjMXf3XclP%c\^$N~%X GeI91JƟ=vkU$+riBNMhXX_38z\& O1&مsKPI8H=̟R.00h"BYyLU>Ս";l̀3y{-=?Q6-jpDZ0:xR[+|t q_c՛ 2 hj8=@""#&rQjEiְ~L"qw-mNn1mI8<~̉iG$[Dh/rZGǃ0j"tt9pgfɥXfg8"|7vo- Z nfapZ 'Ptԧ\PzXt>M&tf̪Θw A/Xr,JE=ũ:!߁[a<\)Z*gJ'EܼCD8uj>3?GD[,gFKQhPA|7' )aI{zo$pe΢GiYfڢi_O{,.xM5TS׾:oM4dPMN%_ 5gj:ڀMv()8wߦLz9s;%_;红YM)Fz GpHIE' '2akX`5Qmn"v.sFx3+FbVK B67ި˰NUˉXu_'ȝv,cۍQD=3!%ol;]&Of !}ÊYX̓k* <f9ewkr6k>k|͆h1Fxܞ00M9OT}UiLx6#Z*! \5Qayq $#,|5rJZ#u4ȷ2Y[o-Yhg>7]×2I7h¸c~Qx=3<<8MW\B``559;hpbQRZV*Wxc4DM(w`91avPv%?|<7wKdr.n%,: [NlϹlv4:}$ȽH@Fކ3hQykV)N S+2EbA`Yά,F!?C7jC5y +/ >k<ܿl>Ǜ>jy:a+^g-wWe sr{O FRsxA);Pͼc{y\)_#.đy[Nku"vyޝiO-\؂cC'`&E7Z@vHZ 8o1y"FN40&F8gE|Z1͊U|^.ʫD-+"ˤcZ G\<#Z'6F_x,>Rf .%:)3>O\GFz˙"@\K,f9vBTN瘥:/Em ϔ!1na--KnC|Xl&Z\,PNւ\iII d6ME'ҌB+ĹͲQq:tafa=&%-'){yZJ-t\׏ejApHw̓["洨 jTԈ}RdDSYB놖ɹ9Eef6 3$tjVT<S1u,诩u|ND96U˜KU?O`c|x֦RU" f}qu=˰@2X$v)TKA%jas:g1>SGJEŸAGOL.ţWMw,i僸d^ڈδ8{^V2.bLj^t9m,:wMX~ @R#7J^b[#ޡe =Ƕqҁc.W^B P)6L([VZr8͈%G"%"Kul܎kY1xH\ aOY C]+Y30i '%,WMfr6x ndXƞuB ׾ uL>TW&'nߎ &Ϟ#JΥ8/C1-qs^ Ǒdd\BɁ1Di&g[ PMK9 aD wS~d~mq%KƝ~Yf1$)f4PE%vTx̵!l t +oR?C3t *565>kդ!Gg)D$o8؁c26 wHgn$E'2KWLfZВZ~MB]릝pB64.ƩE5Ysȫ>NE>n7u9J_v rTnCԂLbV9r]h}jGM/uw8L7d~q->r_r<5SgJw:wj}7 ,3qO =W´a\fq&f'FćҌg򬤀'0mA5̂><&簓*dրcdi$Vpsk Jt3Y]jm 7p*,55 iAJ|pz攰(bg\"t6x}dZZGz-Վ ngMM 1d1'spCS IDAT|=- 0T(~UP-n@d59z9trH4s.? u/!|֝RnjAGDZ`SG -3czRr!S=^.0ςDN=KwgF|ɭ?vxZeoM34':J>{<^ZZ3 1|߫ZcZlKyjlSj2TGeVSݲjǃOx`+?yQD :$yAZ&Vrm"Vkp\NKj -e 幱Yg%KǨk̑.S<$e:dʗSl7Ȍ'׊U:^ c_CI[stH5(&h+HDŜ=Ӱ#eQd<9O|$u^Tzm::Fe $wɳ1{SۡZTh !hQ-pj?7 v8%(& Dq*%<Z| nV~ZS[eP{T޸1U iά$;[DxuLD7~O "P =³.UN$Vkf6 ȹ.*2Dw<'t2ǩ9ᘮk+!_,q"$K\r.E3njug?̥%Bj8Kc>J{uNtVēs_&;Ha㩂CrؐB]N<mhL"i\;N TN4^tPs!(Cc9^?Z|.sȚVՊq,s#$Rq06zY)z>e_jE`@R"rS[ؐH,V*'5 %PAJ DsaujؚuH,w{fIhM r&)2(݋r!{ %^+zTȰ2Ћam4hSu (}h<$I~ߤ p4ANm\i|):$C FѕرସYhd^DX9Uî cSQN3偙o(g;f'RR |`'`*DƼ&e ^Wip$CϓT)eg]9<ߜwG`6&aY[$2.p  6x{w 0Ϻ\V̷TckLi86 yW~&:x,*"wFz"R2H*uaGdU6IK}*Gޚޠ˩d0=5qL*3{v MfΐBBbrxg(-\ Wf؉mk}vF5H%]??z?w2FXp[k@9xE5G[l4ui1Ǯ$߬l5{n2DB3: `[]RAB\ɐ5֐5+9+4] QM牕/ahoɨ)s@I`%+riߟ.I5^[Nإ\h\SZcfD'%(.h; q&4|N³a)AR0{>nf(Ҹp~P1E!gHٹڻ3  sN.MpC:j9S U6t_={Ħ(NX@2SOk| ?c])^5:6YZT_b³pK:MRV`#6ΙjXapE#4l}IhYj(㗟uBe`^9n*dsLDǽnkńbV~Rl2w:Pv]V9#ḼoԠxOc6# :Ml912X}?xvQN581hBC=5Mnɍli1GCϣ){ D Is hj`[{Tͦ~͸1d/RT=>AR)3EMT *Fwѭt=1J˘#|K"2K#ŪGtha ^:~r+|8`yE5ZcpߢvVcB5Ȁev|&{.CJI[:]2(SSR-i=:|]~Μ؉rn&m|J9VB|$31# ^f`)EaD$; dNǟsd6/yqO̜`W,,]퐟2:ok"OK}#Rl"DUI-c{s= ̜[N1uX%Ţ}ĝqj 5@5Nt;f)4j9{f~trˆS&|\ffQΓfBE@5?I2gYed p?ω(ˢk:3u1&'vN!]C~(7_6^=? D!qjnɉ=`!mP4ҠRb4ףԱ-TF30 O>b`@-дQ)̅xւ#ф`-F&nm- (|cDyQ{ҥs2DL-cy-Y:#)OSbs޿RA;C9OFC8kݯ\5CtY͆ F}A@xzM^u >ASqwY]>u}$j'P8[z$OG|(kAJ㐳[pJ]%Dbj4B>)D-b<Eޡ 5rC"+FV1&N*2E"w~{`w[tD Ng;~} bk G+{jժTX\b27iMLu"KFNt gsf+ vԴUyD zuIY{0x8oRMItnpRU94JX8֎,7'ǩ5sW~}I6TX+tPj5 |4tM.C[ ܲO6'9)r!)DT.Vg=wfƿVsMASutQ$p=~Tbu @n[s!A1 8iJ\Va'Sm%PF3l2IrLzF0r%|%_Դ'<ӟ%ck6)kJl{\z ~I1"X,*`].ybv83'Om`0̫A)gU] Pøyo>1J}ֹBfi֚N j)|؅>eMr:ݸcׅG 1+"cd*-$Du\5 :K_;]4HN;Lpwy~sqsѐ~sop M &5Lh| CˮgCjn3 gU&].#a%ذ!q?L{|O3b|`Oz=s,mNjLrg9xqam;<O C,Fy0iGy逽 2P@YF̩h{& %F_f] s"aΛ}S'fWI *.nkxwHavFh2,RpHW dg騜Yʔ pNg5tlGn;L773nwa1=wCnc5V4MTcYYSmx 7eϱ1E(cUX qooHvMC ] =~?B%_#hLcEY9vzLqY2QIui{w ,K5bfs6f/~6^x%撣x]̓6K SCLV SLTj̊LA^jh:tuw\6A"n##3/O9M6܉O+"=G͢BMQh7N|+p @i}nj'x`<pD}2üֆk56'Z#/-?/>mh AhWVDT}i6ȉ LD C(M m\絰 m1AMZ@~^1)07.CWISӃz]?~I{Ϻ@bc ߜ;0w d*F%:4MP-qH?5wN__Sx@9=Z&81L {",85 ׄkBck @jan viwSDMoέ,95nwGv$.x$4ڑezL<%H Ц2춄R' !Iv[U't/o_(=P͟qߟD!~6^:L3rq uzfA8B-_8)1~T[@ӽ'Tq inbGNk gV0NEF3cÜrZ3vLf"AN@^Ap*<39(dkcrX{89*m3l  `ڞ_fs:+Z$$sp<)Ø|[`@ 5)pPTMpg M Qg :8/2k0WK$s x0 Ҕ<j$\ۛ`i%KeFa; *sˑ8ڜo]=g'4RP'%,8=) 17<Lgqbma(_jԂPk?Rcd4]vCڢR.R%>b @<0r ݾOEF =,K*LSV¢R*e:YMx"jtHxwM} S7;=07YC63lsUjd-x N[Kep>7kss\]nT<|ͱj|K1DJtw)"Ȟt;#wE3t].S c=` ":+VzPG.6|cʸ%Xi*j2(n,*%gI M'N/?w8tKcDVNL`신`Un33гkԢYr .<2!8[ _7p2"{]û-8Ekw-3 cFMԲUz)[k1 O[$'\i >,,h9 Y?k܍,e4_| ɻqn܋\SC=fk8o.6 JDƹ"oV(-kyWL?fBq5"y*r w mNi sUu핹faZ=^s D DPm5x 1sYscZS=OC]^Ÿ:H=#{x._n^J9XO+9^=>!\;IJМ)A7n!/b9BCzT& PNYI(A Dsgr'7y4ϱ%Ѫ}-)ei$քa#S;|9L`[8 ^~Uڱ9[R5|;gd6\|#O9>;_W+3rٮersPX ; 9No~(gB B5 IDAT 9U9MMu#U|0k;О *ˊB2s?l=mݞx(~3۬}<2[(d8]ep =e<0ײ; 0׈55osߦ-NSvr DZz~s\gʨE6珹9#.^pds/ؤd,cZ̥WȰHBYc#l=/ ϝzV &LrRo%=47e"UC tcX C\hGr 5Ç Lz%hpg|1=cpT<*_xqlr-)LW;P7TXjSP{w~/P.h\c J8v{u&%EP7q"+ g %TBzEd|Ɛ܌{*@m/Ψi?2zQl tģ6$O1/p"Z:/ƃ98#b<$\ߩ<`}k oi;hlw)DS Kc +‡`s|f5gw=AP cr/N8ĝA9]QNoZf)tHkLH:x=F7o&?a&D`NI6Ơe)ZH5,$'`xwknό%"540ЬuuC(O=3lʋ;{slYGo+;{S1fO~ ^ =;C˞5CKqM+<SZ)s.Ӵ~RK.޳P,/SH9dKM{:XXFdV^S7wH)8o1kl>BBM>^v ^!4|aOr%]=3bD[ެVy {]ws?[l֍}eў}R5R/#6|g A|$\ѤY{!=xʔ;KrUB`V7")ܥ04^ ✈UR$? lӯb/0k| i O#qAx9?V~xqXJ37o +֢͉ȐTY9>ώ=~_῏~R-VβhTB#ĥB! WZz%D4x9J ) +]A?o ,l jF8jTKӟ{0~]oƱayե25wWc#F`8^ qEPʥK̅r DG^i F+2sK0M%jkLP.ˎ Asz`}'mn`va{EjLuR+7b8tl܄pxOFPK!}}ME-ޢ 8Lv8揺+ 0󀻫Ey \Y&B:v/j@1Uy#@4kSl12oPЁ"t1;`<D`9PӜB@ ߳*2y]Dp6[Y' q#WCXl<>پoRsWW㖉5^w &Z|6x-'0%aV啥`W`Sw%r5b̞BC{Jd lH 񸋝}*qМWBq#!,Ê\gx42F0ҭPY6%pJk`;x:sdzMQM/ÓGuU Rsy;%ϐe7PRȨL~ܕBVi0S*ڴBt)u]f$ 錰0w4ݞI#92U0E4 ]0Zއ 3P3$Vr!Źyt Tx F8l<7px1ՃRFkqʏ'] 6m%4x5huda h4Rɑ&üW甙q{mwqne]3]6Jl~b$ v/̝P张Tw"z fvj6rlx+wJ1e`6png=9YyK;LS4vf`NaMjzN A9_Ã.9lyًOZlcm6D8px 07g>zeR):ʦ -M|6 7$RQyG*P"Z9$??%h?v pFֳk?姈 4d^RK0D~ s]vzqAjd@ʄKjj[p>׹Dωo O1?ܪU0O44XfnN{>ґ|gqJg)#8_{],g^2"Zkv8^%gm{f\{|Gw'с/GM.MC g ܆m 54B Ni܉Yʾr.5 ϳ_#|(bKVQywifBC+alFh݃AӍZ{BrmJ|h&kL`R*;]vQ=wŭ1y^sq90MG:6'a4Fe75{[ q_ejCse. WԞ~ ul<Їg?{c]KWNt2ѯ)q06́ii>,pHx!4M*vr\hӔ0݉]/YM_޻Os=؊k kA'Ɖyd 4жi& ~I[, >X0-E}I2,77xR-O)`aja  ZTqL|lǾ|O)h]XaP O`X:28^ mA>cE"*'UJ'HwR*{!f2[#/ۭ#_J :ZKA'kR*OEaxڞ r˻)˒ƺ^׉B9,B$ރǕxFu!go:\ժ0SQ1c"xO ݉3̋8KID9V!1~3CE:]NTS)_Ԟ==XOBu߼Bl.OhJ` guqcL}9ON]fJʆJ0RŽ<MFl,Z{C*z+fzr8=mar0O$P2`Pa4{0BŲKxI&Ӝb0%Tc /Xd*/~ʹ(_=x4{<)guX9]kXKMr?\(Օ*CSQtrwȷPtb)eTR%= }+TN\{C}6pn 9eX<t̕!i8\Fq#Eq qRGZ)fRϜotJs`#3q!˝Ɣ72udBPj_MY$2o -{]ܑk 16;C{*oָoGˌВ eNiqV!Mtg F2]4[PRQfg/F{|$%RU܀'] K dDe/*UgΠP!~(7ь%G̟; S@ϜfILBF)#AF99 g,hJ!];\g\'g8E!2(6NiMnYmس=w!:O*Sm}_sv35'He'"8>!k~{!b٧Nݒ"d@Knl!L2u5TKA8A]x`R$Cx&:rjItvޯ*9P} ى!p={DVj/\j<-sܻYGh4Q2,!5<ڸw% <r`*bOV˛-S{)/J;H 2 E{xLTwP{!yCJc,8"4f]r"wqBAGF}*a#>kٔ#$6O'XeHȵ(-gʐjax Tqq')'[ Uv1(qڋPZDK F*)pFSL#>^ǯOf) -Fi}<`6RkW 9LFwb# uP`b90Պ:gBW⹺͒ z`!/XIɲ%( =۞,{eM͔fY_>p9S0]"Y2MdXMP&3DiHV=K֌񪞀G~wQ:0Vg;_S%ewvL%G!oy)W;"/@8#A={,4HtViR ÙfIIO꧉]DS24*>bb"k#msf{$~_+T%@ZrncOG`;| &0e #YBb.gUK91a1kщF2HԐjѱ@'{bpυ9y*3193'(s" ukcEOuj|%>{@<=I6KHϧ 0KkJ\G"EĥD 9U5ځ]GDI4*#J#Æ:x 0sϥ|A/]߃ю3ӉyCL0NfiCFK4М0n =^kXgRk&5[F#ҴW {7BzK܍"q& Fh ˕s-fn<G݊ sȵ˔N8ҭ=<<2D?{cK}ؗ<ԙꮮtψAcd1@<0c! Fx@&aK^x$O؂$ H1LttUusܹ/kȓa@X 1/GQ͘C\nKNt΍H똭ԜȮW"$?]Dd3e΁=ɷ4cYZN%} %ttgN)A%/RE{lh6;3w"nܕH+l.qC1o!d}o7gaG)7,r%R9vk >q~6nZgi<˒!l7픖i&);nc02I\|7V|ni Gcls]j8s`9{sTk=0O0\.f$Zc c̕.9 !-䷖ Xw0pm7 &Ux{D c002HITb ]X9X0އs͌ 8gǽy?l 1HVʋr5>$nLȎKK$ZsœȰoEH.4-˟0+/4c9h t #1[ kVJw8ߵ[ |a.ΙVgA8ahX€t&./6o\\UmIT]l.=;o* dx\_nAՕNO=1r(W>$LH_|_/ w[7p甾.v6P9ZIVЌEsHPɀQbCOVS)a'Şmq024C@y7n[:Y6CFK dgudh5jvbl(aJrRweF]+L ,yw|`Θ׮%SvQ!8/S\)ӉCspt@=5gu'PފDA^Zb5*$+}Ϡ vuХbdz(s:n7[UDޏsN$g`Ʉ:(ަ]{>wlW IDAT1dc23b!1߂B KS/7"Y#݋Xbtl%ǘeئu@z25*9d߹2I!GTA{i6=r J79P:S1fuё_8P/,{{n"' ])3d_anpY罡g­v*JUJޣ%%zΑA'Y5J8y<,fxt5dN v6dc6U>DOP/e!f)3WXd*M1Ϝ֛!]Rߜ|eju,@^nw`Kt,,`hYr(7= fZq-Cf5r&LG0M@eX [&尵bv/vqF?VǶٹvU@ z|w]ƙ.e_6&%JDfȱϱ@. I^|̶-tG85@WuF_S:Zʕb=2$^ 9s{(͈kSF~&Z=LaG2a~]QTv&̕L g0"Dׅzfsv?&CW2}͒ai@z24$Db#|VI >ta<xsD=, K0Zkڷ}@<:x*%- L ) %krΘ}/ʌWsG!v=5VHBfv" AZL7JAיĉ1Xt<l >b}y6"7\c'v>8_/~s'EUD2_G'mF)^e,) k4sI& ܝZ$qq,,Vsa&"'NH]oywⶹO KޱxҺMP&\RZi弔Ym  seB7 W`ia+̲{vM59`"adKaޥJ_שkqʈa,!=6D*JU1#6i]1!7h04D0~C`k! 8Jk[nk׬a5ճKCA<~)2g++ڹ:)MeC~&rClSjJ~q?uF${6,y &4YǙsdȜ a{/b"¼\&%Hr6w3O=<$N;  PQMnD ?GSK3?;l9*yS T>^b7Cf#1ƛ[CAU2f{vǥB`&Y!4L-D8os'|\8deC~_,a6"IR2:JnJ ɶ8+$ U18hϟ$cL{ >/'7B:W+e)X=&'H} c2TړbЇЄDbHďjH}%):Ko;vn[zQ G"ڄ8dcs))fYqf[P| ם̷bX(yUjOMzAiuDtRe]\C|!N|z' $b=\5cfή`K"S?y؉H'.=&X%L}Į]Sa蒮GoxL e)3+_opav߁>[[CB,v 韄ᐴV7u;,v"nLTR:жo!c 4KCx&~ʀL`a2pzu8xv* ӈR5m)J, َ+K2up,߭0z2;4YIN]rBmEr+@Q:K_)/X>fR A6ɬeK(eEҢ߿zaF[ꥒwtԜ㱡vc*|bݲkWDfjR0DW%T~‡Gp#E6|L;9FZ8}zXg7b; nr揔j^LFR9g 4#"LpJI0MRL-);L 31<58>9.r:f\c۬\6fg>6=Pn)G}{M0uKƀOCNwv ߉NLx|CFhS'B}ɰt|($"?d# 铩Ҕi"`VFI13Be'z KA !(djHor{ӵp{ 0 ffaf{= z$Tk`dQr CIP~OeglߺE0Z}+5e$G By'|ߵ8qxb m-o ̠R!|f^Hı%'Xl'GU'0dN Ίҍ/r?Lqgb2 MJd t9rJb{;gE?Zu^⼔Ywi'3>Zj\$ʉ Z|@3qmC "g/[XuuJz΄ \ wg׿ K9VlInT2ZI2oav͂,AD`Wllf: p}8{p$IDح|v@ h.-n PYQ7\X `ha0t"f~c>[ ii#r G'LLf7tF);טu8+p>Zވ0܃?/{fbXo P ԅ/RB#RZjb,q宀%F T6LT*p 2w܁ݞ]!V2K$8K"s"TzcZq.6| 햞D߉cg/3hITxYfu`տ߶gqYIİ͝5i ^ccBwuqS$4%.1ն:簼ٶf$mF5%̍Fw{op<6d;xN|8txr&:FqJmZ@zؔzP=VKZh˸ضci1ÕZ7hF '˓B:\4L.jn u7Sj&ȡl6؏ h1IcT\ 0qDpWr9Y1T8ہ!9gJ ecKY2&qh }>%sEXM:,$M) #q⸤>\wQ*ȵf܄Ř|Nx" 9H;n@mn@C9c6Bgףt=]PJԉT08g[Wb@nH\h>,q!/j] w8َ6KJNqM&2nDN]P" $B/V33MivHHTK9 ] dv~/b(w"2"rq'tݪWid2_ EX'd )N0N=H0"ԗwUqzsv[@|@̓S*+ w|RB_!t2]C@҈卤M/c8/EBlsu$Jkvo > x{A3z1$XR54IQ)AjR˒ cs!iIA.!bȀ'zSD!r#S ()#tƀX7? 3`g6a6`"*& TKDFJ,+:)* JP`gkt:{u)+Xi(d|('7" SP8bss:$k1lPgYBAԾǻS+y9,`lr&+č qnhec4I\ Y>3SRZU*\ ԳNY>ۍe]dc7$%6S H'r%]%%@hY Xc:kJAD# eulɍ)'t8΢K ư3s}_o۬z ST{hJcaczi2U@bd )cpU-* h 6*1f5brhfXCzQ)=xti,\D$o'm+AD`8Mw;Im?(=Œ 4o9=f d?gJ%s } -'XLHB;ݧ"LBOlJB}0fhr'RNY=}%tLtO@Rz 1,9_oPQ'pD> +Mr߹dP̒Ngxe)Vc- v*Cx^#^rVg1QP<~NCeS$k;KW ,Cg!?Bw-"L#Ko&saq{$]&/h2IZ:LZ5beDFRxW8i5|]10n7<.I D '1#a@,8_Y9~P/JC&($+ľI#A.(&м `IyM &= )N_+Z.>h;5q%-Hm(dsvlCB9{P;lHvyͱ0þ96n:@||`rFόeKuLCDzau >N0,oBmٟ,EX*",!߳F\;Iʇ誔Y?gJ@ɤJ̭ }Qǭ`kS BڶЅ8ž VYv&nn@c~0V`ZpF؂˟s'30tՖK KCᕬQ4(O@ \hc,8%I䒇86mVJip݈Pva٣Y 9^pzS7TC!h2c#Bl nrE7~ԂQ8U_ [v8 QH_~^:-e Oz@|;7>Ҽ75 W(@qN鲇ҷ5Di =8^*I9SI 'L= SzuY^X`%)ˏ|/K=OS 7 kCr\tr(A]"OS@?Vc=z\omүs2{,/Zy㔌G _uf \3G 5J)CJ0֕|V/}!vksW8pc@3q$0f \;f7©0*BR&9ZwP4m]"4.I:H!ӎPI/u` IDATA9GHRGѯo \YlV-魊>vyU@'ē@0k~Ab0L@cR(tç| k 3"Yu6bIo_D|q2DLL8 vHfV Yda+úK8\_}tCm ۹7O4iOLaOr75qzfj0r\\o^<$uQ*r:,TL=2cP}S!c+ؤ4jcC C}e`ޮg;p(IH9?FrañAvY &|Dy< Wt8;*p\` (:q4 ج`ބV>N12ݗ2sL;TkHin C[ ~b`H3ھ7>+nbުmN|^mK6׊E n 4oiX%4JRHWY#;ES̏58.!V^0HKOzP!}HNXGNa1@eH0\ h^G? =Q 9.;٩P] m^#Ϸת=rgq1PYuXfIq; Zppb :t+7&A -'b /RedNn7xW"ᴜ#q|(;0t׿Cu }~\e}.%ͮUrr͛SZbI"NfYY3Y"ݑdV!d8U &+AӨ_)0f~x%PuH&8n]5xLI0k=lEF1'D F:SEm@FI ZVI)`=eCsFaj]RXg!Ts|E1ǡLi)B;8GϰO&b3ԧxW" B|SRR5q9LҮg86)dS|=nľɮ'!7JZԾ`NLhbɴw36rJm#7"6tre7d` .6=݈P}?t&*R5Zd~wmn6{: ٛ3_ fsJozpUhnߩS E QURLUdf)Si@FA3w<]o@J`Vo?aeg/EH*;K|q\rvgzFM9 FЊڊZԵ::yYli=_s*Bl+R$^ *"XaXoZXS&"'  eh`Zol14LRVksqTIOY"naf Kfr8 p; d߷Q آC&<_ ƽ%k

r"BEq([Mqay'ׇKi@e(|Oy< /M?d2< FgɆ6۔z*#{X8nϑ`O[y[Vf`ҐY?Ux9+i0`3\ϱ,{@Ɖ/EV,8%Cr鶤7jNK. ׵g_IN7>)/칺!bDD=^OtL.;Y=;^$m8ڨx&=i\ ]w)n˥!x-tC0x-ʳ0e_ Ή}؉u= 8j'V;+K#Gzxc'֕,;6}ZܤKZQZ V&Пe=Cٌi<2j"߅frdz\u=SB\NvUDp(=roRag%K\Y,~ Sz fӜ-uR2aSc%5Q߈C#YrN=MpBj ppcb/M,36.C+:E.Zt) 0`82CLTޗ0uc;lg Ia%XdsF`,dRO^/1,\)6e-0gPz_MB2Dm0LtUj:iH}RLrg36A!J щ`8$ =ﺦðnU{jf9;Sfzd--{.jY'*-ɼ,`%Ya&]IV:˱3!z 7eN'4.[(!7"tqVF> i@BC ԞU(/};fN/pH6m ǥY8C,T?;`_¡4n+w âoYg 'BVKnlMI2ui !7x ҈U߳ri/i!ws Vi62*UtH:ɈKV ,Og#ZkېLRB68$V8d}%X }ׯ/!;dػUv=]Z -WG%J^ϕEsi@sZ23LszWi.==! zo:BFa:} d-f.BaV@([/gTr[yxo_% ;i8o>WWNZdBkr47YN9-O<^ pTB|s: {&)[(u´LLsZ^?T< W&*uV"."3{F"Vfg8CO9OT$|KB 4e:BwQ`+3=89*G=PUj]o a8ه>OYu3ߗi8tL˴$= ( 9l1g!kgEʰ[NȔΨ,%=C/CǴv9L9->g4pl 㲌 `nh%KL]6 :T5jZeiyfl4, Ä/Q%L2Cn+ɡn҉ vHj= HNBΥArY_v7&Y|\+2n"9-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-溓̴e4-yn{iiD,vʼGɺik-f:@7MIʁ́,az L幆Yj2d-}'G֡y>MLw7FK?Go %3i.i c1Ǚ3A|DzEd )i@sZ^G&E{#1Qbax 8ڱ@ti1Ŷ pD2t Bf s뗰ÒP=*a`˔=unz̵^`{,>@Gk #v8!!$T gDV&9-ϘIB֒ur-n.l7"hrmƘj*5#t'&:( s4]shO\(r8)fV4TR^n>%JYd!Hf+w5{Z&|oIO) --J]Щ eks9G9&ʈ!p2K{ǖ~93ɱגZ1)P/ 1۷Kn1ȹwcc$Ҳ 42O0spa)lwbϹ1HCdBDe6bṉ3'>#<_Қ1;(Neb/ K\Bhw* < 鑐R -vsq(]J9%uYuBK.9/e[},9lcla|LKLF)%Չr9 ecąlZ&мUO_(qM.W“-en J%>(63"ufI Oe0{sčdx$':;v⧂O.KJre9z\I&1.Fp>v#)IJ`z(d꜑JZ8K@46-h¦Zfix>"odŮK@%p%+aM%A\0ɖ{n:.1B6opo0%]0)x =Fn䤀,~=2tIeA<GRިZ|(t &;=-|nj%Pl1\ofPIy |'KBהv S!tl(t15,\RN]:c2@Cqw\@kODŘK šP;ul?7y2ꕜV)@:rJ<9tlr NTiˊh%m%=9/-1J]X;zr(gH#~DJS}(UT^SɸeN#ecgcaefIR= K=9s/zO5ȕa1v{,7 %S*>e'мVX>E(dK&1]Qa(rYOWC L1c)Ji c7찄!}։NR@,,ZʀMI5/09ǘ{M gr+nwp"k" #ݚ92ʘ&М@{m!͒n\.k. Q9)`A/S,]kr),q*>C'VCIFGkv:(ps i&r M`ueJ˫1t"b!H?&s,s-u~>kTXsRgLq)BPm7 U(>wؖf&QB"#Vc}R-qʉh(אQr"Ï^:C@q2["E^oP6"f(-u0HYR 24/Dc[gEyTf蘌1_K^3Ni3)svRQf#.2!|`e%;ɉ}-B _bzre.s3H;V8tx-MZ%.$Tiz!7W127\1vcP#mŒ]u >Rԍ!Z%^'cD;FDgDRF. -4Mg@4=tgBkL)b9BJeKRJx]u1,2Ub4F4Jϱl kb; gSc+33 ]LuUf Bu.sngBij:_y}u͛1T(psR^@9r940SK%rDF;Cc'1%q)-8+ 4_w]LkSx)2) "hikb!.I ,`1@!XG>XsqoB$ʓ],KBT=g{Fv:bjKL?L}9Pctԍ!^ Lc;BYoo 9G$ܶ_Pz2}bQ̒]lciI'[{Hѿg1;f]Q&ps5+7)Y!O.r"1t9r7қ{i2qb/~cP%tT cnr,1{ؾŴJS.dr\֖KDKސ C0=B쒺XugtRJѽU1%--,Oǘms͙;|(/)b9:Cٖ02#D^Tf9U̵͌LvL1@LD9kawUsfg-l`*ڨv`rȻ:JBSC)#=27fx!37 4o*bsqCJB$ H%@Zc!S13@l9'oP]sop؝;x0{#0Dr]b#]"󊝻hEp`8vlj 6 kZ0CK:{*IN,Sڪ!Ɯ*F/e+谯 zr,J&8N,0L7'.ViI!Z]b|>oLe=v?gm)voLs "0{I 2o2`M@-]~DDO|~DCvlG 6vdZ"!t$19qJg%!rNzsgJv yS(0IV*S}b7wOv5]ݛ5 bיoC0<В9<}D63vt]mg v"\cXȄĩRX nMMZh9]5DcmhN7JIӔ,]iJ:sLbñY Luޗ:mw?b7nضt; ԑdTI 77nwy .}rFonrOziR_p]kVM冤iYzk`Kv*DZvg2KsCrqF*HaD16Sfqޛ?Q?Jd~9ݭ'd/*"o $5s,}&Q5 2뚿iw+|1 ;ضnl} beNԱ@) 4ofxW^Zz rDK섀6/6 `-'2>89旪c?m|nnΎomסM0"bKTq]kn:KBiJXfnsޜ%zAeac%sxr]1%V<J4TxVEP5Nwgqvg`~νŶfxw1 R{:B1^eQ4;Tm~l&P%anh9LC 6ZZh`9/N˷UE%<0z)AVk!ᩲc2;:T赘>4?6Vkw,0TKjE΅/aSx-9?9d%I0XW &,ʈ:9{K/mco]!v͌@Sk5 f*KuX$PO*ۍa]BXn=\+OWyhȌ8־Y4 Kzs%R\ˑXKjB=3̽i[`Ato?*WZ4վa0ٓbZ@8ͮRfOUUW`K= Gcj,ߡB*A1aC!zv]dE2N3;]_b/t)c!p|1 K˔q Ƅdwѝs>!6f3hz%~dA3o x4phPC?Oh.$f)xZkrQNmurR5G6؅&k4N$6'K0U,-hu/c˱ɜ~uEH ]-~>ZP.svk?'{mq8Mǃd-e(٥o 1bj@ \G3Bb4K4%p2.s:XS\g=12;\-jT%kM_h;1KA夕݂ص'w?n! B\'^: 1R+4KjsIԶS$cs9rF*'jp:_{c؋@X=t .%Xj22=GJ Cߕ6A2$cF0?.xK1TȠpfaلK<"Ka<)C4~Y'h;&#"kQp)}d^սϞ?ED?ܯ݇}v} xwmL1& L uQ( eC5W9g+3f ,``9suA&s e%@ `K0vg=E3ֽ䥆TW:.+| }4-\'՝N]?T7{$6SYdR/S$s<).KXfBG8 3/kO13,M` flo nN붡$tNOVfA,Y3˳%ћ]>\EwEO͢e) ar/RҁfitYʠ2uY$w?})j/ph6h?[} v6֐p0% Ď͞c]A(#0cs*fq`7 ճQ= Oτ+P%-3.)sX$yUUWz$fkc>9]:{ZUzR \& CHDS. g9[,KʕdLA3z)s9s oƝwyfƾH[+7mO;^X_оTw@u 91u,ouw@3`B~d?Ftz2(dꃇU-[v8cb|`l{hzSZ:XA|@ h~NEo?y%Ur* *yqأK_L˕1=I0KK1$K3g*SQfޏ|8KTU? 擫Bwfovioi2;z|9;#}<`" ߾= Suxo[4HRā1&j_#pbD0q?K%3pp^RY-C@g?vi`fϻ 16p9!F*uL۬1`b`JDڹy*cɟTB',=c5ٝ{֘"`wv]Csp~JHh7"(}f\^j3TBb9ux:|Z eigy# v*p0&gs^W>C0x>NzX<1O雹uBîk>Wz0?}JPʑ*Fi^%H=sEpcplOjbj7?9}|5[fl^a"oaPbXz,Xeq|1dxdRqښq2 -m\Brn><֖\Ebk d9ֽcE]}_^HAt*oƹ}IQf]p<ZԮ!]afT]w,c>9 WP)08 =JVͽ^I",_mDjt- s0A%š'2:& b毚[6q$dʶҝ9 G$p+A3K4KeJE$YD t~3ӻjsU{fhWawx!J_jF>C.YLm^Čt?X|x2j:"&pR@5A}u !Hgy"GNT;^QAo0*%vk5cbrVlWfq\sqO9UGYR>{1"Lz|Vy''҈KXc  @eN| JCa0W){g$%pJ-Sg}GK >`yUF;:|uguY]W"^1 $r9o=r'qc%KXP)s`KV2"?ާ o$2vrP8̐]n3ݎ՚A̼S~Ty| T]# 0h1CuT|_8ޗU2/ћj9ö;'pxY,1k0vY/e/}GꗞU6Mǭřuzc]cIݳ( < gmfzWZۏp 2Zbt(`Ȓ#Q TfCbtPӎKSf.Kj0~ZYu-oW64%!g Ӱ1~1]2al=ʔ~LT=`6h7{Yr:$]Rge͟ e8;uxs/!R`H |@xZ!,蓇A)$ ZOhmI;e g*| 0.}깬zJ*aSf׺30-5;"5SuB́XIWA3gL@8qc.>Co?_f,E]=o/N빤JxRDdΊeM,gL45"JA71<H_r)!+5#4U< k`1'axo"3z2;XD槪{v~L pe8v}0|L2zcvRo$9 ";''/_0%}cc,6!i>2׉7;O,?x8&DIUh.hsl&zznh}Bu-f78V5փK?bWP$W,?`g_ySpWJcYe( =k7{fILy_'Fw P"3$i6H&dZL d~Vc#8!!Hwǔ8EDdxxs" n[ٽ}ofddd|}tdTk-:ZV^ޒk.<_tpúrB(.v6˵=*0氾T>(|< fE9G> 0smpC D ۶ň; *,Oƈy9iF$ 3.x̌m6CCdV3g pކ.NNV21%MBdf ׈3yznuב3ed7Ccu݃ Vzwш>5X^NkĥҊʑTM@3eGC"/Z2BnNKKb ]5ͣ{h~>btAS;HL-RK]N4,)Hl뻈u;zY IYFʲs0 3q爸Ì 4ޮ E}+%k 6z%jd\R)k hI4L Y(:@jK=01%&]umխqW'WKD'?mgg,#)[2rqCJ^X]DN SsO3\ IDATB8}kN/6bC(>CoU\H >r\_Z d'}~B x-_ HG%_*dEDZR1ϡO<׭<6S.c|'Wz|7" J9C7gp!-䢤5V0KՀ9FϿy{}txWRGh)oa9.Өh05`zn B ϯ4xaT4Ԓq'$gBUi 3,@2p#CBq#0M.l'-Q D&@|7T&kP1Oy,S!Joe]i üٶ֦]=dl&3';4?CK=1wQ\&y -s>Yhq[:({DR וd lN*\aGMZy=5"ޮN6[pto^g3XnQRY=P(F޿@K1(+Ġضhhrn307Ah1 nضմxVST%&S`J2yEx?O CJ,7pbQas\z.ZEDŌ"t(#9Gu\#JCGO=Pު/a>MWJj Xyq~w^{9yא!r5'K*%+oh"Ryɥ)C2 g/j:<=TILqAs>nRJMirRQ) RbΏV/PgWfא9hv!*CD3g_)ЩH<.9KX)[s]E]nqʌ$qq8**f.wWI5zZi=/ B$r _+Dy+ą-r^olO/sɢc j716]d< E@!$T ,S੍7+\1j["b`OK f|C/a#2KMk#bSDC8b+`{~L/dt@AP=? DZDIr3~Y21,)M FF҄a;էϾO'ZEF]dD@xhwa->i$,k$I*店\ڻ-EBa2~3rߠ#3^Ʌ~@Z%yМ;"|N>CȮP!c&Om#DfsɦR.`׀I1m7}Q3ũ?2':Ҥ>34>169[R梁cPrIYrNl+5z>"Vq*1ژ7x?ukM 륕FWWKߍc#gݨ)Okʊ<9CWwknW53,##pٳLZ?r2.\rY`ܮ׷-m,S ⼊:1Wh.:#74M32U4򙞂^T2li wDxG<ZoVs$,(\[Sg'P"7{=!.J H%w .AYRKi|ˈ#۵BhT۔S'GnDvbE}]hNdr(T3Ze^}.E}Ƥ_Nܝ_QFT2oOrbԇ~R!!=)6$Yz"OB֟b8^8v6@h7?/9bjx 0`d2/G'? s%s|*d#LE&]Kz@dWl3R2cBzfڭ/?faV8mwpliJqGn νy3cX-mpI]G9Mf*uw]G_^U)sI ;EoL~u 5ἆǵ{b>|[yYԖyhx;TbF &4jDِ`F2op J4MBZNNj%5'0%Hj!O0mۥ^m"-3:Q/1Ϩ Ju *f/)AJ8KͥJؗ}N')UjS@M\/AT. o TS3BpTBorĚT22Bq\)_Dug@w\gab7]$b7;p0,S. ? UnѴx}2-)'GB ;HKOcv2 数F sa킼j*/4߹n@K)H >R=99>٥`t +:T3P^* mWKgg C/BY``'%Ҁǖwœ#e^-V.,m2,U}r 0̓BL'mBs2-6)yzp|̚ol[F,d2E>_vnEZNʅ;MKJR煛RSyLR`|; ݁c;l@RѪ+́eEW6-Vq4| oI<r瘶Y)2UY_m¨dՄI]rZK7;8s"!úcف}jސ(CfɕpacM1˜anj?c377YNSL 4Rǖwh2R K'Dx+Tz|E*zsJo*-A9dC\+8d .1(q\QyL.9›V Ɲj6gRNj/5hj5Rk0&hwaz ?_P~.O)V|}% v)C.a'Kb Adfd`NK/QHDbb~Z_Ȑnt! ,%="Q` S<tRJڑH6K]DtD}v%=?CsDBs0keCϞBdBxbL"(33?-~v1 9=`v,-}:dXR,g堁B ],}-)|9/&)(=4/[ju;90 =VS=-/ SSJ.`rt)A&nu>gM64mG|;9fzL4oOEꔨǜ3v6!.Fc%ƒQ%ၱ%-e}nj=*Wq JX$f|T5kKܒ~r92>%r 9b Xb(șLO˧^19BU߀ܷN~+l'e}n>xXY@ dpN^gD. % 65#R#hX( &@{tn47KTk.Nf`ERBHi!!dd;y$,a%5VS{D]NP\B?ч!2ԨuV\l FVYmh FdNcܣsbaxmoѐΞ$wHyR}H/E #vzSɽX`ǻIlGe;jccBbv9y_ ѪI 0 xs\(W As@g)(X\ $Z&A}>k|&7P|0uldq:cfi>BȴJ K5rlĝ=c-/g>A<02$DC>SB,b&ňFENb> ~v?PTN)ͻyfK%X[x%bRv26}SCLVX(9Q错GIӤ^1>SZS(ZuHBU ޕ4s%F%SRg+7OU ΎՍG>z3rڛhՇ7gV4$Xʂv 8S93Rd܌*gi) p#~f=`͙ [NKL* Sr@SʈF%%|v-8HDxZa,uvnwO4O\ ai8ZX3FȤd&%``֗B/t[@<&r)xo3C=^MeR`>g"H'o9 f"6,U=w>wLzQ2mQJj`-> c5ߜ#6x׼|tYΙ^"g!sqPU23>@0ÎSYmzRih.&0WN nMc4W='G!x\>FjEJ`8t pJ>T N%eFy%6w×Ǿ!NrO)K3~v}ƼϳqJyZK, IDATmTԣ?n%dSH'z^,oxIN lLڦ3 sL-\fzVp̌FR[y~!:Sh.MEH-—y6S_G<ڱ *+j"ΨZ}$?D ŜVԛqoύI8Fu,#9v=WbKFFr/ oQD,M1Cn^N0C,d%y2p;T8Ml)\. L+F@6$HG<]gߧc(d  U F"S,p׎T]uBxmsh4:qLkJr[R$3V &;?5؊0PSly L+_"K |ni{i~wbJb<[!,|tbnjuүϕbd%/' DžGRFfRt]`YAECF|"qSz^NDD߸g6y>3hZ,NO8o}G,fʌx:Y2KRKTŴSl$?#r@Y Kr>$C3?5'Vl%b"WDeQ-֘Dnx)o{0*'fKHlף+bx=l}oϔ0`OR}̌ӾC6 d7`|@]sKԼִH+m$ m"9Q8'N _|6LEM6.8m@FXBG+sl(%W`0J.93g]&^N3 rtS=[%(UGG^5f7oE1Hldn2SV "p(#f|̱(JeRb\$Շ.JCC. >z=8$sDzq(uO,I0:!3SҭJvr^) c-I%tiɑ)4|iv 5 kOSo@ w MY~Cui\U<Ʈ }I ?x}G$- sL"j] fcJBܰ%F%ZT>/&KY08eFzc}3|y<`>;=sZ _\DN3Ut~ݨvd otHQ#jGwzLqw囻ȉȌOgNߥ%89YR^S؇e.Rm,GyxB:ܤ`9O]eG\̴mr0O 9v{:,XFzQ6ʼn.V `+'U`ಬd9gGplflN:<̌L J#f~F*n`-aEh{i!n%uKjAhq/v9RKBo l!4t PI3Un_jOVU¶s Z\U:gqQ#q/S3.!`Eh|OQDJ\^0s{ Mg)yE/D'C NBtJزkD1uɈmӏtE"/CsxI/<&"\̢ ##$e'J-ɖbƋ | Q)x+\,\b~JEy KM1ӻĸi"$tSYǫDtj<̥ 9Ֆ w<!铮8ߝ,]U8.q_RX^=Z]A GÝLa@!(H |BkNN3%c^h( ˭0=U4aQdWZdjK5U0>F`4prA>s(jO͉.Qd8Q6{&ta"j KXΜW};x!C<(:Nm-Ts' 9/IO Z= yl,(R R݂9C$cW ܣJe;1Aļqsq.1lpKwip {t~n>N~iŪaB,N5pz)4 83"uyeb͎ pa)'>V 먧p<撉G |5F@80 PzKB%@^ɖECc \zJd1.JFgZS,sV -q'8:IJ {OiKà@-zt:GiG~tZ\nC34<ɌslF( ff,3 d2:SN^$BQȡvۨp4c&`dRE!5Zb\ʢL x FKPiZ+Ln3>I  ^+n}Furd*Mp"Dw9!^]+ S޲ ɚaH+g|iN:%;ەKWcdJn-x:QRu. &ܢjv8=(pgOmqP@=;N9>O*r-a f?>"w5gI:5݃Vz̈ V7'p̪LԍC&xR.(g8{kyL P^8oRk9JQ*- !y%mȄf:kj ɇZ>cW7aಸ=v%G֩Ms\[a7n"H3L-y7yy38ePML܈Ӯ@*j *e%>OW"k/3aQԒJڃ஻R&cYg&srT_C.eC$ ԏ N@)"oX$ T'kwhuk z"v"nPm7Y}N>%;Xzahct4l[nj5 ?܆$w?@ J AFYsf[:LjdOU8A-n3`gyoj#o8:3۹^{^89kGMw=:L% 21Og»Eߞ]bNU?hs;lAKJǖ)yҢ~d"N?=L5 x +̍~<Ԙs"j~,[X$'$LB"!\a%z?qψЅ3ik&8)"ϟ.2>+;*p ikDcgd"pDߤnM/ {Ǭ=CҼ"Qˊȡ2)ic^4,B !F[>ҵ ycV(n׹l'iqES.CދBp2, J]KGBu CHSʱuX_NDjȗ' 7'kX!&ʐTt@?'b{TM:Pur,Ș-TX'"q-9oS.)aU#&/Xq;Zw(ˉ?#'| AbD4AϢ2U9+, Wkp=5} -GNb>)w²"I5P"s"3'RFpڒ_Z:PIkR%D")QDh2_jY̌.4;L*o }{e0M`ZnaFHO)@FA$ƋZ'SRFuz: ,gTE't9Td Hf Ni^?Wgv5Cz өԜ%Vk6O߾ՙZ J?uq Sv"cnt"5t` : t}#d_/Nk00 2%2':kaizK^";3# Ū˖i>g3xYjq iQ&7<;5B~yP:m3Y]j{D۠,%mV(‰%> ] k ?(a1Є\2{pXd*Rؤ٣k"Dp$`LVQHV0Jf+waƩwL@Z:<NpNlLAH2]BaQiMG1KT[ڄtJjVMA G.m(/\uq\\APU"o@_ƶσ?^Hcf+r,$b9v^xzTiCC}60O [T9$o1[&AC q`wD~{*/ʅfxI1,E+{Mpu`5Ef ((7yɘJa'MCF@5[i.+IH3RlIriY<5s' ܛ <h E"Uil@-@F{=4,_ _/@b$'QY*;方m.f[Ȅ)gkhJr1]BdrH~3"b:㔬 ls/bZ;\+ ͈:ĩgNO17}U&'X :#dxl!-%X.XS?F`f<"`qv(VI鹞1 >ig^j:0\F";Mo7p1pi)ey=UE̔O1uXey.~Dx[OF(b:Tqa;qB8άVwIΘbp(S5m0^&[<~̭{nN @f,Hz/Qs7 <ޏeLr\FWbq{Y]?FSƺF D3VUPIX 5F>Ɍԕ$̃9\KXٰ9ғԦ׾34!0&b EkQKx}^% X#I2wf_@KGFnĚ=pakua!e/2b_ \%|B~YPm9ȹjٱZ rlp<($ĭаiRUXburSf}抭a"{!9$kIe0LEk>dtX 7OS4 OPl"ކ 17@z݆J#Y0\ G@I޾cA5JF}(\%' !8r8Z̕Hj`X[gx9bs?.BˮЂ.D'10{\d.St$68Y58O7xMApm0$Q!tOe; `o#w,s,aSR1*%V"u!0ߧBr|jYx;}[Voe`Fص^|3hO`F tl5f'/aux`0v>f9Vāߪi=bUVT@养 ` f9z# xGU9w$4U]$$7, gBbge0qQ RI'_B(C:P0liU֕^1j\ CJ09bS[J: 2 tjPfZ9!Zr}e=s( )#c7'i!o܏xjeL,۶*:Ϗ]ohU#}iܪD:hDNJoP#zRZ.,BȌHD(5ԸŘD'S8*Y7p} elB>\ |͸PV+3a_ug"Tב+( j!pi{d򚥆j]?HFnSf䦮 IDAT̓/n{AL{'@Uk{0f5>F`jR7ST dnAҲh˛#Nm]X <OLu~+Tᛨ.l;$ZY)5L _-N_0=,?Е}[+S|OE۽.j~*fY^&}6D(.-x|72Dո$D+ZN .Emm h(Ut' =(F2x< Nd~r0| b'9P-?OyU)3L /Q6DI9U)𒮗*LsQ vђ}린cn?FV E+pN׿ȁ)Ȑ`tKdix7țnkP*ض`_Tj0O&!YboZ_wqc:ʪG th12/1Ɉʪo\3AfS龎O@*%vboDQO K^w/)T 㠙 Թ/ןH)0[f[TM"ҞVnv5ZAG}SPXM,QJzSc"9x]"n~ʻ텛Cx ZGybkZ ydži-ŤR[Le%`1E.Q55١j)\ }Y0L%sFYTIw8 I%oi]ΖCe^BO3id\SRD 3g̼! >VQM:L`(a[X"MS#.fpg8/r;xIE B[T1s{e*`]TJZfI@nzn* _}x|Ŗc^3G}K%Zcc\yF0EĎ<Ѽ4sRx^.8OYd35NCh*<Ҍq"^(0z1p/j,KD0rަ nS5w%!{G^9e^[ }WAǰ+^К=j-)sWI>zyV %]n|g4}DL+y_VSulsdU5K%' aNl9 F7B uz_([홯h:|T&ݍ#2໼"([iRS|O T] ,1ˁV׬oGy~©=[y&z]L+\lURa‡kU6nE_ i=F*z΀yy=Iu Aqsw]t-ހ$A%BgfJo=V )1 VVݥH?+qdm!LˉVeYIc@$†#> "nc>%$xݒ\W)KȠ,V6sďc7IEE U c>P}'~*`0wyX1+{!DPA m7¶qJz4p 9sp}Eu|zFŃYNU2TAc݁[4c!6]b iZ˛U"ZgȗX*4k{aZ+ -NiA ꆄY9 KtB^KkTFi* uTcm1ig6)xar#B_ku`CL; tz l)Dm?u)f Y\iVn$ÿ^=/xӸeAJroW@l3{͈iPU -a!٧> }`H%tzEjn v.ϰ4\(븉WbXFM;p1. < N^S#2Ԉau ۙj?[l|҂,xTŝ~ c1>2 8=D׋eؽwx^[?319!1T\O8ecTCK4kmB ׭' 0i|g@QY$}u὾n~klI!TS Úm4MQwh3D&oesŌ /L%SԞc*>ttB.l/puJgՉΡ\iQ3M`V,{q=Rֳףsޝ$Dae-1m&Zp%iÔ%\fNYq,ftxϱF˲J$uazs~|.n2 Uwv&kP-ݏ|0GN?SnUbLtȾpq§ |5Ƈ.Η!.= ?ֹ^+LxVWb>+/=0~npeu%m|= yk5}( ̍Q.-)j@Ki!Zu]o Ir0$`!ww)]V%/K4- }v_/*\g ߦ31\0DI!==,CsX,ߢAƘfyyфng,<.s`/cs &Lgvl^IILHRg =B;UBdxH14܍CdD|6^aӾr8!ɋ1f2qb1@ /zX7zC&7.FbKD Z]fwhT1:wiaĈ7ɴId$Jk93rd`BHSC"+~g>*%bOHG\幯0f)#Gֈ1'::xqr3]' {?Kl~UG'Yk!'PΌx(M 4'nOԾԬ;wPհRS2#Q˸~d)@,Ob{`~,1Ξ---,4ݜ{zCVW"dGU:B3^J zjpȓ` `\U:I8> ';|ƶ+vLBUɭy??pƌۡus1]2Sł[)>k+<Rf<#_VုѺQBpֵ⦶}LcqD,a<QAj?G cIѮ_[/lD>ߪR% %(u rZ4#-!AfQb x$ b5h ݱH8WB 㣰::AߘHG2bla^4 /*+bt-7fR*p"1chmnnCydYC+m!C2RGKsGCN$t_rv x=8OXFq ݓΥ(xކvOՑfńDNi6;ibHr"Ś -d'&s7ӌNt U7sxڌgaiFˑT@k)KꜪ уYjT>I" Ft9 D:5bPڱ?CF~'l~?4@vƧ Z7!x%^W/%hfyC=ÞfEZ'?yf691ȣ$[L;`b*U#8rIss R9w_Q?$YY*X,s5W^p/C~˸sSTBdUDBVCcI-R`,rc"Ǚĉk3e(C}rżi%6 +00iCfmW˵Y{;C'l>́-P?iK ~jh'"cF`єqgˌo7Zn[SʙrP}r͏Uy';C 5CLh{AgJv%R$C%s5v) MkܮhuzLx\`0T6PnIn3rUXM UN?|_YTG\._Ew!;(TU^"#"#VkT7@)LJô5q)bHجp0= "(c8 S&ZDEUIL3z|n`;%FD듎Bq{x(18ۏN̤Xbc*z@yiЄ9"TYGv3ӈm8nEq#uNM;52?gOa~Sw򯣁93fX̏g?E9NeS1q-H{v]{K0 LzCL,V&NfR]DGȵ226#SYƄ!~etO;|ѵ4Gq09z`tڤP [E!^ 98~1Qt8$L/B䴄CfMY MSYW^W\5Z>cߪ?)$ׅi6:n?O kLԹ]_th@X(F1JkIHr.ӄv#C%\DtQ~[ zH .kaXң6}fe%/uU|?c!;"er zfn1!;c9%aTRŕ:cY[hoNu6|˙^υWȻ:l>W.9M\)wdչ#oR#SU S5M) ;KY2s %PkvB L҅{~_ekyb6qo@Kpx)t.[vj:CFS蟍߁?~]x$pP#5n׳U?7S9ŵ(5|XhZ'{Wo 8 ( EX#iA7}Jڤ\rҋ2&4EI$iJR=U`BƄ- |i+eͯ豃N굕kaܯ ։ey 'h@'O1-1-36&a: p9q%88A11˘|qnyn&:wtح/%q<ߌ[|܀S9+cg$H"3 McmN܆La9eHf(\+tL Ipv$tRDKs.Cs^,eqqGs'ͱ L IDATVXz}_i6 'mFoUOvnܤO-7)#4w\jx1hwSa#̒K贰\f!͏_bBu!Mv{ǽ9b)4rQ`[*nOw%c5bN $R'W(L4[b! }$ INCcqM˽GZw3`b&C69) p84P)&|j9ů";?Aq.AC .cvP Ye[%O_x7gc<(Va7o^;ROZ3axidXs4@iSI"裥̼&RCB ^0. E5)?t8VTs9v#źOɍiH_htFv;ZvW1gc-(,~Y# |-d^#Y#3{vsw坎ݻSLsC?'=_kAm }SR3ֶ]o`̱Δ !)<#aͦs×pI56v:.=Y1=x~NXͬr`yna8`ox3XsEG1x?؂G|]}grȋΆA~@[Z[qLqj"I8+ߩw5W\y.s^̖KcVG>thwd^eG##u`T@Sr4C3rOO>$v>:⏆ \ \YQm>[^~}lCQ0x)&ҳlyG`t!phd[8`69}nV蔩w,Zb)!ZAT1/θ yO,/Ĺ@"o9n3E{xk\E7o1ޗ%ۼӲrX {kc7eg&crCwPG[ yJʖo͢K{aIeJSސIVc1j(-jS7'25po?D Q<\/L-np-dy>=2脓?ׂ>w"W2ٸ աDPT>"a%L<awɓ_ïݟ <>>2d{wҔe: xoB5& ^S:Kdsj?:瀼\sø GC?7xɞSCu\ rT՟n͵Y'-!1ۚ:Јtsia؋R9҃@3VU/tl|);_^RvԐ-)m]ѧrA}"dP~ꛜ1 $)>WOK|K]aE|spR@-p.* TBQ  1\(p!Kݕ8,Eh~3LFnL E=vciK1ÌUk~VN[c"k_8yJaB4DjD)v˫;P.2a%юm>6\&m&Rv,']kK|9`ASltqq v_.L~-m"QǾer̎ph=>c3z}G̼φZK?RʕY34S}X^_d'GnbAn{,w'!<g8ܚ,xO# >șTjKiٰT:t7F|ܚ6H6|82!EXcc-HxZS=wLmCC;NUN!d209_} Ҋk/k7E0teW a<9)xhFMkݍu6cV;:[I&4211JT26Oq]"~>u͜LWܪ_[ x#5'f\ k Y*Gگ'-fv{;o)ѳ=żaL`@i;*>JO|MO)WҶM\,qIqLH0<3CR\d$tq@p1iTL`fx1p+;#^%O5gcD䉋NNiMl(}e .wK&f"G:Q$75;Ittxo%{R]VȒ[JǬ2X\y~2<7o)SGpqxE&amB꺵&PP祗ޗdh |<Z5z[^JhDSwdZR}ٵ6ggDG4x]&&ir FvJmYN69V9߷lmY8ĉow]De0ɮS?P͍.mi(tR8~'`[LG[tjFoLMsЂ)8@3&s@CI ٯfK_\K?l bZj5~:J\u ]5L_z Zm3&5q3Ị76ѹs1XqV]U#f/I*:zr5l)f^zvOLA1ue2 thAcC "fɞꕩu=]L^jR,AN )mb%p\Ή"f 4IN羏ȅ0ˆ)ിSzU8^@~tڏ۹[zF[G+6DL<pI7fd4a8MCBO6i<9eqǘ12Ud"`׀^>aCq4ƀ.EW㷘-yp)3fjx .@_̅1+w͔AKΌ6d[TC}ҎmSpҴWL40NĜi^weHNRF)Teu =Q#~ĥ;HYh;C= Q||ߙdT1j4,ڟ7O 6w5X{ހc 8sE1qLqV:vH#*F; ` ( (_-Lv]"s5"4"PbER ( _[3Iz 4Kym*@WfgPGdf7fvj{\*ti#(H2yZ&M..IeC -4\soZ ?Ti)&h;rZg(g9w%WqL4?a(6n/~y6'L w|{{| ݡL,cیUf{ڟjq)=Pr2GM[jJPjij KVfPyfF{~fPN}d9ai#a29Уµi}L=`=UZf,%+Ug'P<ۛgNQF0fOK#&^n?a}F8|֔(Y^vD ~6l&2,9wni@`Tw`rv@sk(.0$jCزpC:Ha 3Q؍wo_C砮9hxN 5xq3`VEC4ȅ\΂.vێ0Q'`FdxLf P=PLq)赩J2[m~V8LizگE늮v쟻u06'A7ٶ3DLƋ{U_4h5n#)eì"% :zmɖr`.Kڷ_n7h ݳ{P@Ϡú:\@u}of8yfN YkڥQ[vu H cT]WK3kc.DQ!~G3bkz'=rcH 0FPbc0cDI#"eJt:57֔ok1Ysy(k5@91u8q~aXB-vxqp-дΡ7܅{l¦1ReORV0NG]چb2.T;@D[N:ub_wD| =!*t֗c%|*>Lw_<R?'￯3ӿژ3v\nXH{&FY䩕K6&'|!R|K9f.C1ȹ̎İ@uAw^KҖ޷$S h[-Vk^0&[욉tWشv i*b )-}N~LP Gs/uh5 SR2?9Pi/>Up5b@b>D :zۆ~o$R+i@2h3!E)D(6 NM.s}g33l߈uZЭB@}P,խhlΡ@\x\#%d6d `14K/C?lޅ֘v'In)TY>7)Z>3\#ͶTI΅Dx3ha%X*%ru,cUtLf|Cd+7{_jjBD;pxpYThAKBR PK-5%}Kzm5Nٶ@v8f1-~G>ܣ 3Hvm8cS#h ЍLNP@LkdBqiAzt"=3izàۻ[x"5"hw!nvibm` 80л&yS[VTb3́4c=78 Hek=]\k2' SF"<9K0hns"ZiZq `qϲ'W:kj8Oa6*ewGs q-UhX:;~n-ΰ{MӢS;&Rt )hY@;Fe|41*ሩG`|ؒ%$@wevV͎uFֹ#e$ _D[Lb Z̆d8 IDATVJ (R5uZ+a4GJs)Q8.LRhA`P U 8xdtMI\[vݝvݭ*F\+ҹL狑}jS{-LKm}^U\CgJ$ΰIQSQ;:ChKB5eF>De X)sKo;J/Ho"f&R/$2&)KSS8u;jP:[ך ۷[8"Y4X:!\yJ) (k2/k48;Jߒ>J~Z9V ~!PFXtzl4ÜKRjYsޣ3@tO4.poξb7/1]3զJ4xYiuCwm+fkuDRiVN sQv ~ OԏOD"ƨRDqVz X#(Ik3ug|JMLIo|~2fJLi9p%c fKwd`$8I 1`+mrY9${S3? +q⢑奓RvI#}I#;#ֺۛS4AA[2Hk4 3 sx8Ho\Br(hhK?>AL#FYHDXZIi'Q 7a 6&DJ4dql'dN1tῠ<9ֻ{\hwe r?%%,$N ҹnqO{ݞUtv iM6b#^M43zcHlq(707Lhap뾺aq[^:vhr\ Z -}ÏϠu4\ ="a8wKSX.j7J[ԛdT(&1}@2͜&KY{i:syx5&yZ_P(f:Hwx* a}[=;Y,Y^94NY,ƣi3?U ?~oܦ #^!=7{Zv79-1 lˀxBt4hxoWNdmDmYnɬG.EJm|/18X2^\mQmw"έeqrhRM }OՏ?iЎӔZA14.#1-$#(B{C޿>3c\% ?Zq/i3hT0̔v''=9ݙr{Kn 3Lӹ }b3r3cV wۭvSjD{يQFf i@CU)t`v>QaƲUI 3š'd8dȟ,2$FƠ7@n\HOfЬA-蜱8p,JuĎ5`4p2r0 mz1a 8ƴSdNxȨ~m?kW^@ qc/3k&[H@tehXB7l@߆h0g 0\DGeVlԾY9np -  Aw(ޟX2 zZw+}%qQ =X8:vFE-Zq+i/x:.!3κV; !oU^;"9#Z5x,5/+6gqiOgvM9!}3y#V;m0m0 4cLJ3{nZXRp'̖BykzA'-dj #1uMq[o2'D V(տyy-QQng\ihDP㰀LrA֪~cj/zƜc'h @b7G4L=#0 7OI eFyS'pNjO}Uܝ=z.Aҏ07;stp{II4&qʺ"6 s-[cNTb̆)M0TI\@9P~8`nU"nfqzPP\TD+@T_ce;3>>rNys{T y9c$ZE4 퐡? Ȫ'j{spQG(h'ra/ 8 DNlű&Q.fgjan( tA܃xTɶKO4HBRCQ8r7@ΉH q p qбbxzcQ'PjÞE# D[U2] * }FlHQ@rm0B|M8LyCa{Ѿm ,dBvi_ЌXp4j'cxӆr+ҍ.0-= vnR-mW̪.3aI#҅>eƘtt ENZRe_$@\#4n./~B#sǘGcͫa!Qf̰|$^274zz:9Ӣn.oĴ0 Am.yCX^J24xΡ\mfnPL(8Z;x?}iA9guDSA|P†Rtq m""Pv1}1QHBŒ".q-W̽X}(BZ#mIH> @j̠9jfXi*TȹJ'^p-pZC{LRd=iAxK%phŅyEj"93D>V%XDҾi!3ޙGKPRt tސgSL$s#R,͗0K4\0Z37/ql䩖6OajǻZLkZJCͨ?>Y*dpRL=0$bZgź:$!OBi =a|v'f?7טC]Hۺtn/8L( +vF:3N:p8R&?כԶZ}3g V}_ q~т}Dէ=pT27!rΜp)Lf }?g|CF!6m nah=\#RaW@Kg mq2mi,9Q),H3:=r5N9 ŗl4sE9ꚹR (6č 5t/M7,7('q81\T,rcXF|G3[Ij$u Cd{ɒb 1[Ԃ/ Po`]]&)%f|X>bX(5Ӆq1 3YKjM#֦V*O-іSSctL_AsSH=#S5*HImZ +CX$5*!=á(/kJ2Wop&ˋbuW4S SPDFض<˔z {Z{85 .<F\$DOecv\RyrQĀֺϗsbkX_illmti=W8. 0;K *{BQ-,13P/1XBx1+~xmd}\få Ks+Z?ȘgXS\d{hXx.cB|&׌ u>sP4R"/D638˔&ek? L q3Ꮳ tAql$!U k5eY@3!])W* l6ņzsLx kl :f`!ѳ əmGýܜc/_؎BX >4ؠP'-'rr8KvTǘ ]-XkyuJ * F(p#+=:]- 1 {\@ ! 8=}4_ @t 9v9&gW0pQJjߘ7 }| ixn7-F⑟W.3h~22E"l*A'ZGۂ>#@ sKL @/PfDsx?ّҜz ]605e<`Bf%8]`܊B93:6fNטJN&r * Э$^hiI|5 l{7m848L ܚ58dJ=09)蕹Q%&mgIkaB؛w-9 -^Q*OeXGXg)lߺ͎4祪ZNx}bX3KLǥ^ι uB^!o1{ j'K%VGPpZdW Fb\&!ǭ a#Ivoh0|gM4K~8.rsR-ܖaN0JdSKPGwI֪K(p8yK ,tΔ֩(yXW"=1~_3XF߆=WtG g[b5q~lI\nd{mfМ"鑴6в]lĴNdP|C4dЗIK؜QN49r'M}"υ1w ʟ R\+h׬0ÝaO_7~wA:OhV^ǧ,Ɯgv/2KOz'p8"zSr.5^nv.1- P }ko0ms% LxRibtf/@8⋽4D[, ׆.Hc8 c>\ -@ò.fްEv:g3o( wgzY˾.7ƞBtί YH 2`ZJa/86u4{;s.1-ۇ=7gU~ mC̐iV>zG!,[m15K65y%h4ZmYd77wXoMρ@Wkz1nA}gIn+ss 7 ,-3`Ƥa06Wp %ђbi6" Eؿ1D mw'ܘXx dǣ@ݞ*L ͺjl/p :5p(5"-{O0`$6cZ aAbeN&i>7;R+0GgH@qz:dzmI! i &779]~z?h\ccv GpMtaJ#'6H0 1+b/aw֠{r,8d{#4)`0e,SQ @|~y,gBxNL,pRH =]|KmH0#ֲu ֘h\hL#`2㽹aZ͡-1݄Zap toRsxdHvI574xd^;5; +&7/3h~l4x. ~(kF KL حaqO,5ԆN.j: rY>ޭMnQuxa:}1tN)uC;0[4thQgt3$f^ʸnP.{`eǡ0Ye4_Vv [qz̚F0 ʣ&׃:LZlW 'lFbe L\zG lKpcim05 F. -\OؒnM7 f+BN(L_s2(n%7.RW#G0gdg.yyرL&r8xjyN^Ϻ4JN&/ׇqӈrA{q;mI 6$S2 pUߒ,5h|JdAlx8|$ IDAT~JMuSHM6e1/3|)A4ˉd0r#> gwt wnI^ CyE 9ð~vv #.w:+2fb<`ZSJۼm2݈<+0f3[b`!4R3;0 LkMV$!X S; bw_OMհ[zq;OKK>c&v"y%;RcQDo-O` p9Q˘NcnN X}pPHnlɥ,\ .rn ?W.c4#@[ksb[z݊G%n0䲩 bњoCЍ!?hX\aj  €M@9WF"IYʑb9LtL.n_5RjIL.hmnKLnȵ'.鳕4P}A@FL[+ 4SȆ'<ӍSs)x\ 3h~eԒ*O60ǎVs-0/I ņ@@ ~L5Gq8L[`vOh[n)^aZyc9lˁoO Ӥ;Vq= (A6/3h~'2$cAvݰ&:0V~.q$n X=p]Bk<9]c:;.y!f6&=Ůg_߃vuPb_ҍDZ ƖS[? 6N! /://a83ߚs5 l!F͜)ۏ{LO`5@Sqa_wC,5wB a{i)i5&47܀ydnjq9K:;Y3cynGP8!ieKhB 1􀇎"LP{xvn@*P}iz0]t`Ya:$nC1\aj`:i7'`4匥ߙ+AK ÔJG,ՎiRv81MtE!<(!\84i=ׁIrmsEWp_~(57p vQI"@eSÜ9<Fc6iqCkZWkLGu^ၩH0vEޗ, b4@> l_57$4pC).  X@i MͰp18mQtczLCLz96`7b"{[bw8dkn Xo)YW0E ֎$lor;=yLyn9 ӵ=3ʙiJނk6d^a:M 2Z ӕ,%+ |gmtEد p끁^ajL;X!^{ɝ4%naά3Eh5aH C=hum=" LM&6:mvǭN B ۆ\bl7#${yy΀+Yhal%K >&i1MBqRqgJ~>p7? {C7%@!4)$ṈK̚Wo@fjrΚ[&`O.CvH$cm5|V•${LC'j%{4p3s=4Knj8ԣf` өA3 gORAs[be\ojQs3ryXߘ=G\gkx{cX°DO`:N!v F.Na![\S6eHe^Hn'k}N 0]S ,0a3_br k@ ZD1/3h˼T+6 [>فx. 8ɭܹq\dΠ9/28g2<V 1Ki)|{HJB:=W\ Tb9 E.!<̠9/ρ"H5!<))l5YTf^O8B(1Њ9'16/3hK8%͚!7SCsc `TbwơzKT'*f/ jumHaD9!ծY:jei\=/3Ӝ}9-\ZZ3zqRt* ʫN9Zq\c{shT034^r@SWNJ%*! 5]>Ҥ{SrSʂyAs>'TM(I.md/|b$O Hq\GY*%TP ,,̠=91/ YaTZSl'~9-%K{v Ys hjJ!9& _`s) & G,J0Zk@v<f16,Q6N͹+O%jvͯq,-)r%G%B|a8se|Tʏj S5u4_x>VOZ]T~f;S}%N3#!s^T}].4.:Iv{8=5>ryz5RrF>:\&*9yJ9_2[$]:J5 L9a\5\8v]v0+a{n >%Xiyb֑wR#Q@r@?G3hfgJ宂]Ij1NXC~Jc KX:'qwcmR J.󽺊cTkf|X]f1GALu4Dzjs\Dk"͵,4M_IQXwL{%M2c 3+\| w'2E@E$|w?E׈_6rOjLKe%=Wc,2}S3=٦š1)FQ’oeHCa˝RuzJ_`\ۮvP k]yWqW|LP̽EÒ{O-m͵-FU$D:fz;^ QKcrK׹pL#iۆssa5]q#]e:"52 -2k*T`BҚ%RH a'B>'o22RwJL=&gcSFı8bfIHNBi7+atJ ˨:%0<5㥅)ƄL<1J16o S&Czr3u" +CR=*B3hfixI9 zS@} u-5:~ ;=4Ћ>&;⥎ $tXmtLfRs.F%6=m!Oq:enfKM8瓘*rNca]Y0jC0qÌK~7$`k͕#iT%Z56s,TOZÎS[Gk>W0s k%u6nv `JYp ?I\(\H u fѨ*Tia#Q>(Tk؎1VR N1s劲-[, ^[T}kH9<ySKȻHnOZ5f8 i/]!Mi:~ 7xx(FFS@GxFAc~?ԏmAQUOi5__c4#KmיS%Of'ВhJ}AT`yv2eOJZst%c h\{zqy ~Cm[5/ԏ-7PoU((3{ ;[|G~,wxω|?v+AMHnC1K]4r})6;/rv5e [24xfyJh|VYl RrOJ-J铹^pb7ޔfqcݪ8@pDBd[qHD;y?Sàc_:C!LHiN)7 :#*4\"&3 e3h~~nwmX][T#]ܤTtɾ犴xWMc?t/jP՗qX@<ꝸ}#}?yot:l#;MLk:nrJTغ}J ZAsS,jtRPׅ\L*MO{q˯ţ׿#M0g۷[-;W*yHk>~i-Կ:l: PԵ\.b$ഖScavjGЩa ~(EӱPgZfY>]D]K4[F}kX=i߈BCF"?d7O0Jr= r6D K{M̠n{OIJP—ftbI$W`ͱ1Doro,.?o6'竛Bq+iEk@Dd?¸Yc%+_?2\,\g0b$saH~IBFY/~zGؓjolxrm%^7g _z}U),&c~J9s ט]2HNٳo|oZoD%oǾCE'P'I (5L-p炨iI!Ϗ:f%JK6c&5# 5JVW0呩5!qm8Ʃ)Oi*@Y7~_򿃸o{g>-jXdr`;y8l'kFqGiiZgzXQ2UTHS/%|R*ҫ.O ktrnZ KAp8g{Wծ5֘s9;SW +\և*R1 c}x $H0f1zc,g2l+ff۳9P(̅@R||%S)'LxL.|҇c©ljQX$__n<|SWڢ۳S9΄|e*ܮj!rZ,)+}H?s΍Xt5F\ -\lT<<ۍ :.R X+ %wlޔ 4ˏgjx $93rFZh8 ŅjyBu3=N35hlx3)2UUUJR[Y L0<ب?^rjׇ /% Xȓ0:8v;}7sSa J\%W2,Zsߌ IDATW֔ 5  vDnrd`-۟IyƜ4XBiZFN-+3מ:Qurqjz*D:zϤ>W @%Faw%_K!ja$Usg~L+fJhD~1c)b_W"5,)sl)Sj8ةS%ܤyXjD#J٪{ٗ:xk vpζ=ރ;zܬ'{0f,Qp\b10šrF c ;6%:ClFLdCu,/}w>ͭ_'+"OڤpZ.MᤌΕ 4KOuRR빔J ?淞tgz~9Cl>s)U<p3Kq.Sbe6`*KO@Ba3%Xi.4 AZ.D8Z3%Q5cf}ta7.,NX+qn:^ejDw%hfgg#?sS-K2K@ڿܿԳ߄1?ήel݇}nBq]ax!hzR3-c$<l;^SХ\gx5NI ?e S3P4QE3[6Ǚ qKDT^Hcq8sL4 ᜀJ!K}H_RU/x•_p? /l؜K:syfOss`<-)e}je.`SH J)6>"$=Xnl)-fzr\>Sb8Ya3>|lBlJlF~`Pd*kr%.;PdS੉:fBn3UT ̳k{'fWg=C 6Ga':IxUUX,/ɸޤNϜ:H0b1.0+f,ȠfFa{yw=Ѓ 3,y!xas Xj}Jzh?KB g9pج.~T"=&>+%%HU a^.9fisCܤt5tI|c6HZOоUc%SN1ə(`J|ۋ?_ճe-#bm؜b{o,+abq8.$l/jiL̵x:<9!n! Er܁ߨ ^fX"!op1QՉN %vI੹(%L5Oo}1S@hD8 J /hje@Z.32S9Pirc%.̈́Dz`qUzn=yضBO.}x/Ô>.VqbW/zsin;e,.p{Ƙ @9BwIk$k{Jjg~~D L ` >㇝mvu1Xz#KPZ}9cn,n:^;2PS[4|8x.R@STI~QF͍n

PRbxx?$S //*ךml>||dA3'  3PU/\fXܵۍe*х gJ0u)?Ar13y5)@o\¿L@f}]+EJs3䣩Vgf{[И39˩@X:[WB[iR cp$58vp7 IBmWO.U߽Blϰ9z]D,)Ҧ4҃rrjj3nT#ΣnCuxykэNЩ@;fi6hsmG! t@ٽZR3TJfB=%f\.U{Nca4=1[ÌbNT5gbDUiNa$s _"1b +$Cz> btP cW`Vq =-zV)f6C3f>| i0mq:|t-e )(:TAl*W"uV]''0xpmY9Ԇ̕6 `5Vc8Y&%5O ܔqNx%͒|b< Kx*T˩೴ /zU^hσRL7ln <ǔ.9V q>vS3M3n4XfuZW) < "~ƖjrRr޿щ4`U@GpX 'Օr7`;cOV{cqaE-h#Eq wtx^sY7%"Q 1 :<ϘzwwDCdcfɣvvPt+ gY,1PK/8x64 mpë-YceEHUÇ0PUPc(ħI:Q!D;>|Xf nS0x9at ,@—~3Rj]nFZhkdHM`r{MRGdU4ˋ w?K]e2]pC\_Ƃga(f,D(=hzlK{,nY$CVYCtLǣGD$!q$TvǰOĀBDx*< u! اHmS.>o^d}}̾sZd8ū O4j .:FM"H4Geg~/R=eD4n؜<=z10Ð{ooo !y2=0=(ƹKÓ϶xjk$}AuYd2%E}dC&UQ0|W/pp &!1s =`lM5Z]->'Rk4gP¼frJt4)CS@i2J9c BW3Tr.xyF"',0 u+\ð} *SاȢvw=$E`5_dЈרp P 8y@ -ϛPX %ֈfi(RctF ( c~\r2ӯ-[f~[(ff=9;y,`ux\aJ9GDa_(x8'O<8F@!%`$ß{В0u냆lF<֜ &<, ڒHS-xT#0΅`Ɗz2@]3[ިzo\@Ҥ {0&3Rk3ߌ*, ?׫W-;a(~tmМ? }ҋ"4܈3VΟ%oX@-yvlZ=cQ"@{5Ms&t.EDv8x 9s\\ 3m9ei>iAعhQ5-ޞn "IVURSzYi<0o+,3@ eL3 &RsR?`;RɃPp9 >Es|P4BƀsZH.7ͮ9\X[zUMh>nܶ5~p}ޏCG0&0i.Bb53=0u Xvmܱ6vdLtY5!p_0D ̌iD|;#QĒ,@00D  ~m%ؾ3f!xJ!<tkTҭgA)TCg.b)NmvIз-~:֦:"K];)ш{$cVOtw`<9C_&7zS#^0b=Ae8G!Ge ?;t:$3dr.Gs 8lujqED?ŀ | ܳf}w>^.A4A{K5Cg!`Ơ0c\[㣡S`1y+Fan[ 4` ! EIsc_ggTl Qޔa8Q5hr4lK;Ka:grIjFTj;_H%!L1c, =c)B qs=ü-lhpiؑ2K;|&9|'ʝZꈏ<306'?wD׈[cLg[)L#!J!`p `5ML';ש_c^#ߐk#e!kJМ,TQϩv|HYIYea7g- م0T*`7.~vޗ,|Cˡ%INw_B n ?&ƩpJs\eJK$SY3V0DIT%"\MvrRVK:ԫ3ݜN@)#Ny?6@ ˙& ӈI8S ϛJ{S@xgӱL{zwzq/g#˸52%^=X|ߺeA z{%8 ͇%E 3ނoghC[% r!ki>oDxa K +"zS`#._C31j,e̶&SP.oc #OM'!M.3)I~ WvF[Eq'ghjzwu_#?A|4j494ӎet,sxZD1u2gLjvic)X1h UGhh`-ŽAKc%G IDATbN굴09~#&,Vq1Fah1Vbsܕ#{srS#͋T/zfXr&+qBMkHag4PYr Pysu>7~Z ׆O aCGq2f=ۻcXAb@UUX.=jnc1>nIţ|X9tkeGM4#06GR;eKXߩ_C:/`ރadqKBzA02dpƛAɔgɣ׉NXFŒ70\ʙO7?4c2HC3>dJXf˛w=c̿fQhgpgGtd!rjTN+<0L>n%Aҷ 1Ά/pOoT)nb/0A xaqt=>\[s7upo4'9MJo9ju៺;JQX4;!KMM4Ki3 tQ$m̞ˇJ^aX4ԋկ"s1w۲M|qX.zzbƀ ¦zо3"Mt![| >K5! L% 'V%y.) $\KAU{>njGD9 Uh㡭39yfc52x'T^4M@׸Yo'OJF#4$wmm,aꕃ`quZPb_E+|@.|efK,q8/YӮϖca0֛D;9IL ,dp ΐ//Qq*hxZ6^[\NkD,TʮJR 4KU(0Li|'֏nU%Dص_ΦfP=h+ΘÝvNF$nQK&q4bWywywrV؝x5'x'f% )}?3trES%s}mӲ ,i.|AB6#Ȅ: E^ n5`s2UmNBR95d 9K-:.+]朗S9Jr&aaWfI߽nK 'Lh9l]-ସ>b'Zr-YW7 .3E&3{apT$vߐLs?Lcbc4z }yh=3S9# Ax RLshhII\m,0?7 ݀7gu`; ٤]S#>(C3a8g'n#]{P`4@9p*LrZƒQ~S ?S 5#ӎ|6x8ǝB+f ̉1QQ^dkf]l}p6 $A#T9E]qN$(1܉}H*՗u'DGw#c~| o&X&;;8 Y sjy0}uƶN<\TuRH[0mifk?x؉r)]3+?i`zRF{.6M_C7F 3FBX]$G 6Scyv$SW"r$hX(9}EdB%Yb$D,dm>V؇"°W=ޕT˽pgXZ\j݌v m`́Q]9P44ş0[϶HY+ p-s[4px6._*(y7Tb9F?&q#x7I犥k:#"r|; 9k Cs"P2cVޔqX+<4of`LD0'f)[M4j폱$H\Xp*/95ߩ9Kzár=X`;vbe ' {` RS 峛θ[*V۱9!:CYxmV$,$ΝT~JG1Ї9UY rCXlQsiK؉Yؠ#fbռfƇG $2|f_AgXRI[= XGȩƸ%^Xh.SSrX _!wy߈熓N W;&39!,~5sn,/]Aރ" )'4b P^NSsF(%qZeL J(oc\a,w.SF Y @üe  5~sXtj sj!]pKQ`IlJL_Jl%ǩL۩u5u\y<-p ]cJˎr*~Yh{2 fH_V/UpBfZ.")p#ww^Ut8ll1ZGk*ҍx|xj Gvб"{p gaA7.'l֘\Ix6tj=e(۔Ϝ\ɨ-3~_wpHrQ,=6 -\h~S1{n^evqeUY,xJ*|(79]RɃ<UT]|gP,I;OFuFLyQx\R>3ᩆa# ǡ9M rL\r)ǣ4Zj R%3n+_< {Sf`b a‡ͬSAGaHz\~6:u4 jDP̖b MaI%gV۲ J[;]j64owv/}i :z\>븘=8y vcq)hw053 /ˋ4ӊbv7cc3JhJylU &7Cc*0O}m}f.wxT>%"x3 6Jps8i==tw g qOrokK;i=v'u9QC}T=a.-d㖱ϤG6; Y -m 9sb漞 YRyNQs [#SZwPA J0͔փ! ~sV:H󭕠ť=XB]M*3Ûxy$eTd/1| PX25ŒJK}4vuh9%c;JĦL; x5],{9V a4*zQJ}`~Q n=S.%oqyJ\A:QT5d= MU?سkEtna{,ДCS%Q 㚋rbh "Vls%ʙ K$&@9)eq]Tv)?[_$͠b"LtU"Zw%G| {L؝ .|ц$VӠltYZwbsdzSQvGxv$ +C{2㉍AX{C3eJ`3n9"O:!_wXf|VT֜޵B12)VF*qJj`%?`,)Zpq23nRH]ʥICv.p + wNhC!X8)J HCZ b?[fl#VY8Ms7nw'ᆉG!V3MuXNG`Tpk7mhY*gI1)=JʌJKl4>o|w D"C#;mp* );wAp70v"3!8RiJD)D)lrP~ω"%ZCvP]qLPRe9 C}YxAE kq2qy`T]d K'W>3Y`%Gb_ccF3^,&m& K,tdĮ\0"ijC&˯1+-G7j 9\i .PJL w80Di@˧A$wv}.ӵl)Lw[ 8Sl'\ha5X[F_rsmsjK,=J`>e&PjEfRL4mks &a7M= ;B& #7UK F\Ĝx=$AsՀ|%Nbfġ%P]-?~_)|!ۦgj?Bh.?)87P22$ +h^ƤrWR35 |ni{i~b\ĕq$Wap#M%=P nQ%\<Nj; E$)=#^:^x@< h y$ZŸ\2|`(,հELL1r))9c\٬Gq8F~; V TZ-9!DP售\! 'ECt/n)s".P.\y z `VԗCF촹#͡=ゟ3ߨ?opE׀:qrϔ|T.|րzj{4-RJLgj?hj)͉\x{=ߥl\aHjbrJ"Ӕa}`VZ Hx^ /%(WOLq#%0_!-G.Etrvns֪\nFRzHy .ecS0S?%)mV֔*. Xt%n) ::q=,P=hW*wXKBt9{lݴZJ+b]>)Z=-|jJЂ!7!y 2tsN[хsBC&KHRNi afp#)]RqRh@6m1/SW83ea(C['5F7[qў vː]tzk IDATi<@q>nB1_g@ j@&52S\sK=[0*nR,>!FqۂLKcfPN38-ƴiCJE1>$zPeÑ䔕1Cް}';b`aN8 ĩtYj  s9Ԭ|_(Q_a^sː:0Z_%cnCR8QCۃK/loawf!䁱p_f)4w7)&? WMݱ> ?J5d)ߗؘM5W>d\2'Di)0Cic}ȧL׹" L t AdY\*k!gy\ + rgGWUX=0;du@HT!x1dHaqC*)c!JA[PZm2\`EOB5q)窱NX&I M=MRaֵSR5On)GR%IρT4ʂhQƇDw'j,VOъ>^df3 y%' ZZVmr#fͤR48* by]̉2UG TǒS%x9U HJXڇ~ޡoE t%e8,cXmNy?G:C@F" ?ȰG' E#"2%.zC)h.FN2svi W#0NG-R&%dtD5_J,sp.*-:Oot "T@Zu |z*si(Di҇d< 7bvK ˍf "I 5(9AI/D(#GjSJQ : 70+ sYЛjӤN mɑb"Bq(,3u\l0*7rayIOdC.@ *|(SO~E3*`uSBn3^`;`WN1 ˵&?@TaffjM"c ^FM"LX%WS/ES8iől Q5Nx/&(W)JL t_.j]D$H<6H % !z=/ܒc)*>]93b54iqU#u\k aK);H,>5rlkaU#z*2%8弦2\,8%۱^1qLxLJ6( g]p,%}CU{'0VͿ7_+N \Q(+4py{ޏ^% 2B=Rg" g,2sKpiWɩM9%}ggj;!'+?Va PQf^^ m뜐iM9R2/LHFި#TsYo ^Txip%-ܦJKF :E1@>C8;LTVOU7jJ&\ 7)R/wpNcJ$fO:)sT̲O2b2ktc%CT8w8EY|Fa p.Rn2,j*˽ሎcga_tBDTG[{iOt,aP)KqTKC̻H&ώʟ{i L4KXusf d5%0F@ 05 (+\Cq@ol`0\NG+Rfi~Tf(hwِcaWPa Oɡ{/Ap4`ذxM ' *6[f휇jǵ꺲(&"CkA eZCNYsE 4(^\96`9eE Q)O;٦^*^\+ K*ggfghύ:YG,/TMc!un_G@'Y:`iڔ1,WVQ@(0"s`L5nMa35gXڹ2)VoS\y0N1 ã&0i?΂\IU~NʇS"cħJ4sbiD_NA 琞("0˞{ZonlWAX@5))R?O jDB=JyIK*}d%By՝,`eZi*s~dFe+dir>1(< IScXHBʸ>D,O#)bk#S[D s`︻I\]cǁƻQ>Dݜ!!|=07\ @rg5Ì#.StMIgM5J"A%YQT.n57G9~xX3Ncd;5CM= Tv(E.SaKEp11#1цndY%a_ፆ!<3n;) Pck#BK\g f7"Pٛ 6$Rܦ[rOuOnKǾ1V"4 t?&Oj|G!Riv9)A[ Ruklw(BaÄI@1c Zoӏb_&pyl,Ȍ~Cl =.]b[d3v'"\\5K|9S;WІILTC0``$~wvx̮9I–xZ2Sfd: %VYR;!`\4YN *Dh&GR&"+ˊ@oAGK4{ƺJ J?Ts3Fˎ蕉AQJ`Fg ϰ݌aTMRb8T"b9K W5gn~^`3ulԇ%'X3̋1p܅Xxߑyr;G8=I/9ddK\"(}yX9\'WS8s |} *)kܠ*h|E.Ž}20?k"Z[Ͱ=k^~1WWY$xg %a99Vh!OrI#2zJ\3M63%7\Cr QFM6#~TMf)pJ5 q%V$El.G,L[*< ʲVFdz*XJsl ̘ ΃V~XKptW F rh}̓J]""lq{j%@V[a(ZHYש[aDmWP=9s{Q*.9ߥ"#ԎzhGo$dM^y w:SgKx]EDsiH ^J7"㚨)鮂p࣠"cB>XTϴ5:kvѡTfTAw>#!lf?y)+).'$+ w }~ʛGy=v14  DO}|45P "E \.qo^0TXt!aȀTKSq~Ux6 MstJPi*L I&(0ߥB, h aPVqOv 䁍3T!{)` #I;;k6ofsؚJ8Eb*CtJH9Vb^zLXv`9,1&qQIQ?ǨHaB/fsﯿtB&ǕF5J_m]%d6)E)`grҭ{beu4lO3 {.]A ![JRLSJSBࡄ]b俷Qe{SO>h΀ zw}1QϏ׺ pUa.%Qc] ePvoN#D{\iѫ0o+l|?TF:wR?_#+]VhBׇ7-Ԅ B1۳PyfY+Q̈A.317ˤ`v<2yMH{>$N*<8OQtJynwc>}mNjpӋAdD~\bjZkTZj-fy:U`9.n$b=G2FZo=0b![9 ^'y@rtN KtymPq mgA,sQ.;=nw :a?3J~!]{.QDWJAGNy r Nx/z Xg=9{4F1afNY@L79LX?M84* “0_Nh@9oCB`$͜ݍ>sQEVg;ȄD)H7S1,sOQ&vŻHRQŬ};Ya2YWScѾG"99^Y̢-'sV HROTU=g˔q{`ˆM"d<Zװ>ȏ0M Lu6|mXgnWifvu-rpPZ;@otC.y}OC`WAq<ĺf.!d3r2mmQ{F =s E_ೳf|;xF3)Ya5'H \?ʄԈ 33'鯺 ?~5RykK.~ =_ mboMw-^b3}^ʶpIi det˔䚂vY 8fsϱYr8eLvL)U[ lA{=܈ZЇ~ju4uM K'\hPŏ''wD O]t̲ U| 잞R-֧j>t)WQjUFL6~nE+s߹!ܨ۰' |d:<״}5~ <7Nc,7J'Dpj ϛD9eL Kr1zAX! Ñ}A1\*O -ŴA]R~eѠӻ:N]Qa!4 se-7JL#Bp"*<9l!xƒϼśg`kYgtiKH1=7to{|598|gd}YNo~:ֵG'It]z̍lL#<'WXj,p[nn.ʦD+2֌~a.U꧃4xWJcU\ݪjb6saLJ\3O|5Ls'VgOpg ntthɱ!OˌZ@O,mD$]J"w.(M?$9>7Jj/TSq^Nz@dh^kÇW8a[%sԕX7~ddGYRE=2YT퓽=Gs 9`Xؑ|?oC+Z1Poędv*=J £SO!:NuIi98#>c%.W&8:⣈Iy>/}f 2F[ʏR=Ǐ|5.# IDAT5:~i$VtvyoOtu0D8n!j6s#'6& XʠJw>[htb}KMٌ?R$S'99č'\KaixU%=~ɤon}h{k'UU{'"8f{SRFNqQ@Ԍí0~0^|G.bVUɁ~ǫbL 9gP%SMljUNCV {wjLs=oJujku3q%sa~CN2``5|Kɐ _F9)QP³sQ֜ Iix iP]vH ?A3p=m?/_(R<'qXOtRspuxb2"?c/VY rhT4>"D.K1L~]ar ѓ-|{fךe9Vbv{_7Ѡ ߟ[R22:D!JX_TUV?t8F@dxZ`oeN"6΍=g5\LNs>_61lCPaw0j'l)!NgGG1mJӌ&2=;)?]ߟ%.\TqG' RBh I#8;x52N}׼6W<)\b953O_CuN#;vL|[; +MsЬu5Q`` En"7"T}SQk>I$Ӕ kQ[ti`蘥 p6;; 78u"tn?~WG͖Fa">:1ssq%}#q_g6:O%c|MjSK_;*Ad{>,Ιy[}sd4P1]ɲg⃅ivSUJ`IolH!O\6k' s&ƥNq iΌ=-er,&x|!kea>#xsW蕿}TO3Oo6+*8~m6K@K+?a@H8̗rRoJCĜִ؝ve~\MtֵtLHr&CYBh]9tcB͐`Kcf}}SM:J$SX KŲ 87B]rJN #C!v]v1ѣJoN&U=P9 ]}Y){, Zf1Do0=>~֥u+iPq'5ݰrЫ⟆\{sຏ86|!NuiHHl.’Ed0di)֙ D.xJ3 2Uすvgl\gBfWB1P||6!ʻlR%3hVS%f6(i_AߓL>W{|yCLx3 %lpIiPa9 L->)ߙI@ũQ%U]e!?#G<厹vdV٩lV - ubW/dK=RvԕoOyETL< G\;yxMojMk@ ƒk&x0];>viċc/+j0v2c&Om(fd , S!{\ K0'0%5F zK@xV"uJ̱AU"W a|Mcaaa++]g=3ai ﱡPaWx{,IrܔjPJe8{[:]3 ~O3عS'iY*eo%gMh ǐ5&l(۱nlQWfCm@ -N}ś|Go›k߭\m7VB̹%4( j.۰ 5a:]6:rpu-p>lab5n޲춱0KW"xѮNB7E/Uކ}ruK_<کi<`_e2ʜƮb%zpk8iX16~t׎-]-Ne *~!'N#s}AsMR',bP |L!C#SBHxNjSB@YUU1/i{zuoڍw Ѫ''"x8BZ8 4m9^ U&P6x"dѰ|KLPڣ˄Ki{uHR_~oJI=Nvo\ĥI=韝ahX ɢ%SR$}w}@S RVPsG%]²ԚA܆ k񠦠 w"Uųm>P`:$r 8iJZEWH4ROwqq"xY*|Is9j/1*?HzIf"x_1re@$ͦ/~jӫlA?$>e9$.fK05U[oyΎ)72.L3ax N][pj5NW}KNbL$(!"KsaS.UUXןN2$Ȫ*-e{nfZ39 5'!a ߯'ci^䜣sͲ:1ӛހ?K@ik5Wm1`Sq29s[ðUNX[*K"u3<4K7۪Tj,4- lAew%BM+'z0L&Vk62P|EW:y@Fx̓5qC4vLO>`Ry[NSG~_+ I<ޝwθs=akGw~p<~K CPSѰMP|0I"5~sg&f 03:7<_O}P}BpBsGx`IܑeTVRaI;.\ځ_ϋåy1*tYKq /,!RZPYOiK q"'5#QY۠ -#s dݲJfU׼7ˎzb}g(NOC<ˁhRDH'LS-dRf]DC*0b32_%|IIDD!!g6\/ [GF}]  / zp.sGk<eץ 8x6 `yǡkܯ(x$]>&nuz'2吖JD瘤R٠c{9;(Lbș$PEYڬR!1,.HH_W5 e0EC=saң5k$~ ǿpX5JMnt*|?'[Q\ie~&;5.VI8T~[ lwND!Kn):k-K8zTR:UCʏ(@ }#@#ze,aѠR^p"6+Bld[$saY'K ľ~`CT6/f2Af$۳C?vN AkBLN{|ENan("'"*4@/%\'<~ }FV6(mC|U, ~mp9&=Xeʈ'ʇRtX 9:*]w߃jGqCyˎHB0K#Bò">odho%R3/`U"dmaɰ %* \t_qiҬ3`cke([m̆詬9QWO(Υ1yѸ_s zĦiIFy%Ɩ &5tZ.ﻄT: /*/:߁vnGb;ϖa8ls@q6 ' >VEϛ(zO ('i%WM':qHRZ7&1)1 jpFz٭@;;h=ͯ+в".9khjʰNCdc7zMo/KPF ѹ2?>'`䵹^k bx"ĖKdtlm^_/b71!$r%MkMߣh_ϸǹB /,0oJ́c9a@N_2Sy =n `gWwVyuE0M:yK: PUzlKC/WcqPDGNag"s`m ƾr>I pf,*Ldd_GoHGr yp|sB-Pw7PRh d;s2\P~?8Bn.-?gFᚷ۽ &h{]>-$.sIy)^:Rrts1"NSū\f851NM[hndT&Lͦ=yϰ>ͥAob+^"4QwV*c~Ęm&"g6|m> kT=oQ_l2-'CMd2C)YDʄi9@m맆O}{: mۮM6k-?6†W9ᵄږ.k&.y 2m1 r Fx N:N˔rfN\k=׉MتKR_ %bm-fI' #l6 _C3iuZuIRW!W;Ko\:H]&hr ףhvzh ϩJYi?.0+7J&g ͣwĽ\cx-FzׄʎBwGD8W. TGl.T0oʅ춐ŨNgxۆ }PmsLr+usqg"Џ}g0ƹM #xz|i3~.;#5!qMV"xWPW+T~j]OB"[;Kp *.NTЉ/<$?JX{|]Y9T ˗d/[5[6 G Z@4܀8hȄk>H|k8pcy_f.ZؑlM /N`=%:>zs IF\\B菫k{=ό0j8_puDJJ$T9aGj8|Q~@;wO]i`71R/Nm+[VK^ "_ OTpvnL,]{ -4TcTk99[pON\b  PuԒƵ5NA=b7zqadEj \&u 4Bi@ʏgu]9x&2w s3舱&3gHH㼜 -F#+_PW=n69PJjǂL{` >u,zŕ?caRֹNt^#@N\8 (zL((]A&e.Da#G3F3foƺ IDATUMTLZDTCvʢ -̷fY阊joggͮs; p.sGٍ!G&.9 ״?uny e%ƸdC#9Ka4T` xGa3=VK3|ZaČEKnlK`h\xu 8s߅I??_7`n@'Nyq}pcM옑'elsI%D&(Ek0fw%غ7zhM^b9̳uLWAkmwoe 3-l0w0긠#k1$E %2g݂ IYr)\|G</ if܊ADzu Qfm@DRؿ{/Bdq^ez-x0?yK"d3ŀ"6O".DKKVA&ӌTz^5]?%?A}CڝlSa0D[qWPxUsV'h)[UiR(p :Djf_ 廡78IT:t^>ΐz7ɛlOIBo[6CBqw v%n[Tj1E1`* SD8<%|R>td͜+n[[M\;܂kN\y4vQOz8ξ&+$83zC%HٴgX`I t}lUT̾5bd `<<@^hyozlϑӸ qwlFT yӹZ%P\5 8zpqBw<15bM@ZFg 6پ2;MZ#i1b3.Pܜr$ӪGC?{Ǻ&6jmZ R)iP7wO[*,tH9aw cI!,?uKN)Cwd'$;2Fl5Wp87zB넜lb3-#ftۢeq[L`6KiOᮗ%Jůd"4LIk$9 - ̓?,8P';. %y|С[y\C1o`i9(1t 98]!ݓ#;&yS 3[%{d fYqŰT=!5{o:@UR5D=9_@p L%,fs{{OD|d`E9_,Lv]swN5"4"KRE>QAnC?KmHSs,w:jvoRǏ| {b`q@ܟCcy59)D`cu\T^l\k).Q\qKd7}n-b#6Nxi6"R݁$:s@ՌZ='h>aVxWP8;nrJ1ƈ 3&HcȟiL1jH C?G|x~U x.Ie&}r`6*凾}czt(!0Oۻu6.0= %_0%_O4dK9V bɚ%b%\}.GTM#5oG&"@Uug*9TњHc3?@TL3Ӆ51YKKk' Dqb: ͥczwkun S-'b 33 n|wDl-Ff9P=PbDפemg1(+n!5Ys-Hz}EiOi&4_ruMj)gP-NnG.Dhb>u6g/zԫ "g*:I;{AB>,k.&wrIyY'Ll)[Go]8 Ϲr\{@4[ZjH}yC)SSbrOLқOgXest_OЃ>d@)fYY*jfd!S:5 \L͉VԭaZ(/ nZ%^v[|'ފS5U=v 9-Tܼi.d?:=?:&,ST7gLӧR+ltvV==7-A>*K iꊹ4Ңpm9$xEOPnԓ[z< `a號 Д\ɑj*3?@B3W'BVY# kcόDQऑNfJ_lɨqJ51* |.%L1T;8xF)Ѐ@FctO~LPǕz=۷{⯆'5Xbx9S5,G{FbBoW"(2i},i ]'s9҆~Q{I6VH5ѹc8|WmYCufD ?P\KVuKNװ1.$1kqv1KngLqbP^q,j VBtOs 7 `@Jp=_8o✮O%hPG9d~.޺q' 6qN *zqZč%MSWdz9~CR r:0M}mpxMX֤ftu 3Rn 7 B^6jL0lǃl3C-IVGbٛn `L v4iR!R/z/  =BY҆Ve&Cq.]j W3NHq]Up͌fK8ʘJkAx뜊5]=)ArLll>*s&$fWjV`zG2VG:-NpAjI 9?D(c}Rt=%BdсxvT.!݆Aa޳`˓|'5"t*ftSŹCKc_{g)_fK@6rseKaxiY&l &z#I#ψ(p{GXClO)ndaC1-hqܴ]ہx<똼|04*GWoՋ8WT5ٌr/3w9Zzmʵi5Ke ͆uS0+R_WjJXe![3a""Gw@<<{ĎE .\<&î&d9%Q?yiX.kdRI qgOm`Tʠw6ߡ# >VVnow$ͨuJ=;(\;;%]qFY S}}Ѿgk7W-:$Dv_O (*H8Y ]aI%w籽o6t޼ކUBHK?ww5 PM{kd)Z<7K}N6s#$Txi65e wƣڼ5%7jB^N5n90àߐyK }$)0>NOoBxvOHWŐwv[# GI7[H >wr)jktılN>wi|s_V{CqAd&g!v`)ؓCqgci1\K,i9z_y&HPx%k070LI\-9ӮCjwiŹZDjT蘴gpϜ;OI]S׸6b%flcV&k{,䌁;HR_ s' q{ 8ɉ;5@X T^ Xs iB9LlJiuΪFrn!nTcl!8| s MvMۆAfr @}v9wEܚr'BeO v46QJ$j6$#bN[ }i*$g(2ah?5J΀7A1Q^:kA9cTNE;펷x4wYz\%JKy;]2ۖ9sK,Y{+U5{JZ/D#q $ܑåF!Lj*+eKxG!{vZ`SAiZ`%tVyMdБM'm2TdL')JSJꄐ>f$hO 5=g.Q܁&.g4C@#K0 i$ #2j:j B 4siYN 2N͔iL1tdi=Xa5/k:,1֦n%da?Pdނp۫.w>y@zǀwS1MeL͵:gr]279f=rK6׫Qs]c$҅ϛrkYj/;p^k9'7c(t ,I-'(=~?ҡ{4⥤ss0#qƼvk7 R8w\YZ*z4s嚲#۳VnlXiV]C]'gܫH 8}me60zpl}ѾЉH媦r cTBE؋sT=\ "?Q? ߿v;|&iqK } bX'ה 47$io&SNKRhTPAͅrgX! 潼0@: %Ibzɜk*%@?}JUWl\ʨy~ U-{ #h6p hXS5ق@j;zޑ`8-A s[(m#HBO+,i(h< ꞣ 2U"ZN„̔89I)Yhr(BFEf@4y=Ʒg8e6W) q\} qz_A/dJ΅i"{pMZs/7k1Q`*rKLNgӵ /?)+w9`ZdG N S6 0§ʀ34 H}Xt?= 4沂k܉uHB<HBñTH r*-n@z식'-z;ψfoHCY5@k:^茟+,K#-RVZ}眜 vm% _i rI>qҹuLutCa3ݕs@ry-NLTpC{OU߆wƀdcŞ)KxNJ1ڂ%@ IDAT G :vK@` X"ť4Wv)) Dj: ̞Bp[ ,.N12^Aív+nesV"@|&S%dW!G@@-:<@9>q8cL=FY0eP^thB0zz {Įp*a ? ӂ$}ZASM ;43գ*DEmJuAφ";;ht t+p-X~Vl5~tAֽ/B˗j:|/cGUˀ) Ȕؐ={Pמ۾ H" 7{|XF3eOW;ﴛpPĭ1IM[JŽΛ,K|&2`X)}(M''.078YmG< /M!s=0sG5۲R>#XqX"D#a~AT7Q@9~Vk?Oi>qPX7|OWͅf+|ν XCvIdN._Y/6f{Tԕc@.zNӨb͑ĺeHE A #&p>bSܔoه|n uj%8U9ˠ|;7iDaBDaxCh-J2sgZ>5lqQXg+=#'|S{xfz^K۪Tijq(Huc  QčVKt߉ԓ.:qww =E'ʩv~82r4rd%"Y-2H`L'L5@<29pj]n햊#G5a$g 1KajO2'rOPaEnbB% m.b1ԌXJ' f(kF+N{xZ\FErQ42`=OUa 5Ih9 -{D%@^bK>=N<4Z4JG'9 Oͭgﶤ_Wj]210CM"eH(O""d$#kDIhSYMF9x ?~^)ȗ¬ILV,  6VXB-1`Í y`!Q2v½3~+b%p\2yv|YJTHOǫnIwuQdM-Ñ3 ߷K 2X`c!= e.̀qsVFU\%L ;zxDi3TJggH*,UI2Lrius vU M@zJ}~Xvm +uQ -",,(%$mm$rRH^YcK&DE(bV `'xh{ X)S~|n[vR3 h~`f\\0:]EQxU ǭU#T]9--gM\)}STF97 Xv7_Ҿha9 `k!p Ƕ[ ˹3( !`,fDIad=4R.&h|p lN:W$0U6C{pפj֬ڲRs T\JH$7 Gԯ`5a$s=.\pl|F#yOء_@3ߥt=λBC:OsbyK6 jZ``%\K&o;ņOFHg$TA\ a>+/hXfT^>ærL FO +ҭT;ܒk [RFY4!FAgd#7!9n0΢ L8za'9ǗsԻ~NT(?D.!9Ěeq*\]j:J.֜{RĶ!p+bdWaލ :8iue nA`yՀ;%E N>Wjo[ĉ#osCH 5:Нω%V9Kc1JP\b%W /A:6tԤU EK!)'BȏYZ3L$Ԃhהr Gr0mI6y?vdųiq'_5Sh7&o{QZAVD?S!i\Sgt׌-mː.p6Dv+Ij;n!]hK@T%Mn>Vz22C܋+-yf3 -EBxp( C5&=O`'.^\ % l'i| q Ohcy<.0ͥJ]Kan;Kz3V2PF :[`9i5TR)%#X[ 6I,p*I iS&# 3,; ^ 3g<4?cY2(1O0΍&8M#nd v(H43gυjcnxW$3Cf(xd`>5\5]TC|4AɄXR*W6Ker]c F Ik:fжZ ü&plOq2`iSy1k֏Th %y+9MSdCa:e 泰msOTw甎VoXaKX8J91 %P b4Fώt ;lFP ah?\~~\eͺg>ϠιfՔ LB|fG#O6u2k A(o s`c3 es5kKT"&I19kլSii.?NYq )鑏Hd#cx[;io-6ȍMn YPNF:I.HӅ|N|qq&rP`٥Tb\Ǘb]Cލ]2`p B/51ALJ}vq*m#taΦiHXTyTg?RbU`Y"*}30!* S". aYk\ 0G09S W0K,0n ϱ9IlZ/vf#f`PjpטO?=RT=0,mO`~65/-ˎJKiviGD/e5=.-Nv!Dox݀xGuw}KĆ~s,q^# Rɒ5`װ0yh cr78A1vO{q,t0 6X`i;cR0kv5.1R &ԶMŌ =V+⬹=* _nG*n8-fLY ;>&\,48t=I--Fgg?f=5Q;)3O,[/TwK  v^e<8'@"gDb@v0-ZO]9{1q[LMഈop%,fيSAs |0߃,;@ 4.Mڳ ;.J!')gv&* 9+hby^Gjr(eH܃dGz!GW6֭Uɏ}iLM czפt_.q D;#1q'a :4_HȾZV~;sU wBϥ&GF6  횜,Ji=]J JG.4ݔ=YyѶ-F 3J"JKyx%w -;zOw^4葞Lx<%I˱pNO zta:=7)d K8eo/'"JF"p%Yl." ݗ5j$8,~ώ5W(2Wbz`bQ e*,0`/^?FKgy.|G1Ym;cGpEO{+8E^FLM~}ޚ}Ěig` `L}͇۽yoE0\gL МGa=roJ8$ޓA֑q SsUm# WyBMỎ ?CVB{My[%T1T;)a\s`'{g4X }C"&,$G ?4z4,zƖ+L;򕘫 c$ne}'ۂxg4oCqNZo?hkz +X'{ĝ&[!1 /qH/֤v69Լ6alg7\drɭkkIGk:Wk)1;hwfw浪`4?!y3 03\Ɇ >[ Y?=RH/ Xse``;<&؜ybW̾BxOSnI sS:q$}* Yb;暎GfΈo>0@7:,iq 4?33͍apJږÔ0W Ҋ3,@lLᔬ`{:O,)d@B<*$)~m6oao 2؟'P߳5Ւ|@l̃H>瞘-Zo4\1A[n?RdN$;Y+bk xIpAˎ:+NJl(Dfwn!n >ذ$h;Z0pr Yux{L@40[Ϸt5b}ΑCh~.Xfu.yvj>}" g#Μs#cTհJx #bB]"Þn@pGmk؄9-1G%6YhΡh]v#q ~ `<".ꌜ0L?@sFKϱ`2b{ir¡(l q7J7 %>5cFc"H!f$-Q6Ha6%3,lKEö<d9;;lmR"E z~;VeQuv:!̬̕kX_!ۖj"`2WsARgϒe۠tg{.z*卧$RE+ZN K0@0hګ4!8#|0I}p|6K3Fj0<.{*6*A3Ht"L&˱ ޸-H0ڏźeJ)۬3bN*q68}OѝoDwqp˒M)fE戀] +[t-s<C_Z8&,#.kԝŊyݱtMx\i6ױ+>G:=j_DOIAq2r&4E8q|6eݹv׎@sXJBTX6a{nC u[&5dn l٣ҳ>_R:rη7u<5b}= '莜pBW~)B 6`C4z'EfhTc²L)p BMIC"x ^;lW5z-T%c|KۗBB/btv 9BláxAwnF,Hc4lڧ2gI넮`cLiJg`ZFFv;'{9Ѓ^+M9x&k&$7#y罻?q,BsY.Z9G!P8mfQ0>͉:S,B4C:ů{*Uߓm0!+vFĎ>yq*sB V써`V4;,KGev+k^팀Xk$9,}ggr;Xv[,[!l=ڟokM0ھ\R=%+@wk<#Lus-u`tx=MN#x2)_5920ay0O)=la ' Sh%tGl ;" IvH sIF0FCgϾgB˃YEstGea4- 1i Tqq2UID/(]tO;#2]]Vxad2 ܻoY#;YnE-{} @ѧn1lJ2ANA1 IDAT5YH<'RcڨFw.]d.]6u^ӃVn g{3t=Pkxc;7ݐFg9ERAJKvw氼s r} @ I`VudzX{X.f8Ò8i=)yVo\`>{`rߗz82 )<%ρpj {svXŰ @K8O ˻ð ޓL Iݽcsg} 20w*56p&,/>l1?yϰ 9,4K$dOi%~ cfJ+lS}4CNKE dG+E1:4b|4mnE|*ΒmT*\3%/ c,tayL2\t yRTKs$9\F?2@sXK2́, {"h,Q 0ʵqB Cڽυ9,saV}S{gwO R"ۖ S#% :氼`y=Was2YBpC6Uҙc18rfgnB[e KYǒM< zciRjMƐkJ7urն }V{υ}X9{qbBcZ$eĤ4M$U)M}Fc,/rt/ 8 Ih=ix>W m 7WNIA⽹TF&:gtu!cW2{}jcY_SbU $d>3PΗm} S,,f_CmXмǬDSrJ[iNL|NIG׎ #?/xT|3KSRl}H}-/z܌e~r9Pià& .25 A sBrH[('?L*iV&pcuJ{>>,h O %.ki?iUP⨗2x-$=NK.9Wv S2S5bw9h\T8lnC)FK"yȴ |bi=Ziȴ0?皗C:y)XF, 09Xf, 'Ɠ9M1L"c.\R ~ӀK . jd %JdPY z@NK kҍJMAݤH|l*̢y[gIAї4F͚1w?+K\*+4g.茶| g0mɳJD&;cy >%#`)p9)͙ZhLVY?\üa`K?,!)ئ*JKBF 9k2\uD⦐#աE*(5@+'1R⻺ yZaI6Jg~>yMjKRsa(K:+ eKcIݩj8hy xw~RJ~3" 1,ie}`"f C},]d)H3@:)Uk\ KBSL7n$וiw̅hէJ'L}Ԍҡm)9bo)m{"6p[-R~n]l=XضPJ>KRf?;`@say_&19,VS" :d*](ujJ׊uCJ.JJ.>ӧR!'mG60#%wIZSMsn"g1 }V/h:-FS968 !l˨"kIZ%4hn|Y- }ۨf?)YK+{^8!MAl̶er ms }6PJh/ zN3Zh{ts|6 `oӀ#7fO8vk%+g!&ʍ,aW);}0J2;):a(Ti#)p(Ҙ3rJ6;0`Yp}zV2 hVRK>VkLb_bY@7`Lٹ #vchl5َ̘41ce22mc;`WN#C}[N%3ErF= %n0mѡI%~ͷɾ^W, J^8%aӆƌAk&0hNU.TO2ȵ..m 0Zm; 2 9e1ꐈnFD1eέ $K4#`c+d4K4S@OBsEsxͷ^8n>Zem%t*#2g̸@HȺ}!Csצxz#lsq<ƶ=϶k*0o h@ 20+LU}^ffk[sn#$[k*j  9D쐟Y);wK޶a;ä~b}h4s 5rXZO.}Ml2#+th]՟t1?`O/s{:aT`&M:AL `N^"S}D'M׶/ 686).ͩz, Lwgng)C;iv>rIYC8!ۥ{\)؟Ԍ쭛]/>bn~|Ώ*؆[a"r0)Qu &d%vEX8H5f.*K*n~ZZLͦ_mJu8&lw\#\3 cͿ% m.< M=Kt̒n-)M a&{+M=B8~{ztӞbvr f {P`JDG:U S.OW'`jyu5I!ri[ |@ާj(i˱dn)7QX_8=A?sڣ;7? vm/ A10%cdWȌjD[מIjMSr<\d';@M{IC9mq[K),9Luu2_6#\yt9S]`&^/pl~H8"jU̯slퟺ!;HקR8Jg5%kcLR>wI̅0/NkB9 ΅&Yڈ>x\39w(mߜ/09AS!d*TW` 竖LїȘF賶Y|5'õ-0VXʚIDMN,7 =yl ʅ%FN R#-4 }$4Id2o޿:޹cxd?Ofqqq|Zކ=Ue)p@N>fޒRM}~`LuDOQ]3wxX#gB锛^b@mۅiR!+,aT%5Տ ALka*'^7T01/1kme`$54ƀaɮslrXPM5~ތ&9dSJRR6 u%2+ yǙ(Kד>Kf&PєafzƗn S~p.Nќb~:m7 &"c֏Oآ2\oX T(4TO_z+dﵧw.b5\xZCF&^觩.hv Qf -UcY5?+m v.Qf;smKh@{.2f'<`!xgieg5:2 F';x~mgۘ2,D3̽6f.9sj4zK(nI[8dO;}c;2Jd/C3=7ڹC~cF]99Z27e Bf0dUU*@>b霋>~JXiL:D S~ U?*T0Ԁ)) 2}@.JУ0f&L-@B4(a9,oeIb مzzG'O0ڃb,ўfRVcby 05m2ؿC 2o·4^'^4.q{|ҁr5  XjpꥷtNo)M(/aZ(WWi2CƹO9ڭvn>x_2K 3TmN͏6N 1Ӕ_kB yo\Nz mG錝=B3R+1w׆y̌vͧo. _1DO]e7aX S!Pu]b)CZR4r%h4JeuK3]?dޞ}5'sB6)e$XIf?v}fSpߊf_;US2VB.`z@ [q"Ys2~k G޽eXzX8NV99 3lh 4D f9wM=E;?Ý i=!XhocLifO2o.ee <9P,MM猅Y&fhJfBffsMJuyL%i1ZJl"0Y,;SK'ݦMdFjzɫ ?U&?gl[pG,%?4\+ caxXSZ @N Sa|w1 4) jddwS{84 [,9s@sz}:h h] }]cΕ1!%!}v:'Mu=  GXކ=xܞε 2 c`fYiER PtJ,1 Հ[%y,S c`[vi}r1޷xwNM*])5 3%0S334M: 92r_'f|(-!4 j}ufK+\UUOBg 14sZ\VLD03m_{E! isbMB6..޷ǻiI*e肱Si@%c51FkٶI5٥?Qч<Zv]ÝFMNO5Đh-&R"y!(JPflɁb>{)pPMj0oU3dteO) V2C)B`ݧYFɋF9Z[-m[b5"1Fbd wv.?j̓cM=R7'R2S]b %OjuaykRe.iR c!{Z$PU;3=f4ts/m\謙Oqg]5JYRX3]( ghhFi>!`Ej3OvU%f`.N1?|-ᙴK hY@ ɵ<0]Lڭٛ#!M[! KK1 AZ2@-O=f,'fU/3bR8\!`6F.T(]*7J9)ZN4iG> Cpdj3?c̓\g3/!7^OlK Cq )K0%c:jZYbb1 y~ Xk!Ee%a{mJlyT^,'k!nFEsp|R.j;}(ai%eiD)7\P8jC|(1K9 ̱84{Nﮒ3kp<c<AՎ{NtKʅZH+uv50M501Yj iy,ѐ8w?Oݗ?S %ho+LܥLDsj+)sM׀: WJ kpvYyxkR!) 3ꖞQu.W1dV0g q1ǘacjfZu IDAT 8`0ZfX",,8p}Œ9-@_5]e(h1ٶm4y? K4@U%@Q\ T#}it!Һ˥] @d4{}?2|Bq^nD,C)00%ÌHG]XgLm&3f9yλSdP3b0K7_:,V@Ȟ1DKm8p@DKا<)7UuǺ,ؙٹ?*w_; Tf* ӄh9Mk\Lo"HA)F)vXbZ@Sjk_W&o5h@_D];SǪy!K 0%PJ\2֔Pax 0%Ǹa1* Ag%GDnK x#%x ˟Wp`Mhi Rt J*83c>weBge90MBB٠Yukc9g} EitC4ȌǞh2e} /q5KlМ{ ]̰QZZQ.e; !fbn u.{ 0}u!6F4ʮ`jջ O./8 YT !nNI$S[/~s7ZP KRzo:%BDk7Mh։@+teXn˳݇j2{n:, 0}}鐻:ǘL&L&d% /-;ux-cVZ?Y'B8I[̮Iao(d֒-Wv\%Qq8%#b\)% gص>XMv^.FŬ}glgAۛu5T5gO/^Vډ]km2a=2(Ra:Qh4RK?D=cq&H0reh^  3dtv tt ZPz-J Co@+{#fiC$q frj2ڹC>ҡ_$9 q*w y9L!FJ2l&Q<x٥Fec)7$3 ؃G0͐iJvAS:{۶-ڶZ Ì+ŇKemPϿ2qJ&aDٜ@@tj3,-pǨ£l ,oHrGMiu_kwaֳw`|IIq1%/K52 gTtSax8μ.j]=Uf?:9?~1AL*q9wɤs:v`zЌz< z`ffJ5w.XpX.dU$Yo}B$a% < }"R2X8u\dvk/R=yL~͏SlQ؝YƮҴU?H,=J(XR7%D'N9h2@SoBEg- ڣ;;MbYUU'k;;;[`陥&0L9r{1Y$%tT/9.h St٘fVq@ueEM"~d = p$rL"ιW#,F`b`c,3VE|F͒K]A!`͘5A4|2~L]?2? /<߁; nNzf!P 0eH0]gvÇ[YsQ4G³@zf:fV"l:1$ȦҔ440|ݰb0utMGa dhǨp  5fܿg\DA9G",܊ voU>?Z3[4]<\ObS,Lmmznvm`)8b#0|qޘvmxkfV' 3 산dT ~Ը@Dto~CmLo_7pThl^}I3`hڠ5d0 :Tfy@4|/TΈ)LikFv=uF] E8]Ou弹qj9yNEadNKY{3K#ygo !&!mDH̼ ܂1_`rZ7`XC΁ W,.c\+08O YbNMӺZ1i mr=NL_ Z)r6уga1v8d8Ӊ{-Y8&kR80nËpx;4`؀us]ci(H2^^1}`1cK ܴ˜ʋ LA0S{<`^ o0CO \Gh}4}&C)UUF9DJ?=iPOw_o& @DaCHltcPHE02JUMF)CJ>2y}f{ 3XŔ,9ړ/!cz@ [sMl9f0m✵C-"߁"Wu佈Xfƌ 2p- e0X"N$_njrw or,gΏ@I[fQgv &o׳nK+3粳k'Dճ߲">PPp976B!ˮgu K56y&ka|ب hcЧ/LC-C-'czxUO.LD19˭/,6n؛ʔH*0SY'`_1-Uy#g@0zHY /k6,NqFv 2qwLD[ 9padJ.c4%Hzkv~t\r>>D Wq<{=ρalTSqMBf Q Q9g<M#/"l.#"fk, 9> SjZhE9uT!H/gZZ!^#`r63 MB`J2㈖ 밸 GL c 嫰0Hyk.xFF#H`,LܞOL @1¾੥5j0v^Vf)e%Hlv/$ 00 9,ӣUщPҺɔOq=x#%[kq1y;LJf7sq1Q0Pnj;p,ZarYLsԀ+Ffu3Guf 8vȠ^^,Ґk@Bݮ1 9X3xtO+p |qKGyk9Zioh6- B}(Q,]a_LM35 2;Q=4xV_ÞO,3(#fX&)r)X azع5Y<@ Q27'0^,o"3!{AX޹)2Im˚ {stᜃ:p L4Mv-(4n$H 7vݖDTʗJ@3 5P5:Ā4:Go]2?ZٓCheYbX[.ӊ|LD#Mc|luweNJׄ6 -X1abI)&˾α6"%%-,Yy,dj_oC`@`ieh e[M:ۦ)b/ir&3T朆A;K +M0WgӋ7}T$^e뷓UL* .x؄4ZʤH>2oXVrhBb E ܆ 2MX4fcYtȜiK }\3NtJ7(/>p*+%,glOk01 {`NgҮG A{hpH>fvOfrV/XqfbedEW,ŨgLb+5sx,_zfV:ȶ&:RZ|VzjjZb0CFۦR݊bq@oØT]Whp nݞYU1-];~F*u0nL\ksnzm~]2%|I&2{&Ӌ# 8I$1g턵D,3LdE}J/ ?{YNӊEg6ک*⟡74>R n>}r9sϕj 5D6vz&$ڴI}B·] !;;S-tԓ״ LQz!VD(RJS#{&pB0~Bc"ޡ*^zfVO>QMf/n?afes'N490% 9$5*sυF4ԗ*a;MaZd :)}2U§뎟Izørްlr-205V ]DdAd쀰;A*RDzBq0OWq;0Mvpty MYJ!9` lJoNȷhKi0Bf(srr8u.ճ\˟]+S]smļ$L ɿS}<Y-Z\` ΎUՒh̼uc-?%`ޡT"\bIֹ1D3LwdeWO5gmfof'Zjj}7\<cc9XCyݹQHO.|öԠ7ʀ0͒D=oz0k@W6=7b߅EX#ZV&2H3:&3X<2Xp/>/K=*`d*y}T]R32.ons ?2Ί9.JJ#R x!32/Nx7y N3HDtJ.0MF$6JBˍZd9YBpܹ<,U^YI9\m-޻v)L\'^>Xk;XÉw9^"lL1}~ 9S)eu~ ^dX9ycad)N sd a/"{hӧr.^^ɲ( y} ;ɂ%#r41+Ge"aw*5mC.?KA\YBչT~K\p9\s vmg‹E2$A?c* IDAT!pZk1n-`YuKf:i u^8FGn  OcRA isyj3Bbɹk`*7x۴K;VkERvƤ5!\N@F:92i"p,\?wD9NK\nek*3t92{᳋}İpum'@,2Ŝ]d,GQ=2,Н[9Df"=P!1pJT2{I RJɜrAPgOז:O˟঴?ϙfh|^hʬ]L\ktalM 2(kb *o)ML 'mHl75+^3=?/kW5V]9حBs6 K=uluK!s)F98kqxO0w&GB ٦VcoӦ٭|JPI~d,GR{o.-qtSYLKرJS|f>0c4 dZm5'j4ʄZ;OFa\n}5MmQ"CЦRFp&zd~̧K;g[)]I'{^ghbƳG. Y,2d>MUCSjBp}1 ? KMR|w rd6 ^|jL ,cZg,LWkFٹ51Fǂ,BZ@KI+HM㈎I C pR.B1' HfnDv'N)CE fG,f!5~[l81#, KKu J@,Z&0os`ǣx6ič}2!3efP 8"m29}#cbk<48_,2ASNkeIad*gZV [\_z UO1Pp5fYf3@̱uX.1tM\hZxcE4|ΩIt>GqblJ˳L_^KgXz.1M~cG%n8T%|,M!#de]r 4G#eGD=govaJjS`xpϬҺ\2׶>G淥i"MҀ3 aX8^I0)O5J;}R6O2K8kRE2Ydek,/eoXVW&ņQuᡩO?`ڝ6 (svm uLXSvSvuD葪5M/p |-Hn)"emЉF}.b%wK̠,qK6K&;qMSۗqIb ‡^!N0R@- m;agƌ;њh#c%c$!k-K(Ys.tRÒJ:$4 Lӭt h?޻,_bM% :݊7´Pd3h-εnN[ {+a뫎E^}ы]4HA:_j0sWZQ;g 4wSF] Z&cWM4#< = =qxHdʉk8 X:%C;s#(!1Æ3,UKJ5 u 3, .v{!toZkYt+@aud2][֗Îsxu-mMt_7yN9G.F}瞗(y]G}/뮁wHv"XrfdS/Wާz?2H?*qYYJD9hmkєPV:RˬO415qFYlm 3iF86]9VSP,N>R>7o}R*7o.f){,c-4'ʛE7mJ-ݳ$=| L2N%mV6ьw.#+Jٔa̅h]2A-B=Ӄgp!N|;/`9enLEIOFI#>.K\>K *:Ʒ)|L'Bb\8w ^$d'Ȕkb yGr֓P)nˏ wK"end4Z뭰{]۽rGJخI"I쥕4a.DUה%%+׀J1K{8XQ+`\ OPJ 1Tt];q?HdBv°=5vBPRָ8NG_{r+Ss/f Tt. y5gŒe@SSjig[iH8og?O݋w,!Za.'f orILRs0"T|WPjۭkWz$ݱw# .8S%Pvj#B#U@KCBhk)j7cy6ou/ ,#Q['6𕠩pçTwӀ/՚-rԇ0ׅt LjQ2R$6=6TׇJ95W5f[<7LDԴD)I}pGAcI%W  Br0=AӓL]דɎ::؀hM@a1f7ZqQ]WIC0.LSZt---Q3vO XTIQWN5j_GkЂM;<N:߯3l݇^w= +B EC-R b"ƣhnJ\uLRs(!] e&c3$H5my.rᐲXh>`aWxc=yɡ_eSkh.MEa yn%&X pVH ||6cVJx+&TVnv%7ɮIU=I4 y bH)tPX$S C(CzflJwk |`ڔLnAwvZvl'#OR!] 5kg"wF& a[IFk{,=WzKה>3R-Jn&)*4K%XnQ,@2d|9e]zsXZwѭ)ْpuL'A΄`[UwaF6Ԝ"fn Ml^aH.Ypf\u÷I͙%CUpx \rJ 쓳YB%1{JC>Lj{[^{#h x0 .vC]\%5Bп1վ"DI|F Icl醂1@t33 U23?nGSO?Fi*t虫6pb;JpVtiT#f\YG:5sd>8 "rJ@+UNH%Y*4S)`٧*)'7~C)HP4eWzQչjS<)a^8,tiѫAzZk kO ys s0CM2|v'FDB75 :c}c1`@P& v Atdh:@K3fy?6o|36{$knqvE^K1\uΘ c1jj>)N>" ]s'>{485śṟ[ nv`i@Z Ì ,*&Gpx8_>5R1c{ K 늱RT:m,58@Q)r˜ .I}O_%#Y.Fƴ dh_h|8E:iL(Nך}\g9BtsJhNݓ$[07{%|[gɮ4bfO\'yf-9g@@K> dgშp yXNU.?Kmz,dzocV"LO. :;q%iG4.S jhWN~`b.[-:'rfγ[R%le퇳|ra|N f<}rT[8V6o,]y4C'28yGtSs]ǵ5̪F "wġ$'輿=9zFӈ%A;z\"m>DxGV'N#¯_kvT3s82gt=8*sMAl4z t7'; =$x c0qp5xH>TT`mC .r95H$v saL`<©'9N.%%|5B/gjyRjE|jf2Y{D̽J׋;9\bsq gK7L|fnei%Bԍ-MAxQ\c1[)Fv+օQqw2`O"OOW鵘9q9@Y~L+Mi'ר-k+3rZ#D6-+ 2J'ԾHk~T)UR@`fֈuzU ;"&AJ s 3U>g9OkiT `;j֗ˈbx:ѩ *}$'X>ԨËMw9$ Č#KXZPeGpx%)V9W[h%RaKs{99ļ0e"JLOf &%t za$E9a&dncg \DrQnHd?49XM|,r).D> ҮXδ\e'T6s'a:3zf-yVp3h!rj:=%?D5pkch%}m yA-O͕X.s؝B\aZD*]*ғ7̘ )#J(05%'ܦIz͆}=ԨmbD!#qD,Wv8,"bE`ī~Ov+s.2;Y^bMNu3ēDͬ'rP 5x4zZ&; &KSzJ<&rp̈ұc Fr4wma1H+ 9b9 vF Ԝz3j:(;ySY%B?LN6{M󙌿7@JR er8|`Ʈ&k4'r~ώap cNwN]jqQs%B, +*٬(FkfxL' [ɫ%3^0 YzrDKgY9MrV|3a J 7Ω`pI!׾UJَ{TN9k-a>%u$d`w}$J¹Ep ö#% j[| ߂˲@A;6bY1eQR `SGĎH MwY?昹tK0b* AzJg9[' .X;| fϣb9'#ѥb}vy!L9rzNM93Lm= hr,(,eCP3a'I* '@5yo%tV^[~=NF'npS):RrюO J}$ NY~ɉΑI+/1CQ|ɡg@088_ׁpfWoe(f8;j#-G'q(G͍Uzf4?D;$q[U J?28^-/P$%k) sF 5|K&q ֙ӑzNFPS4SvQLӚL|IFuMk\(\K},(/yʒT\51:1AbOװLS$:&;Nc|DZc #/n&Pi2c鸀L'9lCWŰ0% ] BfrKGOM& 94Vh3euSf-JyVpzp،95%(W1K%KɅm VL~ 'gg{=(eAhI%çNxE (7¡TY##xRS"[i{[:$ͺmŌrIB';g)HdjěKԦ(4T iRmU~ = .)63Hm>.Cy6Cq7յ @)_֮'؋gu(IIxHV 0,G~owIX~@.j`~hFޡi q⫯)vf0ڋRǕkXN)g.͉QH7&sa7TJtPJSxuK~ &' ΉAy+ Ha6O8MhI|a W1s x.GqX_b7c9Q_8I'Ԙ?%wIzkE.FhWs3z4X0yX +MD29;k&T^ ǐ :7e$%8ܓh-u @\d.< 8nn:LɂRJQN?)3L2gP"9v$oPď#sbtS2cW ŗ/aV@̥t6mP嘚!QMDn|Ӝ~Zs%uY~\++țXHV$f@:YZR-M6D 5܈=#rgi:\_$҇|&G!zMHn% !INqҜ҅{y4Y&L 'gN\K8}-Iݷsǚ~;5sDh 7BAF!4* u峉8FLt=^d {Na͌u=Vs$-߭A٢?GHO /5yKdap,9$fG̱߆3L*W[ 7$bT 1؋N<2gW7UZĶM\޴ e֌0&wbME97QA@P鐖bj#F9ѣɗB/x]r: "qd wC5!{_VY*pߪgf:) IkwiuIʇz iU¤]`R֩ G{r#K[D Ky x&p.-<1O|y'FYΕ\2tH=RӋD҆6+M/<ʈ7 OC& Z בQQ@{nZMOq$w='?fcHI .ЬT Bwjr;VNcj酭K'rE >IM &%-P( ."ї?fs<PS#ԆK#.K_@(ǩ*r̗Sj7Ȍk0nP_glˑQ})1fZݤӇɑFkzZ*lj}hWA%u~ǏB's6u1jWHFE"-&YjӋ䚆LB,ZBZ3{h`(dI*̳s vO)^>D xp(_sLi ۧ䴳jL''RjK""Bڵ9OgBBS)srIusCYViԯ۬Izʎ<̇G?서ֻtԮ sHMS)r3p3XI2~^r#Wьxdqqi}%%.IJΟ.I2x3[TL^ȱњݠtDud\/S8ks#MT>CJTfj2<i޾D2g6Kurxe2yT`]7p Q߹=!?<1$V,o4 z%ftz+Fi0bo-/`Z,}=K9k.3z& YMMXsoR1_ұmo`iٯͱefd`O͝'s|aQ}fΆ/ ܎2Ϙ+n(DiIl j2׿IVej@*k'`Z/sb'+o?;.XpЁ\364=̀Xv|3~B">stY0}C^hJÙ|v5])O{p-C*MG\~^kdĜb.y"܋vqe``W> c|=^F& ߭;77vJ׳ksw0D3D#KzMy&mAAAL7fJO1 H H)4V 2IP(Lwݬ CŒ!|'p9o:_sfrF Ԡ,ߓe&xl]fL\qCUVKcQ ]z^ lJ q4#bk&2d# ]=4 VJ DtjE.$~xG羻06"Cy;{E3i]P%4cJc&htِë䮊!`cG7ᖣi";'J1F5H%=r6;kː5&MK k8-ש9-V[m%]ZL'%M 15'pEZX܉3 G,IY+u\ ݩn٧*z0?n([?jWfm@zNJ0 %#})en /áş_dSLݡԜ\OY"G\Z Ǝ_gZ<ˑ|AO-x@Y6# j}ڌ]Z(y0?1[</89 Vi6"!-;Q!?`3jԂQdv͓4#FoXifTg.aZ+;×2@RZ_ÝGrMNe8)zIL4G <3NK@8'<3|9.*Oиv>_/iׂ ]ۋR 6qKciLlUJT`T]*jal wO5C4&-0Kl$ɯE}FD_eQ>7a Kh&IU:~;2##o(-?O!."UZ%-{N_{Rͦ|M66xoJ eKGj`9AF0By 9qD%M~v\&P7Mign^zrV,bj&f3 F5UxAE\.OC>Mn\Tmhq3I)*Onc;@XC21 AG}[SSYx&&e_R ncI= O. ҺPQ5.LN3J\ Nr:ZEZP͝bɩz"=eA c㰽zȰ!C1h7GH{O=Ǽdyr̄@bnD#/x͛3ᤰZ W‚.i(&̒9=LxAYi/MKǖ| .4vh./XkB/'uX.5 K8`IRh5K5}N}b*I0v8<3M*կ1D$6M'cd9n.3S rcz/-&jH_9,4mvR;ē7#>w%~=͢sK{nnTsgbщ3_HT=_.#j}0ND[e!pB"\lLq0^S`PgYfrzE]~+9zo? *5ànJ %t1 E4{%m `8"|v|gK$ 2 IIs4 ! 4ssHfR\8#y\D:8ŁB:tz\q0#B$*c4_)V')e sR`0N7s5Bf\%g[`C߂"lG>5-I* Cb\ \aT5cY:qun쟁÷lygr1Ař?NgB>9-3i=僥%ޡY-]WK3~9Zȃ-۹Y{DՈz"w~qOBs$UfPCZP$#r(+ Q43yќ9..~8+<^;]ݍ|Er/M";ߋ6DZf9ж-sp8Uye:chi*ɖȭ;H*0 8s = L9SMF(پrI{"À"Sz>b?1es5~7nf:s s/c4VL1_!7D$(UX2jZ;b*Y([@F*ogBAg7IM: LiO:5v fcd79]zBszܯ^t:ax54Ǐ7UgNfψ>9C9 >S :ڑqգ2QC#؜`:IӦ"S"ug(K9YD91< GRjDԗNZO-ϣw7铕Ңu߇s@1< >yh>感]OaDs4vI^{[Ω68] z(=8qp\1Ma(K̓3a|n;abmGlE~G}RH+!:\3A{?S5?6ρf_$0분aNRσ@G0{ |I>MVYÕX4qn pm ɹ=w?#](crq5UBJiıK^%cmfɑg>JB-bZuVzlb(uOPq{xp^;Z C.: ʞ=,Eb g≍< #%.>9z)H3h)0Ωŷ@Jvx^{XaE.ub1$ˬxgv́ sZnyt[(-,¹zq.M6Jd^ 19P״.m4,sǝ;='_y`gpcy(-$yaE60 Z&DeŸ.}_9bJmb,TkR;vX*`g|7^0O5OG=Ѻ1c+tݣ4ġR ~`;YI*_zʨ\KG=iR,!D_}wI;k~~: nR4 :`03 :>I1W*tqp ŝJPSrɞSyjvVE 瘩^Z5|"aGLNOl9_)}CWC3 'k՜zjNXWj92,B[<f-K3չjFA>쟤 !Fhg,|fq:>>IӆB1Uj5&RkGEH1Zdbz%ig> IDATp) סQjqH, |R1*y16eBx0^DGCƔY+3S`z).՞rp3t5b5a B 圍"L"a,'>nNIE`݉/¾v9WxtP^GXU{NrH6h=Z+ S)LJȋ~_†k8[{h ^s '#'ߍM S\ڨ6ds #QX%FZ/ ˥ kz ᾮJ4ZlH5Pz=|!?B]T dsPщNV3''Jdh*D.-e†]εf1sZ"58w|~sm&|VC7]r3_!͜ KZ@'Nb\H~*uk<%[LJohNMt) zQFtbbAE:opsJ-|pcKҬ\qR-ⅻǁ<*Ҡbƻ?v3=Ei/ymCZ&<UXb2#ZdiNbP˴6ɹVIy:lzpx}7oDRVfP>^AȈaV̮I~dIQIPJ]̮ݒ^Xu+çaw(ʧ#u.!"5CN1DWET t>AO*N/F| ~wj_<3|=grad%f[;P٧ڮo Gg-Gt 8wbϙ,b^qD\ԝ7Xi˕O;bs-2̹jz.VW`w6M%>6 Byw ar656cIEVSq;q>mN;k帰Fӏ5 (7CĨ.汒-uj:eo LeN's^쏹Z׭Z dm~tvNhJҲ q 0m8it3@JEa&U2Rl2 HK~7|V( ݭ6@+A(/YWo..^xQ!{L r1Z|)4j\18%>Ҋ΁}7iǘn9I9kǻ倿 {ܠ.wKV&4[]Is&BL@ky.'G)nx8k7c u8 >{k&;Ɉ*` 㰽zp@?-=jc&O0}.Y`|t~x? / 5>%yZJ^+,=V=~?Q),&IOsHXfʁ$M4WVwprK  j:̷W;gI'Uk+ ӉvKQI^/vX&'E=xc}w OF$8:]蹶%z|G`P$ץs\=Q`m JRҕHDAx3kn[N 焣q9$oK#|vh{ 4!xӎ¤.sɆG]8SA5iW# q8`9Q5hZbk`JT9X5 8k2qp')A|]y>ΟxN(\kf1P pm% Exv)`&0h1,KUqXT[{#<~ʃ~9~^^N^Rk2X Ф {@\ lR9'F0 4VF9gݝ/s+@溮! l3٦dML@RZ[kÚLeҫm_1E&|kKv}s'5~ H0aOt'/F"0>;I's92+Xg~{2#"$ v`{y~ty#aBH$3\Bf`1i9W s}2Wg˵Lp'Vw^p]D@0FY@3YAszb}H%3^v8H2>g`dgK ]?ߙsW ť¼_|WKZyεՓ) Ec͢EnavN*;ƔYMGpIn`B)VZ";!>qIȉsRϹ6bmH< 1`[ KNgk~ =ETRds˔V{  "gF08w'&M,U`5"̓Lt1ӴVeы31Ә˔+">ݗ w]}@ngB@Ƌ:8}J,CY+v0>"$E%(V83 | V@O˔ۄǷhdm~cjnX󛘼c8Ϫ<W??0+씄Yb,,goAPFfU^4؋]]NH=rrQ6E;4-TP ȖT+)veQj'+]ܻGMN/܌ _^۴aŪE>?>3wMQ rG+$t.^u ^ᚇy {D0ʍ|.ih?i_G $IӴ?wьC=%viV>s>,o@#?i)QO,%vPNcBt(ms#rO%H&ih`_AP;4qDffKr 0$ SNc}Rb؁ `z̳EDopX5M9Z&)y<{|!R9o`T9w)'r8pwmѨݕn܀уs˂Ԯρ5x ZAgn#}i]j@Q9':~wfi\Oi -^)9NJ:vt3A3R96*lw{ϭUԥ͜}83&lj Q]Ĩ+d1؈x1v8 8\'=]>l4 o/).KAB&97q_=5֙Y4nPz'@*ѝp.xv8p Gqpm9qc~0aM'f HIӁeU6b*2Sl"TIBEY8FI,bR~y` 쩴hVڣ ~-XDYnSuXdP!dz9\G28T&2z.?(X9Jw)OJ̽F+''D,ѾnJF0~pz?e#뜛ܖco=~=ݮ# Ny:|q$L'L8D#(5gt"OEDcvXddD68?E`u׼߇>VIygxC>1{ɔC0p/D#Yө)=03iA#'d(@{# TeT~ 11YDۻ\!M^|N*JsJs&:_ `h.r+L٘LQ%Ȧw/O>G=ap.Pq3h'& ntP+!3? ;eAH}&k=HdxGj܋ܤQzGbړE)`-1ƒ 3o%6 g_b7`ZJIBRVߝ }Gf׬ 2΁ M 5G.d׺,g=R>]TJ9 O SI#lNq\nژTO>|De'<)):|oဏ|sU̱Ӛ<(돹;*zJ']Tx2t8#pFt-@st ]F(́yٰ\n ;ft~zM:N%Etj,[R'[Zm.e߰^#2$T3!}?#1$e+$7}3 _M Y4ֻH1bg]&Io4 MUyf^|_#xaHHJLkQf\ی]Jx p-|naQ 9,ܹ'[n*&05ؤC:\$1]+2ξ.htSM\#&b̂Ex_K/3XGH< OxP`~HVN*1RwKȓed+HЬp\ۓ'D~$'XJK+6I~w5$HGʩʦ CRuiH߯x;D;^0Dmu֥Ssd+җY{TU;Q*t^Ա=R%MUufMW{+ j(\ayuE^ σR{b`{uRQ6o%aKMDlkU\$ J`\ ܝ7\ {OE?ЬZrZv)E#pnԡ9.W]=vqcS\3romBi<'M"DdI7z(,cWOFSb/B?{ <),x[nH/koZ*<JW8`؉PC):b)NEJ2Y c%%u2L `-M~] 0[qvǝ,c`x!vG6ԴD6*R rͰ}RKQ-%F9h?K4Чj/\j<- FkCdE"d!$wi+en0!5L=C?Cx129^t^-fZٱ^~q IDATvSy{$YgPy+qh@ \`&=P/퓟hЃDl2@XLjD /cde/TuFi'p쀆i/bM18N G.d{oq<.ظͤVmƠ̕"X5M"i#Q3bTRઍ4L|: 7}[wx:bKϵFԀ=o!_o*gG{)\#єE\eyB% )AsqTC, z$czK-*I8CÁ4Z% 77xt9֙QZL5LSmxУ}3Lt)d-ӔNܩƑHƓOd\^dS) -\\q?{eBRVg}n "<2sxO0픑ܟ8(qu:R% πV|90?/Фdmrz~.N[/D*pH}ވ?ԴkrMK|+;"Pn|[9N+f5 sJ`i805!Pc19iǸU!.L7Fޝ$SLB x:> a# `5Rf1|{nxUXcFviؚ4 *C$ #!Z1O_&hjAv (Z߭\H(%lUR. {(Vu_\CM7c|ӀvzZZDS,+Uvc 7Bg4 ob-M q.5Ǒh4|fJ }8_;%7x< kq)Yy[f|4ma ,XRbOER;z¸X3yσiB9z\;sUPk6u18Z KsZ>pwsf\CK׀}519 HGj^c߃hbD5'%"Q-'yO 7DA:lS'a? #vH.&mbZAt (o0/<ýX7 r c)Q ˟ k0IXf'@X I,-*4syF7u ģƸ?+.g-wl+6!,Lʁ?+˒Af5Xr~p_T<fKӏ0~sǖ SdoNaYO%lnMǰ n8~៸{`l VӬ)fch/-XoANȶHm #2i=Ӻ탑 ;0%WZ?WCU݉u^qRQ"ȮprMjp\3>:+05"NHNjVCmLz 봊kKfIW͘|==>Wэ`~9zd P9 A=?p_;6zzd?W(w>hj1ڀfeSexR`7b<\gԘ C>Y̵FުH*z @3e:7*c.FG93 .n k=ϸ^p%\s&Դ"`ۂ,)ʐ[₋~9x9VY*ݦM0Xp F!>9a9@hxf8YO|>ac|`qxʇѣSĥpn(.K@SeϢ>X\v|zxFTe#pwCӶDܬv+quY%D94Mi=FS=qΛ\s_]!كA|ZÈul(m FGr{ۓ 8fs+1˥S.@텇kr=QԏV"l=N eC:t`2pyd.D39h%#VCA7'wVό#‰VՃx n>|6ws.خ7+1VD“33Aι? 8ugQAHT Y)n_͉$ZvNbZ˪"Psw:2L][%\F(;c&TE"l\!uMUޕ3>i)=mp 9p9c2<([yt `W~^xAY֝/R5E'C%99)2^J#ysL1#\"qy*ys;]3 Jȋї =Ȍ;,3nqq]|+Wu)ߪ悆QTX (Bs ioX;95\[!׺i\SBzvS𖙹moAn Z0G.]zTo<8K>Kp8Z%cK^ڰL:L*sN4=ȽŇwGedxYQyzVr,o/y~GmE4O 5*w d& E{lŮ#٨[&ɹ 4pYQBubsR~9F4)d)_{sU}}nO9s`v ɇ#"嗮?{] i:F1ryd^N%aZ^o}QE=e.eبKKxNIY4[v=2PC]zЛAD)6ZpPrk)MPbs-ټՂIo?T;̒+906p]׽߈< NJX^NRM6_ @=湐 fF DP6 HWHK #JsdžM6\FVǥQ疴RotޜC߃ 0)Uj-۱No$v$F.5yrsuLܹ>BA!߂  &ŖCͼ؈nd-s*ͅ}%jҾk*ӽi*"ɍŌ^cd,hR99QqJH =VZTIVvϥ"J)qn0\&i5sh;YFa|MX25x8 wPW8"żz]7/5ϥ/%Hea2HB:rM Gx\;'mG-oŬ ᗸsVj5/iݔ\\֟)37XSs0$&uyXp\L "+Yc0Wװ5/~٠Y(ָ0ȕȎ #N n h~2L{x^'Þ\"P rD4Ρ EnK)ursssƚtA=>d2h[{m|[ΉP90GqQb N7ʹ@wNލxleSW=ǜ_ ФU\v>b#^V)]!'C8+&f5᰽B{r%(mp|zsuUkJjZPQ_~4C q!TaZ JR>[\V9أ3ʚKH^B2io5%gg]"?ƌu|^#ks kG EZ_4*y Dro!?R\M-ajơH~uۊlT>yϭȇʰESlc]c-ɮo:{owO?fzz 9IQ4-1Ɋle[c;A F !2`Hȏ$ -!#1D(Qd1Ù{QʏSUWG=:Uuַ\@YS }CH$r Y)+GY$ݐf!J1{ε\H0H["BGx/[͚׋[/6 hB4W4mO1JUAȼ͛p u"F@aá}"lӠ;JѵC=P*%xZI9?NI; % B|a=kŠ;xnQ6W)5adtm^_fu]PU4U40z٤z&ͷ:&}ln#9"*M|g-VehnDϷP9?s@h*g!w-t~+ߠk B@̕yRfL$J&yQzt*9Ac ޛ' : (9\mbhڞ]fudT*ʴ58^np mM.@.7Iw *HTOV%Ca {%n_>xUNAZ_ I !'K%GFK|4֞SX4n1b[>>14o3RXϻ#ycmW 3`R-i:l 3MN@ l=aWWpC|0Ԃ5 j?ZnH^3s fۊȀ](fuS$EIy+@t@Oѝy!4H'>DwˑP3T @#yD3b^2+^#\:t#W">kC[(l >4#C<1vx]\j<ќm3x vUHV%nD[f 7\f5 IE[ $A1?T ?;#"+UR+7HZ3M4 P\Yp |~`ZN&j֌E F/Эė?SαNɍHLINv" ftKUA(djqLp>g 21ȓmFn $n yPmɨA`ހfvcj. ϰhmYs.ĥƸav}~]k*@:uT*!|d%z'4!ˇ/_ "<3|~E {ktKjzr2L j'G"i8 v`0:i].xa;R`ۀy D=䘝k/J޲f'ng7p. cC %;MAw:kxZ0Fc?VxMQJ0qX=楙sCצ2a$JҼc8FB["dg}.[Iio%Ca{fd޲Dv۟uSoÏdHV&⚈¸HAsLv:˒"_aFrڹ`"zZ[IvRBS'<&EhXcF" &p c'Y ?RZ)9aa9}ĶZ+>UT/ƱurP" %:8B.2I1)P& KCa~5ѣ'|Gs[zaR@8{BV qlS74֙z}ƨu)9Qw-p95JwrF6MJ֏ %U SOI#T!PLP \?7lCqR GB:u")eSɟ tKXI=B'j\' 6 4(sIitzODҩk "XKcj\pXEȷq؆XyOE3JD(&1"RCH:ViU+3徤Hgǝ`$%-l}Fw uIQl2i)""NةBy IDATdt'-m8Ɍ Y%hH16s:)H c~h=*% ^*jzX+.}MyrK!q%ol Z̓C}>z!B>@ZgB f^طCzO.<@}7Q&}FdDp:ou:[a l( uxQNP.8DJfIػNjXge%" .XM` Buw J߫{)^祠3썅!BpYc? oFg҅{Ȯ5ߨvw0zx{A3ĈblQ@dVV%8'HtHHJXpA#cĒn %e8P8bXh ùEK}QڰyqtsoιHL{Wb✕v_Z4B*pc,[0+Ʋr3CLk(+tM89dd^VF(+gJDA(Az\&HI4+W]L$SZo"nڢO#uV""4eD5I+fX_d D5@ S eH7p56vXA^h)]8ucM(7O>t]0lbeF.oSn5eI2<Bo1=U^2e+Z" `EsT}yTI[?렒Zz:Ј Y2# ֩Ge[&!F*Fm965Rf2!ь )TTjZ1WNҧ\6=!PM(U:>R^iM8J Q2h.EhJc؏eYAwl0H>1 Id9ݲ$4ɀHrLHE4$pXęT\qE247)&D Sm˜̓#eVsq>~¥O dge6\-3:‰p<1Ig)`0CL,6^ChV[QQv7@,5 Dѧ])#Z})R׷,zNsS Y[JAY6$ YRD?k,EBU IO"TO`r7ta NHN#ا9J+n;H`NZ4(XO|I|̙)6&BXP ?fDzIA뗡Pݏ][ct}[ Vڨ{n75uiC`[t8ACsJ] aT Ln/ L$~T؝Jnc3m2 k!2k>,]q^XY+%6 !ROzx$tMI da%pmiЭ}+&3G/5%o5&BO" F*j1ݲv1U N Ԕb!f6ChDYq,ϔþȻjsjXOcp?.uN7TApBGVؗHK4eh` ^Bic7X%k\)VD֑35 9EPc.@L2K9\^߫?M>&sXՃyGr͇ G5@pABH˛;O3^#Bupƪku ̈́©\N}0)OمR9M!DXݣ % m0b_Cd_"TPF|} HݡNv&͏c۱1’'EO 锦w{ GtXIfk#\hbNqW"u!GzCfuA8^ fC軂YzLQzR7Йe9]MdB;O|fD]L@a}0J]H!$b Sv zIq(1#=1%Nm?D)4éU?dniO-i}G-b?XzQFHEʮ#YuV2ҩP30uL)HC:t42$vXKZB )5wJ9ʖ(Э8Nk~迏k<bH1_0ϒ%S 65)uً=i-> 5k^\߉ggNyma?Mm J2so:B`aSf^kitPw*St{hU&ȍBRf̸!Nǔa}F.D:ie7J#DgP7B\ O D.kݍ*i >K S5Fi]>ڙŅ$/ #pH>$.PYK|0Tج}h$DI7 "Ёx`9ǽv}<Ȯ-`.󑴇Mrnʔ2$BJZ-)ԡc'TrϦOzFIB}+t;tdrh-&.f1 #sSNٱ6),=.ɰgJޭh%dIhvjS}{%0^&ڿ3l?R!c* 6IV Vhm@X] F$r%+B˚JFR0[lBd"GKO˵:Irnfni*ӕDwSF_q0|`AG"{ -]E a#٬j-Y27ߺ>UCa5G2bMθ(9 nQ,C ([]}or?|Ҳ̍ B ~_|nՍ9,ILuBb eF]βF+HLʩ?QP- wnEbz %Vzء oV&Y,aBoy A&Ķb_7wvX+  nnEnN2CӁ1֌Ke8nDH(uL`ye݈ZXts5wAiP>VJ#{Y"F&k_+]4A~+.%zW"LT& lnK".( ( %R~J'^- ?DKऽ*ˑMZ&{wÑJB f;.VN<[u.$cU]R,KǃX_]`?ɗX)?}LK mS|g:5"X;'] ,4K=r/MJbٮށb'L̀Csf S`bn%qّe2ƵZa?_ݷ+9jۑ4 eK> QrY- ArGʐ`stg{`b??g*%`~eS~|bhCx'y;=OZ;ݠ/Q!7f*XhΗ]FK)v,Z+d+3eB׷q*ޅ`y^I-/-z%MU,r H7]1,h>vtO.%J Fz H=F`By}H$ {@7Kuʑ`UB`vLr|st<ѵG7BS5 3ѱ!x@?fBYpNPJFؠ;~!Bkit+ $+= 9a@dƘdU)d}:TYlzn\z0E8ﻍdLLT|,1"L0υ`2D7ڨ-mPv-:IEQ ~n6)$-6^y+@:ńi/|)S}ʬy^#'eH=ӃJC(e"g)\hS3tFC"a-r-žM3 P7 O|O/"%O,M>9>&b趡:! E̓r4J&3AQ*ݏ6dtzF_Rjt <`c^þ*N<^ }>O>q3kg+ )TbBm-t&haS( Ԟ4MϬ8a+XYk+ؒ,l@Hl,.. *Cqʐ^Nk}Թ!Sc<6 79Q叅z8GBsѥf.Kh, ]I̸0\+eWw4:l,aBge/4 q~3]A3mDվhx[ۆԾrXʩ82Q k]e2k#G Ò>9}LSCƌd/w46PN BS2 9{g)4ΙjBY =BF֚^V^ 6{%dstˣs9ÇKg:t3b7h7,Hq^jF]:WB_kuJLdLĶ.Mggmz05Wz=;BdD >_t,gS 7*",9,=Dqj3t1j9'(C%NIg%!pr$;~Ei^&^J9,ƒ"j10#<:@yIPH9d: υթ}_muXrHp*ݾa0TA|I l[1a2#00o S|ДɅ!y{(Qp>0,hK{B虹 zIy %Tz2˰Id@+\$K\Ι 9v.UIui(KO0=JK/'@aĹ9O..)e9 +΅1.jךe1 wȰ Ұa|)jR٠sM8qrQיٗQ@ɾrzrɢzR)el}Cj[.+ާ'f眏. dC)&[" Rza. AS®kJ}0seh:a@_}>|"eΚ/ \10阥ƾHtDjȱ 6HD:s% #)P*u4I Y'pyR\.*p/uj+ eg{L%k=K4cY7.vJd5W#3ETmOehKٞ7-eB4<c61)p3(+.>g9p%wr g孔nw NPfnJA(3a !h>b.|A!x:eu}PN*!ok/s&åȀb1#m%U`.Md@?nf} IDAT /m)M%=JRS\OyD rXĜb,5]rP4#qb@ @+ehv(|MRCJˣ S!.2s*T&r\BauN,-+'JZ8KJeXF>H;U330 .WS:N)+6$ `)6\?,C6kJ+E&302A1Q%`CK6kM"+̒ 2awSKXtzNvHi|)*9r1 ex3i>cS"?HRAXlq/L9Tp_rKCFn@C'@ )8C7'yr:deFY,7'[jj"E48:"z] 8\d[au\sK3k%)M`:eyY!97e`:`q$4,=} hHh`%BH0WDdTv(MPw]ؘfxJ8_0ZsCl4/},JC҄ =9"$B}nHY$8?|1lJKB@ QcLD >q7jcrмlkcPhqM*9Ē*%%rb&r!r^7 msl{uIoSmС|xZ:nnBs7.\0 @7(%'9fW}TKٷA0#2KZ!C'T;ҙ+y S*SP;P构i/*j"fV I4O.&4} _'BB&⦺(#m;^e3S}Xn(XmkI [Ɉl=;_Œ9 @#ENuB U!l1بP=i*S뙒 r@f6dQM9T`.נoNÔ6Kz15M" _$̹iJj /㘔isIȀ?ek,h=zeI{7PIT+\b?rlK?nzSiNԻf 쀸gL4 P"f^rZbIIR\Kg0Mb%cb`b2wP0:Rڇn\U(RK1w^x:K-WT'=Kw u.sǙ!lajZsHw&!|[g Dp eK;K=.*Bh>G`/LcL-8MU0R 5h&4R?]V|f=6 .ץ69@+ҝY%4Oݠ7zQlh(▰FdB>{IcCIX_x55.pUn&X.U 3(g dTf7%ej}\dtpcTO0hROK C2TLDH`Rc49xZfՃ%#^h!^a5SIJHΠ Jr! *.d^1uBЅ]KyvRB@l" lEU(g *jD̘5f~ U)"3>\5ѐJa+:ca_KäOm' %\7 n$@ 1F i/ h:Ucg4_Ndn2E0νΎpD.\- |W`϶8eX~PsT:SDi9Cݏȗ49c(9rXVb \rqSc4H\KPؾfrB 1wM]l^fg-kfv* $.Vbx09Pu}|W| ]Kg n"> ˖ r%V) uŘlN'cei}@^SR##\. c *甾o2cUDcpͧm>uY]'̖nf~ r b2 0g4 KuhV:[o_M`_cD΀_(Da)@[us!q!W'ϼAz[zI.R)p|R".Uߢj+ %o7SAYN*%r}X˂샰&l(K@2%!u)`uX71DfrhvQ5A[b,k%a}@UhA _v}vM Kj>ceh42W*υӱbIJi cz@ϤXȌ3l̹pJ )]"39>_J5`fFsqfbz]n`{ev.h{4Gl]vAxL3=1ʱ$M2zkлO\{oHn2Tv^o7e M5ZM{{>c׫]&{$ud3zcz?vmtxIf5M~K>Z;KT=rF?D2^ yl NIƔOzI"ECc_d&4f|y?` SkPm1b{П;? oePSM hV+gkq X{u/1,:c+ pf3pNDHa;h|杗gT?w]{f2E{<6R K t~K(U4|snym׬77֚If JeY<!<H24%!?6c|)^wjM&47s]?'/9g֋Us~vy vu,a!HD@345@=@~kRKx"0f_6秈63Rss0K07|m+-f/a9p:=U~BzfWݞ]!csTZlԜo`gLɪ:XUxB % gd hvJsDgm\F c 2 %JN}#e- }c 'DN1RL1g%&7_9:~jKD?޶sl-5K3Kt{4u@PXX(Tb(% *_A4W$@fѯj˳/p}).Kqk_O ,,mcd+-\ ?^R.FB|@j+'WF'عcԬX݅=\N,F$cqj?JwR3͜)eBSBC0ޢk[w7)TI}.nG:Qץ;xPvn >Z Mܒ/O'?J,`6h6+lќ ޜ!2G$%hf0uQ'O,3ާ(*S Thڏ~'qmfWo2濴/ Q715wkGg}#fiblb_k>;@յG>L*[^^>}ny2Wt.? UJ f]~vH$K Cx,DOi13:JR嵞;f2{7Z(Cs]=r}1PK1֒q 3?ٷ^2T M0TGU' KPyP (3{uk$z |!` %4Іة̖2襬Sk94Mz1O"P5mhrxͪhB9Ž pb}uk%cU*ؾ[d+Zˆ[_hvo?Mf&8vfw6@7V度L,S22CL6mԜsQmS3XhK΅eJ13J'3=Y}w~>T_&KIZBl7Wԁeb!r/ %sBuZ=>7& NnϾxvoR5hւ6͖] d(Kf23wc! :$e%[F(NejP E%a|*Y/T=[DfƘ/m8n56S4.5PJF;2㡰\K66 x`6<5@28k1͒=O `F h4??,88Hȅ >aXfnbdc.*eM=$Ra>=n#[Wtg4%6^DT(҇G7uّ;ZPX'X)T'$k,ʹ󜭜< s@V#gI|,ATͯ#?dWۄ3MLec!vЄLDOtIt\P2T"'2@l𑺨| O==f}eޅ[[ΉXz3A P(.CnD:LgCp΁Z wh?;1,PZ߇Y8 :34ޛ_n{S${.3׈#g ss!K@vИL z;f<jlfuwvqmޫe,=L`2PDf4(21śyn4' LxNxA@ C;W}گ>opx ]"qQ)rz(QTqW俳yKؼP+]r8lyvqeD_0ze\V=x9@ه9z&WnD/0P87hKwIw!cǃt:Ȑ [ JĠ iK ^؝՛Pu ւqX|q ˸inIHD.e׭J3 1 n*نXIwAcq1|.@J+<*$@!Ç\s͔02!p %DCF /[Mk$W<%I-qF8={Y$3dӳ|K8uX. 5d-J.뺆s[l^j T2l/@fw|v0lClŲ GkD9 юc Ux \Xcϒu-5=%ŔVPAB}fj~W5cy;^L ]ID2&i͙; e@LBz^݊v,sk'G^ .]>aj{~X[#c)S3Jk#)m,iYOk|wx2&O5P Q뾣Z/ IDAT|1^&f |>HȤew`!\!;aN?IdGpϮjˮ^i`>B 1fM 4v8Kk*PHo[Ϗn~\d:B/5j6 pMd2|>0u(3= O86߳Xmqnk,Oy,(Q'mӎ$ɜiE4rR&)O]C`0x*\!9ցɢYb嬓-jvk߀k+%q"`2%:(:Vs26Jqw3{fr%S$tfcC[[lV,0#eSg̵nSY6Mw` p9|bk[a>^L9‰]ǓH]넌ʔs3ڄn*ݴ;oz>aa::#ۨ &1ᐺ-,sxyvvLT}|4?59*qIv\ҪI,*rb;ZG*)yk9S fy{~9or>h" Sfȥ~9:ڥΎ:L#٤=`Zk1oleXnY$u;D΅wKO D*ٗ$u5wpp oTv`F;T%80NAQL祆p2WѮg 8s`TBlJIQ*TRVIhKkM!=Ř'>fz;nOn4ʗ)l=}ܷ6K LХC2oRW5^p=r5*]\rFʇ%LX *dG[{l>_ 7,8˔R 3_LpE jdF 鍔C- 9Ia3>}͘e""lw[N0oűS=?`ʺKLNW2)QFUP 9x _PʖTP}I8uKSGdv_:: UKTaƻ`4֨υP=tiq;Gso60.) T'`* Y=$̅)krDjU$p OO1p Bco,`NXcҡh2_Hɞe~P|Wo^i,wmxo8EDh-@+}rK|]pazi_+OXx*<) !Ʉ21 YBkv>::9:vMUЊsu將2C!&eJJ$B-Y) 1σzK{~8aQBS9C4{ $*:{۳~?7\#axk‘ xI؞ =8>7h4iFsr]#4 ,@>#RAk?PfPJf"d*!UE0ՕG[/8eW!ݝa 3=gCa܃f( S@̸egű7lcbaHT6G`j2 ҵs hhǡz\>&Evg hF pRm&t7^}y𮍹f<p^XHߧBeAw,H1m2v׊'twtsfttG+[L 8ga7Ky;AHJ3懩=`jg]N$_]tֲ)vqZelakf` f\حfDŽۯ1F=0g1D8b aJ}xS,)xO(FF_Ao{np\J9Ʒezhw LoVsʭ/{2Vqp1B˰$)H<, @4|/Aw0C@iPBh9oհ65-g謸dG:IoG(rk|t]5c=:G~,|)4 V/``wx9kM֮[]0fA*,%nm7ք+uKg1}ꀣ}'UhXKBd 0Dx>C_p,jlf_F wMcr,$ FDAtʼ|ϘfΡoZelK@1&TJ7^2zUVfRc\[b˳I(d7<`jДa}\:7+f#bb7 f܇oq/Wv h)P%,7e PK,8cRim߆a#2΁P)e !`@B]<gh+cp/fA5&xsnsq?pp" = ZܥB#nc1y:ػL ͻY4x_@0sBTc,a1+r-L!bP*)Um|&UHN 鹄P9G4>g϶N9sXc#^H$}Yzt͜Q*$@Yڹk7^͎ ;o669װ; dڽHf˥.f׉m4 ېGz9BH:I7 ſ-P:vakЊҌqRC-}xMo`;kTayn4kSGiˑwͩa*kʦGЗ܋[Կ/)w3dOp>` f)D-eBHdCFh|9K]%uK[+81\ӉQ^Xk?p*,̻rɡzk͎T&Z.A*K*u OC16fȚLfƟȴXlfٲr:2ʖp\Iʮ/䏵ol|a$Vp0ё:j7Za1-$05mf%@qFFf\e"fyfc M2xN)HiPNW\J;$v:zRvjP bK\KuIDB,t[r)́}K1Vy,^M?  &e6xleX85fl,So8pb*N+flNW`_w-C b33c˵j,tGp ƻi@zho5J&^) ?bU!eg᝛Œ^zPך6HHZ&ec0J=T@Yy iM"t2rNyl4k&ipQ>0\;(]ov So,=MRW E}9G;/ۡaeI铩~Xj[cR}7o-e`fZ+NDFfԁ#|=PT4h|zE M&pbTL R-y(߃`J, Vn u**(H 9d.m%>;c6ɼcm;-ӭ[t z72ڱHDP_Nk-8}m5Mf+0uJ UIN$u;%.EK5S*pGtX_uK_Dn3Lz5w &`jݔf1WO%r!]3D\bIaN3z4tV7g ~2aʙ?Xkx~Ɲ' fJ(F:[Z(y?SȆ2Ko~ޘ^3>R[|umjH~m. JKsR,&;+J^ߧ3nd}ބMNb?2ΊamXRYxND;ҤaR]3%37&xKʀ!ׁS1uJ ٓs(Vm<Ͽ]D$h;ka5xM] YB$Me\c&H:lcb䁏Y1M}Jn/U:sUbK=*I}~L3铥ŷ hMn'ʾ:GcAw 8 !fDzf'\xq2UNHtG3%ra| Rzhir{ҽI*qF@D>&v[6Y| e.,sev*+TI-@)74'ŧV5n إ<t ^iǨAME_^6+*tRvRn`\1=!3M%Ɏ+7"mWo2 g#ʤd2Le6f9&R$a$Ab@ 4F]յ!"2z{#g^Y{/3_fddsq?kM:Gx$_6LdEbEav=L;>Pܵ\B`ݡvJ M8yw?&"=kqd춈ˌcn)tC2z]rzov=)&Zg(C1D>~`peYIy!UYS:$EPJ,)uŮ,i@K/5~*t~SOCi17`>̐3bմ2eŔ@ SkDFm,z0-Ly>TЗqqq-6$M˵b>nc)<ɑ}XPQ;+rXU#m)a@15}֥K_З}3u(vdKf0]F(9|H @V8^-w7bڋ a/أD\0󡴈}^-C14{ G. knuj;dxAa^"PS]P8-o>yjss?nVk0oFF% {j5Tݼ4syr7!=gB\Q'(4'w_oBuh2ݕ2%3Р(S*Vi\i}u* 95qGV1&AWg^kgMz:ËRJcGGޡepP6H%] +a&v[`7=*8^ ]}V'cb{<'z)B.h zRfWJ4\59v3`wo:9N0uzӮfbO:g Ñen8]f$X)99mhaPJ.Hq{ۓӯ7eî@[RZ&YV KsnVÿrOGx44 7l3Lœer{ۀcwd|bSvd1ck]č. if࠾"aGk ]``ȕRˣՎ-VwnnPIx9ZVJfgH]!k|9 _ lI+j{Ksz ATORnoNgp(2k:R9y5o'b䔶Y_k)yb2)33b)VI˜U8.;/u=nv}c1:|LE^3ARך]LS~/1ڱ`T%Iosw@L"cӸL^wAT*7Z:.$K؉D=وzk5=Yµl3ǵÉjB*@d~:}70%X21v+ļr4c!$2&FE1&A,P\澔H?b^LN B:YOjʘ,F{l'ҧZ6XrfUghܬi ۳%v+ںROo.:*=JiVdMvpRdrk 4"bM.b4-hEێ`#"c S2t~֭:Dx&(PL=qn!:\PdDDcMfoqx`뮪e-&QGVĸ`q x#pX S$_o'/dBf+Z$G)T:̉\:T%]2 F2IB반2n>sD̍q^K@+p\HV.ڹ5pcN AMdC=ݛ<]SKZcI.\%kŬ9;@=$Q]7fM^5x0#'=JT3Z<#c`YsN.g &Y s2PD49DPhk g''`~r(HHs ]Eu13c}Ll$gU,³OgˌBܻYi~(k,Y-0Ji,.vmlתaERy\xm&''QhWL Pux,sTcrY pz.#gFlƌZ]"ل'p>`029ġe2[˓y/2.8!gb K5JlƝ=c/gMb3)ʎ@;Pf>CRѬRmZ@mRxc4l'!%82vTVͻyf˱%]J\kcԌKx%7UfgI`nFYmQ[d7n Bygj_R uz.dB\dlJrK%G(N@yE+:2')Q?6\Of*3wf1;z=-`9-k̸UR̽@e|9-ޕ^P-#NKL sJ@Sˈu]R^r >6$ct0vwךօ[..b`uupYU.G^>UMJyRy@"?b`]-r@ fY7^$=3Ne~2 ~}#L<3-Dl*c͌޽B1Ԋ29V&U%_5WS[J51>.[sJ,n:צ<8vߣf}!N:2B0d AzxN3Tg/*?bݛa}!ڒb]c咩3!q,ŊPl8V)V#?$2̱w4g.KyAMFR1S&q; v9yt0@ UQ]{oϧU@.9',m,m5"X p68pښ9vATeEK7g7;dUD #jrf]ja3!~\sE>]=H.{[TmvvcynPIEK3UTf܍src,.8=Z(Fɵ*n)[YF-0_24wIMhJnoOKߒN0C,d,9PmakXkp|}2kOX`(1͜IWTj ;'J3FsHI 17P^93G\/wɾGv~pe !"ީd-lְ1)xKĞja }FK;jSn3)D9zbTsk5yU+SϹNȸƍ>bu&2]x1X]-t_[\uI-'*,t% Hn$(2Lc|MI6\X_A ֚׼q)BXWZC!rrD?FhNlIL5jgb:IS4MC* '5:k-N`\EIvX ;0&NXԀG.W36|zi{5-J,gzY 4D-C85}=}i=R"+.Y4ˠp- OF #1jvr\t䆞y#֎bU zD2X\?~ f }M͉߹N=3?)@rVnfd:?J|lɌ$b^9*$ׇ^* ˏ s,{B~ãYy%sDNhqv039ptb,0of'W;O=fx g Du(cN* Nߦ^g]M:fCh~gJ23s5`<>X{v5x3}0#o$ֽ%+9o9o"EfƏq`jBRIVse@9Qb5l5WT}B+V`<uZ22v} +%;` =WɭaAS 22 zgZQ9^<*$ھ) (3CzѼ щƐ BidaaDQDWj_1%e< | ^x̯S)ĞcjYӴIzqAahw#I:"(.b6:k _zC&*R03:G)FBXC9M(C3N5 LjFa#2\9h4f\gIW13bTqX$=p,^)^b2(a¿ /QV(-{xޚoI-795AjsM[|L3&@,0w Šcz ¶zq ˄ 7@#F‚K*MU;]0XdU/3d\|+rGM+hO-"-Ё8y,|D1"' 9ʄ19 6T<]3Ҫ<cH\uŝɯ1F@Lwʒ Y5UK1sp~JQ%qm}x5 |Z_ފ6ޱ"T-4(쉖mi K%(~E@NG ۧ͘s']8ߎ2*j Ǻ| ' bF$}:c Q '/\ >9.aKZZWg&:$9Ѯ9-{ za1܌ Cb&LXMBrݪM&{ \7FJA K-$@y {%'2xopk9޳01IQ- ד_7% d˩gp,iAAz->7OH\ƒg)ܟ=G0yZ %81&J.md4B\Pm-' yFU\P'2`q'<qw-"9'̇^UZKh\"tߘḏdz# kSFg0h&/\i_GLu=m JjC%#6H.:ȝ} (=MO +/ >K|z|OpJ7/YCJD _2T:Lh;m(34sg,9(9GϵsE1$]FB:7B QTȶHZh=&:3F)@5q:GUZ #<,w}Oeҗ#D82y,7.y_K`)|JjvitEs\~V >K3t DZخ': I"opb2!4 RV$=X%EZ-ӹr7,{#iy̏!5Ӕ-4c@?,%/D "wь)NˡDJa0B#)LwAPxK%VKʱḷӷ>[%âW~{9BMC_GH`V1 Z=ZRG%_`\(29  ̋Q5R%K*L;G^Sk"#K7%e3x$;Wq^X`ɉP%Jn]l2Q>2T"k>Mq]NSc ›ZPkT9,R.t<dCc%逢3$vzM4 :Pn*DFH yXDžL\Lr3 \Y*L#(CsR^1#r 3&KQɋVCxEKM`ދ-])K}7|ZܠfT]) X]ใfHTKi=wkb^vʔʋ Xvd>E+rVg\"Jϔz XR(gr&W2͒8'a>E ȁ,kЖa3I0Y4q jKeH-RX):x ,woqFCc* h$cƄ7!R"Թd$պ33Z`t%I+eY[Ƚ kQCцn"sU4C_OiC~DteYdVhpaZ9bIӴٱ!Q~54a3~YX6Jyd0 -3jƨ\h2zUS۵fB֋Ջs& p^*NշFV4B~9n扝9D(BCYi7- *pgftlD񔬦YG*VX:כ EiHcN 33Z4vӀlS`(zy*.`fper5.ũB;xic%F )Jy97 {h2'$]ȣӓu3ݖQSu8c$= _}Z5Ыpa^T[hgX|~f:e?2 `Bkp`„8's&B^@s"z>Ip= d4ˎc+%pM;J'?zˊKܦ`vП X=Kii+a.8}\`0ݐ(仌h 7O>|PkYȀE,AᛁTLv\7k4uK/uD͞񓸽zڱ(hWf6A{r~V974ox]|> p܏QqZ@!{܉Gp/ujpuS"ضi,Mi[\>RadCҍ L#*9>2.q/X6?<x%ֱp8G!Cr^T̩j sch0RMcixo>Oy@:)R^KU/2Aj:^cj0q8+')=BL?eG7AxCѥkD+k3qnwǒU ot, Y.ysyNmeAA-j#,lL "1EbUdyTqp?nD`X&dyrHUڨf`qcdҁ_hhVCnsхvJ ӛkc633WlM70T֎(`Ԣ#h|vɔtX K8l>Kj=ܴr!µ).;hc G|^,,{!E+̫]2&Z&hG%YjJsl(pԪB `w/حø&"*9?Sflry33>0 ӤH)bMc_vs 6PG-4=a ix^P%s%W#FՖymZ(/3sidƕBq}뷔-n.v|D^5jpG 2 'q2bzB e0t'>}}xlyf 5}o5-Pu l ͘F cRXd/{QuuHnٹ̽wM<5A( Y Ę%EV!P݋+ЭL.-&CY@,ࠒsH>9n[G SY%CxjI(e|w3Ng܀ujG6 1$)Oq*$WM@T0,0URJف4YJޘ,9*Y̦$%g_F rp̊ y .{ӧlF qGމb9Y2S8K9v; !iO j` ۖPMdC&ݶfPET+;ɔ'w~T̳8OԈ3Af^SigG]EƙYjpù58ttezR^6~P6EW=dY)3^¼.u ^ $/PIY2a 4nWfdN_tވ@!Wb)R2 QE٬1|#vP(< *_/(REXpTi-'>TO!)Ej*ͽ3^~FE6ap$^|d{lcbܐyh@PoyʧQu,^E}tS5GsfS> CAv@Teg>=>_*'R+<qCId,z_Lhm`5^Yn)Yy 799*omXDrA|V-W|HD"5#SID)ɁܧY^+P>?'txjF&̂9CQX / Fz~ Φ򽉟cnQ{Mrq?$QŔ0z(D9-O&:bi#%F今rz)wCX%y :Q] ǝLB\j^!B gX|](řNNN[Q첶V_?9mOH!5b b_D;#4ލ`ى(SdɳaV bvKBF u &l$7wcybۇo?vunj,acBn.LKHfh~K֔re&[A OaeO?B8adu"\3='ty̳&tv!3zv>8$yA5tpg};vxOzԲR#Q 2KEc3aeZw49uB辰g2LOn?prlTOдC:mdN8z ֺ178qǭ; 's oлe%&@!2cCC~~~=0Xq„3.0.8 aJ8?#jY.~#1bםsl Т(dffI4%&Kr INP`&j L#F1B%['vBZņ|oG'gSH`3iʟlƟc>)& !ɻ'G.=ڶ5RZT==]ߖ;=@g?LʼMfәrɌ=)/\&߯#JfӉS_b_Ra0րxIfK^GsԤ⎅H-m&AM쫄\̤Bd=B<S9hp͍ͩ'?ȹRx*d7 (Ď$Inrpz>y;04 Z3ܸVefz=csPL}5%  i̸C倿W^`iҫ;ثO|LB XO̔7)zO91oxJ#~N=~B;5(sl—(JN| -3&^)J[qOš%%!Dp|fGO}İǼs\Œ3KLDNBFZ-$h++:-wKjSkE0Ā8]/Lk<:-+Dg [Ґ| ]hψx'nԚ`LqnLC? C23NF0GrjBN-b96Us&6DʆKg>ajF\.1HY;*N>Ȳ)7*PsQ;Tk)o4ÌN)@4rV{#$4P~Ǽ Ǎk<;h|=6S;gzo(;f\[~!=>0k@([rז '/Qh =I"L?'y 0 nh!v" Eá&OK#߾MNtʎZC0 Csc/ߣ3ȵWbGv݋x?nCC"VJzaMVn)ǽoXr(3]]4*5 X˴.کeB{C#~_0jP Nsdl#'q;Gb.D3#v${euMׅX;rFAI$b}T8Z=$\qbd^C>&܇5gD |]}o <;.T֎]rdn&C(a,ˏDWUy,QI=|ZH ]D%ص<Ԗciu>NQjV$J[̧@Hh88x jyl!}io>uqvOnB}N,s !wUy9]ȝucp.M{60 i(Y `Қ%ϟcKP.ֽ&ea}5@0kh&2zH",~7.Ha;*8P Hb=j9b+H,to,-ŜU, 7b'ik`,Bn :\ߖPܛs䤴 !D8GW⬒-GZ FK~ײK %fJNjkTbjxzTO3|=w32]*Vfu-RM)l:7;yLDD Gv:+B}Þ~IH$MT?G}ѩAP DAi;^܅XS`  %6zV1QV_zmY-Usy%luyz|:ߠ$qJĢIFx)yG;5${4X@)fgQ0!Y."ԹXʸDZ +؊`~&(dB,Hm PfcAy%B'[tfFÌ/ LUusKu9q&w -o zAp;{I5B"3j4d-Jo\i2-Y, `J~k۪7gtBV f:DA4}8A(s]d4s1$H7}-U3bǽ:l! -o޴Rذֱl=97/>XKLfSQ崓MŲSd?C9ܹiq}Դ#9ϏJwp?[Hbϊ4wzӌи st7hS1Y.92-[|Y@wU.!KFz!7eҀ2J:MKTN3!V̩6s#O}|ɛ֠2uiפ}ﯝ;ԋ}v;uN bE> ; z&Z|a-zlz%r%J~a:ߣLÁݟmj?w*'DBu>GYg2"GIz>-Xѿ(u6@GeZyÑ%k8KŚN'+dn\'s]MYA/~0AC@\ғ6~pfq |[|F (-;:brαL3U0L뵎qz= +{'s''3㝸Aexge&1W橷|̄0%xTT-IR^riw%y5:RMaZL$7.8XmޏO<: >jP:S`~Nx qE:D8Keխ3(jKJ&-SK+,v[ A{ZIn`pߏ[<̣[sG@hqD0oV6Jls=pT3(2YRN9 X[ܘw1;F~c߳P-.zE'm?Hc1LJ suG+<ΖN_TTLI;L2pg4"o_ NxVgφu9{䕉K%P~po@ !uZK> &w#qggI")2T"6GKThqrjN]>!f# əu;I\-DKJr@o~('Sb;[߷q rpIDo>6< :L/:JLF~3^ i4AQszg7h@ǛsE!{!1 "'P;|Rw 'C GqB]6nK,@iֲM mDhmD-AU!WdB%vLR{g y[4X fΠɿtt[] _n*x 9ئb\Xv0e +ڎY=eU@= >Te 0; 0ڹY,&wzLg9pM>p6eq;p\6m#] ˚b/srɱ!$@ʩJMLS@!m .0O8 =:IS8~([F1ɩzd35MZ]N!u4}M8k|nGċp>|B)DRE,zV;ĔdS?{s6 aTƘ;A\[=3O6c.igU &Y_zgnEnr*v"N0^A'0 YM%XZyc-}!w:i]"PLߥB.; "T?/a&m7(4+yqfuĠDR<K {RT9g&=4CD\vOѮ9O3%1hW 8'*~Â37x<@MQ-2חzͧi.F0VNSinv0FdLc{SbvoĆ `0н @>9cSnLRҗ&|h=J9MA!3xGxH4fԲc̥Ǹw ȑZI>\DZǟ-8^%e0MX1缻d`|"V0NF@XYM*QuQR] ҩhN&!u;Tι۞k%:hq q< 4H6abixV8~=`!CB+du^F3>2iCcF4ҟ[9s js?zsbmL#g%~qQiԜk1A'=|l_BPH;NYt@ pm3Ѡ[#DZp-W2y(^?A2{& +pО5 4$lӨ-~3&(g`ypR BgAxN ].@3|4-!Cj5s E߈}ԓUNv5q=VaN0y6;EصJ^2+Ts.0@{?V3h|kAfbs\4_#Jv4cm'`O[~ ܜZ-\5&!yȻ)%N<.[VR`L|3,4RnKwK/o+er@}Jz ]r!b)R0IR$L SF0QYr3̌ǟ[-u9.ճL5a+=xQˑS8U HuT/s;!9}OC=K-Z ' R ",;ΐNi˻kjV'sA9FaW-f4m.p"(3MD 4ÕN5 p0bCs[+;?xW:9pQ]N/஘~t۶sH̜?r;""WvXVh!dD]4lxb6ܦlGGptWz hX=! sӔf`M7p ܦיCA\Yʾr.5ȃkUD6 osLIQGV#r]? SswO~b%sDer ̉L`(W4>Y$Ut 0򗒈9q=0Z;9C\ dwSD}5mwϾ@١3ˮ pr{eR՜XSvr}yO 1wq2~Dq"Cu߮ct-Y]Y,ӄ!2ׁt"В8ӄug h@4j3C}3ߏ  su!Q*A)r~ =,XN\(8K)Ǖ`JgʚOMj2s?ehIR!X$@ĐrDV'Da h8U*phR_"*FB)S](W*^?ثu xfdzdMj32_oId&oma 'Q序T9 A&+JM@+ CW#4Ɉ42ТšR ,:mhurBD+N0(X1g؞S_6Ftv=25J1>` 4/+2dX {D"ƈYqVwf'Nϖ?nhXYϓphejz0Y1H9F0JPH ] `) ɺLiR {`s[{Z25Ehas6LI.bvA{rB!4Ư" 1cZ(^Z(CGˌNl-I` k0XicB>ˋy5H"H&t?~kJ?,x9c~xGK9zeeR^ iDhߎoLoTTQcUJE(D,+ Pȏj9xƎʾfI* pĕ0 @VSdal͔`} ႜBЌ)|b t$?Zs#0~D8C84ap[=yRunblE9SN8B(-V:_Uݽ 94(Z4MlY$% ~q%8a! %`APdK 29!97 }[UC{V}Μ*`cݗ|o-PtB| tUgfmlwkATg\8Tۮ~`9JLM?h-M+BytM 5: fRBMhꒆ'28%jiJ,bn"S-WI@Ujwѹzc<| :"oq [Q;nמG֡za|yq.o$ zLȔ''4 5A)plڦ $v7vݦR,@s2+v;43rc)5Fz{"wGDK }BGgO<%2(WGoz6e2#cqd"l:ntރާj.[]ޣ l}EC^KFҭ㹄q.[Z?H'W"L+׻9A3% xֹćTJ{6~ek[S7 U$R\Sޱ)/9 U8cy+Mb|-VbT0GCE<Ơș""やA:J \M"»oỶ?k#6:!}:%yNFsywE\BpDBvJBlϮ;F!W"Ib$8Ü<'e)2꬙At(v9`_{.|_6d]v-w-z ^NFO=ǒAapxaKi;`!ԕ+7i*N˹|3G"E|E"{*Of\÷m߰[&w$4m2Hʊ,]no `o$1}stXlo?pʦ5OԈPsu;;f ^ĭ; T@O`1YP,-X:\: bFN\S\ǜ6$ 4MHqB B :(?*$'Rj)!$+Rlp=q<{ g7wmW`fNcΪYuF)dcE;۰g㻮{:^'IbF ctnWԃv.fv-~˶l>ϕ#"M >阧fjη;ܭ\hf'%[m [ !B hXK2>h"hJƚ2%k/Q:;88FެA |]lmuUfR2hvGXUh圷?XkCəz8ّ#qQ IDAT@tc,&vF!^&Oa4 fTƀaD|ם3u;E^(/xX$5܈‰TdzP8~R `7[? )Ѻ-luUѢ+4L\`XYlq(m.1<.!M]#FCu偰"fbqf%Soռ|f۫ k9b~\-[e ]P:䫪j_8ؑN^ Á9œs"z`Fn;:ob5x' S"72OkOuTؕՋkw\*dq#דU׆9ދK˹]iIZ<J\EH2X&$c_ eӛK?P]Pپ8 ANs%{ݽm>񪙟?1w> R70^W57E]XJ霃1ƘA79u@4tC5:P8qoTNH 3;wlTv,.A S3wn*F9 Q{){%Jڽ"jʊ ]H+!FܞQS$KBxIE`>^p!JGwQ;qY/7;3;nNj Z Z,z.l+16V͙m`кrn^beV4lOaԋ[[ȋbam$}Hz[vRd㽋ˉr2a4'=Od.|@3G$륵$dk!UnaGagcv$M=xMl}nKfE;jދuIɉ\(1JX^rpNwQjnju-U;׬/$a;qV'}|\VH~[#?xvrZ0 oT8-k7e_?ǡ3ҹ-uH2&!%Ɓ^˶nﺈ6u2T櫏6!֙c)VRT~!L7Ʋ]Ycn-!ݯHY.Jol1BYk?Jað7]{2H$S4s14<-3lz,ٔҴ ว=5Љ}ٰ[2fNDw۞lqzMi{c͹,)au.CJ39I YK`WRT/6 |;Wu`TT&K >YO)N+ʅ<.Y F*{;;rXEL Ld"u PDuE0+J`` Q`b&;'u-wkP]UCNu; THg{sw pr\Y9Y Kҡ5L5[o.Ĝ` ½P@+s04+~$O[3H:m';~ %Hq<q>> zXc[c$3F`HiOM=NdVP;;z zKdvd}nl)!sI_MK馥/vșj$b!f;HzA5RIO")w5߭ Z/p+_K2d0ABrJhw4s&M&n2,4!$LHoRlEGq'j ZCmܵaL%P7;y#|d4C(d/c,ɔwd&5ա!O閥n,CUoqzk!p\Ǭ,I[jKq}"iI腖T(XeL.e9|L36cRT?pX؍xγP_B1Wpb<@=V wk0.It .Lˮ3]gH&N-Oecn#d8Ogr} RVz! rucQn)`I".gɂm c?w 4Sר$)rQH Iىd= ܎n(/y{}[դDPU>\O<rN* %xQ 4T:> n%@5\F~ԥbjz~gBX_kqm V$ i7Ȋ{`\ +Le9up"ȁh_e@q< {<-FIJZcDՒoɘ@Ab5ۅxz3S6fbIVjR'B1Cr4p>\w87"e<Ԋ(BVBjiN#RV }ߋs~-$N h)<ǝ.StjW:̄K=h&~[ҚQɧ*}Cl9ח;muz ǎL5w40eש=:/1ddCb)I96B'lBc~(5wg+jq 7߼(u{5pDf'ڲ'|X0K>@8QpZsw|Rm4iDYºDH2GqL|m36kI%\zv=5H !TNtϮ?sZttGL,MVv3CA%`dw0;4r\w㎝c\]Ħ23Fd}J0EI!lD"QѕӅH&Fs@?4RwJ%tͥ/)jIxlq(pr 4Dh֋wrW5@54;hOs t , S3P;Mctɧd|7nv-¥vp#X /N'%.)'NJaTIZđ4{ ABy[@3&dVqc}BQ$!IԜGsBXN8og#rQ2 /u n«=$2fWY>UijPI1mTu2==&.TǮ}c]r$ɩo1!\-k3}k1eg%H9ma_JV+ Jɂض-+k.n ]}: ) TҨ`C9>2ԧi:C8}8 z)[C^'@QZy'9?If߷Jc2\BJH?5 !A$1&&ēIvugފP{tIJ{\,sO*sS.]xbk[2DD&c Y$ irg?};ؽ}WX@?@I^D7*pd.ӑ15p)߈dw1ZH<5)üMAd fkoF(e p1!-o-b {!JBéY7]^rYƂ23ϧwg!*cy畍/! SF:Mّ,&P!_=@=hzIDV$xs)zMS9 FMi =>C2O`٣gip%4jk* ܈=p}rw 1WfĻs%%Y2LeA#ۿk(sZf캑7d9Q: 19Nw ϜY|b8#ȳHl&CniDNw? _ %{X}B 0ZuL=:mΝ";s./U5Psf`?6w(ajӬ@=f6\-q EQ5qah1{5kV)GX0bn1OCsŭZ%uU '"]؟ ]該ҝ 5p)u"z2"^Z5L069svYե6DfTݘ̧i.Us Tn#?0gJ1^蕗8)ixzw s evo:`IBʩ@DQ=1 ,@a'k8$$S%}¡tɃUdTYUɵ=fr"lMu Jz( K`ֈ,M[I;q]pmjUXi7۞mv} _5%8T Fw R)H 2jAT]} v`م|gtW[ܗm0zk>\G# Хq'"n~+b [I;NlL~IÍnHkf9*'C8̣G- _+w RS&T$U}Žmm7 \U4 s6`[IM>I\@O p `أl# VG!vc]vapگ"N69Ԉ0F>^+Bpqҹ89}mgӘ) hֳ V ؇`8a%U5j jOۅqx+('π7&.^[fyRRoWnK(zvhĬ $tH ߘ!A6F^ w(Zc@黀`I!p$s-J=Ez&, @Y +Q qr(EeDqɐ{kȼƱFj5=z@Xnpd_ 3Qhߺ 4  e"&GU"Y ö5H_o 6L)*@xWL{L"7;_rWYeCMuaae"Ys'iV8t>Q@[a3˽^) SL*Sjw-<OL%F6ꂩc%t 5k0-3BЅi"'~ A>2F@|^u(vobڣ 0v nH2rT'k/1,7k$ӽv+YF6*IŰ@g&$83L$FiaىQvr̊Wꤪ.? I*LfObp4lwH~˨RBˌ\p! YDKmWH: 6#&kSv]JVK00̶o~DPNk@j1 c4ʆ%BԌs-J_cRD##mT)Pѡqp-Ye'B%@!?TaΜVv8^r,I+ e|V|ol@6vJ2r⹘:' 4K]P/%&kfℕdfgűO25V'7e?%iczSu u<%tL g`9biS,Tb'4-VD;<}k {bh2,.p<y'.Llil$#Rz>+q"&3Jĉ8@BFkrw0fŹ9uؕ+Mb&p |]^cv) ;׊m.qHޕd!p 9ܤ'gB䦄ͦ]f˕|;)6 eK )Rw (%o %[2Sj(IS%r  ›,r7`pIf);o /_`e-Ϭ_`c87S,W۾iStbm;6s(1%CiNNmڧS囀f2 9 cɣ\\ Xr@5dEtYpD)BGS N`tv5y s)4 x\/_ MNK KwY=?`fNȁ U JIǘyGXohLNn~ t2/-H 1[n-vɍ1bU&Zz{9s|%^^ ìN}? 6*#'(*2:w(\ 3FJF<,c9L]xV8@89: IvJSdkp/J>fX$2|-I&&hYgBVqs 0VlQ *ߏ7Qp R}'K K={<0O,P9{W"xpN!"f!F '/?47g(dJk,wBm#4JVl/Z(Փ'4'br%/)z+.bT~xฮ&dt )Kz<.m>W|?YtBHJ׳ /$hȱO :jNV=dʙ̇brmF 39aOҵˎR̙*#ڥmy=Uݳ5;xRCqw؍^ Hûׂ8y†%wh`i \ilK \QIc46)IDyf)Z%/虤Gx۩ZUlTւv8n}edXʤSDcٰ24:Bҭm,0tיrr% zgHC똚R @hA)]Ċ?.%f :K6z&Y./:@36$T3-I21ໆQ-. _|z}e] >AV}-l@sZd),Bc M 1E,T3xɈj eͧ&(/BRUJH-@.{+7V`"۽[aѸ!^>ɟJ>˖|‡DX/}-ވc)g ux,yo~Z&< <2K.K2OrڥǮf:d p<_R.u1'rBx6(Cu.Š'5C(`?HWH' Z 0b5Ckn__{cWRpp7>x 5&@T ' Em(7 rP"%8ďH-..y0_νFBՉmN[gq]1^j^^[noK/Bڢk8dH}mۃ`˘{nW V'<ݨ4 *2EM˓Аf&r5#0* K/t&;?߯Û}_ ɐܯwm;S\k|0t!UJ[[ opI5:+!xKp}"[]JgjTC=1gi@YEnxpagڙzek0{3r:;.E9,LCĬX +*Ė1ȇr̃Vuk8=/1܊F_+XԆYn1̖J7"9I'onG4Ԉi@i!u.%O=5]r*<3ЬYchY&uJ0ҙbD !U&dZX+:$(#9Pb8S rk;9=0zó+@R)#}D/o+`Xz@ḺbJLy 27hT!*l]Yc8||'.r9309PԠV5<&\|.3%O[/7V$ڇk8M2t_ MX bzYd/=Wے>O&r[.cfTDc#qm"ܯ1-E+0aqaot'ޫ*w",{[ZF+#q&WLVlg!K^*ZXO/ in1\G%]z_ 6}k 'HB^iҲ+4| 4R&< 5k ьAfH8`[aB% }kKٻ/ $ęK.P Z?9+ ri0_#tbI`3ĥ)+q3z^N_Lxr#BrsQ'4Sfեigp! 4$ -)* 9'D=E2UQ'g_ci1̨=J3d~ZP'GB2J0+L⼵"l=nCJgFݶB$!9bh#Be錯`V|`^ *R:%/L4K8S#jSޓ!-]eWBDhU@+3K~tBf7tk:=F%V;r%`ZkqxCr3q#Xa8dl@jCGLčc!t'8>ksqqW(tU~bhI;>nн^c>4bn'~Z!rڇ.00 xgVȵVI kB3 [QeВ͗_}@SE1$$5m^8U $'|CK9h:ˮN'bdk8pҗl̄ -3{^`8 7îTưhb3irHKNK:eMv*]-qhN/T'"rʥPpVҮ04aXfĊizЕ>]avB[+F*qX=CuWɌ? Ck;'R+!aH5y,ƾk|yV}-`SnZ&|47aQ,G\~pY@ruaHzuVya,q)؝gN H9~{yae&ZI`x-8B{ퟫ)],-.Eb2J ț 4%!Ҳ04* ?İԃfӃ=.(B`1z}Vi@Vj@Z&9-nܲ*Cz=vC&zZ M?6A3CqJ#3}%ؾk "VlF,49 %Eg &=9eZK(S(>1iy3>Y1=xLF*Z1lq^jats_PJ4y5ǰ-q(P?pDE n7M86o8d7 ('М<3H/^CBX{f*A`,ӃS'qXZZXg0Lru#BӔ܍"ܖI6TN^9&riE8@Y.79%H`1G*P'_z>`>Md 4VGȆp/b~R[ L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˝YhkheZeZKP c igO ;-|1.,+<7I> 8D( 76{J1-hNKrlQ\KXk1q0YxeRyIn 2 (S%Ƙca%9&v!Cy '`X %0Uߙ+hNK/:@ iy/rjK>g*@sZFX+e-tlMJa5 cayNN@ D?E N…j1T3LcT\Π;(1F1]F`N€)66/MpJ[IH?2õ2Te)@:Fskj2ؾ~Zo*0 L+(8VL^ c$:T֟KI $R)S @3ʱ)[.IX! 3F_R Y('%"cP#c,a%h>7dEci>R &dž}RRpP^gZR)oJRv\(i@˒pPtBRKc\ g)xQ$쎽71F:Ϗ`]T2Cs.9%?=F_ >?nDmkbS&xBFf).d"#n T,ا(',MLcw0cuDҩo"RǰXș~nP - KJJeT-i ,D7-h>9(Kf*T _& cư2ƇTyPHfal `8 9ĎKil= ;Sx~+n4%KBPIADmI<,BH2Fl ֐cڷ.h o|%JJIEBG(87-|jOԇRA%E% \(m0~Vy%]JFG;\{i2%.s&|+dpkL0͉u.(R LT碄LtRA*1=N#&s[h^D[c eSl%^JstbOmS5^9H(u {^*YPzFN\~ K'S 1UYS"IE9P ʁO*] בb9 Y43H'NNy!J01]PRJCtNb>dXZjLMJ}a^N6U/).XBY2Ts.IUA<TqB&])BMfqƘK䮁lM_~:;USMdE%l8RsF*a0VmLLΗS!-G+/펵F~H/azs * ~ K=ƀPJmWʄ$AZK4K; 1)0N%g| /R*W Yv֒1TJ1Th;\Q#Jzz1E0 }6" 5yw 9DO-6\:\4SZbф@3t^M%nٸ$T7}V \Uࢭ/"|l RRU[ʕ3|lK'fG3fbw;xƄTOX=cz&Pf2'8Rd軅|9N`x}or_|PPh/'m>KEc2Kixa$mb(s%4\0t T؍|~֏ߏ3 IؘC8#l5cU&~*ΙsfbsBC~ [tu11;R,}ZHy8ERHW` {O-Iv?Ll`2{`kۯRjh@:{Hw*9UAH\hgq ۤ0ǀV:LJ@IМ Q褖 1U`iTT/Q3,4p33/tހ2ꇶ^\v2޵+'xl8c`jL1:pR3TX_m @|>&3,1>qk97{=.KGng@ռ2{gg"Ӯ>gg`g IDAT&fޯ $308u0ՒfIDAmf`lw^bl$ svPJ{vYl]IQ%&%ImL9j6H-,^j4D?v?lsl?'wodU1,Qu4n-KKi|Ɣ*X~n*eh%Sc84υNK9W{RۘdVi *S7RU1b]kןwgOD s׍^Ug?cO?[z"_KW?矗d{v 82%l\-]*H]2CY~4 4?ӓm"P!:E$E"lN21L1TKS`E},[ kklNe!(L;}Dwj>mVTm&w_3Bd~}vzgS@4yQ{<\k;YI?{JyBWOȾ옞0:ļyϙzp/Oo*v(22ǘ1uy4St<RP=M%zj;T7.qSl.$%`b sO:5tgfd± [H c3wr`DHnP:DӼfǝvgr.N'sK"{3D-+(R y!~T4uK g .oḰ.;'DkO#1ay024%55tjfI:ga 9CZhВ~95f] vvuu 'PJГ R2јMgQ| DS:h0UCgr= ́fi &7 s@鎁yɍ9Vay*!NMsV_l/s$v^R:TÚei~n$_͗սq[ x:PeE~ٞgW Wg|fT<Uw^B (CLЃ_UUG{kŶ#VN1LS_>.Iaz3;Ġ_rom[f2Ii1> eK:}rc,C',Uϲs?lZm:,uF:>)AЃb(c: 24%{4:/: X8TFc y,5gP=cWzDȩŪH&4 A4)7}{NYJCXQi$H1R FD(0,G`1kh/?f C`Y `H3)I1vcԎ{Y ]_ {kƒ;%")˅{'M+)u90P8זt&ZfQ=7>^i ,]vuC#uOѿu8-Rd 0zov9|-fif2Cde@i&JHɰ4ߡfߺnKvs&1͒61UN &ʣQ$N\L}Av ?&{^k/+`>cvpG]~ {!\25z`X ΆK !kk,ƻ#9]T9b="( McW~ҿK׉>3FF\ݢ~p{,T. fG SVȐLBX;P2(ʇYk}!Ж`Δ+c Țϔޙ M7fsc q1.BkNcBZv v f8v]b,`jvYLYfR3̘\uyQ=0cΘ1'w,OyMoa hXqEGpA%31 K%h2%9)_5Uyi_;uspLWKvMEXe(ay *d JLs,`lr%\qCfyTs [3PQ umK1%hq\S|I6̸^10#BXX"MGuXn@82lqE>Ò6u_>Zh Pcu93L/hLԅ뺃G'GdV׃.о 9q^w+p;CK0Ƅ/.B;> !B eI7!12W1w`#T%S'B̾$9Sqx}jfWn.FmsB眖Rl17:#MUSf>V7 StƄ@IsbHXeh@EՃȟk^ %&oߜE߮_~^=ۺӃ/8;; xijLSRxp֢qZ|2>ic~Gy# v*AACj}̉ 9W <#s$[f+K?$C20gk7oB(gvb$?+#큛KL}x0Mr"ˍȺ0c_Z5?~dssA2lEn!ncmrbr6hr#Y)?}0LsO􌯷_W,0gXKo2a@qv)憟:v͆nt{04_D -B@N YGp'o}@lu* )-s(L[ )c("P%1fC Z4׿# Nؕc杽Cp>C@y~~>KgKvQg]t;?Y|u>S@3utFN&8`7Iat0Q : %^Glp``Kp/6#WKa ξB3fvk] @2eR&((`i{*4F Le)Fc핡.}>O.^zgkg g;t`v"`RXh&뺛ak?1^|8 W,s_` ^$:fd PL1pVReɡ$d-޷[M;LyƲ0u۔a`%14uw11?JD^L2 G?Ճ/pfxs  >h\0fx]_`}O,_-~jgéS.y&=0$3h4-Ä"ϤX0Ux@+0Z::sJI';W[L4'ѥOb0½uyncK5191fiay Cͽf|ݠ[^?=:1 az Sge=葙Y ]jKkOn-^57k>fDΑI$quaݽ$MHg= 0'3t2.ӨfE:첑g?u,Iv]}2߯陞3x/ hQdR0hMGaPv#"e@Ax!==}oU9Q;O}nDc֭[r^U?Ga^+K5s$gtRo$̵tI grs椀$Ä>u- 5Ӈ7f_K ̓Ɉtɵ {}+l9:H.vJr$<J]xH Tޓ΍?):֤2C`7-80шp))-F=o1āWQ؜ ? [dZ2|54͜R3WPv[ OK }ˑ`0VceѤ,O'%X~8HuHj3n5_:M;k$}AuZzR[ER`fhG:\E$Yy}1R+N8n%O)=zKGw9l|r 0V7L ]y\2yJF(sG Q_??sD ˻>s@^9c lcb){Ul'_Oc)7oNmjuX%uZ߷Mp Q(4@v7ѿ 듳!rlh@dsz% %=9XjI|;x7x†gMjJn|TKQH'6>IIG 8ˉϐDTokU^2o hg؜C8}H%Pl^ǔe.7`p|y\ӻ1[cK,Dɨ\2ƙ= QHoB@Cm؆>&wLJFVP=ȑ=#)kޱ$ IDATAx86։U) !-q5Q_Gou bZH(3-Wҗ0O`LYqجNNv:fP?(3 qjy?.XӫlatzݏzC'z%O;V) cŌ!ȞA2m;9i-Oq q" 5&g' 19=NmҍdGQ7?FeHd!S%د>/jM % .9N!Sp&tiscRԝ 3K!* W_y<2i(Xd!x{K4)H s=}9.[W n=j%~7d^>D:۴"oaCCܧ=ge<@j<C>o.7Ap=L#hc3Ҁyzz"8 k6b)M>V[,ϕ ޜ^_̓>RXa r1{s3tLM URhj91K#1qRtSi+EZh -g^upm zgha Ow)A2>})IezV$C5$A3 Hc]‰Sj,-c! '|;)Y DxDOBH@<1{"=s(7`ySN#5i.MoWJt˃;a{7ǦUZ}!Q2k.rHf,G<6rx%y+Ũ0MoqqލZ]^hϳm\ p%G|ܭǢ%xcvcL#S(2}D&*g}xl;2L&a.XԷ}lKG;TsoKMR#jk@.9%L`TJTkOM}g)~y+,<~|?iXƏ˾y]2Le%g0c-zݏ?FMf]$RτCQh;] &B@YEjFSgI@߄=T'Bּ`Qi>| 9:7%r:}Xٛb#afEZ;W-0lΚ "7h͚f 6? Ya9FY0 >$KfY=b86T 8xCc1鲼7~4)8#e/zY a9;iĨtqezteK9s 39Qi>&o> 'TV2Ky[)-/5D8``yS8q#.?C@1(њ2,Q pbJKkx f?wM.5,l.N8رTՅGne./H;ߺGnr9")8V⤢#ճW٘fhtiu1=@mju?QqTd)~V-7Dxp=,͐I1uw֏Rz2Q7-V:,%̞rҕcx %((9}HPLj39k}OqeF%=~i,%hu=W ){}f|MÐJ|˞ J ʶ4H#O1ɒrRB"(M=z'5.7qdv0rp#j3H%EkD ҂iZaQ- 9䍯9 '4I\iɞ {#% ya߿Ss&( f۞.IǽIRs{sӔ=>{T]v&$>U.Q ܖ7T=j@c0%&LIfR !#=&]k4/~ϔJLJ36K֘uC ;7gj{NMH9SF8ԥ&&lNNQ3.C`1 L wtuڭ F b/~N~rI`Eic}.u̾,Y1ixW=j9(Ѭt4WDcEvJN#ci% @cxH!`ɌKþ=݆?u#3: \!;2ˍCgV' ȏ3ktnp `DN:!QZ,55-T3l3N V*~R̙.qyKF0vk-d@͉1gێpVD $@խ݅yjllQv=1PM\G{KL[Hd4 T_ЯRGjbd?RZ8,Wyª>c3j\'^> `{71]{9AsZRs_'| KjtDXp@0f),c!1'zY ް&JpKf̅49YOk ͊ \B!s`Bt3;܄./"@p5py2uo~}z 4vwye(#w{ S^eG%Κ^d_6XaaOJX:doVa7ZO8'_S&ޘ}j-T)`!o7i\;V=Ҹyp"-PwiDid$*3m1qa};(sG+}Bs(?ݼs&'Q6ǙkZki=:DTcy႐^ 5>hI`:qFN\.'? }0[u"eu xG!7wFi֒@@q~s$dKo2P5|IetS@M7™ <_g9;>0LaZ RSá14SciOT%uZY_4o5ZaYtrޅ+)9V #ïWg0څ@&%M^딉G#UddJxa8qKmM1u(IhoiFޘ*z$͵qKXU4~/ڟcjp'4 o8&bj'O 9|>N@/' `0}ߦŌg%ރC-q-A{}@K =h `Gɺ,-K-Թ22-]R= <@ s{>疸\VfpaW#k =Ej pi\j$w͒O2cnEYUˤr9!WyhWdwJta*lVc"\"ex<ǁBw,C+kE>$J:ő}FwŦ[cMg[^9uZ8s\h6=iqFύKD"L /S@6ܜ]gKB)=ڗX9ၐ"q :yρfiVP֬0N|&6%`[(m\_G<1x|qHeJgrOKٳK2O\b,9pB–e]]ix6pr{N~\{J.oMvhFD[? e+n%R;%_wB۬xzYۑ@Otq 8"9'5J6h.š:QAԧ^~ai }Jlg-mӳ@gE 5΁?r1\wjmD42.zfP]81SOk{[Hc>O5jP8\+ӓ7Of -rUU.ar@aLp+!@zV~ZI%ަXeIejt1}ɂbMv.⸮{I8RfyM TٮSfveLOf`|7GW`.E396}濬.^ң([fH8A)2%4 \+6^ W& d5I1,nځcOpG@[QwZ#|p2Djm?W* [::͆Ox-A)5x+EY8f,VL:8[|pio¦g^a0с4GB1`7OB_O)x34KӃɯzퟜۋYK1%fM0 r@"'$_}j< g%A{c+w|!392eb VoxȀa!ȮivaM礘'+F6Um[-?so+_d7 [Y&6nf٤dqLٗ{[9и>F#k̦߱-)K4=KVYIVʪ-i ع҇1 ӱ,rXpxZ 7xAfyf7g_ph feZzK9f%hEϰoS/8Q&ܯ101L8e:\L=P/SqNf_9x >La{vUŝ̈cʻTu~KmڌR0[KL|r"v);yqS<7qT/d'soeA_ {Nl@=9{VgfX,[\v]}wL+י1_d,20\f4.<&AhRL"!{>[v X̙'%hwTʦS7+"4m48hXBC/<+C\ FQrΧ5{|?kXc.Q"C8.9g0B4NGpPukSyrnq5fď(,4 ˔NI2I @ әd_n]2o9%+@\btY%}CwXzQ 0.S2YvI}5i)`GEBy|ᜯnFY )0@|଻J ChN">Ԉm21^)]E%g%SVaxʳ Uqa U531Z㮺.3%N.1"0R`gȽD?`4lFR=p b`AWB(&dF؜;BFc9㷤z35/Ъs t%v0Ih%LV zQ~ Q+ιܬB&"B˾ԑ哾Ff#&[agQ( ,52kؘn1<W 9}㔦(2!nRX& kruiέVNeJry裙)̵tKʼA ]9Q^ IDAT\bRZ-UW/NR;ـ7gC$QrazGLb-Ϩ ۣKu-~ %@:Z k%\9y)ks:%©7KIoorDBv[z6&͊}n汇 ? R%Z*16]nJHe8HN4]}D0.2 &BۓS+˥i^[9,yCYjy1pCqYn2TȤީIRKRJq:|]jc=H2"+QW , ZRx 3qBS`Hr?};gS)]riF53D@7c_AݍS RJzsԔIRN0 U~%=ێ6 "`]xp!ՎQƙeas~\ dkx9<%'%52Y2[ 99(ҡﲦ˪^~ 6TySh6mi.GVYڅ*٦cSMc.GwBk}ƛb'YXɜ>)6grsSIќ ^ ';T`.w^9!9<=X@YbB:M [x/%jD([O.X,IҝN :w UvWj9FMHjFvl2y%Mu  H1T_d  K'>w3w(1J;.;8teL{Yg'PjE$eRfp؏6G`Y^4?蠴#RpEqOȈๆk D Ůd\r"0CIwi N|^b¯qg\ Pʁ2LGi|7uD} Lx:}f<(# /1/ l8g/3ιEDx4Il#aq!BlTߢ*fNDT3Čva{>ࠚ=sNLW+Xಫ@YPʾZc ΅%_:>i1S>$]WJꚖ9[#oj`"odW[$r)cH#Q'&z<}3X#\dtPѝ5m'cϛ'N*mR]+0@̣ `8eƃ=),aEf XsYyBm l4wr#"y\͗> *Z tCr*Zt.`떦K[:~|tH $@?db1D'P_ )cX?\UK,QJF̿ɜhtÑr>S3a&,#hM a]G|e(K)Sj[563tCE7 "?v-+Gaf*(: [޺Bkj8|{-LJ3ɱ;g'ϜvZװ8Q~2)_ YT84͵1iTjX09,5LLJ狀xr9"p,JtoGZV6CzkeBsFX*' %a9pR0573~6K?ʜF&ʿxe?MLď]0}G[ Dn2$Cz0z”)dqGgԲ@bFHXRiOY1ُc`?9Wp^a)PO~hIMV90RO\ضccN4z5s7ԹL"$$(T"5Jm:S6(o"v*͈ xž6$Jw.vsUMm9f=ݻ |5d[Kޡc3Ξe|pfQ +Kn 9>hn":i%|]8IS'n*s%1Mwט1$Lc.%p* .Crt9eO1i,SsBXA.^M2p?)JZ/Rq TP;9?^23"}73nn'c hhADYzsmP6px|TV#Bc=C;)eH., DmI bhƭcj"mhsqrAlےT5i_8]>'Phn@5yf0f\bW>lwkʣx)D)<q Yz5g+[Iͧch_x?Jҟ4wA)N-*9CƐ ~# 6(fZN517F@M $C!%sSBNS^]打qtX%&PZ(ysbm/fǃPBRFܘ(w:ʴ`YSŵd4rɟƨsutʈ偣y)|0_/SH˔V,j  V;F,6Q:cqx@_k;X)w!#>pvF]CG[Kک&|j('!hj )-|#y,q{]ӡC\q h\.O'q4HHrXIW3MhW-?3Jr`%g|+tj1QM^/dmwavHӴZxhTV̹:WR=VO(Jܾnj_FcB%GK{nfSI9Ow. Ų֌>7D'NޫVO&(0:JS8af/6f@N.kb(nNYIYͣ.G}`w6h6E~H3~2ɦ'U*8QK@}.uioCL!Ò!UK\eԨ Eyikƌi0; G$&7Rt]6{3r4׹HSZB[N:g*:VEħ| dO@bf+@\kFO iV7ˁ~ۅYcƴ*o4']= %QcJ -#1e Re6۝; Io\ӳ~5a;Kr0v/?(nr p,-x7JF1R'(1G/ʝ)!,4볉ìÉjJx09H(m/s 뮈@ 陒c DyupvjIʜVbY+7/.` Y5:!yٮ~f-K1$$׀z]Jt˹Բ4ͧB2Ԗ#(Y&N 5S%x,L5yئX!2q)'r̝xjstSeuT.ЎcZpNt^.EWd*(ZQ"i;(^"9Mܓgp"j "bU@\'9^7ꕉbЖqښiAF@!{4GjiEI |JY6 agG_KGX+Hq N 8we ( D.s[p-I4RWP'TvCLi$*%=dߜ2!3\]tXr><RQ''&m yrZk9nj_BKp}{& mϹP;BVU(㰘N-h fIVɢ,0a2A* |NP(Khsےk[2p!.<0<M Ec7)6aJ^Co;̥K0m6Np,Ofܶ~34K/ 36xvJ<B!w֎allzlRF?$Bt1Y0Qlv$Ey*^BuNI0XW$"=A.1`j9wǸd}C`t(;P;a]cnLIٌK8!`a ǻɬ~pThD=A Q#~.-SȅG3 >~.s̡Ծ҅n_2@R%/o{ 6)fV9ǘ1mHqEqƸIZZީOHT K빒 Mor$\~&nMwfYA7~R9hb |ou0X+ب5?SxX Dn@e-f)=259W[HSԚN""֒$3L)mICs9jhcw$ J'37]t [o>9b9uo$_$19h{Iqӈ]%e2|lH[xm/0 451 IDAT(=9 ڮ[ffێ 'RsMv ܞL>*N^V `%C`UtK~$NS xzŚ5G*{$A]`SWU@0C@~Z.m'szDuLuMBwJmֺZF0=dMh8Fo p=h5Kf\yNFM\Q< ~bs75 6K5ڞrMm%=7bj=.7:}fPn|q 1!.:eVJ`l㒣/=㓎41ľƃލ$`Ba Kޑ\Jta*b@'D_UҦ'S>qečk,<{KpqT5B,uif8G31B+t^ H74s `1B=c7sBLuF(̈8m S-S\,XM'L.f.R' WNH7ge':OElښW {^6k.Ei0GJ0;ɂ>K>|qTQ%nY%k1{:iT&gDy)]e -)(}Ю^0e^$urz\3%iG1XZY;磕Qe6J|D Uhh(2Ѭ\ϸ[$,BlubCp 쓘 k9JZ~R0B36 M:C¦VJy EMp1eY@jiZQQ:Rۈ4dRJ->3͛zڟ$jgЕH<6N"$>A lױNTS4NR!1%_a5&ZƲY}h`z䴏3$CxfzKsZwvas05dT  4qiau7|~df$(J6lgEr6ZSI0"-y< S$C0"|L0h yoVRܗ.w|b=x:7]> ڝETԧ;,%~Lp7t \ am:88[SBB?M^[cm{3.b6gʧ}\SI2;l} .ʘ`~V@IvH;exc:dM8r70ީWk,.jW*:JSLsԬb<`v6(Usm\i 0 gW:vwr[NAX٨Gmlzǝ/㟩8KXi)^^sNG C~T"J#'@s$c_xDJT;IM*= FuYRVɊ+|2@P\.YǬWֽ84no;z3jr1Ie着V 29ֽ{\טp*q%@ӽЦzWcA.B9bAEZ3G?/ۮ̋J_m3O? 1:ptag<J㹅 мͺzn]2h#RJ \O& \9}Js3Ad"MϢd/cxY?sYsoMܯG%QqD؄<^A  \ 3%8s ZcR6hp]33p)J \ttnH뜧zswIkr'n3ӡJX)RgϣjBi3O_btfp8fO~*&JuHbhj{R^Ko~ʿj++43(S$0UD×6D|ūG8ǡhH lv4J:*Y~4s3!Av.\1pFKFۚ<;| OΗ6 !B8j8 WAJ@si` ̸eKbk.,sGec}<':.ueՕ:^to=5xdx\ {U#(CZ[$%@3䝤ZދK@†*fq%ڶ#&65cr#-E"\nUjWӅGԭ=fĜ$ + x{C0Z6z*0POg59n~]19/ <S !l%d#7QKvjCjƻB7Xve`"S8T 04Ԩ8FddJ8^Z4㞽 q;Wf?mj>D~Aqʸ\[S+&/r6B 4/s? B$Šg̸ `!<.1<9u{+FH;df4`#̛ј4xcQ5l?sw/22I D0Hi5L '}U8,<=E L%ktZY=t)c6`lzyB}ϖmLjo4 -2Nc:^hEA#̀Թ՗v¤y"R&G`# nPp1Cn>8߫|,Owꘔ^a UH_RDaZ~+4x[\=[s'03L\xDcvFw|g"R-3u -CoZ%$Q1cxk'mܜ^$\ ]*CvA3zFBX,y\k^JbSy0^`-ōp&"[ԕ‚ $5h5ɏ*lW"sԑcn/ƃ.aiTE(`NcBl3"ץW!脒.z.*.>qx؂%\xA252մÝ6$? / p,D,:ԻH [mFWx ,58Yki#܁ǏTұX,^-L]G&*OVA%-UyryH`X@︜7% .br{XveڠRt{@cwMa6G`]RNeɁ"*<ͺ斪sK9ϟbs9koK+H5.&z$aƏ15o>GZdzoq_^\a"GPFYqBe s.xkWpNpfS~MV0`~ӻmDzqd\gPUeUkefpb,sy`"CC8|5Z@) \ҟgJ}gf/4j5 1MwN 7𑹓R,| ~G@1',K$\<]FP+RECo N(~G0K`'Y Q-iǀg[KJDMj[,{f`b8CxPۑJθmy  J`5N]Ō7h@*𕺺9..}4P2W'Y PL͠wa7fQ6m0n지ֹ¸?jpPΙb|L~O6ɠOHDn`WJZaQX$b cר3[;7)D/j/*(~Ƈ[ +GE1{/yglhK܍yvkWiZCpk!0܏Yf.fr6\֗Te7bsr_S!jobit%q$s],ǫ{9):`7_Z}0.:VY8e3q`|5^ɒ;Cƚ5XV`Jj&\-2*ܢY6F_~9Iǀ6ݷNu[6 tv#$m=(9Wu`g]2S37 2ԱlY*~Qx*0'Md"綆*=LT' "N +*);>n ng@n0]%0Jxr8ro'NX@9 q ]$O:2 %$\qE5OwL8:O!zXoٶLg 8WB;E]ELKU|UZ8`D2_GSH~ {j(6.1X-,}vY:;H:ZR3a7Ǜ~~NWN}Zcn3PWM|tb) ֘:){fj6s uVZx?t_n(\%NG+׾#w%#{3K~Wx -r~u*23B@CRJs 4ZS&8 Uljj,z)zX%Pg6wBkhR2/& /I5Wi?5.W\5Z>c']U|5ӊSUsqpx| =SIU'Tq!+h!Nb^ O8X%rb9nzh #D ۴//NKAP6!= "C`W:{^ߍqk6L/(ԡkVNV+W<0]a 0:cL_x$cxkq'p^_ϡGHv$|>88^D ؿ;qq"/Ԩpvs\^=b}|ޏeӆ<9e6vc<ܶ=voI<`Zn{ P ,%xr7}6LHm iq<_Bw.5t^JU5X֮KhN~x|BeLˌI9 88s][t܇f_3| ֭͜5uh&.S[թnvKDI<;VОak0-`Ң;R:Fl#`?虒!mHDQ\z ӬqλHE&3͖@38)\?hw|"5D>vxǂ`914',O-{|_Xz}_i6 ''khtuEskS_v'eL<2o_w+^5PēH.mX(OѨE S%smdQձu \|J0JIzGz bȪ !s& 3bT5Hzɬ#vseG\ jGWz`8(I$7#}53{92ۯK+9X<{ǭ6X#u;¯ťdISv<$rf;(O3L3Uz+7fCkeV7鈝U]v8/+TJ@k>4j)QRٮ-?q]uniV= _J7&]fvdI{,D# xW/k,8㤕@p---}D -~-kn3@9OY oX1YDg6+Ya&fw-w߁ Uה1_Z&跣93 zr(W@$PDM' .enpR Ce8}uz4Ҵn%8HL6=s$7:U|IogϜ%t[%jQ5ץokAǮT[.^ `hodo _p Z[poK)\ FSpU=*2lW:o033lLopQHcjc;tuh&S3c@DKD!]ʹZ zmln`ÚZஉ^`꒴:eڬ5{ǣ AYRNeHyLH[g\E7h{# &)Sdk"鳥}aQ<5IG BH}( ˻_s\mY] \s~ mi- 齿gVgcw"|fZ:!dP4Hތj4 D_/o8b+gSt^/GyNS.xA% U9N lQ-Yr_9;s5̜Ux?a !/Dl{s!͇tgGN5+ a#rtwcEaO|11L)K)\,noPbHhzJss-5}-e6NWp;_gn}q@+M l?@`'XM`-d=&k}o':9O}  pE.cwLUh  +֐1'Y74r>,YW"I7Uᐝ;?[x\h7/8,񚺦dw 0ʶ^)<|Y+<@@C朴>Ot[jGaXryL7q;Įqjj=CA+gC{?%|lQi:AڋAݶyn-N;ޝpS-$b5Hթv bDH$>~֖管 +L:ڬĹuиr8ō*b6X&>P!~ Hw(ʓ$$K%H/4KYt@ެ#K)3jMV<]#6`znYoJpjOv#6:ˮ%SA  v%2I&T mM#y6Ϊ?zs@k>o~bɞRу2e9.4Ec{ʆ Er/ykB}i`Ҕ <ȗ>8QAEQXkcC<ٯ+YcWJlJZDlmY\M5bU\k2~ "p*vI[uĭZq푵TԠIhѼq:gjO-~\t! }vj9KfMj,g,9a'@iJΝMRγꪊ13~<3a[ \0MX/0={i8۽1< J|@ vŜ4QY;HG~ C1l ~sNgC &gO~n=b{!2>#9w 7&~SUi;?rt#?뷎l C9 N61fz?gx={(a@癞9Ew,Dj\ *O`ܱPcF܌3 -1{L8i !1[ZGd|)3Jiu+L[  Hnpبb:"X cH48'' 0ٮ3_ ,e>{c6lZaX{Ya*1"XRHδˈ^9,SX{ȩSmgcgO $= seFõsr"ځtQ2'cG)wbY0one)͔֠Hw`ƇrY2 ڼvC`)~Cl؝ ~?6dBɡA5HY%y#(w~ Uy4 !3ʩ,>oЙdT1j4*< kwß;v <^Y2جrPX7?NB[#+XF;78[ڻ5x5l3S];5`sQ:?(hJ;GS P1p+^AҴ4"ą$8sZ\=-?t ccq H5{4]=S!lH䴑Xԧb3LJn2_|h c9^.qBi-;0~dl g*gyād,5^ej`cNUDf}ɘ+NEH)޳&Fjj/sw: {Z_3aF}t9R SH0KNM61`6Н=;yb󒎟wVեkH[jZHsBf,ا|;D83]T}(cWi*e: #'?Yh.,P_}oaߵ"׊X>vT ^}WOqn Pq6&i` G GL $@1' 1_)s~6HXΟ14ƼF1!8 gl<ܡYoĹku\Ys8ኳbYLSjU,u">Ƿ1ËBцyE5DRP@ER>+y7Aǧxwkǟ^{|;LAY 8pߟGTi/nt8|W݋m mΞQP֜GWMtM7?`Z$sXK=3@sg]f-2ry\# <;'Y^c5vyBL}ᰃkf}^)&[:wd*^ S̴Sj}Y?twOz(^ڗ9 6MsT$S<)|+LPO/(4ڐ&쵹]Quݧ:6W ڱq@ρP&Jƪi&)gx[dfR{cphhK;p@q+*FTGl16v*=(чN:z<M_غ'&!,3!퉅㳫7'z:sx98g>{`pq=("'1;2eg)$6'2w 7_  !ad&\quӏzp@ez}4-˧==t1E|9'\|K)bQVZ/@`qdp;^k9_9FXǿ=>?*5rCa@1 3W>4%EwX^0-ې'޹'R3;L7&a2FrJfݡnʤ SfBy,3ގ_x38uƿ;ZoCwߵɬũI}>}.|YEZ C84p2g~7=dž0ˌlւaSg-]/щgH3T[_\J܉;|Vټ}7~8L{[.[j4{LK,P8uҙ}LC-Z۪T4SKޥO\$No0 ɞ*pr< 37pm3'^u hVɀ^猁WJa5f;tݏlW̐<ύ͈+XY{'oݚ(+6G"a`ށ( p F$QvdP=h~:/ 4szα=.mMVP~;<[ ]̺_CN\yK\s,GjV.cbJc͢Ǵ͹?m犻Sm3ƶ(u4ѥas5 ixZȊ]P|iyQ(rNFT{?<`ZT2Z1TVdkO ŴS()3ROΛp1'klSEN\sftTiv5!)]U*6",vրgȎҍwV/QiPvۏ"y V=c 78==`ԭe /*,@3?Qç[,$u 1Sdc=+QDq"C$!Q3ݪc/I`,y3̨-L![j>53|a>]BƂg:쾧z\zb%~8sMN Tl2E!K)Ɖ BZh9h8x[,b{HL 9,,2:5ω#z{xK3C8ō9r ,]% aj%0ʱ95g ds9W/{4{|`f·HvtLI=w;baVP0%0۴E.BdSY㟗֙kM?'yyFS1aPSrϊu8uv⚵HӞ5!׎Z 4%ݶZ"UT^y_GK7$)G$ L'on{:a; ١(8̶;tDW2z/] *V/uʖvQ76=i(ڄްWl\"]hD\j4ȵGTGƩ\v^544!b.d/iAiY,3ஞUh{nBN綽wDq\̵AwD%<3VZǁv@e=gj1_̍aw.yT3+(8!%B5e/ ] :2ZX=pP: IDAT@Ј5tD -ZOQuk@I׆MؔX ѮW]>zfQ836z{LC8}GXћ$ؓ`mR;RӬ yE֝5 "dC'hIvϬ{t[Hۊ;!ZiɁ[MxC@A e)3 #u/)=jhIKn|tb7mF8IrNGGfa-Ȑ 3"0Z7i@1F .3(4C l!ǚ&gDrCәB:v"׬^h1p=ee)/3b̓Vz_ h? n@y̛dOsׯI;"w8v(gGgmzL⑐bZ{=]aw^"ND\#DV=2Η:$R4Ts2%m4}{hP}>óBl*Qh٥DC-ޖ1͠vE\=-0u:M2\i$1_^TRx_&J!=AHـfC|n#wdPSӰnvkUDi[mF mc:3~~xC l&r]37F? X" h/Seٌ "1L!vʀaf$OKA"2 4dBה\)9+lWs,|dKO댦9Pbi(H ~&N uznNVdnduîS!k<u8|[00[Ays Pma C|Aopr6j<~TILFwf9Bv[ %|lx!:ðpfũԋoGkhD+Wzsq @@)^:4 ?V'TKa(|8m?Xߞ^n 0akj-9p(<G 3PL|10M!pn%1Pkɑ{AX _ӎJ5V W[8 pwfY^zP\k{H3?P}?МTe+0q#>{>.x;vK'=Ԛr0m;$@|I(-9 _`IЉƠF}y5ڱ #IT {Qppk/Ɖ4>.vko!#'oIn&;%(fo as{Z:l8\WȀRZ1c*uLt ֹxE'3^.8tZ!MVsaC7oj,9Ǵt0:t7p4NMȫv2?dyf+GC 9 ?R~?ygO4d( 0(xD\4 m74#ti@B>@ h> TQs]˄J`+>LqM'ex%ݧ5mYQi7Q‰e0؍5 7Wp,T-ݡYup+4hf#FX,~ڤӐtb507W,A+M .,@|P*Tj2C9FRG8/˦wiAƒl"wo`Z*bȄ:Cxw|c ] @ᷗtD2d\kr&!G=N~kp=T'GICEzM7VoupBH&BfycZv\9?YFH!s.9xiɺd&3V $FP:a_ΎֵhJ>N.{v~9~V:pwP)#S9k @X= M @7G>Q:2X?JIHsFdMq8zP[*G}2I|G\8܍lߖy=%gy1>n%x*` 끮)v<_W8_ej7c ?carG!:ϣ~#mG(4:9+avk*1 Z"ACLpD m0E7WF/v>iV R`˚`tX7NJK!Q 㼈} ]CᆍZx.rnlpPõ\.NDγ }_ `U)s䡚$A{&1#عkEB%9b %\@[a#`2ԕݍ-ǁ`s#]Ex}_WY#JGr4H6:L2 :Zs0nV ν8c3QUJ mX/>XGVՆ9m-uIE 6ؖ1BPJޜ ?͜;zk9N^;:[0s,A(ks(wXl6A1:L{p+Ca£kt6$ۥʼbN`!9{KY9)`|:ZҊc- ,0ip9o@$Q@v}b9KЩ (kYAo v`/6+4$SM/8{2a;Kavʻ=8eҷe-'p u8ԌDZ4S@+IJ((3p2_Pm[7w,>Ih[ͅ)Jcc ,Kׄ) m҂K|NS)00ɩ@7[zmS%m$7tWDqҼ!sx20@H$TdGr{0mctitg1ͤ;ZJ&ČbĹFȱ3LiRҮS̱P @tUd-myG@ʙzFy96#܎?a$O% HO~-04_) &Zc[JF / Җ5I$al@2./ɵI9z3Zɀsue.xT1"Ē>|1`:St x89 o\s|G`h&Ysdn |&L8ܺ„:Zy @e靑 rv=$PK\<.fXq* ';/Z |-:gf ˄'a 0jbv>ũ@|!rr="z,jT{I"oX7wy Zv$P9DNԜS-j&ĭarv.ifbvH|&jqغ臶G1-Bzfhsin3\8/58>g2VJ#=(o.9}jAcL9%{9҉c?#F$iGAIa:zb}9Tq|IsEƀ `uqùpp "ԂIF(P4s~G:zi&GR#< h A/9`qM5c`aml1aP- _Kn=c-s. CS*I|&xMdZɅ<76avtN̎pLتǔ^!xL?O-nU೔>;W^+҇H'[Ok-·! c !Pv@"LFLr"R9Dz|>qEH73 6u} ,'}48fl&8o鴚,sWeM{ 6Dv hAy3uBZb]cc(S$BeI7nKJ]W0J3>Мq^̭*Ìiaj%Dņ`4vaHc7$lS7"l*&`: .b6r6 n鄷M3^`hEU mSan.նh;rc5Rv[+طb.ml P>ɭwSK = %PܙN{{¼捬\@jP68tsm1eFsfSb#i15 b/!ž\+#_(@HntRCfF)0P\1mCNYq9NC[KNs0bGw+91`i hEzgiʘbbw9Vbs0  `:N!N#\b*1Lg KrCrP9G$-DMp 7wHKhsNml,4+ʏvfnXIS|C\ XKVf6|{stm},3[I]S  S %5 +i)&\KѪp2\pipȌsƻQMt5,Ӥ41P]@-^j%Fo+Ǟ y=w }06N!~Ƅ\bt&raf\"N8 >O(kY*T,v>6ؼ{[)4"CXntb| B`*7Z@ o|cK:Hiwy0,dƽc$}DV=?3Qg`9Li˹nږ؜wk`L ;Lfp;Y8vX=&a:"0;b\n| _@sY!b*-:DNκwyk`41cFi; vM [ ֚Re)\Oec2: ڶ!)F?t8upʀP.:?[\~iS= h=.X=7;7FH"&l}(ų֨!Vyg#Ly.9+'.@(qT qѷ[s𽼠9m[h `.=mXou<1 a:Ta::;ºkA,e0DX$.Șv!O+ uynMpmγ|@r5N`f9[M.T|<0-vopTd beGN ?cCmLg' jEַ=IG{C6 -^XN9CX}}!v҂%gĬAB=inCYP6#{?%Fz Zd5ߙ5ޓL"w,Xhћ][#a40V̐L06K;̴0 ^k$ lNjMpx0z@ |cy`3L =[Zox<܀iXx5+LM2$sO0uaqq dz.<팁bnb-N5o52vdBH8\{]zb>!0^4Ci]<}>[LV_5 Vð`tzòmcoC o0aNmR}сJ iii2(DQ07/+m&b.4!̳256_ fp=emưzf{Ob\j$h;L;<{%ɱ3Ax"HtF= tw 1vcA `ƴRi[Ӣ"p۶.pv.32u߬IFC uyxV =&#da- gy,Д IDATBI5ul{ o1ͪsGObƓ8פ36 BPwv=ZYa\ [-$œD˘@f =7[[~u@zE!&tQGӳ^g`FbY]ukX1טб0>8t82ϟҍ trFTگ1y!g{XR*y|4_ cՒm (.+jlc:4ytC([LBa]+Lb;vǒ׹4y3kn?zhumIdv%Ω/-9%eW#^Zb.1] "ryiF><Yx_`PO0ͺq* 9lx ӄ'vs@qi~Hҝ!Q: üq&PV:} #|ҍ'XxO,kt4=I0%&p>vv-4_i Q\-[z:/\&`;N; wxQ((R͉. 8%UzejXmp ,@㎟}62ph^$ֶzNQ,|-4e+ZOH۲3l`?}Byd)Pa:w4zd|km8]qo8@yfJ;au-}'!鐎n6,'p{eiW\s7J P^ h0cEL X/8U5[ C s=QJLР} ;ݸ[bqP7tY' `G.@QXapL1\y,8ȕ`4X,fp=f6{ĺLf9cPL}9aq>+ǿvj^PXI'. lqdIa{Do0moLoRv~4 P e^/!8#-ׁ'}v滏%ѳ[@Zqcք}b1gIwn13#!ԍcc7L랓\8wMڨ7!dsfn! Sןc,8,LKi;:4h{zp,[lRĘr1siHg sϷ']-<{G!g`  y⸃~X}S皘j`ʈәJ\$Nq`:2 Xl -87o\ָ c&KRval [L3΄5 p1oHwI;bw-NNAQ ZЦx=>I)0=Nnu B~f8M5H3 _eI{fch,0͋;{XbM 0ey';V052^ŴX[6SÍߍl̑>Ȇ~|']:b#zb5-vŰ'ƽ"W(`$(mXW?{S}g?%FA j|k0-m=νH \J37oO狑@&w[05 (l?yĬ:z_C!{OiS{O}I6lC^'DT ݬXsS 5Q,, Lus3TuRH.(eFD'erB%tpxH.I(`j<1QÁݒ5߆4E 2Lgz.-}!G_"e ϗߟv+rv}EE^ߘ0@ ӚOw.`ɀ`wAzKk ^S<;Cxo(yS=6]L4Vۥ;'r;dY,M/66_-QuȅPyOSi{? sK2u" Y=NF!|v3dLt*/0R =yڇCr`Zq )W c>ra1i[/wϽk<8AX*\fr>$!X[`̊qFĩ8[Q5Nɬlgٛ=e}GY+޲,,U hqoBF]@Ϸ>rvtpR7 6! tKGhpX +ڟDNzB3|( c=S![l1mK沼t{ Bo~-U1΂:5$,XJh"@\$d'VhLGh։{fX>:(_e4-|xo.x`SИ6<x\.{L{ c ;OgO`ls W(,w.myev:ۡ9k 5ƠY c0P#8P{LI{|;NoPK?(p>!u2smL(Ρ N+LW81I1L905 mX6 M >Jb4-Gnٜz!|,c_!%ha h.v׆P%uuH0Sϯ ]@sY>{&<1&)`#17Q5R )Fq\k,%GR ;c`Y[*B˚خ{qDm>C*- 8&/7, |ke}$V0PTo$[oN,1ͳc6;_:F˲0ͷ0S!* lZRLI/_oP^EK3ILJ5R4iƑ9FjYi.ǿuBRv[J7\bNO-Pi1-1ֹrgF# 75BeD9j"$/mWJ!rB f/omX2G aFmk$P߮XpE5 B\V!`, hQ "WJׄR֜%|^ޚw.ֆSݱJɵ Q,3..Lò$>%&sor*a^(v5Q2xesIR}hnTt9QNpiC{.[P s ˪Q~r=9u39˭\F㪙ϕx>SkY5!<)MrΨZO~YX*=!jL' sE??2cSnm+Bn$}JVpJS"HI:sJ+9sY =vtǹ9P?F(ڧXc +K 0ŐKV \KZ*s2Ȳ, ezR@ζ!υ5)Y!{ѻ(8dƪ$֣ _(wY3hdck':@ʌϖ(JU"J y ]!L.onRVޤQ/Kh0X=4d ۶h&}/M {?3EgXc-5IFYzj9NZ),5qi ]]6YFM?7F& kRr>) 1` w:69y4t\4*gպ 5ޓKXa9?d/ J|M/[*Sk=w[-xC/ Ka*es,Si4.wĄ)Y Wv|~Jm%*.Kf}T|HOM{H8۷!l)Ĭɨ(x`#iw\QB9gy>ltN[,r6S E9)twmKl%]vĊkk#̱L.rSp㒫1ucQ#Ԝ]ə.3λicS*\/1m9ik-5cP[P-Pb0}N7fy042fvZY]k,9Ju ,?`sBՀW z; 3r1f0sa*nX 7e'3)%_JP Kx% kcVڰ­ѻ.2̱I.p%F~yOk"+XI!I%!e97DfX>w#֑J8A$L `!l6U*].mw{zl}&Ugfc߃/\bdS-(0Mn\Ôcsw$0*m4+gqL"! oT[e36HwVj9&-3RvoB,i1{ 2r)ùno'g<1`+anZFST#GGdo\޼9g\lJ@0 y-AZ*cfR8v;MFr}suxŧ3sKиD䐫AUk2rθ!/%r-2 4oH֞,@zpYwciTKj2Cwf?a46ȗ[IGi)zq˵ }^wcfX\ɋ@:n s~HDqs/]{9)j _ymrhC.!,}h+Yз4QMGȵ{ڍS?8Y]9׮[4ͥ{GO!{'= Nvι|w~vСS7?$tF)Bp-/r_ڹޚ%[agXǂc,k&|lKh%6uQ(GtlnݸŦ\'oy? x5UYO0\zVP@ @B7Ҭ~${q?~wH|J\!{N/<^k."`n9<ޘD YwW8ŸR}Xn[ˬWg7@Vx9oU߀_}m9¢>4BS@qD4oAA S3LsL?L@z-P޸$y.Se9 q5cPZʙeKA^^Hyrl.@~G} 5;wPP_)$r(\v7>ŖfS*NZpMX ҟ\[SZ\P-!%ujA8UoKE+׮:t=sS9S p4 I+N D2cYPu㤼KtjIu4Oqs?{kIv}kW}t'9"93䈊X"ŔA$r,H"'O Q8Qa 81[ ,6eI_pfșs^QkZ{:g$Ž}yԩSZZߪj}իKp =4 7k[0%"+2ϣmc߳'_pj$,細A1ş ,af:srEy6ϋ"ز,sv_R.x?wp~ƭV%o@1dۀ >~IT,NQQn}n}r=ˊ3c6wnB)9sbu4hs˔ DXdl{n:5'fj^P,gXDD *w˝KQQ|z׫x}d[=@nJy̩nb~LP9gϹ5ۤ4CO#/1c aKᏘۘD&{LNe17(0<,)S@rwj[^[֨7=~'`'\|f]{q:ەURr}bRSBjਁ[JlRIsasn~[)KFB rn1k"lfWݛ^~^gWϺ}:--YVa8@JIK1Ecpn%옦v{ x <43[-~Ʈ^vu{+l!2e9ceh9%<]Ssg*y9M&P[ yʒks#ɍh6Ád,ށ!E1ieIL l IDAT0;n 4gM5߄s?c/ kCLc|@>|n dSRL-N;[{CMaH+ (@z?l~֕r GY>O>Pc3UXaO(ß<'Zx(J}kl*ʚʝ/cݞ*۪(ecS:jV)Kg058a4#nd %aޒ -sg()f8k̬O We+$C` ARbahAeNZ>38Cv)V\-%]/9=$֙ 5pt6͜vXc} )ӗnn?y AS),ELM@Sul.cBQlMf[LW0~?D 6#Ώ|Ǻpb*zEQ ( UJ,S ܧp2"wi@2dRxNDמ4bVgh?qGoxOLqO18 s^n0oz<\#y>yZ7)!4(lfwvn8Bqg}RcJLAZ^3̳X3 ?AQU{qnu||u;G "ڼ0ȝGy 8,1Ì@8SGE+w;/,}?f]F:CutMpR/MuNe1eYwe(/kax.r8Ew, Dh|`{?KEתmx͡"ߔr9eMS?C "di+-ewܹ{g%S|MkT'ބ;{ 6Cm Ag>`e,EL.uﰋ'*5`2%\b03>LWl.ZRh@c۴Rf皌;߉9W#knMhsmDŬy}~ֆlpGm8YRs[Kb{B [&Ɛ1vu;vK>ZkG3۔~4NYe1tٳQQrD(S`R90k5Ѱ˝;O1"zoذKfju>7e* Y[L1=ۥ[{ig,݀Y#⿯O*۵بQ)mZK7((A3wHt;Ut.1.K < G/|ϘrAtWJn\uqMؓ{9DXv?}Pffml0cB3vцd9R(.&*TfL1P?J,v`ԴeY_6,]h? ϝߞ)g?ensvu=㯃xhXe|>0*)_sJ>R cgQD}fJYMJSrKl_N2NP@\#@/OO `ߌFyN:"T/Q^P(xޏfgv7a^Wrc1;ax?ݚpwyE CD?+apihK ?9uskrߺ?ьd!\ 4SmMI햿ߠ9uY>Zȯd!́L*i0]<@u| p}.:w4ehv@2:K $q& ElCV(rK!hj:w)f;b ɛV.CjBcBR 5N~ۋ)@KΔ)`N&kR#3rgw֓)gCަC>a3~/ I" !3>?VbsbCsn`. J9VrZ 攔Sœg,b\ִL_MiRNH;Bc )IdNO.<ϵ`KyjtPB0B K7v{G/mq 0/<~\*? |fRss_)i$PQY\mĞsl im̱KnN-Xya9`Ɋ c9q(]fWHy}w}LAC!7PW-`>x\%&jLr\b>c\BH̐Ŧ>u=bj%3w+ \vKX2cA%3V3uys;g{.5jDO8"}f'6?UsΜNMiOgSoOӷoW_T!>`-=3%hE3?(I^&cNa{ajj9Gsy/5tk{64,+~u[N'1b1RU ŐUu :uj= -D;FSt̰;Ds:X=A 2N.qL7xᄀ5u/ sB;u9 lSj˒Bcて9K z"*WJwhrxmjO cjQ>p3(7!^C`ycfWZd5^ma8fs' CoWzskȂ=YG8A3`ޞ&Tc!Pid;Va dpG`FWFDU;V3ƈ/.{' kWb01~a1hJp= |,vW>{6kvt( ~q:6Y|BҝGM+)%uːMz,/|?w|v9x¼̐abvvv\.3MHR%_ҷse|`] x2Y4{ j?}?2>v0IAշi[ n( @ {#}U7!IuHbflSբ^ve2姸X! H>3 ٗ{wh:)D L(u0?\|}*K|C|/X6 y0Y.P܇=qO`vӳP=Bpu݇ f\>X9}eqp?4 [a ƀ:L"Ac>`J!bubOde23 Ǹ>\Ÿi|5ܨxQ@ބмWK%T!?=0G0xp^@ c2 %*^(kM=|FF)4pca\ܧ7#AsZ$6ODWPÝG? lvL\Eb}v{|U>P?wK긔쀲Kbƍŵ*CXy.S?D=BJ2 Ú&$g>[rF)` [0x \"1+rJy) f٫T.2ݟsZBp[0tO\҆/TےS۶rZ<,@Y\.T1Fts{A+zk1˘ >~,lAs`>xneqhJʂzc)9Za8BÐQq}< za~'X اt. <}0* d;|y`/JߜYh L$M͜rdZcL גXdcbax#l@SZf刺:~ |vwH*ych`:hi:<[Y|۪-=X6}\H*v,2i.߁xtO$DlWR <"զX6x #p~OW? kxwNٮ 0BB"Ħ!az )'+DBZqX.5zɒğvxrx߆{Q[$C h;,f1} |mDXtLb$%"\(IQcl-g$Xp7 ܥN 8 6hn4{Y@ ΥvCz @Io p;.<:Q'qX}ġX@ A]Ε?NEkkg'Ms}~/\Bq 0C) 34tjn?D2cBX>p.Zlհ<7F~ca8NnmŝڡDSZC!Eg!o %aa"? QPOQ|04yX%v\c-CnNHʩzҘlf~OM<4)IlrfjomM)RM|%}^{0'ibXWNzX c $ʊ<_o[kZ<\.с% m= {?фBFEB""-VB<='=Vb—! ܅(F8gb.jvxXg_J(2%D)kR&"2M 1$#QZnJsOvk ?סFP#3a¹?$Ş-Xe݅׭ÇWם*>,'\Hn;Lb,Qi 5~hl*PP1P1۰8{)H1c )A^<ھ%5(Z!V˰")71>fT oDop|umb4: s &&|pV,DE̶fן؟^xqz}Z''oy#wcI)p߁0;J1XWx~mKѧ>QNp{8nY1W?3V̸ 'pƙm܆*4ޘ8F ```Ʉ{ 쁰  1 h#T{|E}l$f %+i7mيEgdWg+v.39XS-g~Hgx&mN!NbhAP/I>,LȘA{'6Lum_9c ~|PqX.P3UVs׽ 78]ޏ}G0&0 if`08|cŌSv7g \fE,y~8ڌ0h}W- `95:[֮ W*ɒ\C;(/'Ep`.p\P}j.}sb'KR(Lw7JI/&ФLjjvw0sɵ0j /l\ۨc̰֧v,/J:&bP.>J1D|z0"GH(Bœƭk;|->5~ N_ +`QcQ흋zHnԵ =^& ^1>,:1U}5^J40Ւ Aޯyα?n s_+4[Ɣ?U \#!C4 T !Tq۞ӌ)c.g#(*w81k2 Z>۳ k/l(,CsG*- %U0$uxiUњQtgi%Rf-e 50N[H-U "GDx/lq0cBI^&/3g>%G`5vA|WL 9gbW]uE+9%%E&Ϳ37HmG (嚟Y 5\Sץ(ʝw# F,^u֢8E}xulUT 4.; s8-^Z[ܬܦ1P7 E&29a4`JFIdX.EQ=cpN- }b`Np@_)8Fœ}: 7M  <Řy)DϲV$m@;y'Dv}XmʞZG\@.I(nb?ߘ>ԟ$SV_\_-UI0v0+-SɭY[|5S p&$1;|kSurxU;,%i랑# \8mp3vP D6A|Iö[U\!a<biEtV5{qy *'cS9'mcSf8+RbjxGbIWx*רNcvo":I>`Jy0oY\8pmwcr^W@3\STs8`V[ Аi,Jŀ&{Zx/p0KezR)%2 ] cpWIc\ Sa)fTLXMPS 0}2S38qlÂ&g9ɤF |7:Yh 5'QO*3˝ ԱK0 avz݇7/]ԸmtL/`?nq$/LKh&' f%U&H +U/Ď+x-掱G5^V֟jQylud fn{fj" lЭbYW]|{`L1Ɯ1wθ M06ṙ@קt5S,NʝL\vI3"RfXk?EⰶUv IDAT鋥XK + DM\PsQba0s! ] t]؁iD9{@^a*6NƘs܌sbS`~d\Ϟaغ i[^й( ˻sQ(H~{/j ͒AHo*"o/ [9g)LISrgּj3 2iԱ!J$Fy;ٝ^kwl 7.mӛLǨ#V-wz̰pgv>eY.ripx%Ձd?mΊ۸D) ͕)y8--Hn Cx kK7ڟiuSse U@1+<߰JzKTp#N*gp̙ޘ^=4whن*fDK@.52w-+]5a;}Ӆ~y_VqHðNXg߲(^>s+h# ZӨ KSNzKԞ#'Gr9h 29*hc^mΛ9y&c!4"Mp@b5]Be(cFܚMu3&׶br9ADc]^KD|k ;D:ۇ|~s|8Z>`Jš՛"ÝƋsbfϙ fVm6/ƗaH`/ХIgj znb,?[SSe0*v7?H$XIbg kd{\"5ƙD͍)AۓCD؍BN>5 &%05 ]XB8V~$9 z3MrbuSoaSݰh|3Ј#lv *M\ bKE|@pxqP9)jss*lk6CUZSM$y%[y,VrBsiOJMWН؋go_dInpqz :σ\F$U2D/^8B3Ým4)5uxe ?߲k")O$iGnx(䰫JUѥcb/«\>X1KaNidF3.M~NIM4 W]|ܻdBw3VÙ\इi,5VXJଈG&&BM]%s S| y w~ TVIW%G2܋:yxqUc9B0||j&+|W*ј^j̷u|#)H)_uIl;| :",@ +l}f#O S`2YN/|dFT&.,0T ey[ǎ͠i ]\{[@oyօXl1֫eV+p[/8bORxE=$v^]ޒ}oa^{ǨpZ!݆i96|d {= 7aQ\:W?"3÷ WIƘ ?T]~DXϱI` '3I);AJ!I"3c;~ ez 9]nt+9uS% 1Wl6f'6#3-n9 g2v81> 2TG&2DKMT[=?s;ؔ6O$ wap;<xe~M+{ Z$qP0H#Z1W$Rh@d2RgR曎 C* c;d43;%?p_✅V9\oBl6buiŵiIr$>!?Vw |T0F$('(TpJ8KNwfe ^x:11:3߱Ό}2aܦ0%Mjl#k‘| TcJw(`Hr(mR.`B-bRZblT啛cVv!;WpsE+8Q.F`к{dvb5\l˭E"%V看vC3'WaҒ[Ja~mL*DH6 ^Q3L`,dB ?2/A5)GÃS AXx(#auFXisY<} Nx=C9.Fps^-UqxqJG9\hg`[);3H[9r@vB(,#@7U)Z'f'&G NxA'hU[Or瘱% ;ruhğe [Eh2K/Xk1wϮka8& [2Y-Ʀ$p@+d8M ɧ7zN:XR5;a|U2%CoB?_sxv7p_,^)kƯNI<-F >rTʜŌ?)*8D?fs䰢, a; MM[P{$}GnfOPGp$0Nf&W&c[(&L5[P! a7&:% xjFH|H $!HJ k;PE1]Qݫwm,\nz( ӔDiJa33 0-XvfrƦ0~` Wj&N*iL]e8& s-Uk} $׹BX~wFcώ3D..μ2ի}U*`DlDB^3&PfkEs?s(3 ׌q*yxr072z2{0o;!U˝kԜ/¿|g5,}Xp;uT>ͨ{^.wHm،\0k࿍M|WS)I$|j[C'!F )iVnZrw  "SjNa҆iJ=B,1(`m<Xb6+w|bl]?11Pvb F00n1 A(|-~.\cy0OYN9s䩥Ol:XYh2j\"@kYr^}Tb]B]\~WwawF2 I3 12fA8q?y meFMpA(PH=qV`8!暮.F,,FcN1goqh`eD=dG yソkǐSffv?B~zk?afEi21?,М#]2@~]$7\\:|>(zk2XY*S۵%5Ì=#P¸'W+b?ӀP3RSCԐnS7 Be8FbtJS#W_*w?!pD0-D.[Zi2ruJNJ$LͩADE1_<`e.F<.qqgccKs#|׹fvvz0}Ggn͌Fac1Qeϝ(N4pLo߿Ɨ]5(r,%kZ5̈*P*.mn&cP`rJ ĵrÔ˙̨)D^(w61%nJ"FCL:^b*C;,GRw/̨Mht!adFJg-c#(6; YJ[^ÚsBm('gr8:ET|,i0&M%Dl|)wdwٖl돗Kّʏ8BrZ6M TS?VTQ*ogjC-E0aDŽ}'$S5XPZp] \K7aѺf._A'fExFW]CAsp0Fj#'.JO5IMVi-MBњ`bi(_)%8iZn(K4 0u`] 26Ѧw֍gfpxZ8`j.YJyWޡXѹ)a>Ĥ\cb S.ϧb=Arc.˲%(f+avNdgDWĦjRsMi83oQR˓!9,.h)w8Ea9o˲$˥Z3mRм~~ sv3,3 UF~.&sk]+OC(ckRt>_N l,^ W6#B5& <Ў߇5l.w#9B1FXSBbƸe2#R:VNR fl7.-@ 37S@ siWS<ܙ%33 frt1\5 2 jH33Eet=4{o`ۋI:}n76p(g6 'Q1v`$x02{ފeJ)9آ KsFFrO oDM1UCA' rБMS`钢X>"hF}"d(; K17ie$ љ俎(\!wÍlODW7cxcNSh\$,si!}rmKr~;fpxMblyr1t&=A&6='[SuD,* ]`.cƩ=  Cσ#vr_%e8Z< )}eC6&CD%kwQ;4ftT.x,cǸG x ԟL%;t5SrmK:p {@K`2Ѡ/^2)D6S{Xh:P Kryz[_%j@f̉p |u"sn]GUPkeNnb2rX]$':OyБD[T(fhw@^&nVsP-{MQs@4)NW7 I%%q"\0~*68 ӚF0 6ye R!mY 9ӹh Pri ¯c0`lF-e7@x7JFSݦNAӍ,cBjdLJrқw9DTn#8`VtLF͍:y RƂ?&L_c7IHiJ$T|  \\vC ^BK b}Z-1.saSDBVEwxx׻KdjJlѧYW,1Cxu ^Td8*YD)GeA( SR1[2s18 p#K<"{8cR$71&BIɲ_we(ϔ~;bg3HJ XG ˡN2 kL;Z"5m01'hDfp1(\D7ƈv 7kxt? IDATc׉GN߹%8)R^c<˄7؀:BlP'b2eSfL(ܠrT]pČcvC,EVoscpH&Yzvq (6؛P `-BDRb̜cLSYFɭ$|n/+*0tew -,`Mw(8`йȿY,KL ,h0Ë5m PBvHr&jLTꡄbv!ژ_`%%Y6%hx3Lqh]7,!iKPN)('Jf| %vr0HZp ݶ'4$hNS{78o(WN(/MU> fʵ &[m&6#.R@ Hc :eG'i9L/aVCyiIV(dޕ UhKsyawqyᴽˀ! 6=Z b=L),^{Gl&}_D\,J9Oak>1.|c[ea1E^YPۦ\1LsTx-zsD`@k5 ˏ0v/P>x!Q(H;̋GUA#=?+1J2;V<$04Pl}| wCJZ M)$uJ9SrیfP3AzAеݛq"Ae~Jع[` Hޑc %%A'r)Hd1#RE FQB%j _X~R 4jݰ mCk$ǔg~$-. /œ8tb3QCW఑cfrvnIJԮgLXK (5f$csHP=1Cd0M ]:qETN:\M5⻸of1Jr1Vr5h$_sUǦ[d\qd{_m=XMָ6)}͉0̍A|5g)lKג2DR҉6^B0`O[_jRp13lS %`;$tlUqj%9(!cZQBuJvv`+R7]fL~fhGaJ>9My K!'킏2{Q8شa>s`E}ɁD2 sީ$o*PN+Oa]&E{cy32oޛʲt#$Q&$]za{$RQ挹Dި rZ={IVR\Xfwuq[;21>։"{|D8pƛ0J31kM2$PsYo ^2Cmi*laFȍ66G0@81|C[n=j`y413}B4 Q$ =ItR3hS" #L%yjbH05/C~nӳp _d9|,59)°: VG6x/>v`4H ! ra~8fkBGHlA3x&K(|tÏx4 ?NEuHmKD1@`!M 0 ,XGP,8BwC EHyرk/ SA#4K IAbJ+%v$Ȇa^@'L&+.|/s(1~DXΉŖIyjzLd; Rَ2f8 C3QW(°5%dBp@]dr8Rs~SxJrnlyԑv̚"؉Y)o\sjyh9MF #ʘ}#EB|ٸ#LE 0dֲ-Ђid%I,+ EP{m0֮Ajlm\&wlôFğ{ E7NϜ8'`м`voz2R)-!~8rDlBNDrPoCÉ$p %+ Z5ªwM1;>s2EbAv2c>cG!?p&Kٻ˾ 1XF]Ѐ#՝w)?{ y,1pbHNs) [vxZ{bdL 9F!DŽ&os(u6}DܙM@`Ri$ l3fR,yaFRS8#^8Wb֮9Ͳׯ= I9TRBY`}]a`O)[GD i"='3^ev:E{KqjK$It4hBK\Y8PLBbM V1< EFp<&Aagyl2-lS?UPe'~~SvN\ GL;VEyCl_>E{J~:7vJwLgۄr}en>L]Re ܱJp36C iߧj[Ցw]{ k/FF1 lz\fm^$(QX3HYwAީGxs$|5G˂̜c r3Tef)'uR&~ 0F dF}Ogb<8X9w_3 1fF .6L`JËpwO.Q)dH#&w05(av`ܝRY fΥqOVW}92s쓳razC/_&Zik]ΰNLiIKIiζSس>(Q`}%Z@\Lz-{=\tU{D:xX<~A9¤0:b9d< 7 ด4Pž[|H?{*9<s614cm0FqOIF} \ 8[5v|*sN}t l=^f "wo Z`H}1Oa{jʭT)u% x._FRTb,2rCkokw>BY#׷RMJ;ʅ0s-Tp/#MXh}37O؏ĢҤEJwy\xbx;_ SDX#4 3w)[Ȟqx8)B3J[/oX#/d=e^cEF(1AFM}L+wc )2,2e`O)Qlt'j&4e^vA:Π٤a Β;̾5z-fzctO~2A4g'‡"*q Hc% =.2^&0t9M#"< 91Mvx!;Fr~"]5)6)bjxlQ<h" c?)jON@]}͡ǚLk<^s>s*-RfE|R=K N6# >}wŽV5rIP_\"Ոv}m7L. 5,ŞE'2Llvy<ٮTO:O\) -}ne!5oc/߂U8^L hx"l:2RNpxg'Me~p\ A8쇻JoŵĎ=ZBFM"g7KTJ?q̘T ~8G?{ML:PXOOZիkk],D5x gOD, Sa[fK{Xqgg| /wX˞~^'^HVhTW\ʗHk >RW7j}YMK҆`!4 w!-p30 d#$ZFRdJLf-Tא֖ {ʌ_Bá֯!ġ]U+ߋ4 s㌿Vfnhٔ; -CNT/OqI6\-q j1]?G^`s <#8Uۢ3%I0aAѩL5߄+T:X1( >{~ڃBT=b^  ۫ )jCEH&@DB, ܑ˔ hid-le7 ^3ty'gϫUsjڴ>: W\5P |Tdk7 /X~$ǢqDAp^n t,';t( slqN퓒OmcJÌ? 6sloRvhqtF<̵a;}JM,!^P6~pH.Fu"ǛNyL9ͭVa a4>T *g"wν"EOрѥvqs)9S9|%'Lzrχ.%A fm׸VDgRa{CO3[簏KfeF)x6Gj5IyڅĪaOt9>@킥T 7/% exD41jJ#GLd$f"*..).}c%,)Tm}rƚ3=2~{>k2ZCM޲o? 3jA¸p]7h" FK3RZ+`s3:`PTgJMUQ`-ڛO9tk;s69?wu8FY23#0 Fa9L*΍ 9s\{'9Vf3Vë%hL8uWDe6Nj5A?Qpzgx?#ߟ䬋Y0g#7#yw3]J4@9% .,$N5I1} ߥVØр4v[i#|ׂ?ՒL`eD*.+aVBī´"Q!iFpvd9ZR<)v Tǚl/9* fyCM\If1q=>lsFAKq:%K·AYPuiݒϱ%sEK܋$ Ό}σ&jJvop ٩E-їW;}ZGvi2#\D$Jq\x^&9݀Sz#mk'lS!uV?[+xb 8A4e'՚6:~N`ŃE\|璔uj]pt)+-e-u+Ju;N@gl3/1mF 1u͏3Лs4t +YО*n/OvGO(qw3@jݑ3 ѺS8*,\t\=e"M9@X~pۇߘN!4dQ>;ʼh*[F0>f?Ǔ#Ť=b*}5,ͬ[&Kuȥy v4hꖏCx D-bc<4x?;t UznH?]"+%}k\E[ʍϧMzc"4nC+orppQ jPS)h))΅K|*O?sa): VY&tbRߏXoJv}AˌkAt0i.1 'Ne#K$2.d.g 16oXxl[;-kn?v=$ji: CCLtfNꚹly6CÖn" |G5X6D69f{ ;ŭ=)ڔSy?`x0T#,?̹H!3_˾!58Xk2YmӉF3ؖ̈́t}F8صOxfYɣ: bgyy(y)=4l()Sg pr`Cb|X#[8IeY;E"GHZ-ߦ6?ɒ6IU]+CbbXG@ oBB&1s1?"t7,Ye1eQ#h+$N\hQ %LSD'% ZC/[g9zOў *wk3m> $fwal/A$Kc\`g'Xee>WY ?{yXWIP8 p3Sۺ۴6qIϽ1_3Oi'~RIFk TG]Mz3ٓϒK촾=4W0$ɝISY)%XCDYJ rns,ҩykR54e YSe%yVs w9]wvirMOGlpxd>y2"aftw"}!"<Bkn[NcoL韥8%U|whR:4IЛoa=a% @ W=q^ pg3o B۞I0ΈPSiI\ON<4sioN H@ [Mkm8WcVkZԲ0Nzp6UU fNG 8ܙuw 9zzjjVRiYnwAZ@mUX‡xv)`A˨;pvaQIզe/٠+XA\  fIH]AD>xt hZfT9"z6*XߍJxEmSOdl]8fڦ9.-jz.>:Q-8"K{ʈ1ǭU H0aO) pU1v-1侖X7 s8bۜ3/ `t3٧Ru[3Wm;2ϵx3ܷAPiKq'z}'٦". ˭0!x~ŒLEƸhեRr0ԔPW6 U8dC x;Em u؝#.Z܊Ak͆Yl>ǣQ % *ө)@D8N=L~> Ps6A3g8f<nwΟLg >+. ]sDWx#8#ubn8hWqKئH3%ur8'oL9 W׸RE\ο}2^m.E#Lo[Ndt `mh,Xgq0ix7a?1K:cgsv_Sr={bg+Vh4C*89B'xF!K1Oǟ-އSrZD^nY"D~qv=2$ئ,Cr,ɓʩIe g \+%2Seڝ4#pJ],w>D ޙn4۴\fIn>$`/ o"_unZ ŰOMTX1]?SFZ6ȽxB+|׭qk|ًS`|Z:6pos#?BnoenZ݅[o&,Bl^=ǫhNnl\;E<5OM=ɲYIslw6A+(\$ @upC6L'>L_Zb]ιQC0a # s68Z!vԜ p 7mMY0Z:{hWQV :A:|#Ì$e-6L7s{{(3ҥDW%J QìDHfT[t .N}vAOwiv 46j7s_j#KAT;^Gh$ӯ5h+lzGm1.CKv3GNfsEh%}X 0riX)sFέpd8\b]xXJs<އNj <[---0z89|  0Lv򷴊OqZ=ކW@*[evF.SEmnɞz1Ў2|zjJr7#>v:k[c'岼k0ww>tx)F9Nmf h^NSvuSiƿ`1 ك͝sr\oML,yq, -X)ylOp>c[s9gspDK@o ΗP^xDm>)+d VfvBЉGUd;F-K^ׁ7ѝ]G0Μo0Ɍ!~% ナ8s`LeΓϵDdqYl=+O rR߆JnVW@C\7h;D33r~9.`a]0-he5X8grP/n).e̢G6['H5Y!,ȯ́ &o4K&یwKqrT+0djc8þ{V; 玝M!tAmQnu%U"%x)1bn 3 :iZ Jr! ;w/S]EܞnYT(A>VTbVl}9&\R@Nk1`:X} 8c8"@hʐE+x?չgG{xs8Ś+rX ]϶Wv`tDΆqk/oPsGD7Αic@#&,,K2?-cZe[1W{m(6x$s-ttTd,[$ 4؋0js-9;T&P^{ sLp[+\a쐴Rz5TUJ 4-bbM^Lz -q/R|={f(kkn6K:Pa~j&^!ՠy֞(o,} _c? Ϲ 5*R 4:hzz\{Sfƣ~c/0+9ve?+n?FN{~QJUa|LISi \yy%{DPf>1UG'#X PTYY m3$gX'ghS㴟\h*mϙ WP:T LiBˌٳq" @Uh|\Ua}* IDAT^8ck3awj-F`4ƒհmy&@rhp6w_l`"\ՠp#lX7^m&Ysumea?R#Ou.<9}3p 0a{0vNGW@-t 6D8#aM'fHIj2l\dXD E}<~|?4x.̕IVi.͎}!k0^/Z G'#'4VBߌ *NA]!Su"XM`ddY s_@LR% AܸDV)m7Áҫ[d1 ~.?O[o gOB.4N$$pu}`OI f =ǟk15 rĂNǁ"DKV+4h,}t|H6IY}~1;,s¢9A j3CG~L>Z '|9P2'75Я(tw7Z׊k%fD;!݈K?,UBZ0 BrTGC)Rԁ+t3Q3T*u%G:fy9햌-"m!Pb6p{m,8^׈#']`Н#ԙ9 F;J.SA3&;瞫}5IEgbjk1쐀[X{|z}Nj2b ˌDвR$X{(T"|qqk]޳|):]qAjHCc0%T8.]kcR"̓0_gu+8~|.2(@S}IhoVNZ̘{r_,Z~M2VKK+SI V: 纄js q̢P|$عg+9}F BhP@F$8%0Z>c'䁻"Mx3p8;s<05֙b} ̉Nl.i>Ȅi!LO"ƈ84f'|w=\\$?T_r{xn+m+e (oE_Fuh4֪CAXe>[)h6tSJX(`[2&db #3 RLvl<!tn>WqJJ>\8- T7GzIբΔ P)`i oǃqp0&4eLNmTmZlH_.ʏUm%X&nF:lsp,iUgf G{.cD:S%LC^Y)V1qj0t-&2 +M:bn]Te'y>.\~3NE.ij.T|g+ =R\м6!-; rvW"-Vedq@\r:w;pgڐ!Ai/2vɎZ)T=J efމ7-dF Tu?284+7'zwhC4Їj/j<- FjCdE"dY5. rYc[ rQDh -ŇCgP3e f'ij;^B!dGW3퇐]݈ |zW!v݉87b(?+Dv HO,I@nQ$Jk/f,S8*paSwd% WsD=0dm8c`*PE57Fh J,&AgN$k$WmqV[o}nzeI-fh9`V;|f\ˈBM"1nD-ڀ "WF[o/4_dDŽl!u:}$DqWiZ,Wl-2FD85P=e=z}PxoE ȍY$`dXki/\W\"v Su/7[ˈ2#Hʩh+^x69۔IوHb Нbct3>#lL5S3U2\o4iJ%~;6"YcDz}WйR&l8z8Cu]sazBq /Cnq}9}Pzz@&C_ԁ 8}B [;n9,KЙː/L#>pm6 $T,Yɬ[ AZi-# uv <#VZj$̏d9|˕y2)O[f }cֵ_:)y˒6O;~St4Zy71_,n뺿xAVU56-́MM]DAo,|(1spxOa9 qۇ\Kz.va%{\pC0q1œ[s9!Ug{f}p`#a Pյ&FDs2w*cM.VNIgSF!K0d#KĪ *ٗٷN!Qè"W k=Tf$pr=/3jP42V;'zhQUUFq,n9ԏSrHCp >u l؀02f{<-aJc4%r11uiUk\%jŨή7or6dҖI'Z\WenՂB%~a> +`L?+$#.-܂!d˜ j-^1o "̰5O#ł هO (sQzN/fSVoP 9Li4` Hn9oN9CRB],S퐧6ڛ{]i-Yea>$BvF\SR gbE5R j;rQ,'ȖEҊX|މtI~le#cz͘ZfƱdM2a {WKQ !X` t-g ʁXϱ3C̒X0<}7H$3 ey;ns$[#I-X]5Ni'[ `&eK/,h6)øtbwFrƑIwv - ӊ]J0%:I nF8o[G}SLyďO/H\,m4W@_P\j++ڸCAI*+Dqv[fnZt/=Cu sYž4c)* KB%pSᷮ<>ۂMCH ګR5$cy+O>ZFzd} 3( ,S_#\ >OФL6,z<9]up kƯE8.~K&*Wpi!ge9hu͎nWz6{wawہ)}b*i@$[v|]j6r`<\>$Od7y7" *m%e0L;?/hfzHirN`2$5k*sfd!% 3H|Hr up 9W:j02'39:ԼF s\r)m)ͱDL8,Ռ܍J(qls6=v 7 BwY| w4H`;eG,c'P4ty,v@ ©-ə0?{;H}ܔVQ-^`Ok0ғ4ef 0j}%w`Rm+6T8,aej23?#Z>ܪoDh.N!Zu.e ´C{`Nh<@LbxL9HQ )g@onMd&Jgȡ@R׻k05X2X}DBûhJ=w/ѵ >P7FK`~}?sQ_:;8~1P--('݊b1ܾ1;I 3q[;l) -NKhRfQfB}TX9UF'1PéRM-[N'{QAn?M]7՞nwju389>t?ժ-AdC%c~ځNtɘ܉&gpt)jT-bf@P&dbb Y҅ Y}Oku )d;5gA֐Dib*29gWU)vvw/U7To:x IDATր=AfYA}Ǿxt-'%AiҩHZQl0]!~d Hq*OELs Z+j(A'_% 5G9+zBmR%dJ=6AqA!q{͖C jjRڎşC `Zɚ {c{C]yc{/^HmqD^ l\3DOf"LIΜu\9EzZ+\ S'4x_>nD5ˤ)o=Bo8\kԛT`D臸v~SWw9"£RVn^8Yn$3rO;W/~Ⱥb~戨S Ň 30 {1@DMp/};eeUfzƷ#8dk|Vaqx;虭HV<ފ0E2(,(ƭ\4 tJ0&DXZq`!BF1SSs`ƐL{[/KCd#֫Wsצ/t%Nlkg^X,ɌVh zUGj3UPhהU 0a퉠# @G {C]?Cbտ]bAEmDYunDn(q+QC,ʏ ָWzQ]h✶4|w _R4o8=+LFZC z*4dr r/jO _Y.I Z t=U&j$(-pTGuĽ=_3.}5+&D= tuLi,(Ms0`lBo>q=#P^Xm3XW`Ȼ/O/ϏåZ/ ]d-ВkݎH_JK+!/e @LBHgO/,{d?H-84ЁC;=`IK PFgUQxZ8kf $V V~sYAp|H03݌TA0GK$(m\# 33OCJ lrK0x+3u,S  a|ڄ+|/728Y2]8Gj1&).ҩ}kU%g%n%D(Nb 06--d;d,~eghAs4"9[B;9ĥ`Xi7!S 2%itgGt/ YawYIdJ\<9rl00-pbz?ml}Z%xئ.:I 0_0`L53XqvDX.f%71ʖkLk0يk<N;j0E4$,7,s``u8u=2Nck$^zДBKkkn~J=U~DXY\;dͰ|sSCH0DRapY;!7}۪X ~* cr#܎86#AnE()A8_q6װ23˫tl%]JeγJX\  2lrۊ>`cDvm41#wB?𼇂1tiVq̆.!Y$[7Kj1 V٪C{\S.HXX\)sp>UZCkJKrö4˹긄 ]!kaHlhǽ$fGCHD)q.he `k֩P'`49͎2,Gգ1XΩ#'t3N9L[[%46)' a|sI lcLnI\SWuXE0v.ګDKxt1BQۼq/BAߌFh"z;b P41uۚcysJZ;2;θBLe `aFMI$VB)5![a\h22/9R8jw"XSGX46X/4K ܁q8&ܠF-Ɠ,e ։ h~ 4Wv1]Lul[)p3*9^a||7_&s?\9p/9Tjא ($0s2.e- .piv#DBct jc4 v0-10,5ㅷS8;oʙ@Kbz%ᮛg =Wo ;,qN)aOl1NlE-98ھx.>4i-ܽ^%/faRp"Zz][P` $y7fP'Ew*̅%[R@sF#Q ZS]<)` j&#x0 ؈8ےE "$ >>WU0M r@.BRYZq|'aKp"$3`DJ0 ”bru)w{NlH|ƣo[qے}:7>1W=AjqF~%W.b4{y55(1ӥ&i7OL12Tq,a:\5+P_};(S.?ڼv[f0R3l"Fm^=!NǾg0 @4` ^Ls'֑z>/s^詒ޥ[u"cZ$g~ޠKlqSՠ%3 qj[tflSCT<,)elS`'@k#3FE7{iʡ{q@CwZr=_a9Ը`yʶ6VK=JqU7RԐ8͈&s#R,Fd3[6n9Kؔ )wu$ V)scX}b &P]#Ԁ7.2"cŴPݫfȟ2VD3a)Dᔣ_IB]@RNO= NfB;k%iySw%$Uc;YEϒKJѩsA/=Tu*k-uOd]j y}2k>4r\F'9r\o1PP|tP^Ch y7 )eV].17ugKP)UL=7K(UniuȏQ~RE1'Ȅr B`CZ]Pw%΋N 8.EqE5F&rE h~;S沁su֤ ]lQ[{ʹԤ|,KR0?/=1⵱0!e s3DE[;l 8pjz' 8H;@X,o0;b4; b9GwV P,4^p|y KX,G[U꽃:/}Y`P٪]ꦭR2-k6V:_Gicߏ0",0# p wYc wۼWaO, mtNN%@Hن~Y"2leH]d;\:ʭb4.u1sBGxu*tlBNl_\3*J $(ǹ=?۵u+=·3PI͙z4 vbrKE1ȐlTv 90Yv=-y!Ri]jT>Sr<.`dywnDno꽻g_zF3CRA۠LɆ? 0 @ ðaS, 4eˆذi Æ%& A$pr83=^jy{fĽ?2o扛{#:n˗/#22|Y¯p nhCVXOxJ 6uOi҈c?7ߍ}O0Kݽdв7 !e24dr~Sy-MA!x` 4bDbAqlFSkx)%lJ ]7y/V14L-̏v\,9ixk+ZNE$BS,_FEx~_Br0B2h}Xv- zt{JBhEgp."`>AsW7۫׉Џ؊8`/vc 9>̊o ԒKx͖ jVك HY,]<8TkBHxn, 9Ab8kfA7_ꐲ#Fhw6#s|"7밟 fp'ԅ mp# C@ ۹޸5}).vaLM!W-B{)66i|!XCEhYI6o4`i2ʪ9 9S"`n;.3@O#u<7Xc?>n :1 VNkϏEH_iXBJ0ca,^X[nx MMq (eڈ7`36/΅0flip[n\@a薞 &,y쥴q.e-N9ݳ nN$GЀ8^ynEa1ݏewl"YV)I\t5.ɜk: zsfn!钸Цmڼ+-Vfl%^^;%y6uV)gy;,L1=9r[Gn7v.@נ[)ӽlYqu4K-}GF<ǰ 3t9#τF,kY8Ns=naiDI`ImJi$a Pm= #K1"|.-[ɿkx"GPYӐS2ӧ靧4W>ln'`r]\MoP;>ߨg%GJ,+vuTo{)DkB+/TAZlV,u:_'YX7gBN\HYrTęo=k3Ꙙ}B4WdB`[}rY<B0= XgyGb?`6`2 ]]aw948,)D"|5L[2;P*Vl]W t/Z{=S&;.D<_1]>L8Uegs"t݆P`MI6薑lm-p [цswZZ. FN|Ƅ "dH&+~//piJx[j"o 7Ʋvgy#3ZtWo$~ldm\o }p*Ped;79L--#9,-tlƞbܰ*+adעZܲ^{"So2"Dg]yx*Bpɀǂ.Pž T|~n![6Gg"LE-3y@B>vh ʊs!>sWҠ[9<Ɔ|Oh2Q^H"uQ99{&V@596W9@ 9sF:55<4\"YG%'<0k^Tb[q[O?LY}le}FNM#oܜ V,[f~oszαk=lT?@* =vFhs/OE6 .V(G:Ȧr؅%%~a~ky!PYw#B_SeXY$Q/o G&N# 8 =S6!(P|aڸ];IZt?=@z۔!|+4EY);Ͱ^ϙ ש}-o>aܳSnz%Wy?ʋ)rG9' j-J}vq9DI IDATEؔGZ{כ[8 @֯maDx-iTe6vz*g$X .ۜágM^¦KQA\PZ`LNBlR7' lWpŚ k`úK]8#'Lc ;ˤ ݎBNי.˔ˆ0B=8 Tl ݬh/2 PEj*BwԲ@cX֛1%yv9FHUct2!B=tIa3 f{`?d=glVlU{6o}Cߊ}󥗒J"t0E" raK0ў1ʮI=@0)6ϾDB.vX:ڧ[KKa|7&Nl3gӐg.":ú>P U>O6 ?AAyk&%Hmp"X U/=`+_?tNz]҇5GMeb\Ysm5Ϙ1^c#0mkHpŦ3M'X\H M9Iu,%Õ%7CW,{sXhms$tA/p$.e0?tw5@~8@-M0/ dw[Ti gc4<c.!Н)'l5 aBW"$[[_N'UNz0z3R n ڎ#5;!$K9NH a#0LQߔaְְa}aI_$`ۜT&ᇡf UMp3i3a 97\OܚPSn==BirjWm-<@sXo*V*ޜɍ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5axXְX+:uն5a M]6*1sS5RuX1`g狜ݳ+rr3kae} b@(_?O =eC3S,s`|c A:)L=^oX9 I SC9wa}DB lta= kr1@b ;0V.|~S~5ϭbaohs B(RfRJ \L@bK) 2(e2ap=iDbI6.!ׂ8s20aE[NL4ŐR:e}.}a9^{L`[ }-&@"]-υ~:eʼF{+a oftV.>7'1U~k?DSbsIIQ'="rX]{#jUX.^3NcLI}q*=,ɥ2lx qR>@Qޡ_U=54e.Le.˅9ɥTH!1+ sLt@tw. rL4j:۔ sK^9| = UkwHɣ,1dviӖL,A7rLJca|e0i\cuL}H74cݷD1rl2{ge*dO؇$=SR13!vx~ߜa y_2ח99[yS¤w=~PkYG.ՌvQtKρm#صSzi$E. "tI R&ĖpNE}u=N65jXhDz΁L ͥiE 72cP>H\ 9jN{- ')6p4~Xhay#.zeVvRUbHCZr}jK{lBͱW/u{4,{s!G$h5efX{m2>MOvVC(&R-rQ^kπzJS游ĶRBl_ v50ͷf>WK2HBhw\oMF>3 A%׍ f=Q>Wi7\߁Li@M ֮ Q wJ+dNVJ ӟbEm複A8 d@4 .oqS]rK: UqA6݇v(G䄦c!vRLk/% @c!R!*P]enZb(r, Vi1EB{ϲ1\%4)1ryC4]`nvпOد*DC> q+%\FbN1I=$ p+ @ҡJӥ5fo+ɍ1@\+4SQ % Xp@*?e7|(1R0E`~@4ˁHk '5ɑ3O'}lAwd,d5ն DR-1H8R/5rA.((A3 }O=Cuf%͉ 6"N4(/-=02@J,AHn2jiC%;c&pOfM#N)ꚂЩ ­P4/ sKGHȨp9i@{N16B6e2Ǵv53~oTDd޷60d.цRz%ac0beaۧNAkW&F(aYҮ-9 kyɜTX6(& @hauS2-NsxSAAޱR#)&}lrd* Ijz-qpF@1t\#jI9hػ{:dw`f9oݶk]C1p2@j71uީ937<ѯPV> jlw`8^QfBJc)@.’f57\VU$h)}j͑K`(@JY Sbt ڢV7K%z=-)N+j b*gTxmZ SrDN)̙g<];4 ePsi׌=VjۏiMj墫VK'" ^ Bz'$rK>W*`UPf)p4﫤eN̉h)R=I0 Ji} S kגU75PBeB2Wn"ީvh%5r`V0hRF$ s,~)bfJa2GJ\|!r/^Uݕ$ E_rP)sEp3S q(,8]hFJ]$) 1!~)INOՂǀ*dP$} b ,BpZ2};HU&9Jd Џs3%PQ *ʁjI߇g}*Lrb4Tu Yrۚqs:僦̈&cSSDD1yڅ.ʱmjS3 s*JZم,Zt?%Riͷ{S J#^:nx<4WKbbLTO1uET>svWkgc` !2#fg\T̆ y TfbqڈZ?rҵQFE[#0=EK -bjDxXeiR~3RDȘўz:м2zjR`ȥa+}OFٕڌ{"v 0}k5v%8;aV`5dN7"Y_j'0կϸfלY1PmQ*5I3l5v!;;qcIG ꔪT'3 7g/96HT7%/l}:wh#C^&补!́tOFBf?jtT y?l{.g\bیa~k07"P5~/16: 杇9x1C߱(HTK &3jSbI_ℇJ%*aXa*}+1~qSqmq.>nk&Ky@p9*&A?;cA\:2)'W~詡j񶛵NocL=6k^%ߴP\c+7"2s gsfqۅa= C @Ɍ.PDUџk[EL i!fiIcI?TMM}4 L w6m|B,Հ}.ce!MB59G]/m55ҽ ef1]X=שo66|fu!vikS_м:f @.k.&QN-ZRC>deW CޕG1gO3f0{w%>'d9P,aii4S3٭ص|Q.Υt[<̦\H#2<曧aZXJB1}eaAkljSw{~dsv4v'v^v>d~_h YN J2uk1}8jqv2iOnϏ#~Ž 5e 41cLtRls έ~>VDs'ha{_v[`؍8ר9rTv:0eҍ[wa0>n!K{7_}`vڇL=|9Cxq,<'}1cpʟ1*xjc s{\@GTMfU]e.0_bg+̱8;As:kYjcC 2X 5LI+LWZxߏ}TFx ι_pgζb&"h.$֜ t))z)y_6ڟkQ ZP+B:TÌU Qq3%TPy5f}C@u"eB-5*y LMz}޿ c~=M¶ 4+vyv;.eV{@ԾUUmdYNy΃a_ϐe=pƞ2a;L==3_AUC{vw]sh1 GH1 @68Sq4 \ԴѤ1Ȓ} X>Oj@>|dس*!7-PO x[Ԛd4EF4?>|1jF6h.N8z6)H1V)0K Qze 0mTC^ƀSJ a3uc&_zs):rs%@k^Lͅm{ Di]Ig KCI6>V_~|2?Ed> ff3 vK\9z @2<(uI}u˔KYƾO c!k=K%3溗2O"'4%F=^FF-%5М~7NþO%Ihbkxr3KFZePdj3}O/T:= R<=BsmI<[ r4,X8Cj @ʿ (PXr{j2OS ǭQSfÈ@4F/ؓ^Y5AE|ڼTR +B\h4F,P$OLɃ6dvdz'AZ6s4wyFvy.F(x )ͽ~8^"0 1{|}Kd~+ vtY4s,w-3{h4Zx}~ߧ3R՛ 9 rz8ةsex*lfdOADRH IDAT{_ -3cT_ztĻ;.&/sqt+˦<̇nC2Ge.4Bv%JSz6׼[+fA)3&tjfTK̰Dhp9/g \N0>To]J=|Nf39OyqS\c0\>s=4藹\;ݕVYmr3sry20$Y=v SWC\bűDZQBg @Wx_ΏVS&wlύ-:Oyo+,\ r3wvi}c51S@חCx-5`nOiE) Sy,S̘K>Fh6ZK*8`c\crjDX^~<Ї[ upcb׫pJ"܇Q}6tj%EIxvb?Dk,>'])6Ic@H͒>u1-Oid11L}~o#ǟ3}0?Fq@m.0? {Upse12R SFim:жb+d>[:0f.Ց]2m,h],0sB v8x y&rujzg䤁gs3;ѫ_ j5vd2k7=b%V@qr^I0+ Jό?3`&-3Y`~rWTºgRga~2'vEܶX{ZI*>b&Ծ,N [6H*0lKf!M?pջ'ig~.UQT8 TMn_-d:%]!Ȅ7zA3RH$\r)p5zV>1πYqw>_f-cw^ϏMiI0V)q%San%X)D%33c<^PX\Z#f")E.D}ZwoH9XQ䩷%o@lLa( nPC"a .Ҝ> bkS=~],O_!iiFZT`8%9L/sm.(* ucc==O20ZWjuHv, ֽpY)2{is:0u9PM8^6ˌ9['a~P'dDQ\DF]I+y['/u ]F#__xʕ^Ǩ}[*X!)&1EFNz& Tȍ-åE5|}~zɟ$2tq덖a[7WM%` ɥ[. YSMtZxocc`ID"' υNbo=OD[\Lj$pDJbUaƸtDx*<-yr!u_tR8{3n~v-rs¸MIzZ(ʜ)'azu7&sL!oqSNI&^?L>\gtͪZ`qvMd=Ƣ0#ronF0C'-e(naS/Zh&-CKRȹ!ns.9h S<fV⾓ <ˤn->1xuWzZT$E?B \bX'7=1&&VoΡ8C{|c3tCv!`J҃dn]~xC+v u'M2,dM()HQpC%%'5#W71טH2xcٍI!DY lu2|!519-68vK}DHÞʇ7%ӤB,qK'%han+,4i̞@YE3@sr&`[a_,$a=Pztdp:|bnL]qp)|1Q2H4 ;ڬiQge`ZPY8v` fAB\FJcdH {uާ ~+>~`>z?)oOo/s1njv\XXHjd4,|xp^ZӉ%p8vfcp`g8)3PeoLOFcԫ{ gAa VmF\SJHXe:AԸB_G[Qg%~'_UUG,n 3nڿη/_80rM1yz+:ٕD 8E|ɑQIT(&PjQj,ܠO=roT1RM r1?/s~z{s~?a"<8րCjsQD2,9[q;`=hҦQm7βr d93N&M"h݉;;axd_vAdȘuN ӮlPnaUSt |-cRn[؁*FvHeՈ?7ۓnF`lN6R{<ޡ; .:#h(>b!vJUiک6VWNR{mso<dkWN%`B+ SdbL >- &"P)%UmId-w[lGs*9g<`\&1hLI7 1o6Ҧ v ґ' [OKTM) KY&OW׸m~7XQ(o4O'F1uo wgyaTNYG&3"2uupC?J?pJ>Y3ǷogTjQ.4=`zF)m[\5oD˨Vpٱg(u/1aXEX,lodKEz=K"}JƲ^"+x-p0&W6o$Qgv &o׳# o[J؞JA ӏ~Fw$-LR@՚ ,%swvT%`fn1P̱W -@&Sg?x@HtO@6`[:f(zbJ rZ⪵z6鈁a"9kx~( xݏȌ֕,6I^, &9/&,ΝhSA ܀%P:W%1.1mX44Q87/mv̀SY$*o&h"&k$R R3C!kJLc`N":{0^Dy=6 4Gp'%>Hv][#v!O\3GZO^x؊r o&GLŷcv2-<9F|5d$)W95G^[+58Ʋތ5A$ JԼ(s  sp4o,^ή"&{d7QVͅ" Ka2ܨ RBf@%ͱT8 uLX?DzPfR&ԢXZbXD>bܲYo֝Am]V7z-~J3R,E3rr$c2hj_'ƫl1v}2~#<0x ^fۮLVÕWg'inq:9\-E0Wv=i xy/sZ)&)CJhj<:|?N[Dhwsvq̳;vm(ґ/g:]b(<`ڶ.Z\c.+oْj_)ŗqXFRմʐ;KfiM>lg=f`'KL 5]a5^muH7al `i=-4 \74KuRk849(ij;an0ccv92~\@sv wzܞ7~dMyf,3唇ek]s+E ujNpwH [f|#U Rl02KO:MJ-4b 7T^'Evhp1yDcVo>O08$l>4"AMCT=i٫HOt@y{JD^sM1$tS(mQ)yJ&f~KG" U7}dEL8WܺNod,E4ط}*+s)E2B|r9N h, Wn)81@ȱض>e2|%K`|38!{AX$M3X֬O| sS!y2f C3-m)Քs55HJG$U=dDnZd.D(<s H=7ךL._i}?a(Ȋx+,z)̺5垝_X4e'/Z[0d?w½F!c ForsFm|MNo$|RFAwoÖjlP=.\`"Z-yM3xPVu,ڋ3س#`~&yQy(3d2,r/܇[8ԝEg.ӠDGW;bFcNe qs !j,1vťT!^1$;IMLbp;¿DdJE DD`9Y1J1JrR(r`y sc@C1@B 39&8?j:kis#^EƇ1&Ӈrzl$NZwaQ{\"q!0|@@\6peԟmRr57zwc`z0͕oBOlu91\%24Apj_H -AmGׂk3[׹)`9ɹ1b"w hjwT2+z't[vTAX\)2տ4ܗG"HI%i8ν^'+9iܔ6'PfQV4.Lض?VgNٛ9 dj]C|QN$pJ3Ku)eWGF?4yɘp ڒgiN4fX-.ZQWb1F%3 SdPka,)'G"5L -_u-~,]WJt0(;KeJwLtiΝfϨMXgg;6ן3 >iF4<YsQ&nf7gbx! +LOCDe{Va%F2A~nkX) g|hwF:RYf8_J}2߄+d`oSfU#, 2ηg"`‘RU?)li| wa)SX'֨͂W/JKǴP=_cg6 %آCR}by5j+a\!M#1`sEL3yƓD {Xalfa}AQ020Cux ߚ}N?38 Qi}z]}8/BCv*)ej* >óIM Wd#fȇ1=xr9;Kf4;@~6DXd9C8ˎH4gmq-qٵt򵪔vJ(7ǜy= 뙮-.9MdX.JKX̑Əsޅm>6R7PpC7 blJ[6:`YsL!qJm G4MVH%= )s5Tdf]|LޕS)y*y"^"#AmuK]"U6\x&]kn`j>U`d]l,5YevBxVL0.A7S.Y&VP9wE(5l֘\Iy.7oݧz.9fo|pmwHx4M; 1#eu*v?f.wLk>b[?Xrk+r\a+\x)G3w3&|ځnUBU]4'{!O`.m蘳Z^& s2n4nxUB0N~:#f&|7(`S?b}"U,Mc19`ysdޚйfXnVN'TJR2Jp͡cjӼMZS7@Y.$"nx*<.~rl(Vx]'yr9(CGMz'϶X2UʖQw-nK< a?7=c JM9,9܁۔Znn\c]KXY$ yU9mȌ&!>U!>]*)zw1Zdx%񊜒ܨ҉fá "h6PRw{^ɪ 0dþ!`safpbsp[ $/4-3Ve,ا[)֤sJrN\6|؍$`j2@5cΟ'2D.CLƔ)1wDZ2}F=a3)7n#_ lYqb$rՇ1g0u27ge3^n+zfʯTx,yT>ЮӋ9s#iv߯?lKfQ_\>.fCbm1Խ nPیAs[eyݏzS/` &j"_}p-D9皆#rL݆G1 }Uj.؀OX辣k:Ct䋅ډHxp)7bL†EtSQ; ~ [|-\MBB)4e,gu0oS)NXRk s>(XZ+F<}T 23lW/ chzIP^wOI9[@ʁy~j1{k euBkWu R$N %'dZ_XkuJcn3_E}5=Sڅh%~KCTuU):_gd&9/$sǐsfBsC3sŻ?|4 ])Sհ) 84Bhk]RLQU̕ ^-s3|wYtںϴH"k/*94a.kK?o$—0luL4iGVap*igg=0~L5 H>QV3LRn}H DX*u檛 [թrb2Zfvxb,lv;mK&E(&w<[sZiy-v1/qwe0ע #vL$ wx5[moh#㏈nQ'wrͷctUe؞Qѯ%d{ZKK``-?278b%ͅnlΚSD"kgDr^u6@yg]\֑Ǻ:ux29ao١gOR*\#J4PO,r3=C8{ /9m*"E~  W2BaR{.o3YV=]ex#Rp=3J}5s QBt%W9nh &bBneBcČ,"ϏN;2v/âArO_n*bQ2l.yovrr'H77'gc6q9-xsE{l_D=GBXڐɄ͔;C3ՊwR3&8K9(hOd>%o L=j$tY#M,V/j@ 4A1TZ sb,F1@9"m41^fñK3f&@9)eı|}Kei|, 7ͥnewB-3tv U=: km47=g"k=+(Qj@L)Y24)D4HP(37"< PU1!;Kg0-ڶr'b9aGc"IC63 ˌa2ƨԱk}(5eRTF>@NGU|b .#)OYw FϮ~8A1y°3E*~6 Hs3|9%m7[CtF*[ "r' 8jM[S*PBbc[ ⸨ ONh3pL%sk]еPDLN7ͨe^I;מq]@36W&kF&2gtT  nf)W٥K iˍ[ut/js=#D>$iEy1£ Hpfc9/SR fT 1}f[LR&UiJ ̽TEBxK saO6/q!6p D*Tۿ%|ԅ&Nej,Ej@%ءSߒJQSU]pM_khޙ)UQɿ2b#]$8woa ufl[dn&*p{Hu֩xxw]krxխmj)˷.LJ%_ҕTJ7%Rn83я?5>;F`,a CPČE_'/ KY}%^suz$TcӄU1Ѿ#[55>LOn6w2P.}D+Ы"v:z(l\Y"i0"'2'>T;O Ax`44Pʯi.>jCR J;5ZZhf;dN5jcKHR!QHVfjQEĖܢcsyF0#+i^tTiZnP.w{"JM!t03]Vҁ- Ja\9gvl}XiA4e }6D/Ĝx)L~ ۾0\Xӂ58 Qb!|/B9J5Xkݔ/v!,fΎcσKI_s=ǠHzFpd`vB Fk֒) |'BkN8y֛MN+&w0O#4Rr)1gǐ)Ix֔_[S 3o}=Y Q6>KMr˨e/a9reVcf\|8y^ Lu !A"1z _% a2Ѽz2;؝(62G]Scx)$s5.NbS]L X 2-MN\͖Lh S/V5 '=SKm`h!:!;w „fׄU'["[:J`O0C( \t2UaxA5cծ-^ernxotabR SC/+%,b˔Cb7Zçt58:6/JQ3&t/pV"7ppJe礌,h+ NU^/Q{vo݅9ϑ)K ȒT2st8CrH*q?s둣!U0!<נQҥ])fkj'uK:yE|d jrAĄ?qw<_s1VўyƳXֽZgS >r ZRUxp:' )NDs$ ̸ U1+&UHL:Yu)○SVsL)5}B ?zԀ6FMk(wB$#~XY"]LjFϽ4>LQ yT@+<7$s*64Ѥhᙄaf]KDhT+Xƀ%,5LcwyEE8lLN9wwO1e15.KYJp–b)1c*I2Z! +hh5 7@Yߍ\"S[,pv&Hx:s%G3.M&BY@d|l3sf}MvVG?JfEai0lSW2fyz|N6$jhP!ɑ}"!fxP=, a=}~ ~V8 N2ӣZL|(!γ-gRrcNa%ue*}fo a(I^l=a:WOhIM+SѪUY5"~V8Nج}L%a-aMNij.s*DE2)= ۜa(v#jmsʤVt̸[=+C /k5HɖSX0o#϶4-圗dJ *,\xd&>ryA*%L-̯Qx*z`gUxmJ>!nḢ2q^G"؍xs֛*<98aLLD948 4 ZTc̳,9:"3Yrik '9!E; <AuFMRPՆKFlcme9.ScU%KCaj/s 額{Q%xj|$A)Wxfݡctk27kS b6\<"6W-\XC erb3g6Z1(0Bm+`$nsAi-Ktyya<9xS;eq`߂jXӖ˰HW IDATm\Q 16 ”y6s#3~|A0qnKH қ#(p|tj iÍ[",shVZ39wbJA4:0ngGVd0:pMqo 2r.D)NSѳCZ/X+Y2*V`Vy0(%h~VćEa4Svp!H7>tjyQyYV%š)BG{ )G)VC$q*ks?sNK5ݒRaІe^x HV2.23qDȜP}lȔr^52S*Yʉp9𘏱(U[9R Ad&CSID1h$pr CgHd؈+p-jq/<,HN0,YvM|Z:<qKBjQ)-_"-aր(ډގX;!=S(K) {qB[9uѩ]iܑ̪Yi=i\>ɧq7{<@ ZZ,{2_dpِ.t\&1eXV.|omV<9tJR K׬uևu}fogJX8}I>3({wܣ !ͪ ?,ssBzfS> )ˍȤ Cqp]3K4O6@5G+ҳ41 4 ə15\F[C>P;yq7fT۠m"=GvOcw9'"9{s nK&E!9l8c%fQwA& {RJhZ~T+/Hw]AeRVu`)~hAMRFAg9ȷ}veGbUK.Rp^L5޳HBx9bOϩo^ uJi"Kwvɨf^Ԍ6_9(`PL Eٜ8UsLEfb5|A?`L h%M^ɭy23AGVLe,1]jNFSJ@j$ Sb^*iBs{iD K%jriNP1’LH\R+X_F6I2D9#S2ױ†(Ӗ Cs}̏MUG7| ~vi"ohaF(k.% }GspEMu`\fX%{ e%Rl9e5fv3k@TV咜?2vN)-'Q!l+ȷC[q)r!9|5^2HNcd-cG1ّ02IWs~}E2bEyVizag=L:{wnbYI h>/VG3l!qhjP|seY6J9#.H^@ CN3jٹizf~`Yb{ {IJ``et$Xk\HtY(\b@3r&,!]ȪOD>?'ShZi|$R&c0MZ\4$Dx'w{tGY9##)1R Y e9~my~jaq(' O߿V_G_ϰmiq1tE'GقslHA!Br+5tݢ][ Q=osZsAU ֣+AEnA}]@fp}ud]xT/ ok>ÞU8mN޼ :%p_GÜu0akn95`{m\4R|5~S.4ҹBsdܧ1au y\GrBX6@&8 KGJ fN a9LQH!7}L"iq(Bh-/`Zrb'1H?#rdi|b|{L#,c*(jҚ^b̌; <g0w,}6 nb){h_xIZ@ }")KFrQ膖-3M\~R.F5I#x8z(8YG)*!/ck*3lC0ޠr//P!7囩usg.&\ٚ ^e`).=Jyr~??ZMi{Vcinlv1dֺ-nIzg,Y4F[=6#hRNٱJ}F6ACSH`KuHm1W^]+Gݖ{EEFq۬Z!wiИ(|ؗ02zb|჊"iIq> !1x/yW]gam V@R0btΘg=G, IV)XeU&7dݦ=_K907C?KYdz]3>kz߿eu);U\Er=1"cl`jF2ڐxCt8E-վU2>ﺝ[ DYefKՒED7zJcJO\+0g y+`1A|('XfN]QVO cVesk rMztnj]x9Ӕ=xtXs*}`_*>~l]Z=BQ48w RaV"̞ۋ)Qԗ0% m٪ٴs dU%'C+@IH́Ejz:_{X>q& .c2vX?ca$tSrKvs5:n̞W q_2QSL!O8e,zm5+bn0YA@&|zh0gB]L a3\l28'֦ f^bK˾;fqmᮮ/4G/,'%^bp!/R.w~o|όwO2ע<i|5]K2uM58;nZC]ߍk Icy1û<Z)e1zcsc=2k$7 R٤znp&JJݲP=l_!TtyYn'Ԯ_[ſq4Z6}ߣmȹhQ!lK=fqcq#{M+ppM[=SZDb:8G.@J&NGxslS/Zk /UCwy<@0^7;[ DLywJ] ܩ:֜`Rv cR/ޞ(yAK ,257(%0 ݥ»t~p%)EQHnMrSh dCfP-s\}EwΙ' 0^c`؆G0?_ELjPQ,%IO;=D+NqI(5eH6L5w/ejT,Yar:{}_Jp=3{&ez}K {N BSY]_ѝ #?3N-Kg;;wQ̬Ԯ&yue^˯w53^Yc`<91.ꁯ skDZq숦B>#l-sayMk)jN-uЌ\ !=_cē&ck(V*/l eg$%:^E&zϫ|zהQjWc;%#}U mJ&x(4goj@*'T-˱ 5N܊ѵvqK k -):f `{?s>{%Q5"د! ]|%0f"dk8W)Bs}ZJ9[3Q^?N|O7*ho iA)3IBx^ 9e=oF0s&̵#@pmօ<峐GռX*W!өMf*R6#^W KÊĆL.SsE5H^% |~>^D42ڕ(=(? z %ئ!r'Xr I'*(S,QP&rڹ@QkUTJ$w5rx9,q]>dg|exSlrx ^Dsf6=WSON̅l{0~@XϣO-<"܁ÿE;&/X9]JkfmiUpU) IDAT~`' Em&x= Scv+i:D;C-9EMN3JRފ2]NRLXR܀w{1ŔhPS[7BKEI#x<>J3+m!gp3U ]SKѕX{.޶hI>ߤ庛qTsaA\)cxJ`L=lMJBz/'YsԨ<|Ir34I\izjwPyɇ)K׀ڵ\v#EVbj{q@H%k؏]hkcv@*GOyI$l?%IEVh[ [ؙ̹Jl);cI5?%=ņsدA=`"I rL—7OvGS̽xn~a`(Vi5M^d/ӏ^AA&9vZMa:Kd^mjPMuW6&5 Qhy3'>Et9u%>?sa)Zz2Wh}||[3iViSO^5w5p|B+"FY)IS#P}$sXd}8d˿6Gkԯ-k0ѮC>\~wחs] j[I-Y.-xp-Wij[ u9ew[Qa7i39^ˌWP |}2KV i94ozA{?딄H{jUPdîf)}慜@gkSy =p4A08V ?g;>9!FI&{Mfo98?r4C$%`0`#d#CQM "< ;`e FXROI+yJ+B QXCiIQMo-~$FZ4RݨRJA5K}gPS)) loTnu2I#ڼ"Ф' LZNْ~#/=w=j D.~)0Um=G=$.Xߔ\#gspx G[Hjj),:Ko~JRIJ=kn5Ty$˵!?O;CI)2nww0x@zͽ`IJ mB6|,m$7M0KƔy̒uxs*.АjJ0΋eba>9s;U,jNbC&|7LئK@S~]ah{5㑉S;6ܚ/OJ^ \?%F&6@پeL5{i{<*1s;?GDl@*QwIvX-!j9;3 ;)lC-,F:Sĕ)gQȚ/9 Sz@;Ym)`p?)&TX&#b(c(l,u<3'rKb|F%HU^[Mklr{,E u"&ˇ㜗νK0-aPRJ ۝K>;{N*D W{ hZ#Hܣ*[HEcTy6>j~w\_JZ,r wσkнU_̅'cRPXCf<i.Zfj9.FKS 5EVe#3z~f~ָGn8/ Ãaac3v+F&DZ1i[9ƿ+q9ROAՃ-3#(ύɱN sTmCkW!6Ero:LƧ<XsfGns'$٣260=ׄ=^u-ZF)RX>5x q\|'{k|6`"cSpBu"0`ʑB+U*7pX-wCGTRV]vɜD$[ kBqJR2pr9f %F'Y oDx.3m6Ԟ]D5M6G*)YbEUy5"<"/Q;\$9 T{%UKk/o)X,jR5|;PH(GVi%&fzwcOui'[VaXlp;܉|e'%+N49F~HMxND<ò_ؓpGv6h `k)yէQ!_㬬C7`<5̥̥vn˭ɝ.Aef\w74ם؄E s[qx+(%DPPuWzʍO:͓p:Tj}y* eEt EA( bajVgw媁3GYP=tj'e<>K&?"ͤ*UfgBq=O"Z߶P6ʺK-= jn=4%h`̬Meq=3~~1u"kBpfsuߋ;-vB1|_|g۽`^ܦ4'0TW$_ZE:\!:`4IVAc>ϕ}#[v}N13NF^|nuTZbv9jF@iP`>5>w<.OTmΔ| S.03 wo8~0eSOxut[rJ^(b[%tt"t <| eNphhW<2 "X[!.p J= H*8:ZkVd/l3VPG`=^vcx>UյU ^/pE4='1c݆jUk^o<(ϣ#)}^oOGo./.gx~@5ݛ`/A AV:w~mLeIy[! 0Bu_ ?4KpJxTK9_FZ.CCa:Et{;5!]3\Maz2JY(s`|@x&a3̕q<{ +f|+=$^T{9 >uy; g|bSd?o;hXi#3?OH.df.ϸ/p~3@sps<-f]5Z54gfF<;~;" ,F YC `^>% d(5p-7w 4%Y9tG`Fc 8HjvqRiwG>35*r;"F͒{y=ւd= V.;;I l y8O*7T:}0ݨ1[%vh"DͰCun!e}_C'W.e*tϳ͞ b+K3n !HoE8.:{%Ufz UAa(h^ V (8Kۚ1qEJjзjQH!ih`_@/R;hmR˴-mZhq?aR卩Yc u7 aWD Z&Ԭ}7c~FsFv $6_8s0̒/0>f.LUؗ{܄"%ȺM3qsrxM!Tύ >$7:)I}K 3YsE`NS]p#\98Amol OS }p-A|[ZV88 4tY^ /ǁz-Zf^qn^{k ,3P>ToCp?k̰e|9 y2E6D@˼!ΈI9v*sf3aPYKHlcV38ȫRn܁RT-R-Iāodž/P3|XL(sk$L#5X4a E8|Z|/jun)S#?A4&VMZ54x5hCjCKS@)\12>̌ϻ=愲G3я<4;|dq#A=R!=yR[o8]xCsxa( 0栗W*W)}6 XJ% y[>CZЃ$qp}M?fΎ?/wi ֳB^×+pxC|C+CFȄ!u4&Z|VxVxܐ'gH^$J?V&pCn]겢Lu8P{7B-vBr7g+@P3 @VF3Hk"}g)o\0/XMU[ʺ<l0Bj_]9F 5z lWÁBP;;7g[8m{n23Dkxo-Ƴfdz2S27< ! x#/3Gwk`tHgPbaJ0!93!³ <sn87:Yf.,e_tZ5TΉn?xu)rNE%뷪KLrnv\ߏS:BP[ Op݉0|"3TJ=;,+ "T'f.N0T7L2eHVox2>B>tw_uGŔa B.q_=Ì]:?v1L%'k`|ڡtLuѝX4@U8sg <S;āGc<|qBg4Dpb8@^@~ Te.T~?{TQAXrd!X~ۥا$@4Sk $b9E.h}F4mRǵ)W**`U o_έg>pe"uLn2D&o z|YcG <{Em'ژr#C|/<,JLmcߥer hNڌ(]yMwUbY(e!oYU[vo}Jى&Dun( {vR2lf,-yOLdN5Қ$;z;2#oSCJT nGYˎI25ãnQS=5ōuo{< 3rǺ3>^jUSg~B΅\(`v>֛p\ 7 j2b(~FP!r5 nt푭QMw͘jƦJ`=yw!Izu|Tf?k\ hd;' >98 Ѭջ*#aEJr߯;\.I{CHnD!,Ri`1i rI\P<2%# BasqX^:x>`" rr{v6W=v>x~S1FM9q1qhIfANcJ"ƈYqVwjjDϞ?݀ %*[r-={7otN`(;ԗ"xىA3*v+aہ+C\o:*STiRMoziB%0&N 5o+r;|~%TtOFԡԮfRcs Pk#W%ۥZ{x{4̸Om`kQLHV@AIY^}I8QA4 cQ gagZQfgG?{e.^:G5-ȁV;?B yp=RN6J(SґAK9-űO 4s찦UeJ|8KRa{~uYO>qVDM;ʠy~FD%jD2&['\Cs ,}DK,U6-6V/E ҌR JΝcB`IsUq{|O~@ @Zgs̟gƛm?q#rn(hEy7n!yER qH{K\3g KonHxg80ıxo;'|+3w5\!,#!XӺɐ{x;lǝ UM"09zNE1ɢnu,CWq6aAف?=W8M( IDATT,): 0<&7pwJLF%ӻ{Ҕ+ ? D o4mQ.ꚙH>sp u|B%0QLvk<\s<^@ V#h@#_ fyS#»`1A_a#M+gVO˂Y*e2FN5gvn){EM'a-n kܬTNI[ڳG8\"%>{;>!ǕϠ{;w_p"Y2jχih(VsH>&0͵Ǡwf6K c5ynuv8#]0]30p0dYMv"ƛ8c`PEjcaVBx~":!H@%Hz(x=~ xhŘx]sl#YV珹yca{]ET2kO >-"WFL7g j%;qqn4AwR$@*Po$%{z;@8CBuPQ.\bͦ uwՈ).f2MdXM5D4Nj>qM%ȞkFxx>*R/e @7fy7??\}J?yPʋAlqzS'Sh: )-.34AC3Fs @(#ʍuBfx4C))}wsG"as6!Zf+&)i֦xqxȭ1y̆(Ϩ*ץc(AÉ%%bgjHs C?{;K&O)}\6"Lu1cü;v71c̵Sh ,9(wt RC=f+gDŽMԩCd+)s7C_|4YVs-' zx{3Vt͒8QGa 0UCCcxߺ-; z<=*KךJM\ԬG#ܩJ0 CZ;6k b#3S{Msn4aseLUAZ햏)qaZ=Fhp+PӜD&d*R޲45wC`4!|7SIH|Ti 橼*3<K?|~|e p:%X*rvvԞ=w[ce`z^c& ScR/W08%vA@ު>7?YS20HmrҔ86CL yN~׶4gþW/GWBjKJzv`{>=x"K|s  "gtd[1v){|;og.7 V,k 74܊ffj74I-ed'Tp\aj_MMAXJղ}rȽ25#\P@o2OvM| 6n/s/Z-Dۜ?  5gp`돋86Ms 4u"ϭ:A9㟸ǦgKDx ^p `F@-l# y NCx >\+bdK:}RErS5[\@ D3 oh;~#X%t8P/$$x礻 Μ0?-[P"P  @*"Blۈ0$6,)bW>$~ s i6w@<.C,! z*pZ@jm%: ŀGps,.6 lC B{>i9|ܞ~czуq}8){0sgi}9`6lC0Fd .j"B 4܉}p# ī85bqQr6b|J_Vվ|>޼CڰX^PB'UdrR׋eHߋ4Lcfw~0Ma&:+{li^a;43Ng DS 4u=S"B)? n0jH&A9F 0<$ǥ©n(cYJЬ1>]ڊnnT{<憼^Rى=B`(U|/NVK[5XjDD ϗ|\A3uEp smTRu*эx QV LR\EACw'Cٝ} ϣm(|Lv:! vE`ا.MJ%Y뼬u#ּ9qB/fNp. ˭s"sEfV~ci ;0r=N \ 0ŲA4CZo fɑᐐusEJMRF r{-x[ G;C<3]^rg 0Ώn^+88f(Gb lB Q @R{)V5tg׺Y-Khp|)|S@`|.GJ'A[Ô!$H[xR#( BU!4S3,K&-&ԆIJ]v6I =Px+pma=Mk v&O  5퐤j,Ɂ_Nuɒ{,bO|((V(~t-7=f #)8 ;A`7e9VRu (06 S!wM4sH9'w5I3lMV٨Ķ,`|4|4p K4n}݀\K Gr 14XP 8hK_[{]2З5w)XŹKr@9ncK#_٨ҫT>s+Sq[/<A7"4~O 9*L"r0Iܑ3]ƕPI JWH'xkjV-[1q|Z$ㄫ2Hg.I/Y [Hk\UB,̓[1ڳ`cnِjuS9P.݌Bxd3UgcQJNC+RO P1X&`7;#%GB O6Y2]Cb6⾤Bbj/i@HMg`d{P6w۟*0/ѹ>ު&# L{zt1r" J"D).g+C)gljy6;B7baL,<=k|1+y?v|oi #&HzEgR+`J!r.E-Lu!Ph~n@51g IDXS"QJ` k٪٫qP?pl$s>kfɰ͊Xg:SL+Pٵ|^5 Y!9^VInbR8*ΥSR*`T Kiaj7[;ݵ=-&SCu.jTvSRjc7Ӵ 05p,[fO߽}q}̟vxōqlj Q8?SMHRΩj8e-şk"Q0hՕщZXMu{w_?n3Lxp O:'h* *RO g}5XZn5~e(h6[{[1t5.Uh,^<~'BjBE+1R +Re[ld9K?-SL (U>E(Ajzp?jDQ!!Gz>< U =/ys7iGgMcm۲o̵vwιwիJ]&J]?BفQ@`F(?9EcD l'! zUwv9?g5ֹwsn^{57 +&JD_́W)̕Ca1Pɐ΄f{wص߀]BH (jB%4H3qs?Yri'T^[Y Sy0?,$5'H[ۧ0x_?s= VE-@R^zR!dD]r97 070Ɛ+3`FDzmHf/H Zʟ2e@Xqj; E12.ͅTu!>t='O5]tFi#Z,wqߣ+71O%}calR !`> 䄰Ge`7n.њzlxZhPM{3U]T5] .17+$y7خg3Z35@_k҈cBqj[~9a'tqz[3o.ې,:8jb{en-Htk8?Ew0[%[E} =Nwp7fl7-o ^q\1֌&3y&_BXS2XT聰KU30si}#! 0,X;z&vуw1EiZ$brԔ@HOEV@IS:${,Ót93խTyg/Uɧ aUJ;s׋,ȹ ԣ֌&hm=?4tBPxTfHXŒ oõ8IT8N)9^-r,<+qPk c/4aG4KIDB}4*TeϿf,Rh{q;;٩{x=f4Cl7 797S/4Udg3}'C%}|׸@C5Zpͷ6gCp+|1dWZ|J4/Нe<Lt 2!D0P|X!ig̝=wXQ"RLt$^+goDHH#%`cˀeYkZn ngF3G@u>z> sZ9F}]mt73+*\Xm.k1}ԳAJ/nast=8!(ä2+3 ]*pYk ങt;wMVORC7 (朌9G5i|X0||w3[w: PI裥x̕ 7qYJ"  >ԐQ͒P:QKy@M IO%LǒuVNϠ[`C>X1-6wPm{lOT f4Fv0Y,Yg%scw9<7*jjEx\;\L#z}M3{hd(rJM@3ÞJکXS橷GToB0W+BxhWHD \݀RZJ$]5`{ 9zS0c?ddj`;`v0p~ި ]S&k(IK$}=Aj~p~]`~J! 8(#QtU 2s Zm͇6!n}%EP ԵrԝR ܁ |S/`Fځ*{ A ]fm`sHbCR6f1}X$dq^)k*u\ǽ>VHs$2}g!i%!tC]G,9 qi0 СdC-'Lk)|'f{f3St ?|kbnMhbqEt d2;xHQUf}cUp΀}T)L2d`c{bo`:;A1y~`zL.9Ǿ^`9HBt a@=, SaSBE(6J۴H}';w_Y{~GHmDc"%$o:ـف2f<UdL5v_##3H7þ[ Āi@tvs0otҭjLxݍtw-&a484zt&̒24 tNz],[OLIVD>pK/P?%i bT)lrsuKR'2Ew07l]sm%P"g0gk8clKrDT Zq.`F8i1HFfK kV땟 r-st Fwp*G@yLWCQ!݂hNW B9~4 {S#+5b[Z(BFPv%%(̖K+v ev" A ٚ,mzlo <0.g1" 271Y<;_smBu넌9qn Oɵc| Q"Ab]LJ!c7Vg"z9^u. )ayx,a6y(ր],,F.toñ+$w6}Gv4 Ztk/*tk9wh8G81-W.%QFLF9X#F\~@][lIH{RF+@=6s7^KPB{ > wt2vAeҎmnՆB}h &W↿vșiRư‚5Hh>XYbH!<!ғ-)}5[`CSduD4H" 4I0T^=&B\)F+Xuczv8#mi<H8NI$yY/Z_ p\+,$ϐ}\XU!^Ώ:HΠI7SXׅ> 8C.7S὞~b"0 Cf e'2Z^(:||ݯlo+K* ("a`I#%0}#J)U!rJ0fVI&co1)D(ݤLDNTK"lImp!A[gw6 P"3䜮c1X@9g)bo Kcc(eGU*) rrεȅCzu*مc 95MIɆ9KF)%XI}gqJ/Lo$٤`SЭJեG&1ѐG16^&XRL6+rk.5R2YBdmrtn+@ 9Wa7>Ƕ|\o}{e#nyݨ=+ o8.S@XB@zgJ Tw푺(+*:ti&;i5΅r3rKsU}_}Xme8 &:?2Cmi(snK! {aVڪ쐦6Z'~2Okx۠`c(ӎf6fdεx޳X=>Xs-Zċ@Eb?d/3 Rc) ո:B%XlD|Ϝ7t8~q3j\*fG,H|5MdXN!8YBE0B_ޡuV1UΑ0*ǶL&O钹Fw6JZ@@d` 2ʼnmm9:8x@&.>1lD^W~'3{*{0"Gi}ͫh2Q+i2 |,ChX KjsT$$ٛ~ N%uv’ZnB9"!qs^a$WBV:<<| `"1 uI+[,]@ 4r#õS (S 2e`C3\Fcxn oɶABW|D-J`/np}t!&` ]f>*|uOB: xICVv"[+eXo7$cTw(QʲBx \j<T+%#>1dj=Tf[:Z{Є[w7hBlvdPo~, S<;KA3XnYߢ;SZct;dߺd*}*.73,- u=`ʀؠ3$x[uSA$c[ q)) kTrw"${ Z;MUZ!\ :6O2aX-*u6agBb>3'uJ0ЙeZi""Z`h.pI%b | Jeʱ"뺷{{gugƗ;؏S٠S~{<Zu^*5|J |*2:sah1isfnl<+Tem$JO9BC |pY_FL r܇ W9.1,ӿym`؏6C]h.ڝb&-;g-UO]hf+oYM DBzEh,)0Ld?YRL1Nܘ f(#5g@46$VjL@ʯ\$ w*zqDHtaJ5+{f=퓂wwcDQ,W.O{xb1lwRuC#)~oyx/͌+t3"+`-S5@:gJ.:2#yL~꩚V_/eї9-z{%"BnfͦO-_sa.]8LiehX4P$$r{`7{Ub2`'Kbz HjKJr}*s-k 2lJdFy%X\?{Z1{qu>{Bȇ+q~ܮ}+'#@#S.Ƈ)BZQ@J5Qf%N˜ s-Qh8َipR4Z-®=07TÌbn$NSpRJ̑ġvq] PszS'E[y}~?}4sL\%+3e" ]p&"S ¥4JF Ck -Yb=е C[& 2Tb ) IHH%.`z?[t[tk-J} tgR|rh8z.nzlM<.lkZ\M#C"-}Mlz z EwldRˑS0BLE.L%+#Ťx?Rca(k鎭bbV@g)nD [ft: ЊߊМ0 s"ϕҞ[!8޳!hv67,hޗb9Ѕ^; ] Vt%fI!Uժ%>_$)g+s8Qb\'XXwycsn+f3VH5h)$8g`KQh9oc @ZAG[[_矯ꎄ t e}a-d&.+r %-tz}\,(4Iվߨp|M݂v?gB,뾽Q6b&Ȯmx۲1n"6pBzK4K; e#RG9gck'H\ǻy{?{޻2MHT|.'}v*I#bM]҄u(ڨmZ[$xk>zק}Y?֞c_.k(bNϲ/ H:_b@94?P^N.HꢆE-8,=ȭ =K'zP/nU$Y' eQx+@J5C4hMr%%|E;*w-#D|!sܫD}4m[ ^$Zdfn;iY::ɅP}rlf^ˉ<w_@%UV"4b/ٯD0W_ށJ 7@S}mt2ETXL0c5gv`!B 9M`i2l%ԕVu7MnyFlLtwl=KmjLo!g莛5mu! I!?^‡3ֿZ!k>e{]/U)w(@~'fdѣSe!>LLV󶽉kOkFe] X8iPj-/+ Rh]3~YYd6k [>#(&&YBl`Z)D2mE ˃ٗ199yR^2qe2e5S,u}_c%l;M< Oc]c 5S`j@Sq!{n]'uֻG*!F"?¾R:{fH05y}[ۏ.5WszF=`R(iBj)蒭,XhΗ3/y6dIYtM&*>V)Ϙ:G%+t.X(S^;JJ ӻxMo->׳fWg/wץ]- 'tB 2q럫žzv:Glc[& d'd#WcSF!S1rz-p,QNQ]SZ_r&.~'tKdKdBD^b8>Bw>F ˑV ˑ"%+ւA\.MV<0N/@k,1]4 X-L6ɕ-ue-@Kb[d%Bg'})'5 csZ#;f$ n yƶDRy}DR0=6,v Pv`_l[kt<;sn7[jE^܇;)^='E9Zb#B|oI+nB9=@]Br@CLJQݍti*mVե}9R1RrwN.o)b,@TH;@\ @;Ǣ[C97St˯aoKl8hKZ 9#J"'L/G+~q+Ld<#0 ΟgsT7;FuF=zї,z) 4D@(oZkt|i* pχ?=VnɄTVI SfYluR±C9ct!/\[lHBr 92[ =BS^ǾLHX {0]714!螡Bx ~N=B"fT+K_ƊAAF)={u"f{ "|:B0@Фe }g=Sԃ{}I_*c,6BtBi(Ԫa$J#tkȱb^ܨ n:&\dB'|~,qnWM3Hbq#Z4J_y,$}'|̪$ˀ|"o&Q@9<"U00)u< ǂQ")s@%X)'Sȵ參DžV !ȐmC2-}k#,˴[9,1yCs(vk2 Z LDpZ"$w cYiqrrt+p?{*O2hOע-brndL%s=op^ra9 ^CΌYzR`* 6#,5XirSEJV7cN2I2cXs#X/!Yr[7,2 5<_b&ihrSa 7P}pzQcDX ta<Ƭ t߈H<~f ƍa@sX10R1Jq8/\? o=eDG,$c *\~)F!_U̱`!%XO2hOMп1Aj!ˁ8KL5Nz pD;X/'/2i#xbd.U WSYzcA]:.a@sX>cU΅}@1] H椄 SO g$\h}qb:a *LU5> 2`EyN'ɜ1,hKpz2qPC: sapl߹ĶfPұą^uX۽{] J 9j4\PF`}9 O1H_jD|R|)`t\;(Wcp߆=Vz8/!q4R ]yMTN>JUcIȫ_S*Ǟ]IT4 ǥ #baƀ;BR.ys?l.x.\fЇe'$sVY2t@NkJXK@0W0!) EpKn|򐖡#.:%R& ,flG4}XR+depY2Gf ;JC\Ұ L`ӫ]9 ,In u gf_J0˙V P@CH8Cp IDATi^ KgQ(= mer~.@ؗW!j .Pȅ"d/},u@!9vƳo}8 `aJ^%`z%تmPVN}.w ^?wIiÜz}&>]Z1)>u͡E K|dG+g1%%LSsj}jc2-Ǟs>%MLPVJu>4? }K˅W s`?h2lI 9җx@C&J>4(Nպy5*Gu JsJ:(Kϟe% u}\dRKmh" oҰ U);,a9GXw #+ .=4#+̅!P-a ^|T)` 2c)vbSs\m@_}FNLrLRA)#>`36Ϻ} gCt/Tޥ}9*uH1m" {B=X[LOE= 쮴8quh>4ki=g EamA BKIH]ڥˀx uLms!o'K.ի09@sXa0ϒY=)0WTqS R8Ŵ>dgcq.fE]V( FEP/f̭#y,dha /V&PC蹑|\pмFE/T gi6?̹:0*9gS3,*p,qសLeb X(j%zqr&TP GpdjeyJ\i|;м=P<9an`H9@!^ʆADL:qyQ}obE籮N˜B(y#4%|K%ڱp44Bug&2ZL7)L0L@wL%1lP֖ڶ)'!jr(1q.s6c߹>VKΔf mAYw%I*NPgN,.uDBq ]kqwIo cLv'(8Fb4y[O_*؞8D c nIp!Ho) !K8,OesAS`ԅ4|"Kg\ѕ;#7KGbڜSyuxdl[(T(m9CWy<}%iG4KA};:j/sI)Zuʄ茈|6#mJ=4ȏ NRgn Oc}#433L.-*_* Y}tTh]M" Sd`.͐`Ul&SD&65guUcvqTk1L]CL]ي gWxEZ3e6lcqDvhTbmVO&e?3ݢ@,9}'g>96Wj ǙS %r>]C9]2ꗺX0@DT'h64 ]c2'du M&I&|f l Cd*5 cl& hEẐ3ch2 smu'`;lۻ7ɲ#9QD-*HwS S$|DĻ(0D!X\{Ub(sɬ\[S=tJ蘀A v9k3dgoض#Gln}1xIiI,K`QAU%3z@k6]p 0E#lX"̞ҖJdB<|'S0c!'aW+N鵱"fJ߾L'S^"^kζ ŮΞxvniuU,j|ɘ́dw#޵s_סd0?m,ͫv9< 4K.%Kܜ2(k{E=䱖Mzr<1uSկ3Oùϳoqy5U`Ge&u9sǿS櫮Y-3z("{(@KX '+֞Y5ux@I\0SR  u_lS.SLnx dn1O-vwm>n#e @X2dknM-"=R1q|U%Sf)={H4懻Dխᨇ: l)кi5hz5^tm hMDP^/^{d UoR50_Ķ-2zc*M U㼀{y/; =ȇh|$  i`}f4OP5ѵOC;{Snyq%6;P4 >%AU;4-fhW6%tPC K!Y!fKSeV%|@3l$Ij B` ӫ0̹B~=S!:S3:9]{dq۬޲kvua`7/j}~_p*%2L}&'_iW/q\gXk C[:;?!z @*-ĪrB%SK6$۞fKg_ή?F?h֋5q%|߀S96<'h7A?omցP;1ԾmH|V+%1H3)>rp*З|B nr36={h2A2s}o^<\ڋ;؂ n%1Rϧ^R6(_YdU[D Uwi<_gz[nX#ݡcj%anI=WT]rnNLhؾTؚw7NU.K'J6'W>R=~G?_d^h=?xsQ%ly11&B̒;( z.RM)hm/.u̔q]3}D92WR4fl))O#k1 QDQvМB5³_0U~̯Yfq. l3!V?Exy:cLXc!{ s ~M DS5wzzߣvyw\^co"]Ee۸@WMdHn *)a|Ih{Wp#3~^O^0l`@{qv~lNFYtƘ눨wDcXRk\9 WH hvjƳ*S9BCF?Ffd/U [ {pSk,C!wdUU1˒d)cL3X h4}Lh|~5u{xk ;u@>W KftGF|xe=8K~I&XkGϾ>P /µ6hއ\p2jvc_<1? h 󈝃s-۰{'{bwUU&?.Կh(zT6:N阩az[J2djxp<rr>m)YR^TRI@}$Dt۷;T%( s9$o2;z^g 3؁mb/.,Cs $TC ~$|s,S/@225xj3!wP=mm޷mQ S-LR)X:w9ɬ?kCP9xK\Oa^[/1ѵ=s3;f~})N2MG3;RL fNm"KӿCꜻ\Omzϧ24cg_ȌLf?mg]/#zb(*W"}B/t@3@B@#Ku Od>`CLdvJ꓏~sdgɘ#eHn8E{]yPL%FFP'c紛6Ɛ)Kvh 1Cl3Sm+O趙Unign!0!?xq {&=B]jϖB"JgLL鞦 Rϓgǯ|VɟGL{:KvhͶw"t˰ۃM['t\B0@Q sX I{4:J&m59EGe{~8iL25tLE3t}h>ftR$LH Ig^1c̿}(E;gw``'<9Xh4:Cr sGC."\|sc%2b3-3wY5{.^ZNċ֩-JHt}%t<- /2L3J)̸.!L[U"yRlV}z&|BڥgUUa<_H`)?܃_;k@zd0B)R3TYdM9MD|M;ǒDgjz75)\kf @挌RC˒@cq?;&\3Ca"a5WGo|#kWT<֭[4hϿ M\$gg2`2\FOzM]/P(U` (CzdHv\bRIBkl?8:Mvmk 9ORb_DQ?OVfo "*.K~)6wnGGHd~@=vi-<}}5Q %{$c@L<5P23}LTLC!fCu넊^έ)V\"/ΰݼ?RNFŲ Q*Ob\>!Tں*]' 4c UzG2\; 藹]`Mn4j hVsl;8e,r2`6ur6΢A2D%td-OBuO7p2dQlH[ `Sv}~mgIeGlchjvˮi2T3-bx"bcmT =vH%; Z~)3`yCOj4|]^[f9GsmIOxOCqɒX$,Nl{wC 3 L)jǨĝ@p6 lXX~/b?Ʋ}lRE6LM {&mk:^53{fwDt F߬zjg*Q5C()]1GKp$}I ''}Q=sώo.0/9}N1`z6"K;O{0'`t{1Z-u"JecыTɅ~/AQܸPr[EȦ@>^ 4pcb ܎ [Є1^\ Lx'yŻܶ,[0CIY.32#b-j]wH$b/1\p˜!xh5.Te*Aߘv3,Vpƻx{1ɕ)ئ,̇TO7ρ_hξu#(w.J9c1 Hȹ?Y3rF,ɴ܃:6DFPXDZQu䕏aS3Lfy͒oXL.%X2""5Ċ=HJdYë tY4ˋ$`4Lr" D<:ZkѶe¢9ux:]-xb*FT!4.fW$uvPcݫW@A7aphOCou؏+Dٵaۯq@ H~r#sݖNk,CI"!p1T`f'|P5nbnBk9}ӳKYJ$LgjnDHpl2 I̸f>:|q%3R`vuF8u^%w!|E> /3P"`)cʁ_\)\8m W6.$S0}>dG4K?/g ?c8jiOQTzK-lN%}!<+9j0e\2LKRR`Ye4pΡb᳭7c*ut F sYDp}·4)~Pe096+ڕ_;/4ɭQT&/og-6s R뗒a.X *%PJ6道aEu϶1'7 JO˔ A@9r˔NR wV"PL:Up 5",a䁾#?Rf)z}86GmkZ@(3U¤tBe,y\:>MIXfK%#!Qׯe>so_ن|y6 L̔SxC_JR%X2wo,j,Zf/ % HԹ\nE$su8f`9Mr~y =/MppX',! Te 3&r-p:%dJ vJfuqb:i>*yK ;J;bsHM`twQLϤP.tfG/Ǎ~y8^/p<0g2,]?eJa]J4M t76[[ p~TAdF$8hDMBS!g7_xT? ZOh,նӇwAH[yRXG{lZLçjK$"QIN C"BJ$1$ bK)$>DDx*m{Kaj,HJ,)m3蟮εkK Dp,4%E9KeA3=nн񳯟ƿKd~Iu Ӭhn{I&陥-k0$I{W l=^b`iOg KXP)u*bEueD}!~` ^ 0OdK2޸N+Wbm`B}t;n]1(3mL"R$-Sil =73J M&LJso\;Σ-\9wqg;br(ҵaKYF$٥[g@2CIX 9kon^ 楮~/\,: zU!רB %, KBxh $v ?Wͮ7 S\ xq&OgRz@ ؕ2Hiv$X'%t<{7 g%9pNPH*XGI҃^o-o֡ƶfo=)B ܁%h0O{ |]RgR-b`m7e-0)Qe o9F8^jV5 nuqW Ox}5"7%BPҤϕ8@:#m3%>&ѳƏ~S}S$E4*XG(!dk/N^'S$g;EHu056-`6s. dC!yȹ'|, ԛfMvY[xYq8DIUh.hsE$ف!؝͛q1_{$w>2 wuݧ J5xijWƜRݛWx?2VS!l)P'g}Yf$Q O]BXN Cvlu (Ol7h槰w4`j)0ҭ(msxcsk|YێM ;Ӯޚ9,H1oaÌ f0gƢe 2\3c;'fL8#& Tƀ1yJ6z˓U+o4 gP&~ fwQ$T$O4|0zV?V]jc7%Х=4pq]we)U e|$*ؠy@%Ԑ&ŒQSd_0:y:Uψ㾀}w2v Yұ(e"%PN >`l`9|f{cw" 99>vc͌9;6[1h;6+ 31 xap Ab4IT"ʮ:V[0nEJFF$ VR?瀁\6Mf=}2K۩I@!S!l#K_vz爄ج\(v#;BPu+jSz^Zu6hs؋{;l S`:k0w0u}iZ|G7#K2ɡ)%nEE@);|-~[crUb|tgCnN:ǃɗ+"*q2|F:*t;v(DTu+ jI 3^xm.,;pFrrҝBU61 _jϾ}<Է`HwP4O :C4۔ZٳW? ܢ0ެS^prdh6aV艐0=@vBuuWZFu9čg-u`F uC˄ 2p-~_1w`='3$ ƙ!MWa9#j*]g]@I$FS{M Lo%W >EٷYMN6Bym|L&YR'` QSb="){%7>TOxH^dff~ 7?e] k:C.7$0u;0_\[и}9bZE2̗)/x!KGIYb\XU HuK"C[X:8`8U;I!%gHCW5ES:QNjfm>t5jzz~/[Os})pR4K}-SHM&>1Q}g?>4>[A<8o.: c京H'F%Cu͇ZZ|3VS`b#M6T@8g_{lvCJr-ԒXfi@{͈P& GC) !:;7g` 1}>,2:#=S&g/눔+ҺG Cg"4QYJKʉdGU2֧\3RR03mzs}5k:axHÔ! cZkq:|ߪ aqDWL:f׹/o9m@-F0T1s u{xg>_{` K ՑRZ HZ_0Iw_k 8CTa&ǿ6w ϩzj.HޔMH9IWHJLէh+^!`U_͞'@o4u=Z$ xyMHo(uL.gK Sy-üx[^mnGʁ./sv2%r1웨e CR bc8&3^D{!7Pe ܠldlJ捇^G(+׺&y7fr:yAĢݬ.{i=Sl6+aj" m\k7,w|e ˤV<©D [/Wh;?` BrJK4te%=8b f{9I%?w{7TԣA4Nfd\.)DcIN0FآͰÐQI'tggT_2wjsatqr\j!Y6LD<ȀinyIo ep5e=zg'A#jY]W"F2s-)GN&K)Y6>_\x# DTp_B_%x\%Jdb9FXX_&o"Md|ȮP$M=߆[3z b5>]3p\vY!^ 4sGMK}ᾤD:knϾvm?Gq5nq]|iub}$۬*y2W-^ne[d72k}6,~ DJdI8ʔ@4vBϾ@luH֮-:w\!ga@`ܫ&z6f4?6MUfJQ&E)&ʏ,KFS@ȸÀ:z?H N භwS$z </fhv;~);}L9\&~48߽jFvɝD &1cg;k~[",n3LCJ%rxJ%:C{cv=>[0yy>O]hC@ NfbsV 80F"zSPJ@~@3+!d=1 tKD~/0b l[^-/V5ySgCE>Y?ڴCi_zGcv-D[ÌZa93 S-M%9+ko UJl$E7l.hf?Χ9g~]s5GsԒ8[Q-" (T^f| 3w|$*S:d>rCb|}*z̥k'szi*73SeiϧsN`$kڶwʍ W{ 7"Ms__<iTCk@R0eϴ->(qB"{884f0?Y8-&>D΁#RSהSKT\/C"|:^Qz %>ZibpFWmqAo69#5gog(ֈ49bkE(2R ks<`Dl.r/Iqw.:wtWS=Q|swޫ 6fUfH%gҀCK˥R~G>u7䅊>oh#8-R\lBV؞KK8HSe kc|w1g^zM#YFu S,;.-DŽI@-rHH rxJ-u3K('Y⡧j̱WX\sWn?U0Sh{v!x!DRf *o^i%y̦]:_҉KJKO}CnMZ)uijLפ9$ 40R*x ^qefA *O  Z-?Mg.8ep+g:eC΍ɐU-.s([ksp{ы?El#d'#/Ss`[ڡ*"&f%QSFDng\Hr?ϥ5sj- G9Vވ$Ɵc̱>v{l% cLHRKϭ )!1{+ל,|8\7'T.JS#7SU*l{6HcV l W7;_`fA"68ː8-"Lfo:c͋Hs~EC$z{y\0roƴ+ƎSh5֩`{9@w MɜPq*҂9|\1X8MIh/NWo6bVz:CNR)] -+C@|6\-tNMitڟܲpN3}·;po<&Qfx|Eߦ=N% 9̬ %Gh,/\3|3^i=[g|{ ~- 04$ 5%%HRS2REk{kQ%hn"kQ2ڔ&k18׊6S{u,raj>3sp33YLRNIZaOiڅ >7n0kd1',BQ&vVfۈ12 ix] E3+.]mO=%HD}(Gḏ]5њDHqgkQC-~<;w.uxDX푇ZSs3'P8Lg2-=.A&=ϯ(}Nm Ϲ ğxis{T}\|kkZMCQZmiz=h\7QM*Do*{ _ceW u'׿WdG80"]m ;w-YΉy?F4;|8#”k3]oce4R!kfGvX}6GTo'cQ{jnYW$5\4| oqQSMdȴn_` ux}1<.VפۥN)o ֨-7)~ ɁIi^+*Έf)E5H!$CaAٱˠy$-I-ayr8s2bG`)Bs\U}m.y&܃d\L͡1ٍ̈́(Sv<: a#˯k3w8klD*2.̊bP*,QK6K_u{o IDATNz/CDb pSLde5/ѫ\3t;;);I{)&L9;9|̦a+I!]s塷LǪ'g7):~~7ËBp4/Д fz\kXN`3M/^_1gMԧuXP*m^;iya_ia|6{fD0te์J^R^ttc̴ִ&j 1Z,g @^ TP&`fs dq:cYĮVJ\E7Lfod?Y5L7YWʔI3h}{;CrMɪԒ kbSf^yi|=_pO1*שzkk1KR0jLsAI,y~p& 1.DIMHN ~x.kۿHu"쩯9-$'2ⴝraSf5˄ZCrBv4cs}r䎮ϴE |ىGJ7:^К/vC\p}A|ǁ\vRK-> SKKLS^M-j صԇx=dJ1eѳH骏6-<=f_,+KMt3{a3s>VH7 ^&[2n}7(:]N"pf$D qIQXXeʴ\&Fө%xщHAhgsh oQ5+Jh| l+8F;t\,L1Hыsd^dN2nP5!񍫮?`7@}< 9ڞ?F\ۻ.3jnE;'=uJc.#- yp2-S:CTj+b,KFƩ(u0^KާzL/#Gĸ`q8rx58}]EBP9"z%Z.i@vOLTz mJ[*^}-Mf$>x:VTvmknͯrG8b(m %,{^xCn]w gQKR)|I8Z]q9 BHK΁^I^zs鹖g#N^rUm;Z[dJE +q0EeW1*@ʖ{UZI ; !\xP~0c3amJHS~}=x1tcz0ƽgnnjÏEZtv^suk7إʥ?GQ koynҽhUCCSL9篅wuV*͝-?jLՊ#!35'AJJTƀt D;~YKԸ㱛i9\&y$7{\ر3,&cn{(qʉjf95xހOFABeY5xeIW 95 vw pF%Adoʘ bDA{.wuF<m橗<ΚxҒ#L#BoH\1ﴥyyWE({{gJnM'Y}1r:inGxcT\K`S¥O)f_ʚ-0^:dlGش6hwxӷCtr,5ŜӔlJs+g6^򝚘T倯4"BߗDu*&b/V 6h9e/*,ǴqMMߚkv(6%%G) 2786>1AGN9WܝXUnBSicl6!X1pqB.ywò}CusOcG'e4,P>"@ v̐=L&x{r߳f2; |j*z7w܂iZJ&OxyIKkv h-z]C z.}CrOU5!NMSI St%h$Bb-TSHxISs-՛'c0Y&sfϖK9'5)4/fxEQBχ~{<ΙA(5@%q^ |g87GCORD{go]SiJ9,_ӕ"ࡤn;73zn,U"*(+JqۜvqOiڴTסGRLaWajlaZH졛sȈ)WeW yPΗ*7*1rÿf\ ~feP-`4}H8 oq;}򬦛TL٫6A])bg*OY9oCk3c ]/̀hlgJg#\br '.7bf\i (@)? f"K֢;bƗQ[sÌi-)y xvH;sBj>wiM[`u$jbK/St¯xP=Gqt'ǘq\`!E҈X19x:C2Fmr8sVJѤt^{Hǵ!Wmn+ -er6"Mx5O*bu}B$xiĚT;I,OQ㴟j$v&֣#aLn2&[APt㳎D_S)7{˸EQXr$Eڋ7ABg,MdOE}2\BCA4#=^#WJ>T)NP925<~sg3KTmZ|ȬuÙKSKg3np_3:$ yfKl6x; @4PY&| 5^ ld}r5 PD]&=NEkMbPT1eK@11o27wjEW5⦖;>3vF&#T%< ԪFc;N?$R%(V`kE BT&8r f[%eIuRh@RUH҈<ΈۅXG;^|.k~鶸׃X "Tx!+2G g7֚^"fY.{!'n>|/\r#G\k`UI21Eʾ}U}S;WHV0%Rm6ܱʇ}908.HOY>Yaz47 :#"hpCy85M@X̳S^f1~K@d|x#6xK.((ͧnpQەq2RKT9NKG.o l]AwQPFDZ*/}{1 ~5".}DS6 `YZa3)|>@z<fs \,E y@}V*\Sv߳cYR9N><iP I";f+4H\t"Pj|$4ΩisdP>%B]I]J{x59;QEI2 N|]ovp)1 ]/pHIɣ1$kj%Y5w@C58 {K0*hBßOܲ#fcjJEn9>U;5QjꞺO(?Hgerʱs8F~P =+b#)ܥr?1T) sԬt.JAt;pCjvzRssVLx090ɓ,Zgi.ό{o%@QZӹ8OiE"rGc.- ;;f%Zt!x(rAy.ƾHcl{Ε] U+QNXKg ԺSˈ@1u$Y-luHK)Oθ9^ b| _z9c7|x܊0 K4J팠⏄\ '.^~Ɍ;DWx*4_y>f6 8ihe3ٚHK[{0 (˽=QJnQ5kM_k78?^ SENqfjyz]47^2/XKJIZH2m0RyIT'Fgxz((hG/ifTu<ẗ-3eR90Ws T[`b! S+۹=,6\ھ*dR s)==* QXAgppR mڸ] ^lnli5Ehi1ep"g!T Jj-FlM8s$ށXCgW B0!X QfJ>AicCO7ߴj;ZiN 1Rkz*^^^IAqa֓Zj%%,N GLÏ+Xz  (w4c\c" Ϣ,b*7yNB<كdʼh\y TM,kP.J@r5gJGѹ>#ǩw>b>F}BHdUpYBfP,tIrF;SX1䮀+YX76m%VWy*{Omv[n0Xa "03c<+$ -5J\  Y&Xލ*WRzIf*Ltx'Ɨ[<ҌW1O<څ˘{sfS2pj'-5Li3.禸YUJ  ك7v!-6||KbdҌYvQ&SsKt4o,m\ U'QMXAvAJ-Mѓ˥PGܭR$ }c55G`n[FpM9 %b$_ R Ev}jzӆXvr8NLS" 0sֳ&9#+Mkh@ad< x6`pMD4+Իɵ[%2X <9Rv 7ռ7gj5ǧz6So2*;kXR@nCU}m0D4{W VFqIhIJVs lee8H 6u 0Sd="dmfZ'RkВQCE9X#gE֊Έ4Oڮ+K -4[Nqlhbs5DN $ʹk#5QM!,$aquVjͰgY-DO["|FCTU#5p#.{EcEdjr*w\ms")1VNIœ+ g @253]: Ȣ)2vF,rsqKF&4c7r8S g H< mlYVKR3> ݪ4<@{_X3ku4O0Gl޵V?ǓfYWw]-ZQrղ5[.cq7P\I|%Ys{s ޱ$"%\NLe9v¦E*g-{uI󳘺aOTp{*Jͯ[ 7V<Y719 tT>A&éqnV+}uI$S:3<őH.Z(fx^HT~ f?g^z!ij l 6*p\B(\k)`('YΈLCD:,v3qgG8LH(~L7lf9OlpMu3D)'"%8@8vyBIT+~'DS3'IKǀGo[%4viju K赏+M7dF9舼x}||e1±jŵ T8"Mi*Zjhg赗\iӔ}k5{s5e5[3RhYq 8=z/LV܌&Dbhq=lTp̩zqM0G6P^:&ђUq_/P9947$-y}9^xE93΄xB62.16xE3%PET 5>3};lŔNG>qbP13l4\.E:+ifDȊ:YT &ep\ pϨnY40*}V>Ƅyk7JU7 uR噹r04+*]3K(qwSѱ6{SmxM_5@/m"`rFVsȤVW |,(q+DK!mD1E̬ChPxIQޚ));0όy<0Z,ZXx|1;8g?QLVfQH˥Ȍ"alȍ&8 Y6|)_6̸!h.NXΜ߃ QB|w{!JQGR-XS<hVZFLS2? %5LʧLȔfӷ#Eu"2S<ʚVMOXDn#n(o>^ ϸis &},k^q *qkx˔yqXTZ>_p4eIPx\xG+ZKcwCߵ15^MoZ7R8=q YOm  u!n9j)IsUq?XCb. 8/f9x]Z`~F F +cI)/94yVg玀Kn)vxu?{3J2jK =T3!&3eVlk)NYqfh"e"0c18Ѧ3-T w"j<kMdK"VmwFr (gƉ54Q f4ށ=Mz9Y>_RPТGt ͏'1h>Do?=nkԮte.J$gM;Ϙ)HYKiYʾqZ3Ě}iIb/ԉX)LSˍRA=ro1wQU BCddY9WT1:rto}DT 8CPxĕP#O } 7o\)Q*e81Jz jt䂦"A?t~HD[3KT pZަl IDgd{+JG9ath| ؕkK: Uh":ps'9g' ߫7J_`iJY85 d\=锄N#zAiwt ӌ#)iRj.rIqq}D^'VO $YDx4aOkQQ;Ȥޖ6)&w.%CYn'Jʘ$]wgbLI:L-̸~@Dmp|gzS!Z|_ nS@#&YRDv ϑ0WGjoeMc |ה m^%fp\LD:jƠ?I‡q}ֹ%8}cp*NcnxƑ{’v8)Ca>-}rFxA3{ah5߳KrY2Y1C?UMB8 9R-9<ô_KRӊ /j xؙ/D".ֳ9.:䣴|im|ʏ$_xis)qӡK"c.:zyφ5üJFCZ?yPgA,[9eS'` B)]D2Ԕp;0E1!9P՘E,+=GXn`|0#}iU[86[ 1W],"Ov0HGS?>XۦvwrfG#?:3;vkoEf/ OĠH)/Z>ETP4}seFM6CT5j6s4^*MLG.5SinwR*Bu2@[fDEoxZc [j3%!.> djRf-k_=_ +7Ze~p# lD)W![ e8mӰ2X V Td밴c et7eT ]J橕NGBn{cό7'w2u;"$ >n4-M#EU?'{MDo}>: J1SY%C^eET!6@mx`|_}.70u (yH;"Ro\dh-x.I|UoFJ=š)|3nXT`N`"iv]s6.[ 95RF73`8"'½RoFhJnJS ;{O1nd I*?'טX/3ᆫŬt'-!{S,ɋ` :wúNi-(J9S8PxNZxH91 ]|D\o'M=3>[7W !Dt²I@Ou0ɰP#ʯL~:U|"6xfIp/慈oz~"3^'50*EGvc]+X!>z 3~ ؒo:ND{0~<,1r}òmRbL%T BÙFm =GM0:Pf%koSިՒt|w+Loۅ녠ꊴ1.Ѧs"؏&o鬦4ΊOpGiZ2dHZS_ܿ#/R}ȱR K=;Fe8q^&>{d1F'߿#@2K~~^<[lj LS9 贈I_Dc'@\Mݿ?YA$]ja/psjGWRg= |> U聒rR#;r:R!,§~V[^E9ts(fuLJT| &j~~1duIZiw*rn bH4;{-`I>3LMtsmw3q4vPU#k&qȚ ,vpu%yAZ{jE§16-5@81J5H|IJ\ɱ3T/L'mgO߆.R ]תeNr f! ? Rp3G Rf*^8 3ijWIk}?oB`՛Jjvvh8P YNNzm}ʖR*^ERZJ/ ?9 |و>[-p79}j xڼۋ_ C |ć:ˆ*i-YA%g+eOkY4/`kI@=>}ײѧ; *PQvi745LY=-n0bKwˁgq^Sf% | k"͡e:k5HE5Wx 65u1J?gCPώ$v΃'!qj6D!l"GV*Vȏ_K𔾐äjMC⹭9q~ @_w~#G.dqPԻArj-b~pu]W9;?Ap8R"Q)[qXhya&Z#\*FRG{WѠ!7uc̹-9g[յ)E5gܵ?8raEH˄HPcca'"NoD0)Q"ܰ)QyMz#FDdUjqv3{|>sSh _H)JG])|wm5Gp`|^֦kF<NX+.Yh{Q e=%}>J UN,Wo0XEXh{b0L= Ob`5[j>yLUQt<k[D&ax#D*MoXAo۶ {~w yyJksWu?Q08*k@zl)5"E\T*>W ƙLQ'qb$zᇼj_>\mkc@'p yyXVzb9B'ܑi<7sEH;8CRSNsx3ժЏ}Ļww=KvKr@e|E 3rERs`xPG%HZ_z_2YV-f.Z--? *_r^:XƏs(,s]v$&`fsG6Jj&#=0I/YR#-r#g^IZvws^,.Kn(to W #J4ÿt:ʬǧkv ̌R@*"X׵!*kJ5~U,s"NS|GܚYP |r >3(no3YYpBwFWTs˝^7#?\=*zU)zt 8@ƻq/,r^؄I9П05Ը |-hjfE8bfهk굉b§A%kc<EyQeƏC3^_mq-HSbn9iz>M+AT1"BCDڊl34Ȑ[=aae9~ChjH_SbwWvZ\FT n;lԡs ߝnt@a4rM%B@0>˯p Ĵ\D-=\ku z(pk!#sM/k !5xH/!;ҔI^{q7K͵G+OZ ߣ7@ +3ϐB!odK 2==!iEAVН-5=UGs\~OvuWOUd6}rVh;g6r2(S³%p =Otw5bEҧ@ge)C Sfo9CKTi:>}zO@eeFTog@>\$Bj1"m#ʭ$MՂ;~KS?SR)>Y:{wYk-R-ۀmO`Fz=_@0·RӘKEVNDxw\ZPD \C'AxVƐ #p+_eߦ ,?2Ԇ\ӝm$#8=OUtoف?ac^"(S6J/T=.r(5jѢխ*\aY\J)U2T{$Z<r{Q)UFDWaAR?gf0<;rd﷚:|>&9R:}/q"U)Y<;|6dtڵԉ{ޣr$o'KMŢUGos{aQ"n> ѶiQ)Ep[A>[HS"E^HpkwtrJ4*5Q':pDz(fjf.ҴбTqؖ[.6`6 n26yCvHuh{%>v1s棎0?Äo'%EdдZDx/YҪXDfϠ)8Dn89m!D$]E!r,(Ҥ@jTJzut~vXn1HhY5~wj6G-N4f*xc IDAT(mx -i$"'/W.8mx\C^ȲEo.Ýj*G[7 -r)z:gvx ^zLGwyg]<Dw혊t݋hGb6S\S Sj Hw! B |YH76<!Wӹ+JdQc}&"x"g(Xi#U"]'u!Ff%ѪvY0fӬ86a~^o~E?3SiD-~nvON{.~Rs!ɟ(376ezՂl9&Rk3-$<gkYـ-ؑ[t$gJT6c\{<^@u6r.g)8"\#'<05]y;EkෙM (}(U'CMq%YFg#.ry.s9cA%(? %lzEhX49?;+U'SB3C bn Ps{is9\SK(Aʃ8Ly&p̸Mud$2%Z~a: +P^^lk"TB(_b-NcCގZEʲîŷ9~ _k8Lx&3t2浖5[^32"}MҝNSQ`9r/Z4H szcT zE[ 9W<)RỮ6UQhY$Sb-$qOyPߑx.i=ϐ[6sp['Dih܄%Fu/&}r :@ng%mPq}R{+KQT!'"E6=D4"T]F=RN#>oĆ܆\=| j~ֶ+[(.ׄ4}<%crPI)JYNq>qL {੝"S^P_FY_3=|dq[ldc|_-Y_4of Eҳ2]Cp>_J=GxE_T8Tt+yO'*(١y=9F),w!M/65A$UO} x]ݛTp\)QU|_I8<#b<9?;Qe[0ÍC"_.mpI pQa]-\._V! SA cŅ>g !-xl!wNwOIKEbط?.J'}$o%HN"i!A8nIRAa͸H[,,I+o}̨i[+mC>#K[8謾t=܏RQT;`\cͱ?}tQ݅pG԰0LdQ}bI-Kb1>RHqRx[4^܉b.S{\t @{~O,% ]U^te6;}JQfJDlҌt.%*mT+gDZ eLoSNF.3w==t8L`bR>3];M70Rky6&V^=Gpq}C$U^Q83g fJ<[t#S5n:=BEV-\70䁻<] ^M7֔; |+mvf.SFSuq_ݒ}h?J{fbF3 nFb.3I;(2ɼQdHe_㍈0e*{,-C:4K(#8RvIN38+3JZTo+T)d }\7:RjzIQ "@kg1`8" cXP2BeD˚Cn2*|jlX\WQ*.sWv(Xn{rLDab9F"t 2i:U>49 @qC]2ٳQzI U8x=\J_*</QGq.BO9:̜j•c_x("? xЧPj"2Ymr!fʄ6.Tc>'#t:k5A=g9 !sG`]!Q>/ qbMf,4wmt5Q\bCo*#PpB*DwY!vtZj_CqLb 2aRc\B%Fs0=_^K9mJSܞ =mK'R SFq hU9Nr`y(h\l ebJL%xV,+^SlX۝GՀH$(* Mri0ʐ𜳈Bg 9m2"LuI$^AWhRn~xt $Eq/ӮVtFbh)E# sQ<='P}ԲonXlw kP7j6:ađP 27C:>M>r\.9Θ `y&=w-;{J:ՠyZ:yyNH(QJLYxР~ M匠ܤIZK|(&eFi%" 9Ae4(J EuV3w]KB.N[Ezӱ dAf-ȡQZ#aeLYqxBE8܆˨qTxL}?5k3 \' p,*|u&"e+UtiDxF# O@ [U{;0˚t7G#;DHx.E zP5{]AhVwGԶSaQ/zԻHaǷe(>|fjqA='wPc%MH$8 ca(cb$ٲuNDfVU}y!I" IևlHIˆaa~ַamـ?dRR&(,13wνs]|D9r}#BUeFFFFFX{ז-P`8n?&uxeþ&,kͅu>6v5/~D _c&<6srH(o0.n(TWє@Sg>#hJF*I%|4f"TA.a梳i]K \,u28. 'Ƿކ{ 3cf2 @x1GOT^uԨ 7>y$HjcWab+T* "xu?#~_Q{zifǪB`Hn$- 9uzZHl1JCZ5g D@@3'7=&I =!:]PKL!@RbY;pyap S)$ϒXwtJ7N"w11F1Dg<f'Ns7e#D?c-_\8mݕ 4-=U^l2 iLf,yՄ*yAȣK,T^ϱuL(=8כم1dos`IG<9{ozLǧ]4+F}qhuc) e",'_M, cvƧω.jdCT_Hk4Q@Wr?~kjpQfG_~@37gzYR]+#ԫ$͎:|hCgKa]X˴ʙ{+y)iPEͶq/}dxlqI٨ڿb[9hCe^`bS,3 Å18=$ko'm rRcؘpvuR';9ͪ៸ៈ۷B~ɏkvϬ ),p;ѠLvcفi@be3%ygΔ3͜p(>ML@oQ B8+H8 -A7r],3ajdAߌbnӆ1 oɀ8\V$Q{F[GRxl|y0yMsA42lԍ2tx;l<${v{@T*#m=Eu 17S sN8pj@͐ AzIxԹ?54sJjIdc,H-Bɟ@ jHH@b"p}om1/J}sjr(4Ks0AmЉcb O 5VY*FD#2ĺpCN5b v=~p ,g\|Z=3g :b!g#6=kb8-sY7Chj>%ϕiրA53sg !^Ia8wX?8#Y[8XĘ{tá}:|ZwwmqX{3VAsFYh;$N{j4'i({H0H̢c{!u]noJwo͂R5ǬLMƶ=h_QөPĸՒ+KYNS([o͚jx$T,;/Kδ0*F$N]>`\njoYm0-L/eu_v-,iw[pyDF~;xb0؋׾,oG x!j AZ{kfgqjK(ԇu*]c<-#%ݨ\Q73%uĎ[f4+Ӿ/S+v)PJI714 U氤0p;0D@UNB 2t[,V4^Sf0eS÷4lu*%]Ϲ:.s`XZ/7, k;maڳ NNAg5v7 x0>Zz}Ga..9s.* DS9}Y^ʦ."Q)d Nh2e$mʀ>w,0fa`N=$'2 :.O*1+^RSqJvvOُnJp=e2eq72˕Cnmqݥ UEXzX!ñ}K ʉP2CNsR2f*,ϳ#(2EB|Ay)3 dı-2$@̒ŀO\i%YB2N4-i 3:c+1ך9(sa}-s"5)IC&;.ºXUW#VQBBH2~-x$}r,1Wn>-@}^TM$2bbZhodFb%Ggef ߧFi|m$MɅ^ 1kFBQG٤S> i"?%@½g9+16ID]FS`\~2p6]]G6! stkk`c1pffӴ{^x@Xb,)Ɂ]ZϽgndH\6L;ujs@ 钡3fGBP㴬/R0X 5W,BL mFDy0ƴN PWDVbDB1I@k]qkmMcq#4l 4Y>9Ԁ7[qktR7Tݕ?GjNj]9+;%Cw%mBsJ$eMER0? M($RɡZ4`Vsc9҂NEk;vJ֗wb5j=p.`Cw;gNk`2%S%cj87,UKS[y0-_:4G-aSC8q:&o0%؝uI.jROD|\I M)1P`a9:6+M6wNqJ?)?ΰ F͕xcc5Z.`%LsH{Ln%c]{+NI4k296C2&S<l=|W6*,ΩPS9gq7A zBPľxʆ Y)F+LTE8c,md 68 &Nc2JĘ%so~ws%}ޛ45mkLL{ݳ"6Kijb-HֲRwDcwi<-ӷG=sG=n\Gn*5(do; eu;g-2 i2FjPiݧiGQrnJ-"YwҦkN@<\oo.X 4,ִ+BXѕX_ƀ+xsK+sck+|Ew=>W|"ʥ;:y:P@H3J= Ea[ޠpEa|eJ{iA3cId"'Tܪ[!Yc]P2*ͳUsQ$O'w YԅMHa+ll,Ϭ][إO<˵lHHXd|IthyG\.|D?4;Sȼ23]W8v\R(A>9hrN1XgnๅgGnB =$qmf:(fjC5>ñŌO. ⶒ)Cfb8+Q^=KN G۷p)h xv?f씤5O8bx։mL{0 4m#J?HV{dFq%_YL{,#ydi{ P6.6ݖ1u(6 īArmQEGb=)pj.qxw\5LtWK(^JLǔ;{oIM`[Cd\DBrIwtw*fcAܸDXgJ 3r n6vW\YЬ`dt%qhk+.4K$E$0h* ]sN6J{!9w;*&+JNgquH#2s Ľ.!~t3Lx@#@398c` ێqv7 n "ڦW5&/E=;hev-9EӵxyRm`<[) ׽鶠a@U*C?D.zDOwn,šƐ!?a*nd_*Ԭa}"uw} rMVF9Ic!a{<OΰPc,\7B΅e޻)[,[ s~)!S*CA{0XaZ87x Ǒǃv]Au~J+mfݔ>"$I tPx~=7%?Q,N5=@\2!V; ur)n/u3] (C{c;: KQs1@BƸN{ATn =%lΪk {ʗtx}Cg_N : lhvZ3xuN5cP:A;vr-9@\q71b%<DZ[ ퟕA1c[%I!?ƊSSU%sn[3S-}Co3dqmXGUpY{"{ 4KX&!qC۰9 v-d >8ے఍П2'$H :LL%Lp}^ OΉs[:z7ia,1Kmi=۰SlH߆8:Re? =^I3.ažGnn[ Y{1&B'IXya<)m5^"G3hޑuAx.7z"u'Ki@ Z_ zvIl+># ϕ/ujDp\uiku1q^ƟFc؃,*"boOcDDD\OSҝS1$b7ާAzTO8|02n}(::v=1q& ^*_D2eJ+1͘ΙxJqIP&DF+m-1Uu/nuuCb2$]JY0AN|aO?]d^0n \ [)$>~ :%hRhΡ718v]+ G<;#evd&lf|P5u1Jwr'k7C0tm&mE|H M\BXM "Lס"$ȷ b$4:DdQy( r@X7ylqr^{sُ'6>hMODZo3u`b, 9%m侃 TDN`qnHl0ӓy[PP™sAL,̩n^ ƠaQB%qM%u,u_y>;@!C4;GS0?q>wIjCAe4fO!!kBtc>wKz@`),#F%Rf&T*$r~h_" JK!X?&$ 3؜yoJ~I[ʱ))TOpg@Pp=YbVN4I%6ZAhiF93]DL(#:SɗQ6!lN]zR&"tj Kn:1h3, *%bS m$65#c+1Q$:h#S8ޑ>SukG`5T x(3-;Ļ@^9Ы顮a i94`쒴$l(A #$T$Vp}q/fr<}"b1I%"HϫF*[n (pZ6m'iPP\ 9cbp>p4qča LgkXU!>Dٜ]*<]: .z7f{5 J%Fb% D|BB"ZuŊcW N0;;:<@5rK!?7~K3bm gмg&*ϔIZ)'{CcΖvdB՗'@޳f|DdchZ jcb p wz=5:.bOf䆞olit$w8#[K8̠yT*Lr7)BSaG.h{l:SÒx\FE@$@v 900S 0D$b9?SS?4i>pk&ajޞ'ַّ1페^0\?;ՙ!/4/HtVa,'m|,{ .|ܨA<3sM9ʘXS4ecTd\Fs7ҍ!aDkOZq8l3plxXyv`_v}Iю7"w = ȃG~{ 9@́*2`2PuRYe\:>(L1 "l4T_yQ*ʅq5VϝJΔB8s*? r5"AZGbmC 1PQ f2, c//`vU QRUcCn2ƅa=I鐱$Pn=vq8CǎYz;հk qw 5{:Oxl%ӗpi(*ߞuW|234e^ MFOscb\iqèWze 3_$8C]`gbt +4P# ;~I=dKkјw1pD~2 Zی}ulkIuqP'ĘU |?!]FgJ[^ѵA^b1&|B7v(~; 9:3Z:vASϳ> t%Y->;Mtn *L3XΠ,TD]3(**ݒ=\$6` >3[N1T28xZ7߱uD$r/cWeE\skJr w!p{qx}co֞n;D>'|"{D~ش@{K@$`<'pl) 3]Bs{ Ek:t4Aiӊn| I |'qlD:NGc\#nX%B9j+K'id NSΏyV8чVݔb}1rf=tMVDFU}bu1!c=9;T;+8c_bEcn&l06k yҘZJH:XrsFKf?:<XwLwIѱN=6\0@sryH\sӺRhl}q2gq k׍4F~t+ {rǬ6K%W*tlþ1 !D`\-8NC4=G6_tB( Bn\PZp7~s:b b^bU\BŸ8fxoKLaf҂vHǼĩ>ap(|+O(d5F P!cb8ubjL; 6 ur#:@ (/!3sc#؂Щ< #]rcкPb\gZiI" wtpxDǒo.%m+W8l'tHyyFh^XLT(1 t \)<' əs&gm0|@L" {9<'dXѾYxCr 7@4W gd|c$}\3g"j# :}XbONud2LQSYIwT*`mo@[ 8kzAaq}M  Nk)~Cxj'9dB\ȥ;5 AbKwkM%0%m;y˞ D6.$LE=|w(7cLP\dqzSHǮ]xd[b@\Ni')3(eR5tqj^a,J'[8A%: $_0PBy֞;Eabl!g93R4Fr˓c7gNi|;XC%!n눙EP; s (A6&f0ThA 5Lhkq nQ M510򼝭:&;bK6WNJ$Zw8żZgAe;5~o]&ipW\OZ@`3@x:gyCOqb4\!  njꀠexM\ς3@R m06XrԆz=;;R /=MA q:;'.d]"qb ]4[NflqZ:6əՁݵpr(tDmԾ8- !|Ȁ± r,Cۮ WjywJxY $O| \x&Qʝ0ñ0L\h`_I!ou8IE#9Zd.K U1np4hn1UEi3PΠ9hPcE1m'vLmP%`@<' ǺD 9zCkG:VnO0.Y#op,>}8<_ֽ$@m.lnZN1NP] 4祂}".$ZY눡~0-Q5q䎀x`tqM@Ľ0A)0 +9- W&{MZmoCx(0.wrs^fМ 3J/<؜60c!F >fqXq%PYP( Ztw9K@~vC@G@̵KVPVs 1ozhS2T$g,TO1P7"el94q?ø@%` /0v#j0栃Bg)9컒X -1lf[< -o_n`l\s==g0b~M%Lqov"n5sIqr".&M J6Xih;!r >B=Pht 9`lc{n4%&l(`\eUH3| 4(c!ɫP&0alIc49N^K —8C33`l38&68&NիמX@ϟ@Bxn 7AQ|ļLs^kL9ʃO4fY_esK.I;;pJ[bv~!wDНkX X P ~D,!8A~`l:bx_=UxOt7?623yyBxFpٿxԆQ rIj0uxE`kR {ڏ&uh{zN3E.f׸ 3h+ &)w5?(d  l(E5+@!v_[1YE`u0//9'UjغRy.IaI>}Cs^fМ;}9@Y8? -ty9YfMռAˬ 7kSpAQ a+Ab^bCʲ)QGp"\S=MI}w`|lLq{P|^^uk4K gK$T$!qeyGwH&dB]z^Y?ǔKɟR+\o_y@f2rnz5ڛ)IXJ DK*n fdT^#z02rLVf9/!4HkS!0tj<)6X*WBE_znjH,*ey$vfrwM:5+ 5&d𺹼iydweo}>mQ ,RמsS K >Bvjpey _STMkn{0}|fS 85N jn>^Ϡ9/w sk~EM]N\{f $r!nn+뻼LNf As^*AR2o*34 )=V a%J%ւ|xh ŽeW(:6TOUvFS|m& .1ͤf۱0]#:m.,r4_O'|Azy&51V<ź1e*a=J%RR2K}|KL ,nkME_MQ>pAEK%ӛϻXוt\S^掠OwerSƾRldsla="dKŎM,yB860i"AK.Y,5ܳg5f)FxW4SfvRN>,)MMIgl䍭sR8f%g#Sme,M%זMM>Mݏ|)V&%'r]Z)__?s> {,sFM O)y, @.* IYzLzRgMF}o "-ܥn2tnX60RV]u2) J+} u%ʢxZhϣ+kyt_ [I}7=+Epj RR*yZy_`lu|%HJ]F<Өp6 ύUr.SDthI4(9ȷ.R[Úr2.L6h2uQR*n3XaiCT7)`bp–dKk!]O=va908u/JͰG$䖒`3c%xҍz̙i>c5Ҡ.Q9cH_Ϫ(J[LKBɜvh^L?K=S݌bJ&,K~n"1ȄeӬ(Ƚ6 +L&O*=u1UsJ*m}N&qQ:4JĔqVHg93gv\SϩSO%>1&."/g ֮- _ƶc%*_Ǿ{%f9ST4rbԗuR8R+v|&+iU>䂔˔ѩd,.M_P4]DT:E3P2 qfcz0#_{Ei)mI ޫͅھf ۍi7V}ᑯI4咉1`>K̚f(ki-ozB[ʽΩf`~/t[x_ SzKB1@ vknXYL8ל3P̡xpaOBidm+jT1ˡr^DI{ pKeksc+s%YeAv]ftoTző`5^fC~otg t1dXW v*(ľW?t_QLV[ ok%0FoBաEܢf3lEHR:d>_9)m7{ ZKS=p+ȩn{rJ] l6JM&uLjSrH j1PJ|gE2qIZ5c{`4_rЬ}dT%IATn̘"gT;%#ԖmLts=)ќfD$Q`5kJ%I h>+LR`.cSX8od֖ cSLS~ Tblգ\:g! k#>s+=(J}aW4?19fh Rrali2rD[SfU?:1.AAE.e0P\s҂d@+ ȻOw.WzpKAY5h-1Zpq3eeJ Kc;wԶILs:aκ-čozpngaX~iq9P煊 /Ko ±m__8ZRƘhxv ~[Q[KOX Oixܭ<(wc*99M _ i^%%w,R>%#RT ԗ-j6KB x1m-gl \q)vg5fRɔ KBqI)6Ό}ggj;Ps q2 b(|~XsXuzuzֿ4%7i)ki3%s^*ߑEZuYQɰɰ K!nIXX!c3=.%8y(Tൌ'uJan;/Rt05A)w QRSKK)ͅޥh0426I 2va c9oĴFXx#mVƳ{ IDATm `$lʕ7NץF`TVJ>_M~Mbl{YjТMolr; sl̫TBuɚ4scmg+ Ø k\C< ه"ֈ70!Uo'q706\Zkcz[_:q:q}JHv*Gzzʜ#/6Z%jA}3=fF)Mx,[6nx\ANx4 hִscMcȏDܗeބ,!@|Vh1PprîF+G510^gu0v0t0M}4woȻ{ݰa;ykÓ;J\Q LSg ZѽaN K9}1rS6%7cf]<|5 3 PkބwW"x{Ca=9j1؝%l }SXM8ewckFY^}s(H*lƶ]DKS3g|N]<7rƀ+0[!;Iv@Blۜ~֜]|m?- _fc,;,>0-~' c jK$[b)D<<7S甾Ն1?HKJ`+ݢ(?*?6Fo|eٜ=|?G mߒ~Wi144a1Wv==.G;*% (:KIYӜɵ2@gEs7p1҆ɩ"1C56o/ʗȿ0t?26dZSIcLr??nm{Ӵfc].ve K FXjiiBg+651R?xmf"p~6S 6?__cH@JZ?~O^Ozc/ Vo-TzSc@,׃Nm᜙\lP>Yb Tkl}E؋j?#qǐaj6>;˃k Y>B?m{owH(,ȏ`>5:c͐T9RPӛ^3h>#sJMlNLi^TSRh ~]i:3 5x?i? o A2c%*kR3aKZc4+8?AO)pҸ%S*6kdOO KޑSCгO%P΄a`jeY>xO!i{ 7>_?E ss%պe* ؕ^_jgٯikmeK96( ,1yTT2Ef9Y2II4bJr]f1+fz]V1`c|c96 ~)0 ^W| HNE8./GoV"BصwyȰR9_z5sOdmqs%/+Zֳe+@7e'ga /3Mk4˳? !ވpC~}'7LC ~캼K 1b=6,/?.m~w׏D&4~3IbRگy kf3OI4&cS>OkW_ó?_ᝃm~w |W9dc,%Z1z2Y ~} gmWk8Ec֏~K,M_m\%kER]P:Yd^̅^BXVSAP5دl]sy "!ˏ෗?L51C֎0?(ìR,s*ӌ1?%/NoooW|Xɰ8~if>&?2T@sPJ-%hjߣk^ɦ*iW7_O./^Ki4{bw Շad0\E?4Ms|,$O1̻e.tjQl]=e,? (xtx!t[]eS$]&t --9]356U b{o7<{ JXEc̏ߟGBw1'OK%@ ȿ1# iMKPcj3%F齿OZ1_p ܏\C=քѵ#鵟3Ӽ W1e0Yȏ=#"64msٗ~gi? tv7O0< z&586MmѶmej&zPk spee 8sH~97?^j ./ p;1,3'^P*SxƏLsBx\kkqiYl`9!Vn9/,^¿ִCn2}8۠z#Ȱc,0(b@۶c:faՉ'}4 SKN0 NNcCsLz9I16Y7d{o{T4>$8J1\v S܂Y\,~l{ڟ5rJoASC>C\7Izf7ϠA1ԡ\c uH>5ДF 5hO?֝,2Y>^:nw~ȏHJrs\u*:J(gYcuVSIҀRo{. 7f?K`f=8|<|cx C7OL8 -%N28S@əNcw`9Zƙ́1fq|jDpl&{}c>ϚZ4+4ʩ2[:lɚM{_0W^߶A98W0<L%zbr&k#Mv !{]r cwQRH`BcSc1֩˔X4g;c=yOH]NLTO%jS,ymiP:>&dBjo X^?WOm~3L}߇.>:f\V8;;V+VxV$2+xJt89  cw<9|T$Oձ@Xkd\{x/u@@P4MeQ&2, |Dyf j{ i)eO1ۨB1Wc "vtIՀQ.vSY=rܾā0˰}#˚nrUSI@&k5Ɵ*pah.n>YݵjZv%7v/D"m>/07'|ŭI"[\8֥;U3p"X`+gX= ?^'g : l7v0,~Sg]!PLu` ,;&#z㷗?&/|t֏/vׁG]2*FIvMe=,Ȟ7L=_c\n YT&gKNk3W~s_6_ȃ{m?Ypp<Jv)1.щpÐLڊL =p.hEȾ^ۓܭ'1{@u  XD)Uʨ=s)Id,={ (=S fzMA|N䧀 =@]b ; h+D4ُWW`=`v<"MgY<;;; +u!zq"z%DKcx9P5 0'!o[\">tHcNRF4SgKJ'8k+`pu9$-Tʪ>L"KuIE$ K f9_Q`8w lc6c3Z0k?S w\bx~vO080~tK9\gY0cp齿.G[5x:KR1of008$_r32 tHb +9Lݟz]|{K]7$>)圕U55Ud5ղŲ Ch K0 rذ ن!$mv؜b2+7{1'>MK<7nuk\0WX?IL 0e`('SA</h=>ς3./l^nkc3Ysݮ uZLu5>{v > O2PpNZtv23&Y<y1܏9iYw\ R!I+.4K@*q O?N/A~婃\_@<3ށLx=3كUK?vM4ͦ q=|fuq@EE')?%Xn6!Tt̸>j p3#aV'R#1I@.V^7iF<龙<(ラ'3pD'<.ΣsHu r%fC[!vupU:ĩ'Êr ?_; +Iܾq;#2;up/|><5>-9?=Slݴ&gq+" Jm337ϯ=^x\mv'ܦiD܁$I:~̈́:l >sT"!`}NeKon =Vw؀ܷY";-RU:<,ZrBv3;Պe=' S-d nw+0%e 5\*0eRd4l6[!\[79:ϡ) 'B.dy:!'K%E(wEOqS}zZ TxK1R.,a~fޑ_d#-VZ BY "Ұ?(hjCǨ 4G&gmpʳ2Zvᵽ^/sAjFFD (M4@uкx IW)"ˉbyfKΆQ4 IDATXZ_Dk>K6*.FmHVPKJF4TNj1*tݎ:VPل   3fzhk#oF`kiWX(w*lOl WFup/#*7 ls&Dȝ38/q/!j Y Ѹp]IAyD grha;&ЬSߡ#|$L8zĀ)Y&g|np]{@2,:6]gp*I_wZ33 8e Nqalh0q̨њ8#"2a%ʹD q,uVx x/o.\mgRM⾗mۺ-}9:瀷{7x~gtʖ[y>w x׉:ކCnBoaU D}ܫRעGZROc9τG?<~Qp=56a~zKJ旧J4 LM⿡+ˣ/^ wL$ty!} L3S =Cyjtè?FK8q;0BaxpO7/GxS=v:hy<!u=  D& @EQ?"4y^E{rsg *'#ح~!Gcf9X '(o$Q__|"!4 'n.y^uex\Z$-ݤf\Czq{ rDŗRK,G"=4?]+/GGIJpj.1*pFA,x,Ўp)2#Q(Jg4$k` MW"cSPY2|My3\\up!X``Eeɜy_hZ~4R v PRUwrt.`~q,mfu|`nxy":L{YR$Cr)=n47E;r Iɬ"0%"<q?GA&BhI:jױxft MxC@Ō"u()1 9&+pBUK:R +OzqDد_Ch|܍'q(>'3tU\]"Qc\KS {DOBcuv۰Ьa.+E`}ރӏӍq9'|k ..q|4v*-4f]1 ̸s??vcP &^Vbz3xf|D!CM4UI5xL1 k}.2C98k ׋ p/Uϛ#{#^z&VY'\uX}c\+3r+C3{q?9IY9{p-`0ҸNp]/LMBBM-b|8"jʭ4R,]Bkv|am/IZO zڿVpAZ )R* g ؽ̒ (9*L-ǫ?T p,<:7 l&R>ĎrK8_\qis< fH2Xf~ %V~|Za眴<ôrqr@g1NB-,6'McCf7+;KDjiE%[V*D әozo 5jZ4T{`ȍJrYd4,{ÝޖGH T˧>}eefnkNBi{!МOy9HZܥtZeE ߇hͼ=~sr`Q1C^A BqIxÌh-xDyƘrk.LD՘j  QղzKDc63j'682.shf85[.S _M"+,r)9ErPxJ e0!.Sp?J/t`9E8ԩa2c*`)sr}Jyl=~`BaR="fq0LcB=+h)R#)`Mc7Dxwp=(,H"Q$p+Gza;k7n9 pznUnV RBbMʨC^2'%dXdK( L^I~25ڙR/!mF헯"WWGϾZ,/h$xrQۧFUUah̓e3ͽgk ܵbPeM侑0=x_GG$KT9&54R@w|B[X#JNAsQd;{,9r ]aKX?5?VA wIXw-K\~$ صשJ ~BP[.1223EcSS꫷/.~C FG`hggӮh|ևqi ɥyp ұHw !/ol%ՃdU$PllgE#ѥcc:_)H[i8K&|@rpʵd0y*ש{|8$T¾M-ehϦa X\$fnN(p‘LI۲>pO%`:Cf ~ >4G.Gj}Ray}ϰ6-uOQgIH#{ 41V[buJ1S )Ì9s f<$dƕAaުWݼ"z֍<2m]GCc0g?D!`ɟ+<5@[t8SRsKuF[ F86V$9t.uLNˠ&7k-M?/m2MܢNPX%i.E\+ 0ZOfIRSbs`cQkb,1r^[,;ԭGX~2OrT.#=`.M _7\E&ͶloL=_CD^dwi N[tNޯ|q}EOMf$9A864Ts6DTݬN>Dw3jP]BH,N/asQ1ITJ Ů06Hѵe;|=6K1G̀Y!ϻY?^_eJvՕOj.y_Z[7mNW&Zw_$'R SvRo/jLS%,tdό#9Tڥ-󴊣Bg]>Wrz΀Vz\Ǭ9$i2=vh(0Z8?bT>K->~{{-/33ns07+'SgP\=@`*C*i6ci' ITr\>%E 5<Emw%~ -i[,TW ҩ:'3b? Ϩ7M-K~x\c`o gt=xnDna=|%'p GU0N !~}Ə]-/,s0?!\LMAـ7koDm(!S[IajEq.7^^{Ա:u2Hn r"ΰ\%)6*ϝj`zRF{?@w{ƩkQHEK\=RTKԀӂЬ%r_jd46Rzi R#ϻ2͜EѣY# ׵zkHdIxY^{)8f$r߷58xRtB?Kgq.W78$Yӳc r`*qZln/cSIag.ӋCڸN2>9ȔcZ%@6q&UrZ SQ*O_!v=:Ej^Y6O"H0K~TQf!O 8 L+o"޿EB&o, f&*dKv]JghCXΌ'AU'rE{:-zG!7sj-⒚JŹ"Vd^R:4'EJLu8h >&}[sj"x.ϴ3нD r&#Ō69`% @H[=wEȠ5T9:x=d(9Ga>'跋TWCrs%xv мٴ4eܜ= 20e>G7҃e{\m<^0LKɑLE %B`c1,|$ҡlX;#Kwb];CF Ɯ -)!59F &D7O"tË >!6Y`&j7.{%҉RFrQSZ)?.Z\|}B "oˋ疸{ 0enɆ쉛WFBrzXBQ>T3Css+4ʊsQ խuBob\ۆ(*;bFȏZ&5LKqi/=aQBH$Zo]Ř,S+9yKL!q*pw{2t(p~Wy@ChnmYP1{)pnV(t , -W.HڦpN锲!/L}|.=qTmA2)^Yf ʌ+Rc;ϭy`Wm2۾-k0&m5l\Ix w KҼm.]0G0ЌǍě$)~ BKn[B S fUZY% k(dH"uY)I8)EZOu;]Z9P6U-F7m E\f ¯ܱ]L7Jd%22 [w'U_aa#Yi;Ъ1kwiʩrɌ3V盀& 80.{|kpO.Y-A(kt*iya^ߜVxBlBq'OfIke>@hyئ]:h DC5m#2dr$KZMg)h)x㒫/&WZ2s ~g98?ZEK<ׄgh&y'=Vi1KBy6q-hO4gd 7aqѥbpo7GIOhhHt>g9d@Ɛ"s"oi2B0c-ȉH8ڔ 0f%re)[/)fW,o2Nm;8߶o'_D(f/0O2kbq25uS然zsk1Kc)[5A8gߠVKûȸ$5!TiWkt+Y&_`\jfP<F~^P04+bB) ir=RR@|buE*ZZ-2OCBh3)k-sd# i.HSSqo"ɰ/:kݩA9JY;7!?7Q/C tl3܋TtfW s3fDɥՇsr ,- IV ՛NOiJ-^a`trhZДmRg!>1!fRj, qx3>zRNz)\m48fzyӹ,N3-@)]iIqNVr[m3|!1.X;>8HH95kkj'S3@K-s\9HBTq;)"OH!8 \G qݸsiogpܺ.5 V@ Ӟd[]7q.ϻ$gQKB!| MjVw)A[8{K 4ͫTY<̘DnE&:Z[kL)t$oNcynG*/K 9:)2o _zY-^p$AD;%v5Ql $omtv3Jgxg;.P53~bgۥǼDޥ=E #vr1'a3*ajӼhUÂ/Q=s<,kͳĴDiΙ %0`AqbAZJ S'`[L^OInn|q\[Iߨy2#*+XHf<GaO0gQ_(3p s5rlĝ=c-/gE%FqoyB%Y&1iϨ ۣK J~ t*[w/e͖bs50̱%c;JĦ: x;4],  H:"QPfqQ)~_3+%-99%:M)1ЅDUtg<%}Z{Vy9L[)״wpD7 7ةi$m:WhRZ'c7+ĉم,f?/0Zrbh "02mά^9a2ߩIyj>PhJq\:]jUL5d/&˂1;3g]!OP1-D1sRf[R"9Rȋզg%\"S| KpyKNB't"PU#?%f1 f<2?|B]{]{fU!c~WX[ɭBc'B Mz, ߭Y2mG jl;>HLAg|s#0nEgwCIW- lF/ La 2i@j, YyPy l0I5+-Y;~s{πp4ݸ^avl6uȃrIt8h!٦cƭ&bf8Mxu3S!r/F ,<s5V Sc|S%*$V~na1JFɉhb55޻5kEE&D-Τ  Xe"6 (I wgbkb 5&12c͔B^+A#q$M 70^FEN&Xk pI8aYBøEyk *Ė͢D+%xcrA&(EpP6U&5(]^2";4njˠgiwbU{DA$WcaLj"1f]qTH$ucT 6q ]2HɼeDQm8>s+Qkq/u7?Q|rjrnAݤD |/1ڑ o **%vdg1@.5D)]8vQݕ@:7a/9WG/'b]%gSĝdM( %IupC~Ԧr\05dD)mBs{nn}2 IYf3Z$XZ?;#$w 1?D{-R/3Tv5n[M@xc PL,kZS ބ'Cg2"Ru#8 9RN8|ꃚ3y`r5{  E *b8E[Bdmƻ+PS-.躜8I`:M 7YyY@2I̸bBχ}8]sZ13]ۨ[5WM2왑;;*m)QiJ9,큟ӕɵ.9Q&f_wtI%yIA7"T[bNLSVZf0LV TB rLG!zy67H`%sd0rD؄ vjA.`0m2y-^ϼ%>|aǬR{y){L6XF(wŒ82)@y jRnḷ )~[Nװc+n`[Rcj$ iu\KPeFLUQqBXmEz mcEHfE/96y,ic4UZ.k޷]@l^$R< NY4-o+f,TxDnK 9vN )ڦj.-Q(W(ccz-Qѹk"$O{Z8a4WgjV|'jdi Aw{{\}'fFܪ"t[g#Q!ۻpEc2 q #0c (sZ(i_L1Q( GOPԺou-ޏn/`eT.bRB\>Kr){x#7F3ZpifLk^e+@k%dQf^3#y%8+7jF.y*Z[H)CNtɫP: %03jf\dj.E٩}p2K{9'@ D q« ոZ%5hԍ:G 4߹.7|$u q@{i4'1p*5EF 4_ r{̾_^aZ7SuZN87ԙl34V ]Ce5qr{׉ܕXb!&quܚ"P\kIri:sY/=HeJ;pƃ(璒#f>RLdh<Vik.S)w1[ΉdsViG GY=!9m#}/T0wN.CL)VW6"݀Or('g>G'׼2&R%`q[P-JHa&P:GV"oa1 v7n$C8\+_)8|Fenba>ucC6 P@m%!eaHE9LZND1^blMhNV7 ) ]W֦ I?[b  5YV0*a/Qg0A{@6DK KQv}T-i$ۄvpX[):^`s_@WNAc&\Yk 6Ѩ5g)Vz*ԟT[[LNJ9Ɛ3\X %L\͇&3U^M(j栗'zmFO{bTSv".qό׈X^NRp8@\0g"9Ɍ[a6D)Ld4aLj!<'ж>>*,9,w.>?E=AEDMϱA{C],֏Ȍw )dPj(ݘ@7x#~5Hwhc}cl(I1F1#K"X +x8z9AlO5iu^[,]S +'6䂄-\\E ӄ2 &VuvJ \`0 k%G\ ;|j\pn+ilR7yN0NOPM kI sE\dVΔ!.}<H I;ŒS~EB=]'Wø!%pc(,2R(l`\΄}`s84k8$RaP0'л─hzb|ð5f6cPH0\gDnwux;ZXeFwu.bm\{ Zq^5吗`~Va'sPxJC^T辳TB<!hSI2(wR`,A"+xM W4+J9#h׍[~@=2p\>@KZa=G*zڮ1-O1ܞtUjI*̀v'5αxxZ4G}]0$_?p(-(MRKd<@ C⃺:lpb\u'炵E 97i;JL+yFth"e2iZt#5$KQ8Y]r76!{#E{fW`NvQ1748'DS2Zi_Q՘8&cE9)@ J(@ O4&J4aAo*XF_k!o|sW^R8VLH X-*̂2qkʽR>3g@%LKD[ͣ\=3s22 s9Dx^9uJ:4%E,]ݭt!,5 V k\O#V#yP%rrETח$ s# uK;-TLXPr QGT \r6ur[c#v90 SK̖ⒶN {+h&ڸ r3|}!dҹ {YeV=N5Tl=hAj|iaȟ+>V"Υ&E1UZ5PeTݲ3ce{F ;I0=ЋK޹S3)677J-M,9[Ȗwnj[Y ykh:8 ݎR6 0U`u pYS˹$Ҫ3:CF2/ٮͦ|2X'D;g`F)C#daMfGNrh @Ͱ^`/ď˻X oQ rQ$%"H.=S%U51G`DAT`8v(k }ʍڮ3 C,|o *|{z0;Z|4Y]2 {ЖE[r$CI9͸X7R(d$NȺ 8z|"Ʒk[&Jdehn-s15|7-AȲvxR+C79CmwR ?\LH,6. l4S)S)7g2#N1ʋ=;aӎ:(El(#Yh9/R<X aT֖ OHskF!9Tl: ޓ4*-=i` 6HDL]Ӳ"tL\ @uvyBzߧ80܌k6I`OKh1NM; mϘМ9jJqk)dctfVӊ=`[Nlw]"*8V"chى~t[y3XKGL>mA)bCRkPdJpmv9% U˛ߥḶ/M 5 r >to4)pub/g8\BZ<#A&957Uc`FtmQGØ)J@uΘ_3+ӱB$QhVXA0ly9QDP!dBcn򤆁 @%P zoyWJȞj0웍*@ JM=YXV!acZ6BHYEN(a;oĀ# ՃyS;AU@$սSO,)\ݬ\x.{*c_o@!JU8ZZr j0guo2ysB)E>sj@l\͝9 Px`ye#L{o5~f[=K^wLNؽ( mOckl~"J<0Qz{XD) ~1G>.1cB)F o`4ah?SSqZ[&%ME:$t(h#B%`i29 -hv}]ǞCx;Ebd%7Y8v!Xo/Š9BD@gox5N9=1c7(U,)X@6RJܐW,Uo0@RYIP3&g0]q źݬ\SaPޫ IDATHCRp92srVŽR&= @vl6 =XS 75af6 E}p&jvɨRiֻI'v35TMݥ&Kr)E[>z4k2Omcj6ο+<[Q)j9@4QvjML60 wRK.rN8nmHD qZ|Ҥ!+7Kp:PÌ r:Nj5!ze G3bՄ0z(rcߥ` *d6,8 {0wH4 )i.3RaysO oJ)aٸx'N! ?k-`J\iʇFPf‚  3n]*|̡HEQy6\T%_,v=sF`rd !KFNhvN AHE(hcs7GE9m-dӮe720^czl ;0lIJ {Щw܅~Hxъ?9)tp 4Gš׹E<7s%Krd@C@x-Cɔƕ{Q>8 rӯم}ZxwгڻSBu \(kR]tU pF+VqhIJ ul8T/@D8XYdIyTۭ#L6Fwۋ|*Mt Y6}'koy7+2IF!F&;~̭@ajy̒P@A,qK'Aۘ9'u*RU\F["=)R^#+`]rs $' b"ݦ+eQVƋA<8n!=!1JٚCQ!{CNpy+)q@ݩ1U㟕ߘUx^شz4͵ anJ㌚Hm"sv.K֬c, 9KM=U 3~ր" M9~@+t'K`H6RNxJFS&"Ȓy>hr^U<]iZaVRr,!!ј('4?_}iO7s4ߟOޅva.滌(-֬7Whp5Bh_xʳhp0;qK]wu ҝL5&~F x m rW}SSbu,aZK#hS54UmNJh'E֜ H"8 g?k/Ua!.T/A0yr<°\7ӥ?xX0sbП>^hUUZ SR-0~׹3hk? 7aYRteE%-~ <KPsݲǍ!{(5"QY\n|e:8Ȯ>7 i -Bpt!Ca@Z-η&NZ6r% kq"E-g?=#i!#%̚DF܄ڍiwp>"9z'xr GopԛQ1ڵBb 挰n.;~?$7¹N!ME#S>RΪ5u>ˮ78prҝ8OQ-I^ Wv2~Fgkz!B40RYiY`Zҫzw>{1 p< { GFJ_ܾ9rꮵQ8 l\B⭐NԽ6y4sʉrs˙&.N8>9NE[ϿgPa) !6. 6x,&K* cZ2 ҮuX,$-&1΢)[e w**O972sz|tNkg Jo.(Xݿ9G |ш3Ғ#g싛-,׮1)|k*_ƳB)CR3!39 >%%(wis4'{#rc2L2wI]M͋9r>]A9Ʃhx74gʌ襰;>ի| .*t2$F>.ؖڕת 'JΠl3y+a=jMv]m✃0n^cnomM-!N'zUB"47.̹!7XE9C2쏁 VZ7},œDnU Z\egE M 2WoornP`B]ǸN7$}vy !)@% ~B.k1pK9X`ϯD=פ-9xrVHqN]?oss~r^~zF`UjK+)} ZTx^)U2/4ݔ*̇:u?NX>CovlBrVq=۔菛99K2o D@YPun-ߜO]%%,+f|vhb&{ 3~7x=)yf!8ck!~E"#ˋ0mȗXuբ9\PA$` h'j}:%ѿIg }_s|j]Řmjč/9fsbY9bYHC8jp +52@q~\# 2rWrRG[b"*8Lk-'i4/#@=Ǜq@h(fn ,s)DN1U֭2!rlGDJp]&F]j1Wi%_zmj5VNIH.LGwXvC [k׶y4MQn3ۣ("ERx' e0~F+V-f`s}4E^$pq9lw\ qxRŨoE֯Ӿcoi;$Xq $WŷCX܌+SZp,ZفqL=3}|C_jln@@hK\=`,8shg "V=gteۊςT+UuSދsg?bkHj>A>Ƿ5xT9}:}yOf46z60傰]s/#DЛ!]Gl=t?ϫ́ǏcKSUmOۤr)o'mFW_E| j\yFPuxvi0{s=iZ$S)Zb5<) ܬ>#b)BULIoԸqـm?}PTS1Hs mbAVH$/;s}G}|Aj^kA.iTؓi67Xۘ4(&5N[T3=[FTlwa}3 ~.pk$q%vFdfU 䂄@rV"W#J?[f2.(|.IiIqļtwU#2>dU3fm]sw?cSd HdL3~ |-EB, :ȝ;'XT$x,H!ZͅwD)g𭱇GHaVkA'`1mW^,bYT{|p?$x͝sιh?t#w|SCfC6dTcxCfy zɍ #1sFޗ>#>`T?Bc[IO&Nt ~Ih Y8v?t@udo;Jꄎ=b!ɄخRNQm V )KNS4:i昫K1L W#\Xb.œ7Ĺ&c!CY%$FP@3)dlpXLƌjV.;ݧ~'4\v4st'a):LJ1M0S@5@niiCT';<4BڋkW Q9Yၑm`Nq4M{ +~5cّuK2s[;|35\w pjAsLp?Tߓ%ZuuLjaL_-Sڋ09(n 4yO;drȀ[ $zIzi s(Pԛ,bL!==̡W$@1%}po<״ScӋ k^!Y&jkPeUN튝K8OC_kp7[cyVeoA!xt Ҟ),G4PKb'НJ{ SmپK$2~ųOF< E+ˋ+lflQmj4,9T A=/-ZṄNo ~CV# vúo{%>v1K2L{HVm̈́籡iDiǟn*ȓD.?~3@nv'r7> ͸p(Wi)F\Gvi.@ I*fx|i%;OдK2#&l3~xbiA Ƹ/ӗ~yˆQ{oC1\أVߑ܁%ՙjL<Ȫ[{ 2w>`=x2ym Vxb UTU":0,7CxhIw &ת]PݓfnOyhmޒ7`1-GI*sR5 39w*0dM@] ?_C VS9~JrX^H$s7FH "m RJ۬wxK#87eXd8|O6P<5>Pѭs] 0ϵs>ɭ+ mA7'SkloYdem^1,6~ l C8$XӾI021IMԂDxv J3T'%x.a.iuk-ww %Hb'p }>m˺@!x Q<O+UW.SqNqET!oPS6o)I-M ,f16>Sa)tHިZBz["zhkM1zKYtN %fh*ޭބ;V4J,9_cCi4{\@q=+G>JNCX8ߛ| @/%\?4CXٰ)J㖸]|q-1ynt ~>)u?vK IDAT4sݯ3AYtN)h,csL/r(d[L˂:bk";LM8BgϞ@!dOd#=Q UK~slTX*$c6aktΐ/B;`^1ա\<UitӁI0 fm!u>mrn l>0A8&?ϠܧcG+j_k!IRX(p_dߓ%#Ԉ?yF̈́#~v\9Q>*ZEH' v28xAXY*8͈eh5Șv*O9i4&49h3SMc}6=-.pdks =}?s3l8f sc&#@ïP[! \$ܘtj' il% l3 qi!G=J"(p%7ZfHléf(lw6wuU.@\#t'3aK?Cl } f ͚+r(!9D~ ~ J s!z-oChDZLawriʷ?3/cwe iV~N =F ~5n,8w(i{m30IE͒Yznʘ86΂K_m& LM?BXC}e&.ui_:Nߖ!jsf؋xT4U$q& #6K߁oI߁ï]+zE`xʏk4Yet Z1Uwɜz;=t SU3~}!$?x%vO\i<@ý;ƹ#B1H8$!2"l4)( *e S<]HX3|7c^.8AS7k73%H0iXo2Rr?z5ClDpw_87"}b*V%E?@{JYpA\\$ŔɦtI8~C/pWVMfU|N60- 3$wmq Ipjޡ&Ú3w q6)~)Q75, QHcsH"b7vtW.Vphr?]v}[]gӹtdl S/j{ x6lnopgm':5Hh$=$O |K%?U讴a"ݝKm ,T-8|oA-i!!׌ݵID:̹xG~d]z̪VI{+Vf$NU`A0™0=dr8=4K45s^ #ޜ ~||Co_a.X5Ϛ7߆zQqQ4T\A+.oZe3{Қ?@Pҥ:]҉yi OtGr.ÅJ{Ǹ٩b=zr^ K(V*J ,a!f!,v'Fu&-"!;ew~?~|f "N?Eӡ{#ś{pMzG#fk[L=b>0κr8 YOjOdcM$)y|co?=zV!Aۼ@ z_.byu_ZwmKށ$m; ~Nڱ /wK|9bQSGl֗4X%߁7Z178ˈG$1;Jy¢5A Z3ϷtWtvs4Mi*i{\ӍYw'ֆ{vm$?1K U݂ʢ$Jǒɶ/b3V֭GGʒZJL90u: !R$Μ@6NzUTo8xkhvicSjXϲLG@MmLJ&*2MXNSӬb=fwG*NٽsJ?cop:c|l֛+%S Մx*go#fJL!" ħʥO.h0-bY1wW]/ q T'fJ+u?vsy|ϴN$zF[ !S`Ӕ~('D#&83#YsǙm"d_=aFg 2X͌=7PQ`f}MQHu-i"Z}y#xiJF;(i0٘Sr7B:3P"f$~C~K]/{hX|mZJCS x|$M+i0G3Vuڻ!!xaRJɉv+'eJ,uKᴇj:U;=~_}O1$в\<&LV~H2U 9vdBqt\FH6 5#Q4h|LM3.h "q9dLTh)4tp]X@TCw8zaYL s8[LY Ʃx_耍R`5f#1$qS{Dd}N$kPŀ5ҸiSz {ٰBτ9=2ʜi>ׅ[@~Ρ#$ĮE|]gX 97Qf7`2bk/j:tL}lY T j[KieK]o$0 =URf8O67 ѿ5axyjEQ))z|gX0;% TsYD,kE iQ>>4p?:xtU~R_ONXk~iw Iv`ǔkHBmB 7aɔL/7`>&,esE\ .%d\b:P$ddq@ғp~u|SCj}G.{On;K,?{U毃\)4@MN65h$s}[mx <4sejelJfBT.gfqjBB!,rf~^ŕPɝej7+za%K@Y|!0~~ghq<;L0NƝ6rwS籡yЛAz(gǵk֙eEI5i/'éǃ5p1a!3h[m{`;jsdQ@/is})gBpCWB4͕Nh;w<p:wLdb$Jߴˬ^s.uc|<~{<z(Mg9ɚI"]\N7h^*Ӊ&T&6蔝x wwSw1 =i;MU Lm{ xNeh*3_{ݺn1rǏb:g Y⎒Ca{9U/d{fM<Z6K+Ȍt I3`ղfEk'≸J)`ӎz`ZPÉ/80_;ǧǍzcd.@NU4b=透O;otbG|e?*sYeɏ حb` <1lHd=#{*{9;3͒2GM-B)H%RY1=Zc?dÇV\PpchU~➼.* HC[(.Za[,~ q}o:4ċӺZ19{;cph(M8)o@`8U4a~qW[̃ 0xN"z< (GIz ZMH*/`'$fh;hai Cw.P|"숵:g.5x0}C4K)|@ +fe*6Pr=;boXecB9(<\j~6{{L~箾kZN"~-@)97aLڑ p8v=P =f^Or㐶td{w1z:է>Y)%~JjhV0{D ` heqvMgDg'vkGZ}˔?P|3WwG'Iqtv,"k; ^a>to.E 3!1ѴìT&ݚ@j୛Rgk}1k0lIJ}kQPdqnh~ytؚ=*XX)"p67Ol3g$(!d٬{jCʐأ~KbLs96!b\M.)FDu[AYs~xsc;$pMcX5DH |r[)0+%X.KcvKc)M|/ `6q(NGN ZmI,ǑaE(|oG0-njjJ$7}L|ѠiW 톔jM%0YHii[`:h[+[}IqI77Pk p+)4-.94rEf:RJ ^_Z9SzR;cq3m@rfsۮS7wm2FTޚ(! z -7tm&pITI j1S%/=h_ք빕#׃.9ES'$Gmʭm6tT\ӊH+״@gP\p)%vV%gm]*s^ÄS1?WX4[@~苩bJ@l/::H1#tAŴhC!xGk2ԎBxE_,#nHh0J$3j 0ar|ājCid!Fzlv4Íbeyd-xh~vLٹp~?7)S`?0p Ez \3 g20&mr2h7=*0hoM)'vE^[  KH//9a~2 ʐHqGCYwkd 'U[kns 4;7\ H8^TvՀg|R{лguB2'ts4,(-p|tvՋ[|{B6D&\I _8QrO4\kؑ͌!yUȥ+oe\1gt~N05pr,BPo7[k'"8 ܡҹh#nެ3ⴌ-Ym Nm]+9)cAm{|XRhV7Pso?lalT6L4C'萡N`%sN{O]5:ޯtx ôah@.ƌmr&\o1=_t ㄝM8wxC¹q^X)pxO 5 #a IDATDk3vؖL>[NsI%_HZ}XT 瘖i$ ŀ4PF5Fkb!CDB΁O=ɘ{5UfͰ4 ?o 2">>fKZi\4N1Y*?\^VVUE5q2Ni/7LO 0Kau&R8ZilN7IyZ%j^s\2kfrS0W.Dt/0vcG$iQV6ЈʨR_4}L3IWKjRK0UcR…KLCP $[p仢{;PiĹFVb+J飂g b`QRJ10G e"]}oLdž61L6 Y⎘d7k 9u65\ S0/-e/USrZWX/O =1M%@E0'p KMm_YCn}{a'5Fbuu 7f[J(Q5@`K0 'M%qj=X6-y_}9e%" 17} ,u;n H3Lp !@޴k506A'P.֑y*Y˄؃; G/ @;p3̕U٧߭u28Y,X Q9uVsڲXvf ֬7>s X>n~[*Ei?R߿|QA6հm Kb]w8H:gF9 ׊iJL@ڄ`!&ԕ:d\!oK0ʙczа[CsvIC}xS%:Hco)c7DNQ,;H] gPd%A|bSAI@g ԭ}@\4sIH KI11 u!t  8wzO>XжDn UF ;X.,h(X̜fN1T&@<[ᚏ`?kYqLD40@ ״ZB)XڀaC:=1=6F*j R׎p`lJD3 шn-GI#~5n-bdy-0491XAo4sE)µ?6?8̀T˴QX1qkL.޳EvK%q*cbtFvbS(CfȘƿ]!늞wA)uJOiy5"[^׼_VoerjbϋbɵA5%yt ~p3.}Bnb=pG @p;^)[p~spJJ yv%i"K"Z=ieV'dV"[)(`s„9-16q3ƜS\p* ^sbY\4#&9>͏1&Uk=b U{lԟỹmDB\;E"an(f3{pCm#퓙3w K^̅)`i]Jɥ` $߅VN! e8cb6 |?N b' EiKkBڎd,ǒT=#ԫ mbZ.xK --62<7d̯1u-f3=7C|NئΠ)[!s 02_ֵ](tg űbE7a7%i T.Z>ۭz+͢奈[8sz/ga n/I5=\AD!r _|LaZ1^~ %up%D0F[H>kFrµ2 )FvzJxrkښӱ /[:/6/aW%#ۍk֯z=؈)p[Dux~ؚbt;ؔ)$%-ϠIn1t㉓0+Yҗ(_VJHxu@:3g !iĽ+܁i<>hmfӍeK)m V@1ꍸťco h[WP@u U#8``ϭO0`\v3 ][zv3C΄~P =YR _%ЌeKm{В5@ӌ6a<_Z@R[{Ե7:oDͲvDPk5;H>:O nVef|&Őű<8!Lgwgd@w)*" &+ cKu5F Ytka)UE\T1/aI&j`|aߨ48XUr'__@/~3jM*֊.v qh\8AotK6`}2ؾ=3$aK,;9<_tH-Ix3hV`,LTRޘ9T_Ѕ Sa>-q~k[T5Ӕw:t73FNs!|N-Tϡzd># JDnj-f>ؗMY=Ң~k1CȽƱ=t>%@7%Pq`,_,³@*]ȅFżf_k&S~c1*@8v4v7w:t[l:q:܋XD"ip-~Q{(0u_ |\y~\ ];c1`Kl13 w6u>]clټ"`) F SYr US :$9LC!|{tq -1-oI p"0\ "'5ؒ`:&{!gpqr\V< 6:@u7fo05m pSVHƐR( {}n [ o;O;f} SIRi_)Jsb7{,,xhDw"/78]RK .iUt\6iAxUAnjfe.g Pt鸪=ۗzgtHg<ԛ!!CJQ HtY2tb$_|nC{c}Kv( F!q116J1ylN=0TOyc@ރ/u\ {Cl Wt񪼈"wp[BRTB#55QzWn}Hv [fw.ƃX3D].!%B{Z3{H77:L^$C!Q|1_'Ќq:-jPb: ~ ?o7>FZHQ81J-J>!،$Acc1DjX |DΓ٩P>)!q-HzIi% !{Gsi'tv ޼N3^%:fn&zm(rA g8l-zXnI)tO麶X#*|$2D"n({ LycXh4Y6h @P4N#ya?=S*opmg6w6[ UVs Q81N;*$6cZ0k[ѡcU"2YP|fc %2{$J1zt~0Ŵ[Ƅ EK؝;v?y+@`ׯLU+H&d;6i4x?Oj%;aRjfLk2MD?LfJrф7f_ s `JП;w/0S!u.S.ffA9hc:Bؤ ى)dj͖I4lepP8R}\͙ԸvX.I N +vן8( \oi?7sGiJӄfODv͗ DOh荖Y"{ĭ7#ˍ yV@i@ږ͠Yk2G),2a}kA-q,op0q8-((׷,\kb RAlߊ=E)'u0gK%l25;F7!5W4<#rd>3▞{q8mm.p ^؞T^sU4^f^ qĶE|VH h.b&rȄ0XҧM&9:{Fo]`!C1{hxcɑhb(8&*%ij$Z(%g|@4P\mE؅R1 > JY !=u%3bsԁ|DNapP>H Jd cU]`Bp{y-ܽ3{d|^aޓBa#~M̯'+WJ:fM'I$Tw&}k.>7Jȍp4s S&5H'rYA ص3.'Qb!vBpmͱ%10 w!PnR+4_!-ȄxРe;1hcjrْ-hY˶gkB{FtcKʞl-G0AQqѣ2Ĉfءhb.`a ֋&bwl=: N=m!jƜr//Sm9P|7"7/D"ZP7R,2a+N`6PYB1SCǹfzȄz5\0dțp#M8ùv==x_HO AK ئj=6PS1e_-g>/PC};]KJS8ai0Q,[0͢ڇ3h>LuHaZNo¸ps^`0Z o'twChzRfu7, 8ssa ôZsu>(9mM2ؒC B$!:qyF7p,IjI/ ɵ. Ź,YΠ`%In܆d[ "rwKz01@}rLoV{yYAY`!e5%Gg$Oǃbv 񖘞&gs ڜiagfQOO͢gAfUv(ZC @bj7Y!=- ;B:4vB(679$B3a`llYhyQMuk  s*НU:yή1 xt# aΞBK[՛t:, EO3ʿaV=&9P '-::WS5Ђ$v#>'F ۓ̲ SW"pkBv{1SR gvJFY9L/%1 h_8rAV8N|B!b=x3I7%ݘ[*I:ƜNg;;Ļt \a1ka#F IDAT ɏp4ﴡ:XՖ@~pL,֭!"Xr̙i&5 w 񲱋'\fÞ[Âw&^ΕokBp;è71p:85lۭܲ4Gےlb5v|+Knoc|i2Y#0cjEw ީ6o3hPЌb1/@5` ]yCgI;gWy`#>pӾ؝ IJ,;ڙ3c9 kv>Sנ`!AX5cC:ឤ--jı=LX2 E<wQΠRklƶXS#mRȎ4#3 b1u;o( Yiaj"1ft7ވ- @rE؝go$NtD0K>5 7Jdu$8$Dn(l3▾SUb` AҐع62D !>K{Lx4܈(gМ8ӴNAXe6 mô%Pݎ/P4l]8fnh m1KIW]`Zs[bt|~2dFuĠA/Lrv=#a̹rR>>z!`Z'<;LܙN=ʑ8 `t"'-! a9X%w ^1)!jmM b]\ Ά m^ Mi>;0͖41:'䎖SxU nI7BKvI 7x6M(zF`mf87|To6~ny{ϓDRf!-N fP C]e`B8H;b*z5 QP=[&G1=G6C\f3E }1/7:‡rS;  03y[bl$ʳr-va[';! Óa~.1B Ĵfi U@<,oD;.\; ;svX˃:9Q& \#;ps没4힛5M})Y߶1-o PC<H1w´؜ ٍ`6h:R`ڷXrR'L nNzqCzS^8 h6sx>o/ tCl| C  P<8&cx? <nk %J`{ -b;.! bv~y(̗ 1ȠrԎ%=Nl3@Ls^Њ׵,C" D\9IeB\9O7ɼ[v6T` <}ibdPnt:L[89KNdH" sб;>f4׌< .4@r&v ҙ6-DŴɛyAs^8+i<5뒧ppMܷ LFrɏC 9o3hۗz- Ű?g7t )f_Hdͼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼۼt9u6o_6RxgyK~9))y.l6o_*c5`=)kג负~ my{Y4Zq c9%_)si3 ~}itS@Ӳ1Kvy9.y{M770kXdRc0v%t*/)a?c޾HaxjbdM[7IњV)0sBs_33hKSTP9ZK4kAasߩBz) YsH?漽ܠ)/\BR`^_*3R L\6{}d.T執4}A3}urw )1[EYG==94}҆54I.P- zLSHe6漝jcI8P`@}}@bWZ3Pe6|>*P ZƘw rtRDgAs k[ չ@nvgY޷)~k;lu9`='fМ3bߺ|%@ͅS@)-000怽baɬ,gМ{%[C115%[p}CքzkBҡ.ri187C?o_6i~5`y[39dmho2>Vp9B`z \g9R8Rrxx),"y֔ԲД sIz(kq҂ Qzsse@[*#*Il2sWxjγU˽.5#('pj?J0H%@;'gi  xfJC1,dfkj;,cG QB% tͯٛ_*.eM,8~%n"CsI9\8 @)c%?׀pmBmf|4VbCZ/e֜yL|{J1J%n=jn+h?as# YM}9GfMV'RA{IiKPp\`sJ#1fw1t([!sbkv63/X3;ǜ$q}p~Kd {Ү"YI+OhE[ s#Z0ckCp6X s@-?}זX*L;[L)M/z1(VSBuT{"dNi>qsSX0[Ep1YyxrL *,W=ֆ%!z [|!a2JଉrxάϠybZO̚IfÙUPRy4A2Ǣs#(,!!ohd}eh%.K-g!ɹ||͠9oYL*_HlJV9#|I5ߩƭRZoޱOq?`jSˣLl7gЬ{W5jY sZaM.GX;"K} p{\h.Hg QҵڇsfZGIO/璓b9wp+/e>jLd$34&]b1ph/s 9m;:5ڶ˄ZX9#:q*}zkf. k5sk >J\**Q;|g r 2,gY[J!5TZ4Qnris$6R;Wv錥] pwZ"rB\Ih]ldu|-9_G|eòPk\,1L<<.:H'3-֚ S% v,2wrߥhJikR+!>"vɔ c kA1ϕ,rL֞ҰSZϯ3h 2Ѿ}H\lI)N J>G05W7ȹZ=TTJ%uR9{? _TZ,K9%g9K`>z}'ɓs5EbtKw)@k<8{؅!&"2oaȩBya5Zd>,nkRQ Y2?{okKv}kWNo~_뉃")ٖmٖ˖ N$1Ɏ@NH0I H pAD"[%R-S()-6MwxSʏ:g׮d73ԩSWZZÞ-RGdRJرc{-Gz~ >fW{Ĕ+V3р#% ֻaͱ{C"|a2bE:b:@0?hS9#(IcԔ#!u117, 0V> ɜ \b2/ DLMafL1gfBĊA ef HMdXX,׫^D,bdZF}&Fu(BN!="!s(+ dS}3o"H[, yB"nST/xN2*.1`ڢc)fDt. _eS$`>dW¼ 9A<d.%D}+  0@&"L%bO'PD@"r#N |,ga>Va7?YyDMuX,c%FwȈ;k9?  h|^R1Hvٖƴ|w mJbb(!>@[luZ!1k 9}32p[թV aj4&huH0 !263nw}|y167'1 J(*W:oz,΅ Dǹ>^{S"8#;"Vj$%o4m۩\mNkj|Dwi) z9ɜ:qj@P#JsسRTLr^9_>[g3NHޛy"oT0@sH|E[}6 FbTGbZBaz)]M\Q/;}&s rC6 3R&smCD>E}gA3}0i^XNwH}FK'p !28b10泠sץ^"le]=2nX sp7oJ#Asu)lj bvtVNbs 7fJl|Z-X)n̯R1aOucj*sHtiTv@x4߅};Bm쩼hʎ̗͌R9ts 3!f>:]Qc/U+ƞܧUwc K$d3*P9g_l=DL3pJͽ&|95oѾTdsmf"SE9}@_͔Ӌ\|̔@t}=H0,]y; OIN(LyY~ѮONvƦu|RA#Ru߶yM61y\WG08e@n 55*5 6ʙ\\_zL p]CZ?u vjHHZ7m͌Rf; IDAT}Rc9 *0e*&h,)G>\12aP=;{- ; o[mj;"mpsmNEYw\W=z8`0F'9s sXhNXo1rxSJzaen9Kˏ)'?9SfCWhmӲCq,]6:,rs 5Ќ134}tX8*&v~L_;BĮ0kOF9+T{.IqS({"`r:tLRѦZ&Ba;r'&˽iLDd+NVׁc`P56 ucej@}S pBitU3#^{z%F)%e2=L9ul{gRfi Nj5gjlE;_i@"/^QS6@zTnWGإ~!ww+eYʐ1c92'D8]hw93 L9?1?_g/ SƄٹS6߳C1?MRF(! E BEX\/o<|o1Mdӱ#nu;GoAƔi9GEvd2``ĞB XfT9,3uB=}fl3(֮O=}Pyaqf +b6tS@4Sq;" 0j|h Q15|dsWrW@撀 7a=오 g}?-$OKXf\ \Pt٦<ݿ}f3]~-Vt~m'o} H^tđtwx\_Ewk2H1Fvҭ VZ̛R{NHEA3tѬ dwg"6TCХr9%R--G`1vTt͔^}⵿VKPՃ;'wڶŊ Tq_1׀3!ID@/ 5`MJsky 8;֪,ttT̪bOD3[_GpBVurX22O}9"9;! 易̝m2C񍱆ٹR.?߆)85r! vj=nCVG!p ɤwf\;9.z]֨>m@?TL%㻟Hh_Qcd!|צ[һ9mc#]`J,n|oy,U.E#TnCNm0](M2}GSɋF\[h?|Gqf;r_ @ʺxeJI S,l&g1Љ9ˇw.s&n)-zOCŻ. 6xIҽP Η=ALb gwP{:lƂ`.Mm>c6m~wqP]FxF -twPe7p^ߔ˒V{R W|oN Ec M-RSvc"u}RZ\|3 @F(ߔ&k,;U ;}>Lٵ^ tE >=!km~czH@K85ϩ[p8fkz@Q=1W)R%-{+)j8c]rX13~ U?L31%ĶM$%'j +-h3yT:X@R[`n 'I,gEY,/3/dtaLk P\jV]u@KP ,-f|OzU%*">bz{c')d\ޱ]~$C=39 ]4DGeTΩ<|/F Q ̨g[u|}lB .Hv7c ;d{]}g$B2V2Ѷc28d7'mcFئh} 9W4Fx$9Y{CSahqn݆gY .عn/^;}|)~u'z);`΂]\a ,D0#R=>A8@ e}H"!X8=8 `ŭ\+>D+cDSL}?UOF1ߝka|U,7/ k o;!O Q (089b&Qypczo<-:nk:uv8k0}\ uȻQaWXpY16Ħ0z4Q yLXl@ w mff;ݱtciO@֡u pb[)A}|*be j`4DBanC B V[)v ia&D/ܺpQ1Q"Hj^P=K)ӅXӈ`2j 3mmimߟU)fn7K}0;*]c Vzch6]>@8KBhD7ѿ)=ZcLhьCc!R\UNj_tjѽ`ݞf_[vScn;u]o*03 \a*G `P /Ѧ-ۤF4+:oD:T5hdI  !;))J"!3],O WdfK$:{4S-])" 2t}#39d̟A\ nsCE~gOP.h,-' f]P%fHD X!7u;iFu Wtr8vpO`{"R eP+#"/R1Y|'LhCDmG Zt,OpA3J@6cKDXfξi lh;}m2Y<#-Xn ZP0]e~o>hv7WkX[XY\U7G(wRRԋ7 5tziJ9jSОQ50'Xu%Q PFyFY(B_,+fi^?<@%k56 @#=5S7 ] cW Xj[L=~n(nv@֨W> > ]v }f+ˏ*غeqj|heq2JJN\D/}HUռ7eoN"AӵR0h+ۻs2O` }0&Sa}p]*gt)^%HP'F\rk36Ax/0j!r`p;C /<'LfK͛ISXm׋p ûf_v`؁.]"-`ݪjZbnV/Y\K"rJtY\\e m(4]BvIJ=:)I(P}HmwDAn€!8pPWOɆ]b /),7x;rl=!m1&/j~O=Lu\|K=G2Lɥ;מ *ʟ痾uۦ->>4 ]/K_CpeZkaX OVY $В߶rLdULMQoP!J<*o/ !UM ݼe*jrkc][{TNб@7F!R2ZN>ʔBߴ!nD/^^SY24 1*\$T`";$3ρ2|k8.; Ϭ83N6n&RC" 3mgec0c \}bb?'my+ ~ d|;6DEdkV?<=t*J]=ŢWJ.P|lV5eu,˂a- mw>a -~zmI:eZq7L Apw[OG}7#z K|y":܎LTS9P(JFd@t^-LMX*;ЩiNT+1現pivπGDd.Q7:6L9Kݺ.v&3c^ЪƋ+]@"Aߛ4|uD$\i 3dZ*o?'iU1\ a0ԜcYpzJd>V,u2ħ uQ@39d>h"3 C|7FنZ__,=я^XR^>xhLrs~Ѻoe 3.[VOԝ*޿Z.h;)8UeZT1&ƭ`;tzK?`!*#C,{m?L}W%i>WriCc!p*>6ϾFGLu_'`EEy=G2-1"sFߌvD(ѾKbf{/BMB`m!ࣻm-&'sM(]W%{?gvucČ>bJH&sZʁz 99+?ԘaDpFCP[ @mNpbi@i` @(W9)8yP<_f Sa#E:,TxM]zs]L^6E7~]؆:s@8iNQ|+A35<hqSO3}_;Qf2{?ec&YNQ< BrL9He]0P 3_ոU5&pM m[$oVX4y,{`]"ͺk-i,j}7h6@8`E0g:_vW r٭oI"x'y/Eۨ=g*|b"7(|}$ Ӑ n~T! }LF2s'փ.( C|_)>[#a+g'!$`*;.w:}r]v sn-kU9*Dy.v o֭ḱ0.#5>K$x0[PѼ䖡K|_5XINŦlS]5^ W jI sE޷<؅$uS.I^bzLӳ@~pѢTk0MwJ[RL YmIj5ڗZ8 Y<';{? K,^)3#u0]k0}W?$wM۾e|bUZPPWKJʙDFk35aFXU,j|F,h7ZT/vPѠ!^#K`|U,Ѱ %s |fooUtPX0;ekŵ刊/%,26IO x-%*|_$N;JB2j Scǘ6DfF),UXrȧD tr笄-s?(l L}ހEᆤ,$lKya{!64 .6]2kscѻ&b3Cx D^NŴ\>LiߤBвi2WY,3UZLmk0]V[|%S+b?#GM%7)+‘0(5>-5~!g`8['j+~͉P DpXlC Eup͹!?6k\/A/[<ϨƐA@ÑhlDnTf62TQ"e_|-S .F║0k#P' 84. hZk >~V〷/x )ƻQRSTeQ3_ȹ2ZGLYhr"+¸ƒ iu ] cpIca8-'~z rL IDATUSN/9vr&\k\+/J1I2&\K(s*k+`\!9Cl_臛(lfM@nU!J,\cuC!z`^->qVcڶQhR#eX ï[Ҁ'%i'4QjL.2s<‡15&^F>C# JeM0#kmaڱkwz[pbt1]<!V(ڔD$)4`*g;gPDejptgbqc$# 1LcoN뾵ێi+MB"sI0"19+sbyT9R,䏎p`^=:_$j/H_ssj#:+&\5=|)CTt) #5dD8X2%&2J,Sfpf^~| x1v뎓vt)1:LO5]0c|"k-, !c|5u_(k i_ůː^86G+! 2ǔr%6Ox5Ѐ~:w ,`dR{ڿ(XvE\Ot Ќ` @"2ՆfLFH{#r2"5kس_ah#+agRZۼu!93FLW3Yti7Q+hX0+ G?uMGB̐3ll5WDxJW`0uŐ&jN\"W2J8]rGCxbvfR!3~J1P1hH}}qͦg~a6ȏ1yg]>j>=O\,/10ݐK߄5Y~A&Ͷ[p_(gv(?)ar)"(S9X:&{8W07%MO 2˛/AX4ޢ[4 rWi[qmPΒѱ$"i̲ Sbtׯ2W ̑/hL\%S.&5a[7Y ]߁bԁg w]B.X33&#3Aۜ EXonAU,_ ;Yosse_Y5b.:|Է:ڷ |ؔ[TQ%k©׫W(v.^Ph'ɛ7,&YHl)9Z *cxBrstl`2Dbk 1L }to]jo`35Ѻz]{P`whrE o5~Sq#D U2=_ ?c>ұGhHb[g;BDCN"a w7 @h郧{i/џMA<ÔXXPn.S s@S E^ =&H!5g$vkv//M9Asmy7 -lTƔCx8@}c'eo?$-3fϮ-JE^:O5n%>mX9eQb?[vrmj[݉& K]Ԩ"%xt{dGiHCc9ќUU6>f6N,K sKlh򍂰ӲKh-YEdaM{,&n "TQ \!Lmta n+e9_1nU$vQ:1`A%¿m^i]/_h&3G?0Z9 [4Uɵc:rDaJDa%LR?nip;$fx˭F$]G:i _{@$G&N2t ~w[-.o?J' [27[;k] 1̎eBOeQ'2Ey:P!NYTG2rX3L乩"1*}hPMsX"t~s;Xܡ\Uc1yL)QBaPh~ 0>CwO7R2V0Ϝc20ukaWL(.28R%|E䦇dnf[(<C36zL De)i]LrK%bSCJDI`ػ^SDnNm 3Z&:]q~MZwSUK쎂ܖ$púײsj!&۹Nn6.Ys+au܈4Ndd@e&x`PlD X7Gj*-ػ_": #g 4%LRWQ*0NREE-Slt&Y5=ǒg6av>?OJ#y" f, AC˵E\u:W ?n3 N|,9g8%y]>Je38RBLv?SSD򗚝U)2CQDw.<ʔAܤ-#]%-Z:A匊c11>mZrDbҘ0;f;u @دySCJĕ`~u,ZIa}" G,l[_0SoLhxi<2oZrmń&O CH~R@b돚r/h!F 1m39$ CcBu*0x?V5א.48 O^7g~-\eZkdƓlK`Mdq?cgZ^370wkF%rőzs9Iˢ,^ Ѝnթ}zT9a8(٠li'*>;;nkxWƗ'_9aC[?93=q46i7u/_'Ւhd\5Ǧ]xJ`"PϘ,;3a={CCS@ srz\f(5M2hx(5zؙ=~S* ݞL,!,3iP(@Umo iD.tt8g ؉@~H&&3fOw!y2OIpvVPeH$߅bVlxJ/)$)V;ȥJ5p 盫 gQ̻`M-r9*`"~XN.zcF@ nJi` MX @2&$^&vkla.pe&ވ@^A;x|JeW- C)PH=qVjY3Sc*rxb9FcTc5ُkX5azLv?xqιcQHĺL FM5H{n"kQ coHq<0KjңMf~]ݣ LklBU fxITA S-H)i˜+3c{~?̗{TF#(2{g6xvIfƒ-B-C}%]4X |ry(e0eQ7; ,)m|U^mb)^2!-*B!YL ""Rf0>e ~RQ[RrBEpJ(Lk-&DtIu1s%V^ZHccsgQW(m2ƘkX;{,ǚ1_ΜMyQ4+) IQ(c2H S; 7tp$E0BPcv)b(ۏ-Z(%iL uโr D ~цR9Gak݁6Od>Еio!jc47kAAQ\#p}tJ >yŬb,wL)֖;#glGt? \8x$SLi3 J(xR"\$}Hˏۋkӽ\,m3mLH\zL}'ݝW l PLx]Qcly +wĵNe #,@MHf Xg\֟z.XTWr6u z4T^3r}ݔ۝`81'VC%JěnR-1#FHK:cB\(R9+]uTDh 1;í\_5h:10DpE7ak')|g|~MNm!=>(h d/k )f-ˮ,5?3 ){Ja 0p Er@{4Bx`R/{Cǜ KpaH%2&)XQ#2~۔/ _<& >X`](C_gE1[|H)IhjzgcyM_M%r. IDAT $h5 ⳌC^Mw|a4ɝ隑UB͈ΩԄLpX.:P?'"8KH %).5  `ڢ|Oڀ8IߡD#Rsc`56{ΓjNWx@>g ;9Nw目K1ds" iSB;B̏7J(#*e2djl#Dt D:!)غ>8}'CK/5RgZǛv8A qOD>AS.X5 ߈4Ahf{L&R%FwVcUcN3aVWa!n*,\"±s) P\Lx c 1]`i%Ģuء@0^k2fǞ7wY3VCռw'aKD\IDPI. & j 9!T$( 4L;~MMt94s @R /g5O"8cb%΄B5!dQ)v  [sQ9#aP:Gu-*pE D=PU|pPiaMO0kf wZ,#*dJbA_H+gmUR6&5{0hgM-0_!SLiKA4((ToP #ܞY"r x~ C9̘{rfw 07TrnmQ Y3pK-l,FK?䜡i BK0(AN_x!ݸ `r|i#n53ć1 )Iyj$8dv#/s=7KKxΓQ~vKաGzXfnxqj@(́zI[K" k0T9[K+3fx {ǢN+=̡b Mvp % T\ic܇@(4Ve+< dPt?īDNIP4/di1o#$Xc ~y&Sɣƪם8ƅNA\㿍 1#3r2cX"_x YI9 )2, inn[E3+4g62@5 ;iQDEW-.CCxL1܂(pfS6ݕHevQ_d'tXȤǵB4r~ 5)ZҦEZ5M дh8675 H$irQbXْ{p@1P.)_y[v y!$ k锹=aMƅ[ "א`GNX8"psW/XmgCSݢksv zlZSss|ކn'7zyIQ҉wG,R6ːX [ÚcGęXN16&nKf>J>!(8lPKjS7&5&}u)7067 )kě4PcOETe`7+Q?]B^.cso7,e3.0 NQ!Lxo1U<5m, DŽ׹@`̜50Mw_wQ'&nƤ)3~ w.Le ZbnT%!B@;PjA^RD0)+ 9Fλ ͥ38C[$e1f?k*i*,3PV=E;ک',m<Q(}FXNP.ql|g,' sw*8߽:a!?*"M`kJL=E2De5H%[=E Tb"b$Ω\AUB:lʍت  ZIڛȏȻY>xzdߊ(Cdt ԋ}vƆc )7:ϷpkIJT![e0N ?oA cE$¤Paʽ(Gsqvm^!47#Zol+(%"x9mÀ *b!1A0ʔQ@%~w{wK?IWe]|g!N%x.r|$bm3h̳ 'TO dAbryl%'ԥP3rgJ`?lN,w-_},~˜:& PRJIF49^cķe:!xf;\ț?(Q# s?'|V-"_Iay=Yxߌ=iڢFii7']9%D%(!}(I~x.J{3Xb |Е:!:yUs`* F #G,m% _AQa[9ۄQ!qkFkƱ6Xe5TXd"}k,hX%*ioJ(YrCs~”^'g킬x˵-ƴbE˱̘s!׏3TfAh9N;,0{.Y:t̪@$(J|&?Y'-M[޲e &5Y"ej cwהyN*22ɓ^]]]C{G(>kYVzNlja%Wg+sάlmd`#&[g6n'[]=c!HOY*=w Lh?:8ҍ(@ /I@0&>O^UefGFMIƦv¤qC&]RK 5/`Tçךa)qzcbPz.H`ύpLW 7% `ڌJs5pJŢh4ʣn$yi(`DUε0`c|x:C7!\uF\dUYX:%T2Gtz,)ahV{v`9xGB^:rfY=UPwgM XrWQ[`ۇϐagPvi6k0'}lyT2*dT6#I23VÞl8OcF8@bENyTl<(5G K F:w9yqR#wӭ`r$6VaiRs+S2BYTCo(d[!'Ԩv@24Aw-#BAv#F`|40\U>0DJy)3U&,}1ΣO/+kKs;!|3x 7#D%<]-;1Ʊf̽Y0e' .1Ѭ\sґ@yVO& c2>pU8"%_ :1̵bN鈱=sid.XUᣌj2M.dFM5g'X[GM -:OhFOG%0L_`JOg|(kxp^-weN9Cg5Gb=+x*P^4Mv́ϒ*EsqRdK2C{L{_ZH)cшo2+Ñ]0ㄬjw6 IdI@QZh>G Ԋk#߯Cl)$s=YXǛbvlU &2}Yxܢ֚fC"7˰ǣD֭Xej%, }Uqw5((94Jʽ'z$}tkݡ7!oOkAiEO].A)J< L%NF9;d$On$sB-naςeq FP88Eyi10㚇\@R ;^wt4`dGUʆz"}lf,IҌ4xxv-I>3)< ܉~[Z0E&ڕ7'`qܣ$L`{e7P=hS+E:}kw2$KH&qU3,%_JƉfD2$O1|!2dR?7"‡)u~8\,@]kkli^5X2d\KR*g $ωIɚQCm!Xv^H>/ef=i i)\sN*r[cȘ493XQ\[:`S9mh7^^f` [Tti7Ȍ sR(Y[rA=c3bȔBh8N:AaȔ\͔2ykݎECtH)r^o-l|T4~y_` Gp5&hFi4IO[bKno_LH6L<ֻT+.p++s9\{ oR-5VsLs 2b)Gz*aC蒼WqgD.{=1YU2,i{ n|To8|y$Qŕ>ɞb9(+6Tkv^Jq4}-xЧ0XZzJy؃0NsXU7J㴐:A4̻ ;DvEyxB)O#kUWO+ J2,4+OkR=rrT3j^4דED!1<qP6A_f@=@sSltIgKkW[ff\xnJS<q( L-[v1 &Cz\Ї <盘)S旜9 4_owX`pVPH@ XbڔǴɜbkGȾY< \`%E!>AO2HMNn9`'\O99Zr sOt]zVoeG2!Baf;Bn8 iK%@nURu%̠ 㨸$B=[4Ss] mɚ ZQ[BPg[nd͓Q_`tЛ5b~FJ4~@h 6krY>4;ȗE0OÐ]v>ގ >B8N=͕yҥ {i^ 򵨘TNV9G/ 59GX{ƌcItee*[-iGxz_J1M HֹSOhT)X?"4G'a(>yiHē9PݜJti~9* ^ꕾ4fnMWhRKm?D-މ;[`<*w`0^`R3/aKk_#+8ec#p,;KNA^k5Z]ʻB:2")@rrͥ@\𰖬UZ]Jun[BX"P UN .6s Lpb0jwz_ /MΝ֨e1xHMf8 { fI0bQ;@aZ:f% Q3!4\A ?<'x0kQF&i !ťV٘KRDۓ+= ? '50xEo:uM7O9Τ݁T59Ʃ٦>G@G;>cOk |N,ڢE}nIY4.v//ܞ3Tƿpld~Kv)Kz6}4Nܝ]AS){|e\ٞ=.0`bܦ׀Sh17h21ל J}i%U|!gE Ԭ~ML IDAT4]xH3y]՚A%g9?OYE.4JrzƟ: 6x|[I4[f9+.$ %zu1 _bKTRDs t43SW-ǾEix N+-.3Skct*Q)s$( (d\-!sjWJ|*keGmU+TLtf fXf6%VUe|9qOZT%Cԯ<&O"KLgKX{w<~&x|LMq.Zp}9ceTX2Ft:KZ~I hR4tIzAIlA^K`>q%~*O#5~u9t2JsxMq:0l F[2!Gawح^&"u$D1RQb8ǯͳG]'yڡD`"I;[!ٷi)(0},cdt2W\hpR9gu 9TՒsmn0f̭x~65zá}8TNpnSN-t$#.ܺtOaya-Kp*PsчxGdh ́{xȍrWUr7۴ΉE3S4%Kfޒ +WLiq)3Nh 妏&K?"rC<4ѐ4k{Z{R;L3cr+=霹N'ncvƉW7b _oۧa{qSG~26NLOG.Gz$ @¯:.]֐q=;KJҲrL9;.[u~@,'\[x#t`c1pK3{]S; [W8!ɒ$P1,8A7a\:Q>Q H&vx{y\\T\h^6gxDIl3yす :͹Ms q2't _N=TPN V1zF6 ~=~>k4aUms} \*Jb!EֺA_?q+n@_=Ah~x͇a>-%Èj()@U5l}H1G`#Yj+'Ҩ}TR̡m^s{V_#/Nj c=O&!0x9=3e.qz >Uˈ 4Ʈ8'kVrs\M u;8C 0z:x8J ca<}w)58i6 `t>IHbqp1{ w]!9@9 >_mӾc) *4Úт4QvO5i<`JSN+04ۍ.QS̐Br&m(Q@SWT܊M~tVRۍZa1==~cnFC*]- !J%cQ(MR%sG -|~$ж0z؜I D RȕֲY}INfc]ة^9u%2~\J^3:v9$3,9e}Wy=Op.6@l42̣: Ӱ#iW+=Gu2"d!;80V9Z8 Oٓ#۴yz5rNG£Jw|P*uM\>n8;x6ZפȏTz".CݥoZ_AeI)K1@_-Gaq{w}dk6DM1b6|n:(eN6oi`_1"l W jˌk]B?M-c'-5}TRd,x_Q6`PϷ;0\ ƴZMp0 ΁\ʼ~Dj5%u5ȵ0i2¯j\:I4nO)%sM0!U?%4Ҥ"Rp[ OUi`]9=e1oX+ .5kiƀj1{|=vɒ n!w7@91@bB)pYl*?OF9o]9Vnf#V+핓c<͓'гpSqt19ȲM8ӌ/xqlhXmH1e4;ln\,lK7@Sj[ ş9gcTnQXZE$?¼k0Rgɚ h$fӢΕZ(r5Je; l wq|"{odweG9TU5Ѷl D׷ שt*ʼn  ,7&oq v 5{\q>.$O3A 0M*7u"Pfte* l0K#+^!t+/.]:7dg |kui+&X^8wwMK/ewmL1뜩:U5&zg23^F'?Zm85圶C(;g=F\I:-G)ʝTY̾3Ԗ h-e4J ׁi;f$Jtڊ+jVqԠK90I@>_Rf'2 3lbCwD"=8 ؟C޵(Y7E;9ǥ1+p=g6 wўpW\_b׼gV@H"mDw@ pjeJLTR\()ס=J<\t+Acu QߌΞ+wq%Ud Nv"w`M|H/5, Dx?šɑ#8/U>VmњB*54Q6H ?^$'h #OYt]_n2%ꍩz//Z7[1oTLs@npNh`BN]k (()im#̇Q04(#!7PK/ޢNtCͪfKYD'\2KTW)D`ŎE%K{/Y1t.]PSB #o6;[}Af2[2b:ga"̖t`b#BT^^Wv8A`%[ItB %[f&'hD$pJ 9G([fTRߩVWT7ßR$۴N~TmΝL`|mHiߗmTG𘚵/+ xLnc<KٝK,[zPs{oM47ܮtvٚ{o=lzV(\pn(@Qq~PDIuM{#+9SrFH`aiyjr/`E1<'e8QzK˱iC( Wp뫗zDDsZFQ l9iJ3@ ~b'rήq8Y]ɌKr}>aBߵQr|L5~խh:,ؼ8Ceeʣ4ny3O-˛k }fOd4q/'+} k9#:u $e\x3'%ktr8@Q@6zj` _}P6C@ԥz99Y(*!Q+"|x;7<{ݔqTr?wL 3 _8V o)VGwx#Hnpjh F/pS~wHOLZ%.9̀2c$TϨd1 ܰ_a6#eX3=ݍ`N71naA?4o L# jYQe1Śf9'{RdY)fϕJ霵K1z16XtJ&="t}J#hFƙrs+&xjCfs68Z%N/ + pKyf>FF3.~*x@:IǷiv6cpP eyU?v8; PTo*ЁqAx#ۍ(Q9}gb(imly*,s%4$fwám&ǒַIim.+n}t>U/`\` >p5K[jU=784%bpO7hAʼnʐ6z7sVYZtNI? T_>B}t肭ý2"1舥Aoie,ϙdhV#) ՊYFh^}9ᆳzu rt{=~|]76-ې𹶗=>k dͨ[s6`8"@_Ekft(kzOME{\"6*5`mCЉGl)@E?t;|#&iE9YT]n)g[..&4~*qRϛGƪڥs^ܞ3;B@M闩KHY~ pbzyTWWGf껊.#rI)Ӄga;s^$wrC29j589806CZb)y]g 6*Gn Dsf/`aC(VlTb/aNxNUD WdePZh3%^O\p(©/@98"zS!"(E~k&j8'F45,/X,B[n,K͚Zfg˫u`r?nPN5ltď~%c<{N@8׃ao q3,ʓn)Sk9'X,/!c~!tzf,{C)t5PU,:|8 g-Fѹڜhc*UϊUN6f|w\aE8|j^'f<7a{ ZEߡM ~*Ժ b IDATaht*Ym# :v9̌nி$-Y>x{Bk ܎oq܉r[.,`2X;k{ vŹ>gtJ8ߖnmX=-"9k`?[pAZJT[Tk;1!dGBX@ 4 B/80cK't ػcJS!}k.x/*_ /1Xz0/eҺsNtZWn<;'P^$2NkxS JW=)⒔TR_Ibд)ToT¢d/hhxh7kSm`ÇK^=^1A Gn@+;g[yASx{\": ӰbPZ]//IPoN\8 ^ۛ"{f=5aKn O/]+%f%0ED*ɒ]]7HeQVQ,G|뇱Xz*'j[Qy~Z`$ HSĥs<׶/J%(ޤ2:kzQǟF5NhQYL@ۇ״G194@ ,۔|ѱ,M"BaaGac_WXaA'ElR~$߼L~1H6|Q%ur h֎q4Ȯ0Ծ'߅={3cK>{ KhRՠ6[syňFTm4KՂʤ#)'%Zle!K{N3Rb쮷Qj(&R\p+_F<#%q` 4K}Op:M0 b8[&; ` rC}!g\t]aNS{5Qw|8u6ʤ(ǃ`m(fl0*a]@dER 4fn5fڅ? y.s5WBY$3#Ų^/w;xƠQf<ئsPn%7/pS_\AYϑ)7.&n;:9ݰ!ѢiȄshqw9*աNS?fsŷC#Μ8ՠYh7C'^U\r p,@UYW\A,n/ʛ%9 @>H8XdL.7V5exRc %'ܠ1c9JE|蓐f#*ss%%Fę>G/CM";,Ɯ%u[kD|Bk$ЕOߚ <"`XSEe8ڳo߂?lv)Jf]ƙs/ShE/T>EJ-3K~\A3&s=[^*V'´S6Mf}ׯLԉ,N#2]]D0~Gp'NԻSMMU׉n'Vtbi܌tт)XUgflgʾ_0#S"8zsʉ@Յg;n(Uɒ9Ɓr!ZFp[D嘥WL52ո@XA3EySO*.]IOeqYtt7RʥjE ]Q8P׬@8`%&Mp!6W[%moq]iZ|ԙykG͓e>iral432e w\M%x4{`Z*-Gg+.sQ0׌juUڢ\/_`[gZ(cQ4F;T<\%JL)/L[ٜ`Q9=d@;2Q+t`۷ T5WDFהLΝd=4sʁ(Ư[aWDX YㅓBeg^ 0h]zHLִ3䢧pZ<@Ow/gT6 Kӌ I"yUf4b0;ѶLӉ{J\Ԙf$1yG3b U+7Ûwiap慨.IDd~188*f XG~Lwc<.X nTQmƠa/CiRO;#:aH@%:HxdCGmwC~!UaiY_Zt^?fj.BhwrUrVq[+ڤW&F`)e@M+ r3?n#DdVS2`V%fk2/NIS^{ i8Xr8+9P,[0~dz [4ltcx=F)wȹ#S#"'7Ƞd5S`( ့{uh¨I=sKne@eor}*KOxP+J%eD N'>26mLdv;4/$L#^9f)כ'50~d{%tO8xՊzH*GEXh)&XOorQ@iQ\q]c.Z^ƬQ>v'Gn}TS<-BE[Ge9Lfɘ"u`~C2eteN7FW|#k+uB T´Z)js(f?1LiKj.~Oj+Kç8ة^ojTgn7D5SU_s\d"䖖{_JJR7vh,x3agqwqƓ64h#c*:)s©pSx+n߃5\[t VKe.m^VLC>ܾ;\xSFmdzyww1qA7 wb:.jCF˼4JR7>_]0Z`llPonIF6fvg'o8khwì1u.,,dq}|{|לA{4O*I:eĥwBo='bLEf4}Ν铋i8lMcE7w6yQwЀXm6zlg*@$Sg9K70*w.Ce]<~faUw:8-t)pPu[Vd Gpp2{t99}~ -Qr{H3E%F8*iMDzZ0n9A?oZwVʒ"W6ٗvaJ[d(`aܨ)W=Nʌأ8fnktisC߲dħlx)§PqJ&P#ތR%\M!Ro`5zCqk\#os|`NU]R]29%n|u.PrwÃZ/N$zr:0v!){ဿx=S\Ԟ/KJ a^t|hn۽~tf[HS~32j~xdxJHmIX{x0!s !φfs"gr\뙩r|,񬨀rMɵP?t,ɷNFTlO1^ ²{q"| */Hht Vx*! ]ƣZrFv-NB9)I8xۇ鰽vW/z}E"v pya{ tY]Lo's9TUu猠'\'m,H5xceCC FC/g2Z1zs5צ7.s%Qs-Mv7˔EvوM6w1 Ya.+c~\>ˠEKFR`XZ:I\$u^(@62 ˆtbQ8rp|v.^~]{]O@UpqUr]d_UU0c6sح\RZuǪT9I)QbtsƐ9{LT_8^cXXJY**3z)7?ٰ.q(lJeW7X\c|ziYnNmDFՋXQɢ\_RO./r+Lǯ3srx9-}*U5PPwERV`3*%%l mPuל3̖W΅[@Ybf@偙vLJ1:R8x7i]cVi38#{5It"-кeJ,h"c, ugh sO,-V+Ϥ!^ё4)1Bq=w#sTU@] "eOF\Ks2s=K%LKwKroq}>-`,p݋|G*8-iL8a|ɾԺp|@s.#s.#uNYk8|C;2:n%d'S6{^u;~_y5DT|w֛u6\+@Kf-C.g,t Ǔsy%9 E:fj.;_3.^d{q#Fh{*c?7rJ韕x^Jm!c'%9%ᜀ[ eʸD.G"e~ 5#629fr@~[CKi9S%ǹ%{-gVα-5Js{|'a/v&B{*7\2>/JFhwR^ m_>B&8C4?Wf $ZN+()cIWV *JLrgC۬1M>r LS4{vLp U 㪆kVs`9@nzI [87K9P1KZ&NXeÆ~/G6|s|9C{Eh+J^ IFNZcW$ČQ0;mn_Rs8JR}5IB0ʸ Tey[8nwnZc}<5 :unQn: Z*s`GKR;k#QV~xjՂqywX/]BA.[!LN{q?ZltoZ*7v>rM v reףxo,_1J~ 1s-:"+QUZ ιyv ~'l`eYJ%;%:0S_JMv9藨;~fRƉ.qiHw'X4~:5A5DocRv̜cNP}ϧ ym\cN^Y Ä5)TD #9XJR+lĕQoZ] +u|Ҁiߩ6,w@9ta\MU^̓,z~0o< h͎5 m|\ U~Gqȷij eyd%VpKk獵)c܏Ks'X\BV SqQ=brEpHsS>Hy?q}QpK-mQ:㘥,cA5=sOҩ-) t-3Zr\&j.@Op[:AS=-srn+?6696yUՏ]=vgE^1JreNذ5}hG6e*e^s2-g.&[*aieBNAA-F+|G)G>IDoUe@rn7᰹F"G5k% slϙG)@Zb'r}is=~Ⱦ}o5ֱdP`+uK7l?p岴 qrw4 aǽ5W' Z6hRq*ÌdmL雲_7ɡXԢJ]MK%2vnn @յCr$TU)yV;9 T.釔%=r(m%=UUs ~=&zb.q%mŰlr76o )}==Ÿ(NKznaΩe%,94RY%zf#Z18-$Z6Sw PqW9UuUE%Q5X*Fa!)0,d@ Wpq!OnD"uؤ<.ex,TzǔmGqr/=N;e0v)YIc|@3S Q”iZjyL]JGMZge0Vq s)U,-[nס䜣պQ3>g #NQ Dsr(]Ձ' ٿ =g5*CVN\\e顁 IDAToYd{UFo0e8cPW 28Gb ı/҆|Ņ W9:=$^l=Īl,x0v+q 2]晋MS~χ5^n}\ {=?7~aRDqTuV72w 01ۆ$LH\>MGGS̲Rzc'e+(Wx |eR{Yp9)G*[qh3>DnЧQ}6Ya*W]BJvsl.1]/*5>*;̅ͰRdJ S'nn} 5kեCrDǢ{~>3pgbtn1 `[X:l{J 4?4(YN2"d)hb>{AFM+V0%o=v dєe5`/Vln@ \v|AJThu\8?y`=@o漏 mBj~݌mUEl'cF1''Ӈ`@{hkR/az$GsK6)Ӝr 3uY\ۂi/LFҺ`v]~AKOnnz$JỾv ] []U.xfY1j׳IzгI?!q#,T'2SS9(6{@J^qv<2O)Ko0hN0MƧy9rǁnAS:% ΠFZ,~/ 쉈ș痻X)f{C K뇦?݃4wzUO@#)8lz69^Pڲ*#Uhي<Iۄ⺊giFFGɭN,g&ҟS 9sP;+NDXu- .IOj1`GyEM5Z̉ 3D 0<@+@jTᤄq`A `rD`(vJKtuӌ10gؿ9 k*W ؉{ k5v`73D^.`XR|USHKJ.xuIc'^8$@vNK_|{!9xQn^6^@6 4!`]2BF^~Tc\ÙKNmɲ,s=.pvS&kt>c)24,`=:gN`VjL4rFFB&,lJկpSrnĿ?wjƩXM`\Ń̅ꧠ 4ctK2,]>54zfPXKFZcܳaH %=r VYM9=h 5IO:4 âДk @8b^ם($?x@/ ߓ^% )q1 `T#'4S9eZX*pZʢt(b9'8bV0+;,V@^b k Ӄ N$\8Zϋ ̉0; @sͰ=7֊2z/1i ns}&ǽ`NTP,JkET?DY3 KdxV!'vM 2Wr^̉8#/DVV"1̟DIV[wXL iUd!{k\oaH`ex*t3\,Z7#ㄔPLw7Lu@n)W9V|`{JxnŌK^&rA݀u &1Np;:a (j$IH0͹9F3Chˌ|jR Xkȯ| zETz :{fK:ly^M5CIҤh4' ADY GXaEA T#ÿa(EBA7{3ps3FuUfE{y3f\{=f=чF{R_DT݄:QIG(}u\A4c 3"yAY:f-l_TBBg[YEYA@nȗ2v)@2Bmss'X)gуPvZJ:05ƽ(ـp-O-mF|TpAHbEmth$;*w}Ѻgo[Q5Xǒw)4vq "}ĤPUJǘgؤT#Mb7GտO ڶ)EkH^Z$5P_1Pr74E kC,$BXҿf/}\O475ힿ-7yKSKIJ]3J1``cS,GvdQ_flFdq4ʰOkbzl +0oOэ:\&$7FrSz!G$ ) QfclUH,eٗR6hxb[~*nDHS8&?dPjxGi.dR&jƙL%[bs嘉()'.5ݹq,t&MQGʮ,GFƱ&ZM.AߑoO1i)>QSW:VhN$Y.J΀%rm n1]\dbҬ&< {=];_,= pFYΊǕVndL[~dB4UD\XOBsRD2W2\'Vu82ɗ؏P>1f6BfD3.XnZш6^K<o#b#Wo:0]u1hG"~ کN uL-b͌8h:9bXQ qXCIobkLX?[7 Yb7@wŅz`o0;$4OSX@InZvڤ('ȵ Oo9ﷱ%o;0\b6cyX.Be84KZBEdT./yv[lwBsZt[~^ݺQ"k&uolBF@KyPPe \\&J-rحرvm2NT׷t; ,{f Uknz\Czʍ9f.ܦEEjRXR™ _R!V b-((ݒ.N 5qBZ*DNG]5](=@. L x4r#YS`˟;sCUJ2f1񑴱2jREŸ)Nk|>Z+q!7>r[$H1 *46.stc,w@ q@AD뎵5q;!q.tl :pۏMD(~~[7iAE `qAsiL(Պ-BD)U k(F:e:͓`*=zT+c7+@/NzBo|"e:k_ne~b^wr{es; QΉxZeΨ4Be#AfuƞCo [,dNFRmEU dWح&Mp*|ucuPO4qMjPՈ ;FFD8}~r`ݚO# MHx|~xx&Ir`OU4+HE*=6*vm Ķ"b.9p[wUuI9AEp=cj7N贈W?FVI|ek3mj.Ө̬l) +޻LOu8 m\u7[XkW't5vdʙdɛS+n:hd#h#272 P%[U₩E N`L/kg,X|d%mhˆ* @S2R`%gڟֱ8tۺ߱F,L2F9V\6с,=RVyS\+f ^:.#h>l4xd"C:uTUSn$Sdͻ荂S)rZil}hJl,|L엉:3QB,ĉ rzq(nR^8?'~%a!ؼ} +}d a=ZتVz:.#h>P:qi+5mTQZjzr+X|NNv)I[L¯[ 6jP3]`@??r%J1P q|VYo8딪`}/8!}OLGKI3CmLئKBVr c}ގ%guש4Jjqy)Ms;D$.h=/0o4t}lS{^{=6xޭc!0vImw#$w|VfT#B=F;}`b=N0~i{6!x !! mԱlGV92DS}95պJp+']lY*[ vcąY`--zx@J5eeWdEZK>ޟGxHK4Wd9T|8}ցH';=d7ew ƚJ\gXCւWP/Je.kXJluNV,?xP&93`N0J_%Hc J i^,4Km_KNR-MA.`M 9FcѸ?b4ƺH@*4 <bVzh<@i{rͱc| 5Yfa*wmv2ť e_vi~Ls\",D~#~ ME&U$bUG5ODz{iI>`s 2Wp)(% M>sX?T݊W,YH0S9*C7qAs\`7}3!zDh- vm>9rXlb1SQJʹ[絯(sYxɸK }BX>9 ,@N !2QuF )6Guȹ2H3J`JuqAs\\ѬRj:*'YGHf=+:kR+Iq\F@S8jW v4ZPC@<.2渼!s52.Qx Y8HGM9߸؝ƙqq#:=o[JN.0 Fb1.#|dp7u˙p3Gy"sylcIb$JGG{s!Y :^\2Gab dp[rmXBv:owZ7eO0w vYec# As\!&..0Pa9e#r \_n;00u^_ αdX su(Jug[P&©(!`:؅B\X2SԎLW3\R+$|CX[)ϐh@;q+1+y$_3)01J"$!h%Z:'RqC+'au2V;P"cPӀu̾>+T-&89P̍)vw!וBQ#%$$\A(L[vV+t 1LwC*ݎe!qq{Υ&Qkq7TJY9z<Ś cl&H%ͱ|=:Ce@=ՈnHl2o>9PzS99 C@>C4u\yҎr֦/Sv<݆bA@Zw =_R.)7mISjt7:.a qAѐrlݬlf64\ː+u II˒*\*Q HK71GΔB2:#h ˩Pp>͆҉0𳆖DM+wpӑ\ д25h9\='vtҮ2i -{~^ui%)Y(}6MWB3Mfb)C-vr$D2F Ms)rmND@[xdq(SdPV:%%v$Sd 2;%UXdHr?UaCk<LV"RY Lq#e`0H 1S(2).B}1 h *\L9Ρ EthC (Γ{ȇ$I sIŹ7%lC.&qE-qB@rrA!HӪK8EZ6>5S:%s.6fTr![YGʴ˙jF%UK~Bрx:Q,ԍȅ)g]>"7{HvG ,:C.흉;N—[LtukGg9 }hu3R7]z#e K p3hBT>D_"諹ׅtzJj)SA$N9#/Ʀz覩'8$20RqI#Ӹ&c6;sU!#Sͩ788Vc-}%mй%幙:+<$*JeTNE0Q֑(յ}HMhKRBpWB 9^ a|I}16T4ԡ> H}* ׍8&p|b\zj.͇hJ[{푙2X0@,(b3yF)dCixфnz)Kba ʐ >' #фC>L&#sC_<XRbKu%c@IB%=`B"` (Efsm!P<5y3@f$s KK0fɅ9@Yp\'! `1Wܳ,ce4:܅V LfX&eT~["=ІOnB )`S\kFh+fLe xhpӀdLY^KE4[V9ԸP̱.AL1*}dvN `&tMQCYE.܅yP5%cL3"c03qhWDr05v fmAخ]! uDMԡlfQjb]ǀ{ at#h ~2')U30@b"Ai^LM]a=Cosq3߀s7Uv&`Apq7Dn8e7xopCg5Z[76Nf.$sG I%rbfK )@J(YyP L(@s&T.gYhP$S&lz5ض`;);[DnQS;dA`@]Z5w+m؅ć@/#;7ޓ(Kb(u,F1淘Y 6r@T 8#F1}2$C>̄loV]b%"|7;]~kVk^i@)dnD0K}Wz5Cva^o-| Ck I7S*#%Z:>]mC(!y^js.v^S*V_+٣d|^򍽪1{\7']svM[`:D`ȬAfIƼ^!2_/;oٛUu<>fM*U!_sCNu% pA,^$BPxc31O"_VJU7Se=_xT?cmѷGkk:v 2Lun1_9f}bm˖0kP IC#P%P0oSHsf*lG,KwS䐾(Pa&0|~猩]>>=bT9%}.f>0PD-L}JTFs~|ٵn}r®iO'rhj!*N2ۘfYZ54|,%4vi8Qc XޢAJ'& .DǟN.ߘ4~еhW'6] B o TkPuӗɘ1]vB<>@g st.D{TxP4h{y5!PϽ^ ޶W˓MGOՍt}|nyf %Ha TfgS&[^p閡T]▗jh24!32#n<1M 0D8}?3KW>^OD gz:C͝pCk:%@C{{ DLTTMޤjyTƯmdWGct# cJ<.:桖0uCW.N1$s ?5ױ(U= cd?_מ1]'G=6ԜHb눽5@D ,UmTԭɶFAD_ғ+sU?CJ*n YuiCЌas9)I1 iB9ֺa"{ן}_=[d!Ķ ӣ XՅ@S^=ngI`{(0 D7ԳzK&fC *M 57ɹ̀0yۘb)P,3TkD&.]wI2~,7Hg L6-.]H=$|7\l!UYB1׆@Q_3!,2UK+TO _rˮ9]d]ԥ0=~4O!tHfϱ3͙J9$6#ϟ1\辶 wvmvu-ÛpIQDV~ i9[gXKm3y?~?C|!_PI{zBvz@d6wKY`B, s3yrg,Un`jT󋳽'ddt CovM6/*C`(WU"BUU= n)`~Ԍ2>鹿 >@d,Mhޮĭ'g`ۀ9@:W$O!ź)#3r@oO)8akr qHzihi,5qdwzp?0Uc`3m.O:z 7`LPA*uw !ẃe Lf5K5JjFP\$ %ЅtM kS txښc^vu|cD|EIr$T:OjV|5!pJ;q)RSZh*ֽb.{=K{=CM2`M(;oͷ̥נ cmҔ9fY딏!6z/!<#3%_Ro 0 MϙD%QΜ* `͸|bjMIZOCzB9vr{􈊐GS=6{}g6U}`^l2Y4SB{xg] bu]c2|M 0e*;$1 czyK fTcY{Ěd[rx ֓ RTK!Jz Mz@!Mfw*םĨ )Vr&US3Ⅷg5 ůlۄw6ryHA}} ڵi\eX(.A46iv`%yf8%Zk Tϗƶ7y3(tŒűH:iCdBb`Şcɹ=Vуh(>90'hO 0eaw= KQdARK҉CmT$3 L[v"2` ~/P(Nn/qCFQj<7J!:U2Me辛IUU/S/||:Oa#M_>.'h|Ek|K{c1A3t%c!r By ~JTiCBsmovg=Ej6_z 毸v064\ύI͑q?TYgѮXF{w8.cŵVASS,S7p(O=k\OHu)ͱRo*$L) "3-jůds `qk%5п#PS~(@3od#j%h.//N@dS{מj:iy%͢>1%!)hI= !p Ozz4B}1C 9}0֘CZ{{~2jm1e&eƺjM\LlPt*Ԓ1)[d LB$'t6U7 [lכnD.Bq>N{`9v҉$Ց{ 4i|Hy0 鉡B+O=9@FlC3r!z (cSkcX8,.}Lys_cd;a\Rx(w|2վ-h )bԅH5my9kѮO:| (KpRڥLmJ)$fLc{v{]G̰DXhX8c7? %>T3b`8C3&)Ds~+f:{;o| lFlF,Hv0匢T%Sh%]c݁JphHh)JmssXw뽋T`l-}Np\[zF u80C5㱦G͌c02̘A͌y{l8ήhf0m܆m`v4%B RKU͡ Xy׻.I%88SN7zNR2VsﺃA<ݘA?1?~ӳoy2E^a}tVtfOCNRX,0ϱX,X,Sd4%(A M9 5RcѵF@[Ui6ic2QLPDٞ1Q3``g:cK edlKnnGQ3{-5sGMe۶=$f\k->xxnr,w<2#IzutW[nGsZ#)\n~Ͼ}#3b0x*\ !VQ% x(;[x5?x ϳiA=VzˇicP> 7 ?CTI ÆC I@U]|bq T#K,*{δ9_GެnL9Tl̲]4!i3s>jm+ǭC=sG!Q/aj5#oe@OAq}D[^nf n0͌F}!OaP82`)|Zv g˒61,XfF[#?dXe Եަbd7%TZ׬.\_x?E@Zxٵf 9_jǃ.9NwئN)&g2ٶ-Ⴭſa ,7uݼ0dqi04(λ'"cDJ8 %ΘmA?Dx*<U! Х@/7)=Pq3{,%wlZAw.{e}Ԏ j vSI!]]xſLU1?MG]")SꓞaJn¡5Xj96ΟZ6xa: j>kPݽJBYd!G>@*VTWA$&8Y8cMB3Θƙ@blۋTO>V/.|.ވ8ڱ|hb D@ u\eItz_BiRdr>I(".^W__xzqnk}j]/K#S)KgaL]/%`za:|tmҪ(pRx(C]9"l9%ȦҔbӒ5lG)b0tMG dAǨp 53nU.x8sL38L Pqx5]`Է4K&#>;> S,Qw"8% %j3BrxӞ,`zӇt`e̿~2`iqϴXxuI!R`H P3Io BX'=!I0cͩ`R+Ki۽oS58;e8 2Nb5zvu|c᷉#M&Ko~gu$'3zS@ ̥5\y'?yuKk&_dam :ٰ,%`J<2{dՉ6{mo[ozFDI&<]4! *Wھwnhwn ȁ}B!ҒLQ~"dKi2a&vD9c$~5&\y.`<ʄ%,lXMF IbT-S?; SlJ8y!x f,HVZyR[O,k+ޗ(.);@iw9cμ2闉8fk$ .H>#C$En  QA{0JN9%ݪMHg<\|p<ZxL{ 9d oc!vi9 }p {Gv[ƈtj)K wr8ZvX3cI 36`v:8F ``օ 샰 ]:c@:KoJ6rVQFYo)FDu4x]/Nb` @b$b[쓩~:xuw'I١q1\s*B G$h蜔q97xMm¬&O/@j1Y` 6hWpG^H:P MVIG\Lk-&U4&XvcJM35knX1nqY"]8`۷nN  bƬs/9KKd”րڹܺW$v d CP7_EJB )5?I"&8p:Uooz%RRav BPG%A|vQ )#}k :gXKusy)\) d,.Wpԧc˴.,?ڄ݄S.Skb!)E!\0[;LgrhJE z5m"_"́Mg; nd9r21^OX"$h%kbD 6>x/pxlB6BF[.HeP?`'0)lm,ǎ`CH0^F5yo5>9Th!Rd[1ƛ SDɅOAɹk)H SRYkՕ=3 nB}ޢ==;9޶ѮSJ-eSdºLeZkq:|Ǫ-"[J[0P 3, M_?FE߆ Z [!#KV Dx/. 58Ix K&ֳ ׺1C$|=SMff[0bhI1PfQI787,qR,Q6(`pL\\/P=SU, 22whק'w:grY#.s0eJ2?Z|z鈁Df19ai23Nx~ >/%q /LpJ }b`J)Ӡ5.v9ຩpIjRyS=,4bk?|9YQ؛PVz2sU}*eyBxsI:&\G3O|gl<;=e4HD<0uHLycVS%Ap9_!;|[Z| `E 6@PS ~1Я6*f,PDѫP ]+0LoY$ŮS9f Hws>Z7244M&LNePĄ1Pz'@ L\O `IG T$§uaMS <3~v/X93\6M7SJ+ju͟pO.[\r]uߩw1 ]NTDc84#bRZq\K \JS1c J"33X~-0F7bd8rQy{پ +lr83NvgS= 58"SBBW S*4 56Bb4=DT3BϣR:Sktj H1]4:S?OnN*sq==;=U1unNZNv}^ޮuL 9\n-cc1CZ3'X"-3 4c߷21\d r!M@b!pCfTuI9z~`páEy'T:m 2f yT5#^lpH7< #t!t=˒F,~OמdOl}PG<vu {zt̷iF\2?éSt[7~ks:^( 5r"7fY-!'ƌra}}9]/9~C<x6N1.] {(:mu/wH߀ j"2's缑ίʶ+ #0֩ "?2\%i75Nb|DఆÕk;UNo2x ƫ!z|P"<;bi3]곪qqkXh#(3(C0! 9+ YK7 S/n/3W;@7b)\ቃ\Ku79\L8<׺ 5e$PmΊ?7}qeB%-J4HK8&oj|;cGg'Upw &sBT}Z\5^[ FFYd. UJcJp龀&.CuEZTWx׋_>II,1xu nTf 3'4G6ƏoLrZڡ/ =W+`g#ګeϠcE鴕{ ]89`˅4PIC"LvBmLHَ Mv8$fXf]4"L+ܮugn@RK~ܣ~sfPn45H׬(]ͳMמ~2_CȄ|\- t<21fxp MZgCrjZ|tm1+ IA C&[| -Pne=PW1=3栗hн!`4pS1?(zhj.d&32x -(KY2f cMSEnYҭCR*ߩojo *a;8 {h18Sa2 1<ÔnyhŮo IDATn|͵,nRhY21w:#lE=szٰ ̍ٴ'$T:oC{7 f;%3yo=vu|;@bx\ #=; ͔K}|A[lhAYkMkίf:;zܽrm <%䠖YUNu9-w,}4`ʙ~ZuԙMF4bs ķN<$D &K3t=/ s:kc"gt帏T8/Q5^=Ǥ{>NsƮu7)i]1ռ#FbyII "uikX~Sny.907jZճ6t"g:v ^h){e>l׏ *c9:<FSU/q"2|@@oZ8ԟAXDL颱1!7X֣\f PDh*[uS>xݮkAw &8PD~3\s$ S'K%3vsSoc ~ *͒M1,5 96c)NT{gTC&f~׋ %%Sׯq׹(KOaDХL 3 9Yd^["T th|/n0΂mӱV0p(uK "cwe#a0} QvCdz8=-~6-ȴnA+@q,'H)ɠwǧ[ xݵ濺)mO&Kfga%}sDq?Af2Q)`ؤ6L_RL76-NMB~.I)t!:+*b \y2w4iq8`mz?Z YU͒tX.; HYRN٦:G1b.M̵![IIe(%@%1ġ};ok▿Xgo;Ͼg|L5C*LͶf UΔI!&ɜQ$\󃍠TM)tD*;|N@t 0RUW,Ƈ0oܦ0Ubv;S@T^kf|qh&PXzfwa-~,EX7RG :&xfSu6S3e ́kW/0̤|ilp=%ͥ"3䵽)a C&7ȏDh.p{@U~'r4(bk@b>E]q.N+Q0}̧-?cBq=ǜPy{ ooX1+D\̈́mSޕǑA! _r` # >O i" 0-TEP%\ ȼ۳B l;o隋МF/Ct?HK9c|pe1qۆ95Nk`VM)Z!G;R,}mivҐJ8y4UMC?߼ŕ >j6P 1ΐ6=ʺdp &Bb :0x깙&,N?ah5ܐc`v٬i}HF󪹛gjL RZ_7-srlw:zdq6`]Qr)(arp{P!6s%&f|8}4Xwl@ 2AЋ1j-;yvƶsfv\9&h"dI<"x.p/bHh!-B/@, 9M26'L537LRo;nVv f+!ДIR'υxv]F'_4Ո:!Hϥ!|=!d<k$o |,}6wg$@՘:B7C Dnm1SW)2N2^Hr-'ȅ@IqC+PDZ@zq!^ s;`ۮH@f4e9+fuغui࠵%3Xa؜!/t#>[tJ_C{z23^w`NPB@ϾL L(Y s·\/u꣑h4w RdclF.ҙ:)A6<ԩ(tؤ uQ5{\ 6CT ׮7ye"hI)שOM2-&"]dqw(p̣dTT|t*eR?BC}8|5pD'Ŝ}g#2E |sQW30SO' ˨ 7(GdUbix^Z͜1F('(>Wzglo:cstn3}X.T?2xuE[Ik;_u-,tTu*gh\RX ƱӜlPRn*gܶԒSBĴt=O)n4E率0c@֯q(-dVX28|#rcx݉F1LpfJU{>  w \UJ2PZd2Dk7u32Yv:@Shz1-3TXҔ8RݳTHK&&}NHbb aAI]TVz`ۼ@}U i8㏤l(ᯔ3(*qn]PA,o">gHFtpmfZ+<Ӆ6Yve.ײٰnjOLo谜LpԦ17CgE9sC'P_3lKfP<CU `m1U03ـbH暓p}Bv4o@ @Ip5˼f:)80~7!f¤4c*b늅qcDk,[10NUWܯ5g6x$|!1.X; k&XI mTv>8b۾T5; j"kI<$:N.]r?g_ LB$!Ѥ~2&z:/-@ͪ;\B 5J5gs?q&Ir\ >̬``#(pRboq{w?{-yTK\*`hժD!3-Ed ꯿J=gNJS(aޓ,0]"NRFKTzi _FxUG |z\ !FE3&JT5xl.gֻX2ڤS~oR-8dn-:]CrXd|D)'57&y* #~,h8 6=>3(uzXܞ?D,Xu~(էk,Y-0r`7E?-o=a)^tUÊ_v0^Y&f?g`~my\"zL@A8QH3UdZ-d*#`>3^cD mͳzru&3q)qY {Bݝ*d,1(Ec59s5[ ]zܐ媕H1ˮE2gשiĕ.1:: X&1(Y2KfMR ,RaYiu8ͽ3׬g0FXzPO͵*SsKA׋(&y/Q(!{Ɓ?N(U|jy٬(ap9?0׹dWǗ~\5c;jĦex> ߍӴY2!KBf8| ]mdsiw'fp6z>Pl[3PkeH/W \=3^ {Ͽ@MG<SapWui"OjH3g>=ۧgw(7,%,qHύEhAx% @C3'י[dr 7ZhDDֱz-6*. *65DxY{aTE%LkW=OPBtmRPSI<0k@z ȉ:UeQw._ԺLX "(>GҎ]4s1a&tZHD/mbOJ-x*S󥔏sx&<y;^‛[#-m\BO OjxTc׊甗OH5<%8'‡(=WTCz#݇gl\eoRY}iH]*.Z暔Հګ4NVw\ BmumS=Ve9TV:? Ҧbr]ǛU-Y;SuWx->G yг~3dh:z|r&V6Ty,h[Ti#" F!wMCx/h=DK ~pfFsg#KXBq2b R+`V:YHuڞ>x\h"..cq$bڑufZ)uَ.j=CT #C&sj-R5L j6޳Ip=ЭVfsc!{#>~L?Tf$#MwTyQg58sꞯy>2>oޕRXSvM.^Khjk h*eEl&*YZQv)*\b\kRS{kDՄBE2KOLx5}h*[eo^KL}6sK<l5OXѨ$Z*IśEnn.9>ӑ>3.(LЋ!fƋ~fѤ5"D2UZNȹMσe8L-VvF@QW oE9FBF,h-Wo;ߧ#h!'>y/uK9?^xA+”PuܰȒO)>j+ ikeOE{)sgijzfJ^3S\F)eݼ{Ԭ[sbN\X9O+3.a3Ll JQJ BTi덿1,0W =*rOhz)4Xj2smV7l8{!P,+_WJ( %z4x—*s-Afd$B+N;D=]I.q.JE\)^8?xh3>R#cx>4:ތWGCK"<@5x g4* Q]̖[iĆ}"%srҺp#Ǝ=.Iz~L/xK#d0VkLs:IVR%*5N)iB)ۜH3vHD"BC1Zm5欹9:Č۴Ijꥨ?OqA$|䋧sx;|.h ϩY0 (r2< KSkvԛDC@rq,Q6g3bJ(q{ ӃM.9G} cp'A!?lA"Nm Ԭ5_%aX~~LuI'c>q8Lը%{\QZ |Z XnrbaN%xO⚏ un I%xR*YJk{SJbn}} %]N,%Y9P˸ _o4lKi.])5O,,#ڈ KS˩+a>'g ʆG<|XΛ/k4#qE N ژp]&c1 .|-C'OT.RZY?{auэ,$l GqkӖqf/΁mhcK׏{D-N^!㝟cUp.zMƤú~5D.ޠzrSP^}+e3?TghtGfo0o<BMHs |G)Gw+eZ_Vodͱqu=31 ŝ-pD`<~EZ5訮DCE5[pU lEE\ɔ5%& IDATh #Ci6(̚Y/gJȵ BFVTrFI[pzQ),\#rvy DcGd:E Θ "pjC(' b eUj`N,Z^s8̈0.igEqrKljk"S2s);3p{J0iJ)f/*=1p"I9qZ/w #%{ N)˦\a(.EJMt8v8r+@?P0h1"lGT]7rap+]oYtӣc%cg/cK:ĭdFj7 yPF816CQ s0s4͵320n4_YhU0ww|ii .:S.h+@QCD06'>% ^,wٜs54}39}R"+LUrgǿWe2|@C2E)-~IE⻦F$穮i{lxAe^ /UD,zk]g]RBq b+ ]PD٘"lIod2\.%#$_rf(Ee zWN:r/ j02gåLM Ҡ#Xr)Y ?yRqIqE)}:^Panl6'P9tx}CA=>vS#(F1.sM}R O\7Y5m"uwZ4ΥK"қQ6S1&Ř'uώ?{1uWmb9ewIp,G{bsMP!!4^.cND}_͆X .KteG"MHZ &gY-6"HW2!ma ZU:.pE-5ґ&-F$꠽f&}pYY@FԺ!^`lb2a M^g⧬9u6/30)~Nf ]zl41a5]E>m4NcNj&5b$w u!Ҵ.|OJ\ͩ䥙=n/P(QȲ̉32+͍@B@ΥɀmӖzJ4b nHrveS>g מRsvɔѰ J).Q]_N.1O-03K <$NL s`d P{2@-KR!Leȹ L |gٰKQ*|-YiUV㵚]&~[jVwh\Ԉ+HgFPѸ_,Y\KF1{<>Q3c eQtytTD9OaHfnWF2QUg: aHg3btsBHL@k%Q*탑 e87ǒD%Bb]LJ-N2E$:]s%^Gfnܭh ]ƆfP+ }-iria#xRaDJ(69N? _dX"cum B1αQDk@zjb%M-OW+#ˤlo 3ǝ 9Dو9f@(Yˤی(iזS|!.tIA :.r޻(StKBUʣw(Z$ ||;Fd4Gg^r,YD 8+oYyB/84N~v_D<)Ev4oN2E͔ kEF_`GcgQV;::#+\s,F,uH6m35:#9Fix-{nө%NdD^Dty Cc$uiHՑaqSYإ{ Q =2uȕJ P~8+Et4TzoTQ-L6ޘ51 Rh0w0v+0$'4p&T.E? ׳Co}\O-8ߒǷ4Oӭ1K=0VW^V0qJ9 A=O n\ėhLҝe'p0ǹB>Ǒ#f ԯ˄H1HO:<hdҨ9SB6Y0}p>P5\*!В}SmzxL?#:nSP^ ,k{kqJM\X3Є.qbϑ`2~LU ) ̹!~[m慑P3)P& 'Dm~" UX} X6uQ{Ɲ~^f1$>)wG6D]GS#A/*St ԳOMA$j,cΫ%Kn.D, q1I&"Gl'AD-̃ɳ]K-Srohy.P2_\ܐR#9ePi::Tۥևa<쏼u2P|O*#v~v<8c1MP੯G%z֣+D3[/|L\&cklRKySRKz X>q-m3x #E"C3Jz;}k.fi9N#7"W26Nu55Vת,[Kf3)o..@Rf&Ri`I</L6O7nc0ERҌofƞDwGDf (`/;HWܼe|FKl۬ƅ\\j"ٚp' V;%,$ q _=#G7d4D{MC䩅^\{GڄHG5\Y|1ZG@rZ)~7 y.h $48'O93<*P! }rXUwWYO7Ÿn,$#yRQej/ؤډ% HSQYB9M5M (f&-nG^vp<'Z=q J RON=OQh\m] S\lQ΄SD|n؀MkbvzR`ͅs&rAyf<B[k]!,.3}8~}TyT)إZAK|Z*Z=(6:k@''ka(@̣ږ^4c ;0"] tdaCTBōTn^)=.A)!'ъP8UpKMZmR@׏($:h@MkT# Fi*(0)EĔcɎό #:|c?LY\"HGhZ4q'֔Z:i5"a9iTJw*_ *+yA1X@Z5 7Z˚ɺ $]&OA!\&yy7M`k]?XI`Q9FjEz$er9Dx:h>8%b{_DTf$-;*yAiLOsjVȩMŗ~-1G.s_@(l sA 3F7A |D0ʏdEM |&sD3#ݘ33!NX.u/rIt [$v{fn4u[Y?sCٴ23O`.-|] Capm{+HdD)quj4oq\S(_/0U i$;{e"\>s->SkX'tmDASIQߩRd'$u `Y6}zYHq5nhݍe7,l W~S&n]-!SA553ẍ>SN!%Bz?2%iPpy #[]\#8tSt1mL(3 F(ٗCtԀ  {؄-aڭ>眲* _~d9sS,) .H+C裸Fر?ǔ(9q v  <&Eo^Hjsn f PRϹdDϩ Z#$c]=>nw=ku"m6PP{1e^S ?O%2m֤R,wdYKq"6~pCXd-~}4wi[yfiDxm[~ iD=fFM0p ؋(/7`چRP.aTRy ]&AIS,:KS4 '7}n~Qsv=')Zc8}Ew@ ږS)y9NAt)">#. Nɥr&ڨR~3}TJWU,?o"[.{]E?k6KRk)M KAr=)zb Aq_=dq80^1,'9Iz(= 8RD>'8w@E(7ƊJ=7=~q{lyվ{L<%], (RsFM6.5]ӏ7dX緖&r2Fx/P x`֎IY\FY.j2e6&xv{]u*:u>맏pqs 4c!H,΀~7NCA0)^Se:aQkP.O=^ 5ŠH/Q~[(ZX<]M_<3bx{\^i%Rϟ%vd4 E^ 6aZ^ye<Ƕ@m\,S^AS85=̚teGqWeQNGNQb]$7y?ɇk~SBFnL%\Zmhv"};ڭtGrȄGQ[pm\Xϻ1a.Qx:WjqkSx{#(!*/;x@ 3}Rr+92Qx\ӤZr GYpJRKHV]EXE[~$͕"]*:Ţ(2.[x=t׼?:C k!cPo 4̎YY<4eQYS*gI5mVa54 lIS6bcF-}_D=|i a. _k#4?A:L0A9B5Wr@fFSŨ PeQ0Bߏ}"7q&w|>VY^N?/$FB)zMM~聼gn^0Ew-p - :-j7#p2{vL%E4QHgcsBVm ?_t@G,Y]7 ~ NuC*YYN񩔰6u-m -))9uoA+{书 hi=\/1u9AeFDʙ`h.yRdzms5):@5z |o*8[ G z(t'ʀpu]LKz3Mx؋=s_pF!k垫KkljJSeCEde8t31U~tW۾w?eZ?a _H أJש0u%vnn[Tz|4X%fsD(vvsύxIO`AY`v:d1oNEθѺeXDTClO!Sȏ)gz]93Of!!Bzfj3L$uxb_r&Svr"9JQ*Pl8icـUfjÒ_5eqq 5U[~Ou8;J&=~eIK6=!k#ɮ?k/ Y;9M:4KO }BDeۤG=3(r[<} ^' .Sj׃NL8\8ĸQS]#ߘz ~CrWw6=K ɗΡYZ7x+BakF#gBO$c(gqwTj^˴$ IDAT5.{2#"3AgT'#WΞg%Gԋk %2ҽl'Y[Bۉ_o|}i& _:.nf腚K-ബxw1%C9Q6ڛ}eZMnsNKt@Ŋ/̱ܰVO  @{q=f'D#^E.Cak@{1'yrrfj%H %LjBF+L%H `y">p h'U:Tty1BZ?M}{Gc?"%1 8Zv#-RZ!$()_J=,NT:/۴j Hi4g:>E7؎2o`W=xߋt;KYt'"P24 mau$b~xMMznE)ҘMKmwH>T/bح/Ӈއ]'Ր;7i#G}E]0dq:u4x 8Z.Yq)֖%Pù0YP=Dc9bf3~QќT,[7b2ۑ|S n,%`0DH<4O}8`n"ʈM=BxyM a,ĔѽiA0ҮژXF~TgƏ͉e-f|$1˘l'\?yepTkdU_F:jMKX8䬊??_fգN45$l9C%Ne<'Q)|P-r>׼`ث`]Ȟ RL.J]s#!_i!oC{&ܕϫ1Ǔ! #N9 a[h9iE n&/SS%HVwMn`,!*P-T-f n]isybh&c'(Q6uL} U+u (ݪ^21u+)F=S᯾&]! wzt"Ml>׏] ,CfM ى!..#Gs qJbbJr1ao L+EN9uTin#ʜxm-C @\%6S_aJAv}}q^=Q? xN{I|܂ )S\Mc`C\JEu"Ew  7eґjA"L1`LHRL] kW<'j?=OѬ7REIœ]BhJ{j3\7`|;-)NGA^DS 祝mW&5Kǰ8湈eV8cec@5y&C/L+bLQD {DMǠe݌@\e/ Z^㳫Þ2Hfٮsɥ2 )Svz#d\HxN|h~ʻG^^p5&qAM;*#BxosUD_  v;f8_A7ڌ2q0\d1W>5{o Q{~6cd$'MvѴT*R,N5%6KXg,9$I.u8ʀLn*T4Xzm]C % Ĝ?JDܟ[FX " 3}SsL)5(زǫpX˙x3%0E 3S0>E]O m}?<kۼslh[q&\&_G _C4m25mh+zjV Y3X6zyv м;mR9 $hD+KF3!ޞ*Р}Q8X#.!\>bfaoWJ6 tZҥwhd'Y"Q"!_:V&RP-՘{QK+,7hcϔ($pF\?3T:Ry$[]qbgf\-zMxz%6y 琙'Ti~,r%vG ;|t(-i -NwE8sQL =hS ""89@xD/bQ:)T@x3Aj/~gҊ7LI  U/@u` 㖭 A Ķ{MOzM O|+4#_n?)62;>-& TּfT6|u't-;j9|+KvN^eBSY ff3ygP ěDF 4X P xtvY%d$)B|ci)DE]tDxL}\/}8U)!B.^Dpx;m9Q*/EoL񟵑RRG+_]j3hq(7cwx >RStI\ټ9p rdI"X!6z'hG(@gnLO~h\yq\M5!@3J<"nM{nP6GYA=/XlƌfR.=+p(ǝ#Gpл!s&bnqDSR%‘@-=es@] YǍEߠ5!'hѰaB & j/k[z3'Ԟ]r|Tp2܎k/ 0)^Ӌt>Z4_J,Βˤ VLipHCլFKFQ5WV'}"f)wfܔE8hh3' {|h5MHN '=j<>NsYrߥ'pRYs~ ?fLETL"W s.Y{P1ݕD;h(3L;wH)9[~[n{ h8|s!"P5gBJu]qtqƈ)W "`:[  ^d8D`#I#Cz9Cx<]12b y_*r]aPɿ6 U_j%*xhL/9|5g4`Ԟ};ɰv< )^~@|BftWYFJ=t hP%^liK\oRe675iP ͝gƫW[̇}orL@3 <^d>589d|X{/ "c~64spcqA ~(xvw :m?qM5iL ]DTL>aADHe*.L53K&- ur5Ҿu.}R"}OτA 835V-8 D{pnMV//":~,?`0U~ G".ϢǦ gJĄJkJ`q7 7T*\z.6PA>}Z9ъB{ߝ=Kȍ:B`p6B ̥9~C06GaHFҹyJh?`ŌOtLpMz|[TH /1_h5C9{slY9#U,R >fdZޞ?nCp8I?C{!%\|UH='"%`ZP0xRr¼ #)A wvZ)q ~MߥBRʕ-YLqϹ&njqeݾ&]D ${\fȦU~-R.9sZC~mY[E@Z~Ogp1#%w]# טiw 䄱0ٻY"<;~/IEnںLj6=\w7c*\fXA e}B&0 =<(G_#0bU{)`{VΚ@:7ƋH&vsBPu[r o-8*ix"|WoY+R ԍc,ȽP]j&ZN64-ķ˔8De)ba^Rt"ڣnv;4|a>HEZwS>xsk(,I{nEt|&#f+aYgH BOS:^#j9P߂x{p|ٟmH*0D۰n"ڌRjbqC_OlR8s1 5jpA*)x%L:Z1ZL0TAĈ7[GђXQf}>\pgD[o ʢ5V{̌Ǿ73S9šT򘫋o?\ nQLC^qnA(eģ/|" Azf,=/uYֈ!mBB)B8 Ffn6ZQ:0Ҡq佻.途k+S:xϏwi+aMk`JC 8/ E LC?5W _A< x_C?Bߧ^'7 )ۨ#-L48pp#/+hГY`DK)yQ?'rB'T])vWW_LyCBNz'%V SjaAJ5r|1=\r hu~vxCd #*UP'_wkwm\FCȤBc<@k,9`?wGǣt=FfSL]6}8<Y0 @ ֞#KW.֥ypsi\nxu(J@5W~gr#^tb}Soy^;qKrE|8WnуY.f[&Wjˏ'q`){̽w:z4>ꚻsӏ/|hrN[*Dl'- ut) bQq |G~o2CX ?9e4MLrUr9gጁgA`jp0v2?VTK`^:grXtR3L*9)6$Svo}{1Ns+[X-|̻w)W#)2>p8П~h ٨UNas@HDFC`\D*CҀ+CyIndxF't%J!p7|ܹ/$h79ntfM{Ls~?_m7Xcn@d‚ct¼>`8Q!M~&<, y64\cvX,QTqS:xw| CZSfXx9 +oe 3.Qz[~ a\WH[5$2^D.NK`tm`ڞdy ?x"p:l+v@S݈UH rs߹ņ\9bPpfL%t mT` F:{<c]NW*̩~tVlj?̊ND QCk# r-g]|:#Pq"3~~Ggmj۴H[ݛ \5(HE8-ޚY)3^%g*wj4uja%G%*ADp&NJ1{߻=w% 󨦗 eUKsct>a܅Z'5تosV7Kg*Q dJis@(jVεFKv_g#kg[},}AEpXҩ]y'JnD)ˋ.o!۫6ODN_h K_S)7 ,CldPje]'TF`Pӻpt`z1-" cP8s95 )5&$-p&zyH(2gDnʉFW,O| IDAT 6ɾ2,w7jcČg]FQ=Aߞog8%?hL}>Wf/(6>JZ͉~AHK nF R@[iǕ୓}5T( =q~ w[ײ[G=4K5w]2v{ͿYXv'09!ZL Bḫ_2.q]1Цޑkqlo2 ={<KJQ?Ԭ͇~p-4^VN)佸JE.T8Ks|lTVk\ 2NF#/j:kcjIb`9Xrp0A2,w?GO| "M=4 n+>}G Lj&{N]]PjA)ѹsx4Wՙ׾=nk*JOA)gcOw0HtJd)^s'@1ڋhSr,sɓੋ.7ڂ*7DجUedZKՌ ܅. ܁S3J-2MdXM5D*h'(K0z W5}\O=w"Th58sP=|zW{̇*5DJB'xi̓C^(v<5aP{H N/LXt;rSu}9}_Cw,V* @Ԭ4hrkMa=pSY*QS=ws82ǘߩOb\~\rƛFyN|2RL x|~;|w~@B*nMg){!G Gbj>'Z$w/r0vBy!9z[(ȗ%fȿЬQs!=}N4d[)!H]^DZH17W!׬iev$6TĜUZ*]R_w!?AO}bjN\G3kipSXbDXRA*1?f=S߹I%\rZL*5<7ể& nq rFHǥڭKB4TNm'Rr ,$2#͚5y՝ k nUB+ |x D@;7'5CIRzNL@x=xw`!}>SIH&UQ$q%&6{?8.~sc<}Rs9\F}L%wo2gʫOڍPI;!KBl's J%D/]F2RwMXdnIP59#}%NqJ!M?Usk\DŽ4CбkJJQeMi?ugƏǛ#cUk+K*Ң @/dbn0_^)"]m=&ۭH!C}W7 C k9HF(9܈ m1΅3ڱ8􇭿#tnhsEڬ !Uo@gwM ݀Us4g?ziι[7 tSs-.pXmx8Z> F!a9 aV8w}rsc0p^3)xxƓVl勵tJ"%E0۳-QitMGl%s8!}Z^[%UX+͔Rnq2iѪFnz(TɬX}": <]L.{KWj.<p総cuuԴ-9Zjw]<aA49ϑrZJVR #osFn:P{v`oS#pDz)'X!.Fߋ"{E KT:Ɩ1ґW 9GҢ \e8gbeIoU{ g9^Dd%}m -Gd$6H,;F?$1@%0 HHr1bYDf[ %["3gٗU;ܭ/zuIMx_?7*S U!#ٱݮm14D{+s`. )ܒ =YZz}i1cCO<f~>oõ HHmҳ<ވpz#d&YފJN ql)g@˲'D2ɟ0\F-A)fFrEFj#tN+u*%(Y6keP56;Գ]ʣzR ԝ,%ɢR1Y1ԍ 6B"f,5h^(w_Po ׯp\r8n8vB,*K tQqa}l qkrA$ShRtHDgK /57&taq<)Pu8=d7,l!6zz}1 w@,j{s'ʸc5~tPjI)z^; jr~lc? 堳N})"1i2*gmp#=bs] :4'M8xr[s4{判cH\48`\o߬^ d 3l2#M:aRI :O$RJ鸏J0;CwvcX>,^M c8JۜuP'BXJ )*~.A잺*6]M}}\ݟ0 Nj £9Kg.cVs^qQC@Eu˴S}m#𽤳(duRZc]1Vdh7 0MSl ~춁~llmh #7 VAp\}%М  "s9 4KuP[e"7=Ra9}Fr.'_#ǣ7\yh =@ODͮZ"gz|1 ZZ K>p_!XFtr %Iz{ٿo܈y" Q1'< /KʎtϺ)Q t{v)3$TwŶ4H /LP 70kn&$}g8tppiR:KmSGR1#s R{Pck'i@4SBLb*3j̝! m{nW+gldٜL'Dz0d>`wK0ˊOt>@bEN 1"n{ۊ3PoъPۊ$PaWL0R&ْ ] t pL3I"h{{ \$V dz-Q/T$r@"ԯI$xU1+ePv%ws8nC4 s0qz 2A}f~lg]ejѴV)3٭8@4iAJ`okP˧($=hfNI"25qmq0g`N)*AҷFs#KD<錟iR2B|ٵ8gҸCId -$3uB)T e_vzΞz3?%j3F 4I UKT}`wN H)؛:1}LWUgý>وd{7BtBC mrDukh[;%! 5^ʙBF3 rs`uJZ+cs_\"/1>$bf YܭP53D>`xSd SA`3{`.3ݍ=G}`)M:ƴte?+qI1I,Oy`Eb;rh-C5bV EZ"ykhTñ-n zLlð:vg+Z;SOe ]8s ^ߐڳ&0;w% d;lW-4`b@ԂxZ8cIhdV;74zL9{yXOdrg5aVx^/pl柈u.O3EȄ)fV$}9vf3sc~8nwpC{,V˘Ta,eemO3=!0)s} <1@2[hpk0|`b6pV8n ].-UM1th&+Y e︯|(^G.c>ӊ|-n倴 .Qc7hN,`Az.0PxH]vb[roVfe?/XVU1fZcF!b9Ĵ99w#vn!UDu S:E 3jX݁E3b~!QGͦa P IDATaelyb@ B(P}71Ԕ˿,1aնǎF>9Vob=ثU! $9jsuh^SԀ,TN _x/-&-J3kVԷpt&q v@Hm i^zKNV㏥gkmߛk:WB_ 쿔aGvN1əw*aa/)+[]ʛoT(*a9!T_0\vsps5h>м[@޵ 1C *@pdoB}{e!VR 6'RF EmIEb}w̉PjZ]3%beC& U-'I`ND,{*r;,>${oľb{8v2b'>˳ w% 0I.&p <%#0"Yq9;HpZHdHs{E֜>'4g|])IPə]s3^.9)u,[EE9JW+J|v}+n~ =7}vesCؒe>[H 4X^ǰģS_u "htDr6fIhoH4B1HpgpDKln7zȻsM$ b,m#Ʋ8؈c)~][Z%K :|Om!o-m9(HL1i)bb2_n㤎S3Um"};5&ƴFJG*ջZ%R saZa_JH@ڦ,4[<03u]QFꔞيE!Âeû{z黅:qxlEpWR}A3{QD/*J1YL1Y@pJĉ؋Wwdv6gKJD@R s n)nqB":gF&ydHSV`h=ܨt܊>dsaU=!7#5p-^&. r?_0^%&3ᅲ ֍`H WaikP~|c#C!Y#@bYNH2^.+46{@hK6k7",o9°Sn 璊 4H9mBoɹ,.6H`B='r$v 5VWE&I$V/P}c7PbNk.r>4NIV2Ia n\78xi[ M7XꬴJi>ELs{f̩RZX3H>Awv)ucͤC'H 1+:.beR.<]ƀ.tsCu('*aaL] RR_`yp&3ӺL4K7xg,lOuѤS\d8@p\f{ Z< R >*uŀ6Qp`&qCm2b&ƼCD6pN8ppI_6 v1pgFh>c '|@35ݎ@42q#k9O (AFlϏ`hꝑB@[!mUf :urNQ%rL# χLS%T!D*=JvLq @[wBKFz R{F keZbz+Kx8. #Mnh>% gTкƜhV4!nh_ `Ѵ8ichYi+H. q{S2Eƌ6b N9W('l<:%l(]^9o 41 RR@zLia?ХP5D(eۀV&èv:Ss9Uif"!Dx9U"9> Irw!ߊyk4_cN_ ]3NY @ I"ds71(DLj/3e|]x8j hdL Jkk:!90,SfEX&0Tx6u,C+mSb&&9FIHv)*dDJ^8d׊tJ i-W(&f/ Yi 9Jc%jچ Mzi#´ ä1320)3/ Z*<1>},bB(CZglN.Y&ثmmcz g)QLZώ?a Cж" y˕n9+ݩn4_0s̅`CX,EM~U匚Vl[O ٩!seXX(. c9[u!vnhӑdO3 s|nuy 4V+ӇTsm"'^1rir] k}bi@VL ->[ߋukF:[OSSG10NuJ}r.O%#R~x e^D=%ppPw%nmۥ<eD8'>ً0~n/.]-OhhH]ԺNͧ`bB):~auk,nY.ta4l{-@v#.Dt!8QİZUэ<=ʦsN9-=L~9^biNmxJ\4?/Jip ^U҃ۋ* CNDRñ<&[N{F[ql|+É~VdVVhܳ3 3| @{͛l㔌7J|1'МA8kD.TDx1Lf8หHz% ZW {u@k[bs 閹"w"u1 gi s dz!^wZԙ= eeJnXa atbZ&мy4">cu6 ^{Z\BJ~vLahPEHoB65ݚLXo?v p)fq0S>VEѕǤ?ðBB .bX/N\2p\ 86-B]\kl4kpVܺz@Wwd te'.swq%I'nKA0XTlZ R~RޓR>K;$%Op"<%`1o z"xr C}|1"ͣWraLڜm:|!fa7Szemj> Bwn+ } *&{0'X٦/ is}BG_\ }q~u]ZG @Y?kjHZgUX,eƚD-3۽cSNUL R;Kw%۷&-Y F[`:eȾItH3(ɡ=)ĦkN~gGf\d + $*q:3v*/Ab nK$uZ039/I:3UgYE G,k#Zv-Vk J[&>mv;^&%|6{ˎ{mg!WJlNabh>uZ2+T7Kzh =+o6bvy!04LlkJ?O9sF?Ʉ ԍ3 ()555ZH΅86>3 BVXP|Kn-\ꩵTrȷNO,k*M~l3]^z{Z-*f24*p:؈P ҉ .)''0L^l1tZ C=i° |}]5F?ágCÁO}as|oˏpCh)G[6d&nNpX>F4-Xwb?kTncxo!q[(P vAT֓= 2[04KE?Wه~6Lڹ8.rrϲEn^|.fDh.Fu[=S-E983:Vf/:J\۩x>3%=)睐gh;+ ˋ8F-+ɒ'-qY8hd)OBs+x ;f (|beʛ ,9^V =xs#n^#] ,w4. D&|Yl ^Nv @#Y-D| ,`s^ph]k!=ťI/#p\ On#';g8$1/Z*9Dw:O>[r}Z0Q\* 'F:t(8f6-h>zufHO:61 eYщ`T$iV勷׊%d}i莍m; Kqf3#;á=߅5-l5]U:árߞ~IBLY!AoCrmėvcsZ&|sL=gyИ9S ۫Pq#mDx/e)I0P{)pHt",b0Za>^2ZY,qg+ [S%# ?İw[2FTei%j9"]T!۾i@>S'اt+ r܆l7LExI=6їȲ +A >~EX+*fgk0F*V~._dߗ}1Ծk $FӈlO 4_8&9,d 2C3ѥ&pEu7[ "e7X3LFR!~'cv*xJ|Z^vQ/vՊ LqYĂ3@JY Ę%Sgz 9fi =(%uJ %*4_ ˢ|bhrgt2)A̹_O#ZV-E5o%~?4z8f@RmPZn7B CP( KF8HV"{DI NN"\܃)mБ@zC۠.DoŶN죗8d TR9.;u|etbo1Cm@ 4erDA ėJ2"/X.٩tn]ȝ~#X׃^xavw`ZR)F[ˑl۔oTknq<6NMa3ds(_JK9xJT g R!X9)`0ILH5EH{)W m8c:ro1;vnQΤ4 $'9-}5L]L(M6Y/E|"L*=+4CoQu'ION 孄) @K'#2*Α,V i:[ cSzb0O4 |,f4KGA4$9Sʼ{9]2[/R2OE;=HiYNCxVR%N!L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴d.1l1y8ŠyʹL9-/X] $qS\ BϕHaJ65 IDAT-O!sʳ@*d c1O8\oZ&Мg<ܦuD<8K9Rp CPs, B'М$|oTJz$ . i, bY/cf{N9-5%| gB>Crl.9rbsUbO'&9cxo) b,.sdc @'МGڛj SB(XMp-[SZާ\Vq 4eRd83Sn) 8^;&^9M13JJq$LBcJw 8 UEd1Sz|@&q'МT ^ u(WXSȐ28% 5'@:޹r0\X, SɐQ\9r3n(SYiy K5 w^Å=ƅi2$phS>F|c;}1k l/]5ϭi3$S )(/ ?njsm%asq9.\p|s7X?W4-i'Zf$ q502gg6((CK֯3mWax_ܐJ# Sủi>W3e3̹1DHL (-/ uLdXXzRt*R'93},V16R s폱n˒cVTaF Kol;؏i@8~!0Ip&.J0mZn F?cj9 {9SQi@c9v%z􎗂ϒ,M`n);`bk6 ǂW5!tmI>1˕BM\ CMAmZH)0C9) zKrA9rrLH>O8rl8m75 AN@$|/.I8gGJB$.a9]L؏U8.X:4cM4uX.R.a{)i ,)ڹ:fq9qSJYruCup[H쓹 sl djR=D/A3vSd8d0>4ĴDuH#q3Q,?tP=l<4>Nt"* eq 7UDJZ&̂XX:k|@XuZ1Cl1vbc )n@|Reܨ491H 3j0^t,P.EA4`#(SG%ph GPiEr"{/3T]~n9?Mj8BԼ1A XC,@C"Yf !J,\/230ϑsv#z- >l&L{PcnR6g@N*1_`(mq68֖M&t>3%k^Jc#Q]ܬEsAol;%!_W|f3(VDN_lɳ tŘRg\:"@j߁%;ڇJJ*^(^0kn1&sTv΢C橞{h@~CY2+ӡ"KbĐ+aB0K/`^ KʇbsJk(B&s@]`8#9J~Bj:d*+3 ?sgBjm,0 4_I#+ͨt!03`(ɜByJ6(-Izl0%R .Kf Qi" ;P)3;c˖s*ľ d?3RI/d]6K'Lc2)th[.ρA\.1I1"98)KJb5.q#9˱\soI`dcL-x*J()@ 鑱/}v+]ۊm!V16|MR!\O>/\Nʱ3Xb,T/ S&9G!9>&$<65p\N\0A|j}qzIf[F@yO9 bs cm\}\W, GfL4!A>d%f?  (_k> ǒKx'%Z~D)s |ucuRoÒbc3{h\HE&.)-%_c!7֥ʀ !"2%ةdr:. N)RfX,iI]ePrArs%zcγ2+R4)e Oj&"l5lTz^޻n5|~ zQ5fD4hv3"43Odܙk]zVe9.PӘ9;T70n`\|Rtͧ5+IXin<.2֭`VH;a ""o5%s}uU`}n,L"S`}0g&b﻾mfm8:3% 4CJ&Li%)xlRdQΩ'|{+Y7ի|P(+/ *a) H "NiE3TdN^jɠ/p~9o߀fٳGA ߙAp%@=27@}m]ݲ뜒g;f*mY؞ ։RXד x 4b21ɛ`W%@Z #!6)D̫i`wKWafu׵,?aV :g9Dfc>$SL~l]q߶;X09TYĕ訹NR?7p!y|)^wH[HgsߨgYܛ5w^TU_~Ͷ7fY눝{j" Tg0Ul3~\/ATא\Utܔ*͡|f|=Nrf*MQ668,f)b$ SLꌹZ9*N4?%So׳{ܫ? v_w%f{[dj{\JDGd0}2?~@r>n],eCPR(3I%7&m7zi͏wt͘]?B)4r{15Rn{h0zfq{_$cv}nyv](Q,1k2aߤ%"Eߴ}ftc2V pLth|9& 1C.q;MNLhDiuߘ~'~ \nnD{G~dZ%8(czÓbCbokm }JbQߨ~'-+rtG|J{HK糿9ƶD,e X}Q=TO4K"նۢݬ^|wd5`,d,NKl buʘ;%yM1fՋcG:]76lM,B|lx Es=YQӼ%clC!&m|+cr^I;7>VsrOs jg{t%ڋFaxL  ۋ$O&yJk,uRGf4r"YKƘ+Zv{0Ck$X}X L 'ova"/ 5LB85x!97% 1~OG pC10$~W?'jm}\n]ns8=R&2 g ǥ)oK'}^GkrO3&LGIa|\9w[ks,p^l|o)er<Įq3* u&nH.I:5}lfDƴ>aLAbTRqno( lߢ];`.&1Xc i`˒Kv["5pK3PH-DLsu]o9J%rv>uBI̴I SYu3lw/GJݲ6.VqW51DO`tʒ:ȑ gQh 5`^'j~ѿLmf8kmWr=JԉNP dZ KIkW]B!Xg:|96@UfqרjJ7u1w8S8\a=9|\Buz€Y:q;{9P>\z&UzY{%SY{ru.WweD"X;&IEK缇u+^@K+0F(+#Jec'wN_{ǫ_&/EDf8gѷ[џn"\ˣ,!r6 @s6Ow R2̔GBa5ؤs}?]ۈj=u1z mbyrWMUlw_ag9x >-c̒xir:e̻2 K/AUSwfT5;;EY|{p<.σl6G]fuK(%@"i/701#`s̘1P3گGWr2a c`͌-`"qB}]3)=616jM=">JC亇$:s Cf'=71F@<ަ0܏~_*j^zu3 1 e߮ѝ߇ܭIۣd!x]p_/,5 >QAQe&' ;aƀ ]_a jf {u:lcpC ;>1ރÇ&tO-7ĺR{28Bzӗ>O:dB0.iwI:Hc')Ly.K2%I$3˰Tw>yzL5' fv}n}ϐ?fJ` =PsX [α o SI^;h;T _\_O IDAT# \\@c5)c貞S{C->ӻڟg"m-^:t~M4'0K? t*|?qf1$#]r ^ۯz|bDݾ>#JCS$NNNX,@*g(ˈE/X9g-f-wŎU$ةC$h($ sm:(zf2DS; `؀ 0JOɸ.3U mހd 7ضǣC:[%y1r8X7y*A3USj<\I$LD/x卿nLE k j/nуݳM ʾryaJ30n1voŞ#- Yh>S,ױ?Rهb 3:ww܂'Axd"`C@+mfj/it n:Gadח2sM!)~if>ՠ2XjC4(;G$HPݻQTw~ӳ{1O10'0{v07/CȃM dXÇ|!֢:8Px:|}B/ڀJW`ڗ/ 4`6I$>&e F/1Yb!. fS+[XdbcP֘€'dNkW߹w+LAdm $Kgo32T2&H`* !M#I멪n}G~uo\v}ض[t˳}$K]j-4,zZoZtXF-WGNS f4H9hi4U wp`UC 8l#f+1mƶ8NĮgT'wۮ*''"̐f*DO 3̅!Pc\>ȐH0fx]Zdś_zu~?F 1;t%l1·ґ(>̐N&5X9~x[WCꂼ*@Yf styt% "`C Q>a5`uA'"Tr(BC`GgL=U/~d$k.771Yz@SA|yOoyih_ʔl2rpy_z#?%0]{ CCA84eV\fKE0,XX,~tc)W`fu* YoH\(M Tx|&!8%I;cx/Tf,&Uxn߅dIPt}fB /;v]F+$3 vi$kQfjhYIV;u@MQhifw[o'a T(.6g- |Drtu).b)KW-n{yFtҝ|F-.j1xV$K()-K監0bZp9:}GmNn-f.["xˈ\.ۋ[: ANa,y,#=^.=Pz4_xw+!R`H f| BX'L>p}:x /ZA[Nߔku ޤ pRH2~=@#fi ,kW]FeA&/a)m2eg3ABm2<òb9K/7SCD}v]~u^ruEFQ.Lh#Y{)q_ʐYjKfϘhjD8uob,y&t2$R\Erپ%sB! x > nj]/53P{.Kfq}_GXߌ%z8eۨSQdC_p ϩ ˝@SHM 3wh 颃uLOED3Y~,ss : O(S.{=`\҅],%du[t>+5!QRK39󃉞 /Jzzޅa [1|ƫcd(ABIg_ո>LvDH7vB#`t>p [ 0ކnmR% L 6O3|+!:w)3c?4j'}W+}FY(;[TUYu#zfq-))kr §}b#3r 0c0;gb쵺ꢚyfXս,6Kvn8)Qr" z"Ysq?a<KG0&0q@Դ!4 V/`ld,>2s0gu]pP^' ÌsOX«0G@h+TdH/g$_/X* B'_p-;3Uxsj4b-W@/'i;MW&r^F9DP=8mm7f ׭eazbEK88 Ea3G64f[%6n1mD؝ZOx2`Ɨqe,Kۢ__?me~rcJ?.1C̒Xw׶ojGAzR%fX$dsv+%X|%[cT>ڂqn۰؇ 5(CA?o6M>gNstH& `D3&ήU?~;##ZLr`k_LAiT^0Kҹ,8" T9$xBw:$t*<֧̜̿NWK,VvJH=1e,^ls6 XL9[|d*}< s7a[O@oo 1IM 9{/'|F߃7mSUwx} !jvju#v#<|w+Ÿ%khR)8@[U'sjg3pU9r^K+OH<A;i\%n $k` m*c[0tP~3Z,_l.IX?; s"ڜ@ (wq@ٔTdnYʶKj]<%p_,-|yJ$ IWbd,д\riø]Y9DZ;[/E;J "kj2%zO8;GrZY`ƅΩ8Ѽj3uO1faA.DXܡ-_#"w'Dwʺ-jS4K6t;ë<vQPި"¹i5^HQhY; Ym5FxmO獻tkut_2C1+x>?} lO\f e궞I;}dJ/Ɨ[\ ;8?K,:{DWf H(vo Nx9EncM}7O\Y, BQ)F& EP~y.ԦJZ$ӓ䌰;Io`Q=_s?pF Xt?۞<N!5O3y`ji,Xl6pyl(:wLh'(0,'w/mb&35)fFgYih@`KcӸ_'eWpǚ  ׼8~sP̥u0BǕs.-A }Jf@Ǖɒ'p?:p\Lu1eJ?V{,+IMֶŗZ"ٺ% B a[ԕ !@UZif0fmMc8f\_n!NN.SREDFk~a,G9z͵o*Ike@䐯F`CO~WqR~fj2w>fu6S/ᮐݟ=?o3L]J.Szsҋ>' zG%8Im2S /lp5 o.ʬRʯ)hRQ2DO;E5VFPјO58\!gh+Rz^qO9>h l8#dqϾ5CY37T$T! wt~w,BHBhўw\feڊy^E@)sxgחoF/ZdKC$rw5x# HMDRtYGYRK=%/xGqeHSLh2Ic:g{ORJSԍ4}E3:~R2"UnfJ|-50 4KuՒYgEʩ~WD~Ea3:F(sH͇?i䠴=K/xT[dNT*.Pk} ~@ҥH&3-pp&jSEua5abqDd`Qe&8yC p~-'A/J&R\:_fαy[z PSH )ڵhuyytS`v*yu +GoE2eLѺC9FcJt Q Sm} bTC _}(IBֈ05vXYr)J.;w'7*k4nQ3sc WI췩= ̱Uv REtae& O|r{/Fsp|SvvNen ;#mZQJL`"|vsl_|f+,DG;đz[kq5\ì6)@k?%\F6m+bN8q,AI96,!Y}9GZRK:5){):ՋΞtt3PעKn(;N7cGX֝,ȍn0`>C8{ޜZ+LŞsHӇZy,- !ζy n+flkF|?ZM^ɖLI{RKFf]-j["-܂J27vVs$z9ndpŦ3{[-3m3@Jx#ԖFM^X^?v7Q7b2eȇ|RemrH4a0ug -OQ9z!Oraԇ!6_>'U-x,Vބ?% r;^ȱ>#60KaEߤ^!铕km{|7_v嚥V.A2g%Bf͵SCdA&4FIXȦߧ>~ܗ!ޒ#m7`-xCkJIu\Ǒ[g7* w_3+xQf-#`uy$X_ PC"1Zeljg٥eUr -qS -@a=>_ RczK4h6yHnƬ$rv$I(Ф^Z//U`+sT@.,EcJ=0m^%D;n/M2T*569¿wCg8?0 2TUCj@3'3qJN2{3AV;5?G6`1fVDmo@2tPO[.M:Ewz|@D2O#7YbB@[lNҒrr$|4ڔWoE[KLIoKim^;sf%0>"ϨŃAH,Ew泏יq8N0HS2$#lKrYV!?_] nC(Y.A#I}-\.#o˄dv V7^^0Tx"Z1ݯ^rK|5Bω>Ci FyQh kjp9ETJ-s/ע <27 r,)j IDAT;t%C?[]/x%n~5xKiي_I`K>N˻C?c~o kqVgG5ƭI(8f0[2-M_c52v-Ga(c݆]on,xmSD?PZ@wx*_QVf?t/KŃ0xة4=7:ōnQ ,d8&Qv m"hiSK CE.0Xnrz@3t¦/3"erR.SFPJMr ϻ.zś{w wNn6[\My6tn=g(ۜϒ\.*~,tpb0q |-b7w{}ݦ^)s0;_ir-9%[ ZrCaC}JlѺ9y-~QX!>tQfA" 9=5%F.3#+iJcw|@`]; `aZc#r)wq2K!n6~iZytJm.Z`I4Lнck<1gtDΆ\Xsr"P֍Pv@goͶv{cNaeb5(}Rs Һ8\mXNtoe3M_z"fE}]{sYzacui>Mb! v8i@ܛPx)SC,lPخ@/TȥBw+";5#^DlzԵ7(SDF[vG3p-BH5"P:\x))s DӴ\!6c{nKD5ߢG[]75G9ܹ#!j3zk{0[lbXtN5Iu›n"h^ 22{k>˜{<B^Mu MvDܝ0j/柏,. }oB~'FJraƫm Nٍ+ ~-~Ⴜd2^2[?96zcƴDԴbvcE @RzO/rD|sncZ+]CLNarufǐ+l ɰ8K])tdGhq4KfH(g=a߬5L)d{ɨLp^mnTi,\45uv?+2%[JܠRslQE ; vآ-d;vv%yV$ߧ_Ə0#Wߡ IJN/ɕ# u4Cȕ$Z0#bިߩcq4NgDyv%FcYH4-L5dfz\caWx@vScpB֎ͨ*s}*wi Ḑ>vDxY!s.no-.t2ҬѪዥRb[)=򌿵)iڻ 1LXa*1p5~k\wUm.(NGN qq[(|Ul /gDw9ckR3vPuk,KTAZiGYXhd[sY9&=!!:,k(*80[ûYܟւ9;f &nw&O1KƝQ*s$w {:+ :)X <=M~777^˓>E~493 A>X id3t=;1Hw#ށdžRJ ,&NpɡYF}2G)8M,6mp4Xj4hn[z2<+?eOI̽Op&m%R++/ kzOŔӀ*nܨx0RmEwQJ)w|[;SW" Spu8ܢi/e_} ފbG這vUrІNjN%O.>借pQKkNS=I'ថLx`g;LxkBkxmMsϛc(#QߕHpGE3k2?Ĵ e\Xx`F՛ ee[ 9uR ҹ^;vM,#sM-݈ҘfkJṰIfơA'yxSWfh,@y, K ' vfB$1/o偳5X $k%Qj_}D\MJc "D E; /}Y^ kB)^uY9$F! kpJ׵0~hrBӄ0;j6s@%"M(ԵsЩ,0j+n# 5H[E[ӘwF4zfӛ!ɔf,t1D$:3 ]$FV /SUOJS9\C"</0&58a1 s|۲a7k1o2=Z&S>S;ˍ:iJ/J8I-w9eAΌEr8!BsMB'}§< :UOQv{ke kz(=x\g7Su!QVSec!rF o [<)Ug9ƗIȨNqNz2_c#lťk,X%$RZ `s2*I}'8Ek.tցR~D3۾+8䰔j(*3eN1Ee/7 @S1 l蕫+"9jF}pi5ɨ`I똁 MG0w Ljt Vr2anpd#jEL)HQgK.3+ yQLhփ>"9f+EjӢh :PE2rѶ|S˾|>89fԵtFj@>6qv>eRc&5 ev~j9ܤ΃ t% .̆07fW͚=} xg^n&eJ4rw7by2'lQ$#IT|0Ȉ(i9vf-MωGpIJ:/8ccM(+ xɌɀ}Y:4T WA)O9sFqZⲫ܂aG5rQdm1:GiS:#.=a'R0m|e̔دݔpvM&5Xi<2 `aygLxEF oM東S8%2XGXak.ڇԜd+T:`IwҔ/AyF @=5ChZ(Is YD<2': 1>l{;K.qu5{mDZ /1c+3)Q 6ČpXVs=Vlb4 NSt 9Fé\Zj UXBv6> '@8rɡVbp~Y~0I ,^ ީ!x"QL*C:0O4>&V "1pBCdAIOc`y^KD /;TX2da!!u"6>g39Qj.2}Dܰ8qna)Gy'#-;%0F=r4MP(e4R9L_kUv2)H -#@fy\<'A 8^OY _[QH)8%33|fԕ%ɉ8RӤdJI1 Y/HoЮ"߽!K`>ksTP[Ov g( c>Y&,@~5M;L+jz]:qV,mVI{xF 4$x;(5;k\N[knc&z"f {|z -}@I 1#|y-49ŀh"n:.G2㮸t#L߷.3e23Zt&,dgda.\Yk=@ =l2L@-l{jJ.)<朔h?猲EΤqDǗɹXIdpo.#:i3s\]p6"GJ[]8#mȆ mİ5y.*[$ 'XƃTR/9i5M m=@t%2VnW E{}t tFXZah#1s&S^. io{еX B5Zp]{Da{kl̋r"vvAԔ?͕8;B' J LQe!ILwfc~mJ&OnLpm_fƖw-5 nH<3o-੸vLn${#c: hhsekz6"Z9+<ǾN[zBZkipʗC{Ⱦo7H7*K"oڴq0t\ W@YE71N1V9cQ`bT΍33O.$e\q6ʵ<7y0HN~tl$eSC-+}Z̕o[Ŧ@`wr5i`?e&ݶT\$ ܪǴnԌҴl`DX0s3d, {5+;"󜾇;"ӴTu)px"-|#lq!.6qٙ( r[ IDAT۳Jc)]'gDh.PxR?pr3zlQRj AH .Q9N245chRsuf*S^a 8#8mc3= l,LӔ&Q%"5c, /OR!: DQcf ,IO#q:N5%Vsckk^GDa}ڔ@yE)Yc. Qt& ǹlk PB@w [arZNF/OyʜT\5;:)>X]®CbseI-..1Dʱ}=b|Z%ŸR[~ /3+||!bx0! dFvԦdz旗x9ޫs6#"!|G|t΄m<7!¶_$_$ تfh+($sFP{fa)] ]P$){cf۵x`nX3HD@إ7HHveΘ,!&/Ѫ8rpi&x͢}J; |9b1ɀݛl۴;tȹj92: yM[)τx=F!3*N҆ɔ3Ӭ6u]4kez,23IEjȗoLΠh0A~;)aspwN/$>82h$Z3KH:Ҍ4;#W]y APZ (`/:H+j|j9mJ/k" /k%¢A€LfΆz =ML̥XH@'z`< XQgSka !gBsctIo93RAJiަ5o]eznq)@'p6Ψfil\%W<@VFW A"2Ϥ$ J*"t%q[vRNjU s{sXlG `J)''t^ ne5'rEL(FZE"BR4R2^',qx6g81FJ.fj+Ԅ +%Ma`XOװ;4}X!-Z}[cum1hJ#heR'}c*VJA."G ׇM+$S)OŬQ"prkr|) Y)A52Uk R TC) 9 8'{ ק1ّ"4zH-VٮcPnBxO1͍GB U8+rnbd\tD|?lwa" M@ {MSϖ;f#r rV O$@:?Y-^g RF| ZTHMs!#_eREN j`<o` :-=DkH32k5+5Y@s|)%ᔀMca<̪O%ͯ+DԦ9_u QٮpOUVTsfxڿńE-9Y5&“r>sN98@Hˏ G% Q$ϩuWqi*֪ʑ^@>C|ܞ= 3,m+VhصSS ܝKQ9Ϣ!oid1ӻpt!w_o 6K^EߺgC;*[B9<|er9j&\3y4QyЕj2saaЙW"%IivFdȜ*^FkE&M c@)ure*̏cEbM@]KљlENnH#ik(g,@݃i&sN;p{7M_]0)1~AS FD9PPK~-337 -str:mN}f$E }zFsHb7(e5=d28}5Ճ ݩ 4!R'`j!yӒ:S^=h"YILQ|Blo:(T,tp>$ZKzhFkbi 8gDyKv k< ^&i3~4-uC EIǭ IJ7pyeф`ƺ\mR=\?$~n]Fh_uqxsG'A" 738 o@l Y&|@S=t2TNfEVѾ8oAM*\:ǚt+j4P̄%%'2W`{U)Mt\5?3R`S14]m>ӢqV'6(e0# ]Lk4N"`:R~,0 'M:55 8["͏{AŔq^&vXiEm!17h󋶿?->psʐ5Z9[[ǩE½CnAp5:pD#RAxMyRZ`j.RSoaR^=kz̭PCF>Pr~]?9·$6ˎE6=x!=E!MP 4^CSŕp+ 3GCzXcxڍhy|Kp1G9JZ~Uf%#0C[]kQr-ϰSb柷InVzk064WVƩ?J Ej ]ٓp5["6"M9TUpjpȱ=|ޢWeՌXqsex3_'c<4Rwp_$R9͐9s5GXv0h0vsps'#sW̧b}8K`EװRjZXQwDi4C/}\_$D uRuUͳݞjSb:ٷAdó3M5NS+17hb1h8UpL\e8<`?RsRV`Fv[e8dFs5WD8JqJM6A9vKq=2;ϬÝr+)jKM.Cך5Xbd#lsBs:ZK *5CZLɓO)cޜ=OG~!1-V[*7i]< Sr&tijSͦ҈9dԗ*]5kgY Q:rwA s,FQm>8aa8W$V`NA5K[: Z06qQDmTPZNFAQ"}|^}~Ξ='ToYnZ6QL6*'‡Eœ'W[XzQ[pmEЖ`9iʘ9i9`'op$9p T؉̞OJ[ znfj^j۶~hRܞ"s=g\[%%is hsfF۶ޛB-fہzgl 78)pԦs|V4q[kC"p#"[K!^?wΡ}ؐpkE5ɜH+)^d𚖁f'{Jv~-M=˾=Mw" (MSt!8_Vţ$86Bog)?\ր_0z:Rt4gz3\O6ϜS‏54XsDu}? [<]e2}L&65E:-x2e%bLJΕJ5&Uh+jBQHIPXB V mӰ>y'1q$6 ^YR!iJik-y]NT΀D&6 |qic3&Eӌ6.uSr׎Mkp߾N/b$e=BVz{]@=޷霫?)Jÿam/E&L7m$g sZ>v3Ѫ! BQq(@~Ѓp18xR5DcK%^n398 <'?b%0vx&9br̸o2 k}z礩5s@j[LOjN%~hDRVKb,#xYZ#>r6@80 0vu X2]]_Z;hE4+Zj=.( Aqp\6[f6Oy{!{VYURs媛RI`8]hRS?.K5!j ϡ oQ;\KkR_K7.Z&9AZ>40 7s\cMIn+~eDӒ"-zdس,-1-KRKXIKY?ZU:-`&Ally{dLvZ7z HF,XF7\̋[ ҵs}wn~ 7Ē\Ğ$Q'[?m!<~̶T;Q=9)b_!E,]N4Å5GRbz#FD.(a<*D%RMpn^nMt9JE/iEQg|vfF!!uh*hv57U[=s>֖%Pù_'z<&#*f@2-FEV^rd!M'eRm-u{k5}Fˆ59Mk ;ǥ%J^ٙ4"m"3xe ÓSSQ c4kQ!?oE[P_uo#1kxpX2P-}DivVE \%8䬊u8fWi;yKǣa}gIϋ裾@){)ęmmD./YƦFYȤѹ(2~z"|DJPvb8}IE&7Xtvq]WG~ G"iLB-koc-j_4s9&*-T5OrR^Oe&͜kQ:5?eߞcg1#oŚixVԍ h\80TRӪ)v9GvQ@:/ 郰ݜmf[{,AEY 7xKyV(?=<MxD^_qԸ6.\LsLp(G4xcĀ6]B\0xG.'UPw.$ˡȒaܩ2S_mgIAR>UF2U.GI:PRtģF8}n~:\YDʞ̌8-q 4Kɕ!}R V{cZ;|V;G^b"4[~9DYá[#Y2!+n}9IZ-2`jF9ieH2I'Uˋ>cwKU)J'% ;T\l =!le٫n;-wTT<㛼Z58G =3>Ek΋6Z\9U& DQf&I%[|=l sU Q|J80 𵖦[ DxD5n=<=KNB7^DpXQ^sr"˲$ɿH=Z?`Ңߡ.SOdr_s L2 Ymowt*V  @ }B c 81=@45pxMR(#@IɍpYv8VG'aPom5g8z~7`% Q GFHӇt9:YjVx4;&Nj}!fw. "[ÒG7 v7/AXsq+T @i)s#X>nsԙ GB'Ws |\ϭf0/R]sl_ 44u+rNjiT |S*\k& *w=WpkZˢAI?$esS^Z-iZ(E~(Dd<7 C.ip'9E̠v{b$2\XrF(s9y;T [97sp1p/Apdq{2yR6maᶺò0eÏB8 Piym"2Sv]^D#|϶K@5g_34)Zt_lg3O*ѧJɁG^ V!zlR[Hc*i4]1ҩ4h )BX;#~Jt~сywx*Ŋ" C8#"85LU}ʦQ` ݎ1Hu*nj: ny 󓘱S]$ǫ׼C+@'GROt^dXx<؟.ݴS?5iy,w' O HOFSF:~\颠 Xi5WVb)Zx>CX^WeGR8RT߬IWk"&‡8 (m(Zؿ^F%3hi2} QJd]Z GCod"m`|Hwx^rZd4>tuzcb+{h+vi<vkTm5{;Rl,2-PBĝKٚ5$ JGkJinsW^I֖i02؟DrNG-%t..L'<͐M{H'1G0Fy2_`KHqǮ8R(X9qXѥUji#ޞ}/1zƇL|&S6"eI&Jk`05Ѣ6B~gp4Rsiȶ=p 16 o\`\8\BڹoZgt_`B@]D |5Z(LT5K0̄y r@ˣ5}L9]qگ\)ZbuHӊsuT&9`]F:! @O.X%wx25C&"k"ڬޘMTi&׆VK$D['WigOh 9%l> ӍYGA |VxeH0EkEF?ǜ^ŻܞCoLPЋܼPĵ$̀ՓY7RRS{ÀOWb'q2#fՍA4rf_@7@ievt)r *5SϢŭdI%; گJ(e?`έLuUƫk.@)9tvIv(O,SL W+lsK:" д )`5f7@!DdAY10 hanʝ݂ީ"x>8Ś+r^+;UɜU$z\)DQЬǩ#j"!Ⰺ\$8Mk$p\'shG3z.oDrzQrT"}4UYeOÝOqT\O"ZxI8~s}GL5g1z~~KYo2\xDǴH BMBN{Bp*uyXfL2s2(ceE2zg rSYy_:t tnr8;7 FBILBšh\x+O__PώG/G&7%ɞie/T߁_B_+|εx5$A{zr_9;z?rٲN[H Dc y\dC[nz;\&DGbt=== H!])5μSUɷJL ^@QWjKo- 3<}Ϡz?~ y;!M(+oM('@9=DضsSğ⧥=FozӅ?]p׉y"ŠsQ'DҞ (WNp\kqX s[%W5B!$1;T͙+88'(j0`@r؊N6ʰj3܎ MS% HmZ93SEHK<;yrh}3rM9CK9z&8tpmOiӌ7;i0<i4M=Xn5~9(w?~] 15xŤ9z` =w '^5<N cҨ&^e0BcvEkĂ5x7QxdZ}()3͍ozZ:~@0U?RDkl.xIhSY[iMTH;tH)V qz̰-aBP(ވg&.e' 'xnPȇRw7ÍCy!+5x4IeMG9%g5h:(D\-K/vc"\ ^N\Q`)uUt] ZVLk<е3~l S3y2az`VOL8]4@ƳJ/h$7L閹DuQD-/ z@' I( EO[ݬulf jnN9!ef*1"vhs)~wu]p׺j'_Wg !#jBŀ02SJF)Sڸ-`J߼|#;kV2 4-%}˜#*!s1ǔo̗)̅ܨPؘIo/M#e]]Q߫v5[7/#8+rN|+;)#9CR$I{h8MLGyGH۷e=:Z* 9+-,۲Puǘ^=?.QRMfɵ0!3_UYs8N{U]@DLiCR=f[͚2@ @䬟!L6p򹿦uHZcZ$ nG]F953_]Z)7$o~],ļ:Zm3&53㖉pv DKXRꪊo#?pFL6(R:fgvXZǯp'"cs7TvDO1-b)ă״pr0 X.e?̵Jmh$kmJW#l(<ƥ]c.a@{ai5-.mCf>hЌ%'Cw* sEc(=~GzF^[Gnlo b΂)FMq>#Y/s#M 1\#<1c90Kjq-pXp U(- ub!nG!+~#PdMf6\v<af `@TflWoJ:iK,sVdWf v#T9䞛7 ]*T/ͮ5sckcClش~m«ЫNO1D622WeDh)u9tN~?;{`zfg^-f3w_ e΄ɀ1HOna΄<79SOά#M-$zP)8( !0n :&f2chaYvIފHúٲiΡ:d 8sLy&+o耝p5pWC)kvGBcHL!A"7^'5 biqtΘ >~&?eNfl}]<?p?G#첔ۓ~MݏM.@bw{X;F&\Vnm>%W̟>)%h" M IDAT2 ⭗bva-"`5ALj0q~ 5mvѼX8]3rn6=g|;<Dqf^PNv2^61QӜ$rWyJܟW ?ⷴb3=dLφ1vYs?9Mw?KH l i 1ݓ6d35*wds11&[Psq ^0XE2!~cXfcQǽ@\$,Ь Ҝ-P35oH-/c7|C {﫬$FQyh^*Ӊ&TL{<}G?_-&7\x Khio{j"c-3Px a:WM'Mɉ &tSޘq9M4%<9>K5-kbBslq?ƜXa;wvH5k9N@C]j14c@1Ϡ6__?e %3:D.ka;0۪|/Gs?.́d x\  \,>DuVɞx9@v?`>nbBt\W4sꕔ CeV 5I!f\@0yNk|1Q[|'gL4f5z8W˄dՋyF`~P{|C{Fɜ$1ѽsiP{tPB(4Ξ;`jqԱ]̅٩*5e_֒˩R\f48f6% 54HLtC_6[\=0ۺ%:jk6z|O|Z7ᚱqns дój! ?ML6sl5g\5P~ "A.<vxg Oނsh!hq%ymT{ PtN=(C Ʉ))$K C9|0nv ptL{  ]/<$aΑhc h40j;oœ ɰ `SY2ᮻ!wCyN75?0-p΢ƴX==ACꚥp<潆7}COC}̱!)O@a7(ӱ<68#-x_>f̤-T";iE'rțy?x:m._z &H=ƭù4i4m<&t4f9vÁNj0>rin426NstҪ)ZR";h^H ͦWȷ޹i*n"e֥(e=;\J x; "z|RȅXW4!J i0F)oN 1Ww!&@vj&No)ܟ|KXi s{v+:o$Ij|n;L/CG[ LY .W\uo=51A |`Ƙ>;(1vgY&*Mnٴ80I.hNdI֊t@Cέ.mgֹj$/)R2-jE40&v:eV*Wu8>uiRNqF ZfȎs'P`{\\xQl0PQr23Isx^e*3>b'=p.VSD;fuz&LKn/YByRaIĭ!\w9]NŘ$>1m^8i)qRJ90՝~Iu2M4A?|},=1 vfِF#eם>[zܛP_G1DddC k R䉕)h*4oM2 p# '@ɡVLf F*N\@4' TIE~+{ӵu̶s02#Xǥ^1eyޘγ{#m8J0f4kt @K L6؎XSvƄ!Aϵ DU"vҬĹ߅Ӄ̰֩[𴞝)c`c1PcudYDs3˼9 ud;B ^L$vuRQTM՚ zjxD gpP815^׹dPILǢV(YVUGNg::K 0;Xc&=jsw ,S;/ $RѬ|C7P”3~qix\Vt[+cwi).!4Kazu*55 ' VU~'w[;H#խKNYK p3|G.|27w,3%ac{L1(t0.҇ N:zܲ"# _UYR%Bs<(fsEǎm9>[ln\=qp:nO'D:ڈni6=|סiw@C@>tt!F =Y7|p%:|E@{$eGPޛc"4}]@3@>s9JvJO uE -k, i|P-h8ve%)Ѝ5Xu0z;YВ[dEBw3G qhL-M>13.IL$)|%o3ݦa{ȝ^'o 0Z0^GH\ Ҽ|_:~xw"2G)gAG\ 0=10'$zxd F}YDI~W W4ssQR~dhX&w?\Z.9vPBX7Oh9KCRʑ{?!=3h<}L4GbE!J9[@׀e?cF@QcӣT1>V@Rڋ=%c\1#mޢHi aעa&g;Lg2s88HS }䣜ι0%/a)oX NH;bըv?f% .+KG8J,ɧNf#Ę !yhi8" D!nqg @$/Ř.]cx4@&hAjUjlD h]$,6b BvCc't `NE_p2LUj> >V' { ¥P>0Gw#Y)w#2R [5-Tl%9A]uțU\2l@h߁*4w.d;G֢ 8Bpf#yd aLZ3`H݄}bڛ!s'" ==-s7wF 4s ^scc'~au mX $("ΥLdjIRf(M餎zB %=8ވ<{tP )GOXb!p7?\2z'0 PȾŴhEө 皟otA{] 4kXgnPKt.+ט L0Ω5s5jط&ا\} ")})hՒ mPҺ4:a|4G+a1-HϺ\F\wu",vC :vh}i9%p80$r&%<"mfZ,3h~ :b,cpbI8:Hg1ЁBvw& sC~i@~SU @]`q9Zell kxa.*% 3wn Xs9OL<^˖n1u8zK'M]mIK| hD,H9bYAc1Zdo36>D4BL׳ g½Ew׊ +ICLs3lG {Tsku_(񪂒1n;VB[;2ҟ-.?uǟ.3:bnL9b#m$=~^P4K~I!DuMbXQdЋ.]so0 4>+C6^0;iF>_laPc3H0mF=UΕa ߛOO7O`pqYLn GLxoڛY.g h~fMLx>ư$|6-]}u}f8Wn=sHix7bf Lw te[ $g@kJ;)Db?[8NtC'"; Wލ?[\zOp.z?rPy`ȏ Y{=ֱ`䐞΃׶pA'T1Io#] \Z$n`M_ sm`ɹ^~0g>-JPj!IRכSX}$20#m/$xo\P5'iɓOR`X@ sZ^n. a'310-3kL{Տm0-ڙfKt68tR-zdE%Fª,M{lzxG+?@fs'cwp|{u.?o }F4_RM[' gχcZyC'aC[ݧR*_FZ6c#N&Bzkߐzs{n ?%(1u^玡.},ǝi5w]+#ۢxf}3o89!33 k+kS Q`>ף(Az]M%fy0WX ! G? έ(|m3d=lTG%GPi,ek_XCX1{8qNh\h9]VSN[ӊi4z+")pHw%n9ƜJdWD-s!{Ȟ;8#eǴi7m>8|E4MA9 b31{6[FBāfI_aڝa%]%Ҭ! ]Σ4$T[i[51#'gH%۲7:@BɐhzN$L@C@`i3t)Z)S$b-1s*:;sP\=ml1LLy{K`QP1ƚ뒩]L5&2 S3Uc}s X3dQ1u) PFsme; sg0zJeVI;wH k}Dz'DT[X!w]2Љa8zbr&xh@z r*ʕRCrE)TX2r#nxS"):\G 8$t4q#{c4wWr͗Q,S2 qapsȌxC ajC!k7m\Sav+G*XN1KM1Zd1$cf0:"'~Nf#[Kny EmsOwXf6D,1̒Yqڲ3XS{86CG } --Kl!^\%ӌML9纐^n̾ 9v9`* 3{bl |iD" 8H@CmI^ѣ h~dZ{9Ļ#tޜ-. Gb?ow n\J&)FZ52A1ii?4nNHɞ}LKB`!ù!ozJYwflSAr XJIXmdfȉCZi=6q]6v!ZaZ{gkJm(2L-7dRKl/%R`0:7LR)a>zsiG.-{z~OÉ3\ t>1-^o C̍P|3uT0TRQB!Z ]\]1b<jభaaCD6>Jc#J+R3ͨqrŚܴRk2y<,b:/L SW~O!-# 7SȰ7uT>R& >al'L3|H$׸ԅZim̅`:Վ& Ϫ:"m1W2#;$@#fh#w.uaѹ ʋH)KTIoRSH]EBz4$apvt6Erhnϡ(i00)KFevVAvm' c`ԍ:y:bAvpsr }e)֩H`Iڍh Y¶رEXl3ي4ӆ.@t[a0VE,}b]e1C0B;6dt@!h;LFGc-0+.lMS$q'teY@ c 3Ըs)p3atO:` $i+ ͹AA<$)uDqUxg`$}Cm@cZ2זcz`l4 t*${oq, Lu<#osnz]D7eGcY[𸣋Gƫ0<)'V5.So9ގz|\!z\{u7+ڿ?-.[Tm_k= ʚmk4h_9+3 aWz661 ˖dc=w=o3M.} xi)Ql՞ }YlS2eԺ ;>'N dEiggdvYvۊy^`gs&\g;c"x!,uz\p O23s >SpZȣnA,ׅ1ߌ ,3ԻF>gi%_DvDFlRRS J!|j8[wq0 Ԃޓ'-:ɑtǐ{3;Z/|gb8!b'\ qgpaj7C኏gl h~`Y\z)'g$Kz/0$ZN!䲧/ :띑v$  ۰7LT (#ٖn lƌ9l3Xn0-Rz-${%S| mzehQr"/Z,/ȈŎeL+z4Y$1L-~C2QH6Mc3.zoctK)SCCbje k~%Q1npI֜0=gKOx8Nw 5!vCm1E5v9IK}H'|XgBn`o>Xi M3f< #mh;:KkifZ-;mgBiEsG InCzK`Hϵ'VʫNA 6;[K-1_.dW' $A@7JJBwGaapl[cV˲kBkRnN!Ίsm+L hO H Ixi]!H@2sہw7#ҝ  Os('ظH} H5ubP`͉֕ {䪇% _@?${jE@qmR7 J@l,u ĒB(*A j9䮔?ťƓB1Ϡ'L6~x3P.,vO@$12 }Owt,tScNYKnN4?F̘2ȹ*́c ۩=ib=1#m8LgVH<LD]9O k z7l{k^#L)^7TVH8^d 0m)h؂/Ŵj0 r=[@d@y4epi̺}7뙡|y,m-B8&[ &Cq<EA\H^sOi7V9ص%("gnqSJR[5$s.> pd!X> hL_rre=1S5F3 .ɟ<?%^&+Lapݳ)?I+.U O1x\!~J y@܎#]RmKgeL0̂nl*9`Z;;vA l1tqߐ>zdOZ`BP<~C{Z؎~ ~`{P|bdd;bӮ+bnmH>`:\M? ^4wm`c5J0P(ZA6Z#c# dBԐeQ8΃f?. ,:!l37~d|0XMeIcMG_/, h.K@kL<Ǵˈ&{ȗ![0M>N LuGL?7'_[#xƱŴ&d˟򦧤v3岪=b:Ĝ1;X\>cNVԂ BZG=ظb tYZsp<.3:6醀+'s}igkF"}pmnT4-g/a+-= ⵠ ͖"tF ߷@[n׆-ɲ% 3n1m ="B[b-.F~۲da.ϒB^( W&"Xi.ˇ>oNƚX9vc:tnOglharcKRP^(nΪs3DmHFA=n6 fɉԘeY|ߧ<"̔k9[0)bڶʻ} rBgo ̎GB貜 tv }KZȐ[L{ $gY➾0eyS#5m&Nsy`R'Lan)r0'16G\ϻR btސ#^´܇{ʟd@t9wCVG, \W;;X1ː]Ɩ~3 CGvx44ȎG`:w,*5t>0F.1E6MuyziO8h,LsY^%63vf9>sg0Yfv34!)ôݱ#`XC|>yX3ʣ;L'9r3۝a5ı]i.kX(bFȠ2K" ךny2c&.po1a3|ְZ@f}lkeY@sYް=4%QM·60 :R6 38 :0MX00u[, h.rN\e]$笹 "@ا cyFCd="4, h.l=56c;M Vk ւbރqp,,2.$@5!7 @u['0 mYբ;./§3uŞc̲0eYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYe8,2ceYtYf-1p]}q!X P)Nm :c]1, id]=}c>%0}f+˲, h.zHjVnipc:,/V_Xmjd%hNy,(jaSS2B.eao\BedR: v asd~ +]@sY>^߫V~ߵ8pKI%(>SNk@'DZX4#b@}6k1)l|;se jϷxY4_\ꚱ۶T"'}ϽV 浒aR'Ͳ,LsY> &[)̖pU>ϔ0a5 {-rOI%lX*.h)/K&DK$PZ29j%_@sY^rc) (?iPx_fcPeeyI߇]{W^d9\k*dsޣF, h.KEQӏ]B%5u>Ku,qݕ{c%MQ*֩ɬQs4tTLT^R.-0"ڥt|5sjFe7a޷м& -@ˁP1S KBupC9~_s?Ȳ,F`9Zֈ V> 6^o^UH_3\@sa/j[ʸǶbsJr +`ϓ+zF rH*t1]`Y\>؛PeH,j?\uhE.N0rd^W?V{Dxnk yN,4_[F.S1kzǑa2sPb9쐯H[sH'iRRBIja@}r.1;EsHGLHB^^@zg\)̗xX)į kM5a{, h2^bLx,+u/bt.yRۄrǧ}-ܛB2ZZ˲+c&^~9lem6FbH%wJv|%WNkB[>O-uF 0dW%Ԁg2rKx԰龵5R[cYB#\+[4?V3!華Tkn&x#nԣd k˃챈 Z`%:)KuHk/jc)-J9("VXQPNrCR5{D1 %ݲ `iᬑeXܜP>W7y60Vyi G ƴ× Tk1D+e,.5|5༘,(sbmgC}؍6RI&0\C}E1K^>f bYмױ_$)sƃF:(_"2{j2,*wYdsYgsCښϜ㬵+#q뜹,muXJDlR`VByZ(SbRXkh콭Ӻ}-Cٝ"JRed@qp\3;7R,Lsv(Ӱ_Sk ̶R_$;_J. 0>qcP-sf%)V:9}s;,)v\44u,jCRz}N|nhr5{#E3> E6RCFjH %T$@=8:JjNjxj)Zf:G,x#9CQ溏2>to⢛981TQ=ꇧh2IeQ`>sv4 h 倬$}4ZvO蠂Y zK5Hp7&S08־|kK3:$TH+s4 XVϡNm۞T&l+8]8&a1F.}M餹n%)HyƤ\9jzRzgMն̂7ϩ |K, +U[y]K%^#qCbaw*sM葜\rφ)m1' q Y'$}*17J7 (j%s-֞k[˂SpI۬ٮ)?BbDcJTKlJ =`8&=ZRB(^ 0͏)ah IDAT`0k@E@d '(ybs%s-9vK C9".8-u~xjSl <(=Eop9gsۜ^YU kL~s)-%.Q-ZKAjtw7bzOPVd0S;%(ׅz hT#Tx{nhV.ZK"eH0*DM1gw,eז@ fmq~lbΒ| j K5=}j1ss S,ejoII  Q 5{^o_3|ra>#7+ʏJk\w,׌j8cTO;'L F/]@5LT}^;˦h>kfjFs yF~⡴wEEo@z@j^\Ͽ"^ mŵi/ Kܗ}wWO-$bI :b,ß3§@:5?)ةUmUNzAT>`A-Jp8Z^sqU)9xKyk_СßE펟֡ۨ:@V"nI\T\[@) }߼|TGh_ SL 6YAd pS1?9rjwMr%u6C]J9E>sYKz咙p mւFf/ikKJ!s L.f0kq jXEە'nn;#qw$yB\'ݥʠjUsV̵.!yȒG>T ϡSU}<š??ۇ:z׈@UέBz`f#iV]nJy{:Rpi,55%<4̚"i kXkMNNvɍc?\mn^}%ڿᅀ2{Ū]?W@T\/},ЬT/i} `P?BP,ysO׀ދ|Gsjjj[k1HpsZ0h̕">|A'~i?/OioOe//7HkWH=o;#&+aM.1Pր\>c/^aqM}(1?/"'~z~i0X}?nNX$_XKSõ{iV_vw h}=Uw1~rNHs̒k<^s&EBfT9`KgU=eΛkDmJB +<ĭmjo>ϴi8~=atO[(t=X6jXd @Gõ;n*opx;mb$8_J)Ms*Տ"#90KɡW@5+T^ 7jkg8Hx:)'4k_q;\}vE}Ҁ2k|L㴬Tz JVꠈwZ̴WmLd p ӼH15۝Ӄ^D" =)Pvf~q?n>شTq~DP )1ιo~~wz?y,΂ׯLT"΋[=v{:ww}78Ni5 `2ZgJ{4_|bյ %HfBXӂ ?g~zѯ+Ǻۧgass=?(1p@?צ` izi7qY; ySRmg".BfX@]<sb{Nّepy1E{n]!4wH9ӛ7>ǚ7txxoUFc"2I7m3KrKx S@9;?'Nڛߗ?xhF~_iFɼcng.|_@V[^ @<D( !47g78W|r>:mp>ޛQ怒i1L1Ӌ1XۮWbs5AUq {n]페&tXB08r9s*O_]^,\2 V[TT 9{]Sx J;_xxӿج6_tX@/n'`-9^~R@n~,Azp!B\)Q4ֵ R++?skk؟ZBB&YAE\s'?_eա?}=uc Uze-P.@1e(s>5d*1)@j{9 懲E~98axp3'g.@P457ܮ۬eLoFj5c-/v֟7>v}A?NqTǨ-*,h97)=za(ɱÌ&fɯ>YwEs#MUO7t}!+ ׇ΃M:3K9}`rx~Κ[T;)3Hfg5$G]^|o?sl>3\ ~tp3tރ?<0P@cfٶ1=1j;vbkx 0)'B~n/ac鹱53aveC5 m> }*"i37򍌽Eؚt 4lo?_?x7kK@~ ~ӳ0l߯.%wRm-͊[ [1bLiXД`z٨|UV K YSIPJnfLg]Oݧ&;xXvi *>VÌMVG?yf}_ އ 9z)O۶Iᩤcj:pfXiM=hQlyo@ C3Hc)O]ivxu^?W4kelZ R)qvR=V.7ۛGvPutCqd,skYlT Ǜ -xSqr&cyyR(1[/_w_] "BS#QKZdRhG:WU9($UsF5L&{vNRDn~ꋟ;Ym*? GP InYWJEfjts]>H0 5pchI0N }G_,kovy7iُ~_.~@yP X9j7iJHe;L[hAK,驥ID(~aH>xfŹ?  fX?)vc,m/y=TIQX'%&ð^Mc\+"Vפ]w;/Ü#Xd-̭?GRAwKȥղfFFe:@y3<Ĺ([ =У;l=9M ,CYj$CnA)]"Rf<O̘{Tn)QcPކyvDV̓m8qż*SBq޴Y[d wx7w~ЍFpHٖ(daKaSô-,QaCV#REIl H"sXUyjɽ9y^ܸCUeeeY^{ #[^^~\Wzv2~{gPZِdMZi ={ 27bV)`f!A3K KpjeKšzsf{nw ,"(W{j<V}1ckjK"pN:CכfnKOT~Dw\U9p7?F}taud9a w D2w)lu߽O5XƠ3ӴBҤTށeSL@Ɂf;na'6]pY8gI 064s#K򉘐{c=dr]T.<]_Ow.8 0/ 7x:!p}V,`)E/{i >Zt\Ok ՉA1Y`(#Tea)rKʱhj3~$Tl`[`D*QM\*aaM\ M͙Mf>Ā#%hCB&=`qQr[E֋v>7l4OOF&R`Y. ,`j948|KVC@5yQI7Dp@1#4Svs~j:SrIpv3ޫٝfH56# KHN]Z)Pl$+\w{nG?t"<.o;Xa>kaj2N qR]މG1@kʳZ5\pXX0 ,Q'DXXq~ƌ&F%%J0~ L1O}Z#T-۽y7nC" HMM0!.|Qnv[9DK KvqK2vD>,ٻOWmv]L{'L8=v'$eR龴H.cpN1iLiQ1cfÌkaw~{yx_`"p_m&\xWwFS&!`s]d^}V|`Mr wpB 9hK Y]*_]:$^Uou8Ju$@-7 8fxSώ(HP*Ph wI8v'̕Q:AwXiFkŵ.|wuf^x>&c3pz8vX)2D.7 Bx|fpf3P\N&8`DB^bНda&3Yb`N!Sa),9Ƹ?0Spr7d{Ű>](Sebp\[Ix>;h2 L 5H]~oy/!4?~> (#t-ДeDPJR ezRh耲f.3nϬ6Ԇq3a'RSOԂ bCC] ͻ|%ܚoDBߥ$84^N{a)w $-{V'(J1CtQ&w A'6![ &hĜzMhi W@2[;O7U}0 D cpMtׅ9vf")j.;<Ύq3n?g̤j!I heԷd*)ɜijj\TG:FDA9]p@c"˖so])Q8[9Wo6qF4M}( c)9d8?< 9ʈrQTw4۝?qp0jb6?-'R0X@3n LYʯfD !ӫZy\3dXQy2!gHd\ 9).!Q`5`EOϺCOpXxČߴFߜ8zWٷE sހK)LI>,U䒹wjKsL$RRyw?2[o>- ˟yL. e9Q.cExewǎxyO{Dm \(y3 *xyu$ +"Ֆ ;DMC m-K9yl(lj/ Y)Q3%RrfDi4Ss]!=J,= (f4_g8nnQ`') ˻"Y1L q=f\I )<[{^<~ IDATw7Y- x]Ǽ!IeX;Fq;|k p u'D7 '+f nO 9[OdV㸐 &\۴p5kL-gw^Y"-<GMOAX1b1`qi`%Ô0k,3K>3kO<2Z#ѱ@Wȡ1+r܆ʸVGKH:I>UEPшǨp 30Q"O|-ďi@* t`T-w_z{'S’ceIC\2 Lk)k>;+7 LBQN|}L̰̮Mj >.B2<_{ت3uhxkq2e"r-aa&?R$~4hK"Mru; <9Pi ߉O+m}Fe@ T{ ,>LY}ZZBQLĖ8\1?~mq?cӠ'f:Ϟ$rEEq9Q,HqH}q=vj|rq @Y74ǧ)놈ysLGsp{S!*W98f756Cgİ;쯸ⶫo؜%Bs Ǚu )V.8?H3\$Qx#2pnr?O~3 0E #;`kl% dTh.\hq5BO{pe6:ԭ7fo{({oa|9_3{m?whV mj6a:{ c8򰴜ɏ2jwiG1J'}H"ДSAvvDrZh}U?ϭkC_#7v!~#k.rZC\N$6u.I^Gֲ)q:Y1'f<qN)3NpŒSa*,2a>Dc9X/qҮ2) 6Oj p D==k`6R,JRQ^-h}KW?~ 4 xUțeD}"+`Qfi^+vQwНk#v{ŭ^vo1Sr`k'I3Au|elٺdc /m/~,1mѰ4 "_X1q?xl8GrIA%wKɴ;K6s@K H:|+WC`щ?G'm|1u 2<[#;<.Z? rH.>EZ sϜ0b̌30¦("nm6*gfxgDx$8 s J|0NҸKsBCu[eނǦԈ#4c5}\T-|9-ÜfCϱzK|<'y4 K20Zd0TISh nNw>b tPfuڄ&S_I٥t_m1`ʲ[gk\Z9Bjj2K"J q7B/W3'---qjgI@G8" "1Pҍm0pJwQKѭ6 ./bskC&\F%D@~Os*s2kʰO+ALWajLՁU7v>w)*"Oz؜5a_'Y eSg\kFͦ/b?v^0=:<8by9c43#ƗP㈀ @,pT\w.oH=!q9k@# $($4t8\!c6bX<6ϩv.RXw^Ь)@h#1|M(5:R 7 *e{j} Ds .d0 u3LMY_x8g@^6{96xQNSsV>qu,U9RAU,^iS~g~h'J?5} aTX~f3Fa%xÌϞ׸oRoY9:Rumc&<k1ɒp<' XNeVk x ϗkϮj\ A&Ͷlݱ;PWP6T~2n=A,HxO&;5zH f$9{hPJrx(OU˽#/8 NU0(2I $XC5~֚!)E DhO|͗+$.- vz270F#x5GJ ӱJ9?K:sqI|#58. mSCId `BxfTQ{# Qֽ`ka/,z,0 ש }1:.Y#a΀mᬈpd }Dhد|F\rr?n=? rYq& @g(۠$ u!J{OA7 < aum9.FHKG wE۽u߬=^^{̺ܥ d:\$ ~t΄)aR VN+8Oᗰ[ۼR5berS4%%!7ǤP)BYPjirU^fnEJ]ʱ/4sC5,ax.>>wցn/@ <`k` Q3Ƣ>1<Q O.BxV,bğE#\gA)b%DJ ~j."ʅJ) [nSsZ19)p nbL3hsnۑS&=7[,Aj=QBBA4L0Mk'xtK*m;(w6W΍gD&wnvLͺa~%Xf^1,S2MMxx* 1Q;DNϗqh1\VMhI cP'r))E%h?n]`I0L ̈I7spj%@:f:B.lVZ 9:4s:\B{@o!mrø9x"}`v3 SBl<[#,"%v,3 "E,R.9- ̴"q(oOT~ԩkx_˚o n$U&hJrS9PX/z3Ijf1ʒ҅L(b**dU?2e3Z0Ԡhן?p vň39ud0ڬCq-Og'_KF5NC V{Po)N_2Ӝ˴R Dx7Xu <ꯁåҲ8.zdzMW;f #{>R{\C_N#_`3L7h,a}bG+XkmD0"o[Zq4ܚPʲL-Yc>-w fW2-bpngH: %saP)=Vyxr;Wqr'brNm2k&A s]-%1L֡TG]B+&i 6ǔGi ԩ%Khm||  hM竹9r\Q=> E>,gf?Xù {lFJWI5Pİ',g.jk껖 ?دӗh 5_U+wuʈ$`Jʋ8`[#swA|ThaXA)שɩKHX*{I} W1¶ղ4Aƅ.ihq)s]^Y erY'PBAFd*!xvm@Ja[RmI֚AS]_E*Zn>Pv f&0ǸP|2cqP̥#sq&uFpf,;3aTG8љy Wځ\9T.YL-2aj*{'0R0X{N(G!ywz _.9@6KؤkM žzÛ0C%Dc Z"qS, 5 ]ȎH(7/<o?0Ў J Zxt8}0ьxHE^2A2.|/5>cc3JhJnElU k&`c5J$Rf>āzHմ󏒣&n/D _j\wr0"eJro?3|\mX-o<) CD?>4sp3p$`vpj1!8҅W vP\"_G(bRP̉'%N IDATEcZTʦS7+"79hwP<P_ J֗Q%m-4p3sJDHLQJI*-k=XK ;84 e(3ڝJW&vgݿu٫JuSA]O,IFRNz1\h!BRsږ_DcIdo~X`*eզ}[gh,G/9vlш87)l>{&gX#%0D giʔv*OL~SaAg ÛYaO'Ϝ.O.VS29)1Ec }+x:*J\.$uה%瘒KW΀DZ1KWq:m^5hJרGJ @)s8> g(^l.\QΖR݄dv%ځt i!7\q/6@Д)1^V9fZeFOyl#%FKY3_Qlv~~1/Q;Om@ysuSoFn~{p=(r[2Ij4ly"cU8r25Y ]57C֨e(k9Hأ{sNDKJ:xjU20od[ɛ-{08 GމܟڂƁWp AL ,cChz `Q"F Ety7B|یa^0t܇]T5 ujOm$#숽3pb i gx>o# 9grg|SC , J՘CfđJK)Cf\ J2W%DcY55XsBLXpD8d:n:BnnY^D4<Cum1`=eJryaeAޖVs|kTнIL^WA-E׵f#\W6tlj1MRveiR yP(>݃Cf?h66:oCU RiߩxbO,38Ԣ6Cӌp.˸vNmANd╣S6.pC'-xD"73DA3[*׈pȄKסk!.\Qya&wC*=4wKIjSK;?V W9GpkDζcF;T+TbbT*5Ias~of#=BÖH!s%6{ƵyAQ\2a;GyI X+CJ8.f @`tE۴e h+',z`졠F@J"šR%pMn* ؁Ì*A̐F,4 E,WiZṮ)%)5/<oeW 4e!rD $AV| ]*7<%h34TcHCT4sBDIO mȣ^VGwERwIaʋPfff>f[VF9V!ҘwO3pn dtX j(/մ&Frf[š?ebN%^steT"|=^ mcjupIO؛beef0aEsoT%wisFRZBTl9͒DEsS*x/14+83wD1a9Ls3gH,Ќ/"NBJ )0nvF{nBFf}URbcpZwxvN]e%2j{DlQTpL;eVy.tR9:9uc-"qeXmx@4gnplFO)V >AҵPUu%@ rVNRb^Br;n| E(ޖn tB(m$CIXB4E@ Fs,=?/ {9$5ݡFNn_[P6͌#K)x*u.V_{#0ރUvc̸@LXBX81r=> p(̸( myFm)%1p V%П QO˃=WULmh29fO&i,O% (,er'--%3 ͱҥf,{wm.7+<)6O&<3ބfi_oJ&SjtBa#X %ڊhW 0̵ 'B!@cqz=ת/ՄE@uJS22D\r/h91 Jj7. l2NMLȹɿ]>҆g X~M#/j[`+0PA_A;EHug}m% D,[T -2n$w뗤z#p ԍ 5)Zs]@) 9i)k %Cl4käF|r.!r7:GnWi^Ϥ(؅}p3p@%ӽ3%4pDnX>8y8~/P`c[t1!d*+.B﩮5&E˅G#L{lESOLD%ueXXВQ"0]XG{,2hGDx Jް"m5JuIʋmccH!n +7IgDT.QyRAyJ/U#C`jJ#;el9Ky{|!`O=| 5RU MbH{8>K[JrTΘBbD9ˋHu흡1g[m~xzd|t%p35Z{H 5J#6,S +`l.@s"f`RlQE29,ܷ}qybF@:.v7QPiT"*WK9r0R/Z5T܏# p>5a9].Y89Aveghaд")}fQ%&_!Zs",5S!ծM0oEB3Ew%M*r Ԙlɚ^"oY??$B㔩0R@?J[]xQsL-2 zEGkZN;Uk!Q9XEl=]og HZQqY3>mI0|eɳhv"HEU%I3&)c- 'T[$|+HZ@r؝c|wSVD4{TJ)s~l, 6g{jYgƆspQ/޷ x78 ~𡇋ĸ"=N=) C BpcO&YZkY0Kĝ"P͹'c?&/:L`Ux %,-rCuZԠK$<55}dZ[S8NFE ih6ڭm- gArEչ:j]"53)ုƺ:-anz4}d*ap- Bk.~qra]oTrߗZ]`U|B 4y%cc =Ke&EɚLrN Q Ȼ)Q4JXR 3ފy-fa%XC*e`W~M>j1.Zgr KXޤ12ƣwUxDU8^* OZ-f)#=kTIQ5zѭ=w Q i 4g0]`M(nzo+H ~Wv 4N1zStєv[yOC9ٖP~Hvv\>V59aX2p||x2|́&/)rh l5Qz;9 pHwؔtM\ay)-Δn+B4RZhÒ4ySktE+܎6/ 0%'sJ< tN*v&D/p8šcMePȵQxi$\=!ȪhF}E30)o|A4ۋ;vFw:cp@ }0}n<=y#mI(mn}FPH5 DXdItֆeXcsiZ]g-['4말a`W̬WP՘?8V@礢[XʵN 3Fdax(Y{7 x$l?3^6Pz?</ͭNXPrf:KaR#L(L1@`c ;zm`?-7# kUS$# DfHYEg;&F n4!.Xb/ JmAX:Nb81SA^@DUxalw4;᭯^LQc8 796ŊR!n*̅ZS N׶c< 4\F9BP&@v]Zh#D)C%Bhdܓ[.D[-崐Rˢ57|nqXOW%n@0{Э i!)X%"aS1s7B%c+8" uy 8loV(;6&Nj>G~I$YBwe4SVw5?BA3Ujs@-2Y6S3F7Aħ-*LɗsңקRj\3i" nk- cfe _]Cz9s5g:C:{lWS3ɵ<ܔ0~J3VKs7HHrXItIEvFNy"iZafA\dYIq% F&9k=}͊۶j3iÜ&s( ŵtqI[-J)u)|Id2f 3ʡaކ+ހ=$ HqQ+F"ؔܬJ<2/J06Zg\vݪEzFIB&w!0S3e3Br }-d׆Au 0LYHuۮ=oJ=h$NG6DŹN k-O}.))2Y^&:._G?Wa:_`9a˘{[䕶HI9cs -٧dLWDܶΏWH6ˁ*Vכ6G#D4 #_i4agtD ڭz)R`E]q=gagskެN-{;**;2nJjI]XQa76IRDa+b'kL%0*C#[|7͈Q EtJ,GoPs3%%ZLu|?))q<Uv"Gv~6>lﮩEWo%F3S0=3PpaX3!JxÚ W|vɮY25?U(ނtcb2eaǰ gJz4&޾ ue4ӆ@;)q Q ~򘉂ߔ3)wMW.Z\$tD0Ƒ[sFx!nےxg"Ύ#K h`CDjӁvh @ǻ;9x\9Ha gձbyġav aIEc'u_ IDATp[ڐ)mZn5:lhK5L'뿋E9+LT=6B)V"Z!鑿sayqF2rc0Ҙ͆ SK܈Ҳjޡ=_RRt]p(iLW.+vzs +f/ǻ 3G)oo1eGnfN%:'qcѾ,nC/,<8ogw着.9#:1bĪF pC c՜9jRy;nC sRSUN{'#5իeɌ'<92v;,T)r!nQjv<>*E>v{^5KR"-N) - Kr%SR` B\;NaMu%e>{MSqi%9\/9i_Dd hF3 jysluV3nNFJ7NơvlN0nΏU{Y$[X'Y?hDfhnGq){8m u4R!`~.ɖJC?$Ɨx݈ bE~x=N vkOK{/„%R.3׷z)mqܤUO6M FuStI3G&)I7+bMNOD"X]>f,{Hu#{6۴ry܅N`6O>oŠ '`0;7xN"Rرّ-F"V>$ՙ5#D8 q0I"^mw _J?Ze#bBE"?㳩Wc%;s5?Ahnq۷$'5T3$jxnTNZ8mCx(!+T ףE⛀ͰJ͞[-xeFS ͧq-6ZEoP)C WnQ5tƗb"aX;D+ByTĔ~S2{ [wyխX.i"n sqO+xjS& % ]Bܦ{m7瑳c_˶~\j6&<>s,p QFEXby [-j2S o9ogyAU"5x <&^Sޘ`jjc** 9xqH"P#pJ4I.5djjvvt)ofIJ0g 4l8lN7pCw 2.\ũj}j¨`m J  1(SiaR%XJ|. Aӫ6#>DeGT{vEO)5kdHHpJsҶ{%n!` -x:OnH(X_+Q+aLSDbafUՏ9lũrf>^ky2S1v8 HO~`Lh+qL{Х3Sp̛=ޓk -yԷ=V^ris6l]Aɱmn3hR6?=^ q!+eVVT@ UMsWN_̌!P^G B(,+=`\Y2v.ҢTnu2O,%a:LqvrϢ2'p9?fQ,"ׁfsmH?%Ì>eCLUO)E,`8u_"MC(yQ@~ui#c~eJ)ChH3o!#S#8XZyES!0C6J6 gD(\f`h)^2Vfb{:TRCnH4?f߃^)|GZnbx;㋘6AvWoRmK1G 1Z;߯1 } uZTMfΈ sɩ{%@=lã.2܉Ro,Mc(GF~22PK X59L u(_.GtʢW|E^;hFx#G\:K񮠜$:GczCbWAl"[Y!fV8Ez6YZ"8<یTU8ѭ1CS-Kg}MۘKըd {? IeD-11yN@$IJD&h;lQH:dp\/ꔤ0#=Z=oުt55oVFMK'e'И628 &$it] )A4¶2EzbE/0y1[x nrM RzC2Lٓmm|f9/g`8ܵk3R*,]X{ SBec:j6x-~/Yc"ftiL` p|Vq5z\8b` >_Fwhŝ8 L7XN";Xp(9Vb{d -&0\/2:5;&WTNuR9)`w^BnHbxf$RhXf@gWTFHTT\=]r&LYw"IS LO9vRVlʹЮǐl ح"T(B䎨gc"H0%vpJawI'KܛSsSDs0Q1ȉY Ez'sڃT^e9b8dE[ "FOĺ Zc+2H1cjJBkuV,@n߬))10w!˭^sU3!݈H>byi,r/z5kJFɑy0ҍ\qF+/ Gp88S;h5cHJZisϋ:ҊyP'5q d۵" X)ɫsqCG #5c1v^) RP2%E'V쒔43mG߆:{@nH95)>UWFK˟J[Cs`yP{sͩ`i,qx#2hMĈ3:9#UA4zEjXCW^pz%*Ȉ׮]P@Sm?nr-]HA-0q_ H7(fp)!Ÿgc/^/f"^C5s`ue"MY9Gn\lQ: w 4N)SP5h)Ênˬ7pjS pBjN) ΥLӖr'x>QP0}XI)'Kt>.5X¤jRwW~r1tTq!Cs"&Y$:U O:k(uۺ% KHs$P4eG>x)Hv[S*`\Qxt;a &@L9eA 8D0qp u2c<+~1̍c8g2ڸ܎GKCvth9`uu$pu ^=?v-7st͘k„ cwȔT7gpj%3J!nׄ)&-wPh vN -ϴknSщF ՠkV{jwNthSFlR5;%T- }ʹ^饉7&քbK\&4xswRG#'j1ik?+̕-Z \\SQs{+F Yy\t ̼Ds * j,;e4 ~W]0*NP? kn@"$tL(<_2;(mqASOd mow=PҒ7z . t)JuIoW?C&zJ6^=ߠ y>+CQЙxC2mv&l*sʴ{*TuhN'BeAҜTz}x58ӛP)ak\FB2=T.Z^0sׅf<̼VtBp+ȹ>RsCsK% 1QvGQ#2q-f|PiFG^PBrD̍>iYcZSxNksr1o:UQ'%֋:I[rs| &T~ƉvAzn4/.%R( ̧1+BP_2ܮ }b—f}a >2vweWRӜ<vm xK5%HuR4eI[}lw92+ lpͼfud*c8=ܨ\D![69qO*F ./ŷb"H lV*o(YDfu2 'tzw"8iF'AL?HKcha8Y"**UlMHfuKd /?_d(MU IUDH쫚g} ?3,"WշF[ )Q oأݱx!bZ {XRܞ ߥ#R3IWqQEI vw*h<>L7cK|]\[Z>w7GUGawD?BWkKCǘ ST_o7eο gw9Ӫ$1͇A}`UGtDO X 7s kCkRW$N&-kv$:הF0X}sB:hqBIOi(uYYt{p?hFS%Gs+_Aoar051#-.?K @~|]?- 1Q8j",keɜtQbOpchr ^=16A*'[ 2`8is9tOy9?nq+"IWA-$d3<+ \7e~([ 4ڀZt6cLng=;C-k8k.P.hV%GQiu pc g%At@EyV~YEI ݧ d{+B 2F@KV0JD9DܻN)zׂ g3LOl9 :L Li,;APPxwBJ`Έm֛!LO.F -h.a9gq( q(f{_ _, wuK 3A\sRT?=}rYۡiu_fȴ$Υz ox}#cӉv{<%pHg 2L2 =f*OR{J}#<Ԓ5h' '_q۫IG%Qύ0>p8 "?Sis[])e]KZbQ_sGD28^P^r\?8=J /o@DzRI1wCd]RØ@'35%\юHMWmɁYF(dnh3/\؞`ig )$ x{ U/alc L-7#ڏ OL7d4y| w '*^ 醩s99lSmK+~[|EU;03 Z>*w#R;g`8=~U)o'v،ߛ1DR!:P$I.Lt\b9rhaZps X|s/6yô|)0ȭ L}Y_T6x`Rhxu;jz^BL1ιpt4ˮFmϕh.^L^_Pe.>kĎϛ@ T_zl^ɢoI~7:f7!s.]ETkU|E`&4]0_WSxܜ/aq:W Pz÷/YCI $Dqq;EVT\\!;5o)Q]S&#v9ct\\̍u` {,u*Gi p>0w.cءo_W(n+LR*0wg\ KE,Iu @pC^aKsy.Kvn)D;3 oi>v3y?jWqK咒^jw1 IDATq7Ze0p@@JfOgpB30v)\O '2ɡ9TfF~t,y߽ }U/} Jsc7 %qA)+U袷?kq=_@?&}/k~I,5~bf5^/tLgskT0d;&~ZVx `[b=頞gO1ߥʎϕ(%i,QR; [bn&!z $vGz0Bk^qWfpxW0w3(0MDp ߐjXA2Օb2Qepaۥ>]37矓f*~ElM*c Oqй.9ǢP;h=|wSY'gSi6kL!]ZCK2\ A,c{-=f͖ S@juvN/+p'~mN 1fsl38R x_tbR%^͔N%_ ō^EY.}`0ݨ_l%Tp<&x!Knv3O~n9׭(jyKÏ(ybA!T4Ӛ{T$1 S!`rthv$΅sDV  +1\>T%훝۽2\5K]c&}9hZ~]W׀ P:7 S!ȸ^Qa伄cCK$Vz 1n ӈK/N^cTR p=[??jR{o?-|KIO~Wb q-ίLnHN/\y*cm+6ī'9_`D'pj{ᮈmbǎ-f*䪸\upiJc*$t.a|U*wq[PS0ʍefqIj61X&F_p.ma4) WKag`cgI[R{Lg.,8/p 5+Ș 'j79kȜK4Nk(ظ v{H7wwѵ$snpO)|ELSg &-ph3QΚU&DA69$@oc^zIFZ̅~RR}ȡCu~ /CZhLi1 Hw3+5qW ʹACX$%cW|o-'lra"Sݦl}Ȕe.zSX~uоG4 }8u{gr\98c3((\I%_\ڗ s>)LZMՈ9}_ojqzI^Ha]mPi;eQO} BD82*|c48U}K;>6QOnon2 nMWctB-G4Z(; gHʐrgm 1,~쉑0i>ڦmV J:%)g蛊vRBG @;0x]EB-1PQ!Vz5 KO;^obi36 L]8-`0 *cj(ӻ\f.C +p&!!HqiHtZ ƯO ϸǹ2?]9YbXf~{P5 Nc-[<n [\bm*nlAG3͹,xIkunE)j2I k\(izNWNZ#d0ﲙ9fLiK.{k*\$&tS@0aQ:>7QR W!|6v~v iM6רq-49gF-8e\AHqo=̷3ܰ!93M9nwE"<#.Lo(# \&b]fsr)0G]%<4P9ws-BsY0K]qzeD\Yӗ:BV}`d{J0- ᔸ%g{җ(n?-x pڋT>WT:V ~ C}EqEs=Di5~mnF@&,2M]N=ǁz\dJ˜ʫۿc2lvKa{"0{!805%N; ھ-a%2(gĮF5%H;C'!Q!f$KWXO| R.Œ磨klEv/h5;⑴Mߚ`=(9!Gl^**>7# L>R|]AH @@0|9aOf?蛽WUzNBlh[xAcF}F%u=LC1s "+x-\hBɤ%E /vHl(5~@3wO]=dzpZEUR`' *"_ sCBgKh̒is@^1s.rW5o?V?lj[S#/OW^TA?Rߵlxd!&Y S)?©Gݺ;cSɞ؋>Y[Tgb0S;2gZJ Vg8Jc+:ep7mw׾\,U%0O5I@nvdpBj2pAX JdBu(I _z1LytW\59O&&¸*9WjRzHͪː9ɑ!ъ[k(Kp%0na+T!$#9'&JI&-"!;ew<m持sJ0A6{jܘk7 1;-7)%??G\ҜO,%E(;"]4K`Z*E19!)[z)Ci&;s:Z5Czk~۽_tTdTk1L@?0MX`A\U,4?0Oo #=~bGt:zo :σ M=ɯE108S@~1;J9aњ`j8?g5=ZwIb etfH|Zh|"[¬r'EL#&:2 ͩjN2]?*~7PWHZv φ9 y۾{kX2Hv65gvKrqcA3)#a9r@O2 ݁2co(|b:CоxjWmet&ݑR9s)-kJ=^:H)Mn~]bvD 4LIk$9 - L?,8Pۆ]F !0;}j1mxܘqO",ɮE 8%G q R. 4@sLCBaས镡#hc1<&$RUW"Nu:ƩZ48=ip{rj딥Zm3&5gRĉIφH 2ͪ*}GWwgA2J`zQHھۻ"q{?` 6ql pqOdϭɱҋ^hb -hPsaZȴq+%[ CǙÇwʏWJ/U}-xp8StՐY vV̅93%Q/v8h'\=tحg:-!2N5e Nu}FA ]=ޟG^<${P[i@g3xITwI;*)a9hP<X*Soss%QG48;YԂf_Q;@qK_ր%(|qPh7Rm Rq)΍-岢vMkv")kF{$Vد/^89+xZ%F~ZCdCTJDL蕑fK 0!N[şw{o.<$s3h6\DUTw!g2EPBi,!Ev\h;ud2r;(KQ4idzK@m@nC$$C3mIqi}j^jr q sc ʒJzyKoh{JPMʚ'݉9SU$Q:a@H!#xo-~\mO*=mހLMn*9aSrw-bW$k@Kh d=c=, -9atvDkSsQ QD)^|ע=!6<9*H5ؾ[슔ˮ@pI 9a`ODwמS0]"4]S!lHT,Ofk/[A#ҷx~U@$4mF.8y K{׷wo nvN+[ CeҫzKu.E@ڈX*Y—R $|t%@`EldTmO=RWW㐡 ؕt`2#yD*nl\)&{R)c)L1jH o}?G|wx~@ X.M̹B$^mmDS԰ 5B偞7ZgkIn ,Bs CxϑnL3nsTRyY5,Fg {]GL;\صpVZD"YbvBc3C=~[<=DqfN}(S 4wȨiF?$41Z%>go7:/1ʋk0u7Ҷ4sh"n Ypi)?`&O>05Ced`cgs` 8 c8ϙ nGy\x1PgBNPi]j6W"R\ẫT&qFZ:Τř*0þBQFYs1ISkLZPѼ,Sń,OomğU*P_0J.d?Uȏ{,\G&ʠ(mT4O:&m]CK`\q')~9z7W|C z;6ݣTN= 0Fǫ^]C]mq;f}#>Go2{TCiP{TV<Gm M-$)aXS!=HVsM_Pk*xB8x2o &껣{W]6=p~`AWPqoBa4*Hs~bpl%1"3*`,c243 .O܏—5ʉ(ઇ1Rը20shwA,@u nRvd=p$lmdÎ f_Q}EB ~^}(PCsBDb'`H]f<ڳ̜Q.<'~NZ\s j\KU%SP 4=%s];KLTjÏԷyIOO1rk-≓maHd!`2gRrxNTf9F@T0_8_pmiuv ~t]6!1jʍ˧YӜc)j%˹ԁ0E5靜a"kn0zET*U"5\6q}ߌu<h̰כS(>h%ǜ70KjVe礅s{J TP C4!oy'g b<ӎm.fV QiPQܸ ڒ`6qSAlϙ}v Oٟ@շGm65BRuH=/\s΅K sc}+bmuk\Zg= 6ͿknhNKDgZL*.d!p<"ur{dOZ)Gb8s_J2 +4f.9R'֚B0(ܿ$C> sF/<@uu׵0ꗂ}ZsƲ0NqRSM2]6k0#@uOgǣ΀u`)msD>Y& @R2'NNu Pk<ݞu/f9PK(M\BϹk~OO6Ha`9Ro߼68lŌD n`LG6~){l9l }BF99%P\22W/ @َed',ŀ$jޝgp|jG#ډHu"[H+t8sC9V K-s% WdN#qEk![~' rٹ$MH lܹsȋ/v2j)o8b0){B]BNZ3_gIUBd i"$=lGN $Ŵ׾9jWsbMYgY>>rp.q%&9ݶ:6m'@* 1wnVwkw *9+g o5ˏXc m[ ^* %BV8-UszY*%|?Y&I[ -XL'6.u_./;5IJ4xtI"U(ITѥ;,܄kƹLaKzRQ ITf`Ƿ{Lor7G@|I&K;b}SzS; gCP6`#xkX,8\> ΅LWٚPR!@ + q95>v&nW RB ȾBq*!bk: ;De%g)$C2MiM*4O]jtGyk߼o\Yl۰/\'\狭 %D|;G>掘jo6˝F<9dh.@3&QdVy\&R8; Ź Hۀnu'to|{(%C !{w<ݍv~ID"P _K].ȸq/Mv|!aw]nR3INKu3f9b>'i'#w& [ 4e#єM3 g4- ڻ3B{f3CHē-=e`ɀj/7רP:{{p=DTsk6eW7oX2s3KJô$TPk)]rNX3ͷ&)t$ɟ5}\-0j?W)3@@r*2v,/ qH +eYvM)euҼȮk3m= l6lw<W]`Yw}U,%ZNX/## pA=ՁAd;blb8B'4ˀG LTtxկq 5܊yet#n$TT#.3bP!sԹNS蛃6wxLN Zds]ڄӂ W{U ߿ȷuf¹Io3zfG!5'If2$zt8[i]f eA4&q,\`HiI c潜jdX&^#̉Uߣ?sQomծ;sB\jsW?VGL;vJjD،2C|o`Kzs toI  nlZ-[)zOʉIeYPmy&f9J l[/s>dc`-sj:|;hs ]\ {H1iǺ, {G߽=\&% sedt-l26.fxk!.=::%sD~\` W2l9Oy\`a_|[eL!#f:)kbW8ջ'k7A'gYC-TBD/96zho8ʇ \!'"rw<`pD<4w+{@{IZ]>^#23 "v;tt8 sy('j+ -z;k75bi+yyXDk9_{B8 |Jn4^©6sÆt"(|b;:ٽaBz$*/5샪6nW6ߞ@T~4LqC76Uu/Q}Bϰ=O\"vzY7 у~0xa=$[HA:Y1Mxs i4>{*M鏹ϙB2zC\DK8e,;/#̶ty|0 mڋ#zbB0tM^C0MJDp l?oU&w=1$;6!ZXb Cv(GS`Cc5 @-3b@΁gZzΣI gAj^(1SIk-' 8?-L3VDrЃ8O+ix(gڏ{w&O'8մ];79bv!JLhAOO-;=C8)oHE>֍ 9?@0yQ$U@{Q`P1T|Hy`h2\ԝcgeg }a1se!g#|GrS 7gٕ"&i #k鞖4sE:+|ir8^hԼbg #}-1Xƿ_^DzO;]0nR`Ω7ͯћ%=嘻TP<X9/~&8i-vjQc:7&efѾ7 ptCVq>C>QdTӣܬIs|2%,eqotS5c(շ.36"agNl[ LJawIrh5= a yӊiLRg'@A2ɜ'?wѨ+OfC/[Yr!df'C/( +VhgN`{f4%o'mx%3jK; Sޚ.rz9 RX.Th KC19{ZPț [plb7Ң}:]bBqnì9򘌎!. Dk#WS!|3d]2.r,2ΰK4~5^g@㪅ē`:gOuKawOwK!nt#-!<1}B2nsVtL 5 "+k4^^|{*9eg as3S6^6#s̵I,>bs%)F3N]ܹ9ۯO75 [ N('4?8^D:YzQrzcОBy%ѽqؓ3'W; CuUxol,f. 6 ~^+(1LN >)ND!$jTdL <;Z‚S_A<$;2$H 3Ê]AO]F޼ d@?Wd  !,rHO\(ЖʪsN~ҡ27o HwSf#sa:5 30?kLs﹒זLX%6}$=$fQ.B9Ijpw.I$#Ḱf%rN0Lv:f)L3:yǟa?!@eHMͶwxN{+?zk+h~ \hid.O)"P 63+0#{  "uN|sEKir(茹*YH%:9n-2v+ %(9+F:@`$;&Զ.ELv4?E T|9`&vF  9%Ss[҂a1ŧj :LK]K^sshأat9;1-0[lgr,:W֔ZXc:̚^48Ml $:#&ʀʶmnBQ:||87gN] p |Ks,;FR V E[(`oi!>PҚ枀f!^O |$&)'1u>}f4S ˰Rorj40'qPGau?F @. f`2cݍҌxiȐ+ lG2L4!eDNcX_ e!Q$l>ڍ35rc}񀸤K,DF+h~BsQ)z.)6}lcjI|]C qQCl 9KhR.\@?W _ osqI.ϱc+ܶ%f{C|5Tcyӈ m 6rl)YBTYK'x<ǡ\#D d.1Lu:t1dHeF3kCIˍ(`e+d.i=τ 酅9ɏhtB{(au{7H`*un_z9OǚKKjLfD_5fm:Ϲ^,s&̀G)A3wSs6p9g.PkМ ij!Xd5jMJ:cGwpHB}M:w I|N+O S0MYM@^Asw":gB8v+D@'Sԙ/6,MB1ʹ"NR@ȡȲseK(Քs@ %;ɥ!ޚCl,̌48=ȅCq;:]~^B4dE΁΄NN  jEl2#nu+9.SPNҔdcFf8e}iSCg!N:7 ;Q>|xdx2z I(+J)v]=6'p f1a>(UV:#O䀳J>WnGK,1 [i s]C)<Pb{ݎ-1λqA7tx;ހvm>M[%W975n% Es FU%Bx &iQ 7,"A<1B sNcLָ̜k H'.Sim#K$t':o1L*1YCPY}pjIO84[E 3]l^pˎ.+bv^tRvI53~X4;'COا@TN6nu;ބ2yY`sGL'IzN0FfP`I 3:$[6|%X+h~RK]I `$ԑPg.` 6 Y;l CgX3sy.e~R˹?Nc p#CgS13 {\Hi{ǣy.,."AhuBacw3="#Hu5 x@zJdn,O:hs V׳Z.#vIo1>8b!$pٸ?7oL$!b+mq<'0 qKY!`KA42ǂX] {0-*ǭa=ieyc.#}"$d&̱O`jG @N$ۦu: { !P-Ì[Z\s1~ovF.8Ts ڟ! } Ђge; k2;zz]P5^Bi`E׉} 5XM2 +{ä*F9pTMOFo\rI+%cFB쫑Q2$~y>59?/ty*BY4?6g\ko琜8ijP߷#P`{َm5), Z;B\ťK&ͻI| NX5W ->lW3ɚπ~G=to.LFds:-=R&4ѲDd G%4(Yİ[?PpzM8l 4Z>&^AG\~vN #;Y`fݐG۞lyKĄ{`2xfPB\XYN]={2#r~w`ZM`55_Acgsfs3NZnôϕ':Rx[cB{5sO/Y~aVzo҉=N 28{b3fJUH' ƾ ;78к}20n-r:=};bxNi1hsO֙{O lj8rwbV6+EGh yÅ a'`#FG\ i8~fb{ i,R8<'8f=#0{JM31ئ q{䁢5S˷a 1&Kz)'? {L݈xNe0<".{Ĕ{!-.ԊSt MG=ޠj(7eN3cB@s!U@+_4ViOE <= }&*ޯGˈqr;ۤn}xyB)З:M^gCL dL¾yM쉙1;̾ڐךc\}xzV'&?bHq|87ᎎᵞ3&qRj-FӹNu['Dezx5ԘNE)wuH- 7kЗ[ۼ'>ߑ[`&2fC@|~x~M(k{ ù:,; E a,os}lkL+ fj޺В3RNnlbȨ;Ÿ:bbʰ q}h%d=3{ڿ7ސ*⒩{b)!!Vðז`C@L{="d_70oIpf10:I5ٳgF iK%Ind=>1:]c&^SxyS w HP! \b7w`p?P|JÐp}GH=X +',jdaX'_\Lu2)fs؆R`B̒@`lm2,{zP|ʪxi?P}WyQr}4D-3{k0mu+i}{9\O scM0z sC B 0 ks5nF "vo) ލ42Ps% trVop Yro(#|D\ހ$cZB vj⟝> ͬ"PO:"j Kj0m -XVHVٙl C˟Y]7!@ 7)@2; \kޣ!#8l ך4BB2r3(:FSi33!xMl6t#uM:iEk(q)=b㌞@1tu1 q*b+C l9) @rOzq07Xu'0[Owh3֯٧3 z_ v:>!` 5O%•14xhd6FP{q;6zC3UYnve yA -aqeF@+\}&c=rl,+& ;ro{ v8`DQk-Gwjd+pUA# xD\yM="#3SPP|e1N$';}ֶFOtUM9 Bv<6$n#:m܂CWpjG~\EZ&#vXbȺ颡hUszsr_xdh46nJb:#0+bR<755KOypjqg &| OKX| "g #f6," "KE=jNj+h';1Ptw&= &2 ]#v\jOl@-\`!Ox.P-䄘"$ tML6N#^Oٶj^P`G.#);:!v#:yԠ5L F]g5\Ѣ .nKn+\Ow^b9 y +ĺ#vjHLфGFZ>B55% 7yɛ W\ @CLC{ Ƞn^ 64WL*b,sklp Yyy\Ghg9@}N g$oKJx6kLm{\'^\4mfY8LF*͔Sm}3l: dOii 붂溽E3lP*)L`i &ˆ%v&k5]4si6g!]ϼ62 nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnniș[u[uLb R|dczmxɅ/9Vj~u[G3uZ$M9%2MD^w08hO4O>LSL.0#@3~yƾ$˧4m3{'y{'bXI02J`{8bkayJN47a' zpq*S,j֘_Hsoqe0<w4Hj,tBJ1C=2Ct JS1tT}xͨO 0sCM4N$n'! h~ǀ9E9݄αrKl%h.}s,ݦO V  | +' |d;%k~χ:HΤawfmJu2H,;%t/- I-,C,%I0g @O8Ot5NZ 9:Mz E$eD97U@g$Gvr+g1sԁt"zz/M21"1RW|YxQ<=qOfo,Gۻ> s\DCPOPPjzIScw}aJ.؄Բ0{fɪbn27V^#(3֪W.#ly9Ms0_&%$iU5 3v9'L*snfbU[Jma1XbF.9s` ^NYtImԉ#|@]C=7 )wIY hfRfRybadDJkh@ 0; E':.*I.rmHMMrowaN)Rgl<BBp)3TN ])ERM'M:Ծ pMbHVN5^ɹ+98am$G{.UY Yp*!d.7֜JEJ.NaR8I!x\lf;gɱK(lcN'c}G1Ozd_M}O1X`qp$DBQm<<=`'Mii!Ј@^1 {Mewjژ "khgjy_J*N9r#t8ĝrN-(45q`n9FT)4إREr>O0iK R"*B6BCTM8҄vz"X F  kSU<p\e)"SC/BF(3 ABO D!vN2="?NjךB0Avc@Ai`H/Jw#\w*h=,zœ OsXH]g[_.G|!2K>DX'"69sS9rwLE;!<ϩbb!QU_m2|)nEp1KohaoC'6٦>)6}̡ycl Zc<@~C`X֖P1Ua Sh{db |1?&D0f1G F ߀)^7At}D7|fG5ڡ%),3q4Xf9FQC.GI齩-?DA`LͳAyp6JdlXYj76P92mxDcn8vqe4j lKkۿ_ 8"3'S@]2- ع]=;;ˮR5#TاfKy@5e0[aNz[(Arɍ|@:14n8t$͌I˜tiY䍬/:56EQ<ξ~gWs-v3-13|_Nuʒ@6O)Dfξ]8C8F1f@,B(")8~aLxۅ Ls;kg]c`CvFJNܐ?`o@D`khO% 羇mfVCڬ@O!"0`gyWM_sP'X42\jQjoqJ*){\ h> v{>9 3±}܎8 ɭ~WKNYLvM9x_YWM/ڀ ?d9AdWnvj=?35 !M*i>.egjۓc h) )) YRTrs6C 2E~J%fgyc3Qgͧrt.=d,L_?| hԔ$3L+ ;1Qz:yz氁*sBMsO@fߒbCR"~)1gP4X7m̙mb7,&{L9G]=Ϯr};r 7Ks}jce`XÍ{{w{|z㒝M6L=Bs IDAT2( ^3'@K'M0Q(SK, ӵoMjO@>9)9}w9H,5k6kϓ)vܻg[1|fj^7?>D 5M/#pɔf0#e[3č"-K:cNc(@Ї̡yu̜X83n_˛cxI{$`čӯ}bp{iv\=ϟ.S)P}OSy b (TX*`D􏝳vӻwY $.R 9\mZR io7G$Oh[ϞX a"yekzfl_"3읿n>=gTX1sƘs" ;T7P9*T>Og7;Y$Fk]?b9y!xNY hn~Ʉd}>Zi=f~&oƌsW{sy7/ez>(c:`ha9ιh_J2eEEՀghGGhOd~0]7?|msgb.Enb*&>1,@mn`9Z(bE"S3>5:L90__ yOvqZKKL3.ӲLk!cOT }_te{tuug-"sy5Ѵ>9Nٺ,ۊM\ƙJ,zW>+h˵d7>__WkQ}phwFH'd>pJ,3. 0%m2dohн6ɗQӻՌ3&{ꢱP9gCC>e07c$mQGwO?QF?2?ȶzOw޿ ɸc`?%Ew S[O[)gD}'^% &_3/8ǿdnM2Lrs*}Re'xai̫&,j#*8I2z =>yM>jعzWώ6mpuTm(%}(24%Vk(G9BߒOI/tm rDGwq043̛Ȧ:͇@FMsvl Y\N$eHp]-mE!dƗf0~_n®M̩M㈧3g6.ۘD@mRwr\*% uܒLJf/ۧ~oZj>GWPje zeYv@NL"a2f)i?xobT k3|?`[{t뀛T{Θ0N1maqq,!zCRT(j%9g{ &篼g8q8nа۰7HJS/deYvX,}M3_J!ylc듒)=/lSP Lc D#35ׇSId5֐Tifnkf9Ǚ`뛙G?c@?3`fz>Cu&ĪwrYeS@2I 4CV)=ײVTGbah>!㔘dιN:vi0y_g{|盋Aq!zK:-TbN Rc}r85w2h&a~ublbhr&6Y2s98[a :^8Sb>slJoM iK(}_k}V Qq1W=w *hO띃ڌw@El+nzg_:VBr2QCIXrIfr'S~sPs,F;g~ڔDDf;غFuΛGgO1 Cl٥gEh2|# }3L1j_KwZ9 1Ԁ4B xP9>֯)k_;9 ppz}f@~zPhtIkpq38sekc?X !y%hlGwQynzg OYeYb0`0X-%V'5k.i>Śs b? G>!{|D߭f)JFmb&G:]+T'vOzz=;.c2 C3Ӄ=jrQΡfQyW(.-c2%2I-(dz-pJcBa*UQ1)x_}X'ȰiV?tG7[/}fj[NJ>MzNv|2֠O:"6s = ?V ?= 3;]wlk>9 Dq!6ZpAczm~c Tb6J`5^\>覩JD4hs;|VI,'Mk :Kd7<˘<]VifF{0bfd?$z9wD $cpsZ LS&{%]b.(۰wX$I)%r4a8.R.fX[&30cu @g+00rc0F Q(̰D10eƔcf`"ԼIy0t%Tc}͘#h)$S0 op_[bV4Js&nn_B\m470s+Rp8l2kRTӎ"df[n_}껋Y ^%۪MH~ 5$9aBh 0d*vb 9./vf3c1@8;bƈ JfW7 xmys93fO-vM>G%Ki}8>x=4ܹm_]5NJ$ɱbx}ܗG&q鱙SbR* |v?4=315:&;QK"} ,ۿC,P?_Zbx$eccTco/MbrID́߷)5X-2 P% '[xo!sF]>KndFYmhF]piczjb* )7d11Nz@2LAd)ݴ[l\)~X0Kg4]%[j`(C CroĪ$VT |v̀k@uxCnBpMo!E1W <:D0^#+pxs[J3Sz|NkQ)+T~ Q}uлisDuMnbF=Ї4s~Rcn?\79umnAI)?-VcZԀE==j*}l0%Go%  p15dp:\q9;m I): * g++\tXB|l革m@3;g:8۱tK ׷)h=f߁&07МE=bnM@l[e>X%l+{BДj\aȌq k`BgўwP[)GkdVpx-PsVa13=<.J]Wd3L3׾p( mt0[aHQ=a!=A3ۆe=)v-`u >`9p7xqP,11I!z #nm8hE]09bNmDSq#w>{[6NU_!݀8Am.m<»PӅɔc渇7FVZvl| r`ɩO>1,| 8~9Xca BIL&.u(򻭛=?;_01孒3V;o0< [ǘL&Z4d!ClMUUpΡ`sxx~pfl3P4@u[hvS agْdS \!49(ץ(;bW?Jfpos;;H ȣ46s(Q9 U# =ř[/M KM+0~).v |h([s=٥GYZkQU5gW5sѲ|6,cl¿Z$iW"uːtǀ0MK0]"4X[a45mj/ǎ 5Y+3`A2 }X G W5އ4Mo X z$!>pCSӦ M]yaN]e$[lAu sg+ɱ\?ptIe/bvHOdrl-z33V isyRygTǟxQOOh׳ ]K+ dd!he`ڥ,-uxs3֡Bmc (*u$0?(2wIq./)ZrD+ߺ1<`0pMLYaxnΎM9|ƻf2Q$^ؙ :)a+`nڌ#f0R|6%E>UnW?&noj^ff3%͞o,۟6oZuxQKlya^Rr!s5I{-3^JXnDp \.:SL̓y`3g~2HF9C ?d hW<垙[6$ 1M74< 3I޲GC==B}p<_ c- , 3HԲ˖Q m㪵USj(RTO5" yp,Y{9~."*_X?`Ǩ9Fلa2s%0S^w~!j =(jM{.Cux|x (`>~b݋Z; X+gg˼K"'hY궬t@oo}A6>϶KII1:f[@K%Ck5G3dp `Xb2Pl1S2pZir.Mm2 9fNNCH靚iBvυ]/ Db˰.? M>d}'.omކ-puV[|rBjjH{O \$,L蓫.$GuX%v 3p \.乆 pvהpk\ώv}X+d$@, }̜)Jh;ehܤo?@v hxLnB `N*ay뒷@2̰n ;`Hq{і@, 4)bRH|%r3)+5Fjp{ՃO.JaȐŶAbJxs}ئ2O>ag7 Ouu!M@^} WkOJ ă$iy!pk wt2f:&5Ljgk`M/4'lea@Čg?%clp*u۽:2`ah|ČC822f T`ԁd\#@ 6&L0P 1%K6 _u@)i~0K w`2->4quPR`x}>ziYu+ @͌}vxnuPm#BypY[p.A0-L#nrύ'gtrzg{=pa1# d-PÆ22\5ݡj;g  7CǔtK ^>9@5͔9IA1 s*c!hZ0df{?B?ۍbmS}؃^3Vs("k}63J0m]c:|dVJ(c\‘S,5c=Ca5>_5 -ka #Bg`%+|h@(@$#6M^g/&!SUHsJ IDATdCp<*@t]WI i 8<,rpbVB_J]va_c{h( LKƐۢEapo㛰8v485ȼSc &Zn#IED0. ܀E1A3Df\M_ 45}{*3q`w&ûș dSgG(3kXNTZsF73|iپ`8K.trxx~&1 ^J`S|&I2#iSnAaT+3yU1 u̸/sOQP3E a ?0; 3$Evx&dP.AO#Pk}a N452ro6\hwn6c{Ý;-U~#=2u7i,) Y&Qֽ\xhb >Xj˖%,3̰u gSZvڇ;J`ayX&_}yxafqr_y̖T[Rk_s5>I^9%DGIB C`Plbи/6[L8qU(b}OW-ӑR)[V2l`b1ճ?l(f$JlSJqJ)OBϾx=vxH si4Mr4;V@̋.0(l #ôӵGf5N;&OP{y7cPfkpj|0(/19eZvK !Õ#[`_o$Op z0]43;E}x L |< j-K$[v,:m8J-$IC:*|Z\L;|5~o:P0XP.+斧\ q[ۆ!rn/QRhi21&m_nkAhsHHਖ਼=S:& pxO8'>@lnRzsΘپQ1 l_v0 ѝ6pr?'l213^ոdR;&P*}t^'Q+hp< d1Ä5=U[C^g]] S!ŮF €x ޖ`9$3B>HSrg@#a7e9 0Md8Vm"%y:Y Ɨ<];}W_Xӵa0;\4.EKcjK=-H/Z5vµ-.$%:Y016p+3#\x, CФL i-=W:c^'uX:`ZJv <8f/=yF/}gpr٧a3ާ;敤ssY=fƜ%49߬K[fx՟џs!\MеP#Hay8)˲cem0,o`-xzP勾٩`m#uګaϠ1 ,V-)7IhlDx8tWż"@LsdpRL 8Sf73ȏs#(ՀXr{[jԮ)^N(2c|wQ0ΪT2h'R#_&9 "3wZ1י͓ rGK[jRne=ntD35,r5T-tM8TpM@mIj5'I^- Β7nF`Hvx-:4t8mJc-LLsi`4SRv)2LZ5Pgj̈́?ĹcƳMf2;)݅S-S/ +~T6<S#۰|xaVcDž;i%YޝcW7QMOKILʞgR[_hP5w?8.[\``l@ֻu %V`D+L@-!)cJlso:Ϗ_BX8Xh9IAh9w#(@Gf^9 \,7OGlPӺӞa>se]𶻨7xtMW]߁Afh 19!unhL)57<89uq%$?e p2KRCim3ܚ;kk"^2[%3XX4н} c;1vH Zͻܑ<34,)P[4 Ṵ̈[m:ftLvOVOTNު( =%7ǧL_nsRFĠpl]&f]^csv5cN*,po.Ф0\(dRNNs;;x=u^!ȥԒg 5s'Lj'i5}0#C RX&Xv<}i<:}ohZsأvR4'l1pf8px uRe*>C*2@MbR*]}ץ#e>HqHp8NkmAG!{^gL1̾lQEb 3 wVҳR4@ߌ(~N(RlK0\ vo2bD`3 6)Fv>l1$+ M;D߭^aim^vfM[.׿ʆ{8F\R3w'fh:dkVu $pY^ڳ اBc)`}s\]ri_Ky"e3DMo~/utq鏛޳c{)0f9MC|b~U!`Əo9fxˡ'eY/c׌cX|WP3:TreX'H)`Fц"`$7PuW:OOpSZ@Ig9RO%~ʔb KP3d1r (Ni9MzSzy-aVkֱ^n#n=UK4ah.X)\g&L_lC4}o8M1l;u:# ٦(oUXC}6ӕ',$bo ~jt:s|j>83v`u!6~3ճPLN?2&X!P,DaiѭEؤ̍sD(FpCR!N5 c RMvʙa "RS[-0>֏6 ^ܼt*Đ=s~[m28ST Yu2 ĘŴKVt^L3 I,DpJ Xw__^ &~'V'0xZlՊe >h34L/jf ZK5F8(%CAG&-Y+27y.1А]\>Z&0o0kMŖM:70o8'ZXki<1osKz"%Nj ͜ƟǔB it _}'Zӈy^ېas1-&K'#-(`M9:'jНS >C7ۃaJVb,y̭3."nSd2f዆\58Cټ^Y| P(FHi E*ޘ x ?曊whC$Fn@ jlQZGDŽ@L;*vm_qn>67$ٲVYg{Q 3kYhx^A&/Ŗܦa3 $ֵ䂘bƧ𲫻F›ߚMF(4 f[,\=OeJu)نae2'vE#Ž&qEqld A嶌z ]r@80R둚/%;a˾Tn%o T6cT)IK7 ئ =UI iny0xZ\LvHԁzyPKb0 VcV[ӰppkXE=1G3 a!m( \2bdG\cN9xQgζOkNFbhޭnX!04?o; \gs08ީ19U<|Zc9ZcΨߜX2ܗxIy#9/ C6lEtI]ml (5]c8╘"5HSdž`q$5ͣ3pm^zgG1<0ڋyq1s0P6O7~G+I@GdCop~{F_a8 wȗTK+#Wƫ0M{Tp=tQSwh6O}#̤ uyl/Q18u:@ϳߥ %taBsߕfXny o`[G;;\.`uZ$"ŁOq'3Lic 3%pqXRj}u|׸(W%D^ 1Tn 3q=|Z0|0æX RtNNffrb..LD.xřdp?By\E ^Tٵ-5Cq?q=V(leK;K \[/-Esu%Mi&2;`J"0NJckLkjqr.&=B^8['z}oWL-;-˄p iufhy5j2ﱳN0ne0H֕)m1570'`Pr 4r}`߄x7>f8[7@n$<[%څgfʠ3>`/S_m4fR=QdfsE ޅY1ǫ8k/3hR]вwǍ.;%hO8c#$''T./Wb ^J0 3j%I]0&@r,u>n= }NXg>KsQ2JmdfA^tZ©\]m_pO uЇ0ev8ty:+T|Q{-*OC< ik N- 6 U1O-^@0꜒1q;oJpP02֬谟VP`tXW=7I?^EXTpǁ~܆2*@F3?Gd&ڸXH"!#>'H*̮=O %BnD@6$V/L_| ɘw m8쳳.F @w5ql7'QUXw7r?ʀN ײ2 =L3b.%t7w-$\jΡZE2.t} S_kTnAfz2{'q}97#}F`> /S1A(!3^ g p1i=-\x+$qYXpU%$C4WR7}Sy3RʗuŷA+Ƙp֔G 4~=CpE*ˁWb 8EblVQNW72y[KKP:wnE)6lwܯbW- Z,}.gqwNmpg6lxsӌ`h 2Il|'W`G~c@VRY,kΌoC-4D>sLnJ)Ss2n͖HQ84prQB:7nj@Ix(R3r$HJnV91G[8#]9i>4N19PX3B/k? I J6|1:fN΄ju Wmv%NTB%sخn!lrhy/y-^%j9mZT. n3c# w/v Γc3̠-Z1ðR SX S1sGj9#"X( `IHF CݵPvwIh>3VCjA*[/ frdb]n@O`%Ui[`v _]]vY6ΰv;3^\T:ژђA ˜P\2x9䕝R-[d,Y~:fTw)P9 -T 1t,<K0ʆ+ ׌k,&hz;h`y2rFQ+LOgjFP3.':v̌=rƅ<삱 'Ќ; (C`Ao("5rH4"Z 9{j}ԛ˛ x[7rKS1Y@!CSrGӔ 3>L&K,} *2Qur}Ņ/`"#JFPS ī֌vlk!18u5uRF2Kܭwr-]e͌O~&'H g9?.VKxԕ@:3-tL.umR_ $cՇ-scƌłxjΑB|zW# 0a喢 .݆&;&AV #!$)k)-bWYke+VҺz(KbLw')_]0>έb}4shm&ƬӍ+tZ2kZm"ޖ*^́)1VF1r&!%;9T*UӖu߫$g*}cL+.'fčmϘZP"6Rq)!.Qt:GNI%-!Csy{9l(gQ<ir), ֫ZFOPX-g9vhQJxqHV9:IaWJ2FL4MMܰ3\Z: `3)>w&ך#*mޓA ] 6ew p~v`|5z觯(_'jn07`+h&͚G\c.?j45!.LNn@̄Ȏhn(KhvhMwq5}2 &mαNꗡ$uܩp8JbHc1f|Mn֤Rތ8E_F߬$u]%Z^/XRyfI7M.]pɳoJcEr>v1L4FKgG  DB}jX=V!o援x@83[* Аϊ5* L @ 3Ǝf8 Hb755!hb)!saEC=z,g_*\o p8B:4LiP8W\7;=="2k'lJR8}$H-43}g9sFiFRŽڳ*rw x$"ȓ'ÁkvͮK"3p@ b,LW7$i 1lV}. c}ݤ?8-dh%5>g8eחl/55Ntr5Ap4h \h5\Ɍi8%fMRHdvP$Rɯf| ^x׸ƌSNuL\=借Zcڰkqr'f]O3&^(5e$T \C *D{[9lMRY2'[{Ɏ ] /Jc#]r d/P\>- $dNjYu$}.GcNҮn6؍浗2YzSwHՌTA׀YzsrNkš%bTEQ`\Z͜Vh_{geaȄ:%b0 KNȆ%8Ȼ,YݒcP&'uRzq"%O(,(kP4<賰T TؽC?pwo&R4BlkF'6C: ,sTn9ljlmyPmȞ5L4%gM)ULSN*Y9X9Db'm$gq,.i˜K-B. ߽äzJ`p2#Lh *gc~%8?23zf'fX|Qik-y!1 ,=B1Wf_C׸S{m_FVXBX3p˵_yf>0WΙW89I3KF8ָ˔[ʑb63 ?whB>r["Z0TϦM"\/"fT^cOP`6x(Ys2Rcg+ٱ25ae5,V JL;Tx&sR뺙hɭLm(st؅L p!FQ4`}27I R%N3#㽜: ǡ; 񢨝H#h.;W \n- Ɖ% P jY+2wx)t~9.x3$ m?v5 >[%N5`wzMylo >3gr& pq?G.l(']^Ъ뤌 l%iu| ]Fm@4 r cݘ H[h1bMLL1Og+}_ L!D`Ҫ.^22(Ak;1̒InD CksskrhHrh$ nܩ\w yu%OdmSf +y<]I]4SRmJHqJ q l=ޭu³y̟q AK*M2\(bxEKM/α޵ +?a<18 TEv8V|'H/ {NKXk<,eD͡\-P7_=}~&sW87F(9Id)QʓbQGc,ԅrčyqMVRcö XthFR;׊=wp๜TBq ,2e(%@}d r*9(uP>R)-heLf5wt,# ̱vR5u(sPAʐgs ?V, pZlSz*΍~`?ܜd|bs0Dfx@>b`YZ^$˜BZ҆h1WWSn14yQ< 'bSXM識q#`x s~R@/^qOϩᄮ~Z5`Yr|fZlYfyQq&L2Ws|xn,JHo8tͦMHDj D2!e2DOJѽk๵qY9+F]-Z6yaF Ŏ1{ ~uLUq$gŗLkG,R#7J^b 4QL'e{Ӛ~is{!]2]PzS 1%B@״qxR1ws$-<:_N7h(K+Ω)#f8g+fjn0{.bPYM 2<εaqȌtWѦKfzcB̌i`xf5ƵtH4Mn)cވ[#RQ)NY՘%kؑ˿[&r|_fPN$kئy88[`.Tw5@f){gh,b]Q]bG%;xȃ̧bjC?!x|kgMw9Fֹ,Ra"w$qF.\>3;VG4DsPR JzWcUdHKK=.gMdPw $-ϡqk\4%Q X!Hvtt4g\ol9se#k$|LbM'&o>1h> @?af4`]:uv[_1n0/Fj MeGT Ԟ#*wwCzO a.10 PyUAIy咨]H\.4=g0Q|Ǿ^.S& T+eM)O*Gꔁٳcl@oN9C~Lf5@Hyh٦y>5no|jY6+-5a>iyִS¢A€zGeAc%m0/=ҥ@9/LXQJ3: .j>G`', 86kDrayʜY꿓vq>,'2I^lT/[UZSrѠٕd? ;*|<7fRbkf Ήnq"/͗; ;4k>wnSس3"#>8|+򘤴nJq(@`i¢$. Jʾ?8,]SILK`sC$\qeea;(/"BT>  iLHPG* qkEZ1'|>daZ`b>}Rϟ >MV(AeL;O#Y0̭iD {|0"s dCZ|h@|Nf9׏RS6g)%7\f*gm|!6ڄcwS\No)9`!%RмtgxrEzDsX5kkF80㯸a0o=9pw`Je?Pl"ׄ)DZ5^V~e}T)11x[_ .xzoٙe*IO:L`*Fצ5sVXcl)yUET=%LN> uC3Ue9 %rr$JZ27H;〴 ?_T{W2V0waN *!1ǀ/p xLO'0Ѥ]9[55yvϦ"6Nod8?CM='nf\3p'Dzȩ<); H#-dm ,#RT@lTmeH= Bt0 s҃Ք]-e'JpW}L&J:,_d*1g" IDAT`|RJ&\]Lµڮ+ԜUͬF`uq)PT3]8eke#`0ga`Z.4T-Bn7hJ;Gn;xb8ɭOn#QGn^Q葾4@_[NLM.kC,zB_욎ZP 9=Za&DՑG=?GbkS@Dt7e2N1儠T'P*ʉZ& ¼i_YV֝ˉ1=a>48ϲ3]z\n7a9щU^gx4,P=j@bw5^SsYSi1kZ@͛/jIJs3g('Ah19at*ϥJǒ=g]HV89!XsE)Vn-95S(u7uwb@7bH4D'y`?\s4V!Ҵc)ͣ >5,7EY9Lpb: )e)Vz\T H.PgZ X3"];/)rWC+փNyK:crGmZ37P}hIY y1ۯs,<=!ƾ'nHC28斃df0>78[;#ԶHai.XӴ,㴐_:YfVo5S1g ŭl}Cc9)GT }S]v.й }VH_oCV]3$vЍvE>3g\Ot)U׷,;n1X[DN>\e0c707X-dReF& OP,8CJOT?{.- Dan˶dvR-}xt4ܐ$ :sC:}ΗpxgOZנԜa] צ an0;`#נSeV <~4UH'Fu~i}̾OP+w*j$Vq Qk.UXsMߐR55W\(| e)4ɿD]vn!:clCb;|NlsFAw]_G/VPn9R֖%դ,rsaGU7n98ך8ZF+o  堢Dieo29A-#xَ xԬd=P=#bAp6uā'b(LARqeTۇMu]FP25XZLyԃ~ۻ#sDS&MX_8SʸeQ[ v{衼SfFff4KHۏGTeM&l?'<Ţ[nZ >bCs9M=+B}8 (!nDLEZ*WiԱS)6T-!Y4wuwOrDBM j6 3IT^WK"DKp/:avZmz5O2s޿ɄߢO;U3a>B] ]cydrZkz㬠a`!R!M8Gfp!('ئZ S%M*qwp{xbI8>UVyAԈ>ʄb[e=>ƿ%8^qje?ukw_q'TɄK89cs@5IgL&ZLaxjfbPԱ7BD1U&l$p%VrI H[)b~GH|Pa.f|TZAY9̅)D'T9Q(8f'3/A9StoM6c燯k@fPq_kqWڮ{ ^sGtd<67.?Ν* ġcN59 NQf<'u*o6HX vY9 ,CZ[b vTe%#Vوn>&r¤!Bv|s\m-7ҿ|ܲЍәxaM[~[|fC>2MݭFhLoSqU _vd *#td 1F9 {TondږY6B=d P>Z5<>Tc29*XtMSTӽL7NvO'gSMW Ss^a:\ B2L_~d-(yA3pT[__-="W<+6VjLCڞ)ظ(tZ"|7xd㯱[դ@4O'b7.0Ų )k1M\ _O[@k=UZ;fӪ9#̅?өZ|"#j7ZS""D!`f*S~EH縢L߸]kY]ZSxzc0(Xf&!ɇC XS,BrO[.x` EB]QhӛrtGR%TTS@3j6 CztxOt5ȉĞ-N-Yx<~gՋ2"OH\Dc↔dhn]P0OxM=ld>49Z px 8Q^sre]I8ϻK=N-cp\߄ß/P<"IjqC?Uutj$uܷ?EF:lyTe.swSPBԊze)Sy>g{`y[1i<%N. {}wq5j7hv< ?lx۴Y;-1 *;G2^$k |=3-Z]He=Z{n+g*/j* "Ɍ߅_/Y0h4&{ʴ)*zq.?5܋MD^")#CiƤ#(SiE h5S(ԖY106M:% ɹ4(j_/M624;핌Qq^T&$ߣ($$o/vMu9| p\|lA [y1T=8WvQW/OQr40#m<wt3=$5E,>GxU`ܼ 0BZLyZ2fT:lf)'޷$[{勯k3-Rp̓>$ӶpZLf4m%c1Ԏ'C2#XȒ'4'E:+TsLlԀyu<26]n`WfǦWa1:Nׅj/@Ex3?D>(`qjXq5pJzڜ dzxO.y. bij325'p3kx%7/j] 0ײ; 0ڹY,&wj}/=?}jl[䡪,癩 ܋Py8 Is9A?2g)D,ą6-WYyPu(yJ5˼~Z$n{uv{IW~ACuE\>-5FAx_!{1J9MW׼RE\_1Ɍ+rD<V|!oPo+ZWo؊Ƙ;'2kU#_nLJ569UJ DJD&w`Pb=f5-j c`NF?xw}"ΨעIOOv:$L9zRN1i{Jkj"J_@|m|v dרwə_cE[|рx20 O3`uI.1ZmG^=ae#A=棸)`BqrF];֔K҆܈UL3cYB# kBit%N0F }Ph{uW \`m\ե wG.'N݌MA!gyNuCuJpB|y;9 =m]dtݡ#2}1i8Kb-p^1`sː {/hr._wy*>I-~mqu\+ξ96ˇ,c~rXD+- j/r2#yqbޡ'Rً0|,t'ΜEe.|ωH)v6hCw ՅlVyHK)9gR_ Ppǃgwq5 gB9a#P 1Y`|Kx؟~DrG+$t."p\A\Zb~WC:-dPf_{|Of%xM Yr{9OۓO L`'M9F>qvP e e3ȊVk{CIj֮B.Xw$9 w=+qFŲH7[U.^!-%^'"ceȒ}m〉mff*lk9&4L/;g/i1g\`—pYۖ>aG[''pPk06j79p=. y? jLeIf4B`$BbR)$S@NFAM/r *ytyb)Sd4Fx2F0ļ ~ϴuf r)QMgQ^#r:Gg@x9ZZLkL$-%.yr0S0Boi?g͜ xT"fءݒG7B?S-1'Ui'1yqEHފP/򜱎 OEg; N`RrA6.L* ,xjpMUL-q6IonG +jڍԃJ0B y($5y6"|!KV>`p:ղ^3li*;U(蓲rK O>C|ɵزxf[P3ijHq*2Ёa Q gXf@_>̖lazƹ2oىW^0tkp#+t'{SNԠzFtT3,5r `%^Mwap|GKk4:W*&5$뵂IxȝR 9!ux %8*980n'y9ef< w&SQYbB"^8߇éEXBwF:E=S& <!(7'|Zѡ+$f-&Hl-蘀҉6R~Qsђk/&ȯHg#X>Lq|PW""px^#Qֲ.p1i,]4c#P )۸IU-jrI<~рa;|XVT_Zbazcz&8^ǽť#ܑ=E!vƩ}Қ@k)\:s,k@T6'#Q"q SL4חnG<1wėu)B?gC LH_-5742mc1| "ʟKOxŵZ !$; AƗa#œ ë41#]H,yN)<[\12^U^/2=y+NR 2 Z̒30EN"_r109Çg.!W5 i!xm']zf+_v1,?p4)\d(W%w 9\2*L40QƞfA8/ &\ l@#fЍHIˁeU6V/)n"TIBE?:/x;'[[, >"'l-t²~-,Ío̭a9/cl8,R[Z>gro ^|Yԫ:iQ/؉`ͽbR"ET!b[ΰ*Y5)jd3-2P~# BAʔbSv6pI MCMΉA9ZF!8\>x 9㞨U s:ث>(2fO|f,!TlO6_>R+!>20M/瀡bZ.wig10f~'X dޱwBa E9Q9a1{S- Ljw͒NF– ++rm5vh#_g6( 6L}VݎM"$kBAIGic'=8BŲ#Kyuz׶iwF/lvQ-c?A]^S#65j!M8x'qL5CۦYQ=;9Ri J:nfyDq,i33n*GIN*Ysm5"4@Y4n?s!^NTtJY@嘋*{V˟h2g o&vmC9RRdBN3V7y lƂ.b9gӎ^L-evN@cg{ \kH#Ͼ0Dɩ!-"9f8jYƮNs%ۄGOCxR9P]%Ps6qwh0":R 0fkqAn``B#;* y&dk? QPTnR{o^ ݑt% ґ;c٦(F0I!XG)YҜ#$0,6BILT*v9]`piV?lV,pUC8kpۺH[C~oO{ܧjNJDb@GoET^rЙ|n`c қǷ:||{A* 2.|`2W쇩5"&I Ja(L2ͥXK"pFWw[3\N+gh}odrԯ`)A7OCkpv fi$t%i-0. 4^ICx< ;`(iߜ²DN.lt a>~;C8oC2׀gMYѝm'<`xB$PVF `QpJN1 5d9#Rv5MB\Z%>wGQ_n[q2"4)s a8q4`1t{"P;㮱3L~ׄ繿Cy4?߀yazT/NEal P9A:M#xƞOs< em*d4G~`ۤ5ɘsvrhQ]>pQ}"^ Pܨ0_EA-sc4S9k{19])s^ "bYp׌!V%P׃bA-5؇p`Žπ2ӱSt@100aJ !}9#`j?N TRov=61 f\a;[G }ƻ$h9;TԤVhw PNDGj!^JAB݋‰ .-3Büg!XX?U*vw(8YVReLN]C" O=^Wy͔|A0&qWЇǟ=>˄fi@dmk\^tshf˴Z6kb9ajX  ssj k k Sڥi7yMN-% Q^(#݊n6;T^RR% IvN0`ZWݤTO]N3rtFI^2)r9+GEÎ0B O: ia2'x8QQC$ Դ'gq 3'z-CJm_Mεv?]Q+%/hnݵJS`vp MB1Iq8 ы[zJu0T8 ]ٟ Yf.\Ozs]@阤tRy̻f ȉ07?<(v07؉P4"'0|pZ{,Sq9/DN3s/er:ҘC[ ^0E@ٱruOT8߃DO8:iGa"+NN!Y#B\=jF9yNkbM6Pês e8*R_Sf;ټ[AV;V-V*Y@ },$o5rm/իz006DY"j94L݉(M 1 >z2yNx۳rnKisܡ @  ,UԎy k&rWeMSIk@7y=AE`bH72e[cl󘲻GDRGAc(۬Jͥʇ~fbRP* yMRL0>@ي׎,ֳ.Vr?܀G]4ޜDp 8'E8B5 s KyRsm 02~~rj/1p\ލ k5`ZKO1ϼQy'rQ؝x xu|A{n̍@PjFTi(P cgƓt+ V!EH[;״@=˭\7ɔ\9;5;`ɁpIT[i2 h{aߩ~@1i.E`B"= M+b>2NuOK4S4kC|KW_ꮽw X<:HmRB(닼 ᆨ¹ &΍%Id/MsL+2^E mܸYyS8ΈxP㩒`uӖ$9Eu?<^ *I(O=% 5t~@4@$q$>)Zخnѡ-!9{7`8wr8X9Ɂ6)T$cmZc,v[QkS,3gqV8l=#:#|⼕)u 0pxcqڭL;NJbu3ʟ7h^egMkF`܈,DE$#7bl0]Fz W`}FrCQӴ8ȑ1\_WϙSkbK1> *e%;7|@o{_6IR!˛si=,EbONk`c)k/T{e\sF,ҺǽUXz4Ȣx9gTn3$ ؄v]Ke,4# UkBSq6)0MsL~]?c44ۏ7$诐\I7#3' ;v=A>9у ~\?e/mqdh{4+Kj U=0V7XwoP*'mB"$)V0s{C5 NقfT9< k)Jk:?7F9;h;8m@[PbO#Bq os y!L1vN:5"D~m&eRo\ ͡Xs8jIo )mT6$‘\947k֡k ÞkQ/GE# DV`.[R =% hb8݁kn95fCn׎yΕDϓְTosf3Լǡ{ZijvI.d^d,r1?y-˥pWӠD ͈sֵoiMF^5REVɭwsFj^sɐ_gqAc~q GmDDs^ D?~zz`Bv6ZyPW\ò6rPJ!?é]R>5hc󴆧vK*A DF!KġTa<;zA 91 Dž1IJͅ4GP##ݞ7B PGM˴:\:Q,?O {Oŗk=\o>ҹ˫0Zhk!dHGP)V',[-!-Nq ޡp H"w4r!+wl9DrVd2WlZ)-@`WiTxJiF$X*{w;n?5{\j/eKktm<6M}@0`Yjtmot422Lp3sU|>3a?WV4k28%Gڹ5X덋`# %̅&qaUQ߭r>OSR驽tZ7fX59#,SyHB"\eJ,`Q@0'"\SxN+$^\e:'r*GKy-uFk&^JAF'7Fr U r#y |eh`ZT|p{?57l;j/,_(n9[Y%5=\w쉊L_57rXRIh։d[&6# FFaniE =.tQo&u'-Cj]>qҝyUca5XD`>Ww7'`=[4=M5 ptO? $]3}.報TlNQMsS$%0|YS$iJvˏZ~#t"lٴNiKSM fGJ \#^cQ5k_f&< ^'@XMmd dN qr* 75 m'{5pM7{+eh<3`}J5/,,!2K砸ҿg0ڝXXR0/`c} 2 :^gtNlyYv*)#}eWx~YύhXv}FS*RaR49uOHHC(iFfmZ"jF+&jڀyl)m<_"9iKk\V 8!4"r=: c0/YuV<3)0 6e5.Ulm 1̎b_I2O/~Ry;ar]s(?Ui͜!Av\S~8 p0V,iaYBo~Oo/΅l` i5j1\39f AM4L M"F$@^#LpO %31MDS&I6J7ʜ7;q B<..V,1q'BZ*aU߭*Wq=&c;h3b)^Fډ#_< A[ZeLkFW ?v=zeؐFK>=hA<ެ'i>X 6)d"=#EǒdLiЈ9rȚry`s.+/.JrD 1ֺ\}FWGG CKIvkccsTx畷9}[QN0gNMtޛ؎^Lb~L}rp8܁f%EbnmroN|`˓L&˥5KASwtbÜП]v12:s@a.r{RTʘnj1'qBV':%ޚ]bľR?PS3, 2{oRB+Jepן ,]p~ faZ#!q-։+(NEDB` g}i (_Af9"@@lIk"$ˀu9wh"NfP>0"gH >%q3D榅+^<ߒ(1] ,uK]CR't!"0!$iC lՃ[c-{V2-g53L}{yR¢ G* fK`h.X.tQjd%处ꨝ*I#:!%X?^uje8JPnRtȊorRQ_s%YNВsn,sRnJuw rfT!̙*>(=vӟ8n[$!XXYUA)Vc\(z[ayhWk8'dFEB%8&m#5NlNh!zV'VdD-@gQ r|mdۨ0W$dH%gؚ9aBϙ$uףa) :+\ R SrM1et"l!4yFjN] #uP o1s$) ؔZ79H'3"i*o*%.J rK[;`"g UK@  dФ$b%=ZvZ\PV#j#]a10?52ت6B -+Re! %@:tٮn!QԺ,<DAsL<P6NV'DM hv0f.Ԥ+ɴW<*%j!(VZPYuճQug-12Gp}& .PByJPnFM#_.uj |J+\ Ml뾃ClMa0GJ+=^J.G;SW.$ԴʵXeFgٝ`;ѱ!{ҕc)qkH/۫PT}Յ<ސ>tڜ'Tg:r mq.rIn9yc;$ 7ASARB;u5H['p;>F"PJs=~ vlbUD18OtC)pfϷl8J0A *'"[&!}sm #0\Jw70G,Xenxj08Y8&X Sۭo,Jjo,/k&eh.g292 A:,۶5:R6hTt #bAc.Rnt#ڀNH 2}~4d$c[4CuO0h .Ôt(.X)f+FBRL 9E>9gɟF}`1D77Q/66J5)lUHkK'@zY)RB<ö\J(8-Nm;ιnb#`y!%ɢժkc0$j 4Nm2#mǜ`O|= Zԣl-B1Y"::K pdbm mZws_ ݔBfEqA=VZ5)n3ٛSWLVc&.n'BJ9F u! jan4T=e v,T+zӀ~t*)^ű`|Yl~O݉y*h nl6aB}J{e2 @Ks;%+q Mx¶DoqP fXo C~9X:֑75Ѵ'.)3þz{zV,Z$S (b`YFf%{%gO'B> 9r""cv'M˾`}~92wyNmjJՍ W{)>0>)"/na &$'Y3bRR;+Pg!" Σ_K-;5FȭS>.#h+ djcQ%oÅ=A?y".BnNH;V&B;2t5.Cd P{&s"[ݳͱlr,w~; =4븽y &(ۿwV4yle',B0:yNEYS@xZq )lo"$`\$AQaa`XB &x ’uIp NO2l9;ōXЉ.Mطxm_p34(nv[ Fh> XKdO7Cd} ?ec~ފplE:Ke&klğ}^ *,ER6V` S+V>ۉeEd|5`IF+6Ḝ0*뿏M-j6 +C7Hit]dDrwe˷@IB &Px,3sЃYt f!#ö3Ro 7s{O7]IST{'Xtؾ36QNoq~/v0lb3MqlH\K7:(\zR 4r4y- c`k&/4(}Zh/@B` 4I'ے Ts(1 ]HB*BNN?@[Dj^_2C骟 ]ChdZܔNpNE},Zv'Kx!Y.;-:랐:,Ժ Ն p*u9V#-S /b!s'6W>A<4ügxI ,FhH9E?a._AK9KX牸QmX4 b$EVy>84\)$Հ"ּ+p]~Fi<-Chzm [6Ss ̎`J]5h+0lP=;rę`Ag={[D(gMT|?g%ʬSqZ ])R] IDATrw2o p![oxgJ ڭP8B7,s͇:t.86nC@AY #+!#m!3?dط0=QmygXdf`UqCߓ `o4b&j";M56onu0]9.Y6%dyVcZNVX\ &149FY /7둵aÙ`2~%B!PzBجgsLqoAjz YyN^L˅җIEn9 deLbK46+q164e}x]0hZCi6L00clOx] -t.>#7ܰL88\7[: eR9wW4%4SeҷW(;Ȧ2Ev[Nc:WuI `\jB3] }OsyBنFGtsgwJ\aB~lV@F:KNu{=fd\F;E*~c Bk|#\42DVфn!<0o!=V!3X=v{v}lBVFk[vˡjrt +po\[?"܄7Th:W8l&| r~BMD/lk>kن]V5T-5"tip[_F)vS?Q]Btwi˻q_N'jՍ>dJ<>>$K%݅ƽslz fFO qcOy"5 1‡F2dMҀ[KܡqIVQ-~grd.3OX߽$/[]jY+MqBQ,ޏm# hݙ`m&D=(ԍ#NP'컮u桪), RVXA|\<7q渼5QOԵ2%G^R[3'T:C\?꡹ա?aq)u%? %[qA6XakL߲$r 3 TUɹ[J7.#{Mu\r9psflF*l)CyMBד~29g~-~+)SjWDnn !H7" #7F]9 Z`J~6$gG1RB/ovLN ϝ?ľHB?=JosΗX,8K똏4>)r~),r1q~Pz(+bB/W2 [M1~Xt"o qʭ&GAs\v'd:: v{jY@N] aXJ0XY-5=96eΥ^{#hCx^h(0l6akijJIjrD7dRП4.#h˸DVS35RlKSKG|\C|Ǯy%`;^k㸌9.w@ 'a6@X)9vI7\VI&2ܳ@k1FZbUa<⸌˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸˸ x al3.2.#( A= OK[|G@4H*="6-z:p5raָ<_|(yOir5:G>/ga>.#|lJ0jġ Z"!;Se\F}ϱdC(cZh h}yΰ p}z\F{Su (w\BKIC@q(7 w\F{=|)iPvJ .E0蒛˨iޟ`i_+s-2Z \fi.gP=3؍ded.CC̶JBh P!ƬK%ʹrb/QAs\,e[\zNɋ"%"p@ EbSͅǕxNR4( s`R,r5L}frF1qAs\2)ܪ@-eC%S#])Ɣ >4gF=F{ QXb+gփ:JO;fW zH1v\F9.ǟ2l&3KF>NK6TĀ |\׎sxZT Kt\7\|μ"I*,OPNE@e͇",/;c`r{/^.K:S%Ptign@pY°a֬Ƕb̹*2IAqϝN9rS&EtTR1I~{:,Rb9<0D2xr1vJ %l6v z1-IBT X^Aؖ:Fzhݝe1vU9opS e/LC mE+ \kʧZ>M*5lD)-OݐG42w@sRm9ym$3FdYIps f.bVgzd]rC)i824߳cVү4'˄mQRy7Fk%gco[ Ba 9v:VUKe#6|=S132BJ2Yw KcIT;ڨN@~9E~oI%B3ġɹ)<℗@0;3g~͇X}-shO0BM J%sc%>W+^֦'^F X lg-{_AJlB#Pթ/ڭ=F9$juQ2rR =S3Tx"S5x#J#q҉N!Z`%iD:~4IKwNʄ sHURǞ3Rd˒J|8r+ s!&!HM_iχ\%);Rvrs0Uv_Xiqr=>ꍿoN0HwZ+tE:bI%GX3PVy' L\%M5ЏQ"\1\cT>(%.;D`s 561LRwE^gRF˵XaX! qv3 kꆘXPjwHz$Ys [G^Y_,v:C\НOد]E[eE~~f  U[ݝ8sRE-TQtc37҈ҒhJWR>R2>s=4KXZ"1pB둟wNDj7qt>Փ990Q0_{b)^zƲ{۾Ynd9)SB\Hμ ma|IE溏y(5x(z]IjpUB>b4v 9UOq=Owϱf\a]b}wy/^j !cVY7Ch A2]ICΛJ"n_ˇιk~ceg}<]s- |덈ZN߀^#r Wo_owLZI1XjOCҤt)h-j}"y '=OsB: .]Kg,k b}.+ޭ&9toV]s~}-ܬd^bM]JkuVD7 fuU5%-ƒHf%aqi }<.9;.S *PCY ҆[1vi2R%9\ux=IDUW}|1n}C̞k#" "WNWͷv}!_YT% ]%k :|4ߣ. s3suGaJ㋅%߭+LKltHrъeWCܵb}3ܭ.oja!߽ 8OVTMJAϷ7%Cb@VT HimKƅ 4A9t8<W䀌2e.=U>c%."j΁xJ ȹ#z6%bQ'm?] =mnH kmRs~"&W-MLs?gt {l0%tE{.:"nAlef! _R}1r/ǘCaU[E*饺.Ӿm>q>|֡1irx7 )I?vUm>.neՕt]ׯQBvzߔ`}C.>%ۼvr˦fi]j7^UO>),?:;`8fGNCC0Q"ǨǮ:Ϡk~7gov&@.UXjihI$ +e )j7м[wln^PJ_naT_Te|~_}UnS]RLD 9LbI,W7+njKי.L|EFͱdDiEshT!pKȉ^f8T9(e@ͯ=w}i:v{~u%(ؤ|m`jG_vDʒh|H8y,3%Y%!wjy?ACeQds΀jzI.*~csg4l#m[>'sߜBaw)3#Ks{iBC+R 25=_5R=<>N̳dbc >Lݥ@#T_~|6|w}~tuv|=U Vb1KXUUwxNb 7oTS ZdB&g㛯qjչ˿Fs!q&5 k ;"N2`Sdvx P)~ x%TI<ʊGf{מz~ 65jutm=C] Z~,viMPZfL e{t]WB꽯gwovFs,v#S 07a:݃2S0L%iGLc+tjKW?FɹD=u]`ur 欈YuSfPɦ] `TuuĘgQ&{_rlG_ߴKi閩 %=,֙' NZes >>Cgw[wFa %!9=MTM1+?&?`׵ 3No;^lʢN-mZ;PU8@S#X1T"5X绮3+a{5mdh2o=߱rX X3hDBtՒ14C`zx>Аf:(6w% ӍESwG,\{i27[\a9fY9;BsM`&ϯK̰Pj s8@إe0N+\нy9d n:?޾a9#V֘8M`x0It$_0Kg͓Zw5YL.O>{w&!{`O [ho :P(J%X(1LGJL rs] ! Z\@TlQM~=.Pnj[>d$G}޳&c0dnRtS 3rMOpI/\}n~OMf}CfF]vy toE܊%Xu]'YfUp<4ueiXf,cz),fbtOGo~} ^ +DoZzIZl92:PS5CsH/>d#OMןx=r<0sӵ+4g'hnwM0cρR[z+h IDAT)Arc~Ǫzb,RWX,2,CxZzL۾6\OiI}4%)Os`4Kj SL#^3~5g>#Փa 3CG7f0P\k2(4۴LXZJ:O)&LcQNEC<:D-77Lo }rw,?”kd<4$ m l^ZKf^i=|ܞm,6'٥4vXNX:ii4,@@cKJI JuStatي懿DUs`~wHg .0ޣtw47+uӇ6NK#'bVW\z r r/: ONB1i9RpAUB_ ڶ큛f1@Y.töOU~Q39< T՞_uoOo޴>, ʭOI0s2|rfKix.C 3{W&/|U?e>r*֦jm03W@Ol6at'lo+@tKMObq9fk% a4XHsSQ˞,JgN7?s/\&N K'[ Gޓ+2 K[;-K0k ~' 0d65ü/2{4`0|>c:ДN=)q=9$1P1c Œ= 1c @}~ V`,1cI6X-VX_ ʄx %-Lz79&'"`\+S͉%n'1ݘޚ3[Yx[Li$Gd\r]=w'x`k@׬R l2e`0\Ln;&Z,2$̘3g\gz`3rQm1k0F79@րڀ Gd 8l#{; ٥nuuvK_kn+MO%yi^Ir14i6i82JL1`8TMK4=OxS:ɗf0d٬S2M!Nё2'_ \k \i=򼛲ЛGD%b|'%`#b`'"ν$ 10qjjv{_j71w) A(Jղ[%ݕTdw4D@ @iH]yi="_x2H^.U/}d`~~!3u #4ހ_mVBr̐Aj)ڶ= yo \<`Zq”g]#wP }sx^<@G=n b7X2]rDS1NZׯ.}MIwrf!r$4fUsrS|GzX&!c)m12dbw~-ۑ'^TO=MɌwhZ򳛀37l6|>|>[%r ?M섒ČlᕎJb <j0(dW $u`N\K ~yS@x^D1*>[ku4?4n̓7ookBp G#0Ʀ"kZx0]rƝRRPK@~ksdql'D:x铟GIMA 3ʽ(۔kN2s{itȪŎh5yZ WBh뺢>Ek}1{|`c* t`,qf63on9`o 4̖#ľ9˧?Gjz+'b%%\A f%Jʱ.a})ԡ3L D@7OUuW?0$@7e u:CUʿP+=1-Ge۶ax{Z7/wk0cy`eLXÿ>l?ڢa9KM"9 O1P `%dTnZ/bvj~p or0l28̘= %1..~RruW$Hz?٥ w3yuuޱG,:~[,˿Br.LeZ8RliGuՕdz-、J<;>;۩{lroNPǨogd W@x*<NNsbKuzRxco'XwܶǺ8r+aa% Is2V S,1'98 Cs4޵ ~@7oEm:U:HQJԀ9zO.51ivxu 1g}܂m2 bM}7#4_;,ogKD*'@N"<2Nc!Rd|΀uj:4g\(b9َ-Bِ!Ij)éDIODpzuXI`zv6S`N`p\2HBZ(U҉uߺõncsy3NS2?Ey!Ic}E#)e3dAh ROpGX:zGy$̟ȵxOTrwO9'%;!.wYR@yTݥ_ Փ[ ㇓jCO0}$ÔRk2R<2 oD=t:pY0VuC8{=EIReKbIdreXr-'  aʸ(b0tMGdAǨ(99VilquDz?o#=pȁ1QԈ(s#B~"w4H^H&!N+%$HAs'_.FEƔAJ٨d9kwiRam6.)3ZƎSϧj5+u>OxE}m's')s~#0`6Ms!y|j6%2Ӆ]Qpyݹ2Lgxh/sm4ޣ%aźFisRQ§]Fgg\ހǪPؘ̅DnN Lw^a1nWlD  /^h!(FVBs6gXd,ʹ ~쥃ƟvPVC8F{|S?u#ӎi>0%$flYzO6leczZ1g?3<{, 8ei60Ѐ*#yF ```΄= ndy״rDjd](뭞XkQ"2yٌݧM1<'G竪 ;'bw_طnCTj#mA?fWh8w4 (10e9:DZmGpq݄9ghow=iI! 4aKN4Z`1a}ݏeG0&0Wn#ȗt`,q7AۛvlAr0AΙtנwN݋xƣ:!>ɛbu$J%n^gdF#ӨYuP*Aq5Aۖ4cP˙o?:tퟬn!p<غZ ߭P(nt͊w4K&5"NIfFRXR=*^Mg kkjf]Ƽ% 2^K-I!4;ʥ#{dHmO.[0G@=CS*J+mIvj-㏹p$/kx}ϸ `BuhqƷؿHlD%A8b?-@o$L\_HNyO%q[*v80?1'BMo,~uFXgn4oY/SY  -Nk"'ޗj[˒wOkF\ꔧc3͡Ɲjs:_B.V}5i&m-]f1X "':O/Z\auwDULzf܂r_O멏>‚8ڕ[|y LV$-x8'DD';6R? ~:>gFY5J}jGxH9~{ {o;3cn\TsWpӑbtRb,3*QMsӽӓ nUJR"miȯA % >ub۱*uOoP]e<5#1˻khNoOoe0CX.u" a<82i=>W6 "czN )E [f|Ek|KAEIY9f)k'[|=x\0j41ј׉p*ye}ql5nξfxxJc锹TW޻ *W)Wb#⹘lH1sd5M0_MOg¼#[ɰǔrY1-Gn]o[ΑZh J@F#RE1wZ|op0c7.mґr d ׉uxyƥkTayO'c&9kgm3:TMC}fJ'qͧңWkd|vqdSay*(LbR&Fanisf|z⩎ϋT-s2wT:N(ۖ>zï3iI8rʇ̾IȰnD襤<H->eF˫߲P٫V3ёz%o$d$]k%QajS 8kqDcʌGP3NyEJkp=nSYF\z1ctxsICt|u&̝[c[e rQA"co&&j&=.)c*K\؀FK; KN c9{RVuWmjZ>離=l|5[Nblgtju|+,u⓫OxRgf2_goqJFq%q_qV:`bP=%f 0zrrOf俜c^@Tg/,3"","jW=-/z1p|d\ߙ}B8踻a5~W ڥqh[ UCuƷ"rc4ح+821vOXZONk*G>/JZy_ߴcQ2]s}Bt)JS!띨ohz9D}'˼K r lđP"e:)"9+77Z?1r!FCRR ߄up$ _|lFFRzCI9MG`e/ d;3H37*ij vw,ŀ#w!/}fW:s }1ae6KDIZd\%@iIӶÇ I |QN0,h̡}r4Y>Ho;Ɉi<}/$FTCZo@sp&d cyE%34ն 1GM5mq|si, )A%:t!jJwe'`{oO Fpn!9|MIY;5_^}eb8Ā Д&JfL[h)`"rHiA)oڳD)so5`Βs)%˔+f|piġR@),u8S,budO ._UU}y`[Qг?~:|Y3L.6ǘܐTVLxÌp_m܈hb綀 $}[g%sq:(!zmӌkź0kיILˤER3a{]ͼaGF>dB |;|Fб#>{4/qK͠,qst:OuElk$%ZC^z=86bg*߬~ -U__vm [c+jLkiɏrg ph|7g?(0ʖqf__F9)pV Ņ $,#vhb ֆfʇr+uv'g DOpd`O #wc29ka[ \X.sfig9JskƏ@څrLݬel& [UR2>&ǼPew, a9m*\e{# 'sɉCfGr9q Lj[mͫ:Q!< ;}`N‹诙YsQ- )RdRw`_Gk\sf D-jek-j W+}jeӥj8GpDDk:r>73٦n1 02KL˴n26\Jԩ s\*I%3=x͹p]_ Y`ϹC.LwS\Q*\QOx.(PB=q qP ʽW.,?F1Ɩ\c˨ߖȁqc3}d5_H # 3O HuT<°[wYJclqO.g:DVQQ/f((ˉ37[c,;'8nOp`Ci>0_GFSUC-X \g(ůdq7xodsۇMRNzu"w0v.g͓=9_1)#clCՆs:}! 4v*%QE]`G2,8@C.SDv]2'XR 33hCr,(#\MSLE pFG -n"6>XLCNyD7xo15 <U4;(K5cq) R^OYI$'|awBGWæ!-f"#o͚~IbE''r}krР r]A [[k|xd%T]g$-\)E&3ki cR_4+W'@DxmZ(^b)nq,( Q֧M3,UXaǍ{9F/E5Ub9V.N[C+jBW rI11x6m8}'r-gc1pb4S.CMs;/UQ}{!CՎORDmgC,ąM *J;3Ÿͼ!{Y`,wBBd$.Q`0ʓ,`0iJ0nX3Vʚ8VMm kMۀp_A9OؾB<GXt[X$3U\ȜKו0|g@BMsL<7D쨐`Sz 413KP58 2-i9B8ܚ\zj0 Ia˴8eL ˙Ѹ JHd{:rhic*Cz>qbn To pϱ3O6N0R% PCpT %;?O^u+=C1ϩNW/BzT|%CUmrFT"@ v}qpfY6A4ý>k[ݓj }*>TP2nނd D>?{bSOӲP[-Rwfin1Fs3-`_if~zl;D \6OSjIY|5gxa8C$4 1&ʇ(I=N5 @}ġ5E<#d>`k5xVI fi(!(=*]WHբ\VTƽuN$k}D%*)\,1@4N?[H!Ⱦ u23 ΟDHwlKVomcEe9:q5P(=[v -{ģeBQ5h[s̵:s [*"0os, hlϨw$FQ#|T)V 1V) u$VbJv̾}h҅O3~ K˷x1f|@tFh(a?OO} e2R6)4:2ΰ/'Rۏ*b-`W{IsnPתۼnj:4ܐó䪟-ϝa5_u)*bdCK 0g$rU@Tu}al1]`9Dmb3'Ì$j݆Ub:VC'c̺(edU=! ER}v9Ĺr ?tݝ_ư67)༞̝ _w|0~$ :H'-5)xl^?:gmXoVj gKʩU%Y+38 -0IS޹l:g{iT_- cOK'a9sηGnW̸P35b'5( ϓZKBe,HG̤t>Wcr5*hƊ4$6EȮ:0|A Қ1N0;"DsK3RAo%6 IDATԑXInެ]+9;Q @5J+̋:yX)B$@6e./%kqX94i w%6z1>㒰\\\Hr%$Qn[m1%/:fJN4O I/!-_?3L$seU0e|Z^lUn9MSd䪽>=ɖcL1ﱟ`ŠNd2U\ВQ0{栦pX5ZZh"ZcйӯIUHgcrʙRK&~n$"gm`9w.Rnfuex"^KBPȈs(J,Kgp<"BHϖeSC^F,tnpmΙt Ӂ1];1`ߋ󢘽~lPLI[?e݊Vʳ$[R1آ{OYsXb0,^{CppUhY;瘑Hhl c6nwGqbjSzDh4䡐U亄!+XD^Sr5. xKFqfs՟5ִ[[֮Yn ѓTy{Е. Jrk uG{ؒr tKGsDk|Ύ:"ca ~Oc_>g";/?V#T2ob][j5RXbQ&`]<J 8)8jsM8T \d%FsZ%csdm&P%fOA5S4EʛgHYZ;BPR~|)\^P>{*U@R';>p~> YϚR+aKڣ5jCT|JKv&5, h+L/Ղ܌P}rQ" \٭R4`٥CM ĺ$+3k_#4gS X,2՜mM9.…'VǹP8msvVA_бMxu4q崔(1˧$3Mx5X(ϲJZvm9YCͣ^dYѵd`ujq [EVlD. P-? A܀Ĺ((@cm-IG{NI8G0 ED(Yǐ"#ow†[0~r$D!晝$ZZ#״^ia۷٢{jd \ ii$d 2͚6PṉNkdnn=luf;IZvgKj.L7gƑkc=E2YB9S3*kَ` 2v,to$y 1 Ck5ΖDpxdCc%f xq`Op?w+p-,L؅0nK8sz™&T++0v2$L&FQr3b44@/Zna-al 姎~TӅ Pyv(Jف&m8QژĵEŮӬuږm*E$5LD3+\65P]JU;<-4Z=g'Mp.'a2;%Kr42K"/ri펙)Tލ̃-TJ8(^Ђ֦]Al tD*aklKqJMLP9Ef%EY|\o`}h]s\?x+3_ Фс]Έ_e1711xwBs>s|RѣB `{uNdi.w&9VeYe.|k)+j!GaP)!kQEM,{&;Ȱ Jz]07hr#b|| ŎDPݯ0!ƻXAk ]kȍJa{z0|^bj&`"G]F1B'pMI t䮞9 I^vȑ`8 5:Hk(@nmz39IUX.Z.SbPǥL/uky|h%RI2oȞ)`9pb5h*"2d Bu=ng|,J1oԃ`L­Y" -\@|á,Ƀij&;VjLTg%7J,3!oyƎZ[^![a8pbsGOg\f̣ubY "EՔ1Ƚ! XB)BxK% \| J HkJ~]!-8-I]IcDq(Wc`7ęܩa8xc]^bζ^1VVqlʤ=(tx/*82Nj} Adr̞_ 'Vfh1[kӵ5B*#'xB!l.6~XΜ߃PfV,CxOBEhe\)w! C ҔZ;׌Ehp]U ˝%FDsɐ_'1=p1&;ᚔՠ#L n)"1mVT-o)f@?vxZKW JOMw9QTJp٨ҹբuHPcxk:3Y O,m2e2ϒ7DV#7"ۡQ@ bi`Y^1P.oqx0?V+!"7q6YlAUi{8 !8Ui ׇ7 w6J7rxBJ3z^tHvMB*cq\IEs ' A^3Tpt@pqAͥt~2y(8>(VyjJz #[ ֌lctɠ%lΉP%h[j𳦾}Q͂`<LV[lޖ}3xR eCS3Rnl |LPk'Ų#W@ݔȫ%{y[(5#5ͼڃ%ĜnZ.٦P8-_| N8|֢@ ӑiBXΕcUZ|E&lRR#kOCC,tY$\>_MD-8,;(*-ܲj.I\fɊ [)9Hi^rʥMGDjTmn^7~LD8%/3-qޚpȽRhakʐZ@k[G?=~^nj/Sw)YnMHG`>m3eUq qǭw+רYhdR8,& p4VG`^sm[u]8VR#;ls)m1c)k!.&1&i59 c6s4*nFAf-ܝFDCŬx \3Z&7Z sؠ30Eb$rHYF쥉Π6BpCn9#`wA:{;p_- 0g3W!P =K2Y>* Hrt Ġu@TRs4VFiY kYU)cesʃr6%cPZr]r&%#t ,#BZ{^ t'asB.sMm9ZhOƪݞUp`Tg1<_BKCR&NDpXE, tUAET͜QU`O.uzGTg Yl )"… ! {^x~rrƲYG n\Y<5v3h Y-i K[{ZX!jUdetw2 <`w8<()Or'<\*= -\#Et=-;:hf!Rzjք2\٥RJ[5#K`R+KUo*dM-)|/2iק.' !Pdn@DIk 1{qN\*i=p0tkRD.2`iMk Qa}5@zc-`${ء`hQ@mYuF-sK¤j$\0ϥiSpF]\K~j>hkSK (jhS'|z}X²]L8s<}Vy]b E. I=G\ˉ7I>\7# ZCrx.e7CЀsm?0zNI~?̩{8 9덼Ȱ[\ݏffs!z<]F ph+ph7Pm-hiX܂&bfbUw&禮hp=Fkwv\֜_46DEIR |st![?vK\h_rnf̏x=`ؙ^G&9ؓ?l Y+n/):('+grPx!2ئp~5cm[%d]cnL匁E"mX9N,4G$e{˫<ҡ"5 F(*XCss3Pa9kK+weXhɸXrTW=͈G)é̼4s4hMނOt |]2t-g2fWӌkϖb_lcCV;5k/Rd=l`{N]@-Z]ncF|'x2imM#5iK^ 1} xq<@>/".0^ 2*ENFP)W 5+A42QYg_@E~\:[4sDy&Nrn{# #Ȝ 0tlˎz0.r9l;$sÎg^ uim8ܡSQRcM=Ž@m~{I $G?f2]17aJZ X nawʩ h[¤Zmy1+!nyf݄zneVkp1[mkMN5I+=*Jo` Cv-/Vv5_bLjK9&ZԒ(5cw(($E>WZZ:yOŘ& #^t*G>s0&AM5M$Nma{B3;Rz'ZdRdffsbY),إ$AFrjdl1kfm7mUFઁu.\T1}*Cbˌ~bU.v>l =C2dd(\!tYr$L˼{rET;Lpgۜ䔁(!k3k}:395^q*L%iU%ȔlZXa7.Zx粕H 6> ^ ;|\'yKlOxy%QqN^. 뤆[U!(Bj:]m>C[]fe=H|)`\'awu<26f*oIo``œ m5Kayk /^NL8;K j̩$:r"MDkYM"+=?_C7F?{JTW>8wY '=;^0"fcZYg#<.!=P.6eN;Pdmؔ{<jexs0HٸQILB5Tjy ثF׭f/x Z:֚-pi<-f۴Ix"a>FbR79 XBBJV !_’S-?jdFkf?BThݡrCf V^|a#A<<1;;4r3΁6mYE/W`[ӀVvSҊ!b7a^7_qи ׶a-psƗc dZsR@5r){de֘eiao:D [ ׷*",l) vHC#|U b͹:sLKDp˙Ī5]L"H/z}GPÉp\NF9ѓlsmN˃1!8IhG9Xt77ٌ3q0myL{\aS %mpy"#4smsrm1.BbneMa!m|-(ZDO;[mba\#\ 1 xYiH`]OcVhLoS{;|-S/R?.b֬ĄuawO/rB_ U{IىV8X z8K N+?Zu<9kGjPح״;| +,u\'b;bd=ݦ'~s.rw3aLUt΁*h%O ԉLBbHs:scE:\2`qJ%q?%Ƌp\:'9u=YrGAi8>Kjț֭r,` ٰſ0aD_g?A&@C1",ry̅\HR9웴$RQPrW!BvZ L:ˌ_P\ὰlBj~4,Q2DGڜ8eF~{lb市^_sg 1Λ6Z0;L:"K=v#jU:{rm9{AaH\gs^im{ .ZBt)Vʙڪ ( #f.N$9Q@KLA -G]0[c_a~ ۤ`@" 0S.s#qF4xhD/B <:4Twc,%S- J˕lSNy8ǰ?'od4.PlmdCv̯mƋIflf]? $S,00n#S9&|Kkskq^:߆ßҗИD`[G}dkp=4w ["_hڱkν %OsXg2IBV W9OK| \mx+/Ksi z8 /sMO'hDɛDBQGFQa%CDsfqN_ιB(piDH3 5;i`͙3C=gƫ~ $Yb*ռ1mv VkZcnф=WB٪[y{X=G`(ﭝ\n\(OB{@8rNj!-vyL};]&Qf4E!^ x<[freF(2g=!— >kv7h9kTL W? ^~4`^z4tkca?UO=D'Pwz < 4 "3rܾ#q.q!|uxnxF0ʍ cK|4lV5]sw5~dqŴf-I1xz[x !-!|Snŵߩ=>NYJP4KD9& HsV!{ȄҤt#e,Cz4BPVoDx%̼̀c&ֵI%" qmrZ ֘X9 [agC],mps<gw  M'EN0Qѧ?!c&lnN~8xd򑵶cCsïH/5y-rW H@$5* ZjY+J胊g@^'l<ݞ7tf ㌏`sd vlr֘]'p /o``U{;*y1͜ N<;tT&fءXu$[|/@s +q9?7!c+dS^) ";a "oj6(D,.4sV` zZvzԆ,`2QLǦ$v)ufcH\!(Xsaopςգns`8""+f X7a7}rVvY {68a̶f䉓H;.j;0~0\(5~}uO%+$,{(gaQmdoIw4W^udvdp\RÜ]Hk1O}9N[T99zƃ67T94B@)|59'i2Lv2[[D< rp`<Қ˩E[NIoTfpt%$$T.tD" -v s\é@sQf ۤpQ/z|ZB3n ["D C@6'{3 upq|aV\:,=P+އm}>QH!,XOhd/yi[ZT OĄ?E? ^Fsc)s|0Wо(1b\&+@0Lm/KmdH Ex-P A⵱NSN^B=LknO 7Ƀ 5#RKc-,/EzLe}k47Χg"Kx8O/y'qo V Bùo)wT侐P:~[ |_Ǩ S o wϸ]SOH'FtY.XVZ ߛT艿{m9mmE1>`L!8p(=&eHq:NjH\@jƁ[xBԩܦ @C 7H"e7au UHWrиxUhENq׳gBQ[K,q 2^ ͔=v3X@LF?H|vz]0jXd0+s̸<_!,_3osW}Y.H`$.c]V+Qn,Ju@}toӉtlWr-; zz ;_;1H,4uԃ9Ɣ)٘qX< CG\9 RkPxvDnt5Qq vDp:&^X4M"W zQ/mt#muYrBΐkT1ҖH ,= ?CHFﲡ<*,O=3 y?2*^ŝ@?.$ ύigZL (s-̬4!t+*XeI{Ǻ/(v R3`p'OvLNǓ4x`2NATh !U?=?s$iՌH+h)۰Žarx`nj+b|"]GwHU$W؎S ihV3;3KW.֥xB&| ְk n6 ֹMK*MC-_=u N߯"sHoH''P.̍\Qǹn{XJl6Nx 0݊Q?::9{bD{ts_:~N} ȍ {|\yw]t$y#->8sg <WS(le'W@/1 pF4v.L̺3F$5fU6J2S,"TIBE;C)Ye#z99Pz wHK0];|4ESND~S_H.; LUG9( I3$ 9ӗ._+Y5AY><.|S!WS'Ǐ *4eHs+/#)`Q0hR+!e`ƛ~KR(aO?E4ހ?ٽ*xC# BH ȗFPUdPfM:yA=\f'\jC5vS{%aaErFmR9މދ 8rE9u D q z\Gu3gԠXuR^l/NC]C>]zGrMR$'J꡺ *.{xz=PdY|]V@A);"/J@EL@W ~:,Yp Pa`-Qi]m.~H!tKvA(W3V )Ҹ[׭8fc8z-)׆9^aqJ60IF.]hLJvԠh#ݴ:wq]&{|<.p70D$ũKq[I"}PN8B(ܙBKŽG2a_`e}jyTQ)?q^s(2O|,#T~3HBRbv!#|:h e"kuiRk>'8KB'Cb27H>hq s{ڜs`E"8o.~LQh\Dxu8n:=#F^"9OZ{"2NANtmF!gzB8lvŞ-o=?cNrxK|`Лx~"xy,?\ (wv'Bv({d^VȒDkX4kB@gVْ<ϲ#QJ4.>@P:% }~?p`y@M}C6gi֒ߴ@x8ҴBmV{PiY0x hDܥLr²\t0+|/c$h*3Z$3wr,kqw@F$;{.ENDW>GQ! ):T*?i"nVe"})8i ;Lﶀ p͞i7hN nkJ E3POWx=3N](TsS6BcPf\zk$Wm1Ab<={|_{ǻY\w5 0;=_AXONsD.2ȇ8t2q9Bڀ"a*@6(;&g Y YN-H)eKPsswrY3ʧ<95?-1qaiíVʭ>Խ˷a/B=c܋PZXމ;(A G']kpOP!YOg5͜nZ7V ֩<3G$Z9/~uLɹ*s8 jKഔVs - Up=ڴf>(.Bs* 1Wv?\KPN5RY_y-D`R,sX&*LufmUg0 nN'iq`$@ivMMa:?tFF:sX8Kn\.s ;ơnǛa~=nB5'%"ƋڗCMQЃk30:.a?e8`IJx s`YR[{6!xnOi!VOϕn{3H鐖\0E;'Kags냠ˎ#0F3wJ T נugS3ɯ$M״"4>=;`񀏂0x4SdoNaYFCL%qY-ݚ`\ra~-)SWUZYb9Yq ?W췗" R! ) kWH8=0JXI`֨Zs?Ce9zXwh3Z_&Da%eT()2v{ӏLw=Q8xK`sw}3nYtF!8%ӐLsqm|H78&3c 1U≯bKx7901:Ve 8kzu;xlv#wA SMb^]k3.7):_v{q5br_B&[ʉ0}hKsyjKbTnCRn`єQG쿍"wCA'wA`x8 v-.ߝԋ4 ,&g|Ngu>urIn7m<m :恰c¼aJ32:ڙcAR#7,%]2Z!Gewn+7_ Km|!]eHzgGvm!"# BJZ!π(2 ӌM22jލڨ^Z^_gu'nqpu)vՃ[^k0v> 853DFz|M<-hiв;#~%CĉFzPatl895jf~]EV2ӬRKG~nuqŊ*EjRQl0=A) .TdJԅ` nLKs|h)DaWOtCPҡF5c=_3C}KC~Ԁ,0~//ځerdzue Q9nZ+G!M张{vgr Tȕ#X< Tzjл.$OYAYD]ߍ.Ő!‹FAǦőBǁ= o\{ uCZWeHZ,1(Lysɘ,l {kMҚcuK`gܞ0~qyy D;&kNbL4ڼy 7 $R"k^%|jGb7K,uiL(ݒD>_n|~2(g C]ْ(n Ρv8- s(ȾRI>ٖn%ʹƑHᏔP7_}JbD"IBÌ-y\G]D|v}ȘsE&>L8A3I8.:ASkww9 b]YjKQ-n ״5;3N{y7_H%x$?jc-J,=Wϥ#:zG3?^529xHɶ[nK&\IQl f(ds!c++z@3@bd9 c;)V(CX~Y%DTwox gdSUڳ%vuOɹf:aW33ƂgrlԮjsͱ0Z`̄JN.7{jJDH_9tN7ǎXsya{܎=e-mV: OHw[̇ } ܜZjvi1OJL,5&O6 +IHF3;Sֵ ~8[exIGǰ]Zѻ4BmD(,@RJrtd Q5#UnƧ,vuZLmg* oX*d;,:lW` cw(c+$9#E,%۹Aw:_ $O/leX4BW?[xk[oݨsNH8=fu$xj_4u)R o0ŌV 7T-%IHqRj8QQeP!LLxG\W.i#~N gpܭvu:rNqή 1 ktJ`J7:]b%4v9 hoݏ(q @ȔkʊU4>9ۇ[\ٷh"9ԋ}J7%uZR)b%VJmJ I E5Jc\&G`tybyRUoJl6D}N0THrLܭa}s {Ƒs DbM$j KKM\ֿ6H 9 =&}|?eJ&2ǩbmb`chˍbh.]I,]7Rcz%N) L HL'ԐHX*@RoKiass}CDaphѶCe%01SОG5aKa5}*I* #*{ㆽV2#Y Ls&/^쎤QpG<)ə2#VavS⒑&$ZFh8A쓐.YvOR@Dffۛ밹D7y8o]4p3{' 3sp l j~m~o OR-:u!WD&v@ƬQV%,&=ɳIM$=b<uv 9/]_gr&/F>ur(Y@9+s@\f@3fހAd'DIH1荏fgõ[-e0ӫ0ZB"ʀ: \0̪ҡdc>a,&*̽%=Ӗ>1YO:`R,!m@۪ J*R}J;!W@}U`i@vG.Q{CfvuKN-;f50ovKά0 j[Hz.5ɟRau\/ڝf{nD)_O*,ѾzNn51L$8k)vm;]I|A]@jTO޹ wk@hf4 fY贤&}; EQa,Fi) 2t^w5ߊǶ81a.gl`niỎ18\ȝFÄήKgi9Yo KYE3P|uԼG2o᷷Kf]YjNKd!xY>;qRp*0,Tw B!$#H^C ="oElUm{hrBdUʝfQr5uej; 35q۩a[Ep'?1T$Ǚ wdFzT/˵Zꑽqbxl 'f!/)OEV 3:^uPr"uY=ÆC_X @ fAΈh[La8%-@_rW;#`U@ M2v% ŠPڋ-`iCz2ɥ\tj9W7戰:V hCzdF 6aOBo9c}%3Zʄ.יU޸KQ%5{;xQ4(IC<8dǏ/ Ϸb1c>Ze, N*M=Wl9(ƙ ˟HMIJ$IjzX䍀labfl4c,aey!I}՚n36qmKL%%N8D-@;P}1 Eb|fo+4P"ooKdhAk`8oEuFYފQ',jۄ͐':$3͒!A*aQ$YGapzj`=(Ɛ&p m2S ] ?_j_ IDATu3h9~04S.M))%`zfn757  f`ޭAO:@ aI`luy W DḶRw]2Ywx%Ĉ'Cv꜒1̍8g&@}!oi uyNlتS˩DIYfu1chz?׹ݯq=q2/coүN\$JL?@cc_`]|`L}h_OvN@̼߁ V`?SG} B.˛9*.( V霒M8۽~?(E$eHO=iMN$zRed<`"W@Nfg8.Uds GX%PV"'u1mlR7N$k]" A!4=.4 d Bs7i=Ia[7 \IH[I9{\m\0GjsD + D"pDD[6́dm*o&`3.#{- e]k.sg%%qJ]P@Bš3[amD"#UJ:CsUn8cr78ˎ[!ŰZDI wd)`)-ӺOL1e*Lץjs k1F]DN+pO3 ['[ %jbX!O+w]01dn6%'HGz@3rBH}\ݯG>h!e-,Q]lQJ_{ Y.%dw0 \嶜!Mo1'/v:`ʅdPИ)i !g¸̽5+6 RؚDR\j*7 `f: 2A0K^0zۇQ h=%=5zbs#!NpbB́L`!mF(;<QF,Xڱ`w2/Lk+Yṗ7Hvl%h*!$06:W8L{a^-i*VedLdd9b͏8\) ֘ZT'J"Liu$p\, cGx]1`#$e#ڠ3BU݋0Lnn B>S`[%} .g↺&uF}+(c[d+q^`!3(;q`| #'& Zjl"ps[ZvX.ӵWrB)+Dϙ4'9 r9և3K=V!cXnɕϸsΚ[բbEb K8Ya8b)w ݔqT}R&Pn+,eʑЙwL#lĝq/?s:*JSF˩ȹp>T0RGHmigXUȻlZu¥p4@ ߁ZD+۽<G~D[_PaQ+I2+;Mj9O>8UKh Uҵ8Ǔ`JJ Ȼ[2ҝB9 @Pw- e@!w>]↥@+ .T=qڭ˵x V{\p^Va)QY/H%|BA|vsY{R'.I'B1rEc(n@ESs@;..X)P̅g`!TsFZ}Hkγ\4tµ,[ "CĮZh]IJhC`N=u5Ty VRgiqPh˷8NhCdi6Kn3gQ&s W67UgHSR/8FVH9xLvHoav'ιKj8{0<X @A/K[L滟@ MƸ͒nGp]kqc':OSZmpHEKq%AH_ Xӫ//]at 7 2تU( Ax˵`ADcf ; J+m*Yp3)p(@aRp"jqH}QÚMm%~v 8sVm}+%r@dhsΨbj:w qZǛF-4X+󁒉"M<U4-tHۥL:Bv/! ͍fĈ _27Jnءz\ y=J1UnL4]cc :IK: 73vMKFP!`;RCX9^)M1k;3+uL s',Kc!jVP+cN0I9e=h8'G7}{ÿ"8ctBNh,Q b22keYFlVV+B(?.+j{\)<:q'%+㟖ǐĘӏe[md[SdfLmL&^K ۣC} ;fBw;qX~}\Bû'%ߗ(-dyA ^k`89fc߅"] 0zCat,884*,ϩK)+>1ͧ DsH3@ؚX)d{aA&fZ K6TV0Fug#@ ]/7͊(+"BhsQ nONiǷ_c8,Nmšvs+޻rύ87gIZXh>2 n!z4Яa]BDs d0$" o v&eV<\>2K.-L`fGfx+E^ 7=0Ldmŏ,xî/[z0f14&a*69 4J)$eڛ6ǎҀW*. #6} ݪq#Xg}YdQt\ ?΃_}{&<ʑyVV oÉ_Pp-QL7&KčCZmkdN0JN 4UiңQЯ钒CgwɖNbB:Gmr#-G">@ L\N0T٭5kR+@[ ͑|Y>[/zōD&jq,Y&nN*-h85 4?1{n *=A:ԌThk1z<. #̄v+؜p&bple"$j- RT̴=s| JeI ,row [%Sf|OlrXEa.@ZE( d`k1 o)͘ N!{#3J["ֳgxa vY񙤜p^Cf'SY~aMv7++Nn9|)\ mr~Pdf&9h!R#Btt-tԙE^sr #-EbhʱރbL~C)T,FZYn'@z)YgV-=]x*?f3-OdL@c3 3G"8 |8~.0lw 2y`h6rÜ/p(19@G+r6d+RxśǗ8d3}Bf+0,eecRHuL4儛5BCp6i6 9b]c4I]Y%pV@6"D`a:p͙Ҁfqaӕ`h8g x GGWK 1|s~ ).)@sZNONVOpzp"lAf4SY3W!`!'{J8O&dVZN<٩-Ծ8)n+B80$}ֵ-`JL<Ω \xÔ} ͍R;ۊwa?tܯ{8iP 8]RX{ 9,qbx= <]Q/+F)K6giNc4G$X5 BflI-DR2n1lpb֯(!c(x[O!33ݯ/kOAH<qe]i2-Ӝ d׉"(*o0fg8!L89ð;iql!eѹxhAۋ=c#En ^[LH+=2!4ѥЄs5cIJ,2|k @X3[A[#Xn˚K%Px!4%k=Ìu|ɮ/VRB$cBW==7zr0]ꦲcKz6 'М@sZ`HRl355A-dF;ݞ(\"K>~d0L2.0jwISUUMSL'hi0BD9}R5z}n{k[LvJ=ˋ@ ]ǰ%3ТNH3f ڪ[z^ ٧0|b1r):1̗:$hh8$'*mVA.7bVw&ql2 (2 A_C|YON&䈆wri1g$ X3İ!d_K`PN9-/ea':D'F/H&GZ=q]=*X֛Q 8ΓNPG$v 4eZf05bP@ Qd7!ml!eٓ7씼 4Ce`NV;d-lSf9v1~PW2< l(FGyOaL˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴L˴-OM  IDAT:Tr`w c4b{21iyY)20VbP><Sans71|cN+6\m8 i-5+׷n>9~N9-O66c%G'KAraS$kZ j2iO?`u59=Sn WX *N|&J3Q s:jDV&9-OF#h!Qݟ1!4e)g@>Ŝ5[}걚52O9-wT k .zֆ%(i5!zPй䕵 sSS҄B(Y"ԂhN iJXga:A4&# ֭ k)B FN@KSh~wM6öJm.|CK=6vN9٠&ρؾH0ihN 9&!sM[ 0Xh@:9LNĺ48}a3WPXsjI8F(Κ22*rgrS(kXFX)1ޗc75Lcb\K6͜~RCN7M}V͒~mNϚDDqj^ Ʊ(Ж 1pġsɢS"笤*d)l@?cul-Ֆ.ܒD`{Ҙx&C kc.[JYnLLD#x-꒖h1m&!u9a\9On;e6 PZ N)Immx<%N")xn8TS!1NRB8b;-c]JƛcC('KRu4T,6;.!^s!ew갸dLL#9n3cNy]MRơ\ lPd "gVZK7kRaWgֱ C91^;|NcQ K@mIqr镺x:NP\ pr('lr!~kXMY 4X 4J;ؽ6 ~TUZX:FA >_(C#-)| -.lN+gk 4 @u/J p\x\idVLJrFĜa%WrSʽ_D%T,96j L'}\R,T(a4 j s|?gIg<!q=w# C:WcI*y-G KP4beQ  |Rt*Cl*K*rI9tZ[*u l9#fMɢĄTr g K'r=) ThyT7 -Od]A&H9DhO8DV_J:0"+ >K30ҳe J\%j?R (u kqM!ulsNJNVj1S7-*Jsed؄Q]4WǦ&(}PG^imh#ΖB؜NCBFH_NL@=PKCcpƆ5Z 4d59uO$'qŅ`2zGg\NĺV! o[IP@i-u;:5%`23~Ԝ}Xi E㌰&,v FjVZ׺X U0Z3!J.T/ĺ59J,/ߌheXx Lj,Ni<ńT^~qJ7H 2RmcL1>:8>=Bp+JJG\ԚP;uCSp?O)X#<_ k\j4{ {0F6#޹wJ8eT@~ H)sp-jJTT$3>VsrRhu*|}T^N'3JJ(2dThdluſ!10T1z kX_.3ZNG-@ tIe,3H&KEVhn sz'2]ʦהXv8<׮Yę1ǐ s|&PS_k8FL|G)8saPX\M6>WP]O~|16gV]3 ]I~kHPqHrǥ+g̃'=ßi3 mPpJMQ-8Z-9tK{.0ˉ ^&Ld,Z[o]Gy.HRTP1ksxH\`{kN渜pL:=[k K !#K#Y,MՓr *nLYK%$OqH(0h?H3% k\Z;O8\RU%r'fk\1֜\U@0cq^HImRҝjNIqImV?3Yc4Q˭73M1\ɌC9۶8ںsƼ#砓kCLi\3'Kw 09F -8gKikPHxpb{E3"h9f9'}{׈e/LD0s|?$^pۯ/;Pw5~YdgBa5-7.3&)U|3:@CwcXam iϕ̅kTg,V gV90#.iΩi_vνo6{E0΁@gL{@ ߞtT@Qۃ܆k5:M>})MRTj3,edRJ4r7 4p+٣յfmG sM}neN2n+yPRl /-kmCxw-p81kojgr̿[w! Q` B L-'*ፙ9cf%SajC1<Æ0S%ne7kf^\y dsos}^d߀YtM@M{Knmrv~wv]M0JI)Ӫi ֶ9$ x2w-nua~i>f-UCD:,lJ`k_,y4G_a!78w`n{OuCS@f}jf+y/cH3رɖȝl5JjPq Btn۫1Vpzf%`v(xB1 bfAipYG_ }E-WCrE"3~o\Mˡw;s.nFu.㜉8:xi֮S3<ޫ&+%+_&Jt\{ȹCDج_g=.Ƈ7DYdP%vCn;4[W~6XcdK 4@0,p wMXjjOݬuzT >{ B,oKG||al~>tBj:zSq/A@f~ooOmaLj:zrU) vLН l1V[*KlƍH='>|k |&i߮?=FcSqje(_o6u48bT ` NBOuF\8:NI2S0kl\Qdj4a7?\737UM nj̵cf-vC7[ +a}BP<*ҥmcB|R[D'4SZǸ_DH6λ.YϽF3[cvnuJ{ل5oQif-p.nG{)fD rL{n~__ЭSlx$rs>pk3Cj͑:emxͼS`X}Pj:;{O.?ܾ^5vu\ xcBk? hZ;}۴@Puxjˬ[n` 8i@6T~@}hJ=f$ԍw)9<xW@w [<7;͗gs}f`׏K5P#@<ݬs*o{oqCe*تrETxmx>4mok[?5Ȩ5ب)zɞkiʛ_|qA~|u`@~sXSۮ4- !܁3=y6u?T4)ic1fVBơ6@sJr~,:*1Xsl2'!XAahv\|^9?߿3w[lW.CX=:Sb %(3˿sA0-ДlR2O hMcPx-/~eN<+IAs,dBz80!Է2ju(u1;N:7nm6x7?\'1f K<?zoK_kg? 9Ncff.o?>{Ν =Ɵib%f3ɧNDiO Kӵ w.bWCw-hxE $@+  [ʾ8k 4OKb)ύ(m)t5v){_}볋A0?Ǜklz(hZ玙J ʵIeur'),3xjN2]P|-y;<$j{:pz9ĀfM{Z鳔3R,V.ZLFGo? n6z G=v$ 4 6M3CW3˚:Ƞ-sRCkK1Oy ~_nn`u*)17Gj9KR7 ۇlii5ZjMBFL{.ȹ ,.Ā.Gy6HW-5E ~mdbZ,%D)bl!Ah+KL9%i&]^oREn+RG-5uUߌy;1u(ND,v*/Zix-ؽBz}kS_~#Wv]w^{. Qw -Ql6gaC@jmPPVݥfhee*_0"k7;\?؏.ʶm?1K (1EB[?heȞ0-Y P=>C>) Dh[5j!lnկ R>j\*q@"@Q3^xsSjs޸~/U^C5Y;*>rIOP$qrK-pSLAx ɞɜ[| 9{ ވyˊz!!دlxdg>c>L0eHn}tBGYJ4Rwn=V5۔^Z -SkuN8fqnq_Ȗ3NM̱,[eO'=Aujw8 ;ZRDo{ݻ,yYc{>w*Cm~G 3"Mp\ݺ\B \5J^'[`R.seJ2\ޛl-tƝ[=ѹ:J3gGǔ%GŔXNε1RBLw~]iA4h.Ο%"4L"CH~ΎaM6i~Q\,X,X.w? uF CXcoeS,1vG i~,­$>:%z}JfI-}G5?ל?wC"o"3t{F+WPkM##($^jyx 2 2 .f?ўE|}= 8b;B@5PdUʀ'``1w#Mt gӪ6!a+X^ IDAT7nM?yD9wR{a'ȪD&knD`ϱvG<˄:Gw J_fE ڭd~%f`=,K6,L^e%;I"⤈@yxl\ƒu t\q[>6 @S5񵚧;G@ٶY^u fL0p*LZ)s> !yCk>f,iZ,Y􂓱}BTfr:jͽ?K<HKGw{0>ajl)3Ӕ:BBg|i+yxc*A]p!`MRg%>Խ|AXo3k+=-8ϵaO7gvج9#r0ZŜKܔozV@FKLu`8Qk88r_ݽ틳/U0wnEX=0CT'`ZHj)w. A̸| qx Nd8{^$* (.[ӛǔӗݎ&s@<|5[lKcS@XST^v wfo 818Q15y Oh$~Jum4NF^3gA0bTϟg>gO~7} 4ڈyvvs]j=Saw!4x%0|uٞq@: ^/c<:ilH$}` 4+3Mj;;gYYskTY {56]e$*ףJ/\km?L3j:v9e,T|=+vi4l?W_ t=0Эo]~|rYF>X^3=jf)ffx-|u5Ϙӧ:Pڃe\VI#4z%\B2$5e.i8 pkC s|. ש/~#]EOF2R5FaVowQe3oVGz#*R  SKkf)A3ff3^=RX_*8Mɸheӝه!II-8qRA=-Y})Xu8E  CeK5S9G*D -~_nuFbFqf[%&D!KR2=|{%eR2[}+3D e9юM:n]׵Gl{2u2?] kP= \sfʇ&;T*YŊ8DC!=ޠ/!F$r6Ad=W4Ů`6<)s ,,,蓇+SO%9O4hKD- 5x+0n]S~4$ii\TgٹYtDkQnJiܝ6Vk;w:R*l\sO}aE}cao{ʷlwO0,8RRK_޳Klnݛ`x/v2I$\E'5o%dEo*d1Wcq@o!( k͚P8@/vQo6Rci,R85QIN}“4 ^j,1Ntm'XhXBu׺7s@?`/x}V?|Qg]ѭHB\ǐ*'ҡxuov1+d %JBsbF1'2Kt!'cl>Ճ3g;FA,?Ϻx[jJRԤ2ٽo>akZ xnaj6QZ< LXݾn$L7 ד^_0H.y;w7?0SSwhL9'0Ixs'78'le=`]l̶Ō@ 32n;;oL  3.>p ,sno7VRPcD%,e͓y"Z@_A!yzjc F3΅ݸGP ?.`"GФd6Ňr<fp`pѝ{$!y7;{.E^pœdP?^{.Zn n% !٣SI)Ҙ`m. jfܜ=B·,r:?81cx- H4MT@V{KE)4U=BO_ƿ K/6O;t]-(SRȐ\BӀ)/.#.G;C4.U2Jk~"!|=- {] > XD)3[zU#%+y!{bGJ˕`lET + jI K>fM\G'24n֌z16c7<L&3AOITGbI 46pTݪ̌s\9'.]8q>с-p]R*7wOÓwoO ]+2L+&?Řg"{L}Bktr dD4Drqs_4|0ޣ]^'sH%`ʖH<-\s(%`mk>{ϵo#_Q3cDHZ A|-~ |+Ȟ(!s@ܧo0c ‚Hl$QgFEH|CSi?p~Lt^|RXY|>S$Y JxCQK\ 4ks3v7w jQc:`ny\y,W+oDT~ҏsh7hON80:L_RgLa[{< c9bbEZ .rSs0nrϱO1>%`KdaUjVICFf97(=x%QJ<8I*#XR?)7QOໜ^%[~-ΉqL3WZTXكSS]Y2%94DArJ&|[ `{Q]c{z~ڋlOPV4(Zu9Rɷ-xEǼhV`ڒPY0_shK"`M\˟-ZQzzMѼ, g}6;"‚\,*CIaaD0G>NY-~B#rt%.澧=73Dr"H2}dOamfKџ߽hq=c6++fˉ# ̸_sG׉qs^k_kѓu`P@36>ppLiu_ ŮsxPGc\Su)P6\m.ط?MKUKK¥ s񇕞-mZVa@j`b91X>G@y8[wGy=9DC,-ʊ6ͮ%ɭ.Z\ Y`FAqGʄ~=-b< C,,Vpǩyf" Ƶ D wq=VqB7^6pC~ZT/o]ãnn{Tɚuוy9-9ŕXӊY+Q#Bhh~I;EV~RREZmquϑUKZ} ak< 9yUQĊjRov8f\".N.K^'up09ΚZYgW?ۀc:mN6 r%ZȻLYjM4ߐ)넟s_,GsHvsʻ<x^"YE讒kQoѺL }^[$!-b{qpv>Ly6nWR%>") S{vO.Z`5QHˉpŏ p&hP}ivx|KGquHSL'e&6u] E [@:K [\GsAOM>,\j=i&>Վrwofe( *p]P7yN#nHc3_~;k-(s}v|~[ecX#SIO!ʔ3} tӾ>\aXT~]:ll} >ǏutnH&)ser`9WFR䨄SEa..Jȑcp 0>#L;^j]|lDnVe4L3 0f-ҤԹ&.Ss(gD Օ3_ ؐ{uiy~+r 2́yN8L*nv[]y$ДKMkA*pr,7G#nj8\"aTxǘ^!mXs\Kp8q"ɈgЁur|]4mr7J8 xПZ "wҷY,?#}rŃ07g$IL˥Tʇ(S*2ʔ2۶|W6_x,Eg3}gHH= ZL5RMr%6=)X}"GKx1ژY7> O9>W3sp]Ɏhh:as~ >T lfH"$s%(k]ɵo.(%^:>?j4HqmjV>4Jݶ֦JV,qUWuGmtGr+b=i)k,rl[x+1?ȴ$41IXc;T+-O#O;ny*o/~v [~r\XƽAp47эjQ,IUuk=}ps=40阖 $L~OHx\VEs>WBzFҌuwZ'x|L"^ T>,}8t`8Df"9 >lQO^잽jzkW6(A 3"ҜRVȂgfm9`ig^sZSj3WX+r<>pqČ Z:I`Y.T-n!`ѶM%wG?щ{ gޖ7zrHrE9 0HN9ygagFz,}J ~l9Dn&kQ<6އ= j-rwu(r&EΎ4kIGxNev:Fɹ i3k/nlE[B `Er0e,@Nm _z|ihƝrru/x5l=Y =VW*`.u.H#6'#xU9 pc gCGp 4%PΨD(C$:rza! ` +ŏc3 S@.\\.ںxWc#J훹(|LM=ﬔ}EBdAw5%q"zpۿvWLZSMqg cJ*pxŠ99-7pAɝCH~I^> (8#|o׽ZW4#x]{j=~ 0f-1K0O2jg-C[Jscܭ(fiI+Eɥ?-nrWɵk%LϺ%hĀKiEsav%ȥ[)ګT r!r c 4-3ŅM…QeH#f8gVrHLi.4?+qF-Jڧ5rBui\LTCU=Ee/> W,/LZ=gɹwEcT&Acy¯(ad8U$%X=R->z|yMD2g2L -oyl_4"HFbZ[|N(fCZtRCR:糋 9|-q|:n7 v:8Z)XRi)8% >\F9J K((.OJ*n{ry|KmY6v Q擙p2JaJ>3LK\0غ IDATވ#H 3a-~DI)~s]?9Lt*Z*g;̢X9)aSV5Z1ݏsK|5Ŕ2ŷk\%pFȡ BU#Pg99 9GVB8;!੗^_1xWާ[9݀CۧE `(׈w 04|xYE' {<\=rem*_XsB22-EaCpcn,Y|7oط\\ -$mqQ8CCK-9ܙ Q-\BjybNjM/ֻ[w="l׽! 2-STʇ7$9q|e Y#uSL90SkKelKS ϭӎSZtӏ^q_-@Lr7 Y18|ˍP״Z~rъjb@͆17ҤڕR`fˋ9D>I߻su |yr Jhd\ n@;"lLr@%PʛVr> i񘗣`Ex9 [0^;vQѻolEr590'ݞ_]מ rbVO\{Ǎ߄S?Enɩ|V fA5V{c^AG-1򜰾&L+eB,F9BWD\ir"R"5!.^_&Me8<We%`߂<0;)`JRdjK#E߇тTvDs`xB05.KA߫6Y 1(](5u'MVtBE ,%(ۿѣZZybԸҍ5.@oz^[\Z2@A-H(-֊u/88 sK]3]۞2햩3fV&|p u8>im <9)pi.xvo /-/6 C0~-6;SYRoByijRc0+npk7A2kZKQTCrf,/I4'R'㒝r4ѷLꕓ9}m&mk>8Z8 8h8؆7=MX5#TJfNI (m b=H4Z22VAB[a; Eeq8-#-@R+ejOnymfi5JsEyORzk!5p"Y >Bߝ2 <7|䐰#ۃ]1o1UsQ(e)oZK$/lqL*[_ӫ-0%^EwmX Vi6i7O(.jn81;- },?j7طG7N,TF{-}Fk1KO "F9J^;REO.5;jV+Z|!6툘8ԜTiwHTIxLYrt^ ׃`&Idrjw%d pkRN2~v,n;DPS~[Kvǎz _,8(吵6\/ѷ⠗S:3ye Q&WFbT6Ro*0|BՔ%_mo13Q"vufۮ|2.D)}PS(DL͙ϵEӊ0"˴$nh|Rd[;6u+V1W[%`FS)^n/bWAfg~ Y6ՑӍZ$_5Vk\LsPWyrȷEC⢧tGW-Qwܩ1sKXpD t!61 1}JD"1{=BA5Krh bv~36m,9)"\_E҅ BZxV:F_Ϋ |LPnG78MŢR6Y B'JhxN4ᚬcSY +j߹ ܝ hRiѰd5gOǃA& YlqEWuf\pWaNVr7%FG[ftv cAWЏ<%r=5\VResfkVcWzA"Jϻ%~[B,9}e+# M&3CCΈ;!M= E-_)e.AHD!`n.,LE8v9]>0(x XqP⽘ pC ô@ /# zQ9(nr~}ı]B-16̸pbf65`)*qm𖛃4>`flLN@3.?ڵϺ^|H ~%+EO)͋4n#8+~QCSԐ#\i8Ee)]rz9QI)+ykh^2y-oǂv]7VQ[dZ).G]&ӆ!%;: vxݵ :G$Q?of/x]'~{ w8msNsV0E򹨴|;anDаo{.%j*&sʎ-ysxXL 簁3ե5uwYM4\XSʬ ܅X>GD(/^ a6iCLlS!D Qx g8Ib>?VË`R!"Nf2Ĉ6pDX Ŀ%MrJy.k[9MA)ךxx!fI4p-GB2p:xDWrP}~tćJ$Ǚnh&1yhx 80Pqt}ԉN[G%EF)Ft<ڡ4 3ߦfWRS];Fl9mDx/}~xK ^U˴{R.?4 *R[i&UqTQwZn)cii,H͒5N=}m&[Ks)vɯƍ S.C1ϴ>w8!a-O#$ntw6cI&,wa`00RI-cULp !/6K2 FCY,%`(5~T.IKfiW$UI{Q|RfE7/#RI*Iǔj2-L.YrT8@1i3~ {όwJASMh훬|zTHL%Q#Jѡ5mG ,IhXR%qR 'pB9/=6ofe"uS it>2T.pBb2`V}\XPC'$#Z,l'.q7kToD!N4<ˌX5ot˽A' "0вq1n[hf 4ݩԃ(rmDuG*@=wb7*f3|f8[QT;UL/ q@ڵc0hz> jfU* -1mt(ҔIqWWMi9 g8 ;Hj]0Z5DG!'1tOw|ft̻r0-7& "6\h`^JWcIhX!(MW3D|!D5e3Vma:  1—13> #1Jxơs?>vB-ߑǂssC9ɜ b*]?ZLԵS5Z,sMN%u#Aщ(SV) _\ϊ2-=WsSyMtp8@PXI94s\ PpI0{Y%SAk8C$=$v8=HSc yYrC}QMKuH%'iz Է1Θ=|l[tc HgOS(5L7~eMGG ҭ9]KhM++~>OO &iYf]pJa\@wRli2uH+OA>grjNJt8*p,Kr "e+.yOVDJõ)c 0M%Ug,#7vZŎ @"ve%{bEeDX\qNQ"Rh 9%[h#z=Fdʢ[P_\_tM Ʀd?Lȥ!rLU*vfp#B3N !y.>5Prl NgPf7~Un@q x)pyo~۔qk%^sjNP[.eƞa99DK9F5N#$OBsP~ <|3 |{A0(N+k\urɹ݊B53kn)jk'hRkXF,nx'Ծf& rJY,Awkv"-b26xƐIRX&մQBWk$/dpk bxN8YyT^?]d7Y/ZѥL2X8 +8͈id/O'!cÌ$ՏK?G-xB e`$x%liEZkG2p^^.Ԏ4)6|2x:PK <.K57B5Za4 A(mfA! }%W~T3Q2'i񑚒Ed P;RPvةYY"Tp@iQBY3OK8NIT̸gPn=y7 x[xN]4\ZJ 2hJ"SBz=^#hyԌIKcE E.[J\4(#"\%*b܆SހsԬ4лp, 7Ez֋@cJI)Mxƹ^) c&*JB_q Xp4 ֿv? } J;I0ZSuOUF9!(WVEvQ9J;JtT 7ϑEipj_EN:FFHP?)2XKIMgRņWY yL(RT -;|Ê^KS;ɟf&Lu. fxf—,t\g/uZstF0p3XF~.TΝZzM"$j1XIJqÔ 0Qro3H(MAYϳ(]يvj:nntGM[*@mB3lצ_Y,Št`)w D˺2w Ѝ N5cL]y4u ~3ΥBoiZ zɂ22΁3ޔcφ -+2 eV1p{,Jn4i % Hxv*> ^HT&u0Zy{%/D bNhOg D4`8mrz'>G߷i)mIIQ77YcV8fos71u-s3tX5y/) RBx2SM]u27k1GTH2ѩ94BUTҧ@:Z7/=H܂@8JfF\ SZlV3ҴTrcnhl U[҅iv0DǻhFgNK?-8_ |7gZ7mSJ+V mj7ΒRIAzv,)̆e⍃nSQQ=gn9T'dR\e2j=P3EegPoNP}P;TM~h$7[WYt[f%Y & pLy"1pr@m9Ux|B;1F@[28s iuB<څˈZ'gg}q5*3͵(0LMn\}:[9`{8F]z:"2qMx0575/m18xVQ˺PQEA/=׸M ҇,~>>{PZST k9R8GU N'?>k%N5`;w^{0j~) xR?[F\lqq;JKS< h6[4G͘sVnk'`q7`MLH4Ї,l@R'e5W.8v"9M+TfLS}#_ <%0F?b"*;nA!i[ܟw5%Vssk Cdd Qstf&|jqWtȢ.8[*<&V3ĨÜZW+̅T+` g k`mu]ii(VanIlBN2})qL0|~,mQttw'}%ؠ2Ƙ+ Il5hv<)Vٌظ eds>stI'F9Lvki$~ΈJ,r%g8Ikonǀ!H-0)2DbnDO cɇ{5e usTy'u;֑{s7lm'k;Ci}@"\G%^yeH2)jb3L<4L0/A.&->2Msm0`oj%"VpYD59%#;hQiӳa@JRӉߕ(ҟR)CZ6_Ck^Cơ˄>u["W4]VX"Y9+#({5];5\xFg=NȑuE?0mhҗze:!HldpZLV3ea8Opr#3~TMpVבYÁi7-*-tKnF/KFҐAe&Mhml1i(N5o"yYYQS}J~cO)̝Cm{߾ൠB{azJwrF$ލXTQ~ 7qwy V-4fCKI.TBႷ;w u$W -?Y_Yi$vIQ:B+tsK'>n.3+w<n<3^->HdsW5iFS/ TACu&͈OKD=gt!$͎y0x1&Z-Hu%V1>׸8 hsuS뷐pzQ^[D}3ݐ0%q.h|w<w1p[mKS!+&'Up.,@yk6{C ŜMWN.('$8`O sd\3\^(ӴIIP]B$euX)Őr#܎C(3|L6zI5nTE1' ŋwZaQ aƃø_sTAgAm6ZxP2RV 학~wQr[I]u+gjYDH/i~z%.g JQX2NKΉՖIR4( ԛJo o"jghLF~-0ap-{ϙ%ﴻI\#ah@_ƶy5?LC%tSj?eiS @N-31r\vǝ=Z6Iqڎ֊vkX\qž\yu1QZ@x_[O=(4 vmfu_9㔃wxy?$m_' mn{miFPBrnY|/VP4;s;aWrAUNr}v\&%ӚNiQ[Zi撜? ݩpp(7/jZ.J^p$ r-@>5^+rQQv\x@5]ej_&-nur-x sėŜ{>Ui{dc.8\ncwgI=YҤkLSQ)S p;_L'jM2N>9_`S4tiK%Mڋ];4w@tT[F^ #k ChF8%Q"rFponz=7]gv-<VHeQyX`YJSDHms2 N9@(&{ HIn}RZ`gOLbOT s _=`ìҨ9 Eߙ0"֔% GeL <8d&~(V#ۈ Wˎ\}`w˩U9=1G+0LLT>Z*0Œ!1r< E혶&ȹݨKs.F*>%Ji# '15kۜw `KL%נzt--Oy3s](H_5eəaQ1v~68ӬGxzUDN% I[1)EZtZ) )doM:3aIɲLMu^U?8RKpŵn97Ug>#\LUkWR&PjqzkV kc |YIj lH EwЍcU(I/";rxc!`s2LqN^Z9[[ǙnkVO^syeVU.] mܓOfϤ6Ɛ%%i20eDkZ۠p'/?K41i=}ԸaLMqG8 Z'HmK`T zYc9&$ dYZAE$ b[' @19ClR3~|&Ƚ]'P#t / (L3̀:! \IM_y08Fr Cp ɮ:g0FTz^S\L70q;@;|l`we) ÉA[(76JR뵵4wn4VS)0 jbv EjsCBEԘ.{|fݫ&08lITz52Qܸ 8#jP9 'jd@{RvT "% F QP ޏK7Zo9X[Ox^+ZٜQ5"kg5Husxq &=~Z\8ynF6#iM1fVm*fs^h 7A9at8F}{V8&"M%6&SZ2h s9V"`=0F@) gJ%@9]5 #keZ*n hXC53Y[6M^\~d׼~}F@$HrT6)Ո0HYwPD˴y,AYh" <9[sϭف; @TK͙#NHz5J/$W _df,IssS@ B\A+w\WxM?ytiG;Jb\|>΃~ni T3ТKiS#X$سv{\A(|j`)P 1݅3|9z{<ذotm1S'XJ%QMV*#59'5fygnŁ/DJ>T,j)bOX>ZwYHAKGE~V6x+Ԁ,Z3N N1tT ~yNވg|Nzi0:g\×f'}/ih̤) նb0{K+f| Ad0-r[xۨ߼쥠pH@*]5{Np9ݦd>}vQIH&^5{ȑ643Xu(9G!NA5@dk)z04Dzf4ݝQ\D%np4SMWkL}ck@sߵ6~Oh#V~4p Sz֞W`lH7P+5Z:K=ELp,=*` ڦ~1q)=VÓZ&(.1+]C'*.Smʛeo/κ|ź݊A|\BG{sD%M,}פAxV>\ I Hى}E(N-[T\b D% -V᫈MkÜ_5fq9.sMs:9D=secbsS(TPx vl*EH͵Qcjơ~𣹾\ wtKVRPhB(NϹZyx粻cG)HMV֘Ǻ@קlJf6gzNR[:joniU<9' |hDDV"cQb{s{qy0%(>ie Rs}wn8ߠ%h@Hǹ?˒p @rULpoN1 ].ѵ*;%Ϭt 499Ts"kfTaY~LY0>YtK"D9Yvb( Pf8T>A#cmF`.84x4;ꚛ0s>֖%PùE|MDLH[f7=Ws/$5-0kQuS&6Ipwp6\^ 2FZȝdpɱoXwis8$tMk!M+ۆoPؙZ]g]d#p68Z Z~'Ή<Ө2jv̥ %4cm:$(m 3Mh/P-p{XC \!EF-kM z%hmHss7,^rE+OG>sb42cu<3$VY Sѕ"Zƽ&^h pwh#V.I[),aOaLjBe4Lmo GV>Z3Kdr`b,դłuT_ ׵ Ѫ6K"m'x߁5o? gw71$MZhsYR5UoE╸1='bߠ%^WjT9>*}aEZj[J "+rweEhؗsņb=.`B-g0h; *++eV;YYjܐ{ɍr& MGZ,Vs;%hO cLɊuE[vYXp0=kצHoq}B2D;x:fX6jզ1SG{~c-0kD3IPZ:|n_O̜L(Q1}HJgFxiR& ;3vGȈCӉo^@wḊސMjrS>,\ދx!S-RpS=۶+Ҵ"s0^xKy(} <ߧE0ce"ˎLj\ a.pJ3 |8)c9T%-+(3lTndDy#E/PؾIԬ#+,A(a&Z;9)Nf[8$(ni}jV<p䜓< rx #9}:dM]GҶ4e#EQUٺpH^}&7FEshFD<`2WӴo=R kȎ4)P؄xSLi$X߼Nrۃ"6BI)0ZAyA%+ulY$J3Ú9I/2Z*DuKf!To<l\p<2*\싑u4*hZyWI x+9}YF\\}xόGpHdku[S>eH%az9|-8ð$Q_G B7ZɠѨn>p&0/6I E6(ԍmXX\|β{7Eawdv1V 5Ar!v|5mi/uUJ IDATspB38O?2&ł̍ nEA39Ҽ׫ cwie̯0Ԇx?;|2mT64U))Qan0[FS](>mB吪7ݯpI14L* h4].YiNDyv8q.VMtAVe<vb_2*eE*S,I_#vz' cK9H _㧡E[1b*`Z8aPs1-Fai<|&s&Ѥt|Ot[]AVЖ3(OidDd }&a:bQsGC)A t%p]/+W5-Fkvk9sY6Dm<-O:c䦋mOppAi5־}ZzmexLB!T ܎δBz M>n_t(tkA& nAn yUn P<|gH0-K̍ޱsLfIJNq[Ԭt%8͕:W"M_bH`43bO͈2D;iejT5hy ܀{Y e C!/[NdY֕7{NS*V2H dc@d~?Zs 4rS3 8~  U}ne8HLz~vP/ ;|$ݘ;G-!HQFZo~0UTG]po-n+Љ.$ʅͥTPˤ9$(39\ʯ RZhKjόas=]k @[`s(u@BהB4v( }/!n!vJJoUs@Hۭ&ah%ϑzs\{䖠1M"ch3p>3Qŗ*Y}t(OyEg OpgW.˙ 8vRWm3? guhZŏf&m-܃2>0<aZ9xmM=w-pM+߫9 *3?[".3@TK#++nמ+j+.AFT0-2MS{iх4iDU}CĸOk>;Qe[qZj;)䏡#)R'zX"9;HK Mׅg\'A8uTFL塝?d?AKq*hAڽM#_(o<|J 8<㮘]K^L(7 BQqg X02l=Ӭq;N;C_ ;rKʡfs(C:؛o% zIYE06\/q @>C9vm.098n2@psYtZ"&pBN GR fJf:ky?L96u췅 >x.9DOťVk06BI85G#˜87w>6ͰJ5cQ ?= "QЇ$_`n75K(%HD @Ҋ7܄ I'xpgz%I밵aO0`z ~3,@ HirDIq3:E|;[>UtDDFFX{׆`/O p EW) OtV__sK:4#Dح<願Q{\&C̃~mhυإ YDeߒ& b@||W"M37Sϧ `須hӒ$k2Hf#!K}z'-FYxv/ˋsqMj4M}}]&f<'lEozcP8<WJ3˟42h7OK%W'":5.QEvPAwwR}jo4ZEx_06Qro@o0.b=?&DF, J%Ku4Kx1oZf{|.7Z?'Ά%X Ws˳Guʱܖ"cȦlI/pncT.ƹz:6ބWqhwnDF&jfW_.D.,Z܇RI'3fʜ2E fڰ0f&hNxĉ-C:@IG)h(D26ҎZ\$+϶^78A+-0two,V0&WK ;w֔>d_Gq+w8Б~ 3OOK 9ZZ(m}Z ~-Y\h r_p̎󓩂#maS^;8-z5KG8Pr'4{܆OX߭{. k!/=Lc[IYK <Ÿ])20,m:H8?P9\r$7= _D-M[qIAJ&,r3z|[@)cS&Ne !cޛ9LP;8Q8-n9v 2=?a%4k0Jb 8~5NoYڌ::i f5ޔe 2eH3؋=Xs~|5$Q4֎0#҄am6Kפ  {tjF,{,u4x5hae4&p}4NTU~}]-gViM9j^UEı{Ƿ[)%tC;(.2"Ey$ݜ|ǽoxӉ|2Ps~_"2䈕~m\Dڻs(6Ia5eHzgi!'FI_6!mDpϠWP4߈@O!dV EU8%4%ew8!_\bC~#T?%PcukeE5!xCGm ?@@hCMxj3mc.Dh %R̴uKח`<HW2btd_3x^IO"5g`v_?qg,A󨄐, gp_3wS'۶K=kqN#=. ~-k"!6wXFBCdg3u;UEOOd->`;1} w o  lQ-Yr_9;s5Ȝ6Z`gΐ!!tCYm\KϹن>C_ǂO$|r2i"PsSztN|ɘL#ړ8 ;[({5tG=͓hes4"N9 8&NN2M+|;X{#_]bS"G,8t-I.8-pЈ& 'Պ\/4:fG 8OX&hSkq n-wjvc:~ ɟZ/z-0p,* ,u!K<̋.rz+!ҩoE:v7K1(Z+j⇑nG7% +,7…[go%F f0f)٣fJX{6ῠ[^R#vrKeS#W,E\;!4:98M Q@oƒC| Fk =uj'_o !jBŀ0fBDL%#a)'S܇6snh2_qo?N2ވ'$N ˥Y*tC"un 5%sB~b:oKIB(K* 4c; ԰Bi-GhI<:d0f_u52\B `w(CZOOgj\fzM\ .zl}pv5ށkO MwtJk`#ıfgΫ(<"':I(75;ItT^okvUW9۷ܵ*_Lo,:q-8r - &Dh)$Rw TiRMoziB%p:x-eB0va-ƎIe0mFeFr;>;-98*6c܂ c5&:OtHLUصnlq #QUxؙM׫7v ~-A[߆_k1[%0Y48wu NM. N)gf0̱Tm$x- -BYb%.v"jcaZmiCǐ" 9Ή8mz@2[=>=.DpwCS6 fS[OY6clRc>2nNPڄRsNSӬ~#HR1PM!Zp睪WJ4[]Be7oMϵH9> $@sJmݍ4%'|Od!>ø>U]-ᚥ{ T]iv(:2GPvXp7r{>Z0:{!)ahrA42lԍc2tx;l<${P| VꓥVüiV}_SyBt`=lɃBZSShGێi5ɛ1;"AS*ꚙHi '~Y!:g;sd:fn#sk+!Lw M,1`:w> ش|“ŒUb5D6/JUCT!xa7-rT{hI%pjL[r mduXv1 :aМQx@5Q.}Jr ޻Q{|_uߙdsq~][c z";b2b:ֽbI<֍KSOeRALTGc%Bߜ ʏdǖpc)LwD ^\BM4ξ(p,gX;wH)n"՜wi&.˹;|sGC|=UbER (\ǟ;Vſ{ʩL3Q[ѴH0ϯ|Kݕ%XA Bl;%q!j$/kJˌ>IдV%he/WqjGu/)d~+;3@^'RBX^]53AJZ栝U:"ŀӚXFEԖ qW}xoktrX1p' 9æܖrPc)LqԐZѡg/wM=>4j4L>agmvm[;z>hk C+Qr9O kL1)U;jx 50c斚d ۙ=.Iahg-2T/vBB6ntޱCSA$|b@74 S<U,1;qdk"B9|K>!Jܟǟe7t +=XeߵNEz)f8m9{Lq]0 @qt7 IDAT!uÿɘ[C|Ht97w$̟Yk'?WÈ ]b Ƅ Gv+n)hsPjҴ8h uY ՟q5{<<md$+y6Aһ~?[G cax ps19) O~-:ru` mYɓA^sGY-eŀ-gx 3rxy0s mUBxF1W.z_P&VFCQ`!#G@6$9ԻnJӬ׽-e4Đ@2P=,%F{> z9n߇OwÏ}zx!yd29e #gt_SLoG÷U=~:*eqp]0J{߯3PŎ6&:HC LtOD$Ld뮧cF:|RL3'>fXd[ -`b._RDPc4&UnE6abD4~)uT0-Vo0ỾÏt=d=@jN/#?uPSvn?;~==>|⦔J$bS!S%DLJcڮ4ˏ]nS`\ ZǪd΁ )(dYv85H"2e2\Z Z!ZR_*/ eB W8.znt%cɲc$s88w8×pƯ. n&=8e&ɆP4>6q{lsPss.*[SG+Q-+BІs9 `yS9ùVťT'P]Ks~g"0#&_!Q]o2\+sKbGPT(e,'XJzdԗww֫l:Ga:%i1uNZ g{tPo?zt'S FƇRY,&zqZbT@͌KY;'_豉^P,`Èe,-d4#Wb/db rXx87gh^?!#WSC^O3 k*,gOwCB5ia2>TLE3eR+=蜌aO8JKK@!8֛B 9L#.* ٣. zW Y,!oU5p4GfMӌ3Vdj)`#'#zs>:q.^Om Ytk@a@3V~Yxc :D7# o\Rl8jn 9p4V"1gnX-~>I4͔LuZ-]&#ouC %C13礇|C|kt 6ki3эiH^xƺFl8Lrf$b]H1Z-5`cV)Zs4o:_~1@`zg2@Rtęo1>גle ?:ZwiH! 31éڏ(p.9S:ɞUfv|rf֐m8In x{r !;#fc2>2K#,^;R`ǯ -"e ]l;dKcIG#Bpb-i[a8[PSJhEr\}gvcY{^~Jej;9@}_\DcpkZ Sf96\uiV=i>ߘk"0uFc 47s $W8|lKLNܔ\y@(nMS"`ulsk2+4;7 }3D;^Au8dvt8epF~xFN+k%|VJ7Yp Q@`]pڭ~,r"(@`*'=үַ|k{oSƈP:*G/J.HmpT#ٸaxX&n,o7miW#&"]sh8sY }ߤOM^fOIHF k{#t3LBѬ.w|DzG.a2( cW=axߎu d4 68厍/;h8|= :5ۼq7Pր傶FBic|Iໝ77"4 q7!9 Z -q.S:R@ xfU޻.Uڳ-Ľ=Λ&8IG3L+v(&л%PHHӼx Ǝ6DrL 0!A.VV@4 E„\oz-HV˃9lwNwsO:v;%}Nka2̓y/ Y3:=N kCj=bCq ! {8Ytpw<@|776;yN{ʔ/H 1o(#1cYΊD.F4hM˵Zi$ $Bwn0n<&(Rsʦ$.*ZH =sQS420I94֒3C1 47<=S-].1c b(d&&S(Y[J%bsm]|H;FYiN0N@Iĸ ׆V7uFy\ s,p0ٰ"D 9ѢfJL5- !4ֽ3gf`l!#$4 *fMRK$DlU$TsE!Ȋ`Bf⏬]kmoiW׈H*Oa5!{l8X fk&6_[Ym j9Yhb<4$|v+ŝI(1A B=F9vN)^/8$]A2fjod6q Ao#4-!e;% j4ߐ,n}+ T=DIӊީz$Q5,bX ds)fmsir@C QxGFKwlÆ > xIᒲrب5ж&ZT!1N" :sgn hlnkFLUd9:n?1{6R{J4ntXDbc5VTdͤRճ8TC4=C{] w3ф>΀e3}$kRl(n0@ZyE4zLM$yt}SMEyB"=$e/eEcxC'Fkl֤*;xkgːR UU;Ҭ|HgBւ-N. [>gkq9O[I*匟u˶kwk{E+Sy$= N/0Z Ւ:8_L˞|w}6Iih셱Oia-LjI:wvIJIഭ!m\Fyݯ7Э,VN:(y5ɤzch6]b5uɡq>_#]7O$To5m( 8&ܐXHFx~G7cǩZ4kujBȁg,!FBf/EZ@e{7nK9؉{"j _ouwsnw-HrҮDqыRLLK sS(cٵny i\b?c'Y}Ν %,8ھ>i"}E8—$@QMlG\f<1+Ų s 4&y -+NZ%|%j+sHjd fZ*d?n0rzKӣY}+@N},r9[jnk,)m Xt·kF͐ b7nMmhH0Ϝ+ )wv$W7ɺ>DN%=!wp4Zb\rỚp>]z;9rI¿U}fsPv ,bO@y|h~,&1u18M(26ZL!%kz0["Ǹ.Sw^Iׇiĩf42)ܱ9+m1n %[:͏Y|oLHm^L P=Z5p4 kA* ~G\ h=5фR.3m27-ՁAP;h;=阶 3tu;wޟjHA&,inPM=DES#G,[&W$m1 gP+5:榓b㬭|-9raf&7j,3{8?8 Pñx=h8ٙ (_>@ԄSAM\`\!Ugc\iZa\1J=ƕJ |%sb~=^}?\d"iD-!Y- zO.>r@@R [f2{s~8&v1=;ˍnLH~Mt(%Un`:f^N]ܵsX !qZgǸuPfῖ@5'q` qBYV -i) ԰]PUc3@ip 9V?L/C-Q) [@c PYOX]#XqI@z_j,Rq$y mw=u}WN|T.H-1ٻ¡2L a>m&zN;2χs-sח&\j>FݴA?eMBw", 8%o~*/@Rn[za4;S:G@"ƨ4 q.[ ܒ~E`ʉt%m2|B.h=N[8>}]H ":_t$Û%0n'(Tcxf]5+0” t$Uq>$!m[@p3YLl»: 9"[@PjjgXw ٺ <@-"ȼl{ 9)c?MUs%z ID߷E0!C0Z4ZB0D@&8É=ZnU"w/Ā/0T9'qL{D:QjELXC~i6pRECCƣ b'KFhhvX2I>~{nigG7ބlJ< At._ӵ-:2O͠yOƙ굎I#  TⲋKٗt,!LEhs)|1 éKIԚƜb].ΰP=Wѻs)O؋>5aX! 08up5Ş:qCͮD\~37港q,RvFsiG~|Ń]\Kj8dd~ c~}Tƣ1bau=bWα%ɭ##YF٩dK1 +q|~!2:ck1Ɏ-1hJ\P<Ӽ+1Ol0i+-}Y-/hNu"!,P83ְ!35&<J˔N1wg;UH}Я\!TLbQnpPD5Ol9LL] t|iDwGƎ9 /3hKCH }5p)E|}a )0@=?Ɣn+F &8c7pR 3%xIn mgCL?|c[˖Pg3$;רf `RHPW)țBxoAcA, ư8qMb˶4(]W`ή>Bi_YʂrVG"|o7X$[p/gK uk6w&u/kx;Z. ǘBgt=tOL2<ǣ/9@)A6KcO-t ^.k۳.F1JXi{vRh9Մ֌!1z`8^b pe(Rhn]`Db| Δ1)L^9bgf/">cPΖKhBHi(uұL/Z0RxNn?S-Hyho\}] :szO`fH1F][/To?2>f@!70[ܑLͥ1XI}qj.aܥ@fp\<Ʊ{c*0>߷885-#RGa IDATf_q_ Xa8_a~ uI`ۑvZ#"$ȉ\auJ,fUۊx}Mkk)TIidFMϴ]H۝ĭk /$xA A|c]=wY[!YC ,_I|5TX"2{xLֆZ8bcB)lci¸pBToj&i3ܹ:+ZslTjS}TJS.6Y'<yMa㉑ddk> ncgkZ_Ӥ7>@4J BM41CgEާq6FiߘѺʎr(ܬj4?fk⦖ⵂ1֛cҡZ Àpm uM7=1MN\ 5P?23מP۩3̠5ՂfU@tBwjl`bXMk'K%&N5!qn^c|eLcE2(ǘyRqyFU@4AiADϒ@g<{֜5 aDŝoGSdžjA0I0Y$4Ov1v[H'|OK͘g'20fsOuiM!7-vUM<9ox JhkZw87hC!wF㴺gS3 n3k,y&e}~ Y{7mG#c!Fĸ@9s#ݛ̚Q5#k)[Ķ7sR c7Ŕ#Yr!:۷qx11I۳xB~Ez\{%nDfLf l%hyyG'3b10-fZs2A19biu2ԱӜ|!Ō}Jg@@o+5?jA-@r7JŸ2 6o6tKbϳ:s# avc |- eʵed,tZP_z~fGp8HKh&di`#ؒ s&@2֝ǰ# !X1Nrk΃k:zAa}!t nyT\lxkZV~bm0D`r I8-9o`_VRƒ <͔+i̩\ k&gJFkygˆXd!v&OC: &a.#6o)trOX^Qr8Z+o-Ո>RS_rec J0.41(!׬u_qa`J.]sykfoYXW7zq=ɊcKctSݠ5v\j/1׼ӑ, ~k8)r: 4YXxyư%]҅%rXptEX/l3׉bS^#a|Nb5a Vi/@r`wEB`|ʍ+њ'd7~O΄|uĘAs^jt(;XON`Xq=/Х [H}L-fvzs!54g%4”m_ j2S!9M{ēR's&Za`k:=i- ^ҍ[ K 18SEس3 ̠90c F ỽD dlPO ]mZZj6F@gqsKxspZ&&銱vW~_4&3#{bv&J-&anBaPZCa=GOF{[&3$̠,Z m| m- 'tӮ!0b>ַ&0 ^ELXx. "@#8Svb9@<s†00[9YG}N&nUA:ߧ8 X쒴M䘫am`+7bO_ҮG1!qt48ߴ w-]>{j)dҹrIhJAW &NKlv8j)ą  ֪ hCea>|cgGI/z_ 5!|D4iVD&&|p{(귘sO@ki,Kelzw eْ,s%V,! \c\s  `J piO}Oel16oG #a<{CxW68F~ @u>¸#5IJ'h'zK4k;NPA\ҿ΄ I$ÒsGż;'Pks.;3@̕9{v`B̶5#=ƕ?BnTsQ|pcH+{9鷹:G_cbp( ʒ57XGOJ?i~ *e6\gf|h A ~厀w&DYc<ű38mTr2Kw8Aihac==/wwplgtɰp,8? mKcXj/s+x/'lda^fęzE}o 6t.0I ox 5g& \,.vpJ#7B72膺ǧ8: =I:v; CIf .i7vH 7[KaCgR$3`ΠԞ<`U@~ &E&t:'Zb[B:l mV-Ɖ.Hoh=l3Ưį k8f36% Np67Q֠-pr ){m$>F;ﰆ+6tS6u&fK[b Fr!7s|KlzOr-H270$j@''bߜLu`2ln|cr}fL"Ɖq@(l?ǟх O_ G"I"Gsښ̍ác7wֶ41[/w+ΰ-%fˮ!}ZÄgoƽ 3h˼L3sȖAy>l/0ENrzjM'~0gМ{e drɉ2)jLo>5 N;_T"\g9#T%-kk+ks6J Q[sLTo 2(k6Ti\ةͩb-[.1BuNǬeDg|w){.0="s1^lnZ`3SYP?ǸeW$K6\{rae kX ˨rcw.ײ>(s߼|B.6u0E&S.q~HK3(R`5fɚXWA LdyK(W;ՖMIޔn uNZ`9ͳ6k|5k\jjƴ e͗xJY$Èjk.$R a dSr꽥ptfD[)Y4$sI|͓{T@-]$a5XK@P_Xcy5\4j4ޚMj=1ylk5).9"MC~oL-difPƈB2lSN)xGLPM"1Y@5L2 yn[%j@>L}fy3[/eΥeղ^^jKs5`"X+F&!ɉ99J.T,τif/Xأឯ:vr쮦<(wl텮!]J76#GX+0FE<_[j,YezjCP3,Df6\%n:SOg) 4Bk ڱXx+_k6AJ[*c {HQ2r7a/KL{WMjBQ@ٍ~*D4@gМ|\t"=Twm{)s D>|F#!v*N:}eu@{;!xˌrɸeΠ\fJ`O6e EMa}=BZceS#|c|K\L|yԍ~-}hn{S}NgМ,{{2اT^4g ʣz&*)@z31Y2䈱gfi(G 7^撣|YIm**m7Wn$ UW)Ӯ#U*թ)ϱ덕L3(Mˆ޶A$gvW܈}oW^5?Ϛe~誥mƊsX /KC;2^Oi emwʉjkgc%&%R}f3hNO*mGM35VYoCyΆ}d{6TJ$qI3~ƺb:a)s^2!jyr&` JQs}5!TzOR[ 8!c[(& M%6LO0rb١- =V<,KVrC~ƙL$=W<ޗkk yYZ_؟N)荩0e¸ZV=,1q rS<0TƧzaLOJ@ڲ.\{NR;O j^묞3+Fy (z2!0lգn}ؾ֑Jvմ:9ՙb%GinXΠj0N l3%GLtFUvM0Txb)FU)1И2Wa IDATy k35TW ZX?KBל$RZ` K׺jNiMRۋ1˝;r?4 l5ŔRvə#`T[nEҡXY22B}5ksԘ{~vW=KP-gT|~*.ZZkuXO3gr$| 6rI|)H-u x25:b)^(vjJ,UL25:M"s{p" =RK :."Gb;%&X o/E?3hD>0IA薈].TXcVnt1 k: l*/4ُ)c,bnSk<'H!LQoS_P]^SuX p3tШn"`a6 @eKJ)TMKp:جԽ㑟Guʎfk5ΟRֽRlS^!TLτׄ5ɡZӓ۵ ?AٶEض"hc)RK\*Xn Osvo5Ra An(5eU^}J1Wibj>dֵ\.j0sm.swJ#^ZH4Kk,\۶ x6BD.{/"QP6w{^}@Ԅf s$iJj3ST< wbQbspRtYL. K^i&/P[YI:s '&o׷ "oAox\շP8@;@^ul܍ZW <vo4nU^1Q _=9f^(wSy9k4z9w}z+3h>0Yj5Ɇ4VS}o)̏1ag4R2F]:j)"ov"Ҿ~R7A k(@{2k&QȰzq{q}i5H6݄5rnrٲC] /h$wjT`,9Ԅj99 tSţ߄kD+_P߿oh;R}~Á5{ŕ|G\OTh!ݵSvmmkRsD}yN"W@|AqJԚ)[b;jNkaܩDC/qyV@Qg}vG;BT2u΁4L":2L͂/uӧhΠAR_jFOJgtJ9ʉMu4i;{Y;r~%?~m~~뱈8ܠYwf]_f"@`c28%J2)50sl! ݲ;ޙܺ՛Ͻٮm7g~v{0|A2mH='R}8Y~[^}}4cd   0{2Z)jK5M&4Z9 6@L3u[tpnq.v{A]___Z\D/ j{Ɂl H-h[l]E jꖱNf,{QqM M%R 2b-40[,%J,Eg @EnXjm~!y @>-ƪJB>)#Psg=O)H_q[|ˏx\[+_?yy<3HNL)ܮa1 SWF~~{4jzkC&Y9kqB4~NQ* ~mA|nwM݆"w *97?{q/}i nI]?PM&Y:'k Dz̭@EJov?7k;tRgM[[YY~Q)tcºlS~g|K_U Eaw{ )W90dvC `ֲ[HĀ5ӵ*w]w^>V()P+-Ŵ)cn9Y3igد&9zji*+_S7M^׾G__j寉s^~/Qi; i;&Rck_m\,5BBESm^{|H13+1ǢgԔ5Fgӿ؞=]GބzPߣﰻ#)ZtE9wZ=5`Yb6!y SY\AX7_ KZ 5at͌`4·O 6+s:T8>T(m3_y _UX'oAdPS ?Ew! о*ic"ƶm4k6,\ȟ͒vXPr(h}CUZ@ܢwG->ؐTM$75%`lñĩ0e8%rJYX"H\9}}3iڿ+(瑪=5vWo&%{b,Y%eV, s,T2L~=8s}'TzC5V>hVz/?x19 x-֖miZ7CNe=)xf,5+`K ,%yї//! 4 [_cwQ^`2^Yʌ\g LaA' dˏR:Oǀ:dkVw?A9R[s}_RN*bC Z : W KB.cLY~k'ݵ"ܭbLw^a𷏁Hz J`4 ڶr̲K0@XmS,RDFx @w)hmA|Kf1Yu ĵ^Voi:o۫^$BڜM[l&{}.eꁌ Lsvze$Jf0v2Whb1& y닋si &X]StO ~2bVd6ٶ-p2df (c(1$[x,ScD9N%J̳6u]\=x7ŕ;=tD8d1;%VLs~LYަƶN k>[J收 ͣϯ.ծ EJ.w-þ1޻~>ݧ&-RHQ2;  $@Hqd8`8B`8 ~JA^1؊"C(2Ed7ɾ9ϥNkΑ^s5ƜsU7EJEOuծ]ַ}c|y6Y[regϴ,ƐfHvM iR_d(1YKʟL*ѥvc%sH:en]xsfGw7u0:5Vڲe,֙{I{k d<7.Oy6?4zOUp-ždOՌV&jdVAF>0JQ0's'Tԥ[N@>cn%k%M d,sK#K;?RǓi-F`f4δ\&J-"_ Z)+-8FPZ25i]TB#qX0-iݯ: ʁor? ˥zY#\ƒ`dzStN|/慢ʫ!/m'@WN]Y?S]>f8#(9=;Gwi]`;(QF`LK&iI-{s@R;}A3V pvᎎ/IT`0<3#10<_&G`N^;˵ $i6i~;䒛jVٽ%jy8qRxY1UmU?rǡ Pm$/]jJ]=c=say܋ɭ)O{Çz !`wj05\,WW!r[M@4ca`\R``;oC\p#V/2[F<"fx=G}R5gi‘kI*iKuf{: /?kasp#+Ycn?7+o 4kJ:Jm]D=`(d-fOYue>9' G%LXfGrZmMh2޷imo%Cf\ u. @[p$2pE,ɉ&zPq211| Xg@&>N[IZRq ׀V%O7r1$x @DYPO0tR"|?Y3Msބ\i  . Gח|ߡf<p+"Oyɻ@axdf)?xQWF S]2v:2b|>) +wcqS,TT0Ԑ^d7}7:F&@rC)Wk_InDx;I&Ҭ{u)`:iz4Xkp͞xЬO8Zzϼd"iIŅ^b@1px;Gޕ~] 32eP:i\+#`F67}3 \ݐe(fM@9A<1#݂krVyz^2s@Y@sSE).5 0)"Z$߆߰2J8%1Tӌ|wHgc$ԯ͵ ڑ4|R ;bEpxy͓,`jf:7AQsS'ZiYn5cm?io!`-~e|W<:V_`(8B8h cmA7ؿRXc2!2}d?0S%cPn9i%<&AG8pcُuX#֗Mw'L%x̴%-)Splv[I̸~ &N3)`[G[?d˴]GX%$#,I8M>h8%`-ژJ.ys)şo/}ͫme 0SM=5-O?1YcXOUޗ\rajo3ؤ,G..=wp 5JzrA r}Jxz*RAO<5 Ҙ [|t|r)s/SRfIٛ#d)S_33\`  D8S!X[1hR*p b仪Y!Z'L.L/s3\?RG ҐuˈqL*4s`TZ}p>N$mM[8,6ċ,S1r&g]$?H \"1 w)F@LhXاví4Zk(ڲowg< ~}9mi;WOrxY?-mf-4LrMϤ[/\ܿE/UkcTytd H{0SO3L35z"PǮgKPr9!I/eVi"Ј<>;# ci_ 皽 WEU6˙3sJQc%W<Li7Vlh1\+7i{VEc܀_Ưly#O)6*# !Y x IDATͱrrlKxBDl}b])DG459 [%G*_rC ̸Oe9YFKZ`71B{O7{>NtKT+KG% s3Ph9&-up;^DwܤO$R<.HYGL.S2.i=~v@ZC$2E2{<4,,tr>xRo,uX%Ud9Q{ v nܱLOVRsFޅ/+_P96KWsrZXQnhj|6qEe C̽AdDny {7 `G[ [Qq^\f%(Z22yd!XęFFDG&خ4E AJa"L qη(^K.ypQ!*pv }I;`{JOD Cr*8SɦEQfЫMQg~is޲xwyÃ]r09Ì+룇`O3m+OZ>i]Iv&k>g-DWoΰ9~^ǽ"S43i:ua9xOFcNB^H/4ś+u!y>96b7y{鴑 PNS3H ޜfW^^?B%LƐ9ZOLe*P>jPy=rv@kܸ7pxǓ4æK.UJ'}bz0thXz`^Z X||A$" ƒl\p{pzl=8v#=s *ÐR`\:.K熘> 0fv5W<(e2k|=6"evz 6N_# @-.~n7Go{<6ܦK` G:bȕ ~[柨Y㢗re(s+TC~->wxM@'2|#*`j!ѰZ膖TlX_ےY@tK!)e8"!_?"( 0!m)E5n/7}*%w<-9hۤJ4H#iHtи`KJ6;Ι3y3{nD2௻3j_S O qj#ުhj4 =~AsKꋤ))8E ]+;?YhRS7''u-(u5f:Z-.Ϟ2 Ýc{r i32 #x[|-8-0x!vnI\X@:߅+/ ,3'I$Q?Dn Mγ/&`rιA9 }iĭck:Z4w>Kn\cA)(5\ir']kfRt{|& N6EZ90?_KWI$4:+!#ƫx<VDL: ,Ijx׵t .2&<63Kz5aAnq]Âu5g}MN#O3Jj7^\*pB>(lrZ>O,v'=6L |1D Ş>00S FW}2N㓌7mNie1|'Z|B֮֕ੵ[=}aAnl!y %嬀:G-Dx;g4cx]t [s]J kM 0o۬14)CahR8w($[u >V~̔4·:擣0W?4-xC+exuL=?wRÏYG<:F`ŜrT@3"ێ@6YetZj&Of%ea=|J qj}.&NMusnJ9OM͹TwΕ~I0},Jc&Yc0V7?|qֽNk?>msz |)U4Kr˴D2zuo b஽mDD~O 1Ouny 1N֙r'dJo10)Ĩ˓@{}s^͚#T0˒)T7Hh\[zWᚿ ]ZP_=y >yn|gkvO!niz{Qy:yé#~x_wF R$nrrڣuk ]Nze=|؃4J^FuDK^`j((Q&PsY~ޟ!%S˙R&Ո Fjwy^SJsN+BN-5K S: \rw>+,!/wfFfC@h['t-l?ɱIهYfڏE^j=>{rcF['X"2Ko!⫎q.4][hhG@{\aEi0јME p !{1:F$uUlbu-V2lNO++O.;pPYjB b5%0J˙e=*yč;2&7]ֹ~,mX[rTn2 Sؘfh=ID8?NR[=Z eiDI˕۶Dx7b.P#!e&c!K 4@A@oo+WRe-b<̱-=f/Pcmˡ}nf)[sʳ;Woc0g2ENL~#`^4<4:S )Ì)iEi?.3>s)t wړ99nReczѵdM9ss9 +5誖j=#u^j "NT[%b9r  f0YeɯbuYUj]3\0v4M ցvϏiRE<kVJmS{ZpQ*9_0w!2Ÿeqv)Z2#>rYdZfvT$QLf (n`;k-~1 4%RcpTimDU"mx\sF-roYܞשxl0kngwxr빵7x+-LSPN? дfk%Fi;E4LNg7bákŽ5oV~x$zw[)w (2-rCdlX--CxYE~7$rfi)Fc0bBo lYdȕN#Ԝ9HN}wz,?"¿k <Sz8$]5 .a.Kuzޞm$/qnqj3kkE mkMڸgւ&_5Z{@\rF/i xnq˓8͈.yJsɡ෥_͘(k&4Yw[[tfxJ$w xL`)2]B%o\^,buOP0\ydحuP8KL+(p 3O$vW9 .4;מkoYL2o5]8Sxꊧ+v5ntsdpp ^gp˜DžRV _k.yKed6" <Ú5re椝GeG؜vF!#23~/2N)Kt'cVJ#y܏GdHcS8YUj\/ݾyh5s̵!ՀqNm9O)<]ʖ$R~W)W6rR++K,WXJ&wF `̏,&! C느I'y" oڕq_a >L1A#  )#&y A31e W} v _%W&y Kj|N]k%`K"0u#74InO+5I]2U 봺Ծc |ss ͱMKM0dy #ŕnEHgZ{=]w%O4/s\_izbi!yF'zy/Y2>{|a0s;w,CG\XIM*wzc5NMf?xHks{r"OKqIH78GU4C{r0(d,mҒ-'HsXv2ZPl~ieay}~osr;DA#ŅJ-}x.;&iuq3!0c=煔xsSG$hSf7Тu9-0-Ew:\E@SnI[ q`%aÝFӂ۶ov(]JgZI2턀=muTfeN1MC`d!'6q V f62^o\fyҥ_5ĖR 1ݏYVײ6nKJo=Ë3p({9jV:3skg i DdkVbFA olvo3V1DuM~l3Ғ\끓IC2i=.mœŬɳo|-k'jK&/DeStk|8#f_ LNԚKs??X:}2;sHv>symN#Xx[4C-vIhi 3FT\ :jΌVEc+4 gz FCNk0߿D;{]㈳ EAI7 6Œ>lF'8C01㔀vc(ƖU~ZV@uGaoB4:M.,Aėő%9 >-V/Qtp-2%59fQ%,*FFspGgZ.5hO*b~=~:[!5LK/JDzsmœD"17pntsFQD Yh}m?MbvtGccO]Z8\-\5Mւ8זq]W/p\FV97ݗcR 5g-~CDU(1+ui7Ug1ݐ*5',0*%Jk# ֢ KܲvӴFy0>,й߁ [m=0Z(![LХO0d *0^:iOQ6 pm*fmGafMpl6Y(Lʊ_$˲\AR$*.S 9 ]J](T9VY;ӬuJ]VDhW:rkn3Xe(!>*Qzഓ#u̙q-Vꯜo=x%]ip"_ZٮFA t`yƤ' ݶ5¨ :s^.gX]ۈBqd6,|Ċl 풁'4 BA+]Ϲs9Wd) [t2r{ܭ49kaJGboa FIc] 4[E`}PyY83Hv';oC'sdIB+QJy,lQ~sۗ,)UbZ'~HIk@3.HU inw=^iWœ@I3̞}!ogm,da3p-_4KT&}fLh1A+/S3[] S%Ҹ) DZ 7(_(|ҟ/iwLoK M̔ O<9n`1Z5G>E421ުd-5.?9v8ŵ̼us9prBma*:s61$֧]f|[٦ TI95gƵ$n0za-8Cy#Un4J %EmR~ҤTssJB9 1{-^LEP3S!7Tj3 R&E[xa{0VDݷLW߾@˽crKh8W0s d\#Q9is Sed=IE}V Np+jF>UQ0s'ό CJI([tzdf>Zf|gqHeYJCfgd'Dx.P ̙C ZMT .31wCdE 'o] 8mqcKK "zY7i2.C 0FAoh\gZgm3).[+1?KSB{B? TGaְ6/`i (KL?{Y "`ٳ8$eLdMJ\rh:xt^ZY%]Zz=HyCEp-g\TL UKS4X`ts1.6R}wyn$q|2<7|׮ ]AɹHBL57Jk@ |覀ؐ3E1$hh\<`Y\nK~]djl}*z ,6is6Su0N9h;Y|d%&1O } ;RYȀk}b2^!O84StSm_%i?PMlf)j̸ܗLcP)c`;oN 3x}sߩ%džx)Az1|SbnPJq^v^ T1}]e(_h a5@&1|5O ZK`oD~ι\,G!D iθ'@Q$xS"]UMԑOO+.w%uјaZɡuUѴ~ L7Z#:#O,@uIJNɉ7x![ZǩRHqإu,.b wM[FM>;l5/;U0K1G. gʠƄ ~f5'Ln[V>F#fJ[9k6)& =ܶ9w[- `9.e<0'i$3@IrWjIZH\q4-~͒/7 +xڀyAMsφm'SB۪Ѵ4y|I)K~ 0]CϬwOaJ)!iM@s%1G X'4c5EDrΰ &RK"19 SX34Ür;Kݷx ^%:2(|G%9Y}s.H-kBZR$d4NfPգ VVHbλ~eDj+ ]j6~)@YH w\, Par,@eJl:Y}.]ץF;7yL4S"9ZSQdZ8Ұp{.6ӹP2u<d_rg̋UCأzMtRofULt9zP DA&C&#e:HP&gi+7`3(( BAXllKT|^'M5J⼏IlirU9M=jϟ7!c&5xz_kR5ƭ̦cXhȭQeKs-E#\@u4imr $hs $ db}V֜|s_yBڏ\ZBLynO5'ʔXs4S!? {`WHշ$s{4u{%6yv=7 i_eCZ+rյr+.(e[.x-ysA$o-n{ҷciop7 o#% 1Cg)f&K9$V4A1s 5ځsyOij80*iF;ȠVp2.%_ꡮ?cWpΈicJ|e+Cgk7}HN-SJ^ ᐔ~GmGY9rhԈx|L#}= Y:7~<ː*rȾLʞԪ`>#4plSTWZfSν7K{<)Bs"ÚdYc"c9i_h2N S[VbjIFZ'L!?Һ4ZRB?rId7K$5f6)OeRiq{WΚ. ψBaړb `+LmNDcb^*͠#ZhmFr=N1w 5qܥcBQfwtw9QIթmrڅ{sOHx S+u1L) "K, 6:ؙ;C̉dcnIrG:V*JdÕ-VS#!OwۗeҀ4^v'3n&qؠָ\[:_G[:boyMOȚ󜸚2G-];]pH^ӡ9MS]LjtVh=9SAe3wK3  eثLCR]J= ),LVs=&Vr3o܎Jaװ_ߣMEΉmӴ\\Rb5σ8D&Ԝ0$ 1͚>!?FɁȵ5fh(ڃ̲D Ic(ANMt6kBPJԺ#Rz=v cf/ &cWyx@jOOYlXhpU'h#%vˏSf| n&2o5Q)%ˈ;":w`nO\j5"ܸ s{O\ IDATIN, 3.܆ Q"=Mwo8:9)o@JV` NYTG[LR9tIM;D\&^-Km3ɉrk<0V0~ocB پ<&f~ұ?8]l Sό: 1vR)akCSrMK1D1%)ﹾs2:D緐{(8U;~'2ب Ȑk toٷǓW"]"6\jj4F]> 5Br>@ s%y!grj`2:ϊ^]>\ npן9T5tE 렙orSFuwUqWWa|+䶅(urFd;r2$,*gS5 ƃɡ>/hػ#_#>t.[1)MddN+gDxA&'(=$]+1< p ׅ^V@6\k㢹3p2X֖ >o@`/2!)Β WÃ.s.Ji&OI5\&U3LmQ>U2iN+u@P\>FX: HM^~9NgNKNRό$w$%刐*лLx܌v.;ͅi@X>ukDgN޺Gojڣ+{:#ΤCo+wBl1L?%tnCֈUᵤiRu5>i5T̕ſbz ڣ)c,@TAcGQӴZRpZ5$/P0Å;s'Y Ӛ^IK6ƿW#k02>ˮR(Zmav)>C]*|p8/=+rE0amԶZa#i+u X50՚5=BnLM$F4$/ЮOFOL%qi߫閺k83?~whW0/ ld\Çs5VZhmSaQsokod| iv!Lܓ |ѼyNUTH._cI[ P2,jOC,V( [` mNq)Uy7?u˃p%,=zG.Uᐔ4cgͿI*#2󫥻z= f11HΙsf4X`Fꪮ%3cŞ~k=2ꫪsdf,\;|㗩pu}fB~S_[P JENAxф`KSx2>l]ک5 ҶA_d&X\^\h ,5u&) NʍL},ߵt!,w8⏖ 3J~' ,.!Q:J˘}CiHp8?hFn'OK]09\fSQkK=4Uw|gȇKk4YU~JwxQGXЙHO,9-jq BSav eFX 7kT*v:i{ LMWCՁmEiŠxC\fT҃u\j2ށg fq Z8RFɅ%xP|)N[n?K=}+H={ݪǏ.Sg\Wy?=lp4vWӎM ƚaŵleHuA(ѹ QLlSwQ0~ 7%FNY z`̳+-)=*F ǢrwGxI-f-TUsҧ 3;@N5R;I* ǜv:λ XWP;R}QiIsPC!_R"ԁWtO^AԣHy?Ln}x>pO'lT::cDjFX 9 >B0SCr ;d0-Ԋ-m>~#w`PA1DM# {? #ID ݈Y(GZMF::un0!Ns n*4b'v?f`D Nxk,ީɥ]\ݩB``<ѥCӊE)R+tȷS0'9Os@#@nr3*Mo@W*H@@f4Q*L/JS#ی.5'pP~r2:5T=c}ĥ]Z$eQ=\UMMH=$D!^?-a>a`pi\Oqtgw& Y E֘h s.xnr.iKfr)ܧe2U4Y~<@ɇڷ+z2#!1@36'?G̉34#>WpPjṿ$/O})Ӳ*k؎SS2?cubM&Ng{Μ ֯`${3o` ]?9R tLN9g^Td@޼#kAղ/Kr 06Mpl=n~<"Ih56il~wkN&<>!J+HirtI5T~tj{b 0JfwEfUTUiHfU݂:i"ʜ< T~k3*| ǎ`_|ߡ_P3`Yp qoCb;DA L!(%I sQ2 \NRcq3Ti8gD$`AIj>X;<{4*4W5 I`}g27Xjb(pgikKCՇ RTzHH:7WT/Ar"S䤼W? {| IZf CC#%.TXƟOgOrd16#Ndu9rs>H.-U{[:23>;R*O" 2p*p暗T۲$1~j",a_3>uRuh?"Ԍ, ZWFEz\W`I[agէ_2u[5tfx%5_BFW8L#c:, sw?isR6IBQM&[7PA3fi zɍ #K1Sh#>`_S?/ HDLSbc{eÛ#hLͳ^U Pt*\bF[OM4K. rAٍ;j V.^GcK+wT*˂ ꁡ|Ls[V<}YfB/ޫp3*٩tNu[S}ʐ愩6 *5pDe#P:vg?zw#E&碝м2ZM@oG lsCz:#L:]ã3؞ `ڏJy|/&Mm@ l30sy #U|UcّI12!'sao<::(d\L#6Gf f/:̺S>&`Er0[b (Hw!$j9L|d^ Q_/ϿtmҗWh.׮n.lhJ5r~d L]0C^bsOD}ux\:ɯ)u y"K^CTTKj#+KٮԱȁu"=J{=5e g2cŢ4k1wŀy]{u=Vb~mkh +M ?fRiTMIt a bw=8ɬS&bbY2x(Њ`PK[wz7lM/p"o)xlPu>Tvˇ1碀0 ߗ5ok)L-2ucǟkna׏}+geM ,l)vch^㨘0PPtzC 57Z9<`}@zfBR>Sgrs"qgq %B0wy `+n}y%JÄ#`䇑miˏr\llFmwk4rdQțU^ R'\|Ny9Oa}sy^y_WD(}JMՄ"P|80o"< X`Ak (MR+; [o tA1Ȩ cDzrTġjPJ@ (%BdrzGhk -^Ҭ.!BkSL0- l_BY.UXBb<:@d~jCr|C SR9w{nG*S"P*= z7Cwx~Q8bVANx1nF=Ӗ$ ,;3)99H3{JNDd댲U#[lGW+b5Kװ\ 8}a#8u.E"*TGp  mWWW/w @&g ou5PNEٙ?3)I|jx^vRHE|.?Zz^.A"5pGJQE2, sL8\sG\ƫ+T^:r'c;LR>?P!zK|C]j+> Ffs,8stP?{GFy KTT?~؀\7*-);{Y[g3BP.\O>Fjp++}J2JyM*zՃFvFJ^]ޕPPܽxpĆas^=~A c {v<6'-?! IDATCsCV/1ƶGޅXh=ݰ5s!i,AwoA}{8ctn&[A(rMrޒ RJ9N)rW S9 I${sYYoGl=BO:ƿWB+{/G\#%B1Qha\^zK}p<cJb[vQDm8󘱳=7U~K@VxOt4<Ͱ4-GyH_ʍfɁeTSb!P͂O6&Y3M{ľduIՔm_0\os?WXIRBRcs.z& \y~x nu$pt[L-. -Jy p=#G MCdw_Ш3&<$<~B KUJ_w+\SXQO1 ?٢u.Y gCsHuq폡'pK!,{(u ߕ^zMح]B5ϱEy ˴4Se?9&SXlL7v!K@TxӰWVTEB$u0pn4w-М?!⍻# tBB'V\BpyM>>)Qn&\7CI},@:[9(wP&܋JDe$p`?% u  QGvPιқb,0y'v?2L}yn\e5IJRXk qmڄ\݁lX>X$"ЊB |N0G|׃0TRk!1|y 8<z,}Ak%Ro \E81)e4Nn٫_;8d(lYe|A sQxц41DhO̲3l2Rs-*k4seDdD 3'>*c[(of{_ϻ\uxq]+qONyc&ΥayV1[Z-SԘyw3+s/ \C|\zJL7. #+|Ge*v+ҡ:mnRǟnSF>7^!?~buX}nqiўXdcyPSEZ&\|Wqʌ^Bkk2jeHRh~$vbP]Tz̪[ եPrp's[,\MυKf#pQO Vsp"x$G_ɵ1!`C>9Ls|~_XhdմGtF"~ǷI\:)`Nu۷wNFzG 1Cl:<+( /&-a%Y`bC%@ZzsA%,a L`ѢN,ҡRkzϏqs,:, ;2|qXx?/b32o\/ok_Wn ܇;q08-:ˬ׃!q{nssosGx"vz H =2VLT[4\ "+2̴Xg{m|G!48+f{U൓⑸pE`Rswq ;sJ>oWR'i2#dA5P•.]/]>gZ5~G"j\ A 7q3W>)1R{3DKԤ⏫S6ʆ"Cʄb8KScyK5tT]FnDs 9 @<ކێտ 1 &?Z5"us%Tq;Ci)`KB9ى] xC.u'̔F uJ_qPEy.ςx j?\P7x h"SyJEP6;5^ s[΀P`-nF5?[No)?i;:N .!F9 b^< 1AsE깉\psvLݏ. QRnmX ڷ5 qu-6Cijzx}JM/͹NcoI5UN8viA 8ap%p8:h$-9S$KTmi[ W .hNTUTI_k~9{QT͇m?t虐!ulƱP==Sm H0?(<{#Cw;%9@)b(wY0ĢTA{Y_>+0@>eY/QoC(kf3\pX HGDpQ῅P4_Arօ!}*.QQ7+>20#T?%P[=SsY`0ӡ tRdG<ߧGQ}YH/'M fOrSۖ:gd˖Ԩګaߡ/=_fiΫ8v{|;/p"wyΪ[_!Lʾ\sb\t D0i>t%EK"6 4 |S) ?Q'讴a"VK\*:7!8AI Lp6I?q׃_z#Q3M;"vOpNx:~H2Δӷ}O %p M{O>N)% 4Js#(tH p7ER؋bz.ӨP6!CBƿa%G3f $ 줢Zxe-Oɋj}O @䆯3nq4 6ތݘ2I&T "1JT268.O \~܇fbrn4Wܨߌ@#@9)1ΒJ 6oBMqQ\ =qOD>?J5BM*0pBu)ro׎ L30Ȇr&k \DA?*\^Uhޅav#b13N.Pܜ$ӪC?[u5'(䧲L嗝jcfqY5/)!K8Ȟ)s96AL-V \ Z3q9ִdNPCku-XR(A)XNs<{=PkP%0q-C q1 fg|O\F0㨰ߙLݤ,۲PT1fWǣCĉYrfOu,Kv1L1;Eg\um"Ʀ\"E;QLajd~7Y%m kz,&B{OSL@1t!i.ﺅdd fߴ`c )wQB<>Dp w̓$ U,6SlRS> G`72;wNRbð=Ā97/z[4O|wh |zX!ٍ=\-){b! $:ɵ- WZLꔏ&* ۨہj+ࣙ*jhEbgÍNJz(AeHBa8';YC%ޛf.d"Bv|~O C仜Lh2cM 'qgF!gz?gtĞ=od swφ-T; ,/y<#S ڋk(& t8?ô<)qG! (7HO l}3_h.6TTNM585 Ք#Q(,K|7yq0#9v,08%i2%!N(~&t3ߏseb|L3$,kE i<"PREi<?Jwox j ڷ!{݋8ڻuv(-I~Aj.BrE^4h/a 8Lx/g[TYg(CZ Čr1Suh{yW7W7j\5!Ђ`KRs*Z>MND$VКBp[/>f/6#PCj}G.N}Zo|Opp_~ӕrO| 5 8# TyZpjgvlTeC0Bn-`Ȝ5OS))d/MdA(ڠ 5՗"Nbw ;w,~_ߴ"'P`X71m hƙ5h&wW9!9ylh.eA6*qsogqR ~ca*? tP8<'IX-hK,40Mɝ?>psF9VR`&2%,Kui9e&6QhoŦ#+4?gUq pTG*@8Ans9܅VsL4GJ3x:P(݈X5#"wM?eAg P>M" pNU==:Ny[*t &Lon(b{FS3&V'H*>[9mW wN B9xL=9qR F5)x(~I6Ej!ݼv1z|V|39Pƪ|MdcC Kmv/ZsKvMG4%PnBkxO}MBIO)gAahjD!;gOW }8ǙxJ6_s%>f{]:slYr\# =)C]y.:潱p] cбayOMƠZ7toHy+ VThOg F;sj oCy~#`- G}VĭEIQcC҉3:ʜdJTU^% 2g:rQb)d,0V^ڷth`zL;xXcLs IDAT22"uE4K Y 95kѦ'wT!&dzF\ ?W&-` k]k(:9W43ctq@@\~)xɝR?gKLJ>)s[$V'ݛNEbr|m t $@Ai8=(ⷴPYQ.wpzN0 "T\~)f iNwQov]jLg ]x֔}Wޗ su juCZƺ!CcT5Hq*-]RxS3j(% O|9UZTT- ?~.S-6w Lk197!?#k Ο=b'wO |XveVp@H@ıK/j}9X`:|_atE Py% GU޷sR9%LM,!k<3@a3 x,"6 Sb7{A9 "v* bGﻥ糩G\rNggO13+fe*4+q\&9W&S%ڤpuN]1K K,kE,Hq8΅-EMlm3_Kp=:bD!=x~.bs4;(K )]XL2b:t@ט Fj":{h@8'rRN5Q(-b KayX-}A,jKRaxNp?a] 4%E'Mn  lIWR$ UAdJsbE+K/:BҶḒ_*s1ww6!h H- s +6Yݠfڷ9'uSBjrn-,=gñ(0=wcv #kأ\wK}A{I/u,ɗ|2"H C<&NLYU D;cZ a«N7~{ o!sEVWjF3P(@.xXl ߊ.S39M3E2_8:/JZR#0(0fT_]qPvy1^&]2:kM.ZAH9$JB}z Gv[wRIb]uK@lN_wOUkHk&?HnF-[|SLn bs[=]{<#gej_h~sK"sI`\<"#DVQvl' '_%~<'ɰͅ$ H΂A·F\.dU^5{^X+$}?)=#X*\x k1;:uBv]@ǿ7-[(htxٞr#3\'7;vk2D HLfҐ<Cq"`Q#.t3MAlpMk˛,LIOyй:oϤj^h yQzO=uN҃Om<R}~xC)tؓ@ !MnR:ux( =a#F\h 70j]+E_ýZΝ=f&Kk0-`|8#C0&ϔk"6R39iJCݣP[/>8!y~~{w'~gdrV@@9ɠ="]S )B: v3`~@UDY\s$8#UĹǞ 79ʰԐ`cl/X>3OΗ0{=n:\T7V=U4*ηpM q;ÖĝTE,rkyހ2<'tJ<;k0૔ ,54` U/㙷LQ`mV񅐗' @Vha@1LWt"G\)3!8f›~Po17B-Fq@y]>Tރ>z0"e*m=Ac==''fooB [ &b e˗iʂ >:bM V$(yV61J!|aW:էpպaw:Z汪ރC5bYK.bR1Uyv81ѱ=#yMx5a+=cQt^L2.J5LZ~B1Pɀv0 {@2/Ud6}i:\7ꇧ"rj h˗go"0tB-u L 2Dz,iQ]$sB G{Gɢހo|8±~(W^T{Ek9Dd3&Nrf/{ĭ )69N]x>a43hwh cqq܋ϥ`8Qp>j!p3J3Ԙ~fO.S(\S {:<6 $AF.KKDt CIdH=s6/E+@`nq,KS3e̐[PwЯ$.DͥF!Ih} 0j :4P^eRzm!xv,Bnyb@<ܗM#_f`{L8 Lkݚ1t^h}& ʅ/]Ne?;=9FeCX<侢%t\{ Â#摽>=4O`Ȅ@~&\ْ䕱2'FOOWZ]tI'a(:fvwejᢴ{ R=)fSޑ`Zny qj / xWPuPl@ASU޷ƀx 0i37G3I33rpm ֚ێהLΗ=qD4f.s"܀眘!A@|TN;Al/~`: \3#ؾߐFEŤzo(u5ňkR͘쎮 5ɜK |\xoRvlrfB^er bC5 KD֙pZ^xy>Ť ͛sD&MM"B^4#Ur7.Ipk70 h(/ ,5OI_u'g$o_|"#d)tl]A@/ VA >a(]/<Ǵl6'8rgYdH%Ru2xՈ IT /0xyL(̙p3)I期fr4E)w[r z*b=u-1LfGσ-#6!!{ZDU3Ks$Ӵ~,pXa;. =bp^JӌL9,X4z\md@z %QTs~64Ÿy3 6؁[X㖞(D`Ka{O +:y piB\U4_Y[9& ca'\<+%(A .G܃nUrk#әš(#<7HٹZS%Os!yKmYISJv0M L [#X Fg[ >(sݎ۶iriW]~ՙf PK09a|03J䋫Zs".] p u|s |ϕ LΪe{&^(,¡ >t¤8 0sSj=QȝYi Hu#PbɡV Z:R^1ؔ򉜠ˀsn՘ x|]e4"ʉ(( xG,\%(gy!GG㑧{ĭ-6m0,g4KjJP,\iEbkl]btb86{ Nksyޜ5mt ?k. k-\Xj@1EI#D'+3Kfɐ=W^@8arzC,5 97LZȶg5l%S y7  Z`yL2&ވ )wp%\X L-JJLgsB$STC!+0-}?=aDj#׆uo)l"Eh䚿vםiS^ g-HzUjLe xq(B~E 6TܘڒGOP/OS07NJs=,Qa;\M혷> ( )#vDoة`Z&Akz[R؝ ѹ؝[ӹO´ ;qphy=YDⰝ0'+X#\Ezܜ`Y=8S]JsY4.)KN[ hK9Ȱ7H 8U鸅e]?fڛtΎPNpI|ϠyYejP<d&3. Ħ ہ=P|&&`¢3Tv2\IId!g:VOi_hA NmΖܡԨC<<};N Tq3h>4i+aύbeZ DYcA%"eEưa.R x 3\ftz%j=55’X$$q1چn)OɋJ ^ 5r|0# mOx+2AV f?3hoLzcKaj<'VX`ʊ(L3ߕK]8Y=ospRR<L;7BP1'ܥD<$e>~kS(鈡PeG5̰Aĵ=}'v~j<4υ%e/Ro!uBys:6`09M. ܁p.uK͂*/P2όt0L?};gcd0@1@a840le096 IDATakD2!ű|,5fhYSGyL}Bv.v퉵0b."1!TPteSى͡p/,L$M0?Ʉ6 Y;SagO@E<+̷8 wmf8-zkoqnαr/vLJ g|n:W"3b* 9b;Q* kĆ<}k?w&t!UGCHWtc^2?#`? \g[ބްHossdDen oZ bV, ۊV/<.wBlQEaa.qv8AmkdF,<.WFQ, ~k*#0t&z`^ aO- 8 _k @--}fGtGr<ȵH{.q?Πi)ߙbr u#VAʶZ;EVy+}b Fo>(bF:dV7gj<GNHapxM펶}KϻjnOhr-3HAFsclSM9?1 U=pt6Y-!7{7tqq! ƱqM*w}zCP2̼\+Di: _|g4)Kpπi)% m!@lIDֈK}c[+AorO@68:1hhaf{;bs 7qnE-Ʒ# mi"xoBp`:^s3ho R>5΀+R+bZ 1PFӆ5P ̛BiPxnK}@AoGy'8FB<,3@oM[;䨙 _‹|{BT C<[!=b#6Z?Xh@\6eة2mp^!a * tx)W ~9;rf`ف!cyU7 Ӄz8.jwHvdA@AB`y.]ZS^-&ܵrI&"=:2W^Blqa5|?± )#[=UX ˠwkqfXA}y\bmz bMGɖ;xGi؁HXCGlio1LN5!;%<ӹEQK4}b,Tyj sX(BnzgrMf؎Ĩِ؏ u%Їn !wpsgygn޸e)twO슅-YG{f<0EVg<8j `9%Pl7س]CxAS#^b? Ć洢mY:b26,F_u\E$ <߾sNwKMy.ZT7[3 TBNP"F&;Ev;#6`xع<8Aնu\wġGagfyfW;0O^py[M Q'roUcsl(,P`^! >ttmEY!r8o L;wη3ho_p!ߝdKxS`߶2̬F<i@(Ej5s{B:3Jv1 C{A|;ߒdcш͋m=ha> o`c*lQ}huJl'&!b#&l?8_ vAM xZi-u]u;~ =I6'H "GI+ v$D,881 $0cA~ dYhJQ[oTTku_wY\{PNWZZ 綇LK\O Bΰ 9,oȹ$1PgG8l JA`]uE <)}lrXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX4,^A0xe{aay˃"eN pԾayðR^˙'^}glwla@sX)g3C!i0FҶnvX@u)J#MfNr:B`EsXV,s#sDK$6g`@K=P9,o1Y+3>1Q- wX`z>z#L4* S"V*T aay R5RX++H 9cK="#^o0pn;Hi8Y|&e3߫1+0oʐz?)fc} qiay }O;zUD%Lפ@%&::"!&ʛ|XE{ge#NK{m*D~Mbݩ.Om˰ LsXzPBǜ^Еθ|lk@sX2١vCi < 6Kn|.?[g4rY-9`64ߑawq+HҔQ k{m& se3bL}4oJQ(3(GO,3^ Sl}k4|¿Pr.@U1aa LRdp:}nyO.鳥!DƄCi)ʔ39ݰ LmE a~}>-1,؝%͞GnBNvsʋb$6Yo2-քPB# L sT |@HΒ[ ˹sg4߶ǒބuDģTMXf.P9N;X,uXT{_=L=X"԰0J .,9]"?1v 6h`7sc@g9>edb͔hcs42.A儻8\KdXPc?}Wh9Ôv]"R`{r_N|V*'ѧK ߍ5,h>l\w0 p4GnqM`JOmi r,W3mdNxY}wwBelk Xso3RsJ$jE Kr&9HsR(sni,e49퀹g D w2'$ar>v:"5IbLSG+c4_)ދޗb1Ɯxcd20|kcvN<+&e"㜠3|WqPy6,A}\!Y* M7v#uMYȝe%'wHhl )aMW9l^cb2|㡉 xl4r032\t A" KSMU?n͠y&}f2Z=} %6 i)B0:$YROce`}k[\vc-a!HNvdz8 !ҺW_! (R6i[5f/ ޔx!'AzeE1BY\a.W snt Ŏ]*%>|H\K>al d&#WS-F0g>W)6SHL8szcQrg,2wP;kj;9l/ŒR%49$٤Xo6FC. sJH@IUF_Bb9GbgwR ` .EzOOsNuĺ8Fi"|<(Ai)/(="ۖ*+ʑcN>g YimNOuE^1@;716H>.:K d0܎4cӮ>E,טC'4#=ۂD0ՂwBN*,(9LA o:4Ie@y 6x x4XBRÔH0Мk=_D~>TgYKqsr_{B1HEeBrCJ^*X|0g.$4)"njZ8'@t0wJRtNc:wD\ ؀Xo462 Un'=U.x)Nu#oz.qn:e_dA-ľ#%rG KQB*O!əęzwzEL[A\NA}؂2?/BLBher"׶EX \ugc ?"!x*̎MLRxr'}e O3\"$nrΜv͠o!>gSkp ZAIX(eP=cg`5J/G"bPx%%3V Զ$%UHE7huq0=DhTbu{ ȥNa_{l[LphEQD1g Ѿvs;7=ۧ.'XQ@0f䴕.aJA$Ґf4hMdbx Ќ݌\qW-%jM%0Sv<DbqDTS2}s ƼHK:o]%֟ӧx1qKK CE2g̿g]xO }&sN@|GXgxNjG߶~,1 9M@Xˑƌq}K-&kE]JƔ;˭KWb?nG[uI" Bcb%N @ZKF `ʊ]2cvSv~tNz[j s se*710O b3_ɉ}$ʍKGaO8[@=?8ޟأ}pueY>7)|򟰭-2BHy˰)>.rGR;07!DO1S*s'c9K ][b{X8Yl],&Mw?`Os?ldur4קgQ@z\ \c8{;S1ړAט3M+Gf~ @205 pu<^>ޫ@s.P"bPQTg}| EjF1'#L:C8M-p=u^JL@wj_*.Nv?L9{d̿ ' {ry.AOWϷ@eƘ`-==b `Y/9GvJZnSsVBQOhs?/N8j6ٶTH+EZL@W3JoڷQQRwukD?U0Pbqp..O胢XƘ:H-@-d>(?D| l> hov'/> Jem۟>wezdkN7=9%oL)-O< >2PNՀK5PL&[ןx C`afv`'oÝ];A:ۿ1X|g*|j@ڂh5ɻ6F\:׋9MR 9!1+!wjY Hȓ]Fhf 8)&3Rmt\ d0`Fpi -9{oh2GD(Bc'P)2L @ceN ňdkT[s{hF $(4Tt@gco<', G`|i&I5Iن؜pwKo.^h<όXOlk,NxpV }6 EQt(Տ.׷K)%~6ǴPQf6Kf4#Aup5uKsgw#r9ata48FaLrrأCOZlTH S3ܳ_66vjˋ^`~|z6ɽaof(M ( e,; Rʔ"9LR{bBP,|g9Xk7l%~,Ǖ.Lw/za#LO>2?{<>0qqp1{ gHuF(:!o䑧.L.]KEQyr( ,{n7b (˲h͐i-g [5}Ô0ǔ@-G }Z|i 6xN\c}0c@iCxa*c 1Q-O9Bp5^'ϴغ~1fˆ^"1yau&ÿߒ̜@@1|mڲL?lr"20f3?n;( met(67?Wm!BZr|σfY*降<]>.r_Q1KǞr0̊];غp\0|FY%}fR_`R;3 >-pS^TNb4fzd8sG ERtB^1 Pr$z YLuOk`M# .0FOOXB29%E0ݵ\c>kbQ8Mdk4==w`} \h#mK&T 8 [ ۟j7H2qRD)Il4 y)LٵU2O<7KbaSE \=VAq4a<og(IjyK=Wf$kk`c}fL(AN)d f<GHYԸT^;'A#S 9f9#3ݛl_׿QN~ D/g/$ggmn > s>P!2%̰;h*hZ%[ iCvk:s A6|\TX. <HJ@ZȞ: x簘mCW=u{KX>tM]מÂzyݛ>9+Rk}G"S6,#2"PaFn?_1x^8l[Gwg%VF*~>;@HEX?knaiRi=9?9@*M)aedr:/fb]aoTkfN.z;4Z=н)5Eq%B5˘}uwo9OWx 4Xڿw/kK?c O E}u\ %1G M!0J|lF1 i51uc[Lߨۅ>2'W[owdq%<4(5>M(jx>P16ۏޥ$S4q3pZ`.0nxCpqDs5}I+T럏Շ ɸ$熸>ΰ)~sxvn$=iu1@̩֊c&M!o&hj M=0;Ԋ=ph! Di=~?<:߃\ryՂ١`8 R7/@9V@猕!SY\˪PXREa9"s @qh ̀ e Ok58-V0̏mjHmiJ&u j"T0\YZoR~Cs0ܜ$"jTk9~}tS?S&k+`g89H{zdhP%s~]WauB fLc` Ƅ1e`xy 7Xp)N7GѶ쁙_JCIʕBV2F] \wnjb+/fA;wr^f7L5h\RyIijYҞ$ث_y~6ׂb6b~ d JˊK-Z Q2cƌa1v0eƔ J&k6ۮDf] 03, 0x@p8Y܊Z;[p /* PiRiXsgg \"soQ0y(an}Zm'E-fA=T>!ESM8ZO>-7sd0ӝ A4_8~-}Y03 ßG5Z, A.3.:2{6c"7 i;8 p1$!G@M)3q˟[pDyq)E=UbQ]M'Y4-l]}B-2kFDvNQ9#vqoJ wS=D;)2aQGu+v1\*04-n6KZg!lAg!`ɐ`lY+:,cj٪t#}!-Pn pmpvgy]2baPJ"IuBxHbeH嘋ٹQ1/û誓*-R[K̝rxfJEw Ȧ}kj.:!>Rk-!.ܞ]F+z]Ρ`qpwᣴDJbxÔ)>pEaWÍ| fmbvV% guc0*px `[̝winFMVx`cqi/ˉ˖m6:u?kU;|rx,0a~-ޕ-T*үbz!,^W'5`apP,1'rEZZO|Di` L7XE +(k*f9eN PoiARvd74 KReoq"zOO]0֢c0߲Ch6a6uga1u-iA9Cˎ 5cF*& %lNt-rY~hLQ,!lsuO,[g:|`Q}sK֡`;WMq>r_FJ2 넌Y85uh] e{u2Kg_d( <1̨")-Z3s3$v6@(g0?NtSmhLyUДQFhzX`|H4#`]Z-0wvn>M~׊5Cw q?d2V$\_fΆ!xUU+9U7q ,+@gqhCB*7^I{$ ,o|)R)7`x@:Z?L]NLNjEy)H9d(LjCէ4oeID(f3v"u7uW}1ε|aE^:a֧ǨL_H 7ZѧNIKr")oslç=mYET79$DL!<Ζ.@ibT׏E$_ gp \pDQDyi8`[Mr}/]  fAJ׺6 BdhVcDoU9\$"u0Wa _}֥b>EqZcYhJS1KbX.,5wou췡nLV 7|dcCl <>n g0ɀ a77C5RBpZ&.$oܘb9R-8ۼo5SKO*R)ש zLֹ?vs ^,E&9Ha`_74s-L,J~m[NKgX>!dɵ\= Y0j%/S O0WC7W(fg[DP#H&j@qxIWZcE*y IUR( 8O7aqlQ.&c,4;q{~GĒYF$km $%IX EY7iROdO%qcFI. O͕}Ñ}|]{[*5`6ZbiUWsTGw^nGYlxnѺK>\,p.k<^7jgk% dPh3Vf%Nlcf,Cݴ2X>fnd"zAT?XRcdH~OGPkSS]QJ| HwYq)Od`,)`&T)%'B4Y SHϕXj0@g7'<y9)9̶SaEa_.29\TxaDXXkzvQhA@7ʻ9Za̙qJ13pČs7ڝ@aQ00c 6 l0a 0I:ulc-3^s s9faz莔o-GKwٹZ}xæda8> p3XyO#|RSLK}#_`vS RAk +TǰGQ0ۏri/\hay]9k<[-M6{:G3|eH{c(ȗX,qY5[ Ҫr9˜ LgXKT1ac\0#mF-6sܐ-xu3v1H%YrAA(Snv:}CF K yaOf{;?R/J("Ju5I.C]474sc$bJwX:QצWd `7}W[#}/Zǝy> g3xj0:"wQ0aud[d[)9 1Aߘ` &6e*,}_',]E+xu$ߨ/ VlԒf \E0ϲ0s޺.x_9۾ǟokAK0`jiQ2̰p= }"?$KZS `kغ9yk5X> g#u{JBP}%0,[\OP_W FADk3)ƀ@12_ŷˡv#J"$ $ "if?{ *L|j7{LG=f᫑xCbyOynQJ|ey)0WR,T6J'G\ BOI 1f-# 퐑<3%շh=0^ -;6xYܯP]{0@/łNSS"?Je9usc?2بF8ސd: K]/U~FٽOrx|YCg-la9_)şv_b$MT{ȭťc{;>~ͪcF-!to^ )\OR9+r&GK 3"=V'p[̘,O4NTa.Φk>U9xSpb~{|tv/6P!G,S0sik9;U015ۙe]H>m,Rޔ9!lb!*`ct-wWe*p?eN-f;=VD/uG,LI%rZv@%#ba=oF_۶Fc^y5~wYnON%FRI-{ƥN|eeYњ-H-j{Pv|fW:06&:R^m->'ƜҳsXL}f0cYRhi}Dx̸Rקf^sLldphm\kJR3(Gosuz[fo)2`-Y4C0Kcu9Vpq#R}402 nvW= uZ-NXeP_nQgĮaj!sWk,2˼Ȏל{ _%*[S,UP4/Ș WˢCDY (RInA| ?$ŧG֑>[J$Tb޹3j p#fZ*L夈ajW2\)'904SuQ#0$?|vjog w3˾j3{QfmBi-l !F׋)&3EVe(Q%X+Ňb"t&rp5Q @ s^ۗr|mUʮa@ݲox }G~|Ci-޿qQpP) X4ywc5R@c>UЉvK1~5n;n3JIʼh. PEs`OoPXv v{LZ8 |ƸI$C`;)|WGZ\}J$7E~.R2\f2 4Pi&\`y1%67|O4.F{o9sek;غ@]{%FzxL[p?ð<Lfe¢ ]r>hsWh#*Lh,/9FuS ceugk8;75gx \ǂ|FXT^O c!||:}/d?[@.`g>FPܥ#!8k$N1>+LY4Hv Eݱ©6}.w/'S$3dsp{1 Z4NoN_!,hϟVӐ̚6oAre,y^8F]ϒCEH) |a/ CZ)Of"SJ)9`m0%WxJ.+iBA C վS`tw0X;dJA$ fP9MPm-c1G)6i7 PsnG\/w9K-,r" sO.KGl^DC --’rUTp1bS">ʽvQ%wQ5W*K˟঴%7#܄QA1a8x0ja*ǏA.9\B3>+Ab!tm`LꈐrȭJi.AcZkOAIQx_ӊ)zj2\eiL<g`]]ɑlV7\O\ʧra8*J=򪱼d|g0k EQVpByr Vz|FA/+Q"11g5gYzi""LVnLHȸ[phyТ>c~a+/9\] 1K9i 42&>歸زI }0G>`Ƹ0=G?bRiP42s154Skq}sp)#Ҧŧ,'YA ^2;8ۨs|@+ś99ckn1r뎒HH'PCv Yź/cRlJ_j}zK۱O kva)WL.9s].f) g7M PdsqEaed&qS,s*'$Trx9E 3p8CZUmȬC{dj^<' CeK^!` 6-lY&dUG[%D֭ %G9k[a*1%ӧ3evWCrF›FNӛ 2#\E1SA11*FpS$""))#}h73 G+pId*姈̳MЭ.u7;`` (%j'2ӶxHvIW/p |-DK?F]J8BP}q`Nb2Gϩe>MrNSS*M%t'ml\D1yDP5(⒝+B +qZBDiD2Bi$! T. S&gʁ߼-{x9L?oS Q}?Y;J?{Ʊh` @(yiXp,?a 녋ڜI E\XЇbשM}G\1kC 9nO /`y5ZB;NvUO3}+Bԩ/aE"\DHK`ul<XfC/6X\\'0@Mz*g[T]Jx݊h+V`gR#-xKahʭ (9qѤU)*1i-wĘq;1pu}, si9ba&] <}-U\xI>Ӷ t^߶sBTV vȔͮ6E0MXjGPeU/32,sݚs"J}`;Q$3۾wѪ91 ɶ۪ye:d "C,RdajMα}6AOporí!b7v3#ҌnfF <3R Ҡbncvwqp ,-|1#5 cBM,ϙSgFrx٬}7sB9(y7Pͺ;J*ъUn8}TNfOkA#X"i ''94%M"j (tg#Pv$ccvμVvl^!CrCRW%F̘8',4`aʡ9m:x>> Jw<fut>b`j, aĸ}83n1%քk)U!3H ):a2flbӌ_`g-F nqtar.NR(i@kŎ(Ô)'BjJX+6BS0f<{w#ẏ_v-ߑJ.RH.4D fƍakwdi.W]2[UI94Rfuc"*3,E>`3pJfD_ OE+,e K$xJoSpZkN DKXcn!yUOE'D@)E2pХXk6%,5-:#'6- nT;Vo˻AFG`6K Sfk<F[r1DƎ{l xwkRԻ m`K1_l8?:D (0a \gRS0m8|-+& s\rIU UD<[07_Z"x |.[]Vֹxq+ 4G5_\J)q29IM j DS $pLLn3b2{y[ev( &Sa.rZi z338ԿfNUmjs & jA0(H8 - D!0J4(0E]k _Oy~oqjE_m0VPR *x" >֏S1ș! ;LpKu"_z6M0)SIפi$}{mS#3=`ܪ$( jˍ*0Cۘ!~_$3,1Ȥ6 Hmŷ,G0``49hwnςA0\4#Mej4FNG:w K8"kb1*p" sv޳NwLΉ5g]FMiw |6BBi{sIjI9LsȘqLs; Tl6 gČQB;zRQUXT >Ee^|+@9 &;CT\3 LwAcD{cΘ*/ sM,m2xuz*6T'Q7fKvCf4-3(MS!ST}-'^ۏD-s".ITΓ)kYu‹ X'Hfyʣ0 Z3.:?gٹ:O*xz %kr6N 4ЌYlkcXYjXM$!߂UdADpxEk`[3nPa7.p%2ǥw̌pxM%B<_]?5㺌cu&c 7˦(4k\EB J~)!0%Irf *,OlDݥI@/W IDAŤ'OI'dN ]Y9l/&-.8]Bw+!+hJozQK+px#wsA otЦ@ԵԔ25pp=> |./Ñoo7*+J"\'QѵyB9po Ҟ9sB&+B`bܥj%_9|mJisۥ:ӈMyR% 5%ޅY1Dsx,t<%Kmn +qdž֥C$fns Ƌlr,)a 8s2S)_ n7[/ \1%2s H:E bi i6x4,wꡧh/R<IZM%wa|uD49ۈ@Q YZt+hX R;. q@$718|].Zqu9b%ҩnQTZXtUWx{BvcXLA&6=b}sY7aQF1w3q*f*t\R,ع稘)dLrЧ_s GA3G ϕSpYaQj{Fa&[?lHswrZ=C+XYf)?~e$tyb*;{,+v2L)^!|ۡNP޼ 4,\Μ s2BGn6յ@55,ELJp #ybڿ8A41nѵRf̜M"&eQbRAČ>¬V8 >l4f2 c<c@I0B凴93vV-h. 0% dGJ=ۥM P0ucUG/W Erch|JI11#}`܂l*؀^MgxYHS*ݧj6:8 `q"}5Ԅ . D><|Aܹ3A8 Uqh(شN6ń0aM5LR|| `7wˊj5N:YPnsMMkiX0LP;VR3R3. %nTt7ZWcLAD`ʥ=}nZ>_GY <=r´_[xnzmaEDb5dc.S߽XAmG(lX4. Vg-8' s9gZ)$Zϣ!߁M=ry ;}^9E9$7}Hx (t7_ՙ3f~"4wv?5P"(>w={)ک\+H%%1p\s6hkLq4D*ms:bD9OXq :9Fnj׈a#qFHWXƾS6l\(R`jl'j8C| 4/]݇mB֎w+g^C`A놎1\FJabΖ`~'HPXeq Qy,"5)?&fl=/Z&edۜ V&pf5ŠXG ]&JYB =NmL9"*k)Ke91w0Mor v[+H9}ʤ8y1v)98ֶKTl)wTyV*)"3t DDbV@|ֹFR38' ӃbCNBNKC~}H M!2%kv f9ɘ)sJB{3P4c3NߣPb0|!hk- 5 Qfm|5_@/4W7ZS:kjCB姏+}.|q*"̼Ivqqr1L3rJ<|3WĽCzSwJCSk; dkmoޞ\ۗpbB e܍}wv)4_*^Ze7G$3TiQhaDx e[BRZ7)02h^k7<o|UP`Zf5#mɲg̟=ɢLR,ҦeJ\@ۺ!󫊌oHIn~]]]KFWVԜKS$k>R jA j,'i*LFN-njk/^VUTǪNN.׷0T &2eR@pS4%D}YvsN"VԴ߀l !1@:(q`R%e=౩RZ%JzLC64)O+t7df|,M1@04&rDz߅~zn)Fdv D=F%v38tp̘Z,qZ_:KP\/^3H( F> x-g[L'{^Z'2֑(!t@BwMF=kU)߃}?9 =SYyi̸Ϭ2|yiH91qY%>{sCri] t {B9QưeuKJRYdϐ[ +Ē{rT).&J*_W幬,S0#YurFtMmjL 3#'DRzee@;h~O}hiu2\?mqz!f2kVsc=d#9 2@gɐb,%7],؞082|ϊ%XYz*=)QQivZ e ufHΐ!pX+(0 L͟e2'DI#K赨t-MSx{UnǬo>itdoz2V"g0*3f*4#r7=K.A%omjU`HZ<ܠg2R@ش#'Ö@H BNN'JWQ'%9p瀿og% $5X[[!U)9{DT(9oU | FD+gZ9rF~O9%*e-9f]UO ;ClTtA}@;=`쵸vcdWIur4hpzQu¨$й ed}<YlayO={wc a83XfI굡ۥ׼nG#t1iGm4)0b\˜d}\{OUqKfZ8R/]pIA9Ε?:Cp7u8M{A881MCla~SkqNW%=kzyd@Rٺ5x @E6:tc? Z֑͐XYz7?K``r s˗,\K1n<00MlZL<oTLV9^<}\`|4;U^SA{L8fA>эR cv0N.JMB[c !І\5Ń(=OmV4éSb$t lVjz4/}cFr=6Oz }QGaf|z|s_F8%f[S/lƚ9qLzkzu1b:]-6<iK Ԭ0I_j].U :K,dn:һN"@t3KsnZi2{JOv99LpJ}2łR`I; rg8 hRϓڇo|Sn3SK赆_DfiBC!k PV{0\'hO$ɧE9Nlh[bg4,Y!WqJ9H'+o1QBuOPv2( B5o.{~L't,U7s~zҵv V0v]ҌUrb{Urb%Ԕϙgj 4qcHqI`Ly/5 d;a,ѝ"UMBzX L <I vd멫i9a$)9m&k_[ 49 9ʏWY^aSpeM%vtX"NޝS9~07oY ^2J2+04Y/? qӥ}Dv9'8B^r5[n-e$Ü!d%wkd ץ}0d n{6iȭy\Y tn=?lM< o`rik#n:ҩf>AÏBKuN%@&z-l:A*ue {ix|R\~?gLl(0S;8SV3}yQ\^e91~LIslju3@$uE|2L@?';SǕN[N₴1x?t%6Hf1k߳`׼7,y>NhEjNr >0n9۬zixZnINJ6m~eӕrrMNz/HffFyPoÆnh Dc'uF=IBc@hxGJ) )KSo1㛡EÌk0~ Q-2"JStZ5XKbx).r5`01瘀kVtKQ{s=ߍeWL!lԡ[-3D@k  ;hyFzv;)P[LG&OP댽d&D#H6Mc:i!f\K $Z<=VnCz?qNsαZv)0q}Y3C{KY/fq%ypp4ɑiƩ3$%\國&wQ$+0SMTPGNOau'; rkWJ9"WG$Nyvx:H[31?ѰO&MԔ5m>VR`?Y KףVJ!:2 ZNy0-Rߑj.%IP~p͗k8ۣa 2 pfc3A+V,'gMn9F]@2~|/X5[kWSVQUM?Wϫ E9'3~)?n5U 益4npNnP~=Kys``:B%76d9d0DwC2h8J$˄|ǽE* @uT}\b LD[3<)γ\Qk|,nToeS3hq!s.ǵ25w@@t%x"U)K%' :8["BR2 rQFsR@4RMրS[': " 9sƈ,9Yj/)&pgz_=29a e]x V sZZ}+UWZ/i4_NR75 ϵ5$NBo<Κ?/@qVj|a*j $|繮$gqggm2Ls=KXZUjeCX]9)ިcYÝ'Mce x̡X-վۓ `\AHjrA~C RER`Ѭrk jn"I=ǟ;{Tg1њhۥv(bz z<.l\=~iBd\׬e.YQ&j匥K.0dnZ ͦ8_H˅|t39ħ1ѪTPJ`;c\Q]q ݀ PLEYMŕ/g'|wnrOaȍ/ eâj}٢5 5G._˕;sͷYSkݟvFZSkԔwedi[#m 7Rt0?Wc"8k)Yfֆڐ )̠M[ d=;%~GgkR-<|=!XΟ8iJ dS X~y.pڐיF<-.qC꾗֔橆۸K&DUIUjNTwGm%SZ<0QeJUqBAyE5 )'p `Q⢔Kn-YCAW"(zNt! IDAT~w4M$c/5 h͑je=ZiIKjd &K6:XgzKDەyuy_(!ܟ=L뚇 $"+^j j27 j%h P2tJ .z]?R@D cv_eX%y{8IST שKcxRzm۞4+al4ahjڬqia|,e*e֕*`}2.'ufn94qr4kҩE9dJ9($5R@WY͂D''b5>>mUO.)&X rjYb*sGwMld+JN Sc\BMuR5@;6qxML*'4^b| &Ҍ6L dy<`$О9Ru8l_L7OWȁ\ jӇ.\>ΛvZ3,7T+YEL`U}mrevlQsL/xjt &JKrE΅qcT gԔy0g [RmAm<uFk}r%|Ȉ)GT N;Qq# ߔ-g`f{"vQthW*rX%.ѣITN<FI꤀[xJ`W)笀mΥZϬ~?78Nu~ .㩫S?;x=qǨ8 aĴ%@J5ΩfQW05N/}Cos{ r&h7Rǚ܅c.(wloV;z8G3 VMΒ~Cl<u:mȀ_*kdal1+Nt\[ #XR$g:!y;Nnl|O饍z0TH3K'Yy\b Pqz%+:O&_s Bͻw᧊rI8cxf )L]䱂6n3u$E~I"ҹxm3?,FB@a3˃ꆃ@,{U.(cD[4{Ald,@-fKj^Q=|x$v2MjB\Z_Fri]3gn~N`$gfդ#aS.m,ĒsNڞ% V ~Kbs6{3NV4ώBq7 z}[e]68M0l1 cuS=)\3?;W\N^T F!=CշwBhL7A 4\?{i)͇vI׮mӍڦ*r4KfIcf<#0PI ;hL'nӨ}TS̡ۀm^spI=WI_?'E\C &z&LC`8pKe,vm#ʏ8( ꓔZ[z3 rVi\F,!#7X:giaQiP0tLr@|NgO; 0h` M' !]-} Ӕď1՜$vw^ w]"1e8!24.26 KF9b)5~+* Mݧ?U {l4J. U[=~VT+LWB|O-1% m sy0ʙ+Twj3!ߐh i]?㟙8VA]G P8sl:G6'` }-4ubֵT=ss)D+yMsqrnG~\;dBH{fd4Rn) * OsU#VkDF4'UIkTdj͕=]oY n?%C ] Gn `~<8sA=0 (c/Eg.t^C{\j-ZPM"ZUcd@~iW`9$bЏOen,ín8?1Ycړ#1V ۄR|&UBYLe!Bjmb( v횻3pSϥտ9nl?jWK<![xDܗAd賓QQ}Za)gbJk٬_3g,5~R%z%2Cߢ.%qi;eRF`^Υh&V$cF L(wyq.KW@(cH0\ulP2 `=ܹC9)xM pϊڡ\+ r,-G66jF7T 3~VZW77b?_RޥYdr-n G|;B.ї,:pf)auH-U0Kӏwq; Y) n-u%G3Sz’?#PLB;Xd0K rWS8FM=-2cvZmz%O)};L]Z $S'r^4n9e>C^uUk>´RΕ1M5 Sfl5)iPbLOp4kk}$sqrscc(q 2; Npx)ZVEЌk@]q23non)2LBÄɒ%ba^]_qҸ RV>>h yreQ'!-&sVI~t9x0J^n0_^%Xdk"y=Jrsjj¿`?(L80  8\Ydͣcfd B\P:asuif}5I_:W6]ᨚ"p Cj2=gsed]t. F`_b~ڱ@Hʤ|D8wYi Igśj.> UG-e4SwڋSvr"ڧ}qM2>S44Y=/^ɌcZpdsd wKxmsU͟I`MH|5l9pX˝xesD;iIj? dLcߣogO}$˧l|:|;tmʦ$f3F Ni7X]N Hs\~%OEZ~3\ P|-0?!(4S__ްƩv封[!f}H,1pofl;"R,ܺ{q­U#BMj@E, 2 m|%Nsh~bڰL-\nDn>~ƒ!Fv٠3e*dh3u9ݴihn",2Q#d+XgVv\r_=5dy&ۤ.fez:xJ7sSQzk ^%Ops&HŚ߿m\ۚTϵL״Kfr>=3wCPÔez.n23ҐOPPz2SBz)Q.a&.45Qs4ef\ s-@r#pm}"rJ/7ȔéE^& i\xq 5KΉ RQd=Yo%5W$QlDIkwqR@CqGc^`"<_YJ:Gp/2U>8HmњBeZ{(g [M].1hN;'x ~]PZ ʂkn#ʰ#x08ƟEPS=`ڿiԩtIhW&eXK.`R:D `?ޅH#Ȇ~Cͦ$yUΞxrd l&ٜ]bc ov0:bǿ:#%r*>C5KYrۥ'pc"?ԔR,(/w)ʰw+j7I<D0w΃K Zp<O0K қ2QwH7aA+:U 7tqHywa69Ts>apɌשD`[7O bd ah% +?E9rs1|]v/XcS4;Q>^裲TuUh(iIyNdM ܈%ʒ\FK]*{5C Anjs/^M6"G8KPo025'pOߓ5YZ]w?AEFdLj[yJR ˜IHgHP\uFSe< z0y1,Ώ+Qۯ?8wf8lnlx[ /_¿T'= k>qI_Og/w.y;WC=qXm`W? zQ?lt9SǟQǴ\ovk^gr+k~)Np ٍ NG^8J|^sk9#:kJ`2e|d2Odr^(ح/d;F=\e>٬͚&p+{5j  @ 3~^hc)9WOUo25A< cYmY0S<~/.68c9nǟŖ@L`T59R9Ĥs䌾PO$\+F:YY㔍qDqjmJ {/m7}ҮI'B4(:$t26mj|ϖָV+>d1 \Ƿ?atRQ@v,ʨ4Ǵ(`ڷ))dyZ i1$VOM\.a5B_mF?Ӷ$tMS555%)'`ʬ(&Ze&'`ČW'@6;G op؈WoLcaTmT1ht(';68E̕k`l4̟mÍ`=`Lۇ"3z&A\{Xr"д ΔVPʩJ1Iخ1m;jT-ېdp?D]ܿOD$Jѩ \̥Jr 2sSZ V.j 8 ># G,MѹO,o&=}jDޙDѻ9ϞcFfiO ,uQ2'|SKX˒:Er+/9ri3xrtdP4Kl\?%~Wj5hF`]owz6nuq+4z*M>7^ڐf8^ÐI̭INn p FDs0dj>. pkO߸5^gf2(v.6,}B7Y*%Ćܲ? > {Q2GrLri NK 7ٖete ȴ4S WTs;%/W/'^@* ro+4"9̃)=jUdG}*$;;$l mD5nm0uspDOo+gSvE1}RA>5;[^ŚmmCЉ'┝&t`|?$SLY/-/~4@Ծ`}p%{&NA0K <'U5q+i錡Mrs-K V?i}#̞)u4% =70pPBshˎWZL3yV1 !c̙)%{[[Dh<7k]ꍵ%}W7O7i{j9\MvPQRfZbyio$xcA½`}/Э8:UBY͙22L,y.3oZRlL3bYxP'[[k7Qscn}lxϯM14˓ocx KY' scZ:0 ; h jp`+f6{H4o| Vu$܀pr7S #[|'&; IDATgz)sLRfEguq=/,q4:[Ls3B!Ž4bN}a@R v'FP ROjhejMpYn}%b^S̍'w! iHM}?n.;"1rɚkrY}sElp_obp;0zT2 ϕ s-~ŭ` m Kini Y^,Y΄PvQkVf G'RҕpWڊ#Gqvv (ehGJ9Z͒YNe(Rl8pbTc~JE =íZZ_b»h7)әGM R:" 3^fxYʙQ4N0[n V8|ߤ7ȍ##Q-tgx hE+&Q4TO}SperN;?Uug.oB}:I֡h@IQKu>c ]o,5SBdBE~gLPTrٝ*^L)$Rϥ4 zO]ٯQiuqIn0pJ* B1kڐRuw:!85rXm-2 g8fC{px7147 0 \h,/hČ /p4(iAae;6cOaNCM< =GTQ xRLyDt/qUʉ ArUCB,R]BbGjkP?@z0V'07wqj{xiwA$X3nVFD)ns߃}Mpܑugι7(D;"'x<;[Ą)] i6Jx  pWg Lht "y Z#a qMk"8.dqyo6^2S\D,م  ˙4$<D@{n.{ iR*=f?V}ϕvl)C=v:sdqn( 4klT.Kq'\gK^H79=6y$ @>lLH=BN͗ Hr=@XjdPIlH0|f[9Dsmt}|GcN85͍Lfb|wc)-/D9ލD`^lʕք V3\3j=AN1+wRg̝pc{L!cw fKx;1w3tQ\KM ݴ=pM؇@c;;25N19xm'>'68ŐNxD"5ƈ8뻜a'3r?Xg:~iQQI2oqjvk{e"ĘAjQ^ڈ/ 4kU6S:̷Ilm<[ {Uk4ו*׎}Ǎ+͎9nz7SsG/C;IxR(cL̎O3C\hD4`Bk$ЕOߚN?x2&e8]Z۴Y+n4Cwe .Y ѐa<fd9v韽j9b0!e(*4e3YYZ!dJy(m u|J1V1 IUQwNؒ;zĶ&bj+k0Eqp':n{sMMDN8:4'@ Q9XUgf{EٛR.˭D[hhb߱~0wyrzcV@( k={s,1(6@&x8U~r4'2Ɠ⮵P> gԵ85G@?xZ]6i.$J8Ƕ/S9)-"<-c{ \N!><&6w,'}|{r4zhq'q6aكN~ g2|X֕=nT%<Ls'pFcΠxC-jd/iRF;@YdK=r YlcG"]"zEjAؑIFZlJXckQgh贶[! 8c| 8.=>p*mINku?QKpN`O@d>[&ѸvLRE.5^ck={ldžkf„knFi Jb%[FI̝kQvJ_Nys\SxQ3fԠ5PN'\/2-K]JT>n$0N-ӑ'ېg.GlN--x-n"Y4宓9w7wq;OOdd5S`((_W?;~ >A4@@u)^Lf\û{ a#geI,uƘ'bzڋ*ߨwpbw1 w4KNzμa˥'Y(A3{%RZ>;߄A=6D9trmpZr'S4ONfƁrt.sl&'mT#nJasuⰑLqgzHu8(t;_=~:|!>W~,ߋryI{{ԏoI._6?p׃2:!CA w 92RəR<56C95J+3B]$͸"cSOSɏ^j,]vy fƝ<ϡL-&{' }7G@o҃~:uÏ{ ,Y[qKϠwy`o2Csd+Γ^;WPV YwiR<f}@A\yo1>Pgeغ6(Cӹa;6&7W)\<%7}N`"<`4|{暓23Ε^t&7Q<x'tA;=>04V<%F)[.٥W:qw*m]>zYsplg 1셙3wM{J:fNǤ`sš \eNmE@8v}$&ID ~1pj@_/1U 5oix{|<`86"K|s E$]/ܼ7 ;i쟔(ePi^2I!˵s߭/B,Rp7⅖`)uKi+lk2vө=r$a@jalEB5pւR>e~>a[v)we| 'ktOah ؆gI ?Ryr=VӺws} 5Syw^6tz9ӥg1S5;[u1Mw |2UT0a.8g}w ad8])9XƼuykG o=$ZqE8ɡ gʯjfb5bsP3?-߭ 12cs+dqϖD`phB06aB3>bS,1vL3`\s@t 9~>ftNh,3ui|hן^:Yfkc(g[xNYɕ(Y9ʼnm0%$ v}k"(SN}y ̛=㗽0(q[mp봹rU `spǓ'^4 "4MsRfUoʯK%Lu!=>{0q*ZvYchY})`Ry!:dWel1:Գ|%FErO/q+*77 1o"8a5/ 4SR NdV{yWfVC"{G`pBe޳?c^7j:6:~ppXg^ 539kzҹן-}UQŕ%hnL%1gh9YL1˜naգ]34Y>IbĎ؟ySKR,qEjioF|PzdG&KHޏ688pr |-.\&{PӒs"2h~\RfĸJ,P!ƚefKn<ϭ8,KC.y:e s%ls'FJX1] 0hД@'IO\2Nc aI mE)ߊ[a0L"`b 3=7`r{`5+kAqr%,5`WReXΜ-KOTfIt|)cOf/ΕNe@RF[~@4k K 8%9d1W͟Rj2]N5$I6nCqwsͽ߂8yj5+5Y\BLYi=:)[)= ּNONL͌.݊ݼп~h ,H̱'?GV{/pIn0 JDBL/ P/,S+*,ߡTd%t0L(@^c7'G;SN|ȹ8?sv 4ЯkϱΒqQl5%pR#JZ3'uѰV֮e\Z_<@[}JBDe6M<,dzl@xi NyW]JeQЩHčL9\FõqvN⾡QL95LtaKrT~NJknGm?q}LIO je씙c. #ʌJit:r)#G)jEA~BL1ʠL/ؤ\;gb~@CιaZnq%RbS1gJ67K*%GLn썊fϧwO90@B'(Y6;9(y݈YAH`raù;5}~Y z5{6 hl蛭ōN w]k1d6- V}|pkA5D ոHO j)L/)K4y2[ʣv2}8DnA Ӎ p&Ћ{O vA=Lϙ:S~ )fJċ Rd4S2d4360zRb5ڌjSbz>p;!6viS\ X5s_EbStR-FYZfvgT3ps8xX%CAВ:I&טo;Heu79Pʷ3F:M^O5Fӌ d. C,6q }v/u[""rΑkjנv/w?<بR-x@{L=8zn4|:q(oF&'zvł$#p3:K>d@锤ydU(]`telN kq}EDT^P:XRxV?tpkD\jjChGϊ̢Zew:,@ks?A;cKXz'KRX()AhtOAйi~<^:L*2j&%DRQJH1 hlUnF+''!^>77p}]Srn}٠ v`ws?t\5iAƭ.|慽g VA2^;ww*V;Spx1˅g9GYe6d8dS6lTM7nA0J'YFYz,!=&6|)Ze|`Z[ 7g]eJ+2_1M)\'V)`\5CBК0\f]>هbChy֗!Ar=VNJrΙ?_:5 5"bj8ǫԶEZ uF9QR8[q(L&^; IDAT:VS=. /~$R9 .#;Xǯg>}_ T.hk 2L=S M#0Z@5 ZRK%+oWRӁspxġ1DYNwH Jwt+k/X0x0Nk{8z)~$t2  ݕΩKl.7hJd)'pJɘ:z$=& (_fvnVzt^% fl3UrĚRȝk\ûݧ`5kK;Ojw/n+Ie6kL{(c4xNn}58tJv.d_&eM *IZN)*KohE)HPk![s# > `dԵqig?pw}ޭ/V \Kˆ/I͵)P̵1-ni4=ypZ#21_gMqBߓaV' 3i q7OSd@O3L(Sۼli5~,ec>)0FS+ߋ:FVS?0mҪ}87.Ӄ}v9Yun}VCRȗ>k t_Jps>п?YWڶ-o9<ߓ酹rvy%q%+j-^!a"eL @z\0Zb5#e5B31s$q Kte]_ٙ wY>V_:Vk/ []'=c tZ,3g8ftn&#DYNDyG#Ly4zfK#e$7xdLQ) t`{.Pgځi{,WO?tsz:\7,8G߰?́ڍ#ϋ|?FlV[8|?A蟁W-F.:K]e[lV*3/) ^a1.){<~Li9%,'Z0SGB=`>u%['^.|*R`;aDWh=G3PyD|2lǝ$$V(Б G岴Rced #uC 1,uJl?@3Q,e.(q;N5P*Ɛl1 .mEMO0\*gNp?ckf fɵnXl?L%625[PG# vzb-u̅SH;^^\̣v/{@I頑EVi~s9`%آWuxL#}8})7圎F,K0P͈-E_,|7* "Do/YMN#u /.h.Du|a12aAw6pm2 raf&}&d@w:~ ξ v`n/׍E2 EtXe-F3}Rg%B8lȇVV缴sgH}C)ԏh4LBlv K j**xM#qV=r$C En9E-ه@^vx~ 6ԣw@5:B=YpvsfW %dAf;W|gpd~5^?!C@s* ر ?/_'IR+.=KSU *"z&7~hQBDsHg#NJ E8}96VKf<6^L@вGnV m;] &c@TUs&G̘<hq84m*kInXW̭tȷm =w;v@|%jfZϔ#|"Lo+5g"d:pw*XyI !cd ]ED' Z }g; gz :;Ǥ 0cbG2%B!zoV ĕ;e5[d6̩5+Aa<[`9bx3{ 6ڳqMWڦـ;]"nf/Eؘc{FoqqˁLb! !_urYEQMyl}{*RtT?Ԧ"Isz6J)c ylLc+A$pbI`ӄrV^f !O9ɜm\d c8$) AB 1~DR9DߝD߮ι {kzf?C^*@Я0ЉXdf?{CB^X.(B IuH*t@hlbUXn(6pI]!n*kBvHlAF1z2s? [*uK8>o-sѓ1cR mwm3V*T'lćH5eCK~yIA]ބDxKf 9B= П#QՀA@lYtnD ח(ϰw]o:4B?Yi}w%^R= Su`V)` -a''9GjNҎ #5#-_hԸX52zsJwb#En&m4'{Iz]t;u{;"7y'['6/=H8/ A!9E_ ;2s8O>J'b.S%HVi%Cbze!?ڙ4 bv+Ԣʁh$ 1YV+ ~̃] Yo$P EQ҉l (+8f\ߪ3>C0*K}_ NF2̒ \6!W&n4@v6)c}H< JSߙ#I "]n)M*4}9J_j,K.ȷ@B휱?f*c,y_LaEߵ (נdR+%'2Tz>AX|ʵ&R4c<5NW;sFDb@241Dޡ?'ww  u}sDNqVw:Iq^؞=WX ҜXf槝@ȮDtJw*ivOm8l̵fFC&a! 遴=^hXr*Z T, Uzϑ}!xJD1,r.YLp Zj͇4cVq),=2@"'NJ/!fY+f'y.rJf35gt+ @cVtځ1S3M76Nm1?M=^FM^%@w8"صq(4 s͇a(2+e8k".w=ꖳJ cReVT:YX3%~/ B"77)#M鷹:˔l@Nؘ-%c[ &(`+ y-3R&.yrW|ܙfH3Hl"@9 a_g|}#]Jc~۴8-,˓Ha.N* C$ }[+?Cצ\vV)߯:rEѸ>]}sN_bqNy7?QLx@ ݏ?YO>.JBhchg]mB %pVO)8.%bC`cx)`ɱP8ˤqcЅl2oJ@FY9ua-~zByOg>QAf/z\߰vvz'iPo]\ڡZtf(_)}pVaWN1Ne .v!m._p7+=+l{ʈ NP_ @3"t\% fv" 6n EeF|3bJ1"rZ}[FRwH'}%PyU'}Ш nF!i!#h/YGn]!#.>7uʰ^{w_)ZMOINy:us"8;rbEZҧC#DQ(]1H 0}S`LB4h%Baϰ9~O]lЏ϶u\( = 9c4@3Sgh Đ:Qq\!p[Z'N\Tlϼu|N訵+k=B27 tO%8!lSF%TͧnQZɌCܳΥҴ%n?B΅ى<ݞ7g5YB.9.("s!IvNNFm0\ _(V~]%z)˕,zeb%\ [I1ĜL;BcwC;VN+bx:=1}ۣW փ//35ѕc4t㒽cf uXcUx.ˇBkOS ?X ]$n6 d1%bJ:HBL=f"َ-Qv@0F藝`rZ<.7-OMEq"n~3$(%˨H0pF pDI}1AN @ TWdoeۢ7 `z3~kOMm(8s:Nڮ q^Q~}D#h/DH u8, . 6rvg O,L7`), o=#mw b!WtDdXGNjLEQ't$H`iA}Z.%bކLH0'۟Sg& H?_h #u9}ԸNܨV[ '|yZ2ԗ͒/t~yJfr~)}ECxBcj4E=7\[8i |~Ձg,}늧suZ lJ,wEakR;[+з#h>0=Tq 7ie¦.;p3[R&9¾J`8JZ\09MHFBmrx\/Aǃ߅Bg"'g[lp\fK [vLшc,qp0Bqw&ZBn=|"@Ӡ?S k<={l2_?HKVl۱`'P,~8}Oz8$kW+z⾡iźka s}C9E3)=ʯD2uB&0G@AtY(./(_C:Dd ՊԊ4*dnb~86"[3{9Vj$O'5d7\*b]z=SYخM3oaA7!zCcSQwWIX]'wcaqXFT4(h~ϕ紫Z&6j6S$jRE7A_T32{.9ho/K+ZCV1 =Ils%J6y#[ 7;UOz)ek̓WbO[BH6148;U;LoIǴ;lE:S`S:Fe,Y , }QT_&$Эh{P>G>mñ+,N2^Z#^>KXmZ'x)mu){%vczK쓅`g*}L|W~As!3H6m97Et\F|O2@2v1< #[$+JSnlT8l3%#>Z~] 5R@`I+e~Aw7 8:I ɗ 9~܄M8 uB3/ңv!We*r3z]&tD?_e7e¨t"B`oopem% ~=g{0[_|] 0Ӊs/"+I=b~vIHμ-Y mѯv8ھ*~MZ&i> D@W bʺЉ7ad^oCu- Œ<+y۔ y)@ N;_S ,˾F0.FS?!cRrJS)ebCgt#%S DuxM%4K3R`Yr֑ȉ}=@,k=}"Vw!\lgHviTmKv$6& Hm g.@{!tG_5E?DuԃY~-LU跹ʺV'Gg۟`,o\ f0GHޔ(2ScBt IDATVIF R骒D@D+3l}gIFC5Jto7>~T0; WwY @ VR!9 M&qBם| oT,e͇8S%?f]& S!talFikVLxP@dF~L0Fh`&Jm7k^+(Aˇ޵ yG#bp!B|)I4h Ys#n2LcmB]0\R(k>ҽ*;0w~rlEHu=x 5>,}8B?ɢݟ'DCr?EX읇na_0{/ LNˊARVzi%BsL>.#h>zg(qmi6" b214AsT.랩ԃ.`] АwSa/m"S=Jކxjw~v|-OriTJCU Q,Gg @%Ӣo&Eޡoz)13.PX YN%C\yD^sV]%w?AN=p&_' V:CwJzrS띱8 !&HZZu{mOxlŔ]P; [23$$]$]ؗC7 5XjyW'دrэ!e2P&rO1M0`ۥ~9W}Gxئ*~~I@> O\>yٯ/\8l `Z/,> W&407:[Y?2ʑi{mˑ0^wXω%] 'r4۞ @ߘw)͏as{z虨˄"=tm-B{Y:A߱Cص/b኉q渼48`,7Vi GaV=yǂqV99ȿ^'-П;>{ܟ R֝ϲb=`sgGxDayA/c4O!@UA*tw"\*'1^x7 l!$F1e6X'w Ic=F? PF"[!)"ٙSϓ-]{%e4u-8dg i#As\[~rٙ5D++uQ[<=0z )p}fq9ՠ?U@p9.rPT&Xfi*@'Oj~8,#6dNC٥K4y8`7Nn4R ˛d;$ tY4'#k +M1bCe\FF 5@R-@3+ޡVO@"nv2.2渼RjE4 .wC<^sG9.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.B^C7..㌠qWP,Hʼ 7츌˸6ԧdB\F7)e\6yH O (seD)e48 Si>7! Sk4ψ1zٮPY!|6eX)3MɆp3O7Ȓca\2Q_5uᔰ4|&vlK!eBF*VʄClarLR7@.O&)ddcxϡ\x \8!VX<u>B!MC4Z*K^E#h>ރu\0>ŨJˣr)6b%]?)L>4Tmsǂ:k0SmCR#璛:G|(( .ƘӽRfFb1"U*Qb6ھ\m$!F #Aw⧂ԥ(:%">S`3ʐb˄%sWȝ^i| #hofVx/yJMv̅ձMYͅX[3J.ܶ$䂡LRu/m2 \PJo!TPxnBE1Ф*(q*))crm7Ub n(η47Yޒ=*\ez_X) ̇%̴!Q۬k3%x1]Wn(micZM[$c&5YsRfi @ .Tpk2*̏e]>D 1bJT ,9Ӛs )*1=*߹HKMgu LA]c$80CamDu..sChH;(#ҨK c+uSI7 ܪ 7 wJz w1 03Tqz.րXh,CX^Щ"p t>G5چn.s3Hx@JL=%I4ಠ8RMLυK%tVdh=Gf \J@E\{3Bψ':X2 7xCabOh^KB\0C)g6&K2qoԠ%" Ι ܉3!p \ 5Ȅa\XvJCs.r\ je8Sd2acd+;bRa{@Ja.ntU0iMӯe|+dnNq/a#h>F<)6e!50} \Qh=aw um_M[5w0P!_Yj0Kg!9bGEG|L4a<$3sI<@W Փ)1(I4@/oelzCE HtMP}rxL dtڒdGP, sn.ݚ3NՐN[R,˝b9L\#$kH2Il\Cu6& u*q ##Opfo(P<`+ FnM@67[_t!1:3J>խd? f >+Z#tP|nH Wjc N\S }^d2f6A 0/8KlB>ӝ QOCXmZ7km4(xvBsC)]ܡo?Df3c鬚ήѳl׉#ڗ+n`)kf70 0p 0QX:0wZ]"M ÌAkȜ:۝1-:1YŜ)K(0)R@%BX("49&墐Yr+<%F|uNȵ<uD Y 0+O/& ڗ#G^ck⮹ʮj3W" fXjXȜm"Sdn;`~0pr q`@b.UHJcr⦕L%awdCuzTG^Iݏ7 CwD&I*S0ǫwtu׮f`gYHCe18-At 2a7S$\޶%uuV84!KB .V3nкsdIkj)>&=f] m$i: \g)LVKo:DDɕO9vwm vu~ݭΈmC-{EsZ9-NA՛ E+p݉mk]+%Đ SH%,0>!4)7tNxS!pcH&pL4zh(cBB-9&Q_{a>Y^͎$[ݮ]Kxʭ w+0( *b"ꌪL]65}},bU_f"9ē=!# eˀ%gtuFY(pgurE5 lLK1ݘ x} t̋/Lfo㟳]vy=?]{ݠsv=3x&t|. ߁~)8m|m$tPϻd \/ [jǏ*`>I$IY [,@c3J)=Y̯W>;=m?o Iݝ&n]߃\$p~.7UCfTM~?]kXnHJՕ$JWoha#hއm-MxBԺ ҃J^ X#eBr]c5fvxӟɟ&w8^j֜Pwz 9- 5 1NR M5}Tw߱mLL46B8 ֱ>&= YPXZ F[̋Mj6pm&ϼ:_\j2<y06KӜ; >^`saz 4+,yeP"Է:v?Vws."ŔҌkR p }-"2C7!m9` !'G>~}췾I)G/~ѕ^=V]BsqTT[_a)N 9` 3Ma*L?S7n}[_D* cH*\c@hS}Y="Y K,+7AMf=]|+O92?0;E:=sBCZK_3o(eʳG/}70o.v0kVh=ynu T.z0 A3:]2\-AS?o T8_ v4Yku?i/nea՛\[1:!GSCsCCBkal)PN=I !c& :~]+f͛-`DeNw%H=Ԡ-C  t=%D 4c d@.Nĭ:t2 'LCQ9 =8esb:fhP^{ AJi"airkGϽ}U=+ fl,Asq[@} zdUUkTUdrg0Ch. sze]K='Yf1g1]\$P5i/zv'u&b24sE) u>C@M=^&{rjL%; XgV dq凩]7~z-ؓv5(AN&uCq2c:f y'4$K85딿Rhafv+4Wܮb%3CX!gKF|B ҾLw+Dh.egtDtR55ӛ=3ԓ_U/3ȳKfخE{qw]J%R\'|t'.w˒u 8se,_3N6Cg;z~nW IDATtvb(,"k es2g\(ya-%@Yp*ܼTN ~&!M'ǯ|3ʏS};(7΢[/>p{>]s,%@RfHBqݭK !M3`דc!@霡clZ{X,8x0լ՟&_o`\)u2VRk,)*.r$zs(1NjB=S4 fϋמ:T/ ]6Sw߅m,ԡ,@k=\cȀCFp=2 2S.h4@jTM_Uڞawy,BP9U,OyV2͡swr!rrR 阹{c׿az|G`!`4@ۋҶk6x}1sR!d2t:E]טNL&0h2S*pm;Ĵ$3iR2y. e|On$Lf~wgw5gb8clnhA|9=dAsc3;(yݪ@hYs4'ž S|:f]=ԙr>.~!2Ki4Ƨ?}V3 1 r45Wt5M"4 9C#8R1Say*lG$c-K,mS:D,eɭ_k&>eM(X Ϯa&"WFܲݷwmn%Ct4K,CN\F KJZbцJW;%hʰ}P*Tv޹@֖GL,-/Y]^(l&MF7Hk eq`;/Ϗ^w͏-2w0%{E]=1v|>l6|>Nf=*Y.nalEIJ iӔjg%]- z^'BcnjLtUJ9㟪f7x:sƈDr%u]ک߷(z3ek,atIƀN?* ;5V03{C|?n.p]fy`Oފ:/B]>L0?ԿN&BSC.F4:r즢uls@4COvjfcfrUKB&X(3IUe @zR=N%5J Dzuh醴NO|n~fv wA, ,gŎYz%X.Z@fl0Tֱ$ T`ۀdK> ~Cy`S:]3U]q!,%;')lo#,Mk e]+:'ȹi䩗/~_1/ыh}g Mvz^(uǃ`,l.=Z Ƨ5(:0̘9 ֡ڞ@p 80,3, +V۟KkwQ!]s-B(7wL_${I31kfq͘kU7{V&!]s*FD̒IZ~\@dn `09J℞/.xG %W>1m<Ь.Мނ;}8;ʌ$ %hPOL?^2zVpŒc\au;,1#j";3sl<)&c%c Sn3pS.:( }A1_'3{$4׭fX_4frٿ՞N|⭋HX^.sYXHȷT?rrD2ХAC>/CrN<@#VM}+W?D" vh]ۀk%{Bx(ր);ZԌR^ȲFUft<.!xRۗF ˠoN]S~qqW / 6`񽼋.3LQdk쫶֢u]Ou8uxg:+ Lyǎba@5P&Mumhb`|o0V+8eQ5hj,)I"2b]-ݏuo`s.c.%Ȁy PSeL~,IY}LR&1ӫ╏~z:1xzfɻqW] y]j SIp\fC9Iޜs0s p_:02IksC a4T T/jqcN~[B&X>S!xuHfб( ;Y>0@igמASO"+Y m ֛-`Kʉtv\fC`)1 S_ 5X23eUJǸi5#k pe 05U0NC 1͔kL3Nm0Nz7NlrN) 4ZzK`{(C$yBi&XxMmj:'?9̏WU/1g5 gWR)dbk dC0ہmnBpftol>ljC36&m{a69Ncʉc F^e#dYH'11@.p- pW1't~,~5#Psy |fes:"%nىL$P8E2Ϣ~{ oPSOu!CDGA45X2P7f Ϯ̨u7,cN), v H=[I/-N21^`p=QuҺ؈$ΰOSfל"g(ߖI$:!<ȅ49QN 0$4gR%,dB lŕ>?U`ܰvyt3JpY9;X,v]=]H0uI0%7vX|iZ ) S/}R[nGȑӔJ.+ψm00x*\%ց/k>Kfn6Ig+8t~&G_pr{ \ 9%ySN~f@LxQ:1rP4 KtW'| 9woE3=1v6t8.64K0ny9|jXն8QE=%=T d=aQvIěOܧEOOs2x^;h4jbܱ rDZ*8|ί◷R$f1ID>$QaP[R S}1&R^e=kϽTOQWٞfP\,;ldp\&) \g$A%5K$) DsqSVmq'|vr|ˮY} lC%|HlU$rR9 ND (4Kk2)bzhh+buB@4]?0ov.EhvصgNogثYqSKKɰt,%raY|Ӻ'W3&% ݛi^/PO$Wڿ |t\B50p1 qNl^|I(;8 zq7?b׹̷ᄜ-1kTGaCQ0M!5 &k2 "\h?DDp|cnJ9.RuI|h\_rKM.3u>+.nqL, \28&z+C[-u-y|{:TVK?b}d(+Ewq phe<1M`k&W~ݮތ\ Of(ۣK :LaUD 4{ơZ׾ϓ:3_ǔ\DFzu1ʊBf ,CqdKyi1o28deSQj } aƊ f@+4]x5 A8&f LTƀ!@Qx-^ǽLLōH,~[.13-x/5&Z\ꇺrH9 a9W54/cL\JT56n3m0?1O׬О݁;%9l,Z#i&S&|m4/zIqˋ"[OۻIY|~olW 3gvzr[|'aq F+V >zrED/aoouN29 爝{L csݺVPTKJs 6yOm+T2bXe,cmT'V+{?z~`|;ux,l] `Jk7飇Li s/wK3z^(f3,@a8a?D_2׶dWVXqB7=8![b"O@I@)=WMk/ ׶=35NkD5?& @9@! fS8dz M0Ad6ɛTv=Vx-s RL02_;6؝lMXe[3%`zƩg.=|Z|nm\_J" 1phMvuUX|w(TcH 3X斅~Kg10%p@)Ӡ}j\%i|PԹ=/15`^q4цE0u[u[uxڊvQ}$%t 8Cz;JG놀"2|@wP1cAL?Ab{J `Λz껔zep2uTkglsqZJ<( S8RBĴi2Dn۬,s\:2 J\3{N >mXM%B8A<[ݲD\d'慩M)4}Y/8V;?RG}DQ=3PnjpKwi3!^2V7zN#fFކa#2w# Pߵ27`p62 ݲb^jo.yU3] M9@Y6t/|* ?n^A3R|^Z B`l>ˬ'G/}?Z5/ pC[ Sl@L݊BcuC |wmۛ}`?W C/Svm{ĸn 4C{C!s m0o1l#~|p\ h* b/Yրc˶YINpA$.ɂߧ0$h$vRe XKJ0!3aFf s9~f43l~QK25rZWO|i{ȟ6u=sy똉N鎝5:"m;@f82"%΅۩,sl%-=p?8bfF-vNR2^'uoC[enFfzq]|Kl cm\@J2re4(#@ 4hQU?l~3;z{wIv}{qM%+/ҭH2P9M:B`:O;p,*f׋мR4u8:a]1b%6'\ mS$xe]Z8\0 kJ̧ -k|n_؟*J|ݠz vB52Zh3$#=0Y 钠j'2c r]c?iSO}~}܃,su5vlǔ>ͳMV)0u-dې&Gz9B81p_D_&x\< eSCt\E%dqՇUXCIƶ` c%fYїk(D蒑ĠTO\HA 3P,Lr2ù$mд fr#f|+q; 8,g/'Aa1@3|UOZs/Z޶b5*3F(,~~ILP2+#)rR9O`Ceq%B@Ȑ0 0F|,Ofs$G0; ET#i ӑɖqa6OJ{z.F?iSO1ľ®V[ca;IoL1}r&d2 &~B,9Z%d IDAT>nZ綗m_t &1gg;k~;<,'<hrޒ$LO cA 屶"-X\uc`ʵdnp9Ta_Jяl.96;q.YXI*Vp mٸL3Y#S:Gh8+,w3zw~c:$įdm̅j1-+Fr,K1}GrX5>8ԽEgn/N}d(8ёz-wWXT j`:J4L]TRz3Tcs8%WaOQ%FS߆5Y,npB\pݸҋ`׫p[0xOdCb-dbC@]R7_{}8Qf~wQGz2[mXf7.SL̖k7;bgk^{DкY:mPGJ7LOKSHόeK;J ćj1PjU0Zv n&$[ͅI"~FOW*ݱঽj&sblk7)#ŌSERIC(l/4Kj)aL0bQ?4۔lhrTϟ}Ϛ> [( ۭŶ<"/de̥gI31YsWI{l_ΑʵCwv ];($)}3c T,Ip!^~p2 [<ܘ'T "#3G 1;{^i˸pR0U/6"AYU G,qTx K;yLnh מ{jzQ9 &&$.!)tGvh#aq}b->tx3a;шC)%`qFyM1M18 s:ki1< 66q%q_7m~ή-bl=e&JR9i !y :spRwI⍂=3>?+&yhm䰤jI;b,=3ӉV]olWś4Ȟc7oVs · U7si-ᰳwP=SZ Mz6"D֟ӓ K@tq #%#s) L ͕fl=<Җwp]LPտx Yo<8=+ &eFlYƢ.PUqC aq9#gcuό??\.֩H}66ٻQ<WئM]%o) /#!Ψ٭k̮,pg c3L&gY#xLԢITiÕ#Uׄ;+ .f}eH96-klE1;+7R^jƩCgigUcA9ܭ7>82[ůѾM/ĸRaz1/! qZ_*/a5;q"='Q嶟Jiʤ[lt1p#ogC"yr&\.iLJp*d-a1*ȻHȰј U0FDoYھ 0vi1GdC%ayarf|xޡ?,׉LX/c=ZC]tm,b:9rIX)T9ԵT (-bm-~r]ii_TO&'H5v}I60=e\ pRi^ _P冽j3]&-G ;#S, 0nyiWμa-` =Z`xOH*e(md\ӝGZ 5`Z@Z"8~ueÌe6!7USP3sdcw&g-Ep"ya'lB 5sr(dUl5kXVk;,NDKRL NL:X@?L}tY] p mMǵȬp%)G=̧>6cL˛E)R$A;.KUeχ̨tk׺̬14W9pʂvYwZf44Ma}_1q`)E =)hvHɡ\UcXj^ 2_RsyL R>O?/k9&xxff%V='[x txk 8!K sVtKZ܋i'2' -N ΒԞַ0ԍTɌ}?`Fzؤ_>//Ԑc6i{y01Ze$2 Gq6uyDJn^^Xh.sKrV'?=jd }Nm+tk<RS5F, `ߨY5F ]u 04{hyJfz3)!5FB|BVԮx}D1htP+`;7')Y̺3~oc'F 9 {z|NfcƳkp"1pƓ !a۫y} <8\**xo}Hb7)!;. ~("vk\!H[󄜡xK -l=_r9N-֌GH>Gд7D},d.Y|?~b̰j35 2]e3Uw0}}_̶w C9OC 3mjuaHC?9sO |.-u=%ŽeI'"}xwx@+rԣ Á{nwL !.E ?CWh}DѦI`Kgp$evKX6ñS9>9q"EP^s_ZaX&3gK<`qVލyeS f "| I~kΈ,3^!q,8OCObw;0Kk Ϭ6?Zz-3h Kh[qDd&Z|"zrJy2BȷikEWțJPJdY*j6kVN f,Q(5ڏ24i>3I LT1 1TxVhN/|t,%^e ԌƋhpD Ό b|!{aME>wװ̚G6pM_t /^{:0FM,̚Hn}ﶟV3L{/Q؞%@Fa;\#*E+O2ܭ^v',LyxC1{XXHQ| 5uR=μOgk`z<`թ/Lɔ@<*p6[bEckj+nygk%-LJakUL svOTx=(/ *v{'A-O 5nu/;%',8,=FYvʉޙZNж,$o=n{qxk\/hn$$gmCZ"3>qʄ8D3{|`lBZ"u9 ~@/vf*.rqMLq=xƴ^Anx aRd󂠄9Za&3m *odV RwJrœKBx eӑs+:&7-NLIc\ Af7F ~zhNsS4te1rwn~*UpÔgb<9{lGGZk-gm׊^1#_xf,?XM+ !? [pȆ̝"h/|=&W9cRDYӲX+"Y;k.C9O/szG M+ e @!x#Y <>wί3  F9ۧe؀9_*sOAr0Z_WX:v gx;F\O5JxשskӪ,;3qIwqq&r{yxQ-@gGr%cO䈓~n J>3/mn}:-_]My*h(h6qBHn{qLDQT>7~)b Yr)7P~O ǭRaB8b#EꈰawA5!'zʥM#Ym%FctxNp:+EQ|ZA}jNJek9N Lz~ZZ muP/WYDe{ BAx=jo`(^}Mrinv gfZ(îB#ړ4,hST!Nzs!r 1$a v-0Ӿ0˞qɎ8RI^Bt_XfpόwX 9Io&þYY|hKI "bzi /!q_kJ\ {?4'IDQ5125My&Սpb,)G:3bΈR\ k܏K&RD]Cnլ6o蹃 }9Jm.jK]$`23{12RQȥ-cC'?c6st5@>B?0ִFSB#7@-.PA[[N oZ޵flG)^:B8?|ޠFl浚$%*¬6ʻv,Z9Wxڜ8ͽ u4CaJإ4yVoy-R<0.:5@ 0jiay&3I2u<'"cert\ 4b?ϭ bc!rirz:G7/VϊafiN%1* 3oFpggD :#/Ԟ VF\\SҊV$} ˛Dp4W[mk9P'&Eqq xgHJ?=dϓ;3zfmE~.Uu K^XaI}!uu3BhYۖ෴|bs񙘀*Gٹ/B%a:e85_3B ]kj E ym7r[o*vLcMkn> {8IIh QIB!ii!4'J cOXB~ƻܛLFHo=3>&"?" \iU09tǹtJ\e`>"*b!'  :r)  %g!;ܧB;d]j3Z `0\{nÞ. c"iޤ\sgG+Ph9C,5gp5F 2E3™̐" Ecx|JKټ )t3l QiX 9jKS RL͗G+Td Nڂ95 n1z3 œYsMlRݟ(7l?=~pjH(19[2Oϛ fL+ L 0XVxճב?%%4h2K0EqXfu#+ɪ0֘c "wm dVtmn$EB'{C>2m5G: i(':gG쫁\F1{f:UudpXQ M[`P-|jگ\zɜ8W[37]P4˼w "]z3wM,#@ \AȰΰ hFЮae[xjj3andwr WB[_Cft"˔x *lu13Ćv?B$8GRCcxF4k.'uZUj?{#c@oasRؚP\|H<4*@gfa^qUB\9e%2۵H{nIT-8wPkl47:N e٭WܕC@'#{e'g%Cnό!S *r3D7q!3%섶MYn9;Ũ8ӒQرǿU t԰͜ ~G0_n3sVP0e& IDAT#?,49<'nc,3 jQ59`4#a9a7*՝DSCa_Dq&9`-g#w78P/.\vnTQ{AY뢘a'#K򙚢|Pv Q2XRZ!ٍSb=zEeIyɤ8'إL'3|$=VS9k\mpqD_W!i>@y.*w6 #GH?zKdHD ) Bz5ZgFvV)j׬߬ L3)fPQ3xPc0;" )N>.b k*?(nR$- #ZjkBRG}k^^˲)Bv "<+/vʥNiZAz3*6 |N J8P5;!Xs,T} 07hmK;Ɲz޹KG~(jqZN)+6ϼ=RwDx 998;yZLwxR|L]٧@eyoܗ*Vᮩ\¸,vl)9QNq $tM辣Tg|5)q ^Ѽ4 PؖrƑ qβM]S¬VR+ C-Tw^̞g AO"22/iZ~=ɢrȅ'.B0$ƗaZC^b(rm_ -% p]dɉZá=[tR %,JkPγOjqf& 9c M7k42$#_Y-͕B4KnEQ{`k ej.DrIV۬OLYɽsYeURhP7gC8q4'+{f  ir6],kE70?R&{|1<`vQZ4[deݗ iR>` :S ѕ65o$Fƾ8WVe+FF⬰e-Ll.lJ Q>#R6fP͌ q9 gJY%0ɥ,[3qҢݬH0|3YA<q}I~uy%[^?Qj'„e g3tdD4dڎ[Nd>@Er<# -b:&"K' -r8,.pt&$hs6Mɥ_Ǟ}Y!'9'0 ՆKZ챶ֲFOcXh)$pn# \m5D`:Atew7ȗ6`&iUx#L%Gfإ 9H9 p>KÇt+0SFLqyK9)q1iCO(JU&[ ?ƒ3{Mr#tAJ ?qnhI3Jz×\`rR'afKquEHU kKf#NF_2(S7x,2r,w!J %>pgͼ]QV!7ct'aZb'9C^hwZDse099%(gV#-#)x\5m&ZNJ熇gS\: %-Uh3 `i+z-Z,aZ_O^F,BΫ|15IRXx=GN_fƞ93ԡN8EQ}`2 hhW¶{|wWQ{[gK1Q9-h ǰIϙÇty*+wh` %TZ)x:#z\MXMK AʹJnuJy] ` yȊ LS>d& ] 鈴 +/XcuHc#n<㟱O\t<7Rv)}}QE6 !,*lo% P yN Nd1xqe27L+y.J 7 jE@.Qi yf&,ԪhКyGL U7>Ǣ+Ԟ7DWƿ?TzKJv]+ %9%(HrXIF3]™CRF?ɥjҬ2.< M6rTgZc={]rzR6m™NbGgX ɦbJz'w,qn)D>M+ anjOS/֍+hŬs=ǖʋ~Rk׸gXV, 81|;=6J6]&ƴP\ Kr9OJ{Yr3ۡ4gyh#u,y-|#8"m F4՗/riA{QJ@C4ih%K*&(wfGMv=~{|nE+_2{gi R-3/԰gh쳁l0bYuxc-BԫU3LKGBPi^9@V@Ʃ)bl`UƳ\DL8`?Zdj֐mYg<%+ơ<:kl,s5 .?L  3ӕ Q(j@SSSַ3V*T~8{x`ZsuDWnPMs-O6Be)xa "dQY+ C9}rIfsJi?V HX7(!g"y 0rt-}:ȵJU.q]]7yh<U.YM}O=3.ƏeQFS9}|& ғYS֠Z9ʍ%H%BIעv}IC ӼmΓ]Zayh^pyp߶ !``u@K&'e5l8&%ҾKךV)ah9X2K$-e6\|鈈d qyDpuu.L2Do4 Tj#\z%HSrr杢!aG4`>y鍊 D;ife]Ú|}zSxfZlc(66xJ#KD.a̔{'RlkLn*Eh+:gOf^# G1jyy7m~_473՜q ۼZ= ~4H: ݉Į%5&3Z^B EQz#n4cVƧXR2< 7~T̝Ρ'3E -~X LTi,x`)l0ݖ|v9 }b@@fm!ؘrB+Y~>%;j {"yZ橁6jI-8YKKc<72b..7AoFSRz#ca[ZnKۋLk;  (ʱ NB`I QH.5K*Ǘ8- 5r$[S+f }b`矁>t3:L{6*/fLr0fy<:z%[Yk:6 B,d`. |X}4kyn>Z+\RS{-/0*K@J{>Gφ[o ӦuG/.r<gz^ dt\iNzSn Q'7rӈqo6Т1bl^])!p,Š<cyo]Qݴ/Pۨc>P-{:ƥ4Am e54b~z9 ǥ 4.W[/YŲ<`u#Nܿ+XG6"SgD̖^bzrן7OK)|@.I t.|M 6 "}Y(HJ]*Ăe~J ?ZD!e,bֶK5[s3?jlT[:5JrI<{||w[)_=ɹٿfi$fI`sß8ʘeX#\`![w$U4xǗ?~bН]ϕ[yOGc"$iwޠ+QEN5x%*]5g#Db1xh"2 )aʞd[?q=~ . F PRBa7X#@Z3ym;/`'42d -QK< svZ}/Z{6-'CMQkNgu+"B X,+ljX˱ 96-9i\ެ+hpn!ߘ{> M9 k8BC-"PfS K 44mӲ B^'33$~"iA8yjr`j{ =}j<%'Ig _a@(&/ܨ 2QKgpьG9(?%{ Z'}9Ly1nB,+rD b U/-L3\9OS;X(nZ7Al0j_ro"K 瘕I.Oߏy~w^<(v jtH$Vjj@3z˰M>AAsZ>~Y\kSJ`-ekg5-`yL}̢5GVh~^.o.wIG0M+-b4@!(f,Ъq{~FsS4QF88˜*v_P fȟ?wE14VN~a"oR IDAT x^YK9ѝ4@)lSs8_RNTc>rn ZBVS~0&CoV<x(~> D3'DggBaaDJ>hfJUhӜ d%bSp$,3G=CxYrzңfl!q2LS s]W~>Rt(tVŰrs.5X!m\fGcCZ;%N뽿 ߒ2>܉dd+]@9@D췘,Bqks!Zs*!PRTHI3\@.NZ+ t/"x]Rdg0lTt>#% Ka~.1.yM2e⑙E :*K qL0&t Ղۺ40|Zso0&E)xE!U5K>ܫ0{i-v)#*',9L;rҽKeg#?:amrCwN$.|B,RެMjVq(}'qJ% ,9qWĝA)>FT }-q:`[;X\J䎵T:^ LLDgaTP"p<DF?LNs9G䒍|yk`eԮ!COw&X.5h=l™BiAȺ{F=v]$ y+Nln!ЩhAP S4T;p-nAZaE.vbOv&9}yAJSFiĴh<?a24ʍvI.BOh,Q;סbYR"#e4KC/*x[rt;iaiH2oJ@=|A&e!c[%JVq}ߣj,@!6#0i u2Z̺KC%ϱcGImԤ,rs0[#Lj. e>injѨg&7"T{ξ{`wI3@#nhi&ptlX]ci>â>ap2f}s0q PzԮ!kd!Daz.4IJ3Y)?+?381Zr 52@%3emmULpU3ciʀ0} 浖[$Cd9=ze2%`Z9A3\>G ! bP W;衏б \O(4I a0H]1T֘υjRekJW}>~Q_ȵcnrajummZsǧ#Cq&/S?2Jr"F.KxK_27Ǫ\/I©53!0p0䧹t` N J]IzdUL`5Pex=wIk2FH[e"8^̾Yťf"Ch~s<zx%8fPF(0h@*S8$?F_|b6}h)7x Ċؓ~>?ε[=b` 1!ѬEr[XQ ۭv̪:M˒nc҆Y :y#mfAz;.}o/Yn8hWGL?8ud|}rVY(@I~v:c࿠-^&l^ Uc2iXa1Z_eh5NDARw`p/㛩Rqx]pTwL; . Po ]8>'Xj4s\ SZ+rF@ X+#>|vG&]+]B6d OÎ A1g Ll`eCĮü;:q-.RYi2a H,ok'rJpp'c09{+ VJ=.~9Z:^Sߔc2'0wh:*W u.|( }wc15EpmV=uLjY~IpUD_ “y3E?mƎ_ܸdYN<&ԶVX>wR{~6KH&N"Hs=~mijes<Ƚ~w.nO {%J%(kD/{+2o C֒9V\&*`ÇJs:>w.D(v ؟Ni}rp[Jř}0k%'81xtpa-gIiZȉ+ acY8<sԕX*cszyum[q&LsDcyF=]&sް%fsξ[ !\| wx]%-M05 a(W+`HG\b";=$}B'7okZr"@j=>SJID8'g蚱숄Ie2I[yœ^iޏԀPɅȤps_ ?com̯ $hX\G @KdzYfY{ڶ" V{'"+!6 +wEdh=i $72ٲmRJb )Z &gYf8nf}ڬOnE6n+"y3X1^eŪ#{T wcx\<vTvHU+5 FlLa|"r:nPFxaֆ̲#Ć᪼Cla<{~XkX)z`e6<ђ9R|(NZ~Xn0pt|Nn$Z>Ԅ}т֩s0c9,|ngWE+$a[n~k&cCC<+xLV^nyiko/h3P,smhZ.>,^O_YwW?@;܋ ",̤*X#ehi6PV]oj ZK%xh%ѝȅ]fsFQԷT7mAzXi7 spc:+gC |yYu%&wi cpqD)|-{cwGc>k ړ'ނ/]7%yΠqDѥRj(k)h:gd0T'$%M(C~3NYwr'238ܦ&X!z ,!{7אfw$5 ǁ!,|/ybiuxNԞ|?`4EJגE `_T]g[U7cs+ v9ڢ!iC4m`rXF Om5l3+˗Y =5?}x@3vX$9T.ɹ^A:9H-yua>gk[n %R+t'}W|1<gBFc/0N)ң`},DNGމ*rHӖ4ɠN1 mi6i'TC\"n *>qJ/3ԚU5 1_P:ʺK- n=4%f0gfbd3wQSQѽ`=הM"DtF%!C991Hﴨ՟_P#hI"&k+Z߸Aj3D\$f Gff'r 5qJmD`/Mqud9潖pTk/x S.孑F2|{ԗ9K(&2W\]~^PW 0+Ď>a2:zFY>9oELb{9[ؤ@Y ra>#y#cemnV2jh @ߏlӫZ+)Pq\0=^vA}TQ9ݔ*~o<^ 1Ӵͧ1c 0IkE'GRO9ɰ4pj[y,\Z>/|%rADيpR`Pa,CJ&YQ.DG3R+jrC:xZӝ`mdggԬNy{:{*' q=^{6tLZ+n*9 . ?6 OnӐ&/N!O3{}`Tf֊:ٳ~~P:.U-{޶J>a؊\9 Xk\tg"(YBt+EӓNr,%K y@S]LX@p#\9lFMsQ(KqП>"9;H ^7@ˮ Е-Vx-NIA&&u\>hJW`]G kJQ*"wYz LSzdy2N>ފfG S:"e |5F'أv^b*9Mxʅ) Q ;%IX!K!<HA!D2g}[mnh'f4n~mjzLn.}Oa]jV9Ž?WxaQQcKӵ@yn2,'bK^(W&v^ pI,(5- ;hZ*UvMu(ӿ%Z-R 'ˎB |ݩB~rrZiBk٦j$ d{ܥke]BڴF!7D8 p.^P4߀4Sse41c^Ûhh#7ԞSl^&LrI8~JPgoK^?J/LKIfD9{١D`:|2|~^{&;mZ? "W_*UL-JX.sbXiEgcat"͑7w ĈJE#6n>6}m..g=G+[ƌ9 CHMen +! x%/؍xcrv ~EjCmݕErq$%3> @s8aYa?GD-30 %aC 6D8a`=1n㜅߬\XD م=w!lercaa4Oyq_eL٫1W ]wva]j) Va5er(`^̴=)+K7^ޫ5ѢkĽcG_O>}DMZi4rF׀'@w{e٦,k&bDɏ&/şqk17 2acfa:a^\C6 jj5ɷۢ!fl#A1fpX4ϯjmFOjqH0yM=~#ʈ,xHa⃱p%2Tp܋Lm0; s\Se.Ɛ^[='}698r1)$I.ԉ%p%_#nHĞOo m0Dq4JBM<b=oiu\gL+Ǖx'F IDATu!oilS[}Q\yT@NqIҔ,UrDŽg:fw ]atnH=Қ[V{mhq"0Ip'@2Bsq.ʋ4"ɘ:c.OYA!g-@N3W F=TgSv9dJ=٬]N~F+x@S+Qu䄑,#qø K{N'_0-@ @1b*1KgW?ϩr hx?[Sx#uFS]ڍ[}|,1 ]Lb| @B0N+HG6PGoE=ρ&#? @s&35됥EA='!"w0eq斻ޭN5Q63M5^0**OJEu D ‰px1FjTgܔF4 AN"=OQ#fyYe'jjvbt~/c %EUшkirR]/!h_ Xns/@Q]!'7-5 kzԫõ&7~ˀmRf$CVovڜ\;ᆾS+~F)̱dFs=nC(I&O(hԮ_R0-h;_5 I: 4NY(a.$fg .}gi/QE+w_%,g([j"<3a3((d7ZG %̪R 9g%ԖyK9%DF1O`Ğf9z2Bŭ/a29 "MyE֧s656Z/㤶& M5:w$:3bTo*rZ>*j8|h%/%" ;ĝ<;#yL /1makupL_" VA`Bg\FI׼8BteZo]'J끆jst!Ki9apn8Hkw=@89d;EzFJ"r4m,2ATNu$L2tx?2~-&Jy޵PVȹG7;{d7Ur˔Iⱐ %^7!jBr>e&2l2au9ZNNy] v. !Z\ 2 lnA \:$fBA /g[,SԀs,x;6Ҵ"شU=!rB^B4YRWF9K*ֺ0!5L-=q=>G|v{+˺}gϵ9>>vpl 6XF !d PPB, < Bļ/HX<$7@DxR%(s9ZҗC?{Vs׭JsvWWWWW}o $S 0oU^dZ&w=GtCR HSsf_XΥM-I]!T2 B!Ԙf* [+hRF? !/ ۊ$ԗDX7@YKƞIFt4!)C7S60ʱŷbd`i,PE5f#1(qڋvI:O;u"Y#j#G =w=~mK3eC3cyzL jW<wpU-N5V0гdGdBxHdov %薱q)((FJO e/Lb`n%\ )"cɅaЖsR3QL"{?{c39㛮q;2H=cyȊXX^ԞػoT R,Lv/`\6+1ӎ,qR)d _r%0(_DjZ pyRdaDHq9Ӹ$~!j,f:KD@`afz6Y`t|x=~_=>iQbc8SQjLٕc}#)&.Pj:!kIf%@JMnKZp =&YNJzȂ2npF- `bV's^֑mAdt=ƀqP*A@E  8c;3R,$q*:a1ǩMW-~#8\+uT ZѻfL]xq/LJ?K'BgYI3WtI/L9$3*Oij)LjpmD"1dbx+4Q@fﻆ :gs?Vu̔Yg 0@}߃oDž`C7椒H7("xȕt&_ؠSv~k~;&=vj[i(d(cYhej{葒?Rb'R$z*x?ڮ,ArR$ ŧ4sTSY҈X# V%|$-)hpu_Fߎv6풬mn&Dho r @xSmv&;l؃f,(,K4%R:uk ac:?n_~Famק&@C7߄{:f[A`77Bԝ<[wnU|SbA޲fSM*0ZTR⺬IgIK@:P!{+wI?k"4 ?ਵh1IRsqղƩX~7y~=z^<7'3z#1G@e/ x!ï:=;)[>B~Y2< ɴ@~ vtR{,H"0(: j?C='aZO7w!mVt:0zz x8ȵ:Xtdڠʋָ d['Bm`ˈu-=A @2FvW|{fuMjK=xu|_˹1`)WK/gn6:J5c'Z:}|PJf(deBДA$$DLPZvSrQ).rE.Ĺ/wkBהLȘYHl =O2VN5>lm2&H\N=h!$̕ʮkZFdǀn cD"F2f? 6^V7I X5zY*!lsSbvsIZpਁ2W{9,ol~v185jA,t1C<H 'V0MX 2.)-3^j 3  ze H NJ99@$`!"nD"Hm675d5D,z 6}ZNRmE I鹚ѴMM{<\間]m>Fs3gP3B[lD;ׂ)wpqitr|$RaN$| _(́]=RBLA'"i]j.uWQ+Oi/W3v|s=iȐ)&4$jimG kNOP9FҖXgڄP[Q_\w,o:}~ ZUp@kP  @Z(蝝 \#tù\Lddz5HRp9XT5iqqEx-1=D*4o,N Wp'ڗLs(7:=D3uR.T 7UրD-]jDN ,n).jLN ( 'O@FhBk.e "Qnӿ8e~ޤ2é߃`Ac S*;6Yx}Phk: )/tyHLΞ!X 2l VGOM`|_vAL1{)=^H+tCxn|.*Q$PI?ιVB4Sˊr:EW3S*٨ǥ|1*lpl$>Φ4!l~s}"cZ"CԴf =ΡT؞Te=pY}iY,yc%L ̠/c=y~8OH#YCvCZ(^4/ 8dcl"# ϟ,& wT,\H< ,!PN w3enH$)$bls|wp]c["c]3mc+jMɦ/R86' .;Cv×*#e"C"(3Q'VH~kq}bc.5<' O4QIcEXIN^u3bbݹH_'JiZwe<r 9),qKe =I"^5e~nsɞ{2daw^FJHN5D)ewB{ !.[!CB(͊z_is/h2 ߃ZXuZz:9e=Bi8![ ۩J48S~X~}73KiP)g!b4kw(S477KGWxh H A 3*. {O]OLs$vqKժHFp. gD5,,zYA4v > Q|BR9 \Wߑ|ܩufxʙX!3~!@GЭ`qI(R:WռXg4k2爈눜) a_cP 'Y0(mnw IDATשE@Al'>tf#oښsZdy l{N]߅w-|oT{=&Oh 3aϽbqFALhPh5A夀I JC4<M9؉f)@Ln` zPiN`1& y|?*ܯ*r eK]68qbn! (35 "1>Hͧ ߯^SȶLcBAƃLcz1SڠFDԓcLi/<=k9c ,3&?C̸KMΜ\yLm<&u'BTQ{M  QDSS4;{=1-fj+---؋GMaCA`5쁝{U/υ!rykba&IJRCRվc+j뮣լvzoY[KRZ̰4Awtrْvo r VV]/^ ^ax]M2I v)? 2{%toPvSVw={׋Q 2-L{FD Z]Sʥ& }w <0v=Nd ԠBGMF򐸱qyfa8Rz@+ۋ;LdLC=0Z3NZz N35,^ 5Sw6XUaONkBr#1(]s!RM$%-RV]N?C5k 0= C&RLxe1!gu"NH& Bp# YUBHJLL|5MT3P6,- ۷ɹC$u ( ?īԅMț:ĀϨ$U0 ڞGֈ`pAz,H2BڠW%\.p\ 5FrN_;DH8Q$cn@:̵KΠBMR`T u u n(ĉ'B(&q$bޝ =5*M_a hnMm*/4##7~bO|~ ^o @HԄLx(% ׆e4OI˟H9'n,11!tM']ުYV!qz,p:'c 冓 HK!|q3N%PH ;>)%3]~pN $e{(# Fg1>R̆DRHz}F^{nTΜtm %KCZpd40 @~\mȓjG.h];c1&"QHIյNB<կ3eP$ }p5c'0`: KLl@*"4} n&Gts>Bs93%$85OIXHILiq#H1F#htϴ93wp96Ȱ1RYPl G1#ƕqd%_kV҄C\g e/Pی9JkHM=>Lt & ]$Id.oWq =5URgF9! 1(]Xo~d4Q$H  e6`\GC"2ahZ%X>RkCxA&(((%IIf3[ AmA3եHNPw N_0R J7 H% ; \m1`D b7`\crtS@ tx,cV<[0F'&0vJ]37Ϡ鹰R>2@$t愮AVVh@]WZxԆSnsT|"d,L")J "Hg3@#@ȏ-fNqfǸn8x\ΙqX@uckdϫ8.BKu8L%_"E }Ǎ4`"qm.1Ό7b=4 }b9n%- )]  ݕΊ#L% 7;R,/fR+Òb <30Waw2)hr'28mԍ`sѵL9&éh4 g ()ÊR\ǶfU'$c<1: TN] dIj۱L},̵!sxHhد6ʀod(@Hw74T V>ja\ ZL 88=ıы0þH ~˂y-4#I0u/1Ktw~t/֑Zwa;0^Ap)8+p8x v+m ,Xkn )W rF@~2bak9tFxY0FH L2RBaV;ʧϘ b%3=Nx5$CY)5eR1Rz;8mD/AX]Ty=bC _k&@BБ :#eBP|JK'~Y"tjbN1( J)TJzƀZf@,eT5 s qIQ,ظC^gNMQ΂IhSBEFS^wl4ΐg ҷ"Cbh'fP[z˄^xri!;P65eSc#2rvr>lPNq-J`da< kBXmz;ݟ̕PA@"_&xd?apLv`W'CeKYL:Xc%l4,S2DZ(P5cgQ؈ ;̻WJӒx&+H* υ&\xLo'wsD3JB7o'N0̠K.q8l}PPC/TfeIZa\Lu>0^R4S@ ]-)f)vD`Y.p,h"50VQlllΐCFNK2ㅳ2Mp)mOJ(- 692jV菁=^c? X\)1I4Ob0 [iaw]tP~-{]r ecHJ g3҃e0XL.4L3-: Dx))uR#k{b{X9;bVj:eMu G˗.2#an%;Z⻃=ۺS7kȤ*YryY f9֙z.v1{1zIr^l0N*.f !dcP`= 0ę1mgؤf>1+,0.D"W*::lk] ú8&c]b\0f ~;%+8mw,:l\6|_יn7;%FH4 zA~4w;Q`Kۀ1ex+{eѺN0H`5T4uOx % 8b o_U莞2v3{oȵ)'673mX)ϏNA"x}]F5똷=љHpQ~ؤ#,g0 ؗ"dѹ`a` \ !p!.1vH7&r|7duQzWay/]%S,kUZ\>s6BFV%=Nhilvq8rnAk#\bBD 3pCK>23 T<)!L0|$T'woaNV w u_+Ӏq2Ofu,f`^FR)NmlvwȄ]MZ׊ĸ] ɢ0% 9)^tlw)-xpj84iW=/3h>fYpYKhWFZo1N=r#.E;:>5^X(UazTw ~/)&ghJ ;+.+k`#\+nH9gp+y Q0~Cѹx=]4Qwn}䆚j{4 6Iq N&4sl[ߝ_BN0 gYz;NSNiدp:*mlcؤVㄊief(1"nq%@Oެ]}\ە`B`4 @P`VLsB.C4IJM߹Z+˅d?ŸN:{Ƶ1,daCD؉p FUc $sTؼQ'&ٲʫ0Xv&`!D@fø,PlEqNNP,S3X> |^Xr!\u& $ dXb?8Yt3Y|#.3,N?؍ FPJR݉'!,Ex앜j"t->ֱJ)sK䬧b? i}q &U7=j39_Np[wXms YbHO%;R (EIb6BfE>Nl70NvdH]Ͽ!pƐ^c\*KxqLWw{YAKqcي cKw*:gv9s-FcS>dhA2K.:+l<-[$q !f\q8]VlSv)kqL }gHc ӄrqls %E ZVgJͪƕ;Pae8S)NΩD60`{HPN^N<с',둅h0.i0_/Wiۉq:blR3|S3GV0Z0 N҄CƉ9AΠR2Rdf\Dq`(;Sh:F & V8iqVh/ @נ /[uJq|ѐ ʦpc<$N}2`n`z,W 3h4zg,韱ENrFxr4pwҩGYPӊU֚Y!s[=pi@p`lkTH;axmIτ;!1 m4ĭ86,j\@7⸛bM$Vf2K:SD ܠ.L*9x`pLRփ\zV?x.|#㒠Hs48ὃJւ-nc=Q2^hF0^H1z@޼̠9/ LipqH)D* :5I/QxU^@I%+M0+t[|ARXn+X`Q])-zd8f7ƽ[I2> 6eyh:TafҀ8c+~KYVJ1gCb&1!'.ː%J 0t1_@v)XD@<: rg^c[rLQOxb?tĬWΠ9/dӑ=XßZrDtѵܵ9[xr%ЍZ0NI;R$SOoagw8!Nf|yyX&HO( #6$] 03xs6WBCd['e pC T%dHB{{^=`\c©SZ ]-5`FTHӦrfqi`>@-RSk#VT9<L"oEhuHr`+ց`!|*3J)"HAו6vN鼒5sٖY3 i3XI @/ ~X7dGxs+n(qwx/B3*`<]` 7(@ 2AZjmx#-" |zA|fxv^jTX=нxvX';"'k)B\q'n٨s0`kkڨByXƶx<,49] ږN`e/ <% =ڽzvv @4H¸?ފ }8뜲R*2JfR^9~Y|Ud^%2i9 Z- IDAT!2ė(Y@ Yv9|ظ{r۳.9/3h˭*"y4hn@&֑a̶kd/ 㤔=Sr /eyye"P_ IЌI1`˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼ f2/yy:=Z:/2/A1?U<uS`7g/☗>z1JG=Rq՜4婟a\, ҥ@fsr1e{y.rol BZ`2sa =U7h1!xi6E=XyCHS=&~`H}9<{[Q"fLc1VɅ{}k^QHVX{!ǀaj&{O.MmjK %OM+ny8gМSE#_tsen RSBb¾^$u SǠ&Yuؼ̠9/Y_= aH SC)"ggW޹$Qd3As^wRd!w kZݱZxR LSCșHaf3hD{JD& HBҶr@^C85ǘ+kyԕDMe9e͗ؗ2Sq ea64` ȗ$ub%&T2i]fAs> [ K)Yj?16r&lyJ X52*k%i͗Rݠf@]'UM KePb5c0rJ8dyA>9P 1R)eFNfk@*mJ%2!~=]N-j牟[9g|2N%Fx[ﻔ~cBpRfjoe F4vU؊}Vj; /|'%6[n3n }bmS{kCk)K ,w-j "694j^f|&T(5v.ABWd !7P.gn]NS.4%3h[2fS&eg&,A ?"ͩRK*r~-8\LjC] 5C@R,KۙɁp.J(Qtͧzbl),%S􎗒2߯fb%5eHpTrcͱt@g|ǭ&4%rj5S`1}Hɡa(wOu<\(gEsXj*U0J휠%̃n)0#ɔ}̰)1V´e4R`I}VEdz8ZI9"Jsq36ƕLK r&J3|jZMx,4[_a[֩06Nv(׺mC3 =xpt&? K3tm 5h9R} ()8 @֫sXy^C+]!=GɼUo)]ʺds\ 5EXjPE%&_1Rdޗ7ԾB1hµ1380TRJx[R&l[2u a$4=R^鮦[7cXR)LfcOʽgT{iΠ=((ÞrzgR@VRuJP`16c"'_oYL5򉦰O6BJ0;L&g*99Tכ:%IT ktTfMr(tkt)El&)*{JR{ h"uҹRƒsf9B?aF9h^Rhg Kp@zEID:2[l8Zl_cƱyjr'YiBnj +* /gRsGL/zk-iBH augMbqdOY4K t5}0b7W_JrUI5%/]N3`N.u\|(C]N(sc)RPJnCA`=g&k=}Ɂ21 9qJM& A% ɧmJuFi)]*Ʌ&ra89=|)3^`_DfqɕiڢMR0Bk]sr=Ӕ sW4PHYrEH뿖,*K Pk&r|ǴE%P-Ϡ})an |TL 7fs`j2 QH'uNxݚ); *p{JdbD:''K.mp;Rl;UW)IT1w[K;erZzf @bbvdᚺ\-i9`-՗¾qnSq:B}ayRt-r9R&o!v6*%ݐyod*o3|Nq.\+O \@gf2+UM @#5 4YD)ϩ@xg)NJt"ֶqNe%ݖ'/ۤ0Kֳ2P!st 9_NM\̥ 4`vƴضf2w=u`Xap ܯA ;ta|D;6y;p|$i)0fT\;a3W].ScT/J|5kk9VX[CIp(wm],S/^s.Kp=2U-"zٿ &̯; sO8z:f^GD=>f2{箙yCׁ~p ;ytIBE4S@ZLx>ϼ6n @-!rǘ] RcȄ%6YUr4eұTUi OYN KL+:b"Bsi9OfmբkK'f0q.LG\}}@d2`d>]׳w +L#_#1.״oR)=Xkg<9!xJdD׺أʔM*S.'m!3~ ~{nP -4&Ħ{25at0ک`(54PH[f.luAXc^Y3B#j_}wzwm\3\=[Df-x1@ a"j { A}߯wC(68ֵP)Pϥ84ӄK-%Msz]= _ΤH2Dh4W^cDGm]?lB OrA}soeЯv;{s3t آ|"#leΠ 5m[ST)7 sԮ}iyWg\}__.p `J| 2LdvL{Y*@]w̾"5 Q2E5hW `olgtRȜ eStT;":iKl28gXg;yݳfq6!n}Igp $Ks*=*>V0%b"SLaurfvPWc2*#Jװ@ Ku\ $0R]^iJý]ZjʄRq[r{.!2gzkt1\vIfb)AsmKM>Y-`Y| pb?t(˕@G΋f̫USsO `BWd@񶞔Sg MTk s+@1k_>[˳Q0 v ;nss UH]3z,`.~~>)}@J:YMO~wWLeK]D9*1~Y2[4vB ,L|%2T "ejjDt:ۻoy?ўS0/:{o;n} wUeUjp4.>d1ԏ o"=6Ho“4k< 7f S!qʽxt64oo鍵۟;Uh5cy- IsZ{GO`~`ڃŧC P%@O1(@,f)=bD d S EX߹&X) KI)-4Z,UL){zBvz@fH},dQ SkKg+di`Z{~1,@aÀ~s>CFo?kocovKE| Pc3]~l(^WƘJ c,3H 1p,1N i`-eTD /m갹U׹dWB霥y 5K%3hn;`*BR]fd/Xh"jfW:{6cЀ~wɡx*@i %H~tPeƒ;SAR]*/~^_jejW|nS/^ĝJƎ9P4)7raϢ9%NZ CHFKM%rg}KV{>k4?K~0/ }V`9!˦iN225`=BR8>f HSl4U!<.vfyoe@4-ӊKMSC͚T{|JF>fB 8m:Nz~tq~?2#Kn>aX `8c,cL3gdR>^ Sx |\\`m Fof3d?{t+e\y c)Ye(U 10R<<5d>"`˞Dz)9M(DޙWe[̕+iG`sK)Zͧ:WYϧ&jtMD-Lfjw2+nyvX{vϚ8'0̊הmO@mۛt"HSl97ZOВlrfs4sg!8zO_=:!4W^2HiU䔱 /=Ӽ\Y*d'K̚r #Q0+ٽ/";`xGBc%GQ&YbCRcb1bw 45XZ 3duRv|JHge 1ޜv"~u\fF-hm|HZ3hN(k2!|{JRTGB1dͯz6Hd~e0=; v]~VL<1f3eOI.X9v)A2P]떩>wj@ /^/4s!tN svwY][9 `W aZLĄBb*5eN/ hfv*2Y3URj1Дi%Yk_[?ٞ3|g wحby.s%Dt'˒ߒaƘcLѕ;1S>/+íe96JeȮ4;YOr_˿qRl0\ma\3q6HO5\oьy.2%{}ټa) 5cbLcW߳8߳Y&€2fx0`ܯm1v)CqSإX=f`4SEaRV*#rhS+u~c1O1̰MW-#jZy\6e.?C;[~9{dHG-5Èk [>€fkP ˕J|ȜDcJ;"3cФYS2Hr˒ZMfy-vKGt\|mr ֫Jɦi 8+%mjMnuP MK@{/1,=>ݸ˘szL 0u'G.u:Sxy78jq<ŲcFzeVdz.{6<>K#LBr9;9$^&5.?evrRck ,e0!fmQzHʞr-7Wo|?0A*ag(V6]|'Y )[%XJ),'J˔F)/Q;sX0mmO8g c_Y`Q1~ ۢh' x[ |GjJS]CH9֙?9olߠ?~[׎H7d۹̓ʰ^  #S[n!8Mr ;~C!g0x?@p ]䃤Xfi 2:[xdbrB1-T1SǾ|mt7Hۉ1Kxi/|JDOqYߡ_X S'{[RP<葺RS 2}z Σauޔ@s"ᣐ(0P55#ox>h{PS"':zj賞;,<`FIsaU%Y>b7԰šስa6'Y2$hj6h*1[1 ́flPcuM{ս?A%MnpC~s`pOjKڥL̽k$uɬ~3xq@IɦAR!+p"᰿Z/0E $(1$0{Y眬nP7{feYg^̦i>Ǔ`uDa* hP1`h!c\w9J١')$q$ P mSA?4UxĀw@ +p"l/U~J5`Nn@pDlcK׫ 7 (fG?dNfamau G.?2i*2o\ . 9J퓻^lLɊ>;-V`Q ikr K&j|*9@۲و뮍%ͣ~f jz@ +n 0`(gD CYg2 {wA{9S,;)Ai6wT/Of\9xm֛yx]>DMc*1e),p!W ij5DRbƑ@- 3ݣG$"ɹT24jK"6Ngi'`vm* qϻz~uzXV8g2-2h9XCנYZKKD)KRS҉᫫ }Z 4 齎ŢO߽Eqt)R"YP=gW ^[ys1Ԉ( Ž9EJTp1l(V{xm*EDUrxۨA%~_:.}'Ӵ' զ Ěfc+ҹ?J`PUn GM s  !cg1;~S̸Hs.0R7|/8OEjdTh.#^f#OSNre&4lhКmcQV` =nϑ##NED{YW2( 0K9N)=_X^9x$JRxuȏYIα|qi#J8 :tJOэfnč/#6-~=T1aJ#x|]zA!_3)"ImiGP& qA3rgu0$5.>p 쁰P9˾di%,˓ K^ED#lqƶ5M:ʳar֧Ut~C.d󜜍 N 6- K,a𜄼^\D #Jao̐oЬ<:H`);|b`_㲜h~n3e,@tc+|e6ҶER|cŌSwB'Dxs<uaAP$صCp +qn*$';EDXǩ%YVa *9|+&<6Jd5C23 N^^q)[?HLm=_=g:s%빜yl\YAܓˣ |nm |~E!XJ8̾dI==yXȭ49␊U nE}d_d@9]+n] 1x"L kbA[ #b-ރ mQG+ߩRsZR>ϠmL S4ky_G|^XkZrfQB9 1z?!ڭ̩k)A'~-{D5N`Q(+hOLut +*zo,xײ6U7K: E)ؚgF-E+΁Z|ʿQ˚#9#44mѦW(w-iT{.Sf_V$˾VՋCm4:4H$ER^~?,EK3+wD:CFL(;D =qD3^6֟*<.ó9{@jCg^?5~ ߐk,Õ2sts?SND%OYs`jNx*rUu ٲ?!o.Nթ(dyHX”4 c`l<^_y\<17jItR 1y皜YP\mqqTZbb=ś=q78O ;+D=p2a#Pj9ADN<# Ո̨#0uyF.?H3DR"=|9X|eWC`]]ye\WRzL_8-ʊBx|uj`Q1C^"2S)qoeq;+,\ʯ1P"\-R DCAe{TuEl2j?Nlp8\"hu#WV\^~S5%3 dv 4r!t?"Ur LKce}K_j^G4fs.L*Wm\Gq{VGW/6ɤBaR=4nweR 8VdT"zr\ >R#X$vH"rsyf 4W-~ lMm =wBC! @\% T;rSi\E:m8-npuyt߃2 }v+12t-ʬ [y&SRO,>ODL/Vo#G[rs.)×gviIvR,ˊi@+_wuy1F$uQfجO1#9{<?AT#Ȕ܅v MN⽫8FU01#!Y7&|S4ę-V{)ugy=8&`tnyv_!I#qL3ZTnX=Dq)t,0!g l3KiujwIZ5 dX!$h\?SwvqG3D% c)S*L͍rn>tnp εzS>Q H r4A8.lEww7{OЬ.Jǵ^s(٢+׼kY Kf3̅8 M/<[7F}-d)⠠Mi (@[x<(cvtvo!͎5^޴5M~20~}-}diOx&F=b^(Ja4D k|4@.6K ?Uu-^{Yʛ>9ǝBn d |x*@jl,g_=M"ne"rX辚SHP~AwA%APʓZ%cggEԑ[%,UiBxMy GX)j,1ރڣdjп)1ֽ$w$ ՀNM b7 S7S>"7isά∣8Ҕ`?NިqZ. ڗǫInfM[ u ?' P,]"9n&=y HE6~LnM7xIڹqD]/ӢU@1R lSæFhe}xB&ڳRl>#$De[ <+@3)8 @ˏ\BDR]w{W&یQܬ03&òeRԬ IDAT2B^QZΌO7O)W|vC? yri K s(eP9w3~ >ږe3ڔ[yoxZzߟ2- H6?Gx30/) i{4SoNCV`Oӎ!`j!tMԳUnHlE$ШԼـWuЌmzSfW6NҒrr$|8ڔS? <6f(d?LޕQ:(Zʝ%稿%(9KzoH >/rQh;8&XƠhE[ooe}pzZeRb1%R{Vֻ8]R<P6<'A+UX"΄xWZ uam0Š2C3#<㲢^=$b1ݵ*|i#e_@:)Nx!yEQULL/WPTLxQjr!RsJ^wK{8njѦ]$Kf7ra}& *R9[Q"&x'qYmS`9N4'IgpqW|Q;q[a7mEv4/7h{C&R.s)\R"g} Oo9C C'/oǷq>׸ T;R=!' *Xh8U5̏-ͥE~DQs;bMYNZcpVIR8ϟ}?TW=4p Lk8nw|H`ITf-PznK %RЫ-o>J?p4StI)>Ҍ~22+ .MLrW.n]|dMasw '*<K x.:KҺAbH2M];8'HrN\ǮG $]?A(6'=KHS^p-oboveb.@r-ffj(qlp(S?w?%.8 ~ެZŜ O @R53^4(~jkwk0՞eK0qDx;.#qӮQD눰pEZ෰o_wm2%,]xNgf.|Ì︀wB37"-`*<8ϸb`I"W}1l!F!HYuQޗ!eB,qH8 Z*mv(ᥗ5bM0v50Y)q,\#KFKżOChK^j<.7a[NI+>a3r(0޻W9Tu,Oaq^4U`oya6w^r`ל7syhN^7f^L'|f\Zp DXjI*IKgrOD%(eBiD$+j́bQ2'06uo Yzg Fgp>x(O+1~ =,p0vSs>&r6"j'Z෰? _F GN9lC덟>͑㊲(:ݢMŔYAZq_q.)2H n3IzHS˭ NRC(k.|mWz_ҢPcжL]*n@=ҔJy]ףT97 !vx:bohPv6P< 60w n=/Ƴ|n8!`:S]iqzI~.,uOJo|DUvbdʰHzql Tn7)AaFpn}LN##pFѨR}F38+kD3bkNoH%"v! uG_fkxB$MmdcsX\f,eRbČbpXfzASSqvr*CqoTPz,%6c8H5gor/ rZKg)YwΉHK -PC_F^<=4Rfënr\G}j͈7AX! [F9]4sYr3srƿ%*{nqUAoAcZNFS~wk\Qm2uMvQfsg9Js T1`23mvGB)hpDpIOF"mD x}Qī="1Axj#cx"~7'g)^4vyM0^/P-VپV`Eױl*.Swf\s/8#z BgN^sF0Ԕ$pFq{*EFji t r3 (a}Mg>s.Ů1pl/0%YCR{JQ07=`yTw@Zꭥm36Oy`l@Qk?%~5^1G)GĆ5ַH0+p+q#mg%Or 稂3 ڭTR˳P+8X\ϬDz$#힄ʠsiz6=܅@I qvR>2m1(WK?϶*9jCPs31RϵR~/TS%x7Rs Z0?KmS)& ʸX%Nc^Qs NhnWvܚLxjC,h_EgUKƒQ%j1WZ2')oo(n|N,G/3 6YU܋L7_7vrF`+PsY'Rh╒@ϩXH)U}|wpmZf^>Ez͹M733$JHj4{l [|iP`{]!()KCRhC Kz #U[lۨ<.ԢT鹼˦tdgg0 >2鶖=Z)<%#h82so+DrJp_Y]ut&Uڨ+Mer#BdiZQ_f k%Zc ?;Eph-C&`4Y#h5hQ(8wK0 W ?B0wH]*[a3* XyHW$D N=Q{-UwT٠-9A/G4"SeJHΊ쟛#=`q |\==[,̆/Z.3 ' '*w0GOqL9ҭ`2K~a\x%R(ѰoR/DVрuXY}U:xTTi]4 Ff㜦A*xUZha|q;#८^3@ xrn~Z st4\ vSޚ.`J~DCW-~xx3 &l&{-KSs1[+5bfPxaT= J t)7 KǺQ bj.>R!aJgɁ>nf(JĦѥu<nh#fQxQ K8us* (qgju/qʍ%6mm&X|3\s¶FC@̸"RSDO8m;$#Tɑ#w2jq~G6EZhwiOܛʢV JR" Fs~_]jgc=;(]SB]>'\UU6Ȱw`JPpd\Rܞz@7JHkc+|ڰ&jE8B꣧ a3kejsiOyƾٵ2%x"E(DK +dT_y4‰h :ԥ9`Y q_Zd Gq;4,f cfc܂<[yjZ%8 TkGWzM.򴺅@cI9Ғ+Jy$,ګ<6}@/Qu3ڬ(s42lx*V:9O6:=wB~Əвs~Qd%^NU5c9ph.l7Sw-3*MSKl_qa1'Gb3AD<$Q%Sn++!4ht'x֗:6XH[Oq`H>.~9t[+RTYQYPVpG%(HssBΰ H 54-(ބ9XnPj|$mg .7eQhEZ/4i*Uw1 oxؘE*о>M}Ɖ@K]nG\-"EVjir{!J鈏{އ:#l`pu0cQxD6 /38堗6t33y\Jx3VcHp.0Z._@K-ܝЗDflX6-%0Ό'BDj*4JO[;C5$'}Ӌ0ufzfcp];UA> f[E`&ԥ@l{{R&hBF݌Z,#8b/DJ3|G!cSjeINJ42 טܪr5r*R |P$ce65'fdWr GTf|Ir_h.΢lە"աQPz].8wϣbf'p'4&6[@Y sR rXy"ʔU $3]EAJ9O<|P{?GrrD0bSxP=GȻS| h^gbs m  )q\-i28pMKuH%Giz{3ӢuO8q$SfR)(Qg e?R]2'!Tʉj9q8v&YT&b H5Nی4 U"U4ILt3y(TSV(a`<0&ضt®1TX1uV`^ Pbq?Jqʌs8~Ա CRxS{X8*d0HۡxH ?r$h+HEߏ;J6t*z鍨__65"uW ^TgDK?։ .wFk -Llnz` "F/_:rz%YQN# ugq6=TJͮvE 8SfViʅ{C|H~M;)Byϭn4.gf|f熝DS)޳`AG9>ql{vi1|C%ǵcqLiZ;EiȤ0oM;xO.K@ XXf|6RjR8>n 0ʙ zIۨ vA6gSiq@ZdA̸ڥLcPɴ8U\mіxxԽc;ŨtPD$DF'Dd DZ rZ}fpD3?1-"d^ "h!qgtuܤvܒ4#wH>2$ZT˃2Dsܕc4œeL~ #$T$5 cC. @BY5+]è(`$4(YnJl"g@ Fi 9[zVRqD'WYаKZ,? ,(<lh5JyP#jnFq+ָB;Flt@KӁHhn;DEb!4b3 siA+1H'@;tPŧKe[4Cב6\3:oªQ:#eR'5W,Ak \ 0Pdd35 aw$jO眓;t^芪2 ]Q{ fd8cqk:<]щ @6PٜN];m䶣g$[%KGw(`]p커¥d*z,,9CD)4ǪDK!B2eaz"_t) ӉVeaRzC&,VV?i-J+2*r]Ӹэ|nx ťFb_u-oΆ`]9is qJ! IDATE3fxB4ʙu< %AdRiZŴ(@s)P2'Ddʼn<|v`B%J&/ yf4, sRE͓Q12LՋFZyLMm:#zn0}]ldѣ,R'RS]9/H mW)"ꆿ:c aXk",̋(0uGVR8H{Z֖Vij4.5Zj_] ΈfBk-ha&c-BJL6F&9Qu)(-; MqGUз` Zxy1MHO@E}EfE%ݜ~5FrX-\1`_Lm uaK^T*Ad?&.ȀSC'.G4aNQ ;|AUט7.֣e]Z$:1Չp TӐfk*֡QČ]Epv1.z@5x6sdܹձ &̣Z;Vd%Vgph;Yqm:5f3Pz='†hk58a+%sAxj)QP^&Dq6-9k2YBähe"yȪX%/SuFſBݨ^& :Ή=aRZ&Xqz:ڞa ,FW~X`'lMmKq5rщ"s3 JIxǓiL9!9L.k! ;)Rd1ģr#{R )go+NPY^GY;&@̺Q dL`,/Ta;MJE Gj)ŗmKm΂R؞D]><<m^-\9gΟQ]Gi?hZ Chd n02(MϹE֩6 =w ;#u )HtaTӜ 'CEUu|ca8Nҋ%Bijiy ac%Q|SGw>OYzs|`)>c,Q/LbK) -`d r.S$9IZ%S9PSsKN^3#'[%G{.5)9V ki;CC[cA7))U&2($+NZ~gZ[V?(Jŵ{<0c^/hk$N 0c6"U TSk5h05(2)8a:N6˓,ܬE. %.ow?YE36C椶N!&ʐjKVN)wG*~ߑ2jd`Ì/oڒ.qN߳6_sL|ٴRg56#[FrqA4c| ~jسέT&dj %SMoخuf)clcfEcei ]C2{SA2fx^$BVĊ9%vr@7pI#VX$#`3Fѥ)(éQ0hu`c\&&#0"R!8BSu+_+8iXbe [h9\rAI9AΆ"wU:hlͦ!P.(嘰twp"Iڜsys5*;% Fgh5-N14X0Rs+Q +9163G4|#Y#7J(T9Rhc8ѴU9Y ؋3ZJwr_0p0׫^%└!!& Iqj4svնZ>r.uc^{C{js hW<0 v@Ōb3..<3^aÌ&S>%/ [|*3JEUHŒ k Zk";~b;%^.0F t `#/? pRZ@1*{KQg S8MYEem&Ь|U( -PUE"AkhvQBhts^">p531~ v\P^-фZǮ-q@#Oi\׹xiIf18 7Q2&V[`,` _jSR9/ jԬ7|6V8 3fp[Nә9r.,1H>wGyz/-4-Eৢ9}%ipB`'B ʪ)Rӻ=gbL]X.g*R͏] =F y(ݧԴ llWv=*C 8IkFUשvrE<(FjplNYs"Pv$]%\pgxX4 j9 *d Z/LV懳e} 3u\J\ {C3^+ǭxmØ9 hb r >XЉݬx̾6+*?85磗(SQx,%XMJDX ;7 o&t50IKYtG6nL rjZj8*K]t)Y#sܹ}4&pxn=d|)p0ݰK a|R"?$hcIɑ5ݲfJ$[e*Tw_DO!'G-8W֍I3 Dڂ 8ad1,752<:bk)c6'2"@+Z+=(4G!][.?8sk.ÎĈt_{> sx:s& z'8nу=2 k5eԧ8sNp$n;jɎ*\l XjcK܏–xIR22%JϮrn<HF}zh*eW!pRr4%: ; #J X(T=y [bPnD&S%K*z_m([/h>=`Z)w[8Rxo29ĻZz$uã(JunlˏDJ -F-RL$Oޚܥvs gC_v ,'R<ħO&2\iqpZj␏ j3Q<9xnsHn\r[Y7 p.]'vP&kFZ,v)$kLcY*{ pD-[Qm:i!jbM~횉c5 R4ģ1@pΈ5J"RpʕK\9}7:Abȷe"V !UkC^K m_h Fq5 }Fi(TOܞ)`.Gڎ.:b^\<G+-D;%;QS~my<*W g[ #$R}$R Yq[BmX@x ul2̬wC!YdʹKЪ[zJPp/ZQ(ޱF_ĆK s}NԢW5(B tio9L#6fgLQi96K#p*'"[=rxiK!`%1DE6L(7=GQ9EvT~ĭL kO| K%XuB?iPV>dnj `O5C(m ,%a^KpxTg/ Š+p`7]WsB=9.n@R-j<懛T4GadN7BMljDsh.0v9D՜*btneQ˞昐< M0g&5Ίb~ikǵtR B6||5.'8͇/FYi %UDgqfJ؉硗3 dT#GHAcBJ9^C/\ޛ i s-YA%>Uzd[`4b8G <7ߜD!eQZsqT<.[lJf۝9|=n.#ө7~-1{#gy2+/,Rwme 2&s=0oJW B) M=R&M &3-ݍxIĒ2$!t`o!E&*^+*5(-_5RB3wI&̀b *TMY)/+3"qΗqs{cw*Lx>#fHbJ5~L#e/L6xzț;a}qm*1px6) Ê4zΊ1EnyM x OtQZp\JDޱ-MwuٵR Өp/]N2n/ROtCllB䘁Q-rDitngv*ZsF2f# @8: J3أXGauvGf[jѹM#0sY˩=.|䎨gQ=GτOkg,\tr^C<ئ3WU+hBՙO9Q*.=`?mgȃm {q}Oy zMI ibL0S|gCwt|I,=]Qxx7K2O7a$}wGǂR}sb(?ϓ3`8"| hްԢ9#S`:gǜy.z`7WS/j/Rơ"b| >'ʨSn8ܨ3J6p9ޒ13 c i!kcH g\- Mj5(&EɕdN] wңnRATw/C)fF4hf~-cl8?s_4#p0S(MWK6v}ck @SZl_V~pܽYp'~eN5Be*h3DžR'4i,jnHH( r"9IY!8f߬C_F%uVqXu Dzϡmo5~8%/疳 Ohc;LFKNE󭿿ϣ²/5f7F 6x`D9wܻxy}#ӆ X!5:ZF 0'.m+ʄxiq!; ΞF9}dp8aQ+Q:DfsߩJC|$ℴݼ-+ԆA@5kÜ_es4+.M[K9HvtsN빟){Lҳׂ9M Ⱥs+Djnps fN`A-ָ627ҝDO%e} R a:-Vn2*RJqc:CzQ̷0{KBmJN`win?粻&ǔBti*Oꕞ3lמ鹅sZ;S V ~slhDDx,֏u)E>H sc2DA?pxE tQ'3%Ql#TҸH*ijߖDv?fҔssJx-֬sM@o`ύAj3Y{T>e W1 zB]DlK ({- [<.RɃH7úUG \,Fr# ,K!EE@4ܪLMx$Rsp"D]H#vjxZƅ.~^E?|V`;mW-[~3çi)z.5O _cݽMJbvP1iy_FsJ?JA\a Zu7AxXtczGD=M}V["|a?.*ks~vT_Bp5:S%.YZ3rc65+:{fG* DRAmOY8;jwi画=[)Ho51?JɓD},>hT_^ bz2cY|[ːDckS"Pu '6 jDz_o]~c׹E7Hզ* 4Mϼ<6G11{8̨-H\+<]w1xxNC u$\=髪} $"8Ie[˲?4]~&>`[>Lq2Sj"!;U6E.ݸ IDATo*b hŎؘXFsI!d|>JDX!'(84!"k꣘ )JqxzY&-P3T5rR^~m+ui:l oDcK)(R'nK2ФR~Ӣkqa<:O| Ԧ|q|~c!E!DظȊpb./G6iT1{o{BO80)ve^M)ۣLtQ˒S媀'Pk2;& Š [*}}Wѷ/s]`.kDA:n6B" xpC73vΡ*swDN 8[TLȐ6\-np'39ܼ_΅g1qn\@=rWb 2L$8?'wђ5-.>EXc(/jD&D´P8SH4'Ҥ4Kޢi=W>)!z->"n/T-~snPnqFOMm65]%sp8rn:oMep>DcAJ/>NuqJk UZbor(ADL4 W,S "w>7rfZ$ehIu+Yh #Ld )1-ΑD %n؅8h5ڌSm [yxxjR öt7xv\.ws K-ei*0x O{88I4 Z>j6FXLP,Lp1cRLJ%FRP@Iu*[PxO L)^=`(1:YKj 9pdhRMa;oȈ8KAS]xDOn{/}8RCt: `De].z{4] K߻9-qLxEm7x=@CjWx a[ia߁ys.:"LYؾ Wx7㡏@Q2_]A3P8F'2ޠV#s{8e B{&I:̪~l0(4&D "i2@0@lf4̊7ofKU.\[ynQ^wfm]Uqqw#?eu[m6CBmC!)T.S3eKIitO8ػ G*XR-3 4ma˚IQodwQ\$L-r`|k<KN ݏe U`?z8RRgwü!s2̵hkS٠%(+.a">s`SSκ#z}]?y.!$8`MM 9!ιeW_q1q2.'!oq"xW|Usܹ'c|+?pײ9&E间D\M~2x&@26pኸVѬN2\y\g<XBK k7gp3J`)NfwJ(B¹/}}b+y򾴫+Кe? HeѭVZ'TkU|M]XiꯐDw xZU[{ 2w>`=1ϑj ÿt<*@3:3ӛq=~_Y2:^б39.O:OBhׂr46<7-D(Y..f% ج2IPv %ֆBymͻnqҊDŽ'I 2P|MʐB '`|p%qAtby|`ew1kc5i5ZUc+m;>v w./C415_Sٌ*a!1GN឴LMHMxM.sbSڕ&RnQ,פc;ZT (+ ?׀6X'5+v`{fcBs&4ƞx ãQM2 9L3<~sʜ~]へ k<1~',5Q˵*:lH`1d ̑h7Cu\ئ-Nlf8S4'pJ)ddPf#?[zmەa fU|-;Z_ JlS4COG//Plפs>Zāҹː02; T A%\?d=$ide6/(o?sk\*y%WC1V_d28|u0=ForّL0T9b.|%{_ЌUkqDj$AYӼ)kzmVwĹf.ikT gtX-b p/bJqXHyR/chX a/kIFy>-F:ڻ&}wZ.ﻄѴ叇=Jb{5U^ ;<[0с(͑@T1-xqYm fG~sh6!4W̱EXQQ$VB o~S( =qSekitlL,sN=AIrxr*7oYjr f‘vgJ%Í\|v][4'tApNx~mdo~qcB,|<sczS D]6@1r}zgh6]1TkwiheZʏ4 ж' V˘0ynp ~Q{8(^@1-֦sJfR:4DحtgݒGO$SD(c ,@ǃ-!#F wҬ#d>WP`E48 c&a y ]:mZʯIR(vBٸ&z⇈fq2s$b?ލg9fsp"x,|:&/T jj(zH']4njxϩ1Gcg ^} 4K=~5a{x\(4gIrog5 kW2/МA.}205M-_#pÕ\=y Z9M:vz6umr('üz|;)Rvr)̓bix߀/b{bH!CD1_w&+ p .XTȑ~ ~UC88z%$;KG'ms~xXmObc/0]^"^y7K'x /7p̶vP W NW!-4WBεذɴ`Z?y_*I !pDWUo;|4PO2p=Wb>( du}w#g™ D  =mqK73$F>ݡ͞"J!CAcZ;UY7tʖyp9҆5z iZ~6S"gM ~` m.5EcxlTei_Vy(jkөnqt#l __Iz%jRwtR|+hk*9ؗ@d0:Wգϩ♎ax(-*ٽLi;7~L,#'sOs!ƪ`oRBXk%Hu.dM1Q3Ű͆@-56 W:6kiWWg# 4U\m-Am+]=xkf>6!+kpu4+8782Q5~* 2w{X6hwdߐ"xIeGEi}T?%Xgs? ;-|tn) &u̫QHGRۓ v@ȚF B ܨ}nߒ̛Ŧ!ws-+u؞j̒O_PKʚ:},J.GD+`#1%dO J!z 0Uj/?=[=N\YHvEk:TyAkK|ܕ/xTM?9tipǺ 2KwUp ҵr%:瀼]Os^yJlVnv/>‚Ypu8BR>b:|ս|8W} ]"TpRF }m @sRKǺ'rLTqw9/(\ 68v/]nh)Ō@~U#1Dn"!;e~ķ;{#cnam&9׍sCH.8_̦j'_g qՄa>[d 1Sg_TOq~fmM+n/~0ިAn5lTcCG#jS{4f =!~AמD@rLҞh>JKNk4 KۯEvs"lS=?wҎn~ )|b3X8FgUsf}}8BpEKcjj3{&;94]H)}QĴ1BgԵf'N?;q1FLXX*b/uYǾ ݭ0G:\b' ɟ sur4wO9п1vzsf RF9\ʚǜ%򘋰L5dcJBٰ@nVkkVcIjv3J#s\>Ѫqh[DJe=:ZKy`BtJZDlmY2ĉ^=>=9!K{S3_~1*羻x\78w.!6؛RdGk&Z䕏Ti9GA(}x"V\mS3[=F`|P!|~5DkR `kt~{?|?S=ze'=2VkoVs߃IрZCsLWF;ʐs|(r>2O0͜Y*JUpI ,= FC~E7phBwwhw lSg2NWj@<;?::#?b =&,ST7g,2qFgHlrtv;Aŭzc~.*s 9RyѽVwXZġ-۳fFrRhG`7 OaxaTL(VPgzky)6&܏0- 3`bjɡ:w;ߊBqo68caQJN䃉]DűA2>w )U9c.F|K@Uz ȌވdPK(㙎P|{׾ßB{jj(k˹ѱ1׎G=h0`g̎wɘ ŽKty߷VAs·p17Tń VUJvp76w+z]C5`Zyd~Oꝯ5E5A] yUI5_Nf'ιH>)M-."rWGǃvF!, ރ]<sXAT8wHhcc?pnz&>åQbڂe?َ>J:;{ {;VfFӈ@ܣw ~ Um)sΛ͌SɎ dS$o OH;l`}ܞN9r6E/Gs=?z|O1Tbj3SeuTĄ4jHy L;9<Г&,uIɮC`5ǺR>uyA3HTSZ -8+.IjKwI.@AJ')t/% F ~=lH6xlZ1Z9R1Of z4 sw?3&kKω(VNOҩsB%pa%L%,st0=vOMh6 If m~A L{;8pcd>5$Ĕ%Jj^zUX'KDXF>syMKDΚt1^idc.Lav[AY1.w:I甉9F+?2sVR|fFJ~J&6,k-G^UwT}5&H8>b:#vp muqKؑuDd`H]_KDA( SmJ"f6eEa˚ogQoX6):v7ŹkmDsձyfv=,:5ai-[eܖ(fVmװѹf(S9^4AR }fW+DY!!-1Sn Gǚ-V Sձ)$hB`.$ (B[%vl0O+tu1H a+]h܌ Z` c" {LˌFJ/#*_19a0hj"G$h!ͱYITbV5iC`)̮asʪJ!;3zxdz-du}c]̵3;byFۼxCล&,׈lˠ#HዼYbM=ԐptEA1T"xZkpDt4+H>v:I ktR8\HrҪV&Hx9 kgsNYgJ{oct.5䍘No8S#-7t==1Ӳ"+1 ){nMdpPJ2\sRqܧ~eBoGI#]:\Kg ֪c~ /"kiޙi ҬNa,醵LrɥKLYӽk{ p+Esc)7=rw:Cầyj>Bm7orxBĝ$U[skW\֟qnK ̲0;<mT tSV ԏ:w^Q<[ d=ztVv݇y ւ`kɦXb)l\',_ Ь=:~#nL& z2B&Tޫ5HdmM|HJB$lLFܶPЈsn8!QJZ-?r²extvvT4i Y]˓g 8JZ_m>ZɁm\(0>fLB1{u56 t .Oquc"6扖ܧcڅ&J":*ˈ-s: CPx*ji{-tC̒G 8M1W<=k~8D\{x:ЬO#w{G5s1R( cةqMO:><=S{:?FWX [sC`3}nn0 Hh>7(W2Wttsh4MA=ƮnwA9 .W[Kx/,s2ڵg@V 79}r2/UN@?[d)=SxXcw2{dC`$\\NڿL&ɃJs7RyJ%_+Lϭц[05Ì:o!΋4P8ZCV9;dg.$f6K`ZX)Vo[k|,SLFx( tN>p9čtN0%WJN<#ù2;} fze=eŌV3A@Lx \c4:d&s S#c;ŒA($ɐ[Sm?Ud-'CJq z*QzYF;1Qcu6ey"*2jk?Ա!p˾ؐHa#eAg'c27;QH [|6E]gy&2wfR*aoLN8 :iZ W $LOkG~"`zgw[ NҝӝE,tS KeczM<ю+Iҵ݇Ii1'ťk4`eA7~sgOԿ8=~KwDO;9v{HIũɠ#qzV)\L("{˩\S:w ? :no]sND:wz=·_oݥI*+m3i)1W+"4"[ pǀ@}ťO25B&{=0RhNC!>0&ǵl>Jg Z7hsw{BI"6oݘ>hq'} \"JU l[fF~wws+84+4X$jvmTԩV=\,xjl-Q Ϛ=- u.#.͖56r=zF{mo04[i\j Xm(lW%403J4#~?B}gqD|O09d{MCr6[]z k#L7Cb#2;B0KF׌i9eRI1M #5VZíLi˱ll̎5FR&vy'WuVF}.B$j3#EPQ@s[/ܵQׂUsn>c4/YSf A ?| ϡ~iC S9 p-({ip=d'[a`|Gv791w04ghɭ=Ǫ\H"!3nj{dj͉ղ[2. 梅M*C{q1A FVQV4#BWw(Az=3(~O6CDsF{btiY0@e8W8oO b2^H gL=9{J4 b~m@1zt-ƶlAZӶ0{X+Ҏ\v8e4cbCX G4bڶqaBinI{X1[x ?{( `՝{ubL*D9@#7Ua m{` =\^7Xh[:?=4Lu sļɒUugHhz!l\ +:Y1Fyq(G9=N'_o(&Krap,cm{z6 ii!c:uAT HxAW)AC5 YrMM6fBʔ&nt@ܼ%UL֛Ki  70kxpDṣ~x=j]3:4+fc@#{Nʞ\+a:Y'j9#wx+:$d4 %i)r]LU >*SOTŵfzG Wt<~NrtAE% GF9ҫAЃPeo<8f@:id"g@5vJ9\yGsC}K7 -*%w(O@GHٛG:@Pg4074Kzg9(Bc i{ ќ/"ɳ1s}:5'|BdW:'k," FrqW r@hiVG Qk3JR`gd@'HϺ> #%6>rj5cK1HJDIڷcZnAiD7bɠ MvLeĀH;˼5ɠGd0ض tXnM~Nƨ˱VA!A2afȏtevmiB_NE(,%v/RZg5vZsWώBn.d`H.bL v2/ ,cX,kkp{ShpDmIHxbs%g,HxLr}UDK%ӊa%ws-WZKƸqHdؾ$^P 0ws +DA%v4 =r j`O1JΕ\P満mBwhH7fxҢ/[mJL?'\[\fl5 L!>Ƃgcm1`I@|V$n)̀clFj'7v!=0ښs8{vta~v:Ftb?&F(HstFr"/5ݕčb ,u9\D/Z[G^JOSL&t49.۱HB^ IDAT(Ж+:o%gǹrR'ep]`&\ a0//l3V2stV:< 9nN60y,$J%I5}ۖ2R`%&;/\tp2{J-x_=];r@z3CƯl)zȬ8> c>X[Jc1Re0(~WڱrE'jj錋#U+*0j~ydRܙA=m0>; cLᎆv8 sƹk0rFelƘ҆#]Ԝ,qe. ZDžѵ0پuq 'z<X]U'LN  PsCFC=o(V-v{zO:'P d" h k˄6Df1#-8Ca=.ˇ{3DCN23=\mTeٛK1VgV ]i=m"AI艥Qs@5WĒWfKn%FIx\zMsA%tPjI y`ky.zi e(}$/ 9}zT+Ǭ_0ӄ$1֞>ʱrq3 Ih1_&jZ=V Zp)@}mYq$8>/0m[ ʵl}KM7C R00 Kh( hEY*nO[~b/<c4cZkL} m%Sc$6F+$3JzdJ3-i1O}YBѳ5t>(Yǃ  (o Xn >{:Tgb9Bcsba-fErqF&_=mNŒ#seإL$h;dcS9].O.4 {F= nSx_B-kbJ~A 6y3!_P| VMKeem-2밖f+HpnsIϼze Vjҩ.uƱ\@D"e׸! X \ E[ wÇ[L<(m4`7tk ~ͷ@sE\0a11-zL8>+!$(Hupe%CTwNԂ(9 j1Ռ L};$eVzLހG!L#"rzOO YGt# ! GY4f3Wl)5LKmr<X tiD-!H4d1ť;},n@5Dsl#vQxi;sB1oF\@'Ib(nin1̀rE7^1L \VX k}}$c¥Bp]4!^?c3K>ێ+@fse' YK1lcXdˀi WP w@ʁ% dG\ČFO4 h.*tigRK= 5]FsCvC(0r()dc#o k1FS5$>y#{L0 n%xXPl*BwNWC-[Ca>; tHgܸe4`]ʋٻ93W K\L pl:LA e; p) p+Q,gPPL=){b=1G [.ظz#8>#)ؾ-/$Ɍ4rc沊Q+ O蠶QHYx{qSZ Lh|E1js܁˶?K>76crn Ɯׅ$%E8;w?ŹH=xzާœC7365X@Tx3}V{\\4XOxng)N,C1-S $i1Eأep4FK c  yc{5z.}72LCAyxMXƟoG'c\\M9!2``.k͗dW wq}0|C,&ק V:v>O?.8qIgY͉,Gufn E\S߀l-1nohn0uSѢ= 5X_.Yir˞3Yt0"!HLfAن `GΜsB(0Ufn!>&,$jWS?Xc`A;BFFt1|sGMno@Lg.N+ˀ1^Be[p7] G }mfpkn[f np ;8^ ; .[Lu kZ@P.Qe5m 5^p?x;vk HZ`;~vs}zgGq&1ګ'06 7$+pKli;^X5<CpOODžk^k&" ${Jcg0;Z60&0 ]0ƀhMOtl-v ?Ht,00 @u*m1Bwc[s$w50^G,K-=#i@:͓ji)ז,p,qCuA!%и9q!_Ho\؞M-CE.qH%uH\I 6 aþ!\1 LKh"̷8}హ!ttsLKnqlR%peZ-b[L'Ar7>N- hUsNfݶ:OrgF6knyqYѵy&ĦZ ŃSN7 =`:<,|wz eG:+٧CF1k[작|yC&] n({ц-g7v"|{S3dyl\.c~%N谅p A`=9~9 =/x`m)1cnMeP>?4~s5 @g͋yv뵶h=4Z[n "Z(,00<o0MV B-$ ݓOqY3UMFmi] DC>ŴCu{d+`K7 ПL_@ D c, Ł1 ;LKvFwƷr  Ӿ=I5M]JsF8pw8vw`d=iu0 ݓ=6 r:IPY Lh݆B p{'!KtWndƷ9P1MF`P `f#\ZF1Y֛=e 1%}R 1m {(׊^ p>g 5#7`ݜX;=Ogʵ?c-:N\aGRaK0e}F3wDc55MqqfӖ'05nHC FLKC ~JzGB{2 =;{6i.3NcKlBaIi-̧@\)!ͦJsAJnNssSOMsHگ:`MB=]cnKDX.kazMk420-RdzlgJ0 I+-p}hx zi9Oؿ[b+r:CH`Bvi(|bl}9ؚ"6esY \k .M?9:LAs\¹;-H\a R1uDygPH@ZeԀQSqoɀtq!AP]ع sF\nMhta'!c̶9k.4~ogsXgp[)<ר801Krvyi&5Ca9p {ڏq4 8./K,␿ԁ.B߆^3Rͥ6Lɱ>N+h6A1J7Ps."]轁E\@sY*(w2rX/tSV@0NbMtxZ&7w Z6Z@sY:?l A˖OOG%:b'5!]ֲ\K=_Mrx Dwkkk֨{6 溬e- s/X,ka_Y*S,N+#+r P -`$])0͜H_K2B&TZeF(3II%*Zl{iR2LQ*@P2ph\^ #Y[nKs?t1zhCeU2Z=xY h>r @Z`9Nm/W{^_JܗQ*j,Ve-F1\<L.￶|f5RMg-+f&R]:s٭>3.ʒn)̬黖 Im!sBFDkqK3hb.:TCDd~> |idz&lu/ϽMҗ 9pX5Z}@ExKIӺYl5ZܲL|cP=Fj!K!16X-TSYs̴ {>Kph[y_mtY h~n/&2-5 u_%bϵ,-^Y;y[a"`4_1uf(>w!5YrݜVFcs&Pn&ssX`#ssuqKJMb\o8l<@JTjr`ĝF%)V W FXm*|brrNH)-Z.Q^!hZq JRW[hb2C>*}UV4WÔJÀK?V554v 2Θ9g[D5IjL"N-װ4 ȱt]T3̝Jf9U[l$P"RHϰRϹam#0q}Օw̵~ZxԌ#K<_rU4X+e-^ExbYsTg$P#M,@ɨڱpi(Q{I~H ^*vǥb۵1ڹmr! b%c2l-P$qSu P;RZA!,F Ɵ3W_/ؙNY{|/SD9ȄeKEP<ƢJhsX`N{=sP`YF~/dA|rŜ}\}Ju͑ J%s= KcFd9@ !lZ,mF"K!OiFb^CZF|>5zN Ssnh3+ZW0"cֶ\Af4R) `l pk3K /NZьj =e!#ŴT_\cJ:2,ؐG<13Lf$&"CMG7CS뫕j\]` 3rYP8v2CrYL1R !) rmO\ 05lcax cRA K55s?K]@-|..rj,T+ -Gu88C m mq㺮tej t=6a!fMحo9'9bcJct3@&2X%Wavblp]޼ 3rQ",SS L5k5Hk z\XM_lmsj\9W M7 :?e}o9\*ۍYϥ-Hhs" $?{büߘSԜϻ07s1([n4.fs.ܼRiQXޛi~P@t8(>~#M0~1iOekdU-J[W)o9X>c).e%-4)%\S1X٠~ĵ mWY/"_ՏUVUW]A\ ` Sď3 Up0‰סp'48 S3R0)`GPzg{j0W>~Fs@T5~ԬnMo#o TqLJ_KGp@i>\ Nn0RL=N:gbgb`{ԍ.Vԗ jJG1̹ɬ@S"9bIP]yƫfs/T?=w1ou5P} 8@ "Sq{תpcwxp:&jEKh򵝾 qh}M9\v7'$c5߁Lrs 'ۼj^Ӯ~[Dmt8 )_HD['Ҵ'3搜O1t[p+$XeMMm*B\`97yju, e658<@<|U|>2yScv=ql]]?g~;k;Q?kCc_i%8gҬNDJ!8wtQQvsBD[iR ہR^0| ?} qJ#üb4Z#N8?شq{_}^?qcG#~x0dL^y TE!n/Xo?@۾T:j&w2eS"NY~ yqt͸DN^@x9 -XB` miW}Փ~]\Cw}7~8ry1/c|0kV?Es@/t3o>>4sʔR)Z`%3?DK:Zvgs@99%H ]S" wv_FӮO͗g=? t—F✇47Ҵ?[}5K}wπgiohk2@ٝN#=ReN7eþz:ӝ7Ǚ#EFIDY1 dF%#H  $@G;peJ$RHDQQ$|sU{]{׹䣥{8tWwշַַyTlcL7)#D7 r⾡bjʽK7_+#Ke}t\U> bc6@yv@marExo W-_tcĻ{\9&h11N)ps|@aXHGnW.c-Z$r+CT.h~K4c|jy4]E}tK:vkr)F>/-aJ5WUv^=!6LrQri1S oLwmw R re*k0d~wHť7';?HI0m5Nhut.h(ji.D\g{^ 9x6m55*?u[,L1KB@9 TS|>hvχ{6:@rr2O?u^1d'2c~33 Fe>f~s@kzGJY@b)"SCo9?ۻaSbv\jyYUcH=4h`)j S3wF1=2Q;WjWG ƴ2j {mh\4؝4϶^1q#M [9|.H/llk__)&w2۩Ta݆d27dQDC}@>$:ٽaMw~h对q$ڹ9z)QR"}s]7|Noa|g-BMFӤ'ō7]_)ʟ&V+O> {t;,soM=b`=/1V¼c ,5=b mbrvDPQC{z:Y ہ$ {s|* 5בl3s].Crg4kTArW{~ؘ⧉V8W՚և``9YyJ?ARzHF%јX Y9: R5~.{]L4/w?tgcf&P--^&/TRQeQe}@ =!0@1[8%pKf H;7YJ2Gsd8=~@,BRԵbxcX6,9R?C^ @df\wpȲ,`ٽԀ=O7cD3DzLLg"tmi&v}ji~.5FrrL<< !p|w&Cqv#m |5ɔDrqǦ;?fOQ+9K<Dž!b>`eK!hJkZxco XC(6 ǀL4{LǞNN3b(M4\iNJ 8(Ԟ&,1ƈIU-9On>x9 S? 1+9jqSkNmL&"hvR|J!;L)301=&5BhswWW=umB)c|{Z\7BxD=8/fVN:w|l">YlQȎUv d4%gYA>oĠH/s2u]93<`Œf;dA}oII *Ŏ5.Ǒ734ι3'u0zS LHbV,zs?i3`Zbut[p@y(da.3,%@( M#*~s %(cSznk<'ԙާL9m[=97b2%:ɜ9X9S#W 4'?K§j05$`8 BmD,\_򣦜DxFưu;pzXvLWv(ʊ$H}1Kd#LNn9 sc* Er-t9@T8?_L>=ny4bX}%'m}]NV+E7`J =bcXls|&%DM0+O_\b2kDNfڋYj!W[v牤nj.bp<,2L?w)ovb!H=;#I%`7ԴTs;sj+Z5;[cc\Y6(zydmlb)X%n8ߟ{?{Ao69J L}+"+;D"_&4R"j%7Mv{[&Xe);S_\bR";S]u# `Ubqa[r2= =6j\[;V̝L]TP AjMΗa:j=܄mHv?`(fy  ~F^1` X!/81Q11> CFP?0?\} !_%hjT8;c_C p@uɝ,CAvw?W?e07O2m [ӻ`[Cr2%ffy,:9`9\e΂6e_\H ,}.l%3Pp^"Ɵ%(Jt9L-\OYN|dF}ծr`S J9-o ,CҜ J1$,O Q˖hz{WSN& "]H^:=nBm;d0A=">N1ϱX,01100Sbp->spbjnZgff',měM9A`]px̀BR0M -ճYlQsw\!P1$jB}j来Ih7Kz":9"vp?ϟ3ant&Lۙ3&oHЌ:xRgPֻeD7ox[u]֨KGwIy b! K%X& ~ւW[f<[9,0cG3 `04?9LDvm.]\ @AP$R4Ќs p2;o);Kv};5| 41,Y74hƌsBJb$Yն(xS c LƁ.mw g;;;=ASb~7Oo 9`EuxxvP. ,ڀ=c=6}YW/4LpG#l [P;:SlS3B6]]7\r⚕ا-gDcX)!f9Qfx-1s3#H@x^*'L5WZPWkT'Fu,\A(;VI,C Cn,}i+U˘z@F-X ;0^0мW\h/:y7  >N{B` _@bC|=dg#Rh"?ܶˎeͷ4srʀ(XSs4k&CٲL2xMv>>ݧðhJGwQ%!KM Cqߺc!h:@̸R[kmLeq65NAF8MIȚQ/ެӆ )ɔIqu+ fs\μ IDATcT`6Ifl\}.>˻Th 0л{(8>xÆP"CS*!`nfvk%@#`0pd[^>^kv.$}|fBv YUն9\xu(9 7EX,$0<*Xpɷ{ f2.}TjTGpcT> aTNC|g_XesصϮ-YC7k$:臺(䐘N dcCl8ۓH"0 ȒA Q[c-Y(%%Bs ]tBO{0eT*PP1P1۰0{II>2$'(y9^rPLXl)|_}ޭNt[:N \"'D cc#hRX^k䱿9#% sg'a0O]1gA( 3Vpcpu4 ?`mw[GTHn!`폏+c]{"ֲ)Doxx`aŌ%'8bc0N 7(LPx`]v@3 D+?ѣTtBYI<ç %7Pv=cg=tt`+!';+_(/:|y%Y[2g.a1|R4S<P9cǍQ^@A弜ݻ;Ǣ89M ZM!bOaͥU7USmPc L,+Cڸ7 "_`X1nq9k0i4#,Ș 1ހA̘c\+08G; Llƍ{kD>ˉ%Yύ 7Qn:C2pHڻޅYk<+eNݱ?(̓yzwrQ1}}hok-V5EG[˞>P%F-k-}'6G  ˭Z[YکŔ_HrH<;y8JrFO-J71e-}wP0cA5I B嫰06C.<^歲b᱙c:!{%9Nl`ϜQ8)(};@379Uj8&vX{{b/hvP\}A\|mY&֐QO;~~{XZ綤.4n޿qεG;=jŗޮ8;f܃pB?"}9G-'C;HEݹ3g9fւk`a Iu< KCmSg3u[ES|ʇRI׹>6`1nǨ6emLU w~_@o,;b˽mv^!k=lL4׺eNhoZ[|`eqM'H9ͅI_i4Y 1N=V9Bd 0$#Ej_#ƫl1u]2rI_es0@a=]Sv}rQ/%j @.Tj淲=dPxi96gT΋ŵ?ND?Olr\ şP%DOh ?Jk,Y7jItݲWUY|ÑQ1"i3(31.lgf,`\~z ʷmʑ$V-GmfȘvWd6eO]WPn3XbX# MzHpbI%+\dԳW;dϠزTH:p;}XaM2[|5C#|D_gZgI=ZnU +"|.`R7Vs":[eM3[܁ϱl(5)+#]37k7|6h) %+J\2( KQw12qUN$0ӣV1}%SR˵6Is&ͶX% --2 tbX?ǜ0nM/307qlm;A)RljΖDI3M/y_)6(="?ʌ*%%i9X}h3M.g9m2'V =RH|3ōTu4v 9/]`OVbS'gL;xnBMW}n~9m9 S91y*Ϛ[ O^p_Ouq%$?GpxQ(sQsf2?Ϡz }O'Uj+l[W0 ̬|'rc.(LrҞ1^h{=®ܛÞя?f{fh( f>~aO/|\;MӮ#t;$`\O.ւqxڢwz뤐@Ag/Por -sjbP2?"HJ`"UH o_!?G75gx Kztdh='?C@ 4ͮ^=3;MR Tf bu| ɛO$LY̮>t9[ ߃W'[{-û*_Ye/_Or0MS5P'֠c(^D2Wml3\4ס}4PI* < 'ey$FcJ4Mry1DX*qvY`I1ynfUT$F.U8d+^*f;'K<qNՀpAcAS+CP^C+89TL *޴Leec>aٻE( I1Z [׸d޽v1"R1'\S8DN0/AAj[&0x <}"XEczCbbavJQ(CNC ,@^moJ<[QMRZ#oqK+YaHz Z$˂؜rIÞ 4Sr$suގmvuBsk-9<\[u8oX%F'l-,x \C˰{aAAx h? Kg=K Ar 2(MgCGr1i>|89#pD55 df_3D;d^/#h+a"LH\8~7M.=zywkDgہi1C.1L_f2%̙sxƾ卍J9#v-x & {dt4B##a0܀'#sed.2&2嚆8f219p]_ 7 s&n&_t~1zS-f /Psrђ1#1cardIagy2t_d;O$/7Zím!P>s/-А#|k\#)l/ /*>̘"bgiou : |/&=(pNA-O*!lRPqF6NO1doMf^$bj51K)j /)56#VJSvsV&2TIHHC%v`Y@(2] '{?Gn­jvu9!V'Tb:Ķk}s" C| \&FQw ͜5?yGepqF4ananM0܄ 9ύbGZ}LOa[ܱGf!)63U`%BPC&݋M⬘-~m޾ak?̮nYq2:H``C ;ta9ke5KE1|)2s3qƘero$ ÖI_ OD)fÔL :9Y27ラ_aV{`|>ȕR|c'Bq0{␆{Z@ND)%aG:Y4ReǦ>edb%ދyjatej9@ʷ}Xi!_]T( r~#W>\..)){ A@7(OD]byND֚Rӌ)~Iq.G*.)~NHM؋xnˌVzfբXK yn0<q:\vRKz!hU`|K 7KuO%2$y`'4r6mg7 C(#C^3\1ks s2.~ޜFB_) ,  enx(0K*Ń7s)&BHY AȠ|Wi8܏,ʼ4 6_70tM_ MhnKmGYp|Y" h93c2ܠN/!8WJ->fXwd0{02mA>^7isXlo(41ћi1F1]"YORP' n zc(i2m(=}!NfQ"$><(T!~J.KUSMw{@ddhmb ~eL)t 49<\3 |z!D0vbrݼc ZQId}:1= n~Nn; &x/MwQ,MSZn![W: 7a0x(i%F<2sCPż9CWs'j9ax3}2t8iDN$/)? YKC; uf"A͔r̸䂜GyGisyR B 6.kCS NĝyI7,l5a ;Q&p,E=$s_P' bݫ;(ݍbiCGϒ]LaaנSrf\ A МSۃ9s6brȝHډV0Wa&"׬5;pc6x'ÓQ*hߜW5˘@xMA>3Ɖ=1j*@!a%*DM1' +,`m a;6C+E&m|\ Cv* @UNe`VaA'J& E`P=eS3ʥPƵu:Ճ4\)F؞U 'v-4&iwV݇~ʺ)G`Cb.?1c[ ޒrVėiJc'?h~aט{(ϳ׼וN K3$v}f-.:]Krj߀/]B4}B !%/ItUi.yH_=" #w ;XʊQ2ӥxIS{JtK t oP"KM5Q.K F de w ~fQ\|d޶-\wO?8چeu?~Ri52i^r0,NDSTV1<9IcBG@qJPsP%HPaw LAx-Nbٹ@는Jy"۾fL 9H2pAR락[3l8woUI1Mf%6&Q&9=aD(&wS=i?ۜZm P:GLtc`_q@ʄ )2WX:u9`ajoxTk˕b;ɒoJ!gPc Vodc@l{{RjYGs xpAR@3Ƶ= @.P;SZ•pv1F|R5\l:kJdH95)ಧ'u՘s B1e xNLbej^nO/i B1:Erl[a?, AMrwoGp93J [|^Ş1<(srQj4q2*6<%M*z7^ )"endAGu-0#QnLf)=&K1U IVdw7oo@ik^U^QKe*Ry֒7wf9r}R0jlsG#Y13NQwa(R_{4a}zfmwC c0cC ᎙rčiLWPXʚh;w^N_3T6C?s W១sX&+$5&*@SVEwaz#soojD "%w_E#8w=`L/̑@e!ݧ]BHLRbGPjF 99tYe"&4s 3P*rpڦ ,~v;p8mrfL ` ((XD(IAܯFMP9ƗJ5^$,}1$H;a%X{C;fn&S|3@wa! .ib٘)Aw36cˆsu3S (Ս Sz1^o==TY?C[iw6 #P14 B+$dPMJb + -Ƈ6e ()1iloM>c`CJ]h'bkJ?3hj!ݎ'  c \tDL$=G8G&\a"1719e9)ΧǝG,`!U{yXD `W(qnò/EvcB\$1'ˏv& HiR$7KF#TvdE ÷j47oX(皩ddF85cdj5%҉t:j4v3zGrG"G""hpƒ#¶:RrY1Iur1#|NsH(rey9ioe`g7 )d,D&fY藇"iM'q vF Ɣўg4 }8]x-~+<׶&/3gp_Ze#`ߐ v"]A8N1 npKuTDEJ8@)-BRA%IJqwiSa7cw.˂DzAn,v[)A.&PXͱbPnս)2aSk ?2`@bⷹEo9lNbg s㷙39q kvׯ0!JtQŝ@fX$)H)wMesmW(I1%0 ")h6|WlUsvqp)sҠ!j @Pge ,'^TkPAWo0'YgqPw<(o: G1Rtfi+ F&l1ވTHN[y47Fܻ -j @ !jI$5e,ZFr[ rHcANH$ .=3?nWC_ů)V_A/<oN0T@;hZvcvbf.]d$S>ĵJUW^̓FC3Rɔ@u:tbW  Sc ?fHa ceClD@1@e~<:V~U[ᗹWCac`>:k>2uS|m5xcH"VH{Z8b &^#BXQ}`&4 "5p ˊ42'" ܦvΐ!l (cxOڊp^wh_ײ<6 1~'+ם8Xf,V2%pRVW%0> Fz1 <9<= )Xw6ak(U*7gk|"$XH.1E:/m!"I}a1+ IJrsl^ Cu"h4DHc_Z푈Q?ryPnavn*i 1KQ? "N 50@MPN*>n/nzχvnw~,oYe0trSRz9xsdPb`hBx ໴%&Qn@PF&qH$3mvtOZk5 \9 8dykՉ=~g_voَ]&1HoLbg ǵ1mr.ilap:"qI1紩̚Q&mNFˌ0Q2zMXISƬ\(6VʕZ%K蟌j"e+c{9V^`:#0Z!WdqbWsf;( 98pg?WNXly>ъ6fDGK)ԘTX Ա:^D1Z@,)V#i= -Le^,q3W,߉Szga_f ycTܲ-aNxkFީ153**JSa@ flrcsm~>$m@ a$B@*NJS̫!WxSLZ}N+l%X 1V*OmK1\KļBngR!w9~$ pmjXv ;.<[,D^xd.JJ <`Bg?E%3'))_ ]OQNЃX7PQ3,Q[1Q`{WhKFZE QWKO51k*.cr`^I.0%šU8|'gh'=g/Aqa7/ 4 jb#{f%C ̍خ0 ?U? IDATVlz+aC $xZgT3ةf@/_D(o0;^7x)S_\G81r0Q{&BR,bSM5Oa+"ts|RLkeN;Y,ʽږ;w 1}G)+8VaojD4)A4k")R&1{3 j렻 nzC>HpL[ϖ#$m}F:RL18dxR@Zh4u:I ,injTma+e ؛דoz&s5gtnŅXMPd:=n^wN[cҨ19l,0i9'Z6s'},k7Ec៯<jy, 13 <5n4㔈p C 9%z 6#BYcSfd{oخٹeֽ[&Im> 9swXX;4c 8td~3|1a'$F Gcژrr{r夾C,{4MH$݂1 a: 8+U0vuh;t@Ѵp>:Gp%b(OJ+ϴ9w%R{v vy#-b'E \ND¹Bf7ϽpLOL@6dWcnwv2|Rٓ$9Ņ A27F$ pu,0Knrr;5!}kf5+zYS`"4~υ,nnpǜK[u쉺)1)abF}+B`0CPt;Z3v FJMtkKg$ Myn?|pe4m".8kNBGl"M~Ger 35ж8଩C\4g^_+7\o2Ȕ3'1OAYbh|n~2uAiT"j!4%'4܈_% pN[Q^ΈSzd*|Ou(J}4U5ΰ͔>`U,B"DXfӝA^`o6w~| +4wkXN9R?3UnylΏ3풳/'G$Q'U&ZYKcO^*q0K|m"+_#'hu„ )rMu P>ᐍR 1pj$q=oE2dMzK*uTkɀ!iZ=. Y!=RZqx{',2KxkifSؕ:{xqk25&wiv|FW[VMvkʄJ%8^/UJ痫n`J !ӵ3`ޝSn@49SDd1iۚY^藚}ƬΨ/0bep?9X_{t4-NϏ3{EuރO~*V" ٠oL) _c5]$k.E=kt5Q _#k(qI#p pW&on22 !iȜO6 (xETȷQ:)g^g$:ݠcWχCoWh;,/Tfq za9vW5xж^ F5`-{z.M%\H&|Z,[_ײ]M].u)!#|01ڏD8 \ĵ9T%t̀tNo `z9WVV)U+٨7<@$A s tTJ5y̒Bt*YV/(@;/8sۥ5Zd +e^L~C]k7X]vkdʻu&OC_by(Q7^ӣCkr,T3#}ƞ7O/UND/ʷt i%8m莏msj^K͈5z ?")j̠_fT(esI`={knmkm{]#4kRk7x<_eB%I:{aQm6I&s/fb^%&"R .it@Y&&n6iV>$@15CXK =,Ii =&5Oyc>$trE r h{j/aޑL±$.bA\`S氯ڂԼTZwqkARK+rN~ !٥o Ev{x䥛Z0M;Sf87SXQk 2@ 8r,2s&AkLi7FOy7?0PFKr0Bt+ٓ6?ܡzu"&~܊r"-kSJ 005a}tKY46ۮɉ}iE}/bx'QjTZV/'8Yvp}5 asZٔ X][TV xfn!104x W(@7R khmGX^j}n M4h>aY.o{(5в,-D8~q8DV0HW:4KeB r+6q9+9=8OciWs{sJ h;xϯ"q h!z3h Fz"D{0λ!7GmZcqT~4p}mjAyVEjDr'#.ʏb0O8SjbtF\N&JaC;c%r#wjH]u]4g,YSVw,`jU`^uăhdoNd鄐5bMFGx(욗8,B_#4̉5D%)_։=v̐ӄk A ɡ4zCrVhkس?|Cw8)hY~Z[hNlD:Ct(x<3}߄Gxj͙6s60iL+1\MdTRx,l_9&J| /HW'GXye! 0'.^D2F;}ZKDfGК.9Yq˄w+ 2`wh|8>B q?r9};` 4p4IE?be^بV>dxMS!!Zd¿ 9Og5@.ʋh;|2˴j+Ͽ|w#;q]ƐM錹G+ȽGk@4" 64#?2N#wwOǍNZ71U]"/8;tBGб[ʯ i9+fzhbuC¼:!q-.mZLuؤ/1h+1y; peְLS<7QEc0$:e?) ʐˤp%̮?- Kk2S#kz\jEA%~#n 0;qp"ln?&Ia4&٦x0%Lix9!>[xgFlC&/C:7&K&7Fc / Svw*׏Q{~c$ԓ&B?Ŵ\Sۘ{"]I#G^xkJ `U"XFBKk@ׄ@xJTbLਝo1fɥn:HOx!| |{m5gmSZH_i&ZƓ砭kTxaMfnNHeGYp)piM4I֩e42"*YedNl =IˬqؒSe9k<>ZsS!zP׸5 (,d@K%[xKC*q+VF3eƭZ-we{ސ}/M£| ' x3{gu,B(^ ?AaP3L Z9zC%ڊݖAX.+yt7E2.j֮1^k8eƋ稒1tE.+ȅ!)ce5@kLZRi.I;`ze=疐wq:g<;\CuG$.f|<> ~^,meuW@ 5>9yVF6iv_mj=;EpƵFou$c>ON!3A$7s ` SGȭIQEɄ`+ %ZܘiD,^̠ѿ/KQC3]N`)'1!`o[ ιO*[k@DX_n1c>^x3.̾@K釗[+ZEfKXCgსǟ#n3Y69f/ƼP$ A$g{AlbP'#=1N5źUY)weF%IC 9Fh$Yo~]EjݬWWv 40͐N{Mƿ-L]XE ^auI "^=/(yh9Q*/%ROxCI 3w|x XW8 # wM:bxyI`'@Zˬ}pH|W]h"v% 4{YkvL#BQFP~YN9쨽~m^E崙~mdI5\ Dx_X 2ͼs@%"҉©%Vgu$fl˚Ib1KD-s-u|s8y@vZO]fT2f= p t;[) A0Qsj!GfԴ~#VBm IDAT4^أ`ּ=YbrDhӨ4UwkDԂa䜳 \Y0H.=ZM,GLwgs&Z%NNk.v#`.J_RSVr"p OZTˤao, 1qPǹR-d顥iZQh./Hl;&r;37'HK<Ƃ]JbIV螘yQ߂6^s<,W'73L!mxq1xq'I&rK sxOp1^2b YzC ֭P0WI*n @!X%iq<6*Vi=fiy) hvoa (4ͣ`BrYvG!2_ {րf (GJiQ60cR ""N_ft|=Օ(|["| ^]5Ssx.y,C5_eN[|рCO>Iy` ]#n*3)̙cgr=kLG7" M3v ".&7:U:5틘&%)edʩ~'0fB$NvAd߿^~`0c1jJDsIA'`P%נsЉDjuDU_/pK:糘SnqJݤ_)m89B'xf!K1Oǟ=ޅAft˵:0x}"^]`ӵws|Z.k\MW3Mʄ:Nze=wXzm#zңGJJ4%=zb"S 刎hͺZ&j@ 7=?ltnZ!/40cL?$<~!I#}rA ~mqO#r,Yn{ɡѭ:([}[@^lߋ%8U>4 `gͭ0*e lsv1hCԔɜ5?H07Q:ژ rG[,*cД<op|_$y2[{ щ$,%x#Ixb:K*h`:ciD߈DT۽5V~fKVkLY'#3Jgyu^iI=On p ~~` ZTy 㳎>w[|I $10f*L嬪T8n尼e4w.9)}lH(07 99'5ΐ$|(,=D3vHʭY`PU!,0]ըq2vuG/974g3P#^1L/[=,>l.n2|y77 =ZtM|͵زxf;fijHY,qEkd\}fm@ bZ ]2Q|I$i`C!?ZҋfQ*.6W(J:YsHn1Q[%]MnG G-:M:ϨmUl3TBY{hJ %zGtJLl /CƝJo|։tCWiGD3\T\"*)?\(ozf&`NQAh ;TumdZ%u8n1Ri6'Wedu#9k[4J$ Ջ/dR 1b285k3X!G{v-DXp8[c0,@2Eh&̧.bK$Y$_9fp.X4/dkF68%u!>zw>0\`leKIlw}Ǔw!v'dd"~חpFQSneM{&!"I"uY:nZ{glFK1p88j7ױD̲: ![ kI=؇WpEn2y^f:T?u*c:jNgl r%KϢ(J goq+  #Rfhp5uH?][=x ٵ.[֓/ Hr5@XE SI#l8͇Sq!4)[0s[dcx#7sgGd_Y$.=bdF,7^d$~aEW_Z3sUmo?|C/˄t\7V"6Uz>cߺޔ}2ZL8>CA3_xo%h lU. ŝa~niд؞.G.(׌,\i29=#٣aF60Uv㔩 #Mte+9@5 %,?,8P]%&ieW;w$zU!vBxa ;g MˁV%m:h@a0B#-H`ArdXtݒ!4(~<Sok .ofHe$WophYS\6/Y6-6V/.cU[Il%'vrYu汴[G|$lL|/S5x} >;K(DXߋǥA1)a[NT+v*<#DZWU_)4/갾)P!=5cR5KD;}(jG".E4LN_L X.wB[]~#э\g3rom,y2L'-"9f8j,cWOFS%1C[ x20cx= a#vixA#SG SGً!2kzrI?)ЬH.)Yg|P\ɶmJplo<|\sbfR K#iK%x@Y텋Bг`6DV/.H,F. rYh-ed"t =B$f20Bcd,VF`WjlV}<=oGW!W 4SzX&9Pc b#V;HcnשP;SFJV7?1̪&'WPF:ѳ1ķCst+`{ ¹ OPۂডlug xhk4S?$i Y$+xLSu2:N5D4dc((_]/=0+RGoG;2Yxi#[([E҇[)=3Fz,e#])Sq|֠I( K1be8`>Q)?Dk8# [̭j<;5.VQ Gr@Ԍ5N 9+ gˁg#yD$;yW:Ui1VRw s(݉F2Y>SC}G.;p7€+=kB\*^랁sw̠@S:݊gӎN=CrF FҊQ7}vROiZU {z*ן)CX).>G,;@ =:ɦ9{#^Q#/CrI.GRBsә ߁[M flļLS]61ﴡ8]9Eh^XV |7t_߂ %B);}.ΒK~<.C"+3Qz%sxdԆ|z7|?Y ȷDR!gi khX+DNCM%X[Wk MT[!#=i֩<'ӵc!6g5($Je߆[~hc{5'DS=7T=L6QBcz|#?p|bT*+%|,u!}`koPIG@|ZdX,YHXt(卙ʈ/}LvE lSu A;(YF2|4iӷ@ vD A״cx\hAoN`?1y"K|s ]/Gct >;m8⿅coH kV[~ +,qc 1$TFGt=4a-R2r >+sUrY,3!LW?}cNN_y~uan-#AyNuVU؞ZG h4 ) T؛jL-`(wm+ŽV젘,>W1Ko-<ݠy2B?j)LC۶5XZSs35v zDTPڻuKSoJ2;yrTS ppO+d CciUGU[.),I}#*p~;n@ԀðJ:S"T7S/1d~a̶V\2-<  0mr߉ {:Ǽ|IfY< o3~YrmפYYL)Ҹ8VX^Vy-)pc:r##jn:Yzra)T\M͚$LU?4k_Jٹ]\.ss0|GUj;o4@0  C;̭zyB"L6퐟uD&3b)W#ˡ=rSPb٩y'tO9S=F$0t~{}]n Y)H Uf-}A/73f?=e,;0 $U@2. _[eMt[2Uq'Z6c CMjOq `:ȵ$Ԉق` OV %g1M%5Rg/M[y[}'=')XINRwwwŃx5[m䈋!H>?IIL)K;М1G~[3Wpc:hjnIJnCCwOu /Njn}bpR&XL5'UjkL (Sjqyhv:f-} cH^$c'L!x'A b>u6cDasgfCZ3&thX]k,bآXܵyMS;<>S?0fa2a$1e-g"v܉0E=fڏ"4܋05lz4R=\:YN0ʭbs=S;ײ˔I-|w~&kDNntLpŬS"h991=.4W2Z! ,A@ hvp||)Bxҳ|~E(㑅 u/GORf湜O)e $uyȄlBczo\bM$vℋFPqIrhx8A%lL\sb{e\{n ..y)-Ԭ2y#΅ܥA!|j~{d^z@Aʬ>b{-=ΥFNAH`{̝"3=bn }AkAPL щ'+Tk#Vk{hʖ$Kglw(]a~:S7 &aTX K@c֏4ƈ17^"~f )oe4gp2݀,NBp|XtнIߌfmD?6>cYx9Lf)LONFF&dpX 驓ұ}KV*mL&I&Ei7:-XLB35]2LS)P$uۢ9DSd@͏8t7 ֕s)E^WvYjtQ|:=~fd3GczvIZ'?S'LSʖ˙)2[~5@;N=_:h=-EB^6Jw[1ﹻe@ٜ f;V&rYYZḴpRyiš p9Gwvˈ( (?a4DG汓GZE̠et%PHhYV^'zif. ɭPRIǝxzld-FȰS)X2DdG쏷#;YYeV#?^i1Ltk?1 Hmch/5Lڠr,*`s4SH(}JmiL'4=rP@+fɆ{5`yt??p@DDιYya|vYMѯ8]7; ƣރܻ# :㭥)TlG-y=-0,"}r|E t*Dn)7 UJq&T.VR)'$V;̋eg)T 6JŲa {9rs;Z ?[>K𸶃k>!O<(t,d\;9 Hݽ!dO F R!LUTBRNPܚuL괘L枛s7$iЬ'BxR'*`1#=wp}}wrkhOYӚk@G~F1қpJXbEF:/~/Xa͌AVwoԺ%g!$2G6\éK_Zm0(nabk9 oCwpO9\5p[gdp.mCaxo>"]g,{qҍ:̍7yZJ󘏴 v ̓?AP9G@=`nYOe<Ρ+ٺmV,fPI{)`n7 AO"ҁ5o(?H62ݑ-kځW v\Hd<GGpPщfVKD8#\52$.HưvzsnpNx,㢰, wBi~}VN*L阹Rx^s;82sVG)s#2n1Qk+P7Z&=Qjȵ5'"@94{8xyxw`P6 ԓs @`9G:-b}"Xq/KGKF]{m<~xgX"'gt\Ji<`-w%G5,qYԩ8IYiL̪b߉D{ac EyD z aذ.S_)k yE o9Jr>vҋ)jC o!`nۉQ0xLxj+gjen?4a˄)%R=1 )ʚOgViGgkHX Ac~p\X$K5z$ <=v:ΘD1sqvEF7-Ι(Xl#0@?T^矩gX4Z$7J5%;ڴCf#(Fvx%Xf#(L4`+ˏ^y#V6 mf,Ss.k`ONK[ a 8l؁{v`PcxA<@a*ư=E/`U޸huc^"t+EVI P]>ʑ,w"'v=O3GQI2!P~f4ˑ!,FHH͏܉m#4v8g,I4ĉ&qnasaWI"VuHW"Ny|Z.<}7{=Q;7moy9Lw\'4^<@T >0j~.h=6 ]}+Q~+2XvH6|?sw*LUQ|"m/"y {vu3NUu3Li-3d@V$ZǼQfDs' J'Vip0vzVh{ClE^8M|eQP %X=1s!qWђ'3Fje_-q Su,ڡߑZNWjdń)v)>N,`,w3LsPFР>5SLaI($R!.Yh܉Q1.=ŋdZ߅Ppd^pJ9-l0ydO?ݧhtr/7ڊ&RVi ,)izgZ5t̫*}+;bc48b9 0ap.{u^sQy͜ASIY~`Hzjn;K`Oo]׊Ʃ ҅)8'[߶_XV*%P&>X򀴛NJ B&F$MPX D#7*<ST c$Cz`:WH"@qsYg9V:iz,{.P A$B5S J (v%@+USb[a&8/,mr'Д~i-lXIJ`9U|8b=A=z#8ai#:J7P~.ngд~ F]sL7Jg^<!}d7 fCݣ2/N +1N0Yr!USBslu`f%d"#ujVoe#`Fvy'+=1kDV{Y_҃Se:٘~s"!͕Tt9O.097 }3Xz,EHd1Hg<' WVw5q`$\KhغϜ($ؐA,˙nܦ` Z/ef%\a oHX~/@Tr8I$F&3B!x?=5}ᴗ6Bˑ38 Zw3F갬 B%0JH lHI5( M qHˬv -f, R&r.$<<* nT3.ύ;_q&k0L6RSeͩmeN8%Y`knBs9Ae+WMF"'WATs>z-,-1 ԥRz.5ʖQ6ZS_,͔P.SXdN09zJ֎=>1ӧ_'U;Zѐ`y̟[J `%n#ٜ:03|;(*eXaV WSBH'3k}v@](NfqqOi!]J 4 HiJ be10Uv{Н"{oŹGƲ"o\q?׷g;KGA#K'.r]2" ,CRyVF27ٱp}'@RXЧ?;g4Q)* -l046exK|0 TWW3֗$Wq)\+}}V*c?"zaY:Ҳs,GAX뺳lpW:qvڋs@ީ`A˻Ӛq[+DŽjB{ShhlUktn17%%dX]JTu,9`a3-˕ Ce,Ң23>rnxy,2{c)F,~bzSybe9ToZq[u-"Ts [[ȋ2cy9ʊJl;5Jj8:r,#Z#Scaq%Vň->rA=1걎2.1{~5NY 2>bÆl Ynn=4ӡy]FʅyoeD0~@2(]2J,3VRHpdǙ8%s%Ԓ\^E,ҮSrs79U5tls c,` Vت^17͇6̃dBrn*eΟ DVJ2HVddyNWmڊ\;xݭI=/ 1U0Thdj\kbiӋ܄Ô+S*R uD "8xaz;ǂqD~8Oe;+&lIMs3}U$u4qYb(P%@e+S&ՊTx6b(2%˺ FA'teMe݊E6McǼ}x>i+VZYS4?a{B^r bQ#"9ꝝ d +;hF'&U2RzG3 9-TÚS][P`) 7$hɅ(We\pv6: 0m]K9>x,܁̜>$F°K+=jKvWKgnV!x}2h9P9Zz.egǕQgta;ɚǸi-3E~%4\cۍ`^0\=J#`?wo7@ ^2ҠBZ b|F\%8ƁomS4q?'.&qv.~#Xi)0EyO] h@PYo,J9 R2tHLӿ6ύ`ǥ $u,S̓E:ƌTB'Z<`7HݘTH; 3cY)q]17"-O1X 9Q[\ OCD(",O!F^W ROBx"b{sLN.|OeR TR&mXOydcX- [ߊhv;sh#4RګsoAsxZF "֓ %usaE[B9.u8]NCebҷW-+ 6bZgNgX{Pk tb|cUd Bs~vToq|"gcY^=)0̚k=;[qJ'6кN/.^0F\YaA0#FXg0ҴT @~҂udXLJpC1O yگ~S bv] & SlDN}Odw`Ά,S{>bȞ sN?1/+/2ē`&dLThi e4¸\z*!Õ@`a0diыK 4{(Bcߓwd YdUc}bw( {[znSX?,hjfMFBdt7NHDw4* B"J%lD('{7B3m0Ϯ+ k/P^/*A-ey"W(1qE q!_ce\\beQ~ c;2Ҹp},+_ފc{TdNGiP>=g[ fK}uL48n9̍[,ܤYN Eɫ^iPlKh6lci+N|,Dzf ke?=ꓽblQ>ؽ{ݑVEj{":8d.5lmV,]TbKvAVj'^2#mQDhBf~PX:t-B邸bL]ckq{6-YsxޡZ B#E-fْ%f^鱲`#^/ui+ ̤6tWvzmu'>72ȃZZJV X)O9h>g*۴)c ﷨-xY&:1dy:޸\rԊHJ(%P(mv18$G?$HY$KE"/|:͏sݙ:m]UO=q5`d+ k3cbX).\^N(-Cc %sXs2+9$L&ts-eQ3Ch@99\Ψ|\'Oې[U~-' kX#vl6VM;Jt (9H0FH m@ g)(V:ipXeH'D8)9 tB\=nf'+)ևu>A>Rz=NH=q"T(,>ݲM|MM{s@ 5=ZDH0Whʧ`3[C5 {19H [}7m9B,W0 i51%@͈ڪ}l;&Y2zenaTtgfНy3;cs(ܶy4@|ױrҷA7XhGj?z;\|,)YJ1] ;,R*B7ezGF0;ȱªue xX;uĶ9"ߦ݌D,5AY nkOgcY9vV'ܐ(kFFyq~s=dDúcw xXWF tji`&}Q0n_glnKctXvn"ܔ1Y@D0bwܲ}&@gJkêig?nhnW%=mVn86xoLZ65&}ݫ50Dcc6ݖn,u ;!KU hЯ` pi4tOЭɶߡs"@T05kzk)7Tܼަ5ɉKP虉}l=6Fi%M 'MwMZiʦծk74*` ;K0N֞WB[x/%.v!!^ѡ9sd FmCC;k;YqKNırm [#?r]GN9n&\ Ps,Bc!0e QD'9@?ȣ{r`:7DX|R$ϵ}JVZ8 U`}fu66S 0 Sbx)Dl+,+<@ۂmhaȾHd#ҢƂWB5R pmAҺB7و~nCt[I`<:*Q?x49&?{z ^ teEB7Y2L٘V; VȆ`b'6,$G ʄa2J mZDC=]neXh֏,)sDoet%`۲K@VxIP`n(i fu$9.ƯD';{K̳lLq#yԹR &CzMp}FkNſ!nkM}žhV,؟BDlC$n63tTeq2P"2"$}h6f%Pޖ`e9Hhƾǡ"̰ V VO= cߧ W+JPaeF VNN=j {bmˁܦcNeY2I}_ƌ kaei{yAY:hP-7Ge[$XC;D}$+\%D5c$+{lstk~[蟍StX>1Vetl=ۈnXp'Q@sX |N_2l$q!FCT &vH0X߱lӆydq9R3OnG=uL8 ͎94 ~þa5X'nEQ^#m;kAB:ʺ-P 3'׌['=Jx`Ha LsXo"I6*7ڛlbnH<.umw2tY6n`ur=t9;C vjt[$`Բɦ#=d# pVİ97<]7]9&;at-,F4GwV;VXeK08 F[,emSgd۲}eM\;QDC>0a=19Ic)@St <1VUCִEwd 3g X*Ӕ:`"U;@m+NZ'I9BIioǡbg`z[.GWCLM&SaR=+e=0wXJ0ksʱyn͟d,Bt |5MM$^3i!apq˿R3`ӑx\R LUNkFm i@NaT[4Gٺ3>V 8 %p+8J`k6iݜRL.sɲYkrB%^]5Ή5)@/٨qX7\f*T2rBn`=Ӿ+tr a ȰP,P2̥֓vno^ '9(g9[a_vְ}9_$ U!udغ+e8Mka=˗E̞jcƎ\0ְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXzx|ݰ5a%A)@vXoR!VxQO6q}Z6 }c z$<3v}}09qn뾆 }X@sX8!S 2&=rp}]Ȑb_apx`$XGB>>U r>%d\ k`B(3tz#9H nlsXh!^9T8K 6z]3Ŵ\DsA2ZR89FTK+G+M`X4͇JBaL9iB]`&!A;fQ{K陹);3QYL6m Ltag{|I4ddTy\6j@sX%!@{l+9ǁn#'n)7L `a 9 imw[Ӈ=]|Pnc 9! r捂9aXh>!x@ C"!aʅIš}JWߊSnieR*dO@s8=Y,ioe^Թt.=' >w/g 6)t;p9c b!](cD$ um!wfb2uH#' dXh>Ra9mMyX\ֈ/gz|`9Lck7?4 ErBʜ{?{n*Qa,ybi@rb)r:W" ه \CE º>^+c8<"|U(y%K`Ync[}8k`%r1sja}azt/$ VD[șv!)O*S,|1t4R3Eޙ5}C})Sy)L,aߩ|dޔx5{rsWs-5w, qH/)0'Om/b9ۍTNno.{Sش"( C}\p Px|?S:\5c$.n6>=vy<9r;*pQ{Tw!Qwb)&tÉ+HC2VjLI9NIM\pLs7t6}'XsCXwζbCBnon gX'!:&r.-7m2 R&H65=;V>|,o3mMM$ xHXJ1"{(;}],T!@C4;X+qeLBͦzb:_aqO1>ԣ\Fs1SHc;G bXhntlRS&a=$ɧX)L _9v7ϯy>wvg>ۅ(79^EMɓ!>V{C/9q3ZRiEmo o7@۷[#=r1a|}fQǚ5=凘$G_x5 :^,ݰ #[LkL!'g$1͵biEZ}25ǀZE}0Vc71)ŀT&0 PB}lvIW\M^)I |>'݇Sq6TX0󁥯 [A*TWחqa)95.ScmP otqꦒ{4ϗT*$r@ΤFddQ(ޗ# 1U[t1W#K4ҝc~N»99:'!?uCGTުo~H<و`ʍT}MBR@j;.Jy{^FG@?'4 IMDnI0HZdtGn[PT*>9#cCl}ߐӞvJUQH+>a M= % Pxq':w"cB|Dr 11RC ;Res9Ze+2@-ĩF|Hh#lN%5!*ΪRܼt7f_t7{WEhGd$Sn+vwYI͈oqf&s9TsZ!,sӞBx̓8-{̆M=&QJ@T1zހ =1ffàӅ4X/d15gFLOx*T&"zɁpnM>f, 1{ڷ-SBdFB.nIxRUsDt_aF3|ʠC":*>p@%6[`~Su IPSJ[rsBvY62X[, \ aoh>$%@x/}71xܶi,9X[B|Z&gH b5~QVݼӬ6zM 6cf]EFl76l2 jHwH͗(ЫCΘM|f}`|=@;~DPS^ʤ6JU'= JoQg4s)ziQ{,TD̹ĘR(&g*59)y714L3κf=/`41=hA,&R9:*n*^_iA_f[\N[ mZ/ K\Hr(CeL#=b̾)m04\O IDATV" UJUM:y?+vPVbDæԳg_c찞-c~SN"b*^AQ}=e![,u72B}=}@a6Κ1ݑr4^E6S uTh9&"sxv*U}v294d]O7s\OX2"b4T9%IT ,0sӕ*ަ#Zs`N3`oCFarg ^r6c:NU&;. JmYz}fz|Y`j|f^= 56_~1MeSitem?B\= 04<3}rSaIf!IrSeQF(w8S݆BgMFPMSצqs)g4\3bۘ"bB|O,^ `u퟿\&|𒙟z#m2~ck>8:O?积L2~4!<пc{ne>4a;=@=7{sU=c2DlX xfHsrtSώGhH,)\Fz`ښI<*Gˤ~VL@>PFpĀ3NO>T:}'EBfd1` m3U=Ԝ7UZDu1Ze c}19}o%P9s*uz~קueP;=re`>+s#&%*H%RRsBzx[q*>[]8!U? mOz~׬2R$5I 1ƘT1hKկCԳckC2`Ct,;M1>h`9.1 18 } T$_=H;[g.<[?mI=>5;3in )RK`t}.#L'3/|}<>/R??fvOX|X2_KIswhno6&;`-6(~#+5~1tx{GTQiէGgw> O"},RR EQTM .Joڃ~2rM*GN]OO>oO;g9apun;fOHfp F(sڮQ׆^W IM<_T6/\N_#Of䨪^'}r,1tr@ !f |,> 5t3%Qaߠ/<= ^&C\ ?(RHC?}ss '5TH 4qB ,?H˭K7v8͏6!x.P%[,b ]iuN eXL1c@ r*UDL`uax>=FeӘf:=@i}M PdgӸfo?EO>WG`c촜ݦ6M,S)m҂L BX/LtiHTl]wF9y&a_y~VnzWʩ.9S*?3/4o> j}fy/| 3Vc,!>WyU`ۋAU]"Y/w|J4LE)2K7lPes@3[ƌ8Lp/tQtY/RFfbShʤI QSLKT9L/oO31MW*WTS!<܇>9!xt2fŶE9NT**Ul{j7#XQFר'݆>z\̒Z@cUU^=.S5%.PYx(\62@hƻMD>5!q.ЅǶs|PA32R>9}H ʱںޏr z/؜3ݠ>gG-^/U5p$,rnx.]',}a((^{0Lxos]9y5K(]֦SHyLzhI%?u1P|fO(Iow-aj@Dk0?mxqz4-ɓkX Ȫ:@u}:,Rk 2Z9!<^龾ik7fDb2Ujn} )7&]7 pb}[2cFr [uj ob4#f05)G| F)ۂe9 H1 3 %Ⱥ?Sa[McH&JVoj?UsOs2g:z?G47I1T#ޔss7WR7'&O} `10A==F}p up37)`&P,vs%@eLPucZ}ƒC1@M9{nbɾG ^`Ok/3sjd$~t N|Ù'=@@ݧNѯQG"§CO+(.O&n>_M $-@m<;UڟUUu@3~҈|q R%!` 1R >I)|QhbSs90sB܉1-3,zBuzէynTwS ^^OJuOgT? `0`p|>]=`8L7 1NڻR>?^v `m:<X08\Y֘adiNA%V[$_j_:/&h`r48lNV=1%\Xtt 8e&"}~s[z'Xba谁k0G)rӈ\E3h4ZN ViO,O҂k` %S`eU%8B)#I!3,ʨOQQRs=3](NsMLH}5Ӈ4s D9XPMFd ɕ] U>˜b4+ֵ1y$?8˲h4Z  %X$0: yCVt;')6hj6,jCS !м@EjTXg>.f XP>!=/=L 6mMKtJ0PNg|Vןy9ˤ13L`~zѭ`T,-8Ji*ӍO~!'6>ԯ9-pEgPVn@\VYH&ߍ~3`5;70Sl1f̤5kR9pNJ܍}M~3h/5F>sZ!gK(h'_Dvw9ƲE4M<3&33 1]l1cLj j1`^}Qh-0C0c bfm5hp삓/Q>2ázjUUW~ W;_,Ooo SCju&!/i=W R֍w^_>/.U/KlA0{)2K5|)EnP51| / b` gF -R %"ʴ=-h_,ޠUn'Sf{X{ GOW{S?g?@-dd[3yBﱉH{H{KfN&e)>YU&XSE'i[מ0>w#~KZ`ݠM1?sx+hS6(L7qgB4-X؋؂e&fx^\eBc ˆ!x_XP( dg lp gh6ArC]|l-G> /EXhso.h_B埈ޱMۤ70p΁xc2vsRᆽϜ:w׈``4{ZChM+:|9]K+K7P|<wإ[&),u,Jy23emp4cb$gO[1, k6HdVy05l21 /xԗ34?i{&Tn5޿`cYsʝ5o-bS }77Ŧo5٩,rB!=P sw'$.4bB2HWԖmڢ:@3ckՅ cԧNjӃdHgҲKeͿIZkcP 5^h hxZH-^Rb$+  Yngd}7Ya V,ՆboJT@1Obkp\$A *`iNn} )3w.OJBWjް\mvo<U+!\4hNֳ7!Ӊ~LǽؤMk\j4Zfҵ^Qͨe/c4l0Mc>(;[1ϑ8S{s4̡@4\mjwc%x*TUl|h?m~,1/jO_L1LkXKGIK%,-@6M` cpV|߼3 ڠd\׼2=FΚcI )i.1_< -(w)D[ê>}'=u>Q6/RNgHa~4 -c3XCC9xF|aHI/`j)sr4Mc cµ@m]jgNkAhh^O;ߥwMPHYǦ!L5&Z=3+`ID"@"P*ugI{M%P"% Bg2  SǠ`8U'v1%xg9#=;vL!$TJeΤ>:e*1m"$}17?U0JnV{Q(3FCϧho[ -!`L_?L7`1xxHa=]P]Wr(M0}țkȬN0~?`T#DJXZ|z ?lPF>OMJIlx 9ↇ{j!!WSdED|T `NlY46GE>&Gr7S64w٥e.` J:>i6 r`tHX(C],r׾  }T#̥i h59RIJ0^y0}{Mb67?ffRZNY+LDXM P^3ة JNIǞ{ zԹ`bt=;>h$lt-,ӗb(t"d m(4 tAfYAEj  \&)c!W ְ0O<O%=+\7z5-3; cמ?跒t4ƨ /JE`cK9RTG#w!@ˬOj ge۝\?nv0eL.mE3kwKɛ./;\GN8sl= @Ѣ_&4mo&@>Ճ}s)x>)c( ~ 7`P*XWO6F_*F[@79B=,C]ŐG9vvcN^:& |@eXZ@8 n|1UT3ou#FjW^6B' bL[ eOL0 ayw vٖ'iZ62?L5_|b!@SNq cfEޘ-RQ' 쀰6cm9rS괾[ FÐo %ߢwt#DF|+$Y'y-== kϵW ؽM~cO}0 s5U~ŀ.F9@ޕI9O3iQ-3u }z  <m t'v!1~r}o?/Y}\ѾH2-4sp(w^h=et LOy$tOtITYnx}2zɒ`N;EoH&aإSnIi ɭ#ӊ$hj ;kܠG@åTWVdK$m94`aogƝ Fӂ*̦k"m8_c"* C kȎJKlrDNu3 rI [ \xuu[;_Xwpb49fƧY9rlxbNܐL2 3R囄nΤ {0 G_*'S:wh¯xae`jΡ"'`axr2]R00#d2] ֛1RФBJ(]y>Gz6Uh*Fbj-S|v965.#L F̕93*-.KiPsc 70+ "u~uvYtկMӠ9=99ieU! KM:^0Du]/Ci33;W1 ]NTa|| b`<2"b.goMg_gWa`9#i@BݮR8bF:4h $7]*VL>ifǷ"l3o$"Ȝ>/6Ex3trO T_X*uL1:ۺ{j+yO.f~ }|Yf(,qGS" >ri}ËmuP) `.\DjZ>9.&J@a&eՏt%XJ\:>iC9\Vް0 Y)_"(ul"V7t!ƙ(פ> : n63'R@H`gpwؠeg(LKzJ&f'/FBoZm'(E|qB_y!5"P]$cq*L04 zrr >Fg b/`'4Q0o]| >GƘ&C hf1 g2""E6ap٤T}gG7>]Zf/'}a MT9ɯttsP퓚ا}/zb]U8rA0\__ "q[_ޜO{tL0-hBB1m;")x4w|acH[tA+ s̜ضR)=0G;l0^Ɩaِ@',龜g&w),j ^b0MzAd疩 r GS'w8c Bf@ 2{sʌ$5 c qvvRe}㙏Ivऐ,gLaN۩}XfhFyYL&˿K-ӭ)n5}&0}j^X[dv*w@٪4>]G7$s)J/HI G| y %:-vIc)R8%&P67LIT==z5PǪr#WӌF!O4Li7x`dK!>T h|m3St:Am"ef(]t:eY -`*cצ,H%:Y016p+3'Br,Cׁ'׵)'ܪb!]^ƞvjk|9aG "8eW` G9.ILGMA#M3͜R$臔UE3IZO夘\}NhOǶ\\?e^v[\$s I3N3;MtN{c41f_+=7%. M[JS8{?ÌC"| *68GE밯No"fGLGR!=X`q'gX_gcWÉ46(vx[>Z=TϜAg|@ M_2<jrdj2"f>]uGn)9nX~^LӊEg6 cӣC`|5~ [o5nhUPk}5P^[`lp #1?(zhjg&cR8O +' Cg}F4ZsKSC8!х24Ĝw`S8]Sb§OWu !5)'Dg vFxU.iNl^kh|aJFKf*$ᳬ'o DU}9zwv EoXYrc=0YI`(hA6Hu%m| jOFcFQZܐj֚BaX\۱,J&SH*|BDTH' Ք"jvU\eZ9kYN1r{eJ?VtCJkw&NFTqJ7|4C48 m.8SBqJ3tdxw:q}=,}RI~ ̱s#HéDx7cNj; ! UV"Y7N9a}ӌ|@:豚eRT3ɅD!Τ/z^KT(y5S>[]>x{L(F7myL[\=ǧPڋ۠p ;92VOazu}Az-p\a7fCJ8 "«8i ٜjr Oj"2 a1=*s^x)FN5:bB'?Qח[?~*`i2Q'r@~`e9c2NaiK$`N:c&?oj 15$BQ+Tx Op NП#` s}'IEӎ-wpZ$6H.X ke?'+PX167W Wp=fNN-') )@f.$>a@^_ӐJ˿,X>=L\_4$Y[n6j4~`Z HM!"V0jk)`4Sv@ D ++sLxJ\gBNRݎr.(C0Z9)`=lp꩒}!fo׺I܀6bqc]7sP3f2403?pL99c`88SPK7߻, v$:`ꃼpM=9Scr-@.Ek:e,tqt1wԉ_/cоF+—Y7Ϊe Rq ?  Z0刉'S b!Ģ EOAW.Q$d Dx&T0 i4Wg^?=74&x*3g,Eb cbJR$!>3ֳ㘻3}9ғg{~wnt60M۔czܲLHBx-hZV9րS`d?h`X(I- (q?$L_H*/8x7v-4]&.}͌?7M7ވ^i7'[UF ћWS1Fm|m/K4]p fpFfQ sʗ]Pq#"=a9-/Da4t=[fjFU2I 8 5Nkmiu{'z?" 0dsar3|'wqy?3BCTchaOG|Lb,H]^>usלsCf~b AdPሯiyBHr@39C` 78dzғ{T ;eFkezɈ9irH0-`!S~cn>5pp`k14f {sh 6޿?I#|%Uh2+L1ǜa&==_Ϲ\N(Ni7iUᆓNP(rd= 柣bTyHG]6T$$Xxm Sϭ) e 0/"QkW*x⏶s=3/2m}yM`{K)mcDc/3!; 8|vt-9cT g&JX2mLXe;pqsdvQ%[ KUPٟ\g6eHUfP8|n"9L34-TsQX͜ hm^TV4})Eϒe6`AaIiӋ(%%hZ-`߈RZ?MbLBqP9@9r{v'dpm*c*XIp*j;ief CBv AT F3UB 1Y Čl#`;8qʣOt'K*{-L!UW"$g1^i,ise ]Mӭ ̼2Z̈́_Ҝo%&R ]`M{.~Y]>MaPghVE <4=/Gfg"\{/^?%Ĺ6ṢZVB@|ͪ2͈M7˭m& 0)b#9 ?9 u,C5'K7ܗvMӶ;K۪;q#ڒSpݚ?˒H8.Cq q ̌QC 37 ^E3AMM1vVMﱺaEKr4Gŋ?KcTSXZM% sq_E*tiw3ĹH)Ua >0sݛVx9\K <<"Ϡ3 :f.Z>P;I9oʃ`Mh-" G!n5 mQ3U@.tCs)4ZY磹JP`KFlp~{Yʘ;&ظZ,{ԝ,A SedWp > ?r3v/$j19h\"xyTUJTxls}ݏls~DwQ_uIBq_)e!S;ۈ5 bk(衾"ے*rxB?H[/X =3y>m%M\22O^0cn1#E r93Lu5mu̲ )OJvkncܹ-(=UR#ގ?E#вN_)h(wxԝ[^~^{lk@ԱWDxe@qs# c0HU!6n&k-aA؜9#6 3AB]UPe82eJ2ufdvy^VsSnM9w⹵K f0%2;$ieh|=7w3s4_WWUp} n.t:iJ/W7 beη΂\\`/sDoL,4T[5 SS{kTLB׌Ir6dUU'4PGs׍ IDATA*"?RJ9 P:Ce(2//aw\TRYlYz(ʅ31ɰ0\M_SW7ݗIfa\>n|9@2y(wYd ȓ@:^e\#Rx%~E#L;(n!۟WiZׄe區eC Of:̡li]?ME5w= !Bh{VP>LsrA*n p!ɵj?*O_Kts1&O)ݽ%`J5 ,}y|pM!'355g=9@n~mJgU'ۼ@Hi*~:^ѯj~j_"y'cs—~J"s. }/10z Tkj6d xIMN #slS-&/ZC'PiG'W[^Tzl /хF*$fLFbރCȪ NMlRD%r8c~kffiP6bU09+(s~faydm~`jZޠ=4smG7 k,Yܲ<Tf|7y90ǀ"Raj ʹYy@VI LKq;GwRZ\pTM#dF,SV)Ŀ\MlM)! l&sct%朓B=_enu^ bYfK]'ר wl~Yg\CбԈgoa"0ᯂ߆=KRJ t-C\X<sNϯgQLA ieTA|Pvj2bPn!qP+-(kM;-PҨNȚwKjo억Ƣ{/;0Vdٚx90ΘJs=2E$`h<(|Cґ]N6_Jzrj%ۀV_:L0u,@Li-M(U__敧1 "Z\T S ib,sֿƎ_KJBf$PݪJJ `f1<m!'1VʰTYQX/|8)g=B5Y3{b(2tݲ9󎺑e7? gsWcRvv|H#&Aq!9Mgt_0[#=:UnBH^l0$/rnIc]MAEW=\$Bw(1VaK N8'G/JQ]ߖ 0eX%L#\rѱK؇,Hg$ͬnsb /~\:l''jSP~O?\m5OmRz-c^=3ΉIC.x.=VǜS5ӚPC`jC1RsB(gcDxNkFݝ5H7;#re<rk60TFK12y{(5.rF0GcOu-h EX(١L(Ve`)ze.:;x{| <E&?wd5y~怗f?+ORew[r(1Lx>v}\}FxgHԜFbԕ<9-gC- A!fȥ7eAF3Gˁt<[-v1yiO(-\ݵJ 8$'t; <W/Rn%s)$Q&*9>O㟸/gw˧G6H, z*BM{{l|CgMXkI*gBp69Mˢ-HS )[;T!rn;O eXþTD (XD> ^2&:4\S~b{V+NvKJ Lx?ߧBJ D lr )\1W#sAKPqswwd'_Eȅ pJ#ָeZ+TSʠPqeVX-V0Ǒ4/I^?Ux\8,aW幁o;ȬPo-.*,NDSZc[=4_2\ Ź<-חR4p׹8e[U4+rX?ƃ1BR`lEf)yJh -  ;<5pD!"W#fN35P)XHNpYMM71%C\S*?}c͇#;*[K"0iIᑩ~vcXj]ք쵂Z'W^&U 46r5TVk푖eg_d.WGcE;(7s@ZHu }-g5зfz8rF{$EX%M]k2-qV-iTG>T 410ݼqdx CK&ewpr̶􅏛2i szۑ2Ვ &&a]QJ3G,[&dsS@~=sbHVzEia`34W|붜Y!Y {eY$O@gms 1O1 αZve҅r#@|Qa?si6+ŧIZ K%rxJ#J:\SjH zF sq#߆Ųv^614idiY)Ԟр|`ZGȜ b+,0qcb.sldQKUߞ-ߟ*>Xup=_uYyPszuAlD^XAEVyP;m'HyqaGFI7n-Zu93"4RٓtC:1RuJdayf#0 0'=W5a49!<"1Ur%[e?PrM,m$Ǭ-w2gD4cer<ډ2>LaNT7c2eQUS= d5)k6RX#~*Dv1akSn$AĀy7.d>r!onju\BPjYbme=*z?D#~f†jWsF3,KQ4j\Ng -AqMnv~ƍi6B泰pZX yXUfKbJr&(EFMOfa0~[ B dTg[JA&fG$}7RQȑuEsoަnZ~BR ہ=E,3 oDR# 3(-s*f%fBnn2 QH?7^s8'{@bvPe%PfC69w,ҊZRQ>ј''טܥ50 whs }ѶoQ~;K][fbNĀoj]% LN3x&|PR 7"<]B$J jsosi+I@"7o/sͱ 8l%=!2L[$cx NbYy-,3V1Nduh<@A89W%U&6O9n0/7j`Y"Nnj-2s! JbMȨPTX%B9MYŨd?ϗ:s ((`u -)ii-UMմb +/֘a`-Z+q u{Ls/-N<94k3+2;$b^7N`xsΖJh\qGK,Jߧ /L6܌H4ym  55V&>E Tn5:U-4= LE}N N u ԁ >;bI"s.CyǤR[d)lO[Rfg@F| #@E,e`! r=:9PQAOA)PIgMȷlD|\TCh~\1?Rs*ք59\:(YµJj xU 0' 9]fagW*ZO5g0oz3-` !gˋJhXq.|hu'wMҕ3G*Q_?< U 1Σ✝ꥴTfa^9W+$g9W85"DR c\ -bk5yvF([\[$?ۖbͅDf=kD ̇DdnyKpBuZuLQ"V׭|Lʥi3r8(wWG:NJ=eZ *" 0:ocOg#l>`U pEZo 8jwY5swR%w 2SYMM 4kS@ϛ9߇ʨ6=b;bxm.t }#pE 9̩MqNP;:Ze[V.s2"ӿ%.$xkT>fH^g>lM61>34B_n8ū3R~jy.Ed5<1EyjB16p2 C~ vcߔJCHZJd*MS6pDjwMn_S-Y[,r}c"熀CAXLSs'1nw?\#*srrUKkZJc"< ~VnN>D`rN-?9JAH2Q _8Aj4ʤsC+GD9n.Szx!:g_/v pPtNZM"Wv\;2iOqz-T~JWW[Z ZH];4nZ[~pM שDi×#\!C m IDATgeFAI1WGP͂xP*Զ@NShe&r'=7[`*sWLV2b.6'P^_(gF #j2װ5۵ 'UUl-(癖(R 8e&X%ă'ss!<?*t=wK}=f'e3ތoRT]R ׊?*mص@HTc5|;'ͻ]Qi満P4tk*DK9'{q=챿2MЉuÇ'DTKR΁mb[IՑ2풳/D_f ;W;9n!<5m;i S< Y֤6R26Hь`ق+#08?VLT^V5=8< -gz\'|E =Ғ"fll%!`(sugu=kO9xHXS^hW.OL3,sL1 cpAV.ώ MaqF5՗K`tj3ׯF` SwQ|SFUbZ"L ~V[R#08`_H뺍]q1uŰQba^vX5Zѫ&hVͦD%Ves>=ZE+p6Q.!A=Ӛ A \Kʥe@T-bє%a٧Sx jٔ!y,r f;䲀3c[a9v?!IFRл==o{ݤJ>kwx(jY !>~R&3#7szިH:ی#W+r//p :ғ%AAPa(U$X4ppwxvP)V@JN٘uF])WtSaD?=_\dcL~C]kěS,N<|-R&;:)ChjMX-C'"ENzE@*6!hIf LQ`L$b}vNP~S+שnh&_d-mఝc{:PF%?I"rȓYrG5؀N-Z\#"܅)GXg5z*]NyϜHĔH:ǡǮTt?sFc8~bͬͤ y{I$ERs@-DWCGl pO%m%K T`w<6 M]zbi 9t݊cL25Ď=>E^bGIK5kיe4{׹1j*YcùqʵhpbcNx}x8/mn:Fo6FddI6g]rPKu:YieRN&]ܠ_!K"=Zjt{={f|0:C ØN`1 daSphiTK$mQC'5.Ɩ#V(?{WxL9Xnf $J{@ fD$v|}^3:FdTAkO3Y2u k.`㼣aUr=Ür8_SNTxSX[-1ZǠR"\4J 9&;>B7L Hq9UYzfeB La[Yܖ#Yd.&I_fo ,*'Jy P;V0vȁy~wn(wn7k^ز-dQ2'x ?J:X ^71gq k, k{#ҩxݚ\g ؿ"cîhϩpr["4/̂2D[dKsdJ,_n \9a A@k탑 0N5%Gb3jW{G_'wgZf D3*rOR~ ƭc1~dKGf>>Tafk CքZ[[4xsو3[-4"3 *,m µO9;6jo9ҝ)K,/*fją~U2 V[Dį3SdJDQ;T - )h89/q]>01g$(W+r̠0t ~Ը:Lbe7 !R-#\su!@S3RA) F8۝ |)@6f 2 U{?ax ,kc>%80XTD+JRrPy-0im |n @֊.kSS,JM34xXGE$26Bګ, KջWOI5}PP->kF"h̝rvCNqz}D 7~HE|$T.^STثQX )ZuFP.&kʟJ!LZzo2_֪EycoSkvM>s5Q/7&%@ϕ/iVgWǗh SR7H X)֋ދ K= g-LfU*zjϿVRiPLY1^G?fЯ"vuw kp3Nkc9 cL,=W;L:c{;[(;[v;ePbqMnM CkfJ !`(_A=+a@Q%.,?gI8qB%{7ETO>n!*Nf_ ❄e˸U,jy9k-J <]}/2-1 WmFv~C6"* rĮ$S`lA|K4F!C{.)ܚSC{s{c2Kc6~{24W).ݳ1{IH֣;9CtX,;L=n؋*tBffwRmQiy.zƚJ֩ˬ)?KXb(t1Y gVwMd/])Muh^F((PM\x+%j⃕BtQGf EQkp=7e*%@fG.9R^xiIE owO%70@#?C/ʡf*\J Z9z]))-}h+yx377MLb Z&d1<Q,; /ۃXϭ\UPsnɾr,kQi=SjU]S_Q`vڞ%VH酻B\^0S&SozLm !}#?շiPN|9[Hca@-~ύHL^{oٽxznf׾G'ʴs 3+.T"kVhw^b894tg`.J_RSBu"0>;S;}cyZ| ={{`p%TNb.Cq/۫H=Bw"RF]{.x^ׂՍC˰TzN)urn{do=F=m0ky;pשNd"G1I" F~9c<[OataJs7piV6]>6nW_CLݖ˹Yfl~#1:Nd3޶lR% Ba@,6GN3e=B}H.x&_QN!ʁq߿D/Df&L#ÿD%Br̀v&s9o058z=8I`n#s5Ts̸ 7sTO.b]>{^Uwjo0M[AD/?Ej L*L &ݼFA1K7>. =QU?ZײJ DJD&w`}6>P s#X oӿi Ӈw m.&SJD#s*AQg DͰJQMD?M4xNl;k5*]rkL?hP;pU&ɂ3wx6(NVl!|{ɉ==,R AR& O[Fs5L\{1%6+lмdq[6`%]\Rm.2FYb)y@Dx 8෨O*5j7-_A&3^yةeyk?z6/x IyH\;x%<N@jF [w^haC=\ڟsHk7OAqJO6o&=-'jϯ2e=eo q'^4c{/jc|ݖDɠ*8$2Rt@Q93$[@Ga%ٞ1?5c+\<P,e"|}fyG939-$0M 9*=7?:v(5ʃy<DCv߰u>tY'+xv7msj`, $shqw^ܲu9Ab_tt~VŜ)#0CEAY{.XWY:F`ߊ7* ypAg.- ki r\ sS|N0^Rrj-0/\`'qXNةiK>akp_i?-F |'$̄u~8dctjIԜ= 1o/@V?b-HKX:cxsӴCΒ2px3T3OC(u V E7}/fǒhM~jD]͚fx*pRlr֘DM.p/`hzF@_hL_5 P  m:;4RI ;Tח ߏd IDAT{mJR*)*Ձ&9h4,yA;<#ԅrLEƒRsbsa}=cUFNU)s?2ͭ 0m.mB!tmf( =[=(>s5 7Z} 4gw"FfW1W\l jFx0*݆M;o8`B%!xz| h6pw#9voE(މHc/v9t!剉>5&ojW * XSJo8]n1C,Y_璻]C홣fsce'sleaz"Cفs5S;s^QJ.gqoб"/{է2TJFfhhKG3\T"n_UfM)Eųv"|-NeAh /KpJf +;3͒ 5:qrN_+Dy995v*uyr5rCP' ,>ʝ}b %@X(ӌ+hUjpI./3 -mU 1k0j5S!#o7fmQn@EX3OO0-i[ɨc'7KM"$+@1 f S}/ğMKՔGУ Kҡ>-%5Q&,D41X~qj)R.$}xzɕ^MM&p/a KU,9 xr?Brnic.-E C֛W怿o@5.E(۬iLCn>EɽRnG$L? 817t9G芶o5YSA_K%is,4e!YC?hh1'Eَa<1ۜ]&1ȪۜrZ*)#pƌר=湵Y͒&+qF-7ȡЁѳ-^F5^Oh? /-9ciJ@)\ FC<23_;|{+3'Ԟ?`/|bmdR=Πɔ{c,ۜ%CtXA! ll_w+:&<~דm6S"-2sov0ƅKFe[J'xX8k!%^_~j^Bm)foŷio a9C6")#-  0& 럅ŏeE5O]S*ؽF5S}Rfe\-@R4!nA!œ 6y"w.y>{"r^k#:up62Jhf!,[f{<;eׂt.gm':LRE /F;'^!W|J7nAJ)XUy7 pKpxW@x^dssSZ{F.,e_tZP5TΉq{whxkj2O~6;ݻ7Ie'W6"/)sMN yYLՑ{(>u](_rrhrP\S39,Vʅp0Z-<vt}p:lފ\LF|-ʹh>p̝W(Y&͆=W ^3APNAW"t}+ra^r"&9gh. Y]D R΁ɔ@f3gC'6`!A{v{ND\d4S38i䰪اS+os]BviEq!1I0y j 'uόL2v0lvŞ=xU*'E^< /:BkW| ًNm "x#əӯ4Ky\hQ&aZv;qZ34zӄvh6p^죱 7>w'k\L#0~1A#™4Чj/\\j<- FkCdE"d!"wi+g9˔4`uKaC.j:oCO3 Oǜu 0?SgE&^Liבl6s/unD`\RsQ4AM l @(%xFy&I,s:O 65o9͑Iw"sfH)ҨXjP ]  n1TQmƠĕ"-"3SbTRઍ4q>$cw>D@tHb3ݼ5\ #D~soDR,BI(S];:r!l5xװFTsڡ\䰜s\.Gfh+!_ϾGwsԴ-MuDƁ\j7 jU=wj ![0>${l0`9dEiJ]'ronqnj2tק[;^X>֌r 41&4lRlCwBw9@:LS&wB]9+8wB=qbAwiBɀ͜-R޲f6!4}6Sm}Q-0@Uc<(L޵ nNfC39nr%HoY>faϸǧ<09ǣԙb.O*l}œ5%%LԐj17YC_=z|0LE(͜ap,9tJo ވ|'$OE.3ާ{S9NY҉6r7*1GFzF9y|ȇV6f,N0NNݭrW ,kC`@z"nI!?YU2͵w lGP zN=L؟ p%uw[vKmDEv;tPQb5[r "gx7x;0M !݈BJDbQ4OuwR:8 1OyNݰ_~=>EY r# ;}n>{oz]t'"f<0̋8t+sZU㤊թdYR,ʊ F~nPP1L9Iٗ~n[!ȁ )44ۡqe(a)h6 _}^Z)Yb4{{| xPCdUYGoX9;*46<ဏ[ ?;g]H\^]JR?ـ6{f~OD3Nu9?E$@F0^緘ob.{Y';49#Ԅ@R 9jtumJ5/.DRXZdG|nG`;mpkO7I Ver~adl I0K9H4~C@:\b{^}"3ΜC B;~fOZyIm<yxǣqpE @K sNCwGƜ+*"yE.cO1 P`Yną42yKGM @S#S vÔ#3u]/v` ĉp/bsvit[`">}pjG/Ȧi=9q3ةZOIg0 3 #*`."פ LhRxd_]VZP{q' @ԥ{+[g[q1tgci%P"7' BRfz:Sk ks<6Y+w1ƼΥaqܧ85?];x qd5tqp|TkNkDFI:,Yik쿍XVC 9Өe >3e콿 s} y9 @$UQ;j˼AUt8`׽gMPYUT,nb5J+AɍxF}5E}.VCgHNRi0w`j6<ē1MyN4ۡ(<6L+t.1Z}MتC2s+6hjf,#_htqn Ŧɍo/byPt9|\oa4tU؜ 4/"1'a ^y,|P:̀|P7iTX&%xcYp+',n?ܡ)ܨyyqCסnɵSf=\jφzp8Sj4X+!zi&c57Asdڋߌ߈1%,d#Le!Y-Fe5BӺ}|#N?gQXzu6kK){v7{؜  \\;q8S EJ68%XBHZpUs>5IwlA Mt|y'Tsx3$ %!uB) orN)\BFa D Tn`"\ews"j v;咤ZXk5Jr))}y(SDzB!gjo8_p{$BIr[#s{ce'P #^3Kv( J<\giJen~m}Re3#>KeߩHoO3j6h!9 1# ׇ9(BcJxRB(jBRh/﷦8 c2bN ;[ќ?dx~LE`P\Btx ϣɰ4`L{!zr$layudʇ~@3%P"CsNgTdXXh*f((=lUKN%mga5̦K9hן5" )$k֪uTs9e+P|vRRԞpyu#`A6{Q׍VikA0ø:> ]> )҄HH<9#LC$`e|^PPc,j?J*MUk ג7ӵok'ՆYj,ڞڟ\ۑ,S{^Zc'e}'gqr9xO> !]HXv r(\cLz/mR,byhr",/U?7Ӭ Q ’sŴQm0`əBPB]ߊ 1r ٭B lP׻;dY\46>ح[O |jX_.;}Tj9eX_Q2x"_9{18!Xz4. n09+I~'F1w!#'zxIHxüy@9[ԲN4d4~@h_ K!-pN+]ǥήQ!0n dK9ps\uv;D]. IDATD9֩[@$Bd}|R_n[wj^C{i6O-wj~X ioA]ы"]W[K@eXnsbL s9ʔ&~.ZfhlJXFIżWbWp;A&,ֶ5;?jvsι͹{lWظv*DD"x$"J $OdO^@pX"Uĕ"qK\U޺usv9s{O7^\sߐYsiPܠ#Cq  Aփ,ɘPy]Qo9/$~G?QdSϓbZ f́-wkVlЖyd c@ta3q3721{] ,͞9쎱jm^r$ .\>8Ikj!κAL\--7|bzQx#85PJ}Va= CW }߉L aޡ}2q'%;fp7%ci2h:LSޘ?P% ~~{gV.=IAvsi 6Co5ƳLiL)P>L3|%#$/\gV8Nң5df$UnE+Kb!+:^x]fy63vhzd@]QJ^[ܷڷAJ>plĭUYo> uLu_z:$eG6rmEQ\;ep̹>B-W"^- ~{\`{z]Dp/w8nܵsYR=e im*jw;\w ?H⠡3V~_w.BnϠ?{˻w]Z%7 ;!D3XYA9drɇV'Bp_b3D%`N#߇#Z+%B7j(ḿ_w57st9K-m <\? Er!2Lu bvwouwnj-C]:h16*Y@Y>p;CFW]J-!!G4 Q64>DMBu8t>UdN-›:pH0]z/GXrXgJC-㄰~6+nl3`UvyxA4%0LՁT@lۻ;t B5:Z!K-1i)T]u5)З-#+Xv*j21+XBCM;Ni`ɍ '7J WP?y-uZղᜡ*6@O(" 5#`۲lb]2u PO>)ؙv s@>'o$1-|@6`n%1dK"gF0Cü݈ޛne ^餏 @]EФ ؜› M+XS; wyzOvwDv`ۊ?'Λ [lbuu0+gffxqܳQ7\9sgiflk](|3\K̖;0YYhҔ`\$B0B1ϐB2 {Wv6WF٧lCMԉ`ȅg NNWR *ra*ww.<ށ|#Ut{ΜfǘS^w2ZoA[\3*fo鍯<%?G3G[Apra}Qz`.X ܜMB%'mp]SR\_>$?kg8,GZI"Ӫ|BTI>DlPJ&0kűyBz23P?7~1EޱH잟v'Hy11s ;g ]@Ҩ]ϖ7E(9e@`"k\͙1dš$$<8Cf D8TR;YpܻMv'~|!_q4DBL@rf*Kuׅ4v 2'E.*j?O|ss1 K)8lNK5spfDSIL.Nmlu# S%I:K {e!Ͼς&pCp#Q(fSkL2ZFZʱF]LAF4[8SNF4hBL}D I8,OD m<$}0\FAS&\ZjKm#^ͅ$W;;q^}'Gʜ@cufuNH *,7ERg-A$K@*ILNd%= sLc ov)SN> @f0@,A$|FkAo9qU4B[n*cEoПo.e VSKE"Tl*D&d-?¡+Ā?'el1jhSJPL5%'CW4JSRù\!G@BP-%'R S {K9ן[ 0Jbwvc6k~|H2'r4g-C`k6LK$QQ<)C]LMJYzbX\@D'r`v #?'t֐lo=ZH+5ClطOsQ%̼n8V1rPیuf_~-/>魳zב]@Uf6E}.&G $).۩˦b]0nCxX#N y xx6[ ysxvyx qP\h1,gk˱z E?]αؘߐ^%|Й;/Ȫ?Ow馈J(/zj,5RpSjO %RMH?u$=Rء_&#uJ_ft)t_SRR2mĹ/g@X4~1 W, NK+8+,I)I3}гcl:.@4':iJ,brCƂ#HH'bJe98BCnDk$v9Cr}RH8_i~keP#=V|X *R>!okhQOI>f,Jޢ?hzo |ZNk(QAҗQxD.s C5QD(aImKJ{EDt!t#W"4_j{Ct9S7}+.2K2ی\^uV9YfpC &2dp !w8,z7w ƀd&'Bќ$MIF6v@6WJl!jh|$#ɝ3l=.ѯ˔NFwwi"|1Gv->U9CsuV'>ba4'ڕb jtK-Uz!UaS9۸vN*c҂>.T| ֠RAsJbC+:aUJg!{e2!N;#@SEɕ DD/F/l{d l>+݊73-U@GAH\E dpJ+ i@ITb:8GdmV <ؠlM# Ճ*eI:3}eMH>E#hCAH0 =Pj)(ݲ ^bLJز?=*hȀ-"Za*~kTM`1%5ЙDN}~y `#f+</o\X7N}/9vX:_'0e#KcCcj[qNpXwNJ;.gY^3@p7PFGr%"sqsE^ {[䜟  \*\XYhM@?cHg\˰X8A$:4'%PUZS7̘i3(\J09'@l<Sݝ 􍅥Ww$$r g&C Vꙭ -.]|de3R(*P35 TLKMT/Yw Me9B)GK]@$2afz=FWfڥۊc>sONwX~/Y?kn5&YzCA 7uQ}Bdȥ=9`bYf'",-e}ن!)\uB|,7<7JY,ǻ{w9\Xzf~+$+ '0GM3NRf}“KwxK%gJc_ܠ_] !K][ T&>5BK~W$@=6!^' =שY&|$t8؏ RҥX_++;HC ܤBBnZAs\B!W*kUP+= 78,ڤa{pv*ЕIF\D҉Ip@5gIvTlBM HFgrzXc[>7QL1Wb_m{rtcntF94OFC&Us7gY>E/W5i`YZҵ8Cݜg5vvzOsHpG6B:rBs!,=αt$7vwo\ ϣ-r0#*e $fJw+-ϐJ0BM5j&:Ԓ]&N馝Nb5:F 1oƐ2\ 21]$y8rȬV'VOtmZ27s ϕf*?d.-OpYu@0eb:T#3Yx_)AS4p8[G4:?:#$4xꎜn )c-Zة]c@|44Bsмu~{]D}(}g³:6~[}A!\;G"Ќo41l I 4 9/b-lsN-t07к4F6@V=;[ŐCY |dZ!lFZ1 a?- fΟJl7z*yFT+ƢTZE8;o.#ȢPBoZZ3wTݏ霊: h Gb`EGm?Ulp">+eV)& &&RZ![Gvm2$py2*7TT b3N O#Cw?— Q2g>A3'-rvBs0SC$9ЃbZ' &Lwǻj>,x@?򉦹xDD|N9^r[u%@ʬs~yV#SKVTqbƶm.BLRZXt{O}=+w|f]r& I;P00.cx~Y1cZ#>ɋB2%MKr!><#G$@{%GJ᳜l(k; NE4F۠ߋ5*L>C{ Bz/wl9Щm8V1Vi҈hc(>SB1PME^uj[_\4cB'C+(7@LBIH@fqXQ+uK̅z]%H}H޳:llrפ7t`#z~)AnbLl6G|h5߮36F鬶LM꤭82qb/Ybؽ: f$Sݨ{-Zya//ܗ`Fn@|A&Z1eߛ-].7Ґ@F8ge߸7#}GP%vC"7MHj$U0G|Bv@0zens,Xh~yU,CΨ@rV\2>]V!Bh@|M-j)tmOȖTV覂y@]xעJ?}z}3a?R:ˌ#4 pX4jٗ9I-1 IDAT!l̘C}9HOT87E(߷ޅ tiw);)jW99kɊm J#Y +j={Y`}ThJ+fcT%hZɞ4#)$-\Ù-(S 7w5B[6x$ dLC}L+'B۫XY FV.ܝ @aloC4]L`s ~Owb R~oo{K@`r$d !M4IL靜`: =@"58tݑuNig`NzZjPُ(26bgd M{/O_(Cdٱv)% ւ u^e.M8:u*zT#h>1 4, p&peƇKP,O\x&Z#݁>;2Z-wD+8E^Lw 6;ݤ{|w w"|֠J] CoQ}~]+!͂G|bCЄ)imS2iSfE.. EBI H1 a.3CΩL~&4 M+<'_bL@_N]ݽ!^'m+⿏٭C'voʢ{~&\ eD!qADF @?`ЯS =JH%0JWE>QZN^{SZF0V`<>V l_Vu&n(ndY, #4(rFAs\ NHH-062S`i} Oȑg%)Dt~r Ē}k:_ Aep3}B;菡wvTvYrq`JY.PdP'إ]Я] % 6:[F< /UP枫->Qs! K] %RȊxGseXBkY,"^qAs\du'/L9x3<.٩-_p>_\z5^Zڑ%' U ]Bl{\X6+:vW;;+Kř?a߸<ǐHjK G%땲.X‰5={<ڡs}i_ %_-+&] xS`6zXdDS}5Uzf(0|d>дG~ ,k;hצm2OXIOK rH4|p)K菛hgBx^FXtҀ=%Er}8i155>zLs\ OLO kNgȾ#2`Iy`,t*H H7jZ*IBzus+, 3Rm6"9Wh"$igF@G9.lץITz8&EX.CHH>Se;6mUJmփOxptUg5x\Zz!зtsFrd^mrJs=fx.ck[澖Rf}k;`;h=K4eB' y@VHOPo!-<0wX'@q4呺1 4~!.tš)44YZuRkҰQ^(p%A|_>%<@?AuGq<Ǚ2:r.nGFCBJ4?)А97,zPCpN|x4!9%,.8C%cR,P|9'*r.e4! sp/<(b[\C !7s <a1,tq~0{k~!9eii@}{r124}L1{);J.EF !%@ ڇ1j,c÷{(!A|2'O-mʽRLs\ X[ڐr\f$`^'1!C%L(1ٞXgNG-a#'c5`",WD&'X[buؾ~aSIָLs k(L8HV+USQ/٢?!S% _;4>5`]m$-uaNJi }J;ru.#r%d?W::>!y4}Dz8#Xy0֐ oLw|oI<+/՞de$c,tB)a]1쮤:(؞@nFCBe]! sC4.R:ʰ&'8#1/lRBiHQ,*]3OP! WԜ&Etm73}AYyiKf1Z,.huHH9v7`,ո P KF}xQcׯϵ:ƊK&u\ .đ(RM&9 /I Bs(v9edlߥy&2L,0][ KbKCX%mdP:$XcWJXЄڸ1PTTYڥatj9;P4V YiiYR*lM4m%r2DS7Qv)FRYG:4ޱjʰҁn9g,lܬغ <MPrS 6*Bȇi~ :xi*b7 0җ E@dtDl5K)9vYTZMoH`%RB% )D) )T( ݦR "12?&ǴGNLH(C2)!Ңо)4_c ץ1(a8apzC,-`8czn`溝rϏKd54` 2(V+%DȬ_gJZ+oc +Yv4j!” }3T_uSfsۗKxt!sRebAbE$Kܩ|T= %[ jc:׏ϵ LeSlL.|FY9GCaXec/4eɊfFQZ }ܥ"fձNP:"Hmْ2hNn0A=GICfŢ#t)m*K:4ŪJ m)iƓj?,ex`\ds J:CK6oHx;"Y:b^]F|Y&hVCĜ mLG-\pBg./ oFʬ#~9UÁ}2p!Ko0zsʰXdG!=*.J6Pޠ_%j8 9SB"H( gK{9NJD 1BF~ŝ?AV֖X+E vK#-9&*ecl,-.C<'Xiʂ #> )1fqHw#h>uޒnSI:RY !s1LHB\uJp(kMi!w׌=7רsnyi|I34cײRvW\P3!JC95>+wB9+ C.b-RCxcRJ$潄@YX9 k"i vXyȀjoR-M.b$u BhTX΅^SL zn4W/>D# YX⣤2D)a%!] i 4c7] _p!B e]F\ Sd֟TФ{X}q@wivj2a^Ι)Ǧԝ~ǯ'~:5(+I>$XgLw,SN@YM,5To-'IKxX@-Bo,{^b_)jMUcgA@rt pQ9;SZb,c"e( `}%rt02>C}bKc]C2 )-/ `2S MfYJm2܉.J0\ߡW([Cl46%QSr-2Lu(h% $Lιfsk10 %|b:cL`r rQS!VGa3Ȁ؂DՌ D`"fem,rSCHCLUw0Ku*XR,-0x KX1<W抳dsX !%7`*5.~vdfzVim)Ef gf01|kvs1; v%Sl)\]h(/ɐzm&2.<~p19!nG.ԗ{bdjXYjfzL _fBxbǧd6^&ُ~^egmO VnhD0fS_wɘuvqMnWw]βbu7#ߕʤ rfcITf 8c8SLk: ܬÐ3h~?0 2j~z Nd>w'\y;eT`0)"td=dkߵb -dakN32η>ƹ!%K|A}b, Ґ:DKL>E(w|7>e*^TMMuI5Fw]lp׼]s̮5`G $sD[2LUM?\:wU& 1\R; =B.͌I :fBWRH96Lp;WCvV(k̙(63qLjGkصǹ]?Ŷ Dt˿ UoS5_%YݦIh  u.ip uݏq9/ Շ' 4#G-Z, b uPr&b߱dy,9:yT܏!n7n=m-p.as!LTu0L= Up]׭ h bEaקFTd0`X{h"CI83Mu t~0ʁ @IR}q5;zd~]cm>͌%/A.S"0՚Q=Aܵk v-&sw_rN%Ye!fix| N$d%Rf5}T0w͏v)n7p99)}P dUsS~tkm&oʚBM話͒Q,T2S+@s(2C=t92ۓzOJRdඑAU]է>CQ5еf}u{'sB@A\2A=\sN臜5`zyXR' sH?2cIrie<>'ƆS#qSst?799i0k?b7\:A1'2cuz)A]Q5}&/bgwv:Y )g<\>R:磔6$!^g8$.g1بT!y%}12/ L3'g}]E^~mm]w_@cvECw \T ӿYiM3ZYR XGP)bCLHrX95/6@s* %nDRDHb2u^U}Ԭ:jU?lOv|7溥A)= HSaBo Gb Cx"[g0_կf腱H٠rhе*ZYakl[[ě F%  ٫L-!2Nn~~[/?o׋n6.$C)NJcLw ,5C 9khCL5(zճ_z߻vuζqsKX c=!d*iP(=b`p8d=PL rT! fgg^z~2;< 5?,/^g5o.ios!)LfxnӃAT3S=[zUӿ¶n`&fX닱ΔHL[-~I'4K,FI!weM3 Roj3;ϾDu+|jw5+(%YUURY1I5j Ꞁ[3=uԳkv}\]r16zwX&t$FYҖ em% wOٞgf_}zvr3U=qfb\% ]V,P,QlT\f=]BO)h3j$IcGa&s|;Kia#*2Nh<S5)}sHgCBɡH\f S /=R )f/|Oc}kn=]p%I>1UUYe 0S2Bʐu@S-uOXi(T_"ŝoõ.S3έdBcsdseF@ڔG,ck!snm̜v27wp=4 RZUm)rk IDAT8z/Mo|TOݩִ%wBC%٠D ́yUjg-L0PM39M'|<{]e[^1WW q`Y=YRnBЊ ɞ\B nL >KDӓ?1 1':tmvy]{ʐF)5Ǻii!YŌRON 9sXhjWl_-TfQ0:',Th9K!>H]k" KTML}/~1~̯]̰]nDsy=pv(! b2CJ茺ΈʉbeF9Jy 0Dɀ鲚"Lݯqvȏ@!(P>2v>~w5ūꢹ1Ȅ9$S~囧臨1~3L`v]F@wl=JSJ٥:/ = i!FH%3Wy歛;K?̷L(٥XGXe,a1Ndե@r,3;>u6I c̎g9ώdP&A:)P4(!&pbptF=Wg>ttܫ?nɿ 2"z0Ю.М^g=1Zg'XN&%zB`<]Jv_'ε95j ! +;cA <}햦'ߨ]-:oΖca)3 NW*S} " -VDTasl}>YɪOvKgR+% )bPf\8C  %uCTϐ Sa{(K^1˺M]3=Y5]9a$PeI0\@M|Iv(eq1"h5?|+2UAD2` c;lۢY;num%U$X_'}RYXczq?'0eȯR~)p>8S!z <=pJ{ϳs.& ^J>@~p͒ҡsRK2&ꤊ#UUd{bf΢Y/:+.+eDu]c6~RԌ&.j yۂ]/eq@@ #,oZ{@K;| 7` &JBAo?6M2U•ETH/e q,!a6Bl091!*NYk_g%SN]F wnPWAkGGG8::|>սʖH?WZçmv&e MtDpP0&3gsLC@=#Quc;d8]өc1 v Qst׹]c'8cv(ŒO1,~d@3m9DG(ޑZ_sBً{~vOC3l۠]]nď.T3|LZeF,&mI71㴳hcf,w#<*)(.P?',ul-g3h σTx.ɔ b(c;6.]w㛿6qꏩk8 M4S! u q: 9`qlt[7ۯ8~?D"+䏵-ŻeQ\y`g͵)PawUm *n;Ok^' T[xZ,cg;`M^%}YĦlӒtd @x*| N,mI bS;SlQeL}/w\@E&0 b& 41M-#0J0<$V;>d|m9gŝh{dR(إtY%֢m۫q;6->2i|8# JO( W@hJ"١H}-.*MP8!‹0 nak Tw*dUXDul&GqaTM ܀Pb4{_M]3<1?JD^L2}Be5f>GM5>iz̰].DrGj)Rgeiڤv除JW` {OZF8Mദ4OR$3s,1RG<#0sש "\a"KCts-#8~̎emiN˕neY'i!C6uhgf}\ k4TMG3St舊Ԁ?2$eJeY^T;[᳛XdD΁I$auaݾ$by#v"  s2x^]0ڀƙKXR}@jv\]01rX38 #=L^8RIN%PL?VE̞O9=Ln1D6 ۢ]-`/۵HP.et[}Z!Lk-c-^|۾nVnFSD΅wWO DA~YwUD,VDx* BcJt]$b ճﮎN]_+rqRPdr4K|(sYqlS1AdAy05s?oc抢;FY^͔cP2K0%h$].Cq(=fY|k,IA0Pˍؒ-R <ɐ\p<poԉNOm,n+ퟻԯ2Z }#;|$Ȧʇb"oM!Hkz[Y2t@P>Y|~crB7з臇wvZ!,A)$_,j:,ڒ(v\cw32Ux 0.ɨXiJp33m\: r`gH xA&3.{>eI4y[_ع}ЮW.绾r.Jh!Kg2.Crg-3D){D=P#{#|"H3 GHApC|@:La QŃ{=xwSs ,C0pxwgW"s%H1~o.1)vMȏK b Tz pq]y?fLfMV1NTm&)2H M''~_"2iPЕkts6Y,Ӄo)uY,>Xgkx$3>pșLnv~ۄJ::ކvê "^Rr#CJW oáɰ9b!se Qtj~[n 6eԦLB $ ׊&ʺKx~\ri(`z}9m #U ]>wI7k,'|L0y fkѭ˳m_yN>&k1%ɵ~)Bi1M4[vI?Au<Ӷ Է{qt쌃Xael45W ]݉=c#' p )ʘJZI9G ]2QjH$jXmNd}/g~#pMWs亗ךCALA 84BI:BXln\ojH[U˜=aի̲|g6+9Y~87OԳ}d:#s>=v0L[@Դq4 V/`l`sxw+C$2Fi,ܰu^2ٷK [dpĘm_iK`ݽ.XkVDx~ 6lS [`C Rk?nԳqݦQ`9q#F5"@24gE;=I|.,s:K&R:%Upl+ިg7mA뒇`v}d(٥M])48r߷jPJ\!u ^BG̸dwykhq}۳~uY u:fHr$K>}41 2XdJYnQ>5$Mf)]Iu*Dv-_FMЀwaM#3Zܴ?xcT?;\3e,1"!ð 7?Doۻ lVXс9 lqH܁ C^?o(k/ wmkBfFloR=L6we5!@EMWZcw:NY#P10bB;iжUP®=О<٭1~誃EH/ s6+"v.X=)IUKHó6ϵn_B'abNlUȼMv:|~FIpaSmjKX&11~+g1v8zI!D@tD%MބE+:~$c,&?`^f_u몃37\K{L5̙lH`Hʄm7FKayhlߪ_˖@Ƕ3 P֢= إ&9Lz,gw_XwxڊvQgcI/g~;=tpxndĐ`b1߁]8"ԻYC"5/ .L0xo_qNJ3qj:E,vG @ ~vD2k2`%(8H5g1SaW?j6)/̎ul;KY`WOSaSm__wv=#q,:{DWL:f׹WoGy6PHc00o6!6 ;A}z:Rp ]+c "·Nžc3SB5;y5%&\&..kʺ;, LMJ_LFOn~t+]`25]Ŷð\g(d",2j/pm޶z{z)b <@3~;|~XnB!=2@c)я;C76[Lx9r@-*n4  i~E&S\oMY\ fʀع>W6Gxn\% Yj LCbU"KOQU$5  `ny]L#8<`#H vg-=sysU-J%D _mbgMHGM.!`JW._]8fN;'Qn{o7ءiF Bt5=zu[HP @kS R37 r?̵6%#&JhTc=zg'?^&X3ww+rcJ?E2Sl:<\3M*B~6ECqˌo++qIeXf 44?pCL]-nQ՛~h$_Wa@x 7}Wf^&NvaחgțSt)L?Nkd4 ,r}鑹=&ÞYU^:>z/DIB^ IDATlF8/wD'?Er6cQ4O;H/42@?+<.U(( eS3CtВlyNg-5h7#ǸCv *,-R`&m۞omcm3R)52[;k 9DyF݈BKgecJ%hjyh0jp d&#g3m./g‰]xEIz9Lg\¦K< JdeG X|~sF Kmb F #gQfDi(l%ĖuH֮-H+ #Cڛ}O| Qo>$Ɂ"'n*H00i c5 l";h.9phW&7sT ",oKv 20eEW2v߻iZ`wG &1gg;~;| PzmYL, SS:,yx#=%bQ^X}N6UX[Hޤњ@_bprB 9ԥ,@dzc,c8+9=?z?EDkM׬-sp=Ț u2eO a->txPEgzLt[2: 16,0clR:fl%6qa ij+.p2 tk7Yi혀p a B~(4 `^6_ra 5o)۷ܨrz>^H/LEa R$/ff%vr[},[r/EH:QM\%~^,wc13 g6!L[lw&>Ra8x"gKX鎥j,towٲmLmQM\($zgd >[cRi&Ṉs&&#qar Tr{eBP] j8s]{{g-/LNngض},pۅ]:/۪VI?M:~=1(Q" H;vCʝ{>W88顦r̕~;-z|(ʈJD.5WAϼFo#7TSl pϺgu :eiN. F?!aHM!TMľ9qiO>=4ViA:{k)Y>ځ][<2v s A\eu#pT$8" /h"G7kjpoH} Z2Iu*t1b`X{\{~7`gS_ }FCB(F538Y hZjv:_+R;l}b<3hq.|| 3w~W5ΈTV;#/AIE!p;AK As!"#㳺XjzoU<ځw]KFϼ*\xlyϏ\`ߙj0zZ@oW./c3qm42(s*6Oq Յ)Mɠ01-TY nSM{˩T2-)Kiyr=:@o-|f'zYԘF1ڔ?c*mŧ[X 'Y:5yߩ̮ & JS#)4e3'V-g{ٓ<}O(;%x{ eRZ= ($ 3Ly򢐖Kَ'q >ߢgʑ)@'SqՖ稕s<~D+ 8^VJue\e(S"|wQ1/yC(5e]C :2.ϩudDHb#kD">pEJQYFQύ0̝#KsR4ո*= (WdbUׯݪ^._GV.Jq\\"Ԁ\ )ef. mc@Ϫ˪ikƍ4Ox_06Mt2n2Yky$ 3LN<t=nv~_N3}48<:ms^(=G՟TOeZԠRތQB5iROOfƻ`#vت y&k(M'O7xT̥ś ؆=%8kC+`t A%JP&DY.j;J}{ց$:~s>Ls/\0eJn?ڌJ˽8/wOٟy0z3-0E3$J`m Dž A6DW' STʚjU%<~wHțg @)_rE+=KͲn\WBնNsA@sO*nA蜪Jkxv`>zWX+ͧ?gAp907e壣ҫ K (35Gs/w78r^ϒS_Y]LrK v)fbQ*v{@bj x$k:=Uq2Nc7Z#mltqFz!]Bdq ـ揆|#21]7( ӥĢTryJYezqy@G Cj>D]­IŭռhfJf(ٍf_wk Vx HMǭp}D?B6, Ь|*@x4ww/(d>BDL( Klz+mxkNт);}/nuNG'}2 ͜NRf0f̠XL+p TQfdf'tS3q; *>"-v+C?b%*eb‹h_cAaOּg29/'‚ ḐbwDxZ< ^9-4^ 5D<a^n%2f%&M35R;6٫[~y<5>n(bۂjʔFVi%(z;/$A"o%D">zx@ScRkoVaIа]g2רş>SUP# --tz7.55$}-<CS= >G \m2Hyړ/(-2k*&+%9Pn3)93A @H,<3Ӂk}b+%T${po/&grYJd?2jS΀4=0 )S9X[0.ޥy1b:Ȳ]͓P'fx2ۗPO&V&Za;.`,3k`9O>>|!AgkǑg '@EҪ)@h8B媛\ce:KxR4'ydAN8CfBJ 'QhP'RݐË^ʘ6i.+ nSDa^*XIʊɾw[1w8K}V6݌~^g8KK1"3;mJCjfakBmk پK9@ @ ~-z7kj lPmT12twfuBA/EH=ۣOe_oTS݃AleȢ3[MQ)q9\)CtUstx9ۓv5~f*7q<xg@dl 3Ȉzo Oe 3J@Y o0s$Yԙ /R_&B%l*_\#0~>$kTrAqOKIAq*`!D㖥2n(OQ X[]aGԎo@DSrxq6P.!56cNsf)𖛓T9/[e̩:BjTiEN,sJp]sr8]}<Tjl"|] :-&=]ysx|xS,Дf V|Y;:jTy"lA&aT]򘁛͢FIs%U/joYPQManyjƛS}KnwtM{':#Fp/gd5kw]T.saj# :6BџG=u(a'=p FWGӄy.X5w=#KU,oRezQrm"P1"%RX u]Zgrt;tqd0pv`\$PvmuE*QF)ƛbub!Dv N 4*s4\G(}bS2rmYɺOWJTڢ8!s+s0umhufъ8Eu: VJqu)?CQ+䓦By}gy*64"?xhkk61b·:Z [[^TzSyB2_%@ײrulHQ:z۷eR^4s z %ljSmLLiKMG:U;a Hsl(k2KbI#p:G2ŗPmjLѣGD>nfqٴ`_NwǷѣ+ՠR{xfC[W) ƚQ3s>*)KRs-ꚣU RAsT{ލ@'䚧w*D> ?}L̃ej)[%5sj\ݨvEN.JF:R?: fp M{w?ւcc9@`ˠ}$k3kJ ڙ~ ~>an!Y3[# 3%;ERڢ~Zf6ys?;[0쬶VԩuSqV~ހ>C 5Xo0\ӾTXf)WsAUHVoGrk7c ׏ȹQF, G:X7164oj2FxxVUrZO@ـHn,lO;è4?vx>=aX2gCw@E-^6sBvZʁZu6 Uzš+%Y+5UH1G΀G_dmmytr)8%D)&)u)uN NuӔ>Ð*Rs3SNs QtyԔRsΤ)r7۱.rKQ'ɓ戒eud)#}C 1@ -oj!=a?:/WKQԩ:R2jXhl@o4/20L'6HT-ѐH:@z2S3a<1:xz6mB"zTJ:TN6 -;iCbߟq P ІU@ 5Er+T|SO2%!5g8CXuNzE"Ht$Xk"z :GZx!-TY3,* g"Rz^r ɍܴm(c2>;| "1 LfRʮ4Kwq̸>09R#i̸ eQ~3DD2̬cǾ#b)dRkPcmUA-Kh4GGq+arfW1a$mz>?oHcKbZ̍T%3gc)! Qz.@pR1#e)`(m0Y;z ~R֐ H+͒ӴnyWcΈ8H@TYWS>_Qܮ;#RYe.S_hǞu GےԴlm+`/A5e7[!.5 7֫=^A @+pV*4c]SkL#[PIސh'Y7܀x-m+9)s Ey>xd}fHY-Un`pg)tB^&-̸DҌ8Ѽ= ?;|<>M"K/eY_U4+r- DTRo'Py8EpuS1$ק)>T\͘fHKrE niw"(AQ,{,U}U^Xy _ 4V`=;'B&REE/=zo-WJkNhIE8V1 т8[O.839Z cނ*Pq9~2VrdBNk2xFmW˾̼%ނUOf͖ʿ 1*$0>*3Bl>Vg!{{|sC9Q3^/EWprȶ݇0eqx.O-oZ:򨀽s'1Qq"e+kNry%ZQw8?`q_p@YD_SF:6K%K>S7u;ydu~_bXߣ~F T6]382ذRkcnޏW;=ꫥjS\L=#]4cMJ-3:0}7C^OZ<0SF{ҲK8teQ|mJ$}!p8w .Yy  H^e:4Si:=NZ09.7;3}eh,aauSϮk]$-M<_=]d3$JfUө>1~;];"lF.p_\[jn6>1Zm5ţ/D+ \AsLu QX=?>HS4'z\MHH7]f-SnG]@}FY6#p夊sORhVf"+Kk(%Ҁ4t&uZ/:k*ͮ5d^rԉujk)~lǚ`):2=@jL LdV\2SڜqO'b^*&s"`Cm nSzKXN1ZZމ$^9K gxhj*. 5ZFUJjE%]io SO=8Le;g|g@%i3`Ox8` #oD4j35\#S)]˞\ -"`y;vLҙ8hMרBr ,X dOZ҆hVd-~+į5bϒ]*Z*,Ef6z)mהLj3u2?3%ԍ3Xu8̥ߜ*lrMB=.7IP)S-w}oMt(Z_TRڱ`I Lx294X-Ź@L;T3X ~`iUE"\I!(4G0@1f۱X[ͪBGC{O#)cC/JJSmsC@E){ȃNrMm*Xm> ]j!:T*OSǙpc<}FHD;#i̭ S]< 'hQRAW]"l)yZt6R|ܝ@Ý3-ɢ \⚌1qmQԏk^dFz>2ݎ7!wj$ 7#Ma5#ΉK)g2Ē*gi{dMjnq9W[dZ01̗r! eH+E2wRXzϸOF,5ycnLFz:`ye1R4@(Sw*_KOq$2u糄0:pYLR+9}ó0jInQiMɎ]O5ȲBjKk,nfd).  _{︴H> <: } zyjϴVԓqѡ%F>A:cc,%C".'۞MRJ\44IɜJ鋵]ޗ(QFBއp)& K!Rdh!Z["l w,Inۚ7TČhn9xL܁f5׎3-(M:TBBysDmd|P(ŗRf9jsg$gGn= wZ z>RNsf f{֨#%TIU sBI ީ9OVi_uFuS@15LH?Sqi͑133^ab^3*R e.]Ҧ(e  R@>>Nbæ[H,E<)hrm&LviZUcyW.%myM8kC:m&A(y=_.N (wh:jQNn'ڔabP. >)WBz TfMKg͚ llܢ>`)@mNэ j뜆;>-9;Uo5Š%Bġ̡h65jC9{*xc$ JUQpp fɱʔPC+h"KssU^pK;Ho//MES"Ϡp |~ H0l UӖ `c4*9NUϹpWCRK]M[Rz%sRimazњ\Xnj4q)Rc)W|oXn$V=D}0^ q~\iN#Iՠς+>[,@( qWg[3i!k(04L)07*AqقLs5KPZU[*E9P{Mm{%@TcY1$Ez>d_lH, n 2.WaqTHuKU>C\:tJYY6(F]@d3[ .^&/ '}!F 2 Ock"O+.USSL%נR)KK/`ԗ4KJ; \dF8$bl,Zh< טLAX=L3C};\Ҧg.~9+!W;7W’vSF$xђf!+r`2T+ 1<~[^TZPP .i R<4/j8Rp /JO q\x#Ps `B aHe.5Y-0cL]&M-TXBZS#x qIbJt U6ݽpM Ap{z%o)mjbpM4Xe;՗R%*i,}Rj귿*dUJ ϑ(1c?t cr esQBa0l2S6}K4iBnOqY07 8-ﶗuql)́U|Q'fN搥U$d4D9t^CJEKix -{jj<]rq/5%*UzO앍*u»3}4i(-j>B}lXa7*p ,Aв+=9!( "SSKH29s 5~ZE\r4!n,g{GSѸDE'CESeI{LGT7S&dmUQMPЫ==nzIՌ([_/=YRBo̗.Ҁc9 ,=YCټ)7>?[rTCuwbz[q 'an FTASs}w.c$UxNuf]Q*.\@MJ Tj=n?=V(̏=BTžX ƅǕH"ez3mgX\g#ȳϲۏ Y<%t2ӨIYSn9KCV`e4ӎlP!E3}Iq cmoNVYY$Ք 蕑*Qc {,d9[7K|~C;96'CsW*02<9pd{q8f, #p5K3 ȥd8YnXTs\J:p5FMF5g*D zG;=6B k{e$$-#K[FՁ2Z;LIk{-m -m -CRCnZ| Z?`"w~cpgK  g_1!IѨܸHOyPyII=337yNP7R}7BfM2Ҥkk]R_f'3~ {Ja  t:dM*U?t[s$,ymk.;D۾ϊ;B~Ȉ@w0߽ X#lHJea:#ն@aiN壃ӤJ jlJ=ҦڞV}VFsv0X@8\J{G\B"#z^3̉-%DWoqOwX;?ǖ8^cc2 RD }oQ^^Dc#5}n Yb-qqAٿf/n!TR)EZ9r/|Z]^s%#ha\fdc}'rwsu cZu1@mo4_@6S ,t,q_th*^kGLWAxZ?y("`{?no S˽/o/DHW#ǩ];4L5fP& AyYWRԝElPJN$<)Z5s=ؿ>(΢v70GDM2tܹ!A_A3e *KA␞%(&tI ~Ky8ǯ1%ZE#gzDhQ<Eߧ9vVFV [#/n.!mK–dLŶT6qEZ>ևxN:fzM kĩ:_G3{.M;髁^2Hwqh["Թ_HbG'w]PQ&MCW sE%: V/3!. 1ɓH-,RsGc}@w!B\  "rJIq)pVBDlq~)Ut w ̛uQF:H^[yt4&W  ve%ѨCؐ$A4V7-t*Br4*KB!7S]Vb'v?3Ya psS}'Q8|V|oeG#3`%Cfi0.h7U#|}&Xzr>e~/p)tS0>t`mns42 sA r-Jyڬ5Ε6`u ux ^-F]KSեܒϡCG{Pùk*CgLzԉ6vA61t}w+ s纸x[s,RAq 1YS{ Gɏ8`"%2>:P 4;mL-Q) <>."Yp[5ylxZ|%Q1r,V_f*-m ?Z%J! 'LCTZ)z->ʌΉjo?T&v }/H1wjwF Lu\Qis}j 5GM"<֏wΰxocC_i@*S־%h38s/=vP^{?e#33f|Vx dZU7W$?D_>N ƱЃ>_ 3" `5uHPXu>9ڷE&[xKyHbϊ|ڡbx Jj\K۰4pZssYFk1q@5A(f%75_{d&؋sOF?@]'%`Z$_NStؕD2eF  (9K3wR*ȆSw8̆J&yߣھ]~9bJ8,5#23'ڲҬ>$pY5HoS{;|ˬyo 71KƈP' cq~/\!3"xܟ@E ?Hס2̰W=ţGl@n]_Y1*7ђpSԳ{-qI [ARŁ' % =%Po'mz1w7{a r9isS%7g1iGM&ł&"“ | 9Ҽ׫A%%F&6 b_5șX~X2 =Ļ7>0VU64A{ɈFfk"}C3sqeIXJϩB !Kte/l \ʩ}u^?>2jGkڦwQрV@1ω6hdNĸ;#ƺ\m ߣ,="W<+JXT+\X5„_B:`hICOe樦zьz~@5bKB0%BD否Cy.PINϹS#4},>ŇZN2ρwX->bAAj6癯B캮XV5sX4#F@|wUZy"^^>->f ~gbzhjPY1]Rߴ5^u y2wgzDk֢:((o_LRy0s-` n0wx7/"UJ8Ÿq9q{%"5?\lNdwg>ȜsQI)u+vDO-=l!"C.Ͷ:.<6\(eYWROC k1y8q8"Ijqß.[?BynXN(y8I`d)UKk/,بU ֭P0K[|pM7R0P!2U.o/s)yRh`.RaJe<4#D֩c^n-APSsև1"[%> '"B,D@]_AmX°hkhzC7-Ǚ4yĬ^'\4kYr^dy|5 Kѝ0ڹY(;~^{ ૡG]qlU& i_>!YwbBNp2%O'~Jc)]͐qe`=(=O!\Pi{) ̊焒0\m5>~4xbQEњV.* ][.RZ܈'WOfóc!xZ_Dky;C=d-.0`ů#uctivN0kkό[y̒!Mׯ:&c}"K_۷P/s.!0n/rQ4s)6gN@z`g5焻}iDJވS{;#'m:~Jέqsz帨H6jذ >PZc'T%sMg:]5Ssxy*)x xc20 O;ePj&Z[&t1w6H3tD E爋ߡexmoCڥHܴTzB{\x e[d$gPE@#8&GGצ4i q^^eY+vj\;ĩnnZ: 3D8#CqةEy0nҶȯA'GRh':^r5,|;Uw%SS)a({l܏|"ܹH¢؈1yhnS{cbֺ/5CHes ]%hR\`MISKagk*j9 56D5cd!pY+B!">)I\SB+e ^@3>2*U"U<7ŗ'}3oNY<_ .Z8ˌ{|/Dj.+'8ɍ. oهnNmQIwsOH)vpЬGƓ^A)Q+k{Ȕ_?QKdSq}7"=YDբHqwS@$hnE4u =ҍ k`T-T1_aVx>ũ @K9Y98\ǷKjLuI'WDopH!(>T&M E[Fƀ6#Rl ۫73AAV jH9 w=+8\hSw 0i k[T9P309VJ!n wg@\0mggE8\p<#r-J|A5qs1 ~Vq^Q9φ=_IM5|p9.F 3܂;37̭H;и7:L.`t=x{Q{R:S)PtC;'/К%q7u }X9Ϗ7G#SMJ HU($'w&kfmAHY&#,v`cwoɌ-:E_cFswoA/׆V cqf#PSigksPNw)yr^+1b\̀yja5xwKBє/ ˔`R|iq>AQ"pEPų4G5˓ГV"`*Morbr@:~έNr0:-@΁ `%o-Cԋ5W/K_[ށp  j{N<5qp< —Sn#э3*`UU9URpW>c.q^ThI:HO{|^vH@ks5~<7*{ q냂ErBIš4zMR:XtR2.Q=?]`׻-BHP90I?85)7*qskGqČ; '_Ϟ E1OuQTF8< Wŧ49Fc{!(rR@ h5Z7hϠmנ%F34h0W甙qnT I["5A.`91#6#6F!@  9R݉x)^gZ5 j+ܬdeK9hר\A,RtyRqZ=&"'d0f2ut դ;1pESJ'xXEp0v!)çU8hi΢q-"/V 7tDü_\5RUuDsVM# O4; %ę1I˩Y{]5l>J1P͝;@em R-fJ*u2>Ya܍PS9Z@XUZTΕRWQ>B]nA-S:! #"t!z܀4mι!_$R F*X"'wEj*F ^bOGG#0.5TngQX1pJmëc*hkq kYAP_޲\:5,ҳeo3]ҼK;7\M1V1F\ĺ)U]DdBYt<~Px" v86.G"#>_nj/<%fO2 ,o{gjQ8٩P\x{-cXn搴lViR Dj\jKZug7cv8]3 1.K޴Ӡqք5psopF60Uv󔩏 e=<Zsy`Dtt%hf2 |pt(]jeH^7#lWpyo1B B`&)mdf#2$@Su+ɛm҆^*h$pVm}]v@5.k>kxӕJ5xu`rOn:p \]r VG+&V _\;mQ#4NYƵaG@JΝγ̌Mǯ= axMc4ev^nBɂ.}퓑 uXv3$PL" /j{ZYYj̈́߮-A+g9X-0\м1a}@P/m8G Sk?v-0vq)<6N}i,2!בDdnh'q6a1ٳ7GrF2k/[jI9\6xnqXvb=)SYgq5L֑ (@Vp> (HNtϕ8!d}H+ U8fqr1i)ANh)3Su0tp+iZ?^xvVz0ֆȊV̡4D2pC.j:{_ =~ =AOddsV.5󬯜 mrkaNt.L3OA9+-ы;E&hZ3:JZJ49mZ$:zte#}bxΩ0`\Ӯ GŞur YCz4ղaz#M 1bmX1r Țn#4%QVEgae UiAi/=~o[kwf֍np*cOIPz7to#bsĤ[$ 2&.v8䉽A{5,޲>tMioWaFB{B$v7HzNByw{bQKVɡ'\RMZ/no ׈Ex݈S0ݘE:_,Tv ˹;|si3=V;( !q mDh90KNa94$Blm^d,p4u %Cs8e;V'RawMa{x]dc19dq~Bp]9Lagt┒LqԐjcOO0=ÕG$a8e@'~5t_cڠ~@#'7bq(Ĉ!Ni,@W>p"i]h''ςi.0!j5J?}5FAdc ~>(CRZs,y.7Hb3햩 y IN>3^YR8x3Ǚ|CE tJ;m(:KS#zS>!Jq_|y5sXI\D ^ zۯCga\ވ9P@Q ;% _(Hzi^~uPaSa|6FeI|MraAXs˻.Ĝk@m P399ĕ5RJzf-Ƣ#%`41|t5'Dk׻B6T=L6QBCz^7C?pH@̄s->;1#U0= [`0L%9e Ց3_2sL70|'B?_ckT^5eEOGnj7?ac/LjY>,^Fٓb'~b|+i+񸋒ρ˳4a2;B6T R|+9J oq ^Yi/ { ݎ\R,ɈN e֩Arx< /_/p>d]uA%GoX9{TҠmx_:t?~{{| ryj@TK]T{92yMN+pȇCcF-(GΑ5xNMt&L:| [Wq8:cD8̘++Z#mF*̗zQȖ#>5APLh9񷴇sb_]dSUc/[] ׸C{3;ePtuppv2dDCgڃShjbdK)-⸇̇h[XQ$q51<ph')]6% 5E)i j:7*K=B: b ZؽEsީʞ&έr"`9`}@3UPqsK19u-*p*30.m9 +prtN5$~[#| 4w#2d5p -.IVGfu~) /o"]a<X9; 3e%%hd&3rgf6"Q s/4"&K`dKᒾTXuN>Z=.tL~tO߫{%&ɖzIgf#Ö\{bz $tLo5lL$&-i~5K¤r~ʒYʎGL =Yh_~?=Aøh!N薝Ne-ˋ$w** FΉ$/'+܃fMk#b.#]{)PSBk']]E51:bC<03սc|p&ay9V\ kROΊ-6:8H^DF7",gezN6p-NeHfL 3n|AsiW#d)n,c1گ0.?##$b vqWdtPӂA dk9y1Pޣ@%)]]ʈ-ګG!]*nTk-qLi,N2Ď;HDP es ˑX-Oy܈Ԍe-IaZzl0vv"Ԉl_0Dg(h6 f!}kZYtΉMv2eD]н}s _; 7.KCR$Lecisל%1YZt*'lb d̨?tp JV;(4 3>s(f*fJմa:I&2,I8݆\bvltGfqΟfɪ]vh꘩ٟviYL-O8]߂-wBsɘ6oܮ߷F-]Hd;%o}<6I/[xʆMɰSB w )㉕n w${MYƥ ~~w rLDc5G }IR^5KBzEj{Qzٔ\CDM>wBfqC'Yjk_*ْc%7R|J"٥[x7ow!tr 0qH4&%0vj'[Le+a<ӼǹuN`YQ+|hdMbr5* I YL۪}p! ʑՋz؃r%TIxt.tk 8 r rDiAdT)vqV~Zy驜e4˛v2fڪsm"8pK3hgҽ ۷"Ic^Nc;8$3%y%@sj:Diz_1`\oE@ak kr-׈g,Y{eZKFQԈDYb\_&pb-ÌL`;Mk:mœ )%aѫH%7:cFxdf݉;okK|q(wzfA }m趏x ntX;PCd8|(y GzjE׼ ߽ ps.tȐ4̽O91ָIh.E}}|>;`҆33ɞR$2M\e g+%MFݑy_6!ېlS!Wɨ08 sòN#m] X7/\>0õ3waՐa9EmP6/L&y"{IJX_) 8>oa< =>WAg)݂,_JP-7xRIFX$mp2^LS7ւ8xv;7<܆Wܢ9 `pm׼w` QTym.+*4|7`ŎL3>^d1#]*Ҕ#j`\/Ag"N̠i3\T-#$Z۔P[ʓ5`<| gĽ_, ^XHc.??[2j6*˚\rD[x2l%3E-MfqDBȣ S`CƓCP{4M-["Cعdh}l IDATbk8E#=~˾{ xHD7p;"G %Guׂ4CM.09|axGLX5V\F9WKgGN<80~[nH^҈8ū"y˸9h4/eNN(N<%0.3IʼnĶ,p>_HɮۥLq:v1؁QkWcI-Y !>3m/'1@06̻=ƹE];!xJi22> @7{fߩDڝAsг:'@V<{9T&v=}8(%YH;p%XȜِ0vكك1'r#W]j-n P#ЊP-=$㐌{Oq'@8x펠=dd.U6p\GzdLh+brf'΋G81) ^tHHP4dA< \-  pFؾ'x'kƜ^T0v|~uA@tR $WnH)@)fa!G`M Q#1!f@-9ƍN@-E# i esCBd6OfU7:~;$dI F~F~{q-1N63`#"BRͽHĝJ)mGV}ʐV+@cx@$b:UuUkFcM-n薍c ki/nYK$t5PiF8M0 6dS#;[D&‘-c7T<):%E B( G{EL@z28㎘J6(/1!W߃ },x͏^ߤΗ3W uBR<. _ 8[$4 rI0N܌juT]J:$'utGJTRvJ5X6euKE3gJcT;d#x]Tq;>&);$&éGn*ffK,xQBikJhKsF C'ؐnapno,˙צ,ؐ1)Rb\*}ʝČGbN-5WLxQ˗4sgɓ&tS++ M')OV/\yAC*Q +\(]0Icng0=N|-HgxJmxR1" tэ=2vw]Tt+@x7}gʺPekι4?B]ɅJ$2KP=XK&'hs/DP źSP.Bj͜&JҤ^ v{$grR0g-k!pYQ!u~ #ơQ|P`NHbR8/^Imz^l7$sI ml}pz/髥uJeg\N賬 !`AR7ANe@r֝8dÞAd6C^fi\Fx+if*'d[jzlcMyR%/dK57gctfHs/ ):>2&j`'G۴$0F6z)K,^Z^4_}j:}XsEұFrL40n:;%T|-1Jl.5A %F+m,MzuAxqWM'npGOl>>8k>`+KdIS'nX =3͗,lCPI<-Y4éSk1Y.vILi|\JT[Tby)_MD ]BuatרOn7q=~7Nd;{(㮑wf|A3{2ȵ-qS'Wqtb)V*C:9(U -*%ֱpk[ (N)h fE`ՐmXni &NCbQ `\N$8vP>ZgN#pkGxx#<$A^Rm9rJj.+-WIVyr.p“ [g74[7iXezlpeͅH'dd "Ad 7;rNI=-WϹ] )>Ʃ)n[ȑ:1;jͩg|C)ƜLːV3}ѷI/G 0mHUYLȧ&Wc*<ϙU'&SI6RtOf3zz L,4m`5JOWYl]>94_dL+AɅp52 @JKww {qJ!jLkb`n:Xed>dBYND^|_{d-?8w3ws؁=ӝzV`ުsBcWGD"D́lqB2KohVٓL%;Fbx)/E'CAeJXIR:aJs%4*OPw=ȌM9Jlr6o#MT^E"9g0nf3`Π!^t+'a5d7m$.N9F2Vi)wr];hgk]5bձDBޫdbdQƌD͑)cD>:*bؗnFo{ ?AٳN ?c(7Vt֗4n0Ɔ i4fd& K2JH fP`AP`u:u^^4 7XHɍ(qiCr/xO0xFq;Mk58wT @K)mM>s'ib(-CvJsmi7a "Pi A[,ҠJht5Wzv ң"'] s8;KBˌފRq8mpx~7ZKȇ̍}^&2@k.Z'n)#Sm C>a{|,v:N8em:ci-.*tEaV;0¹8EvQ`8FmwϹdwZLh2`^fH'kV*gKMJ&hH\вyq 6):Y+SڕIcxm1nT.rDK%㒚o#|HlVܤưut[9s|'~A7"ܖ$fe$p2~( N10N ꆚ3/3h>w`c ׀"'TezJح: Vd:2`g!B:i*s4`܊cF k'\.#DH|_{ R72\c- y 3ÜAyRu HDR&Xt>0`68olą1vB V8+@QNڭ`a+'z{diF &m0&1 t$)y|q*Vn16ΐc*kqiF AI,)sf)2yy:Dzm.2 Ir^ɋb[^<@<&_;tr$C+a-=n?jqV,ZllPnnѮpjE:}}?/2: -Tw-n*#\{VuIh[qaPڶnЅ9wys %V) p)~%m̋sWh'?V|+AN\{#({נΕvp FǸQ"r# eJǛc8qv8yquhc{eJ`\5f̙ibw p>4MF`aN\pJ\a\3s%Bͅ`pKKLv id{b0NBDB]-2Fw#$7NQ|i*^1vVCЖK KyNY3`LA (#Yw# aiX_NI& mN%=k2Ӭ6dp-4N8B[uJ ^ 5õqbHV <80:=܈/~lDal85K ygv9K 5H\z0e4 LtFmp'Dz^g'8p#&)"x0<b1Yܫ0\g[ ?y|$n4ts{'$)e(>Ϛz9'zf|e(tQ GU{N6!..w"=lvr}|qhTH$v"t@, U. Rx'Y2񳾏S h IB֏vW (;B->J0g|CwN8S6LuW/y'T(#벟`. T$T=߇8!^ cM8f2ïGS|SRs_H{Ah1b< ƺcT\iR74ʔ+Ѽ̠9/(^s(xth/~;u1) ƤU 1S>,`q"e|qLSySJ[Tc:8edYZ4%Kɠ=}qv|Q ): Ù{ҿe-lsZ3z\kDhk?#p)Bą{pJ0DLYLc~O҃tjؿ-Yǯp*7zMH8MN-VQ43˙iDkdwʋQANd;p7nHΨECAik[$5&o"Ǚ1txV ҇8b]FS8LdE&)7 9`8[. 61#2L 툮{KiD ugJ?͘|~1ܧ$JI)߉Jh6oC^$5$@m+4 en lH: b!>Cs ̑dz\BÔ)r9}X{u7;G+4}P1nYU,Űu\6{Q#`;(uu:Z-pn0Ntm:30|fnzsp>;)A0 dRӒnH1 Ovũ<~kdg:/K곰xZ0eYm[F,މ*٨d,g9/ԉwc+wƳ[`aG|}d# ZJFGFj8f> f-eNl?+E } 82X3[d8Ub4^uV{{Te{nM9"K@\LHpaI:-1V&L}"p.D8.'K7|)Ksgyy.[NO(˖و [&]L4jXOaBa<}TUU,Y- ZR?\PT˰[6gc=duBj`ˬiZ7F9  ('˙V*ME=<ƣ)\LAq;ɥ}\yFtmp,K痏$N<{@k4ef~`2ggogc`ډi&S IDAT!aaHعӋV̅W8G`މ=6b#;s%*f9٦_$9q቟w^fМ{c`WTݚ ^JԔ Uòp ]s|5͗0-zKǣH(_m-gP=皗"qf23y)!kU.&$Ks`!=@P99|Y˶xMp})I_%A%`ﴘfi{<K¼̠9/OF990% kA,ةd0=3ϸԼ|ˬi>?7,֔ LCJZGkoLOgKux^7sz ra(k.DJPRf=Tl'lrkj_(bu B],=id>gUr&7Ƙ k4yAs>KIR=gQXچH hBJޔP5X ε; tX>{%bjKcSi"@bt*yw|(0Kx^f|@"WJBBJ3+S6uk%_4`Z"6ts͍o^2'$Y_:tQmOjju hN{,+K>$0[3ąT˅˜z:2YcB) "Ŀ]"d9YK]X5I)rdwӧf cstAX+=dbKՓ@#aPYmvsZ%m% ` 8VgS-9R'r̚|ƜeA99VɅs<'2T[^Oػ&],F pS*y/T-*@*HKr#6$PZ5q& 94 @ֲsOM1*~0(2/%jj}-3?g@:%I!_/:(@K&ʥ. YCt͋UsHϩ]?I\j ;PHfW ƽֹPKV[Z^ nzSx2)ee.9sL/W*7-Um3U"5eĕ [WWPunXJVo5|ab(С3ր7*=$BK;|r`9V(rHW r3EI@Z74_I^͔ꆱor)}nN5gҸj&S,75šc!`P2a='YrO/w|<27d(*ef|C)ctek)I{ N1Aʰ&E Ljd +-)=:,ed}80?5y2SԒTQrOf~SZ'P9NtIXG]K#.l1^>q;1Jss> ͍H9@ /uCRmKj!K;w+%RP6M1>WTuK v4Gai[oNmN8.q6 k䈔X Ky-/s&U~r-}9CW sz.ܒIHF4Hr;C"h$+u q:jFK~+L8`ڼ!]I`\s7DJzvD/K02@VAF SzI hݩǭ&qks 5-l2^w - +/n%ĖDS"S\rsx69T(q6 -PL훖kE+8s1>D j+GîvprEέ:9w_#7`6ᖜ3#rmg0BzN5u NVQ3SuA9,k |C) KsYz asS,3 o=f#Tf;tJӋ*JgjQȿ J/8H^R^)AKF5 l%]Sk+ P65-#$?|qlOq>W̾;yp'lY/-S~alzP r̐3zi*⌮J2A sϮL3M/CmyQ)̮]kBw<Vsrv Z{0ᅦÒoh^WD דk_sn Ć:ak3jKsjk{S gBFa:;'DzvW Pb4A@.tē./YQ6w s̓7SR=cCDkjpÏ?~B1tWx}>EӀx&,ǟP@AW] Ww3^<ٚD8nXN)k$s|B/rx~i4Lxi09KW}@א[޴՛.OT/pa $ ?1 \.S:[xWM}}}0Jo _T㺮)SۧZ͕}N/`JS5֦hO8J1L QdCʵi? &ݏ}{WZN vQ kXZ25nE9SR?{Y ׳fMY Q)`-mԀ[*t}Oʀ#pͽ7? τm-?k_^НrlPof%v|6\ UN̗^@vYmϭJP 䨹z]{SO!7n ÞMNaumt~"yb Ԯ̠4͒hBH-K6*΅ܹJ^|ASek, FքbHt+fϼ.?r=ݿ>v7K/ZVh!39gg!x#CG!jvj=dWbD~vOiT GV_3"xIqMr*B4'.)}r{Y Ki'4nr-YFf0t?u]Ir:D4#G [jfzL|,JԮW͟LSt*͜&P?#K4+-5ƠtlrQ s{"MmNS?굏%״-^>0O (-kp?ι3ՠA5o@J ! ftxȹ@7b7&޸ɖ?tdV>4+vC-XB/5술\yQtO|?߮?- _7ͣ&>BIRcChfK[%*4%iJG-hW_w? )nPF29-0ZK ǔ @,O| [A0sp>;<T>&֒ @v >yuov}pB}ݺ!0rJ% -@?r2oVRG`,Sijۗ1be\}f_W=N6Ji@}y_JHDL5„OANie*I3,z'FԼm˫7?C; WOy/-ۇ7]U>5aiFKfLeS@5Ǽg3NC@?woڡ8uQdh<sN)M4hhS8SQr#vOӵoZ~q)j_>oay68>[ɦi18S5@Q@Se|{o>4v,{ZCj)DJ`9OA#$JES8-5 cR=ԹD.J]ɅV_7 L75v9fDnm{'ߤv7+qCn{{pFK(5hZL Sh@hX䐥kZ럧<Ьnn~~ -s >\C]j5G^O@Y:)gm0Z+f>Z[}{_s@50_138x `̅iZRo/H2)i)2w `FAXy \ڸս n`Pk襑5eH)) ܄C*$NRkBSV=Xm?.W!Yxz -oͬx-@mc)*)۷wJb%ii[Y<]ô[_o};zk5T D 4kcɇҲM˅P ;>yu;>Sr7@W<} C~w}KKm;K XZ[!wJԠhiF g ˼_m'V?j}_Ǐ.`\IPkd)7jC;7y5/5^5z7pOS?m 0c B>,ˀiF [a|.U.֭2tO2S|] @-`BaD4IdQ޺ս_kC"׸*LGjZW$|Թ%0 UYbѩH=:wSËo5?cG f>7?z$KJf e(-%hƞrIj:e7F# yd|Q(CmMԡ,% kG2x5mE֩_7A5ET2%Y$viy[nuw8߼>sdSSXh JFƗʿL&>i8*%a:ΤS!ѣYv}y0N?2LHn9[o hFV)R0F,@Bv9bm^kֶ-#R6Adf`N׮;Z5j_^vk^G~>{T)9/ϗ4Kd-(^(sƼє+Q.$I(Fuq sy$}!דSjM`\h 3.d H# pn:8tT)P.+E su@'6/bq fġ"ᓪ \Tb5ɠҶyIR&.Lڤ]yxڿPJ3qךc?Xe kxUʱh=0Sz #-KV+k\]]aZ^@4צBvB~X5V8+lb"Hl;3`ŻQe{R\vnfy\-a,E4_ פu/Ux^Kф04Y/⪽?/DwݵC bҧ0&,W.c"Hgu"\VS {n;Gpk8f,AXq 5+0 hB`F3ЁcƎ-3XyZ:GSa|mr(u7]yuYy~;hm]d!Fˍ(0rRM䵥F5&,6ڕ{s?rtʎGvy?޳ IDAT6,#awd(%` Sl6( kXR2c͌ubƊZf4GUqǒ#P=3܂qMk0b !j-*Y$duΤpnڟb7ok2Π\x2-rktk`MI]îyQ'"~'_&6~@9a#O2cdGk,su5p3^cx7 ,>/Y@8Bd{(0Ё^[xr-]"s/e jا3*c (Twix8$1W Irixw+~!_r9Yv 8oLb(@h>%orn*dt0uI"58xv׾YoC{&|E.)=g^SΚˎV? %Cg>7 `P >,*:K94^&|mz!+IdP6I k3n}ľ3!A(jȏU J$ Xτi6`6;2 1؆3ʜ'w{~s >raC>@ S̎K?mjƩt$N KnyV?)_JЌvSıIǜRxx76r^48c± a$905U7z5 =0ls=OD|.lBX]di$Vr֗OksHjr4?kEaDy!ҢG: 0%P1׀){-M.0 wax? |?|3偕3`)0xpzgk%K >> ;hL`%~ͻ°B4{q0m!?ɠS-ʘ*w%h$~R4]-(`JijW$&OrtO|O|?#vayt}c3ur\HR&$ô~2w ~ @#dFv1<ۣk3&9F*B#c7@nj]p-eNwwg2`]sk_B_nu!|}}(5Zts9 h47w%.I ,\q(̻c}>\"HcE0 %XFǣ${w]`|*~Oyr>l gnt,\fp(L;{'" Nj3=dWv'2'l⛜PzjkvD1:߫j_=m3%yڰFVfl'r̸xmqw=)))IVqRA=pKN^u  8@ .> I:7U\)og?fZsp9e\ V 3} 6\Zg(K?͛w9Z3ZFO. JN^K/~knuO~FXn.)'@؎k ٴf,-Gf)Sdtćp|i7|9{|'d )Ws8M4(a5bKzHOpX͌KeS7Y8o.|,g3` x7YӒ@,s,ހr#7srDt_Z/@ZDû/^ Nrk<%4L9NHlvL=+[[l )`ʒ<5|H^De g/ZeNb`'ss ISI%[$xR/ǩM-+.%gO0Ӛp[10擭o+X=߬Y؜+$"dE63W8FT搻2 JZ#@4 9lpA&=WGK7=~m 3KiH3e#Y-8_\xmqʑ1Ԉ(SsKaD(!w$y0TpC-W꒧o**W98fBdi@9VZmvXSny>oDܔq%Zqq9*Kl1]~~}Q2MPs4ڑIqɝ&-?z 7WWg ymǼnt=E&2M鯸 !6`𘭱Uhdh.\t٨Towev6l hh}T=P^pE|-g| Pv^Y.fXP;8ga{i_["ԬѡTSxY#j&\{xP(dPA.)k.]/AIoq0:Qc&VJ& VT f}ql-6YrN8-G0+.AǏy 8\%v'2= Ԗ,uDx C6x~)ELRni S &l.]_LInii hCCޖjҍ:fͦƒksX+)\]z_q ?vm}?f^$"3ZIH 35}69__xi:ԏ#$JP*ЫTۥI8;{9>y~Jw~,S >DGJE o3b{05Mmdn䒉Mb#J:ha0%%4zSѦLX0g?Dz-wn(7kdʵl-ׄ[Fu9;[XYj.+pdO@O?N<\8Zđ?RLM92S2-/o[<2I4T4sƥ`0<w9M><5<^w&Qp&1]~73 ,ݕ'I虣&]It}Ijp}|H{L 0m7D৚v'&˔b,'T0DyuPЬDWJ8{vsL-{ ~1طh)x}~cjip.36˲\&kO[om<߆];bb$EZ0ǎs0?V\%QofQaK5`=sY8Kt8`cL#S(vq$&QvkpЙ]7mLsX[8<}>lj[PBRrmih[dh\p¡iZ^FA)݇NoN|?8%!xl]I{nD2M4傴enivrqEk^S+x̺~I{:Who(c-.&aJevMN7eY @<3 F@Ì#",ȍ "1P._u΍ncpxY/< `-i Jc8'S<>e2͜=9WpK7 X\Ԭs_n\k*FO?W)ЮEOlҦ}$Fƻ,cE+8VBS1 ̸q??nc(`j!i~sgfl|܃G8i}T%Ʃs Dx휏ropkZ s%@32a!efM̛7k@`^Zigw|"q=}y3m'S?`0a,Ӊ4q]2̴(!_7C,`֖9&܉e;{3/OɞT?+D]Bc1)SI<a}qBkROM~}QU- ,ScpajNn|RxD=whjz2S.d[Q,ǣs{|kj`1CY NJqKxˌǽfZQ&0Z@Kf-ӤvsorP7&YQ8q#oGe꒝i UUNtOIG V՜85*|5۬K1CQ`\%{ IY>I٤:p0^^ѯƺώmb{asPvtJuW\K RkYYJ"!Zs7ϡBͤk'_~jurw mH!}Y~+˅[k/e\,Cy.G$^$E9aH%:߲'su邲c.<-~ 60dM9s5-cs~@[ >djڢN269\ߋZF{ @j66*A f̜L6u{̇e%f-'$x9[j`vZx~.8Ei/MrH 9g.YfAOK=m/qq s (nv[?X\%) VC V{tP\{!,gwqX$e)YfLYfZm W6-> X9N`ёFjw{hb E`Mn'2:f-26ZpNZys81jjc"D,<%7ܥ:b)tcx=(sAsvqqJ4ͧDA(mDd1:Rq{;x .>m8,S2e)SfcFqxT+kqZ1Hf {h:q_A | ^ó}( i9U\Zj[" Ɩna9lM]Ԝf&rFo9Rsc%k){m\,E%@7:.{dй.^3tg6IG8;蚱e:ٟVK*/Vӹ=)X[ 5}"iUז%wgRZBl-qgycrqh# ^Ynb)ی5r\I1#`._ߴx§gBщsQ_FKO'a |jupYMryIgaGM0Y#׺$N+{?*BXfyܮ j +w3]\̾fPJp{jf׵@ {47~9~/7GO- en0 E"NMY.{5dd2#19|n6Rcwⓣ94{Z.BƻyCݠ~`|j I>;\>f]>N͉1g({n71>J3fZ^_|ׯeF{.SQo]A9EiGpjs&vD{RF"-( ߤaoskOV\;'ۋ$7DLإ~uKov8"uQ$igԸN*1|@]s< Z,q1<49p_1q]{~2wN+Rup(YR# -6i_39؀PNK;UZYZJZ]MT!Y~ŀaghZ{? 6A,G'Pk3`԰iNg"J?L1Z^lq;ϱP}j-T֏ }=nZb"Y>[kD#:6y(ϭyg!xo7GW^T\kJ!ThEs͸A aϖr ZBoah24'^X=.T a}^öU|vngdRZv?neg['{˔NtC?FE;fFmO_z=bdVoD2!A946\<@EYZP>ǥ'hahkOrS` "xN@(4=o"p;FyǠֺ`dpHD_3̴\kz5ל4 lF)۔oS~Zd/MK/kLHLWwmRo1rU,U8,d)Y(7k4L)7NKfK@-> sLyV$ 3IKf} r9چ}w'׮W8Ӝ]D919)4Q-pkA< =n4Qj+~,n> 5#2#ہe`0~Kٰ2c4IđL; nGqn4: )]U^qiܹ=.;y41<(@-X([R:er>g|r&x?B \}fW]-S6)TZP؞ #cACSBDEnja00e[6.)䎯W3kao{iCȾTϔY2y]̴<3Oc#fA3^-.<(.xjs]($i('} ^AY^r,4e9~iI g|Xǰx7Z_ ס'lih)SΙZ'$e3g*ݹN04Gh(,Z2:X{7?b(f(gBEجfbraH'5}"P2]bebm|<>tm7W) c.Tߕdy#ӽAJJQ"S=E׵B{w7`o:nvm*?NA Nb&H\p>KI HcVs k& .TR \6t}pן}ƹix{asѕ;dDXfZǝ@X'Rp=>SGGM{{İs`-3x KKm;v8RD9蝊_%~ % ʱq,Kl$;id_42ݴLn "Sړ ; !Z˛#WQ͚~ڜBZAVkfMv<(wfX_uf E9>38Zp2.ɜwߒMF%BXfp C:MfIXU\Uvʋt;ҦƗenhwdJs-fz23O뛣Vdj@eAx- X+b!l`5DupʍqsC33Z8EEbe9|-uLMM4]SFb}-LLS F"@V#Z8'$/ew1%0Z{v QmEjr03<*ȹ %qM G$IV{bY9Xny|k4{vߑ x}m|/яғG4}Re: ` m Jkz7O9V9hp(]mqS{V́R}:"c&喊@}*sִ(sa {pa7pny!([F@bEZ8 8 5q 1Eʘ%=0j2Vt ϕ^[kAV{upA:N!KؑZf as;/&YK)Kw,ޏsfAd=X0a]靂F J;qJxN[0ZIZӟ4i}r%>%j96:η7E[Wpj<7v3s BjiVmTJ0Kuܘd) (-,ɖ5%&7F`lZdړ/ѯ7aLJ2ȃo2:0-Ќό $36w$aG#yb; t{1}j4s?A%Xq#:9%v8zHܺ9WЈ9x!r@v); -pd‚cqC)B'!#Y=lCiD0|idn''ewqR@*9< ؕ+zs H'b?==bpdYp!65 )HVj_I>dG( v T1(\F&Y]*rKr6Icuy0@ ->DŽBaF A$5.*Y,SHc?! u4mlћ?8k2mZ!yT%27XOQ EjUR XՏ4%,LFYryg RK-G=cPYtL_P^&iZb:KP3hn;v&:[Hc5L@xv~J.6֕[^6UXoM~GQcؐ))-GNR}xf3 /PsҤj+-لwM8Q6h*o 9H͘@T`fv˴:~bmI)2%qXR I{/VSK,K'OHrҟ\y\"46IdveaEUZ@j8OzH4K1"-V: G!DR%*AN( T<ivu,p4m355GGޟ-džyM/[vA%V) 7nܿj(co8έ/͗<Sk@tRZr-Ow%;=v[&Ʈk %.Ld{"JgQso!`]G kV8̌ITf6q9"<_+] i_۾dG'+*7pȂպ , -f+wC׭Kn9bd_2&vH] d)y] ȍuRӸ@^?@oLs6- (ޡ e6x~1~b/ >oWp5s[)LݻMF;:[:Ber 7x_1ͨ626ÊK";"#shf *܅x|5͋&Lɝ3c嵾NT![p`VFsˍUr9 X<]&A\t u=s "͈4#H))ǂ`)b tCsإ_Swtn%1A4:#h'4jЮwq|V&\ZԺsZrˮL[@6pbAgȪJtR@_ n a@(bSBiF'ϒkvEkRLǔ\s#ʬFX\tp%lWuOS S(\cd beB[DPY:ft͟*(rl%Hqi.W#m֘X&' %P#SLR>gTF{;M)f!'( t _{yN_DXZVk)Lʸ\)QVdhv'H-P.q,funm)7΂Q7*9 .ݑ"]'x !}phFΜͬ+ؐ9JJ٭. #Ű]DS9p bskӓJ mI}& ɺG o*h)8@—I|fΩT7@wKf C(2Ok"ef\C"g8KV<+9S t>Yky7kθ>Tq|LpG2v՘̌S,IƸ+jnNI(X$7u)5 b1!/lXF튐'=ڱRˤdp0VDxo=*Y7/i+)Q(s㔡 =$G$o=j f 'L>Q4U-}E9:0pp9]B e,bإcf\ h}V`Iނ.qwgqp,TA8 m0Zq>JZy&-TF~܏JbV_fqW܌;J_^='? 7\ޜe*f𤵻D }>, tP_&r9B='ڡbŀ?Wq4䩤@)?0}E5L2Dee}{'Q'u y SnGb!w]{ R8q'foFEK]yDknxqPpX%z Fy8eRJ4on`2lYôAO:`[ǫ~もbmgԴ ؒ%pfa<gO9v醠9DCbN!m GoVwq3XgST}q7i i=e3^8c S$"ЦjTuDAݭ|: t9ӃeJ=mm)'ӮH1 cf3rY5VCbx5`[P.39¸7V+{6Xqӓ7rvύ~w`8g;m>e3&)SKhi]mfC 5EImxSp~Na0MDZ> ஸ fKZ PWJɵA5L*5Ґ]ϖ{@z<&Qjhq@K/!0{*LV%GWs @KOv 뒘NdHwNUzf-ކǏ<3Ol=vk5n 2:o4˟\O1pr I6~;+ٷ{ >\0,W;Y9])<5k\AD3iz{CY0s;&TȺvRb,Z_cd G%픴.fq` DrsnvLKIt{r-d-3>a7 œ&7 k+9z>FCeҒv{ϯ}D>/7T^scFެfsa ,ϑ)͔i+L6-!)%}X&Ѐ! lw^ɤ\͛QH0U5+rL#DL< ]H =hp 58M0g pb?Ҏ%1ރ1@ν9G쑻QY7Zw )`)TES8,Lkep 9PTɎk=dJ,4# hHWA`dK+]{5%>@b `,y䌏5JMT}=<#V,Y-Ch7'|bZĭT^Xv ȸDT(aPS\c0mdoχIa@V`|RƊ9{h}ΘqfqsC$ON}>+и,0 +KiV:z?E2j9]HN_5pe#~)3v%+AU Ep^[78rA_F&-bs:'5gY=%&+l-@[&LƐנECUr׼P2Xh)A@FDVJ"ܞ\T*õPysR~ S]sosڀq+x-Y>3{*9-$2v/qG,\"@49s-V]ӭR% ꖍJ}p&b.b2qS[C u9o}JXjn3zj4>> 3-͹ӵH/K63r @jR% ST ߯b\X@)cX@ 8J~iI[%/sԐ%s1Q1/*Lm1Wט@(Y.߬,%SF;RrkZh7HjRꙓv>Hy'a‰YS>}2[faw39 }w)lz/Ok˫ &ǸvR\%u\ |7u E<6+ B̮f|&#SO#>ODC~fs ; s 8AjjIb1Hj\(b\FJJ 6Xzls2TwH-(= Hfr+59qH- IDATfM- ܙtDUIh\{~f?lyܜY)BwI>ݕF{8B-ۘ-79'dtNlCu0̞OuRݹ `aŹ7X jm?%]s_%-3S;幓LV%눧/]`>#]+%8( ldkF'WiZLY;<8.9PPc3n_,.MQ.)=< S?L+¾!5w\ r,=7 HK!*5d"+(fwF3 {p\"vL-kC.fm/!H#Cځ\1`֠s!K53o[i{ UlJޕWԧoV TJMlzH?d57V-hJ҂|zZ1)KߟۉS;Wr}VK\#9nH u$#F<lTռcrexNdEr6ZK4V9 w+oh#%V[/`jl4Z; 0`VsYZa嘂򎲎\ᛦ%R!hWU CNr=l0Բ0x8@ .SsK1m,e j;Ѷ[bA;t*fs'DӤ8Gg8%ZxZV'e]u9s0,X˴ƴ)i52Aw榒Js~JcxI;JlNG\$*^ {6nae9ϔ5VS:ڈŃ3Y+Gʉʌ6Q kH/+氰}Z5+5E<$0j5.߱u7% 33ֻ6P&[a@? FsՀdU -5ߦHKsIĐ )0н@yqPdBFHrLF%>Harde`y6h5CC>Nݺa_3NЅn N6$7c6{٪"AC~xc&'=0R(Pܞbrr( NjHE#{΁C، sJ L-JwݾJD'c IIiY棕sJ}̏5ySb%&[;y.Rs褱 ,5&s! h!̠%=cމB%,dإ .S.T;h',Q]5>q8r}8cOrMז3sRn:eW2lօ19%vŵEhef;,(%NkGmý|$3vkAUkJ#3tzA.aLpneQ^4s=QrĈ ƌGRq L+{9uO\6 <5Lfnj{a= bmX,邌/0pjLRU13dysjv33N…vGbi M{t\sxAk̴”-EJYD2ڥV[e-0m%Ӵvlsb@2ɔiDI3-# nvl9ݿ*3pU^ XZ5`4ﬕȵ{wjAA]FͽahP:n$I8ln`B&>-e Qs?}24Lo !=)ôR, Lj2Via\a9iȹxiIP@'T*pvF$r{Xd MS'6wp מܞEf>}95rZar0p[M11y X0 ݟqMKH) rw@85}A}d6i.ȥ6h-$W!qOJ1*vBQgPr`E[omdKs3A=|uw|`޾9a h/#b_Cf_6[Q=9Pn4ˠqn\7H@R@",^]!'=w vT.tJ |Xd-PrNvkڸn5{qgjK}cz/"D,msRZeN>'q&+@2L6l93s熓Mk֔)6nR3jK`)#Sbu TLDoCW= ɵ ( YL29Mkuke3LPcZ4TOh>yl7&{&Yvh&5*N8mR^[w$M<娖g,@x\O8qaնXQV3rS;(e m?Pq 1i'Jxs|̡zc_m~\_ڤE޴Vߥ7t5s/+%vj^dݡpgp ]o޷ZFW'tCrTh?;6Obd#hZT׬e֎TZJA%)Ks/`L_GiT @8(RUqOZ7-ph?ā 9v7z$Cw҃AⴀN&-D(-g>5u,(ZY(/VO5-]BcO؀r(B;i\,ՄfcJ \Qj0#m]5Lv_tT e%%p2̬o]p7n_q~]+At s k2Mn׈[}֮ djxp= A]@ `36et=40aY֚ FOV Ìrxi+s9`칭*55o0׸ϪUk43N#`J šk˥ *c?ak]I.P@iGM>]Aw&\< # 6(Cd I }yN7s5ӧ'tqƧ13ٔk vĻ,t%22bas̞95.90{T23cR`RJC@x?|vҨh4W[5tbO ZMBIgmLd/F}WkZ LOb6ކQܤQ&j@ACQ4վT͊e8[rI°g%9'Y&L)'pCFm "W@Udh'KWީϧ3$J ?C`[f).1z=$Q)(񲜏/{_l>%nG' < 'mܒZhRgke\6VcXۋ2EibR Mh0ي.s؂X fFhmܭ=枫W^A~~&w1~7z,]5`X(er$(թQTll9exZKү;pQ+Ɯ,b:Vy!W_ i)nBKennnͣf-QWE=v278ipԖ|Vsh1{ʣb/hPBô_Lx'jܪ췷ntI@!-e.)s>J97qr?lN[dK qSہ3oopҴ2nsPN^C..k9mj sډJWJG'c͊Z&]t~2E4XV3e{fOݜ[a(Z5&j>ⰽBZ'L2`xhưK4rK#221=r>~n4   ] K'{qoBd8'm}.S׀kqCCgk!!ܲ7 Kxj@i#fn4=$S ƹtdDk/tg\CWtw*cVz2}g6Mә㼗4x!>=' |gdcx-֏1p{kp)`يk5u]@R1[A]$?x]dŭgk #Ȧ,Qzr=t-o/nski F*O6m~{ `=7}pG<\x2a1jJ_z /.Zjgf '鞶Mn뙼3 7f^:ǍS;=H%8rQtZ'׽5Si khOC(+O؏tR)ON ntW=&)MlZϕ&z˳ZBpA4>-Sݓ\kpwCjɱ'k@Ͳ?^%R:+U>m> ;9NϠ ٬kn:7oqϱ}WϨ,rsaװVpڏKSHiˌ[nꛄ[M̶$[eƖƑq!PFDPtjOe66M~w&^#o٣ k@˃xfIz:lc C8),n|p*8$GAӟ8yaF5cpլ+ôrrY0 dwy 鿃!n[v1Ǝy ވgЗ׷c傧 /mґ4Kʬ5ts!kx}NnԧMcI9-V@4d30as3!##qEғzh$-HtM.A&{Vj[}92%ߤ%$QLc:Ja[^KyOmr}0x|Bz,5jM);Ę3ZhvoM ĴR3 L1L(9gp+lYY+A"cf!J|LuRY+[$YL?#Fff4xx_9ոs}\9e>4EzMn']_!sUy=of0̢2j6-.B̽(LSY.d$pӴJFAb4!#1w[ʢV$ئy0IMƏ!䨲2u+L!"l ĘŜjՖ2<@Pf\KL-}٩8<]݂#-s K}AqQJcN5Rgiy1Ik)}A1`θ^d0w!sxCn7?vq,!-WNe'9-644DZbuek=Li\˄Ka.pj{s)I+ ` IDAT5c@Ur)w%anl;!^'bD9ZI$3]VFֽfʚ8R*scin#ѩ4=D3^{/;a}~Fu.#FvPFԶNm;a5ŒMbdD/V q;f8t_c/_8gYnܧԶUY~2BK\ÎrdunB |!;.-CEˡZK/HĆMrqr-vpG--R`!3{JKޭS@d܅(MtsѶkpL@s,'9<ܾ,Y!'.p<쾮1OJMb(BM[}ڐJƔ3|-̥zjD|vo[om8  'x_k4`^` +A%ŏ1M 37i-Z_3Ě!%Qrx;@zBnqpF{jCsoUDx#`:@Kb!3f$ n!LMGj@dR  Q2rY0LIj)ݟIY%oo#}/|#Ѷ7_&*`^`<\\ZgKs6n[]8GoײmbLKv,A|Ԩ9yG۶O"RˌXzmcϜZnlpYH4&~w dd8 :~|}ޮ@ADlB{`JLuhsS#Ue<\y4זP^"XS;wO[on"GNwt0m|E|Z3g7t%])r=ހ{萏-'JY֕1ک܇~woCd71ʜNQOO=އȊ˹mX/躿%xK@a;F@e`tޓ֘T įs@(RwHgJ" )ևQ sC%%V.'m.ܟzb$ъ@*m2e^Op#KA:]`z"xSA Ej.Zfjh pYVSmYǩwe7QO Z|ԅ a?=OJ lh^t_pm ()ďc|- @_\9;shs^;A x\y1>ɩu +#`"^~~W@CX> e s, ̈́':~B`w7~na8`S(]s6K`aJe6+9k9[rĶS Ba{m\#'"EO^8hXT6cIZ]KTMiw,f"`ޫvQM_M-Ȫϭ|;S2 Rw<*@D0ǛW{d2x1&4A! Cd( a6.de1{~sIHfC$uHB2|p*s1)_PySV(=ns BZW+i 3t*,VΠmsf hM|ŷx[8a  #[(4-\v̹vn1[jPs_nv3yKs^7~Ҿ:5R S 7t I\0a-cV4M{I =àR1Qޠc N ߡKhE 58T.\5,%m  fIߴ 9Kp%<~]BGri ]j}R3s˹07d->P !ZwߤǦk=`2ѽ[*~8ac$i´I|ry)Zaoƕʆ!nH{A9`鋹N+bR|: Wn(cڻ.ӡnsuq$5&No:Ru5!{f̜~W{0`>oKxإ<{Tf=*_OTߗhz Ұa:,4=ak9idkCti7U#lz͎ô@!zi3ΆÇ̵Tj`XHHe^+D)JT5kwnl04kH~"a.7nn7C R]v 1X.P=~͵/=J{m&*߈p5nDq-u>;,mT7~eH D/`ȷ?) |'vb==>0Pm/z,jPnAEԚb>YLS2arL,ؚISE>:A3Nћ =!3$vZv xge9ݘ:j*L͚$>{|dZx]dG,dM+U|y DŽǏ͐?:_ſtk\{ss-1 ?Y:fn߬vөFə*ɺd'b֍H+ȷ& &p^ J\$cvQ =^RbNj3W^6O5)y~٢azx剐PO(. ( | Γy-sFQp _"k:Zt:rv[hd*Soq2?Y@Ia-.Bc)/75F#&jR "yDaJJ5`E,^kCUnuj<Nt2G,>'ӏo;7XLs@}8<ý$vM1.G/ lQe!k<G8g/H Gj7/~R!vI̍e)^Fek4a?2xPkwi"BF/Hg3RQzLgYǥJ/ ͙U`ddu^I g4t%$r ҇-C=~oV˘`kT]\6p5qpQ|c8=6 gho¿~ q Z1U8;=t GSUS?OZ fFXbrX~q8M| m<1tlZįu)>Ȟ,ru@ytoՉВ#-Pb̀imڹ%f~{9Hm8C8/UC^n'Xa](V%*bIxxOֱ2*pa}lZ#C+7"÷hO=}j^:"( #P w ;ERّkQLH' X>~YYQ=U{vH ?A7!@aot@xXPi(fSg$' P IMyK{A+ZAq^|5O gx_|i@zoBxwv xGc8I< $R^NNQ<v=;סZFd3 2lGZ)8+ 0w_㗣;t1Ihﰭk.x@.J7U:\Z=rvZףk99>aAgإ}}<ۏǖ3\'( jBEaO!lJڨ\"~|l~.hjFlM _{`['w˖Biv#X!0ݛpP?ϾH'3q[_5 HKmW(=.0z{49u$a0P谅9Bw!PiS#u9&ECI\@عt!.X@C3H)˒9+%t!P)~0'Hd (s0 p2,i:p_gH ǢԺɨpM&YeLsZ M\`YG9z Sy]MN;#eC!O7lXn?ids1 iZ dP/6MsԀg}$]587 r‚N^OBϝ$ XFcXamPϲlàU(-0`j8?!u/ )e .>.̕WՏt8@qyf?3ҵ3>kY+l5S\ANJDThu$Db;8b>3<´wy(DkI{sk'r$CAf$˚c.B(84/"׆6+~TdC=a5:b{I Qg jt\ ^ ߩGHaJ@:g\i/>ñdc) cKZ7D[b<Ҏ({\\h+~U߰Nm=gVیIE|3@tC&@iJΝMRγꪊ;?Gt(v^O 0c%@\B>ݧ AF<}sKw#R•CxޛQ~b4|p;G?%IY-X芶Q#4w^? [A!M;Ecȣ0 /_Bc W;i[DO{gC{S:,2hd8٤l32e4wQXhxw=<&h}vH^v??b#};L6و͆[]O {Lˍbٵ,1 9,E0RPax$2:v/Zaf J\mi:##]^n.!Rs!r̨K!W)K}^?W"ذi³ŒUb5D6/JirYnDZn)SM`#O-wC -GZvKf&ڍkOcZȺcGpCfǐ@}BeGayɔhLv+6u6S3  2rAe~ $ҡpNYIhd:tY~j9x%|$tp5pgC)kvGBcH6Lr"L׉d pFq}9mݩC?33{`*5Brk/nn>z6 b.0X;w&̏ȵDbz Y ; `Zr"@ V J$ Qa 9GM{Lz*N1\^t߻⧢xfK)n"՜i84=S!l 2+μ،Ap`8 IDATkf*p+S3Vkvt6n?ܾ{j$4=vy7^#=}68YuE2p 2/4K(|Q̶ %8dW8Ags`mfutcb8S!=w>s3sqk*(Tm m))kdptJ1Sd35wtw3#$bƴK.ja䃺gz4ci=09k~ !{<[.]A/"=Df/:<3,Lui&$TH0d@d{ZA~wi!M{y?/Cyˑ VJa){s!JܟǏga5&rpB>8jۈmS {v7bܛ z[3|E=K4Ks7rbE1ÌMƴ\mKlVhyzP*NY\;P|;<z(Möe$>[.gT4/DCtʃ?:.};OE|{Dru>q YZY+nF duS?l̉K'َdgfzL]ܹ(R ɄRтWf5,K~,2 DMg݃`s *; Sh߉kMsU95rgjVw*N2ɂ;N}z9iOz('zzsY " s{Y)͗5lLG(Ӎdgl);<'}B0s,ze~ 2繬ef.@F\887 uCwPLv]OP?omFC Mx(tN(cpoeCje")W8Z'Mqx 簂q 7E ȩ1@qPadt/͏'9 ,KYC L/Ѭ~"% &҂S퍮 NZ)t-i[yq- ZojGyJ"H2ga.M'-('lo} 6Wc27^㜡E [4,p 3xu1L^WA_#=QQ`(6{`-2fN:} Sl(KY5cyr/^1cKq6z̊07 fLBnO_+iCDQc/+hJ$έQ0ˀe̸)W_VdCvɍKC:Lg>zW=ܩ4sHNz%pƀ }"&͌5Nɡe vZ>-%'9CDA,ek2698J~C'd㶬2Dd!G l>!qk"dYVEr#$HZ:JM"r7r&lzǴ|:S&lrHmZVLi$dDL1b08kTV=:>&cdbp@X rGjݹ,y*Ï&võk}C5ioK;K%qv ùGa{K+iA0ݣr%1/h6\ uD,{Cl{ TbUbja-|{ɪ^478<ʑdM #O#2<D$=Y_{Gyg2;b<'V&wc($~.@+qk,[ %z Tr0̵/Nwnfs+=rbҮ۾*gMxj\}5ԗ=3Jfʀ#=h.vvw?GS؄Qhlϸ#&©[17XݵŹq;W(X7U *MaNZCuqG/Ggfcm9-cT5ZX\зa5ߏˊإ;@>~%Jf'; 1k e6HΆ̨7& Ae\"!]j:Y2k)a-ֹ2a`ث7JM䦐WNniZ4Nq-G9Tg*k@365qnMM&7,Ws~q3@ 2~|{:)8ƴ' 7:f tȗbIJv(aN1}Ӱ6ID5ʙCsΒ29:%1cR*>T ]']* "]ar|KLrK"3Kdz7>Cظ2|ԶkQ>XeM$BZKXH ;Mw+g2ԉq8g/Iaݴ+bNy@A  6Reh)6q]XEk"3  !@^f(h#Zs 3VǯhtKX#ߓу(:bj36.2K Yɝvww~LVD:iWIq8\WCjGHʋbZgLϬuzn`Zf?С:l+I=*{< ''@;|h{ ` HJH "k!A^+N)tۥqes= kL-'/M[;I HK1{p{g4m֗"JN>՟20,c̑ϗj"p)|5./3aO&~:J8fH9sMܼ&;T n)W H_jBt3,7385rn̔8 LGyĒU5(&n|&hW[]:~ ȶTl|e9NѬ\}!|&żXȵ3m\Xc쌆.wqݸgfa@wɑ+(5z@48\8rX;֜ -d@,zcbڶXk5\xNOPT^wr#ͪRmU,;,/HHs'ݘ9ES Ft ;abf5=!0ᴶo,]) =N`4k/Ѿrya ~eB sp53!}5!S~ Op8ha-38ER.4@~T}TT# bA%4=q~i : ΄=! Za:ϳ^E6cuԼD=|ݨ pf[CV yAJ9fÁRaIeå 8~7(lG΀F}>z|}Ȥ?upQ GbSU+wKyjXV)DxCMI&1u:Zmm0ͲT1=f~D8 Gn a8l1tOU3B;H{@ftq/ ^[5S!)tr̀`16YXi[f&,i ~Sg#aR~8%zL7\&9ڗ<\Z#+ң27'$}d?0ciC89BhN4C7tBsS"@3uYfb03Q"N\5j%5th@uL0$y)g;9_}n#!ݶH\y6>vp3rwجsxacITmBKA  ?IG_\}i; Bx)$Rl T;]X"cO<ĵ"j #<_@BD!=VЬ sqcI^":I`f qv\ (ܹ9$tQZ]w0zkJ"'I'K\q [=fUa2D@"G;8Q[4P8#"GGLrDݫ$0>`>2].p\D±ɖn΀5镞"&P/ւ9W.quP̄1W%rX7 LL1Χ=~73v͘#!Rڽdcz5 6DPp*f6Ɂk 5;>o%q&>) 9Fnqg@xD2,z~7|7edXu>b؉@/ܴo1 OK;b#.h"$u^`0 cϹuY3$Dz[)y@\fL mǙ3Ubي|ϯeY)i&EJ* P˄5{1;bFk R 7 \~ȹ}SMfm~?&tnp9I$cs̭QF2v]@+7ss0sF9Ӏ 3 E^c2x &pEomX(5!t\$S[4V)[# {Q^E`A3e@%Ƭ5<0\|S{c`7F ]={(y`_)+f/=,<`7&عKGapISc.P;o؋+2&0]䂱ހ&֫ m" $f2tc7sJd}SkN[o(sz$Rwu ]ֿjl4sc"ru2C-ugMC93g c.D!5JB3ͱ1BsfhS@3R!zZ)%X{L9JJ:JR;b!a9ti&5_Rׅi5r$t&Ԭi_n/cb:.3{,oO-tX)NF) IDATRS֓"}Y[m`؂rIܤ| L L czOǛSӍ?ũ(1sJ<ǹA7 Ö4_^3+ə"PK{L<0h 0ŒS `&Ou /> K99&υ2-|$X+Ae9#H.c*';J0v@pʴa|K L{͗$k/MvDI+;La,A p>gx1Dw@/.XR4#tH|FLƎOlKgt庄zӺq2 { ?'P=x0-Ub֣f>d" Y@\RTDءGV&D ?ռΆ1$$rl2h{%]9 Zא c6n=]8 oPxXeGS`|K5L2,/;5yRv 'z8&Wrhq '|C,$yT>62bL;{䎛V<瀗Z/QISf :ۜ?sӤ`15L'~m`.68`Za{{[ݸtZ@%gRV*"p3u{b,G8W8s sqض9}5g'UߜDBawFv 4,$uQVq= _Wua1tHۥ [Y.N NR%:,VY2;mMm܀V$~+4=da},+ٔkS*~yzgtl#@v;gv~Nzy{u7'  KN,4_%lwGb87{ǛHB;eo^ԲTKb0d҅,bKG޷&\ϣn5!Q|(К0=2ع {z<{bA:p gͯQ؞X}CN1q(8r&~uܳtf ׄLSBXQ)H&D P.'ǬRGbvZMC8mH&)@pri?77v'ZgЬˁM*S먱e?ցK0P>1WZxTYް>i*ȅZo>s`(27"u.v_@G04nwFd# !`[87bKLs71,(zQsiAZ@5c5H1]lRP 1 #谀k&,68r' 2`BB+@;qq|Ԩޔe[0׆fɼ&6SL154(Jnlz3Ҭk1T̠-7n Z^yc!{HsW&"`Y| TbŹnK'm8`KF1#3@ܘ%q L SMJd!]>sqgi7:aF`jvEz6SDc?57tsmH\ !:ctR4KAMMw95ZBh sAͅXƆz7;a]Y?'8%Bm1V\-{d=>Aaj_F& `w8 @Ht8e{odc{ÚqY b9U[3밽v4+P=1A=6mmk'€QaT ]51@!t31{F7`!C~3~Sixc/1m z, h9 ={'V n9y!F",ЊqݖťP7ZѾ8k`ittG=U c`+a53~E8r sdgtF3;9y;Mx&= hXl \}cLk0D32stH8 ɠBPmEj ajzLkYy[4c7,7~ͩ7 mqrJkbJ&~Gv7pkdH/m1MTzKHB :vfFiLK[?Bh;-2[02vvC8e?ũFi nVȾt^֘;{L]rl,\L%.ư.ưƁ+8q1nd';Xv:6)rM)w`^<&[EB\vGÆvHyeYqL8ޛoqr5h`wj7fs eΟX'U^,3Cey>lr hWv~xvc⠡%V/P^sEcKl'l8 .KX78u&T*#8vu^L`lF̯1mvq'&1Л++nX 5D :;?@yKL57H,0_%MLجIĀiː8:.p^ntÆڬ>vF60ޒ f|?o4=Ɏ܋iY ЙsG͌x7ޜ]6)ap {i c:q- 4Y*ν7eayOnj{E9]HG 6q0#soG٠turjKfzTn`vKLngc2:㔐pɺO *1Đy08cujGǝe`\@SIS ubKu`t!&$m)k?`63 CTGziKLhO`@lK@dzn58%HzL>'jNH!sf݁ 1Э@䆰?n0xF1 k>}_^P+ҸwY@X4\tmu> .4,yek1g[jqQjge 9bolJ>:L3<bo>Ŗ1rmeC0ІcG۷"i"$9=l>30҃eCDY Lb,e۾DJ΄y/Ṇ[^^{oSVK߹?L6Lg{ĢWt99#kݠ_46RHʴ79y( `y]C0`t͵[xfލvM@'tl\0Ohl|-pͿv+}vHl>UHpՎMNHB i}<4VYz G,9Ygە\aZɬ2'v]Frɣ>SgKa 􊀟N=S v^24 %ôVw#J [4_=rd_ILbs ~t:٠ ؘ'1gF໥r= 5O PQxʜBwm YNp #t_e`[#'lnRO4%E{b2dMSk, h.KbI9DSHN4F紀nG @d!L-2`ZT@^tPJzbkL 8ĴPt@nu}>7?%=v7nh 7үq*-4n`,=S:y| gY^ސj+c+Sgx6 wOf_BOtqm/n|5L}$ IG!|BNΐ_bZcCB:nϽϼ%x 1SneY uF^i.K->7Fָ 6Nu/V2#sk,i. 4Gvi-πq=151,<-Rq1zGzl`KЎ\vw%# *`S-[{wvcj'V p/!4W<%Dc7J1L3{mPGsfK8[aZ3y F{iF=lwGe9a ,1Wo̹ܣN,Y1`)@͔k1C&-n!+uI<$c{L_˲|4v.H$4w]">PC`5-6& f=xaS!0 b<#vDa ԚD/@沼HLGBtAm~iK!E,)qf,QJa F aZK/,2뜉Mt3a3L̎a>n;7Ut,BB {dsc#4ɛ)'2*g!eeyϻج9~f)LXLrYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeY_bs̲2#hYx@'- .We,KI3@ޚᵵ'eYvq,{hbC5.}njt]eY@sYfc΁ǀ,ZcM8 dse ϗI]O*# ʁRx7$#^HGdMIKG\HjQ 7!U?\%<_1U^>YkLS"E>j{$;~eyɎdLk%-Tr^̀\*ekO37%`I4-Y cc!BN .s-@Tn N8Ϳ}DS҃d=K BV,/qL4ǐ$òlZ ̺i>}?kx,Q)<4-0ДBH4ӒdP[TTZV#5U˲YEyHHYJKe:%MRJkfjT쓜4jdeK%yayIG_3@Fhkӱ6TeY@sY*GTBײBR\F]ք0?M|dnY, hǠr},9PK&@~~ Pj)*ʥD=%Qc9, h.24N`Fj|P#J55ڊPNCX hVd9+\% c%A1zlkkjJxX?P;MmguryyI21v@UX_dy-9n`9⳸/LcZ80DN)|Iޔj59q+S\$L.esGu|Zsa h~gmmCm*K­T>'$9,5b_`s@oNQz.V{, h:\@[K /ո40ޭTC{1̈́9 s-1g)_4_\*CcPPhyȺj2ܵLyfi=>r|AB)ʆ,[-wۯ7. eI=N~2Kᢴ# r3Ubg:XkǒNs=Byߔ?.% @H )˸9=y]UhdI-L+o3sA`6J`6܈Xe7wrn%7M$ X*' ~E!朘r]j>B}^ pI 1~^B*tg!W^icT kPNMu$P#c,Y4_Z 4J:ؽf{`9cM)1ްUO?Ui%@ՎP=%iW*Z4 @vs(cfC_)S;<NxҤԚi/nJvjpJu.f}3aY4K)?kJjj*KzCgIHh{ghRyM czj-ͱ|TW6!^\G wDh/qkTjEM>w3#K!4/L^YvA0ʣWe&!jG1uCp+UY]oA잚}\*Njb` 7/-c2LtrM%<MC&mPl mKRr#tB$35\dy I1ԇu~:- IDAT:} hᡥ7sXG Hj%;<*`k2aX$K*̎2-H9G*_R7~D͙|S߫R[i~Mm¥VLQ-8Rd4=~yfR u9ƬK q}+BT8ӘZ[ KE@ żkJ/*e{9e۵l5 X~f/4O,2.dnJ3}l]Fݔ&:vrZoQ`%Zv5_3j˱o kX#)@w(|KgcMb\1XdGcj{S1v̝Fren*Lc6wJҍ+s{sk34eK19^ c\|'wqhsaTV'i/N^EIwnu)(ĵҌ/uҬ^=iufaŚ KH>onԖUX.2B9 h!%BsA8>&Si])*"[?i\ӶY 4F{"[@! |S NUqz@u'UOi~_ 8OzUgd.Q X?7.U:'K^|;̙ vs\[bIӬrf5iIJh2dmQ~IuHt8Q@5k\so;'*￧:|~xpKn@FUQ9#Kvi!sqGP1 1kgL& K}~ns*SۈJ2Asv_H]ML@-}f{ u}~!8Y[]]^9羭StzUmxꡀAŝFrD!΋kfg !Tv|?zyQ*ʳr`k߬asS0S wBFCU⡺[3bvaw9``r`ʏx2  zR{|B}@K:߆U?+CsdՋҜr"pε?kRw}KF4 H}sӣl []25D_|MY>䵥հӒ6ˬz۬ʙJNlUqzJ7k ӡ:@[ +x݈@,fKiq GX'Pi0kfRi^YmS^*ל Mpk k46k1'3yh7Oou{wH;B |ՠ("PճDvq?{kIv}kWs==3=ݜ'9P$EQO[@D#b;A~(mqAb<`8(8K6IQ,Q("9pf83}{G>g׮uJ{yVթշַַ^VK%痚w?O;fTR ćXTb֮a4ùfk!i(K>7~\TuCIS3&u=ݹPS"7 (ۂ^ڿw}Nߥ @iԁ)1l5~o2_Um|m!Ӝ޽ׅ~0<æ][>g<[5?xl>cX6L0ɉ|(qͦl4KSIܐ:ݖ4y*'cy2S0Kf<'ȬCrwӽrށ=;9hm K^=\s(^B3;TMd߱˳Ϻ qo8FءmcBTVNlʅ1asI#\h J:N>2!:''fy-vYo73)mG pHt'1U;f ]<[/ƖG`8RK? 6=|!y790 ۴5+]9T4pugz$䨶w `BkXbRz<GJK?]Wޯ=7E ci-3_Alo}&@1iqI>Q ʜR%6F'=mKHCK^%0B$3;^t~%SU>d:;G7 0n(=ex 6'c[ScyVVl_5b Z%lyIT4ks%f$*e|oiqd|K{55"SC/ԓٟ%2?UgY\`y|-lq]_BÛ?~QJ=9֠h (CtmOnG_j^)@, aHԔ1Nfl.m3$Mcм$ mO`t?ԕG Uy5Yauz-;`(w4b8ƿiTx˱J% 1 %֊Ƿ P=;2_d֝kR/s#YRIZ񾖯/0Rf%cKġsM:Y:_L=O|S%en-w`[oUUA1>>!gI?V3d`?1>?:Mh:nV~7E)F)bg*Gf==6tN)_ns8aPZӟǙ%B®VhX޽ wrVIv-P`hAUUSr HBOx_iN- c֮-zO"jӦW?7/*-1rAЦWj-%a6c7ru\Q 0~L߷mîr=чY=sHU`xw.w]>@ RWJwejᷦk 4[E!{[3;2M/6Pv򞚁FI15877'PiFnoһlrqrn7DsRB[5?<|_&S(fLɻm,N< {t~>&hO.WF]b8̱%xVo4)fq` FPtbf{/mlqRb@L$V .,)# ssޕ!9P6 Cc̕Ą4t?7 cNj3m<ս`\f*g 5=`N&x,5pPLuxP[  )T4Γ@4{Lw;v7GoD>R3ڈ͈K7s%KcN2ST4D^3^c+$ISym!3ݯ=_1?lOf׬:9Mmlff pIƬr2 TiQ3'"89~~*W(uhyLij*gMӨi|' U-N>gO,e xMz}ع>^oIj8Su"F_}'&˄+V!_by|ͽEIǂg⼦Kʸ$H(uHL 0c_-)j85 K$rE:L^߯~ djF阊TQ%iLni,h }SE`j0Ğ&={?_M>f ]-͝7cBfYd2d2t:큦L_ ϔ I%BRU-4:mا AtO"P5[U;g9k@%XV_ 1KIOPPėu?/Aʓ/^ TM `FZ`y6oC̅,% RIVsS\$kW癤VcRyi RyJ@A44p:a f_oށ>w9PY~Lgй+8]YzJg)ȒB s잿W@3f]2}#`w:y_,)J)aP]A3{܃q0;[bph PcjUp$3h=iۜϸH֮je=5̠"ЋɭLm8#O00uЮ:Í>$gMJ2J;;;l6[>N1͒3BD\cZDbN5.zcOʕIrOK,j|̈́{T?T$2_fanS:g2{FI+(50f.tS@|T;鐯5(b$ADnAq*07g %ﴀsk-0www׀9Ͱ+2X 2,j%̘IF)(x= e7HkR IZb~]J@2g`RRǪ}:rZ]^̏a5"76lTρ,%". 6=5&iM+}<"oY:sc򗚛}@؆;ЪÌ89w.3fdP3b0픣ǣBN Kc0 8}N)sJ IC9 J,pڙר/mhͧS"C$Ա=57u ߟfs o %yN m1F01hɏy>qrb0= f~Ob+z`Kqa)*B^nm96d<}H>Xr417x7ᘀeB'A+Wʕ"gx%!, Qv~urŽKOrFܕHvqwh2Ƶ' KAt&XNEU@2ٽ{ 旈@s+v;oKe>))!ibZ= 6 L0b|X(h }o0J=0^'ƫpx 3VԊ.pʺTYlBfڙ]/޼DH^BiaO&< * mAݟb%G[>Oc^xRlT]3g&;{#L_Q.'GX}N09x^TE2TC;^bi`i̝-cDž~iͰU_Py Krr58UKf`E;Fou8@KRNIیC1m\n`&2K3.NpZ>29<; \d4#(r"$gK矜&'nA0њoΎ&`j 3=Xz<,' hkayfu9vSeeJKح*}TO_v-o&$Z(K95V4` X)$!`>£  󘭽˻oBr3.)0LN%ff \ 120u5 {vsBH5?98~=8T0Uʌ#;4IrP`+R/-v_r.-y U2OZQoVSn0aHf̸dzJDc\q/.|`Ÿb~,R*0o&+)˥C7 sPt MP#UpmX %(d&!Ul<}+XI=2+a(TSE\إ@32qk@ZƄg KTzN(397|/t $qpnuGf]׃p<B<.1 q"p;[zDČ_Yڶr"#\IX ԋ۴voR9Xy\ҙ^7- H  p@#8,6J}|1Tsm#8>˓;ap񕎁ID˓\j߶핔Br$~~R}ޕm2c`M ,ϰQq*3lKmZq8ť CPs &^,/~hUXtt o< 0=P[ u]cgg.c8pcŘu@>Ǡ:\r\rfkCb vX p7 SC/VݿPx9k:9+bRdP(֦6%aoZpơF[ZXc#v- 3MwSTOR<)8K$x@a*U vBL?955`w~.%;7@eFa. oLuLRƛa\.E}χ6 d[]{^fr8cdzX@ w_XgLϙ ;+KG("wb'x]Dp :XJ_JNjEwp urJs8;Rtjz{/O'"I$i%Ҵ6jXao> &scj3$ eAc߄6?pmwI}?pb8Est||pA'dF0}S+3Tǽ2Mv# Wf$ mC[,Q,C_&ZAeV 4h6lg1,b!R^&jc9oaYK)%i.يW,U< @9UF$zJ9&/:Ķ9昱Rn(+?OLu٣=9Pyt& Ve0 26Of(3/Wx~Ͼ=ֱ)킷fcRpXvX0㌀fg0Nl6$Zs Y as&@"*LG64$j(ޞ:e9Ը@^[{zƓDC =?>:4C3v1q˳5wW#׉OPS@Ѱlp8p>LQ`tMV(3a2UٕC[eUP?~9`y|?.}hm[K+-ƻmW`ʝ M&ٛs+r#{Lm ]`̇ \e+ hrf2Wg~{&GԳ޵k0_0b۠9;n^V) ɵ~0,Brsᣋ5+#zK8q:&p 0,kh[,doq%YxĞ$n="Jklqm(X<H(+G&k `q}J7rz 3gWi/$H.̅c,"L9rqݕFJF{yLmd^xS= |fB+|rp}Kouy ;ɠ^TGJe.Pߵ2`qn<Ì)Ug̫eBNIE4"D̶qNkPqJtI4{??y-s~^wmǏ=M-1e<-RoX|tkcoFӃ){(` Yq &? )GTs8&)yfJ9p&[LcLgjQyl^ul۹eq.M'(ZJyCL 64f=Kc ln6UT.TNHJd0 {$LMA۳>Mqϱ 3- )P Âu DSd+5i,rxߌ@3WI4#0gA"s Bz΢Y93~x~+ }q3,2g}Z^7x;ˡkeGUX| ~yIf&3 6}#M)R  %.7 kW-u_~2VG EB653z~vqh SJ uP5v LS K)b*vL -bv^x}lhDsz^[^ㆹCtVoq2 ѽJ[xq[uvhBb Env|3Xʈ< " *OP)26eI%)1$uhAhHt=>[1g^_KT-D9OBq؞cTMOBtrd#ҁcNw4S潩AiZN% ()ar޼xM=|N#:=~MX-4x2=`J`]ZwiQ|fW:DGXe@cA\chc_BSC&F.hMJ`* OfTr(JI4!9w.>Dڵˊ`pv{z: ğByH__1pRK ~TXv=oo+蜙Wg'2?;(cy_p"Dfi4eUj!*)2BN0 uSef/KRiiNClpp Akaz)`toZ@SlZ8+"<›PKS_暪ݛJك7%8|iɰk0xKc:m߻mܘW~?εFv[eK^Y<#I2Tcp9pxviQeuR·Hn+|Ko?ch\ Bf8AGQ@M0T>z8kL " Vxmwʾz+\ς ~T}-=/,UՓdpUx&i2IJNJ.S34S)VZ7Uc5ݛVBXf׮?njI/Ƃ eBd UEP!qF[k1m,;[a7dϬu*!|c y+VZ @Wc3Wуcǃf{-p^ xX99̜ӒTBђ\[~WxJ.cs<"USC4Ab<:,m2fq@2`j1Bfhe*_ j7tȨ =I"AS]PZܐ gܟ)K?awhm{=8!`E)[kf<ٴy29_Ʈнs ý$bS*1*( ]~8 ]vG?P'JBvyaEo4ޢ& DxqBI A5[KaDTD%%N)+AHxO5l !L U,dV=dπ޼9q vy ^-.aSՓ'"}^:F y.Q҄{IW .̟TL? ,Ytv/6,SṚ-fYeSECrZTxb>XD JvhpOY"ÅTO <C4ӜL3dDr-`cBB(gbcrqScR& /m:&}蚙9[bZ3ծ͟&;BlaE=W#PHݘM$L3 2AC8)bM\f6dv-l`gм(N0=H?d{Ef6<y[)_Kx->Mǂ :K!m.F.0c&pԐ/~}>/R,4f)~L.SK0s_=tސ^0S\BYxeY$ Vˏdyo)\6r (VZѩǀ&hf*FqV04ݯ';{? {Bg:'tj 8疇<8Tul.cz3g1|ϩItq }vY0ҺL8!arۯLCd >̦[qq혱q 5;nS>؍頰;(EhZQFޤ$eRlȘ%p*;h0jq{NB@Ԇ)78%k9X- D<:-|&Wu>^TMgdfypO#iCs feyx_j2's[!X ook1KS^3?Am}foiq= os#4yz9_xzof n*&3~LXH*/00/'/}k"< ?F5.))})eS p[m:UWBGD3iKLҒw찳 {ZЙ`ER aB$ dA)ZYYFyͰݽgx҇E ׀g`eF"= V IDATd JzB܃'8s!SSakxr?`789mƿ3.2CS1עG_~Km-HW%Pj o]Me绹qº BM(;{x&[2N2tHHu츂4_6lw ZTžtxbRG'+Jn&rf1Sp^L,״yo lXe3 ga92LLX0 [ BENR"xm>0~x&(I6W$y& ǁ/ aU^YVb$1;1&heDШGa ĝ=7M#89@a*_{hptSb&w9ISB!Xa cX!G:Et%I[aT# `M0 *`&R?3DA5{ʍri\gS!+ 1.0#|S!<%&2Ɉ>)unV^ E2pmpХxPU{gc'TY$A dDM7.Dbr_H`/(%f Hwx/7n  ׇ={ | |MW*Jsw$U&HE"dOZ9={Zϫ*aZfeEhh@or})LI fs ?#7(cR (wLc5@#2f>.V zx {;3OeF!x:p:\r )Q9d+0~ ΀"˔pjC8,I.P5_w~f; )>{~Ď1K[z,e}Sw 1d`w &YqC<i)v']" RHtV~c}.((1 z~+-Zh"8yb6j!paJ$*[|])b/5sK]'7`sn bu{V>T8.)צ^ !>sXyX<Ѕ =: Ep*5FդbVxBwqz(uIyC \Q!l1nQǿܪW~ǖdZתaBgBa8MljjvpiCb)vsC[\KFEy\m⫌MpXYd~\ x; 8N|b98,XdYUD{f$xodXfQr>͂ww)_/d̤ujsAIL\K=+_ SHI ǚJ5. .Bq SOKT`MkF_K&FP(PLBVv S!7Lwa6,v&D,/R4s f\Q(nC_:]t’#"q 4PXKP}2T;ĵBB/dfMBQA cdYtA=v6!"|o+@(A2-g 8wDs`/DQv.}>s-ɍӨkiso]LcU/HW !ش"@;܊Q& Xbf;E,%<>@D/GLG&Rs #sr7Ur8] F}oyЇ-HČGQᇩ^4LԘ<|, .7 7C5u`:h( b3'z}yv"hqaRGJ]Zܮ"Qc&کJJ[`LgWH1"<76C*zK4=;!P8! _ÂX;(5ᒣdjx$6g2=7 CPQ38%=`m#\W`p>cQ2#6ۈm Mv'm a}ΐL26^."sB8d8e&%dfTM@I /gv@Br" rfFŌG b92oiI`|O;#ϯvn;d~WBϩ*4]Ct.Ϡs] c*>&Ԏ/*%ǽ{|\|ٸ>c ؅c059D}[S-.aR^-x8K1 FQ:} _Α> ʓRz%*{?MUSa 4C_LnkU,\YS=wցEHɆ,\Y* 3/8ƌi(r13.c1FI%J$AM>BG{`AT;gl`Px Z`[p->+0œxS22f%sӥt*Q~Wތ1ᢩ;B#p.3<6M'FP5`$"d-O*MA3U$ ͬ)BQv)L~q\`$ ښ'az):[~a!<2;"67*Zl~qh'_-,Is.0uQ=PɍݨoM%ސZИi@Xmx9z>Ûܿbvv-5"54秹A@8n8`s<<.28$TK<۴{)Xᎃ\v‰ % 5"ZK ,[BRH`R!5TIͱ$1[:&27`p-#jL|a]\y"YVĢD|Kpfs\ )醬}΍Bgr_S mrDhqd/u",&)9vk%?oI[06MZzԩ.QDC5t1=/_ ;"jΞmLqH;Cc62Hs)IHk5Sbu;F*DNB`(6M9́i3Fm0R;]0v.C^d.ŌS0,|tַKϟ8@4g`U soZϤz!?!Wߠ7*:,4YJb_-'7]6y*`3fifvlM3Sk6z`ĩ@eʘZJQFawJ؎LN2 0Cd}k]1:q߄Cw1,RWxᘆNj Sq vuJ

BLO}DC;܇!;`; Gwb`q7p&,%8\yɔRQ M1;\+GQ[|)1pnf<_w!J̯Ns="#m.z*wN5eRBI͹4% @;hc>'4GOP!Z+q1T?&k$ 1vyR\PteBvNޘ#Nxí 8 jW݀f ǾhfFCc/nz/+83jR0>/0S8.Lsqj5'G Suc,I" W3x_抈&Z^k27: kp.f)ohA3,ͤCll;)h ۳D[ } 鎨.>VzY o 1-͉-cGJl15BRfs^o;1!ZOL`1f]ðv3%;Ae/R'ns(Lj$lĥ18SD+TzQ>3T@0ߜ@֩ETaGr2 HiX]m"d daU%pcEv0ە90t ^!pCXXĶo3rw0uIX֛kJ߂ڻ#p}f X>牝"{vu!Ct'?#JuI&~sF4Z4YIJ1A@'_Z]U~+(m@U ʗ+OVs Kc~irVi"feȸ0G6,({pُy3*[+pxU!0d!K j۰yc6Ks9'akw#x{vObѩsa d\p-J5Hb2ѱfa4WW}qD 7vDs'bKpfq|zUUIW9_/X} 7rLZ-x tNA[<d>@Np-^s_'-,|HKKXfR| :aE`|K1mµkm8;a{CYeMgI:Ĝ)S!yreqU'HXSHQ_%-ܴNV]^&9ia+p<;'R&l)aQ5ܘܞV];/1cɌc0n:[|2FXf8) OO(EY ~+ Ad\AIQn 9HDt3a!r-SeM& "!h07%J?^@jQK;p4KOmDi, /f |]=˅mQHM]O 8%vB; 6!FtetCE\قuW.x{Qa3IM5+aV@31Sm+5=WO{MÃSl@sÂADp˅<h2L-srZ59fwFnxRQSF11Ks~h%r<*ZVʦGM))9$ #xRZ#gR"65-N avuy6:f0<&Ék 2d+?I,Z0#HGT>0JdJlyKmؘ*&36xKD1=GS)i|0-cV(bƬI^0Y/ưH iPrH-k8M 5GL9@ רg2bJJ (U"Ѡcx+)c( RM{x:1+aIi l6E"9Z*J>> FIg.ARL*&jtd2jQnB)9Ŕ' [NH5w8A`79nKP F~puZ QX)e;R1ȥ0R's686G3Q)nVRMXIG3х徰[u910u?EQp "k NHC66ITBy@wK3!UZ{i tR 0Թ(_z `%c]^_\uХ1k1ubڇU'QK1oX۶VN#YEWbzwButf9IȏpsĎƉ[<|sA; "czeJa`Fٛd1~:_޼7* 0KTp`ԅ>)XTN+٦"t(($uǛt!˜+b<,"E(5DIMM0OԜ< 6&c8kSHޤaaPR NDr"I FૹA0UdT z1rKY9YYj9R: '.zmJM)z;M.Z&H}fJ͊s`4"u)E4<]X$"D5Z}S%Bms$XsoFdNQPexze\YVsJW)1J/jyMbfL; IDAT0*?0sNZ{aϷS ^|BS3vS:'ᷯm3{m5lRU >&.M- }>znzE #k)Z,SAN9x22j}b7t+5koBsh[ ccùni8R'vJ`2)$;NbsK?Zɓ"zZӍ0,DINNpAxF9֚%wDStM8chMWKRL D! Y  vq@"Eu_drlLBp|m+=΃BONX: \ZugֱsB1!6%[UQa`CoHX4X m*AGN+l  q8]Z)53sWx/+SJN ` lʦM$AĈS{I8(Pӽ'h<jTΎL3[uHѷJ9vv3K()1p\uvpZx3(bغ2j-s0lIb rBD\SrSpeMBy`hFo}}d&.~| 3;aadB` s#{s &* csti極% _Άߖ]L!\؟~]\s([*4HA 5l!!է KZV)hn)Bޒ *d;ιίO8UzoMI3º~gNm oi+Yr%vF|MpH4!glLIːfdWWwU׾- qC<~@fUziX"sw?,S5`4QY2’;5arZ-0j4\Pzb |x66Y3.j.sqAx:nqlie@\kT}PϪi`y96*P/Q\Jp ='ݚk')~P̤ɲH >u?ѤgWy Aagi:Wa,ss]?wD}i/1 9^e`)3hcX0w)gu-  <eExg^=:'UT(xRN"s+)_* g!#ȓH y(X0CYskq]s8 :0L1u>q~9s2 u-I UKƵlLhHld*y1\z d#OPsQ)Wh)ΆHh]9 1+ Կky@Y3pL8d(, Uv]92@?V>p#Z<?sqz57ptl%=K ͗Mk ӗ֋W{ƥ@0JMq01XNpn9'8F(suOT`!f"hʶ H}ZCJ^sy=<3uZx"8' -wZM'oQXbyF ·'0-91ղ%۵ 'UUpDQ9)K礌 |4=cԉ;OߋU"c' ւm:%Y~D)_+ǒ˳3PNdB6cz<Ϲ[b,YhxL#%MWEg)c36'}JKHLdQ,ׂ`mKeTROMbii  x/E?aO@`&]ұ,Nh<I#KtHӼMJ(̶ 6(+h`*DF11"}NPc?)<=xMHsz1>cii@#gU0P)ci1<3(e-J:sRz(2ީ+MMoe2V23D6 HF$s\!9;oRWmK`T zײvi*MfG@dڬq "!4m|~Vs-PA0! |4M]gVP6CD)NSQ]yN 1+z_ oXLd(BCxNƹ<`Q>r=??D@᧹>%C'm-ܐ2ZhTYiVT G5.fl4!5Nq ? "NBDM`ЏW!&-TdS܌JCEM2ƬJi%JQ iiAdjt:bMohr[oJsSMB#"|F3NK[>H/RsT8G8㟓:ͻ6EWjf)GZ>3CJ(|Q{s prk +1DBlTJ6j<vJG熂of0hq:*CVzJ猏{=ZB.pyLu4A)v\ A“OO85-}mHJd&J K SZ#/4JH"&\q(![IV[pxszb{̍[hdOH5,)7R3A 45bv)bzyT6w׬7)j@ ]JE"Ù SL3dnSV3qu< ~.Fڮܝhk@m\btT53~ Z}X]9<Bezj)2L55!wX&CB6VxN 4I$p =r@J 9sNZ.!yf,h4v:='@ !{̤[3s!z<\ D78~\.LpԆ5F̾I6Mm(l nJY Hbz{_սfeͫ[D)r' >2,>GzxZINpn6O`LV M mO~Cw9z9 5ȝKºxhX,I}6-%D%+8G'LZ&ĕl<.r345BB,?E -blewG|` 6ֹ:>Ts0=Kښ% V ~KT}ioj6$3i>E"`Z>K@ 8x=%F NJPk B+\MxU0Ұ"+'i橍?uv+CŤE Wu88h5 ''M3kv)A#`ɳ!ykhAw)>'TCwڹ@2{5%ˇLc}A.y#Pv;`I&nY<޶|bUiqd"T hSܹ4iIu{/6!y0@Z!DG&ʊxNԮƤ*+*;#?.rV,k]|pmaԩ6s=>KqI9]7AuZaEnĮXZ<Mw@\>B3cWJ:ңBMdx*ND<9sHg%E8(FuLX5W[7={ݳX[R9YqQ3=ivL@w|, !-f]KCե%ϱsG1j$WÌAAfzL9qXȒTwF\ôB;$@UFeԗCkIs` ARA EHM~W _G I}!ޙMy^L@ԴZ:˺a0f) J`9Ŝ,%8Z\V]0rN}Y]Z-\۱T2 %F'Ӭ{ 3@Xf/z r&;؋2.ĩRauO}/N\L#K-~[ Y5u 25]fkkB%lEKdp)m Oμ$9$CPjY[}cO /MmY  mܦƼ\704Wd-TfХ"hF-ՎIDPJ+% KF#j`qWdd,3-G٬=/ iK4ϷFIE|zDWxYbvZmz%O9;LB[.3~`gࢎiy(XIխ>尿qa8 suc0e`GdE& qW$tnm`$ee{+4M@1Q^?CGđh.ZH af\V^Z} ?-R-iPLbV6jFai0Kh\˄Ka)pZss >p242s@5r=i2k٭h7?F;q)bf N-B[ gDQi4d0He}F|>v 8TwkDMsA*iq`o~Vgښ#&[ F鐍iO0^#}j2=grad]t.F`_f ?G)@ L }a#ކL8on"nzO?ރ8Fd0RHX&$Jp%I/@39Iw9pt[ HˇnをIa?L3e@Ry"}8e2r⚶sf|WsDg:K~NR)1:A_q+8d&I4hǟ=[))9P~}.q".s6sHy]>9PwLYT|j#{~>nlFd1L@Yf%x25M;_Ч)isw-Ӕ_ EH@5m7'B6Tk79elz.S9 M sr5sfF痘wx6eihsG%FPI.# 'ĵn}"ry"&/1T [&2L o^|C nF5 Ƀxˁy! ! Bfg5 )S33쑚9eV# Y͇]Э%5fN`[xNy%n+ˊxheG888Ӌ-.Dx(`Ai5 >wp.:ԂboYgZ!.کs k_?/!9 g|w ¡. \woíoo;߃ۥn e1 $&6,NZV,OkՈlE(gL]wkj/[jW0f czaӭмʅO9&L^m9re"c.ZfrְTe#sv|f&xqFlP|cOf^s-_} .[5@ \p;[pOvQ)5%*T'Oa;x9| 'Yw -.Vba>7nPyt֒UH]vx!94׉L#OxޙʨGƟ/eBCF-J=~s"EQg 9eF͔9w69Ȩodʐx2穊Ty'3c.Yb5TfC"!7Z>Ha9Ĝ>0>t[$ IDATмe<oOɚ=N/{WD+V9`^L~,LiGTTS"˄TqIߝOvB{mZ(̺:;ui`sʜG:4f{If:@t^^н{|`@;4霭;eV}+ },jARDr`}L>u"%MRÔü=2Уy@;0xc@jd1K -s&BP}^Oӟf̈;(|k"| ^vgvGwϹs>4_d5Ohq84gfX!:~wP0sKŻ { "u(3A0˝JNrf%Βֹ(b{\xUTe4I' !Ҥ7.[1Nc4 `Bu֤1C LlXb'uKitՍ ';}b&FQߌí`\%qV$K/]ׅ @29Mb/gINئXvĺonx PӮMY72M@;rJ|L&|iHhm~ ,r*||Zn@ޜC?5bBn@;<>`3r­`^i{Bws@<ƱsQK1O#]L&*詰J9Gy2@r>j:}鹐;(KA4WkQuȻ}GVqBkm9zj$R#0^*9PDO^VUG{p6ʱ Ek<$'pgRK06j7t7~ Dk\.cnu)[$ Y.9{b4 $ SfvBr]s%!#d']mE@*HO8K~g1Zc0q([&,1v]LϽTh{ !Tg<8 ^e.-*WOlR ',*NlhdGPtLrAC PꪄsLqm| O+-.IA5I8f卩2#0Ybv;;5+>aN)w"iӉP;Dhދ0~/إ7.CظnhZz3تe{K1s`u M-Tg w{Tq&-~-~ε$[ܞJ$ҕo8/-jW[cYJ YB@Mvot%)䎉5%G ( \YBD>@d%Re{35A`#yGP] `ۜ ^n tHY]V-}Ğ!`ÌשO+Vy(kkIXq7jKp69Vk jF,{rI?aߥ~ ^s Z]p0հht gs92>̌~^eֲG3'*CBr¼h'~Qc1B^fAT^  VC=%O- ,s-4͍:ofȭ {/!Y}'"B2ZN~J3\Ȱ `݆-8 c|C+CF2c k4MZ˴FA6ERѡ-~3dp8%&Oװ?#-aYF8]bTA1o,k, @߱Er'RzD\[yiA9(oϸt}i v=#UoeIV,~\ Me-vҘ\|ǟ4/]P q{b k<ЭObe$;LZlsaa o7 #t c~`9)[ S~.*9 F ^a bB'++N2xt͟2D|8^O!rL.Scyk,cW1tx+E9bh`P YEK]wE:4KF)˙I,'S#^lxy` ~zL@_o3o 1?FbGFF t(x٬o\Hs!ʓyֆ> :]jC3EwJdIɜ> p7@EjGыT7&E:ft5 hd \'f݈ty5fU6b*2Sl"TI" {9x52{Hp-Ox}:[B=}fikh^3j x_'g 0 ' <%kt ][585 rĂNǁ"; 3WD0Îe _jI]$"B1;,Es(0f'0:x0R+TZS-va&d4Kf嘊8o,vZ vjlS#|sqc)(rXȝc!8CޮG]llc.1VBߔ]C1Izqxu^l5-C7"VWi|WY]x &煜pUg9OثAQ<Glhۗ|=t'c+u3=3=:VFCx /& ɗC\M()K[a*is.O;fa'̹N||5}''EpJpͅua|*71rF1ɜ"Y R堀+JCEYR1,/DF,ה/dXG˶V%FL[weYp0pf@~c{(IkX,S1k~.x;;15֙b} cgKNS l0"ƈr%Wd$~XWSS -3\j/oxؽ0aiRrW"3 Cz/xeP,T1k5_hJ3riڡ͝S|DhQA=1֗r1}' cݍ)XkjqCg/O54s(ct|V@AI]}U, L@7ʣt 3QfgǓCџ*vYsvc'Z=oW:,cG^$qnı)mv uq1+hebh(Sɧn yG|sg#8 yٺu{4떚vlS{/:Se3p27$fG.o-^}bȧ,Ukd+җ#e8JPJt!>K:ͪ33n~DBm1O)vYSo -.`)'Mov",w IuȢK3p"Qmqüo!uU>l('.5ΈZӔARZ4%[i+Y˺ȉ 5i%ʋ% L4- э\+&3%zi|<4LN"9f85#YƮs%ۄdOaw xHk%vyWI͚Y8jt"w8>zuwEt%$PJӬNޠnTV@" M ,?5 q$OJr}ViQ0=%Yb%_><DH Y'Be0+W$i::d2c6i5a_˰SgO.sn-fLxِ^<폧r,@v*+[̍>dv]Cr.K"d&0T3H%vP`YDiJ-R"0o\sBܨP nf:h%77l"5#R(&jt|5x=n UYs3mƠe!LH$>=mu"Y#j#8_x`,Q\ߖ\X^A1A[KzՈO<`7;ɯ+K$T*ͅ$q.:9|Y=ǂ̖f)x"(yydBbxı4mf%0jAn2rLW{pɜ,g<cxinMS0ݜEZ4]'roXHH1b %ㅕg(nӐ|?*¬H=(SemѺ?U suc?ž{CV?ewcYQ#Yq'Gb>7$'tU^ҙf%oro4—D]?6*t_)p$.D*đS )KRG5I3f*C)&zm *˟=#{++3'I\Ϫ\rsQG'dl}TN]<{>{g߇"YXj?0%|f!ۧwI=2s.fJYIj0%.m_XxcaRyIqx<[$zK7&LnMz׃ZGM{ygdQGpn.iY6S1?Oς1f4 ߉C3\cSǡ8N9GOFcSx+a+S9yyc-3eFҼ&@l&0xgFw(`k!a1\vϓiAT u ) (A [78cCQ3eԕ !Oj)1TΨ"BZP73?hc_I֜Tr: .!u}{}`9CZԤT9Qm!`^нɾ6# q4L0I%$6DgLS xjETw}щs mUBxRUc1w@o%?$/ďd,#Cf¹ ͋,ŌzӌI~_̨Bu}S;ߣ=0~oOǖ<&4SdoNaYbB]/ԭv;8 xkῇ=mU"4̜;ѝq`l\]> Gc;#D߫M)t"Y3;q^$$©s{J2Ś _DFx-!eX㤤X+oB%4.Fue>8 <UCQq2gm ͮ@b8-x+x; =x*όްr6FҠ]x=1kx730v|K9/N.k.e4ki? Ƙ{^caz+alhqyA {ط DL2=&69}:S.βX#HnUlk" 1wO7WAc&f1D4+ƩL6HͦiNn3`22XXs9u&: ˀC@;*^!Kp؀q+3&D!b6vLyˌ+xO&g3L2r LlbD[j֟S?fI8w*x}4gO>։kDωklV3 T%ڲ,UXs+NŒ~Ry +1<1m._OL|$6C3*͌- 6KW D'~cY 0 Frs{"8wMт/ juɅ4M3L+^ ^ 'ЋkBJ7 \2" 9GVHyj8eLǚPuLVWLEQ.X/'7 Xady6JowFh6L>PTIjDB G(Ou6p:*m|4͔LuZ-]&#OvC"̋M$ 3&6jgf^mNpmCM!1qV~橌yBO])韹՜ hsV.e6f 2"o#W (J֔G߱t+P ZOo1ӻSI^1Jo0š1hA)fs4rK uGls%qXv4sr E ?t.~unTbg-tN5{4K =ݖUKG' MH a/ KV3R +9Y*)5+Qv nqk")4{?En5a%} 3ً0]Qz5枛:%? !Mɥh8wⲡiR[-:IaJONyݧd-y׀cr%GbHW9A9LԮrqr+tܚMF(Vqz@`.WSO0tLek76lBp0)MG)kV%f^]%Od|JtE0ΰĂ ITS=:GËa堀1a$;^ǹ"_h"rDzZRTIjR$܉ڊY1Q1h}Uuw܊ȹCIMjW ׎ýi5f)&zn915fM_#{Igõ{~L Ven(U0>(&dYލ-DX^Vzfd.ls(,Mt {k)OyP3&bh#)k2cU)!Ǹ 3jED@c~zəz2%vRZ>֢M?dA,$*PcvbeHF Vh<0wzg9J %^T_YMktEVjJ`#EA$h3̛uL[o'E#"Pӂ)\?C#jBs:jRA5@Xzn[keC.4Wa}0A\,IePc?dXk'NiXuԵ+dO1۟ 䊰͹ڝR# 1|YEI,KZöz狄C~{nJqX9ph+TTI2YYCL=澥 5f wE_P I$Mt8}+{u&Ih;z˷8vKfۈ2}@efMn uͦFYscF#nFh2]3W Vv | 0}8lr hc!~oԚS}k4kv+%Ywnٽ?BdM'{(gC$Jb* l3]@DĐ{hD!*SFL78aӠAQpBnDv}}NKR~moxr{rΑkjZvj& 3W泴~1Jה3X++k3K.!c~9d]߈X"EPc(.akr1/s]ɉםGW|@(gR tHw91?}K4%IF g 6ӄGefgan5V{,O s]:VBv7%M9$ʣY?wN`iM*Den|GrxLHVm,g7̶{&˓38B4k@0ܱh(.s.,}S1!vx:=pA2ggp` ݞko!5ҡY90}$M(r%#!Ja 9Yb9X~WmJ&X+s#hch~;}G3;N^N{ )vs 9k)M/.CSDPR8+=RNh@$Z`_:q99jI빻ư{-‘[)vB塜RL)7w=5 zGfPr`&쿦`O]'`ü&B+3DқtI{,4{/)I!lr`Hg*ZBL8L2Q*IeS5^.+"w9XDž&YO *9 We}<¾];4+sq׌>0atӀӑȀ 鵤GW s%0&xn awt,zys/X:IMTOQ9q͂ieKE@2dzzb^v4Q(`w3J[PZu8ڥBi4{# SpxBDWvݏLl3 ݃ |0<x@~|5 ,KgYrAh!rL78~k!Ei)`:ˌsܬy\ mԃnul"(18f `nu۠tY 2T׎Ld_g*e. 9ð S`<W@MCـ֗?70 w ]񘃿vɐ.)S]!c:5ֲ`Dd(FBҢX_Y_c>Wb\N\wChVhMwL.nC( R%C앾)5"kS .8VXmB"\IM r Z;#jVph/g+pppeNR[Iy 1C H##X!C, 4EؾBV%DX;~3|^c^>c5eFUy K;*A55hMNtF`L+0Wⶇ[-yBi9. c -ߎ !#9u[|SQSh^iz}< Ȓ˝XZdXz= T۷"eࡵ$GzbK9=tXvm+jWH5z=q@JB#ٔc)Π2sa6䜛F$p; g؏(P 01IowWւy[m8ZqL>^lҎMZŐ9ɎDB jt#X;8 ٧D^t\=52志+ ͽJES wOOay/N!{M6[Ig8cHQq"`Cfy KS\8\#x@/6(3kc($׬dAJ{Vo s/C: MS$ډh+u":H8=_ Z_|!wJLF!!K>ɰW,ܤzjU (x$1J:r.T$:Ba<|'i0rލ)CXܡzV1F2zN!z?kyאiJo}b]9Zi1v=ZArKHșB҄ĺ`!OpScJ,-; l3l#273ש,s0t蹌aEByS`2طڭ>dcQz,qۉȋp4 ]n1J `X9w*L&i*ft)!o]Фp22Ik:ai` Q`XU]cSkl $pi[sz8[[j \DigG7ϩ0uu=_Nbxn\7 +t|nt^ Z^ .*\и`|)W 8Iɘ- Fm,CK|}*,. ئ30;5[QpaJBՆ$>.^vRKt\+uq\EM HIAQiHdުcsC8#H *2 n@2҉N:r`[*JpA{VF] >S@W8QLuaw!;8_0/8S[TCެ8d\kA!gם"Z]bjN/:Bܮbo2hXe6Ni$䄜$뭍(w23ע`u}܄8=J\H+[IoN'nB>dJmuB& N%,9Z3@E!a<\yn_z$cqک^'G7k 걐=Ǖ00 ^c4c0MY{9ôd,1-)sWآcAwb!M]" .w^J>)[NU6 {˄!&rW wdΠTs`98vVl0ծpl:g'Xnc`m|gɤ#9&;vna9.1&"K]l֥k ϜnnQ\kzS%25s ~RfRەsut^x[쮧?X#s}$UKcֵ;$<SapǤ` .N[dFżkFf`790 RHs|:.ra0,@z=()3;~RbnscPd8v Eᭈv85 yH(^WDkհS 2CE !w2$Nj35']G-C LS57{@rwӒP:')$Q;j6Ő#.0=\|F f3瑑"ѬVdy/:+ϺY{[I\Ú[.14҆V6R0qZR"''~"TU. 6r%DZI8!VRCgyI֦A(Ңk֭N<'x0;fbn(Ԡa#ϝ <DSdxTR!4.biXWsuԐZ̝yt`]vDH֔Y [Ǹ^))3a( llIJMZ^0LNYxމĤN̔?nj[lZqͭ]J& kͪ!Iܕ %C>)y^ttK&KN˵IsA&$L(=6܃${ޫCfJQrN|-.myv8p=I1_YT3# v: iM saUkG:.0H mzcz T͊SL*\?]; U`Ι9 &<iwb ɒ!ى]ڶcވPZ0X2$kzoT @Ljj  h랔\rbM5:7ًPL&֘g*zVYd +$,g=G[g5s)9ϙhXbBN61HT5E9bcK \PL2kFMyJ)'e$b4z"U,O -Lq!17RSⅸaݿű -o<- Z@X4gaU6Q q:D[0wJ00ǎGvz #a|FS1O2bҽ_ aj@u$LCt$k5ZGka^y[,Q" Uݾ*(UPSr# 85>f@2(I^0ҺwUF`8p&m8G"dIp&9)I! ?J~}\8\϶ )uQǓA,~ v!.8r'.Fi 5p){Z2n H-qB;ʹ3գys#u|$ȱ|MBK() +̽.1l7Ωb2gشzi֘Qi) ^2ülHzAW{kBk\I8bٵV-hNb g#/k)Ye$xH^ĭ c}3}?Ʊ"N[{̽h7CV݊MRiwAm^ڨBѩS_`HjƢ yN0[7`JBb9:2Y7\hj= RvRJsN|YT3Q'vS}%G Ytv IDAT1F (%X}^ ,u!Ʃ/`4y1G#Zoj#{qqH a i:"/!$@aw qB @B;*#RBSe$) "zN+^ nM8.qyw%S[ҾI5Ƚx\PчW#^ м+\TO3sls eǼa^N51  YgZhX%,[3e=g0Btt {O:L<a5S[g`kwԣ'/y_:'/֌1N&Rnr2taX{F#CZP>mq qZb#/^ C8-yҾPL6gNFjqީPbSCbk{"4GV`g7wIꍦ||5pZ^0yh-3V-cǼ'ަU,2fWϷ:(0]4pڗt|dq\.B`кe+ْ|=NݜBKPd [{Y`ٲ7{'-=Vy2±FD R )ؐ:Ŏ;hɋ;/Y[T.KZ07k⾕`$kq>n !-=q#i 69Gz(R1h{'˨tq`b*7U;3`{-djdk3- WyuN`Օ`t bXKA-;9y&Si~ Z;+G`uw{eLQcJZn/ oUد Cw%þu^83|(i$K4 YF6$R Xp`J !I 0Hd0`'8N 'H@$S(4CRh9pfcyww+?vUޙs9]_}[k}I&FɁbnf.BP-@kO9 19&8;Vk~fKFMؾS{N>v_Y*UhVX/}C 5I̤NZ`+lªG}x]>{0_Κ;at ^ldnhh,tUzd^pcv!Rlg{E,Qs^oa/_.в%E]$~/$rPȰR_dlذa@ ~rͬh0^q*S3 Y-g0JqB:.5TS'c%8`M݂ٛB8UܞX NJD14ߝ+} u I@c-nG{'ڙ{0G{< FpzUvTW"d?C{,me6D;@eozb!@L=9ײLЎ:2 *ywS7dI[v$m}Vz026[g@!4!NP8 dm1]=V['R%tKL4MP3rB8ф^7k_ kf)kAxv) MV@5%A[>U% :r,x[S;_\kW\x :n2ꉸhH r5AV[=}gMrd/쭖,aFD⤒̭D hv%BY%ZaK8vL[DyS,c"Xג 6g"U8#GChHhaVߝP˴`iuҁ`Uk6X0J=sܺJ.Ʈm0C<vhSZ$NJ DKJ6҆MqD-حu\ņ!p.4SҲhb}$" R`=s.GdhqʁkLKv֬VZvJ7meJ/7;v!ॣy3jNm>QKfZSM,6.V`v/+L6hfӅ` D̜_=h>+֙;I)O@u39z&>f,ؠ, 5 S:m8}njs.eSJGr VGhQ%; mĪPlԂ ?n/j{hK 87ڦЮe=h+M2J ~l*Y!j(tV0a%:a/BҲ#ؾn!}m) l=FB`dَ̰/n{ad{ 8Z<3w){Ȏ)ʪip~fz>ФF87.Vhhg |m&} i  @aౙ-#tvf);K\ae2b~a;`@Vs}b18v~&VF8_5K-W&6< qoVyf:\B#r}# fb'!I9XT19\j6r,d}"vG9*W)'AYE:Z3!m'K챗&e:p Oa>=Y22'5lyfG20,7y,v&q J{Z5"7_dS'ɶxM;68m"[?w.@TVCq}xޯsCwF{l7}җ҆㖝2-H"BMJoN=N+GߤFX #k˴vac)ʒSX%fUB`}:%O6=fކ;w7Z֦96̶, (lYZM)Y0Ǚ`v2PmZR:l˴rvU#=X(j$-V>[y^x~L_q{-C :ORM>mΑa#ʓURƆfZi0bzKbg`[/m'ݏ`@Pt$Zez?Wi&Q䀬h[ n<qChJo f6&ݍ,@Fb~S.7hge]uorgXmKZiGezO?ZXN|;XpvY7ZeFM2I+4]`n 6yc-fDa_@\4* )9XZ&{Ì|B ch5shg\c-pz&A[agR%ݯ @n|JG(r'oax4~L[L//ҷ C|QzTӂ)Jec_2K -ʎP<B=X@a*.(̀4QY@"{iRd",u 'liU"l!|MJkn }R~+B}倥]x~sH[2e!Zm! 8p^c7gӟ׉3id!+#'ޠ^82ev;d %JI kA_$AwN!m>W&sYnϽdah[뉰~~ ^[.Ccկ~_Wկ~_Wկ~_Wկ~_Wկ~_Wկ~_Wկ~_Wկ~ݹz~_=_{)z ^_Wv9D `cu߫Aod9(!ny?y}1~>P宜~}@߯im&Z[?E3x!WR w Sꛠ˄կ e)v:d( ΐbs&waa܈yWWz0r+g~W]r_3k2E$~ٯ,X''eK  3s)3]zMѹQ0%=4PO# .%7WSeOzu}tNF,w;?Ϫ_=h\C=9eFzԾ|}%P}VfG #]!r-sC|`B.=4Ɯ=TߙFJ&}^_ԃf>+ .hR`S2G?Nqf:!P@&)#/td@`ץ;(bke}nֿg=h}]wBXN+DAsB\B^|8sk8b9_=hAFx@(3uCD@Ec c z|*Ja־h~uʜΛ.o{9s 3r,-cPB!rhLe'D{|OTX'\bx(e{s:!kP,jd7RP'8AI'PvNcbaesX s]}. s:'L S=z\W_֮PGr:59t0Xa)#%v{E%3'T{9N! ^P"1SYsOޢU3Iم@Pa%]:ʩLI>7 ]{V'y̓yŘh%J|Wȯ}ues}dKCk3G.Kd_'\eThr %EBcBT 3!/.*N's <6'IȧR lz;71 -rzsJB s2ܹR S]G952ƉJR,wafΜ*G<tcnD*g9q,Bڤ|=" cҡ JLHI#A-;V|˽?Աcw)du ܐc"̓7U.$[a*9ubn~@Iʆro-fTFzMhoy08Vt@%KnКfIAXa~o ҃c1v;s|\FyϫKYQ"H(z)s.KH+ iuX99,^ۖI\0r O,961͹4;buFǞb"qv )\BoNPpsA (fzO|R=^=h% 3e EuR%4FrY"{7\ xL_uD_*) xPCrH*;ODcJ(zPt̙AL¯.@S*sS#(dxćTGCZejH|F)v {sBPub*pL{jNa9" z]8|F < E)9g3?IX(E{ӯ`w'I,Nr 뒨DЋ5ؔ?ScF<@\/Y Va(A]y_߃KFK({0NXGyB8$B8J׾017$Na^pT1<#<=qe"K RF!xq'|V2˯1P ݩ#Rmu }@j1E Wύe%\1ɥH91U!!r d3G= sg=w(&&򆊾Sv (sZCcqN$_~bXA<{b)I1~:xrA52Ky5VPeJ3\ӭsoH.S;l(ŬBa62RsdWScxIT HȜ! 2)Cnc9Rd! , +N~X \<ΘFM{VH; g{=:AvVC`SdQZYdƳ]X(h^˴JF'>L)vs$HHH1`|dCuz\&2 (*u SPE@le.X sJ٦hO;FW# TSeG]390j19!}Н!-aw]萱˔~W_w$GS X=5k lpqV2&1{zNsBy"bVv'aɩ} |^< B\@NO C5>Vb\v*$"XCT**F+E"1,fU1 q]AYĆYϙh]Fhg*t i]0 GAx/]7Rl.8Hh68c#pK I)Fq&OL$ÂAID13TQl*6mwMy 3oxGltA o-;GHPj;{.m٫-SΙ ՍGwL3cJW{a 1KfP͇aZ s@z~&)3T4Xyt[oJEPhhN*v"*k}l63o&=x 0 `؇o0C 䔥f|%x b1 i'U6) PfǦU:F0:#2CzF7.V{|;0#Ex-gcc*~RVaPATѸmPQ^'~u}Zm6fM5s ֋f@,~8ϣ I=K(/C?a]!mz%Hl]fIm6٥5͠'dm]B.dN*Y"өy[Nx>sR͂A1P9J'Y\/O F+U4 J * ET1=zz({(蓱u\F rA$NR3zb#gsFdt }g.CV%A!#5Uíbxb8~?T'.r= 6"p"D~4R1|H}7XWGșwD8>/ֹrK}֐6h1FDNn G}H*CkL9qirF`v1iSx[Y$^_n||*T IDAT?A]05ֳ15I>04Wą 0]7kޅs_Wm!{H̕|a1#^ޅu.fH #59wM^F?gG3 SM n@tA\1v*'UI O>>J# =[:b.Hw($r9UBzk R l睄b*ھJ{ `R^=5ljb}|nHTM'÷ sXbivW~rm*Ga?xvG5' Sє2n|W&]'ao>IMsG֦)M_aΈ دVV\3P43XώЇo*w8><&c+v*SQVj0:9wjzc89 kdL U2]? ݔJN,Jz\" c]A'-wlkj"c]oy ?͠_`糍pWoo@< ӴSJ% "C2T &_RUzSX;S ep,nJ 1\`=h9vgģ25rS!ZApy O_ lv=>0=,:3t qsc$,1Ǹ@/)&+vU1:Vzz3?8`@6N0HIrR#R>C;h>0=N5܏Pf"*6.xa0Rŧ| &c4(}qA}^W Wb)1^p < Tn~㿭gfS'|L&p08' ͈ʋr͌}u{S 5DZ(O*U=c 6ͫO=1U1K \all`9[(J)/(6Vj;,1k4C}x+rKGT}$CS8r5R,w9x(CtzI0ctzfCaSQ1T+O_mK( .`JS0?Ew OLutp(f\-.CΦ4;.AL1յ"}@54W>F839uϫ~_$ TC@.W\(@QkV߶ݿST7O( d 4C@jǞ<pUQˬ&=Xq:*T%Ι{F|ɝeCR*FNhg}㹟Q_'/ۛ\1?Cw| 6uV^E vhf,i cC@)@>EWQo1@ˑd`v9`x?#)5S oSp$*ijpC?_ҪTs7O^U5*&k`3޽%p,e)д9i9ḛ%%$fƴX 6j[Xsqɀa΀65*7!_۵;7~` ┇fjnPU@W4,&Whg/00 B`A=;lmKb ˢ(P?4ݐX]yO ck!SL 6wT +5*]e6u [ dNl MdI=hko&x1p_髱4,*5 铹Yu ]g$* kfG>=annRh>zjvqvz$A3:>.B{0X{PIP+O_uU~୥9@}ԻFwfNiq0,$,rqq(TGP]%yK >f)o1u}^I@Ɂo#0h鉔!p |,K%O0{ sJ^SB~`ܼG߀*~ e{b燮EwϽ7`wKa,Rإ,YrA!T>dMXY$}tLPS,379 bI-hxj0z獞&;I\vɶ Фb3 '"">.. 6.?p_F7Y=[0}afr8.r8Bt7,wnӗ `ƍ1Cw*yTtycˠ3:]3Ş)Ȃhb4|7yD>c):Kw>pY iCY71>׵K9T&|`ꂧBr?2זQWb3+3*TD")! u9-G 4sBgd$S()>C' =[UsH &TFmvIM &cwz /`BF{2Kr4a21LKFn85} ʖC nq/Gcl"H+a]T! :X,b=߆Or =?w/1WPK/'? ,!<060~Lݞ3EZJrd |H\ʱ\{SNx,F5=|6-o fH@(IM $7"!n*f A cCf (Q+b? 3*08o&@[`.%dS͢wɰYG(4x|vƗw s&rJb^޵sќB.F9cxU&Bi6*F>RN~>`3hz#y|m; `CrHFq5KI)ٍ*la%32 ƶZ$/Z \Ue񰲆<"fh xG{̸G>XOV] =iFm eC$$%j8۟z:Gte) yzv͔#] {u:"aym: 7/|M~ g- d¥h@ϣ`L-ôi2s\wAضpI0[ 3 [ A(0$Ox W,x6~ @`5Sfx  G@ִ׮u$xL@'*A[j|C}@cyA2d٘ҫvfѻ`r2WW`"Т|Un|Sj8[ $BrWt.e6܆P{6-Xؓ%r 68Wl0E,:zJ'&+Zj-`@0e=0^#ƫ0݄:ҁ !v^PB!F0EmmNا=j0l>[>X3f*)dӌx;YCcQ 3b5l|ӂhTIO n\lo5?d"a"r{RԹ1̩OŴTIĒ[\Tӣ/k`c!gq2 y n' S%x--閽zAO 9 XR>,]fRbz%$-, <W(01ņ΅)\J{~XY+T/^2uC:s3u=h舡72T(} s7\$1a;Yd̍`dnX.;I*cP0aP|hnXd/Ah Fu{N-&bD"CB5jV#ҒNp \g Gb|]2{!,Tx%SW`AӭR[$}BG'.֎8*^T7X]e>`!c`vxS77{WT9O 8 ,`5fa%|l=qrW2kR2˪ref5^5co䕞|d$x:Ptz2DǡC#6:@,cS^'?pgO;+^Q_N2UCeb&Uϭ(AӗXAl)c*S;Qm܍O*Sh1pޝ0uK+) PKɔ ӭe8j54E)F5%4O({OKHAהj<_W@oKc(\M*M}UV$d,'I0C&zZJ3K`IDn;F2 6N I'y"5DI#%IRBj`L+T {I%r3f.>Md9~H0J%$yЁfuamXeȫҗQHIP$1̙˟n) ׋ʆ;` XIe6ŌkǦnV-Z2 |E=}vAup7;T>-a5b8܋B|)[ \p::L 4?T7NA?j]3f'ۺ""!^oIe.j7 )ڜ*U+PH0[5ԹW~!@O 0Sn0em.mgK|h2 , .r8^d՗-'dcC!ɋ7GSKd{ K{ gH(qx:cl1KNb/y~tIUڒ9\Oc5yAKQ*sZR ƀ+'߶w1POD0xGy6`*Z>eѨK.K,m(dzWk" )\\&)o.Aˇ }r9_:x/yOuWV[QNxޘ  %b#c*Ojf{h<KcrEB!HE[r:#n拌9*MxH ?~jrogL*zvM "NMX]uWw|dY[iS,-x~Ŗ1Q Ԉ(฽: )^$*:8H^,71W_JiR t iueeF_Q,<׳Y)Ȉ=$Hq0V=XS0푕6on8v`_fELcVgv nMp,ey ض'ڻfn bn]iH0`ƌ)G8`#0mSۄwöaFM(< & )48I+)G:O"),e͓[5d98M ¬9K#;ɳkLv.h)Qg$f:UGƩ~O`*CAxֺ d&]\}2(١.e) e4B,CYzix} XSTsPO} @Iw4KaTfvHj<] jMZ9yyY\cƌC6 64ƮH <ס_!Ԭo60uM/`ClF&sdmt\}U9x|al ZIRQ^ʭȶH"seƟrW2n@# fmesUX%|߁g 9 J7RNW<9Ԯ0X%%Ax-'mΡEb*7p{f~t9 B8!oJsX)zۖZ>CԨ6U CnRmo]y߿ U [.>0ZAw.-r݊|sCah]7$klkOj&w5L_kᎫs]Yr5.8qld$0%QkиfY/$sWǰ\K @43 4aa7!BI x%pl 8Dx{ap<6PhLgup2m6d2>QT?y"C#Z\R 7O-0x!2 d]Q @",/PndnY1}VZ6)tq+fˉ5؅r?Foc9Q}'Y'Rن 0c66(6 r z:R) ] p x )3` tu5|_>S4q"y6S3b7H"<$yT+2FJDϞM>8NcL^#=la(/ AZ02s~ĴƎEyMcFM펔5]&0?*{,@/㈰V:rvLp71n06I5ˁhϧzjQysY=ΐ«s9rE6d=bp/W3'"0S^)/ g 9- Ms$R|WS-v.7/eRH~{Hm*|c 0sؕ7?^<3&P/U(SD8U6^ $;g@%SWkx3wB $R#9r̍iη=< Q!|9nIE$^ է"3`\$3̪W:fQ^TO!}*nk,Sf}벟\FZ%mjOj6,*fՋ;yx͌abҥM(pMÝb>jpA#*S'T}MXvc.I1NJsf~yrD 8#h6w; "t:A:h*(cYy1cc^ GŌKN^ٙzǨӃ&,wAhe|&mi S9B/VnNb& 44n0q1I 4S#5SxBbhp ]ڿ6=rp O bA$=G}|sMg2븳}\DsZcf||ZfPkj2׾72eGUhj| UF6|>F%Sbv+Ԑp@`0( `X9B!'aH,焥D>3k;l RkT>g>q":C)&*?zK۶0K >XF7D5fVOdϗhoGlluYص&¾I6K^*ܨLsJYl%ZU01-ۙMи+:Zj s!"l3gT4Q n41o"T'K"*^'4"\K,,QZXk^p 8sL_(EOzW}؛= ^*u!

o.04$|t g`Xh﵃ iF@B)Ws\UW Uskn1x<;\jpYZz"`)uL2] Skh˸i%9Pή|hL@'>"§P*m,-߰ !&)@]~n^W ~R {=НtDJfԁ 6 *p i094Xb&Rw "U>mIyQe%w*J>v|WfyNM+CYShpayE| Sj`]9f_܆ni7%XJ)a5N39Vji2s+ wo{Bb]M2\eK+(s(qZRylscn[n0]TmtpYfڥ-}jߴJ׆н-ܰLa+;!GxB75 B,ħr涓gS~v2.Хe4P3V!H36atj։?Y%`ZYq}Ht'Gjf1;\/?c)DcJD0 q}RpFY53Lu| Ei"ā=jF:#w9D1ǒPQ k#,̉MZ9]g&ڢdGfns6;d*eauk1-˼Pk<3(-NPQN-9|b'-0PvUZs4^B A_$վrE?f\Ԩ y1@Z§h@Lﲩ\ 5$aCuպ8p#8'5c%!-"G'cT3Q׷b#3eF =9`gk,JfeYkI k6I3knɒA.mkc0%fդ]kӻĄm\6<_p /r@vD,c)F>&u rsϒ0u#"\U|VU9x,~#pXWXj(ua> w CL +;#oXqt](Gb8%fYna $"TM]7Cp ]Д)٧|LH ָ$.8D xq^Voqc[4d f\j "j4X%LiY$7IkTP` i7X5ƌ2.{K,~JJ"<e!) 壟o1TQ"lF(^H&>Cꗧ\< @&#+&> _ ]O+zm$KMpe)q*mѺMX ɵ8Sk<]1%H8}ֆ %aeSIp[}5"\ nʇPAħXaj';C:gN>˹?nyq~Ry]\HjL9(럦L*5TI0V!Z&}VsAN1]y)EjQ{,;?fe/Z&6DYQ (N,7SFɌ56#,eȯe =9عMH6̍uCȄM> u-y=X)O>I Cy3ȜLJlЏ*gXch|pLQ CQ{1I?YCz!!m1ię2"tf)}#o,g pC> VU}aG?P< VnB\f-"77wǴU͂?Ks Y qڄ }!my4W0-KP8MɗO/B̀s2׌M?ǤK4C2la*10KN Y3`ȢCT% <%bC2Nt?yj&G2ތ[۠7D~Zo^*JC0h}M&+Zl9һ9u32X&Cp_qL `! Kkah%ǣ3 lwWݩ[^; J<>>T='Q"¬"e9vK@b& Tcy"ygEfsZe9UCRB1-[ 2P/>sDהǦ/@*Xjr4 —fޮ녦ɢ> eSi#SE_ [lOb`"._%6+t9^ՈFmYJ2>yKUODء/OxrYq9ZfWC;|+ѐNݱ=V+ a0]NYt`ڥ/dV9oރHs}ϝ OZ(HyA#}E9Cn֍h nRk-j%B7q &sdgMZc,u)C 3iXKaKڄ@'/k/qəezŶ,G`K~͌SLxxΜ,y%H ƫ\7>Y&7Y]tecCZL &'Xf'᳆LP?H~i?tx*cT@(dYiuޟt$8Gzubϵ\2NVd $331Q1&뭛syI"k|z3)k/ =5ݵ Z_u-}#S´#M-N1"JJ㌱\6XYyA_A*B܌/eXW7UY^A /U{^Y,$B9/Ǡ+ɑkZ$i5h&ʂr9ayhb 2Nu vD:T~HM^0KR1rB.B1߀bf|U挻H&""t;r33ߜVCO/aq"^*Pj mT:m}Nk4#i 2em1V3 V6Ls>EX]נ02pnEr̫ p^DS.H]Gd"M";MRx ꧿DZ}g MҘ*&\Ks%n ;|O怍8)U_V۽#@Bmbpfp&@\=S!>q*vFT Z m>s=4fu͘Ʉ16ˆ1@a<{XLN3{0Qc ݗ Ǖg)x,֘d,Ң*Dh <\ IDATO9Sۦqۖ=H0P8)^ϝ\XWP*.ww!riv#3Q X"''7RgD4U@ޯ#"NHW5pYfaԱ˨ |R>;dXP̸Tf0E}YH"c}%0FlNl שH/k1L[msc;lZ˭ Q TI*>i"'fL1ya]iP- }PIIX(3"+N$B5%At6 ܒ}4ܡ8o\uYU=3C@H"^_lɖ(KϖE @ WOwWWeC歊){Guu=2O8'D׼ PxIXvMx;v:)<^P)~ X3L-“Oͤg4ÃOc┇(o@wǒZS~ײ_KKl%Y -`S11' ˹詑YR+*sls3(H(=SMJ}Gӓ]:x2s^f<%XZ'N\*fEΓLM11'9cr-ZenyXG LafIR ͎Fi%2;79_~.&2{I`|~93BV1L3EЯ/9͏V +/s$DL-0nPoRl58sTZx m, &wvNtK9S6z'$l}hfFgv%=U-(4\&tfQ H'lDύk|Z*@li{mzR鶁ã Agx{fO!+% v;䚘$*B=&mmx-x \*eR&s7rASU>Y @+׮Ѱkj.S;M)w\FY91+"nVBF@P=m) 1,9Qsk|0)< td8a:%׈g@Z\p+)HPt?5~yps.])5^y[v3JuX=h林fk!d8dZ {x _Ni C`')'eh _FSOi|oWt=?Qjɞg-J1(yd92Dęx&z"jxfdi𽾰."$㋸/Y}C;*fZ,Ǒ%r߀yֺ58'!T>4s]ʲM1Z~0zRWCiК\&feI,a94#=Ғ[saz(53>9pf\S-,1! =jYE',bJȕ:ٚeIZaĩlEy( YE Sx4rȢl82R1Ip-if47)쌠s9 4yycAN]B `\Lj$SiP5XC #rE~Cmמ7X6I #&dfh.@}ɒ]綼q9ÅS육P/O%4:_lF>14cNRukꤑ !%*i]؂q)XjmPonH GS1FLcuXNi ƿ`q?Ϙ7sNkn5k >G@Щ0P]#u:o({rQK#89C?NMcUV~"+XMޥ^6F+#5:᭦(QgM@6rLAň-{b3|x '%7|i J ӑ17<`/0 K?&Pu;a[}ԾP+o0SG2.0Mn 6{BL_Z2w*4DtΪՈR1@F_J5J,hfd*钽\q&Sǽ@>aޣ89)Mtdkxω k!$n$XcIxlEmL˖#Yzs̤ G^J%Ni8y+cRԬI+ʟdK+.1ϟb3lK 'c.18 W4,olYb 8\k}91~R qj$X1Y3MpdP0u8a\ϑIps]Z蛜@|2t+څ{ȃ2^#bR_@tpƆF2Ele ޷IfzKYU ㊷|tHE$`\gxM#=p=tQk+㍧# Eg/O_#!ɵ`J\0~89*g]=mySUN-׼Y:;'u f'_9#ro,+8gC7s'GiڄJ3c5G&`Ud>fjܱr'F*5X7|8];1s0>'UdbT4ՔnlݒE)nû/{we}JBe]5tտ;NB \ӜVQo8+SsTzc TSZd60c;!D]țĐELsxԹ5 !isJ1>MΙ2 O ,*%!,rL:OOS5Z_-%%{aɽ^lƟ("N|4NULE;`JHUv{j=gL}8kp06 gA)Fkl?H'(1Fɪl/1%#dXd[:kAݶvOmrYK$-T0)̥L ~HU8SKu/w\R-Ҕ0su<JVk@$9[ `d+%VVn2^5|SJե 8J}@hU9=TY> x8DnR_/957Lm){6ERXWԤMj4UϔvpF90M2(pLXf<-*>KKCyW}N 0W \2-K\oEm)b֩dS.C|Eٳ%G|?p*%tgt˭JSfSX]Kv% ~Il2wX+'$@nyI3:ID>q.YUvRb4u474dX%CʱZ3$?%aΧl]ȑY |:aفw1R:SD ܂9&J;6AJƱT`ql9(([ii̶ 38f36B=#봒6JX5ekz'дa͏ _V4hܶF<ϜdiFMqi r=cp<x.0n҅MJVY6!_@-H) .iGSn'fvĦq>u^(? 54 X85H/ a5Es [*ؗXLϘF=?s2:>Qx,SSX<%>èf )w`rTpc Ӄ_11NE8#Ֆݹ9k}8(g2H>+?&D,"HBsS-fH\y¥ 렏_{SQjU1crr?.5@j]LZ#fY?ךvJsZ3q 7&vnW3hciPS^\qjN&е<#J=ܭEfj[Edh 4NZ{x220:) JGxTLSplXN$Xc֬>ոzl䂱䵾[pMh`Dy$Lk?=ْ~I $s3鹍5?b9 0Ft'~czJhn-ѱ4: H4cDʸ8Eu=2͡/SgU.]'䶵;V.0m>a86\2c/VNi'rp]Q:!ǥKVӉq T]4XwJIQ\((P {-)I 虤B.M脓 fi r&X)V龤> , a)m5W:FWkl 0EjNNpv5{[Sg3^L,̲D b)-OZMi (eoFI~a3sc2.n֨ZfkEߩo|V8g--0#$L9x>8bׁ\(\ v'f1^oRRDOK9=sc."[|&%hqOZ0 o#@A`P@5`;{J03nStwź,2xR{i)[*O" Rb;AbͥlD'6c/(UK"#ˌ`Ω@* F S[ΘA ukM0&|BIg^/\k%4m8n5YkpmFP'5ZP{aAZ{o2P\S]Ԧ%,\b#K3i#7"uZaf;tկ89l]3Qs\Er_C~=x=ht F KOȚٚTCA$Sq߽K9@M4u]^`Xj^.;y 鸂rO %`Kg@X&TjtWzs\$D%g8_x=j+8Q)夤*Of<_WpVi\: IDAT>L;<84dʘKA: J=Y;o;VS%Y7 RlaQ 됷9ʬVNi /7f)))Yp˚ZdgVX;@x;lɡp(~+J+bt4HT ly 鈹9dQ.i+B:"riPbnl 0^h/Kɢ(Eql*'׀\33}d|734{!ױJ 5xҶT Fл={Hլ,[„sTfUK'Ch081{asqF?0z"yG,}2 t2?,Ӵ8@ I`~V]c\ Sa ,љ{_L2%TYSn|겵%='m-\"}-KL}jwIy8OMx:%[=>VEM 8V/)*Hn"Hg"w?gFWM/r~fC5kk1Yk|kJE8i\; y앐h!׀֌fV$?%% Vk*5XN2-JB(j`:eG=ʖj©3jf)W`8h9vL&"бQ,1RBԸ4O1 ddOEU:CXzqۀ8!/wQ”D(kר+`̱ Z+NI ]JwNbg)+ j\ZwqkSOhp~LMq,|pI*>xKyη867U:ǸSJis:-& (5~zblɅ  A۰۾,[05lKBց&UR IP3J# ?c¯vǠWb0dHn?ՈZjhf>0״'Wv9ΤW1צafknw0~cAwVqjRo 5S-DTnG*kBzd*Jdz;9s?e?˷a98maZXPE$20cS saGX #·`NIkkKV1NnKYK)-pxi/gW #iC,eV>D[}н@pgVJA ĚIma9Aj2~K )!:(G͗ΐ0dwn~w3Z :q5S@?3abkxܶ9L?=ï wLC*EYI5Yֶ?U<^zIoADa&w1~qܛ)Gk!r?o(zLW'(Fi-G9qPדB3:NM6h j0;sA4-]Oec|]E6 gY$^ h @kAC*QӬs0~z8%DP棞zob:tFSLԥ]KY3Zlgwx!Ü|4 Qcѧk^3rk?d}>N2m?2I1u J >N Zg.LM=tW)$lu^~:5 6jLNNn8;By%l/tJ:w/tb/58< W/#B|~xE_ǞM,g 9`tw[Ŭkitbd+kuR>j$GÌE@&zD#@*%`(âV_˸Dp*%;Lқ+n'O<WQR>5cmbX\Io!>{V5vt,p:g{0~LN,{14#-+]0wyJY]F-\bpլX*ש9vU'z!㇡e.YfNF<+qCE:U]*@(YmLHwXnDInHפהK]>p.y͌Lۉf`?{<Ųd .G[]}ȤlDf;d\*iLtTw:׆Q&N)0+I(]?w^W >'VyK%)sez`?!<:T//33f|V&ZW7DKSiY`gF /~2Wx/aAs <3C+'liU6zXΝrNJZK4C 7(% %.=pxo^>cY]dkP۬SW^!0aC7xQxTKٻ>&o0 >ЮY{=n2QH]-^|ie?ኯĹ&V!'02ƲJ}fLnG U6#NKm2% ,n[7 `h{xaws= jKͺYg#۴[)YRC=l4345Xc0Ki\˄Ka)pZ{sk !p24ˣ>L(s',[R==fLx @q/HRZ=f:=kŝ>V]h)` -!XmVpcs {osK@.g 6ynn;ܸIMZ,)w@VL 85w]3)Z&gjq­!BMb5 TJa?m;sZ+J:%ѴS15!vqӵw8 wјeaFym 9Nl-i"~yj*Wz0hk=eY=RtNv7f+9 ~F^b<;%O}P36)Y6#҈`{M]SG岎w#r 7ݾXwK~Wver~=zKlRnf_Q{49ze1]'XWLY[7e|T _PM3RF"R:eZgdtv\JS|۴\_9Ԣ~ò-7?bI5~}nQ(a:n5׎[E,]^'t |M\^<ſE'}?*F"SfdN:0g#KDoP߮ $8PB@&\ 荐)->*QlO\+r<f7[wg>d._MͲA"fh @(勆,2&=d{dr#V^0KRWv=9h,gA9Q͒2,m.F\cڪЎK{{`+bCm9fStIצP@u.ɑ876'痩-ZSHT3P pOa˚%0;(,Jc-4_u/G$-zfj_e<ý2nb}xƻƐdkeg8c ҳaN0R<\0K&|2F>N8%3PV蛃3cNL4qpٷ>syY~`m&ZLlVrLƥjGƳkک"NzV@>qN_ /qB{C}(g=ҹ|Zn3,Fac9wzf?De̟י=%6Sީ1" m$5r~'R6F Ft֔ ֗b9%(s'Ӎ: ׍VG % ʘ`2 Yd:0V!$_xr5͚FWrji6qKATzZ_Uj+Fw>Ku_/:vԲ[x^՚oiɕl3O,<utc{q_f@߾ZtI;i$lv<$3^;rL֮ǷS+5Nf2! HBG|]JY,9 B>F&=CÁ[;4f)hsIS(Ub}߽4 F{LC8emӬRQӴVޤfnDHH$2TSzkJKKѩO,o۴=rd*0aws_~ĩYW'Wo?bn܉;[ao)՛JtjeRiڈR#%LYV,~zhP,0m9Gbˑ:([8p 0bh(hȇ¢O^J%ã{{>#QKK˴$Ln't7L a_"_a_`jiE븿Ѝ%=4nw١L%nFxia_)ɔi5{m sL{0#`:]vBbr{,ror=$anP&Xۆt2h<8'(rF-{.AT&J-Sd^A&Ip+P(ѝtp#'駲M#g#paͨ[xL\0k@ j;( H!o}4X[ŚmmCЉ'┝tda[ǮbT{@~4Ps86k 6oB&42 g*\Ӽ{^?46NJt,_c>وm7.j+}j`$d(?n.p|s.o:T-6,9g> gfixoЀq=2/Q/St#=7Wi !E_N8@2*wX`ZɭF셭xG{%آcp,;@!L!`:Θ ʁbt 0͚d\|tԿ 3tv{&QԀCVgH2#>T\"[\ORtoavAy W[Vׯ)qtViM-VZXL nɐ7,)dbĸ[y29YehϟhqBJ IDATe+Zdo0q|'~#FrŅC%Z˛íbQs1ZCT܅[["| v tvuxNǾ*F n{^$.N]Aw|o_u+i=>@#@ZC,K31.[OjYʂ@ٞ}>Bwc0^KZa ݊4އc7˕ܾRS98uG!LU6u XHFtމ= c~,}>& Ն2VJ>FUΌv܄ihW8|J- wɍ##H25}%|s{{"`R% jJUNEqBP)L{E;yBüAt?~o+XgMjsAi"&Vӂ6@}ٌB@3SRN߁"oCENu1Y'2籲"xCw 9100v`2Ǻ'=(- H$ΈaM'vЍ ՚ dW٨LqJd.my mE_ M3 G.ql\ϡWZު{Bc8 r$|y`@si4gy-G='1)yHqۏ^ZW;;`݆O7u5qڀ6oYm ìJg%<~YcyG#/-g2]@ʘ˘V:6e`kFE 5-P`8#0:xwkoC?Խ'hVQVee6C)UE'^Ι #1h- @M2ƘZV%hiM]SOnl`kBչ8kFsh-jو cZm pr+4#̥0݉ClCp8#7}r$٘.C6ثu=xo<㰹 ӝ8s60&#  :B 3>{q?p: DbLžfh6sw3EFdd[|F[L62(e4x$yVƒWRHhvKHZA$ВzQ`h*<.L*(C<|Vv]Of n]HX$! 37brKr ょurj'7_ʷ_7F ayLf%2eeʓOLlvεFW {|67GJ(+^9OQjϯCwq\N8AhWE^ V ;Se4S-H4"g0*_L^w mIK&tQ0߃.~LH4Ps gn}~ZO(oM`\s^=pE7pv`^(LSv<9q醍=8Ѣi|!1FtYW;ILO-a6\>y߇]) b$\rc?(^:aE:feiL%1SϩIQ ˬĿ90]kZVe4-8i/3omiY:7 ;r[,2N]8ң)9Gؿ{b;sƑ>J<'1q++pP SG Ms֪Fp95”5‰F2ʼn[!չOG=S1UZ_fϽ3Yp-={NC^KKp;eEW<6 "v D >c-/<BK$umͪ60tZ8^,n+SC1Y;ftԧ'tN/~H*G9U fƝ5 ^j1;i''L'mHm34Ҝl*1̹䀟Gx{m][͑(O6|y[Q ˖#ax#\t`,5FS^Χ4)CKz)'g#z,OWB䀸2l6S톙mGfEMs`V>M3h2`@ԆTk0? yP#2HLC^|\Egwu}xB,w N%@U֦E9Lrce\dYL¤=;o܋ (feӉPPKRWSM,.a4tRe6)-s^ 頷|0 !vXm6p͊& IZ@Z'IhI>Uf4Ycx{|b=%'9J c+c-im@`kGYSM~p/͗pe4t;Z Ө{ 4Shv}ͧc(Ôǥdl,'zaI8JiWv=+109]) %7=wJ\HQg#@s3NOp ]k+~O ?hZ5 KgjL Na%Y &91p N zw|n.'m?8.A$8aD=c?ed23'r>Vi:{mZO PLPSʗr6+3,Yh:Fi|Rf`ysF 64ƽ 4q Y5d)'[5QC,d^0Z{?5Nf0Ѯwc?a>YXNdto1m+"E`^4Sp¿rH8\2o5ٖrE(Wꨝr)C~@ 5#z "jaf,)-xX֘>%'gFk,k/ur1gFGsp92~^ X0M9 ]r&~8CPQ!nta]֖24,sLG 4Ε%R1{oox}Łۼ9A5 w`5gmXTamKP$-L/k9\\]ڈZfs͠r&"TLz*Y+P{cf,_{!4JYrQMr'$sF9p sMku RdIuT&plbXGH$ven>@Q Ԯ-&4a| )kR{kk*%=(_]f'?_f%b^{zV97Lt6=[L8|H7#(nN/4lϱKyk:ajZ'LWcH4TAvǻ+k#NmKԬ%;߽d/1R:snMa!@ lO?^^ 帜Z$D-mcPFs;) FqX|i<fϭ5(BS*K!+=BI7:$-%zk>FwWW^wbrMږЮj\E^[ŒZV2R"@4jԔȜ+^i#Xp˽qL챌mn$9t#\p+Lܮ1m˻U.y/+KA1(fץ$d<_VW1$5VRyJ]1;XY!.쮮x{{rj 5c.c+YӞS]>ϕڵU~K&zj#߿whp{6O%Tfaw^ p6^ldzEd=5p@3Ҡ ӗ3QJzBQeā G)[:N@RAN& ӿ @'z6_qhVvC "psI nUifǎe\Y+ &('ez r9t?6)٦=|. q+U1Ș~#d*U)M& ~̚[yAmdX- z<+=ȭx*2侸jzL[yt 7J-U J$h wpC/=_;w|qmݖ]E:(թAXLõ1o[Xp_gpMWξ{27d.!֮΢<"UE(z yrNqRDYsK6srwDPȔ֕%^(xŐ 'UE IDAT ]Nm׊$1Cj=J 0{]V+Z_ܣ̓;p-ͽ"jS#>Υp c]cmٲo̪=qw}~dbYX"a"ؒ XDDRQPCҎm9cwvqٯsckXUsyTI[{jժUo|cotz%Sfug)'f2ɥ [U" Km҇O^E$\8aaff:P&q@9rr$!7Y] <'p~!JmǗjĉSi`1Ʋ %韮ܮ sɔ10l[sC0АؐaHJG _ w]fX4ArH@$lMڊ$P(qny?ޑFޏh~2Uȵ1Ԑ5DP*\"CzbؠLlUGZи_aQ1B0*)bCpmvɶ9#PM[gSWӣ>1@OPOi T} \^W}-9KVm" l76B{*L{BIÉXbRJU0chJR A(2S'df}κDkcO1s吞%I5vpM]kΈ9!'eL|na&b\sCx`RPuܠ9ߊdt+]td.,!ThgF P~'FqMi쀥 sP )Y++V; vJ>vqAr#fflω3g#cp\L}0pvppy"CL %JcoN ]n_R> $m|C?!{{sé?NLFH" ] ilT$Qg$J Ʋȗ-ka;YK9 yJFm%\s s2 Ռa&C`z (w!kڷn4tm£jbo1@ PzN#O <F9@͗Ĩ%۔,Ks~\qM\)`)&È:%V ~~TQ))ߋA ހ}-\m | 2KTӖIsG\_T0ˌkp @x20SBoRI?6s̥}I}L878l+8W+L%C_ܕڦkk7=Mkk'897#.ph}=ƒk98ٵp=ggO t STDسASnA g߂kݲ CP"w8²t%7I \؃W+Xϊ*uw@ZRIIL*+^V> o"rё4Z*mA`[J`E0;Ee"A] A{xnOO^Ԏd7>K01X76}ln"Eh!Vk6UcҪJ%9Tu~Dऎi"ڦS5$/ ApaR?@R0Tr$S lpy-Oވc}YFl7$.ЉgOia!ǔق]pTd&35&`KG^=NƂh 5LBE' uA?Y^Uz-]K-쭸eU41M CΑp(tQNt8H荭bm&84AӇĉ֠'܊kq= ccS&rr2PՅv8̓kj50w }8 O=ʺP}*uFм jpX֑Jbhp]B' ЋB'^RۨĐIܩC :L7{ &&qsD&0زnw `D"3 IwlR'ar2 P 5;&[f׀pϜ^A$b!6Egچ"$tKF|2Igv#ӉcH\}ڢeJ"EFм"XcjFNs' ~F qI$?j1Qz(%$ *0u*e c!Cs ف`lO hg DIwMp܊>oPʋ_1_$nHi1&M文tLi듍"C&_B~h](0žfS58U|c %"xb;!v+J%vjIJGf1㫀ȑ.Wm 1$o$ICF+) ;V\#DL rCKDu$MGס2D H}1"toUvSi$]1Ռ7%IPRК`B>9Qa_g.S\ hS:366$V/]hrmH֏`.N*a%+ؘ֜i=c\;'pl r)n "u[ҕbWp*ɤP|,{ʟVЌ?F r # 4&!'"t7J' +^_eOhv{N1\ҡqOGDB31P?4h,FdNĥ'tQ_wgӇ2C~}bǿVNp9C>˸PNK45y!Imi:,hDgzڥfhלHB tB$" q*atĔkR`;A7T_#ARgvoON܈ud J0_jؽQ #:fNA172cJl7idMANE$חFF:%pNBv(S3C΍#!x.b%?[7VF;RiH *jqXRꑾ&RVh;-s( 8J qӮ^n;q~#r,ӬiTX W)dc؃(í$lF,߲`O;Lj Ts&&5̽fRt )@꙲*`[3Vl4L)p--a9H}RS=JCI%BzVkK*-/L;U%D8ߊ}bm",JN 935u\!")kLt!B9Ok2ܯ=B8&Q䋜nrI2P 6FN^Iu@->64q]-#!tAgru5b 7aYnp89#h>Yf*c9ꩂ`oRkM7"$uP_Ԣ_R>g lǕjk͝I SЊI:T=fUn|̂P/@?+(҃_#@\W?|"\`Ҭa$:i+R ͵$K=<F>hXJUPŽӻdGuƉt!l^ {KZ6pbc [9 V߾q~_9pWlk)BI+ud'&eε4,i,}=gN͆$Qh\S )Z}m`kjDB3v*o2I\C7Th# B>nE(S<*fAqtӭl6%;RUd#h>a{, aF8XUZILևV; HCcǔ3>n<1%63)c吴^Lgr{kA J/clО fHB+q߈ tA)eEW==%{Y;WmhoMԮBl*U!V]b",.%J'Rd~kSq:7`|,ȇ-3#~䉐`];Ĉ[#h>{s1{0yV8콕2R뾥^mcH[5HrĔ3mHMc"lŦzM%׎ԙuǢԢ_F݉+&{؏uD}W8X<.ːd#h>=1T¢Bxκ~tNml6b_VVڧ̼{-aQCs?ɑuB&9j 7( zv+T2Kި#JFg`;3sW%L7菬X߻ޠZ`*^r=`dX3cJtDXnk{sF1]Q="ѣ`œ =Q3V2S %BTL y҃ZF:Y٢gJcoAҏ╌G]WxOY#2 74"sj8Ƥcxh^xT]V \wLh o#zN$I%@\&|Xv⍕T2 }ɢt#oYP/'[)P=اϒP۶5]^ <>8[ pSCG|F\aw*Dn~Csi; sme]%I̵U4JRobK`9Ud;8NFKgđFO-DX.\МqnN[= 4LԠcI;G /5>{eGc3N#V JZrبܐ{ʚWeيc`t!l `oه^FKuR+?_{{BZ%h4jJc:ԉYH^ ["kܴ  \k3$B5(e&ZQb&r܂,;ѣhCޕ! !mS cms L {AJ{6V٠p^ގUa֙c_k,=z'B<p{=H{9F Z&p#`9&pakkY//*yqKhM2`'l{#5&ZKTpbP,P0OMi)%6jWktҪ0*l/i( q1"?Ǯ #TlTd< !,iS$9Mr͇BPY6PzNV}XYuԂŶVVNR */F-e!7R.eEomR"pSO T<wVls_p| }\ tYZh#h>m3uL658,]sadtR`s|eZ0҅jj4{XϺp))ЌpD;Y MQ.:yagQ & 6Zo7UBn-;)lѯʐ#Y,nP# Jazʑ'e%'lۉ`!{p.{̺ub{>;Zi-B[_4~vLP:TVYZ1fͮ%HoYVXV 4ppDVInՍOJ!sq^صBV?^sہ_W2tiZ҄ cr @SSGȘ@Ugk~b=?6x~P»֝t )}9S<.낉,i+rb,I6b g Кi:%}k,ke>a3l~~LjN;Iܠ<(zS2bM6={uߧG/8@Cl^#XCGIyB_S[q1mOj|db7Եe)=U={B$$[[!V&{_TH|-N;[-nű![c#5k)"nQ8.#h>R,@v8y%hL:'loTV\TS~h*#3M[RS48G˂y[ٴ'-FƸR` }O~ 8V0V+J趷S+^4B4(̎k/G|Bd2(&jq]AYW 'BEaswnu~VC+A;F]t`nFWZx[ئ4h`gط+b %u|6{!t3Ÿ|}Ɉͥ^@rŸXe:5F''O:k$epd!$lI&Օ=$BXƦϚi,pNĒ1zJ0BX_z#kem/:@.:_d. 1z'n`7)zOǩ<.˃CBڴ(FjpuO lr39 e&62}&'$#lp.#ؘ_FEB\Z>_ulB2{}׌'J#G Нur8'B 9*5-I/];#|"@4W cý8pȹB2-ݒdVF3FF0Zkd;pDٛL _jDhM+$[I%{Y_TDž`Kg~B:O6XyiXnlR]Z>r=)r\F|@4W-zilo}Bm 5C=|Q- =̴dM~e,zh%&Q pe>[!OE er'wyFAck.[f4H#U˴̼̬K6q$ y n~f#qO/Yߚlʗx`B!-@ۃF Y߶h IDATf8SFb+}= ۰Bj}}NT WJy跪6=Rc4X M靡>4*6m@{XGΣi-dHȊimI,aT1Υ8/J |.vg#_Z ВF>:0k/>̵qJxYР_ KRnQ2SFcGP (rpӉ'e t*ElMA~)dY>_YSf=Ղ Mw`:=Q Y`sK*n780 ^uFs4i3vsfېJg"@IQ}LVh{-! 'jk.kץ;>>u&|Px#xO9Zytd+O7! \4p8^D;D( R$ eM~$b%&ao(UhfgS[ * ]B r܇w BWB={B<(Ɲ>a`F2  18 uۥ\R(M0_eML,Я\cW{IQ6].m˜};wo;fyC>, Ozy69'~&zf﴾>yuF-%Yd,K希Ls\hl2 b0:*;ZMvW8t'w}97+V"e;rTJhKQgR [[LTz;S0xt^3lM;<@B /#-t2 \xY/RInt9]$mź>5JeNzޑ{UڤJ/Ys!k%Hz(p ߢlF'Bu ;+Wj8*-G%J-Uj-$\^5rӥDn}-Y7[P$L+]RJJi22qyvI#Np8gECi{KZZ0U=>/5=x~_9W,Wf}qiTf8^`] 14>M3LNONX޿~!Ճ}#Yk:`o3sˮ[ؗ7mS%Ȗy6k잚 Y'f"z'-и9.wGq*L 5ztgowǂyw#Ҁԯ{Jp&AU{=VDSnu#n2 ,G'(|!K:_)6Gt}XT3zqX3dL%Be+@sSخuC~S) uIBpyd\e4%4 }ø˕Y2I:k@/C~bNiĖ쑥R] 9.#h#YdQJ)TWJ0ӠkkA;HG=dqAs\)PCT CAR8.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.OqyqFи< Y2m ;.2.=(RX)xϡ:tqG>4˅g։c;zir>H%W<$!Υ@Xo}F4G,SRB4z!% wqAp%5.f.<J C;T -~CuV6/!a0E qAs\#0N0(/9AdKBwМJe1J3W"KJ|\4+-ASཆ2E$>O>44"YZ #qG22q&Å%74prpbgH'lSLrh\As\)ƎdCA!̸pC)x$}n,oqofO_Eʎ8Eغ|Ű/m2:bȄ22qVIK{jQWsȮZL]PC9# /K&%:p9pɕAl)-mKKP HGBP*AD8.w r}bz.嘨\a,As\hÒDޗ|Im#ׁT(l!kǞ`n"O]=4|Nn nXuCb2Y(Vx_(sb#`L\Fuhch%$)ChstQ^[@YQ6q.Lnd%L K ' S$6޻(f{I|P9V,#OYf g,qi>aU2@DпK6KϷ̳I~,`r!{=#8 ?t~dG:ye<𹑁BFF{QdP@E֥}(,L$"՚Ku<Cs 2WǕt.Ur IcLGA =UXgiOynr'd]2C'c~> `sZrpĶs*ٟ} YaZrnC=/K-JRr.>$K>: ި0}Ea)ybɨRƨ14~!qc3#h>$ !!:1-*5Vgq mq׆4H%E10}JJzbZ%EKb >BAqH^"0rFCa"=oBl-Tc%3 9= ?2uEnh8 * PpSg`{bAy2c+.M|nST 첉m($XVR@|'X$EilRK}gqw0L{VKeucJCˎ1.1ԟ*`4_7V]L M,4nP1 4P`~&jh%5b66whX Çl#X1&H "|IkT9BqD>SW%>sn%72Fae^&Rr@*h?Qb!!{i3lVT%@'xB%8&¼r@"DBˮʉ. ai\؞zg*dAsxh=4 Q< O0@9 ]TPb#CHX /T:2 Fk4a" [,B"j)RBxu? Q^_ZY:gtݫM1 c5uQtE֒I.#>˄ϹKNv;HhR)2@aA\'L +a Ζ csؐ#B~ߒwD- 1`u5W;1M@5v#%IݠJzsl}dU&ct!Ɂ{L?EFor1K};w|gQ&)ЩD.vMeM,X@ Q"CzG|?߃?6c:b$K)7(VkK~JJ|m,Kgo ޱD5~%#%X}EH+c% nHA}{쳄Gs0D K`c k=K%fTgCFdZ37)s51S>K -2SAyZZ2-M:!pL#qAzCm2ĠB[Ȧ>kQ`{&rP.GFz1ק2TB4pEz ̾ CNvRŧW570 |V:}PFT|8>=60 8ڐ2O;ü 1#N\RS+h`m@XJxMbݡ3VXbMcr&LL 1:O@ Y$W_bFR*K4Q$t (_*P+.W@l/2/JvȀAd %1#v "f؆Qn `A`g.s7e }CǒEV_ƑNzAR|%X:ǧ(Kp)i+ ؁LE0uEzF52<݆kLyM^xƌMv1` @,Yq`nhjhh[k"Z\|ƅvM-iѮcl1RҎa1V\?బ ke Jyr 0t{Ri R@:Q%@?fz4ׯ1w" 7عWvEfl{\l n]~ u/،ȴm`-`6Ƙs99avGd/=Zv66\ؚcx% S)!J(LCGRq(eR;Y%zeBŢH[|2vVeי3{ݾ׬lͮˍcv|k%2[9~LU}LE6՗~mom,(kk PR ȀD*DhKૂ^87r s95;UPuB]Mg7d}}ͷfkGnj8ہSXLD9!2DsomFDD 1]F+L\5 94p?K{s!q>I LnP^Opnd`^ίz|vvuk6׸؆ KK c,A+Tտ6"=<6=vqB,u/غ1֩k|\8|Z\b0K s@ȾPuWw!6Ӭ_oS>CIԖ srܛt`o}p;wsQr@{@՚PU 󿴫ӯ5aع 8|!mr 7=DOHf,E0%Du&qeLM_d:a2?\oKjnb`j@n(P>j}"]~mC@ی ?f+Jyr̎:? $%$)^WJs R{YĹ}6 p~}ы}d1~D/`ga 'h7bnj1A?zuBێf PŘcHJ0~L3AaM}LkɭNΘ# 隥apLH Ԝx̃f7&TL'LS2#m2,t\xo]M5dfcÞP<=I(ARHpiJL3esoZx K$"TV4Y46q\sǞ[<3'@Mt.Cl{Yv C!wUUA`4` ca Ph$SҳO\9^ l_tm7}fZg)o "C' s!wԘR0Q0Sa~h&هԜXzoS|e:gOf`۽Y4gОvK*%0V !Vc!֘JSk1Ќ}ʟsaz6ӣ~.OvPVAI"{d4В0t06%4"HFaj'c<T!{:D+xm~? ŝڮlˌw~w͓8B8 w]ר4C`~;z<oK N4 P̎_nضbsE%4+liKS-)Ѩ!ukbfw}ŝH=2*xÌe 'hOރۜ\4F$=PzP(JPU2sAf Nfvxf'Ulf_76˿iק';1H14F*d7dZchviƹ'E.)@W>ygqlj&fK n7D`'d,CN _i21\Bs!}3gN2z3wB0et،k|#%W]g cn_ Ç $c`]%@wϐ~n/lvM]Jҙo$)&I0$` FE IDAT5ZgSI^j(܎%A3h TMj~sTO_uXס4P>)>j5S#cWe!2Id ߿,mՠGG/G@9F߅[~d2u}[gǥʔ:Ŭr ]b}҇\PQq0 Sa9B~L1=~[h=4#p,3ض;]) ":çi4CÔfAƲʡ: nү ~PgP LSKi uuYS-nڗk#zc KH.4Z{3E&=ĕq˘B˟xn~Ο'tóJ!7} bRgaK 8%Zg,C51Lf!(Yk|$H}}Mg.lO!msnK7ӿМ§STVr!*IĀĩT(){zdK!esrd[saM$n@l.ee`&xo,nsT*@{ځ闛hn}/5ԅgl6к/X6߈%J4Ek!0O zJl뼜o1sԶB?zaۼT@}|++[! (LzRDKeK\88D{@3RCK~hSPjdj9 /0Hg+T##y|8f{hn PُLh\,=32#.ldVP8fqP!;ڱsp~?x7m@ځ Kj)mԭ=WZLar*7WGo2'A>gLζ.ϰ=y|eeۣ|05`j."u?'@?kŌ39Mn:5,1#!\Uw ~5"8fX.8%>;'{ qS,(]'3=^m-Lx+*q#*)O@Y|lGRN HB!~#?!)R3MxSή?o%AGG:;S4'˂ORK05) uGs۶[&;)k̸:30"3va=cCK:Pe h X3a.;\E)Ig5(j0f,{?,`;Ɯf,#0 r}P7ԉUlw*a 9( iz:z2Y1e;H56ўޜG 7b5`vQ5a3fw~ɵ`*9 CүffiQɰ>*x.eV!STjf| ;f2)nOE^9,j`r"ȃÔLS&|mE۶cZ׭'Z4lwzI2|ݗi āN4fw}w1 qTx5۞Z6Ս7UәdGL_rMetud i<<7,XYZ0hp%|>߲_E"%"lf}{pg=0syvAR u4᐀C M93[Z1 gԕ1g2LTMV8QנK&K LGlp` `uKn|sS7A ;moG׿+(B Ŗ ,~TLSJX"'&e^:0#My\ME]c$H{Hm0C*KŢ><׉ Y/2Š/Zl0Xƴ>?)@Xfdt^Gi*J6/NROf0N%;>:B Qr#IBQ {'7&6q2D&8 " /}@3E 4FMD4m$X}kOBj 3Lk-nYo߶xscq:Ԭ)# \Dѫ@ANȈ cWI]rz@a>>m/;L> ^B`>3RgagGpu|6|wɡ\^!G 퐩-﬋%xSy\PwiɄHFJ ;M1oџ0g¾D$cmvu..i K wheERl҇0۶:|΍K/DO$%KFc9JT*<>XO D\Lj$p@J:}ӻ$>Dx*u!Y}saiYd$P* kL7F@ #/>K8r-؏%hYf3nPn:cdKt7~'O%emlhO]\ ɐ\kqS^|9[Ϯ|qu@)rR֠zAD H2:[KV2"?5ޠ p`WI<`rlczq06M!0;dZMD 24gSD+hf0 ;TV<Ĉ))}.x͗7_y2՟ `?EYlh]͕S۹iVkNxnylNܴ~yՑo}"zH_TP}v_jD3€ ьpw7CU sdUqu8d)93c^8"o_PwWHLk9,a7EƲz_S毿_1? {fB{dTXIQ,C>͂ḬڥǍsxMW[ҚZ(RD?<؁%h0O{ F|&ЬuX%Q4Ov3"g,ˁ.BcUG77okn/EIH.,@A$1dn6Ԕ8b7_߼ Q0}j tnٜߕ Ì%}̎Ks`KآxK\gϘjDtob,yx>.H)__6*MB5$nj8eS`p-SM47M6"xyna:B ?0& D,H2ȏMkL_s[w~ h"nWh/$`=`tekd05=g7->x9B 66G`7.u--31=P Oҏ>12~M/$k F5xH) DwYq2m^2c4KnAE"j=cmT6o&;(~!z@sc.`!UV`+Jq_~D?S_)LF7btK=t+iSKi$٩p$`Jvٶ-9mm[kkOH!M Vs򠯼Ɔk̸3P7ޝhWh;@Nl>#flEC|I-Q$cQZKeH.Cf  f29YL>J4uG%K8dG'hKrk45e3 M"۫&/~? Ǚ4Fu af <7,a e;/>R"Oç7-ٙl}<R=`4 V/;}p썁[:ݔ}|ɰd<%dp ăhfH&_+y$ |2v?^-ŭjWב+#:Ef6ry_JϕJhIȬŶ#e,1 9"oWCК nyMȋ@Fz( s%EpComq:|Ϧū-@DU).c 2p_7׻ %;&c].C;S"M`e8ñH$|DJCj~d0nLG;&":ŵ3|,[5idSá1$S2A2̲dCEJb\yzdOU|+Z6hEcr6bo2lc)<`KZY/kV&"B J CXd l)I\?T"Y c:Ԟ"K]86-I-v :(LyM8]dh.M=Ôa0۱uP?P.b&9;?htc^&Ux]\*?ʒJeK'%aK:,q݇UXCIVWܮ'Z g]{+TO׬֙ TMftE AJIJdbw2H;9fPxfC̀z 6hpsY`G&SOWU|~ \똺Z93{e˗M*>-k2ɤPwmrކⷱs#1ɒp\ 5&x /']P EP6z.v `,XHH2x|V$D/aߩʤr5;".E͜nsL65'Jܜ0JIJ2!ym]Od1[пc)H vul/:.}>4whgR u0sM4HSl/gxcx/6hY H<0箈FFf | ƣŠ\8D?I}cӝ%TQY Ss\ \n!6?'d !kn)!-\P<By"0B9DzMR7 yN΢jsfoKċ~@/ nY&˴m[/~2b 9<ֻtI6mp 2*pF?v0&4ÓHq|A`<˝ rGtIC]9ɥ5tڜ\ql"5!!PF,JB|$$+ K GQ= !ȏXN.Q[yET`3Yɓ=fKLC10G9 ?~k΄xNM;eMP-bצpnj-ۨFWm ~恸|L?BUS/vbYݤAŸT L]F<\1W ?%TO v'-L 4*V+=V NW+ZW9y1Ʃ5w;L㠶cs{S0Jna,GDx9l KצcS=oɍ;;wR퐜+N(CakKG= %]5U ˰]UI777HÍ?;zcy n@{Cs?$Wq!N 0%PrfݴxAsԉ/؍c__SgAKj4*ԒT Ugh\&%f?a7iW8yLQ齛3 >MSҔj"6x ih)`- noSU s1  TS}1iKdsI *_ %O9{ޜai]6 V6&5S6T%5HVUedzpg_>DYW 1GMyVcv6 Qd$%]&VeYfXu1E0ǂ2x-ɮ!90@f͌_ٷ{gRs"/(#7p`<<0opJ}y`D0rE^2}"3^BP!dHS DV>8.ϗ7 =JWJzr IĀ9 %/dE8\)VBv'+ ̎D, @V M:Ur3My<%;)AO!/L NzTJr>KU)sjv߲6vץ5BuЍj:UJIT{\"`?&a1dy%rSo-]! rE\mw_PA38XE *Y0@Q֕{P+\\HW36g7)Kqzٙs4 @jpIU\2!<Vo41۶.F|eb'ÇDHv>∿|gk)g#p1֧hi<,kuxy빜y*ܶfR~5O/|@;\ ȡiH%;ZؠJکZ`P21b 9@w}mNn4^q"xUr%A(=v5($Ag 53L]R]! ϛwZ9 ߶ȉD r{zDKsA@W3_jb'qN3bW۾Uy lZR[އD􀹛e=y!\ll|Hr,+!;3وdChxı`} ?.`R- 5Ŷ=K4/,DoPoQM^bVdf|{*fptބL3%E(R]6wTՉ+ł82[H2gu 8pzA$kН1ϱȽviJ]VL+~s n;ɱshYidϵFꔨ\2=rT|p3Ӯcd^i^u4WǮ N:Bċ0:΃Q%jzd*zϟiW>cFp/$ Ve#?Q1"pPmO2xߞ9gi\B_D)Sd<C] P!b0& /5JSUi-[nfDl8%@C?9pi %:mOsnLKPa.n)Q ? s|+_Ao WjGP5[=@? D$ң_xP7DOz2sޤz{wVxJ#fr#' G#[ CN)/RHKDo9(aBj>m--=Y1}i sZbεMNKXVE4ȱ3Åu> TSllqFmvJ$PϑfBFIXz/1ac F_D'a^ F4CDٸ,f&&9o KYß:8%IWIsKTVFA~^#-"'U۰E)fy4aD19W#i%N>fPF,T;:P+8 #h-+D,bī-"l="pº'ZJ <*d!br0amSyxmX(sk*5fo"h 7 p@$fe(oi6ΌUy}9Ǚ!9MJJw3S̏F}bÆu,xB]fײTA^S,y4KɶoTl`ZSbmf)8RI9AW)%Υ%D`C`pD'n3 '5Sȣ`ޡuͺ45` -c'" ~Aq2K3Zfqtb1F\wPjKR74"ya^E.g\PTon;VwE^)y2iBxyI׏^Cu*QΝ|Zb{KGOq2!s= ɽ|/67e;X1N$#0C2a#5W'5 axgǝsc3;g˳e[%ׄzQ-D) G!YNy7(5TIR x6zk#/FnRREx iJF(\ +D4Xj4r#)@ X&g(y^o-b}]dg`qyL9Q[Wm}ӇVw ~Zь Sh]JJoг=>KE0}MmdsDz_;vATeEMWh*Z+Mى6U,RBUR+9u^V{\.xG-29kwaآL 9 UC,+1C])9WbQJd7 D(K]r)R`|kJ@XȪC30sazDc }o`i~/|+9B1 ́%ثVb8&T4ku9Q}zFey"(C-rE9Z$pf<zƷO ; j6Fۣ`nܦPH]|LttoWcó# h,"!0PֶOd՗.]? "xN|8}9Pu[ܗ9%r g҇]3*˹/Z b{+@IO99yHK֏ RǢ״=y Y2R [G{aP*_{˱V:XR&ZtĈFIAg1KYni9QhjG(YV2ҪdM(UȦs옓 vτ-dOsE6xy\ƥ=gAV8w"{jZElDfaު닢;g|Ĝf.eݶY3 @0P;$}whfJ6Xi5FM*=^Ic~"SCLK~U +D%qgC献3r׹sioT Ќ  sQ$ k8PSDI SeaX`bc5xa2)y5s\@Yz[,q栒ȌONߥN!bম<FX'||xRvY 3fx`mwluόG*ti9;6mKaȷcWGGa-Y欰W߹G^>Tjr,s=<`>i& hI^5rX<sXu./J0 u2md]4g,얀ō&sa1a{J ( a| IDATyL*շ{./ 8E@6I >G|꺩J׽sba0"_ KLK`u.)~Bò 5 !+{2yf䂕֙?$ EKK XvprH؎d\!\{DwEʬuS(. "uIܻ!Nc xB퇥=%%G&I=Be $uY,N:79?ߘ gh 8/8 (b4^^<n ,{E m5)YZ)Ɨ)T'KA~#]zd1e'=1[K>r3/k$$`SmO_ZT\m@$L x 6X`%~zqcZtzR)N4p.Uq9v;yf`<Q"-3>sD|ҧ4PtzTY[jcl>F4-@MlؠJ,gp|-4{vVè\{ȳO" P-A& o7O z\i– f}foȹ"P* 뻘k!o/&n -1jM319L|EO/b 8v12  t0.c9ÿ'D8';2R"\^ք9tP<[{q>R[L'p VnX|Y< M -!ܶ3r0Ǻah>G=J5(\c/֐B7oEGIK{:3+̼u=7siiɛj6鹠N$UWeHڪѡ1\Q$kWs9ޠ@EK3 s ؚkjA{!G'13n4Ge߃ =Y+i:*] Ru=E|~r>~ 27\KȊDJr9cZf8KV|5`3*/Pv $u"ص)&ԞA =u"#a\ePݫDcrKbނµYRz>N*Lܕ\x(oFNʒh ǻs\}dNZ+26]B2THr:9umHcrj]K{rdǚkB7]0(e 1Dp.H>ӷZcp@ gD<iAW!#yؓ Gh&G#- =7uͦ{v-[Z+bj\YR}퍚k|BK[-)'+e^=s=H-~"Ǝir&uc5 Pso#! 80z k.;Cpop\S"/jlY{=0~o JcxA@/An¡(Oc Ur5!ZveN[s6ԩ_ODݼrV^,\7W8%ZjsZa[極%fBٚڲ$m[n(ͅkx=/@R.Bg RvSDU봪u(Q)ʐ9z̅ T1;W\U}`j+nt~ayJU xCbq՞6hbz*ĶdK݆t_>֦5Jw!qܝ55+.)_u]0G vy66YhslsmT)!bix_k$5ޛvր6^pq*xZx2֓*+Jxد|b>89wL$VږyTyZ9+f`SMU.j̗n4sQL5L& ԼjXTq`trѾ#vċSmWt^*{ZESq<,y7; ?Lf-)P̕ɯ'D8"i ox."de$۵FJ UEǖ2P+dYLMJNKS"qG]0 1nVIJ&9:N.5Zj09@YJ$VAk|ԧtm{fv]ϣ={kx܇XN2ǩ9"\ dP\\0K)w5'ɵc(Ƭy蟣j6+'"*/,W-E"^((d Hq)T2x\!^״ ;|hHqRlA+0GT4WpaF[󀆿y P^7Uim2LS5kXRUZF2[K(Ji%1,-8 249fYd)T= -_`")GxERft҇5fʰ#~`|{>wV PNo{0S 3 8%J4 mTbQWɋ>s`)E}˼f)@2WT2"͹aimMksN1y 1J3ea\rtO: {=*։|C"mgՄL*5 tNLuTހO$'MB=7Obsx\.~Yd5CzВX; Hs 6ɫ]%O6;-aǂZ!K3ߒԆLؐP0߫8Ǣ*o!,"cs 9cln A"WE䈼Q!63Ѱ윂iٽE# #"ӹ\ .iw 7Q&K;|F%`CZ]rt*;֯qW>k ǥEt/!B Mw$9 = 9$[`>jjS-8ѵP(Xb0I5ps 7s+ז JT56q6j*<7 C0J1F{ WĠu@2-e+ sײiTcw\|-7Z BUWRT~[|NTrf94Q`?d!1D##W9xpD$2ߜ0J˰eVD  8^>?""AFK*Po:MҺ|3b<`hEޤ QEJ.5HSBzK:~n\sgNHՐK=<~ . +;8Pco^a9T Gz€-8[iX7>>&VUsjP;:t4X=SpַXg~N !(UcnbiH,:h3WN4=- iīEjL|b`:BQlT+p/}mیOЯTm@"2vB]U Zsp7PF'vcXwCns4ݑfPxcsA(_L']^ɣ9_z9#{jγuȤr bs<Y𾕲A&͙hvoToN9~q&Xf"+gjnKX38%q[_UZZX[E[=ZZ'peĦƖiMQgE =}6A KHSj;"6 sÉ<0  2EXyAp`/e;1a43Li}>"#nkŲϵN7%b!,xʠ?P{s=@ *zE?f7O`kkpBc LmCm'rכQZ4Dw-DxpbTSm 7_Dە\>ZXuAC&#MuCKe]B?Aāч#N}EJ4\-18f)͉0k^-(Oپ0!&>GlZ׋cPIE' U &pp$>af .Pzɫ&#{N=|܋Ocf%nGGycb_ B2t2lSC_1̉-5D9ˍ8&OmcIL).zBVSzO5Tfl5DuQ]"~ ۋ0"j|W" '(Kr[҈]:͒`'&@1Ub9T? i|rsnش,](H57NM7S B1Ƒe373hxgJYĞU |scX3ԼaM(]k ŏ]֏M/R%d=Al8Dt`{?컀J<<,^B}ɱ}m(zg IDATAjUtJ9K ~|*f-Rc6*4|Gܜ,see#Vf7,lIv 1Uld{fzEקTczd5k@}*s߯1g#<4"n>Sv@p:s >pRb5WRʹY4d ]hw׉عCP{_tm\&rނ-*3` B%5 ~7}|nctBcDset@j_"}R.ły>'p?E<ǖ!MU`-"3{q{f`2h`IvbjZ ͽ7ъD|﹯BE9CQ_3M}Px1_>Of~[ű=Z+jv ڽf _v9 ,qP1wX#Z"ZQ1aU צ a=.b ,}VA /ŏcX{ͧ^h 9ýy)n6ÑL aj̸'h{$1ʉỹ{jUVgIRľ͇ ~|:k v:L^6fU 8NlsFQw]Q jֵ6T][˷SؑyR=JRéx4hb<0qțXGVD~msLJ{tlsHMY^òE;"_JRkќP!T$-xI\Wj9*IP/喪M\U  B(c{f"<P9?,%c3}?CoR#c O\<5kj5W؎)*m=MMv @[KlЮ8ƞ7O=@lc%@q@Usg H)]'aP8djd%#GNd/g^끻60=F<|߻FVE= 5Toub<=[?BħÌ8<6cD5 DTh-ׄkDWcW.Z \g^N䉔H Hȡ@O ~كF,|@‰Iz(XG=@TLnH!t 3|\',DgcE/:6'cX5ܦ.L}>ZGMWŌwiۏGʍ~M7㊰p7~+<bC+?Ą Z c}1+{UJ7G8`E]pu{<9d)*IcbGALtP >/cdv7*Ц+vU`) ~'ܪF׭F9ȟ1mԸ넍kULה?劷enkʄ_MO;uF@.ʋ 3^S%PR O^~VC޲U7ST4"Ȓn <2ļ%Yj nۇ q{ć'+ʲufױPGeiAĴ#u`VRn4(嬘iϡ·2+]y]u|UBR&ۆi|N1ޗMdiu*`:x}-b•}/l>YaX' +C61쮞R !BOJjGg2ir2tj53̽u} @ ކꥅg4\m 82 0!ݚ(TuaPTKo#u z5,f9XF4 ^#ilR 1~ԃf BO>o^;X+@  zR:t5m³C܊A ؠG)0,_nǠUJhpnlZ]OO?`~$rw.$c\/=>Ih yyQX̅0.'&[`J p!h#+ء 9=k'U1wi=Fu>in1p= U)J!Bay]G>Dyȫyu9&_wܩc K=*~>H #w9 g !O 0SPen[ 7^dsL0iJiB Su)%xW' J:, 0T<[ Y Y!{E"]G87tAcmӅP)%=ϑ9䮡fAd" cE jj%lk,y- iAiL`KQLK%78en$Kb@'9$7qt)^Pia];Z.Ij%`Zo::38cĿ(b4d9A a;K^emftyY'<@#^ 5j}XgS,yb o_Y7]&|8gs<gvQWQsє#U<)"Yof>B9 xX]d[!FU!?,9xH9UPXbp>5HQԒ*,ʐ|'r@WuX*]FbEgab D`y͵ S08esTw'G2,b<7Bs +P^^%i;Rn-^ 3uެ opwטnEC E\`m?CvYj0s=T~̇|)sV Aױs)pE2bE`) F(MdMzPE̠xBV ;uq[#!N K>@?$mD]P=KLOx[TMNT#x,kxFXW̵̵vn-ɝz5מWGhn¢#%>%,tϱW%Ȱzpjoc>`(̻yd؟Ǵ0ƛ8ɉ\DŽ9YZ<&2GI>g܊J:lC~s͡ 3 ͦ%s!zJu=!e 8UUY-CR^~ )_Dky;6zv{6wTWî͂Tx^4seƿ{q1s0c,ayaKn/ʾy;,s6a>Tr$xfEZ KcԞWH`LbMmkŵP 䙳!8fFf>&F:}2#cnRd-KLNGAK<)I3 O}*y,h.C VGm!7`R\"ĶBUWSqPN1GxK_ מ.VK+iI=O;@!xFQ!=^p |E[<e v."-Q/߶xXtr^}fC97"6"|n`Ry.@QÍ]^F)]>%2`7V+ =RM rP^4VH$:n'ׯQ!Dg,!z/ qg0T/Q7u}f F 5 x^OCLwPt3p'w6*.x=l ̶fg▝Ud6q6jˠg\|.p``A(^vxJ*sҼ sq~ZLr; 'd$<=`gB >#j ۓkC|nϺ sBPNM_>>;nP1%> T͊c^G+x3E=җ =-=&mpg'I'犎=\fj0sO?\ %Ky S2ƽ]7Bj% -〹Vs" /4h0SO-{y1oYDX% e;(Z;ZeS2ٖB/&ئSݰJ3|7档85łk*U8.]pˀvU#9יmmjL1!L,/J`Ms? .r"OXXIgsr`?Eyy+nY>$`r4쨄`ZzbMV:6: NHz!TASw [ !^xmK;;Q%~sN@U. nPnT,yIp W6:BhT*5x]~ 5/ NBR9d`Yi*9_JUx!PO>ļ؆T#zטj6#Xya#1w8eH~M'3T^RJy,ƌȤ3ؿ8 P)v*'Y,Gz T"t3dč6S6|̕ 1.Ua*B<6MT@-g&x S@F`7p6l~Im6*!٥)spe|Nş5[nptE.x880ӈyH*)[,e,~Ͻ!pEd$ 4uڠB{D>S29󝰫߁p#Qᛨ m.BA;)#I?`28N@ ? [sA6C^RZsIնe 'Bq@zZ̝@y=E.~dM]dB\c72~Y3Y80᳆9 QO O9??21 >樮oS˟pv{8NP1=[\Ě҆!dE{6BX1a x{YF]0o+lSn!6π Ѕ!r7 0Iߍ#wrNE?kSך Sj{>bCυw"j8[4iIv̧R\-̑eNʀjMzc#טAG`DEz4p"N?s`~EG;ݸܓDN hwynf~S1Fm5b!/Q+4m3%~j ͥy0ҜSd?8M@I8a"0] ȱa\スF8/@Ca'DQA̠ 𛍫 U!P/b{&kBs]~L;@@}v~Z󤿧(bOSzLiޡu󯈸B7бLDt`3J6bUj5+,(8+{S=![档GVh{ :Alv_XV?{渺I_Kj z{`q [c0]O!WY0Yڐj.(1;,s١ L(}ռ/˗tI>}0Fm&ջȠxjRE  2r!Rc2Ŀy`v$yS3F2XSrӵ)SfY;Ynh9k% m=qh2?*߻-(lN!i;4E>.ghҿ_)"cmP>x pUS{Q1r0;asNPsDЂqy HÌ{?{o+ɺ}̽wUs;u϶ 6dlcy@e_$^ɒW~شڦm6ݷoLuNU)/VSsjP2w_|[k}(HzʋҜ=P">1GPb$&g_ IDAT[{yF4Sh4:1t_ЌKdPrTM=v;v|CFܯ j;Ϩao7H\Y%8@6byC]1)48yNA8 Zv%tr\M\`*SH0ye' = ԜZccˋ(~S{l[QNmN0yN9 N61یfz?gx=[(;$w)b 7p,&X8d7p 452SImPpJּF\@35L˄kZwnʠe{Ewe&Ch뛝I'X pr}0 lz ,)L1EmS"Xib'ьUb"XR3K#zHL]cR8!N}_;GΞ) >,cnHQv+;X.!dF. N_gO$S88qL`_BYW%e9<|/eyv~g3zNv~88k3azm(n3V;HYh;C=I|/0^'5 bi4}zxF=;t;[;]=2<^raɞ?ﳀ,/}w}Fs&蚀ІR ƞqbk/j:?w s4&S)4[s1V5 ^w3PkسMwy oNL_CCQ=jĈE9^,Lv]"sw5"4"J+"{Ofk/ka_|GE%ЌWi@oⴀ0"غ'9#]ǾGM|`5ɔLë{ikkr,e0G_=)0<"9"y ,VrbvWD'!f%Z%rvj@2v2*v|ŷGg= Uw"ggx6ඔs|qcaLqԐZCO'Ǿï;W|ػ9SgH+?;÷\YbްAO!xÞ2ATsB-_Laܓ&^ d/4seje,TL(țN~nIbl#/zKi0;;.H|,鲯,&KS@2n{O|wDt9h-I&8NSN9hT$4/z9H3Mqc@S&D!jwQ":"'I=ߚ@tkBrcyNL')+wfHaVs.`=<44e /8BP \gzo1FS2ꘞ(zСBф=lI\LI'T4/DCtʝx ~oK~_ʅj)biCӳYzДn`\ ҀׄJ<ʗw$*K칩*f -siՎփʚOlKFw՜8˅p)OɔuLLAumQ',ST7g,d%rZ5݅no|owU>kbZ,emx,3 4B]}LFVOLqGz:'`<ԁnqZج#6U(_Yj8&_;r$zsȿB|HTv{ls8͞9iDHԇR$L |z. p+y€O{|G{|;\>CX{x@U4b=;{znh?S/S猂sE)<:dʷᰎ`@3/0%0%M;LBx%լLX {- ͜X+8B&=T*-f#;ˎdgjq㚴%A}Oj6g9i]Ba8:@.'C)2NN0qΡ{8M9hGjocr G.to8|!VC Ac.GN1S1@|8oJ@`r|y`65 ](M29 2.'fӪ4g|afp3N-۬=ܚ #do)zIuG[k ) H9G!+/4K)| 5ÖH))c\;dmX?PhZvb;{+׷e/كi+(g 8U5j$;9iƀ35@s62>} z+/w\~o.B;({p؟`T 3V+^4O|֜\>&'|lhi^v&2֜N}2͏M3 4SR~K+\A4 3&J, ض Lc5fT"K =|Ǐe4 gC.еB3ulXcLy{Yg& 6a5u)drcmf\#un) ޓ4tw8<2[vJ ckIu%0A*ƀ!]vc1 Πp$0%nsa:xi9wsv ŁTMg<~)dhzc ﳞX&<7|J/n߅GrpZ ؁q^cx NXt{Fo\KnH@3qF•CYu(cild#!m~Z8Yfgeq؜M4ȅZc%:J>׮Դ;c6|Yq;H Eq Z(Zy sf78mt1p[Q7x%EhzS1`J iݒ#'yei\[:[cOu_kv{\r Es-]BM>im}%fsDk2S?ڭN 3eq/tJ{U{گOY )鋃9v]<;buD׼%Y?P0kϱHvYSs*Kٶր*Aa'-1Yd"nuﴻv}` qص-?\υ̥DFm:%O8cɜÌM؁S<^{%,=':t~!iXZxg!C'-s|q<'ZL &"T/nM=Ci4Ua,~VF:21 ^ v7P[ *u5-,i+\O%jB)m ?ira\qr]m!_F))@1Kv &"-I4X$RZ/4S[/5rHڤPKɛքl24`lAg7)vHWakw{]w U׸,"'8v @ T͙It %NSOk\bT+>fiAŕ%N#hOok}LR thp܆D? ߜX㴷}Ș{_hUNɖRyadaG#2Ks;u#ZQS#ξۇz߉H+" \#$ ,*}S3r)`׆5CL%vrawjkxƉ,pp3$r &jmc<1fi-l8[tpa|VG$X$S2 ' BkyOx, T(jnL3,7 ⥄ ?-u%7$~@rC űqPd!`.Z 994ыpӝȕ˕=p],VwN{y?wщSQs(5}=S֦BO}a8ko|~_'ŝ`jڢ<|$|FGa0]h/a9lM۱9@H Xmrzo+0EG˂[q ƪni_8u[?ŢcC$-h~~Xn#گ=W| @s j{Ƙl ۜӋJ" iHs 밻m9mσ6CYPs4; x! Y-7גQ.5Hgs s(OK-άga~hZ4`< ÒDB,AH# N[6Wf+˕AԽr)X S!{ gr-vc~W}!pJJ30`6"mk^sq{<ɷA\8h-0MN0mv#=]rJ 59W 4 sdə\dy2咞0㇗$;k?A2 f`LeK5zW[_,;Y,?c355Y*']́r~g y:|C׶7I9 ÑMHl d (0k{ͅeh|F`5`MgHRX͠i(DP l]9&iIQz,+3-ࡹ9X P.y%1}4p#_RɴX[JOu,~s Zܢw=Xc>/ix4}߇~wMWIJb $SԀ [5faGPRCƥDA茦ɏ6jݕ㺾 @2Md)Јb԰\O+3ϘY^fJil#}XiSa7*KāUb:77.w#^ڕi@x{;\5G\qHԋ0Iqd!GIp,s;6Yֈ#vs-`@Sr +"o&%rUoG3 K:3Ke"lLkBA&Ov:lo]õ7hV4fJ@n~~ \=D/o]7H9Fbq.$dp# S#/q,7#00h!6/EA/9͠aRKkYK2cP4nlp:.cIa|*#8c&sPŘ0Fh`)[Gm1 ih*4 #8K!3@[8F1MV/D ;&emع(hgI:|Ȍ?}C12њgrʘs|j/ R  XjJlu&Xk9k+'eI\vXV“r{n]B\{+3Зtׁa&$pMin 1gJ !1pUAX٣1%n\ZB?W[Kȳ"f^U&@Ն:]˲8<Ҕ'Vsp!k=APXBݺDhgM.T!:nmiY>@{Gܲ5yO-k^k`:tE%ՍSflGĜ~Rx,}9w\Oq̤M2/ rY0{kP]A~l!:A*DU )$i9;SyBdٯ}\jAlhƓ-S VʲPЄ7>T IDAT}顅SOy434 A u~X)D">U-9 %E#DK] yK`p:G* f9d÷b?ñ"΂4dK+誦 h ۔Lh+ˈLse\ ?8$ VpqAoKpk-x h񪂔+5r_|U?\+Y@h\@7PH`nCXV[xyFH n @S%F17戀c<FR t&ӭ%tYئuVD+cQ f_L%|FԄcs& CF9XƽCXHoFEX=zs؋3 1RuG sqsա0vDb>K@QA5T7 P&# EBEW` xՓ -pU| CxȘ+1 7_ӾqKǜM,F'-x]@ԛ8QnB;:X|XHmzg 3yoP cZf3sT{0CV - z=Š}Rj?H|FߵL1/>|K 7K|'tdSÎE?dԕ:fR&פfuMAAZ! DK[ :+X-1pp-﹠3눕[YL%`bcIOb>8 mgg)xBo ZӓFS&O}s'XR,bP.K]xmo:{V vIQ ia&32 ^ĆL+lYN&1xPa<җƽl3ut& 4H!Z2-TcF+tvJ󲵈?kz14G@16L& wmS ƝKoDŽ@50ц@!{-MXui%Lx^ ߑ-*v ln쬫`d2 ɠup0~)ѥu 1ԅJ{RmOhĥnW DOj)`a€%j0.g)*"m >( RrRfTxv6'b0JNlrj LGa:=[EطIM7mP.1zK&3҉nW8\S,8Ն ƜH#}fAߙ[ĐSm-LLjCFd<S;1m#qF&lF"H奞U' ȗKL岖9и'qau6Мg'챘:5c`&S2ak>8yh}pq-ጨmVgm>(8U7E 5_a dkJ$TI]̬cek+,=7J%; -v{7i0KdjF둩N_ h[,^؉a`w(\+.d%V%3@F;jш.:.B(K}2.W3h⠙;N;ٛJB?ayUWuNa+o5u)+:[8;ѴXeqHh)홖Λ!C=*1xC٩(3p5~7ni`D¼T7ai6@vxFyII>[TS2#*.?gF#T\!`p!܉%c8ICr%[ZP\Tma1m!m"hCiq-;b!_h:4P`l!|OI^ӄv褀 (ϫ599Oۓ,Su+TμVr"-jGnI 3yؗBA4[b3Kf-3h9!`.Lt6evԑdw0h@s:V;ˠX;d\(7r4BͰRdNc5EW;[O ǒ-%j!\ѧuC쑫/Bo1nXӱrb4QNHNX9 cƀcj8 `n~RУ\q+52P`/:)}&cԂj/HjX`{-xR` "M3W*_ffϱ3cFN)A5̒JILeɺz=絵}!4Kl7!m#a7zY,)#sN@O oH },c̛Pҳ5pBgt\w17p \bk(BXp'ko"ZVSMo=]O3{$ x% YukS]FttgfpZ>c4DK.8MlHb=b S-B80aUp|Y\G:TJW3hE!{M!q̴Cȶiͣe[, x+0֜8UY?e2kJL Ks҅_ss|Rcp^ :+"!,ySWP!}{x78 N;.q:1tM`ܻ!ַ)$A3~bi0N tVKv2Y:!5E$MfCjt8[d֣BXyɔ>5VLfE fv(DNG^ ;߶\ǃJYcRvқ}`yEndE#'5V',pY!mĿWv>7˶й]al4̆>wqỽ=gvx4g|a ۑ8cƷ΄΀|bHq9#Mtq]4[3 ƸWjsdj7l\lՎ,wg4t[W-isC2fM@ѝ F'8&~`\+$!~{~3? /:LW :x`vg9aN6f}l"k6nXȰm yo8,RXIKqڰ1LvZgt,r8a7(nmcv}I'9휁 d}YR`adnKb$}H'99}P $ H(mc{2S%k'qeT>ZZa@2Hp 8&_z? 6t=]㴭'z$(l38v+/sf H܎j\.Sb[ .026Df\FpJ0LMk ʹf0QfVNyhuq;b؟Rq K@d[a_Ǻ10_`>}qXoGJև @a<6)wpd!#y )hBq0R3Fk@5azrNN^Ξ7ZA'6fu݆kI$Lл# 6=wC~K_@%OU^h0!4/'|аO~@ᘸxiO[E6^StFd-6Y:C{H>%aMԴ8mfo ږL-GLkb!n(\f ; Y^bRC{A@wnְ%m;3%FDZ 8ڧ+?iO>Ybti.alUsӺVn>8;·%倸.r4_ˋdXfn? [mLuHgAl.ĜYƷƸ&$9ƃฅݖ ux݊[zSN9gľ6{ OdhsPX  mJ,7lhvFR+.qHĬ]ΠglѸKEt3?M l.0nc&\-H1Hu:7|lpL4ڲ=ۭay`Ml㲥&47(gIV[W,eXs ?/3h4n{S <͂7 ˦1\ qqmf%ܐ5r0.I@nK}lM+׃8xBFi<.S\o|a}Q$;;|KeͷFL'Zzy:"Zo@c^Xw8@v}x]c9z8Za%$¸ӅCb(;-$Q(~/d0ݑ%;˜zzmܡt(yCњt˛<iq:f@dX !:p6R}@hd (;hW($V^[b,Ÿ'\(ad'rm!:÷qgF93y@3P}zcmiO^pβcB3 7vhEG!iK`$A|qm@1Uc_Q6Ʀ"hOF;/BNyyj層f̎6Ƽ4c= f<_;zl 2[ui\-UdY{́}{^ނͻ癦%)@̍(]d@k/&v> ]k֖XˀlE0y+{kJ14I_c+fJטVv{jTekL IKE^ h ßiua{t"g]1pϵ-ާFӬ)-N]5fcϕ ԵrװʙmΠϩp%R$Ħk2 KRRBO-J%"4߈}):[M)*Ff56n%1ǔj'v<56)z#RW>g|er1oc $@ġܻuR(IV`\ cRbSzǵ}ΩI1E %<34_꾳'Trtk s˄)Y3yFLf)/oȐTY`߷KinלA$ךOCKЩb%KXW7=KG9`*ZhZ@gh:XJDfMx Js}Rxʧb@.U+*#1fw 0/]h^z^ff{kbrlp̠{ǣ}luFڡ):S3LԓqJdhA Hl1&#%: 9( ]T.)  cшNd9[g9sE];b+5?<}ϲL^(ж57@ ́(2pJD0>7ƚ&(%jdyAsRh:5wJKc-xsm*ec`*v{]< !qA˅4K J`t TvXbSh,tjV5y43 R\MiNfmҡPAyq϶ie.MM6 ̀cXsL4 Pƺhj ^@qʬ"W8S'_VA'Zb{JˆkZ9]@(1Ԁl S-[ϠsfUS,|zB%F23(\")O}"6Fjhb[K:ϰ)hN2 ;ivR, Eoɒ&2D{x=RCgˬ7&%o& T1F,HJ)R(? w.&G3F$%6P7'֩ kk%R E/P7djPnD*MGjjԪi *7*4߀:5=#>"sd*QUXWlfޯDKf"&P_Xsǀ.nK$yB_܏Jj~4QԂ^idnvx)\wհj$c'jcrb饂g_NvMmuy""v _. f^3x7{Na5}5 1 ]bZؔ\P*-Lܓbᤋ.1Y Ik [8p>6 JLئSmgjF%OXSm_w3S sV>Uz1_~1˝ fcR1]U L3~'_|ؾ|_=ov}f|ͿYf<Mi%}Q*Uɰz.s _sV|jč`cGXԪ(Y䰄LP| ^S!K9M鉥B\W"SZ&c2uzٝOSb# mzM(K)n)&"A50kR[DBH)틥ɒZS8_r fqSaZ*rL>buC$L^TJ FA"e/PmzBsA}w KӒx<Bp<ȧ4Xu1 S=}}*wƀ3ߕ*8- E2l\3}fj~KS.SbfS 1)es7SR#LW@3gX5{)ԏΨ&Z$ SVh/iuI( 5<| [b)l&Sa ZTVCφQ8DDdqNVs,pХ+U]jșz?ZD:F\;^~iT@2hy m_j6%6KjKB k* jt4_2s< 9ݖR/fZc<\RY=jD]=MzO2_@[Um4PuPFq==lz i"cOTSD+=U{̜p=PͱΘ #gq3IEv9Jc4^;)oPN)rOM **֣u0+>2kߣ}Ճwvh 'T?}wo{wQCv X+@f` q7y">MDy?U'0lw4+ߧ#)珩k߬sKZ_PM͚P>z}X-4r''sπP3-ĝZ>zǛ9UC'͗z18ZaA4|O}Mmw~w%v3!u_zraz-\n%]5D]Sް٦^MNMh]&mƆ%WIM"ι/,z.~N o{no.;&_L=ɞ2U XzZrAj0"|.ȹmK!nL+ c1]8Ow{_}oqv5?[ht7Wv| xH=^k~f@/b[2:f,\]3Ԃ'u|u>>OI5hMyR s`Ā[wVbG~n}}]=,5(D5;qY ToxIJkP+׽{hSd4_4Ǻc .^kΚrυ䶰=@Oj,e-.9;~{X!qİ<ܭzXր,Բ*_4Kq*ZůiB7na#,E|R8.$:Vה$kt)Ys`kyKX c@.*U{?x?,=: MBw~scR(kBk^a44eeq/a|~H%5nrL` sPiv^Y'2SR  mO$0~޽_k?A? CէnB}dS@-־'}Y b1S@T߯Yl],w^]%* TG#hS 7Zʗ%k%}&$M8S_D@-?/|Dwԋ:t5v:lax b qغK+\d xkr*8H^]n7("mi*~Y<_4 ڶ6DYWm}g{誂|,SV_/}km~K=n3to&k9i6zMUj^?3cdݳ]},AgCLnPjܧpGch:jʀdRw+홬i? +>y Kc"2D)dPˁa`1ǽ.՚k[_վͳOOh!NQ ts0*XgЬܦT^Sctk SJ'VD1qnxW@<,6k쮟| A1oι[ Sm-ǽ;1Mo Cv4˝,/~Yկ+C K,5, y^w)-KJ@ڄeTƿ;탯..N` v7W.cX?n @7MX){ h0/ic<07-x'έifS#S) do=hN/K8-ZkLٶ䝙X >boov'|{RzJ|70'^f@ɀ4 ڶb,~'{ֹnV6li;"> > 37罔)OfmS< u FA]_f-Z?<"b0L%ͣ.]iO Ǿ ݳOvL,X2`2K[Vd?4 S*-봏ÐΚ2o,[>UY,ҰEZ#_.92 N1xj-}LDffٙ29͍%v XE-Λ̏/︦WEU7:SU~ ˏ2ReviiJ<1N&xjt`1 %Ń_} ׏/ EE> 5Fk/ yMyRv̽'79ʀc{nɅȄwkyk.Y)qPU']n7XMs.j1,c`2ǩc0۴?tOqviDw SH%P>bY{4C͚\*$j-K-6&|f\|g~f?_<  vWO]>'K0bb@4X,#eF[%> 6;c$O.1;cjh.ѕ: ]f5~OhC13bg^ biJ%R5E\$`N)&9S ]h~ÍR)UJFhڃ_?߹tfwOo>:kfzeX8 cI dO,\ϱX9QQjV̅ ;$0 ujZug~-Vy7ar0:Z0+ A[4ɅȊi5`hKb ȋr/i״?>)I9t;luFz, |\@ӂe%Gx]UGlr, gncI\c `Ƙgiߜ0NԭR{ ~{13Qė>1[Jj͠9Dڱ cERR 5ͣ.]]ܿإmn'a[ma[cax͒2Mܭ7zv4EE rFK=)Y~O*Oi xKYh3ˌ[>X.a}ͳ&k-svFpcrH[9uVx.$I,SZ+s7ILG_.  8${rg|.T/%z@\,w쒙M ڹ2VwbxJs2̱X -tOd-pB 8գ_2~z`DX[non[*/1VC>̳ƻ21*9uvmtMi.xv"~huWK&=.e4s2'wL,%]0 02]*bKhM-gݫD"pvwpIJZe.c|%ץ1&΍ܖ%eɵNi,\K萱݇ n_/?vuO a>$i;x(WW@)fc^S@+0>NB @jVݷR5IUۆR~NZgn521Y+g.P˽?WW:SK7B,P=WfT3T#J,,.;~XD~?l߳Cggo..NCaP\V0=V#1JBPiz9pa~,hp{dc+RV=ۿۚvfҞw;MusGd(۸\(^30TZɵ/14 i⊙sWTqy%\fGlW⏾wWu.|]R8`{)*艅?!!閜`a06l/wy*b K0ۻ, (* (9ܮ~XS{-+eYVBغb:kq\*_/Ze9{/_}ثO$b2yn,UǜbaI d'x 1StԌ᭙b<$HEڳo]=P]&̏I)3U^a 8ke1ܐZdHl_Ь *ܷFL_z$4FWٿ L:KtW>MBqYVwXmF9q"N2xKTE|Iw{ V"hv(5 !/@/FWr^ IDATxq` -̕%0E,{ j{w/@v>R0ŀ#__),"ega5Y,ݏU|fJ7u0qmo;?Ik<;qoTvk쮞mܶQ2UeKXܶ60]׍8{xG*#CS{ba@-P|9$:Fg!ߨ%x ņ(Ms`Yb8\{޹G@d9al>*s(S^5ޛPdزdkޖ9k7I[^4ehZ)Hxڦ׮}6r"ʉ>Lʬr;͎[ ϥBrǘ=?K{|Q~dP=w1#U+ (O/1#Wu٪@'z| Cxl >\iUMx^ יWsCxQp=" QQHChdN3IQJ`Kʒ Ҿ??#o7%"À~6p.P!fLc;iKW|\(h ]Nx<񏧴.If4c?(z{m ?ǷuG x'Lʀ\xbzeVo?]~! LP n?gM^z]-(Y3tFM4젫4Rm4gX=x?p\pf<þtoP*'ⰜK, :&vӚm.% ð/`G{wqMrюL! ӂs+\T32݆8H(}%߅uH@ȅSVq6SN{q:H{ֻG{D8+94T&tNX80k2 .I0 {[+=[;ΐ'3jQ@.V;iE^dַ-E'8"8KD8s*15&c!0 P;[w܈8H '/̜ ޜ?#ASrܨ[B02v I-dW8<~s`@,b{?zRAJfe3{bvO̸U{|yg̤jݟܦiAgdƖf=q۹ ]pOV>9mZϳc B_C8^؜ɝ[*NI3l71+ϵ[F<זX:QBXc1_Wi8o>|3؜`3p?Y[\.PÌIgZ @c˔-0k"O!PxwMw{dV@>Ǡ:Dڰ[E A82W|Wp ‹TNM"%S{L_S=ޞm1tjdȤ̱KzZ!o4KN0t`rJ"PKtW 9K_|eq?`*mnP?yZiL ]ZF V8ˇ:l6c8l<^׸G{c2EC& *Sg+i^DK4krwz%G# 5rx*F]tI;8Z,>a!Ota XI ^7 S(r"W1QVBCdSG_t2Fk#'8Xs&!d24O >1`z(m /__xL0eAFpzҰ0u(냆l"{pS9Ҡ-[6>-qw:1N/C0埄bP[qB eFr@Z)6W ѾZ=,ɤr)aUՓ9e.}3LEྫྷҢ ^rdh:fR"˼,+q)BO߫ scQ"{-Ms( Tpc\g(qn*1Wp^C`gVNv,U$ }!\?R5pe8!Yp)W诇iN)bIpYۍ\:.dͯ<{}&r)3f$"sB3Z>?||uB)E-)2v(r.}m]mww[B-)StINVVrڼyPu-ABK,}C9rdh~.#(er O>5􄠬0a͸=:)ޞΙZ&B.wG`+/T^o.^??jϙñXðm|~'ѴȒ ?ZgO<^W.w!y.)cn_dYlAq*ܓ5fpʌ0m_l  jw%+V@8% s 3(lq,ِ”mD s[B))-LK&^KEV5UfÿB)cN;yxNDIrnFl41Oa[yQ#ULKKo}7_o瘅f5O?oE;k-R>aJ']ƀ) {C5^6&2qC Ћ1BI2ƚ'pq=GxԂfĮ49Qsaq?npWy gnş* $mlIxw?am%)6g=hW|v3\l9xD628xoEBzn:+z{pS!~]_fXϏ>z} c?.)c:Zк=LM!cxk Me"@\doέk-9 } 1~3.}v"lє#}~F!x<-N]$T( a98O< eIjv[#pѢ:+{ lKO)QH BS:$ZלEqGw_tAh5M=f0|>Vq 4ܐ 3a+>ՌZRR$0zX 3,@xq{|*qwJظ(~1xD_3xT?AGI3E|Ccq? Qh2g]ßbKBwGSh@Н\Pno4SJW+BwWӆQFO>UV73۵` Bu#>oOYfkJw`]h~{|sqkv刊/%,br=sC30>?CQ;J@.`1KҊH?#8 s J|0NvҸK򨨳/v.3!<ѾgJdy;ωg &e[d,i%?SM).sR૵TV4=h_s̗R;Yß=w,Sac{Nmt(3}n8q͋vj*>j2+LI&9'\Q)vY)V3e?4O+" ";PҖ:8>FYO}P=TjlyIPAyN4Ś'`Y !\] BFzc.nteq?#+q/.6hP3cK)4:||]y+xGC}l5C5~LM*論\, "5w988$YzZ)ej;W*R8x۔HλG8+G7یnsI> R'm^4S)92v9 ,VϿP5'͈]EY~} X45Q)2cQ\p$UԸ|e{6!h(|?ߦԒ+3 Tmc@Zc G/ {,\klUjQyt]vϺk+d@:ϻ' Olj\a/s 0Fo4) LJPc'j瞝.^3 %\phY Q.K#X)CN!u2)C0E7W<|eM1ce,K46y3RoJb';:hqȌ\F-NN2Ge^!D_}9K柯.~؜~ Kq!jcq'ZREcLhU 1r|??bUC{Ѥe5a45+ˋVHk S"x# Wjok\ ,*fhЋ+Qh>,)"3AD.XfuK"l^'h⒥:[D_p,Y-?NlpU8\"}#ȝ4A/q ۳s[#5вL9S4"`&A3ѓeVR]2$U-4 PCf,w[ [K\ 83H1sH?9~C~K_DVq c ],նcc%50C[-?e_ _Rs8LmD,s T10 eJ[St[^zwi~nf X&Y ˥7frE"k28okvWeMAeW6j%V, SJyE4efm+58[0<Mp'jV4gʐV Br_xJxɅᤄ vVL &c:!]RePVj,}n;W_oƔ#$chǔEh]x775> E>]!u# ZwQXT ě 8&o`$f#܂Ca% [s$R Mn|=M>RK*l!Y#H$BXjy۳uA.WM 1ȚYyЬo^D'd!|Քo[Mu?BWoADn[)ǡFخ e]b7vcs70lQ30^tQ/X {l*D-7QY ߔf߿ 6U1 cg ^Kxf 1kK12M//Ň>7G>E //S4Q#&{na7?fbbeZu)xTPi.S%Y:øxkdNy]i-/W=(va`+o׍Q`Xu(8^`;)1C=xbuDd#\Yc)V>rR y%3>>Z_e&\:*\0!`mdإ)@e&_b65'sb129ql-lԀ~}1t~Vl+M%csK"xLԢ J L9jvVǰ^ڿVuU8mNci6< la!MBv=[ ͬ,dTba-?ڵi 7l/6U})ɬp \?)az'~J8*v|97Wi*A c&j.\De i)|H)TզBTY:2M 3lp\CrFUL5 ~Z]Kar&ٰ7۶.XXf1 f3㙀2M+!8a8~5KUNh IDATb90Mށ3Vu 6Pxfx(EJrzy23Qס.UhS?vs=Oa }QwUD2,$= m;ӿJGcax 72׍N-p#2L EPCs,L $8,YfmiI99|ѴHρDg-ükԀzne͂77zmFg?caOq r}j18DxkvǥBqKhJ5˩uAqRx~| ^aqby e>;ƔLS:|#f}h|.3CqVu `GNw\gwl?s4V /k@]z2x-}ղJ>ws_r TJ4Y,"s?,#B-]N5EL>GĻ7ExH2pwzoྀ=Wb5J2@884HsȨl\)XU]wfZ:~L)?DvIEj[h\1$g |O Nk,T)f95;KT&LCCy4 `IqKמ#w, ^m c;X$ӌR)H$wY .]3:<E;^o%ACJ26׏i^7y;oZΕO%%J%n|"Z-q$% ɉ^9^ |j3Fn6KvaP,vXE Cr@Y9w J.M&.q[~4*ABPo}ӇR.#K w=u/I`"mZn&N./YL"kpN#e/=vnp@bbV=$9e\[G!yQ*XjfJ%ܨ&`ߩbmD)AȈDs݇Hyyy2 iڕSa\.Ŵ`r#7[|๞AN9}:s䪼B";oơy'03^vǾbe5S~"$K.MTPyy[unUp*c%o?t_qWI|jeF^3}_=Wɹ狧E2p4&zN.he@dؚu%G`G@$wԺ?ܗTЄas.Xf1xE켮M,t!y2UxbLB "7G2m9A(kē rcXj) M-MKteewQ pqMi|5])u:.M4NyLs-HAY>X^@ L*Z( qUUUup ^Ϊ_amhnbe&]f!Ss87`\XuY"[0cVP3^4T Ny hX/aI7" sU(d/gra#«n,9P|_O a ;D.lFzM~]!X2Bvɨ_r {.QֱJ9 d%g2|ϫ/8xC!P*/8G Sc]3.s/sVNS #xry{IN. 3^f(˔gv 9ĄoaK@Tx"SxN~'أSJ*ieW@o}fۭFopN'TAL0!\iCɭVI(nw2Kv;|WT ekW#& V]kL7|ux1ƾݛWC(p[,p A uJs8Jy\hWW%ro< :R#_c0"gTs\ q gUqu,PW( ,2Jy7NBdAE:zRh0sh~X&fxc7hEBn債qFcDdp%D qNӔyRKu)jB"B-cefĖ=K Oes-8BD~qhGBB݆OgGNF2+AJTtcb֠JϹ fY2)i4SW,)/K *-+`^PUp[js\X 5`LZP̸'?-`͙ kNnY+*m\*FϾK(!^~"`og/aylqgKn5"~4eȜ_B3\aOt p+rRiE3Y^2ݒ{,o/]S,,U8+p6 fpmrӌ٥$33J?AX13]4+r̕ƀ{(KL%׻PR̯މ[x^gZ[~%5ZA4,NS Vp%SnL d4Z l-ݠ̌7?Q+6 % R[+H#6-̄wP oVbmBQǓBʊ0G^XǞi<-1MlK AOhc1,Ԯ3(F~Zx,8//Ăٱ0un s-v$GFͮ9JtbF2ql܍R} s/h8] ڻ[aq"ϸLr$fDw E whRJ7 7uᎡ6RF)MqIQ! 9n D 9ps"ͦeD u OHh5Je5sHZ`2V^E,UFν>0eξBhgmp1MMI9t" G]H.C1V,E&Q{ sy' Sj6KFxݮP[F]jѝ .?&6-r!k✰֯j" mW5vc#8"9k^vfᕂ;. qD'%yn49eEJ!RJ ZLzHPi3Z {f<[3XUͻ5H3ι7Y tC.u Cep3Pe)TZuU;w& . uQZ-# F;t1}ș'{sUsirֈMJ|}/nDOջhA1j2 A]&O,p*R^Ӄ&&>phjz |wyJ.gA|Hcf<%IƿܠJsZf<(0> ,F47VhL`D]w%J;B¦T]d lj)g`VRt  ^7&J5E;R~Wؔt 1QN8z>" 9Ee*3Qbz]ҏWx0y0Q:vD;V[{5?e?i"[*ȥN0BSGQa4NdF')@(pj" L3'">0ɜP (nYy8d1n(LBuVj~-ۛy .kfġygZ c+p(by~8uyE!F_ː1v4B1P-S9aΏ:˹g'7S[PS\+]_uJzC;amWA%93Jf:3:N)J CcEZh%<+~`@*$v #НO`P|;wxsWYeZP57釉P;ק+ s6Y`%~1"</:mh),haqy CCݦz};]#jsauD9g30X˵HWZ窱ҡm3[0*n΍7G tdq 9\jI Ջ4lqq 0b״5-6SePmĒiZ9*exܕ$TpK'LjBt8N˙]T]Yncnihsd2>%O\?θ[7W^1 tq/V5I(bOn2E 2l%U -F22 *$;aw ;ķH%a;kkC3%ph(X xÆ6)O^FZ;P>u<԰Ѳˁ|qΔ'/6Syڇ} +nOpZSF;5a"7+(If ̙#V1|0^Rtw͗Ϡ ; c IDAT q\,ۙ. mEj!*,8so0*s#/6mZ5-5x bE\~4L(!pPaOzt(rXTSTt- Ӕ 4SqH(|1֖)3x!ؤTQ %zHi>gU,U40G@/ض@FXcWSZ#[n*.Ė1UsCј9q)ɱ}*,r-qH2Gh b!|yHC1K>f^ ZD.Nؽi;#/ɆC+F4SVhPXjP2.7JZhaVT{]v;y>6Uz7ZsǨ9EeF|)1h\"⤊1)sKٽ+/h2=ipBiZ*Rk4s>'nJR%jrUui 4> @ͷ!O ph_R"vSVf n,4gKL{scsvl>E1/a婱FVU:"T\hόc 4fL `/Uǧ>iZM ltfǠ&fr[Ky9Ltţ-s4#!(K. :U:Yqsߪ ȁ4tsw"1`a2筄'R 'Xfqc,hAtNRsLb>HiyN#gh}q9-NF'5!R#6?u.tL{ң.-@#VɶdQr[p f3e>6KA4O=v鞩:LD 91<„9BF}3B8iTДX6K&ԦVZEî@Ա5 82s}c$ڸB!N6vT 96jTͭ'AgPR˘N͡Ta NeSrSr7HRt03֤M)wϫVAf/iV(n[1ȭj61d5k.GV:R<@-Pnr%4-1'eɡhQet6~n莐uɥ|B!i.N[*ДZ) YZcSeFx1Y#.3Xl VsGj.મeRd%'>aOҐ'9#o8w$>hr9MpSv/CXsA+it)Nj̳w"F!8|^4f+ћ㲬JRh[i3VggjCI(hz( l>Y ,tf- պ-$FOUV60}x$۝g (Y1U9%U S 0^OF}o9K{lRTu읩%Hl:54N8h}Sa+^9y#R9j*c (j ~(S%NM 1mXfج7'>hGl9:5Q}&XH3f!Sr\/ghߧ9;F~]sN59xUw~ 9Wss +lƖ,r͹(vDWn_OO̹[S6'+ɫvެoeBG1胄\(s{;:)"qXs4 Z\f>rp-KED.}q*r9mыmO9jjMs/mxV6ʽuyJIf $sאb-e𚹹繱@z({N *K H ./RvW1`>eYJeFזڝ~TfüqqEJYIX:sp4,ONP `D7h>C#R)l][?îFSzKJJ0R{x7EkCa^HMCNuBsjFIq8s¸CMcfr#g!%Ҏz`i6h Y%rEJ La2Sq$% K]'ڰǠ oc*=Sb(ib#!Q`{Yh2**A(a<9%iV29zEj@tD!:yA[f {Zw`iLGe6qJ'/8˂qp;ƼYc1xxSSB}ďjVS`QbcsдAAU;,Co\2Zt8DT!piWuwklNRspoU3GFfߔ@km54/qF 7pq')ϪzS6KĉRlOIJ , -#J!e̥t=O\T#DfLt]1Sؑ:Q AQ`P` `55D'{\,7C+/_9o7nnoȳ(%J(3m2u7e3w'1Se0kF5r*L.q>!DOg‱  rVyۓ6[tX/ȝ-E@` Zir}FM&́QQQ8Y<5:b*e*_:#)aij f}*%`]ḭ57A/jT{-S͢y-wNd; "\w!cfk'0i 9!kj}[;Fip~r[1d/ A0WyHSoڬT(v̀4 PG"1U8Out\$᯽^Bo;Z촄)^q9@&)Zױ0ߪO83/o,`/+W[%@giQ3GAȰm f)wu+Gp%`j_q]:.f2]S)ؐffsQjAu.@؍=|-S駨Sz&%oUzgR$oGU~3jsDV[ Pp''{3;Sp,;ܹAjy^rg4aF0(.A9iYGN~s$q5\ |aLM x8@`;.'qz6-S㚪Jyo68E`/<TuI;ԙEA2II>FQ5-pel"`T Z>eOOۥ)ǞK71( R Bj7spzL5bLD{WՂ D-FM'J+J?w!AohP""d]RjgV Y$kko0r0_c'BmG}Un?L30d?81hkDZSXb~X v.UjnD4θ=bOQ*UOukصJLW`t+$>̒I-ΈCe؃S4-Ww2>,:ѯy>c|ODmklP% 5- "P5͖6. Ο|>G]c[SU|ئ10327.D5%GE3~י&Y<9vji `J3UW*h%jM9A(.~P,\(ܿ6^5Ƶ[D\I|ZJ bEJxC,R eqL9!@ŀ$nBx&Dc<`zhC|t-]c% wlDy|i"뀳YZs3EѻOj9uHx+N8J}fXǚƱѮU64+pߏ.@/?$rg7*͐f$r'["pvyF2 \(#=-n4P[u`Hety.|^-5_U4R+0ps>BtRd%@WxЍ \a #6 :9kSʉroO:ƩK4͐ Jr LaG(}4-~"c39$ 砛ČTRe:M*Qbb$-q!qP0>z!xf<0Kg &kNe+Ml 0d8)rY4). [K)HvtSrs_M}JV3ie~ovf&zb{+9źvb}wG}d>2 'ֲCΔrHPX͖z8~DJ7kw5G95o"wF?l i~l꧆yh!٦*)g,ocxYv%k ii?b 4h =cQ~Ov6vj~ʁ nnԙ,? Y3ͅ-|9`6$m܅\%lЍ8r"k2'(9'9^Gg]'[˸ 9V7n>c'`|ȵƝdհvP.[Ckv]P{Q$ġm\}|Řᙎ7C |&DM`8l1R3L},4%JH] InAB'ǩtKx(KmzRar)k3tI8<,9"fmR*Mԅ1p1<66,]2Dފ;6rmS'&e0"SSS}b ۘcNnp4Z6Q><~<?OWvTrׂt$;:J6hf0Rw-KJġ:MJ0Kk? c(x'Ϧ^6!w1jrlT2 mZaN*l%;9w^P.h2N 妼~];24OFI"5z8*f|&B9)Қ?r7cM ͞p2OnJYYA/t4Ke-& {2AC"`^iyX ڮuacpNǛ4[ݴ)1Ȫ딯aƏ)`;di?SGi`C.caFS8yƬ1NJvLMW:UJxIl"m gS+3 01\&;6Ѐ>!^u$kF] eJd^qNҎ hLBzZe?9]]t]}ޞ> O! WrUӋk Xu1L D~O$YPjXqfx(AJZO z6Z"TǪ̱ՋvMI\ c%!oY`Z" 0ӥ[G`Qi0+SlZ5 @@`ZuOZe>'H]+`G}"<^v/ɽB=ht9y6aFWt 8~<`uS)bFŌi@*SyrQ S ~Eؤa\6\w= 髪CE66P?cPZ4!Bn]WVYUbL\eɦϔyQ:R$06JakY=pu1]\:VrsbGfVT_*+= Bı20%&l^+ U/b1ɪwE5ޟc[4oIxRLGo͌ >u1Ƚ˾e7WJ(]E!zHY3R0kN:h"#tODɞ8]By-v;~ܿPy@]| Bi\NI~g\cZRҠ~fM!ba^_qи a*phqo eL\aJX42s!xIZ2}B%g^Hk]nT1%f2qfI}S;+;H0v *wa~]>8!tybA/ IDATnxs=8A6H1x ڌ3q0-Om=>e6q2P2xd97!9Lf)f{׏0f18j,9Mx.ϴ7c Fڏ "v7ZOEg$jˇl|**I)Ou{̐CRJzmYʻ7b#$[Z-ɢ8̐3/C:^辗s@DGw'3OP[}3;La\V(t|wE pE|@$"#@ vfc.@uHа)==ō!{V+z4J\dS?H48c ߷\3H2s[|35Ҽ؍J.zcdR ;OdvI\jH0IՆ/o}@\,!iSM*pL2i[ FiX56w2tW8ooWp4JdwCfX=0ئD% 4SQ:} I/3T*&5%E'Rkݩw1!27a ^mu sʑ-HD iAG>Ŗi7&6' j_gg A!9/|抴=ߜ2}ӆD6ti[e(A9)h]V l26z&|n鵬!)F<}}~rwesJ@6蚓2ß# mWO<}sLV#]brƃ yXjc. svFW2X*T3)&&qe Ι^'ҮE\:bs+W%i{%l&6SZf3>PpcƲW!"nz%C>:CˉRu%{vjSd'ҘNHS{w/s7DH{u/sK{tKy +9Q(a 'R.U)(TT 9 SјF锬mn$78raq\d##!ЍEy zN;Gd'!)<+c]H#@c{VΔ.XU@n=qT 9qw uMwCbb&2!Nfp~CVA܍ޑw6&ȲC ]I2Sœ{̌+h+K5+ ْ5!L_i:l~Vk'~wGz5l3(ssSd.'D8|Ssڹ'c|+O9&ET\M.Ox[ s974W7:3#` 8ݑ^9 ;ͻqe-T"V+Ⰳ)Nzɇ\v̹vn1[jPs}? >H FgܣW|*X/Ҭ?n׀UR`2lq4`27=(H$zSXXǒAXߧ$62"%L %~֤ph2lr6އUs͡*#+"hfrr p<ǯõD]xuM+UmPATŵ8|=;+&C}Z(p>5ZZ#9 Ff@)ϊ0}i(fF3]QBPʕ\?Qۼl lC+)P8K\S@AsWtHfA7" 9eةey]O 0n%k|GR{Hai {|x(.k,MEû3 sqpw~5%n՟B|3}Y˜ќD5ht>S]*M_y*(kgҪ4ϴªtIya٫u ={=Fd pe7sB4S=⩞М.7)<Ŵ3Qzq-GYm1W~Qe 6|Ň |͹)pƲ`:6&vr84eis7Ak\Ԍ)+cYqPu$P0$? {?ydZcUISXw='n2dOxm)s 2 KFLLkR|e.Fx9R6׮h70/FWOD;EZ, $Ll˔|o@Ahi1 בfW ϡ 嘿eX>CsLJ%~_[[ȴ6v+u40tPpw|7ɔdN4K Uᅩ[2٭'0QB'@pβ0-jW;UĎD"GI씖YDa奤O,+ޛ0陳K`:tEZg$#iWWHmJ5۴ eHs.\Aa7 x?֣c`ͅ‰8: F=k]H'pK&|@CWkV:7T NC۴Y"O1ޗ.}G :\웎ilߖlm ];U{h/e- Kt`H/'+@ʈRi;UC7&!v(d13}{PN)1WΘؼ2E(;y%Z[3"f2-`652ZMڤxm0 m?&srNm.|(E1|k8Ś+r8.i\:_om? ד ^NXĵh< ?FZ†qLej"I8+ߪǿw8Po.fpkwY7W8ؒvKYp6*"@M`jQr`aH;hguxQ2UduP5ŀ冴JO yEI"郶 ߵucȝ'zXOfXC9\u"U|(W*/Et>G#l ߐ _ըj=vg1c[h5נ ҆e`4;=t 'SU3>j&c%j=5?9M'}.玎wP{`QjJYPr1RȾefH5]"2f1zPN zf9Ieam_s+t6@CR6S Ԗ!&r !\ `)tl٭Z&4Zpn<Վ_ZȖu_l"p0ᄐsy581N{L 4KhOH3n]MaFXZK_APح@ᤘ> }m|+pEҞ2 =^z2 NбQFWrƵ8Eh$d$"+pNY7G<ò)9#,W4/pq[mv*6ٴ#dĹ})+aFj([-܋i'm;"!92!y.;2) kz\I^tԝ굈+pg AZ]mTa:cC6w]DVg1T|,]k\|9cYSgl.teqÝj)L~NÖy\F(YiԚq%$ayMO'ߟb LeS 3_-/j>>_DnjhǑx86\p0R;=chƐDP=^@Rڦ73߰ZDŽ@Vם7lT2$9To1-.r]< z5Zy0h"592^kA : aFP:ZHYInr?O9]$?X(9KdT?HO.k]No !#jBŀ0RyA%Ǔ$̹Mt|ōz?#~3`dfQXnO ˔vVhJ>.vtO&ol"# h98  QXcB%h*Ë<|eSk:x+K`ze*FCVWܚ/4;"c2{N{xc?:~\Us@ydjj3s]ҩgT4dGXfiXZEukM o$?/Hoan俙q;ʆ3u;֩C}5ĵg܈o](x7p72S;>:Qš 7s܂j]B[֣SMU7F,۲Peǘ^=i`͔+-ʖet8~`0MLVqHs#tщaLTJ`!}<;]t n4B98f~x[(_Dp wIxrQKjX2~52*q4#9QˬbpĿQv xs)a)? @3Gu'0֛=%B?XM3jf2v}Y Ů2t_f +bW,7Ta kNp +w曂ixхBc//H{u#N:gdl煋*"ir&O)7)FMq6#Yscs*~;p_dz@˚ s݋(zM{0c=Aߔ1'`dM"S5,2Yؾ KR]a΀Nvr_fkiWSb'kB]ކ q9N>9K|Q<M+k/8+xZ%F~[CdCLSoh< e9t>]w|ŸDe^EnlG7"zd<׿čI"v/*abZQY\|U 5vs4Ӕ"f& m/ڰΖ;iV+fD*g;|U)pFh@5 #Ǣ6AsFYh;C=KE|yߙdT1j4@:v?tΰwOE3WZT3 0 .wVpL8zR<:bZ2p7 K(5݊@F薶.TjMCGYB΀d8L;OzDFՆ5/2e.A[Ch_v@zs#-S0ݔE9_,Lv]"sJ4DpƵs6_$rXԟ F=>;|?)RGoe$bay`S_N .i3`bWopn?<,;Lh tGH YN ]OX1a.Grx2]cj1wY^QiVW Fpf s)㥺\h^:3 IDATBw:@UOυН̷+ӌ9ܖrNo~y?6'L 3ޝ?pğ{|BD}d DK*\O-9(DvDgAKv5M:B|K9#E<=% 'UrmCzyq֚NJ[a !yC+fF3UnJ'"9ڜq_J%JksYg80s?@Tgߵ^j0X;wNvwdY籡y̏Az(}?oBN,)%J%E&h7*vOOt=6KP#Pes]=07'H0d/ij9\x%]W6qGZcę5uqPc"i\`>l3ʤFJ <#=&a/bHw(T$g=7_t'PUzc0 KNs~>x3JΞ[ހ Tm[-!1eZ=#iʆ|meivi]D{טɴм%ћL\v!Ià44kq%dO'+ܩB,e-~װY `+yah?7z2J4$:6~ڻ.ҸܣvnO=>}3C4pM~؟37vƦi~>I8dL58/'p@q+GTTsGo?@qT[P>M̸GZ:5̓oj(\`VO>p[7G2\ο7|AIA&,玠tQR [WZC)jd!^#3fLᎺ!*;tC<&!4,+{nk_wW.M`5Ofi){zl-Ij͌c>0dGofI1b<P =wrù!S#Pt;<su Les!h '; V8kζle= mG0W؛-'L'VZG{-7 dM\}khH ,KŴǖ#/Ŵ/2X0  i$ю(krt qA;9)HߣuIBf-3댞Ɇj {kAWtVa#1Rv[xi6iJXҎy(? m(ַ,Vc07Ƅsh\}dM SZF -g9[UGgg1R{G7g-| 8!FyBuv.P.ᬉ&aP.)Hw(mSS~>$w8Lw1ZǴ=ŷy;kaBVNB$ic S:&fk˱2^, 8 %gQiꇏ?5׀~o5lH1 %{CQ1uphf Hn|AT!2cl}Fc (#:nɝE [qSq{}H#jnq'։furIg) kWZ[,])-Jgrr,Z]={8ݵ>h+ne ?LgqOlY=n0+7J29) P_XFTH!dWPqV SafVlxmy:L K)HsԟzpsuKm1'/h\8r\_dy.\s~t% mB՛uIAǴꔯ;h2V>{e>+eޚDNK?W$ *$dC\7u?! \R:sa{Mָ%[6f5&5%D\CXbv܎TfFцeg.6D_3rg0(0z $C)_ZÎ!B".H0m"Z<& ,83=RUG04DiV`5n egm]bL{me2abײƶA` \^Ctm}ⲎfSSi xw&AӒ$N)FnMnFeL323Ssk8mDdb.))5H|5u8tzhwADDdStOg\`-19&K25@y|8E>­>~IĴ|D5͍ b)p0mbv.yP lъTFT<+9O1)e 1ƕT>ٮV)+$b҄O.J[NV"Kܫ>a{m}c-;?',k8)cKFc[!OSHk1v6#%# %dyo Sd(E2&*<@,b Zr#9ɾ %JFmo#ȵ✓vY_AʴD,M(Հj&cX6<&mmeी)ϡ#C]-M3I> zS˙ 9~imC$4ObVU%d1X21rLWEu l) xQk2T]V "n%qҮEאfu iϦ*!kZk7`pmpE/Jqfȏt851ؑh=(: P]5tJ>z NQn^y+Acn)١jqi程ɾ7{ZSe9~_!n tm*08VҴ'=1#f{ .w}yiHjO˚Q$tcmXV\ K`dqrx_l2NUs$0]! %|0p틱Sŵ+ZC_"xֲΜFZ]jq? wTv8) 1(q9ooPf {Cf pq9O]% _NfJl7oZ`wm Gu?>rn"DBb:f,3fM?wSt8hx^;qvJ^#}YT*-;*kp͗DOK7h"jH6}HT78`lFv>`'R0Tn[J[-jћcNFA`S/S :I$bb8JtZ{v;=0 nvn}Ў޿*RL2Y ~::lc^|QI\l~0! Lo)ɣ7k6^PhϖsvMiQ ]9΁fRJ\-iLr!CyzMo3Lf.q'I$Ӹzp87N\f}尺rVΥJoOcc~g'[Se%WRgiltEm|Bb(>6HSL̖))s(_WYJ.Ξ z^E4EgX(gϹn.t/]|a~v dAWUpMinN@@OgPe cQO0ʡ go!mRL5E὎Bx"j2eMX-eɏV'J1k5T) +>\Aa>'bs YR]%P61sw5y/"Mx7q\ia"lh*|Ҵ{iWT3!:="?UOg1p,ӝ;5*mn٪Np (x spΌ?1ZeCybki0X26V) B.;uKH1g0<6И~VJǽ9袩MR:+|kjxnҬD\{  0Q"$?WO H0헶=,81\&JRL>g{0lh520"d!$F@1۾񩗒`q.9CLٚף h0(\8׸t Ahtz"J8e: [3@YiFT59HC/Us~ _BlhCT̍;Ŵbvr :ɽ#/qΤI{^- ônT WMc~݀y3S%T\fX  ۖ5F2AΚDDvh1+>Xzc8n_j'핊[ @y!knnB$Hˀ֚Lc%.U"g?.4 8?%3xhC{Ht@0jBъk+[7Av\1`p/'UDHHo1uS'x~d5gmue~LCb75H\ b}c8T m W]C}P9Oj.89nU=<Sw]ўSC&ߝ$qbe" {b7t4 -[J f;:bi<K=]@9jBqKiaŽF BEat7^SXs 1K@.`aaNv}.rp7,I=t8 5"4JG#MN>2 t6Сx?-#ЖBgZ9J9DTL) |2oUv]*i C}K 6pO1ny@3%Ǧ>4؝R\IuE'ŚN 5 b؎ 4R7@#&2b PuX@ CCn1*"'PGN<+^qm#ɀ{ZiCn$HeC#tF(Mv3:P:0ZBpwD*$5Aqc&y-K8eҘ` > =-@aV?R&ŗ*u)!JDdnDaa@Vt8Cǟ4a`Z~!r@B@zfu 4'I$@d^%yoKSsP1-AR0C:Lj.BnTYLhC$Tjs9'TV.Ttau]$Q*BT$ro łLy>CK@u#/9#5JV[GJ@`Nto HyrK?pCkeQuc7m\ hMI[IA Hx#1uK1IopىnH=]>9K3SN15wKMXc{H:خ؍G3lB%k@ކ@ڜ"7c70 ?H`)F:9 '"MI I [kC\ csfV{ o6&kzrRpSNQ8S%%LzLj@FSLGCe<}Aˆ[Z(SOXzVtgL[d"#QS;SuL>WHoҼDXKً.Vd{yz̆N4-=l<ɰ\[i=)W`c H(苩 =Vq I"oGmMb۶|0KzmofGbkI`wk-)EB`/dmtt &lzC!7v/kkeDX;K^X1h(8Ƕj-#qb-ZA#GfCPƩM2D); 1\?ONu2@w mH*j4,EŅP7;V5=&a {/bMlʔK (Yi^+$FTyK S7YxƐ^GK!ԿCrgOrgLy%Rހent[Ŋɯ IDAT0F))e3Ul=Ef!iG+K2qY̅@?\:/DI5Z`)y"0>VT:P;^ x :=Σ,t=~^`aΞ !|ig=[&s($L4F lyu7D82L3UɥE{HmpΠu{CB(^iEDSlgaABk̀OJNՄQ n*cXbV>}ٕ9@C8w<&/= 8…hùh1^2^@ 1Lir8c#b:F-MBl=ҵVC^1F(w d,:=Bey1!3 ǽׇP&tE!4݌?ae lGxB/̠^51 ~0[-=ơc\,[4˥@`L|`:<=^/}9mHx8Oގ>b7y2;Ea ;90ayN]it rBJܵj4K;ȭ!Z2x\Zy .T6as zLgB>r2;5G!r 2 Opӱ9pVbK-tIkd+ pT7t c φ"#G ^aj^ G>/YF8t:96o1MB .zΡB[G>6Gz(S<3v*c8[z`:n"[L ; ]qGOȵtخgkH!Tq%pxw>+/_9hnj&4&C|tpфƱΑ`D FaB'#ISbcJpt4xab pkn,!s'/H78- ۾H/q.5s}O7-E{1<77-EraNg%Khi %k#Vב{KFu9[xf&@۰3sd3hʎNh]l# zpbɃtLB{C@:[= 07v%^cpu:Gs"(Vk >~|5ځ}>69 .+Z焑dL3Gw8Iea|[z/0m&8p;R6~<BWstpC Xr\ mkXvI2͸pv1i7 F.?˲0DsI;۴|*9#&:z|E$Ϙi1v$:@wK*xAp֚nikO@aj+"0ޛD9rߜ9б2Ap0Q' |C"nK%w{vapyXi L[,-m1GS&Q(L~цCJl!]ׯq.= =}nKeM'h? ;dsJok$k5ܜvUh֘tx,kߘ}F*܉eX,L) <Ҙxl*b`a 9 Fm>´6[LLm(t~A3! ai{( q5:&OgK=0g$)!0X. =}?{:~}bL$h.g[wzZoҭ1i$9㋇vpbg `5.e9S ,gǮ1`Ph?LNC솀vOHcKW ; #'P.s}A li\F7߅c2֒, h34vlc- -Hr;%{CۅpM0dA]96Mb:"dC S : ,1lŹ9jvs'v%3"5r(  l-vYrpeG7i.l'e=d^&v4.sxOwP[bqS8Ou<#|c u=; ӱ$a|cE!e,`;:S_c,;A0apQ ΄+L2B C5b(zN6Rh|[LG;t4Ƅ;ڏvdG{Y<~>_Jdݜ7znPa;L1g VT@&ej{lpHL:\ڔrwgXlҥ@fK#vkC [~F ˯h{ڨ0mtĦo1uybŜ~ƴCKge:Scm.Ǵ6ցr [᎚6307Xf)B<ˎBP Caj vd1X{cgnb\걬\@sYcvfh ;KFk\HV.U{l,Aa9b!zXʞ4ʠM*G#CuvtT7AFC7#p1>* Pа5ϖcmbo # ?!nk^-5zdφ]W=H W̎l=q9䅠1>y1ΉUv-K`طeE\沼̱Ҭ"x Ĺ]}0ŀPo{[7ކgXoMH"`WvvdM6v-@<\]i.WXDgxnEXXW& əYM;ţqX=eXw\)ki?ip$WV2+䩑<}reyͿ[cgj[~g3<08q84S8B+2zO 78;b7́0 ƹ&70  k0]ra)Ӳ3 0Dn?NC H\!醾` ґ% [4XqeYˑSDB8r+A ul B1,0grƟS iaaɶ}g,E,rR\zD`Apk8e8<~0;{\ڧXc9˲, h.K9 v 8\Tl_o.sW[eY@sY^:zgz.+)^q [sX&{eY@sY(H57w,iuŀqq/_eYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYnh_ d_A:;2Zۺ,˲,A1T<צnXaY\nI[~CϥgKum-˲|F؟=@O3&ȀYwlY4w m(,XWi=KasCq Z W鲼C[;KP4\ %!ԂDha82s[e ϗ-^!o-8?9IъyL4* ۗ~5e 5k/0M$bN$W+?7 p.,, h+zOuD\ c]XbB\_}o5 XsM5apm_ik\34+8')}AjNH,8kJF"1IV'1, h.K(2 !߻ʇH sC1pՀw.ITqnB˲<; ) qٕS/Œ K,ua h. WFJI9e!ޒb9[#aZ^4c_2`V[ ݹ0PײH=%IޛbjSZ]]@s9 W fdKUj?1:r+Wnߓ?E> 4$|_̱NQ 8 %lxYSSX|V e쵒 K}fN d/CX4_0]AWe.ck5RA3seR0MlЕج<` .FeNg,1\0v<`=puat%WLK[؊H5]rͷxֆ&=ؗC}$; jBv?5DKKMҨeY@ze4NV~T ҂ϰhW*u:5KxcI%`Ka:*s.ZfVӡ4h?vJFf|.MHDs$U{\Szr$&I0ʻ>灭6S k4D`_!y#s}YJp\"L.%6r7]0 IDATp2l[ʉRHMeΐ%OxRV~szSI"yr5ۜ=zk-98$f]$ ^5?7g|ay n JrI5%\. `.du\|(C]x3怸6QUSVEKmނu,))Ohi%9Z-0wmK9繹"3"ʽͥ9B%]*n {aTo{Hr3Lkj#sN@>>אs4!xm&VRSڶowְZ7qi"RR\ukqM^?ڇ4߃oW߭VUTP z 4!( M/"[| pc(~?*g?ުvP{5#7Ԝv_%`@)ZKMH.!+Iod.o Xz,9ẂBۚ ]$D1YC;{okYr] r̬̚@E)%H6ЖdF`Mjnٖ[a0` 0lK0 ?$A%%5EdP$kx=gqeUjKm7tahkFt %Pjbn{ s%Sl[bT\,gg.\,&1?VN:9f׾LuF53e4)Qy x1/o®^wv}ȶr;eiccyrf.sau?]c4߃mOMcsۗr 9<9#4$bq}tkEC>>9Vݝrɻ-@@ـfƺ&Z))>?/wxuժPZKnf!uZ s4h4NGM+eĻb Jj%3 6F|ffk&;{7GߨV'Vͧ+w @T)A5/c}'Uk@`1Ӊ3,#"}iGn|߃:fNi6Dz<|?!<'Dfz'&C8[=]-vp~@H cɔG OOlW+Mr5fqS{@cB昆gyESsVy6ǀDqΖSMW'SYvX,ݻ q,@{`J "1'TLM,o;ǟ[ZdX3mrM:090So9D@r Ɨ:A :J: 绘LL.\[.=]N?AD?v!VQ Xi|^}xu-WTN_5 .}::@7R_McK*cKм3 c=.sTp9mCɁfSN>pvq4E |meQWǍfyz O|1 [!ŞXR1 o4'}FWK~q>s:&i^^|o|ڞcg T$qxdJCbcקL&v ,#,\Fe,֘3VصsKg8N+%1鷩 -:[lRsSUD1r cc7F㤿!dLVuVyc"݅0[W1>S(=g ,z;okR׬!8J@iJ-f>JiA6HOƓ)7?0՗ɽ ݈X٤u/r  SNymK4s*bX6LֵN~(uzVnu 14t>@E{\ccHSz\d]%1L-**~ӭ̭6 sTuJmBrOhf^.@J1 1r?ۆL @^oͮvg~Y=5C,oItaEсLi@/݂a{Kr4$qTLt>&i^uzRnV뺔cJ4?M`sz ps4XC åQSK7/.L> pF:.{; %Y1(˲3XHng1Tω'L?Oc~ϭN"& g> SRR 5SK>Sa)3R{ROsc|Ng#MI <i冽c`h{8탠Է(W87۾ |?4EI0 8[>>;nOiR]%ʲRb=#Řc.P^>J}D 3YMQgh5m|FS7mL[4c 풮;myôjmp6-tщY\}7Ef^77h(f,}dLqj)qȺZ}'dnHݾ!pJIYYFt 3O\~:};Q ^Iml}nM45c٠~S^ i+-u6/^b~f`VK`}&IN!n; S)gnΤx0JjZg{@c|VN*f+3=x盼ivO՜k9ҏ-[ `2Bm0!KPNbΎ^NhrŅ+?T"2/yZ﵅]::j&d \d2Qg 5o?w2暇c1cI`Z;`Z1O",Jg{ѯڣ;_`MҕB4LSչ yoι" 4iER e 0]|پ8[\tEM(,V'GXݻjpu"cR|M4[ C05%CvUϑ] %l[ؘقf){D%/rM̝2I.SME6[4O"HW%`͙z뤤X(N4;c:=sT댞>wކ;LZK_lCf)tBt_BHcf1r;sg3 %6 8g;0oTNO*{ro<=tsX<hkPE@ϱ4J}k)CFȘ٥Grɘ'(q]coWG]qYe ;g< 5;-\uTayhJZgd lM3]v-wtX ͑;$4FDblF<9 $hfS&ȍI^j{M與xnOM>8_l?1'kPdj.w4`)<-s Y_j>C1F5nbNB0X{jL l1̩0C*-Ko sftȔOyvuAדa Vwk\gK)ut3RR} [iuc sܴp-uL# lkQ.o:DXlٵ1Q_G _0C:EYC@p $U*6Yk 45FjbrJ,}ID SL/=?cpjzyY2vnB%vgi>VÌ)cPnh; K' 4?X`F/fӲA v٥i9|97hdK:<¦"r*I4:g[`@.56"uLΩփm *v..|td V:kru|-DXQo9N;A3d!xڸI ܡVtZ 1a1vžc8` ̵Q#on8CBnb"8fXVXp>C>G`8*c&%v6^@jIƹ:Rl=fve4 {dJid 8S=4:߱ ɣ锌$ sKj,ʓWg/'3p w {݄; (b9D XcM.fse\``rb`DB0>@8*''M0mpH*rEY }}V R}LhVg@_LvΟ;eWkCBb".cCO Z {ftXMjjeHgksSzօDr롧?2]d3Pc%V'XAu&xu0JԌ,P ǥ" 0CCm cv \P90: j a-L8bހlQ3Lڄ'po58 Q }]2$sIN~9 ?׋+>V+E?  NY&p5ɉcJ$c׿ggc l==|~{̃oc=mw~)?xahR4O1h5.X E{{'vA WP LJ g׉-8 6#w4esRG$l'Sϼ^?ji#ނU,giuLۤ0SCH@#O%f b3HCˏ_{rvфmC0c{G4|Ry~&pg>aF.Sf<`U8`k&'YG%Ӂ 6ǵ}/R@S iq`"܅w x@Z)(%)Q6tۯlP86vouIN3`؊JuX1iIx[2:̭vUCr{,RB2ú&6[vee\2P8,{=EK?74! a):x!}ف[|րJ3~ӏPId8gd?Z}+B 2- ;sBcu?W&F]r^K #\ɣ=4|?9o a0Ьݚ 9Wf[?ND @lrXg LgءgGl[]װ0c|hmZUkE,+mhݲMjtߵwO2%j3e:&K L*0l8Ć%S:M rźF9 S6?t˃}%l-| ߜx0TJޒ ze50BFT]m_}g\q -Ӱ'X6Nf h4ȻlY|>b , Clz@8Keu8>g7jRA@4VD,:ӽ7 l n`G\P:=fǤǣ%f~Lf2[-\P>H[!mmzπp@Ye c 4M;VȄܻغ|gW,M.b v.-P iAqkk nAhKbƥ⥕skQ2&2eJ%Oۦ Mdy\ (@#N2 S]"a)0/wq-bn}lЖ]ˁUq(|Lh~ׁOS c^kdB% P{WWSFD{쁥휃[٦ @Pe{g~9.[le ]Bss/,+|hiq:,.K'@.h_d{!ls+uPi>m 6Z9\FG`0pkf'0Ji]>eJywr!pjXTǵ{2)K@Mi{bag\^{gɘ_#,AnyySRe !Pdڥ[9O->|RAXul+}م6v>r5c&$ >:\r9dLQYifT׏E$@3v@x \pHapH&%`DKޟؓ7Z =9#5rdxN ڌPSΧ6Ê$V\yQؾ|(P?:&WX(rU;׏>`,öuxqeܲn&5;"r.:+|·A6Ƅ  H5= ȒA Qc P^Yiqa9W n 0)QϜ>d&KtnutY;\cڑy+a'VzA37'3z94~R?59t!hfB[r_1a?|Gw+U M IaU;2&EͰ6Q4hB! xIWTw-"gҩǤ)%'=7r rbu{q1`{ŕ=p3JGvu>xuGRaG궠3 >`2y:|lYZ(?!%qr3%c=CaKMT<,_5l&cjc~="FM\#"H4(3{Ir?% ~IXvh:iA쮛Ɍ3l 1eaXǣnjH5w4S[KMC ۂe1p[?LE+f|UOJ$j!N==3 [f*u& V&QKID29ɡ1ß7QY"h\fpLX; )v{P g2\ρ%xeрR!-\9[|gMGqɭz=WJ2:LdnK3*\]E?$}nv٦4,s}UrI2l7nhٺZL g #)>B1vsD7u]2N?aٲKۺvAI=Tp;yU1 u̸ /sϢWHSC=O5e+46;v"=)!5 ~Ye Gt͔ы=oٕb2]:>bP 9Rs{/hd|wO ˥w Z]O.燐00nxf-݉|26*}|g|:iFM.}vW 9|Gn #9#3S cchwG`Bbd_!e=#b5;֣'31t넝(у{~nF&Lzdx } bړ5-wbH22FY:Ҩ tZ\,^^ZY1+olIMQVHڭiX|ǒ\i!+(:陡{L7ua;[l1cS_H D #umro"y8UW$v<_̶㯁7 5C 9јs})%L9Z6W9yig<{ukz G]#,V'GȐ4G-`aV^eeۦQy?Pbƛp,*96M+b-40LLiaf<M6=+sجYɤpn ;p a#V5 0%pF:gkH4KS]1NZ̤w4t!x=z*M : )&{yQ/?r1c$ѽ8F:,KWڟkbs\LqnU;pZh J@&p_@O7`k1 ?w?OP*1wYM}sj7j{m`P$tBϒ p]\1YQ}ڋ(g 2d &6773 -7JEq$Mtbܩ;5[D*bڅ=4IS2DFN۰LgQa듦WR"|>TO~k7k-fR;&P)}t^gP+1ɜp<攇 zBPbNv* NP7AzC^Ê5]] S+2P`28$A`mcǶ}<}@7l닼>j3*6s+Vѓk&\RB/%_i2SZg쮤g?#TLfvO-S I]Z)]H(8kp [.o9lh? L\ٯLg=5 d~+y1V+5df{م+k~ .ON:4 Yfr?<+~19HXV^9EOlgxHHjwsb,)!<E10>RY_u6e 9 m)MczWI=La>MSv8G7ژx3ukE21C) `,+'ys W;sSn{jƻ4d`m~.#[0էn&nhUf*?$-RۦI}1ې9+KK/') `*|9m2RӾ1L%f0& [d 1\YGی̌5ƚ.`M۔kǐn{-gdp NNA9j%Ǯ̍bY:~016<Lk~SFN )SW$ Ў駅=F`0d:_k@>=>VG̢@ G ӟ3Lz! "C[ kĻf :ohwdvPۮZ.FPQStA;N"57jQ/טc~X'݋.b0o8'OvfMWqCi8 3~Vl_v5z4WM0k/9\Us߁덓̞/ǘMx.7ƜfSYo)2bJ 턨^̶ǭnCS'XCJhZH1L{PJ8Z˷\ј O.8T8KzY1,_D~KT՛Ԍm,{:<([5*?q{Y`nk 1V J@r̜JgLxJl9m7yּq(pKZkd3<hS nE6NZiAվ `3ԯn[=P1-l%s(! LEcMJhZeq so\v^>ѷz Fm\~4!oXT xdmސvfM[vUn=W-X3EƟQ=w'-! cuwiB2' @x 32Q) QI8!wy׹ұ:#"\5%&(@{6_쪒O[{W@4DRi4S0YP?֤^U9qysBMBs('#dC=Ϯu0fV5l;y@Zhޚ;>s0}'da";xeq١?L8?mWŸ4ý4d[16KfIAj)ﺧpp5*KK]bANX>(bf"P-W:OwpS@IÈ̲RP%2Ќ8n}8.I!ڒfkhLMS_@o|Jn22:c,D >03;P؈wCޱ̅[`.{u,j V`dA#,|s-;i;1w{# ;djg!91dkkI6-^փ9>؝ ϡ"ô_WY:vU<)ٛ 3c ^ dls=꧋ nu̔1WB{L`8IxpôXtm8iB ܰ^ePsi 0 ԍ:YsUi)u0 fG[^ {ߘ᪵fחËI6 EV֍fƍU,B!6 /6G ©'9*ۄ:J&d$ DdnoI3*#o?n$ 4Mo4<虁) O)O}9ځrvćPɌBBt%pȆf !!D41ƒk SZ, S2[ff0=6˼d@ a 0[!knŖux6]F<=2j!&ig_C  0r&#&<6|i$ 2"/I;u@V|XלMM 1Y SmNI9‹TcfA{"^~D@ZAVN K0ٰ<;6{iRki!PP@ Kە[}偅$­Ov$}=ۋ5Div,8S.a  f5L3}K L焁`Dvxn?@( \rs==ohM:xM7M5\C4S&Q <良I=5)apkL tj}LQΤHR lD$hN }>U )FMFt ygjyp>hv)Fa9\ I#EdqzWdvi}!BWyc0;&El9Dc堩Fbx p[&5Q4->d& G2S2u5p.2׺ujc3X4L S}(|NP^Lxz .WrL\M?ƭe%6ZPFY9=l0`Z5_ã|+|@ǔ1 )jmN 4A#yݘv|v:] 9sRrM}fnͻpR˦8B IDATɩˮ=!/c75ֵRՐ AltqqfPsF kRV1M>fo$3I$E4 (c62VS>sAwnJcܪ64Nc}a2}7=LfƬehKy?!x_w|3+ƤrTDz,9< LCP 65^K d]c"dwpu7%" r=i &PR 8rPԢByTonʝuL/M7͆p6x`Y,(0#9~e@5B6?W֝-١5Dx ڰ|P<* Wz(UI^0|7cj~{츤ou/o=V.hqI*Q&/cJ"e%{Ra$ܱA2jrFdJڶ1FZTNqLxLv}@špٮМ4pх_WI!WcIevIBmŷ,3 ˳ f\tgQcªI~jk g&uPP~Xxix.,T}|,iAn:r)b %t oiM ])gfh4'"Q&i=<9K7iCR$pJ?r@8jLf60ʙlrVcR/"pb9 !D`XUnBر ݿKTL&!_>JQIo|MNa<WWn q։oׄLCyCI܆ @F>jlrJt梧d"=6J<{G0r3~lGx!0״q$rD ,lVuU > M iKF3.@H&N CH-\Taq_>un7Z`7].f!mO(R&D?jj,5/Ū1VQuwӌz{} \us6y8yz LJr6M e94@%ȓ#; 7G/զ \m&M9 Iy,2w3Pg(Rz[J{ *'?`/n^ ^e99e+ bYrpi8 Ҳ'u可YYR\q{!͹^^gDx%\H͐rX%_g $; E^C"ڗXjR4`.0a oRscl1j "^0ͱfd ݥ@1e(v1遌wq'ι[ԃw̥ %0}lIA3feȸxwGx7ŴJZ̟{Pn! ~,"^!y+/ς'.&K`9az.(IZ ;'(%Z)4f9s%}]:)>S/ ,i2Xe3qc3S7!hJej)s=Ծ=yįi; ${Sf$Jh \spq=|"ݎIpodBkAJJ1%26a8BHJMDij٥Sp8"2 Mls72ӝY12LKvhL "BSaVh^Wq؇c뾓;Vs5Od E}bHŁaM`M.&ZXeੀiRZg┱];|kUI.klWap)Ꭓm!*HHn0a I#ZuR*r4MNt&ȇGwa9&ً0棂)|@X@+e:`q7}z!0dכ,[Ĺ (7S!cf CgK \#{o[08 l|c^# 8ELo&z{OpfjPޘ:n]2Mfs(aK1D3(Fvq5j3}( Rަ\_;{@H wݭy4phWj6[0cq_zn*0^#N1D+tfF Q ~4zuA JAl?\%3&%y$V~6l?S3-e\3oQ6wǵP꜁Ug#9fD;T$sFo"iEBҼ$ s(7z#*b;gHJ A Χ~Q_>,"Y/N!cv ZzOHl])T;!nzXJQhZw<2 27el0>>MflH^`R^zx K*!H0c6Z b|+T- \\$m?Ǜ4-:P$ %/Wi,52͛7 ٸ~nðf=Ewڽ!a/׫|Fc.}9p1baqs=e*W8IM!N 0 \ a ) *k"~LS@ C0c'1Rê1 GU1cMcv8OLҌrcFuz?O8mQP^:aa!04Xg+iLs-f]I"}pKå3W*`JL zԟԢ R)2zI1> 4<7cG[T+ٰjoޝS̭ %kIL9"A~"ұhk [0) pC8CxPaILi3$14GaT=.HH}c/V%3S$zö䷅ ^b#F7!%zj?A!&a#h9׳GݩΨ<f2MP*s2ц,0k _۬5PRc`Q|uC1inFV54ÆC >96SBv[inPo\)BCx hۛ=taa߾{X Y]ԺY^8pC')*1Ȑrޒ@@mI%,iܦ8]ԛACIG/ux_pEB@E XNuie;9&0 wDŽcLJ ~)ʭ=07=LM/udD ۃSlzC,h$ZzS"qX#Ւ6Bjb%,vAt!`x lśE¥G5\2I0lb@Qn 6^yɰܽIcVLH3HC^-e7I,HsZIJLljXP V19 @Y9$KV!;l+%sgw`9A?(%d,9H#aI3a!a2^T34Rx mfLԟm˻z>ܨU y;Qz۹)Pt,u~rM;ck,Lϒ˜cK-Z#w&qܤ 1AL 0wS.Hx5 cuGĀŘf+lx<B;,;f'sm~C_UT_lOu Yf8KkA؞bcJc8#;>'1JzںuMI`tGz N)y 荪^b'"lti\oڨ-F8Jw鞣uA&YYirņf2ɦPij1UeϘ]X,"&hr. iZbcͲFDa7A1EkcF}8 ‹6 g.!i]B#RrJ. 4]i"wPzez7I ڏՋĈj- JԘfѫ_ӐJ[V _c)c6z},mۅ>׌JZ9MRImG-ɣ_~*ʜ cѥ3x]%* U@T"yv7{3WcʖX?H`cXoCl5^*&.v)p:McwLX~cIjNZN(yCC |y[ea~SK'wL"ԘfTWجt t3xAfP>Mt:bvM2o%V$-8K5pi~^AX8Ap2S b-iݏi[%tZfK֏u:Mӟ6F'x kiN&c]1ڦԙ0 {XJjgQlR[VoZjizg٘GѾ%RU,mrCDUb̞H$r8qvq130,5Wr#Q[ 2~1E%(z g=]PYet"W}"fd.^=FRLSpeM%vtWr IDATvVok\=D<5wӑzWDpqqG$C4=R8Gv9; pJp9Z \ҐR%"CS=_bEFyN!;`D#maM=A>6Ә(y:rR*T0'cc)]M=d%mkUItr=s`Ѝijno;v`0n:,x ^j(@ {$WrkxfL^ u0v- 6;, )wvR.?f9w#YQ\?=''/6 1V1> l O^b,ch~^ 1׼7,auD  ozSƢ"c ɪf20 i`G¥r!z#;=CݤR$ w,blaw ̜k㽠q~9cBLߏDz93qKJͰF3JtZbQ3ZzfH7#9ç]GCzKu0wY6;q> ҆>Ęmt܂EZOB9,4NgnC{iPӀV#ƒ q|\3c:|ˌdi$ kHmim"j%咶$}ܭBc 0 #1u]>ی]-Nxj\)b>F XyHGLr^R[g!pnwvo%6uW`vwSb$h2A k@(\x= uQJgu*4^f>o qޝ2s.O+iz 4l$czvO]w4RяIK1nRr.%Oi)+y9Hh @#0pX)olZ\6&H&<rJG:/Q:D+S̗,BsL>}x( 6KHM| SEkdÿk }F^+wh2d2*R9b%8e'Mq77Iۅ q<}P6Jhi7J W|> 4}y ZjDkȜfiOq-1r)]KƵu& $:U &a"?ݟWIp FB+JrtMI(aqA˱Teu)2)g>Z9sU(q>5hԞ~9>Ld\jWSKZd{6c548U?k{̹k3o3W.eȩҽ6|!N,cVkn|iPӏ,w 3UIJ?.^D .qJ8jʵ6v6E*T_(cԌU&5MN(e@ @ }J=&Xgd->B*ѯ9וҿTlNQ@XNjyF 7F0d.aKkVmO5j )#OѥQ5-̸fU(ه)wÝ'cYTUd@r;ͨ4Bz{P1'm5[++f00oifs4J\?X6r-Ls@3ǴٜBy8Bd8Ի@pT+Sc.KK/\`ϣ\kDx$VIɅ|ⳑ}HwK^*.2<9,'uOxng 5ZX:I ~VN9{yDS"fT\3/uik}JԼ}\%qIU5~ ?SL'ưꍭo!FfE`e>`WjJnZ Z$KbjQ౨[0P>t1%PF+GM77 ta1no^ig4請L'&LZf况 O⮢T[^;Y5߆;%))Y2Ar҉ZdS.qJ` c@x鴈zR8t6c0L)4o2wnpJ+Ɲ(h@Kt*sI~Ha},"tQlv=kڊLSyRʁa&wujm=j@C)M(MMfl\%Vrq*8y@9BS@A_ankpC3(k>ҶrpJ$T]@9$ui22o 1UѴu15-nI1M,1Nx_4۪2d~·Ģe@[RVS4uߩ%lS! Ή;G N wVDž?|=>B:s"CƑiJFp c:"VnpLK4V`2\Bu 񻚡ƾa}0<')B.#%g=!dP/1M"'ĸ!ZܧY53ִXjr͊0EL̮sqs:,RM,'v;ǞUQNxèU^b>g.Q6h*WR}4y+!Ҡ3ռsk镘rTre' M+m!ANzN:+xzE2=',DaLN% ]Ԇ(Y? چk+"W~VFkt2s;rN~ +Ӵ}*l' iD*x#L1{iRfs?N@7{^H-Ǜ6'BaHޖF VpvvwO!H3GL44jӎ.x -CN};όw$wa$g*d¯[`B&enhC7ێ~Ț+U]Qa=o1ɔ}if|F.K3[@$.qL~NKLSI@H/.)M⪵ЁY<Npt*!bcE>5ǧ7q%z|S}1 jM9oR5 M]P"h̭x'>YX㟾?IruyOZ up`lYi&)Q2RC%FXt©D>} XP"5-0JtdKRfr0Ԛi A?k b8W%^iݭaҵlZld%j67L8Zf[󊩵1^he8A(e .o_`mkedC.Eɫ@7S3ngO‰һQW\MBO~󌙙(aW:bltw2FȚ mnO;?*%HҎ!~ si1H+h>S7KR$"[-:S +j  lq ((k.պ/5pCc;jAlrr7K (G!aI#蕩Js~\$! Ztl]nucQ<{3c BLn059Xd%7UNlōGf:9ԬefL/m$_:y/iKxSAAɊ3Z;'g:Z\87ʋ<%;HT)\*E`2@YJF:`BCY0 q 2Ҩm>v1ŤOhQ3\ӇOԔ!:uq/dX 'Gٌ«NݧQSMCڽ@2{5oC\.|2 CEE.:@m;w8 H6+qyfcCG3|t9Oi[=YsHrBqr\+N#om.lQrv,эM P2:<rV']0ǝ]tp"ciRQs4/an ZaEnĮX*㇣d/Lr9=Y1xi窥Yh-1M~iCʁ'ej<i=e$ݩۍ/~O/*߅'BoOOL_F6u~QӬ)K|NlsFAO_BR!vҜk.hm[Rd[={~ 3~„u?.Ms=3~\g9&C$?;%E-S676tE.o9*0F$ `HhZ %=@s67n~n '?])8Do g(t-`ɅIJ%Ck8G$GAӟyjvQE \5k;JWürF&c2p:Jn1V-eh'| ]Z‡ScT(<2fi׆34]20^=.e;=[,EOI9j=ld.2K@G'> m'ߤA Y5κj [tE~VfuD3sHtzV.i9ћ`>`'] )ݱS:cN.a[ce"2nN*}um|kP߉t|6Ϟ]T:Brb2>Ӹ]ÌC+|d_9z"K\ʤ)|ykoM1~ b+d8?!R\Nd$&4rWJ>%c'q "|m͉wq;t } 4j锔0~(_p#L2EEON٠̈́mFChCJkfI3'7*D,L# /h"/36jՖ ^TJ9)XKWkB59k/E0:9V%隻18/0ϒQ +y.9ԀødS hМ4@78L3׉+W`yI!7cN G?I#܉'Yf2BN:Q/Y2(ej{UnTT )S9\(-Q -s)!P`,MA\1JWwM cxYkWcϦE{fظ1T%.?v=~-Jf\@ڒҎ p8_Nqgz1 ׿ {eL%En`"(^HX"axQ[V;Q@zm )s5L*Sst!: vI i!ǴĴ_勯k'IQ&'1Myd=%ƷsSQzkK^#yvCu?eR>gߦ$RT'bWܣGyϹ@ i ]TLLZ}w4Jվ;AAtzu: NLԞfqjo %^bE蟄t5Z jצCs!K)9h]Z㊉f{߀fsvh08פ*] .^3D'yB-MS"Нa<-jϾ_`ZXEǘ;"]a ƈ>YUo*2N٤KcmDZFΑqf+K]5t<I]O9|?Mr7t:yshfւ<8+&^:1)2tND" px ?Co;Q/7{NpNqsw~ߣ5^F٫<5I-3=M%o?~ۈsN<Nnzd=A;z5skxs<5cUNN`H=(R%k)J'6ݚV/\W P !E*K&u"F&[,yʒ9΄pR|v oZ{k[8WvSWUa7 G>W ]25@sĝ8DcK\rJrs(SKj+f,L(4݊M=go. 8EM5Y t+?gЯ勯R^ȫ8Itр pAA)9wSQG3%Ak|![m`2/@_%:x{_~[v" 1| q7cy~T1ѻi%4Dx7tχرSν 0>%Lb/x \I %W~0)-ͫ_25p1N}-'Lz"GI6BߔpB%&Y2un}@TJK 3lO !:YhD?YB@\U+Z]DP6Cξ6 -%%zJu=Z@ܼ$JƑq·`ŌzZfܧKd5cj4H]Vs([W ݴ]sR0ۏ#wy"9Le2K4OVGI\ZRF|f:Q<"F>;7"b7]pa( +>>FUs?x@8:onl`;`ᚴ"uqQLoɽ7ů{/H 채׭F ߔ(shZiآT -M%4O$4M@t$vm>vu'R sa%z 4sr>5^vΎzeoa.0^;px$wA>)G\ͨ]¿58ȉ`=w3z7s_"~Ry.&Sۼ  89B;ശwS9| 52TlwQtO?ZY;.Uo@hlC  xHvj^ƃu~ ~[WŅ &L'F47L47ᔮ|oB=>eZZ@rՆ {L[lx  r=nm[.uM(peq=AunuF+F~P^5 A2ƭ/ApTw>|+)^ Q3X(jkӭn6K:w6ks"BF:c4ʹ쵿dKhkВB8vMXb4=t C)3{qp?yJǼQj:&Q{e?Le8s$ċrҡT7NΐK:z+gL.4L<þoZkiYϚ=؂Ә✝'Fc|} O@!5rXm-2 W&(^4Dhp6f=vv~m@FWȗih 4-P _#7\AVHΖj&![#wk/-Fie"[݇&Fs9'.{v8&`ʕ^>UnW"cX?~82LPa @VR{PW(B_pE_SG¼}he[_qqL]33IoawvbpMwi#9!dB\gs^ɊWUrEqSn^~@ېsmfZ_}7<Op:Bx4~gaz Kl_rTic"T;p.xv8Sdό=Hgz!b1L.]pA0GI;$fU6j*2S\D,م1uCTګ1ƹϓڱ)ÍZ' v/ێTVi-5Tw6LX)-{)saJ(bb:uy?#l//뗾6IAW/=B%tYv4 BG1Z0}3kk>s;ayrt~"W*`^WL~'l;a1㰍*kvXEsB(R`8#0:x;eB\KW&8W~ilj2+}t!OMgZX!QP֔ݹCfr&!:ú3o/;t;R# [sQ&يCr 1oE.pnXM Nw~]xưBjœ2m@S,5Y5Ǡ㚇u/&͗ Hr=@X4S2B%yr@Y÷]9MWr߆=0x4J+,tپt{G^oP Q!}4ܛQ|@w\^ګ$2ZH{5+?5 PibH } K_>OsP;⚀&h$Ɠȁk}vR(nZ+7^5A:2f#LSvqⶓ# il F<"cLg]NJqu갓ρow\3[eգY>&hLn^n9i+c I[2?s-RI^95zIȧ0O4SPHWAKOfvlRϨKϵp"Ӕ= wZ]\9y ZR*ͮ;qz]h9Erh#[61WX1m=<&:eb ЕOߚ <ဿ;Q8}].M sFQjVL' 8Ƀet=AN>{2WS6!)JM3JxHt\Fs)7/(ɷg/'tUkZ9cNxThЬqӹ8Sv)7L3g%PӬDS}(0bd 9B0w5k;ibُkV5ה;kKl9? Z!V`0X4sIH|tI=MQЋ&6ꔇ0$.:m=>sݧI͒3?܊~&BK WA-2q#ABnzуO[̃\)6Jϊi`Ԝ*7Tjب2ۉC|X(cgCKR;>sa Pci1M넵~f(;`=-0x04SdoNaY"Cv.dt,c?G|*K y,ߓ,%ƵW?lTi+书m+~gOlh?(m2'A½ ,L.@ ZhJ 5'S'`ZRJlMZ)CBxMOϡnE@GYQSYԴfPM}/iNVrKy p&o$4c=cǧpDVz~4s rK0G+gI0[p#΃KY5Xri6Pg"WQh4BK Cr]FċpVqd{QGm Ӊv(5}BR}=}vK/._@69B:@K8 CYr=\NZsz=w@7\ѱۀ6!(k ^$sX8b18>x08,|0ncYX!hʍIjvh)k@ w[rt 7ZLp+*犱y(.YrŁv?tzdNbxa|9[/kzmqJNrr@#w]_54LǸ#sx oYfshMWjϥ>  FA\GF蘏[`sYb)HeyIj1\jϾ!':efJcP0[ FoYCz7P?(xi"G6W0z27dpZr#;x?1}d;Q2Qfχ|+jV-Ts.\lIToH`Z&+EmM!8?BzPI(}]$kSHr|9`:P{~\2[2Yt9-Ncr^ɀôSz뤬9!I `~ZFetMK8) n)~y%>KJp1%gn%jZ"1QԮpqZLnI`ʡ_$>:kb#=r2gENc7>t42J.32#ռwؾi"h%XgM]Kr'ݓ͕In4S`Dy[ cHpaŔMp/1MU=xZw "瘙Ṯ[]z(.o)RayR{H~}hܴR3)i}veJ]GFAqPiR2%'L{n~6 ZXN.ƒSGՔu_4-ZnK%{MޥC%B`l*`8ͽ(eW&M,⾞[bk6~=~ޖș_8,G@,MqFm8Zuu^)[c:z 0v6Y}LJ{ ȁvNYiJTf03iZ-e5F{~)(z{?+{^>~1Қ<7S - 4zJ9r^9kg h9@EEɽdstnR0$mɳ2|sc`=w[Dn5Y4phLJvfZR(V#{l)[{F 884?3<(< |ȥL(@z[Kk sI(1Ir'z\R5hL;8; \3fj/gΥ3RcdI\ 5rBΔYOI6xIFԬFw6LWGHr#39TΚ͵:aվqS6?%Z++@zg Ar)..JOm"θ~p7nar [a 1&4fz@YRҙ`0Z* ,EԼqd̚})|'*8{D Di^KHi8Ve"yffO[t ]{zo^+p/Tx7-)++qz8C vHP5c{ŀgE%(0 )K9Ы/KsNZ (s@Yg2aj/o8qHDbQj楿/͠LΔH[q^[[ql.*{E&zqFγeM4L]MrN4eLUA-Bo\75\VivHjבW'8pzHaoZbHN <'<-8{ֺ5;sjS5b{;Ѭzo!t7m83Xl$K|St {4%o#vr60XԬ»5&Om#RF%+z!Ju=)͕P"7j:en[ ͝8zOj'o0@.5 c|8׀bY*ciZ>xm ؀ DŽ2ǍP/$8CWloɽg|9I0N܇ 3׿FP@iɪ R)VتYN I F*(a$ -{7< n=ww[VDC5cގz)Li50W7?'e2ljw<,ʣY}٥NV {TRԳ6>V/VhlU7a"9JLL̟σP/]]J wtƃ&f_a:nS[[ox@~ ib =ܲ[bXA8XKɊ,酺$׭:ٶ$uk遤6Yox#Dij@$/2-`Ư#0ĻEMr't8$.I7d<ѓ2f~^2RR5ꍑxːrRR|6K=.`+q@z[kh]֗ üR JeqM8oiz 9K6sS| +M;Ѳ+?'&*#ü4CAiYPƔ%!m,L#hZ/DyK5 0T&(.ϥy! V){8utϛHGbR/wqDj;{(G%GYg9̕5qR,WzF4@$12Vg5a̟;wb4Nh7B%yoE.{C@̗ 4.Ld FvLf*@jn׊1 tQdkaA?O PܮA2g-mZro!"+Su2'Ffڡ[Vx?]yؚ}) r Ac;Y rUSǐjOgcBRu}%J!'\N`]͆>sҽ?܁ Z]ґy:F pxٿ w[ 1M!k_ ltU`ySAqV0ȝ*,2@lף!5ӂ_|)ThV:/)c)!v9kjmV{2KӨnsLJwDm5kbvcx pMj xwOFAZ#R%UθhrY0)ct @m:7qq|'dS iBI/gQ7b>A?5C7zb>F.v;j]\9Z]:PCvɡl@Ds 8܉+ +F z3JvZ:iNvvpᔛy#@q锐 G~"I_f Y^M:uB$DLwaq=}$rl:YX''5ҕ8x6wm-@+> 9@=\s rxG` n}/i2rlW݉9NxIGFhNqc+cήY U>/L9?)`ԕRI%y8ZoSR]K,gw7ψƭ.=V Q3^h ':Mdkv 0#0C 8<;gy(S&mO0T1Mh'*=&pq `G!Rgce``)AsM ?#|nջɝ*wS kqrk^\i6&%Q&5p~)A1n}@y"KI'i 3;n=#׶pk֏~з`OWUe(ԃ ss˸+@1g0$-2WOHbQ<;QGhp'k\2 :"ql&>Wi 2R\ C'K aı)Co0>G8.C[LCU2,Cg(Pm1=0%K>A5Q, Œ8q~׺o5(EVqqie[ozAh{{qgU;vIki隟 "1 KIk%Q!Բ'Q7~xE܍??`X9ueι!5둌Aw * qa1ȭV+4GEph~81Ro"UQP1w!C*UG/}w T U*Ȓ]'m@AUJ({Lvtv J;kP9A_1xX4O *f|!gdU:?2Z۾(R܍$4;I^AZ钝PKvD6bV@KDk0 ? Rs<Gmуc[[MUG̍c]mBjwaT֠ qhi`F|8[A/gڥWL i˔ dhѳZqZ<ֱT!w^6Ѩ!E-363:-}28OoYNtP<>#R@d]gHH -9H:%$:F:'`Hn5_:Y #&URTw\hCZh9&5vl 3Xr;҃Qܾ`7}21M BAi&V[tet RTӬq)q~29Y%SɄb$Y L '~䨚3Xl\`|HI*)X\i^3T8GMSGYVdyߨ;7̞ᴷ<6c Tr1wH.֙f X4?w1Z92VK^&B| ^n`'y3!ƨ,Rd hKXRSa0$lbF0Qxޥ TM @\; htbӍv&)`)+&@e؏S%LH"!JNc-&-rxc9JiES%/wԎMJB:-շh9^}O078%mD K0eƲa INp¹ί@s0Q ~Phi^3!{ (W^D6)! : :'~9;+y@;܁\ijI].ӏ?77o &fuA]T#)GLe&ft!=2M0-lh~NAQn[dyQd'uCSv:X=vWvYT L =$$t;XCb,.|AłEƒxT0xl<FΝTiHƿ`Bt{*ѱʹJS]Rʞ;yʟEf٫Im ݩ=앶׈!ۑn6*%Y˼*iѹR\XLӁ1O+(=iIފa+d({RA NM:QF?%kl [@`4LXnGddy/?XKW3ˠ)OF,U dLgv*1 KS|BCÁ\) T6kN=>?Z H0aR%s%P#N^wNďS{tW2A~ĉbz *$@>L9'rqkfS˙r\\ub̚ 6Y^47K68\\bӎ/w(l1ߛn9=+2Ϛ*d1vz۠As\B)6+ZLbO2'O&GrA_56Aڄr<\Д$ۅzE$HFmRV7^~"Èl=@d0@;`:)w k{h~Q=3R{Ɖ'SW N1\ ƱŴ_Q`b޲$s$!J(<4V:>;n|#G"eRE (+2$[VbgP, pāG#'@0 B`HbAE)RHqx|{_wߡs^QYsg7 }oSUNηַm1&?q%D{n|B\ !ڬgp$4J+B노8֠8 F0T0.w_hd~sB3GwD|e B+#X|I,#B ۹ s/-JusQB?awW IDATtj ؾa4=@lZ^sn䩐Z}yѱxPeG,9氢6!kAbIyg$9BhP5Gއ`N}]6hXa%@>ɓȉuCiY39+ܩp[(Ln&o)Zd#آ уY|oo =]fWB=R!>F>TtBi@8?4S&` %4) V4YplJ2H8N42D鲮snO(ul3AJl8Zdt=)t[t{-s ,+km Bc$SlTLKo{6ur26z\}8U(vK,m+ͅRBDvgFNg({`L]@tJląESͱ[>d{kH;mX=I?akcuo鿪|Bk1+;q|ЦK $,waO}Uc#n&|ICl{}rvBkq?UzKkk5 \< 2(9:?G-]i#Lt&N9Bgc/Y\hk uad2t+MTnX*0-] ]j[t/4H0V+ݭ5c'%k3k~..w$#TU)wwk93]Nc]>2;FB rКL=P,- feFw:G99q]Gs]]d'8$@ˉ0F{n1"yc/DݒX}?;8Uҁ#/F2QYV4=`Dú72pi ViѾ '=M zVnqgo>?'XO>I! =laZϹ_V!s{tI+݇x̞c2skv/Z|6oϪv[0C~M/ؠkBk`oiKob]Js#6f-{2`4'Ukt{ȑ8u"|jOv`z"'cɩ(] fx.7 ą #Ql [Og)_7S$ v c*v;!l/K62Z9Ji1,iB|'Ͽ;ضAj;ȕ_ɜ t|8nw%҈Qס5[}>JըReS&Kꢵ/t[9rw YeJ`}nd y:ڜS,+SR8Y4@Ccf[h-_kD!]ƂcrDYSq }gR>zeW{t uSRѽ`en-,X͓50sBv]l dXu<9ҟt uk9i^ĉ\;9Aq*s)^D|/O!tVgτN {S:/82Bhk~bE(Ķ\^n.3VMڤ*jX/BG؝X)S2T46ٚX oTt l|<@l]}$`{8¶'[1KuPY&dۊ}k_3T%G9楆9/a׎OWch#T>d|1Q;gvbC&n X^介t!HN@x`%1҂1k2ZITRNI[IzԳݹ8n#t{Mеkű`x-N=Q~hQƐ@]rbe9W crPnX0ߌ[=;as-ML+N?IqmΞدZs " v_z7{gK#B\\q mT2P*tJ(]Ԫ%EaN:IHh~}$>3}hY .~-;k=SǓ{X誧B/]sotTYT/-!vW*АN: Vdrn\ilKwzT #H<ߩxm`A5Zy;Dmg۳((kbO(}Vʲ+nmχ5zj)s$v]᥋1٧)_(v٤<$ip,oi2i-kv)T2P]Ҩ~`Ct*e $^OJ* )E-iT,+Zu0ʁimBq%ca岊Ic(6eݎ#F/^hNNAבO@w]w۵3iهk#T_ `4xϒ}SڧwDgsBeY:ϧ96Y*uJ9NֻliS3G9sn}Q2<ݚRHkt3@l'Hav ka ߋXJ`y(6J>A>?Lu\[#uQ93KikDEx 94u*؈n˧dr 5Zp%7 (+`úoGdg! kښ̙eSIOiְ֛ v% 5~(CwT?ˀְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXְ5a kXzG-=Ha L]93UX\,L!] 9IDRy+@sXސ@Z `9C%y9"# aEAz S3H狅xv=8F:nJI>%q#;+.1D\B; Ḿ)/.>s, ^s`h WM䥞Y'%ap5C!s)q4+29V?4uX%#Νԓ)? e3@\x\{kae?%apu c=a\%[ZBXݗirvg45 CX `.}פJOGQıGSI^P5𹜑NJʀpuJY.O wy0܅"C:0QPƒ?RBanj3)ͽhا?\Ґ seBgb Dl+GdwF$L.t :x$wh@yM%g\fBPxeKp7RYeoc{P 9Fs@:|2%΀})X^+\R%%L/UPKKJPhgpK"sKˇJS,e}9 U KG5{}^Cg%.d FYj "3,n#\J{s W6t2G)ݠ|0imgIؚ̅LuGLi!}.*p/)* # C #*`r\ ɞoqhmeM_ >?TKWm04B"N:f#R++y<6:4ߴT gT7Ͱrjs(Bߠp/<߽*pOճ]rL|ӎ]J,FΠ>%I`.){Lix du]HkV Mgx@|KŚ^ 2b(l [a%6z29ǣ{t֛b"ňC, @v5=?f9k}kҢ! }IX>DBLc-zW*> xXhcUR]LC'@м/i%-!D WZ0 ^ 8Tߟ32}WS^"QmzU!(}z:AE=5F}.}[ SorCu&YP=NBdE%T U"d:H4؜,y[^+EGw20,B1`iZ7̅1moHk!}q,f=}!/}o/9!deHD1fZ&r"rV3ĨB8)ڥ칬o 1U4eǁ2e㙛ӧ=3Ro jlK$hD Q C-rKdJ7Nu 4-2Y~KNϝ{rɡ5(5Vz%KtLyR?ƊsSa$ޣ|_!ZbCҪ e Mu|Ԍ/;Bgy/k.a)-.;.X!@>%u is};z *TrTbmT9]}k(\m~/pH*4ϵݐ5suٌ,b5~i%ID'J42K 0 @i )朾s'eB|nJ20SpbELxIM*JuB߭Ϡ_2QUg1q,ьrHhf$4;Ԭ(V1C ֪+=f,2ؐC%rlؤKd0^ .RE3 P:!범YR?TmgDM}sv.BP}[GPT*ղԴmL=vw{%&NP9,j(k֯˪0)c[u=})^ag҄QMS!`~O](5:'WoIɀZr3@ظS&v<&$%\䘙` :Ѐ&2*#]H#y@8sss իw0hX&e-8KJ9&RMFZHٜDJJS@J85kv>M0tʰB9:CJ/t IZpr2w/4fĀ#:K܎JrC)$Xq1 ]渻}d c " `LOr" 0X8 { GιOudU-ƎZNze}<+ee iȄ}1c kEByfoLDL΍xzXգms 5+"2 T@0sCWmvu059ˆZvjWCfp:6eޡab g-0g^:[+{n7ɓF[zaHHk`T+jltZc2{ٹ}c]^m5#f36䒌da̫DU/pO8>vεXֈFj7ByIJ&*@L>,46v#gw*hR{+JF`X_BRvXI Uc_M19,?mö6vVBĻzGA@1շa?EUE+<=f״*to3\PTS%ANE"TvO ~.B@LPhOg9>Zg5eEKoꩩ/McTlYW򴆳koWVPnAۦ}D?wmlvZqLi)p3Η2 Hv P2ľ964 $F֘+!Bes39S#S}f]ίp3صEޗo@ZMc귉s_fg_C8u%lHj#  ]8^Z;#~ps̴1hN=3-ͺH wIXl ܮ4~>2D6ŽKcsnqrۅa3U|}j11L5'S/09嫮/%4G^B\ ca; BR.x\>o>Աbq 5JJc;2~Q=5|"/N* =*SowAuUdT7 ,&3얧-r"0' :eI4}5c"CHS J:!/^FD3z]L/\yNj{3 IDAT˓W靚%x/|{D  SPUU/ٯck Tbu}Zec1Jeo-8QO0E ?2hTW׮_M? `GɃڞ&e/Vy7bwS6J"w d_vKkny _3IՃdځ;Sb"$hI:f,dN=Ạ$ N%skFtt_1jǯO9g6GǷGG"r O?怰` DDdSTL=5fe0]vD+H̕SI|\SF}:J@ YZarc[jM{'萩itώK>SAf~:]ܦu\:voK&mB陀t_%ש繝bb9C ?nWߖJʜrB|0>,/N@oPȄW!~LrX/~T OىYB{| <=3Pf1)h$ɟsQ< 8L=jUϘ%۶w;]i ijۥ&S~/p>o6˜ PQ[sOp_ aIz> ]y2#Kk7ӃOcg\oX݂=~ze)0jpmJCXιN.y@0L}b{LK S;;eXk&h)*? 3t9㤷ɾźcx--)ݤBч '_%B|3tzsdlj`M<=u'EXƀL2,1K@4JRsnw }YRD z"˵Y tiN3bI fϩ[@m}7}LKX` cOT'3򞃽׿GY1a,u= TUչ_9\$CI L4|L?$1k4:r/Ž>&ʹ_V7Q.I#5 cR N0XؚPTT 9w E}_u= >aO6KjfX{r lP]RGs 05Xe,/N1S/0U9Q=r$P#%X`RF>H.[>Lr'x}!/NZSD mڮO\ػxM"(匚c,o]$[K16iA] e 4% ˓ )Mc~fp0Փ;4/qs@OB* {ʧWAOgӻ4&!Bi%J,u(c /M/~TO `;i ZΎm]f^&=0zsdZ :4czcLLgY4:S1^ijGeMw2FMItϹ%^d`޻: vVs3j'^1Sعٖ Ƿao-OΔ -1AX i5s /,hLU8v16ڣq1YJzF %|$Xإ6穰[ojCaf)?TLoc':Qc!MDOHA] %)Xt K) ^*!u+srgWǛsd P O?2Kt{e}mڴZ)%5ʖJ )32>;3mh"L',1gX28dr(`!+45LR;4 EPN*i7:̣s1Opp֢]ΰ<^nq$SA%`陥d! 3{V)ɰ;*C˖Z%=$rH90 =γOkNbiFL?oF_hn3K/1$^JXe.3Po㤷Xgbh7Z"} Q3PO=ܕ0UWAx N04K4문; nH,=il3x͌K =yv)guƒ):5#Q (CۅN+9@T9X~3;yq4b@z +)pioZ)E3"%39fڇŖܗ3c2QW|=]_<"öhǷa 8^g9ڛ2 zEeq 0CI$2,N܄4L /<,HO0=LsϴJܪ&];n~k茘YFaƕ'Ng [ D;8܁RzgT'27k]~gA<1[v6hf'Xyv(f(e(Qf(2%Ìf|151X{P{٦CxUnq٭Y21YRbg7MtM=}c%/Ҕ]VI6; e%i(}i/^f|x? c~>6'E,WWw_5,/5KdR"zx;T_Ã^ uJϧu]]J {L[^B`\(t|ifsVÆeB^rWIgP(VJ%}c6voX~3L6Raw fGqKS;s0έpȜYi 陵O 5?Tǚ(Ry<Ң9'L҆2\t!$NKJH9 m`)"ޘnRYXնfDp/{!ySxe|jmN@ sUVds4Ƿ_\S0XDt:t:^dd}j7"ymMւqZ<2^X:9uW'  Tx9KM^+58N-Nm_2$ !x:jnfً{R2X.̦CI&(Kn" P&;.ޥU}ć^d̏00"faV}'_;]"dH9NKY$ّ+=@:4 XtNT-EPi6i]`޹?m.a&ӍRŽtgk&K]Q6p `-K@(3Pr I]_zk߅k] s*PG85L[i3W )fٹIfn }`:!JlDsz{tܜP 4=`JpNK(%X<0qI,8kE7p|)L`h Q G`m'eI<0p@a8 jBb%ڮ8숨q|WIufE^$X$3W"3@&EO%sJtI*ܟk %}4ˤCO_\_)lʸxSR=ֵc;o%z`RajxB0Z--o,XF-֛#iGmё Sřpnj#u() cTS2_I9= S[7ND1M16f=d?N$UA363Eғ)瞏7T_|dڍ 6Po_$~)ڣ?:$_5hʺL*Ȗ ٶ-ٖ9 ჋_X\5rSőB.`Ց$u}2B 87 m@KA= 0hX:uJc0F+sy)LF.0Įbѓ޹_uZ@(74\}IU0c=e};.x\ylJKDn^x/1  94[ZLuZDqYr#kZLӍw-U_7d7!Y\2I!s45PΖ xR (I7GT[ap;pn]K 9tnzZM̗=rejxU4گ}T^$ U⧝GH,2ڥ,N[<0&k ٞɵJ`Y)% ,3oKTb*d)rnAgp 'D XR$h gWr&7c)`v0TmtNLN)H}%r&]p@֯Ua;nwkUyCu cx j2KQr"].{Cs8/,-_8;5P 9Ler *O!Sn̍(l@ T}*Ume} KLERL4-܎As޹_sWKDO3(N0/Y#LiMK c,4z$wBa.^ߴKN~tٞ06I=2czV7Sjx]ip+߬ hk݋5V5D )i&)-n@+}ru FRՇuX%Q4\=nTG`d:tR<ƽ^6Cx,qFe#A77P$cHu_gu 4upLDS&&@o39?艟Ϭ22gd2]gǰ'w6oZǔn>KJhv9Lvqr=Pm g-⃋/,Y^x{c9]4 $Jm8Z, 12\$ur#3V"T=ۄKGj7.mA$ə1w))Bq\- }JfS$|΁i6S` u{Te6svq6XܗiP8l eƛ;+>+?5!QRJ &zX5H7Ρ%alî>vfJ tG=nc: %^} uSSKv陥ȔD! 7 e,ٷ''leaVkƻg9̘pʌcv8Ԯ܆ J$ǨL֡τ c1k;9rDj~(t DY) 3j\$¯Kᢎll@Rn+~q2'W\5Wo%gD5rF |B0,^}jBPXHMeLTß0ga0Z)x~#K"]Na uX>r.Z<809J^c&蕚6n#Md e3N&9Y۱`X~oTX{1cL9.8%K D؇L7 y&Y;#v,}:T4|-'hwDe8eи%7?`upoU#mRߔv׀3:΍|Y^f @ϐm]ɜ\3(0)M|F ˬsh8&%Pzx"!!̎KlS]75Q7i @tb U8OҖG־CmZGj$d;zKV {b 2Ga2)sj4b-zyрy2E8K8uyK  IDAT͏;Y.!s !pD@rfpcLqrDCd+޷DP^+J2Ra7RJe2{{W,@?Мζcۢ&32=[FRZI"\'|8o>hqeT?y 'FfK̰H0,w <,%ڀ[jq\"mG`!K|w*P3w=DJCj~Cd0zLP"XҨvs8Ǡ;##!GxN`F%9~ڨSE4sȰmHbJQeo<1S~̡]N͏~xI2eXjWZ--hܶ1KK:ۆ3b|Y+4+$( &bI$ɒG$$X3EW X̜qFԢvd$Tme7JR L &2"Rlch8{у2Yb%d4T9m^i_;Rd!13QlWkG:oqيv-&M~IG'obpkuc!Ј1IU K|P1cJz=kHTa jܥ2;,"xbR~c4!eH&V0tN@r LuNF*)6[JC4ٽ:xO1?Ƥc-m9=,Ns2 ]V٥6ސVHCwQשs1a7 G`4M[cܷc&\KUtXdVvW2; HZ_0D`̱;P-{|&Ujz;nqu+6^; M,Kp$LS֋m-hlJ,J;ICK @5htK gŸ0U-Bin74_c҈Cg=h]j:d@kyk9Hr$rWIw`W! Y|wrsD yf:er,T:/;r iZT\Kd[,,$;v0R5zOw+vqrc$*WR},1JQb,n7O]r]@Н?ORU,I4wayU~zXWpez )YO.ˌdIY+G,w|e V8H:oj~8')1vS,1{5fb{0/)TspK6H [>˅lI=lFS8ǿ״\bѭraJZ/SZiəg"fT6aP BkO\\y"zkNhpm;?W)!L]omʎFBkE bo2*4VlS4o2~-h=Ԋ41%ZPp+0QPb!/C&TufpO;  08G6f. ϷgsWV裸C}2VWE4s =GI$LBS56k{=f5MrSZ4eJX׏rąNZ[\H/42@$fh8*T2'V?:wǩƳ>EzΌ!K`| {q·y%J&`ճ>MUN(DzE:) L}L~-OD1)7QRA}($OIg\ܟ^# E*]@i.,],)| ZÔ)s21EHgeM̯ʶK cFc%x*S %03Tc Mxg`V9)ᄀᰄEd.тH02dpy=/ Kbg(r{s)ς7>)wu@y"zڱh2go'S 9]S2+7 Ax;$3"SucZ wv魽2m3==,s+J$P2,B0/,<:$T$PtllgAr_'{QM$ab"DI~E2"7[!Xc Twu_^JeakRSzL,r`[_[ξTyDHc 9u݀& u(7<|r'G~&m 1?Z0A%FMRK7>̐el_zfWZd;cv->_$"yNS=&cƞc7 LX70mY2ĢCqDǎK ;uS6Ck2{VUU5e^{8PAV;٦J%}gΝlz6?֗1{݀jГ_ :N_v9_r1.8H3µ젵['Yb[@\iueJkί}>[l_]wv E_5e>1I铩~Xc~6W9$j"1ڄ\'TsmW05k+NsDFfԁ}|S"SZ@WV"fkjkw:\WU:Z!nfL P1=q.ГO0^]qrl,`gGLT5w3QRdj9J|d->l#XOF4 4''ůn~ѵLE}2 vcG;*8tbxU&#d帏T_0pV&v<>,w1W]4;x8XmTo|*tP}Uso#qJvڏT$FBLa?3sn9/MXnp[B4EmwhmƪGjo/̬{v_'=b3krsMFo}՘r>܎uHԸ`bo|>z)$Glp,11C&|n6-OŒ$S yY:˞y \bcxH`lx29]$ΚtLz}A0a vew.W~5M= ')kEKI;#gU%|7-Z9s&URv^(~ | ݑ$Lɒ:w+hVٹQ<ߩi\ǂ|8 U4j -L]3;,%ГɰÐ,&J12XjH;؋Vԣzc zpxH~ vY]v@ ٽI_LŇ8ǭs$5y 7F;2d4 k۴Ub1oI!87xj)vjdDgQmbKʡJ{6 ǫ` 7,yX]65FHf,CۥBbz4N'!C.@\x*hbL8X=uкg.zrn :z^'Sf6xCYmefzʟb2x?Н[8%ǰ~5?/401P,Ijt@뫾Wa(n{J2R7 ghAxMw/nO&f+b@X}];gJs ᦘX$@LDdd\3Es@suh6R&eG;W4CΡ].VZmv2c,Ӄd:#SKZq0R#!h)?uf1d>1sl(y =_CUIGS_' ϠF]c:g@CugN4O=ldQ3>Ze~ #^ξ51x竇LJJR3i (F^p"[X b=?FמBU͈I}kV켜1OB=b׳J}(,?W`mġR&ZLȐAs.X%n)~gi1ǻe]Iqˇ`p˲%\(ԃ; gCccWaFxTI mjO -\[Kr,R.i D(a1trRHdcmR6B+~24>I"zQL0OvYsd;Y̓̎nYUnJanyGco>B_?X«l8Qh#x]>[]\Φ?7iwg54 2CGˌU 0`SM:~nmì|ЌqqFO=%o%I!fGhLtNp@,a1)ɖ݄12e$Z)HUPc/]dOyt8i;eF[TEԀ)b.0;#5|ΩItZp'2ItTYf!p&`e^ w?x@t SW_2?pNzl;eT2 >dVI!q36S,^Hib1R.!>-7bKd %)3U8 Jd tˌVW42µ3a_HfΦhe[&"m 9 x|mZdt4%_$?[9ҬpI gYG?G՝ti T6I+}cU@M޶9 vǍߎYj@xʌH͞eξTէx]he"`\"J"7=2OD^Ҿd K`söqqg.5K9H~aƣy'oKk}9__f wdif)`ʌ*3Qf9tՇ9̰beV LKk: S'E$Xz9q[o&2v?jf6_PB'wXttcavLbYem^{6.ˁ=+Oqyk2PFr6Rt`,X=,CɑFf 9%vri 523Z!fZ0+ ycLF.>ꇺ,m6I{Y˥)2ex̸:\펛:Ì|2-?D)rJt{*A{ocTwzKFPFm@G^x\@2%nݡ03cCǨeP2bCf0U:%PI1crycCm,;*놄6j0[2oGL6c(eyKyeqNI `,x Js !k'$GT~%"T`;umZ?g͌gPcp/2NʄZkYH&6vJ`" J1 &.޻p-sL nPD]!yEф)@TffHk e+utT8G0XK:9 reMQ~id\RlLfUp!PNz]ـ%! 7ˍL*\* S7k ĥAޑ0V_%D>[\wUL#`'h#E7S&ڱ3dafc=+SB2x`".&/{f憯,L37A&壙SQo *0H+w˗ۑ˼)eb8DB< ctO&Θ8qhw1%K(t.DQ9%\I$v `iZ\3EVjEX &< zt/<£ԉb#v[r@ e9B|b)p"v^Խi$qxGR]{7hb!A".Cj!Gãos9s4J\4$E` z-3#=/ž# ̈Xܯ_JWV֜h ]odr\z#=typm/70?:i0@/Js2†- jnyezq|-dx9y`w9FآՂ[|~З lOO5%E\^^GUhi?R}c0~E3'Є痸!¯$:lz&׺+E3[T248ӊJI6瘦+A2#Mw!5Tp)ԛsta 2C^7]˯#s{30役Ř2If?B(V#,oy{~07r-!]MFdiΤ{H7`/yѲ=f"#ϐw\WΜG_kM)oʐ+tkYMaXaKcw笻ʻ8p6zѹ-hhP?xG JrI`a2')Jf.<`nD"߅?[3|Zu٥m85AKtK^z Dߔe3#-#M8reMpND8+ IDAT묈c.sx3-r <9P߅nc!S-nF=9K-'kNW8ѻ̭E?|WTp#?AjS4[i`=~3^ Jsx]-` [?zfd_'7^k.^^QS+!ZA d KLVgqH:&Ŝݘݿm-0Jd4;okzj0 [㋌1\2`-k~4ֆuD*9 w; U/S`)!)Oy$B:i0Ҍu ,؛ q)O`(e̞?@cg!k<.#p>Ĕy7ƜdCg>5AL! ^Xvp2})׊z 7;-8;Ry^"o }#ZۑS2\oBqZ/2eS&h7z}s˵;?S6ׁr<6ی0/b[Wg8 9ߏ_ZV26J+vK,xb1Ƒ .KB E.'%:` mDȥi{.NjP*:59K@"5M`bAXN=d< 23smKQjP 4-q\ٲv䖞k.`_{1' cpc< \fإd%Si85B,`1#xLeRPKW+?G엘+4u,邍8|7_ F[|sJm 5]>FēATgEO/SwZi>[./=SJpwԂ~j[fYY5}3CWPY2\Y^q=ěɔh40L̟.m_Me1)"pSoJq2tӤ>i/.h;մΖ5c|C nTԌ[>ÛF{[f&M*-yghiTYo ش6F,JXSCYt2MY c-jnH(i$g{~(tnI!_CK`i]bc\>_ NLY *@nv<>o֦a+\ru\, ӘSI_'oilUGW&F8]@~3fKjLo0捭FFʖڋkn_3JS1L MAktt}97=o FA%N3,6j3kEߣ  %CySΪɧx3@Sjn鳹ÌaJvNbV{+8+Z/Eŗtf۞!ٓz]> i%`=&xxf3o>9s+ŀEJ.b8Ȕp7ƴf*({4$ۂtrs$Ks*6‰K=-{ӭǘ]frBAkDxZiLY f>n smh9 6TE7'J!\AZ]$YwnX?Tg7~K' O8$ pQ8@ť y?Mq;Sp> طYsڭ4Oذ͎Fs ) KO*)*M@»pR;j2oZhL!x[Z.3cfͭ afCL`%D.Sі4puQݒ2^@'W[;^"r_O/ Qʓ{n)\uYrssČWNJ&٘E{`O=|% iYbYʠԁe.'SyEz"LfkpD~. U"0FRaCoEt!ZNU.s\Z<̅Za;i]5rZ$,Gaٹ)۷|IFɃiħ~x\>۠3WE1!O'E)څ C5%rKt^U_XG0E:N,sQ-%ى%̪eUe5`a %9$IK`SgqӬSKV(ʡ]ZaXIZhPp蓥'sjŻ zdЩi(TΚ[Z3u&LgpC0Ym/bk~Ǘ6:–:V!>Gťە:Ѭau!ex=?c$AmnEd7Љ(q<ӱ!6ZP+_x.\#''*klϑF9v)s `]tN!݊u~}z}LEZAd3ϜN_dDsyX 9IDx <5S0钽<>Sft-S!?&Fx 'q gͬ</Ėfc 0-4ŕ\L) snYml]cnjKO}-\(rx9\{]Fjͤ [$<(w0*!mL_k;%W%[)3zզ˼ˇ4\r{9.9<732o !뺬¢7s< !-4MM,i? G@O|J[xJ l@g ll1ڂp-Mˌx`:G`Ys즘Y܇m_Q*cBp$?TMHngJhV=v#@ԑr5E{-z(aWVkr\RP{6]FBϻn{k&Ń Kns4,q*OOGgy m1ɱfyozף,#E 8%i }.b \2pM r21p8'1~]幷2̵jfHK){]ũ"xKV˗[;wa\A`@xn>S ęr!$ʾP߻/_dZ^{]:TG 3g!'w/.O3@B'Mҫ%I6B:21#7T>nWFA[t3$RZ%O4is;N GYs8o x $5`{}OI:b}RaE )f]B'3bRzs[r(d"ίPciJ;9r/ *DK]q:V+W{iz4-})t8Fe#O;p$J֓iS+ rQsq1-[k0k P`j}q22m}k/t<9L'0h U%L!)pj[192IΠ!}-  [f5/vp%N  !@pgULc`R*"9!sQZYAN d/Ldְ ֖-L+W4f2 q1s! `LUYZl90"kkt6ce\N{PO5t| B`C :_v'ZЁO ,p̍W@yhmYzRXv-vMz[5IUrX˒[*@H.t4-a8 l\h˺z%u 2zUIǡVjL<oL4b(e4Q;ûh53㘵E+OTq`Vk1Y ;)eߢAԴ#*1%fc[v##_ן0XHYV9.=ڀ&ǂr`KY`Z}MYKk?Z/*kڗs=dK+{Y8L''*@ݚ ,,.0Y$r6˙3zq;;3d7פS:,8=w\d8Ɗ8Wk2#gV|4Jd0N. TZyЊ8 ݲN5k-ϹҙyRjJIK;ǙfXmJkaS_w,;@s5sX* jnb+*Hͧv[} /փh9'7L X9s(ۢ2*'aXLlBM (GK7Mo$,Z&S[\iX'm(YG.N5qNDGu[ֲ5tF]܎4(!9}U|EW~v.9㠀lSCr7Rbb&ko (É[YL ms*]:<;O<$Ip;!Y.7!]}9ݿRR2$,ɊMP0>I@$#?c3}6 )n0OU5R(U>#@jPe 'r10Ck5~x45sYq[jzT\:9NCDz=Sᄮ>#╀Sn? խVםxbn=^6(*)q4fft` :<箳Cc5Sc9i!Tۍ~3 g5gi5e90t5+$r-4Ey87}e o]U<=bnf]S%yI.=U|DPw(/0 jv|t$QvRש~MNt9NJe* 7vZoa?< L>Mй̸Ԭ_J:'~mJ(3&X+3U]a14{L|vgmDKuj624XȔV:E*#e5' 3}% ecI{jm+͈S]3)1O5qYWqƘhh}W/"qgk.kk#uIĦ$dď}&*^ABܶ ԭQ U\ʁeA!(cL\H$[&pjecp8苇c;A499e$XbM}f#Όs.mܚzt,' )LJ͒ts=Kq)t%*Q_%Hw"_gقÍ!u2?d,dk ,J9 gdZ'P^d7h+`x~:$G;?`"0bw = M+!+L*7׮:j%YPsjtn H1ٖPyt"5E'EůIWi\vytVˬ.m(ͻ!9!wREWșO!S˟ ӕ~| ,Onx;RN2W"S6O4\sO}hv&92ѵŢe tSdxD.m<^{OVO]|5w qvN^q1#;ι `hPw2&!BEfSj4`Pv r+-,aq'سvL cB+eym)ʉ% 0`Վ,a E 4NV5~REzVnl[KVYbs2%pcEb -a3,ӂ(;(XYzv Ye?Z&j{#˒\S4q eœ@:)Jפ4%(ѭuḰx6nZp/8niW@ՈV Ns Hܺve<vNi-|^"4MczvLZJ@pby tx?h^Q&5$cUex*900;c2 RQrAGAO,ЀGdK*s%xmj(ާ`r08D= Km =8,M4HbS 2%y᷾WO7Ev ,S*6\QrF#Wjg[t˂vj4J6g|d\3W08>˲()ϡo@\kVd\>8o8̺#2<>XӷO1"5deִy1J)]ƭ} IN9U5&³OaY%5NrOP4t6<\PqXdnYFʸ,iVoU;>7a=5C̰$̓A8%c: Г&xt/9wCk{_3|m8Imܴ1@5aQz8T (5 㾠/DEvacJ8 TK}% z& a}P9*5 {\`uSF͙CdGS^.i\8~xk-]3-1Ihg]Fpxez3"19]斫pW 7A-V*UadMl}Ē['np{Ͽ3zVׁTW=T֌>FXLUwz=oPGgr\0je-ZoӋNi֋TˊͲ1n \1r\?AByOUn{EriZ0| f*`zd圐\Wo<q%-*.Ve, 疶ú\'L~{CWٖDXJ֤G`T1m.XJᲭ,1JsmkX +zD❣v㕗U/OSpQR15\w?C::Ɋ ,Iu{ kr8CJ`Pv-(DZ'PwA7 uԇ!.|ˇH&cLc2xavhsZbb&QȤxR'E5kLxs.$^ ֆk+T~}-6[vXט6H@x~bFqq}1xbg6 Msf+^a^g 5/ֺ-24ؑKK%<7|o馹4wvKȴY-g@ 0YHfXp6vDhh-̱\rY-!KGI]f=d_0/m,?E5۰Lx1_Õ;K'Y \Ӗ^ɜl֍VZX2W=˲xPa$8ƥ7`@^[d[EHms$ȒVqAU[xC\2em"g_XqJqE? J#1Ӽ^fD +}Ӑj3VR|F[۟VN4G-=oC/CX6ہ4]ϻ8? L/6i-R66ƒFI fm5SjO@uUf|F$a tu_|uǡ,~He1Y?08=2ʾݓ FwZipk|RZ҅c}sl fd(_>Ё5<8WO+Pd@ K@)G}lY1Kz¬R]kԾWwz'%tO\Gr@#ǕЍ}s0;i@_#_1ئ5?~stsliiek(JmOkEsaj艎 .@4uT4(JhpdAG9 r$VQjԋ^'eM'-QlLaO|/3kh?{JONx-3S~Q|`ْ2^ rh֤n%P"SJs咽?008;^q';pZ;$,::| ӜrnVz23kXJkOk5uY`?`שOV4/lt-OLR\ $  R=WRۈr@32Y{ĻqVʊأ6aU;hً4Qn>gw2uMt~Tٴ $}`~ OxX,qdI|jo+H'Ө}R̡m^spM(֖_#iۇLz&LC`|7`kҌֲ's$`DLK[!]A9O߯d$-G=fPVl)#Ȁ0~'!5cm_0s.dt:@I9:ҕ/Dڤ[-@9 OCZaveo-l& D}Y>f(:+SÍ6D Di;߷3XpG;_HTZ Ҷ"fl~&5r"r𳰻9l5.RT#)m=JΡk'iN$fFAO_BVک5_b nIh,JK:fz4$[7,,3Pk+nf>ƅ)=VHrzQuT-K2?7pjr6K*P`g 6@,_,w72s0%'MG#Q0bfƁp '΂] @Gv AFТ .O\<5kϨk k%b tpXZ.xL2=$61s= Yrۓ\gr^:18F$U(+@ib&}rL9XrrԶ (#‹zJ27뮯D%zKcܱ}i% Fnrлެ4E,״n~>Yh[=ylxzjAkZu 2-]--%z52C~6rPTqG) |VY?"Whgr# V(ڽ0}d[<;A4X[*ԦӢmris+z%j eTe\yq/4g@l9Py84&LjR4"Z.gq\~=<#TלItnj_ 2ƜJ=-[ kF‹][ۀ~9@8: b2WxOo+M #rq# %c"KfOio^};8:l] r;B6~6Aě{"n>Gb=+9 =!IJa 6M)pK?kz!kڟrns-n"¿`¯Z E4 ][z 9vtXA2=  db1rUP7u0\&ՀSBJ/g >~X8gM}F~ $P`DixV? ƏyL c lps9,#+1 ڹU=diר?.?[1IMuB;{rǝ3/V1,ͷX.IO& Jm2EO"L] g!|..gY/8(d&qrHe0ҹa9:ꍍ} 87]o7@ʶ5}qV#n٧mmtDy 3~{|K>j4I65e4_tx"f&OLӉ[e\eA?rOww“W,S2]^ItiTdq^#V\Ys2~-ě67SzJߪ+#GMFCh5'|Y9s.4'!x:ћ)WnC7@ Vjz}?Pk)??kLZm1:A[I2!QTw>Srg+PkKtrD'|D>"w>i%ҎJI=PYV+ɠ8YL9!Kpˑ'z|SB,>gaLˊT#fu&⵵-I3<>d<=m~3mh 2SjCzQ? Ŵ9ϩ/i{J䵆,q-5m&ŐjC{;[KPe]J P,%Ihpr.gSq꫁q(dJlE9i"Xb.:-Jt'72}p?W<`h.486z ^-8wMKoe_˰k#m'T CLЦ?)q_o={"6FB3uܛ309g'P`\ u-vz{WF:PZ&IyF`0s6z! ]/Bp-k0p 6&[,gvjaL78/gm&(;1sZo &[vSWu,8 {<{wV\޲a,3e% @ 瑶R.+kk@||̵幃 j\h0;8e9.Y}lO< `0쫀DK˪Zy<&oR?I"l9CxqҺϚ0Ӱn} s2l]TaZ Un/?; K?Ӭ .^A&("(=`(~(:s4Ig+*22OIKY_/9|WGDrx(Dg_,׹ W<o2 4-2y {YU. kٝk,ۢZ\7wOǝlnW'!0*<6KiJZVVM 7x :*ChPR(kըrgAnZ~k`$KhE~i6'ˇRor$ܳ `G 4ׄ-*D=.h:,Xsg\j= j2\g%4nmǻpڐf<2P1M*<JB)]FF9\ʲc'Vz Fi@4Dݱ?5\+o6!,LvaMB'f9u(5DD3%;;s1s׸LƄO[|)[m`2/@~X0Kt!?ρr栯 \ۿN;# v0Р&BE/>ץbn4)j )RE+oL4R׌Wǒޏ/Gͻ-Ci\M,19/p6Ӕݴt:"iWsbg<_k]+)|Yr,|FGÇ(.ѭ.Ũ#3Qrǜ+]Qbpjz*¨/$ܳO3vdP\B%('e&~%nA&ˇx0lf6<"%:4JN4nx >!"Ias˒*g~»aFZLߧ<ϟF3+=xz*FIȋxoC?sw94K]zk=SVuف#+"t<ҵ{rJ:V;"5h9L\ЬCT7kd)U I_%c.5K{ ?r^"T|;<0Ktu,z _N39gU4Oxux ps΋0ʭ`c%%;;K4:A:~L;q684ԋ$X+ _9 0>i3B;U^G@M@:oF,Zx ͭi:ʝ% 6=ԩo#et?.^"Z{OlvG[55""و#x RZ)EXr/8<rNղNdXj#pif@9dP/\i:1s*=H6R?ykΝedN*f-sYwGq]\?gl >lgO:u}Vo9_ߋg,=^O0~-`˔ e IDAT'v/4LA-kz~izw^D0tBA,o#{7SDa֔P+P R]oi{t@vB@U^oÖ6oeC4PLj%uҟ85l efixg͋_;A]5Ds#S_;ܱҵ \ {/JA0ƃ@!Li 4:KgpZq4k.xIk03eeد %&8eF%09b?D^"rYZb<씐8s#}/8p#xiY'6QńŅt41ۯW5MgxG^fkr0__E+k`^^hs #gd˒neVtL?.6Sezl1;mH$@5d"[qs@KԚs.2~dg M KaKn@x c-m@k'cr;"x5>YKM qey V _OHH\j^`9^ x_G=~ =~8'@#Z@ZC,K! |{÷z%y$uYR4qd, J8MD#Ha!]FHt50ɀxfK=52\gZHvYv^̏w!45;d Μ9GMl԰qf pר {faZfI'!qx__[-GR~b¯aߥ ~ ^qz݅p հ 4:b4=4W)甙=t_Ǹr\zQy c2nϣk}*ҨA'cv i=M'tId,gƭ)SˌQ`y8:<r]4hYjI@# l-<,?Bq1Z0\k[vDÛp::2i)ڳ4Bk\Whj t=hM96I.ב/44 O\[29Ygͦ 9P50y4UdcƝ0TPsvN1R^V7פ\)vR)oBkel?/43uǟѱ^^CdnVL'S1aX'F ‡ĸ oBD (%B$5dߐ07^5rEWW6@#,D85^x/hߦ ~{|z<dg!eҺV.[wx;Xe`ٹpeIp+,v !$nkDir*V&zrsPtO<*JmMW|qњ#I;O=e:]lTEc7tt ר@s7"{f" xգ9p=3N젛oZ.,A!{0Od1S i8 0KRƍ'3`]]:0}nfP׭[@gÅ8g0[EM!㸿0Ьii\Rn!z:7S3рrxQيu$ąuu_}wcr|dl279,t)u'yw]w4!^ﵙ?&{+f-DNXp8 [e:a\dpchT&?ҭ pi^fp.X4} Lu` ac -aa.cdtʻǼ =u|NޕAT tH{>i++$ X]i~k08C mENJH c+n{t3== \O73wPPvk%84]xN}! 0q9jF_~|Z}GN\ "Dg,:[gpu&Sz??a(P R^DK3&-S< 7?,{|? #eۭK*5PB@kzgk?@bV+@Mm2r tJ=N=qR#r]3p7P/'T$ rsxhJѲc㿉15O._,[֛/GA3zBl"S dJes287B/蛋 <1Z*|O5*,'7 hsސ$S|&\ g|oyPapd9 G6hi[873#rB|0[e$- 1;6B 8G|1k}S{Nf=06 Ig?qSn\6o`d{dDx+22FeRz}f 1%2` 8 wK.dlFԹa>v[+eSC^yc^¥ h怓* "kPjf*' @rHٿ)g[c궗DG ڨ8=flҡf:GόGs*GNVG& Z# ~,4TXp;psBџ>{Ɂ k:`v=BԮATjF.FxHmr  5 FIc@YnWb lJ7mvL O}E M?u: ^.R nI,Dg!<>D;0D8yRiI*})v0V3%J*Gj̸?{={]^iyԛi>MIhs8@G4[mC%{l\ }PƏSGuڂƳCVAPz6eϦic+x$J󤒍=\+uڀ[꜖k av+ДFg:3r1om,"yҲLNq rdG=g48i1`I S0{7x %kpqTz0iD +2Gi),gEO'Gawv T6׭/a:Pu`x 2Jw,Qƿ )tN-҉ t|Rƹ%uaK>fm\%(B:e m یd6)s9SvKm)N _M*'\-k-ٵss~L6x\2p:RE᚛nQ2G`մ\{1k$Wqӳ;g?AZeaXf` ͧg ʊpP(4qo,er;$9n$l-xs͢ܠ{PeWY2_+,;(Yb,upnKfE'~ods;gaʹӥ,M;"?ͧHC6LL01pA4RNiJt[u,AP-5SMr1Rg,+T-{ "D^sq%4kpse>UpT S*9^dosHY|N6)&n}TΎ@'a$Waħj܎ҾV|d?3Ree7D0F|\-ip AwnbNg#FP=%ԡblͱs^s;ׂen{/,Q0Rx80&M1M Io@w iOJD!XZFwL)j-r,z/r$sna7M y :MrV89opjh%QtX(ɀ%NhC@RC) X&U߈܃>؋Nn?{za#rۓ%2;PumuE-Xb52]p^kfԒrgόyxcG hr߉{: ҉,G$4Iy P {BzDJЬnR4^dl  Uf{XeY7P.y߰r%Ĥ)MsskZQc-R3jei}֚kx%`ne-PnR'*s{|Vk0yT52Ҕ"*eYN#0Od/\,ʋ^Od|q3cpK̺,#z& 8:.HeCpaG]߁hbbn\NSD̫,W[ۭ51kl\9-@<`}PƋ[5J2;D }.PxC2T=$72-[lc=WeC%tJ#[aENb e5>^B+Q8jiq-8ҺxŒ3 F\9g=`nc0bٚ,sru2PXn;#]@rb(&{|^?*Фe g׉-V7{aHjcg+!9!$N]5x?D#&Ɛj=%m K ֚YYvsss7)=nT? (C O<0ı]pRrW) d)!M7zd( 4'-PW~.`fXmJ#yhlPڣl?L8@S^{Krr'1<n{""i:isy;cQ-!VR`8֚0O `hU,%ڇfGDx#/@( mA#^0;QnDz_! ]C3d%|g>L䈻3t ?{kY={s]]3=όc{ l!8\!YP"$? #c;1cb㹸twU˾cwSU]'sٗ^Y7<ܟB\ KG`@ UB a&d}5\9#2]uR_9|D֩0 bR/]Wꐧ(y9cssҗF-Sz;,Lj4W 4\ s)FtFÂ/١]Cٝ"^HBMʸ/ϙ q$ۉ a^/HQCeNB!ACܮlVLrΰk9׏ӠrPٳ/`\45Ss} hj=e/:]E1۰|HP.KuҺlo+@t#>+\ׂen1,%c >0|\nD ݧJxPq&"03!;*>@mfm132}TwIUDN_Ջ "J\*P協ݱic;(-|ۻ=XEepҪK9*0L<>no6j| SyPڳ ae&⏲kW@)$:) IDAT \I2,SvSDRb[l.d03}/Q\)!>ATmui0S3$-R0 q}/K1J'OGJZqמ.К4S\\ ,A);l͹Rn.5S3)[f+q^8)k 4XQ I.y+d9$zH}x5xf,2K \}q204W^9҈LY+&Zn6KnT0;O૥'-0blHtNT:G䁦@-SX~xآ0eek" qKa5c,7#%׭e2=p8.8dI}`l& ;#HDB%+4ZRWsC|L?YLz26ܮ6^D]5|>"|y(Ȕ 9%Ovar omކm@'!rcq ,MIYb8`@tVH{xF-Y RB}`뺀f0;x&k uZPê9q |FI8=}Rؗ_@ޝ ~h%$DE%VH uNY'm[n+]q.CEYٜvEcWI݆w2|v2]68:&a>k˥iv''@6n]3[ H+tq34)S(cݚd,#4dzxrDp'$<וé)7gFH|ق^/fcZc`8-u#0xll{H'HPh_ZF2ϭG޶?rwkzt@+盻׫1l-6"IR?OU_WL"V_ z+)%Gj |+nvpUJoܢ].vy]1lꨀ)il?bciT ]㰔6uln:qc-4`.1FmKtH3ɱVӅtuB]ٍ:HJ Ӌ'*N]fu-MYxVf7( 0e*.@}~ܽ V_ir;[" *#ɭaB׍\6=Xx[ &{Ϗu4C>f,a=vU@,QVuI:uSx&aXT* o'EJOעۮY_ٜ*gjQ)>+5^ {rI6ݻnzU{^:?Jx_Lvҍ\]Hc6B7m)d{am9pؚ˵>U^87!TͰ J- V- _09#;&$Y.}NT/'aX?o޺`3wmن3cp).xl0wu @/3ta5ls+eIg)6y"*G:tUbXBbOs}tiDT()#ү<|i(t0f+)e*UAʇdTYX>°KaB]B 6Iۗa17f!B1?l]cD 0@HD'  ۮg1V]axaڀ}(aYh+:zf8Ǯ Æ8kZlc+^O6(6tjз#=Ȕ/Gjh <\biϪŁ&͈ r.a#YɗN2/S{>s]c55d*b`[v%l͐c8<q?ԁт `T=abاNFTF~h6۪cZ5ۥea9@R㺋|(}(9f&B`dˆNNj ]VHuˑ{kHᰡ+9հ Q'qMUju#z[n){BO̻Iq`$1#;k Aǘ0P8uEʱCݵ'[e8)-s8Us&@ DWyA^+{V1PVGsb)`Lpt'y}Q'XυI}}[ҹU/n1Qc؞d0OaBP>aZz: nnB # =p2zK o LkW O{6-6`h[%8,DFq[ ӥU'/^*?d E׵Jg$)t ynV#~8\MYi$YC|;ꑵ'b@@N9 kPѣ!^#q+oq8G\t%P@JD`Ҿ`kL@7Н[ +{ eйxXbXb6v-" ~i2w"6T1c= jEگ:H%vxDg ~|V:So렙U_ <1JHPtLrǯ,p$٬/5mB]cMMRlXI A, ${dpS!4I9xa"^ת`ӕFn=0בIﵒ̌X! [ѪP;h>G34.L Z f)d-DG31 qu~ # ޫMxw:ˁ7Œ VBbڡrS_R:/+TkX* nj3s }Tj Cۊ ߕs#s9eM;'>eGh>`N`#4w0«29( ՊIQa8JֱJꩃd |P9X7|c B}Syykb^T! XE:ǪtSEgdzZÚÙ:E]Zt)D=$NFrBfúV&9H%y zWJp9rn uB͔o`VMvȓx u.Dt4 0Xo`ʪ;Bx߮Ԯuwl̝ǜ0P(__ijNJ6sPe4;6pWFȥxcdt !u)fxuZf5Ep@"Cu#0T_׫x3մ8w/% 0R$NA9b6[R&SsPk2~(M# s4 X=Vw&b K9yZ0GB@AkRfi  9wp LkLEJ)fO+}!N*y/1Q&ByRkIzo = 1PFWa6fT U|z8+ "!@v@C65}q] v2\3NY 8/z9Ɛ)Ӂs[L[֓8L1klJÑ2k}gMs2 R#)bSN5% ;&B16 H ߍi.dKͺ2}}$}x 7Gv_>kq8Fwa ~@C39NJa pX.Zhx$Zז4תpYab=H $Ι :ҕOw>l7(-V`.L0 .輗k!u2 k=lVǮޝ!1KcdLSnX&KP ٨m(<2]._b6" 4r5pe|_ 44˜qX#r**Qp'c5wO8pޚRal+M8||V -'O3倭f>'0yŗ<z]m-] "+FG&2"!]R ! m¢ =WPnLqX.g;tLlY.`T j3, ѝciEhN_C>ӍI;C[*!#jO=UZcQI.*o"ܴ7:=NRpE#.Xw*A)]/wkqZ-4BX iM9 <}bBϑsutC7`w! <~{fÚBI5#SZC|ckc>ՈxLgQ!='Enhm[  uqtv}MgnuYoz0uͪ禗ҵlw~_?ת E8jZh^4Be$ ),P9U2(RZsqBx#TW+/|$ͬ}l5Tm#xUo8̟rZF26) VdT{+.P<>xSz&w&ԂлԶK=2gʒ!`L*M5iB2uNAғԲ(ƤO#Q`l&[۱tH U*uB 39mItGZL4]Z u+'C:*XcV99_s>^w6]- 4AWM,c X _r!QPy[VxV$JJHZH{w;?" 䉨ۛ龋# 9+/:)ṱ@ Vb>`pzf+|JR'+ƾqq!sL ^/w[ /?FԅB65c@~_ RHJipZq$DZ%e6[*-g˱ {8l(QrKQ%d0Gn16`@}W k ΁X 7VX.q΅ݪư {{FJi܉a ䷔H]{9'kb<ґs,9?s;°L#;_ֽ3 zY2ShY\1LժS+ȍRV=c.a3 KO: a_ K𗝍$6l0z&Q _|l=5񁩏 FAYIY0-0Y%;2[b8obR% lE _n+b84k[y7!!o1L kb<%-.0u+G.GlY/طzs)Hnl1=n˚p)GnWN 5gP/t: k!a#de%w* VZdFyil}u ȁ}0 JbV$tY2Rmìa{0Du!e ],)k-u!S/p{a\P}U\Ӛ@)r?NeWmP2N'g4 b8(F&-##ێt8q.o-O2 0ў l0l+0,i\w%;L5+us?\Gu@S=:#gUxpUxcsTʎD2 ǯ*pXO.s,l/gY ;+*-)6R @ʂAW#s] GHkc` 8S}, (l'R`+ &>#5KvѴm_ƺ|d A:P ;9VqaH[ 9#IY ۢUODeo'WMh*g&N~Xc:N690Iݥ" r>{m.o-<ۇاAG6۹n1,"8>\bc){E&om|3dݼgӚ@ڃgnlB(/Hx CZmшSHp@[ur;e)DFta'ޮ `%K%sl͠ai+@\ǔ 8U6#w%kt(qjJWlM@9 HpޗfdoBf%Ёh%|3`8ȥ.|dɠLtwI}rW }}4[F>I. ȼ&T#Y@YR`?G~.r^ pMWZMkSgC}ER:]JڱVdv}ZT0grp+eBZ;O\JI drun/Oһ |#[%x]LzÜR=\zʺtФaiM.0"t}Kqhє 6`vᕐ.1 Z j8/rDc:s"ާP\u\ ϕx3=u@l"u`QvWbȁk'гiM9\Br஥f2F&Myz3x$ ekX8?+ g,x9B`:`2`x&E#S}4 {.w_v 1`e/uy+ IO9+ih^]C׽*% r'LUH΁'7'4J<\n#0l]W+-Ag]U@\} `5l *,W5T}#+ Y?%< 4>U:B$'9kgkH^] BVl70,!V`y$Xt9ðH+rU>qq epPa8jB{ȉiNY~]>UA Q%suQbaQa V*byg}D&YMtSޑd#xiN908+%qLϗϵL+ #.X#w-w\V)+vI2U Sz z9R %ehN>=bWzu"%P4mXaБGed*6*kIz(rL9洦cR7H /=l5; R]f %#c5 ӚVR]Hx= NQ ERzvb[4c 2AӚ@sZOHI1:YYVF6I_RYܥ 5洞Q[!FRR96 YNkZӚִ5iMkZӚִ5iMkZӚִ5iMkZӚִ5iMkZӚִ5iMkZӚִ5iMkZӚִ5iMkZӚִ5iM_414yӚִ\SI#{i}L`ZEW|~n7=}M Ng z{9}}u8qlW?u3 4`r@0dMz!M&y> CX< H#X G$}hCDتWLkbz\ b\Qt+1GJ'МsrGr|Ho[j[y6Ŵ&МSbH\P-mai@U)ł}s&Mzsie˕@z 797G릒cRA{\@5 s=1Gn'@IN\&ȩIEVl{n*`{/ c"1  b`kHIO\dh_xBʔʱ4PIkRw*J )vlRiM0Xk2߉=&^nal1 Vԡ\LZ} ՟#1!1.1t 4ӈ"us1x g sC-ҁ#!eml{rXc]͑cR5ܗ@:99Xk"vc8T[Rۋ ͽ(\"(U]tvcJ6:9yӏgk@.ܟ>&p1LB&; u ?cۤǎ$7 4L=Q! $yc'i($Xnh_Z¸IL@B\ Cd *$?P_s%:j=גdh ?)BűA8Pj-91#")) h6)MibBj+|)I!v+X>Y el8.4H>6ƞ3pi1TF d4ھJAȸ) FK#7">Fh=S)F<_9|ǘyY[z߆Rdfy&:c6>#S+~S{|h>v2r3U8MYh>ҾIX*d01|JT _PkP%xޏ2/b>"<8'S7 *?W(xuQ}UMT`"UӼ12<*E=zc(SڡRĔ<~&XP"Czؘ\6bQPUSvALއ>T91Gf0ƺPUZ将X>!<_sl HGr(4f_;4 6M2Xj,2_LĦ/'O8绘 +R`S9`\0;":xrr,c-g}S6s#l/ӷSv{}l`i ThQ99tU+ }t`RF(5'fo@ǒC =B>1/b7b|6$_a[!D#^''8z\&Z}mZ&$~ %ǒSZjXkrl%u e]\PsFLdcrbMD};"r'O|3R ԡȴ)'al[&CHHTZƉـeM)B1OzQ0u5=Ao14yݘ4O] b$29z~̳unkS>4"R+s c<X"9N:V|0Vc7R0Y4 %fxN3h">rzسbL @4DϧL0M~cLd;>+8 A u= F^0%42dC ]rS!M> J/0X :~ 9bl @}'6 fi3؈Ikۦ".oLzU m#y Y>%s9a *GX\BL-SR~g r\V#G).*9{E@?Gr w!SaJiL@fx)Vn[eS`<1szBu-xnC*:xf- %-iK咅F(ZK_%Pj mF7SKƉb 0c2/ˌ5($ 5(i HWpĚH©DpOnh|@).޾HMGE#ލ%/4(ԍ)'ըH϶ .f&5#*,+s9-|Dh dܱ2x6ȯ>@Df BIqɶc&ӢYw `̖a X/ӅG()V+CT}Hxjn@,c}GiHc|&NXљ zmc씌-Y `eqOخwGko f{Uv'ؽ7`Ld,}D`]c;m]?vevjuf=cdzHFKM%‡R8rNi8dS4'7'/%}ǦE#昛*JY+heU#rINϯ @Hʛ-rHl?l;%?Æ *Z"ElzmfISut ˝mH|[ 2Ǐh>L ayI|~Jcf9 XܮwS`ܬ5lE,LQ)I"LDگpYvm]cD~3sf1UA'؇U&hHOsL;TTdnON>|J4NfۯJe0Qқf7?͠GSvsqJ2ȫ~l|ަq 3PSBW%6oS0w YE?}̑ӡ#4ϔfndA8P4PCmHx!IUAr26on]DQ[ovl>iH-͵O9E@0WEriŗ`_fݬz4%i2j zp4Sk $+BQdxjK7框yfgpMD\򱣣?jضfvuRzXk0F~@? !S{!;HJ]NdT~ﲵb]oxW25 HI2|L~fH30ͫNtb}MenlhoFylvOџk4icXe*PnИ!3{kurh5eK=*BQ`n[uA^=7lR'{ cx99`"2< 8y1ڍŭ?GEۦvzYV5ȠTP23zHP0Ŗר(/6_6L{ o3X6ܞPx珁]j +0Ri:@~N*2<"7H̜n8zŏYk7S/lmz&As#H)A3wSV(O"c}ozEq9 y!֚[9)IzN2cJG"`-9o*7+yyqr T?e fyZSpf)/'5:,bw!f=ͫc> I/5}R1P9oNYݶ0#*{ {uH I_e$USiLc@7ֵ=F>qJTO7~wQ~?5'x@vu: @(˿ViL)} bce+ gd}IU/][Nt{RVl`K ې#47x"S-?Esll4 m~C;yLn}cQ4>WfdS-ޡj?o/m['(uax)WpFpW 43Yfns/@qϙ iۤGcb[w7_)??~ݮCj/{o pқt~B2XA2-$OЭѯBzRu'vmǶ^ `*xWѱ*TJEY<@^ Ì"*sr;kդ+ w.fy'ެo!|P:C{~v}m8JKw IDATq)e91RB?+Ƃ92B>FS?뺃H|H ([*_7,_yN=ǰQOdyt *c,JdC"W Bsr^3qSV"1k4Ct`e,}uݾrAJ, ԩE,2YX %:L?/cqr]?W )f̎]=8ERG [iʑ@9X/\7<F89Gc\*3f:F~B`MzDMTd>usEh `w8sGM< 'Zt]vDs~]nJ!J1K-%@:nCQq,/w1@"^҈b5!9U| 1N߷iv:^j:3&MK'S7v<:qƸF9K!"_%Vߠ4w8>~/D?B1 e]E@sm1K-񪪂e ,C .B!K%"XIPzRJ*XAc Ѽ3_)nyKl[B}c6XVz-f Sx$5r*~|Cb&)C|kq޿OE2No,=\x 0@Cyt" 4hub> mjկK :tQBy[m/?wN="׭9MQ\sP7fJ1@5ɉh;?#9DcCmB2Da*Dɇ>gˣ'S|Kr`Z45`/GOvXUfo_GbꠏZ~˒ǐ(A!/5")4G(>$}TpdTT9\a{>?fi_&6Bls)s D9XPMxhVŇ>yw~Oroe;οܮQ{Dʷt)cUU9͂4e׺MK` v\Pƭ:޽Y;N)4$%3wpJ#$~8NY}*ʟk̝d)3`})*,xG!sY`9W 2c]LH(X:rWbȲ w;tr_,>3IзXP Co,0tp3a30Ew`c|T=dahS{#ߡKwyɖl HTa9gg@d{)3`\/C` 2oWJ7ܸꕏ<~Ϳl0 ,3k64w ;c,%`j9bGKQrɫSe f[W;JXXIigf"<% ٳU>$:@C9[|o[^FbnȺ8k&sG~j}$ds BBr:3'?d| Or1|r$DH?\u|-*W:Ց0f 0eǁX,0/o5|MْMm^Z u:׻;||c7n]IS_PH$utPc-DXFX!Gis<۞NnV9'k y 9-C.|M;Jk `ND?IBQPS1/o?7 u9]>].&'g(4iF0e"]蘥@w~٦ncyxiA׌*<.ǒL5fTGyC?A,` >Jn[R:2C5R⇂@i^d+v{qJNMc[,bcq&vIӊ$rW6MOw:[|΢duB^aOY's8t%" 0+XD!]j>}8 > ^F3$$vm ־i9P~u:RަϾͱ[$x~!idL"ީ@ 㣗^Yҟ>}F|^=ae !4.Rj8r&)L`nN`>>Nj~l]zA_S?u1,cM_?L-5XJ9nn|a{ ٟ=XPˡ4!o _vA%@2~>w, XDJ&g+;m0ÑlƜرqy^*j`<ی.A@d":y_TSNJ umvD|crY#}K'5hӁK7:>mq_ys$ RrNr! ݾוMT#K_-t d耠}Tx >LJ0"ੈzen^Ilbv4UH\  |;?q3ؙ JDC+`C%ݯo1 L)-l;tu-_>2CrAYcMvZ|Co%v5D )\4+hBX'y\JI"ɻ$}X%Q ?ނ7=Xz ĂC踏j:OG7jbJΧSS%R\Nˈc1&ghnjP $)f/ z<"d)n6?"* eXl[YîNv{`bd쑩希":|v@P#@ҵ@ (>0ֿS-Bfj.vjix gG``>vݘR:wǎ`LQ~Ye`{=i"32d)ݧ4DzS|_)[6I*/yFvͪ_`rO.j_GGe L,-[m;պ0BCQ;zp4{=Ю_f'k0bl}T4|}dA@I/@xӔ=Xx<%&^6L5U[7N# [K1T7#~c~LGc1}m$02Sz?y( {Xe ԰s`d}́0u[u%ɏ*~en=b).k7a bˌ +f\ U6`s$e*`׸#' p }:c@̇A+iG AX/O^o":v)}>t\N.cCYTq|WMs1.6 #<7m<(Vo8 jQCD'}Nɝbπl сF10}ȝ$ƿ摀YYl[|֞=|?wpJMhdV cˌ%[}kq:"dr9h/ހAmx#܃m28aFf:`}MDXySdC7P'7m/uJ+b0CI7qq]@}efubT7z_,34wH;'E1 2ȁ{Yw ݧ&" ȡ)E݊\K2Swnd{*Y|Ӿ Fۃ*Mngh]}+xι$]t}\F}~"A@ \R7wEƺGe/j*gnukεL 2gQO<-4} k}AmnVg=`~dGf,%2HXkquWOGTca%sdf&[?෩× xߍT@ѣ=&7 *1ֶC`F2R>AиKҞ8:{ USBFՠsa6}CIC:bZ1vB$6sK90PMzN=1M ʉy>0LՕ#<@7>s:ްRQ ]E<oN9\cKY"5`JYj/w-OLWD#p_BM $NCGS w95txGD( D2ulPÂ`XK0Co<=6=u24o7ffp@HDȵsxTDQO/ٹbmLߨ_}_2p6HvnאîFiˮES SN-5,>iqb?2xp 5`#—U1jq ?Z!1 Pa[ `8Ѥ}{|-ރac2(/AϗGJ X4 a܁pXf^Tl NJ[n&1'EDblؠ -OիS (RJO.o|?^(.=Ah e.Hz.'Ir1} ūmvewc׶{DLïםg$cU=?TAj{5`1138!7^>דYajJ[1ǁwL9j?"J 818X F'TFe OU7Y~ G#yضA:]#x{!!u7YX,.=N]&鋔nn;1 ,X^)Adv{fJN+Cy 0s{,b<$kxq;HH율Gy?Ma!IOOO/fUX3u*Xڹu@MƲ-S}c"OpG^pwiR&:gTgko;~h+tSvח Z"q`+?}n~xeaҠ20ReƷahEXzjSJ瀫;PJ  2Y"OE[TI s'8Y1m$l1tܔ7ME[H7'Ё]+ɭr7zL37*YR Qby$&cMq;<9?i'9m$܁ Z|~ز,}{u¦]B/Att-͚%Ɏ3ODݪBغ2 IDATbF.^(AOzғ^&5 IP9  A}Z~<9xʪ:o.q|}qď(}x?=ײ8E"7W+cר-mDD)ePIy 49 z֏ qPd2r)g-ǧFCģfL70̕P4ʊ!I1qM n5%13;H%ֈ?p8N>;]o$T2 g\8LXJbmȧ4KFbwT & bA4̳/xא*@|XlZnE:L鍹Z")Dm™MhuwDzK+ȕ`(6LKXenf){D%V?,0m[xk1?ȵ$[Ybp>~'^,N~KKGd.Pt`J;]%h 0S+8#/r@ ?n# mskG!+MQw>v4ɧ^9 ML?3v\"I}9;WwEI=4kN炯mnS [3@x"aIo燐Cn 0R! uS- Y:1"bstF^8e*>k۫)ŠYIA^Id N[#ৱt;ǙմML7&|.xvp{1{QÓ8>"CDAr8˕.5`pـJfs -BJ{to͓/X/Q{ܣA%Jb5,KV;!7ws=0o? çWBvl/ʦ4 Mɔ\Gx19Fڶ[FI0myLGdVPLIm2|Z\w9ޚfMQs1y3a a&C+yK q.h}@~ g"f,M9ڪ%%@;qGeҏz? @F%Xd:9|@BC5gP=uVP!fWfxY^CvT%~ KGߝK,ǘ3Kg(۴5nZ$rښOipߵqs?k:gbgJ6"ּW;>i[/WYZp5@J{gG}k?8$2Yn.y6QNͭejL4]]lqX$.%%Dz#c y?-y%ijLK+΍..q'C`~QB9 pij,e1~ bo A)?ZLX]8vqf XU>/>d4"i{8Kta95EgG7ܩԄ{|>d|,fo//f"ċ+ˉJnٽ0S]'bNl㈼?; ýtJjY8[ rk?O@60fw- E(P5i1;tx7vh@VǟG: ( jȕ16!A3l, g35Ɲ@ g_ptEϴs$=13=VqoΩɤt#z|( ϰBSׁ{g797AenQRLyֹNT!ю#~3Sl‘JFWU/ut7؇/18[繦o/;%B\)P Kf{~pa(,)#iVw^B{|:d#/ 8v}`L%s^cxuvp ؞.-齻0kqY0@Q<orsu䃽P ^O)6ҵ̸G-ncx%E5%[f|?Dt܈f)¯#?0j ^6a^b?dRN@:RhK\Az-WIiO!IA4fbPh{D_Px}*q{GzV#hT `8Lc8#>ݏ;#ͫf92sh{0rsm ^+!|[D>{5'S.' TZnFH""<izAy甴cG+cWC)^̣5ǧ4ZT[\#Y@53{TQ_uu %(gg_I=0A,#bߣ\7)dP"M)MSTLA @Z. gNn!>z\ nI{d)8_C`ԕ9揇tє+%&QgVS)?ob#FF5 t5hBZX?Mve 1PQ syT*uxÊr.&*Դy7ptND_N EdF\7#90MHtǏU1P}K)Qix7۔Z`9:aRv1zo) %uh8hٽv.Vw(.jzeΑj􌌭)͏GuE%' |1JO)eϡM>v4< \7WZDAj\s XzDͤy!x\pd2:Bo#c)̴qqE^ {QfFۤ<4}?:h8,Wg$.WH[b|Zeq5Fz`Ʒ#jmdv& Jcv5%J5n|" [-q!8&J:w6Ek5 ៌GdyRG,Tx\%b R"vi 7#~,Ks /2 5G 'w3naO\v2 @iyeR0pG%I!cD</(+RˣjGZsOAm5i'sjVj4 }1ejp.ʺ5/WϢ+ŵ:Aij'˺#h3ʒrr*j}5v \&> )_ :X="j߹FM8FoǴB&H[ =ZߥqݚZ%kiH3פK܇fXÍNNűs_դWyb3%7q}7*ہiR.NϛrŘ$h%/%1wO#:@W>r.E#%,(gҮ id+:B-Azcɡ/码?G u%ЮΡ}u>75/4K- 786OkX#辒`M9g&UݨA9ySy9)xf.{HiFS1rDyfѩD^dfFꔩǜ#- {B5CY5]<9 s$3> dP`z$= ( Qs shp t.W^~ CܸXtwV8\3OZ2{X q˅xcZ&U'-X(ktPK9v ^GM8eFz 1f4n)5PY$\crc+]ĊSt1S[Cwy5]#Bxd`wv lLAl%{?/eFZ1kq!q{sJ"*rDw/ daG<X֜Sw] @2dPos"4[ % w<n3~l̯d,JD3t#,,.s*3DA ZQM[5hk_ 3&3~Zз"]@" h=Eƶʓ\y-~?ۤw;^UÊS;k]s.9~؂4Lf^Lhi)BЂ A%(\jω2 8|FhVbx_'<{X{HYr26SOClRA#g)fmvJ$K, 2k 6KX$Ru/ܝ3v*j?UB@nעP?cqNl4m6(2|hpca!xmL~=n`D兜R<5{3d _42Lc J ̓InP9?>B l7JcIV.z%vkx?hl$!mG+1C}*--5DvÀj -m&4{}0>$E7hUBSeER mA#-sO˓lJH3RSTJ5`ۀqEvI:bΘCi*Rƥg%K noOMxUE~͚֦\]h9\tg)EF傁 yke|nm;W'AzlcTFH%z%xMkVk wm K5]N <*UXYT E@d g|hi8 LWT2X"Yt x#9G\LKWьj܂P>HN "Q8ߟ-uU}k(ٵ-A1 ID{DxQ.H~_qP:A$g =s5s'*RDcA1(2$XmMh&ͅ(f$Io"KN1rNͧDdw`Immq4g6+Uv#S sO7:x>JٱY5@ReRM[֬>}zL՗=w3Ձ5F! YF~U /Q%hFYPŃz^U~I)ӜG@)5^#{pẇ{%F^ύ1:S(cfؒGI͉. IDAT2bd6dCe_[TVj*d;g6xS3R_xtoTJ[I0un 3FeױfDÒAzqb\=G<_r 5Ű7'Qю9Ǯvgf*(q 9rC;ڙ~y!1KR 7tWji{=H{o>yq@x!qK6%{x>+ :gt2v ߪ3]z| vSJqΈG^AlzPrd,203d"{'*$T-j?`CV |xグw(d C ,(+wqke c6:~tLN2^O\e@qE0v{k~WnqFç1syZKJNa:H҈λ1v 6GcY ˥1G78c1Q{Q> YN(sINV"cHXW"eu`4COVQ,5ŋ|(b  тx7%o Q[s@v S-+XYڝO ԩ%1\3sA'ƈiIӔ4 %`|,PjmWR8] cx%^B- 86Ll3Rg'M #h߾,xKh?3Q7һ1x<qN y@㑕7@*uYT Lz(sl $yOX]LTDf99 AʜUB֮a]pVa{`!\@~~0P(ctY{GK=l81^lްk,}@!8C ܎; zDvDD#q0ٮMP I-i|}Gx;h*pa /0Mn &X(xq + qqra5߬3(B60DNG~KNTr!c mf94L97"tw fx`9`ߓLb=,Kzz3bh13c.Qt#&."hXU)ņݧq&i,5smlmP;ό fOzE]&D % l: =:Selv=#h ,9VbwZ\)yRk }Ւi7̫gJYi4(F@8 K ^Ϩ S H{k ̔6zlh8tOIhcLb)bmL5ƗBdE>b'^CU).zf`\(iZfpI[ @5AX# {t>_]ߎt&cOs 3ծ w>tȻYD!d2bIPA=GkqӚ b ~(=A;f/MՖ 刓^}G'W:JH 5Ì٢#k5M\/"o^ʎj)-a)T#h@8!'<=m<!1ęZ"LK? 8mAM'hJ?V{q)fp WJK3|Sz=RcU(2cfwRII1!2s#_kg8NlȍЩE n1{.9I[^D1I]^z&a^r_BBA7rW TUP/s@r yIP*9NբMeI#b<(M+鶑;/e. 25^7kOgzQ; WdΉ-%oɫRXJ R]hfg,&!qaP~l|w+Rto&VuiUAf:=2Al9N Ы.G(@E,v_03lyۮNv ƾ]܌9粰}OC|藅<JKk9ʚI䖂tm:{nm)UsjjR$5&jd e2_‡ܭ`|R\YRM}8;MpbPTǃ;ϛc~IC6AJ,6dQݔν+1ER(Fe <9'ʡ$.EK8%K3=Աt@u~;18|4ʶ5XrXϥ^18͡Q`5c>HW"o/"$<ivum.4"BиWF/$Z B^J˥Vվzrm@uN;ZԲ2r[(Ny?)X;3?PU- 7E3`tB-y#|~#PNN4*~fvy9yrϷMP  :]>7>^)8K.CjA\fT_M^Kj}'k]kŨ9{d${^3 9('ЮWȵ8R؀]-G؞ rdn  gJq>!*Z}dzc^SX:]DZ;dt4 :d <L%#2ȺDJ-{-goMѨRvx3ǡ.u#yMlkwzx>dGGY:ߺRO)JkxڌgQRsزyf ~GF 4(,mϓ2%\h@tB^PoҚLU6]MkUD.Cq&(uszh.ȉՠvD&sD2zHNGonHco"¸BD0;THToq /9-4LP;>2n/>s/݊FeԾJd!=k3wys0 q_e\!T׶.=[κK6%hgH|AYQ:.LfQ3YIKQWEid&UI'Fi`[R+È "z ~6ę~s1 g.6<`N&ChPDkYzf ).bNwEf9w̨[: a㒷O0K+%+:5nѼΜ($q/(53ͬhz27Wg9{dk?4, YZj X\s z> zZPb"GăUI  WF DWZ)tNΥ^3iH=>QNk0S@ 9\OMMVّzM)̕92Iwg`LoPXTZSr|5_\mq.m]ڷnm5m5[w7Ս 'nGQv~$Py楹 @ND@ C1bYNQ3d*n?̧ykΞ#c;pO'ڏA5)zیx8ޡH(@Ȍg85~-׃4x/UUsuFBriY<5Tܙ O7oev4[m80n0B{؛[ Q(I%\%^3. kY<XþY`qxye%C jVp ŊTC^! ܆Ԁ<.&B"6XZcK ~`H\;r&Oi5^׈pQ vtʚS@1q&CP*ʍ68̕+ox: ;@+7yraXp^0 U]A"/#Lm&ej1h%{-L/a4їJrs J ZJ|mM[Rx⒡Hݴ0C%fSKM:|7T (5ݼ6' e0щ93 R<ׂDHGYP&ZP;$~=nH~b-2m9FψAwV,4+!ClZ~hA7ZpaՖxQrmo|' BkI*ŊO=qvq7&xL=B=VnyTuI#m0S*E/?_qI%ܟs}\Ӯh;Ph@ʸl:Ƙ)J;0[NkD XRY*e_ aii M}%/Kq!µH{\Z_Jx'qEZ z:YֳCBsFѸ;un(p%K8_zΠ.v9" &؊:O8JOC7qe:!L9Η G0 HsRmpb7Yi2Khn!<6E CR!r/Q^bJk&̶?∏8V\H͖c:ih1w!"9ҏfld%!mAzzdWns!N9w!ˎBi%'1,Ka d `sD3ZJ qX^ZW{WQ"C:,:<5;UЭD@`>8u`qq=ol:DS*=] DEJR~N+ EE sGΣFBr/f3o=P1g# MĢy^5K0>_5V0B+ [",qK/=-Z^sI&[fcybܥX\r̞C;-JGD F92` zw`gH8e` Ož]{+vu}pJ8t 5Ye;vQHj8VR9RR{h0*=W-{z.M%\IՌ]krN@)*Oи1_r۱7;ݖR75 !|iϱXXAVr(SzaBRɉA@Zި!@/lnNlCN9on"Jo#wZvyӽ FG;ދV/!A[QnHY-JPVI$n.3GomB)ɚ@<5sJ-GOW{yCCdQm2K=\mK_m(O پ{q/Mu<7bX\J5Qd}WH+\HEm<3 ^S T>Pxqzs,{9a2Sd,K(as>;k-wFFYghM7pQؕ XxjO3Lm aNl9/)'*xCxBK z8Z6'Kܝu4XOf pDCcpI6†c2i^ Zl)Jѷ2 vЧRI8c߰>mz -t,q_th*^kGx:j_m1H{#~1LiArwlC E`1Q 2LRjO4sO#_m 6W>nMԯF%:wGqy4Os^qG3RgklC[19~GKGdz O4H/BT@ ]jmii1EɈГJǢEdYsvpڏ9v"%@ƾOy{seE"KmKxP0V{퓀oġQN^SP}x{!J&5d_ITSz^V3=0ތKN5 uL^hpigU jR_OJ t(.s~M?c.I>"62&nҒj1*w0&HiFz3A)sR9a+`* um34jmv59`D%oZP?iZ$ff^ uH0XTttP\*/ K7@ja XaE!ubF@+ o7)!ò3:w =b|ws.SgntUt4#[2z{bP\4":!]kD v[[T^Wɛly>~Rfo`37xW$ECvg 0>ꢎC I,rs2k((k*f 7f|P^2ko*Vﱯռ0tdPKeXse]gA9k8-zQiQ(MDW;w/Ipqa춏H߳(Dj0;uz1-w$~~J[ʩ3`g~*Zp =C OڮҪh%W؎a(1z;V:dw d ? >Zgjw^(jMqlȍ+&9*ʊJ$EȒ5O68ǻiz@ٮ=&?Q^3s{&S8%H9#Zb%i|0fbUp"qMJT#y~7X~s@#n޴v%PʥαVk}%Q,C C0 }vI dX|Kgz'|y!sYmyݦڵ0%4pʚ ?A-W.*23ahW@fUusKCT%i!bC+q-b!fB)8b9wNCjX2Xb2w,,sM TGZvp@bz[R,L['y6Ǹݻu'-t߈}߁ꪲqU(k}JS2avZmz%O%Px豖>3LH:H:@ʋho-<' voa_N4 SV Yiݵ\H#2C!C!`REPEtو H oӤnņ=C<sxN@XN4S 9=LÆ-R^iPLY1  ƵHt K51xg1Ӝ3i@5rG,#79vh٨unTV{rnd 4^\E K*\gGTak& $c~G0^>`oJ@l5w*SiO(7 ~N7KGsH/"G_XO#(sҡsܗZܕtm׿wh$Iub7w*gV;㪜I B-n첔h5*4 MLj¥Q&=>84)c6IZ/Ի>#~s'8ylREǛVYS.%O Ufv+f|ۙRmQiֹ@ \V=ck%[^_k H\dgfze.^CsLO#4V65I_R12-8=Q`mw2!UKt*d_^>,>>τߤ $|ziun?7QXGI٢.5o7o/Loe/֩L;K17&o`1`nz^DM%L' 5 Cs-9DP\co15q+ gpw#?馣|JMnn;L$\VW "J!#n0paAgcK]Y@!wpqy@yUˉ4$]RS מ{YCk\FМf1K?G42KV յ^jNћ]x܏%v.Pv;;wv"" AΤߖ&4:4hGȆsy=;t0> rM=?_w`nn$PbcX.I:Z/G*bͩ:nxqh>p!7ZIK,![ƀyvyLxab2?.a[iC\c߼'c$7#:z'+LM),4vJd2לIe(HΜ PJg-܄ W9|)sI'oSӮGcNc3u/ m.pN[X #^ -Z^D ݫt jp #1sYܥB pb<ɩE~ (}MIWn˙+E[qu9V'pw8JApĞ w{OHHk܁r, ֈ`(ل; 2n(T uzVVׄ:_CXk;)zw}ɧ2w͏-xLZdi>N0.×!.XN$Ae_wA CFX, |:}^z R%@+ *δ 306 ]>6n>^V+UW8̍/Ii|V!I4uet\Ί~޳?52З*?P&o2՟mtrf(sZ8A jAy >A>8jҸJBuK=8Cp}cl!^\B5!A }C]M `AğqȈ&z,lpwcp<AU(s#N^XƼ^ qve.M-8qBKfŖ>!F@4ɕ؝:!u(k8b"h tԁSK xN(CJ9+T6q8}^j| }*bU=jsyߥG`4mo0kgwq1βcPZ5wdRO`y}( inQXxM q֔(贩 pAs)@CAC Li1znEPmۜgrW9mҶia9DGr5X%JQMDN?&hp 8풯Ю9KTpL+ oIeL[/~c2s!?ޥ)`NR)kt)aX@Vl $]re]4sb2jScBv|^RHX'XH*FZhX[ZRQfNn FY|GxH|3vjQޡc̥Ǹ|ָAO=8kgߟ-=[u`̥Ո>4wot\$@SHrJ'#AZ99is2%wP9ⴔb:,* fP')c, iTt}@aEMWT8r;:'6-KQdܥwRM-lQIDKhbƇ:Z&\5?*rA1]Zaq2ݱhTijY|fqПK5ԯ =~~*B3RK{9k|Zh*5m KܱgdNz>0ˠ1PN;j$N W v%#JA^0fMQ<5YJ üh(~%<1G<ʰ1^ci,Ql9!—8ϣ٥2A}MGf9u\D zCn֌ޞJIy"VM-M(RmEСbwi MdRc-xڋ^).i|]x i!)4F-#^aurLM{D4S2;zfmZ( "B0npcrjp-[}[B 30S2NyP`B\D ߡHkQqPB5Kp̄}.9Dɥ^*>= 9Pst?vO~O DөrR/"&Ni&ZL򢺠IhcqO\f/F Aʀ9SpUe@YyUYۗ`(Hi>[ǁJ)Q4^t-bׂi}|®(s6 "nS?>!-Ux r"2ィ0wY9j@z n N osmi(?w{rhp E hx<"7֦3È,->I+ dGO#Sq.qS01A =FF K<:4;{7|Kf $VW4K*x KҢ`0rBHt]-.81puܿk70~:[0CQ<h*58SW㵳K8#0[hMZU8!1۝WSNǾf%F 0l{?9̕ydQMWߠ>D.s! x!$ptYZ/2Wh!pbfs}s/"b"#x"~/bR)m㌴$IZ])(DQO)1gSHM "7ܜ;Ię~5$@x NN8.Ug:~ -υE0#m\ܰ,Zʄu8Po دbf )tHpEy,O8YWYNH=6JRP-XN4k*KpIKȗXopT#!MEgcGautBػ YSÞ; N["G̸C !5z0B Rp!8,G pXB`1*:N]\v7awPe4 F}5O(x1zN!F/3;ӎ|' ;R;4SUAX5~ SOTw8% }~b^whFCIɝ+ twM YyX`;w|ywљ*~WOK|N}aN~u~< qb";pT}euQlب~:zr^VÝz= IDATR¾{LRNCIFb?Oo:Lawx鑹gci:~%;vb  ƣ/B~@Q: @ 5ڤGd74K`Zsz7s|y}<<B&nAZٚcCe<pSUu"ΡiܙXk&:#/m^4vPZ.)[:G%85 rĂN^BϝQ >L~.$',ZSkqփ _DŽOEB#4g^ᾥ|̑(64NՁm*e:u>;Grг$b5$f@1f͐_4+Aʦ&~^Ҩ[, xBʐꋼc'z{Jb.c=ނÙ''#k:75~,Gl޿F3AA첱V9cUΰ/ ~_(gg?&h^wcr̦v+;?@C探ɔϱZ!i!#cUa}A3&-eST*uMʉ,&3$zBQ]l?m6ViB^{ sf_kcRdKJm㢮"w]B|_-$W*81D;e 1cȵqrVr~Fߴ:0"9HZ=~`.SBҞw_[x@mKpO w〴~1wM~Y>=O yzO] "lU.9ZPG1 _}pح{P\r;)!N*"rYMp)%: Zcxgw豿[߁MhUMv4]H6;)o8@3I8Rw9  @2S7~eXeH}d|2`Ҟ=~u3 &1]<3H[ ZbJT)m@ܧ$[ciG1k)aL=Ġvb\޿$ʬpKpn2HӞ e`hL= h{g#lkp|WoFoC+V2N+Yc}D`JZDlmY4ĉOEw.9 :4 JWt8\fG8nUvkS"b{JΆQ#/z&Ԍ9dA0;)LAe*e*j\`+ =\b<"}n}vu&"q!L!=#;aRL轠;bKa\g>#owwk4s׎:CD9.K#W^30v_W~bq.>^Cd܎fiL @6ӔBʗ\ V Es1LzqO>%$w-B,l5NMS=9K g-o0C {؞$,Ј=h^*o&TL{<}[wc^=k&GlݦEn~Go -[L&=$u{{lR98Y Ӵ \5N0;h[1< g> %D Js{c2+3A12uPAkYWĘ|Z.pՙOЗ4O>B[PxبG)*3XG|fH5݅NAq=hw](VT=YSNt? iH n vV\? @.k5ل8'ZhH#dVbнR)Qvr$A=,9@C?W꩐=  t?=nYfwdΣ7b9{TҠxeo;G:ODLm'xހة;|pZ OX;[ :b !'XëfاVIKATr4e>Guj9C5ZJ!3fs|65|ًH]@}so}VB)Hx9VHTv6r߇a*YͅubCq2IEp oph87D+VΡ=lޕٻ`Sٳy+pOxť*˩C͍cJX-&` 8ow}?@adPK<]| H1Lu / Oyi$+ϴ.͞> 9Z%~نgL!%^so}Յ4* .Мۧ@N i4M3Q~XSlmO|S(3sK/Xa?b\Ҿ74@ @ 21FnHZМJ91] iot}]͓|eK;z>hgtγFX'`K{ɓ]1kDTc|젙cJk$kxtqE' osKu]rA! (o#鹽,6lqoVo5nAspgiˢq ĘQmێ#pS=SZLmbL>L4*WԨ2)3e2hR"[R4)C޴Rt^ca7B 9\!űԨ'ۙ?\Wh9ԩݒ*!IjG)b\+T 嚪Pܬ"k9Sw G_3g O_"; 9mJ!w:=ߧq r_^Y= qXZl{R۔*֊mWmW8>R`53{/Ln߁n1 mP,y(Xg6%&yC}<(oI +e-$w41:!Bf9F9]@T3p:e-I>`2KJV*b{~aIӞމ z9^S:cS猳6Z*@ڄO lc%I.TC1v,?Pi @\c\[J0nDg={=N~J4zf*˔/<Cb!@"N4襼΅&#%~-Y۽ G Y_,D]b8E+TZ˒S4x5azncb9~4ae}N- 5vCpgJr! %MTiA ΄"2B4K<75a uJ,9P}EhXul-NgXYqw跇v:.RK5P36ʔ9usj湴me7)TlnwEM,@!Try+`wI؆@ԛס"uy5{l:"fr.4)`ehes3K?eDnYΕ^@y !jk~Vd:jl0f`=BB dyBLgm  Gܵ=(sh*,ef 8VjC13bioA!(ΝBaK[27;a~wF#8aéJg w~YzmbϥBTyi?b Ss55ZE N 646@|*#~㑼1or fO37kHɡ\dۗ4cw)q.\Y){n3n.$~t͘t 55Tkoi+,VS/KYbv1 S_ 3[`50h{:l!X܈mܙ599qlM YBn0vPM|d@0M`*(/-H8( 7>6P.e =Nw[@4j?RC(G :uX[f 10́d9F{,O;hW;|Cw!!;(S $t#,vw dęm9VGAe) 0lb=h ~bp.Am$ՖCD$^Zp , οBD3ڃL{3:^Zc90'αǜVJkqJ{v ?|]/'j NyR!]}Fe^8^VɮkG>.SIʠ&s, WZ'p,;Sse$8$;(cNiN[Bܡo]ރVs9"c&Ɋ1˴MlLѥgfQv龩[ 7$xby$[7f7[bo/t <' sC!ѣʂf J׌@`4zVN]vA,1wt~&|$hUm !\oFE#fY??i)g3 ˍp׀lmk4{v{t+XgΈ{>v9P͋-Ha-40%Ɠ$&,l ԐȜ[k_ ,1BEȒS9E.! lǮI=eع5a4c=V|!Uk~#;HviWjziR@c5]8\X=$r@\r.rqۇKM$9aN]h s ;kˊBƜM6dЖX DX(Җn*t1}B1pA2c{-G(8@T 0zv;Ծ=YӉ4ϞaV6Z2ȽT؞ew=0З ĩ/yZ)"aHkk3C-F[ ŹNUREGP)ZJZzF^u\0Xc)0U+g[I})<]ۛkݭA׈s6S?\imϾL5y`pPCT 8ú9(L!6p:(DP8fѕtoy3U(W޲n%M j)TO*Dwca) 8 (GCdg愉-} R8uӡn}w7W@ "Nb%S?R|- `پo ?ܚ̀&$4L z:;Op=Z:bh㌟R(8-XDufOZזie2=ȜX$0LήF%NPI(]e4Ut{s'4,VM:or\E9Z*\AwU;w&&)Q:5G+Q0%cy0u;J._hsq{ӾQH~B6/Y!j0S \)c g$9k^`<|9j"b'G@Uv\z[ghǙyN:)owA }9S73{:zN(Lcѻ495m [, "vSCuI[#"{rQ.bk]13'rQclu{{vvnq'?rJ+z 1o 8 Y%G"P43K k=! _~J4ܘ+zS!;!Z3TYA9քZ$f6|gp9jIZ--VT [%b}%nS KҮv, nف=˳%fk7p|G}m].r7h'+ڢoFټNnI& IDAT g SX7:CK<-sُdT^} Ker:jd(Ya{tH vp"OWcSp V3DGEn٧ܥ9C:=PVC 6U)c%N!2rGKUoiw]H#'pA$I3 ln<'I5i/qLx*8R8rΠy2U29;Hk0p p|c9„|:C1 "Vb5CkgU:䩊8qM iў]@ KoCBIʄcEA>ZPݪ:P&)SoPX}^?w&xdHetx$kwJJ#I.ȝM9h8l̏ƣ,VkqAz@z!8;3ګ rĀXgH*;cꡪ:xt=c7nB8md TW}WCa"|SAE8j;n_*7UákC7؈Y9m(>d4T~؉H x0;)=p;zO6$Һ9Psmyaך~_(|YfG j(hw;ul̅$PU0Fm Τ %䈔SLU,nhjc{Q'6лqN a[$hHDL՞,E V4VUU~f2CmMetD"thYLD$A!pApn2` S"akW& -Prk3a Nc&Ǯ_eKA^b8cz\Pp<$sE[^s@ulD7l%q#d>V$T̑ɡ17U0-褐dpdڀүa%0H%|<ľ\>`ukB5iDz{Mws8&i^tnl >"qŋ˳k4s`6.9J$+(^q m2&nͰ#˴5Rk*tJbFTb-Igm3XTLŒ-YPc(p8"&ӵ#$zb ȄE%C+٫*HŲw}@y0G,%W%$!Kx) XNG753ї8Nm¸ab{xּ?k^ VcZ] .Ҕf 'ԒNXqY0Vd!25wv-1'@^D@U Sڬ"b`G~6Mկ>/07M>lSg8Aj0c+E-D3/K fJ.-pRƀp[ [O=O"0NLmG] &knZ'7`Y\Uu`VĝBXeB\`Oyp΀^0eI+ Kv8-XGAy%챚W`JҼRac=vyCly 8ͬ@/-/PJ/F!@\g2P)]A|p:!vekG:̎Cߞ6XP+hV/E{Aaf :-9:ZzwKiQ}:[;*Hwʭ2YXi*iaeS+Wrw6)D*}0+N8@C -3Xʵfn1@yK'ߨv J2Wif岖 ܨ7r3 a΂NX80[D@IBMRhfONin܍0֮wHT) 6<2fvm%|q,BQ8Isx6ySG6MSA9scsKW \ q(31-Ʀ<uNtYDRjbe jjRaƙ&? Sۖ.m _;i!I[gCȾPcKbZL_G#5m#+*htZm&o:Ɂ4J8Mmex.7EHbf9,Gݨ@d[QGmLs[G3Ͷc*rȱOЇs,ق ntF'0N軼f9L}ɱp.T[ j-]\6Si憈6䧴N0X]􈒘Ir&0/aZcݒk1%WGl^QqC:aR(`ո%357|s&A%LE]Hq olY'ml;dxlh6{+m=0DXNt4=VU%-&=i sJ,-\H<Ʊ(χ)_w{^h Ÿ%p/4?Đ|FT-}Ǹ1,.9:i<]D.&7̕ ҭa{=}9O[M}1}Xg Kr1aeL3Z+a>8<\w8mFS>C2kL$p۳nk= @ɕZ[xhzqTi+aU.\F ʕʝRn1iaBp{|XXzƱ=XH-3zn0b@Ӈo$Z?d,Q! ŀ񩁬yw@3-fGl@ړYuSke0R&&K@lF8MdMunmVG-ƣ*뮰7w u675\yj67G*y ͙5 iˎrIG8iɇ%\@-ANz6>^`vaC%ǖUaxiAc k)ƶ ['G>!>@1]^>pO˰XGpbֹ5`K9u![nv4e{.p2/)LL$}pڕd3yc)`ħFD^B{>f!ְ͍P44ΐ]?8#xIcHNPY#&lo1";_fЬ%XKZzO35)}01ɖ7q(t&T0#{ [i9v3aqʄXSNG|0!n}g[`.; w-?x}Cy-?|8s)m(X8fםQΠy?3sF1R;$LNɻmAE`+y6z=:e"b* K=%ڑ NOEzc A> L5Dy7@6|&m1' VAs^ %\ ZM|4()tqQal9,n`!m@jn^.Ny3R˩Afmͷ%=1<5zkr)@7K .1Oϰ);iYAYg*ϙX;D'5T٬!p:;zH<5a f.6B‚Xk 1?t/I;3`c':b a4NXSb=9 ?!& Z37:;E1F+n6G2S9;ȄbMg䋝M@4օ.1-2I+k ԃކ֥쨆XޜU?5=r685ؙug鐞eO a'6pd_}\BBkGk ͍jN*m0.gey"* if/Gxlc咘 am ]#KRB9 v!0yy>DzccKAqƜGmmAZh}Vc 7B0 mCB*$~>ɟQ]Kfw'CI `@}A7 ^oC7ز%KK3MID}:`$ 1rM.v^fBhMx^b9llzgp8<b.33B_.e"Ƶ%mI]* z'b\!oi$il 56Q eE!~\g&wwqB̠h`7ewGIM8 EIG!;'TXmk%V m7c#f4'}ఙq`^Kb .^bj4E1Nhq:@9_0-[#' }ABRRt) qHƅ͎tIkb=פeM`B d=Iv:5` Ơc%}xdu‡sAǚኾk8ۍeQ dɝ2K SuXX/60.jޙ05yl1N w(ƣemS߯1.8_2gK@[=;#a03HΠZ0RsX4(K߬g-''06zcг=0h-Ƞ3P&&.Ih_6{i K&I:0fc,%MՆrE@Ĩ>qg~|0g4_н&+6\'6\_ ݇ݎ8alt&6yMt(+S9f94`|Ka'l/pkwMlsAxKǀ;K:l ċo37I_He@8F+bu,2d툋70ni]A zkS;Y l9 |H.vNP1p~E!yOz qf]G!q,1nWl^}&&vC'wp*0[/\9s{'zك:9| Z'0Npl5ц@)0y?'iM140NXƶ"[oƞohor0#::Yψm0 u\uAD` 9m7wYYI-2| iCxo.ؾ^t.T(x9mt`gI`1vd wqG22;d*.x@Drf/2kύѺyXw'2p렵(fcGL5!Qq:E4jw"`7pDQr5} IDATF+ny漼ġD) 6&W!3a . IPHh* bv"Eyϖa b\ @iI>/3h+Ko\;cgٻZ@YA,A!7'[x:3KJ9Ų>q;)dbV@;345fYCmoX''$?ck°]fy jlb<{ހ gМy:?0&1F׫lalH[G% mzeyy. ޹>c.T Ohrf^fМ.L->_@#J1As^>dcztZF!5@ aT0.I 5x^^e4_Rl&bs\-]*)ƴR1}\䗣T[zۦi32*)YRf] ae} iM)J} }^;e3뜙Tfc5- u҂q[2rAi[Rlk0`-WQξk%4Ӳ(S2u. (#\N(MYi K̚gМ =zI܅*ޖJ)S:HpJ5ۆ/ !y 4_}er)ZWM` UFǎʚy/ĆkjO?/3hR b RuJ9ew5iDXw* 1a{Pq! Hxl8_ ϱ&' Ԅ)lrBtH t͗QLMVU*{*-Ҕ)5I%/,>>Nri,G%cN gA9J)9 |h*w##CcT#;cq+Xc) I֏4s>K{, Bh薵eE9p]ĩ!=%R6>W'*h Qk\RT0/3hpay$(USY[" {cTJ/1E|^6z|d?}AЊ4W,bJ7`ȳ BYI.,[ M [Kbk/TgmP:&XcW}JSj2s?n M @)[qL\wT=eFR>cS Cҕʤmu685ө WjϜ3,|FS3*[(S=҈;T$a + s`~[w.G{M쵚bϗgMj̙i~$Ǫ)XQX&kS K/O~[d(1dJ]c4;nZHa5RBiegfX"zjBm8")T+A8%U 3L52$U"߯Vt>aycSҡeRSS &9Ŧ@'O%Z!kF^ra RcMhD7A KN%̚fbzZJ szT~"52ZݯVM~Sۙk SN=Cc7x6䍢Kޜ9mN2/)%|y:#f^)QH=^$¦ؑ`LhnYC(sFLK<}a껞F^i>3˜2XzjwnRkub5Y3UM!'_X{M0w2!YGh&@sj[}gZLQOenְМ^ɠ6Lo ~ހOlsJL9!:S ,e 4qNS SLy4͠LLЬV9G>yM-/heufnG '>>rPG2ea9):/Hb&7O$BPEPW] 3827>˄uĊSߟ #[ Ǯ&̖hIAH4=9i.e͈ Eۧ6ԷflSZ5Kldԑٖ} ʵ,:dEfoJR 0SgqJko"HܢB&&/yB(\)XmH46t-ܩq,g=59pOek cCJZ4 Z 03W0lՀP_7Y}%#)#a1hS^b%醯 ]}8|d]5` -5ys1uͩa:&0@y$Eʈ¡\YÌSCP:VH]57Xlo6vL|clX ^%PDQk OcIILllQ>pyijT]XO4HV,ǣl2W^ 7׺u)%8SiنRX)+i1]¼3S Lyx''~!smc}9㏚)k|a_cIzk-6ECx^3ĢF̱[ s}ݦu VN#7 ݄"6pQy;SK~avδT?-֎F_ڥyE2g[2M'WjE˙"Z?W\tRˠ1%ol\HuM&lk8ŴMo9cKb7 >u)u 9y%IBQ;&Lα)Kj)0%|RL9ubbJ.,kP7[("V]Aŵ^}mI1 17W=tȔ^JB -1Zư8Ƕ_`JL{@A˱R(וJ%;B&lfi#C9 *mZq\O~U]@@[Um,Ddw6TQ"O?S? P.IC82)pLes>J{m& Gg|A^Q @S22,]L) +LO0Faqo.|/_T?|~ P?4:U@S\/ⶐZc.\-|]E.oynRI)dU404J`95syo s3‚%)VkFVcG3qso>hgos??yRvO} US}SEB4/!qk asg+ c3L0F\b-M]/}U)c*b` LZ\#ǜчF)6O1 Hp̓O~!}.scZBw9x۵TgtFk}îUυIw>O=7ߓf4CW}{WN*k2HwŌ@j2Stvk54?l |&%eF/tҬ< ?:euح{ 0~K)*" ivҮ-WiWm~k^ m~5K6>Z1xwyY?z ~[p9Í=6,Mꚟ~v۷_/{9j `=5`Hũڵ/õDas':t ȥXfP5׀\Jf%p,Kwl9bMDOVZ!kǷMyx֧]8TmP#ͳ&pJWXd @hC/v~w臩9EXN+55f(daϠt̚P ,kEE;= 0-x׀}Tĩ4ߑvK~nmgZfd@{ݳf_x]S^,M& yk34kLBJl`- 昦mҮţ ѡa}ݭ(s;K߂Yޟ/IEw?on~lX_onFYI~Os]kfBq 0 yDS\}{{'Xmq8lnwׇW 8-P J#1J0k:|Pyd6qz-S*wp]׺'Vb3_vn/?\F-̅`2ci2Wi&`x(E xgO\u4׆ߧX}=i)RwRu @P)k a-~Sa}u]_`o7]qΩCۦkE p-@(ڶdm۞7mHn4/)-R#O LkI ׮ney\/'knƊ aGzԔrԈ9<,snA:Tt=Z k{cq z-샋vyWKP} w趷cy S?cYB2UX9Q((kC:ku^I *vuVkߥk5bU~3uL#Bq ܵh1ZR+Nυ磻.J_\ESP09k0bbݲL[oc2d_ΙȂ ok@\-=>k3uߋy@emKOo+[5&f?=%B9 F?E^)мd&[}Z Ӿι_w_lz!B0t7GLdSxLdٶ-EV%|beC F6O]ne}D-J}3U9=d@n[CKfH)S/r눍:J1$/ggCd b9uk}?/5˳/( c@3T 02pڰ<.!+e!ÐLc)׆Ϗ%R1RQ| <N%Ɲ=%x 7[/c L7>nj@͚ҡk\z #o{E],ңO}_?*w` ݯ{%o&{sZ!k(hƀladXr&"rvc#Ja},e9` LT9y@ܲwg~]/}FO,%|i)E-@̈ƿY&4E,S{c{${bTg¿)Wz&w` KOfvP `ɀ @&jMXabh}ŬӇ߽(idCS-IO{Y@Jw턐zq,3^KsM#T6/9I| O|U]!¯`ʇ0W`2p2X ma:37ԩb { 8R@urhA:(6PlUBEa \ P*b ,5}r"q{nuv_ ׈HkS„BJ zk)2LƻvG) IDATq4xQř*yś88h/ޮP=pa@dDU1;-}xr@0ejKXuc\q&P*>o+f@% %BV" ̯ w{M+FWxǍ)~z-ɲo8)yzdWlJ2a eئX `O~ &EMR$%sh&z22N{!;{,Jy3Dĉoooiįi6#u6'WNës8!M(ڞ{@-'v?:oo*f =3;Pb_Q/t ̸(6؈٥V -,'%3ū>6 ;f_pVwSpxo!#DNʐREVn'[1钣xze]9i7 b%9IVR2ˤq~cwxKв&~O>D8~$`&2>cX9x[uoG!m'jF@X&H؟ܩ$KQo\%_ `"eTx ڿ-U/s9sv PPʏJyse 7huǾQB N`)֧_uww4KKa}9FRK/]FOZh #0Tff38}n؞[ɫ(rv\~lqS ;/KЌ4R!{ qʽ S"X7_^~q'~$`Ji >=.#`)s0z|yqsM_7G2ˇ:wGh.܁xH Dޓ %I=`jiӼ"Րp*<v!yȴ|KjߣjjozD9Y)D@(?eJx)Q9s]:n9ԞWlux3߀s{ 9oα=|$`vBsn`)C-{"CX+5^@2,L2.ʽ1N\McKHJx-Vʹ!:GTW*چ 5DD|(P - ۳D2(rZM߇9 k3t>#ຣR57HiI ~t 5F!]$Ô%Fe9̸2.L,3#-Y4F*'X u;FǢ\S)T>IFA2yͮޖz%G_ sp*,xF->oK+oJ3kg^@ wvJ& 6ʄ%5(`yqu< $KMQyg5Y>Ԇkg.]500 `(n!4*I=fx]EJ)٧Vi]݅pR_{[,ДE`H 3I;- 3ɡGYDQ"Am aos@4"*<Vp A:TA.7ɉGdAcϿ[,W(J#+tGI&~[r)h{b ->]{"On[ֲ)qvofkfpʌ07nC[4ޘwX7>}&1 9=6tεvrh%#=#H[R( X*uy?`LMvPѕQ<kfpC0zch{@EYB;Ӂ{' .UOpҹ20zld麦#=TyrwGurX\Q_crI+to/2ˋ?q˃>lΠw\m l"%gK!v|Lv[YZe*|M=\cc"Vv=wxπpDs^T>7s #dX{bv S3x>˛o&=^pɉ|=>RZ3 <1Q }DX5OyHj ڰ} /u+xUw<Ux}\ǩ#ш;< s9&90O7H'iߠFQmƻ- m+9}fYl|,Bl1ʻ@P]kN(+hVdiz\SigeE:ڋnLq2ExLr#[c(ɥR%u{5j:"g(%̰d=G xNUf?l<&[5<OaA$6G=DQ>sT䏱 ;*}69x\3̬< -ϰ9]b}`{9jߥyzJ,cJah`eL lHo%> von]DM!Y{|U/کOq\MBMf=I 'POvٜT8^ZqwZagI@߀Gq@@52r| 9LspBw9` 4v]C=M6}:8@;g&jEgg4w\ Wjv5/O8 ҧ ?5aq/ڶVopˎijqXlxЦ8xıG Ytf/0c8=iu ŀƮs;8OZ__>BlZ.x[p%jIu4bϢ=q ሹZ= iqՕ{WD9UwU1gU`k~ZT|.ó.9k*g) \U/T{W؜<@HSS*vNA^T ˵xM1N̉B,*ciu:ɟ!Z# _E짏S%,FV# S ?qOB v;{0=|eM_-iW%[NH*l׌~HGd-$dJ! 0\#@GqȌ6#.NR2x/28`;]cڨa79O)3SeF9=źY;ȳ`%;=ſI:eg%/j>Խ_ "1V;;䦷)bo򂰼+`⏬˔]X.Sh>sںƕbz{%8 d53EƟ81cXf Y)1@| ŠhHW2'."?dߛ} fg./??ysԜXr.d~SK,Z$s#s$dkw @mMPn2m-G.,{,3nğ^uGo׸F/&!b# I+ED8?Ei(rf"uK(ȡUR!|Jq 0.v!{ QX>*n$e&m=o"41p!tm~z"yՆ~i ki=t{m9$WO H$r @~ܜ҆!jN כ-?w\' |r0m~Fw3~>Ed<~dXό׸oRoY9APx@EhsvI8R)ad2 ρcQT8@سx >y #]+#p 0Ǖ)МtDսo o-Kin+Db5 k6lW܋RۿË '%ä[˷SG温Xfp]cv}>M)-Å/k vhBb n`;k|U:["”@zp:x*a 72P:H=w xpg(TS3x7e1vM쏰د M`E,HƹAu)K}*,HvV#ޱ,Ԕug(Z.<8~?'_d7McpHsa2mҌ#%h{|fS3l_Qt4W{B5]Cjkr.:'N۝W@8EbpZmd"Ub"(9%<4X~Nݩ/_S@~|\:Wkh)?v?4sb&SOW*׍Vpb_3㈈Fي?u=8mO"vMPnjl6[/n!i61#p|/mx<eD9 I'S準ęiE?>E<&OS0-& cC)ˌ݋dhޅⲀ=Ỵ>ϋW65ny/މ('[&;\wPn[t KsL.;Qcu^>GałؽDC>:7&(q%q_ 4BYME&2;MjJD:rd*J9V'NĢvMXlF_9<#pgӬ\#OѤHcW.K: d[!uݺm;<Gy_,zKD#ZaC ‡xBEJFl5n+k%:\<_`nǎqY2+"|VO.iWڿ4*lqyu1VԨ ΀( αVPzڜ7}RSDx $eDQ GW[^Ҵ8zF}|v ĨDDx+b!fu҈ioEZ?? [ nI$Xk}@I,)h#yF[Xs Cu4}QAuT#|=6"ڳa BM^pMqV IDAT9H$0$gTL3Wj+Ya$w ~%K>6P/rThʭ_g2Cr)03g)دG4QuR.̎ebUG$v3k%K3u}L`lV_S3b`jHsẵ5p^+? fZ& G\M{(_-:kתX%~=Ӷd]bvas*Qi'#bs8G hZlH5Gr]AKZk^ػ=Xg_A59j2\t(pJN-r=nz2:eq s#j!-< Z4sE$+Zx> Cm2n0Wps9^K;ڔ' knpj%@| %xvIoHnR;'X!e)DȘ{rF֥5M@ax uʭĪ epWG>7aAFb6볶U2L h3#AuJYӁ-ɴ 1'fcjwCYu깼H2ʗ 'f,2EGCߴvzYgs4U@.ʽOoQQuufcΌ UafZjκG }t Y<.sJ H -v3L #\/[Q"v+*/Ud~sk0jy 01os~<[ֈ#K)Ll:8L!gBVZ`9wceZbf%|,TrZ_|&5 [U*5)gq3x{vT-+Lks1A7H >@YfPN]@ 9!,]iJ ׈Dҭj|{)YV59z`Q:ޱLyJݿy;5 c B1i\;T$rd94~G>ױ\(O; ޸m Q=m sOeZ !oDŎMnDsh\[ᚒՀSqj]~s,MO\ŠH$"]..KA[H{ K@/7'J(t]{_71EQ4yz3w؁ .;`KW=]"mΒ' ?3-P5v=1%)piUg$EDYB9%yy[Nhe 7INSLmrYL\o׿T_e%i AA.`$0ij,q5o%7P}7$3Sms^sYߜk aNxR r9Y2 hTfM-ߟ!3璓 AZu~ K<$:غiyHTbpXh63t2!мL/!l[Ǣ5xyjjZ ۻ?M+\#|;(Eq70sZ} \a8Ny;`Fk8`t-R>v{hM?ᖸ_` 9P~ 1XoKpfe/s$NE*q5SF(@-'Pk=r{ND_͢5I-7G>ɌS)"C5}{j?`y|T,QD$:4#f ~+\MyE4X]!)F%]j񖑱  6PXgT eSbV11E3x{bvRMΘ% ;?uyɧ -e ~;%gsڴtZCfԅCmDgۊ?J6)sǔϕP5x%1fek)oazd+w~[ | ܢ]F{$a|,kUd4wȵuJ'7-?G@(BOcxeZLt ny e"ʜ/),32G_B͵QLT99d!IVWL,.縚bvޮ~OQ%Ì \^23>Z׺zSwɅ%9=+L?EKh6`h-#*S[b1s%\a#PJrWu~@2'!ywyXtEV Z-H+YsPL"ҦYpi=PK9.R>bbW=HFj3_B 86yD4gI q(.\0qh̸W{\1Z k)S] :]ozܫ |0Gأ"oHQND]lr9I$Rf>EZ6P\Tyn\ބlq XQj6!_SL`vx>>kϱFjrvk>xG@pۑa۞jZئ沴HJ33BbLB "H$bǷn r‡n@Tx^oc;nь+F7p$|w o,)Vʋ9hQ4AN3H'錋 |*]KIlVG(f%@ZĚRc h5U˿VRH$o`!2镛8MX,+n>Mg3^|1N1E%9:c8ZF jfQi jJ&˦ij.)W=bhAJjݥiK?ǩAy2ATzTEܲU) 2zEžAvJw\Bφ؅g HSFV8):3KK(`Q+7^/MzEr#l_Z8O7Te]0t/ #n?1#,YhsP #BfHO"&T :{Dxmϩ:99{r)5лKfv!ioZLt^eqpVFRvIe^W1iq tM0GdpJ|;-Yt,3P F,*H;fgwGv?u]D\$9hVC-)չ̈́=pQ^BqFh/ł‰P˙)9& }0.֤ժH B-[70H#q H^jB*qugIT%HKGX~Do\MvM.f۸=jh7LRbZhB="le-߁'j#JtfO d-%3Wx @ H0Jx0>VPJl̉KVn.fG99"PMr98M ʞK~+E55 WCBp.flynVǜLYΜdr/// O%bmh9͙3OD\̸B'"<2a5`͙ kNMLr">MrPv'>_Qp|ݕ~J3R`bNԜ 8+Aё$t2VDKh-홟4Z.L2X؈6yMW|#HP4@ MTSkWby@>Di)GۤXLP.h!E@,9 k0$nsKԼT@68b,x#%RQ>xm6GR%>0><(%^}Me l9Wp$&(k< [0wFYbՖjK8JBy߿[.ZPop4B[ɬ&S.A^a`ˡc@)NZ˱| Bf.o aєM׀zL`BLZMFCr;:ؘXcd%)Jt]VE:Ͻo%snBa4Z)aఽCZhʌCfRsJ]hj6(3:"e$"NUZFXFٌB !$Gj MY$ F358'%5=?$>׍\נ)'nbgdĘ|Ө3p 䜨 yK6Eqc7ȡsJg!x@oVr;)mk9ճ h%d]1Z:&s2]TT{G]eF7Eυ|UȮaoM̸b:DC&>i=U:ddׄGg9hIw9)u]GYȞ5tFo.XkY)- x0 San؞9:|w\>9\ {LXLނ칎Cs;U;a3 *SJR'2>r×DQcU eF@~1c%ah> <*h2(E&ɴfC];H A mpLtAE܇$%Gٛ&]5Ap<y\3x]0ŊJdz5 5pWLpg> 8`]G,`Hg Y ,FhI9.(Gvxk_AID2,.U8RU=5't+rM^2`bԀ @U_U-O*9(\X8*[p!k8yw0bZ!'fpBEg ,pO?1)@.A8s܄7@fٞs:LVfXe&B>ܒx% $_ۨY0`TL]}Ol6-q \[2f?w ŕ6H6aZ!cZ&w01G0^g{𑕫cƝ@#<+İzVӔ[MFEL h1XMИVѽޏk#G ᱏ1$Xw,}e *n'I^qppͤ%3i>3Ɍ'i"]l08IǬS>1ا .F '8·9`C.c`1B ԏ!%f1TL=sRh8pG?"'n2(vԂeRA C$QJtXp[O5'D"Kr3^4sTxd 4EҀ3M”T!M ljHu; <&2Ĝҟ4J[ qB~1+f\ 5n39\8Q9B1?vj5 k2gʍ&tR%==bRyZ+ĉ?>Kf4-t:8˨[Ӕۛ&ً w  20Jcj0)Ȭrd/+DXJ}DxwwyQ&dUr8"%fa%LrDx5ԕ@W IDATJ;sCRbᏉ11@NG Fè]59ϙ-J1%PB5(P5tE]"\tg>s>lXO2& 9̈́q dNf@ JoS+)5ص|%w]Pe =z sT xjǷռZRk1ϲu.6Qc-s)DSx"f'0( ?65XQ~8c"G #n"l)NbWRҒN HQ 8lg8%MLK!Ds< 3@\;" EUZbКhs Ox-:d+l2B^u`'YR oSɨvwTs7E25bab.k"r-`:2bCFS#^_z^kQo ɑA 㽜x^;7ib'x|MPYN$ 5:`g_jFrK`s* ժc(ZD8pLmzBSE[L!g#J3 ͹<jQ^8 Z. @eXƅ0>8ŧljN3777o87| ngf췌 ͇ GFvjjZRI*4F}=!S#Pr#3S੝3~/w,( 2)j6) Ӽ1 A%7hD}¬8 9lgyb)˼9U}0g>Oq?u[>ۮ D]7\]T8Z_: wcÞLu80ks,R T._jMsARKYc sN.sw5t吏7Y!p;%&>XH `C) 1YIp!ݣW!P&: \w!أ|a %-cƖR>9hsBԘ!IS39oɧ=6:9 0~T-j= 3/eiQP~om8v-WbjoŭA>75"j ef]}^rg@H9ŻQE̡>84fMΏ"w L)=7qtq2_T~(lϖ09R`JYN)H1M\>M8֫s2_)Đ[]A3 eZnS~h(,\*p.G7K1giEiqX?(s/HC$G␪\HfúV8z=2͡mr)$DLA TxnO|JPaeZoPYuٟq'Ԗp4 =٘ 0=uCN?)3q^H07 +~qs3ʭճgKYii!gŌQm4p=|F 'k <@\`[AZL1*9A; 0iilV֚,gM|Mj Ut<ρɅgȵyMdĠz.ii'Ʒ' %WƺMt* 2D%~6%R j!jfnEYcc%= Jn4`{@8>,77"I1h雩3(. h0qޙf1 )vJR"O+[~*3'ZT\2lg(8Bw "aIaq ][jÝsFN*0 !4ոΔDAHT vv(>(er'[si4Pfw HCR} s%G L|F/*BY59;2W3JBYiniZ)C6]Z< ڊK퀂Qzil3P3gF%\A"lED4/4!ퟩE9[tE=9ye0D`$L;hg< $#\|`+ ~(O/]ܗ(E($ .HMqjrR#5em8Ggii23.Fٛ w7xfP4.E Wá>nS˝fĸ=Ҙg%hX{JeJHW*#4WN(%a:)@$y#z3e=eC&( scpz.>Mb8w0--< Д 9*z]10aB)栗bpn'hҔ\q=w"$ﴈ ) %kZrB\NB%ܵ4K.sjc~;~'N}4]#AO^Ni:>- uc1h +պ>#×V>^ ,"TgVL'FeцIՆCǞ,j_`!"d1ΒTQ+z ܮt ?aZR2/Bto\Ya*үu0 iC_*9WE.]AsD._[zs6/OkFȵ.s̚Uợq)28W|==@t?loE6WJhP\sp.ly4BN xc (::^氁'c処YB|&F ecRx^>13-Xh"axf@-EmpbyW Wۅ9$n!5m˹ͭs, U.t <τ%E(6f[U>f. +QfNUe͊5rC^`ji6Qn !#748+".LY# m9GS*7JTS)5]G&4u?<[=r͑rBi\iqK_+[OJ99EvT΁q!?V[ NRFo)ۥX. եU\|9ôMfEΔjl\ǯEJ|ܧi׼4FR8gZMqxtʌ8W0܇6@&[,l3g./Sy9 )9׈\XYjU Z3"B?lJVS*AD|S@SdSB5JZ9Q3d:ic߁Bb^]"h^?x0ނDmf4 A)U.0uѿ\ P&K;|Jd7{ڲgҔcϥTɈKx}(i vc>w؏ lraz`tR wvp}OQgl ?lD)GKn%G䩺PCb1(+qir~m0qQ T(SԎ@xN ښD!e,bkka\6VE5.xO _cEP^,D4dЧ js8l]`MpbԼ'#c\˹@y&5QdFz JPR5YtЭ`˄x;甚 p+[r~ДH1M[pX= 1}\e%$ZBȧ SM.صE$='?7Kge~ QsgpQӜ(?jz?0ˡkk]|:uVeH|KLcBư05M C"KRK9YH2穹9T=o7O!(P-0ոCm #x11jI9u#‹p85ڜ)0-sŹXD^WMSK !h:59di ȂUa\Qm!"I@o#So'ѧ/%8aUEIajV6]?W3>Q -VEGx.w9鄭:Yk$j!]'@3bW7?)>WךcO9`xvXթ> ?~"w~r_ׁ-j00:.VEE%+_JR`XޏKH4n݆<c=-o1h[kOEݍ*Pg|L}(A:Nf-wmhÁUf jI+TXS8>P}7;q2o򣮠GfEBf*=/rO0tE;ƈTɢS"$fI߬:M*q*-a-ך" um(00?JxsB?ZKdʲ,,)o·\ssO5_%O+ĚroKؚe.M3Xi$|PaՕ1D5}?[<gk.^DcN^ F0.AHqĥ%#|1rl) e]$53D|ݳߜqCh#9i21z9Ï3֑JX)59 g0f89Jtq㈴k(.9`9ܦt9_Rhvfkg\3mpk Vj#ܤH3=b~R𛛷Tg=c1ңy@phlz{GI19 =Ǧ( H2DGފy^×hSQ])ȟz+k %N@?g_ Yrjzѹ7zCɓŨi gUr\3eqF)8XkΙq&;u&ow.hp^?zsHs;ru7k1gC Q`Ht'PEl57TyudpiT{Ejp -(0d@Z3;a 9hfk`f ]ķf#B2!"%t 4bj-ʽSIo}95+wsSrvntVIפ=qf|<eW9,%*>C8| r +52@`93fmOjY:r|w+T §P {o%Iz]EdfU  Q}(-HH?2)IImf0k/U|?d|7^~[f`#SY޸NNF|8̜LG|W{^MW^jGU}.> 8!.s\nsZ27#W͍i1A~iFCp`7~{qwY؋Ү!:fc"6Sf}x|LWҶit<7$JrI\hL9s.Ij1Ksd/]YyqLvz$oGZa63o\\'8P[M@Bt$pCH7I)lLt|TkBACFDQ07 1/W:JI'~n4i9$Crk_*!t☿Lj+cv* IDAT-HJ)Sڿ۵s /Khpo IΧ:oN c-=bwLǩDŽG&VҒxmԚ3 CM<c)h D`ghL+ ؎lSQE|{){hE=/Q;x6T}9O5n.ankS\V}l+ftjFOG~G0{C&cq]A(`u()< me\,t^9NeRnK&O%Ne Pz$ƌ8eC鑊>gxa d B7:Әnɗ鬘m_Cߓk7D!,+26 9 qi51ot2cT;M~)-ރ$ru * O7Vڌ:oK >ۢvq5ɶ Н{z?dң< #!z #Qm@ pd'v/c 7ٌ]^2ad9f[;P4aiV0vr*0&~vo=>Q@|pjzGż|c:M΄15&je+V:{ !|SKyz4 tyoC]F*!qӦ ݙP2(YtDMie>y-;T[vTubחWuju/i5}4X2s-|*w}Ř2isΙH .wdgC= lYrKUhAZ61MTc(7z2;pj&c-±ː-yLŠCI=O}圃sM$~JnbxfF*g-3W@7Z_#xdʹ=e7ۊfW~O~68tmK@7̓iܠ܊$YVo K ĂS9>C~zro|cvZy4>&S5Ь5Krl6aȏfUr=c4:mW c/1ȕ!(ʇmM\r۲$L`scj#!dvp'[Vn^+Jg٭A(A$wrsT>教kf92gG!Ev~}x=H:{%"5u\a{K` |G{9,i\}3__d/^:ژb纯׸kNB^6OlUءiu_PS,mwjUPTjԦ1=*h'+ ɃN_nZ" JYK{'XszJWxS{>5d߀[5-'JY֕GSZi}w &@x2I;5`|BS=tGayaƒ\k\jzo )df?'d1{%D1TNhj PS%kXMm88p ?_fM!B2wzc"x߄ãʼsAD1w-ƺjz,)]6Ա܀9Qſ ANsTL-r:Bq?3j0,mG9ݼ2vx6~ WdqANi&T$ThhY.%ySvXm6sbk`p cH\=ܳ͌n|hfB2QBBȂf @s7@Z̦X}x':DEi|[\s{uPw^b89վp9&ET\M.χyܟBq 6n AU 2] C^w )i摪f_<7a vn1[~>kon8O&,v^ա:O%YǬ2Pq+" ñfzo$scȓɭ>'ZjST+<QT]hƲdD f27fN/IjduXN)loD.G:h6\ u㟈õiH g*tyS)zZ/_DgvzvǴ`"-Y`U֎ģ*7vC阬Q*Bn?S>i{vO'Q'Ik=eBH_Y4s!f<9 \&!;f.81l1B ,am_KӬg??3m¶Y8cWoJs( D$ 3\hc.횩9<|,C4Sk*OƷ=pXv$DWm9:b {~ټ B;z}eʇ 8l`~һ) l1T,Leb5ȰF̀. lU2Z5))v+:A?ULJ%4#]B9Y %O堷k®4͘N#Dp+r\狘S.]O 0s" [hx$MC KSy]R<6zPcp̄$#N^Ei1 qףs<be4͙(5btҔ#?ǽ &A`^t(= 9i7+i׀H.cnjk[ =_JS3zrcS}  T1AK<$<~򐤑}!~ۭqߛXhPulFGѸ?Afl>a=@9 #{C;gӕN!9"nP.H[T\)՜s1hJF8ij]HGX蚘f Ck dƵ8\tS6=QJ`"jP|QoQc,$t]DC ܪM.܈CH/b9'aTRŵ~Gg iC :^N=thQwi:X ՠ?<7\bQ2gxq^ d mܡ{URB9z+ʜ2_r]DPCfK]B-C6Vci<M?e+-؝ب`-oP.[ ccb;7!U8<yFd-K;7qPRXv6c7 Ym~x_j2ccf#@/ïAxP.-cf_3| ChdC3sJ݊xNח&بfI0gLSu}\ >tYoFr]_d<ˮ^3 q_c=1Y|\(ï7c|rd SAϑRVn[4uokOEtYk$ݲLPհF--$P}yQ`+k :.Ft~w&$)AB~;68KZȻ<9{ė,dh3" ZgcmsEsŲ~?Him$\\4K l\&q ׷~oԐK>l /EonbH$Z9tk&fo?h_99 ?2܇KwwE3kGgXBǝ-cOɅX&p:Æs8NG%򊐽7+ F| r>I$7#ɃA4SiHr.rD^DV;"@o - KrsM'.)vPa?=aIkY{H#v: ѹ| S'p[({ДOy0L}>+*HٚMNwk7y} UDZLG#Xgʭ;&/7k^zzm u1߄ïm?LR DEd_P  WԍsUh"I !+&ȡ2χ-lsVu0:Ӝg~}zoc<䚴[rB;~Pc]*Hz.PCuVD5i jo;6 )ѩՁ WgjBy+Q*"3'6gIG#l _ _դ j=v/3߸E޳T+ FVu4k|ұ,@c C72tM;l'd<5 AJ ܬsц֮ *nF6`^\SE$knvu-ܜ]Y-Pq )"p yU<״A ݳÍ+Ȕ. qg9㬃Ȏ8w|g~?j I=¯.LlׇzC rĂN^B; ӭ zdafdgn',Z@H(IN2'C=_L8˭(gt辯cS -08±Squ:gZ B!.CA)7\(m*$8u9^ք^8ޚ@(Zb9xJ4_/Ȩ=@x-x[%8\>trg-=S{Qc}哯f|f 陾hle"Q _U=v?M=!h9풁4E Ucn17{ ZQyg29F̹#jVR=VU9s 8RH5m sףP܆ޯhVr/ CbCSp{e9)TA;"xwuĵ]YU/x$P3ivL%b* U1h'*=gM#Z+o;軃깰d@\k090=s~B(9q yk"6{NJS@ 9T>YJٗ2@]Q;gЙ5GK#î4^յ# An7pagC S!?ˆ"W\{`bjj$kUO+xeB.w(<;ItG.gx$%ٿN?;Ѹ_p&O-73YJ|໻w#d|=2pYy]R2 lBA3VTCL2&fSϳŰ5-M.{A]vuACy(~+Nc"oDSѨšSخN%nzt"/F,۲Piǘ^=>s.-X2-Y^~N^}j\jN 2l>I $[:{ { fm҆^ʿPЬI!t)͒{~j"LQ ˋrE|Ca;'fcqãA<40}q48g*\f}Bcx|G<5 $mK[OY6clRc> UMm736ѹs)XiV]UqG=^:R[b<ڗ3O+UT*l}E& TnhG>]1u&A+)&܏M>^}kPLi d\sHy͐J=.^A!gH"g y.wA42l֍c2tx;l<${P{O#zbdjL m+ZYݏrss -\ùCl x=N8'ySHgZ܎:Rvp36w#s7fONݠKWqY Z'B[ wX6{k/<*L#Q(_8P4-'s4?&XN{ȩSExa?=ޟ:{b40s}ڼ'}~b^еpOtLEONLSGY0hHP(O~YW6+ryN9,o ngC[&U- IDAT ESsa{:x?fHk;!Ҭ.`Xj,E{mqG\)q PEʚGݑR=TN"6^'5 biA?r܊PS=lOԣt s!0|H͂G#uvbX-?ܻzwBv f6r!lq{sv ޳bG\D1p:b;RLӭWi猓Φ92N?T깰vCFOl(~#0o4Yg޽eɮKrܱ14X'[Awpfk/O=\{1)e4-2!?a?qoBp.8׈# j-wzK,tg "E{0/sS{ ^$mxB%kbWk8WC|@w:;ny-NT8b]G Դs c7yDF^X9{^\qL=n~ Җ5k0sn4}aWρ3dCxyd(`́tLʇd}F9;T4f!jdb 4qL*/˟PrdɰBx^ x<ﶲ\|p_ ]n3C%`@v:`}xxG*VtQ= ^ @);yL,1= % Z%}O_{\\##tS(REgE jw?D0f{0Y00'k rG9`>ʗCؔIhˎ# Kz,d@5ϭ1ᷘwcֻN^Ki0wIZD$tY=j#έw\H:pj:cH&Ja{<o=&a[NbHZW9PѼTMn%{<Ǐ|=w;zp 98]Z-Y^\i{S HM3z= c{;~xp)Ca^skUFY e͒YO)$Rrm B2.b5?1=\kס[hv)r&p]WXf}8L)#~>#vᡇe %,Tg茿 Nݚnw0EUޅba1aȁ[QNOO%nɭ()KΆ=d(M11}d9xEkhwtfQ(|)457Z)CC׬iWӃ48L&ϚdOjdP7}x}x\$1=Ci{'LXwxv /×E BN*dc.GlT{Pz<P> Ϧf3k𜆛`)VYbfɝ\9E]qrذX+gioaNvs+7HCB ա۫\{uW?p%|4-0zg-HfKak-J}N*%$n~E*8DZTxde>Peso cn.BS ma'syRo.!1/?⮠v #n+z-Y`2냰7g> MvP2\-hmA~pKDlbeDTVWt _j"ͅ#'uL'VZs"y\"nV3лH>-@m>#Lk$HdS b^1(b,;BAO8fI>8u%`:aP=\fp\f=J~۷!.%9qZޖ ^v-0bCL#n#7QX42`Z¢WBӬe@ڴ#sI7u]@Hn6b>#fԏ:ڋk6"tNqCx1px;ְKdKI,yMe|(ʠ_,. UC8ޛp<5;c,AkO#)l{c\xGlk59AvĶW"!9M/qC!zG[ZĦӂr5"wx,@~o(jzw|07`B$֒j1_̍t O|okd ݩ"k[ȇԬάBK̳Lj̭ܡe1[=H<C @ďf21g`!#<<Z/yb1ĚhF4Vr&adK1s0eT䲍UDlq!szG&Y4ƾa 8q+(tVBV)\/ks`TK@,%Y J']}[{[&N[6bp;߲X#)w3:1ٱ}~!@2VPsb>N\cRVcF"d]4ֻwww4}'ewҮ!=pJ"*P<91~s ٞ,cʇ!كv:n6k#>ry0AZsd@ {CQW7{s9k: FKɗ5p4 Q9Ӗ-O`C9 (t[zz33W HN,$M i7$ДΙr$1\ SDE|P3Z9XHB7@ź#{( ^gxBN-y}4Jb3MT<=rI#$2Za 5 }rC(a>c;[s&rcuwwu\+t6]5a2N,qÚ0;ˍ}XxfqY۟#?@'9PgɃZ=b`=eّ( ౿ Y9Eks%{H\ɂez 5dAtWP5'%=]<'0v;mo}'5"LB![FMM f4fx؈\pҭ}1v!K0 bk$fPH%u[,HwwmU6w.c5Qi<.5ZdMR&Of63ެoPϧ=L[s 8FdE'4;A8gL@<#YʒTǼynzUax\2`ؚOdF4LSl$ K=|kwϴo\qNơ]9i׀|!%hN'sIs|NѬ;H ev1ϲK$Ty/'4A3C(V䩕7-#. C+~m@SϚKs6|o !p2ܫZ4;*NW&(q 8cu)fʉkë/Xտ;K|9)4 1p;vX=1=#={k6+X 3dn׎i !-ڮ 5 Gҕ@^C9{?FMJ~B1vOvJY5ӦKpN`?R߿{6ׂKhzRxhz^fW>!.Q):W-K]X T^̀`pcprHͺˋmI x;O&Ĵ#;v7PHj&*je99=FW?އw*+吿5tЕCة%E9YHx#; tx 'h\s<[:eS!?߇~#?w^v$ODhBLcnrġt~8;%-3l>ü0/q"^"8/ҾYӰ'e֓ xz0Z|A::ۚDOX ]FV/hݮ as=y=4:@ )s" Ynh6XAMrԫhdOBrI9,%Tg8]'6mcY;ުtQ N8ZCy%E$L8@Ӄ }v=qmVG_F|A3gHJhĀ%+m1% tA^MOkz_ONHe)1JucyV>{sKDC&D=:MpSez`ʾ& B\HP$ :ja˃BGQUxx*v vn5V=c% # U)Yh̖nKvwtt WpܚdSS4_ ZfL߃ s40p7dW4|L.B\ppty!0mͶ8iǧ\muSiA7z$Bj$u+z+7b15@)}3vaSj̈́xEBw!'Ov9P; p,O(퓽29yqh#- h~FfP2`b! Zd.fyRc.cBx;(hH*@MľԱu#SNPPG.[>o0ayx:)ɑ<0LҶw=l~<1^;hh9IJH0X߻C䉧Vzΰ\ ikz"$ 0ښNvȖ*%RzL-J2ra9"掀s5rHLs7ƻ ,78 IDAT8?fΞrIQyBᕳzՙV5w422AIP٘ű=蔃a*cVk&v,x{6 t )ޛTGZű_uJΞb{ Yyy\n^CNL 끴s7 k &<ήJ+҇WI%,sgdBw,蘹K<%qc4uJs(Ӑ 0'qf)fsXi()4-ҹ5Ӭ)^9&fh|7eu{-Coo! # з5Ԗ-Zݘ&*ئFL-%-0V n_`>*0"a޶#7PzKeYS %VSͅ1YjSIZf%eZ/pz C O '08DŽ-IP^􄀶78gCd4kqi"땫|ݘfICC&FA݈>qLG#[̋[sQO658-WJlH,fV;N1H#EBZR҂y s-+3 `oV[ 6$]D>`0=J:fjT 7CmnXeK?; t%}Vn9`U<J *7=7][ޕLHR@UrBzĎ+H )q:?c_,C@wGaLӓ5u0߻S@ns/Dn hB 3J:*hF69P'^p sdI%BJjو!K[M9j/}XFa^;0'k[̍w{'CA9F_2.ƺ{M2!V,n8ьZ]N]F;,y@B ڥBK>)&)ߕP2)G@kO?][(<c'!=mj cxK X;`FdY@g~6մޭżTS`{*[1 Nj"kU1\լy*1*u]ٌ9bf[예S3G;Ձp 0zn;G^@sD"f9 >:\CDOBxgm8.  )C,XL4RNHw, !RS6;Bg! 9NgQ~I 0=M8nqpj1 f#h\m*W̌m5<~0ZX\F̲Bے#:kx{a)7sfsp^VHBDU3du9۽aZH|z@ F¡}|:oFtL{6KwəS qʓr5\on g sc&trՖ˵u}c}MN Sug]P-CM iGhD̳Xo)33\Mt^oErhBqˠv{` v!q| C\=7ǒ:Hy3a4'fJio̚.֑3!x)$NC5Es% 5f&\L4Ofd퐵[:L1Zo0 üt4vd`,KY!zGj{{oS`4'~épZMN!qrYl`v+"l?%h!DOia%sa^Qsyq-]+a}c2hyzuLH95X@|}w䘏 T1G;ZGZN6e6˓7ă$zGnκVn=s \곶q)O#@an% zC+NsKxM'-tC;[aG h. *C]F1P3=4|EC" (cljND Dn"HX4¢T38XT S恷siN8O0ϖH P20@1h0 { śz,̇(0ј˹ XKbԚpl],>rS {;&BRr4!FBmW"zfLc͒7Z󮜠3rؾ" cS6mSp_6fXu#+,{a h.K9ʖuZv.Bq8v-d37H7dl&z 7qǽc:=@`Eէd  g\hoBwc'O0 0W|7E_)1ȧto|awwtA$ O0м@mq8k?+o0/%bpc@71x`$`#0p+>F߆::M!ֵqs빠gg_JJn>1Go5Ar ̻I:Z ט7j\0ϾZ]MI"0:Ν>vH?%-]X߳y|ٖ{Gѳÿ dGxXg8 ۸i&é۽m/hxigp [ھQ t,@~a57k}[h/@6']XqѲ6ۋ0oyogg¸y)l;;el=6l3+::Omsoi^b^lwe\+' %@!s=1 &ӈ(h%_@faiC&sq9|gQxHۙЕv}$bB^O^j];ڎ;z qZugSuyn4s-浓1󅉥m#ieO`ig`[X\s͗Ls],zF^ @n0TZ qr]nYa>yk@m 6eaa[Z=͙x{ ȹ09=$BBu~P}BrE9浲 m#>-_/#Xf߹guYk[EH6Jӑ~ü%o4!@*p4*ؕĀalB m͞㘅Y> y; [ ,g#vpyTA:`L wGQ9Γē=˲0WDsk 협rK8dqMrK yGɠmq@ 2h3wt gIc'F}üyoi]GahG)5^{0k<4;\@UДE-s܈ [̋L|O7-o+ HG ֑'PIӾgC``a[QFcה'`mL IOs~v!'_v zNϲ@oK: msH1j й$ ,y(d5l1v$7o|r%,fjredj[7YG %Oi!nH#tӽ!v9070!N`o`^lߑ&-áfG`Y0c<XV' w R\ci N:#püq(re9l1vyZKz=olc~\S#`ɀjCh[;&ce!(02gP17i=nG%tOg  DŽ5^}Am07qĤh==v@Nc-`.|/YW1@{WP^<2,U0dɵ {=DC`hMIǼ2!WaJ4ؠ{IkZi=w(myWi[~l>Qel43x)vd+0Z \(BPM5ZB;ؓdl)ߓ@@nG`ΓCבv z1i{A v'E\v;=g|sIiqjٚ_ppzwdtx܆;zCRMe6D-C~!v o>@rW#[,{Y0\anl̠&~%v!vBdH]bp0@1zo!nPvepY Xrlpl%Ǣ|f=rf38gu4%d0,S̿+YoCa-+yƁ]k1I}ǝvy#1;:o V-i1{y{~oqY^e4_c88+b)8㻣sV G5mv dy&xXkP;=P> 7|`k6K?9>wRb@نъ|XBXl$  2 90FgVʌQh'0(Xv/, PZj CZbd NgdžFˎ<:^8fYg%Y<Y\& h.˲ԀVgZ0jA><1:f=.®0bukJHfJ۫]e< *mmTb!-5!%@Uֆ5fm迄 h.JR 095"Fn-lf8z(ւs-. R[S) 1ȱ^|-CM1TR vɝI +P \@P&.}Ws%ZVu/1}1:KO TN;rIs̓oY>eI}K Z<j ƶfטD+̩,|v;l+y8`k`YJ1szk@FP)mWdḿF1eQ r0l5udS2SM&yΨ\r, Z1/إ2g/yJ:JEmO{F"pߑ$EvS$kl!KXDЋc5}՚ZgtWRk%XLMKKKL_ Ycsa5gJ %puʥMKx$ FI"p1ZF?Ƥ ZΚK K22HmCZ̹f0eY_8ì]f|T0֜AK!$ќcؑ ]Rn ]${jL8JJ!/1:/, TեɜT6X2\b3..IbB|[L׵:]sPWqKd]8J}b[bWe#ʭ(fÏIf+D5i.K1SzΨsr@X+tsz;`*砤ITs1ƑEIixHf-D1%M~9pn-ȅC|_]+nTc<>nxktQdHZ]A2ԘiYp2M̤6ZsYm59*k^/`$ki.T 0/"qe]P쾸 @7FBT(˯>NcNaL XSt^ %;wk0zRB0ٞFݎ\xv&dLp&S v cc6 GAiH&e"g ~%%F_:~j:*ʱzMkf>זH!%K=3ز"Y㎔\\\jC.l(!au"zm5ϥj:9n9tR7 FAKu΍}HT{wzK+2 ꗀ8%sva,xQ%a 3C",}G)S3)֗RB3b&wcM]W -Bdyطvՙ_~f95[")jȂX8Aǀ);?$ Dئɤd1H dOtN^+?]{}Vw=Uuj[' @пH ?0: Ӽp Fw8tPM}R13,е&pGX fȌfEnXp$=ZL $)D*:Y p6R܅ss6)Iȏ1\cZڑ(l 2 XVN4 W;Ppmd HH9u'.h ݃r9VR&x$+C@M"̣"֘i,66 =&]2XwgyR$"IFqZk^9+wAm_mrtX(j'dNXo+=,C >C8nڿPFSi  zKp~  S&;.X35r*m0:rDh?mg( LYBXod1b+f 0s1mOwSqS2@bFO(GNjh[X"ЍX #/M 9tQJ”Eim(r`D;`%µ)^)A,"ǷjpDg}Ns$>#"#O% ͷ ol0\^sYQK"O/Z2) Dm-t2C|EyWD -DD 2LhcV,QK|Ek\/E,{23r?n>7!cf m 5c¹#s*RX4X%" A$LMYlrvp]^ckYz\Om d&"Haʕ)&/TLHEG\.lѾتBxlE٥AcJCw--)]i&&owϧ/~|ʜ;Gbh<r]K<_3V3Y@d:  K]]wb DH]_D ]v(F>|NhjQ5@~dd|ֻ}b9Z]*ԕ\6R֙|--$j-o~!1[gEY^y[=,$v'l'`ka'bsdYψEX9h'amX¡Yd42wA-0c9y\3ԨLPmIhWZTIjc%sɀ)Nf2;MDWɘ'a'[M-DކLM|Nd~^|WlUAfhR9bzgvy]мKy7xNƙjknws|F6J:M]Hܽ( sL/~B}"j!\"m";MjrC)_4Af4]1T+ 5ѦXM$F,TԻ&:5<I԰1ٵC'͹k) Ͷ'-f[bsU=*j a#o@-oԿ)5e#3L <|I:\t71sI1I vNo3Lt 4gb@{QUHZPmy}twRl+Ƀ>"(\-/Hu4oH 'ѯ!rETNTpu\='#B\͡Vkjz川vͻuc]eK5XA#5=3U92*fW@Cü:~WGJ, |hcn>2rMDΫnJ$vpcb,*0]мP#%rr a!:M>'g6P2:ɐLwN_*f?eSࢬ'\/[&)'ǻ}n@;.qT^rd^,oFy$.ְ sLhjڔ 9NFXv 9@Hݜ0[ o*e19s|Qm]˃TǴ1? {1&<>ܿ;saUc#Sݠ7r=u}! 9scKo.o<50QSx)68.p &.f;fwd~G5{|8>Nj!{v2P}tC2@b Mfzye^ _1 !z3B.M@e%>IΦD2@;؇ڤS`شW3ӏ)>em"+4eo PB@v:єf5r0jy}_uOj\|Lf/ecE6Usj葡_[1Uco Jo30i5ƌəؘBsz]8K"3*g/ov)&Oȏۆo*A2\H,ݿ5u 4.hc̤qz2MϛUCC˿(@,:5& n'x̝Q /nB cẶXj2eZ11l/N_VL?F>%juju|`e @ррScy>hrCi >''c;f:"Ů*l'cBT%_ꥷlNo푄n;PLIc3SVc& fBd3Veuj8YuWE 5 c,Vczhx@Zۻ?DTfMf@en*’m[lf. d`-_K;1LmNfDnsc`CiZ{[g.}Lf? [o TIf9QjcEQ QPU@2)䈇4NwbP9Z}ݼ#œ~k唱^IDiTwAs$6S)@+aΑ$:>$2]_ i– 5nְK.mIJ4C@1IQLn! 3c H{vyG!S2}$cCw$4SƲNmR~tƐdc~R(tɧ:w'L91Y0A" [:[ףCX2N? oM fs@39vft;Mlۃ_hX>JHsc8r  - 8;uJBKg/҈ydw{t d!izO l-_ڥ*c`邡 eY1R M{cfKfJیCdss?fQ!4zC{՗ڐ]sskU*o: h0T1e1fy ~%0dʣ?pj($LLm}|/::jJZ Ә %K sr5c[iˌkN/NZm03W.p@7 _XPKiu%LPM|+.:5èkq:@m3Řؕm _ # no7 $j#6Jcs +?=7MQ3Yv!*TGQ|/F#ez~=LP%&I,}24bH1&=C!yw 05-3! d̓@ńdf7^A3I3T?| :󱡵$4DzGh0)pӦ*jE&R$[[g[>t1D}kLzmԷ^݌^j. v.L&4]fsƛ)!)3AM#Vƨ?CfH{LU ҒBNg,@ PΖf{0濱 51֨WƺEX}f&cAsl#elh]yEx^E|>;g&0>ilf N^Ibц&Ha[_8%-޹Giq>HER[o >M)4' )f99ft:]etU r(˲ !V8.xvb:hLD;5uN,e1]:I .VPQH8<|Gl(P/sND&;4SX}2m_Nn()e \{tAG!RnNmfupխW Ƿ ]g6bfHCnuP8곺30Ȇtnܓd}NZYi أ>e;3WĮ'E4X~rS*MPt sT'-S1JFxsO>8=i`6B c Nüt2:L&k0Bv??u]o t+.LD0a. T% r0E` 8`vfJ~IM<}S1b:+Ub] quбm43)„IE 5e>-AFhn"ynQm\(O-9~M;'*zfNxM\_A}-Ôlw :,B %XdUrdԯ 3M5VGn >panxݱK0]GK+Yl,oG8 pثLP Sz}&^Dm)k@.Aq@w155L ^ƫ"V׍EK}v5$< d d_7~M67< cK9&ÒpsTқfdҘЌ51ʁヵQRL?<}BD:yXzyխAx5 n~E_v`م;Zs`-n1u=0q̌PPd;V`h/lCca܆%ƫmoW;k2p=?=KK}7+SqsZz'F׺ʿ\[TЉ;14 05rBqһgO7> f k\0^c:k]!yV xج`OXz \``Bm uOGA\ w׽aF5vAG B8~oKc@vk=ܹG~$\NJkZ;^_>4#ȋd#}J9107 4S) 9֐2tǔFKC+Ԏ;Ʌ,N_?ٽz}Qy  nJQ+@nPH,njekj\UC-ݯ1hmwvzh  d \5Ǡ mrL9Ӝ„9B6@?Tl-uV">1R Ƙ!5!=N<.D@,0DmQ(Ey+Ltu&]j*:䡄uWtOq]y[ew33;HxbvSǨWKTn4C ѐ̮'.hd,%س'V5XZR\7{1I ) kHk@tΰK}%S7EPE Tc)Ms<؞6ك4WR-W7 T$v&?oX^|SWbZc>T db{{~so_b zk itOX~Zkθ_`Zk1V\ָ,IŎESυNI'"lRրgLW՘Tc2V! PqCIH&B"r̦"9Ua\ 1Qn+hRđ-Bސ2$dNclṷUQ]7"&?}W9x YX>+cel4(j*>h&6 0}tSL?)NnӇ\Y<ؕ.9APkQ%rA6>Oi>R{LUD51Z,Tΐ}Tuf;1Vz/~ )QxY>ߴ6i jl%sǘdBoYA wn!DL  CƐY0~ɧrrq`P#Twn@_o,MG3䐻N=~مZ3Yָ榃i?I[p[V 䦺'^F>  +1i cȀrg-sFdr=C I|@3G Dr& !ۨ @̥Hb!E}8嫃6}Kn+7;tA,;iDpuUቖ]MqѭeS=']k6/Ҵkƪm|(0Dph&+i [nƄ&=Mm@0PvL+WQaJ5zoOXk 18Mϡ ƒf ƘwwQ o?z0:?/=|4kkf]٠I'x$v(^7zzC=*!z246x:>E5H; ѽ"zyV["i{!gM-rCoAU=.Xva-k<\1m5RLB+eaK^B0n3n6G X4ڤem 2& ǰVJiZ'{g-< `1Ӄmd㉈;U!XSFnA+(d{7`{y8}t4nSH5O5R&{kOu9YDNz}LM$؛qc\|\!Rk̻jtL9 S:&u[w7f sn->q}Ř8G9sAf¸]6%pکUbR㏉Eb|/G,6H!|G*4>7xo`<;ldEg۸hsI$U܄$6"/\R{a@^T C(;\g W&;H'kQLP\J%ǿ)FИdL?XEQ1m?%.?zasG:#ZvR$;N75̲,1J?aeԾz;΅==*_`Hmۈ R ~_qSN+6!apjt[ pK$}KmLEcsc\B{,#5?֑+Gsb"ƟJߣ_'&jyS I5b"&>U^%`" #-2(נ#25 ~i"q̐ٓԝ#EXl=2tM`u/j,M4sڼP=UЯHiaJd|w+.ͶG<e~ydwLayjݡR0Oqwmۨ Tw~#H%ƷHp Cc40 ޿IrqK$ǻdK^v+*lY8/J- J@.j|+-wgґb,+:~ùq  v@/,綾P`k8T*T5PVާ1>~6݋RE~|]Vu];̯1eVE*du~?lS^ ƄǜX(X3hJ,[ e50ggѰ=4Fn7ϝ+o28F/vZJ{Aje-3/ VXdؚf?1|fɜA !uU"ЛvRW^t6ou`o$P܆Zzf.y2;]i^=yd->p0N'8zY016p$RsxY)I Ɨ kBhQQ=.9b!=^.;ƴ5>[1wr>OeH>CjT4b/yyZ.3&UA|]mo8hLoLiCZfh}M_P?7E}=?6Ħ;Pnr'&x|PM2g~X^5`-]xϊQ=W+`#ګ/ƗH$$)'V%ja[i|\i!.Pe$xl"& '͓#F)=g6R/0=VLg@4~֑6bۅZLJf]"?u;7a^->98%{b;m4G b{^lSgjz,ox?ר4 7!hyL6&Ѧ\LrZ,<'GHMK!*.ӭ_L|#S)\BlBxךf @}O 7Jk#z}L?-Я'w S^~v~h;D\-QކaZϮ , wz_&:廵S;h/qװ; mXJi38!aC4i*6Z`DLA`¼^6m ܘDNmzqu`  ȚӖGh./($KP#".;%XInJFj}>B'[ӭ2?n1nfl\3l9 Y̟[Z1 UK3hsUmw&R'vjQ\ 4ż+} &5)=o ca{yiz.9') BtaR 4RtHhrjߕՠ\2tNM"v_,}!S(ʥV%fpfOpѸ,C~8޽]SP͸vξ{к %8_e5~*Į90(//Q S:oIx JˈCW<ݟ=K /]?~ˆEi W?8vx\?YGOqM$TiQZQ1c51;r+CUMp6HwMr۽m.~!'dkvtEh|t{S`E1j݋k,kN;uR$g5&`˭a(\M\sMp PLi}~[ ݻ28ƀZH mAGMGS;`1=}F캴R"Jy'h2yF}'f!i鷣߅6Tk?@w102!bp $kǮY/!lVgu!qe]_Lb4-;Įg2/kÂJ? @T:l]i*\qP<. (q\"K cmS.`4ȔdYq8t >D)bI9Ep> IFK & C)@sʌ@Pזjb &F_[ (f>[Lgu<i9+!:Uٚc&mѱ˵̀eNdzp3}5K/P&rrXI`LP' ~%b`>tƶo&K2|fTʹ׎ ~ 5^:s@]6'Pq3U$`韷ndT,2%bH2Lq/*1fj2 HPQ#F e|Y< n5[yYAe:w柀(zew_xP4@lmH0.v'G™MkjT[\P.6-GwtRoJ{I[?;x  i8h1BoS\S8pИ&j8"$ 1z.%49;aT,.]{?l$A4Dǜelu07x܄q\ nq`@a-3ۅX|,BrC1D~IC (MqFL۔Y^Zl;HSqc2%eic*|ߗ6 ^2bǩmu,3X ̹:z"<3 $|XC1%6z\NCJ t%ׅrE{~}nV̶A됦dD6e\XVǀmkGC.(0;'\f@YZ6 12#t%&GCp 鈚9G@&8MMN}V⬏W.uZOejDTXv^:6@sS9~39;li>l=x_0qi<I"EpFDӌ |(-qU;VXfu Ϯ ԱV5Zwl;*{Cn`t33jG}!% i||ZArͮr1Lc~r7_30 |ANœh21/5&I9̙pH![~˾ĬhDORi^ciHڂOld *X#W 74'Tc4M sCn0(6X-Ӳ:IyǍI-ڄ er $vLM麘s.Tu4pac2jV"HM ߱>'t= ɳGrr?@]ejcrS[D +LEys>W2r2CڦCD#5Ht̢"= =A8| IDATxf,u)ָɻ>٫&eHza0î!ղ-䞙@ tC,]Wҿ-f\yx;-֗1YT,fIN{.F8&x/ueu6 e#ǐ۬eD8զŴL]P0n4J1zNI3f19ۦ!"/S[jugˡ6-=8$nHӐ'kXYgd{":w{."Mnf,jc@'w?q]Uf]kx7:f a SR:eP1TLzrDm2>4(6Zbo~).DX7v[umI}0*@;Wl^=MQ';AI!wh_D;y B^՗ PI1;fdQ4Ld-㫫8;-K-WtYUrV@oTnRRީ1nRp Mfyyk:`fd2䜇NJfhnX."(qΘ$pԽ x&xY,*G|V̈5SȊ >>y$y³߱/8[C01Gk /Ʊ鸆КKrhӗsGEi["} • "ᒀqD 2& &[:4S6`"`iLQ~rpɖJ3eR&,nVBrW ?y8$S$s8W|5hsLrH{/-,)Q#` iy4205Ci2}*M#= Mfؽp7_; 4,iR_S!Sm iZwq) !c$å@&t43?uZA~ IuS4hݴ~~E̺5&>}} }Q,E8=yQEq56G(yG>'Ck_ }$)H/B)Lu{T*cbRH0[E"yFC^d嚎]9N*JKa6t'cvtTuldZ3Z9iF$r0 ic-f\Hބh#Z'jrڞIj̵F |R &͇<́:%e&NaJm1lzu S!8؅TxwK<#u/V{ 8քQ x |~(HMWWA44P(OȈN1Go"|PNUNUwE`1u\ŃIDp];l!j'qXSb#|v9e+ؖH_AgP(mRjr5;46ky `.r03RuqAe!0m+9AePNK[=uM#^a6\s4 3w?D~vXiQBړM@9M4HwHe=)v/)#)-qbWca; -*f|=sGg,Cynv]i!`M5=2ې$"(<%S`J) n Kb\EBmPcٱ,ܚW*Yz❛eK"\+&Ft'92z|d(FJ9vި9Qy=: &Y8P$!QW+k M7[d𸖼r n{.1c.hD`Emo mapHZw-^O4iY\͙ڊN:~v+mg˚V39f=\^0hV \kQLLfs/$n}rAZL `D5e)o:hnLmczec/b}D{>1z0(($v-Fz=]ڝY agp%s`saÛ^a }H){':͌H(߯u@Cy7EpGq\ed0%sdNxnt^?H<͇}"ka}{cU듬xF&NڈOxo h{dESFc>@hQ=byM ]!ەY]:5hBsQB* ṡx^=Ƅ9d`Ss#QrSߵ\`HL8)\S0⡅1XXQDv D,my3M>FG3|c-D@,P\Ec) Zx"nώn?A~ nf bCN׈ЪjH0&AC|!fPrk‹,nQ3k2,j .Ĵ 9)E%(&D`35ٓ;g(G}axM첏< w 672?GZ$$a>+3舂{VNkl>=bFPhs(25J-LiPHs5mP0>kYcZl\M35t-q$b `#w.J1wbcy!Cqk< MY*62.y,&~7pG/ sJ&vislnQF8PL9FK*/+%EqÉj`@RBT ]9BZQp1?mr5LT=0bal|;EkҡP|n#{I4uh"sr" `.5K`p ` w(0X.`k 36"䂏l6Dp:9 ϝSXʈc |E!L2R07 և{ Q[~? LCI4vfg& H+-- w }vF_r0m} c IZ ?cfX m 0. p .`(ہkcFDm+hj-s(Fꩩ]c)䘡]e $kc(s+;7΃HbPp>w$ BHGkMSBS1D i C@*iNIgmիRB )k57rqD UsoE24b~ḇ `CP2oK,.sQ18EEsCNW| ;v1Q_OfX~{\tE/dYzH R{GVVXcHDWδ]hu1u&fqP@oMS :#bjܛMdPfosԡaE2M"BQť0J@9r s`Ce臜?ڵ @t{XlW KT4L%53eD5Ѧvߵ90i|=Xֺ/#_5e%@21"Ւ3}{C[mTFǠI<.֋e$m)q zUXU%'2J)mh*3g\ V=C+oEAU٧ɗcAz`c ƮpNSb0H 0Itc 1"JB:wYddk#P"W-p^Y9# m26N`ب<3ƗJ*r 8A ŅEN&"Jbh8&u{Xt`00# ̅ڢXXm6 ޛvIWbȬ&AbumD#rhtF?[Cː#R#r ʌ_07xdvv4r{ͮw|2 c0QuI^c. 5i},mLC]w ^Td]}< ̏D+˅8CVPXfJw OuݗDT)~ Rq>*=2){7 v$=!xk#1:T\[MӒqfL,!UZ 0wBZgJْ}ly}LpXzj% kOhDsijZ5Y˱2jQ .YnzjoJ> [$'wDL+Ugg`500Y'//. TeP.:V,S/9Ea%&&tW,ˁ25*K Pjo[JUs*EܱZ1MEZB `,I)f 4}i)uk$؛kOteT]"@`].) EFdCG{S8fu0\v)'uUYȭ ϕɋ5LՠSvjǚZf5=5i-+-m|V%@]zgWwf~JropX)#UXLNMe:WzRy^3'1vV&jP*S? 'b jn#seڑ+-(I )-R̺=dΣ'A1eRܪ2R 0ƏFɔt.{5 4$y.%@6rD$V?clI[Tbr4H3Ho4"u:X㓉Wu RېFqbrK&ΥlfL2WN֦ךQ%!p&͞ RL;HG| >81cscd4Q}l18t ¤S,sp@z9iew)ZD_o o@ `gQ,/l2 ՘ hwNH-5+뉖s kwRv&yDM &}%^xֽrsUn5aC~1w_fTK"2@O)imhq0[Y^i80^mc ?uR9YlhScl@x\`RҞt_Sb_b~|0Ԕ+sLv11S^攱褱 adZ32[Б|dž8 8gaa0;(ㅤ"d PN2p,Rjmur#ј ^IO0g;AFZ.JAyN2e"x/+sEg9jMR{cen1ε#ksVҼ m5ܼ tN '7" -Nbht9`%+c, KBإa]tt57j Dzx`RV2 V#C ˩Kby`ƳqԙEdu|_)QviRo)js3P˨)?[8)?FeU=YJ <' xtfz`^@S{k YFI晛ީ)kSs WJ/Q49:k;A&e-%c9klwmO&!iB1d\hrD[IUƖ7c vvk0{SsS,3R/AjAZ }0G]@"E.}zkKϳt9~Mɥ+ r>'q̸,)}#Ȅ{ [@zs%pHu6 q5PQאx>{f張p<+C4my{ W|X |zi ZkD\j\fi/q1rk joҍkLhH;+ f5D b{m{xP $G7 PA5Bp,ܮ,`u^N .g/d,t] $ju eڲɱPL4BpB~ϥƩ9\2S۰+hi4_NR7mL_/ZSk ?jK`z#s9>*(@½׭,r_ 3U&8BC'8}|AdC80|dğ 4''2x^\<=P^K `43 ĽG 4jJ=rMzM K_uo|HY"Fx4di)/MD\S.H,5^(w9O +Qn}ߥ>fYT)էku[0'G @Eh{<\M.b '葼 KI |`Lk|q _<_SXgM%/S`P^G] WƩ t>,HKd?l ?RzHHΐqArdiV涷؜xR,.( >$'  qH 8<2P=9M=bxfw:y:6Y;s0KoC4sEfŇf3\-wpρ$qmց>a[z 8|sƨF:#xvkɈ9jgYm)O2zNRWT»pe9Q%/G,qT9 yϪ*s2WlblC@+DMc)q9z ·L44FaܵlS! .ĻD N/7K+hy ? >A~{pSOLHUfSkzwGa@[dܩ>QkОJ7`/hs-p7TͅEqp(C5SeJev]lo9[ҙ_籚8B\;'OzCH# d)m,g^>!Y[%]ArsjV}񱶹=j[yP4jCZePP/`#~s}f.O9}S91ꚌOl0 \s4Is$t+K`d+ j\5TOqʵvWqO]9 ĀK é}19')Ad#@r9[%!95U^؁L}O ̙'Yj0 8FfuܵG!NJ?\",#+H߳n?xaJrzBT~ n QSb0>۬u/5ֲz_wS 9'^ij5wۂ9O7q2k0 ,9242-GU Η ]NV'Ch7̡O2h9i4MY4iRn1ܲr,T^B #/,ikkVW2%ukd6LĔSa=s-׉p}ڧ!ْXPiQv> uRՖٙVJ3LLʤ]Sςĕ {dD^b] EJXiuhuzWdiH5+)RbO%`Ծe-?e8/J={;}{3c50H+tJ-E.dGOăD⪠܇,|C{w#^hb~!Zӛs;3~nRfK/=K hQ[W^JKk@s ve~nKpxyad 0 1?wP]Z]U5wBӔWL)h .S֬˸S;` YMl|=G^8o7yʳٕylp''WO-uBWtpZ{xb4iÿ6‰5D%+D'L=ƵjVfiµrA|ocuL.qA3[־ & g荏(#΁;(J@25rFUnz)V\`8 Xe&Y hC>-#hIߠ<0opgT[GrIFg |O¯c6S,LݬI_ti)^GFL-jǡ,g3`OS@zȬ{H/]..別n AAV]nX$sϏmT}nS<^|2>ڗJ5os-533~~&}hq\IB6Omt͟p~>:{Q vA.0⼶<8wrLR@T0,Vs%Kr+(^nop VI6FMol!}NzO0޻Nbip1_i2~ܛ2%e}JkK7S7AMlrA({9L3 d#ܻ(Xf,7nqɭ%򬦙j 'I靜Ffi?}8Þ!o:I4 َlSTLM=cRm> g9`tƯ@YRumkʚϱKW}Hd;h u?.͏C2HҞqUte)vjhVn2.bqBF*SM0JF.\ذEm-&mT.|8gc{G*ɾ87O̙$-*-3G2b_X I>k8h[ pIY}F-\cpլX+_ï?wU':EN@8aȄcRyIH#6J(n1T7|x9n3De~3 rgNI1<!ݓzoQV-HtM.A&{Vj [tEK\K^sz{(U ->-"81CE@g7l' iB|Uu\K@1¿ ߚi6-GJF6[s/>aB{!6qh75iECyε4mTVc*cvI|d_9ոkK\5e%CEEz]xĆ٣W\Uq>?t]$2j78c'MSNʯиjeDJvY)tk,Xcib՜e&)-^"? w>eƠ[㽞̠s,tcJ=JZ)0>Allj)"l.(;npehFT2MDz[3Ip i dsKYuE@v@N[/K0S7'!N]Ѻ{{}}{81 2XS 1_}W5I{0{l0kޞ?$(]_.I Oi\˄Ka-pZ{s[L] di9s@5r9/LY4ro&1wr#>̀ y-C,O1x1&ItQHn zՆ߉ N\W/D2|Vx X u s.19xX钍 GՌ'O8 D/ܸfl$]hؗiA`GiI`6u?~j73=BN0n*e`;0}O~JMc$ZYKt<{V&0{@Fp tj#[7ݣ^&7P;n}pڱR:#hF+O H{rd9yrMTWpq}}D;LJiIj dLc?W3 HMs6 $t8FwKQE@ {<"06oEHhRX8cJZ2"n]2h_\Za[@_ʑ*J\ B6]ƅM0J~\ b"{*3)ܭ,Κx̌7NybZI -qmM>EJMj@E[d;ڢ%%N%Oxqa0fY2n7*6?`tG!ɀ~b0A|-ۍ pCQ۰iR:S3b5Þ26Jk[k__ 7SƓT!E㦛Kq}L 1n N@x>D k~>פ}o3h]NKQ9H 5+BS sn-sXG}.v'N [{O^S~O^xj5M ?pC,eo0;q KWFmsx nQ٤e;7'ef8S +5aߦ4Üm5P)@Ţu霻ո^;nyF{~0oiG҅D<ſE4Gb DcLJ6/5O?[["( &)5N8 &O8*kvѥYN+8D(ρ|{>6mnXF }_zknV7w^byH0a7/) p5X#0R|]ocx8^,s5OӉ2NDA\%%J>Xo:w &YrrI=/ + IDAT!qB`GG9?3'8Sh ':5K2Xi\DouTk{/AZz}֭ X-,@hЉUE0=8B5,MU]gEo&A~q0d4_w65ВsI4S%JF>U.yK~7eϽڗ"mj Osv)O =y*ӱ|{7+`=;jS9?-n f:6p?qvK *A5WeBklJmr0J({uGk$7[NSC&l) (}8}S4Vvtu vb{\=&1c$wxbe}O\Z&Ʃ`ČNg@$JBGۍԜ-N5,>1R

#>=FYb% +8<>#쒙/< HvE[<&'pgRß6z79r_,Yu}k`<~axyۭxGE& ;Q\&=sL D`z߻P}tK).Nv(-:g s>q25 M.ϐÿV.Y/;tc 7@wnRe7.%ڗ7SbU!= `c&[eԢ)͠N0JLGMJؔb1%L3hT!Φg6e`z"HN IU9?[P]Ga@`™)!Cߩ8Qk0&|ɚQg6`8"<&o1JϙѣF}L (o_y[ljN<CaЁ7whg%Y3k^!Ps#°%Q{eQ+Dϝxe zr ?Ӥʯ)%=R\q!sF0NgY2h9-5 f7Z:4m.׹V9no->xYfșYigfdp~wC-y2%1VMg@hiG}9\$ߝޟ0?O`ƼYE;]7swxW2EwmF6*AvFp@z7^Ǚ ︤O6s@ne/*lǤJuILgfQH!\ O#Ls݂92ǾḺ N9er\2M{{j'UJ*‡Au3^$89 yZnq?<0w푶 >zg5#ܞv 3K}qǐN\"BG/ct="E$&`'q Hhii Y^,Y΄iޚ푹LۼCK?3' z$zqaO F Sє) 5aVQ**)a٫x<:W|D4͡&riB_NI N^qŠװ `njȏo>+V0yz Í -o/ rLZ]ϸh[e/gߛ@ux.6/DiCK@s>SC`<236<̎fJ & Ho; {? <`.{>e"ΐqK}@~R2, w8O++"/ݼt̞O{ƱSFh|8cW`a9 0 *C>BJ'CGOmk>T͈kB}v ëKi"q3-t²~ 67/MNz|.e^fp.X4'hSq2_-  92^35^,пQ A:#nbVӲ"A.sš-g:tɉҜ*K:b%!i5q;Q]640s8Pk@~GN'?7IcdgNd9x MaogH0W9-\߆nCa>-:7(1 ؞ulyyf04MxA*Xi,(д +[Rس9-E^0:bNX=&]BgG{#džPnEJ-];!߸[~W-u9v΁;'n;;z8ѰGN;M_CH1b3..g:TuIbeC<߸tnkXEkEWG1 Go%u -EaJ< 0k)ԋeyI*)'Wa|jMrڒ\,nn<, 5do6jbV-mvWwFc:J.Seu> ƻ4h)WRJeez̃cN<+72ߩc}ݘ 7KP 5cixOkK SӶpxI/Ό\[|!Uosw>eWy'y$wߊs7Ϟ I򓈵> 8_4̡::`S] җ06% 0;k~$SYJ>m j|s :YCs ,F01S5ykg(:xo}c`c&~!woC$(#-1\7hpꍿ S Me 0,ehDsAå4 ^n @dۋbQdWnmeS .Jf-7|'mMoC}C.I0/8,qG<KwgSZgTdzj׭sQ>W'{eɸcFTNS<?p߆ gz,Shi17}\޾3f6 A阱I:b7(\ UGR础V[]!H3tPғI<*#2x nj)F @ؒkb ͍8J\0%#ƀbfڙN2\0gz'9 AyhA9 ٨Ubs? ?/?b 9ɁK~Ճݾ%XAAmHuB۔@ f[[N ]~[)V3KŏinKFP\tbne_f0@3yx 4\r~tWpj&h099RC=>kND[N4Ov*I:eĥ7C GYhw#8 K*-pLuK}\G~8RH]QsɠXr `;(*ǩW=e3͚u&Xb:=F (6M /ވ(ei/Whr+6z>vvi<%P8-XcI7d"9JLrܑ0y'Σn"y T \FW~P%)"! XAh;kqnBڋR^ߒ .AȀWA5_=p*80u#&8ux) 8/`$Wߗ``/-`aߌW{7,?՜* _tm)2jCyk/~K ^2tɞ[qOs}wU8$2dw8{NATgA>!kY+Jnk`4/4s)E5Ije Z&<6N^v uʭ-Si#n\s~67=SŚ>H)~ȥ=إdC6$] ogp\n?< eD[M})Vy̲{':XdYNՎC h_h~MX [Bnj ʚ"ʡ>~΍0x䎡`r+Tvж< G 5)8{܇qN\58k^5Zf. Xʜٳr@sՂA Js2iiȄh XqF=0 qPZJ+5Ѻb7) 1bQ{|oXA3#Nww7W x1n91N8DUϕss%+ւyN͆vF ,͞MxOCZ]x0uqY$vس\ԗR=z%'deik&>i aiLm)UreS+d~^nf7q)h5DDQ2.,[s&fj(kZ /j#KjvG{[ݭ!Rlazg/S*#l#3q @W:jo<p̹ /~I5U;[RZN$棔r\ t͍Ѝ2z.s3)w4F1F\8ǀLV yR2ܷwp6466 oy.>vr-J)B[mҏ>Zp[#+1rB/#o{ݏxhr"rJb8Rw{!O'n{<޸⨘e!S=764^.p /DWv)g7D!Jsپqrݲ!K&ni ;4p뜹=j&^j\t,vָ1^i%]4z|@su 7y8|0tՐu!b; y;hq4Xe4C$ d5/%(7#+TJ{q\ qe01t.L;0sK<)oۀB0&K_8d?w(һP m ׼mF9鶴TƬ?v%[bjC1oJF̖s0̒I5k뱴Q3id8elJ L.w79G+n0$qC{ n`p!"ODD5ߎ[ :-,ۚ͡>O1K (Ssk7=t%rfw<?@H'x!;/u`kP`z+~v#[QnĢ$jdq݊s EHI3=/4tejZr-5HJxIό ߕCD׮︽  Hn>'8⪙\gIȦ@-[x`=ng}6z-Y<9R[Er#'Ry\ }O$%|/Uf9"cXWT2d+i+WKiV%x>3TIBϟs{!{oFIk0"ͨCJc(N 5FI,VIK$X(2 Z_,>noof\yjvn\wӚqb} l}0+I\#8 OH:b>w.8C3b~#:I (s|A32ƑNid)S#`Fih-Ux?tGò3B3czno ״n{娹[7:i jBFj1p9-ᡝY3JVoJ@]讞ؑ ӈ1r%o ? QObv)#Ά 2/ 4xR:ʭQ J\Yo\sd m`pUp'C;o7^nj_b2J0ֶ1{gA0s2 F2cPO*(疡8[LtG\ =;vR@8Y5H({dt U,XqWֲ9yBqB+:>#q|r͑.qQ%|2$!O5|.Cy L,N͌=ѽ(;{:ca? L|VIzB+^ndWZy٦'tKB@vS":\1\_hMBgtA4bFuJ3h/@2αGIQN2RmHT}Z/cIp9khl4~dnÜ`dPr7`~ B ˎD*kx,8O>t=|1 2NxޝN<m:ɯeOfH虴4+x.CbXInhzO㉲|U?`1Eט%Vkزd]`HDbs@I svphMB@1AsO%A@4 :xʌpEh{̇H>:7u93$&ݒ A|F0W[\k!߀y D#HJ\c3`Hs!!c;v&U4DI. yLEp#*.UT|G,nd^$C "ʉqSFks^246Ng^MdCjڼahs,( }4q JBO 7sv+w#L8c~%تlo0"\ ;?xl9uxW-&88yoU)oE~9qJ6hmtYjGF](S.RRqԩ?r'~^R%ݖ.M`>R'?*=Μo[Ev3qN`Qr׶  5i}"Fl3 FGhg;Ub˶*)G+5g`FJO)TYΚ}j6ŨBHhv2آ%deba (Wcpd̛e+L ݉TP4 PjWS A ZGݨ&\ۊm6dh v %ŞE?,`d5B ~XAB >n48X!*s%ʀyy1Zv `;Y>OIP٘}sJ4נ@ >/2NgL0_!)= ^18rURDF`DjU:r PY9RXa0(.IӐdԻ#0b[t~:Q;'%@KUΚK(S"5h~IN禍r2@썟ǾKDoۨ f1^[b JmxX|:"`ִМnI=!QøPA:9`ڋρyz蘹A+u2R2^,بLTw qU{,k M.K.M PZN>UMK祦smfQyZNAN7|2꛲c[Ա8EtXr`BנgȰRh1(oJaL^AqJz=Ƨ{SL3R ҅, p0>rZ##. n G$Jq'OhH ƘsZg8;rOyq$4 :נ9S@W*K;gar'Z7ꤖ;d>]0r?ӫe5KwH's83$eŸXfvF|y^ٝx\1MDwI] Zڧ.{Ōeӽ{kA+@KMkjlI=t>!>J@nSuBQoO M]|}Q\3lbqVʙ] 0 b&'`>)q {WPDG9+s.oSK6r{4 H(4lXMsrR !GG]B#vnMrSL A bT@2*Cdدe⏞Qtc9}#4 ̰?{kIv}kWy{53=/>fHXH0b #$" RĆ$GD q$eEQ(!9}眪{ǩ}Ϊ}nw{{yԩSՁ;_ f6+\ mZ0vNLجe`.R\`'T%FrjC9xtB dJUS&1 ˣ8,t#4ڬpב5 m{4[)Z;mrHakQ @ ^CF|CИ9݋u#j/z/p{4sإn$Sd uvrL98=tq AU׽&jw|4@@!;A&lQD0%%v{d & &_>4q@(/X ,(RKʹ+^i"*v+]f.I(hyľ_wP^ڗw @o3B#[m`=  ](=qLY;Md ehlC&i1#d\`e;ZJC"t#soslpO<ѷN jD/Ag"Dw1m=7~QPxԐc!=d]_\=m"%^{BWN'D6jcl1TU m9R:khmlB:df!;aD }~g%o)YQ4v)6DĮE%.B0yvC&jR'Q(Tk5}L[brH'sy" mH4-IVUYz,sGVk5.a79 IDATx2ʶﶰ^ֆ k[bd>c@6tc1 1Ŝ*&ݳrBsEbٞeXO[k6ވcyG{Z G(Yx !v\=tJYa70C@֞ì$+bHUa! dɔXA`9Y,B0q>R?ۑ6Sb;l%}~=v,X ۍa,w(jvr8wxs0 X%%4PEY%C,˘?N50v ٣yaR]P) 0稻?}-!oLa>S_x @mҠ_@.B-K|clm \c\ ,/KM~PZF|eqOې"^w 4 wiOIwAX!M\G:GUx CK{Sau!@˹9}2y^Nm meY;:SqpmJf@Irs'w3TϾ/=+chA&R: >@9Ļ LLt,9q, '6ZJwr_iD@#5vKl\&&gzG DRO5$PԹa3^ļ-TK$W~mKF΍ey4L}]'323[悔 `_P;R9`w iW|W [N'naFB@췥ض3Υʑ'd Ofi#+&lq~&s)(2C_9l j٢^}"vm *l͍Ktw٬잸NOg.`aSI*6a[/<܂J9w/[ %|ѯ?h~;ȑ&f gudt_VNq3m+ G"G-ci!}/Ea`]ZBT祗JW F'6i"[Pwִbm9w|k!uTnwSAe),7ź2⩸,v-%Ujn#|ˀhʗw0wA؝#$Ct@RKr+ӎ6Wⷮ;7х`YV7fZ։.fe= B `gb؝q9Ct%m%~_.(]s!ظe4軷?#h4dDA*_kBl,ϻ%&`eHJ]&4Gd]K  /b;,{:y~+7k@qmިD8 *`@?&A[hj'GJVXXD?~&k%ح]IIDNyr?d\F|J!CfR B~`lL7!h6KN۾c^'؎;>6$+ i+,˵ud`[j݊}ev/1ThhJ:x Ds.]Ёgneltvp7)$Z3[)~d''#Zm`Y\m8mz%X1 oF Sr,p#њmmZ3П)KN`{ȑ Ť;{~ F0YsfyS%edysԺ}we!4?;FH8-ar2ɗzJI FeYtS d"MUOaD蕲:ږC ];l$]܍&J07跈*lP|q{oԃl+ڥ4+lѓBZMR @&, ](zR%LSia?۲PY*@-ŶZi?Wv{e\f( cx>. 8a.#hCr9p.+]]dxR: B_x>WׂMrdsg R|YE+( 32#9,p~KB?춁#'O;u؟|$ fKcVڅPeqd>fJwڸ(Z8̭{\e\MŜC`Fc3RA:.o1.9c i$|s)emw\eqZwsd>sMclz^Ը ɛdlP <@ę‘p^.&FęC,F1<E,Y+9o" )}2nĉ1<>^|dBuFXL}ncPgh7]} )@)DgH"*Nx+vcRB R;'M=loNX!=5$O( `:G|@SL +3]b~)#D3B!͹}ZƎ<4P=Yr s݌Sa4v ) m }Ǎ(vc%\ ݡ4.#|K0JNC"s9PMNMy%SSNsG4Ww9YW*>$꿙Z&r ܇$ "&݆sMmA˘778LG7h9B@=buCد]Ê}IvN Yf>v#1;I) kOU #qlf !Rn+QHASƣld]@ٺ܈R7='دu7el6r)]0(sp Ԍp *sSe*%1U_Io .b]En+.&UVF!PFUNҸL!99e 2S!zN >P34k˖*6 'T3rMJ+}T)h 2==u:+ sW=Nlg;ITkIl G@ʽ6e>"⹙2!훘 ˸_bfChQζJrj*Sz 0E|o_(ȩ^\p驹,6rT]yNGpwAarDeS&R +cKXNhOC(7&o@ܧ&\.gg>R f*9,5DsƴTF:e֛-FJr2ҳ3gn`8О g>snJQC Հ툅9N#s?`(ǽdʇly,˚bG<SQH} -UW2#?R%n^87|ZE$%'#9Cfl'>d(#-ח%?o<$+55c=U 0? \gjRQw9udG!n{6DRHfP\5@!J=#YR,| Mk@gjI뇂?b`G rB> ^|+&xyd*R)Syb9NB~P &q i>;d1Ab2f^Yn6W}P;~ 1 {m,nL1Iw( z˲#wӵC_yLҙ@玝Մr~K | Ms@ذ JC2 C.J>G,5Ф9Y\;5\}|͊]pRHO4\be>N鐾Cb)G44CBF_^(i *ϝ`kK(O/d%b:$|-֏nD6e;#nTޟ#|eMiAj|m2IxXM7H{aƌpOWDxtώ1G c<s R͏p>y7eC!`CrmBhFXP @5ԧ@B:",6*A3>a9) c-'$^!A%05̽Ќ`gj$9qSJu}2UFχHG[Dj .!fMo Gaǀg*+6AEsx7e8/?C%#EK8M%5)tLB΍lbҍJo#fvd9ĺz C!xu:'MîNObLbׯ%RJR%iWP `l D0-GXgj9#dD(ܲEDBD(42S-nI&|j~B:oNaFsg)U"pI|FeUA3gƞR"/2pe 0k0RJ0`fU*z:Ѯ̴2͂ٴ:*}X2#0 3O I<'yz@ 1fp$ x0GR3!FƙTD4k±~?ETN**ʊTqQO0plnn& c}fy%Kf-Yl)m]G3)MTH;L *SQ||^-`h6-`Z5c0X=gJLE\7a:+>oznIerN2 }o_[c;Go24;DS6 U@=lQ্nkl}M;e l0PFk\%* @KT}Ӯ^㶮 [FTL}yzܛr=f@H `r`*S'eF̑@JIY.UU]poc, }M6S6bEIGPQ IDATeMkTGEp=Ӯh"797 Ҧ &pΘȺ1$2x2lw.KB74~9493Q3T&fw(7US~9 Y7s>>`'`M̆ՠHD`束DITL*iVlU@;w_: ΥƘ8[~4$-30ׅrA=ݭnJDHDEUb~pUUw!æ_2 ,+o@J#?m-`J T*g7ԟ@p8NcN朚e Cly@4e6<J>u *^ޛ2*gEuU(>` ӬŽNȸ5h.*TyHHlG117 ƺr1Tgf;= l1 vyJ0mBs&6@^L*~W߫ϙ%.5H{Aʐn֑$ebRBUO~ŴiΊ;O(iYD#h'3X1RSS,/Uft3qvS9S+7.T_TAoVڳ8V./='P-SL?y'C}\.0f(HUKU?Ne?^"<ScN{<֥J6Br4v sZy8BTW@kj]I *.>1^NUM~Hnn'#eSRzy|ާYK1L1ѤI*&4^~BNV&eMC?2_ 6;]ng(@$PnP5L }*lzst{@/ѯ4˳Qr۽ C x!@uSJe1Oc3)L'TnjYY60.I뻘q L}-.A`b>9Eu*9^^C=᡺v 5ٯמ{ڻ𝪨~fڬe}|kd C^c,|H1v R4liIP5fb^ʹv!:fA瑡_r I7@5;"NJEGHj&H7ԨώО܆Yu 0J}.6s=r(C1дT2fE٨Q9L#}ƑsC> p `<$%)]f. ɇx "&c*#%T̯k^/'A /1 mv ]}.eJd>c.pJp@ .tCG~4z3!1BTxP~HDNoYE<(`skl}JK7/RQN~Tca ]/:=B{t fu܁%+ 鎾EQl@H$}r(0]Ќ1MSk}ӺƳiW^ۢfH昄p]4Pq4&A1P *mabr STIc2Nf [0'oM<#~^((tXn ik I͓44UNv8h },MzoR$yj 3v#UǙݎy0!BzFzDئ51n;e@ܜ\˪]9֨ώ^L&KB@%YIEJ >)PfC $Um5wWYZ9-s4}>c$<4CaJBR3R x}os?_#h0FC75C4w OeG2B eYR>'>1Vf]DRxJt42HZM>GosGS:B#Sy+\YڥI6f㤘yBcz} uP$'J/kϾ}'U `6X+'nμx`\? eY,K/X,3:$O( a0Xq,2lhnˆHى*ﴇ uZr5B9XbC:rk>Ҡjθ]rblS>V0K7._{槨Ex'3To.ϰ:sr WAi2#fUU;)2-y/-6LwYͪا/4fkw@i+Fƀ/B0O:'"GiXZ# <}I߶s5OǤ%`o}1vh"3n.N:||vL,HZp, i;+v@6?/cc!ƙb}Hs<۶38׬tQL~mN|֣_%|f9.Fn# !#4뾞CV8Ch,!HI__ERŇVh/zc`tI$`e'w4]*B̺O/%$pH0]f@kJÔ ԧg悧*aD *YMFkoxdlFXQ%iHcCuG4s˄rŻ,mzC#pk8V=l%ېm:;B{0#u2#Sf%8VUdz  L7;I6 }`4<δSjO>60>qPe* MRz:';Tm`(r29 xcosQM@7 f8 tۢ>5lBq,-HJtrC: CuvEd6{7ݐ}x&:Ujv˪׺>}9/\WR$~P[ KEBw|\7 :¥k._pfhΎ&[R3ʐ` [Vd8>8(}iwMϧdBZh2MZ^:Twfj^Xe͜igś ) 2sHPxCYq_I/>9|?EQ;7c%6tAҗ ld2w 2n(E.XIW_tb16qsy!laLX7/*ػ%*F$Y2ɐy'DTLǀ*atCy@vrR4KW~/+ԧk\K|a-L&f=f1P n.CvE ֛6lZ°iY\SvfsccXBm#nn,Ϛf̔RYs)q$r!_!07ľy薱|==S/]^K~|\R7a6wsŌ S60c`ʌ @irC 0 5%es&@mO>nZ.cM˲IKfbvl^,L#M#WEp\!a9A줷uD_ ~9!%7?@ 1> :KLeSE+VZ*޳/ߨ.  eB-V5`N6m]fextӶX*{Zkp5cf$rm^Ӆ{,P >#݀8XU޽.c6x_7`!x 9 dof9D$dj9th;Hz'Hyx A`,jZɲS,:nDn>aVT5}NM>anU$##z|k2S#:XRW;._946FgsFӖH i>0I2۶ݰM10 5q LY^A2|&Xf'!eP]񾾘ٟ}Kn!dp , 0 %S nK6%UM_). :{}{ɎD}*qܒ4s?:Ժdc`邵diG!Y>0ѿN ]bY- u.,0- sy٥0);[łeMӬCpf\56 n - hFc=6I$>[0 bVG6L³TVput똿io_ϘcVg(Y~CX(y$ycHI}0 "nTz=h9{׫O]#Ue"L$iw77`_tLbu!0C2˦i6+cp0޷jrøESP2:d$r=jI'i>P@3^HbMnz&E|9vn"܉(BIXQ{"?@( C6DKnu1쳼|s~Hl'mSmiCrԑK*EZvJ H16xmF^X^*sK$ϥ@({M Od< 3a9/B2C9*p'0X9 "b'o %CA C0FQ^or}vF8@H8dY]0C}߲`ZJF.^Ib! U~Rqb?a tZ#?n;>)YUզ%2}Ysa -lMl6xxyqU\/dyez9;גH>ȭR2D^ܜD$ } jQ6aczuF QY(LaFTP<&U5MnV ݍ̑ɑ[e$x93c hzSsIP(ԁA#M8bssj~:<~E֨O>aG9  ]?e(YM Zk̴ƋV-nhހ%HYPR(9QNxJ<yoJ$=RB(Y$Ֆ3"^Y4`*d0%ÔWmZ=+ _#/',Pd%2l9 + OoFG(`ldIAuQ )3"ɗ3 h MtzOIZNS͟;_&[dwZ֨mm0SZI K)ee2c\\xJ-cQ$q{C9]4!&Oz W1Cf)XM|ճ(.3P06 L 8ǒ*߮fašshr# Q)"0|7dᵙ u@P]j>;ݻ_軹ܽt푫uv!{.|zeE0%XPgc6ų͊͐[.o;GpK^w4oVe*1hhhǮzQxzQ}Yn) }7U^A #NtEa㪚04ak09VFyr@2E({-=!cw]I wGL9pCż4SHpO9EB*Tܰw^?vԿJMߌ^> }(-hڻ]Jdc&Cq u]Ck{❍XolAND<'{nS,X1 nq E簮mގ5x^a=cBgt|PL TS>i%ܲ]$u-Iwyh$lkqG?> SR%W r:r;~B28wYD`BPNjYX'<ˈaC'n,T IDAToX`7i,DuL߂l4OK.Sf݄Lk|pm".r5[mEЂq_e?$OOU0; Q%Z[h)Qu|?!kq¦mm>DTP`0)5pߵ7gFP"t1pkt~2Dȏa&K>Q U+~AC>k(K c^v3{ RRtYzd 50עLGD0͒j0eX~I|hf({zpt ČL14GlghIh4>oq@bIzz}Xl) 5$'$gɻ%0NXr7J}mҸxBSbvq:rDNDBy"L29/VB PM.`luL}&s1UN~,l55Z]B^pL86{ S(}>Rtˊ,i55f[d "C s 0^eOY%hs ".`5x]O Վ~ Qa=C Oӭr )sJ\S.0*4& }GQ=&n곳D 8 Rpr`;X*6GEJ R g }]D*`_T:xo/&ূdayZ=99UdG.3v MӠkDeǴh~hK"mS >oZ.Z| ꆜL(|9+cOnxBD3 Oap3D(ID"zw(Auq=D ά$I5g2D$tɔViFU!0VXhٗ^~B_l65ڳC۝ GE҂e+m\ 0h׵-.{W.'b 0CϩGCa1S'Ug ޽0zb=R(7#e3 k}.C2_c >w{C8ٔʫjzk>; D<$i@kxr BD[9ɚK~/$ٗoL/gZk~cF7h'0ItcJib,ô fO%ìzyEζz;Rvw=g%~-~4@3†U }C4Ngo;R,}6_$7Ycb:n_O-*.A )|zn{"ǾByAcj2<׋?#P` 17񄄦= Ub9czhg)V!__)uOmyq)`e'\t- );\iYϩHZ\c.;o6Ւ!3?,^V4(i| O2''Sb@.+ Icؘphvcj}9Ѡ?DK&[%Ru12d6A, }eG45g} χ^ 2cDM ytǪ q#zcgG0g`)`HEnkO%T&vؤ%UˆE z7`'4Q0o | ->Ek6ar) B~_&1UC[| \0+$ј782. }c1:pfdgB՜rSQ.b;s&=\ri)5m쐻n;(*Sp1<@Y:0\.,Lc2$|e-0çm[->hqDK64Z|KpbK!.}X) ƫ0=!$M]9Wa'6bI!fSQ1TL/S-.XG,$:byFҽ! 1؄I \rdlIJ=H{2ɋuXMY `:egYfiLsjI'5A. H:Um5h64>&#ܾĄ{D$ͧ|5 t$kW-:w _~*Rx ƫ;}\~4cǗpfrߜ;dJ0bi ,{Iqt~_#R?nF9n}@7Er>;epdLeH.Cq7$3}CZ6,Hv* ܖ,-h-!fr&I=7g[Lѭǔ2,d41xnRmP]!DGXXp0ڐb9[&*Px.p޸نD2L b1OC=끥*)b8&&=Q>'_Ȑr0=f;u2g0]3 ə ͟~۫/19"'l4t^$um Jt݋dUaVǔ)Kl5޿Ҙӊ3خ5CkhX'>b j G7urT(kI  oO$'( !ߧ!Wh*ʹM hI%E#d:WZ668^ʉ;Fj@m13 Bm$B}4*`sf/ jRaӢ]œ%`Vn׏ zLq݂cFre΅[ )`W ߍנPxݛC _G^a*tD7q͝\>Զ ^Q@2gʩ4U~qC)rH0)ITnxx(CZ"(ie׉brg25f=BKܮດvMu,zcn'Zkjb8h/`7>t!{<ֵ*X+|J\"殓Y0& (1бBq2AWYwx`M,.wCkߙ Lz*ʗƊA +;tY #xX9@lwZsR',߰܄R63*yn̈́y:i%^v&6,,K-^w͘k1i5޽l559/ a3?'L.Y2JǺQLzS77xxܷ|)Uۨڰh 1@ lnl̟*a 㶇H㼠4zK9|DݓJ !P޴ڿSI@BpvھzZtrc>-KھIi:]xGqݠ?̳׻^0[@Պ9n^2di @ֽS KLaTx 3ܑ:f52\XSisXMi%ޣ*<q8}`(͏[OLy,DD5PlvՋr,l !4W#ևI"QAoTY26,=^s\MXV)ٞr #s3Ek K\!%t5?JCo~7^#Q7Lٻfc{n3>D˔w`dRϹ -,Fc؞>X@vh->JKE KXO JglBCvrCܓf_H%*%y6:쿆 ]nP +;ϲIㆈ:mWWAI/&O!r5c34 $C9!!k$ !}d $Q ܎@*&'\aٜzV27+@ީ!-S2K7<ݕlNZkL Fe낤aTqxýǦbn9v5ِB/1P)*ޞ,vҒܛWB Cܩ.-b!7Vىݨ/z ocPxZ'bUD2!x`]_SJ}xG${Sˉc ݹSfs+ lڤvGPy%R1sIη!Lnutg͒[RIΫ3[<(Xk!Cusbn7lM链NMPᲝ]c$ya׽׿OA!WY-M7v4M9oUHL=GQk#\ u~rD10F"ʥd9$ibI$3*cڦ{S1М!6^V [ 5;d2r45$0x#~ɞZ#gh_|TAj=lc-qY֧7,H nHnN:=\lͦ`v ܻ>7XЛZ\1BXs,l}6 (Uxʵ'R;%akfi:V"m}`|H$ӭĝ TecA^= ;/3\bm0Lr"FxEhCUdKvN.\ۧ.򴏒L[]hެ֎쎞I\eERtK<|n kxS:]Bq>9[a2Y[D |*\ZW ;n6`~2S}!#c>5>?5ͶFf{.Q;S}{UȜ8}1%]n~XUi  Gc5,9<]16=2VX,{HT/<>3Vlv\/PqǗq8" Rܰ_5(es?uO9uC|_eQ۸2ebL;m&l$3P샂5)@i7D雇0jMz z :76T&TV3T9q2UA `{)GiE$2*C Y/tO9:#rpA$tRMfUMquE0mx"ceR &iZ/yj Ձ%DΡvZ$r'avr.ܜP$Dृ"W3:HYlllͤvc!98pgḧCDdxx"UՑ/J%x4=99<^xD@{H=LKvDz(։F& =*<*̆@͈2 zY!8g(wJ%rUHj/3jgog^+>kG.UshFaSsw` /Xf|(f.x MgC@ó'a<6cS*:xۃաSR$Y ZX DΠW2B!-5"sH$:N*T82JwYn"Z} ̛IS(y CL݂fi)כص귦tO1CKnt.?)瑏s (bpSWJ4@w6:ZwiA{TA׷34.C;(l$=UQOώЛ"DvvO/$pT/W<%xɡz /Rnq?)͒D׀VDzP3ge8}rnGN9Ys, (s y; (8k>7(Ozzs+T+,8%鷬.H-6s%Z4. 4agxe3{>NRŻ}Qej~WJ·O_t\ Lƍg&U ~H%Ž 7/y:T/e{?W4'UDeȄx)vq+NҠ}rh8&d. IDATi)(So `k=nR1*Kiwt-_VX/p5Z2c|ѱBl͙0zx8v%Ηe&*-nzGs"OIT:+['ǪVK`lV}_WCda#D^HS{aFˌwbKeѻ-W:?aϼ8|_C5-g+d%Cqio͔F}d46,I]$5f1(afX|8A]hDcHaX2=K=(@=z P ̊·cT%zJ/~߄F;eҬC:nBI$:_/57e;h`iwA$oyGвga.\ᇁoꄉsT'sC:U YI5[\0-:WF)*ν>~1M`4gۨ|e*Dؼ9vBF+oJ1D Xcl'akD4URQ,}>S՗n3+1'4yH0N]nc&F4DY(f`|-gXK@Zw/cod^4;Dѽj9+əΎ?Nr1w8,u<GUVDxWHIXuwVFh #hgyRIǸL Q2UܚI]B:lD)Q`"[DP0yrn8ɌVʥpʌ"Lg~L-0 Mzbv2enoctec(j<"B.H\t gX$I)eyȌ-q<83_$s%\n|/F>ynPٹawA T0 K>E;\A՗q܅^ /tOn]^Ot @KZt288L37ßz3^!&huJŝV'{ xcvw\ˤ0y726R?Jqr>TbOk㣸GY?)(R0)ev<ɏz-8ɢK~/qOqG6Ŵ{[p/l(kA[m-#a95Ֆl\RBPmYqļA+5,28iPWD}A bxԢ oKm캀Δ3 ,Dg8i"Z"B-x6ȃ(H{osAM1VrjѡsM3V'Շĝe,(5OCU8D8]J3]%L4zS!0a'I SMD&ucPXMΑe*y͠ d-bČ&!WnȌͦTw{ \O?x6hvI,e9 AVvY3R2d7qiyY> +OY/ oFVB^"53-"FiQ=, " 1יQj^V[|k0l߼@Ѳ#TX7/!=e [\Y~+2p@ V[>hxT>IqI^b[%xgoy_;\O0'~Q:?2#֫AV" yLU3po-61'S.*"r'́u`%ч{i+;aZkh9!s&Y2Ľ:e#$R=cA!N(7Th/inyUpaLEdVY e8?~dx̸`Cѹ=7A..cb [|^E!tc{M4GEm#!bk 8Țu]z*h@I!yF~՚& }lrd:̿Yk055T83֨a$$??;<]bjՉi?,g,=8a1֖c1.h+y#i8C(WV]_&/"9z a2|4&7 1`%2 \)!(8U5akTs`$C 5 QaesgdHcd̸_%N1-! *L$ 1ǪOޞ)<$x]`&ݗC"*'x!Z!X:DB9eVht9E U+k@j&PЕqAD rKro.̅`nR.oR/pn+ ULL xtn*ǂdm220d3%C#9vHcV\ߥrc2Ul E8 O%3 HD4=}{FV}EɃ:#8acPTSVgƆQ.;aVU*fTCJuhmԍ YcK.xsE攚7TZiOB{|@/roĀ‹0^`9>3f,9Uʵ33@cnU}!ORdZ͈t vZ]Te8D~ c!͑GXB5n![9ĢA.7뮗3}7b4two 6."EɨDl* WKM}S+ RďZN^PuF˥b?'X}і b;d(#: R"*c{@/wQ. @B[C DuIQI4 u"WY*0+Bڒ^(⮁)l`Rj/e/え=0PY0LF9T82B=!rx-eW~7Zvl*^ D *Ϲ"#l %tȃ~P.weGrpZ. c)!`#6 1;i! 4C?ݖ aBlkET'*`-8t8+eJu,;2Ey"fMT?{nzg1 /p_OuyLl6\-٨!<ԕ8kPb B+A{ L1uYt@4GgcPnf Y 2l4f`D[|"d&0<K3W(Fh匂SxJp'XTs"졺ר/ۡt;E<U+A"Rʼ4oڽ2ܧɉzn&%tK-m[z\Es@uΡ/+ǽ!i&YZ-j#8SCi3aj𴘞e#I-ݹ!|,2#zc[qr= uuڦn&%'"7y'E(g .0;Šr֒d񩋲`ԅ~sS)XtWRRMchY1u&ꎢ#╖vi/B{fu$ep/<;42cj7k8 GT#缅?HFD((C_f;En|[ JFĒд`"Rs%%D}KrK3sbSyh (+hUair1lTѵJL)qar dJYv(|# ~crh18/F`($.ׄslNuF0.$Z ~Ȏ #<_ dOiX߇盞8Ʊ@RAK(Y"ʻeH91T4bk F eRƉ\-S5) ;ժ!'WKXqK3wayV,&6%>Ks}J0CnPh:o i (@ /e|lH.2F3љn04fȘ#J;~ ?c1HO xLwcyIy˫՗fsǂO)r*u,aE-nk`6r^sLxFNsrP#3T95CyTn9טR٠MJbdr<ƞ;]X=P*,=vҢ'hJ畃M=~1p R~j:%c7MG2wiJ\ ao/SoͪC$W=ŚX8s- gBt;!NfGZmi]NYVͭuIݎ&!RB +Qq6\ه/A<%ǔO3]!ҀiQ^Yś[d=͕ jhNUsӐ|~jj<7Rޢl/`\n2R4jI$7cKˣMK执Rg 8š&~NS;0$whn3<3WYLd1'( IDAT2S KGzLǼ/|OL<6y x)8?lZ_fϑ7> ?3eFCy~u\%L^ߺUǺS,DCv)d%c#Ǝֹ$2Bm; (r9P~ָ\ۜw0P+LgIvqi^4++ So*]iXKviG>ߢj[j+#\^C4W=`rBI`RzRA!Rʹ'y(U]Ȥaxe(veNȳD|( z/<[74$" C:bR%7-.7a~zjf&xyM/.`bR7Tm.=J@ʇ޴y4s&U2Cl _)hfK' Aߘ9#nEk23C1bs_LG%x#m87C׷Gpb*9MISQ]yN >%OX%rϘk:cK1!#;am6G%AU*D?B<۔0cKWf6v@RV=V]oI&8}i.שJFb4)'ŧ(k-!Мz4XeDX 1lCf+81DZP<$rqړ8YPT4OfI~=۹# Rt6FX=CP5Z0eR2ҁ^uL1h*cD/phbZEfY)ff| ͣ-0Wqi31Kxr"D7Y %( jnz̛1]EWze*P6$u9i0Bߩŗy["<@$l5~JE4I6 MM4C=fRJ*ipN uȅǸœj5r"P4G$`sHO͒3y„op@X Bfpiɒ9q"u BRA+n3:~<=d" O{R.*+5⸿F6VE^Ĵ2bH $J^n)PSK z/YMssy dz DXt^.%ʅVR䀷(^b0^G,'iזNiI6X?7oҜuB54R6Bg1ecDU柀9)bV@V 0/`Qj4+PY%(^h3BjIJaeauC";F]\I~JZ;9րTڊJkBoMV{$wQc=G͡\rânrc$k´ewMR^2Zosnctѻ~STw-S4}n MZ ҘPUݟi!fyͶmMئ-3BĞч3M pTu]Bc_k @Szb_E{/b^~4t[ۢ4Ҭ cI8z7bQW=3Ri@2kV(@>ĭP?BhAi^}IZ&2ZwsI[Y>V8G lZB"]As(w i9/)'ʁ_n1yB5.%3lJs9VꂞK[ _' | C4[M2=Qq~y'6xB2Y6 Bc"^d{qQ1U=m! iz\V{06%)hE&ZCe0v_~1^5cb#p 4WT:=07Q̸8Z,gѢP4l-Q8"-uz:DzjdC#~w 9W̘P֥R^̳UazaO+@)^qPМ*oD~TS=YL6|$'-h̓^\} CxnYE+fn$C/cR`=T&>xY2N.QsR7x!>9 |ɈY4i:E'}nJo: [LYPƴR׽l״1&o(`^xzfPtأ9D[zVP{8nl.x75$P]^39Y..5EO061%OfhX1L /btBcDnset@꽖_Q;<d>Gp?;T\V%U}} ىgC) Ӊ "T!ɔ:*ڹS4iq'>&UoDtJf*0ħ@\@ժ+tw? BřknZ$ff^ uӑwcSQc/M=,Žܥ eVXQ:kV#jgBC-~ @ l9PvcJ0˕χ%9>d הćp,^=}aDyD} ON:AȨ!z D#yssbY9YKl=CEBrT.O\<5kIKKST!`^k9&c2'4ܡ꒛HFZш:eeJGWƿQ%HVwM.A$Gc`s{{Iȿ޴hI6J+͚ԑRB)"?;zڲ؜zä6@:g1p18cnUb\! O쌁5n2atZiz%O);Ǿs~V6I".3~6`L./"3nמa\o#'S*zXH`eup23>r΄8h u |lmJ젆|IT9sv= ] ktE6] u=%хx$:9=Yќ";0U]ئC62UszSwE^Ln\2bKeσ/; ZK3I|)_'v1⟚kя()36?j}q?_u{5{-,RgAuxipmE$iM h$҃sFjr h ~[6NS g ;o-ԺS5bs: pS 6@Z`]-85e2] 9yq7d[?,u[S1eH9a;wQa $)۸LUrBs)ZW"{_[Qa0Z"+lgG|#S2k?c*ʰXIW= y mnQ]C/>$j jl9pȞpΌ/JԘ&^*ݸVDxx0cJ@(Zbd<6QOˏKIjC\qߴ#bwKk?Fl>p'Rf;)n`EsQu 1a.%` P xrS' ϡT8}O8sD6g(LpҨP8,vc2C)ryS4l,y= x N_,yMnT*~!|}s[NG.fp=:/ C{q>x,r؝TZ sfa!+5ZxFrXwo4@DF0ҵ>T@IFTfyY.H(As%rg*E+怰>=D!ǢbñrN\"%8cTwd"XS[;3p;Q&9H+yus(eMy\0wZ 4.5^W(7YLP{={ Z]o0 LoA"hE4SNDV~ңMo'B~yJ OczlUzs*kħx%:dO]eS4q$f$ \H9Z57̥̥vn-ɝ.AefϹѺ5hj"9as+;*,uˑ@?R@EXSb`LY6UnxZ9xcnj T B"N_G] P`)*PW9O7z8O:ی]ne3ʐJBX~;[p6|B)+tR".vVo}2^Oc;E*~B(V.5w{ Ta5%h`sʔ[f$Y:2.g'O^V @9]+A"K1-F@ct>V@֧~,qC~!Edx. 5RP7󗹭m؜!P5T (DD(w2`q0\HD/S @iP0-q}d9V>Gu&Z5;É)5nxjV7+3bC+|T1k7%+"/pA4y)ey7a8Z%Ϸ)P!ȑZ|l3O5,|[U{~\iżgOy[q6=`B؃b>;0n0=VpF3RLcV_ ?4H̅젾u=Q=,j2q~K閨9XT00ޡ?}D Nwݯ] Auɛ0D0Fy'ԵD~-ԇ9/h<[9H#Ə /5,iӧhow#)K.PJ Ds+uc N щvS?eđx:ݔNMV")CY^4y" wBuՄ$k9: 9HeN!"4=pcnSZɚ-[!D s3sp6JDI=w+ |V6qWM6'2"Cc&lD4qO5[=2-(5Y 2Al({A5F31b`#7?ea{K\&M$4<2Br]V CTt&8Ӓ{FZanPqgɚ9(9$wLc !"^BI:LI _FOh ^'h7m Fn(;aPM\ab]nI㿷[}OA9v2@ "P}aPI"Sa(r oENTs",0§T`hMm ֓(/r^OӌzpVS>'kTfkPX],LPY,sm-^գn}0UsD8WQ˽sb({7=.IXI KZf̶f'⪚Tdak|/LL D IDATs5ʞjAջl?77#]L6"TB$Dak% 9ǼiN3@lz>*g$( y̡B >Cke~֧7͊/M[-L9`G].KbiXe `\blyފz./J3"5B+\eGO & 5_0S~re%Xfu%sRE9v"uRJLKSDW<:i V>G0 vJѵrF06=`uBl"oiurNaiiQ'9u/ ӭ Dp*F :0cQ?پ S3"N֎B טgZu8%1NqO}Vbĸq`D ZNՆA=n Ћ"g),gvpJ{LG[ߡ8#DF݆JU.n)R J"NE.mTEWg}rs"4kR&Wƶo$UTZ.w3usEBH8*|1Ĩ_^z^[g\ߠƗB%L'4tYnXVZ8+]?PGoxE}86oY.!%].y&t `{K< G)!|p ϋiw[Nsw+R0ls\cZ9DӶKfP^!T'N^A3LPF8/aIVD ~3D*1I e.TmlvcYOcfşn:g k1)E{qmȕ:M=ut=:Écݘia@ H=ڈ BVFmIb#r,qx Iuz~1!wנ[@ۀwۻ89PUU#CT <-_c <GE6 ɒl]|N%uѓgpja3-P`8|lZ DՍX*niN_CEԣtKSL@M{Z0K´ Q;qv)Ҋ {' =7LI Sd^Yt*NFg%tVb0s7mzsF:MчEHԕ!Пo,,7Rp8n܅ԋI1~_ YVIa*iS.O϶oهowk+.8⇽y'Ep|MVqs@1:i6( =k3PġkV?wJ  0BHDŽ΂Ұy&Hky.GX9q,6+k7"n1uE`Z Fu !Dg  S?M'Y.+kR1 F]s?W=Sc);,iv 6 z CS_ jc,8jjgnjpcߏ25S}(/G3 z}r%]P*;\fx8V@H][Ҏ @֦N.v&$BZyZRҊmCTcd@$RE^=bN.eR q+xNGhʛZE0-8[nGB3-(g{;|إ rI_Ǥ57o PUrPTݍ`U\DJlYhѩ@C<8Y1DBPVO^FiA"Yspb7 TV3qe!e L:*%xI3bi^xV [mwޜ" AOBb]63.}Lank!oqGa#M+gVO<&a*YF4]Iҋkn){EM'a ླྀqO)m̱>X3Uyn`24+ HDyg86NFAD3"r QK0M/&Jz ZdnK+L;7@YSy CNs9$[9 5-4%ԇ:.TEġ%'mGwelq&TB57n#49 Yi)Z_,t|-~juB4q_M=p7P=V*s9 x~7~ fHV`u2,G"EG5ȠdSyg(po;|'E0<4K|tgWvw!΂.,95B0J(;iqN[Ήi1o D_VM=$M093ˁoO16"dF  OvPN-G₦!^ j mʟ##>[0sa8dÂ'*Uດs5IJLq'jHhų'O6nøǧ=i)9T8H) n/hla$!ľ>{$#JJa4Xxb` {aO/"9DhE<2 F]KL=.J%K6Fir>,L3%VkঁS+>:/WF8/kB#Po:Ej>X RCJ[?D/;q'm5TsR"=r )*3X`<.vK=~^_~o1Dt%3:j*Kd=P) [C(~'^̈iP,i*tR9k͜n7e}RK~R%d #ƴida~P-Ey(R9hvT}T>/Eb]QǐUo]g)pu`[ >-9x"K| ˜ gtd[!Kxq{ 7+*-,u 7A@}~`zLV)rnX܈DZ6jnb"D &&AGkQ)ϗ"eX⤤X7%@ӱZ벧jvspNL90Ϊ`% 7Q=q5\R7M7x'6=*Oްr2FwT]iPUxq_;~{[| 5s)FY6Su^2OUuj0/Fl.{eD.S&3C5-;Lm,B;}rf¼}49%95(y+j1HJ'6bg۝&'L*A0\)5)t`Znt-#I`N?0 CIZ @R&! O0vgO0H V`a34 j[BX[/B[C%zۂ/1N l4`omVybzZO1㱂T2yL n)M.S-.Pb7ןGaF% `8?Qc{|*natiZ[%57TY㼽slW^MUr5V!k kܦ5S,e ;roDpdWB5q * }PS{yjaOrq5S9e{: %ƙhepZG7ss&6ketri4܈}ly7fz}ιw߾mwc&E?`E H`@ 9ȿ@xXHDH` H JV!~{Xscר󨒶QUVW.s 6*٪F@( c*dܠc#F=Uehlu&b=S\Y#ˋ*1DjC;;;z 6LU=`H][zE38CI.\(Wcq%Kr )fs]=>#.ˈbCq|m:ؗHKVq ӪĎq8|CNi$|A2x.\O9blVG U6܃ܢ?]O̬k*1 ᪾͆R5LMGx__;O!BYU΅C2%̭;b,3Wc3U8>a38 )9N) pMn #W^ל_#ቲDC? ʐBz mVjTȌHJv\efĚ*b̻mZt튪ɔ&Q{/EEx$d[4α0W,sq,bT}vpR].z%YNҳML]K%Cu7gYjJ.=MYd ߵJh@n&^v&ɠ_Y9KY_ QUͮ}T@U8gI8QI2Dj LwHS2Vk0˦:Tp7nu#C6@D`BL}͕_j߯~XF]d:GOLXt:%X2{kn"Adp<S;k̍w5:R52I^ {nЬ:QJ4.3c1IeGxŨ}wdڱ h~R+~5}Fu?׊0"F2KCsi`K4p$R&r){eא}3kV/r\$2uK Mf gK#莼˲Y_rm LEݵDa |( sKuQp2f!_%IҺR0? IDATմ!3۰{`''6BeuGJ)u9jW =F8G^k!]p}4WV 9C'!pWURPa.ӡ~>lsl7U+l_\Q _ճKiTHOB;uJڒפE37#> 3)4.V0EcWx`Aoϖ =C$peB>03\vt9LR=h:70]}I|*J4ؘܘIhE5=-` W%BTcOY,.Y,toDmE-Qxs%Lt3B9(*Ǫe>vt.L {b]BΝ+F[LXAbKwoV<:3HJ:IJʮLH 30Y,t~ TbNn wGIsj.{_d\fXgpص`n=H^TtB0N'uܞ=(ѼQK3j:=t"DHauN}B4"7W/94'3q&`}w}⮀̄p=pV`>}ldJA M)o 1O,CuIL=$MQYv DbcwOwn,w]vvns]scV43 TB;`0Im|󧷩-on g/wBJ=r_"t7b?ɰ״8nTؙ kaO ˛L&4 $4C)+:L( >6*tDg~f%deh_Ct E 1D6-wK dMQ51 #Ƴ{́eeZ,S  hC`IfsڪdP|ZzC ϘV[Tqk̜8VfwlBiة]⤓rVZLK8! $&oKvQD5R5' Uf6{fips#`gHn2DE[fww}"i+'[;4 Ҏǟ[ЌhX?A!XXsl p\8/M+N,BP>9dVv mad &Sn#H^U0uSokٵ_ږ-%=v\@+t 0uf[#_]zC?K 9\&Zzl iR%Da*3#%Vuc4B'Lz^zǑЅ{8e \wUT0+(xgn0d>dg O}ԣ&\a!!(GW0G߶ ḟ3\as.Pvr2J:g(\e{Sc+y("egޛ!byWmVSc"8"Ƕl[ng] j=oT_;pQ)}OgukMs+D9?>a̮/ѷ }{3b'ޯ3r?l@&$@-xg{c=1x[jg?Cl>T9A͈d$3w @v|XvQJuX4X8O;e' vs9T3t8 `g$J0A }vlZ 1OFT6SZ'|H=\eC5ms+ׂiz@a$rtBnG%- z(T_ o6'$=_ވkB X$!sk$Tzn,zݡ9ҾEwn 2d)L=Ǯi`5Ho8\X%1,`V1]ǎEn6tNp{C,uNHER[lꌥQU_ =ytTXDjOr:s^;h s}L3"<ݿֿ !-tCy>ULNΐF{]좕RA?TTK` OfSU3hW`eq ȸP30?`k0oBT%n<ȄY_.8ꇥqo4<&A\GA$݉~Sa|&$)BAYەΪ)~=2aqK"I6؃z?נ_Lܡ˚0s͹Y+! XuJ^tVbف`kv_Gw7D4fMZ!݃îa/i@2 @`عصJǺ P2P.1VdۉsÊлAXF$Zrv {t&p3g8440Ri*z_VS&vIT%z|oz9?w M??3ˉ`|ߞ썯plkb~)C*c1vC*1F! A@4!25@5*0 qhm56\]h eV[l#7Nz{ДUZz שD4ܐC>+7K&}10;.E8)}@!^n282bp0*pd:[jW Jn%Exz-B%iTAgc]..2p\˖ 쫜b\u1ݼx޿eH(w5][qsщ$]:[!z\ڜánl*kEhmyD5FqNܒfF;TOnZ*<]Kl8|F2rb 5“0I1CIa{tHpm#Rtu҉+77v{nWvo[gmVH+%m3qb7}؛kk[lrg>Dok}y. ۷4̄i͛g%u!=W#~?-wi$'ThK2D}zF hF%nrNHO#4:T8q5SL/E"bL;46d~R1E{1%KPRkytͷO軬E%YUтLuXLjIk`!m.=ukf%R .MJ lPې> rbX}PdNN.c?Kh!JP$`^c =C34e: S<`ʤZl/O aFqR5S>UmdOcx,57Ru8g6<:ww=Rge@.>H qXłc&V6u|#Q7T'gS@7?#<6mz6Qz<8Nvua܃ű{<@[$[@smBWm!t`$ P%MplH,tږH 1j531G ®M1=WNAOi7aٜxGǦűg% 'ur4↿I"߹UK݉18r>LT:2 p'ꀦIz9 lp`'֥uOyceC" #T~+Ya+rV8.Sa'~69s1r%zudsITѺc7: m-2EfR:Is9NZc_䓗K 6|BH{>#h܅]X0\ U@ƳrȚ|{~ك 0̱Ktb %6'΀moH\["’FyLΜǕ`7;%ZzZlB4VFd ³84c] ,MAXA#MF'UCi[ꠞZu1!! P]jss"$vME+%'BJc{bG[_}%fK [/tw"^~lF-H4VXG rWK-HkG3qoDxddfrGn'qq5&rs wc{e8>3/EVN4iXg~ָOrxX6n#g2PV7VX_A~#h>!zk9Y2!NyI3BVj5i@ₐcelV)'˒ ?B& Vqf\uS[2I0I-(R TH26 2u.1 icS`Wʌ,N߈WB$ʂZls|-k2 I0NEL]F,+hΐƖX)O."3ߝ.C]N@C<__;9 0ͮ @ 5Pj2V0EPz菿/H:#s|4bNKyZuny GJgh2,fr1FN $Duu(mE*J=r Ѿz;ȰP '2:g c!}NߤH p\F"s8Wz~9'|_Z'Lb*.4^A3nIODXs%2ܖz,r%C8K3F#%Z(<c{ 2K.|vzc @2"J萗{`)0҇K2̳Yi2EStysdX/R o"aI33 !2Y~T pM]2.$ut,*l K-qn_KZ W}#%:z[jq/\PvTHY~ F$t^Ḟ;ت 4x.j'B61llqd$MF~Uju6euP 1Дb1fω0>dU&E,R^<z)n՞)کZk^0B E;7%CB:Cǝx4 ssxlz[Od`|f S:{xJ=BaPCpRj.,R#yN-I)CR+ft*Pt.y֙/Яۼ_}mPm(erP7X`4K2t! m3V1t!}E*Yv =ۑ.}[3B xxB yq  v,K 5F`?Ws,dX+ sݷJFYvwn$D#`y#auByDLP,+asH@,8WqZdu#.j=ZH :i(w>y_ۜ}F`X4> :k > g؝ne٩w)݅`Zi6b4oLs7T덲..f֠_)MT:lπ'82JkI}YzU|_{0"G3*}..8.7Kgw .p} XgrV%E=3qS[+&)o,t~ɚ.gQXg9AV2PXD t6rBB7B%DLZ^ Rym>]jER \KbB81Xi2#3= Ad{h j͚xd8/%=5B>pKDΊm܌x?|9.i,4*3'UV8p*k!Dm3qPCE:,~zC1|1:I@ ۜ'gK#DHi!V֞JJ?_{Y d麾PڤC u?*V F oTM2.4`撏4)OCpc^T96@P~*.20a$rS=J#t̫Ppޡ(GRNbr9ADYv%Ku3JM)?ܗͰxPհV! I8v rvLYdK 2eGc ϻK&^TEx./_-_{` I`d}VpQ?4" w*Y5o^N-ӈ%nDu#4[dg*Ri`kqңoc n\Iik=Zdh2 1W(Nv8A?2ݿf"F?c\ Mψ wit <}bIT`q:yv\o|J͗Fv)j#?2ݪΥbx:I Vŵ B<z@#R_sql]e'09$c-YP,msj3(u"2(ϦV\~ @;83gtʇbZ~[g E7]O0l#ó t%ZVi%@1+~̱L PȤ35S \ IDAT-^?Aa~oBw,@Df6j$ ) -ɦbS!It~FzT'j: 2!&oF S )O|~ͫf$C4eda)KtDbBegtx8Ixi[&[6"^ N^}NEAҮNSж?cžϿ`u~9ȼR3);PjYq@V+h63 PʈAJ m&٩,a<+Ib,BaGɴYgپ7AJHs~//i/7lo)@g&ݣlkm씮/Z_ v=y樻w6b_eGt$7CF88)F|.AƠgsqh&*ڍ>MNqtjzEXEޞЯK!u- }=d@v):Ks&swǗwM'X``53ĥi !@0j7*RB+nXwGy=#h>K'24$,fbAEveRf*Xqg0~qp3'i:"Ln)ZZכ^ؠj./NLt]%潍k'Ur_ gܷJ_֦Rƺ_4E#اCuWnTSˬlRfg8FLT׽T:S\Z/x@Zl#)kBo\aع @b{s-űAߝ4iwOLZ˓&5BDxz,OւɎ`zxCׂ)GZ$щ<7wAוjYF 2gEBk$%ѯqAЇ[F1^+B~u|6%F',넖+#R28gqyt -T_XH}$} 5]}j @bY\PV5 ̍ Q+*kg/SLZ VUL}%g.IN|=U8.w }:tgsrXD8%S\05;6>|^P(8Q,{-tP+U  =q tN点~q(SڪG'4 ɷ`Z@[.9.#GtӋMmԳ{ɇl8uwe41" e _)4WB] &_+]e'Bklw ݯ;&q: $UñILs\>A36VOՔ-Sd'Zz.Hx P#}"_H{~}A~g= IK<:֙Po鷱}~_K)$IPԍj4 ^~ r $T0 saT0|TB>!T/gE.枊0߳ą`>*>awV}ٚa~ǡ1):{Xl[/Ea#ڃxrص3< ƒKз*"E)AT+C @s~3)p 5=KVzզ>渌K@ -)xI ^e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\ZFӘqq.zʼn{qqy"A " C۸@˸\{C07g7΁^4*S8hc c@U5!l@^Ee\fuf.6"΅) ֟ЈR&<.2)̱BGYpFFȇ9.Oʅw,tEAg`NIH/nn_\ PBr4 `98qr{}))d9lCGBs)!BG|1{lJo~i92̐`nЩ)Ƒϟ>{1DXeq,YDfj+S5%6&]SX9Ϧ` L1Wbs\ %4ӜsL.ƎK֑ J779.7 \92` EKۗTgp՟cȾ #`9.!h뉏Q4]$)v3H529rCRV1F c` tHOjHh, wkbNj|<7~,v :j6:cQ0y\{4PXͅ9ĔyH<2j7 aTچL|K¿T͉9gASҨ\(t 6&*=ws*108 `eoiwRBZ5v&Et\}jDlʥے$z? yՕ;!|c;{K~i11XKv:9cΡiδG|?']\gLPg'F~6zL%bLgQFC.r %Bt FY#cPҮ$?Y<%~I^Igl%3ebi>u8KRڨ˰PDPϕlBALg4Kqf)z; _LJlr`6 )gU!~wRL !XO|,392f̙):R̆3 wImCB|y/ee%*>7`Ȩuc**졑AiF]#=X>G(!nDٗXB'gi>x Y9c~% M@Sf 9 %'J\ [,C -7J"a9]bebɥ6b`A ɇ$4.ВThz>wbZkIa h*gfBp-lASfR-L=3\QU#fAD`"&S1[pvkm;vˠ msK5P:U'YrLbfн?3JbO 1(q* J5鐷d|-( lP *.Db*CfjNPM&Ķ&N xdNȘ8{OAZ/x3pnD6l,@O=g.75w떝eG.F* c"5L jMշ =Cs74P98I "/ñc(GMԆLe٭ NZP=y^$21`~]:@u/2)ذs}`g@ 2p5W%1dY jTK}dUoom]cm\S4X-"3}Qq}/yt^O~ LJ-gk.̀}Ng2 S#d&^0Uρrm\wO쌹1#ޓsPd5ճT G:nkFYWz% Hti lK!Dπ4&_ !dӧd"a[I8+Ye=1!}2E]ym*fήv UY+0QQ5yM5_m;L|*Y9`+`ZSl3̀) Գ4fzZ-^}z~Gk~]]ۭOYu$Ц,!&X)R5{fYV\}I(J@8gcO}r{ *.1l0RtKdąl76nWӗ~qqW8kig%ه:s ! Say H!2d;f2/>"0$xM!4Cv`8RKa+(W@_-X%A[ /_??f.L{nsm\.s1M 1VɁa{co?m7>\3w@fXadXߐϡZgJAjYzQκJS1Z sW?_ӟ&?ع[ٚf}>,Kd! =L߃ksGa| C,%UM5=[5e7'{BTQم2(/CT4hG,0cE1֙=k|Sx2/^x>yீev8ۢY]ۢXJ1Bd9X LKl%2sGn5sed*L_6AEIKPZʙ$_Ǥt{$OAzv0=A^`2VT2 [dtTCմ:yL' b爝El.ўo/loQjpc4L 9}zY;3=ݮ~mΗn0!ap,)YN)b{9Z1}), C#T7>KtUd> v5; =ˏ]sP<=[MՒ%~k`O oHCc䄩+.~@z dIQV3RIȯu0úF,!ri1u\y u Cu_j23})`gab.7٬x(u(-NN1>.!1y@Կ5Bz٭3/w_s%2t%qJ{r&!&) ejj&2&qYz{+M Hw 2i34t^8}%ЌKfnBsq]pjc@YUUJ !3(SzL4ŇPxMIKȀي'3U_V.=XSE3D44^r8Ω4QBTgMu!Bhs :W0=D;nWa IDATuVez SI(*iL1Lp;Wo?[OwlWe$D2O C, 40SL-ֿM'ʄ٩x(0g5W;o.N?OD@Wvmtgm/ne4;YU=c12!`S!y$sfEƘ6>Cv20ť+11waɀ!}m{ B!=޹]1KQ8z/T?mr_]b.Y0뺾Ib!v)/˓JzS`Ԓ[j1]v 1 'Igo3Rwqo]hnz-rFLopBX4&ʬBޥ{?P6U/1Ƃ+.CLT'/ON?R| ,بEglVh.Þ}6:҃d2d2zLf ,SIe%P %k40XX(:t1$pizm3['noED sJP3Tu.T[c-G'K%2fꀦƶ+ }S4}_yTNܟ3{vbY= wylkK$'`J9L@DWXI,Cx %NX%"c!`A$.` ֹK-fq/o?.B|J aaCCg4vm׻4\.yo.fhRdp#US3nI0{/EDprXG'ARuL]R$AS_B'K,㟓u7P MesI!wu~mdoj2tL25#g](t,F,TQ%h158n1,SZ`\U4]_.q5Z4]g@ ˳KY#Yd2t:t:=P\_w(٣T3T]En :C %u 1\Lfvj7vu"j滇Xj-,|$xcgcB^ݑD&SdBE8n4fvgz//S}<_ c`W~yyQ'T:r6a6a>c>_O)߶P2(%; _as\M-N!w^bKe:kOp\F 后Ni2` 5_^l)p9d=[=ئNPi% ZӍǩZITvagеOU'&ݺM*Ncv1 4&NrMeYHw!>dPIPe%gokWySM~>ľˇ54[fX,zrX\=d0e./PBGLH i:}D)"ŐV)6%q C#RY:\w۾f;t ]2Z`5ę Kl{.!#*U8AbQ'}{$CxvK^c]4!hŌ sv2a`ƌ)ŝj e5-[kwKX>oDN"ɨuHW؀y[O72_n/~mݒ\"$/Sh*)aJ{yNzjw m6Ԉ m A<BM;z=䧟g''/DSw>$u*gnV؞ wq0(Ct| ϵ^S޺1Uků#a͌93n; q[X0cF53*TzJcfK0.gƮBq@4~eO'LoL{+Mu*q[/ɔ#kp|X#4K>@Yb ;۔ۗ 3TR>8Oe}V|20pEM7RPP:EQ Eu; [ 0Bpcg^`ǻ?|HN?|Ǘ ##`Ì b| G`|Khёkf}ʲP]gq S3nPO~[]n`pc8SEb9M=^ѻ($LaO?f ]GCI;zQ/׳BD?`(sL{y2#qK)k2CP'l|g]W 9aʀ ]`| / @J+> X6pƇ..`Yoݫ*Ot焙޺_N~9u;7؄sO ^`c3bOhz[rF,ɢ xBm}2$7491秿ɝЬh^q[d*K ZÌu , uxXlxڋ|#Wd||]2-1 {Szg)upj`'3;?.>@"+蘑.IA@$k1d{\9N,;+Uֻ_ډnW.][d#G-@^߸G]J$k/CeEH:L?WڛsZ-KMZ%ISCm:;(z60܋+'^#P=٧aX&>I/2zN`>_omgXdL!ʂr3r9&NΊpMr^.i'4K?g$:WBuOdugVa ]1N@ċeLcg;`M^~:`]1Yb`B |*'ؕ90$aʁ*~|H`KlwLof}^ҭgrk$bG!֎7ibS3Z-v>&֧ϙzozafmw5V׭5̲O 0E/W!.5`J߶U8G2^i|8Q=X&_`% ^$ׯV"PL:I=S"V=1`ge:g }߲ 7IL>Baw<_*fr@[/%h+H1&I2:hN4}r|[o}_2Ux {%p=\;x6y҇Jt8֦2$uGꖞUjiZgK+vWcyt |8e_Ux@̍0 Ahr `7`UM 8l3eu2]$_oWP:y]~G}k##gʑY]YWȍ%UxHRm֓ )L"l1RȘp>y?g_edLW!($Oi]0e.hJlRm{(Lw/X4_ZbjVyǁ5@"$R:!#KD̫}&)DU}Nz}9OMx6]vːoi@$U;@n*YT*:MHQhQJo,^=b4f;}ii0%$s7:F$RB.Iups"E>9{C0Xji {Lzq62[.HҔNByDI=qr _RsG1\ɨGAwP>p%?xgl0%PI-R2Ps>Yئ{-cENS4pc%gv|(Xk,YŊ8$__=^?i0}GquiH!k,=h6MK8S#ŗYEA˳@*C05}dSC1H(`bU Kd)0ed,/ ՙ`רj~ܬ>e*F~rmɜ K7n$s84s;ҳxRwG,d<8$m^Z`zۡ,]/mNPOaZ%ߥ@ٶXZkaû׶jJkRh&)^V 3䡻'p:x //uR-by7g-4s3y:Νiߠz~5<]@{Hti2aLNaEjH $sE4spF!sYɬ3}^篼 D`*lw}=t)E)`iK2+K_R,~-zFDG&rhB$(PI"Ut q*oYr>o*bX]8ޱNNYk(p6`/6cd$rę,l#|Ȋ.%%Pi"Y"t ZW.cfo╷ "<߃\YI#cVo! 9b~lӭϊ/lcbaHT6G`g ebPiCG@@نݛ}QJ(<=~1|ƫcd(^BIgqGphA;2~5?f`|X) U1.%:hpo4S%m%@ܜ^ίՁK/n@gyBᰳ@-9>`\aJ>ҭH_j􌓜ç?už=>5Kt۳)vq[1pXv2cCpX1cewnC-%@0ngN<0ۇ  3*c@zl:m('+yAhdbଚ2Ex- w|$Wק/GءH{j%CHRlp8I7 7Q!_ҶD#>7au#V ێM?@sO_cx7(h ׵).k}G^(G9P4Dsr@Cf9r d-3p~s=0y1p%^D8 iY&PvW|,7dڒq6[edӦH>o*$^Zضl-&ДJk~""-~;:91~`禾}ȭ< bWs{]8|Ruu2T=lƇ ~Q-)a؁GkoA1|E;sf:,׬6k!)@>2f"w>DЂ+#2ZgbtqQ~mN_~"B2gۨ'Ba|$`jfulumw:Fgo$.$c emdKreM5`.ر 58I + զ57`ys=pM[8wص6'2uFC@`M\Dۇ0GCDS Psz0.~%9g/TPU;o9m{<;b^IP'TRe["rg;#,Xd,88%Q }I^@!Ǫz7k>سbv|J2SAԸKҚ:6M; |vG6()Mv@?\m]!="m:wrFC%AJ$tf DA;SZIG`;p٢[íurLi(r,E0}hktxيvmId9)0:.]9+:]OdXf, vvxs"d "P G뇼ˬ>\z8~yka#c1h`;|~A9Qsdk&O)f !kxW96C=|J 8q29xu:wp9Gq5mv6o HyniTQ׀$)2yUjc!aDtg\>ݒ0Bx1dZEcNTz0t$2[Ǘ/:\ ܷ mOwi`?=X~~NYL}9ȋ'd߷VDhl4 8‡`Fc'eӴ_g[9ɾ^%f]*IZ}x{#J`,0\AjXyPmjjw}c ӊsVOx[0(9o/НwE%.V[<>#ptF"f%5QuKZa~,n)BoOp&n2fV"aְ+I,s_"#8f\xsxq.1{B[> ﰄi0&l.?yy^x\S ?e5iI!8;y9}`>͌ DB@"cz{-@ڊd攇p z`1C, NJ󸥈Rc:|1LMZ W h^g|dʙwnlp5CӼa18k2NysH_M ɘB-_ IDATw++O -W a,h f%S6M qw=zӟnև;k8{ û{@r 0LyZ)EccrV4Fx/u,4k?"g/e3iɛk)˚VJmDx}Q`\Ko[i%&YSLKy\YJx@k :zp#ٻhAqzdž#{[khӋe>y 5!Cĭ2[?Ys{ +d,ͨ|TuTRpD>s@{[Y&Y(C1Li4M?a.y3,;{~Dn[YCMl炀sD kuD.tnxtgY{} c,Dei%90%_\AxL%[,3~.>urϾL{tҵKc7}>CU1VemtK7F21ǧ7x3wl*Uj)WEゖkZZb!h)@W ̸Gfc;"чvNjf] MV *݆D!7hNk F +u~LZw,G0:t[W֢Ӑɓh6͗1;Og^ ox&2+iR/7n1ȥ=> gp cj[;n2й>^3t'bA䤣p ؂_ kҏvu/o;g- b`O *U^jy\[)Q ӨY|KZ|v[xL;`m{41ރ=K,#Z[ail_U6 E =Z䊫EɡJZ`ɨ럲2pGv|Dr2{}#l7sM̦I%Qȱ @}z͟v\&*ٸN>> RVeK@/}-Ǵ\gwZ] ˘/3 TJEoC= +ƩrNKY?]߄\7G%\F\s}@sId s\Ė+6;QSܯo7@ҵ [/۶UM>Yw/oq5nb#W6n[~{vՔL͸i ь})%d:ƧP M p{ j. -.9WBv-@+4 (Wf "gw84dU2i:ʗ/k?(ϙ+r\ۓkW-Dv*?06rNmRLASL7K4DzIq ]'r^zG w[e֚cSf}bi[>px u85͟ .w'do/n]:,jy9,( %kEaԖmDg&#%B`C[;#;z$-5d28xZ@ (ά'3,m{\Coл?#௩3pFh;/7NQe4 Ӕrα,ofvbr|wÌn=N ,#2^Mï÷,a4xh>V.{<OŗUjD{$bAAɠ i6sƷ}Mvk=Vx۠4TcuIjUsphI--Q`\xaLm;02W:Sk"X$̝ɓ'Kq Z20k>'!;]go#hiK̠R{9n[p/ƋhEl}7E D˴/w<ɐ]PF0[ָ y]X`p=^zyI2x ?s'\EՖ2Q}78 4K$LZo"o0-ip4d0CwuMѸ`Ok?ZK kUr S42' > -'eҚM8ތ|ZdNaBowp@L' 5ofON+)DzG^GCYз@\®aٻf{|}߼xd NFʕc }Č/ßaŚrcNyͶʭ.yA9E)Xl~qj l*(W̳310ղ$jwYnv{#0mU Gc}ֈbQP{x,D{e!ϛv̅HΓ[}p),ϙ!v1tYf NkV{}y&9yp (;0ubNP'o*-J{ox.[Rӱ"pU42ewmf^ +sn0!RO\D-nCd( tFQΰKn6Ic.rv[+ѕ R,n HcsLXSJYtsKe23q]?0Oct'yɴ񽔎#.Ck j5Z >V2RW:FMzuq>1y%x;9f&i8^7@Y'ݒB>_Wh}r]?6i!9j.eӞ?ύZMKQڌϥC/hld&;HqH>/"EȌ8$x23\x bM棛(ҰǏ#TR-C(5sR&._BuvXP ġa4~ŵ< Ȥ3waɱR rAnOaɡ)*`YՀ`}f4إ2/!n5Қ T8J'̳34:mA5]vsė!G!z8}7=-9i\5LSN:fj=n( ǜ3-?@>+k0C?Eк7zL5{W9LHHZG+}MtUz^㵾}z A^8/$Xq8rxɭpHj "nAE v.S ,5TLF'ݏ̊91 WRgL?c>$׼o.r6ӨgvL=7k-JsV|$)3C  S7i.w`I'~Zf„?^@19SAq6շCS'99z iyA4b`ܠSre}mh8/Zmm,2碧w}/Y6K^r{Na5sc|CR#hFw^%>6{Hp0?4#i 5*)v ,ZqxiYf⫴Ե¨+SR2cz$A+Hu(JweFSX4f ckEO\ӓ@Whu|v0B%J.s1,]*{D+SJWa3w\'rO(7.=XM]$%8X3*|x63mxeAFƒpi_e]NRevo"r&iI|DSfM:ԛjH83dijqTdrQ1׮@o͒=?5lxy!jomˑXJ[U<#?1`y4;yp ]I+wCE>U+͵u)ۤ\h]%p`l ),T,=4e+Z)Vx4V"Yf3#.auE@HWԀC9!ʊ_>N(㸔}],X1{K^f ɡd..~h%ǩ!tVKq͙W,CjgKzo,g\)3nDx vv9jZ ~.NLd+px~l%;{S%D:氡_YI!&Ph]Ȓ%:l<6QD@/4+3Z%A-dB˾[Ao+Jg31e %>9 znwWdX׹Rmrȭjks߹S0m4ti̼jIi@Ozơ<"o0^7HDE%c~VCiiZ81oɘO`\ ֝͢7D6[H}'Wc-0c܂55׎g8Ͽ@q<\J{JF5*ZYzà)Zȟ*M5sn]\xn>i#4|rZ,͙Ou_#%$˴ʓD"Ց%^Zs}sws,I`eAOD{YK[\M'XUEeI+ϲS1"!5pLCG\{$3锟ՅVKRzV8V\04pt'[}IiKѼ|uPI0J<@ 2&PI}4k-FN @LM?5]EQ No.r`$@?9s0Əbp)d#lI!JIgEKgݚZL2?Mj_5#5H̰vV )g 0LyjKz{+inܓIBzLl|qrf'gj jzff<G黢G,k Ǫi+rs't)&AǺ7(`FI@pFG#.!GH }PΒyL7?B:$O21i`Ap`IQw-+A%DxЂDxfΙ+F ']01œuvsz5>sKL% Oi`'h I^VԬnfq3FA]b!x}̌cfC̞O 5<3M6d̤f^lȒQ{`~>4,j@ <ec<Ǒn11a&]r6נW2K{=R ƨb Cƕ%NZQxPFw,6M 4 3[ҹ8QzIS_[2d-NMi_g |7x7t4#'lYJ͍G3M<͏L_{sk_cpC:. IDATʉ4Ak[põ8UIUܠrIJ :gi f$gIĎ Δݖ+@ *M3~N]=Anݖ۸GS$̙knq3I>DC#%&ڥ"u{;aXH< <%5Zgl+ כ:9myIb[}dܬ)P;׊A1,ifa! t;p(t͜s)D PQ˚^t ťL魹dlh)4Vd|ȵ+(`j= ,KC's`Tȑ ÌC\ xpfȭ{I{.ߡa^k29M f926t w %kjjrftHWTaE3u\پx'g=<jw=G+GaQ^`T~&9$Zv"C-إVieSC!O*Mjr,d 5'`*aX<6Eo>rm 2*|M@ڰpҠ=:$Fa`th8uq8g=%g`,}(:T9 Som<6,;|ܵ85YS?rd਷Qr`cqA2t5kЃfxF%BzӍp &{5#4=W;x05;GJ3d8(H|(T`dVyДb;I¸O2֥/&)}r;WA8=8ɳA#ڥa]/l&5Wy VwTGZN}6s@3t_ǿ ^XۙD 'Vӫn4/ Ohiڪߦ>R]H08+p翼(|R-C xɉ-P_z.;#g0q":+jXY4C-{?7y9)MG* 0bI&,vs*yocu^lV8'y~fm)1e6N a55S18g!cD>h8z=8/7ThdxЖ҆L(if演_0J DZd+C]]cs>{v>ixV N26ɜٸSG٘" f4_d܅Х{#e 얹%ɐB^t։qKГͤGHVA 4ۂHj͹xTJ6 N29v(']L#{e'džP ]Y浌bv/$;3TM Dts|dacrNOHʼnr0=DM0p)\蚬0ImS% &8OiaHi1k&g' a!01M *`Ԯo&(#}5e[QJ`4ǚEuǽYjiF:VG ϞDMi7AYuYvk [IKZ]p9EaX1JRa& 50 p) 2Q92)\82Lש)` ׋7,j@"e%tOa$Ԃp w3t,a愷Ҍƒ-Ft_ ~ՒAa1.bMi9ڂqYrn~yӘl NԦ YGilf :5靜yMmB[OG,ؖ9 L=9f;8:㹙]|L^r+0< naT;m&H-IuԲ!g^GCW b5[ymu%7$v83wQS]iEMN#v8:))7\g嶷& (7D3jzcv^#a*0rG1ZP{3pLC6<16R3kqu=WL .#7or&Wwţn;0%I813/GKs>L@x\ϴU\O ԭU'(炨J*GS3>|thsָHDF6eX/M6;yXicH.w~6YiM^ sN/ÿ x-lq¼H|=g!,,i_'Ns]!+f!5B rCވsğtEKze8w *P]MY}V6OԊ_m;'+41374 z&Gea.wP;Y KOuBYk *13?v'3 5XQ13^ 藂2)sO h7D=DӞ 9^h\4yhIzA$His#sA#Rg̞%+9/U T& 2@dah*c*LykCES FߢU@f$I% ?knh0t j`kWw#5i$9 ߨx9" oB^:F&NHcLW}3g0%#V/R-&V_$Ư5n#\!%^x!X؈A7xa\%GOT얝T}Z=I@=ED~qBrt3 `f\zL ڑIYoGbRT X i1Zt6|V&=fYYmd5w0SNi'z҅24QCq67VX**d>aRʹ@>hKFi k;/6eWRPB6ũbJ'J7^g'7"YjS575CO(mo=c"[w] i|\-,W2v+qpM Sh$Wx CiRrT0r,J jP,2ZY[;D[LO BMt0ggӷu=0;͡/%0YuKn[Tľح V8A1lBItċ8 JD>@6ZPip?)+@%Zˉ, ̳d\ kz\@B++֤Y3F"\{ϓY޴yAG%z }IqD!kKqּp\b,:i,>48Q1JQP`54 C_Kt}>DF|ޠP"a]\##%/8hv"ndpW feKk\iYdSvU7.yN2y.[MeNԫ6ݵw8܇Ө@q*^aD;Q7q[ȕ'(CAL\n<|3i:/ & Vu[v~M%Ɣn gʖ6#yBfۭHz86bp.ܭSQ|9t7 HxnyRbFri[|nkf& `'06b8`- o0Z!]!C!S=kf4OK}΁_i!UVZe{üG3BZWT'LTV֓k;ޘӲܸ3"ppctuEpp(+Y1%5gnzMzOk_ϾӖn""xLhvB2y!qODyy`if8[mw4M.L$5gUs,s0^'*_˴߳,& l\l;3T=0:^d )p]5[micnZ̟M4 KAV~]c)m5EcrS~YӺV~\HdCNë;Jr>5I !zȽ:8 v)&C``CHٌpȆSk[-[0ZهJSk Piʓy͑=k;`HaY1RIn5K&B-֎TZjWSc,-\rg|:J "*)NLTeq^VY^"N4] `Cd[V3KҘ)HО㤼y*F{΅]lxthT$sU 63.!ʥW˄5hg-{Əƌk rQY)6,<DŽ%%c %0sG $O,fsB%ߖb k@됏tLM6ۇ`oL);jZ90:|wgld(\k侑Y=WKv:\X s9i ÌrxYwq.j\Z&,Y Oh|glN0%`J . *wLE͠m%y:rm\fʹ[K9M+L!σB6 LCKN0ҋpqvGmELDo,gITpl7Ud.xz㞃,XS[,lٳd[>/s`L,Sf71 î\ QɰLYQgxo16Q:kvp7,͕ҴɚdI F̷J-3{~{Mz~JN4g9rk z-*;꿛^MjpuҶT FYze۞uJSMyZsY GXOpawG35e>"c{}sBJD'Ӟ#%]r(4-FI c5vP4 nˈ]S))+߰v=.R8-ׁXfձE:!j!i 03 UVmG X|kN<`dQ$W{Fwrn!< i9S%l-;gھ >sL>$r`˴( 9X.avb>x'gjFRHI#܇};t8rlN֧ɽ?@c:6ɜBЛ-Y0=JTg9_h B |0RzArrIR6Tsҝ8mB$/D EzU%V/ &ap5GRzӹ^C?j?tkvڻSjG1~/}1͌ϠA+C7-n޼d,d^ȵ?簽#̀x'V'іQX&fny=t=EpgȜ{E/ak0_R=E IDAT</tKiF¡=P.`]:ͮrcʬERn8a {3m|Yc34+S]S%jUzӡo -$by7fnç%/i'*_i>:kO&]ZRMmR<V3rB(?j{aM!7DI>[qnk1J.fݤLEu1tD VXz ^F?lJ/YfA~$QmO%uk2{O<ъ-E(k-jhao,%>]S7¥K {XLW@~]/&I7VZ "qs|59nwh$)i.`!x#'=WW|8V=CNƣ5>O]Q{S̡ˀm^}pIȽb>3>GO{>R$OælVuU2ЮgP8u6 @u4Sa*$U ̒o̭ĈetP:$JX8EJ>;ܝg?FiDR4VI{]%p.uGxlF@ Z0~Gy,M*Zf\Z_!pK jiei!!!F}={7?3Iqdk@ágScAReڏm7`.Xb4 @[{ /Qq_ Zy'.a)k̨K K%h0ﵜr@Ffl1sf<1\s{fʝ0wZwwQzC;s+L#=OrƄ 'j<sq+s}MixMDA6FfuQ R΁bG> m'OSIZZg]L.պ55%z%2_STįHG) ~6 }H>TK3nuξ̳37WC!m֪ MDŽ7WN0\Ĺdʱ*$@ۉ>!wwv˜}G\77>rIm֊U EN3f|Vx_kZR_fvMپ("M ̖h|< 7-@QjDj"dLIkmҜhVoxOxcl/[oPj*^u/T=aCgPk{d!di;2`3`0K+42 uS?6MYym/8et @eǼehP<OEhBJkyPϒ\求2G'n:ܿfT"Ŗ@M._C.~TH~Æ5iԴ3o[S?adeeW\4e¥894_AʚfyԇP |?^,V-m36 0ă/r)з.2-I!-koVͅgkmM0KB ”qj#T)[]n`ÿ`j=Р۶\W'FCXŽ CNqћ9=SnE F^iߏՀP)7$Qn F[ZWqJo3?"F*,35?WB6`  n<8(/1Ii_2J)=c.g5ǀ+}d b-ƙͭ3Dez+Df({ɕtdS@3/(>IT[5!1Ésk>l4u<|&HŚ߿e\˚TO f/s],E }"&'I$Pww̷wo8lCD,':f(4<;B D`0LR,.4a0C'%Z ZIΙ5v`!a S:W7+>9]nPRڂ~4MK@3݆4-r-qޢs-JaXιk㖗1K#e |AZ+ϵicno*&|R:sd9B?ߗ9=1O h.x}%s'(C{* w  =t˶Yu%&2i ׾v3 !q:Z ;c@dy?o 岼*yh=O(I蚝.AIcS3QYuP}N@Z-htjKr;[Fml\MCaKh7F@l37-ƹD D ,%w'Gv~ DBE8ڢ6TLS5l]y&|ָBnQ-Jc-4_ucwpmE;f:ҬԾ(ʕ(y0EIV{znO-sl0g=N'&(7n 9״ -ٚ47٫8:\mX2*yZ*5Ʉ,Ry1&+t&95%IN.fzR|i{2/D9> QK|+~BO4QYij v2^+qM3aаbiv)յ1MxANXy$@ۀC4 ?LUk)pJ"p# ,ҝ։O8'@U_{y R;/ӰӘH5|n/p.#Vл;p_!,ZZ&׼6h~Xf;G#u$!S"_Zoش<$ >ʈd@ϭy4=eϔZz#ĉ+)]ԴQ)"?6Dix/iSIF  \۵!MB#@F'3v17kO49Q@^0; 0ƹi,F;:UnZ>pw9CX-#n {'4ij1>w?3 }RVw凒#nz}}!ƙ6q2'*yѼ>6`ZCa7T_@G'DiN,{nz$pz3k  9%pGS*T'='}2 8yC/(gb|?/~1ZlczHQό UD:f)?53_qw9W||o<χ IRUYG6)}# -DPa2kR@zqJY.gV<&z~ӀVp NqrnhAäP}:y)TbDs 5}(IYUk"<n#|)G1ݳG5s%g?5`gPrڤ㑻2ͷÿz{Q/if>g #0u :>q]R~w ))PrDKk0J=OVp(tIeS`=~ φkzWr,eNRoM!*SS`8x>aw:J{7%7D~W}bܣ>ŎZh9.a_5n+)R'Xgɲ4A 񹧍p5w% CjcKՋʞtJ;1b:kpߋiZe w_S2q; ҨsRb }뉵}tp|r$)聰5wQ[C5PͿw 8OДMDbq:7/ q+ <+f|ee:䏪=wZ[hLj'S.[k!ع"lU0=[Y>18s@JLKJgط/hRFmDKŹL?n+e"q;rBRޯLVc"G3JhK[rFO:n:P *3nfP93vUkp vq5,2Q}-1U9$oϠݕ2Oh:A}L-`?k``j,S޶JlV^x&\N<η "DRwS;=%U9 4754svXs(nZ%%a.Fz߫]miVhQ_;aBڗtKO)exSsk%ka.0<Nc\ hצ$5 'TdaJp?] SFfiO5_gZ]tGv=ǒ0 Y癸y}f63GJ&Qk.eVUڔO|JPjp#W 6uzQnjNAh)K7\zm:6ކ8QKM$D[${t LlIuB7js&| ָM2e TU:-2_a;ɔYpKWYP`GJ}`gB{R6'9'k2FNԆefUϡu{IG"J𔽛 }+a '=5l nj&@PBmuC5uAw8Wu}oCgL>a!"xޭfqfPSth4RFÛ0ם߇ .욪qTjٯ{d~!aȘ7r!v>΀4ΔֲƜYMXq<5qr(zzg:s.I(-%`JFAtn}|VYO&]7]>)p~n0p;l +pxϒX[O< ic7,?=e_N 0םoISjvevUL-A^0G' r,3 gLA1DY bȨlQEPbmGP ~`kq<Gm3.980:ZMv3Vݮ1AhMQ_'q \ӦOtJJGf~>/P.1Yzзwf[/wuuWwږ-Zvcl0Rc yg: ~G/H|4K?c{|'-3h!}Gt,9%r%{%0%&2E2Mɤk ն7SL!uKJro2Ks"AQpM?֕r Ra1IhZ,S>9Ջ;:@ ⰈqXw&4"×shP4ҥIȤ΢Tsr(h⟓. |AܡL\$1-,rgxIˏ}ޭaazx.oAuGߤùIpGzf}Cl7ɬ.9O9։B]eBb+cReͬ+1Qx#(^dt ꉉ&1q愡k"iVKc@aoL1Nφ-[}׌ݜF&-I49F#!@X(8| ?`(x<>+FΣ2PO !<\CBtG{f}9 c\D|W-2@cR% ] n1߅cK!BS"1hjDɩ83Or!>#3Up;߽p{CP{< ΀x: T? Ovqvu 'vqP9UU Y]A=T(!Z9U#(-53թ;%$dSdkx;p.pը?WI*v'%hh w"ߏ̺tf2$t!P)`tgxpi,2u IDATs@Dq>^ < NF@ z^5/lWnH԰3M$6((RTb\s[4Kj.PnS!LaͻI(]sr+ţcRh7콿Nޣi֥'\w?d өsga!Tq,.GrƓj3!pc%F3Wbd9aHmL=a?P(@== |,vw?6r uAܘDjKlD0 G%8%^z(h@2RwVvAɠs"'$y&3Ҕ"qF 'YNڋ fyJ;܄͂aq4T?:J.kɗ|m<$P3it[4%b* 8?>tHx>*):~wǏɑ g,$=tT@k݉%' %Qn ~6,Tp1fW'GaS3a b܇ڭL80Uњ#8B-}= v!*sRctg8@ȏ_&T6<=seïe NM*]!rB{ M1ִBm x\kng&zRcHN89-G@iJΝPRγꪊcfWXd!OٽYh%'~M9Ҵv~x w~+ Uy4 !Ӟd 9Q:e Z#8BݪǷ>lf ~ߧ$}ReE<2!vic; $GeCA%uzk2\Ga\dQ@:Uf~ZY3X%)( `٧PW9ni>3E%G/1l;/(kFr,Rzof7wq ̐?3 "'6 z|s׆~w<pLeJLfj\EfҬ>>Af:w8o dm\` {F\b4QH풽\t68/&l@c1J5,:wЮi=';p0ɲ8m'Wc9 ?Ǐ#>k'qřDs>M!-k~;::GL =vt|;aw]ؔ\aFNɔY@S}qqH9luAdM`;&9Q<Zk<|9p^*1IcLùX`<sHgMo[v'C{-1P:ɏIZ='X,:ip^nݍn1.9ZSeh#*=zLS2t2xggD̀@艙 3x~;T=Nt9Wȕ35Viɠe8wz(mnD5D"N3Rӷ :eKw5뀏@p pa2|8`"t}|܍Cr{dVH16 1jys8ޒw ([4MRmAne]Lg~vk"㺜Nq8ZW'h-=2!<=JT|S{|lCe %#gt_\VnMatP#w-$XeMgJs<] dq~ [f-|x{3F'垈@mbgHQ&_Mi <;/C&NDKz /5"w !,NvgQM;?9A4mZ~fZ9gX3bk{y&:T2VDBʮ<־$L9"$$R,s0HPvkYu,3&>'?hTzyUu(wńv|pﮋӎa (O,&_4Xgjygwubn+=< nEzщ`40>\z7I)y0<$} ō/^{ovS}E{aBw$bq_;#ɢJ,J@A3EPal5=X 8 y c(mOC??G_;+ʎ$|@zW*+AXU[d#J=bԈ^ӣщBh:U~JTY(?P ww߁בPW#Lt8v irp]uv6jH R0:NWJLܹYq*3 &|ع1Ysf .A\%n<ϝ榡v%}-f흡&/l,sg\)|/ `6t:ܪ‹s 8@dԫ, 55zgjBڋ?6&\ %0|(./RC0,=1t Mܛ=B2'bQ8;ٹup)'-; E5-^wD"%8}@oք-aܒFm@oݑj^7kĹ⚃ 3NYHOxX^ S&^ RlM2!u%?^IIBi'i{|d.ڊIZ MkGR>L+(&M, (7=hfj0k2칶uN )GH {cI+ f.Cfw58p ҮϗR?{mHHtJa}IC}X Qd(76ӵ*ŭB6bvvxg^&I)^Ў${ɬxOvVмςi@36kvغe%mߊD-I|lvo~o~Bą,GuքS&j-%P+4gK\l?x8fs?a!:("3ݓHy=9z`tVMm&֠a{]XcBh1IQb1Wb|^kp^#WˠG6:nCĉf!,PC_={ TZ-`OвoJ Yw֡{ =.4j;;l3Cb'a9@wP9S=,b% }YɞW 4k>1FUs'ۊg A0WdB )BCa~F߈s*兓B4EȌIq**UT@cES5VC2{ŏuȹ.);yJ„s{[" 2=%zbް^ݴ*QH,%qRI46BF-67${t[3|aQ9q##^nouםkեŅy̳&/ KT ib41"K/ $G`Aᅢa쓳e07#7It{(1 }09툙nu72݁zO 84y<\ހgn+x\KN3p{:1k~F@W:h3Y\.dq.BV;/ @kYw#3ϥ:f73c sC  t@q11q.dМŖι;F7$^) 3Q[[ccz]blSerw|Gτ0wsO8xB1R5n=rO7oN2{AA=y*MJ{HV ?\o0z!@{/cv]%ƛbNzJH3-Ot=O䐈==j91Ky'  L; \6+5|cAF(١L K8_ ]tK$}9EjKDKJAa~3qGhW.0|'/d)7-L)`Lmfʧ3_m[t iYCO)?ZKj@O| F\ɽ-i!CuGzk"-5a9/^d~4MvT*X6&m 'tt`ʶneQ"!D. Th>xUCNݍ@nЮ:iWi[b/ڿRzT+#SZGCcaiBlڼ4OBf[3a5]r) RVLr(Iwq%rN*ʁX}aFBtq}gH)`l|p+/ P`9}~a-HZX{2DB> cBnq߁P% xcPm6Cq{<4}GI2x{l=H5 YU fHS;%i*, [u! ښP~nG-X6udKl`*Unqh{+7 cBRh)m-~[}> .!hF)uy#xx=sM'xS%7૤wN(\ß)PLFDD Gb@ۘC"`@ `ijɜd@N fJ?=|w7Ҵ2J8xv q?P;v-WJ27M3 >fW&S2b!`bY UW4K9`-9MƜA'o\a\P>+ԷbG{]oQ;u!|gvfY8ܷ+5{U>t>| >jB :llw r9 6"7 i \nuwu+3hH'sy>E챱 IZ޼wsmE1$AiJ*Ky-| Ͳ[D>Nx@䇪{Oƅ0+Z IDAT5@<˝6j9/AD([ { wLjiS&!@ǽ 3DnLS$4+@$ J.vF klsQqAs*1QK)iȵmP[Ck ]Pi`X|B#>tXCu|]"ޜc">m#[4y8Yː< =iO0.!Ai}0-Q7!AZgǶ$ZQk(fF\` @$TH*-ɍ7V'J)-^t;g&V a>KqwYCG t:Bu 2YqPZU?c&T^ąߓ&ړ~#~ƣ-vjx+kr5L3371-t 8?Wtu{EgkwGdITnߓ-t uFmtaA3qGEb'Ɯ\qJbf3T#5A$oz;Sk!\µP\P9M}` t]_{V:.5,8ʐy~*ÞdtXkC9cz|k 4>YXA} IogbʞT0[@z@Sh{awd1#@ZV&} c̊˄\|ah<7/rxƒ78ec =Ns{]D ]3,ˑWni_L6ecF }{~CЯޙc.qz\L>,T@E=0A8:u`*ќpc[?q0UW9b5co0z@1i22'RF^o'G<=Ƴ{x$Jw qʬm).`h#lʳ4k–WSs iAt9V-+6.pj##̆yO,c}=Sww nSb~*4xٔKzմĶxy5&"҇#cO>yCSl6Otw_<8hhڀͰvFcǤ]){ j2lҝ";9A 1!5TњaMJO2VDR(k&ӰSO{g߂wنdѨ%5Ţ!e {C[$qqcu`\oY#Xz\)4Fn-Ҭ".Bˆ Q[+\4TgAH\H6́1u3Ǝj8{)唦ʝT# mba11uh_sk ;I+iadEg&렞''/66̐8[c7ׂUiY;.-)׾:q׎0s籰o0 (A&ʍAkr&¯!yX`@v4!>h ~Wt`yV*1=@<-jM,#@e @#)$=]$yb(u}&ooSxIɄ%6K[DXYSkbK˙c\dS$\*;GDĚ8,;1 \j\sO ^ hSe6͍z{+>a`Ͷ'cK:JvmYQ {-VL^Mu cɝB0LI $nXYK{`Xۙ";89M2@b-&6k?t!IA2 qD@?v;\FkM _7x6F axoqrZ_4qs|{aluhJ|A3qK1%$DRʶ O9`ܛۚ?1քasΰX!G$uw ZLyyߵ!TȻj#Q![Q"X{  s%>r%mS冘c-ݨyJRv>oc YsIrHp4yAζ`}9"PũX=v8C6o{,+6po|4+i0a ^2`tPV2PKt"jg`؄xXA*L$% tRI JR-AKހx&!m7Pv>#we0.9ڑ6%6QL(wTv1p"Y&f1ΜnKXWm_Dw+W #w +%^0XdVW@jO3\m"rvslػ320j'cw4z.oqt]RLˎ͠YnW[뙛ȀcBv[]ɡ=ϤB a8oJN~L8xK#Ͳ7@1m Mu' ˨Ƙb.̋kJFdze6΄6vl}페+{vvf,p?dXf,|.͝OI\69cXuꦋ,S`ɺdoC( yxіdȐ{Ȏ?h'igKtT3(yν{Dx hqGgrא+6m<~}9V# 6]+=1QMl+g=}",LiJrKbN_T[SF5Vt9fauU5ԀPZ[7K90N0(2w;:B0=pmda{M2f;݉ t邎ֵ!  ȍфڧ$N Sy\S2dX'b7Xf?_=$>HXG;8up xOvp숹.I'm0m`!3h37K=իL4\ 5t2vU?rf񐪅ѾsCZ f)8c`\()w$JEp S"?C'$X)ȎR$2uj}; ׹;+:n cZ'':g|cqAMQ) j3+:a8*mx!H'c]*Vr@)鉽?WoP863啩m MdCByM^ݟe's_=9}咹.Fsfͷ 4S)&Sp Db  \ټE(!Jv-T;F|sf &r, &`qN0gxB#ۦi~QGHGvX }0'yׯ1΂'wfuƶ֖i]`k M6B07QI'z%tA. #u>y dѽM3 >V9E˴) "@aK#&ɣ'fXE^Y}2wǂ%K/_s} פrKnl>Yr'iop :c==[:^gi | K8'E oIgR*΅3EH pC*zIuu܁.X,tQDgX`iwi,J|r@jϬ&vzanI@\#i,8aP hOa8;jVܜ5qm4̱Jp,-Ij#Lgc*\8-{?0 7:hXøK|{?c~O ]FO3ÜAyOޒ9}$|l0% uN:z΂{zr(3}`@H1 rrR>&rQ@L5lQ8=o 'X"?itrM7:n!`-|6/3h>(dG!$O%WvLkop,3/(k E]{mȲ5Qn\cZh sayJcn={FQa?q`, XX#u/0n6xJp>\S溣mm#7>:sy7@|BcXOsv*@iCu,0._tKurH'8K fay0aဴ[fBy#om d+6. ;S8yP'!61,x} =t# c#=-}`<Μw9EK9L98,g2KЋZ//a.Hu:D~-.KWt, ]F4p0v3@FˤBZ*"703;G*1f@qw1vi&osc\0NX t,8ho. 9pјׄ$P`v .pʾ^T0+b'=^º$fri@0T dW_q3Pd;l]`@h=nP n 6Aav+&\>'t\!q;:kw'Ni;b7yO%t9 -utp9 {1Cq JƸֳ#'Z$'T84 ݴOm'1љ<|/kw]Fݑ\qg5(}+7G{S=蔡=oc3v4qW3h~@Y33pdž6AbXb́l M,;Ҟtў5B)05Nu}{z܅5=ƙlJ-{`݁uo-2X3[0˱B]eHZ^ƠX g5mbˠB.I N .0&` iP/`!/]Bf0Q;{| {UpCqqy0) tCa|01aq`axL6dwg9yc߭\1/3h`NsB{8/FC\s.R_0n1-04@c܅}%$ ݘ>Ö@zC=`\q]*^{\D7ebEz4Oh?㒤ޞ1&{`j$ej oZ?m3@c ]! YCR»cx |{%7 fv ّngoKm@3ޅWvbӓKFEx;ss׺^ȑt.,5ꎟ3[蓶꾩y+ pIalC1y(C. ڬlQXƵ! xq7R`Xks{bh!qG~ ۂ| x\D`%!g 51NC(C7;b}b(o5QmiV:6&8A ;$Y/ ׅ 5A\bl˙:Eqe'̖T/f+JL +sxh(&_)`I<*~id;6B`n2[3=1N% ]Po9 kހ7CL)ILXS.q^!>#tl)f ƭy\orh5l'Ǹsixo.q!Κ5ƅOq{TꎞckkO7tl/; *6Z#π9k26K.<1{&ȵb|qF{0X7h(3(eqyG%@8(ttq8'I䦴!vyKFOG7+4`<26~4 6rDi 8r'[mI눙Y0Rr=(g[IogGf{-(m0T֒6{'-S05 C X 70K8~%쬃{a:k̠93QR &ѫu%K,wL&CNɝք9Łi{x[51P -8d6sx`ҭ#6q<~NJu^IqyA:ABcMF6\ɐpZ`(CP':>x4+Fv7V[zww(i#5Gۑ.Π_ ae- FK˰3 r5ڰcs+xq˫NJq6;f(筜u9#k[69{7unu0;d[pGG}BqK2a۶G]zznK쏫]ٯ55)8^5yTrcĩ$/gX).O17;nyGݑ8%C#fp3xS #-qqIO0X ]8 @W m"k3ˌ %WN=u|v2FG-扖v41NL1:%ƙLw+qrZsyGb\ĵ!lTZjOYF3漼dLY}q8#lt&01t%@b[9v'o<(r|<%M ..|+Й/g N!QH8 3XLs^^iIx! _bq{1Z8gMU Lفz)?{!{vA_ ƭp=sgOCJ78emvޠ)Kacc5+h^Pޛ9֯0b7༦r45 >6ǖ65̳ _\O ְCĸ7>.#k NY}q+j#U7jj 1/2kobcx`dߕ IDATӶ1qH>P = aq\"B%S{Tl̡r( 9:vrY3Lwf3Ӝ70O:kSd-v}: U\9.0ΞmNif zOC R] l[s y2漼@i,#kҘp:'-ܴ{hHpmv"dl>S Cnk*14e^RIԎ`O[s6) W8{C[gqrøm w8Oخ*f^fМy>o8SmI6r\.I1r\ΥR{\,cnS.9/3h _b5p؋-ެ/q43;JN$FYzۢr1˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼kXyy7^ ype^E{aJ3Jg;/c7߱qH<_:isSk=4eyyбR (ijMixM1s593ӜWiJkrF&nC՘>S?%fcS94漼B)ŎjAyAL+_Sz.C-xJ5˛fМ$% i֞R A^jb[rGK4e6< R @]zJ$ k@'᱇kAQ'b*fAs^*_ PkBX k=9X:T|qku&<3STv;/3h $SuJ}F+(ǘ5s3QRD5̠V%PS2x8ܤL|ET2Ժ=jNǬa5ydyA kpҒ*Ԗʇn+g-|Q} ,}FHg|@E5G5I|mM!x6&Jۇ9VZ Sd߼ez {K*.5"o0 7ygw>[*WɼX3 qɜKfP{ J7yk(f &* LM'VɚPS#7{E<, [vs(0Ĝ`SџY Wۗ\zbj@5&HP=o'piԀc N k0g|| a)2CzاG^[rN 3 r@_?ԂgOB LXM&,ó*ZL]\u2bW*~}X#rI$s`f3h~^5ᮠp>R@S,V:"%kQn?!4}VI,OR۟4_ VzsSZ p1vFIKON䶭d,6|fl}pw&9U3|̻` dJ[cZ[p!הޔ<ɾ>f%XJZF2F#9foK4b7\ Sjqc^>2{)_g43d_M ~ܟSYcd\c[ m/-qYPOLyqXOj}%홚ɸeΠBf6ZԖWr4!nm6݆SQ4 ޙ0TR)JF2{Dk;zai]PH`">.p(P6I̽73\¶ 3W0cqY,)uZejn1fn ]" iV)1!E94v[sGdX`w kV:#cT*qDtk2A3߯tl%R:sZqΣ)1<2s%3E`/\?u,oeJ&.fa[ sQBtؼ$+Ռ}+!}m<$C}ye`)-5xIsr3@&3W%IIuBz`zF tiќ^fIO@\M *8GAymvyLATV!n*g*/]ԥCDT r|!|֊uJ$AF'E!9,U-)@!'Mj-^ϒGj2QcZnpS5)S Cp^vIBqAlwHMؕlu);37X,09TbJ/ei@-/蝹}ku(hS\q>#^kf= pnw{_kjZSux}[Ay>tnZTeEM5PXX\DK=f2 X/]rzUQ #2i-(ʏ4ք}=r%/b%&R\o|v)4b^° ]"d['ySuYن@2꼙Hچ1@Z3d@b%&V7R L1Dlg`!@jkN5>ds54; 'rJ>mɕŢP{Ȉ~i@,%ed"@=%ƀ$Vx0 >%|ةF\+v[Pf vNW@HkUDC{U?U\ BD^!P?7̚=^\>,9F)S+Kd27 ژcsSuԥ[IolzfvW*k> .~Z_ p K"=DvPCq{@`;"QխNBHޫf#c R*]I1 iVLyYU*yNyr ́ )%jL`Yiiޭ0|8i}]uWWϫS?<+_uz\g) Tߧ"xaf8w <ȵ8XD(c|W?~C5|XL&pk"΍N,$ ):b ,Q -MLin6mdS{^H{!Ү;|iOBϨNOnStط{UѰ *Fer'A68 '?|  C@ G~o787cl4e^<@j5zg N4_v׆OM"f|:s\F?+A4W_,@F ~^OnwBh7i*ĩ8A ǀoj #h,O隵,P}.lu(x>4S 7JI22'%mͱHd;9b Pn׆Jo/푡ĵ,Mk8ӡK1* <;Ǘ* j/:mG~pWjK֋(ReXm.;N"qvşϊk/uհwP}(KDgk>%: Si;iWD~E!6=!nB043K`V,K, 49T !Y<9:E?Dr@XsH,_zo˿7S[w@1@c|KlS@|* t,4Q_鎓cc'.dKnrPJ;3 Di ۭXb K%> N} y/VW$U'Uww3~ AB /\_EI{ iw~H}|8 :3_}Z {Q)lr Die\82'} ,>ͣ/,W./%״$?~xn~ c᭕E) T"M/,Yã橉v) k](gœ3;4_;}A9pB`BZ8v8.FceBgx$}{_r7 / eC;t;7noA>{>jSU8Fsg kӾ.l:Y\|K/_O?T `̽5k(\}n ˬI.I%Ϡ9q[خM?DSͱ8d?z_rC}W ~m"r:XrʦiжPKeIM,cYeL1BdE,;z]'ʓR HY04 W}LsOf&-"*2ک񸩄Uclm"?K-.~ЃQpȌ_?p1OJXpi,ې Ch$NUz?Owm)2eG\* JN0Kc $sas.im5Fj H閣ŗ G-q/X>nﱿAۧ21:F,m-`$P,ķH{?=)̅5fm3@Kl9ᖏ>nVWmX`[+SR Zf539rʴ9<,)=%PJH !H k>wOnqOC׎@)eh-2!S-GW(5r]?kBPOWv/X]ܟ# .Cawb0d`?3@Si>1uph@7$Emƀ҂l^W ,SXg>S3 QY>[]~wwӵX 4)I@RlS^.N)pV<97X]&'9K?/|toB䏉ab>EhvڶEŴHkkR4,(PpI{Ѽڋ.ܑp!g~|(VW˘nr\FA3c-1d R!tLL҂k H涧eBpg-gDjH/i r$4ZoRkf)^xͩQu M闱rbT|՗]["B8*=O D ,0X2h `ks e1l҂w,j͚-ɮosjnA 2E &(#"v(l^l!j?:~h:$%@  4z@W|os2^~sV\kAVܸ=CNoooB̉Dmn{HDnjATo泗9&Y9`XWH-ϩ)+US?EBTZ)S:wR?pm]4 1Ì;x{ZaZaoooZFS*2Tj昱,b͸SnSkZ;t9ȟوOoXǮD꟬;0BѓXJ1/IDsR}!AS%?4SPj$2'EQa:zWVj?rpFU7 6C{iKY>Ƚ=R~k3Ib J`ZMa'8"p ̻84E+ bq)S |En)o4 K Kq~aPI;nSQ΢u IDATraJUf} Ky[z)0>K\8_\>_{B}̽cQpNy|ԙm< QгX,(A2|$@J\<H'^pX {cu`TNE f0<3#h8kd~fL;Rr%QIR*\s^6'?H CmrȜQ(g%0M25%(9#Fv@cLmyC;;98J\VjIQ RCZYkʟ Z3cgl""Xp!Fz6`{A^TM_PZ3ʺ[3}tnFA)sa(쩡n%EZ!@=IئI&R^ թ_;QUmNs_G{6?b2)seƀiq(eK۶*HNCf\εgXP`HFL}*}n4K߄ h 8aCbm0Gl`%6Š1j L㛊6KJʺ[sdXs>ĩ8pYTtesBw mB3yyypWs?żs2<8x`_́5)S˞0%pI LrP~KC|u. 1)8a,0tDp0&ƛ3n Zi\; Y!Y8۸s}p ./USV]|)@M1}`n9#sOKoXxl,2RޫZw"WEh׏~xmp{4ATw H@9ǔyb0ŁY Zl[k!Fx^ 1nc rx)#FWqvYUKf!!M -(M޵" 2dj ?l~!`'Abe`0ΒzE͒qn Se:JF]8;/W%k,(xl֏<G,@]V#FƊ}K qXƵLp- Tl0[]9e'{bNO*h>oǻZBTPsnQ^w^ۿ:~> Zc7R!xy91D1/; R9b2J" mu{7>z[,K.n{>PN4HYs-'ʋ4eRXzG9N!x x x=;c]]9.E]ӫǔmp!]pk O3PpBf{MǏ&ns0 NUٯw5-Rpe{Y>(bX^BPkN\`h ":|S^0Ǐ< 6Z=4ʐ(|dqYQ 3`M !cM-㐁 C<vl2Nc&(t"!'1LR5hdAx*<Ӧuj?- t3rgs|am"Yt lMU@#iwȉL\ T@ [BD?;Pn|9߿ >FLm,o q,);.uiv MӠi03^]7q3#aR'R#12Ÿ(mX&i Cr7$ i8<sD8怓hrlJh$~f8\j·mˡ&NjdY*+ r!}{ڟKLdBv(ewFeغZ]F_;G;U/fnfC4?,)p|H*c}p\h6M 3x|NN9,Eۅ튉CtdG۹`2M5vK-pVvP>f}^lKoS\ih"GhLᅀ=dW*x.iq-){ǥc/r(%`mrS`IDGIB* '$IJ=:N$Tp;j'{Dx*<w!|sai՗.\(L}x FhB9%Say-.A %nNwՔ1OBBY1rލ\ۿtWPd$'0'9 CIQ*9CRLy\I[ cnq*>Ǡ: 9y֌%[$%<1@YbGTW* s΀,U T)Q@ ,|=ubvPqhͰ8{ +hƿkL5h+`T No䪿Err =˾]㻝)3f1ۛ_6K4 8W7[8[R9͍@oˈD>9dSC\O$2dL&Ga hBPcTHPw3!徤8 ?9~=:ޡ 4ʕ9rg s;tRap)$кua'惉g~ܥr?p=8;1Gwv"3*):~Ǵp]a ϴō6FWZC!%e1aa&?Q F<T,yX%u&Wcpue%G4\8Oև?FxqHʺ Š)CHR~M=hjDDKӜcH*9lNqo*1WM$9< QTK3fBh/S|[;Me[WF~bNBu,ieTg4i&򜁩eFn}>W7_w?/9g- G'`KB egO\)J7 05v|Ⱥs͠cVPKJF 6+Czzc G_&:A - w팞ߛ}L ` eȑ$k{ t59U]| j8tSV!,/* Zf,G dM4子9+9E3tjW..\3WC nvݠ}~`ʰ<e2z#) 20cvI!MОȓlKtp{8SiK]'f<qB13q1ǾsjycA…>j`` A8x%s h%#=]Ҥ-a)ޞlݒWP-0q5&oUU&|0fi'B}p_GFT{=c}k R ~`y륒"TN.Jh[)+z˗#0-/FRaxߠ=9?~z>pwxoxoCjmD~tjT5DUи`RKJ:~wwS=+Ŝ01.d:x}M^axN8.uj9PV_*U2kmD9w29w wޕmEX+ӺLH ͇<.)Rm̺͖QnyR 3-_`;^AD;[ƼJT'`< ›|f3 D" @EQ?"4y^N+oc:CNQ/UGG(pχGo&rxv9b:ʼg\?pМzX([58Ugg^0_$#4Ǐ uN ?CH.'E4%hJu Z_Y{\k®QTҬ%B`_ xo%iԘƖJr˽z<%QR>A;i\%9]'E5Woã9Mb{f<0W-s㣂7ޘ|Yj`^mts35 %Ug?vk3ZST{oѮ<Iǔ 3CBJt%`=M xǧOZ\Z9cf=I^ un."\T+Ӿ<3zjrcŎ: # Dx;e}cn$[=d2T20ǤQ?k1eR`J/S>'-·y8>;X ˍzDUq_G-F%,eJZG,vpƤxا 8-iu ]+pKc]99X">>z*vBAa.b x1=X.|8L)Śa=변)8]0^'ƻ Crqh_'epHodž)QhnoT/7x3߄c Ka!4cU < Y?~uj9O8,GTTƇIx#.) r<17jINH|uwRB.5RS s{*/#5cfu+D8Mr$k;ƾ樋0Uoнis#z S*KBc)I3v DXn-Mh9\YJWp''}5nO9ćrinĂO0em^\V4 o=>nq!Q/V BqIxˌwh%8"/>؎vZ 96wh۔rbf"G U}Ѽ!1ɍYp8Kw2ܗLPU/Wg;lB5R-+UHQ]zT=`*%푹R"\ا:iՋç_Ow ).!7'':7_X*U5LͩHrhɅ[۶8?z2Ь)@k_LGh;Mv9Is%jy.4-6Dxg=(,H"Q/GBWؾ8/\Rߙazz9nN6E)|ʚR~fJ*QƖ:sagL8jKת3gtf j9tGI2Em_\i1%iN{I랷M*-k2'׍d.P&\ As#υۥ[-*TXɇ3^.CM Q68d ;V Z:OJ^2x[Fɹ/ EU# mGq[Z&F 36Y.T^{ȦS+)e|j zg(̙Bиdmih.߫p ^?Z%TEz;4)2s!JKoX礴?=+W0#_S뤌 UB|$.J66:GPOR*9%Brk_G.PU"q'0΂l{eF̘aʐvp19mz$bp]' rV9L{aƗw؆9UZ sa q:f\yn|3-~[+JUȋ %7̸Nb^s6uK>IKM d3L פC n7?bhQ(^!"DD`0͒f+oΔkԨ;~_{ST3h23fOG 靌lEUrHuH~rboQ:Hu h(nϙcSumciA%03TӨpf(K # s^gQ2'p{w߉8}j>\4LΉ4^fi ZE^Fʋvo1+XgVnaiۼ&Ahրo_!Co)Iv91c%As^48i~f09QnKX90)!=- KsV&=o˂πQg Ap59G{ |vn5 [ܦUrX Sg<" U 5q(}rfY흻p3Mɍ;LJ[#eIM+Ij%t ~GOSc@3.O <,~h-9 m @Q1{J1g m ReaZƩT9=_ơ ΂,c*T S@RśK*\gTcydneryZTwM~hK>\ D[Y8ԑ5v!t))@Z|PfN6?jruVq{PxZ(n^8:iR,ş(q98eiaJf$;d~x p4&GB٦^30l Tovn'Jx(W[+ٜ߱IG.ėla>ORgu쌆ZNxGT9˨,ha,xsLpnW2sVOF7l&g P"0C)ZxVuQ93; lvIR>8wQ0;Jf$ e/5Ŧ@ls3G-[x?nC=j' x^yX/F6p9oJǎoq(.<&XtWX[7\m2{"`!gY%}nNR-Tbs/̃Z.z˟$`w _| nh #d,3<1P^13nmZ\rUNdhԀ%v<7p 5Q&' 8hy\b'gxPa$ˬUfĴa)ЎǍ7INSL VƇ$$}҅OTg57,.B"&C#qِRGYӴ$8dV0-tXɃ˘Xx湫g_eel( Bk S., R/N &>d/0m2ˆa Sc#R!R8W+y=8gP1JXUA+AES2sZ2Gy܏2r6w}I '΀I(SZva]x)b) GKD}J%tp1LrBfڵ".9Ak&ܿ }Bq$*=tya'Üb(3ڀsmSl6wXgCi%vS.=~-iԸQqPGrU$M}!߇!VJ$/=D4TP>O%R]CyL0c z>],@?ABU;͏{h^#>w$ڞTQn?sط[%0FK)qw燧bvS}m໹31ε]E5nNI+ ՙH:YYS>9;P^2' z3)!)VʙђN j%PUU/3Ӝٸt@6c)=8ۡ @)3p3ܐ2#A|G)Ͱ/ʣ23V |˿LKv~v-JIQ7V2!#QOB-^,[t (.g^Eo/r)k5%>p*Psr͈D[d9òBVڳ{t3O".h8Q:j\0x 8/4V q҂%hgΑHkS1[y |? ?M DD}sN@̘ٮ1llft0M~ebmx&2P-q v_8c; ^Ŵک @ Bѩ(ܨ\҇(GOi/Qt$k"ܪCS.[U8 #0nHvck4s9A ]FcuTqB%ZB<>۩(Eq#4-EU(F̸+$yg ό.dJk(UTLSPyv]%8=Kpx%;!?HHd9q[m'6[`KABzFy @M NoD!;9)@4;SwG{B)2s|5|ms{gs8236 ?M-Qm&O>4ǝh.OG`o28&b0LV@ Q$,{T;#II6[\M'y'Lk?3̱Uckpau(,*0K:z5,#J -7(6SD)_Ka0$+kQ•BCt-j;h4.~,;p\6c "3&=..cӺ6D}  BFj醔ȕ"A I|T+Ho''J:Bp*z>ab~G{p$ 'O Q*+j"$Lʞk0B<>['PJ+4zבx<5N)-eX%PP\Hjz b?&aEWΤ|fJTˡa3qRXԔ cTkMJE-V:K. =9ɕBQ GU˱Դ ctސE{.hϟK- (50p8H ^zRc%(< 6.Ar*嘦%[>PCôۣ~VY`vER4uN)Ùq5`{(jE3xÖkՓ@8f$fV!;n m+X'iJ@9c`C,ri=U: KإJ-oQo1=y&YRRBјZ8}9ȋGSa.G#~KV<"Ƣ+czM b`\ P0'eN({.Py"wd'C QCbéR]G$Ì; `\}J.ʾuHK)ajN뵙Sҵ]+h6n<6 7-uDqN)EiӐmMikt8,(%{չ~]RPȔK0S 39c"u˼NilR¬;E*-%uRzyNP*x륇xӭiK4zH2w{Y|C.|}$ǂԜZvz9 0~ɶ8Җ KYzV X]`7$˶g9!LYk G5ȱ~ d490; J$%oo5nhI΅qP4w㉏ki4h IDAT2`KU,N "YY/' @֑ qd'5L5L̝p3KDۻEr爁 5v {a< [*K2~0c #ňhÆ;A %h9[n4FNcSE1xm 1~|9lii.*SPL0w Ec0ZJ9: g."rg@,1BZ2K-j нu5FȷF JTc@Q|nT B݁i ;0yAɉЇFsC(cp"4 AvjlIlѯ -ya\"O#wٜCA}%:jkjVswbv|`i' x8s4 `Vфc܁jDX O#~< 6-:*8l?CpǮ.Ɲ[_6S7yʥ-kKsA:[a @ۑ`dɓ㺖f&WBv @<pȤ=PJch~xLz9O*YCrp1(4XB4j":o=5^8ˁwTmMoC{/L'Gr~nU/9 BPe{qzP"֔懶$ n?I- 2Y!f[]M[&ƻsSMTÅw'ca) ʥxw 8g8%Zj~L1_8 ŌT([$m膢k|k.<\Nt`m֠ E7Y1s hN35ew:0)kJj 3vi߻ʀj]5ҭ]%MUEK 2ٕb<{HoGN 8'(8?=0 %%\{,m-)Y>kni͙DD8CԏߍJ')͙<M9vNH6GNBsX圎0Zim#7Jromqi4u;%_9VtRj:'a,@]NT:%rKv}-9(:%FB``iI3  Q$ RT[6{0ﻞiH~)8'1뾍s;mVm2BiӲY[ܮ9PJ)2(}7.=WPG ά$Y5&£R,j>@t $\D,T"mZ %%.n5ئ[sRAr׿J|ۃ٬4u. ƕ S tIP-# ` rtN4JJAoNݦ44/:̗yIXcU˖QZ8slN32%윎RP.DKR`E]B؆ݕ͜xo#$'SRyPRvEȐZuN)޹ n0s^{VV(A qWhxs|_D)׈d6V tUR8zV,[ Ʊ!դD&f pelI|蓖=.M9\zJ(rl ymq)]75&)9uѵA9w7}NDd8mo,:LDHjϭRN3RiD@ 48t|ne@`sov뮕 xȭBY)bh*oDJ 䨉$Ի:Ç@3nH95)ު2(eO9Du} p11!"fr1ǑoD>4f.`@#5BlruN#p?Z3׭wis8 ?}ΆfFI⢪-VU=!']-P2 [nG#=7$;=X2M3gP&Hfs|DJ\DR$G!KFUl>,{U~Nw~ٵX6YR.>ڳ D6s.5IJm<K_>{l_8|vߧ.)z=/}]A*Jqн6f S>UND&DPK5lgXgʥ$I&q77?"Q>Oo?į̃y}uevl rU@cSl@ZJ,uK9KFv)3sO*lD*=Z,}m 5C(~;Ɠ nTa~3!I*M }sɡԹ@ecr@i_SE8|#|솉XS 00{Jd1RЮO 3lpj}ku.0! " s&ȍ(iAacO7? 6n>fwwV턐YAe\g3.s?'՜B`3)xpօNErARP? RD}7s-,;[5#g0mU z2sm]/8KUooGZ` ;9F"R`ɒ2WX ϧ="#M&R wZ 6h{Wc=CACe! > ]0tŷQ KCձC_biYC[-^2R@#SubW"@㻾;MML҄Q}ݢUX~. 46񫉜E.3#.ygE:e6O]憪hKO߻"eݤ}د;PzX,{ybWx|}$+i["1Rw2%H$F)bKR%IK?Z)ŦJog\'.':Ko1t4*R_< "@@F BM diC`GBy.ø}/nn@,$nSޥPW(f&wpNQRn|,c IDAT=Z#sNL*~KUǦG>YK蟏,JEc| /A4+W5=iַ9}]y( & @KLOx1Eu?fM@}ݐc7Xv%f ,s#Sgc;0%爦gC1m372#,?Cͯ[J -bV;^ؘ:xmjKʟŖ&c?_/*EAI~K*:rn9Q߾m2K:Kt6iP02,3xMͱZ j趌gzD($hmjH+…U*?L[(vh4[":^Pr>+fXgC¼:!T&<.\( !1|YPa9 T{wGYfNJ!Տo b5ߛ5G\U;)7!V5TfQ#%H>lxqWkB6.W"difI'FDs.;&8 u_ِMԩ5\_Aԛ}&7^2,l/q/} F| - ,A=ug6㯻~ˈX SIWwC5ș=0a-νvSؐK8K"ql5z hJsl4RF #% u^a'k9j5rkT*PDT|2 M q{;U8,y&^T#iG+U|7P|}LvcΥnqjO}SN v 8-&)2lT[oOM0`ћTjkk{L=NN\T'{_z5)75vnN@a\p=֠en [sxl! 2u?dyHIZ_eUIJK8OcF|ZQ-~pVneK ܖt17>xF&$O%rWI)K@6dQ\A= jXfe32u+bONLs`*K~"p&rlo{m36Ǘ&㗥F;1S5ooО-ui'~>Tvˇ%So <54-|>Zq-NN`77FZ%v}O̴7DK#O. 9m2Hkdu K qRnZX7NJDp>ZaE63Q2ͳmx. M_zB$:T_pk=tȇ,!کOw7Gk!pNz}cuI-<\}v?ShCgfC*JDBpRx)&aV\#9dv:瑠2$B!u[?yWS6RG wOjxEL=7st1"x]_Ej.2޷s [͵]Ny dŝfG\rmYKfe.c/zĢ,i;"6 !x70PPQ,T dd)T y{ݨ˄%YQgM0V-Vq'49l_+E喫':>Tw/.8{Mfh]K=>ސ o#x~.>{ <|1Hpw:&ET\M. aG칺(sĶj!{>&6%lG\V S0ݎ֌$6Fu%L3\"iBRPQ:.H %X\QHHBV=Wա.* = f) S"sSTuGcP?y0 s:NȪ_Z{ 2w>`=Y4asjY=u[ ILjU&8JP9&s Rf 0_E0,W6.} WWn~nRr ӀC)YUA ޔE2zжq}o8]|ߌq 0/ew)-rh{v6 ]c yRrOC٘.ҋJkDtnNMu2 .lwq q{ɯuP_N589tXJVa6: nȜ (Sc'HED|;ܯK1{'GS%KU^bvײm<8|O;7(Lh$$)V;;bXv@k 93awoe;\]">P "c}H686C&|LJm"3$SqskNƹkWRի2S.TyL@6u4iP6A2  /I*AJcJ_(nǘ3w;);^TW~W򯡂6M3O3,M|{q{d{4w4S-viJ!8&s(uƳգK$r:!|x`Tt(+jBzvl*𸥒7פs iB':U~N 8}9T-?C|+.'Si(; S!^QaOtrY!C3U^P~-qn)g,2V{i5O%yJM͖n})@\&n)ncf@&0S>2AfA>i~J\WPLd ij@$P6 hF8kc}DY9ib"k7/k*C*vO?ⱿXw7]o@py2;>>rIhrJW"WDu,՘Nr6+ôS?w{|ˁ`.CkOzU#-Ⲡ@qK%G!u12$D3cϰܔ[Woi2͛3_T7x}sq5m@UNVׯyd LB\ѬKpS sP| 7CbeOڠ W g83B"LHB+'KYfʰC 8r)w-z[!8]#n> < C Rdf0E8H:P8<o·tzS;>4QOh#x5  TңU NF%Ud9Ł} HLR-T\?1XcRN'͈{ mg kRu3M)ZMeShPAlQm3 %G֥Av5ՑmwڹI "4(ޥc NS%G9x_=uq)­**C pU8|K*("2c!t=wZek>w8@DU7gYF5KN%z폡7tJf#dD;q6= O4hHJiN su($r+S-΄Nɭ=b`Ou82o[^ǓX!'g 6/6VmoWR'F:ҡtxO%f+kRZr)O?$4 ;ƕdp);O J;(kşD:a}VϜlXw6 {Muf;b V9Ƕ25pq >H(zgup.V ABЌTah K X'𧤑zQVW N(>a`Ȥ.K.;o0cȥ.R=-F Nu\o8d+;(CAT7ZwPkyj|J"rLny9O, =m3s|µtK:fSφ;bqOX5`!vOUڌd c}߱ PaB\YJ2qF']sEC褑R׮^`J)Q. ̣&RROE @Z+U%agX[;MD6)v* #l~.5~ŠɃrFeG `[%*,{Q+B . 49jFBK"t:8*i?v[7)-JrY\v|h4!-SSAl<BB*THKFd„=GP3Ο z&!jO([],6;x\?WUG6m"S* S ,Z\Q"pa&@!qmV"?[8Wud/,ϱWM*~5~W,ܡW\"ŐsqǑϟr(\wXVRh*ytCM&~~Bq .Io IYUL"΄92+Ʌߗv\j\䦶/"7,;O[ʂ2<&~r&{k'EqnUag[]w~^N/BZEMAq+* yvC()]t،&BOPUq6fT=P<I(:l@LQ[)J7 W*>Z0'Lpc$?q׃k9%w'-P=Aְ%NosńW:U7c?GGAW%̵INNZZ}]:Y_O"蕽 Y :nxnoE'zgе>1F4N)5ztD]&[RZ2we2~EwIVm( 9ߵ ZT(Gp!Íb}2qø Zzv%:[T*4L%a*cg-?6snhfz] >&'Grjѱɑl^mb vVojbl>Z$tޘsFΝRɞc=r4,,дޔiǹp?g;ca 83PZ#aXS/-YJ9;pY[%lRƔ?F4I/,H䉋uĩL^"P Q#tƳ(75;t4x?${^bL /e ^wx[D(ʔ%&i Ih BɆ9!ya96({_SuX\vZM!9ҚqIY/`g+bDdm#fD08nvN:3pu/ڣRP 8-Cڲ֎KtOJZ$lmYzsjTϲDr ͩM(e:w*gU]j$n̔X|RH~@LH}u]K`FWqf;T(:J5z.{JtL:>˄i['AMb(ES.BY0Z#]YX 6 u-%_ IL)xbSJP>a{\ȭhML"5O9mYdhb8Yԍc3 e4w&!xHx۷O& 2sr:` ^R77llMwo goXg`Y)2K͒W] ;DFpއ^#6PkbKg@M=:YŹ*k8)+(Z'T>fwVR`xO?M+aK1G3Vg/iBѴ\ьݧpCN5*;ş[o<ːZ$SMK" ^)\3mRXn&[QV}@lMHny# \3g4q# +[1IS:²2a8Άug]5SoU=:W1C IDATY R[z4\vĽs*˜ ;kV;HYd;C2=Y|^e3T1j41 폜'}sm3xg1-e40aB BQ>;(;,U0XUBw[E<"C(o1k^LH|Y4JKe $s5vj:ʰO EWJy_[ܒC$}>XB ;(ޅGCAYhf뒰S&`F8xH%?pU?n)ir I5!K2byQR?JE3O)){,bΐqwSmB:2:v8HydHuȨk1p2qIX{P#(ŻgࡨCY\Ld"fO 74};ߛؠS6)<~[|?V9uny-/62W?naЛ!H[N= N%H IaBp{J|.2R.|Y3͒)mWv8 F/vfmPvJBF뇌:Rs*^ۻP|_{H;|{C#,˜3:$.sc-w}/?hت>$&j%3jߩ^yqϴ}= _A<7[=|韁e6DDv« AUxd/_&Gc Y^9LecTܚwpb'?<ނkZoEw`.p ׽TZ.Ty̰W8q1x )U$}}w6r'C64BOXb_ێ1@TZ4-l=<-7]?e>RvL HI ҆)jp]:eӌ5Dqt[SilW&W}Nk%SaS}v1p eUUg@j=92%NP=qO==DO~-5f P"hhbD3b9brf*,O` L'\ ԛ g[xς^n-ː@a%6 KRF$s&ĚI*}@3W+U7O;&4E #1}r=bw ⶵr&o$㏤7ju/#tX?99 8S}͌eBSENarqA|E5^㎱o~T\OI3W^]CzC<Л h; yGI=%\OLҚ0A5/aSg} /:]2HZ͔A\%%BaXMTNÉ7;ŹɆ4,C\}`:O̪DCRT]o K˱RSz>PRp̭W2 .lOΰK^]m~ bm.6ɚX7v5iƖ#/Sٚ 0_4h2 0_d58@v"&x63;\T {m}+E>bfP yKL4U{Jt1Uҷt Fvc\V$#wdSBAU]A I\!,£'KqRE3Ns13~3-YcS9XʜKT18Om hRf}O('w;럎;D*T/0KrATY4%_IYU$;kjS/"%U5^F8\ ;K@3Xo)r^K2ॄ̔N 33~/tJީ~@.שDOh8BxGܽ[)֯lS~ 7׼S_V/,K#*r&71N%lHate8ѕIIwn66Ppn)S;b8Gg]czɖ)5c&hJ K)CGG}th hbsNrB1CF|9[JvjNRfCfi|δCF4U`ΰh ,]!?avy9s4=n6Ppn1 ̖cYR\=BW%/1q:-@{5{,p_> <@BށM қ t1͖@?N)m#c0V&eKآxNr.<-N 2$6 {MI2"9NvlBՋ*WADUpPH|L^X[J _1l)}X;eٖX2frʍ^QpˏkN%;6 )aG{KxG%p;J,pn6CgDPi~@sʰ4n@ً!.u 090P~ZZx誚9qln"R jbWô\0~8knj,߂'Slqr`j ' SRwzsf]R2#DҺ-{FJe[/Ei"^`l9OMJ12{2m`wxE9{#,:*g^7[t8]%9ta0Edv6UϜOu $qS#壄GP-?BXS40m S wEn-Azhg&Kf]/Ba~90}k9뷱|Jd IݝzW:=J7@~fs~'z!XR<:fۧjSj'S3SB{JvkS;pJc y4)Tn1DχM<P, Ħ;$hI `X΄-_ۙI]c>_Мct\Bfe(`[ɽKy ۂ2S%g{$ݝ6;^DDEKb-aWF欿M)K%pe~_ұ0% b@jP5J.T682[|2h7=0ۍ7ٙ;[k×Ͼ)LS2"Թ@~0;0!(SIq߿u!tjUwu]U%+j9c>xN#i3զPɩl% Q.WwBOoރDq\Z&kP4#(db @''(B;A@^Y3}.Qp{LLK0_՗&}8E\$Ax=y$qb!@!߈ԫJVnq|Y.MWLS5L)#oDǗ |7ww8fCjvO&ؖ@ C-i=1Wv-ښk1,W37))&ͱqcRc`qq;PK9&4[+a֗ 1U?7wibYb-qp@s 27NL` 8_*PBq Wgv[3l] ߘdܭCX+= }6wy=Q'@|liCs xr#@Ȑ1_ 4 [8>?t]aqނON Va\-nqDVO^^SJh|B>g-`]ƥ^1@9$w!껧~GCR-Ѱ]?=EaOat09>qʎ~[\wg ۸5Ґ< ' λ~<}usdy s36.,{ăXx_0gAw:ݸDTa}nmsYTR-O{)ӐK%JB1'GWբ3v#Xi&Q($޿' ٘xCZeCz~&;ZytVyI 5^yRw.T\Jd3j: ~I:x-W8/|O*T^;m[m7啓OBa,4dcPY{q@) Wp-އ?U};@]%TYf'6z؅><"qP(lR4u3J썜7רmtML͗@Ou8e`FӴ*(@B'ђB;ԭ2@ 7rG0ʹYD`ݡ=zey]-Eϩ`!ЁUn ՇPӁU>4<^37>tfOLGQxĞAotݍ(:{Jmqx㤐R̾9!ž egмϨ\AT?WQ(_)<.؛c7°s/{6tqF+嵃!/}N졗S8p)g VGS eoO[b"`-{&w{,8ws%n\371M>s4q!h=9-3@ WQx:8+bҦ#L=ZhᤁUnv{}. R-E ˺rW} w0bBհ@ځ);9[4>΄ }^c=Ԗ5Mn lđK-`@S0|Vl{c哺y{LkM˥9d6+ʥs,ۈ^{훝v[ԫ%Z 7/ oC#߇>:[ho\DnN SCBqr-y@-N#xA`Ȫϰ]?(wGV|^+21HΊ8(]F\n506 )f@mC88~yT˝T+*W @Kct\ڿ?3fO>ohzKrXm>XWg[/w@ ޒ~)@΀&:h0,&23XL]'BT%J%PeP'g%L2'U%|j1ҾGԷyjj)jj)Nd(>R=h|QS%n6 |Ii΂tb}y`Ȋ4j:~ځYv^0Fq''K{u|^S3hS'^Ɍx.Aiu"^mm\`ΰZ6^2:- yJ fC a{" ;͝g׍+RS=_"~ԠOjqO@??χ1ȐqIaYꦚ2fW0s)ގPޱݕȖ0l$WEF0.U`u%ʔe)kj5_áGaP :8p8pJ)@c \ᆓ2AV;to+WkHu%]k. S-K?\-T+PdH5LW)Kp;S!Ѧsz7,ߞƐ #ncK 7-k;{2tQj9oLg`1e_)rSd];F+>p>qanb=r}))\-R]ZP^%O7T[k!Q#L8GٞK -.FІ6 P1㩖s)yLS'*F\Wg+ĵ _^Ʃ|A 3'5N#kBm* *h<ʠB$+.mxZ8.eSWՐz %~aOGyzؚ+Nz08h [nݩ=TzscJJ|J. % tT⼀й5.&Xb/wUPX_&qO "֯hj&sҹωL&aj$k:IV Rh@6O컽-#mvBuX2ڞuPm-p5#54tc0d{z=GuP @42m/Ho*醅oG֙#AuE\2u7!$=DI~\2Qx37__M'n=eId'BބKA Bkj/7[)CT{ח8uqcMĺsԟK}м- 3vEnGPwNu 2XIBMM,J!DKaZxʱ#I$BJkqnBR'ե̾BcXjO6ɓдt#ߒfXqW t ECPȸ䕩|1 u [@qA;Wrۤ&֩Ihr]3#j3:z 9Ɖ|1"r }\BZIemCJ΂d"&lX8h! n_HlxKƄO miQgdnR`yca\=(hkQ + \%ql#`cOcUՂF01qR<># Ա1b(k/KJ ٚLNu16oHO簜wK -1=7=:F@8O)ɒW L+XeNe =7Ywj(1ĀؑY!.fˮhEYZ` v =P 3 VD7π3Nd IDATMI>rZ1Ђ:5K]QQ ;9Ua ͠M̈́9VĀ \$x5̋ 3˃`4*t_9* 򦔷bN-9`!X i('kԜ#_31棪\a#9>{ c+(-sb;P(5=jH0W>$f.iS) Ra[o@c8QsV[jpefAyGoJ%&C&D/ddMԂ;p>TrILmbS7X2 A_.S v3  )y̠9 s zIx 銕Ȃx,C(, fXX7!>h3h^k.ޱ0% !%VQγZT]3c6/i@8JũJ31ƒYro ۵NZ*s7loo#V't͍YFi(|F!zK_GGn&rX_H=4/aacɹ, [pںɚfDFN貥0V)PpʍX\a)璽^(0לaJ7.t48X:TjsC\9Ϡ94s'l , Bv3-Ԓ^8e00?.*FV2#U2̻t ֗>EAo`ϹMNo.I&oqnָ֑'< o;}h#2>t DkWabnWJ &By + gN(EseПhJ!i*;_bcHN(;Ɨ4@2ה~;63;K5 sElP\:旅iIC܅2a49G~.9Ҝh!wg8+_'Nhξw#ڥfM'TfZ&0I2@6]bDr1LX2ެ9n nÖp eE!"`$#Q p~]&Z$4KG~ kZV&o`|aJJ1Mbx%ⴠOɄ:d=ƧYu9qb{y-@T_`YS~7݊ m/k xùvf[S p؞ rF|qG++wC7ܬ'1U-9d.T7~EN++`Hct%W/ObXCjqC/O؄# ۾%& 9\>e.h>449沒T#mp^Ŀu8k=y:ҭZ>CbO\-bCiXDnh˒fRxbg 1cd)"A!ϵ\3\útSp( OSV΁, +PO! Zk]~Yf颞 9luCXP1{h(Lb -<ߥ12.{:éi sKFZ`B)ZaGIj/99v^̖Œ̅00\1r($*p@;jQ6.G*ʞ PNU<^9$coT.bC_R֒HlD0Sa`4R8S@Ad,+I,po3\u{!_&:p3lS[5Z !8mlwNcfKG<ơ\;b7[7h!~gOl5bK<2\;? ÜvFFɝ2 $@eP,Sߚ.~Y B2 l:bEwf

?$|ĩ}G!w` 7#kI'~Bۨ[H5N=;ol#_Lb؜}Q1/3\hɗ ])eMqn\ހC {bA %ha~m iS 0mc-}'6 eY [; ): u 7ho؆hfHmwpC2C-{{>PeKf43WDmK& ;1_:|sejPYeYHrYf:$B\F%Wş yM~q+hΙnpT :[|q+͢׹B<,[b=iܨ-cknHH?23W$Ysa댆eG!`L[4BwZysV8<'#B8{G@I2) -ckH:ߑ,V|Na 3a O-jaY5k6ygrW8sS >r:)kl`<&'|m ak؈3a[!Lp0h[o7^ a=5锜c~؜J\a%5$eU<YAKHs)sܖin[0C \Hb,IkIkǺ'끞gӌvzxA\>(֫ +&ba\.sYqB=GNxT3sLv6Wι ҭpDW !)Ύ@ b]qnv'].#03$1P> . q9R?ũɏ Z0rG۴7+xNZ]l2.gМg!Ljڞk n>R!000._!((&OGl_&`)e` 5{.l s;|mKex><7dsiHb0 3hờ +:P7S(j)يnx~K {C7b䡝s%w̦3hDƙJ*,ܟ0Q,`CBQB6{Wauh99!4L0SgĘþ?ǹZGA_B汿_lUz r#>R#l=Lv"%wZW>$9wGa:8_& eD׈'ٛtC߭1bVC<ث:PwM5u=_Y3PLs^^h)ixkr"j?Bv #pY!=##v/BlSWҺR$=4h;$d9]<@~{+43Ԭv:0PX(̺e뇰9TIv)IeqU2; O`k5UBb-+Gn䤘AyAs^>g65zގ ݕBb']y q9Ka; k;l 2nدAHX bcH[ nsas2gyyƀi11VgN {)H]43>{W;PxqOK@*yuПS@}ެT(Xˬi~"NpaRvwys>q޷7Bߊg@; :b{`+NeAݜkBy685[`f>geyy9,&`Bx|&$ հM .g2a6w眼4QϛTM1{6]mݾ 󴞒56cYVyAs^^y$gu3s Fh[Fk e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^e^U^Ҽ˼𦂞VZ?{^e^奂b dKsK>cw켼ԋc^auu⹤#f̎w!gyAs^^(h20Ε`Y`Ns@9̠%>H<<%`{:d ) wyAK RfbaS}XX8F~\gМ/q cap_ 8o s 3Π9/C8%,]2ݗN ۧ1yv#,2ۖ_:Q4snmBc08 |]NK} SL^`N0͠9/),pY`݇'2! |bϘ:s3r+7%þt7HM6)N,J4I%YqİHr ` ă HqH/ǀ8vXEjudO|uwߝΩ{GUkZ{u}pq=:5~[.xK>$ jrPf*xB0M%3ẚhgFSjF<92}d439潦i@p]'`k 9}2E*IKsI)h3a(qY)R>8~bѧS<}$.07螱0$~zrcj>1!$NMq >Р%%Pca%eG#UbTb> &::Ϸȣ<7T&]4L14CH =~Bɕ,bߗzI;.-#k1NiL]cXe2P SHl"c,2 c@S.k@̬؍HOAmo9R skc4ZǶWJWj)m0,|5\_tjOS|[XI'O{]>%%Z9$r{njs 1CcDOA{ ,S-ƎQʸ]8C9ڹ$ds@ta؞|_cc,pZ{ <5)PЌ\B1]NcKJ{HEH[NOќ++3>=y4~9r 21%c=u܆cr%Ia@~¹VYkj<ǘrȂ:)hާ#"P3 K}Tr S#'mYONc,E%ubiMESTO^R~Ɣ4C].1TT10"op源Z[Tk_hL[ʧn&y1]טg4rJ (8.n_4L[FH8\PftY,n7lJIG1T<ͬ3-R kcf 0gNȴRMՊsBʐ!ƙ2B1Z-="aTb"#2B<ٯ/76#&5 nK ܵ(rM#Y.-iX[5109yNX9Ofl(!87GB5^E 4{̌ԧS0G!*sA/`S!VI!5R&Nr]]˩epRIX\w5Qϑ?Cz4;]'I1'Rc08RFN&a@^0/A2RL,$aHwN%Ј%wg# <)>F\Ԭqɧ6ܾT^ItP`Q1%G3 I 7; &=,<0RYp1d6T9A)'{%S%w,0"rINA{|G?ؔɓ,S S|J_KR},@RͩvsRR03fHC:Y=UknNKd S'mSE}_c ruUV@dncAO1mNktrÿ,i9.CF`!q?Xߘn󚾪-6/wX-,7Mg*$7'N{K3ް[L.QWW 9l`JpHyVy$0*rSFBdf@(i: 'rcSJZv%4F&HuIuGDGB z *n$I`d"3P%)ByPcBdmfyR=1geP-aj14ee|g|gCAy?y:dȂgpܤ s"c)3%sB)h~cCTYg8襌n͕Yܐcq?LL1$cܔǘ L @=c1ɘcfr15 U+Y'4_cGB^c̅Srޑ p;IsS| eP$t9p>V[gc5Md.a2DMwJflKDu{>ƶƮ>8k@T( 0i:q r ShIc&:ɘn1e-7Ats{ή pbWȉZ@A1nzQ3Z ! mHc6ʱ3\'L)VlF`Y53adQN\P̶}- [?Ԁ;v`g kunMo.R2D59p2D&n+dx7| DwعgCG5Tjl4I4CN0W崦Bܹ)PP'Ǔ68n&zI>$i%d/YfW?hGcsĜM>m P d ;y^)#c^`g_]0!?GB~@n2`WHu|d}S6lu"Z3w9JAN`Z "x~E^|VlWUDǔ\:)!8B曼ts*i9iI9|tcJ}cTLhrb~tI5[W_ퟩo]u9?ʇo4ȑ)`L~.7_bs9Rɗ{ƒr p a]s4ANc-1j93)!}l$ 4%:ȱ''Ș?vju:>(Vw_krl!eo#2dg^誣 rig,2\9U1Sxl\N7\4H氵1c`BS%ZB<"7dhkY\l=b(4fg/jY p.CPj; Pom~&__;V"Ҍɕ4e->7)hz怖昏mb9T9.BYxӄ $Zc[[|L =vSWT-:[8 ֽ/|I3!'P"0*_)7fw_WJ} sFZg"-I ETZৠya92@1$:c>2rtLq2'oo?1ٝ3Q:껯e $~7fD40e`? )ȱ=<4_#gϻң{s$L pCF/s:tp:nczLmn~g})1 ܃p9 } X: [Pcu&mO~Mwc03@ PC0=IOd@d>~Z24%]`օ)g'潅cFS*ދˀsfNkPdH-*frlS:vpBut~.'uXxeӁuH1}[Z@Lbz-0Z0J9Ebؐ;x%}e* eZ T Mj2{.K=[η"~A`8jum{#.*}c{QgCǞפu@h hcZJDbgi2_ޑL&Ƅ)d~gn)h*n't%(E:0v6 _?kKPh;^kCq@@gRX.fQⒶQ2QkN`*giW9^ȵ%G1&:2:E!POA18"`9٩cY=;SX;MS܃[b:A^˶Uk݄[FWP0J?!XJ)1K#S S c E_2;& TLb+L>:KZȓ0cstgeNyS3trJ Mhvr&m;$6^ii TLwʝ|mGT?Jvrvpu>Vwne12deY,~80H\v96i=ZgnZԆuϙ$FÞT3%H)wc&wUO[ 9PXhx^b",xdb~fg/)ʟ%c3EZbyuT{7v CXdhfKsnF4MfJOFDi}̶WW=u'(E̙1#atn=9G؈Iou9x>ύ6)]b: ` SYm]}/SQ~%:du]hK[XJr2}Д ~)%i l4-2EL }g!j8K$U q},%kݑRȭ4\)`o)X(ke1)\u ]{L5k_G}f2I=Wׁd2d2e S %=3.P]bs֊iHg$<4%4:3P1/R4@iԌs `Ә e"QBwK1r?-Թ?f&l2|/K[[Wdi*7.VGnj%'5K]v@=w`f3Pǔ3,1SfRHMD1)^1gH\8;𖤅L 3yLU}xh~@ ŵXB)$>K `v?~8RB{dC 6,1 S c@7fb9U>>k=97rAG.S2LTc3Ѡ sNR.u.:qRCw2Eqju֧kg8g`GIڥt:ZZѲ(PB0A!Ȇ!{9y) @3 C98ɀ{|z62nK,U ˑ35ͻہfnϐGyp 5_y쥟rs\@̰%V{܀;8'/);ؙfbXj!XEa(iIuwi;BF+ 0su-dn_߸ }\0盚%;!92h2O)O2fHdh4ZsŹڻ?R4)]02;~^K !j4*i4C(7db6̠jQM clUkd, !\.i'IbOb\Te,1얮9!&ۓtkDWEk8jmwnmS0A(g!"Qv~n4,9c` k w4@'9NYuyTj/V_VDrR#Rn7ܛ41"stHغ0 9P9Ʌ.,_Dtu]6Yzy`nìp\K# aR",C&A 4Be l1a3&̘1edFѾ֌̰DX8pČ%G`,ۃh; بfHa{0XZR3D,f pYw6H0z.dɱSqmitAL#Vko! \Ly|?a0OP!u[pJe 0}q6 @34|BR*b^w:f̘3c1΂p1vcL1M=tB@U `pn׾n;0BxsO)())9;|'r$4ղJ+4L!DL1@4aj3~%6j{Zwm`i1L2C JdV/M0.1pvf` Bт!)10x KPp̌ĸ"!{$bp74?ת; ='6-~K"gTI׹7 s\< 4ߩ&D,WxdqSQY{qQ}fhcxneR#`2VRΤŧZ_̡ ׀p63nBph79B@C mfC{W}%8lŘDCCRb\fO ޫ/Co)' usV@4L[4s{[s+{41@rI3v$5s퇞rkDAf.֫ۥ9fBک:Rb~JQeexQ.o\, -pvE˘5c4ft@9@<>#]wtg<. 1l5нL~ޘCX'WY0:x2ʜGޟ)z'QGbs.:ܤt)&E\r-DsWn_}_2Ϳtwo ͪ=+|\j&t b/=9Lc\-.;VG`V9I3hdɊ{ecN^VE8<%0i_<Қ\g=U_b07+mZ(45ㄻ=9rǔ! 5&fhP 4LE,vS*? `;r^k/c҉)~s  g(C'̻ÿ$D5ضX`3Ň)A4鿞5(:+i"}9ε. }rZީ)մ8 5?ae1Nj8!Ri-NuZiY+rRho^&F'!HbFIQkKlOx, }FeUUki-cO"1,U`镛H ۿ}g l .ؓ 4`0yYm3[lr:\ѓc{Aƶ78!s2`63*!$5g_lAJwf2/r}\'XZNE p)vk2eHU,@b*ȱn`,HLˋW&]*6,VCw_oBrWXQ,|Ӊp|XrXK!M Mv!sde}K+`ua^R!o&c < ' 3^JXsnMM.-0'ƒT! fj1B:O>l;J1֘Sc~HN3{=5-blsbVl?ӝicf5Әְ#TwqJ0}ç6 %cnyvqG+Y $ #,ꐃp-HeJza,mP]?|/T"}f䀦48);\_aW[kFqdMn^2~ohFxfYc$r.9aj^>8>Ҕ4ٚoRO"K5 k%Cy2x `F0\بRus3Ӈ&[g_zlle꺌3&g,P@#ZEJB%d0+Nn]̭<ݽ_SNEjpv5p% q?$CbePmek(C\!_ AK„>A > P^Yilkl9R@ AZxr|f{[ٯ`J 1](1!8@99Z~eBldj8L'_,E3F\pUx> @ MP쌡P^[YoicQ$ k5Os& G1Dp{Xΐo+t{THbD92xTI:s4H`slS~_9<|UPXk@NHĕ H{6'ĞIpYi{Nw)R4P39{u{qѿL_? 0AG{m"Mg"1$skkkVzwrZm.mxY㑪sŻ3l5P%Dsu6+1h敡_fCM@Mk mziڻ6!3=CcAN%v܄J>r4bD9 ܿXxk # @o\cc~2}:uR) F Vbb6o0xǻa%VW6:ݛaa7}ڥ֐a8ZsxxUKn_Xjֲ)^χ38(A]yfKfpȌ806TiAe{LXa-fhRC|ZeCo}ܻƔވ{8f /KtJJH#4Rs{2B9?EҝXTxDNԌ"m}lFJ\5.l?S|w¯`5M!xZ44@1(P<LbCjk-&eTMf]t#X+CڸLfp5h^㖳xhc /+aЕhuf܅'c\K08K L:̵7*L+uH8II6 sXᛰN%F$kay8NKQ\/ {SݹqST_ \@f@^T ioIR0Z 8rr@x ۏ=f2; q8\33}ay%CgX4sCçɽ+W39Af7%]9`awƗ`erx/m! ٩)ke^#;i$z{w$!`gRO̮g~x]v?gǖ5:3zFs3%c=bX%,iW8hGǩiFM="Dsx-aBI$<H@%#6Mֳ +혎f8j>\=enإHA|h8 d{@|כ4Sm4GJkMC >9M^4۝n]y.71Zk5;k:;d]NS>͞.kTaJ~Z|ti@6B_J"Y 8ev"*|o[ԎȬU87zH`:"eb1#g10%j8i l aXT$uUs233nnfx"TFb1MSN4 Yȭ4 _a}Я"c|=lRj..`+-;~?z\ʩ#sY/Sفp5~ 5B7 XCr,vK!j -3Z<ná`Ƃ%A*Wa=` apY׶%v#KHc\}SN_W&P 4"eO^b`6{JB^m<mrl@MaB -==;w?&n]͙&'W/. "g3||GUJ\uq2~|T޻=]ΫQc8=bܥ`VF]uh~2祖ouXIpȠ\GJ  Q#c,ι$qh1zEfgNvKEH0Lʼc1hT潂fLM1sG3mR%5e[ןOy$# ]`uд{ RY$R o짣rZ۹]j| u6mW ?Q_UwesϒP+Q1izHXgĸS&6^VpC~\Tͧ<LN*T<]w\kCr\$F c\N]ƞM!~ kO]l<f͙3`#+H'fX:1/{Iǖg-7J&EQ`? %op$9~ ]MzsBұp b D#oD8ٮY"u:R.s-p6ϸ^,@ӤjiFȌHՆ}w_Ls jPQtQIdx3tؾevMhe֕=/p\ ;)<[[|lYc/czk'8)E53^Pe፱@M%uրpءYd@Z hx 0Cx, v 6\m1L3=C}}J^5 T H ҀX-zJ$5RN=[zovڥf~=`:4Q,W_>L1XfhH,ޙ?UV=o\"+,9@U{3᫨h ]f3*r̜JGqS|Mx B"CDmwsm:ҋpͬ fv>΀Db25DZ,STCaڝ S)Wɘ/fޏVG`W: H1|̎Y^u<jXk1w.k\.Ro?'sae%X|5~U":7ǐ6ApT0:h%} < w$- #C`@`^ Xf4wvFT>rK\ߎzr mҜ aY7i4@V+I; 0i4r_H_uXKmY!3mY>:t1_ n;?4 Ԯ:l{Y016p"wof#%粚ұ| ^%໰u1mz{ }NS{ ūQ[5XV#^b6.Ǽ4{HP>g$Pd S_Kڻ?i/'x?5e]O1 } fkԪS+F+_^tpa &:Rq-~5B%! L9!ah)`GN ,1.Cv8O7ڸ"@Ldpz3stJd.fۿpxߘ9:6q SsHB$e#aE:3Ks72{I3Z,5,2 G`OfsjDμӊ{fӥaůhn(Vc]И\r5T-t0*v7?HmIi5'I^\ osj!vdV0zi3dXL-j.,S6:TÐ!'rjKeY%cNⵧ蚍-us5v5\u Wm$ƃ_v(_0| v&ЙsFBػnݮ3Q gP° c<#DXsIedI1!4ӠOsL|VW.fKE}`-]1>:jY>Yf,ޘ>ueiEv,(8Ɉ;D);Uj5~ F81u!Fj,4NicBΚ O:qipa$#)R8KVpx&[kfvxжS0{U{65ҁ6茟~G×S)s"4~Rfj]%V+xFSZ^zc(`V 7o&|z%S"|x8O]c ߗ߆m}$p q"-p=e#'<ϝa,}Fc)/6טe%@hisS.vq9@ j5HdA1c~Xœ+tEK\'Eb PUW c9Z)&\mA,7 c Ya+RKϠl3 kkAw ~&s?$ ^OWW/w\ 1g %:d FXo\%A,#2my1h \S9 <ҔIqf}a{{= /l/pTs#&}4y1IM?H洶q=Y3hQP+_ m|L@| Xb,/D'aA J Bۅ-8N0 `]6ciA!SKĨJa! D6 <ex.A( \ݜE/sq˦5 ^g$3foYՌ~n9[S4yyak1Ͽ>ùaxG4=BTI F]CŽjPl*`t̆/.{`v%~(9~?_[sO,&n?& >;|,^FQ9^kJ\O?y68)&ILfw]88{ɱL I@c5;|0~+؎b7G7~>g~W 04ᔄSTNGXxg f$r Dc@%&SΞ6,Ub&MdӬcxH`3E!isf;L{lg'L,huՄ bh.Z }9\3trѥ$y_p uglL~yXQ㈛3\ւ}p'kOO;@ΰw^\S s;*QsR+T8.ݳpw(pSC {d?V'4$ o/hƌ:#}MMĦs\n12SbW0hM@Y/mlӌL3L+s$O19GkYW&:q}xhi{ J]pDYJkWM-?ȚMYnQa/I hzK:a~^!#aAͤ<>KUl맊]oOH3)C8iҐR2b)FyǬ rn1]mlb:(=&Okpl̸i'kyhxv86.,ەPk@ה|Nuέ2ǘKrxOAZ]nGXIa8 ku7}0P|YVKxGEZAɏt=ZHA3^pSFS Rb.Js[LVq~ [)a{B(q~j+`Ku #F]6ݶ'$ !g]%2yc+d@~ @`178`}A\Cc>5}(fOp? E%D*jֻ #_7u3XK_FBU *6}9wa %)?:YO+!q(J&b q$tG"L\MSVuRWw)|'Ax)>{2{m9ײ̺9]#TF:ktXKB E1 ?Artǜ*(953e'1u*0#&ɻa  y"yWBZ@HpcUA>6)mp+i޹c`xߜAJp&`~LY&@*֙Ţ\F:e2"n%GRr{jEƤ 8;(YL|J(-pmhDuՀ&~^h9|0 BjP>R;LL°&З%jwBLBޖ90&F& !6df~y04127]QeCīQXz۝W^K TQ&=R27QGlhYeʄ@1;6 %GfIcL$'=FTӠcXL&|~&VmB~*)fz?"dƖsb Yx{nŌE89L)Ωa&">I,C{]Ş9" 7z41EDevl9,#37J`^-{-w 3&Dx\(3_ll|"Z## ,R G^TIXÉ8tͨ>T#ڈe@ؽx-#jmN=s밗[眑r.SYzAn.sL#ݏr<3 r`)SG"^G9"sDVKhayXf2; S~abrU37j8.sxt f\A;Aww;'xˌ֝SNujD*d:ku(lI^L@Gáv#K$uۡҏ;J]'\h7#  o*d!08H5evhfb2Pf0ňw`G39NuWN uq8AÃ@ؽz{kDCK& Z ?/aZ;$pB`Js lU&ə{Թ:Wc^c7Hܞ.~} H-M7spr46R O4%[ hlR_5-2xE~ kd&3 ;H8ፉ,Dy&'XPB0Jw'.Cߐ|l1bAgt^Oi*ˬJ'KL 8ge*= ˰-ZOM̟?,߃.1^d.U 3;-PSg'&5&1OeRYQ:(c5M]1[菦IE99t#LgDJcx3_n_ ʔ]ScUw,U_1V*/?ger1-a]_di"hmS})0~46{nݢL1vj{Rvj)Ӥ{|0>nئ*f=i&OQĘ7g!o{!qǜ'Eq2nPpq5K c u2ctp0c3A"d%z5y519b_jK+i#6 rcMa8w]fX#BoXW ԕзI3U=x#em`njăN߹cCP:qn(I%}jC&U݇P{؇Df͉28"Ki}Hb_u\"U?_`MvmUd8Ec4h2.=c,FucS$NCNrWqQ(@TL9ӾjA^O֘@R+0 >ӌ֬ap7c`ĽT"z` xhh/e\c媳Ќq[aM;8Mqx~':GHOe)5 V܄课Okw2ph-yܛ szcѭ-&NXxD¢SX)?\%*L.)Z~mnNaSXx9څpMaNtD.#f`+J?dcT/ÿ ߲jv6i}È+ X^t8ֈF%oȼoی<"AGD83]o 0F% = 3"!}11˥TA<3 ; > ,ʫ`+[u_E2-MN@A58:9f6SNDxA5V8hYf@ L׌%821jZΨeodӑ6ZC3v`0 nf^ {N~1MNњ-}VϪ](uP[r´$X;8#ע_b ^PqõD˼@1ȡo֩'X.cdixnKvSCD9F1v<`]DXs^UW7?a~,} rf-4sI*b,{ D5+S lAs М׋'Laذ3MM1XfJ+iI@uOFK3 .D}sBbEGE{2އsS0=%,\9}jX_kv oOڑhQ(! hԌhȅG R]ۜ2=3*k SR#+JmC:gE+i8Q@{Uқ %-Yl{!?`TM.Sijd IVK*nS+ zIc09 `߫etX5Ρ&pr)[~j~0;pє\evsA`)U_=n8<k;rZ˚c^ RcU%)~A+|"P=Qw\9r%LK9B͒#^ 5B24 V׈腓L@QX~h"dsD]!pj\D580Vj(,bp`.ӆBc[i4FI*csE1~'ET g="T-uK'7i^\8 YZR5IxD,@5p%Uȗz9AsR L>fS!rrU,ڭ6? sC -@Sx[7G34D&sL _/ވ9s#*禘S +~BC'ћpr= 8sNqR\SʵnGf=ut'|>U(0 ԤP%Fmq^䋑*ey]!ט s*S9$!ufv&@-3U'4Ed}:c 00VXZ٤U3#5}\M;| r]e'(%EKqDD1o6i*&@iL] mT$byBHD>L*1g'*U|*] %Nõ4E"/t,Q"z{OPrO9hQ M1 :ļ> ZJ!geCtA0풴A{s)iv2g<+f9! !!0nlQH%Bjj_Z4ORij%0TYP6{WH,Kj?0MC˚ s!5@M^`NrDN S+w>29jr%Q(f_N0əׂ{GǛCoi2#3,f<=6Kq{QpxJY [!_FrDܨMsd1Ka)Z2'Fs F~AOZ{S~ԮW'74r@)_,=)#TMyHӅZOQ;q5\zCzKm-u|.Knd%k1e \enjDsq€[ /(^693sAfdO7v 5+jʍ^:HG VXY~cyH6 b2/y? KLp{JBEI\Z2XkJrﻀ{zx:9^oO h}2:e5czL JNE,V5btcj-l^2r5jg! Q'5!哲,KDY*80ai>sbr+KMؼX :KD~nG4b"ru0~ndlx|SIpE70XIyZjZT| 1jF!Hvy`wRrd26$0HQ6Ɂ$Ayȕg,2 :q 9bJz'ԍ"X:$miʅXf rŅO  ]qBS__+׈ZژEd1$Zh=U>۶⍁iG@`=ǕR]a{i;Tejma$d")览zX.ai,FzS5!1X+hReˁNȌZ!1~B/+ap]gʕզQJ.P1)$;G0r%k:* "&Z;j%3ǬW?b^%rq}x͔û^Lv]W-̗ݱb,"2Rb;!(3fKH sL"KՔ0!]0_j%&bzJnhƫs`!#^Yn\>f8H|'0LN378 (sƙQ{K.ʝL4]؝T: ){LD`f]Rs)v!4ʋD W(Rc)SJ{ XDlx|TQo_Vcqƞrҩs`o95Qv x5B&L"k:J.nfQa D9+0AL Ɠq* c|ӹgնԅӸʌx"@;&.۴͕O ֌8WZ2Hno-4%.7kgib="8qeX'yzqӡ}[]t[gXl-c HP@2E# 34<-ˆj(V6 &q#'jmRV& kBt -G[)9@R-onL2 is+ Fʅ\`zXt!̘MlKxOb Ԯ %9B0+ck09/pjDZ\va|jf̥%NBvP6-rxN!\IM;2s)o1V֠42bLE9ͼZ ʃ H4a4dntye6&5sO[}5!1‘a:;QD^;nC@Mq|Z&iyuVTXYKK% 6 n""<92pԍ>\Ue*SyhExDE"kdn\N VSU?E?`iJ朹\BnԯWY儠 Soӎi^Js)r93Z9cCL&Vִ֝y怦VȹlK HȄ R~jcfrsNA=;`(5fĽ!Y%F jJ*)5#4\*)Y><>e)C=Ldj.SS~C84FbL:KU-?Z"k jKk*Isf%܆,kM 8w~II̠ %R\?c6hUCnS9qs!C,=wjЁ)cw Э@% $umֈ 9ך/߅I6_f:mbe(5§Cy!"RcjnƝop*lLZŽ-C'pJg1)nn(H)x=9yc5ItSaީ`6'w7FyZuf;p73FydF k#j2%۵ gI^2^|K)T=/}f$S'6v9P("xSsk:ҋFTN@n<$҇@ T5DYnOYQ`Ri0*`Ŗ&Qئ"X E1(#i(̖Y Z* k5kgࣆJjWTS#,-m\3C^|s X/$ti:%۩=| N.te3#PJ^שP):=dp,7L3M+ya@Z j#+gnSln!<7mP$9քw%dYam R-vX̋XxUs(.wEj/'j]W߂QnHY-KLk J&8\p `CY{wcc=eOO!3&.S3qR~o"!BcK`Ώ1Fsnɥ@R$]ݟV{WFN. !k2MٛN4S&wA~Bـ7uXXT,ʨcYprd@Ϟ"ODm҂oIJG%`jJs̹8AI^Yv:c(%8blBrlTuQMyY'‡rZ B9,kLx51O|i;eMRK,T<Þ9i\u~ ..tf{D!W6vq]'^+L԰E` ͕T L:4픟7P,e=O|F͎']B4j6ҩHkğ33]g"_3`/.8FMjLMX6KsV¼T%@/`^naPıi4U"-2諽R9Μ#{j$'TJ) ~ODp^Ov7~4ԜʞMmJƙ[sXDA:`8"| [rJ%ZZ %[zC\ji{*|/f[JN~%q5jz>{LZ -c8;UL`TNR*V7Uo8-MSk38x0?W?aA.cꒈjZ]خG3kR|E$2ޠa[qnspgpիmݐJkS|bOՂE, Y_hJCێ~6d-e"P9wE@:#zl0OuXµ8fE'rn%Lss.iyBz{l۸xG;xXnj3 ?XQfƛ8=s_tF:dC? ph7P}hn8h7Q6tpx!p:fC0'.{Bjq1sJp.1{LyZ"X&e,~yqZLrnME-<1aL pZOWRI8I[LEj@eLfjÒ_EtmZ~/qD:7[L={p:?2>^ldr?g,W;L!8{6:GB# n$ze[9-䒫V'DNDxQ+o[! ]sw!v׳"K'z٦5.~RJt &1O~x&xYl<2WW KqWz0s{/íX--˩w=>FdDL2E{|ujvFM1v?fuH9Qț ̆r-5f )g #Yn"y%5u%HѾA?c=+po c0~݉'10x@jKNCB2/֏x{'j`vR~z/vݦPQ&MCڹ@2R: YKĚ_!"C|&DC`(pX&kġ$5w?ԭ}/whuxM P.Lt@N3Teʧ.\sևX!Rh fO*:)|nw*9:PӂC[%VSgJ JIqaQDx+8[SBZ!$()_zX*):+Xal9 Mݧ?s!j"|W @5+>++x_RMȩTԜPLSnl𼆮Z2枫 -HVIQ~;}WOx 4[XIT8$1<ͥ9$xÉmN(.8=4h1Z. 喼~];26OjFM"7z8Zf:x ZajkH{f8tè&4oqda| s`Zp\aޢ(ȰPJJ٠L3Xi;DԹOkߜȝzxן~mОr\pCIA(W~?O@TY?AZ:Vkdl9KfmmUD۱4e@J~ ͩV:dw d ?@gpH"ӌ(hͣ=B UT[Yea1>45-VݘiW%'<xq]?WzȄ)9j7cQ\Kf6,:>~g"cs<7ſI D\h-՗gv@S%0mwђ4~VfuD3qH ? |R8KN3&pPH`bsix[*:\XK$rV~iY))N<!nO~=yp~tߔivU{xt`u>X!bFÌ_ 2Ĝjā%9*]EV.η7x ĆأWH_Uc?XS[MC} 71W٨[aa(9Q;Q{͢Rf:^t*5ɨ~N@z_X+TzNϺݣp^[9v-hQM[y(7R^{ DEt_1[h֏AOOGT^{39ȣpZ&5[0{[@aN "*lc$皔cN&krԚ20v2x'ԹXbN3nu;zFK-4mf+dأsKEq?8A6ṿ/c7ڌ3q0yN7qa~y3Z 1I49!=>UnF:$e8nA[hmDPi5S)Ls.t7LZLd贶N(+Zr|R<?lϼ5is ZFq/qJNqئ&l9pX˙xe&-E1%8<J~Rl9s]9Ͻ{/yEgO$˧l:a/ckL,Ԭ{PGu-Rg%C^'C/Wg )3S)'7y9@ײB"I[传 \8Nk]A9Ҽk! gȤps_ `MaD eRod A ! ͭ|l͵grfn NZ&cu(k̵FrV̛0͚R`2YX:wxJ87bw5Z+f}d|\9w =-I6e3'n/xLo}禪5Ȫ#]29|;Aj/6,^D7&5RDR'b~ܣLE-s,c>@w`rE'~̳t܍ ׳#+,L,)r] d 0w#0w87MpXtۧW(v=6[j*-ҎҬ~C5uWt|(6987nR"[}&խS*e:W J15󓛏 1 ? yZ'?;y8 uw -Yt ׾]L8d+3p*+,MzP9̀\:EBW ]\ .(Te e#BFV>!lgljsy䉤 :5i\ڹܦ6gms#^`K!Bnz'e"`FD)˺{ϻMT18쎁_5P2s<- 5@8-YX^b:etӵDJ݋`ӆDq!ߙ(*f= sDNsGqhD`)WCCX/,Й}JD!r+)[&@'M8+vAd"sjsK JMGKT3q NH9$R@"G@D$/Ԩ[=JW)Di&,'5O8#QjZ*U ۠b1iiZ}\:9ʺK- _0MkU\3;Yf{fpc"d]{f*qy sdy@D3}i$eIB.q%s-򘲎3nSe4x0Mg0yd(v`ϑmXM&'c`S;bT1^èݴt" #515bN-;u,\K󠐿N<$zհ4(x}ԗNC-S{e1B#~L'BmV-_ "B}TI)UDg3Re^PN4՗#x_}O03.kTm@: ~ָON N 46u~?}˘#5>(.eP{"pn{F;{O]2y\IQʵ2-_lrUˍv9SyAJ|Vf<ᗘz H\> 43]BUn իrq }x eZc&ۉ\a#_ oi04xʼnoo5e*vsj=][kC7Q,pvMf{@Q-B8yzLݶ6[Lˋ"PǏxR̽T;B%DT. `z6uDK/{5\Ist`u;c.1)/PAǡygC)g'b'qiV =AgHi8S)Ado+ɕZ˭rV9 HHPaE6܈\G堧ȑ Y#5˜ Id0R :n! 9r.[&'б ofdH5|.Lwk {O⻴=G3\C/(3[5e܁bc`$r=u^Q_S +-pR ZJ=ފi朎P@\29Pkz%PJF MFֹ_B0#?lޥkVx1Sph"2NV ["rgu(BGqj35CFC6|ܣvsC o37i=c)AL'u\1U>+1b~? `TG婽 2ىuZ 8;<;ܧt!~ny5s8wΚMk!RA㱟& Pܲw䚸k)ê֎X`MKnS=cD<^bN}gӜFg)' |à7vwS~t1q-/WAU4-non эsbژ hDsHeEhL~,Lh hIxN͚Ѭ]1Oe`(?C❸wzҴ#eR;=4 y#l(M)<HRF<&YNN Vh+Z_98mꡕcn^{30jϊU΄inm:fI'#l^/R5rXyKq7Vc_o V1٥))\ FC<23[5z#f|t1Aݼ=1DI . /xŽV^<'n Ldp rBe:p|Su%g 1H*҈wyQ`kŃDJ'rnRϝsNNvAq+#pM.pEۻXN u0!"/5xi7jrRKu\G4"x?Y:̑Хzfxq_A)KwD1T*d90Qlg)TX hZUOPR*|E O>v18+]+^l?M 7\/'jg֠ͽ5wRYBDZM٧,UaT{'a7j ͌5tG]3O}q@s`%"0]ab{0vϑdmE>fÄ .aM'f HIj2l\dXD م c> @bK݌e | 8!rQYߎJ J,3"LKlP|Yjea)Ƙ I2 ۱=5Rzmiߪӌsk' p?{y Z ap8^uJ9YD(ş\`1P3~'5֘|D9a)OǁO"yqD9Lj5ŧM҆<#cvXEsT`8\k }rZmONEnΠfNBK5S U#mq*5o\!~틹 AtMf~4C$´H$K5'ʹv}oN&ѧ3xFZR|9ݚzl؆pAn4.ӫU s:ثuS<&2Ǚ ݝ8Cx3hJӂR_|gO3#բ'B SJy}Vz[W "'hH̽\cp"jnGPSRspJ,B%-<9PbO൵Rҥ$9[LfEMEND7 q_.Aʁ\F#‡`<]베KyuyL0%T8.] UO>|[$s-t| gѻ%0ޛ U msaG;)`sw]/R)I[o)"t'@^<0c]W")xv]~ 'NZa|cVetJ 6ltԨXJ$w|~VӝN7$\3v uy7!z ׈C5u{{1dGiM𜹨 Cd Dx;>#)&8jYƮNs%ۄGgOC?{%QbTRઍ4WtԮ/AԜvhd!.e4c=O x? bj~l-)'@)i s"LAgy<*1?7}#<&΁,vEmVj.<{D;0mqF71D4#+DnS@1)'O^ ډKb\fJ;XYr4Ʌ.QYvtVńڄt%0v }f} ڙ0t ׀p=Ksئq{ {0M TsR"F _ETqW:8 1OyV7{|X^#RX.sp.b|z7aNiKt{!HoMY.Mpz^ mvr8'ϋi怯dY@!`a.XRI1q9P[<:O]j ׬N$G٬/c:ـnڐ&< ƏMQq@f,),Kgtd&scSk0I_=l V:%, A*`?0W@{I8\t4dSRӽX&$61}øSk{P9U64\'K/hRfr)eD!2rVgt<&2oi ^) s5rT]{Rf"7S<~NV3wcxnh:<{{|:\2* Rr1'@0`lCx{?ok ;>ϥsSf*$2uNӀ2'mD8dPcx[`]}g!9<UQYBZJ<5y \ (ƸB)pu!{ m| =wQGMC 7: ' S 94h/gMnJr }Zx{^Dx ЂtH'?]=yxǣqle%+EPޟi!|O;#t B.zz"U?ǐ=SK~ N1R+%'vY_g\ÐPawrN]Ҙ8ÍHR_(( AkG^bs?慗ԬaVcKӀ6m׭hfƖmޚQT%c?ci:N~(oB# t(]΃DˀOr%XRu(nV72lڋg^ tI^Q̹A, IDAT1m eHϊ9vJJ)s/r_*L%X"l?$N9,mprmEh[i)-#l}L]>*/5NM\9m>\U[#49gR9>/o4]WL~W4PZJLM\% S j/q~c.-]77"Tڵ{so(H0LJ(vGӟd̔ӹ(V ؤZL].HO%N@Q4Ze˹麠ĪCa{zr͆cjT5v=gKJ˜Qj-5p,=fV^3v{OCѤvPK.E1,nA;ĵ}=nYk.2n{RX|@3{DE ʁR"`m #3\p%ʂx~ymjb'3=wkf ZQ#Kdv*rL!J!`r!mjx֛OwU(G8!p}%@TznfN0E`3 } pQa߲8kQYoW#lƲRR5Wھvwm^[K 5+̔C2ly _0B.zAT>S!``1oMv8rD8p/ġO!#ܺ>P-j[UR``}NA_d g܌=nJՓ9s+\smQٵ1:$xF4$ђҥ*LϤj 29( "hLm@nT` w"D9"T3LݏXȃ:8C ҃fiDE HsKOunԽ+`z)|i|͘>C(2 Fj롦& L %LntI1KbMm~Re_ZjMOn ӹBrl05 4spʼT"Z#x KW"AڀjNr)C l}j:sJy܌9e,}r@sw7GOL9̧8j^H)Ċbz{G[6Jm $CRnE V~/%My/VE㪸RO+V?MaD>&7sZLEsT~CpL!\_] ;L<-հ\0<׊B)E,k(S9x\6^fH;x^ @@Co-݈Jέxe3W4KL#t% +r\B3eJ#QJ{ML],pI"""6@xF̳rWX>Ѧdbz ۀ h߿] )ptJ> & Xd#W*SD{&%Y@p `gk4\f'%>yx]b:cIa,s%O 󙁼c äE9v׮ArCLf@+ 7Zjo zh7{Pw`eZFTP dOk{ԣf^)0TXc7P+"L"tIyGL q R%[xZRuZRznD@FG97PyXS@T>w:,Bߖ>\upw?wdPN-M=)e`;"Y( `sdYm+~s)#Ni7 e t7WqnED5huqbSY֨5!} :>/%\,5(xVÛ?b}dG%)1f BՖь#]cZcٗ)dz_ ADsȅX3r lLYÌs:zt*z.u1Ù"׸(QDgIe d] -6Œs@6 }թhDpy]8iǣR./{=V.E$>wb%`VRd|И (G^4F1eMdD%}V\?Bq⮻|<݊fO\ZyTxVKmџRo=+Kvlw 30w9"tO'3yS?'Q0Bjp*basݩEH꺧 j]^+&0t"4 NLUaI c@ k]/7ovw %(JSt Ho%KB֒^ k{}$) E.YZL~"H`:b+=-g<~qV0Uu!$DRDJ7h}Ѡ kQOD&g@%Ь'vBJ\Dk;%#}A0Y=2A r\Xr{ƌ@f&l/jυ)#'9oL) < vp#0ábZ7`'k0^,;`j. q'owDAJD"b@4) KB2ȘoeCi!CuqDsKHn'#׶Ԯh pa{M9O*ύum/wj<2rNÖti!,$+`}^ KJDU9F6c|gaJ(@3o7ٵM L3%@v%@4xqB I`wh"J)z PYS&Z]Щ3מx^Xtn8%\;G`> o5 W'p vQg'N1('8umC0 KI _{eMnX)KMS,7j{ U@W8;h=^,+˘J?^iTЎs ;rjݸ vH>nk*$R+5̕ep8'VFtU$,^-*  Ӽ|gk&kg;JAHEYeV8SFxs5=^NZ5DBhJ{W `ҬA5`tmLcH=~02|;0k֩c!-W`: Âq,ƵhMdrA~sg Ⱥxq9̞}?򐈤a7hHL2u;Sr\}f*w`V!5iPlp⤟(@]p}`P+õJJI. c!3g-+`)C ȺB炋0ZF ј<G&g 6[~\ 6yPK=vz4Q0=Ǧ uzȘ\4( \:N VLѯs6N%P3NM1v574j{S #q# Mԟ[(ge۲8u3>YFc@<&J>r4gtQaA?sSjͯkp5e"6m1&d!EW_DLlr8])F[4gW ud~R+w2؎ޕ5!('TryuWx˨j`qP>eÓzb~WJ'B ڟ }ӳZ21P:Z"zԉC#*ԼB@pΰ@NHH9Y"Xsv lK}|8-}-+wǒgJ˔zgG'|g~SY?)#h> B,`1O lz!~D1&V^_ҤgJ~y`k.z M/b!f^ٴ ' r5NAY.TJz&KsGS2?*ͱY+ %:~FeFdhDxe)d`5z\IѐyYTEBKlb Nh7HXH*Xy "FBpo+n~'!;Pd8C*UMg0ʃT i`SÊp^!ˋ[ҳbqRZf`8HW~ jn]%#R-4pNe! IDATu -mcp,R>7|? l- e`^l4BrCalD#h{·dCQXh}f!7ҰX`^lSh;kLjZ5@$t\_w. I ! N"!3Ja| cE~\:{;6#l!"`zڱF?Zw"݊|9]qN^c;GfuKd$58#|€3wiB; zBi!CZ0pa_Ta~ ,B6Ĝ|Bٹ f?%`Sdd}hlD )yiv0}@&v3bB 4tJ{e#h,P}tL٫ 悕Z`;Nd >iDOݕ+O-qΡy;,24L~RC ( CˉI"]N?F0 l=cn4sv*CcIҊHa@T|`&ַ@UO荺(dhjo@(J50S1]F)9C$`YҨBvϬς/[ 0E?g"$#qì^}~ϸ?OO0sϧ:ƶޒЯ5r{l4FlofNK_9ol\m_c^ATs@%3v vOuh@ⵛ!3+?VvM iɶ@#Dr=3NH*~D o3_~ۏBfY?߈O[ejqA j F1b!Oo^` ӯ׈ \jp,.5vc4JirRZ}~v]w(As<MF|;Ū Ц>^){~߲klKJI\V6K֮J񱮡@|b`%ؘda,H~%CݙxY*ڤM~nfva8XϩΤQ[)4It1q1Zrܫ'}"x|1ZlI%RiC=?1.Ĺ؇)=]#tRm}'oFY~;d z˙Pl܊mJR۷GJ2̑i>0$ݑb]*Pwtɇr[J)6J[hWₗ+q1׊YuA.56X[ [娈Xr)Yq]=Sl7KqCs ]ؽtʵX؟1GyL&UЍ$jwS&OuuRACtƥ3ML1 lQ!Rica%Ŋ0U0yW:[%+Xza+e!ש`gG5"*Bdo`[(*-Qfr;ߗ08|~O!Q)c}O,xG@4r >7"3>Kf"kHB xq"*qA|eŠ:׊MJ3 'ÊMʛ cGb[{+i!X|p$nmNL؉įHig"hRY4Z&] lhPCߡ=V;$"v> &sZW#VŬd8aTB PTlP *ZB JNRj~VN@<v/}ާ`o]ҧ; enGܟcəp]uN*GVNJwkOdzC>s(j { :ҙx@=?K>6WbF׺ [3^Aֹ {҅mNı#X}GuY4D|"i"^MPfΥn4JMr"2Ҧ-T"3z~,?juI›pMsȳeMKy=CO҇qЯ9 VĮ2Jz^2AǍ)6Pl|!ح!ᏫZ|tt:N `mA|4 D ֭$iGD9I=5ǃlџq.C ҄XWi9'AWSV^+ӇĚE8לFx,Xd)fRBa][ 'eU}F jQ~hm6~4Y_,,Rҁvc4i}3aƞ S 4kRypz%w1|\'t|2dmͱ7e@bH3`h+>o>}߶lQ\Tj2}4Y<#9T1-fHݵ+d0cu2#2`؈ (.#0s+i8Z p%e1O u2L4UthY.f94K+V0Lz0a`w$ΗHK@w"s{=Lg'YBlwD Qnk-Xԉp~a_+Ri}Hvccug4x4ͯH&9"<`5B19U$G0;FdzS^x&C}6Ϛ6ʅs'a{xN=v*4Z9^H`Zi(~Wu;C˻=4PD{Ͳ0i5`uME({f<= ^: Ib+s~3Re=@zC$`M|[gv Mfo*}ؠo' <iKLN0Nm ex 7/Ϣ<{<OL|HeJ%'`w-F톞ľϺ|P20ׂ ]Ի8XZKdoߧbҔ#4n̄9.czDJ=Sse<) D#Qow~J0*]ւJ7}f\FZZd<:Ъp^jOKD8|, БYS6gVoL@ПkGbgB]= } Y+d@j[ݑx,G Ab#tM,DZQJ9_$.?O&x<XBhy=>#m.z~}WvHBo\bk$,xd)ϔrfM䟗.M!ZGD3 u"4 o!M= P`Q 5 +BŹ`>nI {DڮP}8=GɃOK9E&OBҙrqyȾ[=zX#p84#GS84LP!ɡC^{U Fz[݉`54|x }nBH֕z]8&m0Ƕ4e2Ոd~)#m|re.RfeR@% 8*؞]7mv?G&j~"iv Zc ;FKl5'w %GI!g E?ޗHy ~k?Csi>R&˂d>+'T7`92qyLCXdxV V  k},GOM$;D8,G]@^J]Vh^륔G'\)w#@Ag'|f^fA?'^J A(/kgtBQ`ePe\b<2sǨ]J6u ҌVNON ͲH7M`qAs\.rG01tSEe1As\BHP3u!P 8bN$ޟlml{s <.#hC*).@0{a3uqyL2\4`]%L'2\_.GSE=neXVȋԐXtrbr@;%ɪ$eq|9 /@Kw?d $ B6(CwʰcMh\e|\ aX eDR{\_)\/G9WP lX 9sxdKˎRX\3 \g]16T9 H # [a..eaCY@UI}di( &Ǽ 7RR@FpSIHXH sD=sKqDz<ŠR{16Z| s4v1LPwp?v ?ĭ=焞~Kdbi/ 6ʹ|!K(]%7WV ե[HD ;Gb0D3ei%~^d(gQ*2(# I#bhRlK'V0Kr./}qFPcwz0PV^rgSGXor=&9NF#!qV:JM"]Ta2҂Khr&B9t':LF`L\ Kl(j/RI\h c)P1HhH4s#=xŽ2rHL&"9C)C3ܥ)rs* s162Khyl)&F 9W1+'6&]PDZÊ3cnf)߹ E3S3C.lBQ(lh5:Ծ> "@e\2RQd(Tr\b`ą4JPc)vrLh (aƾו$QQ\R8!W\P%ƀ?rC1FfJVm&A ɇEʡ HxI>W0Q4w!XɔHDz.Kg \C?%`_TUig|z ϟK%Rn>9ǢJ( ŊsW+ K_"m$N1m \ !`Ӏ\ڍˎR,E.$/Rf?cKՆ2l9yA!=7dk/KaLN!*s,JR#h>&;Ϝ*)qƉeSzf jx&ΠY%d9Uڹ<9yC%}Ԩ>3DK`t$d^%{u}`P X,ayƜ\!@׸ܑrc*Ycc?%/&hCi]&9e% Q3 +1=dl# Ln͇`r7ij2bP. J1`gC3p-e؅iye@21IMtl[tN}fvZîṷcdEYviY׬e˅.RuH;6JB1i!.O%!F|AAC@yv0.3P(IJJ(ZjpIeY]_RՓ݋6O1p 쮁:ט*|NL̮%D+a3ļ`#^3:Ͷ49֮Z8 ]ˤ@6Mrbɖnjei~nudLj&frwa۬Y^Ҟ 6o'a$;DR@Ԃ̂L& ">OD}͵FtBa[) Kc e*߯0KSC5\ ]^bQ=/%BJfr`+{gs?b7Kvqb w_J;\; EK2[0Կ ෘs6ol CP6>NfBt~&$ζǚv'` %(>E}FR&`̊L6*LƘπ4tjvm/%rfd/:rc͇P,i[Q.!z,i2`"2n|'1<3®7WGU{zB`yolR"`L6 {ps]qE>iSW.3%9whussG|uTȜ eCtY,<)`6pn3U{/O~L`լ'wV$ao`J9ɗԿS9;b۴m鞚%RQcH #h?,epxhhzMN 9Z: 绘LĘ+S/<7;aCqf>3ZEsr:;W|NP?{|B RퟓK7{9|T_r"CQZ2! 뇴T)PVn5c{Ρ5)CR4xvi!6bL(Z{C^5է?\OQf~jA;hOEŀ2 cL4 9 )} SO3߉?gw]D"DK 6C&T  6,eS,YBC!p ]MpTMޭW.]!S?F ;Kj]Goí^(ci4[  8vk d VWh2w]=,6(0E,`ȄChl[lU)f`ʕtR)6M245>C_!6jWo᪞| } svm:mس;`n4`ߡc9XzJec,6KO ߡ9]f1+qPvua K3)D;Mu r'7Ϫ ?NdϾ|ev@1ϙ\۠Ybum]%T{sf1Si'R騞O>"7e K09]R~2CEIHz>*j燶=V 7_w?hSdy ۰oE{UJzmY(j)<ŶFT}L @usvĮW4rl/CZ4GЌ6=nR*^6퉗ɍ_T_$O'0mѮX9z:ٔ]Yj&Ibw,cciX^ ,S@4BC/wL@߶íO$ C'̓Shfj2P8 R3 -iU7Ͼ|'@1E۬-P\J u]<'ASI%ϳTȭQ^?9wS_< z~Ds񛯉/|qJ_5  C:}a4s:А8Z9E{o !J޾R?0ݿL=39ضA<2xQu]KP(ϥJR 3&sM.1xD 3iM=[Osh*I⇄:Do}A3UNea0[3pJ !S<=|OU"+jmo3u(BUUa2j %tA 0C c|H CRCɥB0Mi&c۷J33T:-xm{hː!݆EzS 9@!a@wyoV%$z{_{Gl'!Xv&_bK=ԀCr.uvzk`(^ "'9H.=JdfWN^ C@c!ZPTIb35F{ɮin4ϒ&O$ӼH#ߡ+d']h=^h/c%y./ݚ^8na6]}۵>rCNB"P.4XʊJ۳t{NkKv/v,1*8 CXPͤKtN"6e׫wgKgh&g0a>yn4ܐ!CRc35j@M>;??]O?c>Is79 ;h/.D) d0KRf1M*Jw Xz%xh)Of@S7儙Tkto <.@Jͅ%7/&-9=,y.%B u AjWsrp'+SQ&f3_b}6[^ӐL t(%`r(ZFDF$ӿA3dBjү:1I x~rIu4%xƜ9_ϻ[o%%4-5b./Uc}; %~C?ym][yZÌH2/\߻ܟ&ӟlӻh/n' KuK{,Sg!k!`Z(I#V2j1J*I=i9Rn${+ww=~2H%ir2 vc]YÀKgr-ޘ\o 覹rXAe|Ƴ_Oyvj]wOE%Lhf9͢DZ CF2-$gXs2]oצyb3PQ,MuLWUE㲛Ig:00Ɯ3kfXҟ5{ٞ}f1B2\S)zGM)Ќ]NB(ܘ 46F7z)+7Y_]񩪪G|̼Ya}|{GJB,\D1f2̌k %TrzىÆS3ǘ10c` B8T:2a ` ’e{ bF,Ke{a}֚v%ɲh9^/:]pXV.9$KLkB`"9y ٰ)L U"+iL D$?xL| ?v3mМ9 wvW΃٥li-A3V.e}Vٶm̸̨8ts27pLBb"8fX`qDpČE@:B5xJ6 $aS?UU!͆yiVwaކ[ݍASIz=X3 2ਵ8t9pq+>3"T==y6_|ϘsP%x7) PU9 8HVx ZtSi3N>9ѿS]:n^otǜbײ 'y\+txH4̹i!٩11*rz>9  W9w=z ǏLlĒ=0el6o :,DZ`uIڶ==_ခn LyCin@EeW}s=&8p9dT @̄~G&1^Û`,Y[P}J 1N<r2%3K2Sr.SK)@LeL]?wpυ&7{I/~?jȺK&^8 teΤchF>z$KrٳkR%A zJPaZ&F,6%3|󧨪@{49j/}xZ9{%d 5`K 4X˘F/󄏵2ixxara0;_YKuQ4!m$ÿL]8 ZpO͹'2f)CeIpts_fkGP8e8 ɒ\0͒rҶzLBa֘HLm~/=={?P? 2sʼ0%'w!yi) 21Cy@Z{K|pqM,iΉ1%<RzNͮK(}-Lʌ%4JkNژ|_U_j:efn( }.W6} Y=@佄_%"l1aDw^SY_ȚʂruۈA4eRT*묯ܚu!w4>~ƭV Cd#VK"xrA3w"LU ]em3Y]ofϋs SڷIR0uh:DYzsb>n PbBUrI("J&ndQv/;m>(|m^nW- A`0pyo%@!}p+ Kr Qa&%av**poz3LJ! !ŔP0ʧ̿J 95Ҟ/<N6<{L!)!CgM:|Ug-妯w2!Y\:}*>2#k3 LPm;X6xOØu ) }֠{ɕ H2Cl,bEueDs Hn8%T$rgl]d8]{H仫+]|;@ 2fܓ3(Qf|J'm I2`k ẏo,`5#;]-氤dGjy*5Py!i*=dp`>ťLJ6 re 9Bd^TR}vI8aR$5s%C;U 52x*` F9P@68Õu'AQ!N-1II}!<H?7l \#=kdD >{{d3za>7h'ӝfIM&%4L3bB3g/|dG|[U/wP@'}4cDHQ0\{G->8dϘjDoXNsMHE'D +m_:w7 1אDU2xoaqR]3U̯T>h1t+]i PLeF~2lʠ|007ڪ:M}~0P(\lz1 CڹyR'}dHL09ܰXxYq6qqL, \28șLt+C͛v--o܊lê "^R"##C$En Z~o2BXT]'am=2U23 ؜0ْYn 6&#PW??Ld3 4>d63Ig"wuOHl]GJsxiV yHʳ}m#vˁBl-ܽ7vmfƒ3fgvӾ7UČIwb@c` 0a 2SI+)G._%,eS *o IDATj\%¯kwT;PΣ|$mӫTAuxM Iar\FS4](wz׮|Sِy?4!:'!?Oݪ4$GK7Dեz累2ݿs &9h@e[s#au'$>r=-Sk4e0d >3qZxq:,vt?>E@6r|=o \ b); m"aAYvs aVPg]&c\& c6>%tٕrIv-Iw Ɨآ7jsAE̙*4x16W~Lo7w5FzCF!d匌S~iCHԄ@$=r浔IH.ͮDg#Z1;vqgG@ӟKLK SpPm[Ü[OZo1G@$TWZۺI_d wUwb3.X"XID2~kr _&Ɨ*,=9*6SfCHUP`s0 o,p}b=sCp̟gbWD‡ O()Y`J2g)MA%m%`ˮˌ1JӅ^12տ4P۳#`y p½ui.X@324)KV-kUGBd [B>Ϊ63aaXkh;-X|2V ^CYi`eX|-;]zBMԫI^?o(˙x,|oS7I}&{g6u[NMH 6 ג7v$h&>|-K6${ra9EX':k>\wnnxM$hIDΔ˰3S#e(C~Sۖ#|)("cs`(V7J M{/, ub|߀YLL6PfY\3!+Xpa$ c)&Zjlkp=m_öc(u"?d͇tvqF{ײ0;4V=Vt+2#3>Knӭ-[\:-C[dhs LşcvMrxm.0 % s2c_8T#BM ؏^R0n]5"|ؾW(L@jw;"RWiNlbJ* ]>(^#XhAJCQHXn(L5 |o0 ik1}bt,gG`V$HE'䃩gO&q]>hc|u0"+/4fˉu̸ /p@BcN؝bAb9|r.Aa3x v0O9H)-L HZ_0Jc`#f2NTܮl-uрd3:{͔FH|E(9EXP2'/E"/:e[s;;ыx i7'|B.E>[["`ok:6muJ2K>-~B3QJ yfRž-nubS8 /GEe+0Fz= vKΰO/Zu.8 =LDO="lA# )L0ݡB*z}gFeO̦]'[]t'W/CniFk}++{>沨Z2(`M"]ӝ^3 cZf%]2), Sf^Wp-eIqD?}`iWpk&b`iTn_~`l'#3n}s)% "BF9TItw4tʰlbhuS[?A0@ ލX-2)SAS2K] S똲9+Z\ub /'" Vye7fyڙV*s,r!(:pCL- .Q՛k$QEz]c0D7ӇԴUY'Xc262;i]2λN0XPDtlAxP3$qb۶]'`X(W C}(%`z_J(@/[H/42@R/.' ;|->M[ C vc)P<Ԓ7 ^&|ȮPVgtvHj9`dR}tn_kl8SAN3JsuCr!nT"Rlvt> ߘ~ā:®v>KQȠ$`X?M!̹c|ߪ- Y)fp-3v#/ߍ5X:Z| %LyDsay ,5'|yp#YK #"J2㛢>tIIurnzqrL{_>qbSaSHU'7eHw娤'3PΦb 3B7s3o=ܳ}`1_lL9D뫾C5@X:v\czkԺK`c(z6p["s_ś;MqɅR0cA %ECcDql+OTa0K Uf=&Uӽ֋3ڜK=Is&\O*h hrvJPeܢ bavkj{$Q/0=Ɲ񰛖vڄ3e[br)=hdM9[\Ck_zfwq#CԳWAcEi{ MJLesUsTCs8&7aʌkvW7c=eM2x _怓 Ϛl.pݙ dsR^΀ 8/y`fs 2627cDׄV&<ʍ||Hut-~s=FLcL/+#Fʾ/ɝsZ||e1 sL *o?@bH\LOGBjˠ2Pc{Coa0O֛D[P2IX:|[,# C7"ɶ&2zܮ>d:Yr"z.4hHu]4s,2̓@d gjv`OqO&@d1'f 8tZ4E챮_j1>`[l_ ~םk+x3d0a% Ns)lv]z -XD)RlbŋAd #QY2]CF{J 9,C0fhN%2\ɠ]T=]S |()OhlM(UPX>rrMk-jk=8RgB͆z8)}S%KӰ8!DC/M18 s:kc{npn*]'Sa ב/AE/H0[~֮~7\1Ȉ'jGgd)'֪(K. i;1= S͟ydmOSz7\ ϥk =J?E[kf|xaTu9Q"yoteNV1\"'vԶ$npIEl[8+p!Wagg0[f)g],fuB, s (BtSr\qPdco1'tJI ⅵL+U5#fP'7p ܬ:A)/$Q3YW!?@j->=IJS^>?r ~k?,.R,)]4>? 5!NGj%,.eM/l;9P{<&zt  ;#7ڦ#:L])lI3&`1YdbD07D4"ФF܈s1=$$2-r9ty2G<7w)uoµ+pwj}HN-OT2%pN[-,5^dObk,CmhkPb:!lF?6r8Ax90sNK9?J܍M~m:K:VY{hJM6`Nj'T}p P%o =/1eMQTqM*$rl8Zojz5jw?^d̅"Q2Lr_ 3uxơ?,pԉLX/c-ZC"L7KRl*U^R C$dLlԭm~-Gݔ'PfaLSj,uS5d*C2Z$D&?(%nlX[iJg DYSJDWכwY9~\UHNsw,c.r۶a{0c8J.pOA'd%ACtĘ^q ^DL hl=a0TxOu'xpFmb<([sn- |6Pv:"*2U3\X$2(HǀOa@4Jlp*kOr@ 9"6(@'p Lsn֘p(YG򞋸YgŌ\[tF5Ԡ t*羍ŧb&9R>V'uAyB\zKZ"\byMlD0⳰P^hCL8 ;o]Td -~gc6H!r_kM\h5?CD!>~3 \md:Q${ϐ-IBc%Mu(_Զ;20 m'f n]aW&dԳ+58Yf' `nY1e=6z|->G,LeKú3,yt}Xa3&g *tOC2n}X _%5Aތބ,jgw] ),@c<9X<_Ȯl?S]s 3ϹD Tm('0~hFs472{Abg@Uc.?sGdzȃd&t5pK}Hg1Ѐi91MBS>Co` }mq+CJta3# spHiKdM̝c}7%oNK34 V!Fܷ06Ed>yYgI,#nW?Hӽ+^藺%ẄҦPGh.L$R蠙 ۵\_]7 S._(|X Fζ2#*a ߅JYL3޻nqQ^2p }@A-3%B>R.N3 | OC4UHTr-x"5\䗈 9k޵K摙y0kI@pr)`\I{stM?U%HIxhAS~6:L|Oϯ q9b\E'#coM k|:rD"kݾ̫L .Ԥ ,^Ԥׄ|= |(צ0R᜔ϰ}x,vq@;>ju7{<;_cDl(G.RnnmTcm]~f8:CрgRXn vxjģlc Mk<<%;g83@YEkzUAU*Bg`^%Qx"Q (r6f#FNmL5X2oXmvxV;5n׊o-c:/_J{k:F/z }-姩CX sYH&75M|G'W 1>-^؁C0Lx f+CxU7WNfn6!4 rK]9\ٲ#9J9aY7PkJ0^+ds#7|íoiGpzbQHDr@\h2uVȴ<ƈ&F|ØB'8OKaD$>?E7C@gJr{t8.f4x4`q\9bMaLRpH$dlaňǃ^2S.Lm xΤpVzr"-|L 6RrrVv4C&NnOuZQV'gRmF6k>B%XzKyϽ\ Ӿvm1լykCFˆ)v!5oƼ4\g2uoZ5ObBĴFԬЏC,9C+"rG*>'3^k*N=Gs<0xE$1Vk^oFH𬯷x;eGy/.>8_wӷϯ&:0SY+/d7yrJy.le#39m'=[5[m:q7f&([JV(D'zf4i%̽~{tMjQBQ$3h?a M>uGhW7M2/2"奣%(D 4 fB} jsRZq2?1Ȉ˹JyV%*F! dEʆE QIEMAUnyB1Lj IDATwk#kW@Nv .r6:/wuj>摁dz.Ogj.iA9!3bYZu+M-Zmn.5YN Mc3))0DPΨNTPxonLLC-X­ЬܲA_aSsgZ^2)F1yLR.'aJc]ky7J"QI ddk̘mm 8k܁qOd-KG{ ލ*pV#~x Phͥi:3`OJ^ye}ylqӂ@rl.7];qHwyj^Q,%pdsQq2R)ƙ""|oMhv[ȯFn| };"x4'N%Hǣ6oѺ7ĕz8yKx|dMti}>{?;YE\ׄWDlƦ,ulw;7/f("=yz LJ[X @m /EΞ@ cS"u;42e'Tִ:; |ڔ5x 6p6nF/wSAyhK1谫s;5){F!5CI~VsvBvjHHn .N*o`\:vrN8z\*9"xrr/"YK'ebw/+YFKvMU4^Sœxnyix}Ξ=l(T*`6nصr.hLFW8̜awD49Dx χeրcܚΘ[/γ>y]ITsC2J2 4L5J&=Dtȱr% 4%y>3%Q'։Nǽt›Ҝt+Z̵j} 4b )[U9CbuPh~{2"Aeo6n?=/0KL>]|Ip'[50qv)hi6l!GQcwX),UFD3?9SGA)>wm+b1N֯6G\$]a5rm?XyFKx{B&(bNaSY \ Qe.]b{{Nr8o e/8ǿShg~ID',n6y9Τfphiq/vvg-Zk0,EUf2oZ]~[yw )==n|CJLnIނ1I%ʣ(>ۉ&)A VB@J(`ר{n<;Q#T!.͞iZ(sXc0hz7 PH~49oVoVgHLSwbveT$Zz1ɻv&:I ">0sM,q]9HG^!'M:l#Uk \0!oBya`\8"P⒰vv4Q˨[ @b7x>;u֭Cgc+2]ύ!k?E0I(8_rak5;Ph>VY HD12-ڭVNf5,>-O2-x:`tsB:D;bcaQWHFd":ryTϧGxUxٕ<: ADƅdfJPs(5xg̸92H5i_ ƻ15>o^vNM/ L8#/'֝N<+9>lD\3=;jsZk#0>B7\g,*@N^+p^pN>+:l2:W`e%,k<UK` :'j6No6<Iiiy_j1|7J @mPp̌g8aE%7(i*59Rs?57s ߡb7U*IS.MSV}xi:Pyj vp f#{t.*zԭ3W{ODV8[8^-%E+#+Ru&TzM4d;PQ>-[7]~@Rn}Ԩ|6}ڷg\P퐚ϐ )]`<ƾ X ?e! f]KRR$QJK]MtD=F8ۻ%X)pHi >e[ԋ=b\qtfˡbs!Jpn@: g)xѧKJQ-`y*kwp6'g§I`&>׽f!X16so9"aƇs)0/^vyj9p?vgXJajOxLS.Lnq|,wXpy\6}2U>M= |fWAe&Yj0gq&ƴ B 3. S`kMJ*g!/-yI`D$R!]8\hT9c#Ґ˦nSˇp4F;8N"1pp#"X\gioVXkESotj8\qfIIϽ.3:CfrLuOsaP7?Ǽ$"RswMiq0͋v2p`̐Q˹@+"q Kv6otRKn։-ܼiDT.|'#~Do3eP\L71k*!qad `3s|j֚Խ'WYzS%"w텘ζǴ`s/6}EfΥH:i%c;邊*6Lpɥ\A F[q6Nz]mio8%X3)h<_ݧzAxa~d|A"[:h߉0;KEb084Rك⸗`hw Ɇ/q+eL$wKB7Z+ YsAh~eRBj| QCO/TrtQLY눃*Hkxr5Un]f63Yk@a~c"4jx.ʙ [u"_ǼûݾpQ PI?79THQ#+3$d$) ]+ Mkf8Nb0-i5=++(;dZ8&3ԎA9%.!c9`]ۧ.aaЫBI@(ԫUzeK~Y+yS)_@t'SDXx-V/TzB""4̣C6=ӟw`t RZ^lQΨVDR}o)⻼EZX4`f >vDɹyI=xO1=x"PdlZ%^.4.W&PǍ0d7.~]Փ_g1@(1ãz,{ι~ @7ǤSWMB_+EgEZ )Kw鯹#AZ~]=gF\kQwۼIbvrϹ3c/ZR^74YhbiW3]t1Jk\FZ7υxr2Ul؋R\73dmt9J>]oh3fzF>j2Yc̑ }#i$?}=3"Jg)p,В'h.Z,;ܕ96o3/i.w`G;``,#iم:i&R~=&L ?{%YeE6RqxO֜fI"CdT~ 8=lE-V*lObz Z"'vW: :˽@1rIԸJ|6=~]Mt\Y/F?p`a4j ! 5dę@`-eieJt yeʼnZ-aё5s5r/`d5s3YӯcU'N(48%"xplL道maEK3{Z,sS-wRՊi9n}Ocb;ιq3D ˸9ӥ0 m4'0y+}܈fJ\U;nXCY@CPY|f_jiRzE:Q((0:xWIi-iyB*@y4_Vi̪? .1 +quKX u:MSv8b|-@-wQU{jt fEAٳs7~pz8?{ѪWiβa4bWVə( 2g}/մ`)(slkffKə J/Ea8E: ˭ל\EQ\ ,%U[QNy?CQ/E?pACE] >q2&tL%eٌA3K4OIϳ4g>#~>&-JqݐG`ڊDh#n5'In: Qdy륌Z,-G+\;LF_ˍc)bx h|2,Nj)&]r5ťi ைmqk'GM!ux`+sw=+hVgLޘ:1wfOP ,Or(!5'iNQv}EUƊ] @A sX;[)8su&](*![bYĒqO̜@VzZNKbT Oa_=:yطig:fgnCZ!9j ]q#acE˥j<&u-jErT3׊.N{fV80oԷw"$!8nw ) a#xwPM I'oh_W0͇+7aEh5ഄ\R֑GA-wx 2Qi6RJ֦Aj}cL K∮bE??W Z Q V[7YlɘCڤt!@"Əŏ8YJnhBsH #c6qb<(0;IFk lȹy5eH;OՀe&+902IrY=<&џ!aVf0sUk;&4'gɱYwjdu6Y!@}CP@pUz\o'i^Zbˆ&%[j=.8(Qhk-sӅ)P=JȞ~h=gp@}ND75|`-x d1T.Y?!zXu̹l#. C#yU. #8^z[e#Y~9Nst=úP2!?s#vdPUѪ}c9ꈳm4-G碝%NKd%qm X{ߪOYJOuS[c>'X_Ek_w5n<1gfެ3E|-!Fyk&hT:&n~gCbFQE凔=^ -o 0EENc%_]{EV~-gXa]Y;_@e5y5q p}AԮA A @wY.uk3z^챁m 睌܌A=sq bZ i @k@91r`U>YLз?Zny"]1FHG^RzKbeO= g(Օ,4(誖oq!_NPR͸fy,AaIclTqiKgK 1ݘ"Q(m>P aGPօmCa!n1UGZY2׮8dC'Oja)R_~-O3f 鈹ִ֑rf9vaMst4K`<WF՚ ViJ @WQF[p&{&Mo% s#-8^ ,5'S#صtk"CjJe%KZwv&J-JD>Z(=2^smÔ1E2^POuAgT-Cc4C./pވLl0~s佁/@a5 OӻC{ PdtX:*ٗ05k#O JjW䎹TS#,FK D9Z4\s QRtL6pWKxbnVA] ֎uM 5 \" ^Dh7p2%_ GZ. dqߞ&B:F_g l/suz=hB_ : F'==I֧S'w [E"\~Xxؖ1j%9}:Wټ|-JksR7%dYqIUfLXn`JBrv\etإ g Fh|ȣ^r]rH00#=1-[ArK̞|-^VWfp'}ʖ1N[A3 hU [s,0~^+3\,,5-W\ )x̨v+p0n/.!RZ:t"P{Y]d1I(4= ժI^ږc,>eOKLHCF]mj~$v0o|1y+56#DlZ^zhK!m "tp+ܛzۇwcsf` C,D@aJ%k6kuDqu}ZXT HHѢT[9J 5,*K,儭sF^>Wj08Ǘ~ll8Y F LטWŰ%d%ĘzkaZIgf!{;@^*ԾIL24 nc~r%bI^>4fmfmD0Ȕ{ǃʋoKRBEzA*{ /%<-ڂ%8ZwqkcFF5>gin fnvu&jLY)0&lEk"ָ2axW2Ĩn.5`QE^`<6Ç1_]cNdfZ=;d)onjw'waE+HL"Q3Lnia`jgT-@39.'>Xj=OF1WI=mn+8.Atj7"SFDFd+$}Qpݦht?g=4?Z JQfuѰ\{.XdQ|~3ƅggDx n-rJd$pLX9[u]!k)2Cf G !h̵ދ-sF޹[FS8nAL:eFQ=^k[8dql%?%WL=8 iU(}rT>'&c!| hǰdW ?hm\fGcSZ;%\/*e}#[ČГKЁ} gky7=>n7c hTyxG[jZo@*1 ~NKݑ'I.^w"){K3|{K\b/}`+h =Ewx7v.(vks/G3> vE(<*'TDxԚ[N =Naz.rT'Y;+=/!1^L@~/̓aP` -}~{ `4013y w.#/ ͜ _G*v+Ni"Mڊa+{$i!zHJ8NZfuUC%)FAimG>R>'y[B7'>pv!TzTJsBGg.L(NhY|My,u*BrrL|R!"p_XcMaĮXT(q定.Je=;X FXh{z.9r kr:nȰ  D-K(O{Vt!r45Na .=IBR2rml.~ 8F0 :@`| -\1ϟ.\˓ZQCYF_ÌXNK&"L mqߏ.Lt<'dwX]q~FPgaD0uw`"<eń:1dLݛup^D1K"O]U%W؎<HXiGhc$l}Oy[GmNGlc"Y J=gFjs!;3ifm 5K^Oۥc6H bw?^]O۷}PZh0rÙ^MD|gm`9UZkꮩU%ptV}qoIuq&Y3-'CbS iaDmݕmE0eJ#RZq~Qu^q F3ΠOpv4) C&E<6D"StCy%NbbrTq0˴ J nI$m?|bNt~h؄ၢ2wq?t償pYRh:/ B7e`+-aE2jv4cئd(QS#@%'2!=c>|c{G 'z:5mF(p ƇܩD痁u~ ;p jS /)*͝?6RyxX^ͺ8CPBCJ;w)uŎ-RiPLY1^Dߧ6X6D:uW\'5Kǰ8y:ަ*A1q FZs{2Mΰz=ct-2 o`X05Bzr|i.1e F;v0_=}]%g)S%I ZM~nN6scV1vRq2mn$| 0،3q0\d[;T۳{ZiE+< II}b߷ܩ\-f{_YQނO1E%j`댵0=ZW[MR%JQ,!!dZgÉ9"dٗ@67 ͍N9z n}?`8M?iB@ck8зw.9ulL<er2 v Hd[  yu^z'|!0i>ny?6YJKSU͸0'#Aىm<JE#Zt2ԧ",t=]ToS g7n(P* 6^$t-ܙ>@Sx.`K8WQ7*,+3.5^."-J~,^J.%F&Op Jk&VF,ARwWxhfUn#U++&P|"F IMC ]Z,dKF97H/FI=N ٫]rxø}q?5d64tQ"P43 GӌXɷpi.{Kۭ͊H@>^pO[ [Wv#YSRivI,B^ kui+9OX;z dc뺥Fim"5/1323!Z'?j^GL ݪ?]bI#gZEJqF Dܰi#5 ,rA\d~{D!%9xӚxΕ=M$V8y!4$UFOh7@v47MgxpL-M\SSНD"M<C^ȳ+ GqN5pq{~o7QOEFR;tx q6Aڄߤ_'^fه^ =Bcq,tO *ro.JL;dHdMI J4isA:̍m PtpzNhgr:qZC/8K[88/O;Gw=""s |ȱ5rVRp#P pmxYKU38f|ߢ nQ4/ Zh> vBdi@#eJK-[hT FʔZc MoKA!PճzCugDLg*NoQRh3\mT%Q%GV Od%QaWL 3>FsYrߥJK1NNk|ߤ0aRu"0>lCxVE{8P>*t:vJ@R]*E2R 02:GRs#cɈL9{sB4ӳiJm-t zsP4=f-wq2DbwCiYɪcB8ib1EZD`?]D#C^~z̒^yӱQգj"5' Ut-PQş+qW^SbTp}_D[y*^e 4q*sA+>u%RrY~t"́nwk4'isz0}U@wmj5k#&`Ԍ&k9y{X{R%ŵc `.,\jfE5ܩW=q ~ 8֫ԄE lEm1[Qg1 Ssv_"FJޭzж;wyzWXS_Oc#/ MV40]}Z_~>dNo R \VTY6edSצ;) 80 Uc-;T >OfQ~1x6Kcnn5`<@+V8F>Ҽ\m9XZL/w&:JpNZ~ S4Ğdfi= ܩ>gARF0uZ (Q$!(1(:6e.4 ?gkwn7i>%R\&>I]YSڈ2{C0Ncċ[u΀R QzaN"-^C53>2:ucE#e7//168Ka^ q|Ȋx?s{jtOw#bl&aډD^{"=}1uTs+M'=Jѻ?]4C}Vr)}x.Rv 5==|47C9Iӝߵ6&WE^{.BxG@lpR0"«K \pSJNdF(=oƧU,иtL IDAT8;~$K%:Q_RdD#`Zb;wXm o+D*Ah)IȷxŢX *7B!JYץIH6is5s'v{vΔ*v΢o|sn'a(ӂikL!DƳ |7<^9V.*tϽv3p mpX`5uGEVԘ끬ʼn7*H)NSMRuvBZ O[ IVv1]5*KS!yMiIOn p LA?]Z6e^z\-&*&//%L\anSwK/܋uyqOo9v?C{i HsR!o~{c&-L+(DEc"M$X&4Bzs o,C5SڜJXd!b`C{I Z*l:<3V} F x >=?fg+;^W(czf'o6, xɘ'r+E1_!ˋJKV'Sxc bN[AΞ'V0)uD z JVYa%pxpP W5kj!lN^#)޸ @&àDǮ͜d1pL9+>x[dJ/i `<"7֦OK` [M^᳴9Q?Lv@/"WvUf.<5Ss>ĝ)JSĘ+ѝR˯a>y2d XE*^NuZ}DJ\ {,B=OЉOc{BԬOh"ASe%2ZJ@zF,P`u(RGq c#ujpNʸe@zǵv i'^g¿ KkHA&'0!ˏӌ%҈0KE.ЀVg5/.Gt $ShB؜1͂ +`hZy Qӟ VQL(rkөnv4w6/ ೴e['T"C/7ƿ5>CU6tti h4hzz\{Sfƃ/K~Ƭ0r <&藼D)LE;D){[qf5I=H+iM-Tse䙫 @(CR&Ur4!Nҋ8s3H7nmNOYJjamen X_{DqpMD _i+aMk`JCsϡL}?5WЋ 3N@x#+h z56 )ۨ#uy9L(A}GşGD0s q5 5FOYB Š]qi  pJdd[k(bcAHM۹ Qi0҆xN>h-T 6{Oy|tnh֧XmNZDGfڜ|d:̌i\1N-}p nՔr!dB쟆O ܡ;9;f\>"#Т ,]S '1,np;NB3Cd)ʥӺԀ"rN4~Ų˜k˪<{KPZ%K5;A{DX kQ"QʹndA#OQJΥdd\>@؝;vB~!W N#'r]+ A`A89C]ݔq;~^V !".s. Zø7C"xL' <9>@i8eL>8ȫ(đ!JJK6Db]4X֯SbJ2e*UO;<@]:^Sc 1A'9 dX9W8FSv=nĴh=FeW<aijᎎ4=+ٹE}@~1eOnک:m`67R"h <^O;i6z0f֧=XKus:l1XȒƵ`go6`nۈ#fi:a^\?Yr0\/t&SIEK$yS/B1;,sECl5!,_f{|Qlj s>9*'voq}Cu %F?Mz b%$5{Cadq"s!ˉDD}:l4$\@dg_A׶9?# !4dsKKJ+o#2FF)샧Pp 5x4߼d=^uԨ̎߇3Ð[4D DՍTnivß+{24ںR-bVg-s/a> [*$J8 Y %l1jřPRi|nyɈKC~-)T!&,V (9$i+iZ ]~Y_l#>9 HyE"͒-ZNw8~܅Z'ɗHr5@X~6 SI#mty2|V=%͓>Y+Z@n?>ό7tѻGH@ӈм'|h(zvd%RC,R.VD4HR_h1CՌ9'vLTQ/: T񧘚}Tlw#_䜈qƆECgQ,ryb/x 1N#&?'䦜wI_p)Z$jcČg]NRqujgnj_v;?G`Y{~eܬV'_w&EIJSY!%a5E{AiW$9+U@U[v3nk54PG"dF/ [NӁiP'pYBÐHsh}r Y JЕ=7KQu‘'ƻܡg(` A(ץ9ŠK\hssHQaG:+:@NuJ?,89PCt3l>Oa Zݏ}Gmj'sNE;!ȫ`yׄR=@?K^ySΛ˽q/ZVc~#.ﲆS:"xگuuޜQyS,sE9Ыj"e; a܁h'V+,nTT|'#eA )ś PjA9!<Ǩ'OKܙѥ5) {Ң:{՛YY ڝh_V2<)+ Ec{WrlŴTI~K>0ĹoBP 0" ~zJRڵ^yݞwKjVk ͦ/lF?fgJ*kyL/?_+b+70"Y]4a9w08qT G[;^X>֌rN#vn=>8)Rs.,IjN#_/TɈèQWJI.FҀɇiHjQ87#hz UX Lo '}˔~RviC'Ž. A Ѽ&P5M/N/],뾞owƿr3f!BeNVດS?8%pqHqgjHų'ࣸǏAcn^ʝNKܩI7]x Fs+XܶtdE'RKMw SԺǴ']󚞯7}I h4TP0Iǂ0¥Sz.w3 ̼.(N@aGB zy9pZG[q1c=L'iAF3ki{>a*:K)'}y{-~J޲&%BǮܱk9aN(blEu'`b cu&}$Δ$@޻ڲfAjιs}t6mBBLAqba8DPx!y@ B !l%`VlwOw>}{5oUYoKZk^jVլP<ֲ]bSyГf9P0(N@UZ昽:|ӹCNvr 2)/x:`jUⶌ3f蝥y2%7+}`0*m:ɚJ"M>n t&XSo=~ٵ26;R'{b!y(Ka4K_8Cdy헊mBJ>mdYsPP nG4S:&mVKdBe1d+qeI>_bl8R$V?ۭ뜾`|ȪXgIh˷c<03 q8-;0L%ef3_ &nM7a9"o=+U7`l w.O}O)Yr_s vB[ k*=`zWvi1qW߻PaG Sf SG VQ[`;vaPDD$8n8 qy29 }: `Cyz|;\!dQ*!=*CiP9r蔅:(`!vY cԠlCzzsS{\JSQyY]sv8}z oLx\MutX@6q:L,u;Vw=+kzߟ*79]˛nm_~4s̡nHU>wbb3Ơ*TUuZ{XkcP)PUx1 > GX ~aM< ˀ# @a2Sl;yej'vU+i0g=zbTR'߾'*A`˨C]A1LM7h򢩚$7wK Lf+qۋ;eMV ZT"0u `zmv-bPh@gp5ʒ:e9TUce߯$p*d tt؈SP`sn#?܆ef,#2Z3ir_~B[90v.ZDruv;;K)$8`I%Be%ZeLՙXF5*-D :Ά/\\䬕gF,qrmT5-|Abuqς,{}/@LJ+Y)2q*IBbyUs 9lTݻo1S:IW\I8 4aS~)|YEzNkLt7'>]߻v{jID3MVT0;)S_%_(S].܍!UU02Ee,3*+PseQPh 0V̒{=ӷJv"ٳL+֣GatBĞw'Awr48@37bJ/:%Rd4T9pJ)˒C7<3$?[fk0$h LUrh!֙`ah ssrTƾd{bcSt,͌Ouɒ7kW]K 4H'r#'0\ ًۃ^zi׈4%!O'|TL3xs3$LluQ&;'VJ{fZcgSuw5a!1l5 PN}Z,e^HD1T&%[oHaxhZ҇@UT Y+5꼀t1v[[g\c#9}=ڎfZ/|f@3 aMb*X)vX+!QX\pٞ5[[iu;@*)6 ӧS51艜nyD8oۉsB$Ϫ&$N$y 'f`zj?Nrl 0 9tM$\:PG@P-U:Δkm`rDfA*Aª`u-):y>sKؗ|V SC9RYʶT@rC|<0}ab!Ix>#PmUjn?2Ybqd-t9ݛ;SN l#K`gmoׇiz'ݴ`RL3j*C^-w`>l#$AI=FFIV :r/!":|CMpZ0/ j2I7s4c5#^o KFyAt)YB? Z r  1}&OۭٺΘ!ڻ1jqkwQ}Od.T: csSυ@Xd $,bzpWW BǼaQ "iBY|{m[A ܠYsqaA  k*!X,NKSk:R/ݚ *1 $JS>)Fo3/=7&W۴4˻%.r~GpFE/1Y$ 8u4[lRGakVdF^pr"i͞yCIN$do9 R$V$$Vd}: MT>zSpȝv͹Aܒ1Gs !wLizt%Jr g[ף[c1d #vY;TGpWo >Ra6P8TjOrg-ƭ;n3c{av;et0ջܷoqW}29 'YiHd,;K_t,sxϖWMRҞ;D$b\FKN12dCqRd|Gfk;kRX_Ep1tmf D y̲i\ pJwL\%6!(d% )fD@RKS?b۾9(ZY cO ⼼o1ς? ;D|"=ƭڈG٨;.VA3S&K1trW'8!T+j $  ;=k8ג1 !^7qXgjI14'1ɛ;`j \.`QlQȅSZ(mݍ =f;Fd/y/Db<\ze:%ɣ؝FP C,"aj'$SVو}qpD]̓+]<<_ c$ ^|aCv&gӐ JJ"sF{q..k$Gx0l1.dN<>xN<CM$MvϫgHhe.fF.9@*e̚6:>ή~s撻5;Ջ,VLC|'1g$d> f ;`({fұkCag{0VLߎRI,4K`)o bΔG/h2é:҃˸i8`P`Q:Q'^v#;D@K|A.sc=__rhG͂P #F(P2azo3.}= w,d6@ȃ.ϥ{HK c0M2c2MN908o!3u$tL`lNl0vjaYP/C*$Bt6E.ԉmn.W0fe@3fӲJNY$X$o{pm̱8k>zh^)uNylcM(,K&gڐ dс.ϐ#OS + BUeHjGF*@ Ľpۂ̇T5 ]i 0@-CVDDdU%V}.xsM.|8}F^ER2S ֪K#Chj y`Hhz@܈2)The4}EˁEzCal} pMQIH`7&S`2UGd.|Ʈz|:( !$C֗h``>dvo%PXM @b F0L2`杸A_ [ok` ;nAjWӪE8م4)1  nۈ;w'ֱJ7`;>T߉=]qL(QD8`@Ԗ6Sl-f2 S/a5=vvv̇gKG@MT\C(:|/D1sG `8]lDJt XwS$pn10)yoHP{].ZQxnzhy ?vfXؔY+K<$C.y.XY׾FsqB."a9cn1=738DwtPid@TL ñ"jZ)ppN%tqpؠ||KPA@‡Z ebFpȺ ޅH{uL{9(Wy4git̘Ej2cC3qRy5[èV1cJ}`X'L!Z!AHԋuZvr$^ma~XӇhl5r<>8`1̹5RϓrP&zk+^۽x_c[o<?gv8Y# F u~*uR=cYₔ^0GFLh^Nt .E}{>I4:kLGՖC"LOk6J:rR7g86H62#-Co'Bcw"_K K?mэZߟkiTB*$S53h>Fʓ U8'" fIJ4ayg4RWId?ľ J.xN$\BDu*ceT43{n7XeHVJf­ +2J6pp1b 1|d=:@zҤ?B-e)P,М!E%25;>&c&uݸrɼPh뷏%(c ~:\d?C| b!}țSl(/L;[M7Zns4TXƟ~1G W. sb+q/I^ګ 1 .gI)2E6tSDJXdD= #ePr6x'%D{q{P~l}!$/s%T)"{(#AJ8!;b\Ew uLhM9FcK]LS21'<t5PKd%zSmF^ھ};7/y&;p,nFrvҔS:&͠-EFDFw1Ȯ*g-`Q}$֡SLFPyJ}(=h"0NP2 &̑C VWaĢ"V4p*$g&˿[YES[mm3;|c2f;\:a-hu+! azӳ]=>~ߊCHQYaGxx8<ˋXzY)C8I$jj:9Bn CӔc. MG c]s)v*&0JNJjq/p,GW%HɘtIX{74B GX!,J@N3Ryn1N(u{v`^ ]16nS6L(_csE̸3!8'n:!/-}~ed'4Qx 0|@ZFp G4Q R<5w\- -=3=\ `bYC62ƳCm~}8p9isN!pΩ*}BqF?研JXbV1Kyc*dv䮆&Md_FtIgƙ|h23c—b:vW^.mbZU& jwC|=]J iXS讠JxbʌXfKe d/k!x־W3(7`Ih[{mV`'%ӚL<"3Mjo ]6LAE^[a1wZK>G/tcN^MD[4FVj%7 8_skݱiM {%tG')Q`<\:ɔ:m@[I(3h>+nX=kg }ILԊYӭp ) Ô` S%j](#sH蝩̹ ! Ť@64eb\މ0y+ c+إOlq0"kɓaKGwЪ0=> wN)Tد.^c?*:T=}2_XhHΙbk9VKԄcܜcx);7B3tTh2cӃ9!%|*_ Tȃ_Z˓(^9B>/yc).8;I`k6e"gG60ʳӅRS{7jMWY/E2 WI|JJrZdlRZVȢ^8wqϵ\?3zZ}N0IN0WmFH3|g8bѷzڠ~dNj[*%ň[%M NAΆKYE2LY0ܻ a<>u=-:3`ފ \u 3hkȄ@h:pFW)"ˇ8N->B\N̳̐Vl)6p,u $3bÝIBd[; B2Y Sfd̴SH Wa}ct7.̠9/'LfaqFr OҝEީ 8u OtSZ$. )Vo)s~_Jm1 SNLYzҊ|/Xᵸ'._{F$'LzbZ!߽8#ә]Πy]_.JrB&BfO{RgF;qHJZKJK xm..)Oix>2ݱWIV`WlpcI[z'}n1^Y 06)d8qx;{f|2/X`0y@A>d&1w-g]E S!40v\鑻-h1 d L389NBJРeF[-N -HY{)¸OUABl85m4 Tz$4ɂ@ȮKc%`8ŀ`0.  =G$mY&ײxDD/n8;J܊HkyS ?z[o~(9^ Ӌ2O@Jnm tyA!mLvS/"f)҈W@;qq"RL EƦ#wAˉSUB]gu(c 1:rksXʭX4O,/C_ۥT"=^  ;r/JxKqK=^alQ'IfF<qߗs xg"[ ћ`; ?.%*8ԠAGdiB3Z$g 5!Zq#/ߍ8g8j`{zz'pll{v! e+΃w.>s 4?2 C!| L]uV /b2.?DgYO,|V IDATIm`QxeMN^H ")'G]8{~eX_'4=8Lj<8cO%Z|qQG@KF4;%Jx1LWlYʂk dͲ]bd=] p<мlx,`2\K'd|d' VF1Z8@v9}18~-7x@g28%?^B!r#BziD@Jϕnf3h> j "\NcJуBq,d6c{MjkJD]ŝb> gPwYv@otg`JaQ3R !mֶ]3!<ءjcwl1l4`n=NG;h2z<_wKS mI2WퟩG;j161!vɂeV|1 2Dىy Ѫyq7W_Y 0s%c-2!x ,m}p,^7K@ˢ)yiؼ<F4/X\CcDQVA?͠DgC\cE@:X ۸P:L(ugIR1hϢ}y41Jž>1i&υ^偳d3ͅ=qx4}?7>x,Fb{;zq m(3LT,P6JK.v^\rA#,q锞)I04++3okɳVhcf+Nl&`ҝ[;x-ٵ;F=#,Ҭc'f)=;L!)(85'i>3,4>0)Viz"dyBn3x¸ɇK6ɒ&^7"%G 2[^`5f^PD|)kn~_5F[uĽK;ۊ7fx6lJHlZ^%479%7,:A=&Md[F8yqIW񭺨E߾UZRF11Wq:-2#XB86[~>Mi\a<Y{o Qȳĥ]fqSYC523QI$ vgH+qY"dN>4׷B,U{nEr*{`{Xk{ƽ J?,6^dNHRvuJJQ!yAHR B%6oR4 P ^hK𼵙:#ZYZq,Fd=Ur#xh9YZ/|%td( ˃:t_g1 UKyt){ce#BGJQI +R-fX l,MMo7}׏}j'2d6'{fМ{C҉H8e.621T)S0{/.rV"h$S&HJb[}|[2gP}XDŽ06y3|"HY[I h%2rəib1^CؼN'Ǿ"Va' {LJws eAkg~PXiu .C(m`b kY0d`+؞gQ0BAD\, &Y ى}y-+'ɵȭxzV+:;s4)OYYdDr0 2VC8xߥ+gkvXXe `i}xM+˕Ht湬qƿzܜ<{]LR`Qa:f ;kI! C3B>#-68Kjm]V Ȟo-iHSg9C߈04]Bu](o1 _'$` :T* e9GC^7#=C0[Z(>n\tV!?0͗]F̡49CssFdI.ޟzO]Yt>YJokP*'5Cn`2!Cr"r 3h ajӬ1N_΃{P*KSEĸvԿϿ׻'Cn=SNZ̠9/2:/(rRjFrNr>T^`pN`Ōe]wP 9/3hMP35;.mAW48ց0Xt0 S;9(yAs^"3:> @̘9Sݜ@1`v4c>w$}V0# 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/\-zV}^\|#H"OdeyyjY`o*`2N> `rbr0/X.yyRVKke^fМ'vHa$_@z irR :lHXc4qc|l`żLw* mH\PfgV:<k h$d (ss!3TmD|^RP,DzѱZFiKϮǙ}48RsGd3`Ls^p _/' 1<*dgrD/2J.8^\S̱T.̙Π9/O~o  15/ cCR ~gn,3As^>&VɅu=<KCFǐx=2csTJܒ2&C<{c3As^\! d'¸KBP 2ͩɥ9|Fj>OM&|V꽩PV1H׆D"t|BNcI~J927~̄ff򘾗}1R:mtq}2)r -)L224+O񹰾䢦\"e,P.̥3#uj_s8Ϡ9/}*,-YץR6zN**-A*;KZ?Kn~.3ΠBҰt]@yM%˅DŽ(^߅Q 23ylo*$#/9K)qK2YJ6w L@Ju4y&;ηap"q F[9OL'I'Sۂg)CǴ̽珟UprS(s¥'}Ӡs:\/TT3rcn27\)T6q~̀93x%zgI( D}k(<-) o-(`LOMƎ[o=TlZei>g|唤T v\ $TxƈC, @n ۜve~r, Km`Cz^iP %Z k5u{; zXa)s~A-̠؎UqOqIqM5Q!ĵC ]ap KI%ms+@ .r0e y _1a}-n%-H(o ͡R]I\X-ln9Kc{Bt&U3ӼmYT* sejwjT&2Tm$YH7̅)mB,{IXN ɸ] fі2yAsue˔ rc} Kٹv:IӚB~;ƮP;L9/iJV=e%nbjjہN* X!!UP:'`@yds?uP%SŊsb@8+?aZ(՜f~2Ӌ~ǤX32@ 5/`:.ReBPXDzwKs* rc $|y!cBH3Vϥ.X+DSQK9KR  Ҽ:GhF)}1fFq0 mO;ЮKdhiؾ&\ؤSE%2.4ٹ6d,CwS΀Lgq$ N)3K@6f".e7 %3ƂS~1u#1ʺ8oܜ\ KAw`1lR7~J(\{NLuUadS9yPSI")MnSjJKK[(y}̘Bf|fLFp 2T-zy2e7{DĆf"":l=[v[ 6̮sݮgվIED+%pkj[3 BXjNMzj8]j?K4}[oکI\7鰥761zIGXI1bQ..Toxfv}m*vO:Y<pOT0Ֆ$c>ѷM"&Ȍo8gqYD6s C. PҤ9MTbj%]qdZs%A9)m,kJC70dK2֩k(cCjk~~%߾}Ƕ[H]>DdWԿ C{u 3צ"zP.? cH)ƙ^cc)g>I0Z ȧa)kYUL@"hʕ l/WzaӮ~7l;ۻ:PuIzL}/_oG{qL\ؚ+\b Oe)C,-z9RV Iv`n&!fl/"\4g/}Gmۿv3 C "˜~+0׉_u.Cv\O`N,z* cL@9u:bH^7g[bUV*?Ji&Wx!SuZzjOퟰ7\k`;bcJ"BC%&"=U{T5ov!B"7Tc(υ9 .c_ۯ._'`̟t]Z[S{Շn{[JXwcaNe %Pv4Di.Me~J(6SU2~(>?F:NzF-6jRRM*`9}ȏҸ#,Pқ'> џj@;c1)AгȪnI01Msw԰6a<Lz[^uuT͐ jjfvRgfp=c^:N:r`Oi IDATT'r`l֋Ϙ[onF{pn !6AP/a!6 uknD'D zWHne^o6(NO1Q΅>66$4؝gмv`n1ˍx(u** B}Qu7s~[?d_4d~پa6Whn>,KJ r!p*f!=8ƀS?c!yD5L_v+nM>.1N1 x|<0Zb[%?9 nA]RnZSn~)wm^=<6ܹ+Pz?22S0%,/a! N"bSw2S/tҁ6αRsX 5HבNlz@tb)+e ʆYPkElK9SB)PdȪ?me,N 6ipMfIb)̹hC] 9?7^q4f\ߢݮ^}{ZW`N D=Y|s@cl4K:m6l7Mka?/r-ޛ 4M TS$J54S%F2\v `e!Md? slR!>]Z{LU _dvtH<~mn d,>N|LӔ`"k1caqr|q@30~S2/~ˇ6MSc,mݎJLI$L)Llj ͘I9 Sɜ85σ]Rߠ~xȆ\wnYJ5XJ@JH }FHK R|M*][/%2՟6Ul-vCQjif2q2d2LӃ!4`2$i,~f7!{}Vc'6zМG1>7 .UBNqOCx K&8C֩I\gedOpyuzs;߳8sdћ`Wsp}n{pྍ7IH`l$إNJt(.@ړH tRAr9sI i Lghy T~~{l[ Iυ1 Ÿ8a-h0LsZ{bBHRm7+>S46`=l!ՇpkCPdMuiNe(b|wjeV<ԥTj _KUW_0 KXf=˟^ys5U/,vp` CPoY.c=(=LK]JX9 ϥцgb$ȁfIN,3&震"G{_gA[=d@ 62 cVDO `Òy.*xNό! WۋW~f v -9:G RR3MPe]'`)fz8K1:5;%>4 uNfFAuo8-(dlL%pJzKE[NO `e.Dρ\I 仂r2^uo'\,M}1W f;ktW­?nvrRe0evm2̨:Xw[2ZϨaASJ\Tn}_>&%tG$$2S" Yhn;J%0ib6;VL0gzS6n3_#% f8gѷ{GqWif.X.DO,,ErE.Rc<s GF\sF)ZO )rtR27?7RUU vrg{-a?UkfBP%ls]2DÌ39};=1cI5(cFSL K@ˌ=k0pŌ͐v^̐X%Kg5׫]g>rDz1E E%xNg4L̙t$eBIjY]1g5mWUussUh iH{dX 8Y|smgn 9[9C"tRL7E4S LesccP.S갮)LNDtS~s'f7@`r`{v}>۾(C;yB%`%=yJ@)r$_yl,C#Xą{ hIQ(,S,%˔!yxCcbsx:-cw* /./ S1p.Kʧ%3p$-8s]*Kr8lՋ|P8'ƬC…A)`u4=L&3Ww$I+u* c>T@7d}DQ&}0wj| 5\.7a ul9 b7-3ś8g'Ȃ=¯"D'*x?}z~ug_o|]UIi9Co;te `x9Q}%!fi*j̍Nzs/}fʛ?O #Ρo׏>> DtP/KVCӃdj k-fud33~uenn1!Y1HVqq Au=\00$_@ I\tvRe=J$vT/_zDb(E*xB %lByG_%9Tf@$4.25j+c+7"FS gzUS_72M8ؾE~{PVڥ,:yvv6`5=˔qb o T#ۤ|xl1aMg{cET$0Yb!>Pϲ9 =,Ya[*5HNjHcI4pZŞmzfC\XSEBl#701W؁I2M,T]R$vW2Hv&R7O닗_ 0zMΗ9خCh:L 0W uM]b$ˉdfV`)Yq_w/FӟI@.V+:iQX?-N "%"la!)XbͷǮ ׸k:q"b%Ų&=1|I s@I) bw̜Cv* ϛ߹wƧ-"hKn=5C0 \r8=HzЌf?\'4$f|;7,Y#iyE7tt`8D{#iW7@ -V0$ >G^"51)qN]/~.0:L4mX[0VD@ Qj(K( @ս7o}׿2~!x>)!ɔr@AZ 8K?x:Ԭ.ț",$|rEÒIR:!#>+kPSP"':NN6 > `!]D̅%S2bdGpUUw*s0ʦ %rHd؟ФpY|ӎhLB)%WKxA1r=%x?wܷApڥ̘eG̾ﱲ_,~dg)7`y pHLl`H\(y+ A@}QH 3!搤:@`Eg`,oNθPoS|ԋuvByCB~bS+ hR`J )1` ITo&5~GLuK!J@lߡ߭:Fre'%HҡHZP<[sLw>1/L7>kP=qrdesuA%H"$9}=>K^&`n%%րzuk7_ʳA h=&2@ל 9y Kb$rP,mJ9?\լ:~Ay< C̒ʊB m¡P" ]=C{C2K( < .n21+dSC1odD/EL#]Q AǨ*|*}"< XƼHC٘pd:{ro)~cXgP (ٖ&xV $S;ˠ\JMB7+>?{?+.uKtS~(/ڣ\ .*CG]*bX]vP9[cAk )z4 ݀V 3AY4jK41ϔkf)>].˓p\fug}Y3m[cϘhjDtob,yz퐾C]<$R\N$sꗦ'q?xPC}2, 3>(R@4V ٙغT϶`Ù1 d#RA8@3wfPJBxw,9žȵ[Wߦs%g(rȡ$$R&%H8pdq8 __wW-%JE3CrfzzUZᇵޑ"2sU5U޵/E|Ag;nϼܿ01I;[CmNѝ2?}#Gk"AIaAx-pJ,MQ(|_fs~sli!7xHֳ4d%YfzjӰ.-7# >zo-.ks/b㍨άtsoR9kOO~dnK>M)&s%:h ݴ:Dm@S,qew;lqF 3p0N3nLG.s}>6`Qy?`L`bLa.CڶH*/`x;!.; }|+\ G8y 8\%#v.`Y9 Ԓ,M^D' 6 2XjS|Pǯi_(=lst폛?{yb+5]sޗQ\_䝫vs&ιlrJ|LK (V7_,Wj?0|?;ObBeZSR:r {7^,(M3zN:Ԕ땓'xvxw8=&'5iES&qc=ay&y$ =p A+cc#e 2pii0M\9 gۡkoN44M([)`Q5M$W l>"܆jxϜ%[zO'乲̨qWVϽo@R8BLĹ ޣ[<oNI$%C*,ZSE)D>/vm'%,(^sR 3,g!߃ chXC2 ] oqG<""qD!J̨ohjc\,KsDu YkʹVY4?VovpC*΁K@4猦@P85=k HvJDtkq$oLs_b7gNgOЪ(nLx]Ŵx1x>tJVuRNyFR!b sB9#Mŭ IDATAT~Ay |\!o"ppHϓrIWb@Bk}*8tyqm8<5^u؜7(]x2fMeI@+hlj,ڨ2zKo%N^?ػ |S_ѝ=١Lx35r)hSM9\0À0xG2RN{2HI,Gu^!rؖ#g7`bp0%YGD ִ({v!͒ T;'hQC@4Ai{+/]7H8k*ٝ=F8}$LfZǔW:/;\ ,&OPԋU<&3> uECkPUM9MJh"p5p9Ee{D3اF"l^>/tWpLUOm"͸AC5BJ^P9w8**pGKHr5>8|_wտp;3z2!TQ,S\"L9n7~$u_>p^h D-~ %[nb&1|Ds\?u>Js"SMЗDxpcʞ@֠F^d Ur1/Hǒ^œfR:sJy]!XO5|8w,Ȓrk%'s4W_:ڻzEm\#p+(3Vo5u=oTF[dN"T~]:l oG] I֤9|N* s6D%p1$4O46'Q+\^9p-QhE&$cDֺQ>iZ9!]}J)HDa''EOmߤRL]eYǧ6^,d3^&Lt^{|O5 s-9NaeKm"?\F61'ga; ;͔,!nB{1á44QIkΉ<%k˧4TA J\rF~A'_|#H@>n2=~YLYαSɔ6oi !k=qY1pff >{9:^(85B| fiϴgөyoD9-܀r;m07vVs$z:9;b蚢i:_vɏeQZ,S<4rv̭^BTB˺3Y9\ ){{מwDt| УLh@>vh15OGTXjy:'yҺåi/g*a:<>)N[i~y|nz}Y;<퀇q}継IEh3\$q!wRsm#x?asQGPEZCYeNrq4kk/Kۭv(OqdLr8zӿ얫/KY&T]P4RRsuhЖ61t-9\! FxL(ktmMJ]89yg-'Aq#7@8Dq%q_q 6x\պggsѬwj7$sF<0*gU=\HUW#GP?ruJ?JnG˽?옘էʛ3)ط%6ƢJ$W)ieM3>M;IhH< oqJvy#lxim*#W4V^?%Ɵp۞ȱ>#60KahSi!i(OӾ o~s6WHn (.sεS!FMd]Sp25NC[)t5 ߎc:83n90G3]w%h i&Ӯy|j^tu2x"`6ǩ4V 5S VJ%ji>7>)W*$/ Stx}Q<.-B,+%62Xjfmr{,hypT-ڨ t6 ;sC :AYE:Ib Y{kMZ)*ՄFAbܿxqG8ciY_bAGGXhHSN\$Ș9kq$@8f-Y"фFo@F?q{σ|ZPz(}m!: άJ1ux[D#dMp =WA CA\sE` ^\y)׷yZ{ ` ;T'%n7_yyKhԢ>-ЉP-4X/ɍ9J xVГq _ơ0;÷ i\r,I'P9ʠYs{y%p;r~HoO`A_vK|Nȥ2ʟ5\4ÿ]^ U-z0[3mYWyy_sC~`WlK:A78y:{(oSu0yޜ \fH.#PepPy| p#!hSA $tkh)tT HZ-9>zNIAYЗZ3pw\|K3|yf\"/(Goy3 @ܞ 4_+uySpL.YA4DzVKӂT\ gB|5*m/;ܮ'O )Ş1-’s GG,sb[N]?a3<]-i*d1:@-txGk9&ӋqM6hjQ? ֗8_0Up!LxF4<iZ.|SOjN ΐYVJ JV}f#3 @]#scΓŖ28#+dad3^wCBEQ%a$'4T~B\ˡPfQG#Op $UޠOXԈ& >w5Ku+<<,ڨ` ح#rN("%-x\2*͙F#S4JŵdvQ}D˜= Dofj{!Ս2 i:,UY;s}nKY'|nW܄3 9,Cox [=!MWgiFM")> %ϻ%6}5Tp>f߻եg(f.hlӌR-͒ӈ4^WIZZPzbwW5v\F?ʢʌ\n D4QGt9ԐCLJʦu/oUR;5kw6`|o5@7wz Ay=' i?'_=ny 9X!h < :L'VG «n׹;fJmX#Gr9n/F4 t-XVq) /*@<]f24s2~M9g\l! &ҡ[Wv!9L[َy0O{*1JdCK~pEfWowzfвX h ]ZipJSzY%PsVC,^D%9q{ܥ0/ ^uUkWXE(߱wlp ާV|kJd@9mέ=A/f=9~wUȓCTs繀JY WKIgg|a/ee2~?a=L/Nԕ= c.ST7 !C+.lUx8vO߁ǺBU-qH; CVn}vhJ`u p @XPrY2T`@-+.Z&/%N)՗}-bhpɚU2Fky|~\N+nui|'#"[6g`@5XT4k"pC+Iڸ muSo;yV%ˣ,gvB(s׭AcT~,f!0:?w (Q{R ]*)|[.F5b\-np?g O[A(:eVjw@ŧܪ$&GudC~-3F'%c e k m`$K2RΈ%~-fKFys =\ȐNjgm@^ da+!t@榫_>ɱ}T,Sᨳ/8,kMO&s |, B%3ApW@I2RmR:D %)o>v□:N~.@xxZecZU*-̡a[_]5%-]Zq;@_`)Up5v*aeJLs[gcL,_^08mMƥ"2ٮ)em#OE"ͽx3,G?L=5z\Ejs\fn|NYl`enóLA ./VL$R_(fQCqߤ=,3G13nw\k&8e6vǟ)iwUÙ+ࡠsMuTZ YFe tD`Z.>ފ漸Z }1x4}4A 1)fZ zeAL0hwdmܮ#x(K.P8 k(2\#}paAdfe-M B` 0^Pմyend0eZvz,(+j]Nʽ#R%}\~s<]2-ӞqD~W@^쇵R8L^:^`2C7@ʌ5H2eݦ R(sBGKE/Q<><6{>s]l'uSPkj<U^bGuhYۅmOTp&|&)H&A&0nRv|;|puVk | >$WK~DЮ>65RՐ^ڻ |$+HJ\c;Qd@sm  L矏5R0/9rmp~@,Qᴓ2%]y[7b ^ d(P3ܬ;tTpmdmObt+I0yBaEruprl,w 'bRolkm`/G8f6I:Wk&2;t{Nv\|^.hÌ|T1$i t N~t 0.G]>٥`u *kҞ>14="o^^kFa͑ƿj2-!LxW n~8D7Ϗꨎbt; >ְ'edR &Br?:55U25g)!OuCǡôG4tBuCԼ*Vt|(j}N`(2 c_=XKA ~(f߀ncO ?ϔ7axux]mC{%Qs pR[k/$WwiJbS!6"qRr- ] *Izt l#g}0 -'$$k`UZdy9)ط{73v`8rH$p[1do @!\qA3˥}uW@-F4Nv0fn9хZ=t`%FiZOx>08# j#ųԚ巔f׸tWx$ `:3i{%%4%\eH|wjƴP{-oyi>&x5r#M4PUg:R' 3țshCi&4i*Zi-M$n0΢C,ScWMbfPxc4d5Q؁% pIE%>$մQD3xM]#\ ;ޘ\#/4wg&N膫Lr<+hj9lY~ 5 RCȖk'Z!r5Rɜ(9H, %h|U"/h!)%:BKKΥYL@Q;[c#(&9u+ׂ4K2|Ao!jzy&i^(=0\4SfofrrH)|S `̫>/Nn=_ Ks3 -mލ `Ƴ>`_A!b6Ts;5){Fs**m{ Db;vB~=xNQq?"PGԎ@1xxNog;sΡr=d޺c\Kx343rFF i~,9?7_XΖ2N6i c̭yFT"O&SIZT;ua:o[xseVp,YYhBMi}ӈ OMZ)L'%EDNl7F [?oU3?v!F buCrh_M5t9W컏b︂vFݤfqٮ )4sȠNKV?}A:6Fi{6s:ltkZ)VM#S[OyR zkOM҅r .8$ⓙ6mWRE "TK5os1gLiVSRY KlV4:gjۛn4F8#ee/G1rFQ- @ͮi)GnK69@g!!'@nTKClSs H ژ"k3 C`jӬpf1[BPJZ˜w(X%I{|_(.* Դsv IDAT qt.H[ΛxKqUC ­ǿT%`s6)Ryr=t s%k|! zƍ2H3ԚB"Ҥ YVJ$34EՊr, v@G23h4`E(3 C,"M:?%)#c @8ѼBEMUos@MY(ς;%%Kt`SN) 6' t,Q&ٝ>5ixu5Ơ$w7ؓ&0 (kH^d*0-2M JeLjS4LKS5Rƛ19-M!G#S xC=dȦ.jkEI@븎#pc̊P;_~Z7gk Q@S28UEYy\UFq39(A-KN67֠N]o\:@WyZb`{-pJҹ%84`ãc2q+ ,qikE\Ϝj);_O}D 1!i5nD0#E!%ό[`ʣ|+%uGD9*zH[C'"D80Umj1FQaAZ&xn_SSrd@3 Fm5BV84 ME Jyڋ,+ /B-57\<3]@lhggY'l<'.cTfBLrB}"|:̷iѿdmBh@z[=)DqA) zыב3M/;bqK+^{[+y)Sd#g:o Aq `(K%@I^]rνC+л_]Z髅&E̸$Vp3nӮ6XRb i EsL,mj9VeU?N'd"〇J Jd`'=&l 5 )kPطRJlf, op12h/d.%ѝ: и9^`V!kw7OھHR)R 6͆aPI||~zF+OQ Rc5g~J|-m8'F9IȦ)E&:Mm0Zp1mR }Z>Dؚ+GCKL^lq)FsaA;PiƨX.׈2syIktU w}L 01C%@J4 "\ci9XĮbiꋴk|-5"-o{ljj`2[Sr9IϭFp!ԽHV%" BOT8T<5'pQ -:pEɠB߿apNOsȣ>d6ұ9=O% `5h+ #; 3eM yZ>%GyF\8r%e2N`0PMyD'F".28r͕SYep.-H&y7&ES=4ij|\7#xH•^YA<)J9;-kle4FG+1Ѐ\Np⤜R!U)}h*Kuc'ms%ud]\"Z72=[k:F~.3y\ύ e1s@ۮ3t7="昮'fq ]kR60ԪNcUFKv.I?V:o>,\ ZͦV/2XA~´; ɿ9`0l8*" ScC$@bD2a3YۦusԈA%5բ jڴ?= _]hR6s9.ۼTJ S[jpᄹ8͋L?kN M˅V4 0s'֜#=W [ȷ[= qW*0vAW{Z#Zh$N "4 K(E"`vT,얫S rAZkfnH~!#p'H7im-Ԓc]~/So%o{v@ϫqf7J$q&m@|#) FQw)P5~N ArkT-g<Ů5נ0aNhfExEiFQs3}(YLc4&p5쬆4(%.LE,өiPW,C&Xs`rHJUmh]|j<3Uvjry9ԚZ | ~APíz=A"tJE(f4N.R6ךChķ25.RKzZ3 As#J?0%;9u^дR"+b>=Ԉ'?5Ij}J=WƃctL2'O|B!is[W.ׂEiťZ_?㮿k0;D+gz;S:+hS Psjq&:e_di9)zA"CJ>)jq#Xr鸋u`.P./p׮ .`BY%Lz3搓''+4_c`]-CZ7N`]%"2MKi }"zip 5V&[4` TWϡsN9stˎqOk F #xZ̢(UQ\C26% M2a(3=B9!pƆ$o>נbqU @`eHJe0@CqQps3s3ǡΩu|_ǏƖKM_f5YVt̽A?Y!ڥ5%<ڍXq5,Ol $Qr[7ss׶Y)g%WLmeNl$J$+k/Րil)j"#c#GSd؂9.D((D!--FhaP5r>H3ФôGk+ ry7e.n6+)sn<7@;GLy@=7R@Ij5whҒI*ȌG,p߿~nZ~-g4ukP֚:kF hkdM׊5 &wl #̛@:""5k6 l7GLn 9c5AxLRw!inlŘg9]s^ҤD^ŲJ>xf9q~D]wƎ̘Wgɖ?_#< Cyxk|O+/,KK#KBckd*[5=0HF:C7ѐUΰ,Q]HunX8]9Y G!A^t*hܞ ]MWe6JjVSwS] KS\7PŒ<o6Hؐ ϿLn{i>͜8X;"y2dk:SJ@%8Z)7N8twB{F߷Dj}K堠Fe,dq0dV%3;I IDAT*AShҠo*>V-Tjw0դOi[Y\`^&Ml :&kauBn{,c:Lr[Dv.[.25  /DЛ@ Bת;, aC<Z0Df1tM׃U.oȻ<)OZx,]&Y`95Պ]s9\&.TM: eefkFq`jvp1pty,0Mi;Kw {88э p4Ꞿ.)@G\%KXԡ9ږ6bL3SDcXɯnyx Ʉ0T,RZc [Xkj$bn/5.BR gՁ?FHr)Ʌ9:%ڶsk.j8Ee~Y;翩uYCڃih+D#.,1R9P j昢Jrrgƻ;䃥Br$Ivp3ʉJxJ4^ %wR m9s QsSv32aӎRq䐏Ffr^@`Ȕ[8wHc5<-uck ,lp&`{i)j C\GIs=;Wb9BpB,2e='RwԈ\9YO8 Gpf!γ;x?HJn%8fg RĒ,a+%jQ=2 GjWPhwؑ/S:`<?ă~L:{)(R)-3ȵ^b~ 3։J[)=Kx s6Hh"]7s\8"7uZ;w]P@NYAr#(@jԌ=Xc~ddYğ`VGDӐf~8-vy=N#tjOo@r#"(iZ vh3 F!!/fjI]yG{Pù_Ģai=.9)3m?*z7g As8Ů ԹI2FQ˔/Nf(2ЅF0"GW= N@L) Dׇ8;wRy]Hh&~kyz1o֜Xbg8ep8kxA i5ʺ 25] ժ55)z941_%$`h"Ga;#t{U '߸gÿý85NSRY(9&[H V ?U&\+4rBw?O]pFۑDf9Lt V..(J+"JN2Hq0iWBNTrӰ][~9Vq%4x- 髪lof.93]"}rH]FԱR_57}\*ܹ5-My\Pݜ%x^8{r!xN9 vC~ hd鑛elZbO>9L",> 8yFT"&sʟrERnkfkD#Gy 'Ew`ɄvmD`aj$,X!.nB@DEL!'XɚAzcNV-vEs8b#sGw8t,XJV"E7LFjG 8)?xKyTA1Mg`Z+ !bA^_qԸ anCZR4GsP s2Kb]z]ӁM0wȌjH7J*RʊTSa5'ͨ H8)_!ݐ#/VV$٣MwZ+t}RO_'/Q LO[9wqm00mc ,fy&7FC ϓj[vwO+Ovoi~6c$L'M& ζsJB[;5_>xdh 0+wݻj@XZfaSe JˠhA@t"Ֆ|SdS=^=8t}NU_czCȔ;8kQ^w8a(ucYoygyOl];ۧV+4I7שeM4x"Ɩ1=̌[o̒VzKhAM΄&!I"u JJGZڭ6@iR]Nkr%kUi!~cAN㭷Uwt9rCbIĘs w ty,ۚ]ӆGDxBQ`|5;WyO/_x@ A^iޏ Ԓ /kI-ͽGȘ'(>"pv$6,}3sNYR 2`Snn@ 8*kiEfCdh?d@y8M-C#]RzW e9Ç(Ӊcш(c+`K1@٬Y u{SR^f#› \fs:`A=$O9p `sр9isrkSgWi}u*ŵt\?{o$Kz]eVu{ H"%6eڢI&MS,;#C$ҔMAs f -ݵewCuַedFttw-YY<{"{փW|ggfDk"Q \`N9{ {z7 "ZNTȝc($snx. wE„9&*j1t=~vɞBrYG#|c&`~U`Bm:v1@sΰ/'iqxB>ʔ-vZB[>Uq%_g?ҝwX.ϿHEH׬3 /M1%gYƩ[y:H'jTok&%v8[́E4i{ jQ .%iss'΂՛K9 @MFv&kޚ%Nh/sФo) tt; !L \ӯHsз@J1MD`>|.5Ssx9YL^JG+c>X ]1R N@np˻i?;Lӹ20Pnp׉ǀӔ3Ի,֛+Mq,d{M/? U?%n+ DcB(m;ot;({|ɵG@ont|_ZS^; %k|  qHai C?-~r.=&}S)ތO0͊7x p>W8~8V~2$/ @:/:=79+';EO ۯL(B^}JV|U~NX|Q~(9~P:wB?ϠJ?˼ˋ/H ָ hPtlZ7'GĘe$fFL1.{LCK%k:g:rDѴeY DBhU sqpظ/knt2'a塑y<"UumYNNdzѰ_Pd cs~Jle ;?iDvO`5OPn>qZ /%|DZ,l.Ng+ɵ* _D{#j=-ômߢ+|յXs4OEtIk$P0Šş;|ZtFd.C>OH{yP?sJLg <`:"k76ʳ,˔ %}FTMsDT7㽹賓S}֠cM!? γ?x~.Y]Lȗuap+QM[pQmSJ7 b Op88(636ݗ| _C?/+d$@5͜EU׼(hTЧ\4n1aGK;Sm[]iґfqMD IDATY [DqJsvYhMYIr#l>_@3j 3J7OB,.+ hkЊB5Ո%OSpU=*_vsWc9k|mU?H{թᅪahô,(h[ʢLHdf,aCDjԲ]sdrDx g[襖irX8^Mt,GR]a5JӐPKKl3g3x6}x8#e-g HF8#4E8CyP׎$LBfu Pcԯ=9!.ʎt D0'PJрG[ ۲9 c$/J}7`2w&9L|Ԁi:gR-fJL%ϻf q[\3rրgiF wHYO6yh?tnu= @ec>I"(n1~ o$4!$靑O F+|V~V6'p) d'8dO~OΧRr.+7+ŧᰆij1[}NSG뱔ΖpvxS2وʛG~Wڙ x((fp;18rA;K*{yG` '4ͪQ;lRf,S:׌? P0i{xSB\nxohjBW05~K0 ۶:jWk(=~I=Ÿ.D/j tYt0†Awb0mSP gszJ#=~Cr>bj@'N; ӭ 6f2x0St-pg,Zu Lm?$ZGOah5CZ\yQ0?ܼ?t8wy>{b+:mig0<S;8䀲=RPB =$u#^#:&-1O5b j?v}%"c"n(ꛩ}.c=ނåCy!#k:75||4NN j#2ÚL0WBxWv;NJ ,ˊROBګkw߆6$ֲ-|Iv$b;PM6z༘Gd厠/zT"~"yOi9B(S#2. ,WE6N"r{Wn׉kEs$aB;q?'4⾘R.}(8Ŭߪ|ɇCF Մa+DL%#a)rmUOq~Fߴ:0"9HZ=?J%RY#`nulfg DCsz@=~m= v8w8*ADNȱ*͔6 =NDoʆBg2އ0CB=wV `W%R%55T|1\m$} k'@d_Yq#$q⑬D@@ _XWsK;إv:~,%P >a#o1bs`ʁeV9yN)0Ț/ 5%;m~d75l L+qM^!ka36րe̘(*>%vvX`eASv.*ѳA@Ik(9 - 'YpCaxod>oY$sf`c-o~BfwuG0|D(~k,yzf[}f)$WJE ɀZ6.0O.znEMw{ 0v 5ǀW.SA1 K%J)k(? ԛ*?$٩,j16H_L9YY%n&vbV=҂gU13~!.Yd`(.Z UjwApgp[dy>Qv1{g L4"jD~dPJN}ɘo&"١\CTMF&ya /0<ðv8{k!{b98Q385R/{ U;6oPްN R\Ӟ*n3M{Pg ݁qr]~S{P|G{t\i=l³ЫNO1D6/JirYnn)SM`ᏺ-w!<8ݻvwyX50orF9AĆ 5N]DX}mH >r,M}Y<eAAHcc`0B&N';4m\>)^2 @\ qͱݲq2L{s ծFx#uT5pgC)kvGBcHLvI9+&DU Z#8B[vx] Z-ފANᾯ7`ڱ t:^uʶMπɟm!55|R-d=k2ׅF1a~yζМZCn@ĵ"nO8E#ԾBjuz| ?;:qvq H542d%b9woT(bH)/9$Vd/u)MNAkp׆=D;~R˴j140=e9,F$4=eEB%KdG=g7a&P˝MA 4W^k/*Nu4=] L3hhEu,&D 臃48iBuʪBЬdvQۿ8#x_/k+p@ފ+Μ2͘cZ:3&OY#G 3I>SCj}G.N==~ DXք乚Xz]H.jPq=܂ԎͲ>oSi9Q Ӊivy[Ci s}IBx`` yA [5Fش^VZĭN)gJ;z4-z'1,|*4/={ c*tCiOq:MM;m1ILAB=>h8?Uo_0SL27vQWd٥#0a<ӧ䏣P' erY:v"̕shEl3͹&rfC5m5N-m$3ҡ VƷZzJսrFEzy ϓ` `+wAhB,k.&t^'n*tMl) <?௴c-eF*+%|^D1fF=29xFh xֹBX ќJB[\ɈJ&,x^tE86)|j N'M i$﫝k/js7uǏz(b'pL%̙zapL9tH`:Z# E+oSh_;NsU(R[̣ 0x*#|O)B\[ڛAq &~9ny$fC< K SzX\Qrh S3ksKLy}I"%/Ae|g`0]h߄IF$:̉y>@]=W48#xgMuޣi4M3JHՕ Q*'cuE0z/x(::۫z =vif`rZb6s)$xG7Dg<υ8Iě{ȹP}CLSh={L}2YÄbmt1^Rf*/ZjTbԖ)[Qn 'xw\C ӺM]kwӟsk wV+hoZYuYR ,U)д 356|-JS@m0U(sbUU TH21 D0ҡNBFdj@j0ׅ'F8`:"\k{S9L1MgGlS.a PN}GYܞx=9!obchiLC9@`|,$lkiz.tnu!5]iV׎.IüTxΧY1ۣm=t @:r9Zu|M8\r sIҺKls<N` {÷xrbEܞTMG 6 OP}hؙX@B~\\f"r4$As&vJAi ]@ `AdO:Ao m U~ \s F.]AqL%h7}N$Հ` sa%vYss)9KܹՍoib XS"Pk\iYaI{_#/5r07 ~vȗ4a`9攫-nW[5cvI`L̳^"k3?oYaDrtJr n'k;fI#Ia 0R&6.b1ۡ/תWϵ?|[h&`GWh]v6 əgt.gPY Cf}k(wh&LΣD^ L1Θ!br.:X0@kTlݐ<%xv:Ot\K걓6ffso.vN?NǚNuC5lfsE9XЩIXc,S3'Wr9;V^~ݵ8f|.r%(^ϣ-u %|:o-z[]2FRG'humM))3w"nF8zkL'] vHayS)O؛~?k3i!V6s93ŴRd-ՄsXmIoNSp^b%ˠ<9>wJ̵[Hy| ȵ&_X:w(e0Y;zO?vŐN͜X>)ДL+&ڬ&ҹ"wڀ:Q k| sB)6WùKs“/S!6ܭISbsEw{Rwjș-gwLhޱlb$ oBdSAz&Kp{G!G 4놴Qi{~5B\_Ь112Ihf69A ^ unkVt1T]jʕ~rkj؉kWuN9`ì,Q*i4'\WMnRp#`J̅ۥ;e9C^nx㼎ٛu##6YPGpI Kg F[$;}f.# :E ]H;/aN{I]'}VeH'iƻ kB5k4BskDXޣ%Kz*#V4ج1eW MY:y =4eȹD,Xd 8={\>O4kK6TY3Ozz'3܆2,Y27ݑuk:Z t?b)vX9P˅1Fh';M;$нY@;q[D$3;zJzG # ,iKJ.aڋq^^Y'=/F.SJIf+_ckYO "}E k]%#;na#vkh9w&:M&rG$iVz{`1ORR$h9+ c ޥl=a;vwz_:L1ze*dwx${N3+}ƆB~S # .s 0(UKa@Ž䌤}mhi-To \LVa@kB%~Y nW8۱J//h*1{m mG}Vp7 >z4}y'ΉT8p=ekŨ[Hunq4!P(Է4s?&2cB5 D6X/L8ޚL{LlST-3ơàZ&:ɍIfQ5V)fUR 0˔/eUZ}3ǦQN٥] ֥ @Au6™v6:zVC(`8atL[Zԣ.* j-05Tqfl:qf=dWɲ6̭ Cלyݞ~x߰;cխ 1`wYq-^4*)VZ;+a#c@!͏p1zٶa94gF&I>wH(ט-&z M'&>$"ޘYЬTHK&IDDZ]20 s.3/Hs '^:8JՕFѦ\1t: {kXש:Jez/K+5*$sgNG|?9E];>oнq)& "h1 {5$AP>;]}C!m xr83BhHZfΕ}чVL %2s¸ &Hǎ+UfuRU  ҴG$ng=G{`3JF5(oj1fu aA&љ*s`7$yB6*L$Ė]$$R#;DB#Cdf?̾3'{aK:xj37PtpF\# _ IDAT]RTZu~ ^9)\?G<]4 {3z..b3 !vyM@ ώY{>!Πm QS&&; 7{X'{#)q@Td1Nɶ^$D*|ag6}tmdu!/e(9npziU=C|*$fQ3xd%&%Әx8w`Y˙7ao#/v2 )2qO1uY΄V^7R-/9Ӿa+PX*G@#Ns ;8ra<:ugٙ;eխ~U9.gBVĭK"r+CP9zOF~CuzUT= (Jq^Λ0ŘKK &,,9S> tG5&1 uG0cW y PWiht>jc33\L_Ey`eЍh0v[}"I&o2VX"IY#~HqN]GhbU7No z6Umn5# ;61ʺ oۼ Fc a}SI`Z&J I'{:RK4_vЬ-Cl=VZtrN6?e0z؁mZ򑋬$`$M@2]č3 T^/[> 㪎y[(jɅ&DjL37TGw 3g';k0{Br>wBC&Z:&q?7Tz#@>2K4(HYلǙyK'GKx7a`A\+HML}ygG994YL/$v}0SYK@2&V62IжHXh5/1>g|*KsDH:>VcLV;{'(Jf'{ >$;=ǩ@]ԙ7y y(UY:QKD s8 S. 53L]ZV'3,^u c}I?|bkXk9$@АQĶe${3:%d΀<[) [bAk00C@:CԺ0͏qf!wpΝ=\Hd:Hؾl lm*JZɄHv\[,؍g0Ѿ֖ H|;<[#pLs!;y0y CxeM<;|s|;cI 8h&bZ:AxlE5g>{! l'PJ&}fYC ˍu2H,6Ho3܈j.KMMXôz)7f6S3wnBu7lެđq2 $- `p0c0-'ZV8"@:Od%'NXM"b Yϴ^MB7CŚrrHOFr)\~H8|{k| Qzϓ%鳸u0oKRLۛ)6% L]1s&hz ,\[i]3\5Z sW3 ҶB&r "[ 0DĀt?%U;9MW z}1$[sG9kԹY(p iߐ<1 HHLJW.cP8a5\`!͌1h(Gb&sEOaa6k"aV2\ .nP>l$Q m+uB23BAkK@H׋:05eA\&Ǒ=NS#C kN pOǥye5%L a+鞩E3gAqd#)vؙc͌3QY0&;zCz0#^T,d 8`cD{[svH\iKhlX#`Bb #*/ s!z*IH%PIeFl֛NIw2!2#Fc;``#l2v._gY*UANMX!ʬ~ՈsOsOyyH+.T{dfvIJli^kklO"z4X[F31Ƞanq Oq 1L`jRz-\̱, 0P-q抬c*f 2W ;𕇸 J@0G㍱Ԓl93J|\&OHMۊ -0̚"0;D fCy(! '>#th 57mtǝ.rFDrɓ\@ڱلtΊ o8SׄNF ];pH2fRMkG4 & svCzEّV>/0\S2vGLFC4xa8k̔Eۆǜǂ\xm{"z\: =&8D>r2I tBOffJ7MLr}hl>m:Ȇ-h N$)}fP*ɵ>b7i&!]5RA|ސe=YS[ @'FǴ2&+X7TMm$*䍘6b0}QҧܑbVlaI ﵟ̒C]= ΕqT&2t\` F Vr-ޜ>q\o , ǒ VYm6p8wxM:Fl5ד9`xà7}H(r@=dD a)'R]vƏm$֛r~c)&D<"EqSed/Qr'!_@1"f[R+NiwZhlpn~ѐnՙ0A|P',ƕ2ȱ9Ee0fnkD5@0uA 2 L*s {L2;eb irNf9NV3;?6a ?杗қRfsy00M9bl#ǖ^R7&>gzp6f|FᆒR%FFuRhƑ2FeqY䜀ty0Z#Cl,%gf yѾ!if"V%t`MŴ8/doXcO`lir`q8d"}a匂sX,b&%M3ruخ,ڱf\ ps00$}5Nq fcaWG*B|4= "5eBwy[` >kCh~A̠Źߥը46cw +i$@F-ޟ s]C)'Y|K̏mdwP.kxniqрE#}Ƴks%wAFۏ9L m6AEފ+\gF^ 1֑J̥B;Z?$@SI'axpGǍ'Ez<6]>p'8%rz'pNh)°CzC,_q h%` ziIҁ#(N䮤nY$\bHJ1RVY18S=Uk|:^V*T]" '@.f0ct}e(65cr05}xߓr pĩ ylsi>ijò1@u]4+dOc)AdA!5̺HaWG3%E#`ua؞ȍ h `0mf5P L[iP3,7MY~6u[xctFc,I,3Ceo5%58v0[#oGqhE[?-1ǂ,zj|NY'`~H x^Ѷ[=жpe^ggg (Z ]n5e=0웽"s%0 <c:=6`4`{Awh"!W-J,Gz,Lf,{.HXZ-]ag;ϫ#rwܰy)]IüBVKf@P#Tz=邎=IZ_he ltFF-1$v2qpi1MF)737Ŵ-63, h~켔ʵjN$z@,}9&H{!hzL[ ].p;ψt&ۼ 7Y73Hܘ04}qݡ3'H!x詝 þp|cE逓SW9\}<$}3zriYDd\ s uMNcBbV0-/i|!I h,H(+_{aX0&h;L@P֙`0]D!{c@'=Xqb,Wo.8<+%'3 lc+LMVvڬr}VАQ?1z\@?b.IZ[[[dgfBeo-C6#02Fo0-1 slB~iViipAXic@"!|K/7qC 3{2a>#ޚϲcn.;{s\/|-3gν c6nX`}-eiIyIQ07]T%n0@pp ՞$ 5Iubd ;xÐ;za<vK/Y@bc3Jb$@!`G W%)T"`G:+L:C'FBe#i%{g=xM7|c DŽffʳ}L{r3JB.ԃ1momGzd \@MeP/k:\C!uN0MZxvBm$.n0~I!(pr&: Sz_<)+ZOX z|C̓5ǠYm9w`':)N˲&,Zj/p!5zLng[;,l&0%EAki=1ܠYrׇ}\Tֳ#n)} mz;.H mptޏuMrgקPYL0D[.,.# IDATp4&,"(hp}7K\6RO9N-<ۆ!)8e;ZϊRWdP?TZ/PXIRޑ>玞ߒb}>i1eY@sY`֜NP$o3Î!}k4 q@cSGT 1aڕm0 iG t15m1Ăh ;tCͩ'ni9HCa4ŴҀH3080uB}BԤS` ; qĐ93ppnI|/( eF1ulN1cڷ e/Ӆ=.,2G p@Y䐽1(k`# \ٙ+alRZm+L3)ba˲TD9jm ·!+XdVDsf;L6.˲,,zP\/:ZܥorY\O|q@"H!.˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,˲,_,Ke,Gy(˲沼(w|D4f WRg,r0jYޜs*S^)aY}^ gsS۝,,w>z@lX H#53zr0 `LeY7 %\eM" ( IS8fB\(_Z,LsYFbd32R#]쓜lXXZW<޵8'd/=Wb)=5<673^_+, 沼PpLDKղT&4t-hj%^Mh8Jdzbd>_+F7twKfv6M|`Y/LsY>tJav $wJ1KxJ^csK]/1#E!NJRC cʵReY@؟,yѤ\J!rdd sգXq %i#5os kB՚}i,R9U]YFsYQ6M3f@+ Z `S*B^{SȱZZXkcYaY(%^B:k]9: 6g_(oKsc)Q5ٰ 2n b؍&gcsGb.diaˍK]X&Q=G N (^~s2@ kJj ujAI1WeY@#g5UOؠ*:wXta4P_~B s`NĴZ|fеؾ9%Kin=*s)SZ@gsj1sOs]M!S+GsJ1TbFlI$iwÜ`i\|iU.<*9y$dK/1B&,.Idܥ]L07o[:عgH ,]vA5ucfs`#cksC.|99UFuka)":dcFͰ*s=.s,I*]j+zNxsC.+S&P&z>jBS:n ԊOR9sYJbQ !|3b-L T Dޗ+L$K3#U{M!=S\.Nң~X.f|OXRz]3M~l-`:ˏjo1tH'm3;;rۛr=G݈ \:S(u3ILTڂ` ,2) ;'O4v2mG7)F>{J%U@,žJ#^gg,3r ;PC 1MMyAEA+Mos`w)\/ХGi }V=CkTtؤJjzKeLj 5=h<7TV cCrS+xTmiTF"lƄӲv&"#4'RX}Wt"R>wLiٹ6A͵D\uZ@%SLͽS#)!߹;ą KvlhWa+ cF" ZE1)TT[G;7jB]=v3*ԗ^sr[,u`ʠϙ=fʰZid@C2Ʈ"Ь׬@\zY:Ad*LΕ#ZM֚n縸ϱ»|mNy|sA NgC%Pυy J독6ۍBio`fոõ[_>ЉUT?~xw\{ =q!{D='?&Ah غJ5_i*9fJRʄFQ55Z]`Q 9X5%BҾH4 &l- U]=#iV_?QhxTu~hT ,":~t8gù[@w{`ߐ`@9J8rcIBTSn-1Ț *)XMh%Е@4%r18Ww6Tщxd~/'է/ψs_?ӡ5/kOV(GDSCUD O5߃4+NR ;aDa}NU|Ѿ/UbbHD5{s鵫|]Asۋes&s&WJ}>`'\\N\zzo-c_Cww#~ڈ@! "m"* v?t+$MTFf{MXˁluX@#^ ]Q0˹FsƲz`%_LKDkvO?z?v_vFI<Ź-M|꿥zyFXe)Ac2S>:o͏ <9]KIW=N*Nfa[?8Jν}KCk׬vu=w}&T>Gb#~k sR^3@,'a$djKN䥰FA例y(6!ڷ>SګGÿv?nJP&0 "cY}WڋwU/Ȅ9 }"1]ϙԺe@3RUҡ4苩pFnyMdɶsJJ= 9e'6/q}փA_ͧt;0HEk6ҬCܿW~+R]Q_i沾}vʄ eXڹ!u `)}J!Թ+1˜Hb݂.׏>-=hi9HZ&/p4o?f=i?|?}PFphE_ r%GY\WJ|@sn&Bj2 ͍HlIKGo}Mo~m^oZsZd:,@wEǒ&fuڋD?쾫v~H5 X\&ض:׆ޥK $ YjZ[i@'=v(Qoo곫ԗůcuwO + {8cs鞥Ktn/"44J{p_2/榔)sj S %^Wi%l%Ea}%,~$BuIۗ q~o?vwoiyv5l03])P ,4-2pZ gHPhV^pϘأTh9yx SQG p)wZ@lk;0jj)."\FM3-i3}+Ń߄?p3͇?lG{H;d;3N;%_k4xk;i.A-ϡ;|C= ) H1sꡏVxo  ]t͙60(#sJG!cTүѵnnduؘj?{b7lHDD($d 1'@PbE6$q#?vbHQ|HV7}wZ3UkU\kn~֮Xc1Գmެ=nϋY&Є!yMz@Y2K?o >MZQ=}|=zJyAHJR3ܞwJŞ),5hBߔ/9IŋseL ^'of;3l%^=>;m;/U%҃d bf% bPL7oP5[l 2m;ـȐ\Cy)QN0ޡۓjŦ69 nCjcDڽZ< a>ڮW'L{|>6{.]$cj_QIk. CF)hiTK\}|nOl$u'S@Gf:E疄%JgI%#(Ley++1oju|ڣXf2JoQƠA3XjbOx[% œ0yەc8*%.u$BswsZ)=>r´)Jڳq׎I?cfJ?2D>lӮi}rmRr°9fXjD-(tj!u@N4|u_[}<9Lz8핌>e;|9u;di9&2[]@2gT'n_{tw;@~ ̏8gk>m{`WNƬ2ƺŷcGYcFbRXRJ3ː!z,sʺ"Ңg8 T1iO܋rH hRR^sTn55^bzoC۔20Cn*N876jSW_k6k4gX߅; 7Ԁ҃e ̕2s1yK \R@1P-)'6 dO~m#$O1֐*UIPL3 >NRF+(/aP8D gvG}ds T );hodTTd]vޯ-% sblSPrMF T=_ 5ԞgM6Ebcfɮ;wRYGV^qJThJr?P }'f3Wx2ܪdD x<}!y7W~? Yv`Oܪx+dl*m)v)@,=")K[kE AWbSm̽NP20 v2~sdBT6\ pb"@nuz%O])0 þJMf~;LU~DY7|9vu.o'T2.de 8=}90@:|ewH攰=ϒg)x*3?6hWc ᳟s4:t IDATYG?Wy\gJP2Md$wX4PΩ^`q+KgFs 7j-ڳN'w D4`׳LW[=Jʸ;%u3'C9s!{4;:h{,v)[ؓ[ά HcR9ojiWP*gRs袦H|#9 ԗn|'G X2>kVhpܝTP,9J@Re|[RcAG R[Hah}9Jg>\'Pl|T=evUT )3Nrb-TgO렁^%j<pK߃Lm둝Kgy \A{6`mgv/c< 2b`%`֊)1IV SJED#I]N/sj:k6;D7{BM\E /2M0DD#)9(sL5Q"5s.@fs5us[RI[MX~iBfn;L$AMhJ8Sr20.w__\7L=576V2o6FR'fb4=peDq{\B$1ʘぁ,Ss}>:7\@tj{ȌO)zx >~<a_j~^ڒ\f~rD4˷OR04K(Ƈ27L~37d>4w 3(.%fY59iTL <)#߮T̘X:%3=Vc2a ` _&@HW)u9=O;Nffy--~=zlס:֥X\ ӔeɀXzY'3 MɽV; \Lt_U_ytgch{@qwΡ]9{ta3= ٥TR$bYq~.Q3cɌ8c;` 2Qq`(~~0ohf0uj Xy10.G`qJSU3љrYޖIf<keE%U~:?]LmF:t&D A\[T+6OΆ0Ob|>RcqPԷm[’Ϥg8lr<.YAw7GD}v7:9xh 8Do'35ÏX]"-NS~خvuadUy˔~TWk!0=ֹiU{W{W~E^`w:Ga`z6ϳb0,ˊ$ rxµCFW$HlDh8bW"^JP4Jr)^mgg33H[˥(sR^R~bP6e0aJp; QJFxr,zQUw`\?a :}ڣ[=`$@X,\.,o8P=lK} mͅ^Z̜C->OYUB sۤ cֲ-<+ 'P \qMu^K#BBM9XJs*٧=_'@$ėAԨi|͏ hX e֒hC0!=e=mP|g~osZ<1Whn/q!PZ qzn{am1cxeFq nԃerNQ|l&+)˥C7 sߡ q !< "y*HcPVwh:%D[OHfjf( 5Y :DAq %ss٧>ǀz@ |/X اt.f/eFS C<GlC_6OZ9STOd"W hKRo^ kmBfrF}Y|?SFF5un7,~Ƴ05Yf\{Ǘ,XZw7YYܴK" JUl-DͅWiI{ JB*A,"2(1K"msC4φ[b\*JT\JNTUL @ 2M"N\ M` eVQ3okl۠= @kE>4vxa'cƂ 28vNy'ƢIʑ6AuP|H,a!hbGT7E$ gU:Q6D=i ]*NvvFUjSuO=hT8+"E@̩U()?T޵yx[ζhOaOWEqXdN_.]EṵW-'h ˳0F!ta *goiڀ,xUTa-0( $+"AYA+{=_THbRd w gBni^|*lLj):~-SמI?P&2ϔf db 2N R xWasgќaQcqFLJa8+a dX>2Lv׬Ï,o* kB)) +ڬ͢/:LtJZZtf7$X7b!|>2$f (K15.xk\>3 ʸ 8{W9-TLGZO@BOd|x^yLD;4OI5,O]a.+BPL̍ 3l=;w8 S3߈{|Y!̸uٷ'z6a=`2yk6f9 Ge3 8e1Nqj;@FK%@0QXX2a{De9P\#yyZrIq( ޞČߜe"h2`wmtcUbh_En?Gؖ?v.}j-\f`J:g")ͩ*VZU V*sF~EZT;< ~3R22Wx׉?lWb{ >*CxXϏy°|޻jl0w~`/`L`b!_ƭ Q,+fm0n9۱y56vdL m ? 9 :KD؅VqB`'dB!èdYƷ`u!UU5Ot7g;[}dGfםn :kJZ(\= ٧穤.2 )td ǥ}=sc?lrwڄ =~?vW/bvrpÿ_0<,1Z]xzm1 "GL(A֭ȷH"shcs/×rx{ Fۃ*kbJZAWs1 aq'mhUQ={jH˨?:\JfJ  2p-_`oU0NXexNI]ҜZq/m8|-+P'(gƦ~dj?C 5.2=U&0=Y|ٞGI!LȊǬ5җFvз4KR'RBuh#vM"0Jf}voQ|':̠UrxنaOXfh(*qzõkۖ#Fc["HMa0'&38?_ opˏw&I@xYgҳЗ`q:F>'8`iVnp:E S¢!ʖ65cIr_p*is.IMiFH#bK wh9G MbQȮ׌{SC±̇mk2ROxO2C(0EEJnōc-ڠZ8 %x&8[ŗ!6BfNH1S4eq3aq3D tlС$$9Wa .}EjTqM4[BsMGIy!+#c RUR&MZO}IDryOj^<ϒ~z+1~^O>Oe6M ;oq‘5`)A^.Qc=8|[|Z|G856B)INko<;܂a]27'ՑRZ$4te\.q0,e̮"2ODžʷRP#HEV!hjS~_]cK@QcUezN8`睱6Z؄#t[k1|^wvnFk%ש޶߃.) /܁g8ŭe.)$L LRMz3;`@b{dzerB-*U0B/Ś)tvzʺC3[Ψ^.7J!8)8tmʌbvFN|-s+T*7c!W &,f<+d_UmМÝ;SR)2 >x^gR{;kq<K—9k{dMөޜ`t0YbIX{5Kp؁Ó`$3qTo!nSN- 1̓rn}|^(7αM@`9xx{2"@ȑJ9LVXk%Z>g?kZ΢]uϪ/d0-xDE8J7 ǽsh->jqqP1C^Ò"RCsh8΁gk?L_ ysbJk )@P2fi U*gI=JXS]^yٰoˣ>TV X&S$Ú(}=e4m[YJ/4K -~ &[p_A ~rcg|`I!`8!{ QX>!a&m uu8yA\ ד-nV6ĝd݃\(QA?@KXJN 2:\(LU4`{GM= }O 8v]=$HFS̔cŒ;oMWÚn_(۶>:/sL$ωBF ,Kr@p(]Kֹ" #CW{*IyIKaz.GB5j![dϔf 7Y Vm""n`(l2yV>?t#Bx]=>;lةd*R4 oL$]1ImΊopR`c0%"LIiiDpa^#uX0O`½NN5\l1D쏳1q4%a@"ה s̀fI+%$v"ˠb`ܒjnvy_&Sn1 yO\9nN{I%Y?!GeyX1xϺ{}1gz#Mt=+%`v>gϏ_*440" iK9\}]I3 -Ž;vg^p->\HRԈYMJۦN_O SKsLXq"?`@dBEaRws4IM"jM: 5cN%+H.h*. 4(493Br3~R{O<A);vuޱ1`G]Q{u\j'q8O][tOF4e|S%[g0MJ&K3 )+ sybx Rwu&">RKI|HJ)}#5=l;5g(+X;!E:c 95%H :N h=qNӘby_H[ε ڳ#@{`V0,'GJEP4elcL˨FU\e1Okn֗r SZ0EĦ{|`o9>p>-4U( 0ߨ; fcℨS3g:~8#Dk>~He7*Ud RK{NrЏ3mL `4ld g-9oC^ /Cqjɥ"^[>w2p?|@WPo͙0vJJ.זR۵B-'Y֩s}\^5"¶; e_ҹͱ/=BxP Mf'v=WkŐ^@g''rT;|,c(/۳"\WJ|7<]b %ʴS lJ;>oE4}.3.3[7-Y3k|ޒ9|[<>/akCCR-Ah܍gf|^zc)PXrnxpVɥ}:#"`]skb>*D4&8̃ɑl3]k4K#1;}%,R\X[+MIy)k)M|ZCrs0'vAB,t`+T-jQHJ' L 1I\;>"ö}M]-$3fԀžYY ۜgֳ @aҗa OVb7r Q"ӏe`f۹ ars"KLtJŝT(-dcFJu {`| ٍ6 ^=}RASN)Cd5_w/=q t @M-r!Ƥh{tL}Sy3E0<'ScqTE4ZB @e($bu@P(VùZsxZIr nBCp $MEJRNK S\΄ة1@@  SU+s?]d7$F3b rvӶ_ |פs"hvv _c7`)f0Rsi/&$ bP]0cW@x@x/ g`KƠ7'>G圦]v&`Fu <>+D4 !WHz,C4IB "r6`)^M ts A)Oh~dOAi})8B2eUsq1{\O@1.FÓťmT3ioD\dXԜ4t $SeG`yS˵X %`u[*[4x'0fhWjD̡xٹ?mfx5xZsiraabgTϳ2""2*sCΨ|M8FOa>')$((uT 3߿ zOxma̮g<^šg'.dwa9<X;b+0DwKB蒼_.4sܷm$\p0 >K2w#4۾f`I.ÀÍukn3>B64J=; |]m@;pJF4P-i{vNtȀ. q) ch `ɘ֪d}FU#0>U'̷zsdg­Wv v6qOdJyͰßgYÌ[K.8Nݨ':pRNRT@~600DKf0dzq02!̓APs <TFdq.nsM b'hvGi@GcLgn-3\{j/%a$'+"AZG@;݉JT0)baGs[__)`jQ׻~3B;5`8MlKÔ0pO G~Ãz/ތs6RܨNY҉4`};l CpḦ`@`4 ցG''.S)Xnen Zl} !`Kr6b W=gj7cP 4W.lWM=7]~ -Ո.DAȞcRt3 9͜TRTE;:;H"Q.~lCȁvfmfJx@18xu8 Y |xZt*(AGyR`X*.4:䐻 WA8a hEd:f#C *FR5b<-:?'o5Dx5bו_ Dgm2\sSxueA$r @P> Ʌp\)%)ymjLU1 M6ge8'Dc<4I$=p:P9[׏I 5IdmBS$kl ح[t7RcI+-Ƅdpw`0PmUl雃2 Œ؆z"y| -nN#taQ|\@xUkNm1 B ®uRaʰ\{5!!@: ׅL =EnʄNVTKTYJyMh_XVσy?HfceF.`XZ|'faQXg`q:\wR1h7ğs[*tLa38ոFŁKC&5L:7$͆78gh>SfE/=ބ% ~qCOh[cSFf&ۊW;I{r pA-9Vr9L =`E%]:j6Dσ"p<+OH+l^?ۿ`8* jԫz pbG@qPV, @9bVjyɒTv5 ݯBsPRIۛw+%%5cP|!<+"Joz+?wh9[%l לorm#s)4sP29<2*\R\@`ׅu߂EiO)˔TY͟37b"x&`I ijXIfFT/c:$/79DﬨZ`'{hoȔeORtSд^ z26%粒fT$ Z蜋 y#Hc{ups?条P‘/Ѻvl2eI60CgU,cwF0p^glsٚR%NMi/ 9~w:=y-p>B,4RMCk= =s/#Kǧ X<$;?Uj r|f6pvv{Л!բ]1֘Dn 27-'Q&3,/2@*-n0L#eyJsgMo?^243^c,x2oMs ]SEc,!f0UfP˃glBZ"A'e%-+j\00Bm14L8L s" fM\IIMKN)q4L JQ}ߵf{xzw%w';;Ǫ2Y-Mq9Ǝ0 #Ñ }()҈smb:JEB\+X97>T{#>:(0]C8;pp~t]0^a;ڤ( VMa $sre~8*Uj@,j2r,L6g_J ;.a"Tj٥ ՀKrNgX&2Il'h,bꋺbMUdL۫zT1 lgsa=>B7v)đJ||3c.6 "gP,Ptkx[v .7vd^y*NRm]FmPFTZ(,Ada;Nڤo籠җ ޠՁҢ+Aʬdh?l2k 13ؒ w(+J2ݝ衄ܹ@|) 5ifyGzxɱe]hLHAqIF-fa+3}]3ߏ)6YR+TeF,2ů}?NdnZMC7D~6gLU$<<_B54rj o%USc@z3`V/kYc(H*B&7ۑ:i0B2X=Pͮ2p#M`r_I,X$+^BNe'Uk. VH^݁0)v.o s1&Mޏb%Uo)ի0ؖr˥uqN( 5WCE7#x%+?. \/t#~LTPrFP]dm@N5旈hGK]R`(<Jg4̸܇LÐ+[:+OVr!'ʔ0E $L,a]dpMYPghjaRY,}.S"P(r8}O{:<.32Nh~Sʇ(Lg||-$B0S%SBu*RN|.GPR2an!aEاٹE 0?r83;rL ]AP8 9@9T8~* 3>1YؖWJv͟"?R13VYkހ(J9 0FUYRojs oLtULLRbujC=(kB yCq @=7L)fr`ڟ ,^vvvwQ@=C 6'Z~qB9;||=fNzn4ݟn\ID8md<7!4dL$FҐ)`"M&UI I8መ&C/"լ7JKAH% =Bd+g)[*p 0S SK{|v;C_' **1]s*C_s o$qu\-BݬC`so6Œ~,HꜛnT?1 IDAT<Mj^qcPBydk%5T; \S$MP|L}) aiX'홓( !A瓳$.Kz5F]RnbձLqD7cہx\1j1ՅRL&)$:..(~+ƅ,.hR+gUS/搝5aJ4TNԺsb4k2|d[ID5*JUBR~\j"KqfM]EwB3^SqxT9JZ 0[c5*bGc`J\`2 >!%ϡ xk)IQ #ܸ=25 ֜7&6h[AWShYݗ3'$CzFL+M Θ]o(o#f]2~[.d/249hYΥ.W3Ij/m ؠ,vx/ȑR$`DV(\4p[y%.4`/c0Ray' gCTv@`xIBTNJ+Q_I$<%5+5T=eDȻ3BxZak0:oΆYZfqQGgJ4Mz]>C-n q#V˅cu84ZEA_:ChbF8ԗRLumo4H0t\V%̙ͅs@aFA{)@=QS ,xq֞f$'Cc8R-|J ذ30kf8ZGT,-ؗԇJR};+0 əq wNI[S "sbCh #$΅X xqYQܒ]01`:4[xUɅZ݊[u 99Bqi4WLʆ5 S\w0? -/y#\$ _5VJzk 3шީʔ6pXl+`iȖQmy•F%G`Q,:HO>Izm%@-.QTCt͕$d [ Ν#s1hZ0CdC%RF#buCgNiS{V,ډ"-B$c9lƠh82֤EBR"MZCL(ĤC$MwOGiimJH9G;|c?,zuQh&9mٹmvۍQƛ^pHD\jmx t@VKI7rRC "Ӽ]Djdht/{aR^9q]&%pjq4ixrlܮR-yA19 ـC.IY?y%6+vv¨ `Ɩ4 풄dR 0;eoS[`JmJXsI9y>{D?H& pV&rºtq6 2ނ2 5X ;kvKmoҕ&RbVBx$"ELiE6`Ҏ e&="?tP) 3sN(b#Aan]{sS \euJ{7G jh7̧м[ZX9K p-<:,n^;\hg{\B|r4UZ>E4 /38g7^XƟqWz|_:"7Gp .'k}q+=4A+la"CsJqRSk2 jɑDmSj7JWzoJk6`RJ^ 6,XʑZsnr(1Q*.WzݴVtoyr7Xنv* YfN9}I=$Wrw.A"О2$::gDi14~n2.MܼgnfHsac4RY=zPn4Ynsœ&S)K'[ۯ2#2az+R!‹]Nc߸p%]O!Z"|-^ slQ`zHD0>|`Hbf0bZjТWiU$T0Ԙ&~l?NS@U*QZk+awKt&k^9.Gz6ӀifAaxQ'yy`s @NaSpr }j+S];l xE8 Vo9`ٯ~Йnl^&Ea}J0|gJ/p@BıuA2Grt%νh݇ Ȅc&r/#]KM`ԖDm0nSaK)CAz *ލge\Y G(7.؆XE!sBHMH-Zo8@NQ?eA2Uy9uk0p gՠj>Nw$N^3U.tG(3f˻ &JMn D$ӈ)S%e>g]4/=Sf7#ES)r'19|i6yn6o[ ܥ6BQ4^MP6FrH$Mkcޛpj5j@J(7;{ :7}:oʅMw}0ZqiQKd6 "iJg.-\(p^"yRp-]\ Jf/M5rP ;{X$NguLPXS%JZ:SIkGB @ rђNÝyΫ;:P歺@Ltw'S\+MO}^|R 'p{ /SZ KovMR.Uϓğ)΄:Iqf%I`"9;*7zk g }4}p5!F+@L`k@m"+X$(+bl YS9]s= 7{cnXb&UJh7xS'goss\E^,۩~Jv!k{[at"O_7VvA>|yAwo͇-&:hm;Ul@Ir l1Ղ=q=MK D$qL}BgO]IC@3Z$FF%GO ^(Xi,qdV| NDܲ,Ze{^ݶݒҲ$[M xx5ddf][}v1-V5,)ܞ˰/Vj{"a2'?EN>v |0yVhy2iQ>Ffp , rNGᳪ~f:Z&tԄ(sql#4nn>/F`ll ɠ#p<'ChnC s4͜'b'ƣZ^~\{M[2hN8_K,-m\3CޫP}.p.̹r9Tnbapz΢"} "669E/Tu_/?A7T(mzT^vstJ?&7 4\.bv9 CzY%QՊG鉗AȰT]]r4pBvk3g«x*z۳-%ݱN0s|i"4|[+1Ț CVV>4Y1E?)h^cwWJJ*KsD3uzt% P,Xciois|I iI#AS/޵V9 !šg'\&I58\H<ԓN]K.%0W[R&4Uc1Y%qrig  T4aW(|xp?22+- SZNvTN)OabѰCK%Qu*S57gG?1@솃sոuRF'֡z=\RoC4{:VH0Á6HL%$ٳd9/K`\Kxר}B|ګsJJzpf.n$ Hhm[JY4˧T%sI4z]KIoy&AZY)o9;w?&WǢ ЬrpRMsjQ jX-(~Mylrǀ}%=eO/ڥi=]kms$8%i:HVsg;"1pڱJ!s,H"Pa.. ԊjAfP6)Yw NxB"]9cw79QnAC+E5s_YNĕA{HVtGeOѩ FA[ˀ6l.K,Ҷk!skqbtӹ,ٳm|WړV1,!F|\JfSS>"EΠG{ IqնsB!35#v() Gy7Xn$\(u7yA9M$SO1"xn.âf̠_+YI=cRU`95Mvl$^ӳ1_WJR=fۉsIAHO3͈q (JNEKhq:n 0+̡.Izz?;W㼽h4K5RVKk^ R\]Q;e6I՘xU.Qyb4I6i2kyTKa,zLqݫN輆WެdzȽvۧG\/ݛ@<>RJ1NfK[Uŏi=A) ᩿ &8Neϙ}S --(/:Mw_~Kx oxHjQU|Ֆ1+sr8nH]:al5RX)/F~.9V{kff&rOI"J;yO1̶DJGМD*,&ycsW]:|1ɤdmYh`q}jyhJF!ۭxCtMITezLCԤ)X3}NanM ~KK/bN; ߕv4$3Zd<}(.6&@BtpkFqSZOdf'CL ,IKSMJ@و~x[w;F IDAT + -UFtHcaL;KYmsͽfbjO#X9·qLhe;S}NRiN[J=l:O}Gf>mɂ$>)Zs9B!s~o Ly Dδy }MYQ2ʇL8KΊ+`pvOGpCi?wd{#0}4^C?C8.t*K%@9' ~LARai"-1R VX czG(>B!<;YtӘpsuBlag$6xXyzI>gjxQ>9&♆z<8Y`S#"gM%ty)v\MH0||ܭY6f+ td#0J F: P|u- Uu,~]\*1ѥӚߍ*~-^5#)$WcJ9ouh5va{k578-7j rVseKYaRժ5\-~SmV2[yAD)4T6?7j}*ҬJ kHz0'ZAW'nʉ5~-t kdc~8"yU2ȘJp۱T2J~KZ{1ls y;83(IhƱdn48;{J,9j"(lJDXO {q }97}`9G\dִÄʀ`;T+ŽkJږNM1%-YĨ\$%$m&~JSlEKd'PVb^str;V994 DhOI= cl>DŽ@ʐ(yLSE@P"4l$`ff]m٬[הv} O3a wDt0^Ӑió* |s5%9Y%a9L6u=v|:L#&vHT1*4QS{ ][ɵ(~iM'nNj'zvpJo*PR-Vr3o?P{ۻw+fu+^]I497^,?}FUєO}V_ū,1wP1&Kʟ̺9)S?/*&c>J =>ļ%ROX#a ?;cIIsSs$#8"oecޚ0qߡ9X g6$;gN{LuI/9*2c[>4[,iSVǟ;$@5k ɦᱩi s LbfsQx>5t;5͛Gi&yuJt@@S쏦0NXF!tBZJ;8,4>l7+9cҧfxc1/u_>?L ^ۡiu}?OfXm5uoS^8b'j3SϬZ1 lN)W 4@đw5M3+i¯"zp9VS}™ KϧtC#i>{SkZQw!cYvSd".TS="=?mոvp~r,# ԉLoc@c|(S (.޻;}P3ۼF}E|Evuxx&s }< !0҅54ۡEk!p4r`^mHSk* w8gs&ZO1s41J. ( E"xȕr۪N-f=xpOaxoe4NzL(ϑ$>/}KT%@+2\k d&?bdž6ic:&$oocV<M"%pN7v/:-iS8i&HڌHRŒ*P_ߵNkz %bZzU ѓ4lCb-k|A1p. Nj9"+4Gp|)uue-v W- @1~6~,`.ew`.sXΠk ~!SIn'_g˜H~wtqPc^M<72RˆAs7Z2Ri`-קN^ ͊RK᷐nycك`ܖ 5i.e}Xp\D1 YbsK1~EsGrq ]jַ}J5g@E/oy̾Xmm_Q ևh,羲v^*~wi?16UdʎE=Qi?~.+GQv.G{=﬉&k:K2S]^v|DeLDE;vB :gNvMK:\=y"2 :wvkfvKR邽2"AxG+4Bw-o|mvs^$T i+c ]ng295K> w̲q,'|qlQ5E-u(` 2Qlu&.bdP5S#6p3GNHZWd}y-IwڇUئ.)}sI."x EЄoJ{Cx~Tq٩t| ߄V7r拘3坻0z5e H }^r+Rxf/e@'o&6(;brC,S0.; N5t"q$WP 52H[OR*ҖD {EW!x-ZzZ7&a< }F~ s.՗2sYGhЀ6[ICL9gKȀ[B2uTiNo(I-ّtP.?ڣn ; +,~!Lsn_z @zEOv}.V'3aHq(kn4jM '}Zg'iWEף`ͅ" 6ݨfLw|l1ILUJ[|'VzPstQk$挰"C؝9Ys vw?t{Qf2dBnM(4oX1NV]K4SgQ6.`JSi+byuD_Ѹm$EVxS8GcKh|QGS klrl x"(5X=|*!HqnH?W7!d0 ?㎞*܇_ 1a-4c<0ac\iGcpN$u4 H.Ah*IfCpAg3`^d>A\a%N}3۩z,mxWBrc:.8aQ:wZWKyq?fP_?WBcp qT~RbB t0k.^FUGoId`*2i#_s$G*OlV@ mnK.8[,ؠ{Y_]CB+"PHx4JS g{ϭg[* 0Œs|n ́ ^W8d[(zr\r^`8>y쇓.ghB #8&r2/X,";M~?Z<..f-ЬC(.3(P}1$}BE1t)J7'wAsN} `Qik,d$Aq :G#uIZ_Aj m.jcY'5BKs왓DX[OuY5! s"؝fSY9jU!oCVLƒ@c>fUsxo/RyQ)14c$duuиiiP.9b34w%9Eݗ5ϒQymZ)z&0ڬeJLV  <'W5kQa}yc0NmD1L]5La9Y;?AhW%`唵e3\v7\#u4M|f0>D+o5_C?F?Dߗ~CV*.pTӍ'paSSowHeE0JᄈtW>$Ce.L;3lJ1#ˮF}x%GvByvfFΠnWc×Mz8 *As7.&jF`ܶ-bI3~zųcoI{1ttf.Q^a\|pW 5i_";U*@OKj{ f(Ĺ}A $V03+c0td2)m^O0?36ks"YZG!s#ܐyO@¡R ]0XDZ?WS%Uʜ'Ǎ%KAs LZ-y{xHoen5,6IJ5˵b[ZڼKpEAh.s7X_3%|p۶i켡I FvDXp4[豓0]pZ\?pcya`7A&)0}KpD[zdCy-S2Ƭǒ|0{sB?{u)'2WB~WśqCE0,x]z>'JX7qothi  nX1a{BPIӅYc6\/eZ<]\K8۠i*ow@Pi!crx} : |%s<\L"iĵ]pXɗx$P1 ̧TSI'l8<9Y}}ps^HV*?2ޘ>-du}v &n) E0n8tֹ=/y]D2hN\4 ǬSir1k'YCpowH]]ܣ~J2?wVNq[~]x q|&IsU q-l(19Mhr3 R8v.GH$xw QfՁyY!v ՞_0 MW]ϬgI-!򑒟ɣmId<Qg8٨3*eI8w|>!xNx3u*wp-s0580L`ܾ%{; *eG[֜^}sȿ71:0בY0[ɖ޼F!Z=~I<3+]QvIǃFV"2E4WKjVʪ׬JޕSڋ](~=p- 6_^xrVz(QY@)M-E,[ =Tө"I:?tx 9'zb` yKWة3!5gs{;bajmL3%:B@˔Ok XjS@d/>ۑ1f7dJcns/aЬƱb.=!P)^}=(ԈqEhN*Rv;1p瓓j.$kPŀ5x<q o73:$,Z> &;svDs(oC$P2HVisLFKlЊafs5!=b&͚>F@p#)iV4C9R6pz}є9y[ކGgFq/u"n,csRKRJs[m"6"s<ߎ('16'&ٙNH_dMeN}LsI=(N(L֜}- ʪh"+N}nw]K+Y^YYb ?@ěAhs$k.&jQJ"[&l1>.sGhe)텢YMak0!y&0q:<EjF0w]ljd@jRfh>fR F29+bT> ӅFaDQN e^Af UCCIҒZZ^csʏfBEq|kՄ=$,STƷ`鏜5=AAq ?{y:0ʿBqX%jNB# a~BaZ" \Έo1մ=Ƶ 9|O\Z_Ih=HBs)4Hvpk۶v KVPj| ?\68 jBt..t4@āl: 5ckƮpm'`(*}Q'5xN]UɬXl9_=S'tHF8g'8:w~,pqU#?o7\}kX_>AP0G Ws6ϠpYe~}#`j3p2JR: Aᇪ )69%A5vf<]B UϵXp)X(d@<]9Aq T.NTyjG%bB~>DPIՊ0'&4M{mb9!2F潸 v#K `#!l(|ff݆Ƶ$Oi-QZ¸h3Gsu_Ej 2RѺ1xrkV St75L%vI5Ăgga\;N#Rr\ Ϊ{'8QZ/8?I,1RҨdT|.g<&0 '6W] 1P}Gֺ0mM64H@vJ jW>ug%< !nOr*{qr`EBzWoAɎ3xD:_b==7?`cnkfOȾp/ pk%b%U)):>%[a+oM۲٠ܺźMH\JÜU iKRmTi˳V8` kspj-䞓|-ѳ0%e ?n:8N"d6T,Q(D-=jG,Iyi xj8dOͩ<7V*봷'p Ƙ'V 0NWWhY<qߡߋ4-Bz(>$[ ]HR|!_>ϝbsfm0m9 S r iawMt9c\o-rcQae~z@44ś>{t8ט&wm3aY5mC ‚/piLm ٘C P/rsdfNBX8N1)`SmO)T_,uV^"7`;j^"S-qQ6NwpKzh.6pB!{fD iSS*k,`cL.V2a<'}A3X9]WFcI ms|f8v!Ò%!Kj}s35&W{1lf}߻zXBfhi{!cu2(Q$M@4+nLᬏFL;3v[*T~~Q锥(qBsH'ugofabqK_XۘP[犒ҬBhװ헫6}ܹ4e{T˺IIR-A1Bv?ƭ=h4ɕA0wg$v|AvGDLøԨT^s@Tt4bq^5h1x-=S+u`gM@kT gjY5wH aq pxt.Z:sC93§2^96YG%xNF(Gm~uCT`jbBaP&K@$ 3䐛ڽ~uu~Oi9֘朐V ! nFsxʜs ߉g(dOIx=QVc -sa͉zN :9~$gNi4뤱C%P\6z4ՂVs^rRB9tTL$J~rO:gٴ5۽0l568{mYum f e5g1Fwasp*fP%s8lxI =,Efmv(RWz"06ĈV̝=9ޚ88{ {zHbTX dFNˎ~L+ʔڬ9k(^ dK8!ׇnPbf+MaCwʒ)˹x8|) レeiYI]~ ΩSTPDz΍6n{;es#jB{%pjr.lgg53鬙i KP`\iCJ=$ 0ɣ4pw:JstM씀\p2kξDuDsgN :^($QQNLv0}5[J@l󆀑]79G_|Kx.2;|t..Hlr"+pG(d0J}7[FHH0޴ :cL{ L\g ,:/Hh/6~R(%ieC18n厞 s''w 8w8}qDWwv~Qo֙֗\5 A|]' ByU2y"@߻8ƖYv[@ziU9~, kSS9dk [,Sf!~eΆ\Ȥd1.ٚs:2CRxpMGtq9w EgN2,&0}x!ez$n. >tъ> ;58 5,ryRF G^5ЬuId7ɨ,ՒESko[^$4LjCawM) #M#rIPPo#2h^(%YRv0eQV%<[qꀴ¸I (;F^WNfWsBRd5%7yFaP&(R~M@Hh%d֩:d?IXCOlvҬ>my?.bq]a?إq 3`v|B7Zm2M jP0.0zfjݤso Zd}%^EhD4/0RB{5wCNDQi"f}GgLB d;;;Oѻo ٗ~׏u\^N)3E᪌U#ۼs6ڰ.S mp,PF!r^ צZJaa Y{7i ݆h.D $@32d=B{mMH9aSiR#N22R2ar 8='l2|[Q6Ν>i?k+ҼHW[[J$m/As80̹a~>ϑ6r38tK-m+3~+h)tc6`km>fb {i/:i"aOB m4jo#@a|mѷ+[ 3۹0ǒ.o̶KZ?A%Aܾ.T^.EWx:+w,aBvO[m) hHF3@!Ү{i/PCE?W`80My 5Br;d#ۀ?(,9" \I"`5$;:{n){\! 8Ecȥ 9]i"P9p6yb ħFkrm^ޖVZΐ\hM3Pv<«"yqڧn0Ҷ ^Go }PΚZ! Te^.EEK59u  D:(Cz1Ng%}R`i ف(e:|.}? T'~.GД 橕p\јǸM&#Ls~c+F?zbs̵sc1t]{rjA.d{ Uc !H8.A$C%/čD|)iԥA>rx,nH8-ga;E5_+ߡ$=/As JȞ=H= J=]=,3>WC8smVՋᄻ"](P2s.cxLhXr~鰅1e90%SX0m:f> D4D;߇ι)-+ǓN)YE5¼NErUI NIP:{I&ya%Lz8-`¸m2Kg 2lK8C-'+ Hedy5+/1 4R-h S[h׵B P+e_B'r"B%Ϛ6˲ѽء(n*M Ɔbg¸S+.>kyL@r*S+W{ZZp4%Y^&+4O/Q䵀 YicZ0,0teFΖR65I q*рqyMy25 IDAT w̒Q%u=0vdg;7}s(Lπ3z^δP~g=ֈ ሟ6qB,> =82 ϫ}nAoO&#$op-m[u\#A}t4q}h@R&Nf $Lq.{sR_ ]5=LGMj u"UedC&V)]8ę: w)nqװ A8ج2E#3-1\1s{ qK!hOfX&4 RIV$.Iv0U0&ʆBzS:ŸP:y%7wI+zNZ&ljӉc eTjB KA-VOǼu.`(vx%&㸜hq)S+:X oO`WiŒss$yfK B\Bg iz%k>a:Z-8:Zbiq f=V# Wv7qEGP(Α8Z+)z mKtFf.5_1ݒ-k\1L䈒f6`x3KJM!lYEqi'S)n{n)pžf,_N<0<>1)K0; ų;aѼәϔs/hTw{*Bskp#q܆ /3W-Rk]xҝ&p[pIbdI(!yI M(iʘMK]E0Cw]2p5p rCp(`ܒ؉3 Dm0?Y+v/;Vhu|{ӹ-<2KsglAVS zhOSD@axZx%Gr~pXXTqPY)Qh;pGv@Y2O${'gyPX3,ɄOs-lىMYo͞iG Cw@n <9KduOMҨmiFZYQ%zF4kڤ.ANLavr ferY̝B94{ɒww*ynMW `f7`X͞4%N *1ބlrwWjkg(f4Qӑk,}kG gQalP2ϱbBif{3(N937لF ͷoiqal81N&l~^A˂K6_[0ͬ$8lZ 5u&XZT'(^Kuhf?/kIޢPN&_u b=|Cegfp3B4FD ;;]1yvKv b&Cє=-hrx~O}Oͅ=EJ({//,9S6[w6ΦY Gְ&Κp`ڒNjQ+Lԥ96n/M7)7`QG)^ eBs*[5Ljx (@uaf` bla ۓ9_{֊j]~/2hJ%4> (LVJ s_KC4;X\a< U)@pYJXع؟LS4'rl%)Cv];{_۾AڶY>y-"X=k{'OSÞ4Nb=X0Q4?G i:Bjh)o֨-xa9G z"ZٛZ58-+G!QMכB),܆VB9+*R&R9YX;vO}q-1f)+S08`&\ˬg͍:^,D_ؖCqVwA,@m.= L/l-.[tBc[3%' 8*\´ gn+N-yF;wg #9&xD>8cVҾ1ζ3X. ^4le#Bm}->o %49^>ɡ:-%X#mgrKR =VW;>Z s(LTj5} D L+,NGd'MjPoUf#@83~g=b.`1@O虽|_̗YfKK%8d2!tNme'5[mqEvA=mVBԎJP-6$UbXK h]Oq3gsHal"ǯfn(Byഖ8[pmR*aYhJ~ zHRgt.Ѭލ!Wqm F`K4+zo^_ glpjߩI*V REmLa? dC1rX{Gp#3 =Ǹro 8C_Fx wc3hnY狻!˯fWWK N 4ZH\*1 V*T7gWIo 'hM+zbW;y;ɜBg];ksXɳ$?sߗguǡ$pR&+qg] q7 m?{zp^*,\$G',d2Z9#ߗ }oH7~>3 K~-ބb1;:˗i2й&kLzK@&Ja}9eVi}YvE&1Ύ.ްDuƬ 0ge[ȝ  T\|3ȁ|AlZ^r#r=v^Ld#`6! Jv2a\Qqa}Q ^F/A3 sOB# \0]q[&5FےF ~K2A>o1-n V-9Lqeد-!}ZL"oB[Gs!̾1co?#4+bB[*3>φ@v|& %h~BvUHv1ZϛqZ j r -ƃx`\v5b\GnkKE3{7~f;@i=kC-Udjd71gsM(}ⷤg{,<ގ/Oy1rD9i.pLZpnைyf0}cΜyB@|E ͜"7}hZb;3 tCZePVm/SYk s1g_ _vm2瘯& :ҌA̟ zq,G-/{_2 N疍!ɒ ǹƳOD33<(Gfz}/)ۼW1fCX:mK,9k;0kqi0YChfDGڟ--DtԜif+GWub{Zߛy%h~nc@}pm1-lMܕB k9.<=pia[3`sRKYjп85{Z 2]5W-4\n\9ƹ!Oֆo01m>0,/=/A }Tn.gSU[louO;T`Z.9wW{L0k]Zsl7X0Rc͵eq"YA}fo L52ז2YHrIf*+^`L2q!96,/qKcYacdOO@}0G  TF{XZ-T)ܱ8SqeY!<@izA@sZIK8@'$"iL^G{OkM0Sai\F-`R%n= mq vB^k Nt;4ncSyt[kIɶN|,IlL/:'6"v4ߴ b.fԂa '+~$۩Ю葝-3偧B5h=]٢Ehm|*uO[;L:۲{Mߙxu~i'mISgMWw `.$D \4>@L35[7݉ݭ:RLsm>BO lk4-l(Ö+g%R| m>6 a&)G,ڂ;ظ܅xn$n27-Yrio 2)^fHe/_z:E$u8ȶa9Vhw|/66 plP j@+pi3v2]@8qnSZZy7l 6F !n 6ȲϹJʊ'=`/oOӒ>Jaw&7Yon[ f`#m^ xPlT/Ө$[Y^GlR]qU83J lқ -FYH6a^N3re/gHjc+ tyd$;%B_ 8 eԂŎ`vUE8nM#=<'ڹ6ӆvLO:='_8[;aTMy!uN!2ܶM;l(i!~$ 6&4eM Dc?&^8 ,Qeqs޹=Pp3vy.^jٝm_ꁲgg}jwnJ2C~9C;7:˲MB?A{VT z6Tu63d);Ӗ>[ 뜣] 4B;m""L|W|=HPg:7Jq Zv5VLyl$U]9vupq~*X,P\0ڵJMю8Dv,`R'Dgj%w&{#ӝ)k=hCGr̄|n 4;J_-RGJ2f[]ϦٮIM.%*cvw)8eIgH3(o%P&ˑڍeKw܆t{Ͳ~y'v}3sB\إRcaGli3A$ .l'K&g.ڈm [8XaQiٍ[Ba&=|.ֹ1.27h˝ .粦mv, uV\fG&ˆ% l6@{Fqn 5Ge_م~fACQF ПFxllq#!eZe>*u,О3wf@b;Bdz6كf?yW#lk^rDN l`9}ߣpJw`ӧEj{M~h42rxk8 ewAo&ʄs)%mnl삝(#l2r~ X8%. %) lk|n^Y{]{~A_žpsc]Oij@m=۝b/u@<悧 ȱus~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~y,5}//oJPLl{V!NbP~ywA>J<0ݷGg|WEy?? ə. ]~f .";G^wR!yA~ꗞi8{W鮃P`>(F6PK?1 0|1ʮ1glWhq&8 ڇC2i!\ЖX|{ 8pnGu%g:aS-6y2x9[ 7d*ݛIL=/qt(.vw]󘛞^$PJJG /1`R1bᮀbzܑ"lҔe~/9:g.3|+e(EEߕECO'>{*T`=y.}]}qL4#kXu7)(VǙ?"a IDAT_l߸a5w`9]g:wgٔ2aJ*qأJld*xLN1{Mm+el}M/uHI3~gTcKJԜ%C_a]Xr ڞuaLl@6W"|-4gb=!@2}`)9!7$ϑ}҃[b;zczqSkc 5VX |B~uPUs;rOKoJ @$@"e|Vҁ\v S,4դ#=9N;v r]B~t$n}:/ބBa]ڤ B><ۡ<%~=e5exL985v!>:\9 }O?GJR`M ֶ.c9_ ?CaY,A<N?Hm4ĆJ*)?j:h T:2B]B.y%҃C/! :rӊb+o4Эl1?Rn|,O6ɔ#isT}PPJ!^m 9#c'#u㻞C.8Y$T 2T͓:g}&ݎ90©PM_z|,DHw=Ln9 5DO5˜.a&r@BZ }R@54(`AL4_^ c8Xq :;P}7ԍ$g0/H 0.U9HlJFnBXs۳=̙ύ @@{oh]w8Rپ197"ޫ"=Y*!OT ^{m,MML󻼯RLax&%KU|PgĪUTd]\WoCɁ TxNyRw'!ܹ>wvS cNj_/=s C9"$R6Ď(DBsw[( ='O閱$v :wбFsK4wܙ9`h&ץAGȍ1:a}C,0g;sA*͉79F* ?%>VsnA HE=| \Lh~m,q<\&fXk cIsQm^N{7DY5WL5[N>,PѬVNsT]rҜ @ 锩t3PJYS+ln$&׵[0z`[rFЦTe=U$u7HBbt6Zw0'm9QehιIc(tC&_H NP8CZmчob ~ir܊XdTM:2GOwNߧ&c_ows>ț1fj3AHrmkN1@obߴ1ʏJI`}a0;=E]2silX3͇ sݦRq'NU7~c:P=ǂSe}ж)ۧ[֚bԥ"Ft^+cDb9éwBgHMqw|O)SD s^BHh־$*"O)(dh0ԦC)}Jq܁Kt̐bo;A:\KC]Ȕ Rc,RdGYL }i; yj\j8@QNTQ%UgؘGb*V+J0 6f~%S/@/NafM`҇ =i2n q}%W2pe{,!f M)J5<S!#yt.)n27#>2ا!FJ &.RQ^a6׈ cq_e/niYː"jPyLEyz S"`<ϛy,NNxJ9JPK91fkg7NkM5 ٥<4M ]M]oy@P50.,<b> 1gdEd`2P3T xluunzH̊V |:U<1)&o1g+/8 _1C@!b9C1 GXkSž7+hbGO.az,Mŷ n2bll^QZOH̿&âcs?t7 AG!!WL4_'욀K8g{Rs]eH ֺk4$"E eS_a=#\k_Ax[KQT{.m.y83ivBcneRl en]|5ڛ~FP%"5|y18FIx8_h n-.eN8ߕoY]Aa+Zj~cθX 5>WaQdrir=;b.`byTyWPTD}u\PiiLO%Շ@3]93#!7hv6#uݱ})*^ǀ2q)l S9 هf͢`}du%HJ g RE(H=Y"ahNyW#tƜ}nMOC=|:f+Ժ0Ŕq+uLjCL `n}&eyr4Cf1A=f#9vwa߮Z|MD@ W}Ho]67SJ1LF }E 9`]̦L7F21I)PRu2HA͔T@Pb8yOz13?}\O b_p;]4Pp.xcAu]甪QQi8gHq"9`u}&S)#s:{aR f ysrraiսjr4P==y1i:i2I o c!8,%hڿ}  w" T %kfq4]Bc;7C=72冇H FyGnX>yە ]ss5zr#s%F$$lTs>YÏi~Y̞O/d}>0C`(@-2}?<ׅX.hyLU ? R?oX#T(XdlkF!܃fx[Lu"-&wN_nat%f䚉R9E5A ׳G>Dn,@Q[ YE,-PR+},31q#}0J =L~TVO25Y <n;ue&Lp{rFv͟`"v؆\w޷~+GTYyzM>BJ}yV׋G6X׫H-~h .Xtؒ2yڿ}5'/:-_WZ,7&c9v^hx]eA3G80X4HkFo1/=u~0}/}I7bq&ɭXbL EJ&M3{r5u# 1uZ{YjĻ(bU>CeOb[zz$`| 7BO .]zܑܱMɝtaT }ŐẠFO*?;flF3bq|m,5<' Lou@w I1U{}_bߛqQ2G)c NJGg)w--3 bC3&dBٳ^TTT^L_y$\sFOP݆t}_@(%e(CnjE,-H@&ߧE.!{N0XUj0 CcER 4bR uч]r ]PT磥:G{ r8;>81UV#`>liԳwoΡxL e\YR>vO1Q2L"cYfwLQb''0 !@:42G(ԜI)pԓvk&U%jN窤̣g.b0kDxcf0٠Y̱8xvo}J,-0Jf <}@cHV)@GDk `b9b8}S^TZ U,7;6IdjF(SB 1ܮՑ#hvI41;9 Hg.Ǐ>j' À 0oC{fqe)RH`(ODuw;-I01@)dnDS4MZ{uM7e]5O M;')rtF{F>G̦v'Pdp˭2L2w!:co|ʏr@.b.7 К)꣛ǷT |}LzvO"Ù*>nLcJoOnI9i켩.='h2 4`RxTC SlJf4k47z)e(ZK%2$ݞ.K1F>2S徦K*RfO/w*/2!v+Rb]C1c꒰[>jb)UJڿOd; XG0'rKd. k)u̐~iї:!Z]Rs ~>  51Δbޡ,IxJýη|rq9woI?'ըpL"IVPyxedeYܗ.ejC|K d`Fˆ L0c4|Q1 f&@ 9)3`0^ݤ>􁫯G,Y>Qϭ.1p]L`# 9qk}kwIaB¤1ްL3,9xSs3esq1Եᅟcl0r̼Ü`qwV% ǥbnHn C >4ƺD7q}3dƈqa IdF}JNgޜ,W4/0CX U0r|7#.㔆Qp}mc}|6:'ZIT2wB @6$ 4 DC`v-Li b}Dލg&D?b ܾmlMWiEN@n(>׀i >-vbBp Ơb 3} +0 ayۛev_@sd24̘qD` wE@t%TG>P7h;뤠Ɍ{?ǺszZr#h17KӐ@Ԫ^Sz S`"`K'xb59o(:0-WWuiG-HFpJGu *ɨ,Xڋ@]23` 8 .3p1a]d]^cB/@٦a]C[M 21^X简c!֙N&b?g))G5_ `4rΐn;2 8at*<L؎"^z_sѺ X-m6|x&9k" h 805%p^MӬ51c<G3W<`reh\hN%Y:zآK 3 \f'Q &Aa,E<՛cJj\4X cLSY5܁/d#?!AEN r|Mܺnﱔ!K@.M.>kp[:;Y`qrMp}C IDAT&EM81M\8꧵֭5j1^4x_ <4~59(0h+jSĶIA9p+/L`8Trv8<>sƫ5Y3ѨO ͿgR2L ,}aaJHc&1cxGxi8!+gؽ+lc m][/dxs.$ \a `FB)6qX'D'/rUk4>k,xH10s 2ګ\/(#.x0h4S4G`w>GM4e^r_bE,뺆1w_\ke!`iZvj1ۭS,FaBS6 ;,1PpT:+Lwv.ehyY<*?XL>o/;wP R`nI~Z2.qWL͑o1Ļmm?Ub{? zg딯tLsr, G&]dv[(e(^) QcyԌ1hU("J+ XkgSx%K& wIDNO4@ (!)̜moOgF/4pzEQv:2R☇4S3)q֩ax}WBcsU@cF==Y:&)dž!qثڪw%HuOb#}k%;{kN^OQq%IAnrrbeZrZ@a5Zw2R뻎H4qu%$Jޜ k#!0,W6_w(|]laTG2%1`?H:1hP =u.$5~dH+V!Rǜ> [u- OXPO7.Bn.sl 5>0׸y ˺nvNen%) EH7 me4 ]pDt'AҊ,`ZlS֛KG^.rčcܨl.F s]Pݒ49)[EÞt+p/o" ) \p$r {tAؕ70ևT/ɧ4DhY.=}r¸X K*nFعw1CFW~;G̶9ѭ,SVuG0j21]Lc kY|.y9e2ԵM@EB-'dcC!i[yzkR T&۽YREP}T8K Q[`43-C [GH?j0/ɥr!SQ^1Bsz<$}`2h{ƨ @>f{.']pF{ 6%5DRy.m Z>,L蓛ϵAw{IΛruOX}#RGA8d1wtw3H{]w-[דon{!B^+wzNZ<ə]He|4' 8fW"PÃ޵"7ZD^Bj6hez- ]l&S6ΐʦi`HkweeL5"HbWǒN< \DWQ1[gۀμ(CgXGH: /g\!0Va}U `Kfqr6ArH jS4SeX9C9sxarxL%G OU'QUV> Kiam@OiuLZ$M6-VKi18 wxc]vyӅe wKJSt2W\6 5 6Ƕz)[Q;"{Z`>*qU,Ue[2E"fV FS-s9?]9 (I.&w }hEWx^:_D\6JJH<L+︠c%9#z1J4ՅJSnCo7 wGVH L[T5޻b%p8жfc O0h63cF)3S6TcS s P1ae=& jCy۴rDjo仌QZ=yπw#D5xV3ۚOK(I/vQmYZ9R8Rxu_^+)dS;4PUHU4(Ia€ƀ:;y#a?^uޔ,[]E%4 | )Ys[RJ4r#QKiTV;*( )*p]s0wz߃`s1f)s2 ڝ|K@wdp>-7ӣ-] Gj,C>ׯ Sp)D46X40(1MxN'Gxy ad` wi #[B-iZƘ5b9gA,vL#n+4`޾8=QwѬ K(̹4ZeiƀuCf1 x㦞ksFx֗\O!m F54֮%CqCgE9WhxxFJufFQO,~n l$lu̪Xu]g>7049>sڡ=6x _W``Z|W{Dx?sq%C虭$]%ˤ0jL8r\R_r7sC_j̈ s7.zq@ӎ) ÷xE0{̞XXzɹD?paKl9^kC^LOrOHXzrYirK.18h|xq6tD\HTüfNp9-PwunQ)2n8鲣D[И )oӠ5.\MWSpQ8`ehDѐ:|6K4KNonXBzPn b8̩QkRĔ[!",շC $]noG9R{=1UV),P܅9nf[I1J0e/[yЬ9-ʩ=GdMMf~I= Glunh0Ր=y3\p%2nj&4`Ƙ%Aq3d'4ߺ|u3gsn.9י|L_ ތvi3rrY @;4W=~9a<"wPn'3ܣoZ w XLaN'KA@6u+ՓKܭiba^584+X[u1Q`wa7׈qD!?kL_mˉ&;-J7U(6B=_)%`Ӏ] 8_ t."wFǬ4)* XLl:ܞ-v7:JZ @Q^/\.9 +E4);f^=Gv_MƏV^580Kضm֞l%,?GBS٘n|533B(m0'wXc`{VןOqټ"k,(%78ETP, &rgMS L]MKM5!&T8i_]y㪪>- OԖ{۹noLiaq\Psdl`e|F S7j9!?2t>&c) pokL1ZH$vNT=$!٠Fw&֦/ѿʦ B!'ҌR~ ,8ճua9w\pKG#{ Ŵ{G~G$&i7ثz~g ]G,SpuLtPk|xbjN3)76 >_RK 9>h]:Cr2y9&ϳA C*VI9xCdO B /@}px"6=rH]?gG/#ݜ865TFdKxhrCκ(hjOUڳw۾VU\L.\; *loa> r'Lm!ؼL2]GcԢ=Y&P >?~lh0x6wbh#eJ#B xMxc8cCvAE(oe,w6Cs3J,'T ֋q>> = ԁ=Pj3G9Q'X0epsȔܿHOyRUwOn:[gH+, nT?׽.r[Vc]i0bƇf .k^X[dn!t~;lSh_òy* cNDS 26< 08  wPH1)8;fBj9>=;z)%#`䘼.*R0wnw?LUn@h*CEmU^~' s63iPOO[a9y [ts2] ӲLIlS_΁5MBH#JIL*{b1>E{xE-Fj (fAL@36vC 3t#Bu,/Ӷ4ǘb<1©)ꀖ\rVBfj!zu7.d&$eufzlfh7.tr9BVHIʹ>i= 9gj2(՞@ __G6<.3&s|J3tdxmn(/zY. ,``gjc̺k1x[cpY$hލi8uxrŢk_ : ˗S C OP5Ɔ|5^f J!9b͒AY:)oN68,Nj3ǽ]"KW !Vc y񥫦٥[ϸ!;֢*#/l::A>,[>}f99=ώ=o_8vbIEQg&Z@H->u>Xyŭ&1.G+ kcn{FF]Rbs儀W`pˆQAu/[aYcafDŽ=*30fU%#d!D-%O! I5C߉i@Cz%{*{] ߽SQ@;Bu*jxxL$?nf|  mYeMZ&L5}d>4&P`55'HYcuK rTҽk f+Ȭ3|Q L/6gRt);^}J/qF]r߾Ky"UUT)n./Rl4Գ/oQlʒ INNr|#4Cq_ عX Nnѵw?x1Ja`k;ZC׳%`.fivϚNJ7-d}_x1$r)׉_/cǰzVɬV5]M$_g>E"I9Zns/{_EWL<->k(n5u(o&\޴sZ_L<;gD!s+se񉘌xST|KǴc"ݗ 'ݻӊjr۷.66g`f1OnN#RL 6eUVǔ95X(}rr$|môr b6a]ȵl$5zoJ'좫BήzgHqSw 5eN4O=-' Kl4uJ1P Da']E[ v DF sVHReTF3+k43l tVMI)qNdԂ{W0w{F.XJȯe =suakmH3D~bܮC |AĀߗd+ ϡ1|ꚪ.UD !iP10fzRuɏ# \]~y]CzOW-#O2M{܈{4OqW CUL* !):0̀[읽0ysU8v5 ) LU@M tJ"~!f$2`btʇA}L0+ 2Y@ϧf6V|u22mn wez51kzw(v6 <_a̘ ACmg]ݮtc9Nj;rNMҸK2;%mZ>K%*uސ. ?7ti*J' U呇2]61rKBVcܷRJ>!0wܶQ&pWtsϨ)fޣ5fscl WݗiO8iH6iOFW1l l4NX`~kձhnm>_K%"_ZBI8h#p S}Ki@SoXՏvSjc017^FU0.Xr"iIaWl9$ԆK 62uF2 0JY͑݌2Ax)&΍-d,fm~N޽d3obcU1}ihޥs2hsd+;imUIOֵF%lU"6VEgJi_#kḱ0Fcp`vr(/qN >c+w~6cv]f%r!CFF  (3̸ ))y2GXmnˉm6 pJ\C?U*':-zrS*_4^{7%|$0QpO(N򀠂Gh(T]rP>DQfVkDB^F7z4 0'ͧ}nF0}jFIdf -\먴镹uhiXdDt\&zsQ2)Ks{Dk y!* вSūc 8]4*6$Uzvi1+oEF+`Ye\Ql?5OEԧ|Hώb!~1 UB( H0t?m6Xvܸ(?XhS1W1`]/AM\tue/7N^0nhx18 _My7Iλt{J05rMzX`+0X6ā`!J`n›} Z'7 f T(0_1x n8bS073hysm SDwA3ȧi1`p3>*~CJyȗqh O8b3ڝsCW pILEup1>Y&oS f&4u#5~aAӞ1ޘ՘IN߰$Y)" /_ k|ź ;BuS'fT}ΐ>{+20T %3Juj+Yl XfmYëq+ <?d&"+euR$Ż9qgMfp"O3d4lJSɭw2cݑ8 f!%&SCc.|N=7v[8RE9I,,K-S&ROx5}lLK糝,2o/Ccy19U<]4\Hf ר9(0\1ʖ*죰&sZ B\WƑbh @Y7xxm±2TXBCRxRU78M3rtM07g/3'"~H "IRf:h1B9T>@ 5=AϑWGTV`6yF,sWL rIt"Ch.`gf<T> x"k<LSQZQ G%dRvhf ڵ>f  w|llvЗX:؃_GY=/~sT 7цnM֐:8M@m/N%+ ^+7VE!3eSV8z p]ořFY&7X[OR'y\Ҿ"k 3 .N8"FRX*APsX3v~ 4>jύ6JqpJ+{| s\o+$Spk`N&$KVҏRJ/{#+[թ*A!5ZHwuQYýx4.`|>b$Ogʤۀæ2ŗT}08:'BT2a9qkS@2 sݙI})?t:ܷ2|]V# Y(eeOÌ*7%hLik b 8ԔM?74HפBG}B8wUBMsF" u3 iQisV &EY~ -3Ū+;;5~:Ⲗ<%MIెQPlUĆQu\'eR}Bi nwem'lfymlՊVx=7V(d462*[L[vhR)9%$ToLܦ995ĎƱ~uL=X1|S99cu2o,R~ "-6xS; SNzٰy9"v %cs. qT&}"7VկWX]6|42b}Ct e%nj!٩n>^ g=`P EXd(U92ٙ-Q)5(A%@FRe4z;XM˔|܊k$`c̸lCyAvz?jf<yrd*=6~ׄ8մ85 ]l[OD)y-C-mR0Pjm `92<>#L.U1f\wmeP8tBn 洏3NӞm2 Ҭ$"o, s%% K7,WPUjj@4BޖKFh`%鞇e~Q?`JZJrs|ÌWojBM[!%o7X'oMB\/-6IWc_gȲ -Eep=n0*OHk@F/SCR>S3$"aU.O,viF ;\tM7sFK7 qM9b.!v;'gc۬7M$R5ffDC]ox' 1gu'.l T[26P\9k*|OK!B;"}&=]2Emy*n89$s SmA?xe+h. ep1.99戀sF*O_;p Mh+oN[ߝ=N7xq+̗A&4jc-Y߃£obhF'S4g#TT!<[$#q"5%":%^4s{VS =T`PRQ^eA#2(YhUfĺvss';@bVonl-C̭ 2'Kƀ)%\l~O*q[g.7> -׈5[fL}0=:1h4 'yh^#1ɹ!׎?D]/U hf׬ysx\0$ՋXIa~5)2҃Rf]\xn%Fz$N35 Cp54芙/xR6"JX s !aEѩ=T=a˛dQ|榯ͭj5T?Q,G"ռz&F!&;-\-p:J@cSU&Is`Q_Š]*1aPj;'3rTJOj]ZUbR08kO %+hDZ:W*'xl"ap.ݘ$J̋[f<[PVTS4,&>*(qJ44zoIE{fdKFQ?]\D8+)oOƊ0eS ϩۍ8b5R= P` ^SQɟ"9 .޹:b[ jTTuPFHި 0̉f|5R8bѽ)$+#tߥ.['oLPM3y͔KUg-!)[Qe TxӍAg!8njoM۪S MvMl/MYFѩe9MU%f##4kso ]")f,`斅Ι/ō`8s͎HrxVG 0ᰙ9 ˀ")l<5ϧ4ܧ)(ǎk۟acE=É,!#gpgH =N+ 1v.ʄy!> uq(μND4yS=96Jb*'T2 [7⹀y;\"]ΌXޡ.Ō-Of< 3Om󜼤ԥγTdo{v8߉iǡ2O Y?p썷+e,i3'pzK\J^}PRQb@]JQ[2YN3՛6pg<Z_(JH],r8ab)9^4C4} G61sgIN1~bTJN_o> ~OtiMTLJYasKRpZJ*) -g(*shEz S$ʊLc>_HUPZ= KRk0%ة2%^͙g IҔ&PNX&*1KumsʤV>7ʩRa`)oC~XlF&3([ai7GŒI* cVw@LQJ-9D`Sgdeؒ8\`wr䗙SZEd >vΩp0VƩns6Γ|212%ac1p'qx8dN2K.Us.,vGz&2N9Tn{<>gc^ `/Ts:NDJbY0M" DDq&Y[fd=1 C5Y!;sh8d# &ZQkTʶA <3V e(RLMNIoY!6O '8aQ﫠̈k:j̖ج>&;aJ{hܼ]k~_yb;jZA'f blTLdUEQJ'ؓjSթR =3j@*2:w %VT>/vOs,V#25c"J-Cx4q¸ۍKrK;[-+xa8s0f5 x]3-gn-Sq: gu2By.P-h5nwK)ҦˊR,ebiԞAPRD) ۤ]{<&VY4[r! 0h֧;ߛ+wTe'|N S+\9s̉F5R @~FY JD( #};9y0P;NVkESpxz0[#@N#:u-\,3@XLS&>1<%*NRDq /B"C]rdIҎ߂a?hfIZLoMg\%0KйzmKǚF=d \5eR%!Ge+>E0Yծt' ]&+ΰV0MtRC"L r-) IDAT7ٮ[./Bv9}1Qަ_awaiN9*JHnY&Cy;ry KLp6Ʌf%`ZS #y\:Cx<8.uAHV;T0(DI@\ӀD´;(g6 zY:#Zv P`t+2;C'+iNj^!牸8V8$e4gdq=BCd,+_vjr9ԚҠ7y#OC7UЭ^p"1N"9%; CD:YGMX~ VeΘ2FAɅ\ Ib,yK7+ߙs9x@`l F_p7]ÜFW 9bzAMaS N@ ĩ`q7I[r ݁-ofA"5<%)~R(3oVD]IY8afZv:D*1'2KyK%r<ئ!/%SlkGI8؝0]Q`ls8GZ TS7:9xu]![ԎKrOmʽĊr?cGt84=7q`5VS[Qȑ"!:i2n\|8[]#zQOJ`KÎ5[ HRS! k2I )ݩs&>LM2/-ԡ˒Mt k7 v܄jiInrI}f`Yb9!,>h1)(҄a\j(?1g#1$Fm JSbi.)vSn t^x%u\n+htsl(;!-Tj4 i5P|4`~O+d4XD^C(Ԁe JFKX^57n\gCxЃxJ]?KA.zI;_p$\Q!G4p[vjପ#}Acx7I!=ךt ̍}s* B$eI碇DN jsQp`CWt9ۉшrA>Dy))96 5%r33%5p8E\5vFjAv<I`ZǢ6>w^+ l TSuMo/߂qN9@O1tm}*]B DB'$ɔNcMb+-qFI sG! Ds6ʒ͢QɁ.;"F҄ھF=`YBĹ9l,%SMi.\#BYycˌ/1U iά$/7C9Ky,T캦gan<ވW!5*9R&hM&k)Cee~eTܐ6k=9qbX g8y;{y<ۭ\8ff!dIx}?} uн@%7O*Ǹ$J2dkJ /1kεXى|"s2͔F[#lǟ++gc~*-fI s9TiH2k I(Eb*?ͷ^ɺ_gӎAF048 8{O]NTEXNbyF q{&s K\R]˰jJjf5KZPGZbK,+]?ǁLXF m2l;ӏ67a[ ×p^x(tJҕ:iH HOXm1(2a8uDm* WQ13%iӲSk@=ZOs#Ȃ{kC_a:ĕB%7pȥ'~V)4OG^ߣ%)-.6`|e=]Si8`tqu]pMdHd5 0[=)r@ڈ0*'S&gPr\6d>'ZLmyi,0=0ZVrzI14jR*!p=%݁ytOUu zH 50iOykxaC9LPZ0FN0O:= 0.ARl, w:d]ЂRn `:i*NY@ 0Oͼe=qJ6;-MA%_ɔ!1|i,+<;B #eN(-a[%[2ybQq)vXM8r.aw2_&i{MJ,b}fJ)IOy9t=ҠgN잁9dwGF΁U,sB $rWƑs8E8h!@TAKu%6Z[TZsBsAVF0/r}14/6\Ӄ}qnȣk]D66NRx? SK\~H]4XZ 7\ŔmZ,J,G5Ah>]7bLg /}nNL0)0laJu}c}0qGV0 V FfMb/%!K4:+A l8PĤ>G`=5wk֒84vJBz:RfȘ$D7wOs|"&xYl4L/a)5K@}yiŚ3B$Ewu 싥E5fc\㤆7UF<>c.1w8i$ JTUH'Ixy:sN%$9yv8Qtڵ8LU4KcO qKZ"Gyn5~-^3>J5os {k?YӢj铚px#.'اL>]`(&c;gjF6Uw'4񱕊F`@ޱ4 rB1\f$RaΔy*48]0uU|=q\'cr'K T)EoebL F=9,kO J24nSQs/M=,O)篃Šԉ]F4aQ  yc y|@^[X, OOkr.i3%6 >.Pi@nƘOM4ȝ B"ZS 9`ȮtkŬkin9R֖%դ,RF%ncj*h=$_3I{{fphB5ҮKR`1q2pa^تfl:,fT2a),"w懤:vRK/'\Lj3`SaϸZ5<3tY'IBf)^:e5 ~pks\{þVq# @SǼk¤뤄Lts7AZ"hF#M)#̅5Ay%9ڗIDff4}ZA&SMȒI~NyEֹ/-?bChWΧCXr 1܇{l{a!\1CJ&A9bN?Q#vUc"jwzyLk4)${, -ŽiՔJ_Wx Oث 6RB8ZM׹+/2avZmz%O-Ʌlk G}w*)F"~`?3,s.hkGI2>&'OAl(G,Wtg^l; 2bT!A)s0LqzqpZ04lo% lZ0vWY#Ye|243h jƲ!ba^_qи a)pZs+ ZdiS@5r9eZן6[=aMFSx6WDaB*|@8e6!3e+9xC*7W  .}/scݳFRF>"51k6Fl.f3KOhݎyelFs&7.Fc Svw+Ͻ_ Q{~6KH&'M<wǹSSg2#8h@`Yc7 .G0]VM80o愾2sfKyZ!zh#-49zubp~XެD/zQ9r;aqWCn 4<Ů.潒-uju/2k޷XRi.x>y"13>  `T< w3dHR FJ\'awH`Tn%syx *Xt ɏdLkd9%N=Zkkns2Ў8枎|28q8{UsnnwM qt`2ɹ[K |5ʒy?V^\ؿKLjm3HaD !e*VpIRh/vZ~6މplr7֊2; RsRRfj%6$1 IDAT.2'cաҪ\9b7QG}9툱d|W6*}/.A.y|Y8Xk,q;__P/ct+Cz^MXT+ڜs LJ6e-0pۜfKʚМsLgrv=niً{= ?*FĒsG\= ȉ| AN9̉#Rvx}s:A@fԬ@*|4A"XJ,Mxa/r+' ̀ހfswuKeimL151njÄ? Pͪ4:I0в:KGu9#߉tXN˺ŋݫ0:!ׄrv1a~_搞C&޹6$u \cA WZLk DY{#NA #f }Kt-HZgM͵@ٚ%dn+`/+xKԶ^>Ŷ4Mdw!_v8a ×A 9#,% 5Ba+p<І*äyMX%ڼ=*BI+D$?v"ul㤨pJyO ʏjo*s)*JQ\%V._Or3>w5u %Kw"N< gO®G/bRңDx  L Ǜ2}$>z8|`>i5/v8Ѯsə`5~x20m#Dgr)T_y,+8rfOq2QE;&Ʊa02>}G4A3 Zⅉ8! {ŏ9?Npf)O-3"a:f'gd=u#WUX3{M3٠IIX+&g[#YȲ"DVoA D{-1XT`V_sMu3^; ݼh鄯op7pt<KjDCv?hA[AK9Y9HӴo$K#,$sM'"쎀w-O:zTc$p4_Mo:`w 4kժ2Brֳҭg+ӡN,C?WzxpEDq1Ww8ԣ05^PN ow/kpx)x4eҖ 7̓klM @k< 'pP{06j7swy?ejzMGXTb4v(t2#XblƹNS*rĸ7h&)! L9?-VS`NxR_"#Bo#3}md5P ;!<^ji21 ׉\a_"_#}A]-bs _ xT"fءt0doB7Q-1U^e^8G8)Gv#R)yzt$ʐ:ΈI0gY pMv{DNKKe=J0=\ Z_Ť hұOyT+E!}qƎ%*#x/Y=,S5 GU4xѣ=tT@-)<x  _s-,Ԍ<5RܲL"nù(5bek}wpWFSd.0}/t's=UXuM'N]R}4 {Oͺfu1-4ԝ$fYtO}-95/;:C*$BE8:J #CZ"Wss"{?A-~V"Ɏ#>r~90!kj/w Q@SJؔ-PփӾsiyIɒ:άQsB^r dmjpK 8ADX7eNS#;@ӮO֦KD`ȍ+c{*K,&%#xY' qc:SCiFfkh5jpE'Uj|GJ3hh%1Ȕ' 'u\>*h-F+@ R/yLԬԼ:;!lE.R۪]vHǀk PsQ!cք\:@Op{#^=p3݁VD'#͓o"7< CoS#Cx f˒T:V |_ǠN^|jʗ@h/.D7δVhDsHeEhL~Z!-+/Oj/C{".0V"y'쌩AVLPtʆbsrly|j428^`j)0?t}8zsE0sJw!̌dܴ CGv3]gNy=(a:mFg"!j” e~oY:v E&(\UJ#HFo^*hY(wԮ.}ݧ*i8>Gsy͜e8nqg:b$cR@;0"mr#N(\|Wbbj#_,Zk*<~N#C)yRe2$/'(mG&G7 ~F8ƭT*'NNTNzCG<xy4wjF_+H1lxbUrx0w't>ɨ҄yɱ  W@xWL:7:Yf.,e_tZP5TΉN*L8rpU,ӵY s(ˋVMFũ$)NE8PL`e%Rv\2 ljKչH6 '7g<S5C=eO_{n,'7e@2 ۱32ʟ5zd=$`|ڡ,y. 8U@s`Ur cƎy0n0aC "llaM'f HIeU6^2SJ9*ɐ]7OQ R%`<Ŏ-$CzGގPneԸg5ʚMuLM*"N e;i.5UsC&`gžbYJ(bƻuO^%B25 #m.Bζmhs3<$ {9{ns"',88 [s00/}r0P:VCb|$m3Y}~1;,sƢ9qU*0fGG~ L>;p|$S\- lz]w"%N@<7B)\7<0b)@ K}BUSu]r.`gmL&e3:!]`Z/mZ%&ew`xjWA%8#MHvQJ*ֶ .ȍf<Յ&pUœN)FE&y9 OSw ц͜ԓR/>3' ;sмnց|q^(1yhޱ.#HNԙ]*A1snD\JfIESF4ʽVtbd/خe)d಻H=h''bYsB㘌JhjFeSDxGqø ٵ.XO_F Մ1#˞`J6s8ڼ7fS<ߵr4Ev{p'瓧ğ[uѬpZbrdTo[2ު "pyH*DB (G>i@ ͽG6(D5<68 oxJ]aF~?=hWDɺ94˜ uodnx.y+td#Sc)UNvhK`Wӄi<~6F򌳺I(.Cmv90?~/2bG)ozqj ` @c{ԕ֝HuJ% F>3TY?7L\kWb$y9߲ɉWsc)R0ӨTu]]qWx\r :J.Tp)sDz>{4x& LU5y/*)jG}DԱ"H&t?~kJ?,8 PWဏKe.Y~6BY'B8'"Y~MҲ^/ IGvj( @Fs;gZc˜E2<2Wo0kՋကV1y"QO#*3vKqEKICۦYQPMcUN@,I6ѹsL,i33=C=FP}DiuyM[뉒C .C^JWT~VM0 +S ,IBP[{`PѤX(Ү5͠.YL]<sf\KOx{l np#G96Ry㝱iZO^8*xZ0ԆȊEVB4YWNrL-yd"< oBG 29vY-[VWo_\b#ZiˤfdFgƘaQÂ4^QR@4 N2Z'n'?V2VB~/بFܻ!{\eTՏspքKz3҅x=めkfCjnFh JfAg^' Ui*?u68=o ͂%(j,RI?gl/߽52L6"Sx`#ŝ[(h(˚$P1ӑk aUv@._W `NH k5ƲP~%^`7bC>tnހ%k$(85=|f;,cPN,LS:sG|sDSMfTh:`nkFP [Gb cZ9׊σax~í `lw4|SSVZV |G!gl"@fN:2z\*J)oclbL ;.c\gw'0t=~V)pN7?3*%"cnU,u"A1oryr qtLT1 tp5Qnd>SC}G.OBg㻡cNO#Mrș1\:vw,\gj/r{pcP?{Q=czo䅸 ` y>5K'\f*vL QZeR<Z/Q {tRCw\Q;%v5f5ܜ| S7^ 0'7;?] g܇S N契d9HSx;t*ksX+r9n mEnawIg+qh @V$j ە Yg2HIg(<C*ȁ}>V7JU!0 ߡY_{dds8s#kZ,9%&<=}FjNJD:պ,W Q4Or Օ3"! K {u80TzIX.D4pp@"٥yF',a~aNJ˲&˭=WeRk{.LSbZy* H eLI2Yݒ-nJCF&I HuB4 \B1oG'q2U]s9TNS˒a?piuEnf/`ꍹ(ʘxB ÞILZj$ssgDRK̖~$3&HN0)F$@0t t-.VϠXp~7~м/c"iG5- =Mha\4GNLlͫiRa_~iYeH{<JRz>7"AD9*TyHB|"ވ$w|M$>+Lu30d43=<Df5s`dr óN-.gn-ӔxLB@:Y]8ZshP֩]檣ٽ#stka&OPI%Xk~ZskrCL B6OE8Ή0 w`3XG˗vטE>~N ΅|Viأ^1${ e[bLu?ə8cStH> t{iи8{lcG_90O+H7Kf(1%v4~apSyݻҠ`,r7#/Bk?r@aw?b 6^E{m&~KzaKX&6@Pv.LS%Ű[v .9Tܧrsesȹ_IӉq6fUvD5agm'XMX]/nK. 0c}qQZS{=>.Cg+1raJВyIiġ c^1PJ+\>D_$f*|e"r> P5t?Z 0̶+6)\F=w=v3O*rC3ZF4abKjSBKnOYy);P-Ce.+Bq5-\&0G, EbG 0LwS`2(;kvkS[9JK/L'ǁu~]XZ+_9QA\2#@'*N ySKiQ!1?_i@'u󤘧SS&z+eNf }=w[0lj'מOji@Y\K]b5bMy-xr)P O9;r@3am:ҥJ<7 _-fiF{sfívNjK5I?%9[!\o݉PVjt?5`YF q5f)7Y#r)ƩCV1Ǖ:.qn6d0v)UFzL(Jr~ \&QJD ׂV2\gMMgi@X*OPf/K^rf} 'wn'Lmȉ E"+"Th~'Xkl\cM"yikdD.l0yeRo`_hgڑYbX<gc/Z@"z,!M"S =;v7пD["r8] <c[ΒdNcrSx?vfuwǹ=G7ypF5 ,~ʅ7VF),ʲ`9SM Y2Q@3Py=B]@+L; r<4q*ns k܁@9׮ŘyQ?[`QEGYމ^|SS9/2h29ޗ[ ߵXZr:!ا^JTh{1C}@mhu]|p_`/zECÓ]ZBQ)Ft"E/ %8_b-m%jgע8}}qD@՚'\fG5Q}9ˇ7[oos-huզ²0tco3 ];"^ f޳@`P5]S 4[d)C"tz"P¾aNHG5؟'k7uBËuU(my*ЭWܬθ܃V4;TVp^~ӗ z }yDrDb&9Vo&3 z]r?GZĵ*m]v4ozȀ=0c:6@N#֥"nZ4#.1,K#͚ |wT-wT-*y<nSξ2| ^ac4(:,eQ:|H[<ɳxp/m3 GA֒&쏱ĹL 9f‥:|r]E)8<@@T `Equdd&I cؙT$.V:tws=NsT\1m_.@VMLh1yӪc]}lp~\8ו`s3,S ˂V}:aZEn0t~pG"] ,a=%ذ5$BW J6ԛԺ|&ze#˖Jb=\97cX //Xҩ ͩ 667ƚ{?3ۖ RܶjP-`g`vW`F[HƟb<ȵ 9K9|wosAvG"0MgHNLf)<MQb{ 67UɽbGc޸I\hAgdev`)3學;wm;JieӿV:>xi1V1z_@,;0w`OV T6a&z[sj;j*0jUձw`~ ЗQ1]S{MH9 0mJZAŲPLҫZ7X7mAlDzϖbZ /"Z$t8.Z'ƀ·49#4Oe֯RR {]'QB8/~aڐoI֘ě8@ĉH9ZڛqҷؕC#"1eL3(fۦmv=к]*O^݂_=33[x 8ZĎ>7 ҟ DLy/AL-:y!7Ya`#Op揖˒Éb%= *23+訿Kcz= ,s%5k14pQ:{t9q:{ꋝ"L%R'~3j7ɩ/O>MHscigR^ޖ"KwZ-kqn04hv\co7ta?ZxMig (DKg$!= aa.D'yhFX"ڛU$blLDFI'|xU6{0o?s#7] 3m ]!S$VHLk ,4de<+Bᔎ QG 4KB@g:QudEH"S!6cس.t_[XQ3.ub j|ٸ(ۙǒR8@Jdf+! L.;k%)Zj2#5L`tu( BrZbUD$tn8WJ"I/_(M.gIf<e(KFg f#qw%HY>ڤ!O,Cb1LЧ #1: - 2=X3A{VgP#U(L <;܈dM"خ3^ˤPy8[EbU 43TsY!e';-HDy1l LUDGL!=J#Vv$.xY$TZKn4䇑6LEe v)Nnɐ]=Nwrᇼ6f.e{#) C`JZc XEBovnll/g4m2XzTj΍~ 9dñ D3C֛9zM\Ùb|%C!Rmx{ADL%Ppf[ M`X~Rn˔H=i%t{vI6 v3mvx? 0Xe4(=H聚aJВBW s.Fub1.mn0vrRH$?Ƅ_V#߲9^gH@0b?Рu/ %(M)gaDZdƋDØsZucxL3Ӟ@!5Sl336A E:DB,U~1}aew9ssJ4ӘgU$uaRfR%WVR3sudDsɐR zNm=p,B])<̘ 2@!9Kޭvd^kimN].yDLk9C=f~0`[ʥR fV$B_}HFk?q=1N[R-fpqʡgkJ䴀`&gwȥzRTX;ac9HOp̍t;y%B靲 ^fڃRW2ұkS(Vbʙ*%uRޠ9M5L$\F]H4N%"3 ?[ DhFagVVGV$;N`I3h>`/q\Du("̦1mF̔n6X֑E.[.9By 9]\[LoP䠴_`Xh14@.4Cb&L4] ͱVJrpZ;8o`( IDATcGDc*sZX<6)5KafW:WW#WX:]luf LhjiYdAr39)Îba7X7>W;6iFtV[ fI=xޯ/t y-Wj6OhĬf[f7(cRc`Q^3cc&IJ ncl@=4ʂx9HMj]̩'|Cq .6EA6Y I_AQ z:iƴXV|,iY-:w(X2~'I{=]laWS)O.yڿJ=HlYB,ئ#NIh>`NB8>6FC7.~?7$*Ni 9F7]?`a6kWTNd thVLjXW253l y^b4O@/Kmx6fMK 4L}b>D-v# j0. ̅%C.=*dO=s#W$9qK6 O%fV§S!x4F @%>UOΠm^tay,D sͼI#@bI`k),hf`1=rvDj]c]V ;Yo4ELcK)EW N a S CdȔa狹'k7Dv!l$|I 4ӀhڦkCBߓ%A*bY,l`&>-rV  ^Ӫ&&)@r]@V9:`V ߝ,fdO0n1W;pLDw ,|`W.0tȄFP0q7cYb!Ȳ JcxeglW'oȚ tpA",p.Yj0;Yd*.Vh*XtҜfj)6M$qc`"Th#808/{[`Wvt"扸]PfH2mDȎ>Tݲ|4x,~5ޚ^X` Ĩ°Z^]NBy`ۨ}mHh3smxz e_37߇/&M2"VX`#a\2 8|8ND}abGZǑR7pw>V*KwpR;[ kPcHt6o^2ad5I _EQO CCS.eYhJXKCYM.\=v}'"vN0Y0'ָ u@3O9-IҽZB=R̪|KLNZ|n ;#+Y@%A(0am#NHq1fIBЪ [UJKRvS!8hc.>'h]c&BϺ":بcFR\>*b 4m, >ZveOZGRڦ4s4]lÑ2 WJF$Q$.Bk\/", HZmlgl6 NC':к/=o9 (x9R>YE4f% }}Z&|4eraي/YԊ[8Td,]~J `Bl0Z  SjBJp'r-n]=F3q̂`kam+PS ݐdL? N`K !۪0'|dՊizkP&X(P"&+`(KH6B 8PeMNFQQBRdfaDW+ P7`rE-v5`G 5Mq*%Gv&~dLtO#LbLՏe[E/!L&&C2Gf{kd&?<M02 .m[ `b_O Mm9Ո$ ]N(ΰ3]aX=).$!5Viۺy@j ('Ȁhʗ3D"auʡkRT B<<χls1 D}"u)`+7]bg@0\b$aX?DjeLj7]n0l\ 3w&+ FİԫQwTO9# l13)s{LŮTHZAva Z+0% 0L cXv19Iy0,>d%kB'_`XAP}!;. \V׵?C3 ˆaRJwib*`NH!VtJd-K,g!,e iFu @"d KgK0Rz QC EmMȲze8~a_d hUwY\YT5E6h>YҚ)ɀb&B3rΑg+J]F,BP`Y1dr>|(X\L-P]PrCYͲuaz( jE~%CuAӃ5[ujܱ°o_L52L&h> nfhLq'B 6M@\JXg5pexN0gda.ddf+XZ;TgѳřG & %FpčS:h`gB.ߟ,n_c5۴ noZ&|bC܀0k& zJ9Wd8sB r@`WF@=1"+@g"=.Z!ˑ#c|ŶN|`,T ;Ǫv!4 ,'Мj!Y'V0N`,Ch+ٍtӚ 7A*g%º#&t@b5L܃y],TCy(z$ZBjpEcp}''$#}[<'V0iy؜!.[!c3 Klj ݔ AC`Wy]R$k*1! "!\1ݰNJc8^ZlL,90~A~3dk4 XvW"`a aѓnDv91iys3$pZI{4D%l0tp`KBcu3d|-қ)vʠφ\Q8M.s9} a2ܔdla-~*J;-hNKpZc#f|X06d8dH"Q#'9_1H+ڪχ@7te=S_M30P$c/04r~0l0tO ف.XA8nC',GC04ҁ>āV-H*FO۱l4S273YcZH Ͱo$eKIX9ٴLLsZ0U@ 6 [޲B3]('OľP\|Rčַ;3nOruLݥApBokLLsZޅ#:' 0t %"k8eֽV6enc!<s@R,zF50BFZ=]ב4.J&hx.Ԋ}YF*"Ȯ|#sb_ɇITcwS!v+/0е6U] l0+7{ 3VM]β1^ CU&9;<SY츒s21iy'",S2pAXRc'wg <º+%{i.X @e%40t<1aߔc-U0w%Orbx ^(;"("feK`?+/P|%k$@iac@(}=sbd{˗ %F,Y&:M|<9T2C-!oL0ng lO-,d79,t$WڤiW^k\^Y* 9d-dL9-!"ڮΚ$R2J!L0^#>e[ Nxjm d%o96U $1.NRϹ,PcY^maW`.׉ml14z7dxL9-=W8Ksi`6wb[d_zd DeiyWi<2"P11k==qZ&МtQym:"FL@8-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-O˴L˴<35N{Lզ J0L*L2 2- c Qc5Sﱟwϵ]i 4e9p+yO KSU\q{wPeZCǮZ\? $Pf21iyBT[ÉN-;VHsqLltiytA1uQXz@ /1 . 2I6n>\L|oFwUi%]J)T RCK%luқ<ˤi>9F̱J,( KV5{vb9 n"+Ӝ |DA\BӻO SYT)ŤehLՏ)b:ihN{T%KC܍SR s`#@<')LO2<摀I(B>^ˉar{Kr'KZsb22\MeSl-W-eHH|뷤VIp.X*ΗlӴLLs `11Od$6R:RrAj[R4WNæm3NN"LLsZ \B r&,,\",Iܶ_Np~Lsix͒&$I WIxL( ˑP94c;OtX ңXZJD3[N bt X0L9 W. 0'|b@2D ΅%56J3˅N2rT9x(\R #B{1iy).1@" u1=%Vap뜉697#ur*,1=dNܬ4͕@ޟc9ț7Odhb$ ^ z(SR@Iyjr^W"Jo2(etNTZdz3 4h)YWE)@־rUXHT P1y}tZ&|$ ρc$pH7Z a\l,v pl`loKSJY7\LЅ, \f;<%sXI$Ý~.`4`M*4[M0|lskMeZLwá*͑Xϵ+`M1u#)*a94Ĥ :Rl2;>#߽ʀ}21츕&jQ[l%Fer 77X-7Rk%c)rX ~Y¸;-e{fV8U2c~XRN# JFDC|0XSCQn?s271-u^MDibʵ2-N8 J*t vF#;},h(:d}ؿfML11^z>=!"L:'|׏QI 3N=ȄƧ@Yk#,َԴR0)qROeK(Z d-d$2LXeQeRMs 褘bAGEX% _Ƞsc)jKAsLdnFzU Bss ,0N䘦J9f;qscB1Yw0êu2'Bb]susFӳ" HsS Ǝ@~FOzxe'*eTxX\ޓNWnޜgjgjpƺMEX)˔Or e"Kw~zAc8;JQxs߅52۫J(wY f?g. Mc\fc߃π;#]ʺgZ.I0'6l (5̫9svU.`ű1 ]EBJm\]RkwgzcalH\:372OI>^*a 3>#eHa%gq9WGL= cw 9xY` =`@0ez|'`?ic%UiipV7Co}%Ga%n`X"'X2*/mgC* ԭ_Ӓ bcX7TDTF؃'=` gSSޘRF;(WlDưʎRr) rJ#c bg[axl O詥9sq_'4s6mWe%]3s#nj"cN<*.5쩌FfB&ۭB IDATeF9jb~ڸ4ӝ cKm>XbgآKO7 طP}>zMֳ4dL՟"Yt6l`PÙDŽ%'bId`ha'Re2>u1W̝sQ];f̝fT>/f4~vUw݆\i/N<:v;DB\zI;9x Ϧ '|F^3J(a){L8"Y)]9WWGf`-r ` /!3/ 0Ϙ}0&Wm@n  W'{`y^͊}Ս#O挊cg5G[[5W(QʜssLrH~? cm ]YB*i(˘FhM$pO`GOSUL{3?߽ϣkb÷[0d>";lj3 c{s%.̲P[7uTrpku}x?]UK 0(CܵA%0{s}Qц\}A33MȗҔÐ9G}>!!0Pqʹ_K$QY]֙~Lux*̪&GDSGU]?E~ p}ȗB.-@wbjI>j` oWg=҆@5vs Z ]I$1\3 YczcI2\ WݺBԪgžID:U&{wwfwxȌE"牪KUDKܮ6`!$ u]dc1*c-9rh }$Mza1gImesڤKHo$DT_ꏀ'k?]65ۚكx,ַebOm7]5 8K >{}g\Ě P by?)F 4 9. `>RD9O[jfcVgH\Uf|a0mm-ns ~G z:zMT.nueɟfZ4q_YƤ:7CuxcQU$ov=k?YnV-=(Ԁ ~^|7jq xC\V`SYR[GN|@~کorc0J0-=j3On檣͗ٹЭVܮ@+G ~c8S,S>7Ui~~#,Qffu1=ulRl1UBP|?VC@s2v\k[,ͤ@zC'>rnfן~/~wݟ{m\|$_=:Ƭ;z0a9Om->Cm_qXÀO\ u$i3F N܏(%ƲKj6\odRɦ&_2ͱ^og6UU/wD?y,gܮ9[ c(ߧJ?Odo*K6SGϸwwV+i%!ˡ*YcL-d\czF<}ٯs,|u(2sgk ~P#1Nsa|88zqGv}9d2c& SrIA}nY@VUk699}4eW">i Wkڬ_ivuDΘYd 4c﷒H1὿U&c'>-ڋss Re\zc[Rf}hnWl11uSQTݪ^1?j6w9G~y[MXdc{.FKr 5HTSt4 W|`䋾] 0F@@ H)Id0 i^0'X~XTTC. pՋjk7?jv/#fsԬΩ9ny> @ccz8cԠN={O 3OUuG?q_Mս7wKfYR#Th̒Oij0 y]K"iv-7?A۳;_n=OFGC+Q0HL&DlrqJClk4i3Z*HYmI ᛋOpU w03=wޡl^ c C]QдK}V.#Yl3VHghVH]&bW<@n~n[k=sې^kĮ\& #TDŽOh0Ɯe)Be@y$-?݋?M5 xנ]]`sv]&OOJڤJ 4X'Z`c1`;tM 3'Ջ Mmzg {PpXWq[7 ݇z>3H?L*ϱLk̋*9y]͔z+4{?E_p]M;`ߌI` @URTUc2.e.RO; z(Sc1tRl֔ FNr܇+9V ң%ru \K G@>(aZSGw~ōg]W&nƌmЬ{ FӪal6C]ח%ZɞTm&3^#OZ%j&%ZV -S3fDj޺?h:5d8Ϻ„Jiڔaϗ/)wz"A3)2E"cY#yO, ߶\=y[&F4 'fK++.ASv4aF1%Xzg Pks]BzLy&hvpJ_UC:g9mPѪL K[3SV2͜6x?-%,L0Xg3[/y_-Cߝ bI ͽ7#iƇ2)SHv)3r"v@1ıKɭWZ}]?l2M/I+lO1Ϙ~ϴ[]-_\$/F@ecXU32c4iW)=ZKH[/ 7» 6Rkg%r%L<_]1-BR#.QAJ>ς܏3P/:96ނ?{+30Q<eLϔIXz߱cFŌCf\ k zƂjfT  v(B.hf0<3:6=.8!xgjjɴj:&bYvT T[wp\Uۿ'DR8ҥMcJ,"wDtMz\@$W"cӵd{Տς/3>.|;%6Bw6mYr Ak`إ(ca,%%+٨1:O{Ƴ l=P`HBK /Cr^K@ݿYU2Ζ3N{E㜀 }㱂RS#du€fwxO}={F306)ɍ2%F@\4HfIΘМl,M"k{h;|_\_r!飙Ю/>VJHM0c캌(LM%q.߂ӝ FT*@6zxWq75xh~.agoKMx ml,}_CHs"^b{ZO &>z$ÝԘJ@27˩+5|͟[5Dą6+lށ?}k)3]d}pp0`suyL ,H>O8>1>x|n{ 6K-O{Xj \ 8sAx^G3>[Z/Khra& r՟u׿vy:J8ב>9dE",yQ\ CIv#Y|dd*.c"מ_<أm6h;y ,~ˎ HMp=,e=#w[2%)_:NC86Id}̖Ãh¶&69 `@;$d %`J P㉻}:utٷD"$WA =QcnC{q:.$@,)vʅ,uE奉puKIqIQm.O{ 9KۿmAo5:e۶3ue|ΎL,X8>S, I1B])G] ^0pxQ%*Vl S KR=)zw/+k:|brЩdlAN{)%sM) ό(e F^e#KkXk`gUHc-pVwtȥdI h47Pl c,D䂻E}} NV 9;~rNG% ytt4% FG^ԱлmK ڥy' >0plأ;p,MhDB-@Ʉ;'@+ I'8&‹px׉dچ=J[v4p6G`nY xblKϔ%2(8|7A3  9AXSIڷLu>kG ]];{#*䁬R/ùۣp;eXgn;|rѦ3Y#")E?Dٗt$suqRF=-YmA8pxUNSxՎH.iL:cKfCP?W hvTf@776 4c=SKɉ/)qw/$HSSwkx>Ŋϔќvܮ:d|>G3eZ!ns @~u=<{ct54u`ڃדeI>H 9) &! (K}= ;h2 c3YmS~OA3YEn<"<5p\JBJ0ׇ4SJB/ ހ2s`{>x"K"CP{N7LÔf!_Dʶm/:t>tu;K"} e5ۿΑȹP:WI{]I%`"̽3fPL+"D^ﻐP+y71_vo]%dIy`,בYFmVдS-Bِ2:KrJtm _\%ޚ r6KU|*~Z̄#&K;7]e`H'|E${X~ߪEd/>2.ȹT$lMcKH\]fCUãH+ďlp W38W7,LJNor=ft~:aX$. s!?LLwЦ-c%ML{ c?_r~JowͺO\)Si3Sg ,{㓛]w;YA6rB]\fȡ.pceIl|b4QP?`̆dAǨp^ 53U:ealcT7˯nMZ^\xͧ$&Y= L!'(Q]֋./~[oLFY96f:"+C[%~).e.q֣ƶfg6</v Z1,蓻XT=h^rnp yԀY4J mK'IQnF^Ì', IDATu#J{c{;A9QZ7B~?WJ`L_9JT)XdOʶm{}:DP#D#Ka@H;(Rn$*:8Ȫ_:K~pS!PQx^gغ1YdΚp ,|&=;V(2z}A2MP)M XOyHwPS]["FdP9X\8^zmw2~Y"ƒD\ʍ-)ehu$xav?ą^Cc˜ ݾErcZ-p2S.݊$@jCaY)AFi5kֳ)q0X1~fxZ0cE8gƲۺ 5zcvv^?vQ_A bkr hkd By?i%ƞ2(gGQ)"|˔J^>θ3EPvu÷:~to{l*LfiW15h^˙km!%bP{*AB~G=0 N2)`ЬhקOd2Ա`ʒ!+ rݺH3uh<>tcGJw 8z5X3=p'֮{ރSZ~.ށ/FOwgpA9u^.'rfL %YD#˨c~ϡu R~XD I}G;U}JܽRs1Xw+eҫw 0EdtTr2 yF~8Ly䮽U<' ddRfݤ7d17]V~LɃfA-^x$˚ҽs+ #;Z$!Z0Wq%#/k}={Z^l}@/pz*mnTM< VՒAx [ۘ IxT뻊\Zupfybu+*]sL'-ύw=T2$۞+%t[gc,2Qoݞ߸sP]o7؜&~ YVk 8)fmF/'ESXaat > PesڜUf`_# Ep g;tYҟs&X3ri^xя鐀Yblc 9M?fk߮?hHJq\LOȀacܕ5>3r,~R[\ggkf^vxr!Ȳ-Stgwa(`zC-R\I0:prD12̑s_uwsx;(pA׉' :\3s-8 ڥ%XtEW4sn0 x4'8{_}xz6KF¹X:oK<$IʐTl!RპUw$ꯁqRM]޹(].ʞrieɛ:n;ӝh| D6% ){|[Z>mg!g)TmU"Tx1g wCP& cС| 987-8T~[V1=C.`?uH.uK3l `B:_{ uÃ.'b q-~Z11N {ڜ5 -ǞvJ4kxoc#r/A/VGJ21\=+9ʙrKro͔6t~2_qg_(f$);<, :Gmh бp9Dl`TpmpB? Z+,MxXR,+9~C<`q:zkTa8"4yhSY_*V\w gaLP0 Yh"K S2w$*(Xv}7,*:| CXbX bt]| AX^R^?u]@-eNU:lR oY2]5t gƌV2P2dW25BY L:)8/PY)vIVHI9rxCږ`Zfqb?G5:Rz\pݦyk&Q8+4)UGa6ݺ٠u"TM;3]?A縷Gۭ>8Ю۰|uV" |#S^.$s|d\x%dC1۱ -~ khrITma +iT:}7 x{s}ǖ ~*\p7"w312 "wo9V.X2&Fz]Tm4K7ʏRJ"Zfp#l2s~ n~>z?wKcgf!k6hSp{P:Bk)QOLJ7->BJ+؛H{hXSzZb=&cZ(0uRnJ%@qJnj=nQ%Fm+bVgf;f _%zL9"[\ D]9]/oShY2Vv:WX{R۲g8pnk 3`*AdF8W٣)1e7m߮m78*9/(|NTȷsi͒ !KFذ4fG>SO0vya. t9շ 9SpsaJr.%hP]"=:m۴x#u&8WN~7Z>-~N fv¶L9tLhYKt;p`<[_Os帏T8oR KaGlЭ7*#]h1?DXpďM=n>Pcc#> cl0JR9MA(&tOY`ZIϠ׹S755y?A~45 ?oodɕ\̬@4 5h2M3&d(3 pza;n@%+>D{xǗ2[#~j6<%;ii -2 C k@=J2`,{{R$l E֋5맞`C:>%8K)"6HˎLi &u9<>cwcX_qM̚dA6ݺ'1 8]Jp<rS"=mY˗PN9* }"H{m+0u#"|&,uZ1(ZqrV_oaaI8krr j>ՈSiEnὠU GA!d^М}4 ;Ϟˌۇ(WK%F$#JY\.' sJic726Ṅ2H`eq cb [|^^N)F%~rE jj{w SOmJGX+a"bM)oSH?P\3boMd_L05-eѫ\d*֞ ZɄ e#9xnv^LdGov4QҺ4y! @tDR)y۶hKkK)\368r! ޝ9DDtBo, ?%J{c*`#Z<4=_,xwLp_&mJ\&)f5V5L qh9'\Py{v:M(Z/ O$% ~ @i6@lBvm8 M R>  f^ha!.?XGTys.kS9 9Eh\:+|e&(}0V avf}ZǞ{5@ey~G$x"ZHY+qĥkn=yPKf&p_R49a#vpiTiH.!:) <вԂe}k+Cr㧼G&Y7/ww :Qh.Z7n<-(ׂiEVsD~-iK GO- * v(s %n`gǝ32SGov?}3LC9|R}"e~nV`5xL!"tpKqjEr5й)Cj7Y=3ߦv4da^ԚjqMzz23yؠi?VLpoBjXL:.2w[dFjҾ!OŕF \m`;ҹ6J ,r9sM1@헟hb{p"E2SSA#M#NjŊ2/R+m:x so )Si%\r?w*erVoN~ 2詘96Ge*:GW٨֦S]ݐڳ؜8+d2'P& |<4s j 9"\v Y>WX]-fz `2W}`yH@(R @)yM06fm'GK9BLWE:;WiaUwV]rĨ'{Xm k磇p㹳\.0% BRsh=`z{v(L{J J=XfvMM]0~@ m!*PoYrߝT^L3q(7?H{|c``B֟fTvD)O 0v Rs 9 {:O /׺,e?K\A-5$^;j6+Urws*4Occ*0GSi\ -tEݦN$eG)Er&' cF?~s]ڊuJ>ӻBFK8V]-_p:nmCw~/chk3uQ./!Mː Ӥ[$!()B#|?CM/"VcM+$P?rw1DT`>8Q;8\#\G+ XP7|nD]  :][䮼늀KfEoT&-?rdhi";+EQL || .Ufk?7-^4"/%v8ђLvs.GD%&:Q ?֡Yk̇1c*࣎ oLcHQB )KuʋR2|.&T1Фy@1Qq #ᧈY}7ބc"6V+PHr^v罆 IDATcE ?b ,<`8=q'˵dBu~Q TxQK+K-LT:AEZUeM"02a%G&.+*X#ř/ K6-V$)EcƠ: V,rr s3=x< F6avY '3(5 fjd’_w },/pmDˏa:/}x߷+i˜b^!3sYsvv`3zLu޵c)`Ӌ-geH>3JbBC1{~xPX+Fz 9T\f,1V̖,/O* 6Ʊi9g/AiZjuI}@۩eVkN^̪.EoRD#'csjl %o= ~[E'2t(_XS"e\ц9%<#:@=QNVQTlAW%VJL=|v25W`$#9FW8 =%4'ջ gKq4X< Wyg229kt63K\ЉAL<:5cNI=w?h*յ#!scFܤ@wX9( a-0>LKWÏ^,!Ed.8)jkH/bmaMrv~֍19 TȢKDCĞsʺ%\lDhyv;;دI[=Htmf`mcM; Py'a-8J<tkEV?l40ǺL"Rha`uz_O};fbC}d8ګڐH<[RU F6:.:&}vȓ`j,φH)ՕAj\Ip6ʒ 9J

 l3 mDN<ـ(`tGC '(PDԤݯ7ȉbN@h@lb@eg:Vi5=: ' D8"8h;汕bHv&8 _-1Cv:JjR7Z}Q ^{vF瑦 X9B'b9;O56 +wXE2SUM!K G NM͇u 9Ɣ ĂzČ3 F\v*:9 @}jע!o2|Ly%9wL6R^# fuZV940sYؑ8%c)筩ۜp~796?p/rS4["i߀BnB(xX nSfQRx|`mDs,Njd=áu]U ' 8rQy&c(G`-t4JmyM񯧜ID8 i7RŌ+fRYui9=HD%ܗUDSaoxUJjySj42)v* Y!>,"dW7D'y ;:VmA _Yi&7jS2n KޛJOj5{lJ5|e)_o\ALu]ĸ<sMk1sJ\)sk\fnLo~Ew@JSE;f(qց۟ǽզ(>ߕ~H v57cq5HԨ&ʙ [\%EsCHR*SOKw/0lP%E2$%1[K<ofyCPk<16*2d#XpѰ{Wưk|/`ʐ&a<1:/4Vk18:Hb*0pppϙSlUEsoB^+ q]s?{b{(7q#ۄPFL& qƣm6@KKU,pM"o5s:_(Uh,a%7ܬTd9yp^ g~ |E/),,IŚqdHhX%"~mfFcM)-Fx옱ɔՎε4"׋^J>k2׉+n c ҳy3#=g"\R]HKNi^ܨN|m*< L6UdiImTc(pהGFAJ!(Ws/N1 Eniraӓ(=𰌆-NsXM?PDKN͚!Kiy ynF9Z%P>"Ai;%G6%{lxFC=}DaRsf gA _ |"{6]B!JI@Y}[KMkzqIlr>FVϷbD3pk@baFMUAϙuԾfQA{h\.56eH!ǮʋfTd{X bdXLd0ӬQK5܀   y gn4e(CoMcGy zr|v>&tsc,8C3'c-v1˩gii x&/cʧR 5bm}M}h4vv8Zrd9>3][|Ρ-S q#iv2Uܵ|uS)WpxNY  ӜqBS Z'Ou o0E]HM%%NHlX_Aƈ S+XO<ε;Nj孖1JD+s $Wñ}2txlıh8<^uqv@tH x}ϼVʒo)(dӞIcfQrz䄴^9@n.1 <e%՛tfqxDwE@f炯G٠ ׵:3sz;/Azs@8ޛ5}q{4kqC<bJ%G|B,s#WtVwҔ89<8weAp+KN@fx_8M"\19KNŢPѕ0x.wa-lge_9'4#cxsJjkҔF`$5V52 5KFp"Tkp@~8|?d*OI.p(A2Ye`;0prpE5*AY<^V@g_n3$m΢h9)FWD6EOQmRl^"3~7 ۰ʮAnZ1OMO[yǻToVaqjMPſ;K3ryJj4>UͿ0.Q)+ӋT}rȨJIryaZGnc,AVHmU3HsRSďGZP-p?'ӧ"|3娩2(7az|P̵P¢@Lખ@@GBP)@᭄YB֢'&;#rNY\U&v{0`jqBR}p0<ܹThYÙ nE I'/p ^}MtոFOi|~4UG{CZܟרoTӤ@n"0{oߏf"r"%*rLizP)!L W2) \ R!eơz\QYA^fTO@"\W耦49۽>'Oja) H7&׉R"DZg[N;{@oj<^[N^WO)c4|4z0>M4jN ƃB!:1j pj#Aj rĹh!]Z)̞s4"̄0$I'M0>WE:'L{3G7Y`c >Isuo nHJb6G)| %5YX?ů{N ){i"i׉TJ)AE߾G#To">:\ @jF /^{31\6}xE&,M|@W0yN5)gR IDATX^77 _]ůl}DtCq*ևs\ݧ%(k _) vQ|w?ѡhܥ6Ҏ_H:c+B.+a֡4MCuA5D-|{S씯.њSix"|?=1׈8^YUcf"$,gH& §`gjiE?PP)z:ܥx%ÀM\isX*xg"3,V`kض'f OfF$j=v%P7'QA8+A2tl9=%Ŷ6BRw ;}(TT/Zk 5cide1C3~|+Qɔؚ{UIA|)W&Lr|(R̀Nj(&2C`>&Js<5"Xt)MVͺM 6D¢"Q](k7Uimr?ۃle"#הXQ{mdk Esc1)K^S=~ ʊw8ͪ8i3>1K!- ݢu< 'C -iZ܌J>x S_>6eޗ6 ]z#c)& u5=B6ٌTƔLVa,1xu 2ͯ 9)3iQy >\ģZ_*4r'+.uorJJ{9e6`N #+2q76s !9Q q[ٴb6d%)xwՁ'yDA$e\RnA|mf ?3s͏ϴnNNN(1c> Y]35z?/1a0L߫8SNRw[Am;<y#R4[NcP4 _dE:8_r0Jq͛cQX)PA>E8|)yCK\)ES:23u65E̚k_Gs(z显*p5} pK·]Z5( vyhrӰz9.I"֠8|&:RT8N;0$sSXS)j̣hVw>09HȔp/ #qK|-9xjqβeDƤtvj);R`~ NQ 5UheXB9|BV ?˙umL{jz ׋H}cax2YN*;%r]-ci9 OS'tT0=N-Ɵ} "ft 8ǸSIQ%Vhwn8=5s ) RzǛA9i0-nSLzz5,)ME^v6Ӏ_qlYވ"E31ozWN0h2"eRcFy=&X)9Rpq< Xc3׋sB6\9ncf$f92ƼeK~8j՚~Sfx5cc qEGqsH7ʏᒀvՂgX\a Cb\O9kT*v"H8RKEN ׽i5]@(zWu9Qɲ[p>01љޙCC#htqZ;nGц[8()p>~{,q*9XOȚpw 㶀k &Gusaé@؈y+cd\*Ј5f'høv'UdjE2 d# Fk1; *ڇ)%6@ +q(tAE /Ҭ+Eu1@J _81UZFu3E~#ҩx{x%)eFNW˾ 䨦gi$Юqri2t\煁#(Px(dPo}9!2Ͱ4MDP&MJ@isyg8S>1b6YQ(׉q%;hSc6|]+=g٩=s 窵sX~J=_hDD4"Cxcq@.z,5sj/(.#*Yx s&;))TDlUdT@J>2TSY.dA4ˮ`E%ݻ`˭FU/}u>s/w=J)RMCNǡת%Q̌Pˇ&&|&E]b"sRn]rrPqOkwc$5+h/ZgɉG:M.8gDBr56+6NFR݃iCu@KLpƢe,"_ v}^D,uGZ>?FszcR?z+^ߧA XR;k9g]Dpį9NR\yJA;@ w-*0 =3eK'qzrkkT*z3W@Jk͠R\ yNy~?N { "{ jϻGQő^_i9[J ^ 2AZ{ ݪ22oI`^I΀n¡$ϤNN׍|i崿$a/Z$ [t`͌y:P;]z~}r$3$M?61x7>v{uذY ƶtHJֶIrŎ-R^Ҡb=B NP~Ou|ţƵp=Nky. ߤ@Ƙ8T#-#NL+zqUǛz )>Pq'Vo.xkNI˽tcM%8d):R O!A0^} 8>z*n1ڵbۏ :Y {g=g ν"[m1nL 5@䄗hmbRDAݠ>wpQxqEh,skhZDӶC @"Pm]3AC7~qM> M8vI.s?,e.qUaAW$ ,*ڔ(sך'Qh!+Q)Sl֭Cb95%8# n>՗~0C/{H؞C>j9gYW;Հ{qg¿1 gONH\G@j'-"~P\8V j|吶Hs'ʨ"˽!YsgjJA$@cX)|R&5ƭZ#y^#ijas&1M+@lKI|ۉw9E>JA:.8]7p D ;.TGYzm5-Č 7(g `~~5L@KOyM%G| G|'*5st.tƫg461kGftHu#%;}pʺ_PB:v{FsZ,$P Wkp ԥG%1кㄗ }X(s@6>B%Nss߹'h}祈qs~ "h&ihJ\UN&V*>pfwE*~+o&C-KVDaRXLy@%Т۱d$r|l h U}np(5\ P/|=լqM0ws QTi$5B{[M7HcVxgX9?Cj/ۋYA;in1nD`ٿ.Sh͙3gl<^<8\%ïnLxXtvt `_D5@u}"+D3 T؄Er[wir[ V1{@돸ݼѿѽ*[ReR,dKJ{q S!&K'Y(sHLJ̨RvR"9﯈+Z,V4!6WGpFpʢ|P9~Q)~u+Ug '3)>ܔT8w۩)ʺť=-i``2kǙJ;MڎxL=K'T;jAo T{G{!>_(r+"$sODS*-mpڗgK孿{J }CK 3i>YLS(t/ΩKӑh+x/EPl9Ej: |/up֛ZzsxNyʗ| A+L΀pi]ʥ#i:&r7nJ U_Z?@Jد0J[! AaT)˰}(B&VYUFΊ48z YBZbl?ndc \"@j}}">i %QȊVK]n TX])QUi;Qީc8'R]:w -4F S-  a=`%4X2c-\%=~Tq瞃<%V8Ď~jsJlYp+,G,ʌ6wK{LJt:W)VHY*<I*1NM`\ 2 in0>-g^&p_Bkiu~Fa80H&$<+ PӅb'N IDATMqG@tY)aBgAt荫̧Fk`>9?/bkyCڭi 7>ǢIoŬ0;߼qB? '}Π-֐6ˌ*xJ;CALmhwhwѰ}Ԉ|qJ2 "q۶:m6ŘJ("[ <1C9L[cb OY\p݁;Mٮ|wM];Zhk%3ޜ Q?ϖ7ouO-/G-Wc%Rɍ"7KCھj<*pvId~Ωّg WaxX Q)~_ ~s)"d\wLsQ&RQeyfY#]Dቡ21 M.FsY1\rҦs< ·f2 ;U>#$X@p".\m_q%m{JNE[$7"gkrk# sFvUS"MJ=AED԰C>TR? o㹽ڃj}ޣ4U@9f&Mjm\m%=p޴zԭx\0QKhb3E} E"X@ 4S^3ۂZ#٢ϻMm 31sD-\/z7(/PPxMY~L_["c{s`idoNw)~\T- j@m)G )y vGzAr 0A*:=ٟRoV\mtVQ 84CN|RGK\\eGOG/6Dn_ ) G1gj~ER^/)sD%we&}Vz^AD8h&򬱌 Z>I}cP" ^sw~."2q݇(< @M?#YXzJ *V$`u(RGq M4E/+β<#<%]>'_x x LN8F}Rb؀ :v^s˕I-ηbU4[ Voo$"Yrݭ!"UNGRng>*ş`9/16%^bZ~4gxg0x92[ZD;X8B=g $h"' bOiE8օv/"Utj{7&"K5|EҟA4^a3э9G hDSHsròh*k{͝XZ%\9,@QSh҄c/P9/HTRFC&Ȧ 4qݭRtJB<8w)a fDܓ\ܖ8m&9N6-NX365gUN1vNnM -yPoyq%9ɖ˚誔 {wi ֳ. . > /+o@`"z>%8]?A*| |x]8 )XkDi,$Ǒ /#S^ᧈѻs"MK1g-"qcI(xɭ)4Qpq[eP4໰{Q';dfg2I}*-*`O {7Td *۾P dfރ,> 7%4]Hwk-7Rd=c4Q|B0[2KaOBݸ UGDZ4@q&ٜh-x?O)N>"M,Ѻ00&'$O5M tZL.Yʾr.5ĝk~ߴ;mԕ&IZNIywa2 FmZh i#ryiĞkyq'lsĞ|[s}q` sjoWJ|0):c_&ӄh`-Nxs9!E8~ 0JW ws+7UoJ mfw P5O wh <#"Npp,1]- >dala~>ԨhH5D8#~AWc&_ec9bJ2e*&Ex tUS{Q ѳ<|9%Hw'΄|ld+fnJofwOi_p:Jw UMX25wy[k !.WQۉu|%@SOz&27+Ҫu*hTt]E{@3@C0n\ߏ5 ! n4g+ 0s]ȮuYz<I&/4"6q\<kcR=%̓?Y+Z@qI;|2(Vz>{A-xWN2P2!5O89Fdi9 F:my ?.д 3K9: ·TW tFlw,grԆi\:(4]sE.77jUyFq%o"bn"P \Lb} F}GW;yӣESR1'uT\]1qW>*:f.XNYO1.2 JEJ@FDQ(~Gjp6=p?Ԣ&}/:#0&,hmD`(k0ҧJ1aKf‹/˾+:@NuJ?,x8ޡKkq 00Ź,25ovn QDEtޒ0!Q:i^MwyuM5#@Ywɬ,AVg-cJq蚞bj cڅHzш=4j\,|<'<$7q'E\h)EbÞ\@OdMX #`r9S3wj7uQQ Wi: &PY\'bmc2Oi&J&jf ALݩ4Y0䱯;#.].u햨uԴ9CdxtvDL3tȖ@B.*x,XdȚn#4%nǢN"A:J \͙%[n8۾k w>Yf~MЬ Kuɸ! ZLw/Y޹B]D*sΊ6br3jŐqYQ4U*ng*n~KD PE)n"Y7i*N c#"l>qڑUdOkF@|~_ G#Fenɟs;22Y`ViV%7"{W85N/Və 2 0h?KlXR,{Mv*t]x{\ F='YsRI=QDG:f=> N(Zǔ&F><`:9A~OuȂ 1ZdewJa8ԡ2fԂOhb8R"Jlڅ&cg!B3J4곽sC@]SX8u2tZGnԆljW{`{|{|<6f,),KnM7aۛ"_s~=lwC?c-XOmV2kn~Ԁڳ-[7םWZ? &);zq=v".HPh"z㳑JcYDi޲Dj9KLU2@Ys٪#Iؾam/A4;hN)~UΟ1YS[+럿=W!oD=3z#rؗ`C~+k~coGM)`e])ɵٝܭ>!!4^dl&A HwT<`t9&rHG#M.g͆ ]EVJu&!/zs8;}5c9RuZTx! wp}}wg9BvnD P?eza)SFXZpëpxwaZڸ݇\(q`c>+=P?_~*-@kFR2<Lvy+v KB&S5`[`}Pĺ;GköM DO,cZljmRSwf/<? q*t 0L-8ꡭ؇oh'?tw_$J7߉kw"pji]=h44`Tb pZ`bŁT>>#> ay,an?#>a@RX(Z!en5bcG6۸X4vnBR+(`n'[ ,wmz GlHJ/Mi]&p: !wMԃmZ+KwTʺR0s̪',h(!Cv@M{v3X'E=0]gУ$Djk}5\ s7OytPeDd5{y+SJ)]`q(ad3PIX>ñ IzIv ]&|tgA 93Hꔭ [+g0jf{92Cr8GqZz s-{n)Xo*̭Ma7d,VF0P x%k [0tW pZeI0ͱ@Z+/1WmP$u΅tRn IDATa9p:LFt^LΡkW6 ]L4  Zfi,8?YJS35>KM$qK[DTخKR6V<@~F]XŘMk_4;%I㬿SJ]3ڰsi%|rzy|j~mnأ/2痴s*YJج*Aw'%0?>v2Ld\2Me ї3LeB},ˇb/z@p/$SS !#/wJ=~GMQKU`3S{ik:,CbWqr ݎ5 pn"<"xj2ATgnlCa0gN+]|р%jy{ư fJZԑ#u ch3oz{ 5" -@'`h JPCȶ2IA\'0t .%޸6Ntyt$S,TC Bd6cK𒥶*t(57ʢ&3O0ktܬ Z@!>7⋗D{~s ˗vtvfv)e$>4|}%WH$WH &uǎzNdaΞ]g]&Є#toy9"kZG~\].4CM”QFiDmupC.w6N$tRl,B (AF~#^9̓qK.3CW#kRVjO hc.cQ{ 屐!VB' jx [+3]bae9Ae[ow+fޑkҡ{3xJN1TKY}$h=\{~aD aR’{pY\[<;Ӷ"dB؋`un9 z@ףrw' ݂p )Yg~Dȋ\' N}>5x['UR'zfj6W+"׻v-jp{b4z2>rܷ?z4{``$ ddCrٍ#j+Lݕ#{w !LVjm#)і}49ʳtZYm`a8WN#Xj/i ok; C#cT@n%h$j €au=>)NG3] N) T.g `CcBm#f,\g\7| @lFTBMLЃv1OyVoAڭ81adG͓TbXaK(ɝp7ɣ=^^"5Q3ww.9D5 ?&].{5N w5L""R*Q&vIF4g8卙ui?9P!lv:mb:`nS Y$p)GIk/6 `l$!OR~nb 4-5@@Ч`9_>(_`j·wk5CLi&gW!ƺN^r \{։ZIT$O#h@h4sMsj gJ\)@nʚM43ԡN\uizڗz[^qhvQ$r(@4Yp 0C=zE*Z)ISSK6 oܑa$IXR3b8OigiaBdDxnAa'OY}y* $ɣQ ) s.t lA͇``/ˇt'N*n=g3Cik2;q^$caJ8[쇅F l14LTFX;CEJ5YJj8-Af=ZPKgTxYB a˄nȗ'Y ;3w? rpn8vrsAacu_[=j*kN3Qt9}b~w׌%HƟr<6%Ha*c)KNDj1,98ewV[DQ4YB$R#Z7 omRP_V@7s9fp9gf0sjpc>a]ܩs/dאxL4PQFIDi,,!g1 cNH978f-apM+OY^r.c2Bk2kBu΅xL&Yo=,Fٸ``ܽ!nMZ\$9xc̊DMK\;?9s0p`1h۱G $ p ~V2&|y2֭0SϗܻDe'IwbAW<cg4Kt\3\%.vJ|htUs p7>̴'_#Nޥ`ѧs)4 }#Z5ƒ,(~LJ-Qo Z4;ꁝ;lG@p.ҋaC DQgz{cㆺ403oypT,ԫ$ON! "Cn&}aIAֹ,2jX8^x ߹s-Eϭm'Zc|$%}2 +a%;n~[Y{w` 5{eگa{Y1gΑDH Z7`27+(Z_l^ݩ#cRR,jQJkzfl&! ~ :/0bd]ԩm 7lx:q!ع D(( Ѝt}H mŅ#KLdS]n8T1"T8NxF <[KgjvP2sdw 0t$oWNp2VlghQ F/k4y,jxNoXl=*EMYḼq!;91+u\Z.lҽ!S՝5G`!!XQqP]t RGlh^( Ch(iy4ƱH2Jڈ핮H3Odό,@yU0R'ǺZNYފȲ m"FF̱=*H)iog1`B@ ]~ָDM'%X ?# 7-|:xL {tx@pj(04 g4S!_/\h`}2A'tD^=NZIWy2מl PUrcyi9JpOs%2G9pZZ$q-Q_QaGC q[Cfa )L@3U"XCSf?-N-fzgF}HUag>K0=+wy'CHN)qD ܔRiMoAr&Y+q㡽S0^0юE$@8t9z"!m\>D{#BxfK^&:zkxOL4N܊ !ˎz{r*ܷZYgGڹP䋊xmYxIH \%tUkjdtAފ"ƺI>?f+t0pE'X]7`xKC&| t*BNagN1Ÿ́ecsG50-ٺUiVt*GΪɱxO< HZ[:eعgdYv}Ξ:)C5I&\a{|-:{ kCu;'Wh>eazienc.1K4@6WMdsB|sL!LK2*CpNST@F}$5bu`k*#VŤ;?TyD^}C{bs9Ly2Rz%'6nIh$$r8-tnЩFֆi N٬ҹUJ 9^35$p!1ZR'R*&`nz?zϐ&h`4wt6{BJZjHy1_ُUL*7HE`bROҚ7oJ1,`%Zb(T*|OdLo9=\LɎ1Zk}/yO?ί/%.XohـWE1Ad}q,{eF6{:+鱿Ҹ,T;1Y0RZlZ-36X>Ns'ڛRG.,{I'͚(`h34X'X>0k.xr.Pls"0p^^;%@Ru@U_``Ϸ*Om[7 S,Wf"v]rFº؜6vY )'G8ZYe QuQig%19.bwdLkeC[[Y8%2G/n]b؎{-@qc2gu8dXn!s⟛ Hh~l`N )H$B9c@/I'ىQc1.^a=" B%X%$R=`j2z*W>gt=Y(!s-SZqD =9; ^>#~֙߷\c}J˔zry8X[}-\RfJi2 zg@c_llq:"X/@Cw!hpuԴzXl.@FKa :Foa"e+c NXy.͕`8r}_ 9ZN΀9BeiN/•aKifnشlt@`8ߺp&?+FC\֚nq%X9mRm.y) Z8ҼBx(E>1\"pt2 1Ao 0(uKuta:e@KM'/HPЎ$^h1[lq:j (;#bpZg+*B\]*·S92fBڨ%ZCp]`я`#@Z^t\`;*}ahynq@Ps bqW&/zÄd2q"',vNy$b JW8sև87u-F0; qӈWwgAE5.W2cc"i:3]JJ+n6/d` ;/%^CF &؏vdIۨث0W$׭ĶŵxV ebNwd1 s6Gpk(-q' pL5n^JЕ~-J3Z4oZܙf4"߉WLr6!@i|\ e'6c˶P R;fYS@Q > -%څا+!GDiC)?@(u4K>͏FV(2dl 4LI` J/M &0VRFpJi;bbsd;߲Dݩ(6(T1taFٳ8ZIP7NnB6@Qfc|/B HV..!/;8?ƹ$05vFmź g8e8 fQq,"%_"Kw me(b9LmqX܈`?g 2i>3 ZLSZ'ᴳamFS1mg :4EyGQ߼v#ScW WB[ iF0,(_ Uߐth/XSAz%4ڦ+N 3ވuDR+q`+kc34i@ДEnRJ.@~E78- $"cҮR ./4/KxbZ_X"K9n߅;I=(% Rú^vmʛ<&AOaϝx|j'TJKʮX_;T4(=Jt"\+ƻ^d zֲ02X޴UfbqVRdPe% έ:nChaLokJ%}H&dǩ~l 4+iKp̵pj!r4t'"ef6`veBð ǎȑkY1da8;mE@K"\aZ9@em*^NIXiGNi@ ߁|%d.F14,hcK/># 0⏀k#Ʋ8blkVddzhsqh1#Eb6dNdD.gHcɶe)ե`qEU{/nL5h{ieUEJa'B1z>;qLD CI`,W"nD)J|; Mw#/޻:`+ K;-qLXN -wi@sZCg$F/Ta6kTv=2͝ k#P] Pnnt؆K;;lXG+tڨs]'3 GFhGޮg_Xı'sLvGY*KvA\N2OÙ,IqwbX˓F!!BP/0, 6(xVcKhY>t&Gֆs`X]=1&GuFx3K iNK-U).'_鉲QCOXC2K͢De8`U~%^˛ƥk̬K+WB^cSatqnHxða8LS(>8Sa{V: 6zSt/Ki8:"0BgxQjdwb=Z:WlVٯXIQӌ,5Ŕe݉}*p:5MOC|wN0~axk0iδ/U(3g%yW0N3}6@c+h Th ,%Xy};L09%>U(&z^é7LH`+\JzO]<Ӝ'>t<7^1h)1]QZ9=jzkqJ5:b ZL9,`s ;d@嘸(65X~d9K/S{_#SX?ebGI#}Ԧ!$%c~XN; ]|G2ɤIӌ $ `Z呟KK FzRd7\8ͪ[LPEEui@sZNAi\U^dZiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiyf;ҴLSL3IUgO˴L˴W\ZsrZ&М9XɉNk>DT1I܍GJ $iyFI|otҞԏ@eQd08\kN_`9N}1f|o21iy˭Clm\;4Ko߇}iyBx*4h|azsje*9Y$pōFJۘrq*o@sZP~W9@FLT@ rdrf=cm siejXM˘bۂذ:? R7)mOMܱyhZ&|aR;an=ui;J)Zs +}5T"ek.R8b}Z>S Fb),y=wW %*10qFk de!w2-ӜИ+@c Y/̩ k(Jh*-*$ u#!DzZ)bZ&|awM<Jc%*Pm$ {Sym-s9gL5} (;Gɟ9 u$dn/)8.ctsԀ*rjnq|ޤw>ezHVgJ$c6%_2g3ZW4ԟK]OzKM qD]NL}^iJi> 'FH`)饐QI 5혹FT\=cZFKl3 Y~bh>7dz6.DؐCPm?C5࠰iMc@6!7P&@8By~l-ivZػj=S=ơ=FOF3ҘQ  eͧ",ϕ s1m29YW)>& e5j 2rK$"Τ1\qBa[&2% s5p\',Z#}%vV[|=v|/X'J(RwH'Jjr@99Nv껪`)8-|"Ǯ4s9ܷ}0fC lP7'WrdVYQcӘBvF]Ϻ$ 4rl2cQ_ɕ(zj$7&GT-%$f5@%ɠ5îcZ&|, hbr!zb9j2T ,9FZ3$V838K[TsNP am2@=9-w:IRk;3 ͉ے[)f;63g~iI[31t#EkzKzK0&.#BZL]ԂU21̯O5ĔS?aLV6 ql7Qi[rejʾ$s`YSms(xb)93w"N9-0acL6jfjAAH蔸!nmt*$A&rLPejW< m90zLf T-Sm/˲  c^WØLJ3?2P7OؗzS&[ P3n.g$SI)dh\(90~ueAfAlP*:/1p]rf ' 7dibZ1 K c- 4o9[ĸB>zN5J9 s(.0 jZS &$΍%ε634+΅%`5JeU\ɒK 4}[XdKN3XF3s XN0%rkg-v\t wsw*8z0w3QGD@̗ ρ?f+t߭:>(_k lH 7s:jnF>tLb~@1n;Rs x0[]"n$<.k&YJ|'p oDl2ѝ_M-p@c߿ɾ{ 9%s-81RxO@ ܚO6﷫{t^-ݑ3m4ײhc` s4[uSjm}ipḴfzdM8P_OIP~S>V. 8mmH}:jws 5jx9|ށ _K3 `~#btN7Hp.\%j~H{Bnݎ9DȋʰQmHvdYh>Bv9Xc$zLfu9rN뮰?%0#5 Ɲri׉sCb}!oar鹮A͎i55{[o*j*!槢8CfctI::='],oX ZU2ձu{>YCl6[,_vq?ʡ2[ u𞚎O8!_շwL^c|lu g@6ƙކN۸ׂ:ÈP;eԚm8wvw%|vv&3O~"^̾ 5x!#~op3a{u=eG2#'>YH_A(V 4?}-0SaD Tg7skmFlqjp9{-ξ ~wr{#tBa4?|e򱇒jff7io ~|`z 7cCh>m ̆o^t+z%{`A-^n*3ݏm ;Ț+@~ڋZP%r ^W_ݿwHtP7`Qm>U*cJpl'|!m-7!W{m*_jʆ_O o+'a~oV_v ~dއYd J:cr͖7_aux{yZ5&.˧4㒳{h>^z:3&ITۘq԰W=Gͱ_}?FMsvWyX_Я/%P>,S,Q0`c5lG\;KO >P*VSJ+ekAYJe)  %FS\(^yl~ʏ6?ADt|__ܯ.\] (%˻ ק},`nDjk[5ﶿ7;jgЫB(hc'SJk#&-*M(D&6p<qgly@p?oW_(=::/:3)dAׯe$]p󳿆f'.0Ȥ=2U+ ԵeN2ltJ=b$ek|!o,kBiUQt -sg7Kkg8f4_o/qh |$v 4IR3סC6Z(S.0 LO"9v]7?oC9l.~qj3atLdY/Kc9$Jg ǚքcS\hf^,Jw LZxx;Q"s ?{~=K` -I0KrmHn[@i-5޾[ IDAT1̓wߡvs}}u- ք̭#5sL;Opc`F&y &Km95ow|sG]awu[9Zw̅9pԿ, sTk2PJo5[p_ m˓nMH̉ F*Og"Lgh{j0S!n5&"$#wkכ'r?]1%6@s0Rc4(-YbcKZe 0Ofctt fq_ (h53nQ/QF*W4$Y"9pz܏~}q'S 3C@=/?:d#J iKf.<υߺVf$DL)E@́gI;Zkn+h@p^j 5 KRgv;-ÒJ115c&Rbsm1 ɉ򭯼|ɵ?Hμn}GKcV;[?g9&Z29w 4{3OmO9bo@nyp>:V|~982*%minIԀ)42Yzb (5(ְxF)J1—rm/m|m~`۬#5w/a9X 9KR7)ۆTH y]C6cAP8,;Wkg273I/>B^xQe $)vbҢ 6zKY:L\<[!T @k5O"]>&s`D-5((詵5_h,]*4*<07&ג;{Gh6:/O/>$`4/j(g౶m %8:'Zf2}!  5Zu@اv[iO \G'-W^]%&gf+Y}Q&ƥLX@@5k$B}>[^<:@>_yjgnn@ #\L,۶,%`KsL(4GLjVِTv<):S_藺ՃA~=5-\7QjB8 _мzmWRf3#v"Ud2ARLX,Sgcli0d=jщ ^Yf2􏠖BSuVQ(^&,\D4?,K]~5y718Ϗʖ|Cn`)yJ}@3+$@ 0H~ĺeKt}ҝ:/|w , XLUvdxaF\,X,7R&" JFקKRIF\чsam`8 u'`0zfx"~^q[KeK=־FzI"b_ŝ%x( l=F,[mk庑 "$}wշ4\<,c}B0LeC:-i o]^$n$SZ^:H޷5a3+ wdƒZf4O#EpB G O{むp 0և/7+AnJ]vٻ/_$MȄ9OTbT~z^@ֹ(EkfÚl9o2r[|._{kf^ʒʊa'E1$ Sf.d:_sRRf^b  ̉>-@p؇xѡ$oвX< 0aC\e2Dta/gp@͌7|vWw׻hkɰJ,$Vs}f?6|R+/ecN? + Ѝ@&_}| =+t>B]5ÌAq\M]j$S熙=(f>.sއo{/b (Y#fo8}|t}f|:jM}lk @ȵ4;_]հT.WSrZ&7 d5ŐS6Ь:%ʙ&9#JǼI-˗" Sv>BHtXI_P\fdVrGxK0{?KNx|>ox2H*1Iz٧ _z8{ [\ƒu t\rx?D0#:~:4{-_}tHXF \7jvLQsDSB+.Bb;,Kggܿ H^!xibk7=Vv\,+ ]si>s?1<2`$N"AsB8hCm7Oɳ1p.7x_+ `l@G$dVFJr Ys0l-3n~k&@."@ɾHĖg4k3ֹZܑr`K,i#wŸYo{ˉdf\f]뚲(&}:u}6!PT5x Id8^$ JKbzLB2RPpx /; 4l f[Bg^$ !Cn~fqaM%lĕ#@5ږu[JФ[Mo u,ô\] j_}go5?̽pwpALajs`Y~vvv25`bu!Red]!τw? |8gk hv0$I#D# ck %f+cY} oNVio E'7st˻vA J4RB,5zAF6byRzؽ>k;(]o/{$Y| Oh=|GiuH\.fFSs!mwNd'Cbs[X&<$rkv`%R ˤlQepx+(L;K-J^O:Ćdfes)Hh/ӳH¹pĽ<{$O=n%l?3?k5͟XӾwktW~[1$ S:cK]^$٫ZxdČʬsA4O(f&Hg>S P;BOPK8 /RpmMv{Mo6L?/o[]&Fz`񹌦 1"<s=`HܵBGKK3wϺE0^1P9 bwycp:q\:ᣳaP$a!_?[7|@ꂼ1b#{ͧ,H|D ]'drLļ9xI4cj>$ pό.)11SC1N/?CosݪeEa9u$~W hSyd\o\j[̝ ˔[z&+wl!9w~?_| NQ 0j TEJ {,}:߿Y7`IDIN ȹP^R+ &xyp'Jen@ a,5xЅGT!びw`/׸*oNHp5-($kk#)wA3 &XRFRK}4Ӿů!7_`"Iﰻzc7#UV$g:~)=(#HJ BOo:|c,@r0)>kP=N%L6J*YŊ8Dc!}]~kq:7VH8t@~'d\sΎ.uT[fi͜^Yk :e+(wgJ\A>ȵ/O;r,'z%Ɏ4ώG-o.U6nl5GI- `yы^ @$~aVt7.EdڋU%"ӃGs<2­Eu3, 6~s},[-`@)Һ (ٶ-8%\ _]G|qq֗LN0@bC9Ѐ2ZNdsC^|3FyMd)Єkx 0>-9}SS58:q\'C jFj{f[i?|S^5*{̂a0DN_//K0tB-6޿tyϰx#s`5R2L]. wP|`!%F|}6uB a6~N9- ]wfT8#r Yǔ*$L5e۶H1(F|i⋫S@2M4)f@d;" c]ݡi\߻~S!7($fwH4Y ˪2 N)ŗ韧Ǫ4k"6\JS^2O;8>L=6N":8odYX+/}'WQFv^]} xXta :290J[E0edC8dL*͐͠,B $2!6o:% ~N h9l5 v§h>B=C\[cGl?śayx Nq"6Z&ClONġ9b^9c9cwuucsk\2Mo Go]])%%ڇ }3goX>e.KqY{I)_^%Оȓۉ%le=b\ڷI2 )ή̸$gpy0ycƭ+X7!c&N@8@H q6OBoyHf,_7W]$$CQ: Q#l?oi}v(ʙ{ fJĸ SNW@XЏ̰Ƿs/+]- $٭$a?刍rN|mڍJk*w'Ïޅ=s:ҿK'`ꯓC6`Xs܇<0݊Sp\3EX>ɓ8r6]cs&`j>h @sL-hR >G1V-> +BDȡ)e܊ɡ6`w8{}bA q7؆۞d,xkp@6}>&m~N;!G36QvFaK$< WLjI <>ϙSksy-<̆n5'jc&5UVĵp'/V%p7@ _?g)BpC/o%XJQHzcj<.k1V-kMG;ˑk^3{S3ɷ÷ yJoҤ\ۣHQseoYKޗV( BP,"91N? H5,j(#lSl<&E=A,S25ÔV[+GT*,S/xA"nQ稗!D-fFpAsbD7#8ĭ:T:C9u%YKnx]Br=A4ϹeQRsǨŰ0ɑ._f< ~lg .Y0#*֨ YZ$GZlfVODNmЖFnN2~--XCuJe^Kۺ Oy=\vl%> ktB [L([Ҭ&$fmcc ݞyf#]ә~Rw׉pF9Mqj#\8ũP*;mAs/y lހ:Sbo'%A z{yrD5KNJUvwy }}~Bn904%`.#Lj_XTШ{|\RDn(>-O]c Xf B~KI@cSMDCA5EfH?Nlp \%m[}ruˣ7yw}jMPɩtY-5sMQo0B2&iئxiԯ^YAj(,h>?_Ys+carT3h +/54\>ɵ; 3ˇ*,}IX,F9̜RcܲA9L Xx6@J]c."-"~ME]99X>rCD:7D Ν@O{>sAuͰ<|=/_Uyl+l/J!e\4̵5 \:qoz[>"S#wlgj9_<*&9| Q:I 1x]&ňYm&!'* ܎x["z5C.Y 9s''꿗 #5"&4k#.'( )jpJ@j;Ӓay D^*SC 鋖q5K܉C&$f8^|2GKL}z77E%ri,?4cv4 nŨ}Q3ũ2':^G|-~@K &˖JT˶$@[oS3*[uU^Ϻo SpS].cXD[*Rn5`XSܾs{NcfɁP7\zbr%(HhK_rspϙi̓>SD\_"^<ٲLKFrؙ.^BqoTG.Km#~gq(n+flR2ncgZ#G?h tG{ԡa]SOA;w9T/tm$l8),6zhg5gI"nRq.k r$?_qܬ+`\kHaOǑ,l7ðCm8Nz:pp37>@:hrc(8%^!?}oO˒rKI_LkX8M"frv}/SDGDfl`Nwn`057Y3Vbq sfНTQ:p w8a6Xv)LSt9<}#eFM82D+?+ x L î׳зPfI9ܽA36U[$%xu+;Uw*1 hyJ W-n$Ro#w9Mf+#uw=SiZ[ŽS͘Ef7Z|{,viK,@0fџRXA!MORoj:,MϻƆbhgtC!Ȝxbn?g^MC~q7!q}L%f+AE$w.ˊd~ty϶ ž=r(MD 5 TB渃aJ^O ?B-pscw1 6x9N!iǎY2 - MXo5Ϗ o8~b \jkڸk]NMdTP~k}R׉'7 _P}S%ܮ]į0Q<<֚nX |@Kub@.n95X`{ZF[z߇Mɜ 󉦋kGi&aQ PyMFjW[t$OW(0LtOtʉK&@sZnCgΈ5p gd,gpsAWCU=D[a}r,f}M <ٗ(4bϸE/ŞenVQZ`)Y62w4gb6s0ҨH>agix#ڙzn( #Z5sKam˽5 }n٠j֝ +)mj)|8΄VSop/?@X./3r mCb 024.υ^-"s'% ϳEFBSBj7 CXnFS`ӡ 0+K)ٹLn-T,R.,~s]?9[m^Mjqt3-lfc_}YԘ,9puE,,g̵nCdI>zݹ9MdDF9sM=ծzxv?{f%qkp+r.(2S=R>Cϐx1 Lyߖ}X|.G|"U8?=rY4P~BovhǸ2 y`2аkXJ8S( iԹк#k.˚Akpgs@:̩WvaH 5G3\ҏnnӶ&iݱLr,5Svh6'f)s˴3| oIM,Mrb{5a598seH5`붜j`7ۺL.<&M|5tNɸA LDG8#4sY^gRi& %Of$G*'8 >>؍:̓'",щI 1ys&rm!{u](%|yf`E8Ȑ系g7`o /Ն eSY+YZߦR;77INSL1]Aֹd*;᭧ax݃Z #h3(\k@}3{MgE8F|-sN S//w3,*u /Oi$aϥYd#YU^NbgbOE>L[hvN #~DcI 0rsmo=G.*uzc5JMf->7qiz¼uJf 8᫴; Y׈B ׿,ôk/d2|FrJzHT vpT+wx ^Tz51[ψBsެ)s@75Kɑ#[4#HbR)عBPM9ihȀl2N:eɃRz$,ߤ݋qP9yhi9|6i -`/KV`|"js.F9skirm\-x?BiM-w#dVh:^(!Rlo[@ 5rnŒ oQ5Ή@N?ltщF&/6/gAfD3&[xPݑg I 1isLO0zs?)%܊ O%ꔩǜk0~bOS 3=@9H%Wx-Y S `"Dgv1ZDjY`ٕ1ܸXŽ(3abX~ y;?chjM]-K0^jl{ 3xWjrؒZNQ.pnt(1-p  žueDQNxYs %5-36mDD7=1Dc lo/p+Cɱ fB!xL ^6 V "pDL NqHd0PY2G99nQTQkt}Z d>z舖%s[ERڵڭgr驴RS.[n0Nx=`Ƴq3{դ|V pbj}gkLkԎ_AhѵJCYِI=#a3H3r;H>"^&,*:w("W/ +/Ճ50myLzgz$ -Y'`my((&PkwJM|}:xL&.Z:7=LJAcCOvx5[ ֆ6`~8$dfZHL͸ Lx5^0_AV>f3 F8]-W(ejF[/i9WBe㈻dKN(՗WՂ W+jDk r~x$QxR Og6ΠC&f4"{ק̸45L҃p~\{,* [c/,164/^9xgǺ 4c4WMPFywfHM&Q8g!EGp3DxY`?gHl.?86H?>et^΀]$1x!:Aj8kαh_@lؐی q,H[ 1e\ѷx:1NO❉3"3~51Fw7+/Ciң|H]w[#&Q`56aXN6(F_6V%m}'6;bT5޷+r88~@Jni^G84>8/x?7կ2cɗ#Zphurpk ]_K LXNR_u;9'Lsܞ WXۢXqˌOX]ˣFD&6fV{ m[!J&ע5s7˼ g\u #`5Xd,`=6/%8^(?<= yȜA7>'GX焠\XTj Ix]BZMIqDǠ4sl[Lm˩R]ϝKZ&Œ'D_e+gd-XbV4ⷦTJYԌl=0 r$A&ڐi1 L|TЭ.ۑ&thVr  N LJC" c{MӜbܹ$OB5DY*K02X;"ǣ+GFy]sXL͛WΆϷFC4Hx\rJ SYYWMhn=%0y@vң[9'oB[9MΝ }?ST9-ڕ D@&%=9+E!ӴYL 8xN pt8d34R?۹Lf2w05pBNTVkmZgS%ӝ?2IxE} @ʌ8dalw,m9'P:bߣ]eM(tecn5\!Ǜ0Mnq=㕠Fn2=8 s}Qέv7t/#oBCBÁJ*xJ'@^3#(Xr%N&Qc'@tcz)ǒP!ih34B-DX [0!.I{sfŹ  djrKk6J0S; +F y5FAxƅ$RgN")Е*5,NwL1E9n >3o }ϣT@c;=\c)͉2sfujl{Fף /41!:ի[,'~ W)ԙ+[鎻W Lz:i xRMq{==AWm b3R'uHwTI0d9@Pl`ONP8Fe籷n$w^5|h0 faGJWVWm^c[O_-bNi2'fz[J]\>aV^Bݴ̨ֆ;HpI*0O렌3$52۵'%'f0 %sě-eIqq/dh7C usD KFG=eLUjn8)+j|a+H+Fsd˗FZl(Ǫuww.m6{SӶ[F{H>S3zw[7Hg8<(Szt(z Ʉie8փ 73whg5K랠3JX/#?H>Yu@Fsm6^_9p|pރp7Q]5ѣ+?Oɥ}_fW*I"Wq[n##u^ۑcH2{oeiκV9>$ݳQcU%C8~N1!@t]{BLs3(|ϴ8&쒨$(,08>15x|ec jPi `,$0f<^ kf\fʋrᵗ{+(@|lHz MR*Sl: W\"sǤ'N4?QuN4a͟=Gl HKYyz-V \yuW# ѰlΎmv9lYee!4,/ng)YjV TZ5LحE3jk@?xw9)gg+M!D)'Xf:iA,_,a{sG@IGrAufp0dIL40V%e !DW3ItK*s}SSh ;f]gu9k;sൠֲש7ΖQWL>7Yۭќ 6uw1-Ot1.\(fzS3w,IQvsNTb¶}"Lo;y[yPTxi0qM>Bǵk(_1FV?#F,'KIM2k.wHޛÅ7w-gڍJ^]pxӘ vi37yvqulRvTkyZ +BIKUۧr s)Z2V^'iayl aY.L&&#:3mU/Fl6J5Jiw8N:{9+ֿHs@7}ZiHcǀ95XvV^XH$l"T`^o:'vv\ шdqr(Ŕ4ntFPN~ v:f@lMkkD甿h8'GY^kg%ffG_gB5-FPƝ n+EEcE Y_Sa¬Qxڪ qX@5hib8y\. Ĩq ͭF Yȹў)@#)11j(b+zTtHXBh5AgPV8͡BkᵡnS_S<9n4 G]H3ssGOM&jE5VhE]~SLHʀs7ؠ6ֹSm֗,\<ӢҺ"HqA;q %/٧/džĩ^M48mZL!/*_H-ˆ'ߡŃjnnּzV5*jYtrڇݕ,Umzۘm KHJR"&:@mfJ} 4 t~ۜ#kNVtYvGu#lҢA0DR X+ÿ́:vyD(?&2M9q@?F3[#) ݧeܼYc֤ K]Adž `X<2dZyYkPrAFlMg!\ۜX4Ef@C ]s\kЭ&g3C-;6pf.SPswn`R[V]xßD}]#97 ļMR. bU#yU<&7YS&)ߗـin0972nN=$Шqbt+Le!dyVyi:w} O)vsD clSϗ0i\( Qɇ{3iHX6Ƕq_ kY¿(lh2ZFMΒ )CR1 c ax'äL~T'#9|BX.w }Znx1:)UK@vU\>2a.Z fƯ ]D ͞' HD"R4t/Ails}O90a)N-ie`Co.~.9 @lNˬ{ @=7K#5a0r03|Drކ]S ckV[z;D\`cNnm1ij]CԴܫƱ ytk2&Lӫ@9$ CIFq⍑?].ӷ57#sK0.1<фKB[ <ȣssČǣO-33?9ChFZ|7a͵ck7 6mvJXq!FJ1GTAZ"^,L.-X-KDڜ :\2V XЎf#dz w6+K14S9Yd r$aW*.K5y1},sR>X8t}ͮ03]}QӤ@u~ۓ xR߱M& J BBj`p4m9ZcPrRC3HhyCͽ5"5b^+ѫ iՁ@-hqw'ugv#rtNIf85"DZq^JD3ZSٕ1~55]{6; X>Jkd8`ƩB̭pН *6{ Dx: #] \0oʃ̚ngQ(>^lM+ 1 $J=s^+DKh?g$Ҁ{XOn d!急>ޚ}!q<-E|nndƚCRްTJD8% TJupVh9$ M^N9ek~IVIO.Q\o0TTHZCr%:U,XCFv|< =G?p):_5dž5 3ٚŚж8wE؄E ~H_c 3~| pɾn0po XD/q:̽~-8[AX1MC0=w< &Ȁr!{^UB޵*{Q@C}v}İPjn\ger,ڏ W"de4b~J5rg1 ;x֕9ܜsbBݜf?xDxbvTϮ%(ǵy > #k Ϲ@ EPeM pqs@_)W9F'xaw}A$\,e#^o4VΩK(ew":< د >Z\G?dPs^J6 X6$mß u%*TRMF\<2#n1+'|ca,C\] rP @8Q\KHs-vm@P9- eHTzL_n~3DfA)6?͘?ΚL]Ts؉S#Vx k=7'MRE(>[Uc'wE%)3<8DNӧ#jRLzïV\rJo\AO~hlw)BD$ϛ>BQBu;d$lJIuR2s n[Ep6',mK&=pېj3IS%Ghwu*mdU>ۊGܮ>,3T`fXTӓŖ`e`S,;DS BPhƇzs`X2ٵχϙɐKH0<`^$ dJaxIt95~-:kIJw :iP- KNx5{nh=EW#B+Mț[K?یWdۭ\lxÒ7cѣ. :3r4'hjT71Hz%Hk=Gwǩ'Z^y1hk冔ղDzmsXMkߣ vaُιMK/Q&qSpS =?79 bCxGD=g2 GLr!1UT[qt]ScQ65ШѬ;v_kn12 9%pOQ*ES1ND`=ځ^صܚD}sD\d@nqMVHap2jR>x{Lov(a/"C XiAƴ:(Z Cp]Zp&G>11!B<"/w1hjʢCJi<@+"|4yc8d%m&rX՚{迓c%4cK|08xJWxX1k_ rݸ.]\rܼ/0n<zV1͠^5NMrd밬,(JīsNiO2aq4 PXdDI#ԮȌw] Ӗ.^aB!Bf(sKS@ B\A+w\Wx Mo:LP8R ^1#Tja.v-R iʏ={PvY:-6 x9TF7}&P,38KN~S^{`ޜsjKnfMf yL>9͜``3kaNL IDAT 1/ՙ]*Ek΁iM6?570e"|7GrU}fMj%W-b_ `s20LHrgJ"9DȰUj$Z1VOeO5z,R(  .f}zGֻ"(4Ł6qΜZ^7CBjIJae4sixe2ط^ K6r/s bO%Z lZBX^?ip7rL" }#EJк S^  vϹ jc% qVeByGcfكVӔAn >%POf NccùƓ4^'39c=J >oP}chn\oCy\/_V@=Nx'ŪP|҄1ySh.# 7;7u=8ݛPLrJ͓{ڂPK,c:Q R^UFcbԺYlsQc#v)tmq tM aNl9)'*_i>yBK9pksU3W'|1E4]<+KJ0 ڈLn'v՜_EQ 2EvZ!js;ugmYܦwMHnDߦ-ܬ l7b\iP'  w @u~tf WVk~8U(e ǘmz aƣtq㈴o(mo{gAx09 XO'4۬g{ܮC!lZD_*!3AEH=N*Elx1e:Gj5&^vs<=XvdEI {7w& e!h;x3؉vṅ\Wm vi0-v 39˳1єT.t h}lՀ)UtKI/ DpEi6G`t u,ͺ憪s~];26OjFM"7z8a׆y*X QHiˌ b()ɩ]kq)~+RVPF c,\A!{M΁ k80FK}zÊ%|21TNwO8Ŷ e,=/%a_~Xs._{͌)apKO7Xऒ=}0OU9W1TurYg -vs< ɥǼAtr9CbW\q?T64!H4^V,oi"В] xkv{!-\ϫ{w|<]1T"4mX's&x vgۢEo߁gi$VY S+1Zƽ&VhN*ߠ%f=:r"SOw8+nUK˷1n- J1QѤL.j,qxBV=L qحZlO4swkD,ACPh&!ȼfmh^޼"6P^,9q0㋴ċ J)WYDGee*yrǰ 4bC+q8ո;[_UEhR8J9$mC) 9~)x.vL* AL6sͦ|fA$w/]޻R/;jRZ*rtm;ݜrTW_1П0X*6jՆb2<)g(!Zۿ̈́ߕIyQekqPڐyx~-;B ?ckG;zRx9I*7Jx=syz2Mʞ.N?p NNSZtb.0-}r5[yKyx5O7Tp ]3!b¼u|ţƵLt sSR+1gdZȔƀjD[Ăy )eE & E)M:Āy޿iݧS`MM=į`kls=)D1^f1B2ghW^WJaMd*&C hoPӅm:d#CQ5-ǿI Ln3bsek G3؎J3QWa^罝lN& NZ]pl;qOXcZcD*mH +=t.;LK'j$T=Ԥ4)5htfFmԓ t_rOk:Ѐ)9 'c3cb%`ziP#."82] 9zzxξ@m}~3mQ)C* Ska5*2Hwݧw6iEBpIp67ѕEw֯˕ҤJ" .Ra;;'#|`ڏ(9}]l??˃7c:<9fy-12[' #[ B3ZۡjLb-w`fN4ՀPɅ7o78tșX~p /~=w.]NVpg_3Um>S2-l+p[ZG8 p)+7@iuZ!; P0'),p64:=|15)QIT>:@jX '׹ZC"%p%jȿm,|M AXG(*TO _ߧYn{)"1?+|'h -r9Gw]-'u2*l7Bnk,#]Jk%/9( B9F݀'ceN0pjD IB|>PԄÓSАZ&4=8qBpf)|n\gIaK8U)J!BaNp#De]=JT>ǵЕ}p:H [iǀHj~o~4,Y`Y'hqqsp:gvs-vjD7]nDX>,VhMh+zTJG6;N (E} 5P#cBsppxeو:ܰ1va:0L2Nm8S=KAFWwlAzDJ |M.ZfrְUeE|pnFhPO{}Y=?iWknt҆Z*? FX")CsjǞI.χ?t.n\oTPL <1> ˆZ [|&Tj@>V Fy$~87&!4 6HԥnAIϳᦝ,1 kNx>,:A^K޲"c@k>Bsع9OKq^_FaҧԔPON1^rZة4+M;< H~3`lU Ȟ~j!2xKDFn3dN.`ZiQjRy  ]/c 5vI}snD!< n%hѽ9<{*[ ܭP^>Jw>Jzצj8!hCY "2b-&_K *9סܮ`x/ ʡgW7xF$xm)9)CSDi;Tpq:c4BgG=_xMߏQvlb\*3q?d;+nw{;辕xX{׆7aųq1s[hKkPUOE}s܄E-OY%eGUǢ &Vw8wuMO ̧Ar!F_<6<=DFDFjYI-(W6:tFfwqp=ޟ /ȖgMrV|_kqPs\k^B/hoNOvfc Yiu~ NZgnm}cty訊o~g:fҶ@iC@Mv8rH78 e9Pޖ!H)yȹ@Te,"#~c ɟ5w?ݑyा8z=e{8Iۄ +B? sLn㗤9i@;a27!<y=l*qTj$[|Kړ9K#6*+}0Ȳcf_U{ni-1Trk|(:6p#xԼgk HS+=' i%&GY&\c*tj/cr4HQ+X>4ʚ_$+m0l nNjlOskJJ:'?T3 KtBB';<O'l1U-KFQAk9DlhC :$Y9(T~qV^;-LqfB JCX^eo(40h7zhlE2W~cH  Ð8!(0~Cݩliy)@!YcbraίJH 岵؊ W_SqgWlc;q9zL' _%[Ĺdq'G:V˘0{np~A:DP ۛJ؄mJ%CqJԡL%nEXfozGg:TK߃z.Lʄw:9>R}0L40֎.kTң9`hMk"l3鮠?0hr3̒@%xڠiv(noɚb-9uދg=gsp"x*49ߨo?|U$}b9<u5[V U Np@/t(9?f|MV\>i!/=(D!H(]VcpRyNťa#eԁsRCiTf)hb{&*c2kTۋODxC.vi4Jp =mO!%8Njϊ^ӁW[MknupM2 d5dad9U&a?2\7Pjy1c^?xx% {kB|u=!4Z§"N_ǩJPn-;`vyMzP:%Fiv-Jr2$~a:xT5i&ְʋD\[fu`m6[߀ïH_ϋC ŠI\r:_7oc%|5hae4&p}6NTU\Gp*/?W0{U@d`OG@:&spbD,5x2=4SU8雛{.AB߬ _Uax/!uqDZ.e3\pX"pFOspU4OT4LWj|#LBW}|  (e;՞#עna~3T?%T?wOv]O1LsLNF5p"#`pr 49WZ7hrx Ji>o#+y"D2b#EHdLX8tߟPHF]sƛOڼoH 849,6 8p89=sNkx6_qe>NtEtie{Jl*-~@(<~6++ȉjc'f*އW *_煮 ;%t=#}m8rדk9yx_nd7ɈIc! nqǖ(J+҃Ad䙢4I gl6<3瑾| 6::﷟'~CS?1IϒB4[(80 u89|_ /_Tc;v:u$ЙyС otgrÕ_@=xSR8%G{j3hu_ÕCy! K6fR؛AIk36ޣSm,|՚4m c`^L)eN)H{ի :P]u`S($u>3G@3IMHg*1@3&-0jr%V8nJ𝋷%n*|GeHXYz>tDġ lm&`&`da,ĵ SD. }g ;¶_,۲Peǘz|:9#.# .Hl5MN^ګ8rfry}3K7S:Vͅt':g~\poނv,j16Hek㧦RY%n'vF{/%XeV]UqG:DL9PI-HTu8|J !'R΀1G[Y[#< UfsTpdb80tM o ۬c;\_ùt}y)8dlo/H[b#A]pO W;i[ȋ~DφȐ9iJ?xdnhqf!s#x(j`֝iwPOE ^ޜX^P3[[+Oyf QLOX8 ,ِZ>{sҎͭI ɢsz?sxn'CNs)TcL|R̼6#(:x*Vk/8+xZՙ7H&@)MM:X.{ȩSEpCcx%-LrQiv?é\e*1Ȟʑ2~0>K/agyʸ R,u)P~VL3F&JZ^0xn(DbB!v:;̇m#=˱7J}* kNe<sیcZ-cX,QtQ|#~Nk\)kvGBcHvLsy"̲׉d pFg9oN=LJc?CCq{ˌ fiot~-QF($B}c@sbz 1ݎiIJuM5Q`Fc(eHO ɒsּ5u o:i7t -K&}S+C%@uD Kχ+(#^aړi H5eɮKrܹQĐs6_$BF$Vd/\lFF=;v{HKK^ѱ{A{!.ufzLA5i3$hY˴@HW R?' KjX&s1i0ؚPK;K.Fn]bg u4dׄ%ΜKPc;4:c=ijΊ 8$o!룪Oe:>/|?`qKiDZ)qd}$,Pf.CϒiA5>[piCV7&HˆC fCve4B# Nf bL9 3U螺ku;}['(M]d$^Ґ & *YɃ :eOKtqD$K2^˄Wsj\3xG`^p~X8/1f{CЁP$v"ˍ-euRV=j2̕38] |b;Jyȡ<] "@pʨ7'ooښsSz ('!믠::'~A= o`YbBW"ҭ>vfwc?c3}?AOʚDO+\y}chFtٹb(@u4Cg6n.B? N6WWGyNLSVˊaḺ,h0'':?k=e}ވlP՟J(z|O}=vcm3(zM\ \v|`ʩif9gmowOɘ dyPyeo(q9X@ ٙ=9m&å}Š͹G"+&+!/C)+0pщbNí5~㛊U`A@zCu`ZÿifDSGEp'cR'8Y}UDv&l*‹_j~SF1BѩV=n&G'_%-79ce,4XlU3ҐW BA yON"P\q9|^CU"#T9T|FK75 f~eQ*@L x!zy֎aE aD,mksK͂sF 7*2uMpkߣCy,spQ%}S(/aI IhBī4S3V~(@Rx$e\8jwy:Hrl^cr!94jFvwN'5'&8d*?RN+1h׬oɶ@39.!@l>=]ysN8_rme&Kȣ-3tv0 E"$k?rׄ=hJ!/;GZYan ~7OۚǡkݓRr jYJaM{bzdl2d l2"f>}O3KvbIXO7s@;yd ;z?& ] ds%oLfjK.Rv[fA*$& r  AU\|0Mtbz7h[8{3 M4/xM. is:d KRXend0)kR_Lj~o0#dCt%!#~C,Yg`χP'sЙ*.3AjK"7i % JA@ɯ**rswSۥAl҄ Fx '%?TekS%Uj\ KCL;+<2?,SW:vxx>.9kňK~:MmB9zBMǼÈK=5-t键Sh=.[ژQa`^WK[nwi'z{7 ⚍8qgvKiZJPp/8*]iu诮2G\}L `H 1)} pcLyۆ1Sl%)eY/4K(]B́m$VåH|\78T9N ndS~~QSN[E@ljlC|6G|BKAVaN4\սΓΉɏqM7}aW Svj5%L)}x\wʅ@yzH1UrׅFs$b#4C_63z&OÀ񼱂|#Ab֩{Za G Yp.nm ʥF0]a]ݭH#5Ii+K#6Jm1VjAKuiY 1渔Y>,fm>?3 %ԜJrD3 }zp!>\J6o[]}ձO`Bi_4hքA)W@5߱[1l΀+k.%@}kwwF "rOqhб8b1 -k-L魱r3Kqkr ?Q?p:Z̔jܤm׍ ]:G{aآzb-=r5l0ԐM\5dрh*u&uz?޾V9'i݈;H=ay`sV28k9WnXe)Q tM Gܠuv\eb>w4Yl.l,xh^O &>sOI}72x"Tubq?N"5&'i3mzʴܫ51h$Hv@w'[@״NڭNB~b9.*1͒AFm(^S#P]UiDcl1ѴRCwZӅ Nw7z}Vdsn{ N3fbf1;-BܼkP mKcH hv,Djk}&DȄACr @9P<#?hX{ZwPnFyʹ(Uej;:W&jtUu ٝne`}[pt9[BnK;8['$(J鳱]Ju'ײٽq:[Ga3~YZjqN.X5!W y?|~xl ch m]*S_.aTop, ^{Ne`pp(qYo 4ϷFT04ܝR"NݘřsCIeynchKm)3dGvw7/E;i7f*\IR.utW*OHfDy u~xT_8@9"{ss޼qiG%}B(\فOgHh4kb&YXtn3 vf}ܟk=lzLCq";Mbwۜ @:^ؿid{ݵy/\,iDȜ ~6kGs~~9Ն].R7D<0=8C;6Vr5@|iRe!@BƜ-No l/\q O9L ;X_~^c~xfGLH-vZ4PP}є0jceqqL QTnv-f|6H5̟oIiIW}UJR6yz1v ݍLDn:ivMXdpm~eYMsфfnXk<;}h gmR)gk-Lz/-h""s`Z36笹 \ ;΄NI3I"Bڹ)Iawx!(NK2 sCǪAGS+&ّ:G7-b!䏘ez=lLk19SoW1|&o2,NDa3#&fgDvw IDAT6mrHzԛ~hWM1ހR`zWKkB0KH3µWNќC>!Zv7R;d2wS8j/C<   l'&;bsShJӲ` 2[-y1n5]<w -1m J#t=Ꟊ%٣i; Npczk˳pMi>G SU351*cﱙAbL&D{x~sIP20юɓ&yo |YTɄ _,SRz m˅Fs ?|r9h]=0S0oXH.ib) -y U'r]j5W O:ʹj %?S?Nsx|nn~&d/zsSeL;zCqEtNj[b@\#m!0n} J\K>"l{<<ʭ;fZW* :_T 5(8ag7߈yed.,-5YiR;J4lH<h;wsyQ/k DSsEzL` {@P=PFz@17G.Ҵ Ba<<#`cL{ <9 X4l7%"A5k oJ3:]R6v5`}Fit„BQ`NY^OxJXmeWs_YCKS7l|=d4"@Di!dh{QSNP=ȈB蝪CT家,F.)ƚ$@d_u|n9'cq -=nJjX/I hjxP|pf:e/u۸vә8]Qr?5IQMymDtX]&أ]OS~}K䱏ܸIZ\lY}i/S^5QOCj 5STcjCn.6b1.߲Y131qȈLNt.)dк5!4MWH0oڳZR%#&KA+e% i# %IAZ%0[&(s7 M/d%)%ͅbb.O6z4=Dc&K+La両1åˑ5S8r6TRA"țP{.dVقG 2v-ted%Eb=378FOlH {\&UK:I.NWH4.̔.(ldn Sg4Pn߶'R ='ˀ՘`\!`_K?x92p..%,bf, nlsp0[&87W.opn?Ǽ'<k#)Ok$4?P2!^!d:2\!5裩6H %&sώu!m+ lKdi6v8lPj .5T7!p&b}ha9*]:;P6NVs_ۗ4c R !92=mBae&D.l΄7$äp }uX [oG,9f3fgeg @ IO˶l?r FyH8"1K y*< [o0M3fPӢPV5hqi)=rvv^P'VPt \yLe<&607=2DO:BҨ'v*FXo#CrP\R$g+ gﲉf$Nfb~rKDCM-N0H<  /Xo)g%ӛm͝/o̔-LY2)&n=8Ռ-PČ/`< ]HWԖhP]EyF]H2UIX%фlGxgΙ 2k|@z8u f?`>ɲ1,3W| KC,< vOEs$q戹_3'gS!gn^C8>ʖJRId?6oȗaɂ%F҉c_\ & 30J[zв{G܄oq6GGe.f4-]5dj"@EGzO8!Ґ8:s6"qL'NPeHϳbM@_j5jzsXJHĔ47@#̒Ky,v~ léAn'R1ϖ9@LjV~GvvŪ Jr oH^^-hVdeC8smpi5b^gJ{̍C8MA1jM@JԲ"hJI2&W>dd |ބ\37̀o(ٽhofXߎvvXƄVgc+ha00Ps9gxqzּwcI 4Z[ߺ-Apȅ}CBH%R40:і>$N1΄{.A s#- p!1#{bH _MeK1F$Gc1P=Gzf&=6 1bn37dP%Yin}Z i36H{8 !<hP.Sh}'C>! Π)\ѹҜ3 1b[%k:V|ΒBNj%PH\vfhNspDO +6c7+`1oB$,MDd;iܓ7* p"0ot:npysH9ekO<$/ݲf:dJ56 8@u [b$VkR|h~%|+Ii%-0VgJ˻uc+=7R:7j#_y:%B<%E#6n^\j% ؤw4tXlIa^@zl7zg?'m&lʹac S5:Q_`qgeGּ / 8{~G:~z|MfG//t7{d6qkHc=X @[mü<1`{<f-Vo48v̊,X|&9 bktjmOy8to n`h(t~nd7_вG:<E%]Q6%>(ހ sam+hK-8SΜ Z1 7G!WZ;`ts0!#;s퉹 󴉣!rDlf\XvWkVy{M踜'boѾ ̓'0pzabd%ˆѲmW\A94&s{yyK˴@Hl"siZlߣ4y3c #̊:M ˳S=s}-3w&R穑/p*5Ӻ5GM ~jBu͚}c#ǎ2j;]L[[zOS MnOq.[BwȞP\G7CR˙Ni_Pʝ-%306=`mnHh ]؄}Hv o%eL#>ln̕i~̳ep+͆B}sg Y+cg&ؽsH0< :I+d́5JX #.]<#`soB# 77*m5ާb`O<7mzsv̞n]B/\D.E+h~<73(enghKZKmB1/l1 f|ݛ|޶u7gmgwH _6``ݛHe7{ywVɳ)9浖=i={;w0M[]ye{k4_KY@lZpH6)dfv@!ВKk:<+!@l6 8\&o:{ޥ΄{:>e r>e|x@07nh]|Kx>G*6{}]y˫ٗ)cgaޛΎP-NZW^C0w1Ohl<%-8L "ߙ.'X=%q ~ ^Ӷ #0|=&Pk 48{Xv31)tH<dـ3B̆reo ,JB|ʺۖF6"n ;7-$BҧpanAs\:{z^MH~<)uG,r:66ư' ]ё ú=`n' Р5+U?C{-1hND?K%=+Pƃi S. Aቍ@؋l^dp8b[#o0fv1ã nqNرga@{l*<>YÄ=mD %OR$ >0W|+MɰH&ckNi[@8O/z+zn_~_mx+x_3# P uan7x0g7~~O(1 7b- ȳ<du^mͷHS%#]# l̍KH/q7DG:C/Zb,-;wy7h[6-*8K~KH ]F+$ʽ8۲w7eÍw0W2:-c 17aH+"s"%b8PC!IGk @zs.KB(f͒3ÖMQDBC>-.P..t0vgtl)爬iyq&A@mø Mgky;{/HEkL0opi8pch` 4n︥@G﹡}3zvN{w:O}nD{ !~9Լ'fh 0cGX!Pde/P.@x_1S!H%CgwH$=5d 4[ iZoW9WN2hO=ǹ,u=`7n \vluFƪ[~Ẽ&(1Nr,5l =0Ơ4-k`BOpY".9Itws)0~s!x0$;CC8 59 }-sCk0x~s(;/ycCsLs]*on<\1/MތיPsۓ,m@B<|Hg{C|HzX21kIvbά1^\KsQ:jp-.Vf< 8}(x$u7l<tAa6rKk U|0{3̡)S(EפA>G'Y:MCL10wN< ;4"+8~v--gsׯvELB @x} lfz-Yn Ϲ%%1/8glNtZ7sF\Io)p`e b .'B43=5H99 &M2s"P-ܭVs!0<$gy N;do1dvvV{WaJCR+70-0 `;X;xV._qkjHl0wߒٛo1wFb>zh+94gDI} GQX?z DU IDATZS;s4 +hkx\ٗ>'/%)u^45R.1)Z$b N]e[;.2ۚ;&}Mj+]^RTwؕXP. xe%֧ujf[SMAu2S2ǩt.kxZ9A5e@Kj=SP,\r=2|'_~-W2T0;[]BV) oo9LxK.ߓ됉]̵OV&z%U2b2Z4_}'ZrV{j-wS7XBH#n.){TF?KuyIJj(soL]a[m1R`MJ % c%1VnHm.LߞF_X4_}gupW ,'k K7g ڦ%HP/aL6 +Wr۴]%@j|+hxm@}Zg"r(9/˻r P[8"aTFU~d@1wNhX{c kkG,ko4:%~)-('J|r+˄%}%A-dZe]Ve啒 DRj17<3٧~HbSfYm:$KLƸe]V\ %vXՄԮxQ@:ǾP`5ۥ +@&d<{c@ W h땥PTtm %!kzecKKj%)W^׎1YNXDYM=hʼ#6h GIjkoa%CW+c_CjR[^grJ,CZp^ZdoGrz 0Rǣx#PS E0ќ԰tu sCK͚P9~ ^ST*sK#(8Nǥ0?@YYZwjײX -) ΗriV$B12.ض]ָ(]+|/L8_k "u'1v Zn;OP87b-<µ2UY_.a E-+r|g,ͅRbϧ-O5kTkM՘pP9v1ՎXW|Ք, K%6s-V  8lend\")R-1$GW>K#%I|_8>Ъd[jKE(]FׂoN k&|uQ#!n+:OynZGb{}ΏT_{XhUOi%r _VXs<]L,Mp8 eCw9ɥPALh=R-X"=85-%o~OIfm*xԍ{|h0yE[)T}e\tIes,EBRxb\Z`֥DXaIZH$^PV-aip֯f Ԅ5{kKEWb)#^y===%5377d@71MM-VQz.2̵+hUw~-cE]e)c\;fa},HqVJ"y s˅K|+1.[t4bt$.Z&Xb952}b*9` uo6' '[vȶ!/j!~P^k-r"T !2gUzQm:>dAǒ9ڮ'T0ْogAi~ۆcLǺr`%r}OYƍ)om.oy ڄҥ : e®CM,MⷸXwPMKmTTM%@BBPƧγ"tA1:e SɡZ`-?zLR$ HM E4E?YCFKYDU Yp1cDyvߖ4Ӈ$V|B% c2Ħ1`(q ff9@!9=6 \ q؉4* yQzձPuSU1K]*M%ߟ4K59[ Ǚ+%%6Wk WI}.5SZǒ`;'i-ƉlUuh#Mĩߪs"Zz-" w?^;"#pnThS (z 81O}.G?sRARHd5sJ@Q,*/+h&_jX /(Pk.?؋<@[1]qUk\{g#M\>Bo!o;Pm "ϿKu"A@n?84DzHx)[q #n+eevDX Ɩ6k6\k@Vs]A5˚pt [jmq s!x hKz@vds]ED~AP_пꯠ~~hNa \Ek"D!J4[{=?}(k*c %XRP{L'MZ <hyA9XRiO-umՉ;׼'vMU5u~SUcM?_]~@Ti_Iŵ{i?PwN|̣6+5ZrZia.ںN>_A I<0s gky[w.XoyYt}lƻWU1=oͻ:G~G)" ~y-ѩ4O6$w17 DB1ȎḢ0ƿqR,)MVȅ9Y6 8+ݯ| ?``<opaLтgľ{4({ҴLD~wV[tKQa ?m)5FźtW赖kϦ[;klƕ$/pLnHs߄?C/ϯ??K2dzR87JY!woc\K#LJUT*Oa?2JPWb qh589Ԉ\wf_;0ݷ ?-X@\ K/^mGw@5Zd*$k;}Ԕ[-5XAY;TqJ0, /  Ej]dK_ݽo4@wT_{)ͧKHgj+v16XQ^NLC_3?Aګ?ovte?~(}LEjYe r<@I+h>prm{54CU s쵉n8J_}fD?o} O1=Ve `^[L=0ܶx/fG>cɟINHeT6f_i~A6^{MK5 b?{ocY]}#"#r*+k衺kTsI!),X6,7[%2%ۂe6d EM@]"TCUw\Y{޹}ι]Ֆ/p}^{=sɼS7")zUwn,E2/x.1;lCwGːI1<8z` oO,=y' 0ӇfP5Ƀ/d]!y:`IXi|rf# Scj/5HSy* |b>|eq_gLYbvC]S3Sc1&2l3 ZP67%c7>x<쯀̏ݜ\fu=wᚓsTHg1`gJl-@/Jv@%`<`&3>Lw lX JV3cw%-)y:OG 0DŽʥ&gzsR!3{7|5U" `- Xa.0r;Am5 0В8D@a<^j/W{vϻ\'7ju':pd)nS ):RgJI׆嘧r=\]ܻOW@h-l܅[Fe]@2YKMc)H昦.%iQ K,vo2ܜ~F=j,Eן\RKG%Cސx{x>#GbzJ]J=8s9P+ L B3W:.KO~.]p^gZ1EzP?/ 0%v))1h%EjJ 8sO*Z+l||[flN*!/gI %9v !\}c.l.‘ cAZ y fq0۹ONvKcO,5VQu6lc &' &!B8s*]Nr\uǏw,b1Oo~1x~ ,6r!x΅ KB=>i&fzΥ7LgA7Lm8wa75[gfmꍛ4t[^2.].\.DŽރfeR3\Ke#P 8服64YT;bod `^};ԫ3 \긦L\cCfWk`Ԁ2s $SA!X`>Fm=0tOt9ajf֧Ԟ)Am[\Mt"Qq.**j9A{L[ʜPR@-Z=elwS[Or5MyMHb}vVP܃] TX)ObJ9҃J&qcp=|UjKyAUgMӈ%LcX'MfT.:ϥp7ksiIacO}6}czS[28$i2,Z.\4U0?m<,E}z[6ŀ~ye{@S_ Zߥ0-f<%B!;Y3l5;uvL25#g(t, EAsOb*BvII6Jݗ,n~|C/ye[im߁;yp2Uf3fh9P!B4f!+C[iơw`I19Ư]|{|??w"wmRSlľ$lw{^%9AJ)wId6Ϗl.U_0>~ޛp͂e(xPfX,X,=CFA7ָݿNI LwJ>q{ih)\(sf]5jgvur]<ݟ3Y膐v>3q{c:rryJ3N)a(_pZ2툉|fsџĀpCԇoWD\+ Y@wg^af @2c`LbMX\ c{K@]@RKvDIzƶMf/Lv]ʐv҈pJG[5gQrC\'`G#km)j\߉(4ܷڻ{_0[Í!÷JPCpX),zMUUeR;0 ᳔ I**J'W@0DmR¶~ d~v{ fzUɱ6@j-]P:5@3c .9Jڥ Y)T+OzWj*[zw[3H[ IDATNf3,`.3PrI ,@$H9Ov ARόX$IY*U S%UfdǨf_tU˭4~=Hi* 1Nz3w{(\zSa&3{ 2S3+7)9볶`RD#_\e(cqyBF'ܤhbNa 9;AX00g1*M8p`XfX"8#gNB;pP΃SSS*& I*{,Y_D߭nEP)q\ MZT>253%TsE^$<9ǭRqJH00fؿG`mC0OPNk& y1+!VCiqAL`ƞcp{X2cNfTܖ\!3߀_Z]8!᐀`tjj()E ;w^$x>37?gJD xRvrcr$} ?Ohȏ h > w;a!k-e!ÔJzO2Z<'."ެ{E}vp|z\{b!p 9\zK'Mcqx X'@WTIҲ$38ˉ3Wt5t'87WH3fٔ]J S)R&Ia~x㨰5$;04ݩ??_}l> 0=f(3Lڃ_!a-vAbn0pqam}-b1P[~C{хgp7A; i\ gx~TMgY='LQw[iK!5 z%IuPRL!e.͹eJZNIL|;}l?Sr cށ;zL5Q! q/,ˁ:4RʻYkQ-^p p L jog/! eG= (C o*  }nӨ.@]Ԇ@5ʐ[Pz!?sg&_lv8M`XshED!`jV:w rSzlTf'r2>#wl1WBr1fkab Ý:E6)I{|`52x >6Nh/ %`ZRr'm=Sb璙}'JeH l\Ή=?YR*]H$%%XVXob4Ʌ'? ?Ýa VG>``f0=Da!yji6a9r{C'jg,0|&,SQuI[xx"%a)WvapQg\$Q|y3ek?nŸ´BוɬR׳ԺFko@Dޜ\&(s)p48=/wxCP 3^?lR ` ae 3̍y4MUu3c<_;||xe f5h rʘzkW;aPmy- DZҒbXA&K L 8 p vwEc*w07[!3}Z|ѭDI?(bk;p& 7(u19KS ٵ&/}s ז{w>kf:; Ş }̓w, =`YZ[d0=-pas 5ezÉD1:L0_)1a g(hU{(' Kvp ONLHv ΕI]UONvԞ=| z8HJ305F0}{٨̸'[z AӋ;--ڶr& =1mX̍P ˔m^@oK ܀T-KإcitkoP5D{Ox8nnZ͙*1)ɭ% D %T14M,MSM~ ~&׾ `C)!Br2I,ss8p[5x~eq:L8:MSkNO$NȠ }%} 1`cEO  f`2VXbQ  8]s˘sfy[(ҹu+b3IIC٪0`3@AM91*+)}AkPDdmW CWs`1h`~0}PM`^or Lm37`IDmdR~P6g(\(= "xyٖ$mSZs+'`Zj nQax@mqo"sx %'8͑cc>[-_aHSR;]:+*gƈG;Єȕ冔BuHK5Jx Z'G߅;"3,X/C?0}8+aͥWo~Ɠ5cvr >Ǡ: \rekCb vX pɷ{ ܡ WS+"s,3e:vq掙̞΋n}rS2@%cO.o+d'|Pyo&e4Mႜ܏bShF{懯//m2կ=kjԧGmChOnE،_j$KS/,l@mWU.Taƻ]|MjQL tvv>afVϺ^9F~rmqaIDOAsKQr;ҳxRFĚRCҖ?uqѯ<7hj;{jO# >Zdひ XZkaÝϭ<ָA& %8t\`nВ0v('x)P->VG[tBdC-BJ+)af Uk#K eA1S5l`G/.^{ U0OcNmP~x|r2 }<.' .=h/1Z6/o qZdL,v_c[qyNI;Yk"|cJhJJr"RDŽ ׻M(Zޥ+`h3<`jIL32|4MrOk|le˞%]sn0?Nzk6fyU1`aŭ 3p̌ah6LȌcLq`Ʉ%Z]"0a @eLVa:G1(!i BYIf < :y>4<0'>Hӫ鮫'5ٻkVBq+K R^3te|TQKțqaX%TYT;oG||5ml(!z_ G,`qq54ήmcI)A;cBgt| 0H Lɀ3M &~FBʮj8@!-I`[lQG34gxX}9s*;)gFs [ۃfۥ]>ǘPs9/LF5-).S#t%" n#CO,/-m89fPT/V֍3azF]כU׭!?#D1s~["">;_'/[:;M᧧D5rw "7*,Qy&tT-WD W jI KC owyNnJ2>ffj2CWMn̙l Jse* A1Tt@/JRڿw㉿d3ԓ|ӚObJ#RIBrU (W[‰˱Ԅe;ſ F [H3&,3߄l LI3{Ewa?M2x߆.Wÿig͖o5_d׸L>ER#:#3ߗ9B`(d2'.c+⑽-\=_[6 7/g- C郁63L5a=fF!aX;U+ŧk-GTmݟ"5yu'`JQy'H xj@czBSg1E;L/[Oa#<FM xE88_2n)za^NH͜Iq~4 L pxnY7$g saZfw ۰8CŌ%&dPb$(K0D7USIcwy6ʀk.=V' (-!cjqfSNMLt:x+JI@i#A~dOQ0ݦ{"K>apK#C;||h~:|Z#]^傮:f܇WL; L lIɹ$rƤؿ5w6; ;d0ـTGJiS2 k}e ."i3pـSh6&g_ Kr+uiϛ3h#:jM88ǀ =a{d-9\o,~㶼m٦KGJK!;|H$ aP:sql)eXgxo1vtJ'~ZT|.Gk*)ORmxR䆙[$BbNhYn ;H8~(LS SLP+j7H)5AJkg.ͅ`+4,(Qmẁ}B [#=!t>yrvAjҖoUldygwglF2.zsv}!ނFUHy0L_KB/̰6$^h Z@Bp_D-xJDIV,'&oDx ҽt >d"~%J .vH,Sy"MwKBe HyEJX >ieM\H 4 xɒ1'Ӌvn 1[Z9=;}4])Ic H!`N&,MWPKK f|jVQÚu*&Pm}t^ŋ$K(T"r2˧ xk8\l].I ȐeƅR(®j8MLDuB-̖7d%\b6 =6Ki?c vzSmМ<"ieEZ3~BUr>oIܻWCѳ۲_ݠEcy0ҥsuJ^/[o,.8`DZafkTRSx \ ZUBN̖'`vcN K˥c$ɞzd˃rD=j٩( ˥['CDG٫gX\aZ.1KrRgLJC1!K3f\(KuS7udp\2eCT=f;­7M$TsD%1*©v"j⓼M e eiXY9\O0?94W>&<ͅ [xXqf$PQv@*;~QpUM75^s$He"Uy[qz%6>$' 2#`es,7w?EGHkVj2Fۮ2d\kj->np';ni2~]k`ޏr_-0%a'e-9SuP s{̒-3A83J{hKXM5)#4$cOg!D8k 4'q*BRysgAS K2tf!Bȏ)po3z>3[Y`YJazbw]k,Y[L<hPN > ϸuN :MA1M^E IDAT|T2so_lMɜ(pgAw ~fRl3wT<g+W~Z_UrP"Sa$KT2.'%.Ql hRߤTl;ʮg sKIu4t"ۧr3[f W`nz ah28Cv9LDQE gųg5vg% rĭ{}fKvVMIv]R6._hf,2X<m|kMZ%U`ޏhJImr%NT-ڮ?lmƁ0J݄clJ ޳sK'"'XȜ0)XtgrhrSgrׅ愾t2LCpDFmˤ[Ziڿ~3"U琵! %ɑ HK\ϒEMi;r1fkcsa혼j*/96I9]1 jk)ra F{d)3Ŏ9My$nV?S=|kd"򎬤ޠ#=-Js%B.+y)%QJH1LW?Dq;ۦUͅ\2;k*PmVb32\fi"ÅYPࡁfR'y#PZ2=O)Nɱ"w Ƌhp°Fm:&m3ųT x*o*lI \p_g D 7; H7vT .x׆o5L" +lp]yz]zn:2xx:ܲeo>}>|,.[|,b爔Grc$K %JeEK\c Te|ܴP}fb|̖W!^b ,JiCa ~ς&A\ sbGHI <όrSosf @p=#j ?! s,k2\(m@Oda[EXHwްYcr%=)0`;#&>eQc~-,Rsi/=&87nSNl/#'1MJkKٴ慙{Q 0]~ n+&ڀ6!6|gOr ;{6Aםe$ǂ&O1*S"s@98qZ?U5_>Nd-ޙ וdX3M0~PEgYsxqo`>MW`|c2P.c)%7<Ω >JKN,_C+oo%8|pS1ǚ'v@xL[O8fa3y:R"DF3RLP'tXJ)^Mlȑ*;:R'DJPX63 \Zdfvm|]PTˋ%=8'}G"JO6><7=b^T/1(9;wia}j5AIixM^"pVK&0@ƲP߮scH  nI(^r)ǣ4A,[Ȫ@Ź@$C~wV`b a gm)=9i;?ghA2jv\%%P r 9pЯ旊52fGgQx0r f 8syM&Ѷ1D,N9%i&19R7x)}R#0Kgə]Tݹ}RMdegݶۿr" TӵF Z(QEǽBIjdVdnvMR9Y6~1gƇ(Cˌ@q) I y/{:x-^aPKKrZJQpjt:.2p%6v)g "š8kWO#MK6XT$Y65 ;c7QF@&aFJQㄵ "5& ֒9`(9<ߎzA4B%%AdV4mţ(Aq6(jbˊIf,13 3n6$#l&Go4`* SƵf;X9t.oʵXو(5kp=nw/)=&< 2(̶19|øͅu5 ZDCwP[IPdM7=wQ&Hg J4 t (YR%~jy.? 2j58i$'Sjr}Z6I4őP͵P1 gz;Kгc -F+R:|橙b}1HS2W 0t p`&"*\JY6*T6l\5Еx]sIH4vx+NQx!(e3ѷV$gDxb)h vM5a @4iS{XSSl2D` v%|T+fFN8sMi2 Ќ93:ͶVD,M ak;̸B!C@kĽ1%Q[҂I:?v4-~-SkCJf 00TK6v~!XWj0p<shЩ5͆ bIz%[MF@RJ/"m&iRAN3Ҏ;x(jfjLig Tydz y͂^^~ą-PF#ustz(xJ|1`rc>c`-){"Ez9Hvːm^?:|YXoc-X!»l6ʼ=r{Ǫ<\Ԟf2'h%2:"`4+V%2WL9D//A5QQ:0j4\*۩h͎60fa[`O>Wi^b[/|Ruje,s@ uX7A ةc4>W$`U!DQʡ4V_G+"rAS s9SDR3 㔾Lx.S&IAXI<6ށ]HcL u"sfƟJU|bX1/f2A| G2S9\>5W&,j rc}e0"w;vyLi2 Cg X|+ᐜwml X.r OYl&ӛ1D+.6 C5 J'EJ,ǡ0NJ$'FtqDHZx zJm"ZbЪ|mPDM`S>m̽T;y6SAM-b!,qf7n "°@]RƁԇd^ECe /~wUݷY~0j`:2"_zv@-^J&yN=!O`*r]RS0DY/MC\Yk-jG|}3 !yh`|)K1>%/=O{tIxqWL\8͂C,PִJGUSfĥFc'N){[l/8+Ⲍ6|#D ͪop (bkB4I`^aʉv6džlNw4#@4[P֎RqFPnN&QbpJ/)( $N`"w&D޾Dgwۙ2ʫo5P*j80Y̨7^%1K;SǠm:lԺ$5%`@Ml/*:7x ( ;߁/̉ ۲VR*O&>T} 2Xu圎R\4 27*Uvt 9^%ֱFl.Rk#^ ;4m + ihJY*ލDy#%t<ՎbP HC*#i五̈́}q/v\#ipAd18 ^Xв_T@4vHaF$W&0E@"p8.ČGJa{lijw+ss].%Wc:BnSQgDUlg[hr8C,VsΡMI`5 L3ZEWHL8*2UED[f j"cDTJ~v0?'ii!Mri_x KhfANd*I[LηBw /C HK^0NnU6$M@TsJ*#ln]8&A `ZS$SIL?!zn1iuJF$~\fؕ, Z 8MLg*sۏ!߲Uy p (K.b.>`D۰_Sn,|gW(݄L5O&܌(6'(q6k (0j YH2#ەpklJh2h OPN9` gEgO4~8ekWª#Wq'nLb},CsY:"$e-qU6vͧh_qSJϻ0Py }@WT LhBL C5îSoySZmw.[3OV:EYI!8%j{4`!L.RN*c(lJ.RSf ۮ ~}vxfVVQd3uf T˧c$.f52.k__D`6whiARBmiv!iy+%TcݎXJaBfT 5a^4~X]\<=Pą|"]ȥ`l y.1KoWb"|'fZm pkb1x#0Ɯ%}ǚ|Mwc+prYwڰ)^aͦDBu\)AִYbPpE4‹ja6-<:;&5+&v1N@=^k$KMLtttۮEìc)v3 4YT%ncwv;RMEj:c3)6t#̵2 /X]Q.Imeу &V)I`j\(޳4sBn<=ҡ_r`5vCU)pџtc,J "JП< ZkLh ?ix!y-_3Tc Sn\YRH)!H~ho%Uq-)fRe\i$.bh3N(-ܘU8%nk *dbv}1!vj(TRѱۉ*1p=qD ݁=v4Px<؇an^߰B,0#343Ӱ@DlkKBqt"y(!1c`V-x꧄VFaPh5+N@vKͤ)q^AxzVk`xɓp( m_$?B)!J4q`TA1N oӞXܦs/x,>kc>jkdI׌{bn̅lBCНSg ϙ">uM !f*41hojy,h9R=49y @)ג dsR^YS .V \*GGRk(!8ww)oU0:,-;O*Q KIG5}p.vw3cGPL K藤#ES)rGJmfi W?5)5mKCHJ "F"d"d X;I1~s4 &>O cUQ518=JឍlND >7r51T}2.Q||v9j 3'PY/).G[~ϸ@~Ƙ#GX00GofE"_%ⱆ*B]Ev04 ;RM:VR:I$!I)!M:]ݟv΄u"a`|!x |?vM 0 ybX!⼂y٬ԭ<0}V*laƗE'InPZfɹ{ $Ŭ=ASMm~\ $`RU"g1GZLB]-ǙkQ* ٛ;(rM6 TTtN#: Ù)*𛝈m MiARSaylﮃ4%]v1 Q6swI>rLzIN䂮M)G |XuF* 3ކ ! q*cK04|#9%1.q1@/3;1D4p.91;]Iqڐ' B7vV@);neOO  Kk1pL c@8Z:PUU9T'%ťz:ږud dƶTGi"T (s9Z5eS;lq x5gJyr/a B(BFb{`5K=oxM Sz0%{i/HP޵y@նRe LstL*Cg8u_I_^F_x;"@SL]3u)Mii¯{8tcOns'wUrس!ù|O4KU[ dxHOI\iaY P2J Fu fQ59u.b Bwu O:KWۅ=X֔!kz'^ (`@pڈwTS8lIT N Ag<ǹǦ- -ׯKR15v T8 .sq '9+Ny{K7c9z2F9%'.xҁ}64+mh- AT$DYixlᭃ+;2t¨2x1Π<)M kҿs@9H4'̓4a.˩mCG0:!#k4s;RcQ\1ap4+Ra\Rf-S-8ۦ mNݤNw}E^FOj‰pxqN ז.8-ukd-4LZfzJGpUgB^2)!;lDd._۳iA֡ bV2N RfFYtPT#lNCo«OݧQSiN{Үs޹Ӝ3:I9iPœz4 ЌR#!MnL}-> 9``$_CCRfKܕsu}̑,JAͥWP+LFHgg@کGŵw0MVwjC:&CdfYc<{. GTzꄮ9c!ԫ>B)T;|&j ={>dMdsPt`sڏRmTS/昦@A'3j\$Gst\9KemULkڎAl1 pkyrʍ0 T_iq.HsY\cwsfM S|OaOg0c27|"SAPT< 5N=N&:M=un`{h OiWRzݭ/ ~1hrn37XMazJږ<L Rjf S=%snι9EPV Ct{h1N/1 2]ժ_~ 9ɠuXbijv{v7TKD} 7@ #d44[?G MzndzUQwdA7-./)qiϩrm8&̞(q[p@=\| IDATzǜ=M産&L0QjϩvN\&<gn i,$4iƀ( 0xly>'=2맡tx0q7PmL]6R| /$ok^*죚~m\WשA-F?m&.Ht?tK$><ePYDPUUrB{{7| +Re-$&7'p!N(_EZ$yiɖ%\܏%EVEY $f$4q mV5\⪀jm#@PS;|nԲR)',\2bgf sbjn7yk/7C R{OeyFyvlPK*p?:}NL&fESBkK"B+p^ g TR_TZ=BӉmhfXtwcm + e.ɑ87D/5>@8?Mm154ZsG9,k(|(M0:xU~wڡͰHFvYD(LWTݛ8*#`68W#1J-KX{Lo9M d hpI/3ԩ%F˺&p_UB<#\kGUh[%,~0B%[|ս/h.Gl5]8$TGy)>KnTL14~>M{*OSj*TRYnSSeJ}Uw8q|rqQLiV@Cv(XM3`gSȏ٩jP\kkL9T¹R=5 ۖ¸hC,4OA߆$۫x '! SH{S(t5SOxoJ_27=ȝE-p՗^GLiX/iK$9|Om*ܸiOލa!,rK$pZoj{߸Qpd}5ZhK9H+T3eIy^I gDV@9P۱c?_ҿ/\$&t`]#\ID)BP'RMR|ŷxY#8'eȓvx_85k;Ⰵ8*y\R4-rh[VY>B!,f@&(1ߵ+?S9s w@/Xd~ dTcu3TU[8YO*yIH8sKX,5(&?oe;b+@W| J 4bFB͘Bnz1LoUq) ǚ}Xm>_UP cTC="4#dL?s^gqBkMݐqƀ%=(T9~8Aa}9YXW`9) 5ĩlņ Vp1ȡ7q'}"v߂oxϝT%mnEPN0ZA|ݙS:1s2Ͻڗ = /cvɇ<8|G;~k`qǜUn/-}?fML39$cɽűgS$g{bÔ#:.)! ¥%cl\Pn58!*m67HJzޙE ٦)]m 0DO c(Ϗ* pJ߄÷!ŵ!veyO 0>%Lu3Yx }44~w1O992UToi" xrOŸy%ޔ!TINRYL3WF 3H&P)!@h6oM%п+@k~AKJcmI¡wSgM*S-6V|-JI4@>~_D"E*>2徥}j|/݇7?5.cn"R5>bQ[HíS!إIYmnB}}XefMK]tnAR{5;:Bn3%P&whtM)@HN"?kS^Ʊ46CQMUa~$tH5#|h7f 4S'kro/|eR%z;· Oda0ʭ> :K֌t#9;zी>TY^)+p3Ydu,5:0Dp?{  njL^9.ynfj9Cn/ y2Tw>QrER('uͥL3FPɘ>{N0 3`E@n K=X|[ÁSYmBQF:,8M7ΐ`)P-kXq89LrWN=Ոo2FyѮc4P* ǔ)H!-H*𒸣_2PFұ"_> G}k<!ZWdGN}q}xL^"AX3PZ'So~3x i{-m8s#}c3|^cj\ A.E f$#t[Mnvd@Pƶ Lӑ6wY>ZSJt<;4yFsRr T%r.@Q L$$QR_ԨWr/Ww-ԿYrܗ ^d-5ROi_u!e8*5-%.M9];& 5ji6DNM !+%VozKK%Fvԗ;ƀW4p5 DŽ÷Erذ f=%C3|@g.uSWTp1ݙer RBlQg#$L0XNfn9~xب5G <1qfB5a pU8adDafLs%+A[X? .CF@c>SoU9UU\_w;@;t )8+ڨ{['/=#E 7JtGڨe(Kܙb 幞 @z]k璜55=Wq.'}q3P626wr'VfnragFf0y1Ds8m-'9 \k"!t+<÷pMՐ,U[2!!&"{Ro]TC=P g KXى/1^)u$ G}WſŸޝ qmuғqZeu5%iΔ\sN[-aJ~Ybjŏ?tMۆRg~*n(B_⸃_ OCawL6~h% 8\wM?){y=qBr-F^<x4.md'5Hh͓ëaSx7kmpWsZ^W)cmV^lk*bwctp^]Q503$+خdCRf<8`z?E9t$~ƚ_/iF\ oY8O 6^}^x;qpYǓ0MqzzSr@!WU5*QA.L>2{<~Z|D9bQӠGlQ73.}"0T+5goNY',Z3uSq0 SF`f={BWL88C 2pO/SSa)s@nf-3A9_v&]lKMFl ]#zCjNm8w7^V}`Bd4 mC`1|Sl/5z/q !`^Å!CǾK\s1c&amp6a%i$SImY0eS Now7 }G0*r)M:uTokذ8cwM{9,Ų#N:}1t.h@2Vobgw#^vI:ڴŹt0A u5.NX!SnXZ̾&IJ&10AOx6v&7a >&7X /~S)Y.k*47oMVq;bψqqJvo}r&ϝsU2:d(3$*υif3A :])ˍ~MJf 'Mz Y:Z7q`63G,Kإ&= ?G^ Z/_rJq1sƩs#bq3]JD˕$ |[SzXX[b&Yer}c<îu&5Q"ۑC"Ns3mJ;O#e*xX R3\k~(B "`ǂuM it3xV&T&ڈԫKqn($rj[/24xnrz$'wԣVŋPG60q-ٷ&U`iocDMSM)@7r?[~[*85LXp4ɐPW{.͒FYŠM$Z RZi^C\R) $ZV%Hf ^!֭..Ehoɑq/C%sh)T>'a 8tȓyO@)e>2hb9hZb2]c*5ƫ0*#x#*Hٹkn9lY㠍#cd4e81`iEE}'* -`!&)9d1ɩ0)j ۢxC=nɰӍYfuID{kcOftO¡!Q>| p}Q:fh1% sIV+jIh~6i [20#Η=~Kv9ɝRtoН 4t _U=b Fô:ך~'2͸җc&kެÊ kq&ygq{>T`Gi2Rs#{g `hZn[9G! cȀ-g8r =6wti0Z|>>sSX|S 3o ta` k2nvs*Ƌ(eCKxvLYg2Hx>4hXCz)@N;zZ<*4"vŘH(M:Sӷw3%&KoS4S Ṯ\ܛjH}y꛻ՈK`GIbQX@@cݾ2#&yJx+9𔂑3U M2N6l#11=<1&u]z} jӤ#:fpZUdNp`ҟIoC#x];|";SV:w܋%/.!nF7#*8}wvq7p37sh9γVg~VgաN`p;#p+pxQ^`9 p Q w~ ˇEf`OG ]{sVTUR_4 mWXǖno~b͆4:·89)nv& 4Qps+mpH%p:ȸ5rm+#b Q=- .|{o>CT!\dNXD}!A3N5J,2:t&(!43:*7^1әQxA}GW_ ns2\M,GUC~ qZv;}YjL99&I&9Zd<\ǜKqڣ^u:A= :!m'L'Evfwl4sNϲ;Ӓ3]SVt徍wGi0*Tvۭv~'UWqӂ:%ڕDRJTdS?kzT/Q_woC}c*4<;\Tb8sqy=|qG CY SSOj"R],׉*064wwqF$.I"W} 8Sߛb_8S@UYB8}>sOL͋vCR_l}CF赎tϷtd|-f8(+[%j8i.qS!%Z[o2P%Ȼb{txprf'iȏjvնkYIUUR!M%c. oOg%asR}.;j 8,e< ]UBb I84#BOdCls0I88&b;LҊOP?+MS 1Ga#?V_ՄG1EJbs %vN AV y{oM{N`̿smx loAd-XT_CjHg5s39`zhjGSNr3.s$Uaep7ا%4`>d68o=αG(}2|Ioq9`1TM8Li|t ,ZW8zN퍆Њs>O~ԛB\*%sNY;,.=hOu%-BgR 4~>B8Ff`I,`<߮Un <YrMn&8$h`˗4r5S=s"4S,Ж+ ǾΊ\õt2,5}Pj݆] "5:uߖt9G YZ1dLu 2=GZ #3^pջ7k2{RْFfx-kwy]qFxj%V@K^kJJ`~L30r3 Sm^sIW4N+sV 2R#`z;&5DDV@~092RCss̡K.VL+,]Q?RifNg6rnwkX#ByZKڅI*N\10.hVDBt;1_>S?$ )M ~FMĉH%J^Aw͚ps1,7R=wqwKJ{SwOg@rZ?ߞQ8cK%s8-ߎ@V2mGqɧ6J+s TL@Uq8]͠@H4~`T e)(Qvn"kFMK9VeuDr$s;54ehN1hxSP`S!aHWTs>Ksq{ UaJe|M Cx(ݥ}aY siS]%6A<k* 㵦6ūST3Rjiu{gNSVl.Dg HKL Dirg.ٻc~KNxn,?L]ۄyʩ&ԐHk=xcf쭌,u;8aRJ攉VQj1bVc%xyXa68 FNs PwvwVp 'D> ,=u :6%W;7htAxn:8~tOM2۴IF6-^;x'a2`T8Ιof˝9:ԉ%p֟#hꄃ\P8] Gr᫁~] ͋G5G]gcDn@AābVSv;\I} yX֗jVLkv%%xX/ T,+D}|s;\R|q  r{!)̱#5reS>b{xysyT?]hTɝjQ %Q~ 2,1]YL ,d5Ƴܞѿwt)0^vKvO\rVJ2͹EIHd`>cc1vt*GU5T.Ej*mbܖZIDaZr{n+TQ_o~=<؛^d٨Yif @˒$zSn+hh3g.=.ܼUSr"SJb'6Gp8mq/7 \2uSeg6/XN2qUbZj|PF/^X;1zc J0\F+klCgH U|S\ u+F՘Y%2g[N=otp-.Z!ՇP(KSdU5Q֦xbH$Ў -'yo{qCըX^D5dcI9P/v0&n#GŲ> dhd RE*Crο{k=-f}&nQ[bv`qz}3[ ڏ1LL-/2ML0撎l[b[)#ȷ&7ыW/fȓmM8sJsz>Fjjp5-+"f`@~~]3챴;ZTRE{ FEK A *Oӑ?qAOT5Vy#ӅrAHT𼹨Dzɧ87Ec.\Yl}_rsMs)Ue؃3-ixEQ:~3s,S +rbHr &Tb &a`[?kH[wpCS nq-\u >jx!| JG%hl+w1]Ԁ. vl6Mf1㌲Uc$tLL3we/+ͩ2eJ] 9:PlfM:Qt_}mt% \q 6m`H`)Kx=aLPj>t@{ @ RUjӿ6a 8XnCYd7aݠMJo.+9F 3tt$Y+0fxGFCRlemM 2=&/:hD`ɀA@~^;$@A#À pa*џ3{2Β)bYTsptJW-w^+%chJІ;ܮǶyTSÖtSŤQRh{SL!T=^ə8Tkij\ ШN:E` ;mJ wG[INͶW*)cޔJZ~Oߎ+б^mt׺"-ǿ9liFsz7SW|҃4cƚrmшkoNn.<3mUOl' @ /)3#>?{f{0@/'T->0qb ('B?R:2yG.,W8'0o ȭ{Pk$$/2V[RqS 6ɡ~omY&C4#kV9S 3M9S SR@ S.=w %i𓉿/{H$.:VKMi8;nW1szd;SZ9-%TK6Q}Er5R2=ϛGpM-n0TwKߘ!! u.8*LO̓9L5qZ΀t0 = >tT&$&grO؜n~; !{|c_Fnc2?%hA33ސRZRi|u@O2GToq7%{aB,4GC˱+g|ۿh|=(g&Xh$#dޯ魜\9:dnk"';TA tΊL!Nw;7&4?C ͙#RC~a}ۃkN(?s9ZXI SZXiٞ] FmO(j)Se42fݩ}2rMxU-1J"6ucw̽}Kў4K:OQ̭Vԩ2{ ŹɎIBcJLs;FTaOb/%(a@5]gvFLNT"3…F&FNd@Q, -B?"{ Чrk0s`wޙkIqFOL4KnH^Iν'Z {۔m,iZzjr82krgTߢm6dq?Jm!>tfF}@< ɭF6d8ˣ0XbFn?D'| }V SPnj5}z$P PQI@!oJ9V]jW`9}W3`)w^(o1˚If}~oF6`k]{ shj$CrbNhf\fcmGCp \=\Ϝ1J,fJ[.pq(I8kc<f5ʛWF }Rbl,]&A_cBG|ʜWHϐsk[Ӷ)Tp:r[4sTZ=2EE؛z_c˵7 PE766BXִk'v$WBB΀uCwt•9f-ǿLTTٞilM(=`IW=)@OE8Ҍ} S<ͯXuLIsyvOf<+b%b͇b)M Z;vRL[a< $ܸc~ےOMmʺ456Ub4O~> 9`?apo>2GVG,3=*>>pnjzgX16=];jlx}ts< 4P)NV{P``iY8s'6eLIۚM<{2vǪNjtb<`P5^cލrqt[S{'k9]#~w8n-AJo%ۓzmS.AnTys|2}i?'랹]0#=ơż%|"576sELNJ~^ϑZ`Y50q9@-AC:%nGxwo-dhD&ٚ~cPoŵ7H="<Zs8M@~7Tn@[;mJR_NҸLinwoH'%`UTFXǑ"eF@^`s,tGVFm6Z a>8Z-k^b"c횘bg&7f[l:_N3Vs|4?=k|j ҹ%&kq +'&zgK]Bc#=4F ;*Քɣ<0ns &mC7'ߙtkz `[y~7Otc#:'=R|M 9 Wqbs4?u3H q6ZN4+.c_CY\wz*WY(3>P.[bV 6h~[;zt=q.$/ZOސa;FzG-Oq(h( pf(k3VR}jк6Nb6"qg-rMka4O0!آdcD>kb|cN;kz/p_P}q؋nxg$ip&vui9[D<,ss%ƙ%S8uI BFk&hJh'" FؚAΑlLv^;]{vwgX3̑cd<-҅ņD8?~1|Lj]うgwFn5`3Sg$=5-s[!>팺38"5}Mph 1Kz19i@qR-4t~KI7 0$lc@x1K*r5<1z~ D_6j."ۋ=oߕ|aBe޻Jeak̼y~Nĭޛb^Cg4- -1u]w&ǚ,KDXz`Ls;v/;BɳClJr,dI<&kx,X c(˭E] C?1<Hg#X7۰=<Nد]}90͇Xk#2wQ,J2F(IO+լѝˎck2ǂ9$Ƀ0pl,`[%K l}pz7xxE̴݃%1I'd_;n6z$t[3G;?؊ce F5V ,mV0VKex[!KPXgŏCICcqZt,&8a e)N IVgΫК leIR8ű"q"#L炝p&[i&ڇ^7tcgX!EXT=`Jy֫Er=h>)@fcXbډ 3sB3" %Cmơ[vԈ ۯs$k2 'uY$]* }ΛdAG'j 5,!p#Iݱf Rlq>ZL#nDaFnW|ahxVhaX."C]m7( }bXXD0Otla,6"7\"=!s`<8!#̶˚*xOiR @E^œ%(`@6b69"ˏ]F5;XOם"V}' :Gp,$ _]pc /|9*k/mlCIf(Ld3 c3dxt-)B$t;O$#2Nm[n0B~ѳ/T| [D%Ah'Zdb`s:Y菑e"z6 + 1 ra9=DCDBx 6~pjz&dY}w}܇[XgĽihO`3 m-yi,|G|O\hJ}hχ>}[5L$?}0- }SswN`U¡'P@k5E܉m`.Yݒ#0ayOHc˖*:>!@N#'Mv"{)@v,vȶCt}Ý޳ؙ-M(c@Bi a@sX66z8TW4D!9|x#g,kH!*sz=at su!Ù~RXϑ4!ߥ0[_AMݒ!ηpb}+ޯwMKC`u^?Evп 9Ln,6IPA-,pw{9;p! \0U_k"OD(-3>o Ap4899alcYmϰ}Xߠ;>esX9,^ 0]q0Tdz Y%X{mRk&"jt!N=*XW9nX ˕bP;tK*tKdA ,ɤ/E#0[/}dgPr ;A|Dɰ 9,òqɛKLS™J#lBbE YC9p1 ˰>g$$T5P>|o,Yl h`2 >{)kCe(,QMϔ5n] >K:a2,h}?raS8;aӡ[n$gǖg"LrXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXYB3arf ^):*|deXE*+Rd\Ծ˰w0,s%4͝KY'fLׅޘx r_Ze45+BV?'G>ga@s{i09sCm |`n4mj7>!݃:ay}}uGR bt}`RhN0[0>!8r{eay#X-eN0ђD%1BkR@N(&eχ镲ȒVhdiyM1fS31q4=dT2G/S10Ne91 ɥ44vS`yP13.\'C)xR8s8-ڱʛ|X%3}Εqf[S.GBغ#3;唻1Ay09,w}&^JC>iL+L/ 9#b&Ԡ<'>oXS~'դ/8)@/ʒv!nn=kb8 c߷L(VjI}c;y7qxpf7c i%r8,hl2|蔡%7<5UK^`>Ǯ82'04,PY7dM8Ke n%ȰF4o\Z£aqbR).R@+B@u_pKlJu֔gv)64PeKFx1K6Hhn^ , \;F߰ La{t:MZ%KX!Gnf[-"-X.JCpFT e|_O\|} K;m*Y$?2!r=Cٖp;Lij*KuZ]Zj dM{BӒ(ow䄲O: i رeE"EzH}?8[27s`MX./D`a9VY&#k\%c):Xi+,O:g\tYG#'K6[TKL4 /pOP8Or4v滦 + i]FԶQ >p3c΀>$]TIK2ho09T̽KJoJMÅE9>#z)yDca +ds)c>7Br( YF IDATL=;V}e6~o["sPN"!eh~.8VN;qiK%L:VUbN. t{7* c!d{b,k t1.i@jtKM+sNt{ s#@ |Nڧed{8j`c...z0>GyWdLe!yƒ^YRWJ pXaZrn}jwrF17df,?'gKlL8 纓ro%jɨ>^tU)u 4 4$NNXҩC9 N鋱a%Br܃O`ZHQOH$%p%b Sv}r74EK&g.e29։BL8"SE1Y60jl,A:<NiNMLsSesC"V#ꞪE h%ɚ0{X̓7q1Q9Y7ƾ99(+rϕfχN uư =1}>SmFY/_~̾@9&5af}D|QX4(K4U uuQ5# LKTMq}Mͥ^ TfSf},R7V.\1{ڠ n2FaM x:)ׂf> ۜ3ЎUO?@AT֡*h ?asY約F.K si I Q2E@07[=uLr%z`e%>.!Praʠ>ޙ) c.EZ<+CH[ DKy JsXrz!"e 5H*-} _D~ T$T3nO2eMCƧ\b7\d'eށ "f3`v.>j>.gOEa@\'ua)f9NhynjiLDf C])c"L9k 2@jCM oHr3?P>ۨDcO{OO(b@>My.l/&Q&9lHלxyss)BXRӪ݌](IS@s"@DBԵ>8|s*s ]q:lyE9\Ai%| 3@!߿sIXI!:%͉Ff[>4ruMpƶ+\56߃))mp$dg@9䈔tQK CX|H5$o(aO3|D sLO KTX"L6VW .hwejN%-mKJu\ҧרD^2 vrV k4T*1Up+e_J6j |v s&rPMkK{pzm*IE 9ɧ!#}lѓ-$J$Nh&rzMbݡ|trSrEch*3C~8LUhrD KFatP*7̓瀉ud :IFj,G2F'X3 r U5m vf`j3bfT΁ ڱkd^925kmL)ban*SȻ iɢc#=27fp$eewr~mmL^ ǺD 6s}Jr)`E\rm@dj03Ɍ#M=ڦp;w; v#vn "15G gˌ9ZNnCss0c@8 |#8a4T L܂ "cXw%@K%'d>?g`LKfMgYHcLKݜyy #PWMU_1U<}i,؝aصS/.{V )Oċ.:LDA9݁t 2 ]uv&Lb;?rmsv.#ak.‰u)R2 ;ܤ!<@R/& 916CaTC9{8?O:ۼmGlf3Ƀ0 ا~ȼBƼ}rY@W N3/'s\b hާ. KsI7fn^ -!6(s(2 2&I G;gU[;/m?clf~5m su-pXF0M2kT߆s~׵m9?jh,A_)9 yм (71'MX_΄J!jhZ/<~?^Y{|fLy iש} U0]{r׶;k'X4i3unw4bԶ),,wk`Ѷyx{hyG|l{|7G`g -tyzλLdU2+T~ lGnv:; 032UYY؏!<Nigk_Mc]ByQ}|dFU}x Qgۏ4LJ-'w;+ M\Bpր,*c|LO懯6re?'YUbɖJ`i+)*1(9}֒.ҴV SRAmHQ>G2~gݚz4!SU:O4Ѿi܂,X)~a`{-Cj'TOfvv\}haʀWFރ %>-pCZdSߥ{O롩i@~\_$Nz ,ԣ ?{hoOsͬj9 w|`)C{^\&OR=ULۯmbVyhy7̮][_+dGЁ4K>d57YؠT~C/*jjdz/M"z;7ao, ǘƘ0~R`ڏyVm}xuvMc`RuL]@.'^4q,ҨgH\bwi4ݘ oQ@U[g&{?Ÿ%fgZ#B= ;`z^+{@VF\|<|<'PUTM^1_fg=NKZ1nTg CD&?~r/[4ffW:M1?s:Q)ŒG+=:=#?ew9̏nٿ/<`1@@E+ S&`>ee b2֌9Ulu9cUY1גD)v=A4K-{0΢+-zmIMm}#?agǹs`b~|pG7)-c@d|cL(CLX~`Psnc.l7L7dع^gNach*;^F%ax\D*5'.YM94%K%R_:T(@eDTylg?R~yA:s ;޾7?P,2F|.X 74=p23s 0HDj47ߤzΗIs1֗Yz8򓢓1dN`j:eJS@^gS`jD"(2tSU] Kg1?9|:ub* ?>aĪ6ie}2;d1pedTSlx`Fod\3%{t@p.I 3f S^1wyt4'@ P6HmjNkEf˗'{?i_pav7sm3ͭڥɓ,PVYUO!`\R 3kPc9-PMZ3 S~9{lg ʋ]pbdѥ#= ]ĠlvcT3j FnO/>j2i"zyY4'GhDm/Oh`)Qi2IesZbMBp۔@N9}L4yLG7?ѭcl:#2#2 nH00â3<.eeah{&n hezcOo9_zvW;L4\{OxKGˎ’!\́e)Ʃgx sZT[;kf={E*uCm0]@Dt&zniCx^Y}zs1p!PRAbW  BdGhkgȘ -/`0?[p;Ѻ\(.ahD%Xʰ\e,/:J-;Z&=1Oqʿǵ=wlTUCsWZi-SC)6 > Ӂx,mL鎀>iѿ\{>1ƿ&!ŧm_WM5Dti.̎[4co\7'ɞ01Kg9 S&{b]?}BԴXP ؇e֏1N Z>: TlMv{x7pB ZR#H8+/er~WˑeKǗji ^}C/"D4bfpB]${߁=v)Ɋ{(RFp\+) 4%Xz=ι! Q6NhYj M ͎-%Iуx<1h ;clR>2I10!ȅ!T^ 9Ќho h{Lw KsO֔0}[(K4uhwcf2il0SnZb&pyz_'Se"sÖ,ӱ`̎7Gjx۳C ,=Pʰ< SZퟓ SS !i >J09%pjgL&iSMvWź}{cSzi)[ vm9}Kcd3/zXj L_ c`iJ&k̒zҶe1lv1MUDfVg [ xcߌ$Xw4:ZS+DE} @3N}xg@a9<ζc~2/̰0]0%pe 4e//pdT'VPόe=d)JcWmXf.IԶj% ٯj/ rZe 1&.TPRC ->a5~6CogxʀB5{靋WGO<8,f| \Xj22̐mS23bv{Ǵ8:CvnU|rMDS pHT$@4f[*~:p:m.2窭6bEF ]{x5&Jlon=]04B$x̛v"h.Bm9i 2 }lM W~+//LJwp]/5f=㡆)%y̶4L`ɪA1c[&P5r=Z߀23,~A1p_qrJJ%Q6nD&pnf p~\߷G7}l(k1u H04s.C9%G6%ە 5r,(VN/^jAp-r淯ZC/=#(CP Yrl19`#fl1c1΂p1v0eƄ j*^$ /`qP})"0fa 1pn6}f/+.LR\ RGKV+oƔlp<;8/Ww *˕R,X[͏)`΅h K% |ʣA?"zKHK >ty쥟6UhwyŴf-4ޗ[a (^ZeXJmI?.3qEζ; P9ג}z^^?S  ZNq@`\s8$`^@Kd|ꟗIٌDQmP=nd"( $rY7rg%CXP=~ã/c~hYuh3n.(eJaz 20):H&)Kg|x ã \lvA3`b.Ղ-c(<Ek]W<\p`I'ϘH㒲 M d։ h=3 gsmv6p+9K{)ֻ uIH38-HyhhcޙM5=?~דyR/bJj/}vܳK aH2L. |1g0`9\O8el饈5cLBWeK; ,,K Q"Z"yvoc.uN%p/n,c55!e9Q4cEâp0d>j0vˎqh+cxVd"ͨF6*Lm8|akZ݆Ls]DE fkam s1ʧ|8dC4KMi) 7-;hPu^}dPUO֧\_.'# 6kxh,10",OQ'`!8Y_R@jS5Lsn~0](HQOFy"fx@i >n(`YZLd^'PMt[ɐ=Mw4}mnՒT9(ewOmʄiU0uĬK e;ÉS=^-BKL8/U&zrw.7Yatz2;Dg`pGplCI1|ϿyLf\&RFa&J5M%s!}' %u@ IDATnάנlf!Ṕ2˸jx5;=DmݲǶ-8@(2b8W@KA= 0hm-2x-f4Y6SeaoB#Uӽ[҄(q0ɠ43$Z*@fi Bn ѡ%DbDԀL}'~֘#k/ID2mAsp}s:$qM ٥2e"(L][Jmb>X|Q+$"QIr$ o1]vBvD"1$ gLRCj`WU802ٍkcçO<0&K Y_䤜sCPTDH2cuJKVq@ueEu!~d ] "aTEBqôxaGlT>Um=Fܩm(֜`=Qm~͎飂М JJ 5{pFٷC'Tv(w-QS/?5ٻØ;ɛ#ˊC7 3_)/eA %ÔeD@.YjOx].%RB/ |@fuwO.$7nLuX%v&W-_SS)-+(jS?Qmm8iXtMJ"'vsBbUp D!h S mՖ;%LpWO'{~DU:Lfv&-G[#S<S&z$f[ʒikygu@AP؛47 CGI"Ezp0KMb5$<  NdKXdI^;wŌ&Ody~t(v22Cs Z.dX{xLj *J7ȝDT $L@Mmxuw0yTmNܹ wxlO67\Lʐ+5˜(K3ڬ\Dϲ/sPiCK@ËvFK]}lHJ :b12M'$r߷@x8UI3;%R?Cug}MQFI,%S$@7H9Σ{!^.qY7>Bo5X⓪sY%ѳϖl|<ԭ0ب%%l8}m} U~kzƛr- sݜq6"=K\f{*A&qKECg}2_c J&6Оql\!g0c mq:|v≖QѺ f%fX$d}v.*Z|-i7 [mO уFlj߽Dxol+P7(3;E|CC~cd0RCz%מG5Jh{(gQ=KA t>YomI9}JВ"xy6GRU>fρ|Bm1oG1.#%dCL&c)<`Mk-.[\nܺ1KIDqeW LqL+h%X|Q3!A0B+:n,% >,݂PfW,NNR(HlJ5಩p7a(l/1̌}̌&Whn~t\s/Oc`!|{*)m&ަeVڐ~ό~=OHUl {r1O-!`j! Ð܃eZ\j-~+ک#G%M~I=M6sZxQ\Tv8jeᒁ~P1c5nv:"1C0p~ɋz^F7:sTm\%c>ԃZ1K&1`\MB)Nwm"jg=?#t(`3G}DXNe;t[0%HJ0j0x:InmҍN Yr+Fa xLڍj J}+ό9w;\am2W#4L HZ_s08O  }驫/r 5y؝ qZ$EErF!`;5jZd*h1:&GE{|tnEE˒qХHj|}{6.oVa>;|[| NWI2(gfuXh5n=b\ccY/+ILԢ~Y'bNeCF0&Q5>Oq{2O0{,d_WODu_bRfA) ݾՓz?gbY + /N4 'wMQ3xR!R_\g-w|e /xo"|˵mZ$vN(Nɱ1'18hMc-[l͌)D#qpJ.,xF9R,ԎCgDfklۯYÏ?-$ۮlw%Daz8(LwnLzԓꚓ#t[5rל1XJ.%~fnN~PJR;q;0Oe^7tf.2hɢ-)Ct9ܯ}<˔3ܡ/ =+lDGثfGcF鶾{MJޣD ˖rT 6艍D3*8ʰO_d!sdcE2Tf0OS`t,yy DF=vL=8qH 1CT-g`j39_5`9-x~E!Ҵ6$^ |{] (`[9+Gv¼Ȏל,bc [l⏱XTRX$JA3Wh"!1~.m!iftSk `9]AT1үLigZg-\xD^F\WD`|׵xӠ3;0,B=?r}y\xr,D+arNovW x]1yթv,F   !X@U>4}?5fL7'K J I4SIk]9.sw}6%bSHlnfK'SPf$CpF².9xySp&,X49 X -~cĎ~I6>ky7|Ȓ-3E;Ϊ2NFƛU#|T0?9}l~ҌL2 IGspCY$N9 ̅@B047}3.K<Ցuڽ4%SEB4E06plD-si&39:CM,/3>:e"L"."M 4Lp(RIT M.EgI 3>wi}zQ|/g-\39bD!mBpI)OVY)3KŇ5o}p!Hn ~so?`U)}3)]4 Xާ˟[o+8;75gx ɹ dÛy&^ܜ{Aۮ-,-~Zj"hFx &0cґm &\s!dXy{ %3N1U0;d mɩ9̅޹ܰw> %aj³^@, 9vnK-mގgJSCL_)L`-^h%H>!۔_Ӳ1'4Z?rXc![Keߓam]5K;O1}; jqWaXgg;Eh >cF؎̲2B]1&qpKϡA詜 wyKA3(AB0y2x4a ։ pm0,;U'Lq 3>:q EDzh-9|iv8p\c,sӉiz\ ORS:f&G^hp#YSW*2Sv{a&GLGO`cƦbjd]6SrGrfǐ$cZ+Cs}d`)Hв׼]$?d(.bw\̌et)%kyZ;lE8G䘎i}$c R,4d>Z&0?!—̗y6i9'53Em`>BO:jʵH#aEFd%A(iHI[^kK9@}hHG> G.+/gl[0 u(=wpk3i:0uGIwNM"lvYܐzn"cSZeR+\ϭ_` sa5ajm,9Dz8VCs\cRL%|"LV8lI7Esp/ >/f|%Ra{s.=j)[ESǣ'3M0N@K: +&xiB IZ*QkQU'Bj[3g" ,BJ_qnI6J*5kl+'@#f5bF޹B> bׂ,]n8t02,hvOV"Tp*YR86 IDATcLrIodZh_:Ң44αuN):_w\ ';.8"wIhQblO Ivx1 3ZAԙ%G5\IfHS/"<k;o8vS=yt(7v,ޖa䬪say=Fxf<:qdyfa]gS!>}'bR0N9<@T,O֭!}Q\k]Ε 1 xu-T3ysax6S^XEc.#/R&ײٻ@Be|NL5ȗ+ib{TU/3MaVm,sì{YN}LSLfijLxEZo~7Y.,-pKBMORGi)@CFIJZr>r?m2vǮ%KS2-.W3}em.0#M' cbs3ǐ25cH%ϹDGknxԍ%JSZ'oLZr#܌i9F@ُV ISKNBrBJJRxϜ^J4541 2l0uhΚkNaaZa]s#uJcn2?DLؕkz(%uFZ5- c F.ޢ}]>r0_H !LGU`X_ks{F%0 ʅ%J+P"OediQG%c&{?%"ml/\uY_ L9n7vwi.,f<:8!6{V& ߥPiF}%s, kt zKlք ѥbH:!+M%@ z%b4LUU{c]9$K6saJ6q2agvDLh*cv.N"8_t=ҏxaQiz0R1eFY@䑢E-& a]0gƿ\DB=EF^d;CP&3L j-3N-0qXB]RKN#kn[ >1<-SI ڍ!{D揂̗WXgr $XM2_ =R" L')ȘEUџnW"7=s5Qgmk3$ĘfҲYegcD0;'AF 5IJmrL6.s0]G}-(2[}Tހ%쌴]h2y"d+DzT]U޿̆oEGwӴ@O񺼐+"Ob覙7M1a.-cfpx!Ɓc$jP ϛѺ#N2xsJcBbv{6܋S BjW6 )%|]r4^Kf*d/ϠDF?5\ *}lz +x6moڕpx~-e̝s8Ì .Yzv/^n 2-A!=5b"yJv͌'Pq13 Eqb00[0Q0nq G0KrZm oS\c\ӂ-5FA] (ck:vtZiV\mAڏ7kŜcl  X_c#fڨσ]`\PCuk `ޤc#6JjI O8el:R'mn]82Y,)n瘤V'KSY?'%NCnBnD%18s`M0wWV[I>kQ]IapoG-mfcؖ(w4a'N$(:G6 X!%:̑)CE j&55M!cӎiE 6C;&’+Ɍ%~4թd֡\~Y^hw;"D.ܧm6xކ+}E@UbK # "ya|ɑo0MN)A7O %]?NTNI72[;O8eQ{3[j'O/dKgn9W#GTLXw6l00j0e^踋#cܭH]7.dP9-28DŽ 8Zhpx-!/*\@J21! &TԢS 8U4Y2uŮբCh@N3U?aHqi\J)T_)%F!]#?B0H-.FE*7H#[<Ge13sf%]>) >zgj aSX\O Mf[iQB*8G'3v؇>[f@Q-0`3US ZopTv~ e`vLUc`f@ =1B(+fiSvY?}: )MeCPԦmtQ5~a*⠏| .ζK=SOcŒ$pf\r@d7Z# pj >)NY^M Jj@+ҧRjɔ>&A.dM5gCΛ&Y(ic`C/h6&1 o}rxD5XDTS7\C8/s1ܳ0 $gⱔdM-=Pʖ 0<V*eTΒy#vW )hXin 3ba tX=K > #@=Qf\0;oWb!5S.uYyG`\p UiTstIPXqH(^+ef1еRPb=^T`8V ~҇p L$SwTOyʽ=7RJJ}V̕[&U&"Dk{"KMl? ccj_W}Vx sSsS2]ZiFKVvt(?2q6To"p#jwwwG6Y՜rY%Hr9x^v-+ˋjD=‘Lr(pUT 3p_:<rGpD\Gܵ@4oا4yR} yI;8]jERv. kx֣ާ R]jD)Ԯi/L SL#F tQ9'1lCBW /0;7R7)D߲75[/ ౙ!R&U!=󆁯O³C\si0ǝLs]9# ʜ5 k8gD8UН́b>K'SE6C~MU_ki-7G2!Wv<3>"9}:Jr#&jGsnc!iY3R)Fz'bU%䩭Ӎ=;XhLxʌ:S%UqƼ"WY&݆opAZLКexXd7d\N"7˜IeޤuKoIUȓj>g(㡙RkJXk.sdz ST|PY7Y`yt6ڛxjɧJRa`>NC"<Ȝoc)?kF1-_oƾ7ank)(!D#~1> X`jt~ulaJYKVs;H.&qƜ2BgN͔ShnsjگcV|˲`S2cQPNFHͳI_Fpi>1v̉Id-l<٨?]OS'W*?ɁxM+x199\έ}鼤  |2323%qFez^GrUR5W?)j u;YIADC[+$`@@8,6-뇈`2@`lToMF]j3Cxx Ȏ+NOal;()+ ʗN}\2:3mbxq_܍4H@Bd(]O 7l=~{^t\JZePe):b߲_VA-QW`T`ޣ7WebT- n \V-j)D ūtDޙB >1y;q!ƞX]#h)㜵L;,@ZAk%ⒾxyO 'Z8@F r:fz8[LHld)J+p.P"qZ"2w"'xأvd"i\1dQNTd6*-,r!>w 1 "d6ٯK] >(|Sx訡`ruHY!pvD5T?[p )~Doֈ5fõXFקЋz*OdR$ZdI>ňfs^BPI2La U~5q3B䤂NV?]bTՅX)LKxe;r.θshAc%Z7^Ct2v50كd"R cw0@95CZx짒R RQjڰ??xͺ,` =D ف:z|=GTݸp͌P\ET֎(6u8r1;;/I>d0*?,"i`+vТ2BgoMt <}Dgڕ}28!ǹ("f:3'TZ!se'%:Dx^7 g=d?ΊYQOxߢy.IvsVsuˤmrjy鼫o$<-f^cDIuG"9[9 9m%tҦhLgE+`KH 9E:Gf2bϬl7Ad߲F@K-Z;8+\if;ؒxDy"E@Xx%2i$OOyIdgpe(i ir-& !,TS4h'=:2TԜqCQ/>!S?% vJs0+)Q>pMYJ"7\X;^,Vˀ\F)E kR2C D0k<18jds+x|xcinvY.1Yt;Ė\=yޥ]\?ZLg"ВLZ1 (7M)D#k'潪Hu;C?EAKk*}яi6CFvdl!d{h-PPOL}׆iF莱QEI1?8M_bl!wg#sd YWOCwKwt15R&PG_X&f(52L)'Y'%8USf\]s@aݩ\sPpĸS/cAhʠ`ظ2͆ZJ"t5I}f$p~kw1{;= ͞g hz&Ki)%lS"Ş#$]"SXzMLM&Nk,rO!)C, 'm5\aȺ+JJ6f|YO,j4K,G-Zӝ~..d˰Z8STJ̅wsǨ+*\}@¼7њ|ivx~h xǀC_rè=D)5Crhԡ1č8 T,=W$`X.uLUVkqxԡ Y`\.П s)=$6]Dܙ1#u3>kγܜ%KqJ,Z}F<Xߤؔ {~=€oI+(/}]Gظ'X7_TP,BZuѻ%qٰ݄f!jVd: %j>S `T8H-150́7?MTcT[$>Vpxl0BTNMW/5$ƲS5Us #v\t`8(hU:r7E7 3yP̵S¢s\y% bIpV& kHt:SdlLIjyN0*fBMJW{8γ%.6GC9)NbZ,)tNX'QՐj~ܢh% 8 R$ZTBT<+7R>1.p<溍VBY/;twS8^ aߏli)]r˵ئ4 pi:[>ب#^''RkFXL* 4- }.aj۔`w 9~K2 9Lk7 9J^* A#构C8%rXevvO)Ubāmb<;!ALB 7ZSE<$m%hf|_X'Քr:^gDAݒLaGUVOFs$#߇|`g)mc`vy_BeBLg6 jXpD!TAT6YW ,lIGOwi@Gu2./0U iά$Y5&s?Fk'7*/@O )ɎZ,ˑޤH[*r-%٘+s)I1IKJzˊ|`[MK6|DK`]>(M0Ɉ1}YxES\)U--LmzωEB .XZm1#"+;F?R 5]298t*7P9S\N]଍RDiGw*!RQ){TDĝDPIˌ#t}z)v-Q,hA˕r]\R^Ss5b_̕T]1zܰ زyÀ%1)K w%yF)jeOvWEK5@yzfXGx]AٷE\H,ܒ8a{a֘\evjy_-)Qەc^sg?5u?|)"jZΗ&"<mg},ىxTk<_)ZR+ ƄSKH B0=pXTquCy971Ŗ}w݊2׀ؖ:8ZN#75]JL0H􂾣-wYiCu1OH@]Wi` u؝R.7Oh6P 9| ٢S亇J[,1[=eXtDcaW|ƥµz^C0uޔr@z jPbSۍ0r g5Xf@)J9Τ3{㎐cAoVLb:\=a8'5<DgG, zЯTkWrx47 aXJt Ė֞22Oqpdd Kj^!K(6 WJ=s/1Yy)Xz5iiP;g(|'P*iybΚ34ZQsFB&^a:wןw{Uj| yM-yk]ds48F65xi@Sh*nu.McyRټi's) c GٱLJ~.> ܧl17qb C$'. ̵E*R D!N X)'KB80?{QMyM]B {Jmؼ7NYZݪ5h֨54q%୩jS,n uj̐cEtgjtK5 ".v`wO5dZ \jWXZn*,I>!3ׄ2ՙ෨ ܒtUD~&p*J}g~$F#r7ȗ?ʂRiA_7gsϹ]Bx_+A(? r 7xo.?f/`kB^f,54-v;"|$ H-(M@"WjYvFZVDl#d ҈=WD I.p%:B•`.I3B匂Lyϻg~w38k+[ l3WXgN8.3̻#}ƄoKLȬaFKS8K 005a}tKYn#D-Or_G3SrzxjwWjڷy?\AME19 Jag,P>T$MKNsLrT f)?pȋ̲CkjLK֙CT_tcCUOۥpD:,%c5\%rŢRbֱv FG!}bbǔ/hJfX1˅R}s(]Â, 'Ji X9p` ޸fn џէrCs+Π95j b^ϗӴDpޑb<!q~.&?X f9vi7ZYli,j/}nr$EVFێ=~Үv͇ur>n *`ZZp%6ZrP>׫39,r0^# $a '^uW&e65]UC]VRSOg 1Q!2op78_(pԆ5F̾Ik@K"̒צn(wl7 @7VQf#){;2啰hnk4FS#D!6%Be S t\nlpK!o mܮlev~`B)2hvZm&Yj(3({c{,KHX 9 i}-)'*SR.3k6͐ צ jrg !0rƗScܛ3pAʎ%qbW wn"Qwh ,l!=,޳N#Zg@1u`F 8g=gOnx?ÉM(=btxm7gJ:ZԦ8hC\"P*em#܎J@Pߕ9`oΗ )YloudS/̿KlZ+addpo_)p1r*Jރ*{EKh)zmG a{$@l<}2lq:1GQ mDQFmUA'$ð2Cz ~bI%X:ri'QmM%uY`x9{ !XsFV cQ~ă׸tYR9zCUʦ K.Mȼf$]TdK2UC;e2T$lǨOǟ0t =1YVk} 9 _ 8jhX1ÎqU]xqgm OjBߔ8t194kZ"}@_ .qL>{c_S%,=-D1ýX{QU]0 d*dBT\&OYrCFWC-j/Nij.lﮟ̹c&%}u6VZ010kU17 ؐ$ !!̻'skPʛqi|B)b)~+1р4v}VmfYʈ))YZО}3})G(5jxzIt4>![کlx^Bm$+Tl2AoNyvN~ ǺMgG(BBޣEwqeu um4x u- UvZ@}yFKtnZraOˠ8zD;sҞ?ѨR )פQA%6n(p(A/2avZmz%O"S'Hv_K1h5N%3A2`lE,sIE)p5/Yŕ+)Xӡ+bJB1'YԜtMDn4g&SXy4J[pHYO2o;! ]soHwXrSQ`MR K BFԏ݀g+oxaAQ4G"5v%xvmW&4e¥}X \ N+1rYP |~ƒ˴nV8ܑc<P{'oGB5T*DT=xc0)i3Tt1[`b6`Bz ||[ظu跃.|]81{K^"5c6e(֥5-рy]Ai8ed.}L)@ Lb~_0&4e==3~aD@n$xʎA?HqAj] y hZRT`V]T%ZGa?V C؅P63w#(  4}\M 0]"`aM%p 3^saS5րR8Rt0hMLoDSyFG,\tR9ˤf7?x+q=!x Pދ+8qrc5r&J-$GiKEqZ%H55JT^x>\ZWm#gླྀSXCÀ; )34KEjDm&!2- nE/ s#xvPN0&5q2塙LCֆNևD@͕7iIg"Ϲ]Nu V{>+x69"&_S%(!4CnS;݋0>>]_kףCпXLls@s@H) %pHNOp%j;+U `ֵU /ͻSNݎKq SɑZS Kc}xlH㥢$bjpwFlZ=LKeD!pЬN| 面ȇJQzP6[ J;6F'p&۴@i-C06U::~N tnZ!@@OۄǷU= ([ji21 DM}Na/ob`6T%L7jw4s&%[D.SaX@߃aݬT^Skjv_wWBB`J 0&pҰ"D`Z! 0Mޖ+'~֮GVN FRA Mo @8rN ˄'ܿO5̈ QetK3*Q(<&6SsG'|Qg9\07(wVLwPt'eO௸kn5 g5#OF2 +G{*gKi0[15wXR!Er~AoeH/<,L-gEͷbV'ψ=R-B{KpbOM8D3vDNuKEH;;9UZ2*]D>`< wpʉ[a4[[DhC/Pgu$č8t0cQ<پ_鸊J,6x%s5&Z9u8'1܀pT僩Yc |CHr%OYoa=W d(Qq'LoFzpKVJ>4SWSaO7ToS!trC 8 o75E h|85/X6Ghgh'o  )H"?LaF`Qz$|;M"qj,mv30- M`^{spa#6c|GmmKU3KK+IKvjO!0țyZ,tZ%2BFਲ%k=5JwA_`痼0 CX,p x(Lov10xg=wD><KCWHv#E7F;/K {f<OJ40;h2rC9&h 48áMRnT 5RΉ=~o [ry8(IfpG|d=dW5 zD/RNK9r[8_ޞ[ Hݺs?"'NZMzȖj7ZmPzt#>1ܹH sOx/X+Ԏ5歋y .9}qj3pKD-jU~WGQdnjxD4Y\hyb֍A7 Wc&_eN`U!Pѷ~{|x ^l3X`lQќȼrfyJB<dG^Ezn0UHzr7ЩL30]5;$򚹊}9p-ܙ)!O O fk{/C"@đw%6~7^ p_9fpX4ϯjkF68?M`ud~X0ϱ̲f}׆Z-g)ZaJa@Q)sۺz-дxm CnSSԍ]J8w>x؁ڳQcdWQ`=7+- _zpFn2XrV9ORUG(y y|g gǴIZ13ae^tqcύװcǼ|"\>Ron{dBҏ3O'JkֶRZg FwHKU)Uզʬʊ _d# 3⑿ \D 񿨐 ~K_i)3UID?ڲ1̱yJM*י> =29E Ler FԘ>d.h遈/XtoB sG=>`K3PZ`Yb5[}Ӈ*R p4Ov yvKd^ڐqQ*W5n +j7e8.QilCJZK0€~yY;i {fssd+җi G`WfZPJt<ǨI[ÿ`KdS)l@snԎ(#{Υap&KDz1F6{dBTiba򘋿2<_H2!VE-wu\#6&a6!g3;@ )Jw %1)DUafzܦS<4 AN>jY!2(6Ni j 'n`jYs%ۄgƛ ;zn㭡w-;]=-ða@͊npT@,j+|,t/՝KTNTs/cج#bs/j:?w kzܯ,MV>N(Eupn{cZNB,)4;OT 2ޅ/y3Of4Mt1du,ӔNܱƑHƣOd܃*z)Q>=4po {|g{ÇQz 4k s2<ZP{_rdl!:PjwUfj߈:iZEо j4]js9ƘO+Ġpʎ9 փRp@h~NzkxwQCԮ9tX䲿{dMo֖@2:%n _psKYqRYRc(ÉF2HԐjѩ##;x?JF̩!;Q,\\syL(`las lR>%")ۉpy?Kw)*u!1fKnFn(vBi<&Yus+y\IM=x =6ag9)ӟhHBup`CM~={|;˅j]֯N7orw(E3W"X$-BS:k>bn@Rs@7,_ rSBA4egud9sdKb\Pmoi7GNDl( 5#UC%e})g.LC`=7Q?'=~^'`lh?S )<5(-' Y35MȊ/Nj(' 6Ҹc'Z0r:W &=#a#{"\mX6"@p0c=_PcׂPtc}#ֈ3ڳ_\CcaFA=%hQ{U[et5Msv)YJS~S/>6 l njƹۑVhc &kf<drl`URW2.}rKWFkV%|S2(' sq,\K%|xi[VJ4ڋ=>LKtWftXʔX3eJ kew'R!wykĦLjp}vs+tv"i5C#ݮoUQ2$=sMDP\]Ot?}/e IDATZO6`l@XzNMIft4cn1GY7sm6riN=w7hXoLzZGG\ӎ`P0KH`Zz'Y&)?C-)85hȋP﫴Iח=%0 8΁ڱϻUә"rHKĠ%h[1ֆ)7~X@i):y *f5qwDka.;uyqNY x%! Ni<]9UV9(RzA'\;S9! 浣=3\£#Gk"j" 7v_TրT.$0f܄,r ᘗ &=A]+ٸ;pab4# <;})G~3 . ay'Lg?^EuH9~53`Z`H͔ڞ*v4s/ؤ Y0NR1GxgﹿA9!9 :0wJT\0KR>2|eg9 ׁ7@&FJ-{|qlEF/Rm/@vHIM@Eg0.7CrJq+#5 se*!w7nDpT1Ƈp}5*!'_\dkCT]#椀0絔T7JYky` S{vgh= CwHW(2N(S݃`@l.u5%XnJdz2i͔S9F:OgoĶ[NqxfPD@ZIh)/l n"ȹDD[mf*-CE2-,VNOʁBg]QkDZt5b-Y?~0M9h+(T2@ < )pv"Jt{οNE gdKZ@k0!g5bs|=歘{cMu]g,w7a!76SӂVP3IȮSzZ0\_\.KN-olcrݱ[-J,2D^pRD[#(}*x^}Ani<4SIZ]BT+s!R%S ϻ@\R+.*r)Wi][DFk9אs5h <)w%+<'\rDPMR]h/}4! y !0P;\#/E8Jd4jo{hiE{=(KFAvool9kӲ 9KiѪAl->{QzHNݖחmm]Ύ['k$_nרXd$oU2ʷpl!]'TKf,^w8@ %Fi+we1J2T2%QlQ , CX1[2BH ե`^\F.65X83|?n.ƭ6;g5$p&l [,357<',xG̒W z}&3{#G F +H؅"ܖǎRyHV"_Ub/?Z_T4)^2*2mDR}%Q8qZ!ϔF XC!g80=KvW \6n}Y.b[ ԥT+c (s"ԆL`9towcWF:'n)J L'^s)g;Cyw {[(]>pNh!}0eiQ+N<NdS UAF-Y, z__%84ppig'\Vhrcǚc=g `y yؿ=KHDWL9{>`+3QrNNs'Qʑb5[L5c0cppgV&QhթQoNK=>w~ x6a~:bxV\y*\O%\{3e߽?<XN)E v+кF<"V<.}/X,GdlE8/GJf٩+ey>Kޯcj[+S Jl Ҥ8ߛ`cIRpB:x3Nt Q.wg\}9Ιn _b,m{ђ1^*sy .e@7m΃1n9yu_Wz\U՘rNl&D!X1 "Gq!( 9A (HH EOP q0np nؔսw_۝fwk9?g5w5k~}]f5tcHn 7縬 vY.=阧jFd9 N v'=UȄj+=Uuor]~I.[_x5 jmנ=%&dk n(v5 nU&>}b ReH 9Rf.豀U2nY%ɮ:\s6^Rʨ4p4Ȏ2ܧV< ҃)+vedY~?ux mU&>Ӡ2Q8t܍J5R?ߠ$?~EPJEի3b^h3924PEgTlgH.D,S,tGzA4<V"g/L{NܖPwcm 9?1snjz@4>`&d1<V&caFn*߁Fߓ,AF$&uB)콣kZzՍ|oWQcWp؃Dhl pBUc6  3H7b˱ؐ9P) :LB˥Xw,n0MaymZnhs7ۘϣ TG8 z}03Z= מ ir.rO/A4bTKt[e™o0^25C'i4J;\VGgx(;:2GuYՠ_ !uRI`8ϙmKխ 6s=?#|bUQ2fnowrs*t #;BQ+K'S:=noMA„)-u1!B Oֈ%VAƂf\ vX<(j~ _c]O,g~XZH#vbEJ%4 @0' J&rt8rWbcqNIJ̖6Yh%,b,5QD-\YVj 0@[%T-h4i2 `20L8fԂdc`=BZG.rC:Lb=C˩gZԕ $xg `RE:1# /=ifY *tAJ?R&< }S箏JOgлvۈl*gL3儎 fkk}s6P{ 5o1`-8{fYqC6 d234CEeƏAW.I>vk}p$Y[,)&D(0z٦A>*-ĝ,A&7]Acpfr]+]36guW5#k0+l` ZȌDٝylQg  2535e9v/1܈yu H#!m:WINVd?``)GJγN7lM@Ռ9ƌ}70͇L9*Roΰ c*98"#T s:n\h.Y_ >6ǘkls= hIĒm:ӣˉdeaT-s 2w;`.>6Å%XbUSC~:O42 1[ڵ8o^ \Ϭ'0L0#Jᡬ KB'礟`R)s'^L2oKVP2BMB 鐬Dt<0QAd*2f)c"3cv)G T`gň&+$ ẅ7pnpsm1FRo.-KܳEULlR蔾ذgNM]gUB%Cd6BBj@=1cf #$~7 E?M;7wB^XMVixc3 FF`!'TlPN4DTM@<;u p۾̑5O:liCF77Z د14d>r~@ D><5F@|HDdML{.ϓm#e0Hz&f1oGLŌC 7k[VMbʙT.qtmݶK,3R@B8T' Nx+Uc.BCmKJ&mDi?@ en? TIwRÝbTͯ Ծ"sPB;Ӥi"2(p 񜱀W^ΊW`( 9Ûdvjʶ݄:K%"V3gV1҅VB7@V=&F YAX\ L i:&{ gF•(H !]XN60iqHO%h8SR ayi"df~ }uߠJKH&6bŜE1#8wb \u^b`LB1jB:%#^<6dz+G w,RV-#=~2Yf(-+zֹht{ɝY4h>~<'g4Xȃc-j&E5O)n)M(a4,!ӒC64\ ;t9vMDD쐌 @*]R~S4;OȯG9Nb=.` 15Wpg9$7r, hЧ?Eů%#uJx$@TMMH9LRN Utʔv PZ F+ -:`~@>g!<~yv}$´FLtɀ)sΟEh XD+tћJ潖 7s4 L᥶RF1Px80!YBQJ%G 1U$JgZFtPzBvF Fm:jɁo[!c`1]! .uO }Z,i 0V1frs!B*DX`82ZhxTvxA MIoܑW@~^;9}j0ew EW|Ly/eu$i묔)|Tb*6ez!cF$Xq FpdSc|jym`}~~?Sw8ƶ^{cHEij8,s=bL+.urGeZIu*يE8+KFYBL c2fB*<T \*Nzņ&P/K甖(oꙣwm>R3}R襭b @B!E%O3Sfh4U'uI-5Li`?/T04ġkVb@pxuo((R  \QVud(\ߝwym9ik&O7jeH& u6s,%iRЩv NQA$̴*œZw7#-Yf#~+Kl l:) QI'e2r罴"z,4Dcukbڴ!DuUљ#tOlzS^BX/7% !ҳc>Oc%ڃAݐX.*[0V[/XN c=ƴCZ (˲ 14N@!oW u#,R_0xGo#)B̬ZCUn)}B)_])TDVRr)NiW9FR3H7 籔J]H"1ǜ>T{DqJt=jgO-@KvTs.!h"SQc ]Љ`@)L_(xPV5^%乮vAj5{S7= v*+*I "~Ty1ZG~jbdIPcfۢ/[q exwI U=T}l{['b޳.YVYSm?7=er$;mʇ'd_n&LV+[lZ\Oi.B+Tm'! IDAT\#"kj?HH ̥B]NrC%XZ6Bg*ÁD*:IJjF)~F?E7%ϑ^Z8I& ˆf'@O3n5 j~n&?sul&EQM3mhPR.Zu!&: hozˠ q_`C=ǡߘHTLl#z >C35PC2VQZXU&|H\ @7@))n2Cfu SP)7tv̕>rցF.\}&&<#>ku?lP:s h *[ N'sMMFׂL hg41#al% ao;K)g[.T%ЍyQ0ntt3V )~dز~<Mv*+{>A>F؆>Zbbs ϻy{hLH)B\r,n͔9u~!#l` )OӀd_H ȇs-ڦzz ʳ| Q׸ܠ? Ox 1Y",fyS&d5Q^W[5+:7 )Q? u,nXv]#?nr~{P⡩1mhs j2]Sӑ0S!^(X:kn=Hoh_uZIVY P7{?yuX:oBfJ Fk1k|,t BA8H 914sS&*o*>d7&Jhj|=R+TS(B8˜ U{OQ`zVl syehN+_W)|:Es'q.R&~~luczS@H⽆rb]VKP=a?W2E*'b[kzA?ފ[U&(`:"DTX8e䐐n:ߡvKA$^ fQ~!ΛR3q}dXS]Q{/+JX IF5p {4)X'2' }*C ޜ=f}eoFn*!6MS)p$vf*lՄ '.ôn] 1w˞Ο[ِ璯{o"`ꯩUlS*u@t͇ ig&jುmJ0 yÏ:e03;*LM֊҉."<⎥Pzq#+mZ`-waJF+;Ϸ$DbPk+]% {:MWl_k/=2mR6ʇ1ChtZZ:-%Ո`G#2 ^{qg(5}*p1hFiq5+I4T=4J-vJL,\ѯL$8@?XvE8|wHtv@-J^c?h]W(0a<{<jgVjB[ȃ ;&ܑ`{,@t/U6XMwhv 2]p%γMW4gJJLHS? q8 U<;n}Rho 59Jh|Na<䌹bQ&3sTvN D0Hw&5sR67)*1kw}4W] aYX|}9=j~ɠ`8:*I<)v<:@ ߟ⺌22qlBK[ctu`?*ăh*])TfN! T mre!ăo PlW6V;Fbpa }u=d )uK-dPtTH#4]Y!J:ndG^w"хΉ`^[ -o 0J~>m $i`O-r%l{;Y(Fvlk[cSzq"Hl_P!3SXW4O,~$X<7bYbez[:GJ8'#q\fNhK VC+BbWqxK&G"W6)Qe>K(+)X<#X*}XR̰+L{DX S|L0X+N{BrX9+Ad0&Ej>`닥,VL<8$W:e G9S x>ѡet̨bF@?G2sF2F2^ CUB$x LF]Y~-؞!8/=>h~RYZzvY=wY?ؗ3<$ا?Fy.$o/?YhYY:r熑RĴ&/ rHC< Rgº2O&LO КK __QW)݇欕n,C|{?fPWb"ň'OЯ_cgaJD943b}SU`#0e`1W#Z&{4&6I@ T tD<7.6{j6z`!䈥b>.u&|~d#LSeUϽʙ:eQ>@2ӈM:<3%J&_ ?Says{uWMX]4^t޴o`lD bzKT{Rd!ٹЂBߔ JEվ˞=2!\m9'yw `:Rpl5`MW^t~!F팾w]Ƥx я܈cnsB'ykUwVbB z,̹$~= qW6Ia+&Pa `90a'ӈ2 TfetQizRʤo 'WZHBG>g~:Ke:T'_\nwuaWxÃvN|" K p{ JYn+Ge.g.T v! 3Q#3|dFfo+a`X<`/3!xyb"tSYԷ&TZMȢ+Ni40<ƣ4Mm˿ YC \g4b] ?.cZX{@V^J0Z o{%Z^Cc4{C 鑷{mZu?In{etOҧ&oX~ BK^_aaAY$Ab?kG9'역ӹtIJ~ 7I0Kou6Yv#tNޡ4G?^V1NStu}jxu )O~c^oK+iP9qr`uEw8C10a1sUr\5a̡s E3KKC* ca @1\KЇ)RAZ'=bz׍lOਆSMZ)sDLGB:?ĜCJ$\06K$~qPcM$1i#b* GX_Y:$/4=;+QΘcI9 TIPJ:lNxLa 9A4 yp~&xqtRTΙ5͹͙q) *1S%̷$s @LfPQӟb&܇GT1u>SWMQL !CV|6c9`ḾޞCkCS}4*,w6g~* k- -ó7 t}nJ*<҂%kgk@:p:ɝ;K"˔\, L8w%.)MIUAᑫyШ˫2Θ*Uدbr0p͙:4)|@1K'>gkנLOiL}JЄ@(+bþ$ؾDs0ϟYI1:,De}} ܜ09"3XN1y )YDJ91(B06/d"!T>L;W\)*Wf`S E5JϘ9!#&ԏJa2"%ĮCp "W&W`V/Crh ɕu(svim3jI+p8@y}ҒI"n%5EKe*)"vji<4y*4%iС3SL6ѓcEM P@QI$Epn2*= ?#\|h^|0armb4嶥UKS9TrY4J, QNmb1 ^ia$[\=琔F:Jtru4EjhF a)TE$Ϸ+`C@ĔM&h#ɪ|Š<űq{6i E'g$<1 :˺uu6夌Tq؄˕4@<@c1=4HM1&tǒX'#\fH~783xzsV T)mҮ yIKZ=VnCLuv<4Ի 0ʊrĤ@2U#w^B`%VHh@u'&}nh^KLCS0881 z6D8"s&)E)MV KSA~{𱔧"=ޑah>Ǘk,P8NEЖ)zΩJ耩rT"dŒXL ]!\HWmy2EEb|ʏQԳLu:SmyS6C @(n, QӓG/){p֗bO|z.U1U(#h՜r J|nBh^JhbK1=W1,2fMՠtD~& S܆aR96 eLP)꼙 G T?4ͧ\L~961@  L2.J91dI!DDTq56[n13Oع TՔ@4fg'Dfm %3.hκLڶf[pal]+1r#ؔ2@L +{?x'8JLVW.Je^} MR KMa'#87&kdL5b;&o6 IDATm_g۾m c`9 KdZX{d{%cn3 njXJ P%0@!ba:0S ^($Zd9@CS>C4Ht(x&K&P)6`Y gTMh|ǩ~ןsGض/76svmg bK˽"ЎiA@ sNd6ȼ 0m0.1mY5\(Pht ABDBV(3v%ZSYM:`8^0`d@YcP.(]VމDiwrh|l&7_:'nڰmh+E>aQw0{5fC, nmM} npM# M*9ss])CΥ3kS߇z -fʞ .|NyʵǢGvMѵAneׂ=OLD GD-L$NɌ 2c) ;5fM8cv v3D.3SH9_nfPPL9HYGS2@IxK[ʹQ0{'z9ꥁk[9!2 s TUnEqH{C.c◚ȹFu%4%aEHG;Ջyk[4H&Vt7TTUc3y͏F~_[o>,n KSH||MR+,Ȝ?E7l`[ 3FKs]@cWa|%Σ9$ `Q<ҙ4%`]T/J4VSp9 OK m,o5vq nW`g`~ DaFˮ^.2zb L*99SN{ eI44`#a|.iXF(sXob%U7xe MDd{c`B`*Wzc|{-4A]g6o;J31 ebڥ&Ur'Aw5΢mjМށρ'RF%?(CN9cJ4RT&0_qM7ylrMR qX9p*]gI^8<0P&T D 7HX`zl0޸vL| e.7ўށۜw`Yf2]j@3f䜻?Xc)H]ijtZe1RZ4љl]ܽUΙ=3Euā+\ %h3K)ύ+pH!~[}FO}vrtߡy#a;pwaD1b$5`Xf 4~,ey|((j60jmoDM5O:,ڙ,iZ cC2[,I rtLf K-)I&M_čd pf.È4yq<c<GASpPXth=Ĺ"c*ËB?+ᐩ.13]5qfzhsͲFy!Tè$ϝ ANByмjAߜ h)^^Cz^Mfmt򛟙_w)9mP.Мj޻bY<fF }J cmiFٕ$Х=@cyG=uJДC,:g'Vޮ{W/V1SUjoy B@ hWLoS)ӽ8ɀ&ǧ俴)iQ Z|:c&5hŘc ,́:j|U.ySx\ %S['Tg.gܢY_>{ql7q:уfɤ5X0#s ƘK0 iz!p 9R L͘S(gJ̚d` 3;oعڞLia@1rԄZpcrdH4p{f@@ţhxF,3eWEاdO_^xe.of[Yv)1ō1 r2`2fHԱ4G !Ϲfr[x3KԌ3y0NsmWڋ!.fcfʋ#?q3'YȄ.I$&iłQoN~"S}.ٶh6+lžuqe+5K R!E,)|FID=@iZ =Rܿж%8r&!m/w]ߺf<ߘ];M _dbE,Рx'L.3Sr $cf3䥷^<1+s.wށ[]J4C`)q d:?TxH{2C>WHs63smט֙b4d/0qK/S9ZR8g?CdzSu 4͔oڿ{*.=mA}{@ 20%Bb^oПIp 0{@ׁu/ @t|ifJ.eh2H:H!GQhYl5w`Te_܁l? 5;qoND+/%]O9iF̯/ Lb8KBCL L'4KBJK3{L^YD (MO^Uٟ&`rw}8[<{~w gnN&M)PLfC75h3 /1ȻE͊;=Fz d\2 p_;ptK]9P 45xJ_Y'f:7ع={]qXK˥<9$=`cؘS=w;җ\P[|K4ݛ(VFOTDc ?ϙff4j޽F.,sC(p8N%)A?d?oz5CA0B#EN2AI5fr2{y;&yNs^Nff<Ʃriˇm[m/d>8|1hh6iDc4ӉgwD1Bz8^.,10&oR%9}^CUB?rw`3LGf胱 3db Dkľ^%M9{ Ɉysm(0cNXN^_{;~@o^>Cn|YݏG2qJ,ӳiIluc|n໚9>o%FXFAl +Y탩+wzY)_:$gGapKvX Ձ3͍+Ľs ?cGU5} 1ڲd#B0Sx3KӴHL$%.:caL&a~Sɭ7oO"bQU}آY]=5:$ex@eH۔ZY93^j->_[|e1{mJzq_ R[bnGA&rRGo˫ Nf0xoQkD8&p :30sRMT(̟7Wak+~*.xR^(|?yI˫擇cBz5mgԋ^s '=+^9 ^= f#HOf1v)S3K海s>i]asB."ajk,#/o>d0vn{ Ic+ &0QbPsæ>pc|LnlY .eԐ0 O<_"&rj);W9 L\?'3:~^LWn.];tf>xq;dLҩɤmjK#=.i`Ν'^[b,H@RfH٤M% AaIޞD,-0#‡0p]Z~j9NNj~.7Y|߮T ے\sLK-m]4I͇}@+a3MBL]&'ko}G73 # Z5ZŃh`{)uL% L)Af9:|a୆1d`RJ}֠AH2Cʘ9 eYQ]i|?P[,$sfi9p6sPэq[&;2I0;N0X1\`\\&=*q&T{ΰؒusEx1G}͟&!ezf]=!!Ǜ,G斧=4=pm g-jOoZ\d{@iCeJG4Ȧ”b쓻+UhwHSOd.A T}*/Ta=0 5 _qgp搜nn7_ Nq<) _#b?4xV(sȈ+f"tDL*ڽdGo|[Kh^<٠YOFL{ɥI=䱘t?.c)7-^kF؆)0w@x Z!,蓻A}6Hʃ;0&YKKmnkT%Xkc13>5)%LlkD_~ R]QD)0Z=,J5N8# b2h^|?# T4L`8vpmvu{~\_ TK V#K/'KTH_z[->8aϘjD0tnb̧&POĉW- 5\߻nRs iI$PG<1sD,5Ϸk_0ff:n_rDNysiHAC9%<4'6HꙬ$ f)hf'Iwfz {q>]2@@SKs܇I쒝-M7w(%mXAGO2;3q- o-+$ H1^#CJv>u3uwP%;bg_5f.>XmN2ntHbAls@W?e#s\k|*.itՏ1q0Oc i6pxʻq2GJoZsxn 3Hޫ$]#ÁBL- Ge 3,qK0v[m6txo8 s p]:c@ߔ:- =Q[=ф7} IDATp|PX%P߶q̮ݮ/vu,"ɣsEo|'H(R~^h2l17r NVBӼܞ^ ⾧O YmAsS) Rn:%Rg؆wxViE]װbcⓍys+u? RƝ[06X=8u{0p q* ̓-֕v%dp„ dWo^^f$[.7 '_t5~ )M\duy]})qpj }vsNx)bsa$|e0" I7Gi^4c&5%;13:dpr5'cd` ″^]­-%>q*CǛ1{sf-MۂДJk~jE>E@ );|-~[*,~LxuWAȂwv/L]P L/mXwE6BY\zCs? ~^,)ak؂{i,n:j\bw'_um[pKh12E3<{7z8H Hf1 -ix50yc7>" tYA[`zP2R٨K)Mr ׭lZn+Y6uf}O1y賈7sueu]Ha,\+RDZ|iCVS`?7%QVv oq_F_'tMJsiuH(鎁eƢc_8T̘aD `r #`x7.<)!F,>V.׾hƳk+#_(V1 #JʩP kV  )UPe8ZT_96Ehl;H6h[%Dqf"2C0e )aEk0__Zvi}_p1 ]NdDc)~[Mbꨥ`!38CK5;|.A/GJi?TU+cp7 ݵ8IKrp0}[5=X0iX;HTgʁŇh )ᗐz3 ʁqe^h|=0# {*!)Z$Š꺆L߳nqmǾl63R ړ#П6lHMe]yHCiT1bP!Mo!x-&qL+Bo W7`f168&dFYͯ,nG4N9La #q!^rB02{5))9Hj'oNNnE> fJy[.2tOXкtHSa[ŗ67,Kֻd(J'X,uk +WowIpu 1+5S,xv8b!؝Ge?A72UsKyd7xwW/ [N WXNsmQ1C4堉iQ62W`7ܖ&2Ǘ]oGIcŞ˸igl6c~!)h-gc1C\KO2!E5[f _D_wlXf ip1b!pCTuA'sV4 0F ̙ޱ\4bvoUYZtjd12MbA3d\2!:k.aɋ9>L b`kaKQ,$'d{3Pꙩw[H.4<@U3./q},`6 K9)UۘDL;ĸ c\&@ePD{贓 G&ܶnfIiWJd[U^ͯ ˯d}%%#^d'GJr)a'X7x?y m`Wܮ -wuj -J阡vXo[|{0/ =+`#RůcC.%,XS%r .ݧc tNoØ^J6 +bVgf? "pN\/a *Pjvw^UΑ*Y>6+V@secɣS!b/&_ ߷)uE9.q@!-S Ët7o;ZDVBR8:mPeC`H!04dT_EC F/`"EKoJͅID >D_Na=]3e] dTX(2:25[s)X/#c10 M^|-"_ K̗&-.[W5p٫r  p3"k-}hwf3MFWBW01STťA|DKzn%&ucmh^Yk8>"f6d)r>_pl.IB\e c6)%hktŚq'r`X49h9ZK1N75rbU+}65޻v+AiMDw[pOC!g'@(=1S<݀iu6g$Xy~V0I8#TvRvjmO'~j *jZ7=-hn;&61o.3qםBrf, BF!(iiQܝϫL23C%]z%$Eǥ1=YW3z'iV@/ ɑUgc+2^5xr/mKBrOe*C]ԢFSԋR UZ  mjL:Vlw{szAX+KɞK.>4X4(Lsn˹Ո FB~[>݄f_LG3L1"^4]J{z:l?ኔ!5IdQ 鈌wGKV?p|Hg,u|Wim1Not.PX)CFWj[IO-bnbQaF5Bxwob%;ܷh^K!4_u<$onT#9wWX#hpCzPʖv:dnqԇ xq1O -z 2TJ$dk-IK)fvŝ}}oQTբ4_k KNFViU9vjڹ*ORѢ/%A6z/A+\=BR U@~`G#)tG$LV+_%7fK_G4Yy2cgaf܆&#`JgE)Kɑ}4۔iȈG~[3FW:(V]%k2K.;eU.[w ',SF{i*qXK (s@݋a#yL\2iW.$J!x;hh0gԈjC j3p2OCmfluם3,%`r ILW.R&l-SÍ`vXRb*3gp4&#O2c)0a|9l0^F?UZt_6'7O17 NʑX1BhtHx^2(PqKmD^bMsrzqX>I anZnȚМ绤AQ\.b?vXa:&i c}p<ϰbS8yU*\/=yjpf.ܶFL{wR,v#%bsB B}R6ٓ jl#~9֟D )|cz2#GMKf|8L"' 4/W"dƇ!]Ҭ7Zi>^R&DT=1#~BuʖV6 ̕*D _2۰V7_xB4t-.L"{?w vI2%pɑHg͠J3ƈÛݰ=CvÿWz,MF.\[=dP]dk6k0 KdsǼwJE*_U?%_8vI$1nE^E m؉n#e׵5ܣe:R%+ޗF3b5ouS}.8ELcz{m6 ifw0XteKXy ۭθ0F)Z/d=2U\GB$W'/N2{ҙ/ѧ /G'IS2$BԄKgrp&k+#ʍԉ&TofsG0fPBѰ1]?VFR14Fx_ gb 0~Dp)pXɣb#-,2Q]h/e܍)CuE"a' |){JO^s,c)X_QX2(:~r%lsȕyWLHpg+Սo, Hh8uz8f@SVv 7Fq=SHk~#_s!n?V˭ kc-r[n*cM& 4o pUΊPñ:>?w<2so ,(22Zge/PIwHm2(8bs`uN59WF:ۡ _4ʊ,)@雙qXL47u_'rܸ5xiaV?YXO 4Pz!s.;T},&N@| -#ʍ4M}73l.,CGhi.Qm8P`Y<pQ= A+nsu[9C&j:gVK ̼2)55La936hwaz 9-Q|nv]<˄[)%֎_ 0d̒{Y[f ︝WId|@7h[Z͚н0nSh^?_<-Zfnbm Q-PdzHQҰ5o';h##A$W/hgS|}v03ܶ85-&+fO7G %˔Ĉ($,bZ"N apC,ǹ㥄5Kɓbv,-}eӹ%Jk_#802!$;F_k4}urN%@hYoݤ6i#5gUo\\-b9y2J FBpG7g2[3E΢9 ;vJꮁN͵[// HF8IVy)Wi9B372_+7kT ᷃ʈvx `$m%~%3&/&Ow!xiI¨X EȈx3Rhp#{c5cw(-L$YC0t^I 4ɐن׃?PlP܏QӬO?D\آ Fl֣KSx@+b.1_ IDATTp<& VF'Aq Hz&PTbkfmZ;aWk9i}z6_XL Kh~y? %`qFCzCB~6zm+A!=7b-^ +Myu/N_pwA/9@-[_UmFج!g ΰ}{sYRe dIW +^**gYi]s)zxN8Fg4 `eZF/FJ i0ϙcwTqKp*6:b/-Flqb`n0p oSDD-X9_eHEF2KR%Ark%QC6 m9_I]؀2MF~›?>ȬɒA,'¦9::kpEg }S}X:fV7:e ]EZlu.aD{`;0 gǗ$.wQ5@t2H24 }39J["QAtˤʍ]3!>t"(\X jEb=\P` Dӳg9VErM| k]HҥvL!ÈS U<n0}lddOnGbH<4mq?&n"`<;xq_9n$¯Û1bئl5u+Ms\Q{0?֐謄fLcNe ဨL-{TݰQ쿷-4W9HE؂fp:kia{vK2{ܞذl$`{e{J3n֔xFVjݬ&= ϙqΌ$f) QM枅#QF+;(2&Ą|Z䀧5=nԂDi~87$y 9q7Yb(gCfLbM=Ȍ;4\uZρO.aYNMxNH,pN%LlcE(Y-a 4؀DQO6M/Scaaބg)KnƱ!fǯjerV ڦ˨cޭL7 ):;dw=qEqhVm>d>h$$?"2}71a$OE|ψ#}MP*¾̗.1񆸥L3t_j5G#k~RSwr|N!# Xf vZaj](ny3O(gs/B7 B[a9jXhUsl:ܻsN,V(P)IJPPYFYʤ޷t'ɢ >B!3 yglLXQo.#6.R-ji_Z_徱* 8Y%35C`Ԓ[3V2&=A\dh-`Zrg&v3h_$7=@6dιmTJ+.0҈C!~Ǣv yoj"k2%xKؙGflE+#?Ih?va+?O}-\OG:SNB)>N>&{KVspGFIf#\.P-YWVSF)ތۥļΎY%LX¼U,` ȒA&X~x3VtjoƚVN?)"#߭e]/hUUɡFsO$PjT-sܸ h˳I-7-a̼f}:A%o9s10{p4d 3r {GzH}f} ;d(+2zrZ 1$ Ⱦf fDg7,M?$c^kT[*W=Ҡ(H'$ΤyZ62l09QxjA0}r'+W"cwS蘍bӑY{0BKl3VG=g'I^[7{G-7g(S뗞ۏ<,^ڞ %{MyQ![2ιMN7SDŽ-3-MW,SP.Ⓘ P=0:S-bV|bL=!ÃZK-g!4͆NN9`>׋`J\P7WgQ2ss2!Vt:3-4c3Rgv ~ lJX`8?nd]5Q #K2jgx$d3.(ݎH$:>yoC߉C|Z5;,0NyO+~BD߇r%ا5Fx&^rN/ JDs̕ f}`K\Ll6'/+g&QO& -vcQ;,w:WtEXF9)'+ "@5\ìfAx&`3C=DNϩ.w·?6-eS0:LӺ^' Ӊp< rRoŅ_(\9 oBmȑCٛ@3@'+DZ٧e ,+1deЬߍ1tDuo1Ә9o's+ հy^ ,@V6U淵l5Lmd1%9P/;w'Rp")9抓af3Jes z8>8.bLQ1KBc;Ed2% |ZƸc&ʊ<2إá5erG0:8 8+EVyfkVe{zY><:}{$`ၥŴANqqnIzN53ަg~8N'҉͉25fj/;:t٤c%LSN*M4M&ȉ0M=X_c|FI] NH@ifkXiyY=Q|S-4kAI|ǦLZM /lǎj/_ĥQXe̊kjk ![7!@M6>dgh3u{Zv/?ɻX2iمNp9yx .4M`aG{DHeX(kM4"WExd%ZK5S s{b_rdᵧ^`dIL(UoQvXb%cj&V.M(P{SDd{";)-[a|_+*^ ΋]6׹.:RNL028 ot1g> =5L:"_Bxk'+*rD;b HvUxv1cW`%z`-|_FZzmK9J"δL#L?c[Y+QX oL`2hz;q4X5CND ^ e{c\rwH_ 'C􏐞.ΛM`S&4B$|8NfrP&'XVȲYNGruY1{g&Ds&:I"IaLʤ' 2KavaJL.㉙c57+2>g7hm^4 s_cK#|,Z5 q3$rd]tBY@_SJ4,Ƒ c&C^+/y?`:Y2).a{?;:rko a=/́gNC5A"3妖)Qm÷/LmQloŕ3Io'9)IÒ8k7\3.| {G 0-WP5WMrs!#R  ׬yqY& ̊"fjj8 '3^3?%|JTy`ZɵP0id~c0qfҮH>""h׵#BkC`c|FNILVdnh5`ɀVT//M줇E=%̀|Ui9' À&YQ 0Qz 9U@$E7gg @.X=Y`I_-)U/Rl49F#A2`?wGo!Y'fLCUU-kdѹ5b0F{B!|@eO^ߦ6[Z` MI :kX8zeH*TbQcW$!A9LK\eB o`}Ϙ&T/_ 0ste5rƮ=su&\]d^zt*p?#{1}2pB"YY$ZdjClVgg{-3='ڥHz)۸÷a%NaZ_{[4DR?~$iяj =%GָoP=!|˃jyaM֬s|NN˻Sir}Q95kg!M0səu}{ߣaLRԸ/6x/H$!j׼%eWtiަs.3S> ӹx=ʮK$Cbͅ6 fwN #G>f50VbiFx"v9oN+T^| cŪJ J4&CBwq2!"hCH13mQ&w(a"7NhPNLủjH3=DޯV9h\÷N* J5DD]%TJu/bēB8^5Ƒ)F^ ˷~4=O4KK ~BgR@>CNtḡ[7B3sь3^($?D8ؐq6_01tS͒ b ДYo#b $AM)e-E-9pɡn2p)߷,4K~}Q"C!"N<#UJ%U/c,'f\ ̔*TRTwO܎&s^Ӄ&*,c@V-(z TgۙO (alz0 .MDrfn~Y!c;Ւv4A %Z|w_!mWe1a@ҜYI6a" A8 Z' (}˻yX>S3M( GI˹񾳌܌< IDAT>i6xt)9gIK]V-j wh~Jŷ>.oth LGMϸ?vy,L'(یs87)%>x[ /\?XX@~>}1"r{4z47q @J*ٕ,3-3kC׎Y[Ls5KXboW+l-]e#3~ga_y$KcXS3I+(+nZb• dy"gnTؠ>IO@ՍG2* ʉ"vQLW͞w{DfgI/f ְN=\g}ZPyuZ晛qTLR}s,%Co>?ߥނTm%np$l`'(R=ctQ8`n3qߘ0elH7ČViyhɝ p4PUeOp<:aWˉ̊!` ,>}xc׎nNʎG*rM_d52\Rmp4Y7Y9<whb۞n! BŗYp B˓g^bڷĕB%Y%m=I.zY[`cˇ!o$cfI. _!߯a$JXn`J}B  mz'0'fy4HʸrsyA$.j[-`| )Z:/ S 4+CFhsZOヸ=G}CQINCضiͭ8"sf{ Gq2>ƫ0ZAlh.I|s[Z$| O/f 8"=D K擗=[]R3it~p]nf=RAODjܪy05?(k&\]UfV{d3 koՁ10qf%Vt5=Gpze5FCHMiU%J'=@xq3U'Y]Ufxu- i9mghR$cv}%]4l&V9(W#p2s` ajhy9݆pnYJ\ٰC΄&]vQ8;nL; Osmj=QWZVZE#Gwc^!Z`x(pzyDT6z{`+Qnz^EnJF=%}՚Զe ';PllmAF3Jg C$9(ikZp|qET(zR 5,ke ݒF+|F& Gj#}zQ8-. qZm#gѺ餮YI g(#\-fEMZ޵a|M!i}K]8/ab-K5a>s[)F/{rvߋ]+՞BxŽ~dY#cOps:Y!Y*%:;) /% wd{?gJ223hAM,3:t]ة}A;M1z*˻̈́~i;e ,2K\m;քȵV li48IUkV;osIƖ/  bk8vEk0pyC 8bڨs9W$JƟ^{0tӨj`CB?Gsn']i}{_3f!bwOdftxqpr}\)4]sxJtݚ=gii"s7 Gɝ>yv ?oRC?X~wc ĒH&B'zt[ ,g1KFKC%"e@O@]Tm!(-b8- =Oλ!yya>Ymv](nx"J,. F hpm)%},}mH%ɡ[zC_iz$n\[7:^C4*ގ0ZhԨ=D5_`^R@Ѿv:; ^ 7vg{7l8EGq@}A({j#PĠ>mNGӜY80LUzA#3kB*xY7)$Fk˟y<$>d2N,dam?yhqįR՘fk}тB]A I%!+u%zf57eDK!9iw<OZs QCBb"⒮yxʋ32Wq!:.;^.󆆀p ph7^~4p,}|\xTd06wYy&,ewwȯQ9D/"\ɀ<4]?ۻs&B a{#ƌˆ[~>!}2Hh}*<׽ ,h4MKH(ೆ9qɈ ,&J]4%p>WzZ"0E4ahܖ%}꿉;<,y~L-C]fNI &bPv^?78QrKcYN3[xyi bI~Om=٣ܵ;h˳O0MjꨯT- n 镢}1@m Ga6q KUjYBڰ&P֎nMH-)ul #~.jf.NKY`4nEI\Z$˛b>E8Fؙ Y}~6xCgk,㼹̌]l0);Mm5>7qxQxءaBY3TOALLLY} |TX_M}HN w] `ؑsXOн"z,J^T44}>p7LtNKaZ1k-Bw/A%::?c&$1 f?Zd1iy_A:]ߺfP=$5];p=@N[{)F萄egkLGZE(C0+ jIw0XrGܐK]&燂Bӗ5>LO۶պf6B"cs6S-Ah[G)0QH!V&.i90ec% 3A`8G`Dc5bmZ°uJ vx?~ıAapT~$Gcu&M4G+ !rvM.qEQ @h#?qgPlie6^NLj׸On>f| B>=[\MS;}EZfIh6wb{+ %ɭ( r(qkR'~=v44i-t먠KCkQ^8^J*Yl ιtCykh}zV=OԳh5 س9kÜqM+<7o<"< " =l] CHD[ t˖yu%&_wԚ~nYC7ii\Lڑ5k@ ]ptx qؤ Z2wLh/>2q0NTHVI4X sV}Մ1*EYSZuɝsQ"Z/DS&~$[%gԙBƚ>% kأ.#t . 0e&9O<6 @ñ; GWlX(Bt$","܇d`f5#87e6c.^AKp}5ت `.ew`.sXnvՠ^{ OWIכ,nW'ei62~/}n@h闒iZ3wg0!p%lUH.;:Xg!;)!3Ψ^ ks=&OPҶBFi~nDƮU +9 J4fvյ+0iY0z>GL'j㾦1T78-i8@CfDϵU}\:P ̺V|8i,,em\;fvcfSi?5L)wg`4I[qߥߓiGVm ǷJU㔆AR5%_+Aiː *#sy+tc:v5fɯf;;eY FO@iPN~n\%.G.z\F3%`_Ӫ7x Lȓ3Dgr#`1LLT.,?wO xInO9;p?J`ى-c -z`gWOG2l ,< &`t̨4Siz2YM62yRoYܵ}BȜ#'5ʄPM8^M>t7vri^ cb.cegAɎ9L%pkgBL@;`sE'΍Ĩ_[uXc3rڨ|Nļ#ThBuu(7n!yL"0>L;7gkKՂƖwYnVKK˴$L't7^xF0l^,y-@AI64)'fءݒ6s|/&rxʹ #0LN瘶LF}^ǥYGt"r؞Y;iBr$DCuh._(2fUczku mZt};pznDY\kUxAn[L`"\W#fXaIx 675+lX="QNaI !`m. ׭vsq-hH 9uˤ, kxP@Ɠ!ղ˰C._FL V3^)Q?Lvs T\A{m`2VQ{1,u ϹʮI'1V|GL&F( SN􀑝03tth&UlQHf,jzfA Niծxhhu&|+|x+L1!qG}Vb83Ml{+@ (5t(2 [&[z,213I߈0=( d;Y?HrŠT,i0A+|Sz:o,@Xxc?5D*I] 4`4==t ̽)3A߻3~\gRZ<]ifs}rx*-:=:zFest ;_fCG\lMbxΠP]f˰;P,IćǸApt Y9o:q-Nڦ]&>ΤFK7yvI)pԠ`{-]0Gn]#Ű|} JjDx-1hnE-;}$Ӕ* e&|FM{kþ(#zb&c1yG$'ʼn 3 J2ux4^{a%I5)b듍otb&_ǫeflw;7nfʘ'v8faɚg( xv~qC2)xR3`L(C(8an PkL}B)%\ -w,e_tZ9Ƚk9'UDia\'Вl"+BdAHV/;qv" k4YpWȈA`Rt4lqR,eݛ@hQ5Hc  T&~{_SHB?Ghs.6f?lo:\)>/Ѫ14/5tא\y"s}qxp3 0#.y=d] GD8&# !t=R3L*1)$CvE?~m7@ey׼b6Óq7V3c{ )L^$"BJY,y,:iy/L2o+Qm; eBbQLۼBOILj/1KXSa::=tMWJ9CpM/2mx?[m#ȈNǑGlt¼~z0^/g<0 5fT`8&0:|VyhV@㧼;[蘺6RFs;Ch`ȂHKjT#DYք(ԏ5+JrH2Q&yᛆh3?ɔBL HZ5JMl5G '{6JE*m p='C%k~׈87pLa0i^(W:+^?W5QZ#6 u9.ӂY,k?"3UnuUWݓ-mܖ26B=C{Ȉ/et\ A;o~ir-5J ]c^DX g.rGDdwas xwD`\Duhj-T% ,S% FgoBc~{PW} kkC`ƑJ&&RZ]$qLk&m2:bة7&ySE$=rd%=̱ɜ-J_kCFl3rbI<hGZ`u)-pNOȋSn,@J_ÈO+\t*g Sj?SS[)G DMtܧ ,4X`W_(g X Uo鰽3IVlĩ0m0`*4-ft`C^(%^h"laA]& agcD+Z^S3ք a7b!M(|BwK_PD=%vatƏȭh=#O#"Dx;F1W f,CWǹ1İQ=ڸ/cv ["1յhw#zb}4fGm(W :;$ٚ0Mk'!>e> c>(dR ]Q/l9GzfeWvh+qn q2]Lx_7c!RuͬQ|Db O 3VpCRJɉv+'e,uKᴇj:5|=1gY:|T^,U叴<)> [ 0qG` ǹMjH|5C>7 5v [+i)G$orݳ̸eMn5P(#6~ą+ Uy4 !Ӟ\$>%u"YÀ*\EG{ukc_7ћcXz2籬x6.B7:l ? `QKo?X=Ӛh`:Cs"WɤsS#zCn@&9b:c(0ј7'0\^uw׊Ҵ/&bR-p|2kB<#np&[eɮKrܱƑ*jaMb;)76\|ܪǷ}ojOԑ\vY6SѝoحM˝6.RB;Xv~$8n-5-ϕ&=0_h).9 $PH-#ɠS @- fq!92M$'Sf 85֯ ǫ@BMC= w3M84c_)FNfl}xz~{ݱ_;1> .R2&Y\uo밹\o(B HŴsCtHHN?#&L(kQr 4s;琞gc /L֜JÑS";}?U7[(Fi81-Qwͱ2ܶbh kB2p&71;Ǎ!Xf kZZ&)mKЎ-F\Aľz|w[=!F]+uTnAPOp47~l!m6y/r;-38sHnMBŜ2]z)fѨF ='_: uJMm')aa)Iv8i= H>SQSY(:PzqWEwȐI\LIrrÀQMMl);w\+~;]z0TkXg Dؿ@|H{> x@NU4hb=t7w[c=~UG|rF 0c7Q34`vw߁w.bgBTP6{sրaGzfWqScB u(~wYXDbmT4@|8תP\̏'JF*s2/soZEsy[zli臶}kGni<2kbبi?;k Tac|?WD(-j9񎠜I#0-X(kęq@/LvO܍]Ew=4V\)]\ \}iaGU5a9'Fr{ֹ[w,\#'M 5m uyL Rʦi4$L2w Si؈b2BS :qsJ YJղ|3^\&JhJSpgMwj;l30t n!DAX5=DP*+"Œ>1w+{bKb8Zŵ=wfJm%Zon1j/YHC={kZH{] ,`Sb^!lsWֲjX)fY H{y@əilr8%Y5 Lk87$YM?榮dOjc4Q!jK4>@=L\g%[R K]`: iHbtpan}*^D<7 ]@žako=3cas5iKvmPQ~j]a^>&9L t'@ @wG2ҔҦ~ [{Z+5.h Qkkk,(\קRYz5nZZ}I7IД<N (SKޱ]={\G V`O!9W>!(A#j2HTyN(2ᮠ"AmFζP:/1uNVLlk_0M4: ]z xr .R{gj_Raz#2C9= qis8HYwB-Nk/&$%` =[ʎ@$pDdF^ C_<[jD᠔2dqкdpï.K0QidǮns\+e:+;8xr#aT:sXfK Z+Q~d \a&|N"\t|WFe H0YhajXdgp"؂v[ ]>OtR0&r-LPYhqnso!p DI :3KU8Ʊؘ)֚F,Sz-|P6<_6꿭co٣-9eF9ێtPpg6s%K&S22Bw_La+J,ŠScnvcL2JvTuu[a6t b 4 m%dfd2gXg 郥9$sriHnY}'Ovs(Xm7!9~`> IDATg5*L!.W7L37`M&WJv,xR:8sG@^"Nd?fC}]!Z\ssL3DŽS͏FHeQʈ~f9go wp KzJ$[L% rv!b &BȚ`\@^<%ʞSr$t=f@.1uxx #s='p:-ǔmKf(爱[aNiDI,V` &t? &4?ϙc (e;Y@wu}x% $Lᰘ{Llq}sp=l)|W ɹȑN:tP r"#_IЬIEڹD+=)tt840q`aJEv3 7wsHFXBǮFG;g+dNRc5~5X^r?=PރY]w?ܚNBn2 ]c:#н'%$2{\ѱH7~;@l38G=͕f"baGR5Jk @]θN3ۃ p%҄KzM yL;\qf~w[iݪ("v!%D3ZPX Hրj\sHfҎh;@>THan'^ƿűe#3e%rA53ؗsG+dz[;%q=hEsuNNSe=6͉!~|INkwgBN1I (E3XMe%(ii[.Clg D1(bҋ9µ=~~x }E{DDIi#.` ?!^RҺl GrFtՄ1ڝo7ٵf 8Q`;z9YDWf,f I:'xk8jYn}Q=0Ofuj6ynQHh{VB5ݥ\$dm" `OayCa:gK t7S碆z'GX=.KI9>974c8%'fJ7T:iĒ@S9]ML S#?X 7螆kön} qnttI<Qbe3B;":hnSb#^xlbzJp=f@2 3Z&0Ի3e}\ oh _ApR#.o(,F;^Lo4L̫I@&R3 {s߮ZN X:ld=қ 5BTBPSBL5=عĨ+`B30̛= &k#L9,DFz#+^G{cLU-?ޛ+_`:-.8\渥jUx!}:W1:67wO n-(ͪ4њ>L)'U{[`RX}!DYY@C@5v wo K'9N{0EsQ ZJHHSu/-Lo :#/":YST0B*o<1PF$|BV?bvoo໛{uF\[_;]GFHsO >.9B+v|A{q LGVҠhyc/yOu0\~.[K݌sE(\d/Yֹ![EB~ˍysB>dt3{9-Gu:vkHvҮHh_iBTc~) M2XH *`5h;iBRrқK~i74\{+@WP:J|z{ tlU;P7kCkSn'Xl-1fҹٛsj<딞<<#/PdG 4zF,@wZ-ӣMdU\k"*tC; b wTw8Ћ1G{qZH=hd{0d%0@#tNjSDqM iVpPm=0Qq\ÿ1|gl=RG(:G4q# Q#S=cY8ozRTL[%><|CǃKuVK 2hDiD4hf:u(8hwpl0-U lNśHn> FǶ,#!־]u@x?6/EuFE#43uM}bt\#:/HJbM縏3I3ݬ?Z Nl l(zc{XgK΄W&R߯K"M[PXomV.o5I%+3ռx$>T*%)h{evYj{3 kQ1&ɅӹN{?@=NX{ž;L 8ajbZF.^G /4mYN ʙ> 1~ de K >rgl>tv:PI,1͐7 N6Qe (##Q0V#B%XYY}1bS9 팞c9c\[`[_fEvPY9=Z<פq8 :Y R%ȄZ%]XH ѥojT9tH$t s~m0 ; 1R.\%V6\N(RL祳j+&_g̅URKeK Y`j+әlSgP9jǯZ9~TrJ'V A6KJ!ghE4X27ԗ5ZY'F<~wшc?lˠSsIL6"H~Q\ΠY#´2 :0 8z ETGLC~8/Ɗ=RQKFuZ ScKK*qJ^\*SN 8 6kܾλ0 m!ycQhX޹԰q:K]pꙙTf|@c^ qS8r0a\NP7LKBVS25Fn )-7F&,a'# Bؽp|csKa; :'_]Vӌ¶ #8UVK'l#gE7D sG1VJ@+1T*/t# fGѢD.ӹ;im[;Bj11=KgtJ.\'{בiր$D~jk+cfC''=*6Hp:~[(ttzr.Љ̉.ge'88)..r.ޚbz>dːRn#Wϙal!zJ7G(X#zgv @ՙs˂l.&xWD8X2LT0a;vH8LV-6QP={LTN`B0X*@Hʡb:l8kc{g5ɛ)2nq䐚 ΃F(1T5U$4SĔJ͠YqƗHH:yL3C$dS P X@ƌkƫh8Ur$ vbN}V |mk-T s<\I;1[b\ ?`rISiQE_7ml ڋ:ַ&,b4~A'{C'#qX⢖=@-)Jt$R=ƶ^y ]M\ jnMY>=sOzeh 4.{zSk<3}ߜAvt>A>d 0aɘ/']Q=}05 [b(%J9`Zj/jT{ŎO\hk-DQM#*hLe4;YtLʚؗ  i; ;ЇA;]Qsk;: nF- %UQcdc1PbB;iqܒV41^߻e>ǥ/57ק̋[*}l52S%Kqv.bOILQؼtO`6 ɟùf#kLL3aYB=4g[R=ⱖ;֊ˆ `t Ch4).s= I%:rYc-%2e vMeZ]\#[LցHt0p~ Xj~w -0)?R} 1X)Je,qp7oBS|_=Y.j9>[JʲryMbPU31:RsHv;qno#@ nC) vےi넹Mt+ȭJ nDB\ a kEB U[ 4bZB{\"N3L/70/fkjc8=ye qpfuA\{~ʩB-m`8+SQ]ѷ"2Sc>f|×w ؂^'OKZtb6AYW4_ L9Y4`::V3 2&tK*k '\F>xK~9F#7|oamYn0;acX'2Ƶ[yOH(dgǴ3ҎԘsb؞ cvWaNYHI-1yFB~D4Gf#i}6 M/n29Ҳ~ayJqe);. {Z q:9a:䆶pٴla:ϵqg|H^Tm&L9i/hnjBñ.7sUfnA:#s&i1 ", t>Gt͎" $-A awgo=3D\/j1)S2gМlȎL=c:ܥc,[|S+pxe#Դ|t.H̘tP2-%Ra'mwO`2xP'43J$kEЭ>;<6o1i, oI/#7Ҍ4Cp6hƆ`l&X=O܎.Oi\< k0uYfmmi_H30+ ˴ S,MX[Cm##&X#} :f^< 2Agx݂)iZj, (!Ow6/3h>0qDʔf1- t -]H u;([yI nlkaRǘ#kvIۙIXFٻ2]F.<L5l754Э#6(A`>u!^п1ia ?-lpp.\p[=>>±p]$^Xiqz6 lyVSX&PxA>+9h5B-Ӄ NR%1^fܰSwx+ sf $%[Tb=B05) Ŭ0Hd:fyNaÄGLiBͺ\aGgBlmx͖6h$I&TuBtM쏵M6@l8ݗl0m\M+lf:> nkӒ#d.gyA1)+3 ^i݁غ1>{t0.X'BhlI2HSLKF #/nh;lmi@Di~y&@sGZo=MA IDAT/BBk hZ#P:8 ;lñ;tڀcgByAse1ܱ0x[[8k-),gf9mm -`q,mmg1p˧ɦ;x?-I Nf7FOvKG`7/:{BOx8Ipm-GCAB)P:|ǀ9K>+Dku90j.Ď͞f&NA-2 ,'Yykgk˞sKL;O8b#yh9wXst BxpMD<%2& !Gsn|Iyycpu:ē#\HN\I#~l^X#L(a[,m`yXaVfăa.'`>0(w?q\S#gҾpsG7Gg 阁.a#{ȹ3b5vBEIJwKwvyV?rf/5|9m8{ \(nC+q:Lv]!^.;qxS(fB wD8-EZӱ{csO@/; AԸtG 6Ǿs5LcwZ?"`$$XOÎXA53IA\uR豏0ptXCp25uN^a:֙xڎ$Āϒf8fӹߠ] "00Nbkd۱uX8m ʄ5(:~0tt>.>3hpf(0`fGbC؎gCX82P8{A-3>by=k؂80\?9'@[H&`x=I <"Vwі.;`4:h7zZ pse=cFsq҈4LذKYvpGH!Y5 P`ahXڍlt^iV>,ZSO̰' ;  $;o0mydc[>4۶`9kFA)l- NG.urw WN?6hm0B(-#Ł!9C[,H_!ZbZ%ɜ@ ɚ-Sp Fќb,!fj{e^T0lhnM4LmجB S : Eݙu6?<'yn@R;7l' LˇBa8X?3LpCxĴƳ5NٕBO$Y`sjֈ5zd 3d/,;A0-p6d%2Zӹ i9tuxmA[8#t?"V@5<}z+b ֏;lk^Lhia& Ҁ0(\oK _)i =wHekqSC !g~IsrzJ-( fSA:;b:| So.Xro gAs^ 43&-N%&:l$ž̨BfxӮdu ߁Q0ϲ~mXwM#^yrc(4tQVʥ@l1)vobnC"s9WI49fuim"p(05,\bZ@IiX{M`&#6~PX%4d͡ef1O a =geKs:[(qa ' W&zbl#1V #7 0-+s|eyy.O켣Zs$ 05<ӈCm4X]xݙVs;?XZoR2ܐppOF>Κg5 ôМ;<F$ey9y~Zpg(xbZΠey34J=(eyynj٤eYaHlRZߛNlX^byAs^>3&h y͙9˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼kĜfyy7yy :l=0gysuSx`>ü38>uS,wi}~Ͼ2|@ jIyj[b֭sv^<R\ Ij a.Ce9As^^B(P3w!H徠8R%SF,gМW49V+BU=8kXl 4S]+?<)Xo!,tyyAL\Rx]G*޹Z׆%vz3@\x{[ 0/3h3b<6\M>2̠93|I1x8kc{Kl)FE&|sq4c_r(\9)1Ժ1VJ5)V'sb׀20~؞*/;B8%B5J`{XJ{հRҦIP9]7,I)eW (j\se Ds5RA=seR0MK}sfos^2=Ocxess,bE5sy^*jSV.rs{)lך,h?/3|-gm ?Y2kIH Uz\HkeWC=kCҨyA4Ry) Iy(c$BR&>*\L\~Y`ۖn4oI3TOkE &]\JӼLZTO"6s_(n>4|5 ^KrD%h 6źg6z2zz+c"aX%'"`j0%fI) dج@k3XYYJ&S_N~W 2MNΙicUZ2햺^j=5k.I1g'X'<-8zWwg>>/3h>cUSYkI1I!>YkC{M"H@9B4m/ )riCP :%)Ʌ{Щ)mȷT3LaXwp?J%c}ZڀX1^b5헥dif xT^t OY*Gr3n݆R!q)M$`n_;MQJB3@> >3:;&pUk>(~΅sOtG&L ,JF(Rf^R9\b^f̆T$gs?)Ó۟\ɲ<|TH Hc_h."AIr1Ў3]M KFkxd[ mV]ѾJ9)EAsjŘg) :{X'!y752scg ]{zо\y <^s-g(q_:hj:J7,:OS &M丸wc.ި8~(]jq)ߪ=OSRo4ٚ(  RfM1z*Or . Z7rx ]4ybq:'&ʛRc(gnj57REeT037s!m^k(pjsV KR`<1g|O1ȁJ^RrEͱ\ɱ\Y|>s͉^ |Kf9rU* eM \yMUuƜꁺgc%Z&S]R{ϙFl<ą]Ղ9EEr i]*n2Y=fdmb}@dTJ|CsjK ߸P]f|p/y99m\.s3?SʷR &}S*Ae0ݖ3n>o.Sbѥ:Zfư7 4 އlfsLkLmm'i˧;#>ޔ/av׀}  kBƱcߐ',\-#d޿?\RfԎ#-i~8;c&N }>Ok툎ZڶpZ.ojQmEdLs! ݍRc ґyd:BzT Qm J>#äɣ@&"^M͇vϢngM>tYa`n,('"nWvs/T;.Tp㰂=Il׵ 1W{T~o{5 0A%R%RWN S 14s Q<ϝ9 ucpVa1'z|PPJi{H$Y\ U4f/vUu86w?u.{ 7YD_ "q[w' Џ,-~Gn U~P6ȍ3cv%uMj,Tb@ !{mqzU\3y#nJ,D!X&cZ v+h~-/\D~ t~~Q}RN B{jy6")@D =UU@?fq@`vNm%P(eɰRa|*Gaxh}Auc0sZs&@fe?$[&)8&Or!)J{j]~ظ}OBN*/$;mDxܭHkp'MU:y?^:@R6D$BRTt +9>vQDX*C:Qymj<|Kdn8Yj "<)v WiV"MZ_kzύCa ^"}+"{@47k!}TՏuިAc:O Ḵt\6?~ 0ksH9oucJfo |c *p4W_lWow@Oۻn3Rd{`݈?|CW8~C^u8=딩HQI..mzewq#rȗȤ]Kas(u:PpKb84fѻ,{;k帹w8$rsTE^#u5OoV=u M`rm4`%3_zgNg|+w qx{Ԭ& 1~a"u/~ [B}EDN< H>->7 k=4+&D/÷͵ߴajD6-7w38w /h6WrchEkgԔH]sNYo}T\~?~hww-gk$'|@>+0q }f}}[Z}H΢ (57=&ä"RV&4vyX@\0ZМAn,Mx=nO~ak?()mn}3K\j]~bxvc} H3k?v_t!y:.>$۶3ʭ5AˁCJ$Ԃ=\Z+}H{˷W_n*碌{-t (S iAWU8I :u %}lPAC.YE'#CDIšNJ22ګ̠lg +Yƺ^LZIKɦZӂT @{_vyꏩfn|yrֳ2Ksnw `Sf`{ MmQi7nc'!]D9hs94ط Z 9>rXm62up&m˫[sM{^أ[ߠg `2P@ ?,M1d׍ضclY@\3Ү/~a8`5JΚ0.Lzf>.vy8ք5Az+ePt<.Ҿ˫//~(SC~S BmtFLsn@i+r.O K`y@\;hZo}w=! ie,\(gIT:d Y3qse,Y5g0C|'./,WD\BPu:vkncگ:ɦi&S Nק IDATP8h9~'!}x{K}Z)"ki//X$5i,lHhΠYfdm kVL )+%baxlr%G⮾zk? ꏋc Q3HZd ?&'*s@{y0cNj,.յ?;vn7$J υJʧW+Ks+r&xSBp kSsruc &W.E>#^f ,OiƴR'0~4cڟqlF#.e׮ey'Kx#85٥$d"SzeM9z0Bj;O3lWۤM1[@?bf\~翶|Y,0 _z1=-'`XkY cZd۶h$ 1=3ާY>MH4`{ DmXj*qѭ%׶:l Jxr)ś}o h kvC]oxl@G~m=\&7'nW~w_oj ~Aw)O?<%bm"X>Kf5 h=M1ݜPT9ţ?7 7@@@Yp 9jA7o/msS?\6J*fH ۻ|ik2t"nşxfy'6Vn16 g dfX,&,ɡ+ei64Ob,1e e@M9U"pj+oe~(Ш1ɹǼ1S5LɮQyXD (ZQFޞ+:bD@s2:yW~wf~8t7?{CoS3K*8o[Za2Paf@ZKc߻&?aMöCze\)6#\bfZ)S~n:WeKfcl-W^{sAޖ4eݨȊG.]^\P|S7$-k&Yn/dIQȒsMn*㽿_?PY ݂i,U4գ?%{Sn,C}.Ìi5%B5|L!%BzXksR9眊]|Yx Xſ,AT=G ]O~^8S`9 Մ !`0]0fpɎ[ zgL1s=9X(T 8,Y=3ɟ5Nb=57jsG_g@4+ֳ"S)H\l1Ih+?/tMŹjP{GCw)gc; g\g(&_2O%rОhX/g*ʗjtNY>v?;vo%BsvP9lkӜY>Bs0STSjKDdxɝ`R4W.fT*ԏ-v7an霻g(]tLLP>x7^]|˿]^?` ?P16c%kBXjuiZYj ̐d1z&.GLt8>=@fU*͋ci*L%,xp; Ok;j05~N}*dGJi1ĥQ)1Y3La;eƩ 6͸j޹icUϐ#!58Ez|$B953+a4WɅ90yxND[~Nq/~?9PÅuȎ]~q j*9T' aVlPE UBW DЪуG8@7C&9RxUtPlc"[J61x4I&vlrȂaOҜ<o?.z}ύzc!Hښ5C`jC-ۗkЬɹ6aSc! ]~7)zo\޿!M/ ; cCw'6`N,ci1mI XxK/y ;xf"1RՑn̑yMR R%yfp]2 wҴ0>wYݷ,StĹ_PUgE{Cg?wU-%oTǖXWcz1 {P|o_<ނ``=+#aclGf-Tig-I%)aCNU\y=/  C}:Q 9L01#UyFF@/z|(_LJP0Э)c?\d/eŵpoY].jcRc+|5-:7#(w4%G5s|j݃ɠy/wZaY\5~s{%>@V OG-:lNTwieJ.9d83nV=#W|c^pFS`vOO.NDSږ$@d74G<_ A <>Ƿtď~P:Kem&&ߤj9]ſ_a;ѽ&ΙlgdpxfM9ѹ75I%u5Zcn?\!s4}߁A ߝ* !C~ro?ۛmDf.ؠL.X阱D_)> w #~rTgM{-ɲ밵O{ߘsfeYU]]]Ev7n-XMB A`&`؆-m`o&nݢzdŮ5Wo71;>*2߻CD8k ,.,G=^0)y?V;@z^nlSM0t}@c30ekc?u]{ uZM3S0LmRnFc$3 z7BMQ"i@ ƨ+thHݿCċƛDx /N8, R.7\d9[^əȞ(kңeR]K(3ɠr+!V4` yӏciHDpB< s}a')Ȁ>X?]StqŝW6n@q"]&&nQ Dxr"ʴ T{VSD Rp=.4xmq,X,ء GD.ddyG1bmeqSptpna }f yy3`jcYӮ0]1}'PD |g0I-@H@_8W uq,>wp䋿ITG}vAWf:m)v(㠩1wmH2Ne _]{<˶' 8b˦m?()~iKD`b7߈M8$Rr!Ph=qe*>ˠ:]r\rG(2F>~1*P7H>IV89p b"NCX}ڻ'趢@k ZJʴ3J>g$OKU1JͩG[>Rjܗ~fŏi=fhjۡgdaDX!?>Qe29e#(0Nu{&BGE-'dSeJ1D@2U,9Ty*W9.fjzg.b\jG 7ΰ %IQ}9a?Y}JA2sPS32)b_ʫj`ю=:NijԧC?9'ӲURc3|Z?v!kO7 5D"RH$pZZ,e} PGG=!L4nϴ^>|I(/P/iFcHOKg_{~uxd૭8n7};lJ y*hƂO-C ^V#Vޏ1@/RFǗzhT6X3q=!N'88PdJ[:J u8\" $܉?JV Hbt+-IQGK RQZT%c3Zj7ȹ~s`KTf!lmӥkyc!'#PQFܡ ϩJ-OFq`ŵv/藉#(dFsv p&I.`ƵJ#ϸ(ǁ2Fg ^ܴ!"H䐐Jr~[E/2{7.|oP]=)Ot@4%?!cw x'xRm"~tw3V5D$*h\a0%%4'-43RrRxsӘ[vȭ&bBDT%_3'厍6&-̩k>q(A0Š!*.qOZ&! ֌9y=xLi >k)/_7xaT]E$Al >΢6Sf8d|߁S0S,`<$o#0,AX"d$|7LRJľsn0"5Rˊd f\\Q;)>dV9LqOpM7,UR5PU(N"o}yfwMG@Ō=",ȉM3:Q| 9 +pLUK ٵ J3x"Uj @CgOŎ,h H9DZ*DT[ z%yk˃/oЕ55eĸVG[<".\&YK!.+;1@3 /_avq| 2XU>40cvnA9)}*mDc{9-ݛQ,YV%S7''uH76e{sx#tg .nk:6]muLiX~?Lo "*t4!KF"N61>aU`?y) IDATqJ-*O>. 9|{usuJj9}=)r4>7e]#yL)\jB(3T PfI@&2Y|@;5."7>5aQ#h#. )L*7STkSkn{i"Y";iu.C@VeTBsi6e^9!wnrt IiOΎeb"&q*;0wvvF3ɇS \c5?-D8 < &h(./9~#yC{qOei(HND;=B.8JDNjw;44,^ P3^kNeno2V% %\ոw!Ukn9R11!gG$܎l(Ge2x ,euu'}&_> Yױ䀲mc>< lq)ISJÜڜ\J8"m2VC0w]+#p 0>D/*Yo.rw]XSa)#Z9w>3y1%v@¶+Yv g,* ٣.ӛ 8n3|zحO˥㺖n_Yx ݒdG&`c(F6p[!/7q{ti-'i:H {1<.йk#}Ϯ<nT>F!JLO~!-W\Pa7"dҁ(JS%ͧ4LA[(_cDݛ/ -bR"ff߬NN}ve0tGqX_4†/F|f8!u#ǟCx=j&c)S1g xDw)`WFme$l_KxDJF,Il{?;x9T:pPAόӴ:wPS]H \<5~Z\oJ{t~>$ɀ2=4Bls!6'6%Fq=LCxnDD3Gl'Hƭ| Gh&Z#,>B2e=Yp^AmZ \]0jU4?ȴ$ZibRdCWnN3iX.p2%Q=ݰ9yJgp1K9tCTSa)S+xz}ⅯV˝ۍFM?=A_­qp40Լ<{R˽uyٶ ;VhLdfIT=Ɯ05,;_g`׹^o70K!XQA^ 2[ힰo(28P>ֆ2ʺ35~Jխ.u`Ǻ̎ vMwewS5GT~"ڹ?F1”#cʠ{@N&#s-:7|vIDžm%389yg-aGh=q[_Oqҥ&D6A<;mO p/-/_~f2I"ڥpSFo e wPCVِZ&_xZ+SCӴg)NeA3y?'S|rrԵuW(H O:d1NIPi܂T }!VD3‡۶pVD Of.O^c ]gײ^ ș EJ8:*2Ak_?<ؔ{~7a0b e,f!h<^~?vQ(\'c/Ag)@:EzM Y::1WHnV1}LCwR5J!,./ D!ޜj15Dd#}wwj`Ĉ9ԞuWm@%[qv#_R^)dWZ\zU?7-13\o/S.> 3Z*)MX5_:q[ϬyKض 3OaR! KSkC !$9̜ӒVBBɹ6pVɵk:Ǐ#"<ZM`hND >7aqxSVBb}y(5Ud"ђ8OKI)[(4 gPvڹė[Ŝԗ0o_wOww7ǸY!ߨ1Œ>-Mn!9/zGKnnLIeJVRJs(e0$3wwhb!hIGlJ[XUspjg em(ԧ_!W9%ΉZi'J4ft T@RNc(8Zڞ[ {Z:~5^(sR8^4Qibδ- >^i<>_3\tG#!LE7B?%ZjJdחGj5simfq9l<'5K99v>93kn&΅3j 9[5\ +&9Ӵ9J e5e2;L+U8"Eեπ/B9YgCQ%٣iT_=:#,G"%nqoǙ@in'<` :sz-f1:@hpJFj͂7z-%&B Rz`F~ZF)9'Ri )Re6iZW"1ZC5('S)[TLzBA@[7)1)y̞98if<nx0ctṄ-x+*9^|RtNN]T9\9|k{Gǟ(}n0~ڭpRZ6|Yd쇦u:A[ iHU=9Q;7lVд˹v.RYe /p}B$0 O\jKAr~s֥u6J%RN2`z l-Ѐь[}x+)4Os#KStAJ̒m|fmY#k-t0s iܾnfƇ` Ȩm*N4cRjΗV͵ʈ^AկF5ow,Dq汰{Izn 6MāZ3xOm'Ѭ\rᕯxI*S#ٶvFr퐒όhA3VC& C{N@/Y84=b2(-;q)rN~7BV;ǝP4--=Bt [,[_(\>iu f&+Iϵ4`3g iR NqOV?e楌8a#vC7}dLcSIKռO{.Vp1D,U?wJYڦRXuOέ,Eت1%fQ6<@ضZY4b\Jcxx]8RiySH9aPVbZ Μ82.-lQV 1f:p ?#ŭ^MdȎą~h-~f1nzqo k3a2`5pǼ_\= [ áLC45-#\ S@AdKZwjnPNxR3q=v.!{FحǑ/ aT-4]:>)ע EgWLS혥ȈHjɤ@VgųKh @2zNy/-v&΢G3Pi)Idro2v0R8aZd?F3Y9qCp?{ٖ( F$,yje?"ļn8nfxH]㫓G 0UJRcAdA(srMoO^2 )T v qx\<7/ù_Cژmmf؜u-Hi4\vYȀ"\x ј-`~H>fG(.ߩ4<$P >K[7!2 ,Ρ/8|Q9nGʕ믹 Ff>q4J3SHӋH'!Xr)_]f2hu>!ҍ%7Mem-4<qG\2xuJcN@9iuDZ5-9+JQ`~pjQ6|hUt8"q!Vmi^@𷜣g)3"J7`,Ɏ&#߻$SM)b0+{Wr֜c?g5B}n`Fqy2[tfx Xj2#2iC?`N]i5%kIvs\]V+fu|(G`Qmmoc)^4XeZ`al ׻НÂ=X2`ጸSZii)Z%5>|8SH3nqmVo%9C7]."=ؿ <ňԶg{ݢjm/3"-)TcV73)808iØϢPUrq3+qg+ ό}nÓ \azаP?U!y4$2Cf&S¥RN+b *-w/®tDʝݓJ ҲkFz \ ͜ɰ|a9!anyjRUn^tqkӍ0>6suaKk|kj-x1ʤgTɣ 80j^gz*[»YOk"1@xϠKm;CC)3"n(=nۜ9bT|޹_^x/4x-~F˒<浍tPE?f{xLP>M. H41<ōZsFe8|vnj!efKomO@SA׉`B*4Jn;{ ,1ߵM(8͜ѫ\;/$ByocCe) ShC[2t{C@ ,'P8 OW!~wpA%ew$4x-M&dG`<KDpʥ)~d`~ 䨓cd5b*|(3dHБIYK錍f[&*@PvoK!`I.H6upAٛRFjsM:g"p~ 5\Υc(}2NP&gw^D"r_l|78\IЄԜ`)1 !1x{ pZbGpE9\[eK!ZKIb܏vF ƣ&oi? MM(qio}e㣠訥w oɟan[zA MRSUzR-+fVhؙx0̼ WGUm2ҌKb'+638`23q!􋒦)UH|0#nss nnXI+Jj"F Sܒ2<}܀u%A6 k#0nvɒdVe9MXlg* x[Ír`D,Cԅ  ҽrK`*,~5`Zjr;[ލ5,Q84z!PU IDATXRvw4 f=P_(#T aڂW{ kZv]c9J)xkcf$f,*<<3Z<rTA㌏1m:]FrVjL5r1gȤ){r鹅<%|lJNx:9 VsA]}&7Mn":e#M_] 󴯔:ǛnC1oV4SY2Ez|bTҀ(U0mxY{"%TD8PQ\d>185ɨ`t>WA8 _^gD'.b\*hQzZ+9A ZS!j(mʀE 轡4JeqP[=г_+- ͧ]"쥂DČ܉!72w0O9-/z[y4p GƷ(ԂOv٫) nYLϻx w(G8D5jVZpx`zPW#Jdt"'~@1Ne+!dK:8\}UT{ T?FDjg5N[>@3ĂD -}Ղf![CchĿJYƇ`r:m){i73a){\q4zh-J8Krfx OK71<>bQIz"> 9GH^dU a՜bsv#˄ek8! #@̆ kl$ӭdHDujQU52|[܋>وȜgghw,U>Џ`I`+-,95E,i:@Us7qr73!t#z9u518E9CVw'@xHeXJwX;J8shEgR.uBwG`Jyiw|uN8:22ʸ3H---tL)q/^OJ+W@Y5 ]r-RE1(e+ Kk}\鸈Z2IG7w7C*屽ϸhDUVZ>7DŽGssQ+)ԍ>B]plLr5вcr:g|.1wԥz6K2p,v'8Ԓj *ɠ洸Jڝ50(Eb54q&7 !:`@cTɁ:0sNpnr7|]nX1E/oEjD &^Q]% 8ij}|d3p[Tz-{atXR8N8Sd1fw S%qPg[fndCŨTm#ZХ]a=kJ^B; =AR rY2WZ ze-ZEpiL i{ aұ=\XK"O dÌDyQI?8JsA'KYj L Ϥ =DbEs%3} er _ ̭)TyJEd{]SH:a7_@ąq(Kr\+xx\Ma`)#z|!bh>R @mwFuA$lr)U')9#_9456{9 fV FxBw,n'MkQr'U3e^[GyƏ{(n:!pFcRyR,b*՜s,eoJioBʏP`k5N/(.28*Zv1CȈ@OFCZwsaBDHV N!\ِY?aw)er0-w.2j"IsdRTP^+5` Y̨y[XUZ=sg XZ`_RjSNIRԑ5%|ok@nҺnwC?@V=՟wנjxcJ}{|g8.-ggVPUGY)#{DCF&!H+vbwz˴E*歉G$ :Z3B@sBPě1L-<&Vxw;R# Jc1v*tHuaEJn그7?ompGxjPfc|f+C65d Kj2Ro 1Bq T![Wڠ8v8hgGI$#g@fj!oH~RHj2C֢fέN!TusDxmñkQ3D~iY@RkDh:j :< 4^,OaXf5 9B׎k$ +!5cZR=GhfZPrhR 5ƎEYWB[QJ;͆Jv)Q(K90H0ZbOD\X };ǿ7M ;|&A})`aC{?e81J[rŏ[ܾwh(aV3⃆BSVm9B % 5!錈YyLnNAXqS/'30㔷 M9A0.Dj(5HUT+K)%oRAd`1Z}a8H2L>)`'_y#j6Vwp܌A#~U 6fr*?(TAsE$C+5S.J0:$Ã{L[/]kbf?a;#NsKmY&U =bjS 5G5[]ZK54sWẹN81!T&JDC' lPf(͏!2)f= l=pR"2\R// Q^oa<*Te#m]0i|tQ5Jjǡi+cRǧIіbJSN3/&V^5G%YVS{u=eVRAuŒ Z?jnosomا3yYxјiGJv X3p"m,`sQW}BxLT͆0.4US RK!RdllFQL="}Sveox|=`oƏ(ΥQԾ LǸ`PXST)fmX2'6vHI9Z{TM5ԟRwMgCDJ$)PqgఉDnBզQAJhA`!9Zt4h4絅Hذzy߅5Ma08Zgq- a1ǀpQg| P L`%GzPHA=J8;/1yLJ1֚?V~,^䄙R^E7xZN>4BM RDﯯ\$nkYNa*u!ӥ"rsMt%^B 4 Pwx60!J:Eqvq 6oo@1dT8cwEArG/eav56z}!S-2"L]Z'bNSg5\Z,AR〈I*C& ݼrBHm.2DR~-?4ޚ)$s nRQ "/!sYZMnhnJQs7嬘q("`..Wv5`I3TgRsd)q/4=GrBԁPsI4St/"3LӚ>T= v2gϡ9G!o&ҹ.E& J@8Mƣg 3f#rHvN2<"!q)֟˦{Cp-hP7]jpy&9f吨=fs4 ˺u8JY'|ӑ۽i=%`*e$ʌG%DA⦪?S r'rMMkpxț{ kDI @nQO4y*yM4V< 琔{Er#-xJG״'s~wjƁE*!i'6oqyenGrd!HJpxS5sykF(,#ݢ_ gH`/"!- fh?=* ېyϠp}P]>G_J!{jye\6! (6ᆕڏ { fUZ8GTzg%6}R^[9(3 M~@:ZϽԚpccaKeIDx֪E&!l<+\/1KkJSBewiс)U5Ѱ\m:'Z9Ziz_v"SO.A8l"b$;T}] )γU*}'$P}豂y{JTJx"̥sp'ј@zx;hZ8g*e @0W) ,ü{mrAd{(0a',5F$ks-S!"k| k\$A`E~k2&轣+UJa68㢭R.i`X+-~&GCHt\vቡКf?%w YrQ>)Oee!X{fۼ;`ze4=8]0ORjk|f_wH3.FS.3pY)Dë9H>m`-b 7)dp<2. <)dicRrԆ:2a)eqNʧF#apeե>Sr V>%_Fh=0-k (V P.FxnF #u+^W }C^ln$Zv)NC-)ֺ̔DlvI&1y6mQ 5roKwox34 Ѧ-x?(X~R"~?i!@`Ju7l)G:A ZWЩCă*ˇ`9z$be7jZ}5D%I 9R*2v=>ͱNt96MV|9JQcZ7 x29W>WCUR9ƿV36 =jW0ZcCTEJ N-9CfN#B)&`Wk)uRt OA[F_pv(NkH?V~kj)z;H cبP upm.ݝ  }ܲQ~5~6x<wj| RSؤJF|H-кxmx,H63}$!w=k&Z %vx:A/gwS3bO''`8858-HBvwjH] |sSey@`sBDvRqj%&1r+&cdXw@xSil^cҔqɚUd8ؔCoxu{)lq U`[ܽ̈́ IDAT.w2\QDBIç5GS)wc@/pPeHNQp+F[ a}ԍ*BQl8v6c13D8BbQ(i2ڠ/kSvSSsCr4VX㖦b!Yx{ҍz%hkﲇ92]lۜͪyU4Sђ`wi+T; o d@d `Bp5;sc1EN]u)6K%M@N^.~ό:'waLw&=]&7Cuxiy=w 4`z\B\A+u\3&sx%$9}m"BZZs0.7]^!3Z%>!O)!Ȋ)(b)B;@Sj2u}!n6QU@U4pm|=YIϽޫF2RqCtƅ'WpD f5KxEqW11E7_]pىhHZG3WPvmD!o/?KI,ȓ4jJ%-T& L&4-^tgI-ksM2 vX>"Pb,Z2}rAпͧV4zGA. phf8RYsOu\έ<4JU$=gE0D+c )ytul=E:jh@ @{nAsQhn\fm\J'q-1q'9}}9J%gٻtGd,!i]\)o]{sOٚGCLPǁ^%W)p^\yxB禓%fHq¥tA kbr&5F3[sdoB6?ךRUDgk;"3|5j-ۚKІ !u L rqQ0 ׇ7$P N?;<'lK۹D-ҬZ\RK5CtcB܍,V #|cJZy8B(8"7/uZ}tIҳSx>#"Y[jp ;Q&øoqSK%Y~[U8y+sn𗒛IHe|%^c<91>hzJZ1h B,rf.58MƔ5TxmU>gy{H92&/uOa1<zF54OM#k{Fp84Z^U{W{Kq`qIx=תʙQ"PMyrn^JZ$k}]*4sG\ M} ~K8IwUkAÖ U9i30>& Kk=w/e zDbCls9B^.[Hjxq,l eVf1;:+.0eG o@Fj2s*t ʰېRQ:qRzU@qhZDTFx; jMKюfDqQ)+YGpP-X]x%8|%2TT*y)ȟK=p" %4x@ZvOv)wEeh_Gֵ}lwʒC({R:L-R!5SHSRR?<(}\wB=8>smmjzd!9;΅G :NGp` @QT5?yGkPé?C \M3Q( 3^u;*:c=U) c~ğxMuQGaZv2u%*KE 1R"K댓ոL6+YOns>oD/tRkG%D>7 Nx22>}8| Da]>qqZ8G*12 /eTJ[9DNS"@Fk\nqsl(ޠ˾~c44|2sL GZsp&&@ĶߐVN'Sǐ.R^S/ǐԲ1 L<LMӘmP ܌}-}x['i0f&E*S3£~ 'dD3^%/R5%cryl ;18X\:sGƾq>`PSaUмP8\b뭙s[+'d#za *D"}LzL"tӄ@">Y67A](.xhZeZfltq~'DmFK$ a~.sϵ+싐RϽIwS94is=zĴVgU%O Ep0N[:XQH#x\_\H%a>Aaz& y´ʭ_~ʢc>o1 hS1NpyOB)?A:vcqMrXǩSſ8!Ֆf}Xm97ws ~ /&4UΒ|xett/fs?lJküM2<ޚ빡< 鑩7s= m @3HeYңSY~[rz,ӆ\Lg nù"9=tUI.ϻXIskYUxD+|35,ؾa%cdRnsuB7s$.U$U0n)Ш+3bpf5U?acJ-@')m0Jʣz]Q i9wS]fsoi#CYHV:xeLsoR~)OLG Zٌw=o2s?Wsal,m8tYI\ҋ|YڤCU Pߖ]:9hI =9,k1=D&*M>Ű noڽ@|X Zen%jZΚ\3z@2tô#s^ɡ|KI[/nsrrI+tbH:Ge-ub?C?g*!3c bφBFe܎Æ HTb֥gq^\"BM{Ɂ[2ޜ=B2LeB-\w?1`#p;t޽. qNlg!`HN'/97W{F/:<-7kFu*tW ޅcxQ^re])q{H=9#ca9O!=Y4FyQOm~ Lݴmx~5H{KEs:6;7wrd8 ;\f]X$+4\}R3#2 XۓdP0TA ~~[k @؁Cq6 #hιhY z|h7N8ػ>?XѼDm1օT[Eۧ)]6ԥʼnu*{88vSyAKyKYC%jKO?1!E}w){90KTPSVO)z",5G!PdW0SPr {׭/LW_Jle`3EQ4'YJ. zksd6R4E?cޔQ/qs}j_-8ϲ>&E駴D\M.ZOe͒f_]ڋ:l2o CG0%Ԅy iXV3uuFY˔+fP]0oLM(,o豎THP]#wD\{|UVq1w1 8!#6I&Q 3I4]]"$/Giu0;S<ӿO?e׭>*C!: `ɺf $> %d g!wq} )VO.ڹXnvY"]m.$}xwqq< `{?PdDe-ө~7rB`2Sb6dRJ8S:Efznx.fToiYP5\ aj{]<~SB:ųfs%Li{;os+B'FƔ8k *~4~cZ`d$yMi/_￘d%{$0Ew\{h޳RЮsf* wY 8v| `!+t9pU!O3.t?}#VD4=mLZ%sm%6S!@S2lO TPs^.X89sc$&ppկ'nu񦈜Ͷ$ !c91%jK]9=Ҕ݌94"87g;,!XXy263;^r3,M|Gqg8po=S|毧#OqzO?Gʨ88.D-NDmϽ>%G1ഡu2עC3U9[Ξ}2()l(=[4NZVیk'wJ χ )rtXt4$z_GN_伄Cf4-Ww WCx|(8_" ˙T彪/plrD0~0{΅4s[7hOSR1wWZ@S5IK)U9m:FiJL%RpRMU{ן~Dq.Нvv{BpxL1.d1 8iS.M+Sjyv/G 1-36&A$c+k \A1[6ɢ,y +C)ѿr+|WT"VCu۴ݒm_[gr$@ i.~ =g9`4`n'sbc",u+(T)齘& \JĜM\.+Ꭰhh+bw=:ҴݬG"Nes@HV_J;|2盱_y6 'hig\b|`A/Y/&~Zj<щgzrJ!PŰF-UYymVh!`>&{Od0 !7% 3xXdQ ɣ\sL ݗS=1eM5QUUnП~RB]Cs!h]/Hf by΅-]oȔJ.lm^~Ҩ/:^ kzwYK7#'g\r)}`fMd~[so [>]IH=֛ly`cBόRx.83;G辚f.ѓRueXfLCDQGR6 ʭ?I#Tcg],`9'FC_uQȄtx'ۧ{90?pUl#g>Zf,_ Z+dI1; OJ[(Gft( ٳ:fw' G&Gyіq%=#(F?4:s*pOel",p5gGQlB=.CiȚDX݅ =# Kgϩpڋ5W~"+Ǻ]O7qȶhCDefk?' W houn#<&r2߰b*tOz)_G ^տa ssb ;@bDBt[\EASon/ RH rDC` ;~ح]ҭ.)YͤL`)c!ĉ|kU|GÆ3'6gI0aWoWšAn](e}~34t7mנF,&p]lTȔqp9歔_i^BLb&|#\;ʖ=Ͻ3ac_fV|s v5z@.)tO m® IDATa7/1 YN]֏/5alw,T}E&]S!KD\E'2mtiqE2_fI0;< Vp쩂Qq {k׬0o:v[]i[@DOG;X]BҸ׀pǘT4ET #F<]ۮKYHvE >F#!!y)8#`()<>ܕnB1@63ds(*; \h;$tJ^D˽cWNzp͟2sHN=`Cԅ1V ɫٹkFϦ6I%Kv'kO3JW@qGWaGL̽.OD"G/ 4)-Y/;]El0!/)Ht/uFywJùare/|l0 s$k sA=i5QZOu .:9}:T@sPTCzU)vت~4{'0a%G3H)˒$܂{Uᐝ[?=Hxp\T'.yni\i/i7O֞,d`C2.k-a"9yfMmxQJPu8ϛǜi|$耽z<M+졌f<f1D6/JՓm4Dti9tjhW=hO|OΞX$? Z̽OۧንQZs`nq y{% k\sWhR櫤Jy1/e َFd]40νN5-Li/%(u.D3qG\(v PEʚGݑ8UI|Z5^'5 bi I<:v=dLJћ}3kMˀy1(<2Xe`6a3rV|4I=<7f@ʅ(E"*̗ %B gǚD_{aFdX8u^4m+έS$4` J)!Tc}ŇxOGC蜃p5A8;Kd1:oö9kdpt0Se35wtq?;%*2r6T%?}}r-rGc$Tj< M1 Y )nZb{YKIZ'TѠ']Sc.xEmXG$v< I.@yFO8RxCϡil04D0Cb7$yuDa)Qk+w |)1gs?BTM3Ӆ5swb--3\Ӕ?%D0OLAOBsVC3xa?Wz/d.Le4{Q @YR,f]ulU`&\Ԇ|'s?ф@(ղ][asfR~KؙЛף3 XG'pZԙxy n-ε`Y. M 0zg)ItPj1*ŵ$Xy'A̞ߍÍb%xmf<ռҾ@ЬKӑԏ1)fGfpuIO!}iEawo}K. 7@7ρq_}s 9 ޚ3.Y괯ܰVE?jGz{GކÛ"x5kBІYc.G1?ة'[P>LO8UT(¶[Le̞W-kv鸻I\>ۚ`xnIA\KްPdK\G4sCXMl; {봌Ɯ9(orb(M% %z)z ~7O?aw.[5c[ hAoAMuc|94 {,3Z_TRl$j=P=+/XO~5̅ժzH (CLB@F%rD QTz-XDZYf .otؾ &9G;]8N g}l tgLƋ{U_7h򢥚ME0 T)[P?colh x{A2FKxD'nz-'$rV(F\n?üA|xL&^lto\#zektMtqUi{sR1<@by%Ђl1"K˱rǒ=)/tn op%cn٦0RQo1w>%be!_ P c*&:Dm_ ]LG3Y{f~e B&v&ycөA8c:Ь YXȆQTQ}hkZsT*(}vuXp㬐Xt>$pZ}=H!f=Ed#QLjxwOP\R`5Hz\?v)GK?X !0/ro2e"T1;?lZw$tjJ؟Yb9dYIBվkns=WbK䞳sZ7kUG7:G)Fo4?A H)nU>oz˯q,1ׇҐ+RO~bSr2[[c51{\dF]dcrՏon"fCb4r8g(U|"gր}RdNY䉽6WsiKKT >m qf7zVp!"dxO,̺uh"LDr5{55#rIԜ!vi YH s\ߦem"ڶcc"+qMf1:q=tdH @]C6:k0:5 B&\9ptؼpӒ<3y6uғ.y3Qt_1>#8Nʅ5/%Agl0o)"@Y`إ]bQl[cboooT⚕}Tԭf}l(sւX-_-^sKO9Ų2/ ҮGo~>8=E̽{-X=BPc*BYQOX8ep?k y@Sw`Bƌw3'ILdy}eGdza*GmaZaCȾѱk:9Lrn n0|*uߔs6rڧӱ1S ˮЮ7)R7mIp˞B΄BRDb@7hFT\E(8-8s4PT{AL18u|1o 7A \'"5pm~(f̃g R+<sR)16i;sR5vm)̇1#`J@S;d$E%Y-[H_[0usaJ"y1L3^+f΀thl0w{yA ,J'ۤ=iw(έ8_w"n W̬Q,)6cfq5coSύMeOIK{\w&-F#bӘN7rh~M 7xFk;v&ĕ){PMxd 2`f<eEs/adFnAvnsϧS@ݡukˏ?`ϚrI|-gi֎M^J^7HITd) Bdj:^d)hr{)q lF #/U͞yC5F1Cc~Gah$+:2#H W!G\:^0li['2L! NDc)̽6\ ({ً2*c1\c=zqG?a9F4e꛶G $4vJO`|y Lw:ly9dzo\"tWN*ʈ1S[6p!:FӛL|•Ƙ 2LJ :lcBZߋk:LCHk;Ih9e1鎁b,۝ɠevp͇:߇nqW{yH:$sސ_x6Ƅ!s~Ef(9 kBQ7(HdPȎhM)5ז#9aPkP\).>s-ͤd6ĉg.i]YTV:ד]N96` \Em!G: [eD1r#Z&"k˻1~I vL.J~aw#DZqn{p?g.~.dio/$g`tԀH,J9'ݑ@vG zKE!K|fwD*{ij?P.?Vf5hz鳝-[禷&l(;G"*q8n ĹV\ RɒE9|5d(дOx_}x=my7UĀgcž6;Pq4!-rGɜg=#gqzC 4e0 S8!6д!xxU2 qhn-r"fi'؎Ag^p:c(6_rmf aJ T=\ӈkiW"2s IDATJR_>vm!sU}1tżcifnӱuRﵿJq#=?:/IH{^.؆xo M;qL C-|A3)Ts9R y 8m wn;689MSN蝨4yvn'Jꑓv}ކ Tpi7 >Q//c^#)vY*-vmczb}.; 0ϼ±|(a/Qr &|B4Kv @]A X58ui"G8G~b/e6>qk7ҭ)zynp`25Hs??C-Tis4"TO{8=j}t[,Y' 3.pLyHd"ߖo=hMJH]A+m h>7ϴ8j"4ܝGԹ54LRk~~|l ڙ'A!K@>UOsx)͹P"TiH喽rm'۳}g8fvXL8a^ f[%s)*(K䁴=f|R5=D+ҀݭtP Q3"F߯^tn0l*򥸮k/^>~X}fm0E!P@lUwkTBTbo0\# $Fb-o \ ɘP~[#YDg4r:9yν25BS!{ü8wKa5; zI̢ttK-ʅ9P? =!IӭѬkC#~ -"?h~!u3$ux&-۔qEqIFN8ڹ 9k7? @ QNZ}ub=LykLG|@5h=-+h^]w NGt^XN>b^?:&Wh]CD.0T*6>¢kpqs88%oPx>#=igB,# [ Ӿ%XgMBUuo1rCX wEhS~ctULC5x ͱ&k$c@=J(|nLh߀@p~Ѝ~ә6+W(_gдp"aЈy xAeҾ/hH qP[+\pV]fcdtzgs1={DOUGHcKUZy=f: Zb8ڼjFti24Ƹ_4hָ t˜~rT+Us ˔b.]4~ жa{n*t)XlG.iS7ʔ DN휎6R}M[C!HN.W[svekСuR$Z&Ki4_Rh.oObzNvXB{Jr՘ ;~ CPCI1hl~GLY rE* !g%":Rb[yij)d>Ә ̭KĜ$ct "`ľ%=cS1o1wQrȏFfWoJ6\_a>*!Cn;Fll7 {N(Jl2 m ؄If/{Si=P&4\:) (#en0oT8[oMׅ ᦽ#&:`^lٽaƼ0ͯXt63<{ 16aQ{l"nG@i.~$>c`m83e&@G!mYT R9v{]6V. -UySE'gY[LI D ;Xn#c ˌ:3o K2T)| u$[ `ΈHk .kyڢrN,+27ݣap3_P`RbĶ)kyMeȈ!<љZb=ގd7Yie֚,5)&;c, jmؤC^-Fc>;E%Pyc}R{ILGbYT7RT(Va+tvA~IoHp9 8 (/&lI aB ǎ[ yvy-3VT\@k\\ʼn k]R>FD0 ̻5`t-haٳS+TO,MU- ̳]uuHc7ԍa,H=alm0{;lQ NGv!`@F$D7b&1sfl0"ZG0=i{ǡfhFL1TeN3¯TDX1؍!N֗}20paO !ơ'b{0\>c^i@"Io؞K@f]Bhdq:ڂ٨Ǽgt,;aD1тv QڇhS@~*@%&-d`9#vU613GTs-nowL~*RxZ#<@BӋiiF;.oCƑwXx>h[qFƜcLLT-)h!_'h̐>#N /zmPqc!zȎak;Zެ_"n h" (gTҳRՖTD@vᩕ $d9; :[3G~U^"^PSVPZIR ssfs =8-MtӼ1kZ&wﰄbXf'CKssG`9FqDJQݵkVʘ~I^aBvd̯2&o3#6"G4@n#Z('l!CLF)܉rNU1G&dNNߵ 3ⴜh#wDܵs5=%khx }犎-}0҈1dMX h~Btq0c̃uIۙbHL <͝l0bnl{IA=6GHٯ6F" }6 Ku fQ3 -`hn6yEŐ!3~Z yV9KB1o{ۚL|S4Qi!l0YEX/Bg֋Gm&(T kܳwwYԐ`%?L URAT3D#KF?OK%"ѓFɵyxXz4Ppj7(|Y@"nYJXVtC!X`i  =@`V5T-hZ73ؚ*KB'̽TfǮ& Qˢl4a=r  ww-Crcd<99xK'k }@moY{1jG^ +os$xbSv YtΘaE|;9z5#,ɜ.[X6('an&!,8 ܨ1)qEH(-nHHzJeJ"iZ;8~mkBXڙVj4804#=ME8"!y@JFɂ)_\&X2,.ZFf).L8 ,pZ_Z$(gts\k%p5j 9d-#Xc ) &Wtc eJsM߱3LwöFƒ=г4Z)g$2_ٲ8:yZC8+G( 5̈[?cc$.EbNsO)IxvXr|zy Y(q~>^ zc§' !{ͭTC~F hVi9Mh^ vs Xv:8K=0K yhX)b~^ ˲{&k5.TAdlu a<`̓fTzB>,\XN^dž;͂{b-fj\X@sYNLɰ&\u0ѺN;@NJ%dDβJ8LM#Y%suRV>ܓ|9^ &|c^7BmmKa@:5 sbu׆q2K : [xcD>Z݁p+_ɓ|3c !7۽A1od]S|lG+ƀ`cyY@/SI\&j:c.ypXH 3.$\.tM`eH<'AwN7$ '.2:,YN{) 49['p Gr@a>ś_s\?Pg{MHF8"?r7՛&{(q֍8:Jf7%]MecwBC|lwk%fϹAh `.`3q 5 8" SMZ'wn P8TJuImw ٚ`<9 G4 (ooDJ,37\Щ1YٴW8N cSı]*oLb ؑ h4Sy,S.v,;.R<[03ɡlsho Ͳ'0ٺ7aH:x+V3DAര53(`6xCǼ3&6$'12tni7ts 07 0~c>VwCa&dvۛDz\ "Bi{Z}j ır .p@tc6>|ZK ` L; msgd~1@FI wx#) i0ű+$1!55D5oUżu2$v&"ZnsYf,4Hh|=;f=EҺ) Nga^bdM,4^!5Ā{Od泿GǬOߒN cU#yy@/-=M-|FG#l/(bQ9nJvj_.`R"> f'8;Wk",[C:U;70O:` ])<ප#dx5 J!37+9 pbށ-~9=GS^tʭ9{#7v+ Լ ,خ%it 0}2W4V11Li_,Z{vl!MXJ9SsObh㒧-e.s2jga`-<Ɩ;!atyYW h? aC7}D1/?юf0D%<(uf\l,S=%g,1דFL$$Ng<Eܳ 1/a*k }7{@Dwda;[szO۽!ƽn.<ˇpj$:fjsYF0zl0& FK qK "oI }jO(Άخg#,D'0X/&p\Ӿt[8YɆ46r}}C{GCulnH hyN=g,diGhW6TcYT0c>&6UsKbqԞ>ky&bnJ ;d22Kp_aM@˲t0/n tY'.veY@@Kit6;Gf[<a>Pn bQ7=2w%`C]h0h1/+LrgѮ# VӰp|&@Cb>F7ؘH㖾wSӏvh~4mL]rI`.@vpzH8 Yhx|ty MfӞtGya\sw-o Nv%1n|lQI'~F`5mmü8mql&b'G Sd˒a9# d4'qXdM1|VKZgW&7p!v xz $ K [biOpLp+$BXM,2H  2~F7 llMnn!If3i*\B. ˄H\twk5tCL`5̓6nIC ~[+v`nm#I[`r"{7r9Վ7W qG,,_1h`x|[:η{

0!{bs3 `>}sY,ߐcnst EZγ'"6,e9?zf;ˁ8[g$v"p{e-.rn8\ p,2}CVrMh S!-QY67X4%safIT%&Zi>oPKܾfnd, h.K Pt̗9RBa}FQ(` LtH%4XS@^b(藚YDdZ8JaTǒ);X@u402[ VJ5xf TöbeQ%H52@M\tnwߪ]V~Ph{%MjY#2SbZ~+0J 67jߞ*ה>Ds P1ܚ}Wz0\e@-ݗ4s44|d0E9dgK ilʂviZ,/hY^<Pf-[27X")弞K,Ĝq:'"7 Nd;>G0ڟ5ak ܯ&S[H_J kʟ<ʽ!'[cJ}륚`*kKk/Iڜ k#ƨbRג$pQMa}3ӹ+aMd_@,?E\%W6S(ncy-× s1:\8^k/gtLS'l>K7 f4}wos$mBs k@V+@>FZ]Ę/$J,v4ss3%S"akZn)+_3-WcZ`%Lb1L<./uj@{SzM(_;j.Xšܲd_`ހg}ܧ(T$eY@R+9Tv-^ rk +HkQj l/~TJD)nz20ЊYvA4ORxX?0|*/bxW)W:j3cۛۧ9Hc-esO2D~rZ822w.4or=MG 0<ě3剩L6:Kے#˕B6{nH+_\JŌHӂbxYfxɀ _Sꢉ ka S$cE' |q737)"cr \( XHղSRIPL{c-Cp"."Edc3#j_gz>q6XاtRG~ZfvَR-,YQ>T\1|I<7Oρ'k{%fV;2y{rB >@ܨ69S;!71!%f]*%k`-<K]2%3bK^3'PHژ=ƨRDHOՀ'*'ko,T%#Θ_@[2<ݟD9%`9禀 09 qcIT" ȷ1ݔ>}\lƏg%5Uze8褩vIФ\f9mfm٧@+L _\s-dkqa}dp^gP,T 5RDM)Lk݊rJޱ<3'hB @;+%n@s'wR#=rfnP5goyL ijAks#_s}ioD$w,J g3r~M³~ZRf%ҡԹQZ}4'/`KFxHS J7HPӈd4玑sM5lC:YbZ Nm(wC8wqi=J,|\ìaq5Ԁr2&ΙBX fNIT e3pKvg s R3FLJ`%9Es)ԯ/M^o0hְR>.}%uNvr$X=YX#o扐> &[2'{6HjmNG8H pn±eٵp.%os.L5ۮJ-&l|Wɸ#Ş %g4a8zTESdyطvՙ_wfMvs%JL )FM*HJĀ!%2J H" 'O A /'A06,h$%̈-Q&{~;s^QUڵ޻n?4=Uu>buNHn>3C@R9[uqckS.hsSع?1P#HR!F'%*vH{MJ,nydJLg; sLn29bGp&q bc;{_`![AsX,\&LBgruJnP..#|$0>g.h%'dOuUJu#I:@z0aYQ1yɟ#vˮ:ͮ^x;e9ksc>2OM9zN+wE3D"('T@ہCcXmcJ^|p{ "|ĮW:9z=9u#bo(}TVu/%"#SSQ | 9#vu yvHrJ5~!V]6n(RKPm S 37c,Շѓ[W/g}Bx@ڂhEfrEySf2ܮlmF2~Kc=$Vw#4,SwZv]m/1KO)ܾ֒" Aon\19waS?}^g}|\}tq|QlkןUBPS)r4}[}mu®H+10?H{̕5Fx\8j] cBJieMv}zȘGgg/(?En=vUv2,c T{<~'_x_ hn k*|L2aNaF <2^znyVo ֚I`Ҋy|9e8-m #^߈FnR=MF3>%=]Z\{ۥWwCZAu:P@b!8Je>hJRc`v; V$;Dwi2\~ؽTb!{J`"9T;gNgR).@zf:Sk>8(?νiurmԇ`Xe (;AR0&Cp ȐuJKD3PTLVT>go\ k:`1kcSUbw.hnbGb +J^W@o_ ߧǺ7fu"1f֓ևw`v NeL@.Ǣ(6E"0DX/%h< 8sðD054#zu BЩ^sGi޴a:IgL/sR7vrRoCv=y-J>.Y`}:][GŝQ'nEFv*;^a 4O 1&<&ITX*d{_Nv8čsLBr=+ ^G:_8̝rظiUPPe9`a}4fR.3F D\cv*Wn4 Sfe*[0c1l u1S- כBU3v1=f\# I K5xί;y4v٫&NsK?jɿFٹV>9Dup6خNa܁(v@? 5MO}bc!KMRmi$ *K3Smu|)'+E"Q 9CpS?9hSw4Jڷm5BmpMc)Woޘ)O8;7u'M <X!xeY,l RQ]ew;ǘ*sEpJZMy-O"[_[i~h9إ11:}rE\6 ‘n$0iD2%k7+!+Za}pQëcs! 胤[pA34Vߎ̧ׅ T֘*JGӽ/oW'=s/-"L9qH|=Df;WeDMm_ 11ft*?K|58gըK>>}̲(3J(CZ){yp$PNx_9C0T1`f)$*l:a_y z eB3b4erO urOR@fSrJ0 `+0IlAJR˙R{qzb_'2K`6lFur[pw|_ (s٥/hyL}vEDZ#sʊ0>dvZi1ݶ֪BwӚ{ůU r@zdI1.)a昑 1Mx1"mBqHMit,1k Vw`^[ ŵ"t)L&(rgRS+VsTgB;@{}`M A9NPM<N")f2/a3#^~FS2%:̣<緄qқsܦ§j0LP BԂ`f]>ٽtb9S:n/j=ԇwom.bqU`f!$"e ťFJW5]\f {p \%D,V$.1K(}F郥K!#vPc9М.}R>X^QWbagA}x^'<;cyQMHq)&do 6R#R-X$g0Xz #F2]_y}woRQ]@`n^>{-%Ğx0t:t:/5\*\|- n:-eechc889a{JIO`LvWfz_Ƿ"ap|u ^+4#u~ohjsF 1sޛw 7]܆fb&vWbEP6`M;6y,vhB؉3!@J SK?8̓`$J*_vؕfLc)efΚkk ,p frBル}VPS1fJ(9:oc;zS,6 y#lR#hbtdz,h"r$1 yCTs(?.jy&Yd/C%NNfv)_R\ւ]%3s u=̙1'9cȠ[}a Xp="a;cIМV@*-~(/ !C U}}ny%˓aUK<,4"9rqF[ 4s{R tN2屩11m!1bVxrD3D;nd GXv l6&H,;ZAgIa>gk]D({_ 5/lB0I yZl@82,q@XGQkv! XC6t@=&u;ŀπWݳwy}C\c Ria*ǮݘOѷDN3u08ܹ!Hu04/&Gq0DkT#Tw_*!˔,ںr$` 3wou]otv;]kaMe`ib7Hہ]-ȶ޻GK%;%bX.9McE3y~ޜ9lZ6='*҅ 468&}S7[)AEJʟhnﹳΥLnһ޵![pD)>La)~2T}¿]u@s f8+.Z5Qn<e rxr^gp]* 3Pp/px+iݱx),>g&w}߆]; ޛ1CTQi)3\rL3gcRcl cׇw` ?#`plKaveE2֡Y]܀2eTAQ'^0١^Pކ0;=)w4 EB~0ح-9&798w7yȹy@ŧOQ|NfCbkWKu8vT Yb]jC8@/ F#05Sm'B8o"`@#Ln(k9 HOs]&I%16b6y0mU: {p>BT%f99vvv0{3d>xvفώ M9`EuxxF+-SPi6Ի_[ͨ0}#ލH"id g@x <eɒM y-SJ_"05[N\@&xHhcZ4)1?AJD^G)1ULHԉ=:長_+ \zZ#ee(t@9!ڐa3.[[ EM4s`nLJlڮ),+sr̞=2?d_ݼA]Pk}R]D~s2l@ԅ~O(t!`uux5ly0ogqq0OQ* 3 "xy+I .y9H`NTA80a0)qHNGpSNϘr{:Yer1OiX%@sJ&KHx @Abxe'uzu {xꄟxX u,R}ºNQԉ-9˔AE8~."_>`EGD x0N5`<^wn>îl0֥W:; y*>Ţ1M)?CBFr l»mfW4?lM%ѽ6%waxe KP<ͪ6g޻xrUc[?XHXbCbV^>81|)is>"0wK/ jx A*P2ub 0S)milHqJ=ah|Er7H'2r>dlS zX6\c8dF 3/wo2P=BX3֨OdyP$u)w~2Kk-9<\[|ߪkܥC&ۃ- ->$GkK"$D,$x Ga7|2=Θrv\]E"بlVPi$$sdϼ쳸;8&$mω(%V6aL#>*&Y>]E`yu.> #ˊB'd0;v1L?k8k1^xrecQ$@ {5Ms& GDpsx@<(?RAnc8G1#-@T+JT!;;{L5f$'"FD"n!5=AcAA% up.h22&#^nK-~3iKenP/NJ+7|L?w =m?B&1uwAann-b??go6d8jvX3cI13pČ㚱"`͍7ޭr͌I{b, .; @(iOG"ۓxO %QvG!6tX~Ɵ2Nf+&Z]RuװlKKmКN8ǴLRf9sQmm%aAw[#Ahw=I~d/=+Zjy/\rY=a(]}[w9kU᱊1u7wc ʐ6n#M2 ƊG:pcص10o4BČ{:Kd Ęo k"}X%@A(Q2aQ郥O ͓Q{^1?kvyz?7ExKSn0s)'<`aN$VF1xs~C5>nr] ~B[7(};jijko_:@3<`r$Ҟt]x)NLp!~j wN1"[Xr ّ1u-w<̉vaw* f?ٽa̳Nās {t5JJ-e_4 M6|Z3V5uN@k3%a=Aa_xChnĩǴΘy`!@a5qЎ PyԄbQ# M%kd0Ra7)yBP8Qxwufݩ14Zݦ>#&:Yg3c!鏈~e$[Eyra9)ur=FǨv.i9FɁj d4ݟ-<Șm8leaGw\&yJ;{F0|^o֯X8M'H9ͅIٴx&cc~BPi/R̔XW;"YbS%/+ןjQyl_uXӸǏ'؝793Y[F'1܌s-Wh,n׀!*)0EdHb;+ _z {|8kcU7Ւi )\OB0uqjf!+37t9wZy-viW[D3qnY"M9iV*K`m& Qt' n b#\H#o&3P_J8% rFY! r;UL ,jmB}|Wa9@0f* YfPfweKB"f"3VqܔO:|md'eN_41= B2 ](mrY¼ iSga&i\/La-&!C@u785h~MdVTSS]CQ%egav.% á ְ#{fa?.4/b$KbX5?Ť|ׄʶ 4,}EWc9xYncZ>UCE:Ϣ7kW-"p`d }Hi76j 5csBmoxS;L{, % <^32nu@m9j݄6%FaXy̮'Msxߪõk/n;^Ld EnvV|k>,nyNB3|,S@1HKs8߳2b{4Ɖh7J')\'l [qeHnBbnDI DZzn:0f;>Ed|A3ZQJyؠ6ȡl2 zNHflv/чg۪ըǍT^4e?x ?cEQ \"X5X;~J`#Ө 5cs򘱒T3dTm"q@aʌ}{nn󊘃gb;& \"ͤ3~p.9{`7[9dim%[XJ^Gʛ?֒(ȩ Y!_b;8K8+ؓere塉ph;yL_^[oe1N+f# dLLɰ=V,[}1+jǼ8S`{r׎M=TpXʗ/%sYWTu#l1~~ `u=Z'#ۛvef$l IDAT16IL[ME:tgj,^!@''ka~lT05w.Ccr-.307Gs=DߊR תr [5}e2jtOl|"Rtqי!nfneh&B5`\ۻt+`>M`3lǼenƟW =2}'4bb-޿qR}ΐ] )Xn)!m20cq*g:&4OYsKq&6T+]N/h8(ϻgzEWp"Z*G{M0,aF>)dk3Gk.)[ *b7Fͪ]/'#gF$w`wtw,}}3onض=׵G=f~*f}8!+$h*vE ?f8hϣ㟢‹l7Oϱ>lGlb Q?Zw _lW ^rM/E. :O%$7%J`F2E1&<k@1!\SK0;*;EO l{[yrt8H)d%uv4"9+V5持Np> \ijʉ\8뾓b)\z .%Nb4>[QHlN;3ǝy3Y0lj!dp8(p>f) {ޟdL9){#9@2qF[Vղ)dK 4Cw Wpn4] IftyKfhFh?syl/n{Ok#wE pC.(H S)`} /rWɥclKDxL~c6-b[n}b Â#EF+n2@3dž&i{* 'Ųqa+mJ\y\n%$}/0m :+4ߘïoO& 0CمWs˄Nd|fCk500TxD11)X Yc{$}BW\<5%4<#VhwӹhKoF&CU0GcNc@3:)DBru 9x in ٓ陋3?C7û9%xt uUYf{xlɑlZE1WȢ S9yDFR{m*Orwjy>նJP׻7:{3߱Ͼ{d`Yc#53\-?J{G%R%.IO 8.h`Vc$KSBlmǏV8-gB^i4C=9ٝ֍S?y@e2d]8ީ㇔Pv b5\<7E'/$`['I|<~,\//o3 %9KYt \Yu5BC5O1T'l]@&>LDH9WK:e`:kOF\f(Z᡹eO1N?[l)8l  (8/BCvkR Dx+:wM:oHsۆ93E2X#ƭOJ1]<ަ4[(-EdcdЌDys@T`8O|ɥM90zD_\% )B-_KA1L_:0ɗJbÕV4SLf~$D& ]G|WeJ y8А# G5.Xv9Kv]QwV`Tܻbv?o >DI];f623W` YŰ\RsCrc.F1#!r3zs3*8D|_aEY@v@xLm$I!S\'L HZ/g6 H#icnjƄNsD|!V_̊مk!x^ 6`mղLۺ_3M$˲읈a>P0fpW;~kxr/{y\e&)Q(7e`ӆ9}U߼  :{"|Mϯ=B%~R(\13kcA8a'&FK*@9LJjuF] ? /! +Lfg3=E禘ݭpժ)fr˔:~$9f0-Xvfr]0p˝ _ˣt"qNaD8RnYWNH ~w,{> 2xg6S"Pcsch: ]H(mDtyۈџ~-ˬ׭_dC1d]W?cgvM0oyԸM:ɱ cJflwS6wlF. N ym3S)I$|jk#T0CgJXd[#bBJ$j Ft.#k"̓3y( H DϵJwT2@#UxՎ`So]: 9J3JdD .h!m`3$"hy#3 ,Hߍ)/p8[{^P!kcծ0 XgWa&$azk*@ Q' CT`i>4)fؿo'<,byٍ1sݜ6?HI C0}ZiАs͌۸ItǜM/{) F E%?1/=_W~ohS N%wՇ|$+c8[toQ"Ur8FK+\I4ΤC;X=cm7jΟ3М׫e;Q$B(}7vu0(Y혊` ( 2Ƙkؘή14fW!p$ghBX|'4FFA \7Qm$e/pzԔwb["dq ,IP+k)Zr%d AaӼBCc/Yɕn6O+3|;KupZm ̈|ͅEb:&rIf;FE  5՜S{*$aʅ`p9Q+F1\1*g;<6|ek+0BJb]AY9O@w4ФDd-N#XDVJ~A/7 /!ޣ2"x/+v\6 -oV^yFKmiG:4buty U7Qc5^$5;Xs?bBٓrRa9~nPfIpx_']f)sإt|*', \ӂmIG T%@A*عǩlZ"}Mxȓ6s,.52( )v&3$+ -aMy! LV̗20ZM1VgP1x;0G|^ŗuf2Ť\!90^s5n{ܿxhap(,=ՓOJM o'2SFV_p]ုaszw*Z" I s,Bxn!||fه>]m&U<gM%<@Sؘծ@d9l '!_c+7c IsAI0?yf7*8M=0͌R9$)?#oU#"c ;5] 3sq)l &EIX \JႢFi1fR,OA\q*)i݉(dqfU%}7AS{u b!r \1vU<'j8yl^=#K8LL(rqiR§R_0J"xZޤ->}}+m>+[#K&1~iQ0&yB!QO8b->Y+98c] vHuLZ@ÛKe&8x?=UXT<;?f0LzO`T 3?NŤP{ryA ab"E܌A=\ox޹+> 6\ꦺ~:0 k4A̸@0쀽7 ev8NA.5(b0Z8rB SC1!˴ 2nq*ABE<'x? ft% _$^M&n[nS"<@"}>8ɔBpE2&ݻgHC!pF sSBIw[w#h!Y?JƼ xC<hSОH)KY?*T]f칮 ^JWƜE4e-Aj _oS"i⦨V,:uTA>9jtis˵MuDXm ŷ28 ] i9 B+CtsܪA_Fqz|ySbj` ݛE|5Zvؑ3ALbVJMR(D z͔r ;q#AQ fX gva 5k6]@,4 7jVP;)$G(pnXBU`xl!(4ǹć< nJ99;|z%hD p>db:E޸Pr2EVD9F|~)եQ<#Kq&rjRYc̣oM< n-AK `bČs葱XB ij_˘~玙APb)&CQdE "=kϙyx |-/;%ݻ5Rh|p% .t7MM궻lJ:b"`b}49sÑT"%pF!,lݜE&j*]V]$&_qb1 Ż0] W% B@+ww뽰/0hBhcy̏dH1<f-^ =i)I`4]<31~ԁ%a;V4) A9$u= gTK庘qo4189-v9bJa1c.ǽFv>+yߢoSQx^Ap875UUb. i8?j~@:Ő#<9}frn"at\'Ɲ0Ǫ56IəV)yeR$mXn< c>ؙNaޚ\7j RC(:^gva[CqD|&0s11J}n.3%G wrG~`(x9`F]F.sc-: \vaȰ{0dZ gvih.57'Ti.X04'Di(5V"1? 2.%x ]4L95qs0@a| 9>OXj)C:n a  0 L>X~s+^!G: P cKMUp /Bf#݌fqsFx?³ZQ@%uoG@|6[`OEy#$ awj;8u'_T~"q>k!l30G?m^Rjm> +W~ǡ@]d/p?LS|S<1>m sϏoK{ jlc.\)AV@4Bd<2c l4fR$YcH2cS\4ּ6&3"Y'ɩjĢw;.T4$H`y IDAT69.9Sj,X;U[HN)6z™&%z=mO) <?NS8JeWY;b'H' {~< 6 c{7E+D1D$? #sΈP\ 6CaݪTbR1%F-$8p{D;=X6k&F>1r^1eX~L Tsn@B3{ix'Ma(Io,$'cafX9Vhx@Mi E0DNs[Ȣ⦺ i5C(- <68Kvv̓^aڪh|Qao7hdVh.2[%95v79Mzn7Xt^̩we!( !fKXђ}C{s?㈌kmGD)A$%k7`Xl|Ϡ/DäJʼn<̷ p5pA ;+,AcqHq }c)Ի _ kf,sΐ4 8rS#1HR BR}O)HBri ;>Ѐnr J̑X`pMYJE @ }`<9`N-fO;x81~Ԕ n2 X%G\q߿̸ekd|']L1)B̭9ƴ9N[ZƠptLDBxFܻ l JSrŽ!;T6z0{%!,JmT7? n:3D2+kc+H?d7αl bAX? \q/ɋ]ԲkvZ ӄbM'&nfϙ(9?wٍvXf]Z J Lj|4{ldf}! RRWSBv0G:o,38b`cJTH +%ØosV~- 9ԱU֓Luš:LZѫUOv8u])%g<6tx=3}LC/{mf]kraY2G$)ň7cE"acNc=5 =-IΚؗ9N1;aj"hbQN0敏b匲+(w뵩q j/{p~)|k=?Ŷik8ܧա !BA Aȶe~ TwIMzB2FF]8o:#q].c)wx?Wuf yDc(rk4S&cU˰2ѸRu}u3,w|ѭOPeJZg 1rIx/X1hBӯ cna'B#RJx %Hbupnߐ@*"Xdp\l| \`ݽclJ]%@ I3f387-O4̫im2eZ?3td^3WHOǸ-Up(c۱m2++Vpa j ,NHDgN\m{Qv Y ۼz?v1+@jB'dzdXH/28h^> r C38}(yҲ&^r>n``N6EHcaxtu (CUZ a XrJ1 sC|*/RI{7IJGdfU7qHQ5#Z+η;h$I⾻GUnCgZXՀQG^ϟ3{76$Dy GyNCFhZD&j|hn62^`8~&"xbP I%$#07.F}mz`x 0lDN142nA 1)B+ii:#BM؎uU֙Uq$ثSޟKݱ趀iז1Q#sz[]c}# ciecj ?K+=ytn khzs&C$mѡFR}"=+:sE%mYgI9Z#D>3f\|bT\uyە6{[OM~skmH+9'Z '#[@* B]1ЌEՆ\!vIQɗv@3>r6z̧ 9s"x>ok*ůgfq#i I'Lǥh U1#h0GdLB"ߘP2:umQJT(s@ڪ>r$!#T!1/G!qwf ^$ k6Wnan FsUpK}N"i 6k;Yr2:q'@$Qs -;|ҹ$Ƀ+9FDjkw+[ x<*H\\+|Jޚ:͒ Ay D!}? hb,Qi.XĹ\S$LG̣DGGn׈35BE,4X꧙MOȏFFC8IAHZ>.DB ˋއzy;fL[1ί&0'LbfM?<5-$tBx\x ZKQ܀DI]DZ?]C'~O3O|5s}Lj[bu0rNcfƑ3T>*N} .\¬Ιa [ O&QsU&chuT/w10c68ÉyqiLb5^7F+q% +L AOBF趬1s# "9+'k3$U>f}8CVy(Yf9PuDKƭ\%zJM "G2ċp\ONIL/ZrL{r艆鍧˟#0&HFezENAOU7^ֶF, O|1pAt!15NIJ2Q79BMMLjgtp&=BCq䜏OXrD5 S^ ͏-33kGvesP$ղ%NF JP5 q" c rV)辒Ǡ6x ﺤH&ir)Gf`-pj*%T:azo_j'W#Lǣ,R\/1iw6"='EƸ-\!/`=.ACsWGr/`I:OiPYwp5PQ ڕ(r ӛ;{*(V0zslȝG¯ST)A:Ԏؘ3nހ80JRq$i2 ÏĀ\EyYXf f`ܠl@){4;J rD-IE- &MÎTyIڏjkr!iC$zpx! 3AyQɀ1uw̱QuCÎ<^{Oko+Ȝf9I1 [> 2&ffm- xǪTV#Ƶ} Isf%Y`"< ޴{z_Wqxt7[LtbI([sFK9N8XW҃8Au[!=*Xv'5|=+xVShکHAXLt7'sLf}k/%ZQ j2qu /cP$:8{Ǒ#K@j'Lkbe'~6Ñ>FdJԆ]kDWDv\+:iJTߑbrf=yĬo F[4+~1͞٨gy2.TX{uQMlZ.;hAК?5wM>%J-vI%sJ i`PL=!o,kKt*_!gT ϡ&3|C]PX*`>ZbN=5;=5L-d3\tƋ!*dyd!@ YҀG')J Ǿ=w7xd>\"Y *:nK/  km<(p4m`l:C^ v^%\:b7Ut\?hB Mds W!,m66w JS6mbsI>;1^+Iht͙H6hHr86--aک:ACڨ~{*\~@MPc?syKk"b<r۲Mex\p3-;cLQq¾%69  3z?#K,|kR)uƄɰ!# JroMQx=M=6/MQnD |aY<J7F?VdNhhǼH!³kr84_b+Vac*VU G'.R7bKk32'~0٨̓[ 9q?酥NM5/KSS!#{6cWNX$uZ# 6vXC(5-R4+v;fK CN3Y@-uǬt<>E<N1d]!.+)p,)=E>d`Ө;#-䳖6_@O|a$e{=^19.(DM뽬"5h!vis>+#)89ǁ' 2lpdk m܆޻4yw]:j.}t\ӪKTG\۰~\>sk?EyAhR[:\`jx@'qj: ȍտp֊44$-S^_j0??q?fWςcc-=j=se^vD/H.x{E'O 8SD'v]`0%vz=#E a=!$tmCh6b|v)|tY :;DY?5Sd4 6boB3ʈJ&p}GCΓSX2S} /%/myZui(Xx6`;q1җcb7-X^sc-8!*\F@ puTo3&^Dk!Ku)t4O^ehiM|rE蔡Щ!rRJIQ!t͡{b>Cҡ݁T+u.ϩg;T0(q&/cY2ʿKS*O_ PPxo QK& b}Zqڍa}ߥ+wԮ}},tϱ\ `˘-%&  a){( ZBsV 6Xg/˱7id( @<‷G: N1q]Ɠuiv?r*"ͥ~ KN2XbIt D%dxshj-kPzD2;cHꢶs#0r0 ,í@nRh#رJ SX{Q0%ff%6 !'MKMQ2nU㷠=8HzB HAg˄2k.(3ϠBj6yew,g#Uͪsb("y=F AD ce#r DNl6˵f1N!nwdDCt#<8] %+Oލ?c;x}Ol12704hlH,^IT>5 $ik-xM^.IdDL\-4"Cx;,L[Q`Ye>0eC IDAT{naP*:3*Ӄ1?`:H1 N a@c)HAHFVd yN :cݦ}8]"QY@L}qS ˻cXIo9iBwwv$Ӵ̉K@|NlsFAw]o/jI]9R֖%դ,RFͥcm;hu=adBH{fwx|79D ∋{6Y!lVt.^)Pk8O@ȟc *gv_a[awT_5h_Wգ-JzC s`C|dpmSIj)s0OnӪhflҔ8*5J[=D뙲;H2sƈh8=l^[/"0-|]CtbɌ:FΩMTTϙgHdrN^w=>V0 `SJ'q~QUr?Im`9j[ꮩUֵ ƒ0>.t,mehKkf\gZN4EpGǖM]<Ϯ9pWxMp2"U2N+iML%MN1M ?Mü*VSϫMFS*YCP:! wpDtԬƚMsA..vãJ1=ALcbnv.fYvI+09׶\bxLg9CN^n H;Yly?Z'N.k6J-N BoGq`+o" D4tԂmv|mBZ&\:i51W=ZBL,P,uЃA:.\GzlP2nsxHslWD$(,%Hzz\bZFԉ0 dp T{݇_O.B!3߶k9izWyVIM+1 H1Z6h3v~tZ9֥R>A{ Blu4OH&'MysJ#D_HȊD(mFX1 D?udYRkғs&j \K̕Hgy{IwÃ>bz)C= 4f3A7 q}fcq섌3/s'K{Fq|s9fVPxnA7B?, HDx/gܶ(ƗD%$odV~ Dk;|+t .f@3]Yba15hWCONRd䌐\ ՁYims+૟\ T-:v1}`sDMl[ "Bf DiO)KfLaH&r\<8Ipu/O0sFX,>>/}Kj ao jCf m'vظ9^=B]-W4_h/A8D+aJplUUR&=a;D& T@ 'ee6BRR:lnD َ?7#XE?ew[m('2bMyaJɢ2QsG1UY=>\ Wa É;涀Yb5s:&7#۔jl;w}vHZMnJ4ʳpӺ*Wϲ3`=枹yC )ʉAuixNt~ɿez7iT T f%rL5~Mh}?MUS3#Cyr$7U;)4^]Jqѳbʸ}>ɝ 7PsmĞgs {O? ֺqiv)E?{p1uS`&P&ݼAFyiAi5NýW? ȉ$(sU"NsN)us->:*Co0=ֶAT߹\zҙ!.ͣՆUjJ#PZ])g&+h ؝vɷhL9KTL /15N`< uicY;TwZ,\nt4f9[IJl\zl}RPJ5YLl ̔*(uy+’T"0sgi&`}pj]0} `~aSZF%8|kb;,6goDkNsHai A-ûȏNрYU5?~cA^Lf^^4{Lۡk҇鉹t[L]sVNz̅3/碷"Iʋ CL`KP^y@nMD,5+_ԥңs!e=g=GR2\Pbj.gp؊0[ 6[LSb ^A2|{s J+6\Фc;2[S.BFRJw3ihF S}-GfE% 9LvmIAH!t:>/x> C9L[cbrρ p x͹m[ IkuBK%$̄y7~LA:/hncc2''N%Hׂ)"<,9 ''FbTKf'WgI$K3v#YN$Ruv⨤}.}ktHgE}l M<0Ax.ZZLkL~"@+ p /?j/5>loY |vh` v.6u$"tGSJ}'LcNDN 1.y >Ak&OhsPKn}qDdm]RT=i'އs s }b# GC(l_wh*v64{5c_jG_n|?@+"Z\L b7RѦ g%F0SCzb(b'ׂڋ:Lxܶ궃kJu=0#dIlrUx^B\-e.*17 FT78[\P.;j6-K OkӼûaU:Y-탮Bs8g2:A<._ï`P'Lg?p"x D?3Z[a#qNLSh.ܰ o@sLs!z v f[Z*ףNéNSav8DeN3Wi+p'[~:hTS"zFeƓ$q!t%n[_5bWq<ئ%,%6эa =3T7%5KerhtcҪv_fLr¯aߥ~ w ZQ:jX==t ̃)3Qܣ4ްXfm9R6^1XJG{Q9Wr'rPњ TC֬Üs\!z⦊%kt*yK|f:T,;s,g%mnf%&αv3YQ%' YӨoae̾K3\kZp"܁pe4|LC?5WK36 =[ſY٭&k~Ҳ 5<*wJ(h]j#Hkb) Dk!FiiŴ^:ik6_N<%Ȯqj\s;tRĂDFnv<] »ĸ /p!k B$sz3f!h$ QύGwTpJ$=0 !y~Awh_u-d7X BKuq?<揥\zwx S*#)I[1y[XIYdz@d,p)tȉƿNp +vgV*YrMvRNA{ /?7ũa7@[?'ͽ^%/"jZ`s ?) 迷m;Q:2Ba?j my./}J73H{Zs"',E6 ӵ=%Nh!L~N]$# B~9clׁh0fGl+5ayqZWʉcs'<?,Y)h6[0eJ=sbdRa#G\ jڋR)Fy,E ]v#H`KHi!]ø ٵ.'_Ӯ A#jBI+eM6Oq\<ƬzJg: #<h=;a&3XY2TOʜfȨ)Fi(L?5D&Z[8&9BkYn~!BzLTO|قvpFǍY!w. C`g5cpq AydjE} }'uL8M"p0# v86.'z!w`ƛ?[=d@!׌SJ+YnL~!0S:.[##H05"re/@ W2  IDATmu ֘pcΊpR&,Ǵf㕠.r@68]`p!nӜ/fsK!`{mh89I$, 1aZE\ $ܧXtoB sG>4.CeZ+`3xƓ!Uk& Y~lF 1ʋR%V̳>D SBy+%d:fBFmƿ6K= &w܍ċ0P\ OnMXe鵮x"\v E9KչMM˴r0V4UdTرʭb{Ǩ}ǟ=d2)f^xP>f4H09NO+B l"̏{uX,xbtv2Z< *zo& PvV*yi(Hȗži0;8o8S猟]Xav*ر.Ngڪr.-ɉpI7:fdr'q˃H1 UڌC?{-<)1L}[J-O:$P{ywE bh,#ҽA r{aZmKr9Q'4)q3kP ץFPGWj =U#p6-n uS]jġsr`{.6ҴBlV{lUz0~׆ȊEVB4YWNr)i¼\t2 /B'0os텇k;t GN+J0F^24^1^ ΌYX|fi\RABAI/rQ.G,֏smgi\Ӭ/2Դ jF:Ʃt̍(깿"q<.ظlv1(RD$"y%DN5PI68.H;xw _pw8+ ρՓk\4guõ;AYBdI=Nmx-dnEMZ@3*򞵞5uP̐ی4ĤzlƵ8rD&`ڤbp:*3\ZS.s?oxЏS0ݔEZG4a9w7wq$Rˋ"{4++xm_r9Lԑu5"ٝ>dGM6{![S7g~%gp$_Kqˠgl$@P6#FйQPmƖ(m0-U|p~OjCZs ZU9SYn|CJ4RfƁW ]:Ϩַ*ץQF2ʼnZ!վcaO? {|7a@ \Zb$OfUL-XV?{vk{8 @$;tiJ\Q+t&ؘ<x=tnpLX PO)K7N0H(Amee@AAv8`~ }#,TN.y'4kY6лLWjsV^`^BJjy{@NvCDYNuۣ5c_ѫcfUm0~rǖ SdoNaYbO%*nMǰ n8{UO]0́d)T_ba/k01$g#t7P,-@RaKu=Bwm BQHQɰ#g4KMƶY٪iP \aԎJʣZ;0@;oCN v5?H<0xxnh*<~=^ =>Wbޭv@NPԃ 8]?;qrav3uQ1Y G&I!k$ NE]os7%E"qSDiVTi4yA蝣ckgsB]j5un\xx@EM.=.y\M==x>Si:4 9rJh7gpZNK?)LB F!DsXЌ>|s.0z{FxƁ09|C0k̦(:^R"O1&w7m E/nx(x$7Jӏ^2 2 z$Dj?!?59vG'(z**`>I Hrw.X֢|buLG>n彯j}AMC`3nju2B8g9wr}kGQq>{0\#4p V9 2K;3π3Snk@U9L`n_d$ kV2k/#<0_ѭH0I&ύX1ފ|-kzu=H&ң3vr"g 0O,nw71I71D'.0c%0xݪznqo}Gj3%1M][P |Ȱ*90Ja(rf|r9˚eVuݥ]հpdu?4"8/DK0-zo4XAZ:[Q qH>_YM [z~=&xӊ iߣRa:2`Z Z0lR}?oAnV^޲j|n+r [sT9;%yӭK0KϯkDH6HN) Nb}im IN(I0K9˫ߵQ׌Er9[9[R/;*&{*wtWdiG_0*+xMf'{W䚋A#99qc˒R {j. kKIM\%\T)?-,ǁBCc}ۙQt"k1eENʛɘ8Ds!R%|_h@45ʘ˔Dz وnAɝFGZɹx<`3&H~ϾQZQQjv 3UiX nԄ5).u딀4FL\^>~8ӧx`R5y msc<]vU ԫ'k4SxlM.br.U)ASKPϥ'礯Ĺlh V:]7׀sDnCǩfaMZ#\B _n/-7w{ )FO1L a^͊0_GuШLOl80DŽ-H^T.ԋ\fD/umYr0f)$ʧ.} ߥ =JNVavd2t_bj‚6kZL5wWBO]7vr-EV^vVޖr%'wl9]j 7dzC. srw&Yfmz˂z.(>;XPKw`j#'S&e. 9@[*sIirFZbXM="Q DXNP63@#aFԮ VzJ;KH 4kmjCs 2bty`Bˈ n:P67o},kHfnA=EP?Y32Ys=\\™XL8x$Vʣt|{m:3fa:75@CDı{tKX=Ŭ3\nʯԬT6F qI2u7 }eyɌ%H^R>'̫ &swrHfu8f ,q'HF&bn+K:ڳzYl+rNIv׀kȹEw^Nn8kݟ!%JRkJ{JKR!s*ܒkzIX[1q&eccek70Q; z@nD ?+Y[^kUoL w);*2pO0P {ힰ8s+>A$bxyiRu\h+dN&n\n`.BOٸՔ8Uͦ}[s]ƴJeJ^&% R.!j"NvlGp| $,HiSFQʎsBye9%>aϖd,@o<=fVs-\076S*׊dbqȭ9'-φp}3v[̱Rqz (Sy\8%n){[)g4pxݻC0YA1PX \TǃM9RG".1:8;9Z!h r9'V,1zf:/ˆD'gnz(lV8>@՘8u4%ȿ'J30T25wO|dIR rm@Ͼ{D}LT JcZ.2^)78gﱓH벦M]ȏVfDP\aӔ%D225NeS+R2[{i)i@Ʌ'n{}9\t3 { ZmdPhȅ%6Yis%*Tj{%X'"vJt-j+S20ź0/ B~l'f*fCt:\ +"a u;q.өݿU`('lr4I͕w7{.D撚ց4w5xw5P%lX?|8sT)֛:H\-i==$<`e=Q C&?!oC)1zUz4, i8:I'Rha`^jd7;؃giq$&|2TʘduO:p2琥G+[cܼb<7.`^, !@nEDC<  s+1OC&3rךք)Ouí:û`0b\4 ׈:j:>c~-twHL::z3~9R4/ɍIB&qegNTөtb <)30ȁv 3>:fí$@COM2eRN?k 5Z*X3A.,@Q lSf hz|(dIYX-mps׏ιvh!Z]손>K_V~1П/z׼o>s#-pF?ڒJy:6\9 #F_0:z"hRHS'%g&`n!ԽW e1Uֹak+ *ѻx{>\? '@MCil7t ?@9"p| 9to#tĠ VRX=$@1H9Nwof `a߄_dzX|miG]V&* bm b-uIQ}yq`w=C=WŅpm1﷏[_4n_炜1@p tU땚{c(agR‰6X1m폱c/^c+@n/Bo܉J7ikYCҼRk_fb'LQISbN@s*&NOJ甯xZ0o'C&iYs!e%݇z~w͇cOshunJޮk}!п Z`[Dh ].;lb2kL-c'OOZ}S[$c0戹ܱt%Bi8g| ꌟVə*HX۔E&CSx9mǵF"0wq`Q)p?]s{ vjӸe4rQ&Ik >.Gu{I!D1 = ^bQ>8}5CԱJik4 ,U˰N, `yiR'Bp V]W$ΰpIg85 5VDf24I r {V:z> s=<9M:^ csF˷XoyS=f/iˌ C"$9Z>` #$,ŷ`,mŮ+ۑ%DF:R05ExS@bmrxL"'.0p@`TԘِ>k3$" +B`F%38!Zsj Nq̈́S* \r#TBUd?Lp1q1nDNCJvU5ǒ%2r^tLv>8ԹH@ ? n]0wؼT?=$Q#ȟ>#掙=`0xRk%S ec s (C"d r"Z̏q33e}/B{/ةTYr ^M3'YK8;N۫}؋{G|.ERJ'1>_ioX ]~`ʒԹΡ 0<{0Q8"ր[Ѐs-,jv;IN?gcssVD{u17, 0^ |\p%rCHGbrq+?1k=ǜQg4|NEbhF[0mC}v"su+rk9vmWcw1^7RK{j@̀ "7`G晽g?~t'Aixd@Rϙ&lռg.TڴWfj``J笃bQ<,u/r^b] IDATF+ mPL326S,^.ܴiLq*2Lg b1-aҌ0BZ*mn~+Ar"( fsxVxs5Xl`0B3*n/] ;KFHJW8߈sO(JP,H~A3Q&I/0J~-ڴ]]hN&S \*Ϸ6H8X,! dR9Ʃ/V2rx\8\_nXzxߩP=ͽWU14މľtbO'n>)SFׂ3s҃`D"* e>OF;DyPWd:}3O\ls"D>b<4Tnv%dunrxYT\e.ifEZBsi߹Wlv/AI=VC}X)")YR!%;rT5NU5nDRF;&J\g/BxsyNw*9u܅?MؐݑaYꢒ,+_!PԔl2J0Lc^+J<@%Vy{ `^zzϤd>S{16@ s]K]OQe"żeӂ\GAm;:v^(h7o/c؈aAl1 еf-~A3Ŧi25׫n7XP+4V^Kp^?]J$gGq)LٿYGU{ZlTT 9z\ފ Tj^ SH֛UѧX'1++@|d?A\,xw"ԗcwwi굽ҟ;huKFnTp]am=Z#$L?`^,jKo^:TDV9C"j!|f]0T~͚ Vy6n6إW2U Z:|(2^d׎9-NZטvu,e\uh~v%9Iyh:pPaONݕ9pnϕ FrW"=\r!wHwY3r)>J?])[#98tSߩ5v=FNFu>3n_f=Z`1&bvRS'ilt( dMD8\Ԅa˜Yr.DLL 9PB5v*s4#(y6c9E h;2-l7^wF@WQ䁿qO5$$%8!kv~].uM!e Wm Sn4K%Z0$ D~T90;$ cs+G8$")'aވw*+SM$=hQ -˅$Ch v6Iw%1~E1Xl1gK -7VОwߩ@%m)){|"pm ߶7t[г#t-LHk@Phƙ 1S[:ȾZ׃s!]E"@j6v!0JI\dN 1I %?Bc I1I @KNr5'Zb۽cd)>ݙ?r*)}dȩ@c2s-tQt~on5 Yy:X=c2:Y&S颹TQIfJA{rX VFl 7XhRK#lhԩBJlЭҐn."C|{]3Z+]˲~d8/1IKF͒)SX'UԜGVSnf$J Jg.n t }I ѧ薱:Ycw:b5Xt/%)5 P<9AרAP *)ƮyF]kbao1RE֔[s+ /TjеpsmC36z`zV0Vyb@XJ?HB?2fil4ˌ%ZtُxXBeN΋E#}Hf-ɜap@ (Բb CYnSe:r\n#&RM6~[7ne&k37MnUF{43Ec:aꆑSQI _N"H$߽d2k[cd {닅1?L`89M VjY &/}LdAHz_U?D|1l͠W"tmD.Y&}rcBD+98*rV^!pnو6nyn-6# vv[XRYsxJ* ,NT(@t 5{ 9BfP*?1s 4IҼJD<(>uBZX%9Es;.#`.uPi6'BPL9qX{-\ 9uF LbV靲Tl8qJ怾bH/4^2V{9"/]Ȯ Y."k|(uL//^Lipfh#.'m{d[6ѕ(-Ѥ.)uD|6z&D ҃X=Hʛ/Xw0ۗ-! L{=R8)da@!f"z\Oh +{psbk[7YllԠ]ۀ~gs%lu\[J&{,ef.>!#keg/^L(o5rH@ߔ8! KsXʏ[Kk![dQ-~SYgNͺc[,?YFpo} <7Z|i4iU,]NiÒF0A9 ޷ʖER[7.wu&X5eCp5ِa{:ߡSnhLgeC470́il3=4T%) ,spY)J7n=FNli;hz޲~U]vݒ2Là9j[Msq<}&[c1[3J+X9SRojV%KŤB_X}3j>o+;%b=Cu{je2f%6q`r). А\ v!Ejir,*',.t*O+*p_ 8UeYg3cn^%" l\?wqn>'#- 1+1 #6;%T/Lk#K~ps,Rad*rnҥK=W*v t%[]*Q@w֒,??Z;bčƇ'B\8m=Fէ6F#7xԔ|r]e1,h`gw^**ޜ 5:yAzj,U8C1e3R8Vstg2vɐy>W̔>lH2JsdǍ@=(ʂХ%gGB7qs:7j =Ȱ\{Ȉe;ˤ* eE>'-n2Ҩ)H~=\`Gi2 Ňtk"=zl:{nL3n5 Mۄ}Xnax7HuJا&rv6BNhźw LR|:/l~]]20DSC+evکBKංk9\wBxH<ƃTuCspTŅv ]3Δ, m*CtB=`cSgx-M@ˆ8; ͹%#GZRy)ܝ=J6d莎eOjkO2.9Hn!d9Yqj-B=h&tV,k @f!c̕,B`g;YrZ+R'ҌlC'V'.9,V)<Pl{fOѭ}yM-BTϒ<8`c^.o&4"T] uAl Hs!coD|xDf2buFr.Pnn);j}V'vNVḺ>/E{n]iS!7H]LkSDחԇ#Ŏ+7llֹ:춞46zL67 Z]8dŊp܃riF6&@w+mnm9XwЭlEX$#t6ΨƙiܑhlzfQEAlg7n6Aô9CDߜyvJ"t BGk?k_g䂹3c;ҀP\wiɐ>H!3C&,2̤ɱ]# m#g[KwX0M|tA7Qq,F@F0> @Lׇsʮ%74׌փDg_Gf6V" 8.sM +nB tݙ;QNoX@NLjYDc̸JV1,='\ @1܇'k Aq^Sl=|'jO6ʉ~X6mKÌ>dq҈$j;,hK37ZWa|Kd V5/D.Ymj`eKmNUYҗ]`lg3uJldpks3-{=9e:,I7,wH }d/gSZH p zXb[Own[_tQ04{:-j#4_\_bnzq+جQ)F3,}Ꟛ=j]T|ΥZdˡLnH|xYW-tZ{'Bۨ˞ :w&@՗FR)!N1LdSH˽nYٰ LsXަ`ג®t`ztC^Z*\C>FR0"\X3JFM܆V yE^G֚yꡛް 9,C𔡲߁nB]?NdAEHמ`S'B5 uS 2e< χ^2 KOН)[ZIvd Ch}ˌ L:S8ޤɂ3>D@yaQoJ` 99s~>7ݱ7ea9<(s4r~%C|4% 4cl[a) `6=1f=,2(%ˈkTb(2Ҿ7l+@sXY+~ߥx3z.Bsbr}S+GB\^8ڗ$gX7g+2M`Xe(9zE=z)\" }4V/~ه`Y5LsXަ sI;Wc.<>0ʾU\ȮeaI  IDATOm#'y@1x%e`+bl!4@9a@sX2 OĀ/`F)2>!,,=-F2dBжooNl0,gIPgj_U, y/p˛V*sޟDHW2CZ}szRNŎ[ql/'@j9,=@ ߓKlUXK{x/'hMN}}P4?80.C>6y]42%|IH7W._kόrB,>Pz4]RCL1TWyXcfbkJ V*江}>`h@@ )s!mI;dNSVT9r# } K/Y4c,a}ʞmZ{Xthb\Q?o@I**S`&r1c`2Fly]0?| eDb.uP Lm=vvcbD G4t}d%a-0;%JCR΅3Oᖶoq+Iޠ~yj@CI0d8Þra|(,NeM"J9 &Jl"ٷn-e{zbR!q] KmA33;͑s漣u\ I$mPCKi-`*i׼a@:Ⱦ< 9QJ_Bbff-}R˖ C7@8& sr3,A1%`C K6kMtJ{%ʳZ:r߉KV."@J#йQrlr2*r=20Ǧ0% {ӒAO3Yɞ*C*5ͅ?M1#,FD()BCm PsJbOɇfVz)2י<')߹}1B]RΟn )hJϒQJD(}s@y0ixK~Jܹ=&lr/T+ Vhۖ+/q'ңX=%0ZsCl 1,ɐ7nJBzRWXD ]Fhkb*;%9$WW@SH-ԁpCЃf_P)BqM0D*%ɔ@2\uo9c3f{%m%FA"zB%P.̖S=m͇8܍Ap:~JU'tr74uiABRƀ.Сcb)s. ޥt} z'}clNT2eQ,T Ω6@)Y0\`F%RbNRwj]@YR/vChK`sy43c4e|31|AKCrΰ;"קc/!a6sa2G#Ɛ8"9ĴĜM[>"E6CIw h1PHqw.\םFH?$EQw_aQ>Ҭ_ =9g \Bn(aGlLd""̑{H︥zeYRZOw{Sm^Az$ ȍ0@ݕ :Q׽UNZ֑ Aw㮯XYRd*֚ۧMkr,3!hVN79@Nas' &rч@d '.aYD~_*V*DHkn$΋O3@bzԹ!N>1}d ȀF r_ 6 ߒ-QJm(1'w49FK4X17v"2F{ ̂*f09f05ڑ*쏅)m8&q븉}e#31Z'=>+GJeY@SA>{۶@t;iM *2iMhZ'@t2KG1_0!; 2  ͠DձcwfǷĵ˖$&' f)1IX}zccessR']`Q9 / cK& .m&M25U ]5DO>v2\^6a=vnlk*3 6``Z}j bYiAь^'S}T}}.qk[ul""2eC9ND\3LrfڞD }:9-M \ 1fJƐI}<2~U:t`}`׶kUvʮ0AADȒ0m20pv~|]k4}կ:9~#$nJ.q s<~o\ʱ.lf{%ax{vݢq'rBiSlM58/>ZU3on9ɶ9d3 Gf0w@&?kg&™kVT!yh%<68X9Ӓ~EFgE.1[\"R1ͭY5*3旐.+IEq1-@Ǧh$#`r27뮙M,$X)LLE2¹/v\ozeǿ̿NJ;?>C>՟(CYj.KA.稔3k.{|ͷ@,PF8nxƊse,$7M(kU2DêۿR g̵M89HjzO `ϫ,MLOtܜ.#06 D*`\3l* )7;|J<.QG$T7}1=ij]q8޿\v~s33}tߩ~31`?qs*KB;S5S=2U_ѯ9].r;_=&d2Y><6s iXAٜ 9[^&4S۰a2T<2_zzJXhJ$j:+R츩4vK?7ӛ,qW`b!lD$C zM@j~??bT)u.n+!JΔ1I*SS;PfX2EB$8(BX {7jF{4•h/{61صE!xߤ UUE26syJkLe (S-@1ՓOS=l6H#CrZCy)Q,{/PPfpGGfm[I{,o輞qU_:^~G]]Z669ês iƘPCl?Z.1 eL>19 j􏩪w4-_m|-Hu ׁxO/=*1gfOy̭ٽd8Z錠P+b cfJ5r•T;x;?3Ԟ܂[l(C`RMYe,٣(Iӿ&XOkm4f9C5Zgk߰۷4ʒ>ȒpT_i?Cm9S 1M2 ؈h $'.L/]`54s#4'ogG`.,s:NuxإNPv\^BR?8C0mg(;]0o*zF_~͎>\i!3 ?sIUtcm(Sf c-r>nQi0K=5(Ux g-fړp;`, i C1c Zٗef ㌁^Hc 4!` .<;F{d(^@)4DC~dʚ x3̻m( R1Ď+넟?dBTQl"YRy_e>K%u0 ~w 1ρ9fWN5, 4GT e-Re4P$Jx0%wsYRهiZ[\ WYqk&6u?;ͬ ~Q_&p3g=. @`R--­)5:M- S{.}T_'yjYضE3?EeH79GцMc:l׀>"iCxƒ=!JiN)ϕ-3e[OL5³ccs9:ss*L\)Q.S9DLDfd\*da?:-y# . 4u8>?\[ u>6a= ddXTIP i$=V4k)xfz0 =% BF3T)v5|R)`ݠY:$yTbQjWDSs_*2xG2|qnM0WQ9y,S3Bhd0SaBC%t!`eRKe(kkz 48\=$2#6 HUKѫ^jf*C\^Y#&tɡ4flzI(K3j"47:fudg~] ބ>֢YαgʔN Z>(uM~=ybp['1'ϣ_B;4ss `z]~rwǫ3IY.<̓,ԡLrO&hS_p:9|⹿lFΆ5` {9&}B̈cL& `Ʋ2 C!{vW*ZD,tbeo\%by0g11`kxN X"7sT:OA|*o>"45ޥR=;v"dqfʠ.3ͻ͔\Wxe dZ'Uo323?נѺYbyC~)>|=?MxT$gW> ha_r"_s9L0N=Lc@%Lipymp9<:o⥆. \XJ<;Mk.`vMRgE>Xw >GYTxA`&JPq/46[)XΠh6<3hM- 1uԄCdr=Kğ4S,2;sC\ |1fYs3;Yn [B:ZО >4`σe64,}ւqZetx2Z`@`)g`@qv)b`g3 .Tx9Kh.z1`Le lC'9di6⃌F ݒr 4ST]pAr$ zG OѪ(i#̾6魕fH{٥gϔ` KRK{uxcuBm/Z@0˗:v0$Ii0ٟaK S2* >+Vc2Ngk;s6.8pK0z%)c&A3tg05KXj*\ pc?^.|9|槄LmhΎoYHL,5Xbu4d4 q: >0[Ƹ>>vh 9E;vd 4z%<=Z[&d""<gapg0RK )[4x2 PT]SbC4* bT8q=RafMNK2!5+x˫>ڿPG$%mN/O:f2f(IR_`EJ81[Z\S. fԉ7adI2gZ9GymnjGhu ) 3TN7Yαbw{?a'oF3I35n#VH=8ߪLmΑ-Y&z b 3np=N%L,h?:x=?ex.ZZ'Ur͝y>ǃh4IS<2Cpbj^h,>ayD$J ةhʐȹP*UJ xR UDI8 %8˦ 9q GuI\<9L>ϖ\5r~ႤN C^ZMK# { Hq.JpKtTXDftK&{o:/jmM"[ǰWEYJ2;./e(..=`sxuygUϷ9Xڃxؑ(%gt|(Xk,YŊ8ck#-5EaܶsaQt2CP1\!B -0Zǒ79): ʑ.R=FlYxJp!PR&o> oxk;a\HSo L)1]9_z|o꓿2'pŒ Ddö 4'GzLy*+1LѥD[LJMl[kACOn [ (^&B \BX'=HSp{(eR-bA\12U'"34I4!,dGxm)\Hh)i.̵{=L.Ҡ,e`*Pg7U"usE3;=p_SOx 1L.'I0#zt &{[XgL5"JH71 vGH)c \u\MB5$p n1 ܘrdiPq&͚z޿;v~L]{&@b$}mg#(a1TZFS * ^]~ ]396,粰\vLM =`pMisj~`at%K10$JBso5_u6=_*8X=6UΥ1 PuS45.x K~J?cV``4%TGXYir| A 4ZO >#6K@tƐp;{4(`:mV/ڿ:^|h.D=Vfj/,Փ2p]WsDjף8iYc%hH+8a=tBF4&BWSUx%23H&v^͎W#wm&n)qmd sxߢ c=:G~,xWjڸubi"_`X0nseg>΁QZ(mCd5`U?&%\e28aDf9;yeH$u`IVlOGSnv:%c:CQZ :fߛjzv~U+.G2vc%kVYbr8 !#6b$\rIXo~=dq]/*?Sa\+&XO(#["CsW[,-7n[cu XyÜ430^a?O_! ?J%6I2-D `WnF+)131&Zq@)Ӡmj\%iMW\;E(^EC-56SŅd'?˳vVZ3%Ki{=G&kLxWNLs I<Bv޳GnM._ 7wu .WgwV5䏞R'|\nԀrk-xĊvؽ0Id9_1;|[Z|’ܫ59ݛ %_,3N 밸 {DtDtӡac"wW]vX8bLߠ-4gp9; 1sF%3ޖz2 PT2(}0bUc{~L8eONk2%FZ uxEMfTe\7Ç-.992S^,t9aw%n)jeZM}tLCuHڧ;>1):_g`a H)C-$ue\1gudw@j'HTs("Z#Kp(W+!tA9 vKbV*7x΅m^ġ].ОO,SQ"%Ӕr.^eEr]pmEku|Ԏ6;$sVst->I_HZ˄Xwyf$Bq& ƫl1v2k~lu Wl2LxR]6j[(Q&bz.TWJohq* |*(W 6L.?qc_@fS, ?t׬)W]O*3W0XR`)__mg:<'Qz{/o۔#34F\M'<[M>ko OpdKmƦUWX){lf h﯉H;s7뽃7:]': Ô5u(6n׳Merd->hqٱN/&BnIEC߅ç fCckB W h\'JcpDxoC&T#I4 EuG \ Al=&zϑ7'EĮ)̕Z:SѰA-e5T)ͲuŲH;ɰ*7L?2ݻ裁/-1BXGiaScv2ʩ~`->2oqEz9BI%UpxV_Rb,cJeKܜ`=ǸCv *,P`&wmu9ҷVu8yAtF5=sYVə GXɼ#O1i\.9 mAb/MȻI$\գ THN 8vhgT$(%FHri3ZLy-oT|[d=l|D/7)&YBLY)UczjlO pvm'YK )J& <]M36J#Wx{4 e3zJHS#*.읤QuɃūDu%DǶKG1>ZF^i?Lk-sy[:,o 84fα;\^ypQ[|b1y",+fk?ŮMz$^PN lSd"O &6 sc!nKfC?}?F[n'vk)(1iTXj:,fWSꘚiZl}KӾ(NԱWA/cAȂS=&cL\L63Mr3&þ=U71s,#-v8LFͲT `nV{~-N[ (k}΅\2Ii>sQ! MYW YsWG{~iE;Lh[b$TX'F1HvyDV,لTR.[6Z|GJ7 ]|)CH==g锰˵j,$nph Fi@zhk5J&  ].$)}25b6,^w {Uţ LYqBM 22샰[Y I!g3Q^\YArqr *J!M@QNs0 w3/?g{)[s<]kĜZ%Xj2uX4 s?lշdD#v?WX!N門 6լ4brf'4鬥$$7 xk #q>RK$d*,r*s%NȌ9 uG(%cH8\ ǻO҇3wPۑ)1wYٻ2&wSvYَQ85J<ǿGzd;Z'NZ֫wUzuGv!iϋ1Pdj}S Xh \/jIMbn7ODZ^w I=%04M2AYG,Z* P,ZU$2iwu"RT"IGRr~Р5' e"ڞZ nq q䑿ː\ã K^hhUNę063c j0^!N9}=άZVԨ f\ǂ q=[>52.Ycl E!tҁzhh,q1zckS,vcm2,Sha>| \m`3rV,3HnǼOHZ.3[ I^^d 7ȯ[֯q?v >K;966azz_S:^>sV&wxX3d>[a4fpmnHqF{xqxLtQ^n5ak_Fߣp/l犨cIPy~>R@i{,}좺Eoū䇬Vj"όpaC}IP=ϛK7"IaDa|!F[p&Q!#naFbNPjkO]3`؊r.13\2J]CyB[\H+GX'v,SOV#h(0ӇdP3rGGB Z*S1H$y@30 e vn1DjNs25&7_0^ ܮ: [,>E"?:#ǭZk;#,|)x[!}o>%K#x]}2!pL_JsReFc$) o٤m#/1! e칢s6A'iq7!1P]jsy-#_K4q\6 ?QO3+d5{1o$˴ IDATaԉ)@2#9?bZgcm sj!r* Y{.&ai1u܍}YkKBۙ,bLe?2/rv`fӊէ#t{/UR(ogJ焚/T{Gp ws&E"qrܗɂ&h1і2DeD`JHrVYnT|Ƙ2sݽspʔfݰ\g}RȃK)@w0eG*::4W7%_7".9!;ocr%)0Dub9;gZxo S7}ϑmp28B*-FO >ʍsM,y]#?]M٥XwdъE)-9uq͘xUϛÌ8t51=2ALRCdK'3 cFړOv+zupmn&Z $}y,&uf<:\tzKkh:__cEd6}k1Kc)eK c ϐm%](.6AD<*{j< S"eQNMh25XTdXmCzeT$v.* }0"Iv{ U4I]O~F "vUh i4cR SRLsx2`̈́_5:RzbiDӋiQZƂm VzǤkJrysxw7H(0,R~/V+Yȩ6U3ĖPYR,yd.DO#sR L#t9&Ϭ/~g¦ ,:f|k' ,~]*$Lvص>ߞtR?(5xq ̌ZKqScjT-_%$u{مO3lKfΝaG,Yg2?&Ʒ nBI> WIj*WQfzz:5VF];eĘդd }21{Xi!mԃMshtx2!/#vvdۤLa!R:x+pubL–EtKQy@qfŗ`ejx.!u\򤤌)hӷܜȍ%JKFK,|-$6r^`2FZ:}OIe "JV ,,!~1k\Ȟ͞/Aʈ9 <%2 o/?qhFx*^D Y*: AT3LczI C@s b5dwnLEIO|#'Kc%Zcɨߒ툁q*Vr 7V%zL'|!1.X; mF`c1 ;jrx[c3^!V3. hBm|HLħFoB䲠*X.^{/0w }2 -rv"f4uK]Opsxe8uVA ߐn&D, %1#>YLFxU 5D,nBdv=:6XP)l> K56F)`cK M" seGJMaH˅jgR֨kfʸ} K9٭ˌ*4g-f1ɰ\L bvu5yш#dƟ`cgwsLyz5,0R`D]05[mo4lg b`DP:=:|?욋`)SF ^bn9r)B5(wI$pb^sx3_\y7a#H(Qu,[#˞s9DIBbyuwUe!Vōd5(M4_זEMYۻY@3/B O'b_' Um3-0t`/*.*ڥ7߬1EPz/(VXbQj5J A=YFcTXi)pw\<%JƘ b%N(HEgnKƮ`Z]}5c]UR)'2\@Ķk8\{c eu)tEYCl֋7]| mDϺjyw}58ZNV! ڙ7Wg 9Ysd6l.NKLMsJ@hԾ9M?ƀQ[L,s 6Takt_H9<]+e(`z;^# Ms%}`z n7ǛemY,V/e/S䥻M]'~&<)e E9SSCD)')I-e#†=>b/1h(@1/VCUw3cG}iI rM"D΄9~z)NժќOkVnuu0YQH(r~N9sS90 8)ˌxg<3= bby>\]d+b,qPJ}yb]3GYmspXh{ԋZ}=.%'bZ"B~jes\_~ s J0%N3P9ԩ;f'iʧL$ erkk:hc1;6d>sۑk-ϚzyH y;0|r{ mi~i!Z_¯fJǩcFCuZ _C3~.XVZ(E.f fqxލT)B 7w@IDk-jWPK< ~jJf25["=K06;w͍;/gvo}/ hS,''igxޏaߣHQ0ӯffdRKĞZ&u[ ѱ!6 ߹`"/v l&#|ȿF.Mq2Ĩ+BXl&jsݢ1$kjOϩi~@$.>Yy@Nyz()5W3V_J /H,wE 8"]Ẃ5O(B7YG d̆A%3NAZV&n$slc02y) ʮF OTZ53hQY=?WS1)l)ՆĒh4k,ML"o& W˙{XǴ "Q7*µ)fZĖ,=3S@cu'ޮᏩR~]0>ץ475<@rd'"Zhu}u ޅ c^H֊f:xXYyp^gE'`WPhPst_ |&Zt4穹̒ Fe !XѮ̎IS3 ܅'6p h|%)}3L*c)I+g?vqB;SOs<G3̭ |I]Rsצ9$>Js@D5dV/x''h$/\ڏk՝0V!,w)NJ9>`ZP>cұ]0@4Kj)})DwM䯉c8P!3v`$y\V*CQmw`'h613\sBu.S΍\Hts N' '<9_ùFI2@IkqVَ 3n1+x?#F m񘴽HKaX彧$8bd%i . +| k\VJܒcC4'́54`0p:RofUjQN yD*v3BN\PW@:ACa7յ =뇰@F0?,)ID8cƙY ȋWx05QQ510=e #7ΪhA4 hYZPQ8+zS2l#mKwA,n7%h"5:V"HC&tD$Ztn05g, t@vm,J)D=5~<30.G&뵙J{D[VTD99‹^_G?/Kkm>$]NDq3&V 0]:djy02XHm#{6dRy^)\/ SWaN2Dt9kߒk13|'7<ɓ0\|)$"EP5^M4}gZ}̵dK}jZzx.. H)sr2ų Y'i%hW-X$Ur9sТV5|w=]'pM]xn,n.jUWY"9-PoT4(_MBۤ\8lTmyVJO.@vpxx]5ϥ֢*t"y (w D.fiD+| npymF̌+,qt$ WSA߅Ӻm/rXnȜ9\ 2ZJ35{hvnLra۬8VL^#IB\ Ga~c^<"C*b QF9 88k6 4 PgTp3"4D? V2\$-=8"TP""$e22y ,k"Z ZDj*޺6KHRr=ArkROΠR\"u-RcRupOd.5)uD<mNfr4*%h`+'i*mrYyIT|{CQIw6ܽ?#rهv3 r"pƄВE@e pGMXZ tOZuIN?f&03($EL*3;TJiʍ?CSt w ' 8[TcD\)GҿҽH%L =427R6TKs8W2MTD_s+XXy' Mpe2 paD9KwR0 x Nִ:g߫jDŽ6(Sp5]M3M ]@j1JrJMuZ7玧vC "fNrOCy(qnXO╨b"%{ 5ʙ^N~܌u⟯W5Av3j $$嘫JEq%'e)%r_c8gfI"Ћ뒀YMwXр2(zQc{RnF9jVOEZp{e2 [%G\T'cLŘYhEkUU;a3'\WT00)Eqr̕B2b*%O98%AF*T3xMoG#VƩ.[\sj)pԭPYNqAc/UsfĵFKZn3=bn.ϪLMFz]EâWE+|33\a4aGk;79#xMP'i8%0'7H]" !kma,6g]yݗ :*uHmH5|/XL>71#xeZ|})nrA2'f0.\:/)tg`qɑWdE.D j*Jvn)['2@O7@2'T91ygP*QdrF3Sd׫F-'p4PzQK9?)z|jj#s8uql?lO@9)^2&2I4@u%#w" i7hMɭNa=߬,K4g.J"iF} ̎h_p#8 )bQnnZb i=t)烜8*%"U!2d5-1"Kr?kk;'=UYiMe7**HSB]qR"Aj&ȷFf^?6#Yo:Ԑ(s߂|YR&SXG4b"j%ZJE?ѕn4fPM&jE5Vq#mqV["1?RrqH0d¤ܗ IDATb^.qqSѨn;"AKw|SpرlH;nNrҚ6YzߧWv`h^JS؊rB).:XFe4>{$Z\b6x5)uPN|d)yL>4^#2VAWh,Tu K7'AA';!+f1f4m1̥+7N " dːZCk\!E%B:S[0]5gyIty-*/@T}q: 20}4^WT-Zgzd5Ky6Mlő'9`A sȭ[jY*8-9f˄iv$iEd0LKD'oy询Z~B^Mmfu6ȒM2fj kMXV 8-&g3ǡhiBڤ4y[AG#4M7UnmiT'v0nw訃 3Ou@*YUkOm :id.nDp^;H)ƒ]GuG.cW{Cf#ucW8OЉcP$L ,[4\ϾPDjދ}BhԄНxT egX'8Q} >{?Qٵ(zʐR@@d@ph"cKjS\)RM^ t@)jpFhG_`G&1HB̌57n3ȹ#(|NEF9c¢t)Ġ^dZ5^) 1u{jD*sf o3/Y^yת*שy;}0w}Bl`'\c*e{qZYj1t=p4Z8SskmRP9GV)?& (ُS+{x &†=~~/yo4m8KC}ѡH9=ݜ"=TyC )>0 \\Hl! Xx诨]:&!/L"qAp-0t֊6/( _W{m6v%+m',Vh*q"%f RɁkjve9*I(:Kf0p#WdFA@6\|bXld.*DrݖG cwz7LDW*aP7VZS%#mO,~.|}NΤ,dc,Šn ~JML]O{Q# ;x6f<89>5ZA>*4L//2 grL1PO5?Kx{< ,3'7.$p76/K} h<Q)OZ(D؇H ԨLS ȩ@svpEc{QEzn u剓“Lݷ`$a+Nd.tZ*ԀK ܦC whTX1=]8̬%`YL)ɉEXg"pdVQbj(˕-RK0[0=EuZbr"7 3 q\O㮡6(QNkW{~Df]W̤g>q]Ƙ8o9$*Dsy=-h06dV3^"u>s6l)4j=txaUhq}91) y#H03B 'FcvdϺ|&txw! x=Ua (ARҙq;ǧڔCw1cI~Tc3)ꊚR75@ z `Ԕ&Ʀ+o([HpD[iZImr%׬}jW v)/\ͦid}ݾ4Q .Y@]ӠSJ E34gD"QH)9G*#Gc:Qy87ff<=4F]1&“a3){NhRhEZ k?5)$JR,'tj\w8iQ'5 \g΅d@l % '+rp7:m#.Q RԤ'~\KrvSTH!J]ӻppZ(ҨԤˈ Ă7xXy)ž1D$P}%wnمɝҵh]TmFticR 1.R|cVhv\Mt[j'- zkhD||=>*Kp3p^`U(ϖ:?bq0|񀹹x*xr&vʫ%G295Bp ܭt^Ka.:4; !?5+pQx=h33CE1Qt0k) p_ʑJkt.wq)g0.'t'5A"֏1'ظLTW{|&!PDb۲g&'E-YtO]-) D}m'.bK>qH@Oij:55e FGO`@jf:W)M6|?gVwIӿ2Ns+:M-py ww$085G>uT=~wt;7~)wKW"2xy\ކ){<e.-25CJ,OĚm aZ}UͰ]- =Y+JGFitMt -2`x k-B-#COi/B{3`jVLʙt Mliu "cKLxrRqjWJj֊,> mޤyp;|~ TʊtTYi|ĴJudǓQ9pVuWG* ]AAIR~S 2B#)TI )KEH%)_ɱ !`j.0!If@tLi6epHtvkLQS z}n7 -.KZ{-]`=1+x$uCv{-UvT\Y"<)6Zj{<}oYQ|ửZaN&|5԰TQr"$gXo$Uyψgyu b#5E}ᩍM; Bf6mgs0ZhRTotwiQ 51_ |#L!xcS<ۤjF|5xgr\ V37$GKgOxddϬé ,SEHk*%ZU5XcLWK+Ӻr]OvLC]pk=Ry?Ye!ql{W&]_ 冔F49Ðת5N yl"7 ?ߦ^:&`X,hrOcE{wx!núſu (Ajfs&ut'RoV)5#j؉>!2=I+Q M^2LB9n#xTVYTt9j%j GE#ǘrnˍ*6S"[y:D^7W5hn]EYzp"\rNsIM߭[9/uljm -ab r?AˇלoTNv:Լmp022yN<9J9U$ u=2w_G tǔ5j̗>d[Hմn`䦙APѱSr9˸F @tEnpV!V,-rqZQSn2ZzeCD q'Uc`*z3WE< 'SnA0jkB% B+@ְ(&I%+Q/6}rv.>I<}+.H}Ddf%f`< 5)P}〇®D4sp7hJZRNTX,USٴ;1v-͐SkZbچ#65Ŷ A\b([Ya@33qKAYjB,fH!=F#퓗sľ{q)Nm ]7S0q 8}c%]BBo>ރsϼ0ހ%487Y>yB,Vt-qD:6OXV&6})2-d_Al4%`{rTSrKՓ@1~#2@7 mpۊ5j3kI *2TyCynRJ!T6N>CI1IFlܯp~+@R0$n])JE9Xub\)w6iEcCا\TYRD-UkS V ~K- Bm4y&DDy PLK{G`#D8Lb A> d>] `,9Q~!k&E^PQ&MCcJfMUȍ>܈ca"3 <~7J k1R*D 3`' `XDHAvIG*8>f62O%HjU4){9:&Jrr^n R\jv$Hern%Oh.`<M2`9~Am ̸zPd.-/IUc6ƀWy0yܨs,p%CBQnMHO8$#j5ra]nF$AA;<{?G|4Ů]SVp"}mF`uwb#80~ > Zu-MUF&K?]#."ڲ"gԜ{ 3N-ASqK*fO@3gC'>9MµO0tOq(5 .aF+T^$Tpsey0J*RbqF}uҠ~B뺂#i'C'|h[(_4)w~J~oN,k1O]8@͈N9g\[ pL}SGmOZY;*}c&%F_Dyl0=8#ia ljtwx3znEy2m%Rv5> <J!ge*h6Y!HB$ ?C '#a@C z*e/=BZvuq"rEQfOK⫉KKkTShhQߤd\spDٍOR:+< ~w c7V66B3尞G_|JV8$[oghwoqKezpW%dfTѳsNSBKHwy1o:1%HViaFÌ/ W渮%uu.+6採M4xNx$@1׃>}=?tP,m\9j:+şA {"˔3椉l,iRmow ,:Uߠ  ~>Ǻ OVil"Mн6Œ50A]>l! vQy ZeFT:&Kʟjf){M&|V TR60~`xC,۬sT+K˵bC n'DD%3s5>'X@5Ճrpgr~N"[!]1bL%}֜NѾF} y_co) ͧhZ++뺃׮;:qm$\:cm,)-?c#<T#-s믴[9_28MZĺ"ȑA\ nnR(r pc[J8)dO] #?5Aqm%!;Bw*wimD$o-cDi1 H1Z| NlǥK@wWc]:*Ղ'ڮo V1zWFzҤz;~;"}LU&Z? +CԤgw"KNfڜ'9 pJ3! h#=& |3fɟlgw-Cϊ~] hd_g9撺οqɃ8{l尰~5[|fS>F֬ZI?/ZwYS[h &rQe4%f}G\f G꺬\'*^!zOtK IDATWk|@TnMM'owR8R=acwNTKq[5IEw(M9f.E_2?Q/=:ͻzN/T3[^OJ(:XZ`E%o; 0XwL&=p)^6}BtyCd|>Pȉ .h3E3Q{L)=Oy!ȩh e627֜m?Vw<yv57qR$M} qAspNE˞jp#Zc.rIyV*TZLNTT+ג%F৓;(Ǫ5Ncf3O2vbO*t!@ 4t )`Y){*_Q=V}ʺsJ[]н#8J>s+V" H6'>YTg] ku >[ IYfu9/=t `fZV C;"9 i4=znHtZC0 0sOۈ; < 7ɂ}q7p]#:6Kj:yjt|+MEkܤFO$=@oy7o'2k:dfa&ȭa/a.P?/AMߝ: /U+9ߒ/2Jz @3Af !A 8C-?G0 mpsjOwj31oާC7jk&B+~ߞe8 Α=8hNpG7JcJڲZ{l+gnVU@E_ȉjft  w|NJLi{~H`(= @`p>)Fߝ]wq&s͙tP۬@p PJ |=2G1k7hE'⾭[1g٭;6/O%ރn4)SF5Zn]ע_|t.^mqDM1<.pϒ3":}祈'گ) pU:|F쩲!x!ɔyvhuS-iFE]ZYm{ %i4KA RKE:g[tm6oɍCMR#)jKC(&Q$x(N4=[sxx bmhsɮ~Cx|C'rVW\"=-p8# 5V}cns~65-:1d f 8xu/.1u-z7hL)7^ 27K' Uى^ĔIp -uUZ T%2܁ule"PWh^x#x5m |'"rDvAE/Z\mZXO'ejR=PZ])(k"7|͑m|vcDgJ>DŽ?5>Ch?V =ӰœȲ/K%P{r{̓`s5V 8Kt`Li!˜T]x (52u9}jR\a{^*ءNȞ8;w'7oQ:xD/N &ܦ2E?4CC0{MRpvri^)19?;Qޱcc\: =4pr$x!K1?.jv[Qh(ar7߾+Dez+KizxLwιW ?uA3uP);DFԩ 4]8UPl<ʝ62=77^S$y X{8{e@^E}'ir:_fL-[,4ɳeDxrVe^<\GNWTN/@p~]{ִ!*ٰɝ D0 hu5ucCS@b:΀fլO G Kq5qG939ͻƒK 2z?wwA nx>@sLҶ]G) ÿq#rs"#3$$̄yaGfJ.)yjO7c?B b\0n+h}?eޓ[5+]GIM!4C^3Ś)'05'Z#ZQudέk]:2$eF[~w/pmzMꌂP!jŏj=ˉN :'Jo@iC (&綴$63 &wrBV%8L)B$ڔEdGs؇k ,D7/~WR: wB &ÁהVh'nF6QaiHp@)#iZA8)wFaO´Mx! Pʳv^>;#׬h2cpD`E{e":[,pI {pۮOF:01=1 |CrP.zo'>ÄGߥ>g$ Sr'qTAĈ{f0rU^.ٜx&s vVJDD-:QEZq9PѠYBԼtdp(N3U&kM]t"o@:wO@t-]X .-I-xf.MimIeWok،\ /ZW͔q+'}8 | ~[|->Z0=Dڈ49daY.= [3.Sq}LZ{]!Rqk+:~.\Q,lR+D,U~@Zko؁"2 ah}% u#o 3Q3~zL(x%(qXx Y{RƒSkEEq/7io w]TT萮G\GSf#E<5:ȁVg路W"%ND2jy4B: f ]9!"s"Ku]ulzGVS-ZJExOUصH9`>s緟'f׀!7 i5wO32N}{4u^x oӱfi:a^\Cpy1MSIEJ$&,~"l6fp΢h_֌mƱQDC<: MZ̒=\ hࡃ.q@! )#N\[$0j60K-nUDŔ(V>q Go Fiz~vtl "a;S+glW.NMfxbrƞKt*ϩ~b:j~LAd>c? ݝ8:K/m؜c9vFҥVBgƛ~?6 6 NEZ-O2)Ԟ=F9|A=(q Ap/IEr+n߉Jة @K_V\4u]OYjyx}`]:~W;EhԊJ <5= Fк!놔T Ujf;>8q܅ԋIzue-b Ú)Dͫ+zA (?njF62+5\RV%x ,Hq%o 7gީRۓW)[)[uɕ2OaסmѮOO797^C0T; B5ѦS0~7pwD {viIf*eF@-M(eNRu9n'M~8GNpP nCS"!œkT=lA|3w+45ȭh 7ƴJra1`TTԚ^zx{x9NiجU YD6DV^ؔXF4. 2,S۾-yd"l;MwcHd 8kE-5>.Dɏw"G ;!섘0}RB/Sl_7),Bo7˭ْ;9 #4$|H ~x]][4k@O +ܤg&S$"ƛ<8e5pB57n#5%4ˀ Wzk$WmAQ qo=\xt@S^ΙHѢkA Ϲz2@=REYR m%R.SIv˞;jW 4{C!$jz˗8ST!̔#<U y ` \qꓤX1*ץ1Q'>)Fj}TN]<0W~K^bf"l.x-6doJP QR[Eً4}D% Tp$WW tUD]*VJ.qJ/͵P[P B,"Nz4l;kgCi-r^8K ߗG : 9;<43>^v;mh/<:5 J}5~Ox_ RZn>6fԞ>~+0eKbkm6"^p$/{CHK^%W-#͚{ CHb>H)ߤěH̓>d]jM$x7jMYe+kV@SWpZe&9 \M$ˆ{%w3 xsx`4!}2SIHg.FO"PЃc(x7}7o IDAT-#>{l`DY+.KjL 0/2 "A+pmCq{ sYn i'z9 ck#== Y#MʤdեnEy^E!b8"SʻJ`ʉg9\:P3 D "c'."\ʾ4R7kp?m0~^+`(H%9e N?rFKF1wkڧݎЃq;7~=ʈ*-Lez,'_ Y nR[(:q$nco) iR^P)yo(S(?sf;H \Zqhԓ*k}2"mC(S&r#xNFx-%[꧆%k>wxxEad4FҠ+=s;_^~LYH/iٺUwP6wfLA:gG^ 3pO@n*6 d fZ)Si*5>hSkR\C.dR/e?}hDRss*.a07vzy!٭ѮZvX26sG |a|9sт lŋZRd$>L9%o1h9܅-r 'acFn |m였{ `옱'<#0> 3/'6TM R)yLXFloq>[ i,˺۰?l$:xjW#FyI4Q vμyi,p]6V*aӑjNawp̵l fOvЮO5]!o4&9m' ߠ>j<` cX{ XMJޞOFG@Ǽpɶ肩(ʹ/|jq/|Ƣ+/ƶHAHG/މ5ty'yA@<7qrm{(D0&BޟjJ˵(#Vf7E~u^6ϧqKD;zAʈ3wi;OΈdL΁NoEU1]:=xR jf4/FJ\JI2a׏/]Ԟ=a:' a^)Fx:/BqHy/9wܩ]UV5+OfׯJ؜]b%k2%) ;‰Bɔb88iէުhz\k{s9rM۠$]OzWajʵaTTq@'9oF{1>RmE28L (lV#W{@Qf_s' Y8&hPw3h/EL T+rސ\_%h"ǔhD^e *(g8u&HP&/ށؗA_`m.bjBB &7rR3iZŕLjqjrp|W1KkC.{0gGny79e׮sN[>Owo;v$cQ@D %/%HA !,B "IXƑ@q_\jns_:u2^ko~c|zviUN$o*87B$dONDi$:-^GdiV Ds,"t4uǐά[g#dF=fnÞ;rޛSR}Gǡ}~Df]gݤFs k+1b70VBp!qX-Pun:ǗiY_SKEg{BȒl4mP `l,5 =ܤ2Y2ᴸ]Đ%I^!$ dҜ؋ۙA]}!Wϩ;%1NlYPt3@Nestԅ"'/0TQlB䨄O}pygawMdª@1Ɣ]>; =5B6t%Bsc(/RY̱GdӵN SvCjJOy$i`j;G,1e0#{krrAG^Dg=u$RSn[wIiU5 ry&L٥/^`\AvIF_`DLs#of r-< b`T&J4uTYup)&b`X* =W/̞݊{ߺz$P~tHU}Qbae)s^c?% ;x_Jt1zd Ã~is4XjQnUf"0Nfe9 z 1wB˔axaiR#+ ".+6a&EX)ͭR#N0WRm9"$fJ,4Q%rYUI%@op¹tp'{s3#tΔY4[ dY8)g%r H$8q?Ջo{%h+ÞHڄ̕xJFdmS`s -g  (}`Z=f is:!̞ǹ8 Жm@hKHu25ZԪe h#eKճ}v:g#l c;bJA3zr ,~|(h8X3Wbp.SGV6kʝȠᅬS۷`!f+d;J >pfZLs]&ٞL1 R%dO^}VFB(8~KpZ<:\ρgnv.<6)IkmI g@ZotΨoN[%7Vhˉ07c>HðP:I bhItTʀ=2tg4c3(3Z"Mbs@!Pd^sr?ۆ=UfW'Uwf-ǒs*ԽX2>Ԗ-e?P-wo M:Y͔6Y4heEZdΥd5]BaS/P YgSGfDTx} -##!KuG6M1F 5 ĉgiψQ/6q.ҼzLdF>;0Ȑ 6hJa˭ WZd/3 )K=_2 +H#0>kF"zE \Qxr}{n7[n69*g9w] OF57?spt8c@4"פj;ͅ3U#3ĈXlչ#N^%՛?czu I*}`\fN}VU* 7*<.0rW3أSj1tgqfs LT\9D,4xB-͘,G(ң?qط8qH1gr@Z`W@$d;N$b T f,bM `ʾs J1OL;+g6osfs>l'r\]`7Q3ӐZ_ {LY=$܂s|['?E6BSl#,mΝr.t'^+:,Þs KVZx[zG(2X4s% 1kH&!"L{vw n+0z8r䪊hՋp8c<Υ|aupovǰ'Q.1^= @w6w؏gWV0ZS)Gj{\oo7̃5TR2Y8YJiP2,CbuLB$4C\y_٬W]Uszh$`<-\ƾ=o8], ?+'eg'. Y/`p 3~{;PߧQ!J s0N2`M(cA-'UR@ZDRJ@.W՜C=%{zMûՊ}ߵjҹYjFb:-Ua}N[luO*k?, ىcE+l LT^F>s썋Bln؇ O*,,#Cd]}@oRðsha 8wJNK ̖S&ͧp3ݖ%w#ybarހ[owytvtm8c#$5M'4N1:*"<}%1G.%%hɾI"WgJLTy=[%hڝu|8xeV]?5D3VX:}}vǻ%Dnz\!x;ztlWi2}=E1wXh,gzn%CA n6x~z3>􃏲='m^ksc\|a6 DK֌MꇺGv}'Hp;hl҃d3Kc( w, 43wdt9 K%3ؽ-"Gd4JV[38cA-g(8?|Anr`Gto>MF<{03V 0U 05NNj?/!9f{OzF-@ [~ogdN&]dX!4POh\Ь 0̆y8 wȑ;4g|~b.~ia@;U'SApyBC Ws 9/-qEi7vZr 9ra,w2kf@Ǽ1HVPu=>&j?La<]aI>_!ӵf!cX1E={1qlRD˃۹x,3h3nw 8֥yDBolz.bƜb42 #z_j^ EmRzg.1)tp  sqxxO.ڣUGOfcJ>f,EjjJ_#n79L.L1S2JtSC`hͅ}/CcߕN$|dF=5\8t)ƒivBF>Q4&b  (2}Ji=Qgkq-63Cfo$b]8y,TgRi˛*I>Y+fǑd74`fXy#,]1VJ䕌oԨW`h`8psu8 G`lq43o+?M`4fSP!k ~ZCͰ9Sz+4ǰW3rƉh]0is'80/Ԣ|HPbY:$t'fQ$"kJƟI{KEdJoGP&y.D-;}Bh>g{ץȒ$)cc艎6Ld(e$ *E(v*t ޛRa;w8 w8qn@r&XI6J03hTa[l7cc|AWKo5EZ[3Z9.BF [ ְ.Y$dz/%D`qy)϶(^g; ٘+̑]F,BJqE"um ĆFKa+C޸L]J5.`"[ 7Zf:yWZԌPuzb8dȃyrpp~6y3~ °_}a 5xZg4a@`$Ć.8fsEU+ l7}u׮k( JGBWrx=;+UHإV=/Ei,q4`ֵ>XxXlC$R@ `)k,t}uL5u)p[;]@c$%2,OM ЩSYT ʉ}ŮUL3\PG7Au }.H0t[}qzWiͧCLMl \ a]G=M:jDjuen;?#߿p.2|e3NM^R4!֟ &C6ْ(_9AqsVl߃qۻq`ZHu=+lp8%gnNʳT,k) M7 ]²9 IDATSx1)aX#\iQFDqHv[Ji9X)礓 )Dב^^:٣gː=p%?v~cGwb 5Bqi#xFGV0XZyNN ar+R2;'<qxo4\xN0Ҧ-eJvq)O 4}6:)V<9$#0̊PYY&T=6 e l#OBo  T؜$FYו0 |xu}r'̭кC2scJuي6qVsSd.i K2wzėr+Z[ M~3I+>1kb"2M؎o('RFXq8> tm|%Jg܌aS.dR+F82#ˏS^o'nkf /=9RbRA2@sq+7H[8u&3x:HR~˕`100z"ϳhDȮB[LM@sZЪL:ԯQ8w8-8N,vDoI)l |lNLpvZ2Q,,Zh0̚ti\ѷ66Zj֟*i%|(hf-gˤ4 WVhw+k5[o:\Bղ3oXdhc 4%:ca|i_G=\9v8;$HꎔJ2,a8 $[#-vI``,Vnt^WG5\VBlKKQ{J/h0i^*M(`2g4caA0B=Kk+!WLS[Ukzɵ'oUꤓK$fvN&@=*쵲lA)dᶜ GF|+_busd^}ۉmp܆Loj`@8Si`2ԉuzhKqrꤕIer2OϗiD)оOL۸qh(F_X *ex4ǰw%~C/tJi )ev F吕c#i)<.LPS8+hd:!w X: Za0zv°2@kcX*$sI<'k `S#[Ck!;zD,ύ`r* y()%/xH# [P%`q:h 4+;ϙUX:fZ_/fBjO93;u&f1 uC[ٻH04ZiᴨU3Nkȋ 6)FwppX f"-[N0ű<8݉ ^/ad`lZ&|"ĨVߒb(^vp^e.JYEC2h+N9z* oxaV` "3kء6mKUxq؈Hc6;%"pjom/`L K̮s3 e6]Õ1%{&|BCLz2C# iIG8N"ԔP5ARG mž3V-57[2K݊c]xXa8>Wf7bBgy_o FՕئ ]w;:kh0iy42b[:F1kN3L!,%`@<6J_p۸YicS vjH̕']b8.n\"TsVN|ƅPpq 9,$}(|!$aЙK^<-@uZ&Dh.W98DbiKd%!\ "/39/h_ Sv45 zVd`fᬦ CubCivBZ 'ӫ d8̥L3όӖ,ccݗ]a8 zb '`pt'آ P,Tv] [hH `LKxaM7A܊ V|";=w!/\|eD; G^x1Ȯ^ejLԂg\eڲūMG`;/O [z1\ y)C'z9|,a-ׂlv rڪt-/@xs[Bò )VAJ2e=-oQ,#.'М4F-S_eq:R<0ϖsi0 Vb p " !3`oa{`inc87I.qWBΜ`q&t#^}L|턌 {[@riOiyr')Tp"|J)CJD - ݏ:Ne}0lm>3qN`9<xN$Y rd'Sh74^,+KnQ~p3x%7@L,&?CSm.Hmbhd?C'yQ Vi" +]N)e8910Y4+]xH ҈K:Py)%WB\tnO`!j(J!0`nr,ߒ5ot|̉iNc=7&Ju$N3eV"?"D63広KKPLpa0@0ɥNKqQ4\pB N|FHjm 9DN3'riySnJ^rF`d65(V-_/"SQ[ ĥ]>KjRoLQM2rbO2iυgנOf9\ ˾u$b+GfCư=xoJ ρ,h!w"5 >]w85ǧebڍ\Ҙ.kzd%mHOr##ˉҡ=oEx,0dk e(/͑eٓ4̉ϙ6eiy$M '>(rO@:-MG6C :X Y% (涛ہG21iyCҔ9V`x1`D%Q0RN9-O~XX^,dv嶕 Z evhNS,1R.aٜp[E`Z&М$onS9jesfɶ.8rBg>p| 4}QV*kmo2.6 !d1*2@NSF ԴL̂D FH}r R%Kk~FC1WK夃1!?Fl2 L2%>؋'m2fR*_c="!(Iq*a[Le'j_ yDc\ra\{1"Ǣ8!IpSF9e /VD(X*caulIda R!(Z 2͓M罱>a50¹Pj@Cw_,DȻK&f% sn𹥵%w[ȿ}ܬ M%Ke gX- 3'L}2cn7-#ʱ[q(VC. I`4H01d/muĘk <0ĒNl˔=x,Fz) JzsYXx,{_RT}>)Sy.-Vo@I&41ǺrL1WZTR{w#c(ŴT9Ogkk%L1\)̙$؝-ץJRBROH{υRf<.rלP*3b,7 I"w^rq%Ȑ R@,'k>W:4o*KJ &Tp@'2,-Q ^kdNr0˘˙HIl[ K݉pc%nJJsޡH,Y^cF%aV%EDcJ|-S2o}GGL:ptsb/gX+ilD[,`m*T~흘?FCc*7R3?YS#\c*<ʝƌFOLsZ2Wnhp"7Fe-F"]962QȾD.2=-V^Si%U|Ye)؍acɱ&˶ 2Z$Kk,%y=>1Ӳu+%(sYy]KMUh>!W9$D-✅ÂnE(t !oFA1ZY}S@FBbp@ن,S! eB\%` ƬǺXJ..2TIW,yvq$Ny!U֓ZP^Ǫ~}x Rr@;hL=}2NYSZԡV͜Pb;pƎ?$GXUG VKŢvFS8Ǻ0= M7,dK1TVTY}9;#$*[Lpj=]97݌esRFn3G+ _:1 0F,-4X}d{cQP;Lsl_2Hi{)3 \v d +D%`g= hQƴXG.|1yͱ#M+a"z$ IDAT:g3& d9Nՙr$w@O.D;<'BTϰDSVp\xHsXsxBuz#l 21 } ҩA ; F hd1 AZPXłG;¬Ly 1%g@~nD7;kJB\ɦz]&KuA@ ĉ-OwXL}^14H\)*qIh>hWab{1Y~SڹkۊpXއ0,5H+(Nn c!y ; s ES\R9vfG!?uK q9\_-7PK-5.L#6'n-EV2"@*GyOwIp@RÑR 4PƜ;1\<06@v >mJK,1pwXqj4hTVWP p'8*&Wû(;Rw"O3B,13Vl<sQF; _[{FdPzbBbD4ˬ@WU GŒ\u.3^uA*gsʈ3s7}C\ͦey=a1[T& tTtS+KZv@.zI?S]b<SA!CѬ&5Im斛nkD{ߙŭlQ7  kܷwn؃ &"b0?@-\uE]rwU_/3;v)SSBLec}_rҲ&dgzQ/"Y~ RRvۖ\&vs%*n~^󗩪>wwYsLaP [[~̿F7o7; dUARi]t|J%r!=kK\Yҳ cNKT/ac\wKO2XefY0:rA9̠ UuvŪB}9f|-o`O`1[D/CՎ\.U r rfҙcsa+#] 6ǖ C'"$Oxw쐱X(+c KuM,; eSpDW~ܹcp 7onkpxrROB52bƯ>V̈ 4}2RI :fNs s?,-lϘ\e(1"rųz|U{}6.M Hu.?"pUCT/. R@uYe3$.H'Æ9Xi 5X"%֭ [ M-^Owq}fc5c}aÃ*3M߬fc뱙H#|$S$F{4 4?lnD#v ^LJͶ Sv1p"e8m澹7x\gVUUߥzKT7oV}Or.4u/M4˒paS3kb)h0|[4 kkWj7S w]n_nۏAG3RrL^z_7} q gc?/`sGc@;6 lVFxS00sRu (cx! nnm~ιo?d] R3W s8>'z7[~]B?)"rJ29cD4\/C$#1ǸT8>=ZKdn\2C`|[ܝͿɾn}C7 ǰF뵩J-T D@^FUFόjjGz+'Q]7%|KI5n}paN}1@๢W]=K}7w|eKDϔ[ xb[~n]cC#ئZs* c )`M9:ͱf"-hh7c^^2Zo%zk#}eOU_ڶvk4z7%wJ8$u8domZeCRj9YPjW5HZb\!,6:Qo%tb`&COK,Q"4;m77wW续Gd4(0D&!*Bfc~rpK%Yƚ ɴ̍,u_jzhs ,'jC@{x`yHV2dQ $-igu2% %p۾ADb9Y8鱽<]hWPgf0V SuG)M5wwDON% Cq0sITͥl26J0 dcx)ig.djN.Z@?^۝']U8)v0/߃|o_{i#P\W<$`JДjII4\~S cү!~Igdc xdȻߤz&xV(6"/8:Qct˛<ԃ&|~{}X#>3js䕣|i<9rs @.ѕ:+_. KMf3XJBr+,2fTbziYKCS DŽV=g 51 !2YK~ŵ4;ŭ{!1G@.6 ]1eJ9y͒ҡKBT^]ˈH‡{O O-0kWl>x~>QˆXJ%X y R~eTOX zLb,u ӕa},)gaLP:EIT͛_sxk>R X"蒮Uߤ0Qiau+aSRJD.J>z~O ganVh/E0S.%'9O2Go%Yo3>gk@DFޒ N:{D4ϒ|@w;BUw:R̎SYuB2.mRB'kӇ7 KC$BTIR.մ[/Uя#pN̾k5Lߜ2ђ]JV)S`Hg%sӚa*t KeD`2U1c‚=LXX0c @v<gx0zfDh؄[2ߗq^ KsYiu=%?O÷pQdR $Un[rɧi%'2@TR1B(j+\o|^A8b0'ġ}w.0uh,A/bf:ˀXW`N6Q&3Q1cɌ;w=KXC͌>|a-{,UY@u_;z 6+Tz\D^`7pçPLA'T֛c;b |}-n=ޓD$6-3E~bFB,0f a%b0>3^SE W? 9`aV;=C@xw3~J 2sX\3R+<Zon&yh:|>3^g\@ɋ>hH&#GsLA4_v'Pp BtMr(=)9--`AKխ_v}l!G@Lcr'{j@dY):cgL33i~gq? ázdJ =C/9gΎPl0}].djk&1v{:{`r C 8tDӣKӛϠOs8§P *4BHƆIcܤQ2i ;$^ ́f*?~ /Vgw~7+Yإ\12%%kiͅ16q O{THʝ_g)O %8VF5Vݶ0e'KcJ4`mIJ njz/:|e3 Ed&CQldFhgr2'ZuOL:UΉ> ;DXVmCJ,1g)EwP^8e[] " J 4 >9'4s5I4WwRǀTo_A<ӷhWW*Y5L!dx',kW_lz@Qˬt%ӇQ5\d&gyw}IV_Xu8|*!%cjO!Kx+459k%G'U KUa߲)f2bشN*O?gkݯ\r9-|$ IDAT3I7lSOi <$-s=RSTqc1u_o,0_gh{O]6tL+,,Saʐ\_6I 2ڥ&ow=ΣƾH!% q-nנeaaFt] @V@hBQI"*:PZX:) ߙ {"9| :L(ޟzqZ-[]QG1< 9 QV˙z3ؠpxJ΅GoLwj3|VO]ߢ[_$@,ene fY[/_x YaBv)(SduK)#}02 {t t؛mywz9zKt5x 0ȘG]r !yLlRޗu:SMbM.vlA9I9='þ8?/W"naN2y 0$^gdYDl_1Tw|B? 1vs7G}( ߬^ٿS;`w؜G"a2iFp5=<7:)!867u#s=j۟" ?B ݘ CX @]p.AH:L4̀a.?]M؃D$94Қѭ(H"sx;y}21~া`ӽsIɣؗO721~BKRuT=l[ "UA@ ZRa/c=tn~|>JvfD[dUQIAؿc18YnYS uNk4/~GByvh3_'}B-Bp]7;Fuh#aLS8q8e,1=Ut t5[!阫V2r 6.-~_@ՕOH陃" '5d>ez-939UU[kO -:EtzÍzH\XW$2ot6} [KW! x }Ewu#?Cbʌ)ԭtIQH}?Z*}vv~~@ ǹHp3{I>u_yH[GaZeE!$㵶{fYLȬ:}  @+HqpF66c2FޥIJ2ҫdCR! 1$@M4 CfdyDGDi5++s_pqmSL)`̿ް÷PV-Z.Lo!cgFeciܯRʳe Nlpu8\%'(qbLON(/S3 UP7nW42WLsl_vY'NFdD'gD~}r*r(SO:bfMBRq3w[x0;FCE*srs]Zi93)rYmOm{Q3^$&:RԂx{|K }J"}cR̸G_c͌G&}M$8< DZQrx=WtWo]OZ4^[5D_iq{~j8Z8*i؆Wӟ5=3Ɉѷv?3iy&5Tn41e}w>p$.+flF+tx 5Q"T7uim5rV#ر-8 zho5I"n # ȓ[H6]V蹒(.ĕҜK!AI.f8d *Dq?O3|st0Ӧߘ~ ^`ie1-{/~p]"LM2u`o_x§W8щdO .鎀=BUjkp5H.fmmj^YkIP!xr1q%q_w z;yOd_}i&Ҫb)To:fRw05 ?UzI xy-#jG UzeN]ß?j&vҬ( Fmۙl0{:{ˡ R!EgeO_eQ?[5< U#5Vmf7O,56 򷆫/` R{;jO+0)H:ۇ~*"pSZ@+GD"Pag$5d ';-)`^؂K=- 3Gg Ѧ)s-*v|) B#chR[CUh 69rS\F8I_AՊCQ4J~6Rmd5{\?sˀ//pz_5xJa`\}2m/j2J^r|&z==>,B{03^<5du"eq szG1:|^VfP$Kʬ%"i5 GpK<j7myO%g 9Ԃiz[)Q;x{4PX]e%F!z|b$-)'GBIѦFE3Sߣ:KAGOW]rPs(H[AUBwO3 9|ɭp *E?Rk'`!PdVg/(\C#M AjȨ uZQj@uGn!` 8?$=f@VtD՛j"SD){lǯzFi"e >s\دvn P> V0u*i*jm:Ɖ7v~}Y1]Ϻ>i Cʪ&} &g4RhUpSK^~Nux_4BQ l-5^z,B\w|'' (s _9WbEi f<{-Kx{|zָ3g)M/߭+w|$d 1%6) PF eMK9PvN.\E:f JӼ@;z?etmLQHdQ3e.f=MT}xycLJ(?RДN^gZ^Z98seH58v=ߡq(.<&$ w(d = Ϻ#M5Z~'Z* A5^uև)XU: ><Qg#9Ӓ ݈2/.|.LrIe\%Rioy@ep`EYOp"!.f؂]8 whl!%>Tn/)_RYˡpv]G8US)b=ZOַEXQ +e.X25ʸlQ4%BqcjߒWLZʭMkcm0jLK槛3h.Pl9/RR^:Ֆ,w|:M e2J~ VQkl6=so gP!Oʁ8FƍrNrԜ\*uB DexxR @iL8d.J ,rt\Lg |/+("oqjɕ)GmR8P딷5e XnRnĝ:m|4Dz,ِypo\w Lk2훖33բƒC%C䁃.8,T JޗfW 5U0؂Pw}/-Di{Dɇj\Ιυ`k}PV8QMv-RPmO'`ba0s=eF#Mj IDATZ\ ǐ{=ny(ꔩǜ#0fwiLEMO|#R[k[sV0(^æzL/?#'ĸ`q8r[`<o)k|]\sU8ť c#4K5M%O* Yw ssv딚J5cP>Lw\@i:.tmqd)f8;+_G@ dC?,bOm@h.QkR)| ͍(R#P\{A(9)|8X|= %F.إJhXxn{KI="Ԡ=~;m֧30њ_, .J<5v6q=Gާ33y9CD^S.~\H3r3 0H漣sGO3&!(JEe K5JhrgGTuA=YFc*gZw4^eL1, ?V椢~evVRʭRF]\aq5!)U5l I֒z%_4WָT">zi}l̔L¯L5ĩ@{3 `;J3C`?u?A?M(G%3s߭n 1Ύ"AmzN˥KĨ㴎Ak9xqj0^DnVڼv(ya Ox9zSuO̡Zn:JYC(4E]>2)vH}/6B2-| 5*̌+̸RS3aD5w(Wtnٰ֒v;5165PjH "NBv-]j62"*QUK֙b@TR wwV'g7Tj^"(AkFd,ӤJ%&z8O|( Uth|dw:hf6Rܺ-1$O0㉞q,IG{z3xl*U-wt LGރ: FѻdL%K8z|'eA݌8')_t> ׾$+RC2{_PkXl Ȼ8ԛnpgzTKH%w}FOj-}\]dM)qZ@ɩݹ}?>I+]A Zk~itB*qiuttző:HMgiyZ78Y\%HOXyFUO~GA=x(9TѼfdmB%bOSz < IOD Ak| ٽAx=v'Fω2_=c n)d<*1_Gah@.k8aL&J#{-&$Y7B:o5%έbƍ&ߏM @Z~3bA"]Ӹ$ 3n18rAz2m'Kq-Zjwia"<*/`?5^ 7s+D71㕱 )fO='45=h|f9EGW=Znl _#\f猋o *(oꩼ!n0wf R]ѣDtpIUݴH3֊R=l#:#,o /CP=GZ]f~R\'| FKR_JK]愒zGrJHTOi_gUűֺ)Uov",fC$gDuS7 `%E? $[&=u< \Œsf]P 5Vza4EUT_p"P<1k49!hz eSQ K ẨC-!ǚq/ 3W X`3gTN3ȗA3C+{<Odkuwqi/q~tyZwɉ|j8\%S1_ > ȈKaR1p|+|H$e%n HK#i8Wv)y]x_$3|k9P6L0pkч0tQ@2(q Zorr<6Id9H.>&%K+qU).<9ֻAMԞZK%>D&X!%"Jס 6R8k Fk_BҹN+sQ)OG:+S)([fY9@܍\PEzm?kK2Bs8O+hD.g0ws%6 EP>"(AUv3n35mZ.t" a.f6$s|pD[ q-/3,7yŵ'OkF= FVnWWAʣzsSrTjJJ Nt8I8q=^X.NSshrN'g H`'bSdKX4B%붥S8ŧ\GQ?7T$z I ED ,٠JgAȒHUY"n+5`,5-fD'4Ev7gbYkt *m0c +7K]tBcPMCxi1L|?ˤZtxPĒ%(L=r<^2T6]dhS305a6K$ "YES^uȒKvL%k{eg'9*̬.4#QH1͕H1Zt*#8^ ۱('ԔhT4^sB,V`4 E^E 3Uq$<ː3 (yxȌr簀hNq-^c؈ V`Nm-ښVie\LBTDGM[\7rxN9 K;b3kđ#}Ƽ7G;Hl.(#KiyM`܌rFJ%js{}ze(9s{6Jsǩ#`0X ױ89aM)+;83J!JExFLH },㐷Є:YyƲeT-s=,]4ObgTɪ* 49%S/Ǫkhl-\`9ԣR;FKLnjCzb.5?FW޼a"-)|^XOEbJ|N4tçXLƤi+2S @M"@oj(3'(cH]esJ:v bS=HӓQtrjdsf!?@3@hbf۱| 'ļ2bm}M}hD!1(3Q %g&E NXeiA|Ӻpy(;Zq$vS,ЖY(ѕn#єTk4aM 9>Ff^ WIsQPfN4KȮ4PL{QK5 I 8L_KvoBZ}p89y6G͚rYV \!?GUĮR%2k3BNUXH2&Sx3?ӳ~}LU3rJƇܢ S=W Lzccs ީǔKNŔd>f$\O|V4{µ4QS{+*M48,oˬai lފL"u\kf ;;K|] $pO Y[YYEӢNQ4-7' j{ +quKh(:H3(pz)l!}ywDZ{_ꨏҙvG->0f)Z4VLq\yQRuGzElHP6B݅2ucΐ;^r.3 Z9\eՋah61bD$6PC)-K9@sr‰a,!q Z:$miʥZ(pt$;_4#ݐJl.tu؇GyۈejFԚn2Ye{c< mH}a"I1@“dd8ZqEToLpZ76--۝}ud7"+3DsFzdl)d;:ԤT.㉙JSOk2p RaVhk%j3tƬ7-q4Tooy"mьB QCu$iqcTd-d"X5bnӚdPj(JBRtPG9%Kx5CWp }E0 CB` ij1|qeH 2V,91naA&8-&ggC̃U[a+*)՞hҢ= $)Z1p͆vm"z_?x#9q3L@žtDnq 6YJ4 +75ܒ䚣H^D7v oW;H1[~K=*hhl ǪaGpŀWa-M4sK kgiY>vE4|cRq)^2ʋqIsx͍x\<6G0@Q?.'U5GYT<݅#,Hh%ss17P{\&4R+אfՐmy}F~.%3]H+(< w=iuҒ*Tt(5.\eÌ5C%l"f$#9;-&qtxc鬀? Eõ1蝒y;"uc/$!!_k34\znO i(epj>l}2H8n|L7\}0̩uuv(_*tN?XYO<7ksvT@QzKV&0E>>lĴǠ!X+(FWxoCWO@S\fX|1Č llf!>g}i!g 0FZ*.]R ,-yQY\&δhe8N"Y w9::xMe655ȹv)wp_wpy4$@. [;KPm}#jv9ݤXMIEʙ>x=-zܯI{y(k!0sd:Ug`^ΏTAw@icbZ@|K!سsn< Z(Ss=@Q_w\vD|2o(rPι)Hx c 61Cۘ+NtZJz4G\Z5B3D95DذSu"9IɿH]=oK^_G+ ))/r7 EblnCq{aDŽ0eQnu#,3e)BZ΅T2Y+iDꧥI2{䵺/s݃H)o7T%50`dJR$B5rxY=޵qUtoz,4}'r"VJRtJ 8#OfC4*~5r#6}K# L㜡`^Y.z~{ EpPm^>eΠҿ=n!1zL[1aZC~,P?}\Rj¸Z}f]s4lrpY<̥i}ra> ZvlppNM`-i9ZOp=eYrEz,Cza uQ=3>epp}ϋwQJqa=pkTڴQ+5|{ؗ:At+eV3Aoɕ&E+]df.kQ< WHItSmxҵ1΀-F zRÅH <~c򸍡gɉܠ8e.󦔜+>om~"P"8OrFʆ,ɔj>}60JzƬ퉔 ?_( ީc#Eiq.6&h`fDZ%Bƹ3[CJ9_mxײCj's<)O"NGIfri0;{ -=4T/Ǿ?>ևl8pPpPt͑Vx}2AMƔ|'bv{.Y@<Ƚ ^ی't-K?Z`du3#I5Y\UBy(;y ݩv| D\ SL4U lh-i Im9<̈́P'D-I5q_.JproD#(IŹZ""yO۾Oj,UMՆ-(m 36pJ[Cժg*?ﱁ=*[ }P/=!1 Wx+N2RKӚO<]Nr~\8&̭ej776LiD%t-Epi}'xFS>Ex"+){f|{|G$xhfƣDxMr0~<oNQ;*h5c^$2\3sB ;|^#N$y[ÿ)'ڈǒLy D.t~sD`ڡuePokϵ8xqf Rp\dR^2#Jv2lSDs=6%ڱ :C~פ6ڌz'h~dў <1gp \ };k2rVطI7 j^kހ!@F[@V3Za)$ˇ|%y|݈6/g枆~HdLiUrqf5zDYXVDM' gӠ%RVz kJj48wsqh;~D4A|+/P,Gr ~qrCs{Y"f7Oָ+ 93NȓKVJ"ĸ=n12[f"5HExR4-A9/$?˛><`":xl2`#եX-7[#zx,p=(af;\db]c*b_^q!q{BiO/m, YZ!NRo;bI!'v6BWHr}N2p (v쨟ĤRE>[..xFk@0~HtD cLxorH:*K%G+ͯw$"pT`t`܇[,_'n+i<$d% 48 G_X"/1 pY;,&YeieX@kd<0->$koּb^C[pwξ쑥IQj5))xVS..]X=7e4Xqb$**L3%8nvJO.ĶJr`͙ ?@#b< W ƻ`C.ݚrߖyO_*/f*"l oϦ߹t5sw~Op%܎s.IӵyB24;-''EsNj z 0?h%}I΁G'|>}{iL&M C#VTz͊-x0sp{`<, ,%d9? ŸD^J-"M Gkcч5Y}wǾc^`h'j<bdQ^#˵ay\ElcjNDsIu\9Iȟ;syw;$J,+rh&;%vadEߛ)zqy8FU3qI|^<3pAP%&ϒC ޤ 60,5 YK{| Zڴ~^.&xh쁪^s+m/b%I."˨0V b2F.Q|>gs}&}׸SVPR>B}w3t@ P(pXd\h">gƫرS`֡BvG78)ʜPzN)] |V&KrbVN9dǢSy>ǨN&-S7Œa7mzZN Dj`*Vd=g T4K/{0:xB=Wos˭ 3-lk}񑗦=o/4!:S1\\CWQql(V}ʟ7Т7O>8B , n ڜ~K_nQ-U`D9A(Z53c>kW2O.e^;܅}i7"5b>U "PC3q$PIZ5UH5?__P⑼559Q54 o羿lx #v Ź`j^St98}ڊ: B wVr,j֚%HK~K JPyG#,M,"ZR k\NA:Hrv=8 L.EHB8=S?\\|m,8]o-\2 (*KcMe6n@4VXczc?Uwo&EHxemu\_9bPN퐒_ `Ȉ;9tysZnn+Ag-tmaM1n;~7$ٴMVA3td]ݺ0_']6`zIc#80>σvCv2z'&9uf|-nf*-"vxbO:*qau0Pω, A+=db&DG@"Vǎ:qA<e^!or&Y9ݻwf|JƌȳY SSx9B!Mϕj~L|Qt1ɌO8:V nk:K)=OQ0Jr"F.ߗ ֤hTj1Kh(hD+H\{(QIjm?}hX}"v؛vt$"s{<8c8B o!\QV*FRo<@ڔzr P"4x-wxp0Ń 8͉#" m.)+1rDIn03(b-] t9~&>D_~b%䎡%nf1b}=Ϫ-@D0kEp Aeݪ')iÌGހ-F=G]ARZA@u@ ; 6Bcb!5=&Y!X}Om!Y@`}ru+Dɠ6 6Z\eFT2,<̥هk?Ʉ_?9̧+[eEڵXsȵ;af$E4kjd2`2Pfj! 9-t(eP^Zm*PÚ ޝI#%](YnJ~qx9[xK&"4B=GPuk_qԸ P7˩=y/ rnDLFP |=6Ix&oޜaof?>Amd?:'C(t$+]9RE]3^;-+{ Qؠ]|?!g*sԂVkkUf<9^S 0$gx61.F`gp>~{_C%AwO .1=$`ט+֧]ehԎ+D+$6ǟn>yV_b{}O:EN7Sj52y%9#EvZ%Y(q^439x8W;~s6EPY:Zk5hS$Tv]qŞ|M<6s؜hG^1s{}6rqYB\ ^zƚ3ؗ;kR.yG~ v,GHNN'G̾O\fΐ#=v{6؛2WtK(#F"8ڏr(bsN )QBQ{uq,o[]!؃0-G /. Ni8_n@xQITHs+"}x[f i^ B-ԢOF+)me"A9{f?&(> Go 5-!p>q'xM%5Ua[dd*X,3jjdyAdRQ/|wHNfS\ Z'y{t]7C)̡wnjP($#(){2~VU{E ,mA>yvMZO*Ep+?)(‡}/Zb/ymmd/V'^πt 4_F܁Kݞ0{pJ/{i#R7~λ>kan.ԴQ&2pJ:xL5ˏ5R`u8 (·w6VNPB5}oq` ~փ !Fдuo%&#X"!ޥDMtYH׻Dpk9wI, ax亂]nf59dt_&9I6IέGV"=)X%SzʾMH5DCu{Y"Cn|&ocs@yeˉ,˺z+M\KxS쎁Owi+`$^x׆=o3x.V|Ժr!w0zJ*D eAtS]Ѽڨ栠 }6XYA6U iR]-E~4ϓw_AYk%yW:h&4s>O; Nӗ^+fWp_!u!ՖT rAjZ HY8qvyxaBs/&G;6T 4G?n35>@q> {q.N S]sH 2f!ACvڇrKA5Kis } S?3:>B4?23g]_4$|`Ϻv)sdzDF n1=xKA \y 1TwhЋДDpMDnofZ ŽƧn׮A:;${6EqPoKтut%9CWVIlidI_z%JH\scjMRYz{n ltHQnpŒǨ D`?sp9< U}iKjQ5|wPyADzxm>;|ƙ[)z x3;!(OnM+'TG5 bNxr! VWXf0>UPn펯&,%M-؋ zɂGEVeKxSҾ[(ۓ)r8vdyEctkRt̥vnʭNK=UnIĚP6m=;~nl*cFͺg" 'p}@%!gڒo yPzèҴĕZ|h1JrG[IwWY7>:0}C~6 hSjMcnir8 )@4RE,pN}2l*ԇ2k# |Z| RT߃ S{όW o#,&~v&5m~0bD[0N#Ԋ4>XP{w0o&Z2+J7J-S23-KdZ"vpkcpn\fPj. AI_2!w IDATQ>M`=JmDDd5B+g vɗh״%*e8S"xc:Z _~{([aNɵqyS Hşv g`J) ;HvMAA=JŗUϩ.(P2( PV$/kܟ 䌈x4x*A27rl }c'v1=W(\t"܂DO{͏bN-;uE~&89"x%O1|?/[{.=f[eMsa!|z̝t4;=Dt'Wxt.)lR* mHsDjގ9m5c(fO{)ͅZ*ꥀK.G1=Q ZLjFg [w, .I/s(rAg'Ͻ3%ϭg|HC{=m6Y ?3m#"eD"t'f>;4͜yi 9M- sC0eNRr7 ?$*|$H^awi}zfsMN)$.MyAApFϢ3㹹njuEVGe%Teeg OE4n[a"3낚GbFD؂P%c,TѬ^[c Sx!RgN g/x^I̓OL+2( (hREdIŢ l$הfMIɉ@+thݦfR: 鑋X*$ h qZn=E`Dx=1Hb%ϯ-¾.tحg <cP[`tȯZ _(C->_OG'n\J9daiǷs|kwT\}ă֨Cm]tI5̕25+OD5OGdxؕ6DJ(.Y6iA*ϙh[5;IGؗDžͽ1p{^[:lŗsl2i" mȐ`ڀ`?Ѐ=Ѐ , ,~0a@2e eH$HU]]j<r;#c7>V!88!wf̕+VDp).yws"3--+fA`3'6f#6KoTGyrX Z]cD_܉=VIН$x"=2c҂'D{2?D5*$3d[ɜȞ\|sX35"{fj@'pku%fRt:,ZK`αd.;\RH}4$ ׹o^ԨkoCz#DdmfJ2?Ѫk_kxC""J&fHsvn^%|ӱ#Ntm~"g{+`j&6 $|lBy¢9B j3ɰOCLX˒[>Uw]a<5\{ F!^oxŸ-WZf2#2DZ+cL4{pj2sV>Pqzئ!PsR7葉pt*!TXT߷`i$ 0GbGޗ"xr=QPcԱQBI~`t?>v0}hg+NVIg#/<1ݾo;{t ԏ[Y-L!Z2U{P"ɓx'`heN衭8PS$#^n}1f.nGtk}DΒ (yɵP  Xe QUvr7L~t_tm}ƙ*jD|w!ŲKTM32:i dJae7qm?ojFx.o$=̃OO˜?X`WfM>H&|}-%ׂUF*=wg"#1{k?r&)S\hN=րt%hf2 ={|<8o].cfg `]hqy}Xb/9vpN?2-ƅ;q=e68}"hR)٨t@ !=r-yg8}SKŠqa0Oeo&<>=.pwqp[ SMMK@#(uB)ҹs)XiV2O?%ΐ,9-p W*4?`R>zL4`JzORL7q߹lhN %F7mS)MR@_ P] 0ɥ YI7cwh^4NIjXd]u8ApN(= ]\6wgI!KCdL$21lTO 2tx;.&<${`[?WLf ,}z5:|+^a\)]X%d{lqZc1NLIdATqh̽}ʎƼRc%`J/M4W&;Vyi2.cw~]!P а%]k O U@ςY*ISM5SvouKᴇ\t2-~:{,Dud/r߼cA8%k l0M!M6!4w"{YeeOr\n'?; \׮\ /hJk97\XTdv:dV8TʍJtΒQ9h{x{l|5+W UYs3mƠe!ʪ$>me# UiܟUb6w[n?Ve 8s,  /675ƞ'9al3{o6"'x|'>OrI)Z}jy.r@P\dHHIc\^D6*C}BjLqosDC qB8g&7ǵ S0ݘE[:s5D4D="{*OX3ʇzn{{\" =Ptl(UV4aw0{ adex785-nUHyC.BJ$84K#QOǒY NWBu8VJۄH-`2fiK*SeP5 }SdX=6b#0K8#:w Yf%UuFu~Bp]97?fr8$Se5wti o'}{᪏c 8qպT f%↻ol5XIۊG Fd½Qce#@XZIBqz?  u&Π)(2@CYzk8Jm[e7-DBUZ&3Nk, -b+xǷ=03O}(nН6t4Ehѡ9Aġ=-~7|1ʒOUK[#Q-&I!b10II3zw;5阹jxHi3M:#F9 !άS&oHYًyխ#k{=|qJjuG"ꃤP]3o&}_Gw}{ؖ9$gD(t յzo~ ;|=vVW<1<DzZ}7ۭ$$d(tBG2Hɽ>mJR#BȜi(\ ? OHfǒKl֩@,rBJU)@bdҾkEU_ N{_Nrsɪe's omeG)7,C9K%#;uk=;|o{(;|*չ 3c!'.:=n$8Aeq+&IB+@ Z^0JƸнug/I;B] /6%#2"kNJ;e#'zk4U5 ?c|Y/׬̅9@6zwxw>CFTzz@4c=ϻ^_ps~.5 0˒> 0+P}cݽ:*+"uz^L7j CW>Gx_JLY 8maҥFx~ Ʌ!=f#vPYѕ/zcMnb.t!Z.n-zͦ!7Tp<3фOBF:s}97 Kd9 1Q8XA0+VacFܠa[̃{v0{\'`|&TʚKKr:`q^r߼ڸV`|P5aFq?yBz'w/8\o{-R c9 $Oiz92LQV7nwt p,1.] wNݖNUA˼F"˾, GZ)HdS u.9%V,kOp$Q/mfuVx@5ȹ5Fe0Cٍs@0ؗ|ĺJK'2 @+S0J1u%2ZzWq{ vIģTV6 dQ#7Xeֈ".{{ DcjZHg 4K#bF=aʈ,@!^OxZ|~45mSU F#Wal9jpSpx0=%9SL5T=fjtL6ow{hqFZ^DF"$S2VHmDWJY!,ZIg.@sha`Br}][+PvTN)+8V?`szEj:'U58˜l IDATSeE%L'D1iN sۯC ~[sK˳BC8Ψwmnw Ά{e>nB{yp2ܩ`Q_̕h$aRhSBɅd5(2Ų3_ P-{Vs{}s ]j)3^ޜz{oEv=p RYsZuv{c&~Sz͟9e;e@v.F z||5=N;X/) Ypr*"V֘i$T1h"pbO @{,K@\P, e\Pu]gbor p$=SFң0Mrcy+@.P 4Н,Y*V#_>DO~PzzcZK<% I ]F")Ġu؉}*\3Ua s tjIM s$ dI$UNMeeDzo w"z 7[R+FUZdHa@ԊlmxnJ\ )kw6ƴ̘|@35\2hJ6C՜$ / ډ^ZK蛆vGpnA̤GK'Y N&!Z)&Zrse>u|&J̹f'!qYP[ C:3%tWʄr@nW$L&Tՠz 󌅬1PBU~J2vY1poR l" $ &F",y0i5"/Dvu*[$Dg)i uI0 '&Yc\-;ۉ:W*_EدFA#6losK-Tu~@>%tρgl̬,@^,T+m)%eW}mD<J1:wDY /p}ɡ rXtk 'b3M=RI#BB.8JFIƮ9ʬdTbXP?sfwfO[:˃O0}BXX+fXdn:۞gwdbyUF&ts[KqOk%Bt/Yi &u3IoAxRD[uuS VIp~4|]評@nə `sf{##"-VZ!\M)%nrcN1H=$TȽ}|`rDX뿭Emeo W1o9g##l^LCIbF Czu: ծHŹذի9MqؙE=rݓP霫D5yi3ꦩ\驀]zTwo?2sjucqu"ýxP0ԽUJs2C~ccؾ)$ ǟZS{):O$z0v@ 9t-TR$ *I q=s|s57QU9 jI 7'g5C3:M1r- z;~_pI+fk0^;KBOB蚕Tia9)3g2j|)&';H$4{tX. o+{*V7E^ e] k1+ƎCInAj߈eKYHb*1QBK5aYȉJgS[ 3S"w6=m%E E÷ [nWm^pJ,X ]C!hPt e4%k1lnϐ eE[:L5$8K0 s-Se@.bR/ULS>/ClW2uRzznwWZ6T-AȅjT{<@UjqN[}$XLgEN1K AlQjHC-W6u^a<$M&Wh[@~ EZ3hf%ZwggNtǔ!x/IkzT#("31:Ӟ?pܢC$P%?(:eyyjgw" \13 wo.lRΏ Pĸh?8c*ChcT2D !w/xGŴFeh8݉;-_RN qb2Kqru: WbatFtKY4_/D7\ῷ !m氯D\Wp5~ 0SJ,$ w?~X 0BVX+f(b`72FeBw8fXe-%j}=n3hN\ѻ Icz'N%Ng6|F@6$OYS@   0E,pF2gM͍=wCk jb 5kW0Š?$ Ljڂ+нÈ wN,Te\3C7ϕ E6oD$(`rnd-k`9Z31MIG-B ;_'y^N8ph Hs)lbjÍy#OTTcA7v{jm`qN1">LtAh`0x;0H&jø"xK 0+<.[wp]FF$x!تPEH:M}2č<>L3eH8O kpL2fj7Vh")N8Β$Ӛ=Ѐ#ZN!3 QVF8$pᡱ~#k{qMfg=Z7dӒ"X\fC)v"\ž r3DN{VJE68||fAy͒Y֜"~)pVN1Hd|n~8bN9iR*a MXfFzbNd0=Y È23xWF7].\\)!= I!L8`lL+k6SsFf| 'baNE9%8=سꂓeJ^]lu)ɕjoȘ,LH~`9]c<1b4HfMUD$',4^Y ַɟ׼稬 [d" *T3 O)Tݕ.X\|X.0i+9Rz+E1ُ B$rQYV17E}|,Z2Ր ErS)>Œu+-w/{;vy'Br:d'V1íG+K7l7>F5<'s&NJ%OxT5 4+{¹q`&LoWI"i5b[d7i3h>%l1J9*k-4Hy58z[AJu'^}6$[,ra/Вdݡr )by>b,=~؉Z[x 2aF|w{qN4Z`l!VhX;|A3U4 ],Ra[ZG9w\j!ȇ$Q[RZޜv(s)pqdB.WY_.9ef+acz=.!3lA@`6"Ov2O~% `CBO( !:b^}H ΊR&%U 61nSxy"שwc~j<0=.ɑE(L}e'GX5!V3 FDlR ) T/(8CPJv| LFwcenv3h>cZ'%4(N = evW WpK4Rkju~Jg]'`"?[c9$jcG;u#cP2nr2!'<붽;,!lnF{p GZQLs(A3π)%3l:3Jg wx`"]c@%MywnNX,b1Ux6{sP)JyxmKEt ?Lusq-^scx# eJ+°i@;=>әDq,T,z7^CȻPF 2%>L4UxGrD)`jK=B2P>9,l1r5\㒁n u"\ w5nN]$Hy@351gF -Py%e9ko/Խ::T;%M΄$U=3&yR]VeiL0PS-7b]|GI; 3:Q1 D?Y) R3=u %[ &߾-b = s3hb\pcDFHicx=N"C ǂVh;7.[qlwN{q}Usz]R4_(mR[̅ID ʹBC~ fKi62:jN)a04˔ILjKi Mڊs{>a3ù)M>>p:t%^*b I%#d,P)8q43v"Ya`}0 0|}9 Q qMEwtFmK#X]CV86{0B=.Ndd͗@c!x.ܳ;koEYB.*);B.#N|9YrѤs XmsGc`%tŎ;g8f2L'w[ o1v`O.AP\c(6lwD3h>ǀiu cMghpz6u\"B)Kh1F{<cKDO`5>9ʡrX%ڥ1w*e'EWZBۡSg+G8`zq݉ czҮgKp7.qC /A  Qc'0nwm/*dJg3m!|c2 |k.ؗ #eI{,v|=F|6ocs# L'zu'vP+uShFxc [h )zـeM ]Z{.VfBWNh[W3">TX[;M4V=)Q3T PJB0-t$3q.d;`1cD`zK#[?zx- 7`VE~'mbǔFKΰ~f|ʒX&"Ŷޫ祏f;O4+9Bב8gM #63:r;# 16EN{ĔV2Ӂ0NH ӌ[Oq ,6$Vʙ孈Bj~r]Ix%̔y=;nu}gqWR[ E[)]Th7 2Mu8K@srKl?t aq+F-N'ة#K(6q &_LQ4F `yF3hK1s~é ,d_ ǽ8d.=`t~V*z%:Su\At,^-M1V.@o.pLCkc%C e0Yׂa^Ͽʰ cGVHn16iEZY4e' olbDI(!^+߬0.$n`(/VaG3X}Y `>|f*܇d}et yֱr#B-6lwvtMىsZD0xU#mzCs&2C? tCr8-8"(5R t)xu35~5E{@tL)_;w8Nt arv_("ܘJ "Ҫ IDATf ?^^ OFҽZzN1 i)F_l%qW\bHZkTe 4 j#wnm)-"+TkGBePPzcu4i?u&Ҿ1d^f|"Z2F0g+)S+ iRpmD+P:2rNJ3ӡm.^)ȋ34_ quFsdH-%)Gމ q^&00apȞoվˤSn&r 9EK3Xz˓9:PYn$ փpGd8kb{ ɢ0Upc6zx8=.xJ G;t!MS  C8u~eTZ /o/3ԘgPS^ڽG'z{ 8-oDG YШ;^hi }I`ɚ9A΄)V,Yl{bRݩz/@CHW8?5eȑNDx6j[֙gASga=V`)k0LY\0ދgq9JqBn+r'=F6ywj}^ebŸt4ٝ؎Zw>N zX#GJкe_zVnɰWY@`7Niٝ㊉Tϼ̠L+EtQ kp.EB`kZh9UZS`(V1ݝ)8e@Wz(r*i։`rṥ&I C• !58fñ7Nв4"K? XHYY*.bF' Y-_:^[9MqmY`=L ]N` F[n.URp7 L8i`maaܘŸa@;2c/ C+}r#X<bJLBIy9X\M8ׂ^`\z!^+f^v[P ۴IhG@D@v8.1. 7Un.^BCG1 RE-8qXܨjjb%vp2N VfsqV$TjVm%j=/Jk\F| 0k9w#@@w*Z8`l'_m(c+l-pd'c\;Y mr/4ҭ8N` C{%Dخ Ɲ`;@et1 -R=Vwj([(eݫv8 !ls3x4Jhp^xܷ4 /C8" ֍^BRC8Iխ`s2{B=.;>ŸuQ ^0 c-jͷ @ ׳b2s/bHڠW:c'!"*"m`by3B#ø0$C.B C?hRmx8X M!d^c\kñDalW؇C,?Q7ZTlnb} NXX1;øa@6+*Tf4e0㔡_'( JwY$]t)E @#[BXi+`cg TKKD˝`HvZ>Y^[q+.{+4VܨBLMm|)̠9/Ӂ2#ϳWqwqI+pJb[*r%3Ý֝H8,"n>] Ya3%fx^I;Lm,kS)́e5d |^P`:#0N,Xׅu1.^ t)oc[v\- `qVBA?]cy U9: N8zv*~U=NCiG'c@C:ĝef)oާ/e.͍`ŵ"c5jzFUθFual^!IB.OH@@CvSPޤece=e^f9/O{K~NǘiȄD )Y2@HK*MC7M`b[JUa'KIi2҉nq̾$S/B|8n5MegAs^~@ߩݝ7ZpC"cƂz)߅B׻)D@9dp6$HUH[hڨԁCZ2&[rΏ7Bq`l72As^˖H"©10Ab2 ʙ;>XIa<~6lGNBYNo0_,E_c3yyfN0=9w}qͧ. ʂސrtk@-ȤŚ/wWuBpp Bֹ O+(ʹ ebVB0vRCx +,+C%rsYի^rAryy @e_3@N.NУYN.WtT;/2ߍ%yC{(`^M5f8b~R;/3ӜU>qQQA"*s1p1L%(sco$>sA@疲6 bNQ*$.=WrL&JT7x"͇ yAs^-ѝ8`WS)"C`K%2G{yyAY|1s>c qLJ2OW3Uw l9ALs^>p{ X% >zx8fX@]_4)(2EL $Ka{!zPйDV,4ρ1O0/sx>/Ofs3Ka\0ʒr"O;ē_.ޒp uπ93y93\Mi}NIR6)I.`֜8`%Ls^&\ĘXueɖs2N .Zc,Ւi\5cKj}xFE53LG>%!w=XC^H17593wJé145KJ`)Ko$ɤ @O Sa9W*E?vlgAsYaj K+R0ךXҮXFIR]5V8; *2 Xɱ)55U;Yy%}Z#q) cQ\G)(م̉XDOO)MZ*ytyQ,)+s"\@sK<@,7+F.;'i LeSzC&-IL0\kɎsQ9&R(`ȰsRlsx:ZJAJHtXS⢏ rm M?3*,:'(}͔,e0>Ğ`\rANv)!D+cx c^f|fr sVc%\?g, BRk=>r3HI(%V9Vj 䦐\s,yf3h@]JtxCu&!R_¬K`w%2ΣPr ̶ J>+ltf3h@[pJ9>%؊C)F! nQ6!ȅ*ajm$n %3w^f|Ǭį4ď< 0\ȏ>,mՓج2c^PJBMa}(d}%9>3rrScoew m GZkyy@qumIob vpl-mv*iՌlYO2Zge.$Jwₛ\<]KحK/;gni8v@).3aziJ%r&ǩbNY4@bw%wP=R 0 E XR՝Bwj掛PFb3nbCcb໏fD1)y'5i<_zҕPm9 }VsDJgc^,"@!6VN 9T؆h $'6˗>aT`iGi(W2+6&nj[!tbR VدݡEBbXBnJ苌u r+ҕ%I b (l G\fv%z9꧀`y Ox͗'RDMѪ###r׹n..r"QyCg )&SRޙ16L I~W4S:f|Yf h"jFGL(KVLEٖjdֱ{-i1e1ٱ0# R 2sVi +r@݄rr3h>Ubf뵩Tbģ3ɕpt$#^/ ly[oNN<})/g0e#Je)9L1zA\a3H=P6//Tq4eԉ Ym2?z|d_+ɉTid:XaD6Gΐr^}4aK5\r4Q4ŲTFa1 %Q ``0<نwBZ8s&WjtX.D ̾mum~γ=0{}o2%d&(х g|FeJ%u9KŬ|$Q176;#KĠkGj1}\_}#`b/s r;8!k#rp"~ow[ޫO%c‡ǽwʘ^Zڇ)]G3h>m XdNXB'<%cJC%%'t/dB2 \|T1UD 毲?}f/}f0H|$36@ =ȵT-> ?z =?}n +tI,kau{|J(dn|x;Ӝ8r楆97\O{y{ %WEU-/j-QI ߵ?or׼ kct<5FDU GTU_?c0V =' qj9$xCuz 1Kgp1F9+O+sVa ^K$Kw?2ݛw@䞭kAnO W_~]xgMY 5bRCtؖ0HtyGlw.T/鮡'1N͔vyC4fa\@zzH8_bWCXM >)GDj' QnIP7E3Bi>&ǟK}3l )q!*RX/EDT߷D\U? Ow5|_3{x.#d,1zs=\}G]}}E@/f~a5H-e0L-y3hLSuK͠)o9dҮ`>RD9OfiFvpRUQњ\z)sگr{fCl Oz9T\T-q7@vsk GyeuB>j.NYd5t<$Sj%Moje(2~Q]~x/nq~j $r{@<ի }<7㼤OTВ[Z 3|J!9dOn5 n S1gzo˯藙w?oo>}@P-)4feǦ0Q^O}#nPfHhKܥb Z'9R&RZlDBLz-6뤊W>wQ?z+藼ݿf[6|68>=uS8A o͉ۖ)+(c}l2Vn)}46T*p>U\/?S?//_ѯ]ۻo>'vkFY|\_Gd HKr&0jIb/W~wonx8v4R;Z-R潹Vn>=ˬsH1HALYC do[Po}^?E_aB6onsE~s5,SdF> $-𴘩YYAZE̓DuOˋb?|mXeSZ Gt1%9 c\ 0Kc sY\q:"o9W wz/|Ϻj+vl~wb,TAPs|<fl%rQ̓-.%-߷o>̩ù-ev6?&+ݔ9'+PUT2Kb'ciWZ]|u/O`ydn#7$1@Nc]X,&Jb((e1$;oL/@21)c@]Eo1BvZ>[pφ+O%r*s&B,=Yg-a0ޔU[jd ]Z}X_BDo4}nC}=ru2YsXfx,%{tx@N?ok izL+4ec@ ٭ZN+ta̓^b_o7;č:n aZ{C:RR2!nX2&fƑFVmt|OIpܟ̀;;$&A1eK\d8 Se ^P-Tr(a T3)'i{{FߦOX}ejeGb<ꯏ%^XМ &RrZJcvg3^GP=~ _kH&o?; KCq ,-ԉ JXI 1@%tߒb Uǘi HyVT{~ϩn{[n"WGY`Y[s4st͘Gsd`}FEWWߺxC?^7}fsCw]Jj8~rYVK@2Rb1gTYfΟxZ_Sf- v-/?qe|}أsC^%J⌔Aew` z]fdejehN_|7bk^;|{L!`tX5d\.^qqqzjzzr9 2q1N hI0#b:(eZѐԒϥbqO{M:;͚y\D~}hͰϵ3F`RSn*ȖӋ%uSy*x[Qf'|+?IU~xdLs{0juYS VbH_0J]O:m#S.d%{`Xd,Occ7dUAn51T_^I$s<=2lfGJRay*UO=\O0yȕ&rb.XUFHh֏~[FU#tcn7m庲>< IphMJ)ݖ )/²-Ovۊ$Zd[l= 1ÛUսy̓wɽ9Y[n7:km`Fqoo{{{[4'6h&N-3q!0p)0.2{2ap U rDl<10pJX;us JqH.Z:8s{39< Y2Pmjs @jܡ5/Y#p0y{)֏~[ }BX!`{v tg{ WNq 4&uSS%{-$8j$D+AZ``Rp5dD>Cr | xTy`2>11Ao\n%Y2ϜHح;po3 8ϜMja7#b\T+.͚n%}Ds_R3Fin/\AyMQ/1,j;[d2d1$Ok1e8nR.wiHp5׻ pb"-9kzh S,0t xN9oMhaPgujY sߥ?{BKRwxT֭P:`izO4Ð10k򌌺v% *lDa33h{у Oxg94n`S~{1x{LH =)`JLYf*"Ncp3n R)Oʯ@9C]lp&J*w$&dO}]Nk9Нuzʝ:5tMQ ¨KgiVTn_N֘&aڄ^[_x꓿A`>2)6Vgf:6*,e9QT㷖ӌeEi?E4"3}-[cqͣg#$͌p0MJ2>fkI489<2m*[JJW^!; w%ҢZ]QM`Xhq:.d@,5̲4[&'/jӮ;0_C8+^b>!y.˃ XƟe.3f!wum =NϤ`Nnf-IԆJH&XJ8M>3pJF0ҘbyBMs׸~aglQJa6n wm O$n.Ե~Nе7}t rMslE14|ɃnUSvp\TICTl6NvE 3nƧ/oe!YA#.UAR.E $ Ig֞+.45x<p*NԊSN~n`L~=wB B,K`B$Z3U'&&-?P8׭` )vg (]V?t>fdQva'Ct??Pj1w7h]fd2,2fJv)MW Q܉@rng>e|XfQjE %4Jayp A Z`Y8\"C8MTnEp?cc־PBp#g?I,  J iy<!7er2B.Yh>_X{t7yOd)wzǢ0xB9Y.`ic*ty۔&QxLcVII M_Q6BL㖜؇ãpx\$}%'b5 kE@45X YKt kUniZ*Hs?8O-%g>$*V@r4Cuiɗ/\+$cl߿=4)Cr)iH9ƒ!nwnBMOy\-'q4bE9TهIdZ 9).MĒ {DGj>&Ofl $ՄKWe_v\wewBx ba(zC\7?Yc.cydmێK"PJМ*Ov_<̖1#c (>:KikR[ERdM82W|Wpu'Dq"N `9`1r.ݗ b?pȀR)7Z#,isz\Z;/Gm/>ϻ?$#)!=gF8`yK]sS~Lg̔aE*1 ,3 >Kg?wI-4r$ "(j9 +gO5Fq&v-UZLLB.0eݥ eBS:Z5D RLRw@8䮻GY/DIJALnk͈ ZZSyt?"ώ8OWJdL ww05vĜfd]K ]! ϜBE&FD'MQz7 =)xj(# !Q7pp#rvw{P0|^)>,fZe ɥKXJ:xxPx؊~dRh.\TوTg~m2С7<{,#C992By.%!`d[+s P^0yo6`z=J؜8h3SK`(ʙcڵ ԕL_G 5%QWה28a&!æ]zl rWs'>{.iurJy-M[ %H`7[|,+Κ% le=a]lό@@f8!}6E CF ``op!{l1E'6ft-c)M^fShq7x3O ϋ5sT֙Ű]g{d-30<̣ԕ&y.(@X.P35 =8NaU:S_|$̜=g'|pz6AR3wH42wr 1,_Oux~ǼKG0&0Lin}H74e3fsmnN@`x7l0D@%y {1coP/UOx55;y^8$K%n/7O:#@MKM30>&QYΝ((lN^n/mjM;ZmvH.g1l1t[ZntO0T!s+Z3T<25'ScMt,wO$iZtk 7}swYL|yBǏdz6bWǔ#apGG:/vE; zH]B w- x3u勇11NʬQ-8DhM"9Nyҡ-_uN 1pWѶ2GԬ/vO,-RafbJqj &6=ppHzZ)嗹f@BS9\mѫ3kt@纜3fك"p&X[Εj,-YcVʁtY$שL>6x}5>EP4fnO.u9 2 !×O;\ zmhr 4He1x=X~OX;w,qjZw)/>0^'ƻ#rH WIY9*9K5hƖkYݤfyCq.0F jm?&/BZߡ;y|9IZOKv~xsK\:\,g?u!WH++iuLֽǭMm۬_vԬZfS2LQ%igKC4ݣdp˭ZQRD5 4$n%>l rXÙh3C% R8l5D+ɣ~k@],@sċQ!r> Y_#ZeKR߱h](a`s]ӹeU'rzC?axwÿ~W7LA@q~'r)GZ^m):8tSlJ'%SpE0TQugWJY{K 'G_/\H Zc(I3XcJqv?`4X~{ޞVթ"P %%Dmێ9":7N%H>)۔Ӡ:n2Vwi[je/d PKp]9u:s 'w/× dXe  fZY|."Zhrb)PlK锖'':4j?E#зSy C؜g$Aǎ4x&0^z F)XJHe|氰_'ӄEj.zw :ʬm`KPHp3<(ċ3 qȈIJJM8dr1ɨH@O<r_3Er.Ch>L^#/sVS~K 5*^xa:&)=Mu) ,JD-ylv2Zbc|;lGeK>χ G*w s(4Zmo~?DMp/@ϥLjKp^!*NJh]^4W(5;Qh6(u7v7,sdmƮޕT2L"|fᚗ`5xقxØ-yf-))Pmd(ےRNoMFFoS?E݁[1ҙ\=:kԬ,c84iL  !8Z܏Jw̱P04׆s QN׊A9vY9 1%e_ytJ3\sbKk7췿/^W6acy5S%FVn K ZBElPr%$.*)I^S:l۽_fw;.$yB_f4tp"Ik/(sdqǮ-(!?\XN3TEb3L߄r]4 ܧo>V=X~Wm2#tgϻA}C XS"{Ѵ*H/i@`9\Rpr|g7~5_$e)8[ELSC%̔mg:yR죌Y> ? ;ȇKCbQNy\C_#a b*f͑ӊDKL㱀ʁwׅ֬h2[e^*|/MyNd!*1-ع50KG2#ޜ ,3Lw|)Jy,/Jk"˔ f<\ n\_{"sZ\BXuO.Ŭe`l՘%5?,Iwv @ Ԯs$Of}mf5-EA\(CR|-2VS]@;!6НQvR #p?8rƛQ/:F邊5e23"2 )47u_wtVV B4ķ5HVx|pJ {7>y,$NcaG@8çi(]Rp)33+k='kDcRK.K&um+%ak|̼Ո|n٤9p8qziw[9KJ$hTvDL['OtEXi1Lc)Hc95oixN / Ðky5c Ox14-ovDxlݦ9|k?^_)RZ`2ko.@1i3˩5 /wʅǼ(LjVnh-h]ww|쾱s 8${4 'd\x bL(,R?f?ePPrsKP,'u,aҧZ6Xrd sNHG Bc-<+C;_΋ |]:N (tg_lV+r$2 BجDl*d s,!|8#,3v29G+1dݴeRLT=nJ:e1s Ȇʹ|bp+iJ pkFƹZC0^g?:Y$Q&QO[>i~{ ̿B^*;΄ҒH&:>WGP d %*[QTu)H9\r?6:q0PXmE}6J-?d14 f<Xm0SF (j86Pw_l)I|usFNbh]k1v ʮUH.*# o ݉.? >2o1y4`f!4kI VX.o&3~G=T헋F\ 3 SGsKv/{΃e^-z>dƣ]cOP@%P 0^eրcrA6ZV;iryZ~Mђ #c} .}2#ZDCrx ͹K Zp+_ܡeB* Q-AMuȪV.TQX"i:wmc"QQKq\/Q+O) R͵-8p!5!Xtog[sI`-ʁՒZ @18 FKB(ڥ׮ ks<9 f+ 6Qk3-VPE_\k4oj2 -&D(unM%(Ni1cP˸Kw~GW%&?̸ J[P*؝[`ƻ`YR>db)7Z}Q 9Yeg揓}x`_2fX!Qy̸AO·Ƽve:cS=`4{MPc J 9=qirśXtN$tfQk3(y:q/}c]s >G-M^;V#Opܼ4( pBzW5-smˀ$\l)Zpģk`r!RPD9a _ 9f~d+Uʸ깝XyK5NU4 cbדuZ-)4yS%" %tw^BJ8u ͐DfI[a{;8wt299v|vij++:[ro\Gj9#M"oW|>:( \1Zγ \B0튎xLEP6\lV3f89ɂU>qsfa֫s+f'k@]<\[@@$0qAO^2ps^oK4Kw Lw'0umi [HkrN n=qaj^lE0[Τ *@sBPȄι.!o AEmldᤜD*Î1\ZloH)vdAQ=, QW-+=pְKCR,?;q'#)5e-H+<2^WfF8 Cقie/yS 1_"b'ZJ΄);t (ejxvjϨq(C(mgʹ&^iZ%"VCYf"y>zd5\Om3#F]txZ@,9[RΨ$+ʒYFE~,Pfe;""|&͒,K1(H|)7rKBVh`{re52U-W8 ; d4gDmNg`cpL|xnYvs*HCT@w!9|+U _iCd3Mz'%w4B$LE.Ճ_@Z@grD4{aKiZ Z v$v Ssxn_-ya)ef4dK_LLET\߾6w-e`,1M9gQ["Q1erӕԛ4-Ԓ#mq hxZ,9R%dw)J%\ fQ`Z͚٥xZ=̠5?REûB͙82wjjZiQ&".kۯa|F%0.)ޅ<sCr[b1s|jrjt79wG%q͏Q&qLqQ>_ c7* jgrbm(D;:MTҜ$BP_+ipIDaU0o!ϴ|NuT/Q,.%Eh%a`fJOJLYSȿ98IQpL2#Y[-K-yR-;y\>9eDhv]d _Ax^GݡјĜPp/Z~w#)j79?8d0*Gw ZN˵ AםJ';?MfPùng!3maj, \n5Vg%vR[,A)>>i59)S$Y{ |-~Vx1 [Ǯig8<܅Uu3uJDS(8MS,YIs&a/MT4kFE1a"<`khuAѬ}V/֢ 3꽙*E\y[5=D_=i.9Sf.}#3hDY. :~T76>Dd4)RX#s!9~tg yY"nG [^0jLZi fGp"m?_Cd= 8'"ruafEo)oKDvkҊZ% F[WZ,H+n/ũC]J`1dN6(p~)[{| nj= 9C #hulR(:ΗqkB㉩]0?-خzՐA%R/9JxKL>C,7=>O+* I0N#a-ㆍ+ȒwhIk9`wR;Z׬YBn5"@/>MRLGOS8N [v->unrsW?e}`&I 3({|pS;&g3CM p cLy7rSvtd679n~ypˉ?WriYQ PVP36f͹C)VIҜ"&7R2ʅݽ6srC_X~|nX4yl3xw LLFe[)18նD056_] ۦl1 1ߘTeʉ#tɌUk Z< yh`bzGw1)00%#zp8HCQMD&2ƌ]33N G2giuY4dLʐQppsfzEg$l 3CloҜ㹈A9OZIOCwL4Ksf3?t&kk&s47IGJw: _E\:,p#"b~i9 YC,lc*hr&$/f;qZ[gc$ry޴5D;D̏>bkr YԶ,1å<+> CyH B eOZf4q J%A MqPe8]XxN8o qpdM8J-ug!{zs$~ HpZIF8Mi᳃axZ:ma&>jvNc4:$J.X>m旣~9@H+r3@ݝK[`iKc$e@ʝ0\Kbto*%,?^f[Y(F.v% =JxSb]P.y{9AO7eJ`s5чRɝq;\5DφwZW]#tV%j ʷ[/lZ3 3f 1 =N]3D4M1g1q5kiXê2>GL8:˞<`vݜ5SR"S&'r#v4pv9f V~w.^`{ vh"ٛD2xc-цkMRi22{i#79 " hvS4S(*/0_oDbo ~;=,{Dqml/„NĜL$6$Op|nq2~^}4sC4H,@b*q,G dœYJ 5ޥ]$\xn GSV9wƏ{)GpBswg]|(sk(ږ-NZCF_.$רˠ'\# JqV#-a"d"? Զdk!|TНsQ.T]Sƛ*E[nJAj2SXj-ti-$ƌ]rjݖX'{*Mt[rG} x3 ^q \%7yNej0P1[+dgZ^!kKا%T[uV !gM` %;䝔--! !y_-?O۞iD)gZh\r(n' /kM=6)I< 7&-k)& Pr / KknN$GxT\zpKdf4ĜS'$]E[ í%bOPhf7vF;ra˼fnGH Ոw7RcJ jp;Ҽyj)sQL?lS|~?yTOƞMZUnނq;tx #`ss6) t,x23&*2˥@8wL$6y ,fR mۭ 5Ayn!縓WڰQ`gYV.&'X-+M ]P(9Q= &nF5 rYow ocVѝ('IZS8I8f?ZD֐kX/^җؘ:Ox"{2}Xxk`?\[k 5J IDATV)Z^.{sQꡰ8٬߼!%05 CQUDF~ьBRZģMwԘ#U%C]hٟ=OѴy;p-w'%0*X>1q u$RRpgOT K@Ė2Ś\X8fj\ Ɏyoq7xW]BUZ[# <d@(Yi|ݷCLZI!I2=7.2D =@x[_ғ A8 kG%Sf:azGeMيoWkeoI| ȉZM}H,iQ)A3d %$L)0rx\=,4k s+PeJZ ~טiy 8怷U '/yAi!h\C@>z&Ѷ ~,jrBh)lMQ&I`M1 gB#dK﵃5_R|(; ]#"kdJe̛-wp=]X<7UEL8o[5Μ%&Ξ\ 'вRӻK|{e7C0:ѿ!; ZyHxMߙ'nE9 EѧTYOלq7NKˀye((0Z{o#жn\kr@35#v(1iR|^?3 % !^=oZ e|enVeb o}=Oˋ&+`8"< Ew-혗3]œsnwXAo.ML-Xj0v*^{ ~ s Nj.]ŵo&ŴBf@Q +r\䜪fU$stbZݥ%mRz&t=ˀ'6wjNh[5AL`}!z)Ʌ7q< qc f2w5]xb+.pWj!z5Р5f;f)K҆mxYhnEIN >n#Na]fVB=eٲJB1`H-4֌7^2ω'$acb0oAɋS ҝ A;{Y4=3^E4$fL4<8ʥ_KYCL,:7\{7,#ۍXg`ri ٱq#vW=E`IJDjr| w'V\ sr>U-8)O5&o,WB\^ĔmZ59[{}t`n#Rm{f<9`xQ;_2Lgr'J軀{/dz^MPB쑡nNVdzŽ81mJCӱ(Xe `rl<ޫ\н>,v% :d90 ȏ$J]+⭙FJ=.(`er*G@I;бFDZS.W5f0bcSd/EqQ6x {k_w7y2w}̂euz9qwYꓹd$( k򐵬zX*p-n] D+19iq7͜N$G ﲟ9yv1D0Co*6N 6nV21P6i-hk5%6Ms9TAO3my'"=xwyszݽMdM jW;$y.i$YrvGDfU/ӘHQ(lk   8[wO]U!e\xgVwWuS'+##<<j$Qs5mxr/0SE􈀴WwzK!y^$\{P}"Q"z-\Jɰ@tİhzI HTeznت~WwORx/HY ӬpT#c^'V1~(ӛ Gp_Ⲓ)'av9g{JCf/ Ѩ: xƎSCcH$Jx}K>~A42W&0 |4S\$mFQ=W]Is) >B d?˜XZbҴfeL51ylz~d,cFrLNn)+|sɪ SG|ɢj_#o(z! @5rNcp/ ܅d$_; ZיӬ>14v@oig2sބa{iXf: }AoWcͦ;}sdbOFCe1w%?@SP>e~O}\}c-!+4U$2"bC~2Td͟0%X=&CRB1948 %)<<ڽYMˑzO^dBTo|a iń7.tXކ,z G1Y6Ac%~v!"hi/[{Gqm*mk("UO5tCeZOeIށxd0PGCB(4& PZ|qH!zH)f:s¹ژXY>IB%~k `~&n}х6TNaPvܝ3T}ݵF $Q-ǛpPxRh+@t:L}`sUOYdIiTZ:xwc`NLjQ/~WG%`80q*|":l25Vʉv2Krf)*6BُgW̅KA%Mwګ2 >g`Z v=8ԏ3:,'vڨ 8\A)AY?5!S}lh}'g 4/|?iAgl e*4fzMqth_16M0>c:O(52edqEhV)fX2[gʔ2&k+ i7n}bxGþUM0Jy *횱HN%k-"> J)K[Z0J12y=uWƊ%'[in㏇-]r}zώ^p:փm`=M+}pKۤm4`q|쬦K.sM,3< K+#45gs|[U:6Kb<ů@B5'f.:o=4 b!D%h6gu}Yh{=]Ry"=3eECS~~ 螾t$o{K8K|chϋa:%N6xA<4z/|waDDg3SZgw/{-%_=[ pn@YILK8 ϵ@5"h3fV%nSe4=zUIF C%im3+&tfȓmw~ýos$ kFZ<?5^ ;eN(vW?x .,Oid2@G:ty3~aWƓgfNR7SD B H0X0uпhҮdsXjd1tS0@<0 S$ax| [M]ִL\ƫ⎣LI0D-T{Ub20g1^<P:$xn9#Hyv[Jussb- &Ra}@v#9!r%AkL]UônqiVӣ O9{@ZNC!oo핟-8{UW\M.]h mx̍okr;~=`Ƞ+lOroAX1Pħ:f *j 0cw2LAz]ZbgȍIrC/E.?q•(ic~ G,K7.U-i+3;<]TAL_[|>#,_L|HzMrFBa+?p<*GLOzG~w, SIY @^}C%69!$!\N֥= 璡0?J)dȥBHՊ=Ӛ %Vw { hdk%1M~tPŲĠb_" V09 ^x٥<{Tf?*_*?dI{4;2e|kȻ0gi{ jL3zǀvF﷠_( 6'DaprDEea =f'C繎kJbl.I1x0 ʫIS&eHk!w0E|zaV n,xaz8p#ʏjgf"x_s n缓:#ek7UF_ZWrS`=9Lu!&8IaŴPg#0PG =NCjyt+r#nddd%M2'X'Hd|8/pʢ3mhSi7 :+ҵO Z3)">`"JCX8:T)^%\?4C sV~˭qp#1#jD<*aX{Lsi/w :0\(-<ɐV9Nkg>-DZ;7?&gr5@.ur5mrN=B:MktNVki՝Ҟèojfs3 AcIMB*yן~DqXHy`w\oCp73ߗ>mN(5#.+uw܅8tr5O6a >^Uyd>0;dud6 {LS#&O>+5HO-%jR"W  ;ĻX\O~JI`/}^~Y9 2e$LG\`_ 'gP3^/tc oCmoRf2P.0-yD3M2dNӆse&m@@@gKl40QBy=;CR)`:Rm%2gX&&,քaz5p֛Kq@{cnt 0eP=k,>l.Nh\LJ&e6~ V b\QZD'Fr#PMQL,DP, T]ŭZ7PF^(w y`Q~/TylB&4cX̅Rq F\5r<8'O:B9^ECV"4 ~Y (b >c_uQȄ_ӌoHGrtӼO8^;|Nh=-~_V ,]pʎ٤TA_--seK-Vˬ:O"Vݏ31=p[;wg'S3#$"UNG=\Kcnz-IǴ4mN)SL2A~/ fu֎M6XcBR)s__sw"x^qƐݬ"w9tJ8fۏ^`>b"yfkCp-_B-5Z[bi`Z?y_*I !EX IDATg6ԛ34dݍfU;?!3dRXƩkJݒ#oM\wɚbRDel@sG=BJf\fs2By zn߾t[/I39 7miNޛ3MhYS ])WBM5T"H+`lVPܤ;ZngpM.}Sq1 T/%6ۋ{F 9z@i5=]p׉yN\8 ހ@=^Gʢ؋bz]jU'wAƒ ͠ț1ԯjv`"B*S}p8OO1YBeղ4@{qm$`op!Sxf롗 '#D4̆g5 TeN\3}L&mBfJ+@ZG2djNt2+iG{̬OEd%\#,; 5#hz`5Nf]wzmK㎅xWot?oX# N:z=a ,LO}zأr _ /ȆzmNp Q3 Z`Ԛq%Me ೾_#dKEhq ٰYwtv{ ;ʔ1%uv$]Yܙ+$ȉ~FLsMIBDZm3&5b 9ҜM(%:w!=K9Ϫ*nO~pU}&pb?k2)[}w`otAjFO w8e.8.%SDM07h f県Қ~Qk; z&ZYl"@|]=:M|jHӎ=ìuM1(1^@SnV|g 4O9'x dnshqf!ٳm?{%z1΄F1o(L);r0L39/='(svיɟwgBlPge@S)<%|;6Ç;ik0UQQgm297TiDxKl 6;HYh;C1Y|ޠ3^'5 bi]yt:>w lO/̂-ӄ0(5MaTڋO}w|7:'͑͆=%s-? ބrEaހ2e-"mKj:?W)6^~\rذOt4=.nfl@)QP Һz*4eSsΐY0_g:cA1n|YD,͝jE iQA2"PƘ-j!/`YASY8oBe oǿoIeVySȎ*k.j~BPW <@37]R3^ uf7 %6&!iVim+ףݬkjzk!0f'4ssݔ{X{|zrw r7)ӌ9_6ܖrPSȟ%LqԐZѱ#o|qtOL֚o=ՀqnK55qJ$C;l#I$%G"K^2~L3O 7bLfBr"!0\|$FȢ!E)PhL#o;\!r9*19:f0':  xwDqf`D䨱HT,4|B6h8?U1JZi/mTЌ)] p:{J48ٻ9b!b:}q7 u4g4Kzf)ҘfKɖB!=.Yb;Y6Hxp{5dZZܩ"j[ ԍX}/c xkp5hC,k.&tgGArC3~m`NyGǥ|{?LJC};cS`ƣYOqLFGQJ犣)GO,S 4DDv24SD4}@3Q"aTӊM`+z݅䠁^p1:PF!:v \ȱk(k8] ~̨'Xf}H)R =~<~;xmU<53gʎ`:HsًkϡÁ!R r0a90 ${2 =^;Ў!kj?b9ᵄ1K9NJa+d.3j  s莳,Ua!iiSgf*۞ kg2Oޭϟ`?jLJÍHˋGor2FꏥA=[T=?[_ vG;:o`ւ snq4Y=ک~4ᐜPkBe·^1h{=;ybyL99V%ڬ7 Kbj K+L~[^ut1H$iLkwn}&js9ٻzqx:pg,mMsi&ɢ`\F6.>k[T8 Gp{CD 6lC A;sO|<ةPtVt3xgoKnX3)F'|Z-W S[@Ή٠]y+_D1tC*2F\soT + ?![ F?9F٘b‰5N}ΛsUKfL*чѱ[Vm:6M3sx7it);D5xW(Bl@82Lf Pt(q21( !ŤSnznZV|m68c,iG26o)BСk>-XR3F4C/h,HeZP&Mpl;0!Hkt^8ތ@e_҅`Lq췷Fw[m*=BMjsyŭBm5prg400>òs`L1135_T`KF'N֧ h5%W%YϵCn~fA}~8D2o%dc1ɸ-72tÉFFȖ͸: _(M3R6*r_DP~{L+=i8GD~lY ]&n?שvʹf T}71c,~햅9C10CBXĴ~s ..Hnc.`ɊL6\sX .^Bϴ~0 fjô3nPP[LnqZg#1^MɐTs4s8dsJ)_PAm Hy.mF~YP~w ׶pnDԛ>R&qQ ɲ@J`Z;ֶ[͘z 08=g4?ðY{B @ǴPG[ d&3 ydSj&T]РY OVtJZL 7&敛K y8}U~ 4nqksNAS{'V˅90Ɂk'̞öK %sX%D{q ߾Gn 6E.Ba7tvy` ; {L})BEv ]A92751~E_2@C-HmpUSi/~1f5zqH,)r@UbcJ3̵ քsMK,3۲ô8qҨܴ[\./hְ؊aqdޓ}6٩cڧ.i'Ff>+TݪvҬ6Vw$FKõ34 %6v4?=akH.3@FT ]ԃL9u~i &{ô~@(8'}i4pVT}Mc}bBrsmGE4&Ya^pͅwN>б$][.g$b@p_઩i,%0j*]zXr#ѽu;rӣY2fc7ď3pq`}A{ FlD{LBȞLk3lF!nSS)'(jCt!Ir--eW'H<4S~n{5kqŘ^W PWe+W sZ$2%Z'k1۶T'p|l/0v}$,i2.foLZ$@x `CХⳁ^z,%\qPn۟ڽ)%*=5ܧ5Hx$ϧ*:v[H n}j8ehZ3J1@/ܷO޵̳DN**J.G-a61‘d w)` =qO ; ;}3sYsH*/iZpnoJvߕئM_1KozG|BzT?a{a8Hl ҈䰱{YtN˗UbYG ˜:k䂚R$ 9N9[61 4Oᇷ}رpnM#v^gWkǛK[z-k#g=65/4cJPo W#?)y& З&ٙ$I^AqqirF@s3ۤQMZK3951FK0`?_KBϵ߽7Hb:] 'WfHx`aԾ7~Pf;av$4i I*%/ 4kN\Q|YnNx -jmRDPCPJ=: m}a؋H#"1>Zni:sb2Bcak}|N]po\(\:opx:fȽ|lM ޗVo Rk##xvto1 3~ s.Sc\ (y@x3^0k A m2H1-դz_UoG̔XD-Y=ʒКp6z,\)'bjOA`y?oi\Вxg=1B&ڃGNBؽt-׶l`5Wec' X8c&Ad8kLGS- FR1ps T{8i҈8ĵG)z ,Yw:ށߥ&:jXLf!F$1u7a7!{ԁ^Λ9w 8MƢH4k͉K#l~c1X\ .{Trkf7#0R~}g:[kWN'@c jBy )V+ɱ4~߿C(>b#i5rƺ~!l;Jb wwsB>P8ʍ.tgn'HheNCn9G5d2<[SAd'6 (`>5 o IDATâ%oz ;׮U.aX_W/RGsKЬ>Vwfzp;O6#ОX@ c_͠arΚqH~ۋd*k"+oi aBƄ\Q(b ,5O bο}гqj( m~{) [Ym Kf-P/qBbiN7R@n֟sG'" `y,t.6!Ew tr_c3W>C%>OK#ydX?H͚ZmP e6MaCZ*9y[`gwC*|7hCw%l]5ǹxQ7Fϋ5^ޮpg> `&I3𞢢y'o[)89m{@~rNDu Ǫrd)vf-+0W溉lf8[U}[ɖrDv iD }F*|kjO n+ 'e3Зk@fu_8`#Z/-,ѺY?vߌǵt/cj+2@x.; )i"J_͋yU&BkKSa+R_q Ĉ|Q;CFU Pỽ[^i^@ vpgP}W}Kz̈K \|g.7Vmc#z0kar%wm)7̖r,ggD]jm{ 5y?Gg8(=cc$0:@Cա{էnu[y;C7p|>WaKf*zxs]}|]YÇ۟ ܃wg0RW_Ri4"p&T]DWjفm(Sm<^=n*F&qϞ Qy>T)O<­zձPxw/yS? {gsRB:9v,k'yiO7#V~81ϰ[ #LY/I o0L`)v3aO' f=#P@UHG`hUQБcr,LQS #D bWQ?P#ZpЏ"\bL>sm;̈́s#St+=:&q>_KIs,Ys ^c %_Z(xDPoʸWq2(.׿B}#׮1-oL:wf4s)"E-+'Ť3"rF +g(#hը J'==TIZ6/BB у_|BsͶ'vɥ@(0Fv/~G '3$nHZog-a ,BnK^kQ)^ĎF=]kZ$AuAR8Fn,`E736G1…HB#Lg&ǘcQ8A$1 ؠGU3}05Mv:c 9$I9)#s{K 86$/Q%GᣏwZ9[kqABVXV/v0;"qq0v lTH!Y1fia7H*U*$lBA6#};PZ30u.4[fתx\'}bs6=t- FCsMb:t^kέd4?)/ə.;riO+0"LC `p%`e{D;Trw{9HK@UX)Fpa)f#${[lFߘMsZO(#*퓜{^Iw&/BB&za̗4S쯴* 82q_zl35 O͌eh5s~RQz& ۾6̂KT!9atmIna:15%(B6Ma25-%~XvFƸ#p%0IFn(l%bgخ-3vl>%ʹDQ${:^xfU ρrn%2I p*vg='VV"yTQ,`k&Y3kge(A 0>CCryogMfK3_pjMi]&Dg c*=C[*;gU,.F۞4ހ\pMnqދé<<җ:fG"T|l)ṕu)ٰ'-ZȌ`+L͍AE a9W &ܔL8#N_ \&SW?hb/1gN1KYJnUɎ=&?é<\fPʏx5?~v@ܞ.=-gΓ/@Q`gR:ra/uvz3ʫ&br9S 7wVM.lb AQ 1&X X؀x&E@6-P8F 蛇$WFsKἵk( hȏbY Xք$W>9C;wt& ~ &tIi!nxZ(RR?.N%G'80.9Fխ'_sm溄Yx@g=7:&&bp䎶aO@aZ415I4_\,e"X0qc uCAК4_ZЬb Bqβ3KN7D\!fuΤ&>@!ݍ+L[Xr'BSP:g@Pѵi6X%7"@ )X`yՖaڑVp,c_6 (Us<>1aÆ fU2lg-ʗ-̅:Řd%17 '=t'ctPqxcz>_(w>sTlj2z|ETAɆt;.FK|6W]4'gi[Ӭ}ùr3€|/׎m6_STwBS7^2> B7`:f?; :x`[DGBDx_)M:DŽSBUœC^ ;Qb{~wj+C'N0~<8k #nBg!aĵ<)QtHx`vdǡڰ^b<̊G2z lL H҉| r5Ȅy󓔋bZjfx|kϕzJgPp* 4t] ůqt.]$wb4$~|DԄ [AzLZ=1Sf \`ϡ`d MLk,\y~f[F5ȄVcfB8vlqyA PCv8yuK{mXgGaRe4glἀ`£pӰ|Kl. 5@7$ Xw%[7: ?>"5y<)31ɠD7lˇyc( ގ/ L N%FW@5+L:Ѹcz-YM)yֽ(T2"c l5J(gAxXrٖ}lỳtݣ"] Dh}d5Vd9'1 O@4fnelwMjqHN ްܰh6{KHi)й:hLcʊnjaAxj`d8;l{Of8-$$@X/l%q}Mf[L,3422gc}qL2s嚀szw5`l h;Tb!uY-hUss ߳!`ZDmc>²TγٮްX`k2|Dr&lsX1ñ=%1h azӹۧtlʉrHXb +˶sZfnRXBhK:(;)Mz Z.!v<9WF" Ó-;̱t |tDo@8  Y ]5Lyl3W(^opf SKvfaIK={L,= \07 %DY~tG[C\_ ,zDyL ڎ1NɧsIϹ @pc'Kq!ak4m+c3 LSX ư-} ^d EK璘'}#  qCjK̀L9\<2Oi?(0m5X̀@.1mcaB1gؐ={m6{ԏrgOq2͸ƌxK nF1NB(24k`;LG]t)&澲cv|qeiZ"fm&KKH&9 sLkƒConܰv(ٲ%{ Hh͠@@#Q1mEz0prꈡ^cIǟ'hOcy+8MTf h,c@چ@[ ,0u?b<H=Iɍ~O,FGOO1 :GE_ E ݕ9gP;y1Zy9)B z+yI (od{o"%_@˚>id-0gd.ea0h+L{48e{U~gXӁ0I4pCSO oG-W([\ &ɸ]pGǴ/? ݘa z:7t;L2BOȂ2y !:xɎ d[9y͖-ssw)*|EDžb(_0@߫_ԕLoh.1041NM`C@B`XCVFRWL(ލwm-1 3:tK[tpxa8`!` 6^ʈҁhɗ3&D8oMh=.t!L0=n1M@5Ā ^^h(o1g|[(.2x s{!줾4sCxC,>̡2m\TÓ+ul,Rhʈ"7~c@7{oIbqS㚴3ĸ{H΄}^c:1aoyzg?''va:`Zȿ%[_ٻrEw~1fPyG{Qr筵{L%dG <ün$]@\@+%\wb}DtP;uɐ lpkn4n\&ti@:\@F[ bK(ϵّ(LKz¢2t{7p"41hG1/.a%5>7K h~3zb a]OL<ܛ|0!^`F![ε>K05A!8i þqJf5Z dʊ@ˣn( r( Ybz9=sbvC ˉ-\8vʂ(-17Ni<xۦ!V5` wɬ1s 7|( 3{J7!qH0O.<^cZߺ5AOz c0y]p.1o\7uXȸֲla.rsf@|6#v P-2`pYfZl˜n x:ט:c:K OIS܎}Ll$}<5lA~G68qm+/r ah\fB<6 IDAT􂻎v(|iCləp50ݐ= }Q8>ܒj2W[b_G=RK?`cOpr;҅/}{ m:\,.ۋ mzw6%^y'RxhM(\X-0L{u|ofLLJ0N,n1ugĞګ8=t-5 6gbsc1nsl \[6fy/Af`a,)/KVs(0Gt{bs,pEZc_ۛ9Hױۘ7pޗiY#`z:Æc˶ԬnH.P 0rB5y9B55_!}Sx!5(Zӑi2+#M,35̰uGf_6- B]Aw&@%_e{Nl} w> %˔@B`^!M/Ke&5:Avi-[_ôt(3d5np*"zp,<t05ݳ3˶0euO-<'5̎:WD.j :kbt!Ic L;vP"@m0!s0N\cګ V&5t f s~إvҲ-Lsپ𴉢X|y-@O0u?`B; NH }5#״߁@fK*Q^@t\1f !?{+JX,\{}T7yg#pQ4 &%NXig:,qM@@@ϥ>ypB6dIdswhdi40gu& re{ckIeet!$^SxA 糷·|%\L^r}58shEo~&(,K-4m=V(og̍#cu8 ٷ2d;c8c.ذ2=6ṫ]tK/'9_i.Kd.29Lh1 CzbYȚ !r`w789.a-ubY`I,l__jBzk)DY'dʾ 4ĭ_obfš6O+a,۲-l_*S:*YD0G;qe[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e{4fٖmK65-Ѳ}׀&~@W<%Ag~e[4^5Y 5:I "%bRl-` .&Y怨5}Bb52B:hپFR+PS@X sJiak$%ia\{cXZ}clAJA3X#י2 h. K,pLk_P2QJ"-,:SJ y,K-˽J{J)qH|%csY#LU670t[.Bi^4ʂr82#}^&@Nfץr%u19<3侏e[@s>P<@ [eL,P ba\*!ϲl h.sbe,Q +k>u5WbY8|"~J 6X\ RB. s<"`08\+0c)wnsl h~mR;aQքץ(R#f{\ySUm)O1Zƾl_.ThS*5ul8Vs{q9W䐯,_)3GgO0`M=c=cOF_J85&7t'ڊLP:_dZ466~^c%iB(K O%9'sA+(;GOE\@k@} !AH2͹t).=Ά%W8j\}5Κ[/p[:>-H %d5@{/>&>$>O=W ƞgc),0Oww`} k^5G|β-Lg.guְȒ)ݮS7\hlEMR+[mG"ld,Lӯ Dz_ڹ7;wP˵n>ͳ7rgp%_MIS-SO-5Ts˥24s }k O]) c%7obawcӜBvE]z5%Pe+lK|L|V ^)s,6j1eCrXY8[) s)"V% P爟r-Ls?W5\ht-U<K윬7`1a奌< rF,W rO*@|@ְ2aeJMy<(ΔOZ3y5ҚkR\;kk5kru4g`Xe9Ff7c,MRX'}"MDH*qRZHj~Rr֝.జ"ìR}\}t,9I_BHyy/gCh;+!c:̕H$J9[̐мh:u֔~Sk; B1ܟBO8$@ ,ejL>)Tc 7<&ĴIwt03l csMdž8seej[ / 0ΡBL]NX~ʜp9gjeslh_X>hCNkc$oBI9@;SE þT8S֥P]*ҏT2.c5c70[ ,{,58't caRNhly`&EBQB@}5{Y9f|H7pSap$ŚM10\ޫqu7fN[LS5g37I!D*F m;jKL/%)aA.R~`pBјD)q缧Bwzt팱h{1!FOdDmOk&%+W;x3c2z )ݴSD(N =[Ds4ew9# rM&RBӰVD!^$DB`Dib:1 )GV sNzo cLK9-ȏ sZ0Sb#L}}00)^5*}C`_\aL!O d3n^ ;|(BcLvFcg|R)%K@nuH(1#`-䄒WM9L׿stp9kQUs{4w/eCZo:8(0+4ȫ=L5sRzE~1sm {b9ȔrVLB9HPvl{9}L{|}T1%CPCbFu90,`]>Zs[?O%H#r<ـ$9)&P]>͠}Y9u.㋱Щ9ޱn{ ɥJ0 L ? y,2ʖ@:eg)GT\0G83Ei7T3]2D&blko(\X3&ںÂu#sB#? (>zy3 ,zn*|܍q9(VO7TGLm?orN[CNA*5 1Cf2R1Sb- ##JN "s,<͙C+1 1\+S"!>hMD`f{yrBk^(y7N`wMtJ"T”3C԰) c L;f0gSaζ>Cd̎"c*+Y݊La\9v[{@D7qʭVlW:Yi-4OyoSr3c`"cy4߂m--9q('Obuɱc2|L@9߉Ă7Ls"dJ3/hiPq=v|;NX( 3(3@ 0Xcyd^IE8mf~njyw*0T$R`Y}blE12MXt q s{161a%^AlioG)mWg̤rjh;+rnm}0?2;w^dvg;vS\013DL$Sަ;g|_a[SB^dl#( L sZ*sˉq1*6+>hr -"\@NuJbۗk $'eFŬ(f;{,|ǘ8^ak/π vnll \cۄaNTLHWֿ\7+Z X0_6rȺ%c I.P]ck:SKng6: %uhu!hK=} 2fSdSN?9o1$.= *t,;/ˣ\-ϸz9ֹǷ8{/\P%2)L9" gpGqau"UcnY2}4ߢ=ABf`OcR#d2X2_ "}t6G>e[zB*bVG1Q"&Sdeuv J51`f.'rvwH2>i*uf܋Hbc+F 3=utɘ?}^=Zﺣ}rzQ2{Ĝǀ2hLVTξF>|:*trF(PsA*HH)c絿A$ S61v+J;u)۳!d&Eybwb:X:~>gvpyyJχs@3KoU@2/l'd*?G4ʝM#@/N2}>9`4G)Sl8 S^B"dLN=8}|10Z^. JPis b˅e#M-9}0~@2 )gwi2TL;=:"o'ǘSFj`@bڐJA30 y x/62'挼j*2ՋʼnOr/;WWbupp}޴p[=|!pϵI9J9dNdȎb*f柏c򪱩vc1m +1@T~3]Tx'P1k'f{)&ӟ$*;;u.`e4 /| 4(>TzQmc'emLﱭ9K)@ B1[6sL;{-ָ7)s68d|1"@/$5֨GXݽ { vc,@{d 4S,3T~|  L1]lQQh`M(@+BiV?7T2Lwaj!nn-hn9Sl}-(vksˏ."41s`%V;<501EA3pNJM!2(Z?uT.^);߮~sVJZ msȑjʚffHcc7^#XN XB0GI6Q11{lvf_`&fقVX߄:\}{Ӏ2dO !Vi sK$pe@9j S#K ;;>ٿGD֊#߹\/)VS;ɤd"e0[<|ZQMXU|Z 5,礲!0C0LZTU%l\+f:6cttO czsս&>;מ-SvDPv8d;1jہ3YW&3"^-D=eB1%&sÓDGCBaDńv~Zs)~HҁE KB Xk3&/B0t׀1=LTI+Qw_7o~K^>=dQ}:fPH23;0S X>r8ߘٯ$X1MO=rqg(hk [܄7[P:˖Q̐ei+CfB% <9!zlPRq%=k I!𧀓Ť2_,Wo:G+ssrRz)#{)Ezׁ6c"rCiQK`b&s@<}y{ڏrisyAsV_{pu2f z-Nl󗱲"_ &%۵0g] 4!Hl34m Cyjkκ%u6uӽW⿮;zvR9ΜsIX3-=.SS]B E!cظȻ (H՞ƚrLLRU`[s*+Wyy #zR@D(NN&TbR:eNQc#08rpnWQʝ:G}5h](}e Ţbc! *[ k}`rm`;,f@ Krdl1P:֐WlgȔSﰫ]c&$D$ÜxJOXKBW:(`ƞcc9`V F8yEkC܂3,DC-vEyT- gчQ':tf;Gϖw^i䲢0%OOMje-\ʣErgt"0\x0fϓF%buaDz2_@nMI% ӂr 098a)EDu/"j;вTy8kOpu8XE|"r)[S8$P1f~wɘn}cSXc+=@J sEK2^fj.n*\Q<)^`k9!Sw鑟 n<_EQ~&kND <%v lbnAg3skP[u T+S8'hƏsjSmX'īf2vy٣[8ozjrX'EAsMchCΡ:>Duƺ3#lVoYf%EӔo?L :tSke<\f^ͽh\Ck08B 1hC"Ԍ 0]IUlǠOc r]}R僱@]cn6˼cA3W&ˉy1(ƌcu).,.?*9="ܺ5 Y!fg- _g~?u]waxsÓɚq3>m:#.}JI~VB)"e  Xy64tik8d`r;E92W6K-kB#@1r|(s?I[Moa26ejh8qi~' &[T|:*0Ct:/Cl]@~X+!eUU9C5cbJkZv1$D jI6,XA%&*;,7bAdL w:ՔϚw 5_}`k78*IB~0gp"w/-O'm_Ιޕ"MIL PP/Pl܊V~ILHYVU,s/+<[1.Zƴ>$Ԁe<|Bh+ a.s߾x1Ka( NyOdX>fSN{vu >@3[+4Lvߙ8A5d9(hiuƞ eى#9{3m`Ikc=^Y䙢? >-X?~Mf0 7Εac\-^X9$eO.UVU,[*.-.Ym[H*vd4'x$AO"1^IXH%hNg?2xBwTtpl3[X/:0Y܈{Sohj 㘢Rf2r#22C@g>eWEr(¶ZaupvO?mL,9ʲZ&/@09<\[|Ƶazv9)p@Ksl|H,ayN?UP]?|S/l*p]2s)|SCuWOz9VNI\b#}cX{!- boUx#H ݙ ĕvCŴ{ l]aup{/< -hjBRκa:xfiq]>9APemz/X>O"#E`5= ȒA Q \%7G;wj T|9'\-᥍\yyH"Pno[X2#a9K-oȘG?B9]"O /۶P 5\fDF/C-)j>`bO-4 ڡĺfcH9 l- Mwpu$n/ˉS<,ڒHQN~ߜT5,^꙯笫]}Cu%:]Zn4u){ Kh* 9y_J%㷙abwdO%18ui$zBO7gg[D=P#H&B. uEDbUDJߛBsN8f(~k Md&*q@ ,Ll15:$IfKĆ3B~mJy7iHdORF|$PDy s4ğ \z]LRM7J>pc2SH?Z/LTdO󇞾8?uc-SyVXwz30|{EoDV8W5X9Lݦci}܂&mDeY9CcɌv iwq8ۖ55ѻ ~)8 y"]&4#3>`z7OXvV mhI¸oUd[X36ݒcK2W׿ y4t O sd9MJMLHoyNH>7<vl`Н !#nfzS~blr! ׇw`oCQ[܊|P%kV.ok/?rm"DRQ^9[Q"@ mv.[|k9| ݘ`a8kbpKӸYOuMC׉ucmrl;*QPA@ A-)aeכCF<䦴:z&xuWQʇhRkd;#ukF'P^KHjŒ/1,wE{mX|q%YE9:CxEoB %w |fohh { ~3"ي>>鈀 1#g10%Zs@_)Ӡ4%9]u67QM *K(=br[''& G)89"D}s-sjjvdA4)9MvݫO)?S*f[}VSZTE}ʲ1KaeEh 0Wl]BmgN-~hKBn.Sajj| X5CωT3 -<0V5El9["!u겵ûpr~ZywY}|lOvdVR0O:^4m;H}cյ>;LƦ܈0T3p05U|_`Sg)OgkC؃pBSL3#{[ufUc5NY7]֧!]2k!Wsd5b bNk% YWQI c?VO'g/=Jv<8[.Peej ui6T2ӖewXkqe޶wD(Ah/)"5*~5D+9L@KuJL/CS L-WD4f5Fr @8|mgRӥץ!r_NrX{n3CԘ-V1 ׁumǀ:VYsɟr9< rWZ:ڇ;wKmT_ff]:wuǏksJ/4K z-~ !Zjˉp~u8 n1O˔qX!$:~{&K`chC"$LMg}p~1stg/'~-#ARdtgfj(b$P "_ҩ] Jg,f +:Ա.uoʢ2qzaޙ1\Ĝ9xr݂Nk2+&Pi}t^QWt5&ǔ19X-w ֬4 w$-#Cga@`K3?Z-_`W{ 0Y>-liE,7!PZdY5VZl%zU01= YUA+%?!ФT&)a1XoJk8=c-r;.T-^C~mڱdWLNH!:1({2%dH!}^@#?툁^?҈_(f윝\7a^wE>d^أ;ز~^3}Ңp[xʡ/z ':R^[|5LToSQXS[GN3,[JmS.ZZc>Cv8CEoNQZϺo92~3+tX~Ì7 s۷uni,_bN9&9#1HH½hdJw4es8IQep<lnCwEal8\[SSsS69T-t0*v87?H$Xͦ IDATIbg?#dmq0S}ۜP1݅ B)(\;6RxGcŖHRRfr8KJI5/lN/>zfwB+/~:L ,[\s^ &i/gwnjZcYD`=N&U>&{Y z3sf ~}|` \ ,sġ4bu:S#e4RNVCbeFܼs0931+Z ?R#`˴&R:O@*f4;uǙ1n.=7FnueËǯCo0[ls}mzYxnU㴣f&Sn1UXjc$7m!3Mu -vYf 1?Ը+-Ѿ]x)盛e[4-![%R4x4!2Zc!ˌd]kj.ͤ:c/ ^zAS:3_ٌr݄1V}p0o3L"Cr)uy@)%7(To∆bAX!J ?ۀB0+Ӷ)12s;|=V̒AMp8W71U); Ɗ 1(cKYHye,Kw#q@cf3?UNK>VP3e5ny-.7i2}8[# S+r>}W f >K;JV{V-T_W[Z#ul=6kD,j6Q<#ѵoAw ~&S&}5 G@9L#U&P)cb oTPi1[# \bAC̿D%O%N vu:WAMr8imf+ZLk+z$Y-gS [eb+ Ë_ OPL/ ip{k# b~}mLqrұL eۛcŰ&D|1ٙe:-WȠ]o hJJ#HIGrI YWM_pSXɄsp/g;a "= +:i+'M?> rEQ BS?oYg+ƈ#K_s^>5>G/W'Iwpv3>Y(@zX/(Jy#RǀflG\^\%,-%*L1(@}p递y3U[*5TH}zwOۼ:<i#uC ]vm6T-G }%|=XI+CX^f7reBpP6ϑʏym70%~,~tM )p4iR# ײs,4[bn(Zw=Af~rL`&cѝMh޲pvUs}v韈) @c0ZUG6'H"ߟ9[eXpmfjCdžcL̥,׈5/÷]79Mo'b4qBD$-q"4GB5UtR˥>9&c>YEpPʹ10Mk1?W;;簰ۆF{H1.fg3S AZƵQ1(.s\6|6sJ213CNJVBvul Bk"0IRov>V)'b#- 5N;xNй)'?5dcFɥ8UJ9\\ vȫѠK`9ư\I<-F >=aŌ?$۸\n >o /hS192&R.ֵ&)A(쏚r>lv 9J) fXr&xJ!܈O BoaDqwa_'S2[tmA{g[m-ٖIeYÌG*2 Mu8f[:j[?93=悱VcvSfQ5pVˮz"|Moh^{J< [H""86!ֱ㐶LrwǺzN(55<ī{0tk 72vуfr/ڡM3N6KF,UΝs:kal̈́寚޿`| n0KpsB񜜞ˌ9I-okԲcS|U/;c .&M?ÐA'&3./ AT;-##;cl cZjU1EW@o /,[LE9yevO[䒜k~XIeoҝMY WvNm5nrbzj=ᒠ?&7Q2m~rL1? K\$f>5'!5*MArOL1D$$3F$LJRd =@: t#V`d&@)G߲I6,WJH ZhE!I=gfeoL†EKQ߶@$b}15K 12&n3)Mn,1V2D%_B0= B]-r}T lo}H|gĶd99 οF4Л\t_*nI`2<mFcлڟ Ÿg4tj:[ !f?Z;LX>C% {= }"N0|;'QsB!|HjVdž̌  /УI/רs1rvz'ɔ@r[$)Hc/3::9Kj7H`iit yS0ޘtgvA.tCbRn_m7 {L7@2VF=6 j(Higb1= :k Gn1I: M=$4fH=c͌-c#AfL+6\e c5Rl,ǝ=̱HPrlo3tBX|,h(()0&x B]J@'dv}_[i%HiFKlԘf|MXq&55 Ja_ϔ(F^O\+Z[ /mcy7 (11g.a)9c;rĦR۞)]-d, 0NGڶGBuùAtxv.y)v M !pq'!S#!h{-7"\b6v&2,1aj1 q0M&HH=ȆƔ-VT1Im2dM1hm<)}f殀=&69sg.y潋CFؚ)).4~ m=Ѥy1"pwddA >^la \=DLx%v%v#X ބ^cuR|-s\~ 6݅26ze&4=nSrڴdQm~zƼ7Ԛ a#ẉ@C1df8قˆVk^یn&ѠtsEI=0_e\KXƾSNH96A196$&d yJyL('H@O¿_&ட12&_>%({thm;KC+ 3(fy$(`[Av2ft ˯qdY?xFfdp*jYqټqpP'v5ߥ9ݱ<\μY흒% r 3:y t >D&xD(d9Xs}a"uΩK S#25/) )"1g?grc.bbx=8T-͉lI,yr}%mfi8]3JA4!c'ZCͤcRlrg$mj)}8a'`PB/'˙L\, ѿˍ8gSΘL2M)yM>Kt /D991#l0NB8<"|h iD mb,{9xp3t&,(j@by ;$b ; 1<ä% TA7*D$ "!=j |{yBd2KDBiz#n22p۱ T9xCg'YX[kpAK@v<@ NXdZBC^~|/k+ΠssѻF Kњ2Bj֥c#|9:.p$) jNh,蕕4w5Ӵ R~Hfbѻj2$F4@C c w.+8se@((TZdƳT(vZAŎ+3ƺ3; ɻDwm9c dg'`~&ȸH CKfX6-252r 3]ЭD%2^˟K~u:`N,3{*1Epnf)Ljf1r^G܋u^Ϲ@SO5W{4 s@Kޏ5p.ĉ# IDAT"7X?͒,bP0pv:D9'Ì3 Sbh"*A7iL`fc6 9EAc!>k;!cS:ۖ1>.qW# H$c` 2AE1tɔKn1)GRCv.p[qʆ*)!Tcʑ3$]] (`%vv}?V%urG 6`~&*P!>E-"ΪTp$blD5b'$j o9%QRBy4E D=R @`4Hq幂NΨkAz gܿ@V8l!W Z-^rl۞7)3L.)Ͻ:ޥՄ J|&p,U#3,!L^5K]g8ܿ^H;sgwؖds^X9ljn|I 4A\bj{+a)btaQrf-y{g L Jp&,\qE뚎m@}V4!Fa@)CGz&E cǺ~wn&a]znde2MS5Mդ0Y$I9GF!>}WMgs ݵAiI}IP˴n!GHj$SL©ӱ6.Qc"P{рU.I]*>`c oJfԭ6-Xϝz|-9dNA0F>#:'Y&x? E9\S_vԳ72wn΃ mAoqTDFaXR 9B%aGPrg AJbKAh%YHw38(踸KV%AȹBm5G="=42ss,2I ớKx )C cG6& 9B$ !;u0dZԌ2$+  S%k&(9DVaМOd9.F$"xm*4q9">ÿ圁I7{}ߨv`Xyb!lI ºB h/T,zX+>'?MSfy6";%e0r60NgalD&?+y uӹx? Α1Jݎ'Н@43()OF=5H*sXS.=orݛuirdFBrf/0M)m{Z+0#}  YB7!hӘޛ6IWO="2o @px,g!?zEVdEvrx̒AF]Uyn3liOS}?%&K $2Td/206K~p.ҍ 5)brLO$X^v߫l`A`hI9hi#f)(r.y2d3VsP hTb-t 4 Ys4Vsw)[R޿gF): sSqk%2|YF̚P5v[7&TLS|ɖo!6-tdḉ[f4yDyǘ֬}l:į%^9QgL*~F1R -V㦗2gPoਹPmJ=Z)'P8N$ /:XeyNl&7i7 BQk,7-EZ! v)JV]iKSW!W^K;< H WpmZXX5?Ŵp^Aq5t#qXj9sبü?z]Q+Mh/_5FQ eW͌+0=\1,e{qicES{I_*זswnf\`_Z$*8i"ovEP"RgTF&bE^-(;Lz#!7Ќ`\Wȕ DSp;D + ? BsTXVVe 9Z+y{JͫlK΍By[CIOR9^Zu!+¹H2=b7UE]J7ʍ)ާ=50(^?f)$RG29SVkN6BmX6QL]'-i$N~C.+A'87BR/17wkҬCyL;紀_fRƷ4 seāy 4?>`NV$T;`hk`LcN0dZ/HKxX(++yCdžg2Er-׳X'֖d6Zft ^$NXЦ9j07j"u)s܀6N]'1/3p[M"*xY|Q>FȾ&n{]!NU9y00 !X].#`ylj1*MtcǾ8K@7$VC)?#ZT+yēd7r;5HÐ+> s7"g[7V nZ,\qp}dij3.SAkX_]ׂޚ/3؝ .S! xIjNW2YUdy>a? 0egCF'!JHx ahQ)_+ͻOU3.:yX/*bIA\ >DsNNܵ1̣sW"Ǿi&#Ƕ̬އ]:uH-5xq:0[HQ_UAi`|t" 7'VJ]b d J5 cq>GE(3D˖[k!oZ7֗S#PvZ~ W AY ,y]0}j><J~0mN1x廰<ᚦN|aANVIknxQ:2*Li0,M4%kf1Y v@MĬm`axf{ocNP6N兎~O8,VC՛ rB{i`e3btO-ێ=gM!P9f@PP0w9P^իb|0p `IDywOAd5p! #>;r >K;k4=t5Zb2tE&!Su 1o2fwh;u$pI΍+ZL%0qj:I'0†U$KQwj7rgO'%h<̗I2TnSV( qȘ7Z,lxf ͞Sp(eH(⭳6"A9=1L<Ix)rKj컰LKXx>6?&- \{<0ݟ0=6Y 7v' )),x<uR'Hro?řc@M :L톹HcTWh1X_IN/Je*kWN +K.!iЬd;8Qzt/s=b)_x=O@ ' M46tZ)qOsd_Vq$Gڐ#2Y6| _&KJLs ,<K@[Z!R24c"ga AZ{N̸倏6{Cnx\z_+3莆5hpy&u5ef.veEnMoi>M G/ŎMIԴ~b5>=0T9yְ>qeч)r#%{kG;} xEGŶ# "hi 8 3"=m,"h`sM;9N:• 3>v Noaʑ<@fp}U;'ڦf֖Foʏ1Ͻ{FEڔR n?(Ɋ҉KbˉaKL0Gmp9Nđ0sg#bOC|`Y9G_dˮIYeYSx?V%.Y9c3(XYJAoQbMZ-WA[鞗!*3- $:P?ٟu[ f(}7y2%bnd2wŎpCej2gJ: _/oY]\Zk#_=>gK灀+x3"\tGNUߥ^{ooТ3df-i:0~V.RB5ѭ^ kP + m-)׮di @Q}d{#4NMϑ}wEۋ'6ۙ_4&lyH!uE5M2x=0ah(+r+[]5m9[ "g9%V^"^& \N/NU&ix7R\\zçD䈴[ONvm`'mF$rVL 6-~ɈZ"'g|1ȰN,Mv!uhrdWOvXǮ r@ӂ-VL՜iJt)1s/XJ!PU4xwQ\k-%@0rrY:B IDAT ӬYQ34:#li%"8ƿyےtT?z3:HWqw0cc{1 u>Zң2n|uIVgnE(Qq'd@:U 'ߝL Ff7M8=f%:# gub#B%8;s6'fq PkKXt }@ul!&Ɩtnf:sO{>)KuL@bzU2]qʏV BpngYX 0#e[ rV!Jyv{U|YIZ`6; l|J%chI760 _ qehYr`| Zͺ֖k yZzɢ\h,_`=3:<3ڊ,F)\5T*͙wh \GU[ {UWz/5[(-WUۑ  MCk)^i2(3fv3 0%NY["5w3CO@"Y{i{?*Q.KY]HiuUcd@ _F4j*)eQ9{|+tͮfs*} :؍pXLmB [d@9sI,i jiAǗ-'81{y57۱ȡ&^Z#Z3+d@''~^g=?RR-H֚Zg]LFjY[[Yߥ<_#b=:i;R'ſSh$nUJU/9ۼ1QH]1v2 Ni>6]F̕ Ir¦D(//ӌS'Qi1πU;ċ./^37Owɘif4Ҧn=ʅ=GVNS]sC@hUcn?Yך...4,Y*[ ^,P,͠O|Pt~ h $GNd!?mh/*kVӒD:@4J~-Ζ_O#;PA sz[}H>$8kfLz+auQ8*~-^uF).}vi*ܧs]ݿʄK!JّruHoό'|:喆Y?w39dc-mt` sUnE9JFQS>Ɂ~s2uuي]P'\hX1k c[Hs&S\~]uj8[*@3.x kYWM 3TwZ ֵ:<ʄB[WdIf.p? 'rƞ*~Û~8KqkR-bߣ.Y泌O|?s?Pc0gv,o;b%x8 %q;R A X%]c~i0q_4̴QgX™ynK Jbrxtz?EU:eiFV:' F-ZiUA1I'[d׏Suj]ܗRK`wtz 5&GA2P^&~>;p5ۤ[n͝_fmӧTdBvL0 zlC<)֥u̘ aTVө˘B(A%*yar³sS(5xpFShiiYbK{<͗%;绱 w!N[bow?kZR2iGZ8ۥ"z;~>BҗYj3MV{ P{q|ĹFD;.;qF'*JsK6ZԞ %prR)^OgPjbı,6/EiH1ϟp[!3ZOQ4V0x8%\ZH>N S9.O387/Ua`hM!2S@-(g [͍]֌L0_ 729k 0Pzܣ+YѠ.p6 ^7D uoCA!mKP̅kyr0&sآk04 KYoَR#i6v=ؑkwd%=tfNd-%iZe=|4KJFZEj>A k5O~sKyk~ ?約R}?gXndVlok/#(i^^f4#NugC EbZcYe R mbVZR)ZN2ԥYgo݀n!5U\J ߏڦ=s d<'\2W)D`p$L /8/U_{y M_PsB #@fL󴢸/#~f!& ko#:[,fw 1 `=F2;>;G-@̀vPbM3WVK%` HC3jm<3h}ׂe0h0W)Ľ9;,'FDx G+ds$ s!J{0$v}s-smrkӻ>ehݎi l=߅#bFf'JA3gXf'آdJ]3(S(d Um)(7edVks2J%k9KF~HI̠u΍([OņfI ̔ڑYb5D?KƥjSNqgҩ"NvVN>qI_ OѺ|k|q--u1_evb4<8T֦m'Q8&:RDКfj^jwpxg<{GQC1݊r$* mHnһdDM.Nsn )s ݊۶#p܊#8>%ka7طYi i\b5f5#5>qJk hc8<{9q72 @ϋSCGt"4?%RmZYf}w%c/Sq<OG)H2KiTբP=ϱ=^|BD]瞇-$h3}4u*n{D.zDeʥ@Rߟu"?%!+ ådr|Vx磞))0ɥrm4paKetЖ4vwkR`K0: Oņ6ݴG,.W0)!{fJ_){x|@ܼ$Jy`ÌOΙOy|_y5J2Z4:h0I]TV{]v̷oŸ(S`~,GQLyIn(8*ݥH{ܖ+-pv ? @C;(/(~ pisq6&'a`+^璏j<y>}Dr $t4pu!|5xI%3}^w[lKb%~ 6*t݊'4A:MC>i`_٪[ e~ɂƦʓp#ی أ0̠v#*2Gy`~3@s}rctS\{f<^8jiiVmr?)%vpry 'W`7gh-־Kuq\iIpo)_bkGf KӜ;$0M he縢µe[ֺ%`jMkْfIwA:[)I T[6M,TkF}s ,,mk>׈5n uspDxH_C_+f{HVg)a ZlYnpg7}kwM"**͇e2iNK p:~l~2j@3ho%5Ȕ9 ;.o5Z0C(-`̥Xg Ӥv9#Qʲg'po~<7c8nKs,%U6x8]8)GxH}'h|K-JDrõfhB\L mH8y54 i}ށKv 9d-59"L}'<M n{F/jU.g/hߡWbr4Ј&֐&ҕo8/={4W[?߿7j\v d L2{@t)?*UnDoz:M jՀTY*cB3/ogv%c1#I}iAkpQ3UΌT[gbm -//urht`h4*?f* ~6hkFiCK@\Oԓ:SperNO{N:5)FC*EǡZ7 -~_'aMk'Tfh概C(ϯ?Itq(GһfǠ m@4D.K&)9}wAtnlzchs5p^#2_ +eY p0܆e8"C|Ca+KAA؁DEߦ I7( +#fL43rI|q<|%(XS?wZ6L}AL y׉c~¾7آ< vyPm-W㌶Y:4f\)Mw KY,py L?OܣWBD Јx8#MDaZȟb},CpI?/V5 `d'LRðQɆWrE'fP1]-=h8"XAAHV/e^j r;7:ᮏ@<&)6<9/x?r*-s0;|,_C/w/*x:Uǟitґ ^taR Kr׺2pV -˶ 4t 屔،oVh3N\]8z1MMn7 ߃r%%>aBH| ?=ֻwȒȜSeEn 9\0 ^0Z#17= 4.0Dpbb gYFME`U%p?wX.ý5roy4#FטB:ZϐƼEJ F:)0_ E4Z ^G-l1Ҁܻ^W9V.nQW*cъi2=ehmف.n1r!MӘ3HY$g8?ǯ[l1 2aq [fe:a\҂ KG}d(_?Ȇ;5?B?X̫%h,o~NןWJ  C|(0L1݊ǹU/L<=Ad#B.<_e&yJGKBN3fHHW6aJ}$(0iR(>;C5pL_h,G9Y_7-2f95 "~ 2.ȍaBx{u]aS{&VP/R6ut=cbU0hPTw? SBz2sF̔m.ܟ@菊QR3ҕ,J[QXA^b$+=u%Ww Y\z\%{/k\ط b8cgFQ.YTk1M z5+%.:OXoon@R %̗#'Rl)^ZgSr|#k\h怿GQ8 ΅ Lz/Z{2-3Y+|?ô2]E!Sn HcKp@y' ԂA>Y*;XV{d2(im2i Nh^m@MaKeB~IN6o>o d͞q|@w٣aƋFlr F-J\ BPMXFN;s4[PQa ENPKb`֝yp`zCdFz|kudmG9@~"F.=Y?WD+r4TK]PF /V 0Xim ₜL,DjDtC&wPnvbiI}nx"\M4mٲTmZlJ_ +MRJɝ s̸ p?хR_jPl5Z$P{3sx"^؟ג5B'v/QN.,28W?,!u̍RrT+NHwBNo%7p52m,n}}i2ݚmb\;8+ׁx{ǃXkQgF ^"5OcҬ2NAXNL猂fzBK fB?Gwx<]1ɣAЮr5`@.kñ,׍ ߋl8d)2d|e \?wФʲ,=Sι>\t7Ō[+Mj2 3qe>}f4xqǐ 9ll5S;"ͨ0K>a'C+gΎ #@dE"daL4D̝Nִ3䢧pNg:|Y۴4LhL#>`8FrQ<CG7# ^# ++!Pj=%j5`#e2T2J̲Ӕq#rGŀ4IF s=o$ mHLk2VM ܖ IT'&wC6x\0s lpM(A^jUĽΘ5PIz8YYċ=sXحi)ʱHmhl.Bw=?b>D҉\n= @KkG92aC7 XRNql>G\= g˚S/iV1OԀ۪!nO=&չFR,Gj[f2D$QbE Ӊ?r>&{< Γ-.esdrɈ;㛛ze,!qgРt-_8} '?/CfMXz|ryuzwk*Ho+C( RH]Bn:g;hRfu zB_JffƏ(coSv\o.i25bnt1εls-awG<pV ϗ#`ê\rʿ9Qd[_!չOGǡ?4w'sXr5mHMg #ɕ{a\ (pFZGNvy'(9SVsm.ɀkR~hyyra2%k.chSv#lRT#p2SY *gBgw א,0N fbLAgyiT#)N+k5i'Z <16 tHwxG 5無=b3~-Γ@.s;Ș4KT(aQV9[B8)]>vtx>gݑhS6tG,쵌s`jbCw`4|}暓2 !if6ꔧ.gd8>/YbKt5Y*K]# @?y9|Iac|`tc-\OƐg D]1}JMLs4w7J)٨L3ċۢ~Ok3]V\0~Nk們8{,t?2j'>p$O^c»n݉dVQp>p_ cPvӞF[w3x5M9/o`j_nإ$xǒÃxΣ\؍R<aF <՛ JyנcՀln8t[uȖ+MAp#n摌DS ٟ(CHۡࢗF")4&T/?밼ZNY] ^)#|}Sovvk^fwq>lD38pUiAg@)ZkmqX6LqB(\7w.}mE)Ĺ_ 4[j>]?(2*ebl r9D?*@9# a0FCdiU=V`5ʞP4.DYG[HTzZ) t=w=٠Q15͐}2րIIӬam *.^5Zdjs ,q}iƬS΋{c?il.FdʮUz ~6N%fWl_K1j%$BwnrgI[ID%_Woڋg 35aN\'`̾Ŕ\ Ow+~  xҏh$wƼH'5h; c1e ')hT>f~?`]N?ul[m> "Pv&%׀3% /驵y z)\Ku`R4#\>78vi>VL~x(鷂#I6wH6;%>MMJ5,]RJ`0^PgIӪk&IՐ:8>ޠ4-64.|qܲ>k(0w \:ה5}W=SOޔ^PZLጷ;f).=b SE`FU:aHI2(HJ}KNZ(@-˔ ҍLevdY1oL/gfc8^!\!rm$Cj9j7geΉ_8:5?4\j3Ṑ{iI){os|o.fG:`ߍ)e[Q,!JpoɌ? +d(o%,ϣ؃&JE_CY9Pez@/ީ|FI,aC8ހ' j"ی#n@M ~qPm^kyI[k,o&+ײF,%x,aAgJ$!']O]@3@F`|4MƼYK14sƁr;2PʔwYj_(=DMcsy9x{>m ͆Wٴ@O㦤y^3X1\/dɭǵ€DlR໷ 䗈 Ǣ\Ahטڄ6G݋u^IP`7gs0Ԡi]J`Z:(uKt^Z܋ҜcjnW*wNt M+I]H];rw!Ev E?Wִ5ղO wy,+,Cl.] ~nS<,f-'CI:% ,4(q'>+xf)gO¼ُz+ u. 9t92fi (ԠDsX(-W`>-Ԩo~W (߬WM/e ʆIbt{5OG%قݠu9i J Vo1W2s,) ͨYd4]upQ|#t[ePi24MYGtV gG"M2j6,TWk͵Ô\#{_(F_"@1]fJMSDm ݊])u(p0{ħ>\?iZj6<9璑zeֲJkeĒ`9.R}?fI#>C p0~R_.d aXegƯzylh`lu)x(]$Y ;OvsӬ4+w Elv#S62+0ߧ A."'G>\p\ihsԌ6޹O 7j髠8:CIAX콌`v-kPoRI*[$zK;Pt `yjr8jHq^I }r:՝T{FsE, 6ot6[E !FGkByK%un[1>/9wޱr ٟ*W,u(R J`2}_]~Bc$Hی4r]6?T-ΕRD3"S-6#8ԣ L+1vbj~ul~a#uS[S{ nG\+u₶i!-as,Kk6H-Ycn+o昰c,y̡ >G;jX4)-! L0.0|b.vF@A\|9)=veΧ˘UTɢs<=8Sǧ[W]fi{Ih K,]Pn[Rɟ3(k-i4WcBb-5tk0a>f?ܲ?>#jl:jwkݸg <W(?7lm`y`Z ϐL}1OHÆy7H{3O#@vB<StH`r[2eKXjnRfeo+A-u<@v`%CJ9d0,T>YП+EكZfà&n[8tMj{0U|m\ĬfdTYCXN[Wuz ny|iV&s6 PC#@SЬ9s-Ksޖi>|$(fYFr/P7ж[3f+})-=3GC  ܢp-@.8_7ױJ#}Œw^;!EJ)FfQ?ݨ>7?*1#c2OQPZ-2ǥuĂ&@piU:i8s:@Qqi!As56r9"7mDނ͘y/V&rG33p|;9`BX {$(lqљcPL,S@'Q`SNERl"\P%6=DBz Ing/D .t3f~Wyz}rs. E V>iN&cu N?1a4CN,_hڏ~ {Qy379@"Ы+!GEyގW#X+K⠌i>yS9p_ʰG5 -`L<H ủf ^ pM t%m2ڑeHƚwo1Ocߪכ =KXnCy 9APzypA[\ᱴF=t܃i~L_{(|-ؼpq:ع(\K (¼ny!mHqx/X\+=(ة5+_/|⤶Omcc+<$ g'X1h}ڥNKaK b9sjCs+e8,8Ťg3ǞةLGK6'SbY,eF,,޻Z^ak_9ݧ/3͙/3͢HI$$%ؐ1$N`X0$[V؈$1$`#FH d'H3DLh6>W^=3=Usz_jWծ[Z[ _(X??CR4o)w-~7L.{DؙӤ+U:Qo ]SPΰIR`MAL邩Qu΀Ct{ڣL5o, ]B3'hNLSl-*)Z5:O-=0O42jo^j(](̺SZjnHUJfN sC[IMh=g|RcYbƁ0r$-&HpV1IB߅kq+9czvv߶<}i*d\'>h܅]X] U-I3bJ]Z3Fwlb +ˈ C7 ;$+*(üBNS#タ]&"re3¡INݤ`F߄6I[ =d2.%Q4c] ,MA榇.L(xYN$]C٤TC8u㔸s}tP( H"hSX&܌c 1N IKNyB:虤AַҗyPsD1O?ᡃh>Bzg(J#!^#/Q"VLi 9"ޜu^IF )DC?=VUbi?cn"b#^DBkB߿d!6ꆵ,sz Ze=T}?r k $$441]HS~BV0Y.mx$.F0ND Zj`c,.U<ě BsB!f)DXdYu%T$ J];r—u>6?CvcUK&qןF^CI# hl%hl ۜf6H`DgM L tD|cd9mD %jOSeJhHH 1Sc-ȑ>ܕ%?K]x!^/;pNDQoev"_JD@,3ͱ:G$snՍE4候; sf*VO]dT"A#ߒ=V: 3FZVzQ(0U =$KIV3dBC'x-4?]cU6˅ڵy.>۳ƻ۶ D9#pD, ;5 Yt{BsdSu`4CxmR|fG CBu3Q^\0;.ɴD\C"D7ruJJѝxҊ÷:\JtX}) FM )Bc=Cx(@LiQHVe]Gv E:)-)[v@%Z1(v 8k.Js0^K0{Fx e3ĀCzxG&VZk0D@_~mkCwB0s~L3S_Ytf|Pr4Ͳq9I8=ckyϓ#&\߱vKnJY 䤙gL ]2$סx<Fbd؅V zƍd٭e`E8,y*i|q!OE'B>V̶VB|>NI݁h@ Cl,5 l@,rRok:b*I!Uc7Y&5$u!ytQ$rJ=b^21}'u,ߟW뼮 8/fo z8|ڦǘC|!(( >={jtg 2#ili$uO\v{!t34umX>[cՑ#lU3jٞj+ D}(Oz<MkmՃgw0O_uZ0 ͆eB |XмoGSsDjtapM-]b-$$ˑIV߈P ե,QP@#K8 DV``̀5# X Nex| ]W!y|׀\a+ח ea=p =e4sL46Lcmj98gG달_k=Q!&X8 h*{aܩLj.=$z|5ykҵH'<<ѭ)HYYtmŅ7FI}.;ctgc;zv\ '٦4]ڦYbxɊϩ`u^s,n@~;}̥X|OwEȼ'DEb=nTzBC80|3V3 c3d"P`}onF Śdxޥ4p.>C:Cbm -Y4 }nh-i+#f$#^􉟥8&o`f[΄r"sŚ Yᵖ;,s,S衿e%-|76)3t{莽 3ߺwU9N:Kخ]s^__c{&zH\l`<`sm(|$D{=ͱRc}l[a9HNI55B<(@υj-3f90w,r`Cspt./ bzPQaXhrƌoG=犹ymnRhy"^#;khBlQ[)mb`uFV@kcg8³q q(in){f90wBwҤ&`Or3eORz"~Z7;{}nƖ4Yn%fͿv_\ tp*60@lw+X`F) 8V~}Uw7ɒ}À̄7: cvHA:$]`5 uZ=6n|)PQc-/jI/L),ytM? ^u`IXBߓNKjA'.B3Zizۯk*\H>xO](pT7)8#Щ %JY`4\A2,h4zԮШ F9䍼ngW3YS)6KK-eOJ"G2CF0hYjJs>M5N rV&Zt|DӹeYbƦQMQ~f4E iP4`eJErQlTjtG349ZtKFB&rי8_d-[~x}p4˥`c8e5qc:]3ǻϨ% * l.N$7J'S+Vrh>2Kj.QjW9M~T+&#;rjt3 ImA̷y0eErl+JВ>/m:vLHW덲ȏ &F}ߧxtB@B!q#j;ߵ%4%Iq]˂m톤dVXc6₮ď@k`cG"ܖS5D1퀧 ux]Ӈ#VZKűh15#l}B lK| {nԱet-jt;nǖl .X;{$Y)3۲H4o uMDi/O`/Xs]L~M̰`~ݞ^E7܉3)vxRlb[k*q9y![tivm2\9ڦ1N"lgϱ5ΐuNz gbd1W_NNMYpStGBp*n"-@7֨!d<04E.[탗 nASx +t(ux+h\-fa9}fz$۾g]NHx~,u E ]AD$84EH/3]Kzu=R=k[^y!g+ʢN čBٚ^7 5>䖦!cyOo1@)k#^#JX(9,oM/VDO_QzP霳@w(BT8Qx$/MJ{=kY*ޓҩy!J? B7(Õ&蚏8!UUi'A20ayOx\0ҏMmϓNbM%q#2ؓ{:( 9iB0>czT82t.E)KɯΨraySMkc'%PzY=0qݒ9v!J+}lKSFH˹{"KFϒl>1Zq,"֬]nOH4!C#9Bz4T'yde"B`i;I$o b}]S>Sz"Rre= 0w2h"gL|ioF ~}}띾]fuRE_!bRo=S6wi]CɎ']Ytd r`.C 2+RQ®:Aבi*,u736Jx>-%Czq<,eQ]h`h#x>̕e\J z&f2,ՃZVn3dZ;L: 9,Ò>A pb Ks#/,AKz}a@ ˰ 9,>H}Au ݯip 9xXv3G,)Ay=#!FDC 1a* ML)e@ 2氼C׾c,t-y\l8\tK=t 4-d9؇qr"dO9SG!^s@Mg00ay/鑡 "5KkY.bA IDATe#%#_Ld9De]CHҜYRXŽ).h) >E ay;J-H2Aw, `#*H%eOqPf\p4Mb%%@!2[rT mK rc%z)dܶh.J/ʈJBRRx?Kzp̱+Ytia,K"s!|_ OIi%W;8so8`(a@sX TE z2C*j)Sp*slR[Kk% 9 CQe4tϭ#8gH$Ħ,aڗ }a@sq6G`)@STZZzJb zdܨ09\d(wxPq=?\Z%!j1оz>U2S ,A4v. ͓z]_@ #B\5&0S,4sKu ^eST\>DH2t4PrZjl{cOQ T\~k-3*SQ9Զn~!m5}z촮낡ߥOҺJ0%H%7S ]&\J ? ۾Rnk@sXBOIztK )}1 ʺa1fCaw+>|&%@1uNnN(KR8 KeӼMβ" +iIR\Ju7 nt\]7_I}t TSo{>7 SǙ{%%J207X<,s,5D.ScprZ)TjY ])~yLs:a:*k Azہ!B\M1a@7@aWÙ=9dKQ"wR#)ח*J6g>J5QFfJB4Μ2,hZAwc%QbO)4 s 0zTFs8Ďq>g y)*ɕ smy%˱d.K2EzOxS:;~E9ġxp:Xɕ,s:1h}|4Kf "r@\R KܐIH׊@5Jy 4̭;vKa Cy#THF3 C9%|YhmKjC-qQ^\Q.[ݧ;oMF8]bid΍~Rf*I0Iz~g9Y{n() х7Z2S!Y\Q'JL8˹Qݥ嗩HI,?|Ďe2ח> ^+Veu/S _'IJbAL 1Pt @׬eбvzKR\q) Cqni{ RFp duH{=G%:KbXK$>7krնzTAc2w7RZ(NƒJ[2:vs[ZQ퇋ե!*)3^8Q$u*Ćƕ2G*TG ,/龌e%z>FLb"QmS2 >5й C{J R\*2'Hq2ʔXg yhh)1ж: {j6­`Z!4A,ٕcv)߁KM|']⸔fKfyv-C &rK\)%B4kpK1d8s*-@TkҚh%b} )r}1q`xtɵqƲznǴƔu[(<$e+W #^G]T͵y{<\hP٠,\)u _i{jk$R]eޗ i)cX#ӻx.[]D=gsۆXDHՈ%=B]7.hhq `=pNEFn[bRs\a]\IK`I~~n|7fiHGݔUznY|2A̠Od>7 CB`9?7 )u=h5f70kCG4KgPu]&ŽnphaWȌ*w$s o6!#΀TJ|A()p<K䄒6y=C?t pͅ9U*KR|JWL@Sac۟5TR2RQE2M}[1"5H$ sln>l h$MJ_%ke|(J  2Ƙٕxvc|gypg bv 0;Zov;m6n%f0}i" ATPU^W|L/m@{aYF\Hm2j:Ce}tѠ3(KS $A.Ch^\Ej<; 9\܁mcgpbv`WƛKS6G¬6LMft7@7xk߲1z ,"o A$rnw[hyA) 7`nOaǤP(hjtv|Զ \/?gmnm5vn8!" LKftLT .ϿɶnnL酹RL/&kh6Mz$.r3z:X˝Dlf_ܸZMfcaM[?%vi,QT>f%yBi!ӍXeC2 =F >29hNxJR E܅BaDxM^$kw}W_T욵o!8QDd{rF64=?vk6h!&c)/wze\ 44{}cUqY>?Wfw e )p TM{tqS~hNs~:iN {q u ϛ!9Xx}뉌e3?{92zsc%H(xe>J4wwR"(SZ<XHEHϢf珇lojFV3=ٍצ}TGعgmSϚjN]õ,X031Y֧5 ̱C~\QX~΂4~5mW8~ u=E4C4sOr Y} zX,=f%dEii2DTa|󙃽n=_&?ND3lSG`(b9 ={zLen1Rяׇ+b]dFK34-W/~.O"`3("B$x PRDL~o 3D59uOY裦tsvr&+ ֳ{n>p8ע].<{zny߾.|0% eخP T>wفjrb{!2]ϖJo19\C&}LJbە;[C<v|az`OeWi4ďRuz[?<O'Y3l[]> {vly+1>;a!yiQʐq r4{L^C:mR ˹0X jLHxJjxh!`cΗTqA5~D3؁E,Q=~ L 5(^޾2bH 986ׅ@3FC!&5M1=ylk!d%!1GB J1m34׽?eN0,e%tY ohc`]:t߀>1?!O3pj_,m\>~ e bP`UU0l~b /% /^kK v"TY[[/w9-8%=9֙% F.#e<.T" ::ԶĆ嘧lwwGp|>69"\a`,݊tz=ǯ-O27VU@RN1%59"5 xǭ6Zo\k 3 U=\1Ҝ:,µ)ґ%atn[ja@'`X8΅@L Q`]߹2yOV@d웾΁E@}r5p2`f x!p =&f'@/H@)Li1?2kd7ۋH`ҌL%> zm-6$ #RpMjs|(HhVyϘjGLk/`ۢ8Es:\A']Jp Ѩ,cax*$Yzbv sI| 0CB:h/ hvVͯ}zso`wLGx a\C׈KއNߤxB+u0Ҁ с o.!Tugn>f<@+C^^3o6OP xlP\% f҃x<2̒ y %2) 1t5f%f{?2 s3m@Oޕ?kF ە/?2K\B/h:Daf6M4C@}:ѫΞ Qcaʤ_oij)KcZH dpc|_2PIQi@SgmI4˶ѷ`kj&ʦeRB Xr%A~ަfudpZi28S<>?xu3 |(U8,9G/CRx~ϙj\WVt)Wa^9r"dd 5P>)l=x(2tMW\Co`%k0I$QEZq5f2/r̕q$*Kub,_]#r#[G*ɓ{OR",c=xf~_ c~(k,O{~f0etHkCr[juDfPxzMs1v=1pꄑi4;f\'v1]tK.L.7C>IyVoH]rvj3!m { 'w(Q̇>>/C?,4=`2ö #4o wq,X2 Lr:b:b6u~uN&NdT%02uH>߁|ſOWHvcz!U2';5]3c~WʐvRb7rKW4K4HdM:!5حǺ !: Յo=^[3 Uv\t:|><.tL=`)CT*Uٖ>d.5O>JS ǧffҢmmAѧF{_u߆]H2@ HgS_lqʀ;ִGoD_%@ s'cwDWՕ'O}OU_pg:_z.7^G 7r 5@)2e=f&L&@B$\`|"Hzd)PYG;'۩A-zW TOʌ98WImjwLv3-'mL$ĖLR2J.dᷮ,/:h4C_PÌ Sv0c`ʌ cMc4haPX`3.vGf5u(U/ԯ iG3ybf#n_yE. Jq1W)snko.PbJ0K6* -bdZn U3pXfy5Ws{bF{pfnYS yX;mMDŌ93C8p321Z9`V7lo Y%3,@t c=X_} JT \)LB\/{Qh%%"Ms{A\3Bn H:tpInP5yiD U`Rt:kk*Z%1P]ː)eh. 5:Z<`j4S ܰ235f%xj IDATA]FWd{]2 ']bs8| 4PrIfJ,en`fW^6/ⶅY1p%Fǹw>pЬ&,ZqLFǤ@hD&zo0'3/~baSR_[yqUHOapܳ|34e =z0 0OZKu4,ŊU$ةÇС뀺6I}=cjD=YTx `,@[ڤsbFd *Yw9ӣ܂F_vфw~'*-) TZ Ȉye\b2 )jP'nGOc/xfylVm^]u6|0&|G_ze{(Pmo orჭG-, )n2@qv)uB1:ctfCxqC0P VMަS4 >YQMŢP]gJ]T} bU5fge)(Rxv J2"=ٻ>̋Lf?G d}>˳#^[D CѲ`݃ba3NAӃe4pΡbsPᩖ@"^P6`2N@+Hl(@&XA&K 848Ė%j.c5)-yo`׎cfwL-M^weC܀|)`h94a +Rc)(Cc}ܱ͵\rwt;h8oX_a-=z5 =`J)I_jʖˋZݞYzr;.|aB6P 2U1˪04 slS3I*Xg@*l7=d0[~53p 007cuG;]>Ԁ#QqbƭcK ɬHIɞ:Qf6fI27c=")e:yngvw-f0xR+D82[Z'c!z8^M懟s7k8TP.oP3Bv+hHM^.KO'?">=7oyc?iŭhlØd{S Aupə+ 0KV2"?}OS8P:e0p{O&ϺN=$gB >J&K=qA6D sa8#ms3N!V\!읹{>/1M뫤̔)Cr,CϖVI0لax]׫Dsط-^Z_9AdDE*C05dSC1ɫ6Q0`ntMGadhcTx Pw֙4B#BJVrν`&xk>_"l`["&%ZeIm;m{JY< C.D}?@ONo~TXaQQO 0eY.Lm"p9b& ϲ Si^TR3A 0 Yхi 70;!T҇M5(h'F.ў[u7rIXѺv.RNLu3ϊzR8&DIUh.hs1Y]ۼYsh hbQΥ1PV~} I( OW:m̒S3d\_w⟭Kbkp,w6́DnN,e@3u`JrIK-qNPw-!foFޏ}p4y0P0 `g 4gGpg0c"I5)kERf0mۂ3u/ط'leav=l32>gΘqnW~51&\3cLa{L0PbMZI9Cwp LuVOuEp߆qbrqm2g]9_]{w#=]8S3+4po<țq ^X%􂑓{#ON ~` d0l@}vzDaL.+!?ڡH&{4hËh&X֔wDra%3.]C8^wbߘ; 0l:un A.Zn n% u5~-qs>k'$٨z^r [̯~C{kصe y\0NO>9ǣLAhA/̔ ZL iϐ>ÛD?+wY9?=%s|t |>x<޴Fj mۢMgU{ie!?"D$94Қ֭ȷH"sh8bop$/k0&>X):/i*K7 *1 oMQtT-f)DTu+ vjI sxusΙTX.oYVZ';sOW=gL9.-dݘ3@F,텏%Joz"oz1g+J"S6սOLOeӏ6Ey^~H\m96V[$J Rޙr8BwOǜݘBU"VO+kڳc`eS2H]Z$RoHLYImqĢcVSŮJmNӁpZ|-WPzCrb\<$^W[f`qn5#2~t:1"a1VdwڹG_9NRή11<]Hrbn2S.{}{d(Kìz%}b0:^׬mۨsItw%~-~FsNeǾ2!Pw 0AWbdˑh/jQy{پlQ~4,nDH[#cs|JڭaJFi,N֧+01\ax3}+_d^MX~~>?KQ ۶ Fxi|>$4ҩH:Kō5`ZΛMd/t׬)F+B/Qa.TJb%p̳p[1c:HGe=$!o j}gJMM3!"&$2B0`%FQʳ-K/慗sUv ]F %ugwο Пf1Qb^sA{q s}BBr3bSxϡ5Ǣb:؛L ͻ%E -3 Ϣŗ 4KIJ%9ṕF,'pCu R.$ј4:k0B7٢-B@_\0UdFOViDB'V.2%O%, mV!a zIfoظ_ӿMtu]8=?/NרVɑ24f;,3LYZ'CJO}kɋ79 ͡ :-~ˉp_*UDD C ɱgXU%o"|1=4xRzG{z֧Wԯqs74k4 g@YQ"9S)D4sY&By<@~d 5?hr٫[3uR9u) ˱-F'0=˜1ﱼn&-k2w5z@ٶ6,~  ݌nI㹤PI&%Eޡ;#|J7bXU]YN1oCa@`|g ID,@UTMqK3e/29dcS>PYbKF' ޳SMF{O'@gD)1.OYr(d%Pjk7K"C26ck #Ľ8:U01-YW`h1R$ SRWԌ ^&UX\q1t-ww^\7[|@N%~uƘK2\ jK{pB6Nhf6猘 ;MMi33@5wƻv6rO 8[uU2(bTj:>4a-[P[:B\_DGثKXR0ژc%.[mSiѷ3NMr0M}{nZ+Xzdp ^gcJ'yhd5(FJ2zT[ }3s4iƏ`zP\(;7X [_]u63-ODaz >9b*N+flGx-:SoXt=PWXXzY2> "| ;܄x3mZomB$a?%dMge\Qڪ)nWx]n딖q"A9AJ߹D.5M!hrSR`!$vKXtKg3r8SW0n2k*4mгF P]fȵśZ\m->l1ӦX|SpߔJakw(|tX'|JN=چ˄rrꠡja2׸ g0\$EHa)c7OL KmSf- 8&(3̌s2( 3U}ح2;~LClZzuY5 Ww<{;k+d6_5j9%R˔˟p#el5Mf܅Z8R %vRo)6$AD3 Ƙp.{oe5g2.mw׿+m\K2p7$d˗FG3:dlP"E!02SL6$brQrhzx{|$>QYpLeReĴK6hd8fŌ-F,e(e =s9b_# BS]?)Y'J2,5cƀ?;Ư)5fGzʌU;۟/󡊇To]oɄI2ک6J0ΒT0GXPOsnLhCIHb}'g56,Luqə?:Oڝ4$蜝`>hƸM&X8u^6oVbbcj\!ς&G4͔&xH(yV@Ed {ݵnyYsۂס9$V(0+Gɿbď 5`:g-g4Z"v<oSthVOr-}. C,(;#b%R|sdqD4c¼qJ(Q'Bpe׎L51eȈw ymh~uN\̽=88 ;p2a|Ɯr!P]';܁ ,e$3o3V(@`sm iA aW=Wb&)`kM%R'񸌧w7٩"` sfP,KXh>|&{aqo͜mD990簔77cze.D g2HNdL4TD惫?W vpʜc28ǀ)S9WQm%nS"]dq"XM pG)Z9c1v_S5AF5_c!g{ |ȌW,BmOߟ sf^ fcGLa|ۮ1U03֗!{id&= m>RM*7%Jh&ƶQ;D*47B ;9!G8` "z}(al[m#Y9yTIYn:!s0l3c3-1 *ۦD ]ؕ I& ι|BZ%OJ½ɉ%arҧR6XYJjb>A&6My穂薡їpmǪ 0"Z2쉁6ȐAg 2UZ]`΢n톑Kk淧>gxYmmOdlkT1sCzeyM&Rsv k.B|qh0_ R*&S̹B1P ݅UU&C,:-H}ܨ4ΩY,-wKrlqΉ6;YÀIT*d\gY4,a} ]ϴ[$ISo$#!/SȃM/QUB=u1 cIL9 [5XZ[Zr3ӠV!Zkbk6c#wrr#"\b̷G Xt܈ǫ&J{D`8Kt SR45[R0^:dlGش]Gۡy,YOe4윓h ֘xNR{ab%1;%"򖕱O A1Z2[XԬǕR\"^caDo.0+]@Vʿo0W9KK1OP[{Wrx̆eJC|Д2b]_.ss갟m<FsxVUM*uI`ŝ2K1UsA-ttoLIiז%v^w~FPO)D3r U[lc3/r@ "_@;1s}L2sɩzuc_S>~,g͆@Cy_CTŧrf{]ysk40P}޹f<r )Qgmgn(J;طYX/JʊP:,}1Ѿk IldBxocmM-k;'9+eQ22"{@%I.^nhg^N0C,T`EWᬐi g??EGj*}JS%I@ST5\=p6Dtwbgzh[DQb}R$- f<@=P~:<LJEᚚ67X!4_#Ș,tRgJm%o{ гRpx@nUNӺ)_]}҈ENESr*ZTH%D)n)b2B_4n{vݴ"/qьRČXT>giTf|ľI,Vb@k-RV3o]SiJ5_%eP=w t% x*S7`b&@6D2UL0|8n®@ J+ S> F3NcKpz>j:efe0 SfQԞQiw8ktf93n@L Jq `GsSyck% ܐ&_{ ;D[St\Z9s\@?z'`|w- Z8\Zwۊ9焾$˨6<HPyVZ>>"d$Cr-1+F}R"`,}҆N&j4fB2pbo33n{`j/11Y3׳i(¹076<Ƹ\gIA}R}%a9w>;58a" E C5K~.qO]{VL9ZC3]Wt<3Ix #Z%25#(5}2XPu0N90 3v~ԟ$`sck6=lwȾڔϐ6Xj\]ramJ();W|j4069/ϩoS5Myq@[-E93ׄ~|fiZp bH4B|n.'DՉ3=Ē@-g>GT \2j&$yn>ke6aq{3s#r3cbtU8JvF_eivɿ\nv?BJ7"DU <#fd`mCnqD(! [t JEӜ#1"΄:<vSX%:ʁ99"`b];4Gw]){uub̨Q8 3L}AYʢ].džn-\S FD2E8|C]8Km{.i s 0CD4xXCZV%~fK1ƴTP r6H5@-Z\5Q֬HB1QsvFTZ":ϘhO8X-3!ĠԢ9b-B0kM9ZIKw` 'CGT:)3+r4s9ʚ){*"dWPOw@ (J]f4g%&zSa2gWT(PI3Unsf*=v℟1 ~`T-xô/3@#ht:[4m;Ɵ ۜk827P}.5ZAAʰfk5d!Mb݄ܗ)c]ܾFԉLcG%zsEHܵF|(7(5 x9<1dT'U{S5"ʢkp88~c@p+͜KU5x=c']d{%,VMޭU=0R-e1TΙq0jL#Ǹ} c1?kTҢ#HMOEοc 6#f%(0wmi9(,9UVa9IoMB27acR"Т~%򙱒+"zEO?]-m */sT{i(]<8 n!\sd ~x#&2KX08JY1Y.emaZBdRqwUA,f?[!fHDIbYI?.fak_CCP #fsf y{3KJy3$l Če9Qd^sU'T/z,0$4HQsYs1A)e744V̔i2g^j09dc)n,yb~q$%7#q_ي @ܪ#^e7H5.DdO]ly*Ι{r"Gr 8`z#T #h݅ˏb@8WG/-9GYΥXfw예JʑRb/'y#B:j56)Ft{'ϝHOC@lw&ӎ .`;o.S1K5D0DUC]t XM"wQU`܈D/v԰BgF# pJ<_ {f\eR 8rEn>)Oc6[ s9S0Lgu⪘mjw q̄8q3:L^4~4TLʹN@"rw1o"P^Q݈t-咖eD$ P#\$v 5՛@G2dMuc}iBj(ng)i:awe`-vK H*1(W똵a Ny(,N4~nfbİm5(/co +? N)V̮O MEP&v[_ƼAaL0UnE(q8I\A13a$RǦl|dNDԌM),w>,q&"<i;bc.!1ydyW_WAOu`SnK )2 (# Mqesa1#LS x92D}|K;)| +"C# GK-P5geԑU?yTTw02O­]#Z7)5'stVKZ#T i8p 9KX,-ؗԇ"DTO@nwzucR'˯Jt.VM}u(X X]I+n_+(9H :f |O˙n0OGQd8<2̊0 cZ/oU5&#GIpd KЏ|Sogֈ p73[}778N[dkTs;:[bz"ʋ==ϩ}o1.W*Mx82/vVME> ^6n9L ?df͘Qtrsd$۟5`ZI-7R)N9&J/)EKKWgY3bS,=^<7ox,73VӂӬ"ե"r)\cxݚRB1nDZf)H33\f%4okpUhpd渏[_$f/t)׼gJ 'ʡk!gI*Q39Ф5%r)L[0V*]ҭQW /YSrs/Q2ҖOgcĐ]J܊RDZ9Ԓ\GVx ܲ֎:倲 EČWq3׎0^&Lrh$4nQ˪<7F.36EҲZf\[EhlPP4FqaRVä{#G'WUS sM%Qѯ uHYix2O(s Z;$mmJXf ğ)x꥘ks֕+PyRQ+MZt]&%W-3O,?Ճ^di^cOM,D+I=/ܚ3(L̈T푮v{[A IDAT["a( l׵- -VOtPu3dR mOs;L` W-SG)Zj t mM*!g$㼉c ,AѸ1tad+\?gȪM@rJH:Rȃ]PU[[`_qUCZ$lS>*LF((X0҄~L:8"WFy,D_"kp.آܘع7kWy)X ?BMR+Z84sr2j#c9UpϴS͝Ab-\Z)Cg04]ӄ8WLƘC\5D2,8!NQe]*X/a[z%D\_Ī%ApJFkBRCX1y8(AC0Q؄HTlsB ~@5Yi3fyf5_iOT_M^}9)9%wY?EH3p% )e$5,'Ĕs%SX]~ jÀ|t7e^gVD H(1[ShNXOkki\,Q*D} Tmf%̠4$cNS39gcߥ`~>9D59͗ cWdwBeGnL0&9%Xa;frMJȃz{&CބAYB)XmtQQ2<G=!ikU,-&75*\|<%6|˜s6)0]]D_g2G0M7dχy=C䕋FR0zh:LCG3L1{L1ҳ~`p6) 5NN-1+XTmz^l7n3Kѹ{ZuSyБb6ouKe\@]csz9\\7',K6'B? lOc蔰hƀ;ϸD:B*KR 05B wRKٌt)/`9RH)!(B*E"#$~FH/KtTa0DD[[DZ6](`Dxcex`%@y~B";bǟ\NZ\JkCcmXmgpz)b`,l =^@SkVǭ%? vyR~x<\Ӷ| BQ0J0>6#^_v"L!KBF1Rm:ĝIuin˴>5QS>f-҂rfpz1a@zxZ./'YSuyJVYz@P(KKZ/_< S!^z֏.3t8(.Hf޴5 |8ٲayI#le8dz_B;F|)5cY䮣TM wIpXcn Q.OG;XnFUx`h妟ꪜXN!3 ׏뎖@-r33Y}II%rQcV,/q\ِs$NHf*sJ iYiź]L@Ʉ*J8TmXD/?ysBQ{3d4"(fޑjҡ΂mr'ږD,w-7H0ܵ%Z:|ki!BGK şQ5(C*Ġ!fS}9Bŏ1a3Pr45 @EFyYT/~vJUr)^`V iά$/O|WTnE=hF"-}6: TndZPrAX}u [=c*WH"{>\90E=+ 'Scu}-Ts;.cN1]AkC*[ zk6co1S7z t],Jg2XjQ9+*33>^zc&vy,IuYufFU%PZM x\sF)m7^~ 5u=vŘiK:OT`0픨jNCz9]/a2ғ%es}Q\IQ>㉰y]4.YLsX̙Ɔ6@E@#N*d7uAVGz qI5ك}wV1M̍ȩ@@犲s33 ag{V?7}}^3 JJWdx8^eׇ1(-"ε PZSmr>->C>s>TJ4"߱Cp@'u*֩Sv qFbQ%n;؎lV>G2- VNmyGBw̱ 8΁\]ܧYfHTI ¡W=Ǧ bXpŌXZ9횗B<α$cl4o-/oó w^~l S-6^UgT!w]~i6 tY~H*c D8^!S$JHiov}*R=,Ϗ1R2GԏcMnQAYaQne&5y6]#Z*!KalPRop;ZDV履ZGi0"8ZƬ8< 0~߱16be*;܀n`J{!4Syȁ\}6P|6z,MUreX}3\GPO)C>'l d+qڋ \-OUR@Ua *X)Q.. =nQH+dJ  s6h{ik-#{ HtHy:{1(2>ڇ*{<q_}b>wC 32ѦB? |P 6=Ruk~OPƜ >\]\PggN ՛RṪ=sX%Pk23X0qӻ qiV$`Z _uz3UWUАExhaq sSKDڻ :'mhQ<+l6\u1{|11ڬzOLCO2/H| RS@RMK ߍӚe$-r-{ʆTc]2!_ -2u5>0jt nW_}l%;N`XP WoUf pngxdZcֳnXT?cCJiMst ŀjې8G3u%u[@(́c kHNOL)Mz< ?ǣάQVO-T8 lrH*90./;4XJ2 uP u܊SScS,P5sΈ?㔠:kaH!X.ɓnq@U 7rZ4ev]Q`Fpաi=0~ ihfE0r„o#}\S25X.ݹ%ktiY੔.Z-;! 8x%w=>`|1"kK |0wӞmx~)5i, |."D[[!lBt)2ozXn }bNP.$ρ)'BieQz[૧OX3 ق*FYfG]׍߫ZYL>=2Z?M4\&Nxq G? g2 o xs0T\6P4->gpUsVz+TTx? 0Kڢ_U};vh'N`/!_nDB߱&GXj~O0Hd؞qZW2Vxz% A{OzWOqr~B({3́mZV8?%?%C6U= rAh`<פ2&DWKyiZ) KC*lv"#x|ŒOxWi@^BZ[^OR ;м$wY۫U7{NYzdUW?WOU'dFXp eS3zʛ`|2 ET4?M ?aRKC)^#=o?āOpܡWvrIҍ:^tu&7ϋ<.[g` |{֬3tpFt=':q #棉 k[Wȹ0mXgDtAn0 <<}</b4SXcMy{[7z3 8|bu;88Vg-e{̥~Pa32D)'m 9z* )u,YB=e*3&z9h8,S9Ќ]WA7WfI 6EB+ gYY2VAZFG9{3ט6c/S\3ONɗ*=^h +bOζ_"PϔJE X5>,͇fg\!PR&9سͻțݟn;Ogшgs[bU.7qLm'@ euﺇ RZ;r"++@T1]~h^BsNp+M Us]>?ʍkAje . .er ;KFgZū FR!v)B 3.e83;DS0mێeKx} `81 V$w wq|1@;+'\ ׊rY :1w؍%P >5Xe? DP'1`?)è 60\j`sPuP"gÎg^ΐym8,E*Z?&v`,)Rc>CrJRmK^SM$G;,1Uza'Bsy5N#02:]":RX& K2κzȯܭ(Er2#KQ+i g|1wb65';U4dj%;>ۜd?%KoWAG k@v-3Y)vyvg"Ť=D825[Ka`s{{Iȿ-G&?,Ģ3C)4.` 5 .h q+!635ꂍ &i=oQ 5$ĩN (ΆTFbx/n8A>xy.ѭBU4puV`)Q$4/jd1.qQ1{5 |n @֊.ǨkcS,g2gF bŞc|}z;'SĦpOݽV6w/f-֭l[z\P<>-F?4ҾSځB6/rsxΧ *zg,i91(o1wꨳq( 댁?FN(V^gQ k5m&|J %-3~)k/s*u ǭRpEׂ]2 ORQoڥT_5#gd;V.C>;7NT3n=G HfYwg.KHsp΁VlόרLdR y38]0|!xY+kYWI ;xǂ[5@k3NcX6ϸ_=ώc)SpA1O|p0o ;!:̧Vn8%D A:딀u~օҌ*L Yc =ɲF3&oܢ=lMrU6v߁μ-@@3W)P5"Ҋu }j:=J -f[7w+y_zTL8+I+c=%)MYm~U`ꦥpv0HZ YLul@i NT4S^V<)zWp|,=-X210Mp>0ѓo6'7(CF"Z&یPj橿:"\kp %0ӊpx28_@b,:~Eb.Rǂ6BM庬5t4O- ?`1X^ˤz{]SsL-~`:t rĽL暋nS9K_e3 VTJe2Z28φDXT/v a׸g ԀP{,d4H&? IDAT3𢫆āPe.35^,/< 5sḃ_V~M5 Ϊ,5'=ćgP*~\&br^R0=&y%޷^;VM,ȅpI*êpS.'MYK#!aR#m~۞h <#y"y\bLGxΝ{9_6:|?9| XǚPyuTTy 0imj[RDk?r;jY1䊹)|{!b W3t*+h'!駩E2VRi-'C(1JKPrF~%6cY !Xgىm?9\jN^M_6%`=:xjRѣ9J"\lF~|/V°sϹħ:y\ 2L Ÿg+4 >n S Ɗ\Ũ6o݁A*? bȽyv"l`+$ЦX#2i\25TiZ1nQf`BpfP]ڞ9gL:o(ȡk0Ac8(͔=yW. 8CxC^(fYco!d-m mp#H #-9 <+o!s&Y,էo+B0 qTIR*$ia@X.5TpPJ]DN$ ܈<9u[`[GMsh h֖H MgsM1{7di1OngܢՅTL5Vk,y.y\o<&`aaв0_;-8`Z@8ˬ}.aE"wjXWK'VܜTQnƙjbФċ:C7Sc5P:0ʎ!da+Uͬ[.тM WUT:!={^@u\|a\%;"")<85]wckL1m{]$UD`kWv kQ'~] ,3LJ2w&H @~S BI J (+BtT$@SbS+cզ ċk0X6B :A\vk0yڞ#u\%HuiFpʌTcQ,_g On: <*P^^'y"waB #o;mq U0$>cƾ,]Wx~R^s 5ƒI0νW*㔂ed=z7FRvĭif<0)d%]@(ׯ TaPY eJ5w{GiCuqVh>6+x/Y "^I"r*k~gqx.x42k kٝk,[;=F:#{ItnGs5e `3~w-[QRО9슻`!@QbPa:KܦS-6،׆)azCPKB$XL 0Ü54*7:O䪊<3]]׋B2 zy ,`x/)>} 򐤝WEjc Of~)xrJx}B(1Vzͻ W]F>p|Rz_,wU^eRO.tJy&Püȋ]vv㌠#q=Qh,5 ϕys2y?Tp5f{Gc&C6yWA*3.e9IDx `P#PZc'E}CQqud96h G%s%_c ^ ^_<\=r ӱ|[OXh@LP}rѳn" `X{iOHR%0b#{sgEȈGT.6f,[TgPDdhqq{Ň\s$ėQ( B%k~Ǘ\ 9 _՛(NXϗ[܋ *uBʄH0( 9г#؃=ĢP*O:.60m 87rU.S-$Ìic<Ō{caH}Vh8eWE;O u:ƒ.[ČS";|Ъ2^AOS_~vi^5Ao?'0K;,M8ds۽߲##4Hʁ;VfLv*?bSK`+3,~YތS8HQ &Fx  &/y;́Rk%[rA <cϓn1 dfoW | J OJ B46j7ٱ?tW{ߢ @2̇|pܠNha~ r'^ h'nk[&VnL-n*8hzSX>xD0㎈9AH/'v`\ξ5LI߶'xGI:LI=N[8D_Qf c`F A*;T3HͰCuq]nɞz1')OY!eE`3 ax`;mPe|DҌu8SeH4s3:(RՏn:s$'~JJ =>P'#p.4}R C_ ;"|Ae[3\0UTx6y.x]:Oh#6Ӈ'5Wc1̶fg?LD;O/ȑб q9~ʇ ;0J0CI)a_Z]{A`El8cI7g\%vrZ8`>CV]湙*C;Փ3=FbVD!2Fr~9e70^ 溯q&Yfsg߽Fi*09`<(̌o+Tټ-ccL9x䠳WXQ j9|g+qilJflصÜcs>%wVc]˭g[@ILՠf{Fbhq3D| c:f)ukx{'(kY}2g]*" DW/@`yE(D؂pC=PRzrmTё2|F# O@ ?-?C3Lǔy5?s=f7'N9P_ˑO/S(.޸/f"{ўC$OEs(C:]k#3w#ڜ9ѯ7 oqЪm@tymk("j/lWc_":<#WCgvkE_O.:=s]-_Y ;ke[N ;L ]pOr; :If.wd\:K s?(D<N_uWxy25pۊ:ۿƃ* V) w{=.DXߩk:UNza>Orkf\`FsuUP> @xB06t#ÉiÈ[0=۟D߲K[PӀDT7p3v>\ 3r t΍JwZ? Ï2}uvLuѝXgi)"NSx8q'2g?ȫ(đ搸pB=0naC"AN$#971*,P% wEq" ]E̚A.bi aŰ>Q Ru:,Yv >BJXL3@|w|; zhϺŮV]!fB޳_<̝~Pr2{r؜song7%WU=AK8., >LX0-ENXϪ[*z҇7ZRnj$8/ja ZTqх=ym`ƌ8V2'T'^B.CSAF +`/rN1Z)NC n*x"l@m`*B5 NgN^7ȍx=qo9RUoN!"X4\CxBaB l*2iӌ~cl-Pt :JW)šjCC8QD(kBWcYOq!t*s(&'-׷*ץ󜭟Fl$SR;:t/w?Sn%9X>[Z)!9(c>CS0L|2_)٤LI0J9WS K\]t|ޠbv?G^'VyԔ=mD3HF˚Q=%9I%prw|JA/T~09O+tx@hļ &j'misifTtSZ J}M߷W ox}{ 836A}V99};kū\b+B=&t)9;Lx]6NJo-&Zu[e Pe8vTPd!G )mlOz19 jw0M=2ܢKÊx]  ;TIH2*KTndq׾s7޴Kη"I*$hƚբE,4chL ,0!|Lk!L8ϕ[p{ :U:!u}x~Qu~6˦`@13/Y %o3h=Imd ]2eb^[c\'<ckĺJ^1K]=\^YWĂ듡3& 0ŧƱ!^wu DHhm1LF|NBp.ӘGTGI]Ƽ\PvFŚɗRrJcny79e_9U]UU79qF!@A<@D H!()A;H ^ȋ(2V$mwݮjW9g_us?Թ)mךkhY๥Q-$9ɡvJY^l KX.%bi$[n[>2 :{e &>\D P LQvx!k] rF҃*b,M.aYH[RJu]f]we]{kN6+d o7KPU@i)vHcn[6cf)0D)PS:kT,w Y W;&L罖qإp#Z[UJZlBMfYT$̃ft8IM.uSTmRw PZj]jΏ*Ů8+cj́H.|̰KYnI@=Z `yk_2U5oszo)J e (+='a^_$PQR7"ډr{uJФD!eI31 ][BzDxtB,97#wÈ){nn PUhξ/UPUfgʪk1ѕ KC@.n.qbוLRꖏ ,A0ճ7B~$mQ!xПT4ܮS =ґ})kޣi,ͰSasS`s+sn95Ķ,`ПsLj WGdwsqPUMIuwpPI&v2єds(ꏩ?LjKUrh[A©g-\>7 ߮#,d"d#Rz,XfO ׼J8i}#ޜ囅CfXZD)8Vj&874χa&9#Im]^r&jWιxNp}Ι KC͒lK JuVᶣs%,oإG5}a\=1uX7EP ɜʭXo+ m ^$}Z²YvAVnw\1d2C:eVZd[fA5JMt+[D5<=.Ѷk"&"wU L׊l_RiM k-RĦx&J=.5chuc2쉶| ^R˱:O.csN,1Eqg wy[D,{އ69G}'%|Ou0ġ`ZRS˜SFDAZ qHڣw惝`T抙ؚ=s'RBа~#4&/ be?N#G9@x }$syb{=$׷1 7oWy3.h2%g;|Y, MU)֯25,5G<*`y߃o0ImUhBF0|0]?-+Y,1o02g;\fIbmz5BN"!#1N8SS -߷h%]PYfqf%Wծ87َy>aQHhd)zdj YIe꧄-?BC5;m\gܜ:C]x+밾dҝ=\VvkK|"۝O>Dm͈tFwrR5G /- Oћu)l$8?3|vw S5Q=|ɢ\,!qԭ)9,'w].FT˟F$I$عmڃF`:.'Q3Ⱥ>^X,֜t$wFbRw7.@'8[g'^VD%H8DF30vz5 n:w4;"npG%Y)Qg\@i,[p]%wncGGu(B,r#Se>)0 `V_+c51pXZc7SR@]HS%k L2H[qzh+o|&D$ ~WSo^w5qA|Bӓ3i2;v[vE|YE (Xi to?zSOMcPՂ;߳OhlЯ ,Vp A.GMՔE^lcBqi=3gEc4^R4;rǘτNǡ&3dzЧ83:OB^ls0j}#7hzrF䜽?E](W*ac`zd>S0cj}>s؍;M"6e%JYO'NB078t r!BQW4IYJ$i>4"n3eBgi"|t CuBiqB a֔MC?MzOFFx8DޅKK/PM֨+L/D WwpoeY㱬NvhG[<8boxX!BVK9qRjrdYZ>@"<*&3hR(uN5yׯyBJhzZ肨">Q,UK#ؾzA`MO"m5k5 U3]K<\>`߃o߇RpI+*,R!(B4 %43,VhiD2Xu9" RvDz<٧mb%kSԍkw1r7 %+zMp<$ң,jz9SڪF4 CIБ4ueU8vERl/JQ(>ע ܵ͊}{I̗&KTSO;=>`] ==>K2%Z1 ?K,vw"$k"+¡<ޠ?E2L ws"n#$`uP Cru}Fi =ke VH5LSaZ)Yĉp# %Ct!x=! G2. ?d/!8"L X݀rmgR]󐀇pMIO4--0/2p<ƍ%v|ADp$uHt¡3cz`[}X;{%v!{.L4 B^ycy:#*Y?~][esτn4wrY)U ;zdmgL0ᦇ "rT@0O~}fq0y5[| kz͝ #ɾX#p\N nYYXVq\?+qR!Q'VBI؏m制 f,p>렉L҇ E>f![#S3;/ uc9$X3>lOM,us:( @T܄M9@3NV%N2-[9wsMUkͩ9~b,+ߩ^&+}$jyߨsG \uh !暇YA8IN}"Lg*)Yc88j"B(Qya7{ ;&ݴXv H;Ŏ!ubƺQb` Pfs ˡD&r;ЄsDBu$oy7o\7kH8 uRv8Ʉ%S0m~mgHh@t8w51I_zfAXLRO9˻i%];e/ПB!$-™#gecu.@sڴ$R! l+ )bdޗؘ[F?3-{ȗ8I)[ Fs%>VL@$NNZL*^A(/&Z YNh~Pñ-Sl/&N,H☆H$)Rlo|:pܭ BJDn>9ٸ!yD2S3ܜ",,t)@ǹŮ ɢ!G^_J|jCFд )2JY\:.WIMiJsŎ3XdSJo$࠴DcꍰJXŦ--\ѸLb'@j`Mit4V$~8$/eN"6ꦎ:%OH`,aT]h`:T L5(lu$K9tN 6gĒlFVrŲn9{ȱ Bl?n݄Ye63pI$k| X"R ` p8Եk-^Vд@Kb tP dJ܁8 jp'.kSK1m#9xЈTNVY58ll#VqSH%un3~Ƽ["L :`FI4EM+F*\d0pH`W `ez|CZ@[w]%#rz.Tr ESaKd;4..x b;ci)1O0U||o Y뒍`Xj C!CN5'>g#h>fIƶ!5J !ր+mU/; &14Mțy8a6``0g@ iف%ǩFhGvڟ3N**/EX>a}7J>BIcgĹ$>EXV[Y,$@6$N0 f~uG5rLϺ,\A7 q-[5@ &Kok <^Oo.3k WBocy_QKJ;A E) , `R1&J8J MU) uK ZO{#tCvNw|b[\c >ZkRRN'}Js[Tgi0Ʈi {hZClZ~')c"+|j*<קBNFMN]cnGtׄJKiYF6 R6۞՟A72 Buɰ\XP{#n֗Z!)(՜qA9L6zvhi25gB~%.JZnd02)g,ař.X2>.PViSR~k"J7U9l-Bniye IDATAgXw~_.~_j[!uXE Ƞ.dc"RL0mmf#ky3XbE @!1C"@-i!7:g8)10k&KpCn7{vW,Bm WOW'Hw,43cfUcNLeKVa1UшVe>JYҝR!x BT}g:(r;}F ^ >$~goI8BFfYL2v<ġ\)tPџ"9U&5Wް ca{I2@n@rq,٢ ,pn<OŒ/9pG<2*$$ I VMfg0]9t#'\.P6{ <ˎ !}<d]#h@;GR,tF(MebH[UylvCU '=Z{xTL9>6y_+d%Rr;iaxi@0|xFԵ=/RP`W-U.ϓF1XUK0_FY>>++#]#hƵ)\"JNɡ@F?Uhk+.TlQ†v~'Y'оC<;LX]96A~/V&V;$2HyItBgуd9[ &'㶊cP+']_>E/<0SYZ:EXR Gдg2ũx u@g$dM50MokNDh^)W P` !nfiVl%y -9!ٮ iH[_:+̍ ,rCOrx0TG\C`UoxKLM8 LK hX I+3r.g)%#+3粐^2.9Z濱>g߁r[ʐY2dވc ƿN+:uB)P=PW@ z2Ψ9;K2TkkD6TOvd?Jd!ӳI1L5ߥ0MVz\9 L;b%UU{1Z=-t43 %AsoZiA+)lk^J s2&22. $$+{Å5]G4GK>fV:? k-4Q :o K)<-9jIs&ODd ]XԎ*jO˩=7RE4&D('^>,7O?Kac(%K]`h"Nm:dzP=ZmqHUpl s=2L pMoo݉ \ P tCA622mӼ!s)pw͏*م}0Gм+wn%:iHf[7`#4ΩW%ԤC#ޑpk]ĺLHK l\+ x-v] R|@^?ShpL ns _aFPY)ox G2ب.r<|D;/?luZ`ldIkGn#) [Bل -[݈n±+յJ`A C5pSfkA5Wc)j.U:9đдam`5SInO5b` "exKkpbp_&dLf4ViKGbG2+Ǖ``~!~%q9$ qÛ_.}%@~z ~9d)itrI 3G[AFia;A8:7H6:ACf-i#Td}iP\ZŴ$c ؃dCIOZi8$3w.pg 88ZOm &MX~w9:֔ =}\QG?%Su;9A)c0sSqN2w$M /_ ;K$χĔA, % @>W \ϠNnwF}"w\`g][|hj:6%*^~N0F'r=-螕*qU"FBF\+Gvt8`I4]Vf65m3cBe) @)lP7'd+c7l@vl/@T-*jp024[#54T4u麣^KgN[<[֊ͮK;!bX_'ݘ˜KPB~~w\BmY9^dH+zbAjX =Eu~j8sHikey,_@ީ?DD۴\xRz2 v%U'[0-%de~R˄\lB < &zx^ 9@fkS8'{j#ar$'V`VB`PU f 8K4_86jPj+VDxc Z_ ד^).@=O~Z aB0R|~YZ l3e1b'w1%R[f[`n+Ђe=k92Q (,}46AFv.Յ9Mp<lR:,7*ddyj҄w"q k,ٮt={= 3fR&dWJ{n3"_ ũt#hKz?f&k;[% 铲y~ n*h.Bˉ W{ude= `'$@i7wX \CySKlЂ8;%mSJFG|.qy6'˳S s;7 ǭCfH `G}xL8&&-n8$rC;l:$.`" f({Cm}ʫNCBܠt@ʚqdnj"юꭸdzebHHYڴDSi,$!L[Q!-$}чKBhb`7h OrE<{H)EWgd#h-X U,գӥ~('^Ċskз4 $Yl6u-`cS |,t``ož..O꿥{tCX.;BX.z.XQ,9E$ -S&t0@,KBM)ma.XxCx=S 3$ , IVsșkMM+u=2ʑiMKYvN@|+1ٚ9{P 6)BTRlg\X@h\CʤfCAVLѷ z^:0 }d }.3J5F"Cqt::f}. 0Lf ̬K6109Pot˭ECX>@Qfָ|épqʉp=0hLД#:\۳2ߔXzmJY)0&,tqyA gS͕ je`6-b2E [AsqyߓL^G'$K\kLN~ׇlH!|n_RG 9ϱ(qyLGi4T6pMuxl(Wo-4̭\]Ұxm[X?'--#hH0Q5Ql772A sesXL4U444_j6i1e(mSvIOih;&Qe*,cIP)`nC+ eyU: Jr2du,eC  UN/\>4T.S+DW(CJU ,s\QPpn(Ѱ.1`\pJ؝ގ3Eu\#3M(g PA _9|i>C/Y$oJIVo|9`'XŐ|hU@* W#:#hǓ BˡVza٨Ա(e3ȅkS9,e4SZjO4$o%y`,w\"LySwgsHg8lHWD]C%=%$Lnd mw ,q8J1T SJ`C\$Ur`;Y*`b4?;S KSK-AXR8ߩ3Q %MB[`15*Rc\F|,2Ѐb0|SAtO \!kJ1\GLp.i 6 @H\ 62jo09DG,.$*i);u=bAx!=hF{_KI1{]w!XiJ\@&S2+i>c5H!zLaxKd\Bi2!k,4ꄩ:xg#A訩B\-O7p7@J)->G^?D@jY ?xOJl a/ j9\#h>qGrohyODD+,d`1TM D9{B{΄ {mV j$K S3G IDATMe!S,b%[ @S '\yB/\R"L[%R ̾"Ci3[@ t0t7`0V/ߣ%BHdg>:Y>a- ^Dras&ȷV<<.1Y?N70ď]]>Ȱ$pI4z%;`R֍K/P oSuw8^@J1n ի,o]R<>']^JaiVA~bkglBmѩߕYJ6:nbITvlfj_\ XO0oD4(!'6dG5ydKȔ: e@yR!mV=릉@ &1daDgt˲yIjVl![c?|f;9 @v(KE%aX=e; g+]vͺfGp9%L:$b=jS SR{._-p %l 0ɒ8VA)wk{Mds^mWܵ_y+5x"@;HU [3k}ȹw;>_fwc=!]d18]dZl9]5DOh9jCA&>9oGI^\$N%U\dI i5}ͻ;_bjofy]f]Sw\dts0:rT]R5y[~sf߅C26c!<3asin y~'0aT|KCd dS)GbC[8fƶ~3wrOCfv8֗] e3yې? W:\?}|o˄~ b3X4YSN ( YSQ7A1& `R5ӻ_bwN$Y`Ϧ$,{,u-ej!?pW.-/ ЌݤKϙp,ɡS6;|Qf)S(-:D [P^T2vM;{u>g''g?Mگ7vqA~}En(w $H>Eg HȒ%W?zտn}m]B HU9d%P+?s͏e9saq)[-J˵-!ezq٫o5=ϸtU\=__}{I sۻ0j|Ȍm zFw2z A@Ioziܷd5sʂJ%vbI8-zVM>'w^ WOsTlv}M۫)Rԡxn= 뇀~hIDj[TO&9m;=9@:˜9G./] exn@ya`B,glPYIAU@"l4Vx z_TMA599D_%sjKl7+Q7h 239wstY@*׋m8d=ldOPM]^|Ah^}ZDsN ~́.4$.]:6*'].p.W'?>W_!|Wy۬Y\~He `-ֱ~kc4^ ,S {<'nP~M.NKV1ziV1?~*[4fW"֚% tcx稪Ok&|ľClY\sZR&sCZf16oxR DcX Jr>Փ_֋o`f\>9K)IYe4fF)Mǝρi.G" B|Ͽ;ɿM3whKlܮZ3Ȫ2c9vcY*3wN?-Orhr}/u璑10eȔYBcN1xiqP͹Qh Zx0`/2?Ǫg|@wo]vuf'ON 'f1faM ,c?绮g M޼i[7۫ftοNTlѐvӳz7S` ĝc! =Jwk7?K~ <h/?7AK UU$ht~1-b N2ORkC\4=kn]]\q>bZg#ŗ\ g{#2[ZJ6mzسu mOJK<8o|Wi}n.]wkl/>_|bK*뺾#@3^6e-pl2 cDt /|}9Yə6۞\[:s 0I9;(Y@E*î_%tNV!:g~ϻI,G6..<> V %Hudb̘֩3dY!V+1j 33u]T؞P"P5koۋa{R IF2r QV6d=a4gP'UhLSU|,{gٿ 洛6W^|npsZeoI? KG<ѥfIiPiԇS.dd]dR&yOr;w??UN">OQ`\=ؕD0e&t:l6l6|> Kf=$)5:5ZQ%[$֔RlomHbu9XS|oyzc,/T$Lc !*` >, s@WS 3eKT\f[~$]2 8ɒqUK{#W :?dih.>oqYJ$=0%p:L~rO۶QcZOakx{S"TŁkzg@r=`^pOn@xrh X3x혪8n.-˨rɨmZYǰoNܡ"%X6+EvFr*EfILʓi( $rY8e.̔hv>}:999PhC]c{%݉:;O&|b SguYʑI2ɐ x?3^>pvrm%{qcXAs%eI9""viQ.mV"Ò^Iӿ{;ze8}g5e*0!4e'ЌRz17<8eb 1jK|c-2@h7y£ Dh\mASӴj8s:O':\~=@ˠb1M39(6%ߞ+1ДpA߱s'|틳;@$?ٵ #C ǥQI+\rR; )$t u%_E@5s.v;9|R|TQ,ȷB _S˹Ao;_Bā0>mxIQHf%`M].>aj `4M1_koti|8~ʲ!,S&Ť +Yi+:S//NROfpKƧ0eW2:|w߾Kk+,>T3آDpƮ\H_ÎfI[QP Pvm4^Z%9A\7]1 cKmS 6NTf7@};8M8|*!5<6ˎb3f7dY{{\Uwr>صW2+e#fN~˱g:0?D#D$%KsIg4c=9V"!r82r:w+?PmvICa  2اL%~m[̽6ç:K"?,.e(ͤbQ]BvD"q$ 3]4q9>MކN1y 5| CCuۮ`5?{~xXx}cZBr|IS1x9$D/=0;BWo"nw^/@\\Bc-5ˏ̶{ @)d.S`O$xƺg]w#Hs5+Q\"@EYdzc}PUãH~(ďp;T5 %JH/BwdE&o/MOi"gS֎=<؀If.+v;E+K h<Qإ; ;;_/zEaՃ=`3_j+7s0CWKvٶ-|;rܿgQ;MX Sa.A6UdϽiȸ` Ȓ#QUrx*̸O|:sst#dZym IDATY7;߮o='- I\PVHhoFG}KθIJz<$GE5sWy>x0[7ʐl6d iuxo~ K 5I$Unm'r}P `G@jeR-<5j9o op ޱNcN:TϱϢw}7S],;?#@2䱾n{sBbUp>, 5XPD֜\Bg>?\~)It- aK]RS2c]ml:s`L5"JA7i>.#W:uV‰t\߇7~T3H=rxwF!\af˷Jzw_&O*o Iℜf"G0ӌu,ʨ>A}D$#{uw1ϘP)ȺʝLN~0y/Q']FxnFZYr"AÔZxq :y|c&dY}ƖX%Udp!ƕM;l2w {4 DZz%.}#okz %^}g\>qUҌ06%pvtޱHiF)@`mK5W$`8(gCdiPa2,Qݝ~# v)ɣ٣k6hVK]YcbYr(欮6t&Ӷ 78$>RX۞M {3v}.I'c 3,ǂn׾eU$Ğ1p 3ΈpʄSs{;9e$>)v DYoU |5W=#`9wQLV$nlpwo/i,|j8=EJ/ D@6N"&Z5Cky!SO?ޭfoLFE^/.e`ʶH9Bҵ(6B^~;{W;px@;$c=_/Z* > XLf?.YV^d➯w6hjFWײWY=e:>dSMBpFT+ jI ' ڛ!LGpZ "8e]wT}>~`3{=gH6C4fh\f}hulˉKy;{}~)rTK 3w5xy >XBr9R{c 7$`!y۶yئgZFEcz^XrMB1pg;!_&=(RH3 D]os}<&' $3{EP4)0^-T m4ݔSTO?&o*M9۴M%Y"ZhdOsr)XI(M埦y0;~9f\-BK;}fYGk'鯵~l#DgV9i23V`P~%_ٔB+Z`E{1+a8'b?A&N^RH%nlTXp;&)OO nz2z S 3gȻYLX6HĶ]F2NĽI$%3sr5kKcBR΁g^(oOӔ^KhԚKdF٧<}Q$Yx={ tt's|-REy`K\ɒ|L99mqi7[1NmSKBd[$2τcel}4">!`-[j] X-3 =xD) ";P2j$8sAssez1 5߭WGfn8svKKӋ<3ZDnhNsj.ZNW/~з-\ U 1ݬўE1dZr,upjG %sm7\q}4N*]hBS1xs c"M*WnKPOZppR?p8D8,>RJC@B*\GudsW[Ջ;DB ΅8B- rTȟhJHz&MdNn~eݚm]`F=|/[L"UY>̓[Nڋz +Hjzl =bht>팓.3n7kb<~ĩ@Rfdefb ՟)%beG_'!-֔R tQ»'<a:DXGn7 FWZ7GRW|:`yi3{nN)Lk+cA5T~;T 䅥\ᎅD닎ezdxE^/Z.pAK9C~/ɯ<17,B3R_C^yN(ʏ.Zf1dk&xH{x-qЏT,׈p 'HsA7 W?pFLJVsz$XfVO4X!.qyc節Ͼy<1ۆ; ZG͙kRud3ؖ:!1Z G34:4[7?S¬ Xf nձSj3# "XQ5> aWQ#}G \G~&Sލ*czZ<~]]䀖Wmr U,+ɩ,1(Q $kO>z"T ^;,sd^ռ.G?7MJgؙfhdErďq0醥łJ圴9~C|~C9݇qe(5|"ڡ&Q߭qV~XSZ>e3"ns'=H é0Kkkg%+rK\uZaW'7=ǜd]D]#{{ܜPqOP(SOTUHcJGΑmf| -oT[dNl7@FPKR\S"b}j;UݢN=6?Ѝ%>FxeA^!oœIh3TɝcH`q%f !8aVPU3h=! "F4e^<&x< Gdfq]Mk 1/6xeKju$Pbvl炀sB1x0%NoqS%| c>F+8 ]k4:,~ 3T[|ܺߌ1U^ܜ_E6Ĝ1Tk@C.l~)J\uh زz ,nrmyl8wa\ieZ.k ˔:n`Gs_GԣEgfsltQCn411.,47gPHI97=/XZmi01~GKf:Su~_<3c3p#|=3t8ީWGܮe#dJQӹ,?FF <t1 uXxuAr|NĶYwه֦VOʰ Y[)'~tG7-Y]K#f(t3+H G?йs@N~-7,w,شYRvze}/mO|OoO8]j(_vQs$ҥR?Vյ҅o'nVm]8z T52yki\Ȱ$f/*LoX6Fٕ xK4fLŭW|$n 95xVW#?3V5yRl/l6]mZ|AԧQu*M&6" z/x4>W `s>yVa`|x-g]N4R7P6-p2[UxE+u] v4@?Au30YeŠ2eJv&vnj3gtۀ[^ |O2̸Ywm‘emZ,_Z7ANdf+)҅~%Z0MV$ۋݶ$7$ I4Raa5"ΨL*G̙֨d5sbHnsb#Ɵp}FzRH /SH2I=1Rl߭0 30fKJy @,m*Ma<21%W>Zx ; &QfV[ͺ2՗i[J˔zokDr-%`qiuz[rbz:$ui? O`Ux y?r*2c |00N6ھ~GtW([ĉ-UWoΟgU`ΰs6{GBKq5en9W4:Vp=ɒn3 JT^[(Yf n.%7Jj`)uA CYl{!5nJKvDƆ ;96e4v2=]Z:L3hnwq"<}RӅr1*-Pe̠L4 遲+=1mɩCcS,ut3Vj"QXeڇ99B⤳O('"nF~PL"9h2 ;C[È Jn-XKiA;ʍ:YmC{,sݱLSә5ס.#bfMD GM6`?mCGɱFR{tɹzs|B_Rqp"Ga׹49e=([x}\oh w@^,~Dp(nmC{ܬ;(.vy. ,5czo@oe.xwMpRe5<$u$Q| 5sP49-GK͙M2%{)fzA?C տsMI#ٝN'mYH@Ov6ⅆ1j1g _S'`LtDOs4%X(-Vۚez'~\l%MFo޵CV3ȗ9Md(|:.axEL rJw9O3~.p=hmruPx!d+p/{=m3)Y?mbFnDIg"~}hbn 3@k|R 6_7-:Ӂ:t_LTx$!ar@g9g3upSK󫄮Ya:29zTzMF(7(2fcfĦN'g.50Ѵ&4`qԶx_#ۍ~8^d)d:`[Hȝae_ҷY†O O䎜c&%mmN@2L)rمK Wsu| H|߬)qŎexgk^閦 /ohOfi7}@r0}d;3z2szqۆu#[Y˵>+Tnn )̽917ӓ!9*hIH@p"'^ 4hZ,yn|"QR{ظ@^LRqNHߜ1J*)cؤ\p/2i?V--Kc)R[2n*o?QK]»P\ɵq\6xjD~zIr]VGeDFzpP<ԹO4v#jrﱢ3raUX]BUW(nlr;3-j$f̌21d.Ҷq}֒4<-*pKJM2SGm)@K4޹҇Gx&|]bc fiE.z 7`*0O@xj*ՔH3f_r{\;ȷ<`R i)=gF-_l4#24MهE TWp{e4>vaF<ՓH.8t򺕑9B̨b+Mkv,b܊"s=cnsݲ$u33OJ>;3Mn,)VEw4C480b16r^sewQP(4)s \rt*c)ӳ幧x$;S@~?_Zڊv*TY kKr]?0%|x&hPD?q gʮ83=@)}iX,g IDATyx`ldsYmnj5/$Zs'PaÌ^iW\zı}aT+bN:,!\}+1Cr.n#E+-X1ԉpL+'T-ޔhn08gz'.}jX 53C?&N^MIsfc%fCx .oocx*pg 4i'ܤ Pe`,ۛp Ik-R\*1R= NisBhբm)FJJm|ux|@omiFGg\044OP6Skzf\AąGn͌1/qe{H]j\$>7q3jT ;kv[Dxnqc,fwb7++I] TǒnTptA(ý~{"~+oOrq #)XDDJ])33 Zv-b28Dwdc=F˰R#2 ͼ\ <7ϲp.3tC_\)8)I":{M1UVԑebU";Fxr`*.xx1O."4p_XHwZ Ӊ ]vxtr0.DH7 [!M /5SoTr D l*Y[yfK9X[z%f\v=}liwdyw7N v)5T9Z rTMA:Py0H]!) j7:2` r1&%f(wff9U(ZW0X[^wܑ 4=ݗmk%$rrf܊JǭKH\ذuwZfRiiRFBK9ZG<.wҾVjefES4nE}'h1lp -@6{Q$i d%zRP6rI5ϻ0bvNH‘zeH}2~Dj[D\2Fk5C)b`R9@Q~%=/ĸCiZZ#6%ZJK4d07AՋR6R7p׫n~ߡLhgȡ%dj^;f:S0sqsmF1R,Eg=0T_d  K'>w3w(1J;)ҏ[x2IKxYQU*(:g;j;ʜlҝ8^i^FV j5KJ=VZ,jrGtX-WY6;(ӟi阚]ZrSoEƑ>̊G,. 㘿2=rKmS%Hi ZoQr3IT)Y*1<nYI0,d5,P($s%zٝ ̯v[+>+CYO:&|t7OHK;AT BB95Wv !B!f>%y3a,0ң%{5P= m5#C@pt&n2GX%K86.>D[;VJ0eyN̸bSO8'.3>M$t9vVj+sIH%>AR34sS)HP +߽^$‹TMn+ }T]ŮEnW[St(Ix5^H>vu G1eA^G:|(IܬG'ӟi%Yڔ1ʰg膓Tg XGW^Z>{@=wis7RM ΙSc0>v܏iBfD~1p\?Xr)S`enˤ5Ӟj˥O.[Ky9~$ gjyMfK342z6B$gfW|~Œ Q ^=4S3TxI{N$;]>D?ŽĪ}#x@Y]}2< fq }= !K[{=rf vf.4NzqPV_<͠-wJNXzyBmY]M-g%|R.o5b9ydSxsSjk0Eɕl/_f@aq3T%zaDf|LmB3Y2N0GٻLY;\5ݮpqbBw.Ffu6@x̪]]7R+~sٟ/o?䄃3ZVZ NE/RnΞ3 ('IFrE0Ψ&6^`MuŠeƶPɿ\\ީ;}]-rt&Rq;mM1>JosN/D;LxjTC B!|ђ2o]ܒC].u`3O`N2po8  /S+iR$6r5F-2?a7UW?_jdE U}RS|u2]6b[)(.xIoEII3\1vȖ\0^f1ьM*]%7r/CƊ_ġBRE΄*y1woOP9!) "\bds50jzGM]Bѽ$s2)2ˮT4r.mEjz;4ͼ{qh7 m!s8,ɻ#Dx J;9- \I\jρϤREp,HIߠD(2rYcn}mHc2zq!2-9|2(ޢVJ/v:WfrC`sN .{!7e/q׹"v *6 g,YJ KE}|euҎKpD KQV|{t`T rl"`0~twoUV+aL=ȽMNtGcsXe:aS¬س =C)r2ͺx so ;T~YYi*\>6GعSdi9DiCPoY@HˤASF22e HMc})! fb.<8(N:U.MH1Ͷ+YgkDi-&0pJ h8?iKiߗ&Ⲓ@I;R qTkYr˪TFˌU,NjpRhl;O,,/ !F^ӛn䄇24LJ44SdGo;N|\ʇ(˗',sIF@uO$\?' Uū:x-Arq_ jf Ŕ#r5 KUĨHbh~' 'x) G7W8SK;REBx^0xH7@1KU_44Lc`sd^ ӴG*L\cE\M&h,!ɍK ^ _Lͱd똗23f?~4 M)2 O0RCd 1ϴ[L\45: EVF ݽLnҍ@ϕ\,-!͊iu|Bu;]#y?sNLJ5u*ab9M=65$P{o*q{ R63P |f@GVD#(Tb1@4A"CYŤ% [Rf2ploѪ̢(s-6HJ1D7*\)Ryήa T7At}!#Ҍ-d`JaCxۨ"29Ɲ)^5;#f7͂^ {4Y9/ȤXf4*s̮4H%wmFçn3Jm@wh79cy/@4u(HQʅVL֗$J ߉*)LyDz6Rh*aRm"Z0Tv-X-}yb1.Iy>}᫥y7TͧP2sًG3W[l2ωUx)}MUcIFYS V?H̻ja^$@tqpPMRS.A4$&sBCs 9c[Y.t%;b:|>PJݏh`^ѨÇf7)ILLKz;Z%Ko+9>1s%č7̬cMPK-r@ty}5'l$ex @C,)zo!eFڎ*G"j֒ KIU&X]^GHYAaÁıN^?b0wK<}.eD y+hsRKЭ-&g3NJ 9p*0u{M&K%o-0Xh\Ɨ0`ex P"$*?VMcs;儩٘ك&UѹL\xp(8K'O*R ㅌgSD޸M/\%eda fɝ"Pv?<}9(jOtus f> 64W[hNUAZF h**9@z4(l)}lb[̅Zf};ND:}p_=]1KoQo"*{ MݬDq u5bb8F \~@:JKmv̸yЋ_Cצop_* d#VP4`R,=_c)a0ɔJ4{}py:` *ldy.E7?l&*qZw߰D7钺v1>R+!{17뉖NF >Rq&OzSTUȏхnHu$MRC'L˖3烶:Y 9bֆZ{zfjl{ i9RyRQrVyC='9ΕV]:(Lb ks-6\@ urFm֞|.st9Ex 7t!Lq @[$}=:ϣWU\)9 ' 2N 4bmdg̖$* >#Z]VWF{8p%7qLS{A(-]w]QT0LfձA4mIݑk=bgAyL2y{QusW)Z)$3TB4gJIVqW`!6!mv$Whd("Ww?摤 xXRbX(P_Zg auJH1!)fȸNp̜T4$/= 2$~z1-q\# MÉO@1앑) 4bcmR:=nN Ưf?2)d%/U;3+;k5Q+,ZXS?Au]l…?hrlП:u*|[; mtY4 B(УJr8 ƭ?Y?v~̊q-LV\SHETIn1T(me6ireuxci|}=Y*td͈#)8(N d <ޢŜMD &I<h݅:1IA?q:(op(KStr)!yn 4s]9- 6ubzpZyKh\srZ\KܛztC4勧d+W)L8c6+/{>OY? w-P;=AXЦ3+ٵ#uim?Kp IDAT1.Lyo8"*x)?%z& VQ[IΜ/z-JQK ^29. vjH>w\Ч7i=xUW>Nj]Ez[i#sefry[iW?czS:0GiSi"o x&j4uESÈw6,5Q"G7xT"WiBLH;+ɮcl7 l;"dc{n.E6r͖a9>(k|t~J(~gOIEZCXFKz6rNǘvISs.] IԕJONuwRYIPspaUӟ1V"n"\!pq{(5m4⧈hgv{J3}t]iW"S!렏j${փRT,a`jSD Mj2 c‘ Rxؿ6JmJNaF s=lfJ=rNzimI,&\ot%yjZYɼ"D vqcqtQ5Ū%.lgbQhZ?2ģER761sZ%ܴ#r,]5^$/!2t X?m8ƋTy@T/@Tepmm] ,1fx2gC^KT,e]2vzjV'DQPbq36@ɔ+p+Lxst7A8CI.׼dFG| vk'] OÔ,r^祺[-ú.=Ș mp:`pqSrmt&@ T )Juqjsx-HsERcp<3ppyj2)]ѯ:V H'4\m.nZ*P5UXW&,H"r^T_"#>XFpܜkDebpkacj,y"^fHXP@>닇]3*E>;uLJ\E@c2GrE/0mGr%z =W沖\d$*Ymh#RU@ii̊bs1*/n"&vtͮ㈋=bsW LW;'v~'^cfD&113.uk|QNqWi0* .ʐM[vlH^dr=!7|4i] E RZ ( d9h-2Ɇ 0sQqAox.vMI=uZ&o*]XfG3όlBi*dOySRDtrKqupƨRX^'P(<) R`Ɋ(c IQx#ޜ}ms%aFBTumW.Ƹ5R-Gq_|(mUYu?a0: ("KXV >d qHEL6wC ڳeA?5~fiW9cbAqOIRRu>]0K C2q)(T[#IpXH9#AYt$vXtxNKۜC9 fveZmpKZrw{x9a4iu ^ gL`2JPMG{ 9:i4Id 3I:w$`CYkZ\N6{ۥ<6GYfƇcvׇ^[Z]a05_9FVA`\i$`9(*-L6o*4?ǍQ9M8=> !, ~#+`tw"K9@^B>∛*r&GHcBLxlnr`ii9g$_D`h:4Ε.1ZhQ V-T8݊ftuE1;`pl3 Y\eV&L) K%xv4-f 2|iu^Hkɻjn=H qqNp]~k952|>3&ƂUǘlלD>`[dD4*sK9&ջ^>6:^؎OdP3p{kxʌS0NTdN'`sF&xkd TI"aISˀq~Tez PM<'œ/jMՠPY@CQ4 E u>Cnq UbkRUG;kg.!'q%(t3F6 38'C]᭳rBhc.ꮖ3df;f)v}0qRg8e]9 EOh"uФH3EK/aR:|^{-rVSi*C~OL`A}^bEEcܗ@lE@}.ࢇÿ%J`*@!փoS -3xr|=|9(PVE܍x pU"mO9⌀xJ<^dԾu<;,KΏ$ƈǶ,ܬ?쉌5>+0%-$`Z M9J}~4j^*/czOOn1*L@+݀Oc]3M* F<-26oR?fM x~?Sw;bsۅ0`M!¯ E,ŊWF^SPEcdY`,u<UXN ̱Q6ndsxZTkan|n)ߵ CNJȧ#)>Ҥ fTz58CxomX4-c<^G*bե4UY3hj?Zl]+Z*%0X@;J;ʹ BÝ]>pBuF>x) XMI UG!2a l#WxQxTn9Oި>&ξ}ry&Cn 1C:0~ގYfO8K7gn~?( Zi!9Eki.d}D+43StJsOV^=8G>?̮ܡj1f*SٚBs 7X[@2tW EU]^]K9>{V-vc/0 ZdiuQO9܌LITh3B[n <}+p}I L!`HڱH XU3 ̿`5;RV}nv\q˫pprh6lz) 6nEa(Nmp<%6Tue.pTS!xjPwew]zjc:SG>Ӥ:uAs_s&Tsι~ 3S! \Uk0r{7gp 2ȖBzJA Ԇz`8CeAXC[w s>Ջ&Pz6]6j9p՟.Ԗg r'dR^gwK`_ @mYӿ{s+E7!oDNio"Sb>|.@,`bNizqbbMYr& @(`Df=%0w2^, ^ Ь{0au|@a Se6 mXĎBil#)LBLfW."r~,]B?7 79D-%Kz#RuٞCY(A?e[aD T vF2#b ǣchIn'7lliȰ\i($Jq-H~Pf+XANS6i"wR*so[S{5 o-"~&Ǡ|\%IUZ+_f7iUJKQ9VMGጕPBd,իqss0c`{z5mF(ţ*%\Jl ``J W*-9@ḁ5±;gUXQ0 4ؙm>m9] |Dh9ըGY<^ocP섧Ei% k9\J| .cϚaf|ߢFK2幵4m]D/N8Rzfe3 2`6 p&$A.MOi|3rwlda.Ǭt>XQ<~5icܥG=?eZۜ 0^7:Jp uN/CD\C^ȋ˱7sN5 Zd܉ǀHzt^7E} }zޜRk<2SqnD=?+7yBC)O3ʐ#qDrQBxs 딤LQ ZaDB |q!Ek jj%l,YW(vK]* ny_ai @'ܮ9`7ݰ4`svA-E9>h1RJ({.9֩TV[L2T@Y^-bu$UD`Q?}]eZ! ۈkw>N <#d\CQTW J3;ڋHn-Y LI@uU3fA'z8i{";ؐtSdNDx@3KI&g#F"Aޭ}%A>2w^aݚ,*eUVXX0BZJi{m!*RTr{*;lSo6 0ZJҐCʐ ii5>br4KJ)uZC ΰ5b@bu4PK2ʠݑ>6sPL/N&]0n34rs$k S/PcO;s.snrKS5G:Lh"9/M SX`DP7 W\ B*ɣ8[~ZC̵QT/Yfꝥyj'p9Šɐ]eE"SYPD+͂V'TU55>- -AsNpzh)Yx)h(S>ZNq*B_)_DϖS^VCy[Zj0o0ƻa %9&Ry2W[3"lTqrskp<8BC:ZƋi`kkQsBDFG-+SBޢ`; ^4c`:4CRg M {%c4F+sm+KTub(*YL6$ p",{S`7b - af6xL$B}nN-FW 3ۋa\R  IDAT =Z,1N8zB+Q{\?9q{&%gBY2Nʄ&ZMSjX0nYKGE8rDZt&2 mrD-}.W=bsz|שb0Vݻ)QUwEgxL,v씲}̹qS]7Q!ȕl3O,|[E{feI|`TyCQ ι~kg RfP/Qq8g{^S;,Jz:5hJNP~߽QϱB<٦Dtmuv`\\ޥK>& Fܦ]7oӒ*};`}t;.)/VI@,RXp׵EI|zfNlKFro_,_/|( 8FdJ\ Q&pa@LQ¸hHSUʂ>.,HYD=.k&d|vS1QX |mv H{|9 e"|UfΧq;_J&@ mN9v's%LcaTlT1_/ޖ8OhwZ}9smLߠxqZFgϓz.7Hٍ`9N#rl7"gkIjfOkJF쥶YbU&;5^ot'^rʋ"P}pyq>')oD  r1MT1`)lJ&N44# i8!@NjjmSjKU0dcLg#gpI}qAWu}fc7@c /;>̻]/k]6\ -_GoKljN<Wը#k0ssk\8AI *a`›{O @9J<=6Rlc`.sJ)&s^iZ@1aB<(׿S@E_ #hhl~<7c p3H;'=Y']09ƅ}> \Mǥc ^AKx3?+/sL_Cph@] !Q{_YL[{{.-Z[%ƴ hB14 !I=Q# Zb@@` 6mv7nvUݪ[8G>"dv~ʽϹ<"sޙ_|[k}t 5/PuMn5MS ϙU^ia-.{qKJbPôp;{"!)ۥr[3= c1Py20 ^.}HnLCGjG,Jidlߒ ֈ?X?}[X_F?/Bc% 8?*h?*1Raw`%s.$uG Yoc\a5%x$f6`3 `֔$3;SRu8!nȥ"#s䰜9sBv;Z-)0T. 2ױ1bkt:QP@+xOg-Z+(}O (^Uk1 ֬ZcoV6 gtkaԫ2c/Bi>'Ŏ"=ϊ+L8iqҦ 9+ M)9uc%J)9i283ԉ&:qJ& j-Ct-1a<[k}ɰg>,,c4[Q[tL׼7 -@H fdjqJJ9A =WD5wB~ 8w8=pF Ody@CtGǔ]8[Bq9I-+qm[ z h-pweq_v )Ofi#!HEmF#!.y)%q84~#x<'{w7{F:%ށ&—V 7!_Uv:<gmsGUu皿Ϝ< Ƹƻ('|bZFf|uH7jOzeCbp5R_ebxo41 K{*$PMɠ xCmG]"=țm)_X =lWVᇵy;=R`?|_8o ޵ȠqL$,kB?Wh}tW\u"s"(3p PiwC>Xb t)00uT"8S`Aw(m]"I7Uᐝ?;[)qU7]fHKa:5)T1NEvpG\kN o~u{ƏS/1kP Dhd@{5+f8xކMmYR=7[f눟kX# :z=` =w '#ePͷ6ǁh=>c3zmG7J3G(3SBQXY.~m"7D[L'N, 7u %lPF[#Ż}!IXDQp<ƓqOP`ڿ.4!:lDe'Mmظ#\$ggBX)) ./k?{ 3q{\ k:75&pL[lޭ;bq']D2WLxfP~;cTx+{mf/S4~Xv92c:^@:`G\@pvv(ǎd|yq<٦ES '>#YsǙm"dǀ2iXf_MsgqqO-`j9 ~ 9,Rj5nl4S#Kri 's7Q.H|ND{i|ut )Ybi=Q|OlBK6_[9J0ȆV4#2WN4>-rTl{~=>ǘx|2Kt磪HNlްM{y* Ebة7Uc5.5D c0:.YSTrP*I)jwf[ J1s eH>Z9LǍ(|:\`2eF*e@j S2. wD񶎸#Xh"eͣHh I*GdT1j4nc|9 &q3]m. 3[}s,驌}- A=谛,Rzkf=~PH r*vDĊ^SFwU~w'ʈNe̓7ҝ=P9(p0)GaBuKxoZq\R% O[Lf*y Kidٙh@$Ao-æiDQ1wfQJ́"g׹(>5KS ^@wlgsd1RΩ৬?ӆ$[!.^|4n~?=>έ&S]rDb⧻~]~m-$gOK1%8PɎFSҀΠ\ȭ'ɡ9癣$]#,#~ ȎH -ᮻĴݴ94K'M{El[ C1`+ޱl|-HX3#{<#D~fpO` Idki(5cCB Pw=xxx2P(?ʚI":|CMQ :=o[~?r!Zf (M=U~F &ѷ!k&Yă687POS'@^pB4s'`%EB 20&3Ѱ޹9bǎtSW7iŅ1Uّޚz)nfJkֻ}#>#V]2Ee|sW"ձ[m7'o~?A"V:9̅1vK܍a =7{y"'m$I*%y. XaFdWjLj俧|fԞcRBsYu+_Fc{UuluWh%ke?D=ʉf5 sҹRa#xP{\G׋KLόވdPJ(Vzx;nO1k=ϥ9%|9*G߼'7\1™r2W9zas@8;]g@ղE_EM}@>e,MvSGub{W,ɀ[yIa%1lOK=ʏ5]2xw;iV5ΘqޣiO 17XxgiR#*rk,B|YބCqxmpNsU}?GvlتbgP|xbЇs˻dC'fW/:k?ջԈDeB1#~1m[ʺ+@LMiǿ0DCZ0,K,F=rɐ;:Ng>~XWH7_jۊkT6v T#ِ/Vι[ YOL| xs$j=P=P /h1Tbݳ^^6Mb)̺qBTpy5 fo~c>'̐1_t|7a@Ӧi۳T^4ow;F20w}9j&z#f^Zgn vԫ_}MsƏ[.a܂NB]]]BU>ʅ |VX9uJx=fAbE^ShBiga~DŽe^ :z\8vW^(u1P as,J V)aAeny:Xk4iP鶽71`e8 fY^zf 1$"cdIxO05h0"!a[RqN5qf!&9xl4Ys1>t]]A SG8i[v?-AJ.pۖK[0΁\Min0׶3˄f"u.V;'i݌!cjc7=1+ZwCr0om~ 1N5ʚI rxyf.^$;d궔q=w\*ıLflWZaVuH 8SzJJ4sBY)9:n Y0t9ݔr#)jnT/ApokkDFbtk^_{CJnh͞]퉥y2ޘ- $بBxǜoAaL&&qmg? Й!b IDATn_]C1§4-vaO?{W`Z%`K:L/趧dKzd=rB{@9FUC aC@n4IxIKJ~np )]&B"Yj9enDE rcf;A!H,raxi߻d@u~~}8ɮa{Wv_*}U6T!]5-l[b52iSdaDkU:?3V1< -dWKHZc:g$}!I5h%PL;ʧZ(ƘӂgC/)ؘh1md$nחV-M;ws@ Ek5D];5qU2&II?L/ŀfo zS#orCZSuPgiEJxދ͍;VvHTFL/4l{!_jb.IdEHpWV)1]Fr8|V߮@t"✃]Ng304蚶Ug*l wM0=ౡemc\C%k:ޅa#"\o(Vʄ+ikq(p?炀sK Xq\l$)I9"a ?w>Ѝ _=FӂsL;)(w68vO }^oo0 Bk%:x񮵊x j%.[J$9V~|].zu:nĴ<-Ydj~ @܊P`!0f=Ֆ/i5HK2fIkPɕR<yꈄ<3X- 0mm%wB ulJa(8]@YC)=yܵQւr)7R25(=ux4K}6̓m}$P40y"$\(̾ġ9SsC _<ҙ}FYBf(s s&2`Z6q :3_|Yd zۍntADqM#B;bat3(b k܀jlr뤴S95ޗk5pc t ">4rK:L&RGaiddR2εX" 9-(AZf`; AwˑlyO37è͍߬Z Nڦqs_362KΚ+Rn*.8mHBUQ4ſ(]Fr Pg%\bn|CyA1T#(?ϭVJ S@7 HO䶳%iE-sgy.i`jo^o^)Ļi]t8iSL]Fi(sS9O(or4~q 0EeOjuˁ@2$}1 ʉ wC9QkL07׬OHtI.Z4s9GaNH2Sg>?&QƏ6CޘDRGwDžܾsbiz~oo؈k-Y 3aB\,K@i-bߟ)j{wu~d7~iu0p WZ/q( }a<AGڜq-l0ܰ'0 υQ(n1]`wo4k&\:g5)u)mo:'³Ρ{q]jkآ|N)èFq%¹Y# f!!<$RwQ(ca}MN3DZ]C??7LĨbD6 {gٵ󰴁hF\,?opG۶{ )XRhԠ c'Q,5ɥX|Ybm0=|(_bZ >5UI69({\jVsF{{Z)/U9 \1Y>ׄlfceE :ˡIa֏ g׳5h0Ii )͜U"x8L| O?Xbtqy}UqSM۱ϕn/u5[;Y7p>OawiE|iuyW#A]Ggl&9}Bif/sK@v`AM_0/늶s`B>_q;-?^Y) TAo-w@jMXn 8+9Y̡t[yao4߮.uK/y#홻j UbO(=wwOi 8,37Ζd`zJ{>g#)RqnLDbTQFcWpzgMtW%iFv i>>ɞQڱ(0W!چm+`Bv&GbWO=}BӑԔHm~}.X4S:fI @]Mw(xmXk{i^.5MRf5qqDX\ao"A`i,>W 5xA}| 6}y#ἍFX8eٟaEȔ?2,uMs8i  5q^~!/:h@P33&]=1]Cu.?$5l2}uljXVSSN`?W?k'pFsHT"U`ٕ.t|ҹX⍶",>w,ؗ7ύ2 a~Ogd¡(0G~H3&?-dsw~A(퉗2#uK'$3J.Loqzne,;WZ{t-'7hN nQJ&Fc>AӭY v=%'~zz㉒>R ;ϕ`޾SK9kSbKb>>%d(|lBgYaq<>sq0P#ϧ =?9O1MI0ު+OTtM@Dzԩ'؈S_굪_A-TGAZ6;HL-8.^ZC50"^3~F9ȅsFtzM&\ΙsDO`Z)}R/8a?%1`Щ$:-k_aoX݋K)im{qh$[ /ٌ}J @lKxZ)LAA\#tY@бTGb)SQT̩# TJ r] ME@gڛ:l`vM`U}ih4V+=@.h_ЌXpDHf16-/?h?=Ϻ lN3 [9Qk!^Hc#`>c58n$.pa>¨Ry;KU tYT^UG@P>q3#ޗ m8#~D<'s1${:_n7mPg8L[%]$jYUȠJZ=IKcAE~,wi%=Z\L%.1{,-I&SRAr8MK#%yPkyߧ+-6`i nTbd2 gmb.9։DMba '9$Z`B/ƄMBdL[)6(-({pDE#՛,\G&Qb8zIi) ř0X@ǒ;)Ke}榖+1u^ߐɽ<<`?nl4< q. ` /hf#3bdžjidn,уl}/hBr}nDa2'tLLo#YJÕȶc5UO9%f#6vNx8ǂϥ7I<?xM:^Rg#7SIg@ >DKF`M "T\;dN6h ;!",@V+I$)V9fMRj#6"ŀ+'h!t1\e I1z,ѥtPڀgtkgHmPAeo>S z@3eLcR*p*Vv*-G~SZ"F =#U,nc)k2D6i0TSV 7Z3FSaK !'"H8d˯Yv>yc8!ULKlQÝ/0S"_C׏SN0XC n n'pmw)-j bT|F;4_x1$+HX 8+^G8t5L'Hv^9Ribf A S CSc*Yl166Ά\+^W  A$źRǥ40 &3O΅.ǂc9qF̅9}(b!͆a=q4o`89yP},ucWxBT >Dip\dhIH5a5&Ɨb@X yaZF.|A=""-S$7n\Qh WfW{ EbxDt0̗i^RC۴'99 cfcZ'/X Gy.v $8-UZ?kCҐF)9'\ydt1;F'd}u]l?ơ̈;LhؙޠSKgLLfԚ?6OȖZdJEqgM}1琔 X EyCA;^c:˜ .-\Hޙ;3h@brgP1\D"vndrIl/P[L6jM\#WcbzQRjf،K"?F :c>Wc1PeƹUk2yRư1Iٯ7Rx4mgqpod[>iA n*"L052Dֵ`]0Cv/:n`G.NY*\ S}9M]F*(΁l*U['GBze( uЁt4bu`z"sZڔ<ܙϠyrx5c,Ie G(b|6ٌxKGAD "]Sr(ܩ?8./Vر݇9#(9rcOl38<ΝxC]χf\txz8,\A Mil.J6864֠#7Geґt_V_SDNYԕ "[LˈJɝX3H!#}Ca\ }la|)ɝ`vZowv#T8)ĵiT3r+LS2,ֶ:snqO>I[AS{$ k=}YAI/^([ (uNՂV>#a*t\M-zinaFs >á5#G]$QGӾm#|^i| :f;&sgN.138!I0Y18 s lb4, mEXuQlHfmSeOHL4Fw *3v&ZA7$sH5D18;5aGQ5HU4ӌ#2 FOND(|ȞL3U>#'yc0 )>h 6wvEJ(iʚfd F̮)?\H@4r7846"ʖ10sX'bh>As^*<1iAi/Vܯ*ٳ-] }tN"jų9wj*4ߥ@ܐ#flk}00渥V= 7 0z E?g8$شcK%Vsl+T̠Y]"2)ϨuBK @]m:ƄB ms4^6dCZ?E<MfM,2d[4&[Lߙyn̾_qWfįfBMcYMk/C%kߣGLX IDAT o^f|*b(hV'_\:^7I:=qܕ3Ppi&gR}sJ5-!5k󝱱51ڇ]H]qEO_>,̍na;R}֓6Q Un: O 0ca{L;sńBM|[:Knp\K0k(טfٴvE 8.]ׇ\q6 @xug}7,kk~ߐ~ܐNL3G]t.h$[o̊RH2VϽ!&}}AۻKx^`<`ꊾ א b7=KpN c጑c649HƆrt ]/:<b<Ǧ̭[VH0n3Q2d6t"ODΈH޸IlcKc@]xW{p a ϯhn7_j3SQBOQ {h49h~/48HS-{L&eBGm`Mmkȓ4ɖfk21dGOjӼ&-Q> @At8>g|m>ӚM C+opO ٳ5R. s`3XΠ\kw3*E?!fM/4/qqqWPxX\ vƺj02E&efPg7tsِ3oVU{b}1z=ܒSHΚ //1m>0卹Hg4p,٣iFe𚁂KAG&E}`vyCl8=BBFe39 7nr!08!à3nz:5[bmٷz mE ~A4t`n`̢GbaC]fXdj˧ĘK-Ƭo#B uA@Ѝt2Ҁ9¼0@{ \ʳ b/gPO?hg>9Lg15$/&WzF;O_{@ ?0OiB=>k$ >iD|C;|fBh=)Vo5#n91 pfHPڄ<,*pמa:R`X\C`&"Y^~Ez`O`Lko &}qM,< 1Ѱ͐ 4u zE=:ܼ6Qc Xν3h 2u!fۚ0I[pI,8tpo;k95sO9ݍ '\1Ĵlԑ~m!8k pý젿&` nhop(S:#(1KѦ^k734_8#5 nE LK/)t-5) - OWz{ ^|CT^66!.[q l1I$k kLAoTlmMT0g|!3U).soc;/c|^s$QOx`f[L3lrg,o֯ DCyOgs(%Կ%-Y 頁Uiw@ l߂Hk)`c>/ضFN`#d5z 3h2;#4qL(U39 bkHySwKnx=48ݐnnXzkoh)e[ø[ญ,<=,quYAs^X NIz%kl=vd ` @; ;/h'8' !oE+۰]c @@to!@ 4PIhqvdj0zq9<{|6MƬ0(Lg>' yNJpPOt Hq|M#+bobZ{tA V#]SpHr5.1eM6ö}s %Bpa7 ,9(d > 8^Fd,u`klm.* D05AEgB|G?3hˋ082JaܒuyΏZ)1.3yaD;1s6Y!zr%Mvbdʗh5Wo0,+s͹`G'pMBy!o>( sXhc0ڪmS* |f1}04G6fceHC9rf r,}v`AW\c}7"|3ryy EBz<Bj~mHаc#7aZ;;1HdǕ 29"cs  r͉!%m0M C4a,t1|A˼T+j";9`jc0iD:[YDžC @2˼-n>$80==q[)VZ:azBX3jdM欛4yr׀ZŘe RW3ޑjn"R`2漼k XX}K9+s꽵kr49dH KL*b_rU%lJ[Ա %hNaI)vY,Zqko^c4'fМϙI澷ڐ[ y)S-O3Go,--S̠9/OUj@.]d:8,I*uoZ8FZq)%eyyLSNxMY kϛ\ȬXb%NA9!$I kU9М4GM2> =թlUsdp<):OdX&Y \gAs^N3an|E,x@Tt ˕!dʖrg 3h l@-RyJA|M8^ڏZǵ&aSߖ NyA>%S296ZT(V461)JۜP54/3hD-%J]9vt*xJjB6J5PW3D)lGHs ,̠[ɰf),ϕ'*K Y37ʖ7^ i'TexJ _SoN˚:\Ϲ,l0\Ԣs+ /XtZwTJ\.p~Z&NVڿqlohiD,|N|eA@9Ks<fQldƱ(Ƥs?Bڒ̹DPhJ,yf3hR9o) >ő(|<@"VbrLmkIjl +55(|ܺ5eM2sKbK#P.u\rT0h!^E_etRѩ-@gBk4A>Qזg@yNYcY(3 ]BV.Ỷ >nOY/BcQrLf0]br L-J&1Lk%ЙmsG (S VVQM K JKT6$cێT('5E US[L+RX* 1|gaq(J1T;sS"2H ,5P?:&ju|w5\I K;*v̬dL ss;eT.0M|H3*Zm2*M{z6tQs&Q sl=s`?/3ӼqO.d)9vcZ`Ov35鎱k%cUm51Oa(lT: w:Z֐yN+YJpB Lcu=9V~0]]>Gaۜp*4?ŋTTz,rk#@'vI11A17jp]QRdP#!4_zjZ=J2שT7\tx=)z_L4nׂQNDDLesbυW>I$3`ܧn2֐ kߣTYr հʏ`~p9>Q*m:ˀbK"ŶS[s%\RnWM- //ìk39yvFO5RP"KpEjKemBhHw/2ݩ=uCe˥.f| ?sm5#3jOmL¹ސXc)W2=Q^ s j0S /|>YlQ 鹵 t3hiu_ #y8P".Rv̼-sV׳_1̭tz5\v>!KҪ(0?h\)Qqj+sjyWps(d1J%p0  j|AK&0@ ,|L#N;՟؜&}) .ɛzTb3hf<6MgG k{k䉙3T*+AAc9F HUEH e bI\OevȒ~ @~Stj짙qRo);V:~Sut/T+##PUBs ((#iT%ĥ2?{>)I@_F9v91f3@< dtr`@($WZK Rl%dԱ_-.>SAv1sq=Dw '<|w5!C D~s~{9@U t, S.BI3L9wP tqg^PeͻwEEAki&T?# U}H?o7\_/k~t܊}q[@DO}HDV?~Xav:rXgaITɣ܃ ve5FS~itMy,(󇌁[TP`Ci!<}5yYw7_~v5nwZׄ쏗@/GpG"pkз1f: c]GTF*TF[ l Zrϟ2$Ke?@]U5cls򔱻.]=,ko~KD_p~{`ve^vTwpF\ P@F~D>7X׎G:ٓr*!r}R+QA959vu4/uZ(m4 Ń7~[,7W_~Pgu .~Y ru{=[04G~WO}ZpSXYN5܅$j&4?GN.Fcu`ny9:L]_?i+~a 3R8inޓvG[7YG47[yh]X͠9蘵5t;ku޸~iT3W.niFj/$x kCZ6XRf{(zsZagr7\>ϻnE[~v-0\}޽05fTpOn.k{a=~`fܶ> Dfv "'0혥7clS֙k-}˒&$֌~Yw1#Ж Saen9|mq+,TcsgןA}_R." [?'ȅ6j@ ORq=#viSrΧ4VT55N3h>};c2P8s%]Ucj3sIHt?s?qv_)@~ѯoy ƫOæ|dwq7i M&!~,;RWďZȒ)5.}002Sgм۾f>%\k{mr!hcY24})`1foHwj8_2g R޾G"0-0R*߳Es̈́XSGքyT)%8o}[5q/BB ~1ln Ó:υ9&4-@O%6[ k@i1ߧSwqJ-_G?!ˎx':#e% 49MM8q/ʵLl(E/uo-kuw]nɚeUc eдڥM O Oy.% )q_4WOW T`-BgZS0=w ,i8 F@},/ָFw& P<Z04\Td\iLyYTP;-W!:zRxئ@oy|S.<+~s(#\AuniJfHd҆od-Cr 8YMBX"yj5ptk{xHQ Zz6c'4+K1XuX^r.* -q>x~={;K݇!3]]a䓝vdf<.9TL83X(enH9w ;; &;WcѦrdS54SY(iF减6YA&cYjlGn:f.,ORxV(T)\X:]ſ'7,Bcجxܫ ŝsbe4-Ì4cҀc|)[#~y}x DKzfmvݲ͘Y8!מGUf`\ eR`@~\ }nB/ 4kgNROX]f)e-͂\|?,eːv_`C0%LYdc H`b93txbm-KYV~,0 Rݞ;ߺ '^9%;^]d6̓C9"?4)h*ϵ[$5ix_;{[,Khcv'<ċx1efDfDddfDU$M1tA*hрZ]V5 P'J4Uݕ56YY1d o96m>GdVUPv͖k&%ŵb{eO3ZI,/fLZ$[$ÌA97 NV)b!1^+Z..~Nl3:S굯6/K%0 ̛JxIhq=sKIpI#zIePrf!w΋?X]`!%{?IF+Q]JG<.W)OXZz@虧,fo<}caMbPbn]3RFfYr];Y־,/w}+aڃ,O+6+e)T#Q39xdGƌɍ:JT?e :nu;7~Upm]O g'>5{y)g<6z%)Ta=9nx c5o`Ō%*0*GB`0<3#l8)3i7&n{nͭkNҁsT˿@wӦ`\[ m 37>Y2SFQj[ύs1->nFbU8::7gU_G gcslOb#@"j-A1쁳g0d" b u:k&̨fq`\R`Ɔ9̨'"1pE3 v z#qqvTGca%iZ_g8W\@݃z`J|ݚes;͋9vsc d':` E)opWOtu}ߪO|%߶53?xH9.7zV,ui)]Ƞ45\#fu.7 ,PN(I3|1of] ^^Z^lTθ$/"ޣihvmGK Kۀ=og?]|^ #|G[;M!:^сj9m^D;~)Y{9_ !|6G<#Aqٲ+>37'hq_`Wz\X"#\/2rgij3)]Issk(0-S'6=:Z;͇s׃>yC(xb̞i gR~,w2]_:kڮ-Ǘ#a'R4IA.VIiW+1xMKZtC"܁ pD'p&peM nup 76Qu9ة9!yaPW |y^Bs{c\2S%­|v?pIK9ؠ9}:`Kĸ$Kq s.zdP $'flU@MδSu[f< . 9ÿiyT3cX[< '[g7@-_o<4Ms3Cx|m\gNq2,R\z=-O=~9=|iy5R9Ae!GTJR2[N1Ȧڇ,U1n5"$0]0hBPcTJwfc0Km3eTUKOSP@8X3Y}J@iins<@ v>Ӌ+0"m-`NYr+U]6fqQ21.{$lO75 )qLR~@H%w1sNܾ9ai4DiJ~npG`t;zAN<%-o$U/9?{v?M^+s9ݜZs$(?Li)s;`)m)Upgxcy|/}{6`10xB`"%I99pkEqF\Nk\HJhrsky[O[lM)E7I`r\S_6xi =;~,Ċ^}ӻ;93s=|>&.gcX `#)E-p90z 8\!Ԅ52ӿ -Y1uӨ[a?:sEIY{ɲВ5G=l@?6G ';7\lmkeL13eNT|ڥi^$WVImmuLZY'9w^Vƭ>+[9y>}2>5L>]&Yy4n#_=os8*D15}ZQ?"7@>{76|tg]Gx&6v x?&!x<7Uݳw˥ωwLzI kua!i5AąKG5Qzs"M*Y0@~, BTHy%e'%鍑UQw9מ=Z] DRϖ9{a^Ɨـ)]ٳXg%Ô%y,/o7xaT.Gݔ7ḛ-g!| _8AU8qQ}6`!!]x-@I$Q?84y:^x*`gHf|0D5>'G$)FEJ`•Mk̗7HuHUضX($cw-Hz TGϾȹד#Ntf 7Y7v"[-E=`d"M !zǭ]ط#*j\uIocwJb|D*x%`=>ߎ 2%`cLN#S(2ڸyBG"r.1.5Ed\t &Bg^y|m##@1#S87\+RDj<~ʻ8n&&_gB7n seCrfrJsF'}P1cM x %scj{g]ۤQ8@ E: 0nt %O{{l7t}Vf t;$sGP#sj6futsDDz}8N<o@L/ԓ|i5800o5qR.'b  ~>[)(lB %5m|HC=GJj8rWp5s,S ZWB9P1]A[m}L-bʳD?L AS 1e23/W?% _NOڲ RӔڊz'[;o5ZmѦDDؠm}ouL͕ LXa!Zc p{,\l}e8\%wc{!\f85OÎs9ͬc&2e9.9)%Ǯ 6W/]Z]| ̔3{xd152DXxcJ LQ\<1w4H[#ð/p(kgǕDtO1~_36pF$8*e"\I;RUnj=œ [7?.A ܍$3F^N*Ӝ9SH K!a霕-x>La5\t'Λ,ӟ=a;|˹TXpܼ!LWx|cF؃"2K!7Ǹ`h@˙ujL5#.XQ5&yU F2 BmPKN{}Ӂsj]=QCnLץpLxw9rCM]js1J0L cvk!Qݣտ5X@@h%#4 ,3n/Mr'r.V%7Yh F@9]Lc| `kօ K̜*m,ux"`}`TP$vbKB+GM ^>B$W>}ۆօ@%IhźdBhu9P%˒`THKxdp[LW]/a+cP>{ Q_2z({G2x\3 xTz[dNTJ.^P} ށ/ &YR9-0󄀷EFw5nтs'îFu{~I5+_?vg +e9`4 YcE2&z*K(UG7+}IdW޻!tZc`{͘m^왦4~}>.|l͔ K`k(F1p{sNr ߦ$IM",ɉ,I1ρI渄~@8fv$jZ{*7'=L}w8c2^rexg3? h2楯ĿY/KWP[YqYw^B\]0_Od0Bt,1̟GJG1`6Mxo GBJG0HhbS~ bIz KLE4̘]S f<"dU8T +b4Xp>怇称)E a>S6lOIrsR^)˹^[]0pse*6bVpJ+vsi z^|osDfs=E8{ >b&iZfl~̾$!ήIBR췸;e/hnh{K8I3K>WR *wDx;dFo43IDį9 2/ceX 4l9Q53J[r],Sw .xRbpϥVrLsOѿlŰW#~\L2M ]:1,RK !:B[14+=㻡?BDXܺzA~k}.q)wkێs|{<9)i^@!ā! es$yw7 ajPCT!"ReYs e%PtD.Z[QJM1b6 z]on=oj)Z<uyO$c.Yf ?r<1[!>͈NE9[* 闏h޼wa\9c9tNiYK8pLHSd>ಫE߂x(b! |mrB7,YM#icg.nr6,ѹ$2E-hͦ4Wn_&W7~_ղsphZǜ PE('{dF6 @Wzf| xO'I+{`*M[SXW8bΝF%S?kJF7--hqT6{YnCbdpƜqN%_%%g2JMZ_;=Jn8*+8Q&9ծ ?'+ʀf4Y94S2-"` 308ى}:;[(I=?9Ugw}1jsB?K=E'Q9j?kzs$Yi)%~ 0͔jTh"iwT0СN%>pnqpP-V!"[ZT5wr/dc0mk^. !Cusv w]̲5sbr%)0H}lb)V~nj_uofn$M4Mo;^r R wSjXϳwàߩ; nM{.A?5Vm Օ7UoLry]ofgj3L)Iu#ring|w'zdOF7[[P #>șRw Jo Ny< 5M0IIM_z?Ki%4Tw_zu$F:ȱ "kІ6(gnB2 E((qR#V$zug34;k.K$ KMi?a6Ģ-Va}C$8"//,2|n'sz}sTВ9 3(+cԀD!n_sDwnNs7[ zb?ABhKݶΙˋUc4;id!lࡁ=A,6y\̣fTs#n,T6?Fa '.z)fxڛ#O1 ۀ[U|J̲%8rJ ڣNr. )rDsYTZV5J0 Lۃ+wF[+h^ͨnzOc<7,&R/lor?0=ؙʋhsR,.e`JxJnɸY*<@DDwPu1 TiIzV%/:K9{9S"dsN9,MV:A"رq>q7n=rUx5ݣyQi&Cfoe"SgFƠX,>LXܤtn!WɅ[Rhzͳ;o*=?=:?wdI1},66pxZt i']{mqA7i%T҉CJ4tL0.N+٠q+33`U:&@ZYH܋n3RiF=hj%}3YޝwAcQjfuje2C p#@iPD?qM!XB Hse69d=U_ĥcXyX`*eV 5r_H 玣I$PKْ ^dJfg` +0edCEw Q<. +uzV)Z i\T냯t,Ӣaf2]㴙8$|a,X9L1`.0(4s廜E/ 9.uIi=/a9@EZA'PtiHu*<ͤ[-F4_X2@I%a±t S; R_4sd )qV *NW^~zT8d{~'JsG#rgZ93 d0'GnˌC'ȌyS}Ysuso9Y#=:s_ݨ׶XJz^%ǽY_g 잦F溏$6ȆB GWA 9Is,{fܗ Fk!FxE5W:4y'0c2fE}: .)/jXxne +\f>~Ms{㔴](k2;•B#(%Y#zv G*QYd/,85Bɹ<ҁ}S^]AH/a/0LZjEnM*\#F oULnd|I!nèfTri1Ǝ?:@ R-uqL%v)k]Ms٥|''oS:pxm$ggW z\mM27)Κ 霔#uQ 9_P4m[~ ŞmGCv&zӀQKȎ/9k}Čk!,5<s[fn:56}]2[L*-Sr@Sʈй=%R{v~< IMwMwZ`a1h:5հSH\k9ʭOJtY15%@~^<ű\69;vڹZUo=9aLKsh91pVoL6/"9t3R ?юx238/dZ,uw>JM+~G¶9JVc Ƈ99^< R#0n9G&E7Kl֤5:M%P.}?GV,Ya y@+\3yJ –fI% <鬨 Uny#}p ƫir-e }!&szff"4+)Ԝ)ˡhthe(qrᵫoF8dglwvyMm=-͵~IvM1z6Z(SŅc- -3;c~ZscSZbʈ9RCX*iL,x8ks4 a\8=W7T/cϼd^<<+*&S"~*kqRYcW3JeDʼnT_^PM D sHſY!eJԣTG'3xw<4gi%g=齔7&|K"1MTsT78"CM8H=7{28f~\U%z,KGp{$M@zVd=v>@o܀sven;gWۤ|IGM# W(1P?'xC1PˤEc9Ij=r,hb%#AFu.syvٯ\',)-e-JZ9< TƳA0P>n%%tPuNh|>,nBmPhDX4mZi>)&u͇v ,2~z+NI0Sj \{R0Ki)*sΘ+XA@xN%o3%n#&Bj elnHs^ KqJxJUaR?aq]P~6H h? LˌNnyA{ hTwm? (Qp9VcČ+]f [+0 '!Q2bNsx{iT;g(ɜk\)11~ \)ץS_~pHӍF[SiO5a= 57˴M`lDR Sf<떥zcN3̕ĥvAIV_h-ո޹2,@@XRL=W"tAr(BN_*R"e*2NVB̵iuLrFNm0s7% AO]$gD\DD:cffpmvfg}aVZ31<ئf4`T'#-*0SE6S:o^tG{n" qeJ/Ax5^#hK$ܴUX~69H\9c8,7wr}"~-l I Te!Q[Y^9aXjN2r+ԋMJ4ljFv-}ݺ#h|]S; 701b@dbeرaט,Up8af {λd'sq6r 7Jges9n{D s*`".0D,υ3x)J[Ĩ-@, !5p(K2IK T-^"**<. ,EmE1eHm%U4 #}fc2#hcJL @`KljAx Ԡɓ3pߤ.`398{s "'UV_wwvz."tGP {(:zC:>%yurs~CH̜{x&f h:r_X Y)Il])햀ϰ36F%ڥ$ %?c9!Q׹ ]^}c/4my.y*5Y)~[!ta FK1nJPo3 JXDy/gኴދ6'CbU 6>w8 U'ݳ1[橤*h6 r649wDRS-|]8C߃\r}諧B#QGH`upfɟLЃMK~.fG("ѥ͜%\=9~q@.[)h6UԸ5'~ΒLjS2cus79 a闚ʼ~GD!Ӎ!A.^ e ,c&\dukf.WS|?-b,d*wZ LoL8c1*r*2#F['OY6]9(ǦKowg0^SBǛT+?S _F'h3s sWg| v ݾ=W.G)5\6rB$iE+I325'R zREh++5t8Px"V0k7BӍkF6oPndK<l,%]E (u-(Xrx5V-")‹JE)KN0vX=G+ %J{L6,+0j#cPtS@<|K)uHMZ7cU U rZU|gֹ-^k!/|j KG{/QenAsz6tsπtGƎzD@vnNZ*1-ӔK~:z3S3G"K`eS{ɭwmVUH>M.˘}:"E0Jgr@ũDOI?56ORc"(KcteF9D[,uYKCsF/Jd\63PΑ-1eĽ9m;LS|{dۏdv j=. R[݂BЩ̡ DDt'騧Q2d%7GdcZł,]$,ur ŴWb.( uK=5R[0g΍Y}P>pxLY42tD wJeCGX `\*eX1K{;OY/L=ϙ_SVJtRDPc:m,w`U&_xBi..jqц<&5t*-I¥bfQ D> j, %ڍw(z#|o"O񔆕ܬJ#I`^ #go ,`6*avTF)d{B0OLUG{GvqKWS+ՅE6~aAyΨ>`\!3/b8%MNH=΄dy H?H) ٠3t(I+J9PKfs+&n˜3X2I/+"|5fKih|䈱(fw.%Kfaȯ:n\Zs{Lq7Kl}k\qcXϪJ Xe9$QN 9IS5^ 9ښ.)Þ#D5z  Yzh\;e4X6W^{.3Oy&\Y*,2 X3=b$hqI?SKSpC_; nFh/O'2:7SiQ+bf,A-O‹]1KoM5/jsm MmqNР-ƒ= j? װw@m/5L1&욙q H?A) )Pv`V %%K(E3JgθW)L"pCd _EZw՗4@Dn.; !Z H&S>`kg R߰Ijs`d91پ/S)YihY0b|$=i"<F5*$f[LʌxƞӮ"Ztb>"(^+BgYXȥgᠬ!!jOPsn` z$`O*gXwOvoz!)14.`qnUKh0Y1$9p9Lik|ZVe/%WQaeh`k2p~pJ69D W $NqHTZU\b^KGWR5,R3x)-K%)[:|<S4{y^{Y4*P0FY iiyxa<g KS'ar.0pJL5sNsE +mM$GX٨Xb2Ɔ?nWQQl%[KfE9 #!7ЄxdA@ Aqe/ղJeqjKAlN)MF)ǖ*'ThwTMq}GCd1D)]NJSakCflUDiCq /i[s <%Y`P_b*\{I y8RS}B̤gN#~Elh_}"tOiv/۴_>!3>C}tNG}E0=1N-`EH+{wTkܢjxc93Bb:[d0޾>Xvh=H2)p>GqTS\аil;ր`rswۇ_XRjW2b$PNLiZS;?F=rrT3jnu`ɜsc~3V_i\:1r1x83"QEǸ8C8+eW{q*8R-V![$0zpqe-0Xa1/L 򊎩^u','q~m)Yh2B3ȸ"^KKi1r˅;S͟i?πpգ)]U7țk `%j#S{/heXL˄E7c窕 i,0tTK~HUƣ\Q ֘a>RݵXewynvURIe W%ĐL>%A}"di$gS8V4!JOR: RXO=,;I p 8:qKؤ)MKcTzhX;bT#P >7&c8rGݵ`hiй\Fʖ <8MȔbtLcY!J*7Gwɯq a{-# nGJtԫ2I;Εkq.?qQO4\ 7] lĹ2*=sk|~gpn f>^ֈ29!BSv#($3 ,{+@}ZRPf_lN-Jg2@_ 3JDUu)]! /BN xn#x&C>;f/uI#WKX:ئ>mR~>t퀥) U26Y:sQc`+-̀A8P?02GH7RDIDIHI3?˜yWh ~P/ 㸈λg Rd͟LT&hS)܌sR\H4 Ewijl=>{V/flۏq^iiIJt et!w D%esw_Sj5JIY38dEMfjLAtANXx*T71k=`Mmc*R"أ0[R3٨SbHPZ2N3Y;xuٟ l)rBzjR(ɒdꀏx)>Mp&.zM.4XK1{?eA 5M$Ϥh%jI(ho MnR5Pᨙnx/48c%e}\Ho+L#bM3n])& 9,<2H%* IDAT0c }xF/][kޠp/ǷxW\=ՖlTFО6R[+wRLҪ1MXu=ҽL@: EkU+@|7YD)Y}[}\@'MrHe®;O4s4\i./wp?rU֎arҶ90r JTIS1() &f_M:2Ej 8vtF0,UQ&BGK֎Ϛרr29}2d}2 ;<,4}r7<`:܇J7l:,J).#!90G'l.-SE %Tg9bÇ0BeߏaAǵw}Wo^,GRЈu@i,IV%x{/3kZan="#240>@M TQ[MÏ^WU3xI4y/"7{PQܻmݦ0*xsuRs.=0V8$v} ?MKL# tP'}Je $E~&<3J!wRsv~;uB)i&xz=uT#Ofnj/LN$&JՔiO[ 2Mik0D}ZrTQv)}3 $,׍@ٍIt< sz4'qi=R9 byk,:N'pP*|r14TkDaM !32x\RgJ(.J_ eSUmz@ګC{7Msy9kqu տ=mtmG~[/9Z }H&:tFg]MJ!Î[c 0~ ˏC`\+NR7@3MϦ5/VZ(E]z9Xsg/aLr48rKem@p^2=!ˮp,1R8ubw+5;4g6h߾Co)bSϞDI.Ҥ ei^ziNPiJ&A1']PXq^ُ }Z1]w*&ѽjBI}t.fu}%mŖ$c|[j*{B dm'_?*Px oK+5g\GbFiCt|߷xke8G2Wyw6A8(<7VLX^ʫpH܄h!8gsȬ ̸R8w!Qڞק}9!S Bt)_8- ' 4ihMB*4.$ |S̩d? xA~e&r`Sz 5 ߂h"s/&mu|f43K;M5tO/WF-$e"lϵcJJ< mP^&/}1QMg*LFJ/׎^a)i%}ׯOw;k}BksCՇV=$kzQA;(;6D)->7ѡ}N8=u%z0찄U?Tbg;N=p´xGI#Gvْf}` g=ƶzuLa:̱8NewPh5[ihr>+ajeߕk::x29>!/N0xH $1/knꀿ'-3|NqUF GtsbH3`*r۶&&7N̅M2&1ʰbg83=x}w`/iBUCq]0&٦M]>x9F;3C h3vНk b}9ZMːrKI}7L;Rl3){ 0yk~5,Yp^nhkiRV=e#>L3 *:jrddVKuUf`(c_Փt ?}ߟ94B\/VFZGiwx2rta!l*w$O4/amsyKˮBiLqzFow8$XkL/Z0\R5~'l)".|{hq>'AS)1%HjN0wf %zf;Ghɔ! lTWa _͓Z=yN4зIdCUU`@2SDp+6SN 7 jzS~R Ji[k![*.+ԑ3Bz̥Ɓ;aU@SSьRo%tk(dg3Q"pn1'2 $Ԉ߬n:iWr]2 -Rj]!T"w5V Hyݭ֏G>YNCmY\i;px\5u?mRYO} I=$K$ZwdukdKc=zd场Y`i1΋T r #|Fqb5G'[%h%x)T561\Xh'8ymYk"RE.Ѝs`pX;́3ZQsǺ r[xߏEu2*\nydOI* W{#H+穡iDA7W2/4WiKEܹre=v9 vD¡:!E՜ ]Z 훭0ɂq͐}[05bFVߐjʹa=}vIPU]> VxCÍ=t\_;Dĝ_pO5އ:Cˉl\Ə{vjK)+p/LVc@3@/}goŸS~dy!o4yK'cKhh3 _[ʉh"˜K 2/*%T !~5NsG*badžu6 +yȈ<'Z28ϵ͜&zRJ2O9rvk"pdBL-M}[9\egq588vsjɠ%:GOa?2s4Tּ2޼>8cƩm#K:T1'ɣ3 }@S2l n)^9)y'FA_9 Oɡ# #yuq*Y(EaicΤۋn s@q1c4rdQțR*%^y;b/[{*,#`"]~NMՄ"1,/0IΙ:Wzoڧ# r rP *>Iݦȏ\2/@Cl*bi# 5]?k^kؕ8{X8)ɠYb< TR7>BD2<^Grs&fd/|;R^bHsywmQu5 i%b)Lox ݜyITwt8 Tw5nduNyA&%BzB3D̡˄sأ-#J:R&@ Y 9kƭ^rAۜC.Yp9"o*]ҩ[($9jǻ ogfM~!y)Kvn);G;ՠiߔձy;߸r6 .`kba!}1S_aho 䂖0L<@z& i"3bnFP.L穌wM>@ۇ + W0NdWcF|jX@6Bq0t 4:`葛s , ϊãQUq%T<jS>TCOf=NWߤƯq05 NE3wKJ?Ug p흎yIn.3M7߽EU9.)F3 [hr\=tF^J)sB}]SDPmdWF C%WO^sR {%^?ASl5ΩP3?+ձ(Sc'C&?W"6*<c~]:/>%AK~A]w/ yB=Y9qM'A +숑F:̟& v.ۛy f9象Q]T^4ٳ/{E #i֏2tl9Xҡ?&2 bt p<zf/`<©Ƿ>j#*Uǰw%o["ŵ2fey=N 0/}05ckx$MDC KS8ͩ*4N/g#`:p=[vXi('WJ ?"zSsr\(wPQתq`>U>$3&|ou VJN%t5aEB[.Y^zzq{}uMR,%@;Bs1az 8s`)Khɵ[t8!s*43=ΕɢW&L#jsCw 5GG =%TOѻcb6LOyMq}ĝXq)P\&:+p9qpPlG4=J*w-~ 5iȍϸǹ<`'O`̹c),>E#;X,wt?k0KNE q4lJŊsףs.#gH}SM1W82Tw+~9pQy!2L G->"xox]c^u81zg8wQ#9^9T%z_Fh].j4yԸ,b"8el{I {(F@Js.y^ŽDv["SAzmKly^=N5ivآq \Ny1h^uNiHT_&EֈUDŽrSS\tXca Väb:]xdSd>;}f9l* Q?ҖcR䠊jъ[S5Gf] #R3B&b*I&-"!;e~?-T[ө}ga༸>3ncF&v3ӳl] cvEk4`j8?$HulGҧ9NǬ7[voCl%r568(<$" >PczXJО.*:Su2:e^S2 #;3ɝ@g@M>Vtw/ђK%T*s%{zUxh=E3Yr4?SԾ6,`v`4%rSgHT@8A!Q>:# L>nF4hj2%Lg@4 kʼ P0HYKUlG@ A>e5~}4x_< sɗx$P329 ̀;IJ&)g)MO6snhQzfa݈JR|vUh`^r0y!`=x2X|0pw^b

3YL%֦4Ӝ3%=dChUGW&ԏC~ ⪫;bc'&X^ԗ7~(~~FΆ*R3wPŏt ߏ{2Nt1TsY$,͝jE i4p?Zp_hԑ]*tVÿL`r=⩓!QY;c~C%[;>HH{H4m^l4S2 tԇe!Yݾ!B< iuYUxx+=EΙ]q"?)9tI8>u*C@stoW9ܖr Y#vkb/ԐZѱ;##L$pJ :2:& ͣoכ7z'm!̾AlMv|KS Pv=1=πeJ߼4[~qAn;癗$Vɬ4?(hQXiOq}/Bc7u?`ԫ+qRIʉA S, w?D Utas Aά%5irC &мC8Gx??/?cun mNӧ)T>é [iqMfqNȆs'Q^Sƿ=6V3 2Ne}LshzI6> SPⲧN.T tun-eg8z׷`0 ͑~9 3}5I=⁑nqr=nu@ť@ 7R=ciP{<k-?⯆~~n8e;ʕ MU; wFW ɵ3=3l^#6!z薞?Us vȨ<~95].LS"mbi@:'`t$FiŽB`kĦԫ?۝{o5Qu*`Ir `*O{9";ioc>@D߆QI7 x]k@TQ97jB? `yS1@э>[U\l49~103|ϩ29Oyb^Ey[[*{T DP^0~TåK}@`3T;JZs/u j{grh|BqgH.!+? 7'k[wRVRUQCsWAVtWA{%rvb9TUg _0@Y,&Q ~e4V=G+c-KVtr48yx?4E>Ĝ< .L7}WgxI8+ 铡rشCvOOz&Cl9y*fɑ$̖FtB pļdB8*$:MYS?vozR9 GG湯ͱs{Q @bpL%R|_'O& Mp,閥*vw3 ڲ"O(4pzKlfP[ zcNθ 惹S M`@R^6}ZT'WbVj75#FӴ9a)~Ett:'x޺K}}jZIsn̪+R `sɸ9>~X͍t0@Ȕ*㺞K! ÄԛOP}3 g-Tq wYq) X(T~[L)殺O41C-%Z(@t ﶆKW&snvk/"\Cx/S535xk*ʲasiS78b~ϙr)>z?[:+~uyf;gb;$H⨬vNpn>J3 ;}9U:Lj87Mffՙ:@CWPS @c:Juz{7"X$Tz3NA)Ωfy)Jz HO1%V$ssgOn߄l)Oe>p yc4[u|LG kjqR!_uМʐ<7SRuYn!q;dV=rVK6N`˓} Uk9&R(\TYbUVh%:-瘣U2X2H憟] cQw7C"orr<z97vbK K5{&F|4͹ [1l&MhNBi:.3 q}59f0o782Ow̴CUpM74vLʁTb$ 3[K`h[GI~917,reIPt8Cwk0 2;*w&R'oȠJ9?ɪw8F2{YOJ3 -U"Ix:%Hk8oqR7K?2+z9'" ĉ5\@̓Cv Si7,1ֹSR,sX\s0['~J*Jzw ̏ͅoPo %z*b!9bީ\A>y.fʧJrt!mgg{p5ԈKY0XK mC ZT \ei+Y7?6UxiVzj?~)!4K%J$f_2ַG::Cye$C0=%~^P( ᯉe])#66ΕF 9 9H*`V|\wɠ=)h 9YpTj[nZDj8'R7ROy9̓Ye~ۧEsxJs=gŔP=/Q^)wDB&{pFۑ,rX(Nf ^̞nHs eH ZʄS^g{78Sk2a<2韚kjq޷ PZDDYS1·]S&S9ݐ/R:M7jRjZH- 3 Hۤ#ah YX1nGɡ~|:^כrҾ Z'~O)x4sm&eKdlvI%<"R̳@feSɛ)-ytSL9X#r UTt8|=lյ1Z|u1aʗ 4꜒H #@^~tO 6T`V:icuU&`(\<.жnonh^g: IDATIU;W7e_`̭?Wr+]55~xDg.vW%E{ĝ<7B f(|ߏ|C@=%zfzr$%嗢#hN2Cڬ "3hNg f~ "_ aBw\UUqd˒{B攞yGLg;H6|phs*U&A`jg C[  &) 1dt&$9_ZYR-CÄɬC0Cgr+|8 J 6,V!5\T: qcvT64WsK/ Hz[HB>wË3Gyhj|Cm[p=&oqǐ!>__s9OF& Sg(蝩Ch; GLĵq'P>SNs3>7^R4i{;mwkNTxi-UZ>C}[@9',Ԝyvl֭0doqg~J ?a`ޟu2ԥHj tʭ] @ZiφUq `ʄ֢j5bKJôvZC]Fu'͕W~`nb|Q>V8c{@AqnOZI!ӱydEN8бSQGf5,w]_ N6Ut\vg1 ^U&3?TDNqҦB~z::אC+T'Ҹ{12g'@!.hv7 ~ :vxˋҐ:$kb;JU8)ُ)|l sRF> gђY7М6=)Ϧ-7X̪ xx^#Āi{XfNdI8CУ?\Ro6Ro^ v^^>_Zx@;ުl`կFj>FbQ`I%ؽўs`8op-c LK"וn-2QF*y֩%I|[`CGG}~B'x;Z&EIF/Z*Y8F's8m(4 @Ji{BI|Sm)V1g^U*J1͜ޚ>RSa|ڦa5s2oq̈Vl \hƟ;6Ef%R`+ !l&!<`êmgX餐-(M9HiNui{>ż ]!2L;n/J](p- @-6wߴQcurs.fΡ5%ѿCM4_0=T\b%5;28&pNi_c&A<9oNޒ>=Srd5$rJ<͐9&썤PE]@MNd@45?ָh-ke}яZ# r򳤑 ѧ]a[9ms:A)3Bż+ _ZK<H"><- -ȁq"nj33{({` U_`ۥP_S óڸ{KT =xsB3HC2ɮ~䋫fn)(KfY0Z2aT_8f贖!ރ=F {oTeX4C{-:Ti󙉈:bqҩGzΏ7f4?G *0.e1d8?NpE0qRsyב?.a1cA!Bh s+fqH=^ ߱fB9rBYco{X|hCoK ξw輂aH9|S:)ୌPn-!rt1p+e;ľ46r6wag'.\|%JT|%6*`<]álfX_Cl=3;hM$Sjo՗P 6dp^56Qh8afU"<ԗ,V@@1n-pyL۱!s S@YA-MKF10;RLh'ֺ"v߀8nGie/`N%P86Z_ h9 V}vala5Uy ȧ`W3_1U ?JdBO,9=43$X$k{p2֭V\xO5Ns58fC5R1/#Ӝ;笘9d]؞BoB"f&)iOh {zȶ'V*5A1|I)8<>g^l~)WpL<}|)bЬ/H13= 58w)N=X!+qs0,Xu.% K]I˳.v7&3:1X# fH3Z- υZs"sb%-{֙ . syTx kbzI=p}1c_4tl3*$_@s3ΜFSj$,d`}+1EILoC-:HQHuݒd9~r!}}I}(Fn ɚqiQ`y[bFAZo#vn:ݪH\yGua_2x)1R ް#-Ĝ5Wb7jC[c]sc~T+3Cb!SL7'u:ѹ{\ZC@}>!Msi_K0X%pes +g)n&5j3$m a4(tVC,8u# ĉPGp }GNuּQ!V,%& s|iazI%5Rd3Xopb=@cBHݘyK2 a l. l&wH>ބMCi5avNl >Ə ! ?h>tH=@{ʹ B<]3Ujɲ-RR8ϸk) n77\ 6&6c>&̦s$(݄,51 瞣7@`!sB؇ْi)H;4-K}wij8V YKs+`@6[9j[@ǒY@KFKhje&w&Rot̎BN{eCZ!pLl0uĪn X51qwBCl)TnJ0ybOqJ =é(0kS?q;3$"ؓېfjǒĹ_3+2OTsL qΚ9n9CV|kt5+!:kpF @kb!f|7 Ye˷ZB'&riRGA`+ 3 S IDAT>fa8w tKgͅ}fÎtiX8S-+AK ᔸQh:CU##FaӐ0I+ *z-7Oxgc8CO0s8`~ \Bisu].l  aVt-Kq25V8M:'JCeC+Dl@Pjk C(ݐl}A_ =) 7f?^֣8Zd>[zᵳ 'sp|4mq\ͭ"ɥIvz< ;kxw4$k n?B_1?~ 4z# Lw&]%modY&[i.`沽dH'{s@4ܠ]k:JfWwKlKsCgOL4+ -nEH\ޑ&}Qڡe\~@ܦf&vU/ jg߭ahl4; K|H|D . 95N55@la5,{Q5N-JTFʣ4{0{SgC֤93Io"몾4Sdu*cima+ s= v}Y6-ڸ1hܽ%Z9 @W֤;=2_/8yU̪[z.43nS $8 ZƊP*fߐ(Cmfo 2Mq븥8emx$rMoAlE+68eU~Lϋ5+^4ʅi.+ j"\Gb$qg͚U`R܆h N 5g@fO#t# zu&=Pɡug~?_Lpmش$蒜_ra9d`/s<28s6t{m&ʆ~VIJg )pxlLDbz5lK<"NXra9r#qf#$İn Xd !vK@y #o1tp {\}g`|6àxBf8ûBΓ7C胮,)$ˆ ٳ& Ʃ\i0E#NPUױ>6}I0G«Z^W@k+F d&f5@|:lE!6JePmJ 3K @n BiSepMHÉA ;[y5. l h.6i˔8w4Jk`!vMp[bWE% me{#a<OLI8K2°e-lyLY-YOsʂ0Ž|ٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmٖmپp[nR-+#X~SHf_0]e[WeK//,̩lez(ȹ=ޜc^f^>˶l h.ۿ90$kXs}P^'^ò-ݶh_Np,is5u,$XbIؿ+hdt\P9'u7[{_UVVfVʵ{m \_<4!0X2XDCI=畂T6Kp \>/?A!|9ۆFQnzK%Ps1kFȔ;][<5evuå,0e5vCa%e֟3psl2a|D ٸx>J% T0Әc.GJlF8c8st1kᐯe8OJgBz4)Mv vs=qr JJ Ko#@4$PJ P2Q&dOsئI ;͹"z2n.4O`k+ #Τ r)st4.a'$0dQfסLXU)C^bbe9bl0ȱDZ,{2Xuў6 ;ʱ4)ZMYWlA'8)u}Hf3LIX`cvМq 9w37Xarإ>E9V(77MSַ1BF9vQn;$tqU(9h!*{]k^3• Rq}k.hC>Lǒ\^IZǞ+5)+): K֍c r(>Skf`ƐKO1P@~ sjz[ ȐSY}اUuД=X Z U똎@fٴ45H-ITRUڽԧ&Jaҧ|<բ'mO(˙SOY{a eN⿝ .>$NضxE9vI0ׂ"-qbJp"Rej#3^>g0xd}ش9r9f+!  {'g]TvZ烖.-׭qe\\_\ܯ{fȹeRF:$$@j8%ouHy>m9B) ZnSb.9f`ךO6.wT VgQQqqCɳ h*:Zu־yb"$]@$ʄ4(b~jJav0 0%1Gml/m9̀ue q ]e>~.`ZJoՑ2X0۷ |; n\Nzan[VP\JX!p_ˀz\fiMIy s昬UV %8&g5]02"0rgqGhoHуe & bS) ʶ#:J=K>-=x%4W'+JKk?ruwVثR31nKϨ:L,KbX:M*U y(<#c۬R'ɫ4',C  z;)3n.aGF+UYi.Y+h: ȃ̴xees!OihPB`-(Bs)M7 ]{4KmԴb%L/k fom^m UrqB3uGJ{RF[9\ѷV-݈}vʱrֹVHvx97!{􍾀ΡeдV V2'fn9!ٓA+]>U ߝ\y'ւzĠ \)ߡ^w ; vlg܌HkEվ[hJ&zVZ…Ls􁵼$H3Xݷ>gUc窪h`8" 97A g75}7 94VX^HGNSHhas(( A-?D-|\?A` %]=a2k۳ii>"G+pxM ޿̼>`r#0D54#fp Tp/w.C3obp`@yiZB K|Wr} topxRriqjeO@ # 묏 &j4jCp\;4GB3KiBtL>@p/0G94ThgiYUJPv|yL ]P_8s|a[`-υ̺j>1YHpZ_%H=wFu8|oOu `~XfDt@n"@_>r_?;9; oTXcabm%8 P$GfX:>㻺agIݧ #+ߒdV}d77ýK7;a?[x͌-Qu1ùCr U&E_ nP33 ߃VkC\I/ʽ,x@cBoEnc}s}\nNf)ZӖ ٟ `p<}Q4g'x'z%-7HP9\u@T}KD_c 錙=8hy |]稅NZ홹Pafi_i3JT9X\"7]^x<̎avj0(`]ao"s%rQ r5rP ~U׃u6P 5@, zsA;}fT'u!GO;\MU}lS`rW]0p=h#==?~7g`) ^x_3"#&e߼ 73&5`|r<–oǨa&l/m0m[W`# Lyjdzƻjǂo_N?~nfKFɽgoc"j#W~/r}Jlh'O29A 圐(Z7sAM>29LYc 1`J)9,Ou@ھv<,$"&7i8, wߓҖF jեX)):M%ǵ2}oSjC(R@Ry'pw{]^DnPg8;>@}p|vSQɅXe$5֙j Һ_/%rLQ5oB}~vp113#skO^[9hnP`J9`d HjKM1ma$3{Uo;v{39ė49X @Y[եTRu&+g1RK% }j軯D5yQa~pwy0\ Ze ph`cwo:ۿ۟>r%P5nn0SܜiRog3Ǿ}oд Kt+ av=>77'(kQ 1Ʌ?Z< F=;={洷"e3W@f ie.˘K@z%,N瘆/s= Wfi>SRS#>.5 (qߖ%[iޱ Z!ґzsClIDnxݝk~M"03qhP0?z V`e m. >@e ӌ5-T/ P^ %L٧`f?)M~/V.ҞsM̱LAt&mhq 1o8>2Oyq{4'"܏ 3Kp8TeF0>%j0-Te% >y?gApߡ6onN[(r%@3'N1j~G窿s}%`;WSTQkǞ/kO1?tW-Nϩq1wRlSRc'mLٕBX-߂P La(5*d(% M'I wT99Ga~43}(5H8 Kfr9}{K^k6-9)U-IZA IDAT$%7RMo@`YBZjNB%ap8\!&ĹT,R&4%6&d ޗ0PߒXiz" ڟ?̳Pi<' nC3%4GȇZ+50K KG\ $\ 3 K&\VTہ<U4?Q  D#a;B_>܅?z hN ԥ8 jU a*TBD 4aIm1JjuL\["T$0NW+@2-28Y#5#7G)ٷg<k`&?@c%CZOZFԹATFd8+r?Č)45G Bd'xZlYkuB-h T %@S;1́Z3^XpNh?ns|N>td_uo[0KՠAYdY3̳4wp#'7h_pOuf&Z9~D0 pwEꡈ]Jl1l=7rVS dLE>:l#ڿC"bɄX2#J,Y xl3rpj!]&v0%~ZyH#9ސMM Jj87 ;j$6[ K\ x;>2ιOyAe _QώPC8y7.йe-elA3{z4,[ :)W3F L1#& |@\V@ 0<3< 8ጁS`"x^2zeNV;˧l:fߚWg>7xj.ǥP 02 =RiO -8J"}W=F T/ i`3fU h̘qH`807Ns|xi )LRvn1P@d3a8}[H]eNTbZNF~7|)H3W/Zm09\=ݹvp7L?b=;2-! 㟴(g3d !iՅ2.W|# \m@"ʖȂE`òskZ~c.021^D0fD݄`ڂk 1{վ󸮵qD}0}9~`f F;$%kZBڛK}W A}g&)kkۓ(MGp0k.Up=[Vm|5ûK xcKCx4$C4[ MӬ.UɌp 5ϘuiB"5.*L+f*[3Pp/2"W35Rg$[(V۟Up w5 möʑ[Wg;0Io0`@R#ϩ۔')"`go0[ Z_˸`>\e.q0cLa=2(S\1g<3*lE7e^RL{q.R@sc3 `" [{ A},$ 8͠yjrn<743ѝ3ea$-ռO[4KʉJr10) 9I{G;'?"kR Abw, 1ÌIN&Fxj =񅞂dzOx&Urtړl, P7$ع9I a)(_?@Q+@JZYR LT'\nz4K! |I5KJĪ'!+T]M/ Ϗ+!oN4-auQ/~M*r fVM`Ti֚9ezLE7t{g ?OUUkG2`JP\P-@)fǬ3fmN2ʖٸp=0>8z:I27Z by1X&uΙAn(/~v(>N8` ,FKr eln wEϒIPP-qz.|lߒi ~kw1e{;77B$7.kJo 6Z2LMq)􎁳w7{<;͠p(Q'^mӊUmp[:PNS* _QdG0M8pb,[lCp&3bl{o<>zV0(C2K$x +В0\wu % v[9R-4\c0p*\vKyN 8%L{{=B j8P5PFWKd3㍜m.h^,p('GcNخx\_w`8IO09pzlcE-g\NԲ8$[u\V67xc[DP#"T8MT( GDp2^g%T%O~BsrI\"xa๜ ]PƳn7aH+"FV]Mb%U[;4s}r):㳸N3X 0Ɠ-0Fq2n[tf|h6rM)S|⮟(Bi3V5xnU`r,IyZEYz[`z,:4Լp+f\,s'aWȑO@U*+"ؔ;# τo tkz IHdcu!s1̇_/\wI yt]~@q|2TPN#TjgU&lf㨀# 1f igOl"o3u#إČ'5>p W's9hƈr @S @3f8aq5ޘ~%x/ S 산K:vrh#:T{/t BYg$ƈaKD"BE$vit0) ަϫ9|%:XU`nvz{N^fi3Lε[fki(<%1`]vﱙPptoùHJ/ ѰSVi8>;ޙzp-!ˉ!g ]GYYlxC ԁm^H 38c1.#Ku^$[a,5^*2pv@ ky)eW730Ǘ٣n.|3U~lv//߮އzpZRO6-P@YM[ㆷ ի70s 鄿"sg{9,4IՅG+7}ljVvɘBfvprwn~X)6 L&GR59ϟ5x|a"uDRAҜڭmĺ3{.7 |_x@)O @4uح(G7 *1q~rTlGב0c5^"ODIu+ 6jI naޯLS?O]PBx'wf +3o>HfQ, s: !(W^89`YCVqq˳osWb~'_@O FaYJEROhe)`^?kpaT?O| [qNj3%a#AyK| /;奂&lE"J2? ‹|/bNUD DI>S7L>9"'a?d+~~5p;vX;ԦNՖDVgiƩYvB 1(.<;tUyp>5XIk1[V>-hK!\m<>>Qu9KID2sCS0^FO#ĸK@1Ϝ M|I?)/-Y7q<FD +}N(34G|\)%87\ ڨJ#D4sB{PB^a.VB, 0[7Rd2ȕ!8.U{wn{O9 3H(1=1xC*ZO3L-cW|N-|ݰ"5\џC27 4,^$Ȑϵ)8chF:W[P=3 p3D DqXCI|pDos+[٧~# 7pO 9fPTV?; "4 Y j4sR‚+IR iМ.XmJEiO2v[oҙmH5BH9c 7h`.7541 TK3m+1pg w8q9 V'Ց HZ_9KpD8* G$Óx~ho%9f]dY?{6N;|XQRͅHFޓ Gyr*%>9N3jA -^x=FKni\RWEepL9`Y*z_{o.ٱߐ+#\>dr #HWSuLn2yB%ͧ w.(-Ѳ[.I-PN&N8n1S06;cwެ%-|%KK Jl,\/))X Wbw :`LUg5JnpE8 4au,zj :7hȣq%f3q%87ijBSIi+֖rWtkO^; ܢdba5bOf`4şe?#3WL'J67kp^h tZ@m-.'| >;ɀ#rR,-DЏ"/#`mȞ`wP$URhiY-\p x7+_ӯD6`EȥLxmF0g !|(̍3GJ Įz%@MyǏ׈y`z[-s>C8=~]:-Kclsɱ(i}Œ5x@+;@Xu進uc"<>_<$KqK)3<,gWqBVm: ] #+p%He}B^( 3? pRyNȵyoKsF>oԧ-4[c,F~.?vq?ӛ)|J|nxd!5ea0%X1O׵܅j<ф%ՂXSc_{'Ad4/iicT1MspHʵ[KW,d-?p*r+7p-k5eaBWi8!~VK *QKҁq4iZ j4 hra ^R*qK8oR "Q5y G?fH5`flg@#nHs؊0c ?V̼3A}1g./Ȑ8ё:ji415أ6V*0P5M1@Kcf0TE{/ֳ< \%pH装ZYY΅Wq[ښ(d9o:wJm.]zIeljEu.%S IDAT? Їχh;6TȞAk c'LCn >4 U7GlQNSW*o/c!|X 4{,q8/yD&5\(Zo$1)r7eVd59WbH!#ٲSȮTsq?c?tr$]uX|=Kdd$e}XPNrp%Q.wWn3ĦC iœsΊ*<]@{.l_vIЧ5Nljp4bD&EP">3MFY( )Rc1+!~Y$ $o*L -d5w2ȴww*Hf!\o<3 }nxp{Y"spy;,N4lF+/j84 2ܺگ"K)wWBǂ9|? BmTa>3n!HsmELprRZdbaR7n! ٥Ysm&MR."$Jy%C\uƠ6yp=G9/63D̈́cV {1j<7ˑYTb*68/f o"7flA4\GmC !!uiI*Xrh%7J.9^p < QE\z-L<9I!jzqOH!sJ`\߀=/*-ij>C穉7%j;)BFp }_&Fn>u>37S^f8wDGa;ݹeQ'raրo,{!i ZYD$tO 2ST_ =?4xET>dܔO`@gÉ}X4u%SUrK-aCam dm*HƒA ÑmFHD_a ;'"!/ NFf\s9,fڵ,3;r=4\t;#v!-_ ~cnT 9?W7WBJ B(͊2J.!BiۡFRº)sgHwf|z at tbU=x>75kw&'e0[V >)0xf4H#Y613 >EEJv0WINc 2_R<RS-0~5XHYKsU*p$Qߊ}@3\Ux *Z{dP9 -Xh.-O.SKkDMq֞S- @Fs݆9򡹖L@f ț p,28Kğ҂ Z$T@z lenE> `.fr?gz6BcE {B{ð6| mn i &-KKbSZU)K:pDcnK>oe؅k}^B* ӥb=!8?Z\|"Y4,MrR\ ' ,MS sHΐ9%GuI_aes}G#7_,|̊E oeFq@,$Slk3ULk0y+>C:3Z B˫ n6kLcJ>}Vev MwHziFS? p H$R)㴔tnfn0 BA.El3#mKTy$ZJ-eTQ51P\o `1\  4)̦iB6NYtiag m/5/4 e0~5:8I@W_s+\.w!n!_N3KN4pG D䜸1¾cQ[kMIMvRr*̝DsB>An0ػ <*q:}|>z WeEV>3#=;!ɆWv떶&˝%I[aZJrIo$FI C龔2Q4gd,?|-e*{T QS>PL4!7Xvr)7+ b2X<珩uPpr#,9CyvVt3P+_Oy"EjyD/Bh,i3$\Ug 3l.h;U6zu> a[YKdܷ>M֭+,d\h9(v+@bI6d5\{eSp5o0)I3l98 HrԥyYiW&d47ŧA0pY$0b1xJ=2qD;>V뛡9mǏ`|v9gR57('l[)Re>]>5wǮpx_5\VLA5 Kne>]YPtv`jcrFldE2KV>(r>,>gV sLAC)Os+`%xc.ƛ}5@|44e:YeqA;Xq1jw\aj Sf_D*/L+rFZ4‰U-rXxn2 QGdOLcRra.cVm#8D4CSS_%wt.`wAx'#Ul+~Dbi[όg,1x^u217g cV h>Z>SچKFlVwU)_grZ>r2_(m;JT$mʎyM?=f [ih0ѱ4 2oV2UP͂.#lM{WjƮ> Ƹ#ēxBX͗`^(mylSeM^ L54NB$t-O.1\9Kk,9s#ׂǫ0oLR$UfϚG!33-CVXhqh]aP+q=WF=,3g>)!6)w'k*ew'UᅫO(N]z29tF[fJihMj@;!g@kwƷ3gE&MyRM/{ 97 қJn$Qz`Nm^c)^UÐH:_q7 3dp {,͔pKƇwb,`@9e)Rr)uˁOpe=|jh\#gv4 96VnXK@,ޜgh>ݧ]yfI/  5mR` Zdkiӗ_bELv,ig 0t*u (6>C@}m*fuPxaTs:!m&p`|5d >y7 ,k60^:mM}٥=&[Y&Q''l&ɪ]8n ;v5ɵM8磙l\^b 瘦n [jmg1V)BQWuU"VJyndgb7Z&[P0z&9?՞𲠘[y KVG) 2 |ni{i~n@ã!J"0pl:95Ka)V&;NT6+gM-Q( ׭@r"ʇX"RI?An9ݒj<}X@,#y>s"~rHDVkLqt}-;Gƀ93f@k)/0DPe\!Kũ]2諿nQi)SQ74W}D`sL |RAb` D3y5#&)n,</skzmr&ܵ[r!@`O0qvQg42Qd`7 k8naδ*>u%@쒟Wt{*XҝfОgzLMMN`%~iKuHM)aZ@צ}8־ 1vAp*pAL_B*3:IB: PBKaAs+RRjik Qo5+&v2dyy2rTC $7{3.oNFՖaxī^s+)Z{ƣE]ahd+ʦ(%>Vfn=%}DK4j‡i цO锁Y^b íNqN~>$Pݑ䔩s8e)/R] A7!ϑ; (#<պsꌬlN_ȔqW%YA Z.JrGnjópY@v[.KK;͒mӒoR a`u )3Hjml$8ZgV$,S%v wͲsfmIa2wX]?#c`z=8)̥MM siߖm;&aS%H`,We1Es:Ҍ=Vch| Ɍ}a !u!MM@rv.}^aY% Y(7 QpfP$Ar,O,x!!H"Lh&e3Ѩ7©8Tx#.B!i;raK!p}S S`}g.ۃ6J &4Y8l6h]B9W7 ӔrVXK J UKTۮhrVʹס45ӋbuXL|n:@>5'.UVÄK:-L/q>}i8#Hi& FW_9unsyGnA!lhXXϯs`3ȡ] EW3nxIn apXR퓗0u'CB1I pw,I[``; &)CE~HپpIhZlR&mz ,)M|Y )B+VwD)"( K}QU?DxGu`QoՕYYyDxٳ5CAiRfv#ʱNsL$DwPɕ-C)gBZԥ9s}'qfyP49kJcijVY0wyd.2.{huA)`5K)GO`Ғ XnRJ2̲nid~_`1ʴqb& TSdJ=䧥=8CsH.4uR_fm٨u)(J~-٨YڑkF@{>ybdg&?̭ܨrs@M PwӔ潾=b)#{D^bfn)DAn[#3(o)]IJθ"xeμ➀Rd3MhW_fcD-G>&r$]%+_WA #tI<[@fFYf ~ nK`4y…fkñt\+KW~6<0sE($BJXlJia1-*)nL;+/E8ɁTyn8`迣W_2~6N'h<8Tbk{o3vFǬYQ#\2hpGdZ>g? 1#nwV_0jk"ADptLҾ)U9Qب'p[IK j:k2WXn}W;X7Пcf dt7|L4-3Ha:JcVb=;kr͒5'XNXSt@߆ë))و8Ht~ W|f. WyzyF 9£p|v6z/🜞WiZ(SIL0/L$h8I͟V;nOFtj-bݜ4M'n-R{Hh; jɣ5fZ󣖵tPClZ@'4mIp܂[0h*+褱ȸ/NfݳAJ'' ƹF"_VUkݮ/-q (KT(sĖ ߩK$q{2H@h>7P!c19f f&< gK!"Kה%M5 YQ.!܇k-h$]gp;"||n]jsmk'io 8KfRF 8t$|Wb Ujm˳ ؜`)`37u,\9v?;އa%yPwyNtʧ;~&|%PPY 4Kh1Ov$Y=O骥eQrLT.MH%j0\Zm 3eZ(k@jk8biO 6p8>(wn4~~.̙*slM{D]L[_WT[)|ׅ4+ 6_Q8ЎGVJm@SZ5;͎5ff,1?bޓZ)I9#ڇA3(隩94ssR2>0ji)qkso\:73.IWt',hSKhqH1&ԙ @Y*0"Bt@ӸAf\c4KNE@07ތߋnP+L0Z,^c}gZu+~')MtCTv<7l389.T4O82pC8o}1t %Sm{jTJe } =;5T@rұaQN0 x{2N5 j5tkz.,D 7>K @߂SVMK^O.iU }~Yq0F9,CK`Mzc` @_`n_+ Oyq?h2r8)մ`E75mmGͥ<}C߄ٜҁP!V.2O ׮͵2լ(E.xX5ɽ,-DSG2M:({;Fv oh2_G |,zR(E452Abq䈇wK^*Cq(Q9RF+VeRscarX:9u%r$K`_Ǜ'Om'kz4A4Vİ5kXI#Wt%W6m-N5T;́tVAU}yS H앦xekUR1P 4<7VjJ 31 QnBJeJS,Y1n˃YJgz'jImxe^igvҰ63$ۯZ0-P-܀OWlw^f=/W:Kex^cYq[`?f>$kL>}D氲GhR]<.ߘwf/rZ|^Xvc<۱UΊչſ=k&feh+cM{$JL3#Zb*2@jY%AtN!PB5 '7/=]s6uy;&z"3|<[QAV \qRw5^e9\ &rNX膹T*6}Wt;"f'/E40ўT8rĻUUzg׋<'70e Ҷ]!"err&64uǤ|ɶ! xhhj,THZJ0PUZ/;t'?gS-?%5@T e9V{l i aΖ맛eZsk5V2>cԳBXM3q5ƐᜃAS ^E40CkսVj v-8fh) +)-0O:ʹW9=e]g֑&+n>۟8799#yϜhS+߉=U R#1 !k\'+4: s: ogw)=gE@5f@1Js^Q=$724 (g:?sdDָ;BR/< ':)&M 2^rnmΕϒT##<`sa:T8M۲YR)[,[[mx gEKלfse梿ǹcx)}(VisDmL)6w) ȷ h@a9dK^}}{8ҙ3Xj_ؙ ]ύXu~j"Os+Υ|MK_[5.uك'liI'Uʵ̒S'x[&GupD\ WoS9AZqyv~V=q#c9ٓvkZ%se<|h<Ba nŕ}G2ktL֞*Yk23)wӓn)㑇Pq>^]*k9f-$\$fy:1zb^Lt !8tf~@k\쭓߄G-`ru7ێ# X1z|ye2te#c!aׅ<7Tz~k֦̃KGv.qD,S/PrƟ}o<_%:!u͒N45>o (JtLRv۔H&:{3$6mfM~_OC.e堫f26BjJ(/pt$a b{U8rjiiI#x3*retd@DTUѴd@p0g9I.`С.6΢2X7cڎ@]͡?Mh;Q)]jZu-0xSǚ@Z<|>)sÉ"9Nlˮi'ZIu=)0>4EvUc$M%(gDfC'% ?4׸-FNC b.^=L:( -G2;7,F2s+då!6d@j[r3P>9o2\@#lOZE=.zEYf:MXPcsnr ä̈́Gp-]#HgRjvju-k63R7 {Ə\Ďpc lk@D2Iՙ!3f=nuCVԌ_Anp͌wqtt_4sϡM y[]3p:kb0=O !x56ӊt[rK׀u۩@n؉Nd$k4LPUc$)Mg8|[yM*,f|_SB\rQhVoqMdATwURfrcYw\g)5;OCKUv<7%8L{[u}H\:gr*}KR_?->~`YbV##p<l0(uK/!joTVGs5 0 WZyAVvݴƋs7,OW3C̃hwβ@rقRJL3iK%lua91er" RDPΤYk)oDK|pg/R̬xS|^ұ?r4<`V#|_Mg^ܧ74?~}w8q SH@׹gӟMТ!tU5 S=燁\5F9?; | :c#rJ >k}kiL5 /=o2i3&*8"YBJziAEp#mD[Ala "Y%7=bidB|e%:ɐnd'f2"sEbxHtgoDwrE Dxv:H{0{l閘6N(2 w}6xWwXl3Q6i]z%C't8/w'G9 L˨@܂+;K -L s| т)-7 O)qBu;qwl`0˴ՉR܋._bL~b9D~Lk_Zhe9犠iN"x4,BYT %@Q-ދ~Z< E[l0]2;(sBp;^)s^Ԭ&q߾sJʤ|#X#Ν.Rܹ 9Zj9-y0E>曇r0J EwM{RBKuqHt>|ôY$\%t0fpsU&Ḧ́O 6BlPb0bflm;|'D:sI ich1z9ݩ|,ܷoeF]ü}2s}jJ/5R;BhYzb 8 mqv9`Nxbuo6)i'0!$ xG:%p%FeZ[`\ a5ՓA2=pvͽbu)H 8hsMF/W}'D{4K̲tt%נd.'}8"%$UD`"wx/-6j.}pl LNrbTF ~V˔hZ6Xђ2|CR)Jn NKh*燒龻K狾@ϔ!bn6߹R$C.25Û$ ,cCo2}2Wk{/ +i֗XP7v`iyKs擤dvDh/Wǟ~X=0QeF?L~24eD+W^qKZR[ Zi LI^3%}S> $ʝ:;VIpAۻ/Գ9ۜ =WuYۆS<0f 'Aq5brpx`<4ߦY=kٝk,[Aef%¿cL<7e62!wqSZ,3g?p81cN}Ṅ! &  '`dpmyNB`@ig4/1rYp6}:QD a0bX.hZP͆FO !"@4nN9g״SE쬮oId%9:^>[k--y̗@?ݰM.l *y鞁?Gؚ:f%`JhfR5p|O=LGSQ# JVӥ%`jXnTjhw krPsW4cFpGes7[ K~Z2x^tD-G l*2g{KWq8rJYL֭ =fJ~ 25C鍷d^` m#de!uy&{ǽ 8IREoˊ8;c$-# :efĿhR3%,9_]" ЕA9gc ` #p9K]OSf|tα h?*3.kxk oXIF秊98|+ŧiYk=M3|iQs\TwÃC"<\I 琙%W1Oo_o)٤U2Ɂ'1#3(r/VOQ깭%&YcȝA[fN̕عM U;fθr[BC蘗{3`Nݻ lO =yt˙BO 2L]xΉߢtKBd>_dži4:5Vz  62Sd}bs?{#Kܪey?q~ `iSNcG Ol`I P3/1ۀ6J땲E܂kxf1'@8gonF0߁sḐv:c(o$\2jOx&»`<njOg@$lpJB7"z:W@+,/a֟5Qn.|m*<'t>rɰB[5&Y[[k&wosw%v+-A`+Hvu VȰ+} AՆZMPtgC̵6q<(ý`zQS7oE>}.'>єm*HL_lvWIHkJړ./ C%6L[}X9 8fM*Sm~wed` BF Gɲ<*I|&((';@Wi Rhxs(ju`rÔP2,UbOS/O4T4+SV=p2Hk Fo-kyt#4i;D39ѓrYM#,1̿V0 uE\<5pN+b+p¥*L!Xgr*-{F34khEus|\giICZFdQ Vx[޹ `>6o$& }*{ rgMJGf,ǟ40Δg7;hVie&| -m4$2Ąpv7s #=aj2KK j.ǘGS{I7qo|߅ǿF_s\i3@#@ZC,K3=j\f_3w0g:WBl 9{#4XӃ FO-B|wF[bOvJw=%vj)F`<CFNݑ:.q1Ae'Y6uF˹3^"?X(m3jO -שW 9lFN7i՚F%eo㏰_ΣI҆Md1:W!甙(e9 uKl$emn(}w!u^iXx'tQLT\1-M1Vmy rBnmJum@}O:a:}T(-wrѣp Ƅe64Px/51-eLQ<e8|/4i+ ̶`!!s#f@x@/#4m5%rD96u?.ב/44{~B<հK"S>fV*{^lc{s;Q `ƣ(e#GLWsKmS:KOtN~qHC%(".QdߍDb'>ㇹيO"5b|a yq/vЁ{:h}?B`fxWҟx0٥섐͉K0lyarxeƞh4nAÇټ+t/xAx>ӰԹY: -,\LZP!5tΉ*"-,JXd$Ȓ57~:&HeujjT.LҌzb"29cwAy[s}-hiH/B\vêFFns337x;Ͻ ɲbaa;pw=2$4ۻn{q]Zlv-Y3'`M%CKtMnݏ&W<9ේ-|$9cYglt¼~r pM#LL.bK$Y'"/\8g,3BSq2Ȯ2ԾGCOЬZg|)}9Ǫr0[q^vB:JΏ9.w߈= `]{#ԿKytO \cF'Ջ4v#Y* -ʱAh{yAmHIؕq^]jWs9^MԨ1%>'=cp.P\)/$@T tKόg6Huuq-WB-aGaEe\+"4 ;5O1t[дnıZJ`[%SVj;kawb%kN r;ߜ֗%7p!l4J{鄨p]ȩu_|)?:j=J*iS)OϺf_k\h4]_qߏGn>xj+:6rw&aHp< LrT,){䘤>bAګ$z根eQ* [ϢKZi qUaL3s\!BsJ6ILxZ9]r?A1< "H:˖97}'4篣\C;7- IDATM"#f:rRCWd~Zfb? [HX&~g(ًw_g>ؑq|pMSڲQN[CCD@zT*ykn%S0e&uPFӋeÁ6K5gP-ƒ4i1R8m{ x&&H緓}HYi[OVOc& Z# ~,07TXp;rcBџ{^%#swPs񈻛7UL-MDQb]?,X#qq2_r-,ΒWLAB{>!%x&֙D h5m.9VUIOIg< '>wp wz;,4K"xc,d"x$MRJɝ`IsWq9/r0٥4-s*˫8vG!rOi{Tf2{qlX&W:ro%cy|V}D\QT/e3g ㈄)MD6ǂ)|} Oi".q4]TzCQJ߈$ӝ*Ž)pԼ}۫ͫr.* kupI,Xg2vEIuĜ,{*cABU534j\;USo8:eӢ$`K `e|C;\5rn;`>I~sΊ>Zw}l_2הC"~OBFf9)On9{ zљ &COb#2x#(47?~{Đ>φlH`u $LA蔩 6a&&5j-qk<-X~ZLs)lKɚp+kuRd\i ]<Fi 0HI #ݞoȹ&[ du@5i-P0yakgS^p=1I\adP9A=#?[Cl7s>Հc[snY& Ss=Y'$LXO(Տ`j*o$Ћoc2;TF&dzS"mr%cH\1RzR!wD6sdDݔ*TD7!tos/lowi6=0xUMI'Ss_w_UkXRMwƛ" 9"܃sh@hҮqa X!Ǝin31<戇`<13".>kejcD4' Mm@jpZZ981O=Ck)b ̍Nja8(9OLgUu%+hBהz\x.A5 H_d,T$MA2\X.[ (㗢)`dLG.u# 98OM{ـ\3th'R\MZ@0-iK ]r<7^0A_Cn yH]ЍTz J6ǹӏ_Hߝ0Loի[=ټ\g2?iDFXcbM5V)Cu GPnVSũ?.p헥({%v䜟L :j@حnKad5Jl lKd}lv^r~g ֔KiZ\0Ac?F3ЮWHt @=;̣Tu] *h(Y(32]rabi<<+4@XklwikRb L`ӽFzLc#s;) 0ov5C<bڐ(\G,]Kj <\kچۖZ  0scpy rpv`+J3(f@ɱʚ t5+=PVu&mEq}d=zS:Ro 9 .1'{ TY7R4]6M9W2p(J=C]z=*N{# ' f?H︽Fmȹd87n(b\Yϥr _k^HӪF\zKz)HZkGόVශݼwX;C0I<Θ7wNZdbiM4VıVE[XLM^pÍқbJb$Fr( +C>H%25sh7Ό-a\ Z'nuZiKc)Ye R9T+kSkr.osa:h_gn>M2M=k*AEt2~/QTR:2 RUMB922e"V櫇QJ7g7[ 31(a~?F~ 0k@- [9œp=ܰ:)Ҫ5cr`t|\Ei1МNGsc ('r^cF̖cad?ôZW?(&cLgį1c b fzl3 r_E#h@ oRA/Mh6('5i爸 mAZg 'ܷox؞D~;G^"z&Z;:C;FMO?9.NA^3֚)O,h(\MP/]]5z;&KLQfjnT94cp* ӵ)-{c~G&PJ0O?Ko Xb9 r??pC3W9.*LH8鸼9DKyi"Qս2r[LG*u QqɜA@K/ͯz6%C٨GjIϔ^W}#_B^ iv羽ȓofT\׸0tĜ~[g[ZaO$7GC!L:ۈc#Z& Z:7S lN:wĖgrۥ.ͥy~g I6hAKv Je]\;U^c]3 ͳtQptZ24Sp([ Ǿnfh褆hf'?4ƓߌM+OW'̅?%a9X.K'##GcSZ"VbMɑɔy+ ~qX}s HK`j 94i) Ʃ a)8"8\sِ̠6#xR#gI-%@+8q~G;1c?ؽ?|1s^`IP+PNNRO2s߳Wj+Jdy; '_hj`p|yU0Y6Ki}Dss7x6 lO7^1[2W7scqa‘[0{rޓom4gSg ^:3qhpM r2gpio  0.@ڪiG Ll0.pOOFN`T>=^ʔ W%' oCyb@~U7Xd֕QMOo~ZNI).'p?MpڛGܵW`t r佣Qs9l'̘翚?D@c11|&sL!<%yP(F:r>7Be7c0Qqz=C Ԓ4C+<( s dnfz.0MLyi 1V!oDc0"v-7x} fh{isA J=ك`B  Lya"MH;ɵntJ0t'SHrtܣp. kWMmnN~Z 9ͩ\jHxnˉCt) %\iiE'#sv?澿"ߴntp[7?;W!>9ȿwF=)KMzrF ǔ}ee+ù=#H^<z,7P[; AjY1m/. /g2\yZ>l[Fifi:>{ߗYN1P4~HUq |4ǀ1]o:x`_e,-pkAxgj4t=/isEI.NZoEݎz|jdX=^̟ؔ`#"{ R ]&n9qoj*;)I,b(✹铘 -h!5qg@rAAG{w@xH#iVlԬt:eE(#y2-f(o?Hh=Eٯw|88g 8hm9k(* q h}#s!8 0m|-9=6dXHt)GľO@=.>/8t 8a/DˀIBB-:[0w` LC.+!rmy^r\@Cdj"7H^CP8Vbg4UM?3 rzIr=A qeY`-fu@&*Iw31F(ېeQc(~}}%=ClO1(/Atv}GFl܃9ha/! Z Ā$0[XAocZO\qx$8*aO cg8fibwbuLW99Uqs`Gi0`wpߺR 2."i@Hnd24P10;0s6CRԎ D7tTR5cſyN;fn0au`N{ Ȉ]gB|rǶ]`\z>R }*n1p]愹{RH8|FzŢB=yҪdBrSE:b>c}U]0V}mr[4 Ye3PR} IDAT:VȈ2+8"9.4Jσy"   X" ص?{o+I}ںa g<"M -r,HS2,  Yh2dy{0,~0ð_,ldæTs4}rfzZ[?d'N[ܪ(\[_|;|g ll΁Jv`h¡܄cVlZ+w-3tZxIRz_G8p\0GOv['-"I=ʠjEd j;H,V$3K9eZl R`c.ivTE'E|Dދ1fpR e6F]jt =ϙ$܌BzáLG[jBvfPOu+'bۧݒ;I(8SC2ؤTNO"Uud4xVԉ%Μ)+H_R]X1;/ ]"B?N@Pم4\]l,סImZEkRcϔsgι3eɩGnt9iw(4 'A?,(&3KC\ٙ`[Pj¬X-e"Y/IVT%Vt9`4F軌h#:I/:xH o L^QCoMi.C`$d}6딽:I58bvdtX'R%4 HO$lEH0&#rD́N솟*`+qF^W<~\E[-.yuPNJr ]wA"`>꠩CJMd:NP}֗(NlcJe*4 âX'e LLiHLt. e9hA$HsREfK\!<ԝ>M)zE|Ibz|!ʜ!ֆD(%;tmI(6I_ aVz.w(Ii:BJo\10 3 t52IXA΢/UuK^{ʵ8ZgyϰoXbY PKlM;R:& -& GFwqV]QnA2nil%Ÿ*FBd|̬ H/.Ʀ+]F:vcp,*BagNhNxMy7uB̭b:هm}rc_&%tQ H_N+آlkEXn5e׵LZPXDcAp)O >&̗iOE})ƦH?Q~G˱zFa h)M|tT"( B3T /kڢ[D*8dV"$9@xr;'n" <)217AOɶS#$B!A*ՐRD2R&Vw헥bcg밟KyT7Ṉv;“ Hj@If ,sr4aC>3^1BׁsB>N[!qǷFa2DžQ>n$w|C܄坖 B /5:!pb(X4ѐ+>Kj@}.]P[jKvg~+te+q0L QzhL-2.,0 \G8,C祕B7zU*.䄞0͋3sNb.òC!xC:J6陠 71 <m\9l̇BﹸIknsleG DCu(9qYTd/n%̟ :oHkt; Fx! geeZ%r'@/fƑ#%1RaXYtmۀz+@d]zֻZ~n:O5ĐC24'!:z|!n: N#tZ !84{!tg8,&78t͑Gpt!厫C` J^2<E;3O6] @<7P# OŹ♪ψ6ˑE'SOjfϚ8˻^ ! BH![l{6Jc | KL ssci)11-Tߙ-E 4.#k.Y?`_ ?>#~9B\(ge'\ktK f=msj۶PUW[[CvO_VS:D.Y$u-Ȑ܅uAX*_E<H1)6gnzq-ЇwlyF:d_c_'b_d٨Zfn zD,[1Vh 'yƭwnH$Udoą" nf(%j8”SEfhX|v}nB-V|+P!ǂ=N}Ї,}6wވne(>叕Zؑ$Vx #,ɇZ5w$ehbb׳$Ic"!.BZY2lvpb j\'TeuFxj(MCC&j~[ ȩ$T2VR6n+ 9dO2ˉsυf݊GJ :C &ty8]`7r `>GB:쉗zhT&@ځHH"N1FY(֊c`{A) vYmчɾTVP `g`(EgS7 `͋f,}\|a_SߘP\Lkōo)dRlS~.Rz>2}hߤG:^oqs.-ޤqf1 ZlˋJOl7 n 6 mt% uQC0.)ux6TRlslc7W(O}sSK${_>þRz4Х B8{7!`cXiGg@*t9jXlsM"~lp-x7o{#sr%^kӡk_ggsͽIG~N݃GKyC҆R1R:Ro_l6L c$mM/L~!΃srL.Ecfn!nj4-p n*YU-֑`QF+t:ׂ̱l)Y. `bў.Y @xϵgr9^炵c,u +9kl Чx9uη(+ bP7!C>{s zn8L H٭o+ۊ~̾\h)]\R`#@ikJKv, ߺV>Ks 0;Ǿg"I4^'c>t}ەޗPrb0w]~/EZox>=>A%V]k045丣WF&Djt}9eh,mւyZRM -]rf(?>łBe&J3]DF0anvn`8{; y-Jnutsq\&' WzJ%VCKX:JlP)Jjڵ]֗:b ݤ5sBS%OrGXB|f9p\ $+Lkg}˒s~NpXnphDؾ_#>BZB<= 2 'qӐ&.74nwX.Ȉ˔w8&#ǀ]#nKscYmYENCsJp&t }\ SNgB31]0j2 "$6 |G>7.9kOވdZztٕ%oZ27N픺sX|XB('H 9K_; I< L^,'g%^[ A }L0(`9P{B}SqlD8NNBXߩF1BYp.JL`{1*x9SKUI[}VlYTOBfc{HV)?'f!_<:/ȩ+7{.e"> `Ƿ6ZT^#+ .EX'%ݔ46z Y!jCcbl/Ʊi;B'&r#=Ķ|CY_'A;| Y'/'mnVӵ α}] ?Ξ2A+tS˟ 7(s\@>;,- 5QW n|f~HH0r'g*JS!q-+pg}͉ ]k*h؜mG {,q.~k!ox xFFUՍQ@d2,|Nూy|m9?uݢvώ&v,-Lг3uiJUlR ໻ݷc*}>PFh2ۮuOcx` t[OqCga) D!Q̶j}T;$3?Ѓl%v7p8 TVǛdBvо>G x]?\cn+^p xe- D:L;l9,*SҌS3UZ#6чd#Hx*٦v/FO]A7!#&%(EnD=ޭok}_g&B`.pLp'ΝiCP:{2d^:Kɽu u2[,Gzt_v$` tnˡqEvu6,I@פDOrn ,uX9,wƩI)F57UTklEo|jcdPl3<.phR<Ї͕)~=K@/;kF"l6ageeɔX!u:,GF5ܢbxకO6@9ldgrOL2Kt$}Y&h$0I!qB{Cf#Slri70ay|5FB-JZ'3V_.LȎѝY Z h%i8Wil 9, 4U szUTӊpoÛiI#*j=`x@N't0{ayR1gs]d}"{K`j;8L҈Pީ1gX! :,Y5,9=,9szm\Ҥz;ΰ d #d}N>r3,bCX#%P %*gL:-0ni>sic\к}reI}u+@sX_+~T}4-}.9l. IDATC}_$l@tay#2eB $grXkQ{? TH?s#t@sayYLg~ :Tb-p t C<{9}zKA2K@q'I'XbËg)C pU%Dcw&ڗ:EWL ʜcڦAZ7%"/Pf(rD0,|gE /B/]g SC;{ۍ؇l!s=1 @i+m*a@>}6}~BP-%e5旔at*r{S=(л6:,hgǏ1\I%lJ0mIQf F?Ki}1УBzY@^ͱa@=9v9pɁg삎e:ʋ|7v^IRP,eȰD{^b.s(@|ώ[ (X}|WTl-+p1\dd0Zj[!v֛cH1Fbiʹr?) "j@\ԅ^6rFJ 1vm[}L(D4رʵ2O;U~us薫Xa1pΕr r/j-$Rtt 0>Tx,a2+L}F76vM" 8\㓺p4V$>S3"di`ؔ__X_DLߏ7g lu>K˅,]6clߐ6uLR%Bi1XkeJp",~)6 izz=xrs.zsku7I|@d7 \+}Ic.S>)¬SQe0` UArFS›]qBܐ%}Lb75zIպ%`zKjJ2KFCZբ-*ysJLkF\  N: (IΔNDؤ\g8a!^SLL)M@6wH\%xb]M.OBšqslgSiT{˜%̚r0n"PJ3SB~uaFe8xT" H1CKu(ȱv5_sv#̡_ g>lL]LӤzm>1 ̶bb";lҺgKĊ)rC̱2֙Hm2U'AA*)^B"uo%4ϝ+1To 2ve)ŢSz#ms!JzPg1d2d2 bmY2b9 #5o,'$43@}a^41>1f & c%1 F&^܍ F,Cɡ"I hdB!\ + Er)2p7Ą)9L}6}7RF"LiH Ip;V XzMQVw?uޖ|NzOX6 0Ϡ77wdJ{j)iBg%3t8ll4]ӊ0Fɠ]ؤcA*P*qiJTHL?K%&\$+aD/1:FF,_S},3Er dF BSC̬$U;7ʜK怒;Eԙ~÷+#aTj@>S s5ЫL=s;̯I\Π#V;#~rϙ*2שdT;K/aGi!Ѿ$T7g@6c"!r 0s` )VS& 75jP6/ bڶN`Vvcp{dL'-9\j\X0n̜!-%:0͇spX'j%`佨S=%7C0'_cug@ "C\ k2 ܖ ؾU!7SpͥL04?c7Ș\jS /aIs,yP^pbY}B(I+=OImhӍP،Lد/}j*TtJU}I3Ll{c%,X"j0g2pĮˆܮ8CJm4֣_:Brrs'Lغ)@c͂h>"YCN=c9[ꪔAx3Ca[|T|TMf2/sdg_ٹ[l+1\;bg7F0@D~k ֠܁$c 2_1} nZ fh"Ѝ©mJJ&rޏ*Sz*Ksȃ(O&~\S!Ce@:TUZRPV\?{ !vͽ>:VPjAD(;&WQS5ѕ'/c#vq~ͼDfN&2U7?KTm]fۀ]eJ9M5͕-Cb=f)%E(CTҩ}sr-%I0_ 9m"'?hL=mv9]=n ѫUl_{P JDG:%32g`k`[ٵm"JPv^2!~ws!{aFlkIan[P.ˍD롎&oTrk4>h2m~]-t58>ڨ[dߥz2/?=Z>eJ8b$آ޾9f O$qz+])Kz@Szs.B}v2gmT}t㙧j٭NĮ-J \}2&%, S/=UT@5Ov-jSpsR>v :1愺bR!u bsU/ALל?DBX:dfOT+7nL6S?~W8{f}vwҞ#n٤.^IޗAֻ(nLj:Uπ̯unKq&j`͕cIK\}sXh>@ qR-TY"k2Z%Iz{}s' 'mP<6gw= ɏ ܡ%@sۊ!ӏM( Wi4y ?[ep}w,5 @?#q "`]i>r ӼH،պS,P4LӍLy]R5jOpsttQ0g^^[T .נ`霋f@(1zj%FcO\M܃=.T}t\wRe.c]IB+ S%Jd2 QJ:OȌ?7^}z2$ꓮm^n]4S P@R1tآۚyxp {" zAuF d/0sn}b5 `C)Ov:]r|x--)ms \~X~ y_w,N@(+s2$EA3n(T[a;[nÿ$䗬TL}Ƴ_$SOvu>b KhvN.>ou*/~/5ۈC>UL.W?ʟ5uعf5k:{~.1I 0 e(L00Ѿ 0Փ3FFU?;waԸ^$B08Px\Rз؝м~1};R spׯo_ ֭>3>2;r, {mLecڣĪ`فce)@1KK@4ιkN(aTL=GI82K.S}lx\n&PI'p6Lth|9&XRPjF ͒"'"sO?Fd>nբZO> M )1Θ cxLԀb=;}TOHa?{ D8\ҁsi}=bYt 2Š}:;,XJmP6-Wg6`dTWL._DvJZfq[pkRe$>x.adOl?BzN[kaZ82ukFGE=쟸fqؤ},G觱,8+)Z##F?˃H]mцTr}O.}G?N73۬h5?Eszn~`E=uI1B5Vc+͈_0cy-Bc :E8CM:gҧ4 Se$FGJR9+'M*<`j.ߜ?`Vmh8pJfS]6,'s&cCŖdsEC3b L.mƳ]-^]ఠ< 91}o= !z-@!(~e&NwϞKj4k 1fx{q )ކ #;!zF)p0c`SSF2d E@CJRJXCjL mfKLA/;[&4rgc"挸iPҮ>Z$Qm>2l?LQEՕzg[vsv`h5О ͌S-\ȰF1KXOdL{ty #As2j+.u"CDteٲ9ka%gwў ^=$g:=;@9;a.'J%{{zMf=P[ t\w9@dgߒuFE!;L=[+[-ssI΢FG.)CJ39#(є |%ۦHXԽ1}8nFf|S/k^`vqb={z.zɜxH[3L]*'RPNx@cǘ1a`̄:Tp 80,3!Ѐd`+Lsэ$5Tt/˞f5s!O):Y׏&ńS snGGpd0MkaAG wu[ 1> ?18r;Jb!\fzώ9S? `%m8S_j[6nazf9LPdzKϺbJ':$@v$3jf̘q1p1.9`ƌ  T̛Clnx5Ks0N]Nx8j0UU,LbX|Pה=h'Ԓnk[>_*7Blj'">/Q"kk~@'f2%m\9 i4'٥L`_\` k4s4'obI.N|BE,O^j;s17&W[cƠ8?*$%.@D@kFW X2oas8'`YUUc̡bP]f1L^ބJف y}C8e:PKSn*O(w5T.uX m2O,:)ܴ?=19~#JU65o7ۜ϶`}5Gs-EIwtx0q|8~SZ`D/U!zr S'_&dDxe"J4XƾXUD,!NLζ]m3g"z*nI&*9oN|C dfK14m43.?5;ORU`̺wD,m:/{cC̴~)`CtmO(C۶UΓ'][ܰ˃SLಠ@DzO;0$܎%A(rTߥJ?() n%ppX>.fA(,'];&>^]u:}{MDdș$.R&cbܱ"<FS~8dS2@,+^]]]zy]]27 =]l cYfazf*=[Ń`i5U,nXHG!QT0wP55%#w_&RXF|G -73f4b]Xe@{$pK\G>yVIhKܐ2SHC[ĹݨUQ=.?l I,;-.xy*"xX.=,3M˺L SGKsouaI!)A)Yf(XTb*VTWA$ T3M⢌3N!W]n׿κl0ե cĉ3>idh?jHdC&T> WՌpyr=po =qzxq(,Qj:k"YR$RL[-W-.hi5P 9BJ'TR}Y(rHkv_:: U B m0ڞ`D0c3ivvDVGW>V_\S.S5@Yel(0KCdCr?G ͑(Ҙw#ƌg?df`L{:E]]žͺȺ;!Pf\is YB4,0W-mjlJkRBLR>f=\e$DZN[NOBBb)R'A8\k1!)+Θ'a˨/VKrDĕ͑,m w}V0@Sd j%-,Qu_5 )[,>[nmʋ\ ˥Kh41J! kH2S&s=cQ"@ҽ!fAI xPAPC52xocq C +ʵTCv{Z0^cd.bD"ʪkr >3RDcF;pҚ'4pyr wCM x~lɋAge eHq ]zisamgť ( %mD`h㗉M9 u-V1bcd(NBIgq[pX#Y %4-oVy^mA|hm6um QK5AYåfBx.CbNYUa}Tٓ/9}{e+Inq*8yiJ 1"!}Ρ Č %fIG%mp82QKbƒ93pΌyy7 vz%N 1 0ֆΘJZI9C. ]2Q<1EkDe4*;q熗ZtQ(]6I ^pמ "\Y_:4zAi[M 9TyÄ~7MA oLz2:MX09r"{R۷P=rYxqwX:1ziow2 ƊpmlTL8BKcwjbSb:NұH~&:s:|ų-ڶ<{MܯYf3,2 ;|[Z|hq4:cz Jlq5&|!Rzf7T&& mtH `f-B];&3z>) ko8Ƞޝ:RʜW 508DŽHgdF/_ru"c5cT %ApȁmP@ݼ_=_&c~bw"Bvnn2#A30eHY[[yVN0IrH\K3`)i CIJ1Q86|)נo2%ɬJM|eSlYl..ˤN8sa?Hw]O%~|iє߾j]|˚_[nƘdI8^jgVZ>jLO_†u^xNK􁄑!0 0שNd\B0LgP==},`D4HT1. +4K!26Ȼ"$f7v픪 f| n=?O$rr TYR*`[:Ap$5%&SB$6(bI*/7drNDFG! 8n21-Siuyv]X->ve3;";H{5md6֍i DԌ*O.BCs8%—aOP%FwmWĬ4~@Ao)g2r*`¶agm?0)j"[&HDfu%L !<2)Gq0=a_&T+%鐞Y:O'Xs#?OC/ѰM&j.L2Nfdp dq;vMuiNHpx@%{JRc ap|5_Vohz"C?f]kreidCrm$왦U|X~e~zn|ѵ6GAd}KF9eNL}ҹl@8!uئJQ@*ElzQ񼳗x:#O]7Hw𤘝4X% QgA󢵗6HR">'?r5̸]وd;K3vhZOPGkL2sYo]e)?S%] 2n9 m4I si<Ó8p4H.*UX@]pNɢw/VϭQ9]!М3A߽$ MG)}6sF4/ W*ݎBIUq5(ىF]9^­[7`.f`{jҿƇK2GΌ϶NmXHC}Vm]bA%)} D8RDTYh<b_XunwODZ^7M1KaLO/N5Q|LZi,gkW]ѥ'htP`#/Dʬ89vm yln2z.}'>aWQ~-ڏf][-v C td$̓SP=M2L=fյE09u>Y~m9kKl{0^CiMmGk}B.>U75ꂧ¹a2.R@6ڨXUvSQШq(MIt(c,7;J@3'"F3{EY(wl3)-+kBwRzT.0@un%sv?<}6\d,Fki7. g Y>}|x^8F6%lOߋ0=] F}5R.4 2'8SunYб;uϚFHjf;dUv=O^ 4D.$k."ދ (.cC8qO@<)r8  {nj3dgZK? v7+2s2x]Lh4rpˡ;,M^n3ak-~{ap KFŒH}D r's/Oҷ %xõ͏)O&G/+r3 ^?৪VɔT'_Hf=uSCbJf CP<}1.h|3NIr8`W z vMpf4%`z@Yd'ZWyOL٦q]_%ҙnwXfkzQ3sdsi&Zvmt 'BvKdfQ똡 &ʭ?B7kej)a3 ^Q`]<)L3)t7l @9V>¾Dp.4S5/ԍn+5,:FeRJ>, *CY94[# 2 2žn/lܖE!~RP'O }( EXjJnjw}ݺW IDAT//:?gF!gx_lӮ5DԣK sc,N8"]D|**?%|J< $]s}3bnXr2d|PJ@UЀ)lsٖ C$~vv#tbFCl4B7~ψ3ܱJP.S}̘D>Og%}7gz(TٶkV?^ͮc?zLlgtFV3*SB, 8}\!?g OQ5K`uXP'ݿņenLn9p'L9rW>b.Zsxum1r{ÇDHwHq!'RbS1N핬_5̬ht/4 A`f9"#ّ2SweEvH$@@:2#t?[yd%%yEFx=S}O)Lc\$uyQsjC(m{=DFΒ#rSْ|LEr55@$ݮvjy]D5E"vq#zqb@bXD*Fo*1z ,`="B[<#MrA2GsFY"Vp^=x^hVsM{8aDp eF&rȏ2uzSUb$XqGяa#ͳf92s37st,ȩϵ)7RAF鯩۬} I=ۜ^8"&_+'mP`F]"ƚjk܌!vw6"Cg\RjDxT[Kv1R)s)͙ ~n2 Eˌt!T5hG#8F}: n+C>K>+2\nya_ jc<={Ö\IdDpP1 aTiߞی]_ݼr&ʀ<Ѧf# w}R!fR$niE 4]%Xh$1KR;o^)hLiц1]{6`PGojs.F9#!j3zk;|?1!6?"e*;P]-8쮾" M% yW9XaR-y XRdv}q4}]߾-`z0mˡĈmz07풲eZ91.6Sg8"^UsBI-_X^mPn*7o>BE1&ELKQĻf?`=^r)c"c;y>Fӹ% [tҴM]aΡ/-!SFDчEaTq;Nf*ˇ؈DQ5(}pչyZÎUFG z!Y.S@*O`lҒ+s쮀؁|7F9/&G}ă@2s 0Cȥ9>qI1gzR\D5\cͨߚ8]UsYO@Jb\wV8fz䈧W7UF&=,,>\(Kٱ5R K5ZO |==(_nlgOX(Y*9.bS$,c;[̓RԘ6pzFKTzi _FxUGKS|f3A ̳ +`ܣR @^j^]* ~\OC믽/0cB^totPr\AjŌ l .HS"Z=x f|Tc9(Y5yLƍA ba]-3޽Ȋήc^TˮdQtȁTJ'[nR~5@Z5&Swg(eU&ǀ |:"vѲ~ pz̑7 ̽-ugA+ BIhu~ zpH@cO@2fASUZ 4_s6;LqLŻ lT+d,1(Ec59sUo3tBRmO1WGWM*],U (;lK^vqV3rVxnX2[U \c8{֬4 >d1Dc?LoQf.ڔ@yL/w`D$;~~f*\+nrQp K.1jvԈMKK6yc7&͒uÇӊSqY ]f6!BJJH T^"#OqOB\Thq &&ifRʽ`kF-f܏L!G,l$iIyn>P j#b+XK~_]Zg豝TL̩fu&́{u_ |e# 얌(2DžjF[ ֌d__*u*(4[3躉O!s8HѰV}4YB8t@4~}=3-Dl.b&=wt L.*^f`ے[29$2+g;Nmq4>q2 `>1h@]c8Yą29 12 7;ܣ'E絬)tp@W}ap㹛ԮN2umQYͩDmjEMzlGDI}u0<~r$fYbn='I^OKˌjS;OВ"z(]-"Q ܠz)9>C-G۰“[, %_I$2t섾G3 q; dd蛉~7=$Vt"s ^t) :t}Iq/R3,c!M'Ï%jTͳYԈ`5Xz[qj3YIxVY%j&4sb]=]#1" Ǜ J PӸZB.wwz\Dه$vȈ@!75usr{H|~a IjSY#LvDb;:5"7KVq{)*Ě9%3r-j6R#0~O: U/72,"16븽NWڄJ({/ q)ҤH3'yo*/=7I n=#wn%âS ہ-jyz.+L)M9br<vOѡdjx* Kj6k1K誉jJqr9@pskkKDzbTq"+`z)dSH.R9xSz[= DDžG\IP=Q,xN¼%)lWs&[Ck>IՓ7annLK3Y t}D1q3Y^ΊJj@+%'TRڙkݠD)f5>GM] q?/۵b tH,)C!2PH !.{o1USuVZ1cL'3iYv&aHbr˛)&/wdLRaWܜ`ƭ4go;=\bu`M99f^ymNkZE,3YhnD-C8>! <@fǼ:”kN2Gh`W0sጼOgIXn.%wVE1:5hg71jL ykj3s_6D՞ecjcY\on@ТI=gkV*EZ1 KIZLocT#+z.1.8[ |匓Frr5Dq!og<j{N e7ӢK6B!yԼߙ)s[ܖΔK>Lj@4bI]Jvk,1֌A)ҭ:kMx"܏ C!w|ӳ wO.Re#C-pK,Orv,*2^Otz~(:>'y@cza!tI( NDfSiUGNDf|@2+JvF_e.Ҭ2D90JU|<))6T(Icqc^*rfW~ a0- o_"GKHɏ }(@;iޏ0F~wBM0pih܏ioX .]R\K\Iws[SvsWJ[ci ϳa!DǗ4xXS}jl4K麏N܂lk83qnnYN}LJ$[f wO[JV΂ޛdwRh]1f#PCt9. h-қmtDD880Wx)0_5QQKrZMKRNZcq:Gy~!8Ma2szn"]!2q\Y{=h‰(wL9d@CBOʹʠZ38iTLC$4_{pe\4!KE:aߥn['/GzTam=6jjWEW "M}Nr!B93 :&1.ϒk`rφɰD8M|8q&ElدSJ#|; q(@u)M ylxf*ez{>Si[ "푨-Dä R,V'3F4)^_Fią7EH`~,F# F {̭/1U؟ @5ߝbY3#w\0gqO5,2[:ZЌ//Rߧ^SIRQvPi}?A-5砣j gb6WXj|JCӐ K=n2lD6;XԹ\z?'d5bs<3gN1K0OQm]_Lԍ45CEAxL Ռ\W+y,p%s%~+|&k".~Vz%LF3?MyYhP tfY1H ԜaOi`gCE[+N )/R<=Mjd5aߧ_puf]u)J98S6{&kwxZ^K J9SWT_LX= r3Nopا@5\U͒Y,u9ބN8( oM%ʗ1`VC}+Rq=UZ^mF<sx`eZ%04*(s;w\EVri?6;vLu)%BUqu[ x.q_2$)s \zJdQJB+\KW-A\a^d3żbwdl<`DwQ(Rq!=/8Ki"uqa(5Yٻs)g SiΌ;&OȖW:Rxu ss̆S/S;]us3F N _]H fU!Qn`3m-ϰ_qkm#v9=9C CAX*`+tv͈0/\%#ܗbypSU6~7SE7C6\]V[0QcB]Z9sRx89/=378nog8|'(Kj)%ujPNKg?v4bM7FTf"qr9Ŭw\ѩw P)&{S&#pTG\/@Lް͔oxHn,qMeQrKU] Iǫ3ᷰHpra5aWH}vN/I}m(z6>>fU%Z2zN?/5hw4P.=72gZyQUtZgfLVI[!,Oڅ]cbf>NRw:N1N^gmJ햞;bT=Bge#N[.-4w Ę մ@s0:JF4AHz֌52, "nsNu<]X@b(AξcVWGk!PvRk{Ƌ<^,JŬ׫en"|v!b.|J/`[[EF%OYNf4OϹ [ BCuD۔ЍJ[֘^v8I 2B\e̒m Ɉ(I=F; ['q2'N8Ҋ-rvc W&2"Nт1\GD5mپXC%fL- 4~_3e_S|O[h lWXkSx/;6?JXȦg^{8{BP)WOqVhU*Īm&w]RzKab8rA&P-24*6Jm*Q}[!p"ų@ZpJ!Ӛ6-R 8,KfYR:y\0[Eͯr0@u܅“{#vh|(DTP P"QM]7 A4\7."(f]݀(Ӭlr|dZ+:Ըc9ԚHb7➌&D#6L |Z'SdCc%fx>2##ԚL; sȕ6(;"EFrゃlʒrܩ{[/I?+Gvl S~6ɔ IDAT7AX}-ٗ% #"_jruW-K+[`QRx!-Ez4.b@;xjEx%.1lޱ.C$h`*3F$Y֭'B#RIA,_wyT% {az*|ڵz0_p}p"Ur/-ލ682' hhN@:jւnrI}f3w$r˔w(4xkJ|046LԟNgщ4 <%^7nkO9FV!)BEjxZEX^'tI2a7βʗFolFc˔}tū^BF ͜wYX}̌8rÈ?{ ŵ%&bִƒm|C/~c1 8 ިUs"XUMpr2TanZh \p"Ev~ʯsB@Zh|MʑCOn: 854yCMr<2K؊n~oPՒ°p9Z;." &|ЂbIt)@Y̞%4if89wc7{Isfp/mF\*5kNK*E}:xQGe|xz8r`n\2$mh%5Ci3xJ6l9w4(ahj۰jZ3 te/O'2b:)-bKL=R.=G&d4-|i@$ӱq}ʓbww YX0LSjPc> ý2ai4bdC+dj"`ScKRcďE3oռʸ}G1IƁ cTդ]>2,{"@O\Hf+nyQf_zBwp6Wɡ"-޻o ޛR}bX ;^=t ":(j}NYn šj6ޜ6ՐߦP :ˁt-9#rkLbob<|/*`1!6al[n:n#L0{'D qE؁|HF66Հd\+ŏĢ^wWęqG9,܎W0~:dB3KTNs[c!cXBa4DU+mjEZ5sIqN@vf=M+܄W* OSw,5AUbҲ$̸so.@nj0/Ⅰz̝t.%ɅD7drHN4PzzЧ)J^ ʵMZC#hi=fE\#Xi4 _5]!i4 %Lmo>bH&A+@sJj๛POj_f)Ld1‰#ы|TghFש=ܖKFIIe)XʌɅ:u,tg]&@(*o4dfOlTpg49a״+oҎGNČ_5]vтr5KR_m,E4+fji.?U."0V!X*Ӑ/G_1]5ʸssk9_X|ȱƥ/}9 @(#Lj$em\ Ƌy,%GKNKQkδAsǻGV:eOd8'Ю@GF;eZ8}HIkR f͸\:b+e:x}=rxL&*-84i_`G W ,-Qo=nPl,r`Ɔ#>_{&^Ta"kc gn԰5p')4gw o)^![GzUd3(EYkHwO Ll=TcgPkl+9Rc}|a@Ǒj# enp.:Uy>Bx,m`E/05XVg\S7ds&#^sQ}gEߑ#>X6FWEOihNHHh&+1d@ѧ 1Ti.ES:<~ 'c҄L {^ڵ7xES%|$U0`sBeWڹ->syO9T5GHn` 3y6xZi}KW lSM{3W[Qe)FLk4#>Zw5KfdCFaQ'e gA'7N? vaK$@OPKt!@IfmRNߌc<(&ԶgiJV9> 83=giʡ jMxCϕJh靇P>yh1܇W.fdz[!ԼЙSu'BeQ{p2\4/P5VslEK,VJ%Xb0B)w?܍\r}S+fHCIO Ec\YWKB"/"kR﹭< :E֘f7]*aiDܾV1?R\ͦ<5WfwFCq񰢨]e? }罊27$嶂_? #u&& 5QFQ<#HsSؿ*n>Aa6#9v6s9*@0!1sjZ;MF\Q]].1ͭa ["f0pܰD < xnKDϝb0/vy3'j:F/߄zwzC ]e;uk𚖝qsI~q5& ѳ`8,P>.%c/K֍&૧p;}OGԛhu:g i-ŤqX33gi;e i̚@w^r\Ws,퇔@J"LjBSY݌0 o;KKhn}8_r[GEpdkd8<YU:%M˪]Î\xꅵnEo깹K?dpR|8m>d{AͶqݚM"G'waw3yʄ79 ,('*)EFM:g9J, MS?HF{2\\'}Hn0̨PbU4;N̳d SI#?]ݒv sG+,DY֠UY-1\Z=ߎcmsKMЬqʖ:^mʏw>s0aaMLҌ4R &L{Ga 8Y6s18~̻ҡhh.rPG5Vq9/ t̞qn q _D4T6}/YѨ7-H3G,;yAbFZ>ГsH2VjwpnJIƗРֹq^.owS бVCcLb\ ]qb rs gq</%d&ΰ{ݭV[P 8#}G&**ԮŰ5u9ҷ%43DoȽ# @pãJ l ?~w$ȑ2``sr&3a(7>\3 @&#jLSYzΆ`a#x{mO_@w8 bn )A+8 ;XB7O/QΒ#SD?鰵"4@NlǤsw!}sgnsm;-:EWU&: M_vM:AKpdĜ]PY ~Ǹc|;iwe8L6]iPSH D(y._U' " vX) $yܠq0^S@K 3  QLYfV2O d 3"ߠvLcЌ nj.ս4CPPe;_RﭠԒȻD~W5 J e1Zs=.:%~Ӓ!ƴ|H>VAُ7Ɵ\هq(]1߰ʎ<+3p/P;tgU@T7@J=\ *xL`PZe '<ȹ7pg 8B\e" yD})I9v#P#=bt [;0~eڄcD);}6b ? X2"]]j)39#!hGe *U^y2Cq)M;FdH mygD; ЮǹA}12b9,վz?Bϣ +7Qgɰ|?#_ߡBVtkRFAa2d؊'"%ucMZUA )Jh2 \ƈ!!,8CDyln{rjOܻ)y`Fs7@{:L84<Yw{h.#H1CZp"ԕqxQ:A2 O1;D=@M ͍^CGpҋ~)fq. F OG foϨriwDZmXK_ӣXny3&ap'V<ŠӍM0"B܋2cnuZ9l}naМ (SʽOF(iE+8s)wǴ)9WI^!K;RĦ"SR{/+0?O?jn~RlQ_h^sw|4 ,VQ|am">Ì><B..nhw{Q6:˥蒿upwb{Gp4?o9TN>RyE?<x=wεOpq߽V۩h}%D 07Ks"삆ȓr5wa29 wFg}扛lZQ$r?CʘÑlɇOdۓLJ?n͇[ş$!H3| b&9s ]Q:R`|;lgcyQlKDGoS3Tu-oâڨ:NzH"Ik q>R=ݞ,E&݈Qn)[#MYe#u- ?z"eh@1~5 `~FՊ$q(_Vtc{+MN\N,n&Fi\*:uz/!e<%wS^YC6HtXK IDAT +6h3v|t{"ҩcRmJn3jq/ 1ztmws2YW}{*5>0Pi yF3 h!j(R Q%\seE[ 1Kߋ]Rq&{W5Of({b&ED7` wx@b|J~3~[j]KK\ jiiҿF['~ ^vؓ6xe'O?f;qC2kI폰Dh0(cXҕ;!~ߪ4]fiw40'u Y=H Λd12auV'ϓ)6g7( NڽhɾP9@7Iw@BΙBhG\f6A,5Orzy?WZ#6 orozQBR3 r܏d6\eGnH7B0KcF+ޠ䀲Q8 Ql`|gw8"V"~R28Sj 1r;J.0oJ4 }3SRYk/벎KQ43 Gk:]|VxP9-j_ZZ@yF9\cj|Nkg%9+798nSG|^xм!ioDwO\T -90}xVv ~JP%SId%7+u>GӏG3FmK5-]-k%3 Uz sc6jJ֎>ecqCJ x/OMK?ǧ~ J$̄ zh $oǷjxHtG([!SF*RY`'7]PKI (9e[;j0BdkzGLiwRւ#I%+Hon; <*a#v@ E\dV\DxDpf"Ct%n""bsDyuˉ,\fu).%i wh(Z}g\+~ݺ`G64%̤ {tf3%C%k"uZ3L i OΖDx|gD{ԶGM`ް\ g׬#^2&޼3qXmps¿ hu!ՖXH1z@mUd_0oQ9Nƞs. "vU剳yT}&5'm~&U>@%qJ/01=9V0%(Z9 ~A^S]PQ}.3E+ZNW@X 'HHĜ;Ah=!5iS*-`#^-Y/2O"ն@>>DGK{Fs:1NN `¿ '`.J!$UD`" Vo0keE1"vOP^(r'K!=C?u9WZ\9[ UnNN8drĭNWtvf%Mv8yٽާ=! ,S~l'1yj!#=X$AyqnABU_Z{iM-yD[mYcN$>*aӾƫr.SiiV@ɻovt5#`ʨQZ8DUBث(3. zj>2BdC)k 22<?*sN>9@oU}vC6"Rb.b"<yPsG1UY=݃\=Gp 'S7Y}]\YY+XbO&i~{},غ wU*rS=|yco>Z!Pv;w X{.|/MF䌅ؑ܎Mc (k}Z?"PZJW\1ĩ"?Noޥ0V4<=vd`k{Y3ыj>A(8T^*4#>4r8CA<-_G?scNhRșlfz$1~ػ0'SGxz72AyގQf{ ,Sdh'@r+rMj(UZ T%ttX;2T6"SR$HOp({1hpr5 dr{'P`>mK鹗/""SxJQMDD>5^D"ȶKFNSpD.g [e`/@^,):c<j-@ wEPVtkQF,S^H-L˵ч2&Up"Mr=.D& ϫK$T~"@(9v8;E$jK1Cn6+Ykֺ;"'`#>KPbQi94DxπpA'4w8?&r[]'k׼  Z\\ Kc;(J`iqUiybP6HRFim`><8ᠨGi6@Rbt]JV\&* Q63J3J$NoiuvNhW> +f @Dp#hT5-;@x V@Gh7~V٘ ^jcO1Ǣ[iQ&)ObO$ N.1-,EQ\&s}j\WvEw,hzŒ'Xg0"E﹵$S>Q8cϧy8=I4ZPEľ6Ŝuz=0n3޾? :0"" o_ ^#fOkD0D=0_^mnkri(`m'# oBCL H^QNEHLe0urQx<\^@Ӌ57j4'ުu{S)zL#v=Y@&d;x܏-?F$ Z`Z0 o~!2yx>3@sps]X`B\D G+|8AVNPYe&lnϳሿWikԴZU&4@s^]T $2eW#1i6筑.8^16Vz,2!236ʌ".&%`U$*|; g) # KdC-<Mo圏p|AZ--.0y' |D0:pvR:K^ws@3qrnM-9 a|Ÿ^)/[\fS{~݅+/ $Y겅2ws f[ʜ"K] }>@fQTپRtx(:eqL:.+ |[ZUAb O8)h1%̈0:R*Ư葽yl@铸!EI)z8K15.w^"y =*+'KߵӨT]t`)* NPá=9P߮Tif6$h"/ 8bn\C]调Ax o`P'ZF'O'/xs<hmn[hٰ©9Dژ hDsHsròh*ğSn\q1SAJ plp0oT sYϗVmdO4k*)"CREzo=Շ_C('"eO%J)$xwԞԮNA48 ]3ڔ\gn8vD%G0>5׳gfBє[Nu&F<@ku@atn97fNZ¯7iߡ@AKa>Ft}2MO+sx=wGw"^Z3g]>Taj!6Rx)Dsnc368L+5hqsDdjuj` _J (Ɉ6CeCgP6B?#wW]XiN]!+14l݌tː,Ziz>n3EjCs9O '4!O".[z`8PpNxLj8! cC+ʓN0t/5 )i>̭_e#"0&"@d.T-4nJ+Lb} Ik@S&u!gJ¥vrV3^T~[K?A ~:áP}#gU~evkRe.")i>D"H:`2v#K!H4%;.6&RAy p T` p)u\9".c]R>x cV{QwJg<<3gͷh_CsP+!c-x!wXiVEWqwHWĴ##HpIR*Sʭ\BMOAe!\ݽhyi Ow ~wZSKk>F$GH1b3.'ىe/-p7Tq/4ݐ_KҊ83ڳ3Żg7Ы(Vaf\sRԹN(ҤXk=&(y `~'erTԊxA`kȸǜ:EHm6-'gDkR e)}Ru 85r5KG)MڄA&`/Xic4:%n`,F2]tP\Qfs䈏G?[7FQf<0 Ԟu w>tfu! / Y*cj[T>'Ke#~ѿ&hiW[ZmH07H* z*Sˀ\@.ݖ)-AXԀvή 8ku1 "!oyM+d+ӗMoZPr:w:3Y~?}tk)~I,"4oc^U9 'ARDIxei Kx|КO("ޤ #t.Rs25O2NyY]]wV3"j'*\oDpb8 ;Ҵ<8*RviYIC=I4y4ˌ j 'uꘑ,SWOA1 Jq?7Hd.Կ[/ꝸ}̔6KQFvITϼb'xM{O?[[k8p!Fa舃ڹ$TNGq>NKHrpJÎwvfMMbqyjWJԤWwx5'f7?ωp"M+e gwO""L! C>. rYzҀ-yd"l2%<ʉhIѢhO{m>P1qM*;n1u+N|Cf(ˀ[U/H'ip7KU Ǜ_$ [!ȿIߧ6Fp9'8ԝ!IȻ iii:Pl(4Ϲ"o/Mߞ PJ%1~= a6TQm N`O x^5QF*)pFE:w;#vK̒OfG{փ_Q)w"'U;$kKR4dB2WG=k=5kB ݏ~~&~/S +kwq|=5P$ ai D6/izE)xq>2S04duO-ӔN"}# j>q{UdOup #~o;qRkH>Ԟ#`Jy$xt}+g" F PP)˖47 ű HkhRRY4_CKeRO02zMl]R:! i9&! z j;k1z#\7;B^XUX$'xRP*Msy?Bp]9}oq5m##ʼnZ!վcώ?b(Hh $΄s="2zgzg4i$H# v]`Ř`WO}f k,`+&/ IDAT%qni 1= 3xUbu w~/ȫS#ҙ\fqD++L-d;N_7>RPR*=Sd\a9ac1;D*AXTn,1oF\9W;ێ GU ~!jP5۟:}#B\h `qn;0!݈d֜T0n t&_XS1:W]=!b2,ٺʝ0c ܅(w*4ag~+d+=5+L9?H&>\'5LtElSz}ulz#^PLՇzd:wΎΥn i(,ϱJ=9<$7.#Cb@؉w+_o+2^F˲VghZ0},|&@wӚ&ST`>a}꾐;k8|~;~ېKRUŃfqTnz v^q(|=>UU].qr!ӐPSAyj{ ` {Pv/.nùb ~I bRHJ190[fF>Y/jx3L۾=<ѽuEإ=P FX&p3~Ly}%:,E&2lPAi=%}g"E҈Уۃd'|ot"S4[֏?]zxgA^u XUv9T:;SsJSc/Pmʧӯ_?y [l >#̱Q1^`8%l:(}} 6" @@4FKk15fse=0a_['A7&0slhc8R!lD YÕD7 4cy\(]j$W*M!@x;3N)m[·Tv-W9yf'Tƀa493; n݀7u NҤ8 Jai2)dYKQã9C9ɡҟFY,5[}mր-wio-K64.Jijc8R{hC n 7tw8A?IYsRO^P ,UbEWdn@"9C!q(̅}9@iySEu5|{X񐽛J_b4 ( Tnu_S+`X414K;XP/ӉМ0&s} :+)J%J Ќ%vJ%5~턡$\Zs~VP}/nk0 dIjP]U?ŻQ@4iL6pAol_KݩK7 ůCOhNpqya︖ WNYc̒etK,Ou iOhqfnvPI‡"t4=ʶZ^NseF]^I,k=%@ S&Ȋ.oA|u>;Bu[SI1V%鿥9SKX1,Lèr=_ޓV,2ܜHĺ>2l\P.>j 3-E.yv)M$E2c&QF)Gb@,N9÷S CZ>gBgflg3vSHKc>MgJS%Zri%:z<5F%zmWwӄu,RZN}/1",]BcI%k9\F"#dwB́gh~y.KOkX0=_P9Dnrֵ5QՐ1C53Yp=2%cjI8ܾT́lel.CϏe;92n-~pd6wRߊsS:-LR\"-I&%MΏi;L39cMiA='N JR\LLL{ @Ty\]l[!<Q{uC-}} #TXf|Ud;.͓𐝚.iɰqB=^n2Y$ah7Y!i7ع+I}/586M,7Kl"gBϔ^E-%ŠP}`8݆"23yzG8 camR`c%d)jS̶(]~T@sW&]4X ] ܊DV*g͜QzL*SBYeMPRI8NDXdC#ywʕ^}f=N4I"7r%4=#8`41O~g;&C!V))e yO.w߼l2<똵 @26|݇'OD7*S'FCF=.1h;%l5Tii +N \O&HsuVvowk2UlȀ^z bT ǰRKX^5()-a[=MP߇~m{)iG$$%!|7z\a%ٵA3BLüMYZ^jU@ 1T~V",]; d뀦DH$뻾ns #2sUm]v]Z]\eρT8 KOOv̹眆b%Bp|ނoq~J]QCֲ.pݝ?9Ҷo"^ 0U:=+>2@do*ɓNj>:Qac -~)g 9Fz,0 $%g݊40֮ITՠfZ&댅Z' %.kCImnDFLͨp;od3/%P Iن, 5z }5/0ż Mrى$'åv*&ưK$2GuIQqA%ĉė ˍf" Dt)}f}15LU f:ڬ3mpd]C LMMrlzsRj4|_µpеHV6Xn[Q+B[:W@eF197<)9uǕI8s$3y*a l[YLEe?z'T)#N-5 XOpݖwdLC\9_9X/2ƬRsC!ml,񣌙}߹zʧ)8 `ص AA8dv+@sCl ʬ4`V8m`}&(̖cX͉P=(DRE? Q0k!k,8)%8 Q+i .]8ۻG-4fjjT0' nstk(Bㅵs=˙S{dٗ[ ,AՇloe24XP35J9`MU&;X\rdQi!T|+i c$Bxr.p~qLvE`)Caoxp7TLp8619\,w`2 ؉ٱYg,,ebA0=As0m}s}Ǯ_wZ69z"=9+_^b̾}#lxXcXDl-w%Kdv"c`jцvG)FRR=hʡj.7 7yڠ̘QI`>,csldG!nH~!:r,/tlΛ8%D F>C2gp+SI)(sNǬ=k#C51T5D|M o\ c_>as¨fkɮ\p[)^r@l4FjToIh g  g!3U=\ʱ!v˶ƀ'햷K׮ILen]a͂`7Gvzaz S˶\D ǙqfғRf}' ;z,%[<IΥ]NQ,g ".*"&e4v =1` -2#'Z` fQWabp+\ ױIv c vkx[ 瓯D.CzJwqB'T]#é20L(m3dND h{ MM+J)P!Z '5`-s׮ UͦYPn^|%F $tSJZoRrL N|(~W՟@BE`;䌉3mkzfDK]Be#lG^5e ΣI7h/Z 0hNwp} f;h E;H=@{h3 p} ̺f.Yz9Zb}8Gr_6`8$QP{Jss#1~@3g ˜#qaJRK՗'Gt$) xL<>; NM'tS6L@w*̆mg%Q2u^hAD'`װT|_Y`ޱB8e@[/d}wzz,%n,AAJ$ :oEROj?/Yl7.4 cC!=h0XaM Bg *GšП '=Ƿ ; Kd `a>~8V@xD*6ؙ< Tl@ 8ݍ($+1@` :3 )qPÛhŮ9V7YUf M*# {u+%D?{Lx+^ӈ+}hnqo0]$$?~B$MX'ഴai~#}i~}zlŰ\ׇkqޯ1}~z%s9*Yא$ 9UKJ4SkGF}޲'O u@ ] i D.RxBS'nT)ӝ!64@^(< C*q:^:aʞ#CY:u3 ָp2F078hbwa=<]@r yA( L OhLKo°vө QlWA5DUEt\K!"⩄KH1fIZ >U;&0  1-4&8|rE$seʏ|_B 'U;HC蛕JqAr>3`1&sBD5qV("ݱgIq^n[j>U`_B! qH^@.إ|(:YfgUZ"bHhkK0W$^O'tpWHn@([  WjFN+sA3f &LRH7"! @@c*Z1d舱6EdCm;]xQaPLXwHeu)w%i-e]9l{94`<2@A3ʅclHW"\BIb}H& 40VLMr!5k3\Ed_8D !A'JXb9p=֋=v:U`Rf5r8/K{zCn;&G7Vt8 1;?O Y霱by}ן)I`)|+nC p ̐!D*TFB^2E @zcs cBۺ#+sA'$% cѫsgO0t!Yo"cXM% {%7jPc傷pyHƀ56Ov@>1~s"H$3D$|E@ 0A]}H**\"e픮iPR̆;@b}gX7%b`yRB"AF6Gf);E$\L1TF$\%| ]#*P3r%2or$\9*cƱyJӚ\vY?$XgIDL@f'ёO uz`8q^G/)zA(qf1VK*$1켑VF>u,{{Z@vRǡx*7cr($PA_W MƊs]ʲ"%F&E"٦o] 9k4;K0hJFp[Du.Jz{e>`ٟ7KߕdYqin iv%sC K͹ Xtm'+fCjӋV-y݉|_)0T5YaxZp]@n敔(}3+z,H~=0!B%(.rٔ:YTʩ܈״oo^R5Pᴿi.3hVdH vk gq1r$t[3mh2@XRI̢v;\Va`]ܨp\קd(B5x\qKE.2儆jdB{LHb@E:[˩'}[4ϓG8$pܪlRTgF#ܱ5h>ϔN(5K|SOȳ'r$a7Ve*ˁEM㌰C,KچIheZ^gOJ4 |+X^wyì NFq^ 7k|$'i%'٬>B`7 4x؞bF&HǮVjnCcWm`:r.Ű IHa|] .XJw2@:H P*+N|$^'Ij{rCMe/v%M~AL)Ws;̜iq$bF]L5=r Ro+G’-$Jg&YHO"Z8 R-bWgЎ /1w96Y;>ak/po+)(nhzs1k>-5ܵ 27 4_@"'ȦJ0[WȰu&.$T}>M0cE, N" 3"imRD ħ ȒBp:Fi[ch!sCL>vZ!e.)L%RIu?ZjC$좙Ҽl)HQT,BEqS9oMs|i)Lݑ2lT{Y^->b݇kču+۷K."elJ tUMbh :HC\#2ڦ4$Ķ+:eh>ZJZvasbYe ˝ժ{jhk)mTR,c2dn&8)Y^E@]]v]nZ6*mLEe/*hȱT$-⭙d'}$K5+ ejao;7: 91gҙCq Q 2ө6b[^q_ tݤR@a(xlM_n t s`x)GL-jLl&r 9g}#d!Q f la@iŴFʀ+ ~"d\aViҤWf;ۏ 돲;H `X =eeͬ SW'TkH8vp쀽QAdoTha cl-߱8.81XK < `pɆ<=G-X`%F$}/IE(@ & TwLCf:*uMQ6Z0/r=M>ЧJ/HHV4 3(#e&5JtVJ+tÍ٠p}O>.> ~>,I JP 4%:ub#5l,PzIi!]ڵah)'CzuaH1Y,[> zy21ApIRĒE9>1kv&kz 3Ͳ pan`~{ޯ[ta x.تgN0lxp*°J*pbZ&мx15>#\l0K0P#X$! ݵhLBm ZۤIԫmQ cG5>KV/u]boV_1̂݊ ϏF'8{0c|Bc3>rW.K/ 4?ZФ)OJe 4qܿ HCB'"݊Q^>܏iuJR}̬d 9ps8F'@#RH҃3K/DXX:7ny$?=R0Xi^mFE PNH5-+%d{%)&5F*L>|um/x´7aBr<ʩuI}Qzi-St4b\2nuIF~5MSj]:'{x]voRo˖PAi@҉I?fbxzZ1sqsH[smg88`!({n'|>d\f)Ƨ=F m:@g<8o'pΕr!B#x$9W'Buc0Vb`~xS_:lz,tD]f{&Lh+2 V֎I]ќ/dumr*B +",%qmDMZɹDҧM\`Xo鄮;f$㒃$PaX?)K!Qg4^\3P䏃oDHo,k N^0B1L&d' 4 yxƆu|aܦ,0, zH+`$mѳ23 zKq <0ȍ8o{N Vk6H>>|pC0XbXmZ`j R/4ޥOiRNCyH2村?({rA 3&JRB@?tLx b؁dY/prЉ=XV"${ k! 1,9c=8ƸpF15Kz '4ʥѕ\RPV+S_ >wT@HVF0N#ޯS]P:@`hdA/CWO{y|)^C [y(nt}  4_8&NSn<} `8]v4v쭜he1s]zF(:d0;mD"]:[cXK ~N1`V P] pj>VkōÂyRߍ֓/DaJL/1Ȑ͜dR⻖:̴B0GRtO>;aAk1^1*-g8ؠɚM u>LFh`hg8T TuX 6Zs߾{CF?]@'*uvvzaN9-%!|)p^ K&K۱`WrƷؗ҇<4ۇK5r.!{ uLf& 8+:{NP˩riyJ0 @(51]T)(s.h:Nv@0Fb}5hD DͽFI3rJrߧ8XVB{t"T y+V0a9b; 5i@sZFj0PJ#ٿ.3r&̰CWJ ̑#!X//ޝ^5BO`&gȂp@j8tJC{8̷,)ˣaDbhf"62Lv1i!E~re#`)53 vtLoqakg80$WR|I^`Xve$p[P/#aC| q/j!r#7 tqUSh,ȴLLsZD@ i`Ffs9~ƃJOls&@ @3^RLlBK.ypFFh^C*ez]Rv4y@Wò)Y ]<նxqÔ|'!<#8  {ݹ #ۙx,R]9͏Is i|%2+~n'\ Oy3oMϨ7=d=9ETӜ< -1+ וb-c!tz5n㖕Ji܁\qqY|Ndkk-x[HY3XH^zېR,֗7%zav[6$'М "2DhDhojf*,niP_%˃fRg i[ XzzБhN |NRsaW d|>("븞"z߾n%;5st{ 4%X;خ CK*mȆJeZ&М CRu.VVm|,c6|t۞ 4V1Ь/$k2`ZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ,tu&i<PtCHNrAz )5i|<-rcaԴ8'LS3z\ճ9y'i@sZ5c% r!əAx vZ&М,+9vؾ nSƎ |i@sZ&FY%:8psLRcbhNsr ohд˱}~\0r)e5hɅ%,3}I"*sƑc߹$/t8%84r;^J=Kʃrw35νd9\b*⟘|D KJvƔDxHH<& 3/acKri@sZ` ϊM+%8%A9 B n"OrK)ʰN~ ˦e@v cS"WcG{HcZ&М ccu0PPaX̉ʱpT1ƚL9洌K7F`? a]!pX؎*%bLs 4e)vTH)|K1!x,|@yPZ&|},L8tszeZ$vsEr\{f,,/baudȴLBt~) 5K5[=V/!r gMA)͕SnPcbh>w Y jcB.{2!5E|^ֺ)2TeutLuj2=x@$T&em enBO[#B+V<`NwQ_,\MB޲,=Vj( ~j1S ^TfKsxR,$4(u<D4r>%%Ae͏$o0@J:5Ji]b`{K)04:BK(@4ǎg (_1SK0:-h~ll-&'%2]à:T&Yc̦-rᱍ1/߮CnDrئX./-U7˖egzJ dž( 11Vpҗ{)C 01F\xo>Nps)1cn0S.tgs`C ͌йrI5-tDn=X q#Uư\DS}5*K\rES4oؔOIsn B~ͮ*Ct4|.zT{j!٢=R.?1`1G.f:Er ˤk<* 甔pb{&m*`F=g/1T~ y_]kybHAo&Sǘ$ +֟b%Q%0tPĦQs+=c j9fXO`f0nE")M`RgLK!J魡pb ;L֜PZ~51 4t,@=*)Tn\pJGF"/u[ Н 2Gv[!]‡4d1liuNYa͈֘'erF]_ "S" >l="K7b`" 1gXY6a%w.}cؠ^xՍ؜ގDMIa\c?Bۢ:dp)٦܎.2 fD ' IDAT%Rs}E %tl5p]r01ǒ)cNTNIz C/SL41NWjK#cv~rm1.1+GƤ\Nju偉;9L/H^7.ISNʹ-)B7G|MCI\np\ĉ@rFL6"Bl?طҩh>9F,19&OdK@:cS,2u rzƲ.q~T<T:k,J L3O 4_I#+C4[5Kj"s@*Ԏe26wG`"/&q#!vrnf%Sb.c2A\.2 ׅzΪnXX dRjp6 ) ; 'O8 s1C|1wY:^+vCҡPv>lC|Oges=|QA`8KtWb+Wن\`Xe*qagPw =cH!rCIM!Ld"깥k|nztq6MPSo =X{*LR\O{~@eN؎!KWwJr r3ԹS*+"ܒ3zA3ǸJKB LDw("ń ҦQ(!dZYc%أI܌\`ݘ qu"3TlJoEB[DcLC0 ع;uf"WJ _dž%`/֒:3ҎVŠٹ@Yt [>$}d@D&""Dvccu05z}R#c7XH 3)P)#\BPsVc(crTVzE.i)6gsld",B%`9Ԝ2US0="z D/!C_bN^="xDUmwv s~Ҳ.nPc@,9ߡ, ?ayk^7O1vOyGBrkQcB0fBƨYA%>C 203yez?l/~ 34b" ӃLߤ 5qzɶfir L#4&)XQzNrlRr Z %)3kcLLX!z2{@#>}iQ/Np}9v܏5Kl Ojf1U\o̿EUm;]3WE0^2˜HHFb%%lQ֠)'LyKf `zXM%iRahL!NN͘1djS?xa?Ov}OnC۾̶1 d,?ݯ~KmzqR%.hd{IX̙Klj=~mL 7gTf9֨x̘_BkRM">E@ujSS83o1w]_v yHLOdjFU꫰/lފ 9ra-#M H] (i$nAB~KҘS,cpX )NM!##Әz ;Sps]em?fgw!3_L: 5^'2Y[|k.B-#sJ*i@! O0KKmPzя Qhu)g$QH4(m>N6KoQU4+ۮ^n]1$!vcs[@A 2[ߥ5l*N G!קFT:LGiP.3ͱ".+v^R?Yjۖ2Ǎ)Lu貓XjOjOs_f:]TlX$^H82ՆzK0ζ J8>]Ӱ;ʛQ88N;,y %\nԜ_6Os~ӵn"Rx0sJ/g+}|a?|?=e(KҠSE9po!t )$`|+_Fj7YخIԈ8&CԜރnۮp1kd Lbb Fc*_>zT5W\.w.rt3W.ɤ@:8͗޹ЭP -&XJppnNjPͫYuݬ~lkӀbRXwdžDa7?n{yɮ| 뎥T 1dSI}R"hl 'MJ<.QcMi! ɾ옞Փۦ gm,rmN o:cw>8玒>wf9ߑ]R=g ӵwb\jgq=?gm{&liђиM@4t'M%zJBczDT7TqooVnp)`ʿSyt;7G y^?P~VY]2/~_=>Pe` S1BR:;d^i7Seh)֘ c]F!%RU$?d߯O^ԫf~p+}nu[?i\%_ c@KcXcr)&@(=j i (WCu?:9W m 7L*x-0.+Kha%JXhJ$j:+RۦY+o4?{𣦪bmחo[vT{.=HJЬ CJtDsڣs,Zw"&SwT/1o1?k^ hˁOL7̕@9eLJ&{v)Y:'X4I %qE1W3 _y/vY|B.QUeE J85 9hاZ{3]仦߂m|Yc1ژh$&Y)MM,b©^glG;Z4/yxՋ?O?Kfyo{G@ف 1Jd1)s/ lqS ) >MŦ^fg?ξnxLv]rwJ)A#I !%(4C!P^cE cifvUSKmî]"m٤ :^:>%bz%|[QbW>T (o=Ve˹1W>sr'9"gsv~#p®'G3Pڃd!ԏp<c`y=3qs, }Q,2\kk;|R\o:c\P~L)R[ÝS.L G9KɆhLLQ!=Aӗūo:;{gL~ νlmo #f uǃ7]JvIDW~)ٟC0w`^QJ0ՋoSvlòQMsr@)sݗ?ɚۘ2\Xۗ3Z8_kN4D_@9:5M=}Ȝ] (M t1vunmRFXDc0sPLؤ`3?y`mVh/^|Qf)3!Ru]_݃gUWw,c g,AZ{NVd1,POUMG&cSe[[(uHnplIݛ KzKJJՏHo#h5 i9)MTGj1K3М1ρ@1]vu0Y%vBgUCYM=Hɟs* ҡ,' g 0C@Y}ǘuxC3?]Wv}/䄔 SGr(`%YRy6閁%ђ{ RdMfC+Y{mxN1_\wYt/>wdV< RɞXGLSʟy@*9w꛹$Q*.3掠l;ռ5{l?z>8qY c9P 4ǁhiyn3DhS@KqC:>7_&c7YTk%V] C YU9 å)AA(OrH6i Z 6BjƩ5!013J>5#@5V2UOE@]ꌞʄؖ14NSܦg'~}eE|.3>YإgM\H : }f\|LY cHѵTCMTes?=xJcz'N{&f׻H:77cd^Ec:@/CKS] ҫL/7Á١oh/=pw9J dJ/:s.fz:u j-e( |}IPNP3sfYu?Y0V˕/Ð1v-%>jc9p.) Y4!%ut''~g/3suּ6`P&|6 r6EKb 3Uz)CJ$|ds αtC:gN KiEsY<#jfvO~ کl{7B!NcB<,qS s[ӉH†2{,#+KNf^7T?% >w].-%`zpll2=`,Nʂ$P=" e5S=xZ :sJ4uǔ4gI9Ri(TKE/gПԹ0;e\ hB$3-A[cK+ ",cAa5?皓d j!އ١n-%`)v(O25_zWF~j$J藹P4܀fq X{!D[Ug>o^PwlgGCX},|>|>b<~k1e83N."emɮ fs@x19`u] sWW43vji[K0 x 8c\r.^d)@5`ʿDZNU5Ń_qcˆr+J/cskH<΀fiy0su1f+P7Dg~gh.]>= 0\Th6a6]R3<8j_YbdÌ 0RpDM7 ܃%b|# ;, hT:!?~* lN^b/?o]d]gh213J`wi>mUjFh!SuRs?:o4Kx&lߢxc(YiRgLYk^{&/@6;|w?0]w1T*@v7 \~`|}o ]3q1Χ@UMb,es zK(F ; P^XI9(75'>C-Ɯ~b~/Ū q-sYۣ[=:̘~)eG<$@WY]y1{q^o:X8I^D%[c t\w m@uu<;Ss18iGuHlˍ=2K>cX3OGȄйțkطO(d{7QUCto,=yn!\/`D9Pqz,LG3fno;c`{ Mj?WۢhFlH{8|CdEY\q6\>ev/C$1)YL@rg6zɅub.Wc%m_h,yu9{ ?g_;恵``m]0hOc\,X,899|>{XhqJM-p;1^o=˭, Yh>X;p='sw8BȤg3 9T4Zd.EPtjfɅ1tS.kHM}'$I1y[)c({K.ɀvw=䦮}ߏt,3A`!{}AwC"UVef\p\2Nkz KxZkQx:|r>S_ۤ}NC&(t"91zjd? @ Ux lq`2ƀkLߎevD?Rs\g &q=P([4HĜRfnE 4DXF4BDq:O\|S8B448oRUЈxϭͣѲt Cd%^&_ ˜^AOl_qV~4yeH3& Ld!5?Z|x2j:&pYP@A}W:DG~G4ruwu UvX0,UOK8lD*e%H}vs!µ K-Nr+ 2<=i32z)Eq< AT?9;y3Uտ̳u1Yt# ]4,eӃe\KyĂ ;$yK_ZbjVLj+G> @ANȈ ľ8!(|C^w^||>F~f.d/[ORռfM5W"ŪObGr@Y%fIkc, C#)cR%}L]{4_@݁Cߵpv:f k4}.Yn ^ʌʾu.:xX(|)C"B黥 $QPgDI8 %8URDUx n߅d$c|Lʉ^>_vl[BKnAɤT>d8bHR!D* ǑH0"sƒQwǍL}B3_ ᫒~scSvxLSwxF.e(s IDAT.2Om:||{98Y%ف ,3eǒUÃH~(p+,Mg|ɮ@W'~ӵo/5™[.^ Qyu0ejR&|<`޳_n-qߗI@*CE./@l%(>}MlQҢ0`^^n+%CGU dU!1zߥn\Cid3ORsK]m2tK #Řmh şݻL04O~x|-pnWŒ>y \4d$ruX%Q ;(+u >m*Q:fjq* 8oUcͮ)\Hh)i."ƙk97 &hiiPvr v G? 2o'!)v: d-%cp88 |óH%)>xCfSuʾZhKY{av; 0<]'D +T"䪳:>|T(\C m8f|]QNL!ifsO̶"S:kv|7scKn/7Ii@X ( q}T}kpտ !Z' C]M>,)5L{\,W*Sk: oisx:3ϊ/lcbaHT6G`g0yZ1{~# q g:F¯${oRf$~4H 8{jvˮ]"j0G4Д>k=x,ͻD{o|DFg^J{x7$6ة<B?>طIr9`J,% e;d:+-#IxqV=$Vŏ,ۀX#y)Z13Vq3#13|G;v2c1\pA8a qni: 1+e,ӓC/|-ᏱڕAޖC&Wd:o+9w ͌٠z F\!\ X"h.BjrT+Q9|µ/u8IZ^e:K]JT֥DZ*^ϯ6􆱌֞y?`<4N6<X'/`>n vlB94Ke0!/?+qn 9pj3DZK g$5v1h%Y"< 9IXNsrrg:HJi:ð^Kx}w3@"`9ZEqay4KTzT_MeTsVH\}6$mL(YxS+_:VU_?x|{~r\$ԱHeEQA{E qzC)r2*vnEE2{w 61ޤ;`L0!%6tmЗ|L;?F;xIGwK5^Έ WLjI G <^Qklmd,QL8>@'2-֎qȏШY#PjDWPs|< #}qr…մܿ3?1JaoН=|ܝ5Z=fDiz"nĀesHв4Z¹LMa!0<8mmt{'Z/̀k"K6{<-QRatg"CLx7ZJ=לD5K\%BS<8皀XΐfT I_aq2fI\"%H9^n5Ϧ 0<]]{YZ#+ҖȔÌOu_]{܄]9KڥY TRs0pco܍$*;\IZ\ Ve9wcb c~Hq,Ku$ %"Zo7H"R[ecSQN̝ZaCX}=<}zVŔ;jQg>&yi:dX` *|#GSO Mdڳ"565GzcZEi[VVy~ʧ8$&_WB!;):|&Bj cnj!/ό}0-@$LVJP( 9:'kpFyעLNS!q2iZ[[b>.K.EWrN׿I3|nyyTx)4)ɵޠdnLBGc3Mǵ1hʅ m:<_p%Lǹة|R/'b q:`.R-4%S]P+a08C88&v:R*@ ŀƮs "3kM@VgYEAY5qVFIAy\E+6޿Y<髋 @d}6rl^{||Z.tŔ0:txЫѶFNKG#S1xȌqoP8S:^ iP٨君b|8!7/O~ZT|.G]5rx=TzV.6=5qꌠk,ɩص; fO+R@ۡJi] AmQR{|uMЌ6g!Of:MvD)I)f~dyD{ D_ArIR8o}y]0SD#?L=\/vaXR1H* >wcx|$tX֪9 J р:!KZw)v 3:xǗw_&<_Xq6-RI.-Qy,`s]/<e™MP5㱆oQ/|xCmcBөA5ks9T+%gp 8,6zhg5I"SrǘKի+˴88t!YGGWb]Pl"fF,F:d51OM%kus˓֋ѹa<=TLMzk=(*'E!\<^_uғ#vlݩ;vG Uf[t.t=kCMZnQD rRQ߽"@Aѥ/$i2$-XuF▛R' (pE)FV_zͺ?gUvrt^sdVggǽQ҃LL#S)Z'F]/;<)vɈNRa;~:|*SgZ&ҿ89yg-'Aq|B'`AQz e\Myd*A4 |׉v6NWfC:_?CvD41"eДELnvY{-PQN>a? i bmj4f>S# -pI=qjTS+xjJ._)RS\HM/MTÇjcfSK{(VN+r{[%.otſdn/6szNfh@F2eHTXed K NH3k"oAn#ں7'06 e(`C()- KGЦuה57E%Dާq|w˫ڹ~D_%HjHS s&S\|].{Xp,S:@!uOžUkV$(]6arfF`:8Dai.o.sp(VH0c!#`ƫ]¤NtC?axwpoRoA9ZTDmHZ~9T@mZTAry_)O%kn hi/j6@t^~ 4eִ{rAqF΍HK/il( _[eaku_p|>n.s_m.\x̔AST.(ǧNҒrr$|m5 hN.Ԙ5Ŵv%p2N9?k:G3߱ϾuZ~%`8/7? h34 tź9(4`@5kfmд(Fݸ˰s;TȚĴe8ciq\cf~5rK7"&|:~#FXؖe\Uۤ#/`ǀلϭ=N#4XJH29,wu~2MN_rʫD_[-)֣9x֦D"̴X=XV$/T97:GgO>p=N+FZ#x]֦sz-8_2מ9˴(`Dǟ(}0~- RK=<j\e{q7\`\A8`ĭw89AgDol 5txu <4 b:y/EΆI.Dr H{ 3|ϩɤt)|<>\vNa.qV*u<}Y}k,RP8/xIU$iH%]K,X*7Ji+1w?mOO Α 2[dTu*'$ȗ+2-Z:έYks8kԀ|&`Fm737>iZy딴e E NK1/ F~|4GW(lzNJ2qw'nV !ok[䐔r\q q."~NNW˻xPX{vS?d=f2?y\¶`&`3Mxp,Ze8E}k B]{4HK J6 x? ֲc;1t;W ݷ&כDN=@xݐ %bׂ@GyWjQ9WqM$-H^{Y3b>ǎ~EX]7C!k(LbOE"CK]zo K,p%+0<C{bQ8wTʚ?9; lbbĦ&8g [ $.t- ~}ʾiSzŌ8 UA(mr3eɧv7f![5A6ŖWn|@ 64 a(3I}S.HCRTezaK]@Ԓ-c[᧤,Ims)#8|Y ʤ"K֣m0&9׊ 0d(@ nM=\&ej7@j՛BzRS9|6-x)8 f ?]X^J\M 3j93vqE;n0-i|T^5$S"O7Gi IDATlkf*ɛ#V19ƻ܍I|oGOQ`s6K\hCGK<ӦG)mr$- &f1-MzGnѴG)o 4"wd.HR)k]t)6&1&a"ƥ(z L\}"o=^R^$Ԕ1ivNO3K֌X6:\Yt|9OA 5pPN`Z845?s+|69<]Q7Ssy1ܥ֚&ˌPL7}@2SĹ!.əo}Tj 1p5~k 9 ?KwAGN qq[HA n BcnqmylZ `jiOwO$[Hkwk?wJ]ZMklnG)hu 3y' &@zt6XשQQVCs(tjGngV@ṫPkQRs+A2|(N"nNo^'`,pý#l.s2wIL"5-fO{NJYF53:ٓ~(dQ7w;k|DKE|xQmw`t֪aAWEk~bn}s]<? FmhrFOFrCpxR|zP hKA%[_$ЗYNf0?yR.Qfc.rhiVg0 cl~yyY+d1(wZsJyi4FB=xGe‘!ϺW p%8b1r{%!rF)2* =}IM$.J1k5$>k i7@,U-/dĶɮw2B@i,`w\0mfԐzR.UƆcc * >xrl9;?\ %V;flG4]Z>n*"` |ZNڢ&搩>5.o'k UR0Pc02\7CĶuf1wqpP\ez `Qt𐢇c ݘCEǬ y\bpbi "倷%؜YJf%ߩIyn>P)"bg]jc%KFmR5to7A `ެYd4ָL\^Sr)"io:du|͆x54en$@S iMlb3COOOw{agGW ƚ94i' KP+P)gT) ~55N30>srȽF`܂ÕbRfmz̜U (!Mm&b V{mΈ;ҕF8c=]9|4b#M:?/$UbfןQY *#Ԧs >M*TDr&;}Y3k[9=Z5%J)z̡Β&2iՄ"\6hA+|Hf-f‘kM-?`*7XgG,|wdx9 \K\眐jR}:,Q(k圮Ɩ.;<ԍ NL1}/5 `@{ /S{p)J5ZAPBi5Ө9+@UBGjiu!je wwIs6ZP9255O[(lm!*>\bu`CcQUhd!+KXg+PmԦEj>ӺMCMM i}ƇzLMF6`7j0p(ɩ9djoBb4J~51FrkjKzN8Qj'BŰM9,,7]2pK?$x2v51ɦBP\W〓cR~=$UZ#Щ0i&-7ϡ蚟ks);<$z.(͵8bzD/g@b} P̢9A%N.tf(4m}}+Hl=xB쐷GdS>]@lhgMF3̵ |N]JvkYc̩Vjsw-Y`謔so7)  n;WK{:%G9K?m]M,\PPsdžm!q5=ϥ֛K8eJqǥ-xQ2B5/!`iP!e\ȉEuXhAi.@C]F({ e5"Xj 1!'< G@"j ;4)ϘsmL9d2i!`;\F]L:K| R$, 2 $]irΈIۅ'}fd)m'm1ҭJ;jfւZ^sJ0%C] R(x4 3cu%3)ŝ DGg=*ļ\*iJCʜ<VRy/pd2-81\!<̥͆DD8bƑG 8g5XJTCj5-SBʍQ\3Z|0!`ʦPDOVPk6GK75)=1&HZT۵hḾ[AU=J,]B8c[!5Sml/]o?}ӗTN{(tX(385~<1#0SP +k3G^wN:\`W>Z3=jK9Q><#%Р3.Ŗn$3 s1p9\kbkB3Zbu+OpUڜRKܔ} jbi}^+rb.4$0cl!$O4Ǯ'9-y3gNO01#DZ,A1sR."}0V4MW^DxH,hV+g2>@pe[nFܨ uvQrzLTK!^CE NrZe%|P05UX33}J-Z-̌ɀIމ<"{Fe9PKsNZk))2 | _FAX1D(mbfx$v3kג6y,A8U|úmɤBV8+sfڶ}V]M=MI\8=xKط=KJYZvNNaiA.dL )iz"n@ n ;ty^aqN|w)EuPmȝcj('*-#i< QSFzoP|\sB>.-:*ld.JV܊Cl$Ɍvh3 Hmʧu{Xpߙ)NׄhZ zΌ֨c3>w1G25av|9)o|܊#M9/rbvLpP43b@.i<)@g ZhU -BI:a:`=e@ZAPw"]AYß5ݔ (iNF^ʢ0#`0ǼIВ'hH%kh[n9JԠ'"\q > ni0LBAbN̉͡t[ڬ&u`Yaq @X ]%Jy+U0FmjoJ *QYnqDs'{'=z`syܨ"1L|%?i :ˡ@1jFY Jx|eϩaej7Ms3y(KFSÔdԵGk[eSPkzk7y @uZ4~#M砶T׫ηT"ZH}Ib"Ʉ!G+l %.[m]qB[۾ (nUeQ,Fjea :|{\î=:'wF@~0{03ѺjB3q]d!Үڋz%yksW@4wHܖϕK`Q봞 H~-nPGh\Vĸ8<\fY)#"$W e 3J*mJI '6rKMdDt*Vy}%)bWf.uO]uZL,sǩ2bdЧB}ICK5[8MݚeH-ָ !IpjZN*Z܆,)[)^"7׫xo0v$x i7šew|6)O(w>vɥK֭eZsrq-7Ms Jx{ s|>yiG."5[^c|fTdѤyZɡEfLjCrqDIC]pS;68&g'WŋW JȤlD[AϢ1%>b_lੋmщv4^z$3]~x*8b-@zktdq MŦM"ƒ6oF{.MS/ko9k4OH-%RI-23:NXgRRA2OL3yiV NsEsD,#ߘnLj},CD,RרgdU[_ 48"ƉΈG֦?B`w5?Hpi$E 5spY\<+փ-sjnxU Zj*\G)I;i/Ry8O݈IK)RZC}JRXvY/2WRy2 Sd3oyAE9JE%2,RZZ8eZ :·5Œ'@WPIuִs9׻XU21b!i X,[ :ެy3vlD=Ҭ@2o-EOʌXYӏn0o CcM+ߨn25ZjH46,a.gpd9F&"EmDR ff\TzXEMADg?iqwEj*VVT *:NS;@T(]cRBKN(tϱ'#fޘbR AyLn|$Mjl>6F=$Cwk,hv`)}]0Tpȼ?yW63/ɲ [c' وۚߴc\ɜ!1 ]([ly瀲+3HsHxE׼9[.F[91Dp͎JH 6OCY){a"Hv k}6%ն89閖I?jQk=5vx)Ztnhw!O?YK/)LR,p{uRs褰8;jD%|,l Pd c$ITeHKmFZOԞ>}x7_r}wQ/p V`A8']"!Lii\&7k(Z. H9N5.Ds6x/.?:!~?ϛFJШϡ)=Jj{QvbD L8;[>3GDR LR(9 _.C~%f?4W04<06g(?AB\lS;6dML=({.H}噳uj 4j_[)bnv<-zLW232J8ug>Tȑ=C|IWDD \!xȪ$k~iDier3ٜn ԎwbN'8STgn2GPEFB[h'Jgr%~ @(۩ n4dc0PnA-M $޺W(C?ZobB\uQFbKLسց]y.ڜH !W8[^8Z(&-Ol&5cؑ! Pb\H.s25"C;F149c.ӵYYYCt'#?"ޯ?qagmZO"&g2wYjw#~jj [n 4W9%s*rdKwkSx9rI@`w`/_&'>[1O\>g<3558!%V!n$f]pΉ`\f0KFuCSS ҉5vp/#C"xt`Ԉ#Q&), \bи&I6[f^pwIy(E;M$ g幥hMK&LIרmL﹦%kiRHN9AN#%m?\K?SNӺ oOi㴫pbV9` YJsCj]o32bOLUW+&i)>UQglѠ=Y0A𸋲kϬ3[4nq#E. ١S vdybߵ$jexT$;AvךaÛCiX%.5vJգU܏w+%! VG˄jAQpRu4 ?IHKhzunrM8x |.*} Uć"nFG[i8#&j,̒%WG \6Y D y=$HS쭀qg;'MjFu/iA )Y# iGX>JJzńyvSs)RpOXatUu)9wԫMc(WTDL'|;F#IMR M:_7~^529cgE'2&Rl 9g桗`( s;j rZ4 fsƉbf}Q7R;SUS=3Aܑ c#z~9/\,_M2_?1kv8K+3tp"։fLV?ZXb85=)y`WCh\!ވۈysq6g۝Yr$ĠmZ5Ke~DTM"@NFcJ 0zp-#R7$FNC !"|;EA4vR=BYR%["ҨFUF 0bgРڹaZ*'o7&w~f?& =`: TK\fZX2WWsLyKN/e~Icm θ[?؎IKdOGHKYP- Rt\v$y@Cq!PUE HgyJ@æMF%9?su +|!IZE ˱߶=[+m>oiN]*8oYBߴv]x?iPTrpbK"OdBiŚgsd*c0iMn3zmaJ8- GY6)^HNZqq,)h>G!ع*G^܈] tB-b|'-EJ.|=cu4<oL#ܟUs=#%{\Vp.pH VŨMFvN:HӔ<>GE{lVP3h FhB *Eڈٜ.Ap{C8 3^EշC֢}k+CnA> X1! , xp%0Í9R?b< >-mb|0HraƗiwL80w+p\M?*:s-~rwR(FԹtx_'ģIa577ˮ BdAZHZN(4PNtrϫÚ\s$_"4A 0Āf熙5Z{k`MP ,'K-+}y?xs"'t+rX˘(Z*LxU6G4P>OX.IlIikeZ2 7EهY_hy&S AbeG4jkb )`|;<]8B:DZH@,"I̧d&.0 Ԧ9)`GS>!- 0dp 02 u9!y<::-tqK9Qs:QIZrD.CP}ΕVN(43re;IXBP E+t.j%)' $׆,٧{V*E)G4`7A)fiYh3.F"&,& c,iX)h79;6x6bcE}f47á_̸Kn^+3$HЏhpU 2`>>{e ()wפs^@6bxQ16pAb[&eJu۪[/iϧ[\>R+6? ?zFSD9Gվ^SR9РrX3kfѱod+apRW8-?f)cgU;xvVOg Y>vCGΩkg9Z# b>)/wQ S!Ӛi3wD`bXPlmdu'/3W xTd\S^í[]spgmP?]LeARf@=~w5[xJR+׀ٮ2е뺪A%N);a-- h\ D70 ^O:xm&-Îߗ; 2:-qYKx|-i]V0mAA.Aŵ5l%pZL ͵ɹ,Sh+qP52A3-\OgCZO{ZK"HBw/W}DIti]{j\hQ_Ǚ3FF} F4s^E_69Awng ֖NC [9uףIdt6uNΝmʖDUDذ߼E"h#gKsv3Tq"'5ʍ/Ԯv]^DhB֘̒RAJ'hQca7GGL AyVqڎ5?(wj _p3ct;Jxx(^2KNj]KsHenJ\i.^kQ76&JNaDć-w\[@}wGE&)w,䄆JCygﮂ8BUCE3琈)oZ3-ܩ[$'RG|{ JkMxMH߻;.YD0:crx-#SM+]Z45Ơx_rjm)7~>C~~{+f9[apfMOZĮ($p\''a,)9vLg)n-"[h2f(WZ))sJ =ެ4!?oK(6 /k&j| _"u2%[ u3?k(ݡu5kwi3d+OP!(:؞V\þyiVPj̍LMSNTB~I._$\Dp.8>ǍoS}kNw81qL{`%r㊎!d18< 2>>MHk'a+C{}T>τA/#5G^a#eV]{>"-|(PcL;:TNC\떓 )q(7"BJEM% HmL:4LYb:)~_X\wGWnR,b}P$lŸΏf4t)j}0vltK]tӡV{D>i9Ɨ#X}מÛAς5Zv:@$ع%w|ݯ6ZYj~p#h΅n7^ۈ 13-ai2oNm kA 8E-?InЍH [p`3!ipqp?5oLBS"\9-ќ4W}Ryj* Lό5Z├vi]M)}c[Ofj+ݣ$ape~!Fdk+p"P(-bzIURH sʜS:N{F͍~(!#xORӴӅ#4b ԍ4Sf0vXsmע"H b?IwD&rX{g{e.oY+hbϜyT IDATs17cE.eL"߇elT=\ ! ʔ\/P1h!Emc+>B웞k0 P0xT f ^Q8Z t#b&4s)ѹ5{x CvJ9 k\"='[>qDGľiqsˡs*_˴q#`vgƏ #.5SV}Y|O["޼<Űc"ҔTzkJJy5u*k*%2܁v9 AOkJbPDB'|̌wtrn(Etɳx;MAߧ<fk ѕ4$³hp ]~mi'lJ$)!-"#FnfrWxX,KJM@CV B9^3i,YrvFdfU^fi 0`#D$@HM>? e4J&$3HFXJa!3ݳtLwzUEu}ȼ'<Ya^UˉݏsiPO :M$ E5!ƌJZ$KSJl=@=ƙaNmB<ݵ,nvuNGڐ"zH UoNI@>\{cSJ#1FgEp/grZow~L1|nQ6Na~d/63:^r+|1l>uJ*npͷu}HaL%}3x NYr~/3N;&qBKY[A3Q9*B\QL D"ø.bWu=Ao \I+Pv͉ wI[Wg-bx; c!q /BeZ1c$1 (_uK\F\5a'7l皷mP˼B{J 24΁BcL|ّˀbARq Ϙm(#]Q2HGkny}#7 pR/Z6S9X~[k8BBwEt(~|5 q 7"LIU'Tq-P/ WGY! 雉yF/E>< ۡ2e$.y +88"[(Bd̹(U2_n H(>~RS݈v<4kSD&mDd'xBV]ITn@K?h faXaى 2ozcP8<_@OTO#',w$c1ϻ~ .ubxB-Z#c+oQ%r_Vb@ګ|&o0{C qG6{ J@(dXh)ੈ $~##X>>^-,V7[q,َxr΋s9ز#=o;.;GWjM8|_w*eKbJyg:? @-~Yq\YZ[|2(aB V}o1tay!CIQ` jQ)+Hz@ +MJDfI׬e8 EEb FB'ͨ_߿:^JRHbc:4h~(j%.ծ7oG6oI>I$7ơ#ݿc>il_7Xc*/ŵ *]pʎ"DAYb şaƴX30n![ʅi2nLhC '':Kȶ猆ͅiνHP_io@L 5HxnS(IC W+,!DS!׀b8JjVǀ|!'"7dfz'|  l{`2.pEx-~-~-"0=1mh"I ! +&ȡ2 8Po*$L,7Bګ|9gn/H\pXw0^uZ;' n;hT6BS&݈5o/dqu=|SUeHaaN_{,#D}xT%iΞ9KT8K:Pa~YZ "-^n=5K,7d_p ZQ:jhr G1|NUO6SOi$Qjwo!CGTp bAQHI6q0 کbM)KhH*nN-%=cGh}H0҄ZUqhTΒˑm 5<CRdwLt Z%+C8,E}A,Y) #K͔Ilo{)Slӎ$PWݻБ`Q E28t@pwo1~,iy†7{Wi[}@b\r Wp {-Eg۶i,Jz|_t_nX# N:z=a =w ΋GO wp?,0M`xL-fN,f{p06߆t= %Y}qvG<0.n LݥѽZG%b5$&I YZOSxm{ P6F,ul>EȆNeMGgJ|>yt<ꠇ[첱ɾo]JxU_ [G=藱"MKZvʖ F;{~Ml'F ٬QvxCa([bv$䁁J*,,hؤ7 ɢi6$}1Wʠ_kV8Zɀvw,8Hn#J0;&[4K\UBø sȳosId+4HT26q"Y}}|#;y3e53S^ @7[awo @gBd0-u_gBT 0NUnQ$9-<4ϜY%iQ:;- ܆ nQ'TKʞ;h$r5ɛǙ)bk*1\,%w44Ka~SB -0NK Cx@Lr9 tnY,Bq)qݑqJs(C+NMHDƞE>{D+6-^xvVz%F~ZCdCNnQa?.#zHLcR8!N}?6CCx K3>1W=?h7@ȶn- ٌSĒu8*M K~.˔JbZgJʍxWufOl wyZE#M.98g{ɄP惱}Q6~JkМ)kvGBcHL(9}QFDU 9X#MGN[n[ P;R8 c%DO4^vF}cKD=B!XZ 8j_枫IBI&DB"PiLr}jXbkxV@pHS0ݘEi&.˹|sG1d;fE"ĊdM\ܩǷ=~ᏴhkS㶷"t dqQ?|GG/ȥ<.;"'6f{.١}K {bi~s ]ƈD(Uq,AS3ڤT5@Xt&ToM S/I]aUZTN՟7hm)k9 [+8/=Z7#gL::kW"Ҧm;I3 xU6Og xwx@tQ=Lk'v4N9jT,4|B6h8?UX71/Kfؕ5C"L\Pk@4P=n EgYs1I$=ᦂ(Ag e=>{ß~oLJE\|,6S}Y6 Vݷue@5E!68AZ; C;ʢ j6|H'gh^Y3MɄ|S cy0l.#|y:Ol1n;twE,+ "!GwQ c+90N=ǐv8^I?uOz(N#LQߜ?rFgHvvz|{|k_Pl"2 4_BfҬ~]ڄ0@k% {g Prq-gx΄;b֓bRj$?|ޠY*%R­Ld٠ &ΉB[8i\(,8sZg5S褀2 ?MvC]+@U4b===D;|KjNIu\_ڭ߃ #eotK!yGo(s3zcdʔv[s)GdRJԚkc$h]seyk:Yn[ {z3tko?1wM3]nCWIi/rhR8o˝JHOP@VQ/ހ sX@_T^ 0x*Pܫǝ(>Uٛ@&l)L Z%/NUP#b`syqΖQVq|u ]+]BL[x,? D(K5]NTZ!ZZOk2~~SnK>z~cso44 =mipoB_ i/:A4`۩yiOR|:@1@Tq/{`%oSjR Pt#P{x~tdXt%Sf); I i Fuv۩Ipu0xC#Bh\ 8M{smu |RxM3Bf=WW Sf at1%[U~:|pwDac'XOtw{},$IB81on8ҎH]8xZe5h 8cw@1VFJ,IhkTgaT!,DP.{CɠB\5;$BTB"feA1Vw)X'%;$89QzFa\Sh^[ɝ|cҴixlфXv=Zd&l-%MR:`[W[ qL2=e=ګoag=B >r 2rǽY]:5sTyw}if9F%]&$1i`G IDAT6AlsAN~b<ْqOG~hO^=5⚕tP>(u32"/j2SJ%ZswgXe`ij[Hcvm  =qo@!@7,CQ)#7rg$׀"Ǯ'IkN{@,xn30ʹ쓭^s^1l̶zYwkxq9P(M iJR2x(Ubm9ksLfY53S~J%|\!{ڭ߇X㼬yo8[" =%BGPK`z|\Nch92,hBf@ZLB(D_Xfk$<o755513q8&g]kKm R3jk % >{Tf>hw.ES-iFOxL͈͈mRhM u.N#L3\4KQ*hP>愢Yg.IƝBl#]H}8~. nU9t]gM1Xa%Zc7*s<|yJ<564-Tګ:쿍CVnXR"s!"!݊8rPJDr~BGN37HM*q`/:KS*S>0ގ`SbgBk&"FX2c'ҴW#|p!+!N K%Dd2}/f1HwM"G0!lOKŸR 4  myQ,H&ʧ /hKbp@u1Vl)^`Mބ屾tf.5#8c:zh]G/M'ޤz9'j/l36D,ڜ `%[,Sl2,/M;|گ߇=)Lra\ɦPIw@H ts!!2Tt*0}iA3I΍[c0ôa:0n<1.@;@t" p 8pnl Ys?~4KLT+]KYL='P&kUګ;;o>y1xlu.&TD۴)s]c")k_)̕$Lz\H&= PvFq 3Zт? چ&rr6{Hw(k;4+4l]JtΒ֗5%j kA%n+?m /M^p|{fzA2K|{;{{b͈Y0 -M|%@3%K,3W؞[ {rq*}=m s` [kՁg]X_?(4s7vsO0 fK ia!NnXK@w ({쌝ضh cɜ`tщG ̄@9 IDnM9XsqO:{^'5IR߿aS I>:+SM2^ޓ0~k&ݙyϝAC ̅K& hʏrY{}͚DQpBvN DT|Ce'u89ҤriTp<>=>NLKE\~`]y&v1`Ÿ6smǖo(K av͛fA~"5Ji{lD2JaHpt qDf\=B 87aM1x<~ED|'v!DQ3>D>cK*ܢk?P߽ =Jߞބ}D{ "bO) 5qY"Z҄W4a1 (%\%ʆ\u\ɝA!PzǸ-s0*OL-7K^4Дʰ$VJe=>JnFYq`O2@q^ Hf+府4Ƅ {g>~آi-[^;H+ µC= O~Tc.knfpƶoaDݞ޳!cg99sH}(_TY! "]=@.{_3nkBm0vD0+9s_ ۍov!4 Uy)q??:Clf<Ǽb!o`v h-{<mƆBtOzhJrV=V+-1A3SNq|GapRf b$ːqd6$ Ɍ'8/u)#Ik1] -0Q|k~}FE/RDZ7bUz8w Tnd:Y9\`ul6xJũ>30->cGDJ@h p=@|ZC rA{K > c0Rߧ$548{n| U<JcE){s,/hlaV[5`i;v@}y@C<$*C`(,[ElcW 4V*m7&=oȍ°ʔē cyip 3a`YKk۟K4/y|7;{o&xog@u0Rq2aP65aXEcFjF;$wI)W 'XR oH`*)30;3B R=}ik!'3ݚCXi̠9jpH2'w*,CD wX|1/_e<ĵ| -/'G`$>s0΀gq&aY:bnXrj9)o 'yð2HsSgx{<'A ±1%XYb/s965%,(e=!ì/;8B̜t%I{¢TtH])$f5sLn yp?w b>尗=1CKC4䡦8L НFl !`^BEK,p>B&$"”>2i `˕\|$)y|\.ؖ~R:UjHwXMJ -i֭e[qB!{yJ!w(ǩ,?эa< }b_yS!l ܆B+[۷޳øgAwrܴ5'g)j+=kGcW.\}=2ayy&!rcMpc[ry[1 YmΰopJlp2`쩰K3tǸYo*Ϲ4?',-b$Ά/  'wqxqh|ljc o! ^ 7B8_b|MUImwKK2:,GJ.\0ø90v9 %r:byW7&{ο^eb[%BUMI X ,1'"plp* b(Һ 7UHv,`n"%br+2RC}14usH9ȱ/$g 溦aC̲e +h  wF#1PϠSњDH,˯p>"K|{3\o]r%UúK}JJ]WPuwؓrK%O~ -NA\FR4f|E[ pZg"o]j"iH/eclA̷ͰR;fW.lrJJnu@J]RI3,57ꖜsP-ʁa2,<>=rowqp0\|)dD“(6a<͆N<#Ά=B؞Rcnan9v hnNk4xX8< k3Q4]1.:k0sG°hIe<#J 5ab,jT;H*1b)Vj&EݛϣX@>)ΡMR 4_Ð= ;gXlז\<#\e#7.@3Ŧr5LM a^KtL:]Q5z%foal'ݒ }||= tX`-̦b7'`Bk5Q32kϠYoV|.I\[l ى$on b7}@\j> I0/ 0Jl2Kڱ1cgɵ/ -&}20Pt~O-qّǸӧŸt.v Yc!{M X ÃqZ4ʠP|y-)wtOu[];& B i@smB9[i(1!4IiGV3ps|G8YuG@]clF<_TNtqbpoX1cgЬk@g/x$k-ƭM7`oρ>g$ K# rl*^*BO)vA Ux\X?@NFOkO੤rǁ@uS་QNeq925_'UESӒr:BH q!7KxC7N%7c`q]h2fQLF)Q>mE* IDATF\--X(IZ۵#vɵx-*uZYٞ-kցi2/+2YguZ]k-=i\v5t0%0gy>ŸF?9/)KFroL} 3`Π<hlxnpYŮ1$FdE Z`wֲd^D{H~z_`\Ὥ^p>PoKDkO:jk yDoN3COqo8K3"c` ϕuN-c 8G`Yyw&, qΰ.F8*ėDǘi18#!6Ľg3<؇^wtC=>ط #|BLT(opi5#һ;g9d4/eMI DBfO;`:1h) 6{~wP {b̸N> z^fhи`=h 3[ l E~qE^6%N pQ-軴F.h1._ 3fg#݂ϮQ9,1qC2+ZC?!͑u;;s.VrOց,p^H'qOci킃y;<}>ݜg:&; þ^S#& tA0Q=;ҋ ;kƁ!>=-LC+da\Qqa}!Ʃ;%{BO/`b+;]:34_=%ʏb&j8c-c Mu@@%;| z Mɜܺ {#O kޖ~sR`ӭfM2lcb,ZNSnb}C̙#4^JY|h^Ͼ,|(`s=ܖ Yw%-- Mo(YFoR8ŭ(Zswؒ.%ƽ螴cND>"õvۼ̠h`?Jp˅$TϹ7.%Vf4!bNQxvHhlV61x0!N΁iEp!vϭI } ώCo1-}dJnP <{bAd%I##6(o9.>=ĉ7msg׆jZL#o:}Ǜ k]s8-Z}rq LOl0h1Cؾ_rOۿ P|`kX{G?;2Ǐ \?"' W=IJe`: 2c(9eW>t ivwpxg0{o4p7$7q!wyOqJ<#rM}qa}Ȅ۞ h{`7-G+zSIgfBkGn3hK@c362Q1N[)$gP(2K %s-O{`2ݑ 疴Y|4GQȖo%Pn2nإ }6sGvSںy/yyq";ك.T Zzߞ@䚘Dn0v? {b.+O0._R`z@ xCW47q* ]BA O qo0c 3Ӝ 3nk{f\{Di*~!\=PgxObk{B07O>%Yi4C`1ؒteX Nnla<hOrBH:qo|ghD 3heʬ۰2g[:;5qbo>O9F.n0..J, \cܛγBAB{3\0*x5aw[-1#(ͽ= ?lCe?ΞB~Y+ݤBQ`o mMH$v[8Bɯ]Zs%0Pκ4S(^0y9[̭0d=07%4\tEqcX%g(T"pF3,]<1SdOc4DO̹%pl5o."!R|{GMGs(>3yX'nqs7&N"cnWn3&0 }RyFȸ-r -zJ@ uO@H77(ƽHf9漼46y. BX N7Qy$u 1'sF0?ˉmo'΀9漼 Fj)k;,I4q^RzbW@ fg;vJslGf)'x*Ƶ1rȗp5hCEcx服,bzl2`pn;׀\4/3hˣϗܰ835ʖBy[I2NMa\˼̠9/9hns42`<˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼˼TK̷s^e^ǼG.\Z'vЉ9^gX%nSc;fb1/3|͏sjϔ#-0C$@` `2֩Lvjm^fМ K5V) /ݮҶjǀ_(+L 5sщf^fМְ㌽?Xh H+d,M%[]On;jo2| 95ܮ,7A]vZ'J c(%KL3h v5Ma&xI0̳BSȂ(bwʛ xy T$L`SY3R.8ʅ@ZJdfi}93 g P,2e? J 1c.-]}yy@[jUlFJIb*P>ˆ5E)~P\3h\ܴ"N:JOoIfRoxMxXK<SM֧EWJϙi^ TMOtfJO.,a5lm<Ιꍟ"$f94>5a藔$M--#1(-65eQu5C7RH~ h :k/k (O=Vp(mK!Z@kjˋJ̠Jd \E( Q cSʁ,|+}DJxƺc \$| rPWY*뚗4_ZR ʱ6<%dY)!e1w| ȧM-j˧S"| KYMlO֟OE}_&|Ծ}Ob70sӖK&H ʄKk23zG0sbpu-55S8tKհR%jz4_}Y^@uk?/qaZx*tS%ws>|)9#VO KɱkK2 R%Aq%pK~jBJpcG%[_S,AɬGW_اZqLc|%>}dX|434_}b[5B93UrйF5.:X߾ kCZC#Lޣ\KZ*s2ȼ̠췚( /Z,WbP7v9 n$>VV{A%T&K&\s9!ּwf.s72۹ʚAiRV7;Dz˵J[8sYWĊK3sy,6ef*1Ri`j ^= .W<YyTirSPؾߡ>XJ2@)ZrOesWS,H+3ZX_ ;7B$Ityf5)қ=HE5K[M*WS{%  9p)0gQ>KI ps ˬi+@*H5a{JOT;HrDXJj|-sL n\,]sb}],)e@tjwfT#R!j r^32Q Q(沮/UYjKaXOes/4uJm (AdZSwwwMJ]a0,$#KY'R$n %]2J/N)?)T kJ&Ym k*kn 3KY%R(2K^hm5cg.խTӖX*9f4\D_ń?k0.q+i@(;&=K@yÌ@`0s(J&z\.˾Kl2,kkn$k[8Y =3W R߱Šp95--_[#Zbc%J2aC=L1֨PFS*RG08_a@m1MW bZt)ݦʍ4q@⻼vIhNyn-K-v@>9'RCfnO΅ N.rc(E@8ҩ>xHM3 }X{=6k39LS{3h߯n*J(j4oMJ P?#/%\FQ(/ 2TS)_yrʸؒBԊ+yATS K5sJĶ;m~tKZx&s˕!ʑr]k⦢ys]/$e+pa)7 A}%`6Lm{9v\44Y<& b>VD @i4m $ޙk$77!]GZ5RO:Q1ʚ`ʵV3t_$694v2y:v)YRJ6m#h{@"Y-V.^'3~9  T?T?ax6lo{`8@},O4ktP-O5cuOJԩsg|Km6*}@ss5Kű`4;%!A=,p'bUQW_~|wṀ=}q=D7!= 7n wg- ,ÐflN?Z6$NT0X$n:3h~rJk+Aj]sjlljcUX:k.w䝫bspͯw  D /kTtD\bXy@aIS@8VU )V,4?м9uXZ*4&ԇ.KEBZ( @]}]ޑ5uݯw@ Tq{i?v;Au(0GTO}ְ9ZcZл(4?]9%Rsї֗+M,iDJ[U,S]X9%t7ͷKP~k~R?8>7;=<6Y="p4?vϡ]o:ջ#3șĐ['NZMui/3enw)5J];9wvVW|;5Myzu7CwaI/E6i.( ,?v i^q IDATCbI\*DPh5cK3k]^b4Q?vS>gm&2wӔn1=sixg_3uw_~PiZLrT\vMiW6G@Kl425%E9 V2lv ;uOc oP)3Izc|5_\wdy4H>u5e K8=sk OmF?L)`zBL=_3.i>s1K& S sMj9Kfn.?Uዷ~v׿oC_5߯\vOaA0 DC]TR߫bG30Z+T&6)%T:˔6tME\O-XSdBdWM œ~Y[~~߯=Td }ι$cυ˅.]#j)7Nf471Q|b)46.kY,u<xnꉅ^'kqWon,m~cX~aP:_;{MZ齏},GOur+տa>rF%hש=553h>bR!mQn.KGp6r%Xj2[&St 0cƩa{<=}󿆓of %s.I)WҠy?$$0Kg$[fj`VxC/>y9{2 4RU9 ةy"h Ry%5TFyaͩ́ T +sR)Zzu>[ }p۸Ky>n OLdUUf*h҈0r%Kcsg=I0gmj S 44%W1tݿi9~RkHLcS"a?hd׋',=6%BOnv.׻ן=uW7e,O>zk9܉s)5kf XuI0c.߬ckWyszkKr;c,̓ȁꝕ?QKC\bX?.9ohS{d?/(T:fB'U]2x,j}KM7?Qs#wf.;춋e!x4cc6i}~kcol3D3n7.4JKSجRj;4_^Q73>5zb@8)۩P %C%/ S5c̜#n%S$W^9f0_оz`je0,SK1XˊXW̥+TM[)Lpj[RRI)%r@sZ-.9|6U E9ZbMS?硂۵лdS'u7vog3n;^ :`*h$Aq>cX`X`gggX,J=Spz`dȼ!$2ow̾3d1tӒ2eU9zƷk%*޿BA[rS#+6xL)3?LsPjk, HynF;{_x}&k{VdžNip=?|p4~ YfSK)1} \rxu1ϸ'NϤ8`1ahzKӫl/́&؇ ^D[ T2@ 51<2.Q ER&';Y-hVH>F ;L"@dO #n<'o/7?mupP#- bL8i]K:^m93' Jf˩chۭLp&PÈLښW\ypuY sfޔPIdBs\j{:~OIB ?7@-1yӤ?K ߵǸ aqj(Jpz_0eǑV O" 6,KfiflQc=Pcu֌1*=Q& N6 WI%4o4yFDHIf0O[pxD8Rc=JApBsꝗ|W)Gg0O}6JJgvOPf (#%ny)+_Ņ)@]"y=6'L:2 SLfԇӘe4>Z+kQKzsF|heocSHk)0jϡ 8ܣ D8DRy#RݠRkLV˴un:>Va ϰ{Z$sq~sƳ$b.`}Y0{gP|=>=Bc:f|k0=xjay> K$%\^59Z DՀ}j# npxČ5u똩;0vvAL_a([wعojhSnTR˄_) "j^{U_x_za_bQ7fqZQ< *{t=>e7`IDmRaPvws$<J;Qx<'AOR"ZMI&э 3%80жp.잪SLe?+>ūon?$аEEjE7$hR/uJcXKV)GE6*wޫw; ̷۪f=ld}G%Ʌk}|>0MY*)ӉduWri>{ƽu[k$}Au$i9)[ERh592W|pT #j #.-Su6*P7T͟fVO @#uVo+aKtܛ˥,$P h+l7Lt~+; }nMf1JAiqmBk]J !xuʲAW_rPgmnz,5bMYo0HI Y؀,9U.PFa5a1OZצE 7^@_4HsS*euV2vg% vϔuHҮK/^^{/џbFI/R>OU>TuL-,Cj G_2I 2K{A n7 -ֆ"x- hiX'1JI"I=^vuXҋ.TouqwIQ +Xuɡֻ_ oVY \A~Cgrf>Mu DLNޙď;WGI0f4%ևG|Lcs1c*}zД)E1` 3=v'W,=qϘhjDPĩf/ȝ R IWQ1jĘO*oITT3$9܅CQg@ƺJuߧz.~1 Fؽ99<x$@۠#W\rfgc\3(o]sWh7܁fmk}Çm>&$K=`ڥ S3f.=ozW|XDj^v8HN4Zi~kk1V>倻?9GP^9W<´4i5|/}I2b9)D\L*dx@ \Md7!  ܁Vsz ˵V>w\70e*4}3c{ģO%ule=`.[1W?sۮV8%G8bƱoaXDF wam}"1a99شrĀj2"A^*C3 Ը@_oq5rqEmAR#C_auԋ_i_ c\Q$d<"K&%~X5,Bw 4b[;P>kyZzޥv\F,vчᔝ*s޻xN5 a;MM86o=nHO2}X5^Z3ap{ݏe;D&0WP#G/`,qk֠mQEYԲ&MΟp5: WpAPI`diD pDx~V L{R+ӌ3K9Ij[X]+ů߃^ C\h*?k8۳d~\ҔTK؝Ab:րνWy_%DD 37}zѣ.,c-bG)yqUj0̅8D15mDO2G9 n5 }b3RrgtɭѦ< >1~o){01UoȎJrk^QA@ Q.)ah}0ᤛ`7!Ln:Y; IDAT 1\QJE,.rTjK"2mܬs@ Ӕwh~#W~JMZ6c}|ҋsp;6{0]2͸e,[6xaT]=fu4X‰q,-ch1<O8[hh 9p)ŬZ[o{{nY)qጤ@RyK{ό~P1c5A*kFKDxκ4vmm.E0Lwv{auekRE [ ۩dy OP~ǘ&&1Ë dtK|HH&)S48ы[/?7;z `EC LJ:r"8Cǔ,S6)+}z\M .NF8,4fˉf=67Y!!4EqSs?:Il2r 4RAɬWH]\LFfU]wOoBV X/Oڰ0,Wuc`) ]JbvٗD^_7ium484 Fb40oğr?_ߣv$.O5n PfSp`FwcӴ_%GQ@DoNJR[>iF;[rX;̣Rax%ckJܢl~"Pldv\5b4?{]UvS G[/>z >y4Ы~v 0#S7 ^Vm"qσ>QOO;3\Rҧ1xbZ S`o"{1cN6P I-""\&i@{+`_ |e4\Ho]a;4K/Ս=[N-&Scbornua#3׏K?kQZ1 s ݕ'8 ͇)Ed 3AW7dR.hkjRjL5>qP%&Q|?p@fZx;s@3z+F["D]JR]x}G@J3p`kϖ KFW@(IT-p.,.^~D"/3>xîGeܑ咲4\ԇRnjYf=>w*Ь9@[L!| <`)r54d}iIe%oDxӽ}`fH6ubB(BKj>UjmC ETu Ȝ"J *yC2ǒss+Ô ,.oDϢ9Oߒ^=AɄq3 ϺG s>ri nM[7E*ȜJʶ2.S$O9幐3AMRS`oiG.u]I)ZydCȑe8oJ 'ܵz~yFjCdP6G^>0%MznKJg<ly_-~Uo͖%oJXNɰ<.u̾ruO_"٧5oB A94!1bnv|<749Rb”$b@Jp/R,?g]ޅA9`pnyٕG *U8awEϩ 9\V3E8g/Adz#e] Cz[Z";n~+K@gYfsz)ףo[Ġ?fT%rSBV gP9`4ё%h5b, Y`JG lR:f.G @kS.Q%F1Gg8f \%KMSU7Ź/) 6.ҜMt3e|GSmJ'%BT*mֻ[U5 i) ˛C'@sڱL揖^W2H?2,_V3q{3KqY1&*{ۍhn ,RYܥI3s9sϢZcW0L֛DVs$Zer67 {O']7[9_hmO\**ssžiJr0$#OsI|'W6~{4#VQJ%eSap\똒eJ { ΅ +m <|+4x/҈r@''84ϔ\0%T-=xX8F..|"qA rQ@ Xf1Lk#KB@t^RK"*:>u.JC2m3lqw0ʵjQ3◜c^vQVA]jmks`R5-.W7lE4G` RL)5h5g>nƕ$ۆ{3~~ۯkpB([Rhl&~jtܱZ 1V^yz8QlFd |/pj>j66}˟.Se0u: =*& RݗJUӜe؟ 27Z.CIwv~# #.' <dX':V"zei4Nt"-^㫎GMp%ZaIXrۧ$k׳u+}y" _GhGnFq [Q Ax L4mN,%Z,XaVZmڮ6 7wݿGp\v,f~y^%Xf?Bv],]rDM$3kzݒ%0tO`?Lk1Y@30c)5{LI)c}r>1ΤK+YޏphJLj٤iMTܬd鶲SƍKI gsωYg Z=a2z[ʭ&rjk`8x:ZyMg fXΌn )gzvCdVNIÇV3E"$-wj/Of~ M~%mZ7]85 >Ʒ!4ˏÏ)\R=jH KpH=$dF2X-Cgh1{[3g]{jUarkfjY&x=8}ÎxY[=^n<^Z8)Kɑ}b)? ~h4)A%:cs:]uJșc9>GP|v>sf#3SҚ9f뚛O^=+:g*~J+- {čHZ)hZݎS`˙beH RCeӒ'rs?DfS|&e Y=oߺ֓WeJV٧*ya<~׈#KiZ3F$b !$~RaVS갧B4 ? K6ƗRd͂7z*6$L nN?Epj.f1|Jugi?jS&8 u-i (Ei~mP3` ~u^/L63 SNa3;>V[1iX}ya0C9i]Y]eF:Dz~p7|2O;m ri,sNc sj!rWAbϸŅ]R=n"zh8F$)LDk(w-5α8ėw͝zpOGmGXW'mL2`:Zhek:fro{>#B4bke]rRc#R!Җq}8՝.5RGJӍ?$q˾\n)SF٦6UQN+9jjd< S.F d)pZi)J@4SvsdtED0Z4% fdf7HV!55MSƦw7/S rɩp5ǜj•;~ }G1VlV8lR<1ӬZMA3__O)fh{WL@IZ>:(rKRX ViN6ȹfU xL6m.06U$=!dsp&@q;!ܬgf.JDif9aF[`=KoW@Kq0V20"WjrpkP9X|[14[sHʹq244Fƀ٧,˾GҸz oP@SpKBM2-yB KkU{SiiCc='7y&eucюKf][;&Ͱ_jqn?Z)dZ9P,K?g9s^蘤KפV1n f/Յ4-xW]uMۿtUjZǩ皀 qi1Lco| R~Yc5k9f[:6M1:"L"eS|ƕDަGԥk+g~ELHOPT.95< s蝚뒖1N/hTUs_qcд_Ðe0JP$hBMc J;P|lO}]:{Lx=3M g9@@.TʦSK"4hpG:³R9yQWx+I[ܬ·?Y 'Z7Bm}42_I"e(<3mR`d!~GTgޏq]$ j^uy넌a=vlhL32C( 3vB*TiञiJ ph%~Kc r_6}p,Gq3REZ9دf Wl> 06*܊ CGs~OS{ w+tPr[TB& *.Y}w_dGkƙ;W#nijBpTڄ8:9;riTdTչOD[a фJ麲kI3NfҍyFE\6FX ܸ̈́ kNa0gUX9֖Ԁ!O1J:wx#4&7,sl>9j}[詿g? !:c(ϙ2c]uL,i7 p\8+N= 1T5t>ej' ?1J4K1O"}-3ѥR̤bMFJq:]jc5Ș (^& 2B\5Oj-!-]%_?~a[/fxfe>bJC)bk$T>_Iƶ|?a/*1&KZswiejbг }'am~JM`90j9cuŨڦo`'x2!0%(wRL$rr8%{΄ӴOGF(BV"hL 8>F0ICjJxρ$c\6O3ASi!! >$c̀I5chKZB2m2-ی٬ 6qI%qDy=ҺK4TY{m략449-yl*uhXmO:= R3aǒ4|"-0Dj 0%6dJ\bZǭja Z7$_7΋8A`3fC=`}.ՠCIS3_R=* }mMr܌wL)>%Ɛ%Sc2JM>SXj>"r5erʮs4G\ֳ 49/ kU,KZyj-ڛj"m4E*~-%׀h'#ʰ=1OS K 1G&ykXw31y8KwTu.L.r%S+e2eN ȁ8M.Ƿ Ns@ŀ֙AoF7kl>+e#bZٰ#CQ) s׌j1`& B%|v)-=S^`G#"<&XJBBjqҳg Rv?GT_H,M]8Hjhv;>uTc] Cq5b81~8W+aO1E8,sg ϙQ@~dl--R4&JMXs\b6[m3V:=2଴&YZi5wl9Kv\g 9x8TÑubK 6*WmQjwvՐӆ8*Nޕi5vM*2f!g tƁS;9]`Mu;g_sMM⇢ lkXiEXWpX* ƱJ96hMU{ścZQis):SB9k/0Uqx/Q\RY8ϥ7h"V'Ή~VzIi}$ȁu J9)adm /e$PkaR*NJ] f@X/N`a65M+LAҠA{N 3@l_ joڇ2g@\9?=4Bwh0'X 7N.ݘ&iD8u&LI/,F;0MFY)hS{Ԫu'V4+o!j®)' @E&Nv`=X*!<\1\'w ⤒[Ҽ7c4bv(ƕgv$gJ(X ޖIu,$Ҳ:?> qf\᳨1?#K.9QI/lfAy;"ɝcjZl!sWׯJ z%g m -7긞sR]cA7ko+w4a&I4iݼA5,[+UBoukWgӀLI)=5S6᳷xAnwjk#TkH%ݔ9B+ ffLzw:JeT sHOԺ[` 98RW( \&gv0MDf.pȪ\jX )>!'0͔9l YMgfE23yd]I1hyD=pftbvW])CG:9G[f)!Ԃor{FV2L%&Vh$_T R,@(晥&CjA̖\og=6Oy_G@!ԸH%L->cZ;mϼ Bog+s3к.5alC/ŌpK F4 6kA\iZ@=W*auIm]PV9b n[de\IlO9RӴ;Ga{ NMFCL(KKM-,)3La6LmӢP%ܥՏ&[MMOJ8b:<9B4,O~$%p:]59 ? 'kH T%0j/b& ]A٬`gGc5a%B pUkKLNt Eg UKMnE)jIzHp ?.E8A\ #"\! YZ|"Mݏ1Vn}ΡV>p#Q'O, p"ڒȊZtA FE#]iu9֛͞r(DHMR:ޏ/9 .59c5Pցhꐴ%S+k`Q*$4LkC(<8f|t)V߭(j^]- uڤ>~}a 13a++d@2ICNGKJn&/Z=0Na-kDOR@;؁zf,*= N鐒J^¤RO]J˟A(<"UN?0ABA~VCseLOF!C=v%~! PkwĢZФla)g`x~fBoUmpicry2t,j}%fUnSϜ)] 7L yʆ1Q'J" Km#vXb8,,sRJ ¸:(X R%He $- Mq 8B }MW)F|E{,fZ_?ޕTjf~P']0y{99`jl Mg'q  N9JZxK=agL am 2#yhO -,U6m_`@1N{ D.%N}SsRa%BTPkbdޔ>f"44S1xӚIoJbR1ŲG}+oְV7Ƙ m+j2ZRlv >}Xz7]=^Yx:7rG$wȼ;k.\99eww褱е̔ƶ?\Za;1MNh0Bhˬl-27͒]&,g ȈaEd9(ޠdh!:)MA ?&\8{M֔񍋺U3,Lorwd'j$)1p\qD2H)Kim wqq (NK%"D:#n*"ᆗfC_DKPE~5^:FNaK'yHF!VֈL|Ltooe;/$YV¼ӏt4~tOM,~ɓ;BDz֯`R#5>02#UA̸uWmɍLYo,6̭Nѥ2M.%?gƹ17֑ͅhz`<uJ\pNzȡy_&EF0-#V;\wSt R ɭrF`~#va0 U4ۏ4=Z#M$2E.եvC܂~f%ՐxP̸ /pkX@8h-(K,i{;EjJiN=Gԍ-Pb[0!RFy tKkH`{7_iCfJTiBQ ._L"1SiI=ƀ`ٌG]TI\Czc]yj XaRJW9tm LF8=Q_ZD.!X1(E{98\mHUj]rCy0Z%1ZrArUn|V%m CD*qƸw.:$.`1g6(-%̠T%(n*_)Ac8Pު%5f:aWq.R*v@-Depby \PObH S-,|fH(3¢ϙVl",jimJ%ijsْfvŅd?}!<4J Bh@3T foX-865O3eȝjH?6@O1S6 K sDz?T']Y@:?Ych`C6%q}JuGޙo>W_yp*s؉Ɋ1Dl[V1Hw?nagÊIqqSj &>,j@pKoeQ֑9TnG1 /gk)H~%8Wc*E2p)?G_}Ӂyɾ9 ˯xV{G!q. B)fϔ6bR=k\0iuc$>OٟK3cm:!\jz4EKrj,;:z&\ }U%a0B}x" k%Zd#)`sBH_udnG^$}8g(U.i9j0-LIQ=26YZSjޔC*죨|Ru`8˦5@NTc#pR- 2e Ml yfW)^ؕ'\.թ0|v.f<3q"%Z %q l\)z%*:p`JCzS0vŃAXi{{ZdV[*E8ӦVN";kӌ-Zϭd4khE IDATl?9R{X%A|drspm9Tٔ1pi~c '=3>ͲGu0/;t>ia(d)-twГ9iVSX㔐[@*;G" S0{퀳6inڼ 'b)'>1r0{,Hw^*jS挤gI|i3MN) ; STaQGzvSn[UX-ߔJq5nRM܍^ym>@J;y韁kC%rY׉0=ڌs:yY8t?H.ߠg[]6o9}LVMީ\1X&SZ" qluKkLjZNYyjyr,ĝmOLApUuG:Di`zF<*ρp MS1x v! :%@6:QR{uY ZcP27WWL7(ǖGLV}&#]['K}a|a9tPBD1NjO<B2Sgƛ]'wD5;;8 &n S2cja*E; gт T3-%Kڑg!mv#Wk{Pds=͡hԎC=~u(F Wx6cއzHHOZ̑QT^ZF]m m8 S a|=d&97 v}="))iѺ쾉v(0⏓GgpD ,'_SצNi.} 4+2pQ'9;$s)5M\;5]52O*mG7C7mr$}""+UEVQ(QT[ꑦFzf4f(q((cťZT]Ia~s=Jb6{d zkz\!^blMk~rފd39Bgs9A>ͪ>'n1CwڵBD\W8#r:@ii(J'Y>d<$Ajx0..Uj/-bRl4-wEFdL[DZ;!4ёsP446:W/Z)`ZPkq;߶vy"tu շ-ƬyZ\KQ.<6(X6id2qܸeatЛ9 GǍ99U3_ .dŹA9ģ\) tdK 34̋TmϚr}>V==dm8%/:4bNpPqw GsJ;@&ս=-ER5#¨§qOBX!6m*tXN$4ۋST7|G(lYLq8xx ]mWR̍sel1ҢIf˥HD|re,h~ }:mW}A m%ftE:(>VK:p-aE<豥TmfڹlT '=~-˞ӌewhffl:t׉EI iNH}|JFkZ:UW)ۮgYy |:*CN`X'6F03`ÞfLYs%A~u~@4X vkz%wܷZݗ̤Rv.yIMzTUsQHEnuበmTXSOltK63ӧ]Ҍ e|;Տ◌|$v,C+t%u4)*~^&@(Uj?MKTV8?v#Mڍn0578WCY \/_k:.8GB`ϡv΍O8 `ۓ&™ovOpAN 98疵پM=svOǯF,~%SIrxN#[H΁]{JI_. u(LFPlU'e ^-9`*rH:#R9S#hMZz|RPFBBЮ'҄d s;+(0đvߍ {x'Ѵzdu.9ޟY%vhT;((^E7ڣCkDKTA7ܮ#t4+Y+HFHt񯾏J%Q9=Sͻ2 eȂ,3S(-I&ZSjK%coFnU(szT|q=n.7M@)6I ToVg6{#;Dq 삋s瀊׏\!, y z<܌yJ=E|u\ 5xG{ܨWJ! "V&?-L+2{VⴧDnK'H\pϴ߿Ce6F Uu܎@=[%KRc*Taknp_vx_{<;{hTU#mh2+<_:Hxex?{\L0T:7o!U,Jޓ3ey3g0×FJFP m{ l5JMh*%vd$E ڏ\~R?UH]Eb{c@6@JwԟrǽUUeۋnß %Ӽ.÷e5hF W{q!pNAPVjrTRvL.o uJ)LZ24YBVxAԱRBΔ*Ka3h>zVS96]=)VFFr=9o%*|ǭ2a!!jLeҼ^wD%87Z)cd*Y ƨD#=\y^KI"s0S0c~Fz(k>/~؟1\i~bM3/kI)>V"x qy"SnK`e}d$̮ u$$Uɜ\Hpq~D\KQ)ҼZ}߇dl#mR4Oa1hZNL䶿Y6 ǤR/{|_^ P&ѧ} 7(:DfV*ͮҌ;UPz|g0+V-y8ߥ틷z.)ԽFKY?e}(s9j6eb$}_hBmGA\ H \;3+snD0%| hShAs,3BS LSg^4Ayc3&; ]8S쵽]s㋐j&j0Õ3r0s<<ñ: <$[ ,/᯴W2vʚnw)OK}N^lpv 5.Cd\? % si@5HG>C0:V469 Ok ŧR0UTK]·vIBLwVK^:J=B<>5T_qg(FlGߏa܉ť-KyqEPxYtXnm4)Hq ^=xoC>CY*8\\ :~.k< "&i3z]$猡7R'Él*k;q8KXS2qIb槃d0su(S56#`_i/RώhC -撯7p18Ԇ7a'N)/ ;j=KT2\R~I;TW@=KTp Y8vHLEGĹ+@{|whO}r9ϵo1NCy#,-1–i(5s~U4aL@oy2,<]`26gt^g貝^p6'{r]nr(`6[z|Ճ"kdÝVԝT@~a' lS2zJz6rirOSjNBXWHmph7T61ӫwo_/b =tO@}:CesIR}ɮI4.3ɚfI oIlu'HRdz3CyZ.59!JJfP?gBR'R<3 r?W|WxN Ǔ2dt_;DZ"q_-v+].8y*K)F9D;{Oz4}x@;%?ak?{7N2{Rdh7Sſ`mI1i;1rv-͚4~Jyn7s[dR-t.8/wDk>v>{F$Zst@}em36mb04dȆii\ܩ"~8|>Uq._z4qo[Χ@z `~EP8I2Ujw}K&| d)g_kH}vcqg ޒTchz={hnb~dͱcd+~cE%PRn'ŭG 2L]6Τ7*Ē:M?麜m@qt~CA8&?dv":*<cxn9${nsߜqqG3"k|K!38,$Ktv@qT? Rn!r2$7Ӌ8+0v닔RR rILSfܥ%Ԝlģڼ0줇3@CBd4$vwxMόVLS%/K=Pj ?ѻy"D^J2=mߩ4×v-}0ͨ_*8n }44_[<8s_/7蚟 ' oLȾ% 8ʍno Wߚiε9lqh(\=X /d`)Ã)(QnR6t)1̟\K"LA߼m Pyʔ-aV4q}!&*T `S )qL#[C|MMjn󠁋K_&ۇRz+7?28>Nc{eր[k8Sz͒3acYj̔%);s[Д"l΁JK>\ I H.>浶[y-U!wS^RNm=xV/'@*  *|+* 8;O6tY3:kQ/BӃd;6ٌI&ln S2yj NCxmvM :@좧i0T^Q?gi.q$j)!V3D.8dP ڰN ! i Ͷ9\ l͡Deֹ.=s.Δ[ 6־Ny{Bф5gkW HI=qj`e&d8{A|w%_DϙW۾A`,y]R]Cސ ‰Cq iPͯ4K )*(GǕӑov 0 M;h;m.. R u` Ѝׄ+w) Fw"υQ˔\ G \`1#(w9oY}oS? (? S'nCLenETM;-9Ծ}M̜RA}k+| S6f3C ΀nG6Va\=gF?6Ӕ0''2&Q^ye>=AzϚ@tgpu''HnTbz@EћQU'e8΁Mͨm`r@{MT85u{ShH(Ҧ/g·\ NF%] =$1j֢XfMv1) 6vDtΎ =ν)sXSʮܚiiKX]R*I IDATS=5rmh , Qísqfj Z*~̔fSt,|r}=ϊ{,kƂ. }8| Ȑ<dq_?$!OZ7e 'W=.pA_vYjZ2tr0Guvݏ~Gbj -F;b%uTĭG@ܧ/B~Jg1q4K%\(81SYmVzz>nL~M?neIKڒQxxV*ILHo>l !.dH)ڥ'Qo|K5DV 871LCQb?u[lItT6xS|v:w=ָ]Fm )on 9ܙ[s+,[\ DI` G}E Z#蚽ԛTz70^馝ԇ,+՞s*;BguXR'kz|l A?܃p-T5-0eœi?z]ƃ%~T`@VC$z}kD&J>i\*H}G pfsEZ5kĩvg8 .+-0Sc[x7O 4R>2%;=M5פg@mWvٙ8bI а-27!,g)\:8w"xUvaGFQK,ia %86&+Ptn-o_T [PB8tM 4uvr8FUu9UU<=oO[:HVgU6$ָݠ QI5nyL {I1FPjMV>9Kr3SʭKQJai8(f  :^R8㰱2 1?Sʥ( !qX'ZW4b% 8|Fԫ2!i®a~s|  zJYEqÕ5|G\C~DU5^G^??%dPз-VZV2}R+WJzWCk}56aౣW;d4ߋK4RZ-3k嶢_z2zF<~Yi{YmE\-=M1 4Oi)|_/wEq{DGoDl kzGSa^_ A'WF z⾅PBspEC<;2 5~j<5$]@,e{9Y~@PCa2:]ԅxdΩicL8sg |zxՏe0ECj@GK+Zɥ3lDpz*AwyT~k⨔`N9k0+} ѕlC^6ycz!!lGJzzWZSE*P >u1:GoV=]ιpA%k|`ky it;UTq,+)7"PfaYG,Z3 8?Ku!-~0|X 2j"hIQ)զW w` ;|N^` LsCƐM8X:Gz|JCZyF\F\ 1R_1"]{8GnV8N}&yKNV 0ٔKɰ{1,lMxp87}h [i[l)yco&jToyޯ6k2?tStx7~Gas 9̵cTkj7oC5K}퉐lI#n' X&@w9ϭ-hX\%T@sEOǴk pm`1Phl?SS@xe32n@CU Z"=UAtD̼IsLHzO{\bOn6CF )a>%SIJ&9)qn<_7DyR=7pFu<Ң4w#fqKAzL@oD05" N&.zHDg'GӕG=^(LMIH>V5s嵔}ئ0Lfq2*$ 5xo7컡]Xf`֐w_wCn,oԃډVIg6ɳܗw'Jr,/ 7-qNe4G q=+i.aZ7'=MW 8~cjT F@i AccW]Uq3:0v&M Tr0/ZȺ$mghV 1[sqdɦ-)o@3T>TR\N['Lons5lbèqvPd,ՑB5V$d~>a=. 8;ȣyDρS12A4,52Lx?gt ̞=O?ɥES~"lTm?%$až@ogtGFQKMKNy؜$ ,5@TNx\Ez(YTt5SAbJz8,d0wz}8 UesiLܒh9_w"x״C"ph+SGGiWbl^`l!fJbHjZ 3ө"x˷>'{R9a;qXU״~4*yd0X:L]F*aю 5%>Gy ?m aseu -kݘ۝!^߼smGǣ?5{(T3b$6%To~ۭE{o =6 l\wT\۝(!d9":c0 lX|KQx۝zѷ~@ʥx o9>;/~< 9['5xB_nìgYr#l_vy>gz*KQj=2Ĺ5UɉD{%PMBsЮiUջz}XYHw+LL.m?LB(^|7^d܂bx=Dw]s|sScXh'3"keQ>~J=~7^4Y`"H2yì!ٍϵ;4[9xa bB1%mI'3|H;/RL)~k|9Y*1Sˌ j|eXb(; vEJəD}ӨGV H5|SJu=LO1%-I9L}:1ׁ A<\.cǜgn[9oT1kaL1r =6wtiз}{w~83N0|C~k״=L՚5 霡zM(Ӂ8=T}цx,ēfL3Wn;VTR 8C*s#{Xr$O]}k+B0CQxκ RR hۦB2pS~|QE=Lt "'m,&\ʆl*1̹?T_?Va]K"KmD#?\8VRϵ?2J鍉@0C<$⤢ke2@-ԑ =Vf6#WPCJ`+kLA쎫][7K`魀];%W]$3t K~o-*GI'2@MN4M`go?{|7zfKdρyZԛ}sA<&)8^=a'0| 8de=W2rb~}~@3@~y\*-eScIx9+o C४! E ir9*oT%` ϴ/GV=:G)*3Xdt_I`iM :(n}վ?=?_ûPl2Uߖa阧AGz׷7oE,{uFV#!2 ZΡ~&L$ U~ `?Rgq)dQOG)[#w;'8-vָJU8Kk{@ku״ZբQO:`H_ρh]* ~*H}(6WA={#/`!W= @ S ?&g%_ԅznp>2WJ!D 9⩅Ўĥym:m/kZLJ;恓,ghQ ?p҄J;i[(RGݵ8< 6aSEDn"r<=z(U4#T#0~ ť*˩svY2Rm'*Vu"$hdF``$ʀ+]2k$Ҡ͢Գ3=diVTrQg~{EP׏kݽ_A k+Ó=-@bUEUU9SDٜ 9if=`,0[CCtsU` +*)a @E+@zގ̱4cC>7;~2XB JQmh{]'27mK^KM:x,+5YajxE9Ly3MI86xdi `N\aJl+ޚ7”<cJou =# ._ܽ^g#׹t8ЅzJ䓘A͂-Mipzd%'=CKAriҒ<׈56z׷7ow=\aJݞmF'07fkp&YwHf"Cl PzelN/1 :Cܲ$T> B7l S@n]`qZ:t8Y+YjlX誧[Zަ.s&ʒdV-}\>"R{y~|ܼ=1>{S* ߿~K&#¡[iMМK22my>NnIRY J'JޒpP%y O @*oSZ{o^nISST!Yl*/Gn5z `d8NLԗYZt%g 40S`&B fv%F֚4|5Kǵn#nU9W)D!^A8,k%tJ`8KX%Fyv20Powیeω>V%4Vy=a4rK?0FܗYhF'C_h5T)ρttak%gMWA8*={mw[0=VWA~p 8sN\}``JT/\R/aK1s+Gw5M݇`7y,ϊs9 t+/1fvF n ;ɜ^3f=7κv#)K3 WƌRΡ̥[c u|j8T!պjv7W8ޓeKm/-Ӆ@qOa H^ӹī/xyk̛`@|E Ms)˴WYK&9X Xrpv{p =^C܊7Vӊu=s,kar -eKnDW-&z+ucΌfg;@no LO _K=-ݮ'-1n8/xx=Cb@<6I]&}V@3‘*]EVynVFy8YӴϳ\ wC."Uu6CH&xTq=pw3K͚SXf~gR˕%Sg 0~)!-AD5tG ̔~W2 ϖs! 3 FϞ^ s%׻b~@"zqOЯ%3Zec D>]ڒqSBiatߨqg\5LP|UCg̙EsegLZ2%3EZj޹DJX&ʈR 5wR6w3fN " g]Ks Ũ.0%wܧ}Z~'VWGBDY:YbiRtZ.Ę{쥬2680s@DRP[;m߆ooڞ{d ]CǺb5PY##`xœ=Lo0/4Ӝ\:眗7чZ%tvσLo_g;V#f7⪍T \95}RZTocVsY%ex  mCzՊjs9Gc' ΕJ/ߵlo^@s'Dތ\ȟ\ws@Y~ɤ9%wsZ-٥@ߴ߿;AS ({0XnlgsF<-XeK`G<R`JEmO_̱9Vs%QSL)/Y *;Ss*`G{Mu*boYPL'^/]2Dj ci9LP@ԉ9]rڜD}V777D2G΀0sL9F&?yꌺx,Q FSώJǥx8ϓy^NdIPun~H"8WvRT$dK09@Zgr G~׵= I- TI&~ F5|{σs;qr7K̜ hjA87TeqnEpG~G8^7s!.:QqC=ԗ÷~wPFDW\=,(R:s[XO< D־yB*?.mo@QőpVOܓșJ+c-Kۊ87͔Hyif / h($< LVVc2톾U Ĺ+SLKߊ֫}Tաe׭W6ƉTU|>R?'z 7=CR/P )0j=}@S ~)= F{rz0Z( K[>k)30Qe=驖%bJz.ǭ%*qr^A:_2TU7զs n}wnuԷ,\Y.<vG P#6XjåwC52{2[϶K<]O!L4K+sS %Jǂ DZuk~e=g8q<.@2'Tt蛽+ DOQ߿=* j2ˁ'vtސMPou64,=e;&@% qϛ6,Y+QZ*.|lqY9*CX5tQf= P-nnYZɯDfv.x)Xè]f7lقdr5U39vsZj÷{##zWWa'EK{vC@R߽_$A$R0@5%O 0_{3.yO3{GXi`!KvoM5i~ԟ8QT30)[=& +xi7$\AvnaEhK}BvmS@ע n-^í;[w3 Lqp-DBOkhdvex2o*= L uzIpȖwC˨}TW-G~bN hsM>(ahH:xqfCuX:qgmE [s{{[,rsQ{RfJD=|꡾WddUhUΠ@~ny٣ecp+@?Q_v|Ω<}E O&;qj,k! 3Lӧ %|xGn%c[s/%XK%4Sao|gPytuόt0rCcj]ޜ ߯#$uhu @..IH q5D*(֐KACBM: <9=D)"= - {@խjڎ-Y=:%ıH=F;5g'|O߿4x7BjxML77An4TQ^{ d^DI5.—NuX+ixcT$|;wBXWyK3zmdH/Ji`,mdT;}9LUigǀ"n|Oeh@ap+8@^~?CCA!衾^oA_sLÒ.==ΐIN(=֡t bvSSџxh(TCDj(;5S LUD Je0c#%iutz|Gt\ fgLYH>S>?5ϥ@v0UweEe4H赹~]]Q2R67*ҁ>:mqED5WnGx{L]x`LFn`$̑'{*-kXn{b ޓ0E# 4Bj ra9>Ξ_f bSyz +|椛3=K,S1䌤6y;ցM^YϷ4d͎y.gyV²T֣PIl3Ǭ +9H9Aɛ&sX\{nc#_W#QʖϼSJ!@>-lͲ lj)2\įI5.'$7mv9ڄi߯Rj(Z N,N̡.U}!YpA0f XoOUDN3_"0#sHG#9Q$H2<0G#P2|8 5oIO㸁=^mFX6r$Ɖ8即',m5$ډ40h!wFzw4Wba!\̐pk)f 䗥}/*h.$M9ٮ`avaDZ8a1XSFS%!%oEɌZ(ftTB/)S@2\t x˖so܉Ⱥqe,| 1+7m3ݥ9r3Zf ]w1\2Α˾D5Ju[`20&*y=x_Gטk!P`S掎R[@sV/0M!10-h L)m D^!ɳO@>P":sOgc̔9Uf sP6*s 3׆p 21ܶ5LňgWzz0.yIz&mO0;o.*5 ,@Pn`v%.Tu ͽF)rQך @_6xK''YZl' I0QHf,nHl}_uq ┢=,1s1/H^pah!Ptf,MseDw*խSqü0m.8Ϛ Hk:k]#mv N?i5̽]O\rƃZP}]Jq}Fkl 8v-9V>qoC^~ i7|`h~JvYHR99-/[#6%Anpqf&IYbNX,)K9R(M95W JƜzJ._܀fƆCf|Wt!}@߻Bv3f`{'z@:^.=Eh[6)X J6x+!㍙Be{L=Emk3˵X|jd 3].B.eTqzzxxgA6 KL&xҔa|;ΰpsT.旖]~AS e,O;-Kei::6yʼ0c3kcVGS9ANOL|p. Y3_`s0>vYbiR'8WVA]Cٍ,1wi/`w%9KfD2J}]x'tM?_%,7VFK<Հw83UvZ 䑟I_ۺ.钘SS吖\&G ~}LbJ* /5LCo9= ׈ Ö4Q(;# hBve4e{'+Q-Yf8YwD ~Ù԰(<ǮDZ99BS'_ͅ;뙚8\[z)YG̰#{D-;(9|Zq=a7Daٛ܏ #R@ȂNÌWʰ Pk:kęaӼ1Hj7[s*aD+4~o:Kju܊[<S~qD %sY! k 0=4~5 52p<7#NRRh}s R$spcbP#^=w۹TNb"-e|lf._co^H#X&,A6IAt=BF%20s-;Z{Dm\4o 84N[UH+:MV5l#Ȝ `쩄gq&t3)KG;4`Sҹ!3?>ƠS`j*eGj4͎81x. zC# !;м(ꜹ&s3ԩ=3BY%H۲a'#v-eSjq5 AIiZ(=RKҀt&c㨶BkFO FP)L/ a$`qƚJ!8^=M,Gs=}@W'Sz Vp|TJpr0U^#v]wkJlJް2 \  ޟ-]Z,; "p ܞq;L}@y=Z88\ڄwngEy^dLfO8k<0z<`2|9>l3fn!]XtM)fގjKbV>eۃ~ˌ1 !- #![t﹢ג}:*8Y{n2%{N//yji:e sse34\Y&ۘRޞ, '(䴦4nIlI N$NvĺyMjg&%G:*-I+ ;*BҚg]ع SEBg3zh>5f)3s1Tg9])$}TRt+*@7ur2lj%yu[z=ޔwoʵkb߬6A@+u?xYa20Re);u{:J^8t·B 9rxjAxg`tJ@MF 7>9]! Ō k=UPB{# c9aN q"zx?% Rۦ1t!|/;|pwLss6F$phx~+.x0{rxW=T 킽peE^6xƝ$>!h~aҞ\r]kݬɺ$pjq6憐g%m05SSbOg(̲@&#`K:@ qrxIDAT+P; NzH %-[L#zKLX5}$o@1xVw߁h~Qsn2Lǁ!`XLi`{b{g-@y9:Pzr:=0 5ni5u 6t+ "vOMb0ulGn n vAbcK5w\{q_xd7e c.]D & 1Ln lZk{+b T1)+aiRq_jv7=_: ?8ڟbjoy7:('mG8!!ic㤫z;/}^: \v<ώW`޲6_3@r{ML3LC9^Q#Y!n:#bvt;^K,Wu:ۨ^@;H=$5v@A mgꁸ><w`ywe&j%rC.:T%Hv' &-qV8=3sr7`! `E 8[p3rf`Aϭ|c6~mG <:Fonٲ^̯YuF=46Z;Cve9LyvMm%x"6!RXC:fq5E7Qpb{=:TC cfmcH7 ݨ J&3 r7 Gb x2͌?P|IwBNBS㨵'ZZ7=5~ qJ7o*%FLլ7|x#u* PCzSq}4* ؕp-PMd<)fhm+x,n5 x`=G={ZM[ZZN1^GI_U* Q/-j[ږ,AwɽJqYnGnVO*1s'A3=ӚPRfYd_- ܀Ii )& '0Ro(QjzsJ5Q\OZ{P!E ӤҐL }6jk~U`=PqE*(xvJm}oR]2.ZHxaDkOp8ΰ8}|sҗ]تF9#q8oֻ @6~QX )Y"H 42׬9Zx C=RaNÝ{>G,B=;kݢuRi-WNk }ڐ6/w ZK۩DPW]a&3֠I-.,=)Mzfkt錄(’DeflPu<٬7WDMi-ge&^gQriڗ {& 432ޔǺ%ωZVRl55S痀)F#mgU @'@f$hfVfzo/$Y'ZF&u(FH#Cƌ͌\=tzgc$&^,IENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/resource/background.png000066400000000000000000001176631461511344300246050ustar00rootroot00000000000000PNG  IHDR^x pHYs  gtEXtFile/Volumes/SVN/release/SDK/VST_SDK_369/my_plugins/helloworld_with_VSTGUI/resource/HelloWorld84.blendbtEXtDate2018/02/03 18:11:20nP1tEXtTime00:00:00:00TtEXtFrame0ؕtEXtCameraZZ Z CameraNn tEXtSceneScene!]tEXtRenderTime00:11.24 IDATxĽ-q[g>=[<,k%ےlK0f 6h7n Ac06VI[խ'g'Wk/\9V'̵v֮]sooԹԩ3۶M̋$_ݮ^VL)BU{8!&Z8^1JU['*Ex$`ͼvʦv16G7 f3cmZ34cۊ`"V/0^2hK.-[41hHEo 8[HU,gчc:Duq!P61"2cdc 6'ێG0p: 1<\k(ztL41-B@v(, ~zW.ճo|SBhXQ+/kgGGMԈxfpǥMSf'y1E 7 9'/AA9ŏtR3T <9& G oZ l$f^.&h'/w҉@ey3OA[0sZ2b0R[]sݏ+IɛXvIDFr 9'ЎmrıU:x6ts{wR=o'1{j?t9}qN]c vO+N]re;}M37:k Փkwoe8vb?p~h-O)LWU@##.Л r{3qc] GqZ4m {)[ד?Z@-&)4C6%vrpJ¡'~]]u (_i6 #vfE0M! K8d[0mGLV9Q0$5N> ν-u& //>kOzvE;Q|㍐sB:O WM8yԉwΉ"c!&;aү<9#mAR*Mifu&B%q2fVX4?HscAܺumP? f;ϾiG᮹s7y&Rx~kpfx L4xi u)Ǥv :jz*̵c9:泖eTd5Ik3x@j.&SsatO,G9:2Ul|.euvg+_|i;e+.lM>K=s6U0D6݃&mTE}$7_̈́gO"9~m KfqY+91$_Zq1@Xϔk.|t|NZ x10sZkl:bGZ Cz*Oc؎-,0>vm Oϓ\+SK9y> MC99J,FӞX#Gc$5h5zˑc6}A!Lƶw8%v@?BcU 8Xc>A:W.mybk^q**,.7P)d\vkde7/2+,bzdcdW1zb%sL7zxq'{= .?("6vG6Tu@D,%1>E~[|nǷ|> +y K9EۆJ&zfSVF=}B\O<6}Sx'pw)M'iw[7h̥T?0#%κõWߩp=4yB VBrjlq: 6{-c]r"y3IMoC45xbs+<#a?(_(v{7uW-`s!rxZ9Zscodazomt۞ank2\Ě ”0kpj#Xft]Cl%`QMaUJl*4|nrtxdB5nSxuda"0c8x\f_M`M۶.ͭYx#<ֺ_~i$.C*AZ6N\3PkN6q{XK>qz%tc^ z9F8qSF\k*hFcD4Gb4Gͧj&dyt4#9,mrx.ٍ&;5t"t}0׏2s 45wـJ0Ki.Xys~ 1ycb'fml#GE/P$~o4 ȔW%-Ypu&-^1{'7ofZ:2I;–}RjS__l;[ϻzb'|<|}~t-;y0ۮtrI 081Ɩ19A9rfؼ]rTxMMa#Buh]*њHQ<'VK5-R#s%t[A҉aU=CUc4)#c.at- f$ܟuq|ZqUvƴ@fZY}J"ю4 h xs4G66}3q&Nfl/W+nQ+_^ wT+_!ʖx:*z_ccW/%  @pk]j0f(?A>HH $ZV.c}DK/=d;qN:n;SN~M]¾'@"G] a}2ٖ2V$}9'!QaÒg[AJD0_ B`c)G&ZC"a<}Ma\E;eg|b緤Y9nG/dU&2O9"N6q;AX[I\=o6J7%c鈅`?\͚bFơV<+/1ϱ2G8+lyf7n $0s 7mBc`R_Wyb0&^KN ?)k@8Zg.3"*]ezۈm|@D k(nqa ^MMHq՚X! ޛo|v# vǗߑ`7 pijEZxR{iA"|rkG8،dh ~ooxt۞vK̩nn|s;͡N] 0hǤTL3l#ݙ(.7m⡒-f|Yn^rvɼ X=&dP+q49̊*@)uiA/9OM k uē͘ >vwxx9c\0%N,cһn1L~|>^x ׹3n@Wninc;7n~vLq,kn&ؤ hul_yxw޸[o}>ۣzb{ߞMozvQ3AdXһ0 P̭}GaR"&,O@|A#;8/gۡ)˜׆yJW:o^,w K||L ^;X%j3tN`|WrO.sʂ+g\\\8smzyq`Yǀ,arԤ5X=/Tlc'I.j6]e 4y8n4hF:9~4dڿx/,9).eo?='K޿wU|v-7o.\؞~G?=n/۹QQ7DJ_dLEʃg7asOoz.nwnWyvM綳v˄{_>f7?Or񜴈YL)60BFP0TDF$8ؼTgud=]՜AHk*NnnVHe{v($UV.y{;۫^[n{sv{vw[ozۅۋ/N"Q2zvfjnJYzӋNt6{i-| 6 ,12(HNr[٠I%'Ƽ2!Sn~i2Q[ f,^3Vα bCnӏ9ҰW&NNh36|ZMdqc!HX<\|Ovۥ綟}{v\Nw9ɼ[;c{+_۷+O>='SxE(ǾA ~IZ=l;u Eo<w;7M]wݵ]ob|ݾأ.olo~붇~d{K_N|vg@$*i}tK%/mÈ?w 9lk|{1<1kes]t+z!6=C3o 0WZ!Ej>n @5t0ͱAk/rNA.⑝^2DȬMrvTa:{;8L}PtE}OZQy%e8'hY(+|zpt>j_~{hgk;?׾}c۾s~{ g f'ngϞٞ{K3V9 Ux/]ZJ^s3ޛ] ە^~[7[Lo{G~S?=#O>pÍ+^q7oW'|ϛlxkҾMLINbh.</7^\UE~ ]\X7|H2^ؾn|_=p^3^x/__`clPo{n^{˟ԧKig}胾XRO}SO>}Kw}O޷]SS@?e ƃicIWpPh7W[2+RRBS(*}UtW1&Ҋ2뮝4`ۋMq_])mƘ^rU G_CFhɋ_X 6&Fх c,4q(Hf=;n".J>W|?\9MKíCg2y-&lx?6,Nq#Ŋh7O}6؜Լ/m7g:y[}x+ۣ~}ԧn]v}v{}ϊ׾v{_ϴn;>艭ؒLAӍRsolwU^o;ovͷ; ~ /ڥ3O[vl^g-i k[|0Zʞ0e,Y,JLJK_/_ДP{9psXi:AT=fӯbכ}nGu.7ܣ憻@kqSa}Ujul~ y~&N8@]GL%dNviqT:|P谣(93;6Q°!5'D6Yq9b`^2 lw~[sO=m}viv |Omv;~|ziyU~V9de}N&\gp܍ٳva/z׻{??~f9gWmݴ]|)`ĴhzO$ p' nBo`Hf]@-iBbrr |ڢG6OLSI?7 ҹ^qle|y'.]dm|"𵕝f}MunEpcbu3\&0"Zvg5g0(ea!:`)1x8N.Bx-ӊ.;q|'w^tcڗ'K׬nu%{йn$JQxɵb>S9#i NOC>8˽p%x} ]F| 7 vve{]n8k౓ q B"y\i9WNeK10#\h8% sX`3V ӯҮ+K'0oAK.z5abJHs n7[7.Z}:G$uynlopn8e+Vxone0ŊKvuVL"!~Y`~j W^Jw@ sykAHxAdwByv |SLNm-X+p*r,WDz W;6|iLvo0d w,b$OSjr ƐNW_'iWDqvĎ~V UQ4WT9;0ºa\+G_ލW+r(= '{ɳSn/=?4R^;νdퟳ䒃3^znDž 6{4;$6/ *oݶ)bg1L'Ć bI~isgM+A)@mp1u~P/tz705'IFs&E'nng}&* ҦS?4vyH]/1*~9 "8YgM,7=oV<~L~gTgΜ[fksSO={޻=k_ucWRk 9ԩ@@x(%N͹o}kcn;^;E+g-ԍvt * }R71+hd[ IDAT*lSl>ʼny |aopz-Fs ;Ih2B6uM0n_M.kQpu*ivGœ"cd'>1cNz\O[N I~Q9qzr׮ޔO1KaCfr*W7}oح>d'^'xrhr7ǟNq\VY5lF9̤}M˷daɜ1ⷼ]Fx_/s]^_N)}Yc?U|'q=N TEB_͛+*MOqGzeS_7&2S8T)bklp_&#DG<(++?z+Ow@H^n6"dીwq Cly`)_Nc ּ{~4v_Ml5GqvjFcq@\Q®:įcSj]2oimڷm>v~c~;,oܞxF'h|=gY=dZp[hE~|SX{N|s}Uۜ/_]W2p^a_BY}%ol>^^֬?1ȁiC6{yopdLbw*{}z Qd}?49] N(69nH(ZJBv[=կnonW[,YNj`re݈ s\ؿ3xųڧeA`s|ӭv+|o]&`.Y|nяo7yaZq;)Of&`.\ 1R&0XxUA۱%Mrf_FU*Amny vɛ{M)FPQrYAĉm~82h(? RێL9̔V9i5މo ;kohRH#M2OX 1ܓԏM̾st1aM"@9]hk,`70{?=3 <%%+/هm=X~_>mso|ո{gX+KW`Rx [bL?J~wߞp>=G7u~O-Sᬝv?gE||+n!_8}oڣ!)Z\ΕXu@BLܴ/j53&9' !OXJ<c 50­Ewq~QA,7~ h$\ ুsvw1xFs hKH3TӔBAP!׷=HפNGٯӘqwnC¦rs˗>>-.O Ά6Zv0nT,%37ݶھmEK_]b_l_{ |o}/?}q ƽYZ"%*p*AۧνCWϹ`v7?]>mmb(v|ٞl/>smxf;g, .oϾxapn)M̍-n5kKEߠ.!߻J,:u*\~ mf,nҵ6nWX.)x03ʙ: #$Zqɮ|ͦX?瀳5#zpmLiJO0rq\# 1pUB2E\]oK^ G5@vTꢎI_~%L,ťXI4$qlC >{ZD󞂄m#?d{k_ܞ;ny;wk>/٭c]]-ۭO^K<̇]pɾ8Ƴ .vٸ xp'd}cń ;\xm r){h ݵ{샴;igNB[Ȧ"x\m e&'4· o>8[͹#'(r0B!yaۯŭ=s?D khC@G6Z8 ~f&w5r0#Jǰq!;(M'hEɀ! m9zkݒrڱU_ݕvr>T_zX;644HYx3-GNDo}wm7- ;/_y.J}yl~)f%jgkĆ/*5(!A2;&@[\8X';^ԑhࣸl>^LQ'g>9EOEq%`  ;Q"jkxgk_8qin<ȒXc{AEvČ 5X,|^LZΰoצku.oos@qCvVAN#Њ~@Չ,goF&AJ MKbJZ=+?l2U2 8( cKlx}46*a|"}0x Y$mOã\cSv7,[dZӘP91(į67 c˜qrwRcM{37{#+n}meQS\Xɢe^c2EMcddw~-yE_Vem`ik?pA>üh\[>n`\})H~pwiDQjEKE$)2^[ %C>}eL1( ٰG6|WtG2u\;2khYŗhušp%)fD:߹%[/qxZdP9t+w7Ovy q;=VQUw '$Žr(I8?kY-Kocه Ubz6Öd/I=jyLHȤ  h3dWj#JN$ :SʦbB 7aa[9ρ/vF9,o |K]^"Lj<\ L7Ǵu[I7r3wbAXݺ-y"[^.5H9VdEg:dDB}780po֓҃vp:9Eێaиcd:ˮgbFH:f &j ^]f+foXjG'?ïo=mm(=PxXٍ!l 1Q9QhcwRes6VH/讹+ߎJ&24ȡfK:()\!ѵAd̓؏/WU5S.5/5c8JcZjZ]XDo,|3LQo8d7'ڃ%, 5K^Sk/!?/Fm1{ |w ܎Ӻ}xם5O{ќ}CAkihdֆ䩀9L>%oHqD`$n_/WFvD 4h17CWs*9 s-p1k`RVLᜩhQD54`N7+5E7qw?ݝZ#QL B`y:zl6(ft WP% :UJ14')a%%OU]+lҭ8qu.GfWhq Sl 30䘣sA*Pe|nvu@ >ƛb:6M%b=d'h/_T~uLp5 "Ϫɠ`߼~x2ǢVs=e\]c v0 t^~>H:=h`==L{j"^V㎑Le|K/x)וZxRCuշcdS/n3"[!VڑL\uНf=@(2Cu?tؗpLvد=6 [`_עG6\7C4]&APej$up1H]D%u#x,$G(mfA`z9zlQ Pٸ# V=0rew~w|#X7Evm3xq&K)\[Rd?OnW/'&_djҫ߳ kmI\Gw 2V]WoP*^*&;cіS-8vdŗ*gSE캓dTND*@{Իi@Va`W̮K,yѹ!`Ed A鼯Ko>[˹Cޛ=wIu!5&L*"x:P4 a҄@{[9T`;Us66F qoѹť//~ %8L//l{t&89g_jk˗K62;|yssmٰGJTu*>8Ϫ80cӑ=-yNOjgj+=CdS:|ZRr}<|Ɓnǘ~(ْZ90HXsP"o8ʹ7[%q<q%k㦩b7hvBPaώky ;#}6`\" [Kdg=&ToEJ6p^\mb6A-^q,=8>WHqɯ*6M ;Wqt=#OgX w3͗EӟO|b?XŭA^|گ_뻜߈lg\Z_8؏y*7z7i~3j5vSe@H?+@A)\Q7b}P}9ڠ1a=U}>o)H@I[סDfDC@eKvpԥ0!.юjf&óhd!!Rsu%G+\qv˃c8]2Ѓ,ub(VO>߯JZ 8|^Z;N̵ѻyq=bw [V喭^Е"2 Ƿ7_#}C^)뿾=^>|ԟSG>7E^MkGOH};yu>j!E h8,_G?-Y m"7lv㮠>|c6՗^c Mh^`Phq0Z2\q1xܦy0^b>r0; '?xo4& =d4x'R0QDyѾ{w{k_녊&6dmڪF MA}q ׾5駽rKgڜ?~9BM1/1y-oy3?3~͝腃["˗\;?1Y7Tq^!KOo0ǂib7 p]$|=N881U"? (>o_uY5fS\=Gf5J̴p ~+ 'iXeP>#7|NOcSP껯H%`''3ⱐ>gĶHЍv׏O¾T|e;_2PGojcub%;x IDATWs(esmX܁p}\'E˗xf/| "Ş[x8͛X?wc-E\1됸Kz׻|?ΩthxG<=c|a)msu: 9{QQNs\=wf<뉫7fOEK\6N?G(\WF ZǗa3QFdL<0e.=pkck݆ )7uX(ΜusmW^~<UQ4EаٟO ^o95S>+ /Ea^-K4eI.MpM.s}}^u|W:N.]?Nj=:(!ʂ\연~^RivY!Fl=R_cbDs3SݿMh`)r, P@80].)拃ΝDs4'_76EYRin'Dy@>IJ]FxW6>Ӿizq:щkprS k&z+l?㍺sloN˫gzúEeByd:;;^EF=@$Xq_Uoo s9_}w~g'gu/EDXꌕg Eҗr:8zL?$(|B[[ۏȏ] ^pbej"5Y ]9ߟNM_rsÛi=M0A5Ԝgޛ߄OL|b8:8ek+kP ^:A6f%C~=ք5d3wiH~7&'F K7G!9yevnj9@nЉM381]G뒌r:8u} Jdlfkn*(!I^HT);js \_NXr__կ*>?w*_+˛3JΜyQ9rgq}|GS#&gܲ8 \=!XEYvz04܄.~S0G_m;m wc@S m|#ćm3(TC #f&upOxwqB"nrHxjL2 3 ڜ=`ڇI]bpqiWp8lpqPY| nS r+㒂cpc}HS"UɊYԷfj~ de_tU\::(|W2pޟB~G9[{{ϟ?MU;g|Ƈit.+י-cΈ?9QsmnSU5>Wx&=znڻPXas6pgWΘq^IE<,'reHuSD3KW~E䞰Dz:b~503}>\:( $gzTfѰdvgBZ(BX/f|7)'`U\/o=b+?t80Wos,? ȕ"F]>Z~gd?. 氠ot صMIUӧ\˘Le8cڋV rH{4=d Q4q^68?S^ d#u_"(1R;ݞ:P$_}9cBx$|{*̩jDѤic)p'7WC6-:(*AEMMPc%Gq_.>ϝ6gS(g 5ri"Xqʗ*VX' ~ljxzqhdWl/sGF/WPC?؇[2 ű8rwW5pO\o஋On.a: 3G=q49M1b0nM|K".]AvhQU)8t $!sgOUX _l61{%F2AqL 0AӶD YE1Y+@5^'-8B3J2jT0_g$,g*nt/O>bPOQ厂m?G.gP+_Ŧbyɡ8x4ّ)]ﻭM~Mn_Zb߰c/i}1dk2i E C].R۽2CP_ F 138w9l [%$!kNUne-ƲQ]zW %q",1H$c>L>FFAC*.W?)8e_t5qj@f[8aق5m[;hu&3`5AS sR$CE2EWwx8+/Ix&Cg"p-_9 U Uf>c૿|kCLΡ\pc~ a]+nC1ڍo\GjM o"\}qH 8$82 %p5ՠx7)1i.r0|íoMTe]}IflƱ1!`4NLY9F!UxL&)k^(_s-.F_kn=W.~ʃmx2 6w3p̹k4#E /t)sǾhs( h6 7dm bB9X-¡a0]NLo NzSכ(Fq;ZB 2|6_$xyREadr;tѴcME#7kW|$Ȃ 0TM϶hԪ;HhV]pwd9Ιlt'`/nOi{X Nd"5(*܌<22tґU9fy.-|oƒ8w޳h-9宅UB_[ Y YbΜaph^"5]6W8|E~,Zd&?_2'ny4o`hG;071D/tO+wx?:#?Wtq#?W:0Mw4뛈bg1r Sl6+twR:h?jw[ʢf8Sb'K\K>+a.hH}YdJ٦9G~= ҵpؑnXX _ M篠[Rzwuq0hG2:xQk'䌗"_UTpr6{S߳l`:V~uczѯnvHo%:lL18󇋸 >٨I^YCLZ]RT7ѾS`Ecw:\;DJCrv'޽ A/L1NPMc~נR(mE))R r]'G1YNtio/.ūpŅJwJKNEL9qO|MM@f6֍3yXٰWW{ *q]]xua;ƹru΋,Azpu1M{@]d lVv'1B 7aA")488WM<[dlI>ҭx'nzcXNOc/Ix^"ۢ!9wm,o<]@go'k5?*z';mWq@ƦSO7Tlz`2897պnAfc0'5#cΧ\[{[??zx;rp A8S1"N9!5"F TZ |4r7AtMzq]m@brrtɛ#XEY$GR ;D݆^$eir S+tNdӜmI.e+@WI9|ϠII2A};3k x,oށq?m'\jߓ)V*Xk`_uX%ŕN8zqI1z/ c;F9sxwaXj4;)P);+M$-\}f9uw>O4iw]'׼š6ۂx*} .\kU #xg* *0Y}U}m_z֍l'qzxXvAɗP먾3Jgw rُ,j}(G0ZD,*!e$>4u}]5SEK _8 sM& \'!D?m}fo%Kl1),zlYƼM|͠<3gr;ʽWЫX$ K&UTx;vM#!pEEE /lW|ccXt8XXn9I$3#y#e>dpo>_q,Y+s\9=B=ᝣcWQsPOj,oday鐒%,('0d/\$  8}؀O/lOG hn^>M*X^Эzw"%ik'<'˛Ma"hU;d)(ȀBǗx.T0ֿ٥3rwW E(n.>pSQ4̗#a79A_c'[^?я:=Ek~#NeFK8:[QE\\c{x6N/.1(ѻ\<0'qT1wY"C9_%._/AHG툝g+P^ə-g|/Mp_,_y^׏)#OO;/E.Lay7ȉ"ʷ,q5'Rt[oW~s1/+_a^|Y~(XN$/t Yg%'.|pd$Y$<Ա f}է}S@}d$L-?l *zxy;v9 l) ~h_zm _.{~؜LNGzukO9n:$q+mw`n'{&&NV 6bs~ OX#è[O?ף|-W~){zX#93L8So$1kApDmkgeg f*;c.!0Lʼn/g'l˟LPt&b87aKשC1zsq PWrnl.z8U2a~5|B|Lina< \GFJ;p;6W-<9N_7>C {6QJn@EjWhٺ8*\s49׺Ιrdq'hy 5g~N((S'zӡKB+8MŅD^vd9C˙.c^| FAQp6Ygşz**)f1Sx)g6X>~ >iU1p~_ F*hDM̰zʺ IDAT%%Zf@/pٗ'lͬsVHQ,@!.-/=pTw_Q<LFa{P(Uq@Qag\Z?!Q9djcs3\x,+z F>vrg\P/8Y)6'x+Л#ӄspCW*I< m)$=iRrHa<_4Li89[Lg X7r4G˵Ph"Sg/mBǵi`];&\.a!90&ESd+]M|-$bV,:+Ry%wgȬpZТJ+=ىC?C~7wP8Ӥr6JRT@? ES5W|~ wR0KD8 O '>t@xs}q-Vgظs;gr{cPgh1O[ne1XzCy5s!UI^.u?KRz/ d|,\/U'r(xJa%5 $#n=}~g;mʾ9Y*"ˁj+F斡lK :+fN`x)$0~B:l |̽zb:js$ ^'-ŗ[STRgR)c:H gd /{キ.+`/}oY򁏳l8D 31[NA>80r$Ç /M3?X@q. 6SMriFڻ]Q~Ck=[ӛ3Y扙@<;-ͦW7Z?\ / x>ȅz?wE<626@^غ% AA^7Po:՗~N_| ׯ*^|9cg\{#EW01<ōIKzdpg&=:lj`Q0)؉C>NXx xz_͍ФG^-jl?=tt΅}Atɺϡ$cE"MuJŎsA$G'guK}|d~*#fNl;t;Ɍez{FI I `aY6br,p*b|D%W?s[Ŷ碫MKK}{{G/>]^׌OR9pV#ۄOx:(Mn;;?3dU(fMo^z 2/Wfr `m8^"L,|ɑ&>ҡznMGv;Ϟ }b\6;l SxCa$섖a=Ɏ.ךN2`}3i2ʧ&:~ߛ랮Нm0ŘJ'8av86Nk?^1׼P9Za'cM͇n0&xU676Ct5:,aNSu0%^*&/S[ܗ5q$V@7 סDq4ҌYPEp#8`oap%K!5 ;H 7s2OVVaurdVuwom/Ѷ}yjU9C>eIZ8S04}r[;G<+$޺&tWDmco. {LIlI1UqKgPҶ yBo u,v"~QiCW9ܨxQu> Co6-[yB _)V\.yNюu61Ia#\jkՃ3>椽vK69#{]ȃ&'M]N10DJv SowA'l"ݥa\3"bSlV|qhouAIE!t܉^ѻ9.v:g~C;4E]sM+i:, g܃ff;{gn {OtHnlؿ퍡qƺҷvY|z9$07/Ta'2޾Tmv'j*GuXĥy -oaw0oyw@ "$aj-gձultRN1K1C9f&^C-xS=e;wk{LSü,q9SsT^:sa"Ԃ4*6AڋO2^([_X"%kso;حsYǹ}29{ˌهay1Z'$l=OJHܖp4'V<İ1\ 6}Q~D_b(nm]W8{G㙲!B3d .# FR}eS\[ pmjW؄TK&rbvzlpc\}\GhڪfH~ 3fRK矦M%ԶT qPâ M# XSVJ(cOJG":hpe r,$-9tyl9¦p>f y`PN`'5ׄ Qag~#QP YlE,zpo{q`CB«Ѷo1ځc jEu9;$X/PCi!G8239 K`Q4w19H0~~=6m5rňMe;SvlgOŁcXq6I|b[!&4j]>Xs6%<hx+ε,kClJY[p2ea 1 x&I zV$+(@7f3g2mi:..D}j],{¸i!>J>,?,,j3jۭy?E0ns#v,z8~Ʈ eO^8lw8[ غF;nAV <@h\E^lJ&CN&emrNXRCh+]tNpl8`{\<.NR;K ccn|i T`ٽKe3"=7IF8+g s#% 'vU^3a,gr_ҋpHʬ"ƽyp| ":v|;G*95)t%2V XE]5m.r`U M8cy$>OK [hoM;* ,,(yw<і1r#6;uM @&$H*6am'q2ML4gAe GN.KLJ,뇥7*X^k(+y_SCl M?$W_,=.8` yi8 y92a 5/ӹJԛó+"qvƽ+? WGsϏϽ:=9z\)b`tQUv#^9B5ںX ^ j֯I"քrbe73&&:rZv:`b]sqeN'zr $#60=L1Xt%8"M=iLLeT%{r {p[Nq^J. Qui1M"l;D1rZ's ! _Kφ-; -G բlw|x:8=wb >ø>xq\`Ee83?8s7 cB\ЖM9BO"ӐEJ4#ލ;N~x+SxˑqƝqǗ=N˿bQL[|\³[;G}< @>*8q9[E)d_5"`T BZ9\+8Ț/}yc m5zڰqE%֘.5$]nTODקgcuZCC<(/-%Xy8E#^pVBRgL>ZL5E}lv:=t՟z}gu<E5Ά/x2}V{ǹsM |bu u|?~4~qD;?+Ó=GXeRYĄ`L^H_pp ^"Mwr Ÿ;cOL0۸"-7Oc K[F,>Le"lsVc KIV Ly#nEw8G4:pt˗=uR[Ykи(4V5>[`>E ״1mkXC֔G$'rAǯދ7ϭpyVf^RK艃IziƧ?oǟxB2ɛ?ߎϯ_g~wHjRIYDŽ#GϿ ޟm-t_©{׾yxQ-'NͥX~}܅4ꉫN8+E\TKMu5|m+m-vqYR,-p+ {DהxR(<?]y3'< >~:>U.t_g?O>5?.b~ n  ̡q fLi_M_!bZB t1VB&@opn8 9FƠyؾHv&cqv>$iVchBF-*Ü}pxSt-=vBxO]ף  -?ѸS\)?5Qe8N~jbj8tNc)$q5v݋y#UDړǶF?1=ƍ>KcUYبavE} RsޮFˑ* d3 ұ0yem?~Cz11 9!aÂ=7vY$CvQIn $:^f*nzT@@!wʕ,P(^=\>1~WƋ/|k\xi޻ͷ{O9ĉC}`zx?+jV_V-6 oڥsgi,\l/0꒛Tw矏>P@|^P.xnłV:V1(Ck~-k'#s˶syq-Iu8IEA有PW|kXGLˢ(J WpBbDӁ˕hQU)a*Sɚe7Rjtj|2Q~&*8(5cog"䊣@[*q-n<*,!y+Fp>=\j7o/MQ9״\嶽8/4Tґ1*._|ZC>M{w7^; < seO?xkwO_W<{edvcҥ=J`"s=G`O[zSIDAT=?<2o)p0x,.g~nEfq,o~7k<"zU:kҳd41b=3Y''H3J`#m:5v;_π[Q_.rv⊗(>7ߪOxd gi,X#͞'SޤW 0{ >@\&#\BE$"OuDZӸ4fЊ|8#OA 9GY̹mfuٗ -(<ܓ\ fDU7IaCۺjB}s,^udYSdžY "I+I_ǭS:{ZS%鄥Bhq!xP#ƍX?oSXKY2G=> o`yr;'6Q3.9yωW|+Q,,D'S 5^ū?zw8^8%d\ N@"d"bm"jT k@h-r>8gX9)|P@D A!LZ@j%vQR\}LKNrvco>Ն4ObGI3+lkO+#۰(ɘ MCoQc`q;Ɩ>CZ?磂B`*$sy '>zsc㑑j83w;7n* ŋM.p~H_\[xN>3fYՊ?P'[xV梳Jz?ڵkz;^~駟:VYt\V R]}?ti<(۲WiY#-QGgv;*\ቼtM6qWh*Pf5:K1M:/J5)9 d?`Y 姹g7" d[yVNQk""WYl<~?ELή o02o˵=#_Aquٜua6p+渀ۨp͛tX^r ut[(^4qQ/bNRӦÓ~J`eXM̑H8AR1hm+`dI3|O4MiG-,9aCUXV1aٻ ߲/@h̛Tx.WKP Kp1ft))(;mu"Z'O~I*o &;%b'K.&TS#md%GdiUcQXotD_TZC8XL{E<7k%ϿYj|P*rx4/iK BjQ@iC֣HiE.O.g&b8n`.1L!s䢩Js{:0*lYbuxk\Ç/5OS/񆁋ߩx3?[|8>2nTUyBT)I/<3~λI8S>y㟆8^|yo޸yx_'<]V⚽xbH9.; 91!VU:-v(6J)tRh:( nR\c? y(/\2q 1X4Й7޹YjA]I m:nR[kb6B5EŘຆRg?wƱZS^2>(g5t[js`q Z4˯+=qhѷo Kcqփq~g.PAS`ݿs{ܻg5 ^ƭ 5az0L\0W >A ~j%w'?E{],!69)̣ xq4rp02'}BC;m=,N0ҹ@]Z"豝>?g^gFĠuG5&>NIh\41#Fu,J[LUwu\۸9va-qiM6t A<>=8U>O9nWcZ'3n_>_V.u}}q8x6ëd$W-%,,9F䠅C]dN֎`{&0xKvWL#3Iډ14:L8B1$f&eB&.s&6N2aN /ޮpo⓸sSxLcXe߼=;6{q|[P3/vu:p¸wwIܾ>@L&F8@<s(zG>'=m*ij zj=171p"lW.x2Qyg!!0If|GG ' m3"ivA2բ%Jsk7sGN0j.|Tu=1h@m $s+Nl:ř~pN;fJ? ڻ>7ǸǛEk- xh kcƱ΍cXN_!^&BQ>/8Nܲ7m \IU;N+{$Yo)\-&rqZ%L;9x(&¦nIt`IML'W%o]׏-uHJghķz̛I_ע>121ه.f+c#N'w@o!n9%ocm\+ȱ0`+gګZ<Ň W C"J]A@I.% jpfx}*χ-o_#@O=m[y~܇qYDZ (v>JMsVx q WRbl$G4j%{<1W5Lĝ]E`ÝD͈3r nؕS z Ji5zqc,h?q4xp{MN;9܎$V7[g)sٕikꀰVc nt):&KObȚ@Nz`gm%A3 t5.ȵ`6&Q7qUy=` ;KsvP6v<&QfHPuSB)l!c!+^MAALGM(]#jl9-ƥhcSؒNUKs PQ-Ya&N C@SRX1mn#]MHT03Lx@@sF!e̒;sg+En֖W+46 C:ͯ=)ޜEYs[m\ ĊLqg+<-稟;` 6ǨwٷӸԩvh yaw]dK\\Ua=1υNb>j@W4z "gn].$|I#0CJA LhR5fȌ%s^f&$dAdSyDȬvf$8X+(sߩW0r->#$klO3L 3VWItWtſRO2[ӒJL8@P&p/Wԧ}W`9ͲBA;Fej-}qmuM=Fr2Ml$]1*-MnmѳDB dBri"c٩ )AKE0[ s^cK5>R4̭˸]#I§ItFGej=~ݦXB2t r+tbӕ((~y!41T. U3.Z+&*Y|ͦ7X╶ Se5aʹ׼5BI; eǷy~Y]lH4S&to㗹TG_r4HĶƶ׍<+Wd|/;PKs=fd{s- Ue6ofÃh{o|aO:T 0bzؗP᜝Gy|EG•QVh 6o3{K٪)a,PϢ6Dࢨ@ !O@ _L(ɅfKfk&<܉Q#.f,gۙχs~ 'U`p"DүZsveNW% |j³z 1EՋv< iw9ʗ,rMl '!}+8c\?|MWv`Cfq>CɥX(7ڟ&Ilqx7eAV|,#~s3/KXy+:V{#cSc,Qb8΀՜Vs&=7ù>|Wtĥ6߷;]bn+Ju^,g[1ETx[4nbz_4m|'jh>hH&%e\hw"ǘSf:h |@IјYLs13I\k#Oun>“&l\jߗ?"ġ},}o%X{7iVqж Աg4Oߠ)o?i >6z35ƞvpv= R̡cZ׼LȺDHFl7'ӵKD&S9qU <] kƒZJ砩pUq`V19[@RY*g5ikbg-G,5iNE0qX4E+p=6ä{qr'SDVJٔc\VS`OWp#a/c7aC%Hvrvչ%>RB((XoXl]bDLMe3܈^0ǜb4>,uFts?>azb.\/ dL zd6EM9SB^?TrC1 lI.5k<<)] -> >-a0 ;w};}΅ȖZ?.h cgᓳ|{8כiעGL}m:F2}kO~房qTdamjs?9t3e<12/osVő)).`~p…*K[% YTٴ|*%iOܲ&5K FScH+7"Hg< h ^O@{Ϩ5_?mYmIENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/resource/background_2x.png000066400000000000000000004301411461511344300252030ustar00rootroot00000000000000PNG  IHDR⿷} pHYs  gtEXtFile/Volumes/SVN/release/SDK/VST_SDK_369/my_plugins/helloworld_with_VSTGUI/resource/HelloWorld84.blendbtEXtDate2018/02/03 18:12:16W)tEXtTime00:00:00:00TtEXtFrame0ؕtEXtCameraZZ Z CameraNn tEXtSceneScene!]tEXtRenderTime00:41.74': IDATxieבvjP 3&$[=}`;,KV(B?Cbݒ$8$@3PyZ+sν﹯vx=;wʕ9Nwߙ tΜvvv̹mB> x@ÇP@V"êP,:$@$1J-jdLVȇ"XNٞeо{=lԎ,T1CSje??4\Bs kh$ն[/"|쨾^Lq0gk^*AvT7xNDΥηyiO*.$Ø4h 4'3ዀ ב+L y]v0>T_%x٭dJc{Xu.͙{6P1.zx\sIc֮l=}vFb^eǑQ4Agso\9fvXOl8A=냾 l,玱~Ub:qmuzL˸6Ø^+itK ->=j!O U(doz  |ɛۃ?wߟ;{3geJ"yDžeD&tXzfՋǁkk̞9J+4gքTd#GuaɁВy;2猟@ .4=2Xgjf|6YL%y`z.9/=r'bᥰai1#%<9x:6\Df(Ҭk 6`^t2}np rB/u4E0kͬNs18qe?#LωP$"Jv Thg̫S9{$ue^qyжfݞo׭ ooS({kOٶ7 6qT/6.eoxᰞaX\ vV$r4)addkg,Fي1]>*}1S\~@m'1?u]E%מ*G2+Jz^T|KbG:23d[[;p̹ m MX]ST,t`22ΡFq*F*l0o1S#ddJ'E@%GbąZ>2tp%K'V[\0ܴ)|`!Vq(2%q(NNPT__K<ڮ5&6ހe7t{L!Wzn溇OH:pf:s5:2c6;}e:9fe)8M[/ntry&J[69ۚbcՑƽzV^z10UFUì,'/vfspQ*v]e`Z<i?AG0E I{Z G^u"0EYF 5VPvhJW.~eX2ٜ|20q]ie`} MS.nt=Xii=y 19Wy!fZe<wg;sLɞ9w^ē:E'e)*/g-bD') v4?}C5J#C6|yWZkH#֋7{X $[yc#92 kݰq;$Or>/ 4¼jIe fRj < S_Z\ŏE2/s?`P)$jCi'{_ϑX83ar9ayg0C|Xo,Z-YHJǝf2t>lNCӧWcX y&l {^p-^$5k.xʯC?< #u_ykT&Eκt-_To`lˏ7jKaCgM05݋;|y,ZT5x2㘉]m/rΘ5en=`eJ|if?8/=GN[b[Ȟ8E].-90:QGR<}J$r5H{9gO^RORFX{)hriJDuȄɘ)f$PїpK&G5EPZm\?Qh B,)pt\u-48|Z|Zܞn.sKK@Į7>ρ䮷LXԾI's?&1$+ <ʗ+WSe~i.Z[ݹׯNOtgNv϶{ Fkr^nG [6^;pZiϒ:sV>}8kJ!^_̵caX?'S^jds|QO1dr-Z;tzpKapDgyc;ZȓyQB /:  >ɤmr*#E498vmqN@ꎩds:`"1a> 2iST q(_֬N388Ǩm/S|:6eJ*u83Ƿ H3"H~,3|s. Y9LPB~hN."anBVRJRɺroOR|]1 x7x>^ۈyb>;gcs *saڏ@@{y.7 mM۠c/֥2QέA3׍GͮÆ p 1^p&XXzmɥ(s! "YkW${[3RНasO_fN̉є13DU6 f~kOSt-_LRy\H(^q*5 Mق@܋G%Q3Jރ(TF||Pb(Hyu.5ռ"L;^l6\R6zeTfI32K+3'ՔEA pSW\KD`o!90~al^0D㪇9(y i`CחpxBKx]a=U]cR&k.i>`R,:M Z7dYޏa sL!XCo;{S,PؗWTrB4TfYP{hC)d`3 !{ tU{q ގ(s:/!7喟+mtrgƗp# H㙳Ӌ;RARk=IE\ܵ- D~/GsIXwRwLƹz6f ]D4$Z};啊zcNX :!"p(B!s*;{|r9ϫ~ISM2$SVvˁ.}peOSλ=,8a;窳LLͺ#]Ƨm汿czo=\ aY9mZ/11 K1:n Dh6kF+q;ˈC&]  b|&@3=NQϩy2RֽQ8b?a4D$ n?ultCv%ŗ `bQN"I/ N0ς[,N.̝qV @Di?On/ax#O/XUܸ[| HH"~ΰ+:D"YnKu11}.D1utGuwʔ*_똫@ ŁRt^d8FN.3_[Tǟ_"樟xKcǣAU1FC9o5Nz sh{ċ82ϯ_č EaPsQf"t)sڃk4(m'? [xuDϠhE ŗ)@8a2,\:y /lG ;zC!n.,17WzZߨ46Tо a+ٮ`5#1ߌOoȺ5"R1r,?2Zǜ🞫sbYsdrq@ԇ񼵯ʇVVFX$k>k#^kcؔj*QM?ZY} /(52^O'ě5!20Jkj4"* ^_l΂/}'x[ե%.I> .bE<*Ls߉[7莦)H?"o6.'S$9=zWss66r=X(>B6< ũҊT{ٓ8=AȆa(ETr .uq<7p~#|>7C7s⨡͗`9cˏ70t^7hW7M*3)v/~a#B@MKF/t( aY5uE#_Cz,R74md| 2g@̥bfg;.rNאC%mb_BG+7z7d'C|acU{ ={VRCz嬦xͱ3nqB7,i o/Qp0>=Ty$;ޕCA7 ڳ\OJ1W7}Z‘18zqxLޱ8삯<8Wl6Zm^6Xgf'ceTZZ|b]cΰ*}8q_V$ޫ\1_Xeό>t\?6q 慡5`nvʉΘps"#pz0f]u9iz5آU M4"NzeWZ*CضKŇu1wug2p>&Hczǃ/zйn|u w \⍓ + ^ua辂FP5#$m$b_}D!+/õu{ /莒⳾n.pE?@a dmIdFOE/N8Y&Qdq#]S?X4kd~J蔊Jyk)baő( yn0S*"L|lދ+y`qhri벱\/#қbّv~)KJ!#$'ʼs]{pQ=800o)GCpwe/ÒcM1l~WՔ>v3_t&cI60 'b;\C:G5TA`F&Hie̹Idk9NC.0-ClNӹEHg_c׵#Ae9gȴgGhtCLg;4CGKDְ$a|$7RˑkpKKШvN;|ay]z``3 2) -b~* G= zĩ]⽋d,L LT.H I1Nʋ1r/=ڡnǶXo.COl!kY~h>f͜1To4|t:p&3l̞dεpxw=^xš30 sġb􆁧c+9җ d a'~P˔d&GqF B"T*T@ze(z"$"ILJ~C ^8' :kz :N!Tn~&`\6qG8`Lq+fBA/ڦGc22ɜR4 F{lf4az^u\..c4V~1+O{\[\kA*xxsf*:^eG- 8pF{8"X*dYם\݅*Mb7փ9 Axlhl-7n8gĊu`߳Uz, IDATr/"r4Er ` .W\n k1t}RP ЩrMPFw*d\S !M/JSjr~}&|xOys ꜘNOFJTf\y2Vؼ3Zș ɝN*f|u6-L5&ɹ.j8Lb-`r soԱK)y$?ʼnu>hbo-'4t2ޱB*`9|מz#Kyخ&_0%eb^βQGnaQH.\XF9ZCO瓰xy"TG\jg>t0?1tl0 J[Asp_HM6)TED=é#VF~z=u|TRP{gr><ò61}}Z\XS^bkXc_]nKc@Ju.?X |'Ʀ.IiօgE) #$.DqNJ Yr Ş͞ksK4#b.fW4a\)166CXhON =b3: Ĥُ17,Rդk2Ӌq[ #n\tSqKכ4199pMkqM>t&) ʍ90Nh"[ńYqzN (͖/]Z9ïo?_չqV"6 ԣTqqX1"8I-^/3Tb.KEn LdtpL9Rvo4kf۫U5nTEw`[{)ȋkA\Tu؛^j25BFZo5*]ᩅ82 bjJ7j ,;מ}`=֮t@y&`q.ǵq\sC>}c7,_3(JQgaXBuQyw.7ΠK#9J5ʽ?CJ9 nPfXM NIgŠ1,=d=;| L$1WQ NmiHe .s9Xʖ0 ~}<' R,9e9^G2)'E62ٹ443,F{.QNDd,_i{vxhZ'EK1|+7Nq\*vd(r3.Fbqhn!wH[ LWX>.LiU/菡|U*݋(F&9˞~BMW1(fyY6 f,r0\mRs$6&<"(>>Kpv"Iɞq5JE!2B-Ã+H(مdGy9'0I#4,ðkx.w}mT0\{wV4\WƋtX|⴯jm}ye۶Z\-9:e_.x͹FSЄq2!$ј$\k&T5sЫy IizxB^KD~bcONYWͳ1\:86sAS755RP69Om3M~"+ =\)#xӗpas`)1<{g:Ve6# d'熙l;cia NkW5*&1 5\f0蒯x͓f?i>+Ae3rlc|SG2Mpqpc;?LOpmsxlT Qљ,;M}ok7%O5H$Y8H'4#`6Sy-cyV?&@-I)9_w:J=38+9Gν݅6H;)^^{ZL¹ Y9_ٚ4b:˨ۗ6_u FXŹ)꓆5Zg#ijWC_x"a'7YM\bTӢ״D/>Tvhp4x^4b"m)fwQM]0K:m]ў X`#-Y9XaSQPImǿ1Y:Mn]E WCsWHXtQ/&Z "uRPᔨ+W1 uyA\e;Yබ 8WRi~'L,B|5 . \cʚw&ƀYx@Ro/D,W Ou{F4GZ;qLQ2dB jicȌ>ǰ%),U+3,\JR$SY,:-œ;IjUsa-* W /úV|rKa٨~wRy|S-EF9b9(Dfi]3Mډ.D8BuHYNTr\eaɤ۔" =.q$ ݬ#xtڡL"8HT~ H'Dl_.hIM1Ad˹t̐X5kHX&= 9ƿg~s+qr# ]+YZJ=qbjfīp;.<1s,"Rg_9*^, v_1`Ǻx>K 3n qe\ՐkITxi+ϕB]R.1r14UsytlP>dY*I  wH{,;e{\[{,/_ϳKcd2¬iq_z ~)r>T;z{[˙s$@s3|PyW2m+s* tldž1ȹc֛>;[񨖰iunjg91tԑc<.L] <7J͜sG"h4BJGM%E 0SBF)Q埃cc3_v;sB2Ra#eLk>Tr%a\vM-;Gc X[?و",6\q*䂬ro&L=I<9" "ָ(DK6WW_B/&$|$ej6OP˛*zQ:jJKϧ3a/hױԯw.88&m=w],+,׽kG\>ݟO['r7gO)$}u3m^VS90 #Yc{#pnގ=f鰇; a}yȌ,Mɗ&seQAͭd " .]?у$v6h:Ǹ}s{nݿ-D 6hԹǟ.>vWF.Cʅ&b]y,aͮԥ+@JZ' 1=f̎ D.e@dY.y0Tr EVM@Xn*圠/X ܤw:1 W7[&&˰gV% zUNq<d&8# lc:w-6iQ'nJ?׀ɏbS:nm6FXK.8\c8/d:`%yv?]_\_'J]gcb#gsNYԼkוl섩[I:bV1z9CvV)0vH=<5izŁuZXϴMc@KskNjc57*.yiѧ 8Ch29+E\FJcmpb >'v8Ia[rKc Z dϘ&~wnp~vwᅤ}܇[W~_ Su.=vۅ>n?GkJj$BZؠcIꖵ`%D8lн۽lv_m>p;?G3_' [vmOE.sn{Bw~EĜ"[:A n:IA-s6ܨ߇ixİ#fƙ5f e I*|IsCT4tBSnz"%C!,0d'[+:z-;=W~ zt`&<$Snv%IbTAnW꽘7_6LykϤc=jԄn.5Jr%$pF '%?YO[xĹ3WoO^]p^M:&qܺso֝{ۭ1÷}vag/>ϣG7GU-5dհk/,矈6l>MRȂ4Bk]X#wen(XrRIK Q9dbA%zHQC~Љ`Y3C KCqy1f?G>H4k؞-4_j_ςJK'se~K`(5TC؋ꇍQI6t<ѵByb(U+tJjIy!2JQ{yl-v5 i;eGڧK ),w_xebG.&ݻ3?rzon7۝w]'|{K+].]t~Ï>~l}zM'?߷۸{]xɸY),ORvBf= `ai ETCPUM`fO=(W *%Y&nVZ:5Nѱ 敫J$Z=)Z } K^ʄȤBI c<2z*ԛVyD\T|Ӌ9@( s2g9ڳU,Asv/†)uX"8}`I~X΋|.wnZ`cI';_ng? hhOn׮>r핗ߞzO`OwIwnonq ソۇbow߶:qO<-7Gb¾ϊLẑv h 6 ĵe| !GK>|ۍ`ⳗW_~a{綧zj{ ˏ__.^+&?*6寷_ol|v~Տ{|==kH)/]Қܣ$mR(rΓ:ڑؠ6!|`q@=0|uZ8r:e^\K n'ourRNMv f橍ڸopd>A){`'J!6>JFԙe%ޱ//y8 y'oa,&|CGמ}ۯo^xwv;Vט{{jonGm|ۿ~wgoO}{ۥg^XC!sWQ ЋCNߌoG8ߎ_p)|14ޒjbnBٽ7=w>6Ol"WOW-{<rMyyחno?|wqs'=/EJu@3yca}eil|P[ri๖7D) ;:⑛`-0GBCOۜc< qA 2@ep'24rBe3)H?Xc844rvF0CzbY1irN3aa:O6|oFD;Ҵ:'{鼁m=zk zǏFb,8s͉>X O&?{XJ IDAT=57У@{پnN8ksҍiiӭ=6#*X98}!+T _wʣ2( ,bePu^f:`rZp˒O'c_.kkRD&ӥ)&[Kɲwa_FlsYbtɯ:0C6n\>|p==/l]{r|m?W^ݮ^>ޏ{{8lzظޛ~gu<{헿~{b=vRrX74P{4]o/>qܳаhR,駟ֆڳ/?{xv}& 7>|.>vU\g>({d󨋑[ 5pM¡^y3]ҟ'$6ɒl 5U]ʟй)8vN^D#eƵu\b& Dba4īW3WVK1s7Ȉ\&zsdZzd\טaIT8 qb깣LĈvp;4@\ghz|"R,9lz泮 X-&xՌUFQ׼t#m|tkv Gyپ<og3m^Cv)s/!;JD<O;OT'65lJc~ugG?Xիn~kD LONatd$I wMK/_n_3 n%1̳:\q/?™͏>s.|G| -j~Z}-s}:_9';wnxy'mvU&ӆk8t @Ь&?~vi{⧁^۞94 ~ (\nF㧃(Txˍ07W\^zp=vb[>WصWI)H]E=,rQGvϤ! !]*N#X̙^{Apbg̓E[\ N!<@*N)q|8?M"cB:dT%Jm~C>ع2#JQL1Sc+=9Pe=#ѴB#^O62y` E9X5kMAC1&|Ol61l7 T5Z٥DŽbȅc:so~ƚW9_}W=8/}e: NđW=9m#G5 2-ZНu>N\nAe@z"ro@o<5K1L^qg^ x﷛&n/ۿ_n׿|/ܻ*~|׽_Poڊ_LMO?bۭҳ/mg ԥ̯69oxƗMs׎lx cˍ7nf\dҽ6?w/?۵gi)s;t/~ou;y[E;r]<닏='~V^n|mo|\A\`(g^;FzV3q EuЁs܋,c(eɒ'X!Ms,AC##=v%ۏA[G/%GM,XYP\z6|ρ>B]74 $1הu$yE\,GE7 hMtN̈ւSC͉6z1ҼwcW/?(\_jW 82|p@cC| %>;A 76=k88<*$ep=C|dht s#CYab 3*4H|'lW>)D3#gs9k42XlPnܔև9upo`ûaK/1'ۿnb-?p 7on-?K|\=m:oi/#8s"V6CciSpZtĺjFxW/)H %*oɭԵc*zNKS=O:T8V,ư a2 k0feE„,](* dqޒԊoğ*P'Ɏ1{ك66{vpخ_u\sx8gh2I!3.?_*y#ˎ\ƳTާKDI%N a-iM0C=!:z\L:$ȸggew!ZzP994>_;77H?/g}y_P{9ˏc/xW{f{wazEO>KBɽW澳D eGq~oH4>ӛiŎ fF 0_]^zc ڸ^G.燚o?ۿO7q ws|;l|p3z?EpĆ/5-p6Y9x-Do,{kBdӴ4HMI= 7qՀG840x0q9vXVxNnB簤$#(H:TZNqkfKzo@RJY)H;R,a)/LQ]|ny>7'8?zuD #rʅ!LlR,9llNȘ)Joi^c9biCf{_z`/7K>]gG?~曲K/=|an߼}s)W ӝ>Ҡ_TÆqcdUG*@J:`|ݏ_yq^{v/_1Q_A|3/=Ļ5?ς+~[jݽh'Or~M>G| ?!#QxYڸF oztZAlJHzTK_\tJDTW :53?cEXE3*N:īTKAz2m-&%T ^88K(xHHeX*/ FΘ$9Y8cS|/LC[Fr2 sshg(:WʷӟkȜ}oMMeZ -'^iG4^;2f`u9z3Yt1}Mnӹ>ٵ}Fc@~Ƕ=m)}!ZÛ]»\vΞkZoC!{ zr,ÙcM=f'wđ<=r.cRdsf$x̫nz; @w;)I_qizkO\{_^[ `qÏY_coeב -~ S_^GGymמ=yc?Jq*wȍ~W, |xPUMKql4Ħ!G~_m>qq{ߨ Xo}@.na;FS|m]]663̟OOwvb~kom?|퉫Om7??_|trF,<Ѭc~Ҏ^@$">c<ypj>)crp^^f_trp͕S9u |nhxzhY7"LGM5DJmБG}I.\hч{`'ps<*Akˆ :*= &\t3ɞ/U0j<O9{JtRsvobI)Ђ*; as<".D U8##A Nӛ !yIHywԉMv]C<rf>zXD tab^{6\[&f{;\ZueƮrkN >ù_LӢGO㳃zՓۉ\T-E7Ds4}N.tQ"J GƙE^]Nܽ;Z󳵗\^ygx._ࣨmkb]{n[-`sG.?x?c}}USۻo_G?4Js9c_]Z g|.<8/?g#.^w{U|.6ܘr_Rg9CC5YGOt6q;]a~G60 Co9۷&ИڿOof3nO=>ؕ(jg(^dX KwT:f.$l1eLK) ,p/׌59C{@n-WAqpvd\/F>VM))'[̂ :b BfŒNDk8y]܁P&n{b"':U06[@i*j^i%}):$\c%z$D*HIa5p|lSJ}D{QL;CS_SFmSK,kBKKB.yLezm\#z_u^fcL|gdžfj@l%-#!e9|'a3avYܣ,Z;a_ 5SH;J/0ךa˽sXjC ʹ@2@:ka ;k8U{o|} 7/%@7Bomt㆗{<޴8^_?t#&>3W}ʏ'od> n /ԉ>z:?_p;zC' L 6w?yoe_P/3?nosOË/g0㳽 ~ _Y~9gHeSGƒ OmvvpWVtFC EQ!u=iϚN@9LF /'ӇO.?4$\$+A1 ^=fΟ19N]` %(p][`cd 9iv30\6dzIشIk .ٱ)vIsl_p| 68CْyA:Ұk^Heп@:|eҖo˵t<Y6CC8L\¡(cChgmz<3a JȯstxD|".(^+{_wߓ,iEpzЁP,-Oui@~UKa1zsMc3ɝb8ojV0cGqWz y^9s 6P'ڨJkPwm+op4|r5MUj< RLTo011\Üy9t2,DAul¤_2ԏk@Jbpiɤ$3qKDɘ.A5V *6{3/P2刃kSCQn_XDMZ3 8/LxQexGz_#5L/MjUfxnp%h[z=`?vzK9~'6."-" c AogA^(XAyB1PaK\Ftcj,piSty>R=_ ޹W_-mVфqWWm B|]^G#d<^7n\rSO(.f /!dnO3O6:Auh{ I>2gyrPt٧X)xPfM`Xve\Xas4o4Fx[x*Hg lH;*8-HPGBd~Rg3g^z.g]}:s!4Q-MQME.OL3;;ԽʥurGD._ ݿL Sцa4%LϦ蘜r_J3{>hd/K9;w̾xQ'.sbį䚓)*i8P>LI1&˔u>}*zܜq`vmԅ<.h|orDZ0#a!ǖ2[뷏]_]W"})?oeg..tK>g}]l7_iof/}_f^0/]zxWI7[5j7I%E=$ox1 p$q#>O+*E2e~ș]E ^`ann%ʌ-Ս/2,(2N2GC\2Xم{Nī'T~| 3+àޏJy|^jFq6%=Wɴ3`g3fG=^Sc|X摐Ӫ5ȄYQT:F&vt"NtI*bGEJ3}–yX*,T9T'<6?'tӚkx~{Z'r,}8R IDATpo`~4HCAy;z?/e喙B- f =۟k{>1䪳烾|s>2 q cOP:K)[IRkjA`*x,l${A+J~4 KtpLzҳ-ZϾ9W MBɥ~ _AQ_/%{W]Ʀk/=&,g?Hqip_Ye&:!7 s(T+; /&&aH\/᳼Jbq@ůnf2@@O iX~YB S=?[0ˡ7bCetGz!ơ*e􁋾AJrJqiyd zc& Lks)'ı-Ok3 N4 ҝJi$cxm3-97y8f/kA枲"ج-"A2As:O,D>3Ŵk'2jvTB5wJaSs&j|Rp{l5F59#OsVٗ:E]!OC?OA P2te-NÁJl#Ͳ8%Y9^f]^.&kDfn_tq`z82'Y3_w?rvN7UXK$c)j7@F<_]^bxXCN^߳{`]Y&냟-]6AP:+7Ckn,ÙPF߫˯.wxM}:!fpD~Ɨc?rK?녎녢CHPKe&\lK1*qx;\Yp5@;=~OuPrC!Ha* l'(ݯ9;($סw3я/Ss=13h Sbc)w̢:p: ,skP';{E.9t$c7g 9w[:s D$SDT I"pX7c_~:~ءP%d+-JH8odYYsUoeO`ȑ9gZkյI7U_υ9rPꋗoNp.O }$|vr"+B g?0PmfL֨qkb N'^8S0\ lVqaoTfEu[|&I@QzA6`wӝh:w>D8SM5f>ӘuN; cmt. 83Lz}LLS?wJE沭vKg~mnRl-yul 㸩(茰dLݘ:Б!34A*r4V#l4.ox?gߺwd{N_vK=5kJPQ!srFqk}3q'`rTnK5= S.'<5NJIrC P+QWDbd+&F8+X\r}O ϋse"^6l\+$bXtq bD"!v"s*8pܾ^Zމywlq+S h77⪱Up:cG؊<WXr!W&N\xoLW.1h׸qC[y؆K YvsqVh+P9[?b:bG mPP*'-7Tæ?)|A;zML3X]HA|X_Qs&n b܌!tĽW*F|!1ר "nZ NSjѼы{uָ~AtvO"8ڮ 5^T@mmlu2)7ο16%XŰJaK10K!rzP+̱P)RJPpu!ن oq7Pt30:T0&'slnۂ`̹ (è]*!>ᔖKԡ9u{PQwLz{D1󦍫9=┊ -A6Ø:R PA)x<NbUoH8Ax8s<6މޕgk}8iyjmsgkQ8K&L%"Nučݾ7ot-B\XȂWAF. eܡzpw7Aح;`Ė>Qy=+C$V A.$z͆DzOFLN^܈)ò{.0j'*j59Y˱/FHsDN$By6nP.U4).d-nVK?e0[ņ3d'w]`;8Ig^<|;a>sܔaVe>xS^=U\Jh~}_~33׾b&b^ࢶhdA@B/K-@lI2b|OwPT*^Fs &chʏ6_G4c7s9o ו8)yg>5qy(3/-O>/ <_;5qۿ.z#Nh$ݷlq9Ol+6H}YE >GeY~'9n/x1HpAa 7__J0f<,p+b1f;O~'>E-υS,rYr֗KX>m7)jJ׏2 .xɿ[/,/=\b?O|&!Y410f=YpE\ͻ&<ib~3x+%6#g^7kqP WǼ9>`D Pk/ lCxBnk.T:Las zqv08P=Qo3k*hE*̒ )+E<[(*uc˩*2*^K1z}SGkasCE1BcQeUI~Ot+0 },ݦ q_GR[ANZbK7[E~)ܗI<BׂV0ۅa(1ZV1{H`F9Ʋ~ݷN^X۷a\>AN{,߾< _[?)jlf杸expƇw)Xp;39,`YW ޸Y |>r8c1K1AP}/V/>\I<@<,Fp;ạ(ǖO?|[~EsW D^~->83XDЯfabL__1ij#Z^ӗv~vf&p?oayX]iٶ!H2Lͼ./.Fm^A,.6 Oc `ƾfG,5&GޘZFZԏqۭo(կ|c,w4blT/}U}lƙ΁3bqjhqx*zDa#c^W.%K go53!;)l,/T\lo3cp;tiyE/4tYF6E}ɜ86p5/풌uLm lrB>Tc9@?&ݞhZCvGr vVe[,Aru,]%cI\P8Ş%C݅7#t&k֘t`-ʜBl4~6*G| y*l~2)>xW%by[bS߈ĢւL /< _o"Xsß_Ŀƿ5\]~wW&gwq˯O?C?`K4;qe. P63CG FX\G7?K1,TYr?ghyC=|_ՊI>&5y&'`{@˵ s쨁IaFcZRΆًĄ9~`*ٰ`[ p/'AIi3_YVO1n>DMvIo5qi"8l57ȢMÕE9)4'ņ"1Dۜ B"w8|΁GcHul織) ҇1g^j喻d1ƵZbH9sFrgHA|ۋ2!NuEM15n9T&>s/66d/~8=O م6c=g*-dq3w-q!q7]<zs},х9/zeM~;ߍFޟ4/';vU\AmM;2zWAY!lm9>h:KLOm2sdy&mvh*.[&ɈczB3KwrW)*\]?_Z~;˝;qW{vKO<><A'$S\.E}>.u[?`<]+_~/G cZ\ź_Z^{)֕7,|A ʩ^gw\}1bTO D5=qǞXxk«qi-v)-p2Va=;}ݾ/e)wZr4Y4sko}[淗^oywbp)||uYFzN2b60%X3qA(b׌|\Ph6`~Iت 84 S%Z'.9&0!ƴKV\BbT;ZWY> n5!ŷ.V;0v"[Ua̵L55*/^6D}4`lm&gQ-+zBgQhxny}ӃfمF8!peӔ#: [*Y"}c'\4~-Z|yE`㥲P0_Gēk^rn0붷fڌt{ GāЂAԮR&#sfkdݭ- n+h·Q~mеL Q5qѳޘFԳ1):}_udW{?tp]nr,ˍ?K>㺆-7I8K8;˗O'ni/Y{.J< `n>㧟 \O̜kԭ nsF!z5|% U)@ $סB=bc^֋q!sJRfYEr ~y/?F _nBeHcBҮBUGԁ cdsq:n",Dֶkф(fԝoj1*ıg\PχP n9)CM~#Z1fl!Dul Vf}B;ϥ5~rj𾮹=ZygXwv@hcZ} :OaK.Mb|ppߩ%{e 洸,l8%.?_v16:Df]nmQ8(v=VUj] aƊsO~¿yiW)0fu3i*F IDATl>Xބd`VQX]&ܹ}+O4rޛH}g77Z7,h,ݕ>ߢ3b{??Hn`?}\>\ʦy#!;u`Tm;-?N5xXm,j5=;;NKهeKdL1q1&+w˷ku#/,EϪ)0_&qv 4~NwuJ<gZ;c^V.qMQa["Q/{,8 k΢"f]RP|S"=7CoC4Y>F4:殉Nm3tL[ +?/<,q 4;ͧە%*cӚ9HAFh[|3rzTANBt%]=.f~xUWZ07!7e{ta7l~3O-kkq66%^4Q>f< gqZ5]2X ʻM u_Vw`y&n`:7P'˓pe2f"gI(5N'~u=>n OEXLr׷^|#qOxqY}-z^<^oƝ4pzj?[w/wX6s?̓aXtњXc3ЍΖE2rmո?ۺॄ2ZLP0/o;1g~i:Eٳ(fҘ$~Ƌuo͊ݧ_ۚ^".e_^/QQW^fL*t'L;L2^3o-<=mPEfS$m}CnfqĒtP b1հ { Ajvyވkf0^ٲ﹐]ڰ>C9! *AY?k>Ml;h*Ɲ#)%zŲP~~F3SMaakó?]:^ak>ZcqzH$|d6sG}]w{6~=sNj²pfkN-atb +kr.˲φ"7&r[_gZf kzLj3oQM6}nck06f~Xsh~v%`]nljwݿqWg841 Cw4@;?ZSZb'C4}d s\/uח~[q8⫷x~y捸ރiL+6 rݸ#};s!5I܊,0mctmE?:p% 8ܣ,i$OBžlObr>t{@D3e^U2%+=Dm.'{9jkebǼwt t(o\c09Ɋ`MGۭJ.b2|1z(6bCLȱt}Jx^`1$S to{XI=eu\>G3zAg]T]_.;(OK:P>GNO-ѼM\̸0t?' uɵUT&iÝl&1*7}?|6:g\wcyZ\Ngw޷>X^x,y_ܝ⇃fAC%^V}v,ro-/ŏމ^%|{'.uf > ub4t}k,=AȾxbG,X=7Ze?~rybrOܥÍ8{}+?/.~=qG,r+C X^[gn #8&} _LTp/Ky,Ƣ'WTKhG2| p+X8/pŴݣT9"~ypbHEvW1|3Io̷Ϭ׬gI`E pM2? ^{F*Uk-3nDŽ cp6jCq"6>N6m\7Jw_t ED'IO =x9Ь[VՎmfk+@dp}nUN9{_;+.rw1E|=bK}ctܲ,C^{#{n\n|Xk;k1eSֻ[^N N$fHփq-0gcqLq~CFK 3HOjOp:z /O-|B[,o?羿yxG t^k\|W&>c:Û?@EB,H-hmcr*Qqf5T9 N~T6-bw8{<^0&|ʔOdncA<Z7w_rg%aFkx@fmM >l֗}kυUUKYޏսt6yBϐI:;ᘹ$Qܘ5&r6C,ĩw_ynyxp"0.|q~D"{^ExO<L2`*6ǓQ:!ǘpE~׃VklD'7-YG8 pQA~|Mca{d qeg 2<+UFC>V:̟'y .[嫩У. jմdߔUuLv> |k,eSc;e˻;ꍟG>-{~/hזyY,zY*KphrO'+cG܍Xgtſ'%!򟌫մU4Q .xeESo՗ τ%yepq20qׇxrGbuq [x`KkЍgu7|뾨\ԨL酣cA"J 1<ku 8# 0Ǎv" ,TWc,O]S5G8ǂ m#O[@+99//jEccgSlT|pJyR7X9rm2J+^.|1s?"40dkGf `4؊J5'cQ^8Aզ8ND'F\_~gx^\Mm ;zqЧU3=/ZGٖ5wsʞGc"u +!sK}9Xh: $_l+sS%*Qlq\X3bzUvb; { \}KZD_ϭbzHt_ _ELtU +.I@`6ExӀ&HGےxrC8k3,gtȨj{!j&E”#IZ6mzaź~.NB><k|-ΰƋz=!o%zn|纥jNĸ|rdxZY&ץK<8?33!zb猧^Abg4coO:ȉcۅ9o3c $M8mHjB3fftI25eDk8!i!qjzobW\W)Yr+V.K5]XxǙM~xCE~:POQqgg-DNg[_N08G>ƯGv)+ݝg r!=%Y';(kKΣs2/,haP wnQ%/9X85c#QZr<0x`ԥ>,;9=jؘްsH4n9"c8l}j[9_]V6Lv4n9ɘB*${^jB ]>;k]EFEsQOjw[K Qs{A^rș%Y)rL, ;.Ds)ldT6C1K-i\6HQќ5HIrp2q}kar$ sQ=c=dwDF.p3v[:]ܰ'.XZ 9RXB9Q< /{xt]Yx>icI 'A87|1vqǂUy!l NŸY1MvtO Vo?l, cl\6ŪBblΟ\$$5+tnv j>`a>]aykG5gTOE+ΰqAJvv4-CBH&?yB(9Y0%F}S9.?Xo>LќGMc*gHM4aۃy|1&B sl{]0wP`ۓl~g>I7INZkV"e٢,gq uwt 9Nxm79lY{75UZy|8{}-L {WI F; . )i;WDBq=sjm4j10DÐr/+n]|Gu#s#4=dY(FXZ[d(P:zi<>LFƝ IDAT?۬B]-;%e޿P,cN ŵӌΙscjwYڜk>Zc ݨ4 1m?lllٶw5Sh<F?Fseb:8BJ 5wL0>@KUE2B֛_EƹW5,%1TkjC3񕽉k,c># y26!'Jaa5{$'(\@ JX\ |jXP 6-S[rV:~㹸5ƻq h> =q}o^N /zlgl\{>l4~qNC *X{>dKg.tdQwN3qG' {s{<8=?̱GM.1'jLF;|[A-J5TgQ.KT@݃]e?z6leۘ+'~ zZ*g*a,ukQG[}P,lhSO5Ès+|ez}l>́,oIV/_W6_%Ӕ.Bw"[:[+i34C$Tφ:|xކNL°N/ylMh˻m^rs<]4cFCWJ $wƌpA6>]^}ϩzUHr[@Sׯ2 A~6;lNUXBZŲn|^L`H9{`=l_I߯/ۿOsE ׀a/t21gmo,Ȳ6s;GC\s>8=qب sa1þ=q3lwގͽ}ѻ:[FZ|?\Pc:>"}?{31A=2p6:1ZX[axeʭ簅_84cԱO6S%[ĥ3[4!o9Va!u2Σ}H{i~tPώk?K!\ &u"X9F-00wþVnl{X5UJ{"nRG~pXXy'@rb>CR͹ >^>Y9c59{Ǜَ9{}^P999{Zw߱ٺ5c.zXsc?ؙ|4ϲ1~܌m&s:~c3~];89"8ԇ'u3 \BՔ;;庉!`d8Vpl1uəuU [Q:lޅv:CO ?g -q4^G8c6^;6t_;#\)ƆֺɲCo/d&"1ع_n߾{#ӹu=).ljYIzi0Ձ= l^Ss:scyW]vz9qȠ!D:83MΖ 蠙:c}˯1W[}"IV=>ljhX AN_ z[e:\8l=Ed!3ދ[HsqZlLVye)ޖ&T쯞8:nnJCPbVx3Z p 8 Exv}1װV~~ 1!,e4ޘ7FQn|L Hk\AۺL䉘 ^;VN*e[e>.Ͼib&tDB"^RLH6 W8C_Ħ-փ5%Q@͝X\м(^(u,>l@;7c }ǚsݱ6z\_\c?=4gnׁ,wa_E։u9N{rl9wYvGe:6w gM-~gJַ-;A6yVO<z|7|ial}u*Փb3@=Pz > ,3S#I1E} n$po@OIʙnp=6d:IsF@QkP(M *D-èT)ccw'd}Nz4{ Ї |*, 1>QWj6.^`u: /> ,:7vc[\{Gk噻cޮw۞9Ӳ_ܖgL"X碷q=㐉Yoqۻo._җx@~e~~ky6^3tCcχ8,҅Vtɕ4Yv̊^(Nl2C\ZDvhHY+9!溰& p]r[58-lMF-HtlT@.vn$Ioe]= ιX~w 4{%'./d:TIcAvn6Zj#ԉ *qTįwNE1q<\ CtBRQ-.ġ atp*=eӮwX8lA:qG~8b*PS32bQ4K!l:x A栏jJD`GKa{5.|\S~/l@vy^xӦ۹fc#Oo1Nfߞn1ZGoغߺQ,>dY86s'ׇ8}1s<;X~[Z~ww~__N},t-'<m Q{AYӌ1MonZ6jao0#P?垈Гf>cS {֑xx̵.+΅u^^*Y]r<|&b旀}6ԟ)l&ӡ"~#$>\6g*GeA9 LHX>Oe/^5sqM( )[f'dJ[R 2pCHtDej;~'260BeMDUPt|8_ b /ްYVӄRgx2 $ ْ/M\b|@KĔߵMbh/j:/LHX:715X6gf~z1wc#5wN]7Z޲s,v04;7Xo,,H̛=\mҪ9 ao%v}r6i ETX~\ g Em 3T8\cK?+ŧt|G]qZR\3zw8;t`.Z8/uam1z8{㔵+y!#i3mzNn3G7(mF";ƵX>ul=1b:my?ۻ89G/O<Y^ҾW 5_!>ޏc_"b}es&4 +%i." 75::ݻY#P򾱞;sYl"eV(n5!U9v fːkJ:n~N Lh#f T6) m|&Z36=}ny$ʫ4>C #{lSdwFb43; V"gc ezC|PLɥl Qp5 Aؚ1}Gq[ |% "Pg73xbYg}3=oYw8Ǻo;muwezkcsoxve8fǦkw/u6_pE?Ke c^2eG ^+Ɲ Gߙ͇(6-N1WR +%`B>q؈@fW훜Rbpx&9cs;1N[k݄:{([;m|.mEsiggg$+ׁd{`Ȟ*ÿigR<ŅY.u6]p ;D .Lh:П"v}.P녥65A210Yɔcj80}kl][uܖpdyLðFsvXyM ^[[;vzdžkƠc,wkQ]^9g N_bmyݛ׽g 6cӈ>XcmgΏηzKw_@a].uhKԧ_|qS+v JikPqE#h.86'T]^sbcZ:ǖ$^w"|a9tݛ^~+k/[f-YcE}|m9rA%l~4VGqҜͲ{ D8.7ǘK3yr7ggdvл:ptXzNNpFiE $I*bÐt9s'&3Ut?i#1{62|1zJu]-8'.}]W9ҿ=|P?8E1܃+f2 , b{!s=otK2GnЌ'^GWxQQ+ ueo` NFm+obbS5xpX0C(w׻,ap&ע!L,K7s$^Qhp9o z=iYo~ͺپ]dѳ/5۳5BY'}6lsss1}'ӏOzg-ܕ^P^{Mϊ2u汎1O:Dn;'o%Hu;>ȋFaFL6k@7R5pdM[9†qs^fӭz }3{B g_q{  G;wR&̪>\6)D#dޭqN^"=xn6΁u;)kgL,N"vd/\fc죧i2'9l 6ҼAv akwڎe}/~ŋe༠\kwygy7|S̉}ع7Žc5܇>O.7oޔ~t'T,~x ݾXxesreKq 0,n#t2!No IDAT/݌L'nH W3ږg( [^l|MBȊRmSaDXWl,;{/Qmr'Ö'Y8V8dc35WOZ.>/LXX0Aį[cmNe/\{by;_eEpX^^D ۷ n#|AٸO-2>0#>XlV.Q섙Tg\o`6ok< 0Yt|MyZKT R%d΃ s@Ag ' _$joQG@#>0iGZ<1+HM+&9CrVT#k wiZ߉`^3/y\#depdIkhG./ZXdy >^X?L>Z ^,XccP婧?sB[sF,g4Yzj>cX LcÜ'g>{ײ(ZWl,fgZLIA9<04e}g__ij\% >P/++߯pܹuGQDn׬CU 6VvٔT~iΫ<-rM`*x#H nFRG[iBr :r_62y(̑˯zg}fxk'S15MM48{}O8 ǢrBuchq.O=E\ [b!K%kϠabKRV$E܉cRO˗b=v58KxOB7]0bAi0Ѩ/2:1b A9Dz,k}ɺ{bspsW^o=-Xz!/O=X>܅)vpVsKxfbYxi,KN8˂6j(O+c /Ffn=:={rdc ڨpkm]ߦN&P:k{M羹$gܥ^ӑ }suptG*HyS PB7t?I- <,ITD|D&ՃB9!Й6en\ֺQ=f8AaV!]# xp*abQ)u\G!բOS)>kQy2l*c*wB uWagGdFtU ύHLD8[x+ p\E ^17   4/6^Xnunylp3XyzcL>:r?ggz .gx{Ǹ8S O{tvs.bmC+`~ŋ0=_B ,i>x }~[x#b1gm趱Pkus{n>vX;5=VN2G{c >Mvԫ(yc\WӰ8![8eHK{|NR:ĸ5OqBV  z7#w &^۔(/ hvLG]{x5  16&#)BpfE\_،ruk/Jo4'^sWFGưl2nypI| η(uQm67cչ ƁE3Glʶ~qRH˽F-JsUn֌95՜Rqʞ98i5^]l"|V'zyT<0c֋auEIy/q:51@c{O-tYk[]^]7ζYߋ65}_[_o[g+CٹFsNdc{s}}|umus9N?qzK0yǶ8jf2mRO2IU>B}j9niaHFLyl-[ݑbQѱW@]JA3]h{㗉Mc¶~ԤmN=+m "@Xf?uY]SU|'x"PH" QJ bA&A;TlbTT@EQ!AM좉zGA}c\s9}?|ΪF1k={ow6/ĈatcdXOyp}Neޞ4~U^֞&2z 72V[{ùNXA/Q?_8ta7{ 1rPo7c"}x7>-!fK4\Ñk#mH_zW039:T / dH%ظo& 3rC[]|k* nV$ܸ77PWЙ+)_[ _k;'~9~_7眣J{F&Woq#.6ow||knM|sL{̜G+qH']C)$·/_Oh:B\(16rR=cq մwڝbgYY~z]ZAA-g.l eYYԔq0M_}~UZԏ{iӿB0>W#x9kOn`ԟ 뮸+H˔#QFkͶ1va%cW 5nf^ onSVHfFϾ.sokiGgk,U.ݨ?4NlY6þsv Je -'ECzG#gUPÊ])Ylԉ܄47"[عiߐ30ƉΔƧOsо뻾+[lD>ϝ8ubՑM=}_%_~ԸՁ!yIpYG8bgLĩonxhk/1&g$7~~#'qL 6qeV9pūʷ|@Y D2sIFirnptKq[5ߌ {^zPN\uQs(f M^ 3<+wtP)ةo9[5_/2鼓zӻgmMT(3(ȿ;|[fE,wxNTU~)'a *fMMS6\s 2.g=93}5{oQuE~HL^6Uzʎc r:DδXrasK@C\ykN.ʙ9?6 gkVKWXr U>j_|1kqxͰqH}'?~ʋV}6e7,}˷O\~O٧lV:f_W~=MO|^8?3׺LN'M|&9Y?͘XɽC~cr=Z|;M}᎜? r)~U70?"Mc f _)&eJ <ըzki&\m:@BUtއ~4{Fs޵b&W[XvzLBcN:>Gn8cƬټ۹0jpzkBҤH ڇ\WGjY }Sk_7xʹ̾=+.̨)&g ߇Ą/&O#۹CLP՜.ڶ-dJ#'#MHu+o)91~w~2Ƴ~7`niHP@_jR\>ӜE QgrgRojLAݥ[8C~ ҍ \Q:V(/% ŽW Θ]☯`kz\R'iK ZzlX(P6$} ["h蘋˾bTJ.:A#0!P-ٝ8>۵F9YݓW`i[5wpe9fsIlʵf_`y_%?:XKp ֚>E:7k' OL:㠭o 2W?^.OG9xB*A[9SOQhIk<5 C`2uI6 |t.g@ilxc>yS(-P FB=h@j֓Nr7<ǻ۰a3%:fC}.95}}H>=f -̈́$L͹i ܃:<`uTQ%3C7ߵܮg׫-I8 Y;8П{=3^κ^df^\CńrN$E^fInAڧe@k}wsZ'ފjL?>1O MErw |ݧb‐r#.?~ ^|=ؠ8?gbO\j'?u?sZKel4.9'ԝ<~M37H=8וZpKjXNJwjml8+WIIpڳi`[tʵ>GK&~%1u%=+6~(_05orM5l=q; FhGր= ҁmc&g *8Dtpj55ѕ7~*'{~$m.ܧye>Gͼ!D~SG !iK(WlC狟E* /| 3F G]Bϸ> q h̍HD#V_s?o9 9͇Zmm>OFm^58bؓ}W}Unenl~*7rHQd M1y6r&F<\oR/&_ ~An~ðt`l6ן'/%OMםWV̓\:z>s~*2&rw$vj+/먼J}s򵴼I޳"yF\GxkK)5`q/C|zidCo*C㾹7[K! T)aufGBUIn#l,#?ED[P'm}D0!.X웻y)j'9fȓ9'8͆2?۫?⫺>O3/mzm- uO\f`3H__o6c\sfMm/1+W[O?zټfMG6uY3XyW|Ww_ ."u !3_g-'ZSkjGGG<<)S/Y#^Q< %S8WM s!w˝V_>ZD2COvdo ޣKMtS7RoER,:X:Ԉ8ʻu<)+@>#|o*Zpzϝ"ַ+^0hY帩#$6 @qM9nI#KIFx]-A]pR^⾋dJ @N@G.Z\ 4/犽E1l߅Q4dfMjp| m38>f IDAT@r?BW(tȾ{ G׆"r|~ʍ''$p#wmFlny6>Br5Εoo+/VkRNiO?W8ypo-iA_ 爹5 0p˓$}7l*gr]1Gsi=tyǐ̛ؔ'c?1kc8Y?ǩZ`}Z*WJs U:v̙~6Fs(zn4v0ى7 qK1kך @T9c<,؇s==6lé7kCS=MX˱º(<iFϫ ՁT {/|>ƦC% :/ s;Of֕J+]O/ =tmzf.l2M39=ʃY͢LygF77y?]^Yfi+ӻC_@հڙ <җ +uN^$גOf9\=Xt~ndI6vu6ȅ .9fqkr,W.̙}3剁߿w.{*[;o_k+3ɭ<~~_#7M0G6\6ƕmbnɧ96̧;}]KğbJ`)Qj:ͬO.:b~28o5` fvzayJ"<[<14[\4וyҭ,-0:\86yGn/ %Ffԝ\P)+koQrR]d3w1K\CXP>HȂ-o(GtC+KyQ{悧>럃ޘ>9rk6:YwzA۾.2o^xxMսL9þo0R+F7K<7y& ȳWUHH5Gr=! J&@=t46+{Y"͹9p v}dC7n=j#W_ro !1#&̗gJt!5nr9p/WB M|#kK.?ifyX٣>99b3u#靫oͿT\i8o>x?Ҏs^o bEP!r/xO,6:gCIoYճY'uKTgroq.@O}/:vIG̮/B,lF{I-tLȜ@akDW66Ƙc|Msߚbl\[fpM- aC:9sM0sq[Yߞi>ql'gsOW~e?>kxk&ia?PY \glqE+cF"gS '~^L/ٱau_/?uRU>Dj4(%Dg+Aۤpfc3WPr=C(fob1o/ѡo߬[u'[ONvd gJԀfJ7N:y;ΰ<`q'ڞ1K6L+9o~c\Q،+#5zGp!X]ju} o,{({6h΁7?7H?q?*Wyf W[5݁{o4NnĠ83xcJ fnV_m|혛k pȃ f4֗~zB?tȍ=spퟂL=V+Gb'sx=/6~q|At 9JӵtXpy)r~Q啴*J% #DJkVƕ'bxUI~]g b b^m}]+K~ۗ_3Yy`V nI+sMhjN( 1Cy<Ip1opz ZmyUBxdX 7%e`HgI4?$$`+Tu%]R*_{Wkrbx`8, ۚUKdg 6.P?>i^ү kst&*=偂[7 m]3#oŢ3M#Wl#>'ײ9e&_Od![uĀø?+l Fza.KBrE?l'Ɨ[-Zôg_9oV+ߟ'8΅<|eqnoH3SLg/M:7ڋ _ObuluXѧO<mcb:-NcHFH7 `ؒPzx%Q.b^FtҨU4^e2!TcI׾&[M@8u&n_IudbIA\#3._sc?h+rgCL]Z=dY4@$2j}_]ϑ襚Dz딆2eMx Ց03SwJ |ºŜ‘ƪl3j0\" ji֗-o'?-|*ؕ pZN=Nφd3)|_$lM(0ˍs!zINƊ{7C8mI q.QW^(uUusC}Jn\>8k'>S>bԞ\17#^l2?_6\ey)΍(͸ eNG]~=ude ܓsk8ˍ4<胸K}"SyxsbPCO?$>ŏ4̵y%Ǽ H|–][_>qun;{ciw?:agO +,V Yj%}9Mp9)|x7 >8/:n})<}Jk7m3J }_=i.IН++m 5ip|=iLơ3=S2,g*" ds czR":a:vQ0j툆Ē|=H{][5Kj43'rW>ctZG SeG=V]3YOTfIơ+[0xr:qT, 5=tflP- X'NGCo%+F_WO4̑Vܟs~ܳI6ls]kLNO hp_r[ז |rK)69S7OiG? /J4yw"!c1X}2p@9#귝 t:W kӍ!5ZZvՌ| 9GЁk d0 ֓3ϒUa+\*޷K' e;g9_6Mxҕ 5EjO v$Y 1x[U,@ lt|R:ψu^9•)3o#gS7R0+Oƃ9 oL+Ei]H~N& ah9$lᖲ27{;Yw*M sP*Ϥ7v;fmz/#iV߱mKX:3T8Nq'oyttyr)˕a6lXkY6WXs+Wy}7}ӻ_Ki v^*vP\:r0UJ(g=|p. ^kk^jsg-mܜ":s%쥮cq _a;דDP8F$ YfCo]9Gs޺W>oϲgZ">f) 4ܑ>m#ֶr͹fSꮹRhĐOICt_Hi_Y/jY릧}Nx99snYa>LB&nUE/N(W EK-5t}^lҎ>tR|]ݟ"C}Bf#7+V5nO|/W=Ə{q0 %?y<]6`*0Afo<đg+{#=q=^O3H31Ę\7qjg1$g N tf9#Cqxfd_zq"wc6wN(= e-+K .{%. uwv_y&$Mr?ND{|S#[FW>";ZW|JGet +cndރ/_C>'b6͗bydcdyySoX_iw[l#6Τw}Kj])zYo^+1 s5f_dRNk,hDV .aO?: ~}K̼8Z~Pcp݊J1tFB牝[ɥ'Z1˔M9_Tdn4m>wIN6|]W=뻾+}{t_uV\udxpO-?.^6?;İd̦)ոr+Oq}.h/E*0^6^fSmlO^~* 8_f1o7&9S' &u7#Nݏ<$s-EF5(Y/ _1_fڙIf,&7#}}[{u>Rn[ Jw}l Jth.[rYRF ]-ck\3bsmێ'vz|=㡷ÖIp6_G[=(8zxJDFj`ל: ,صX0dn>gfksqIW"xV\%TKv:t=ZG7u#??YYA^=,CLfڪV} ә}`sF3pc GŦ#"K><27z? Kk G?FX)|6/9C;dqP wEtrfzC*"sSɵcVsvS:[M*g/10Nx~7wJs&cΝ韱ktV6dRVlqU94`[znzh\/gi)3^ƫ~*mG{s{FeS;jʺwSPd1:O[X7|/uy~f7(nsƏJ37E0WOĹB?yu #Wl?O+͸ʐMc񆓫24F}ʻOlٌ~i~?c^ xց+\Uw s|q0}c+/:orG1yӯ<Ss6+ҀGhqR+xƀ1(k(2itrnyJn$MUB.*t3hl/q r7 l 1s(ct&qL1|7}8N^]Gk0 y_ҪDt+=|+&uv͹ǑSsUIo^y^^wjo+rw]z<]knь=2G3uscX;M͜srWt_*uSڞnBWpz.dOɿ;<>6a V2X=x}ms>ad52.n-9IE:aNއ0W (|T|]l&QN57p ^!^]=9 hnYF"A 9٢+""0e''CdJOP~fI{^ɨ'L f?jbOO훢)yQ O>m\83?~5>uCweNV:q1O}_e_e[%o0w㳖q%iLsH{|b0fXC{J8'&?7d?ҙd'˱*MyMZ ;"ʘakBtJ0fR:n#a-͌רV%k̳t=HT6Zy80ifv9žBcO}͵S}ʳat \KS]{kN i%_6BZ$E0Tr1 oiLI@&jC$ڹGWrexQyt@@˸(+JS.`Mx+e`s!u u4[|B3ӗ1XK+Ɛ>fmb)ͭ~ҹ.Rw>G(OKzb#$s嵿 Rتzurf0 {2yPϚîO57gL>wPTsdM7=N)ākg{YZ6&7~:W8FpN5S}.,Z!W+K!x}MiUNL'wTS)p5_8qa,LR*76p A6r|dO]31~]?,Wyak>v=p|e0&F)Jcp}~1sosbx~xxq}=01ksXcy70gq7o9/m6yJ?}aQh623Vpx$^gɵɭWNyB=g}G6"`M r͋ANw@doR|pZ$i>:>WU6~ 9џ~s}}9!ѐz P="&<_criI~ͽB&OK-3׸s+p$l@(U%r=kv'>^̮qpY u_ͥ/5:sLkJan?AksGwЮPXW])lIt5WLD`s , W: \A4ș8ec\Շ\yYw+!? Σ17)ʤ|! q>8t_~X,>p{}S0[Owꋸ6,#$r0Z {qX5<ol68`ųT\J78cqN{r[O~l{OsNȉb'ۧofׅ28|ُua0%zB# X+Dy(ve)8[SaX}6a0 CL\|x0V7Q{k>u3K;0pN}p'[~b64fȾ.smf,6SwneQ|##s$BP"kt˯ 3a.&LrmO։%M}DsΛCԼFP(^c9tF;$j'^^潭ڼmlIJm#ޛ%@9OL>>`'Þ0YGg!֌u3eFѭn6}KZD,tlTLM*;+s|prG|Ʈ+YnDȸA:h#g٬ue\>$_E_g];M~BSO~\rf}XgɋNo+4t\kgߓ)9qwq 'v1e>.<u"X5Y$tkH1)R\ǣ]S7GybҞo&ei#иq,+"-J#$6e6!9˼)F%@VZ ">&@va) nI.`ץx?r۟KoCCsJqədL^x5gρ5ۗ_k'5'x0s Nc="·GNYV,E* s"Z/P'Fz_.&>붯K{@VσcYv]yy@uM< L ɔ٧n6Ʒd >9)6|H\WKST,$ SX{l~B !4v~}w3ו??k#n'>qsȇrN~oG%䗼w__ց<:ɣ5͵6?#?G)|u]>Wv#@o7k>&}G~S,qu=U#G~CCXJ$ OoYW՛zŪb/o/q U~K9TBkoK] IG3z;Ŏ'vn> e&tx7u_hы#`VŤ?[B|,a^){t(& `=O蓱֮>s+Yhl'k9z]UMުin mqP?/t!PcC /%nN(rnXtXuel6V oo}vuaٛƐ|sMW~W/w|_&s^;{9qE.?;-|QM7}u?qW <C?CJ 5%}}W}U2"Vi_/3vϺWy2姆uYZ3ޫz\\jPoX؋id'4!gL;|Ņ8K'*p[)prgpU(ǙeY"<{Y7*O29^,:> pX|nB9 ɳv?> ͛P״{C(Ut+}9[j6S^g}]{܁ZAsĜ,?]'wlTKYfg}Hp5=pZɥ;-_ &6`YdUbU}/kHݾH~wn6@2tr ng*+__?ka'ޯ{~կ0+7E'8g6K1y#W^وs ,Wq՗:6Q8a6\iER=h:=yAM~a.ɍ.\]S\-g\r/|ޔ~O1NM|:3Orƹq7}uSƞPCz+TZWA{5aNl4p84_hv 6f֍6aW弲~}ịw/&<'VN\+|#G46Qq͔=\q^-Mc¾M}FOm2oJ?p'עhjGBw93RrA3k{YϚX͡iIuj?^ϛ7b z.1ysbscnIl98s~FrIC`ܟ,*!z]äz`&ēhJ+k5zs OO 3*&?7EsS2x1|f`#^o{P\in؇1O{l1 +x~_s|J?J63Q68n:Fʦ!O^?<)eׄ)doּ Vf |ȁ}7o /#i3?ÍF6\1`3_6n̴c?<&>0gI>\'6ᘹ3?65gLqzؔ/-h97FLsxnIkkace9mP(\Dޣvˌ;똈oco=CwƔ[xI÷T8pLpo@nśhLlaA>ϻ͌&6|X$$=ݷ ?M-9wMzξ·ܥhyg %= Ÿ!b@υ^M`zаka 7MJfp[wa\1UL<:Ø{ r?Jk~m~\s1Ϙ|\}e84^8XC<3̝l8b|Ob8C{戟sg-gj>'2/fXP&ѝ~B~eVg넗YB9L!5ޓkKjз6#ֽuL6j%r-%2/fi^1|\5|t=[DwsoٔwS:g;|/kRRq-DKY[ЉPޔy~N.V|!5asR%Q$Cj Hټ2^sF=jozjYX'CԻ|o ?N0̲:ʕ@L,6hUwਸ਼z;W,! psǚ| _ӌCP N|@qKc}[f%Y2#\KGƇwfQU7\MC ܄=1q,1fg̟C3_۸RS>&~?U9'4o3{1S?wbwwCLny*GޟV+<"SH|-8/zzѠ8SrAڝ"IӾ"=sb lwbO3GG67&,#qXz+Vÿ gZ \g3[?Glq ̧h83ϵ9\C%T 8]r¦i:/q x)\T+ŵo/g`RNg;޲taeyj,O$O0\ [r䒡2ɫc ]snrɯg{Х`׵r0w/\;>?ɏ،\;׌ vb638Eỷk I61xbZSIdg.ھ6n8Ԃ&ć8я4y7'^lq'3?qglJpbN=molʷęߺSg3]įĩUZS}F(&s]vs|.]'AgOs:Lb"/v^Af]*6MX/L|}]^ɑ(ڔA-O9S?qH|=Gi E IDATѓ5!w\߅Fik`5BD]!{~0Wc{_Irf'9zcr[GV3(s  9Bkӈt['(+ n&<&J`2ET< 2#+m"K8AƀokgŃMo^и*2Hw xEr ǵ)1zIyDgԭ9}L8q孞^woJcS{ԕ3o~JR'׺gVGKmꀷg8cszYH܍<31kPU(Py{ %*rIzPP1ݻ ;НNAzP^] .\)[Kľ9va`o>mbgÜ3^,Z~I:;>s<h3$BlØ"={ڲȚjb \]v\w k>U;,$^|oBS#P9q;lb[OVͻ|$FlH*&Gz_<N̅ hl㋑"~8l/`npg+]܌7>L<ܔL ɉO1WN1ڳcwR[{b8qAʫ>ctr&b3w؋7Օrˣ_Ig i ) #KrU#_ CG |Iڨ7l$SfaB7Y?X6Xl;( EK{R[9Ӏt&"bZӍ̞ڡ>_-S8j#qMԤ 0bDui[9}̵[zqrb=pDq=u g|ӻzfz;#) ~tZ6+}7}g֔ϱΫ& Qzg [[I֊H׷B _gZ uyUt2?49XΙ 9DoǓMԍ[%5gJbR9i֘ĈENo8O<|D:`UyIN;\i!g ܌Oz( (uRf^b<н=f<}w1p@3BߩU=VJsѤ́ewnBHL OEךNf^ʹ߰r ZĶ楤I>~#K~R8+3ɺڛN]b䴻32qY'o[lg"g+aѫO>fRg ȥLˇ\[R;muc ] az qsN $^gD6aquՃ](͝ E93Λ}Z&MrvU?Lxآae{qQ_v8Y)dlx #A~U Jk`F)up _&&?"0LQFx=q1m23'nr2kg`f\̻S7uy񘽊S31̟xx;9'r̻Ob̙CZZ?_wfo_Z[/E7N9 ?z-L&uq,>00yY)(9K}@wx䵑+)s9LƯEQ]ƪ.~Έ]lhro-rBW8\ PUGg$o.GJw~joh\9B{.5;G7ҵ"]/?ǐU(uP0W#wCs,Rk- r &jԤ|M`X,9 ~[Gr͈67,Ӈ_{nO c!{3yN%>3'/פ9WsE^'mg d>B23*Mdr`yTk>syZm/N+`tVcyŔlxsz>!7smn3M=6Šza(ej !y2)b|XJ,~q썻 9%C]5!C79b2vf'g iN?6X̹qy4Wnb?u8}һ_X o۹[u!2f9 +0]ӚYXwSZ-qrIA>2a6Rm0>188e ӹE}dz3wCz0|>םV)'gO ]\"}stPYmgUE,-#cdPs"rn<ÓwXO sWrB34Ze>z[C|O,+vUZNu>ըC/[OH{%6%h9y;2JOGIg"z2̟؃v^ϱoi褕; ̎&YBHqsAԄ :LNu+ÿ%+mznF87>Ʊǁs O*SS<9j9o9sgMmpni&R8kĜ>rǝ8&qr G5~yk vy+rA&'Ɂ_FB=?E2o#/׉P, 7g<2_V]`>ِ@i d?Ly^]Rr̬V9{]ˌgq M5Ϳk7iY:?q`-}ɕ@j͐xQΚp&#τqsdd'-%M1M{ɉN%.V:NX%~c;7ukklrOc?oqs+>lc3OrF̙7gKxxy kBNto>.ܚ{r\?kg_Nĺ]!ʼn tF]Ur+`` P:# Oykr?5jOeͷmlņk9ЇϹ&MݴItA :J;76uVk*ok/9hg΃^eXM>d?8OI<$G/i,cm$)<{ݺYꒅD]kEl+ 2}L!xhqc wKowahVs( |1vJ0>Eq1Sx?mr[9uJcJ}g\9JqIKlCuݬo0|u~8ᮗڑ_^<z\-%Up^!-Nh"Dr6;7"oLm$cʳ_ǺOT`,g/7.OOߦ @X hd9A9vHh a2E vO㐹r` 8zQ SXŧsK _mLo%Ϊȑ~FO65#7\iOcX3|Oc8bowuW J 4qM"Tkq#16]$sVypզbp޽F1\k=r{Os$=- 9>vP.H9|Aо?K P]}tkPZJ+` ws @=\&-ɓ} {ʗ 'MTkA$kkO.@RI{n(ud?{}ԛ}E~@Ws=%8ÈBT5_.'W2N?:AlndKMHӆxЧX`6z>)'д͉Js>NFf|Xu;TEEbv۵ I(cYH5&Gsjcf*F<-ީ4f|TO3YssOI1eƙ6/ӤIZfm}UM.|*nꂩNvg2Ztq"_}N1H uAQ[DfZHL$E^G,74NO%+$zbsJW#/G>O=y믿~Q},ԡoxײȱ/kȮĝ>1rMXbSop9"n <b`glkɫco鿗gMsX8=kXo櫳w{x!{M6s3z;6 HT9Zp|ד`f(%1KEWq}@Iִfe0>9Q4N0t%'{KD:$ZScwF-+z0k^+) · x17g'zXPIs lm; LN !8eBԓMP6]7flB،0ܜ9qoGỾտWׇ}c?'?|ٗ}/'͗|7<|w|?3 ~87×|ɗ<_+&ỿW܌)?F|"g=|OO?_xj?47Cx"\?N 0p?g0N}E̓ܟ'۾z F-{B2'jsN87'vJ_ϝ jRl;kN3Y7$Sx\w8N@`쒁'#Rlfd(D IV67U:ȃn(6@٥]f_ߔO'j*ך11.D5!^yNIBJ{яfe/ooύ+H6K/%{>k~ͯy 7<|g} ~s꫾˿W~lx=ߓ{5 RryYȋ.6Hy[ 9/㺝u_{/ud3 $^ 3O .޽ QA9z%a=M4}hI %#\Đ0 flԾ1gd3"H`VG l{} v89~LS1鞔 ŶE|#v"WA%MX 򺏰 h;AF9d:uKB^4P.&&UX<=L J0;>O{$.|pةwVX_Sت%3>[ʨݬsJt% XhfM hSq1r; 9#>/ 1C/<|7}ÿ"7'ly73?3s?c?yyY|6`eˆMC6H6V~OEZ6{|#9Μa#; |cƙM1o17 gZ^jqf/pv~8ǹ 9%)w摋g=qC1'g+:9;|N~"_Zyaοsk矡| y_axYs/)pvìj&FpC9]ǎZ(yUvjmeĒ1ϙ:'9ځԉvi3g u~h\-䙠R{Bc#)tJb9l%Fc?9YW{=dύ^<x?EGCt!O c×(O ;=NP qX(W@>vy#I{9 U"k1N+4 @F1xY.|Gw.@o% &%wHL*=6Nns1|gr XtR.N';K`N"ɦ.j}ʮEЉO.F6<|dK/M+?6lߙ;FY6l~/e7,TΆ?˻| x\~opCMʯwı! ;- IDAT||o<|~Ç>I|5#k5x,k ?4 w^k`c|tRo?`oͿkfs6p1vu$M,w|Y9xr7 y$6Pf3FG>*T6c7{> >Ko|,aG3ufrϻ瞉;l5ylX_c9 7wŐ3{S基86o_J}׻yȾ5p| [,igq.b‘لx~f( !pl .`=uMq^`Z$mxHoH?Ode8H!:1>q2ue7ؤƁۺ>mc1'Lg-⌉/#+zdONX&#@F6l"rٚ':ѧ(7/_f6|n6=ÏfcCG'x}qc3K~/IN8ItX(>| Na鰎sgR8=>rᦏzn&! ?֏5PoքW^0>{&Y+N>W?1S^af>urȯW㼼x=BRKBEغO/׺GW" )8 WN;\@aABA+P jHhR9+iae r&? }/4=`LiCsAV#{?ey֘N=!̩NjѰA%{NL\};&x訛9 '{)NN c]ޟ`ks ׺.^ֹ@14:¨O zj0IO3rP*f;Ҟk 휝˩rk*7m֊5¸`.py/>' ` ܫ5'pG|f?F ٹ5 nۗ'*#D%dXx: .g=yHx|nN N+)ٰc,$]<[ 9d]߹s OPܜ˝g{ݞnӮ.\*rL8󒱦ʢ8.'YO O%}Zg]wdnj#=ű'wдj _N5֘\B{ *O%ki'ׂ'{)6y^".{U>9;X 7R[et͍&Sjdekiޔc@$o"0VΡԘ f!~3@b,ֽ 3lN|%pd3&͝75l6x䠳 3:&bF]奇Ɇ:l?ll-jٯ:< 0L..>6~k6gAy?/?R@OsOν;3Z7|7y!bCf;ெ|W1}`1?':`f|StΈ/r|!8'>Hnck6r=?γN'`;hHp@ŝReHS/Y{1Q:Onsvioxwy{uK2ʍ욬(*-R0I[|Sf:SJe +~fh_M,]g{R^pe+( F][fa2bg"/?N{:-)^8UֺfYl`L #_{8ץRƖf8;J]ʣBcZ=kYq-ƴ ԏ `'iD9rKj(s{>g- FarC#H ~mp$8tűJ!>  |܇Ʀwt}ȋig :l*Qۏ3CL/]X>vfyȻO?uo.uk67y߻^Yg|?=Xxx0Űa'$QG&o*?pn)'ׁnq>ya~cmpJ,۱h?VL&|x{N6@1A%Z"<.{Z?NaO>_uj4S9$>1 D-[xgD_C]:!KЏ9c-?2 E`3{n`Qʡ˙d3Kq\f+aa,Ya˹(^Z8R6+/brfv;, I'~.u;$XvzjӈxoIѰ4Mi;`d=㻴]O:4a :s(_`52n훚(2T5t>4)W #ӹ$57%NJC(/Mb&$eV=y9 % Qxln^*467|.&wB, 6?S ²"wCd\lf,( pscĆ&^>w lx㍔rõ37qhlfG'̙E 6}ڐǻ̍N/c ='=u5X9|0vl~yy+`uk99P7O)^9fpyǷ5}\)DKɪT%<}bN@7vG2"?tSw .1r]( v:LR+gwLTiGp4?q& Y2cTpVUQ/gWL֮+Yl{0j[5eS!bBJFԗu<4ܱxZ:ׁ2Q/$q\䘑p}tJ ɻC&rOf, l@,xXp꒰0Gf{4Ó/~2*!ڿܠI\zUO]8oܬ|5_km~Ϫ9Р9ݿ^~oZ௛Y]XgCʃM%kÆuo T>fdƎ &@~ O Uɠ~op3:\=!gc쏭W/M>`y ߴ݄ΜO's|4sCK1_I meyņua`X}S3%qsu'?lv]HQ2zʗXK^̊kK}}[lzDV>G!󤽡I Ed id7X)ϑv'Cϓ{/pa. ANXv]g䕯B7Jױ&@YUv1\ʊ^`/JgT{;}a6gQ Vz*Ùjt%UOE,l^c$}v"m*f*t(@;_d~a}`*&jƖrCWO镒rt`WM-`-\PvGbwݿw3:I>oʟ%2yCOw97? !yM 6|TA>zc"g^6+mgo3G7bpbO?|K?{SΜ3wO>NK~@c͗c=Qc$*O-*\Ez垎>IO];CYL.G qP+@u =D(Ѯ)1= *,El]_֔gJSAWMm8:RCqƐ+Nc.WD:P79Ar<;jd+ڇ'XF;% YD&O>ƟLswwV !kӕpd .tȜ_W5{\ noKsm>G!c9^uR-v$|󹴦`"xVfwRZ|@hܐ6:@rsSyMG◻Kks?< ?W}U:r 2/3|4{.}h<ز/w}y)=pL.`O~:XW|3`y~fqn8m$$wt[%~֚`˃|a0G[yqN.}H\{5>)lk&]8a_=jN:όֳc䩠n*96vlEbG̵JaV;]jQn8O:j`Ua\GUy0L/Hء>e>@:yf7&ymM^/18BS_>DN"9n:xϿF3yq⧱mg 7M3_OKUlV9[ 9o^_afpB}7# `fwwO]n{ž]z$}׭wQ>w ٴu&0̓uS6~C k;̋s8?b}՟rqُmlޝC>Ɲ~8󎉱q V}nHtaUvn\hٵ60ZGgoV $rMe'^z0;sꏒ=tF`Sߜ\!3TbNWy=&V)m`>Ǻ>s(Wȩn|D}ڙ? Bf &2Cw7 N}z7!g 7Ф3)rI}^,ulG:MT.ƧV2HF;0p.tcvn'8>ð&w,a.16S uZ8wSe+ԑnJrᛐ:Nk/@bF#=bxO/l"-V/_@HD ;cYzѧSKnbB3-6pnnSj#7L /応߄wuy0z7>.y69b77熐M!9<.cfi R1y}q~br/f5Q kՀG8f)gyt0<8lz͙h60,d̘<39 ~82zGp^Z9~S{zJtR᭸ݸ%ݘ=JES9s.)׼j2E:8y^@+gDBYN梇*6w?hOYFd5d~}8y'qjlF\y0%uH }Rz*Yk);Az849s}z2H5g18V$YG,xyle. ?_KҮ4Pza5(OG^@{sM!L^}3kvY4rrSM'z^kT߅|vi&"_8 A_ G ϞU0xW:wbg#oDb瞿:20c+Q991~s7Fc":#y|su΍p>F3slyg˜3i>?UGr w~|W]u,/ ph $ca] [ aB  \f\8_-3 IDATV)*{5d]3Ү\=b`#*}1X!8V')z~ 6Fa^ =7sՕǰ q&U3KvK9iY;I$ɳM.k?@N.x:gDܿܵ4,Mbse`G<7ċݑf\˪uίׇn# 硈;^eÑX 82SYk\r/`<$TkHz%XR=_/^ݦxW^>W~OH:q !@:ᰍtGw!%/|c?o{SO廰&9ܸ(Ab/h]D6Wlب`̍M:M.;B6lxtj;Ԙ7DxO?Ҁ?3̓y<Xt ƆM&=;es] 9c;/]Ot֛>{1̓[=k3%x?0?G>C?9p˲Zlk z“X&mQrЀ5. SהD;#try)u}ݮ?I\'ǥ_Ms"luDLK\Zy+|ìK`;Dq5v9bx̱cM~xGq n6q71TkO u䈛rk;Rm{}'V_MX[ݼ (Sʩ8c^կ3o֡akL*Oܒb(M^Ȇ % c+7 / l 7u ? ivGJt|iMX:Bm6:c%-gZat,#K8<">|QIbM(mL]E.c8W8m" y(}_+rRy^CcYΊ|cפYΑa_ԥ~3XVg՞CgOTn|0=M =`Ks ݱ* )>)5ʕ|ЕI35=e[N#T<;7rm6MGKgx}`'b93>ӯrM~'n{sh˝~iSC͉y3sŘw۵x늽W˸r샘5v%?L׷ns =n%IS7׸!Sov0i4 Q@Ee8(s/+ G!ˣ+38uO>3s>cNdړC2 .PHwk՚y`ɒj<7j&+]AVAd( @3!}fBJU羰u?¢ Y^9P=ST>"Z{(F.R\z&@)kj†3c1&w,&amh-<5=1HkK_0/I8S h<+M_HH4 +.,bت՘ᜐzX|cs;l7/JH7(ӷ6v'xmJO3s#'R))GܬiJx0ɝy)8:3M9f.>)b.ʨ9w_eֿP?{o 3jyʞ=' ,wSf_>cMYjr#/9:9 xBm}]np8G 1HV |娵)-(qs}o% 'j/.cl7)B*.:7\?y\5RT*lysNr~7}L,E8O|%eHWqhbo_]X&voF<l_(ssW`JunLpx7R̞/foړ;ߌɽc+W[.CΚf|3]P]Ul8P3svܽ>͹W_0>+-wE) Swq呟tForrabHHKiHK$/+'c#l2gw’.=8_QWW\}|7TJ|t/3S2BsfRP$mAm| !:rWLVo`" 88|5urbMP kԜy]jD؅WQd_$j9`Z1+\);Xip=ؚ.R,8PC^#a.⫪0NdM q0Hc\oYw|C˛h/mʀjX.hmڣ\YzyFR%-"ȶ8uȭR$7Qr^D1k:4`m'ҧ{wsç}%fz)!5G0qȺXiXNQϐ[Mq0( 6G¡Z]i0q<ܛ +G+(>[+kL0zuuNqo*3$ Ssᰜ7cwu3 DTj5'{ # 5i r,JB6o9Ah߳NkkM<vyd?C>e6P]']s;kşnۦ*8rv[r3~&9˞A;W^Lf_Y63[|4-&|t`qG52RگRi5_c]P1\s/[M:9ӰOrHCNA=!pQW.I׵W|S3xXt:I9j6ss8i C(9WƧZrͼ{{)Ş>k`yJhׯ13~glJpR_V踉_bi&r/ L%Dxs&t'`m-ׯ"'skCUT%*~SF~7<\koܶu/B)V݀:k.ȹYLx |}O\U^DZᝉMp蓁\̌uWkr14e:WÁfc-3-Qfsg$cꠦM%'4OIm3៱Ocj\7spjOמՕW9{35sf3ޟypd|zwl{5JҜe Wk{"o꼻>VGLtr16Ӛ<7OR< g$-ʸ:dWξ,7xhs2c^\` >S̑Imo OȢu:笏v×뜺.oqm/g-ŭ'Ɂ瞿NϕK͝6 !e;L8YKLvD g8%o T?ɾnuWpأ 0CZnxnxI+ߞF}}N#Enk ɮ3W e@6qT&LUK2\4 )"? H -˓%Fy}3=w'؞?Hqvo]yHrW6O{w)=~eJ'CR?/|kɥw|SH܀65Es')ѵpW;{7Jb9DRʏA}J0m.(2k: )O Ȁb>1ms? R%CA_Aң)kSε7>ey#=f4h=dBv:…HZ/$$W&|V?6'{&zkV_[A\ epJYoH[=O>k͓ %4Pe:ETk"Hx4\5a$T}`j9'#oYF*='':2QH+nXi*HUWBe d<4)F;*z8X5mBQϼ{<\9 C6QN>s%|bk_I0#ϼi|`WsqO^gh}#Z2 L(ru bWbް{B|_CϪս+) uWlsf ?9L8rJ d9`L<2i3ջ>gxxu=+cI_ĕsA&fw])L#D7LJh2'ƜzyLKMNբ3}s [jQȹRGN}Uܺ9 WuzgQ2*ca)7Ki`VS,_L>؁mc=GL֕OI͵%0ٸCf0+2j/Yl*<_u3m1ޠ)&JF3 ] 39,WM zչl<⽲+qWM7W2m+<^[ rycN]gqGƑ#}Lhc')nG^ً񉵦)g.?TvF/HJDǥ@OWcXe/GmC"ʡmu-g][f$7s9_̤O20f:G^jԜsUqcnb9Fo~cJ(fJg,A9q5>eR:0A Qbڇٰ .mu}M'r]f-z>1B>?k^ z_nLN<%7ۧ\pJ~o'J-vϴVR3SZ#kQ:wUurrN\#o26rIlAPi>:]Un܌+<6wkto ,DEf 0jrq%^B5#cLwwb˻Xf9{O^\ldOy7x渊3qW1~^cOz}o̚͟/^:sFK31e!/PwXi`{^xnmBAX) 88ģ$|5 QK$]%4u>9,==K|ggm:347:#sx۳1`K)fֹ^YuSd=$~D5GG#4kENw\ D7ny1rx|i݈q ^̞cW_܌O8҇3oֿUdž9k^#~cWvn5N0m7YYJw=:97>pZm}IDߓ,%˼s#*uUΪX :AW3MPh锘 6$`]fRfGIg|fdL+>1IueS@V:c޻W|nxUޝˉiknj.gXss ʢxܝʅyt/5z/bp޶Rގ96CXHMώBz$\^ $an7x:7eTu/'PJcw{S[dEvDRվV+q^uw[Xњ@&@P! -}/ӱpҬw01w܌ϘU\Rܬiq3~i_a/N.׏11>cCx)wAl!wr|(1SOg0.<֗\8agݲXRJR0A{FXk:6.0Υ:kE=\Uxp*;DqئI'8w"rb;xN?6!o'?ɇW_}u2-+)ȸ6r', 13 H;=s08ܫ;;fޮZrc쉝X1{Oǡ*Ϙ}M)^ 6qCd~7Aq_{;_\{'OiݘfH|>"߼Vڬ53:KH᯾+AQ6u#a'NdӅ\$o۩τ{L.#FN\c0؎& Ϟ=5 7S$N소bǦ/X3*)A6:}M{MI1ҹC> ܢӳIǞ˴YTE3'?w32cqQ۩e0&ܫ~k܃$O&&V&.bs \`wPّ[{%YjuR!ˌZ}s7b$5!+==ElxC©L edz)r\MgվM$4k+iݓ>hH7' 8Cn9;6oL8l?l~y>9ԑӧL9;ͽq}LE\qt[w_>\͋ G?ч_Ҹx,{cneo9NAi'5wʕXԈ"17jS` T29&8WDIǣxȼ,D/!s;opzO#TP2#CYH1u%ت=R2W1|)̓ĜÐgHIռݿ۳9urĩ<<9~n sO7i;upeJ\/6|'%=uN [cP_7y{l?5~ݟ&ȇ ~˴@DG`l`E?)I0}Cq]?\SoH CIP/LIo&S߉[DS-j'N>Orx>CK+j$L]K;e=INisO3Fw{h1Ozu-\9Ogy=ܸ@rYE_Q9P5$*?Hċdl~TiK]19jź!x/;)u >///i~3sL]X+HƎf0cg7-=eeN>tpL;`]qŞL3n)96_~|+{?[*v;H /9V=orHWGy+Od=ayOp8%i/# { ZmTObE`COd2-@'f-0Bk;ɻm](9c;35.%ickK {1cϐY0ܳs^bl.i<\+r":9/JBYmi\Г.Tp5q|!sHTe%q Zs8Ps|¨3:5U1+[u"y]gOPf9ˍ|o>K΋ NaJI:کs5X$d287&p/Rΰ =Ff#w]7~%_k+ޔGMAt] = {iH5M< 1H<+ LPcΓzӜyZ`{\=3*gz-ԆW>) sɼF%PqNJ$qmGx׍! 6OW^{==&͚{@w"M_N k=qV8j?.PpRHT%zrb=z;cRXF#\<"V9-߭[8?l'Sox}y/^_Y2Pq+)LnyJ~ְd4˴:P t3~I:*^jX0$~tw雳 Ur]zv,KCfm>qϞ%D`O_ݐ;&R,(")z%|̳2u[tOv:u)䌤le[kw`5UWS-x@Ok%xINF2,X}GAz;X'Ju)alrDwNҌ_uOOb@ZҔS養:̶zӼ=jc%|TЛl]T I VZHQ.2=#TZ瑰/i!ĉn8grs&2 xO=^j'cOg%c3!78`tƦE|#Fnp _ĐY|/sLUԁ:ҟAeCNM(y$' {HokCxFSn"j˛y4sCW^XF/|EQX=Xr9[a#7/l6|Eoׂؤ:[ڌ2ׂ>.@A9{=ݧX\w9#֊ FBD5靵؋W_:+y/~|{M^Dη=fiW< r.(iDg,P cd`Z% *9M%ҷU\ O:\"z.mtx%%Wn؄E艍MT1&>.yT^ (9FMW^}0BS\Gi\s2gS>u_n8sn!͇D^G#'dK\$_l9}N؇ùA#睹 虯 \nfXon皡a)cprE/rٟ>3Fz]쉵pp=1mt'Ge9X'Ǭ؜.Q#s7HQ ]CMc̰SrXCY+d}=pyƍByDu=L@f%#Iː 1qF`F^}uB9,W*jp}pFkk0cuW#J`b>WٞQ3豈Kslzbt֜!l'{FѺ\,/XkL986(J1.dOW]O1u:&q܌?fNs-$]PgϼVNL賧8U2gaYu`FF4X$\|l ybcNNF^4K PH {ޗrtAaC'z O8d#fXmld&-ɞ/ne #XѨQԤMe弎F?XY3U0"F,]%Y-Pi]X" W _ӟ) lxs8 c6:+9Lx~Z T*ى=6P+k`a̺q#OJ>iɕAq~8 :S'UJ #!qTr*+MPf@]/9rMg@V`g˘,ݞSg^ ,uY/ ܅\9)['~:o3syw#k280 UTyZ$zJsUt`l_b@˂1 ;0š umMKb$ #8@pʓ&xUٟqZtġ4\ VRo}Ke{bԘ П ZʥaSƘs`N5_]I&Es"s\N?p?\ 1N0V?b_yGZօ]&zPyWIȤN"yzόUh&P7V7pv9tL̮H,mBWZ+o˸sg ] պ8ɡ ޙ5M\>3-iUSCgEB͌d>[{:#|,@sGN(+>)w>ZQuX e CY:ex%NҲf箒# KZ(fb~?񱇷>c9OԻxx>sXo:'VveK#6%"E38@~ OfD9]dcIOa}ad56&WH観86M̛w^X2(šȌBVLxJ=X3(OqON V=) ܓ@s*Ar=/Sg~O*@{x8t(XYOX\/b-W w3VswNw+&9[0{;Pv' A e{bx9c smX,n`/Wїp?M 6 {'p뚪 㻜J㨡[Ͻd]D|S>GY)Pw}.6rx0Ѧ+"qꮮrX0&`#4Kil&~隆QgҢ|̷fث:-fM$ǕX^_{ހ@3i8C)d#yϙ/L&Ҍ1Bڵ9'#nޯ4Sv =<_T`qL휵Yҏz ^=5s8c>198yaA#Q"JgJu)̵Ί(8p!ynUU91TBS$cΗˣ//<gyQ/J|XUb9TX3qKpHҭwX9)w:?sNt'SiZ :M LmsezIe~3ȟfynǮn3Lts"c,DTn[ A5+~u {9{:b8m>M|\ۘj1ꜧc<xkcGF{0byt+Z| q8J~qڡbrEE!b&6k*S3$q> 1uy5=$8 :%HM6P] -}Uࡃ܄?c⏕^,?Ou4ȅX˝16l~/碛!Ơ4j{qoxW}S`܇B`rfB&M d4n =G? IDATـ]r4Yj7۵[4n2M}&#ۨ#:ǁM|70UXӿZa.=?uv9zrΞ̉#ˑCqNt;h/7n]ܸ#㎿lU]r~2-M^54* JN9,C*n1ML/"*FG4n:n]~񕏖{S.O[^pv9{r ? W+&ϱ[+W~r˗./kRX>w\wZZH!Iv<é0s_c EکkOy- I q_ @ b4`sJnmIRmrП0S/MQL\ ^WLq\֩*Mɑʚ\jT>FV0ڤvM--Zh:פP[l\">F5{x6Lqr 4Q4uJ5dhPNꚲ—M=\7-vC;5d#JFT4|8[DZNuC}G|YOU< 7B!bZTxC oiV!疠swgX 3b҆9V%ކ 5]ژZ)ۜa "1\:my}gΰ-ېm1{t :<_Ͻ*O,X޹xjyח~k9}4.͍O`=\dg_mxr.b$wggg9t&pyC0^E>[__]v[n`{:Jس 'ߙS}˖cf\@O;9Kd;Ц?u-QuziLI|O¨Gn]٬` $4<3h qA%-*d՜n>y8&p$l<[n&9رǝb-TD?ZH0mh҅Tf`6~yr˹#w_;|wz +g{QMv9_>Mj&MۑG7|cG,nX8'w%Oq!^3=FnIX,OV/@vTd0# I3jӉ`m;P忊dn o[ `l6V䪓+AkεA(t%l6~xhi9lQH11LiDƶp u{6v#=y0wnmccmZobU\\Bk*iK&bݭZשA{m E \.YP2ǘyֺ:#e3N2vm11M*4bD-Q m@N,8P0 SЕ7^LKa k|(ϖwAL~~w>MI;bxca\SfdV̍)#'ոSJy3&B(sŮqҟ1#&TrC9Q6)oF!j8 m;6Q2("UDM>n}mN/j-)w9O3Zw3x:17ʕ0·\a3Ug7ٯQƻE54Dxm[fD>Zmc--'UL>[FaA͘2uo|~ͥԼqV>@3w%𿩝p)ܛBmG [?(vGTWmJVV`.0߃DkAAS[bq>Gw<<.+9 ƹoAF]DZ㢭YJs{zjV(mrzj>V9ϼ%7sD>n wQ˩o.ڷ_ݿݺKndVgxLt\\*/.9㝸ӽX.f#sދH1`ѶBQ;_ bR:PѪ/Yx|6&LfnɫXp̪eT=9/%8q:#ܧ=~S\6%Ȋ8n[6&IqZYe[Ē[Vn%.8dT@PSä܆kr2Ui=ilA -Aye0h\:Uק*y MḦ&NS*BhxXP[Z.sH^;MS=m+$%^[ -0ΐO5ãq*\mӟ{ r\)2U­F@0]g`kΉ)M^Htpa⥭x)]z@8tw_xξ/G/ܺuK+wAauczLs8]h0{4n\ހk{q*W"1ie g__=cjǀcM+cm7 mqGkq\aB]Re_L3Oń.R>ɮg|' 'H\gU09{K_|;툇 ,p1ZӝJ]F#]:mO=5>N}-TM )Q:~n>(9J:  49Mr9f?GwLR!!'|*9RABv\idfX2NE ׼`xHZ/KH,w?d|]^Ɨ_.׮_[][5<=sy]KpM~տW{ァM> qqܱ 4OOx2<ユmRc :.Qw\ʜr[~֯g!8K˼'&x{CX8{tyg:kv}r!zB27~!./K!p~P>|H?/{/.KB.fuB Jrltrqd%-܊ F9ƙ[?Z|}©cvcX`UȖLj Osi'U6~^:N୺ .؀HA9uh.nw+C7kq nE}ɯk6DRdVeU`~ǹթ-E1m>ūXݫ֗Jt˱ JD-TlwVuõb#r>& _hnmp$(|Ӯ)I/oֹK;w6L[U$׼SiAǛ!ؒ(BVp."ǟ^abY7 *[g%>P # c2f`r|6T0V&]={{/!ܰk,8upO~po;*r/_->Z~,.Z?ſsr{+ü|'0䵹W;wN F~/pWGfM72):ok} ,~1u@HUY2fXы;3U^^81i1b 6~jFN箣 X+{0jĕqWy)UYJm5(JrP6x=BP첛VXsL.N'zCoY/wlQ; yZ݌^`w;5cب+/c*|$.k{on~rLܿts~?ܶ;&ZqS !NRD2Y];%! K Yq4VA&?37FxҴ Y&'no{8bt$)ƴ9ii5AwAnαu3z9W"N|nt&Dt>JeܼSpKw[8P{!&_;P+Lu%fen&>[OaryB1eNeCE'rϦ 0 4_ŏ:>x{!srg?%Çwcx d^ps7}_h^~tq.~'ONt?V.[y9o[2m9刲$e%RWަ#L=c9z .rq0rVCI+'㒄 q5]ӑ1 z'~q3x͌W'ɿ{Տ?Zd.<5!7.{2‚a'kRD'wz0vڄOWUQ|W-c5 -tbwYTzxcL{8*mO9m3;6 Ȝ`.Lbފ_=,>MՅaR liB3¬aknm-14T+LT0dc贶U{װ[㠎[d*T84y>wn_D^ĚЌq%Za:ژppҙv_Ň|ܯ-i4:O1KRAύ#o9>^A*YAѦ]lu.Sa5u۰[u䋝 F)N =K0+HcŸ>fq.۽H!0a夗2ELN|9O;Wm8I#Y-^<{w\=}OYü//ob`'R: d;(֡{7o{pUN^VH^p( sR!n[+c|ܾ2Y(SHs7`T \sHR0AnѪ $?o`MWX;: Ʃ)6N7㒣q؋ē>Tω.'L 'kv{v\% \|ٽsuI*.'](sB /焼.Vj?x~ 6;yUWO㊯Y@hx˘4JD?iMHII1a[,kp1dHyrأ1LR5q9;Nj[SbN c`O-^,;//:=Yx͋g|rk9k: ir I|PiOQ!u2'&ԧ3͍

ݱO%<;(mA)O")Kc<$hx8yPQQbvQC̘n\'{Ć7<+H'xiz%rN5CyG[cV9yj*x#ڐ2gCs}n~'>6ߥy@jn6ױʺ4f2VpDv%diݠk] M5:RK IDATalkL=MG7+,׾Uyvҭ7,WݒW57%Kmic_~ᙰR;jjʭf@XlY|>u1YP5"C^V,R;(UsrD"䓦z <*'Bynqܬ}m f2_7n>كۘaIMfyG-ηxG-ޅ.h<&|Uqs>d|q2˒書?,?Ç{JOxrNq;>?tx2 =u ?L"slqRhJS/]VM4*~m"xŘpzqhaxi#^)ѺNu9Rt 18lanj-ec PٵJ;#ynlTx-&/IWNƛXVAj8jJ]V[˻eSة/t2= E'?;$T̶Ja*sM';9UME*BUйmIs ';qݒ5okj7n<&ܸ﯊ Q0qa\۶ <fn6ad}6v.M{gT|-,flvGeQRpNhҶiwW˜6RA;)>9v_?)C+C`31~b>ӂaCx~Q~q^>d1Y䗗4p|\vp\\?Z㜎G~_ro;Ky/ /Xa*G \LC|.։N- CE 5wDҼf/g/29y eύBc{ g|RogKTwdA`Xp>iñDq-!+e n=*NV ;*qӑ( $g>E:QtRӑ:}V'dB9o:&@kZJvic@T=zg%\-!1)tt{ֵ1A"QeUwf`8~Ip+|]=h&}ŵ qss\ǚ dkqv5uTF Jmuh206WF,ЫUw$mT<=i05T!оY9v*IGU8Fq{9mU ̣Sf Ht,weV]< >,@ͼN`ʾ[r.ƻ-Z#X䵺vWC-ezr?ﵻw/p8qR:^9&ʘq-}4b࿚ki_#tR >۔5(ܶAjBtaQ}#IsiP> ;2p5Y/Pt?_x pqLva)[_|򯍧9&x a@_J0kUaE6!z@XݛIM3txd 6Ƙ5D:a湒ƄEm᠝:C:{ LSӾ͘qo6ֺtHl:]щt%F $ц́9N/ 7fNOIMZmS:O|vЯmoyiry t^+sLjĵgKk566 fUZ*mM\uk0@~!B v 5 dX$oiy-]깿bs$Rrjɣ= SUy kb3et+0cOW{ ةmh m:I$D 7Wj!['n7N)B[A%$|xeMĉs%̳{dO奰ɷo[rUn WsY]Ɛ:X*i媼Vxwr.@֓r~!czǖ/m /~w_X5p$L-@x,.č\bҜ|p]}Lx/^ny]k`/I¤y8kvrׅd9:ىBp o l,BYm#_`!f-WTpF^@ \G* ׾SZAlۜ2E ?8-&>b"VuaA^εx]vrƺNv9G*.7]RVnŋpׂ'hi64+=YF 5p@"I{_ H^! oc'R{` 9xMQhk~>$Bqɜ^b/i\Jgky(;z0 bEf{AC %lVe8钎Q v8o -3ʰh ]ucgJQB7g;gv<_ `灸:C 2`hejٴF:w"vB Ig^ܛJV'9eBm2;sNж\K9akس-&oE`f*;vI1в q}synmec~Ej.^9hj#J*?lV}׾Gt^/m}b\/%p*M/IS0`;L[s`̚1Þǀ"\SI==8= $Gp9r,Amu^'VȄVvVBR:5^^j% =(\>2r{N.fcRI,/)e&w܋\%&s;ILI5Wy#^B%g/j:uL α.r <=d@d (a+8s>{Eh9~cB96eyM0gϞm8B=E!;K/0VP@zه@eKuL:^W)476 [8fSqk}Š*[ֹ\!̣pP]r(EL>yݮ@B !& u_;d86="s<9Љ3#Kr@71E(E]< eWm[嚃/z>бhXB^&ۧS8unݱ>s?kĮw㠍>rݹm#ޛF6zKl$;AНMsm}Ƕg|[旹Rq:^;t9':;1 ַZQA|:2BHc#cX. <(3Ǭaz.mF/&,+!j< D{BJ؋9CQ1^E1N\ݧaqAұLp 'A ' sիqkkurO0o?~"Z^[f34ԺC9 6 gU6mQq Lpyy >R)]| 8!X@_=N'\>6Vf}l/H{J~Uy6N|y 1vշf>|41. k=H[&ϥmrZF_H|]titfXOX $ֈn`}e RQG@T&| vM0qւ)h5'| ,Nra?Nr/ޘsG⇘ ?~]f\#c;ERİ#t oEMXX(<>Tv{.uOḧY:'\S>[Y'? VykA| .o{cZNFlƌ6.gsrʕփgx]MD7+րɧd<Wc)㑈y?!' h_SP`VU6$L8`N&LE`X$fnm{K&E`w.lT'*޼ai zs~3S[y 1@-an-?\qk?ȲwZTO J8O7bŘ=;i>Ͳmֳ5$k@LW 0羜rWmU]dվe8a amrOҋlr%n94aՖwX<5hHbukp4/t ~1_<Va8|mnN\B*.{e@/ͻ"u* bBQ\۸gDӰ8ŃDK4I=佸wo~~e$V}3^I뷾oG2e369*~X3yE,J|vCdC4G*3f%n8lVno#41~ocЇl 5w- ÝjVZ;f-nbPmrp8wIŹ /ӭ5?W؂o94C5V-5 nYEк#g`xe~͘]DŶʶQm9f| ƽs=S-:1HΊӽ/;>ۺn"*M@w:Nez1Lwݘs4йHz'ye&Rt*^7?PFyi6S j9UwVn:G] ww0-G6+ux/{ X$)VX;<>bwe'Oaasн[!]ty޶wp 0ƥ u׭m,|b \I/}8|yr{Zm9έe/2,1'xe(hKN#QQ .etq#gk7-'p o'vkekRp ?deqYׁ;{zbXsBkwˍ5e^\=^\Qٕ.vjƛNl4 D.~X!ន?T2vܕoGH9Zo8f{,-C180KKKX!jةC١*. jC-459 fqYV+J>r% zc';?Skr*#][DA LCP5l>N,.eg&njrճus^n u[픹͸vO5;sS0f\ePx*ַu7llkN}ܷ~h˸wsL/8gP1Y]16M[Ø |=02Cd{/'ѹU۪|miQM+UH:7 @!8sc&|4Pɵ㸅;>>у\\ycy|u\pj. IDAT3Mny.y_-g?Z/B7G3 |瀼O>яظBI/'ɼ<'^[{ !xBGsC62l^zxi,ꂍ,3oi8r[˕k1xo]>#9bĵ|&\-xNl2S޶? L_,n>Bn]pHmumF'|u9/<WT#Gix$JN`nϮ APŶ󖶑tTf-szS_ּϼę2"} U9jfj{e~^ߟֹ_M4)f:^snB.Ⱦ$؊yc![*Tf# 4*aDRDq9fS8ZSq#jBw C鯈o֗19 I>ԚLrkwN.ރG|oyr˧{_xup ;kC>Ѓ$xX ?''"l1x.=2Wu{/NvX._]=x;˾C2tCQ.Y&}μt2&ZX*pCbVz4_ 93|0޿~Ay3*K.o?5Ca_OKCx[2ޒLE :&?]~mL6d7kl;eԹ*) ˸0MA&]pF>z{-mVNȖZpc|BhAiҸ+ukn/xRP*PTص \zȬAѐQnU͖{F֖-zOs=ъU9lV,;7a+hIƛ #ëso%)_ĩ_ګ#W~uH!|k`7NIa"-67SI A l\"ϧ~/qc2ٮlm,k:m9PwXsͩmY6洪%e]LFn<_M"|yח'o/Ĝ \Oǿc&jkh5?~9;jVkVp9;wnǥz]wn>峫=o|g9ZV qB}q1)^!|1'|!;5fʖj  ;ݏ=?_GWi͈>DD[t؃wh_qx?__.?~AxG%eϡ#˱~'.r`] @SmeNK dϾl8zz6hS%-!ԎLN6J#͵6nWQE4n& j`qfꖞH ~[&58twLbIE[y$$F ֱȕ.n'%[¹laeo't3oTKگ]tڕ7bn)\ellck\r|x:3Ni?{ ;xdrNcxqh R^FnߟE7됣Iݮآ}eM?h_\Ę-Ћ̝+, 0g/rV,f{}]y b $0k[/׬AB%!@H+^[A5BgG(kZv[ǜ>Xx+VuON րڀQ1nQ?+{Jح#A#\hRXRd}ZSyZ1cT51c7bQw[[|KƜC*wVދ-vr3Pc׎:3}∩m:sZx1Z-jmln6?b\_^&5 b?-h@X?sj`91SmK5ԱvHfP׏X(66nϝ Ė~|_sZESGB:Oh;4aL*7/6$`Sw5_7H͘S|Vɑ ukhܺ9pgGXォ#9=kvuB2_y{YxC~}_^-',995`Un !fD_1x,EG'D4wY7ʸpaࡖ/@zjJ/'ܸ BHxq%֭u\˻ ܫm+ ߠs;"p,j1VtFF5. AQPܱGG{10q4?N<d$fWA&#ۖ9>q9NO6$O_6%FsW8ON)V; HTuJZclc]t,J99 I ɡ=ThE)1:T6CڌassKKСӋS͟ %]J)HVU8^$'y&wIm w}?u fŘN~Oa[}[=~r)dxr0]<\#yU]Mx w5ޢ[pU&xK48UQI"/nn)ݜD*0iĕ_!ڗz'†+X|6qQ]; V7#ƒ/nqr=ܦ g>Ƙ08uWry嬼9@%)oNfc_eqkhmgG}o|S6nnma~{cVjӮ|R\ L.ߗO2t8F~O9O/]jc^2$w*28|ثU2ހNr(ajqmsmٵls-rBNLkkLܥ.}|sRo.WcK?X:\yw9{rI< ͋ؓ).Ee q{*u^;po/'z9&C` ;~;&e|]LxiaŠ!+ >ܠ2[Nz`Ov:ϖW-R{trn!?O!GmX}OYu==v#0wr۹~ɇ.Tf|W$K]4FB7c7W:Wy3&q߮9d)[/z)!dï@D|dtrGN(٩c|GS'8/x:xr.&7u;7ws\ր -@9/c*/'ݽ#Lty;΅@z@;ueVhjwU?c 1=u{*miS I//98;pSilw/,n]]r.\5<'O;\+FbΉeo/p1>wn?`zVb<بeu^=!+r_; )2 C)Ar BA@OiCG E!$rWM:%tL!DP[sH˄Vs+O)eX[ۈVor|l |q˜rP[S!0}vt+UeY]:NŮ#r"] @}P%TK m׳oG?<]o6 i5OdΖwX:S3m\Tk݊dL*[͉%Gn?5L`RvƙL~s9Vfmå}#9=_M'qC? (m:75&5s9X& Q|1:yأ7rz?/<8*%.Wyf ?Z^`wזso~pg}!8+ȡ #sui9]p.i o69 &\(|E2LRa&}΍~nD{JELpy;zZ_Lbp AĐKnk74/me8EQ!z/S PNjiL_O?Oj41OJGhaٝ)[Y ~"ƛp YuxGChA[5Oe~j0tטBp/B^ɜ[_fE"E[mqlkx%EsV"h%ڟjr[Du74׎ۛBfiuLs1J8De+'bP۪lv>'}V'AKњ'UjRn~!D?;ʄ6} V3Gk58J5R!X7z؜D: sG7s#kN@)boU}4f Sf+߭+)}HI.G]%, u B{LE]U E/@HѰʑ~Ns/OcM޻<ɍKǝp/En-V1QL9Ʈ9H騠ٕ A_pA V]6ʭ?Z5̝[9ۘœc~To64^!0rU^l8"oM\S N+ =W,OJm4̡snv.:vtKqC 6@g l >SW ;[Vuȶ,\rLT6)t<ècimmB:pMW2!8\mtJFk[G=T=V]JvYt Bv897e֗QƐ*_n9)sk:ٰ-8gZIw8LpO=g7T/}[] F2b 9>ao7;k~|RvJs<4$j^T=6@_ᅣ=$SR"DjO Vܯ  6**u=0L Prю: 8·E}bR'NSM-g#N(R}!1a@f9JJhڛorKeAGTNnܜ[)S2v-";1m 䦱 וk,7-es@&މ!4QP΁qL򉬤!h70yA胏g7ѣ#h~Foi[ JVejcWAE[%VjW2vA=v".tܷEcN<ZucP\$ӗ{KU}M -Ygߣr&Q= jZ}Hih&b3s$tfKoö2с[ Se'ծ*0f}Xc[lx:750Zg=qtvEw ]ИXڹ`9[5q~k-jn*YS}_л%/+oi{˻*jcq߽И~ñr9<SѫOxK cKj;QJsq9HdchhT)vA̅-McۭI<20Jkto|vr"k]pQ' 1\MdeqX;.N!S6F_r^>" }706kRsE{9Vvn v?oRfZq" 7K-S$ D@$QW%ƚ/bk׿9[vSz]Za6]YnK˱-s^SpgA>8 ԴKvExjlW_YmGgoLKӅ5 l0oddю!C@Gfޘ/ S3 k݉U}=,t֌['Ӂ>N>9=3sqm^Fo ;cҏp΍,s>N, ɑnYC*quԍJ*h&9i^-8`q8 ~ /fV}04}Ӌ^[7ؽ3_0JKR0!{0u|#sktkZ=ŶG8}tML?-{SMTmqlj?I6 a5pEw0uL-$L=kC[,W-8@#qּlj'}Sә02̎>}|b[Ϲ+\e͑qih\$w'[Sr׼aӫ}+X@&xO`;@O;5TzZu/XC qpcvv0fv(Z[h@bxL[ k(ޘDF1 ,<;$;pckj̚F+YQ Ϻ2£1$]o>0(%86f0ଯ8<W:肸eyMge ANaO :>(J"k IDATՙy-8MV~ ΎLƿZ}Vݑ(S? p ,`cLp \91g]XB|曋'm/pц穏Ρ<~;#C7^v#>0 o%e8}ۅC%>4Z$}vBƉ^HpnfuxCxX2yL<BcMm7*W]LuMs+dKV+S02Hɦu?k5:>SԢ:gBw!]΅0 ;j<.q^`Y_PNh͙a֬ i#ySsGzr5Zʞqz?$pr;e_H ?KD{,¤#1Wt q(¯;):c8mŃ>֏ẒWra{Lҷ`m#(t0 7 ,>Wr l8N(?,_KK ٚy!zŽQTa~==SYR&ƚl}{ :~z 2.#kcpR9rM3Kv\xMew 6zmIWY5AƝnNVUhin@r}`zB\IWn0k%n%Z'!D"H*?;1m = 9o +hp+ri;/RWƚ٥j;ob 8Mɯa'P%p^?/c/!+5b=2 ?K9o{;{u a%a'\XaxIC\mB⣩?o")@54;ܸX~aL{]]:El3~,N1UG9fljO w=עc{u.9U-yj;k(ӮuRP"=w:`do/vrE1|T⥶'xDz|q[1\4\ cԎ6Ż#g,笷{T>ԊIz{bt?׾|#P9GrqCMZaxp1/u\T?haq[vwo< *~s=.;#N-)sӶǩԜ穨L0[~|)dk$D{~p! xSQ4.߱ :NZM HU@m0@A4RQ̧3p5:?DZPyt2s(Vl99 kİMW 5LSI~p9Nytqdu XK`AnUFD\籠AՠDbl醙 hVewǿ Q=ȿ=sr-v[Ϲ_mxȎ| ȏG9ZC9m@s/c8O?t.^} b#̫g1uBG~j>~Au.SCoCfP|ϗw\,xazoc~˟L}-ԚFDۧBXPRB+=/&RBGB\D<:wb:؉NKr"cT 0 VjP-?pF }m}!}x?<1J^.YǵC-*j9Qw$vXN%yK=3RZRtT s'DDdΥ]d8VA6WӿѮiHCYtШd)W]g Vgs=0C6^:+=4c{х"h'Hzq-I(RhkȊ()Ny'2(7'#Թq"-Ո&;?9F֟Ma_E7x њ]/+T엲ko ,K_q9<@5"hp:-ϘFDkIӼ$!16nDem_rv5N~꛴~H%DqR7o<"w#Fd'9opOkshOckM;5ٴN'ئ[waznJyw^1}ؙP% `n{@}NcQktZOy k(܄s:Ӱ֣YJ[KȫGuj郘sD"?hЛ2>zq0lc@1 X0}Y5~vc&CDÑCs1ɳrHaaPrMs~G\~#14'-uqRE9/N;֭YjQz(`93/T_Dod!TMlc9?EjbJMR'pC ĸY'^1lQxYφ^ڸ b#v,=GYuHu3 `i*5fLk 3h܆07G^i5y[)n^9D8}|i1zxc0uv9y0?;~ pbH h<]Sc"p-H2_{\Iw0va%Ed![9 3q.z\05`M_n 2`m/!/Lk#ǁ{Fqh\7{SU05_p1iFO{O .j<^4F] Naq]ө+ո|bl[|0/u"DdC|L3y= y9B#HMrHm=F{3)`^ZCcւ#w]|9?oW~JD&.=k(- bJ|:zRp2unj'ZԔ,QM;PϣOSL!2'c`|5O:Ce_?}n[^xK,q*c`ZOk ɺMT!=.RMѷ #u&E FM:]$Qш}Ĭ@$7޳Nd'buU`~ӵ8lIEo3$EK>3\"Ay,-ol b?X0'ӟQC;wB^r>4)5ז"lkiأJ2OB \Qh8ϸjkK3u8ְcY"SV̽/kD4/)Fm$Kؼe`V_{T5>2Μ{;1دpm:Ϝ3:cOvٱm?>/ #mcE9,Ğ~3͞ޓ$ۿtz*ͪ PEk'Hec'~%bH&Z~)6Ya@觮q=W}jJvUzFR ^2Mf7ʥ (?.x|9OPޚwUNtl$Mۉ8@QBrSa\zlmјN{l|81}+)c,MNW Pqۋ?IK>[}lnMYԠ'39]GuTj<{ËNq"׊W8ߘRTzСE׳q"r&wөH4 j 5kVj2^wxQJTx3*B_"[<,I !:=J;U1C[-Cضp{zErÓz-QFw8I,4S.q?g{{o%rbD3Mܙ|pr|$$nPi ˘D^Yv%[, `Yf_a=ڈ3vZu.g>>r;tk} v#&sLВF(NI=}1_\7XINp#-|er;b·z&*}ζ0<3yw#X}"֬Ջ_Mdlg⛂uLӜѯض}挿 (%>t]қ,`sS1b痋g0z|W+A;9j.ĈZjv|/j1.j.֢ۡa-a>N|z:NmB^pU΍' ][)p|&~gDy1Ao M&D^ݼ_i|ڳ+H0 m5n5ha2;|!0 ')SRJbJGupʽ06>:Ĕq9XK{zK)gU W| HZ[BF*=&b+T8Y8ånommvMýȥWtٸuH ޜ Ia]4՞1@$~a]={1F :n¨|vZ}zTi>tElstje1uz<&,(v%񮃃$;k}3#s.f"0lWqr*< $cݪ \<|xyn6U#eN[_x\[mk^x~ۏ?^)[V0|ʥ8/Er{ѱo|gHJ%F. dFn `N o8sInp Lat=rkgd Wk_c(穕`U_mUKg485Yot '24šoiӣš`!q)Fa>M]Щ5}ioo[տ_-y6:lޕ!'5Ox+kl"Uۘf88} hZxl=xdM{=HR>h=x NF}bc˫po-`26{I|e:7]v_xӍJoqiRr=9Tt5=D.롑CczvY(C>6@Wy_/U&Ծ&ϒ;)[??eCt$)$6~x,b&:NN,8-|nrˎRiIz(-5)z1R}}$`b 1@š:<֦ :f{}7B77+-10v+ٹZ}N9gh/cZ rX2zI(؂Q?ɖPv.շؓ_ʧ+NcfK7agy~Y%\ރ.AbV>y:t :S\5hT։S_U`?/>93\oaZb?#߮W8Sč}w6'Uމl}%h̃5 z4c'U e {&!\oq5,|j$XSrD4&5ƿ֝ͮ:hHjEͅYvrfuX8_@']G)=&'nIءհ{ h_@ˆQێ^8/ZLX^fmgI.J%/SRڒ{:]p%#k,=h[;cyڔy(Z")TjRUӲU鞰{5\j~C?C:^GٓI>,(o1拯Esm2Gj|kF9LJp&}ߋlM> &Lsk$Be$o٧u;Q2 콕`pmS3I}(_%ZN?Adk-7>4Xa_\>hXcryPWY$Zg9>6Ea:N^lk&s(/qg48lllܶqjÊӫ?kga;ԑs Wu ΋W_řo|2&h3QI4WrZejaڹS'zq,b:{;:ó!׎#s(-~M:V*N@_kU\W5#lCu%yx9pyX7m&+O2Ps3xhbZy]ǹGb:WbbMߛ?N${+v`^~$DڗDW`siө5aʑO\ 3qb5)6`z]wQઞ'w%] Ɠcxbv8oFj*pzW+5{w,s-9UNT+ߪ0Z?b \˹~_k= D4=-l<IMfn]qT0*~፳6<<_>B"$ԏ>=$lſp$j÷7G55uk!h)+_s*mG>FE'oXt68/?sGM+W|ͫQ@<#f(vZ=YF![g05x4~In{MQ5 C ~9ʰfr-ܘ爺fڮm4UZu5MeP-IDATM*\V 4٠1xA#F^f׸|s^6xz7J-B=7K}.Kg#Yc?*MѺ];zUY|߸z8uJMz&.k'Ƕ)vڈQd;֌o} H:ߏ0}OtKk_7OC#'N$h+EBV{hv#6?]a_Ic6GM1x135.؜LcbWomk Pd1 X 1 Y}mˆO XG, Hoy{uSRs {˽,Ň1vr~ˇ1ξ`9y4$%j+|b_6Hc_[N g󃺗ݖò_ޒ$h}DėAw$K*tӳ=6ݢ=K)l7_0`GR+YJ5KgaGp}`F_cGkseؘV.YV9F~9{9pc&3'\#/5 vs[[z%k Z wEt XӞ/k:ӚKtj7ֽ͚st‘7 ʣ  tZXWo_1mȜkd}<煶A6h."N9zZsyN>w;E0GicWP~4y`^[tT'$&V {Ks.U>}HӳD?ɧKkTrx 0| ]Gj~X; ru3 >->7lӗY ϗFȚJ|t0F`5Z+6S0! /s}?u6E:7K0(obYG>h}ŋ?$լO\6VsMd&N[z|4T^sI[Gh=38k_{jT|*${ܵM Nl%>q{n:c>`YSr7C/Y$8r 瓳Zzi:N1`T/Ą: Mu؜։F ɑ9=',ҍ77>دe[!߹D{j}Eޚe;>c(U G/Yy ^+_|iYsyv|"5 yê !|5h~FxeLG n5ItLߚsO{.h-/nqt/lGq㞗{_/\é3y?)L8uNޓ&~<=K">LE ڶs_^o=pb\lk>M{$ S9|TsWAU쪌{@ίيuZG_J>ENռn"4p|>i\C/اP Yak#VM "W hd(R%B`,_}616sS;ݚg͸K iTF3rYQPُV\5NFGsk,6\0E  %f𸵊h)x&/N GkM]10p ~k0,^cp4G<<&. -p;)[tM ![.>|IxQnep5D[va4x6)҇ꦥFZXk@ Zq9}j3c92(&,kLCzuk?V藟Oi'e~s7.Ͽyvx's{'|`}_lh# e:ќo±)B$]~tzMFc.2/J&~K6%Y9Wvn* p^5˾s,ylsMjg] ZP1($Dk,uNF_͉F[wc/uM;1bcwSS |[7g/bh{*h$O;YX o,EPHA)nE nF̩5sImy8v_/[|ZNհחǴݺNpoGٓc|ļI=`yݵ9|;>pKSSS"@UWUW.PCւW7P<up[8@8vDȿl5dVz=рY ![m/愆Z8?Sĥ5S{psPAa4hr'_i@ <ĹfVoG>y[z-ٜj|h~ħI1o;GdPurss?ڀZS9B4 YC hd6IڕR`Czc#upI>DXzp;Xuws_aDלp 4_l{c'HlE0'3"w6lۭV}O`w5mpmԺӴ/^kƖP[7e?׺žcj9- G㭵M7_e&~r8M]D>;=ZqBe>X3NJv???9$qWZ$ W3b/d펟yz`[{x5L郡u3}L3W5MuNTڱnغ'dM1?̝ 5w97n_cqJW}2>GE=5"^ə(ݏ՗)8i6| tMf`Ȧwc~Scy\)y.bGJ#Se[P"5[|LjӭG ;u#9PyVƐ,aI܍M rv`&uَ cn(!G|r%Wl]o;sc_}۷LSv=ȭ=%']Jf1wno AhSWJDN v?Urp<[鷿zG>Y_ P`3׎(u`'γ"dRЇRTJl(5gx[z]W6g4u?&Gfgl~lS;ɗnfY!Mۣ)Iᙛl(wtb'(`(gV,[ 5syzD{$}/仔-'NcDgO cWnOY~׍o%(9ߌ<ϙ'NQ+>.B#g˔6a13T-Fo wx̂!+}rҍB7Me3pˁp%vΩ lsl#K쎹Aэ v,-$Vu ӛ?Mh-R}G=OC5)]4z.c70Lޏh;ߢR;ȋjCbĖsIt%NcdK4;cv$b>E:S[?iyqT\^%. 8soױj\>4Ϻ ~rtC:}b;1?1h54x9OVތidkcBTePyTƊhlsfU[;5쳒8oF|`N[VИs[l ဦٗe Wƭ~ڻKc(ą/zx:&j`9ӏǂsN]x"g-Q]KTGYr6_ŸA^\7m">γ[Idm"Bd>@l;6OqaHg ,+Iᷭn"V}Vgo?w7swΔu"K}:~oVrG"+ s'4PoQVxj&>* 7>51RՐ6 H Ek}Ҫ&~CmNS{9/pce ~.*Nd=bGƦ=&IʇlWu3E=–a_kBF_a\G;3To'(mNm7Qj 23XW)uac_>4~}M_ uVT}_)84)]}Rvi?^FA1#]^%kͥm^Yד}F$t\^rcb{4FO4љ3[0dy <^l>o:4fG9gO+D!kKb\lcb\[/{`>]>N 7G;<?dʢK&ulNҬF}b=rs~~-v5Gs ٥} ϩ?08!V I'U0ŴñZxR}aA:^[z#[򽎽Sn`pRȮI})ݟaSHq{_vȑ7'D) FR] Vkr5m\WNf'{T,g^Z '_ٟDo{ɵO@ *X›{7FӃFژ9:HgIET6x}Lo"n?OlƾYM`Y_5%QI*f4*c5,=/ؑmms=2;W}!~WrZPLƝm$k%n5278|'c}eeWI_-}>?jIpUf9.36yOԕJ GU3"$Q//ʡ k 3"8A`,ACփ}JcD7O53J|wց} 0c%NKF@eݘ:AzDxp`6[)hʩ}nЭ 4qpeS9I-'js8"U*5jOLat\t ]#̸ԏ aʧ4*]Y*sq|KJI?v9qINc;%bޞ}K:Yh}~M{'-.s5ޗ39g+{ o! r~-}ww'~uI&]Cוּm3?o%YczQ+˩\>Fzh~Ng\]|PD:D~G_cW*j<1'hgAEP<n 牉#Oo>tC;^Jt|xkm,1%O 6m('#\I >H]qĨQekĜ]{koVD"~OtfKY-ö?k:7'n·<Ĭ.+tFc7z5㓹WOn\uZkVP2yu?XW}V 7WG&h| qr^q(x]W5izrqi"ZMB9/qcQ-NT_&7Ce&x:=`h9C\ة{ƊM(ĿΓ"Ő9õ ]eȞ(0 ws?}]L0;oS ~1w>L ߇b_y%1ֈMuz-i|6 eVGQ"`Y662~1c35 T]-ߜ#V4ѼƄf_Ý1\eS\H09<AgljJ܅\0eN\d,vǟҙ]9\7^tk ܙ:Chr2&&`E%8 H'-e+] P 6J^tS&-^TKy5aY~/tCNSKTwL~7 q좹|w-=@ߩNެ)bt%x[;WvBq-.X>TFth8.ho`Z/OE.[ds-ms&M"*VZ( j |%64S7?}50尫K)!.Us]*+/N#\7~TZ]M@,t=O7@e26_^y>Ƅ܋f#1$,+ODe\{uD=DՅ7¸Ff hZ64E}~,ʚȞ)yԬu\uǮCW?ləC#x2 \e)l4Ϭ{Mdܽ]1L0r>cCA@5:aTxc^/zfB"33ȟ}+s03c@B5W~vӱN ޽J)O=$`U<GDUm3d4,#StY*%lunOǫp8ݑzxpԞoU0ӮSкĦ {)ͻg䊮8[NL󤏙51'y.SR#Qw#g_1!x > d)LC-g[Gugdͥ S_SAĭ|!Aή5f\m=ڜ*%dQw}_[yem)W)-1029o5uD;ƜDב3c-94躞Z.~wDğeflp]d YP(/~P:1f}:?e>y>.sF7(46r ܺe% ڜL,Dr/ | c}*P$#}ʅ+>Z{qzf+꫱剠Oe5TDYЁ1Z(Mb/{~jVv*xͺ)z sV zw5K>EqpȞ>{Gţ]>|g|PYkt֊&)D9+e*Xئcrmnu* 362-[y3 u0xp0e[&Fq%':zɱcq>Qg vU 6y.'VfY]æ''b̛ou(a|B Z?5>ӫ°P5ޞ:\8/9\bPZ-@1 2%]rQ0huMC޽ %3FrJK^!>&_ʕZ{ 7߶!grˮ#m W|L7a%>ߏ{{͹#X;w<19s{ۖyUs|} +~caӛ`mЬБwϜ\t@D, .73k:G*\mb>BHF͇mWagˉf9k~p0W*~}^/{:3r RHJ|A}ᄡ1P2Β][!T/EmEr:^:/c{Zh%^Er}?zT_*ԗ { Fꅋ?p=4W@qHm|خTׁWgE9.^=b?^=7+ơuU^֣aWJCkA:TIw9\@ 4xd¼ y*PĪAT7% .T! D> FYgZN`'j.<6gɭzZMyk+;1`qIW ;)1xFA:80DǺ/oXy=?y/s5i!Iʽe.NZ'>Ŕ%:߆-R{DHDda wѧgkyNkh[ yMc.jr6lU23{>u$؊'GW=;g&j-Px]ꉝ*9/lPKӹkrX*Z=#AqwoX=yz~=ǜ;UQu.C(>+}uګ+ĿY|ޱe o)?}OwN~nO Em/$H3':s/\J|] 2RNf KQlk8EA*YҽNlɆ¸]s(V>= IDAT'ɥu{r<8"6kq^Jozkdz-l NkY1C .Zω8A:/3 ۡY]CKS*m5ub_80=a?g ,9vӧX~,vVПwc}saYR+}*1O> d9Ǽx\GF,^8h/ވ:W/rӦ!s|Ɵ>{D=}tzZkE2$dhl۵JٮbgLae7bXii ɗ `ClX +90)*|8D `J$5yxe,W}; .ϒzN8<,FLjQ 㟪e}'^L>b")ẗ́)z>w(Z<-V{Rւ'Zwס ;A5..O83u9KS=?8%su2J=rl?x{d)L6cyW\q8=9& qFt]`cm۴U'S)"z-4uUm"ʠeˇmD& >3;6ñێ5ϭ϶e`|}sŰ%{`ZUK1"ς7R̢0묯}Ϩi"<[;9vOK:#pMG?vm։&iT[UkqBKY(/Fq/9} b"k؃gij d4J^kKBL_=|8Oz#5z ްǖ<(M|M30IEfcgzQ9LeS9m<ٿ!ݛ^~{>l(sUf|3Qr o.xdG$yڌBg/$kܬ +V-_?xLJ-5MRSȯ3͗m^թXw aKTy! X+PCjX©+8 ,AfD-L}r#@=R>8{{=9YkJ y|to`}@-x8չqW /ƥmS ;Fiblp⡚71:@EC -s 0 ~3*W!ۖKǚTY933\f#:{=]4%ۧ(᧔t;J2|Z\kjВ8OUS[ЇGg=%UKYZ~dũ!IEHqG^>-"Ƒc'MݘݓUHBlooY_렚_9Z|{S\Gòrky}-'Jf%Cu(p]} .[/Zoh˸M.u/YkV$ԌE֍TD5c[dxn=10J0]~ynۭԓ^mO ﯎ݯÍd^_C{氢35ﰄ$LuyNΠŶ_7eփs/m阊_7ˮ܅̺0 jw]-Ct =7i穿4B9#83)F^G2"-W%m_LX3ߴ:KYH*0M]1{}LD?K3r*xNC~=oC5! Yoo8eCoA9La0EfjY{4b] 4CGj\mv_+`kb:zPO*FC|B/F'OR n?ыĵ5RשOqO,\:i߹1֚g;O0 )ԓ%rE*[ 8Lb/) S%9+5Mo~G%BT1`=A~z[z# ZczdV#>K ^W;'ma]p ,q5Gwp(q S*ɖ1ψ33ș-2s֚u0J?k%V45 p9##l56٩P036Fa>|\!ٵNNG_ET$PKdOH%/d[11)v%Up8u^}xa[lr$@R_wp)WHZOL'8~p)|僮F=_ID0ɯyCLR3VϓImH[v YۺRYMZJ?9y8lOnisffcfNJ[M5n~OP'tZυ fh2ʞguLU;N4m!zVOyʒ}@_>V`ŷ?ಸA<8[=g;e-UdYĤnŻcV"=UR}&iq;weMuؐ,_'w祩4õ?f9*sؘϺIrJU)qWlK>0 |4sީ~\75<:%!^|ɠ{a bo4(_77tg 0Y4A(UX5PB2YI Qxׇ}a>D?ṳ2z]u1Qbh2)~)[Tf a׏LY}٣7 |˲9 4& 7Ԣ6ox-74/$=23,&_e#|DQlȪ r긩̇U5U$Lxc)DL7:C R>L'j5owԟ壞#ol&ey/=. 3 ߵ [;֥$G>.d5LIYGhbj6Z65 Xy)iDǭ oz[=Ǘ&Nb]g|\۸7'ŏOCDf.7_X<Yi۞ʾi۸{q;}Mbzq9?/+g9-! m?dkx,G^,~-gȉ0 ;!4)R'F,pV2!ppMl $\ν)2cI@~IquQb31 [y.f+ ׵C$`?.o'Od?%*~(zt8cLd9SI^*)N;1t X $_|GU7naR%_Y }#"'Uw^`$eYEɤ Q_ G+Z^,*=),W"%m}(]c$ 0$=krGFe})Kj^r<6}s\gQ{D|7HLlr -W7D}q"qg~冚^>s}FMO"o&sʛItۍ#ՔpnADUeuG vf_Uyl8{!te؇_J]V~|x)`ßvԼc:0}ky?8fεr'ٜ[V_dep2]vEtcJ\CEDž>Bcyĭw6ecۢ@a]'E>VfWFiOS`_,Y })w7,C̸`η8E/ VVy(ίDB"p 5tގp؈U/S0]g+q9k{4NDkPJ7=_736z2txKOckW;;F'e0{:p>#2OUk`Jˇ_Y*|gO?umCJ3?k ZO#>#VGBײ\GEAfLo#G#'5^k묠˃U[#k"R'?%qۢˊ|ϯLHzs߾_DW4Ρ`9'KS#15 ymC^5qGٞh"o[|~apK}ۂk^o!p4ߡNXUOu_9c^4^Z8š?II9=>9/6x:fF=Cua"ZX q?\G㳀RXh6G]6aЗ]Ww^"˦GbטhMɑJ @ɷA켑bRa?ŗ'Kx7 .I"wa 82V.۩C FY :a]66fP?R'lZ2mCQN2& ۆOt5$c1lyj^: 0`)|j@o^A?8q]͸S^`͍ޝRn89GUVḳ){JWJO-DyߌELɓs | ؊*;>3}zK$%u}wҒk'`:pyŤ]ZJ]d-PWLj s0cԙZ5kaS~A /9m9oO_:GE9VVv@2*W>`Jʕ/:gϛ[R85{jOB(`my2fF2Փ52/=̜TyVFªHe\ D'J.ԙ!5}ml32v<`R?b5^:DN!cQ>wth ڊמ׍y@v GOE1Wh 5}sp]~ê7ܢ}0@Ihs:Ĕ-b%6=_4E =pTaa_.,ɲY,6{Rـ{fisJ Va*Qet$"2lۄPԐ%;lsh)Se;2 >ϐb[̶>)Syx\m[ o1 Y!&{L)Yyots˻fI +݇zV%6{ oP,zbOb['E>?J E_ݏ+.`UtypkPM&]pFzsiL͕/R7p#3` 0cŃ)fZW+:^*0IsˠKI l{ԤUP{}y&k vZw-Dj:hh˞JyTYOIg`q04%#{& S?ly*<8 Ӝ隓3]7q)Tia4uZ%`!fx٪n?2>maS6/GcMSOYAwG2Ӹ1 +8`ڳ|R7r/A*<{{/;9wԩ$b7<| L/~RMlj6/3>^_Pȼ'~#^*"7|QzaPNvnwȊ7ϗM |%SUXyj*zANUQAa둅<3Ө 8)Ak1 8$[cū9OFF]LK0obGì_>kW8jӘ-mΙH2?k>Q~w?^JLCՓZ4wuR{5kuFz;O :Gud5 sYQT·x~da8O)%3=t斾kQ|aXA]JO)*aT.V.pɌ!/rz+lջyd:ȶ֣ܥWk&S]/;LeuZs㚃wIJ WIN &Z"60$-P =ʦH} 3"^VS\ ?;@\/YCEEܳtS{ӐΙu luol˲+MW ۷aݯN? 5?uj4լ}+fE~CD:JꍣL_ }J:. IDAT-׆Dr%ˑ Qc"7 e_391+9)=\cU{c}Kp'qgFힷ5/8pG'bצ}__3Qq`Sg_gŸDKM+F A_v͏E^ܯ wwQb<=dBeSՓj)I=&b&c@BS+Q5r޴S Eqi y+Va84r)NB$Gꐶs>䌍2r !?WC,qꛂ̾1TSVmwףEOK>JSlKrȁ\j(8AW#ݭq Ixc.9V$dj ̟]{$/_Xk"I\XBQĘW!>q5>:_ϝΩl(>$WЎwN`#k2lYj:TKX8:{lCZDIZC,)OPzdRAa/4d#Þ'řO)66hX0ۯJOk#.1s/x69 {sZ)X*-1Sϕl4!::؋5B)ƾ)ژqkoX}r S?)Pcc=ߜI2둦۬Q=Ñ:O C^m[2 ]BHPKiAJg=6[Lˀ;i&|v2+_}|'bbˌ/c~* ȳ?My> 1@cS_,V>5äE{+)3/E9֚͜n_3'<碁e=}ɑb4͵%V'C츩3A#`ɶ).^C$xABMC/|l'\+y"'55q'Wzվ2_ CuPX kq!l\w ,ܶQC4-WF$ &Kk* ̇-;t7A;eb}-^_!+EH3\)*ձR /w{u ctƂgsfv _4ûppw u0ߺ;;YS1mȁg?ƇSV]r,)yMަxn{,x5HpH\|.3Xk /cp WaRj#?z^Q[ZlZN[/KJ$.y_,+C&ev+y-oj|ɤVy& {]'yӄ% <DܣY*pK9*U3r˃w.SXc,dH5C@W͵pF菆>cB3%S^d+8.2h@"n !Ǘ^5UiU:?:P4Ax02[{^Է9c$qPjP\l"0?lW$5+T8M䗣@P 萣e`R.23ȫs!ɻ=1LALu9c |BaQйtT?خlb<L >(C,ĖOgXIĆWEU7,z^gv-q]𙣉؉srQSOn5bn):٣c݂1b6/;ߖ@VLpN@|! ȴM^y yN6ԅ9:ؐ߆g_~qkIE~d,V|C1\:€?s}WIKd]99ZDeb A+ebW / .6ǽSݹ74R)r*>_H!_&s}:b|sc<:R?|s)x S•ޑ"?OחdCSϩ?#&- XJ vȦgM9*Nd黦2)0QʘT9rS;a ʯ6&5,ϸ 3`*$RT>ZH B bă ~qϯ؟Ey'%^a7{jYXؔIN5C:/]9"RsD$5AkjԴyʣT(Ǯ `gA O&%&0}L fl frR? ;!aS'/w]pJ ˜[~kAһYE`Ȗ4aq~C}H 3f/C/{($ljme8[J0ӟ2Hжu(5/E8+Vf'0T46{zxk L}J_ǿq+Ԩ %HEu7?|M#%Ynhi,axu Mq~ZkrI@I)}xᢝ%`-؄>2B#z֓ 1c {m;r+9ۼF3.Å+9Ϝ@u 3or8OOs4JK,',2j;0`Rs{1eA};O-%}oT,Q h7ly}qQRZ1+Q^ B^\7~ə't~YF6G#m-EiWD~ f%\Q)_?-ŪztCREkCd'!e謦;)K/02 j 5pפ ~EG̩0iVCZꂍBrEdb.3>e׹zrƎYHȊkoĠO?:}gu{@2oך& 5R_̩>% ̩APJI9T3zawed- :{ׁ5Dh3: >$pU ?6|˟eI Zgat2nϖ QׅV f>T1$e~_MXqV1O 4GHN+OJ2,PA>oPrlkL/ G*Hqu}@"A_+l ‰baNh,dr{fD\ۚB?Eڅ wݪI)I px|a#id2OVHS#seJ4fyȌj^ɪtĽ{.kvuꟸ/gENbXЋl3Z/ R>pbMWu`Ho.nTpsb9 %:5\t! {;lB(kW- |s'-3h[(+GoN!Ǥw4%)rͺ˶QP . [|9׼һa震+ :吷p+rwtrB| |.ᎅ5o֙d2HDϷ~Gmzb;]r+|j) ֑GY[̱, c3I0gy:q"'&<G8/*y 0e} ndjHI,l/>OSmMK9n&Wͻ_ZolNj** sh2襰^g.J3hj]`0~CoCqa!" 1ﻠU1@6lX54CF&Ev^V6:ޜ(%8*R8 ʄ47hb݅I: Z\}|JLR7q|Į38 i<@]ꉿg(y׍[%ʸ6dSv EĬ};gkk-\Xն ${Hr0CH]ኮC4*.APЩ|-3@W`{Ùزk1$ qcPlكϜʯ\M㼇H#T3x;X2oߖ+ZSv1;!C=~5/{׷zjWlsR.088֦Ԝ^ w3}7҃ O>vmV3~AخQ2Jni_MQѳPLq޹53zcy@A_rM@]7Iԙ?zz\?^|;ZYyT^(b˖9KƼic{Mq}b `#?\Q54~K>Re̊/ "KClÏgqɶWc1B׺# GX9 8q( "ϋ[Aȍs~$"7[#Xj[-wڞ1dw>я_t.g^pP'hR_{d,s}abJ`>+@ɐbxu9c `F*JAq"?(>kYɰu_'X1N7JJchezߢyZg&ټ.r aM4n%)eIDE*N۸A7PTu'eEfTO3\w{ 0ui|u6WHg./|?wFL ]:\SOjUeZz:蓋z7'{wArONgRŔӶIoϏW zPW#k*W&Pxlmunfjsxj}_Rm<׎@J`9[GQ ,[B?RWts31d3At7y it7wm+!A䍱|/eoFg 7LZ+ؾl<212c}^\~ +i ĉWX,zװ忞5ɴ;l?'-<)iaH=s*d]$Y_a_pt̏b$. 51(^$r=%2^270 ijJySF>!BX=knxA{N!GZ;)#JbSV|k@Zxb2e|>4ɩ 'v9 g(SvCTJ怱3͉]w[ĉ$_gB\rk'pZ3ƙp5îB ?u}4|6g eD*bsO|`#](=8,A6cN%fD) Xf`rGnnŶ+irD9qWΩ/Wcnyye{H^9 5wEf}Ӏ~N8pT#>D[֐dم_Lbw pdF/@t "WTW؀lsNQw9cO)uP[>nۤSQ]x$r1gH2mT@ą/>eG,ٜ{Gyȸ9NԇOG>3Ux˸: Ƈҿuǐ!0;9I=C؄_ŀf"x,*di>{85ol|3rh|g޾Eg&M:˜]䯅Yu? mGXb^gBSX>sFs):$+>? ¾]Advf9?>!]g(>4 i1Yӷ ?Ir=ʜig IDATcA:A,ia vD J rCyUݘCc>.0K7<Mb+ &A6bJz,ؐѶ +r*Ɂe=;F p5O0};P1`'osf7aj Rw'G g0&ۢcKp;, h XUvxLJ<4` a4q{fl֢W䆯链y$x+ S?,E !9Z E()+Ng4 eg'`K.yO ܗ.@]TqcZCUbf/F8 gPa"ZE,==Ѭ\"̇ay+IhLKLQs:re43&D|'LîL`fI(a1)m5Wнyc&3 P^DKWܘ=ST;bB7u`XX؇NѼ#rnJ0qAMzi2\(rzL7rpI1!;2)ǩPgwZb)b^y25|_rsGvbH%MdӺy:of"yĥ*t}RTH9uPy~2 Q"7Sk y^ӊy15?=b}!WF2ڌWa-gۜ'.>J9HyNrRVcLs7RH rP(!cmpKH~2Yz dRn1^g@H8Fv+u`{aQz yB)cLuO%NYs:V NG90J:O|XUn{x+[si=s@iI8Hb)-P{I=sxjGП7%DIy]Q6='n^i6 ?7TdDIGʥ7zۨW`3 E"gUe\9ц4_)Sƚh#UNju RBbBrCM ])9zd3[B8ǃW2>=i,Uݧ,'27}N$1&]ꍃM,c*: ڋE6<=6c֮JG)C 8zbeW>n(1^:kKd,pʞ2D/1}1%~EQ_X}Alu=-գ'dȴ`u[@-<'KjC29YVyf^wG't[ɸZXA0+'=@U} KҰ,H5ՍtDS!N_DeĦS 6R:]'\Nhü/\E{C|y_bTM;mN{cW9ӭvvĩv8UkvDq [k]Ɯdž287wkmMBOen?ޏӏNr~#eZzaLIthilO]4MD$qN]Ia3fQIO?yqbcRF`>a1i(_L0qݟ\;G A%|©fu z$F|Cn^"lsNG\l@G]o4Tp7>b='B^n7uGXSI)wT "j]qnjPLD IsHn87Yxd;\ `h$'HkA<7)\6bWǤ^KNג03fX#WͥfbO$9G3q9a½2YE䞔$~^fw#;!zrխc.'zKIAD^Cbjet-!yaaя:ukiTYiޯe k KV&`%uVСceU'jӺU^ě2b"ʍ5t9Aw?.}?w|.w.,;Su`ɀrlBK[?|ANO*kO|=I۹ԇ;'l }(ccg._n'pcUtPRΌQαٌc;җE3lS]p0f2⅜W4A^l%w. x lݙy>Ly`'3B>E{{mA-U<2_]EW'p2b9rb;qz;y5,5Iڎ3'fG>[^Sf_]IG'j0]#sP|֗i@5q2pBgYOPKA/53Ίlzǥr ƕ~Ԧ)a٘EdBJ#zaGUD%rM=|v=rr]9s=u>wM@8οAތsL80iMع) [*,ɩݼN`LUIHWx1NΕt.םCs'dZ>vs?o{bP yQsSWZd_zX/J2A&-gtW ׽y}]hw(ķ[.[f.dy["^lb^s eF(BDV1R͂Zj..H $ssϹc7%㬫8k$}^&Ve{iko;}t3d: k*O7ȕFcc-^})7 _BhG_A=}+ ۽L%83d7ү?]-B4=P5 5`=W;4F[pb]3ު"ْ}ff0YdUӽ4yбoiN : <_82rRӌCT#kc?f N.<ۓCpX3? g{YIH>Dlj7Ç'NF;y麮x\O醜{jY2BtE0F5d8odO -#Q<>rg\O=¡;?KR]rrq՞,`G!ggx<D=,OOۣj_iۯ~}S?Z:b|ҡSj \DxP&}+C$*J{*lT3'kb.lT%]٧5&[r=.B;ٝC^72Ļ"*cj;nGնpUX,y+ ҟkYbȺ\n ;p!lj1V>~3s0U{ȟySEm$|%' qvvL|Jcϓ ,. xwd;^SoLx˳[ot`bhcip%/eش.)D \Flm0f=v/X5xS; #Qm!7幞I)ӟ:r僮PWZd ;X: 1]/#@XC6za)MX&kVbt =R-b䁸`|0;1!JRrl GClGq#GTW iMHǁfγc=}ȳ &|>T krR{ bX!}rE9&%}?u"L"èATMw[#wnJZǘ*D 0^S< ju ݺWO]wAk3]ϗ`WbĹIRu#8@Ftrjz'=6uxtL5ͪϑV휬UgyGڡvy~t淎)RfsO>:&m.q}zUj셣G}xވ烸9-k$Aӱ#ua*)-é,̕s> 3ڣDzxۓ﷭˯ou}킩u$W*&GT=^MQQGRe W40a{7ҴO"Z?+"=II ;|Hxc;y9}={W!xV'(mѣgxi?i>hX<«&EΝOڣ~/kq%Q!S? ,z6L,*\mE;[4fv0QGI$8F_g(Vt.`'ĵZ,cw^: Kl@L-s mI\K`:U 9XPt9w$`{&J m݇wvbI8qV9~J3jcdq鈆q09 GA>4TJ`Fh'Hs е|c'zc!Sf!1ڼ51y ޴Dbj;CRV%"v#=-Oםl9O){U2R4ʜD1HCgߙk0Wb:3Ç&paWO눥ekuAFew`c%JBZ6WjLhyԇsKYM`Ŭ 9ObQC@@bPLTԆ gCr=LЬ.ZDu)#%Z,w[tx+)Pi+* ͹u("%9{h P"DgtzqWUy493Zof:OW+mvWF{^unp;wݻ?p!~%*\~N_&R3|"q}B՞caQ9 IDATr`i TR"2?pPS!i󀾸# Pɳ70{P5=\1DVhlzb&ī>W3 |H $DXe8Da`#!+a\XϩGm-cl\d,l`S G~_"~p0*TW3d9Td7sT7y\xhQ6ZK3tMU&:}M3SoIǶ!8+1؏f85󪱱b.2|Ly?+cO%il>)\9kA xnz*w SLA 4}ˮmu6~Ka+d'Gr$Z7vWGB>z;/G ;x-̌l5΁K钰58LtK8GYb_)9kZkXHF jz0nbPR26z'g}wBʢsp@'5~6wpy|5is? N#P>ڵBݷւ΄/#j3iTl:U*&ܲ9+<Xe> #EVD+8.xkw8D_y8cs8pǙNin]iW._n4'qa 7<+x\u yǯow}=|[8pݹwݿXȱ?{7q/US8)sEm7'J]dQ,PvSHBZzS.h~dZ?G@>@fCYM'aôL/,: 1G'e "Iԕ\-_צ e>^*OR3}'| s ;E'6Y3c٫AE`7G,AXS#EK5ؗX#!j䀒!bdA=is<џmWa9Or9a^j\c_I#ˢ$AbVb0Min&`^|l3vJ! '9^rM28ufdp \ߦ69cަи5*KK}7@8u-C44O~ E/jtRX>c&ԧbkFֻgj_n|ԩ -ƽP\a,Cof:$ljpx<Ա=|P~v-}`~ޓvsvO;g?iۯ'Ȝ<2uՋㅺjeMAX:nATҙ(87^\Yσ ŧQ*pEwI]m.NkϜիN4:u9sgN$ hSK߁̯NC^EKX7>!N8|vvvvέ#|?Sr?iq QhkXL&@33zkFFḇG9d/GXj^JsqJb*4egsSm9\$HAF  +~h&!Ci;x( R N֧BPCOY'>9EcxLBn FK9lsx&X_&/a}_s|rǞ}D!rH[0L@:q.2vgF(9+^lt ),1UsdH.`($@˵!xzs"A. ,E%z֔*8ȟZ%h ~ő&}^rH r?ax'DF6o2c<ΘmZ9 kX8)E}\]ovg$m#`*ĕ^mgq3Gkׯo~8F+xcWKat$^ʾ'qY\QW}'8Vu'e_)ٯ}OLEfhLm*T.gg1To:r]u* Eh@Lxѝbz&θqA草ngrQn׮]]'|Mb{*W&| <р < oð%% {KŜ_nyDA p# hZO ADKW;$9usncPQ(Q%$\8kzl{.e ,1ǃFI8.j>Ish5dՖ BxqTyΘJl:G;_ U$Az:`9櫖c9Z 3h吵TujL~ґ\lMf9)Z2UqzPs&W= O b{咛h:j"21NDA h_3}6="z0|̤,S'bS.#0YЛ/Te1B:1C*^{Y1%]<;)Wc~5u o\s}(x"۞4 iń Zk&O(&fkvk]]P @7{q縎y赧#_bR|wnIjPqu|@mCA?[y T[GP^W_}v~nwǰ/:^‰~WpPC8)7я61n:ZPOǎ]~#5< 8PYއH `#6> "F\Ke3iLde(U+'k.˵+ګW2x)8'8~Gu=DŽ5Q?ֿ*yslK2v_6cI[gwQC+6WnKPUc%'m ݲGӫGOҤƦ9 @rS=U=C,,3hS˨ɂ&_9\k|80Zмj陜1d0t*s9cTuKRK%:ks\Yvo<ǎ?1K{茭}/uyOO䌗1]ZIJCey/^g6K%wSOn] ~tԼ&SS[i3%jIJc$3'$t-< h sgJ;JC7f[&E9 I?4&7}8? dY4gp0 XHM%WɬpB"Jsp{Ҥ^k1+̓ ||vvׯ$_/U[_~L'l&Ǹ<D~->{]QgOFcDvB vDD`V{ Q!͐EKJ%΂|?raYfJ pO0J,ɓt%QB*+,@'υݍ'xSX@ѓol*7 ůd;0<ěMljqDwS(gsꋭکX#8(8a4 Ϯα 0MBcIAWg.|H8fFFEڜSe$W$MVt?c=U%K;IvLٽX)7FDKSs@D4dr٤4/ST' TI/+x@O\46&А&2QڇqdIfl ҖcPB-׾ يUM5s-QGyqNPmtgIz"f\,I7ۇ ˫ݯ ;8crWyylS\)%s4ޜ9k6Ym\o{ _KR%p߹XБT4/5f#Y[zMLnQpMSfޓ :̈)Ny-#Z-ڪ nIt+!}z"@l3>]0&<|{o_ "n.].$åOڟJ~~ p/@ 5Ğ~Q,l=bRW _yL4/Ukv4n>y?}B繩cpdYU`csDm_}QFRy(&xҶ- 9OgExe!O8J ^OwB{yɆg.QCE7E]: 8ZI uɡuбʱ8\\4dNac1*'OrG+S8RaL1z(5ib 4XRM׉'cXH\1c|+N[OvLb>0a.\9>JTdQM@ϝq f&(Ḏe ÿ@cCjco ,=6`a'A+9|((wP /Q PG3! #np'(6`t^@2 38{z(z/pPø;|̛}lC q<fT4U݌ОMhU)ݶ9pdgc?5S-C Cwr5Fs=C+ #{ݛ2rcg_Q0c3Cޘtv,:N #'+ȃ³2><> gΞo^ziwvMJ7}'O2d=c>~_I{D%pz7"!8Y9l|8c1p.bD{;;iT<<YZ2nwٽ Ė; &; D$V9̧s޺c, xN2iW.^ 8JUyҀS!./OXB曾;7|[!8.-aZvQLչ̅R4"P\s7di0fXaZT+54߂}8bq` Ox'.^޶/j?__+p|ye<|yq+1j&Y\ʫz;Ӑ%GxHnՍ#> ͏i'+_ԏcZnzzƑBHC`fY|SHEֳ?: 7>=CM_$.'.okϵ_Ow\\=s jCԘSH@#Ƭ^x6܉^ wYx̺.z]H.;YTu_(rtaGyt6XhMCQ܇[2:Atgc,{LJw]b9V:3B z_טRwL{цVXy2G obŕP1v\yM1`GJ\ AQhNNzq{ ljEcr+(*z*A!8{6n%^c: z^ÒבXKb`z-Gv5Y':c 8gsn hYOI82ж[qKqca} xvmOs'S4O+M-vI/'WC8wv.6>?䒯U2i'x8 ~$4DLHZ}PpHdL`dvaMFfip&ṱb`%"*3Cӻۿ|e⑾\{=+O#)^_xcћ8&}w@lxS{wyONJ܃cv <6ǘSÇFX`x0Q <3*}u'0F"`2_Tɗ9hRX/<Ӯ&^~%$AW!O4Nj ?sTtb+ۧ늈8G?`ݻ *>(I.הc ^>s& ʼnW^/>rXp6FK]"}х5>Zblf:S6r Λv7 y:TQ Cn_ob׺ޓ-)f(ifM5sA{q~Ghh]~3װk=E0D,a9vKp/OI{b_℞urH|!&mdFDQ0ݶs)X(ft y]>/gt"97=.d>Jbܖ/9;{Y7YU7+^P 7 ǵvPyc>:f9o>cWuu\erNK=u;}꘺S`?_7˜z.R)״_e0SV1 p‰t;ĸ`< T>[d#ךJ1y:/33Lymzȇ"X]ͮXu_Uc$-dz}y+C/iwOȼ.~*oGL0/Y_ogt3v :_WDxVj9e-@(̛L<,m}1l:L&{k=O"CW0oxgS- %t[Y 6񵃧ĕS勸;e\:r6|_p',dOlvm|%gg@}a{WE|_= ^$&N[*>O02ysI_PƽugS,\'*vS/_8UAzSU*U/NA&@쨯DqL~ZI;gxq]j`σ~}NIOdAK"WxFxqRg\3OKz>fmع8.iJNľ,W%={FnGU@9&ұ̎b:ʵ:VrʩVaGTyF=V (1r|`gnt<@N6ٍw=_ׂiqૻJӸ9䷾὏{WqJpa۪>#ᮞEqʄ><0uNgge:Nk(ǧBuO%w<3E*/?q0Qr+'47C=Әgz刁1Q7D L#&sQ| K:㚏&R]`?Ђʷ/>}4.2qnGm[l,cFX}2%Éj,YcI&TG2Gb#|fR6X3ꚪI։Py0|a}lcکAmKG՜A{^R7whSyUuYKԙf;ms:>eNqs~e[w@)yƼLeNBnΣbI1y_6hN9Sa&;B|Z5e0jdpE"c`e7u\7ٸ[Sqϼr ՖRZe_xhN`+U&iߠĶyL?o|O4;.N6s$ug/G?O~[~'vqb)>vvtb7M+A8l<'CX}q7rJ;_bXP?N<1?n_wgM|%t=@y> ]5tt_ ZW9'46Ա|bDzQO L +ڭڹSpb8^P8?k,'x ߼~_wSp <5>~y ~̫vq" F. .V)|U{y9/xEķʿwV>!Xgd֜yѓӨzYQT׌=R33[`/7<؎0>*˱R[ON#_0"Ht/萻;c8p Ĺu !/8E.ttPIlg/N/.:tEOpl%tPAJ`L6Kv $bN5#OmeR&;,I $2hb8xy$,;~͎専c"ܖkO>4=1oL\mտCm_i1SǦ2/ir ̇u߈`* `[鰭\s?s'1=B'E4|Vpn4&)&p ~¬l\dMb5xIʇ0~75&?uB;s'u\kicX'xEl?>h7nh<=\|Yx5[Wy\J6]=| lWtxcf>㭷~ ~ p̓ET myZ!A;q5HYq 9ԨSvAՉ>@p d3ϫzN'>nS<y2 NqI|e⴮j;û*=y'*~򓟶^z X0 KVtI%M"yI >̑^{U'<`F‚rmi{$N@Y19p]=KPe*TW.p! X]*]Y6lkĉ486x̧C@PgoH}R~=”xaO]䩜HH4'fi9MXz"X_c\փF!KNz44B+'^>O4g{^wgW*W:PߧKWlj̃2en `^ Zs9j yvk5btwva,:-^>]1^=OMkT圢3*=fH Rq*}?#PB7n8v,e>NQMK*8 z{emRKb U” 0Lˍ* jӀ~և!BB@[(zg_7Ѹ)2$?_X7"%W'Ξg/Y(^n ɺ=:e T*(Df5ƮFYߔI'MM!\c.O|r9  ℍȾ9 #9؃mDO*YI~] ,Y>nq7Y#~݁?WguED\r> 8SΝ;npyҀߍ9\dބCgLnzVW.iqcu3B;[_xY֐oT&l\*'Ŏ "kM'&5|=S?˳?qgf.W1|pzAIRv.UCs^1Ӹ3!S7:?ҧgM9:Ȑ3s.>+qm&m>6{36t%|7~W9N̠%f˄_,•<9IQSx3DɗAp!hPjm d1ӣk`- 6<$WzL 0 $$UT.bE NyVٜica1G2}J*h6m_TLmŦo8c̘i+:sJ"Fх| G'σI6W[+}xuLqr~>BdYܛ7oޝ?p?H~o`|@GN^:G.$K?«>6|U'C^~vk]'lс hݿ);VO,N~P7s9pqEM`뜐 .<&GI/sbÏX|@kM;/naJ(co'yKqq3m9޼M} D;6{w&39:ᄚO0Hqum$esC nL]7i&]Q̺ ]߿Iq̹$cxLPizsbfML-_R`$54d$Ot:C_'I 2GI<4+p)kŕ\Y2_}im>7Up/ b-]"L@h ;m󶠛x%$7㿊^=eoIܦվ+U-|ѽï8i~eW,Wy$ޗAh-O]wPOh;_DcZ^4# wn䓏uXǷ:X:y-|P_/HLZx`fʺd]I0.h`X&S ?'0vw983|e_d@4p9q%C!.ⱏ> a$/+I O_*]w=sylx=q'pYYiր{x>  jwAhWpҀ\'x8jf{Pgu ~M_o[#/dqo ͵GWV&DCto!DRƃXC%PQՉe&̛>l‰򆎼oIn X'.Np\`Lg ^y}'vpH~OW3LE>G4Ƽ'yq[ޣC׫XՇΩh0P7i1¥ͼi3qGRx8C%a LJ}qMou%"jD͟l;x)}0!DX0loc]<|; uC$kB@VOh2=A_%yu ^F]$<6m1R'Jl,:n \M`whUiÂ&>@M.$(o{8^s醃m ʥƎ,6IK ;J!tۇ_;ئG0ۘq;8w@}kgb1Tyy'+I:Ÿy;0_uyE_b.VqVrYm1l)/'}G(`b5`Rm8Wo8@{vp?&*.k`QŁ3  1yܙמsA8!r&n"㞖j%J%EE&D*RDZJijHyXJٿ3ZXo>38% sLu"bTNmact `4@釻_!_!v bˋR1F.Fy ~ތwS|1[$Cw#j0/29߲;#^fCT}IDnѐ eu=ՔuӺLbovlj u$EbkRl- C%=v i|lm~u'tgm7'͉y9 Qn w91JC3U%xTcpWm'EwNYVm0,WO%Gy4}섅dK׹=^Z@vq젅ܝk U"ݰ,zV'ڏzWᲙԇe?q{g`OJBv3kow>jD%ېɾ4Ov>fڏ{./ZcO%?GTgp.i{ \t{qǪ}83X|^:nk.6oG񑉉/OoY ~]CXhxBCcWuoa E6=. 8.1Аո/`K=\c2f,Q*V1Wn8SMXɝG`eL5vk`gdB$ A15ιɜCf3odKm<4"FfLZ(CE:iHyccW9 _`j F)S5xe si85>TG6p/lЗIRj8 9"G^NvS/5s #\Cb,RGyml?mFb exPkhW,^\#]'`m&8f9Y[3)Q$KŦ^-S?zE!*N%mZ-g?ŵdUh)s'^BCz+#rrfREBFG1Q\4{PH/CsHJa_jYkvo0P2{NFn` C`>qYU>&#'>곹\;u{ЯW)] sJ"—.vAUv{q%rt0ǥ.V+]/G4ʇJp PIkSݜ s#"7qOdeTՒaWtW[E7džc>eTk n%Uau1h(GM qK^ %2n[褫s[8& #5Ǯp  o}^,8YIP[^p/O{<|3x- ?Ϗ'5O<0 ɮW{z3"G3@ R$It'_KΉa>NCaE,&{.vZ `. d()znLL.,a} L3jEA> 8VȉL;# rV<&3'¿vJ&WU#뱍$.ԙN>vz`}1G2vZ66xD6U0Ovcu%;%0|5H WJTee3l'qa¢=}a/Î&?HӼȼGʪiY^;:sA/HRI‡Wd`Qia+[BxVRf,arEi>(#8>;|m*P G ڭ0pہb)e@$?m*hcm6JR͆N#m(ܯ9\ ` W&wt~=RFy]^.,"6cKhlqiaC u .T䉞;a Υ]{܍uՎ!cbhK fYxȻlT-('vǑ2r朔/[x'[%g,;?O^u"xZȌw4 7;Cun{u݀ڔdkAr^[3;j vbICp}D;'vcCq?0)N>/4pܪ3{8>txxSp87|9LШ'z&Xo> k t5dkQj*>ܣat4F:J:i Lw⊥^&: J轘C2y]@8n/`A[Zq (x/0+8 Ҩ՟Pj# jӸsXP>lA\`*(z r(LJ2(ȏE>js-7&v.Dۘ%1+/pmԤX .6v-@ݙC:2hoUc0GUs*'|3PdY;-?p.̎0F#a;O从F JY% Cb.dڐK1ingsm 8Wqm̴]*Ӹ\+LV /l G9Ja"`_85W:LY?ro: rz6U v,;'BnnW9g^jeiɽCĦL2.T.]{9?c_ q7b!$R##5ore_ն5|NP[&!]q9VI^޻C".{c;-)Ղ{ώ@VhuO0$Blڗ x?qH#)\ZG c 1p/\&rs0w1xZw5 Eȣco j86pv( qEcG[['i?WylÜLJr]*_^sӾ>:&Wcqޓd,B{ (=͛wL _@8GEq&[gV.4FbX sM!- zj 8 ;>AˁWceEV }&חK@(Ay^*E&0TNNstjęp__N0+X7s*.3$/=>Gㅌ9@(Qy2Vm#b.UTKcyh|~@(%r]]'3tQƄYg\j$s'yȏfYY: SZNR.oG<>A 3=&pXIJQ1Vp~j۾>"=]Ξ_ q=U}(jەs40z,=tRJۮm7el-\lZdu2I>\U/B 9ɼ yI V:I`c:]T#o"(?χԼԮ8E>eV9x#PS0}d@7!Ru߆rEuKizlۇ}Լ;qف#8ւJ|,W?Om-ϱPZhV1hkGS˫Jk""dH= htJ8g;wA^_R5DwBse>C_C ws+nJ8#ǟ|2M]9V!R.py= ZܗN7a|p7|% =Q_K~߈|t%O<8%Vޒ*ʣASc@5&0Fje46 m(_V{Kh8-H̩\ ]lOZ HZ)z7g!q )%$M`e⩵q\*<ܤCw <#.)(^~EGU$)Qbf+g!r+nEM"kXc5?\(NԼFAvD +_E.ܜt._6Q'X#!~^yjc:j`mS=ۗsB,󷼕+3>bMbSi*.1i/7pMatYg\p}p s`PkRJesF#'MM"̠"y5;л/DϲIB9Ws2Gr.ސ;Hv.6FQУ h4gܟ{=2E|!\mc|o.ce YRϣͦSKݱ䋶 pU*~v&ݼvkF A7U2cg+^yd۩͆XeD-KQy9^U<_.cCÞIǦOOׯߘn޼{883 ;wx5:iKi9@EJr+1֓7uP} 6y&~*VH>34'_Qæ!8; H&IVĊتhcs sq͸#pjLNfpxƋJ _i@a"[nE}NOwDO͋AMa5ZQU'I=xG}Xx0nwdt˙=d< ͋51ʇm/0J*h`]g 2i#jĤ,W[-Qn}cЩL0'cgC IDATayD>" Qor x(07bc.uFا}I{I`,TbաsmA |%< sI K\]:U 38Bu42P`n|_'ƒe|˲4`i6kr3L*I# pl֘NsPyn4gMX*;vlϯhþ0v}@c\k^z{AU5캮mB5ej~ uM:kԖ7Wz>^8sJ#Tgݗuю}l`7םqv=s!V٘TGVR[ ܐ$ Ѐ)!+R gz^=rݩ#g-ޣ'6%]Tg/K-oXnl~#a5|y3f82ܧGʲph׳9UNbm6p_cuMO(5c8K W3ʢrffm^M+AsXX\FmZ< ,b@c5V9Ub(N_:ץr/=.;Sن~`Pp8am/Trq@90ʏ&9EX;e>b?`e9)~6rECeυ i/Yq~)!wx]epcNTBXT:~#^N~N==tޕQ= 3(28P;핢ûؕ3Xi~1uw|$cpq9\Q.fS9>2 :={1 P?ıt8}j%O?T?T!7Xr,"8Np6($aJ!`JBBb!;'jϗv'_^A!(ͺ|*VD`жltǁ1uv} 0O eX]{,iWBIa 3 oJ;ڄ21 󠂩^0QDخu6z9plg$?sDim&8QAW:鸖IJ2t؃Ǻy]c4ֺʁ^MʍC[0gR |V80b׀n [UԕǞGӶ2lv C1`NC{C}5\mu/ *yhzDgӗZ;.kݖcv<13H$?no4Tvk~YkMEhƲDK1Z-!;V;?sӁzטcqlOÅ*l|gRGH;"f`#\˿vrQP+8>ߌڧW-˝ |1<؟F,4< Mca)_M߻ǏPs<{*2u}QǴl\_ |ٟcTrzǫOyE0.8KWuOA0٬[s!wg1k~hwA =_3ʤE[Yǁq< 5b@8gE.@洔ӱzs>N?a9g"u/"XuK8;!SKؗM 7&_קo}q]H]q3fS^5|/&8A%L"~I_\hRP)KOF_ݴ!mD+y:cDCj+BӹPNQ =xQ dvzNG;%7cmF&Z E!Nr p_?&ɼd(>rW^Ϋ,,K+[{.F\d Sn Aq4Trï{7`e\|^ﱒڏUsːݺ,+uK-Pbs5Ǧ<n*d izv92$Lq=c"| ]!jS6a-|Jʢ&J!YιvԘ8],S3QՁknd+nʕ5 qSBy+Nlajͺmq_|F _FA! _ns˖%_FrpzN@vTC&՜]r_fW_ZOj4Ϳ0k_hE+MTKoɁ]7}+rduw@6` |ze^ F%M8y\@ϪcAæ/q٫o$0qGtNQ33cGnx>6q)$g5pI\y1H^&B>}8 E\&qik!nbqq!ݼi~q q#K?g/ GkL0ML}o) % %8XEx p敋өX-:yX}aP`N`8 q- %8r K vO/|X!z}: \jVNsdg{?Vbٓ-rR_Y7m"fƊ ic1FƮvsN!^s!*j]CD>nSӮeX`j Aʥ}vQ<㗓1SFnjXsiZmi/}-}]>L57Tu#AW1o#!Ӳ Pv!_ƈrԵ6hBk.K!SnD] >ܹ0gC.忑r2nU,xVho=FL'VmktqNкs/h''uw]w ĶlbjhMm=O;>COx^.&<кcrU}*nvʈ/((Şq0{\1ũ6yK56P Z2wyx,/=q;wߟ~7~C|^6qrQ~Bӑ7㐵~$W#Ɵ2S]ϲ+oe-Y`% H.]:b_μVngċq I., :'7~&,:pA/UV{=0QL>JOrO͸ލGG3O, v0r.ˇ~8'?nD^l i|MqӨ30'IflvÄZ;悆-81OM䣽w|9ȉ(Gtp@d%Ҏ˼ c:%"_YhVddg.].jm XYrc -gb ~@s(Bhe*ildYrRpV*W:uBOOybֈF`4XOIrKqw2+ŨX!alvw~;0KW_[ \NbPxmu8h 8>*갰C60QawsXc;iM ūFwec9A}6n׺c9sוKo5ߑFem9VM~~Z;>@A6 ԖP2J Ike=.?g|l X\ȹq]E )@3 C0& P07?ӜN]Q$F:8Q%aܗ'>vc\@x||j\X40,&d72\H}~7M~|gт/B?s7}o]"AzܖkY eq%+oLgX!RVtL)X+=sA( (#sYgWpJ1j68\ F0M)/D=:3]|IE`Hg(l^<A5_y.%,:P gM?uM[oG\w2c(dD^M)/N?N;n~ UX3Ǝl~[3f&_ +"FLB TڥҾQkR1|- |EKbgwc~.x S| P{n8qOofL\,0ĪLp͊cƍ5Xۿ/b2㔙70$|oElƣѰ9;>􆎸(Cb.$gXJޖbxGcK۾r ʱˏ#sm0뎁}Kt[Lev[CUI4/,c%Ws& M;bCfJy#V"%\.ܷ @ww90*[GƬk4 rpqոZ*"ir Qynsc3?Цl{y_4x2s[q g|KT_تnr'ZS*Wͽ:1AF!- 5]EgxjO\Bh }U bt˔{O{C'UlsH{g߭c5]b뉅Lq܎ρR9u=zZzYU %d7r͎&g8ձꅸ  I?gCpAz .?? pOg31܉5܎)׾>ݸ3WߪPu?{:P/?9)&1`< wO4a2\qqw}wz[7x‚Λŀ(Β`Y3`.w7gM7ө(7}SX0ܧWoqԹ=촖*0jGɑly,Ð6c%A2=P1v!RЎw$GsAe㣝Ysxy{>=ghJGaJ:0elU&GiX5W|6/|XIq L~e$qSH=JqRX'sC(E |̘M:(6n1sr*?mͻ3;۩=n[Za8vG0.~ߠ4(1lv ?@͚8l,C"gN9 Kl2jq:c]tfk7ڽ_R|ݾ/V|÷Jcb˖*08v=>6;mwꈸ2#5Xv!sv-zҕ`zY0ݮZCՊJ5*N'zbwp6n#0%hz4Vn|DRLRC+k6ik 9BBʍ+=fÐ.z:-IcRB<&(L^Rf>5M\(0Z1_pIz3mò1\y@j5pRy_8_J圓5'ͳW 9~lٱeX ;K9]-B=XbڗHHYFn1M:7®=+yymOqZev*6͝GjN)PS9p"\5n-+0-;˱mI qz(ˮYE@ w ֱGhsW^GDݛ.]xez5q(|.~+~45w/(.gsN v?ϧ˿,FpGGqFûz" ,2>ܷa,84nō[ӵw.Mo ae^ vsFCͰ|ŋGOpK'8Db(Ȣ3h"C $gஜ$ƒRVrTyJ>uMg];|rQG)ȟp @xo~Z,K>K%Xa gEå+Hyq L4 |~cxL #GncP^Qg3x*9xH2O1kx/p-en)bCucA"jۯ ;rUTQ1~" Oq\}vF㣎WzT>pٛnM%5%T_8veOҎ:&rIaBv4P[F,P\[eu?cѶ,e/bq0sn@Ezu>?2=^*\уxuL׫RώwZ=gl{so}3.L/C00(u̞ BCL&t/)" #&$ ;e:kLgCxuzqSwOw\.ƂY`Ay@u3X9=P0Ot`9;G}v=[ɩ)01-Y gcuVF y;gL<~T+DhϧNbǺuWoO^};TuGe3=c7T. Kͅ}yr$ø 6u5O2D?yRj`}/r;9nFQ6S'q-3:|l+ɠ3ʖxkT[ 0M;JahA pf{,>&]·+Krf(Ut.N, ޴ypIfH|ȵ3hTˣ0tN eS3ށֵ|YD[p6ڱXCxS49wHvR\EZ}6mft4: c븥aafj$R8%|6G &K Im߫G#aO\Ψr#Pz u'E]!k]Rd,U-ڒchah);ot:ќ  wx:W_~ٝ8 ᇺwXDxqp|_3Qn843qzNCuo,~^q%rG߇g1pBvxqqf ݋GS_|_O.By0<I >5p3": <GCvC'Zsp`(rxOo~>=GW,VJn 9pƁ:f>^ !ЅR+G\kOǵ3c5nA|l9n7TGpGG|6|xzt{q=q6g\:v*0cD PTuBZysLwr4-)u[**) U9HTU-7 PA'= |Us-{g`ԊZrɃ}+l'#G]j~p=g3OS殞yh nkǹ)1#$۔R+M;ښaڇ>|Zي ievΫc6ASYic/dhA<(g]ǃ3z?[ԤFLJw(-` KџHX]o ,U*=X>+7 ~aK׼ (uD=?R=}v[qS='DkB2|Go Fi>C_~9:*9iq"~r4zQGa"9ݏv;J;¿l_*C(C50pK6lG>T6Gj}>#KQ%1OVp6.vx)3$]8pƋ'>~pw:{!ptgxr 鉊 D\t|n;~/|͟q8aaWq( ,0pA8ÁE8⓸͸'õ[w'a x&.a}%B9:5Ռ8'u5u3T䖶q\w!BCܣ!:/ZȁBCt>mu33F-pDϞ=k`O;Ï! _QwcH)OFhEcF։3ڙ!Bud9LlA&KСF1FًGu = KQ෍fcl! %+Yx`Zل%ºMNi$'9 lʒA,>k@*neSŦL3Nj[tAvnVmAG4I, =D9Yv*ls }N[sώ[ bUmߑa4 1[>d[<̴5l 6}bch]ac8oN* _U qØX< ,8:d cn;ommyT ?:sڷٟä.[:ۢ<:GZNIJk&@*Gٷ|nl[7Nzfȣ6kPeZާCr&3YF!2mv~ J}3 Hl2u9:[؟*p6rk7q-?=+t3ͺߓMr#0e7 3"wj6*)C6]HB#6/kngguyYDҠ鿛n419#<0dz`3+q;Xlܧy8?jyᐋxTdبp\˽ď\53rtg3|OOL߸==3Ͼӹoğ~\ϑPW44FP^xq3Hz?cŋg40NDq[ ZduO3ⴃX(X 8Hu.s_<$Xlx^ ̓eэ&ƥL'($7-^TVm)䇞dAB1a< 䣸\x>iKܹ}Sc |.o+ݫBLIv "-7ۮlIWvaZ:\¶alAm+G4 hjؼH-H&!¥XPcX[F t'8r5Z2"W߃ (Ьt^ԘTy,9!nat)@E5.Mvhc̫'Bl;'Ӫ57UyזWnnf>?C0*s9mĀB&um_ꐙq⽏}\iwXs, 'AMq?:TJ̶rd=j m3l:ڶ[be j9R?Wz)k ;CaAI1C=׮՟&PڮS]S^c2hh`;e?Wis:l+V[.~'n:WZ窭f叼.[]ҭvڳ*!gP]h` q1.ې#&]hIn.u t8jkcP4pS"+iCٰLRɡh~C-3R>zx_C;9&T7 Tqq:wugA0=wzǪgvOOǏL{5~ֱjwrNu8?IƏ`Y w܎b!h,nqPEwtX\xηub@NdOUK3cI" nټР_5x$ r@8oPO^PSňx_&b Q"&(htL&3ƂBu#:) ժј'C8 F'?x}ӭ/Lo^n3c̒reL.x鬎]B#tqCRx[ ;l/IxDLM 45?{ #\8IFm;v?pn,qXOc#lt:O < yMձq&4 pO,z4tg#&M¸ڶfX%qC1iGj.GasiW.yq G;a1+G|zкlćeR屨3rp޴ Flz`GU}9y-@z(&`7j LҹAg`/UNB ]޵X@v{ mt;q[EIބe1f&q yu]ILy%c1g5f9Yg̺>ʾKho{N;.WPLkNT=Ӛ(+dmcڬ\86+hA)޵Wz)=׹¨M4uZynDQ>+ڤsJg@9 eh٪[ȝ PlgCr _Owvȭ&6Rn7Fe2-lB,Tt\gDZ2_<=Ks)í_Ǡ-"'nPmtObaIqnJ#,㦏<]8XdӣצqMK".`yLXe挋 yHK|e{u3H _M(Z$3 ɄSnwą 9WE%?p-Y,(<~\oƎ/>*cM0gt;z$T-kY \5A~mt~r':]%rn{냼sKfQ1vF1&}ƍ!.NXpubd3<0oQ71C蹙rS[sEL-WjC8ciWIX~&]2NΣuԑ_%Xbêڌ87^h:מydϬs\VΦ١ͫ6Di;e铫XT -UKQzrOg!4ǨCf0-#1y("o$t@#d{TC~@%KKJ&QnrŮkC1 vpme3YhxxAa 3mv3QcOR':u/fhKD_S ,EmeAS} ci辊<\D9)z,}'8d|l:U #õYygLok*[I.`: +6ydpq-ANZyCGG?WEڣjaֹfyH 'I~8Nj&p)ü !Pd]p0+gzئNqcP} i!z߫}$X$g'qb<)_/gg>Q_|2=9?=yq<=w2}qMt949V^ yAcEY OTsfӸAܟxeܓ1\[wM?̢ĩjyOw뒽Omcԋ!#Qxi.M`9-psI!9G>!`ĭSrMGA\g|88{[$(k]PihkP_(R; ¹rx(mj:v'lQ+t$hhvt /Y/ 11bT E IDATJٖВ";2;?!F )]<>ynЛOl̝beHA\MN2U2C~,;-+cq/…yochp]c<ԖWӭbGq {nw>wk}poz7ǯ==cߜnݾO6kӫ+/!x!O9YXxďq6GqF͛7bl",q'ܾ"N_E׾o3+FG=cޡH{B+9N-s;U ~c{$T\ʦpj ݘ5(YruOˀJ΅ ˱jte=r \wdǥ1v(Ths辱odv113m,x嵯O_74/1x= >㸜L:y>ݼtӥ bt8~YOaɕOB|g0&ܿcX`g0ܺǴq<$_gXYg/\|*m<Ƽj^a5u:}&Ee& ץ3h! tq HbXIR_(9^1qs yӃ_4Vbq{"2]|%7g3>wj}lܜ1.y: ƌ!SOƢ׼pm˃$">Gv<:Vq;7c' JLQg^@C/oQwle"<CW|9V} C Ldm0`:'v%7;&^ƄQ /Ei1GX}BdrՠZl~swp*9.]92+sFmP5fimuf=F S^ќ^, ]kN\۶QqVz7c[]N8>]vem&u0Vlc ut\Ri]I;C~EJf \]v8s:YFJѼ0_/50;/Re~u4 ƎUk#&͚,AlۄXvPq1,ݡ֝mw{̮ׯ5_9Aءðv_ğ=S\Nz DsԎ#[^|IOwف5PE/xӉ(|͜}eU\xqQ}lXxNΡsj'`|(!>;#죃3[^V٠O Ne{ӧoMwƱ^YAþx뱦oLǧcx\J,b?|ptbh%K;53ѣ!dWk>ǰzݮ2B:+۞Z;tPj;Hx.%Xo3c{A Gޔ1S?&DaZ/[(/\dntSDPűkկx#{b>`GwLnӬvfMJ3U&O"*z Pu/:zض.r32Ŷlc'c {װJ7澬X:tdq [_-J<.Ҡ`jf0NeȜCE1G[g~X^zmztշO }/cg,8(?qz1ŽǏg> y?gi|??PyD4`B="^y7Wc|\ޯ'B#o#YMnϪ w$/dZ_ 2WMI%6tGv(,㢝+k㙥Up-<A,681R IJ| c`BXQcPgEx\/NT'Hnc-?9e<.NvjHl"FZU*P.Gp6kq=Fv բ$6*N5/`M8OG\6ev)w7Q; GIW)H bvb(D|Oޖ+sϚMITvfNSXw/&IlRֹƥHz_+=U߁U |krj)z4I3wЊ4 ޮ4EecԮ0ƭNҮt%}y~FeZ:Ig}7m_{:ȷaFr)=8 ;E]__wkGu}p)r̖ 3)y\!Ga;:;'WclH1.! |3|4ʕnsXv3ꂪ7@ozlGߍmk㕮sy\"\;ڰnjw+Ne٩;g-ܜfzNU;E4&bT6OLߙ^{2Mq䐉" \6V(% 戁6#,8'\u?01j ƅB_~)KimF#@mSMnYבgE+F$c.Zcӊ yI;w-=#2/l̅o K$HN5h'tJEZ h  B<, 蚷/6\ۙigf73֊}wk1Zv#blySGeQƃ Z\Ux~PZ{6PxOGYoά?-fpjpyc:3*Sw5\n"i}!l9^*$Tֶ0u U}%$7+j :)I)RN(ًk'Sy y-t U>CVֺ::LgɃ}3 /' n7jS-b RQsI< ~s50q.Vu@ &iB } YγzmHK'e6 s"ᱧ'394^Ibo@<6?3:h"Ixa?ώ=}^m͞ÁuZ!.՝*wHب60.c }^".Q^\g/mˊ} xB^5b)>7/^'o_ᏻ~; ^DXNs}ZBhXUeyƙ $_O6kifWO;2wHpѲhpYB7o'/o/o?]/4fȑw1(ӻ qSA&.p5z|E0N+W=FFE6w?)#.dA[x]iۭ #>p@`~d&; ^W6<DҊߢA\jNڑd/,kyS)8OZr/k1n c\{n'=}HZ֋K$();YZN(lֺ:yxMq>Q ((=`31#O}h?WHtW$-j꿝3(\~9ڷ(ΘK?d`X57 z5I(>Ո1Kyc~ D9;%`[(TL!kwjV1KfšQkgTnz<FJ("[fIt5vU^;:}ZO6jZG-Z#ޏxM"S;!y(`Q|?*7:y'Đ̱/wdO=vz۵ny<9eWx_5ϖqkD&qg>Jb =uǩ%K&wN.JȒumT|G v`&mwl*s J A/oTa*a\< /qc/M|Rg`މ/G+n7Qr9W?x|<>[1ZS&"HcY唟| ~7/2AH_QßE5ԣWB' S_)ц_ϗo q;}¯U6݁G2^Hp|fn3~>P56/`Ϋ\W|X#&ԍ"B Rhˣp1 Ubyт,hfQ;9*ry/n;Srxĝ"} <>7t!ɠ 2efO >9!R"qM\D6"2O۬80} I༖3΃7:(tGy/>֬=j==gG{ c[RI GmVK3qN~Y1]*&x:]XC A2 {]II<~+יI d1SS#['z,l8GקUp^]> ¨H ,}0f#. XJW*zq/eG^`Vb| D@fYLhOfyqOMb6|  ~ŗ3K+-^-_Y̿ܠwǫEU@gOPm5t ֖vr{iEV/6q8|q*_v|͑OF'ЈJr6A4z1p0!{-"G@IAL/jU^G-*l6+c`؊3 ]can ^Ռ|_zm١ IDATEP],}qa7 | `U s뫍 )j\1'OP馋k*D}ȩ3.ʱ*q"k O[k8A>]ҵ確90E7Qq\/UJ35|׎FXXp}kXUn]pj^U8g{lEqJ*`_ \!n&UoS+`^zQ3 \aW~|UO N !YqfcLLuf~/Bz9GR\W]=ѫU[~_kDs3cix !?`bc M17iki*^ gބHd3Tjq*7j<9@Aİ ._Ig~#p<=qAb]UUj=FKv<{L:<w8:rpA5.{:F:&nֶ㤳O7Wmc:u~ip'J'Mp4Jy\.+Z"x/|lř%cl!k&.hImk7=i }D a|q8?uC*W3B`a'y2pRspk>5ibM!/.ɥ;^͵ AflOPͯ\^Qƴv|.=uZy_=:Vkɨw Kw94OP1z΅Jz sб,=x5Eh%o-^JFoTFN(sŻїb~ƌ檞XrZgjxrNZU?zr!}sKcZޕc#Hu,ɍcs$0&k_}(p{=NaJzpz_;8 h"@;JQI/Rz"`>ϐXLť"&N^Ϻ'#.nLx|HbN:,"vQP* 2,{/B*TI_'3 +Af5¿5QXPC {Gй sZ ~Yͭזz}}F/zZD5]$(tPR}8d1{2Z~PӐMKc= ʅ /x   _dm楡>>kaPd)wF#v ,~TKK }RuSBsʇůz |qQ+~_l+X=z/sJlVvqI_ !.So#+ASbQ~D/w[rI+ˋЃ0/G7o\ R5y^Kͳz"YX''p+pMVadOyP>axqr^¼\GESw4\M\y]h3]ٸy(Ok5Ps _yY;pԖssg:ydO7W w/Tڼ9z5qͫKpoW ϧGm3G9 ##ν}:a+ JQ2!oCǨ|gk͂1p.kHjgpxuIe2z9F]!!5ܦı#Ȏ{^mgATL2 {X"!selu{<Űǚ0{v gصlh'9sF/l|]cb58h "N(̎'UxbHb,I߬z̼%{/<[9 U]wʢ]fydrçSw"gwb?|B;?k)ģTfճhc "{:vn#Y `h@;$0rF?Wub=/#%ă<2Bj<7:X`ʘc^ u˄[& s5~V\w]3<`ɗD;tϬ J lv%5\+jͽ 0yzy%)9xN$WγlV$gkR>aZɩ x免̞'[ݗ)&jb"AD!s-?:?o+ ;Kş.J;!|߾ʯ eޭqqnC5+Jk^}9 .u@_[NHyq(]3j"ews]EqX-zЅj&ݩ_ߌZo_|>]ŵf-6f٫0wD7^օKQGXHG{h^"]7Q.ޮgr0`H躠9bVTSstszAAD1 8\7'E hO^cBk7DͭQa%}ӱV!/R,=rh}F]ι?ojnF(&kNMŽmt^ǂFXdn[zgO3A5uRWk,eQX%"aה,j-HkAvgchŵX KZprh-E2ta<l ×%cgٴ賥?ugϻF& ~ S壴4f~,CBVCv3"MZ}&UXKuoƟYIh :s;@r\PMJj(dJ-8Y78 &b%+.Tr6\=Ha|ڏ4zI2Svw}Kƣp;$pBųUNkg]TM[sܪ?QE1!- 횡8!tX=5^*dZzOzVٴu.ڪ~8^!bz+Q2*xH?3Ekb6)cѯ6Η.@"!.tAT_@J?_/y%rnԲꉖo1rN$=~ŝ;,lPî'zH`Τ͓G#~^&B%ǨMU'gnx$@%^r}f_Γ8$7 mڵ_iy6|HJ@ tXe,R:X6D1&ŵe۶P=鵠r̯G'ZǓVI@V)ǕQf2xTň;aWL F#GF43Y"\dX/}_]%nj?F&F9լ[={>rK8^@%~8_)ABZW[70ڑq۰,ir؎̂19Ӗ 8%\sÑ׋p5BsgPIеp: U.ϧk%kus gPUۂu[6o"w p@rʶyF8G=ߓ=_nw(~ nVK\cAjf%ܕFB^ByJȨI1P+qNMٹrH,ڒv|hsu$lqwfv"l}Iƕ<V/ξzGމtޙNvA5pVjSJEN'xVQg7%"kMu{˒Uu>S o`JtG#ܱ.9{*ἪaQNNz5  "ҘSVfcya5ִ( Ŧ0xba~9Y { =FGdx׾rMn|]› U']?P#1Ib#ɣ-ﴨdrI2$S.k(A9 a|ON)]bGlnq07pc9]ފO# a{ΑN=8Zi`lM[)!ױ]ïs/_ SMO<y"±>= vE# zzPG`[a!K6 GO ρɕ֚’[} H.R)rr`Zrz6Lu sw4RL̩$|KmڧGRe2Pg+>׌9齣DvKճ>&*4!c6M9E+n1s'lS6;{Oӧ63^Z Q`XZlL]s.3>9ónw8.V'QN RDbU`yfHIB93|QȞC.؞+nwu:9]*QLbN뒜3y FX֑hË/޾F=Nmaup/"~V_z:FpӣI#qR اJ {Qcdj35 lhpy3j,歟$QwoƙI}> jNͺbN,|h=F|ԱKf {^."pRWAJLaX+wؚ.I{"? ws &WmTщe<X2s=!.aZP0HY8X!Hۜ.x;`JFw7ryGgn zʼn88.vr|r{lϰ;~c.ܭ9SnձGqp[b_[r103o錞+#rȥV.?%OqxuLR<]ՁC^KX#yf_I1/]qjn 5J^ޯ|R/QwqB2=<ɖA|-|f،9Lj hs\ = XNi)qHo2JT@ ͔ij>=r{M8/3<ׂ}#A::[zH9kѧG0IcXTtŸcG7 :ys%R)y:GDhR[>ވ9*6l+m1KO z7pI')_2=KQ:i\&IoW&Á0B>KDvT{|tɔ8d>E[ p DҋF\Ht[j.1ةUB oրś06r7eT(N=\ \ՈJRvw=b$2 CP΢f#" yug\=rI1l ZQ(}Gú ¨`>,_׆+6rqrpE?p,Lj>*U9JS[\b[M/r":jXFd+{Z(I]/Ŋ5eXչNl;ΗtN6ٛQRB8 ]"ؐD`çr"|-K!ط,zycN-pp2Fm#W2ؒT=Q}H<6Xmax2Տ=(P@wIǕ9ƚD1$AnHj1m<p b%;/vS(DNJvz5do9DWz4]&+ û/҃u%wg&wG@j _Laʥd!ZZ8Hr(d~~p'9|k[xIPAO0Ks 'd3mֲ#R!0kd-Jn#WDi=9[r/_sX'AȨ^5 ^h@/鹻?1µڂaxn-9Woh#;]Nxe*.,p(H &MO#6)͔I͉H,1> S33z ߾÷vЇ>tٟo.Rt}v炦7G~yQzNE% / I^;;ϯvLA>=ԟ'$#. K0|/ 㣶b+- 8$8(\;|_<#vb n!?&~/W˟ɟ\-NjU}*4l9Ա.%9SR +W>G&/$9`L4ۈv 㞅IFQ;DFupH Ѽ,ޕSѺPք`fz-!zuF^?t)8b$3WA&垯1GbpiĠ^Q`Vv=p>tdx(hbwH5\#tSĜ/1+iGm=B,LTZI[u}B^x]"t t˼m>6ͼ]̃|( _9 b!MTN z` )AATOЪ)ζIu#984Dܸ2O*N{b)sT"Rv>=TUH樓Y@lwl|4`0Wꆉ) /m,fr6iu|UC^6/FTcq3 89.g\S񮒋5&~KfT4ÖlzQݏ-IzQ^G>rI49xu|ke_8n^{~\/+X>~*7_җ.p2?6?w =Vh;<$9_&uqרbʔQ7U :o)YZ3CțjEOHs bB5NKEl*1~c)ΚuvA9X B2,>7&vC]*~K. ǍydtL rmk wmLI:ő-0883ɺq*Xy ~U*uup*1CX ŏ}aY}.@?CG)-Q™O'DhdBSp{q)Zʸ)<Sb\gt؇'5v#ly6i"8\~^?DNF>WړQ%tiDzXgjd&֌V4)±j!AYɎ.Ϳt%) I"FiO'{ǒs;{]Nҭ՜вXkH7XA@^&|Nk1zB_ܰ씱8A1(Ǵ=Nzh.&32ͺ"^꫑NC{&9_61jz|[ޓt{\0=_<-_=]qx;\Ǡ#b##a3r p|Kn\;;w|ɧ.="G'"|hMg^۟Όbv:GH t0HErK2굅$A$N 4h`(嚍H~[@Blg4SCM6a4)F(qqמ'^˧z_mO@m4 W#qL<2 jf {t9ۄG~Ŧ^d|(ȏ獜G V7nx#lHPf^ɱmњ-H ?ӟR?"s1/p9#9ƻge9?F_=8Vƾ+l>2x?ܝ.Q[Fŭ*)N=˚Vʷj.ڿHd$S:,>s)[Xe {ٜxmd* L ibx/X:2{_JWɶ'7IxNwz^GͣۗD(*ŅWRRIB!Q|KOJ*zw[\[a~a^`R?[s{w]Վ9dIMy]wm\KԔye?e(W5M |+ 6x$u$1IwG︞wVdvqtYQW6ZY^+5{Zc^j2X8Ws. df )~zzŸ1Ct\4/q%TeaM P UviqSs%C."yIJM(ڊRZ -QGGP,KC elxBz4ê 8[Vi]\pIof~a!:/iNG~rzcJױ%[ʡW{V@y8^ `TБI'18Yj,܃MLZQ`ڢ8:g̴r)+J8U)jZyzܯkKZz7w&jTE84wҍ$WyPxKky e*>%>iN1esdUgz EDYvk>G٨nzPFCxa(R%F)c `08 Q8{• Ǖq@k9 i"Towz}11{rZrC?8t$9Z\(uy\q҉K"O8w d֐QXG$~r'u Mb{^aA.ÆG>t0=G1dIR}<''M',Ή_q MMoD@s`i$yq VgHEDžk1^ #0]0#HJ untA<Ԍ'IPz<+zU"ro=AW^Ӎ*~M쎑'Y=M?7 ٞ!V>JC9$~rRqڷul0JaōoQ[ˆW: rM:-jLi燞$0K ~Q A?D'{? iaP =vpsXK~A")"p̛TyUbBzs<UR͝l5*3p2 S{hsmy=ݕ^jXe!F Wx<潚#11{P$U 4LT%gx& Wy6MԟhNSX!3>˩J1|<+JHy2%68(܊d32:`2Uߞtg8y#֬PrQ9cK1wco*<1%0=eǑ1Gp$+G8bG}kow>la9_5co_z-KfArw~x%w]q3*6Nf(^UMmK~f|,jiJY'N 0G¨6E&NݮIiII}MPSHG;x`9G;{.\"T9iO6AkHe[ thm(ig > d>.w4%ߍX =ߤT{nI).YcqR]$v]Љli;:Pq0{DR0Y lT v]< Q,eJ% Ge,vf[j+kAZ^pnF\9G3y"# Jo v5uvAv쨒/ $Hd4Wp7m.\.bps^lO`*pTh-“f_L=?G̺HbG.fIra#)Q~GqzB ~$#|xБFkWZvAC\Xbc!k۱]#o>.z:å8z9x<_z p*?˿ۿ٧|~ۿ_u=:kȏU8W'v(r3AEWD&M]./"#8gRy2ۄ*Qܜ )R5sKJQ?g'1[ϤqsA%{qC肏8(5Gj .Ӕq5*TY1>_16bFq =C}=u!_[0-GR=#oڠysZBu$ϙ"G*bP6q^Ĩs󕄏wYs(7vlD}- Qd܌9pmI&e&G @inS9wUŤ\ӣ4FHd4"œ=yG}bd_Vc\QSTϖ72͍tT`h/Y",o4 Mf쯾(?o|@/c+>6^m.լܢ!tXHI)Ukt(eTvW~&Eon&Z /}7ltIݐ f(s5i1jE~EC=vwjv{|灿Uslp9Q=`<ܴ^K"~ K)q`u #I~^_n jc曗??󟣔ݗ atoo.zOOƃ.$7B']~z̫_^~8覣OBZF|CޘL [\:W)l);K5H|*ʨhme4"ET j(Ɖm_x;d`V9\f͈Yugq trL[A2۰5:=MGe_y]Y=Nñ)ժJױ<,ǟ|(THF ,Fo0)ܝZ3P߾,Ij%#׉vdăoDqQkHʅP$.'~sxdwLuFmE.|?UcùKao "ǀ9 N Otd>t[ݖO[= qf޷xk!F= [!_/{w>wg>sˇ?ajzOO\Ǘ߼|D='I/ ;_h-F,|%5G ](vX'%(LZG*=z }$(dmY30V9HSMqVpx3s T*"wWs7UC0_x7RAjuz[L C aV9?Rk:A'sH }F#},BᗉKyn!|s_N3"VS9/s};[F[ϰXxd'gI)5ʅ c ' u3h:8m簃n?R}F -{N챪fmdvЕ'Æ,`FQ _3 0Z8%dmwDFiҩ" {SC=ͼA"8 LDdgUH=.1eU'3)7>: 3Ű(FuoR)ҹ!/⇏CwLYGr gVnG'\𱫤MSV OItP^{7… P\$ut8p / mC^O1.tӓt xSP ~d:9ಃw vbN"鼻Np"=◯>_'Ũ% Ay1+, zAwg_?q 8!cӞ)P.>zˆW\kǜP+zh[Яge8r;G_'1rzt,˟.cOɜ[= l&Κ\ҷ C^A{j>-ths'I>X6{EC\ !*^j69]v7Egr_^{;~hYzi8Abj?IEs9!jnN%u^|KK 8}X-h zN}SEM7Ԡn `<#`ZJrh<̟m0~(Ct]V~p}ݢh$C^afw #n{OĻ?\LW~Hd# &xx; u̕^zqB/ԧ.{ h W7>^~GS?S~7G-~ȗs]PčN|XZ<KģqޑVw1rX-0Q啿ǂ^L;BYmKWc▯ gK|tHD9O:ωE4:JCI}?<(`BxI|A:lIcu8g\us\;Ǒ S$vi~bO$[0R=5y>wEQg=<')k.={sYʜOg,Qao2uiG̱%e1^|l[񠡐n;hŮ?+DcNm fRyxB.c)F,iEZ??ZJ-pu58ʁ3%z*L>tRz.^gԪ3cOgRф ~'"lT2y \aC_Ҳ*9%ֽ.jK|S_Tͱ_(ʟqmy' |G~N ]L1cK~xt!Gqb`クﹽ&? 9v]M'?:1rM Vr%&^jȇ~C\o\ÿX%%] GtSA맛(ʄ>O/~ۿۗ_x.?c?w@:E#ϟbGLWH #g(J|$Q5ca3b!n-&>ЫYcYb>JaѠ#) >"2-*3'>t$5&zj1 +fX7sPM5#9VݝxD4\J&YN~`#Fu D~_ rhw|NDИEs4W1F}`;KU$cu: )~(ЦͺO#hȻo]&`,e9VJǞ+M8/jWч` rԹ") I=Dyc.?.s[Jn`Z5An ?kb R(Ctc{ 7%pLn"ڱX#|Zc?`` 4f;~"PjBnGы31w;\zMя);"Ql)ɓg!! IDAT֝O)2R+wtR} Vc3،\ВPߛkPP0/6´Bġ7/H(W+<j/;C~x<ȡI)_3p{]vtO +{ݲv>Gl,{uz?]g~H>{yt!蒝K>Ҡ/G"~~Ǡ8y/ p_˯^~7.\}o__MFi>&z J7NX=BjBeۆ +E8e; Os̐iv 0y%#,*?eIAOtOn$(Nb!ޕuݐu3=xy(IqL= *dA:Bra'MˌʣQ I&Ǵ~(SsMnϋc89e0"ՕcDR9g_q\9Ky!f8*џGݬM$%*cOLeA 6`S~}K|5)Iee^-WIPLJ8vXoAX\u 7^¸K(3 ^'xl;ug'"Cn4DA teu\rzOq5ؓ,8uKR`3^^!F; ;Ѓmu#B"躞j!Cm!w_W{Z哃x48jF>2LJ>!BWw4P;;Hџ˽_XYgxh|1Zkx@HA"%x=&KH>)l–8""[4+rRbv4GUIHEŧ]zUګ9C)c>U3<@{f{"Ob P3ԩPxSTۥw6Λ/e8X=DTYv^637ٺrjCwZ5V[&mO찍qGkBI=CP4\ʁAt>Ԑ,v@z횉eqn9G}m3yXPcي)0RNd2< G)ߋ~Oiʸc8k!I%í}$ǚxg(9a"h}KH&~h-}h/bWZ s bq${&48#$C8GBwZlZ:F!@d zC?'ѽ &)lbp`%yƒ#'y$n9't~{< p5:Z<]=W1OϺ9G#)֣#<\5;/9G# ~oPa }zx(8ooƂ>*?nGxG>r? $Zܸy!n:;Eqs[P+ !eTd(a (SdzsIbEAvƘkHW:>Sa@۫?Ο"*5yF8faT1 :l`c>MLt滩n+ wl :džg&<"Jlƾ7sM;,+ZI;DVU I3eb˻ V$AIK4lX#}Whu~74 4C^Itл tcsӻ)xWÇ?]~?wGK!Oܣ?crO-9X}@czy[rn: İMΜfFD|Ұ ܕ@GpNCVc5zɌeIس!s_zNE(͐LV̽AZ ǠUl uejf+?pdR:?"*¾M9飱]}iurWΌۤ:Օ>;JnfKo$?Y36NlsK&k3mTeVhVݞgfkKvs~N V ]3$֚]pZrg۸T8^.9Σ{srpX[e>~F3yCtUouڻcSW[cTW;oǍR|Rx[]I\vr:.rsN\ r|C^獼M1oNlɸa^t(t5G'?l^S2E.5Jj@E\ EP(؊LD@݌t$>2~{l߶ o#s\9+/;X({=P(oaSsϥ8#?N1qCm;6{G{1ᕤ3.$8W=}#u:яp^뷸G_7oPL7"> ?f}S 3?Hqȣ-J>zƉ:A<4쨟#ʶ} @fl>oGdcAn=TgSz1h~iߨOn9 UVHݖ s d4^9i6.ܖ·oKF@~^k'4 s(>, $Ytg$ D|)P;H/rɓQ~t *YW[-UUs,yN̢`\ӽЎ9%be{IzktȔ(j* ݣ&66eX ԁ7VZ\RĈkV Uy >o [mkm%$1qGzv<1Ŧ.~rGGx:Ȧ3~]$~n!}߹/ޠr~8_́/}KZ PПg?{o6q˿ ,g0//|Ԡ$=`|'>*stMԓQ׺L?bruƘO%,J6Sm t13Yl2e %(ғ@S)zWt[ʼn!{ C:!(G̗k15v)Plr+E VDiAoj~Nmߑ05e뙫o1;Wzt9!>|f(ٽ'U9JΊt|f(n׹$o\:E*[5vj)Ib5u5E%O{yU(HOz!_;#U펓.N&N #GoVn A]mpԁ?%<:`;u?.<9H__>w;z˧?iI??CN_O~wբ Rx)O6c>30%GNw:;6ݤOM*\dp.UWMyI1 0[KboRҧ~, 󵎳0#GadDTk֛"ɵœplaKFܵ7?D+0B?:{>Kb uA§& )t噘Ng\xv"&ǬB\ɐ֘|iӝPGD=a; $#SN匍T-z| }1'fǍTtxe\s'57:N,7g"ڰfŻT M hLC!nD_8$ҭBPd52VO~s]ߵ꾻oFk\l|GWΖ\Un d%l=s f~닜%[x`9Z[,$I09Y=uƄjV'l~zx~# O|/fB?ci Oܿq{ܮo v# 1>ɖ}ƍHIS|1U,`eHL*6y>< pKs jryf>G:Hm3z-1 NR P0=7ZiC̎q-xW"] :ѧ$8Sϖ}A0aKÇ9̔s& 'Xfуa]YEv[4v TFZk+AMZ@y?j3?J{Uq],uچȱM7+iS28HnjzqGf)N=ʉB+oGQj3YNd:6cxUlye2A_IFXc)")!.aluT.|M':lV57P@N$\9+t[h`gWS!ȫ|(!$[fl g~6ȗd$zG)P{4PT'GIl05@cbye!r&/S6e]{9ɟ@/n~[fdQnɅeފ^}+OUWSK9UWX0Ayó߮yN7~<^ts1Xıku:ȷE.9G[i\^@/N:Hu8wk]wu?Ă~!|D>}_͛D~c;=/_0ߞ]գ~6NwaăW7G; ׾ Yd63Sr[v쑙ch6 @vⶔ-w#fB Cg.|Pp33c}y+7?5sc7TA)qH=e:OxG0n}-v›!szc_iQ]_plugQCk ؛>Yqx71QktnO/Ƞc٫؁*y˥C=Qr<Exڕד !fN ,yћIAkVVBJC@ 5 sV‘h:FS?Js08ٿ14 d!%TBkzU_e&&8;j$%EG; ?R\W.^`벧C$P8ǎg@ly[浟!s[Us ҵ7e!q0]7g@'*q  6TZBΧK .,Ǥ=j`& -ҜWAwiya+GGR= .8p_HBap%QN ̛. IDATHsZb<~vWײYH22n{+ reJr-'Lc@UO eͿ#CJS'^?tCzhXnd(ޭ#9%<~2+CMN L;aa9RSʼKgos 8yOfv=]N'W iw<$/$1,Y,߸*=Ν^5<DE;}cb{#>0rm)zX2:[ktNubzު[|k$qN8?ooWq_K_҉_5E^hӓ^ |l'{N.>31aN{1ޝ#: oo|5~NwygzXobJ;׾׽./o72fyΫ=6U8?s'6 ~{ٌC:̰8+UrNs\%4薐V'%@qa3lηv6|c$xOHm80m-fVۤsiS^lm˘klv04`Nl![$Ǡǩے_=Fp)؈-4hݜcO][PxtEq@'P־\j_Iq͟;9 %ʍ{7>(}[py?P02 Bhl-rY իnɧUj?+Fn}ue~nunMNkm3 /8dZMX[&`KMNO׸pXѷYa޴ZOvaE7$;{7/5Vf=IAmIEdh|o.feynsV)iG4/:pB~1 \ /F7rф %ozӛ`7i| ut,1|}6WL?On'.FuP)OyOo}[O~O}zSzLqш_?xb)Xg=+6='jSZv\4(O;2GWOj}O?99D@"p+(9|+@ 1 ȡ;eC6`&aרA/SkNelL VK0ܙYڡ7xo337}i>#ss8k§;6^}K+k q+_%9:x.9Ч{tŜoס]%5Y)[܈ZĭR_Ďo7j93^@˂ls*VϧIjkp9+[>6ЏZWlhrMeTcޖiNj >iRSj6ؙL`lvGL-7\ZDx` 3f^30yw{oNK-՜mO[1Ysxnʀxeᚸm1r'?y0/'\ DV~RO%p_CMN<'>?AOH'9㢂 ŧ!?!}O}*>郹A5[ø>sV))\chw,_%1Fen|xE^G?:/gHus?lA>ߠڼ פUQaf]}ƕ3Ś @|WQ(xdrjwMނ$0V{x:l۹ Gua etՙ NH c5313[ZdͺGץq|ճjwxꑓH[pʝ,wqtlM^">uekDt~ǐ&Y4}U>z>o:cSBm)B*|:dؼ9}cIѐ[ Wۜ^<:tGi`HӀ!gŭ"(ВX;Ftk<~ӨGgzo3m6/v:[C}0ݸk@]uf#ܾr`r5Mn=8!=.xoޥã|q[ea;3&vm? 8GJ-90|3)ý0OA}:xs@:N^iqe\;;F6V3^zŽoz }Dng2L,_|N 8ap`rKtJ]{Ϩ1ʼnGΡN|q+⬍_>-Gq/~čN}.=O | >OX>e Z.x"J.=ڜS|{)?c^ y|p`FNcHu,1|{{qsV>XGy\#p]w.6ϸpÃO؏486^;F^&MXL+7=xM#_Ro9F;',_WSFJX{ +S;b]IVdPj  @ 8\Y; ˰a [60Y53׽nS\[k#_#|{H:zO}J.鷂q_/rקu.%eK:'h]CZ:}44Kad잮/76ϯ{(яLY\xEc: 5Ys0|k \ۿ$cS9w֨ro90c66iMkCh;h qlk,&=G Ȗ4r+2hPYp=;ȗ؞ |/ů3y ;s|N^h UBnLmMZeaWkuq,=p_ijOH(VB`j9ȟyvn5r%.WvǠwy1}HN "'x{ޓ:Ѱ.\<8 O'>?'` y+!}򓟜r"F|¡QZzl=4')89ڃy5wyu;xysяErX+&rxߑ7;q2^X9yA]f 3󑗳#:|@30Ni3^߆$`OZ$RX&瘁NLX$)h{}=wL$3k G%e@F;E0=m Jdɜs[v5G٨o_uNJ%WX)4Hf3Fpي-Vկ}SMy|U9.Gc뷸zb_!}skEo]Lu[Iof]Y0r(",T3H'rgy/uaf^5FDŽZW(OlΨ&`"ޓ&zF1`z#;{aRo3TG]ʍwٝ"]%2u7p_ q 6rf tY0r@ jMw|v\!tlY {GWk >"̓I˥G'@. G5{qw[~eurJGt_O# FU|N9aß>я' VN8̓ _]wݕFta|=f+^|\|rysf|ODsٛs=xm/b̡=)2ûm{o/rV}SV}`[ {,6Tbcg'Iz!}̠{lyH(Cc_BSma5 'XRǀsWnP56,qяNR òR*#{4+s6#wEp{DFk)b30.7GZ/b髷bٔ~XQkD ޜdFJ!09 (L%)A5/D:r8>: [G#ƯV[.mbAޡO_iv:=~G^iÿO t.H}`??<=i_\]N` < ?_b;*C^'Z yƻ{yaك8⻭$׼W 5&wɣאsHxP|w*.7\l4R7_ R.Q`x$ ,.OtԁaݰqL,#m0 %&TpJ61љ^,l|rF~/5F"khDWJR.eosDZnS;0&I] ㋞yAh2WDj. ۏOrLs}ۿb+Ҙ)_"n̺||#odl9_1s!C<1l:QoH1x=jږ,A^}G'y. (>WV C뇹8c&۫jV谋\2]+iG%.0c3Ы=+0mBsõ#A=ΏګjYPwAh*y4d29A`rsLqvfhMvǻ.Qr(Yis 0=Q&NT$Oy7v<q5,?XkfY$ 2+T )pM:4P@/"M'E#OL :KnKKyc@Nރq}];x0aq%7|>O1r +b3O3G˘kf}m^\ؐ9`{5sXk3OWCg/>0pQ`B 6h`nba׺QKp%u“)f$L?䯜$8s #mlITfXFoձk>ßϥ(NK&I#{W)'vu]~%1^lE]̄ku*r$56bTkQ0Lm)]N/G<"a=?\\ֿa[[}Nt7K)]rS7r=0_&T):v WV5~/8H:rU3F ξ1@d+w_=Y Ͼb:%OĄ%S$f&Gx2,<3}*_ T%F;N-/☑ď> F/HǨqՉYٞC+'CG1J = e4uo W+rkFZC&JgfrF#9gFǹ|}Al!ǬZ4$'&>6=Q_Xt>qc!g>s_}ރ1nO9-o9^C]I-OD^dk k-GNst!mjUᆅ|#O/zыϿʟo$w:aVK9`QyT ?gkAzO-N?_ B]7W[`.Oc:1G՟6Jc=1Z&DZ.gp<_kymkEGlN$@f!f{r˾kҍ:JԌQg.X֋wiAeEs_Ңv Ox+: e˺5UL8e>NWrLܸtfZe'm 0PȧqO}u0$9.xTO2ihrRW a^&yP_1m=v~)+ ŜDyA7)z{Uڟ6}X]۹|wzbp??ȓn~?^W[r!C;9V].C#y0Qd824xH׈"ppa#4dayn/kUxfixΠh`ؙ465BܒEՒg3ħv{ 5m.~2!v rnweѸ38eEfaޘJzjw?Xb' Gyٹ::~Ѝ lk^#7Jt+K1]~U[~sO#{9wu׉$wyg~_|~}r_9Wc`~G:rŮv1Gt53_nq`/b0ƒ׷q|28kmȈȓ63B f mStInABX2Q!K{JwSWp2J{Vʷpdyƛ)rUl7QOLl|MzCF9q)cx?y,ےs~u1V?xd<&'-Rd]~9j!Mֻy<>U*7'xP&vjHq.6N |$5ncth4[5o${kD!g8.dm-joZ%c>7o\VBdl-999|aeld_l$L+W2ct΋uLpwE?]>_+U{ ֱjlWے!D$fbN@ )*32'GV|k+{K2,r\rGs`ͻR1ל-:5oR5_uuxWNz}Ĺ?* El}}-sTn5OcčɅ}r|۷}/|W~W&|aE{1{vQ=s'H9Ct1 On1&t >VϛI uQ?$[k>]o@@hg3`a7_VpTk5}NՐZ:b5$93AbgcJ^BI?azudͼKi:q@s4}V'lJ}Lu`@Qj_%(D)֙ v: \~v:JxYp\1Hy8yXkHss/as3D6%8ft,zHW00LM\6>Evc/vr&)ldCqGVP8I&žETVٴGX94871D ]-g(3\ pHpK?o=v^mg4XR\w9q5| KSW6_-.ssCB &AgwqtT$$,P:qވRo"e hWJ.|K)6=NxjhiP2+n|KB Yʌ00uXkk"yIK|{Lg"x6FyElCsaM q|8 ? ר9kh,gϝ% RWۭ]x,yշt|pģ:FwW:.ɋà/ >29?GssbIt= ^G&&'al TMdoΟ'xohdw;1XK1n;V}hw)Q8Oę+=QM%i=8Zr_r<_Wzz;ޑ<'֜#N7\&E׿~@rN{1ַ>aWӧ?Y{ŀǠN`l'v#6oP 㻿OzzC11rԉS5X|=T|O5n6DEeJlC:jμa_it?Co~ƕ=Oii3_Uҵ&9⚭lfl=gsαIK(F"b3rV]X 3'v#k [sQh߲t+N*ѧ%1F,sWC ĚʩOI^z?zqu<yTu`8YuiDM\{|Gl7&t ˘6mDbrlw ^-Kk!g銍fvq$"> 0{p/g7u[E2 #c罁9Cwɬ9i\+d[6Tō5k/ x8Pbgݍn#@W'1ʙ}mDCwa{39z}q!2}}"hqlHԣB88(lhz?yVvS-|[E&Z5 P—7 |C/n\"I{s,ܐ\Źݚv1E=a?'m0Z]|pw+O!v#GNt.Krbw^.&<ȓwz`Ox>! _ؕ88ʼn b7ˏ./qO 1!%LFU"պÑzr?z/1|.}~=_n&Qgv&[MZEBFrDז^P\&;kpM2/Su1kČ9Fl%@UfpƳ0d3 :H(H_Ązey6H¬Pv6\zt6~9{ΑLbJK_ǡ㷶zrK7Vm>Yn(9P^OjOYlz.*j}ʆa5"JRL7$8AֹB.a`C^3u0dlLNSn.}-L'AG5mٶrUke i dW$4PS /Ln׷n9+x̌/\ ݢ>hM 옔P(W`Fޛ^#a\e`hc>lCƌgG0;W  o'ifBPG|#wW3.*CF:/ór *<(1;6A8fV$|LnPm:^{ҴJOWz^xΧ_ӟ``|v' IO|}XC/O~~W.sn,W(8Q^3뉫s{c &{ ??|ۓk|Cίnۿ˿0s{֦[^^.Uz&ѹ@ƒ !_~k*Ÿpz!Fގ~,ycz:p'?,Y+ŒXMW%^FlzH~} /( ɜGCʇeTC@/6}mNFL\޹OY)Ru@# QmU3;ؐ|ŗժ#'G&kl7Cam[gh_zZ}W?>՜]m ƔrSЧԯ\U-3Zؼ505n:kx/ŪU>1Q38Y㤓s'p"'bQO}jĒgnڬk*sGɃ9f^\(a{}}n~,`<9_x_tAc݇)?'.6p3L ZK_3?sþx_}z{ߛyvޏ\G?:>vg'3xN?>2BX?zE2\cX/3OGؤ/z5\d{4D-B_z"oUN@(o NVgfNaE7>ӭtlI"HVᐷ82vLj(@űM,SSy[D6\*e'Edz%~g\ =^{//'\ǰG>Gz7Nwt^}YX `4ʕ헾Hq p!4`U݀g0\Z"!W>c C0 DԥVm-]*or{!w.?pxr2x_Y0Wz|N/\d`}h'<^3zMm\o,9+ay162q,uխ*%ݮ"1LL-$KCP>`Qu=I៼UVg)&uMf[m ̀G`-eș}Ƶq]ӝ9)J]ov׎t9>ݯv}u=j^M?R$*쎫[wFiBg;5}+,9zg![(Ń'ϵRVj/#{n$wm-);(Atu,iI)>[ vUb sNg(u dqv=Ac3/;jD&aM~3÷팖~_gæIIfn`V`K˺Į\[ \MDC2=ʬBZK]4φ6wxa~# Iv\$b2b,Fݬ8i4Ĕŝ$)`qb=!NF7[8!i#FGA {ys9`')ԉpԶ|l,DɟIuzvntS7I^]w5/*9ʕ>␫>ux3y_iO{Z $rRW8_#D?'\p`}X= xpsֈ{?~~W %+r{|.40RI ㉛B Bwޙà_Űݶr}tcwk\~/jx#ϳ/ԧ}(/c䐏1|b[};8dA̍C"; $1Nbm36a ed5Ox>\ c&V$ .Hf$a2HF9'q9u&4VUtj< #C )q>\{!I/\M o>{e+h*N[ny|5n-ZQ%%tԺx#k1'xNoNw@fεxƺo c>9/zwEON%~hp+"Xl7ZEF˜\_Ӧl3U2"frRSYQ.C9v-rG+ѵY;W`fw99MOOy|X|K$u 9媂{ ~Wrf:=@ک^H3x9%,*^'Ap VU`丰H2| J`pGbgc@fF uMMe@\UCIb<8I#XkhXm|Ss/|‚Gǻ~fq<dX>Fo5XOc|<Q^dBo*;AOQ~},^_Zzj}w.6w`{/\) .p $7K)MG(Xs탾/ak'ZC[ s}ԣ,S'zyA{ ׶&SFrL,#.6ڄFX[qfpf*˥Kb |X)C F;3Ym>"@6Vu2|Wp$ 67sZM?my#7Ga2V ]g 2  -eǹ"sia; sd@؇؝Vz#~7o;\]үIZ6$}-6/d,[<K_zKACCt\Ps!csSQIUu{(Mh@5W7I,_r. om'xڶO0!L9d6}yt}aVt֮{rÔ X5(q>w{\L_k5yt8{6wi=9L5/hI3}aʴPLrXmeWS)"u\OV\X0Íc׋;n; 12#<-e^8=iR8'ˁo#_?:ڇ_Uk=$ǚGrͳ*ՏM\4cc?cW| re.XM4ӱ=*^&6xkeoZC71bWzK%3LhcH,W8W#ϙLQo[3:c.QsG_3A@=ݧӑOyESz3<!@o;=7Ҥu.\Hz,X:9"ޙ3mn,s u}~}M^c1P/fuWd?&ۼB}dopXb'nKr|m윣<&;َ IDATcQs"LLӾ&Lu5#Mh_;9س('<܏bZsoecxA$3ɼHff IQtbmZ$hN.q$fXn/⍅L ?oc0>.F~tOp  \i,5 } XkK8Ҝ.u 6q򉜗ey oxC~"bӱrGX;ʟt_Ɛ8 |sLa$9^?يrr[44:G`v>`67dƊ0\L0ce,_hDm{./,/#_|dI+qtesr3i LŷƳj$X}4~j,EV럹I` k`;AV16]L6LNkZ4Ñ 8CńH٦j6 JT$cU8>BjqZw7Krd:3{{֥Z_Ƞat\0ut,b9ی7rX&a$ v}1v9 ؔNv93[8-97Gyfg939odtޯ3RuAsqsb Ss[&/g 5dq휫Fr/G hb _*xǃQ?\w t#c3$k++"_br ?e_YߟCAx?٪q>*?uEA , )9[j9yO|+M.)'4BR/[ϊ K$ &c*ŭ$~Ks3^[̕65kӠ2G齭1H;+'CmY|.Hׂ 8JdykuP&ٻ[ŒW辒XWuWݖl}AV"Sq6?YG{;]|ȟh(lO׬0`yҝsefa6#SBD\+_R =9gu0c۾8*O& _+;G#$ YVDUrF .sSw]@gl!ZkBD{ $$)Q`~???pz _`aoI{|1(͹ 1G .6~yC @ Z q9t0~k^zɉѫ7im\e6)Zurgx cl&)z%>@s2fR遉oS>֬kyd\~"m0%L׼f޻藆x~NN>EX{Lg;^c;?=h'/$׾6?`Mq)\l+lj/^p_$ jট|ʁ |킯` 9g488awݸ=k^VʍT 9G>=W x8#*u_C?ʟHd"Cy~a e=G`~0K9jjԤtXgc^Flo'%4 ,sJX\}ͮGJWMW#k";;P2/M=j=·Js]ˆ~6F3sI65*W_Jvs/S7&p-T> /s\c$Ql=rBGGg'B`Vcy|%/yI|N^;g;;g!?IoQ+Q~_B>/>8DǏ7N~m@ {2yT[kGʅ$.V~lvލ[W-xp!d0I>:/ L|B ,E zgM}HnJ`P!W4_6CN_8}a膔SV,1pk>bk+ׁyHQVi% { T˞\1!f{?4zlAbOrr:+V}4#ϱ;\u>ma5˒;d7{0_3 VN+ 90lgdnfa]]s_g#zڇl`}r W)f@ձxgٶC[}[҈nW;/~]$ 9:| ^t~F>{[& |ݾ2́+S7xI_*3Bd~c,yk)`B6eE]o\@`[r6Iy㵎\_dp;HpˑıdnNn,5>9쭤="UyLi2'f1MƜ['@!&5jgMa))#Y[ sZ;֟?N>*X-L~vfɁ/k^pz`\|ko0 ʳzupt::+wi-$kMB90Å^ç?`$ 1uJAs9_ǥ܎O,@%-[tɹcraJB1@b7ezJj f͞gR|y6n-Rc"IbFt$ sRÓEQw~CWyoo1?(ĉ'ir/ F _GzႯp~yk]wuzK__`?E>ŗOs]&}tSx]qJ.>#כ@<2`({œk 1-5} -g 6]uZ 9 尾WvBWW9ZRϧ_ WԹZ}oߘ\;Z.:q crA$u w֨utTE<:\oshY_\ b7r#j=7g$q'oedQcndʙrnecjs?;Yif_ϵЮGh |:溇՜W'v{]5cՋ+vW'ON?fXNlZ;hCӶ|"mo{<GNY3.\)>O| LeŬ.(i+{-"~l0|_ίpA-oyK^O|0Gny:gu:Ŵ%wU4A\✳:|c<nB֧{dz㓸ǃ7jqREΟ`c\DXLT4:_ƺ]9⯷ w>}G熓hsΉC'b>8y o||Eߜn /o|}n~{>ʋ2>F_}g]tFiw.!;G:w"ӧ>P~YzV^t%rt_y+xb#Lr:?k'ț= %}TWu+qO99_#z-JQ7Q؈cb#e?%K_ݜR1ؤ+?6e:H(`U2.UdzNgˋKFu>+'13tH:mZG7Q2Qéh[6iFOU|JjDb {bwFUH lHvq!9KY9rcr hwlA Ɛ=[UsFjˮȻG4Q64ҒF%d/1In?+7KܯN=dL]ٌSQ1zZ7@ e<-'tH{oUsਚqNPN}t)7^uͶWzOhQtHv6c9L]0]z4?}=CzH#-NLf@FO]`90J{kݖ}\ (@ĀHZCQҘ(cDQ@n"A J(*AͥzXsFMY_Ƙsͽ|ib>#{+hQlj`:Ew,:SM~T%N$[= AN᫂Gہ+#5w,yƼhɎ_~lsW1|’ko|g{?O?_8N>tr7ɃdP_\ ~ia_9c9𶷽-߁S_r3'6m ]R8{qu9Ř++^n1 pԵS9&?mqfCS->-V>c͛>qf^y$72Yw5w-Izr5beąBi*r:לS@H>M>aZf?_s Xgc'(ihskQS48h3b)J50]SM`Ly n4ly0fM\|!oCofl; эS{f㚐C/aL}g<} ZAB-ߜG]zJu>VO#NM>z>Ǔ=7QΑ-粍rZYP9Ʃa9m.S] %W8򜞳XDy-e̩ ht͔G5$H_ܼ.[GN=tZ(u5GXcC=1AC9\ԑh#`{xpb%1Uz9ɕ3=<ߔ±^oyn~A`}mƐW>yxa?"o{lLI鰧)>k9BBq֞sMT/>&| _11?mև{//9̑@wT9OOxvcov}G~G苾(||g}쒹3s9"h.Iypxq)_"aPr!< Op k[}XC963wMoScg!C:o ~aK@m&L U^HwDwdƾ3썰z}- ԓMvj]u)Y5 %BmX7ܸMwO(]Ͽ}fOKGp K9ұBkH$m_d> M-]1gH&U>g.C,s~eGA){)j\``Peh+)VMYs3h4PW4ZuGAÓ3?cɁo6m_r-{* ~ Sa9Amfe;BW_}Eq"k@UO={N<^;D:~x;?{9n7S?S1V~!㌫Ӄx}س_.oM1|HM:5W|U?'; /?s?v$'|C91NygD^aWFm//x}HNJ=|p'0dчmC=-jmx3u/ 57b_yPOyrcM8`WRYG,lXlZŽ5 >EpOjz0!ۍ5䠝 K&NR/6k;$iY 2Ѵ|e8`eoR?'x%Vw[ZrRON9rXccA~29 1(vk\fê3m+u i]JP6DQYegtP kVC) 2t+=zrkB;v #=ԵDq1Bɩc-In7<ФaHznxtTi{/:P6E׾:fpԽGU绠7!S?F*i]e3lɖm!uuxk]h8c?6ӀIWޫw(P^|?CI~ec#Fɿ_`y{ /f@ܬO ^>m>+_ >?5$ fMJcc|Y9̟>p|vM`˹Hj~a] $=8?ʛ?7M!O{?ŀze0ֱ%|~Yv_c|w~g~տ?h`—Joȑ_//'883טہp_x|vG-I=mo~r qF2Nmu%Xz__{x{ߛ!n>1u|g U+Öox^fcg_JЉcͻ"_ʛؾ.O8Jͼ,x–%"6YYgEx> QpD%F5z]nr¸Y#(0pʹ]ÇjTa/hJk \ښ s?sh+M^j: OL CiȆ}g9=ОHYy.ĥ>7=ԽYmF/Eȡicuj;q|2EWK5]Ka)vw.uC3Lϋ?3ʟd2TNNͳ k\'Nw穷αL%sGT=[D}N^uYUyJt>гL_غ wK7k>= IⲑSϬdnc+.\H)wsHKTi9cK])?li#"5mrga$'9Zz tf]M8a 3WY_8@ 4__RIPs-}b+eL5g=}S7K?|7wN~7_0ɯ}`s3 cSJ)=W>y[*_u_?IlĶr֚<j\g]sɍ|mn{1&pd惺 [rşqN Ff2Nez/>#)Ǡ= 0=y76Yߜ{҇2iQ2vHEQ5K_nfS2:PiOÕ8~Suv!Q3 8dބ25A"$&o]a7.7Wqp#P[f>/;ҵ۽5;njl=|^i%t *j,,py#iGdQMɡÒ7Ys㙞ՏȳM<Y]nMl Q0ӭX[YIi'Dr-`\b2snp ub ge<#<_KQm<IXN]ub>17:GiH}3n\$e{f_5n67rH>nmuʟ8\_U_;'cԕ`@> k;GTy 7OZXz1מR8C[Y޳c%??NQg>:CY?kc*y,ڊ7sX7 XXeBIĕjvQñ:RG37]{7AIp!Fi}EXlsFCY+ķI} xGً ksi_a/{=-حUPBDW9X:_^U[dlB噽^f }}_3m&tKa09&{dg[rz&cԟ]a"N9׉1oC˵{,ߦdats>;igWd+DlNdRb'0(c$644^[(S`y˒-GzP{VE5=X gU}^ O{wvLq@r_|%@eA>>\-)2fy9}o]GAQ7!o!ZE,=D%hl\BdO,_͠wF?L=kjx.Z ٰ8zqÛ:}> 5 >: /M #^H13sxK!\˷|Km|y#P q_/e~|?9﫯zsるb ZW!ڃ8ltMn>|q%2Gρ/a-Şf/{ޯ=G^89^ g~gqZϾ56GIoB҇tȣ}O:/_]N3&Rꞣy#֯y}5W+Bx̜]Ss' OpɵNf ]v2E7n!Z`8h#i'ng~R{QV`_i#]{4MGҗ+;18N#YaFY/2]9iG2fSɘ4#yCV-Cjvc|mƻT6FO,N} !aI~)D_'gnQcS)^i!pSZJF(|@1* 1QOb.fKc|/[}2G-tĕ"%_M?">}ڋRn>%A-bJbF;c&N]߸\i~nмƥCsW͹|LZ <%i.?:͚@GM!mBMSZrrpGt}=lfyt_&xY;NR>ZC9Qr /6Y6AƖ3D^9 dB"O%qu垣=?c_}+^ XYa۟lbXPyk>%qGazY="SEyGq/G /YSN)+ˡv;pxT|4=XWYQL ;*\R$ߪ,XHko5yV@pNB!!Ү+|}It0M \5G(w*u'1O^i9졒f]9FP9{1o?C_*%399:e_C#ʈYh8^TL623)E;X_a2^ҭf/9%+6xj_[x]N dJ}%7n#R t|d H6>5oo)5IBĀ=$q}v)nm=!]6gV&Sϳ?Sl3oM5勯kp}]SG]q7 3٥joep5'+1Clz"O}Z'u6󉱧]RO17r3v6wQk y^:}b1Vfxr&m_!庺n1U>ΤgluW,v^!<'t3J7QTπS(QEG[RBk*RS&@s r&]73qba© qpc"QtWV&îVkɔsӏj-Q/Ժѐx?rUЀ/ws-g='>^F2/~VAdXc4. ev)ThS^pQЧ=;;u㻔{)/ؼ~3oƕW1.rH. ``ϯ&f?_qsv.Ԥ޴>|W0f8)Sʳ.G-x0OO{ &=o𑔟ٟw<~OCnlO :AZgJrYS~c_sik\3]X$xs<;r%{`'IbR)GjwfĦMBH`u.=||Kz&k&,sXxE pB@wt!pIfk_ 'cTko i۠UʰQcM%s?q3RA{>U=5}fƧ|j??qJ>W-Tʆc!<rO1Ԥ_RQ%5l*66͸݀.T_$y[Ffc6iO'՞r׾d>ݧۚ `0)Snػ&xMt7 TbYjY<r>+i_^..w'P''g?'FwU|k<'SrrS>ϰpb*ㅷWSI?\k}߯m,]`^FzANR^w9Oq=? IDAT<{{er dyJoRR9P$m` RGulF~:l)D 9‡d\RP*0yg`&n2Q38.2J{'0ջd1jX ] 'A.%ss丝D+ v\OU@kѣW^yÛxWC\x1F@^ǃ{7>'Nr^rqؘ|po dOO<K; +2Wg֒| 3\Wؽ$57yg 19 o퇿!$6n.CԵ}$>ՕYO.!oOJ|rA\CŰa烵`q}&7༨ؤ/3uJbD(օ_sEŵif }L'܆Zƞ#9%ZQ't[G0X+<^UnoEucֺ91􃼐cƑ=Z9a[H?zvnэ19=&r~,v>=Vgxy{R!M2gݳwIG}W>!8pIvN<{9UVWONgP>RU 2+lȢQ'FN-L[])L{yCЫ}o5:?9edct']1xyۥ=T9<ƌ]J$}8"! G-W8(/R2p֏R53)}粎ړǘ2V'he-)5q2\<}\},q\du$v9ccnG՛JU?)v*b"&$SPR4uBENے~lb#)_.uWn?; )䑇SjtuX7II3BU;`c >ث1sbq3}sk7g'gNcFɵOz|࡜ \ ˇY"S4%) /?v;RZ gw]~/SBB䰛yزM9; #[iCw5 \7- <!IVFM OSHbJxDp-sT_IF\unz=}Y}Ws v*7Q"-]b;m=wY2V 6sa>S{՘!X6PC QgJz;9fgUp֫ԋgH\vrVC[`;%цfȺPip')٤Nh8$< Ɍ?菍D }A>~WϏ- 0{{//o_ˢ}L+yubW;g~gnr\԰R>Ѝ7ubfbqÁx׻w;A\'~b~JjN^s%196nScn)ѓΖs*hPK\(gBXSL( R(3XآPhjNGQ#Ǵ+P?~Z۴wZWk%P_4#Mԃ}<^Dip k:Ç{4zHpS#~TN"7umcHucJ0g0OO{b9f }=97ʤڶn3rsk;bwWCYrq<{T*/v'#aH u@1ݘl*QW^kIS`sIli);ZK!V; -4ƈߨƿgsjK4+vt6]gsTY +@|\u&H%SS!"Pk?*MhIWc>'3i7kMIB"gLtw4B3Ry}IDv$aN*_,pԱG F@k}dP_7,Ehׅ cO{OC9x'?{ɻ;xfKN)glQ>obvn/Vim1|ԄPO_9k% a9/x9VC''R|3.F6<~flss~D|[LV[z1xg_FvN=wԅqϩL Yd9P-lɘꤝ<`1p;i 16nOi,`pa{ل`=AiGRYfݙ0KsZgb 9"W>ȱ'2AgMr m8%Ong4A27ifم5S&Srg{=Hkr"tg:u<\Mg]+w$dnHs2S ^&̌(3]9%;iZH\l[ ;pI;Ƨχ~XcSZ{f<~/Ծw!ܧߤjTffڕX'`ht>kZDu~bӋ{E+PY^ѵCM_b0y59" b.B@/GԞt!ʇs$zԩ Řuؠy-로9&34dGJW's#~XVZZ:qN#~50\”7+Aw5-X?u[vbW\3ym[8rR+t٣zHHڄ[Neʥ Č>9KUjgۋzb3+g6}ͼ\=Ӕŋ?9O f>?MEc cƩ1q.pWooΟ bvSpmɥ.7[^ K!ǴN/lW|WL+fɇta/bXqv<;kȃ?郏t{XOI.gP΋SH4_ƣt;$QC73"T8;g Ц>⪭I:D>zMGb'Nj\#KXŅ}$BLԽ3͋i펣 0m g˜\g@`nmgJŰeHXS$AS /Gl&=%NLJ6 3I6r;)gcO9 &җRdnqGbd+> HMM< =!}8$Smka_Eat5/k];9oɵa;v>} :j;^ ARz ]kd>O9__%Bӯa5I[ATBvæ#oՔ(b1r__<ч} Z#ԸCCz +^Gߘz70OHua2zw'εG&<#cDY8Cc1B&Pl6GrbL]`-9Ey35C1Ww#/Rb^^LcIĊu1M?3ɗ %3O, c0/?|ٗ}Yw}"Û ߘݛtkڋ6G6<}`{2Z7%cX>6߸\cD9_LYkVySg=G:;ۛ́/O>2q'O!,PH%z9sT&W^adw2UV 'phPNWlm97$-뺎m%}g h .[=;ŰrAAlfuj([ck_Gޭ_݆zDF%f0G~6:i_v>rbbO}˙!S_BzyprC#|>h>C;eyOY/iKon;5 &>zO Lݟ[ŒkCKMkW@MaSݨJƒ:Y6;$k _bǍ_LTNx38y3퉒[=gt2A|֨ŻK)~"v~B\B9֎gLys\9yHc^"Q¹cOگ}3\uMn}_}|'|'`>:hLJf7}7=|w~c]4G~s+ɹ≁n2ѐxCc-n,񑙷^fW7}e.ҸqY36 ! &эW .L~&@ۤeka [ ;Z1G<PP!,Aj-|؋XecDm05|+xO1iŌOYX}snAO9bc ⒵K/I'S̕ `zù98'E>]ptW;ǧ cJY/W4;sMll_q^J8)7_Nr0W9^}Շooȟ3N,>G/?gr"yC٧X{o]?y7G?~G~$ӏX7QX;ub?%̵7yf?;ssړ^\}b1>cNpA~0(xNǧܥp tS.$5 M7o5ީTθ'd?gF _ptlhvk*5yl$Ͳgz?Iw2ژ۸S>k;c}8%xScb#_{?ۗ;n!3{)ùPg^v{ʝB&1/a'fke4GlRS}Iz1Bin(rIJ|1wPM~Mu^IM$3\-U򕬿 bư޾xcmf|<0pkPp%ݩW4,8lH^yF' %lg ֓\9!Z Lӯ.2&!_fi) ųaVs'0A(cG^vt"z7JხG kVCZ+C5x LO.PB+xr\30|l us< 7µV!r>lRvԍ=yB缜e&鏍1 w0+V9s/955 OQ3\ċ:ƊoԈ )bYQVrMVϵjz{O%LG,Z7p`lNol'N{bѳX} &o ꙓDfZ#\KBnJբ:~ld~뉩' *3뀧6[h=K >' j\*^[EuJ@M~luqGw~w?y/ה3\Go{yIelM?g܌ݓp=чS?SO;k|9'Gn%y^c'o)Y&q~%nd:p!/$ RH,PqdEPE0vO[MvH<Y pWr^g61]Y/|{(BwljV[bs ̄ӜՍ+{2Azw5jgxy1I,̶Fi_ u#ӫba \ItC˙p!ŮJ#KfNYrfI0Lz!9c+4l3T2Uq w-:ˤ^n}|=ܤZSZ| >aM='gÙ&kr Y_lWO۹#oÔ$hKUAnpJs v3 0SrE}=\y&~&:g<*jYϣWi_c?{FW֜k/b+1 IeLNY*%\y +e6vx{!׌xb$A8Xxa%7\ S7ҌȜr.Ɋ2q[h⻕xsnMCm"q1K:LO:y^0=39'˛ :EW}W=|ʧ|J/VǸb,{f9WXcnۇ]~As?|90Qq1`Ϳ;/~WES*_Oωrq|/ws~~!s u̙r7ƍ>؏=cyN],Rqtsw~1rïO,뉯ޝQ'خ]1ƹVt):Ymr9:Abc[NFb3t(ML;M`I; t1}n;uCDNN7\E5Zו_G#b?y4yY<L}YÊLۢ\>]K!̦{W/LR7EUx(-l+`BY ңǃ\Jڱ>|ԏ[5aR{Ģ3Qú]PFo阺[ݵG^Q-QQ7 h#?0;XS7yQ.ŌF ;"I=7 :9,0}~w\#]x8yg=Q۬> 7]7t@Lpa CkLk!{yHFi)iI%?jyOO>ĿwTͽɯN<6K$#>#rPN lYiO4Tq^%K+˔vl1:hIB<8r;:kaXv*&ۚ7&ccTW7O?1u|bXb.tB(Me_sf΄ Yuq9Wʪ''dM5^kNȟ B^Um~ \ yW{}λ}v2ӺV^b8G1=T-ᖢ0E_ /\a` Y(aqšxoC>Cپ,huR}|7PO'ܳd|( }LB]+  טNtw#?1\:s'np uHu{f!kF>?o{rMY[\GCuÚ:8KEjpC<'og/`ŒdF;w-BݠgD0ʹ8Ev˦Q ?9i1ErZԘtNk29fqMikeЉkjL[Pv"I]ICq}rkcOlTUx֞:Ig{oڬ\\P֑mS؇Yb}sݿϝljl]c?zz2 6]9^Ypž;˿9׋5H9qkpZG2,X(Kߊ]!؉WW>YcA^Qc '`vxoűlbTg5y|4D=Ò^>DΥF^ݤY3:Y2y9ҸZ~N}BvQMl˽񵫯q+#8O6>8-yu"M5 #/Ht5g,#vtD.5lƿ~]Zk>ҝ3.쩊U-'aW(ܩ`ɠIubq$ڪ { $kO1E W<Š1sHkA_ںPa(ݟS3,G勺(ʏN>|;F <,u\M^oW˩$*ρueӅ_z΋= Mzm 8_sec-}>NIؼtx,R~Prn޸Yyt\Iqh`z@X'5rƦO^}.6uj?;#ӳ$#!'Ņ 9 BGv/sR eU™8&">"ԋ/4wε$޻곏֟7 `._{Ҟq$3wd c\\rZ7 ܐsܘ 惛ބ0:ua}>X[ lb@UI \k}H)~0.'t;1|?Y=<}v9#Սk+^_۹P૛yxQC]S>顩bԹnd#Vz+B;hGh6=SG!fJ{hSt܏&`{Zmުa6ހ1׾La]^0x)AI+~'G}p#9;7oSFN\Ɛُe!bg_3Lk{pM&b_Jk<Wa{yr :w{Vsٲþ_<6Ewk䖿J?QY:4/tFR'[69 ]w+rxOaY/IƘy7s0_I^uf/I=SuzSwՃ}B srIgv簯k\_>TͷQ5kFC)/c|~vc Y>NuQ6~/gwRnJ0Zq̋aCwO_en'F:mLn_ة3S#iiX:[`ڂ ؉yu@׾H8<{1w&ZL mq:h,36sw+{L\u{.IcH=TÄ^}UG[b~A2/zt+e=o$^9lɠ(=ڲ .liFʵ TN ;Po[7pJD\عu?C|sAY"4F 6o`vgptd]iN",z+V&Pȼ؄CɎ/+Wtz|zy_[qG]:bsŻ=&-9yglaC) y"C^ry`[w?sÍ g i\ܬb1{ك71HqǤɳ1v3Ƚ!ӆǡOJ |c9^QǪEw9!}{;NgN qSԭxt :snDlMy4h x#Q`urӜs.Lǜ]ҭpf:P<}&B&|Ty133g3Yud?04l=xэ 7+1Ʊxﹻ-Ry.qsflؚk0<ްf#lWg;rp"iL07%fBLzA30k4"4ֽ,|7sq! @f;yN&3Τ:wCrB|Ԟ$yKxRshĜd֛}?5\9/RpUCÿK^v9]ϻGNh(s Zf{f1 LZ̝:uk7&zlhdoL /X@?aYr&w)n/{#g× Vq4F8Y)qjb3x/ / - c3nxF.֯~g:XpX[)ngMl9s=u3~v9'}PN}>x1Yr(#g?wO̽ɏc|匩G^cSʱ|9C7>9gq#/{ GF=3u¡hR*wdYY]- 68v2 @046A!H7 DyBh( 2964 (Cw~k'sQvU暞w{2U;i&bȢ~>FxڤpmwՃ_U/%k?lyv.CSKj! җ[ IDATzƛ= bMN7Eu+G0N;ҘӈPӟ+~Ht܋S{J=51&zt"_ư[PO/ #j;fl=eokFג)$xt kߥyWjWFjuXeaZ {簽3B>B>6`j^?õ|coiO)$8dd3A|`N,f?.^Ad;[ENyYq:7A簄v1k{`!Bׯ+Lm],:>忰nW>kU P~~j3*_/9yVM/˜cYv7<=Qb6qFGVKFOkݱ\w[O')ADԯ8z`ƛK]N%>Frc ~]u6OaۃX|<߸~eS'M.9r!w +~{|5ppϽ+~SʯL>}`.639rӞk_L}K=1Y1+RYr,cEd:u0wr8+\qSlǀȢgs̴߲$٦H7~GobVwrnFiLX7Ӏ)]~uL;*3H?Ƀ32Ǫl>[S/q}b?s[5,99 M/Ϗlu<> r*aO7*x<Ä\}V0uuPH:,3Jζg+2}`z'ǢaǷK/_Y}ls?} mv]8o2hhsb1H\;4zԗ-e6<'u(~e9|ǃoZkV^:|g)FЃsK!tw,~t QY@ ]_58f֘x6\wYǗ~ţ(ܩcL:}ƄHsO'5'gy|z[ӱmr`fsfcL?Ih H9s{ASz~@] }4?qd9zW17&ֻ'1~e'7;fa'Oe]9Orv[{3!ދWf3]{{4)1dՍ>>cX)&GJy?3Gz`G\Js)){>sgO?yˣ4&/\$G{~{c)՟V<ɫm\b)GΥa\ 4 wLk '6>~؀d$492VVR2}/x'Ns.m3w[IҏCݞ ݵS wh`oǑ1$W5؞٫:?W#rI0ӳ 7W]. :q;.iґ' :3%;N, 65'^cCkycMRN&*ݗ:n|ž nsn\GGޣy c̯n[혠ӺRHu󄴈δ'V3v.{ђչжpGCESflY lV^YCyBGͽaR},IC1C.8"zv.?S]?5X+.7*t\ 2aM]5-1f!hV?#r;8NvVN;sImW^cjf42?o͈7&ވ_uPqY7/ZiCOʌCgezb\Wt#f+ Mĥ qO{^}/mZi >u 22p'zbR'6_HEjr7?Rug^Tm(!ڳ{,@Yɝ?qr)IJ}'#{h+^;}`t#۱:Β"]+EɴRb$L=];-Ұg*kdd; "ipKِ:/e$]E};f^͝xFnO7se3ǹӋ#9 bs(hȺg_Sq1IlIqKx=w&lk>/*ls۱v-$Fm}3:2\x ^ϟZYk?͵1N՜DyZ>n%뚳sM{%މ/x./Ab}r:rq">ήbr4~H|D^o돨{p]7luzݨr<ȸXy;Vsi#yOĥ?9S׋~9v|qx_>5r*_UrystNƍُ1WybP3RwثyŹR$3ߨO'dFQPӻp.Ő+7wwպ#cem}d\ߔ/'{K|ġ=LegF9?k)1a0A7S Fs#0v1gmXzsڹNsI{)RO Aue'VNv ^Ӷ_=38kkg) L"z\_xq$I,kIT ~)Xn}xbA)0@ >\E-=mj47}OM<+&aCcpLpQ`hFKc: A8jg^5ndgiji['i:6wP۱ LH.VN u#svۛ*r i\=)n#9w.9'F=`zbv]9{=auܓ;c8;wbx'֞'ش|tk=󴭗|13)>1rקԧ}o|@"3?ȡw |iSͼq-9c"f|3gvT̞Rߓ\p`c5l1EXY7&%`{c xdwգ4śt곜WX~VG,4т vĔ`ood;1Er<k%t15,vrmns>VWs:Npzsw,ވ )S>7m|Jqo+ݩWl;Q4Ѭ(N!Kh?93]?% G@oCWWω6rUҀ@ !M9|jkZDO, ^:dU#r9b~7VhGJj7EN _S J/;DrWR6`7/!sc a皾?`D'Y4w@ ۝7ܣ9a8Q h Yw`M,#Gk99}AFJܬ]:`gܛq(Tȵ3I;yՍkf =TeS'6x U`M_r{9ĭ4g7Ǹ|A̕mJpO//r57u3+" \s0N%.y9ԅYd}zl1#Ӓ9CIn ~\;p`Vs;vLjӾEOn61jbyJgс.0s:$tEyItOk[kM{~6"և' >^_#Oa T{Zh7QsEY8Nh)\u~oˇ,L#+zA N8S]=(JxQ=>"9e%iaCc-Eծx"5߬~92}p{Cb)7zz/>o͇҇XőL.u3 q{ǙAnw5ۋvƍCSLϸĩ#đO].eӇ9__ʽbW<{5)Xweg,b9wgޕ/cWq|釿uk"cH|S8~eC\6a,G$9:a̭Z&ڈ,P78m hMʏ$='O&ISn=%p ZP%CҨϖױ@_Ip&^꘺g1TZ׷qkzHSND6oqų Ȟ"^U2>'t*Kq;/fcqm>R dJ^I K(#M>YzŅ\ׇ!X6E@kwd÷i6hn^Jy>f 3={viɻgcwʝʹO_=<$i]N e3__ef)Rt8ٹ>I(bS ɬ[t@lƻq#ɚ^dۉkѽn:uB+s*)yaĜĔ7M9:۱1h<8i>;r](Fp\(3 ׄ>|y3Xm%Ċӏԗ9ƴ&wO1vxϑ0zb0L}5ٻ<t{RWWfġ,ǎņC=n{`+}}ȡo/)S<21O] >xB—@g.:3N.*#ٚmkffbg cN 'B7Hu/j:Scl U%-bvx2i>v{{'4<@ݰ%-n W[rÉ+yTߒ1Gr{b5%WSoL59}t"(Sf3{N#g>t6D7-agѐN`6=97<'Ә;돞pmђ%0A/U5xtD k|']1I;~frvNn;޳>yZRs9:,N쀬5nW:/ MH*u$vO931>5cf-(^tAa 3Ϝ>6{ s.^F\$5 ֘}TH1¹j",.}{p5Y̞r#TR!n:08qJc$8c$fJW=[˧`?619Y__Jpɇd(뉱/ewbcG'6>1aZGyXۺJ'~~~%rn<3M_ lk<dŖ+r(K}_9{^A91u\h<*mMn"Vܘl10~#I> 8 jdJꅠ]oJrqӟt V*[iG?97R9g+~cրc:^zs!0g+Wm1PEvnPʹ]~:–`K2j<}OꐱU/R+;e/Ĭ11_2<FM9}ٍI,]O{Yu#~v9>WɃٮt!~<甫?"s:d}qϑ6+_?\z()hu峦v:13Vk{~2Yˑ8I.3j[7;Mma5|] m=XT9h=. IDATgs2}3]6)FEyOf,25)ʝa Gȣtm~qfȡOhqE5^*>6|l/] Vc9 gq9#}$^(Ξ(]wm(My/'ny\H.~a%HpH^ 0!ֱ#>縪v3 }.SOh> qBWM{.܇XoPVR1]$lw{i˧O?\n qO6X~|Huv曓>93ߜ󲶹H11inLNmcn~bSJ]ߞ?K7ˉd﵇ֿ8[΂B"ǘןi9Ʀ\<35O5T7g|K 680xp M5:%f]rBm-͌PDJ1LQ}H 2&[8juC_7NҧNss5혹&(,)k݈80qdp9a1'JLDt0-}z?L]>Asκߐ,Nk%[拕>qQcuY3T7jMLiQ f𑶺0!#m q`i涜Q$su룩vs=Gƣ30GҤtM֟_)4+O>}-;4"\/#xϵnthY=q[9Rt+YnP v~^67Ӷ;@gI@xN]RDV79J7|=LžSх\}s)k6 ⷩ:bMf ̽qi+y`9X]71K>*xrg<ӿOՐ?9༪N^b3cJqY7}4'Xq}M\U1g}pü{2{3~ԼԪTrZ^I萻}q,k^n:25y,iȞ9py7#9k~5Wk/^̍jt fdոZ"lecU]LקY{3-LvQ{1j)ťw"F^wa7֜׻z9~';ϺyemqgW70u=^ޕ'p9>u*OI/0fu/|/`PrinyU!3@M2s%I#79yJ}љ7rR{h(=nȩ|23?Wʟ4͞NI\P 9;Cfɦ[\ԕuX$o $93n8o79*5]VrJ;MOX|MT}Mn ߈wiX[}挃9V&+8! STbhͬ_7}1ˤR\uc Rݖ#eȽ'ƘcMbmğ1k\ɗzs_yw\y=Os{mp]'NI ]~dngXI9/O|qɣo1k|lxk Z7>kV]|+aQWc&n] ?ny֢cv^PF"8COBq2U;ɺFZ ;kfou8jq`G(l!+g*B x{DH70w{~\8R^\{tӞ/~yZfEO!tHmeg|εS9W8gbTk x}{:8Yj='8AoB7D<Wx􅴁WG]a^XHX`Fa\훊zJo0 A͈7-ޜ(FtȣO<ۥ3'uC^;=\YW9!܌81ʽ&)LI\dǶӯ̛ezsuOѯ;N$Aȝ_rW~/+O3+[_Nur1q$7C& Wہ4v>C$C/qNGaR~EfU/ʷDZJmd#k݀k&Dt/,CȄsAS1{L%6j O xovd"uwLV|O&/ٲ_f>#'bǕk&”Oy.ܮW[c\ws^ OjMV4'=Bm+8<9="Qt7C>)-rq*_i I4ϋS#370ɭs6x 괎9B1z<“ @m^2yՍPW}Ưr^$GmLlW^Uu֬'D bl8vn7|P֨7r֞5usoF0_ٻV=adMzOy/v]}O.0Ťz39G >c簏:+ur#ޣ9JqHyU wԩ71 =}זyUOR v\v5 Ǽa/OhsKN ]c bH|Xز>cA`iĠo6;}$.39QK9-:qr Oc+ݹ(]K:)ҟ6.sjTЂL5mi. 9UL;qٺ0bzoC:m, )d)ss2 x<#(lU4Rgl^?c ճn@tM 嵫/`M އ{(jmu9bSr*Ldw_Us]9/`T۽˛I}+{ &e@{A3 _)G ]!=3DV)|u}eqC{s`D|;\r=Zq9W-P9^$~ZʝƻɩmD3حy`2~s_{eǿ0ѫ ZwKȜnjUkk-ⰎE.P/zӨ$x*Ǥ_X's\&NÐ#\Ks96cAco;~kҘԟ!mD`8{Ÿ=COyw[^R]rkgNr9)K[_rgc/eoyZܸd@,]fA y NNciߓý_Uv 0w>3+ߌe[k}I"I1zu&Ėwv{"ղD+ZՑ?|2z^k\:f$04¿g+pulrw:O̼ pT IV7_3ⲔINJ:N,c ~.Cݯc./$pyHlNkmO`跞 = yv-v5΂s-fu[I9!|k<4ԾSH&I>k\qkg :t+<1({^E˽)n\d"ީWBfnxt\O'.68%cKw3Xc=Z=^oa #/.eF(P>&pޔx#P=ceA/o1zS8܏jW#Y{7)g]K&=+nsѺ*7==Ys w 퍫(K)ʕ=xꀚrbN97I8!Ll4}"kvAP>{M^:c(1N7YZgr(Jq9+W:+,\@}>8Ďx48!$k>n0kY/8ΘGAm5'73m?|>Z03~Ч<R!k.=8o[W~OyO^6Lv:\_L=)n 8fG&N%"SOsMOΌ#.{,W[ퟎ?=|h=a^9zֵ5D-**&t힚r_Im:ucbʫ2 [Vef^G;ɗ 'e셺 _MC_H}8)dQR9CLSsgu'v'wgrɝr"u|%m`+OiSG<,4u삌u<`4Mrn0?je["e]\O ̣ɿ3cs-mpn9\tohFׯ\uz___y_Շ__kG}G=|G|<|~^綹_˿Ϯ~6o{Vuy5-s#7~7V-HŻfsmo}kob?5ȷ?>@Nao6GẀcp8rܩClN G|GtncsD9'3|Ʊӧ|-B̶"UKFYoYՕoCCva.-ҷSc=.#iWA1uVn@2JZ!I\ړKBKڞe [U27;}wtӕ K߽R_sŭL&8/ r\!ofwPn #%~l)gz楟؋F^nPr \#嶣S S½['=P崍=l<3Sr쫕As4>Ŏ#փD5 S94޻A4[;CBy=2G[?kro\M#4n](K>JrH8:w3 Dv>G>u^Ux/vڹnD咽{ wIHX4 ϹXנ2p}Urܩ8s7oWka6L>>$1cD~n8Cw;5u3rLZ9GCňPe8|A]7A M7Fo|T;y3Ǵ??oͿy?>|,z#Mc?>?>֍<%qnk؏Ϯ܇?'zc-= _E_7.߿n3++z\{O\ӇOԇ?o~nֿ׌c!'d_ lN1wYø>]zß33~~Ỿ뻚u OOu$ǃ}rk!֧}ڧ=?aE?kXӯyx;yqڳpkg '~'>|#|b;_tr>CÆcKǵm䌱Kξ3|rv;KJʘ}.pqVp S PwRLВ;3}5eg3gkR#H8={7lZۍqmY:{s㴶bHHQ՝9Rfz./cHO!3Kb$@[y|+eYw99j?1 ]n32O(DU\JhR~`.9ԡɹ^>VÉ k췘ty5 kӗz`p3|[ԹP>8K h] ѩ\'ۄIKv9Pw_9..SCpg}׾q0Jݖ2e0riK/Ǜ*sC?2VjQ2dVpQ͹F=kJr?\M3\ t3~dE%^_gMO6| ]M)6nҺr|֍72E \ r!qq3HٓG%u_3yqt:" U">`A0qyY9#Oӭ:?N n[_UlJjoo~s-uE0 OO\\+ӯtP^$ߦPgϳ?k,dzȫ>'zSfݷd^|䛾~G~?iMpB#f1gU>k&GbSO44LD?pfNu%k=ޘ]\v2{p%ș,?^NL0?c:<0ÍB +[ʍ9`${zεq^R'.f1/k/G/uuuJOY&J?"ޓ#ui;6RbYP5_C}ɻxʿp82}'̎Lvqc  Oв[μ>'P34֧4anGy^,HkENF@Я=( sF4uX'!&m}.)M8gJk4Nx#VJ,% {F]<)"7 {5#C -|t9Wc|%2L¯%I#TLm7#N$ǺdOkn=uቋg䑿.@Q7 ̗kA-녮xN;AN)k :7k/% $H{?p?сCZN(1X ӟ0fp);H6{O: `U\PN9)Vos5ߜ?Gnn!7B4T{_OKd p}\lְ~?߰~<8yy5_7ڐcb=':џ  lzƷ}۷wQɆ΃q>>?f|OJh1p~H 9عo\8 ,/w0$X Ɵ82WR&={K&emrC?Ϋ-6%\&֪2,ꯈ;Ww5(Y 祅<Ɉ-3Od3޾׳)=?K]R;ehҶt$|F`:E{,rAV^fWII:|b.J(@ȐGmbE=71+Гk8&4ЫJ1i}>1%r#gjשk{5v[>gQӖq}/-( Q5#_qJƑ@ٕ+S|ݿ>7oH2 ڷ%|pꫯr <&߁Ab@.s7b}xßY>pğ_PЏ%Rbg;~$䫿 \9aHni:ۼVp.*±|C4&/3 O|S\زkƙgG"DW^FXG+Y1찥u]h^J9d1!c6Mky3z3p{e! cFhi8b/]v^HuӉ35{ nsYI 3u`.Φ {]G) :b4w S:k3PGkWgo tLGt9%2/6i-9GdίkP$81˷SSN iڀ:#6E10C'xgS-9pτD><4¬n 2:ʴpTÐ(aZɽp}-n?}7b>*Hɪix Xm7 WyqQPzò"pbN<7|_k~M=7 7ӗq3̗;7$rc7<>|ٗ}Y6?{~{~w|!aç|ʧto9gk")4}8 oĸQG < 4{"Nw _鐗?3wꫯ>pŜ3B\~2aOy+}/us3~DyCN.1h8_ßsϫzMP;RWʫX3H=γO Gɣu!J֟l:BpMak=Oͱ+6{fĴ6CzԮm|3iWMn}OظVJCw>unocw烲g9 D&WVb'= zfte|?G~;p02|OhXBG+6-}: yGxIN{x< _>E)m^`q[,sy勒oLu"){q.yfku``w$1Jyހx:E]/=g5'Y&[!U/cx #&jOGɾ'SW&(Tig/ RK7^ sKYc|wFUڟNpkv]z:d2BrC=p8jG:vz'BN~_39n8b`%u޻m9W;ܶza]?ΰ\-XZ 0`k0k#m=Uz0@Q8$Wٙr+T)isj/^I5U*I%7i<зK1޴h\ s΍)o$rΗrs++w2'Z`_+?kj 7t0hH6EyL19I\tư>pɍ6_(ظ1!%_%*``M馍t۱Œ9.ƴ1SgMu1i$x7b)A#Օ]OkZ|G8\{~?uK|O]ڲ]O-2g[YsbaOI1IzSVlTܫk4K?.s9/WܷhюF_?)FKxmcO7B4#uD s4nI!qۏ)7edJ `hȐ╀чpk+`@cva:>Vt``La{] Ӂ?5_ʻ7k򮼫j{)-Yޖ2*|C8n[գ]يӈnSL_k֠NdnDI 16pP%T7$oQ-&tQys78bïگ=||t˿ ]Inx o>u_u-}F0]Z8mCm) W1W'yI=j^'ΦqLcJoME*9ԉ7aerUs/c{΄ óܽ@e 0-&Tڿ\UL\zPzP=}0 ?dū2?wy|Q>JW++ zW9}FM}]^1I[]e| ic*5t-p^!}ؔ{}ʋ?N\1rC;rFIRW("=h'Pԧ<*w_RY*rY\caPob'Sf''WKWR^{ՉuzJ8 NEֵ<7y _?XSRoSnFM^}~xO\[!M9|;7,.Hq$7ЇAX; ,O\pl4 WCgOJb`\gbɣ.䖗s_x;O#}ŏ/p\ J00OyϿȋT_\COqz=N4qP~Y}S^>@H$2u]pàqFcg(8z~k>W;> k#y'&Pals~eT[r>?R#>miv[AZJyUؽS OLJsb3Nπ6,u_nYDijqq +$@i1uL<ӿ)V .UM/U8 KGdr-B{I{eoeYCOaR >{״+ZJNMc] |Ӛ=SkPUA0&֎m֧K'f%=rL~LKm!ϓq-3H9uu"%L_58ẃYOsC̺cnsI#ml`v4TpL`.L6lE{ZrRk䲸,D[7^q(O5Jd;"2qJd7ސ@nLp;zI7up[rl@Nz G;$6?F}<܀P{o4 sAߕ_ȟv >)ol;·8;Y52M]1|l|"?}_A qlc$<'S̃?QyWΚ>{oJb(}@ M=swp c'Ux`"'Ǟ`ݓ \gTVWf>'L'/yc9[s _%@<Bx&w)\sJM6ON$=4Zkr4?a-ma' l͝^g;uK;}ޒ G[_,~DZD>؁zS4J1lrX1\織NO I9"wڃ#3zF1ncy(B[&d =#t+h HtfBJO4c[bJ:k\ p HR"<%sM֐MWxߡcB.P@RݟqM1U^ "O?N}E rr$*˗{5\Q3QJbwp2J,hxv~1ɵ4=ja.@xWJ<5c>Sq&ocꅑӬrH~-L T)β!:Nt$D4}g](Eç6f6 `΄W$kI^ dfH'7Nv/xˆoqsGq":M&'!'s_FOp Μ.l&7|j8cs0nt? g&?WcC>hǺ{887ݮ<rqm%X}GoƮK\?sY_v{z+{0kpG*@c:w'Ǹ2si^+sV[SpjIvkKgJݔHC369NWHjP Ҵf\LkcjqGO}iOm'iR'ML5;V9q ,>{,vF~}J%Xӫ<g8Z;@-W+3n -J9/An :hZ60LpKǤiێ0F0Juw܅e L#囹}n3 %\}Ɉߏ 9U! A3m$GX6RP/7 cjM ,,bxnz+vH|O?:7I8!JqY[1|}7|;ήM57F~@ _m$kA8|<2K<N}9j Cp|5 nFe,;ҺOl<=;ª65߰[qX*ҋv[[e`+p_q;tu3'=׾3z҇_hio|mn ! ;Ns>vϘ{+:8*O=s`;Ԏ4>:%Z_>YDJLx}kRRRףUd39i螉m#b$wNE"YֱU!~3ގ}[ȕBepy͡xLW*(uqGfG62!IyUPɧ #: IDAT,{#z.DƏb\Ix Z@qT^Pt}d ٦tyVLgԊc҄2cq0c,ۚ _;IKyˮ^e"r,H9$Ql>ڦ:g} y&ޚ8ޑun 795te8*/`gHU_vذޛKwnKinθJY[yx%n9Y?yho919 cy7YC~~$}~?6ߋ|<]8x( 8@rΟ=?7m/r]ǜ~\J`yƑl ևQmܹ!F{~p{/"ř+ 'ǎO:B+A]0>[QGe]Znۺr( "+었x><0 R0`!,xBA񀊂bE$ B>|tozGcYk&5F;n1xϜmW^;~`qqXX[ʕת>Nnzڝ2{kqoxTvjKp? (uvX5H{:sp1z1<q clo+FbKpi A8f?bFFA΀8I2n?1}ȬUymZ"9ϡQ16=DٙS5҅x&[zo~.y<3l #2O[dU,],9;ڳy>te |.KHtE9T^(A.= Ե@πx ;<׻( ;jѫVx|U#H{&)Qd3obi#Ӏ:,ͣ$糐Q1GX'PTK Zɵe#4VNTIY.^䀱!cCeYp΄gҀ%F`MIsi'oƆw9 A9 g7ЙnJssS7j|p{'7YHzbFanw vϠ/5KKݛ$OO>.G398Nޥ6裏;S#aۇL!߾y sf^bMyW//?e^2'y_*ϵ0&?kw`8o>2fks!1z!H:pY818+V)H߈1/”HT8Wo*5 yT\J:퉝R? Xce#|h3@<ˏ=kCǎo弻VLpbqْ>Ӈjgv1hrQikL#olvģ#qo۱jg}qנc|Db̎]~tziOS!նlܘ}7 $Lߑ?ɀ}**1k8_Y*z%{SB5n<cz4Dlo 8/J"xAN .Oc;1TM9.mq<=*ٝ~a\[4TNܙ6_?5{Q{4?{7;Ë^Iwk7FN?rPEicWS%>Fz颈2c^3b2xglÚkć"Wأ7{h?qw.#Nt8z~7<VI) JyO所|ʣ8R%W{'5F]c=g.rh[X9K PIz'̖K}Eׁ?bO{vO_jsy> c+8+5ݛ0{8$3`GBJ6t6xٟӵ jT:,3~fݟ$&޵:]+GwdLf#?΄bNe{-vEg{Gr-e㢩Eܦy(;` :u> uN^>Va)2sfԌ9 6}{KzS7]kȍ.7H~t Nʐrs[hы_hSB O>/+7F:|G}ww|1 E؋˽Djz,#KKe/_ .~r`6Aޥ'kۗ|Ȍad+sXE"jp>"??n>Bx1|kAM=dg=.|k+\;Ve|>w|QD3q.^AF!a~đWwΪ}p>Y`8;{_AhaX!phL>5#Jc]7.l6`1avb<ܻJ1FةcW2躹WNDnZ 0p0Rc:expevpB?1ُ>#o>DFR87s;N@ߎ/qV?wxua+"1N#2Q*>GKc $XKľ/jZv;~oWAgO!L+]P `pG<9S's*GΕV -3Ӝ;'ܴ5SnXʼû۸ʗ?Ф:JUpRZJ;J %$BO.8y 3g^5Ȅ2uAN/_g>Vcv W~S<"QFw>Ajs,H 9qX6y[asL7Lj 2GO@$d=Qd uQ.MSM% ?nLR~3(вRșn.q2r728׍Hq[m8o#|jq M|׼/N n0/hx ,p%-78>g~n郏J1_dl$q?NGj3'nM|<~ֻ#:v4kˋ opV+M-7yH}Qy(ӇH OQu'yOk.ܱgC,iMW_| 4u Z:1~xL8nS|GH&16~[h 52IϤySL5%1=c9;ψ5W;3AQedgL F΁?lVŽ5hc!02'E&_NYx'n(T&X"})w|BGJ8f;sM|putR)dd`y$?k=RGSk`NGzԙ<4;]HEa7{MIs)lnuGP϶Je&QaϙÚXtJa1㴙N^Sz,ǘxG*G[Gymͫx8jŷ.3 oizv3E_3g'ZeƱ:?lAxp~hB{uPGVorr M<[3@ F`+'見:kOs}9*'o\Mnݡcqjeb%N?|=X~ϗgB̑ {ɟɛ~o{L]~# <7 ^h7Foܜ>oo:7|O7_E{ofNW`kkK_b. rb#7s7mb6j'qkG:ЯnŊSf>5b]/49#&G-p9Qfl\Yy>u>d|/|'1~ k _TCxlj9k=Wq' ӛYK/[. _mlzl ]uf= PTJ5-kXMCS\/0b+v[XB5HN&ɗOg#s4|:0`TKL5<=/XTo ïաٝThq si:'ֈ5kC;gNXQCF̏s(=ة/& O:#Fd3w񨮄򽖃ἕû;dʼZG$f]Ho8Ql%pΫ;i\䱡 sg>/ !Co iՂ @d/Ҙ$xOC-xZ< >L;5j5AN-'д5"e{<ٙj#^ Y ā/J,7M,o#NIͺp l\.s߰ 7漽f~+MM7rkkw>r67|āwL 3a.~}HO8^ k@N;$[+^ u^adv]OGw80Ƒl%8dSb)cwYk@ )ؙ=RϜSROفms\ɱGo̷Xv$`P_pKK4] >@ <O˗)'NWEܡSwo?1u=vf\)`q?8fuz&^k׳B$,,'~cJ'uSkwKp%W|đqd\a=O|Q_ō EOZ~c8OFeds$&uvJDzc v[u^G<Է,r@t {([am@Ibߡ2bb{-~1F ʚo%<!NgKЃuSz.2[xR)c>g CS>ES)8S7䚫fG{|n^g>$qw:>9FhБv:SU=70tdT$$@H3KPy`(7lRȆt\dl#a>uZFv,7m| oS/8 t|nx'/2V~! |=`pY|^?-;~xٟ7??/lO(j{>˿f#|72A} xWk@}Gl $56+~aYoz yēM}3#g]#vӶKN~槤G|wsoV%?sAO |%c_i- ^Lav^8蕑XH9-w4W7N|6mqa㇈y^ƙ w N ^׫1O1Jx|@8&57뭨!ⅅI4PH:<**jj`:6]{t ړlOğĀ?;WsEJoI:Rn'jsƐl/Lj&ncѻ{+F 8H{Jl9X9-L)XO ?$Zt7[E ]M?|e{>wQzd.rKX,%IZ/8'yzh%lK!'Bۑj`=r6}ؗ0\JYi'v鹰KQ^O Nt<:BGϳ11mA+5a! \98R\K] Z;١zВk&ֵQsj#0=BIu+3qk 3]zg @ 1،nrr脄Z[YP}O5d%{iC7 aȅLe÷ Zi hGީN|d^m;\ oH7,>2GnN?3?OO|}]̂3^X;35+ ް{K|$ ny:np~'1Ń~Sw~wE ƍ=!`r#Ow^*>omGb1$ ?v[G޻6Ξ_8qxk׋a=8в e9q[ Nn\aG{$kCNv%ib3=O "1ԧ$GkR@L_!se` ?m[$N{O>sôC2xRo[e."!C 4w<阜[=8 (۴xڍӰRmnSfyZsǝdw$UN\9WB`8qEc=o;2՜=w.|=||遧}$1ck7+<1< ngD=cg+8f}=q0-õs~ݸjJG`Ҍ_ +޵Y C?MmP%2HF s&9sX}|+YT\Nbh1L:d 将zr-&󤩞C/45 LCxg&$At3!+* 1vPGָ]PpTN'Y`֡S¨v: UT{`98ƍO|}ߛ__l qx8rM?ufȇxw3ȁ$wFp3 =\6>n 뿾~ ?>O@ zHF|nC<~^o}ܤ_%1pi{6iju[xm_c__j N}‹;~$s@G%˳{/^@5?b9XS) IDAT[ /#śe=}|'Zx] &ൡ]q02c0Ԛ꘡αeƀ59a!ޕbn"l N#:8ҟxuda2Ti̜pv>shPc%V#y'uv1gv l>;Z9S(`5}̧pמ:s[<=M))PIG;s<`vuP6s19xnlhQgpfKO-'~zMpZ4G]fF&Al.v~1aБm#!״{ $&C9%?-{#,&[̺Y{ոRfv.F1a IOF IS9uLrğ9ה2Ob6-*VGV K70щufvMqj=q lV-c5`=Z<=.5b3Lj~~EU 2LIݛ}`/3of}~1#M{|[u>;'OcRn%/`po^dެMu~+'fn~z7Xs7H|Hpb'^>A:XR`ݮrEwP`op P =5?1o#f`p3~^'|˷|zWFֲOh'.OM|bҟ S};Ë qb)-q]t1G #99 0]+5]zqX0E u;(9Ϸ',3!EJK@"s5 z`:3R;LL۸5`R7F&5uWV܉f#=g苼v\7ex/ŷ!,W~|VJOxqv2WfdlJsc^5<9ٳ8Km삅T>VƄOWv}*a}l֩d9ff$e;*5#IkU.mS\;9{N10itFԇ *\=Gˤw^g;܎ C jRkrn뫽1y'{*l`l36afp [Xq8ܿ9Gj4|*UyU'4&G|l3ӽs~А@JC-Ω﮺YYLt~b^!u6bҺ5V/v%>f~7,q1'wu~ *s;F9ӟ'~YrRg>&~xK/~DŽa~l| ͭn{Ł8<8wOYRǹ>̓qC<&:ȣ.s {!a. ^T!ސ=|I}w@ȋGL/ư~#p9ּ##b%`p 4X.9ēZsʜԉS/^b^Υ?//;Y?sӇT'a ֙5\;}Y!ORg%VR-Щc WbC9+1&<ʁAo=Ms;?IT'W7bXFHk%=QqA8Dɘz?s-Xe_[#{|RBz$W~CB 3Ż.ᶐF{|F@92~_a%b+0T~VO'-=]H#74Dxc3Txzg{ҏJ&p8lknԕ4GVZ0P[_K R~aػp|o_Y`Pv=g6'XHp7ںvNʙ;!L2W@9S: `WFcb"Jgu;jӔkd=>)uķc")3 =0VzԵ>fᚩmn}Y} DZ?/7߾_OO;ɟAX G[˽Sɚ)c\TjƗĢg]uql[!s}?y~'~͗ww|XV."c8_V;\&;l2dWڋ` )?kƓ|R1Ӡ][AxσkF-lZשn?eWRB_-g^N|lZJ74%[^t.W=Ku=&͟qGhO"aDwW٫uJ~5kvǦUUuEJ`xN OF~<:mlGtrrBOGTs u4΋5fc$t#DQ4G]Gڠ?ﯹ+Zҳmqc݌S}߅[ ~ISx^@?|7_yGo7{x0ۗAiMduzzl'eQӺ)8m 7\{xq;~bY7F-[Ɔ˥M7e%'陛)|kWO],>or$.ޛss4NʛcZ>#G^tuI^`bϜG?xVor{)וcз!{#/~X} l­keq_?ՃK4ijSʎ,<>gμes2W5/WXmֹS)JUQnocG^rT^ \7Q\NڏesNSx7v; ~ϙ]۞}9YzOƿPdi(SWWn'1uTMeLTs'+5<|7]a:y@gL&Jk^yRU`)׳N]~Ɣ'|)ϐ8azm\^J-,׶i`$ 0)GF"x^IRLn9yNI[:W-I(% #v3 M;SR;u^ !)-L2L]gaM~b᢮Zm'Cᛡ HNt9qwFk7H8PwKB9r^ ;8oB>qRM|$K:Fݒį[|+wa3;YlǾ9U"kN;@Fڸ籯0mh=>ٷ&8S㰆fl}dj [=0sXٸ%UǢs7 2[ e|sbK.tL`d9Juͮa=84Oa^Sr[J*9O<'}fэg\5Ť󉥏z3\k4r#2NO_(Ϝ䴶R.r{C|Jsɱ#qe>v_U'1:bɧzKxٸtZpkI4\_y 8 e]|C'p@}o6vmޖ^Wx%.2U|Թ@$1|I6Ùf=Lk'X?%J>Np*{Q>(=N#1L13XI|w&ܫ#9ONߧWOs).<yO:؏b{ l3]SXO#<>s3i]׫Wӱ>^%rDWZ)M[8O{p]f]H?hmۘ&k=ԍp/$2Ɵ1 +Fy8*bau!ozˆ=3 -Ky$SFsNVNqA}vSEkuhʵ>VV!K{ 6\~Q|PE A^oӵ&٤bׁQo'~u ,Dn#ԃ N뫹5 r2>skidĤ}ɑuL3nCy#va#?+>J11{%6jdɉ}ŇO~q[Kym)Wb?\|O=s^`$x9FPR!.um|p\6MCRQ׾w(iO#qcM|1L^ .TʗkdN:?Hms]rDZ ^*i+]-5,M[5,IuS͊ٻ]T m6RpFŵ?V=`3nk ͜гȬMGC%u/AIYk뜯~z PLBk%du>6g=vgJ=YjemqR1=y \۸w}*\J<ػTz՟}8cʌn>js'ɳH.ɿ볞>oGPN9zJo?V Qڡ(IӚ5<ڟIFRb}=tI{6xN43XLg< [@UiJM_ƱQN0Dxϐ7&OB眣LmX8+?)2igЭo8Q ؽ)b.ZOfa/as$yO0*%7}ʅ33!Iv8r861v{8fpa3Y xv;J2K'\<͔ٛ7#9Ɔ1zX<˩RYK:y#yo1+?oJ̈'2A.K=xr<1dng6߸y7g+!vbӗ:r#۫j}ݗ'(Xa.G.8r&GIN7nu6ՋLTՆ J=Z vqunl͞JEPK}۞CYDvOz w{fWU8!FYu%+ܿz_X,2ﵹ=IcuL>l7\G\ү}N\_:KM]PkaX~r6`D@ڹfw#}f݇5u-gkx-3>j$a{:O3h/Y8)WZhLI5׮e4M8Ƽ\K)15i|ȥ:͑vGm2$~4\t*w0QmfMo} 7fZ#K=n6] _)298:R$>Ho{G39ܼ7¥ήPM8?cMa}e!b5Zr? x-ĊGN, ɛ7A_/KXN|')3~}om>fpn`ċ6?1鳞cWe'=d vtZNڦI#3ʊyNܔLv='|Z_xbcBXzSNS y|ww`~g!ctm[Җeq>/tjՍd]sb?ݷh^{r^sT#(_uT&[!1Fq?s3͹cV{V:?[v`.`"p=L<ԶAhB\Mh;vyJ09+^+ɷlq#m@k&G&N|0w5JRf^1s*qVݶUfOt|Kܿ Vg/Oj7vkg . du'߉)G'bOØfggxA/XZ5즯@ǐ `/6-yzxJm݅@' mfx. &W[33^ug[l˵I?C)~cw^l's\TSus*+蜛kQ ?<&rӜ/q{Q@z-mē=Z5`wOy\5VC>'m4{9nh8zq;N7|8労7l/fMyLNPgJLCC'rgrS>ZZOctr-Fӟs{οٯ\=/:т)ceOr탢"&|º 7 _W"e±75۳q?m18GCN̋ug$'zCP{p0;Rvv}|)C B4p>tv%?2Y9(Y4]ؙ5S͟}ePr }c2hu9ħ 6 ԕ|Rr`urcx-` ~)[ &'?^a/+ qSOĥ_]݆ q;.b=gcg-)u]0ܼ?s[@1x~x՟]gOힱN{l5T'1Q}s=- [ײ%Wm9L>~:f~۵Ӷx,PGkѐ$XIͿ¿x [V<\Uuu\=G7{[u u3뢧Mg*.tdz%ofh|=ǜr>cF1C.g++ $e\f k I[&WnaR?X|8 oq 9$O4޴I=Me~ocbnt6tIKf9(3N`$mG꘷dEoc-Fܓ)cKЍXVfl_*uVc.38=ҁ8Zg@R.e~:惞!W]_.1䪯b]9)yf~y vϜ=&o1#Ϳ171İw2!yugܔwC.%vo~\{ C!&g͏>l(= 4̉l-0jamp u7@>?(hm~5 dZxbFG.Tm |B zdmYӷt[{'p=b<Okj O&ӹNLWy4恠|g3uq~xFJj6 ~{Hvh\K\= hִ;=++U6@qz곡 +NIR׶hUϒBݿ3&Df.R@ v<{;ob#j8Ne}t70WnhA\|U7vi\͓~s4GNs7ˬ]kL|9FgK;lbǾw>mkvJ=g+8nG{ßɏ0/c y/ܴbyiu'&G􍂇_rD^ 6}ZDPPlT\rB&NI_r`At`Np律Y䡏=E~Q7&64[,=S_ǖ=m9NT~6'緎'Sωe S-}%W~ͻ½7^&m7;ٓ4r9#lZ;QbLk; oY}73N;eN R'טe(7O$.G*_-Sӷ M4rf }1_Ց \7mp&sT^EGc`LSM"rQ<:GIk t.- ZR: 珏?QVpw˥ORc\x|/RQVԓ;etwE:.Djg歴ck"9 \p 8`'o 9TWʕ[0:/60?慇?>1=s#ՉLK]\.dbľ[uO?-;6b^3ش|(126<{Qʁ}Wez痓b/_i [^yȯm]ZGx0s'3w`Zr]ϔ90$۞(l 8X-ej?Sk5gˆ / {\ vc:9#Z;Iֺ$4?.7R荨]GJicE0ُXc/Ɯ]~w9$L>hjk*,S9:%܊\.V32yî[(aAd,%0k9Yg/Gr rGc~c W=<0ݿ{{=d^;:1w<ǟI W|5~~6yI̡2o01Ofzx /aꦆXb+qwbwI>yC5Ike#O&Wú;0l='R.d/.I;N[iRlĘc,sׯ-WJ1S__ɱ!x=z?3V95/6270Гv?^w, -EC=qe'dͧ{Bcu+9Z <~,3 RZ39Cwvb I} xW]yղ Ť7&s5.~+w8ys̞8oSNƝ /ֵYS]c%7^6['*:Eǫ7J$vxn{l;\_[»ēClW)IB׾ph7iK|WK%<%icKa-ԣ8+7uA0a"(R8ywbNf+)fN$#ФlÑ<\;R}cpv]=/òE%w3mgJf#I4f\zGbsmW\&r{GÑ,ĜCpU|ӟw֜[,7 6.sܥn?s914/q٪|t<ۋ`I)dᴍ~}'sL38k'U멎ul"3|&p9OBȔ9\5FKT3ԥTq3z&H6ӵj_d3t3VɥD`x!ֶ3aIZt8Es9ywC|Lʹ;sV69FIqH9lwJSU&&sti.R8(r?[-69N|%Ŭ5д$wѵB:%gαi[{~p}켉H|\gNgg֗3'>6n-eB.}\bݥyޱ#~gS\zFyz3Wng^R7݁S*8gH^ P}'YACy%uzYkZI \\אn5F '{` Ov<8<| \r9\Nk:BƗr!BC_DR=Hk qz2LR-L=O71hN'C)Iٱ <#؝-5K5^&f͈&Mk#'T.{5|'s`/ zgOMR=sb/+֘m1EYD$Y s<`sphyk {Ih~IckS'ZCHg#}εs@u)Rrb 0Slr;~RcB{Ga'܄|8פHYN&&ވ[a5704JwܜܩVGB#g.qsQM[FfaȌ'Qly=71榏G{&#s#Ӈn.:cw9$>uĨ+~`pK56ك\ĦOf _S'F7O[<ƕK|3߸?yX=k|A=_)cKüp9-[ȧ|{ӚH9G˽O3VF(5z\WiO.iܢ+hs-Yke߹ 8I"GCc){Hpl-O93$>bJs8ڦ~m>4fPK8!I؈;_vwx8lc w¢3ډ;kO@ ?8l v5ӌ5Uk6\7{3* 2 LjJDŽ`z`(p5||q_mDp y =u!3qȱBך>.GSAirkXY$6V$L"@BFLIuLlfrCJ7xH OdVu v̶|As~j:6kL3{*Ԩcb̀^,yQLvF8*6),ʜ@s1>sN}d\JcQ'k%Nʯ/ȡY7c.ؕc_HӇ~v>a zb3O܎yfb|Ɛ{>!~9uvɓ/jQ}?k9>+VzLuːgJyPBV.YIH.PB .l@ 8vLEqݚ٫ #:t1b^ʑq'1qx&_,O)MovX6G#N`|*'[R3GxĤr6z73L=r9+|51mo3"+b 4)SV??{?R\?Qc:sʀtrڛznӷô: IDATUKB]y?'ϔrn&6f5DN+{5 TW59xjGbѵh= uZ8x dN+`ֿmx*qzO'cLwQYs^oNRK ޕAJO\IG3i=Eޜ'}bJv;fC˷xk,X+m>TG#fhP)Ӭ5ܜԫ^rShGވ[ޠ%7wuҏg2{+{KGǎ#r9i\2?Óȁ r+3G2cWy ʗ~%k Nr;k-ViN_`?/!)ei\.L ѽ>oߔpjHiw]~]:,y ^#Q+"igkK9ל]rb5u߱cb˙;A [k0-+kKMD&8Ro? x^SQu券C)dF[yz<~bԣV{RyJׄ+'3'7 *2\Cf`K"_B:u>ʣ֭kz}t"'pYnuҧ}*^wnGWjٟ1P_dNGKi[q@3XMf} 9cEZQ YBAUD(u|kkB+:+FӄM,68k959hwNƪ%z 9b@T:Lp` [jGOnWq|ԅYp7Cfo`NA7<:YncWE gx3;v|g Jv:>mpl[swǽ&n+Y݌O[)N_dpȗ֋N|b5/E5CN;5j2P -U`\CR CB:MD^SͺvI/|Ur'1ȡȴ{Y˖ YI,٘ J"ȣ ;L_K5u:=>`󌉝8ux'߬Y>OJ"gm @3E4xRv)pt-h TfA^"~-cJ; }{q-$nÔo1"G-LMpeѣ?njL:* {QXafJzѦ99Egfz3a>D;M$ɒ+=}ʬF-pE,| #$G!)$8 tV{nI깦v#"0ݎ{@k^)-E_8LL퐽s:F8wˊ:̺ics-Wi-sL'=7W`OZh`;{3_%Mac]ku"p' `MB`F~a5 |E/F)!׋l 1ܕfj7pr]?uIs4I *3᲎_jfٿa SòdΎZwrӱ.C 9kqw\>Kt Usc3"3e帀u^n8d e|jX^şzM+SsR뉾9W봾bAYd^Cs GmfCqPw]~8Ry8h3~^oBjb;`/^$#/XbLd(Mt8@AK &^c;*scsSb915XqIS)ibv }X<1EՒ 8tåLџsǓ4WB_~<^`aK}QpvN5{S1cʚDjJa2m2pGlUݹMܔIn3KQ"maT]+& g9TT0Ah_-Ԑ'ܔV{GO 3׍x<Ě24%7b1Q\q8:,` WVu;G׍ R!<{"|BPr\lyHb" xQU}04QW/hL66Qىu)90Ȑ`!ly2.@NqbCc:q1c˸Cӓ9=1v/6zgs4mqݶܛuj2w{ҽ>{{|=f.VzsTï..t}ϩ)p  !N̯3 LjGrv&~U wIR}0%zݮq PHش<&lc&!,r7|yM؋u_qKGgXv'v`M֮"fWM Zdp'1۲s~.ܝ/~WR/~6erTrK&rAgWb~'7:7G=!3/e6|a=xN}\IsaJ9lr?u 1S`Ou^糿`{xWýXuPt%q>z=c~-ݣϵ1G:n^}^'O,SNg] O u~r\XM}nW14GdvknԊXM+l8Ktj0ZCLyI"eL }`^W,Z{dس0N0AÁf̬:9g:Х9ߥcH稁 q{뎿<s}]:nyc/yoOuN'OZVuU1TG 1l`'C9 _Cƫ{?"|Z׻.jN25'<"U@RE:ΘS^S܀X$D2\>Q/Tloe=!)\gH(s{ 7snc^/W?~5*^d!:!+{p&M\T >b `g9k{I կwʡ>'i/N>nob 1iM*qGN'78n2ˎwkɎ?`gOeyu ,{~K['~^)rwCH3e${Vmc^=H.?@CA.&7u"FUM7ucj+D*vs}Q%FIĦGc;G/y[N\}Rq$!kX%u@y6܎{/-=#&tX[Gx7I mr 2ay'dbB z\RЪs4Ő'ӧi5\"&0~`qnk&#- %D7J%P%sܖ\!;t¡/֋p+%bL@8y &glq`;ni Tqb8k>w"Ҍ I!SBXWez:yǸ`=OoSS1Sy=Fο_׵}Wk?n( _ Xݡᜳg) Iy9gep vsG]pʿn%\fCu(MD-5ɑSQ;8o}˖9>TݗkQ9߻1{)E7/v+:WICm٠Z5CQϣJɿk J[ {ԥhl'a ٍdx-\ԒoXuS붟y3].mN5!koЉCh=0`.<5\c'58H E+)OhXI;vFIIu4P\^1䘟z- aΉ%8r4>:/>A2t匃zDƉq>wPn֗fǸ= ^N\lǾOqsp/\#1gu9;㮢_G W_PɶdqУ,daݱw}$1s;űs=fn| "Mv08:IRGs>|X2K}=ˌDC&/Y1}>Uv(]B:x>s0yH-2Iku ^O7,=ӑit X*-%621 $fa_qRN2=g49y _~b`xsWk>dkL٩#X),knl_w@XCռ)D=qC.adtQ=wx >r1OdE2 v~@G(Jbou䭵{V{w8^B*}%N">:=u8яjUM]%bMIwK=@CM0dEiE2znOmAagzGImUb* MF 5SZ 8rݣ&u#~uh`|}_Xǒ{jeVss]KFZw̅c{849>0ܶ3qm3נ/vmg<=ḥq0~=gc7>9~f{dݸxsYi<>o3 ?4γ'7|OB3q L4uz .(0-d}`wqdW[]ݓ 6 ^ *jg@DRYYUH\ɻGΧ l90\W\:6qV_CL1%ӗg6%~#-5 Ptuz)h@`'񪆳TN]MMc=s~TT1Dw+:&>\<]'!=?t|EFrcWн[v^pU1p_җ ɣX Rj$|n.O>[~/R4jt`]A>/nm&)Ub`=7JR0 -Hߘ[`U?`شJxfiPx'38*:>5Q^*-C85nr3IsE"Յd!Ku\/ZPE|*$sw*#+\Z-, WV&D_\£t|]Ob-׹QCs3+u%ސ)tep/>_8{">!Vjqt4HXoK`'aHBCGCwi!chNLjiXL3S\טA*.49\{:*?RvFcZ2sZdt5ޒL5"Cx"V)d| s`8=ˠ6Nzc#)8:upS>,{^n\ iMkAv|:*ԩL!i|qkZl3ЊLdžُůWs&Tm({o@W4guxO91fhp6Ҿ|y-ڀsQVfKpϏ1g97BfdMRXp5-%CCkn 4 l8!FtbgYi.&]bE3U_|GBo}nϬ"3Ci>h1evp0D n*8DL9; LAWk\QJtWoXFFa|Z _R ppm'xܻ{[ Vz kиC@է*UOWD ~>rybɽ S= 7G]s4w#~*K7{ f.POjae+O˫yDžUa`BMEpM >d _,^"o뀛7aPba0Š9ԜY t)~zhvy21c H:~DL0xZ[jNuK[35G3?5}OAofZ< gog-e;YL}yT',eB#/0 9gY$ʴ,#++2y9ʭy3ߋqܯN\ ;]^\ןXxq'x5Ƶu. ⊃ּ8"Ke&~եoJu8GÝ)tͲSmʮr'g͊61V)wk{TcNK,^>yԜ4k0GB,alۏt̤HBfg5b{S(fvڐw.9I9=V:KIz IDATP`ICa̝qǤ9p:ң _$MܝOtNv>nmgacKY.AY.q}϶ߔ,R*1p;/|>wc@ϺkNP)+|œp ӓ]gA-6.C*dmvrN|1cE2Wz} 6sbO#xUhI==_SVB]٥'0N !3yJpƯ]Փ'uk)n9u(8i~sN|/JhʩyaoGb ~W[!cggIjuW?pOb$|! Н̢Ł=q)qldk͊y@hR"%7;7}/0 /)l_SpPTqČ/t3 E`\(Qo #] r94󧱠> n*Vx{~Zq-yT-ݰfrb_]ŅU.Hp<\K1._-7nQgw7 "h<)YZ'ݰ~taH/46-1\|BtkǼ聇ߗps!ٸ^U\^_k͵t/7;jMe]O4c܊.Dbqvs}s9ρWonFzv\Cic$ fjG>8Ǐ0WZquuFBTscQlAw}:豓Ƥ"+\y'$L;:yWŘG.o~m|O1l[@3")8"\tK-iM^gJh\ { 3:6tu:pyzh푙D}jŝUo:E*?\ 9cSύtu~29D*e1B+Nqi_-lkmX:aHMSdVˣ08\~ÑqIi2N4_\պ|NVQ ̣堛Ҳzve׫+]ۥs89>GWQVz~>=Ud~$J$$xw1K|h$vX%*ZxƎuћK*iV"O.w KV a:y,.>qtw4pR∋)]h%X^@ /4!"xaN\\LtQO uG]./nM*h7`qżf (}|n*?XMϋ, }1pO!Iacѽ.BW͈:Z/ا⊋Аy#|졺 Ev"F kN?//aȚs|MC؈y 'mλxԂѻ z--7r9G&H_t??D78GC9 !)xDŽpߌw6p 7nE.k<}8ƞq[sΨ~BݛyV/_~V/Yx\w^h.Q/GQoskCTԁΉxZaWvF8:C?*)k(&]:sOmѢ6\D1Wb^N'E5\G)ψ~]w؟б3`QƙvX:8zzk޴}ȁ7Io5?zx@ng0Bin>$edILfȚ=}'TrXW|ek9?j rmLq9F~ow̻dUMJG97v7alamǥ1eK` qnV}mV;[4=pe>GY?˓H=5%nJvSf]sՀP8o nQcj]GDt$ ѻ{u-1ދoN*OzS)=T}Ix(B3 UCQUV\GpcjvGX'd\$q|Ë ͨ`H(~ .".OJ$˵̹o.yƥ'K[ި2ю/XVbpékx[s'y2.,E\t$747z=g3u j%sf`xAԹ޼ꁺ`sO= $%d.1?s /;7Ӯ5`#VXknPG͟jG[0H0-]꬘z~6Ѻrk܄Pw52'ŝ[q)$ֻΥ?!f?d`ʈnz2gCZc![7jY~Nk[oDus5=8y(Oz#Kєnn[o(rS_#2i$%1W9§5 4l/醺z+1wӫPgX6dJ-Vi@Pjwn dĄ<װ&׹Q 7b(w-(u+X÷;k۳n۹ߐtiӭO`uRMot?m 4۵B V#R|v% B:>''sE-TOTe h|0x^r4Qȃql_e1ik3$2tu& B8;|\kr%^#((5bCAij_UdrzOwL uBW=8+@uEd7\y!߀*K1|Gۺ`E)UHxm/,VqFX..o's"P$]tuї. `R|"vIu<a+ME9urAq>r=epf@=\v5Μ&=Ɨs6j<=q.4ᕓ;Bsz3ysBq]=nTTNjNp]$&2s!N|1L:(9p9BèԫwV(O5'59E +PcǿYoȁxꅮ.=j^P %^> [ziHaD&3lȁ<=j&7o- L8A(Z>PS{n-Sm.lj N;rֆ}T*\R?~~*q$ȏ :6&сP}DDžowlzPs2WuaBt*ByS_k1.Wzy~:r\u"gFymg0{>J[u*"<`y߾boEczO .ν~G4 υcwd`͕5A~B 1؜^7!B,K?7?+E|'՗Z=`6|q$@kHb{qfE~ܩu5E՜VѠw2DcT:kݱv<ު6xq>37WF'l;صb|1l#U'5r{61~u!Gru ؑ.#:Ṯknvȱ(Ueu+{X-R'.Icƕ4gʫ5(-}q}<KCdN7fpYєZ-kjh3܎ J;ٓ yZT_GB&,;7BՔ{Ӽ*:~VwO׊9e$vZ808x5~6{T]gY=Hw]~DxE>#qFZFuy9㜪&m(X{b oab5kx\dәnG3,MsY7RԮQU6؈uy|T愷s։=fYkˬhrEPxk_q:Mg Ǫ&A"<ĕI-<=w>o?z!_gsz=>Z|:<3my(A6o[-#OLUG'?(OAX8| _/q_n%p)I~8ap X„;ɪ,5DK-jpW/_\s"8 2BisA-u3{NJyQIwwݢt'a:Rb0UDs3\rzQzY~#Eq$^6LUz'\ y2!a=gX'kIh8hk't}VM}(HmU=rec% 朸R5S`s:fsaf1W2cɆ<΃UNJtX}x;ҷF%)iU39#ƑEvcJ{1wlO߄9]+HGK#cMtAmd ?Vݖ]*f>-{߮dlѐ>9- ;LDNpyǀfps,Km(\{v%զq>D87ka\"c%ܐ}IE!n,482<##jfp6%X<M礃qkWeYwbs/ |Uk$ 3_O%&$K 4€w3|##qYϭd0xq BA._5_E.ˎyn>P= "GQQ qoROsInAz=TB,3›)FaRFtS;9\&:Q˟9(TH.MTy5/_IRY>-A\#b 0>~b5F@DŨ7uQHrTlt 8ܠ򰏵p>R4J&_wlZ$XIo.>`wA[h娧@B A%N۵5b5#j9N:GH `#9sPOټP +W~{Yzt Is*Y%'f5*Z8+W5bṋ׫(_ګV%LQ:!l&m|O~~"H?fIMx,=Fgc5~/8Ϲmy[R8+7 H(\O!sF^Ȍ,:ğ;U~=׫gU,;~8?[qG͂\ω }ӧjjc,A%)1'GiƪrںHR^Z׉ĎXQfr0.2YR0.X{@ӝiw(/r7P+4D 1D/:)_28FnYD6n,3幜VU/jy]HqZyUDTS]|;꯾a*KiУ{uIR/ɸœ=k")6uG޲ge Tpm"KS:%ʛ jY&k*]u^ŧdUҪ<-ű iUk=G.ͮtK@Fjb]8h=t :58}#6ΛM-uPIً1Pxb{1O.1Y8w{|i̶OY~6^seMh]Ŷ~K|uǯ)G 0cTMVZQdDX6|vK]U'ydSyHS8~sZ{7Lw_a(<ȜVZG i̥0Ne&@,-yYd{qFtƼG}w͜Ö;#r/r[eO؍tb8^v"\ $iո$%xr9t9U_>\תg/W+{q\nqש|}s[2CcT{S\Ϙ`ԫQ Ԧh0ۇAPhɪ'r4$x]tk?OJ>9'/g_l9 j}|~(%GqjMo}{wu"? U1Wh񠩼x6Z{ʭn$qnkzj೗8ʕ%8j5"L>z{8ǑkwkMZn%D 5sMǨ5T_ӅQ[ QzAO}k+ιQgf *4ּVhijYQ :Գ222r5 4αĨ}/=r$+P6t8ӝ<^k|H8]g'seܑ pу["A=ܰ$A02\x X{uٽҽ@8E q.){dن20,ᢆ$ ǪyG qMʥ 5q ?9ת~7:Qgх|X[o}r_;{7~PL/ѹQXצIz|(k[VBQ_tc a?|Ogb9&2m]&-k l=G%WDN#14$~B%?;o?rA"q.dp!*>p.f_|wnd;W8Im-uH)k3{'-]' Nseƌ6^~Utŵr~SCC.q9sϠIN>'AV_jľ.7֨Ś}[`&mpkv&Iw\wtB9W:ُs93TmIS6As|EP8= %eĜ: *Gğe/I5EM{Gy8U,{kPZ"/Gy|y7.U7DKoX}B9_nuk%[/?εfz,u%a//f/e:?K|9l䦞>nljzM`|޽<-d N66z ˓\,̃zO8<b9,gqV9z.sW)~>c:<†A `PR*s;SI8\uPM P%.ȉo0<r ݐR976V= ԈySNJk?¥Ũ9 YeD+jޏppDһVMXCV]n*ը2^̾"MO)Ge"'ӣk0ב~̯9VZΟ5o[Qخ6 $s \N%zb:o@ |pȶ2jolAUzDZP+쌞&s_6ԝ ģh׺35цuGH?Kwo tèǞmgߌ=|w< f6%Ϟm?VPB9X'aˎ8hQUoc iYWu}So&“ߟ9i<M0 㵞S( _cZ{30Nsz MJy87~ saND|}$^zB  1C'P7)Mp4rH0}oНS~n,/26ُjy>g;ODg\~q|̕= o{R|u OiTJ]mJM CF**T-T 㹮lފ!0(k%:Mp13jO@Ӧ̚sC:I:jc&6%DBKJÃyz)8w3Zf.P3a֩ڑ/pcNu1CM~)i"(@˳{G7̄a\@䀀xŮ^ZiIc^߳*.xqͮ7^+*Grw֌\w+Ksb'S/H݄zOFw_zt!fU*]+ނ**-3d)c>5:1;Kc@)eFgln{c>kݱj-oCmFٚmOK{˭9:x+-wח̬^CW({?571]1zx?_ˋR?d|Л}r;~}ے?~8;;[^<r7).z烋xg|y?X~7 F_jNMK~%0;5Zș"1NcBZD&;T,+D_r[EzOHg_||W|Fw^lν{{w,^ܹ܍/b0\.n,g˭6W_XȺ|wAO?~ɯ km^x<^Ԑutֵ6J 9t +ތh'i8K3ʉ5n(kCއo!͝TBfهנ qAp"”&_8qb_wn9Uq8رpC9!W9ÍxeWoyN|c~Ex[7in߸Xne|sw_,/^^,Ηq,䳸VϗgTw'_Df1k]$2=uҗ̽q뼣U$O~.'4YX1q(5an*<_/O'ʄ8#n\x덇˛Cn0ܻF߿*7cӰ}IlRΖY>xoy 哟}l`WW+&A&zܔ`Up"3 L GQ <.3({T{} n ;t ECU$߻!i*=+r' 8._89܃% 瞾{#} n+) dargowGyĜ\juZs,YWC.Eq'sn!@wRØfn;?qQͅopFTvhqC5 "#+i5p捵م3얹 YcpQא^R64Yg}Npרz3hG_^,?6ȡ}huHw=liR Ge{ǚ,>]qcL?|d[t^ i_tcW9V68NˀAX|X,ǑzLc%egK{1g%Taϕ!g>O)RNs0wbȼY*|N$>s(Ϩ IP4; IG&m^Imц3r{l 9W+z 5]Jz#m,Bw֑+1Su.#L?/Ͼ/xg~]?og> ~wxÝnLxtby7.M{]*__}_=]>}xgIpWϞ}uWNO+q?w_p^|2?Iˎ:FٕAS#6,g ɽY#~W:iwnZ?|<~pwy;ۏ\=z3n. n0xݻw(n?~fË鳸g-~g_,?$6{q"'?Il^(%/Ż=Eg5)>\Rh)dO q`ۺTD#O<"Jr掂 A']=pdI܏lrC~ Pcfe}AY&7I֨ A϶F*17^ףE+5~- :l fLӧfL*M?B {ꉸJdc^3I/#yg?Y>r2IGoͅr7>nl[˷.]|o/wo}[zW| ~yXx7={7ƻ.?ϗG?[߈ϖ/ㆄ~ٓ?'3 EؖSߏɬI*:ȜŐҥ# H/k k}ȄWxK[1'o$> / 7G-ߎ q!n0޻ n0|6m&#n.܌w6pVH w?x?w˟oŻ.$ŧ0/[ǝ,͆Iɉ'E򿿋9.ĚZو\Si=eMZa+dPXwou|sa/ƯIW|V&ĭ|j:OZ³ؒLxSMOp4hMүvSI>8u=<߸^ k!D^xnA+57s\c3hc1l9=< 6Vx.q88P/7CuHزV1ƆVkvlP6Ru#\[-!z=e8aUslpkEsi <&)贬k k?1^[9:w:i6j ! V6Ǽ$m@?q}ϐ`tNTݱ)VfzDGVf~&ʼ:z)qB⚩GHp%VW~׃2>/?ww?wn>[~ۏ>`_^`xgy?Qy#?!G^ } ^ŋt>wYq g{7O^~ٗY\3'quGݍ6mK5R{ozjYKV> O2> /O^OZM._)C= $ƥf= -ETC'N6Uf>7d@@vu]1-ynpGyv}.S|~Ś'׺@۩47{"R1rәRڀ}ͽfWS791™ita8QI}UuNa/GrR$M7gv&UJ"Rkdx]Lei5NW8 y7pmF[/kÇpH<-M9yǰ_::^#$R  ^ů{xW7~mW.fi >єK7+ĵ qq8_^g;/DwzO?0)0^F3On$b^Kazȸ-_EM% /Z*V[7FAp\\MfL6zp>At>rs6L3Kwwտ͛ ?|Q xc-2 ̻iw*Ms!s>5ߒ&7!#o-}ݿxʋOtbIhsm❸E[vצu ,$Ddi3Ҥ#xpהN=A5?rFM8lјDŽi5ܬi,@EMh4=QDSobO"L{t;ɩ-"<0:jGwP!ֵm789n$CNuu}z*<&^3K-*:7ƝQ,!ջ9[HY*ttATQ rZTu|smhAF+a;:qiyЬ;s&Ii:u:ɾE< IDATBSh3КEҝc$0JRHHGj%[NSE$j[ms|>7KL6XF_<> kb2cйfs_!o7}=+}$\5.:ukY;P'aIRٔk"!7ܲ?ڷyH&8ILڭԶu ^[Ԣ+7"k!n@㝻t=b襤[R. 8ڬT#?5\=gx71e_}¯_~.?,g~Sy;{G.>zk~w~=~8nP~w1VVl7xp'nB,_,$DH)㦁;b]]|{xBx; b_ƻ  b "٫;8tN`qXyOF;Ǿ>L5Jk8qشtlC%}z''{^sS8W9iVY!mMhiCCi-=U[?-3W\;E29ڸLR,U7""S= a}Nf cs=E2ԍwc!c2 g:_Z>xHe"t)_*0/ҽa};c% Q;dŵ>8t&ls@Z965[:97y<:>szS9Vnp#0/+緔4z᳾ߣ86F}!h1k$W#k|l]ZLlMV1]Sl֫2o*uÀzΓA#KmƮ9Ga+D\ |)V%ϵ/.!$gIfPӝξXùM5E`j[j% ؞b[#x/^<[>yy`0n4{y Mv?翺ߊwWתXx\x]x+S?_M}\ש|#oqT̙[_؏qީG=[ny,gqc]hzxnO}KMTĎdod!cG5P#^5Uu3l{o-=bpyw!dG, r3&2&wWY \3ȹ/N }oOlYwm.>9Hx*"ţq%>suuVXe8-cVyL`UdG+XJ/h^8|O+Q<ݦV% ; S2<U]́a .`T1s8ޞ &ŸGQ1C%bN=&i5+0Fsk1M O\!7}׬UUzz01p|V%sWGنQ326>v'n2*6s;8\a_E<{qAac22wwv@ ;4sT\Իnsb*ջ>ǯuE9N7cwWzv#{R ҳo$j^y]6f 4:'mNHu_6yzN+Ξ~ &Ɔ|cBJ2{mW?z5ϱ̓햬_n/ta|+GIMOjUpdX)1א[xuDKJI~Nt}OmfQ3 Ű; {뺦gډ֑bH GI}-bB9~s~m媌"uoC >!@ ] <ԇ:O AKƍw/pS_6;cz|FgP<oO^3CC2hC&/)cXZGqsF6*~zw3H q"| 'jWu9?X>7.;UG|#7 i={غi26;Cz Jl$x̥ͅ{Ys| ųs*>CI|@O?bv ElN.YK˗O6VZ #Kl. <)P!ls8%z+vdlW~鐩kOcV8|w?y{ouugfPsaH AeKnѶ$Kv7r_/ZKZdkIhQ4'1<'"޽#+@رr<. }~}k z sp_&'v5?ߵ8=M@ӻRNd: ̱~ԘK 31 JANx|N"6I>'cyCͺ#EτoN]+}ma޺gOch0U.>Y pݑ٦{w~0 `@16{tLk~ nn{~[Y=y;Du`@s8ۘz[]TWA G"-Z[\}&;N11~8eCK1mTn#~k]o>pՔXl13VzBV7!#fMpbk<9H3Uos((4cb,%3e>QZdKr=q {:y7y~7_廿ݸR7GܺuSۭឮbL2uE6U:g|6gasUqs|9ydy"l+ojODG&F L|\hN`ixW4`$8M r牆5 ?}}@ ś%| Y^W;FyY&₋ "5\ ҉2dHbC..p%I衑{|qA({7\0?]~ ]pӏdb?[qPf8(\*d"xY}ܣod17:CUxs z!-<&#ьG6ȧrcOGxʬä0MbC0۱An (Cd4 BԓNÝE'X `s$Qy|zԆF<0ꁚM'cld=іwsˮ8g[M:X4I޹7X%]ʦ;eB4}9<. \0ȲxP'4¼l$DIW(/ŝsF[ v|Rq|`@Ћ8i!;  ڙG( %-<|jxLvqRE743f,v;R|խPt5t3 pΘ`tc7cSɩ?Cf=0!췣:=?s]P덉KisMwc!*7 O}7f[;`|>:r8ϼwq>hKGk6AT4 91*cŘz?u_f^tzMb{.2U`-p+nj}=@QA9y|<$<1r/ڔdFr"1mab z0Kq{PkWBP>r2s׾rQot_{aW==?;V[v KY`{ ZL-:We;q>Uׯ__>s 7+~_eA՟Y :G>4\RLbeCC=r罿ӏsc1hXGc-=BmZ> e0,BB$OXv(&I61I*J2ד7jdyIzE+CZ=R\ &d6 #M̧}7 X6ޒ!.mv3{[VܚqU d/x 6.Aa^K/`_~tv8QpDm atlLjx껵=s¼;]6OplPO!5^0-)~ 11OroZh9zB;֡n5;v!ʨSsaԡ\wSj8 [t_"lϭ=N4-(8U-O/²8L8<=TnXJs#`٬&ce*uGOQcvĞ$oěǝU7Js7k8yѶIA􋗷iۇfEv/U3>O p߭10z g \qc=>ylF=X "3Mn/4*8A̷xCO3c0]=uzBZj2u@WbDϷa`utb7Ch'c"'DmN۹]$+ή BGk?琏z.PD|yg=<^}w,;S,W08vZ84]97ލ?hʏϞ}/<sp)-^}պ^E=]{j΋:WXeԋt\0Zt{+#X~o(T0˓ @?mƇ3r?XmsU+>KW^~9C/f -<7Lբ?^M]jF^ Z9`AB] &7%F.4‹˷~.?}X~|ޑOb*8`@;o)&ۈ ^_#1YU2=cmc.5 ϸq` _yܙi_9w1aOxl{:LaǑ4v[YZ#6;}v{Ўy及uXa:Jz16'IqQE vC3Xlp"Α!_,rut@;'=aC5u'ļeas&(PA ˆD1eO"|_ۜ yaLn4TpISWɎQhϭFު,~Nu >vJ?D$nr` HFP3{v%n9_5YlM]~ad~9!EGTF+ -"> zxHHG[I2,Y=5\{/g":E%] 2pxB=6͇αLjlİbwURn2Y+RZ|$q נe+z 1X}/M+ żXB`6 Pgn~@cDsS:'!'њY AH|oJY~󻿱|_^UM pMW)\bqEfy\am,0D "J_"GFW20>[)t%/ƹ믿I_y8*ok%]AcQ!zN={B= R*v ;K?/~y]Hoa\x,j^ng6}L9ڌ;Du]4Y S=~u@{ցSt^P10 I&m{BwP {lc߱ CQz`c⣷|?ey\gnIW J3f-ِd]U:ۍy݉so6}EW@qN[UP:N$1"uقSu֮'3oӆGϗ[zX`|қ__7^<޿~m xDFK!bPNrdd+۟-OZj+!! _G IDATd`@'qneh^`SY,`aW^ŅLL W3X3ՖNfշ6J" >j鑙/v7Ҩ Suw<-r3>2ʖ6Fj 0%cm y5{֟b6˹akȯk} %ܯ.7`[vuwmò `m/Ћ=>e?pf-v%?{*{ݶ)f5WvLӶ#mQ͘qC=> z*=9z˳_YaoW- "Ry#9B[>F<3v!*uƱM! k 5вc>dP> 6:hlpPzsUr!}S^.ء r13Pl#}:[Бl$8;rtARʆO~xv !̆7s缌sWΓ9erJI;gt"# .y0hǕhԡ?Vnl՞KX$^:@G> R}pVD._ԳTn{`XJ<罛eB us p Vv~睅W`q?8 /i%?YĈE ⪇l;Jq=d= i%/07pیT18@5ى ӖDV=&Fo4|=%3o!]Qx[Yi'p(KVzçaX!ѵf%vE:v\DTs<gˣQܗ=ziYwܶoLԕ2s@y*W!*9_eU:9Foo:,gzY믿ɜ+ͫx@^sj^>]&>zy3ǔF=b'ȼ}~kuB,~B`3Ծc:oq=gj>5{:i6(7Ҵzͅa xw%lIoǵqq&fבmDxa `0tLhJSOdi >< g.'$ sf0H2Ə9/vH4;ۨdgp*0ƽt AI`D͸i5~iAcO9hcAXvDi}j*>?'ӀX<\uu7cFZ%LLIChsl-G͠e~L(HRIa4#:hXX19vކ[ZGx"=%/<0sI; X' @& ˋv^c|Ly9^\wtz9f,0pn Zt@,:\r9sI^W-u=G \bHW97!9wu~пzrpt>7[55Ÿ[u ߃sJpQD 0H j!>2@^b!2A?wk\ظG&\2bP$N*]! U20n@D~Uǥ"#ga˜,\%-k1%VXqL09 sNp* l՘|u{q:ݕmkr`J3gnSbHf~`7ZJb. lN[l|KX_*SYc#QS[c}ŀ5j'LQ1-\}NoU!?8)v~!Y1öG]^aqRSlXrf$CJ`G>IQՌ{d̻sdٻeإ$؍HKzmsݷ8])^|DG;P}/}Bحȟ|5mU=x lLȶc! ?rؑh8ms‹,f ':3m"&&C|%ar]n0;bQ MĠ(09o+{:p0ccmll"In_vYXч@;l_y,ۭh*렪\2$^YezZmuD֩zj+l=!Ѽ{[tcD>_/\XtiCyiZ*(lqTAA&̚*^2k.2e|DXw]n Zۼ-?ɀL&so0iY] =\[z>[q(W4ȐW?sNd sZ< 8rB8sXѹH>@__sX?3"~;ޢ??|s;oYc-?E:~t纮ފ]n5Κ<$ϭDa4LX. <!\ ]I| ?sc9_/^|.BE T`XE'?wzĤL~1qDAC1A>7Ad>qV׈Cp) ˤAALq KZj ӦI3 zͥ"rFHB4PLKD0mU2?(llЏfpyrbHa?Py:ttf3_ C9e 3I5wj|=*xx:Q?jcгYSDYrBq 5-8R)Qz icWL&ɶ%&@4K1گI݂a*"dX|vѺjO6r cKs7;D#eCʶm֕<@6RΎa8N#?Ȕ_]I:i<"z`)'Ǹy?db|-c9DsZ.vTKwL0O۝t JmM[g_1o0U ᧝{`Gh0H~cƫFcL?]a[F_q*.C-FfiT ΄3H7[}0# H]a0Fa㕾hv:[qLHf'׿ӊ--wnfz@GﯭxԣnGg&F6C|Vϩ i(UEN^î#WF=ʸ :M<h)\|r\fig\ ";8s0G̘CbڱPVfMudrX -:GxKG7,. M:G| x& W%8ret+/0D6swhsWg/WWKpO3]1q!ԳC= E j|Iw k:// RoȂںVNhc˘ڳ B=e4HT^e= 7NemBP8?MBS([ Ds"=L#VPoʂ_z1&-Os$~Dp%6<ぅ\Z^}4<#^[-xcD)G_{U3W^X0rzN7d.IϏSyZ|hnpzoiRiu2Y68~le.";̌]4%v)ӻ`z=l:Kj:6ˡZqчaމcwV}1:N/&xvnFg/4ֹ&qP=o;Pۘov"6C v.NTu#6tg{Y2ńZ c쇾9\ mx7@mU`K 1 jvEbƱfʿqAFJGbX1ve;jY-;n˿5L{4C`1c  ߤĀLac Y3̤/Z 6P_@@x j-}tQOSzf ;w#pZMqDs%m/pg6g,=ϛ-}~+egO=C_a%lil DlrWM2>b8b\8[#nh u։y[|YW3]amJ'd?֫5iМ1_}+Ŀg~ jCOˏs[5wo؟h@Ĉ]?ޢ鴚gr]]} &P%=IK&LOHZ$։ z_Iѹă !N!Vx,qAŭn,paGr0"sX@򃮀Ń1\bŠÇzރ29sX<2|ftIyX|s1O_9[{At^Wv+*b⧠׬ٮ򳏄Ua+D14P(N  $+X`\8(Wa(`{98' 5CimwX81 ; &4A 4z9q1XAeI.{RLyp+4dcbڽe<1kX;5\rJ&Շ';ɍz zϓ>&Q,V{δuD z%oFN#ćyÏ+D[}x òFNf0nە軡 {̦.Wx1ix8h"Ȭp&@S &ې;*}S>ՠמos5tWwf)\̞U?{Z~( (ޱ_S' : L|?Kk1r3.Xcs06bFoSs?Oh= \ z`nW܏x"M^bNފDnC]ܓGq%=x ͹%?NH9=A?_r5n rg% Ycbsby~?vfo.C:7ᐯǭzsblN{]ܑ+}c`c)|A'җؑdkVlܟbRt?y3 ILz-P,.U@ 24"='_ bƓZ|н-Z0.yy ]A',tp'n`uc=RɢzŭGL6gtB8LQCUKfk~ثUK,0բi'N=G"S}c;CԒJ1e<ƭ~5ΦC0ڛU:\tA7[3t{ĎDHi ZDeu.&"hHڠ^M2˧q3Ec}b1/G/N}2}HB[?THv,wxL1?w Zo/7g &0E,cZ؃L7<]CMJֵˏ%c{1(čl6Q-u|:ݫ-1`s=tQ(+9{8XNou?|#=jOmDu1q9nm쯞$ر;aaݣ &2!4ysՊwsāpd 1 \S*,kM^@؈&,^:Oymց CD dK$9S:-ftYC{crPSh@atлufߧO+cklj)ذc`2ꘟd 7DzolD] IDATsj닱;7d=9' 1֧m")I1X O A{6s:rڸ&k+ A=6ԪO]6"d % ?cxf9)_w82ICou+"1Mgqav[_pS3]L!=Hi6Vu~Zq\Xc_vjѻuޛA眭>=?t[~kXe_vm.|'T~KGҪG2<١O(1GAm8 'v8Y|YHdO^yTqnjyVLT4|h-Kz?*3 GJNiA+n8vk0%Z.CYt/f$vy>0l&U(C 0 +߁ KNU?gYjq}>'D#u[ŐbXnץ!z[b8@q9?P?s޽!D[#9wNXP|P٧Aq{Uo ^R&]}ςd(xYxHdM72Lj-}j>l] _5FJC@d>R  E-BFJ&&nxy7dhŭL3`u&kL*,*%nPgU-6a` >**`T70FV7 B)d@fv:Wn2j1Uf%C?Չa=P+4)ΜcՆb% 3<^*"X<3kb[A*XF>>;Zn $m;xG4L;pb߱NtR:ƣ΄YC \m0>NX\zm~ycR>Un;BT0ܷ+6Ҁ99Y6%$ii|WFjcHB&9=NigixŁ;v2w ;˲*},֕.l'p.ʹJ6s Ss̠@wz&э}ımؖm=?lNn己Nqn==z.osxNX{}I0Xo86E+r8]u<=[]md]?hrsUT!qˎDsgN{!/] E9+XQ?>fo(1ό"ҦHBO3\u16佲:θXtƘ6-mHdcWIܦcbkpqN%/LI2?FmpQ9!9]͹>sC>y•~\pc!2bXqxYl!sϼ18o?<+ <Tr?K9*U<Z`E =AQ-\'V ,PȂ(mSE\A)z 3)L H 4 zpU'|+64QLoƯoC1xh#̕\aegM| y2$\5᪆FI=1ns@{V ync\ʖ"i!zԥp{uO.>ΑYK4[{9.I'=U;Yom;!˺O¬sM$Q7? v~8A 7M0_~׿: Rsxem[fI#0{zb@8̺)ȣ'IFjqu)vӏXTܐ」[(xSg>.EV8 8OsU sj9<ƏȀ'˯گ6#' !/7 aBjƼPh,`pдPxҙvCDg 3AX:tFAJH^4Vx+vrû|wyW⁍y [<ǰmrt|va1".Ci8Gn@mpWn {oH덊9`'fŃvlOƢ;I7O9`nھ1 _)vm[E9)Äd&]PJ0]p6M͠]lN>Эiys%a&EbY)!=L rq̧`)cot,~=g{Vm-xX!;Kځ7lᇱ݇R;,B[(ܑf`YDZ|xa#O wSikEWQk6&C6Vt [k)lz.ÚX6DElڱo4X4K@ o[Ǝz#@Yqg= "J)A·pDFaq<E?o6CL6cBz\I"(Nit+L^g# O{ZH6~\h p埗 m:GtN2'q5DF9Α\*q ~|8W/ $<ېsTzl)LJu`Af' S{) ;G> WLV+8tO@(dˉ;o<^}? 0&L~g.hrOG R9bӕ ]2ɄsZq4ّS#v <1v ;|ӁȍJqWݚUOsafƖsym5 ~_v155B;c"Y^Ǡ>mM?b{^$t%ح 'ScNf>ju[y|cZl!%pڶW:'N7Ab{p-Za;uQo.I؅m$mn)A6݊Q7Mc^daMc68:)G۲E_znǤ٬.ց|N]j*bte_yO؏Igk-A9sj~uCޱ>]ƈe6='ҦG1~eEoڽe@ 8 20r2=e#}<.њ C>40>X Da,dmw '"ʾ0(,H74bV$_S>ՙA)5UnR$"Flq޴pLқyL`Cű\xw_~%_= 81[wtfו)sЛv:ŗW;4 Uft?׉-OtYhyb!xߣx禾Ҟ&6s_aIOʓ#9gt.}[bvE0#c `.Ԧgd#2+M2#g W6*2pYB:qgEޓE} p%wx@y]ד?DDgp&=ЌgD0QTp>ͯEK9ٵezVB> 8wI eˊz\z5VwdM%&iYZ9WtbӻU[s}҄!```?lOh6 S<jK9Q)CGQ&z7d؇{[({94mBT7@:NnLm,U]JOncQ&ʣ]&0ؓ Od_:6ivz/>5DV⺮c4Jco S㱺UC  }Zjé=C"ώU[;˿Pқ(.[(*OaaY M!֭f t UCУڧ mcu׹sM;gfk$8tlyguùٺ($ aQ)>OXM!`_Asc=!Y+Qcxe( ?Rt)+yL2:,vd1&M;SGJz)y "W4|4©(Rfa"aF\-\̤Ľ1ccP@[>@*C䅙Mڼ{ˇYAM l5J"J8 벖| OtyQeM:?QW av'5~ye{ J"#Ճ~V3IсUyy㪆3^WԳH_"r_M+oFBy ©hvU*ZLb/=" J 㪁[n/__qٟYNL L(fcAᙐ<CĊ4gXUN1;?^8zleyb5Tz6m@&CpS5ci5}mR0Vt+c%܎@' ['dQcunpj!0WaAؠަrͥ8om ۞nmu[0= axhwZIo:EN6:&i<ƟZcCN3O_2BvaZxeXIsVՅ:# Yj9Ҵ~g~FJ+]q -mo)GoM⧽=;D %LmX ڀȇa=r7c#o[No\{ -]9m_bqeȍaɔyQ' \_E]"K+ _'ǻ+OhY tno1yck.W ^\W+\x1} &]Br6Q|~\N׾V+6g\hgsWr}! :w穠dmb))qlw"8.姟ߧϨ}*}}HdL00ϸo*H41g>BB+(;IHwMӸKT~?YПg-P2+ JyRfI`4tMz&$\W>o1N_׫/?}&rYg/E[S@#'2RvSPS,w+ aiiX]MaaA&]p>ejP3H.vL|LF` ,ȈsqMhf.e;Ul&l`= (cjҥ۴oLݶ*zZ#?'%1<qoW]Չd/G@]v3ځBƃ>(AMѸ x.M9O+aUSRڡ0R"صr;;z}m|Ki'}ջ^qo *ivf\3m3~]F;K97L.>;m[N2kqMow\-\UND[G]4nʝ34 8&ܦ3lFMyó|!{YV2o-wLn}|6cﮥA'v1@aWCq78=wi0+qw%9(&0YO1(9$m֥`G 5]Kc1S/}cSLs8'n'KlcaԤrs8O={ }>Oz ?|ՏΜ89gc^3os8:Ȑˆ |?b@wV y>zBF"K+#siE~!5J:jau%ߠح$AJ*B]%赡 2B@q*}uV#t۷O>X0gߊׅ0/.'ňkqeC\z2'DJ4Ps]OA, -JdѲrOΧZdkZ( ׃{z(ȽY<RժY1 53dZM)7 Ncc0!9sܽ,s1z_]Tt :ygtd:hNp؊8 b!'1KDf`54.Hi.Kr} lFy5 BŘP4&܌x1o+90Czt氚C$ƨC0Юp%A$89~p@Ks6i3%x4|NJ;p1m+MhۤWֺ_ix Um<oEt Oo3#V,Yup9Q0GX:u^ :odCjxg!/SMEsRr}.4>t< _ 1săzwt_,Rs' o[+|Zd 7pIc!- y$rf0s~J.,FB,8p +/H i!ucէR{y18 &^hU(e"h%(ԝ첚5M3?xzC{- 7uYU_juʀkC d{q]J_[<,AdP#'XZ IDATcl/~8T`52lVHkM  P:eu ̶UN͠}3E``#Io2:3 9w齉&!s6 s̯-w+џuвt#Ix=T8GJv1PVW&ŬdM3v22Hb:çl\R Iw4[u_?lale[ 9tَx춢W޽**G|7na|`-B<=vTNвMgOnzڢrZ2sc3$=X~bgc<+3jCp] [XadO4ܧC_}y&4V:.֗-TXKW)Dqv64?ǹt`VCI/oQ: >׌E: ~ng/>?sXhxwܘ>ɠ8C+u͹4,xsVf8+6rJ[Us$! P0QpkE΅HawySN2nHRӫ+//~^ȧw.`A^%@7o.^~wW? , ó_E q 7H+0&4eyY 73yxGw8<nx,;7gAå6_zCqZ9Y)S)6 fT!y\~'|X>f0&E z8l ٚ]+Ca|1aT uNǵ:.N6[ScN]~2c;B繑q(Հ0{=ï ]s5>s@vٞ>bF%`alNN)CwS^ZZuyH %7Vqpk ̉z8v5Ca^Ka1?z !(Hz >о1b;da#~Onc5FmW\ 3 WE/daj>oq6L<ذIydvL5u7cIbBgF=|ķB e٧مȉou =fBze/ُ"lp\,onamB슻 doPc{{߈s'ƍ*8vf2R@o۞6ht#)K<>t"|Ap;7LilǕMwz z>caàQzyJ6/0pKٯc,ۂ -atEB(MŒ[mgy~{WP%S ý[sG-c=CމXlsKD~Q\uoW2: ^l~<2ZKsk ,6p.}Wϳo뙇w|XWd8 Z뒭(Ti\y;ٍȭ%IA aj4Yz4x*Nȭ:ֹۢ~:%3u=XׁԢ*yBw̮}3[*%sY"2N2M,q+[2#a`o윆ۨzi+Rt;<"  V`G)ܰ)'fGCC)m;;Ibv}֞yuPG1>,3$ Ct,3M. /\0v%3{i;.i3.vd^oyg3疏U t.9qyWxqʏܜ3x롮pW/\8.^+?h@ /ʆƒ 9+7LܻC+0rrG?߼{_w\Y.f]FRK9:+"٬" H*Ū;{8QN,|%bEA'Q]GZyѭ랗ϟY.\Qp'8q.MyM8\ti_r?}/WxKW#(W%62ʼn> yIz&3,N0iiZM-]n߼U[5^^'W'㊆vR7J1f4R@)ڼzH"+ f" Ssgvصu;E}#!ݽ,eIp#ە8ϾַL`?sJ1܈iO1, OyR*N|xDX,oY홃+y^15MxjA z2mgֹo6:8aZ[#e:1uzvظ0fOf1=`;攘Bn=cR5#r|ׁѭzZ;k}G;X{pca6t{g'9{a I=mmZ`ף8(0=rp]Nw?mLkQ@ BӚnj6]U8as4tr}lr k 5\[KĺG?3x #//gw_X.4BHU[)x ݪ/k"o .0Y rß[/y#7-^P5x#jb?гp+ϮZ}}Wc% 1QsAQV5&T/Q4f m4nYdr , #"XX|(n`Bz}{GGQYd+bUFŌwڵ wxb>m?y ֭GA# W(p;}M|dȼIs-2p .rke膮Zn9@r9 -V Q&&Bq:мL0%W"ltF198`nrMXNj/?pW.t@㾂 [ck d]b[>>* A:&ܤ?E"k x+y?dvOg ǘrr)WtǓetcζ?MBP'3 m=vֹ6{9`Z0jƲ_\j(H7|:4ۘvw٠QX% vQw,@Kg=>nDzޅv߿-sxKԠ׫YLvaʮLɛ:B7l#E2l9By>9 JetChZ=j%s( 1i1 6nŊz`Zvc 3y]? !a50z#F1W]kԑce;^vI``i1$#"CVYe_zs9s(n7x@Wmuen.й Zl`]}$\,Fg6p.l\&.ˏ~WIP~xك\q綺׾a,&;z\/Z [ߎs1ID鵣F9%$+쉊 Vb7 aށIИ4h @^<q}|rV}(L\@bEb'X7ա7[8q'@EdĞ/m&~NWfz(=4XJ <Zk/; ~7O˗{Dsr_T`;Eɟo؟Am!pi$ @_}w>b='<{}FsDre8xԔZŲ& qAJ[˖+5k@%kn}3?PP 먌+jouSЋ}39TT钭<:2= <-Ä 6>p֘'rDr{gGhhmj˪ |T%F0ӜijuZGG]XHؿJSGZ x,;>K#1Y:Ff:}p]fYCk\`zd&b쵈0@I1;_4n`Mf[+zb}/3k}9@>ʹ!skׂ6{5=pYhc#}V--4I]h/UΠplgեi&5a9Nq8,헌PW.N`*o{|LTȀFTH>Wjx/?p޾7>u+\5jo\~$G=+ Gs>O[{O>D_o??} _.6WȠK4?S|'>Nߤ9xYjy#BWj-۔h+6vr>jZ{4PUIuxxh%ƃ%cNQXd1O($\9>&{z,)Ή5}CA1g `N,`NNG|k]KWé ұGo}{n_zYr>d,m կ!g {׳kFc*0l%M o։5q=n7tmlGuCXM"arː n4~sL$b&#W_֡[|&MI,{ntMp1 dMI3 8n~l{g77Ϸkh3~}o#;\XW8 \sXW(?Ý;K ~{93b)PWs։GL\dT<]oonxtcهIa8\/]^`Py|EC:9P~s Tz$8z"@>\v|sV.:zAr,+9t yD5vdLcA^\Fdvq,&|r/}CzX&.K( /? W G?]}$ȹ_b4lwE ȷ]5#-+B7M6hDa9UA(RM~aƣ#ߚ *W]?۷mțgcɣr9J3r2ʥF$ 1a>`=1KftֿQ'Q֝~3ck5kÖl&Fb=#bDVXylE:LBR:.\u ut:^D3uT0s;㴻1!Pϭu)=5*=q,KMj[o-) `N)NdV9S!ODݨI(j ka>qcd\h>g<&*x~X'GxݟWs~#|65< *O| |%dq/o^lgm_K8o+aGKex}%^߾1zoxj}OYq>:p+>Z }{Z,~ F"XI9uN&@grv^U$_T7O;,h{CbA.6"| l&Χ^q^mRO!GXM7]O%[&~/P &|lΟu9(a!b@MHꤑCruTjv$*Nu̸LȇxtGTY8wVRĩ$y51w^{6Ww2v쵵4f$A(˜=ztґ4ph5h #5Z2̞E9d*53x5ڠP0}wе'.xUSNevVN{45G蚖POi-OZ})O0_ RQ#.wBPisT0wv9SJ:evwP3B>uT 4RJiS?4hI,F3Sie_G&בyz_Nj ki|_~y p IDATA\}iv?_?'{nיӹ9o|N#k&1K54/gm3$C,FNϕ)$} <$<9Qlh`!l&q>ptL3Ƶm(lH6oIśCΜaL1pXgX`vFA6Z4GoW/"/';<7}ok Aͅ6?Q/o^ի*>>gOįL>7+m|W?WZ3|lH4rr;q9]`\useJs6C0 =0b4;F >"^mO_+(_Jʎ&>޾ \|ȷ> ?y2  }x9 BN\%LW•/_]\7M<v|^cO-\7Fi-&HtsZt2gwq1lyIap?ʡfj>tvjdL=sZӱ$Ó>iՠɩfZe}9$.^Gdi>Jrp}SIE= _ B`4=MFO:<6ʼnmYq^8QY#ɫ؈\ Ud.dؒt{a:i=bиLz! AGk 1`~89Zk SJpRTt]G#1/VDtN2J`БQuM\h`k|q ~?U #80o ?_ |S}i^dL×moqqß7KrpyZ\cZ\o/[Hv(~T:Y?e'uѫ"D1 U\nֆwd{?%&0r޹.0an?*BC4XHv4-&"J.7~q_| 7pιΒ-*^qL`VfX6uivXOc?Y9* M<|H7C#cUw^p\JSJJM{sj9tM'R6?cÂuTxc͍nR|nj6yrf)YEu`:q뎻̵[P1&i G#/LKɣ-z-K՝GNy{v"؝TKVb!xH*mdF + ɓѝp&TQ$4wBfqϕnyTǼ\ H^Gq/n?O?u^p/d<9}ӣ|H~^}ĝ;5G v9G)jq}OP;3WGm_jA"34˘o<`BEׅCVdwU[Gbf;N&79僲M1>RBX"ܶ%G};q: Dz\<@D*@2;bIv,3zlZjMkw]$&9:E 6Rw%3߰ega{}+] _\4xͧyA|{7xoГRN|>_ l^X*~c(r>a|k!E-|"K#X(1k?#lv{?_jO|kq@WIkq"Rԙ.UiRzy|g_,t8x14~V[޸6m_oH/EFUz ?T/׿~7x%Ã՛6 ]Yyԯ{H8C-[Pv!AShU%.r/++t5eAy'% @w}a+"9T ͬF'B8L2M=g+~DsRQOv߹#{)`(;ý!-_X8)NEZϝwbMEnӽýLNLGd0_9JSzMʠc,Y#̩Ң3A9Rt[1o//j%4ԫ&)p09}{+[d;Ns븮wl?yΎT:1+al3Dtyڣ2,,>wx Y9sEuT>Mfz,RUǣ,B]x~0{8q󆃹OZ8yk2z4uy󢮐߽Cͼ uH^y &G'xp{LU n_?|v+qgnqx\[.]M_,Mw#??O @5tuN B~ͅ?XOq>d!HXrF =M(<Ǔ{EtV>105.4ȇ=qx *nz]4 |O׸ Xvd́إ&O&3@'8zOa`\Wʒz AcՖ4#{r͢6>KKNNlT"s{(u+&s ٙa KCk> m5:.s;NGQKk*f$ŝkOMk?K?XeiNg=Pr}n\ XUSl"~|<$!+exg9=3ያ`}k}U戨T!|~(y-ߓz tʩJ'aϧ ʷ>u6Aix#2;(sW1{Cy%$rs G\px<;}cH9^s#.k"W'ۈ3>~~k{sC\xy#h\VgyAqc"C| PW,~VK {r> $oqs|㟿 oEۇ?|solvJM~+}aCOpZx .< U<\x&I<Sz=4;|g 3\yE~],?&J_":m\^IbEI1@q3roxZ †W2;c Ȑ/5[TΗ]Z'aK$Gs4r `@vN\0aRsQK8M6bk*-V,>+jRd?T%} T_¿CG9/il9]U_7]Ͻ_iF̆8%G]9iq >ucxR@3OY㤯~΋i>;o#ǶnV]6T "[NPq8F1?;]&2uG>3{<6eYgq}/oK'sw֯I:W01aőGF։_GT(NO܋>Uw-K\Rr4py);' ?G ªB =xOd3ZG#g&2i+NR|qT' _с?a/B_[RXLT>nz p/2u9=܎ӦΛcT}$z,}+?Uw}\lxoW p|;ۇ> H>w[)4\$>1+s]W9?ǁ ~._pG϶|p%_^x57!gH7D'nm)3p]k:EsuXtHȕEӦ%B"RQ#ivr+}/ '|ܹsw ׮B[*P  «Hhy pwǏO1x[/2s {{|=(57-p09Jpp5bq⻾Xk7:̌=rpf񞜮 3{=S#>35aof65-t];iO:[Ly s>`wX\Nd@tjJC*Mrā 9n^g>zZ}Ry>(JJjқ>>K[?`/sҗKݢ/H2ѫN;SKBqK<τ xMv/Ne_9 mEncq8yĊ&\>v ]q86G:qyȾ+]g}W1nSw]}y%Yky~rtc(O;:pMx&wߪ)Prz*|"Ӥ73*0y ֘ڮk_s܂My&t,ݬc7bצEu1d0GGz| 7CX5Dl>m k%]Mw}?Y=LCbd }֝@_޻Jo)G=>1$+ NGt49FD3W|ņG&w/lϾ|{ͯņg"*̏py2_v߬oЫʀM+yao~"_j# E bw7>^e4NK}k ZmhBYK&c)X?ңt;Ѱp$`k(x˝xu 5=}~ ;Ko@n"oݺM+H <){+ȟqB){:GAC'8aV_`gj}zfs<9x%G8Kn}iH.xҞjΐL+}_`{u~ݦ)w 4>L0 {fע[ uFu/nPtBӗ@'*({Nݗ MNt? y'R'|`B3AGpQ%$~vKUEcŜ\maI;w}ug}ŞW oNC|kS<~  AO;.uhG <!Cs1$L%rvq9PeXkE#Pٶ$E_uy[W`-6 //z\ׅ<>p7o$둋$0[5%>P\^!^dnfUՕ!-=:xB8-l=C襏z ×G.R,A1jUi2V,rTdL=D|䚓G:I?B <ffgϥ) u$`NiMI%x3P|kV4n^%Fbetz2{샹 3[ Sjw^K 9\!rA]=]׽}C:ϼk p6͛yثuDZ^B9lTfS.ג+ %$L]VDZxN=B:H߁E:Lf$MJuެ'U 랛s-߸s5IiE_#m |W36%|{Vٰe.BMKU0>qgVoF!Pdus&sJ<[y C㘥'كA_QltwA?P:o 0CAe!Qw;:<-Oᾠ_q0V瘃gx,`|Z`\Zc}-ޠ-Mj^D̫yW3#`lԽ9w*}pqLr'oUOɯW__p1zdtyv[՘J2j=p? 7#rO_ɣXK;gƹhpH_DDqpH/_Xˆ 9TY7xs]xÓZAGq @_:η.3I?x{7Sl^r]l. ^a^|u-6RpopU xU4֍[TQV}Z G\4viWlq*RרzE ׎FX CO4:g\ |΅>0QeKz{wy;Owj^g:(MxtQ(/rSq]|˵?]~s7,yx듿n|9^  xYq{|ǫo_W59u><_vQ$^ާۭO ×) M]"W&gP)R=c?)E;7E]9pq: 1:̐LG#Ls24q qʷ.j[<"/ yE} o}Zx*k{[j@]c\9iD+ `(ՋŰMGMW$ Zdq6/Zyx^qR>3X*V9'=Q]KЃ{q..E]>=0\ڟ%;%R @u-gOkqSz%֣=1&L1~'F5"~`Pdx.0bfSv{zOz.о#Ҩն'`?IqKږV g݆uetr뭁[3q\UZ rOpot+&ɑu i4Y/jҘ.Wǃ蹘^rݿ6>alƧr3G8^"}qW4 T{-jsEg{$:=ګ[T8\}X$4VvN뀋 T 54@{s6k/=98,360a9Rju2g%y7NwT -{5\:UY ~N\8+ C/~=}}$œZL*;coٮ(\&>0~y кW̱s]7-V;lmTMT|H8~Ƿ+p+$ /9(|&Mo6" W޾|Mz /Gy *g0o=z\yfǙEa`n 3/Ղj7b} j%& 8d=٬RٿNt/Aiv\< |ub{N 5䱼)bgI}]kPvWygcj 8 _63;Ρ~LkwP걇O+poR%=^OmZS~'!i8g7פ-SXYHs%>o-_ / <_WC2<-U@.簐WdosU\Wl^|=:qf 9nk*I;٣-kjq܈,qQ9 AXv^g W j'DAr (~($x^՜x6ELBbϟt^NpŇnq=}5W)WyDW/9hXEo|8 x[/t-IukJ0-q`z8%=iչkF4w;[toItJr (i!GR^[EI.vpQK1\ݞGX*aʚ۷uj~r"L.`T@P9?gkUR\`bLۙG,G{$g'cPS3cIvߋ;;t6Y^:9g [CY#A@MdJTJ_P5A|kFem,gZ3 qhn.'E*8GHp8[Njj;FI|Ù~%EuMMu_#}=zLpA u1Jw[quq6Ge'n]߄Քm{wR .J,3& ΏyFD28:WO$( 8Ϟboj6Tw}x[}SIbiV9W9q= pliɩV{&Z`$%W^x?tx'~) |Go\D+(W-[~QBԏiqˬ~6^u~v`AQЮN]k\ob/\%**,OR:S:F%e??G)o 3q~ٮDڥ҇]:b:Ds\WpSDާYN)Ge?ݤt."Uچ0v'nnŁmN]m⚏o",)@w@o>'޵^εU0 }TQ,G&Pv R޺ϐ@Oヨ` cܖsy^JԱOsU'Rp̡ >ݽE $֢~=#fV|u  dsާxI fiCv?lRPuһJkp ,oЫW^7]|KozAuj^G?s@̮yЙ\2i: ( $%Οq`e#79ziZԉp ?g'(q IC-V֦1Ka?^hbٶ连(fBlL5!fj2ƽym *[uOٻr{ɐ)7IC  ypӔgRQ)—6?+cP1C@˚q^͇Ļeos񣡜$3j""*c ?륩P3AsȤN'bXK1Fǀcޏϡt֚6rǙxQ@Zg̼N21ӏ&mJv!Gh#i8c]E{M 4I`NU=evOc۠qyZ >.{s GzN _HU&gZ@$Nθ|<` 5 |V qnl ?C\f>q0N}ǫhwȅaUSL]PmK $s̥wiY 7h-W;phOhá҉䅀%xQ :XAiS%`rїw$kVnԾ x0D2l6-rfAx 56UQEPPh:2󳎭>FKҾF{ĹR3z |,ɉ]glRAc(>18E2CýdEJ:bAsMՃ^u&oIw'<&?3VtHqRf;tbMwC:~kW:#kX!$E\h`m$覚%9C#iME-$)̃qkr*Ɯ7?#3$UYkX$rz$Zc3UTn qƌȠqtu{zI> ʎM`6XhEτ2 枔f9HjHb~69qDwn>} $~OBܜ]9[u(zRPCZ#~}\(Ƚ\$E 7|\b,z,w>oɬLp]飝1Q%~}^LնcY) )|tL3puhdSw>21@4eVeGmˏID(t #Fhb`#?)E !vۖ:ƭLR8ud,nZ: fq[O{ ,a_XoZnøu %8Ǝ_yATjbO>Cq 1o0N"rn) 0"W #[:8/<}Nqrd@N<; 2-*r*؝ ymr/`q~ Жl0{:2ve{c?\0\"`ZԗKyZ$6Y }"'tlHy޶_ѐ}ۊ 9g reⰸ'Gz>[6)|; ٺX9 l.2xVi[;MXy.jKz5hA?xE>bdv'}mm7TԝAQ|]uRm[f9mU׹L~alw^Ϊ&{֣đ=P8<;p*H jhA=7[ ̹NFn/p JG f]'n/zi׹"@)s(dp-|VOnTpL^)gŔi %%)Q͙),R&F?+R& 6d Myyc.z1{ ~ kSu- k0F1m[0$i ;U}#sΣ[C7G۔II^:5o'r 1Bwu?G+mL>X='TID~_Z"΄uIJmegtؗa\Cyo ! rON3 v2\Ѽ 2]<<:iTsdP7 tDC6dO㼾z89Th 6d&mlh6HxvQվ#ev\q@ž1Kh{߸GMpIrA7`|Qw5ic?fq]"?V*I)uqr'w>s7apL}b6Ŧ~X0m7r%lLϓF~K*c"*RLm ΚHɚ@T/d՟.fi:ʛUkTS L|߉ e+Vǚg^HrD~qxggb16oeyALw|{x(EruL2uHk&gA?&t'ԛ1+wGͦX5 o%\g'=M1WN?C#}-^XC:,8 X0HEtԂX5^p0H#,Wĩv[`oq5y; sr78ƒR"\Yɚ6k5%' Um[CٴAj IDATeA_B^~vIBQc>ZϝH{`MCA ti2+qӵʞ^r#qτmDu@)oB3)""juj/]D+Ω0.7qEh̉nf?(baj'3љ7wC>jCJ|{s2 6q-HG=fJxF kq8o':?ȇbúc)>chZ"ńZ\cb\an;UqL5C!3 8 SJ7Rw S⎱ ˌ^㻿nK[񋹳y$x+n>h G%kRgxt|Qk'*!qsx6:P g,C5K#i;R:8ef1)! DG~.Rutʅk:ϒCу-Ç#Pci/"eakʺ ',^眒Jk;ce `}.Ab0E(3ᵀLbwy0uQ#zΉӛt|kks#-Z#8G;U)K* V*19qdU,iӈLZ  U}$zS8>w!2Pۀ1bڃ"3]*ɭ*AJn NJ7kP_hnrvE\s\^"YɾM/iQ*8kUQ)$y *, \Hh%gC!ks!Wl$ӧ Cbհ r#&m܀A:$4㭬),dvO 1bDV6;FZxY>J^6}iԄ`@|d;xƦa%@™ N4jӯf Hy#d hHݓFe)?COX X9vv:Eܹ޽Nח~&lAܼIbi=0)1IMJ[f ,{zi7ZІ׈դpG]')xCU2#ԜKwdT N-{M=4C[ ~&`hj:-VkM=HEOQVk&a#C+~A̘C'<1 I }=2 zZ#`; ieB[M߿WH T_S tH,hoIL9?Qf.qOϵI4bO}PnG=t˕{pT: pjnPd>`g b2Gƅo|ԥ !N@RΛva`|@\טQ!jՖɜQ#̆`Nk~\3 s&rX_Z{Qg #{ig67&kam7a Rʼ&!GH _@%xk9xpG9(4rlP)۵=3B=??Q1;ɜxyH}1GsQ[yku?4>%Ӿ7Hq.}t&^9I1Wa傌&NdyL*)Ofzhh_yv87\S9#\<)2u]F=8ڛ X)tXTvȰ#|N(6q}^GNV'9m#Vx l+~Cl3@F 4QRwٷ[<%8'iį&1a2|4L5J.2oSpI*3}q$]~5K#=Z}9Ӊuz"ςyr rT=б5ׁ?zN1+ȹT,s?p_2 |ܨ鹄3tUn8an{\m>"H(=`n~K"ø31P2<əix󾳦tH&}P5Lg,0O>&`TNꮯA0#(/3t4w_N|adq0hӳ%6ck)8r|Ք$CcV;BmdؠZ~KT .%B' 8G}Wc'(~|^N:9R.?lҰyǤy=z<&סAX"|G #(*%X53obRKRW 6 >1Ec.K KܑAjϐo<]WjO{8x]Un,X=k@=.}'LDSG-\,vpQs0~l!n%-0Q@;‹Ot`T9$R$1کo7b?3%/42HXdNIPN2QM(qQg0y>Q xohB䕋I+glT=X.8Nk %#bza85\{Dї|[K'ܛؒZ_x/Dbh1H2&2ƀibIdƿD(qf݅\d9tW⎆U~u2,F}0KH)JDS9=*+etnq)-Ux'0AOʘN9}J69TƢ4׉:3A2(Ffg֕ZC Խly^rBgkoBi%+qE<&]KFs4U6dq_Z]'3Ͻ@.BRLΘ\b`M~ݹ_oLs& Wtr4ψYꭿ8G$7E$|#0-3*`tW^Q?n˳kgZRW8\Jb>N@*~q, dnFcS&8h J>Mk &˵șgh:8o@P?k?h(cNe4evJр[pXuH\Aꙛ82T q1pTA9ơkMtelsLӻ(ko5qNh:3Ǩk2OD|Ӵr:3LsϡiDpP[.z04℥P֬p[WlS8vaŭ8q]zDc*){Ru2yҕ߉WB8<8d"@>+^ D8:f֔{ l9ZaPyӈeڝA-{R\4)-+D}*xTò AW!:=p"Hp$pHV>**ɽ2Y*Dg=łas0N}s|?]Y#LjFTZ'୓w}dn˯?a\u|V Uqp̘ASb3n~,N_?딵oԉҭ6uw|;$v.U0)ȕ~s e=/tMpA=h{`^N'5x H`=T9 MI1sG%F&9ajAd&6M0uj539&FL c aѐŭvRw4::o_SPWQZS~7>:dĒ sЏn`zx:dOkDr5Y7cZ<.` 꾕sV:9#ʦN=oyYg7]+ }cW!y׃k틆mjP#9hJ##~߹\UiMq8NJ/"QAY@dƫWfҋPTZsMlHÜn!$/.kG j:޳PQm{im69J=ehЖi*m^$TCf?uI%1 9Md3&XT&cH. ;뭖NXG>;Xͅ1)y%~vcF#s0VBiXp"j)yU8k/ŕi&T/l|1'.XaD:>La-f„ zyDOgbcfpZCzeͥ͆N ㍱ ԞSje^cS&ԣ8+Psoڿ1y}yIϜZ}'N4vP:wO=Ǻ.p4}W]瑃|XaD18T Rֲ'&X>N8$Ws|S٭ |9rd 9#`NpDu ɉ/V7Y?HpTfQsvi e,AӾD~ s@M:epwBq~FtJ0e=!.2ڃNzMC}}loB_eVω5:Fhth)1aG/UtتIL&iQJUNZz)7hyiE.dg!KLl^@b- VԬzC>/#2ڕf2qD.4oPC냵aSť`W54^9\?b{obzIj@~׶Lcd1ߒ{4ɥ0FI,ZwVJw4_:{rzIU  zSAkLܑoHٶ%ɑreeW3`Ȁ)3xIaZtgebI&ǎ}3=%=bsoS۷ʄVr j $ݶ#s=}8~}ij]Y_^Sؑ3ɨSNb{` p7Ф^u[-';6|W7Nn: 03pq囫bdshy+fάYPyZ񍼉 F=c ( 931sR╮Jje]vn3+!sD̹`8c@\-k^r/tS>ج(ad,9lc.o@t:k7,3MP6޵ >w5#+B⚞1&9f(W1x/Ou  ]]ifD2vz02z c G;W_fM @.\"h@mh#k6SJ/;~pX!OЎI#g&j> &uwMwsEN"ƓZ.6^~:2βf1g.HI*۷{|'ڷ7}C9nvWǜz2KI[oyl֣?!ȼT`ֶ6p>F?Q.-8QrC{c~]*x)l_<,CMq az99gDZ T C=*Kyzq;vt> A 8TԐN⩿K#{~r: An}0&H&F~Xޮ`ٴ_H:ueF-kɿM!jC[(\ }鉃YݺSnf]*}Ix,hpg)]cu1uOFєZ͙EAg )2&*s;>[)ꜛ_rF|J[N]֕-97Z9zGYg k*r"Z |= ۑJEE9=7'.d(}*r]0*"hc,ۤgHj8Dd XX@ `+esXaz5n,*/=F^WL1OAפh 7#x~z8>Klà [WLL;Nzz|Bb23Tڋ+/Wo$ a . '#v-2Ά`O#m}m ^zǖm;9:NYoW0煎JJifTI]{4X"O: n4఍}74cCR6(n'yvxuӾ6%0=zgV|k8My|F$&ߏhY6SӘ䐼FwAӤ{vY{9޹<˹dv(Gusr"\ zV~eahZ=(=ƚ)LœCw5ˉ ԰y$`uXI9plR bjsWb'r^N>b7W8geŎ3É 5(eu>juf-vՃlh5w9vKsiPO׆lNGVyȍd> 쳽m|2k<1!*%ŒwRtùI[>m C}zCJe8l|K(kՆz?,[ ckzT~u4T5-9DM\Y׵%\^e5g؟2;.WIX %Gv,;ʌ6-5WxR7TESؠZx528чtI|y9]:ɩy>{1ZNГ] /sUWX3\:C:sCkxwJp/뙓7 ^Ƕ%;DľS`P1ö# Q?5q.H,.b-$_r}.RLLtn\_⠦ 1̻<1.c}ˤZ9Ŕ:27?)?s3S qƦps:Bڧ:|jUq[}jʭ3u!ps&Ǎ:9TRӵÜM<aA;`]}}Z<05g\*YpVo7]MaYt^a"!Fveސ ;11ʡ{Ѩ#-5l?/~{3 dmLɳ}} V-j8:F$=1]ucT-:]\|L=~ؐ_/fYGrXh֘S[?05~eYM_f W!+K\0>YiK K4-w ȌDD E,gH9`̩cyQ+n]iC ^j T{\c+~Q_71@'eӊl;-|)?9e\{ڵJR=9Т qFs;dnNT~оs\ 0FSc^U_qc]RYvy~Z'Re?\N[O&rO[7o 8 }y5y0UEbkƫ/g1xz rvbfK9#$GynʆK"۽NQ=xQRBb=w@6t04$ԅrFNP%(br/W$t``l^EI%iZrobs a﹇N-p\/Liuxr {8''ux"3?D鼂y3Z<o#8|o3Ѧs$p.p;i;XNb8ֵ`ﺍX>Nvߢx]\85#2VK_hC@Kt*vrt7?z=KsOPk,v3zY RǼӖe&7͋(0%/1_{7{˱b~cC6_O_LCrws-o ~4z{-l[۳$ז5sK65K6T;]Rxʣ\DOfPu[80ki'CZQ|m\jt;~Ց.F" c&G}ӿ{{xɕhzzė6UZn=觉Ղ dY ,{i^ ﻒu2&J"Fבo3>~zhkm9]кn`gV_I<šι) Nꤐ4uc9znn7*i&)$tĥ=[ĺv>|QD>NJo7IhB{1q~VX3~PQsas WYg.}=Ϯɜx=|9N֘EO.*_?SMdI Gޝ|؇s'gσx m,sXAC|7kb|m[N,O ̌^i*M1Je[ZOO2Vʼ DO68;d/W>WV \C<-7;4sCDu(~&NHzcvOGP~cd̲c G-|YA2aZS3:^TN3]eCHZwtQX36>rBm)zX ? =ssV~3\:/L|c#q4ѯ|"^3zePYgg,7V=XY)˹^po{Wxʼn|}cml'g%zԫ`.,!Wu2ǽ|U)˻|;mtzj O%h})W=\ĚN,ي >A5d׿a]8EP$W85^/lw}uX}& uJ :_Ύs a4~%yN~RɓBW7N z A`5 Bdpz. |tL4%y(hT^,z΋ GZw1=ocj.֣ȝ:GR/y\BĥURza]gtZ_|2&q\X>c4qIY'gΚAf {_06'f[AWC@N.Hv 9•{u{]>ޟב=oSFNo9`OCsMcG{{m\Ɲ3^ݣ}'.@9*?=O앖{_چ1(Yxe֥Ɍb}|g.+*mi~:٥K_HCAG~ky֥p_\i OB("kߥ@ttVK"y]s^ơ23I.>lVx٤Ov:^j >zf2&\pl8LeK~_#8ȋZ/ǹV~v#rQ(t%ʖ:gx8ʦ^9{7lOHa]7;W)?23#FNG "qi OcQ7pqլsn6`ҩ: Kks6h$>Nuw-;$Mr=j/(Xk,Ej}Y?f&x^J^YÇՋot&ѾMbZNJϾ$Zײ}tu>oD>kW'?Ӛ}~gEԇz:O;<5VkjiB|T`ŕl6A1C8Oޜifܯv6 >9VfL.=Ƕscۗd}/L^VQİ"_;|<5=~61jvywΉY?W*3/$80\]lrn#$9\._Jr<5*&kK͋/:ܝᬼWF:6-/m 2}k3fǛBS>6 2g%(2cOxlLJu B\+v$sY[fa)}}t}9xfYQzN>zu}1Blq/s|?ZYN<'Ndf?:7M+5={V՘7mxz-SL W bnRzJe}rpxr9 "O,JZB%ui\j,j|;a򦥏Vs`4+W?WRg o%yr[%MdjM-R~rfds_JMX_]@j8i!;ՠ>y >E[S=F*-ٹyQ񺶻kPfޟI/³#2KTl9ʷF^O9>ލ:tN~-W l$U|lS~Y,/g|Nj5k3eŴ:sq_NxG5k$OfME?[yyuO8 |د:-lo'TGa#\DlnIP0(mRCyTH1kG }Ps&JsЇK-{Xo-[ASg]\joQawsU01O\sq1+Oב[Du\)+qZ˹)`dk?QYCq<@oĄ:fP}UQ;\Glcxm8C\[/\WނpK!ߠ7yΞuc {Ͼ#ZJ Iaۺ5K>cR={~2r@qMS;)J|'7yܫʺ<_׹bf:'M*uoLߗsH;kLe":׶uObN 5zijjNxُGɑ3+ 2;v|a/^Ml½8YYόriL=#szyu?iXM ¥t2z} }OnA{)Xm457uq 6 lepY[NEEm G}?&2ZWP | q/ek\U2+洶/qccc~+Dw9D+lb:4ȩ}>pb|!pl{&I5K=b5匀+s.&Y3E=j͢{>.@:=s˥|cXsUTv%cxjpəxN?~Y7s :D(޶!*M$bss՟f}7-E xhY#ڡN9+?,yf 1uIp8ՏJa璼w]S:Hnv0Wۆ٨ײĕ=́׆z\=Z㧌 `Q}`pQjk\TP\ݻz"]q^EU5(M] y!5A9n~`<}XcrP׵cLϒte,6Ss V9,^03/ *ۗdh}:#]e_[|et~cE =3:6`q,IJa@+M\~d8|~4]}GI~A`Ŕ^E k|y]S?em{x2_|#x<~Ǝe,8~ۧg*=,K^9L};Ѓ_g緥h[y}=k `˼t$V!C?yM|sK݃?@qal >'t['6LdᄘC>78PA؜ŦԹ}m_~n@|^o"qC[1;/tm~_chu0־>}t!'l|W >0v;"xb>X+v&>@"~:jEr|_vi`sq=[seHZH!"zP gbG*vgWG 86ovUz/>xcn1NJ!:C,:. s FJYFqKAz/~Kf%C5}I)E rq`KĨiʖW14`-e3)9J\<^\u J}/*iٸi_maPp]'?ɗPJM<mpuxg~+"C}o;kf0{ Lfc-Ǟ9b©&LXhhĕcSwg0.Rq}U'*Ψt9uhMXf.\ ;l _~Y.N{53$hIX^30-#/A!NYmw {=91٣8z{u{ _4m 65uׇOz~:8,Tol9.K~ em̌p7[\<B?ø5wzs+!ݮ r^X5u'U UoV;/GG>kܑqW/X\eL(wثuOc#RKNoR5^Lv=9t.^7.'3*-qzβ{|$7+?~gNw5ʛ [38ro<8.֎?mN-S.o_pG 1^e*?k9yRwA3I'ɝ53fZ;?Dlm_\=bG4nB|guh ¦`8O8Oj`vK4޲u? o17hЗ o5K|ѐM1RtNjۖN}aiPH)_O_%8r ͋J=åF.8"3ҜkۆX>%a9 KGmg7<s-* ` 0|N&cNnkBqe 4Ax`+Oy ưzH?eHD5͓:}.M˔y0be@ɰ|R"1{U !Ӹߘ[ip̙~J=ҹ]-CbUxfxfj—S9I?Etl5<㭰k@wW:4Py}w&E63+nXǬ:&K9+ -T˯xZåy>|Crsr'n9\(# u9y+- rëbǧR X:fz߂Zo7 ̎fDlꏥ$kH$4]`.Oo{9cQ?mUmUb4|uT-p@%~}X -qٓKaN5rқ^5vs 1i(ēisv9G+;MS)V %ꘁ{N(U-Bn<κ0_/yt7&"z9;i3z/&y='Σ_Ǟ+c7kG^yǷR_h뭏Cx[LlMOl8o0 h >׹ L8{@kD_uU>Os0JFbwc;)fB_ V\t=3`9qļ"z Gj&_wW( *N7Ktp#y74@>Җ9T+Ma:]Fɺwpvt7Sc~{cl=y8pgyAެ۞? J<*{/8ςRM׹al^-./ʜؙ+^@7sΎ30O^68؝'ؾ͍\mx~;N1y(Hc oly;"ۡsm?׊O}zYYo΃=ϗ;XY M&W<+tyt&;;LI4 UTm-N@Ct͓{u@]KPmywכ|"Cӷyc|^[?e:q~Mr7R.9}9Avɳ|1>IFe8*30 9Cv> ʣlhrL->Q i>CdvhkiYHzb?q)fܜ`ãh fn1I{*q+ef,sp7ka(:O؂K3-XyIO1<ݤk[F2!JhrǮ⽸0A< kU~k ;n4>gϼ'j te0꺘N1.`cv:[]u=&|CylLleA7؍qkx|lhuZ$.cKC7[g[}+3|\=O0:?%cʥ}GYxdں2)g2OLdƲB_ؓKC Jur-0j>܍ur3K 0Ȭ |25"xVa=$վ5؁q5}5Ə8-fčOR^ (8l:yIA;y Їw"_7S=̲ta畦*/+*z۔sszi?bO %zG׼9gC@|fly;l7tqaM.ѵ3~ gy3v>K[ _/N_4"Fs+uyQ pD|VZ͇ XX]Vyu.C'$$}m*J]LcPXW]U]"#gZ+3norohǽg-۸>i}KnG$Jd[>.Acot·W VHNN̗"q$}/ >/15=W vՇkp×YzM2l[Kjߏns^'jrb,NL/CQK+;9LU7Fպ3q=]9:%|x8Ve/]}{>lC)]gY8kۘ:VoHg4~|.mדru?M_8Ӄb$Ί}W-qq34>#γfg8Ӈ5Mrϼcgݣ93=Ȼ?s( Ec s>tSWrCor8ӯ!JƣlS;FIM!=#ą!i_^53xg?sqo[3ǠU1yx7[jXjQӧ2={>-!x? 9{Wl9$#Usi !(\ֳ$ﻚWo1sV:\\9|a)SBeؼ?G1rk7㓏9A{Z8l#> S/wĊgV q$stHu3U dy8O~pbBV{vlo_{;& Dh7h;#y^X s5گ;wi au)~TYҩpM+N=*7w7b'TNH'jҸpe/Ϲ\xq,ܩ; :6}0]p%'M㯹AΈ)[g91,rC{꧙DqξZq2/sNXYg8HܣIûa"(ﱂ݃S#}rT<]{ܞ=O^`;]28Ehs/osn9W[S4NzeFuq2ϛ.~yF]0{6dF5ZirTd\g Ƽ |:/7u_q4?&\G&F٣ouٜ3yDnj/ڹc_^wjc;Or|(H X\>of{W}/~W' 'vKfqC6,s"GP4d{Keܢt(4n\lBsZ|VkAԂGcpksus\]jێa9Q#Zp$oJ 2<2ئ 1o sf:!3KG_K9!@{ P|<6hn&{'9\|$Ɔ+j&9Fԛ۳Gɽ-neP>./?M\{c!Yć!|z֩۹7a!ϥLA|JqO0i-9Y15,s5n>7!cbv>it/0<܆n.w @}/՗J㸻Sd8!;917I- gP}mܼLB{Zypq0JWR^RmOCݪs6wq͕kY\۠GtWu:|(ꗔcd&™cM;[X9uFz<3Tz$mdĈ ۷ʮg}r؉75TD/z=h\M\ڋs:h W~K 8uGj;zun + ULWuBWhX~v Y8:?K/}33PĎofl{{]kXtπo΍O`{U~R.t9p ǘ|k?pqN3秼M1?9bN>ׂ!٧nL}!a\}8837W'?_~7˟BمS-8+ɼ`6zBހWn; ܳc9 \rKÇjCǞ.¤ZIߊ3 x`β{胱/#o -~ZJ,ޯ|˯:bwydoSO副xC6~⬿jrc+=sljq vfCnGn_~T-Z>g_2Y3gcD[pl13o]zcaMO}z'%25m'V8`X =Wؿ&>z?7Gy] sb=ik8߸ ?8/ccK^SƆ[URotS\C΀]>r!_v[q :Stkbp!-gWYi\c9+7O?:ssiX<O$Ϩ(Zcb5eZWl2_ן~E?P_.ɯ>MèO̚u- a[7b+,|[ i/7 woi{Y*%s:߆&~dKcDroY?5tmw{"3WilIDAT?'G0=_PgW뤜16YzVcGƇg}D.[s_4c'k זC>z^#NQOm.C)ݏG0.˞^}]{H:]t3s<裛9legz0pgs-wB'^3O`"| a '^+Ŋx}ɰ4׹$L~<6>PGr6厹sN7]l{~qiC'\䨃]So aٝrqݶgÇV~BE^>}҃ Ĉ{6bp]Zoi} #Ǩ=#},:(9>%<.g=ǎqW`&QZWG^u$~3g36[t7k"J[SWtUzxN_c[ӽ3oV3\J8ݠy/T9E0c(S9貞G&K~_rI:}42~|s˭]"<ya_]+_ҿ!"؁IENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/resource/info.rc000066400000000000000000000026331461511344300232270ustar00rootroot00000000000000#include #include "../include/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END ENDvst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/resource/plug.uidesc000066400000000000000000000123031461511344300241060ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/source/000077500000000000000000000000001461511344300214135ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/source/plugcontroller.cpp000066400000000000000000000161741461511344300252030ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/panner/source/plugcontroller.cpp // Created by : Steinberg, 02/2020 // Description : Panner Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "../include/plugcontroller.h" #include "../include/plugids.h" #include "base/source/fstreamer.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" #include using namespace VSTGUI; namespace Steinberg { namespace Panner { // example of custom parameter (overwriting to and fromString) //------------------------------------------------------------------------ class PanParameter : public Vst::Parameter { public: PanParameter (int32 flags, int32 id); void toString (Vst::ParamValue normValue, Vst::String128 string) const SMTG_OVERRIDE; bool fromString (const Vst::TChar* string, Vst::ParamValue& normValue) const SMTG_OVERRIDE; }; //------------------------------------------------------------------------ // PanParameter Implementation //------------------------------------------------------------------------ PanParameter::PanParameter (int32 flags, int32 id) { Steinberg::UString (info.title, USTRINGSIZE (info.title)).assign (USTRING ("Pan")); Steinberg::UString (info.units, USTRINGSIZE (info.units)).assign (USTRING ("")); info.flags = flags; info.id = id; info.stepCount = 0; info.defaultNormalizedValue = 0.5f; info.unitId = Vst::kRootUnitId; setNormalized (.5f); } //------------------------------------------------------------------------ void PanParameter::toString (Vst::ParamValue normValue, Vst::String128 string) const { char text[32]; if (normValue >= 0.505) { snprintf (text, 32, "R %d", int32 ((normValue - 0.5f) * 200 + 0.5f)); } else if (normValue <= 0.495) { snprintf (text, 32, "L %d", int32 ((0.5f - normValue) * 200 + 0.5f)); } else { strcpy (text, "C"); } Steinberg::UString (string, 128).fromAscii (text); } //------------------------------------------------------------------------ bool PanParameter::fromString (const Vst::TChar* string, Vst::ParamValue& normValue) const { std::u16string_view stringView (string); auto pos = stringView.find_first_of (u"C"); if (pos != std::string::npos) { normValue = 0.5; return true; } else { bool left = stringView.find_first_of (u"L") == 0; bool right = stringView.find_first_of (u"R") == 0; if (left || right) stringView = {stringView.data () + 1, stringView.size () - 1}; auto string8 = VST3::StringConvert::convert (stringView.data ()); char* end = nullptr; double tmp = strtod (string8.data (), &end); if (end != string8.data ()) { if (tmp < 0) { left = true; if (tmp < -100) tmp = 100; else tmp = -tmp; } else if (tmp > 100.0) { normValue = 1; return true; } if (!left) normValue = tmp / 200 + 0.5; else normValue = 0.5 - tmp / 200; return true; } } return false; } //----------------------------------------------------------------------------- tresult PLUGIN_API PlugController::initialize (FUnknown* context) { tresult result = EditController::initialize (context); if (result == kResultTrue) { //---Create Parameters------------ parameters.addParameter (STR16 ("Bypass"), nullptr, 1, 0, Vst::ParameterInfo::kCanAutomate | Vst::ParameterInfo::kIsBypass, PannerParams::kBypassId); auto* panParam = new PanParameter (Vst::ParameterInfo::kCanAutomate, PannerParams::kParamPanId); parameters.addParameter (panParam); } return kResultTrue; } //------------------------------------------------------------------------ IPlugView* PLUGIN_API PlugController::createView (const char* _name) { std::string_view name (_name); if (name == Vst::ViewType::kEditor) { auto* view = new VST3Editor (this, "view", "plug.uidesc"); return view; } return nullptr; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::getParameterIDFromFunctionName (Vst::UnitID unitID, FIDString functionName, Vst::ParamID& paramID) { using namespace Vst; paramID = kNoParamId; if (unitID == kRootUnitId && FIDStringsEqual (functionName, FunctionNameType::kPanPosCenterX)) paramID = PannerParams::kParamPanId; return (paramID != kNoParamId) ? kResultOk : kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::setComponentState (IBStream* state) { // we receive the current state of the component (processor part) // we read our parameters and bypass value... if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); float savedParam1 = 0.f; if (streamer.readFloat (savedParam1) == false) return kResultFalse; setParamNormalized (PannerParams::kParamPanId, savedParam1); // read the bypass int32 bypassState; if (streamer.readInt32 (bypassState) == false) return kResultFalse; setParamNormalized (kBypassId, bypassState ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ } // namespace } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/source/plugfactory.cpp000066400000000000000000000076401461511344300244650ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/panner/source/plugfactory.cpp // Created by : Steinberg, 02/2020 // Description : Panner Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/pluginfactory.h" #include "../include/plugcontroller.h" // for createInstance #include "../include/plugprocessor.h" // for createInstance #include "../include/plugids.h" // for uids #include "../include/version.h" // for version and naming #define stringSubCategory Vst::PlugType::kSpatialFx // Subcategory for this plug-in (to be changed if needed, see PlugType in ivstaudioprocessor.h) BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) DEF_CLASS2 (INLINE_UID_FROM_FUID(Steinberg::Panner::MyProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) stringPluginName, // here the plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers stringSubCategory, // Subcategory for this plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Panner::PlugProcessor::createInstance) // function pointer called when this component should be instantiated DEF_CLASS2 (INLINE_UID_FROM_FUID(Steinberg::Panner::MyControllerUID), PClassInfo::kManyInstances, // cardinality kVstComponentControllerClass,// the Controller category (do not change this) stringPluginName "Controller", // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Panner::PlugController::createInstance)// function pointer called when this component should be instantiated END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/panner/source/plugprocessor.cpp000066400000000000000000000211731461511344300250320ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/panner/source/plugprocessor.cpp // Created by : Steinberg, 02/2020 // Description : Panner Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "../include/plugprocessor.h" #include "../include/plugids.h" #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "base/source/fstreamer.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstparameterchanges.h" namespace Steinberg { namespace Panner { #ifndef kPI #define kPI 3.14159265358979323846 #endif #define kRampingTimeMs 10.0 // in ms //----------------------------------------------------------------------------- PlugProcessor::PlugProcessor () { // register its editor class setControllerClass (MyControllerUID); // default init processAudioPtr = &PlugProcessor::processAudio; } //----------------------------------------------------------------------------- tresult PLUGIN_API PlugProcessor::initialize (FUnknown* context) { //---always initialize the parent------- tresult result = AudioEffect::initialize (context); if (result != kResultTrue) return kResultFalse; //---create Audio In/Out busses------ // we want a Mono Input and a Stereo Output addAudioInput (STR16 ("AudioInput"), Vst::SpeakerArr::kMono); addAudioOutput (STR16 ("AudioOutput"), Vst::SpeakerArr::kStereo); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugProcessor::canProcessSampleSize (int32 symbolicSampleSize) { return ((symbolicSampleSize == Vst::kSample32) || (symbolicSampleSize == Vst::kSample64)) ? kResultTrue : kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API PlugProcessor::setBusArrangements (Vst::SpeakerArrangement* inputs, int32 numIns, Vst::SpeakerArrangement* outputs, int32 numOuts) { // we only support mono to stereo if (numIns == 1 && numOuts == 1 && inputs[0] == Vst::SpeakerArr::kMono && outputs[0] == Vst::SpeakerArr::kStereo) { return AudioEffect::setBusArrangements (inputs, numIns, outputs, numOuts); } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API PlugProcessor::setupProcessing (Vst::ProcessSetup& setup) { if (setup.symbolicSampleSize == Vst::kSample64) processAudioPtr = &PlugProcessor::processAudio; else processAudioPtr = &PlugProcessor::processAudio; return AudioEffect::setupProcessing (setup); } //----------------------------------------------------------------------------- tresult PLUGIN_API PlugProcessor::setActive (TBool state) { return AudioEffect::setActive (state); } //----------------------------------------------------------------------------- tresult PLUGIN_API PlugProcessor::process (Vst::ProcessData& data) { //--- Read inputs parameter changes----------- if (data.inputParameterChanges) { int32 numParamsChanged = data.inputParameterChanges->getParameterCount (); for (int32 index = 0; index < numParamsChanged; index++) { if (Vst::IParamValueQueue* paramQueue = data.inputParameterChanges->getParameterData (index)) { Vst::ParamValue value; int32 sampleOffset; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case PannerParams::kParamPanId: if (paramQueue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) mPanValue = value; break; case PannerParams::kBypassId: if (paramQueue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) mBypass = (value > 0.5f); break; } } } } //--- Process Audio--------------------- //--- ---------------------------------- if (data.numInputs == 0 || data.numOutputs == 0 || data.numSamples == 0) { // nothing to do return kResultOk; } return (this->*processAudioPtr) (data); } //------------------------------------------------------------------------ template tresult PlugProcessor::processAudio (Vst::ProcessData& data) { int32 numFrames = data.numSamples; uint32 sampleFramesSize = getSampleFramesSizeInBytes (processSetup, numFrames); auto** currentInputBuffers = (SampleType**)Vst::getChannelBuffersPointer (processSetup, data.inputs[0]); auto** currentOutputBuffers = (SampleType**)Vst::getChannelBuffersPointer (processSetup, data.outputs[0]); // if we have only silence clear the output and do nothing. data.outputs->silenceFlags = data.inputs->silenceFlags ? 0x7FFFF : 0; if (data.inputs->silenceFlags) { memset (currentOutputBuffers[0], 0, sampleFramesSize); memset (currentOutputBuffers[1], 0, sampleFramesSize); return kResultOk; } float leftPan; float rightPan; if (mBypass) getStereoPanCoef (kPanLawEqualPower, 0.f, leftPan, rightPan); else getStereoPanCoef (kPanLawEqualPower, mPanValue, leftPan, rightPan); //---pan : 1 -> 2--------------------- SampleType tmp; SampleType* inputMono = currentInputBuffers[0]; SampleType* outputLeft = currentOutputBuffers[0]; SampleType* outputRight = currentOutputBuffers[1]; for (int32 n = 0; n < numFrames; n++) { tmp = inputMono[n]; outputLeft[n] = tmp * leftPan; outputRight[n] = tmp * rightPan; } return kResultOk; } //------------------------------------------------------------------------ void PlugProcessor::getStereoPanCoef (int32 panType, float pan, float& left, float& right) const { if (panType == kPanLawEqualPower) { pan = pan * kPI * 0.5f; left = cosf (pan); right = sinf (pan); } else { left = 0.5f; right = 0.5f; } } //------------------------------------------------------------------------ tresult PLUGIN_API PlugProcessor::setState (IBStream* state) { if (!state) return kResultFalse; // called when we load a preset or project, the model has to be reloaded IBStreamer streamer (state, kLittleEndian); float savedPan= 0.f; if (streamer.readFloat (savedPan) == false) return kResultFalse; int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; mPanValue = savedPan; mBypass = savedBypass > 0; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugProcessor::getState (IBStream* state) { // here we need to save the model (preset or project) float toSavePan = mPanValue; int32 toSaveBypass = mBypass ? 1 : 0; IBStreamer streamer (state, kLittleEndian); streamer.writeFloat (toSavePan); streamer.writeInt32 (toSaveBypass); return kResultOk; } //------------------------------------------------------------------------ } // namespace } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/000077500000000000000000000000001461511344300207635ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/CMakeLists.txt000066400000000000000000000010421461511344300235200ustar00rootroot00000000000000 if(NOT SMTG_ENABLE_VSTGUI_SUPPORT) return() endif() cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-pitchnames VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Pitch Names example" ) smtg_add_vst3plugin(pitchnames source/factory.cpp source/pitchnames.cpp source/pitchnames.h source/pitchnamesdatabrowsersource.cpp source/pitchnamesdatabrowsersource.h source/version.h ) target_link_libraries(pitchnames PRIVATE vstgui_support ) smtg_target_setup_as_vst3_example(pitchnames) vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/resource/000077500000000000000000000000001461511344300226125ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/resource/info.rc000066400000000000000000000027071461511344300241010ustar00rootroot00000000000000#include #include "pluginterfaces/base/fplatform.h" #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/resource/pitchnames.uidesc000066400000000000000000000035151461511344300261470ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/source/000077500000000000000000000000001461511344300222635ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/source/factory.cpp000066400000000000000000000062171461511344300244440ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/pitchnames/source/factory.cpp // Created by : Steinberg, 12/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/pluginfactory.h" #include "pitchnames.h" #include "version.h" // for versioning #define stringPluginName "PitchNames" BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID(Steinberg::Vst::PitchNamesProcessor::cid), PClassInfo::kManyInstances, kVstAudioEffectClass, stringPluginName, Vst::kDistributable, "Instrument", FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, Steinberg::Vst::PitchNamesProcessor::createInstance) DEF_CLASS2 (INLINE_UID_FROM_FUID(Steinberg::Vst::PitchNamesController::cid), PClassInfo::kManyInstances, kVstComponentControllerClass, stringPluginName, // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, Steinberg::Vst::PitchNamesController::createInstance) END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/source/pitchnames.cpp000066400000000000000000000200521461511344300251210ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/pitchnames/source/pitchnames.cpp // Created by : Steinberg, 12/2010 // Description : A VST 3 instrument which shows the usage of pitch names for the most simple // case that only the root Unit is defined // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pitchnames.h" #include "pitchnamesdatabrowsersource.h" #include "pluginterfaces/base/ustring.h" using namespace VSTGUI; #define MULTI_CHANNEL_SCENARIO 1 namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- FUID PitchNamesController::cid (0xB9123C35, 0x0FFD404C, 0x826774E0, 0x00819A0C); FUID PitchNamesProcessor::cid (0x32ECDB17, 0xD0894B22, 0xAF9759F8, 0xF5D58DD4); #if MULTI_CHANNEL_SCENARIO static ProgramListID kProgramList0ID = 0; static ProgramListID kProgramList1ID = 1; static UnitID kChannel0UnitId = 'ch00'; static UnitID kChannel1UnitId = 'ch01'; #else static ProgramListID kProgramListID = 0; #endif //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- tresult PLUGIN_API PitchNamesController::initialize (FUnknown* context) { tresult result = EditControllerEx1::initialize (context); if (result == kResultOk) { #if MULTI_CHANNEL_SCENARIO addUnit (new Unit (String ("Root"), kRootUnitId, kNoParentUnitId)); addUnit (new Unit (String ("Channel 0"), kChannel0UnitId, kRootUnitId, kProgramList0ID)); addUnit (new Unit (String ("Channel 1"), kChannel1UnitId, kRootUnitId, kProgramList1ID)); auto* list = new ProgramListWithPitchNames (String ("ProgramList 0"), kProgramList0ID, kChannel0UnitId); list->addProgram (String ("Init 1")); list->setPitchName (0, 0, String ("Channel 0 First Item")); addProgramList (list); parameters.addParameter (list->getParameter ()); list = new ProgramListWithPitchNames (String ("ProgramList 1"), kProgramList1ID, kChannel1UnitId); list->addProgram (String ("Init 1")); list->setPitchName (0, 0, String ("Channel 1 First Item")); addProgramList (list); parameters.addParameter (list->getParameter ()); #else addUnit (new Unit (String ("Root"), kRootUnitId, kNoParentUnitId, kProgramListID)); ProgramListWithPitchNames* list = new ProgramListWithPitchNames (String ("ProgramList"), kProgramListID, kRootUnitId); list->addProgram (String ("Init 1")); list->setPitchName (0, 38, String ("Snare")); list->setPitchName (0, 42, String ("Closed Hi-Hat")); list->setPitchName (0, 45, String ("Low Tom")); addProgramList (list); parameters.addParameter (list->getParameter ()); #endif } return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API PitchNamesController::getUnitByBus (MediaType type, BusDirection dir, int32 busIndex, int32 channel, UnitID& unitId /*out*/) { if (type == kEvent && dir == kInput) { #if MULTI_CHANNEL_SCENARIO if (busIndex == 0) { if (channel == 0) { unitId = kChannel0UnitId; return kResultTrue; } else if (channel == 1) { unitId = kChannel1UnitId; return kResultTrue; } } #else if (busIndex == 0 && channel == 0) { unitId = kRootUnitId; return kResultTrue; } #endif } return kResultFalse; } //----------------------------------------------------------------------------- IPlugView* PLUGIN_API PitchNamesController::createView (FIDString name) { if (ConstString (name) == ViewType::kEditor) { return new VST3Editor (this, "PitchNamesEditor", "pitchnames.uidesc"); } return nullptr; } //----------------------------------------------------------------------------- CView* PitchNamesController::createCustomView (UTF8StringPtr name, const UIAttributes& /*attributes*/, const IUIDescription* /*description*/, VST3Editor* /*editor*/) { #if MULTI_CHANNEL_SCENARIO if (ConstString (name) == "PitchNamesDataBrowser") { IDataBrowserDelegate* dataSource = new PitchNamesDataBrowserSource (this, kChannel0UnitId); return new CDataBrowser (CRect (0, 0, 100, 100), dataSource, CDataBrowser::kDrawRowLines | CDataBrowser::kDrawColumnLines | CDataBrowser::kDrawHeader | CDataBrowser::kVerticalScrollbar); } #else if (ConstString (name) == "PitchNamesDataBrowser") { IDataBrowser* dataSource = new PitchNamesDataBrowserSource (this, kRootUnitId); return new CDataBrowser (CRect (0, 0, 100, 100), 0, dataSource, CDataBrowser::kDrawRowLines | CDataBrowser::kDrawColumnLines | CDataBrowser::kDrawHeader | CDataBrowser::kVerticalScrollbar); } #endif return nullptr; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- PitchNamesProcessor::PitchNamesProcessor () { setControllerClass (PitchNamesController::cid); } //----------------------------------------------------------------------------- tresult PLUGIN_API PitchNamesProcessor::initialize (FUnknown* context) { tresult result = AudioEffect::initialize (context); if (result == kResultOk) { addAudioOutput (USTRING ("Audio Output"), SpeakerArr::kStereo); #if MULTI_CHANNEL_SCENARIO addEventInput (USTRING ("Event Input"), 2); #else addEventInput (USTRING ("Event Input"), 1); #endif } return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API PitchNamesProcessor::process (ProcessData& data) { if (data.numSamples && data.numOutputs) { for (int32 i = 0; i < data.outputs[0].numChannels; i++) memset (data.outputs[0].channelBuffers32[i], 0, data.numSamples * sizeof (float)); data.outputs[0].silenceFlags = 3; } return kResultOk; } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/source/pitchnames.h000066400000000000000000000071501461511344300245720ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/pitchnames/source/pitchnames.h // Created by : Steinberg, 12/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" #include "public.sdk/source/vst/vstaudioeffect.h" #include "base/source/fstring.h" #include "vstgui/plugin-bindings/vst3editor.h" namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- class PitchNamesController : public EditControllerEx1, public VSTGUI::VST3EditorDelegate { public: tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API getUnitByBus (MediaType type, BusDirection dir, int32 busIndex, int32 channel, UnitID& unitId /*out*/) SMTG_OVERRIDE; IPlugView* PLUGIN_API createView (FIDString name) SMTG_OVERRIDE; VSTGUI::CView* createCustomView (VSTGUI::UTF8StringPtr name, const VSTGUI::UIAttributes& attributes, const VSTGUI::IUIDescription* description, VSTGUI::VST3Editor* editor) SMTG_OVERRIDE; static FUnknown* createInstance (void*) { return (IEditController*)new PitchNamesController (); } static FUID cid; }; //----------------------------------------------------------------------------- class PitchNamesProcessor : public AudioEffect { public: PitchNamesProcessor (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; static FUnknown* createInstance (void*) { return (IAudioProcessor*)new PitchNamesProcessor (); } static FUID cid; }; } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/source/pitchnamesdatabrowsersource.cpp000066400000000000000000000245621461511344300306120ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/pitchnames/source/pitchnamesdatabrowsersource.cpp // Created by : Steinberg, 12/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pitchnamesdatabrowsersource.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/base/ustring.h" using namespace Steinberg; using namespace Steinberg::Vst; namespace VSTGUI { //----------------------------------------------------------------------------- PitchNamesDataBrowserSource::PitchNamesDataBrowserSource (EditControllerEx1* editController, Steinberg::Vst::UnitID unitID) : pitchnames (nullptr) { UnitInfo info {0}; int32_t unitCount = editController->getUnitCount (); for (int32_t i = 0; i < unitCount; i++) { editController->getUnitInfo (i, info); if (info.id == unitID) break; } if (info.id == unitID && info.programListId != kNoProgramListId) { if (editController->hasProgramPitchNames (info.programListId, 0) == kResultTrue) { pitchnames = FCast ( editController->getProgramList (info.programListId)); } } } //----------------------------------------------------------------------------- PitchNamesDataBrowserSource::~PitchNamesDataBrowserSource () {} //----------------------------------------------------------------------------- int32_t PitchNamesDataBrowserSource::dbGetNumRows (CDataBrowser* /*browser*/) { if (pitchnames) return 128; return 0; } //----------------------------------------------------------------------------- int32_t PitchNamesDataBrowserSource::dbGetNumColumns (CDataBrowser* /*browser*/) { return 2; } //----------------------------------------------------------------------------- bool PitchNamesDataBrowserSource::dbGetColumnDescription (int32_t /*index*/, CCoord& /*minWidth*/, CCoord& /*maxWidth*/, CDataBrowser* /*browser*/) { return false; } //----------------------------------------------------------------------------- CCoord PitchNamesDataBrowserSource::dbGetCurrentColumnWidth (int32_t index, CDataBrowser* browser) { const CCoord pitchWidth = 40; if (index == 0) return pitchWidth; return browser->getWidth () - pitchWidth; } //----------------------------------------------------------------------------- void PitchNamesDataBrowserSource::dbSetCurrentColumnWidth (int32_t /*index*/, const CCoord& /*width*/, CDataBrowser* /*browser*/) { } //----------------------------------------------------------------------------- CCoord PitchNamesDataBrowserSource::dbGetRowHeight (CDataBrowser* /*browser*/) { return 18; } //----------------------------------------------------------------------------- bool PitchNamesDataBrowserSource::dbGetLineWidthAndColor (CCoord& width, CColor& color, CDataBrowser* /*browser*/) { width = 1.; color = kGreyCColor; return true; } //----------------------------------------------------------------------------- void PitchNamesDataBrowserSource::dbDrawHeader (CDrawContext* context, const CRect& size, int32_t column, int32_t /*flags*/, CDataBrowser* /*browser*/) { context->setDrawMode (kAliasing); context->setFillColor (kGreyCColor); context->drawRect (size, kDrawFilled); std::string name; switch (column) { case 0: name = "Note"; break; case 1: name = "Pitch Name"; break; } context->setFont (kNormalFont); context->setFontColor (kBlackCColor); context->drawString (name.data (), size); } //----------------------------------------------------------------------------- void PitchNamesDataBrowserSource::getPitchName (int16_t pitch, std::string& name) { String128 pitchName; if (pitchnames->getPitchName (0, pitch, pitchName) == kResultTrue) { name = VST3::StringConvert::convert (pitchName); } } //----------------------------------------------------------------------------- void PitchNamesDataBrowserSource::dbDrawCell (CDrawContext* context, const CRect& size, int32_t row, int32_t column, int32_t flags, CDataBrowser* browser) { if (pitchnames == nullptr) return; if (flags & kRowSelected) { CFrame* frame = browser->getFrame (); CColor focusColor (255, 0, 0, 100); if (frame && frame->focusDrawingEnabled ()) focusColor = frame->getFocusColor (); focusColor.alpha /= 2; context->setFillColor (focusColor); context->drawRect (size, kDrawFilled); } std::string cellValue; switch (column) { case 0: { static const char* noteNames[] = {"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"}; int32_t octave = row / 12; cellValue = noteNames[row - octave * 12]; cellValue += std::to_string (octave - 2); break; } case 1: { getPitchName ((int16_t)row, cellValue); break; } } CRect cellSize (size); cellSize.inset (5, 0); context->setFont (kNormalFontSmall); context->setFontColor (kBlackCColor); context->drawString (cellValue.data (), cellSize, kLeftText); } //----------------------------------------------------------------------------- CMouseEventResult PitchNamesDataBrowserSource::dbOnMouseDown (const CPoint& /*where*/, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) { if (buttons.isLeftButton () && buttons.isDoubleClick () && column == 1) { std::string pitchName; getPitchName ((int16_t)row, pitchName); browser->beginTextEdit (CDataBrowser::Cell (row, column), pitchName.data ()); } return kMouseDownEventHandledButDontNeedMovedOrUpEvents; } //----------------------------------------------------------------------------- CMouseEventResult PitchNamesDataBrowserSource::dbOnMouseMoved (const CPoint& /*where*/, const CButtonState& /*buttons*/, int32_t /*row*/, int32_t /*column*/, CDataBrowser* /*browser*/) { return kMouseEventNotHandled; } //----------------------------------------------------------------------------- CMouseEventResult PitchNamesDataBrowserSource::dbOnMouseUp (const CPoint& /*where*/, const CButtonState& /*buttons*/, int32_t /*row*/, int32_t /*column*/, CDataBrowser* /*browser*/) { return kMouseEventNotHandled; } //----------------------------------------------------------------------------- void PitchNamesDataBrowserSource::dbSelectionChanged (CDataBrowser* /*browser*/) {} //----------------------------------------------------------------------------- void PitchNamesDataBrowserSource::dbCellTextChanged (int32_t row, int32_t /*column*/, UTF8StringPtr newText, CDataBrowser* /*browser*/) { if (pitchnames) { UString128 str (newText); if (str.getLength () == 0) pitchnames->removePitchName (0, (int16)row); else pitchnames->setPitchName (0, (int16)row, str); } } //----------------------------------------------------------------------------- void PitchNamesDataBrowserSource::dbCellSetupTextEdit (int32_t /*row*/, int32_t /*column*/, CTextEdit* textEditControl, CDataBrowser* /*browser*/) { textEditControl->setBackColor (kWhiteCColor); textEditControl->setFont (kNormalFontSmall); textEditControl->setFontColor (kRedCColor); textEditControl->setTextInset (CPoint (5, 0)); textEditControl->setHoriAlign (kLeftText); } //----------------------------------------------------------------------------- int32_t PitchNamesDataBrowserSource::dbOnKeyDown (const VstKeyCode& key, CDataBrowser* browser) { if (key.virt == VKEY_RETURN && browser->getSelectedRow () != CDataBrowser::kNoSelection) { std::string pitchName; getPitchName ((int16_t)browser->getSelectedRow (), pitchName); browser->beginTextEdit (CDataBrowser::Cell (browser->getSelectedRow (), 1), pitchName.data ()); return 1; } return -1; } } // namespace vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/source/pitchnamesdatabrowsersource.h000066400000000000000000000111721461511344300302500ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/pitchnames/source/pitchnamesdatabrowsersource.h // Created by : Steinberg, 12/2010 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" #include "vstgui/vstgui.h" #include namespace VSTGUI { //----------------------------------------------------------------------------- class PitchNamesDataBrowserSource : public CBaseObject, public DataBrowserDelegateAdapter { public: PitchNamesDataBrowserSource (Steinberg::Vst::EditControllerEx1* editController, Steinberg::Vst::UnitID unitID); ~PitchNamesDataBrowserSource (); int32_t dbGetNumRows (CDataBrowser* browser) SMTG_OVERRIDE; int32_t dbGetNumColumns (CDataBrowser* browser) SMTG_OVERRIDE; bool dbGetColumnDescription (int32_t index, CCoord& minWidth, CCoord& maxWidth, CDataBrowser* browser) SMTG_OVERRIDE; CCoord dbGetCurrentColumnWidth (int32_t index, CDataBrowser* browser) SMTG_OVERRIDE; void dbSetCurrentColumnWidth (int32_t index, const CCoord& width, CDataBrowser* browser) SMTG_OVERRIDE; CCoord dbGetRowHeight (CDataBrowser* browser) SMTG_OVERRIDE; bool dbGetLineWidthAndColor (CCoord& width, CColor& color, CDataBrowser* browser) SMTG_OVERRIDE; void dbDrawHeader (CDrawContext* context, const CRect& size, int32_t column, int32_t flags, CDataBrowser* browser) SMTG_OVERRIDE; void dbDrawCell (CDrawContext* context, const CRect& size, int32_t row, int32_t column, int32_t flags, CDataBrowser* browser) SMTG_OVERRIDE; CMouseEventResult dbOnMouseDown (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) SMTG_OVERRIDE; CMouseEventResult dbOnMouseMoved (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) SMTG_OVERRIDE; CMouseEventResult dbOnMouseUp (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) SMTG_OVERRIDE; void dbSelectionChanged (CDataBrowser* browser) SMTG_OVERRIDE; void dbCellTextChanged (int32_t row, int32_t column, UTF8StringPtr newText, CDataBrowser* browser) SMTG_OVERRIDE; void dbCellSetupTextEdit (int32_t row, int32_t column, CTextEdit* textEditControl, CDataBrowser* browser) SMTG_OVERRIDE; int32_t dbOnKeyDown (const VstKeyCode& key, CDataBrowser* browser) SMTG_OVERRIDE; protected: void getPitchName (int16_t pitch, std::string& name); Steinberg::Vst::ProgramListWithPitchNames* pitchnames; }; } // namespace vst3sdk-3.7.10.14+~4.13.3/samples/vst/pitchnames/source/version.h000066400000000000000000000055111461511344300241230ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/pitchnames/source/version.h // Created by : Steinberg, 12/2010 // Description : Example of handle the versioning and copyright info of pitchnames plug-in // used for the resources (RC file for example) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "PitchNames.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "PitchNames VST3-SDK (64Bit)" #else #define stringFileDescription "PitchNames VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/000077500000000000000000000000001461511344300227115ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/CMakeLists.txt000066400000000000000000000006651461511344300254600ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-prefetchable VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Prefetchable example" ) smtg_add_vst3plugin(prefetchable source/plug.cpp source/plug.h source/plugcids.h source/plugcontroller.cpp source/plugcontroller.h source/plugentry.cpp source/plugparamids.h source/version.h ) smtg_target_setup_as_vst3_example(prefetchable) vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/resource/000077500000000000000000000000001461511344300245405ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/resource/info.rc000066400000000000000000000026231461511344300260240ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/source/000077500000000000000000000000001461511344300242115ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/source/plug.cpp000066400000000000000000000171571461511344300256770ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/prefetchablesupport/source/again.cpp // Created by : Steinberg, 04/2015 // Description : Plug Example for VST SDK 3.x // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcids.h" // for class ids #include "plugparamids.h" #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "base/source/fstreamer.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug Implementation //------------------------------------------------------------------------ Plug::Plug () : bBypass (false) , mPrefetchableMode (kIsYetPrefetchable) { // register its editor class (the same than used in plugentry.cpp) setControllerClass (PlugControllerUID); } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::initialize (FUnknown* context) { //---always initialize the parent------- tresult result = AudioEffect::initialize (context); // if everything Ok, continue if (result != kResultOk) { return result; } //---create Audio In/Out busses------ // we want a stereo Input and a Stereo Output addAudioInput (STR16 ("Stereo In"), SpeakerArr::kStereo); addAudioOutput (STR16 ("Stereo Out"), SpeakerArr::kStereo); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::process (ProcessData& data) { //---1) Read inputs parameter changes----------- if (IParameterChanges* paramChanges = data.inputParameterChanges) { int32 numParamsChanged = paramChanges->getParameterCount (); // for each parameter which are some changes in this audio block: for (int32 i = 0; i < numParamsChanged; i++) { if (IParamValueQueue* paramQueue = paramChanges->getParameterData (i)) { int32 offsetSamples; double value; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case kBypassId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { bBypass = (value > 0.5f); } break; case kPrefetchableMode: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { mPrefetchableMode = int32 (value * (kNumPrefetchableSupport - 1) + 0.5); } break; } } } } //------------------------------------- //---3) Process Audio--------------------- //------------------------------------- if (data.numInputs == 0 || data.numOutputs == 0) { // nothing to do return kResultOk; } // (simplification) we suppose in this example that we have the same input channel count than // the output int32 numChannels = data.inputs[0].numChannels; //---get audio buffers---------------- float** in = data.inputs[0].channelBuffers32; float** out = data.outputs[0].channelBuffers32; // check if all channel are silent then process silent if (data.inputs[0].silenceFlags == getChannelMask (data.inputs[0].numChannels)) { // mark output silence too data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; int32 sampleFrames = data.numSamples; // the plug-in has to be sure that if it sets the flags silence that the output buffer are // clear for (int32 i = 0; i < numChannels; i++) { // do not need to be cleared if the buffers are the same (in this case input buffer are // already cleared by the host) if (in[i] != out[i]) { memset (out[i], 0, sampleFrames * sizeof (float)); } } // nothing to do at this point return kResultOk; } // mark our outputs has not silent data.outputs[0].silenceFlags = 0; //---in bypass mode outputs should be like inputs----- if (bBypass) { int32 sampleFrames = data.numSamples; for (int32 i = 0; i < numChannels; i++) { // do not need to be copied if the buffers are the same if (in[i] != out[i]) { memcpy (out[i], in[i], sampleFrames * sizeof (float)); } } } else { float gain = 1.f; if (data.processMode == kPrefetch) gain = 0.25f; else if (data.processMode == kOffline) gain = 0.125f; for (int32 i = 0; i < numChannels; i++) { int32 sampleFrames = data.numSamples; float* ptrIn = in[i]; float* ptrOut = out[i]; float tmp; while (--sampleFrames >= 0) { // apply gain tmp = (*ptrIn++) * gain; (*ptrOut++) = tmp; } } } return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::setState (IBStream* state) { // called when we load a preset, the model has to be reloaded if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; bBypass = savedBypass > 0; if (streamer.readInt32 (mPrefetchableMode) == false) return kResultFalse; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::getState (IBStream* state) { // here we need to save the model if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); streamer.writeInt32 (bBypass ? 1 : 0); streamer.writeInt32 (mPrefetchableMode); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::getPrefetchableSupport (PrefetchableSupport& prefetchable /*out*/) { prefetchable = kIsNeverPrefetchable; switch (mPrefetchableMode) { case 0: prefetchable = kIsNeverPrefetchable; break; case 1: prefetchable = kIsYetPrefetchable; break; case 2: prefetchable = kIsNotYetPrefetchable; break; } return kResultOk; } }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/source/plug.h000066400000000000000000000100631461511344300253310ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/prefetchablesupport/source/plug.h // Created by : Steinberg, 04/2015 // Description : Plug-in Example for VST SDK 3.x using IPrefetchableSupport // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" #include "pluginterfaces/vst/ivstprefetchablesupport.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug: directly derived from the helper class AudioEffect //------------------------------------------------------------------------ class Plug : public AudioEffect, public Vst::IPrefetchableSupport { public: Plug (); //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this plug-in //------------------------------------------------------------------------ static FUnknown* createInstance (void* /*context*/) { return (IAudioProcessor*)new Plug; } //------------------------------------------------------------------------ // AudioEffect overrides: //------------------------------------------------------------------------ /** Called at first after constructor */ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; /** Here we go...the process call */ tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; /** For persistence */ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; //--------------------------------------------------------------------- // IPrefetchableSupport //--------------------------------------------------------------------- /** */ tresult PLUGIN_API getPrefetchableSupport (PrefetchableSupport& prefetchable /*out*/) SMTG_OVERRIDE; //---Interface--------- OBJ_METHODS (Plug, AudioEffect) DEFINE_INTERFACES DEF_INTERFACE (Vst::IPrefetchableSupport) END_DEFINE_INTERFACES (AudioEffect) REFCOUNT_METHODS (AudioEffect) //------------------------------------------------------------------------ protected: bool bBypass; int32 mPrefetchableMode; }; }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/source/plugcids.h000066400000000000000000000045441461511344300262030ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/prefetchablesupport/source/plugcids.h // Created by : Steinberg, 04/2015 // Description : define the class IDs for prefetchablesupport // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { static const FUID PlugProcessorUID (0xABFECE0, 0x1A93E746, 0x8341C634, 0x2394798D); static const FUID PlugControllerUID (0xC2472691, 0xB1FA6441, 0xB272196A, 0xD5CE58BB); }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/source/plugcontroller.cpp000066400000000000000000000111571461511344300277750ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/prefetchablesupport/source/plugcontroller.cpp // Created by : Steinberg, 04/2015 // Description : Plug Controller Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plugcontroller.h" #include "plugparamids.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstprefetchablesupport.h" #include "base/source/fstreamer.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController Implementation //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::initialize (FUnknown* context) { tresult result = EditControllerEx1::initialize (context); if (result != kResultOk) { return result; } //---Create Parameters------------ //---Bypass parameter--- int32 stepCount = 1; ParamValue defaultVal = 0; int32 flags = ParameterInfo::kCanAutomate|ParameterInfo::kIsBypass; int32 tag = kBypassId; parameters.addParameter (STR16 ("Bypass"), nullptr, stepCount, defaultVal, flags, tag); //---PrefetchMode parameter tag = kPrefetchableMode; auto* prefetchList = new StringListParameter (STR16 ("Prefetch Mode"), tag); parameters.addParameter (prefetchList); prefetchList->appendString (STR16 ("Is Never")); prefetchList->appendString (STR16 ("Is Yet")); prefetchList->appendString (STR16 ("Is Not Yet")); prefetchList->setNormalized (kIsYetPrefetchable / (kNumPrefetchableSupport - 1)); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::setComponentState (IBStream* state) { // we receive the current state of the component (processor part) // we read only the gain and bypass value... if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 bypassState = 0; if (streamer.readInt32 (bypassState) == false) return kResultFalse; setParamNormalized (kBypassId, bypassState ? 1 : 0); int32 prefetchableMode; if (streamer.readInt32 (prefetchableMode) == false) return kResultFalse; setParamNormalized (kPrefetchableMode, prefetchableMode / (kNumPrefetchableSupport - 1)); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::setParamNormalized (ParamID tag, ParamValue value) { tresult res = kResultFalse; if (tag == kPrefetchableMode) { if (value != getParamNormalized (tag)) { res = EditControllerEx1::setParamNormalized (tag, value); getComponentHandler ()->restartComponent (kPrefetchableSupportChanged); } } else res = EditControllerEx1::setParamNormalized (tag, value); return res; } }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/source/plugcontroller.h000066400000000000000000000063541461511344300274450ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/prefetchablesupport/source/plugcontroller.h // Created by : Steinberg, 04/2015 // Description : prefetchablesupport Editor Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController //------------------------------------------------------------------------ class PlugController: public EditControllerEx1 { public: //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this controller //------------------------------------------------------------------------ static FUnknown* createInstance (void* /*context*/) { return (IEditController*)new PlugController; } //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; //---from EditController----- tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; DELEGATE_REFCOUNT (EditControllerEx1) //------------------------------------------------------------------------ private: }; }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/source/plugentry.cpp000066400000000000000000000103411461511344300267450ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/prefetchablesupport/source/plugentry.cpp // Created by : Steinberg, 04/2015 // Description : prefetchablesupport Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcontroller.h" #include "plugcids.h" // for class ids #include "version.h" // for versioning #include "public.sdk/source/main/pluginfactory.h" #define stringPluginName "Test Prefetchable Support" using namespace Steinberg; using namespace Steinberg::Vst; //------------------------------------------------------------------------ // VST Plug-in Entry //------------------------------------------------------------------------ // Windows: do not forget to include a .def file in your project to export // GetPluginFactory function! //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID(PlugProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) stringPluginName, // here the plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers "Fx", // Subcategory for this plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::Plug::createInstance) // function pointer called when this component should be instantiated // its kVstComponentControllerClass component DEF_CLASS2 (INLINE_UID_FROM_FUID (PlugControllerUID), PClassInfo::kManyInstances, // cardinality kVstComponentControllerClass,// the Controller category (do not change this) stringPluginName "Controller", // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::PlugController::createInstance)// function pointer called when this component should be instantiated END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/source/plugparamids.h000066400000000000000000000044301461511344300270530ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/prefetchablesupport/source/plugparamids.h // Created by : Steinberg, 04/2015 // Description : define the parameter IDs used by prefetchablesupport // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once enum { /** parameter ID */ kBypassId = 0, ///< Bypass value (we will handle the bypass process) (is automatable) kPrefetchableMode }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/prefetchablesupport/source/version.h000066400000000000000000000054271461511344300260570ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/prefetchablesupport/source/version.h // Created by : Steinberg, 04/2015 // Description : Example of handle prefetchablesupport // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "IPrefetchableSupport.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "IPrefetchableSupport VST3-SDK (64Bit)" #else #define stringFileDescription "IPrefetchableSupport VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/000077500000000000000000000000001461511344300214455ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/CMakeLists.txt000066400000000000000000000006711461511344300242110ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-programchange VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Programchange example" ) smtg_add_vst3plugin(programchange source/plug.cpp source/plug.h source/plugcids.h source/plugcontroller.cpp source/plugcontroller.h source/plugentry.cpp source/plugparamids.h source/version.h ) smtg_target_setup_as_vst3_example(programchange) vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/resource/000077500000000000000000000000001461511344300232745ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/resource/info.rc000066400000000000000000000026341461511344300245620ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/source/000077500000000000000000000000001461511344300227455ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/source/plug.cpp000066400000000000000000000176071461511344300244330ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/programchange/source/plug.cpp // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using ProgramChange parameter // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugparamids.h" #include "plugcids.h" // for class ids #include "public.sdk/source/vst/vstaudioprocessoralgo.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/base/futils.h" #include "base/source/fstreamer.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug Implementation //------------------------------------------------------------------------ Plug::Plug () : bBypass (false), currentProgram (0), currentGainValue (0.f) { // register its editor class (the same than used in plugentry.cpp) setControllerClass (PlugControllerUID); } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::initialize (FUnknown* context) { //---always initialize the parent------- tresult result = AudioEffect::initialize (context); // if everything Ok, continue if (result != kResultOk) { return result; } //---create Audio In/Out busses------ // we want a stereo Input and a Stereo Output addAudioInput (STR16 ("Stereo In"), SpeakerArr::kStereo); addAudioOutput (STR16 ("Stereo Out"), SpeakerArr::kStereo); addEventInput (STR16 ("Event In"), 1); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::process (ProcessData& data) { //---1) Read inputs parameter changes----------- if (IParameterChanges* paramChanges = data.inputParameterChanges) { int32 numParamsChanged = paramChanges->getParameterCount (); // for each parameter which are some changes in this audio block: for (int32 i = 0; i < numParamsChanged; i++) { if (IParamValueQueue* paramQueue = paramChanges->getParameterData (i)) { int32 offsetSamples; double value; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { case kBypassId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { bBypass = (value > 0.5f); } break; case kProgramId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { // here we get the last set program currentProgram = FromNormalized (value, kNumProgs - 1); } break; case kGainId: if (paramQueue->getPoint (numPoints - 1, offsetSamples, value) == kResultTrue) { currentGainValue = value; } break; } } } } //--- ---------------------------------- //---3) Process Audio--------------------- //--- ---------------------------------- if (data.numInputs == 0 || data.numOutputs == 0) { // nothing to do return kResultOk; } // (simplification) we suppose in this example that we have the same input channel count than // the output int32 numChannels = data.inputs[0].numChannels; //---get audio buffers---------------- float** in = data.inputs[0].channelBuffers32; float** out = data.outputs[0].channelBuffers32; // check if all channel are silent then process silent if (data.inputs[0].silenceFlags == getChannelMask (data.inputs[0].numChannels)) { // mark output silence too data.outputs[0].silenceFlags = data.inputs[0].silenceFlags; int32 sampleFrames = data.numSamples; // the plug-in has to be sure that if it sets the flags silence that the output buffer are // clear for (int32 i = 0; i < numChannels; i++) { // do not need to be cleared if the buffers are the same (in this case input buffer are // already cleared by the host) if (in[i] != out[i]) { memset (out[i], 0, sampleFrames * sizeof (float)); } } // nothing to do at this point return kResultOk; } // mark our outputs has not silent data.outputs[0].silenceFlags = 0; //---in bypass mode outputs should be like inputs----- if (bBypass) { int32 sampleFrames = data.numSamples; for (int32 i = 0; i < numChannels; i++) { // do not need to be copied if the buffers are the same if (in[i] != out[i]) { memcpy (out[i], in[i], sampleFrames * sizeof (float)); } } } else { // here we use the current program as gain value... float gain = currentGainValue; // in real plug-in it would be better to do dezippering to avoid jump (click) in gain value for (int32 i = 0; i < numChannels; i++) { int32 sampleFrames = data.numSamples; float* ptrIn = in[i]; float* ptrOut = out[i]; float tmp; while (--sampleFrames >= 0) { // apply gain tmp = (*ptrIn++) * gain; (*ptrOut++) = tmp; } } } return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::setState (IBStream* state) { // called when we load a preset, the model has to be reloaded if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 savedBypass = 0; if (streamer.readInt32 (savedBypass) == false) return kResultFalse; // read the program int32 savedProgram = 0; if (streamer.readInt32 (savedProgram) == false) return kResultFalse; // read the Gain param float savedGain = 0.f; if (streamer.readFloat (savedGain) == false) return kResultFalse; bBypass = savedBypass > 0; currentProgram = savedProgram; currentGainValue = savedGain; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Plug::getState (IBStream* state) { // here we need to save the model if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); streamer.writeInt32 (bBypass ? 1 : 0); streamer.writeInt32 (currentProgram); streamer.writeFloat (currentGainValue); return kResultOk; } }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/source/plug.h000066400000000000000000000070201461511344300240640ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/programchange/source/plug.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using ProgramChange parameter // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Plug: directly derived from the helper class AudioEffect //------------------------------------------------------------------------ class Plug : public AudioEffect { public: Plug (); //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this plug-in //------------------------------------------------------------------------ static FUnknown* createInstance (void* /*context*/) { return (IAudioProcessor*)new Plug; } //------------------------------------------------------------------------ // AudioEffect overrides: //------------------------------------------------------------------------ /** Called at first after constructor */ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; /** Here we go...the process call */ tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; /** For persistence */ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: bool bBypass; int32 currentProgram; float currentGainValue; }; } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/source/plugcids.h000066400000000000000000000045601461511344300247350ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/programchange/source/plugcids.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using ProgramChange parameter // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { static const FUID PlugProcessorUID (0xC09CDA28, 0x346B4318, 0x9906B54E, 0x8A7023E2); static const FUID PlugControllerUID (0x86152E37, 0x6F094BDF, 0x9929F219, 0xBA3BBED7); } } // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/source/plugcontroller.cpp000066400000000000000000000133411461511344300265260ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/programchange/source/plugcontroller.cpp // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using ProgramChange parameter // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plugcontroller.h" #include "plugparamids.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "base/source/fstreamer.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/vst/ivstcomponent.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController Implementation //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::initialize (FUnknown* context) { tresult result = EditControllerEx1::initialize (context); if (result != kResultOk) { return result; } //---Create Parameters------------ //---Bypass parameter--- int32 stepCount = 1; ParamValue defaultVal = 0; int32 flags = ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass; int32 tag = kBypassId; parameters.addParameter (STR ("Bypass"), nullptr, stepCount, defaultVal, flags, tag); // create top root unit with kProgramId as id for the programList addUnit (new Unit (STR ("Root"), kRootUnitId, kNoParentUnitId, kProgramId)); // create the program list: here kNumProgs entries auto* prgList = new ProgramList (STR ("Bank"), kProgramId, kRootUnitId); addProgramList (prgList); for (int32 i = 0; i < kNumProgs; i++) { std::u16string title = STR ("Prog "); title += VST3::toString (i + 1); prgList->addProgram (title.data ()); } //---Program Change parameter--- Parameter* prgParam = prgList->getParameter (); // by default this program change parameter if automatable we can overwrite this: prgParam->getInfo ().flags &= ~ParameterInfo::kCanAutomate; parameters.addParameter (prgParam); //---Gain parameter--- parameters.addParameter (STR16 ("Gain"), nullptr, 0, 1.f, ParameterInfo::kCanAutomate, kGainId); return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API PlugController::setParamNormalized (ParamID tag, ParamValue value) { tresult res = EditControllerEx1::setParamNormalized (tag, value); if (res == kResultOk && tag == kProgramId) // program change { // here we use the 1-program as gain...just an example EditControllerEx1::setParamNormalized (kGainId, value); componentHandler->restartComponent (kParamValuesChanged); } return res; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::getUnitByBus (MediaType type, BusDirection dir, int32 busIndex, int32 channel, UnitID& unitId) { if (type == kEvent && dir == kInput && busIndex == 0 && channel == 0) { unitId = kRootUnitId; return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugController::setComponentState (IBStream* state) { // we receive the current state of the component (processor part) // we read only the gain and bypass value... if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); // read the bypass int32 bypassState = 0; if (streamer.readInt32 (bypassState) == false) return kResultFalse; setParamNormalized (kBypassId, bypassState ? 1 : 0); // read the program int32 programState = 0; if (streamer.readInt32 (programState) == false) return kResultFalse; EditControllerEx1::setParamNormalized (kProgramId, ToNormalized (programState, kNumProgs - 1)); // read the Gain param float savedGain = 0.f; if (streamer.readFloat (savedGain) == false) return kResultFalse; setParamNormalized (kGainId, savedGain); return kResultOk; } }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/source/plugcontroller.h000066400000000000000000000066701461511344300262020ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/programchange/source/plugcontroller.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using ProgramChange parameter // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugController //------------------------------------------------------------------------ class PlugController: public EditControllerEx1 { public: //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this controller //------------------------------------------------------------------------ static FUnknown* createInstance (void* /*context*/) { return (IEditController*)new PlugController; } //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; //---from EditControllerEx1----- tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getUnitByBus (MediaType /*type*/, BusDirection /*dir*/, int32 /*busIndex*/, int32 /*channel*/, UnitID& /*unitId*/ /*out*/) SMTG_OVERRIDE; DELEGATE_REFCOUNT (EditControllerEx1) //------------------------------------------------------------------------ private: }; }} // namespaces vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/source/plugentry.cpp000066400000000000000000000103541461511344300255050ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/programchange/source/plugentry.cpp // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using ProgramChange parameter // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plug.h" #include "plugcontroller.h" #include "plugcids.h" // for class ids #include "version.h" // for versioning #include "public.sdk/source/main/pluginfactory.h" #define stringPluginName "Test Program Change" using namespace Steinberg; using namespace Steinberg::Vst; //------------------------------------------------------------------------ // VST Plug-in Entry //------------------------------------------------------------------------ // Windows: do not forget to include a .def file in your project to export // GetPluginFactory function! //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID(PlugProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) stringPluginName, // here the plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers "Fx", // Subcategory for this plug-in (to be changed) FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::Plug::createInstance) // function pointer called when this component should be instantiated // its kVstComponentControllerClass component DEF_CLASS2 (INLINE_UID_FROM_FUID (PlugControllerUID), PClassInfo::kManyInstances, // cardinality kVstComponentControllerClass,// the Controller category (do not change this) stringPluginName "Controller", // controller name (can be the same as the component name) 0, // not used here "", // not used here FULL_VERSION_STR, // Plug-in version (to be changed) kVstVersionString, // the VST 3 SDK version (do not change this, always use this define) Steinberg::Vst::PlugController::createInstance)// function pointer called when this component should be instantiated END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/source/plugparamids.h000066400000000000000000000044611461511344300256130ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/programchange/source/plugparamids.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using ProgramChange parameter // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once enum { /** parameter ID */ kBypassId = 0, ///< Bypass value (we will handle the bypass process) (is automatable) kProgramId, kGainId, kNumProgs = 100 }; vst3sdk-3.7.10.14+~4.13.3/samples/vst/programchange/source/version.h000066400000000000000000000054401461511344300246060ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/programchange/source/version.h // Created by : Steinberg, 02/2016 // Description : Plug-in Example for VST SDK 3.x using ProgramChange parameter // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "TestProgramChange.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "TestProgramChange VST3-SDK (64Bit)" #else #define stringFileDescription "TestProgramChange VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/000077500000000000000000000000001461511344300206235ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/CMakeLists.txt000066400000000000000000000007401461511344300233640ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-syncdelay VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 Sync Delay example" ) smtg_add_vst3plugin(syncdelay source/sync.h source/syncdelaycontroller.cpp source/syncdelaycontroller.h source/syncdelayfactory.cpp source/syncdelayids.h source/syncdelayprocessor.cpp source/syncdelayprocessor.h source/syncdelayversion.h ) smtg_target_setup_as_vst3_example(syncdelay) vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/resource/000077500000000000000000000000001461511344300224525ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/resource/info.rc000066400000000000000000000026451461511344300237420ustar00rootroot00000000000000#include #include "../source/syncdelayversion.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/source/000077500000000000000000000000001461511344300221235ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/source/sync.h000066400000000000000000000062451461511344300232570ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/syncdelay/source/sync.h // Created by : Steinberg, 01/2020 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/vsttypes.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ struct SyncEntry { double value; const TChar* title; }; //------------------------------------------------------------------------ static constexpr std::array Synced = {{ {4.000, STR16 ("1/1")}, {2.000, STR16 ("1/2")}, {1.000, STR16 ("1/4")}, {0.500, STR16 ("1/8")}, {0.250, STR16 ("1/16")}, {0.125, STR16 ("1/32")}, {8.000 / 3., STR16 ("1/1 T")}, {4.000 / 3., STR16 ("1/2 T")}, {2.000 / 3., STR16 ("1/4 T")}, {1.000 / 3., STR16 ("1/8 T")}, {0.500 / 3., STR16 ("1/16 T")}, {0.250 / 3., STR16 ("1/32 T")}, {6.000, STR16 ("1/1 D")}, {3.000, STR16 ("1/2 D")}, {1.500, STR16 ("1/4 D")}, {0.750, STR16 ("1/8 D")}, {0.375, STR16 ("1/16 D")}, {0.1875, STR16 ("1/32 D")}, }}; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/source/syncdelaycontroller.cpp000066400000000000000000000073371461511344300267400ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/syncdelay/source/syncdelaycontroller.cpp // Created by : Steinberg, 01/2020 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "syncdelaycontroller.h" #include "sync.h" #include "syncdelayids.h" #include "base/source/fstreamer.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- tresult PLUGIN_API SyncDelayController::initialize (FUnknown* context) { auto result = EditController::initialize (context); if (result == kResultTrue) { auto delayParam = new StringListParameter (STR16 ("Delay"), kDelayId, nullptr); for (const auto& entry : Synced) delayParam->appendString (entry.title); parameters.addParameter (delayParam); // parameters takes ownership of delayParam parameters.addParameter (STR16 ("Bypass"), nullptr, 1, 0, ParameterInfo::kCanAutomate | ParameterInfo::kIsBypass, kBypassId); } return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API SyncDelayController::setComponentState (IBStream* state) { if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); uint32 savedDelay = 0.f; if (streamer.readInt32u (savedDelay) == false) return kResultFalse; int32 savedBypassState = 0; if (streamer.readInt32 (savedBypassState) == false) return kResultFalse; setParamNormalized (kDelayId, ToNormalized (savedDelay, static_cast (Synced.size () - 1))); setParamNormalized (kBypassId, savedBypassState ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/source/syncdelaycontroller.h000066400000000000000000000061731461511344300264020ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/syncdelay/source/syncdelaycontroller.h // Created by : Steinberg, 01/2020 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "sync.h" #include "public.sdk/source/vst/vsteditcontroller.h" namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- class SyncDelayController : public EditController { public: //------------------------------------------------------------------------ // create function required for plug-in factory, // it will be called to create new instances of this controller //------------------------------------------------------------------------ static FUnknown* createInstance (void*) { return static_cast (new SyncDelayController ()); } //---from IPluginBase-------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; //---from EditController----- tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; //---Interface--------- OBJ_METHODS (SyncDelayController, EditController) REFCOUNT_METHODS (EditController) }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/source/syncdelayfactory.cpp000066400000000000000000000057561461511344300262270ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/syncdelay/source/syncdelayfactory.cpp // Created by : Steinberg, 01/2020 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "syncdelaycontroller.h" #include "syncdelayids.h" #include "syncdelayprocessor.h" #include "syncdelayversion.h" #include "public.sdk/source/main/pluginfactory.h" #define stringPluginName "SyncDelay" BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS2 (INLINE_UID_FROM_FUID (Steinberg::Vst::SyncDelayProcessorUID), PClassInfo::kManyInstances, kVstAudioEffectClass, stringPluginName, Vst::kDistributable, "Fx|Delay", FULL_VERSION_STR, kVstVersionString, Steinberg::Vst::SyncDelayProcessor::createInstance) DEF_CLASS2 (INLINE_UID_FROM_FUID (Steinberg::Vst::SyncDelayControllerUID), PClassInfo::kManyInstances, kVstComponentControllerClass, stringPluginName "Controller", 0, "", FULL_VERSION_STR, kVstVersionString, Steinberg::Vst::SyncDelayController::createInstance) END_FACTORY vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/source/syncdelayids.h000066400000000000000000000047571461511344300250040ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/syncdelay/source/syncdelayids.h // Created by : Steinberg, 01/2020 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once namespace Steinberg { namespace Vst { // parameter tags enum { kDelayId = 100, kBypassId = 101 }; // unique class ids static const FUID SyncDelayProcessorUID (0x73088025, 0xDFC14D03, 0xACFEE5B5, 0x0D2C4356); static const FUID SyncDelayControllerUID (0x2B00D28A, 0x0A1F4A87, 0xB65DD9A1, 0xB315804B); //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/source/syncdelayprocessor.cpp000066400000000000000000000206731461511344300265720ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/syncdelay/source/syncdelayprocessor.cpp // Created by : Steinberg, 01/2020 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "syncdelayprocessor.h" #include "sync.h" #include "syncdelayids.h" #include "base/source/fstreamer.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/ivstprocesscontext.h" #include #include #include namespace Steinberg { namespace Vst { static constexpr auto maxDelaySeconds = 5; //----------------------------------------------------------------------------- SyncDelayProcessor::SyncDelayProcessor () { setControllerClass (SyncDelayControllerUID); processContextRequirements.needTempo (); } //----------------------------------------------------------------------------- tresult PLUGIN_API SyncDelayProcessor::initialize (FUnknown* context) { auto result = AudioEffect::initialize (context); if (result == kResultTrue) { addAudioInput (STR16 ("AudioInput"), SpeakerArr::kStereo); addAudioOutput (STR16 ("AudioOutput"), SpeakerArr::kStereo); } return result; } //----------------------------------------------------------------------------- tresult PLUGIN_API SyncDelayProcessor::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { // we only support one in and output bus and these busses must have the same number of channels if (numIns == 1 && numOuts == 1 && inputs[0] == outputs[0]) return AudioEffect::setBusArrangements (inputs, numIns, outputs, numOuts); return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API SyncDelayProcessor::setActive (TBool state) { SpeakerArrangement arr; if (getBusArrangement (kOutput, 0, arr) != kResultTrue) return kResultFalse; auto numChannels = SpeakerArr::getChannelCount (arr); if (numChannels == 0) return kResultFalse; if (state) { mBuffer = static_cast (std::malloc (numChannels * sizeof (float*))); // use a maximum of 5 seconds delay time mBufferSizeInSamples = static_cast (std::ceil (processSetup.sampleRate) * maxDelaySeconds); auto size = static_cast (mBufferSizeInSamples * sizeof (float)); for (int32 channel = 0; channel < numChannels; channel++) { mBuffer[channel] = static_cast (std::malloc (size)); if (mBuffer[channel]) memset (mBuffer[channel], 0, size); } mBufferPos = 0; mDelayIndex = FromNormalized (0, static_cast(Synced.size () - 1)); mBypassProcessor.setup (*this, processSetup, 0); } else { if (mBuffer) { for (int32 channel = 0; channel < numChannels; channel++) { std::free (mBuffer[channel]); } std::free (mBuffer); mBuffer = nullptr; } mBypassProcessor.reset (); } return AudioEffect::setActive (state); } //------------------------------------------------------------------------ void SyncDelayProcessor::calculateDelay () { mDelayInSamples = (60. / mTempo) * Synced[mDelayIndex].value * processSetup.sampleRate; mDelayInSamples = Bound (uint32(1), mBufferSizeInSamples, mDelayInSamples); } //------------------------------------------------------------------------ void SyncDelayProcessor::doParameterChanges (IParameterChanges& changes) { auto numParamsChanged = changes.getParameterCount (); for (int32 index = 0; index < numParamsChanged; index++) { if (auto queue = changes.getParameterData (index)) { ParamValue value; int32 sampleOffset; auto numPoints = queue->getPointCount (); switch (queue->getParameterId ()) { case kDelayId: { if (queue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) { mDelayIndex = FromNormalized (value, static_cast(Synced.size () - 1)); } break; } case kBypassId: { if (queue->getPoint (numPoints - 1, sampleOffset, value) == kResultTrue) { mBypassProcessor.setActive (value > 0.5); } break; } } } } } //----------------------------------------------------------------------------- tresult PLUGIN_API SyncDelayProcessor::process (ProcessData& data) { if (data.processContext && data.processContext->state & ProcessContext::kTempoValid) { if (data.processContext->tempo != mTempo) { mTempo = data.processContext->tempo; } } if (data.inputParameterChanges) { doParameterChanges (*data.inputParameterChanges); } if (mBypassProcessor.isActive ()) { mBypassProcessor.process (data); } else if (data.numSamples > 0) { calculateDelay (); SpeakerArrangement arr; getBusArrangement (kOutput, 0, arr); auto numChannels = SpeakerArr::getChannelCount (arr); for (int32 channel = 0; channel < numChannels; channel++) { auto inputChannel = data.inputs[0].channelBuffers32[channel]; auto outputChannel = data.outputs[0].channelBuffers32[channel]; auto tempBufferPos = mBufferPos; for (int32 sampleIndex = 0; sampleIndex < data.numSamples; sampleIndex++) { auto sampleValue = inputChannel[sampleIndex]; outputChannel[sampleIndex] = mBuffer[channel][tempBufferPos]; mBuffer[channel][tempBufferPos] = sampleValue; tempBufferPos++; if (tempBufferPos >= mDelayInSamples) tempBufferPos = 0; } } mBufferPos += data.numSamples; while (mDelayInSamples && mBufferPos >= mDelayInSamples) mBufferPos -= mDelayInSamples; } return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API SyncDelayProcessor::setState (IBStream* state) { if (!state) return kResultFalse; IBStreamer streamer (state, kLittleEndian); uint32 savedDelayIndex = 0; if (streamer.readInt32u (savedDelayIndex) == false) return kResultFalse; int32 savedBypassState = 0; if (streamer.readInt32 (savedBypassState) == false) return kResultFalse; mDelayIndex = savedDelayIndex; mBypassProcessor.setActive (savedBypassState > 0); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API SyncDelayProcessor::getState (IBStream* state) { IBStreamer streamer (state, kLittleEndian); streamer.writeInt32u (mDelayIndex); streamer.writeInt32 (mBypassProcessor.isActive () ? 1 : 0); return kResultOk; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/source/syncdelayprocessor.h000066400000000000000000000070021461511344300262260ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/syncdelay/source/syncdelayprocessor.h // Created by : Steinberg, 01/2020 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" #include "public.sdk/source/vst/vstbypassprocessor.h" namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- class SyncDelayProcessor : public AudioEffect { public: SyncDelayProcessor (); tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; //------------------------------------------------------------------------ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; static FUnknown* createInstance (void*) { return static_cast (new SyncDelayProcessor ()); } protected: void doParameterChanges (IParameterChanges& changes); void calculateDelay (); BypassProcessor mBypassProcessor; uint32 mDelayIndex {0}; uint32 mDelayInSamples {1}; uint32 mBufferSizeInSamples {0}; double mTempo {120}; float** mBuffer {nullptr}; uint32 mBufferPos {0}; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/syncdelay/source/syncdelayversion.h000066400000000000000000000054771461511344300257120ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/syncdelay/source/syncdelayversion.h // Created by : Steinberg, 01/2020 // Description : Example of handle the versioning and copyright info of syncdelay plugin // used for the resources (RC file for example) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "syncdelay.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "SyncDelay VST3-SDK (64Bit)" #else #define stringFileDescription "SyncDelay VST3-SDK" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright "© 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/000077500000000000000000000000001461511344300204365ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/CMakeLists.txt000066400000000000000000000007031461511344300231760ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.15.0) project(smtg-vst3-utf16name VERSION ${vstsdk_VERSION}.0 DESCRIPTION "Steinberg VST 3 UTF16Name example" ) smtg_add_vst3plugin(utf16name source/version.h source/utf16namecids.h source/utf16nameprocessor.h source/utf16nameprocessor.cpp source/utf16namecontroller.h source/utf16namecontroller.cpp source/utf16nameentry.cpp ) smtg_target_setup_as_vst3_example(utf16name) vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/resource/000077500000000000000000000000001461511344300222655ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/resource/info.rc000066400000000000000000000026341461511344300235530ustar00rootroot00000000000000#include #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/source/000077500000000000000000000000001461511344300217365ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/source/utf16namecids.h000066400000000000000000000051531461511344300245640ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/utf16name/source/utf16namecids.h // Created by : Steinberg, 11/2023 // Description : UTF16Name Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/funknown.h" #include "pluginterfaces/vst/vsttypes.h" namespace Steinberg { //------------------------------------------------------------------------ static const Steinberg::FUID kUTF16NameProcessorUID (0x04F0CA5C, 0x1A1650F6, 0x9F2EE4F3, 0xC216D8B5); static const Steinberg::FUID kUTF16NameControllerUID (0xB6F0EFA6, 0x5EAB57DF, 0x9965FCF8, 0x026EA04D); #define UTF16NameVST3Category "Fx" //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/source/utf16namecontroller.cpp000066400000000000000000000130431461511344300263550ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/utf16name/source/utf16namecontroller.cpp // Created by : Steinberg, 11/2023 // Description : UTF16Name Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "utf16namecontroller.h" #include "utf16namecids.h" namespace Steinberg { //------------------------------------------------------------------------ // UTF16NameController Implementation //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameController::initialize (FUnknown* context) { // Here the Plug-in will be instantiated //---do not forget to call parent ------ tresult result = EditControllerEx1::initialize (context); if (result != kResultOk) { return result; } // Here you could register some parameters return result; } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameController::terminate () { // Here the Plug-in will be de-instantiated, last possibility to remove some memory! //---do not forget to call parent ------ return EditControllerEx1::terminate (); } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameController::setComponentState (IBStream* state) { // Here you get the state of the component (Processor part) if (!state) return kResultFalse; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameController::setState (IBStream* state) { // Here you get the state of the controller return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameController::getState (IBStream* state) { // Here you are asked to deliver the state of the controller (if needed) // Note: the real state of your plug-in is saved in the processor return kResultTrue; } //------------------------------------------------------------------------ IPlugView* PLUGIN_API UTF16NameController::createView (FIDString name) { // Here the Host wants to open your editor (if you have one) if (FIDStringsEqual (name, Vst::ViewType::kEditor)) { // create your editor here and return a IPlugView ptr of it return nullptr; } return nullptr; } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameController::setParamNormalized (Vst::ParamID tag, Vst::ParamValue value) { // called by host to update your parameters tresult result = EditControllerEx1::setParamNormalized (tag, value); return result; } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameController::getParamStringByValue (Vst::ParamID tag, Vst::ParamValue valueNormalized, Vst::String128 string) { // called by host to get a string for given normalized value of a specific parameter // (without having to set the value!) return EditControllerEx1::getParamStringByValue (tag, valueNormalized, string); } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameController::getParamValueByString (Vst::ParamID tag, Vst::TChar* string, Vst::ParamValue& valueNormalized) { // called by host to get a normalized value from a string representation of a specific parameter // (without having to set the value!) return EditControllerEx1::getParamValueByString (tag, string, valueNormalized); } //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/source/utf16namecontroller.h000066400000000000000000000076601461511344300260320ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/utf16name/source/utf16namecontroller.h // Created by : Steinberg, 11/2023 // Description : UTF16Name Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vsteditcontroller.h" namespace Steinberg { //------------------------------------------------------------------------ // UTF16NameController //------------------------------------------------------------------------ class UTF16NameController : public Vst::EditControllerEx1 { public: //------------------------------------------------------------------------ UTF16NameController () = default; ~UTF16NameController () SMTG_OVERRIDE = default; // Create function static FUnknown* createInstance (void* /*context*/) { return (Vst::IEditController*)new UTF16NameController; } // IPluginBase tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; // EditController tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; IPlugView* PLUGIN_API createView (FIDString name) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (Vst::ParamID tag, Vst::ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (Vst::ParamID tag, Vst::ParamValue valueNormalized, Vst::String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (Vst::ParamID tag, Vst::TChar* string, Vst::ParamValue& valueNormalized) SMTG_OVERRIDE; //---Interface--------- DEFINE_INTERFACES // Here you can add more supported VST3 interfaces // DEF_INTERFACE (Vst::IXXX) END_DEFINE_INTERFACES (EditController) DELEGATE_REFCOUNT (EditController) //------------------------------------------------------------------------ protected: }; //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/source/utf16nameentry.cpp000066400000000000000000000107611461511344300253370ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/utf16name/source/utf16nameentry.cpp // Created by : Steinberg, 11/2023 // Description : UTF16Name Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "utf16nameprocessor.h" #include "utf16namecontroller.h" #include "utf16namecids.h" #include "version.h" #include "public.sdk/source/main/pluginfactory.h" // name with UTF characters #define stringPluginNameU u"UTF16Name öüäéèê-やあ-مرحبًا" #define stringCompanyNameU u"Steinberg Media Technologies - öüäéèê-やあ-مرحبًا" using namespace Steinberg::Vst; #define CONCAT(prefix, text) prefix##text #define U(text) CONCAT(u, text) //------------------------------------------------------------------------ // VST Plug-in Entry //------------------------------------------------------------------------ // Windows: do not forget to include a .def file in your project to export // GetPluginFactory function! //------------------------------------------------------------------------ BEGIN_FACTORY_DEF (stringCompanyName, stringCompanyWeb, stringCompanyEmail) //---First Plug-in included in this factory------- // its kVstAudioEffectClass component DEF_CLASS_W2 (INLINE_UID_FROM_FUID(kUTF16NameProcessorUID), PClassInfo::kManyInstances, // cardinality kVstAudioEffectClass, // the component category (do not change this) stringPluginNameU, // here the Plug-in name (to be changed) Vst::kDistributable, // means that component and controller could be distributed on different computers UTF16NameVST3Category, // Subcategory for this Plug-in (to be changed) stringCompanyNameU, U(FULL_VERSION_STR), // Plug-in version (to be changed) U(kVstVersionString), // the VST 3 SDK version (do not change this, use always this define) UTF16NameProcessor::createInstance) // function pointer called when this component should be instantiated // its kVstComponentControllerClass component DEF_CLASS_W2 (INLINE_UID_FROM_FUID (kUTF16NameControllerUID), PClassInfo::kManyInstances, // cardinality kVstComponentControllerClass,// the Controller category (do not changed this) stringPluginNameU, // controller name (could be the same than component name) 0, // not used here "", // not used here U(""), // not used here U(FULL_VERSION_STR), // Plug-in version (to be changed) U(kVstVersionString), // the VST 3 SDK version (do not changed this, use always this define) UTF16NameController::createInstance)// function pointer called when this component should be instantiated END_FACTORY #define TEXT "toto" #define UTEXT u##TEXTvst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/source/utf16nameprocessor.cpp000066400000000000000000000137041461511344300262150ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/utf16name/source/utf16nameprocessor.cpp // Created by : Steinberg, 11/2023 // Description : UTF16Name Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "utf16nameprocessor.h" #include "utf16namecids.h" #include "base/source/fstreamer.h" #include "pluginterfaces/vst/ivstparameterchanges.h" namespace Steinberg { //------------------------------------------------------------------------ // UTF16NameProcessor //------------------------------------------------------------------------ UTF16NameProcessor::UTF16NameProcessor () { //--- set the wanted controller for our processor setControllerClass (kUTF16NameControllerUID); } //------------------------------------------------------------------------ UTF16NameProcessor::~UTF16NameProcessor () { } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameProcessor::initialize (FUnknown* context) { // Here the Plug-in will be instantiated //---always initialize the parent------- tresult result = AudioEffect::initialize (context); // if everything Ok, continue if (result != kResultOk) { return result; } //--- create Audio IO ------ addAudioInput (STR16 ("Stereo In"), Steinberg::Vst::SpeakerArr::kStereo); addAudioOutput (STR16 ("Stereo Out"), Steinberg::Vst::SpeakerArr::kStereo); /* If you don't need an event bus, you can remove the next line */ addEventInput (STR16 ("Event In"), 1); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameProcessor::terminate () { // Here the Plug-in will be de-instantiated, last possibility to remove some memory! //---do not forget to call parent ------ return AudioEffect::terminate (); } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameProcessor::setActive (TBool state) { //--- called when the Plug-in is enable/disable (On/Off) ----- return AudioEffect::setActive (state); } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameProcessor::process (Vst::ProcessData& data) { //--- First : Read inputs parameter changes----------- /*if (data.inputParameterChanges) { int32 numParamsChanged = data.inputParameterChanges->getParameterCount (); for (int32 index = 0; index < numParamsChanged; index++) { if (auto* paramQueue = data.inputParameterChanges->getParameterData (index)) { Vst::ParamValue value; int32 sampleOffset; int32 numPoints = paramQueue->getPointCount (); switch (paramQueue->getParameterId ()) { } } } }*/ //--- Here you have to implement your processing return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameProcessor::setupProcessing (Vst::ProcessSetup& newSetup) { //--- called before any processing ---- return AudioEffect::setupProcessing (newSetup); } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameProcessor::canProcessSampleSize (int32 symbolicSampleSize) { // by default kSample32 is supported if (symbolicSampleSize == Vst::kSample32) return kResultTrue; // disable the following comment if your processing support kSample64 /* if (symbolicSampleSize == Vst::kSample64) return kResultTrue; */ return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameProcessor::setState (IBStream* state) { // called when we load a preset, the model has to be reloaded IBStreamer streamer (state, kLittleEndian); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API UTF16NameProcessor::getState (IBStream* state) { // here we need to save the model IBStreamer streamer (state, kLittleEndian); return kResultOk; } //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/source/utf16nameprocessor.h000066400000000000000000000074331461511344300256640ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/utf16name/source/utf16nameprocessor.h // Created by : Steinberg, 11/2023 // Description : UTF16Name Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" namespace Steinberg { //------------------------------------------------------------------------ // UTF16NameProcessor //------------------------------------------------------------------------ class UTF16NameProcessor : public Vst::AudioEffect { public: UTF16NameProcessor (); ~UTF16NameProcessor () SMTG_OVERRIDE; // Create function static FUnknown* createInstance (void* /*context*/) { return (Vst::IAudioProcessor*)new UTF16NameProcessor; } //--- --------------------------------------------------------------------- // AudioEffect overrides: //--- --------------------------------------------------------------------- /** Called at first after constructor */ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; /** Called at the end before destructor */ tresult PLUGIN_API terminate () SMTG_OVERRIDE; /** Switch the Plug-in on/off */ tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; /** Will be called before any process call */ tresult PLUGIN_API setupProcessing (Vst::ProcessSetup& newSetup) SMTG_OVERRIDE; /** Asks if a given sample size is supported see SymbolicSampleSizes. */ tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; /** Here we go...the process call */ tresult PLUGIN_API process (Vst::ProcessData& data) SMTG_OVERRIDE; /** For persistence */ tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: }; //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/samples/vst/utf16name/source/version.h000066400000000000000000000053321461511344300235770ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/samples/vst/utf16name/source/version.h // Created by : Steinberg, 11/2023 // Description : UTF16Name Example for VST 3 // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/fplatform.h" // Plain project version file generated by cmake #include "projectversion.h" #define stringOriginalFilename "UTF16Name.vst3" #if SMTG_PLATFORM_64 #define stringFileDescription "UTF16Name VST3 (64Bit)" #else #define stringFileDescription "UTF16Name VST3" #endif #define stringCompanyWeb "http://www.steinberg.net" #define stringCompanyEmail "mailto:info@steinberg.de" #define stringCompanyName "Steinberg Media Technologies" #define stringLegalCopyright " 2024 Steinberg Media Technologies" #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" vst3sdk-3.7.10.14+~4.13.3/source/000077500000000000000000000000001461511344300156505ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/common/000077500000000000000000000000001461511344300171405ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/common/commoniids.cpp000066400000000000000000000052221461511344300220060ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // Version : 1.0 // // Category : Common Base Classes // Filename : public.sdk/source/common/commoniids.cpp // Created by : Steinberg, 01/2019 // Description : Define some IIDs // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginterfaces/gui/iplugview.h" #include "pluginterfaces/gui/iplugviewcontentscalesupport.h" namespace Steinberg { //----VST 3.0-------------------------------- DEF_CLASS_IID (IPlugView) DEF_CLASS_IID (IPlugFrame) //----VST 3.6.0-------------------------------- DEF_CLASS_IID (IPlugViewContentScaleSupport) #if SMTG_OS_LINUX DEF_CLASS_IID (Linux::IEventHandler) DEF_CLASS_IID (Linux::ITimerHandler) DEF_CLASS_IID (Linux::IRunLoop) #endif //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/common/memorystream.cpp000066400000000000000000000166651461511344300224060ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // // Category : Common Classes // Filename : public.sdk/source/common/memorystream.cpp // Created by : Steinberg, 03/2008 // Description : IBStream Implementation for memory blocks // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "memorystream.h" #include "pluginterfaces/base/futils.h" #include namespace Steinberg { //----------------------------------------------------------------------------- IMPLEMENT_FUNKNOWN_METHODS (MemoryStream, IBStream, IBStream::iid) static const TSize kMemGrowAmount = 4096; //----------------------------------------------------------------------------- MemoryStream::MemoryStream (void* data, TSize length) : memory ((char*)data) , memorySize (length) , size (length) , cursor (0) , ownMemory (false) , allocationError (false) { FUNKNOWN_CTOR } //----------------------------------------------------------------------------- MemoryStream::MemoryStream () : memory (nullptr) , memorySize (0) , size (0) , cursor (0) , ownMemory (true) , allocationError (false) { FUNKNOWN_CTOR } //----------------------------------------------------------------------------- MemoryStream::~MemoryStream () { if (ownMemory && memory) ::free (memory); FUNKNOWN_DTOR } //----------------------------------------------------------------------------- tresult PLUGIN_API MemoryStream::read (void* data, int32 numBytes, int32* numBytesRead) { if (memory == nullptr) { if (allocationError) return kOutOfMemory; numBytes = 0; } else { // Does read exceed size ? if (cursor + numBytes > size) { int32 maxBytes = int32 (size - cursor); // Has length become zero or negative ? if (maxBytes <= 0) { cursor = size; numBytes = 0; } else numBytes = maxBytes; } if (numBytes) { memcpy (data, &memory[cursor], static_cast (numBytes)); cursor += numBytes; } } if (numBytesRead) *numBytesRead = numBytes; return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API MemoryStream::write (void* buffer, int32 numBytes, int32* numBytesWritten) { if (allocationError) return kOutOfMemory; if (buffer == nullptr) return kInvalidArgument; // Does write exceed size ? TSize requiredSize = cursor + numBytes; if (requiredSize > size) { if (requiredSize > memorySize) setSize (requiredSize); else size = requiredSize; } // Copy data if (memory && cursor >= 0 && numBytes > 0) { memcpy (&memory[cursor], buffer, static_cast (numBytes)); // Update cursor cursor += numBytes; } else numBytes = 0; if (numBytesWritten) *numBytesWritten = numBytes; return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API MemoryStream::seek (int64 pos, int32 mode, int64* result) { switch (mode) { case kIBSeekSet: cursor = pos; break; case kIBSeekCur: cursor = cursor + pos; break; case kIBSeekEnd: cursor = size + pos; break; } if (ownMemory == false) if (cursor > memorySize) cursor = memorySize; if (result) *result = cursor; return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API MemoryStream::tell (int64* pos) { if (!pos) return kInvalidArgument; *pos = cursor; return kResultTrue; } //------------------------------------------------------------------------ TSize MemoryStream::getSize () const { return size; } //------------------------------------------------------------------------ void MemoryStream::setSize (TSize s) { if (s <= 0) { if (ownMemory && memory) free (memory); memory = nullptr; memorySize = 0; size = 0; cursor = 0; return; } TSize newMemorySize = (((Max (memorySize, s) - 1) / kMemGrowAmount) + 1) * kMemGrowAmount; if (newMemorySize == memorySize) { size = s; return; } if (memory && ownMemory == false) { allocationError = true; return; } ownMemory = true; char* newMemory = nullptr; if (memory) { newMemory = (char*)realloc (memory, (size_t)newMemorySize); if (newMemory == nullptr && newMemorySize > 0) { newMemory = (char*)malloc ((size_t)newMemorySize); if (newMemory) { memcpy (newMemory, memory, (size_t)Min (newMemorySize, memorySize)); free (memory); } } } else newMemory = (char*)malloc ((size_t)newMemorySize); if (newMemory == nullptr) { if (newMemorySize > 0) allocationError = true; memory = nullptr; memorySize = 0; size = 0; cursor = 0; } else { memory = newMemory; memorySize = newMemorySize; size = s; } } //------------------------------------------------------------------------ char* MemoryStream::getData () const { return memory; } //------------------------------------------------------------------------ char* MemoryStream::detachData () { if (ownMemory) { char* result = memory; memory = nullptr; memorySize = 0; size = 0; cursor = 0; return result; } return nullptr; } //------------------------------------------------------------------------ bool MemoryStream::truncate () { if (ownMemory == false) return false; if (memorySize == size) return true; memorySize = size; if (memorySize == 0) { if (memory) { free (memory); memory = nullptr; } } else { if (memory) { char* newMemory = (char*)realloc (memory, (size_t)memorySize); if (newMemory) memory = newMemory; } } return true; } //------------------------------------------------------------------------ bool MemoryStream::truncateToCursor () { size = cursor; return truncate (); } } // namespace vst3sdk-3.7.10.14+~4.13.3/source/common/memorystream.h000066400000000000000000000074541461511344300220470ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // // Category : Common Classes // Filename : public.sdk/source/common/memorystream.h // Created by : Steinberg, 03/2008 // Description : IBStream Implementation for memory blocks // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ibstream.h" namespace Steinberg { //------------------------------------------------------------------------ /** Memory based Stream for IBStream implementation (using malloc). \ingroup sdkBase */ class MemoryStream : public IBStream { public: //------------------------------------------------------------------------ MemoryStream (); MemoryStream (void* memory, TSize memorySize); ///< reuse a given memory without getting ownership virtual ~MemoryStream (); //---IBStream--------------------------------------- tresult PLUGIN_API read (void* buffer, int32 numBytes, int32* numBytesRead) SMTG_OVERRIDE; tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten) SMTG_OVERRIDE; tresult PLUGIN_API seek (int64 pos, int32 mode, int64* result) SMTG_OVERRIDE; tresult PLUGIN_API tell (int64* pos) SMTG_OVERRIDE; TSize getSize () const; ///< returns the current memory size void setSize (TSize size); ///< set the memory size, a realloc will occur if memory already used char* getData () const; ///< returns the memory pointer char* detachData (); ///< returns the memory pointer and give up ownership bool truncate (); ///< realloc to the current use memory size if needed bool truncateToCursor (); ///< truncate memory at current cursor position //------------------------------------------------------------------------ DECLARE_FUNKNOWN_METHODS protected: char* memory; // memory block TSize memorySize; // size of the memory block TSize size; // size of the stream int64 cursor; // stream pointer bool ownMemory; // stream has allocated memory itself bool allocationError; // stream invalid }; } // namespace vst3sdk-3.7.10.14+~4.13.3/source/common/openurl.cpp000066400000000000000000000055161461511344300213370ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // // Category : Helpers // Project : Steinberg Plug-In SDK // Filename : public.sdk/source/common/openurl.cpp // Created by : Steinberg 04.2020 // Description : Simple helper allowing to open a URL in the default associated application // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "openurl.h" #include "pluginterfaces/base/ftypes.h" #if SMTG_OS_WINDOWS // keep this order #include #include #else #include #endif namespace Steinberg { bool openURLInDefaultApplication (const String& address) { bool res = false; #if SMTG_OS_WINDOWS auto r = ShellExecuteA (nullptr, "open", address.text8 (), nullptr, nullptr, SW_SHOWNORMAL); res = (r != nullptr); #elif SMTG_OS_OSX String cmd; cmd += "open \""; cmd += address.text8 (); cmd += "\""; res = system (cmd) != 0; #elif SMTG_OS_LINUX String cmd; cmd += "xdg-open \""; cmd += address.text8 (); cmd += "\""; res = system (cmd) != 0; #endif return res; } } vst3sdk-3.7.10.14+~4.13.3/source/common/openurl.h000066400000000000000000000052401461511344300207760ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // // Category : Helpers // Project : Steinberg Plug-In SDK // Filename : public.sdk/source/common/openurl.h // Created by : Steinberg 04.2020 // Description : Simple helper allowing to open a URL in the default associated application // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "base/source/fstring.h" namespace Steinberg { /** Open the given URL into the default web browser. \ingroup sdkBase It returns true if a default application is found and opened else false. Example: \code{.cpp} if (openURLInDefaultApplication ("https://www.steinberg.net/")) { // everything seems to be ok } \endcode */ bool openURLInDefaultApplication (const String& address); //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/common/pluginview.cpp000066400000000000000000000070651461511344300220450ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // // Category : Common Base Classes // Filename : public.sdk/source/common/pluginview.cpp // Created by : Steinberg, 01/2004 // Description : Plug-In View Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginview.h" namespace Steinberg { //------------------------------------------------------------------------ // CPluginView implementation //------------------------------------------------------------------------ CPluginView::CPluginView (const ViewRect* _rect) : rect (0, 0, 0, 0) { if (_rect) rect = *_rect; } //------------------------------------------------------------------------ CPluginView::~CPluginView () { setFrame (nullptr); } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginView::isPlatformTypeSupported (FIDString /*type*/) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginView::attached (void* parent, FIDString /*type*/) { systemWindow = parent; attachedToParent (); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginView::removed () { systemWindow = nullptr; removedFromParent (); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginView::onSize (ViewRect* newSize) { if (newSize) rect = *newSize; return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginView::getSize (ViewRect* size) { if (size) { *size = rect; return kResultTrue; } return kInvalidArgument; } } // end of namespace vst3sdk-3.7.10.14+~4.13.3/source/common/pluginview.h000066400000000000000000000111521461511344300215020ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // // Category : Common Base Classes // Filename : public.sdk/source/common/pluginview.h // Created by : Steinberg, 01/2004 // Description : Plug-In View Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/gui/iplugview.h" #include "base/source/fobject.h" namespace Steinberg { //------------------------------------------------------------------------ /** Plug-In view default implementation. \ingroup sdkBase Can be used as base class for an IPlugView implementation. */ class CPluginView : public FObject, public IPlugView { public: //------------------------------------------------------------------------ CPluginView (const ViewRect* rect = nullptr); ~CPluginView () SMTG_OVERRIDE; /** Returns its current frame rectangle. */ const ViewRect& getRect () const { return rect; } /** Sets a new frame rectangle. */ void setRect (const ViewRect& r) { rect = r; } /** Checks if this view is attached to its parent view. */ bool isAttached () const { return systemWindow != nullptr; } /** Calls when this view will be attached to its parent view. */ virtual void attachedToParent () {} /** Calls when this view will be removed from its parent view. */ virtual void removedFromParent () {} //---from IPlugView------- tresult PLUGIN_API isPlatformTypeSupported (FIDString type) SMTG_OVERRIDE; tresult PLUGIN_API attached (void* parent, FIDString type) SMTG_OVERRIDE; tresult PLUGIN_API removed () SMTG_OVERRIDE; tresult PLUGIN_API onWheel (float /*distance*/) SMTG_OVERRIDE { return kResultFalse; } tresult PLUGIN_API onKeyDown (char16 /*key*/, int16 /*keyMsg*/, int16 /*modifiers*/) SMTG_OVERRIDE { return kResultFalse; } tresult PLUGIN_API onKeyUp (char16 /*key*/, int16 /*keyMsg*/, int16 /*modifiers*/) SMTG_OVERRIDE { return kResultFalse; } tresult PLUGIN_API getSize (ViewRect* size) SMTG_OVERRIDE; tresult PLUGIN_API onSize (ViewRect* newSize) SMTG_OVERRIDE; tresult PLUGIN_API onFocus (TBool /*state*/) SMTG_OVERRIDE { return kResultFalse; } tresult PLUGIN_API setFrame (IPlugFrame* frame) SMTG_OVERRIDE { plugFrame = frame; return kResultTrue; } tresult PLUGIN_API canResize () SMTG_OVERRIDE { return kResultFalse; } tresult PLUGIN_API checkSizeConstraint (ViewRect* /*rect*/) SMTG_OVERRIDE { return kResultFalse; } //---Interface------ OBJ_METHODS (CPluginView, FObject) DEFINE_INTERFACES DEF_INTERFACE (IPlugView) END_DEFINE_INTERFACES (FObject) REFCOUNT_METHODS (FObject) //------------------------------------------------------------------------ protected: ViewRect rect; void* systemWindow {nullptr}; IPtr plugFrame; }; //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/common/readfile.cpp000066400000000000000000000062671461511344300214320ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // // Category : readfile // Filename : public.sdk/source/common/readfile.cpp // Created by : Steinberg, 3/2023 // Description : read file routine // //----------------------------------------------------------------------------- // LICENSE // (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "readfile.h" #include "pluginterfaces/base/fplatform.h" #if SMTG_OS_WINDOWS #include "public.sdk/source/vst/utility/stringconvert.h" #endif #include #include namespace Steinberg { //------------------------------------------------------------------------ std::string readFile (const std::string& path) { #if SMTG_OS_WINDOWS auto u16Path = VST3::StringConvert::convert (path); std::ifstream file (reinterpret_cast (u16Path.data ()), std::ios_base::in | std::ios_base::binary); #else std::ifstream file (path, std::ios_base::in | std::ios_base::binary); #endif if (!file.is_open ()) return {}; #if SMTG_CPP17 auto size = file.seekg (0, std::ios_base::end).tellg (); file.seekg (0, std::ios_base::beg); std::string data; data.resize (size); file.read (data.data (), data.size ()); if (file.bad ()) return {}; return data; #else std::stringstream buffer; buffer << file.rdbuf (); return buffer.str (); #endif } //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/common/readfile.h000066400000000000000000000047461461511344300210770ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : readfile // Filename : public.sdk/source/common/readfile.h // Created by : Steinberg, 3/2023 // Description : read file routine // //----------------------------------------------------------------------------- // LICENSE // (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include namespace Steinberg { //------------------------------------------------------------------------ /** Reads entire file content \ingroup sdkBase Returns entire file content at the given path \endcode */ std::string readFile (const std::string& path); //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/common/systemclipboard.h000066400000000000000000000053571461511344300225270ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // // Project : Steinberg Plug-In SDK // Filename : public.sdk/source/common/systemclipboard.h // Created by : Steinberg 04.2020 // Description : Simple helper allowing to copy/retrieve text to/from the system clipboard // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // This Software Development Kit may not be distributed in parts or its entirety // without prior written agreement by Steinberg Media Technologies GmbH. // This SDK must not be used to re-engineer or manipulate any technology used // in any Steinberg or Third-party application or software module, // unless permitted by law. // Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SDK IS PROVIDED BY STEINBERG MEDIA TECHNOLOGIES GMBH "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 STEINBERG MEDIA TECHNOLOGIES GMBH 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. //----------------------------------------------------------------------------- #pragma once #include //------------------------------------------------------------------------ namespace Steinberg { namespace SystemClipboard { //----------------------------------------------------------------------------- /** Copies the given text into the system clipboard \ingroup sdkBase \param text UTF-8 encoded text \return true on success */ bool copyTextToClipboard (const std::string& text); //----------------------------------------------------------------------------- /** Retrieves the current text from the system clipboard \ingroup sdkBase \param text UTF-8 encoded text \return true on success */ bool getTextFromClipboard (std::string& text); //----------------------------------------------------------------------------- } // namespace SystemClipboard } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/common/systemclipboard_linux.cpp000066400000000000000000000051671461511344300243000ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // // Project : Steinberg Plug-In SDK // Filename : public.sdk/source/common/systemclipboard_linux.cpp // Created by : Steinberg 04.2023 // Description : Simple helper allowing to copy/retrieve text to/from the system clipboard // //----------------------------------------------------------------------------- // LICENSE // (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // This Software Development Kit may not be distributed in parts or its entirety // without prior written agreement by Steinberg Media Technologies GmbH. // This SDK must not be used to re-engineer or manipulate any technology used // in any Steinberg or Third-party application or software module, // unless permitted by law. // Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SDK IS PROVIDED BY STEINBERG MEDIA TECHNOLOGIES GMBH "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 STEINBERG MEDIA TECHNOLOGIES GMBH 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 "systemclipboard.h" #include "pluginterfaces/base/fplatform.h" #if SMTG_OS_LINUX //------------------------------------------------------------------------ namespace Steinberg { namespace SystemClipboard { //----------------------------------------------------------------------------- bool copyTextToClipboard (const std::string& text) { // TODO return false; } //----------------------------------------------------------------------------- bool getTextFromClipboard (std::string& text) { // TODO return false; } //------------------------------------------------------------------------ } // namespace SystemClipboard } // namespace Steinberg #endif // SMTG_OS_LINUX vst3sdk-3.7.10.14+~4.13.3/source/common/systemclipboard_mac.mm000066400000000000000000000066041461511344300235250ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // // Project : Steinberg Plug-In SDK // Filename : public.sdk/source/common/systemclipboard_mac.mm // Created by : Steinberg 04.2020 // Description : Simple helper allowing to copy/retrieve text to/from the system clipboard // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // This Software Development Kit may not be distributed in parts or its entirety // without prior written agreement by Steinberg Media Technologies GmbH. // This SDK must not be used to re-engineer or manipulate any technology used // in any Steinberg or Third-party application or software module, // unless permitted by law. // Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SDK IS PROVIDED BY STEINBERG MEDIA TECHNOLOGIES GMBH "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 STEINBERG MEDIA TECHNOLOGIES GMBH 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 "systemclipboard.h" #include "pluginterfaces/base/fplatform.h" #if SMTG_OS_OSX #import //------------------------------------------------------------------------ namespace Steinberg { namespace SystemClipboard { //----------------------------------------------------------------------------- bool copyTextToClipboard (const std::string& text) { auto pb = [NSPasteboard generalPasteboard]; [pb clearContents]; auto nsString = [NSString stringWithUTF8String:text.data ()]; return [pb setString:nsString forType:NSPasteboardTypeString]; } //----------------------------------------------------------------------------- bool getTextFromClipboard (std::string& text) { auto pb = [NSPasteboard generalPasteboard]; if ([pb canReadItemWithDataConformingToTypes:@[NSPasteboardTypeString]]) { if (auto items = [pb readObjectsForClasses:@[[NSString class]] options:nil]) { if (items.count > 0) { text = [items[0] UTF8String]; return true; } } } return false; } //------------------------------------------------------------------------ } // namespace SystemClipboard } // namespace Steinberg #elif SMTG_OS_IOS //------------------------------------------------------------------------ bool copyTextToClipboard (const std::string& text) { return false; } //------------------------------------------------------------------------ bool getTextFromClipboard (std::string& text) { return false; } #endif // SMTG_OS_MACOS vst3sdk-3.7.10.14+~4.13.3/source/common/systemclipboard_win32.cpp000066400000000000000000000125131461511344300240740ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // // Project : Steinberg Plug-In SDK // Filename : public.sdk/source/common/systemclipboard_win32.cpp // Created by : Steinberg 04.2020 // Description : Simple helper allowing to copy/retrieve text to/from the system clipboard // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // This Software Development Kit may not be distributed in parts or its entirety // without prior written agreement by Steinberg Media Technologies GmbH. // This SDK must not be used to re-engineer or manipulate any technology used // in any Steinberg or Third-party application or software module, // unless permitted by law. // Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SDK IS PROVIDED BY STEINBERG MEDIA TECHNOLOGIES GMBH "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 STEINBERG MEDIA TECHNOLOGIES GMBH 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 "systemclipboard.h" #include "pluginterfaces/base/fplatform.h" #if SMTG_OS_WINDOWS #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace SystemClipboard { namespace { //------------------------------------------------------------------------ struct Clipboard { Clipboard () { open = OpenClipboard (nullptr); } ~Clipboard () { if (open) CloseClipboard (); } bool open {false}; }; //------------------------------------------------------------------------ std::vector convertToWide (const std::string& text) { std::vector wideStr; auto numChars = MultiByteToWideChar (CP_UTF8, 0, text.data (), static_cast (text.size ()), nullptr, 0); if (numChars) { wideStr.resize (static_cast (numChars) + 1); numChars = MultiByteToWideChar (CP_UTF8, 0, text.data (), static_cast (text.size ()), wideStr.data (), static_cast (wideStr.size ())); } wideStr[numChars] = 0; wideStr.resize (static_cast (numChars) + 1); return wideStr; } //------------------------------------------------------------------------ std::string convertToUTF8 (const WCHAR* data, const SIZE_T& dataSize) { std::string text; auto numChars = WideCharToMultiByte (CP_UTF8, 0, data, dataSize / sizeof (WCHAR), nullptr, 0, nullptr, nullptr); text.resize (static_cast (numChars) + 1); numChars = WideCharToMultiByte (CP_UTF8, 0, data, dataSize / sizeof (WCHAR), const_cast (text.data ()), static_cast (text.size ()), nullptr, nullptr); text.resize (numChars); return text; } //------------------------------------------------------------------------ } // anonymous //----------------------------------------------------------------------------- bool copyTextToClipboard (const std::string& text) { Clipboard cb; if (text.empty () || !cb.open) return false; if (!EmptyClipboard ()) return false; bool result = false; auto wideStr = convertToWide (text); auto byteSize = wideStr.size () * sizeof (WCHAR); if (auto memory = GlobalAlloc (GMEM_MOVEABLE | GMEM_ZEROINIT, byteSize)) { if (auto* data = static_cast (GlobalLock (memory))) { #if defined(__MINGW32__) memcpy (data, wideStr.data (), byteSize); #else memcpy_s (data, byteSize, wideStr.data (), byteSize); #endif GlobalUnlock (memory); auto handle = SetClipboardData (CF_UNICODETEXT, memory); result = handle != nullptr; } } return result; } //----------------------------------------------------------------------------- bool getTextFromClipboard (std::string& text) { Clipboard cb; if (!cb.open) return false; if (!IsClipboardFormatAvailable (CF_UNICODETEXT)) return false; bool result = false; // Get handle of clipboard object for unicode text if (auto hData = GetClipboardData (CF_UNICODETEXT)) { // Lock the handle to get the actual text pointer if (auto* data = (const WCHAR*)GlobalLock (hData)) { auto dataSize = GlobalSize (hData); text = convertToUTF8 (data, dataSize); // Release the lock GlobalUnlock (hData); result = true; } } return result; } //------------------------------------------------------------------------ } // namespace SystemClipboard } // namespace Steinberg #endif // SMTG_OS_WINDOWS vst3sdk-3.7.10.14+~4.13.3/source/common/threadchecker.h000066400000000000000000000052321461511344300221070ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/source/common/threadchecker.h // Created by : Steinberg, 01/2019 // Description : thread checker // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class ThreadChecker { public: static std::unique_ptr create (); virtual bool test (const char* failmessage = nullptr, bool exit = false) = 0; virtual ~ThreadChecker () noexcept = default; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/common/threadchecker_linux.cpp000066400000000000000000000060321461511344300236600ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/source/common/threadchecker_linux.cpp // Created by : Steinberg, 01/2019 // Description : linux thread checker // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "threadchecker.h" #if SMTG_OS_LINUX #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class LinuxThreadChecker : public ThreadChecker { public: bool test (const char* failmessage = nullptr, bool exit = false) override { if (threadID == pthread_self ()) return true; if (failmessage) fprintf (stderr, "%s", failmessage); if (exit) std::terminate (); return false; } pthread_t threadID {pthread_self ()}; }; //------------------------------------------------------------------------ std::unique_ptr ThreadChecker::create () { return std::unique_ptr (new LinuxThreadChecker); } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg #endif // SMTG_OS_LINUX vst3sdk-3.7.10.14+~4.13.3/source/common/threadchecker_mac.mm000066400000000000000000000057511461511344300231170ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/source/common/threadchecker_mac.mm // Created by : Steinberg, 01/2019 // Description : macOS thread checker // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "threadchecker.h" #if SMTG_OS_MACOS #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class MacThreadChecker : public ThreadChecker { public: bool test (const char* failmessage = nullptr, bool exit = false) override { if (threadID == pthread_self ()) return true; if (failmessage) NSLog (@"%s", failmessage); if (exit) std::terminate (); return false; } pthread_t threadID {pthread_self ()}; }; //------------------------------------------------------------------------ std::unique_ptr ThreadChecker::create () { return std::unique_ptr (new MacThreadChecker); } //------------------------------------------------------------------------ } // Vst } // Steinberg #endif vst3sdk-3.7.10.14+~4.13.3/source/common/threadchecker_win32.cpp000066400000000000000000000060171461511344300234660ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Examples // Filename : public.sdk/source/common/threadchecker_win32.cpp // Created by : Steinberg, 01/2019 // Description : win32 thread checker // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "threadchecker.h" #if SMTG_OS_WINDOWS #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class Win32ThreadChecker : public ThreadChecker { public: bool test (const char* failmessage = nullptr, bool exit = false) override { if (threadID == GetCurrentThreadId ()) return true; if (failmessage) OutputDebugStringA (failmessage); if (exit) std::terminate (); return false; } DWORD threadID {GetCurrentThreadId ()}; }; //------------------------------------------------------------------------ std::unique_ptr ThreadChecker::create () { return std::unique_ptr (new Win32ThreadChecker); } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg #endif // SMTG_OS_WINDOWS vst3sdk-3.7.10.14+~4.13.3/source/main/000077500000000000000000000000001461511344300165745ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/main/dllmain.cpp000066400000000000000000000106721461511344300207260ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // Version : 1.0 // // Category : Common Base Classes // Filename : public.sdk/source/main/dllmain.cpp // Created by : Steinberg, 01/2004 // Description : Windows DLL Entry // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginterfaces/base/ftypes.h" #include "pluginterfaces/base/fstrdefs.h" #include #if defined(_MSC_VER) && defined(DEVELOPMENT) #include #endif //------------------------------------------------------------------------ HINSTANCE ghInst = nullptr; void* moduleHandle = nullptr; #define VST_MAX_PATH 2048 Steinberg::tchar gPath[VST_MAX_PATH] = {0}; //------------------------------------------------------------------------ extern bool InitModule (); ///< must be provided by plug-in: called when the library is loaded extern bool DeinitModule (); ///< must be provided by plug-in: called when the library is unloaded //------------------------------------------------------------------------ #ifdef __cplusplus extern "C" { #endif static int moduleCounter {0}; // counting for InitDll/ExitDll pairs //------------------------------------------------------------------------ /** must be called from host right after loading dll, must be provided by the plug-in! Note: this could be called more than one time! */ SMTG_EXPORT_SYMBOL bool InitDll () { if (++moduleCounter == 1) return InitModule (); return true; } //------------------------------------------------------------------------ /** must be called from host right before unloading dll must be provided by the plug-in! Note: this could be called more than one time! */ SMTG_EXPORT_SYMBOL bool ExitDll () { if (--moduleCounter == 0) return DeinitModule (); if (moduleCounter < 0) return false; return true; } #ifdef __cplusplus } // extern "C" #endif //------------------------------------------------------------------------ BOOL WINAPI DllMain (HINSTANCE hInst, DWORD dwReason, LPVOID /*lpvReserved*/) { if (dwReason == DLL_PROCESS_ATTACH) { #if defined(_MSC_VER) && defined(DEVELOPMENT) _CrtSetReportMode (_CRT_WARN, _CRTDBG_MODE_DEBUG); _CrtSetReportMode (_CRT_ERROR, _CRTDBG_MODE_DEBUG); _CrtSetReportMode (_CRT_ASSERT, _CRTDBG_MODE_DEBUG); int flag = _CrtSetDbgFlag (_CRTDBG_REPORT_FLAG); _CrtSetDbgFlag (flag | _CRTDBG_LEAK_CHECK_DF); #endif moduleHandle = ghInst = hInst; // gets the path of the component if (GetModuleFileName (ghInst, Steinberg::wscast (gPath), MAX_PATH) > 0) { Steinberg::tchar* bkslash = Steinberg::wscast (wcsrchr (Steinberg::wscast (gPath), L'\\')); if (bkslash) gPath[bkslash - gPath + 1] = 0; } } return TRUE; } vst3sdk-3.7.10.14+~4.13.3/source/main/linuxmain.cpp000066400000000000000000000066231461511344300213130ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // Version : 1.0 // // Category : Common Base Classes // Filename : public.sdk/source/main/linuxmain.cpp // Created by : Steinberg, 03/2017 // Description : Linux Component Entry // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginterfaces/base/fplatform.h" void* moduleHandle = nullptr; //------------------------------------------------------------------------ bool InitModule (); ///< must be provided by plug-in: called when the library is loaded bool DeinitModule (); ///< must be provided by plug-in: called when the library is unloaded //------------------------------------------------------------------------ extern "C" { /** must be provided by the plug-in! */ SMTG_EXPORT_SYMBOL bool ModuleEntry (void*); SMTG_EXPORT_SYMBOL bool ModuleExit (void); } static int moduleCounter {0}; // counting for ModuleEntry/ModuleExit pairs //------------------------------------------------------------------------ /** must be called from host right after loading dll Note: this could be called more than one time! */ bool ModuleEntry (void* sharedLibraryHandle) { if (++moduleCounter == 1) { moduleHandle = sharedLibraryHandle; return InitModule (); } return true; } //------------------------------------------------------------------------ /** must be called from host right before unloading dll Note: this could be called more than one time! */ bool ModuleExit (void) { if (--moduleCounter == 0) { moduleHandle = nullptr; return DeinitModule (); } else if (moduleCounter < 0) return false; return true; } vst3sdk-3.7.10.14+~4.13.3/source/main/macexport.exp000066400000000000000000000000531461511344300213120ustar00rootroot00000000000000_GetPluginFactory _bundleEntry _bundleExit vst3sdk-3.7.10.14+~4.13.3/source/main/macmain.cpp000066400000000000000000000105531461511344300207110ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // Version : 1.0 // // Category : Common Base Classes // Filename : public.sdk/source/main/macmain.cpp // Created by : Steinberg, 01/2004 // Description : Mac OS X Bundle Entry // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginterfaces/base/fplatform.h" #ifndef __CF_USE_FRAMEWORK_INCLUDES__ #define __CF_USE_FRAMEWORK_INCLUDES__ 1 #endif #include //------------------------------------------------------------------------ CFBundleRef ghInst = nullptr; int bundleRefCounter = 0; // counting for bundleEntry/bundleExit pairs void* moduleHandle = nullptr; #define VST_MAX_PATH 2048 char gPath[VST_MAX_PATH] = {0}; //------------------------------------------------------------------------ bool InitModule (); ///< must be provided by plug-in: called when the library is loaded bool DeinitModule (); ///< must be provided by plug-in: called when the library is unloaded //------------------------------------------------------------------------ extern "C" { /** bundleEntry and bundleExit must be provided by the plug-in! */ SMTG_EXPORT_SYMBOL bool bundleEntry (CFBundleRef); SMTG_EXPORT_SYMBOL bool bundleExit (void); } #include std::vector gBundleRefs; //------------------------------------------------------------------------ /** must be called from host right after loading bundle Note: this could be called more than one time! */ bool bundleEntry (CFBundleRef ref) { if (ref) { bundleRefCounter++; CFRetain (ref); // hold all bundle refs until plug-in is fully uninitialized gBundleRefs.push_back (ref); if (!moduleHandle) { ghInst = ref; moduleHandle = ref; // obtain the bundle path CFURLRef tempURL = CFBundleCopyBundleURL (ref); CFURLGetFileSystemRepresentation (tempURL, true, reinterpret_cast (gPath), VST_MAX_PATH); CFRelease (tempURL); } if (bundleRefCounter == 1) return InitModule (); } return true; } //------------------------------------------------------------------------ /** must be called from host right before unloading bundle Note: this could be called more than one time! */ bool bundleExit (void) { if (--bundleRefCounter == 0) { DeinitModule (); // release the CFBundleRef's once all bundleExit clients called in // there is no way to identify the proper CFBundleRef of the bundleExit call for (size_t i = 0; i < gBundleRefs.size (); i++) CFRelease (gBundleRefs[i]); gBundleRefs.clear (); } else if (bundleRefCounter < 0) return false; return true; } vst3sdk-3.7.10.14+~4.13.3/source/main/moduleinit.cpp000066400000000000000000000114021461511344300214470ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // // Category : Common Base Classes // Filename : public.sdk/source/main/moduleinit.cpp // Created by : Steinberg, 11/2020 // Description : Module Initializers/Terminators // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "moduleinit.h" #include #include extern void* moduleHandle; // from dllmain.cpp, linuxmain.cpp or macmain.cpp //------------------------------------------------------------------------ namespace Steinberg { namespace { //------------------------------------------------------------------------ using FunctionVector = std::vector>; //------------------------------------------------------------------------ FunctionVector& getInitFunctions () { static FunctionVector gInitVector; return gInitVector; } //------------------------------------------------------------------------ FunctionVector& getTermFunctions () { static FunctionVector gTermVector; return gTermVector; } //------------------------------------------------------------------------ void addInitFunction (ModuleInitFunction&& func, ModuleInitPriority prio) { getInitFunctions ().emplace_back (prio, std::move (func)); } //------------------------------------------------------------------------ void addTerminateFunction (ModuleInitFunction&& func, ModuleInitPriority prio) { getTermFunctions ().emplace_back (prio, std::move (func)); } //------------------------------------------------------------------------ void sortAndRunFunctions (FunctionVector& array) { std::sort (array.begin (), array.end (), [] (const FunctionVector::value_type& v1, const FunctionVector::value_type& v2) { return v1.first < v2.first; }); for (auto& entry : array) entry.second (); } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ ModuleInitializer::ModuleInitializer (ModuleInitFunction&& func, ModuleInitPriority prio) { addInitFunction (std::move (func), prio); } //------------------------------------------------------------------------ ModuleTerminator::ModuleTerminator (ModuleInitFunction&& func, ModuleInitPriority prio) { addTerminateFunction (std::move (func), prio); } //------------------------------------------------------------------------ PlatformModuleHandle getPlatformModuleHandle () { return reinterpret_cast (moduleHandle); } //------------------------------------------------------------------------ } // Steinberg //------------------------------------------------------------------------ bool InitModule () { Steinberg::sortAndRunFunctions (Steinberg::getInitFunctions ()); return true; } //------------------------------------------------------------------------ bool DeinitModule () { Steinberg::sortAndRunFunctions (Steinberg::getTermFunctions ()); return true; } vst3sdk-3.7.10.14+~4.13.3/source/main/moduleinit.h000066400000000000000000000114421461511344300211200ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // // Category : Common Base Classes // Filename : public.sdk/source/main/moduleinit.h // Created by : Steinberg, 11/2020 // Description : Module Initializers/Terminators // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include #include #include #include //------------------------------------------------------------------------ /** A replacement for InitModule and DeinitModule * * If you link this file the InitModule and DeinitModule functions are * implemented and you can use this to register functions that will be * called when the module is loaded and before the module is unloaded. * * Use this for one time initializers or cleanup functions. * For example: if you depend on a 3rd party library that needs * initialization before you can use it you can write an initializer like this: * * static ModuleInitializer InitMyExternalLib ([] () { MyExternalLib::init (); }); * * Or you have a lazy create wavetable you need to free the allocated memory later: * * static ModuleTerminator FreeWaveTableMemory ([] () { MyWaveTable::free (); }); */ //------------------------------------------------------------------------ #if SMTG_OS_WINDOWS using HINSTANCE = struct HINSTANCE__*; namespace Steinberg { using PlatformModuleHandle = HINSTANCE; } //------------------------------------------------------------------------ #elif SMTG_OS_OSX || SMTG_OS_IOS typedef struct __CFBundle* CFBundleRef; namespace Steinberg { using PlatformModuleHandle = CFBundleRef; } //------------------------------------------------------------------------ #elif SMTG_OS_LINUX namespace Steinberg { using PlatformModuleHandle = void*; } #endif //------------------------------------------------------------------------ namespace Steinberg { using ModuleInitFunction = std::function; using ModuleInitPriority = uint32; static constexpr ModuleInitPriority DefaultModulePriority = std::numeric_limits::max () / 2; //------------------------------------------------------------------------ struct ModuleInitializer { /** * Register a function which is called when the module is loaded * @param func function to call * @param prio priority */ ModuleInitializer (ModuleInitFunction&& func, ModuleInitPriority prio = DefaultModulePriority); }; //------------------------------------------------------------------------ struct ModuleTerminator { /** * Register a function which is called when the module is unloaded * @param func function to call * @param prio priority */ ModuleTerminator (ModuleInitFunction&& func, ModuleInitPriority prio = DefaultModulePriority); }; //------------------------------------------------------------------------ PlatformModuleHandle getPlatformModuleHandle (); //------------------------------------------------------------------------ } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/main/pluginfactory.cpp000066400000000000000000000233611461511344300221730ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : SDK Core // // Category : Common Base Classes // Filename : public.sdk/source/main/pluginfactory.cpp // Created by : Steinberg, 01/2004 // Description : Standard Plug-In Factory // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginfactory.h" #if SMTG_OS_LINUX #include "pluginterfaces/base/funknownimpl.h" #include "pluginterfaces/gui/iplugview.h" #include "base/source/timer.h" #endif #include namespace Steinberg { CPluginFactory* gPluginFactory = nullptr; //------------------------------------------------------------------------ // CPluginFactory implementation //------------------------------------------------------------------------ CPluginFactory::CPluginFactory (const PFactoryInfo& info) : classes (nullptr), classCount (0), maxClassCount (0) { FUNKNOWN_CTOR factoryInfo = info; } //------------------------------------------------------------------------ CPluginFactory::~CPluginFactory () { if (gPluginFactory == this) gPluginFactory = nullptr; if (classes) free (classes); FUNKNOWN_DTOR } //------------------------------------------------------------------------ IMPLEMENT_REFCOUNT (CPluginFactory) //------------------------------------------------------------------------ tresult PLUGIN_API CPluginFactory::queryInterface (FIDString _iid, void** obj) { QUERY_INTERFACE (_iid, obj, IPluginFactory::iid, IPluginFactory) QUERY_INTERFACE (_iid, obj, IPluginFactory2::iid, IPluginFactory2) QUERY_INTERFACE (_iid, obj, IPluginFactory3::iid, IPluginFactory3) QUERY_INTERFACE (_iid, obj, FUnknown::iid, IPluginFactory) *obj = nullptr; return kNoInterface; } //------------------------------------------------------------------------ bool CPluginFactory::registerClass (const PClassInfo* info, FUnknown* (*createFunc) (void*), void* context) { if (!info || !createFunc) return false; PClassInfo2 info2; memcpy (&info2, info, sizeof (PClassInfo)); return registerClass (&info2, createFunc, context); } //------------------------------------------------------------------------ bool CPluginFactory::registerClass (const PClassInfo2* info, FUnknown* (*createFunc) (void*), void* context) { if (!info || !createFunc) return false; if (classCount >= maxClassCount) { if (!growClasses ()) return false; } PClassEntry& entry = classes[classCount]; entry.info8 = *info; entry.info16.fromAscii (*info); entry.createFunc = createFunc; entry.context = context; entry.isUnicode = false; classCount++; return true; } //------------------------------------------------------------------------ bool CPluginFactory::registerClass (const PClassInfoW* info, FUnknown* (*createFunc) (void*), void* context) { if (!info || !createFunc) return false; if (classCount >= maxClassCount) { if (!growClasses ()) return false; } PClassEntry& entry = classes[classCount]; entry.info16 = *info; entry.createFunc = createFunc; entry.context = context; entry.isUnicode = true; classCount++; return true; } //------------------------------------------------------------------------ bool CPluginFactory::growClasses () { static const int32 delta = 10; size_t size = (maxClassCount + delta) * sizeof (PClassEntry); void* memory = classes; if (!memory) memory = malloc (size); else memory = realloc (memory, size); if (!memory) return false; classes = static_cast (memory); maxClassCount += delta; return true; } //------------------------------------------------------------------------ bool CPluginFactory::isClassRegistered (const FUID& cid) { for (int32 i = 0; i < classCount; i++) { if (FUnknownPrivate::iidEqual (cid, classes[i].info16.cid)) return true; } return false; } //------------------------------------------------------------------------ void CPluginFactory::removeAllClasses () { classCount = 0; } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginFactory::getFactoryInfo (PFactoryInfo* info) { if (info) memcpy (info, &factoryInfo, sizeof (PFactoryInfo)); return kResultOk; } //------------------------------------------------------------------------ int32 PLUGIN_API CPluginFactory::countClasses () { return classCount; } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginFactory::getClassInfo (int32 index, PClassInfo* info) { if (info && (index >= 0 && index < classCount)) { if (classes[index].isUnicode) { memset (info, 0, sizeof (PClassInfo)); return kResultFalse; } memcpy (info, &classes[index].info8, sizeof (PClassInfo)); return kResultOk; } return kInvalidArgument; } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginFactory::getClassInfo2 (int32 index, PClassInfo2* info) { if (info && (index >= 0 && index < classCount)) { if (classes[index].isUnicode) { memset (info, 0, sizeof (PClassInfo2)); return kResultFalse; } memcpy (info, &classes[index].info8, sizeof (PClassInfo2)); return kResultOk; } return kInvalidArgument; } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginFactory::getClassInfoUnicode (int32 index, PClassInfoW* info) { if (info && (index >= 0 && index < classCount)) { memcpy (info, &classes[index].info16, sizeof (PClassInfoW)); return kResultOk; } return kInvalidArgument; } //------------------------------------------------------------------------ tresult PLUGIN_API CPluginFactory::createInstance (FIDString cid, FIDString _iid, void** obj) { for (int32 i = 0; i < classCount; i++) { if (memcmp (classes[i].info16.cid, cid, sizeof (TUID)) == 0) { FUnknown* instance = classes[i].createFunc (classes[i].context); if (instance) { if (instance->queryInterface (_iid, obj) == kResultOk) { instance->release (); return kResultOk; } instance->release (); } break; } } *obj = nullptr; return kNoInterface; } #if SMTG_OS_LINUX //------------------------------------------------------------------------ namespace /*anonymous*/ { //------------------------------------------------------------------------ class LinuxPlatformTimer : public U::Extends> { public: ~LinuxPlatformTimer () noexcept override { stop (); } tresult init (ITimerCallback* cb, uint32 timeout) { if (!runLoop || cb == nullptr || timeout == 0) return kResultFalse; auto result = runLoop->registerTimer (this, timeout); if (result == kResultTrue) { callback = cb; timerRegistered = true; } return result; } void PLUGIN_API onTimer () override { callback->onTimer (this); } void stop () override { if (timerRegistered) { if (runLoop) runLoop->unregisterTimer (this); timerRegistered = false; } } bool timerRegistered {false}; ITimerCallback* callback; static IPtr runLoop; }; IPtr LinuxPlatformTimer::runLoop; //------------------------------------------------------------------------ Timer* createLinuxTimer (ITimerCallback* cb, uint32 milliseconds) { if (!LinuxPlatformTimer::runLoop) return nullptr; auto timer = NEW LinuxPlatformTimer; if (timer->init (cb, milliseconds) == kResultTrue) return timer; timer->release (); return nullptr; } } // anonymous #endif // SMTG_OS_LINUX //------------------------------------------------------------------------ tresult PLUGIN_API CPluginFactory::setHostContext (FUnknown* context) { #if SMTG_OS_LINUX if (auto runLoop = U::cast (context)) { LinuxPlatformTimer::runLoop = runLoop; InjectCreateTimerFunction (createLinuxTimer); } else { LinuxPlatformTimer::runLoop.reset (); InjectCreateTimerFunction (nullptr); } return kResultTrue; #else return kNotImplemented; #endif } //------------------------------------------------------------------------ } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/main/pluginfactory.h000066400000000000000000000214711461511344300216400ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : SDK Core // // Category : Common Base Classes // Filename : public.sdk/source/main/pluginfactory.h // Created by : Steinberg, 01/2004 // Description : Standard Plug-In Factory // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ipluginbase.h" namespace Steinberg { //------------------------------------------------------------------------ /** Default Class Factory implementation. \ingroup sdkBase \see classFactoryMacros */ class CPluginFactory : public IPluginFactory3 { public: //------------------------------------------------------------------------ CPluginFactory (const PFactoryInfo& info); virtual ~CPluginFactory (); //--- --------------------------------------------------------------------- /** Registers a plug-in class with classInfo version 1, returns true for success. */ bool registerClass (const PClassInfo* info, FUnknown* (*createFunc) (void*), void* context = nullptr); /** Registers a plug-in class with classInfo version 2, returns true for success. */ bool registerClass (const PClassInfo2* info, FUnknown* (*createFunc) (void*), void* context = nullptr); /** Registers a plug-in class with classInfo Unicode version, returns true for success. */ bool registerClass (const PClassInfoW* info, FUnknown* (*createFunc) (void*), void* context = nullptr); /** Check if a class for a given classId is already registered. */ bool isClassRegistered (const FUID& cid); /** Remove all classes (no class exported) */ void removeAllClasses (); //------------------------------------------------------------------------ DECLARE_FUNKNOWN_METHODS //---from IPluginFactory------ tresult PLUGIN_API getFactoryInfo (PFactoryInfo* info) SMTG_OVERRIDE; int32 PLUGIN_API countClasses () SMTG_OVERRIDE; tresult PLUGIN_API getClassInfo (int32 index, PClassInfo* info) SMTG_OVERRIDE; tresult PLUGIN_API createInstance (FIDString cid, FIDString _iid, void** obj) SMTG_OVERRIDE; //---from IPluginFactory2----- tresult PLUGIN_API getClassInfo2 (int32 index, PClassInfo2* info) SMTG_OVERRIDE; //---from IPluginFactory3----- tresult PLUGIN_API getClassInfoUnicode (int32 index, PClassInfoW* info) SMTG_OVERRIDE; tresult PLUGIN_API setHostContext (FUnknown* context) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: /// @cond struct PClassEntry { //----------------------------------- PClassInfo2 info8; PClassInfoW info16; FUnknown* (*createFunc) (void*); void* context; bool isUnicode; //----------------------------------- }; /// @endcond PFactoryInfo factoryInfo; PClassEntry* classes; int32 classCount; int32 maxClassCount; bool growClasses (); }; extern CPluginFactory* gPluginFactory; //------------------------------------------------------------------------ } // namespace Steinberg //------------------------------------------------------------------------ /** \defgroup classFactoryMacros Macros for defining the class factory \ingroup sdkBase \b Example - How to use the class factory macros: \code BEGIN_FACTORY ("Steinberg Technologies", "http://www.steinberg.de", "mailto:info@steinberg.de", PFactoryInfo::kNoFlags) DEF_CLASS (INLINE_UID (0x00000000, 0x00000000, 0x00000000, 0x00000000), PClassInfo::kManyInstances, "Service", "Test Service", TestService::newInstance) END_FACTORY \endcode @{*/ #define BEGIN_FACTORY_CLASS(FactoryClass,vendor,url,email,flags) using namespace Steinberg; \ SMTG_EXPORT_SYMBOL IPluginFactory* PLUGIN_API GetPluginFactory () { \ if (!gPluginFactory) \ { static PFactoryInfo factoryInfo (vendor,url,email,flags); \ gPluginFactory = new FactoryClass (factoryInfo); \ #define BEGIN_FACTORY(vendor,url,email,flags) using namespace Steinberg; \ SMTG_EXPORT_SYMBOL IPluginFactory* PLUGIN_API GetPluginFactory () { \ if (!gPluginFactory) \ { static PFactoryInfo factoryInfo (vendor,url,email,flags); \ gPluginFactory = new CPluginFactory (factoryInfo); \ #define DEF_CLASS(cid,cardinality,category,name,createMethod) \ { TUID lcid = cid; static PClassInfo componentClass (lcid,cardinality,category,name); \ gPluginFactory->registerClass (&componentClass,createMethod); } #define DEF_CLASS1(cid,cardinality,category,name,createMethod) \ { static PClassInfo componentClass (cid,cardinality,category,name); \ gPluginFactory->registerClass (&componentClass,createMethod); } #define DEF_CLASS2(cid,cardinality,category,name,classFlags,subCategories,version,sdkVersion,createMethod) \ { TUID lcid = cid; static PClassInfo2 componentClass (lcid,cardinality,category,name,classFlags,subCategories,0,version,sdkVersion);\ gPluginFactory->registerClass (&componentClass,createMethod); } #define DEF_CLASS_W(cid,cardinality,category,name,classFlags,subCategories,version,sdkVersion,createMethod) \ { TUID lcid = cid; static PClassInfoW componentClass (lcid,cardinality,category,name,classFlags,subCategories,0,version,sdkVersion);\ gPluginFactory->registerClass (&componentClass,createMethod); } #define DEF_CLASS_W2(cid,cardinality,category,name,classFlags,subCategories,vendor,version,sdkVersion,createMethod) \ { TUID lcid = cid; static PClassInfoW componentClass (lcid,cardinality,category,name,classFlags,subCategories,vendor,version,sdkVersion);\ gPluginFactory->registerClass (&componentClass,createMethod); } #define END_FACTORY } else gPluginFactory->addRef (); \ return gPluginFactory; } #define DEF_VST3_CLASS(pluginName, pluginVst3Categories, classFlags, pluginVersion, processorCID, \ processorCreateFunc, controllerCID, controllerCreateFunc) \ { \ { \ const Steinberg::TUID lcid = processorCID; \ static Steinberg::PClassInfo2 processorClass ( \ lcid, Steinberg::PClassInfo::kManyInstances, kVstAudioEffectClass, pluginName, \ classFlags, pluginVst3Categories, 0, pluginVersion, kVstVersionString); \ gPluginFactory->registerClass (&processorClass, processorCreateFunc); \ } \ { \ const Steinberg::TUID lcid = controllerCID; \ static Steinberg::PClassInfo2 controllerClass ( \ lcid, Steinberg::PClassInfo::kManyInstances, kVstComponentControllerClass, \ pluginName, 0, "", 0, pluginVersion, kVstVersionString); \ gPluginFactory->registerClass (&controllerClass, controllerCreateFunc); \ } \ } /** @} */ vst3sdk-3.7.10.14+~4.13.3/source/main/pluginfactory_constexpr.h000066400000000000000000000211111461511344300237340ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : SDK Core // // Category : Common Base Classes // Filename : public.sdk/source/main/pluginfactory_constexpr.h // Created by : Steinberg, 10/2021 // Description : Standard Plug-In Factory (constexpr variant) // //----------------------------------------------------------------------------- // LICENSE // (c) 2023, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/funknownimpl.h" #include "pluginterfaces/base/ipluginbase.h" #if !SMTG_CPP17 #error "C++17 is required for this header" #endif #include namespace Steinberg { //------------------------------------------------------------------------ /** IPluginFactory implementation with compile time provided factory and class infos. \ingroup sdkBase \see \ref constexprClassFactoryMacros You can use this factory when your number of classes are known during compile time. The advantage here is that during runtime no unnecessary setup is needed. Please note that this only supports ASCII names and thus if you need to support Unicode names you must use another implementation. This only works when compiling with c++17 or newer. */ template class PluginFactory : public U::ImplementsNonDestroyable, U::Indirectly> { public: //------------------------------------------------------------------------ tresult PLUGIN_API getFactoryInfo (PFactoryInfo* info) override { if (info == nullptr) return kInvalidArgument; *info = T::factoryInfo; return kResultTrue; } int32 PLUGIN_API countClasses () override { return static_cast (T::classInfos.size ()); } tresult PLUGIN_API getClassInfo (int32 index, PClassInfo* info) override { if (index < 0 || index >= static_cast (T::classInfos.size ()) || info == nullptr) return kInvalidArgument; *info = {}; const auto& ci = T::classInfos[index]; copyTUID (info->cid, ci.cid); info->cardinality = ci.cardinality; if (ci.category) strncpy (info->category, ci.category, PClassInfo::kCategorySize); if (ci.name) strncpy (info->name, ci.name, PClassInfo::kNameSize); return kResultTrue; } tresult PLUGIN_API createInstance (FIDString cid, FIDString iid, void** obj) override { for (const auto& e : T::classInfos) { if (FUnknownPrivate::iidEqual (e.cid, cid)) { auto instance = e.create (e.context); if (instance) { if (instance->queryInterface (iid, obj) == kResultOk) { instance->release (); return kResultOk; } else instance->release (); } } } *obj = nullptr; return kNoInterface; } tresult PLUGIN_API getClassInfo2 (int32 index, PClassInfo2* info) override { if (index < 0 || index >= static_cast (T::classInfos.size ()) || info == nullptr) return kInvalidArgument; *info = T::classInfos[index]; return kResultTrue; } }; //------------------------------------------------------------------------ namespace PluginFactoryDetail { //------------------------------------------------------------------------ struct ClassInfo2WithCreateFunc : PClassInfo2 { using CreateInstanceFunc = FUnknown* (*)(void*); CreateInstanceFunc create {nullptr}; void* context {nullptr}; }; //------------------------------------------------------------------------ inline constexpr ClassInfo2WithCreateFunc makeClassInfo2 ( const TUID cid, int32 cardinality, const char8* category, const char8* name, int32 classFlags, const char8* subCategories, const char8* vendor, const char8* version, const char8* sdkVersion, ClassInfo2WithCreateFunc::CreateInstanceFunc func, void* context = nullptr) { ClassInfo2WithCreateFunc classInfo {}; copyTUID (classInfo.cid, cid); classInfo.cardinality = cardinality; strncpy8 (classInfo.category, category, PClassInfo::kCategorySize); strncpy8 (classInfo.name, name, PClassInfo::kNameSize); classInfo.classFlags = classFlags; if (subCategories) strncpy8 (classInfo.subCategories, subCategories, PClassInfo2::kSubCategoriesSize); if (vendor) strncpy8 (classInfo.vendor, vendor, PClassInfo2::kVendorSize); strncpy8 (classInfo.version, version, PClassInfo2::kVersionSize); strncpy8 (classInfo.sdkVersion, sdkVersion, PClassInfo2::kVersionSize); classInfo.create = func; classInfo.context = context; return classInfo; } //------------------------------------------------------------------------ } // namespace PluginFactoryDetail } // namespace Steinberg #ifdef BEGIN_FACTORY_DEF #undef BEGIN_FACTORY_DEF #endif /** \defgroup constexprClassFactoryMacros Macros for defining the compile time class factory \ingroup sdkBase \b Example: \code static constexpr size_t numberOfClasses = 1; static DECLARE_UID (TestPluginUID, 0x00000001, 0x00000002, 0x00000003, 0x00000004); BEGIN_FACTORY_DEF ("MyCompany", "mycompany.com", "info@mycompany.com", numberOfClasses) DEF_CLASS (TestPluginUID, PClassInfo::kManyInstances, "PlugIn", "Test PlugIn", 0, "SubCategory", "1.0.0", stringSDKVersion, TestPlugin::newInstance, nullptr) END_FACTORY \endcode @{*/ // clang-format off #define BEGIN_FACTORY_DEF(company, url, email, noClasses) \ struct SMTG_HIDDEN_SYMBOL FactoryData \ { \ static constexpr Steinberg::PFactoryInfo factoryInfo = { \ company, url, email, Steinberg::PFactoryInfo::kUnicode}; \ \ static constexpr std::array \ classInfos = { #define DEF_CLASS(cid, cardinality, category, name, classFlags, subCategories, version, \ sdkVersion, createMethod, createContext) \ Steinberg::PluginFactoryDetail::makeClassInfo2 (cid, cardinality, category, name, classFlags, \ subCategories, nullptr, version, sdkVersion, \ createMethod, createContext), #define END_FACTORY \ };}; \ SMTG_EXPORT_SYMBOL Steinberg::IPluginFactory* PLUGIN_API GetPluginFactory () \ { \ static Steinberg::PluginFactory factory; \ return &factory; \ } // clang-format on /** @} */ vst3sdk-3.7.10.14+~4.13.3/source/vst/000077500000000000000000000000001461511344300164645ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/000077500000000000000000000000001461511344300206365ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/CMakeLists.txt000066400000000000000000000022131461511344300233740ustar00rootroot00000000000000 set(target aaxwrapper) set(${target}_sources ${SDK_ROOT}/public.sdk/source/vst/basewrapper/basewrapper.sdk.cpp aaxentry.cpp aaxlibrary.cpp aaxwrapper.cpp aaxwrapper.h aaxwrapper_description.h aaxwrapper_gui.cpp aaxwrapper_gui.h aaxwrapper_parameters.cpp aaxwrapper_parameters.h docaax.h resource/PlugIn.ico ) add_library(${target} STATIC ${${target}_sources}) target_include_directories(${target} PRIVATE "${SMTG_AAX_SDK_PATH}/Interfaces" "${SMTG_AAX_SDK_PATH}/Interfaces/ACF" "${SMTG_AAX_SDK_PATH}/Libs/AAXLibrary/Include" ) target_link_libraries(${target} PRIVATE base ) smtg_target_setup_universal_binary(${target}) target_compile_features(aaxwrapper PUBLIC cxx_std_17 ) if(XCODE) add_compile_options(-Wno-incompatible-ms-struct) elseif(SMTG_WIN) # too much warnings in the AAX SDK!! add_compile_options(/wd4996) add_definitions(-D_CRT_SECURE_NO_WARNINGS) add_compile_options(/GR) if(MSVC) target_compile_options(${target} PRIVATE /wd4127 /wd6001 /wd6053 ) endif(MSVC) endif(XCODE) vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/aaxentry.cpp000066400000000000000000000151221461511344300231760ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/aaxwrapper/aaxentry.h // Created by : Steinberg, 08/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore /** * plugin entry from AAX_Exports.cpp */ //----------------------------------------------------------------------------- #include "pluginterfaces/base/fplatform.h" // change names to avoid different linkage #define ACFRegisterPlugin ACFRegisterPlugin_ #define ACFRegisterComponent ACFRegisterComponent_ #define ACFGetClassFactory ACFGetClassFactory_ #define ACFCanUnloadNow ACFCanUnloadNow_ #define ACFStartup ACFStartup_ #define ACFShutdown ACFShutdown_ //#define INITACFIDS // Make sure all of the AVX2 uids are defined. #include "AAX.h" #include "AAX_Init.h" #include "acfresult.h" #include "acfunknown.h" #undef ACFRegisterPlugin #undef ACFRegisterComponent #undef ACFGetClassFactory #undef ACFCanUnloadNow #undef ACFStartup #undef ACFShutdown // defined in basewrapper.cpp extern bool _InitModule (); extern bool _DeinitModule (); // reference this in the plugin to force inclusion of the wrapper in the link int AAXWrapper_linkAnchor; //------------------------------------------------------------------------ #if defined(__GNUC__) #define AAX_EXPORT extern "C" __attribute__ ((visibility ("default"))) ACFRESULT #else #define AAX_EXPORT extern "C" __declspec (dllexport) ACFRESULT __stdcall #endif AAX_EXPORT ACFRegisterPlugin (IACFUnknown* pUnkHost, IACFPluginDefinition** ppPluginDefinition); AAX_EXPORT ACFRegisterComponent (IACFUnknown* pUnkHost, acfUInt32 index, IACFComponentDefinition** ppComponentDefinition); AAX_EXPORT ACFGetClassFactory (IACFUnknown* pUnkHost, const acfCLSID& clsid, const acfIID& iid, void** ppOut); AAX_EXPORT ACFCanUnloadNow (IACFUnknown* pUnkHost); AAX_EXPORT ACFStartup (IACFUnknown* pUnkHost); AAX_EXPORT ACFShutdown (IACFUnknown* pUnkHost); AAX_EXPORT ACFGetSDKVersion (acfUInt64* oSDKVersion); //------------------------------------------------------------------------ // \func ACFRegisterPlugin // \brief Determines the number of components defined in the dll. // ACFAPI ACFRegisterPlugin (IACFUnknown* pUnkHostVoid, IACFPluginDefinition** ppPluginDefinitionVoid) { ACFRESULT result = ACF_OK; try { result = AAXRegisterPlugin (pUnkHostVoid, ppPluginDefinitionVoid); } catch (...) { result = ACF_E_UNEXPECTED; } return result; } //------------------------------------------------------------------------ // \func ACFRegisterComponent // \brief Registers a specific component in the DLL. // ACFAPI ACFRegisterComponent (IACFUnknown* pUnkHost, acfUInt32 index, IACFComponentDefinition** ppComponentDefinition) { ACFRESULT result = ACF_OK; try { result = AAXRegisterComponent (pUnkHost, index, ppComponentDefinition); } catch (...) { result = ACF_E_UNEXPECTED; } return result; } //------------------------------------------------------------------------ // \func ACFGetClassFactory // \brief Gets the factory for a given class ID. // ACFAPI ACFGetClassFactory (IACFUnknown* pUnkHost, const acfCLSID& clsid, const acfIID& iid, void** ppOut) { ACFRESULT result = ACF_OK; try { result = AAXGetClassFactory (pUnkHost, clsid, iid, ppOut); } catch (...) { result = ACF_E_UNEXPECTED; } return result; } //------------------------------------------------------------------------ // \func ACFCanUnloadNow // \brief Figures out if all objects are released so we can unload. // ACFAPI ACFCanUnloadNow (IACFUnknown* pUnkHost) { ACFRESULT result = ACF_OK; try { result = AAXCanUnloadNow (pUnkHost); } catch (...) { result = ACF_E_UNEXPECTED; } return result; } //------------------------------------------------------------------------ // \func ACFStartup // \brief Called once at init time. // ACFAPI ACFStartup (IACFUnknown* pUnkHost) { ACFRESULT result = ACF_OK; try { result = AAXStartup (pUnkHost); if (result == ACF_OK) { if (!_InitModule ()) { AAXShutdown (pUnkHost); result = ACF_E_UNEXPECTED; } } } catch (...) { result = ACF_E_UNEXPECTED; } return result; } //------------------------------------------------------------------------ // \func ACFShutdown // \brief Called once at termination of dll. // ACFAPI ACFShutdown (IACFUnknown* pUnkHost) { ACFRESULT result = ACF_OK; try { _DeinitModule (); result = AAXShutdown (pUnkHost); } catch (...) { result = ACF_E_UNEXPECTED; } return result; } //------------------------------------------------------------------------ ACFAPI ACFGetSDKVersion (acfUInt64* oSDKVersion) { return AAXGetSDKVersion (oSDKVersion); } /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/aaxlibrary.cpp000066400000000000000000000120421461511344300234770ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/aaxwrapper/aaxlibrary.cpp // Created by : Steinberg, 08/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore // instead of linking to a library, we just include the sources here to have // full control over compile settings #define I18N_LIB 1 #define PLUGIN_SDK_BUILD 1 #define DPA_PLUGIN_BUILD 1 #define INITACFIDS // Make sure all of the AVX2 uids are defined. #define UNICODE 1 #ifdef _WIN32 #ifndef WIN32 #define WIN32 // for CMutex.cpp #endif #define WINDOWS_VERSION 1 // for AAXWrapper_GUI.h #endif #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wreorder" #pragma clang diagnostic ignored "-Wundef-prefix" #endif #include "AAX_Atomic.h" #include "../Interfaces/ACF/CACFClassFactory.cpp" #include "../Libs/AAXLibrary/source/AAX_CACFUnknown.cpp" #include "../Libs/AAXLibrary/source/AAX_CChunkDataParser.cpp" #include "../Libs/AAXLibrary/source/AAX_CEffectDirectData.cpp" #include "../Libs/AAXLibrary/source/AAX_CEffectGUI.cpp" #include "../Libs/AAXLibrary/source/AAX_CEffectParameters.cpp" #include "../Libs/AAXLibrary/source/AAX_CHostProcessor.cpp" #include "../Libs/AAXLibrary/source/AAX_CHostServices.cpp" #include "../Libs/AAXLibrary/source/AAX_CMutex.cpp" #include "../Libs/AAXLibrary/source/AAX_CPacketDispatcher.cpp" #include "../Libs/AAXLibrary/source/AAX_CParameter.cpp" #include "../Libs/AAXLibrary/source/AAX_CParameterManager.cpp" #include "../Libs/AAXLibrary/source/AAX_CString.cpp" #include "../Libs/AAXLibrary/source/AAX_CUIDs.cpp" #include "../Libs/AAXLibrary/source/AAX_CommonConversions.cpp" #include "../Libs/AAXLibrary/source/AAX_IEffectDirectData.cpp" #include "../Libs/AAXLibrary/source/AAX_IEffectGUI.cpp" #include "../Libs/AAXLibrary/source/AAX_IEffectParameters.cpp" #include "../Libs/AAXLibrary/source/AAX_IHostProcessor.cpp" #include "../Libs/AAXLibrary/source/AAX_Init.cpp" #include "../Libs/AAXLibrary/source/AAX_Properties.cpp" #include "../Libs/AAXLibrary/source/AAX_VAutomationDelegate.cpp" #include "../Libs/AAXLibrary/source/AAX_VCollection.cpp" #include "../Libs/AAXLibrary/source/AAX_VComponentDescriptor.cpp" #include "../Libs/AAXLibrary/source/AAX_VController.cpp" #include "../Libs/AAXLibrary/source/AAX_VDescriptionHost.cpp" #include "../Libs/AAXLibrary/source/AAX_VEffectDescriptor.cpp" #include "../Libs/AAXLibrary/source/AAX_VFeatureInfo.cpp" #include "../Libs/AAXLibrary/source/AAX_VHostProcessorDelegate.cpp" #include "../Libs/AAXLibrary/source/AAX_VHostServices.cpp" #include "../Libs/AAXLibrary/source/AAX_VPageTable.cpp" #include "../Libs/AAXLibrary/source/AAX_VPrivateDataAccess.cpp" #include "../Libs/AAXLibrary/source/AAX_VPropertyMap.cpp" #include "../Libs/AAXLibrary/source/AAX_VTransport.cpp" #include "../Libs/AAXLibrary/source/AAX_VViewContainer.cpp" #ifdef _WIN32 #include "../Libs/AAXLibrary/source/AAX_CAutoreleasePool.Win.cpp" #else //#include "../Libs/AAXLibrary/source/AAX_CAutoreleasePool.OSX.mm" #endif #undef min #undef max // put at the very end, uses "using namespace std" #include "../Libs/AAXLibrary/source/AAX_SliderConversions.cpp" #ifdef __clang__ #pragma clang diagnostic pop #endif /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/aaxwrapper.cpp000066400000000000000000001256501461511344300235250ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format auto // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/aaxwrapper/aaxwrapper.cpp // Created by : Steinberg, 08/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #include "aaxwrapper.h" #include "AAX.h" #include "AAX_Assert.h" #include "AAX_Errors.h" #include "AAX_ICollection.h" #include "AAX_IComponentDescriptor.h" #include "AAX_IEffectDescriptor.h" #include "AAX_IMIDINode.h" #include "AAX_IPropertyMap.h" #include "AAX_Version.h" static_assert (AAX_SDK_CURRENT_REVISION >= AAX_SDK_2p3p2_REVISION, "VST3 SDK requires AAX SDK version 2.3.2 or higher"); #include "aaxwrapper_description.h" #include "aaxwrapper_gui.h" #include "aaxwrapper_parameters.h" #include "base/thread/include/fcondition.h" #define USE_TRACE 1 #if USE_TRACE #define HAPI AAX_eTracePriorityHost_Normal #define HLOG AAX_TRACE #else #define HAPI 0 #if SMTG_OS_WINDOWS #define HLOG __noop #else #define HLOG(...) \ do \ { \ } while (false) #endif #endif #if SMTG_OS_WINDOWS #include #define getCurrentThread() ((void*)(size_t)GetCurrentThreadId ()) #else #include #define getCurrentThread() (pthread_self ()) #endif using namespace Steinberg; using namespace Steinberg::Vst; using namespace Steinberg::Base::Thread; //------------------------------------------------------------------------ class AAXEditorWrapper : public BaseEditorWrapper { public: AAXEditorWrapper (AAXWrapper* wrapper, IEditController* controller) : BaseEditorWrapper (controller), mAAXWrapper (wrapper) { } tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* newSize) SMTG_OVERRIDE; private: AAXWrapper* mAAXWrapper; }; //------------------------------------------------------------------------ tresult PLUGIN_API AAXEditorWrapper::resizeView (IPlugView* view, ViewRect* newSize) { tresult result = kResultFalse; if (view && newSize) { if (mAAXWrapper->_sizeWindow (newSize->getWidth (), newSize->getHeight ())) { result = view->onSize (newSize); } } return result; } //------------------------------------------------------------------------ //------------------------------------------------------------------------ AAXWrapper::AAXWrapper (BaseWrapper::SVST3Config& config, AAXWrapper_Parameters* p, AAX_Plugin_Desc* desc) : BaseWrapper (config), mAAXParams (p), mPluginDesc (desc) { HLOG (HAPI, "%s", __FUNCTION__); mBlockSize = 1024; // never explicitly changed by Pro Tools, so assume the maximum mUseExportedBypass = true; mUseIncIndex = false; mainThread = getCurrentThread (); // must be in lock step with DescribeAlgorithmComponent int32 idx = idxBufferSize + 1; if (desc->mInputChannels || desc->mOutputChannels) idxInputChannels = idx++; if (desc->mOutputChannels) idxOutputChannels = idx++; if (desc->mSideChainInputChannels) idxSideChainInputChannels = idx++; if (desc->mMIDIports) { for (AAX_MIDI_Desc* mdesc = desc->mMIDIports; mdesc->mName; mdesc++) mCountMIDIports++; if (mCountMIDIports > 0) { idxMidiPorts = idx; idx += mCountMIDIports; } } int32 numAuxOutputs = 0; mAAXOutputs = static_cast (desc->mOutputChannels); if (desc->mAuxOutputChannels) { for (AAX_Aux_Desc *adesc = desc->mAuxOutputChannels; adesc->mName; adesc++, numAuxOutputs++) mAAXOutputs += adesc->mChannels < 0 ? desc->mOutputChannels : adesc->mChannels; if (numAuxOutputs > 0) { idxAuxOutputs = idx; idx += numAuxOutputs; } } if (desc->mMeters) { idxMeters = idx++; for (auto mdesc = desc->mMeters; mdesc->mName; mdesc++) mCntMeters++; mMeterIds.reset (NEW Steinberg::Vst::ParamID (mCntMeters)); mCntMeters = 0; for (auto mdesc = desc->mMeters; mdesc->mName; mdesc++) mMeterIds[mCntMeters++] = static_cast (mdesc->mID); } numDataPointers = idx; } //------------------------------------------------------------------------ AAXWrapper::~AAXWrapper () { HLOG (HAPI, "%s", __FUNCTION__); } //------------------------------------------------------------------------ tresult PLUGIN_API AAXWrapper::getName (String128 name) { String str ("AAXWrapper"); str.copyTo16 (name, 0, 127); return kResultTrue; } //------------------------------------------------------------------------ Vst::ParamID getVstParamID (AAX_CParamID aaxid) { if (aaxid[0] != 'p') return kNoParamId; long id; if (sscanf (aaxid + 1, "%lx", &id) != 1) return kNoParamId; return static_cast (id); } //------------------------------------------------------------------------ // IComponentHandler //------------------------------------------------------------------------ tresult PLUGIN_API AAXWrapper::beginEdit (ParamID tag) { HLOG (HAPI, "%s(tag=%x)", __FUNCTION__, tag); AAX_CID aaxid (tag); mAAXParams->TouchParameter (aaxid); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API AAXWrapper::performEdit (ParamID tag, ParamValue valueNormalized) { HLOG (HAPI, "%s(tag=%x, value=%lf)", __FUNCTION__, tag, valueNormalized); AAX_CID aaxid (tag); mAAXParams->SetParameterNormalizedValue (aaxid, valueNormalized); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API AAXWrapper::endEdit (ParamID tag) { HLOG (HAPI, "%s(tag=%x)", __FUNCTION__, tag); AAX_CID aaxid (tag); mAAXParams->ReleaseParameter (aaxid); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API AAXWrapper::setDirty (TBool state) { mAAXParams->setDirty (state != 0); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AAXWrapper::requestOpenEditor (FIDString /*name*/) { return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API AAXWrapper::startGroupEdit () { return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API AAXWrapper::finishGroupEdit () { return kResultFalse; } //------------------------------------------------------------------------ bool AAXWrapper::init () { bool res = BaseWrapper::init (); if (mController && BaseEditorWrapper::hasEditor (mController)) _setEditor (NEW AAXEditorWrapper (this, mController)); return res; } //------------------------------------------------------------------------ void AAXWrapper::setupProcessTimeInfo () { mProcessContext.state = 0; mProcessContext.sampleRate = mSampleRate; if (AAX_ITransport* transport = mAAXParams->Transport ()) { int64_t splPos, ppqPos, loopStart, loopEnd; bool playing, looping; if (transport->GetCurrentNativeSampleLocation (&splPos) == AAX_SUCCESS) mProcessContext.projectTimeSamples = (TSamples)splPos; if (transport->GetCurrentTickPosition (&ppqPos) == AAX_SUCCESS) { mProcessContext.projectTimeMusic = (double)ppqPos / 960000.0; mProcessContext.state |= ProcessContext::kProjectTimeMusicValid; } else mProcessContext.projectTimeMusic = 0; if (transport->GetCurrentTempo (&mProcessContext.tempo) == AAX_SUCCESS) mProcessContext.state |= ProcessContext::kTempoValid; if (transport->GetCurrentLoopPosition (&looping, &loopStart, &loopEnd) == AAX_SUCCESS) { mProcessContext.cycleStartMusic = (double)loopStart / 960000.0; mProcessContext.cycleEndMusic = (double)loopEnd / 960000.0; mProcessContext.state |= ProcessContext::kCycleValid; if (looping) mProcessContext.state |= ProcessContext::kCycleActive; } if (transport->IsTransportPlaying (&playing) == AAX_SUCCESS) { mProcessContext.state |= (playing ? ProcessContext::kPlaying : 0); } // workaround ppqPos not updating for every 2nd audio blocks @ 96 kHz (and more for higher // frequencies) // and while the UI is frozen, e.g. during save static const int32 playflags = ProcessContext::kPlaying | ProcessContext::kProjectTimeMusicValid | ProcessContext::kTempoValid; if ((playflags & mProcessContext.state) == playflags && mSampleRate != 0) { TQuarterNotes ppq = mProcessContext.projectTimeMusic; if (ppq == mLastPpqPos && mLastPpqPos != 0 && mNextPpqPos != 0) { TQuarterNotes nextppq = mNextPpqPos; if (mProcessContext.state & ProcessContext::kCycleActive) if (nextppq >= mProcessContext.cycleEndMusic) nextppq += mProcessContext.cycleStartMusic - mProcessContext.cycleEndMusic; mProcessContext.projectTimeMusic = nextppq; } mLastPpqPos = ppq; mNextPpqPos = mProcessContext.projectTimeMusic + mProcessContext.tempo / 60 * mProcessData.numSamples / mSampleRate; } else { mLastPpqPos = mNextPpqPos = 0; } int32_t num, den; if (transport->GetCurrentMeter (&num, &den) == AAX_SUCCESS) { mProcessContext.timeSigNumerator = num; mProcessContext.timeSigDenominator = den; mProcessContext.state |= ProcessContext::kTimeSigValid; } else mProcessContext.timeSigNumerator = mProcessContext.timeSigDenominator = 4; AAX_EFrameRate frameRate; int32_t offset; if (transport->GetTimeCodeInfo (&frameRate, &offset) == AAX_SUCCESS) { mProcessContext.state |= ProcessContext::kSmpteValid; mProcessContext.smpteOffsetSubframes = offset; switch (frameRate) { case AAX_eFrameRate_24Frame: mProcessContext.frameRate.framesPerSecond = 24; break; case AAX_eFrameRate_25Frame: mProcessContext.frameRate.framesPerSecond = 25; break; case AAX_eFrameRate_2997NonDrop: mProcessContext.frameRate.framesPerSecond = 30; mProcessContext.frameRate.flags = FrameRate::kPullDownRate; break; case AAX_eFrameRate_2997DropFrame: mProcessContext.frameRate.framesPerSecond = 30; mProcessContext.frameRate.flags = FrameRate::kDropRate | FrameRate::kPullDownRate; break; case AAX_eFrameRate_30NonDrop: mProcessContext.frameRate.framesPerSecond = 30; break; case AAX_eFrameRate_30DropFrame: mProcessContext.frameRate.framesPerSecond = 30; mProcessContext.frameRate.flags = FrameRate::kDropRate; break; case AAX_eFrameRate_23976: mProcessContext.frameRate.framesPerSecond = 24; mProcessContext.frameRate.flags = FrameRate::kPullDownRate; break; case AAX_eFrameRate_Undeclared: default: mProcessContext.state &= ~ProcessContext::kSmpteValid; } } mProcessData.processContext = &mProcessContext; } else mProcessData.processContext = nullptr; } //------------------------------------------------------------------------ bool AAXWrapper::_sizeWindow (int32 width, int32 height) { HLOG (HAPI, "%s(width=%x, height=%x)", __FUNCTION__, width, height); AAX_ASSERT (mainThread == getCurrentThread ()); if (!mAAXGUI) return false; AAX_Point size (height, width); return mAAXGUI->setWindowSize (size); } //------------------------------------------------------------------------ struct AAXWrapper::GetChunkMessage : public FCondition { void* mData = nullptr; int32 mDataSize = 0; int32 mResult = 0; }; //------------------------------------------------------------------------ int32 AAXWrapper::_getChunk (void** data, bool isPreset) { if (mWantsSetChunk) { // isPreset is always false for AAX, so we can ignore it *data = mChunk.getData (); return static_cast (mChunk.getSize ()); } if (mainThread == getCurrentThread ()) return BaseWrapper::_getChunk (data, isPreset); auto* msg = NEW GetChunkMessage; { FGuard guard (msgQueueLock); msgQueue.push_back (msg); } msg->wait (); *data = msg->mData; return msg->mResult; } //------------------------------------------------------------------------ int32 AAXWrapper::_setChunk (void* data, int32 byteSize, bool isPreset) { if (mainThread == getCurrentThread ()) return BaseWrapper::_setChunk (data, byteSize, isPreset); FGuard guard (msgQueueLock); mChunk.setSize (byteSize); memcpy (mChunk.getData (), data, static_cast (byteSize)); mWantsSetChunk = true; mWantsSetChunkIsPreset = isPreset; return 0; } //------------------------------------------------------------------------ void AAXWrapper::onTimer (Timer* timer) { BaseWrapper::onTimer (timer); AAX_ASSERT (mainThread == getCurrentThread ()); if (mWantsSetChunk && !mSettingChunk) { mSettingChunk = true; FGuard guard (msgQueueLock); BaseWrapper::_setChunk (mChunk.getData (), static_cast (mChunk.getSize ()), mWantsSetChunkIsPreset); mWantsSetChunk = false; mSettingChunk = false; mWantsSetChunkIsPreset = false; if (mPresetChanged) { int32_t numParams; if (mAAXParams->GetNumberOfParameters (&numParams) == AAX_SUCCESS) { AAX_CID bypassId (mBypassParameterID); for (auto i = 0; i < numParams; i++) { AAX_CString id; if (mAAXParams->GetParameterIDFromIndex (i, &id) == AAX_SUCCESS) { if (id == (const char*)bypassId) { mAAXParams->SetParameterNormalizedValue (id.CString (), mBypassBeforePresetChanged); } else { double value; if (mAAXParams->GetParameterNormalizedValue (id.CString (), &value) == AAX_SUCCESS) { mAAXParams->SetParameterNormalizedValue (id.CString (), value); } } } } } mPresetChanged = false; } } updateActiveOutputState (); while (!msgQueue.empty ()) { GetChunkMessage* msg = nullptr; { FGuard guard (msgQueueLock); if (!msgQueue.empty ()) { msg = msgQueue.front (); msgQueue.pop_front (); } } if (msg) { msg->mResult = BaseWrapper::_getChunk (&msg->mData, false); msg->signal (); } } } //------------------------------------------------------------------------ int32 AAXWrapper::getParameterInfo (AAX_CParamID aaxId, Vst::ParameterInfo& paramInfo) { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, aaxId); Vst::ParamID id = getVstParamID (aaxId); if (id == -1) return AAX_ERROR_INVALID_PARAMETER_ID; std::map::iterator iter = mParamIndexMap.find (id); if (iter == mParamIndexMap.end ()) return AAX_ERROR_INVALID_PARAMETER_ID; if (mController->getParameterInfo (iter->second, paramInfo) != kResultTrue) return AAX_ERROR_INVALID_PARAMETER_ID; return AAX_SUCCESS; } //------------------------------------------------------------------------ bool AAXWrapper::generatePageTables (const char* outputFile) { #if 0 && DEVELOPMENT FILE* fh = fopen (outputFile, "w"); if (!fh) return false; fprintf (fh, "\n" "\n" "\t\n"); AAX_Effect_Desc* effDesc = AAXWrapper_GetDescription (); for (const AAX_Plugin_Desc* pdesc = effDesc->mPluginDesc; pdesc->mEffectID; pdesc++) { uint32_t manId = effDesc->mManufacturerID; SWAP_32 (manId); uint32_t prodId = effDesc->mProductID; SWAP_32 (prodId); uint32_t plugId = pdesc->mPlugInIDNative; SWAP_32 (plugId); fprintf (fh, "\t\t\n" "\t\t\t%s\n" "\t\t\tPageTable 1\n" "\t\t", &manId, &prodId, &plugId, pdesc->mName); fprintf (fh, "\t\t\t\n"); int32 cntParams = controller->getParameterCount (); for (int32 i = 0; i < cntParams; i++) { Vst::ParameterInfo info; if (controller->getParameterInfo (i, info) == kResultTrue && (info.flags & ParameterInfo::kCanAutomate)) { AAX_CID id (info.id); String stitle (info.shortTitle); fprintf (fh, "\t\t\t\t%s\n", i + 1, (const char*) id, stitle.text8 ()); } } fprintf (fh, "\t\t\t\n"); } fprintf (fh, "\t\n"); fprintf (fh, "\t\n"); fprintf (fh, "\t\n" "\t\t\n" "\t\t\t\n"); for (const AAX_Plugin_Desc* pdesc = effDesc->mPluginDesc; pdesc->mEffectID; pdesc++) { uint32_t manId = effDesc->mManufacturerID; SWAP_32 (manId); uint32_t prodId = effDesc->mProductID; SWAP_32 (prodId); uint32_t plugId = pdesc->mPlugInIDNative; SWAP_32 (plugId); fprintf (fh, "\t\t\t\t\n" "\t\t\t\t\t%s\n" "\t\t\t\t\n", &manId, &prodId, &plugId, pdesc->mName); } fprintf (fh, "\t\t\t\n" "\t\t\n" "\t\n"); fprintf (fh, "\n"); fclose (fh); #else outputFile; #endif return true; } //------------------------------------------------------------------------ static int32 getChannelsStem (int32 channels) { switch (channels) { case 1: return AAX_eStemFormat_Mono; case 2: return AAX_eStemFormat_Stereo; case 3: return AAX_eStemFormat_LCR; case 4: return AAX_eStemFormat_Ambi_1_ACN; // AAX_eStemFormat_Quad case 5: return AAX_eStemFormat_5_0; case 6: return AAX_eStemFormat_5_1; // AAX_eStemFormat_6_0 case 7: return AAX_eStemFormat_6_1; // AAX_eStemFormat_7_0_DTS case 8: return AAX_eStemFormat_7_1_DTS; case 9: return AAX_eStemFormat_Ambi_2_ACN; // AAX_eStemFormat_7_0_2; case 10: return AAX_eStemFormat_7_1_2; case 16: return AAX_eStemFormat_Ambi_3_ACN; } return AAX_eStemFormat_None; } //------------------------------------------------------------------------------- static SpeakerArrangement numChannelsToSpeakerArrangement (int32 numChannels) { switch (numChannels) { case 1: return SpeakerArr::kMono; case 2: return SpeakerArr::kStereo; case 3: return SpeakerArr::k30Cine; case 4: return SpeakerArr::kAmbi1stOrderACN; case 5: return SpeakerArr::k50; case 6: return SpeakerArr::k51; case 7: return SpeakerArr::k61Cine; case 8: return SpeakerArr::k71Cine; case 9: return SpeakerArr::kAmbi2cdOrderACN; case 10: return SpeakerArr::k71_2; case 16: return SpeakerArr::kAmbi3rdOrderACN; } return 0; } //------------------------------------------------------------------------ // static //------------------------------------------------------------------------ AAXWrapper* AAXWrapper::create (IPluginFactory* factory, const TUID vst3ComponentID, AAX_Plugin_Desc* desc, AAXWrapper_Parameters* params) { // mostly a copy of BaseWrapper::create if (!factory) return nullptr; BaseWrapper::SVST3Config config; config.processor = nullptr; config.factory = factory; FReleaser factoryReleaser (factory); factory->createInstance (vst3ComponentID, IAudioProcessor::iid, (void**)&config.processor); if (!config.processor) return nullptr; config.controller = nullptr; if (config.processor->queryInterface (IEditController::iid, (void**)&config.controller) != kResultTrue) { FUnknownPtr component (config.processor); if (component) { TUID editorCID; if (component->getControllerClassId (editorCID) == kResultTrue) { factory->createInstance (editorCID, IEditController::iid, (void**)&config.controller); } } } config.vst3ComponentID = FUID::fromTUID (vst3ComponentID); auto* wrapper = NEW AAXWrapper (config, params, desc); if (wrapper->init () == false || wrapper->setupBusArrangements (desc) != kResultOk) { wrapper->release (); return nullptr; } wrapper->setupBuses (); // again to adjust to changes done by setupBusArrangements // vstwrapper ignores side chain channels, pretend they are main inputs uint64 scBusChannels; wrapper->countSidechainBusChannels (kInput, scBusChannels); wrapper->mMainAudioInputBuses |= scBusChannels; FUnknownPtr factory2 (factory); if (factory2) { PFactoryInfo factoryInfo; if (factory2->getFactoryInfo (&factoryInfo) == kResultTrue) wrapper->setVendorName (factoryInfo.vendor); for (int32 i = 0; i < factory2->countClasses (); i++) { Steinberg::PClassInfo2 classInfo2; if (factory2->getClassInfo2 (i, &classInfo2) == Steinberg::kResultTrue) { if (memcmp (classInfo2.cid, vst3ComponentID, sizeof (TUID)) == 0) { wrapper->setSubCategories (classInfo2.subCategories); wrapper->setEffectName (classInfo2.name); if (classInfo2.vendor[0] != 0) wrapper->setVendorName (classInfo2.vendor); break; } } } } return wrapper; } //------------------------------------------------------------------------------- int32 AAXWrapper::countSidechainBusChannels (BusDirection dir, uint64& scBusBitset) { int32 result = 0; scBusBitset = 0; int32 busCount = mComponent->getBusCount (kAudio, dir); for (int32 i = 0; i < busCount; i++) { BusInfo busInfo = {}; if (mComponent->getBusInfo (kAudio, dir, i, busInfo) == kResultTrue) { if (busInfo.busType == kAux) { result += busInfo.channelCount; scBusBitset |= (uint64 (1) << i); // no longer activate side chains by default, use the host // notifications instead // mComponent->activateBus (kAudio, dir, i, true); } } } return result; } //------------------------------------------------------------------------ tresult AAXWrapper::setupBusArrangements (AAX_Plugin_Desc* desc) { uint32 inputBusCount = (desc->mInputChannels > 0 ? 1u : 0u) + (desc->mSideChainInputChannels > 0 ? 1u : 0u); uint32 outputBusCount = (desc->mOutputChannels > 0 ? 1u : 0u); if (AAX_Aux_Desc* aux = desc->mAuxOutputChannels) while ((aux++)->mName) outputBusCount++; std::vector inputs (inputBusCount); std::vector outputs (outputBusCount); uint32 in = 0; if (desc->mInputChannels) inputs[in++] = numChannelsToSpeakerArrangement (desc->mInputChannels); if (desc->mSideChainInputChannels) inputs[in++] = numChannelsToSpeakerArrangement (desc->mSideChainInputChannels); if (desc->mOutputChannels) outputs[0] = numChannelsToSpeakerArrangement (desc->mOutputChannels); if (AAX_Aux_Desc* aux = desc->mAuxOutputChannels) for (uint32 i = 0; aux[i].mName; i++) outputs[i + 1u] = numChannelsToSpeakerArrangement (aux[i].mChannels); return mProcessor->setBusArrangements (inputs.data (), static_cast (inputBusCount), outputs.data (), static_cast (outputBusCount)); } //------------------------------------------------------------------------ void AAXWrapper::guessActiveOutputs (float** out, uint32 num) { // a channel is considered inactive if the output pointer is to the // same location as one of it's neighboring channels (ProTools seems // to direct all inactive channels to the same output). // FIXME: this heuristic fails for mono outputs std::bitset active; for (uint32 i = 0; i < num; i++) { auto prev = (i > 0 ? out[i - 1] : nullptr); auto next = (i + 1 < num ? out[i + 1] : nullptr); active[i] = (out[i] != prev && out[i] != next); } mActiveChannels = active; } //------------------------------------------------------------------------ void AAXWrapper::updateActiveOutputState () { // some additional copying to avoid missing updates std::bitset channels = mActiveChannels; if (channels == mPropagatedChannels) return; mPropagatedChannels = channels; uint32 channelPos = 0; int32 busCount = mComponent->getBusCount (kAudio, kOutput); for (int32 i = 0; i < busCount; i++) { BusInfo busInfo = {}; if (mComponent->getBusInfo (kAudio, kOutput, i, busInfo) == kResultTrue) { bool active = false; for (uint32 c = 0; c < static_cast (busInfo.channelCount); c++) if (channels[channelPos + c]) active = true; channelPos += busInfo.channelCount; mComponent->activateBus (kAudio, kOutput, i, active); } } } //------------------------------------------------------------------------ void AAXWrapper::setSideChainEnable (bool enable) { int32 busCount = mComponent->getBusCount (kAudio, kInput); for (int32 i = 0; i < busCount; i++) { BusInfo busInfo = {}; if (mComponent->getBusInfo (kAudio, kInput, i, busInfo) == kResultTrue) { if (busInfo.busType == kAux) { mComponent->activateBus (kAudio, kInput, i, enable); break; } } } } //----------------------------------------------------------------------------- void AAXWrapper::setRenderingOffline (bool val) { if (val) { if (mVst3processMode == kOffline) return; mVst3processMode = kOffline; } else { if (mVst3processMode == kRealtime) return; mVst3processMode = kRealtime; } bool callStartStop = mProcessing; if (callStartStop) BaseWrapper::_stopProcess (); setupProcessing (); if (callStartStop) BaseWrapper::_startProcess (); } //------------------------------------------------------------------------ // Context structure //------------------------------------------------------------------------ //------------------------------------------------------------------------ using fnCreateParameters = AAX_IEffectParameters* AAX_CALLBACK (); template struct CP { static AAX_IEffectParameters* AAX_CALLBACK Create_Parameters () { auto p = NEW AAXWrapper_Parameters (pluginIndex); if (!p->getWrapper ()) { delete p; p = nullptr; } return p; } }; //------------------------------------------------------------------------ AAX_IEffectGUI* AAX_CALLBACK Create_GUI () { return NEW AAXWrapper_GUI (); } //------------------------------------------------------------------------ int32_t AAX_CALLBACK AlgorithmInitFunction (const AAXWrapper_Context* /*inInstance*/, AAX_EComponentInstanceInitAction /*inAction*/) { return AAX_SUCCESS; } //------------------------------------------------------------------------ Steinberg::int32 AAXWrapper::ResetFieldData (Steinberg::int32 index, void* inData, Steinberg::uint32 inDataSize) { if (index == idxContext && inDataSize == sizeof (AAXWrapper*)) { _suspend (); _resume (); *(AAXWrapper**)inData = this; } else // Default implementation is just to zero out all data. memset (inData, 0, inDataSize); return AAX_SUCCESS; } //------------------------------------------------------------------------ Steinberg::int32 AAXWrapper::Process (AAXWrapper_Context* instance) { //--- ------ Retrieve instance-specific information --------- // Memory blocks const int32_t bufferSize = *static_cast (instance->ptr[idxBufferSize]); AAX_ASSERT (bufferSize <= 1024); uint32 cntMidiPorts = getNumMIDIports (); for (uint32 m = 0; m < cntMidiPorts; m++) { auto* midiNode = static_cast (instance->ptr[idxMidiPorts + m]); AAX_CMidiStream* midiBuffer = midiNode->GetNodeBuffer (); //- Check incoming MIDI packets () // for (uint32_t i = 0; i < midiBuffer->mBufferSize; i++) { AAX_CMidiPacket& buf = midiBuffer->mBuffer[i]; if (buf.mLength > 0) { // skip note-on events if bypassed to reduce processor load for instruments, // but let everything else through to avoid hanging notes if (mSimulateBypass && mBypass) if ((buf.mData[0] & Vst::kStatusMask) == Vst::kNoteOn && buf.mData[2] != 0) continue; Event toAdd = {static_cast (m), static_cast (buf.mTimestamp), 0}; bool isLive = buf.mIsImmediate || buf.mTimestamp == 0; processMidiEvent (toAdd, (char*)&buf.mData[0], isLive); } } } auto pdI = idxInputChannels < 0 ? nullptr : static_cast (instance->ptr[idxInputChannels]); // First input float* inputs[16] = {nullptr}; if (pdI && idxSideChainInputChannels >= 0) { if (auto psc = instance->ptr[idxSideChainInputChannels]) { int32 scChannel = *static_cast (psc); int32 idx = mPluginDesc->mInputChannels; memcpy (inputs, pdI, idx * sizeof (inputs[0])); for (int32 i = 0; i < mPluginDesc->mSideChainInputChannels; i++) inputs[idx + i] = pdI[scChannel]; pdI = inputs; } } // First output float** const AAX_RESTRICT pdO = static_cast (instance->ptr[idxOutputChannels]); if (pdO == nullptr) return AAX_ERROR_NULL_ARGUMENT; uint32 cntOut = getNumOutputs (); uint32 aaxOut = getNumAAXOutputs (); float* outputs[maxActiveChannels]; uint32 mainOuts = static_cast (mPluginDesc->mOutputChannels); if (mainOuts == 6) { // sort Surround channels from AAX (L C R Ls Rs LFE) to VST (L R C LFE Ls Rs) outputs[0] = pdO[0]; outputs[1] = pdO[2]; outputs[2] = pdO[1]; outputs[3] = pdO[5]; outputs[4] = pdO[3]; outputs[5] = pdO[4]; } else mainOuts = 0; for (uint32 i = mainOuts; i < aaxOut; i++) outputs[i] = pdO[i]; float buf[1024]; for (uint32 i = aaxOut; i < cntOut; i++) outputs[i] = buf; guessActiveOutputs (outputs, cntOut); mMetersTmp = (mCntMeters > 0) ? *static_cast (instance->ptr[idxMeters]) : nullptr; _processReplacing (pdI, outputs, bufferSize); mMetersTmp = nullptr; // apply bypass if not supported (only without inputs for now, i.e. instruments) // ---------------------- if (mSimulateBypass && mPluginDesc->mInputChannels == 0) { static const float kDiffGain = 0.001f; if (mBypass) { int32 bufPos = 0; while (mBypassGain > 0 && bufPos < bufferSize) { for (uint32 i = 0; i < cntOut; i++) outputs[i][bufPos] *= mBypassGain; mBypassGain -= kDiffGain; bufPos++; } for (uint32 i = 0; i < cntOut; i++) memset (&outputs[i][bufPos], 0, (bufferSize - bufPos) * sizeof (float)); } else if (mBypassGain < 1) { int32 bufPos = 0; while (mBypassGain < 1 && bufPos < bufferSize) { for (uint32 i = 0; i < cntOut; i++) outputs[i][bufPos] *= mBypassGain; mBypassGain += kDiffGain; bufPos++; } } } return AAX_SUCCESS; } //------------------------------------------------------------------------ void AAXWrapper::processOutputParametersChanges () { if (!mMetersTmp) return; uint32 found = 0; // VU Meter readout for (int32 i = 0, count = mOutputChanges.getParameterCount (); i < count; i++) { auto queue = mOutputChanges.getParameterData (i); if (!queue) break; for (uint32 m = 0; m < mCntMeters; m++) { if (mMeterIds[m] == queue->getParameterId ()) { int32 sampleOffset; ParamValue value; queue->getPoint (queue->getPointCount () - 1, sampleOffset, value); mMetersTmp[m] = value; found++; break; } } if (found == mCntMeters) break; } } //----------------------------------------------------------------------------- Steinberg::tresult PLUGIN_API AAXWrapper::restartComponent (Steinberg::int32 flags) { tresult result = BaseWrapper::restartComponent (flags); //--- ---------------------- if (flags & kLatencyChanged) { if (mAAXParams && mProcessor) { AAX_IController* ctrler = mAAXParams->Controller (); if (ctrler) ctrler->SetSignalLatency (static_cast (mProcessor->getLatencySamples ())); } result = kResultTrue; } return result; } //------------------------------------------------------------------------ static void AAX_CALLBACK AlgorithmProcessFunction (AAXWrapper_Context* const inInstancesBegin[], const void* inInstancesEnd) { //--- ------ Iterate over plug-in instances ---------// for (AAXWrapper_Context* const* walk = inInstancesBegin; walk < inInstancesEnd; ++walk) { AAXWrapper_Context* AAX_RESTRICT instance = *walk; // first element is Context AAXWrapper* wrapper = *reinterpret_cast (instance->ptr[0]); if (!wrapper) continue; wrapper->Process (instance); } // End instance-iteration loop } //------------------------------------------------------------------------ static uint32 vst3Category2AAXPlugInCategory (const char* cat) { static const uint32 PDA_ePlugInCategory_Effect = AAX_ePlugInCategory_None; // does not exist anymore? uint32 result = AAX_ePlugInCategory_None; if (strstr (cat, "Fx") != nullptr) { result = PDA_ePlugInCategory_Effect; } if (strstr (cat, "Instrument") != nullptr || strstr (cat, "Generator") != nullptr) { if (strstr (cat, "External") != nullptr) result |= AAX_ePlugInCategory_HWGenerators; else result |= AAX_ePlugInCategory_SWGenerators; } if (strstr (cat, "Delay") != nullptr) result |= AAX_ePlugInCategory_Delay; if (strstr (cat, "Distortion") != nullptr) result |= AAX_ePlugInCategory_Harmonic; if (strstr (cat, "Dynamics") != nullptr) result |= AAX_ePlugInCategory_Dynamics; if (strstr (cat, "EQ") != nullptr) result |= AAX_ePlugInCategory_EQ; if (strstr (cat, "Mastering") != nullptr) result |= AAX_ePlugInCategory_Dither; if (strstr (cat, "Modulation") != nullptr) result |= AAX_ePlugInCategory_Modulation; if (strstr (cat, "Pitch Shift") != nullptr) result |= AAX_ePlugInCategory_PitchShift; if (strstr (cat, "Restoration") != nullptr) result |= AAX_ePlugInCategory_NoiseReduction; if (strstr (cat, "Reverb") != nullptr) result |= AAX_ePlugInCategory_Reverb; if (strstr (cat, "Spatial") != nullptr || strstr (cat, "Surround") != nullptr || strstr (cat, "Up-Downmix") != nullptr) { result |= AAX_ePlugInCategory_SoundField; } return result; } //------------------------------------------------------------------------ // ROUTINE: DescribeAlgorithmComponent // Algorithm component description //------------------------------------------------------------------------ void AAXWrapper::DescribeAlgorithmComponent (AAX_IComponentDescriptor* outDesc, const AAX_Effect_Desc* desc, const AAX_Plugin_Desc* pdesc) { // Describe algorithm's context structure // // Subscribe context fields to host-provided services or information HLOG (HAPI, "%s", __FUNCTION__); AAX_Result err = AAX_SUCCESS; // must be in lock step with AAXWrapper ctor int32 idx = idxBufferSize + 1; // ProTools does not like instruments without inputs (maybe because they are treated as // inserts?) int32 inChannels = pdesc->mInputChannels; if (inChannels == 0) inChannels = pdesc->mOutputChannels; if (inChannels) err = outDesc->AddAudioIn (idx++); AAX_ASSERT (err == AAX_SUCCESS); if (pdesc->mOutputChannels) err = outDesc->AddAudioOut (idx++); AAX_ASSERT (err == AAX_SUCCESS); err = outDesc->AddAudioBufferLength (AAXWrapper::idxBufferSize); AAX_ASSERT (err == AAX_SUCCESS); if (pdesc->mSideChainInputChannels) err = outDesc->AddSideChainIn (idx++); // max 1 side chain!? AAX_ASSERT (err == AAX_SUCCESS); if (pdesc->mMIDIports) { for (AAX_MIDI_Desc* mdesc = pdesc->mMIDIports; mdesc->mName; mdesc++) { err = outDesc->AddMIDINode (idx++, AAX_eMIDINodeType_LocalInput, mdesc->mName, mdesc->mMask); AAX_ASSERT (err == 0); } } if (pdesc->mAuxOutputChannels) { for (AAX_Aux_Desc* auxdesc = pdesc->mAuxOutputChannels; auxdesc->mName; auxdesc++) { int32 ch = (auxdesc->mChannels < 0 ? pdesc->mOutputChannels : auxdesc->mChannels); err = outDesc->AddAuxOutputStem (idx++, getChannelsStem (ch), auxdesc->mName); AAX_ASSERT (err == 0); } } if (pdesc->mMeters) { uint32 cntMeters = 0; for (AAX_Meter_Desc* mdesc = pdesc->mMeters; mdesc->mName; mdesc++) cntMeters++; std::unique_ptr meterIds; meterIds.reset (NEW Steinberg::Vst::ParamID (cntMeters)); cntMeters = 0; for (AAX_Meter_Desc* mdesc = pdesc->mMeters; mdesc->mName; mdesc++) meterIds[cntMeters++] = mdesc->mID; err = outDesc->AddMeters (idx++, (AAX_CTypeID*)meterIds.get (), cntMeters); AAX_ASSERT (err == AAX_SUCCESS); } // Register context fields as private data err = outDesc->AddPrivateData (AAXWrapper::idxContext, sizeof (void*), AAX_ePrivateDataOptions_DefaultOptions); AAX_ASSERT (err == AAX_SUCCESS); // Register processing callbacks // // Create a property map AAX_IPropertyMap* properties = outDesc->NewPropertyMap (); AAX_ASSERT (properties); if (!properties) return; // // Generic properties properties->AddProperty (AAX_eProperty_ManufacturerID, static_cast (desc->mManufacturerID)); properties->AddProperty (AAX_eProperty_ProductID, static_cast (desc->mProductID)); properties->AddProperty (AAX_eProperty_CanBypass, true); properties->AddProperty (AAX_eProperty_LatencyContribution, static_cast (pdesc->mLatency)); // properties->AddProperty (AAX_eProperty_UsesClientGUI, true); // Uses auto-GUI // // Stem format -specific properties // AAX_IPropertyMap* propertiesMono = outDesc->NewPropertyMap(); // AAX_ASSERT (propertiesMono); // if ( !propertiesMono ) return; // properties->Clone(propertiesMono); // if (pdesc->mInputChannels) properties->AddProperty (AAX_eProperty_InputStemFormat, getChannelsStem (pdesc->mInputChannels)); else if (pdesc->mOutputChannels) properties->AddProperty (AAX_eProperty_InputStemFormat, getChannelsStem (pdesc->mOutputChannels)); if (pdesc->mOutputChannels) properties->AddProperty (AAX_eProperty_OutputStemFormat, getChannelsStem (pdesc->mOutputChannels)); if (pdesc->mSideChainInputChannels) { properties->AddProperty (AAX_eProperty_SupportsSideChainInput, true); #if 0 // only mono supported, setting stem format causes plugin load failure properties->AddProperty (AAX_eProperty_SideChainStemFormat, getChannelsStem (pdesc->mSideChainInputChannels)); #endif } properties->AddProperty (AAX_eProperty_PlugInID_Native, static_cast (pdesc->mPlugInIDNative)); properties->AddProperty (AAX_eProperty_PlugInID_AudioSuite, static_cast (pdesc->mPlugInIDAudioSuite)); // Register callbacks // Native (Native and AudioSuite) err = outDesc->AddProcessProc_Native ( AlgorithmProcessFunction, properties, AlgorithmInitFunction, nullptr /*AlgorithmBackgroundFunction*/); AAX_ASSERT (err == AAX_SUCCESS); } //------------------------------------------------------------------------ static AAX_Result GetPlugInDescription (AAX_IEffectDescriptor* outDescriptor, const AAX_Effect_Desc* desc, const AAX_Plugin_Desc* pdesc) { HLOG (HAPI, "%s", __FUNCTION__); int err = AAX_SUCCESS; AAX_IComponentDescriptor* compDesc = outDescriptor->NewComponentDescriptor (); if (!compDesc) return AAX_ERROR_NULL_OBJECT; // Effect identifiers outDescriptor->AddName (pdesc->mName); outDescriptor->AddCategory (vst3Category2AAXPlugInCategory (desc->mCategory)); // Effect components // // Algorithm component AAXWrapper::DescribeAlgorithmComponent (compDesc, desc, pdesc); err = outDescriptor->AddComponent (compDesc); AAX_ASSERT (err == AAX_SUCCESS); // Data model int32 plugIndex = static_cast (pdesc - desc->mPluginDesc); fnCreateParameters* fn = nullptr; switch (plugIndex) { #define ADDPROCPTR(N) \ case N: fn = &CP::Create_Parameters; break; ADDPROCPTR (0) ADDPROCPTR (1) ADDPROCPTR (2) ADDPROCPTR (3) ADDPROCPTR (4) ADDPROCPTR (5) ADDPROCPTR (6) ADDPROCPTR (7) ADDPROCPTR (8) ADDPROCPTR (9) ADDPROCPTR (10) ADDPROCPTR (11) ADDPROCPTR (12) ADDPROCPTR (13) ADDPROCPTR (14) ADDPROCPTR (15) } AAX_ASSERT (fn); err = outDescriptor->AddProcPtr ((void*)fn, kAAX_ProcPtrID_Create_EffectParameters); AAX_ASSERT (err == AAX_SUCCESS); if (desc->mPageFile) outDescriptor->AddResourceInfo (AAX_eResourceType_PageTable, desc->mPageFile); // Effect's meter display properties if (pdesc->mMeters) { for (AAX_Meter_Desc* mdesc = pdesc->mMeters; mdesc->mName; mdesc++) { AAX_IPropertyMap* meterProperties = outDescriptor->NewPropertyMap (); if (!meterProperties) return AAX_ERROR_NULL_OBJECT; // Support different meter types offered by AAX here meterProperties->AddProperty (AAX_eProperty_Meter_Type, static_cast (mdesc->mType)); meterProperties->AddProperty (AAX_eProperty_Meter_Orientation, static_cast (mdesc->mOrientation)); outDescriptor->AddMeterDescription (mdesc->mID, mdesc->mName, meterProperties); } } // plugin supplied GUI err = outDescriptor->AddProcPtr ((void*)Create_GUI, kAAX_ProcPtrID_Create_EffectGUI); AAX_ASSERT (err == AAX_SUCCESS); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result GetEffectDescriptions (AAX_ICollection* outCollection) { HLOG (HAPI, "%s", __FUNCTION__); AAX_Result result = AAX_ERROR_NULL_OBJECT; AAX_Effect_Desc* effDesc = AAXWrapper_GetDescription (); for (const AAX_Plugin_Desc* pdesc = effDesc->mPluginDesc; pdesc->mEffectID; pdesc++) { if (AAX_IEffectDescriptor* plugInDescriptor = outCollection->NewDescriptor ()) { result = GetPlugInDescription (plugInDescriptor, effDesc, pdesc); if (result == AAX_SUCCESS) result = outCollection->AddEffect (pdesc->mEffectID, plugInDescriptor); AAX_ASSERT (result == AAX_SUCCESS); } } outCollection->SetManufacturerName (effDesc->mManufacturer); /* needed ? char packageName[512]; sprintf (packageName, "%s AAX Plug-In", effDesc->mProduct); outCollection->AddPackageName (packageName); sprintf (packageName, "%s Plug-In", effDesc->mProduct); outCollection->AddPackageName (packageName);*/ outCollection->AddPackageName (effDesc->mProduct); if (strlen (effDesc->mProduct) > 16) { char packageShortName[17] = {0}; strncpy (packageShortName, effDesc->mProduct, 16); outCollection->AddPackageName (packageShortName); } outCollection->SetPackageVersion (effDesc->mVersion); return result; } /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/aaxwrapper.h000066400000000000000000000200761461511344300231660ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/aaxwrapper/aaxwrapper.h // Created by : Steinberg, 08/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "docaax.h" /// \cond ignore #pragma once #include "public.sdk/source/vst/basewrapper/basewrapper.h" #include "base/thread/include/flock.h" #include #include #include struct AAX_Plugin_Desc; struct AAX_Effect_Desc; class AAX_IComponentDescriptor; class AAXWrapper_Parameters; class AAXWrapper_GUI; namespace Steinberg { namespace Vst { class IAudioProcessor; class IEditController; } } struct AAXWrapper_Context { void* ptr[1]; // array of numDataPointers pointers }; //------------------------------------------------------------------------ class AAXWrapper : public Steinberg::Vst::BaseWrapper, public Steinberg::Vst::IComponentHandler2, public Steinberg::Vst::IVst3ToAAXWrapper { public: // static creation method (will owned factory) static AAXWrapper* create (Steinberg::IPluginFactory* factory, const Steinberg::TUID vst3ComponentID, AAX_Plugin_Desc* desc, AAXWrapper_Parameters* p); AAXWrapper (Steinberg::Vst::BaseWrapper::SVST3Config& config, AAXWrapper_Parameters* p, AAX_Plugin_Desc* desc); ~AAXWrapper (); //--- VST 3 Interfaces ------------------------------------------------------ // IHostApplication Steinberg::tresult PLUGIN_API getName (Steinberg::Vst::String128 name) SMTG_OVERRIDE; // IComponentHandler Steinberg::tresult PLUGIN_API beginEdit (Steinberg::Vst::ParamID tag) SMTG_OVERRIDE; Steinberg::tresult PLUGIN_API performEdit ( Steinberg::Vst::ParamID tag, Steinberg::Vst::ParamValue valueNormalized) SMTG_OVERRIDE; Steinberg::tresult PLUGIN_API endEdit (Steinberg::Vst::ParamID tag) SMTG_OVERRIDE; Steinberg::tresult PLUGIN_API restartComponent (Steinberg::int32 flags) SMTG_OVERRIDE; // IComponentHandler2 Steinberg::tresult PLUGIN_API setDirty (Steinberg::TBool state) SMTG_OVERRIDE; Steinberg::tresult PLUGIN_API requestOpenEditor ( Steinberg::FIDString name = Steinberg::Vst::ViewType::kEditor) SMTG_OVERRIDE; Steinberg::tresult PLUGIN_API startGroupEdit () SMTG_OVERRIDE; Steinberg::tresult PLUGIN_API finishGroupEdit () SMTG_OVERRIDE; // FUnknown DEF_INTERFACES_2 (Steinberg::Vst::IComponentHandler2, Steinberg::Vst::IVst3ToAAXWrapper, BaseWrapper); REFCOUNT_METHODS (BaseWrapper); // AAXWrapper_Parameters callbacks void setGUI (AAXWrapper_GUI* gui) { mAAXGUI = gui; } Steinberg::int32 /*AAX_Result*/ getParameterInfo (const char* aaxId, Steinberg::Vst::ParameterInfo& paramInfo); Steinberg::int32 /*AAX_Result*/ ResetFieldData (Steinberg::int32 index, void* inData, Steinberg::uint32 inDataSize); Steinberg::int32 Process (AAXWrapper_Context* instance); Steinberg::uint32 getNumMIDIports () const { return mCountMIDIports; } void setSideChainEnable (bool enable); bool generatePageTables (const char* outputFile); void setRenderingOffline (bool val); static void DescribeAlgorithmComponent (AAX_IComponentDescriptor* outDesc, const AAX_Effect_Desc* desc, const AAX_Plugin_Desc* pdesc); //--- --------------------------------------------------------------------- Steinberg::uint32 getNumAAXOutputs () const { return mAAXOutputs; } //------------------------------------------------------------------------ // BaseWrapper overrides --------------------------------- //------------------------------------------------------------------------ bool init () SMTG_OVERRIDE; bool _sizeWindow (Steinberg::int32 width, Steinberg::int32 height) SMTG_OVERRIDE; void onTimer (Steinberg::Timer* timer) SMTG_OVERRIDE; Steinberg::int32 _getChunk (void** data, bool isPreset) SMTG_OVERRIDE; Steinberg::int32 _setChunk (void* data, Steinberg::int32 byteSize, bool isPreset) SMTG_OVERRIDE; void setupProcessTimeInfo () SMTG_OVERRIDE; //------------------------------------------------------------------------ private: void processOutputParametersChanges () SMTG_OVERRIDE; Steinberg::tresult setupBusArrangements (AAX_Plugin_Desc* desc); Steinberg::int32 countSidechainBusChannels (Steinberg::Vst::BusDirection dir, Steinberg::uint64& scBusBitset); void guessActiveOutputs (float** out, Steinberg::uint32 num); void updateActiveOutputState (); AAXWrapper_Parameters* mAAXParams = nullptr; AAXWrapper_GUI* mAAXGUI = nullptr; Steinberg::uint32 mAAXOutputs = 0; Steinberg::Base::Thread::FLock mSyncCalls; // synchronize calls expected in the same thread in VST3 AAX_Plugin_Desc* mPluginDesc = nullptr; Steinberg::uint32 mCountMIDIports = 0; // as of ProTools 12 (?) the context struct does no longer allow unused slots, // so we have to generate indices into the context struct dynamically // context pointer to AAXWrapper always first static const Steinberg::int32 idxContext = 0; static const Steinberg::int32 idxBufferSize = 1; Steinberg::int32 idxInputChannels = -1; Steinberg::int32 idxOutputChannels = -1; Steinberg::int32 idxSideChainInputChannels = -1; Steinberg::int32 idxMidiPorts = -1; Steinberg::int32 idxAuxOutputs = -1; Steinberg::int32 idxMeters = -1; Steinberg::int32 numDataPointers = 0; static const Steinberg::int32 maxActiveChannels = 128; std::bitset mActiveChannels; std::bitset mPropagatedChannels; Steinberg::uint32 mCntMeters = 0; std::unique_ptr mMeterIds; struct GetChunkMessage; void* mainThread = nullptr; Steinberg::Base::Thread::FLock msgQueueLock; std::list msgQueue; float mBypassGain = 1.0; float* mMetersTmp = nullptr; Steinberg::Vst::TQuarterNotes mLastPpqPos = 0; Steinberg::Vst::TQuarterNotes mNextPpqPos = 0; bool mWantsSetChunk = false; bool mSettingChunk = false; bool mSimulateBypass = false; bool mBypass = false; bool mPresetChanged = false; bool mBypassBeforePresetChanged = false; bool mWantsSetChunkIsPreset = false; friend class AAXWrapper_Parameters; friend class AAXWrapper_GUI; }; /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/aaxwrapper_description.h000066400000000000000000000066131461511344300255720ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/aaxwrapper/aaxwrapper_description.h // Created by : Steinberg, 08/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma once #include "base/source/fstring.h" using namespace Steinberg; struct AAX_Aux_Desc { const char* mName; int32 mChannels; // -1 for same as output channel }; struct AAX_Meter_Desc { const char* mName; uint32 mID; uint32 mOrientation; // see AAX_EMeterOrientation uint32 mType; // see AAX_EMeterType }; struct AAX_MIDI_Desc { const char* mName; uint32 mMask; }; struct AAX_Plugin_Desc { const char* mEffectID; // unique for each channel layout as in "com.steinberg.aaxwrapper.mono" const char* mName; uint32 mPlugInIDNative; // unique for each channel layout uint32 mPlugInIDAudioSuite; // unique for each channel layout int32 mInputChannels; int32 mOutputChannels; int32 mSideChainInputChannels; AAX_MIDI_Desc* mMIDIports; AAX_Aux_Desc* mAuxOutputChannels; // zero terminated AAX_Meter_Desc* mMeters; uint32 mLatency; }; struct AAX_Effect_Desc { const char* mManufacturer; const char* mProduct; uint32 mManufacturerID; uint32 mProductID; const char* mCategory; TUID mVST3PluginID; uint32 mVersion; const char* mPageFile; AAX_Plugin_Desc* mPluginDesc; }; // reference this in the Plug-In to force inclusion of the wrapper in the link extern int AAXWrapper_linkAnchor; AAX_Effect_Desc* AAXWrapper_GetDescription (); // to be defined by the Plug-In /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/aaxwrapper_gui.cpp000066400000000000000000000125331461511344300243640ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/aaxwrapper/aaxwrapper_gui.cpp // Created by : Steinberg, 08/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundef-prefix" #endif #include "aaxwrapper_gui.h" #include "aaxwrapper.h" #include "aaxwrapper_parameters.h" #include "AAX_IViewContainer.h" using namespace Steinberg; using namespace Steinberg::Vst; using namespace Steinberg::Base::Thread; //------------------------------------------------------------------------ void AAXWrapper_GUI::CreateViewContainer () { if (GetViewContainerType () == AAX_eViewContainer_Type_HWND || GetViewContainerType () == AAX_eViewContainer_Type_NSView) { mHWND = this->GetViewContainerPtr (); AAXWrapper* wrapper = static_cast (GetEffectParameters ())->getWrapper (); FGuard guard (wrapper->mSyncCalls); wrapper->setGUI (this); mInOpen = true; if (auto* editor = wrapper->getEditor ()) editor->_open (mHWND); mInOpen = false; } } //------------------------------------------------------------------------ AAX_Result AAXWrapper_GUI::GetViewSize (AAX_Point* oEffectViewSize) const { oEffectViewSize->horz = 1024; oEffectViewSize->vert = 768; auto* that = const_cast (this); auto* params = static_cast (that->GetEffectParameters ()); int32 width, height; if (params->getWrapper ()->getEditorSize (width, height)) { oEffectViewSize->horz = width; oEffectViewSize->vert = height; } return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_GUI::SetControlHighlightInfo (AAX_CParamID iParameterID, AAX_CBoolean iIsHighlighted, AAX_EHighlightColor iColor) { AAXWrapper* wrapper = static_cast (GetEffectParameters ())->getWrapper (); Vst::ParamID id = getVstParamID (iParameterID); if (id == kNoParamId) return AAX_ERROR_INVALID_PARAMETER_ID; // TODO wrapper; return AAX_SUCCESS; } //------------------------------------------------------------------------ void AAXWrapper_GUI::DeleteViewContainer () { AAXWrapper* wrapper = static_cast (GetEffectParameters ())->getWrapper (); wrapper->setGUI (nullptr); if (auto* editor = wrapper->getEditor ()) editor->_close (); } //------------------------------------------------------------------------ // METHOD: CreateViewContents //------------------------------------------------------------------------ void AAXWrapper_GUI::CreateViewContents () { } //------------------------------------------------------------------------ bool AAXWrapper_GUI::setWindowSize (AAX_Point& size) { if (mInOpen) mRefreshSize = true; // redo later, resizing might silently not work during opening the UI if (AAX_IViewContainer* vc = GetViewContainer ()) if (vc->SetViewSize (size) == AAX_SUCCESS) return true; return false; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_GUI::TimerWakeup () { if (mRefreshSize) { mRefreshSize = false; AAX_Point size; if (GetViewSize (&size) == AAX_SUCCESS) if (!setWindowSize (size)) mRefreshSize = true; } return AAX_CEffectGUI::TimerWakeup (); } /// \endcond #ifdef __clang__ #pragma clang diagnostic pop #endif vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/aaxwrapper_gui.h000066400000000000000000000060771461511344300240370ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/aaxwrapper/aaxwrapper_gui.h // Created by : Steinberg, 08/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma once #include "AAX_CEffectGUI.h" #include "pluginterfaces/base/fplatform.h" //============================================================================== class AAXWrapper_GUI : public AAX_CEffectGUI { public: static AAX_IEffectGUI* AAX_CALLBACK Create (); AAXWrapper_GUI () = default; virtual ~AAXWrapper_GUI () = default; void CreateViewContents () SMTG_OVERRIDE; void CreateViewContainer () SMTG_OVERRIDE; void DeleteViewContainer () SMTG_OVERRIDE; AAX_Result GetViewSize (AAX_Point* oEffectViewSize) const SMTG_OVERRIDE; AAX_Result SetControlHighlightInfo (AAX_CParamID /* iParameterID */, AAX_CBoolean /* iIsHighlighted */, AAX_EHighlightColor /* iColor */) SMTG_OVERRIDE; AAX_Result TimerWakeup () SMTG_OVERRIDE; bool setWindowSize (AAX_Point& size); // calback from AAXWrapper private: bool mInOpen = false; bool mRefreshSize = false; void* mHWND = nullptr; }; /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/aaxwrapper_parameters.cpp000066400000000000000000000714531461511344300257510ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format auto // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/aaxwrapper/aaxwrapper_parameters.cpp // Created by : Steinberg, 08/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #include "aaxwrapper_parameters.h" #include "aaxwrapper.h" #include "aaxwrapper_description.h" #include "AAX_CBinaryDisplayDelegate.h" #include "AAX_CBinaryTaperDelegate.h" #include "AAX_CLinearTaperDelegate.h" #include "AAX_CNumberDisplayDelegate.h" #include "AAX_CUnitDisplayDelegateDecorator.h" #include "../hosting/hostclasses.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstchannelcontextinfo.h" using namespace Steinberg; using namespace Steinberg::Vst; using namespace Steinberg::Base::Thread; #define USE_TRACE 1 #if USE_TRACE #define HAPI AAX_eTracePriorityHost_Normal #define HLOG AAX_TRACE #else #define HAPI 0 #if SMTG_OS_WINDOWS #define HLOG __noop #else #define HLOG(...) \ do \ { \ } while (false) #endif #endif SMTG_EXPORT_SYMBOL IPluginFactory* PLUGIN_API GetPluginFactory (); const char* kBypassId = "Byp"; ParameterInfo kParamInfoBypass = {CCONST ('B', 'y', 'p', 0), STR ("Bypass"), STR ("Bypass"), STR (""), 1, 0, -1, Vst::ParameterInfo::kCanAutomate | Vst::ParameterInfo::kIsBypass}; //------------------------------------------------------------------------ // AAXWrapper_Parameters //------------------------------------------------------------------------ AAXWrapper_Parameters::AAXWrapper_Parameters (int32_t plugIndex) : AAX_CEffectParameters (), mSimulateBypass (false) { HLOG (HAPI, "%s", __FUNCTION__); AAX_Effect_Desc* effDesc = AAXWrapper_GetDescription (); mPluginDesc = effDesc->mPluginDesc + plugIndex; mWrapper = AAXWrapper::create (GetPluginFactory (), effDesc->mVST3PluginID, mPluginDesc, this); if (!mWrapper) return; #if DEVELOPMENT static bool writePagetableFile; if (writePagetableFile) // use debugger to set variable or jump into function mWrapper->generatePageTables ("c:/tmp/pagetable.xml"); #endif // if no VST3 Bypass found then simulate it mSimulateBypass = (mWrapper->mBypassParameterID == Vst::kNoParamId); mWrapper->mSimulateBypass = mSimulateBypass; if (mParamNames.size () < (size_t)mWrapper->mNumParams) { mParamNames.resize (mWrapper->mNumParams); for (size_t i = 0; i < mParamNames.size (); i++) mParamNames[i].set (mWrapper->mParameterMap[i].vst3ID); } } //------------------------------------------------------------------------ AAXWrapper_Parameters::~AAXWrapper_Parameters () { delete mWrapper; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::EffectInit () { HLOG (HAPI, "%s", __FUNCTION__); if (AAX_IController* ctrl = Controller ()) { AAX_CSampleRate sampleRate; if (ctrl->GetSampleRate (&sampleRate) == AAX_SUCCESS) mWrapper->_setSampleRate (sampleRate); if (mWrapper->mProcessor) ctrl->SetSignalLatency ( static_cast (mWrapper->mProcessor->getLatencySamples ())); } for (uint32 i = 0; i < static_cast (mWrapper->mNumParams); i++) { AAX_CParamID iParameterID = mParamNames[i]; ParameterInfo paramInfo = {}; if (AAX_Result result = mWrapper->getParameterInfo (iParameterID, paramInfo)) return result; String title = paramInfo.title; AAX_IParameter* param = nullptr; param = NEW AAX_CParameter ( iParameterID, AAX_CString (title), paramInfo.defaultNormalizedValue, AAX_CLinearTaperDelegate (0, 1), AAX_CUnitDisplayDelegateDecorator (AAX_CNumberDisplayDelegate (), AAX_CString (title)), true); mParameterManager.AddParameter (param); } if (mSimulateBypass) { AAX_IParameter* param = NEW AAX_CParameter ( kBypassId, AAX_CString ("Bypass"), false, AAX_CBinaryTaperDelegate (), AAX_CBinaryDisplayDelegate ("off", "on"), true); mParameterManager.AddParameter (param); } return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::ResetFieldData (AAX_CFieldIndex index, void* inData, uint32_t inDataSize) const { HLOG (HAPI, "%s", __FUNCTION__); return mWrapper->ResetFieldData (index, inData, inDataSize); } //------------------------------------------------------------------------ // METHOD: AAX_UpdateMIDINodes // This will be called by the host if there are MIDI packets that need // to be handled in the Data Model. //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::UpdateMIDINodes (AAX_CFieldIndex inFieldIndex, AAX_CMidiPacket& inPacket) { HLOG (HAPI, "%s", __FUNCTION__); AAX_Result result; result = AAX_SUCCESS; inFieldIndex; inPacket; // Do some MIDI work if necessary. return result; } //------------------------------------------------------------------------ int32 AAXWrapper_Parameters::getParameterInfo (AAX_CParamID aaxId, Vst::ParameterInfo& paramInfo) const { AAX_Result result = mWrapper->getParameterInfo (aaxId, paramInfo); if (result != AAX_SUCCESS) { if (mSimulateBypass && strcmp (aaxId, kBypassId) == 0) { paramInfo = kParamInfoBypass; result = AAX_SUCCESS; } } return result; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetNumberOfParameters (int32_t* oNumControls) const { HLOG (HAPI, "%s", __FUNCTION__); *oNumControls = mWrapper->mNumParams; if (mSimulateBypass) *oNumControls += 1; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetMasterBypassParameter (AAX_IString* oIDString) const { HLOG (HAPI, "%s", __FUNCTION__); *oIDString = mSimulateBypass ? kBypassId : AAX_CID (mWrapper->mBypassParameterID); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterIsAutomatable (AAX_CParamID iParameterID, AAX_CBoolean* oAutomatable) const { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); ParameterInfo paramInfo = {}; if (AAX_Result result = getParameterInfo (iParameterID, paramInfo)) return result; *oAutomatable = (paramInfo.flags & ParameterInfo::kCanAutomate) != 0; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterNumberOfSteps (AAX_CParamID iParameterID, int32_t* oNumSteps) const { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); ParameterInfo paramInfo = {}; if (AAX_Result result = getParameterInfo (iParameterID, paramInfo)) return result; if (paramInfo.stepCount == 0) *oNumSteps = 1024; else *oNumSteps = paramInfo.stepCount + 1; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterName (AAX_CParamID iParameterID, AAX_IString* oName) const { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); ParameterInfo paramInfo = {}; if (AAX_Result result = getParameterInfo (iParameterID, paramInfo)) return result; *oName = String (paramInfo.title); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterNameOfLength (AAX_CParamID iParameterID, AAX_IString* oName, int32_t iNameLength) const { HLOG (HAPI, "%s(id=%s, len=%d)", __FUNCTION__, iParameterID, iNameLength); ParameterInfo paramInfo = {}; if (AAX_Result result = getParameterInfo (iParameterID, paramInfo)) return result; if (iNameLength >= tstrlen (paramInfo.title)) *oName = String (paramInfo.title); else { if (iNameLength < tstrlen (paramInfo.shortTitle)) paramInfo.shortTitle[iNameLength] = 0; *oName = String (paramInfo.shortTitle); } return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterDefaultNormalizedValue (AAX_CParamID iParameterID, double* oValue) const { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); ParameterInfo paramInfo = {}; if (AAX_Result result = getParameterInfo (iParameterID, paramInfo)) return result; *oValue = paramInfo.defaultNormalizedValue; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::SetParameterDefaultNormalizedValue (AAX_CParamID iParameterID, double iValue) { iParameterID; iValue; HLOG (HAPI, "%s(id=%s, value=%lf)", __FUNCTION__, iParameterID, iValue); return AAX_ERROR_UNIMPLEMENTED; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterType (AAX_CParamID iParameterID, AAX_EParameterType* oParameterType) const { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); ParameterInfo paramInfo = {}; if (AAX_Result result = getParameterInfo (iParameterID, paramInfo)) return result; *oParameterType = paramInfo.stepCount == 0 ? AAX_eParameterType_Continuous : AAX_eParameterType_Discrete; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterOrientation ( AAX_CParamID iParameterID, AAX_EParameterOrientation* oParameterOrientation) const { iParameterID; HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); *oParameterOrientation = AAX_eParameterOrientation_BottomMinTopMax; // we don't care return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameter (AAX_CParamID iParameterID, AAX_IParameter** /*oParameter*/) { iParameterID; HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); SMTG_ASSERT (!"the host is not supposed to retrieve the AAX_IParameter interface"); return AAX_ERROR_UNIMPLEMENTED; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterIndex (AAX_CParamID iParameterID, int32_t* oControlIndex) const { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); Vst::ParamID id = getVstParamID (iParameterID); if (id == -1) { if (mSimulateBypass && strcmp (iParameterID, kBypassId) == 0) { *oControlIndex = mWrapper->mNumParams; return AAX_SUCCESS; } return AAX_ERROR_INVALID_PARAMETER_ID; } *oControlIndex = -1; int32_t idx = 0; for (auto& item : mParamNames) { if (strcmp (item, iParameterID) == 0) { *oControlIndex = idx; return AAX_SUCCESS; } idx++; } return AAX_ERROR_INVALID_PARAMETER_ID; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterIDFromIndex (int32_t iControlIndex, AAX_IString* oParameterIDString) const { HLOG (HAPI, "%s(idx=%x)", __FUNCTION__, iControlIndex); if ((size_t)iControlIndex >= mWrapper->mParameterMap.size ()) { if (mSimulateBypass && iControlIndex == mWrapper->mNumParams) { oParameterIDString->Set (kBypassId); return AAX_SUCCESS; } return AAX_ERROR_INVALID_PARAMETER_INDEX; } *oParameterIDString = mParamNames[iControlIndex]; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterValueInfo (AAX_CParamID iParameterID, int32_t /*iSelector*/, int32_t* oValue) const { iParameterID; HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); *oValue = 0; return AAX_ERROR_UNIMPLEMENTED; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterValueFromString ( AAX_CParamID iParameterID, double* oValue, const AAX_IString& iValueString) const { HLOG (HAPI, "%s(id=%s, string=%s)", __FUNCTION__, iParameterID, iValueString.Get ()); Vst::ParamID id = getVstParamID (iParameterID); if (id == -1) { if (mSimulateBypass && strcmp (iParameterID, kBypassId) == 0) { *oValue = strcmp (iValueString.Get (), "on") == 0; return AAX_SUCCESS; } return AAX_ERROR_INVALID_PARAMETER_ID; } String tmp (iValueString.Get ()); if (mWrapper->mController->getParamValueByString (id, (Vst::TChar*)tmp.text16 (), *oValue) != kResultTrue) return AAX_ERROR_INVALID_PARAMETER_ID; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterStringFromValue (AAX_CParamID iParameterID, double iValue, AAX_IString* oValueString, int32_t maxLength) const { HLOG (HAPI, "%s(id=%s, value=%lf)", __FUNCTION__, iParameterID, iValue); Vst::ParamID id = getVstParamID (iParameterID); if (id == -1) { if (mSimulateBypass && strcmp (iParameterID, kBypassId) == 0) { oValueString->Set (iValue >= 0.5 ? "on" : "off"); return AAX_SUCCESS; } return AAX_ERROR_INVALID_PARAMETER_ID; } String128 tmp = {0}; if (mWrapper->mController->getParamStringByValue (id, iValue, tmp) != kResultTrue) return AAX_ERROR_INVALID_PARAMETER_ID; if (maxLength < tstrlen (tmp)) tmp[maxLength] = 0; *oValueString = String (tmp); // String str (tmp); // str.copyTo8 (text, 0, kVstMaxParamStrLen); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterValueString (AAX_CParamID iParameterID, AAX_IString* oValueString, int32_t iMaxLength) const { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); double value; if (AAX_Result result = GetParameterNormalizedValue (iParameterID, &value)) return result; return GetParameterStringFromValue (iParameterID, value, oValueString, iMaxLength); } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetParameterNormalizedValue (AAX_CParamID iParameterID, double* oValuePtr) const { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); Vst::ParamID id = getVstParamID (iParameterID); if (id == -1) { if (mSimulateBypass && strcmp (iParameterID, kBypassId) == 0) { *oValuePtr = (mWrapper->mBypass ? 1 : 0); return AAX_SUCCESS; } return AAX_ERROR_INVALID_PARAMETER_ID; } ParamValue value = 0; if (!mWrapper->getLastParamChange (id, value)) value = mWrapper->mController->getParamNormalized (id); *oValuePtr = value; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::SetParameterNormalizedValue (AAX_CParamID iParameterID, double iValue) { HLOG (HAPI, "%s(id=%s, value=%lf)", __FUNCTION__, iParameterID, iValue); Vst::ParamID id = getVstParamID (iParameterID); if (id == -1) { if (mSimulateBypass && strcmp (iParameterID, kBypassId) == 0) return AAX_SUCCESS; return AAX_ERROR_INVALID_PARAMETER_ID; } // mWrapper->addParameterChange (id, iValue, 0); if (auto ad = AutomationDelegate ()) { // Touch the control, Send that token, Release the control ad->PostTouchRequest (iParameterID); ad->PostSetValueRequest (iParameterID, iValue); ad->PostReleaseRequest (iParameterID); } return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::SetParameterNormalizedRelative (AAX_CParamID iParameterID, double iValue) { HLOG (HAPI, "%s(id=%s, value=%lf)", __FUNCTION__, iParameterID, iValue); Vst::ParamID id = getVstParamID (iParameterID); if (id == -1) { if (mSimulateBypass && strcmp (iParameterID, kBypassId) == 0) { mWrapper->mBypass = (mWrapper->mBypass + iValue >= 0.5); mWrapper->_setBypass (mWrapper->mBypass); return AAX_SUCCESS; } return AAX_ERROR_INVALID_PARAMETER_ID; } ParamValue value = 0; if (!mWrapper->getLastParamChange (id, value)) value = mWrapper->mController->getParamNormalized (id); value = value + iValue; if (value < 0) value = 0; else if (value > 1) value = 1; SetParameterNormalizedValue (iParameterID, value); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::TouchParameter (AAX_CParamID iParameterID) { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); if (auto ad = AutomationDelegate ()) return ad->PostTouchRequest (iParameterID); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::ReleaseParameter (AAX_CParamID iParameterID) { HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); if (auto ad = AutomationDelegate ()) return ad->PostReleaseRequest (iParameterID); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::UpdateParameterTouch (AAX_CParamID iParameterID, AAX_CBoolean /*iTouchState*/) { iParameterID; HLOG (HAPI, "%s(id=%s)", __FUNCTION__, iParameterID); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::UpdateParameterNormalizedValue (AAX_CParamID iParameterID, double iValue, AAX_EUpdateSource iSource) { HLOG (HAPI, "%s(id=%s, value=%lf)", __FUNCTION__, iParameterID, iValue); Vst::ParamID id = getVstParamID (iParameterID); if (id == -1) { if (mSimulateBypass && strcmp (iParameterID, kBypassId) == 0) { mWrapper->mBypass = iValue >= 0.5; mWrapper->_setBypass (mWrapper->mBypass); } else return AAX_ERROR_INVALID_PARAMETER_ID; } else mWrapper->addParameterChange (id, iValue, 0); #if 1 return AAX_CEffectParameters::UpdateParameterNormalizedValue (iParameterID, iValue, iSource); #else if (AutomationDelegate ()) AutomationDelegate ()->PostCurrentValue (iParameterID, iValue); // if (AAX_Result result = SetParameterNormalizedValue (iParameterID, iValue)) // return result; // Now the control has changed AAX_Result result = mPacketDispatcher.SetDirty (iParameterID); ++mNumPlugInChanges; return result; #endif } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::_UpdateParameterNormalizedRelative (AAX_CParamID iParameterID, double iValue) { HLOG (HAPI, "%s(id=%s, value=%lf)", __FUNCTION__, iParameterID, iValue); if (AAX_Result result = SetParameterNormalizedRelative (iParameterID, iValue)) return result; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::_GenerateCoefficients () { HLOG (HAPI, "%s", __FUNCTION__); AAX_Result result = mPacketDispatcher.Dispatch (); return result; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetNumberOfChunks (int32_t* numChunks) const { HLOG (HAPI, "%s", __FUNCTION__); *numChunks = 1; return AAX_SUCCESS; } const AAX_CTypeID AAXWRAPPER_CONTROLS_CHUNK_ID = CCONST ('a', 'w', 'c', 'k'); const char AAXWRAPPER_CONTROLS_CHUNK_DESCRIPTION[] = "AAXWrapper State"; //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetChunkIDFromIndex (int32_t index, AAX_CTypeID* chunkID) const { HLOG (HAPI, "%s", __FUNCTION__); if (index != 0) return AAX_ERROR_INVALID_CHUNK_INDEX; *chunkID = AAXWRAPPER_CONTROLS_CHUNK_ID; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetChunkSize (AAX_CTypeID chunkID, uint32_t* oSize) const { HLOG (HAPI, "%s", __FUNCTION__); if (chunkID != AAXWRAPPER_CONTROLS_CHUNK_ID) return AAX_ERROR_INVALID_CHUNK_ID; FGuard guard (mWrapper->mSyncCalls); bool isPreset = false; void* data; *oSize = static_cast (mWrapper->_getChunk (&data, isPreset)); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::GetChunk (AAX_CTypeID chunkID, AAX_SPlugInChunk* oChunk) const { HLOG (HAPI, "%s", __FUNCTION__); if (chunkID != AAXWRAPPER_CONTROLS_CHUNK_ID) return AAX_ERROR_INVALID_CHUNK_ID; FGuard guard (mWrapper->mSyncCalls); // assume GetChunkSize called before and size of oChunk correct oChunk->fVersion = 1; oChunk->fSize = static_cast (mWrapper->mChunk.getSize ()); memcpy (oChunk->fData, mWrapper->mChunk.getData (), static_cast (mWrapper->mChunk.getSize ())); strncpy (reinterpret_cast (oChunk->fName), AAXWRAPPER_CONTROLS_CHUNK_DESCRIPTION, 31); return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::SetChunk (AAX_CTypeID chunkID, const AAX_SPlugInChunk* iChunk) { HLOG (HAPI, "%s", __FUNCTION__); if (chunkID != AAXWRAPPER_CONTROLS_CHUNK_ID) return AAX_ERROR_INVALID_CHUNK_ID; FGuard guard (mWrapper->mSyncCalls); bool isPreset = mPresetOpened; mWrapper->_setChunk (const_cast (iChunk->fData), iChunk->fSize, isPreset); mPresetOpened = false; return AAX_SUCCESS; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::CompareActiveChunk (const AAX_SPlugInChunk* /*iChunk*/, AAX_CBoolean* /*oIsEqual*/) const { HLOG (HAPI, "%s", __FUNCTION__); return AAX_ERROR_UNIMPLEMENTED; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::_GetNumberOfChanges (int32_t* oValue) const { HLOG (HAPI, "%s", __FUNCTION__); *oValue = mNumPlugInChanges; return AAX_SUCCESS; } //------------------------------------------------------------------------ void AAXWrapper_Parameters::setDirty (bool state) { if (state) mNumPlugInChanges++; } //------------------------------------------------------------------------ AAX_Result AAXWrapper_Parameters::NotificationReceived (AAX_CTypeID iNotificationType, const void* iNotificationData, uint32_t iNotificationDataSize) { switch (iNotificationType) { //--- Tell the plug-in about connection of the sidechain input case AAX_eNotificationEvent_SideChainBeingConnected: mWrapper->setSideChainEnable (true); break; //--- Tell the plug-in about disconnection of the sidechain case AAX_eNotificationEvent_SideChainBeingDisconnected: mWrapper->setSideChainEnable (false); break; //--- The host has changed its latency compensation for this plug-in instance. case AAX_eNotificationEvent_SignalLatencyChanged: { int32_t outSample; Controller ()->GetSignalLatency (&outSample); if (mPluginDesc) mPluginDesc->mLatency = static_cast (outSample); if (mWrapper->isActive ()) { mWrapper->_suspend (); mWrapper->_resume (); } break; } //--- Tell the plug-in that chunk data is coming from a TFX case AAX_eNotificationEvent_PresetOpened: { // do not wanted to overwrite the bypass state when loading preset double value; if (GetParameterNormalizedValue ( mSimulateBypass ? kBypassId : AAX_CID (mWrapper->mBypassParameterID), &value) == AAX_SUCCESS) mWrapper->mBypassBeforePresetChanged = (value >= 0.5); mWrapper->mPresetChanged = true; mPresetOpened = true; break; } //--- Tell the plug-in that chunk data is coming from a PTX case AAX_eNotificationEvent_SessionBeingOpened: { mPresetOpened = false; break; } //--- Entering offline processing mode (i.e.offline bounce) case AAX_eNotificationEvent_EnteringOfflineMode: { mWrapper->setRenderingOffline (true); break; } //--- Exiting offline processing mode (i.e. offline bounce) case AAX_eNotificationEvent_ExitingOfflineMode: { mWrapper->setRenderingOffline (false); break; } //--- A string representing the path of the current session case AAX_eNotificationEvent_SessionPathChanged: { AAX_CString str (*reinterpret_cast (iNotificationData)); mSessionPath = str.StdString (); break; } //--- The current name of this plug-in instance's track case AAX_eNotificationEvent_TrackNameChanged: { AAX_CString str (*reinterpret_cast (iNotificationData)); mChannelName = str.StdString (); if (mWrapper->mController) { FUnknownPtr iChannelContextInfoListener ( mWrapper->mController); if (iChannelContextInfoListener) { auto list = Vst::HostAttributeList::make (); String string; string.fromUTF8 (mChannelName.data ()); list->setString (Vst::ChannelContext::kChannelNameKey, string); list->setInt (Vst::ChannelContext::kChannelNameLengthKey, string.length ()); iChannelContextInfoListener->setChannelContextInfos (list); } } break; } //--- The zero-indexed insert position of this plug-in instance within its track case AAX_eNotificationEvent_InsertPositionChanged: { // auto tmp = *reinterpret_cast (iNotificationData); break; } //--- Tell the plug-in the maximum allowed GUI dimensions case AAX_eNotificationEvent_MaxViewSizeChanged: { // auto tmp = *reinterpret_cast (iNotificationData); break; } } return AAX_CEffectParameters::NotificationReceived (iNotificationType, iNotificationData, iNotificationDataSize); } /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/aaxwrapper_parameters.h000066400000000000000000000207221461511344300254070ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/aaxwrapper/aaxwrapper_parameters.h // Created by : Steinberg, 08/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma once #include "public.sdk/source/vst/basewrapper/basewrapper.h" #include "AAX_CEffectParameters.h" #include "AAX_Push8ByteStructAlignment.h" class AAXWrapper; struct AAX_Plugin_Desc; //------------------------------------------------------------------------ // helper to convert to/from AAX/Vst IDs struct AAX_CID { char str[10] {0}; AAX_CID () {} AAX_CID (Steinberg::Vst::ParamID id) { set (id); } void set (Steinberg::Vst::ParamID id) { snprintf (str, 10, "p%lX", static_cast (id)); } operator const char* () const { return str; } }; Steinberg::Vst::ParamID getVstParamID (const char* aaxid); #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wignored-attributes" #pragma clang diagnostic ignored "-Wincompatible-ms-struct" #endif //------------------------------------------------------------------------ class AAXWrapper_Parameters : public AAX_CEffectParameters { public: // Constructor AAXWrapper_Parameters (int32_t plugIndex); ~AAXWrapper_Parameters (); static AAX_CEffectParameters* AAX_CALLBACK Create (); // Overrides from AAX_CEffectParameters AAX_Result EffectInit () SMTG_OVERRIDE; AAX_Result ResetFieldData (AAX_CFieldIndex index, void* inData, uint32_t inDataSize) const SMTG_OVERRIDE; AAX_Result NotificationReceived (AAX_CTypeID iNotificationType, const void* iNotificationData, uint32_t iNotificationDataSize) SMTG_OVERRIDE; /* Parameter information */ AAX_Result GetNumberOfParameters (int32_t* oNumControls) const SMTG_OVERRIDE; AAX_Result GetMasterBypassParameter (AAX_IString* oIDString) const SMTG_OVERRIDE; AAX_Result GetParameterIsAutomatable (AAX_CParamID iParameterID, AAX_CBoolean* oAutomatable) const SMTG_OVERRIDE; AAX_Result GetParameterNumberOfSteps (AAX_CParamID iParameterID, int32_t* oNumSteps) const SMTG_OVERRIDE; AAX_Result GetParameterName (AAX_CParamID iParameterID, AAX_IString* oName) const SMTG_OVERRIDE; AAX_Result GetParameterNameOfLength (AAX_CParamID iParameterID, AAX_IString* oName, int32_t iNameLength) const SMTG_OVERRIDE; AAX_Result GetParameterDefaultNormalizedValue (AAX_CParamID iParameterID, double* oValue) const SMTG_OVERRIDE; AAX_Result SetParameterDefaultNormalizedValue (AAX_CParamID iParameterID, double iValue) SMTG_OVERRIDE; AAX_Result GetParameterType (AAX_CParamID iParameterID, AAX_EParameterType* oParameterType) const SMTG_OVERRIDE; AAX_Result GetParameterOrientation (AAX_CParamID iParameterID, AAX_EParameterOrientation* oParameterOrientation) const SMTG_OVERRIDE; AAX_Result GetParameter (AAX_CParamID iParameterID, AAX_IParameter** oParameter) SMTG_OVERRIDE; AAX_Result GetParameterIndex (AAX_CParamID iParameterID, int32_t* oControlIndex) const SMTG_OVERRIDE; AAX_Result GetParameterIDFromIndex (int32_t iControlIndex, AAX_IString* oParameterIDString) const SMTG_OVERRIDE; AAX_Result GetParameterValueInfo (AAX_CParamID iParameterID, int32_t iSelector, int32_t* oValue) const SMTG_OVERRIDE; /** Parameter setters and getters */ AAX_Result GetParameterValueFromString (AAX_CParamID iParameterID, double* oValue, const AAX_IString& iValueString) const SMTG_OVERRIDE; AAX_Result GetParameterStringFromValue (AAX_CParamID iParameterID, double iValue, AAX_IString* oValueString, int32_t maxLength) const SMTG_OVERRIDE; AAX_Result GetParameterValueString (AAX_CParamID iParameterID, AAX_IString* oValueString, int32_t iMaxLength) const SMTG_OVERRIDE; AAX_Result GetParameterNormalizedValue (AAX_CParamID iParameterID, double* oValuePtr) const SMTG_OVERRIDE; AAX_Result SetParameterNormalizedValue (AAX_CParamID iParameterID, double iValue) SMTG_OVERRIDE; AAX_Result SetParameterNormalizedRelative (AAX_CParamID iParameterID, double iValue) SMTG_OVERRIDE; /* Automated parameter helpers */ AAX_Result TouchParameter (AAX_CParamID iParameterID) SMTG_OVERRIDE; AAX_Result ReleaseParameter (AAX_CParamID iParameterID) SMTG_OVERRIDE; AAX_Result UpdateParameterTouch (AAX_CParamID iParameterID, AAX_CBoolean iTouchState) SMTG_OVERRIDE; /* Asynchronous parameter update methods */ AAX_Result UpdateParameterNormalizedValue (AAX_CParamID iParameterID, double iValue, AAX_EUpdateSource iSource) SMTG_OVERRIDE; AAX_Result _UpdateParameterNormalizedRelative (AAX_CParamID iParameterID, double iValue); AAX_Result _GenerateCoefficients (); /* Chunk methods */ AAX_Result GetNumberOfChunks (int32_t* numChunks) const SMTG_OVERRIDE; AAX_Result GetChunkIDFromIndex (int32_t index, AAX_CTypeID* chunkID) const SMTG_OVERRIDE; AAX_Result GetChunkSize (AAX_CTypeID chunkID, uint32_t* oSize) const SMTG_OVERRIDE; AAX_Result GetChunk (AAX_CTypeID chunkID, AAX_SPlugInChunk* oChunk) const SMTG_OVERRIDE; AAX_Result SetChunk (AAX_CTypeID chunkID, const AAX_SPlugInChunk* iChunk) SMTG_OVERRIDE; AAX_Result CompareActiveChunk (const AAX_SPlugInChunk* iChunk, AAX_CBoolean* oIsEqual) const SMTG_OVERRIDE; AAX_Result _GetNumberOfChanges (int32_t* oValue) const; // Override this method to receive MIDI // packets for the described MIDI nodes AAX_Result UpdateMIDINodes (AAX_CFieldIndex inFieldIndex, AAX_CMidiPacket& inPacket) SMTG_OVERRIDE; AAXWrapper* getWrapper () { return mWrapper; } void setDirty (bool state); private: Steinberg::int32 getParameterInfo (AAX_CParamID aaxId, Steinberg::Vst::ParameterInfo& paramInfo) const; AAXWrapper* mWrapper = nullptr; std::vector mParamNames; AAX_Plugin_Desc* mPluginDesc = nullptr; std::string mChannelName; std::string mSessionPath; bool mSimulateBypass = false; bool mPresetOpened = false; }; #ifdef __clang__ #pragma clang diagnostic pop #endif #include "AAX_PopStructAlignment.h" /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/docaax.h000066400000000000000000000066571461511344300222640ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Examples // Filename : public.sdk/source/vst/axwrapper/docaax.h // Created by : Steinberg, 09/2017 // Description : VST 3 -> AAX Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /** ******************************************* \page AAXWrapper VST 3 - AAX Wrapper ******************************************* \tableofcontents \brief Helper Class wrapping a VST 3 plug-in to a AAX plug-in *************************** \section AAXIntroduction Introduction *************************** The VST 3 SDK comes with a helper class which wraps one VST 3 Audio Processor and Edit Controller to a AAX plug-in. \n *************************** \section howtoAAX How does it work? *************************** - Check the AGainAAX example - AAX SDK 2.3 or higher is expected in folder external.avid.aax (located at the same level than the folder public.sdk) - here the step based on the AgainAAX example: - in the cpp file againaax.cpp you can define the plugin properties : IO audio, product ID, ... - on Windows copy built linker output again_aax.aaxplugin to "c:\Program Files\Common Files\Avid\Audio\Plug-Ins\again_aax.aaxplugin\Contents\x64" (the debug build does this automatically, but needs appropriate access rights (Administrator rights of your visual)) - on OSX copy built bundle build/Debug/again.aaxplugin to "/Library/Application Support/Avid/Audio/Plug-Ins" - a developer version of Pro Tools is needed to load the plugin, the release version of Pro Tools requires plugins to be Pace-signed (PACE Anti-Piracy Inc.: https://www.ilok.com) */ vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/resource/000077500000000000000000000000001461511344300224655ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/resource/PlugIn.ico000066400000000000000000013053561461511344300243740ustar00rootroot00000000000000 00h ( 00. h~" ( ' (H00 %6P  u h(0`wwwwwwwwwwpwwwwwwwwwwpUUUUUUUUUUPpwwwwpwgwwwpwwpwwwwwwwwwwwwwwppwwwwwwwppwpUuUXWUQxuUXxUPxpwpwwwwpwgwwwpwwpwwwwwwwwwpwwwwwwwpwWwwwwwpupPpuUUUUUUUUUpwwwwwwwwwwpwwwwwwwwwwpwwwwwwwwwwpwwwwwwwp???????????????????????????????( @wwwwwwpUUUUUUwwpwwwwwwpwwUwwwxXuppxuPxPXqwwpwwwwpwwxwwwwwwxwwwwwwwwwwwwwpwwwwwwwpWwwwwp?????( wwwwppWuWuWqWwwpwwwwwwp,>(0`vzz:>>Z:RrZZZ*vBb*..JNNN">fff2.VBRfZfv"V &&&rfrBFF   ~NRZB2>r~V(&566n^jnrrrRf?*F:F5.6SVVF>F$QVZ9::zξ^bbʂZNVmnn.&.Į%"&fZb  zrzV>6"nfnGJN_bfHJJF2BfVb{~~122QRR86:frbjvvzN>J:&6 lFX^b΢***nnrDFJtvvN2426ZVZ*"&wz~BBB"""b2nf"NƒrN~VB.>"fҒZFVRnVJVZNZRzBjʢ*&~~˲NRVNFN-*.^^^fjjf^frjrVI.?BFgjnRJR@6>jzbn~/".JBJ6*6B>BUZ^2"1.2KNR(&* .*zRjN:J(>:>;&֢$"n"R2*2^>""zBfdfj¢jZjz"Zrprv""qbn^V^,"*^N^vjvZ2 n^n:.6VVZrzfbffVfJFJ^^bRNR.&*zzz>>>^:....jZf"vfrFFF @{{{)))))) YU+++++UUTTTTTTTTTTTTTTTTTTTTffffffffffffffffffffQfƮQQQQQQQQQQQQQQQQQQQQB$\ƀ7ii77pHïNNNp**>٨1[ rrrrrrrrrrxOOO;,!RRW]grg8XuCCuI_*EXEu"sCgrg CG2|RS#_2|"V666 5!W;Igb6g [~4Z g64lZ ĦKA4 4L }6@6 .^hgFg䦐k LFgLwh^4FqBL&<.4@qLa(.4F@qLŊ.4 Lwhゕ4@ gkL4@ g .h@Ѷ64Č}. g@x̻.KAL46gBx:- B@`g6 46 B@e4 x@ 6 B$N8Nq\\\ùNNNp* 81,v>18̰Y`OOO;P]Wv̛YYYYYYYYXuCCuI_nEWjtu_tE̩)ƪCG2|vSt#yCC! /zj5P>IsIR 3~/d%%%%%%%%%%%%%%%%%%%?dddddddddddddddddddD?D===================M?J?9J??'''''''?Y000ߛ)???????????????????????????????( @zrz6::fBBn""NRV.R>NZ^^ƒfjn  FJN*"&R">RZ^>*r bffb>BF"nB^r2Zz®NFN^bfjnn  2&2>.:F.*bVb:&NBNVJVbZbJ2:>BRrVVV^bbVJR.".~΢VBN2"rfnJNNVZbF.NBJ&znv26:.&.r~j&&V^b :*f"NZZ^~^fjBFFnbjjnrƢ.*F>FRzNVZ~VBRJNR~rz6:>nN2jֲ>*:bF"6B6BҾ r>2>BrƂVFRRvʒ¢ҢvfrFFJffj..RRV2jjn "VZ^B*&zbbfnnn ®>&RBNfZbN2>>Bbbb2".~ 6"NNNJ.*2&.Z^bRVZZBR0:5rrQ[&m_~ʽ 14u4444444444444ʣ?yeUy}U\IpD?++MMMMhYYMMMMMi7/i`dG~hLL"Og=AfNFʿZ2j$h~l~S)% M V'vZS$.!PMhZVK6S !$S @3a$S<.$hZVxt'6$6t MMMM k6ZSMMMMMMMMS$P MMMM#MMMM $B$"MMMM]UyUyM\\\\Cz|L\\\\l,>pM HREEEEEE^q o d  c=Wq9bIIIIIIIIIIIIIb?IIʍ8888888888888ʇ55555555555558*(((({{{{{{(((;w(((((?????( zZ:*6B*"VJVf~^^^RBN2"  rbn666:.*&.vZjj njnV*F^>&"*"fff:&F2BZBjzn>*:&^RZf vjr^Z:&"f^fNFN6" :6:2"."""2"Zzj rjnnJ""."jfj>&B6BfJB*:fRbfQQQOOOOOQQQQQQQQQ$$$$$$=QQQQQQQ'GQQQQQQQ N/E"""""QQ 5->1A. QQ'K%0QQQQQQQQ3MQQQQQQQQ-#F(P:-QQQQQQQQ #FC:-QQQQQQQQ- 2,;QQQQQQQQ'*BQQQQQQQ'6&/"""""Q' !!! <1A. QQQQQQQQ++++++LQQQQQQQQ9888QQQQQQQ,>(  %(('''''&&&&&%%%%%$$$$$$#####"""""!!!!!                                "(.7@GOW]]\\[[ZZZYYXXWWVVUUUTSSSRRQQPPPONNNMMLLKKKJIIIHGGGFFEEDDDCBBBAA@@???>===<<;;::9988877665544332211100//..--,,+++**))((''&&&%$$$##""!!!             )3<CKT[ahow}}||{zyyxxwvuutssrqqponnmmlkjjihhgffedccbba`__^]]\[[ZYXXWVVUTTSRRQPPONMMLKKJIIHGGFEDDCBBA@@?>>=<<;:998776554322110/..-,,+**)(''&&%$##"!!         !.8AIRZcls|~}|{zyxxvuttsrpoonmkkjihgfedcca`__^\[ZZYWVVUTSRQPONMLKJJIGFEEDBAA@?==<;:98765532100.-,,+*(('&%$#"!       .7AJR^hpy~}|{zywvutsqponmlkihgfecba`_^\[ZYXVUTSRQONMLKJHGFEDCA@?>=;:987643210.-,+*)(&%$#"      *5?HP\hpyponlkjihgedcba_^]\[ZXWVUTRQPONLKJIHGEDCBA?>=<;987654210/.,+*)(&%$#"!    &2<ENXenv onlkjihgedcba_^]\[ZXWVUTRQPONLKJIHGEDCBA?>=<;987654210/.,+*)(&%$#"!     D JR[dk   ('4*34*33*33)23)22(22(11'11'01'00&00&//%//%./$..$-.#--#--",,",,!+8-7E9DE9CI>HJ?IJ>HI=GH""  nlkjihgedcba_^]\[ZXWVUTRQPONLKJIHGEDCBA?>=<;987654210/.,+*)(&%$#"!      0&/0&01'01'11(12(22)2?5?]T\^U]_U^_V_`W_aX`bYacZbjai~žĽü»}{zxvtr}~p{|nz{lxyjvwhtugsteq:0:  nlkjihgedcba_^]\[ZXWVUTRQPONLKJIHGEDCBA?>=<;987654210/.,+*)(&%$#"!    $#$$%$1%0B6AC7BD8CE9DE:DG;E[OZh\fi]gk^il`jmblocm|pzüžſĽ»}{ywusq}~o{|nyzkwxjuwhtufrsdpqbn:0: lkjihfedcb`_^]\ZYXWVUSRQPONMKJIHGFDCBA@>=<;:87654310/.-,+*('&%$#!      TFRp`mqaosdpufrwhtyjvzlx|mz~p|q}svxz{~üľžý~|v~p|}nz|myzkxyjvxhuvgsuertdqrboqano_mn^km]j:09 \[ZYXWVUTSRQPONMLLJIHGFEDCBA@?>=<<:9877543220/.-,,*)(''%$#""      / M>KhWel\hn^jp`lqbnsdpufrwhtyjv{lw|ny~p{r}tvxz|}oz}nz}ny|ny|my{mx{lxzlwzkwykvyjvyjvxiuxiudSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSadSa9.8 NMLKKJIHGFFECCBAA@>>=<<:9987655432100/.-,++*(('&&%##"!!     ? aP^aP^fUbjZfl\hm^jo`ln^ko_kp`mrbnscpteqvgsp`mqamrbnscosdptequfrn^kl\im]im]jm]jn^kn_ko_laP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^aP^8.7 @?>>=<<;:998776554322110/..-,,+**)(''&&%$##"!!     ? ^MZ^MZ^MZ^N[^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ^MZ8.7 2100//..--,,+**)))(''&&%%$$#""!!          _ "!\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX\JX8.7 ##"""!!                   1#/YFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFUYFU8.7                           /!-VDSUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCRUCR7.7     . ,TAPS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@OS@O7-6!!  ?.;R>NQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=LQ=L7-6!!  <,9OA.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>A.>6-6$$ ? D0@A,=@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<@,<7-6$$ ? B.?>*:=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*9=*97-6%% ? B-><(8;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(7;(77.6%% o@,=9&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&59&57.6&& @+;7$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37$37.6&& >)94"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"04"06.5& & ;(72 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .6.5'!' )&;'71-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-7.6'!' (&9%5/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+7.6("()&7$3.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*7/6("(,(5"1,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(7/6)#)2.3 /*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&7/6)#)2 .0-'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$7/6)$)2 /.*&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#706*%*4!0,)%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!707*%*? 4"1*'# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 707*%*CHK@FI>BF8379?5$2$!817,',W^bV]aTZ_NTYGLO<@C47:?o 5$2"827+'+W^bV]aU[`QW\JOS?CF59;?5%2827,(,W]bU\aT[_RX]KPT?DG59;?5%2                                                                                                               828-)-U[`TZ^SY]QV[JOT>BF47:?5&2                                                                                                               938-)-RY]QX\PVZNUXHMQ8=@:>A;@CBE>CF>CF>CF>CF>CF>BF>BE>BE=BE=BEB9>A9>A9>@9=@9=@8=@8<@87;>7;=69<48:o*.059=;@C9=@59<8:<XZ\O]_aacebdfcegbdf_ac[]_WYZ_SUW 4%2                                                                                                               938-)-PVZOUYNTXLRVFLN;@B=ADBGKDIMFKOGMPINRJPTLRVNSXNTXNTXNTXNTXNTXNTXMSWMSWMRWMRWLQVLQVLQUKQUKPTJPTJPSJOSIOSINRHNRHNQHMQGMQGMQGLPFLPFKOFKNEJMCHK@DG:>A /24>CFFLOBHKUVXY[\`bdgiknpssvxvy{vy{uxzrtvmoqegi]_aWY[RSU?&$5&2                                                                                                               949.*.NSWMRVLQUJOSDIL9=@CHLLQUNTXPUZQW\SZ^U\aW^cY`eY`eY`eY`eY`eY`eY`eX_dX_cX^cW^cV]bV]bV\aV\aV\`U[`U[`U[_TZ_TY^SY^SY]SX]RX\RW\QW\PW[PVZPVYOTXLRUGLO>CF 258EJNOTYJOSAFI9<>:<=9;EJNOTYQW[RY]T[_V]bX_dZaf\ch]di]di]di]di]di\ch\ch\bg[bg[bgZafZ`eY`eY`dY_dX_dX_cX^cW^bW]bV]aV\aU\`U[`U[`T[_TZ_TZ^SY]SY]PVZKPTAEH37:INSTZ^NTXCIL9<>;=>:<=8:;RTU/Y\]gikqtvy|~~~z~wy|qsvilnaceUWYNPRO)'3%0                                                                                                                948.+.INQHMPGLOEJM@DG69;DILMSWOUYQW[SY]U[_W]aY_d[af[bf[bf[bf[bf[bf[afZaeZ`dY`dY`dY_cX_cX_bW^bW]bW]aV]`V\`U\`U[_U[_T[^TZ^SZ]SY]SY]RX\RX\RX\RX\QWZKPTAEH47:JPTU[_PUYDIL9;==>@>?A:;<89:PRTZ\^hkmtvxz}~~~}||{~z}wz|svxmprcfhY[\OQSJLM/+)2%/ 959.+.GKNFJMEILCHJ>BD489AFIJPSLRUNTWOVYQX[SZ^U\`W^bW^bW^bW^bW^bW^bW^bV]aV]`U\`U\`U[_T[_T[_TZ^SZ^SY]RY]RX\RX\QX[QW[PW[PWZPVZOVYOUYNUXNTXNTXNTXMTWHNR>CF 268IORSZ^NTWBGK7:<>?ABCD@AB;<>9:;HJK?PRT]^`ikmsuxz|~|}}}|~|~{}{}z|z|~y{}xz}xz|wy|wy{uwzsuwmoqegj]^`RSUKLNEFH4'12%/ :59/,/DHKCGJCFIAEG@ADFGEGHCEF>@A:;<79:@BCOHJKQSU]_agjlpsuvy{x{}x{}x{}x{}x{}wz|wz|vy{vy{uxzuxztwysvxsvxruwruwqtvqtvortknpehj^`bTVXJLMDFG/5(31$. :690-0BFHAEG@DF>CD:=?035BD468>@AGHIJKLJLMIJKDEG@AB@ACBDEDEGKMNUVX^_afhilnpqsvtvxtvxtvxtvxtvxtvxsuxsuwrtvrtvqsuqsuprtoqtoqsnprnprnoqmoqlnplnpikmegh^`bVWYIJKABC7+50#- :6:1.1@DF?CD>BD=@B8<=/239=?AEGBGIDHKFJLGLNIMPJORLQSLQTLQTLQTLQTLQTLQSKPSKPSKORJORJORJNQINQINPIMPHMPHMOHLOGLOGLNGKNFKNFKMFJMEJLEJLEILDIKDIKDIKDIK@DF6;< -01BFIJOREJL;>A245>?@GHJKMNNPQOQROQROPROQRQSTTVXY[\_abdfghjlkmomoqoqsortortortortortoqsnqsmprmoqloqlnpknpkmojmojlnilnikmhkmhjlgjlgikfhjceg^`bVWYKMNBDE?@@9,7/#,                                                                                                               ;7;1.1@CE?CD>BD=@B7;BDGKMBEH8;=023>>@GHJLMOOPQQRTSTVTVXVXZXZ\[]_^`bacedfhfhjikmkmomoqmoqmoqmoqmoqmoqlnplnpkmokmojlnjlnikmikmhjlhjlgikgikghjfhiegiegidfhdfhbdf^_aVXZMOPDFF>?@/9.7.#,                                                                                                                :7:0.0@DF?CE>BD=@B8<=/23479:>?;?A=AB>BD@CEAEGCGIDHJDHJDHJDHJDHJDHJDHJCGICGICGIBFHBFHBFHBEGAEGAEGAEG@DF@DF@DF?CE?CE?CD?BD>BD>BD>BC=AC=AC=AB=AB=AB9=>145 (+,;?ACGI>BD589023?ABJLMNPQQRTSUVVWYXZ[[\^]_`_acbdedfhgijikmlnpnprprtprtprtprtprtprtprtoqsnprnprmoqmoqlnplnpkmokmojlnjlnikmikmhjlhjkgikgijfhjegiaceZ\^QRTFGHBCE/ <1:-#+                                                                                                                 :7:1/1CGIBFHAEG@CE;>@1454799=?;?@<@B>AC?CEADFBFHCGIDHJDHJDHJDHJDHJCGICGICGICGIBFHBFHBEGAEGAEGAEGADF@DF@DF@CE?CE?CD?BD>BD>BD>BC>AC=AC=AB=AB=AB<@A9<=145 (+,;?@BFH>AC479134CDFNOQRTUUWXXY[Z\]]^`_abbdedfhgikjkmlnpoprqsutvxvxzvxzvxzvxzvxzvxzuwyuwytvxtvxsuwsuwrtvqsuqsuprtprtoqsoqsnprnpqmoqmoplnplmokmojlnfhj`bcVXYLMNEEG/? =2;,"*                                                      ;8;202MPRLOQKNPILNCFH8;<8;<<@A>AC?CEADFBFHDGIEIKGKMGKMGKMGKMGKMGKMFJLFJLFJLFJKEIKEIKEIJDHJDHJDHICGICGICGHBFHBFHBEGAEGAEGAEFADF@DF@DE@CE@CE@CE?CD;?@367 *-.>BCEIKADF7:;467HIJSUVXZ[[\^^_a`bcceffgihjlkmonprqstsuwvxzy{}|~~~~~~~}}|~{}{}z|~z|}y{}y{|xz|wy{wy{vxzvxyuwyuwxtvxsuwsuwrtvrtuqsumoqfhj[]^KLNFGH? >4=+"*                                                      ;9;202fikehicfhadfY\^KMOHJLMPQORSQSUSVWUXYWY[Y[]Z]_[^`[^`[^`[^`[^`Z]_Z]_Y\^Y\^Y[]X[]XZ\WZ\WZ\VY[VY[VXZUXZUXZUXYTWYTVXSVXSVWSUWRUWRTVQTVQTVQTVQSULOPACE689PRTY\^SUWFHJ<>?NOPZ\]_abbdeeghhjkkmnnpqqrttvwwyzz|~}~~}}~|~|}{}~z|~z{}uwylmo\]^MNP??5>*")                                                      <9<202'&)noqvwymop\]_uxySTUUUWbcehijklnnoqqsttvxwy{{|~~|}lno[\]RST/?A6?*"(                                                   IBG                                                          <:<313+),wxz|~ ijl]^_\]^klmqrttvwxy{{}~wy{efgXY[??A7?(!&              HBF       <:<323+),yz|"""lmoabcbdertuyz{}~{|}fgi\]^o A8@' &              ¿IAF       <:<323+*,|}~'''*********************111qrsefgghixyy~uvwdefo#"C:A' %               ¿IAF        =;=323,+-~,,,:::::::::::::::::::::VVVvwxjllnpppqr%$C;B&%               ¿IAF        =;=434-,.111IIIIIIIIIIIIIIIIIIIII{{{|}~qrswxy(!&D<=545/./677YYYYYYYYYYYYYYYYYYYYYwxx}~~*#)D=C%$                ÿK@G        ><>5450/1<<=>656102ABBwwwwwwwwwwwwwwwwwwwww?5/4E>D$#                ÿL@G         ?>?656223FFF}}}{||O}}~Oߢ716F?E$#                 ĿM@H          ?>?767445KKKxxxttt?Ϯo:38F?E#"                  ĿM?H          @?@767666NNNttt_o<5;G@E#"                 ĿO@I          @?@878878***XXXXXXXXXXXXXXXXXXXXXPPP}~tuuqqq|||lll_ߑ?>7GAE!              ſP@I           @@@888999adfUY]W[^Y]a[`c]be_dgafjchlchlchlchlchlchlcgkbgkafjafiafi`ei`eh_dg_dg_cg^cf^bf]bf]ae\ae\`d[`d[_c[_cZ_bZ^bY^aY]aX\`W[^UX\PTWILO@CFTY\Y]aTX[KORUWXgggスϓ_ICHHAF"!          ſR@K          AAA888:::QSV7CF@DHAEIAEIAEIAEIAEIAEI@EI@EH@DH@DH@DH?CG?CG>CF>CF>BE=BE=BE=AE=AD=ADA:>A:>@9=@7;>59;/36;@C=BE:?B6;=QRSggg/oϯߙ/  LEKHBG!!          ƿS@K         AAA999:::?OO MGLHBF!          + T@L         BBB999999? OINHCG!         ,!        BBB:::233z{|? QKPHBG!         X@Npz       CCC:::+,,z{}hij?SMRICG! !        !"!        DDD;;;$%&~qtv`ceUWY?UOTICH! !        !#w`n%$$#"       DDD<<<mrujordilZ^aNRTGJLWQUICH! !      !"$O0C''&%%$#!      EEE<<<JOSHMPDIL=AD7;= YSXJDH" "       !#$3&7(*))(('&%#"       EEE<<< :>A9=@7;>37:o?""[UYJDH"!"        "$%&kP`8)++++**)(&%$"       FFF===?$ $\V[JEI"!"     "$%').....-,+*)'%$"      FFF>>>?&"&^X\JDI"!"       "$&()+{`q=,0110//.-+*(&$"       GGG>>>?)$)`Y^KEJ#!#       "$&(*,.I :M <3 3 3 220/.,*(&$"       HGH?>??+%+a[`LEJ$"$     !#&(*,.01B05"5!4 3 10.,*(&$!     IHI@?@?-',c]bLEK$"$       #&(*,/024 5!P >6"5!4 21/,*(&#     IHIA@A?0*.d^cLFK$#$      "%'),.13 4!6"7#8#wPiP >6"4!3 1/,*'%"      JIJA@A?4-2e_dMFK"!"      !#&)+.03 5!7"8#:%;%<&=&`xP >5!3 1.,)'$!     KJKA@A?=6'?(?(@)@)`yp5!3 0.+(&"     KJKBABO>8=ibhLFK     !$'),025!7#9$<&='?(@)A*B*C*C+C*B*qA_Ͽ5!20-*'$!     KJKCBCA:?jciMGL     "&(+/14!7"9$<&>'@(A*C+D+E,E,F,E,E,D+C+}QlP >4!1/+(&"     LKLCBCB'@)B*D+E,G-G.H.H.H.G.G-E,D+N7p6"3 1-*'$!    MLMDCDD>ClfkMGL     "&(,/25!8#;%>'@)C*E,F-H.I/J/J0K0J0J/I/H.G-E,8#5"2/,(&"     MLMDCDF?DmgkNGM      #'*-14!7#:%='@)C*E,G-I/J0L1M1M2M2M2M1L1J0T'A*D,G.J/L1N2P3Q4S5S5~BhP9B*>(;%7#4!1-*&#     ONOFEF  KDJpkoOHN     $'+/26"9$='@)D+G-I/L1O3Q4h"NaɰJ/G-D+A)='9$6"2/+($!    ONOFEF  MFKqlpOHM     !%),04!7#;&?(B*F-I/L1Z?aʰaR4O3L1I/F-C*?(<&7#4!1-)&"    POPFEF  NHMrmqOIN       #&*.25"9$='A)D,H.V= adFY9V8T6R4O2K0H.E,A)='9$6"2.*'#     POPGFG   PJOsnqOIO        $'+03 7#;%?(C*F-k1V}2b_>_=^=]<[;Y:W8T6Q4N2J0G-C+?(;&7#3 0+($    QPQHGH   ZTXtosPIO     !%)-15!9$='A)E,_!Hs"U`>a?b@c@b@a?`>_=\]\'B*F-J0ҿ˰hIa?eAgCiDkElFlFlFkEiDhCeBb?_=[;W8S5O3K0G-B*>(:%5"1-)%!    SRSIHI! ! b\axsvQKP     "&*.26":%?(D+H.L1pĠR~jElGnHoHpIoHnHlGjEhCeAa?][;W8S5N2J/E,A)<&8#3 /+'#    TSTJIJ" "e_dyuwQKP      #'+04!8$='B*G-K0P3T6Y9a‘b3kmGjEfBb?^=Y:T6P4K0G-B*='9$4!0,($     UTUKJK" "gafzvxQKP      $(,15":%>(C+H.L1Q4V7[;_>dAR~ȠR|iJ[;V8R5M1H.C+>(:%5"1,)$     UTUKJK"!"hbg{vyRLQ    !%)-26";%?(D,I/N2S5W9]eBjEoHtLwN{QSTUVUTS|Q#ebɠi1TB*='8$4 /+&"    WVWMLM#!#lfj}y|SMR     #'+04!9$>'C+H.M1R5W8](9$4!0+'#    WVWMLM#!#mhk~z}SMR     #'+05!9%>(D+I/N2S6Y9^=c@iDnHsKxN}RTWYZZZYWU}RxOsLoHiDdA^=qp?(:%5"1,(#    XWXNMN#"#nim|TNR      $(,16":%?(E,J/O3T6Z:_>eBjEpIuMzPSVY[\\\[YVT{PuMqIkEeB_>Z:@);%6"1,($     XWXNMN#"#ojn|TNS      $(,26";&@)E,J0P3U7[;`>fBlFrJwN}RUX[]^_^][XU}RwNrJlGgC~2c`{@);&6#2-)$     YXYONO$"$pko}TOS      %)-2 7#<&A)F-K0Q4V8\;b?hCnGsKyOSVZ\_`a`_\ZVS#eRR:A*<&7#2 .)%!    YXYONO$"$qlp~UOT     !%).2 7#<&A*G-L1R4W8]'C+H.M2S6Y9_=eAtQRÑRoN_>Y:T6N2H/C+>(9$4!/+&"   \Z\QOQ%#%tosVPU    "&+/4!9$>(C+H/N2T6cFaޱȁb3vSyOrKlGfB`>Z:T6N3I/D+>(9$4"0+'"   \Z\RPR&#&uptWQV    "'+04!9$>(D+I/N3qҒ΂D%~khd`\XTyPsKmGfC`>Z:T6O3I/D,>(9%5"0+'"    ][]RPR&#&uptWQV    "'+05"9%>(D,I/đR#m]aeilnmiea]YTzPtLmGgCa?[;U7O3I/D,?(9%5"0+'"    ^\^SQS&$&uptXQW     "'+05"9%>(D,`|#^tLzPTY]bfjnpnjfb]YT{PtLnHgCa?[;U7O3J/D,?(:%5"0,'"    ^\^SQS&$&vquYRX     "'+05"9%?(D,ůkKgCnHtLzPTY]bfjoqokfb^YU{QtLnHgCa?[;U7O3J0D,?(:%5"0,'#    ^\^TRT&$&vrvYRX     "'+05"9%?(D,ѿqa?gCnHtLzPTY]bfkoqokfb^YU{QtLnHgCa?[;U7O3J0D,?(:%5"0,'#    _]_TRT'$'vrvZSY     "'+05"9%?(D,pĠz#[mGtLzPTY]bfjnpnjfb^YU{PtLnHgCa?[;U7O3J/D,?(:%5"0,'#    _^_USU'$'wrvZSY    "'+05"9%>(D,T(D+I/d!L͑bDhklkhea\XTyPsKmGfC`>[;U7O3I/D,?(9%5"0+'"    `^`VTV'%'wrv[TZ    "&+/4!9$>(C+I/N2T6aՒ͂D#s[WSyOrKlGfB`>Z:T6N3I/D+>(9$4"0+'"    `_`VTV'%'wrv[UZ    "&*/4!8$>'C+H.M2S6Y:_=x#YqҰΠq3lkFfB_>Y:T6N2I/C+>(9$4!/+'"   a`aVTV(%(vqu[U[    !&*/4!8$='B+H.M2S5X9^=dAjEpIvM3rRÁΰaY9S6M2H.C+>'8$4!/*&"  b`bWUW(%(vpu\V[    !&*.3!8$='B*G.L1R5W9]=c@iDoIuM{PTX[_a4Dʂ֡qM2H.B+='8$3!/*&!  babWUW(&(vpu]V\    !%).2 7#<&A*G-L1Q4W8\fBkFpJvM{QTWY[\]\[YWT{QvMqJkFfB`?eGA);&7#2 -)%!  dbdYWY)&)vot_X^!!    !$)-1 6";&@)E,J0O3T6Y:_=dAjEoHtLyO}RUWYZZZYWU~RyOtLoIjEeA_>dG@);&6#2 -)%!   eceZWZ*'*unt`Y_!!     $(,15":%?(D,I/N2S6X9]=c@hDmGrKvN{QSUWXYXWUS{QwNrKmGhDw#X[!F?):%5"1,)$!  eceZXZ*'*tms`Y_""     #(,04!9%>(C+H.M2R5W8\(9%5"0,($   fdf[X[*'*tmraZ_""    #'+/4!8$='B*G.K1P4U7Z;_>dAiEnHrKvMyP|Q~STTT#iRQqG.B*='8$4!/+'#    fdf[X[*'*slraZ`##     "&*.3 7#<&A)E-J0O3T6Y:^=b@gCkFpIsKvNZRaO3K0F-A*<'7$3!/*'#    geg[Y[*'*slqaZ`##     "%*-2 6#;&?)D,I/M2R5W8[;`?eAiEBuΰap"TW9S5N2I/E,@);&7#2 .*&"    geg\Y\*'*rkpa[a##     !%)-15":%>(C+H.L1Q4U7Z:hIb}#]gCc@_=Z:U7Q4L2H.C+?(:%6"1 -)%!    hfh\Z\+(+qjpc\b# #      $(,04!9$='B*F-K0O3S6Qwʠb3mrKqJnHkFhDdAa?\\c@eBgCiDjEjEjEiDgCeBc@`?]b@dAfBfCgCfCfBdAc@`?^=Z;W8T6P4L1H/D,@)<'8$4!0,(%!    jhj^\^,), mflf_e%!%      #'+.2 6#:%>(B+F-Qpr"U`>a?c@cAdAdAc@a?`>^=[;X9U7R5N2J0G-C+?(:&7#3 /+'#     kik_\_,), e]cg_e-)-     "&*-15"9$<'@)D,H.qt"V`?`?`?`>_=]<[;X9U7S5O3L1H/E,A*='9%5"1 -*&#    kik_]_,), \TZg`f525     !%),03!7#;&?(B+F-J0QqQy]<[;Z:X9V7S6P4M2J0F-C+?);&7$4!0,)%"   kik_]_,), ZRYh`g626     !$'+/2 6"9%='A*D,H.K0Y?`˰aU7S6Q4N3K0H.E,A*=(:%6#2 /+($!    ljl`]`,),ZQYiah626      #'*.15"8$;&?)C+F-I/L1N3Q4h"Oqe!LL1I/F-C+?)<'8$5"1 .*'#    mjma^a-)-  YPXjah737     "%),03!6#:%=(@*D,G.I0L1N3P4R5S6_CapG.D,A*>(:%7#3!0,)%"   nkna^a.*.  XOVkbi848     !$'+.1 5"8$;&>(B*D,G.J0L1N2O3Q4R5R5R6R5r1[B+?(;&8$5"2 .+($!    nknb_b.*.  WNUkcj848       #&)-03!6#9%<'?)B+E,G.I/K0M2N3O3P3P4P3O3N3M2`~W!D='9%6#3!0-*&#    nlnb_b.*.  VMTkcj848     "%(+.1 5"7$:%=(@)C+E,G.I/J0K1L1M2M2M2L1K1J0I/S;:&8$5"2 .+(%"    oloc`c.*.  TKSlck848     !#&*-03 6#8$;&>(@)B+E,F-H.I/J0J0J0J0J0I/H/F-E,į9$6#3!0-*'$!    pmpc`c.*.  SJRmdl959      "%(+.14!6#9%;&>(@)B+D,E,F-G.H.H/H.G.F-E-P9j@[7#4!1.+(%"    pmpc`c.*.oRIQ~mel:5:      !#&),/2 4"7$9%;&>(?)A*B+D,D,E,E-E,E,D,`{Ϳ7$5"2 /,*'$!    pmpc`c/+/?QHP~mel:6:      "%(+-02 5"7$9%;&='?(@)A*B*B+C+N8pD15"2 0-+(%"     qnqdad/+/?KBJ}nfm?:>      !#&)+.13!5"7$9%:&<'=(>(?)L67$5"3!1.,)&$!    qnqdad/+/?<3;}ognLHL      "$'*,/13!5"7#8$:%;&H4E27#5"3!1/,*'%"     rorebe/+/?;19}ognMHM     !#%(*-/13!5"6#7$j@[E27$6#5"3!1/-*(&#!    rorebe/+/?908|ognMIM      "$&)+-/12 4!h@Y`v8$7$6#5"4!2 1/-+)&$"    spsfcf/+/?7.6{phoNIN       "$')+-/02 6#6#6#5"4!3!2 1/-+)'$"     spsfcf0,0?5-4{phoNJN      !#%')+-.pPdY0J3!3!3!3!2 2 10.-+)'%#!    tqtfcf0,0?3+3{qipOKO      !#%')*,111 1110.-,+)'%#!    tqtfcf0,0?3*2zriqPKP       "$&()*p˿//0///.-,*)(&$"     urugdg1,11(0zsjrQLQ       "$%')D 8|`r----,++*)'%$"!     uruhdh1,1/&.xsjrQLQ         !"$%&(ɿ+++**)('%$"!     vsvheh1,1AEI?DG37:xtksRMR       !"#%&4'ɿ6)))('&%#"!     vsviei1,1MRVJPTGLP?CG7;=37:xvltTOT        !"$%%O1DP1E'&%%$"!      vsviei2-2U[_RY]OTYGMQ?CF6:=379v~vltTOT       "#$$2&N1C$$#"!    wtwiei2-2W^bV\aSY^MSWFJN;@B37:? v~vluUOT        !"##$v`nȿ#"!     wtwifi2-2W^bV]aU[`QW\JOS?CF59;? ~u}wmuVPU          !!""YAP=!2        xuxjfj2-2W^bV\aU[`RX]KQT?DG59;? ~t|wnvVPV            ǿW@O       xuxjgj2-2U\`TZ^SY]QW[JPT>CF48:?}t|xnvXRX         ǿVAO        yvyjgj2-2SY]RX\QW[OUYIMR=AE48:o7;>?8<@?:>A?;@C?CF??DG?AEI?AFJ?AFJ?AFJ?AFJ?AFJ?AEI?AEI?AEH?@EH?@EH??DH??CG?>CG?>CF?>CF?>CF?>CE?>BE?=BE?=AE?A?:>A?9=@?7;>?59;?????????? ?+.1?7;??=BE?;?B?6;=?8:CF9=@ .14=BEEJMAFI;@B8;=;=>oZ\^_adfgjlnqssvyvy|vz|uy{ruwmprehj^acX[]TVW  g^eypwZTZ+%+                                   TBN                                                zwzkhk3.3**/NTXMSVLRUKPSEJM:>@BGKJPTLRVNTXPVZRX\SZ_U\aW^cX^cX^cX^cX^cX^cW^cW]bW]aV\aV\aU[`U[`TZ_TZ_TZ^SY^SY^SY]RY]RX\QX\QW[QW[PVZPVZOUZOUYOUXNTWMRVJPSFJN>BE 157DIMMSWHNR@EH9<>:<=:;<XZ\?^`bgjlqtvx{}}~{~vxzortgik^`bXZ\SUW  f]ezpx[T[,%,                                   TBN                                                zwzkhk3.3))-LQUKPSJORHMPCGJ8<>EJNNTXPV[RX]TZ_V]aX_cZaf\ch\ch\ch\ch\ch\ch\ch[bg[bg[afZafY`eY`eY_dX_dX_cX^cW^cW^bW]bV\aU\aU\`U[`T[_TZ_TZ_SZ^SY^SY]RX\PUYJOS@EH37:HNRRX]MSWCHK9<>;<>:;<89;QSTVXZbdgnpsvy|}}y|twynpsfhj\^`SUWMNP  f\e{qy]V]-'-                                 SBN                                              {x{lhl3.3((,JORINQHMOFKN@EH6:?=>?9:;NOQOVXZdghqsuy{}~~}}|~z}vy{qtvkmo`bdUVXMNPIJK  d[c{rz^W^.(.                                 SCN                                             {x{lil3.3'&+GLOFKNEJMDHK>CE48:BFJKPTLRVNTXPVZRX\TZ^V\aX^cX^cX^cX^cX^cX^cX^cW]bW]aV\aV\aV[`U[`U[_TZ_TZ_TY^SY^SX]RX]RX\RW\QW\QW[QV[PVZPUZOUYOTYOTYOTYNTXINR?CG 369JNRTZ^NTXCGK7:<=?@ABC>?@9;<89:EGHLNPXZ\egipsux{}|~}}}||~{~{}z}z|y{~x{~xz}wz|wy{uwzqtvkmobdfYZ\NPQHIJ_cZb|rz`X_/).                                RCN                                             |y|lil3.3%%)EIKDHKCGJAEH<@B268?CFGLPINRKPTMRVOTXPVZRX\TZ^TZ^TZ^TZ^TZ^TZ^TZ^SY]SY]RX\RX\RX[QW[QW[QVZPVZPVYOUYOUXOTXNTXNTWNSWMSWMRVMRVLRULQUKQTKQTKQTKPTFKN@ADFGEFHCDE>?@<>??CDFHJLOQS[]_fikprtvy{y{~y|~y|~y|~y|~x{}x{}wz|wy{vy{vxzuxztwytwysvxsuxruwqtvortkmoegi]^`STVJLMEFHcYa}s{aY`5.4RDN|y|mim4.4%#(BGHAEG@EF?CE:=?135<@CDILFKNGMPINRKPTLRUNTXPVYPVZPVZPVZPVZPVZPVYOUYOUYNTXNTXNTWMSWMSVMSVLRVLRULQUKQUKQTKPTJPSJPSJORIORINRINQHNQHMQHMQHMQHMPCHK:>@ /24DJMNTWINQ=BE468?@AGHIJKMKLNIKLEFGACDACDCEFFHILMOUWX^`bfhjmoqrtvtwyuwyuwyuwyuwyuwytvxtvxsuwruwrtvqtvqsuprtprtoqsnqsnprnprmoqlopilnegi^`bVXYJKMBCEOLBK}r|c[bB;ARDN}y}mim4.4$"&@DF?CE>BD=@B8<=/239=?AEHBGJDIKFJMGLOINQJPSLQTLRULRULRULRULRULQTKQTKQTKPSJPSJPSJORIORINQINQHNQHMPHMPGMPGLOGLOFKNFKNFKMEJMEJMEJLDILDILDILDIK@EG6;= -02BFIJPSEJM;?A246>?@GIJKMNNPQOPRNPQMOPNOQPQRSUVXZ[^`bcfghjlkmonprprtprtprtprtprtprtortoqsnprnprmoqmoqlnplnpkmokmojlnjlnikmikmhjlhjkfhjceg]_aTVWIJLABCJ@I}s|d\cBBD=@B7;CEGLNBFI8;>024=>@GHJLMNOPQQRTRTUSUWUWXWY[Z\]]_aacddfgfhjikmkmomoqmoqmoqmoqmoqmoqlnplnpkmokmojlnjlnikmikmhjlhjlgikgikghjfhiegiegidfhdfhbce\]_SUWJLMACC=>?I?H~s}e\dCBD=@B8<=/23489:>@;?A=AC>BD@DFAEGCGIDHJDIKDIKDIKDIKDIKDHJCHJCHJCHJBGIBGIBGIBFHAFHAFHAEG@EG@EG@DF?DF?DF?CE?CE>CE>CD>BD=BD=AC=AC=AC=AB9=>146 (+,;@ACGI>BD58:022?AAIKLNOPPRSSTVUWXXY[Z\]\^`_abacedfgfhjhjlkmonproqsprtprtprtprtprtoqsoqsnprmoqmoqlnplnplmokmojlnjlnikmikmhjlhjlhikghjfhjfhideg_abXYZNOPCDE@BCG>G~s}g^fD=D                                                 QFO                                                          ~{~njn4/4%#'BFHAEG@DF?BD:=?1354799=?;?@<@B>AC?CEADFBFHCGIDHJDHJDHJDHJDHJCGICGICGICGIBFHBFHBEGAEGAEGAEGADF@DF@DF@CE?CE?CD?BD>BD>BD>BC>AC=AC=AB=AB=AB<@A9<=145 (+,;?@BFH>AC479133CDEMOPRSUTVWWXZY[\\^_^`bacdcegfhjijlkmonpqprtsuwuwyuwyuwyuwyuwyuwytvxtvxsuwsuwrtvrtvqsuprtprtoqsoqsnprnprmoqmoplnplnokmoklnjlnhjldfh]_`STVIJLEGGF=Et}i_hF>E                                                 RGP                                                          {oko5/5)',JNPIMOHLNGJLAEF79;7:;;?@=@B>BC@CEAEGBFHDHJEIKFJLFJLFJLFJLFJLEIKEIKEIKEIJDHJDHJCGICGICGICFHBFHBFHBFGAEGAEGADF@DF@DF@CE@CE?CE?CD?BD?BD?BD>BC:>?256 *,-=@BDHJ@CE69:356GHIRTUWXZZ[]\^__abbceefhgikjlmmnpoqsrtvuwyxz{z|~|~}}}}|~|~{}z|~z|~y{}y{}xz|xz|wy{vxzvxzuwyuwytvxtvxsuwrtvrtvqsuqsuprtoqskmodegYZ\KLMFGHOD;Cu}jaiKCJ                                                 RHP                                                          |oko5/5427adf_bd^ac\_aUXYGIKDFHIKMJMOLOQNQSPSURUWSVXUXZUY[UY[UY[UY[UY[UXZTXZTWYTWYSWYSVXRUWRUWRUWQUVQTVQTUPSUPSUPSUORTORTNQSNQSNQSMPRMPRMPQMPQMPQLOQHJL=@A 357KNPTWYNQSBDF;<=MNOYZ\^_aabddegghjjkmlnppqsrtvuwyxz|{}~~}}|~|}{}z|~z|~y{}yz|xz|tuwklnZ\]MNO?+"+u~kbjXQW                                                    |oko5/5KIM}iklnpqxz|{}~~wxzfgiUWX|moqOQQSUV`bcfhiiklmnppqssuvvxyy{}|~z{}jlmYZ[RST?*!*u~nclYRX     }oko505URWwxz|} ijk\]^[\]ikloqrstvvxyz{}}vxycefXYZ??( (u~oemZSY}olo505VSXxz{!!"lmn`abacdqrtwyz{}~{}~ghi\]^?''u~pfoZTZ~olo505XUY{|}&&&(((((((((((((((((((((,,,pqrdeffghvxx}wxzefg/&&u~rhq[T[~plp505YW[}+++777777777777777777777PPPuvwijkmno~pqqt~sir]U\((pmp505\Y]001GGGGGGGGGGGGGGGGGGGGGvvv{|}pqqvww{||oop  u~tjt_W_-$-pmp505^\`566VVVVVVVVVVVVVVVVVVVVV vww}}}xyy  uuku`Y`.%.                                                                                                               qmq505a^b;<4>&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%rnr707khlJJJ {{{yzzﲲeZc|pzg^fC9B'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&rnr707okoNNNpqqψ?cYb}r|h_gE;D('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('rnr717rnr+++yyyrrrwwxrrrlll/ϷobXas~i`hFCG@EHAFIAFIAFIAFIAFIAFIAEI@EH@EH@EH@EH?DG?CG?CG>CF>CF>BF>BE=AE=AE=AEA:>A9=@7;>59<036;@C=BE;?B7;>MOPggg?ﺺ_E;EvndmYOX/#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#//#/sos717xtx?ggg?OD;DvpfoZPY1%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%0sos717wsw?D;Cwrhp\R[3'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'23'2sos717khl}}~?O6-5xsirg]e5(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(35(3tpt717]Z_}~jlm??&&yuktkbj7+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+67+6tpt717OMRtwycfgWY[??&&zxmwmdl9,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,8tpt717?=Ctx|puxkor`dgTXZLOQ?&&zyoxnem;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:;.:tpt717,+1PUYMRVJNRAEI;?B{{qzpgoC7B=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0<=0?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>?2>tpt818 |t~sjrMALB5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@B5@upu929  }vuktOBND6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6CD6Cuqu929  vwwmvWJUF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8DF8Dvqv929  i^hyynw^R\H:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:FH:Fvqv929  i_h{{qyaU_K=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=IK=Ivqv929  i`h||r{bVaM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?KM?Kvqv929  ZPY~~t}lakOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNOBNvrv929   JAIv~peoQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPQDPvrv929   JAJwrgqTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRTFRwrw929   KBJyuisWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUWIUwrw929  O 2)2|v~XLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWXLWwrw929  ? *!*~x[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZ[OZwrw929  ? +"*z]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\]Q\wrw929  ? ""|eXcaT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_aT_wrw929  k`jbWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWawrw929  ncmfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdfZdwrw929  rgrh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hh\hxrx:2:  }t|zpzk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jk_jxrx:2:  ulu}s|nbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmnbmxrx:2:  wnvvqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpqfpxrx:2:  e]e~tistististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististististisxrx:2:   TKSvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuvkuxsx:2:   ULUyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyyoyxsx:2:   LDL|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{|s{xsx:2:  ? 0'0v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~v~xsx:2:  ? 1(1}zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzxsx:2:  ?  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}xsx:2:   E6>>6>>6>>6>>6>>6>WPWuouuouuouuouuouuouuouxsx:2:    C;CD<:86421.-+)'%#!   KWet )(* **)*))))()(('('(''&'&&&&%&%%$%$%$$#$#  mVURQOMKIGECB@><:86421.-+)'%#!  ?  #"#"##$#$#?3>A4?B5@B6AC7BD8CE9CSGReXcfZdg[eh\fi]hj_il`jmakv}|zxwutr}~p||oz{myzkwxjuvhtufrsdqrcopano_l7-7  UTRPNMJIGECA?=;985420.-*)&%#!   &%hXejYgl[hm]jo_lq`mrbotdpufrwgtxiuzkw{my}ozp|r}tvwy{|~uvwxyyxwuts~r}}nzvfruertdqsdprcorbnqanp`mo_lo^kn]jm\il\ik[hkZgjYfiXfhWehVd7,6BA?>=;:8754310.-+*('&$#!    I:G`O\aP]bQ^cR_dS`dTadS`cR_cR_cS`dS`dT`dTaeTa_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[_N[5,4  -,*)((&&%$#"!       F6CZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHVZHV5+4              B1?TAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAP5+4   OB268(&# 5.5..3SY^GLP6:<)'5/5  ./3U\`MSW9=@+(                                                       605 ,-1RX\KPU7:=7;=?9=A?<@D??DG?@EH?@EH??DH??DG??DG?>CF?=BE?=BE?=AD?<@D?;@C?;?B?:?B?:>A?9=@?8A?9=@?9;=\^`Odfhgik^`boY[]/3$0                                                        616 **.MSVGLO8<>FKOIOSMSWPW[RX]RX]RX\QW\PV[OUZOTYNTXMTWMRVKRVKQUJPTJOSINQDIL "EJNCHL;=?=??ehipsuz}|ruwgjl^ab_4&1                                                        626 ''+INPCGJ7;>NTXRX\V]`Zae[bg[bg[bgZafZ`eX_dX_cW^bV]aV\`U[_TZ^SY^RY]RX\MSV #$OUYLRU=?A>@A;<=VXZ/dgivy{~|x{~oqs`bdTVXO7)4 726 %%(DHK?BE479INRLRVPVZTZ^U[_U[_U[_TZ^SZ]SY\RX\QW[PVZOUYOUXNTWMSWMRVLRVJOS!#MSWJOS=?AFHJDEF=?@?HJKQSUbdftvxz|z}z|y{}wz|vy{uxztvysuwnpscdfSUWNPQ7*5 737 ""%?CE:>?034BGIFJMINQLQTNSVNSVMRUMRULQTKPSKORJOQINQIMPHMOGLOGKNFJMFJMCHJHMPDIL;=>JLMNPQLMOLNOTVX`bdjlnprtqsuqsuqsuprtnqsmprloqknojlnjlmhjlacePRS@BBO8,6                                                        847 !"$?BD:=?.12AC:;BD<@AAEG=AC?@ATUWZ[]_abdfhjlmoqstvxz|~{}{}{}y{}xz|wy{vxzuwytvxsuwrtuprtoqskmo\^_OPQ_? 9/7                         GBG  969 CBEvxz[]^moqrtvwz||~~~}|~{}y|~x{}wz|vy{uxztvxsuwrtvqtvnpr/00())wy{prtQSTbdeijloqruwy|}efhWXY?907            979 SRUuwxFGH889defstu~yz|abc/?907         ¿¿    989 VVW{}~SST444444444====>>opqvxx?917          ÿ¿   :9: ZZ\abbSSSSSSSSSlllOPP}?827         ÿÿ    ;:; ``aqrrqqqqqqqqq]]]$ #928       ÿÿ    <;< ffg}}}YZZzzzstt?_O'"&827        ĿĿ     =<= mmmdeeGGGstt/*&)837       ſĿ     === qqrmqtrvyw||~~}|{zy}x|w{~vz}ty|sx{rwzquxosvgln,./')*nrufjmefgkkk/.)-948     ſ    >>> sss<@D?CGBGJDJMEKNEKNEJNDIMDIMCHLCGKBGKAFJAFI@EH?DH?DG>CF>BE;?B"$&!?DG   ??? ijj615848    pz= 1   @@@ NOPcef<7;958    "ɿ4&%$!  AAA -02V\_IMPDFI/FAE:69    #A 4++*(%"   BBB :>B?6:=JEI;7:    $'_@SpPc0/.,*&#  DCD OHM<7;   $(,=,p5!3 1/+'"  EDERLQ<8<  "',14!\0LB03 /*&   GFGVOT=8<    &+05!9$<&>'`yp3 /)$  GFGYRX>9=  #)/4!9$>'A)C+D,D+rA`3 -'!  IHI\V[>:>    &,3 8#>'B*F-H.I/I/H.E,Ϳ6"0*$ JIJ^X]?:>   ")06"=&B*G.K0N2O3O3n1XƯ:%4!-'   KJK a[_?;?  %,3 :%A)G-L1Q4QtE,?(7#1)#  LKL  d^b@'E,l1Wqj"PP3I/B*;%4 ,% MLM  lfj<7;   "*2:$A*Qo̰RzkKa?^=Z:U6N2G-?(7#/'  NMN tos837  %-5!='F-q"Ta?fBhCgCeA`>Z:S5K0C+:%2 *"  ONO vqu848  '/7#@)I/aqOlFnHmGkEeB_=W8O3F-='4!,$ POP ytw848  !)1:%C+L1u2\b3kkEcA[;R5I/@)7#.& QPQ {vy958  "*3 <&F-O3Y9b@3h‘ϰqj"PL1B*9$0'  RQR ~y|959   #,5!>(H.R5\;fBpIxN~SUBq̠ǯP9;%2)! SRS {~:69   $-6"@)J0U7_>jEtL}RWYYUzPqJ3f ='3 *" TST ~:6:  &.8#A*L1W8b@nGxOU[]]YSuLjEBnп>(4!+# UTU ;7:  &/9$C+N2Y9eApI|QX_bkBq̠Qp?)5",#  VUV <8;  '0:%E,O3[;fCBxqҠqaDK1A)7#-$ XVX=8<   (1;&F,f"MܡςC#o}RpIdAX9M1B*8#.% YWY>9=   (2 ;&\!GǠb#k^gnld\~SrJeBY9M2B+8$.% ZXZ>9>   )2 ;&sAaRziEvMV_hpme\TrJeBY:M2C+8$.% [Y[?:>   (2 ;&\!G3oV^gnld[~SrJeBY9M2B+8$.% \Z\@;?   (1;&F,{AfӒrD$vZ}RpIdAX9L1B*8#.% \[\ @<@  (1:%E,O3[;3fqΠR{W8K1A)7#-% ]\] A=A  '09%C+N2Y:eApI|QX^$uCŁРl1V@)6"-$  ^]^ B=B  &/8$B+M1W9b@mHxOU[]]YStLsQaů?(5",#  _^_ D>C  &.7#A*K0U7`>jEtL}RWYYUzPqJgCq='4!+#  a_a E?D  %-6"?)I/S6]W9O3G.>(5"-% dbd HCG  &.6">(F-gHb@fBhDgCeB`>Z:S6K1C+;&3!+$ ece |MHL  $,3!;&C+t"Wb?a?_>[;U7O3H.@)8$1)"  fdf  unsZTY  ")08$?)F-`~QxU7P4K0D,<'5".'   geg  tms[U[  !'.5"<&B+I/N2g"NqpG.@*9%3!,%  ifi  skr]W\   $+2 8$>(D,I/M2O3Q4[A`<'6#0)" jgj  qjp^W]   "(.5":%@)D,H.J0K1K0I/G.ο8$2 ,&  khk  pho_X^  %+16#;&?)C+E,F-F-\!Gį4"/)#  lilofm`Y_   "(-2 7#:&>(@)Y!E5"1+&! mjmmela[a    $).2 6#E2P ?5"1-(#  mjmkcjb\a   !&+.2 O >5"3!1-)$   nkniahc]c   #'*a@Up2 2 1/,)%!  oloh_ge^d    #'Q0F..-+)&"  plp\S[f_f     #&ɿ7))'%" qnq&&*CHL:>B268PGOh`g    #2&3'$"  qnq..3SY^GLP6:<MDLiah    !"u`mp|!  ror./4U\`MSW9=?JBIkcj     ƿ    sps--2RX\KQU7;>7;=?9=A?<@D??CG?@EH?@EH??DH??DG??DG?>CF?=BE?=BE?=AD?<@D?;@C?;?B?:?B?:>A?9=@?8A?9=@?9;=`ce/ehkogik_bd_\_`H@Gldk                                         uqu8;?NSWGMP8Fnfm                                        uru:<@INQCHK8<>NTXRX]V]aZaf\bg\bg[bg[afZ`eY_dX_cW^bW]bV\aU[`TZ_SY^SY]RX\MSW!#%OUYLRU=?@<=?MOP\^`psu~|uxzikmZ\^LMO?D@035BGJFKNINQLRUNSWNSWMSVMRVLRUKQTKPSJORIORINQHMPGLOGLOFKNFKNCHK HMPDIL;=>KLMOQRLNOMNPUWXacdjmnpsurtvrtvrtvpsuoqsnprmoqlnpkmojlnhjlbdeRSUDEF/?+"*tks2+2xtx236?BD:=?.12<@B?CEBFHEILFKMFKMFJMEJLDIKDIKCHJCGIBFIAFHAEG@DG@DF?CE?CE=ACAEH>BD:;ACAEFDHJEIKEIKEIKDHJCGICGIBFHBEGAEG@DF@DE?CE?BD>BC>BC<@A@DF=@B>@ASTVYZ\^`acegijlnprsuwxz|z|~z|~y{}xz|wy{vxzuwytvxstvrtuprtoqsnprjln[]^NOP_?''xnw7/7                        3+2 zvz__cz|~pstVXYgiklnpqsuvxzxz|xz|wz|vy{uxztvxsuwrtvqsuprtoqsnprmoqlnplnohjl,--&&'qsujlnOQRabdgijmoqtuwz|}cdfVWX?&%zoy:19RKQ{w{}|uvxEFG789cdfrstz{|y{|abc/?$${pz;3;|x|{|}QRS111111111999<=>nopvwx }r|MEM}y}`aaPPPPPPPPPhhhNNN|}}npp  ~s}PHP! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~z~pppooooooooo]]] tTKT%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%${  |||ZZZ?_uWMV('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('|  qqrIII~~~/v]T\+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*}  swzx|~~}|{z~y|w{~uy|mqt/12*+,tx{lpshiiooo?/ÿ?f[ekaj/"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./"./".}  <@D?CGBGJDJMEKNEKNEJNDIMDIMCHLCGKBGKAFJAFI@EH?DH?DG>CF>BE;?B"$&?DG2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=>2=  **/>CF;?B/ I?I|q{NBMC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6BC6B!! ? J@It~SFQG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:EG:E!! ? J@IxWJUL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?JL?J!! ? O2)2|eZdQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDOQDO!! ? ?*!*i^hUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHTUHT!! ? ?*"*ncmZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNYZNY!! ? ?+"+tjs_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^_S^!! ? v~dYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYcdYc"" ? zj^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^ij^i"" ? pdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdopdo"" ? ߁yujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujtujt"" ? {sz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz{rz## ? ~v}{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx## ? ZRY## ? O KCKgaghbhhbhibiici## ? /       ''E=EE=EE=EE=EE=EE=DE71+$ _N\gWdiXek[hm]jo_lqbnsdpufrwhtsdpqamo`ln^km]ik[hjZgiXegVdfUbiYfSNID?:50+&! TAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPTAPYGV F3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BF3BM:I /!;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7;'7B/> ?0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8'5 _ &#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#0 - )&# %MSX                    # ! $IORQW[X^cW]bU[_RX]PVZNSWINR8BDGKNMRULQTJNQHLOFJMDILAEG468''(456MOPlnpprthjlRTU001            gbf727'&)_bd_bdfjlehjbfh`ce]`b\_`WZ\JKMXYZnpr~{}~QRS   98:555???def    A@A{{{z{|ϫyzzCDE    GGG~...%%%z}~_`a\\\fff?߬nnn_   s`kp{ /01uz} &.(  %2M <)  .='H.U<ï3 "  $7#uAbzAe=')  +A)pOiD\;G-1   0H.R{đ̠d!L6#   !! 4!O3lFWZ}W;&#  $"$ 7#g"Nqա˂őAk>(% &$& 8$˰#ddjT](% ,), 5"O3lFWZ3m̰;&$   .+. 1I/u"Wq͠Qr7#! !!0-0 +A*˰y#ZhD[;H.1 ""3/3&9%Qoe"M>(+ ##515 0?)I/U=į5"$   $ $737 '3!yPjοsPg+ !!% %959  )0+" ""&!&  <7<    x`o" $$205LQV  ?:?               &!&1/4IORHMQNTXNSWLQUJOSHMQFJNAFI59;355IKMUWYKMN<>?C=C+%+/,1>BDGKNMRULQTJNQHLOFJMDILAEG478+,,9:;SUWoqtsuwkmoTVW9:;HAH                  1)195:_bd_bdfjlehjbfh`ce]`b\_`WZ\GIKOPRfgiwy{}z|~wy{tvxdfhBCDMFM"!qjpTMTKGK)))...{}~XYZSKR*)""""""""""""""""""""""""""""""""""""""?5>SOS{{{uuu߻NOP/KAJ8,6,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*G6-66-66-6MEMd\dd\dd\dd\dd\dd\dd\dd\d]U]NEMNEMUMT%%??????????????????????????????( @ %gs|vpjertqmaB<60$2%0WITbU`makmakqfoxmv}s{{qys~vgsTFQ]TK<) 1"/P-;?,)=)9=)9=)9=)9=)9=)9=)9=)9=)9=)9=)9=)9=)9/,?# -)-)-)-)-)-)-)-)-)-)-)-)-)# ??               :(  ? 'D,R{đǠs1[8$ ? !:%pƠBmI/0? .B*d!Lѿ:&& _ #2 P ?, =@E]di/ $D!7!  348MSWU\`SY]PVZMSW48:OTXV\aPVZFKN     XCQWCP      YY\adfknphkmdgiadfDFHgklhlmbegQSTo      VHR/'.aaa_?! ! ! ! ! " " ! ! ! ! ! ! mmm?%$.".."..".."..".."..".."..".."..".."..".%$<1=>1=>1=>1=>1=>1=>1=>1=>1=>1=>1=>1=>1=0$/? >2=PCNPCNPCNPCNPCNPCNPCNPCNPCNPCNPCNPCNPCN>2= ?A6@dXcdXcdXcdXcdXcdXcdXcdXcdXcdXcdXcdXcdXcMBL ?NDM߂yz{|||||||{zycZc ?F=Ez{{||χ ?????????????????߀??????(  eSaMr`nmdS`dS`dS`dS`dS`RBOO_<)8E0@E0@E0@E0@E0@E0@0 -%!%!&!&!&!%!%!#"A+9virqjoojngfggfggfg767gfghgh %vZk9- #"#^]] ='[Cg| /X9heJ,  9$nHog6"  :%oIizY7#  2 ]<_g0  %C+Z{A*#   -T)Ehxuhqmhmgfggfggfg767gfghgh (!,#(! ;4;^]]8+78+79*6:)79*78+78+7(' VJU]P[]P[]P[]P[]P[]P[A5@ ?NEMe\de\dg_fvst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/resource/PreBuildEvent.bat000066400000000000000000000015431461511344300256700ustar00rootroot00000000000000set OutDir=%1 if not exist %OutDir%\..\..\Contents mkdir %OutDir%\..\..\Contents if errorlevel 1 goto err if not exist %OutDir%\..\..\Contents\Resources mkdir %OutDir%\..\..\Contents\Resources if errorlevel 1 goto err echo Copy "aaxwrapperPages.xml" copy /Y ..\resource\aaxwrapperPages.xml %OutDir%\..\..\Contents\Resources\ > NUL if errorlevel 1 goto err attrib -r %OutDir%\..\.. if exist %OutDir%\..\..\PlugIn.ico goto PlugIn_ico_exists copy /Y ..\resource\PlugIn.ico %OutDir%\..\..\ > NUL if errorlevel 1 goto err attrib +h +r +s %OutDir%\..\..\PlugIn.ico if errorlevel 1 goto err :PlugIn_ico_exists if exist %OutDir%\..\..\desktop.ini goto desktop_ini_exists copy /Y ..\resource\desktop.ini %OutDir%\..\..\ > NUL if errorlevel 1 goto err attrib +h +r +s %OutDir%\..\..\desktop.ini if errorlevel 1 goto err :desktop_ini_exists attrib +r %OutDir%\..\.. :err vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/resource/aaxwrapper.rc000066400000000000000000000042261461511344300251710ustar00rootroot00000000000000// Microsoft Visual C++ generated resource script. // #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "DemoMIDIResource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 7,0,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "FileDescription", "AAXWrapper Plug-In" VALUE "FileVersion", "1.0.0.0" VALUE "InternalName", "AAXWrapper.aaxplugin" VALUE "LegalCopyright", "(c) Steinberg Media Technologies 2020" VALUE "OriginalFilename", "AAXWrapper.aaxplugin" VALUE "ProductName", "AAX Wrapper" VALUE "ProductVersion", "0.1" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/resource/aaxwrapperPages.xml000066400000000000000000000102061461511344300263400ustar00rootroot00000000000000 DemoGain 1 -> 1 by Avid Inc. PageTable 1 MasterBypass Gain Gain MasterBypass 1 1 1 1 1 1 1 1 1 1 1 1 1 MasterBypass Gain 1 1 1 1 1 1 1 1 1 1 1 1 1 MasterBypass Gain 1 1 1 1 1 1 1 1 1 1 1 1 1 Gain MasterBypass 1 1 1 1 1 1 1 1 1 1 1 1 1 MasterBypass Gain MasterBypass Gain Ga Gn Ma Byp MByp Mstr Byp RTAS: DemoGain, 1 in X 1 out MasterBypass vst3sdk-3.7.10.14+~4.13.3/source/vst/aaxwrapper/resource/desktop.ini000066400000000000000000000001711461511344300246360ustar00rootroot00000000000000[.ShellClassInfo] IconResource=PlugIn.ico,0 ;For compatibility with Windows XP IconFile=PlugIn.ico IconIndex=0 vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/000077500000000000000000000000001461511344300207435ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/AUv3WrappermacOS/000077500000000000000000000000001461511344300240055ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/AUv3WrappermacOS/main.mm000066400000000000000000000042171461511344300252700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 03/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import int main (int argc, const char* argv[]) { return NSApplicationMain (argc, argv); } vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/CMakeLists.txt000066400000000000000000000055111461511344300235050ustar00rootroot00000000000000include(SMTG_AddVST3AuV3) # iOS target if(SMTG_MAC) if(XCODE) set(auv3wrapperlib_sources ${SDK_ROOT}/public.sdk/source/vst/auv3wrapper/Shared/AUv3Wrapper.mm ${SDK_ROOT}/public.sdk/source/vst/auv3wrapper/Shared/AUv3Wrapper.h ${SDK_ROOT}/public.sdk/source/vst/auv3wrapper/Shared/AUv3AudioEngine.mm ${SDK_ROOT}/public.sdk/source/vst/auv3wrapper/Shared/AUv3AudioEngine.h ${SDK_ROOT}/public.sdk/source/vst/auwrapper/NSDataIBStream.mm ${SDK_ROOT}/public.sdk/source/vst/auwrapper/NSDataIBStream.h ${SDK_ROOT}/public.sdk/source/vst/utility/mpeprocessor.cpp ${SDK_ROOT}/public.sdk/source/vst/utility/mpeprocessor.h ) #-------------------------------------------------------------------------------------------------------- set(target auv3wrappermacos) add_library(${target} STATIC ${auv3wrapperlib_sources} ) set_target_properties(${target} PROPERTIES ${SDK_IDE_LIBS_FOLDER} XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES ) target_compile_features(${target} PUBLIC cxx_std_17 ) target_link_libraries(${target} PRIVATE sdk_hosting ) if (SMTG_AUV3_WRAPPER_EXTERNAL_PLUGIN_FACTORY) target_compile_definitions(${target} PRIVATE SMTG_AUV3_WRAPPER_EXTERNAL_PLUGIN_FACTORY=1) endif() #-------------------------------------------------------------------------------------------------------- if(SMTG_ENABLE_IOS_TARGETS) set(target auv3wrapperios) add_library(${target} STATIC ${auv3wrapperlib_sources} ) set_target_properties(${target} PROPERTIES ${SDK_IDE_LIBS_FOLDER} XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES ) set_target_properties(${target} PROPERTIES LINK_FLAGS "-Wl,-F/Library/Frameworks" ) smtg_target_set_platform_ios(${target}) target_compile_features(${target} PUBLIC cxx_std_17 ) target_link_libraries(${target} PRIVATE sdk_hosting_ios ) if (SMTG_AUV3_WRAPPER_EXTERNAL_PLUGIN_FACTORY) target_compile_definitions(${target} PRIVATE SMTG_AUV3_WRAPPER_EXTERNAL_PLUGIN_FACTORY=1 ) endif() endif() else() message("* To enable building the AUv3 Wrapper example for iOS you need to set the SMTG_IOS_DEVELOPMENT_TEAM and use the Xcode generator") endif() endif() vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/Shared/000077500000000000000000000000001461511344300221515ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/Shared/AUv3AudioEngine.h000066400000000000000000000047511461511344300252170ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : AUv3AudioEngine.h // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #import @interface AUv3AudioEngine : NSObject @property (assign) AUAudioUnit* currentAudioUnit; - (NSError*)loadAudioFile:(NSURL*)url; - (instancetype)initWithComponentType:(uint32_t)unitComponentType; - (void)loadAudioUnitWithComponentDescription:(AudioComponentDescription)desc completion:(void (^) (void))completionBlock; - (BOOL)startStop; - (void)shutdown; @end vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/Shared/AUv3AudioEngine.mm000066400000000000000000000307251461511344300254010ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : AUv3AudioEngine.mm // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "AUv3AudioEngine.h" #import #import #import #import //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class MidiIO { public: using ReadCallback = std::function; MidiIO (ReadCallback&& callback) : readCallback (std::move (callback)) { activate (); } ~MidiIO () = default; private: bool activate (); bool deactivate (); void onSourceAdded (MIDIObjectRef source); void onSetupChanged (); void disconnectSources (); void onInput (const MIDIPacketList* pktlist); static void readProc (const MIDIPacketList* pktlist, void* readProcRefCon, void* srcConnRefCon); static void notifyProc (const MIDINotification* message, void* refCon); MIDIClientRef client {0}; MIDIPortRef inputPort {0}; MIDIEndpointRef destPort {0}; ReadCallback readCallback; using ConnectionList = std::vector; ConnectionList connectedSources; }; //------------------------------------------------------------------------ bool MidiIO::activate () { if (client) return true; OSStatus err; NSString* name = [[NSBundle mainBundle] bundleIdentifier]; if ((err = MIDIClientCreate ((__bridge CFStringRef)name, notifyProc, this, &client) != noErr)) return false; if ((err = MIDIInputPortCreate (client, CFSTR ("Input"), readProc, this, &inputPort) != noErr)) { MIDIClientDispose (client); client = 0; return false; } name = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleName"]; if ((err = MIDIDestinationCreate (client, (__bridge CFStringRef)name, readProc, this, &destPort) != noErr)) { MIDIPortDispose (inputPort); inputPort = 0; MIDIClientDispose (client); client = 0; return false; } onSetupChanged (); return true; } //------------------------------------------------------------------------ bool MidiIO::deactivate () { if (client == 0) return true; disconnectSources (); auto status = MIDIEndpointDispose (destPort); destPort = 0; status |= MIDIPortDispose (inputPort); inputPort = 0; status |= MIDIClientDispose (client); client = 0; return status == noErr; } //------------------------------------------------------------------------ void MidiIO::onSourceAdded (MIDIObjectRef source) { connectedSources.push_back ((MIDIEndpointRef)source); MIDIPortConnectSource (inputPort, (MIDIEndpointRef)source, NULL); } //------------------------------------------------------------------------ void MidiIO::onSetupChanged () { disconnectSources (); ItemCount numSources = MIDIGetNumberOfSources (); for (ItemCount i = 0; i < numSources; i++) { onSourceAdded (MIDIGetSource (i)); } } //------------------------------------------------------------------------ void MidiIO::disconnectSources () { for (auto source : connectedSources) MIDIPortDisconnectSource (inputPort, source); connectedSources.clear (); } //------------------------------------------------------------------------ void MidiIO::onInput (const MIDIPacketList* pktlist) { if (readCallback) readCallback (pktlist); } //------------------------------------------------------------------------ void MidiIO::readProc (const MIDIPacketList* pktlist, void* readProcRefCon, void* srcConnRefCon) { MidiIO* io = static_cast (readProcRefCon); io->onInput (pktlist); } //------------------------------------------------------------------------ void MidiIO::notifyProc (const MIDINotification* message, void* refCon) { if (message->messageID == kMIDIMsgSetupChanged) { MidiIO* mio = (MidiIO*)refCon; mio->onSetupChanged (); } } using MidiIOPtr = std::unique_ptr; //------------------------------------------------------------------------ } // Vst } // Steinberg //------------------------------------------------------------------------ @implementation AUv3AudioEngine { AVAudioEngine* audioEngine; AVAudioFile* audioFile; AVAudioPlayerNode* playerNode; AVAudioUnit* avAudioUnit; Steinberg::Vst::MidiIOPtr midi; UInt32 componentType; BOOL playing; BOOL isDone; } //------------------------------------------------------------------------ - (instancetype)initWithComponentType:(uint32_t)unitComponentType { self = [super init]; isDone = false; if (self) { audioEngine = [[AVAudioEngine alloc] init]; componentType = unitComponentType; } #if TARGET_OS_IPHONE NSError* error = nil; BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error]; if (NO == success) { NSLog (@"Error setting category: %@", [error localizedDescription]); } #endif playing = false; return self; } //------------------------------------------------------------------------ - (void)shutdown { if (playing) [self stopPlaying]; audioEngine = nil; midi.reset (); } //------------------------------------------------------------------------ - (void)onAudioUnitInstantiated:(AVAudioUnit* __nullable)audioUnit error:(NSError* __nullable)error completion:(void (^) (void))completionBlock { if (audioUnit == nil) return; avAudioUnit = audioUnit; _currentAudioUnit = avAudioUnit.AUAudioUnit; [audioEngine attachNode:avAudioUnit]; [audioEngine connect:avAudioUnit to:audioEngine.outputNode format:audioFile.processingFormat]; completionBlock (); } //------------------------------------------------------------------------ - (void)loadAudioUnitWithComponentDescription:(AudioComponentDescription)desc completion:(void (^) (void))completionBlock { [AVAudioUnit instantiateWithComponentDescription:desc options:0 completionHandler:^(AVAudioUnit* __nullable audioUnit, NSError* __nullable error) { [self onAudioUnitInstantiated:audioUnit error:error completion:completionBlock]; }]; if (componentType == kAudioUnitType_MusicDevice) { midi = Steinberg::Vst::MidiIOPtr ( new Steinberg::Vst::MidiIO ([=] (const MIDIPacketList* pktlist) { [self scheduleMIDIPackets:pktlist]; })); } } //------------------------------------------------------------------------ - (NSError*)loadAudioFile:(NSURL*)url { BOOL isPlaying = playing; if (isPlaying) [self startStop]; if (playerNode) { [playerNode stop]; [audioEngine detachNode:playerNode]; } NSError* error = nil; audioFile = [[AVAudioFile alloc] initForReading:url error:&error]; if (error) return error; [audioEngine detachNode:avAudioUnit]; [audioEngine attachNode:avAudioUnit]; [audioEngine connect:avAudioUnit to:audioEngine.outputNode format:audioFile.processingFormat]; playerNode = [[AVAudioPlayerNode alloc] init]; [audioEngine attachNode:playerNode]; [audioEngine connect:playerNode to:avAudioUnit format:audioFile.processingFormat]; if (isPlaying) [self startStop]; return nil; } //------------------------------------------------------------------------ - (BOOL)startStop { playing = !playing; playing ? ([self startPlaying]) : ([self stopPlaying]); return playing; } //------------------------------------------------------------------------ - (void)startPlaying { [self activateSession:true]; NSError* error = nil; if (![audioEngine startAndReturnError:&error]) { NSLog (@"engine failed to start: %@", error); return; } if (playerNode) { [self loopAudioFile]; [playerNode play]; } } //------------------------------------------------------------------------ - (void)stopPlaying { if (playerNode) [playerNode stop]; [audioEngine stop]; [self activateSession:false]; } //------------------------------------------------------------------------ - (void)loopAudioFile { if (playerNode) { [playerNode scheduleFile:audioFile atTime:nil completionHandler:^{ if (playerNode.playing) [self loopAudioFile]; }]; } } //------------------------------------------------------------------------ - (void)scheduleMIDIPackets:(const MIDIPacketList*) pktlist { if (!_currentAudioUnit || _currentAudioUnit.scheduleMIDIEventBlock == nil) return; auto packet = &pktlist->packet[0]; for (auto i = 0u; i < pktlist->numPackets; i++) { _currentAudioUnit.scheduleMIDIEventBlock (AUEventSampleTimeImmediate, 0, packet->length, packet->data); packet = MIDIPacketNext (packet); } } //------------------------------------------------------------------------ - (void)loopMIDIsequence { UInt8 cbytes[3], *cbytesPtr; cbytesPtr = cbytes; dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ cbytesPtr[0] = 0xB0; cbytesPtr[1] = 123; cbytesPtr[2] = 0; if (_currentAudioUnit.scheduleMIDIEventBlock == nil) return; _currentAudioUnit.scheduleMIDIEventBlock (AUEventSampleTimeImmediate, 0, 3, cbytesPtr); usleep (useconds_t (0.1 * 1e6)); float releaseTime = 0.05; usleep (useconds_t (0.1 * 1e6)); int i = 0; @synchronized (self) { while (playing) { if (releaseTime < 10.0) releaseTime = (releaseTime * 1.05) > 10.0 ? (releaseTime * 1.05) : 10.0; cbytesPtr[0] = 0x90; cbytesPtr[1] = UInt8 (60 + i); cbytesPtr[2] = UInt8 (64); // note on _currentAudioUnit.scheduleMIDIEventBlock (AUEventSampleTimeImmediate, 0, 3, cbytesPtr); usleep (useconds_t (0.2 * 1e6)); cbytesPtr[0] = 0x80; cbytesPtr[1] = UInt8 (60 + i); cbytesPtr[2] = UInt8 (0); // note off _currentAudioUnit.scheduleMIDIEventBlock (AUEventSampleTimeImmediate, 0, 3, cbytesPtr); i += 2; if (i >= 24) { i = -12; } } cbytesPtr[0] = 0xB0; cbytesPtr[1] = 123; cbytesPtr[2] = 0; _currentAudioUnit.scheduleMIDIEventBlock (AUEventSampleTimeImmediate, 0, 3, cbytesPtr); isDone = true; } }); } //------------------------------------------------------------------------ - (void)activateSession:(BOOL)active { #if TARGET_OS_IPHONE NSError* error = nil; BOOL success = [[AVAudioSession sharedInstance] setActive:active error:nil]; if (NO == success) { NSLog (@"Error setting category: %@", [error localizedDescription]); } #endif } @end vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/Shared/AUv3Wrapper.h000066400000000000000000000055521461511344300244500ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : AUv3Wrapper.h // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #import @class AUv3Wrapper; //------------------------------------------------------------------------ @interface AUv3WrapperViewController : AUViewController @property (nonatomic, strong) AUv3Wrapper* audioUnit; @end //------------------------------------------------------------------------ @interface AUv3Wrapper : AUAudioUnit - (void)performEdit:(int)tag value:(double)value; - (void)syncParameterValues; - (void)updateParameters; - (void)onTimer; - (void)onParamTitlesChanged; - (void)onNoteExpressionChanged; - (void)onLatencyChanged; - (BOOL)enableMPESupport:(BOOL)state; - (BOOL)setMPEInputDeviceMasterChannel:(NSInteger)masterChannel memberBeginChannel:(NSInteger)memberBeginChannel memberEndChannel:(NSInteger)memberEndChannel; @end vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/Shared/AUv3Wrapper.mm000066400000000000000000002340411461511344300246270ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : AUv3Wrapper.mm // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "AUv3Wrapper.h" #import #import "public.sdk/source/vst/auwrapper/NSDataIBStream.h" #import "public.sdk/source/vst/hosting/eventlist.h" #import "public.sdk/source/vst/hosting/parameterchanges.h" #import "public.sdk/source/vst/hosting/processdata.h" #import "public.sdk/source/vst/utility/mpeprocessor.h" #import "public.sdk/source/vst/utility/stringconvert.h" #import "pluginterfaces/gui/iplugview.h" #import "pluginterfaces/vst/ivsteditcontroller.h" #import "pluginterfaces/vst/ivstmidicontrollers.h" #import "pluginterfaces/vst/ivstphysicalui.h" #import "pluginterfaces/vst/ivstpluginterfacesupport.h" #import "pluginterfaces/vst/ivstunits.h" #import "pluginterfaces/vst/vstpresetkeys.h" #import "pluginterfaces/vst/vsttypes.h" #import #import #import #import #import #if TARGET_OS_IPHONE #define SMTG_IOS_MAC_PLATFORMTYPE kPlatformTypeUIView #define SMTG_IOS_MAC_VIEW UIView #define SMTG_IOS_MAC_AutoresizingMask_NotSizable UIViewAutoresizingNone #else #define SMTG_IOS_MAC_VIEW NSView #define SMTG_IOS_MAC_PLATFORMTYPE kPlatformTypeNSView #define SMTG_IOS_MAC_AutoresizingMask_NotSizable NSViewNotSizable #endif extern "C" { //------------------------------------------------------------------------ #if SMTG_AUV3_WRAPPER_EXTERNAL_PLUGIN_FACTORY // PluginFactory will be provided externally Steinberg::IPluginFactory* PLUGIN_API GetPluginFactory (); #else // Generate our own factory wrapping the VST3 variant struct VSTBundle { using EntryPtr = bool (*) (CFBundleRef); using ExitPtr = bool (*) (void); VSTBundle () { initialized = init (); } bool loadBundle (CFURLRef bundleUrl) { bundle = CFBundleCreate (kCFAllocatorDefault, bundleUrl); if (!bundle) return false; if (!CFBundleLoadExecutable (bundle)) return false; bundleEntry = (EntryPtr)CFBundleGetFunctionPointerForName (bundle, CFSTR ("bundleEntry")); if (!bundleEntry) return false; bundleExit = (ExitPtr)CFBundleGetFunctionPointerForName (bundle, CFSTR ("bundleExit")); if (!bundleExit) return false; getFactory = (GetFactoryProc)CFBundleGetFunctionPointerForName (bundle, CFSTR ("GetPluginFactory")); if (!bundleExit) return false; if (!bundleEntry (bundle)) return false; return true; } bool init () { NSURL* url = NSBundle.mainBundle.builtInPlugInsURL; url = [url URLByAppendingPathComponent:@"plugin.vst3"]; if (!url) return false; CFURLRef bundleUrl = (__bridge CFURLRef)url; if (!loadBundle (bundleUrl)) { url = NSBundle.mainBundle.builtInPlugInsURL; url = [url URLByAppendingPathComponent:@"auv3.appex"]; NSBundle* appexBundle = [NSBundle bundleWithURL:url]; if (!appexBundle) return false; url = appexBundle.builtInPlugInsURL; url = [url URLByAppendingPathComponent:@"plugin.vst3"]; if (!url) return false; bundleUrl = (__bridge CFURLRef)url; if (!loadBundle (bundleUrl)) return false; } return true; } bool initialized {false}; CFBundleRef bundle {nullptr}; EntryPtr bundleEntry {nullptr}; ExitPtr bundleExit {nullptr}; GetFactoryProc getFactory {nullptr}; }; //------------------------------------------------------------------------ Steinberg::IPluginFactory* PLUGIN_API GetPluginFactory () { static VSTBundle vstBundle; if (vstBundle.initialized) { return vstBundle.getFactory (); } return nullptr; } #endif // SMTG_AUV3_WRAPPER_CUSTOM_PLUGIN_FACTORY } // extern "C" #pragma mark - Helpers from AUv2Wrapper / aucocoaview //------------------------------------------------------------------------ namespace Steinberg { //------------------------------------------------------------------------ template bool executeOnMainThreadSync (Proc p) { if (pthread_main_np () == 0) { dispatch_sync (dispatch_get_main_queue (), p); return true; } return false; } //------------------------------------------------------------------------ class AUPlugFrame final : public IPlugFrame { public: using OnResizeCallback = std::function; AUPlugFrame (OnResizeCallback&& callback) : callback (std::move (callback)) {} tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* vr) SMTG_OVERRIDE { callback (vr); return kResultTrue; } tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) override { QUERY_INTERFACE (_iid, obj, IPlugFrame::iid, IPlugFrame); QUERY_INTERFACE (_iid, obj, ::Steinberg::FUnknown::iid, IPlugFrame); *obj = nullptr; return kNoInterface; } uint32 PLUGIN_API addRef () override { return ++refCount; } uint32 PLUGIN_API release () override { if (--refCount == 0) { delete this; return 0; } return refCount; } private: std::atomic refCount {1}; OnResizeCallback callback; }; namespace Vst { //------------------------------------------------------------------------ static NSString* createCFStringFromString128 (const String128& string) { NSUInteger length = tstrlen (string); return [[NSString alloc] initWithCharacters:reinterpret_cast (string) length:length]; } //------------------------------------------------------------------------ static SpeakerArrangement numChannelsToSpeakerArrangement (UInt32 numChannels) { switch (numChannels) { case 1: return SpeakerArr::kMono; case 2: return SpeakerArr::kStereo; case 6: return SpeakerArr::k51; } return 0; } //------------------------------------------------------------------------ class AUHostApplication : public HostApplication, public IVst3ToAUWrapper, public IVst3WrapperMPESupport { public: __weak AUv3Wrapper* wrapper {nil}; AUHostApplication () { auto pis = getPlugInterfaceSupport (); pis->addPlugInterfaceSupported (INoteExpressionController::iid); pis->addPlugInterfaceSupported (INoteExpressionPhysicalUIMapping::iid); } tresult PLUGIN_API getName (String128 name) SMTG_OVERRIDE { return VST3::StringConvert::convert ("VST3-AU Wrapper", name) ? kResultTrue : kResultFalse; } tresult PLUGIN_API enableMPEInputProcessing (TBool state) SMTG_OVERRIDE { if (!wrapper) return kInternalError; return [wrapper enableMPESupport:state != 0 ? YES : NO] ? kResultTrue : kResultFalse; } tresult PLUGIN_API setMPEInputDeviceSettings (int32 masterChannel, int32 memberBeginChannel, int32 memberEndChannel) SMTG_OVERRIDE { if (!wrapper) return kInternalError; return [wrapper setMPEInputDeviceMasterChannel:masterChannel memberBeginChannel:memberBeginChannel memberEndChannel:memberEndChannel] ? kResultTrue : kResultFalse; } FUnknown* unknownCast () { return static_cast (this); } private: tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) override { QUERY_INTERFACE (_iid, obj, IVst3ToAUWrapper::iid, IVst3ToAUWrapper); QUERY_INTERFACE (_iid, obj, IVst3WrapperMPESupport::iid, IVst3WrapperMPESupport); *obj = nullptr; return HostApplication::queryInterface(_iid, obj); } // this class is always used as singelton and thus does not need ref counting uint32 PLUGIN_API addRef () override { return 100; } uint32 PLUGIN_API release () override { return 100; } }; //------------------------------------------------------------------------ typedef std::map UnitInfoMap; typedef std::vector ParameterGroupVector; //------------------------------------------------------------------------ static void buildUnitInfos (IUnitInfo* unitInfoController, UnitInfoMap& units) { units.clear (); if (unitInfoController) { int32 numUnits = unitInfoController->getUnitCount (); for (int32 i = 0; i < numUnits; i++) { UnitInfo ui; if (unitInfoController->getUnitInfo (i, ui) == kResultTrue) units[ui.id] = ui; } } } //------------------------------------------------------------------------ struct BufferedAudioBus { AUAudioUnitBus* bus = nullptr; AUAudioFrameCount maxFrames = 0; AVAudioPCMBuffer* pcmBuffer = nullptr; AudioBufferList const* originalAudioBufferList = nullptr; AudioBufferList* mutableAudioBufferList = nullptr; void init (AVAudioFormat* defaultFormat, AVAudioChannelCount maxChannels) { maxFrames = 0; pcmBuffer = nullptr; originalAudioBufferList = nullptr; mutableAudioBufferList = nullptr; bus = [[AUAudioUnitBus alloc] initWithFormat:defaultFormat error:nil]; bus.maximumChannelCount = maxChannels; } void allocateRenderResources (AUAudioFrameCount inMaxFrames) { maxFrames = inMaxFrames; pcmBuffer = [[AVAudioPCMBuffer alloc] initWithPCMFormat:bus.format frameCapacity:maxFrames]; originalAudioBufferList = pcmBuffer.audioBufferList; mutableAudioBufferList = pcmBuffer.mutableAudioBufferList; } void deallocateRenderResources () { pcmBuffer = nullptr; originalAudioBufferList = nullptr; mutableAudioBufferList = nullptr; } }; //------------------------------------------------------------------------ // This struct provides a prepareOutputBufferList method to copy the internal buffer pointers to the // output buffer list in case the client passed in null buffer pointers. struct BufferedOutputBus : BufferedAudioBus { void prepareOutputBufferList (AudioBufferList* outBufferList, AVAudioFrameCount frameCount, bool zeroFill) { UInt32 byteSize = frameCount * sizeof (float); for (UInt32 i = 0; i < outBufferList->mNumberBuffers; ++i) { outBufferList->mBuffers[i].mNumberChannels = originalAudioBufferList->mBuffers[i].mNumberChannels; outBufferList->mBuffers[i].mDataByteSize = byteSize; if (outBufferList->mBuffers[i].mData == nullptr) outBufferList->mBuffers[i].mData = originalAudioBufferList->mBuffers[i].mData; if (zeroFill) memset (outBufferList->mBuffers[i].mData, 0, byteSize); } } }; //------------------------------------------------------------------------ // This struct manages a buffer into which an audio unit with input busses can pull its input data. struct BufferedInputBus : BufferedAudioBus { AUAudioUnitStatus pullInput (AudioUnitRenderActionFlags* actionFlags, AudioTimeStamp const* timestamp, AVAudioFrameCount frameCount, NSInteger inputBusNumber, AURenderPullInputBlock pullInputBlock) { if (pullInputBlock == nullptr) return kAudioUnitErr_NoConnection; prepareInputBufferList (); return pullInputBlock (actionFlags, timestamp, frameCount, inputBusNumber, mutableAudioBufferList); } void prepareInputBufferList () { UInt32 byteSize = maxFrames * sizeof (float); mutableAudioBufferList->mNumberBuffers = originalAudioBufferList->mNumberBuffers; for (UInt32 i = 0; i < originalAudioBufferList->mNumberBuffers; ++i) { mutableAudioBufferList->mBuffers[i].mNumberChannels = originalAudioBufferList->mBuffers[i].mNumberChannels; mutableAudioBufferList->mBuffers[i].mData = originalAudioBufferList->mBuffers[i].mData; mutableAudioBufferList->mBuffers[i].mDataByteSize = byteSize; } } }; #pragma mark - ComponentHelper class (implementing IComponentHandler) //------------------------------------------------------------------------ class ComponentHelper : public IComponentHandler { public: ComponentHelper () = default; virtual ~ComponentHelper (); void setWrapper (AUv3Wrapper* wrapper) { auv3Wrapper = wrapper; } tresult PLUGIN_API performEdit (ParamID tag, ParamValue valueNormalized) SMTG_OVERRIDE; tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) SMTG_OVERRIDE; uint32 PLUGIN_API addRef () SMTG_OVERRIDE { return 100; } uint32 PLUGIN_API release () SMTG_OVERRIDE { return 100; } protected: tresult PLUGIN_API beginEdit (ParamID tag) SMTG_OVERRIDE; tresult PLUGIN_API endEdit (ParamID tag) SMTG_OVERRIDE; tresult PLUGIN_API restartComponent (int32 flags) SMTG_OVERRIDE; private: __weak AUv3Wrapper* auv3Wrapper = nil; }; //------------------------------------------------------------------------ ComponentHelper::~ComponentHelper () { auv3Wrapper = nil; } IMPLEMENT_QUERYINTERFACE (ComponentHelper, IComponentHandler, IComponentHandler::iid) //------------------------------------------------------------------------ tresult PLUGIN_API ComponentHelper::beginEdit (ParamID tag) { return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API ComponentHelper::performEdit (ParamID tag, ParamValue valueNormalized) { [auv3Wrapper performEdit:tag value:valueNormalized]; return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API ComponentHelper::endEdit (ParamID tag) { return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API ComponentHelper::restartComponent (int32 flags) { tresult result = kNotImplemented; // this method informs the host/the AU that something in the VST has changed (latency, parameter // titles, etc.) if (flags & kParamValuesChanged) { // vst plugin parameter values have changed [auv3Wrapper syncParameterValues]; result = kResultTrue; } if (flags & kParamTitlesChanged) { // vst plugin parameter titles, default values or flags (ParameterFlags) have changed [auv3Wrapper onParamTitlesChanged]; result = kResultTrue; } if (flags & kNoteExpressionChanged) { [auv3Wrapper onNoteExpressionChanged]; } if (flags & kLatencyChanged) { [auv3Wrapper onLatencyChanged]; result = kResultTrue; } // TODO: finish restartComponent implementation return result; } #pragma mark - Render Helper structs //------------------------------------------------------------------------ struct MPEHandler : public MPE::Handler { struct Context { IEventList* inputEvents {nullptr}; IMidiMapping* midiMapping {nullptr}; IParameterChanges* outputParamChanges {nullptr}; IComponentHandler* editPerformer {nullptr}; MPE::Processor* mpeProcessor {nullptr}; std::atomic_bool enableMPEProcessing {true}; std::array programChangeParameters {{kNoParamId}}; std::array programChangeParameterStepCount {{0}}; std::array mpeMap {{kInvalidTypeID}}; std::array noteExpValueDescMap {}; }; void process (Context& c, const AUMIDIEvent* event, const AudioTimeStamp* timeStamp) { context = &c; currentSampleOffset = event->eventSampleTime - timeStamp->mSampleTime; if (c.enableMPEProcessing.load ()) { mpeProcssingEnabled = true; c.mpeProcessor->processMIDIInput (event->data, event->length); } else { if (mpeProcssingEnabled) { mpeProcssingEnabled = false; c.mpeProcessor->reset (); } onOtherInput (event->data, event->length); } context = nullptr; } private: Context* context {nullptr}; int32 currentSampleOffset {0}; MPE::NoteID noteIDCounter {0}; bool mpeProcssingEnabled {false}; using Pitch2ParamID = std::array; std::array pitchToParamIDMap {{{0}}}; bool generateNewNoteID (MPE::NoteID& outNoteID) override { if (!context) return false; outNoteID = ++noteIDCounter; return true; } void releaseNoteID (MPE::NoteID noteID) override {} void onMPENoteOn (MPE::NoteID noteID, MPE::Pitch pitch, MPE::Velocity velocity) override { if (!context) return; sendNoteOn (noteID, pitch, velocity); } void onMPENoteOff (MPE::NoteID noteID, MPE::Pitch pitch, MPE::Velocity velocity) override { if (!context) return; sendNoteOff (noteID, pitch, velocity); } void onMPEControllerChange (MPE::NoteID noteID, MPE::Controller cc, MPE::NormalizedValue value) override { if (!context || cc > MPE::Controller::Y) return; auto index = static_cast (cc); if (context->mpeMap[index] != kInvalidTypeID) { Event e {}; e.type = Event::kNoteExpressionValueEvent; e.noteExpressionValue.noteId = noteID; e.noteExpressionValue.typeId = context->mpeMap[index]; e.noteExpressionValue.value = (value * (context->noteExpValueDescMap[index].maximum - context->noteExpValueDescMap[index].minimum)) + context->noteExpValueDescMap[index].minimum; e.sampleOffset = currentSampleOffset; context->inputEvents->addEvent (e); } } void sendNoteOn (MPE::NoteID noteID, MPE::Pitch pitch, MPE::Velocity velocity, int16 channel = 0) { if (!context->inputEvents) return; Event e {}; e.type = Event::kNoteOnEvent; e.noteOn.pitch = pitch; e.noteOn.velocity = velocity; e.noteOn.noteId = noteID; e.noteOn.channel = channel; e.sampleOffset = currentSampleOffset; context->inputEvents->addEvent (e); } void sendNoteOff (MPE::NoteID noteID, MPE::Pitch pitch, MPE::Velocity velocity, int16 channel = 0) { if (!context->inputEvents) return; Event e {}; e.type = Event::kNoteOffEvent; e.noteOff.pitch = pitch; e.noteOff.velocity = velocity; e.noteOff.noteId = noteID; e.noteOff.channel = channel; e.sampleOffset = currentSampleOffset; context->inputEvents->addEvent (e); } void sendPolyPressure (MPE::NoteID noteID, MPE::Pitch pitch, MPE::NormalizedValue pressure, int16 channel) { if (!context->inputEvents) return; Event e {}; e.type = Event::kPolyPressureEvent; e.polyPressure.channel = channel; e.polyPressure.pitch = pitch; e.polyPressure.pressure = pressure; e.polyPressure.noteId = noteID; e.sampleOffset = currentSampleOffset; context->inputEvents->addEvent (e); } void sendControllerChange (CtrlNumber controller, MPE::NormalizedValue value, int16 channel) { if (!context->midiMapping) return; ParamID outParamID; if (context->midiMapping->getMidiControllerAssignment (0, channel, controller, outParamID) != kResultTrue) return; context->editPerformer->performEdit (outParamID, value); int32 index; if (auto vq = context->outputParamChanges->addParameterData (outParamID, index)) vq->addPoint (currentSampleOffset, value, index); } void sendProgramChange (int16 channel, uint8 midiValue) { auto prgChangeParamID = context->programChangeParameters[channel]; if (prgChangeParamID == kNoParamId) return; auto value = -1.; auto stepCount = context->programChangeParameterStepCount[channel]; if (stepCount = 0) value = static_cast (midiValue) / 127.; else if (midiValue <= stepCount) value = static_cast (midiValue) / static_cast (stepCount); if (value == -1.) return; context->editPerformer->performEdit (prgChangeParamID, value); int32 index; if (auto vq = context->outputParamChanges->addParameterData (prgChangeParamID, index)) { vq->addPoint (currentSampleOffset, value, index); } } void onOtherInput (const uint8_t* data, size_t dataSize) override { if (!context || dataSize < 2) return; constexpr auto NoteOff = 0x80; constexpr auto NoteOn = 0x90; constexpr auto Aftertouch = 0xa0; constexpr auto Controller = 0xb0; constexpr auto ProgramChange = 0xc0; constexpr auto ChannelPressure = 0xd0; constexpr auto PitchWheel = 0xe0; auto status = data[0] & 0xF0; auto channel = data[0] & 0x0F; switch (status) { case NoteOn: { auto pitch = data[1]; if (data[2] != 0) { auto velocity = static_cast (data[2]) / 127.; if (pitchToParamIDMap[channel][pitch] != 0) sendNoteOff (pitchToParamIDMap[channel][pitch], pitch, velocity); MPE::NoteID noteID; if (generateNewNoteID (noteID)) { pitchToParamIDMap[channel][pitch] = noteID; sendNoteOn (noteID, pitch, velocity, channel); } } else { if (pitchToParamIDMap[channel][pitch] != 0) { sendNoteOff (pitchToParamIDMap[channel][pitch], pitch, 0, channel); pitchToParamIDMap[channel][pitch] = 0; } } break; } case NoteOff: { auto pitch = data[1]; if (pitchToParamIDMap[channel][pitch] != 0) { auto velocity = static_cast (data[2]) / 127.; sendNoteOff (pitchToParamIDMap[channel][pitch], pitch, velocity, channel); pitchToParamIDMap[channel][pitch] = 0; } break; } case Aftertouch: { auto value = static_cast (data[1]) / 127.; sendControllerChange (ControllerNumbers::kAfterTouch, value, channel); break; } case Controller: { auto value = static_cast (data[2]) / 127.; sendControllerChange (data[1], value, channel); break; } case ProgramChange: { sendProgramChange (channel, data[1]); break; } case ChannelPressure: { sendPolyPressure (-1, data[1], static_cast (data[2]) / 127., channel); break; } case PitchWheel: { auto value = static_cast ((data[1] & 0x7F) + ((data[2] & 0x7F) << 7)) / 16383.; sendControllerChange (ControllerNumbers::kPitchBend, value, channel); break; } } } void onSysexInput (const uint8_t* data, size_t dataSize) override { // no sysex handling } // error handling void errorNoteDroppedBecauseNoNoteID (MPE::Pitch pitch) override {} void errorNoteDroppedBecauseNoteStackFull (MPE::Channel channel, MPE::Pitch pitch) override {} void errorNoteForNoteOffNotFound (MPE::Channel channel, MPE::Pitch pitch) override {} void errorProgramChangeReceivedInMPEZone () override {} }; struct RenderProcessContext { RenderProcessContext () {} AUHostMusicalContextBlock musicalContext; AUHostTransportStateBlock transportContext; const AudioTimeStamp* timestamp; ProcessContext* processContext; double sampleRate; void updateProcessContext (const RenderProcessContext& renderContext) { Float64 currentTempo = 0; double timeSignatureNumerator = 0; NSInteger timeSignatureDenominator = 0; Float64 currentBeatPosition = 0; NSInteger sampleOffsetToNextBeat = 0; Float64 currentMeasureDownbeatPosition = 0; AUHostTransportStateFlags transportStateFlags; double currentSamplePosition = 0; double cycleStartBeatPosition = 0; double cycleEndBeatPosition = 0; if (musicalContext) { musicalContext (¤tTempo, &timeSignatureNumerator, &timeSignatureDenominator, ¤tBeatPosition, &sampleOffsetToNextBeat, ¤tMeasureDownbeatPosition); processContext->state |= ProcessContext::kTempoValid | ProcessContext::kTimeSigValid | ProcessContext::kProjectTimeMusicValid | ProcessContext::kBarPositionValid | ProcessContext::kClockValid; processContext->tempo = currentTempo; processContext->projectTimeMusic = currentBeatPosition; processContext->timeSigNumerator = timeSignatureNumerator; processContext->timeSigDenominator = (int32)timeSignatureDenominator; processContext->samplesToNextClock = (int32)sampleOffsetToNextBeat; processContext->barPositionMusic = currentMeasureDownbeatPosition; } if (transportContext) { transportContext (&transportStateFlags, ¤tSamplePosition, &cycleStartBeatPosition, &cycleEndBeatPosition); processContext->state |= ProcessContext::kCycleValid; processContext->cycleStartMusic = cycleStartBeatPosition; processContext->cycleEndMusic = cycleEndBeatPosition; processContext->projectTimeSamples = currentSamplePosition; switch (transportStateFlags) { case AUHostTransportStateMoving: processContext->state |= ProcessContext::kPlaying; break; case AUHostTransportStateRecording: processContext->state |= ProcessContext::kRecording; break; case AUHostTransportStateCycling: processContext->state |= ProcessContext::kCycleActive; break; } } processContext->sampleRate = sampleRate; processContext->systemTime = timestamp->mHostTime; } }; } // Vst } // Steinberg //------------------------------------------------------------------------ // AUv3Wrapper main class //------------------------------------------------------------------------ #pragma mark - AUv3Wrapper main class (implementing AUAudioUnit) using namespace Steinberg; using namespace Vst; @interface AUv3Wrapper () @property AUAudioUnitBusArray* inputBusArray; @property AUAudioUnitBusArray* outputBusArray; @property (nonatomic, readonly) AUParameterTree* parameterTree; @property IEditController* editcontroller; @end @implementation AUv3Wrapper { std::vector inputBusBuffers; std::vector outputBusBuffers; AUHostMusicalContextBlock musicalContext; AUHostTransportStateBlock transportContext; AUParameterObserverToken parameterObserverToken; NSDictionary* fullStateVar; NSMutableArray* factoryPresetsVar; NSArray* channelCapabilitiesArray; AUParameterTree* parameterTreeVar; IPtr audioProcessor; IMidiMapping* midiMapping; HostProcessData processData; ParameterChanges inputParamChanges; ParameterChanges outputParamChanges; ParameterChangeTransfer transferParamChanges; ParameterChangeTransfer outputParamTransfer; ProcessContext processContext; EventList inputEvents; EventList outputEvents; AUHostApplication hostAppContext; MPEHandler mpeHandler; MPEHandler::Context mpeHandlerContext; std::unique_ptr mpeProcessor; UnitInfoMap unitInfos; ParameterGroupVector parameterGroups; NoteInstanceID noteCounter; double sampleRate; int32 bypassParamID; int32 numPresets; int32 factoryProgramChangedID; bool isInstrument; bool isBypassed; bool canProcessInPlaceValue; bool renderingOfflineValue; // Midi Stuff int32 midiOutCount; // currently only 0 or 1 supported NSMutableArray* overviewParams; ComponentHelper componentHelper; NSTimer* timer; AUAudioUnitPreset* currentPreset; NSInteger currentFactoryPresetIndex; AUParameterObserverToken bypassObserverToken; } //------------------------------------------------------------------------ // MARK: AUAudioUnit init & dealloc //------------------------------------------------------------------------ - (instancetype)initWithComponentDescription:(AudioComponentDescription)componentDescription options:(AudioComponentInstantiationOptions)options error:(NSError**)outError { self = [super initWithComponentDescription:componentDescription options:options error:outError]; if (self == nil) return nil; // set instance variables sampleRate = 44100.0; bypassParamID = -1; factoryProgramChangedID = -1; isInstrument = false; isBypassed = false; outputParamTransfer.setMaxParameters (500); transferParamChanges.setMaxParameters (500); componentHelper.setWrapper (self); timer = [NSTimer timerWithTimeInterval:1./60. repeats:YES block:^(NSTimer * _Nonnull timer) { [self onTimer]; }]; [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; canProcessInPlaceValue = false; renderingOfflineValue = false; processData.processContext = &processContext; processData.inputParameterChanges = &inputParamChanges; processData.outputParameterChanges = &outputParamChanges; inputEvents.setMaxSize (128); outputEvents.setMaxSize (128); processData.inputEvents = &inputEvents; processData.outputEvents = &outputEvents; hostAppContext.wrapper = self; // create the channel capabilities NSBundle* mainBundle = [NSBundle mainBundle]; NSString* test = [mainBundle objectForInfoDictionaryKey:@"SupportedNumChannels"]; NSMutableArray* supportedNumChannelsArray = [NSMutableArray array]; for (int i = 0; i < test.length; i++) { NSString* newString = [test substringWithRange:NSMakeRange (i, 1)]; [supportedNumChannelsArray addObject:[NSNumber numberWithInt:[newString intValue]]]; } channelCapabilitiesArray = supportedNumChannelsArray; // load VST processor and controller [self loadVst]; // initialize busses [self initializeBusses]; // initialize parameters [self updateParameters]; // initialize presets [self loadPresetList]; // MPE Support mpeProcessor = std::unique_ptr (new MPE::Processor (&mpeHandler)); mpeHandlerContext.mpeProcessor = mpeProcessor.get (); mpeHandlerContext.midiMapping = midiMapping; mpeHandlerContext.inputEvents = &inputEvents; mpeHandlerContext.outputParamChanges = &outputParamChanges; mpeHandlerContext.editPerformer = &componentHelper; [self onNoteExpressionChanged]; return self; } //------------------------------------------------------------------------ - (void)onNoteExpressionChanged { if (!self.supportsMPE) return; FUnknownPtr puiMapping (_editcontroller); if (puiMapping) { PhysicalUIMap map[3]; map[0].physicalUITypeID = kPUIXMovement; map[1].physicalUITypeID = kPUIYMovement; map[2].physicalUITypeID = kPUIPressure; PhysicalUIMapList mapList {3, map}; // We can only map one bus and one channel with MPE in AUv3 if (puiMapping->getPhysicalUIMapping (0, 0, mapList) == kResultTrue) { mpeHandlerContext.mpeMap[0] = map[2].noteExpressionTypeID; mpeHandlerContext.mpeMap[1] = map[0].noteExpressionTypeID; mpeHandlerContext.mpeMap[2] = map[1].noteExpressionTypeID; mpeHandlerContext.noteExpValueDescMap[0] = {}; mpeHandlerContext.noteExpValueDescMap[1] = {}; mpeHandlerContext.noteExpValueDescMap[2] = {}; FUnknownPtr nExpCtrler (_editcontroller); if (nExpCtrler) { auto count = nExpCtrler->getNoteExpressionCount (0, 0); for (auto i = 0; i < count; ++i) { NoteExpressionTypeInfo info; if (nExpCtrler->getNoteExpressionInfo (0, 0, i, info) != kResultTrue) continue; for (auto index = 0; index < 3; ++index) { if (mpeHandlerContext.mpeMap[index] != info.typeId) continue; mpeHandlerContext.noteExpValueDescMap[index] = info.valueDesc; break; } } } } } } //------------------------------------------------------------------------ - (BOOL)enableMPESupport:(BOOL)state { if (!mpeProcessor) return NO; mpeHandlerContext.enableMPEProcessing.store (state); return YES; } //------------------------------------------------------------------------ - (BOOL)setMPEInputDeviceMasterChannel:(NSInteger)masterChannel memberBeginChannel:(NSInteger)memberBeginChannel memberEndChannel:(NSInteger)memberEndChannel { if (!mpeProcessor) return NO; auto setup = mpeProcessor->getSetup (); setup.masterChannel = static_cast (masterChannel); setup.memberChannelBegin = static_cast (memberBeginChannel); setup.memberChannelEnd = static_cast (memberEndChannel); mpeProcessor->changeSetup (setup); return YES; } //------------------------------------------------------------------------ - (void)dealloc { if (audioProcessor) { FUnknownPtr combined (audioProcessor); if (!combined) { FUnknownPtr controllerConnectionPoint (_editcontroller); FUnknownPtr processorConnectionPoint (audioProcessor); if (controllerConnectionPoint && processorConnectionPoint) { controllerConnectionPoint->disconnect (processorConnectionPoint); processorConnectionPoint->disconnect (controllerConnectionPoint); } } } if (midiMapping) { midiMapping->release (); midiMapping = nullptr; } if (_editcontroller) { _editcontroller->setComponentHandler (nullptr); uint32 refCount = _editcontroller->addRef (); if (refCount == 2) _editcontroller->terminate (); _editcontroller->release (); _editcontroller->release (); _editcontroller = nil; } if (audioProcessor) { FUnknownPtr (audioProcessor)->terminate (); audioProcessor = nullptr; } if (parameterObserverToken != nullptr) { [parameterTreeVar removeParameterObserver:parameterObserverToken]; parameterObserverToken = nullptr; } if (timer) { [timer invalidate]; timer = nullptr; } } //------------------------------------------------------------------------ // MARK: Helper Functions //------------------------------------------------------------------------ - (NSString*)getParameterStringFromValue:(int)tag value:(AUValue)value { String128 paramString; if (_editcontroller->getParamStringByValue (tag, value, paramString) == kResultTrue) { return createCFStringFromString128 (paramString); } return @""; } //------------------------------------------------------------------------ - (AUValue)getParameterValueFromString:(int)tag string:(NSString*)nsString { ParamValue outValue; CFStringRef cfString = (__bridge CFStringRef)nsString; String128 string128; CFStringGetCharacters (cfString, CFRangeMake (0, std::max (128, CFStringGetLength (cfString))), (UniChar*)string128); _editcontroller->getParamValueByString (tag, string128, outValue); return (float)outValue; } //------------------------------------------------------------------------ - (void)loadVst { FUnknownPtr factory (owned (GetPluginFactory ())); if (factory) { // find first audio processor class for (int32 i = 0; i < factory->countClasses (); i++) { PClassInfo2 ci; if (factory->getClassInfo2 (i, &ci) == kResultTrue) { if (strcmp (ci.category, kVstAudioEffectClass) == 0) { IAudioProcessor* proc = nullptr; if (factory->createInstance (ci.cid, IAudioProcessor::iid, (void**)&proc) == kResultTrue) { audioProcessor = owned (proc); std::string_view plugCategory (ci.subCategories); std::string_view instrumentStr ("instrument"); auto it = std::search (plugCategory.begin (), plugCategory.end (), instrumentStr.begin (), instrumentStr.end (), [] (auto ch1, auto ch2) { return std::toupper (ch1) == std::toupper (ch2); }); if (it != plugCategory.end ()) isInstrument = true; break; } } } } } if (audioProcessor) { if (FUnknownPtr (audioProcessor)->initialize (hostAppContext.unknownCast ()) != kResultTrue) return; if (audioProcessor->queryInterface (IEditController::iid, (void**)&_editcontroller) != kResultTrue) { FUnknownPtr component (audioProcessor); if (component) { TUID ccid; if (component->getControllerClassId (ccid) == kResultTrue) { if (factory->createInstance (ccid, IEditController::iid, (void**)&_editcontroller) == kResultTrue) { if (_editcontroller->initialize (hostAppContext.unknownCast ()) != kResultTrue) { _editcontroller->release (); _editcontroller = nullptr; return; } FUnknownPtr controllerConnectionPoint (_editcontroller); FUnknownPtr processorConnectionPoint (audioProcessor); if (controllerConnectionPoint && processorConnectionPoint) { controllerConnectionPoint->connect (processorConnectionPoint); processorConnectionPoint->connect (controllerConnectionPoint); } NSMutableData* processorData = [[NSMutableData alloc] init]; NSMutableDataIBStream stream (processorData); if (FUnknownPtr (audioProcessor)->getState (&stream) == kResultTrue) { stream.seek (0, IBStream::kIBSeekSet); _editcontroller->setComponentState (&stream); } } } } } } } //------------------------------------------------------------------------ - (void)initializeBusses { NSMutableArray* outBusArray = [[NSMutableArray alloc] init]; NSMutableArray* inBusArray = [[NSMutableArray alloc] init]; if (_editcontroller) { _editcontroller->setComponentHandler (&componentHelper); FUnknownPtr component (audioProcessor); int32 inputBusCount = component->getBusCount (kAudio, kInput); int32 outputBusCount = component->getBusCount (kAudio, kOutput); // create input busses [self createBusses:true busCount:inputBusCount busArray:inBusArray component:component]; // create output busses [self createBusses:false busCount:outputBusCount busArray:outBusArray component:component]; processData.prepare (*component, 0, kSample32); midiOutCount = component->getBusCount (kEvent, kOutput); _editcontroller->queryInterface (IMidiMapping::iid, (void**)&midiMapping); } // create the input and output bus arrays (AUAudioUnitBusArray) _inputBusArray = [[AUAudioUnitBusArray alloc] initWithAudioUnit:self busType:AUAudioUnitBusTypeInput busses:inBusArray]; // create the input and output bus arrays. _outputBusArray = [[AUAudioUnitBusArray alloc] initWithAudioUnit:self busType:AUAudioUnitBusTypeOutput busses:outBusArray]; } //------------------------------------------------------------------------ - (void)createBusses:(bool)isInput busCount:(int)busCount busArray:(NSMutableArray*)busArray component:(FUnknownPtr)component { SpeakerArrangement sa; int inputOrOutput = isInput ? kInput : kOutput; for (int32 busNum = 0; busNum < busCount; busNum++) { AUAudioUnitBus* bus; AVAudioFormat* customFormat; if (audioProcessor->getBusArrangement (inputOrOutput, busNum, sa) == kResultTrue) { customFormat = [[AVAudioFormat alloc] initStandardFormatWithSampleRate:sampleRate channels:SpeakerArr::getChannelCount (sa)]; bus = [[AUAudioUnitBus alloc] initWithFormat:customFormat error:nil]; bus.maximumChannelCount = customFormat.channelCount; } BusInfo info {}; if (component->getBusInfo (kAudio, inputOrOutput, busNum, info) == kResultTrue) { bus.name = createCFStringFromString128 (info.name); } component->activateBus (kAudio, isInput ? kInput : kOutput, busNum, true); if (bus != nil) [busArray addObject:bus]; } } //------------------------------------------------------------------------ - (void)allocateBusBuffers { FUnknownPtr component (audioProcessor); for (int i = 0; i < component->getBusCount (kAudio, kInput); i++) { BufferedInputBus bus; bus.init (_inputBusArray[i].format, _inputBusArray[i].format.channelCount); bus.allocateRenderResources (self.maximumFramesToRender); inputBusBuffers.push_back (bus); } for (int i = 0; i < component->getBusCount (kAudio, kOutput); i++) { BufferedOutputBus bus; bus.init (_outputBusArray[i].format, _outputBusArray[i].format.channelCount); bus.allocateRenderResources (self.maximumFramesToRender); outputBusBuffers.push_back (bus); } // if no input bus create empty one if (_inputBusArray.count == 0) { AVAudioFormat* defaultFormat = [[AVAudioFormat alloc] initStandardFormatWithSampleRate:sampleRate channels:2]; BufferedInputBus bus; bus.init (defaultFormat, 2); bus.allocateRenderResources (self.maximumFramesToRender); inputBusBuffers.push_back (bus); } } - (void)onLatencyChanged { [self willChangeValueForKey:@"latency"]; [self didChangeValueForKey:@"latency"]; } //------------------------------------------------------------------------ - (void)onParamTitlesChanged { [self willChangeValueForKey:@"parameterTree"]; [self updateParameters]; [self didChangeValueForKey:@"parameterTree"]; } //------------------------------------------------------------------------ - (void)updateParameters { BOOL initParams = overviewParams ? NO : YES; if (parameterTreeVar && parameterObserverToken != nullptr) { [parameterTreeVar removeParameterObserver:parameterObserverToken]; parameterObserverToken = nullptr; } // AUv3 Parameter Initialization overviewParams = [[NSMutableArray alloc] init]; NSMutableArray* paramArray = [[NSMutableArray alloc] init]; NSMutableArray* paramArrayWithHierarchy = [[NSMutableArray alloc] init]; // create parameters [self createParameters:paramArrayWithHierarchy paramArray:paramArray initParams:initParams]; // create the paramArray with AUParameterGroups for (int32 i = 0; i < [paramArrayWithHierarchy count]; i++) { if (i == 0) { for (int32 j = 0; j < [[paramArrayWithHierarchy objectAtIndex:i] count]; j++) [paramArray addObject:paramArrayWithHierarchy[i][j]]; } else { auto& str = parameterGroups.at (i - 1); NSString* groupName = [NSString stringWithCharacters:reinterpret_cast (str.data ()) length:str.size ()]; AUParameterGroup* newGroup = [AUParameterTree createGroupWithIdentifier:groupName name:groupName children:paramArrayWithHierarchy[i]]; [paramArray addObject:newGroup]; } } // create the parameter tree parameterTreeVar = [AUParameterTree createTreeWithChildren:paramArray]; // implementorValueObserver is called when a parameter changes value. __weak AUv3Wrapper* weakSelf = self; parameterTreeVar.implementorValueObserver = ^(AUParameter* param, AUValue value) { [weakSelf setParameter:(int)param.address value:value]; }; // A function to provide string representations of parameter values. parameterTreeVar.implementorStringFromValueCallback = ^(AUParameter* param, const AUValue* __nullable valuePtr) { AUValue value = valuePtr == nil ? param.value : *valuePtr; return [weakSelf getParameterStringFromValue:(int)param.address value:value]; }; parameterObserverToken = [parameterTreeVar tokenByAddingParameterObserver:^(AUParameterAddress address, AUValue value) { dispatch_async (dispatch_get_main_queue (), ^{ __strong AUv3Wrapper* strongSelf = weakSelf; [strongSelf setControllerParameter:(int)address value:value]; }); }]; // A function to provide the parameter values of string representations. parameterTreeVar.implementorValueFromStringCallback = ^(AUParameter* param, NSString* string) { return [weakSelf getParameterValueFromString:(int)param.address string:string]; }; } //------------------------------------------------------------------------ - (void)createParameters:(NSMutableArray*)paramArrayWithHierarchy paramArray:(NSMutableArray*)paramArray initParams:(BOOL)initParams { // for each VST3 parameter int32 parameterCount = _editcontroller->getParameterCount (); for (int32 i = 0; i < parameterCount; i++) { ParameterInfo pi {}; _editcontroller->getParameterInfo (i, pi); if (pi.flags & ParameterInfo::kIsBypass) { bypassParamID = pi.id; } else { // Build parameter group if possible, maps to the AUParameterGroup Node in the // parameterTree int32 groupIdx = [self buildParameterGroup:pi]; // create identifier for parameter NSString* identifier = [NSString stringWithString:[NSString stringWithFormat:@"%d", pi.id]]; NSString* name = createCFStringFromString128 (pi.title); NSString* unitName = createCFStringFromString128 (pi.units); AUParameterAddress address = static_cast (pi.id); // create flags for parameter AudioUnitParameterOptions flagsToSet = kAudioUnitParameterFlag_ValuesHaveStrings | kAudioUnitParameterFlag_IsReadable; if (!(pi.flags & ParameterInfo::kIsReadOnly)) flagsToSet |= kAudioUnitParameterFlag_IsWritable; if (!(pi.flags & ParameterInfo::kCanAutomate)) flagsToSet |= kAudioUnitParameterFlag_NonRealTime; if (pi.stepCount == 1) flagsToSet = kAudioUnitParameterUnit_Boolean; // create the parameter AUParameter* sPar = [AUParameterTree createParameterWithIdentifier:identifier name:name address:address min:0.0 max:1.0 unit:kAudioUnitParameterUnit_CustomUnit unitName:unitName flags:flagsToSet valueStrings:nil dependentParameters:nil]; if (initParams) { // initialize the parameter values sPar.value = pi.defaultNormalizedValue; [self setParameter:pi.id value:pi.defaultNormalizedValue]; [self setControllerParameter:pi.id value:pi.defaultNormalizedValue]; } else { sPar.value = _editcontroller->getParamNormalized (pi.id); } // add parameter to the paramArrayWithHierarchy (with hierarchy/AUParameterGroups) while ([paramArrayWithHierarchy count] <= groupIdx) [paramArrayWithHierarchy addObject:[[NSMutableArray alloc] init]]; NSUInteger groupOfParam = (NSUInteger)groupIdx; [[paramArrayWithHierarchy objectAtIndex:groupOfParam] addObject:sPar]; [overviewParams addObject:[NSNumber numberWithUnsignedLongLong:address]]; } } } //------------------------------------------------------------------------ - (int32)buildParameterGroup:(ParameterInfo)pi { int32 groupIdx = 0; // Zero means parameter is on top level node of parameter tree FUnknownPtr unitInfoController (_editcontroller); if (unitInfoController) { if (unitInfos.empty ()) buildUnitInfos (unitInfoController, unitInfos); std::u16string fullParamName; constexpr auto separator = STR ("."); bool insertSeparator = false; UnitInfoMap::const_iterator it = unitInfos.find (pi.unitId); while (it != unitInfos.end () && it->second.id != kRootUnitId) { std::u16string_view unitName (it->second.name); if (unitName.size () > 0) { if (insertSeparator) fullParamName.insert (0, separator); insertSeparator = true; fullParamName.insert (0, unitName); } it = unitInfos.find (it->second.parentUnitId); } if (!fullParamName.empty ()) { bool insertGroup = true; groupIdx = 1; for (int32 i = 0; i < parameterGroups.size (); i++) { const auto& str = parameterGroups.at (i); if (str == fullParamName) { insertGroup = false; break; } ++groupIdx; } if (insertGroup) parameterGroups.push_back (fullParamName); } } return groupIdx; } //------------------------------------------------------------------------ - (void)setupProcessing { if (audioProcessor && _editcontroller) { FUnknownPtr component (audioProcessor); // after set Bus Arrangement, the channelbuffers may need to be reallocated -> hence the // second prepare! processData.prepare (*component, 0, kSample32); ProcessSetup ps; ps.sampleRate = sampleRate; ps.maxSamplesPerBlock = self.maximumFramesToRender; ps.symbolicSampleSize = kSample32; ps.processMode = self.isRenderingOffline ? kOffline : kRealtime; audioProcessor->setupProcessing (ps); component->setActive (true); audioProcessor->setProcessing (true); } } //------------------------------------------------------------------------ - (bool)getProgramListAndUnit:(int32)midiChannel unitId:(UnitID&)unitId programListId:(ProgramListID&)programListId { programListId = kNoProgramListId; unitId = -1; IUnitInfo* unitInfo = NULL; if (_editcontroller && _editcontroller->queryInterface (IUnitInfo::iid, (void**)&unitInfo) == kResultTrue && unitInfo) { if (unitInfo->getUnitByBus (kEvent, kInput, 0, midiChannel, unitId) == kResultTrue) { int32 unitCount = unitInfo->getUnitCount (); for (int32 i = 0; i < unitCount; i++) { UnitInfo unitInfoStruct {}; if (unitInfo->getUnitInfo (i, unitInfoStruct) == kResultTrue) { if (unitId == unitInfoStruct.id) { programListId = unitInfoStruct.programListId; unitInfo->release (); return programListId != kNoProgramListId; } } } } unitInfo->release (); } return false; } //------------------------------------------------------------------------ - (void)loadPresetList { std::vector programParameters; bool noPresets = true; // for each VST3 parameter int32 parameterCount = _editcontroller->getParameterCount (); for (int32 i = 0; i < parameterCount; i++) { ParameterInfo pi {}; _editcontroller->getParameterInfo (i, pi); // do not register bypass if ((pi.flags & ParameterInfo::kIsBypass) != 0) { continue; } else if ((pi.flags & ParameterInfo::kIsProgramChange) != 0) { // see if parameter is programChange noPresets = false; programParameters.push_back (pi); } } if (noPresets) return; // assign programChanges for (int32 midiChannel = 0; midiChannel < 16; ++midiChannel) { mpeHandlerContext.programChangeParameters[midiChannel] = kNoParamId; UnitID unitId; ProgramListID programListId; if (![self getProgramListAndUnit:midiChannel unitId:unitId programListId:programListId]) continue; for (int32 i = 0; i < (int32)programParameters.size (); i++) { const ParameterInfo& paramInfo = programParameters.at (i); if (paramInfo.unitId == unitId) { mpeHandlerContext.programChangeParameters[midiChannel] = paramInfo.id; mpeHandlerContext.programChangeParameterStepCount[midiChannel] = paramInfo.stepCount; break; } } } FUnknownPtr unitInfoController (_editcontroller); factoryPresetsVar = [[NSMutableArray alloc] init]; // let's see if there's a preset list (take the first one) if (!unitInfoController) return; ProgramListInfo programListInfo; if (unitInfoController->getProgramListInfo (0, programListInfo) != kResultTrue) return; factoryProgramChangedID = -1; numPresets = programListInfo.programCount; if (programListInfo.programCount > 0) { UnitID unitId = -1; // find the unit supporting this ProgramList IUnitInfo* unitInfo = NULL; if (_editcontroller->queryInterface (IUnitInfo::iid, (void**)&unitInfo) == kResultTrue && unitInfo) { int32 unitCount = unitInfo->getUnitCount (); for (int32 i = 0; i < unitCount; i++) { UnitInfo unitInfoStruct {}; if (unitInfo->getUnitInfo (i, unitInfoStruct) == kResultTrue) { if (programListInfo.id == unitInfoStruct.programListId) { unitId = unitInfoStruct.id; break; } } } unitInfo->release (); } if (unitId != -1) { // find the associated ProgramChange parameter ID for (int32 i = 0; i < (int32)programParameters.size (); i++) { const ParameterInfo& paramInfo = programParameters.at (i); if (paramInfo.unitId == unitId) { factoryProgramChangedID = paramInfo.id; break; } } if (factoryProgramChangedID != -1) { for (int32 i = 0; i < programListInfo.programCount; i++) { String128 name; if (unitInfoController->getProgramName (programListInfo.id, i, name) != kResultTrue) { name[0] = 0; } AUAudioUnitPreset* preset = [[AUAudioUnitPreset alloc] init]; [preset setName:createCFStringFromString128 (name)]; [preset setNumber:static_cast (i)]; [factoryPresetsVar addObject:preset]; } } } } } //------------------------------------------------------------------------ - (void)syncParameterValues { if (!_editcontroller) return; int32 parameterCount = _editcontroller->getParameterCount (); for (int32 i = 0; i < parameterCount; i++) { ParameterInfo pi; _editcontroller->getParameterInfo (i, pi); if (pi.flags & ParameterInfo::kIsBypass) { bypassParamID = pi.id; } else { ParamValue value = _editcontroller->getParamNormalized (pi.id); // set the AU parameter value AUParameter* parameterToChange = [parameterTreeVar parameterWithAddress:pi.id]; parameterToChange.value = value; } } } //------------------------------------------------------------------------ - (void)setParameter:(int)tag value:(double)value { if (tag == factoryProgramChangedID && numPresets > 0) { // load factory preset here float normalizedValue = (float)value / (float)numPresets; transferParamChanges.addChange (factoryProgramChangedID, normalizedValue, 0); } transferParamChanges.addChange (tag, value, 0); } //------------------------------------------------------------------------ - (void)setControllerParameter:(int)tag value:(double)value { if (_editcontroller && tag != factoryProgramChangedID) _editcontroller->setParamNormalized (tag, value); } //------------------------------------------------------------------------ - (void)performEdit:(int)tag value:(double)value { AUParameter* parameterToChange = [parameterTreeVar parameterWithAddress:tag]; if (parameterObserverToken != nullptr) [parameterToChange setValue:value originator:parameterObserverToken]; else [parameterToChange setValue:value]; } //------------------------------------------------------------------------ - (void)onTimer { ParamID pid; ParamValue value; int32 sampleOffset; while (outputParamTransfer.getNextChange (pid, value, sampleOffset)) { _editcontroller->setParamNormalized (pid, value); AUParameter* parameterToChange = [parameterTreeVar parameterWithAddress:pid]; parameterToChange.value = value; } if (!isBypassed) return; ProcessData bypassData = processData; bypassData.numSamples = 0; inputParamChanges.clearQueue (); transferParamChanges.transferChangesTo (inputParamChanges); if (inputParamChanges.getParameterCount () > 0) { audioProcessor->process (bypassData); outputParamTransfer.transferChangesFrom (outputParamChanges); outputParamChanges.clearQueue (); } } //------------------------------------------------------------------------ - (BOOL)validateChannelConfig { FUnknownPtr component (audioProcessor); int32 inputBusCount = component->getBusCount (kAudio, kInput); int32 outputBusCount = component->getBusCount (kAudio, kOutput); SpeakerArrangement inputs[inputBusCount]; SpeakerArrangement outputs[outputBusCount]; int32 maxBusCount = std::max (inputBusCount, outputBusCount); BOOL didChannelConfigPass = YES; for (int32 i = 0; i < maxBusCount; i++) { int32 inChannelCount = 0; int32 outChannelCount = 0; if (inputBusCount > i) inChannelCount = _outputBusArray[i].format.channelCount; if (outputBusCount > i) outChannelCount = _outputBusArray[i].format.channelCount; didChannelConfigPass = [self validateChannelPair:inChannelCount inChannelsOut:outChannelCount info:channelCapabilitiesArray numChanInfo:([channelCapabilitiesArray count] / 2)]; } for (int32 element = 0; element < inputBusCount; element++) inputs[element] = numChannelsToSpeakerArrangement (_inputBusArray[element].format.channelCount); for (int32 element = 0; element < outputBusCount; element++) outputs[element] = numChannelsToSpeakerArrangement (_outputBusArray[element].format.channelCount); if (audioProcessor->setBusArrangements (inputs, inputBusCount, outputs, outputBusCount) != kResultTrue) didChannelConfigPass = NO; return didChannelConfigPass; } //------------------------------------------------------------------------ - (BOOL)validateChannelPair:(int)inChannelsIn inChannelsOut:(int)inChannelsOut info:(NSArray*)info numChanInfo:(long)numChanInfo { // we've the following cases (some combinations) to test here: /* >0 An explicit number of channels on either side 0 that side (generally input!) has no elements -1 wild card: -1,-1 any num channels as long as same channels on in and out -1,-2 any num channels channels on in and out - special meaning -2+ indicates total num channs AU can handle - elements configurable to any num channels, - element count in scope must be writable */ // now chan layout can contain -1 for either scope (ie. doesn't care) for (unsigned int i = 0; i < numChanInfo; ++i) { int inputValue = (int)[info[(i * 2)] integerValue]; int outputValue = (int)[info[(i * 2) + 1] integerValue]; // less than zero on both sides - check for special attributes if ((inputValue < 0) && (outputValue < 0)) { // these are our wild card matches if (inputValue == -1 && outputValue == -1) { if (inChannelsIn && inChannelsOut) { if (inChannelsOut == inChannelsIn) return true; } else return true; // if one of these is zero, then a -1 means any } else if ((inputValue == -1 && outputValue == -2) || (inputValue == -2 && outputValue == -1)) { return true; } // these are our total num channels matches // element count MUST be writable else { bool outWrite = false; bool inWrite = false; // IsElementCountWritable (kAudioUnitScope_Output, outWrite); // IsElementCountWritable (kAudioUnitScope_Input, inWrite); if (inWrite && outWrite) { if ((inChannelsOut <= abs (outputValue)) && (inChannelsIn <= abs (inputValue))) return true; } } } // special meaning on input, specific num on output else if (inputValue < 0) { if (outputValue == inChannelsOut) { // can do any in channels if (inputValue == -1) { return true; } // total chans on input else { bool inWrite = false; // IsElementCountWritable (kAudioUnitScope_Input, inWrite); if (inWrite && (inChannelsIn <= abs (inputValue))) return true; } } } // special meaning on output, specific num on input else if (outputValue < 0) { if (inputValue == inChannelsIn) { // can do any out channels if (outputValue == -1) { return true; } // total chans on output else { bool outWrite = false; // IsElementCountWritable (kAudioUnitScope_Output, outWrite); if (outWrite && (inChannelsOut <= abs (outputValue))) { return true; } } } } // both chans in struct >= 0 - thus has to explicitly match else if ((inputValue == inChannelsIn) && (outputValue == inChannelsOut)) { return true; } // now check to see if a wild card on the args (inChannelsIn or inChannelsOut chans is zero) // is found // tells us to match just one side of the scopes else if (inChannelsIn == 0) { if (outputValue == inChannelsOut) return true; } else if (inChannelsOut == 0) { if (inputValue == inChannelsIn) return true; } } return false; } //------------------------------------------------------------------------ // MARK: AUAudioUnit Overrides //------------------------------------------------------------------------ - (AUParameterTree*)parameterTree { return parameterTreeVar; } //------------------------------------------------------------------------ - (NSArray*)factoryPresets { return factoryPresetsVar; } //------------------------------------------------------------------------ - (NSArray*)channelCapabilities { return channelCapabilitiesArray; } //------------------------------------------------------------------------ - (AUAudioUnitBusArray*)inputBusses { return _inputBusArray; } //------------------------------------------------------------------------ - (AUAudioUnitBusArray*)outputBusses { return _outputBusArray; } //------------------------------------------------------------------------ - (BOOL)canProcessInPlace { return canProcessInPlaceValue; } //------------------------------------------------------------------------ - (BOOL)isRenderingOffline { return renderingOfflineValue; } //------------------------------------------------------------------------ - (BOOL)supportsMPE { if (_editcontroller) { FUnknownPtr nec (_editcontroller); if (nec) return YES; } return NO; } //------------------------------------------------------------------------ - (void)setRenderingOffline:(BOOL)renderingOffline { renderingOfflineValue = renderingOffline; } //------------------------------------------------------------------------ - (NSTimeInterval)latency { if (audioProcessor) return (audioProcessor->getLatencySamples () / sampleRate); return 0.0; } //------------------------------------------------------------------------ - (NSTimeInterval)tailTime { if (audioProcessor) return (audioProcessor->getTailSamples () / sampleRate); return 0.0; } //------------------------------------------------------------------------ - (BOOL)shouldChangeToFormat:(AVAudioFormat*)format forBus:(AUAudioUnitBus*)bus { // implement ChangeStreamFormat from AUv2 Wrapper here return [super shouldChangeToFormat:format forBus:bus]; } //------------------------------------------------------------------------ - (NSArray*)parametersForOverviewWithCount:(NSInteger)count { NSInteger n = [overviewParams count]; if (count >= n) return overviewParams; NSMutableArray* overviewParamsWithRange = [[NSMutableArray alloc] initWithArray:overviewParams]; NSRange range = NSMakeRange (count, (n - count)); [overviewParamsWithRange removeObjectsInRange:range]; return overviewParamsWithRange; } //------------------------------------------------------------------------ - (AUAudioUnitPreset*)currentPreset { if (currentPreset.number >= 0) // factory preset return [factoryPresetsVar objectAtIndex:currentFactoryPresetIndex]; else // custom preset return currentPreset; } //------------------------------------------------------------------------ - (void)setCurrentPreset:(AUAudioUnitPreset*)presentPreset { if (nil == presentPreset) return; if (executeOnMainThreadSync (^{ [self setCurrentPreset:presentPreset]; })) return; // if it is a factory preset if (presentPreset.number >= 0) { for (AUAudioUnitPreset* factoryPreset in factoryPresetsVar) { if (presentPreset.number == factoryPreset.number) { if (numPresets > 0) { float normalizedValue = (float)presentPreset.number / (float)numPresets; transferParamChanges.addChange (factoryProgramChangedID, normalizedValue, 0); _editcontroller->setParamNormalized (factoryProgramChangedID, normalizedValue); } // set factory preset as current currentPreset = presentPreset; currentFactoryPresetIndex = factoryPreset.number; NSLog (@"currentPreset Factory: %ld, %@\n", (long)currentFactoryPresetIndex, factoryPreset.name); break; } } } else if (nil != presentPreset.name) // set custom preset as current currentPreset = presentPreset; } //------------------------------------------------------------------------ - (NSDictionary*)fullState { // should flush parameters of VST to save correct state (when not in playback mode) __block NSDictionary* mtResult = nil; if (executeOnMainThreadSync (^{ mtResult = [self fullState]; })) { return mtResult; } auto* result = [NSMutableDictionary new]; if (auto* superDict = [super fullState]) [result addEntriesFromDictionary:superDict]; NSMutableData* processorData = [[NSMutableData alloc] init]; NSMutableData* controllerData = [[NSMutableData alloc] init]; if (audioProcessor) { NSMutableDataIBStream stream (processorData); if (FUnknownPtr (audioProcessor)->getState (&stream) != kResultTrue) [processorData setLength:0]; } if (_editcontroller) { NSMutableDataIBStream stream (controllerData); if (_editcontroller->getState (&stream) != kResultTrue) [controllerData setLength:0]; } [result setObject:processorData forKey:@"Processor State"]; [result setObject:controllerData forKey:@"Controller State"]; return result; } //------------------------------------------------------------------------ - (void)setFullState:(NSDictionary*)newFullState { if (newFullState == nullptr) return; if (executeOnMainThreadSync (^{ [self setFullState:newFullState]; })) return; bool fromProject = false; fullStateVar = newFullState; if (!(audioProcessor && _editcontroller)) return; // Note: the bypass state is not part of the AU state bool wasBypassed = false; if (bypassParamID != -1) wasBypassed = _editcontroller->getParamNormalized (bypassParamID) >= 0.5 ? true : false; NSMutableDictionary* modifiedState = [[NSMutableDictionary alloc] init]; [modifiedState addEntriesFromDictionary:newFullState]; NSString* nsPresetKey = [[NSString alloc] initWithUTF8String:kAUPresetDataKey]; [modifiedState removeObjectForKey:nsPresetKey]; NSData* processorData = [modifiedState valueForKey:@"Processor State"]; int processLen = (int)[processorData length]; if (processLen == 0) return; std::u16string projectStr; if (fromProject) projectStr = VST3::StringConvert::convert (Vst::StateType::kProject); if (processorData) { NSDataIBStream stream (processorData); if (fromProject) { stream.getAttributes ()->setString (Vst::PresetAttributes::kStateType, VST3::toTChar (projectStr)); } FUnknownPtr (audioProcessor)->setState (&stream); } NSData* controllerData = [modifiedState valueForKey:@"Controller State"]; if (controllerData) { NSDataIBStream processorStream (processorData); _editcontroller->setComponentState (&processorStream); NSDataIBStream stream (controllerData); if (fromProject) { stream.getAttributes ()->setString (Vst::PresetAttributes::kStateType, VST3::toTChar (projectStr)); } _editcontroller->setState (&stream); [self syncParameterValues]; } if (bypassParamID != -1) { transferParamChanges.addChange (bypassParamID, wasBypassed ? 1 : 0, 0); _editcontroller->setParamNormalized (bypassParamID, wasBypassed ? 1 : 0); } } //------------------------------------------------------------------------ - (BOOL)allocateRenderResourcesAndReturnError:(NSError* __autoreleasing*)outError { __block BOOL result = NO; if (executeOnMainThreadSync ( ^{ result = [self allocateRenderResourcesAndReturnError:outError]; })) return result; if (![super allocateRenderResourcesAndReturnError:outError]) return NO; if (![self validateChannelConfig]) { if (outError) { *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:kAudioUnitErr_FormatNotSupported userInfo:nil]; } // Notify superclass that initialization was not successful self.renderResourcesAllocated = NO; return NO; } [self allocateBusBuffers]; [self setupProcessing]; if (self.musicalContextBlock) musicalContext = self.musicalContextBlock; else musicalContext = nil; if (self.transportStateBlock) transportContext = self.transportStateBlock; else transportContext = nil; return YES; } //------------------------------------------------------------------------ - (void)deallocateRenderResources { if (executeOnMainThreadSync (^{ [self deallocateRenderResources]; })) return; musicalContext = nullptr; transportContext = nullptr; for (int i = 0; i > inputBusBuffers.size (); i++) inputBusBuffers.at (i).deallocateRenderResources (); for (int i = 0; i > outputBusBuffers.size (); i++) outputBusBuffers.at (i).deallocateRenderResources (); inputBusBuffers.clear (); outputBusBuffers.clear (); if (audioProcessor) { audioProcessor->setProcessing (false); FUnknownPtr component (audioProcessor); component->setActive (false); } [super deallocateRenderResources]; } //------------------------------------------------------------------------ - (AUInternalRenderBlock)internalRenderBlock { return ^AUAudioUnitStatus ( AudioUnitRenderActionFlags* actionFlags, const AudioTimeStamp* timestamp, AVAudioFrameCount frameCount, NSInteger outputBusNumber, AudioBufferList* outputData, const AURenderEvent* realtimeEventListHead, AURenderPullInputBlock pullInputBlock) { // process events/params for (const AURenderEvent* event = realtimeEventListHead; event != nullptr; event = event->head.next) { switch (event->head.eventType) { case AURenderEventMIDI: case AURenderEventMIDISysEx: { mpeHandler.process (mpeHandlerContext, &event->MIDI, timestamp); break; } case AURenderEventParameter: case AURenderEventParameterRamp: { componentHelper.performEdit ((int)event->parameter.parameterAddress, event->parameter.value); } break; default: break; } } // prepare contexts RenderProcessContext renderProcessContext = RenderProcessContext (); renderProcessContext.musicalContext = musicalContext; renderProcessContext.transportContext = transportContext; renderProcessContext.processContext = &(processContext); renderProcessContext.sampleRate = sampleRate; renderProcessContext.timestamp = timestamp; renderProcessContext.updateProcessContext (renderProcessContext); inputParamChanges.clearQueue (); transferParamChanges.transferChangesTo (inputParamChanges); processData.numSamples = frameCount; if (frameCount > 0) { FUnknownPtr component (audioProcessor); int32 inputBusCount = component->getBusCount (kAudio, kInput); int32 outputBusCount = component->getBusCount (kAudio, kOutput); AudioUnitRenderActionFlags pullFlags = 0; // pull input buffer for (int32 i = 0; i < inputBusCount; i++) { UInt32 byteSize = frameCount * sizeof (float); if (pullInputBlock == nullptr || inputBusBuffers.at (i).pullInput (&pullFlags, timestamp, frameCount, i, pullInputBlock) != noErr) { for (int32 channel = 0; channel < inputBusBuffers.at (i).bus.format.channelCount; channel++) memset ( inputBusBuffers.at (i).mutableAudioBufferList->mBuffers[channel].mData, 0, byteSize); } if (actionFlags != nullptr && (*actionFlags & kAudioUnitRenderAction_OutputIsSilence) != 0) { for (int32 channel = 0; channel < inputBusBuffers.at (i).bus.format.channelCount; channel++) memset ( inputBusBuffers.at (i).mutableAudioBufferList->mBuffers[channel].mData, 0, byteSize); } } // prepare output buffer for (int32 i = 0; i < outputBusCount; i++) outputBusBuffers.at (i).prepareOutputBufferList (outputData, frameCount, i == outputBusNumber ? true : false); if (outputData->mBuffers[0].mData == nullptr) { for (UInt32 channel = 0; channel < outputData->mNumberBuffers; channel++) outputData->mBuffers[channel].mData = inputBusBuffers.at (outputBusNumber) .mutableAudioBufferList->mBuffers[channel] .mData; } // copy input buffers for (int32 i = 0; i < inputBusCount; i++) { AVAudioChannelCount channelCount = inputBusBuffers.at (i).bus.format.channelCount; processData.inputs[i].numChannels = int32 (channelCount); for (int32 channel = 0; channel < channelCount; channel++) processData.inputs[i].channelBuffers32[channel] = (Sample32*)inputBusBuffers.at (i) .mutableAudioBufferList->mBuffers[channel] .mData; } // copy output buffers for (int32 i = 0; i < outputBusCount; i++) { AVAudioChannelCount channelCount = outputBusBuffers.at (i).bus.format.channelCount; processData.outputs[i].numChannels = int32 (channelCount); for (int32 channel = 0; channel < channelCount; channel++) { if (i == outputBusNumber) { processData.outputs[i].channelBuffers32[channel] = (Sample32*)outputData->mBuffers[channel].mData; } else { processData.outputs[i].channelBuffers32[channel] = (Sample32*)outputBusBuffers.at (i) .mutableAudioBufferList->mBuffers[channel] .mData; } } } // process audio audioProcessor->process (processData); outputParamTransfer.transferChangesFrom (outputParamChanges); outputParamChanges.clearQueue (); inputEvents.clear (); pullFlags &= ~kAudioUnitRenderAction_OutputIsSilence; } return noErr; }; } @end //------------------------------------------------------------------------ // AUv3WrapperViewController //------------------------------------------------------------------------ #pragma mark - ViewController (implementing AUViewController and AUAudioUnitFactory) @interface AUv3WrapperViewController () { IPtr plugView; IPtr plugFrame; IPtr editController; BOOL isAttached; } @end //------------------------------------------------------------------------ // AUv3WrapperViewController //------------------------------------------------------------------------ @implementation AUv3WrapperViewController //------------------------------------------------------------------------ - (void)loadView { SMTG_IOS_MAC_VIEW* view = [[SMTG_IOS_MAC_VIEW alloc] initWithFrame:CGRectMake (0, 0, 0, 0)]; view.autoresizingMask = SMTG_IOS_MAC_AutoresizingMask_NotSizable; view.translatesAutoresizingMaskIntoConstraints = YES; [self setView:view]; #if SMTG_OS_OSX //------------------------------------------- // workaround bug of Logic/Garageband to not listen to plug-in editor size changes and using the // initial size and loading the view before creating the audio unit. (FB8971597) // // may just be a misconception of AUv3 not defining editor size and resize behaviour at all // // this also means that it is not supported to change the editor size after creation in these // hosts //------------------------------------------- @synchronized (self) { if (self.audioUnit == nil) { auto infoDict = NSBundle.mainBundle.infoDictionary; if (infoDict = infoDict[@"NSExtension"][@"NSExtensionAttributes"][@"AudioComponents"][0]) { id type = infoDict[@"type"]; id subType = infoDict[@"subtype"]; id manu = infoDict[@"manufacturer"]; AudioComponentDescription desc {}; desc.componentType = UTGetOSTypeFromString ((__bridge CFStringRef)type); desc.componentSubType = UTGetOSTypeFromString ((__bridge CFStringRef)subType); desc.componentManufacturer = UTGetOSTypeFromString ((__bridge CFStringRef)manu); self.audioUnit = [[AUv3Wrapper alloc] initWithComponentDescription:desc error:nil]; } } } #endif } //------------------------------------------------------------------------ - (void)setFrame:(CGRect)newSize { if (CGRectEqualToRect (self.view.frame, newSize)) return; self.view.frame = newSize; self.preferredContentSize = newSize.size; if (plugView) { ViewRect viewRect (0, 0, newSize.size.width, newSize.size.height); plugView->onSize (&viewRect); } } //------------------------------------------------------------------------ - (AUv3Wrapper*)getAudioUnit { return _audioUnit; } //------------------------------------------------------------------------ - (void)makePlugView { assert (pthread_main_np () != 0); FUnknownPtr ec2 (editController); if (ec2) ec2->setKnobMode (kLinearMode); // create view plugView = owned (editController->createView (ViewType::kEditor)); if (plugView) { if (plugView->isPlatformTypeSupported (SMTG_IOS_MAC_PLATFORMTYPE) == kResultTrue) { plugFrame = owned (new AUPlugFrame ([self] (ViewRect* vr) { auto viewFrame = self.view.frame; CGRect newSize = CGRectMake (viewFrame.origin.x, viewFrame.origin.y, vr->getWidth (), vr->getHeight ()); [self setFrame:newSize]; })); plugView->setFrame (plugFrame); if (plugView->attached ((__bridge void*)self.view, SMTG_IOS_MAC_PLATFORMTYPE) == kResultTrue) { isAttached = TRUE; ViewRect vr; if (plugView->getSize (&vr) == kResultTrue) { int viewWidth = vr.right - vr.left; int viewHeight = vr.bottom - vr.top; CGRect newSize = CGRectMake (0, 0, viewWidth, viewHeight); [self setFrame:newSize]; } } } else { plugView = nullptr; } } } //------------------------------------------------------------------------ - (void)setAudioUnit:(AUv3Wrapper*)audioUnit { if (audioUnit == nil) return; _audioUnit = audioUnit; editController = [_audioUnit editcontroller]; if (pthread_main_np () != 0) [self makePlugView]; else { dispatch_async (dispatch_get_main_queue (), ^{ [self makePlugView]; }); } } //------------------------------------------------------------------------ - (void)dealloc { if (plugView) { // remove plugFrame from plugView if (isAttached) { plugView->setFrame (0); plugView->removed (); } // release plugView plugView = nullptr; // release plugFrame plugFrame = nullptr; // release editController editController = nullptr; } self.audioUnit = nil; } @end vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/Shared/AUv3WrapperFactory.h000066400000000000000000000042361461511344300257760ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #import "AUv3Wrapper.h" @interface AUv3WrapperViewController (AUAudioUnitFactory) @end vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/Shared/AUv3WrapperFactory.mm000066400000000000000000000051761461511344300261640ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "AUv3WrapperFactory.h" @implementation AUv3WrapperViewController (AUAudioUnitFactory) - (AUv3Wrapper *) createAudioUnitWithComponentDescription:(AudioComponentDescription) desc error:(NSError **)error { @synchronized (self) { if (!self.audioUnit) { if (![NSThread isMainThread]) { dispatch_sync(dispatch_get_main_queue(), [&]{ self.audioUnit = [[AUv3Wrapper alloc] initWithComponentDescription:desc error:error]; }); } else { self.audioUnit = [[AUv3Wrapper alloc] initWithComponentDescription:desc error:error]; } } } return self.audioUnit; } @end vst3sdk-3.7.10.14+~4.13.3/source/vst/auv3wrapper/docAUv3.h000066400000000000000000000073471461511344300223730ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auv3wrapper/docAUv3.h // Created by : Steinberg, 07/2017. // Description : VST 3 AUv3Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /** ******************************************* \page AUv3Wrapper VST 3 - Audio Unit v3 Wrapper ******************************************* \tableofcontents \brief Helper Class wrapping a VST 3 plug-in to a Audio Unit v3 plug-in *************************** \section AUv3Introduction Introduction *************************** The VST 3 SDK comes with a helper class which wraps one VST 3 Audio Processor and Edit Controller to a AUv3 plug-in. The wrapped AudioUnit does support MPE when the VST3 plug-in has Note Expression support. You need to implement \ref Steinberg::Vst::INoteExpressionPhysicalUIMapping to map your Note Expression to the limited three expressions defined by MPE. \n *************************** \section howtoAUv3 How does it work? *************************** - Structure: - App (container app which initializes the AU through small Playback Engine) - Extension (extension which is loaded by hosts, also initializes the AU) - How-To use the VST3->AUv3 Wrapper with the sample code: - make sure you have correct code signing set up - build & run targets - How-To use the VST3->AUv3 Wrapper with your own VST Plugin: - duplicate either the folder again_auv3 or note_expression_synth_auv3 in public.sdk/samples/vst, rename it as you like and edit the CMakelist.txt to add your sources, resources and modify target names etc. - take special attention to the stuff in audiounitconfig.h and change the definitions in there. - also change the other files in that folder to your needs. -Code signing is required, but you can build and test with a developer only identity. - build & run targets */ vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/000077500000000000000000000000001461511344300204725ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/CMakeLists.txt000066400000000000000000000032311461511344300232310ustar00rootroot00000000000000if(SMTG_MAC) if (XCODE AND SMTG_COREAUDIO_SDK_PATH) string(RANDOM LENGTH 20 CocoaId) file(CONFIGURE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/au/aucocoaclassprefix.h" CONTENT "#define SMTG_AUCocoaUIBase_CLASS_NAME SMTG_AUCocoaUIBase_${CocoaId}" ) set(target auwrapper) set(${target}_sources aucarbonview.mm aucarbonview.h aucocoaview.mm aucocoaview.h ausdk.mm auwrapper.mm auwrapper.h NSDataIBStream.mm NSDataIBStream.h ) add_library(${target} STATIC ${${target}_sources} ) smtg_target_setup_universal_binary(${target}) set_target_properties(${target} PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) target_compile_features(${target} PUBLIC cxx_std_17 ) target_link_libraries(${target} PRIVATE sdk_hosting "-framework AudioUnit" "-framework CoreMIDI" "-framework AudioToolbox" "-framework CoreFoundation" "-framework Carbon" "-framework Cocoa" "-framework CoreAudio" ) target_include_directories(${target} PRIVATE "${SMTG_COREAUDIO_SDK_PATH}/**" "${CMAKE_CURRENT_BINARY_DIR}/au/" ) else() message("[SMTG] * To enable building the AudioUnit wrapper, you need to use the Xcode generator and set SMTG_COREAUDIO_SDK_PATH to the path of your installation of the CoreAudio SDK!") endif(XCODE AND SMTG_COREAUDIO_SDK_PATH) endif(SMTG_MAC)vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/NSDataIBStream.h000066400000000000000000000075601461511344300233540ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/NSDataIBStream.h // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma once #import #import "pluginterfaces/base/ibstream.h" #import "public.sdk/source/vst/hosting/hostclasses.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class NSDataIBStream : public IBStream, Vst::IStreamAttributes { public: NSDataIBStream (NSData* data, bool hideAttributes = false); virtual ~NSDataIBStream (); //---from IBStream------------------- tresult PLUGIN_API read (void* buffer, int32 numBytes, int32* numBytesRead = 0) SMTG_OVERRIDE; tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = 0) SMTG_OVERRIDE; tresult PLUGIN_API seek (int64 pos, int32 mode, int64* result = 0) SMTG_OVERRIDE; tresult PLUGIN_API tell (int64* pos) SMTG_OVERRIDE; //---from Vst::IStreamAttributes----- tresult PLUGIN_API getFileName (String128 name) SMTG_OVERRIDE; IAttributeList* PLUGIN_API getAttributes () SMTG_OVERRIDE; //------------------------------------------------------------------------ DECLARE_FUNKNOWN_METHODS protected: NSData* data; int64 currentPos; IPtr attrList; bool hideAttributes; }; //------------------------------------------------------------------------ class NSMutableDataIBStream : public NSDataIBStream { public: NSMutableDataIBStream (NSMutableData* data); virtual ~NSMutableDataIBStream (); tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = 0) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: NSMutableData* mdata; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/NSDataIBStream.mm000066400000000000000000000143211461511344300235270ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/NSDataIBStream.mm // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #include "NSDataIBStream.h" #include "pluginterfaces/vst/ivstattributes.h" #include #if __clang__ #if __has_feature(objc_arc) && __clang_major__ >= 3 #define ARC_ENABLED 1 #endif // __has_feature(objc_arc) #endif // __clang__ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ NSDataIBStream::NSDataIBStream (NSData* data, bool hideAttributes) : data (data) , currentPos (0) , hideAttributes (hideAttributes) { FUNKNOWN_CTOR if (!hideAttributes) attrList = HostAttributeList::make (); #if !ARC_ENABLED [data retain]; #endif } //------------------------------------------------------------------------ NSDataIBStream::~NSDataIBStream () { #if !ARC_ENABLED [data release]; #endif FUNKNOWN_DTOR } //------------------------------------------------------------------------ IMPLEMENT_REFCOUNT (NSDataIBStream) //------------------------------------------------------------------------ tresult PLUGIN_API NSDataIBStream::queryInterface (const TUID iid, void** obj) { QUERY_INTERFACE (iid, obj, FUnknown::iid, IBStream) QUERY_INTERFACE (iid, obj, IBStream::iid, IBStream) if (!hideAttributes) QUERY_INTERFACE (iid, obj, IStreamAttributes::iid, IStreamAttributes) *obj = 0; return kNoInterface; } //------------------------------------------------------------------------ tresult PLUGIN_API NSDataIBStream::read (void* buffer, int32 numBytes, int32* numBytesRead) { int32 useBytes = std::min (numBytes, (int32)([data length] - currentPos)); if (useBytes > 0) { [data getBytes: buffer range: NSMakeRange (currentPos, useBytes)]; if (numBytesRead) *numBytesRead = useBytes; currentPos += useBytes; return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API NSDataIBStream::write (void* buffer, int32 numBytes, int32* numBytesWritten) { return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API NSDataIBStream::seek (int64 pos, int32 mode, int64* result) { switch (mode) { case kIBSeekSet: { if (pos <= [data length]) { currentPos = pos; if (result) tell (result); return kResultTrue; } break; } case kIBSeekCur: { if (currentPos + pos <= [data length]) { currentPos += pos; if (result) tell (result); return kResultTrue; } break; } case kIBSeekEnd: { if ([data length] + pos <= [data length]) { currentPos = [data length] + pos; if (result) tell (result); return kResultTrue; } break; } } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API NSDataIBStream::tell (int64* pos) { if (pos) { *pos = currentPos; return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API NSDataIBStream::getFileName (String128 name) { return kNotImplemented; } //------------------------------------------------------------------------ IAttributeList* PLUGIN_API NSDataIBStream::getAttributes () { return attrList; } //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ NSMutableDataIBStream::NSMutableDataIBStream (NSMutableData* data) : NSDataIBStream (data, true) , mdata (data) { } //------------------------------------------------------------------------ NSMutableDataIBStream::~NSMutableDataIBStream () { [mdata setLength:currentPos]; } //------------------------------------------------------------------------ tresult PLUGIN_API NSMutableDataIBStream::write (void* buffer, int32 numBytes, int32* numBytesWritten) { [mdata replaceBytesInRange:NSMakeRange (currentPos, numBytes) withBytes:buffer]; if (numBytesWritten) *numBytesWritten = numBytes; currentPos += numBytes; return kResultTrue; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/aucarbonview.h000066400000000000000000000066411461511344300233370ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/aucarbonview.h // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma once #include "pluginterfaces/base/fplatform.h" #if !SMTG_PLATFORM_64 #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" #include "AUPublic/AUCarbonViewBase/AUCarbonViewBase.h" #pragma clang diagnostic pop #include "pluginterfaces/vst/ivsteditcontroller.h" #include "base/source/fobject.h" #include "pluginterfaces/gui/iplugview.h" namespace Steinberg { namespace Vst { class AUCarbonPlugFrame; //------------------------------------------------------------------------ class AUCarbonView : public AUCarbonViewBase, public IPlugFrame, public FObject { public: AUCarbonView (AudioUnitCarbonView auv); ~AUCarbonView (); OSStatus CreateUI (Float32 xoffset, Float32 yoffset) override; OBJ_METHODS(AUCarbonView, FObject) DEF_INTERFACES_1(IPlugFrame, FObject) REFCOUNT_METHODS(FObject) protected: tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* vr) SMTG_OVERRIDE; static OSStatus HIViewAdded (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData); IEditController* editController; AUCarbonPlugFrame* plugFrame; IPlugView* plugView; HIViewRef hiPlugView; EventHandlerRef eventHandler; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg #endif // !SMTG_PLATFORM_64 /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/aucarbonview.mm000066400000000000000000000133571461511344300235230ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/aucarbonview.mm // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #include "aucarbonview.h" #if !SMTG_PLATFORM_64 namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ AUCarbonView::AUCarbonView (AudioUnitCarbonView auv) : AUCarbonViewBase (auv) , editController (0) , plugView (0) , hiPlugView (0) { } //------------------------------------------------------------------------ AUCarbonView::~AUCarbonView () { if (plugView) { plugView->setFrame (0); plugView->removed (); plugView->release (); } } //------------------------------------------------------------------------ OSStatus AUCarbonView::HIViewAdded (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData) { UInt32 eventClass = GetEventClass (inEvent); UInt32 eventKind = GetEventKind (inEvent); if (eventClass == kEventClassControl && eventKind == kEventControlAddedSubControl) { HIViewRef newControl; if (GetEventParameter (inEvent, kEventParamControlSubControl, typeControlRef, NULL, sizeof (HIViewRef) , NULL , &newControl) == noErr) { AUCarbonView* wrapper = (AUCarbonView*)inUserData; wrapper->hiPlugView = newControl; RemoveEventHandler (wrapper->eventHandler); wrapper->eventHandler = 0; } } return eventNotHandledErr; } //------------------------------------------------------------------------ OSStatus AUCarbonView::CreateUI (Float32 xoffset, Float32 yoffset) { AudioUnit unit = GetEditAudioUnit (); if (unit) { if (!editController) { UInt32 size = sizeof (IEditController*); if (AudioUnitGetProperty (unit, 64000, kAudioUnitScope_Global, 0, &editController, &size) != noErr) return kAudioUnitErr_NoConnection; } if (editController) { plugView = editController->createView (ViewType::kEditor); if (!plugView) return kAudioUnitErr_NoConnection; HIViewRef contentView; const EventTypeSpec eventTypes[] = { { kEventClassControl, kEventControlAddedSubControl }, }; OSStatus err = HIViewFindByID (HIViewGetRoot (GetCarbonWindow ()), kHIViewWindowContentID, &contentView); err = InstallControlEventHandler (contentView, HIViewAdded, 1, eventTypes, this, &eventHandler); plugView->setFrame (this); if (plugView->attached (GetCarbonWindow (), kPlatformTypeHIView) == kResultTrue) { HIViewRemoveFromSuperview (hiPlugView); EmbedControl (hiPlugView); HIViewMoveBy (hiPlugView, xoffset, yoffset); return noErr; } else plugView->setFrame (0); } } return kAudioUnitErr_NoConnection; } //------------------------------------------------------------------------ tresult PLUGIN_API AUCarbonView::resizeView (IPlugView* view, ViewRect* vr) { if (vr == 0 || view != plugView) return kInvalidArgument; HIViewRef hiView = GetCarbonPane (); if (hiView) { HIRect r; if (HIViewGetFrame (hiView, &r) != noErr) return kResultFalse; r.size.width = vr->right - vr->left; r.size.height = vr->bottom - vr->top; if (HIViewSetFrame (hiView, &r) != noErr) return kResultFalse; if (plugView) plugView->onSize (vr); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ //COMPONENT_ENTRY(AUCarbonView) //------------------------------------------------------------------------ extern "C" { ComponentResult AUCarbonViewEntry(ComponentParameters *params, AUCarbonView *obj); __attribute__ ((visibility ("default"))) ComponentResult AUCarbonViewEntry(ComponentParameters *params, AUCarbonView *obj) { return ComponentEntryPoint::Dispatch(params, obj); } } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg #endif // !SMTG_PLATFORM_64 /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/aucocoaview.h000066400000000000000000000046411461511344300231550ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/aucocoaview.h // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma once #ifndef SMTG_AUCocoaUIBase_CLASS_NAME #import "aucocoaclassprefix.h" #endif #import #import //------------------------------------------------------------------------ @interface SMTG_AUCocoaUIBase_CLASS_NAME : NSObject @end /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/aucocoaview.mm000066400000000000000000000233261461511344300233400ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/aucocoaview.mm // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #import "aucocoaview.h" #import "auwrapper.h" #import "public.sdk/source/vst/utility/objcclassbuilder.h" #import "pluginterfaces/base/funknownimpl.h" #import "pluginterfaces/gui/iplugview.h" #import "pluginterfaces/vst/ivsteditcontroller.h" //------------------------------------------------------------------------ @interface NSObject (SMTG_AUView) - (id)initWithEditController:(Steinberg::Vst::IEditController*)editController audioUnit:(AudioUnit)au preferredSize:(NSSize)size; @end //------------------------------------------------------------------------ namespace Steinberg { namespace { //------------------------------------------------------------------------ struct AUPlugFrame : U::Implements> { AUPlugFrame (NSView* parent) : parent (parent) {} tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* vr) override { NSRect newSize = NSMakeRect ([parent frame].origin.x, [parent frame].origin.y, vr->right - vr->left, vr->bottom - vr->top); [parent setFrame:newSize]; return kResultTrue; } NSView* parent; }; //------------------------------------------------------------------------ struct AUView { static constexpr auto VarNamePlugView = "plugView"; static constexpr auto VarNameEditController = "editController"; static constexpr auto VarNameAudioUnit = "audioUnit"; static constexpr auto VarNameDynlib = "dynlib"; static constexpr auto VarNamePlugFrame = "plugFrame"; static constexpr auto VarNameIsAttached = "isAttached"; struct Instance : ObjCInstance { using PlugViewVar = std::optional>; using EditControllerVar = std::optional>; using AudioUnitVar = std::optional>; using DynlibVar = std::optional>; using PlugFrameVar = std::optional>; using IsAttachedVar = std::optional>; Instance (__unsafe_unretained id obj) : ObjCInstance (obj, [NSView class]) { plugView = getVariable (VarNamePlugView); editController = getVariable (VarNameEditController); audioUnit = getVariable (VarNamePlugView); dynlib = getVariable (VarNameDynlib); plugFrame = getVariable (VarNamePlugFrame); isAttached = getVariable (VarNameIsAttached); } PlugViewVar plugView; EditControllerVar editController; AudioUnitVar audioUnit; DynlibVar dynlib; PlugFrameVar plugFrame; IsAttachedVar isAttached; }; static id alloc () { static ObjCClass gInstance; return [gInstance.cl alloc]; } private: struct ObjCClass { Class cl; ObjCClass () { cl = ObjCClassBuilder () .init ("SMTG_AUView", [NSView class]) .addIvar (VarNamePlugView) .addIvar (VarNameEditController) .addIvar (VarNameAudioUnit) .addIvar (VarNameDynlib) .addIvar (VarNamePlugFrame) .addIvar (VarNameIsAttached) .addMethod (@selector (initWithEditController:audioUnit:preferredSize:), initWithEditController) .addMethod (@selector (setFrame:), setFrame) .addMethod (@selector (isFlipped), isFlipped) .addMethod (@selector (viewDidMoveToSuperview), viewDidMoveToSuperview) .addMethod (@selector (dealloc), dealloc) .finalize (); } static id initWithEditController (id self, SEL cmd, Vst::IEditController* editController, AudioUnit au, NSSize size) { ObjCInstance obj (self); self = obj.callSuper (@selector (initWithFrame:), NSMakeRect (0, 0, size.width, size.height)); if (self) { Instance inst (self); inst.editController->set (editController); editController->addRef (); inst.audioUnit->set (au); auto plugView = editController->createView (Vst::ViewType::kEditor); if (!plugView || plugView->isPlatformTypeSupported (kPlatformTypeNSView) != kResultTrue) { [self dealloc]; return nil; } inst.plugView->set (plugView); auto plugFrame = NEW AUPlugFrame (self); inst.plugFrame->set (plugFrame); plugView->setFrame (plugFrame); if (plugView->attached (self, kPlatformTypeNSView) != kResultTrue) { [self dealloc]; return nil; } ViewRect vr; if (plugView->getSize (&vr) == kResultTrue) { NSRect newSize = NSMakeRect (0, 0, vr.right - vr.left, vr.bottom - vr.top); [self setFrame:newSize]; } inst.isAttached->set (YES); FObject* fObject = nullptr; UInt32 size = sizeof (FObject*); if (AudioUnitGetProperty (au, 64001, kAudioUnitScope_Global, 0, &fObject, &size) == noErr) { fObject->addRef (); inst.dynlib->set (fObject); } } return self; } static void setFrame (id self, SEL cmd, NSRect newSize) { Instance inst (self); inst.callSuper (@selector (setFrame:), newSize); ViewRect viewRect (0, 0, newSize.size.width, newSize.size.height); if (inst.plugView->get ()) inst.plugView->get ()->onSize (&viewRect); } static BOOL isFlipped (id self, SEL cmd) { return YES; } static void viewDidMoveToSuperview (id self, SEL cmd) { Instance inst (self); if (inst.plugView->get ()) { if ([self superview]) { if (!inst.isAttached->get ()) { if (inst.plugView->get ()->attached (self, kPlatformTypeNSView) == kResultTrue) { inst.isAttached->set (YES); } } } else { if (inst.isAttached->get ()) { inst.plugView->get ()->removed (); inst.isAttached->set (NO); } } } } static void dealloc (id self, SEL cmd) { Instance inst (self); if (auto plugView = inst.plugView->get ()) { if (inst.isAttached->get ()) { plugView->setFrame (0); plugView->removed (); } plugView->release (); if (auto plugFrame = inst.plugFrame->get ()) plugFrame->release (); if (auto editController = inst.editController->get ()) { auto refCount = editController->addRef (); if (refCount == 2) editController->terminate (); editController->release (); editController->release (); inst.editController->set (nullptr); } } if (auto dynlib = inst.dynlib->get ()) dynlib->release (); inst.callSuper (@selector (dealloc)); } }; }; //------------------------------------------------------------------------ } // anonymous } // Steinberg //------------------------------------------------------------------------ @implementation SMTG_AUCocoaUIBase_CLASS_NAME //------------------------------------------------------------------------ - (unsigned)interfaceVersion { return 0; } //------------------------------------------------------------------------ - (NSString*)description { return @"Cocoa View"; } //------------------------------------------------------------------------ - (NSView*)uiViewForAudioUnit:(AudioUnit)inAU withSize:(NSSize)inPreferredSize { using namespace Steinberg; Vst::IEditController* editController = 0; UInt32 size = sizeof (Vst::IEditController*); if (AudioUnitGetProperty (inAU, 64000, kAudioUnitScope_Global, 0, &editController, &size) != noErr) return nil; return [[AUView::alloc () initWithEditController:editController audioUnit:inAU preferredSize:inPreferredSize] autorelease]; } @end /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/auresource.r000066400000000000000000000076351461511344300230450ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/auresource.r // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include #include #include "audiounitconfig.h" /* ---------------------------------------------------------------------------------------------------------------------------------------- // audiounitconfig.h needs the following definitions: #define kAudioUnitVersion 0xFFFFFFFF // Version Number, needs to be in hex #define kAudioUnitName "Steinberg: MyVST3 as AudioUnit" // Company Name + Effect Name #define kAudioUnitDescription "My VST3 as AudioUnit" // Effect Description #define kAudioUnitType kAudioUnitType_Effect // can be kAudioUnitType_Effect or kAudioUnitType_MusicDevice #define kAudioUnitComponentSubType 'test' // unique id #define kAudioUnitComponentManuf 'SMTG' // registered company id #define kAudioUnitCarbonView 1 // if 0 no Carbon view support will be added */ #define kAudioUnitResID_Processor 1000 #define kAudioUnitResID_CarbonView 9000 //----------------------Processor---------------------------------------------- #define RES_ID kAudioUnitResID_Processor #define COMP_TYPE kAudioUnitType #define COMP_SUBTYPE kAudioUnitComponentSubType #define COMP_MANUF kAudioUnitComponentManuf #define VERSION kAudioUnitVersion #define NAME kAudioUnitName #define DESCRIPTION kAudioUnitDescription #define ENTRY_POINT "AUWrapperEntry" #include "AUResources.r" #if kAudioUnitCarbonView //----------------------View---------------------------------------------- #define RES_ID kAudioUnitResID_CarbonView #define COMP_TYPE kAudioUnitCarbonViewComponentType #define COMP_SUBTYPE kAudioUnitComponentSubType #define COMP_MANUF kAudioUnitComponentManuf #define VERSION kAudioUnitVersion #define NAME "CarbonView" #define DESCRIPTION "CarbonView" #define ENTRY_POINT "AUCarbonViewEntry" #include "AUResources.r" #endif vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/ausdk.mm000066400000000000000000000075371461511344300221500ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/ausdk.mm // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma clang diagnostic ignored "-Wdeprecated-declarations" #pragma clang diagnostic ignored "-Wunused-value" #pragma clang diagnostic ignored "-Wparentheses" #pragma clang diagnostic ignored "-Woverloaded-virtual" #ifndef MAC_OS_X_VERSION_10_7 #define MAC_OS_X_VERSION_10_7 1070 #endif #import "PublicUtility/CAAudioChannelLayout.cpp" #import "PublicUtility/CABundleLocker.cpp" #import "PublicUtility/CAHostTimeBase.cpp" #import "PublicUtility/CAStreamBasicDescription.cpp" #import "PublicUtility/CAVectorUnit.cpp" #import "PublicUtility/CAAUParameter.cpp" #import "AUPublic/AUBase/ComponentBase.cpp" #import "AUPublic/AUBase/AUScopeElement.cpp" #import "AUPublic/AUBase/AUOutputElement.cpp" #import "AUPublic/AUBase/AUInputElement.cpp" #import "AUPublic/AUBase/AUBase.cpp" #if !__LP64__ #ifndef verify_noerr #define verify_noerr(x) x #endif #ifndef verify #define verify(x) #endif #import "AUPublic/AUCarbonViewBase/AUCarbonViewBase.cpp" #import "AUPublic/AUCarbonViewBase/AUCarbonViewControl.cpp" #import "AUPublic/AUCarbonViewBase/AUCarbonViewDispatch.cpp" #import "AUPublic/AUCarbonViewBase/AUControlGroup.cpp" #import "AUPublic/AUCarbonViewBase/CarbonEventHandler.cpp" #endif #import "AUPublic/Utility/AUTimestampGenerator.cpp" #import "AUPublic/Utility/AUBuffer.cpp" #import "AUPublic/Utility/AUBaseHelper.cpp" #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 #import "AUPublic/OtherBases/AUMIDIEffectBase.cpp" #import "AUPublic/Utility/AUDebugDispatcher.cpp" #else #import "AUPublic/AUBase/AUPlugInDispatch.cpp" #endif #if !CA_USE_AUDIO_PLUGIN_ONLY #import "AUPublic/AUBase/AUDispatch.cpp" #import "AUPublic/OtherBases/MusicDeviceBase.cpp" #import "AUPublic/OtherBases/AUMIDIBase.cpp" #import "AUPublic/OtherBases/AUEffectBase.cpp" #endif /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/auwrapper.h000066400000000000000000000310361461511344300226540ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/auwrapper.h // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma once #if CA_USE_AUDIO_PLUGIN_ONLY #include "AudioUnits/AUPublic/AUBase/AUBase.h" #define AUWRAPPER_BASE_CLASS AUBase #else #include "AudioUnits/AUPublic/OtherBases/MusicDeviceBase.h" #define AUWRAPPER_BASE_CLASS MusicDeviceBase #endif #include "public.sdk/source/vst/hosting/eventlist.h" #include "public.sdk/source/vst/hosting/parameterchanges.h" #include "public.sdk/source/vst/hosting/processdata.h" #include "base/source/fstring.h" #include "base/source/timer.h" #include "base/thread/include/flock.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstprocesscontext.h" #include "pluginterfaces/vst/ivstunits.h" #include #include #include #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ typedef struct MIDIMessageInfoStruct { UInt8 status; UInt8 channel; UInt8 data1; UInt8 data2; UInt32 startFrame; } MIDIMessageInfoStruct; //------------------------------------------------------------------------ class MIDIOutputCallbackHelper { public: MIDIOutputCallbackHelper () { mMIDIMessageList.reserve (16); mMIDICallbackStruct.midiOutputCallback = NULL; } virtual ~MIDIOutputCallbackHelper () {}; void SetCallbackInfo (AUMIDIOutputCallback callback, void* userData) { mMIDICallbackStruct.midiOutputCallback = callback; mMIDICallbackStruct.userData = userData; } void AddEvent (UInt8 status, UInt8 channel, UInt8 data1, UInt8 data2, UInt32 inStartFrame) { MIDIMessageInfoStruct info = {status, channel, data1, data2, inStartFrame}; mMIDIMessageList.push_back (info); } void FireAtTimeStamp (const AudioTimeStamp& inTimeStamp) { if (!mMIDIMessageList.empty () && mMIDICallbackStruct.midiOutputCallback != 0) { // synthesize the packet list and call the MIDIOutputCallback // iterate through the vector and get each item std::vector::iterator myIterator; MIDIPacketList* pktlist = PacketList (); for (myIterator = mMIDIMessageList.begin (); myIterator != mMIDIMessageList.end (); myIterator++) { MIDIMessageInfoStruct item = *myIterator; MIDIPacket* pkt = MIDIPacketListInit (pktlist); bool tooBig = false; Byte data[3] = {item.status, item.data1, item.data2}; if ((pkt = MIDIPacketListAdd (pktlist, sizeof (mBuffersAllocated), pkt, item.startFrame, 4, const_cast (data))) == NULL) tooBig = true; if (tooBig) { // send what we have and then clear the buffer and send again // issue the callback with what we got OSStatus result = mMIDICallbackStruct.midiOutputCallback ( mMIDICallbackStruct.userData, &inTimeStamp, 0, pktlist); if (result != noErr) printf ("error calling output callback: %d", (int)result); // clear stuff we've already processed, and fire again mMIDIMessageList.erase (mMIDIMessageList.begin (), myIterator); this->FireAtTimeStamp (inTimeStamp); return; } } // fire callback OSStatus result = mMIDICallbackStruct.midiOutputCallback (mMIDICallbackStruct.userData, &inTimeStamp, 0, pktlist); if (result != noErr) printf ("error calling output callback: %d", (int)result); mMIDIMessageList.clear (); } } protected: typedef std::vector MIDIMessageList; private: MIDIPacketList* PacketList () { return (MIDIPacketList*)mBuffersAllocated; } Byte mBuffersAllocated[1024]; AUMIDIOutputCallbackStruct mMIDICallbackStruct; MIDIMessageList mMIDIMessageList; }; //------------------------------------------------------------------------ //------------------------------------------------------------------------ class AUWrapper : public AUWRAPPER_BASE_CLASS, public IComponentHandler, public ITimerCallback { public: AUWrapper (ComponentInstanceRecord* ci); ~AUWrapper (); //---ComponentBase--------------------- #if !CA_USE_AUDIO_PLUGIN_ONLY ComponentResult Version () SMTG_OVERRIDE; #endif void PostConstructor () SMTG_OVERRIDE; //---AUBase----------------------------- void Cleanup () SMTG_OVERRIDE; ComponentResult Initialize () SMTG_OVERRIDE; AUElement* CreateElement (AudioUnitScope scope, AudioUnitElement element) SMTG_OVERRIDE; UInt32 SupportedNumChannels (const AUChannelInfo** outInfo) SMTG_OVERRIDE; bool StreamFormatWritable (AudioUnitScope scope, AudioUnitElement element) SMTG_OVERRIDE; ComponentResult ChangeStreamFormat (AudioUnitScope inScope, AudioUnitElement inElement, const CAStreamBasicDescription& inPrevFormat, const CAStreamBasicDescription& inNewFormat) SMTG_OVERRIDE; ComponentResult SetConnection (const AudioUnitConnection& inConnection) SMTG_OVERRIDE; ComponentResult GetParameterInfo (AudioUnitScope inScope, AudioUnitParameterID inParameterID, AudioUnitParameterInfo& outParameterInfo) SMTG_OVERRIDE; ComponentResult SetParameter (AudioUnitParameterID inID, AudioUnitScope inScope, AudioUnitElement inElement, AudioUnitParameterValue inValue, UInt32 inBufferOffsetInFrames) SMTG_OVERRIDE; ComponentResult SaveState (CFPropertyListRef* outData) SMTG_OVERRIDE; ComponentResult RestoreState (CFPropertyListRef inData) SMTG_OVERRIDE; ComponentResult Render (AudioUnitRenderActionFlags &ioActionFlags, const AudioTimeStamp &inTimeStamp, UInt32 inNumberFrames) SMTG_OVERRIDE; void processOutputEvents (const AudioTimeStamp &inTimeStamp); #if !CA_USE_AUDIO_PLUGIN_ONLY int GetNumCustomUIComponents () SMTG_OVERRIDE; void GetUIComponentDescs (ComponentDescription* inDescArray) SMTG_OVERRIDE; #endif ComponentResult GetPropertyInfo (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, UInt32 &outDataSize, Boolean &outWritable) SMTG_OVERRIDE; ComponentResult GetProperty (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, void* outData) SMTG_OVERRIDE; ComponentResult SetProperty (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, const void* inData, UInt32 inDataSize) SMTG_OVERRIDE; bool CanScheduleParameters() const SMTG_OVERRIDE; Float64 GetLatency () SMTG_OVERRIDE; Float64 GetTailTime () SMTG_OVERRIDE; //---Factory presets OSStatus GetPresets (CFArrayRef* outData) const SMTG_OVERRIDE; OSStatus NewFactoryPresetSet (const AUPreset& inNewFactoryPreset) SMTG_OVERRIDE; //---MusicDeviceBase------------------------- ComponentResult StartNote (MusicDeviceInstrumentID inInstrument, MusicDeviceGroupID inGroupID, NoteInstanceID* outNoteInstanceID, UInt32 inOffsetSampleFrame, const MusicDeviceNoteParams &inParams) SMTG_OVERRIDE; ComponentResult StopNote (MusicDeviceGroupID inGroupID, NoteInstanceID inNoteInstanceID, UInt32 inOffsetSampleFrame) SMTG_OVERRIDE; #if !CA_USE_AUDIO_PLUGIN_ONLY OSStatus GetInstrumentCount (UInt32 &outInstCount) const SMTG_OVERRIDE; #endif //---AUMIDIBase------------------------------ #if !CA_USE_AUDIO_PLUGIN_ONLY OSStatus HandleNonNoteEvent (UInt8 status, UInt8 channel, UInt8 data1, UInt8 data2, UInt32 inStartFrame) SMTG_OVERRIDE; #endif //---custom---------------------------------- void setControllerParameter (ParamID pid, ParamValue value); // return for a given midiChannel the unitID and the ProgramListID bool getProgramListAndUnit (int32 midiChannel, UnitID& unitId, ProgramListID& programListId); // restore preset state, add StateType "Project" to stream if loading from project ComponentResult restoreState (CFPropertyListRef inData, bool fromProject); //------------------------------------------------------------------------ #if !CA_USE_AUDIO_PLUGIN_ONLY static ComponentResult ComponentEntryDispatch (ComponentParameters* params, AUWrapper* This); #endif //------------------------------------------------------------------------ static CFBundleRef gBundleRef; //------------------------------------------------------------------------ DECLARE_FUNKNOWN_METHODS protected: //---from IComponentHandler------------------- tresult PLUGIN_API beginEdit (ParamID tag) SMTG_OVERRIDE; tresult PLUGIN_API performEdit (ParamID tag, ParamValue valueNormalized) SMTG_OVERRIDE; tresult PLUGIN_API endEdit (ParamID tag) SMTG_OVERRIDE; tresult PLUGIN_API restartComponent (int32 flags) SMTG_OVERRIDE; //---from ITimerCallback---------------------- void onTimer (Timer* timer) SMTG_OVERRIDE; // internal helpers double getSampleRate () const { return sampleRate; } void updateProcessContext (); void syncParameterValues (); void cacheParameterValues (); void clearParameterValueCache (); virtual IPluginFactory* getFactory (); void loadVST3Module (); void unloadVST3Module (); bool validateChannelPair (int inChannelsIn, int inChannelsOut, const AUChannelInfo* info, UInt32 numChanInfo) const; IAudioProcessor* audioProcessor; IEditController* editController; IMidiMapping* midiMapping; Timer* timer; HostProcessData processData; ParameterChanges processParamChanges; ParameterChanges outputParamChanges; ParameterChangeTransfer transferParamChanges; ParameterChangeTransfer outputParamTransfer; ProcessContext processContext; EventList eventList; typedef std::map CachedParameterInfoMap; typedef std::map UnitInfoMap; typedef std::vector ClumpGroupVector; UnitInfoMap unitInfos; ClumpGroupVector clumpGroups; CachedParameterInfoMap cachedParameterInfos; Steinberg::Base::Thread::FLock parameterCacheChanging; NoteInstanceID noteCounter; double sampleRate; ParamID bypassParamID; AUPreset* presets; int32 numPresets; ParamID factoryProgramChangedID; bool isInstrument; bool isBypassed; AUParameterListenerRef paramListenerRef; static const int32 kMaxProgramChangeParameters = 16; ParamID programChangeParameters[kMaxProgramChangeParameters]; // for each midi channel int32 midiOutCount; // currently only 0 or 1 supported MIDIOutputCallbackHelper mCallbackHelper; EventList outputEvents; bool isOfflineRender; private: void buildUnitInfos (IUnitInfo* unitInfoController, UnitInfoMap& units) const; }; //------------------------------------------------------------------------ class AutoreleasePool { public: AutoreleasePool () { ap = [[NSAutoreleasePool alloc] init]; } ~AutoreleasePool () { [ap drain]; } //------------------------------------------------------------------------ protected: NSAutoreleasePool* ap; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/auwrapper.mm000066400000000000000000002355361461511344300230510ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/auwrapper.mm // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #pragma GCC diagnostic ignored "-Wdeprecated-declarations" /* Things to do : - Parameter Mapping could be better (indexed stuff), but needs work if we want to have this - Speaker Arrangement -> Channel Layout (partially done, just doesn't work always in Logic 8) - dynamic Bus management */ #include "auwrapper.h" #include "NSDataIBStream.h" #include "aucocoaview.h" #include "base/source/fdynlib.h" #include "base/source/fstring.h" #include "pluginterfaces/base/ustring.h" #include "pluginterfaces/gui/iplugview.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/vstpresetkeys.h" #include "pluginterfaces/vst/vsttypes.h" #include "public.sdk/source/vst/hosting/eventlist.h" #include "public.sdk/source/vst/hosting/hostclasses.h" #include "public.sdk/source/vst/hosting/parameterchanges.h" #include "public.sdk/source/vst/hosting/processdata.h" #include "public.sdk/source/vst/vsteditcontroller.h" #include #if !SMTG_PLATFORM_64 #include #endif #include #include #include #if !CA_USE_AUDIO_PLUGIN_ONLY #include "CAXException.h" #endif #define SMTG_MAKE_STRING_PRIVATE_DONT_USE(x) #x #define SMTG_MAKE_STRING(x) SMTG_MAKE_STRING_PRIVATE_DONT_USE (x) typedef bool (*bundleEntryPtr) (CFBundleRef); typedef bool (*bundleExitPtr) (void); #include // we ignore for the moment that the NSAddImage functions are deprecated #pragma GCC diagnostic ignored "-Wdeprecated-declarations" static bool CopyProcessPath (Steinberg::String& name) { Dl_info info; if (dladdr ((const void*)CopyProcessPath, &info)) { if (info.dli_fname) { name.assign (info.dli_fname); #ifdef UNICODE name.toWideString (); #endif return true; } } return false; } namespace Steinberg { //------------------------------------------------------------------------ class VST3DynLibrary : public FDynLibrary { public: VST3DynLibrary () : bundleEntryCalled (false) { gInstance = this; } ~VST3DynLibrary () { if (isLoaded ()) { if (bundleEntryCalled) { if (bundleExitPtr bundleExit = (bundleExitPtr)getProcAddress ("bundleExit")) bundleExit (); } #if defined(MAC_OS_X_VERSION_10_11) // workaround, because CFBundleCreate returns refcount == 2. if (CFBundleIsExecutableLoaded ((CFBundleRef)instance)) { CFBundleUnloadExecutable ((CFBundleRef)instance); CFRelease ((CFBundleRef)instance); } #else CFRelease ((CFBundleRef)instance); #endif instance = 0; isloaded = false; } gInstance = 0; } bool init (const tchar* path) { if (isLoaded ()) return true; isBundle = false; Steinberg::String name (path); if (name.getChar16 (0) != STR ('/')) // no absoltue path { Steinberg::String p; if (CopyProcessPath (p)) { Steinberg::int32 index = p.findLast (STR ('/')); p.remove (index + 1); name = p + name; } } CFStringRef fsString = (CFStringRef)name.toCFStringRef (); CFURLRef url = CFURLCreateWithFileSystemPath (NULL, fsString, kCFURLPOSIXPathStyle, true); if (url) { CFBundleRef bundle = CFBundleCreate (NULL, url); if (bundle) { bundleEntryPtr bundleEntry = (bundleEntryPtr)CFBundleGetFunctionPointerForName ( bundle, CFSTR ("bundleEntry")); if (bundleEntry) bundleEntryCalled = bundleEntry (bundle); if (bundleEntryCalled) { isBundle = true; isloaded = true; instance = (void*)bundle; } else CFRelease (bundle); } CFRelease (url); } CFRelease (fsString); return isLoaded (); } static IPtr gInstance; protected: bool bundleEntryCalled; }; IPtr VST3DynLibrary::gInstance; // keep alive until component unloaded namespace Vst { //-------------------------------------------------------------------------------------------- class SpeakerArrangementBase { public: SpeakerArrangementBase () { channelLayout.mChannelBitmap = 0; channelLayout.mChannelLayoutTag = 0; channelLayout.mNumberChannelDescriptions = 0; } OSStatus setNumChannels (int32 numChannels) { switch (numChannels) { case 1: channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Mono; break; case 2: channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo; break; case 6: channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_AudioUnit_5_1; break; default: return kAudioUnitErr_InvalidProperty; } return noErr; } protected: AudioChannelLayout channelLayout; }; //-------------------------------------------------------------------------------------------- class MultiChannelOutputElement : public AUOutputElement, public SpeakerArrangementBase { public: MultiChannelOutputElement (AUBase* audioUnit) : AUOutputElement (audioUnit) {} UInt32 GetChannelLayoutTags (AudioChannelLayoutTag* outLayoutTagsPtr) { if (AudioChannelLayoutTag_GetNumberOfChannels (channelLayout.mChannelLayoutTag) <= 2) return 0; if (outLayoutTagsPtr) *outLayoutTagsPtr = channelLayout.mChannelLayoutTag; return 1; } UInt32 GetAudioChannelLayout (AudioChannelLayout* outMapPtr, Boolean& outWritable) { if (AudioChannelLayoutTag_GetNumberOfChannels (channelLayout.mChannelLayoutTag) <= 2) return 0; if (outMapPtr) *outMapPtr = channelLayout; outWritable = false; return sizeof (AudioChannelLayout); } OSStatus SetAudioChannelLayout (const AudioChannelLayout& layout) { return kAudioUnitErr_InvalidProperty; } OSStatus SetStreamFormat (const CAStreamBasicDescription& desc) { OSStatus err = setNumChannels (desc.NumberChannels ()); if (err != noErr) return err; return AUOutputElement::SetStreamFormat (desc); } }; //-------------------------------------------------------------------------------------------- class MultiChannelInputElement : public AUInputElement, public SpeakerArrangementBase { public: MultiChannelInputElement (AUBase* audioUnit) : AUInputElement (audioUnit) {} UInt32 GetChannelLayoutTags (AudioChannelLayoutTag* outLayoutTagsPtr) { if (AudioChannelLayoutTag_GetNumberOfChannels (channelLayout.mChannelLayoutTag) <= 2) return 0; if (outLayoutTagsPtr) *outLayoutTagsPtr = channelLayout.mChannelLayoutTag; return 1; } UInt32 GetAudioChannelLayout (AudioChannelLayout* outMapPtr, Boolean& outWritable) { if (AudioChannelLayoutTag_GetNumberOfChannels (channelLayout.mChannelLayoutTag) <= 2) return 0; if (outMapPtr) memcpy (outMapPtr, &channelLayout, sizeof (AudioChannelLayout)); outWritable = false; return sizeof (AudioChannelLayout); } OSStatus SetAudioChannelLayout (const AudioChannelLayout& layout) { return kAudioUnitErr_InvalidProperty; } OSStatus SetStreamFormat (const CAStreamBasicDescription& desc) { OSStatus err = setNumChannels (desc.NumberChannels ()); if (err != noErr) return err; return AUInputElement::SetStreamFormat (desc); } }; //------------------------------------------------------------------------ static CFStringRef createCFStringFromString128 (const String128& string) { UString128 str (string); return CFStringCreateWithCharacters (0, (const UniChar*)string, str.getLength ()); } //------------------------------------------------------------------------ static void createString128FromCFString (CFStringRef inString, String128& outString) { CFStringGetCharacters (inString, CFRangeMake (0, std::max (128, CFStringGetLength (inString))), (UniChar*)outString); } //------------------------------------------------------------------------ static CFBundleRef GetBundleFromExecutable (const char* filepath) { AutoreleasePool ap; NSString* execStr = [NSString stringWithCString:filepath encoding:NSUTF8StringEncoding]; NSString* macOSStr = [execStr stringByDeletingLastPathComponent]; NSString* contentsStr = [macOSStr stringByDeletingLastPathComponent]; NSString* bundleStr = [contentsStr stringByDeletingLastPathComponent]; return CFBundleCreate (0, (CFURLRef)[NSURL fileURLWithPath:bundleStr isDirectory:YES]); } //------------------------------------------------------------------------ static CFBundleRef GetCurrentBundle () { Dl_info info; if (dladdr ((const void*)GetCurrentBundle, &info)) { if (info.dli_fname) { return GetBundleFromExecutable (info.dli_fname); } } return 0; } //------------------------------------------------------------------------ CFBundleRef AUWrapper::gBundleRef = 0; static CFIndex gBundleRefCount = 0; static AUChannelInfo* channelInfos = 0; //------------------------------------------------------------------------ static void initBundleRef () { if (AUWrapper::gBundleRef == 0) { AUWrapper::gBundleRef = GetCurrentBundle (); gBundleRefCount = CFGetRetainCount (AUWrapper::gBundleRef); } else CFRetain (AUWrapper::gBundleRef); } //------------------------------------------------------------------------ static void releaseBundleRef () { CFIndex currentCount = CFGetRetainCount (AUWrapper::gBundleRef); CFRelease (AUWrapper::gBundleRef); if (currentCount == gBundleRefCount) AUWrapper::gBundleRef = 0; } //------------------------------------------------------------------------ class AUHostApplication : public HostApplication, public IVst3ToAUWrapper { public: virtual tresult PLUGIN_API getName (String128 name) SMTG_OVERRIDE { String str ("VST3-AU Wrapper"); str.copyTo (name, 0, 127); return kResultTrue; } DEFINE_INTERFACES DEF_INTERFACE (Vst::IVst3ToAUWrapper) END_DEFINE_INTERFACES (HostApplication) REFCOUNT_METHODS (HostApplication) }; static AUHostApplication gHostApp; //------------------------------------------------------------------------ IMPLEMENT_FUNKNOWN_METHODS (AUWrapper, IComponentHandler, IComponentHandler::iid) //------------------------------------------------------------------------ AUWrapper::AUWrapper (ComponentInstanceRecord* ci) : AUWRAPPER_BASE_CLASS (ci, 0, 0) , audioProcessor (0) , editController (0) , midiMapping (0) , timer (0) , noteCounter (0) , sampleRate (44100) , bypassParamID (-1) , presets (0) , numPresets (0) , factoryProgramChangedID (-1) , isInstrument (false) , isBypassed (false) , paramListenerRef (0) , midiOutCount (0) , isOfflineRender (false) { FUNKNOWN_CTOR AutoreleasePool ap; initBundleRef (); for (int32 i = 0; i < kMaxProgramChangeParameters; i++) programChangeParameters[i] = kNoParamId; processData.processContext = &processContext; processData.inputParameterChanges = &processParamChanges; processData.outputParameterChanges = &outputParamChanges; eventList.setMaxSize (128); outputEvents.setMaxSize (128); processData.inputEvents = &eventList; processData.outputEvents = &outputEvents; loadVST3Module (); FUnknownPtr factory (owned (getFactory ())); if (factory) { // find first audio processor class for (int32 i = 0; i < factory->countClasses (); i++) { PClassInfo2 ci; if (factory->getClassInfo2 (i, &ci) == kResultTrue) { if (strcmp (ci.category, kVstAudioEffectClass) == 0) { if (factory->createInstance (ci.cid, IAudioProcessor::iid, (void**)&audioProcessor) == kResultTrue) { ConstString plugCategory (ci.subCategories); if (plugCategory.findFirst ("Instrument", -1, ConstString::kCaseInsensitive) >= 0) isInstrument = true; break; } } } } } if (audioProcessor) { if (FUnknownPtr (audioProcessor)->initialize ((HostApplication*)&gHostApp) != kResultTrue) return; FUnknownPtr component (audioProcessor); if (audioProcessor->queryInterface (IEditController::iid, (void**)&editController) != kResultTrue) { if (component) { TUID ccid; if (component->getControllerClassId (ccid) == kResultTrue) { if (factory->createInstance (ccid, IEditController::iid, (void**)&editController) == kResultTrue) { if (editController->initialize ((HostApplication*)&gHostApp) != kResultTrue) { editController->release (); editController = 0; return; } FUnknownPtr controllerConnectionPoint (editController); FUnknownPtr processorConnectionPoint (audioProcessor); if (controllerConnectionPoint && processorConnectionPoint) { controllerConnectionPoint->connect (processorConnectionPoint); processorConnectionPoint->connect (controllerConnectionPoint); } NSMutableData* processorData = [[[NSMutableData alloc] init] autorelease]; NSMutableDataIBStream stream (processorData); if (FUnknownPtr (audioProcessor)->getState (&stream) == kResultTrue) { stream.seek (0, IBStream::kIBSeekSet); editController->setComponentState (&stream); } } } } } if (editController && component) { editController->setComponentHandler (this); // initialize busses int32 inputBusCount = component->getBusCount (kAudio, kInput); int32 outputBusCount = component->getBusCount (kAudio, kOutput); CreateElements (); Inputs ().SetNumberOfElements (inputBusCount); Outputs ().SetNumberOfElements (outputBusCount); SpeakerArrangement sa; for (int32 inputNo = 0; inputNo < inputBusCount; inputNo++) { MultiChannelInputElement* element = dynamic_cast (Inputs ().GetIOElement (inputNo)); if (element == 0) continue; if (audioProcessor->getBusArrangement (kInput, inputNo, sa) == kResultTrue) { CAStreamBasicDescription streamDesc (element->GetStreamFormat ()); streamDesc.ChangeNumberChannels (SpeakerArr::getChannelCount (sa), false); element->SetStreamFormat (streamDesc); } BusInfo info = {}; if (component->getBusInfo (kAudio, kInput, inputNo, info) == kResultTrue) { String busName (info.name); CFStringRef busNameString = (CFStringRef)busName.toCFStringRef (); element->SetName (busNameString); CFRelease (busNameString); } component->activateBus (kAudio, kInput, inputNo, true); } for (int32 outputNo = 0; outputNo < outputBusCount; outputNo++) { MultiChannelOutputElement* element = dynamic_cast (Outputs ().GetIOElement (outputNo)); if (element == 0) continue; if (audioProcessor->getBusArrangement (kOutput, outputNo, sa) == kResultTrue) { CAStreamBasicDescription streamDesc (element->GetStreamFormat ()); streamDesc.ChangeNumberChannels (SpeakerArr::getChannelCount (sa), false); element->SetStreamFormat (streamDesc); } BusInfo info = {}; if (component->getBusInfo (kAudio, kOutput, outputNo, info) == kResultTrue) { String busName (info.name); CFStringRef busNameString = (CFStringRef)busName.toCFStringRef (); element->SetName (busNameString); CFRelease (busNameString); } component->activateBus (kAudio, kOutput, outputNo, true); } processData.prepare (*component, 0, kSample32); // initialize parameters syncParameterValues (); cacheParameterValues (); midiOutCount = component->getBusCount (kEvent, kOutput); editController->queryInterface (IMidiMapping::iid, (void**)&midiMapping); transferParamChanges.setMaxParameters (500); outputParamTransfer.setMaxParameters (500); timer = Timer::create (this, 20); FUnknownPtr editController2 (editController); if (editController2) editController2->setKnobMode (kLinearMode); } } } //------------------------------------------------------------------------ AUWrapper::~AUWrapper () { AutoreleasePool ap; if (timer) timer->release (); if (paramListenerRef) AUListenerDispose (paramListenerRef); if (audioProcessor) { FUnknownPtr combined (audioProcessor); if (!combined) { FUnknownPtr controllerConnectionPoint (editController); FUnknownPtr processorConnectionPoint (audioProcessor); if (controllerConnectionPoint && processorConnectionPoint) { controllerConnectionPoint->disconnect (processorConnectionPoint); processorConnectionPoint->disconnect (controllerConnectionPoint); } } } if (midiMapping) { midiMapping->release (); midiMapping = 0; } if (editController) { editController->setComponentHandler (0); uint32 refCount = editController->addRef (); if (refCount == 2) editController->terminate (); editController->release (); editController->release (); editController = 0; } clearParameterValueCache (); if (audioProcessor) { FUnknownPtr (audioProcessor)->terminate (); audioProcessor->release (); audioProcessor = 0; } unloadVST3Module (); releaseBundleRef (); if (presets) delete presets; FUNKNOWN_DTOR } //------------------------------------------------------------------------ void AUWrapper::loadVST3Module () { if (VST3DynLibrary::gInstance == 0) { if (gBundleRef) { String pluginPath; CFStringRef pluginNameStr = (CFStringRef)CFBundleGetValueForInfoDictionaryKey ( gBundleRef, CFSTR ("VST3 Plug-in")); if (!pluginNameStr) { NSURL* pluginUrl = (NSURL*)CFBundleCopyResourceURL (gBundleRef, CFSTR ("plugin"), CFSTR ("vst3"), NULL); if (!pluginUrl) { NSLog ( @"VST3 Plug-in not defined in Info Dictionary and not included in bundle"); return; } pluginPath.fromCFStringRef ((CFStringRef)[pluginUrl path]); [pluginUrl release]; } else { pluginPath.fromCFStringRef (pluginNameStr); if (!pluginPath.getChar (0) != STR ('/')) { FSRef fsRef; if (FSFindFolder (kLocalDomain, kAudioPlugInsFolderType, false, &fsRef) == noErr) { NSURL* url = (NSURL*)CFURLCreateFromFSRef (0, &fsRef); if (url) { String basePath ([[url path] UTF8String]); basePath.toWideString (kCP_Utf8); pluginPath.insertAt (0, STR ("/VST3/")); pluginPath.insertAt (0, basePath); [url release]; } } } } new VST3DynLibrary (); if (pluginPath.isEmpty () || !VST3DynLibrary::gInstance->init (pluginPath)) { VST3DynLibrary::gInstance->release (); return; } } } else VST3DynLibrary::gInstance->addRef (); } //------------------------------------------------------------------------ void AUWrapper::unloadVST3Module () { if (VST3DynLibrary::gInstance) { VST3DynLibrary::gInstance->release (); } } //------------------------------------------------------------------------ IPluginFactory* AUWrapper::getFactory () { if (VST3DynLibrary::gInstance) { GetFactoryProc getPlugFactory = (GetFactoryProc)VST3DynLibrary::gInstance->getProcAddress ("GetPluginFactory"); if (getPlugFactory) return getPlugFactory (); } return 0; } //------------------------------------------------------------------------ // MARK: ComponentBase #if !CA_USE_AUDIO_PLUGIN_ONLY ComponentResult AUWrapper::Version () { AutoreleasePool ap; NSString* versionString = (NSString*)CFBundleGetValueForInfoDictionaryKey (gBundleRef, CFSTR ("AudioUnit Version")); if (versionString) { int version = 0; if (sscanf ([versionString UTF8String], "%x", &version) == 1) return version; } return 0xFFFFFFFF; } #endif //------------------------------------------------------------------------ void AUWrapper::PostConstructor () { AUWRAPPER_BASE_CLASS::PostConstructor (); } //------------------------------------------------------------------------ static SpeakerArrangement numChannelsToSpeakerArrangement (UInt32 numChannels) { switch (numChannels) { case 1: return SpeakerArr::kMono; case 2: return SpeakerArr::kStereo; case 6: return SpeakerArr::k51; } return 0; } //------------------------------------------------------------------------ ComponentResult AUWrapper::Initialize () { if (audioProcessor && editController) { // match speaker arrangement with AU stream format FUnknownPtr component (audioProcessor); int32 inputBusCount = component->getBusCount (kAudio, kInput); int32 outputBusCount = component->getBusCount (kAudio, kOutput); SupportedNumChannels (0); // initialize channelInfos if (channelInfos) { int32 maxBusCount = std::max (inputBusCount, outputBusCount); for (int32 i = 0; i < maxBusCount; i++) { int32 inChannelCount = 0; int32 outChannelCount = 0; if (inputBusCount > i) inChannelCount = Inputs ().GetIOElement (i)->GetStreamFormat ().NumberChannels (); if (outputBusCount > i) outChannelCount = Outputs ().GetIOElement (i)->GetStreamFormat ().NumberChannels (); if (!validateChannelPair (inChannelCount, outChannelCount, channelInfos, SupportedNumChannels (0))) return kAudioUnitErr_FailedInitialization; } } SpeakerArrangement inputs[inputBusCount]; SpeakerArrangement outputs[outputBusCount]; for (int32 element = 0; element < inputBusCount; element++) { const CAStreamBasicDescription desc = Inputs ().GetIOElement (element)->GetStreamFormat (); inputs[element] = numChannelsToSpeakerArrangement (desc.NumberChannels ()); } for (int32 element = 0; element < outputBusCount; element++) { const CAStreamBasicDescription desc = Outputs ().GetIOElement (element)->GetStreamFormat (); outputs[element] = numChannelsToSpeakerArrangement (desc.NumberChannels ()); } if (audioProcessor->setBusArrangements (inputs, inputBusCount, outputs, outputBusCount) != kResultTrue) { return kAudioUnitErr_FailedInitialization; } // After set Bus Arrangement, the channelbuffers may need to be reallocated -> hence the // second prepare! processData.prepare (*component, 0, kSample32); ProcessSetup ps; ps.sampleRate = getSampleRate (); ps.maxSamplesPerBlock = GetMaxFramesPerSlice (); ps.symbolicSampleSize = kSample32; ps.processMode = kRealtime; audioProcessor->setupProcessing (ps); component->setActive (true); audioProcessor->setProcessing (true); if (paramListenerRef == 0) { OSStatus status = AUListenerCreateWithDispatchQueue ( ¶mListenerRef, 0.2, dispatch_get_main_queue (), ^(void* _Nullable inObject, const AudioUnitParameter* _Nonnull inParameter, AudioUnitParameterValue inValue) { setControllerParameter (inParameter->mParameterID, inValue); }); SMTG_ASSERT (status == noErr) if (paramListenerRef) { AudioUnitParameter sPar; sPar.mAudioUnit = GetComponentInstance (); sPar.mParameterID = 0; sPar.mElement = 0; sPar.mScope = kAudioUnitScope_Global; std::vector programParameters; // for each VST3 parameter for (int32 i = 0; i < editController->getParameterCount (); i++) { ParameterInfo pi = {}; editController->getParameterInfo (i, pi); // do not register bypass if ((pi.flags & ParameterInfo::kIsBypass) != 0) { continue; } sPar.mParameterID = pi.id; status = AUListenerAddParameter (paramListenerRef, 0, &sPar); SMTG_ASSERT (status == noErr) if ((pi.flags & ParameterInfo::kIsProgramChange) != 0) { programParameters.push_back (pi); } } // assign programChanges for (int32 midiChannel = 0; midiChannel < kMaxProgramChangeParameters; midiChannel++) { programChangeParameters[midiChannel] = kNoParamId; UnitID unitId; ProgramListID programListId; if (getProgramListAndUnit (midiChannel, unitId, programListId)) { for (int32 i = 0; i < (int32)programParameters.size (); i++) { const ParameterInfo& paramInfo = programParameters.at (i); if (paramInfo.unitId == unitId) { programChangeParameters[midiChannel] = paramInfo.id; break; } } } } IUnitInfo* unitInfoController = NULL; // let's see if there's a preset list (take the first one) if (editController->queryInterface (IUnitInfo::iid, (void**)&unitInfoController) == kResultTrue && unitInfoController) { ProgramListInfo programListInfo; if (unitInfoController->getProgramListInfo (0, programListInfo) == kResultTrue) { factoryProgramChangedID = -1; numPresets = programListInfo.programCount; if (programListInfo.programCount > 0) { UnitID unitId = -1; // find the unit supporting this ProgramList IUnitInfo* unitInfo = NULL; if (editController->queryInterface (IUnitInfo::iid, (void**)&unitInfo) == kResultTrue && unitInfo) { int32 unitCount = unitInfo->getUnitCount (); for (int32 i = 0; i < unitCount; i++) { UnitInfo unitInfoStruct = {}; if (unitInfo->getUnitInfo (i, unitInfoStruct) == kResultTrue) { if (programListInfo.id == unitInfoStruct.programListId) { unitId = unitInfoStruct.id; break; } } } unitInfo->release (); } if (unitId != -1) { // find the associated ProgramChange parameter ID for (int32 i = 0; i < (int32)programParameters.size (); i++) { const ParameterInfo& paramInfo = programParameters.at (i); if (paramInfo.unitId == unitId) { factoryProgramChangedID = paramInfo.id; break; } } if (factoryProgramChangedID != -1) { presets = new AUPreset[programListInfo.programCount]; for (int32 i = 0; i < programListInfo.programCount; i++) { String128 name; unitInfoController->getProgramName (programListInfo.id, i, name); presets[i].presetNumber = i; presets[i].presetName = createCFStringFromString128 (name); } } } } } unitInfoController->release (); } } } return AUWRAPPER_BASE_CLASS::Initialize (); } return -1; } //------------------------------------------------------------------------ void AUWrapper::Cleanup () { if (audioProcessor) { audioProcessor->setProcessing (false); FUnknownPtr component (audioProcessor); component->setActive (false); } } //------------------------------------------------------------------------ // MARK: AUBase //-------------------------------------------------------------------------------------------- AUElement* AUWrapper::CreateElement (AudioUnitScope scope, AudioUnitElement element) { switch (scope) { case kAudioUnitScope_Output: return new MultiChannelOutputElement (this); case kAudioUnitScope_Input: return new MultiChannelInputElement (this); } return AUWRAPPER_BASE_CLASS::CreateElement (scope, element); } //------------------------------------------------------------------------ UInt32 AUWrapper::SupportedNumChannels (const AUChannelInfo** outInfo) { /* This code expects that the Info.plist contains an array with key AudioUnit SupportedNumChannels that contains the supported AUChannelInfo informations like: Outputs 2 Inputs 2 Outputs 0 Inputs 1 Outputs 1 Inputs 1 */ static unsigned long numChannelInfos = 0; static bool once = true; if (once && gBundleRef) { once = false; char buffer[128]; CFStringRef processName = 0; ProcessSerialNumber psn; SMTG_VERIFY_IS (GetCurrentProcess (&psn), noErr); SMTG_VERIFY_IS (CopyProcessName (&psn, &processName), noErr); CFStringGetCString (processName, buffer, sizeof (buffer), kCFStringEncodingUTF8); CFRelease (processName); strncat (buffer, " SupportedNumChannels", sizeof (buffer) - strlen (buffer) - 1); CFStringRef dictName = CFStringCreateWithCString (kCFAllocatorDefault, buffer, kCFStringEncodingUTF8); NSArray* supportedNumChannelsArray = (NSArray*)CFBundleGetValueForInfoDictionaryKey (gBundleRef, dictName); if (!supportedNumChannelsArray) supportedNumChannelsArray = (NSArray*)CFBundleGetValueForInfoDictionaryKey ( gBundleRef, CFSTR ("AudioUnit SupportedNumChannels")); if (supportedNumChannelsArray) { numChannelInfos = [supportedNumChannelsArray count]; if (numChannelInfos > 0) { channelInfos = new AUChannelInfo[numChannelInfos]; int i = 0; for (NSDictionary* dict in supportedNumChannelsArray) { NSInteger inputs = [[dict objectForKey:@"Inputs"] integerValue]; NSInteger outputs = [[dict objectForKey:@"Outputs"] integerValue]; channelInfos[i].inChannels = inputs; channelInfos[i++].outChannels = outputs; } } } CFRelease (dictName); } if (outInfo) *outInfo = channelInfos; return static_cast (numChannelInfos); } //------------------------------------------------------------------------ bool AUWrapper::StreamFormatWritable (AudioUnitScope scope, AudioUnitElement element) { return IsInitialized () ? false : true; } //------------------------------------------------------------------------ ComponentResult AUWrapper::ChangeStreamFormat (AudioUnitScope inScope, AudioUnitElement inElement, const CAStreamBasicDescription& inPrevFormat, const CAStreamBasicDescription& inNewFormat) { if (inPrevFormat.NumberChannels () == inNewFormat.NumberChannels ()) { // sample rate change ComponentResult res = AUWRAPPER_BASE_CLASS::ChangeStreamFormat (inScope, inElement, inPrevFormat, inNewFormat); if (res == noErr) sampleRate = inNewFormat.mSampleRate; return res; } else if (inPrevFormat.mSampleRate != inNewFormat.mSampleRate) sampleRate = inNewFormat.mSampleRate; else if (IsInitialized () || SupportedNumChannels (0) == 0) return kAudioUnitErr_Initialized; AUIOElement* element; switch (inScope) { case kAudioUnitScope_Input: element = Inputs ().GetIOElement (inElement); break; case kAudioUnitScope_Output: element = Outputs ().GetIOElement (inElement); break; case kAudioUnitScope_Global: element = Outputs ().GetIOElement (0); break; default: COMPONENT_THROW (kAudioUnitErr_InvalidScope); } OSStatus err = element->SetStreamFormat (inNewFormat); if (err == noErr) PropertyChanged (kAudioUnitProperty_StreamFormat, inScope, inElement); return err; } //------------------------------------------------------------------------ ComponentResult AUWrapper::SetConnection (const AudioUnitConnection& inConnection) { ComponentResult result = AUWRAPPER_BASE_CLASS::SetConnection (inConnection); if (result == noErr) { int32 busIndex = inConnection.destInputNumber; bool active = GetInput (busIndex)->IsActive (); FUnknownPtr component (audioProcessor); component->activateBus (kAudio, kInput, busIndex, active); } return result; } // static const UnitInfo kNoUnitInfo = {0}; //------------------------------------------------------------------------ void AUWrapper::buildUnitInfos (IUnitInfo* unitInfoController, UnitInfoMap& units) const { units.clear (); if (unitInfoController) { int32 numUnits = unitInfoController->getUnitCount (); for (int32 i = 0; i < numUnits; i++) { UnitInfo ui; if (unitInfoController->getUnitInfo (i, ui) == kResultTrue) units[ui.id] = ui; } } } //------------------------------------------------------------------------ ComponentResult AUWrapper::GetParameterInfo (AudioUnitScope inScope, AudioUnitParameterID inParameterID, AudioUnitParameterInfo& outParameterInfo) { if (inScope != kAudioUnitScope_Global) return kAudioUnitErr_InvalidScope; Steinberg::Base::Thread::FGuard guard (parameterCacheChanging); CachedParameterInfoMap::const_iterator it = cachedParameterInfos.find (inParameterID); if (it == cachedParameterInfos.end ()) return kAudioUnitErr_InvalidParameter; memcpy (&outParameterInfo, &it->second, sizeof (AudioUnitParameterInfo)); if (outParameterInfo.cfNameString) CFRetain (outParameterInfo.cfNameString); if (outParameterInfo.unitName) CFRetain (outParameterInfo.unitName); return noErr; } //------------------------------------------------------------------------ ComponentResult AUWrapper::SetParameter (AudioUnitParameterID inID, AudioUnitScope inScope, AudioUnitElement inElement, AudioUnitParameterValue inValue, UInt32 inBufferOffsetInFrames) { if (inScope == kAudioUnitScope_Global) { if (inID == factoryProgramChangedID) { int presetIdx = (int)((float)inValue * (float)numPresets); if (presetIdx >= 0 && presetIdx < numPresets) { SetAFactoryPresetAsCurrent (presets[presetIdx]); PropertyChanged (kAudioUnitProperty_PresentPreset, kAudioUnitScope_Global, 0); PropertyChanged (kAudioUnitProperty_CurrentPreset, kAudioUnitScope_Global, 0); } } transferParamChanges.addChange (inID, inValue, inBufferOffsetInFrames); } return AUWRAPPER_BASE_CLASS::SetParameter (inID, inScope, inElement, inValue, inBufferOffsetInFrames); } //------------------------------------------------------------------------ void AUWrapper::setControllerParameter (ParamID pid, ParamValue value) { if (editController && pid != factoryProgramChangedID) editController->setParamNormalized (pid, value); } //------------------------------------------------------------------------ ComponentResult AUWrapper::SaveState (CFPropertyListRef* outData) { ComponentResult result = AUWRAPPER_BASE_CLASS::SaveState (outData); if (result != noErr) return result; NSMutableDictionary* dict = (NSMutableDictionary*)*outData; AutoreleasePool ap; NSMutableData* processorData = [[[NSMutableData alloc] init] autorelease]; NSMutableData* controllerData = [[[NSMutableData alloc] init] autorelease]; if (audioProcessor) { NSMutableDataIBStream stream (processorData); if (FUnknownPtr (audioProcessor)->getState (&stream) != kResultTrue) { [processorData setLength:0]; } } if (editController) { NSMutableDataIBStream stream (controllerData); if (editController->getState (&stream) != kResultTrue) { [controllerData setLength:0]; } } [dict setValue:processorData forKey:@"Processor State"]; [dict setValue:controllerData forKey:@"Controller State"]; *outData = dict; return result; } //------------------------------------------------------------------------ ComponentResult AUWrapper::RestoreState (CFPropertyListRef inData) { return restoreState (inData, false); } //------------------------------------------------------------------------ ComponentResult AUWrapper::restoreState (CFPropertyListRef inData, bool fromProject) { AutoreleasePool ap; if (CFGetTypeID (inData) != CFDictionaryGetTypeID ()) return kAudioUnitErr_InvalidPropertyValue; AudioComponentDescription desc = GetComponentDescription (); CFDictionaryRef dict = static_cast (inData); if (CFDictionaryContainsKey ( dict, [NSString stringWithCString:kAUPresetPartKey encoding:NSASCIIStringEncoding])) return kAudioUnitErr_InvalidPropertyValue; #define kCurrentSavedStateVersion 0 CFNumberRef cfnum = reinterpret_cast (CFDictionaryGetValue ( dict, [NSString stringWithCString:kAUPresetVersionKey encoding:NSASCIIStringEncoding])); if (cfnum == NULL) return kAudioUnitErr_InvalidPropertyValue; SInt32 value; CFNumberGetValue (cfnum, kCFNumberSInt32Type, &value); if (value != kCurrentSavedStateVersion) return kAudioUnitErr_InvalidPropertyValue; cfnum = reinterpret_cast (CFDictionaryGetValue ( dict, [NSString stringWithCString:kAUPresetSubtypeKey encoding:NSASCIIStringEncoding])); if (cfnum == NULL) return kAudioUnitErr_InvalidPropertyValue; CFNumberGetValue (cfnum, kCFNumberSInt32Type, &value); if (UInt32 (value) != desc.componentSubType) return kAudioUnitErr_InvalidPropertyValue; cfnum = reinterpret_cast ( CFDictionaryGetValue (dict, [NSString stringWithCString:kAUPresetManufacturerKey encoding:NSASCIIStringEncoding])); if (cfnum == NULL) return kAudioUnitErr_InvalidPropertyValue; CFNumberGetValue (cfnum, kCFNumberSInt32Type, &value); if (UInt32 (value) != desc.componentManufacturer) return kAudioUnitErr_InvalidPropertyValue; ComponentResult result = noErr; if (result == noErr && audioProcessor && editController && CFGetTypeID (inData) == CFDictionaryGetTypeID ()) { // Note: the bypass state is not part of the AU state bool wasBypassed = false; if (bypassParamID != -1) { wasBypassed = editController->getParamNormalized (bypassParamID) >= 0.5 ? true : false; } NSDictionary* dict = (NSDictionary*)inData; NSData* processorData = [dict valueForKey:@"Processor State"]; auto processLen = [processorData length]; if (processLen == 0) return kAudioUnitErr_InvalidPropertyValue; if (processorData) { NSDataIBStream stream (processorData); if (fromProject) stream.getAttributes ()->setString (Vst::PresetAttributes::kStateType, String (Vst::StateType::kProject)); FUnknownPtr (audioProcessor)->setState (&stream); } NSData* controllerData = [dict valueForKey:@"Controller State"]; if (controllerData) { NSDataIBStream processorStream (processorData); editController->setComponentState (&processorStream); NSDataIBStream stream (controllerData); if (fromProject) stream.getAttributes ()->setString (Vst::PresetAttributes::kStateType, String (Vst::StateType::kProject)); editController->setState (&stream); syncParameterValues (); cacheParameterValues (); } if (bypassParamID != -1) { transferParamChanges.addChange (bypassParamID, wasBypassed ? 1 : 0, 0); editController->setParamNormalized (bypassParamID, wasBypassed ? 1 : 0); } } return result; } //------------------------------------------------------------------------ OSStatus AUWrapper::GetPresets (CFArrayRef* outData) const { if (presets && numPresets > 0) { if (outData != 0) { CFMutableArrayRef presetsArray = CFArrayCreateMutable (NULL, numPresets, NULL); for (int32 i = 0; i < numPresets; i++) { CFArrayAppendValue (presetsArray, &presets[i]); } *outData = (CFArrayRef)presetsArray; } return noErr; } return kAudioUnitErr_InvalidProperty; } //------------------------------------------------------------------------ OSStatus AUWrapper::NewFactoryPresetSet (const AUPreset& inNewFactoryPreset) { if (numPresets > 0) { float normalizedValue = (float)inNewFactoryPreset.presetNumber / (float)numPresets; transferParamChanges.addChange (factoryProgramChangedID, normalizedValue, 0); editController->setParamNormalized (factoryProgramChangedID, normalizedValue); if (inNewFactoryPreset.presetNumber < numPresets) SetAFactoryPresetAsCurrent (presets[inNewFactoryPreset.presetNumber]); return noErr; } return kAudioUnitErr_InvalidProperty; } //------------------------------------------------------------------------ ComponentResult AUWrapper::Render (AudioUnitRenderActionFlags& ioActionFlags, const AudioTimeStamp& inTimeStamp, UInt32 inNumberFrames) { updateProcessContext (); processContext.systemTime = inTimeStamp.mHostTime; processParamChanges.clearQueue (); transferParamChanges.transferChangesTo (processParamChanges); processData.numSamples = inNumberFrames; processData.processMode = isOfflineRender? kOffline : kRealtime; for (int32 i = 0; i < Inputs ().GetNumberOfElements (); i++) { AUInputElement* input = GetInput (i); if (input->IsActive ()) input->PullInput (ioActionFlags, inTimeStamp, i, inNumberFrames); processData.inputs[i].numChannels = input->GetStreamFormat ().NumberChannels (); for (int32 channel = 0; channel < input->GetStreamFormat ().NumberChannels (); channel++) { processData.inputs[i].channelBuffers32[channel] = input->IsActive () ? (Sample32*)input->GetBufferList ().mBuffers[channel].mData : 0; } } for (int32 i = 0; i < Outputs ().GetNumberOfElements (); i++) { AUOutputElement* output = GetOutput (i); output->PrepareBuffer (inNumberFrames); processData.outputs[i].numChannels = output->GetStreamFormat ().NumberChannels (); for (int32 channel = 0; channel < output->GetStreamFormat ().NumberChannels (); channel++) { processData.outputs[i].channelBuffers32[channel] = (Sample32*)output->GetBufferList ().mBuffers[channel].mData; } } audioProcessor->process (processData); outputParamTransfer.transferChangesFrom (outputParamChanges); outputParamChanges.clearQueue (); eventList.clear (); ioActionFlags &= ~kAudioUnitRenderAction_OutputIsSilence; processOutputEvents (inTimeStamp); return noErr; } const uint8 kNoteOff = 0x80; ///< note, off velocity const uint8 kNoteOn = 0x90; ///< note, on velocity const uint8 kPolyPressure = 0xA0; ///< note, pressure const uint8 kController = 0xB0; ///< controller, value const uint8 kProgramChangeStatus = 0xC0; ///< program change const uint8 kAfterTouchStatus = 0xD0; ///< channel pressure const uint8 kPitchBendStatus = 0xE0; ///< lsb, msb //const float kMidiScaler = 1.f / 127.f; static const uint8 kChannelMask = 0x0F; //static const uint8 kStatusMask = 0xF0; static const uint32 kDataMask = 0x7F; //------------------------------------------------------------------------ inline void AUWrapper::processOutputEvents (const AudioTimeStamp& inTimeStamp) { if (midiOutCount > 0 && outputEvents.getEventCount () > 0) { int32 total = outputEvents.getEventCount (); Event e = {}; for (int32 i = 0; i < total; i++) { if (outputEvents.getEvent (i, e) != kResultOk) break; //--- SYSEX ---------------- if (e.type == Event::kDataEvent && e.data.type == DataEvent::kMidiSysEx) { } else { switch (e.type) { case Event::kNoteOnEvent: { UInt8 status = (UInt8) (kNoteOn | (e.noteOn.channel & kChannelMask)); UInt8 data1 = (UInt8) (e.noteOn.pitch & kDataMask); UInt8 data2 = (UInt8) ((int32) (e.noteOn.velocity * 127.f + 0.4999999f) & kDataMask); UInt8 channel = e.noteOn.channel; if (data2 == 0) // zero velocity => note off status = (char)(kNoteOff | (e.noteOn.channel & kChannelMask)); mCallbackHelper.AddEvent (status, channel, data1, data2, e.sampleOffset); } break; case Event::kNoteOffEvent: { UInt8 status = (UInt8) (kNoteOff | (e.noteOff.channel & kChannelMask)); UInt8 data1 = e.noteOff.pitch; UInt8 data2 = (UInt8) ((int32) (e.noteOff.velocity * 127.f + 0.4999999f) & kDataMask); UInt8 channel = e.noteOff.channel; mCallbackHelper.AddEvent (status, channel, data1, data2, e.sampleOffset); } break; } } } outputEvents.clear (); mCallbackHelper.FireAtTimeStamp (inTimeStamp); } } //-------------------------------------------------------------------------------------------- ComponentResult AUWrapper::GetPropertyInfo (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, UInt32& outDataSize, Boolean& outWritable) { switch (inID) { //-------------------------- case kAudioUnitProperty_BypassEffect: { if (inScope == kAudioUnitScope_Global && bypassParamID != -1) { outWritable = true; outDataSize = sizeof (UInt32); return noErr; } return kAudioUnitErr_InvalidProperty; } //-------------------------- case kAudioUnitProperty_ParameterClumpName: { if (bypassParamID != -1) { outWritable = false; outDataSize = sizeof (AudioUnitParameterNameInfo); return noErr; } break; } //-------------------------- case kAudioUnitProperty_ParameterStringFromValue: { if (inScope == kAudioUnitScope_Global) { outDataSize = sizeof (AudioUnitParameterStringFromValue); outWritable = false; return noErr; } return kAudioUnitErr_InvalidProperty; } //-------------------------- case kAudioUnitProperty_ParameterValueFromString: { if (inScope == kAudioUnitScope_Global) { outDataSize = sizeof (AudioUnitParameterValueFromString); outWritable = false; return noErr; } return kAudioUnitErr_InvalidProperty; } //-------------------------- case kAudioUnitProperty_ElementName: { if (inScope == kAudioUnitScope_Input || inScope == kAudioUnitScope_Output) { outDataSize = sizeof (CFStringRef); return noErr; } break; } //-------------------------- case kAudioUnitProperty_CocoaUI: { outWritable = false; outDataSize = sizeof (AudioUnitCocoaViewInfo); return noErr; } //-------------------------- case kAudioUnitProperty_MIDIOutputCallbackInfo: { if (inScope == kAudioUnitScope_Global && midiOutCount > 0) { outDataSize = sizeof (CFArrayRef); outWritable = false; return noErr; } break; } //-------------------------- case kAudioUnitProperty_MIDIOutputCallback: { if (inScope == kAudioUnitScope_Global && midiOutCount > 0) { outDataSize = sizeof (AUMIDIOutputCallbackStruct); outWritable = true; return noErr; } break; } //-------------------------- case 64000: { if (editController) { outDataSize = sizeof (TPtrInt); outWritable = false; return noErr; } return kAudioUnitErr_InvalidProperty; } //-------------------------- case 64001: { if (VST3DynLibrary::gInstance) { outDataSize = sizeof (TPtrInt); outWritable = false; return noErr; } return kAudioUnitErr_InvalidProperty; } //-------------------------- case kAudioUnitProperty_OfflineRender: { if (inScope == kAudioUnitScope_Global) { outWritable = true; outDataSize = sizeof (UInt32); return noErr; } return kAudioUnitErr_InvalidProperty; } } return AUWRAPPER_BASE_CLASS::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable); } //-------------------------------------------------------------------------------------------- ComponentResult AUWrapper::SetProperty (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, const void* inData, UInt32 inDataSize) { switch (inID) { //-------------------------- case kAudioUnitProperty_BypassEffect: { if (inScope == kAudioUnitScope_Global && bypassParamID != -1) { bool tempNewSetting = *((UInt32*)inData) != 0; transferParamChanges.addChange (bypassParamID, tempNewSetting ? 1 : 0, 0); editController->setParamNormalized (bypassParamID, tempNewSetting ? 1 : 0); isBypassed = tempNewSetting; return noErr; } break; } //-------------------------- case kAudioUnitProperty_MIDIOutputCallback: { if (inScope == kAudioUnitScope_Global && midiOutCount > 0) { if (inDataSize < sizeof (AUMIDIOutputCallbackStruct)) return kAudioUnitErr_InvalidPropertyValue; AUMIDIOutputCallbackStruct* callbackStruct = (AUMIDIOutputCallbackStruct*)inData; mCallbackHelper.SetCallbackInfo (callbackStruct->midiOutputCallback, callbackStruct->userData); return noErr; } break; } //-------------------------- case kAudioUnitProperty_OfflineRender: { if (inScope == kAudioUnitScope_Global) { bool offline = *((UInt32*)inData) != 0; if(offline != isOfflineRender && audioProcessor != nullptr) { isOfflineRender = offline; FUnknownPtr component (audioProcessor); if(IsInitialized()) { audioProcessor->setProcessing (false); component->setActive (false); } ProcessSetup ps; ps.sampleRate = getSampleRate (); ps.maxSamplesPerBlock = GetMaxFramesPerSlice (); ps.symbolicSampleSize = kSample32; ps.processMode = isOfflineRender? kOffline : kRealtime; audioProcessor->setupProcessing (ps); if(IsInitialized()) { component->setActive (true); audioProcessor->setProcessing (true); } } return noErr; } break; } } return AUWRAPPER_BASE_CLASS::SetProperty (inID, inScope, inElement, inData, inDataSize); } //-------------------------------------------------------------------------------------------- bool AUWrapper::CanScheduleParameters () const { return false; } //-------------------------------------------------------------------------------------------- ComponentResult AUWrapper::GetProperty (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, void* outData) { switch (inID) { //-------------------------- case kAudioUnitProperty_BypassEffect: { if (inScope == kAudioUnitScope_Global && bypassParamID != -1) { UInt32 bypass = editController->getParamNormalized (bypassParamID) >= 0.5 ? 1 : 0; *((UInt32*)outData) = bypass; return noErr; } break; } //-------------------------- case kAudioUnitProperty_ParameterClumpName: { AudioUnitParameterNameInfo* parameterNameInfo = (AudioUnitParameterNameInfo*)outData; int32 clumpId = parameterNameInfo->inID; if (clumpId < 1 || clumpId > clumpGroups.size ()) return kAudioUnitErr_PropertyNotInUse; const String& clumpGroup = clumpGroups.at (clumpId - 1); parameterNameInfo->outName = (CFStringRef)clumpGroup.toCFStringRef (); return noErr; } //-------------------------- case kAudioUnitProperty_ParameterStringFromValue: { if (inScope == kAudioUnitScope_Global) { AudioUnitParameterStringFromValue* ps = (AudioUnitParameterStringFromValue*)outData; String128 paramString; if (editController->getParamStringByValue ( ps->inParamID, ps->inValue ? *ps->inValue : editController->getParamNormalized (ps->inParamID), paramString) == kResultTrue) ps->outString = createCFStringFromString128 (paramString); else ps->outString = CFStringCreateWithCString (0, "", kCFStringEncodingUTF8); return noErr; } return kAudioUnitErr_InvalidProperty; } //-------------------------- case kAudioUnitProperty_ParameterValueFromString: { if (inScope == kAudioUnitScope_Global) { AudioUnitParameterValueFromString* ps = (AudioUnitParameterValueFromString*)outData; String128 paramString; createString128FromCFString (ps->inString, paramString); ParamValue value; if (editController->getParamValueByString (ps->inParamID, paramString, value) == kResultTrue) { ps->outValue = value; return noErr; } return -1; } return kAudioUnitErr_InvalidProperty; } //-------------------------- case kAudioUnitProperty_ElementName: { if (inScope == kAudioUnitScope_Input || inScope == kAudioUnitScope_Output) { FUnknownPtr component (audioProcessor); BusInfo busInfo; if (component->getBusInfo (kAudio, inScope == kAudioUnitScope_Input ? kInput : kOutput, inElement, busInfo) == kResultTrue) { outData = (void*)createCFStringFromString128 (busInfo.name); return noErr; } } return kAudioUnitErr_InvalidProperty; } //-------------------------- case kAudioUnitProperty_CocoaUI: { AutoreleasePool ap; CFStringRef className = (CFStringRef)[[NSString alloc] initWithCString:SMTG_MAKE_STRING (SMTG_AUCocoaUIBase_CLASS_NAME) encoding:NSUTF8StringEncoding]; const char* image = class_getImageName ( objc_getClass (SMTG_MAKE_STRING (SMTG_AUCocoaUIBase_CLASS_NAME))); CFBundleRef bundle = GetBundleFromExecutable (image); CFURLRef url = CFBundleCopyBundleURL (bundle); CFRelease (bundle); AudioUnitCocoaViewInfo cocoaInfo = {url, {className}}; *((AudioUnitCocoaViewInfo*)outData) = cocoaInfo; return noErr; } //-------------------------- case kAudioUnitProperty_MIDIOutputCallbackInfo: { if (inScope == kAudioUnitScope_Global && midiOutCount > 0) { CFStringRef strs[1]; strs[0] = CFSTR ("MIDI Callback"); CFArrayRef callbackArray = CFArrayCreate (NULL, (const void**)strs, 1, &kCFTypeArrayCallBacks); *(CFArrayRef*)outData = callbackArray; return noErr; } return kAudioUnitErr_InvalidProperty; } //-------------------------- case 64000: { if (editController) { TPtrInt ptr = (TPtrInt)editController; *((TPtrInt*)outData) = ptr; return noErr; } else *((TPtrInt*)outData) = 0; return kAudioUnitErr_InvalidProperty; } //-------------------------- case 64001: { if (VST3DynLibrary::gInstance) { TPtrInt ptr = (TPtrInt)VST3DynLibrary::gInstance.get(); *((TPtrInt*)outData) = ptr; return noErr; } else *((TPtrInt*)outData) = 0; return kAudioUnitErr_InvalidProperty; } } return AUWRAPPER_BASE_CLASS::GetProperty (inID, inScope, inElement, outData); } #if !CA_USE_AUDIO_PLUGIN_ONLY //------------------------------------------------------------------------ int AUWrapper::GetNumCustomUIComponents () { #if !__LP64__ if (editController) { static int numUIComponents = 0; static bool once = true; if (once) { AutoreleasePool ap; once = false; IPlugView* plugView = editController->createView (ViewType::kEditor); if (plugView) { if (plugView->isPlatformTypeSupported (kPlatformTypeHIView) == kResultTrue) numUIComponents = 1; plugView->release (); } } return numUIComponents; } #endif return 0; } //------------------------------------------------------------------------ void AUWrapper::GetUIComponentDescs (ComponentDescription* inDescArray) { #if !__LP64__ if (editController && GetNumCustomUIComponents () > 0) { static OSType subType = 0; static OSType manuf = 0; static bool once = true; if (once) { once = false; short prevResFile = CurResFile (); CFBundleRef bundle = GetCurrentBundle (); if (!bundle) return; short resourceFileID = CFBundleOpenBundleResourceMap (bundle); UseResFile (resourceFileID); Handle h = Get1Resource ('thng', 9000); if (h) { HLock (h); OSType* hPtr = (OSType*)*h; subType = hPtr[1]; manuf = hPtr[2]; HUnlock (h); } UseResFile (prevResFile); CFRelease (bundle); } inDescArray[0].componentType = kAudioUnitCarbonViewComponentType; inDescArray[0].componentSubType = subType; inDescArray[0].componentManufacturer = manuf; inDescArray[0].componentFlags = 0; inDescArray[0].componentFlagsMask = 0; } #endif } #endif // #if !CA_USE_AUDIO_PLUGIN_ONLY //------------------------------------------------------------------------ Float64 AUWrapper::GetLatency () { Float64 latencyInSeconds = 0.0; if (audioProcessor) latencyInSeconds = audioProcessor->getLatencySamples () / getSampleRate (); return latencyInSeconds; } //------------------------------------------------------------------------ Float64 AUWrapper::GetTailTime () { Float64 tailTimeInSeconds = 0.0; if (audioProcessor) tailTimeInSeconds = audioProcessor->getTailSamples () / getSampleRate (); return tailTimeInSeconds; } //------------------------------------------------------------------------ // MARK: MusicDeviceBase //------------------------------------------------------------------------ ComponentResult AUWrapper::StartNote (MusicDeviceInstrumentID inInstrument, MusicDeviceGroupID inGroupID, NoteInstanceID* outNoteInstanceID, UInt32 inOffsetSampleFrame, const MusicDeviceNoteParams& inParams) { NoteInstanceID noteID = ((UInt8)inParams.mPitch) | ((noteCounter++) << 8); Event e = {}; e.type = Event::kNoteOnEvent; e.noteOn.pitch = inParams.mPitch; e.noteOn.velocity = inParams.mVelocity / 127.; e.noteOn.noteId = noteID; e.sampleOffset = inOffsetSampleFrame; // The Group ID is the channel with a standard midi device e.noteOn.channel = inGroupID; eventList.addEvent (e); if (outNoteInstanceID) *outNoteInstanceID = noteID; return noErr; } //------------------------------------------------------------------------ ComponentResult AUWrapper::StopNote (MusicDeviceGroupID inGroupID, NoteInstanceID inNoteInstanceID, UInt32 inOffsetSampleFrame) { UInt32 pitch = inNoteInstanceID & 0xFF; Event e = {}; e.type = Event::kNoteOffEvent; e.noteOff.pitch = pitch; e.noteOff.velocity = 0; e.noteOff.noteId = inNoteInstanceID; e.sampleOffset = inOffsetSampleFrame; // The Group ID is the channel with a standard midi device e.noteOff.channel = inGroupID; eventList.addEvent (e); return noErr; } #if !CA_USE_AUDIO_PLUGIN_ONLY //-------------------------------------------------------------------------------------------- OSStatus AUWrapper::GetInstrumentCount (UInt32& outInstCount) const { outInstCount = 1; return noErr; } #endif #if !CA_USE_AUDIO_PLUGIN_ONLY //------------------------------------------------------------------------ // MARK: AUMIDIBase //------------------------------------------------------------------------ OSStatus AUWrapper::HandleNonNoteEvent (UInt8 status, UInt8 channel, UInt8 data1, UInt8 data2, UInt32 inStartFrame) { OSStatus result = noErr; if (status == kPolyPressure) // kMidiMessage_PolyPressure { Event e = {}; e.type = Event::kPolyPressureEvent; e.polyPressure.channel = channel; e.polyPressure.pitch = data1; e.polyPressure.pressure = data2 / 127.; e.sampleOffset = inStartFrame; eventList.addEvent (e); return result; } if (!midiMapping) return result; ParamID pid = 0; ParamValue value = 0; CtrlNumber cn = -1; bool prgChange = false; switch (status) { case kPitchBendStatus: // kMidiMessage_PitchWheel { cn = kPitchBend; unsigned short _14bit; _14bit = (unsigned short)data2; _14bit <<= 7; _14bit |= (unsigned short)data1; value = (double)_14bit / (double)0x3FFF; break; } case kAfterTouchStatus: // kMidiMessage_ChannelPressure { cn = kAfterTouch; value = data1 / 127.f; break; } case kController: // kMidiMessage_ControlChange { cn = data1; value = data2 / 127.f; break; } case kProgramChangeStatus: // kMidiMessage_ProgramChange { pid = programChangeParameters[channel]; if (pid != kNoParamId) { ParameterInfo paramInfo = {}; if (editController->getParameterInfo (pid, paramInfo) == kResultTrue) { if (paramInfo.stepCount > 0 && data1 <= paramInfo.stepCount) { value = (ParamValue)data1 / (ParamValue)paramInfo.stepCount; prgChange = true; } } } } } if (prgChange || (cn >= 0 && (midiMapping->getMidiControllerAssignment (0, channel, cn, pid) == kResultTrue))) { beginEdit (pid); performEdit (pid, value); endEdit (pid); // make sure that our edit controller get the changes int32 index; IParamValueQueue* vq = outputParamChanges.addParameterData (pid, index); if (vq) vq->addPoint (inStartFrame, value, index); } return result; } #endif //------------------------------------------------------------------------ // MARK: IComponentHandler //------------------------------------------------------------------------ tresult PLUGIN_API AUWrapper::beginEdit (ParamID tag) { AudioUnitEvent auEvent; auEvent.mArgument.mParameter.mAudioUnit = GetComponentInstance (); auEvent.mArgument.mParameter.mParameterID = tag; auEvent.mArgument.mParameter.mScope = kAudioUnitScope_Global; auEvent.mArgument.mParameter.mElement = 0; auEvent.mEventType = kAudioUnitEvent_BeginParameterChangeGesture; AUEventListenerNotify (paramListenerRef, NULL, &auEvent); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API AUWrapper::performEdit (ParamID tag, ParamValue valueNormalized) { AudioUnitParameter sPar = {GetComponentInstance (), tag, kAudioUnitScope_Global, 0}; AUParameterSet (paramListenerRef, NULL, &sPar, valueNormalized, 0); AudioUnitEvent auEvent; auEvent.mArgument.mParameter.mAudioUnit = GetComponentInstance (); auEvent.mArgument.mParameter.mParameterID = tag; auEvent.mArgument.mParameter.mScope = kAudioUnitScope_Global; auEvent.mArgument.mParameter.mElement = 0; auEvent.mEventType = kAudioUnitEvent_ParameterValueChange; AUEventListenerNotify (paramListenerRef, NULL, &auEvent); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API AUWrapper::endEdit (ParamID tag) { AudioUnitEvent auEvent; auEvent.mArgument.mParameter.mAudioUnit = GetComponentInstance (); auEvent.mArgument.mParameter.mParameterID = tag; auEvent.mArgument.mParameter.mScope = kAudioUnitScope_Global; auEvent.mArgument.mParameter.mElement = 0; auEvent.mEventType = kAudioUnitEvent_EndParameterChangeGesture; AUEventListenerNotify (paramListenerRef, NULL, &auEvent); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API AUWrapper::restartComponent (int32 flags) { tresult result = kNotImplemented; if (flags & kParamValuesChanged) { syncParameterValues (); result = kResultTrue; } if (flags & kParamTitlesChanged) { cacheParameterValues (); result = kResultTrue; PropertyChanged (kAudioUnitProperty_ParameterList, kAudioUnitScope_Global, 0); } if (flags & kLatencyChanged) { AudioUnitEvent auEvent; auEvent.mArgument.mProperty.mAudioUnit = GetComponentInstance (); auEvent.mArgument.mProperty.mPropertyID = kAudioUnitProperty_Latency; auEvent.mArgument.mProperty.mScope = kAudioUnitScope_Global; auEvent.mArgument.mProperty.mElement = 0; auEvent.mEventType = kAudioUnitEvent_PropertyChange; AUEventListenerNotify (paramListenerRef, NULL, &auEvent); result = kResultTrue; } // TODO: finish restartComponent implementation return result; } //------------------------------------------------------------------------ // MARK: Helpers //------------------------------------------------------------------------ void AUWrapper::syncParameterValues () { if (editController) { for (int32 i = 0; i < editController->getParameterCount (); i++) { ParameterInfo pi; editController->getParameterInfo (i, pi); if (pi.flags & ParameterInfo::kIsBypass) { bypassParamID = pi.id; } else { ParamValue value = editController->getParamNormalized (pi.id); GlobalScope ().GetElement (0)->SetParameter (pi.id, value); } } } } //------------------------------------------------------------------------ void AUWrapper::cacheParameterValues () { clearParameterValueCache (); if (editController) { Steinberg::Base::Thread::FGuard guard (parameterCacheChanging); FUnknownPtr unitInfoController (editController); if (unitInfoController) { if (unitInfos.empty ()) buildUnitInfos (unitInfoController, unitInfos); } // This must be cached! for (int32 i = 0; i < editController->getParameterCount (); i++) { AudioUnitParameterInfo auInfo; ParameterInfo pi; editController->getParameterInfo (i, pi); int32 clumpIdx = 0; // Zero should be reserved for values that are not clumped // Build clump group if possible if (unitInfoController) { String fullUnitName; ConstString separator (STR (".")); bool insertSeparator = false; UnitInfoMap::const_iterator it = unitInfos.find (pi.unitId); while (it != unitInfos.end () && it->second.id != kRootUnitId) { ConstString unitName (it->second.name); if (unitName.length () > 0) { if (insertSeparator) fullUnitName.insertAt (0, separator); insertSeparator = true; fullUnitName.insertAt (0, unitName); } it = unitInfos.find (it->second.parentUnitId); } if (!fullUnitName.isEmpty ()) { bool insertClump = true; clumpIdx = 1; for (int32 i = 0; i < clumpGroups.size (); i++) { const String& str = clumpGroups.at (i); if (str.compare (fullUnitName) == 0) { insertClump = false; break; } ++clumpIdx; } if (insertClump) clumpGroups.push_back (fullUnitName); } } auInfo.name[0] = 0; auInfo.cfNameString = createCFStringFromString128 (pi.title); auInfo.defaultValue = pi.defaultNormalizedValue; auInfo.minValue = 0; auInfo.maxValue = 1; auInfo.unit = kAudioUnitParameterUnit_CustomUnit; auInfo.unitName = createCFStringFromString128 (pi.units); // We release this ourselved when emptying the cache auInfo.flags = /*kAudioUnitParameterFlag_CFNameRelease |*/ kAudioUnitParameterFlag_HasCFNameString | kAudioUnitParameterFlag_IsReadable | kAudioUnitParameterFlag_HasName; if (clumpIdx > 0) AUBase::HasClump (auInfo, clumpIdx); if (!(pi.flags & ParameterInfo::kIsReadOnly)) auInfo.flags |= kAudioUnitParameterFlag_IsWritable; if (!(pi.flags & ParameterInfo::kCanAutomate)) auInfo.flags |= kAudioUnitParameterFlag_NonRealTime; if (pi.stepCount == 1) auInfo.unit = kAudioUnitParameterUnit_Boolean; cachedParameterInfos[pi.id] = auInfo; } } } //------------------------------------------------------------------------ void AUWrapper::clearParameterValueCache () { Steinberg::Base::Thread::FGuard guard (parameterCacheChanging); for (CachedParameterInfoMap::const_iterator it = cachedParameterInfos.begin (), end = cachedParameterInfos.end (); it != end; ++it) { CFRelease (it->second.cfNameString); CFRelease (it->second.unitName); } cachedParameterInfos.clear (); } //------------------------------------------------------------------------ void AUWrapper::updateProcessContext () { memset (&processContext, 0, sizeof (ProcessContext)); processContext.sampleRate = getSampleRate (); Float64 beat = 0; Float64 tempo = 0; if (CallHostBeatAndTempo (&beat, &tempo) == noErr) { processContext.state |= ProcessContext::kTempoValid | ProcessContext::kProjectTimeMusicValid; processContext.tempo = tempo; processContext.projectTimeMusic = beat; } UInt32 deltaSampleOffsetToNextBeat = 0; Float32 timeSigNumerator = 0; UInt32 timeSigDenominator = 0; Float64 currentMeasureDownBeat = 0; if (CallHostMusicalTimeLocation (&deltaSampleOffsetToNextBeat, &timeSigNumerator, &timeSigDenominator, ¤tMeasureDownBeat) == noErr) { processContext.state |= ProcessContext::kTimeSigValid | ProcessContext::kBarPositionValid | ProcessContext::kClockValid; processContext.timeSigNumerator = timeSigNumerator; processContext.timeSigDenominator = timeSigDenominator; processContext.samplesToNextClock = deltaSampleOffsetToNextBeat; processContext.barPositionMusic = currentMeasureDownBeat; } Boolean isPlaying; Boolean transportStateChanged; Float64 currentSampleInTimeLine; Boolean isCycling; Float64 cycleStartBeat; Float64 cycleEndBeat; if (CallHostTransportState (&isPlaying, &transportStateChanged, ¤tSampleInTimeLine, &isCycling, &cycleStartBeat, &cycleEndBeat) == noErr) { processContext.state |= ProcessContext::kCycleValid; processContext.cycleStartMusic = cycleStartBeat; processContext.cycleEndMusic = cycleEndBeat; processContext.projectTimeSamples = currentSampleInTimeLine; if (isPlaying) processContext.state |= ProcessContext::kPlaying; if (isCycling) processContext.state |= ProcessContext::kCycleActive; } } //------------------------------------------------------------------------ void AUWrapper::onTimer (Timer* timer) { ParamID pid; ParamValue value; int32 sampleOffset; while (outputParamTransfer.getNextChange (pid, value, sampleOffset)) { GlobalScope ().GetElement (0)->SetParameter (pid, value); AudioUnitParameter auParam = {}; auParam.mAudioUnit = GetComponentInstance (); auParam.mElement = 0; auParam.mScope = kAudioUnitScope_Global; auParam.mParameterID = pid; AUParameterListenerNotify (paramListenerRef, 0, &auParam); editController->setParamNormalized (pid, value); } if (isBypassed) { ProcessData bypassData = processData; bypassData.numSamples = 0; processParamChanges.clearQueue (); transferParamChanges.transferChangesTo (processParamChanges); if (processParamChanges.getParameterCount () > 0) { audioProcessor->process (bypassData); outputParamTransfer.transferChangesFrom (outputParamChanges); outputParamChanges.clearQueue (); } } } //------------------------------------------------------------------------ bool AUWrapper::validateChannelPair (int inChannelsIn, int inChannelsOut, const AUChannelInfo* info, UInt32 numChanInfo) const { // we've the following cases (some combinations) to test here: /* >0 An explicit number of channels on either side 0 that side (generally input!) has no elements -1 wild card: -1,-1 any num channels as long as same channels on in and out -1,-2 any num channels channels on in and out - special meaning -2+ indicates total num channs AU can handle - elements configurable to any num channels, - element count in scope must be writable */ // now chan layout can contain -1 for either scope (ie. doesn't care) for (unsigned int i = 0; i < numChanInfo; ++i) { // less than zero on both sides - check for special attributes if ((info[i].inChannels < 0) && (info[i].outChannels < 0)) { // these are our wild card matches if (info[i].inChannels == -1 && info[i].outChannels == -1) { if (inChannelsIn && inChannelsOut) { if (inChannelsOut == inChannelsIn) return true; } else return true; // if one of these is zero, then a -1 means any } else if ((info[i].inChannels == -1 && info[i].outChannels == -2) || (info[i].inChannels == -2 && info[i].outChannels == -1)) { return true; } // these are our total num channels matches // element count MUST be writable else { bool outWrite = false; bool inWrite = false; // IsElementCountWritable (kAudioUnitScope_Output, outWrite); // IsElementCountWritable (kAudioUnitScope_Input, inWrite); if (inWrite && outWrite) { if ((inChannelsOut <= abs (info[i].outChannels)) && (inChannelsIn <= abs (info[i].inChannels))) { return true; } } } } // special meaning on input, specific num on output else if (info[i].inChannels < 0) { if (info[i].outChannels == inChannelsOut) { // can do any in channels if (info[i].inChannels == -1) { return true; } // total chans on input else { bool inWrite = false; // IsElementCountWritable (kAudioUnitScope_Input, inWrite); if (inWrite && (inChannelsIn <= abs (info[i].inChannels))) { return true; } } } } // special meaning on output, specific num on input else if (info[i].outChannels < 0) { if (info[i].inChannels == inChannelsIn) { // can do any out channels if (info[i].outChannels == -1) { return true; } // total chans on output else { bool outWrite = false; // IsElementCountWritable (kAudioUnitScope_Output, outWrite); if (outWrite && (inChannelsOut <= abs (info[i].outChannels))) { return true; } } } } // both chans in struct >= 0 - thus has to explicitly match else if ((info[i].inChannels == inChannelsIn) && (info[i].outChannels == inChannelsOut)) { return true; } // now check to see if a wild card on the args (inChannelsIn or inChannelsOut chans is zero) // is found // tells us to match just one side of the scopes else if (inChannelsIn == 0) { if (info[i].outChannels == inChannelsOut) { return true; } } else if (inChannelsOut == 0) { if (info[i].inChannels == inChannelsIn) { return true; } } } return false; } //------------------------------------------------------------------------ bool AUWrapper::getProgramListAndUnit (int32 midiChannel, UnitID& unitId, ProgramListID& programListId) { programListId = kNoProgramListId; unitId = -1; IUnitInfo* unitInfo = NULL; if (editController && editController->queryInterface (IUnitInfo::iid, (void**)&unitInfo) == kResultTrue && unitInfo) { if (unitInfo->getUnitByBus (kEvent, kInput, 0, midiChannel, unitId) == kResultTrue) { int32 unitCount = unitInfo->getUnitCount (); for (int32 i = 0; i < unitCount; i++) { UnitInfo unitInfoStruct = {}; if (unitInfo->getUnitInfo (i, unitInfoStruct) == kResultTrue) { if (unitId == unitInfoStruct.id) { programListId = unitInfoStruct.programListId; unitInfo->release (); return programListId != kNoProgramListId; } } } } unitInfo->release (); } return false; } #if !CA_USE_AUDIO_PLUGIN_ONLY // copied from AUDispatch.cpp #if __LP64__ // comp instance, parameters in forward order #define PARAM(_typ, _name, _index, _nparams) _typ _name = *(_typ*)¶ms->params[_index + 1]; #else // parameters in reverse order, then comp instance #define PARAM(_typ, _name, _index, _nparams) \ _typ _name = *(_typ*)¶ms->params[_nparams - 1 - _index]; #endif //------------------------------------------------------------------------ ComponentResult AUWrapper::ComponentEntryDispatch (ComponentParameters* params, AUWrapper* This) { OSStatus result = noErr; switch (params->what) { case kAudioUnitSetPropertySelect: { PARAM (AudioUnitPropertyID, inID, 0, 5); if (inID == kAudioUnitProperty_ClassInfoFromDocument) { PARAM (AudioUnitScope, inScope, 1, 5); // PARAM (AudioUnitElement, inElement, 2, 5); PARAM (const void*, inData, 3, 5); PARAM (UInt32, inDataSize, 4, 5); ca_require (inDataSize == sizeof (CFPropertyListRef*), InvalidPropertyValue); ca_require (inScope == kAudioUnitScope_Global, InvalidScope); result = This->restoreState (*(CFPropertyListRef*)inData, true); return result; } break; } } return AUWRAPPER_BASE_CLASS::ComponentEntryDispatch (params, This); InvalidScope: return kAudioUnitErr_InvalidScope; InvalidPropertyValue: return kAudioUnitErr_InvalidPropertyValue; } #endif //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ class CleanupMemory { public: CleanupMemory () {} ~CleanupMemory () { if (channelInfos) { delete[] channelInfos; channelInfos = 0; } } }; CleanupMemory _gCleanupMemory; CleanupMemory* gCleanupMemory = &_gCleanupMemory; static OSStatus AUWrapperMethodSetProperty (void* self, AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, const void* inData, UInt32 inDataSize) { auto plugInstance = reinterpret_cast (self); auto auwrapper = reinterpret_cast (&plugInstance->mInstanceStorage); try { if (inData && inDataSize && inID == kAudioUnitProperty_ClassInfoFromDocument) { ca_require(inDataSize == sizeof(CFPropertyListRef *), InvalidPropertyValue); ca_require(inScope == kAudioUnitScope_Global, InvalidScope); return auwrapper->restoreState(*(CFPropertyListRef *)inData, true); } return auwrapper->DispatchSetProperty(inID, inScope, inElement, inData, inDataSize); } catch (OSStatus err) { return err; } catch (...) { return -1; } InvalidScope: return kAudioUnitErr_InvalidScope; InvalidPropertyValue: return kAudioUnitErr_InvalidPropertyValue; } struct AUWrapperLookup { static AudioComponentMethod Lookup (SInt16 selector) { // ProcessBufferLists not supported, so don't try any of the process methods if (selector == kAudioUnitProcessSelect || selector == kAudioUnitProcessMultipleSelect) return NULL; if (selector == kAudioUnitSetPropertySelect) return (AudioComponentMethod)AUWrapperMethodSetProperty; AudioComponentMethod method = AUBaseProcessLookup::Lookup (selector); if (method) return method; method = AUMusicLookup::Lookup (selector); if (method) return method; method = AUBaseProcessMultipleLookup::Lookup (selector); if (method) return method; return NULL; } }; template class AUFactory : public APFactory { }; //------------------------------------------------------------------------ // new entry method extern "C" { void* AUWrapperFactory (const AudioComponentDescription* inDesc); __attribute__ ((visibility ("default"))) void* AUWrapperFactory ( const AudioComponentDescription* inDesc) { return AUFactory::Factory (inDesc); } } // extern "C" #if !CA_USE_AUDIO_PLUGIN_ONLY //------------------------------------------------------------------------ // old entry method extern "C" { ComponentResult AUWrapperEntry (ComponentParameters* params, AUWrapper* obj); __attribute__ ((visibility ("default"))) ComponentResult AUWrapperEntry ( ComponentParameters* params, AUWrapper* obj) { return ComponentEntryPoint::Dispatch (params, obj); } } #endif //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/auwrapper_prefix.pch000066400000000000000000000042371461511344300245570ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/auwrapper_prefix.pch // Created by : Steinberg, 12/2007 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include #include vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/config/000077500000000000000000000000001461511344300217375ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/config/ausdkpath.xcconfig000066400000000000000000000045051461511344300254510ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : ausdkpath.xcconfig // Created by : Steinberg, 5/24/12 // Description : Xcode configuration file to specify paths to the AU SDK files, VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- // If you are building with Xcode >= 4.x please add the path to your downloaded Audio Tools for Xcode CUSTOM_AU_SDK_PATH=/Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/ // AUWRAPPER_CHANGE vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/config/auwrapper.xcconfig000066400000000000000000000050731461511344300254740ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : auwrapper.xcconfig // Created by : Steinberg, 5/24/12 // Description : Xcode configuration file to specify paths to the AU SDK files, VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "../../../../../base/mac/config/libc++base" #include "ausdkpath" PRODUCT_NAME = auwrapper HEADER_SEARCH_PATHS = ../../../.. $(DEVELOPER_DIR)/Examples/CoreAudio/** $(DEVELOPER_DIR)/Extras/CoreAudio/** $(DEVELOPER_DIR)/Extras/CoreAudio/AudioUnits/AUPublic/AUViewBase/** ../../../../external.apple.coreaudio/** GCC_PREFIX_HEADER = auwrapper_prefix.pch GCC_PRECOMPILE_PREFIX_HEADER = YES CLANG_CXX_LANGUAGE_STANDARD = c++17 CLANG_CXX_LIBRARY = libc++ vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/config/auwrapper_debug.xcconfig000066400000000000000000000043411461511344300266370ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : ausdkpath_debug.xcconfig // Created by : Steinberg, 5/24/12 // Description : Xcode configuration file to specify paths to the AU SDK files, VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "../../../../../base/mac/config/debug" GCC_OPTIMIZATION_LEVEL = 0 DEPLOYMENT_POSTPROCESSING = NO vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/config/auwrapper_release.xcconfig000066400000000000000000000043461461511344300271760ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : auwrapper_release.xcconfig // Created by : Steinberg, 5/24/12 // Description : Xcode configuration file to specify paths to the AU SDK files, VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "../../../../../base/mac/config/release" GCC_OPTIMIZATION_LEVEL = 3 DEPLOYMENT_POSTPROCESSING = NO vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/docAUv2.h000066400000000000000000000071721461511344300221150ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/auwrapper/docAUv2.h // Created by : Steinberg, 07/2017 // Description : VST 3 -> AU Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /** ******************************************* \page AUWrapper VST 3 - Audio Unit Wrapper ******************************************* \tableofcontents \brief Helper Class wrapping a VST 3 plug-in to an Audio Unit v2 plug-in *************************** \section AUIntroduction Introduction *************************** The VST 3 SDK comes with an AudioUnit wrapper, which wraps one VST 3 Audio Processor and Edit Controller as an AudioUnit effect/instrument. The wrapper is a small dynamic library which loads the VST 3 plug-in. No extra code is needed to be written. \n *************************** \section AUhowdoesitwork How does it work? *************************** to add an AUv2 to your VST3 plug-in you have to use cmake and call the cmake function: @code #------------------------------------------------------------------------ # Add an AudioUnit Version 2 target for macOS # @param target target name # @param bundle_name name of the bundle # @param bundle_identifier bundle identifier # @param info_plist_template the info.plist file containing the needed AudioUnit keys # @param vst3_plugin_target the vst3 plugin target #------------------------------------------------------------------------ function(smtg_target_add_auv2 target bundle_name bundle_identifier info_plist_template vst3_plugin_target) @endcode This adds a new target to your project which builds and setup the AudioUnit. After successfully building the AU should be copied to your user Library folder (Library/Audio/Components/) and ready to be used. */ vst3sdk-3.7.10.14+~4.13.3/source/vst/auwrapper/usediids.cpp000066400000000000000000000067061461511344300230200ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Validator // Filename : usediids.cpp // Created by : Steinberg 09.2008 // Description : Interface symbols file // //----------------------------------------------------------------------------- // LICENSE // (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- //#define INIT_CLASS_IID // This macro definition modifies the behavior of DECLARE_CLASS_IID (funknown.h) // and produces the actual symbols for all interface identifiers. // It must be defined before including the interface headers and // in only one source file! //------------------------------------------------------------------------ //#define INIT_CLASS_IID #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivsthostapplication.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/ivstpluginterfacesupport.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstunits.h" namespace Steinberg { DEF_CLASS_IID (Vst::IAttributeList) DEF_CLASS_IID (Vst::IAudioProcessor) DEF_CLASS_IID (Vst::IEditController) DEF_CLASS_IID (Vst::IEditController2) DEF_CLASS_IID (Vst::IComponent) DEF_CLASS_IID (Vst::IComponentHandler) DEF_CLASS_IID (Vst::IConnectionPoint) DEF_CLASS_IID (Vst::IEventList) DEF_CLASS_IID (Vst::IHostApplication) DEF_CLASS_IID (Vst::IMessage) DEF_CLASS_IID (Vst::IMidiMapping) DEF_CLASS_IID (Vst::IParameterChanges) DEF_CLASS_IID (Vst::IParamValueQueue) DEF_CLASS_IID (Vst::IPlugInterfaceSupport) DEF_CLASS_IID (Vst::IProgramListData) DEF_CLASS_IID (Vst::IStreamAttributes) DEF_CLASS_IID (Vst::IVst3ToAUWrapper) DEF_CLASS_IID (Vst::IUnitData) DEF_CLASS_IID (Vst::IUnitInfo) } vst3sdk-3.7.10.14+~4.13.3/source/vst/basewrapper/000077500000000000000000000000001461511344300207775ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/basewrapper/basewrapper.cpp000066400000000000000000001217211461511344300240220ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vst2wrapper/basewrapper.cpp // Created by : Steinberg, 01/2009 // Description : VST 3 -> VST 2 Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #include "public.sdk/source/vst/basewrapper/basewrapper.h" #include "public.sdk/source/vst/hosting/connectionproxy.h" #include "public.sdk/source/vst/hosting/hostclasses.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/keycodes.h" #include "pluginterfaces/gui/iplugview.h" #include "pluginterfaces/vst/ivstmessage.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/vstpresetkeys.h" #include "base/source/fstreamer.h" #include #include #include #if SMTG_OS_MACOS #include #include #endif extern "C" { #if SMTG_OS_MACOS // implemented in macmain.cpp SMTG_EXPORT_SYMBOL bool bundleEntry (CFBundleRef); SMTG_EXPORT_SYMBOL bool bundleExit (void); #elif SMTG_OS_WINDOWS // implemented in dllmain.cpp SMTG_EXPORT_SYMBOL bool InitDll (); SMTG_EXPORT_SYMBOL bool ExitDll (); #else #error platform not supported! #endif } #if SMTG_OS_MACOS //------------------------------------------------------------------------ static CFBundleRef GetBundleFromExecutable (const char* filepath) { // AutoreleasePool ap; char* fname = strdup (filepath); size_t pos = strlen (fname); int level = 3; while (level > 0 && --pos >= 0) { if (fname[pos] == '/') level--; } if (level > 0) return 0; fname[pos] = 0; CFURLRef url = CFURLCreateFromFileSystemRepresentation (0, (const UInt8*)fname, pos, true); CFBundleRef bundle = CFBundleCreate (0, url); return bundle; } //------------------------------------------------------------------------ static CFBundleRef GetCurrentBundle () { Dl_info info; if (dladdr ((const void*)GetCurrentBundle, &info)) { if (info.dli_fname) { return GetBundleFromExecutable (info.dli_fname); } } return 0; } #endif // SMTG_OS_MACOS //------------------------------------------------------------------------ bool _InitModule () { #if SMTG_OS_MACOS return bundleEntry (GetCurrentBundle ()); #else return InitDll (); #endif } //------------------------------------------------------------------------ bool _DeinitModule () { #if SMTG_OS_MACOS return bundleExit (); #else return ExitDll (); #endif } //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // some Globals //------------------------------------------------------------------------ // In order to speed up hasEditor function gPluginHasEditor can be set in EditController::initialize enum { kDontKnow = -1, kNoEditor = 0, kEditor, }; // default: kDontKnow which uses createView to find out using EditorAvailability = int32; EditorAvailability gPluginHasEditor = kDontKnow; // Set to 'true' in EditController::initialize // default: VST 3 kIsProgramChange parameter will not be exported bool gExportProgramChangeParameters = false; //------------------------------------------------------------------------ BaseEditorWrapper::BaseEditorWrapper (IEditController* controller) : mController (controller), mView (nullptr) { } //------------------------------------------------------------------------ BaseEditorWrapper::~BaseEditorWrapper () { if (mView) _close (); mController = nullptr; } //------------------------------------------------------------------------ tresult PLUGIN_API BaseEditorWrapper::queryInterface (const char* _iid, void** obj) { QUERY_INTERFACE (_iid, obj, FUnknown::iid, IPlugFrame) QUERY_INTERFACE (_iid, obj, IPlugFrame::iid, IPlugFrame) *obj = nullptr; return kNoInterface; } //------------------------------------------------------------------------ tresult PLUGIN_API BaseEditorWrapper::resizeView (IPlugView* view, ViewRect* newSize) { tresult result = kResultFalse; if (view && newSize) { result = view->onSize (newSize); } return result; } //------------------------------------------------------------------------ bool BaseEditorWrapper::hasEditor (IEditController* controller) { /* Some plug-ins might have large GUIs. In order to speed up hasEditor function while * initializing the plug-in gPluginHasEditor can be set in EditController::initialize * beforehand. */ bool result = false; if (gPluginHasEditor == kEditor) { result = true; } else if (gPluginHasEditor == kNoEditor) { result = false; } else { IPlugView* view = controller ? controller->createView (ViewType::kEditor) : nullptr; FReleaser viewRel (view); result = (view != nullptr); } return result; } //------------------------------------------------------------------------ void BaseEditorWrapper::createView () { if (mView == nullptr && mController != nullptr) { mView = owned (mController->createView (ViewType::kEditor)); mView->setFrame (this); #if SMTG_OS_MACOS #if SMTG_PLATFORM_64 if (mView && mView->isPlatformTypeSupported (kPlatformTypeNSView) != kResultTrue) #else if (mView && mView->isPlatformTypeSupported (kPlatformTypeHIView) != kResultTrue) #endif { mView = nullptr; mController = nullptr; } #endif } } //------------------------------------------------------------------------ bool BaseEditorWrapper::getRect (ViewRect& rect) { createView (); if (!mView) return false; if (mView->getSize (&rect) == kResultTrue) { if ((rect.bottom - rect.top) > 0 && (rect.right - rect.left) > 0) { mViewRect = rect; return true; } } return false; } //------------------------------------------------------------------------ bool BaseEditorWrapper::_open (void* ptr) { createView (); if (mView) { #if SMTG_OS_WINDOWS FIDString type = kPlatformTypeHWND; #elif SMTG_OS_MACOS && SMTG_PLATFORM_64 FIDString type = kPlatformTypeNSView; #elif SMTG_OS_MACOS FIDString type = kPlatformTypeHIView; #endif return mView->attached (ptr, type) == kResultTrue; } return false; } //------------------------------------------------------------------------ void BaseEditorWrapper::_close () { if (mView) { mView->setFrame (nullptr); mView->removed (); mView = nullptr; } } //------------------------------------------------------------------------ bool BaseEditorWrapper::_setKnobMode (Vst::KnobMode val) { bool result = false; FUnknownPtr editController2 (mController); if (editController2) result = editController2->setKnobMode (val) == kResultTrue; return result; } //------------------------------------------------------------------------ // MemoryStream with attributes to add information "preset or project" //------------------------------------------------------------------------ class VstPresetStream : public MemoryStream, Vst::IStreamAttributes { public: VstPresetStream () {} VstPresetStream (void* memory, TSize memorySize) : MemoryStream (memory, memorySize) {} //---from Vst::IStreamAttributes----- tresult PLUGIN_API getFileName (String128 /*name*/) SMTG_OVERRIDE { return kNotImplemented; } IAttributeList* PLUGIN_API getAttributes () SMTG_OVERRIDE { return attrList; } //------------------------------------------------------------------------ DELEGATE_REFCOUNT (MemoryStream) tresult PLUGIN_API queryInterface (const TUID iid, void** obj) SMTG_OVERRIDE { QUERY_INTERFACE (iid, obj, IStreamAttributes::iid, IStreamAttributes) return MemoryStream::queryInterface (iid, obj); } protected: IPtr attrList {HostAttributeList::make ()}; }; //------------------------------------------------------------------------ // BaseWrapper //------------------------------------------------------------------------ BaseWrapper::BaseWrapper (SVST3Config& config) { mPlugInterfaceSupport = owned (NEW PlugInterfaceSupport); mProcessor = owned (config.processor); mController = owned (config.controller); mFactory = config.factory; // share it mVst3EffectClassID = config.vst3ComponentID; memset (mName, 0, sizeof (mName)); memset (mVendor, 0, sizeof (mVendor)); memset (mSubCategories, 0, sizeof (mSubCategories)); memset (&mProcessContext, 0, sizeof (ProcessContext)); mProcessContext.sampleRate = 44100; mProcessContext.tempo = 120; for (int32 b = 0; b < kMaxMidiMappingBusses; b++) { for (int32 i = 0; i < 16; i++) { mMidiCCMapping[b][i] = nullptr; } } for (int32 i = 0; i < kMaxProgramChangeParameters; i++) { mProgramChangeParameterIDs[i] = kNoParamId; mProgramChangeParameterIdxs[i] = -1; } } //------------------------------------------------------------------------ BaseWrapper::~BaseWrapper () { term (); } //------------------------------------------------------------------------ void BaseWrapper::term () { mTimer = nullptr; mProcessData.unprepare (); //---Disconnect components if (mComponentsConnected) { FUnknownPtr cp1 (mProcessor); FUnknownPtr cp2 (mController); if (cp1 && cp2) { if (mProcessorConnection) mProcessorConnection->disconnect (cp2); if (mControllerConnection) mControllerConnection->disconnect (cp1); } mComponentsConnected = false; } //---Terminate Controller Component if (mController) { mController->setComponentHandler (nullptr); if (mControllerInitialized) mController->terminate (); mControllerInitialized = false; } //---Terminate Processor Component if (mComponent && mComponentInitialized) { mComponent->terminate (); mComponentInitialized = false; } mInputEvents = nullptr; mOutputEvents = nullptr; mUnitInfo = nullptr; mMidiMapping = nullptr; if (mMidiCCMapping[0][0]) for (int32 b = 0; b < kMaxMidiMappingBusses; b++) for (int32 i = 0; i < 16; i++) { delete mMidiCCMapping[b][i]; mMidiCCMapping[b][i] = nullptr; } mEditor = nullptr; mController = nullptr; mProcessor = nullptr; mComponent = nullptr; mFactory = nullptr; mPlugInterfaceSupport = nullptr; mProcessorConnection = nullptr; mControllerConnection = nullptr; } //------------------------------------------------------------------------ bool BaseWrapper::init () { // VST 3 stuff ----------------------------------------------- if (mProcessor) mProcessor->queryInterface (IComponent::iid, (void**)&mComponent); if (mController) { mController->queryInterface (IUnitInfo::iid, (void**)&mUnitInfo); mController->queryInterface (IMidiMapping::iid, (void**)&mMidiMapping); } //---init the processor component mComponentInitialized = true; if (mComponent->initialize ((IHostApplication*)this) != kResultTrue) return false; //---init the controller component if (mController) { // do not initialize 2 times the component if it is singleComponent if (FUnknownPtr (mComponent).getInterface () != mController) { mControllerInitialized = true; if (mController->initialize ((IHostApplication*)this) != kResultTrue) return false; } //---set this class as Component Handler mController->setComponentHandler (this); //---connect the 2 components FUnknownPtr cp1 (mProcessor); FUnknownPtr cp2 (mController); if (cp1 && cp2) { mProcessorConnection = owned (NEW ConnectionProxy (cp1)); mProcessorConnection->connect (cp2); mControllerConnection = owned (NEW ConnectionProxy (cp2)); mControllerConnection->connect (cp1); mComponentsConnected = true; } //---inform the component "controller" with the component "processor" state MemoryStream stream; if (mComponent->getState (&stream) == kResultTrue) { stream.seek (0, IBStream::kIBSeekSet, nullptr); mController->setComponentState (&stream); } } // Wrapper ----------------------------------------------- if (mProcessor) { if (mProcessor->canProcessSampleSize (kSample64) == kResultTrue) { _canDoubleReplacing (true); // supports double precision processing // we use the 64 as default only if 32 bit not supported if (mProcessor->canProcessSampleSize (kSample32) != kResultTrue) mVst3SampleSize = kSample64; else mVst3SampleSize = kSample32; } // latency ------------------------------- _setInitialDelay (mProcessor->getLatencySamples ()); if (mProcessor->getTailSamples () == kNoTail) _noTail (true); setupProcessing (); // initialize vst3 component processing parameters } // parameters setupParameters (); // setup inputs and outputs setupBuses (); // find out programs of root unit -------------------------- mNumPrograms = 0; if (mUnitInfo) { int32 programListCount = mUnitInfo->getProgramListCount (); if (programListCount > 0) { ProgramListID rootUnitProgramListId = kNoProgramListId; for (int32 i = 0; i < mUnitInfo->getUnitCount (); i++) { UnitInfo unit = {}; if (mUnitInfo->getUnitInfo (i, unit) == kResultTrue) { if (unit.id == kRootUnitId) { rootUnitProgramListId = unit.programListId; break; } } } if (rootUnitProgramListId != kNoProgramListId) { for (int32 i = 0; i < programListCount; i++) { ProgramListInfo progList = {}; if (mUnitInfo->getProgramListInfo (i, progList) == kResultTrue) { if (progList.id == rootUnitProgramListId) { mNumPrograms = progList.programCount; break; } } } } } } if (mTimer == nullptr) mTimer = owned (Timer::create (this, 50)); initMidiCtrlerAssignment (); return true; } //------------------------------------------------------------------------ void BaseWrapper::_suspend () { _stopProcess (); if (mComponent && mActive == true) mComponent->setActive (false); mActive = false; } //------------------------------------------------------------------------ void BaseWrapper::_resume () { if (mComponent && mActive == false) mComponent->setActive (true); mActive = true; } //------------------------------------------------------------------------ void BaseWrapper::_startProcess () { if (mProcessor && mProcessing == false) { mProcessing = true; mProcessor->setProcessing (true); } } //------------------------------------------------------------------------ void BaseWrapper::_stopProcess () { if (mProcessor && mProcessing == true) { mProcessor->setProcessing (false); mProcessing = false; } } //------------------------------------------------------------------------ void BaseWrapper::_setEditor (BaseEditorWrapper* editor) { mEditor = owned (editor); } //------------------------------------------------------------------------ bool BaseWrapper::_setBlockSize (int32 newBlockSize) { if (mProcessing) return false; if (mBlockSize != newBlockSize) { mBlockSize = newBlockSize; setupProcessing (); return true; } return false; } //------------------------------------------------------------------------ bool BaseWrapper::setupProcessing (int32 processModeOverwrite) { if (!mProcessor) return false; ProcessSetup setup; if (processModeOverwrite >= 0) setup.processMode = processModeOverwrite; else setup.processMode = mVst3processMode; setup.maxSamplesPerBlock = mBlockSize; setup.sampleRate = mSampleRate; setup.symbolicSampleSize = mVst3SampleSize; return mProcessor->setupProcessing (setup) == kResultTrue; } //------------------------------------------------------------------------ bool BaseWrapper::getEditorSize (int32& width, int32& height) const { if (auto* editor = getEditor ()) { ViewRect rect; if (editor->getRect (rect)) { width = rect.right - rect.left; height = rect.bottom - rect.top; return true; } } return false; } //------------------------------------------------------------------------ float BaseWrapper::_getParameter (int32 index) const { if (!mController) return 0.f; if (index < static_cast (mParameterMap.size ())) { ParamID id = mParameterMap.at (index).vst3ID; return (float)mController->getParamNormalized (id); } return 0.f; } //------------------------------------------------------------------------ void BaseWrapper::addParameterChange (ParamID id, ParamValue value, int32 sampleOffset) { mGuiTransfer.addChange (id, value, sampleOffset); mInputTransfer.addChange (id, value, sampleOffset); } //------------------------------------------------------------------------ /*! Usually VST 2 hosts call setParameter (...) and getParameterDisplay (...) synchronously. In setParameter (...) param changes get queued (guiTransfer) and transfered in idle (::onTimer). The ::onTimer call almost always comes AFTER getParameterDisplay (...) and therefore returns an old value. To avoid sending back old values, getLastParamChange (...) returns the latest value from the guiTransfer queue. */ //------------------------------------------------------------------------ bool BaseWrapper::getLastParamChange (ParamID id, ParamValue& value) { ParameterChanges changes; mGuiTransfer.transferChangesTo (changes); for (int32 i = 0; i < changes.getParameterCount (); ++i) { IParamValueQueue* queue = changes.getParameterData (i); if (queue) { if (queue->getParameterId () == id) { int32 points = queue->getPointCount (); if (points > 0) { mGuiTransfer.transferChangesFrom (changes); int32 sampleOffset = 0; return queue->getPoint (points - 1, sampleOffset, value) == kResultTrue; } } } } mGuiTransfer.transferChangesFrom (changes); return false; } //------------------------------------------------------------------------ void BaseWrapper::getUnitPath (UnitID unitID, String& path) const { if (!mUnitInfo) return; //! Build the unit path up to the root unit (e.g. "Modulators.LFO 1.". Separator is a ".") for (int32 unitIndex = 0; unitIndex < mUnitInfo->getUnitCount (); ++unitIndex) { UnitInfo info = {}; mUnitInfo->getUnitInfo (unitIndex, info); if (info.id == unitID) { String unitName (info.name); unitName.append ("."); path.insertAt (0, unitName); if (info.parentUnitId != kRootUnitId) getUnitPath (info.parentUnitId, path); break; } } } //------------------------------------------------------------------------ int32 BaseWrapper::_getChunk (void** data, bool /*isPreset*/) { // Host stores plug-in state. Returns the size in bytes of the chunk (Plug-in allocates the data // array) MemoryStream componentStream; if (mComponent && mComponent->getState (&componentStream) != kResultTrue) componentStream.setSize (0); MemoryStream controllerStream; if (mController && mController->getState (&controllerStream) != kResultTrue) controllerStream.setSize (0); if (componentStream.getSize () + controllerStream.getSize () == 0) return 0; mChunk.setSize (0); IBStreamer acc (&mChunk, kLittleEndian); acc.writeInt64 (componentStream.getSize ()); acc.writeInt64 (controllerStream.getSize ()); acc.writeRaw (componentStream.getData (), static_cast (componentStream.getSize ())); acc.writeRaw (controllerStream.getData (), static_cast (controllerStream.getSize ())); auto chunkSize = static_cast (mChunk.getSize ()); *data = mChunk.getData (); return chunkSize; } //------------------------------------------------------------------------ int32 BaseWrapper::_setChunk (void* data, int32 byteSize, bool isPreset) { if (!mComponent) return 0; // throw away all previously queued parameter changes, they are obsolete mGuiTransfer.removeChanges (); mInputTransfer.removeChanges (); MemoryStream chunk (data, byteSize); IBStreamer acc (&chunk, kLittleEndian); int64 componentDataSize = 0; int64 controllerDataSize = 0; acc.readInt64 (componentDataSize); acc.readInt64 (controllerDataSize); VstPresetStream componentStream (((char*)data) + acc.tell (), componentDataSize); VstPresetStream controllerStream (((char*)data) + acc.tell () + componentDataSize, controllerDataSize); if (!isPreset) { if (Vst::IAttributeList* attr = componentStream.getAttributes ()) attr->setString (Vst::PresetAttributes::kStateType, String (Vst::StateType::kProject)); if (Vst::IAttributeList* attr = controllerStream.getAttributes ()) attr->setString (Vst::PresetAttributes::kStateType, String (Vst::StateType::kProject)); } mComponent->setState (&componentStream); componentStream.seek (0, IBStream::kIBSeekSet, nullptr); if (mController) { mController->setComponentState (&componentStream); mController->setState (&controllerStream); } return 0; } //------------------------------------------------------------------------ bool BaseWrapper::_setBypass (bool onOff) { if (mBypassParameterID != kNoParamId) { addParameterChange (mBypassParameterID, onOff ? 1.0 : 0.0, 0); return true; } return false; } //----------------------------------------------------------------------------- bool BaseWrapper::getProgramListAndUnit (int32 midiChannel, UnitID& unitId, ProgramListID& programListId) { programListId = kNoProgramListId; unitId = -1; if (!mUnitInfo) return false; // use the first input event bus (VST 2 has only 1 bus for event) if (mUnitInfo->getUnitByBus (kEvent, kInput, 0, midiChannel, unitId) == kResultTrue) { for (int32 i = 0, unitCount = mUnitInfo->getUnitCount (); i < unitCount; i++) { UnitInfo unitInfoStruct = {}; if (mUnitInfo->getUnitInfo (i, unitInfoStruct) == kResultTrue) { if (unitId == unitInfoStruct.id) { programListId = unitInfoStruct.programListId; return programListId != kNoProgramListId; } } } } return false; } //----------------------------------------------------------------------------- bool BaseWrapper::getProgramListInfoByProgramListID (ProgramListID programListId, ProgramListInfo& info) { if (mUnitInfo) { int32 programListCount = mUnitInfo->getProgramListCount (); for (int32 i = 0; i < programListCount; i++) { memset (&info, 0, sizeof (ProgramListInfo)); if (mUnitInfo->getProgramListInfo (i, info) == kResultTrue) { if (info.id == programListId) { return true; } } } } return false; } //----------------------------------------------------------------------------- void BaseWrapper::setVendorName (char* name) { memcpy (mVendor, name, sizeof (mVendor)); } //----------------------------------------------------------------------------- void BaseWrapper::setEffectName (char* effectName) { memcpy (mName, effectName, sizeof (mName)); } //----------------------------------------------------------------------------- void BaseWrapper::setEffectVersion (char* version) { if (!version) mVersion = 0; else { long major = 1; long minor = 0; long subminor = 0; long subsubminor = 0; int32 ret = sscanf (version, "%ld.%ld.%ld.%ld", &major, &minor, &subminor, &subsubminor); mVersion = static_cast ((major & 0xff) << 24); if (ret > 3) mVersion += static_cast (subsubminor & 0xff); if (ret > 2) mVersion += static_cast ((subminor & 0xff) << 8); if (ret > 1) mVersion += static_cast ((minor & 0xff) << 16); } } //----------------------------------------------------------------------------- void BaseWrapper::setSubCategories (char* string) { memcpy (mSubCategories, string, sizeof (mSubCategories)); } //----------------------------------------------------------------------------- void BaseWrapper::setupBuses () { if (!mComponent) return; mProcessData.prepare (*mComponent, 0, mVst3SampleSize); _setNumInputs (countMainBusChannels (kInput, mMainAudioInputBuses)); _setNumOutputs (countMainBusChannels (kOutput, mMainAudioOutputBuses)); mHasEventInputBuses = mComponent->getBusCount (kEvent, kInput) > 0; mHasEventOutputBuses = mComponent->getBusCount (kEvent, kOutput) > 0; if (mHasEventInputBuses) { if (mInputEvents == nullptr) mInputEvents = owned (new EventList (kMaxEvents)); } else mInputEvents = nullptr; if (mHasEventOutputBuses) { if (mOutputEvents == nullptr) mOutputEvents = owned (new EventList (kMaxEvents)); } else mOutputEvents = nullptr; } //----------------------------------------------------------------------------- void BaseWrapper::setupParameters () { mParameterMap.clear (); mParamIndexMap.clear (); mBypassParameterID = mProgramParameterID = kNoParamId; mProgramParameterIdx = -1; std::vector programParameterInfos; std::vector programParameterIdxs; int32 paramCount = mController ? mController->getParameterCount () : 0; int32 numParamID = 0; for (int32 i = 0; i < paramCount; i++) { ParameterInfo paramInfo = {}; if (mController->getParameterInfo (i, paramInfo) == kResultTrue) { //--- ------------------------------------------ if ((paramInfo.flags & ParameterInfo::kIsBypass) != 0) { if (mBypassParameterID == kNoParamId) mBypassParameterID = paramInfo.id; if (mUseExportedBypass) { ParamMapEntry entry = {paramInfo.id, i}; mParameterMap.push_back (entry); mParamIndexMap[paramInfo.id] = mUseIncIndex ? numParamID : i; numParamID++; } } //--- ------------------------------------------ else if ((paramInfo.flags & ParameterInfo::kIsProgramChange) != 0) { programParameterInfos.push_back (paramInfo); programParameterIdxs.push_back (i); if (paramInfo.unitId == kRootUnitId) { if (mProgramParameterID == kNoParamId) { mProgramParameterID = paramInfo.id; mProgramParameterIdx = i; } } if (gExportProgramChangeParameters == true) { ParamMapEntry entry = {paramInfo.id, i}; mParameterMap.push_back (entry); mParamIndexMap[paramInfo.id] = mUseIncIndex ? numParamID : i; numParamID++; } } //--- ------------------------------------------ // do not export read only parameters else if ((paramInfo.flags & ParameterInfo::kIsReadOnly) == 0) { ParamMapEntry entry = {paramInfo.id, i}; mParameterMap.push_back (entry); mParamIndexMap[paramInfo.id] = mUseIncIndex ? numParamID : i; numParamID++; } } } mNumParams = static_cast (mParameterMap.size ()); mInputTransfer.setMaxParameters (paramCount); mOutputTransfer.setMaxParameters (paramCount); mGuiTransfer.setMaxParameters (paramCount); mInputChanges.setMaxParameters (paramCount); mOutputChanges.setMaxParameters (paramCount); for (int32 midiChannel = 0; midiChannel < kMaxProgramChangeParameters; midiChannel++) { mProgramChangeParameterIDs[midiChannel] = kNoParamId; mProgramChangeParameterIdxs[midiChannel] = -1; UnitID unitId; ProgramListID programListId; if (getProgramListAndUnit (midiChannel, unitId, programListId)) { for (uint32 i = 0; i < programParameterInfos.size (); i++) { const ParameterInfo& paramInfo = programParameterInfos.at (i); if (paramInfo.unitId == unitId) { mProgramChangeParameterIDs[midiChannel] = paramInfo.id; mProgramChangeParameterIdxs[midiChannel] = programParameterIdxs.at (i); break; } } } } } //----------------------------------------------------------------------------- void BaseWrapper::initMidiCtrlerAssignment () { if (!mMidiMapping || !mComponent) return; int32 busses = Min (mComponent->getBusCount (kEvent, kInput), kMaxMidiMappingBusses); if (!mMidiCCMapping[0][0]) { for (int32 b = 0; b < busses; b++) for (int32 i = 0; i < 16; i++) mMidiCCMapping[b][i] = NEW ParamID[Vst::kCountCtrlNumber]; } ParamID paramID; for (int32 b = 0; b < busses; b++) { for (int16 ch = 0; ch < 16; ch++) { for (int32 i = 0; i < Vst::kCountCtrlNumber; i++) { paramID = kNoParamId; if (mMidiMapping->getMidiControllerAssignment (b, ch, (CtrlNumber)i, paramID) == kResultTrue) { // TODO check if tag is associated to a parameter mMidiCCMapping[b][ch][i] = paramID; } else mMidiCCMapping[b][ch][i] = kNoParamId; } } } } //----------------------------------------------------------------------------- void BaseWrapper::_setSampleRate (float newSamplerate) { if (mProcessing) return; if (newSamplerate != mSampleRate) { mSampleRate = newSamplerate; setupProcessing (); } } //----------------------------------------------------------------------------- uint32 BaseWrapper::countMainBusChannels (BusDirection dir, uint64& mainBusBitset) { uint32 result = 0; mainBusBitset = 0; int32 busCount = mComponent->getBusCount (kAudio, dir); for (int32 i = 0; i < busCount; i++) { BusInfo busInfo = {}; if (mComponent->getBusInfo (kAudio, dir, i, busInfo) == kResultTrue) { if (busInfo.busType == kMain) { result += busInfo.channelCount; mainBusBitset |= (uint64 (1) << i); mComponent->activateBus (kAudio, dir, i, true); } else if (busInfo.flags & BusInfo::kDefaultActive) { mComponent->activateBus (kAudio, dir, i, false); } } } return result; } //----------------------------------------------------------------------------- void BaseWrapper::processMidiEvent (Event& toAdd, char* midiData, bool isLive, int32 noteLength, float noteOffVelocity, float detune) { uint8 status = static_cast (midiData[0] & kStatusMask); uint8 channel = static_cast (midiData[0] & kChannelMask); // not allowed if (channel >= 16) return; if (isLive) toAdd.flags |= Event::kIsLive; //--- ----------------------------- switch (status) { case kNoteOn: case kNoteOff: { if (status == kNoteOff || midiData[2] == 0) // note off { toAdd.type = Event::kNoteOffEvent; toAdd.noteOff.channel = channel; toAdd.noteOff.pitch = midiData[1]; toAdd.noteOff.velocity = noteOffVelocity; toAdd.noteOff.noteId = -1; // TODO ? } else if (status == kNoteOn) // note on { toAdd.type = Event::kNoteOnEvent; toAdd.noteOn.channel = channel; toAdd.noteOn.pitch = midiData[1]; toAdd.noteOn.tuning = detune; toAdd.noteOn.velocity = (float)midiData[2] * kMidiScaler; toAdd.noteOn.length = noteLength; toAdd.noteOn.noteId = -1; // TODO ? } mInputEvents->addEvent (toAdd); } break; //--- ----------------------------- case kPolyPressure: { toAdd.type = Vst::Event::kPolyPressureEvent; toAdd.polyPressure.channel = channel; toAdd.polyPressure.pitch = static_cast(midiData[1] & kDataMask); toAdd.polyPressure.pressure = (float)(midiData[2] & kDataMask) * kMidiScaler; toAdd.polyPressure.noteId = -1; // TODO ? mInputEvents->addEvent (toAdd); } break; //--- ----------------------------- case kController: { if (toAdd.busIndex < kMaxMidiMappingBusses && mMidiCCMapping[toAdd.busIndex][channel]) { ParamID paramID = mMidiCCMapping[toAdd.busIndex][channel][static_cast (midiData[1])]; if (paramID != kNoParamId) { ParamValue value = (double)midiData[2] * kMidiScaler; int32 index = 0; if (IParamValueQueue* queue = mInputChanges.addParameterData (paramID, index)) queue->addPoint (toAdd.sampleOffset, value, index); mGuiTransfer.addChange (paramID, value, toAdd.sampleOffset); } } } break; //--- ----------------------------- case kPitchBendStatus: { if (toAdd.busIndex < kMaxMidiMappingBusses && mMidiCCMapping[toAdd.busIndex][channel]) { ParamID paramID = mMidiCCMapping[toAdd.busIndex][channel][Vst::kPitchBend]; if (paramID != kNoParamId) { const double kPitchWheelScaler = 1. / (double)0x3FFF; const int32 ctrl = static_cast ((midiData[1] & kDataMask) | ((midiData[2] & kDataMask) << 7)); ParamValue value = kPitchWheelScaler * (double)ctrl; int32 index = 0; if (IParamValueQueue* queue = mInputChanges.addParameterData (paramID, index)) queue->addPoint (toAdd.sampleOffset, value, index); mGuiTransfer.addChange (paramID, value, toAdd.sampleOffset); } } } break; //--- ----------------------------- case kAfterTouchStatus: { if (toAdd.busIndex < kMaxMidiMappingBusses && mMidiCCMapping[toAdd.busIndex][channel]) { ParamID paramID = mMidiCCMapping[toAdd.busIndex][channel][Vst::kAfterTouch]; if (paramID != kNoParamId) { ParamValue value = (ParamValue) (midiData[1] & kDataMask) * kMidiScaler; int32 index = 0; if (IParamValueQueue* queue = mInputChanges.addParameterData (paramID, index)) queue->addPoint (toAdd.sampleOffset, value, index); mGuiTransfer.addChange (paramID, value, toAdd.sampleOffset); } } } break; //--- ----------------------------- case kProgramChangeStatus: { if (mProgramChangeParameterIDs[channel] != kNoParamId && mProgramChangeParameterIdxs[channel] != -1) { ParameterInfo paramInfo = {}; if (mController->getParameterInfo (mProgramChangeParameterIdxs[channel], paramInfo) == kResultTrue) { int32 program = midiData[1]; if (paramInfo.stepCount > 0 && program <= paramInfo.stepCount) { ParamValue normalized = (ParamValue)program / (ParamValue)paramInfo.stepCount; addParameterChange (mProgramChangeParameterIDs[channel], normalized, toAdd.sampleOffset); } } } } break; } } //----------------------------------------------------------------------------- template inline void BaseWrapper::setProcessingBuffers (T** inputs, T** outputs) { // set processing buffers int32 sourceIndex = 0; for (int32 i = 0; i < mProcessData.numInputs; i++) { AudioBusBuffers& buffers = mProcessData.inputs[i]; if (mMainAudioInputBuses & (uint64 (1) << i)) { for (int32 j = 0; j < buffers.numChannels; j++) { buffers.channelBuffers32[j] = (Sample32*)inputs[sourceIndex++]; } } else buffers.silenceFlags = HostProcessData::kAllChannelsSilent; } sourceIndex = 0; for (int32 i = 0; i < mProcessData.numOutputs; i++) { AudioBusBuffers& buffers = mProcessData.outputs[i]; buffers.silenceFlags = 0; if (mMainAudioOutputBuses & (uint64 (1) << i)) { for (int32 j = 0; j < buffers.numChannels; j++) { buffers.channelBuffers32[j] = (Sample32*)outputs[sourceIndex++]; } } } } //----------------------------------------------------------------------------- inline void BaseWrapper::setEventPPQPositions () { if (!mInputEvents) return; int32 eventCount = mInputEvents->getEventCount (); if (eventCount > 0 && (mProcessContext.state & ProcessContext::kTempoValid) && (mProcessContext.state & ProcessContext::kProjectTimeMusicValid)) { TQuarterNotes projectTimeMusic = mProcessContext.projectTimeMusic; double secondsToQuarterNoteScaler = mProcessContext.tempo / 60.0; double multiplicator = secondsToQuarterNoteScaler / mSampleRate; for (int32 i = 0; i < eventCount; i++) { Event* e = mInputEvents->getEventByIndex (i); if (e) { TQuarterNotes localTimeMusic = e->sampleOffset * multiplicator; e->ppqPosition = projectTimeMusic + localTimeMusic; } } } } //----------------------------------------------------------------------------- inline void BaseWrapper::doProcess (int32 sampleFrames) { if (!mProcessor) return; mProcessData.numSamples = sampleFrames; if (mProcessing == false) _startProcess (); mProcessData.inputEvents = mInputEvents; mProcessData.outputEvents = mOutputEvents; setupProcessTimeInfo (); setEventPPQPositions (); mInputTransfer.transferChangesTo (mInputChanges); mProcessData.inputParameterChanges = &mInputChanges; mProcessData.outputParameterChanges = &mOutputChanges; mOutputChanges.clearQueue (); // VST 3 process call mProcessor->process (mProcessData); processOutputParametersChanges (); mOutputTransfer.transferChangesFrom (mOutputChanges); processOutputEvents (); // clear input parameters and events mInputChanges.clearQueue (); if (mInputEvents) mInputEvents->clear (); } //----------------------------------------------------------------------------- void BaseWrapper::_processReplacing (float** inputs, float** outputs, int32 sampleFrames) { if (mProcessData.symbolicSampleSize != kSample32) return; setProcessingBuffers (inputs, outputs); doProcess (sampleFrames); } //----------------------------------------------------------------------------- void BaseWrapper::_processDoubleReplacing (double** inputs, double** outputs, int32 sampleFrames) { if (mProcessData.symbolicSampleSize != kSample64) return; setProcessingBuffers (inputs, outputs); doProcess (sampleFrames); } //----------------------------------------------------------------------------- void BaseWrapper::onTimer (Timer*) { if (!mController) return; ParamID id; ParamValue value; int32 sampleOffset; while (mOutputTransfer.getNextChange (id, value, sampleOffset)) { mController->setParamNormalized (id, value); } while (mGuiTransfer.getNextChange (id, value, sampleOffset)) { mController->setParamNormalized (id, value); } } // FUnknown //----------------------------------------------------------------------------- tresult PLUGIN_API BaseWrapper::queryInterface (const char* iid, void** obj) { QUERY_INTERFACE (iid, obj, FUnknown::iid, Vst::IHostApplication) QUERY_INTERFACE (iid, obj, Vst::IHostApplication::iid, Vst::IHostApplication) QUERY_INTERFACE (iid, obj, Vst::IComponentHandler::iid, Vst::IComponentHandler) QUERY_INTERFACE (iid, obj, Vst::IUnitHandler::iid, Vst::IUnitHandler) if (mPlugInterfaceSupport && mPlugInterfaceSupport->queryInterface (iid, obj) == kResultTrue) return ::Steinberg::kResultOk; *obj = nullptr; return kNoInterface; } //----------------------------------------------------------------------------- tresult PLUGIN_API BaseWrapper::restartComponent (int32 flags) { tresult result = kResultFalse; //--- ---------------------- if (flags & kIoChanged) { setupBuses (); _ioChanged (); result = kResultTrue; } //--- ---------------------- if ((flags & kParamValuesChanged) || (flags & kParamTitlesChanged)) { _updateDisplay (); result = kResultTrue; } //--- ---------------------- if (flags & kLatencyChanged) { if (mProcessor) _setInitialDelay (mProcessor->getLatencySamples ()); _ioChanged (); result = kResultTrue; } //--- ---------------------- if (flags & kMidiCCAssignmentChanged) { initMidiCtrlerAssignment (); result = kResultTrue; } // kReloadComponent is Not supported return result; } //----------------------------------------------------------------------------- // IHostApplication //----------------------------------------------------------------------------- tresult PLUGIN_API BaseWrapper::createInstance (TUID cid, TUID iid, void** obj) { FUID classID (FUID::fromTUID (cid)); FUID interfaceID (FUID::fromTUID (iid)); if (classID == IMessage::iid && interfaceID == IMessage::iid) { *obj = new HostMessage; return kResultTrue; } else if (classID == IAttributeList::iid && interfaceID == IAttributeList::iid) { if (auto al = HostAttributeList::make ()) { *obj = al.take (); return kResultTrue; } return kOutOfMemory; } *obj = nullptr; return kResultFalse; } //----------------------------------------------------------------------------- // IUnitHandler //----------------------------------------------------------------------------- tresult PLUGIN_API BaseWrapper::notifyUnitSelection (UnitID /*unitId*/) { return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API BaseWrapper::notifyProgramListChange (ProgramListID /*listId*/, int32 /*programIndex*/) { // TODO -> redirect to hasMidiProgramsChanged somehow... return kResultTrue; } //----------------------------------------------------------------------------- } // namespace Vst } // namespace Steinberg //----------------------------------------------------------------------------- /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/basewrapper/basewrapper.h000066400000000000000000000252261461511344300234720ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/basewrapper/basewrapper.h // Created by : Steinberg, 01/2018 // Description : Base Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once /// \cond ignore #include "pluginterfaces/base/ftypes.h" #include "pluginterfaces/gui/iplugview.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivsthostapplication.h" #include "pluginterfaces/vst/ivstprocesscontext.h" #include "pluginterfaces/vst/ivstunits.h" #include "public.sdk/source/common/memorystream.h" #include "public.sdk/source/vst/hosting/eventlist.h" #include "public.sdk/source/vst/hosting/parameterchanges.h" #include "public.sdk/source/vst/hosting/pluginterfacesupport.h" #include "public.sdk/source/vst/hosting/processdata.h" #include "base/source/fstring.h" #include "base/source/timer.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class BaseEditorWrapper : public IPlugFrame, public FObject { public: //------------------------------------------------------------------------ BaseEditorWrapper (IEditController* controller); ~BaseEditorWrapper () override; static bool hasEditor (IEditController* controller); bool getRect (ViewRect& rect); virtual bool _open (void* ptr); virtual void _close (); bool _setKnobMode (Vst::KnobMode val); // IPlugFrame tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* newSize) SMTG_OVERRIDE; // FUnknown tresult PLUGIN_API queryInterface (const char* _iid, void** obj) SMTG_OVERRIDE; REFCOUNT_METHODS (FObject); //------------------------------------------------------------------------ protected: void createView (); IPtr mController; IPtr mView; ViewRect mViewRect; }; //------------------------------------------------------------------------ const int32 kMaxEvents = 2048; class ConnectionProxy; //------------------------------------------------------------------------------------------------------- class BaseWrapper : public IHostApplication, public IComponentHandler, public IUnitHandler, public ITimerCallback, public FObject { public: struct SVST3Config { IPluginFactory* factory = nullptr; IAudioProcessor* processor = nullptr; IEditController* controller = nullptr; FUID vst3ComponentID; }; BaseWrapper (SVST3Config& config); ~BaseWrapper () override; virtual bool init (); virtual void _canDoubleReplacing (bool /*val*/) {} virtual void _setInitialDelay (uint32 /*delay*/) {} virtual void _noTail (bool /*val*/) {} virtual void _ioChanged () {} virtual void _updateDisplay () {} virtual void _setNumInputs (uint32 inputs) { mNumInputs = inputs; } virtual void _setNumOutputs (uint32 outputs) { mNumOutputs = outputs; } virtual bool _sizeWindow (int32 width, int32 height) = 0; virtual int32 _getChunk (void** data, bool isPreset); virtual int32 _setChunk (void* data, int32 byteSize, bool isPreset); virtual bool getEditorSize (int32& width, int32& height) const; bool isActive () const { return mActive; } uint32 getNumInputs () const { return mNumInputs; } uint32 getNumOutputs () const { return mNumOutputs; } BaseEditorWrapper* getEditor () const { return mEditor; } //--- --------------------------------------------------------------------- // VST 3 Interfaces ------------------------------------------------------ // FUnknown tresult PLUGIN_API queryInterface (const char* iid, void** obj) SMTG_OVERRIDE; REFCOUNT_METHODS (FObject); // IHostApplication tresult PLUGIN_API createInstance (TUID cid, TUID iid, void** obj) SMTG_OVERRIDE; // IComponentHandler tresult PLUGIN_API restartComponent (int32 flags) SMTG_OVERRIDE; // IUnitHandler tresult PLUGIN_API notifyUnitSelection (UnitID unitId) SMTG_OVERRIDE; tresult PLUGIN_API notifyProgramListChange (ProgramListID listId, int32 programIndex) SMTG_OVERRIDE; // ITimer void onTimer (Timer* timer) SMTG_OVERRIDE; //------------------------------------------------------------------------------------------------------- protected: void term (); virtual void setupParameters (); virtual void setupProcessTimeInfo () = 0; virtual void processOutputEvents () {} virtual void processOutputParametersChanges () {} void _setSampleRate (float newSamplerate); bool setupProcessing (int32 processModeOverwrite = -1); void _processReplacing (float** inputs, float** outputs, int32 sampleFrames); void _processDoubleReplacing (double** inputs, double** outputs, int32 sampleFrames); template void setProcessingBuffers (T** inputs, T** outputs); void doProcess (int32 sampleFrames); void processMidiEvent (Event& toAdd, char* midiData, bool isLive = false, int32 noteLength = 0, float noteOffVelocity = 1.f, float detune = 0.f); void setEventPPQPositions (); void _setEditor (BaseEditorWrapper* editor); bool _setBlockSize (int32 newBlockSize); float _getParameter (int32 index) const; void _suspend (); void _resume (); void _startProcess (); void _stopProcess (); bool _setBypass (bool onOff); virtual void setupBuses (); void initMidiCtrlerAssignment (); void getUnitPath (UnitID unitID, String& path) const; uint32 countMainBusChannels (BusDirection dir, uint64& mainBusBitset); /** Returns the last param change from guiTransfer queue. */ bool getLastParamChange (ParamID id, ParamValue& value); void addParameterChange (ParamID id, ParamValue value, int32 sampleOffset); void setVendorName (char* name); void setEffectName (char* name); void setEffectVersion (char* version); void setSubCategories (char* string); bool getProgramListAndUnit (int32 midiChannel, UnitID& unitId, ProgramListID& programListId); bool getProgramListInfoByProgramListID (ProgramListID programListId, ProgramListInfo& info); static const int32 kMaxProgramChangeParameters = 16; ParamID mProgramChangeParameterIDs[kMaxProgramChangeParameters]; // for each MIDI channel int32 mProgramChangeParameterIdxs[kMaxProgramChangeParameters]; // for each MIDI channel FUID mVst3EffectClassID; // vst3 data IPtr mProcessor; IPtr mComponent; IPtr mController; IPtr mUnitInfo; IPtr mMidiMapping; IPtr mEditor; IPtr mPlugInterfaceSupport; IPtr mProcessorConnection; IPtr mControllerConnection; int32 mVst3SampleSize = kSample32; int32 mVst3processMode = kRealtime; char mName[PClassInfo::kNameSize]; char mVendor[PFactoryInfo::kNameSize]; char mSubCategories[PClassInfo2::kSubCategoriesSize]; int32 mVersion = 0; struct ParamMapEntry { ParamID vst3ID; int32 vst3Index; }; std::vector mParameterMap; std::map mParamIndexMap; ParamID mBypassParameterID = kNoParamId; ParamID mProgramParameterID = kNoParamId; int32 mProgramParameterIdx = -1; HostProcessData mProcessData; ProcessContext mProcessContext; ParameterChanges mInputChanges; ParameterChanges mOutputChanges; IPtr mInputEvents; IPtr mOutputEvents; uint64 mMainAudioInputBuses = 0; uint64 mMainAudioOutputBuses = 0; ParameterChangeTransfer mInputTransfer; ParameterChangeTransfer mOutputTransfer; ParameterChangeTransfer mGuiTransfer; MemoryStream mChunk; IPtr mTimer; IPtr mFactory; int32 mNumPrograms {0}; float mSampleRate {44100}; int32 mBlockSize {256}; int32 mNumParams {0}; int32 mCurProgram {-1}; uint32 mNumInputs {0}; uint32 mNumOutputs {0}; enum { kMaxMidiMappingBusses = 4 }; ParamID* mMidiCCMapping[kMaxMidiMappingBusses][16]; bool mComponentInitialized = false; bool mControllerInitialized = false; bool mComponentsConnected = false; bool mUseExportedBypass = true; bool mActive = false; bool mProcessing = false; bool mHasEventInputBuses = false; bool mHasEventOutputBuses = false; bool mUseIncIndex = true; }; const uint8 kNoteOff = 0x80; ///< note, off velocity const uint8 kNoteOn = 0x90; ///< note, on velocity const uint8 kPolyPressure = 0xA0; ///< note, pressure const uint8 kController = 0xB0; ///< controller, value const uint8 kProgramChangeStatus = 0xC0; ///< program change const uint8 kAfterTouchStatus = 0xD0; ///< channel pressure const uint8 kPitchBendStatus = 0xE0; ///< lsb, msb const float kMidiScaler = 1.f / 127.f; static const uint8 kChannelMask = 0x0F; static const uint8 kStatusMask = 0xF0; static const uint32 kDataMask = 0x7F; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/basewrapper/basewrapper.sdk.cpp000066400000000000000000000050471461511344300246040ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/basewrapper/basewrapper.sdk.cpp // Created by : Steinberg, 05/2018 // Description : Base Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/common/memorystream.cpp" #include "public.sdk/source/vst/basewrapper/basewrapper.cpp" #include "public.sdk/source/vst/hosting/connectionproxy.cpp" #include "public.sdk/source/vst/hosting/eventlist.cpp" #include "public.sdk/source/vst/hosting/hostclasses.cpp" #include "public.sdk/source/vst/hosting/parameterchanges.cpp" #include "public.sdk/source/vst/hosting/pluginterfacesupport.cpp" #include "public.sdk/source/vst/hosting/processdata.cpp" vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/000077500000000000000000000000001461511344300201375ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/connectionproxy.cpp000066400000000000000000000077571461511344300241240ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/connectionproxy.cpp // Created by : Steinberg, 04/2019 // Description : VST 3 Plug-in connection class // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "connectionproxy.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ IMPLEMENT_FUNKNOWN_METHODS (ConnectionProxy, IConnectionPoint, IConnectionPoint::iid) //------------------------------------------------------------------------ ConnectionProxy::ConnectionProxy (IConnectionPoint* srcConnection) : srcConnection (srcConnection) // share it { FUNKNOWN_CTOR } //------------------------------------------------------------------------ ConnectionProxy::~ConnectionProxy () { FUNKNOWN_DTOR } //------------------------------------------------------------------------ tresult PLUGIN_API ConnectionProxy::connect (IConnectionPoint* other) { if (other == nullptr) return kInvalidArgument; if (dstConnection) return kResultFalse; dstConnection = other; // share it tresult res = srcConnection->connect (this); if (res != kResultTrue) dstConnection = nullptr; return res; } //------------------------------------------------------------------------ tresult PLUGIN_API ConnectionProxy::disconnect (IConnectionPoint* other) { if (!other) return kInvalidArgument; if (other == dstConnection) { if (srcConnection) srcConnection->disconnect (this); dstConnection = nullptr; return kResultTrue; } return kInvalidArgument; } //------------------------------------------------------------------------ tresult PLUGIN_API ConnectionProxy::notify (IMessage* message) { if (dstConnection) { // We discard the message if we are not in the UI main thread if (threadChecker && threadChecker->test ()) return dstConnection->notify (message); } return kResultFalse; } //------------------------------------------------------------------------ bool ConnectionProxy::disconnect () { return disconnect (dstConnection) == kResultTrue; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/connectionproxy.h000066400000000000000000000061541461511344300235570ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/connectionproxy.h // Created by : Steinberg, 04/2020 // Description : VST 3 Plug-in connection class // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstmessage.h" #include "public.sdk/source/common/threadchecker.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Helper for creating and initializing component. \ingroup Helper */ //------------------------------------------------------------------------ class ConnectionProxy : public IConnectionPoint { public: ConnectionProxy (IConnectionPoint* srcConnection); virtual ~ConnectionProxy (); //--- from IConnectionPoint tresult PLUGIN_API connect (IConnectionPoint* other) override; tresult PLUGIN_API disconnect (IConnectionPoint* other) override; tresult PLUGIN_API notify (IMessage* message) override; bool disconnect (); //------------------------------------------------------------------------ DECLARE_FUNKNOWN_METHODS protected: std::unique_ptr threadChecker {ThreadChecker::create ()}; IPtr srcConnection; IPtr dstConnection; }; } } // namespaces vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/eventlist.cpp000066400000000000000000000073611461511344300226670ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/eventlist.cpp // Created by : Steinberg, 03/05/2008. // Description : VST 3 event list implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "eventlist.h" namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- IMPLEMENT_FUNKNOWN_METHODS (EventList, IEventList, IEventList::iid) //----------------------------------------------------------------------------- EventList::EventList (int32 inMaxSize) { FUNKNOWN_CTOR setMaxSize (inMaxSize); } //----------------------------------------------------------------------------- EventList::~EventList () { setMaxSize (0); FUNKNOWN_DTOR } //----------------------------------------------------------------------------- void EventList::setMaxSize (int32 newMaxSize) { if (events) { delete[] events; events = nullptr; fillCount = 0; } if (newMaxSize > 0) events = new Event[newMaxSize]; maxSize = newMaxSize; } //----------------------------------------------------------------------------- tresult PLUGIN_API EventList::getEvent (int32 index, Event& e) { if (auto event = getEventByIndex (index)) { memcpy (&e, event, sizeof (Event)); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API EventList::addEvent (Event& e) { if (maxSize > fillCount) { memcpy (&events[fillCount], &e, sizeof (Event)); fillCount++; return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- Event* EventList::getEventByIndex (int32 index) const { if (index < fillCount) return &events[index]; return nullptr; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/eventlist.h000066400000000000000000000060241461511344300223270ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/eventlist.h // Created by : Steinberg, 03/05/2008. // Description : VST 3 event list implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstevents.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Example implementation of IEventList. \ingroup sdkBase */ class EventList : public IEventList { public: EventList (int32 maxSize = 50); virtual ~EventList (); int32 PLUGIN_API getEventCount () SMTG_OVERRIDE { return fillCount; } tresult PLUGIN_API getEvent (int32 index, Event& e) SMTG_OVERRIDE; tresult PLUGIN_API addEvent (Event& e) SMTG_OVERRIDE; void setMaxSize (int32 maxSize); void clear () { fillCount = 0; } Event* getEventByIndex (int32 index) const; //------------------------------------------------------------------------ DECLARE_FUNKNOWN_METHODS protected: Event* events {nullptr}; int32 maxSize {0}; int32 fillCount {0}; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/hostclasses.cpp000066400000000000000000000254451461511344300232100ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/hostclasses.cpp // Created by : Steinberg, 03/05/2008. // Description : VST 3 hostclasses, example impl. for IHostApplication, IAttributeList and IMessage // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "hostclasses.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- HostApplication::HostApplication () { FUNKNOWN_CTOR mPlugInterfaceSupport = owned (new PlugInterfaceSupport); } //----------------------------------------------------------------------------- tresult PLUGIN_API HostApplication::getName (String128 name) { return VST3::StringConvert::convert ("My VST3 HostApplication", name) ? kResultTrue : kInternalError; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostApplication::createInstance (TUID cid, TUID _iid, void** obj) { if (FUnknownPrivate::iidEqual (cid, IMessage::iid) && FUnknownPrivate::iidEqual (_iid, IMessage::iid)) { *obj = new HostMessage; return kResultTrue; } if (FUnknownPrivate::iidEqual (cid, IAttributeList::iid) && FUnknownPrivate::iidEqual (_iid, IAttributeList::iid)) { if (auto al = HostAttributeList::make ()) { *obj = al.take (); return kResultTrue; } return kOutOfMemory; } *obj = nullptr; return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostApplication::queryInterface (const char* _iid, void** obj) { QUERY_INTERFACE (_iid, obj, FUnknown::iid, IHostApplication) QUERY_INTERFACE (_iid, obj, IHostApplication::iid, IHostApplication) if (mPlugInterfaceSupport && mPlugInterfaceSupport->queryInterface (iid, obj) == kResultTrue) return kResultOk; *obj = nullptr; return kResultFalse; } //----------------------------------------------------------------------------- uint32 PLUGIN_API HostApplication::addRef () { return 1; } //----------------------------------------------------------------------------- uint32 PLUGIN_API HostApplication::release () { return 1; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- IMPLEMENT_FUNKNOWN_METHODS (HostMessage, IMessage, IMessage::iid) //----------------------------------------------------------------------------- HostMessage::HostMessage () {FUNKNOWN_CTOR} //----------------------------------------------------------------------------- HostMessage::~HostMessage () noexcept { setMessageID (nullptr); FUNKNOWN_DTOR } //----------------------------------------------------------------------------- const char* PLUGIN_API HostMessage::getMessageID () { return messageId; } //----------------------------------------------------------------------------- void PLUGIN_API HostMessage::setMessageID (const char* mid) { if (messageId) delete[] messageId; messageId = nullptr; if (mid) { size_t len = strlen (mid) + 1; messageId = new char[len]; strcpy (messageId, mid); } } //----------------------------------------------------------------------------- IAttributeList* PLUGIN_API HostMessage::getAttributes () { if (!attributeList) attributeList = HostAttributeList::make (); return attributeList; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- struct HostAttributeList::Attribute { enum class Type { kUninitialized, kInteger, kFloat, kString, kBinary }; Attribute () = default; Attribute (int64 value) : type (Type::kInteger) { v.intValue = value; } Attribute (double value) : type (Type::kFloat) { v.floatValue = value; } /* size is in code unit (count of TChar) */ Attribute (const TChar* value, uint32 sizeInCodeUnit) : size (sizeInCodeUnit), type (Type::kString) { v.stringValue = new TChar[sizeInCodeUnit]; memcpy (v.stringValue, value, sizeInCodeUnit * sizeof (TChar)); } Attribute (const void* value, uint32 sizeInBytes) : size (sizeInBytes), type (Type::kBinary) { v.binaryValue = new char[sizeInBytes]; memcpy (v.binaryValue, value, sizeInBytes); } Attribute (Attribute&& o) { *this = std::move (o); } Attribute& operator= (Attribute&& o) { v = o.v; size = o.size; type = o.type; o.size = 0; o.type = Type::kUninitialized; o.v = {}; return *this; } ~Attribute () noexcept { if (size) delete[] v.binaryValue; } int64 intValue () const { return v.intValue; } double floatValue () const { return v.floatValue; } /* sizeInCodeUnit is in code unit (count of TChar) */ const TChar* stringValue (uint32& sizeInCodeUnit) { sizeInCodeUnit = size; return v.stringValue; } const void* binaryValue (uint32& sizeInBytes) { sizeInBytes = size; return v.binaryValue; } Type getType () const { return type; } private: union v { int64 intValue; double floatValue; TChar* stringValue; char* binaryValue; } v; uint32 size {0}; Type type {Type::kUninitialized}; }; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- IMPLEMENT_FUNKNOWN_METHODS (HostAttributeList, IAttributeList, IAttributeList::iid) //----------------------------------------------------------------------------- IPtr HostAttributeList::make () { return owned (new HostAttributeList); } //----------------------------------------------------------------------------- HostAttributeList::HostAttributeList () {FUNKNOWN_CTOR} //----------------------------------------------------------------------------- HostAttributeList::~HostAttributeList () noexcept { FUNKNOWN_DTOR } //----------------------------------------------------------------------------- tresult PLUGIN_API HostAttributeList::setInt (AttrID aid, int64 value) { if (!aid) return kInvalidArgument; list[aid] = Attribute (value); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostAttributeList::getInt (AttrID aid, int64& value) { if (!aid) return kInvalidArgument; auto it = list.find (aid); if (it != list.end () && it->second.getType () == Attribute::Type::kInteger) { value = it->second.intValue (); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostAttributeList::setFloat (AttrID aid, double value) { if (!aid) return kInvalidArgument; list[aid] = Attribute (value); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostAttributeList::getFloat (AttrID aid, double& value) { if (!aid) return kInvalidArgument; auto it = list.find (aid); if (it != list.end () && it->second.getType () == Attribute::Type::kFloat) { value = it->second.floatValue (); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostAttributeList::setString (AttrID aid, const TChar* string) { if (!aid) return kInvalidArgument; // + 1 for the null-terminate auto length = tstrlen (string) + 1; list[aid] = Attribute (string, length); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostAttributeList::getString (AttrID aid, TChar* string, uint32 sizeInBytes) { if (!aid) return kInvalidArgument; auto it = list.find (aid); if (it != list.end () && it->second.getType () == Attribute::Type::kString) { uint32 sizeInCodeUnit = 0; const TChar* _string = it->second.stringValue (sizeInCodeUnit); memcpy (string, _string, std::min (sizeInCodeUnit * sizeof (TChar), sizeInBytes)); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostAttributeList::setBinary (AttrID aid, const void* data, uint32 sizeInBytes) { if (!aid) return kInvalidArgument; list[aid] = Attribute (data, sizeInBytes); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API HostAttributeList::getBinary (AttrID aid, const void*& data, uint32& sizeInBytes) { if (!aid) return kInvalidArgument; auto it = list.find (aid); if (it != list.end () && it->second.getType () == Attribute::Type::kBinary) { data = it->second.binaryValue (sizeInBytes); return kResultTrue; } sizeInBytes = 0; return kResultFalse; } } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/hostclasses.h000066400000000000000000000112231461511344300226420ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/hostclasses.h // Created by : Steinberg, 03/05/2008. // Description : VST 3 hostclasses, example impl. for IHostApplication, IAttributeList and IMessage // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/hosting/pluginterfacesupport.h" #include "pluginterfaces/vst/ivsthostapplication.h" #include #include #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Implementation's example of IHostApplication. \ingroup hostingBase */ class HostApplication : public IHostApplication { public: HostApplication (); virtual ~HostApplication () noexcept {FUNKNOWN_DTOR} //--- IHostApplication --------------- tresult PLUGIN_API getName (String128 name) override; tresult PLUGIN_API createInstance (TUID cid, TUID _iid, void** obj) override; DECLARE_FUNKNOWN_METHODS PlugInterfaceSupport* getPlugInterfaceSupport () const { return mPlugInterfaceSupport; } private: IPtr mPlugInterfaceSupport; }; //------------------------------------------------------------------------ /** Example, ready to use implementation of IAttributeList. \ingroup hostingBase */ class HostAttributeList final : public IAttributeList { public: /** make a new attribute list instance */ static IPtr make (); tresult PLUGIN_API setInt (AttrID aid, int64 value) override; tresult PLUGIN_API getInt (AttrID aid, int64& value) override; tresult PLUGIN_API setFloat (AttrID aid, double value) override; tresult PLUGIN_API getFloat (AttrID aid, double& value) override; tresult PLUGIN_API setString (AttrID aid, const TChar* string) override; tresult PLUGIN_API getString (AttrID aid, TChar* string, uint32 sizeInBytes) override; tresult PLUGIN_API setBinary (AttrID aid, const void* data, uint32 sizeInBytes) override; tresult PLUGIN_API getBinary (AttrID aid, const void*& data, uint32& sizeInBytes) override; virtual ~HostAttributeList () noexcept; DECLARE_FUNKNOWN_METHODS private: HostAttributeList (); struct Attribute; std::map list; }; //------------------------------------------------------------------------ /** Example implementation of IMessage. \ingroup hostingBase */ class HostMessage final : public IMessage { public: HostMessage (); virtual ~HostMessage () noexcept; const char* PLUGIN_API getMessageID () override; void PLUGIN_API setMessageID (const char* messageID) override; IAttributeList* PLUGIN_API getAttributes () override; DECLARE_FUNKNOWN_METHODS private: char* messageId {nullptr}; IPtr attributeList; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/hostdataexchangehandler.cpp000066400000000000000000000314641461511344300255230ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Helpers // Filename : public.sdk/source/vst/hosting/hostdataexchangehandler.cpp // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Host Helper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "hostdataexchangehandler.h" #include "../utility/alignedalloc.h" #include "../utility/ringbuffer.h" #include "pluginterfaces/base/funknownimpl.h" #include #include #include #include #ifdef _MSC_VER #include #endif //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { DEF_CLASS_IID (IDataExchangeHandler); DEF_CLASS_IID (IDataExchangeReceiver); //------------------------------------------------------------------------ struct HostDataExchangeHandler::Impl : U::ImplementsNonDestroyable> { struct Block { Block () = default; Block (uint32 blockSize, uint32 alignment, DataExchangeBlockID id) : blockID (id), alignment (alignment) { data = aligned_alloc (blockSize, alignment); } Block (Block&& other) { *this = std::move (other); } ~Block () noexcept { if (data) aligned_free (data, alignment); } Block& operator= (Block&& other) { data = other.data; other.data = nullptr; blockID = other.blockID; other.blockID = InvalidDataExchangeBlockID; alignment = other.alignment; return *this; } void* data {nullptr}; DataExchangeBlockID blockID {InvalidDataExchangeBlockID}; uint32 alignment {0}; }; struct Queue { using BlockRingBuffer = OneReaderOneWriter::RingBuffer; // we do the assumption that the std::vector does not allocate memory when we don't push // more items than we reserve before using BlockVector = std::vector; Queue (IAudioProcessor* owner, IDataExchangeReceiver* receiver, DataExchangeUserContextID userContext, uint32 blockSize, uint32 numBlocks, uint32 alignment) : owner (owner) , receiver (receiver) , userContext (userContext) , blockSize (blockSize) , numBlocks (numBlocks) { receiver->queueOpened (userContext, blockSize, wantBlocksOnBackgroundThread); freeList.resize (numBlocks); sendList.resize (numBlocks); lockList.reserve (numBlocks); freeListOnRTThread.reserve (numBlocks); for (auto idx = 0u; idx < numBlocks; ++idx) freeList.push (Block (blockSize, alignment, idx)); } ~Queue () noexcept { if (receiver) receiver->queueClosed (userContext); } bool lock (DataExchangeBlock& block) { if (freeListOnRTThread.empty () == false) { auto& back = freeListOnRTThread.back (); block.data = back.data; block.size = blockSize; block.blockID = back.blockID; lockList.emplace_back (std::move (back)); freeListOnRTThread.pop_back (); return true; } Block b; if (freeList.pop (b)) { block.data = b.data; block.size = blockSize; block.blockID = b.blockID; lockList.emplace_back (std::move (b)); return true; } return false; } bool free (DataExchangeBlockID blockID) { if (blockID >= numBlocks) return false; auto it = std::find_if (lockList.begin (), lockList.end (), [&] (const auto& el) { return el.blockID == blockID; }); if (it == lockList.end ()) return false; Block b = std::move (*it); freeListOnRTThread.emplace_back (std::move (b)); lockList.erase (it); return true; } bool readyToSend (DataExchangeBlockID blockID) { if (blockID >= numBlocks) return false; auto it = std::find_if (lockList.begin (), lockList.end (), [&] (const auto& el) { return el.blockID == blockID; }); if (it == lockList.end ()) return false; Block b = std::move (*it); sendList.push (std::move (b)); lockList.erase (it); return true; } uint32 sendBlocks (DataExchangeQueueID queueID) { BlockVector blocks; Block b; while (sendList.pop (b)) { blocks.emplace_back (std::move (b)); } if (blocks.empty ()) return 0; std::vector debs; std::for_each (blocks.begin (), blocks.end (), [&] (const auto& el) { DataExchangeBlock block; block.data = el.data; block.size = blockSize; block.blockID = el.blockID; debs.push_back (block); }); receiver->onDataExchangeBlocksReceived (userContext, static_cast (debs.size ()), debs.data (), wantBlocksOnBackgroundThread); std::for_each (blocks.begin (), blocks.end (), [&] (auto&& el) { freeList.push (std::move (el)); }); return static_cast (debs.size ()); } IAudioProcessor* owner; IPtr receiver; DataExchangeUserContextID userContext {}; TBool wantBlocksOnBackgroundThread {false}; BlockRingBuffer freeList; BlockVector freeListOnRTThread; BlockVector lockList; BlockRingBuffer sendList; uint32 blockSize {0}; uint32 numBlocks {0}; }; using QueuePtr = std::unique_ptr; using QueueList = std::vector; Impl (IDataExchangeHandlerHost& host, uint32 maxQueues) : host (host) { queues.resize (maxQueues); } void setQueue (DataExchangeQueueID queueID, QueuePtr&& queue) { queuesLock.lock (); queues[queueID] = std::move (queue); if (queues[queueID]->wantBlocksOnBackgroundThread) ++numOpenBackgroundQueues; else ++numOpenMainThreadQueues; queuesLock.unlock (); host.onQueueOpened (queues[queueID]->owner, queueID, queues[queueID]->wantBlocksOnBackgroundThread); host.numberOfQueuesChanged (numOpenMainThreadQueues, numOpenBackgroundQueues); } tresult PLUGIN_API openQueue (IAudioProcessor* owner, uint32 blockSize, uint32 numBlocks, uint32 alignment, DataExchangeUserContextID userContext, DataExchangeQueueID* outID) override { if (!host.isMainThread ()) return kResultFalse; if (outID == nullptr) return kInvalidArgument; if (!host.isProcessorInactive (owner)) return kResultFalse; auto receiver = host.findDataExchangeReceiver (owner); if (!receiver) return kInvalidArgument; if (!host.allowAllocateSize (blockSize, numBlocks, alignment)) return kOutOfMemory; for (auto queueID = 0; queueID < queues.size (); ++queueID) { if (queues[queueID] == nullptr) { auto newQueue = std::make_unique (owner, receiver, userContext, blockSize, numBlocks, alignment); setQueue (queueID, std::move (newQueue)); *outID = queueID; return kResultTrue; } } auto queueSize = queues.size (); if (host.allowQueueListResize (static_cast (queueSize + 1))) { queues.resize (queueSize + 1); assert (queues.size () == queueSize + 1); DataExchangeQueueID queueID = static_cast (queueSize); auto newQueue = std::make_unique (owner, receiver, userContext, blockSize, numBlocks, alignment); setQueue (queueID, std::move (newQueue)); *outID = queueID; return kResultTrue; } return kOutOfMemory; } tresult PLUGIN_API closeQueue (DataExchangeQueueID queueID) override { if (!host.isMainThread ()) return kResultFalse; if (queues[queueID]) { if (!host.isProcessorInactive (queues[queueID]->owner)) return kResultFalse; QueuePtr q; queuesLock.lock (); std::swap (q, queues[queueID]); if (q->wantBlocksOnBackgroundThread) --numOpenBackgroundQueues; else --numOpenMainThreadQueues; queuesLock.unlock (); host.onQueueClosed (q->owner, queueID, q->wantBlocksOnBackgroundThread); host.numberOfQueuesChanged (numOpenMainThreadQueues, numOpenBackgroundQueues); q.reset (); return kResultTrue; } return kResultFalse; } tresult PLUGIN_API lockBlock (DataExchangeQueueID queueId, DataExchangeBlock* block) override { if (!block || queueId >= queues.size () || queues[queueId] == nullptr) return kInvalidArgument; if (queues[queueId]->lock (*block)) return kResultTrue; return kOutOfMemory; } tresult PLUGIN_API freeBlock (DataExchangeQueueID queueId, DataExchangeBlockID blockID, TBool sendToController) override { if (queueId >= queues.size () || queues[queueId] == nullptr) return kInvalidArgument; if (sendToController) { if (queues[queueId]->readyToSend (blockID)) { ++numReadyToSendBlocks; host.newBlockReadyToBeSend (queueId); return kResultTrue; } return kResultFalse; } return queues[queueId]->free (blockID) ? kResultTrue : kResultFalse; } bool sendBlocks (bool isMainThread, size_t queueID, uint32& numSendBlocks) { LockGuard guard (queuesLock); if (auto& queue = queues[queueID]) { if (queue->wantBlocksOnBackgroundThread != static_cast (isMainThread)) { numSendBlocks = queue->sendBlocks (static_cast (queueID)); } return true; } return false; } uint32 sendBlocks (bool isMainThread, DataExchangeQueueID queueFilter) { if (queueFilter != InvalidDataExchangeQueueID) { if (queueFilter < queues.size ()) { uint32 numSendBlocks; if (sendBlocks (isMainThread, queueFilter, numSendBlocks)) return numSendBlocks; } return 0; } uint32 totalSendBlocks = 0; uint32 openQueues = numOpenBackgroundQueues + numOpenMainThreadQueues; for (auto queueID = 0u; queueID < queues.size (); ++queueID) { uint32 numSendBlocks; if (sendBlocks (isMainThread, queueID, numSendBlocks)) { numReadyToSendBlocks -= numSendBlocks; totalSendBlocks += numSendBlocks; if ((--openQueues) == 0) break; } } return totalSendBlocks; } IDataExchangeHandlerHost& host; QueueList queues; std::atomic numReadyToSendBlocks {0}; std::atomic numOpenMainThreadQueues {0}; std::atomic numOpenBackgroundQueues {0}; using Mutex = std::recursive_mutex; using LockGuard = std::lock_guard; Mutex queuesLock; }; //------------------------------------------------------------------------ HostDataExchangeHandler::HostDataExchangeHandler (IDataExchangeHandlerHost& host, uint32 maxQueues) { impl = std::make_unique (host, maxQueues); } //------------------------------------------------------------------------ HostDataExchangeHandler::~HostDataExchangeHandler () noexcept = default; //------------------------------------------------------------------------ IDataExchangeHandler* HostDataExchangeHandler::getInterface () const { return impl.get (); } //------------------------------------------------------------------------ uint32 HostDataExchangeHandler::sendMainThreadBlocks () { return impl->sendBlocks (true, InvalidDataExchangeQueueID); } //------------------------------------------------------------------------ uint32 HostDataExchangeHandler::sendBackgroundBlocks (DataExchangeQueueID queueId) { return impl->sendBlocks (false, queueId); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/hostdataexchangehandler.h000066400000000000000000000127361461511344300251710ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Helpers // Filename : public.sdk/source/vst/hosting/hostdataexchangehandler.h // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Host Helper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstdataexchange.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ struct IDataExchangeHandlerHost { virtual ~IDataExchangeHandlerHost () noexcept = default; /** return if the audioprocessor is in an inactive state * [main thread] */ virtual bool isProcessorInactive (IAudioProcessor* processor) = 0; /** return the data exchange receiver (most likely the edit controller) for the processor * [main thread] */ virtual IPtr findDataExchangeReceiver (IAudioProcessor* processor) = 0; /** check if the requested queue size should be allowed * [main thread] */ virtual bool allowAllocateSize (uint32 blockSize, uint32 numBlocks, uint32 alignment) = 0; /** check if this call is made on the main thread * [any thread] */ virtual bool isMainThread () = 0; /** check if the number of queues can be changed in this moment. * * this is only allowed if no other thread can access the IDataExchangeManagerHost in this * moment * [main thread] */ virtual bool allowQueueListResize (uint32 newNumQueues) = 0; /** notification that the number of open queues changed * [main thread] */ virtual void numberOfQueuesChanged (uint32 openMainThreadQueues, uint32 openBackgroundThreadQueues) = 0; /** notification that a new queue was opened */ virtual void onQueueOpened (IAudioProcessor* processor, DataExchangeQueueID queueID, bool dispatchOnMainThread) = 0; /** notification that a queue was closed */ virtual void onQueueClosed (IAudioProcessor* processor, DataExchangeQueueID queueID, bool dispatchOnMainThread) = 0; /** notification that a new block is ready to be send * [process thread] */ virtual void newBlockReadyToBeSend (DataExchangeQueueID queueID) = 0; }; //------------------------------------------------------------------------ struct HostDataExchangeHandler { /** Constructor * * allocate and deallocate this object on the main thread * * the number of queues is constant * * @param host the managing host * @param maxQueues number of maximal allowed open queues */ HostDataExchangeHandler (IDataExchangeHandlerHost& host, uint32 maxQueues = 64); ~HostDataExchangeHandler () noexcept; /** get the IHostDataExchangeManager interface * * the interface you must provide to the IAudioProcessor */ IDataExchangeHandler* getInterface () const; /** send blocks * * the host should periodically call this method on the main thread to send all queued blocks * which should be send on the main thread */ uint32 sendMainThreadBlocks (); /** send blocks * * the host should call this on a dedicated background thread * inside a mutex is used, so don't delete this object while calling this * * @param queueId only send blocks from the specified queue. If queueId is equal to * InvalidDataExchangeQueueID all blocks from all queues are send. */ uint32 sendBackgroundBlocks (DataExchangeQueueID queueId = InvalidDataExchangeQueueID); private: struct Impl; std::unique_ptr impl; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/module.cpp000066400000000000000000000277501461511344300221430ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/module.cpp // Created by : Steinberg, 08/2016 // Description : hosting module classes // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "module.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "public.sdk/source/vst/utility/optional.h" #include #include //------------------------------------------------------------------------ namespace VST3 { namespace Hosting { //------------------------------------------------------------------------ FactoryInfo::FactoryInfo (PFactoryInfo&& other) noexcept { *this = std::move (other); } //------------------------------------------------------------------------ FactoryInfo& FactoryInfo::operator= (FactoryInfo&& other) noexcept { info = std::move (other.info); other.info = {}; return *this; } //------------------------------------------------------------------------ FactoryInfo& FactoryInfo::operator= (PFactoryInfo&& other) noexcept { info = std::move (other); other = {}; return *this; } //------------------------------------------------------------------------ std::string FactoryInfo::vendor () const noexcept { return StringConvert::convert (info.vendor, PFactoryInfo::kNameSize); } //------------------------------------------------------------------------ std::string FactoryInfo::url () const noexcept { return StringConvert::convert (info.url, PFactoryInfo::kURLSize); } //------------------------------------------------------------------------ std::string FactoryInfo::email () const noexcept { return StringConvert::convert (info.email, PFactoryInfo::kEmailSize); } //------------------------------------------------------------------------ Steinberg::int32 FactoryInfo::flags () const noexcept { return info.flags; } //------------------------------------------------------------------------ bool FactoryInfo::classesDiscardable () const noexcept { return (info.flags & PFactoryInfo::kClassesDiscardable) != 0; } //------------------------------------------------------------------------ bool FactoryInfo::licenseCheck () const noexcept { return (info.flags & PFactoryInfo::kLicenseCheck) != 0; } //------------------------------------------------------------------------ bool FactoryInfo::componentNonDiscardable () const noexcept { return (info.flags & PFactoryInfo::kComponentNonDiscardable) != 0; } //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ PluginFactory::PluginFactory (const PluginFactoryPtr& factory) noexcept : factory (factory) { } //------------------------------------------------------------------------ void PluginFactory::setHostContext (Steinberg::FUnknown* context) const noexcept { if (auto f = Steinberg::FUnknownPtr (factory)) f->setHostContext (context); } //------------------------------------------------------------------------ FactoryInfo PluginFactory::info () const noexcept { Steinberg::PFactoryInfo i; factory->getFactoryInfo (&i); return FactoryInfo (std::move (i)); } //------------------------------------------------------------------------ uint32_t PluginFactory::classCount () const noexcept { auto count = factory->countClasses (); assert (count >= 0); return static_cast (count); } //------------------------------------------------------------------------ PluginFactory::ClassInfos PluginFactory::classInfos () const noexcept { auto count = classCount (); Optional factoryInfo; ClassInfos classes; classes.reserve (count); auto f3 = Steinberg::FUnknownPtr (factory); auto f2 = Steinberg::FUnknownPtr (factory); Steinberg::PClassInfo ci; Steinberg::PClassInfo2 ci2; Steinberg::PClassInfoW ci3; for (uint32_t i = 0; i < count; ++i) { if (f3 && f3->getClassInfoUnicode (i, &ci3) == Steinberg::kResultTrue) classes.emplace_back (ci3); else if (f2 && f2->getClassInfo2 (i, &ci2) == Steinberg::kResultTrue) classes.emplace_back (ci2); else if (factory->getClassInfo (i, &ci) == Steinberg::kResultTrue) classes.emplace_back (ci); auto& classInfo = classes.back (); if (classInfo.vendor ().empty ()) { if (!factoryInfo) factoryInfo = Optional (info ()); classInfo.get ().vendor = factoryInfo->vendor (); } } return classes; } //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ const UID& ClassInfo::ID () const noexcept { return data.classID; } //------------------------------------------------------------------------ int32_t ClassInfo::cardinality () const noexcept { return data.cardinality; } //------------------------------------------------------------------------ const std::string& ClassInfo::category () const noexcept { return data.category; } //------------------------------------------------------------------------ const std::string& ClassInfo::name () const noexcept { return data.name; } //------------------------------------------------------------------------ const std::string& ClassInfo::vendor () const noexcept { return data.vendor; } //------------------------------------------------------------------------ const std::string& ClassInfo::version () const noexcept { return data.version; } //------------------------------------------------------------------------ const std::string& ClassInfo::sdkVersion () const noexcept { return data.sdkVersion; } //------------------------------------------------------------------------ const ClassInfo::SubCategories& ClassInfo::subCategories () const noexcept { return data.subCategories; } //------------------------------------------------------------------------ Steinberg::uint32 ClassInfo::classFlags () const noexcept { return data.classFlags; } //------------------------------------------------------------------------ ClassInfo::ClassInfo (const PClassInfo& info) noexcept { data.classID = info.cid; data.cardinality = info.cardinality; data.category = StringConvert::convert (info.category, PClassInfo::kCategorySize); data.name = StringConvert::convert (info.name, PClassInfo::kNameSize); } //------------------------------------------------------------------------ ClassInfo::ClassInfo (const PClassInfo2& info) noexcept { data.classID = info.cid; data.cardinality = info.cardinality; data.category = StringConvert::convert (info.category, PClassInfo::kCategorySize); data.name = StringConvert::convert (info.name, PClassInfo::kNameSize); data.vendor = StringConvert::convert (info.vendor, PClassInfo2::kVendorSize); data.version = StringConvert::convert (info.version, PClassInfo2::kVersionSize); data.sdkVersion = StringConvert::convert (info.sdkVersion, PClassInfo2::kVersionSize); parseSubCategories ( StringConvert::convert (info.subCategories, PClassInfo2::kSubCategoriesSize)); data.classFlags = info.classFlags; } //------------------------------------------------------------------------ ClassInfo::ClassInfo (const PClassInfoW& info) noexcept { data.classID = info.cid; data.cardinality = info.cardinality; data.category = StringConvert::convert (info.category, PClassInfo::kCategorySize); data.name = StringConvert::convert (info.name, PClassInfo::kNameSize); data.vendor = StringConvert::convert (info.vendor, PClassInfo2::kVendorSize); data.version = StringConvert::convert (info.version, PClassInfo2::kVersionSize); data.sdkVersion = StringConvert::convert (info.sdkVersion, PClassInfo2::kVersionSize); parseSubCategories ( StringConvert::convert (info.subCategories, PClassInfo2::kSubCategoriesSize)); data.classFlags = info.classFlags; } //------------------------------------------------------------------------ void ClassInfo::parseSubCategories (const std::string& str) noexcept { std::stringstream stream (str); std::string item; while (std::getline (stream, item, '|')) data.subCategories.emplace_back (std::move (item)); } //------------------------------------------------------------------------ std::string ClassInfo::subCategoriesString () const noexcept { std::string result; if (data.subCategories.empty ()) return result; result = data.subCategories[0]; for (auto index = 1u; index < data.subCategories.size (); ++index) result += "|" + data.subCategories[index]; return result; } //------------------------------------------------------------------------ namespace { //------------------------------------------------------------------------ std::pair rangeOfScaleFactor (const std::string& name) { auto result = std::make_pair (std::string::npos, std::string::npos); size_t xIndex = name.find_last_of ('x'); if (xIndex == std::string::npos) return result; size_t indicatorIndex = name.find_last_of ('_'); if (indicatorIndex == std::string::npos) return result; if (xIndex < indicatorIndex) return result; result.first = indicatorIndex + 1; result.second = xIndex; return result; } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ Optional Module::Snapshot::decodeScaleFactor (const std::string& name) { auto range = rangeOfScaleFactor (name); if (range.first == std::string::npos || range.second == std::string::npos) return {}; std::string tmp (name.data () + range.first, range.second - range.first); std::istringstream sstream (tmp); sstream.imbue (std::locale::classic ()); sstream.precision (static_cast (3)); double result; sstream >> result; return Optional (result); } //------------------------------------------------------------------------ Optional Module::Snapshot::decodeUID (const std::string& filename) { if (filename.size () < 45) return {}; if (filename.find ("_snapshot") != 32) return {}; auto uidStr = filename.substr (0, 32); return UID::fromString (uidStr); } //------------------------------------------------------------------------ } // Hosting } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/module.h000066400000000000000000000177001461511344300216020ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/module.h // Created by : Steinberg, 08/2016 // Description : hosting module classes // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "../utility/uid.h" #include "pluginterfaces/base/ipluginbase.h" #include #include //------------------------------------------------------------------------ namespace VST3 { namespace Hosting { //------------------------------------------------------------------------ class FactoryInfo { public: //------------------------------------------------------------------------ using PFactoryInfo = Steinberg::PFactoryInfo; FactoryInfo () noexcept {} ~FactoryInfo () noexcept {} FactoryInfo (const FactoryInfo&) noexcept = default; FactoryInfo (PFactoryInfo&&) noexcept; FactoryInfo (FactoryInfo&&) noexcept = default; FactoryInfo& operator= (const FactoryInfo&) noexcept = default; FactoryInfo& operator= (FactoryInfo&&) noexcept; FactoryInfo& operator= (PFactoryInfo&&) noexcept; std::string vendor () const noexcept; std::string url () const noexcept; std::string email () const noexcept; Steinberg::int32 flags () const noexcept; bool classesDiscardable () const noexcept; bool licenseCheck () const noexcept; bool componentNonDiscardable () const noexcept; PFactoryInfo& get () noexcept { return info; } //------------------------------------------------------------------------ private: PFactoryInfo info {}; }; //------------------------------------------------------------------------ class ClassInfo { public: //------------------------------------------------------------------------ using SubCategories = std::vector; using PClassInfo = Steinberg::PClassInfo; using PClassInfo2 = Steinberg::PClassInfo2; using PClassInfoW = Steinberg::PClassInfoW; //------------------------------------------------------------------------ ClassInfo () noexcept {} explicit ClassInfo (const PClassInfo& info) noexcept; explicit ClassInfo (const PClassInfo2& info) noexcept; explicit ClassInfo (const PClassInfoW& info) noexcept; ClassInfo (const ClassInfo&) = default; ClassInfo& operator= (const ClassInfo&) = default; ClassInfo (ClassInfo&&) = default; ClassInfo& operator= (ClassInfo&&) = default; const UID& ID () const noexcept; int32_t cardinality () const noexcept; const std::string& category () const noexcept; const std::string& name () const noexcept; const std::string& vendor () const noexcept; const std::string& version () const noexcept; const std::string& sdkVersion () const noexcept; const SubCategories& subCategories () const noexcept; std::string subCategoriesString () const noexcept; Steinberg::uint32 classFlags () const noexcept; struct Data { UID classID; int32_t cardinality; std::string category; std::string name; std::string vendor; std::string version; std::string sdkVersion; SubCategories subCategories; Steinberg::uint32 classFlags = 0; }; Data& get () noexcept { return data; } //------------------------------------------------------------------------ private: void parseSubCategories (const std::string& str) noexcept; Data data {}; }; //------------------------------------------------------------------------ class PluginFactory { public: //------------------------------------------------------------------------ using ClassInfos = std::vector; using PluginFactoryPtr = Steinberg::IPtr; //------------------------------------------------------------------------ explicit PluginFactory (const PluginFactoryPtr& factory) noexcept; void setHostContext (Steinberg::FUnknown* context) const noexcept; FactoryInfo info () const noexcept; uint32_t classCount () const noexcept; ClassInfos classInfos () const noexcept; template Steinberg::IPtr createInstance (const UID& classID) const noexcept; const PluginFactoryPtr& get () const noexcept { return factory; } //------------------------------------------------------------------------ private: PluginFactoryPtr factory; }; //------------------------------------------------------------------------ //------------------------------------------------------------------------ class Module { public: //------------------------------------------------------------------------ struct Snapshot { struct ImageDesc { double scaleFactor {1.}; std::string path; }; UID uid; std::vector images; static Optional decodeScaleFactor (const std::string& path); static Optional decodeUID (const std::string& filename); }; using Ptr = std::shared_ptr; using PathList = std::vector; using SnapshotList = std::vector; //------------------------------------------------------------------------ static Ptr create (const std::string& path, std::string& errorDescription); static PathList getModulePaths (); static SnapshotList getSnapshots (const std::string& modulePath); /** get the path to the module info json file if it exists */ static Optional getModuleInfoPath (const std::string& modulePath); const std::string& getName () const noexcept { return name; } const std::string& getPath () const noexcept { return path; } const PluginFactory& getFactory () const noexcept { return factory; } bool isBundle () const noexcept { return hasBundleStructure; } //------------------------------------------------------------------------ protected: virtual ~Module () noexcept = default; virtual bool load (const std::string& path, std::string& errorDescription) = 0; PluginFactory factory {nullptr}; std::string name; std::string path; bool hasBundleStructure {true}; }; //------------------------------------------------------------------------ template inline Steinberg::IPtr PluginFactory::createInstance (const UID& classID) const noexcept { T* obj = nullptr; if (factory->createInstance (classID.data (), T::iid, reinterpret_cast (&obj)) == Steinberg::kResultTrue) return Steinberg::owned (obj); return nullptr; } //------------------------------------------------------------------------ } // Hosting } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/module_linux.cpp000066400000000000000000000243461461511344300233600ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/module_linux.cpp // Created by : Steinberg, 08/2016 // Description : hosting module classes (linux implementation) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "module.h" #include "../utility/optional.h" #include "../utility/stringconvert.h" #include #include #include #include #include #if SMTG_CPP17 #if __has_include() #define USE_EXPERIMENTAL_FS 0 #elif __has_include() #define USE_EXPERIMENTAL_FS 1 #endif #else // !SMTG_CPP17 #define USE_EXPERIMENTAL_FS 1 #endif // SMTG_CPP17 #if USE_EXPERIMENTAL_FS == 1 #include namespace filesystem = std::experimental::filesystem; #else // USE_FILESYSTEM == 0 #include namespace filesystem = std::filesystem; #endif // USE_FILESYSTEM //------------------------------------------------------------------------ extern "C" { using ModuleEntryFunc = bool (PLUGIN_API*) (void*); using ModuleExitFunc = bool (PLUGIN_API*) (); } //------------------------------------------------------------------------ namespace VST3 { namespace Hosting { using Path = filesystem::path; //------------------------------------------------------------------------ namespace { //------------------------------------------------------------------------ Optional getCurrentMachineName () { struct utsname unameData; int res = uname (&unameData); if (res != 0) return {}; return {unameData.machine}; } //------------------------------------------------------------------------ Optional getApplicationPath () { std::string appPath = ""; pid_t pid = getpid (); char buf[10]; sprintf (buf, "%d", pid); std::string _link = "/proc/"; _link.append (buf); _link.append ("/exe"); char proc[1024]; int ch = readlink (_link.c_str (), proc, 1024); if (ch == -1) return {}; proc[ch] = 0; appPath = proc; std::string::size_type t = appPath.find_last_of ("/"); appPath = appPath.substr (0, t); return Path {appPath}; } //------------------------------------------------------------------------ class LinuxModule : public Module { public: template T getFunctionPointer (const char* name) { return reinterpret_cast (dlsym (mModule, name)); } ~LinuxModule () override { factory = PluginFactory (nullptr); if (mModule) { if (auto moduleExit = getFunctionPointer ("ModuleExit")) moduleExit (); dlclose (mModule); } } static Optional getSOPath (const std::string& inPath) { Path modulePath {inPath}; if (!filesystem::is_directory (modulePath)) return {}; auto stem = modulePath.stem (); modulePath /= "Contents"; if (!filesystem::is_directory (modulePath)) return {}; // use the Machine Hardware Name (from uname cmd-line) as prefix for "-linux" auto machine = getCurrentMachineName (); if (!machine) return {}; modulePath /= *machine + "-linux"; if (!filesystem::is_directory (modulePath)) return {}; stem.replace_extension (".so"); modulePath /= stem; return Optional (std::move (modulePath)); } bool load (const std::string& inPath, std::string& errorDescription) override { auto modulePath = getSOPath (inPath); if (!modulePath) { errorDescription = inPath + " is not a module directory."; return false; } mModule = dlopen (reinterpret_cast (modulePath->generic_string ().data ()), RTLD_LAZY); if (!mModule) { errorDescription = "dlopen failed.\n"; errorDescription += dlerror (); return false; } // ModuleEntry is mandatory auto moduleEntry = getFunctionPointer ("ModuleEntry"); if (!moduleEntry) { errorDescription = "The shared library does not export the required 'ModuleEntry' function"; return false; } // ModuleExit is mandatory auto moduleExit = getFunctionPointer ("ModuleExit"); if (!moduleExit) { errorDescription = "The shared library does not export the required 'ModuleExit' function"; return false; } auto factoryProc = getFunctionPointer ("GetPluginFactory"); if (!factoryProc) { errorDescription = "The shared library does not export the required 'GetPluginFactory' function"; return false; } if (!moduleEntry (mModule)) { errorDescription = "Calling 'ModuleEntry' failed"; return false; } auto f = Steinberg::FUnknownPtr (owned (factoryProc ())); if (!f) { errorDescription = "Calling 'GetPluginFactory' returned nullptr"; return false; } factory = PluginFactory (f); return true; } void* mModule {nullptr}; }; //------------------------------------------------------------------------ void findFilesWithExt (const std::string& path, const std::string& ext, Module::PathList& pathList, bool recursive = true) { try { for (auto& p : filesystem::directory_iterator (path)) { if (p.path ().extension () == ext) { pathList.push_back (p.path ().generic_string ()); } else if (recursive && p.status ().type () == filesystem::file_type::directory) { findFilesWithExt (p.path (), ext, pathList); } } } catch (...) { } } //------------------------------------------------------------------------ void findModules (const std::string& path, Module::PathList& pathList) { findFilesWithExt (path, ".vst3", pathList); } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ Module::Ptr Module::create (const std::string& path, std::string& errorDescription) { auto _module = std::make_shared (); if (_module->load (path, errorDescription)) { _module->path = path; auto it = std::find_if (path.rbegin (), path.rend (), [] (const std::string::value_type& c) { return c == '/'; }); if (it != path.rend ()) _module->name = {it.base (), path.end ()}; return _module; } return nullptr; } //------------------------------------------------------------------------ Module::PathList Module::getModulePaths () { /* VST3 component locations on linux : * User privately installed : $HOME/.vst3/ * Distribution installed : /usr/lib/vst3/ * Locally installed : /usr/local/lib/vst3/ * Application : /$APPFOLDER/vst3/ */ const auto systemPaths = {"/usr/lib/vst3/", "/usr/local/lib/vst3/"}; PathList list; if (auto homeDir = getenv ("HOME")) { filesystem::path homePath (homeDir); homePath /= ".vst3"; findModules (homePath.generic_string (), list); } for (auto path : systemPaths) findModules (path, list); // application level auto appPath = getApplicationPath (); if (appPath) { *appPath /= "vst3"; findModules (appPath->generic_string (), list); } return list; } //------------------------------------------------------------------------ Module::SnapshotList Module::getSnapshots (const std::string& modulePath) { SnapshotList result; filesystem::path path (modulePath); path /= "Contents"; path /= "Resources"; path /= "Snapshots"; PathList pngList; findFilesWithExt (path, ".png", pngList, false); for (auto& png : pngList) { filesystem::path p (png); auto filename = p.filename ().generic_string (); auto uid = Snapshot::decodeUID (filename); if (!uid) continue; auto scaleFactor = 1.; if (auto decodedScaleFactor = Snapshot::decodeScaleFactor (filename)) scaleFactor = *decodedScaleFactor; Module::Snapshot::ImageDesc desc; desc.scaleFactor = scaleFactor; desc.path = std::move (png); bool found = false; for (auto& entry : result) { if (entry.uid != *uid) continue; found = true; entry.images.emplace_back (std::move (desc)); break; } if (found) continue; Module::Snapshot snapshot; snapshot.uid = *uid; snapshot.images.emplace_back (std::move (desc)); result.emplace_back (std::move (snapshot)); } return result; } //------------------------------------------------------------------------ Optional Module::getModuleInfoPath (const std::string& modulePath) { filesystem::path path (modulePath); path /= "Contents"; path /= "Resources"; path /= "moduleinfo.json"; if (filesystem::exists (path)) return {path.generic_string ()}; return {}; } //------------------------------------------------------------------------ } // Hosting } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/module_mac.mm000066400000000000000000000306451461511344300226070ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/module_mac.mm // Created by : Steinberg, 08/2016 // Description : hosting module classes (macOS implementation) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "module.h" #import #import #if !__has_feature(objc_arc) #error this file needs to be compiled with automatic reference counting enabled #endif //------------------------------------------------------------------------ extern "C" { typedef bool (*BundleEntryFunc) (CFBundleRef); typedef bool (*BundleExitFunc) (); } //------------------------------------------------------------------------ namespace VST3 { namespace Hosting { //------------------------------------------------------------------------ namespace { //------------------------------------------------------------------------ template class CFPtr { public: inline CFPtr (const T& obj = nullptr) : obj (obj) {} inline CFPtr (CFPtr&& other) { *this = other; } inline ~CFPtr () { if (obj) CFRelease (obj); } inline CFPtr& operator= (CFPtr&& other) { obj = other.obj; other.obj = nullptr; return *this; } inline CFPtr& operator= (const T& o) { if (obj) CFRelease (obj); obj = o; return *this; } inline operator T () const { return obj; } // act as T private: CFPtr (const CFPtr& other) = delete; CFPtr& operator= (const CFPtr& other) = delete; T obj = nullptr; }; //------------------------------------------------------------------------ class MacModule : public Module { public: template T getFunctionPointer (const char* name) { assert (bundle); CFPtr functionName ( CFStringCreateWithCString (kCFAllocatorDefault, name, kCFStringEncodingASCII)); return reinterpret_cast (CFBundleGetFunctionPointerForName (bundle, functionName)); } bool loadInternal (const std::string& path, std::string& errorDescription) { CFPtr url (CFURLCreateFromFileSystemRepresentation ( kCFAllocatorDefault, reinterpret_cast (path.data ()), path.length (), true)); if (!url) return false; bundle = CFBundleCreate (kCFAllocatorDefault, url); CFErrorRef error = nullptr; if (!bundle || !CFBundleLoadExecutableAndReturnError (bundle, &error)) { if (error) { CFPtr errorString (CFErrorCopyDescription (error)); if (errorString) { auto stringLength = CFStringGetLength (errorString); auto maxSize = CFStringGetMaximumSizeForEncoding (stringLength, kCFStringEncodingUTF8); auto buffer = std::make_unique (maxSize); if (CFStringGetCString (errorString, buffer.get (), maxSize, kCFStringEncodingUTF8)) errorDescription = buffer.get (); CFRelease (error); } } else { errorDescription = "Could not create Bundle for path: " + path; } return false; } // bundleEntry is mandatory auto bundleEntry = getFunctionPointer ("bundleEntry"); if (!bundleEntry) { errorDescription = "Bundle does not export the required 'bundleEntry' function"; return false; } // bundleExit is mandatory auto bundleExit = getFunctionPointer ("bundleExit"); if (!bundleExit) { errorDescription = "Bundle does not export the required 'bundleExit' function"; return false; } auto factoryProc = getFunctionPointer ("GetPluginFactory"); if (!factoryProc) { errorDescription = "Bundle does not export the required 'GetPluginFactory' function"; return false; } if (!bundleEntry (bundle)) { errorDescription = "Calling 'bundleEntry' failed"; return false; } auto f = owned (factoryProc ()); if (!f) { errorDescription = "Calling 'GetPluginFactory' returned nullptr"; return false; } factory = PluginFactory (f); return true; } bool load (const std::string& path, std::string& errorDescription) override { if (!path.empty () && path[0] != '/') { auto buffer = std::make_unique (PATH_MAX); auto workDir = getcwd (buffer.get (), PATH_MAX); if (workDir) { std::string wd (workDir); wd += "/"; if (loadInternal (wd + path, errorDescription)) { name = path; return true; } return false; } } return loadInternal (path, errorDescription); } ~MacModule () override { factory = PluginFactory (nullptr); if (bundle) { if (auto bundleExit = getFunctionPointer ("bundleExit")) bundleExit (); } } CFPtr bundle; }; //------------------------------------------------------------------------ void findModulesInDirectory (NSURL* dirUrl, Module::PathList& result) { dirUrl = [dirUrl URLByResolvingSymlinksInPath]; if (!dirUrl) return; NSDirectoryEnumerator* enumerator = [[NSFileManager defaultManager] enumeratorAtURL: dirUrl includingPropertiesForKeys:nil options:NSDirectoryEnumerationSkipsPackageDescendants errorHandler:nil]; for (NSURL* url in enumerator) { if ([[[url lastPathComponent] pathExtension] isEqualToString:@"vst3"]) { CFPtr archs ( CFBundleCopyExecutableArchitecturesForURL (static_cast (url))); if (archs) result.emplace_back ([url.path UTF8String]); } else { id resValue; if (![url getResourceValue:&resValue forKey:NSURLIsSymbolicLinkKey error:nil]) continue; if (!static_cast (resValue).boolValue) continue; auto resolvedUrl = [url URLByResolvingSymlinksInPath]; if (![resolvedUrl getResourceValue:&resValue forKey:NSURLIsDirectoryKey error:nil]) continue; if (!static_cast (resValue).boolValue) continue; findModulesInDirectory (resolvedUrl, result); } } } //------------------------------------------------------------------------ void getModules (NSSearchPathDomainMask domain, Module::PathList& result) { NSURL* libraryUrl = [[NSFileManager defaultManager] URLForDirectory:NSLibraryDirectory inDomain:domain appropriateForURL:nil create:NO error:nil]; if (libraryUrl == nil) return; NSURL* audioUrl = [libraryUrl URLByAppendingPathComponent:@"Audio"]; if (audioUrl == nil) return; NSURL* plugInsUrl = [audioUrl URLByAppendingPathComponent:@"Plug-Ins"]; if (plugInsUrl == nil) return; NSURL* vst3Url = [[plugInsUrl URLByAppendingPathComponent:@"VST3"] URLByResolvingSymlinksInPath]; if (vst3Url == nil) return; findModulesInDirectory (vst3Url, result); } //------------------------------------------------------------------------ void getApplicationModules (Module::PathList& result) { auto bundle = CFBundleGetMainBundle (); if (!bundle) return; auto bundleUrl = static_cast (CFBridgingRelease (CFBundleCopyBundleURL (bundle))); if (!bundleUrl) return; auto resUrl = [bundleUrl URLByAppendingPathComponent:@"Contents"]; if (!resUrl) return; auto vst3Url = [resUrl URLByAppendingPathComponent:@"VST3"]; if (!vst3Url) return; findModulesInDirectory (vst3Url, result); } //------------------------------------------------------------------------ void getModuleSnapshots (const std::string& path, Module::SnapshotList& result) { auto nsString = [NSString stringWithUTF8String:path.data ()]; if (!nsString) return; auto bundleUrl = [NSURL fileURLWithPath:nsString]; if (!bundleUrl) return; auto urls = [NSBundle URLsForResourcesWithExtension:@"png" subdirectory:@"Snapshots" inBundleWithURL:bundleUrl]; if (!urls || [urls count] == 0) return; for (NSURL* url in urls) { std::string fullpath ([[url path] UTF8String]); std::string filename ([[[url path] lastPathComponent] UTF8String]); auto uid = Module::Snapshot::decodeUID (filename); if (!uid) continue; auto scaleFactor = 1.; if (auto decodedScaleFactor = Module::Snapshot::decodeScaleFactor (filename)) scaleFactor = *decodedScaleFactor; Module::Snapshot::ImageDesc desc; desc.scaleFactor = scaleFactor; desc.path = std::move (fullpath); bool found = false; for (auto& entry : result) { if (entry.uid != *uid) continue; found = true; entry.images.emplace_back (std::move (desc)); break; } if (found) continue; Module::Snapshot snapshot; snapshot.uid = *uid; snapshot.images.emplace_back (std::move (desc)); result.emplace_back (std::move (snapshot)); } } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ Module::Ptr Module::create (const std::string& path, std::string& errorDescription) { auto module = std::make_shared (); if (module->load (path, errorDescription)) { module->path = path; auto it = std::find_if (path.rbegin (), path.rend (), [] (const std::string::value_type& c) { return c == '/'; }); if (it != path.rend ()) module->name = {it.base (), path.end ()}; return std::move (module); } return nullptr; } //------------------------------------------------------------------------ Module::PathList Module::getModulePaths () { PathList list; getModules (NSUserDomainMask, list); getModules (NSLocalDomainMask, list); // TODO getModules (NSNetworkDomainMask, list); getApplicationModules (list); return list; } //------------------------------------------------------------------------ Module::SnapshotList Module::getSnapshots (const std::string& modulePath) { SnapshotList list; getModuleSnapshots (modulePath, list); return list; } //------------------------------------------------------------------------ Optional Module::getModuleInfoPath (const std::string& modulePath) { auto nsString = [NSString stringWithUTF8String:modulePath.data ()]; if (!nsString) return {}; auto bundleUrl = [NSURL fileURLWithPath:nsString]; if (!bundleUrl) return {}; auto moduleInfoUrl = [NSBundle URLForResource:@"moduleinfo" withExtension:@"json" subdirectory:nullptr inBundleWithURL:bundleUrl]; if (!moduleInfoUrl) return {}; NSError* error = nil; if ([moduleInfoUrl checkResourceIsReachableAndReturnError:&error]) return {std::string (moduleInfoUrl.fileSystemRepresentation)}; return {}; } //------------------------------------------------------------------------ } // Hosting } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/module_win32.cpp000066400000000000000000000444321461511344300231610ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/module_win32.cpp // Created by : Steinberg, 08/2016 // Description : hosting module classes (win32 implementation) // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "../utility/optional.h" #include "../utility/stringconvert.h" #include "module.h" #include #include #include #include #if SMTG_CPP17 #if __has_include() #define USE_FILESYSTEM 1 #elif __has_include() #define USE_FILESYSTEM 0 #endif #else // !SMTG_CPP17 #define USE_FILESYSTEM 0 #endif // SMTG_CPP17 #if USE_FILESYSTEM == 1 #include namespace filesystem = std::filesystem; #else // USE_FILESYSTEM == 0 // The header is deprecated. It is superseded by the C++17 // header. You can define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to silence the // warning, otherwise the build will fail in VS2019 16.3.0 #define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING #include namespace filesystem = std::experimental::filesystem; #endif // USE_FILESYSTEM #pragma comment(lib, "Shell32") //------------------------------------------------------------------------ extern "C" { using InitModuleFunc = bool (PLUGIN_API*) (); using ExitModuleFunc = bool (PLUGIN_API*) (); } //------------------------------------------------------------------------ namespace VST3 { namespace Hosting { constexpr unsigned long kIPPathNameMax = 1024; //------------------------------------------------------------------------ namespace { #define USE_OLE !USE_FILESYSTEM // for testing only #if 0 // DEVELOPMENT #define LOG_ENABLE 1 #else #define LOG_ENABLE 0 #endif #if SMTG_PLATFORM_64 #if SMTG_OS_WINDOWS_ARM #if SMTG_CPU_ARM_64EC constexpr auto architectureString = "arm64ec-win"; constexpr auto architectureX64String = "x86_64-win"; #else // !SMTG_CPU_ARM_64EC constexpr auto architectureString = "arm64-win"; #endif // SMTG_CPU_ARM_64EC constexpr auto architectureArm64XString = "arm64x-win"; #else // !SMTG_OS_WINDOWS_ARM constexpr auto architectureString = "x86_64-win"; #endif // SMTG_OS_WINDOWS_ARM #else // !SMTG_PLATFORM_64 #if SMTG_OS_WINDOWS_ARM constexpr auto architectureString = "arm-win"; #else // !SMTG_OS_WINDOWS_ARM constexpr auto architectureString = "x86-win"; #endif // SMTG_OS_WINDOWS_ARM #endif // SMTG_PLATFORM_64 #if USE_OLE //------------------------------------------------------------------------ struct Ole { static Ole& instance () { static Ole gInstance; return gInstance; } private: Ole () { OleInitialize (nullptr); } ~Ole () { OleUninitialize (); } }; #endif // USE_OLE //------------------------------------------------------------------------ class Win32Module : public Module { public: template T getFunctionPointer (const char* name) { return reinterpret_cast (GetProcAddress (mModule, name)); } ~Win32Module () override { factory = PluginFactory (nullptr); if (mModule) { // ExitDll is optional if (auto dllExit = getFunctionPointer ("ExitDll")) dllExit (); FreeLibrary ((HMODULE)mModule); } } //--- ----------------------------------------------------------------------- HINSTANCE loadAsPackage (const std::string& inPath, const char* archString = architectureString) { filesystem::path p (inPath); auto filename = p.filename (); p /= "Contents"; p /= archString; p /= filename; auto wideStr = StringConvert::convert (p.string ()); HINSTANCE instance = LoadLibraryW (reinterpret_cast (wideStr.data ())); #if SMTG_CPU_ARM_64EC if (instance == nullptr) instance = loadAsPackage (inPath, architectureArm64XString); if (instance == nullptr) instance = loadAsPackage (inPath, architectureX64String); #endif return instance; } //--- ----------------------------------------------------------------------- HINSTANCE loadAsDll (const std::string& inPath, std::string& errorDescription) { auto wideStr = StringConvert::convert (inPath); HINSTANCE instance = LoadLibraryW (reinterpret_cast (wideStr.data ())); if (instance == nullptr) { auto lastError = GetLastError (); LPVOID lpMessageBuffer {nullptr}; if (FormatMessageA (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, nullptr, lastError, MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMessageBuffer, 0, nullptr) > 0) { errorDescription = "LoadLibray failed: " + std::string ((char*)lpMessageBuffer); LocalFree (lpMessageBuffer); } else { errorDescription = "LoadLibrary failed with error number : " + std::to_string (lastError); } } else { hasBundleStructure = false; } return instance; } //--- ----------------------------------------------------------------------- bool load (const std::string& inPath, std::string& errorDescription) override { // filesystem::u8path is deprecated in C++20 #if SMTG_CPP20 const filesystem::path tmp (inPath); #else const filesystem::path tmp = filesystem::u8path (inPath); #endif if (filesystem::is_directory (tmp)) { // try as package (bundle) mModule = loadAsPackage (inPath); } else { // try old definition without package mModule = loadAsDll (inPath, errorDescription); } if (mModule == nullptr) return false; auto factoryProc = getFunctionPointer ("GetPluginFactory"); if (!factoryProc) { errorDescription = "The dll does not export the required 'GetPluginFactory' function"; return false; } // InitDll is optional auto dllEntry = getFunctionPointer ("InitDll"); if (dllEntry && !dllEntry ()) { errorDescription = "Calling 'InitDll' failed"; return false; } auto f = Steinberg::FUnknownPtr (owned (factoryProc ())); if (!f) { errorDescription = "Calling 'GetPluginFactory' returned nullptr"; return false; } factory = PluginFactory (f); return true; } HINSTANCE mModule {nullptr}; }; //------------------------------------------------------------------------ bool openVST3Package (const filesystem::path& p, const char* archString, filesystem::path* result = nullptr) { auto path = p; path /= "Contents"; path /= archString; path /= p.filename (); auto hFile = CreateFileW (reinterpret_cast (path.c_str ()), GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr); if (hFile != INVALID_HANDLE_VALUE) { CloseHandle (hFile); if (result) *result = path; return true; } return false; } //------------------------------------------------------------------------ bool checkVST3Package (const filesystem::path& p, filesystem::path* result = nullptr, const char* archString = architectureString) { if (openVST3Package (p, archString, result)) return true; #if SMTG_CPU_ARM_64EC if (openVST3Package (p, architectureArm64XString, result)) return true; if (openVST3Package (p, architectureX64String, result)) return true; #endif return false; } //------------------------------------------------------------------------ bool isFolderSymbolicLink (const filesystem::path& p) { #if USE_FILESYSTEM if (/*filesystem::exists (p) &&*/ filesystem::is_symlink (p)) return true; #else std::wstring wString = p.generic_wstring (); auto attrib = GetFileAttributesW (reinterpret_cast (wString.c_str ())); if (attrib & FILE_ATTRIBUTE_REPARSE_POINT) { auto hFile = CreateFileW (reinterpret_cast (wString.c_str ()), GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr); if (hFile == INVALID_HANDLE_VALUE) return true; CloseHandle (hFile); } #endif return false; } //------------------------------------------------------------------------ Optional getKnownFolder (REFKNOWNFOLDERID folderID) { PWSTR wideStr {}; if (FAILED (SHGetKnownFolderPath (folderID, 0, nullptr, &wideStr))) return {}; return StringConvert::convert (Steinberg::wscast (wideStr)); } //------------------------------------------------------------------------ VST3::Optional resolveShellLink (const filesystem::path& p) { #if USE_FILESYSTEM return {filesystem::read_symlink (p).lexically_normal ()}; #elif USE_OLE Ole::instance (); IShellLink* shellLink = nullptr; if (!SUCCEEDED (CoCreateInstance (CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, IID_IShellLink, reinterpret_cast (&shellLink)))) return {}; IPersistFile* persistFile = nullptr; if (!SUCCEEDED ( shellLink->QueryInterface (IID_IPersistFile, reinterpret_cast (&persistFile)))) return {}; if (!SUCCEEDED (persistFile->Load (p.wstring ().data (), STGM_READ))) return {}; if (!SUCCEEDED (shellLink->Resolve (nullptr, MAKELONG (SLR_NO_UI, 500)))) return {}; WCHAR resolvedPath[kIPPathNameMax]; if (!SUCCEEDED (shellLink->GetPath (resolvedPath, kIPPathNameMax, nullptr, SLGP_SHORTPATH))) return {}; std::wstring longPath; longPath.resize (kIPPathNameMax); auto numChars = GetLongPathNameW (resolvedPath, const_cast (longPath.data ()), kIPPathNameMax); if (!numChars) return {}; longPath.resize (numChars); persistFile->Release (); shellLink->Release (); return {filesystem::path (longPath)}; #else return {}; #endif } //------------------------------------------------------------------------ void addToPathList (Module::PathList& pathList, const std::string& toAdd) { #if LOG_ENABLE std::cout << "=> add: " << toAdd << "\n"; #endif pathList.push_back (toAdd); } //------------------------------------------------------------------------ void findFilesWithExt (const filesystem::path& path, const std::string& ext, Module::PathList& pathList, bool recursive = true) { for (auto& p : filesystem::directory_iterator (path)) { #if USE_FILESYSTEM filesystem::path finalPath (p); if (isFolderSymbolicLink (p)) { if (auto res = resolveShellLink (p)) { finalPath = *res; if (!filesystem::exists (finalPath)) continue; } else continue; } const auto& cpExt = finalPath.extension (); if (cpExt == ext) { filesystem::path result; if (checkVST3Package (finalPath, &result)) { addToPathList (pathList, result.generic_string ()); continue; } } if (filesystem::is_directory (finalPath)) { if (recursive) findFilesWithExt (finalPath, ext, pathList, recursive); } else if (cpExt == ext) addToPathList (pathList, finalPath.generic_string ()); #else const auto& cp = p.path (); const auto& cpExt = cp.extension (); if (cpExt == ext) { if ((p.status ().type () == filesystem::file_type::directory) || isFolderSymbolicLink (p)) { filesystem::path result; if (checkVST3Package (p, &result)) { addToPathList (pathList, result.generic_u8string ()); continue; } findFilesWithExt (cp, ext, pathList, recursive); } else addToPathList (pathList, cp.generic_u8string ()); } else if (recursive) { if (p.status ().type () == filesystem::file_type::directory) { findFilesWithExt (cp, ext, pathList, recursive); } else if (cpExt == ".lnk") { if (auto resolvedLink = resolveShellLink (cp)) { if (resolvedLink->extension () == ext) { if (filesystem::is_directory (*resolvedLink) || isFolderSymbolicLink (*resolvedLink)) { filesystem::path result; if (checkVST3Package (*resolvedLink, &result)) { addToPathList (pathList, result.generic_u8string ()); continue; } findFilesWithExt (*resolvedLink, ext, pathList, recursive); } else addToPathList (pathList, resolvedLink->generic_u8string ()); } else if (filesystem::is_directory (*resolvedLink)) { const auto& str = resolvedLink->generic_u8string (); if (cp.generic_u8string ().compare (0, str.size (), str.data (), str.size ()) != 0) findFilesWithExt (*resolvedLink, ext, pathList, recursive); } } } } #endif } } //------------------------------------------------------------------------ void findModules (const filesystem::path& path, Module::PathList& pathList) { if (filesystem::exists (path)) findFilesWithExt (path, ".vst3", pathList); } //------------------------------------------------------------------------ Optional getContentsDirectoryFromModuleExecutablePath ( const std::string& modulePath) { filesystem::path path (modulePath); path = path.parent_path (); if (path.filename () != architectureString) return {}; path = path.parent_path (); if (path.filename () != "Contents") return {}; return Optional {std::move (path)}; } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ Module::Ptr Module::create (const std::string& path, std::string& errorDescription) { auto _module = std::make_shared (); if (_module->load (path, errorDescription)) { _module->path = path; auto it = std::find_if (path.rbegin (), path.rend (), [] (const std::string::value_type& c) { return c == '/'; }); if (it != path.rend ()) _module->name = {it.base (), path.end ()}; return _module; } return nullptr; } //------------------------------------------------------------------------ Module::PathList Module::getModulePaths () { // find plug-ins located in common/VST3 PathList list; if (auto knownFolder = getKnownFolder (FOLDERID_UserProgramFilesCommon)) { filesystem::path path (*knownFolder); path.append ("VST3"); #if LOG_ENABLE std::cout << "Check folder: " << path << "\n"; #endif findModules (path, list); } if (auto knownFolder = getKnownFolder (FOLDERID_ProgramFilesCommon)) { filesystem::path path (*knownFolder); path.append ("VST3"); #if LOG_ENABLE std::cout << "Check folder: " << path << "\n"; #endif findModules (path, list); } // find plug-ins located in VST3 (application folder) WCHAR modulePath[kIPPathNameMax]; GetModuleFileNameW (nullptr, modulePath, kIPPathNameMax); auto appPath = StringConvert::convert (Steinberg::wscast (modulePath)); filesystem::path path (appPath); path = path.parent_path (); path = path.append ("VST3"); #if LOG_ENABLE std::cout << "Check folder: " << path << "\n"; #endif findModules (path, list); return list; } //------------------------------------------------------------------------ Optional Module::getModuleInfoPath (const std::string& modulePath) { auto path = getContentsDirectoryFromModuleExecutablePath (modulePath); if (!path) { filesystem::path p; if (!checkVST3Package ({modulePath}, &p)) return {}; p = p.parent_path (); p = p.parent_path (); path = Optional {p}; } *path /= "Resources"; *path /= "moduleinfo.json"; if (filesystem::exists (*path)) { return {path->generic_string ()}; } return {}; } //------------------------------------------------------------------------ Module::SnapshotList Module::getSnapshots (const std::string& modulePath) { SnapshotList result; auto path = getContentsDirectoryFromModuleExecutablePath (modulePath); if (!path) { filesystem::path p; if (!checkVST3Package ({modulePath}, &p)) return result; p = p.parent_path (); p = p.parent_path (); path = Optional (p); } *path /= "Resources"; *path /= "Snapshots"; if (filesystem::exists (*path) == false) return result; PathList pngList; findFilesWithExt (*path, ".png", pngList, false); for (auto& png : pngList) { filesystem::path p (png); auto filename = p.filename ().generic_string (); auto uid = Snapshot::decodeUID (filename); if (!uid) continue; auto scaleFactor = 1.; if (auto decodedScaleFactor = Snapshot::decodeScaleFactor (filename)) scaleFactor = *decodedScaleFactor; Module::Snapshot::ImageDesc desc; desc.scaleFactor = scaleFactor; desc.path = std::move (png); bool found = false; for (auto& entry : result) { if (entry.uid != *uid) continue; found = true; entry.images.emplace_back (std::move (desc)); break; } if (found) continue; Module::Snapshot snapshot; snapshot.uid = *uid; snapshot.images.emplace_back (std::move (desc)); result.emplace_back (std::move (snapshot)); } return result; } //------------------------------------------------------------------------ } // Hosting } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/parameterchanges.cpp000066400000000000000000000226531461511344300241640ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/parameterchanges.cpp // Created by : Steinberg, 03/05/2008. // Description : VST 3 parameter changes implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "parameterchanges.h" namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- IMPLEMENT_FUNKNOWN_METHODS (ParameterChanges, IParameterChanges, IParameterChanges::iid) IMPLEMENT_FUNKNOWN_METHODS (ParameterValueQueue, IParamValueQueue, IParamValueQueue::iid) constexpr int32 kQueueReservedPoints = 5; //----------------------------------------------------------------------------- ParameterValueQueue::ParameterValueQueue (ParamID paramID) : paramID (paramID) { values.reserve (kQueueReservedPoints); FUNKNOWN_CTOR } //----------------------------------------------------------------------------- ParameterValueQueue::~ParameterValueQueue () { FUNKNOWN_DTOR } //----------------------------------------------------------------------------- void ParameterValueQueue::clear () { values.clear (); } //----------------------------------------------------------------------------- int32 PLUGIN_API ParameterValueQueue::getPointCount () { return static_cast (values.size ()); } //----------------------------------------------------------------------------- tresult PLUGIN_API ParameterValueQueue::getPoint (int32 index, int32& sampleOffset, ParamValue& value) { if (index >= 0 && index < static_cast (values.size ())) { const ParameterQueueValue& queueValue = values[index]; sampleOffset = queueValue.sampleOffset; value = queueValue.value; return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API ParameterValueQueue::addPoint (int32 sampleOffset, ParamValue value, int32& index) { auto destIndex = static_cast(values.size ()); for (uint32 i = 0; i < values.size (); i++) { if (values[i].sampleOffset == sampleOffset) { values[i].value = value; index = i; return kResultTrue; } if (values[i].sampleOffset > sampleOffset) { destIndex = i; break; } } // need new point ParameterQueueValue queueValue (value, sampleOffset); if (destIndex == static_cast (values.size ())) values.emplace_back (queueValue); else values.insert (values.begin () + destIndex, queueValue); index = destIndex; return kResultTrue; } //----------------------------------------------------------------------------- // ParameterChanges //----------------------------------------------------------------------------- ParameterChanges::ParameterChanges (int32 maxParameters) { FUNKNOWN_CTOR setMaxParameters (maxParameters); } //----------------------------------------------------------------------------- ParameterChanges::~ParameterChanges () { FUNKNOWN_DTOR } //----------------------------------------------------------------------------- void ParameterChanges::setMaxParameters (int32 maxParameters) { if (maxParameters < 0) return; while (static_cast (queues.size ()) < maxParameters) { queues.emplace_back (owned (new ParameterValueQueue (kNoParamId))); } while (static_cast (queues.size ()) > maxParameters) { queues.pop_back (); } if (usedQueueCount > maxParameters) usedQueueCount = maxParameters; } //----------------------------------------------------------------------------- void ParameterChanges::clearQueue () { usedQueueCount = 0; } //----------------------------------------------------------------------------- int32 PLUGIN_API ParameterChanges::getParameterCount () { return usedQueueCount; } //----------------------------------------------------------------------------- IParamValueQueue* PLUGIN_API ParameterChanges::getParameterData (int32 index) { if (index >= 0 && index < usedQueueCount) return queues[index]; return nullptr; } //----------------------------------------------------------------------------- IParamValueQueue* PLUGIN_API ParameterChanges::addParameterData (const ParamID& pid, int32& index) { for (int32 i = 0; i < usedQueueCount; i++) { if (queues[i]->getParameterId () == pid) { index = i; return queues[i]; } } ParameterValueQueue* valueQueue = nullptr; if (usedQueueCount < static_cast (queues.size ())) { valueQueue = queues[usedQueueCount]; valueQueue->setParamID (pid); valueQueue->clear (); } else { queues.emplace_back (owned (new ParameterValueQueue (pid))); valueQueue = queues.back (); } index = usedQueueCount; usedQueueCount++; return valueQueue; } //----------------------------------------------------------------------------- // ParameterChangeTransfer //----------------------------------------------------------------------------- ParameterChangeTransfer::ParameterChangeTransfer (int32 maxParameters) : size (0) , changes (nullptr) , readIndex (0) , writeIndex (0) { setMaxParameters (maxParameters); } //----------------------------------------------------------------------------- ParameterChangeTransfer::~ParameterChangeTransfer () { setMaxParameters (0); } //----------------------------------------------------------------------------- void ParameterChangeTransfer::setMaxParameters (int32 maxParameters) { // reserve memory for twice the amount of all parameters int32 newSize = maxParameters * 2; if (size != newSize) { if (changes) delete [] changes; changes = nullptr; size = newSize; if (size > 0) changes = new ParameterChange [size]; } } //----------------------------------------------------------------------------- void ParameterChangeTransfer::addChange (ParamID pid, ParamValue value, int32 sampleOffset) { if (changes) { changes[writeIndex].id = pid; changes[writeIndex].value = value; changes[writeIndex].sampleOffset = sampleOffset; int32 newWriteIndex = writeIndex + 1; if (newWriteIndex >= size) newWriteIndex = 0; if (readIndex != newWriteIndex) writeIndex = newWriteIndex; } } //----------------------------------------------------------------------------- bool ParameterChangeTransfer::getNextChange (ParamID& pid, ParamValue& value, int32& sampleOffset) { if (!changes) return false; int32 currentWriteIndex = writeIndex; if (readIndex != currentWriteIndex) { pid = changes [readIndex].id; value = changes [readIndex].value; sampleOffset = changes [readIndex].sampleOffset; int32 newReadIndex = readIndex + 1; if (newReadIndex >= size) newReadIndex = 0; readIndex = newReadIndex; return true; } return false; } //----------------------------------------------------------------------------- void ParameterChangeTransfer::transferChangesTo (ParameterChanges& dest) { ParamID pid; ParamValue value; int32 sampleOffset; int32 index; while (getNextChange (pid, value, sampleOffset)) { IParamValueQueue* queue = dest.addParameterData (pid, index); if (queue) { queue->addPoint (sampleOffset, value, index); } } } //----------------------------------------------------------------------------- void ParameterChangeTransfer::transferChangesFrom (ParameterChanges& source) { ParamValue value; int32 sampleOffset; for (int32 i = 0; i < source.getParameterCount (); i++) { IParamValueQueue* queue = source.getParameterData (i); if (queue) { for (int32 j = 0; j < queue->getPointCount (); j++) { if (queue->getPoint (j, sampleOffset, value) == kResultTrue) { addChange (queue->getParameterId (), value, sampleOffset); } } } } } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/parameterchanges.h000066400000000000000000000125271461511344300236300ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/parameterchanges.h // Created by : Steinberg, 03/05/2008. // Description : VST 3 parameter changes implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstparameterchanges.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Implementation's example of IParamValueQueue - not threadsave!. \ingroup hostingBase */ class ParameterValueQueue : public IParamValueQueue { public: //------------------------------------------------------------------------ ParameterValueQueue (ParamID paramID); virtual ~ParameterValueQueue (); ParamID PLUGIN_API getParameterId () SMTG_OVERRIDE { return paramID; } int32 PLUGIN_API getPointCount () SMTG_OVERRIDE; tresult PLUGIN_API getPoint (int32 index, int32& sampleOffset, ParamValue& value) SMTG_OVERRIDE; tresult PLUGIN_API addPoint (int32 sampleOffset, ParamValue value, int32& index) SMTG_OVERRIDE; void setParamID (ParamID pID) {paramID = pID;} void clear (); //------------------------------------------------------------------------ DECLARE_FUNKNOWN_METHODS protected: ParamID paramID; struct ParameterQueueValue { ParameterQueueValue (ParamValue value, int32 sampleOffset) : value (value), sampleOffset (sampleOffset) {} ParamValue value; int32 sampleOffset; }; std::vector values; }; //------------------------------------------------------------------------ /** Implementation's example of IParameterChanges - not threadsave!. \ingroup hostingBase */ class ParameterChanges : public IParameterChanges { public: //------------------------------------------------------------------------ ParameterChanges (int32 maxParameters = 0); virtual ~ParameterChanges (); void clearQueue (); void setMaxParameters (int32 maxParameters); //---IParameterChanges----------------------------- int32 PLUGIN_API getParameterCount () SMTG_OVERRIDE; IParamValueQueue* PLUGIN_API getParameterData (int32 index) SMTG_OVERRIDE; IParamValueQueue* PLUGIN_API addParameterData (const ParamID& pid, int32& index) SMTG_OVERRIDE; //------------------------------------------------------------------------ DECLARE_FUNKNOWN_METHODS protected: std::vector> queues; int32 usedQueueCount {0}; }; //------------------------------------------------------------------------ /** Ring buffer for transferring parameter changes from a writer to a read thread . \ingroup hostingBase */ class ParameterChangeTransfer { public: //------------------------------------------------------------------------ ParameterChangeTransfer (int32 maxParameters = 0); virtual ~ParameterChangeTransfer (); void setMaxParameters (int32 maxParameters); void addChange (ParamID pid, ParamValue value, int32 sampleOffset); bool getNextChange (ParamID& pid, ParamValue& value, int32& sampleOffset); void transferChangesTo (ParameterChanges& dest); void transferChangesFrom (ParameterChanges& source); void removeChanges () { writeIndex = readIndex; } //------------------------------------------------------------------------ protected: struct ParameterChange { ParamID id; ParamValue value; int32 sampleOffset; }; int32 size; ParameterChange* changes; volatile int32 readIndex; volatile int32 writeIndex; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/pluginterfacesupport.cpp000066400000000000000000000127551461511344300251420ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/pluginterfacesupport.cpp // Created by : Steinberg, 11/2018. // Description : VST 3 hostclasses, example implementations for IPlugInterfaceSupport // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginterfacesupport.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstunits.h" #include "pluginterfaces/vst/ivstmessage.h" #include //----------------------------------------------------------------------------- namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- PlugInterfaceSupport::PlugInterfaceSupport () { FUNKNOWN_CTOR // add minimum set //---VST 3.0.0-------------------------------- addPlugInterfaceSupported (IComponent::iid); addPlugInterfaceSupported (IAudioProcessor::iid); addPlugInterfaceSupported (IEditController::iid); addPlugInterfaceSupported (IConnectionPoint::iid); addPlugInterfaceSupported (IUnitInfo::iid); addPlugInterfaceSupported (IUnitData::iid); addPlugInterfaceSupported (IProgramListData::iid); //---VST 3.0.1-------------------------------- addPlugInterfaceSupported (IMidiMapping::iid); //---VST 3.1---------------------------------- addPlugInterfaceSupported (IEditController2::iid); /* //---VST 3.0.2-------------------------------- addPlugInterfaceSupported (IParameterFinder::iid); //---VST 3.1---------------------------------- addPlugInterfaceSupported (IAudioPresentationLatency::iid); //---VST 3.5---------------------------------- addPlugInterfaceSupported (IKeyswitchController::iid); addPlugInterfaceSupported (IContextMenuTarget::iid); addPlugInterfaceSupported (IEditControllerHostEditing::iid); addPlugInterfaceSupported (IXmlRepresentationController::iid); addPlugInterfaceSupported (INoteExpressionController::iid); //---VST 3.6.5-------------------------------- addPlugInterfaceSupported (ChannelContext::IInfoListener::iid); addPlugInterfaceSupported (IPrefetchableSupport::iid); addPlugInterfaceSupported (IAutomationState::iid); //---VST 3.6.11-------------------------------- addPlugInterfaceSupported (INoteExpressionPhysicalUIMapping::iid); //---VST 3.6.12-------------------------------- addPlugInterfaceSupported (IMidiLearn::iid); //---VST 3.7----------------------------------- addPlugInterfaceSupported (IProcessContextRequirements::iid); addPlugInterfaceSupported (IParameterFunctionName::iid); addPlugInterfaceSupported (IProgress::iid); */ } //----------------------------------------------------------------------------- tresult PLUGIN_API PlugInterfaceSupport::isPlugInterfaceSupported (const TUID _iid) { auto uid = FUID::fromTUID (_iid); if (std::find (mFUIDArray.begin (), mFUIDArray.end (), uid) != mFUIDArray.end ()) return kResultTrue; return kResultFalse; } //----------------------------------------------------------------------------- void PlugInterfaceSupport::addPlugInterfaceSupported (const TUID _iid) { mFUIDArray.push_back (FUID::fromTUID (_iid)); } //----------------------------------------------------------------------------- bool PlugInterfaceSupport::removePlugInterfaceSupported (const TUID _iid) { auto uid = FUID::fromTUID (_iid); auto it = std::find (mFUIDArray.begin (), mFUIDArray.end (), uid); if (it == mFUIDArray.end ()) return false; mFUIDArray.erase (it); return true; } IMPLEMENT_FUNKNOWN_METHODS (PlugInterfaceSupport, IPlugInterfaceSupport, IPlugInterfaceSupport::iid) //----------------------------------------------------------------------------- } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/pluginterfacesupport.h000066400000000000000000000057171461511344300246070ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/pluginterfacesupport.h // Created by : Steinberg, 11/20018. // Description : VST 3 hostclasses, example implementations for IPlugInterfaceSupport // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstpluginterfacesupport.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Example implementation of IPlugInterfaceSupport. \ingroup hostingBase */ class PlugInterfaceSupport : public IPlugInterfaceSupport { public: PlugInterfaceSupport (); virtual ~PlugInterfaceSupport () = default; //--- IPlugInterfaceSupport --------- tresult PLUGIN_API isPlugInterfaceSupported (const TUID _iid) SMTG_OVERRIDE; void addPlugInterfaceSupported (const TUID _iid); bool removePlugInterfaceSupported (const TUID _iid); DECLARE_FUNKNOWN_METHODS private: std::vector mFUIDArray; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/plugprovider.cpp000066400000000000000000000233431461511344300233720ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/plugprovider.cpp // Created by : Steinberg, 08/2016 // Description : VST 3 Plug-in Provider class // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "plugprovider.h" #include "connectionproxy.h" #include "pluginterfaces/vst/ivstcomponent.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstmessage.h" #include #include static std::ostream* errorStream = &std::cout; //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // PlugProvider //------------------------------------------------------------------------ PlugProvider::PlugProvider (const PluginFactory& factory, ClassInfo classInfo, bool plugIsGlobal) : factory (factory) , component (nullptr) , controller (nullptr) , classInfo (classInfo) , plugIsGlobal (plugIsGlobal) { } //------------------------------------------------------------------------ PlugProvider::~PlugProvider () { terminatePlugin (); } //------------------------------------------------------------------------ template void PlugProvider::printError (Proc p) const { if (errorStream) { p (*errorStream); } } //------------------------------------------------------------------------ bool PlugProvider::initialize () { if (plugIsGlobal) { return setupPlugin (PluginContextFactory::instance ().getPluginContext ()); } return true; } //------------------------------------------------------------------------ IComponent* PLUGIN_API PlugProvider::getComponent () { if (!component) setupPlugin (PluginContextFactory::instance ().getPluginContext ()); if (component) component->addRef (); return component; } //------------------------------------------------------------------------ IEditController* PLUGIN_API PlugProvider::getController () { if (controller) controller->addRef (); // 'iController == 0' is allowed! In this case the plug has no controller return controller; } //------------------------------------------------------------------------ IPluginFactory* PLUGIN_API PlugProvider::getPluginFactory () { if (auto f = factory.get ()) return f.get (); return nullptr; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugProvider::getComponentUID (FUID& uid) const { uid = FUID::fromTUID (classInfo.ID ().data ()); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API PlugProvider::releasePlugIn (IComponent* iComponent, IEditController* iController) { if (iComponent) iComponent->release (); if (iController) iController->release (); if (!plugIsGlobal) { terminatePlugin (); } return kResultOk; } //------------------------------------------------------------------------ bool PlugProvider::setupPlugin (FUnknown* hostContext) { bool res = false; bool isSingleComponent = false; //---create Plug-in here!-------------- // create its component part component = factory.createInstance (classInfo.ID ()); if (component) { // initialize the component with our context FUnknownPtr plugBase (component); if (plugBase) { res = (plugBase->initialize (hostContext) == kResultOk); if (res == false) { printError ([&] (std::ostream& stream) { stream << "Failed to initialize component of " << classInfo.name () << "!\n"; }); return false; } } else { printError ([&] (std::ostream& stream) { stream << "Failed to get IPluginBase from component of " << classInfo.name () << "!\n"; }); return false; } // try to create the controller part from the component // (for Plug-ins which did not succeed to separate component from controller) if (component->queryInterface (IEditController::iid, (void**)&controller) == kResultTrue) { isSingleComponent = true; } else { TUID controllerCID; // ask for the associated controller class ID if (component->getControllerClassId (controllerCID) == kResultTrue) { // create its controller part created from the factory controller = factory.createInstance (VST3::UID (controllerCID)); if (controller) { // initialize the component with our context FUnknownPtr plugCtrlBase (controller); if (plugCtrlBase) { res = (plugCtrlBase->initialize (hostContext) == kResultOk); if (res == false) { printError ([&] (std::ostream& stream) { stream << "Failed to initialize controller of " << classInfo.name () << "!\n"; }); } } else { printError ([&] (std::ostream& stream) { stream << "Failed to get IPluginBase from controller of " << classInfo.name () << "!\n"; }); return false; } } } else { printError ([&] (std::ostream& stream) { stream << "Component does not provide a required controller class ID [" << classInfo.name () << "]!\n"; }); } } if (!res) { component.reset (); controller.reset (); } } else if (errorStream) { printError ([&] (std::ostream& stream) { stream << "Failed to create component instance of " << classInfo.name () << "!\n"; }); } if (res && !isSingleComponent) return connectComponents (); return res; } //------------------------------------------------------------------------ bool PlugProvider::connectComponents () { if (!component || !controller) return false; FUnknownPtr compICP (component); FUnknownPtr contrICP (controller); if (!compICP || !contrICP) return false; bool res = false; componentCP = owned (new ConnectionProxy (compICP)); controllerCP = owned (new ConnectionProxy (contrICP)); tresult tres = componentCP->connect (contrICP); if (tres != kResultTrue) { printError ([&] (std::ostream& stream) { stream << "Failed to connect the component with the controller with result code '" << tres << "'!\n"; }); return false; } tres = controllerCP->connect (compICP); if (tres != kResultTrue) { printError ([&] (std::ostream& stream) { stream << "Failed to connect the controller with the component with result code '" << tres << "'!\n"; }); return false; } return true; } //------------------------------------------------------------------------ bool PlugProvider::disconnectComponents () { if (!componentCP || !controllerCP) return false; bool res = componentCP->disconnect (); res &= controllerCP->disconnect (); componentCP.reset (); controllerCP.reset (); return res; } //------------------------------------------------------------------------ void PlugProvider::terminatePlugin () { disconnectComponents (); bool controllerIsComponent = false; if (component) { controllerIsComponent = FUnknownPtr (component).getInterface () != nullptr; FUnknownPtr plugBase (component); if (plugBase) plugBase->terminate (); else { printError ([&](std::ostream& stream) { stream << "Failed to get IPluginBase from component of " << classInfo.name () << "!\n"; }); } } if (controller && controllerIsComponent == false) { FUnknownPtr plugCtrlBase (controller); if (plugCtrlBase) plugCtrlBase->terminate (); else { printError ([&](std::ostream& stream) { stream << "Failed to get IPluginBase from controller of " << classInfo.name () << "!\n"; }); } } component.reset (); controller.reset (); } //------------------------------------------------------------------------ void PlugProvider::setErrorStream (std::ostream* stream) { errorStream = stream; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/plugprovider.h000066400000000000000000000114511461511344300230340ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/plugprovider.h // Created by : Steinberg, 04/2005 // Description : VST 3 Plug-in Provider class // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/hosting/module.h" #include "pluginterfaces/vst/ivsttestplugprovider.h" #include "pluginterfaces/base/funknownimpl.h" #include namespace Steinberg { namespace Vst { class IComponent; class IEditController; class ConnectionProxy; //------------------------------------------------------------------------ /** Helper for creating and initializing component. \ingroup Validator */ //------------------------------------------------------------------------ class PlugProvider : public U::Implements, U::Indirectly> { public: using ClassInfo = VST3::Hosting::ClassInfo; using PluginFactory = VST3::Hosting::PluginFactory; //--- --------------------------------------------------------------------- PlugProvider (const PluginFactory& factory, ClassInfo info, bool plugIsGlobal = true); ~PlugProvider () override; bool initialize (); IPtr getComponentPtr () const { return component; } IPtr getControllerPtr () const { return controller; } const ClassInfo& getClassInfo () const { return classInfo; } //--- from ITestPlugProvider ------------------ IComponent* PLUGIN_API getComponent () SMTG_OVERRIDE; IEditController* PLUGIN_API getController () SMTG_OVERRIDE; tresult PLUGIN_API releasePlugIn (IComponent* component, IEditController* controller) SMTG_OVERRIDE; tresult PLUGIN_API getSubCategories (IStringResult& result) const SMTG_OVERRIDE { result.setText (classInfo.subCategoriesString ().data ()); return kResultTrue; } tresult PLUGIN_API getComponentUID (FUID& uid) const SMTG_OVERRIDE; //--- from ITestPlugProvider2 ------------------ IPluginFactory* PLUGIN_API getPluginFactory () SMTG_OVERRIDE; static void setErrorStream (std::ostream* stream); //------------------------------------------------------------------------ protected: bool setupPlugin (FUnknown* hostContext); bool connectComponents (); bool disconnectComponents (); void terminatePlugin (); template void printError (Proc p) const; PluginFactory factory; IPtr component; IPtr controller; ClassInfo classInfo; IPtr componentCP; IPtr controllerCP; bool plugIsGlobal; }; //------------------------------------------------------------------------ class PluginContextFactory { public: static PluginContextFactory& instance () { static PluginContextFactory factory; return factory; } void setPluginContext (FUnknown* obj) { context = obj; } FUnknown* getPluginContext () const { return context; } private: FUnknown* context; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/processdata.cpp000066400000000000000000000155421461511344300231620ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/processdata.cpp // Created by : Steinberg, 10/2005 // Description : VST Hosting Utilities // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "processdata.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // HostProcessData //------------------------------------------------------------------------ HostProcessData::~HostProcessData () noexcept { unprepare (); } //------------------------------------------------------------------------ bool HostProcessData::prepare (IComponent& component, int32 bufferSamples, int32 _symbolicSampleSize) { if (checkIfReallocationNeeded (component, bufferSamples, _symbolicSampleSize)) { unprepare (); symbolicSampleSize = _symbolicSampleSize; channelBufferOwner = bufferSamples > 0; numInputs = createBuffers (component, inputs, kInput, bufferSamples); numOutputs = createBuffers (component, outputs, kOutput, bufferSamples); } else { // reset silence flags for (int32 i = 0; i < numInputs; i++) { inputs[i].silenceFlags = 0; } for (int32 i = 0; i < numOutputs; i++) { outputs[i].silenceFlags = 0; } } symbolicSampleSize = _symbolicSampleSize; return true; } //------------------------------------------------------------------------ void HostProcessData::unprepare () { destroyBuffers (inputs, numInputs); destroyBuffers (outputs, numOutputs); channelBufferOwner = false; } //------------------------------------------------------------------------ bool HostProcessData::checkIfReallocationNeeded (IComponent& component, int32 bufferSamples, int32 _symbolicSampleSize) const { if (channelBufferOwner != (bufferSamples > 0)) return true; if (symbolicSampleSize != _symbolicSampleSize) return true; int32 inBusCount = component.getBusCount (kAudio, kInput); if (inBusCount != numInputs) return true; int32 outBusCount = component.getBusCount (kAudio, kOutput); if (outBusCount != numOutputs) return true; for (int32 i = 0; i < inBusCount; i++) { BusInfo busInfo = {}; if (component.getBusInfo (kAudio, kInput, i, busInfo) == kResultTrue) { if (inputs[i].numChannels != busInfo.channelCount) return true; } } for (int32 i = 0; i < outBusCount; i++) { BusInfo busInfo = {}; if (component.getBusInfo (kAudio, kOutput, i, busInfo) == kResultTrue) { if (outputs[i].numChannels != busInfo.channelCount) return true; } } return false; } //----------------------------------------------------------------------------- int32 HostProcessData::createBuffers (IComponent& component, AudioBusBuffers*& buffers, BusDirection dir, int32 bufferSamples) { int32 busCount = component.getBusCount (kAudio, dir); if (busCount > 0) { buffers = new AudioBusBuffers[busCount]; for (int32 i = 0; i < busCount; i++) { BusInfo busInfo = {}; if (component.getBusInfo (kAudio, dir, i, busInfo) == kResultTrue) { buffers[i].numChannels = busInfo.channelCount; // allocate for each channel if (busInfo.channelCount > 0) { if (symbolicSampleSize == kSample64) buffers[i].channelBuffers64 = new Sample64*[busInfo.channelCount]; else buffers[i].channelBuffers32 = new Sample32*[busInfo.channelCount]; for (int32 j = 0; j < busInfo.channelCount; j++) { if (symbolicSampleSize == kSample64) { if (bufferSamples > 0) buffers[i].channelBuffers64[j] = new Sample64[bufferSamples]; else buffers[i].channelBuffers64[j] = nullptr; } else { if (bufferSamples > 0) buffers[i].channelBuffers32[j] = new Sample32[bufferSamples]; else buffers[i].channelBuffers32[j] = nullptr; } } } } } } return busCount; } //----------------------------------------------------------------------------- void HostProcessData::destroyBuffers (AudioBusBuffers*& buffers, int32& busCount) { if (buffers) { for (int32 i = 0; i < busCount; i++) { if (channelBufferOwner) { for (int32 j = 0; j < buffers[i].numChannels; j++) { if (symbolicSampleSize == kSample64) { if (buffers[i].channelBuffers64 && buffers[i].channelBuffers64[j]) delete[] buffers[i].channelBuffers64[j]; } else { if (buffers[i].channelBuffers32 && buffers[i].channelBuffers32[j]) delete[] buffers[i].channelBuffers32[j]; } } } if (symbolicSampleSize == kSample64) { if (buffers[i].channelBuffers64) delete[] buffers[i].channelBuffers64; } else { if (buffers[i].channelBuffers32) delete[] buffers[i].channelBuffers32; } } delete[] buffers; buffers = nullptr; } busCount = 0; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/processdata.h000066400000000000000000000215111461511344300226200ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/processdata.h // Created by : Steinberg, 10/2005 // Description : VST Hosting Utilities // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstcomponent.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Extension of ProcessData. Helps setting up the buffers for the process data structure for a component. When the prepare method is called with bufferSamples != 0 the buffer management is handled by this class. Otherwise the buffers need to be setup explicitly. \ingroup hostingBase */ class HostProcessData : public ProcessData { public: //------------------------------------------------------------------------ HostProcessData () = default; virtual ~HostProcessData () noexcept; /** Prepare buffer containers for all busses. If bufferSamples is not null buffers will be * created. */ bool prepare (IComponent& component, int32 bufferSamples, int32 _symbolicSampleSize); /** Remove bus buffers. */ void unprepare (); /** Sets one sample buffer for all channels inside a bus. */ bool setChannelBuffers (BusDirection dir, int32 busIndex, Sample32* sampleBuffer); bool setChannelBuffers64 (BusDirection dir, int32 busIndex, Sample64* sampleBuffer); /** Sets individual sample buffers per channel inside a bus. */ bool setChannelBuffers (BusDirection dir, int32 busIndex, Sample32* sampleBuffers[], int32 bufferCount); bool setChannelBuffers64 (BusDirection dir, int32 busIndex, Sample64* sampleBuffers[], int32 bufferCount); /** Sets one sample buffer for a given channel inside a bus. */ bool setChannelBuffer (BusDirection dir, int32 busIndex, int32 channelIndex, Sample32* sampleBuffer); bool setChannelBuffer64 (BusDirection dir, int32 busIndex, int32 channelIndex, Sample64* sampleBuffer); static constexpr uint64 kAllChannelsSilent = #if SMTG_OS_MACOS 0xffffffffffffffffULL; #else 0xffffffffffffffffUL; #endif //------------------------------------------------------------------------ protected: int32 createBuffers (IComponent& component, AudioBusBuffers*& buffers, BusDirection dir, int32 bufferSamples); void destroyBuffers (AudioBusBuffers*& buffers, int32& busCount); bool checkIfReallocationNeeded (IComponent& component, int32 bufferSamples, int32 _symbolicSampleSize) const; bool isValidBus (BusDirection dir, int32 busIndex) const; bool channelBufferOwner {false}; }; //------------------------------------------------------------------------ // inline //------------------------------------------------------------------------ inline bool HostProcessData::isValidBus (BusDirection dir, int32 busIndex) const { if (dir == kInput && (!inputs || busIndex >= numInputs)) return false; if (dir == kOutput && (!outputs || busIndex >= numOutputs)) return false; return true; } //------------------------------------------------------------------------ inline bool HostProcessData::setChannelBuffers (BusDirection dir, int32 busIndex, Sample32* sampleBuffer) { if (channelBufferOwner || symbolicSampleSize != SymbolicSampleSizes::kSample32) return false; if (!isValidBus (dir, busIndex)) return false; AudioBusBuffers& busBuffers = dir == kInput ? inputs[busIndex] : outputs[busIndex]; for (int32 i = 0; i < busBuffers.numChannels; i++) busBuffers.channelBuffers32[i] = sampleBuffer; return true; } //------------------------------------------------------------------------ inline bool HostProcessData::setChannelBuffers64 (BusDirection dir, int32 busIndex, Sample64* sampleBuffer) { if (channelBufferOwner || symbolicSampleSize != SymbolicSampleSizes::kSample64) return false; if (!isValidBus (dir, busIndex)) return false; AudioBusBuffers& busBuffers = dir == kInput ? inputs[busIndex] : outputs[busIndex]; for (int32 i = 0; i < busBuffers.numChannels; i++) busBuffers.channelBuffers64[i] = sampleBuffer; return true; } //------------------------------------------------------------------------ inline bool HostProcessData::setChannelBuffers (BusDirection dir, int32 busIndex, Sample32* sampleBuffers[], int32 bufferCount) { if (channelBufferOwner || symbolicSampleSize != SymbolicSampleSizes::kSample32) return false; if (!isValidBus (dir, busIndex)) return false; AudioBusBuffers& busBuffers = dir == kInput ? inputs[busIndex] : outputs[busIndex]; int32 count = bufferCount < busBuffers.numChannels ? bufferCount : busBuffers.numChannels; for (int32 i = 0; i < count; i++) busBuffers.channelBuffers32[i] = sampleBuffers ? sampleBuffers[i] : nullptr; return true; } //------------------------------------------------------------------------ inline bool HostProcessData::setChannelBuffers64 (BusDirection dir, int32 busIndex, Sample64* sampleBuffers[], int32 bufferCount) { if (channelBufferOwner || symbolicSampleSize != SymbolicSampleSizes::kSample64) return false; if (!isValidBus (dir, busIndex)) return false; AudioBusBuffers& busBuffers = dir == kInput ? inputs[busIndex] : outputs[busIndex]; int32 count = bufferCount < busBuffers.numChannels ? bufferCount : busBuffers.numChannels; for (int32 i = 0; i < count; i++) busBuffers.channelBuffers64[i] = sampleBuffers ? sampleBuffers[i] : nullptr; return true; } //------------------------------------------------------------------------ inline bool HostProcessData::setChannelBuffer (BusDirection dir, int32 busIndex, int32 channelIndex, Sample32* sampleBuffer) { if (symbolicSampleSize != SymbolicSampleSizes::kSample32) return false; if (!isValidBus (dir, busIndex)) return false; AudioBusBuffers& busBuffers = dir == kInput ? inputs[busIndex] : outputs[busIndex]; if (channelIndex >= busBuffers.numChannels) return false; busBuffers.channelBuffers32[channelIndex] = sampleBuffer; return true; } //------------------------------------------------------------------------ inline bool HostProcessData::setChannelBuffer64 (BusDirection dir, int32 busIndex, int32 channelIndex, Sample64* sampleBuffer) { if (symbolicSampleSize != SymbolicSampleSizes::kSample64) return false; if (!isValidBus (dir, busIndex)) return false; AudioBusBuffers& busBuffers = dir == kInput ? inputs[busIndex] : outputs[busIndex]; if (channelIndex >= busBuffers.numChannels) return false; busBuffers.channelBuffers64[channelIndex] = sampleBuffer; return true; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/test/000077500000000000000000000000001461511344300211165ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/test/connectionproxytest.cpp000066400000000000000000000125131461511344300257650ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/test/connectionproxytest.cpp // Created by : Steinberg, 08/2021 // Description : Test connection proxy // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/hosting/connectionproxy.h" #include "public.sdk/source/vst/hosting/hostclasses.h" #include "public.sdk/source/vst/utility/testing.h" #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace { //------------------------------------------------------------------------ class ConnectionPoint : public IConnectionPoint { public: tresult PLUGIN_API connect (IConnectionPoint* inOther) override { other = inOther; return kResultTrue; } tresult PLUGIN_API disconnect (IConnectionPoint* inOther) override { if (inOther != other) return kResultFalse; return kResultTrue; } tresult PLUGIN_API notify (IMessage*) override { messageReceived = true; return kResultTrue; } tresult PLUGIN_API queryInterface (const TUID, void**) override { return kNotImplemented; } uint32 PLUGIN_API addRef () override { return 100; } uint32 PLUGIN_API release () override { return 100; } IConnectionPoint* other {nullptr}; bool messageReceived {false}; }; //------------------------------------------------------------------------ ModuleInitializer ConnectionProxyTests ([] () { constexpr auto TestSuiteName = "ConnectionProxy"; registerTest (TestSuiteName, STR ("Connect and disconnect"), [] (ITestResult* testResult) { ConnectionPoint cp1; ConnectionPoint cp2; ConnectionProxy proxy (&cp1); EXPECT_EQ (proxy.connect (&cp2), kResultTrue); EXPECT_EQ (proxy.disconnect (&cp2), kResultTrue); return true; }); registerTest (TestSuiteName, STR ("Disconnect wrong object"), [] (ITestResult* testResult) { ConnectionPoint cp1; ConnectionPoint cp2; ConnectionPoint cp3; ConnectionProxy proxy (&cp1); EXPECT_EQ (proxy.connect (&cp2), kResultTrue); EXPECT_NE (proxy.disconnect (&cp3), kResultTrue); return true; }); registerTest (TestSuiteName, STR ("Send message on UI thread"), [] (ITestResult* testResult) { ConnectionPoint cp1; ConnectionPoint cp2; ConnectionProxy proxy (&cp1); EXPECT_EQ (proxy.connect (&cp2), kResultTrue); EXPECT_FALSE (cp2.messageReceived); HostMessage msg; EXPECT_EQ (proxy.notify (&msg), kResultTrue); EXPECT_TRUE (cp2.messageReceived); return true; }); registerTest (TestSuiteName, STR ("Send message on 2nd thread"), [] (ITestResult* testResult) { ConnectionPoint cp1; ConnectionPoint cp2; ConnectionProxy proxy (&cp1); EXPECT_EQ (proxy.connect (&cp2), kResultTrue); EXPECT_FALSE (cp2.messageReceived); std::condition_variable c1; std::mutex m1; std::mutex m2; std::atomic notifyResult {0}; std::unique_lock lm1 (m1); m2.lock (); std::thread thread ([&] () { m2.lock (); HostMessage msg; notifyResult = proxy.notify (&msg); c1.notify_all (); m2.unlock (); }); m2.unlock (); c1.wait (lm1); EXPECT_NE (notifyResult, kResultTrue); EXPECT_FALSE (cp2.messageReceived); thread.join (); return true; }); }); //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/test/eventlisttest.cpp000066400000000000000000000112351461511344300245410ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/test/eventlisttest.cpp // Created by : Steinberg, 08/2021 // Description : Test event list // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/hosting/eventlist.h" #include "public.sdk/source/vst/utility/testing.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace { //------------------------------------------------------------------------ ModuleInitializer EventListTests ([] () { constexpr auto TestSuiteName = "EventList"; registerTest (TestSuiteName, STR ("Set and get single event"), [] (ITestResult* testResult) { EventList eventList; Event event1 = {}; event1.type = Event::kNoteOnEvent; event1.noteOn.noteId = 10; EXPECT_EQ (eventList.addEvent (event1), kResultTrue); Event event2; EXPECT_EQ (eventList.getEvent (0, event2), kResultTrue); EXPECT_EQ (memcmp (&event1, &event2, sizeof (Event)), 0); return true; }); registerTest (TestSuiteName, STR ("Count events"), [] (ITestResult* testResult) { EventList eventList; Event event = {}; for (auto i = 0; i < 20; ++i) { EXPECT_EQ (eventList.addEvent (event), kResultTrue); } EXPECT_EQ (eventList.getEventCount (), 20); return true; }); registerTest (TestSuiteName, STR ("Overflow"), [] (ITestResult* testResult) { EventList eventList (20); Event event = {}; for (auto i = 0; i < 20; ++i) { EXPECT_EQ (eventList.addEvent (event), kResultTrue); } EXPECT_EQ (eventList.getEventCount (), 20); EXPECT_NE (eventList.addEvent (event), kResultTrue); EXPECT_EQ (eventList.getEventCount (), 20); return true; }); registerTest (TestSuiteName, STR ("Get unknown event"), [] (ITestResult* testResult) { EventList eventList; Event event {}; EXPECT_NE (eventList.getEvent (0, event), kResultTrue); return true; }); registerTest (TestSuiteName, STR ("Resize"), [] (ITestResult* testResult) { EventList eventList (1); Event event {}; EXPECT_NE (eventList.getEvent (0, event), kResultTrue); event = {}; EXPECT_EQ (eventList.addEvent (event), kResultTrue); EXPECT_EQ (eventList.getEventCount (), 1); EXPECT_NE (eventList.addEvent (event), kResultTrue); EXPECT_EQ (eventList.getEventCount (), 1); eventList.setMaxSize (2); EXPECT_EQ (eventList.getEventCount (), 0); EXPECT_EQ (eventList.addEvent (event), kResultTrue); EXPECT_EQ (eventList.addEvent (event), kResultTrue); EXPECT_EQ (eventList.getEventCount (), 2); EXPECT_NE (eventList.addEvent (event), kResultTrue); EXPECT_EQ (eventList.getEventCount (), 2); return true; }); }); //------------------------------------------------------------------------ } // anonymous } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/test/hostclassestest.cpp000066400000000000000000000137731461511344300250700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/test/hostclassestest.cpp // Created by : Steinberg, 08/2021 // Description : Test host classes // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/hosting/hostclasses.h" #include "public.sdk/source/vst/utility/testing.h" #include "pluginterfaces/base/fstrdefs.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace { //------------------------------------------------------------------------ ModuleInitializer HostApplicationTests ([] () { constexpr auto TestSuiteName = "HostApplication"; registerTest ( TestSuiteName, STR ("Create instance of IAttributeList"), [] (ITestResult* testResult) { HostApplication hostApp; FUnknown* instance {nullptr}; TUID iid; IAttributeList::iid.toTUID (iid); EXPECT_EQ (hostApp.createInstance (iid, iid, reinterpret_cast (&instance)), kResultTrue); EXPECT_NE (instance, nullptr); instance->release (); return true; }); registerTest (TestSuiteName, STR ("Create instance of IMessage"), [] (ITestResult* testResult) { HostApplication hostApp; FUnknown* instance {nullptr}; TUID iid; IMessage::iid.toTUID (iid); EXPECT_EQ (hostApp.createInstance (iid, iid, reinterpret_cast (&instance)), kResultTrue); EXPECT_NE (instance, nullptr); instance->release (); return true; }); }); //------------------------------------------------------------------------ ModuleInitializer HostAttributeListTests ([] () { constexpr auto TestSuiteName = "HostAttributeList"; registerTest (TestSuiteName, STR ("Int"), [] (ITestResult* testResult) { auto attrList = HostAttributeList::make (); constexpr int64 testValue = 5; EXPECT_EQ (attrList->setInt ("Int", testValue), kResultTrue); int64 value = 0; EXPECT_EQ (attrList->getInt ("Int", value), kResultTrue); EXPECT_EQ (value, testValue); return true; }); registerTest (TestSuiteName, STR ("Float"), [] (ITestResult* testResult) { auto attrList = HostAttributeList::make (); constexpr double testValue = 2.636; EXPECT_EQ (attrList->setFloat ("Float", testValue), kResultTrue); double value = 0; EXPECT_EQ (attrList->getFloat ("Float", value), kResultTrue); EXPECT_EQ (value, testValue); return true; }); registerTest (TestSuiteName, STR ("String"), [] (ITestResult* testResult) { auto attrList = HostAttributeList::make (); constexpr const TChar* testValue = STR ("TestValue"); EXPECT_EQ (attrList->setString ("Str", testValue), kResultTrue); TChar value[10]; EXPECT_EQ (attrList->getString ("Str", value, 10 * sizeof (TChar)), kResultTrue); EXPECT_EQ (tstrcmp (testValue, value), 0); return true; }); registerTest (TestSuiteName, STR ("Binary"), [] (ITestResult* testResult) { auto attrList = HostAttributeList::make (); std::array testData; uint32 testDataSize = static_cast(testData.size ()) * sizeof (int32); EXPECT_EQ (attrList->setBinary ("Binary", testData.data (), testDataSize), kResultTrue); const void* data; uint32 dataSize {0}; EXPECT_EQ (attrList->getBinary ("Binary", data, dataSize), kResultTrue); EXPECT_EQ (dataSize, testDataSize); auto s = reinterpret_cast (data); for (auto i : testData) { EXPECT_EQ (i, *s); s++; } return true; }); registerTest (TestSuiteName, STR ("Multiple Set"), [] (ITestResult* testResult) { auto attrList = HostAttributeList::make (); constexpr int64 testValue1 = 5; constexpr int64 testValue2 = 6; constexpr int64 testValue3 = 7; EXPECT_EQ (attrList->setInt ("Int", testValue1), kResultTrue); EXPECT_EQ (attrList->setInt ("Int", testValue2), kResultTrue); EXPECT_EQ (attrList->setInt ("Int", testValue3), kResultTrue); int64 value = 0; EXPECT_EQ (attrList->getInt ("Int", value), kResultTrue); EXPECT_EQ (value, testValue3); return true; }); }); //------------------------------------------------------------------------ } // anonymous } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/test/parameterchangestest.cpp000066400000000000000000000276761461511344300260550ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/test/parameterchangestest.cpp // Created by : Steinberg, 08/2021 // Description : Test parameter changes // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/hosting/parameterchanges.h" #include "public.sdk/source/vst/utility/testing.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace { //------------------------------------------------------------------------ struct ValuePoint { int32 sampleOffset {}; ParamValue value {}; }; //------------------------------------------------------------------------ ModuleInitializer ParameterValueQueueTests ([] () { constexpr auto TestSuiteName = "ParameterValueQueue"; registerTest (TestSuiteName, STR ("Set paramID"), [] (ITestResult* testResult) { ParameterValueQueue queue (10); EXPECT_EQ (queue.getParameterId (), 10); queue.setParamID (5); EXPECT_EQ (queue.getParameterId (), 5); return true; }); registerTest (TestSuiteName, STR ("Set/get point"), [] (ITestResult* testResult) { ParameterValueQueue queue (0); ValuePoint vp {100, 0.5}; int32 index {}; EXPECT_EQ (queue.addPoint (vp.sampleOffset, vp.value, index), kResultTrue); EXPECT_EQ (queue.getPointCount (), 1); EXPECT_EQ (index, 0); ValuePoint test; EXPECT_EQ (queue.getPoint (index, test.sampleOffset, test.value), kResultTrue); EXPECT_EQ (vp.sampleOffset, test.sampleOffset); EXPECT_EQ (vp.value, test.value); return true; }); registerTest (TestSuiteName, STR ("Set/get multiple points"), [] (ITestResult* testResult) { ParameterValueQueue queue (0); ValuePoint vp1 {10, 0.1}; ValuePoint vp2 {30, 0.3}; ValuePoint vp3 {50, 0.6}; ValuePoint vp4 {70, 0.8}; int32 index {}; EXPECT_EQ (queue.addPoint (vp1.sampleOffset, vp1.value, index), kResultTrue); EXPECT_EQ (queue.addPoint (vp2.sampleOffset, vp2.value, index), kResultTrue); EXPECT_EQ (queue.addPoint (vp3.sampleOffset, vp3.value, index), kResultTrue); EXPECT_EQ (queue.addPoint (vp4.sampleOffset, vp4.value, index), kResultTrue); EXPECT_EQ (queue.getPointCount (), 4); EXPECT_EQ (index, 3); ValuePoint test; EXPECT_EQ (queue.getPoint (0, test.sampleOffset, test.value), kResultTrue); EXPECT_EQ (vp1.sampleOffset, test.sampleOffset); EXPECT_EQ (vp1.value, test.value); EXPECT_EQ (queue.getPoint (1, test.sampleOffset, test.value), kResultTrue); EXPECT_EQ (vp2.sampleOffset, test.sampleOffset); EXPECT_EQ (vp2.value, test.value); EXPECT_EQ (queue.getPoint (2, test.sampleOffset, test.value), kResultTrue); EXPECT_EQ (vp3.sampleOffset, test.sampleOffset); EXPECT_EQ (vp3.value, test.value); EXPECT_EQ (queue.getPoint (3, test.sampleOffset, test.value), kResultTrue); EXPECT_EQ (vp4.sampleOffset, test.sampleOffset); EXPECT_EQ (vp4.value, test.value); return true; }); registerTest (TestSuiteName, STR ("Ordered points"), [] (ITestResult* testResult) { ParameterValueQueue queue (0); ValuePoint vp1 {70, 0.1}; ValuePoint vp2 {50, 0.3}; ValuePoint vp3 {30, 0.6}; ValuePoint vp4 {10, 0.8}; int32 index {}; EXPECT_EQ (queue.addPoint (vp1.sampleOffset, vp1.value, index), kResultTrue); EXPECT_EQ (queue.addPoint (vp2.sampleOffset, vp2.value, index), kResultTrue); EXPECT_EQ (queue.addPoint (vp3.sampleOffset, vp3.value, index), kResultTrue); EXPECT_EQ (queue.addPoint (vp4.sampleOffset, vp4.value, index), kResultTrue); EXPECT_EQ (queue.getPointCount (), 4); ValuePoint test; EXPECT_EQ (queue.getPoint (0, test.sampleOffset, test.value), kResultTrue); EXPECT_EQ (vp4.sampleOffset, test.sampleOffset); EXPECT_EQ (vp4.value, test.value); EXPECT_EQ (queue.getPoint (1, test.sampleOffset, test.value), kResultTrue); EXPECT_EQ (vp3.sampleOffset, test.sampleOffset); EXPECT_EQ (vp3.value, test.value); EXPECT_EQ (queue.getPoint (2, test.sampleOffset, test.value), kResultTrue); EXPECT_EQ (vp2.sampleOffset, test.sampleOffset); EXPECT_EQ (vp2.value, test.value); EXPECT_EQ (queue.getPoint (3, test.sampleOffset, test.value), kResultTrue); EXPECT_EQ (vp1.sampleOffset, test.sampleOffset); EXPECT_EQ (vp1.value, test.value); return true; }); registerTest (TestSuiteName, STR ("Clear"), [] (ITestResult* testResult) { ParameterValueQueue queue (0); ValuePoint vp {100, 0.5}; int32 index {}; EXPECT_EQ (queue.addPoint (vp.sampleOffset, vp.value, index), kResultTrue); EXPECT_EQ (queue.getPointCount (), 1); EXPECT_EQ (index, 0); queue.clear (); EXPECT_EQ (queue.getPointCount (), 0); ValuePoint test; EXPECT_NE (queue.getPoint (index, test.sampleOffset, test.value), kResultTrue); return true; }); }); //------------------------------------------------------------------------ ModuleInitializer ParameterChangesTests ([] () { constexpr auto TestSuiteName = "ParameterChanges"; registerTest (TestSuiteName, STR ("Parameter count"), [] (ITestResult* testResult) { ParameterChanges changes (1); EXPECT_EQ (changes.getParameterCount (), 0); int32 index {}; auto queue = changes.addParameterData (0, index); EXPECT_NE (queue, nullptr); EXPECT_EQ (index, 0); EXPECT_EQ (changes.getParameterCount (), 1); return true; }); registerTest (TestSuiteName, STR ("Clear queue"), [] (ITestResult* testResult) { ParameterChanges changes (1); int32 index {}; EXPECT_EQ (changes.getParameterCount (), 0); changes.addParameterData (0, index); EXPECT_EQ (changes.getParameterCount (), 1); changes.clearQueue (); EXPECT_EQ (changes.getParameterCount (), 0); return true; }); registerTest (TestSuiteName, STR ("Increase max parameters"), [] (ITestResult* testResult) { ParameterChanges changes (1); int32 index {}; EXPECT_EQ (changes.getParameterCount (), 0); changes.addParameterData (0, index); EXPECT_EQ (changes.getParameterCount (), 1); EXPECT_NE (changes.addParameterData (1, index), nullptr); EXPECT_EQ (changes.getParameterCount (), 2); changes.setMaxParameters (4); EXPECT_EQ (changes.getParameterCount (), 2); return true; }); registerTest (TestSuiteName, STR ("Get parameter data"), [] (ITestResult* testResult) { ParameterChanges changes (1); int32 index {}; auto queue1 = changes.addParameterData (0, index); auto queue2 = changes.getParameterData (index); EXPECT_EQ (queue1, queue2); return true; }); }); //------------------------------------------------------------------------ struct ParamChange { ParamID id {}; ParamValue value {}; int32 sampleOffset {}; bool operator== (const ParamChange& o) const { return id == o.id && value == o.value && sampleOffset == o.sampleOffset; } bool operator!= (const ParamChange& o) const { return id != o.id || value != o.value || sampleOffset != o.sampleOffset; } }; //------------------------------------------------------------------------ ModuleInitializer ParameterChangeTransferTests ([] () { constexpr auto TestSuiteName = "ParameterChangeTransfer"; registerTest (TestSuiteName, STR ("Add/get change"), [] (ITestResult* testResult) { ParameterChangeTransfer transfer (1); ParamChange change {1, 0.8, 2}; transfer.addChange (change.id, change.value, change.sampleOffset); ParamChange test {}; EXPECT_NE (change, test); EXPECT_TRUE (transfer.getNextChange (test.id, test.value, test.sampleOffset)); EXPECT_EQ (change, test); return true; }); registerTest (TestSuiteName, STR ("Remove changes"), [] (ITestResult* testResult) { ParameterChangeTransfer transfer (1); ParamChange change {1, 0.8, 2}; transfer.addChange (change.id, change.value, change.sampleOffset); transfer.removeChanges (); ParamChange test {}; EXPECT_FALSE (transfer.getNextChange (test.id, test.value, test.sampleOffset)); return true; }); registerTest (TestSuiteName, STR ("Transfer changes to"), [] (ITestResult* testResult) { ParameterChangeTransfer transfer (10); ParamChange ch1 {1, 0.8, 2}; ParamChange ch2 {2, 0.4, 8}; transfer.addChange (ch1.id, ch1.value, ch1.sampleOffset); transfer.addChange (ch2.id, ch2.value, ch2.sampleOffset); ParameterChanges changes (2); transfer.transferChangesTo (changes); EXPECT_EQ (changes.getParameterCount (), 2); auto valueQueue1 = changes.getParameterData (0); EXPECT_NE (valueQueue1, nullptr); auto valueQueue2 = changes.getParameterData (1); EXPECT_NE (valueQueue2, nullptr); auto pid1 = valueQueue1->getParameterId (); auto pid2 = valueQueue2->getParameterId (); EXPECT (pid1 == ch1.id || pid1 == ch2.id); EXPECT (pid2 == ch1.id || pid2 == ch2.id); EXPECT_NE (pid1, pid2); ValuePoint vp1; ValuePoint vp2; if (pid1 == ch1.id) { EXPECT_EQ (valueQueue1->getPoint (0, vp1.sampleOffset, vp1.value), kResultTrue); EXPECT_EQ (valueQueue2->getPoint (0, vp2.sampleOffset, vp2.value), kResultTrue); } else { EXPECT_EQ (valueQueue2->getPoint (0, vp1.sampleOffset, vp1.value), kResultTrue); EXPECT_EQ (valueQueue1->getPoint (0, vp2.sampleOffset, vp2.value), kResultTrue); } return true; }); registerTest (TestSuiteName, STR ("Transfer changes from"), [] (ITestResult* testResult) { ParamChange ch1 {1, 0.8, 2}; ParamChange ch2 {2, 0.4, 8}; ParameterChangeTransfer transfer (2); ParameterChanges changes; int32 index {}; auto valueQueue = changes.addParameterData (ch1.id, index); EXPECT_NE (valueQueue, nullptr); EXPECT_EQ (valueQueue->addPoint (ch1.sampleOffset, ch1.value, index), kResultTrue); valueQueue = changes.addParameterData (ch2.id, index); EXPECT_NE (valueQueue, nullptr); EXPECT_EQ (valueQueue->addPoint (ch2.sampleOffset, ch2.value, index), kResultTrue); transfer.transferChangesFrom (changes); ParamChange test1 {}; ParamChange test2 {}; ParamChange test3 {}; EXPECT_TRUE (transfer.getNextChange (test1.id, test1.value, test1.sampleOffset)); EXPECT_TRUE (transfer.getNextChange (test2.id, test2.value, test2.sampleOffset)); EXPECT_FALSE (transfer.getNextChange (test3.id, test3.value, test3.sampleOffset)); EXPECT (test1 == ch1 || test1 == ch2); EXPECT (test2 == ch1 || test2 == ch2); EXPECT_NE (test1, test2); return true; }); }); //------------------------------------------------------------------------ } // anonymous } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/test/pluginterfacesupporttest.cpp000066400000000000000000000114441461511344300270130ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/test/pluginterfacesupporttest.cpp // Created by : Steinberg, 08/2021 // Description : Test pluginterface support helper // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/hosting/pluginterfacesupport.h" #include "public.sdk/source/vst/utility/testing.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstmessage.h" #include "pluginterfaces/vst/ivstunits.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace { //------------------------------------------------------------------------ ModuleInitializer PlugInterfaceSupportTests ([] () { constexpr auto TestSuiteName = "PlugInterfaceSupport"; registerTest (TestSuiteName, STR ("Initial interfaces"), [] (ITestResult* testResult) { PlugInterfaceSupport pis; //---VST 3.0.0-------------------------------- EXPECT_EQ (pis.isPlugInterfaceSupported (IComponent::iid), kResultTrue); EXPECT_EQ (pis.isPlugInterfaceSupported (IAudioProcessor::iid), kResultTrue); EXPECT_EQ (pis.isPlugInterfaceSupported (IEditController::iid), kResultTrue); EXPECT_EQ (pis.isPlugInterfaceSupported (IConnectionPoint::iid), kResultTrue); EXPECT_EQ (pis.isPlugInterfaceSupported (IUnitInfo::iid), kResultTrue); EXPECT_EQ (pis.isPlugInterfaceSupported (IUnitData::iid), kResultTrue); EXPECT_EQ (pis.isPlugInterfaceSupported (IProgramListData::iid), kResultTrue); //---VST 3.0.1-------------------------------- EXPECT_EQ (pis.isPlugInterfaceSupported (IMidiMapping::iid), kResultTrue); //---VST 3.1---------------------------------- EXPECT_EQ (pis.isPlugInterfaceSupported (IEditController2::iid), kResultTrue); return true; }); registerTest (TestSuiteName, STR ("Add interface"), [] (ITestResult* testResult) { PlugInterfaceSupport pis; EXPECT_NE (pis.isPlugInterfaceSupported (IEditControllerHostEditing::iid), kResultTrue); pis.addPlugInterfaceSupported (IEditControllerHostEditing::iid); EXPECT_EQ (pis.isPlugInterfaceSupported (IEditControllerHostEditing::iid), kResultTrue); return true; }); registerTest (TestSuiteName, STR ("Remove interface"), [] (ITestResult* testResult) { PlugInterfaceSupport pis; EXPECT_NE (pis.isPlugInterfaceSupported (IEditControllerHostEditing::iid), kResultTrue); pis.addPlugInterfaceSupported (IEditControllerHostEditing::iid); EXPECT_EQ (pis.isPlugInterfaceSupported (IEditControllerHostEditing::iid), kResultTrue); EXPECT_TRUE (pis.removePlugInterfaceSupported (IEditControllerHostEditing::iid)); EXPECT_NE (pis.isPlugInterfaceSupported (IEditControllerHostEditing::iid), kResultTrue); return true; }); }); //------------------------------------------------------------------------ } // anonymous } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/hosting/test/processdatatest.cpp000066400000000000000000000441761461511344300250460ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/hosting/test/processdatatest.cpp // Created by : Steinberg, 08/2021 // Description : Test process data helper // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/hosting/processdata.h" #include "public.sdk/source/vst/utility/testing.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstmessage.h" #include "pluginterfaces/vst/ivstunits.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace { //------------------------------------------------------------------------ struct TestComponent : public IComponent { using GetBusCountFunc = std::function; using GetBusInfoFunc = std::function; tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) override { return kNoInterface; } uint32 PLUGIN_API addRef () override { return 100; } uint32 PLUGIN_API release () override { return 100; } tresult PLUGIN_API initialize (FUnknown* context) override { return kResultTrue; } tresult PLUGIN_API terminate () override { return kResultTrue; } tresult PLUGIN_API getControllerClassId (TUID classId) override { return kNotImplemented; } tresult PLUGIN_API setIoMode (IoMode mode) override { return kNotImplemented; } int32 PLUGIN_API getBusCount (MediaType type, BusDirection dir) override { if (type != MediaTypes::kAudio) return 0; return getBusCountFunc (dir); } tresult PLUGIN_API getBusInfo (MediaType type, BusDirection dir, int32 index, BusInfo& bus) override { if (type != MediaTypes::kAudio) return kResultFalse; return getBusInfoFunc (dir, index, bus); } tresult PLUGIN_API getRoutingInfo (RoutingInfo& inInfo, RoutingInfo& outInfo) override { return kNotImplemented; } tresult PLUGIN_API activateBus (MediaType type, BusDirection dir, int32 index, TBool state) override { return kNotImplemented; } tresult PLUGIN_API setActive (TBool state) override { return kNotImplemented; } tresult PLUGIN_API setState (IBStream* state) override { return kNotImplemented; } tresult PLUGIN_API getState (IBStream* state) override { return kNotImplemented; } GetBusCountFunc getBusCountFunc = [] (BusDirection dir) { return 0; }; GetBusInfoFunc getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { return kNotImplemented; }; }; //------------------------------------------------------------------------ ModuleInitializer HostProcessDataTests ([] () { constexpr auto TestSuiteName = "HostProcessData"; registerTest (TestSuiteName, STR ("No bus"), [] (ITestResult* testResult) { TestComponent tc; HostProcessData processData; EXPECT_TRUE (processData.prepare (tc, 1024, kSample32)); EXPECT_EQ (processData.numInputs, 0); EXPECT_EQ (processData.numOutputs, 0); return true; }); registerTest (TestSuiteName, STR ("1 out bus no channels"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return dir == BusDirections::kOutput ? 1 : 0; }; HostProcessData processData; EXPECT_TRUE (processData.prepare (tc, 1024, kSample32)); EXPECT_EQ (processData.numInputs, 0); EXPECT_EQ (processData.numOutputs, 1); EXPECT_EQ (processData.outputs[0].numChannels, 0); return true; }); registerTest (TestSuiteName, STR ("1 out bus 2 channels"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return dir == BusDirections::kOutput ? 1 : 0; }; tc.getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { if (dir == BusDirections::kInput || index != 0) return kResultFalse; bus.channelCount = 2; return kResultTrue; }; HostProcessData processData; EXPECT_TRUE (processData.prepare (tc, 1024, kSample32)); EXPECT_EQ (processData.numInputs, 0); EXPECT_EQ (processData.numOutputs, 1); EXPECT_EQ (processData.outputs[0].numChannels, 2); EXPECT_NE (processData.outputs[0].channelBuffers32[0], nullptr); EXPECT_NE (processData.outputs[0].channelBuffers32[1], nullptr); return true; }); registerTest (TestSuiteName, STR ("1 in & out bus 2 channels"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return 1; }; tc.getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { if (index != 0) return kResultFalse; bus.channelCount = 2; return kResultTrue; }; HostProcessData processData; EXPECT_TRUE (processData.prepare (tc, 1024, kSample32)); EXPECT_EQ (processData.numOutputs, 1); EXPECT_EQ (processData.outputs[0].numChannels, 2); EXPECT_NE (processData.outputs[0].channelBuffers32[0], nullptr); EXPECT_NE (processData.outputs[0].channelBuffers32[1], nullptr); EXPECT_EQ (processData.numInputs, 1); EXPECT_EQ (processData.inputs[0].numChannels, 2); EXPECT_NE (processData.inputs[0].channelBuffers32[0], nullptr); EXPECT_NE (processData.inputs[0].channelBuffers32[1], nullptr); return true; }); registerTest (TestSuiteName, STR ("2 in & out bus dif channels"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return 2; }; tc.getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { if (index < 0 || index > 1) return kResultFalse; bus.channelCount = index == 0 ? 4 : 1; return kResultTrue; }; HostProcessData processData; EXPECT_TRUE (processData.prepare (tc, 1024, kSample32)); EXPECT_EQ (processData.numOutputs, 2); EXPECT_EQ (processData.outputs[0].numChannels, 4); EXPECT_NE (processData.outputs[0].channelBuffers32[0], nullptr); EXPECT_NE (processData.outputs[0].channelBuffers32[1], nullptr); EXPECT_NE (processData.outputs[0].channelBuffers32[2], nullptr); EXPECT_NE (processData.outputs[0].channelBuffers32[3], nullptr); EXPECT_EQ (processData.outputs[1].numChannels, 1); EXPECT_NE (processData.outputs[1].channelBuffers32[0], nullptr); EXPECT_EQ (processData.numInputs, 2); EXPECT_EQ (processData.inputs[0].numChannels, 4); EXPECT_NE (processData.inputs[0].channelBuffers32[0], nullptr); EXPECT_NE (processData.inputs[0].channelBuffers32[1], nullptr); EXPECT_NE (processData.inputs[0].channelBuffers32[2], nullptr); EXPECT_NE (processData.inputs[0].channelBuffers32[3], nullptr); EXPECT_EQ (processData.inputs[1].numChannels, 1); EXPECT_NE (processData.inputs[1].channelBuffers32[0], nullptr); return true; }); registerTest (TestSuiteName, STR ("Set all channel buffers 32"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return 1; }; tc.getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { if (index != 0) return kResultFalse; bus.channelCount = 2; return kResultTrue; }; auto buffer = std::unique_ptr (new float[10]); HostProcessData processData; EXPECT_TRUE (processData.prepare (tc, 0, kSample32)); EXPECT_EQ (processData.numInputs, 1); EXPECT_EQ (processData.numOutputs, 1); EXPECT_FALSE (processData.setChannelBuffers (BusDirections::kInput, 1, nullptr)); EXPECT_FALSE (processData.setChannelBuffers64 (BusDirections::kInput, 1, nullptr)); EXPECT_TRUE (processData.setChannelBuffers (BusDirections::kInput, 0, buffer.get ())); EXPECT_TRUE (processData.setChannelBuffers (BusDirections::kOutput, 0, buffer.get ())); EXPECT_FALSE (processData.setChannelBuffers64 (BusDirections::kInput, 0, nullptr)); EXPECT_FALSE (processData.setChannelBuffers64 (BusDirections::kOutput, 0, nullptr)); EXPECT_EQ (processData.inputs[0].channelBuffers32[0], buffer.get ()); EXPECT_EQ (processData.inputs[0].channelBuffers32[1], buffer.get ()); EXPECT_EQ (processData.outputs[0].channelBuffers32[0], buffer.get ()); EXPECT_EQ (processData.outputs[0].channelBuffers32[1], buffer.get ()); return true; }); registerTest (TestSuiteName, STR ("Set all channel buffers 64"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return 1; }; tc.getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { if (index != 0) return kResultFalse; bus.channelCount = 2; return kResultTrue; }; auto buffer = std::unique_ptr (new double[10]); HostProcessData processData; EXPECT_TRUE (processData.prepare (tc, 0, kSample64)); EXPECT_EQ (processData.numInputs, 1); EXPECT_EQ (processData.numOutputs, 1); EXPECT_FALSE (processData.setChannelBuffers (BusDirections::kInput, 1, nullptr)); EXPECT_FALSE (processData.setChannelBuffers64 (BusDirections::kInput, 1, nullptr)); EXPECT_TRUE (processData.setChannelBuffers64 (BusDirections::kInput, 0, buffer.get ())); EXPECT_TRUE (processData.setChannelBuffers64 (BusDirections::kOutput, 0, buffer.get ())); EXPECT_FALSE (processData.setChannelBuffers (BusDirections::kInput, 0, nullptr)); EXPECT_FALSE (processData.setChannelBuffers (BusDirections::kOutput, 0, nullptr)); EXPECT_EQ (processData.inputs[0].channelBuffers64[0], buffer.get ()); EXPECT_EQ (processData.inputs[0].channelBuffers64[1], buffer.get ()); EXPECT_EQ (processData.outputs[0].channelBuffers64[0], buffer.get ()); EXPECT_EQ (processData.outputs[0].channelBuffers64[1], buffer.get ()); return true; }); registerTest ( TestSuiteName, STR ("Set individual channel buffers 32"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return 1; }; tc.getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { if (index != 0) return kResultFalse; bus.channelCount = 2; return kResultTrue; }; auto bufferL = std::unique_ptr (new float[10]); auto bufferR = std::unique_ptr (new float[10]); HostProcessData pd; EXPECT_TRUE (pd.prepare (tc, 0, kSample32)); EXPECT_EQ (pd.numInputs, 1); EXPECT_EQ (pd.numOutputs, 1); EXPECT_FALSE (pd.setChannelBuffer (BusDirections::kInput, 1, 0, nullptr)); EXPECT_FALSE (pd.setChannelBuffer64 (BusDirections::kInput, 1, 0, nullptr)); EXPECT_TRUE (pd.setChannelBuffer (BusDirections::kInput, 0, 0, bufferL.get ())); EXPECT_TRUE (pd.setChannelBuffer (BusDirections::kInput, 0, 1, bufferR.get ())); EXPECT_TRUE (pd.setChannelBuffer (BusDirections::kOutput, 0, 0, bufferL.get ())); EXPECT_TRUE (pd.setChannelBuffer (BusDirections::kOutput, 0, 1, bufferR.get ())); EXPECT_FALSE (pd.setChannelBuffer64 (BusDirections::kInput, 0, 0, nullptr)); EXPECT_FALSE (pd.setChannelBuffer64 (BusDirections::kOutput, 0, 1, nullptr)); EXPECT_EQ (pd.inputs[0].channelBuffers32[0], bufferL.get ()); EXPECT_EQ (pd.inputs[0].channelBuffers32[1], bufferR.get ()); EXPECT_EQ (pd.outputs[0].channelBuffers32[0], bufferL.get ()); EXPECT_EQ (pd.outputs[0].channelBuffers32[1], bufferR.get ()); return true; }); registerTest (TestSuiteName, STR ("Set individual channel buffers 32 combined"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return 1; }; tc.getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { if (index != 0) return kResultFalse; bus.channelCount = 2; return kResultTrue; }; auto bufferL = std::unique_ptr (new float[10]); auto bufferR = std::unique_ptr (new float[10]); float* buffers[2] = {bufferL.get (), bufferR.get ()}; HostProcessData pd; EXPECT_TRUE (pd.prepare (tc, 0, kSample32)); EXPECT_EQ (pd.numInputs, 1); EXPECT_EQ (pd.numOutputs, 1); EXPECT_FALSE (pd.setChannelBuffers (BusDirections::kInput, 1, nullptr, 0)); EXPECT_FALSE (pd.setChannelBuffers64 (BusDirections::kInput, 1, nullptr, 0)); EXPECT_TRUE (pd.setChannelBuffers (BusDirections::kInput, 0, buffers, 2)); EXPECT_TRUE (pd.setChannelBuffers (BusDirections::kOutput, 0, buffers, 2)); EXPECT_FALSE (pd.setChannelBuffers64 (BusDirections::kInput, 0, nullptr, 0)); EXPECT_FALSE (pd.setChannelBuffers64 (BusDirections::kOutput, 0, nullptr, 0)); EXPECT_EQ (pd.inputs[0].channelBuffers32[0], bufferL.get ()); EXPECT_EQ (pd.inputs[0].channelBuffers32[1], bufferR.get ()); EXPECT_EQ (pd.outputs[0].channelBuffers32[0], bufferL.get ()); EXPECT_EQ (pd.outputs[0].channelBuffers32[1], bufferR.get ()); return true; }); registerTest ( TestSuiteName, STR ("Set individual channel buffers 64"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return 1; }; tc.getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { if (index != 0) return kResultFalse; bus.channelCount = 2; return kResultTrue; }; auto bufferL = std::unique_ptr (new double[10]); auto bufferR = std::unique_ptr (new double[10]); HostProcessData pd; EXPECT_TRUE (pd.prepare (tc, 0, kSample64)); EXPECT_EQ (pd.numInputs, 1); EXPECT_EQ (pd.numOutputs, 1); EXPECT_FALSE (pd.setChannelBuffer (BusDirections::kInput, 1, 0, nullptr)); EXPECT_FALSE (pd.setChannelBuffer64 (BusDirections::kInput, 1, 0, nullptr)); EXPECT_TRUE (pd.setChannelBuffer64 (BusDirections::kInput, 0, 0, bufferL.get ())); EXPECT_TRUE (pd.setChannelBuffer64 (BusDirections::kInput, 0, 1, bufferR.get ())); EXPECT_TRUE (pd.setChannelBuffer64 (BusDirections::kOutput, 0, 0, bufferL.get ())); EXPECT_TRUE (pd.setChannelBuffer64 (BusDirections::kOutput, 0, 1, bufferR.get ())); EXPECT_FALSE (pd.setChannelBuffer (BusDirections::kInput, 0, 0, nullptr)); EXPECT_FALSE (pd.setChannelBuffer (BusDirections::kOutput, 0, 1, nullptr)); EXPECT_EQ (pd.inputs[0].channelBuffers64[0], bufferL.get ()); EXPECT_EQ (pd.inputs[0].channelBuffers64[1], bufferR.get ()); EXPECT_EQ (pd.outputs[0].channelBuffers64[0], bufferL.get ()); EXPECT_EQ (pd.outputs[0].channelBuffers64[1], bufferR.get ()); return true; }); registerTest (TestSuiteName, STR ("Set individual channel buffers 64 combined"), [] (ITestResult* testResult) { TestComponent tc; tc.getBusCountFunc = [] (BusDirection dir) { return 1; }; tc.getBusInfoFunc = [] (BusDirection dir, int32 index, BusInfo& bus) { if (index != 0) return kResultFalse; bus.channelCount = 2; return kResultTrue; }; auto bufferL = std::unique_ptr (new double[10]); auto bufferR = std::unique_ptr (new double[10]); double* buffers[2] = {bufferL.get (), bufferR.get ()}; HostProcessData pd; EXPECT_TRUE (pd.prepare (tc, 0, kSample64)); EXPECT_EQ (pd.numInputs, 1); EXPECT_EQ (pd.numOutputs, 1); EXPECT_FALSE (pd.setChannelBuffers (BusDirections::kInput, 1, nullptr, 0)); EXPECT_FALSE (pd.setChannelBuffers64 (BusDirections::kInput, 1, nullptr, 0)); EXPECT_TRUE (pd.setChannelBuffers64 (BusDirections::kInput, 0, buffers, 2)); EXPECT_TRUE (pd.setChannelBuffers64 (BusDirections::kOutput, 0, buffers, 2)); EXPECT_FALSE (pd.setChannelBuffers (BusDirections::kInput, 0, nullptr, 0)); EXPECT_FALSE (pd.setChannelBuffers (BusDirections::kOutput, 0, nullptr, 0)); EXPECT_EQ (pd.inputs[0].channelBuffers64[0], bufferL.get ()); EXPECT_EQ (pd.inputs[0].channelBuffers64[1], bufferR.get ()); EXPECT_EQ (pd.outputs[0].channelBuffers64[0], bufferL.get ()); EXPECT_EQ (pd.outputs[0].channelBuffers64[1], bufferR.get ()); return true; }); }); //------------------------------------------------------------------------ } // anonymous } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/000077500000000000000000000000001461511344300213305ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/AudioIO.h000066400000000000000000000156041461511344300230000ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/AudioIO.h // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once /// \cond ignore #include "pluginterfaces/base/funknown.h" #include "pluginterfaces/vst/vsttypes.h" #include #include #include #ifndef __OBJC__ struct UIImage; struct NSString; #endif namespace Steinberg { namespace Vst { namespace InterAppAudio { class AudioIO; //------------------------------------------------------------------------ class IMidiProcessor { public: virtual void onMIDIEvent (UInt32 status, UInt32 data1, UInt32 data2, UInt32 sampleOffset, bool withinRealtimeThread) = 0; }; //------------------------------------------------------------------------ class IAudioIOProcessor : public IMidiProcessor { public: virtual void willStartAudio (AudioIO* audioIO) = 0; virtual void didStopAudio (AudioIO* audioIO) = 0; virtual void process (const AudioTimeStamp* timeStamp, UInt32 busNumber, UInt32 numFrames, AudioBufferList* ioData, bool& outputIsSilence, AudioIO* audioIO) = 0; }; //------------------------------------------------------------------------ class AudioIO { public: static AudioIO* instance (); tresult init (OSType type, OSType subType, OSType manufacturer, CFStringRef name); bool switchToHost (); bool sendRemoteControlEvent (AudioUnitRemoteControlEvent event); UIImage* getHostIcon (); tresult start (); tresult stop (); tresult addProcessor (IAudioIOProcessor* processor); tresult removeProcessor (IAudioIOProcessor* processor); // accessors AudioUnit getRemoteIO () const { return remoteIO; } SampleRate getSampleRate () const { return sampleRate; } bool getInterAppAudioConnected () const { return interAppAudioConnected; } // host context information bool getBeatAndTempo (Float64& beat, Float64& tempo); bool getMusicalTimeLocation (UInt32& deltaSampleOffset, Float32& timeSigNumerator, UInt32& timeSigDenominator, Float64& downBeat); bool getTransportState (Boolean& isPlaying, Boolean& isRecording, Boolean& transportStateChanged, Float64& sampleInTimeLine, Boolean& isCycling, Float64& cycleStartBeat, Float64& cycleEndBeat); void setStaticFallbackTempo (Float64 tempo) { staticTempo = tempo; } Float64 getStaticFallbackTempo () const { return staticTempo; } static NSString* kConnectionStateChange; //------------------------------------------------------------------------ protected: AudioIO (); ~AudioIO (); static OSStatus inputCallbackStatic (void* inRefCon, AudioUnitRenderActionFlags* ioActionFlags, const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList* ioData); static OSStatus renderCallbackStatic (void* inRefCon, AudioUnitRenderActionFlags* ioActionFlags, const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList* ioData); static void propertyChangeStatic (void* inRefCon, AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement); static void midiEventCallbackStatic (void* inRefCon, UInt32 inStatus, UInt32 inData1, UInt32 inData2, UInt32 inOffsetSampleFrame); OSStatus inputCallback (AudioUnitRenderActionFlags* ioActionFlags, const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList* ioData); OSStatus renderCallback (AudioUnitRenderActionFlags* ioActionFlags, const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList* ioData); void midiEventCallback (UInt32 inStatus, UInt32 inData1, UInt32 inData2, UInt32 inOffsetSampleFrame); void remoteIOPropertyChanged (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement); void setAudioSessionActive (bool state); tresult setupRemoteIO (OSType type); tresult setupAUGraph (OSType type); void updateInterAppAudioConnectionState (); AudioUnit remoteIO {nullptr}; AUGraph graph {nullptr}; AudioBufferList* ioBufferList {nullptr}; HostCallbackInfo hostCallback {}; UInt32 maxFrames {4096}; Float64 staticTempo {120.}; SampleRate sampleRate; bool interAppAudioConnected {false}; std::vector audioProcessors; enum InternalState { kUninitialized, kInitialized, kStarted, }; InternalState internalState {kUninitialized}; }; //------------------------------------------------------------------------ } // namespace InterAppAudio } // namespace Vst } // namespace Steinberg /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/AudioIO.mm000066400000000000000000000472721461511344300231700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/AudioIO.mm // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "AudioIO.h" #import "MidiIO.h" #import "pluginterfaces/base/fstrdefs.h" #import #import #import #define FORCE_INLINE __attribute__ ((always_inline)) namespace Steinberg { namespace Vst { namespace InterAppAudio { //------------------------------------------------------------------------ static AudioBufferList* createBuffers (uint32 numChannels, uint32 maxFrames, uint32 frameSize) { AudioBufferList* result = (AudioBufferList*)malloc (sizeof (AudioBufferList) + sizeof (AudioBuffer) * numChannels); result->mNumberBuffers = numChannels; for (int32 i = 0; i < numChannels; i++) { result->mBuffers[i].mDataByteSize = maxFrames * sizeof (float); result->mBuffers[i].mData = calloc (1, result->mBuffers[i].mDataByteSize); result->mBuffers[i].mNumberChannels = 1; } return result; } //------------------------------------------------------------------------ static void freeAudioBufferList (AudioBufferList* audioBufferList) { for (uint32 i = 0; i < audioBufferList->mNumberBuffers; i++) { free (audioBufferList->mBuffers[i].mData); } free (audioBufferList); } //------------------------------------------------------------------------ NSString* AudioIO::kConnectionStateChange = @"AudioIO::kConnectionStateChange"; //------------------------------------------------------------------------ AudioIO::AudioIO () { sampleRate = [[AVAudioSession sharedInstance] sampleRate]; MidiIO::instance (); } //------------------------------------------------------------------------ AudioIO::~AudioIO () { if (ioBufferList) freeAudioBufferList (ioBufferList); } //------------------------------------------------------------------------ AudioIO* AudioIO::instance () { static AudioIO gInstance; return &gInstance; } //------------------------------------------------------------------------ tresult AudioIO::setupRemoteIO (OSType type) { if (remoteIO != nullptr) { AudioStreamBasicDescription streamFormat = {}; streamFormat.mChannelsPerFrame = 2; streamFormat.mSampleRate = sampleRate; streamFormat.mFormatID = kAudioFormatLinearPCM; streamFormat.mFormatFlags = kAudioFormatFlagsNativeFloatPacked | kAudioFormatFlagIsNonInterleaved; streamFormat.mBytesPerFrame = streamFormat.mBytesPerPacket = sizeof (Float32); streamFormat.mBitsPerChannel = 32; streamFormat.mFramesPerPacket = 1; OSStatus status = AudioUnitSetProperty (remoteIO, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &streamFormat, sizeof (streamFormat)); if (status != noErr) return kInternalError; status = AudioUnitSetProperty (remoteIO, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &streamFormat, sizeof (streamFormat)); if (status != noErr) return kInternalError; status = AudioUnitSetProperty (remoteIO, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global, 1, &maxFrames, sizeof (maxFrames)); if (status != noErr) return kInternalError; bool needInput = (type == kAudioUnitType_RemoteGenerator || type == kAudioUnitType_RemoteInstrument) == false; UInt32 flag = 1; if (needInput) { // enable IO Input status = AudioUnitSetProperty (remoteIO, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, 1, &flag, sizeof (flag)); if (status != noErr) return kInternalError; } // enable IO Output status = AudioUnitSetProperty (remoteIO, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, 0, &flag, sizeof (flag)); if (status != noErr) return kInternalError; AURenderCallbackStruct renderCallback = {}; if (needInput) { renderCallback.inputProc = inputCallbackStatic; renderCallback.inputProcRefCon = this; status = AudioUnitSetProperty (remoteIO, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Global, 1, &renderCallback, sizeof (renderCallback)); if (status != noErr) return kInternalError; } renderCallback.inputProc = renderCallbackStatic; renderCallback.inputProcRefCon = this; status = AudioUnitSetProperty (remoteIO, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Global, 0, &renderCallback, sizeof (renderCallback)); if (status != noErr) return kInternalError; if (type == kAudioUnitType_RemoteInstrument || type == kAudioUnitType_RemoteMusicEffect) { AudioOutputUnitMIDICallbacks callBackStruct = {}; callBackStruct.userData = this; callBackStruct.MIDIEventProc = midiEventCallbackStatic; status = AudioUnitSetProperty (remoteIO, kAudioOutputUnitProperty_MIDICallbacks, kAudioUnitScope_Global, 0, &callBackStruct, sizeof (callBackStruct)); if (status != noErr) { NSLog (@"Setting MIDICallback on OutputUnit failed"); } } if (ioBufferList) freeAudioBufferList (ioBufferList); ioBufferList = createBuffers (streamFormat.mChannelsPerFrame, maxFrames, streamFormat.mBytesPerFrame); if (ioBufferList == nullptr) return kOutOfMemory; status = AudioUnitAddPropertyListener (remoteIO, kAudioUnitProperty_IsInterAppConnected, propertyChangeStatic, this); status = AudioUnitAddPropertyListener ( remoteIO, kAudioOutputUnitProperty_HostTransportState, propertyChangeStatic, this); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult AudioIO::setupAUGraph (OSType type) { if (graph == nullptr) { OSStatus status = NewAUGraph (&graph); if (status != noErr) return kInternalError; AudioComponentDescription iOUnitDescription; iOUnitDescription.componentManufacturer = kAudioUnitManufacturer_Apple; iOUnitDescription.componentFlags = 0; iOUnitDescription.componentFlagsMask = 0; iOUnitDescription.componentType = kAudioUnitType_Output; iOUnitDescription.componentSubType = kAudioUnitSubType_RemoteIO; AUNode remoteIONode; status = AUGraphAddNode (graph, &iOUnitDescription, &remoteIONode); if (status != noErr) return kInternalError; status = AUGraphOpen (graph); if (status != noErr) return kInternalError; status = AUGraphNodeInfo (graph, remoteIONode, nullptr, &remoteIO); if (status != noErr) return kInternalError; return setupRemoteIO (type); } return kResultFalse; } //------------------------------------------------------------------------ void AudioIO::updateInterAppAudioConnectionState () { if (remoteIO) { UInt32 connected; UInt32 dataSize = sizeof (connected); OSStatus status = AudioUnitGetProperty (remoteIO, kAudioUnitProperty_IsInterAppConnected, kAudioUnitScope_Global, 0, &connected, &dataSize); if (status == noErr) { if (interAppAudioConnected != connected) { if (connected) { UInt32 size = sizeof (HostCallbackInfo); status = AudioUnitGetProperty (remoteIO, kAudioUnitProperty_HostCallbacks, kAudioUnitScope_Global, 0, &hostCallback, &size); } else { memset (&hostCallback, 0, sizeof (HostCallbackInfo)); } interAppAudioConnected = connected > 0 ? true : false; [[NSNotificationCenter defaultCenter] postNotificationName:kConnectionStateChange object:nil]; } } } } //------------------------------------------------------------------------ tresult AudioIO::init (OSType type, OSType subType, OSType manufacturer, CFStringRef name) { tresult result = setupAUGraph (type); if (result != kResultTrue) return result; AudioComponentDescription desc = {type, subType, manufacturer, 0, 0}; OSStatus status = AudioOutputUnitPublish (&desc, name, 0, remoteIO); if (status != noErr) { NSLog (@"AudioOutputUnitPublish failed with status:%d", (int)status); } internalState = kInitialized; return result; } //------------------------------------------------------------------------ void AudioIO::setAudioSessionActive (bool state) { NSError* error; AVAudioSession* session = [AVAudioSession sharedInstance]; [session setPreferredSampleRate:sampleRate error:&error]; [session setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error]; [session setActive:(state ? YES : NO)error:&error]; } //------------------------------------------------------------------------ tresult AudioIO::start () { if (internalState == kInitialized) { bool appIsActive = [UIApplication sharedApplication].applicationState == UIApplicationStateActive; if (!(appIsActive || interAppAudioConnected)) { return kResultFalse; } setAudioSessionActive (true); Boolean graphInitialized = true; OSStatus status = AUGraphIsInitialized (graph, &graphInitialized); if (status != noErr) return kInternalError; if (graphInitialized == false) { status = AUGraphInitialize (graph); if (status != noErr) return kInternalError; updateInterAppAudioConnectionState (); } for (auto processor : audioProcessors) { processor->willStartAudio (this); } status = AUGraphStart (graph); if (status == noErr) { internalState = kStarted; updateInterAppAudioConnectionState (); return kResultTrue; } return kInternalError; } return kResultFalse; } //------------------------------------------------------------------------ tresult AudioIO::stop () { if (internalState == kStarted) { if (AUGraphStop (graph) == noErr) { for (auto processor : audioProcessors) { processor->didStopAudio (this); } internalState = kInitialized; if (interAppAudioConnected == false) setAudioSessionActive (false); return kResultTrue; } } return kResultFalse; } //------------------------------------------------------------------------ tresult AudioIO::addProcessor (IAudioIOProcessor* processor) { if (internalState == kInitialized) { audioProcessors.push_back (processor); MidiIO::instance ().addProcessor (processor); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult AudioIO::removeProcessor (IAudioIOProcessor* processor) { if (internalState == kInitialized) { auto it = std::find (audioProcessors.begin (), audioProcessors.end (), processor); if (it != audioProcessors.end ()) { audioProcessors.erase (it); MidiIO::instance ().removeProcessor (processor); return kResultTrue; } } return kResultFalse; } //------------------------------------------------------------------------ bool AudioIO::switchToHost () { if (remoteIO && interAppAudioConnected) { CFURLRef instrumentUrl; UInt32 dataSize = sizeof (instrumentUrl); OSStatus result = AudioUnitGetProperty (remoteIO, kAudioUnitProperty_PeerURL, kAudioUnitScope_Global, 0, &instrumentUrl, &dataSize); if (result == noErr) { [[UIApplication sharedApplication] openURL:(__bridge NSURL*)instrumentUrl]; return true; } } return false; } //------------------------------------------------------------------------ bool AudioIO::sendRemoteControlEvent (AudioUnitRemoteControlEvent event) { if (remoteIO && interAppAudioConnected) { UInt32 controlEvent = event; UInt32 dataSize = sizeof (controlEvent); OSStatus status = AudioUnitSetProperty (remoteIO, kAudioOutputUnitProperty_RemoteControlToHost, kAudioUnitScope_Global, 0, &controlEvent, dataSize); return status == noErr; } return false; } //------------------------------------------------------------------------ UIImage* AudioIO::getHostIcon () { if (remoteIO && interAppAudioConnected) { return AudioOutputUnitGetHostIcon (remoteIO, 128); } return nil; } //------------------------------------------------------------------------ bool AudioIO::getBeatAndTempo (Float64& beat, Float64& tempo) { if (hostCallback.beatAndTempoProc) { if (hostCallback.beatAndTempoProc (hostCallback.hostUserData, &beat, &tempo) == noErr) return true; } tempo = staticTempo; beat = 0; return true; } //------------------------------------------------------------------------ bool AudioIO::getMusicalTimeLocation (UInt32& deltaSampleOffset, Float32& timeSigNumerator, UInt32& timeSigDenominator, Float64& downBeat) { if (hostCallback.musicalTimeLocationProc) { if (hostCallback.musicalTimeLocationProc (hostCallback.hostUserData, &deltaSampleOffset, &timeSigNumerator, &timeSigDenominator, &downBeat) == noErr) return true; } return false; } //------------------------------------------------------------------------ bool AudioIO::getTransportState (Boolean& isPlaying, Boolean& isRecording, Boolean& transportStateChanged, Float64& sampleInTimeLine, Boolean& isCycling, Float64& cycleStartBeat, Float64& cycleEndBeat) { if (hostCallback.transportStateProc2) { if (hostCallback.transportStateProc2 (hostCallback.hostUserData, &isPlaying, &isRecording, &transportStateChanged, &sampleInTimeLine, &isCycling, &cycleStartBeat, &cycleEndBeat) == noErr) return true; } return false; } //------------------------------------------------------------------------ FORCE_INLINE void AudioIO::remoteIOPropertyChanged (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement) { if (inID == kAudioUnitProperty_IsInterAppConnected) { bool wasConnected = interAppAudioConnected; updateInterAppAudioConnectionState (); if (wasConnected != interAppAudioConnected) { stop (); start (); } } } //------------------------------------------------------------------------ FORCE_INLINE OSStatus AudioIO::renderCallback (AudioUnitRenderActionFlags* ioActionFlags, const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList* ioData) { if (ioData->mNumberBuffers == ioBufferList->mNumberBuffers) { for (uint32 i = 0; i < ioData->mNumberBuffers; i++) { memcpy (ioData->mBuffers[i].mData, ioBufferList->mBuffers[i].mData, ioData->mBuffers[i].mDataByteSize); } bool outputIsSilence = ioActionFlags ? *ioActionFlags & kAudioUnitRenderAction_OutputIsSilence : false; for (auto processor : audioProcessors) { outputIsSilence = false; processor->process (inTimeStamp, inBusNumber, inNumberFrames, ioData, outputIsSilence, this); } if (ioActionFlags) { *ioActionFlags = outputIsSilence ? kAudioUnitRenderAction_OutputIsSilence : 0; } } return noErr; } //------------------------------------------------------------------------ FORCE_INLINE OSStatus AudioIO::inputCallback (AudioUnitRenderActionFlags* ioActionFlags, const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList* ioData) { OSStatus status = AudioUnitRender (remoteIO, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioBufferList); return status; } //------------------------------------------------------------------------ FORCE_INLINE void AudioIO::midiEventCallback (UInt32 inStatus, UInt32 inData1, UInt32 inData2, UInt32 inOffsetSampleFrame) { for (auto processor : audioProcessors) { processor->onMIDIEvent (inStatus, inData1, inData2, inOffsetSampleFrame, true); } } //------------------------------------------------------------------------ OSStatus AudioIO::inputCallbackStatic (void* inRefCon, AudioUnitRenderActionFlags* ioActionFlags, const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList* ioData) { AudioIO* io = (AudioIO*)inRefCon; return io->inputCallback (ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData); } //------------------------------------------------------------------------ OSStatus AudioIO::renderCallbackStatic (void* inRefCon, AudioUnitRenderActionFlags* ioActionFlags, const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList* ioData) { AudioIO* io = (AudioIO*)inRefCon; return io->renderCallback (ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData); } //------------------------------------------------------------------------ void AudioIO::propertyChangeStatic (void* inRefCon, AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement) { AudioIO* audioIO = (AudioIO*)inRefCon; audioIO->remoteIOPropertyChanged (inID, inScope, inElement); } //------------------------------------------------------------------------ void AudioIO::midiEventCallbackStatic (void* inRefCon, UInt32 inStatus, UInt32 inData1, UInt32 inData2, UInt32 inOffsetSampleFrame) { AudioIO* audioIO = (AudioIO*)inRefCon; audioIO->midiEventCallback (inStatus, inData1, inData2, inOffsetSampleFrame); } } } } vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/CMakeLists.txt000066400000000000000000000036451461511344300241000ustar00rootroot00000000000000 if(SMTG_MAC) option(SMTG_BUILD_INTERAPPAUDIO "Enable building the iOS InterAppAudio examples (deprecated)" OFF) if(XCODE AND SMTG_ENABLE_IOS_TARGETS AND SMTG_BUILD_INTERAPPAUDIO) message("[SMTG] ********************************************************************************************************************************") message("[SMTG] * The iOS InterAppAudio wrapper is deprecated and may be removed in the next SDK update. Please switch to AudioUnit V3 on iOS. *") message("[SMTG] ********************************************************************************************************************************") set(target interappaudio) set(${target}_sources AudioIO.mm AudioIO.h HostApp.mm HostApp.h MidiIO.mm MidiIO.h PresetBrowserViewController.mm PresetBrowserViewController.h PresetManager.mm PresetManager.h PresetSaveViewController.mm PresetSaveViewController.h SettingsViewController.mm SettingsViewController.h VST3Editor.mm VST3Editor.h VST3Plugin.mm VST3Plugin.h VSTInterAppAudioAppDelegateBase.mm VSTInterAppAudioAppDelegateBase.h ) add_library(${target} STATIC ${${target}_sources}) smtg_set_platform_ios(${target}) set_target_properties(${target} PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) target_link_libraries(${target} PRIVATE sdk_ios "-framework CoreGraphics" "-framework UIKit" "-framework CoreMIDI" "-framework AudioToolbox" "-framework AVFoundation" ) endif(XCODE AND SMTG_ENABLE_IOS_TARGETS AND SMTG_BUILD_INTERAPPAUDIO) endif(SMTG_MAC)vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/HostApp.h000066400000000000000000000076431461511344300230710ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/HostApp.h // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once /// \cond ignore #import "public.sdk/source/vst/hosting/hostclasses.h" #import "base/source/fobject.h" #import "pluginterfaces/vst/ivstinterappaudio.h" namespace Steinberg { namespace Vst { namespace InterAppAudio { class VST3Plugin; //----------------------------------------------------------------------------- class InterAppAudioHostApp : public FObject, public HostApplication, public IInterAppAudioHost { public: //----------------------------------------------------------------------------- static InterAppAudioHostApp* instance (); void setPlugin (VST3Plugin* plugin); VST3Plugin* getPlugin () const { return plugin; } //----------------------------------------------------------------------------- // IInterAppAudioHost tresult PLUGIN_API getScreenSize (ViewRect* size, float* scale) override; tresult PLUGIN_API connectedToHost () override; tresult PLUGIN_API switchToHost () override; tresult PLUGIN_API sendRemoteControlEvent (uint32 event) override; tresult PLUGIN_API getHostIcon (void** icon) override; tresult PLUGIN_API scheduleEventFromUI (Event& event) override; IInterAppAudioPresetManager* PLUGIN_API createPresetManager (const TUID& cid) override; tresult PLUGIN_API showSettingsView () override; //----------------------------------------------------------------------------- // HostApplication tresult PLUGIN_API getName (String128 name) override; OBJ_METHODS (InterAppAudioHostApp, FObject) REFCOUNT_METHODS (FObject) DEFINE_INTERFACES DEF_INTERFACE (IHostApplication) DEF_INTERFACE (IInterAppAudioHost) END_DEFINE_INTERFACES (FObject) protected: InterAppAudioHostApp (); VST3Plugin* plugin {nullptr}; }; //------------------------------------------------------------------------ } // namespace InterAppAudio } // namespace Vst } // namespace Steinberg /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/HostApp.mm000066400000000000000000000131741461511344300232470ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/HostApp.mm // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "HostApp.h" #import "AudioIO.h" #import "PresetManager.h" #import "SettingsViewController.h" #import "VST3Plugin.h" #import "base/source/updatehandler.h" #import "pluginterfaces/gui/iplugview.h" namespace Steinberg { namespace Vst { namespace InterAppAudio { //------------------------------------------------------------------------ InterAppAudioHostApp* InterAppAudioHostApp::instance () { static InterAppAudioHostApp gInstance; return &gInstance; } //----------------------------------------------------------------------------- InterAppAudioHostApp::InterAppAudioHostApp () = default; //----------------------------------------------------------------------------- void InterAppAudioHostApp::setPlugin (VST3Plugin* plugin) { this->plugin = plugin; } //----------------------------------------------------------------------------- tresult PLUGIN_API InterAppAudioHostApp::getName (String128 name) { String str ("InterAppAudioHost"); str.copyTo (name, 0, 127); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API InterAppAudioHostApp::getScreenSize (ViewRect* size, float* scale) { if (size) { UIScreen* screen = [UIScreen mainScreen]; CGSize s = [screen currentMode].size; UIWindow* window = [[[UIApplication sharedApplication] windows] objectAtIndex:0]; if (window) { NSArray* subViews = [window subviews]; if ([subViews count] == 1) { s = [[subViews objectAtIndex:0] bounds].size; } } size->left = 0; size->top = 0; size->right = s.width; size->bottom = s.height; if (scale) { *scale = screen.scale; } return kResultTrue; } return kInvalidArgument; } //----------------------------------------------------------------------------- tresult PLUGIN_API InterAppAudioHostApp::connectedToHost () { return AudioIO::instance ()->getInterAppAudioConnected () ? kResultTrue : kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API InterAppAudioHostApp::switchToHost () { return AudioIO::instance ()->switchToHost () ? kResultTrue : kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API InterAppAudioHostApp::sendRemoteControlEvent (uint32 event) { return AudioIO::instance ()->sendRemoteControlEvent ( static_cast (event)) ? kResultTrue : kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API InterAppAudioHostApp::getHostIcon (void** icon) { if (icon) { UIImage* hostIcon = AudioIO::instance ()->getHostIcon (); if (hostIcon) { CGImageRef cgImage = [hostIcon CGImage]; if (cgImage) { *icon = cgImage; return kResultTrue; } } return kNotImplemented; } return kInvalidArgument; } //----------------------------------------------------------------------------- tresult PLUGIN_API InterAppAudioHostApp::scheduleEventFromUI (Event& event) { if (plugin) { return plugin->scheduleEventFromUI (event); } return kNotInitialized; } //----------------------------------------------------------------------------- IInterAppAudioPresetManager* PLUGIN_API InterAppAudioHostApp::createPresetManager (const TUID& cid) { return plugin ? new PresetManager (plugin, cid) : nullptr; } //----------------------------------------------------------------------------- tresult PLUGIN_API InterAppAudioHostApp::showSettingsView () { showIOSettings (); return kResultTrue; } } } } vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/LaunchScreen.storyboard000066400000000000000000000031631461511344300260170ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/MidiIO.h000066400000000000000000000071661461511344300226250ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/MidiIO.h // Created by : Steinberg, 09/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "AudioIO.h" #include #include namespace Steinberg { namespace Vst { namespace InterAppAudio { //----------------------------------------------------------------------------- class MidiIO { public: static MidiIO& instance (); bool setEnabled (bool state); bool isEnabled () const; // MIDI Network is experimental, do not use yet void setMidiNetworkEnabled (bool state); bool isMidiNetworkEnabled () const; void setMidiNetworkPolicy (MIDINetworkConnectionPolicy policy); MIDINetworkConnectionPolicy getMidiNetworkPolicy () const; void addProcessor (IMidiProcessor* processor); void removeProcessor (IMidiProcessor* processor); //----------------------------------------------------------------------------- private: MidiIO (); ~MidiIO (); void onInput (const MIDIPacketList* pktlist); void onSourceAdded (MIDIObjectRef source); void onSetupChanged (); void disconnectSources (); MIDIClientRef client {0}; MIDIPortRef inputPort {0}; MIDIEndpointRef destPort {0}; using MidiProcessors = std::vector; MidiProcessors midiProcessors; using ConnectionList = std::vector; ConnectionList connectedSources; static void readProc (const MIDIPacketList* pktlist, void* readProcRefCon, void* srcConnRefCon); static void notifyProc (const MIDINotification* message, void* refCon); }; //------------------------------------------------------------------------ } // namespace InterAppAudio } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/MidiIO.mm000066400000000000000000000162101461511344300227750ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/MidiIO.mm // Created by : Steinberg, 09/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "MidiIO.h" #import namespace Steinberg { namespace Vst { namespace InterAppAudio { //----------------------------------------------------------------------------- MidiIO& MidiIO::instance () { static MidiIO gInstance; return gInstance; } //----------------------------------------------------------------------------- MidiIO::MidiIO () = default; //----------------------------------------------------------------------------- MidiIO::~MidiIO () { setEnabled (false); } //----------------------------------------------------------------------------- void MidiIO::addProcessor (IMidiProcessor* processor) { midiProcessors.push_back (processor); } //----------------------------------------------------------------------------- void MidiIO::removeProcessor (IMidiProcessor* processor) { auto it = std::find (midiProcessors.begin (), midiProcessors.end (), processor); if (it != midiProcessors.end ()) { midiProcessors.erase (it); } } //----------------------------------------------------------------------------- bool MidiIO::isEnabled () const { return client != 0; } //----------------------------------------------------------------------------- bool MidiIO::setEnabled (bool state) { if (state) { if (client) return true; OSStatus err; NSString* name = [[NSBundle mainBundle] bundleIdentifier]; if ((err = MIDIClientCreate ((__bridge CFStringRef)name, notifyProc, this, &client) != noErr)) return false; if ((err = MIDIInputPortCreate (client, CFSTR ("Input"), readProc, this, &inputPort) != noErr)) { MIDIClientDispose (client); client = 0; return false; } name = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleDisplayName"]; if ((err = MIDIDestinationCreate (client, (__bridge CFStringRef)name, readProc, this, &destPort) != noErr)) { MIDIPortDispose (inputPort); inputPort = 0; MIDIClientDispose (client); client = 0; return false; } } else { if (client == 0) return true; disconnectSources (); MIDIEndpointDispose (destPort); destPort = 0; MIDIPortDispose (inputPort); inputPort = 0; MIDIClientDispose (client); client = 0; } return true; } //----------------------------------------------------------------------------- void MidiIO::setMidiNetworkEnabled (bool state) { if (inputPort && isMidiNetworkEnabled () != state) { if (!state) { MIDIPortDisconnectSource (inputPort, [MIDINetworkSession defaultSession].sourceEndpoint); } [MIDINetworkSession defaultSession].enabled = state; if (state) { MIDIPortConnectSource (inputPort, [MIDINetworkSession defaultSession].sourceEndpoint, 0); } } } //----------------------------------------------------------------------------- bool MidiIO::isMidiNetworkEnabled () const { return [MIDINetworkSession defaultSession].isEnabled; } //----------------------------------------------------------------------------- void MidiIO::setMidiNetworkPolicy (MIDINetworkConnectionPolicy policy) { [MIDINetworkSession defaultSession].connectionPolicy = policy; } //----------------------------------------------------------------------------- MIDINetworkConnectionPolicy MidiIO::getMidiNetworkPolicy () const { return [MIDINetworkSession defaultSession].connectionPolicy; } //----------------------------------------------------------------------------- void MidiIO::onInput (const MIDIPacketList* pktlist) { const MIDIPacket* packet = &pktlist->packet[0]; for (UInt32 i = 0; i < pktlist->numPackets; i++) { for (auto processor : midiProcessors) { processor->onMIDIEvent (packet->data[0], packet->data[1], packet->data[2], 0, false); } packet = MIDIPacketNext (packet); } } //----------------------------------------------------------------------------- void MidiIO::onSourceAdded (MIDIObjectRef source) { connectedSources.push_back ((MIDIEndpointRef)source); MIDIPortConnectSource (inputPort, (MIDIEndpointRef)source, NULL); } //----------------------------------------------------------------------------- void MidiIO::disconnectSources () { for (auto source : connectedSources) MIDIPortDisconnectSource (inputPort, source); connectedSources.clear (); } //----------------------------------------------------------------------------- void MidiIO::onSetupChanged () { disconnectSources (); ItemCount numSources = MIDIGetNumberOfSources (); for (ItemCount i = 0; i < numSources; i++) { onSourceAdded (MIDIGetSource (i)); } } //----------------------------------------------------------------------------- void MidiIO::readProc (const MIDIPacketList* pktlist, void* readProcRefCon, void* srcConnRefCon) { MidiIO* io = static_cast (readProcRefCon); io->onInput (pktlist); } //----------------------------------------------------------------------------- void MidiIO::notifyProc (const MIDINotification* message, void* refCon) { if (message->messageID == kMIDIMsgSetupChanged) { MidiIO* mio = (MidiIO*)refCon; mio->onSetupChanged (); } } } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/PresetBrowserView.xib000066400000000000000000000154671461511344300255120ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/PresetBrowserViewController.h000066400000000000000000000052721461511344300272140ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/PresetBrowserViewController.h // Created by : Steinberg, 09/2013 // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once /// \cond ignore #ifdef __OBJC__ #import #import //----------------------------------------------------------------------------- @interface PresetBrowserViewController : UIViewController //----------------------------------------------------------------------------- - (id)initWithCallback:(std::function)callback; - (void)setFactoryPresets:(NSArray*)factoryPresets userPresets:(NSArray*)userPresets; @end #endif // __OBJC__ /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/PresetBrowserViewController.mm000066400000000000000000000217631461511344300274010ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/PresetBrowserViewController.mm // Created by : Steinberg, 09/2013 // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "PresetBrowserViewController.h" #import "pluginterfaces/base/funknown.h" //------------------------------------------------------------------------ @interface PresetBrowserViewController () //------------------------------------------------------------------------ { IBOutlet UITableView* presetTableView; IBOutlet UIView* containerView; std::function callback; Steinberg::FUID uid; } @property (strong) NSArray* factoryPresets; @property (strong) NSArray* userPresets; @property (strong) NSArray* displayPresets; @property (assign) BOOL editMode; @end //------------------------------------------------------------------------ @implementation PresetBrowserViewController //------------------------------------------------------------------------ //------------------------------------------------------------------------ - (id)initWithCallback:(std::function)_callback { self = [super initWithNibName:@"PresetBrowserView" bundle:nil]; if (self) { callback = _callback; self.modalPresentationStyle = UIModalPresentationOverCurrentContext; self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; UIViewController* rootViewController = [[UIApplication sharedApplication].windows[0] rootViewController]; [rootViewController presentViewController:self animated:YES completion:^{}]; } return self; } //------------------------------------------------------------------------ - (void)setFactoryPresets:(NSArray*)factoryPresets userPresets:(NSArray*)userPresets { self.factoryPresets = factoryPresets; self.userPresets = userPresets; [self updatePresetArray]; dispatch_async (dispatch_get_main_queue (), ^{ [presetTableView reloadData]; }); } //------------------------------------------------------------------------ - (void)viewDidLoad { [super viewDidLoad]; containerView.layer.shadowOpacity = 0.5; containerView.layer.shadowOffset = CGSizeMake (5, 5); containerView.layer.shadowRadius = 5; } //------------------------------------------------------------------------ - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } //------------------------------------------------------------------------ - (void)updatePresetArray { if (self.userPresets) { self.displayPresets = [[self.factoryPresets arrayByAddingObjectsFromArray:self.userPresets] sortedArrayUsingComparator:^NSComparisonResult (NSURL* obj1, NSURL* obj2) { return [[obj1 lastPathComponent] caseInsensitiveCompare:[obj2 lastPathComponent]]; }]; } else { self.displayPresets = self.factoryPresets; } } //------------------------------------------------------------------------ - (void)removeSelf { [self dismissViewControllerAnimated:YES completion:^{}]; } //------------------------------------------------------------------------ - (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath { NSURL* url = [self.displayPresets objectAtIndex:indexPath.row]; if (url) { callback ([[url path] UTF8String]); } [self removeSelf]; } //------------------------------------------------------------------------ - (IBAction)toggleEditMode:(id)sender { self.editMode = !self.editMode; if (self.editMode) { NSMutableArray* indexPaths = [NSMutableArray new]; for (NSURL* url in self.factoryPresets) { NSUInteger index = [self.displayPresets indexOfObjectIdenticalTo:url]; [indexPaths addObject:[NSIndexPath indexPathForRow:index inSection:0]]; } [presetTableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; } else { [self updatePresetArray]; NSMutableArray* indexPaths = [NSMutableArray new]; for (NSURL* url in self.factoryPresets) { NSUInteger index = [self.displayPresets indexOfObjectIdenticalTo:url]; [indexPaths addObject:[NSIndexPath indexPathForRow:index inSection:0]]; } [presetTableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; } [presetTableView setEditing:self.editMode animated:YES]; } //------------------------------------------------------------------------ - (IBAction)cancel:(id)sender { if (callback) { callback (nullptr); } [self removeSelf]; } //------------------------------------------------------------------------ - (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section { if (self.editMode) { return [self.userPresets count]; } return [self.displayPresets count]; } //------------------------------------------------------------------------ - (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"PresetBrowserCell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"PresetBrowserCell"]; } cell.backgroundColor = [UIColor clearColor]; NSURL* presetUrl = nil; if (self.editMode) { presetUrl = [self.userPresets objectAtIndex:indexPath.row]; cell.detailTextLabel.text = @"User"; } else { presetUrl = [self.displayPresets objectAtIndex:indexPath.row]; if ([self.factoryPresets indexOfObject:presetUrl] == NSNotFound) { cell.detailTextLabel.text = @"User"; } else { cell.detailTextLabel.text = @"Factory"; } } cell.textLabel.text = [[presetUrl lastPathComponent] stringByDeletingPathExtension]; return cell; } //------------------------------------------------------------------------ - (BOOL)tableView:(UITableView*)tableView canEditRowAtIndexPath:(NSIndexPath*)indexPath { if (self.editMode) { return YES; } return NO; } //------------------------------------------------------------------------ - (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath { NSURL* presetUrl = [self.userPresets objectAtIndex:indexPath.row]; if (presetUrl) { NSFileManager* fs = [NSFileManager defaultManager]; NSError* error = nil; if ([fs removeItemAtURL:presetUrl error:&error] == NO) { auto alertController = [UIAlertController alertControllerWithTitle:[error localizedDescription] message:[error localizedRecoverySuggestion] preferredStyle:UIAlertControllerStyleAlert]; [self presentViewController:alertController animated:YES completion:nil]; } else { NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.userPresets]; [newArray removeObject:presetUrl]; self.userPresets = newArray; [presetTableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; } } } //------------------------------------------------------------------------ - (BOOL)prefersStatusBarHidden { return YES; } @end vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/PresetManager.h000066400000000000000000000067461461511344300242530ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/PresetManager.h // Created by : Steinberg, 10/2013 // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "VST3Plugin.h" #include "base/source/fstring.h" #include "pluginterfaces/vst/ivstinterappaudio.h" #if __OBJC__ @class NSArray, PresetBrowserViewController, PresetSaveViewController; #else struct NSArray; struct PresetBrowserViewController; struct PresetSaveViewController; #endif namespace Steinberg { namespace Vst { namespace InterAppAudio { class PresetManager : public FObject, public IInterAppAudioPresetManager { public: PresetManager (VST3Plugin* plugin, const TUID& cid); tresult PLUGIN_API runLoadPresetBrowser () override; tresult PLUGIN_API runSavePresetBrowser () override; tresult PLUGIN_API loadNextPreset () override; tresult PLUGIN_API loadPreviousPreset () override; DEFINE_INTERFACES DEF_INTERFACE (IInterAppAudioPresetManager) END_DEFINE_INTERFACES (FObject) REFCOUNT_METHODS (FObject) private: enum PresetPathType { kFactory, kUser }; NSArray* getPresetPaths (PresetPathType type); tresult loadPreset (bool next); tresult loadPreset (const char* path); void savePreset (const char* path); VST3Plugin* plugin; PresetBrowserViewController* visiblePresetBrowserViewController; PresetSaveViewController* visibleSavePresetViewController; FUID cid; String lastPreset; }; //------------------------------------------------------------------------ } // namespace InterAppAudio } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/PresetManager.mm000066400000000000000000000233201461511344300244200ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/PresetManager.mm // Created by : Steinberg, 10/2013 // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "PresetManager.h" #import "PresetBrowserViewController.h" #import "PresetSaveViewController.h" #import "public.sdk/source/vst/vstpresetfile.h" #import "pluginterfaces/vst/ivstattributes.h" namespace Steinberg { namespace Vst { namespace InterAppAudio { //----------------------------------------------------------------------------- class PresetStream : public ReadOnlyBStream, public IStreamAttributes { public: PresetStream (IBStream* sourceStream, TSize sourceOffset, TSize sectionSize, const char* utf8Path) : ReadOnlyBStream (sourceStream, sourceOffset, sectionSize), fileName (utf8Path) { fileName.toWideString (kCP_Utf8); } virtual tresult PLUGIN_API getFileName (String128 name) override { if (fileName.length () > 0) { fileName.copyTo (name, 0, 128); return kResultTrue; } return kResultFalse; } virtual IAttributeList* PLUGIN_API getAttributes () override { return nullptr; } DEF_INTERFACES_1 (IStreamAttributes, ReadOnlyBStream) REFCOUNT_METHODS (ReadOnlyBStream) protected: String fileName; }; //----------------------------------------------------------------------------- PresetManager::PresetManager (VST3Plugin* plugin, const TUID& cid) : plugin (plugin) , visiblePresetBrowserViewController (nil) , visibleSavePresetViewController (nil) , cid (cid) { id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"PresetManager|lastPreset"]; if (obj && [obj isKindOfClass:[NSString class]]) { lastPreset = [obj UTF8String]; } } //----------------------------------------------------------------------------- NSArray* PresetManager::getPresetPaths (PresetPathType type) { if (type == kFactory) { return [[NSBundle mainBundle] URLsForResourcesWithExtension:@"vstpreset" subdirectory:@"Presets"]; } NSFileManager* fs = [NSFileManager defaultManager]; NSURL* documentsUrl = [fs URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:Nil create:YES error:NULL]; if (documentsUrl) { NSMutableArray* userUrls = [NSMutableArray new]; NSDirectoryEnumerator* enumerator = [fs enumeratorAtURL:documentsUrl includingPropertiesForKeys:nil options:NSDirectoryEnumerationSkipsSubdirectoryDescendants errorHandler:nil]; for (NSURL* url in enumerator.allObjects) { if ([[url pathExtension] isEqualToString:@"vstpreset"]) { [userUrls addObject:url]; } } return [userUrls sortedArrayUsingComparator:^NSComparisonResult (NSURL* obj1, NSURL* obj2) { return [[obj1 lastPathComponent] caseInsensitiveCompare:[obj2 lastPathComponent]]; }]; } return nil; } //----------------------------------------------------------------------------- tresult PLUGIN_API PresetManager::runLoadPresetBrowser () { if (visiblePresetBrowserViewController != nil) return kResultFalse; addRef (); visiblePresetBrowserViewController = [[PresetBrowserViewController alloc] initWithCallback:[this] (const char* path) { loadPreset (path); visiblePresetBrowserViewController = nil; release (); }]; addRef (); dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ if (visiblePresetBrowserViewController) { [visiblePresetBrowserViewController setFactoryPresets:getPresetPaths (kFactory) userPresets:getPresetPaths (kUser)]; } release (); }); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API PresetManager::runSavePresetBrowser () { if (visibleSavePresetViewController != nil) return kResultFalse; addRef (); visibleSavePresetViewController = [[PresetSaveViewController alloc] initWithCallback:[this] (const char* path) { savePreset (path); visibleSavePresetViewController = nil; release (); }]; return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API PresetManager::loadNextPreset () { return loadPreset (true); } //----------------------------------------------------------------------------- tresult PLUGIN_API PresetManager::loadPreviousPreset () { return loadPreset (false); } //----------------------------------------------------------------------------- tresult PresetManager::loadPreset (bool next) { NSArray* presets = [[getPresetPaths (kFactory) arrayByAddingObjectsFromArray:getPresetPaths (kUser)] sortedArrayUsingComparator:^NSComparisonResult (NSURL* obj1, NSURL* obj2) { return [[obj1 lastPathComponent] caseInsensitiveCompare:[obj2 lastPathComponent]]; }]; __block NSUInteger index = NSNotFound; if (lastPreset.isEmpty () == false) { NSURL* lastUrl = [[NSURL fileURLWithPath:[NSString stringWithUTF8String:lastPreset]] fileReferenceURL]; if (lastUrl) { [presets enumerateObjectsUsingBlock:^(NSURL* obj, NSUInteger idx, BOOL* stop) { if ([[obj fileReferenceURL] isEqual:lastUrl]) { index = idx; *stop = YES; } }]; } } if (index == NSNotFound) { if (next) index = [presets count] - 1; else index = 1; } if (index != NSNotFound) { if (next) { if (index >= [presets count] - 1) index = 0; else index++; } else { if (index == 0) index = [presets count] - 1; else index--; } return loadPreset ([[[presets objectAtIndex:index] path] UTF8String]); } return kResultFalse; } //----------------------------------------------------------------------------- tresult PresetManager::loadPreset (const char* path) { if (path) { IPtr stream = owned (FileStream::open (path, "r")); if (stream) { [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithUTF8String:path] forKey:@"PresetManager|lastPreset"]; lastPreset = path; FUnknownPtr component (plugin->getAudioProcessor ()); IEditController* controller = plugin->getEditController (); if (component) { PresetFile pf (stream); if (!pf.readChunkList ()) return kResultFalse; if (pf.getClassID () != cid) return kResultFalse; const PresetFile::Entry* e = pf.getEntry (kComponentState); if (e == nullptr) return kResultFalse; auto filename = strrchr (path, '/'); if (filename) filename++; IPtr readOnlyBStream = owned (new PresetStream (stream, e->offset, e->size, filename)); tresult result = component->setState (readOnlyBStream); if ((result == kResultTrue || result == kNotImplemented) && controller) { readOnlyBStream->seek (0, IBStream::kIBSeekSet); controller->setComponentState (readOnlyBStream); if (pf.contains (kControllerState)) { e = pf.getEntry (kControllerState); if (e) { readOnlyBStream = owned (new PresetStream (stream, e->offset, e->size, filename)); controller->setState (readOnlyBStream); } } } return result; } } } return kResultFalse; } //----------------------------------------------------------------------------- void PresetManager::savePreset (const char* path) { IBStream* stream = FileStream::open (path, "w"); if (stream) { FUnknownPtr component (plugin->getAudioProcessor ()); IEditController* controller = plugin->getEditController (); if (component) { PresetFile::savePreset (stream, cid, component, controller); } stream->release (); loadPreset (path); } } } } } // namespaces vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/PresetSaveView.xib000066400000000000000000000164741461511344300247640ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/PresetSaveViewController.h000066400000000000000000000046721461511344300264720ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/PresetSaveViewController.h // Created by : Steinberg, 09/2013 // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once /// \cond ignore #ifdef __OBJC__ #import #import @interface PresetSaveViewController : UIViewController - (id)initWithCallback:(std::function)callback; @end #endif //__OBJC__ /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/PresetSaveViewController.mm000066400000000000000000000151161461511344300266470ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/PresetSaveViewController.mm // Created by : Steinberg, 09/2013 // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "PresetSaveViewController.h" #import "pluginterfaces/base/funknown.h" //------------------------------------------------------------------------ @interface PresetSaveViewController () //------------------------------------------------------------------------ { IBOutlet UIView* containerView; IBOutlet UITextField* presetName; std::function callback; Steinberg::FUID uid; } @end //------------------------------------------------------------------------ @implementation PresetSaveViewController //------------------------------------------------------------------------ //------------------------------------------------------------------------ - (id)initWithCallback:(std::function)_callback { self = [super initWithNibName:@"PresetSaveView" bundle:nil]; if (self) { callback = _callback; self.modalPresentationStyle = UIModalPresentationOverCurrentContext; self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; UIViewController* rootViewController = [[UIApplication sharedApplication].windows[0] rootViewController]; [rootViewController presentViewController:self animated:YES completion:^{ [self showKeyboard]; }]; } return self; } //------------------------------------------------------------------------ - (void)viewDidLoad { [super viewDidLoad]; containerView.layer.shadowOpacity = 0.5; containerView.layer.shadowOffset = CGSizeMake (5, 5); containerView.layer.shadowRadius = 5; } //------------------------------------------------------------------------ - (void)showKeyboard { [presetName becomeFirstResponder]; } //------------------------------------------------------------------------ - (void)removeSelf { [self dismissViewControllerAnimated:YES completion:^{}]; } //------------------------------------------------------------------------ - (NSURL*)presetURL { NSFileManager* fs = [NSFileManager defaultManager]; NSURL* documentsUrl = [fs URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:Nil create:YES error:NULL]; if (documentsUrl) { NSURL* presetPath = [[documentsUrl URLByAppendingPathComponent:presetName.text] URLByAppendingPathExtension:@"vstpreset"]; return presetPath; } return nil; } //------------------------------------------------------------------------ - (BOOL)textFieldShouldReturn:(UITextField*)textField { if ([textField.text length] > 0) { [self save:textField]; return YES; } return NO; } //------------------------------------------------------------------------ - (IBAction)save:(id)sender { if (callback) { NSURL* presetPath = [self presetURL]; NSFileManager* fs = [NSFileManager defaultManager]; if ([fs fileExistsAtPath:[presetPath path]]) { // alert for overwrite auto alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString ( @"A Preset with this name already exists", "Alert title") message:NSLocalizedString (@"Save it anyway ?", "Alert message") preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString (@"Save", "Alert Save Button") style:UIAlertActionStyleDefault handler:^(UIAlertAction* _Nonnull action) { callback ([[[self presetURL] path] UTF8String]); [self removeSelf]; }]]; [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString (@"Cancel", "Alert Cancel Button") style:UIAlertActionStyleCancel handler:^(UIAlertAction* _Nonnull action) {}]]; [self presentViewController:alertController animated:YES completion:nil]; return; } callback ([[presetPath path] UTF8String]); } [self removeSelf]; } //------------------------------------------------------------------------ - (IBAction)cancel:(id)sender { if (callback) { callback (nullptr); } [self removeSelf]; } //------------------------------------------------------------------------ - (BOOL)prefersStatusBarHidden { return YES; } @end vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/SettingsView.xib000066400000000000000000000170701461511344300244740ustar00rootroot00000000000000 vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/SettingsViewController.h000066400000000000000000000045261461511344300262070ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/SettingsViewController.h // Created by : Steinberg, 09/2013 // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #ifdef __OBJC__ #import @interface SettingsViewController : UIViewController @end #endif // __OBJC__ extern void showIOSettings (); vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/SettingsViewController.mm000066400000000000000000000124041461511344300263630ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/SettingsViewController.mm // Created by : Steinberg, 09/2013 // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "SettingsViewController.h" #import "AudioIO.h" #import "MidiIO.h" #import using namespace Steinberg::Vst::InterAppAudio; static const NSUInteger kMinTempo = 30; //------------------------------------------------------------------------ @interface SettingsViewController () //------------------------------------------------------------------------ { IBOutlet UIView* containerView; IBOutlet UISwitch* midiOnSwitch; IBOutlet UIPickerView* tempoView; } @end //------------------------------------------------------------------------ @implementation SettingsViewController //------------------------------------------------------------------------ //------------------------------------------------------------------------ - (id)init { self = [super initWithNibName:@"SettingsView" bundle:nil]; if (self) { self.modalPresentationStyle = UIModalPresentationOverCurrentContext; self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; } return self; } //------------------------------------------------------------------------ - (void)viewDidLoad { [super viewDidLoad]; containerView.layer.shadowOpacity = 0.5; containerView.layer.shadowOffset = CGSizeMake (5, 5); containerView.layer.shadowRadius = 5; midiOnSwitch.on = MidiIO::instance ().isEnabled (); Float64 tempo = AudioIO::instance ()->getStaticFallbackTempo (); [tempoView selectRow:tempo - kMinTempo inComponent:0 animated:YES]; } //------------------------------------------------------------------------ - (IBAction)enableMidi:(id)sender { BOOL state = midiOnSwitch.on; MidiIO::instance ().setEnabled (state); } //------------------------------------------------------------------------ - (IBAction)close:(id)sender { [self dismissViewControllerAnimated:YES completion:^{}]; } //------------------------------------------------------------------------ - (void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { AudioIO::instance ()->setStaticFallbackTempo (row + kMinTempo); } //------------------------------------------------------------------------ - (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView { return 1; } //------------------------------------------------------------------------ - (NSInteger)pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component { return 301 - kMinTempo; } //------------------------------------------------------------------------ - (NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { return [@(row + kMinTempo) stringValue]; } //------------------------------------------------------------------------ - (BOOL)prefersStatusBarHidden { return YES; } @end //------------------------------------------------------------------------ void showIOSettings () { SettingsViewController* controller = [[SettingsViewController alloc] init]; UIViewController* rootViewController = [[UIApplication sharedApplication].windows[0] rootViewController]; [rootViewController presentViewController:controller animated:YES completion:^{}]; } vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/VST3Editor.h000066400000000000000000000063301461511344300234110ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/VST3Editor.h // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once /// \cond ignore #import "base/source/fobject.h" #import "pluginterfaces/gui/iplugview.h" #import namespace Steinberg { namespace Vst { class IEditController; namespace InterAppAudio { //------------------------------------------------------------------------ class VST3Editor : public FObject, public IPlugFrame { public: //------------------------------------------------------------------------ VST3Editor (); virtual ~VST3Editor (); bool init (const CGRect& frame); bool attach (IEditController* editController); UIViewController* getViewController () const { return viewController; } OBJ_METHODS (VST3Editor, FObject) REFCOUNT_METHODS (FObject) DEFINE_INTERFACES DEF_INTERFACE (IPlugFrame) END_DEFINE_INTERFACES (FObject) protected: // IPlugFrame tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* newSize) override; IPlugView* plugView {nullptr}; UIViewController* viewController {nullptr}; }; //------------------------------------------------------------------------ } // namespace InterAppAudio } // namespace Vst } // namespace Steinberg /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/VST3Editor.mm000066400000000000000000000106761461511344300236030ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/VST3Editor.mm // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "VST3Editor.h" #import "pluginterfaces/vst/ivsteditcontroller.h" //------------------------------------------------------------------------ @interface VST3EditorViewController : UIViewController //------------------------------------------------------------------------ @end //------------------------------------------------------------------------ @implementation VST3EditorViewController //------------------------------------------------------------------------ - (BOOL)prefersStatusBarHidden { return YES; } - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; } @end namespace Steinberg { namespace Vst { namespace InterAppAudio { //------------------------------------------------------------------------ VST3Editor::VST3Editor () = default; //------------------------------------------------------------------------ VST3Editor::~VST3Editor () { if (plugView) { plugView->release (); } } //------------------------------------------------------------------------ bool VST3Editor::init (const CGRect& frame) { viewController = [VST3EditorViewController new]; viewController.view = [[UIView alloc] initWithFrame:frame]; return true; } //------------------------------------------------------------------------ bool VST3Editor::attach (IEditController* editController) { FUnknownPtr ec2 (editController); if (ec2) { ec2->setKnobMode (kLinearMode); } plugView = editController->createView (ViewType::kEditor); if (plugView) { if (plugView->isPlatformTypeSupported (kPlatformTypeUIView) == kResultTrue) { plugView->setFrame (this); if (plugView->attached ((__bridge void*)viewController.view, kPlatformTypeUIView) == kResultTrue) { return true; } } plugView->release (); plugView = nullptr; } return false; } //------------------------------------------------------------------------ tresult PLUGIN_API VST3Editor::resizeView (IPlugView* view, ViewRect* newSize) { if (newSize && plugView && plugView == view) { if (view->onSize (newSize) == kResultTrue) return kResultTrue; return kResultFalse; } return kInvalidArgument; } //------------------------------------------------------------------------ } // InterAppAudio } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/VST3Plugin.h000066400000000000000000000130411461511344300234160ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/VST3Plugin.h // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once /// \cond ignore #import "AudioIO.h" #import "public.sdk/source/vst/hosting/eventlist.h" #import "public.sdk/source/vst/hosting/parameterchanges.h" #import "public.sdk/source/vst/hosting/processdata.h" #import "public.sdk/source/vst/utility/ringbuffer.h" #import "base/source/fobject.h" #import "base/source/timer.h" #import "pluginterfaces/vst/ivstaudioprocessor.h" #import "pluginterfaces/vst/ivsteditcontroller.h" #import "pluginterfaces/vst/ivstprocesscontext.h" #import #import #ifndef __OBJC__ struct NSData; #endif namespace Steinberg { namespace Vst { namespace InterAppAudio { static const int32 kMaxUIEvents = 100; //------------------------------------------------------------------------ class VST3Plugin : public FObject, public IComponentHandler, public IAudioIOProcessor, public ITimerCallback { public: //------------------------------------------------------------------------ VST3Plugin (); virtual ~VST3Plugin (); bool init (); IEditController* getEditController () const { return editController; } IAudioProcessor* getAudioProcessor () const { return processor; } tresult scheduleEventFromUI (Event& event); NSData* getProcessorState (); bool setProcessorState (NSData* data); NSData* getControllerState (); bool setControllerState (NSData* data); OBJ_METHODS (VST3Plugin, FObject) REFCOUNT_METHODS (FObject) DEFINE_INTERFACES DEF_INTERFACE (IComponentHandler) END_DEFINE_INTERFACES (FObject) protected: typedef std::map NoteIDPitchMap; typedef uint32 ChannelAndCtrlNumber; typedef std::map MIDIControllerToParamIDMap; void createProcessorAndController (); void updateProcessContext (AudioIO* audioIO); MIDIControllerToParamIDMap createMIDIControllerToParamIDMap (); // IComponentHandler tresult PLUGIN_API beginEdit (ParamID id) override; tresult PLUGIN_API performEdit (ParamID id, ParamValue valueNormalized) override; tresult PLUGIN_API endEdit (ParamID id) override; tresult PLUGIN_API restartComponent (int32 flags) override; // IAudioIOProcessor void willStartAudio (AudioIO* audioIO) override; void didStopAudio (AudioIO* audioIO) override; void onMIDIEvent (UInt32 status, UInt32 data1, UInt32 data2, UInt32 sampleOffset, bool withinRealtimeThread) override; void process (const AudioTimeStamp* timeStamp, UInt32 busNumber, UInt32 numFrames, AudioBufferList* ioData, bool& outputIsSilence, AudioIO* audioIO) override; // ITimerCallback void onTimer (Timer* timer) override; IAudioProcessor* processor {nullptr}; IEditController* editController {nullptr}; Timer* timer {nullptr}; HostProcessData processData; ProcessContext processContext; ParameterChangeTransfer inputParamChangeTransfer; ParameterChangeTransfer outputParamChangeTransfer; ParameterChanges inputParamChanges; ParameterChanges outputParamChanges; EventList inputEvents; NoteIDPitchMap noteIDPitchMap; std::atomic lastNodeID {0}; bool processing {false}; MIDIControllerToParamIDMap midiControllerToParamIDMap; OneReaderOneWriter::RingBuffer uiScheduledEvents; static ChannelAndCtrlNumber channelAndCtrlNumber (uint16 channel, CtrlNumber ctrler) { return (channel << 16) + ctrler; } }; //------------------------------------------------------------------------ } // namespace InterAppAudio } // namespace Vst } // namespace Steinberg /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/VST3Plugin.mm000066400000000000000000000444261461511344300236130ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/VST3Plugin.mm // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "VST3Plugin.h" #import "HostApp.h" #import "public.sdk/source/vst/auwrapper/NSDataIBStream.h" #import "public.sdk/source/vst/hosting/hostclasses.h" #import "base/source/updatehandler.h" #import "pluginterfaces/base/ipluginbase.h" #import "pluginterfaces/vst/ivstinterappaudio.h" #import "pluginterfaces/vst/ivstmessage.h" #import "pluginterfaces/vst/ivstmidicontrollers.h" #import //------------------------------------------------------------------------ extern "C" { bool bundleEntry (CFBundleRef); bool bundleExit (void); } namespace Steinberg { namespace Vst { namespace InterAppAudio { //------------------------------------------------------------------------ __attribute__ ((constructor)) static void InitUpdateHandler () { UpdateHandler::instance (); } //------------------------------------------------------------------------ VST3Plugin::VST3Plugin () { processData.processContext = &processContext; processData.inputParameterChanges = &inputParamChanges; processData.outputParameterChanges = &outputParamChanges; processData.inputEvents = &inputEvents; } //------------------------------------------------------------------------ VST3Plugin::~VST3Plugin () { } //------------------------------------------------------------------------ bool VST3Plugin::init () { if (processor == nullptr && editController == nullptr) { ::bundleEntry (CFBundleGetMainBundle ()); createProcessorAndController (); } return processor && editController; } //------------------------------------------------------------------------ void VST3Plugin::createProcessorAndController () { Steinberg::IPluginFactory* factory = GetPluginFactory (); if (factory == nullptr) return; IComponent* component = nullptr; PClassInfo classInfo; int32 classCount = factory->countClasses (); for (int32 i = 0; i < classCount; i++) { if (factory->getClassInfo (i, &classInfo) != kResultTrue) return; if (strcmp (classInfo.category, kVstAudioEffectClass) == 0) { if (factory->createInstance (classInfo.cid, IComponent::iid, (void**)&component) != kResultTrue) { return; } break; } } if (component) { if (component->initialize (InterAppAudioHostApp::instance ()->unknownCast ()) != kResultTrue) { component->release (); return; } if (component->queryInterface (IEditController::iid, (void**)&editController) != kResultTrue) { TUID controllerCID {}; if (component->getControllerClassId (controllerCID) == kResultTrue) { if (factory->createInstance (controllerCID, IEditController::iid, (void**)&editController) != kResultTrue) return; editController->setComponentHandler (this); if (editController->initialize ( InterAppAudioHostApp::instance ()->unknownCast ()) != kResultTrue) { component->release (); editController->release (); editController = nullptr; return; } FUnknownPtr compConnection (component); FUnknownPtr ctrlerConnection (editController); if (compConnection && ctrlerConnection) { compConnection->connect (ctrlerConnection); ctrlerConnection->connect (compConnection); } } else { component->release (); return; } } component->queryInterface (IAudioProcessor::iid, (void**)&processor); if (processor == nullptr) { if (editController) { editController->release (); editController = nullptr; } } else { NSMutableData* data = [NSMutableData new]; NSMutableDataIBStream state (data); if (component->getState (&state) == kResultTrue) { state.seek (0, IBStream::kIBSeekSet); editController->setComponentState (&state); } int32 paramCount = editController->getParameterCount (); inputParamChanges.setMaxParameters (paramCount); inputParamChangeTransfer.setMaxParameters (paramCount); outputParamChanges.setMaxParameters (paramCount); outputParamChangeTransfer.setMaxParameters (paramCount); midiControllerToParamIDMap = createMIDIControllerToParamIDMap (); uiScheduledEvents.resize (kMaxUIEvents); } component->release (); } } //------------------------------------------------------------------------ VST3Plugin::MIDIControllerToParamIDMap VST3Plugin::createMIDIControllerToParamIDMap () { MIDIControllerToParamIDMap newMap; FUnknownPtr midiMapping (editController); if (midiMapping) { uint16 channelCount = 0; FUnknownPtr component (processor); if (component) { int32 busCount = component->getBusCount (kEvent, kInput); if (busCount > 0) { BusInfo busInfo; if (component->getBusInfo (kEvent, kInput, 0, busInfo) == kResultTrue) { channelCount = busInfo.channelCount; } } } ParamID paramID; for (int32 channel = 0; channel < channelCount; channel++) { for (CtrlNumber ctrler = 0; ctrler < kCountCtrlNumber; ctrler++) { if (midiMapping->getMidiControllerAssignment (0, channel, ctrler, paramID) == kResultTrue) { newMap.insert ( std::make_pair (channelAndCtrlNumber (channel, ctrler), paramID)); } } } } return newMap; } //------------------------------------------------------------------------ tresult VST3Plugin::scheduleEventFromUI (Event& event) { if (event.type == Event::kNoteOnEvent) event.noteOn.noteId = lastNodeID++; return uiScheduledEvents.push (event) ? kResultTrue : kResultFalse; } //------------------------------------------------------------------------ NSData* VST3Plugin::getProcessorState () { if (processor) { NSMutableData* data = [NSMutableData new]; NSMutableDataIBStream state (data); FUnknownPtr comp (processor); if (comp->getState (&state) == kResultTrue) { return data; } } return nil; } //------------------------------------------------------------------------ bool VST3Plugin::setProcessorState (NSData* data) { if (editController && processor) { NSDataIBStream stream (data); FUnknownPtr comp (processor); if (comp->setState (&stream) == kResultTrue) { stream.seek (0, IBStream::kIBSeekSet); editController->setComponentState (&stream); return true; } } return false; } //------------------------------------------------------------------------ NSData* VST3Plugin::getControllerState () { if (editController) { NSMutableData* data = [NSMutableData new]; NSMutableDataIBStream state (data); if (editController->getState (&state) == kResultTrue) { return data; } } return nil; } //------------------------------------------------------------------------ bool VST3Plugin::setControllerState (NSData* data) { if (editController) { NSDataIBStream stream (data); if (editController->setState (&stream) == kResultTrue) { return true; } } return false; } //------------------------------------------------------------------------ void VST3Plugin::willStartAudio (AudioIO* audioIO) { noteIDPitchMap.clear (); lastNodeID.store (0); ProcessSetup setup; setup.processMode = kRealtime; setup.symbolicSampleSize = kSample32; setup.maxSamplesPerBlock = 4096; // TODO: setup.sampleRate = audioIO->getSampleRate (); processor->setupProcessing (setup); SpeakerArrangement inputs[1]; SpeakerArrangement outputs[1]; inputs[0] = SpeakerArr::kStereo; outputs[0] = SpeakerArr::kStereo; processor->setBusArrangements (inputs, 1, outputs, 1); FUnknownPtr comp (processor); comp->setActive (true); processData.prepare (*comp, setup.maxSamplesPerBlock, setup.symbolicSampleSize); FUnknownPtr iaaConnectionNotification (editController); if (iaaConnectionNotification) { iaaConnectionNotification->onInterAppAudioConnectionStateChange ( audioIO->getInterAppAudioConnected () ? true : false); } timer = Timer::create (this, 16); } //------------------------------------------------------------------------ void VST3Plugin::didStopAudio (AudioIO* audioIO) { processor->setProcessing (false); processing = false; FUnknownPtr comp (processor); comp->setActive (false); timer->release (); timer = nullptr; } //------------------------------------------------------------------------ void VST3Plugin::onMIDIEvent (UInt32 inStatus, UInt32 data1, UInt32 data2, UInt32 sampleOffset, bool withinRealtimeThread) { Event e = {}; e.flags = Event::kIsLive; uint16 status = inStatus & 0xF0; uint16 channel = inStatus & 0x0F; if (status == 0x90 && data2 != 0) // note on { auto noteID = noteIDPitchMap.find ((channel << 8) + data1); if (noteID != noteIDPitchMap.end ()) { // for now, we just turn off the old note on Event e2 = {}; e2.type = Event::kNoteOffEvent; e2.noteOff.noteId = noteID->second; e2.noteOff.channel = channel; e2.noteOff.pitch = data1; e2.noteOff.velocity = (float)data2 / 128.f; e2.sampleOffset = 0; inputEvents.addEvent (e2); noteIDPitchMap.erase (noteID); } e.type = Event::kNoteOnEvent; e.noteOn.channel = channel; e.noteOn.pitch = data1; e.noteOn.velocity = (float)data2 / 128.f; e.noteOn.length = -1; e.sampleOffset = sampleOffset; if (withinRealtimeThread) { e.noteOn.noteId = lastNodeID++; inputEvents.addEvent (e); noteIDPitchMap.insert (std::make_pair ((channel << 8) + data1, e.noteOn.noteId)); } else { scheduleEventFromUI (e); } } else if (status == 0x80 || (status == 0x90 && data2 == 0)) // note off { auto noteID = noteIDPitchMap.find ((channel << 8) + data1); if (noteID != noteIDPitchMap.end ()) { e.type = Event::kNoteOffEvent; e.noteOff.noteId = noteID->second; e.noteOff.channel = channel; e.noteOff.pitch = data1; e.noteOff.velocity = (float)data2 / 128.f; e.sampleOffset = sampleOffset; if (withinRealtimeThread) { inputEvents.addEvent (e); noteIDPitchMap.erase (noteID); } else { scheduleEventFromUI (e); } } else { NSLog (@"NoteID not found:%d", (unsigned int)data1); } } else if (status == 0xb0 && data1 < kAfterTouch) // controller { auto it = midiControllerToParamIDMap.find (channelAndCtrlNumber (channel, data1)); if (it != midiControllerToParamIDMap.end ()) { ParamValue value = (ParamValue)data2 / 128.; if (withinRealtimeThread) { int32 index; IParamValueQueue* queue = inputParamChanges.addParameterData (it->second, index); if (queue) { queue->addPoint (sampleOffset, value, index); } } else { inputParamChangeTransfer.addChange (it->second, value, sampleOffset); } } } else if (status == 0xe0) // pitch bend { auto it = midiControllerToParamIDMap.find (channelAndCtrlNumber (channel, kPitchBend)); if (it != midiControllerToParamIDMap.end ()) { uint16 _14bit; _14bit = (uint16)data2; _14bit <<= 7; _14bit |= (uint16)data1; ParamValue value = (double)_14bit / (double)0x3fff; if (withinRealtimeThread) { int32 index; IParamValueQueue* queue = inputParamChanges.addParameterData (it->second, index); if (queue) { queue->addPoint (sampleOffset, value, index); } } else { inputParamChangeTransfer.addChange (it->second, value, sampleOffset); } } } else if (status == 0xd0) // aftertouch { auto it = midiControllerToParamIDMap.find (channelAndCtrlNumber (channel, kAfterTouch)); if (it != midiControllerToParamIDMap.end ()) { ParamValue value = (ParamValue)data1 / 128.; if (withinRealtimeThread) { int32 index; IParamValueQueue* queue = inputParamChanges.addParameterData (it->second, index); if (queue) { queue->addPoint (sampleOffset, value, index); } } else { inputParamChangeTransfer.addChange (it->second, value, sampleOffset); } } } } //------------------------------------------------------------------------ void VST3Plugin::process (const AudioTimeStamp* timeStamp, UInt32 busNumber, UInt32 numFrames, AudioBufferList* ioData, bool& outputIsSilence, AudioIO* audioIO) { if (processing == false) { processor->setProcessing (true); processing = true; } updateProcessContext (audioIO); if (timeStamp) processContext.systemTime = timeStamp->mHostTime; // TODO: silence state update for (UInt32 i = 0; i < ioData->mNumberBuffers; i++) { processData.setChannelBuffer (kInput, 0, i, (float*)ioData->mBuffers[i].mData); processData.setChannelBuffer (kOutput, 0, i, (float*)ioData->mBuffers[i].mData); } Event e; while (uiScheduledEvents.pop (e)) { inputEvents.addEvent (e); if (e.type == Event::kNoteOnEvent) { auto noteID = noteIDPitchMap.find ((e.noteOn.channel << 8) + e.noteOn.pitch); if (noteID == noteIDPitchMap.end ()) noteIDPitchMap.insert ( std::make_pair ((e.noteOn.channel << 8) + e.noteOn.pitch, e.noteOn.noteId)); } } processData.numSamples = numFrames; inputParamChangeTransfer.transferChangesTo (inputParamChanges); if (processor->process (processData) == kResultTrue) { inputParamChanges.clearQueue (); outputParamChangeTransfer.transferChangesFrom (outputParamChanges); outputParamChanges.clearQueue (); inputEvents.clear (); } } //------------------------------------------------------------------------ void VST3Plugin::updateProcessContext (AudioIO* audioIO) { memset (&processContext, 0, sizeof (ProcessContext)); processContext.sampleRate = audioIO->getSampleRate (); Float64 beat = 0., tempo = 0.; if (audioIO->getBeatAndTempo (beat, tempo)) { processContext.state |= ProcessContext::kTempoValid | ProcessContext::kProjectTimeMusicValid; processContext.tempo = tempo; processContext.projectTimeMusic = beat; } else { processContext.state |= ProcessContext::kTempoValid; processContext.tempo = 120.; } UInt32 deltaSampleOffsetToNextBeat = 0; Float32 timeSigNumerator = 0; UInt32 timeSigDenominator = 0; Float64 currentMeasureDownBeat = 0; if (audioIO->getMusicalTimeLocation (deltaSampleOffsetToNextBeat, timeSigNumerator, timeSigDenominator, currentMeasureDownBeat)) { processContext.state |= ProcessContext::kTimeSigValid | ProcessContext::kBarPositionValid | ProcessContext::kClockValid; processContext.timeSigNumerator = timeSigNumerator; processContext.timeSigDenominator = timeSigDenominator; processContext.samplesToNextClock = deltaSampleOffsetToNextBeat; processContext.barPositionMusic = currentMeasureDownBeat; } Boolean isPlaying; Boolean isRecording; Boolean transportStateChanged; Float64 currentSampleInTimeLine; Boolean isCycling; Float64 cycleStartBeat; Float64 cycleEndBeat; if (audioIO->getTransportState (isPlaying, isRecording, transportStateChanged, currentSampleInTimeLine, isCycling, cycleStartBeat, cycleEndBeat)) { processContext.state |= ProcessContext::kCycleValid; processContext.cycleStartMusic = cycleStartBeat; processContext.cycleEndMusic = cycleEndBeat; processContext.projectTimeSamples = currentSampleInTimeLine; if (isPlaying) processContext.state |= ProcessContext::kPlaying; if (isCycling) processContext.state |= ProcessContext::kCycleActive; if (isRecording) processContext.state |= ProcessContext::kRecording; } } //------------------------------------------------------------------------ tresult PLUGIN_API VST3Plugin::beginEdit (ParamID id) { return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API VST3Plugin::performEdit (ParamID id, ParamValue valueNormalized) { inputParamChangeTransfer.addChange (id, valueNormalized, 0); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API VST3Plugin::endEdit (ParamID id) { return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API VST3Plugin::restartComponent (int32 flags) { tresult result = kNotImplemented; return result; } //------------------------------------------------------------------------ void VST3Plugin::onTimer (Timer* timer) { ParamID paramID; ParamValue paramValue; int32 sampleOffset; while (outputParamChangeTransfer.getNextChange (paramID, paramValue, sampleOffset)) { editController->setParamNormalized (paramID, paramValue); } UpdateHandler::instance ()->triggerDeferedUpdates (); } } } } vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/VSTInterAppAudioAppDelegateBase.h000066400000000000000000000064621461511344300275010ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/VSTInterAppAudioAppDelegateBase.h // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import //------------------------------------------------------------------------ /** Base UIApplicationDelegate class. * This class provides the base handling of the audio engine, plug-in and plug-in editor\n * You should subclass it for customization\n * Make sure to call the methods of this class if you override one in your subclass ! */ //------------------------------------------------------------------------ @interface VSTInterAppAudioAppDelegateBase : UIResponder //------------------------------------------------------------------------ @property (strong, nonatomic) UIWindow* window; - (BOOL)application:(UIApplication*)application willFinishLaunchingWithOptions:(NSDictionary*)launchOptions; - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions; - (BOOL)application:(UIApplication*)application shouldSaveApplicationState:(NSCoder*)coder; - (BOOL)application:(UIApplication*)application shouldRestoreApplicationState:(NSCoder*)coder; - (void)applicationDidBecomeActive:(UIApplication*)application; - (void)applicationWillResignActive:(UIApplication*)application; @end vst3sdk-3.7.10.14+~4.13.3/source/vst/interappaudio/VSTInterAppAudioAppDelegateBase.mm000066400000000000000000000166751461511344300276720ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/interappaudio/VSTInterAppAudioAppDelegateBase.mm // Created by : Steinberg, 08/2013. // Description : VST 3 InterAppAudio // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #import "VSTInterAppAudioAppDelegateBase.h" #import "public.sdk/source/vst/interappaudio/AudioIO.h" #import "public.sdk/source/vst/interappaudio/HostApp.h" #import "public.sdk/source/vst/interappaudio/MidiIO.h" #import "public.sdk/source/vst/interappaudio/VST3Editor.h" #import "public.sdk/source/vst/interappaudio/VST3Plugin.h" using namespace Steinberg::Vst::InterAppAudio; //------------------------------------------------------------------------ static OSType fourCharCodeToOSType (NSString* inCode) { OSType rval = 0; NSData* data = [inCode dataUsingEncoding:NSMacOSRomanStringEncoding]; [data getBytes:&rval length:sizeof (rval)]; HTONL (rval); return rval; } //------------------------------------------------------------------------ @interface VSTInterAppAudioAppDelegateBase () //------------------------------------------------------------------------ { VST3Plugin plugin; VST3Editor editor; BOOL audioIOInitialized; } @end //------------------------------------------------------------------------ @implementation VSTInterAppAudioAppDelegateBase //------------------------------------------------------------------------ //------------------------------------------------------------------------ - (BOOL)initAudioIO { id auArray = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"AudioComponents"]; if (auArray) { id desc = [auArray objectAtIndex:0]; if (desc) { NSString* typeStr = [desc objectForKey:@"type"]; NSString* subtypeStr = [desc objectForKey:@"subtype"]; NSString* manufacturerStr = [desc objectForKey:@"manufacturer"]; NSString* nameStr = [desc objectForKey:@"name"]; if (typeStr && subtypeStr && manufacturerStr && nameStr) { OSType type = fourCharCodeToOSType (typeStr); OSType subtype = fourCharCodeToOSType (subtypeStr); OSType manufacturer = fourCharCodeToOSType (manufacturerStr); AudioIO* audioIO = AudioIO::instance (); if (audioIO->init (type, subtype, manufacturer, (__bridge CFStringRef)nameStr) == Steinberg::kResultTrue) { if (plugin.init ()) { InterAppAudioHostApp::instance ()->setPlugin (&plugin); audioIO->addProcessor (&plugin); audioIOInitialized = YES; return YES; } } } } } return NO; } //------------------------------------------------------------------------ - (BOOL)createUI { if (audioIOInitialized) { [UIApplication sharedApplication].statusBarHidden = YES; self.window = [UIWindow new]; self.window.backgroundColor = [UIColor redColor]; CGRect screenSize = self.window.bounds; if (editor.init (screenSize)) { self.window.rootViewController = editor.getViewController (); [self.window makeKeyAndVisible]; if (editor.attach (plugin.getEditController ()) == false) { return NO; } } return YES; } return NO; } //------------------------------------------------------------------------ - (void)savePluginState:(NSCoder*)coder { NSData* processorState = plugin.getProcessorState (); NSData* controllerState = plugin.getControllerState (); if (processorState) [coder encodeObject:processorState forKey:@"VST3ProcessorState"]; if (controllerState) [coder encodeObject:controllerState forKey:@"VST3ControllerState"]; } //------------------------------------------------------------------------ - (void)restorePluginState:(NSCoder*)coder { NSData* processorState = [coder decodeObjectForKey:@"VST3ProcessorState"]; if (processorState) { plugin.setProcessorState (processorState); } NSData* controllerState = [coder decodeObjectForKey:@"VST3ControllerState"]; if (controllerState) { plugin.setControllerState (controllerState); } } //------------------------------------------------------------------------ // UIApplicationDelegate methods //------------------------------------------------------------------------ - (BOOL)application:(UIApplication*)application willFinishLaunchingWithOptions:(NSDictionary*)launchOptions { return [self initAudioIO]; } //------------------------------------------------------------------------ - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { BOOL result = [self createUI]; if (result) { AudioIO::instance ()->start (); } return result; } //------------------------------------------------------------------------ - (BOOL)application:(UIApplication*)application shouldSaveApplicationState:(NSCoder*)coder { [self savePluginState:coder]; [coder encodeBool:MidiIO::instance ().isEnabled () forKey:@"MIDI Enabled"]; return YES; } //------------------------------------------------------------------------ - (BOOL)application:(UIApplication*)application shouldRestoreApplicationState:(NSCoder*)coder { [self restorePluginState:coder]; BOOL midiEnabled = [coder decodeBoolForKey:@"MIDI Enabled"]; MidiIO::instance ().setEnabled (midiEnabled); return YES; } //------------------------------------------------------------------------ - (void)applicationDidBecomeActive:(UIApplication*)application { AudioIO* audioIO = AudioIO::instance (); audioIO->start (); } //------------------------------------------------------------------------ - (void)applicationWillResignActive:(UIApplication*)application { AudioIO* audioIO = AudioIO::instance (); if (audioIO->getInterAppAudioConnected () == false && MidiIO::instance ().isEnabled () == false) { audioIO->stop (); } } @end vst3sdk-3.7.10.14+~4.13.3/source/vst/moduleinfo/000077500000000000000000000000001461511344300206255ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/moduleinfo/ReadMe.md000066400000000000000000000025411461511344300223060ustar00rootroot00000000000000 # ModuleInfoLib This is a c++17 library to parse and create the Steinberg moduleinfo.json files. ## Parsing To parse a moduleinfo.json file you need to include the following files to your project: * moduleinfoparser.cpp * moduleinfoparser.h * moduleinfo.h * json.h * jsoncxx.h And add a header search path to the root folder of the VST SDK. Now to parse a moduleinfo.json file in code you need to read the moduleinfo.json into a memory buffer and call ``` c++ auto moduleInfo = ModuleInfoLib::parseCompatibilityJson (std::string_view (buffer, bufferSize), &std::cerr); ``` Afterwards if parsing succeeded the moduleInfo optional has a value containing the ModuleInfo. ## Creating The VST3 SDK contains the moduleinfotool utility that can create moduleinfo.json files from VST3 modules. To add this capability to your own project you need to link to the sdk_hosting library from the SDK and include the following files to your project: * moduleinfocreator.cpp * moduleinfocreator.h * moduleinfo.h Additionally you need to add the module platform implementation from the hosting directory (module_win32.cpp, module_mac.mm or module_linux.cpp). Now you can use the two methods in moduleinfocreator.h to create a moduleinfo.json file: ``` c++ auto moduleInfo = ModuleInfoLib::createModuleInfo (module, false); ModuleInfoLib::outputJson (moduleInfo, std::cout); ``` vst3sdk-3.7.10.14+~4.13.3/source/vst/moduleinfo/json.h000066400000000000000000003046471461511344300217650ustar00rootroot00000000000000/* The latest version of this library is available on GitHub; https://github.com/sheredom/json.h. */ /* This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to . */ #ifndef SHEREDOM_JSON_H_INCLUDED #define SHEREDOM_JSON_H_INCLUDED #if defined(_MSC_VER) #pragma warning(push) /* disable warning: no function prototype given: converting '()' to '(void)' */ #pragma warning(disable : 4255) /* disable warning: '__cplusplus' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif' */ #pragma warning(disable : 4668) /* disable warning: 'bytes padding added after construct' */ #pragma warning(disable : 4820) #endif #include #include #if defined(_MSC_VER) || defined(__MINGW32__) #define json_weak __inline #elif defined(__clang__) || defined(__GNUC__) #define json_weak __attribute__((weak)) #else #error Non clang, non gcc, non MSVC compiler found! #endif #ifdef __cplusplus extern "C" { #endif struct json_value_s; struct json_parse_result_s; enum json_parse_flags_e { json_parse_flags_default = 0, /* allow trailing commas in objects and arrays. For example, both [true,] and {"a" : null,} would be allowed with this option on. */ json_parse_flags_allow_trailing_comma = 0x1, /* allow unquoted keys for objects. For example, {a : null} would be allowed with this option on. */ json_parse_flags_allow_unquoted_keys = 0x2, /* allow a global unbracketed object. For example, a : null, b : true, c : {} would be allowed with this option on. */ json_parse_flags_allow_global_object = 0x4, /* allow objects to use '=' instead of ':' between key/value pairs. For example, a = null, b : true would be allowed with this option on. */ json_parse_flags_allow_equals_in_object = 0x8, /* allow that objects don't have to have comma separators between key/value pairs. */ json_parse_flags_allow_no_commas = 0x10, /* allow c-style comments (either variants) to be ignored in the input JSON file. */ json_parse_flags_allow_c_style_comments = 0x20, /* deprecated flag, unused. */ json_parse_flags_deprecated = 0x40, /* record location information for each value. */ json_parse_flags_allow_location_information = 0x80, /* allow strings to be 'single quoted'. */ json_parse_flags_allow_single_quoted_strings = 0x100, /* allow numbers to be hexadecimal. */ json_parse_flags_allow_hexadecimal_numbers = 0x200, /* allow numbers like +123 to be parsed. */ json_parse_flags_allow_leading_plus_sign = 0x400, /* allow numbers like .0123 or 123. to be parsed. */ json_parse_flags_allow_leading_or_trailing_decimal_point = 0x800, /* allow Infinity, -Infinity, NaN, -NaN. */ json_parse_flags_allow_inf_and_nan = 0x1000, /* allow multi line string values. */ json_parse_flags_allow_multi_line_strings = 0x2000, /* allow simplified JSON to be parsed. Simplified JSON is an enabling of a set of other parsing options. */ json_parse_flags_allow_simplified_json = (json_parse_flags_allow_trailing_comma | json_parse_flags_allow_unquoted_keys | json_parse_flags_allow_global_object | json_parse_flags_allow_equals_in_object | json_parse_flags_allow_no_commas), /* allow JSON5 to be parsed. JSON5 is an enabling of a set of other parsing options. */ json_parse_flags_allow_json5 = (json_parse_flags_allow_trailing_comma | json_parse_flags_allow_unquoted_keys | json_parse_flags_allow_c_style_comments | json_parse_flags_allow_single_quoted_strings | json_parse_flags_allow_hexadecimal_numbers | json_parse_flags_allow_leading_plus_sign | json_parse_flags_allow_leading_or_trailing_decimal_point | json_parse_flags_allow_inf_and_nan | json_parse_flags_allow_multi_line_strings) }; /* Parse a JSON text file, returning a pointer to the root of the JSON * structure. json_parse performs 1 call to malloc for the entire encoding. * Returns 0 if an error occurred (malformed JSON input, or malloc failed). */ json_weak struct json_value_s *json_parse(const void *src, size_t src_size); /* Parse a JSON text file, returning a pointer to the root of the JSON * structure. json_parse performs 1 call to alloc_func_ptr for the entire * encoding. Returns 0 if an error occurred (malformed JSON input, or malloc * failed). If an error occurred, the result struct (if not NULL) will explain * the type of error, and the location in the input it occurred. If * alloc_func_ptr is null then malloc is used. */ json_weak struct json_value_s * json_parse_ex(const void *src, size_t src_size, size_t flags_bitset, void *(*alloc_func_ptr)(void *, size_t), void *user_data, struct json_parse_result_s *result); /* Extracts a value and all the data that makes it up into a newly created * value. json_extract_value performs 1 call to malloc for the entire encoding. */ json_weak struct json_value_s * json_extract_value(const struct json_value_s *value); /* Extracts a value and all the data that makes it up into a newly created * value. json_extract_value performs 1 call to alloc_func_ptr for the entire * encoding. If alloc_func_ptr is null then malloc is used. */ json_weak struct json_value_s * json_extract_value_ex(const struct json_value_s *value, void *(*alloc_func_ptr)(void *, size_t), void *user_data); /* Write out a minified JSON utf-8 string. This string is an encoding of the * minimal string characters required to still encode the same data. * json_write_minified performs 1 call to malloc for the entire encoding. Return * 0 if an error occurred (malformed JSON input, or malloc failed). The out_size * parameter is optional as the utf-8 string is null terminated. */ json_weak void *json_write_minified(const struct json_value_s *value, size_t *out_size); /* Write out a pretty JSON utf-8 string. This string is encoded such that the * resultant JSON is pretty in that it is easily human readable. The indent and * newline parameters allow a user to specify what kind of indentation and * newline they want (two spaces / three spaces / tabs? \r, \n, \r\n ?). Both * indent and newline can be NULL, indent defaults to two spaces (" "), and * newline defaults to linux newlines ('\n' as the newline character). * json_write_pretty performs 1 call to malloc for the entire encoding. Return 0 * if an error occurred (malformed JSON input, or malloc failed). The out_size * parameter is optional as the utf-8 string is null terminated. */ json_weak void *json_write_pretty(const struct json_value_s *value, const char *indent, const char *newline, size_t *out_size); /* Reinterpret a JSON value as a string. Returns null is the value was not a * string. */ json_weak struct json_string_s * json_value_as_string(struct json_value_s *const value); /* Reinterpret a JSON value as a number. Returns null is the value was not a * number. */ json_weak struct json_number_s * json_value_as_number(struct json_value_s *const value); /* Reinterpret a JSON value as an object. Returns null is the value was not an * object. */ json_weak struct json_object_s * json_value_as_object(struct json_value_s *const value); /* Reinterpret a JSON value as an array. Returns null is the value was not an * array. */ json_weak struct json_array_s * json_value_as_array(struct json_value_s *const value); /* Whether the value is true. */ json_weak int json_value_is_true(const struct json_value_s *const value); /* Whether the value is false. */ json_weak int json_value_is_false(const struct json_value_s *const value); /* Whether the value is null. */ json_weak int json_value_is_null(const struct json_value_s *const value); /* The various types JSON values can be. Used to identify what a value is. */ enum json_type_e { json_type_string, json_type_number, json_type_object, json_type_array, json_type_true, json_type_false, json_type_null }; /* A JSON string value. */ struct json_string_s { /* utf-8 string */ const char *string; /* The size (in bytes) of the string */ size_t string_size; }; /* A JSON string value (extended). */ struct json_string_ex_s { /* The JSON string this extends. */ struct json_string_s string; /* The character offset for the value in the JSON input. */ size_t offset; /* The line number for the value in the JSON input. */ size_t line_no; /* The row number for the value in the JSON input, in bytes. */ size_t row_no; }; /* A JSON number value. */ struct json_number_s { /* ASCII string containing representation of the number. */ const char *number; /* the size (in bytes) of the number. */ size_t number_size; }; /* an element of a JSON object. */ struct json_object_element_s { /* the name of this element. */ struct json_string_s *name; /* the value of this element. */ struct json_value_s *value; /* the next object element (can be NULL if the last element in the object). */ struct json_object_element_s *next; }; /* a JSON object value. */ struct json_object_s { /* a linked list of the elements in the object. */ struct json_object_element_s *start; /* the number of elements in the object. */ size_t length; }; /* an element of a JSON array. */ struct json_array_element_s { /* the value of this element. */ struct json_value_s *value; /* the next array element (can be NULL if the last element in the array). */ struct json_array_element_s *next; }; /* a JSON array value. */ struct json_array_s { /* a linked list of the elements in the array. */ struct json_array_element_s *start; /* the number of elements in the array. */ size_t length; }; /* a JSON value. */ struct json_value_s { /* a pointer to either a json_string_s, json_number_s, json_object_s, or. */ /* json_array_s. Should be cast to the appropriate struct type based on what. */ /* the type of this value is. */ void *payload; /* must be one of json_type_e. If type is json_type_true, json_type_false, or. */ /* json_type_null, payload will be NULL. */ size_t type; }; /* a JSON value (extended). */ struct json_value_ex_s { /* the JSON value this extends. */ struct json_value_s value; /* the character offset for the value in the JSON input. */ size_t offset; /* the line number for the value in the JSON input. */ size_t line_no; /* the row number for the value in the JSON input, in bytes. */ size_t row_no; }; /* a parsing error code. */ enum json_parse_error_e { /* no error occurred (huzzah!). */ json_parse_error_none = 0, /* expected either a comma or a closing '}' or ']' to close an object or. */ /* array! */ json_parse_error_expected_comma_or_closing_bracket, /* colon separating name/value pair was missing! */ json_parse_error_expected_colon, /* expected string to begin with '"'! */ json_parse_error_expected_opening_quote, /* invalid escaped sequence in string! */ json_parse_error_invalid_string_escape_sequence, /* invalid number format! */ json_parse_error_invalid_number_format, /* invalid value! */ json_parse_error_invalid_value, /* reached end of buffer before object/array was complete! */ json_parse_error_premature_end_of_buffer, /* string was malformed! */ json_parse_error_invalid_string, /* a call to malloc, or a user provider allocator, failed. */ json_parse_error_allocator_failed, /* the JSON input had unexpected trailing characters that weren't part of the. */ /* JSON value. */ json_parse_error_unexpected_trailing_characters, /* catch-all error for everything else that exploded (real bad chi!). */ json_parse_error_unknown }; /* error report from json_parse_ex(). */ struct json_parse_result_s { /* the error code (one of json_parse_error_e). */ size_t error; /* the character offset for the error in the JSON input. */ size_t error_offset; /* the line number for the error in the JSON input. */ size_t error_line_no; /* the row number for the error, in bytes. */ size_t error_row_no; }; #ifdef __cplusplus } /* extern "C". */ #endif #include #if defined(_MSC_VER) #pragma warning(pop) #endif #if defined(_MSC_VER) && (_MSC_VER < 1920) #define json_uintmax_t unsigned __int64 #else #include #define json_uintmax_t uintmax_t #endif #if defined(_MSC_VER) #define json_strtoumax _strtoui64 #else #define json_strtoumax strtoumax #endif #if defined(__cplusplus) && (__cplusplus >= 201103L) #define json_null nullptr #else #define json_null 0 #endif #if defined(__clang__) #pragma clang diagnostic push /* we do one big allocation via malloc, then cast aligned slices of this for. */ /* our structures - we don't have a way to tell the compiler we know what we. */ /* are doing, so disable the warning instead! */ #pragma clang diagnostic ignored "-Wcast-align" /* We use C style casts everywhere. */ #pragma clang diagnostic ignored "-Wold-style-cast" /* We need long long for strtoull. */ #pragma clang diagnostic ignored "-Wc++11-long-long" /* Who cares if nullptr doesn't work with C++98, we don't use it there! */ #pragma clang diagnostic ignored "-Wc++98-compat" #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" #elif defined(_MSC_VER) #pragma warning(push) /* disable 'function selected for inline expansion' warning. */ #pragma warning(disable : 4711) /* disable '#pragma warning: there is no warning number' warning. */ #pragma warning(disable : 4619) /* disable 'warning number not a valid compiler warning' warning. */ #pragma warning(disable : 4616) /* disable 'Compiler will insert Spectre mitigation for memory load if * /Qspectre. */ /* switch specified' warning. */ #pragma warning(disable : 5045) #endif struct json_parse_state_s { const char *src; size_t size; size_t offset; size_t flags_bitset; char *data; char *dom; size_t dom_size; size_t data_size; size_t line_no; /* line counter for error reporting. */ size_t line_offset; /* (offset-line_offset) is the character number (in bytes). */ size_t error; }; json_weak int json_hexadecimal_digit(const char c); int json_hexadecimal_digit(const char c) { if ('0' <= c && c <= '9') { return c - '0'; } if ('a' <= c && c <= 'f') { return c - 'a' + 10; } if ('A' <= c && c <= 'F') { return c - 'A' + 10; } return -1; } json_weak int json_hexadecimal_value(const char *c, const unsigned long size, unsigned long *result); int json_hexadecimal_value(const char *c, const unsigned long size, unsigned long *result) { const char *p; int digit; if (size > sizeof(unsigned long) * 2) { return 0; } *result = 0; for (p = c; (unsigned long)(p - c) < size; ++p) { *result <<= 4; digit = json_hexadecimal_digit(*p); if (digit < 0 || digit > 15) { return 0; } *result |= (unsigned char)digit; } return 1; } json_weak int json_skip_whitespace(struct json_parse_state_s *state); int json_skip_whitespace(struct json_parse_state_s *state) { size_t offset = state->offset; const size_t size = state->size; const char *const src = state->src; /* the only valid whitespace according to ECMA-404 is ' ', '\n', '\r' and * '\t'. */ switch (src[offset]) { default: return 0; case ' ': case '\r': case '\t': case '\n': break; } do { switch (src[offset]) { default: /* Update offset. */ state->offset = offset; return 1; case ' ': case '\r': case '\t': break; case '\n': state->line_no++; state->line_offset = offset; break; } offset++; } while (offset < size); /* Update offset. */ state->offset = offset; return 1; } json_weak int json_skip_c_style_comments(struct json_parse_state_s *state); int json_skip_c_style_comments(struct json_parse_state_s *state) { /* do we have a comment?. */ if ('/' == state->src[state->offset]) { /* skip '/'. */ state->offset++; if ('/' == state->src[state->offset]) { /* we had a comment of the form //. */ /* skip second '/'. */ state->offset++; while (state->offset < state->size) { switch (state->src[state->offset]) { default: /* skip the character in the comment. */ state->offset++; break; case '\n': /* if we have a newline, our comment has ended! Skip the newline. */ state->offset++; /* we entered a newline, so move our line info forward. */ state->line_no++; state->line_offset = state->offset; return 1; } } /* we reached the end of the JSON file! */ return 1; } else if ('*' == state->src[state->offset]) { /* we had a comment in the C-style long form. */ /* skip '*'. */ state->offset++; while (state->offset + 1 < state->size) { if (('*' == state->src[state->offset]) && ('/' == state->src[state->offset + 1])) { /* we reached the end of our comment! */ state->offset += 2; return 1; } else if ('\n' == state->src[state->offset]) { /* we entered a newline, so move our line info forward. */ state->line_no++; state->line_offset = state->offset; } /* skip character within comment. */ state->offset++; } /* Comment wasn't ended correctly which is a failure. */ return 1; } } /* we didn't have any comment, which is ok too! */ return 0; } json_weak int json_skip_all_skippables(struct json_parse_state_s *state); int json_skip_all_skippables(struct json_parse_state_s *state) { /* skip all whitespace and other skippables until there are none left. note * that the previous version suffered from read past errors should. the * stream end on json_skip_c_style_comments eg. '{"a" ' with comments flag. */ int did_consume = 0; const size_t size = state->size; if (json_parse_flags_allow_c_style_comments & state->flags_bitset) { do { if (state->offset == size) { state->error = json_parse_error_premature_end_of_buffer; return 1; } did_consume = json_skip_whitespace(state); /* This should really be checked on access, not in front of every call. */ if (state->offset == size) { state->error = json_parse_error_premature_end_of_buffer; return 1; } did_consume |= json_skip_c_style_comments(state); } while (0 != did_consume); } else { do { if (state->offset == size) { state->error = json_parse_error_premature_end_of_buffer; return 1; } did_consume = json_skip_whitespace(state); } while (0 != did_consume); } if (state->offset == size) { state->error = json_parse_error_premature_end_of_buffer; return 1; } return 0; } json_weak int json_get_value_size(struct json_parse_state_s *state, int is_global_object); json_weak int json_get_string_size(struct json_parse_state_s *state, size_t is_key); int json_get_string_size(struct json_parse_state_s *state, size_t is_key) { size_t offset = state->offset; const size_t size = state->size; size_t data_size = 0; const char *const src = state->src; const int is_single_quote = '\'' == src[offset]; const char quote_to_use = is_single_quote ? '\'' : '"'; const size_t flags_bitset = state->flags_bitset; unsigned long codepoint; unsigned long high_surrogate = 0; if ((json_parse_flags_allow_location_information & flags_bitset) != 0 && is_key != 0) { state->dom_size += sizeof(struct json_string_ex_s); } else { state->dom_size += sizeof(struct json_string_s); } if ('"' != src[offset]) { /* if we are allowed single quoted strings check for that too. */ if (!((json_parse_flags_allow_single_quoted_strings & flags_bitset) && is_single_quote)) { state->error = json_parse_error_expected_opening_quote; state->offset = offset; return 1; } } /* skip leading '"' or '\''. */ offset++; while ((offset < size) && (quote_to_use != src[offset])) { /* add space for the character. */ data_size++; switch (src[offset]) { default: break; case '\0': case '\t': state->error = json_parse_error_invalid_string; state->offset = offset; return 1; } if ('\\' == src[offset]) { /* skip reverse solidus character. */ offset++; if (offset == size) { state->error = json_parse_error_premature_end_of_buffer; state->offset = offset; return 1; } switch (src[offset]) { default: state->error = json_parse_error_invalid_string_escape_sequence; state->offset = offset; return 1; case '"': case '\\': case '/': case 'b': case 'f': case 'n': case 'r': case 't': /* all valid characters! */ offset++; break; case 'u': if (!(offset + 5 < size)) { /* invalid escaped unicode sequence! */ state->error = json_parse_error_invalid_string_escape_sequence; state->offset = offset; return 1; } codepoint = 0; if (!json_hexadecimal_value(&src[offset + 1], 4, &codepoint)) { /* escaped unicode sequences must contain 4 hexadecimal digits! */ state->error = json_parse_error_invalid_string_escape_sequence; state->offset = offset; return 1; } /* Valid sequence! * see: https://en.wikipedia.org/wiki/UTF-8#Invalid_code_points. * 1 7 U + 0000 U + 007F 0xxxxxxx. * 2 11 U + 0080 U + 07FF 110xxxxx * 10xxxxxx. * 3 16 U + 0800 U + FFFF 1110xxxx * 10xxxxxx 10xxxxxx. * 4 21 U + 10000 U + 10FFFF 11110xxx * 10xxxxxx 10xxxxxx 10xxxxxx. * Note: the high and low surrogate halves used by UTF-16 (U+D800 * through U+DFFF) and code points not encodable by UTF-16 (those after * U+10FFFF) are not legal Unicode values, and their UTF-8 encoding must * be treated as an invalid byte sequence. */ if (high_surrogate != 0) { /* we previously read the high half of the \uxxxx\uxxxx pair, so now * we expect the low half. */ if (codepoint >= 0xdc00 && codepoint <= 0xdfff) { /* low surrogate range. */ data_size += 3; high_surrogate = 0; } else { state->error = json_parse_error_invalid_string_escape_sequence; state->offset = offset; return 1; } } else if (codepoint <= 0x7f) { data_size += 0; } else if (codepoint <= 0x7ff) { data_size += 1; } else if (codepoint >= 0xd800 && codepoint <= 0xdbff) { /* high surrogate range. */ /* The codepoint is the first half of a "utf-16 surrogate pair". so we * need the other half for it to be valid: \uHHHH\uLLLL. */ if (offset + 11 > size || '\\' != src[offset + 5] || 'u' != src[offset + 6]) { state->error = json_parse_error_invalid_string_escape_sequence; state->offset = offset; return 1; } high_surrogate = codepoint; } else if (codepoint >= 0xd800 && codepoint <= 0xdfff) { /* low surrogate range. */ /* we did not read the other half before. */ state->error = json_parse_error_invalid_string_escape_sequence; state->offset = offset; return 1; } else { data_size += 2; } /* escaped codepoints after 0xffff are supported in json through utf-16 * surrogate pairs: \uD83D\uDD25 for U+1F525. */ offset += 5; break; } } else if (('\r' == src[offset]) || ('\n' == src[offset])) { if (!(json_parse_flags_allow_multi_line_strings & flags_bitset)) { /* invalid escaped unicode sequence! */ state->error = json_parse_error_invalid_string_escape_sequence; state->offset = offset; return 1; } offset++; } else { /* skip character (valid part of sequence). */ offset++; } } /* If the offset is equal to the size, we had a non-terminated string! */ if (offset == size) { state->error = json_parse_error_premature_end_of_buffer; state->offset = offset - 1; return 1; } /* skip trailing '"' or '\''. */ offset++; /* add enough space to store the string. */ state->data_size += data_size; /* one more byte for null terminator ending the string! */ state->data_size++; /* update offset. */ state->offset = offset; return 0; } json_weak int is_valid_unquoted_key_char(const char c); int is_valid_unquoted_key_char(const char c) { return (('0' <= c && c <= '9') || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('_' == c)); } json_weak int json_get_key_size(struct json_parse_state_s *state); int json_get_key_size(struct json_parse_state_s *state) { const size_t flags_bitset = state->flags_bitset; if (json_parse_flags_allow_unquoted_keys & flags_bitset) { size_t offset = state->offset; const size_t size = state->size; const char *const src = state->src; size_t data_size = state->data_size; /* if we are allowing unquoted keys, first grok for a quote... */ if ('"' == src[offset]) { /* ... if we got a comma, just parse the key as a string as normal. */ return json_get_string_size(state, 1); } else if ((json_parse_flags_allow_single_quoted_strings & flags_bitset) && ('\'' == src[offset])) { /* ... if we got a comma, just parse the key as a string as normal. */ return json_get_string_size(state, 1); } else { while ((offset < size) && is_valid_unquoted_key_char(src[offset])) { offset++; data_size++; } /* one more byte for null terminator ending the string! */ data_size++; if (json_parse_flags_allow_location_information & flags_bitset) { state->dom_size += sizeof(struct json_string_ex_s); } else { state->dom_size += sizeof(struct json_string_s); } /* update offset. */ state->offset = offset; /* update data_size. */ state->data_size = data_size; return 0; } } else { /* we are only allowed to have quoted keys, so just parse a string! */ return json_get_string_size(state, 1); } } json_weak int json_get_object_size(struct json_parse_state_s *state, int is_global_object); int json_get_object_size(struct json_parse_state_s *state, int is_global_object) { const size_t flags_bitset = state->flags_bitset; const char *const src = state->src; const size_t size = state->size; size_t elements = 0; int allow_comma = 0; int found_closing_brace = 0; if (is_global_object) { /* if we found an opening '{' of an object, we actually have a normal JSON * object at the root of the DOM... */ if (!json_skip_all_skippables(state) && '{' == state->src[state->offset]) { /* . and we don't actually have a global object after all! */ is_global_object = 0; } } if (!is_global_object) { if ('{' != src[state->offset]) { state->error = json_parse_error_unknown; return 1; } /* skip leading '{'. */ state->offset++; } state->dom_size += sizeof(struct json_object_s); if ((state->offset == size) && !is_global_object) { state->error = json_parse_error_premature_end_of_buffer; return 1; } do { if (!is_global_object) { if (json_skip_all_skippables(state)) { state->error = json_parse_error_premature_end_of_buffer; return 1; } if ('}' == src[state->offset]) { /* skip trailing '}'. */ state->offset++; found_closing_brace = 1; /* finished the object! */ break; } } else { /* we don't require brackets, so that means the object ends when the input * stream ends! */ if (json_skip_all_skippables(state)) { break; } } /* if we parsed at least once element previously, grok for a comma. */ if (allow_comma) { if (',' == src[state->offset]) { /* skip comma. */ state->offset++; allow_comma = 0; } else if (json_parse_flags_allow_no_commas & flags_bitset) { /* we don't require a comma, and we didn't find one, which is ok! */ allow_comma = 0; } else { /* otherwise we are required to have a comma, and we found none. */ state->error = json_parse_error_expected_comma_or_closing_bracket; return 1; } if (json_parse_flags_allow_trailing_comma & flags_bitset) { continue; } else { if (json_skip_all_skippables(state)) { state->error = json_parse_error_premature_end_of_buffer; return 1; } } } if (json_get_key_size(state)) { /* key parsing failed! */ state->error = json_parse_error_invalid_string; return 1; } if (json_skip_all_skippables(state)) { state->error = json_parse_error_premature_end_of_buffer; return 1; } if (json_parse_flags_allow_equals_in_object & flags_bitset) { const char current = src[state->offset]; if ((':' != current) && ('=' != current)) { state->error = json_parse_error_expected_colon; return 1; } } else { if (':' != src[state->offset]) { state->error = json_parse_error_expected_colon; return 1; } } /* skip colon. */ state->offset++; if (json_skip_all_skippables(state)) { state->error = json_parse_error_premature_end_of_buffer; return 1; } if (json_get_value_size(state, /* is_global_object = */ 0)) { /* value parsing failed! */ return 1; } /* successfully parsed a name/value pair! */ elements++; allow_comma = 1; } while (state->offset < size); if ((state->offset == size) && !is_global_object && !found_closing_brace) { state->error = json_parse_error_premature_end_of_buffer; return 1; } state->dom_size += sizeof(struct json_object_element_s) * elements; return 0; } json_weak int json_get_array_size(struct json_parse_state_s *state); int json_get_array_size(struct json_parse_state_s *state) { const size_t flags_bitset = state->flags_bitset; size_t elements = 0; int allow_comma = 0; const char *const src = state->src; const size_t size = state->size; if ('[' != src[state->offset]) { /* expected array to begin with leading '['. */ state->error = json_parse_error_unknown; return 1; } /* skip leading '['. */ state->offset++; state->dom_size += sizeof(struct json_array_s); while (state->offset < size) { if (json_skip_all_skippables(state)) { state->error = json_parse_error_premature_end_of_buffer; return 1; } if (']' == src[state->offset]) { /* skip trailing ']'. */ state->offset++; state->dom_size += sizeof(struct json_array_element_s) * elements; /* finished the object! */ return 0; } /* if we parsed at least once element previously, grok for a comma. */ if (allow_comma) { if (',' == src[state->offset]) { /* skip comma. */ state->offset++; allow_comma = 0; } else if (!(json_parse_flags_allow_no_commas & flags_bitset)) { state->error = json_parse_error_expected_comma_or_closing_bracket; return 1; } if (json_parse_flags_allow_trailing_comma & flags_bitset) { allow_comma = 0; continue; } else { if (json_skip_all_skippables(state)) { state->error = json_parse_error_premature_end_of_buffer; return 1; } } } if (json_get_value_size(state, /* is_global_object = */ 0)) { /* value parsing failed! */ return 1; } /* successfully parsed an array element! */ elements++; allow_comma = 1; } /* we consumed the entire input before finding the closing ']' of the array! */ state->error = json_parse_error_premature_end_of_buffer; return 1; } json_weak int json_get_number_size(struct json_parse_state_s *state); int json_get_number_size(struct json_parse_state_s *state) { const size_t flags_bitset = state->flags_bitset; size_t offset = state->offset; const size_t size = state->size; int had_leading_digits = 0; const char *const src = state->src; state->dom_size += sizeof(struct json_number_s); if ((json_parse_flags_allow_hexadecimal_numbers & flags_bitset) && (offset + 1 < size) && ('0' == src[offset]) && (('x' == src[offset + 1]) || ('X' == src[offset + 1]))) { /* skip the leading 0x that identifies a hexadecimal number. */ offset += 2; /* consume hexadecimal digits. */ while ((offset < size) && (('0' <= src[offset] && src[offset] <= '9') || ('a' <= src[offset] && src[offset] <= 'f') || ('A' <= src[offset] && src[offset] <= 'F'))) { offset++; } } else { int found_sign = 0; int inf_or_nan = 0; if ((offset < size) && (('-' == src[offset]) || ((json_parse_flags_allow_leading_plus_sign & flags_bitset) && ('+' == src[offset])))) { /* skip valid leading '-' or '+'. */ offset++; found_sign = 1; } if (json_parse_flags_allow_inf_and_nan & flags_bitset) { const char inf[9] = "Infinity"; const size_t inf_strlen = sizeof(inf) - 1; const char nan[4] = "NaN"; const size_t nan_strlen = sizeof(nan) - 1; if (offset + inf_strlen < size) { int found = 1; size_t i; for (i = 0; i < inf_strlen; i++) { if (inf[i] != src[offset + i]) { found = 0; break; } } if (found) { /* We found our special 'Infinity' keyword! */ offset += inf_strlen; inf_or_nan = 1; } } if (offset + nan_strlen < size) { int found = 1; size_t i; for (i = 0; i < nan_strlen; i++) { if (nan[i] != src[offset + i]) { found = 0; break; } } if (found) { /* We found our special 'NaN' keyword! */ offset += nan_strlen; inf_or_nan = 1; } } } if (found_sign && !inf_or_nan && (offset < size) && !('0' <= src[offset] && src[offset] <= '9')) { /* check if we are allowing leading '.'. */ if (!(json_parse_flags_allow_leading_or_trailing_decimal_point & flags_bitset) || ('.' != src[offset])) { /* a leading '-' must be immediately followed by any digit! */ state->error = json_parse_error_invalid_number_format; state->offset = offset; return 1; } } if ((offset < size) && ('0' == src[offset])) { /* skip valid '0'. */ offset++; /* we need to record whether we had any leading digits for checks later. */ had_leading_digits = 1; if ((offset < size) && ('0' <= src[offset] && src[offset] <= '9')) { /* a leading '0' must not be immediately followed by any digit! */ state->error = json_parse_error_invalid_number_format; state->offset = offset; return 1; } } /* the main digits of our number next. */ while ((offset < size) && ('0' <= src[offset] && src[offset] <= '9')) { offset++; /* we need to record whether we had any leading digits for checks later. */ had_leading_digits = 1; } if ((offset < size) && ('.' == src[offset])) { offset++; if (!('0' <= src[offset] && src[offset] <= '9')) { if (!(json_parse_flags_allow_leading_or_trailing_decimal_point & flags_bitset) || !had_leading_digits) { /* a decimal point must be followed by at least one digit. */ state->error = json_parse_error_invalid_number_format; state->offset = offset; return 1; } } /* a decimal point can be followed by more digits of course! */ while ((offset < size) && ('0' <= src[offset] && src[offset] <= '9')) { offset++; } } if ((offset < size) && ('e' == src[offset] || 'E' == src[offset])) { /* our number has an exponent! Skip 'e' or 'E'. */ offset++; if ((offset < size) && ('-' == src[offset] || '+' == src[offset])) { /* skip optional '-' or '+'. */ offset++; } if ((offset < size) && !('0' <= src[offset] && src[offset] <= '9')) { /* an exponent must have at least one digit! */ state->error = json_parse_error_invalid_number_format; state->offset = offset; return 1; } /* consume exponent digits. */ do { offset++; } while ((offset < size) && ('0' <= src[offset] && src[offset] <= '9')); } } if (offset < size) { switch (src[offset]) { case ' ': case '\t': case '\r': case '\n': case '}': case ',': case ']': /* all of the above are ok. */ break; case '=': if (json_parse_flags_allow_equals_in_object & flags_bitset) { break; } state->error = json_parse_error_invalid_number_format; state->offset = offset; return 1; default: state->error = json_parse_error_invalid_number_format; state->offset = offset; return 1; } } state->data_size += offset - state->offset; /* one more byte for null terminator ending the number string! */ state->data_size++; /* update offset. */ state->offset = offset; return 0; } json_weak int json_get_value_size(struct json_parse_state_s *state, int is_global_object); int json_get_value_size(struct json_parse_state_s *state, int is_global_object) { const size_t flags_bitset = state->flags_bitset; const char *const src = state->src; size_t offset; const size_t size = state->size; if (json_parse_flags_allow_location_information & flags_bitset) { state->dom_size += sizeof(struct json_value_ex_s); } else { state->dom_size += sizeof(struct json_value_s); } if (is_global_object) { return json_get_object_size(state, /* is_global_object = */ 1); } else { if (json_skip_all_skippables(state)) { state->error = json_parse_error_premature_end_of_buffer; return 1; } /* can cache offset now. */ offset = state->offset; switch (src[offset]) { case '"': return json_get_string_size(state, 0); case '\'': if (json_parse_flags_allow_single_quoted_strings & flags_bitset) { return json_get_string_size(state, 0); } else { /* invalid value! */ state->error = json_parse_error_invalid_value; return 1; } case '{': return json_get_object_size(state, /* is_global_object = */ 0); case '[': return json_get_array_size(state); case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return json_get_number_size(state); case '+': if (json_parse_flags_allow_leading_plus_sign & flags_bitset) { return json_get_number_size(state); } else { /* invalid value! */ state->error = json_parse_error_invalid_number_format; return 1; } case '.': if (json_parse_flags_allow_leading_or_trailing_decimal_point & flags_bitset) { return json_get_number_size(state); } else { /* invalid value! */ state->error = json_parse_error_invalid_number_format; return 1; } default: if ((offset + 4) <= size && 't' == src[offset + 0] && 'r' == src[offset + 1] && 'u' == src[offset + 2] && 'e' == src[offset + 3]) { state->offset += 4; return 0; } else if ((offset + 5) <= size && 'f' == src[offset + 0] && 'a' == src[offset + 1] && 'l' == src[offset + 2] && 's' == src[offset + 3] && 'e' == src[offset + 4]) { state->offset += 5; return 0; } else if ((offset + 4) <= size && 'n' == state->src[offset + 0] && 'u' == state->src[offset + 1] && 'l' == state->src[offset + 2] && 'l' == state->src[offset + 3]) { state->offset += 4; return 0; } else if ((json_parse_flags_allow_inf_and_nan & flags_bitset) && (offset + 3) <= size && 'N' == src[offset + 0] && 'a' == src[offset + 1] && 'N' == src[offset + 2]) { return json_get_number_size(state); } else if ((json_parse_flags_allow_inf_and_nan & flags_bitset) && (offset + 8) <= size && 'I' == src[offset + 0] && 'n' == src[offset + 1] && 'f' == src[offset + 2] && 'i' == src[offset + 3] && 'n' == src[offset + 4] && 'i' == src[offset + 5] && 't' == src[offset + 6] && 'y' == src[offset + 7]) { return json_get_number_size(state); } /* invalid value! */ state->error = json_parse_error_invalid_value; return 1; } } } json_weak void json_parse_value(struct json_parse_state_s *state, int is_global_object, struct json_value_s *value); json_weak void json_parse_string(struct json_parse_state_s *state, struct json_string_s *string); void json_parse_string(struct json_parse_state_s *state, struct json_string_s *string) { size_t offset = state->offset; size_t bytes_written = 0; const char *const src = state->src; const char quote_to_use = '\'' == src[offset] ? '\'' : '"'; char *data = state->data; unsigned long high_surrogate = 0; unsigned long codepoint; string->string = data; /* skip leading '"' or '\''. */ offset++; while (quote_to_use != src[offset]) { if ('\\' == src[offset]) { /* skip the reverse solidus. */ offset++; switch (src[offset++]) { default: return; /* we cannot ever reach here. */ case 'u': { codepoint = 0; if (!json_hexadecimal_value(&src[offset], 4, &codepoint)) { return; /* this shouldn't happen as the value was already validated. */ } offset += 4; if (codepoint <= 0x7fu) { data[bytes_written++] = (char)codepoint; /* 0xxxxxxx. */ } else if (codepoint <= 0x7ffu) { data[bytes_written++] = (char)(0xc0u | (codepoint >> 6)); /* 110xxxxx. */ data[bytes_written++] = (char)(0x80u | (codepoint & 0x3fu)); /* 10xxxxxx. */ } else if (codepoint >= 0xd800 && codepoint <= 0xdbff) { /* high surrogate. */ high_surrogate = codepoint; continue; /* we need the low half to form a complete codepoint. */ } else if (codepoint >= 0xdc00 && codepoint <= 0xdfff) { /* low surrogate. */ /* combine with the previously read half to obtain the complete * codepoint. */ const unsigned long surrogate_offset = 0x10000u - (0xD800u << 10) - 0xDC00u; codepoint = (high_surrogate << 10) + codepoint + surrogate_offset; high_surrogate = 0; data[bytes_written++] = (char)(0xF0u | (codepoint >> 18)); /* 11110xxx. */ data[bytes_written++] = (char)(0x80u | ((codepoint >> 12) & 0x3fu)); /* 10xxxxxx. */ data[bytes_written++] = (char)(0x80u | ((codepoint >> 6) & 0x3fu)); /* 10xxxxxx. */ data[bytes_written++] = (char)(0x80u | (codepoint & 0x3fu)); /* 10xxxxxx. */ } else { /* we assume the value was validated and thus is within the valid * range. */ data[bytes_written++] = (char)(0xe0u | (codepoint >> 12)); /* 1110xxxx. */ data[bytes_written++] = (char)(0x80u | ((codepoint >> 6) & 0x3fu)); /* 10xxxxxx. */ data[bytes_written++] = (char)(0x80u | (codepoint & 0x3fu)); /* 10xxxxxx. */ } } break; case '"': data[bytes_written++] = '"'; break; case '\\': data[bytes_written++] = '\\'; break; case '/': data[bytes_written++] = '/'; break; case 'b': data[bytes_written++] = '\b'; break; case 'f': data[bytes_written++] = '\f'; break; case 'n': data[bytes_written++] = '\n'; break; case 'r': data[bytes_written++] = '\r'; break; case 't': data[bytes_written++] = '\t'; break; case '\r': data[bytes_written++] = '\r'; /* check if we have a "\r\n" sequence. */ if ('\n' == src[offset]) { data[bytes_written++] = '\n'; offset++; } break; case '\n': data[bytes_written++] = '\n'; break; } } else { /* copy the character. */ data[bytes_written++] = src[offset++]; } } /* skip trailing '"' or '\''. */ offset++; /* record the size of the string. */ string->string_size = bytes_written; /* add null terminator to string. */ data[bytes_written++] = '\0'; /* move data along. */ state->data += bytes_written; /* update offset. */ state->offset = offset; } json_weak void json_parse_key(struct json_parse_state_s *state, struct json_string_s *string); void json_parse_key(struct json_parse_state_s *state, struct json_string_s *string) { if (json_parse_flags_allow_unquoted_keys & state->flags_bitset) { const char *const src = state->src; char *const data = state->data; size_t offset = state->offset; /* if we are allowing unquoted keys, check for quoted anyway... */ if (('"' == src[offset]) || ('\'' == src[offset])) { /* ... if we got a quote, just parse the key as a string as normal. */ json_parse_string(state, string); } else { size_t size = 0; string->string = state->data; while (is_valid_unquoted_key_char(src[offset])) { data[size++] = src[offset++]; } /* add null terminator to string. */ data[size] = '\0'; /* record the size of the string. */ string->string_size = size++; /* move data along. */ state->data += size; /* update offset. */ state->offset = offset; } } else { /* we are only allowed to have quoted keys, so just parse a string! */ json_parse_string(state, string); } } json_weak void json_parse_object(struct json_parse_state_s *state, int is_global_object, struct json_object_s *object); void json_parse_object(struct json_parse_state_s *state, int is_global_object, struct json_object_s *object) { const size_t flags_bitset = state->flags_bitset; const size_t size = state->size; const char *const src = state->src; size_t elements = 0; int allow_comma = 0; struct json_object_element_s *previous = json_null; if (is_global_object) { /* if we skipped some whitespace, and then found an opening '{' of an. */ /* object, we actually have a normal JSON object at the root of the DOM... */ if ('{' == src[state->offset]) { /* . and we don't actually have a global object after all! */ is_global_object = 0; } } if (!is_global_object) { /* skip leading '{'. */ state->offset++; } (void)json_skip_all_skippables(state); /* reset elements. */ elements = 0; while (state->offset < size) { struct json_object_element_s *element = json_null; struct json_string_s *string = json_null; struct json_value_s *value = json_null; if (!is_global_object) { (void)json_skip_all_skippables(state); if ('}' == src[state->offset]) { /* skip trailing '}'. */ state->offset++; /* finished the object! */ break; } } else { if (json_skip_all_skippables(state)) { /* global object ends when the file ends! */ break; } } /* if we parsed at least one element previously, grok for a comma. */ if (allow_comma) { if (',' == src[state->offset]) { /* skip comma. */ state->offset++; allow_comma = 0; continue; } } element = (struct json_object_element_s *)state->dom; state->dom += sizeof(struct json_object_element_s); if (json_null == previous) { /* this is our first element, so record it in our object. */ object->start = element; } else { previous->next = element; } previous = element; if (json_parse_flags_allow_location_information & flags_bitset) { struct json_string_ex_s *string_ex = (struct json_string_ex_s *)state->dom; state->dom += sizeof(struct json_string_ex_s); string_ex->offset = state->offset; string_ex->line_no = state->line_no; string_ex->row_no = state->offset - state->line_offset; string = &(string_ex->string); } else { string = (struct json_string_s *)state->dom; state->dom += sizeof(struct json_string_s); } element->name = string; (void)json_parse_key(state, string); (void)json_skip_all_skippables(state); /* skip colon or equals. */ state->offset++; (void)json_skip_all_skippables(state); if (json_parse_flags_allow_location_information & flags_bitset) { struct json_value_ex_s *value_ex = (struct json_value_ex_s *)state->dom; state->dom += sizeof(struct json_value_ex_s); value_ex->offset = state->offset; value_ex->line_no = state->line_no; value_ex->row_no = state->offset - state->line_offset; value = &(value_ex->value); } else { value = (struct json_value_s *)state->dom; state->dom += sizeof(struct json_value_s); } element->value = value; json_parse_value(state, /* is_global_object = */ 0, value); /* successfully parsed a name/value pair! */ elements++; allow_comma = 1; } /* if we had at least one element, end the linked list. */ if (previous) { previous->next = json_null; } if (0 == elements) { object->start = json_null; } object->length = elements; } json_weak void json_parse_array(struct json_parse_state_s *state, struct json_array_s *array); void json_parse_array(struct json_parse_state_s *state, struct json_array_s *array) { const char *const src = state->src; const size_t size = state->size; size_t elements = 0; int allow_comma = 0; struct json_array_element_s *previous = json_null; /* skip leading '['. */ state->offset++; (void)json_skip_all_skippables(state); /* reset elements. */ elements = 0; do { struct json_array_element_s *element = json_null; struct json_value_s *value = json_null; (void)json_skip_all_skippables(state); if (']' == src[state->offset]) { /* skip trailing ']'. */ state->offset++; /* finished the array! */ break; } /* if we parsed at least one element previously, grok for a comma. */ if (allow_comma) { if (',' == src[state->offset]) { /* skip comma. */ state->offset++; allow_comma = 0; continue; } } element = (struct json_array_element_s *)state->dom; state->dom += sizeof(struct json_array_element_s); if (json_null == previous) { /* this is our first element, so record it in our array. */ array->start = element; } else { previous->next = element; } previous = element; if (json_parse_flags_allow_location_information & state->flags_bitset) { struct json_value_ex_s *value_ex = (struct json_value_ex_s *)state->dom; state->dom += sizeof(struct json_value_ex_s); value_ex->offset = state->offset; value_ex->line_no = state->line_no; value_ex->row_no = state->offset - state->line_offset; value = &(value_ex->value); } else { value = (struct json_value_s *)state->dom; state->dom += sizeof(struct json_value_s); } element->value = value; json_parse_value(state, /* is_global_object = */ 0, value); /* successfully parsed an array element! */ elements++; allow_comma = 1; } while (state->offset < size); /* end the linked list. */ if (previous) { previous->next = json_null; } if (0 == elements) { array->start = json_null; } array->length = elements; } json_weak void json_parse_number(struct json_parse_state_s *state, struct json_number_s *number); void json_parse_number(struct json_parse_state_s *state, struct json_number_s *number) { const size_t flags_bitset = state->flags_bitset; size_t offset = state->offset; const size_t size = state->size; size_t bytes_written = 0; const char *const src = state->src; char *data = state->data; number->number = data; if (json_parse_flags_allow_hexadecimal_numbers & flags_bitset) { if (('0' == src[offset]) && (('x' == src[offset + 1]) || ('X' == src[offset + 1]))) { /* consume hexadecimal digits. */ while ((offset < size) && (('0' <= src[offset] && src[offset] <= '9') || ('a' <= src[offset] && src[offset] <= 'f') || ('A' <= src[offset] && src[offset] <= 'F') || ('x' == src[offset]) || ('X' == src[offset]))) { data[bytes_written++] = src[offset++]; } } } while (offset < size) { int end = 0; switch (src[offset]) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.': case 'e': case 'E': case '+': case '-': data[bytes_written++] = src[offset++]; break; default: end = 1; break; } if (0 != end) { break; } } if (json_parse_flags_allow_inf_and_nan & flags_bitset) { const size_t inf_strlen = 8; /* = strlen("Infinity");. */ const size_t nan_strlen = 3; /* = strlen("NaN");. */ if (offset + inf_strlen < size) { if ('I' == src[offset]) { size_t i; /* We found our special 'Infinity' keyword! */ for (i = 0; i < inf_strlen; i++) { data[bytes_written++] = src[offset++]; } } } if (offset + nan_strlen < size) { if ('N' == src[offset]) { size_t i; /* We found our special 'NaN' keyword! */ for (i = 0; i < nan_strlen; i++) { data[bytes_written++] = src[offset++]; } } } } /* record the size of the number. */ number->number_size = bytes_written; /* add null terminator to number string. */ data[bytes_written++] = '\0'; /* move data along. */ state->data += bytes_written; /* update offset. */ state->offset = offset; } json_weak void json_parse_value(struct json_parse_state_s *state, int is_global_object, struct json_value_s *value); void json_parse_value(struct json_parse_state_s *state, int is_global_object, struct json_value_s *value) { const size_t flags_bitset = state->flags_bitset; const char *const src = state->src; const size_t size = state->size; size_t offset; (void)json_skip_all_skippables(state); /* cache offset now. */ offset = state->offset; if (is_global_object) { value->type = json_type_object; value->payload = state->dom; state->dom += sizeof(struct json_object_s); json_parse_object(state, /* is_global_object = */ 1, (struct json_object_s *)value->payload); } else { switch (src[offset]) { case '"': case '\'': value->type = json_type_string; value->payload = state->dom; state->dom += sizeof(struct json_string_s); json_parse_string(state, (struct json_string_s *)value->payload); break; case '{': value->type = json_type_object; value->payload = state->dom; state->dom += sizeof(struct json_object_s); json_parse_object(state, /* is_global_object = */ 0, (struct json_object_s *)value->payload); break; case '[': value->type = json_type_array; value->payload = state->dom; state->dom += sizeof(struct json_array_s); json_parse_array(state, (struct json_array_s *)value->payload); break; case '-': case '+': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.': value->type = json_type_number; value->payload = state->dom; state->dom += sizeof(struct json_number_s); json_parse_number(state, (struct json_number_s *)value->payload); break; default: if ((offset + 4) <= size && 't' == src[offset + 0] && 'r' == src[offset + 1] && 'u' == src[offset + 2] && 'e' == src[offset + 3]) { value->type = json_type_true; value->payload = json_null; state->offset += 4; } else if ((offset + 5) <= size && 'f' == src[offset + 0] && 'a' == src[offset + 1] && 'l' == src[offset + 2] && 's' == src[offset + 3] && 'e' == src[offset + 4]) { value->type = json_type_false; value->payload = json_null; state->offset += 5; } else if ((offset + 4) <= size && 'n' == src[offset + 0] && 'u' == src[offset + 1] && 'l' == src[offset + 2] && 'l' == src[offset + 3]) { value->type = json_type_null; value->payload = json_null; state->offset += 4; } else if ((json_parse_flags_allow_inf_and_nan & flags_bitset) && (offset + 3) <= size && 'N' == src[offset + 0] && 'a' == src[offset + 1] && 'N' == src[offset + 2]) { value->type = json_type_number; value->payload = state->dom; state->dom += sizeof(struct json_number_s); json_parse_number(state, (struct json_number_s *)value->payload); } else if ((json_parse_flags_allow_inf_and_nan & flags_bitset) && (offset + 8) <= size && 'I' == src[offset + 0] && 'n' == src[offset + 1] && 'f' == src[offset + 2] && 'i' == src[offset + 3] && 'n' == src[offset + 4] && 'i' == src[offset + 5] && 't' == src[offset + 6] && 'y' == src[offset + 7]) { value->type = json_type_number; value->payload = state->dom; state->dom += sizeof(struct json_number_s); json_parse_number(state, (struct json_number_s *)value->payload); } break; } } } struct json_value_s * json_parse_ex(const void *src, size_t src_size, size_t flags_bitset, void *(*alloc_func_ptr)(void *user_data, size_t size), void *user_data, struct json_parse_result_s *result) { struct json_parse_state_s state; void *allocation; struct json_value_s *value; size_t total_size; int input_error; if (result) { result->error = json_parse_error_none; result->error_offset = 0; result->error_line_no = 0; result->error_row_no = 0; } if (json_null == src) { /* invalid src pointer was null! */ return json_null; } state.src = (const char *)src; state.size = src_size; state.offset = 0; state.line_no = 1; state.line_offset = 0; state.error = json_parse_error_none; state.dom_size = 0; state.data_size = 0; state.flags_bitset = flags_bitset; input_error = json_get_value_size( &state, (int)(json_parse_flags_allow_global_object & state.flags_bitset)); if (0 == input_error) { json_skip_all_skippables(&state); if (state.offset != state.size) { /* our parsing didn't have an error, but there are characters remaining in * the input that weren't part of the JSON! */ state.error = json_parse_error_unexpected_trailing_characters; input_error = 1; } } if (input_error) { /* parsing value's size failed (most likely an invalid JSON DOM!). */ if (result) { result->error = state.error; result->error_offset = state.offset; result->error_line_no = state.line_no; result->error_row_no = state.offset - state.line_offset; } return json_null; } /* our total allocation is the combination of the dom and data sizes (we. */ /* first encode the structure of the JSON, and then the data referenced by. */ /* the JSON values). */ total_size = state.dom_size + state.data_size; if (json_null == alloc_func_ptr) { allocation = malloc(total_size); } else { allocation = alloc_func_ptr(user_data, total_size); } if (json_null == allocation) { /* malloc failed! */ if (result) { result->error = json_parse_error_allocator_failed; result->error_offset = 0; result->error_line_no = 0; result->error_row_no = 0; } return json_null; } /* reset offset so we can reuse it. */ state.offset = 0; /* reset the line information so we can reuse it. */ state.line_no = 1; state.line_offset = 0; state.dom = (char *)allocation; state.data = state.dom + state.dom_size; if (json_parse_flags_allow_location_information & state.flags_bitset) { struct json_value_ex_s *value_ex = (struct json_value_ex_s *)state.dom; state.dom += sizeof(struct json_value_ex_s); value_ex->offset = state.offset; value_ex->line_no = state.line_no; value_ex->row_no = state.offset - state.line_offset; value = &(value_ex->value); } else { value = (struct json_value_s *)state.dom; state.dom += sizeof(struct json_value_s); } json_parse_value( &state, (int)(json_parse_flags_allow_global_object & state.flags_bitset), value); return (struct json_value_s *)allocation; } struct json_value_s *json_parse(const void *src, size_t src_size) { return json_parse_ex(src, src_size, json_parse_flags_default, json_null, json_null, json_null); } struct json_extract_result_s { size_t dom_size; size_t data_size; }; struct json_value_s *json_extract_value(const struct json_value_s *value) { return json_extract_value_ex(value, json_null, json_null); } json_weak struct json_extract_result_s json_extract_get_number_size(const struct json_number_s *const number); json_weak struct json_extract_result_s json_extract_get_string_size(const struct json_string_s *const string); json_weak struct json_extract_result_s json_extract_get_object_size(const struct json_object_s *const object); json_weak struct json_extract_result_s json_extract_get_array_size(const struct json_array_s *const array); json_weak struct json_extract_result_s json_extract_get_value_size(const struct json_value_s *const value); struct json_extract_result_s json_extract_get_number_size(const struct json_number_s *const number) { struct json_extract_result_s result; result.dom_size = sizeof(struct json_number_s); result.data_size = number->number_size; return result; } struct json_extract_result_s json_extract_get_string_size(const struct json_string_s *const string) { struct json_extract_result_s result; result.dom_size = sizeof(struct json_string_s); result.data_size = string->string_size + 1; return result; } struct json_extract_result_s json_extract_get_object_size(const struct json_object_s *const object) { struct json_extract_result_s result; size_t i; const struct json_object_element_s *element = object->start; result.dom_size = sizeof(struct json_object_s) + (sizeof(struct json_object_element_s) * object->length); result.data_size = 0; for (i = 0; i < object->length; i++) { const struct json_extract_result_s string_result = json_extract_get_string_size(element->name); const struct json_extract_result_s value_result = json_extract_get_value_size(element->value); result.dom_size += string_result.dom_size; result.data_size += string_result.data_size; result.dom_size += value_result.dom_size; result.data_size += value_result.data_size; element = element->next; } return result; } struct json_extract_result_s json_extract_get_array_size(const struct json_array_s *const array) { struct json_extract_result_s result; size_t i; const struct json_array_element_s *element = array->start; result.dom_size = sizeof(struct json_array_s) + (sizeof(struct json_array_element_s) * array->length); result.data_size = 0; for (i = 0; i < array->length; i++) { const struct json_extract_result_s value_result = json_extract_get_value_size(element->value); result.dom_size += value_result.dom_size; result.data_size += value_result.data_size; element = element->next; } return result; } struct json_extract_result_s json_extract_get_value_size(const struct json_value_s *const value) { struct json_extract_result_s result = {0, 0}; switch (value->type) { default: break; case json_type_object: result = json_extract_get_object_size( (const struct json_object_s *)value->payload); break; case json_type_array: result = json_extract_get_array_size( (const struct json_array_s *)value->payload); break; case json_type_number: result = json_extract_get_number_size( (const struct json_number_s *)value->payload); break; case json_type_string: result = json_extract_get_string_size( (const struct json_string_s *)value->payload); break; } result.dom_size += sizeof(struct json_value_s); return result; } struct json_extract_state_s { char *dom; char *data; }; json_weak void json_extract_copy_value(struct json_extract_state_s *const state, const struct json_value_s *const value); void json_extract_copy_value(struct json_extract_state_s *const state, const struct json_value_s *const value) { struct json_string_s *string; struct json_number_s *number; struct json_object_s *object; struct json_array_s *array; struct json_value_s *new_value; memcpy(state->dom, value, sizeof(struct json_value_s)); new_value = (struct json_value_s *)state->dom; state->dom += sizeof(struct json_value_s); new_value->payload = state->dom; if (json_type_string == value->type) { memcpy(state->dom, value->payload, sizeof(struct json_string_s)); string = (struct json_string_s *)state->dom; state->dom += sizeof(struct json_string_s); memcpy(state->data, string->string, string->string_size + 1); string->string = state->data; state->data += string->string_size + 1; } else if (json_type_number == value->type) { memcpy(state->dom, value->payload, sizeof(struct json_number_s)); number = (struct json_number_s *)state->dom; state->dom += sizeof(struct json_number_s); memcpy(state->data, number->number, number->number_size); number->number = state->data; state->data += number->number_size; } else if (json_type_object == value->type) { struct json_object_element_s *element; size_t i; memcpy(state->dom, value->payload, sizeof(struct json_object_s)); object = (struct json_object_s *)state->dom; state->dom += sizeof(struct json_object_s); element = object->start; object->start = (struct json_object_element_s *)state->dom; for (i = 0; i < object->length; i++) { struct json_value_s *previous_value; struct json_object_element_s *previous_element; memcpy(state->dom, element, sizeof(struct json_object_element_s)); element = (struct json_object_element_s *)state->dom; state->dom += sizeof(struct json_object_element_s); string = element->name; memcpy(state->dom, string, sizeof(struct json_string_s)); string = (struct json_string_s *)state->dom; state->dom += sizeof(struct json_string_s); element->name = string; memcpy(state->data, string->string, string->string_size + 1); string->string = state->data; state->data += string->string_size + 1; previous_value = element->value; element->value = (struct json_value_s *)state->dom; json_extract_copy_value(state, previous_value); previous_element = element; element = element->next; if (element) { previous_element->next = (struct json_object_element_s *)state->dom; } } } else if (json_type_array == value->type) { struct json_array_element_s *element; size_t i; memcpy(state->dom, value->payload, sizeof(struct json_array_s)); array = (struct json_array_s *)state->dom; state->dom += sizeof(struct json_array_s); element = array->start; array->start = (struct json_array_element_s *)state->dom; for (i = 0; i < array->length; i++) { struct json_value_s *previous_value; struct json_array_element_s *previous_element; memcpy(state->dom, element, sizeof(struct json_array_element_s)); element = (struct json_array_element_s *)state->dom; state->dom += sizeof(struct json_array_element_s); previous_value = element->value; element->value = (struct json_value_s *)state->dom; json_extract_copy_value(state, previous_value); previous_element = element; element = element->next; if (element) { previous_element->next = (struct json_array_element_s *)state->dom; } } } } struct json_value_s *json_extract_value_ex(const struct json_value_s *value, void *(*alloc_func_ptr)(void *, size_t), void *user_data) { void *allocation; struct json_extract_result_s result; struct json_extract_state_s state; size_t total_size; if (json_null == value) { /* invalid value was null! */ return json_null; } result = json_extract_get_value_size(value); total_size = result.dom_size + result.data_size; if (json_null == alloc_func_ptr) { allocation = malloc(total_size); } else { allocation = alloc_func_ptr(user_data, total_size); } state.dom = (char *)allocation; state.data = state.dom + result.dom_size; json_extract_copy_value(&state, value); return (struct json_value_s *)allocation; } struct json_string_s *json_value_as_string(struct json_value_s *const value) { if (value->type != json_type_string) { return json_null; } return (struct json_string_s *)value->payload; } struct json_number_s *json_value_as_number(struct json_value_s *const value) { if (value->type != json_type_number) { return json_null; } return (struct json_number_s *)value->payload; } struct json_object_s *json_value_as_object(struct json_value_s *const value) { if (value->type != json_type_object) { return json_null; } return (struct json_object_s *)value->payload; } struct json_array_s *json_value_as_array(struct json_value_s *const value) { if (value->type != json_type_array) { return json_null; } return (struct json_array_s *)value->payload; } int json_value_is_true(const struct json_value_s *const value) { return value->type == json_type_true; } int json_value_is_false(const struct json_value_s *const value) { return value->type == json_type_false; } int json_value_is_null(const struct json_value_s *const value) { return value->type == json_type_null; } json_weak int json_write_minified_get_value_size(const struct json_value_s *value, size_t *size); json_weak int json_write_get_number_size(const struct json_number_s *number, size_t *size); int json_write_get_number_size(const struct json_number_s *number, size_t *size) { json_uintmax_t parsed_number; size_t i; if (number->number_size >= 2) { switch (number->number[1]) { default: break; case 'x': case 'X': /* the number is a json_parse_flags_allow_hexadecimal_numbers hexadecimal * so we have to do extra work to convert it to a non-hexadecimal for JSON * output. */ parsed_number = json_strtoumax(number->number, json_null, 0); i = 0; while (0 != parsed_number) { parsed_number /= 10; i++; } *size += i; return 0; } } /* check to see if the number has leading/trailing decimal point. */ i = 0; /* skip any leading '+' or '-'. */ if ((i < number->number_size) && (('+' == number->number[i]) || ('-' == number->number[i]))) { i++; } /* check if we have infinity. */ if ((i < number->number_size) && ('I' == number->number[i])) { const char *inf = "Infinity"; size_t k; for (k = i; k < number->number_size; k++) { const char c = *inf++; /* Check if we found the Infinity string! */ if ('\0' == c) { break; } else if (c != number->number[k]) { break; } } if ('\0' == *inf) { /* Inf becomes 1.7976931348623158e308 because JSON can't support it. */ *size += 22; /* if we had a leading '-' we need to record it in the JSON output. */ if ('-' == number->number[0]) { *size += 1; } } return 0; } /* check if we have nan. */ if ((i < number->number_size) && ('N' == number->number[i])) { const char *nan = "NaN"; size_t k; for (k = i; k < number->number_size; k++) { const char c = *nan++; /* Check if we found the NaN string! */ if ('\0' == c) { break; } else if (c != number->number[k]) { break; } } if ('\0' == *nan) { /* NaN becomes 1 because JSON can't support it. */ *size += 1; return 0; } } /* if we had a leading decimal point. */ if ((i < number->number_size) && ('.' == number->number[i])) { /* 1 + because we had a leading decimal point. */ *size += 1; goto cleanup; } for (; i < number->number_size; i++) { const char c = number->number[i]; if (!('0' <= c && c <= '9')) { break; } } /* if we had a trailing decimal point. */ if ((i + 1 == number->number_size) && ('.' == number->number[i])) { /* 1 + because we had a trailing decimal point. */ *size += 1; goto cleanup; } cleanup: *size += number->number_size; /* the actual string of the number. */ /* if we had a leading '+' we don't record it in the JSON output. */ if ('+' == number->number[0]) { *size -= 1; } return 0; } json_weak int json_write_get_string_size(const struct json_string_s *string, size_t *size); int json_write_get_string_size(const struct json_string_s *string, size_t *size) { size_t i; for (i = 0; i < string->string_size; i++) { switch (string->string[i]) { case '"': case '\\': case '\b': case '\f': case '\n': case '\r': case '\t': *size += 2; break; default: *size += 1; break; } } *size += 2; /* need to encode the surrounding '"' characters. */ return 0; } json_weak int json_write_minified_get_array_size(const struct json_array_s *array, size_t *size); int json_write_minified_get_array_size(const struct json_array_s *array, size_t *size) { struct json_array_element_s *element; *size += 2; /* '[' and ']'. */ if (1 < array->length) { *size += array->length - 1; /* ','s seperate each element. */ } for (element = array->start; json_null != element; element = element->next) { if (json_write_minified_get_value_size(element->value, size)) { /* value was malformed! */ return 1; } } return 0; } json_weak int json_write_minified_get_object_size(const struct json_object_s *object, size_t *size); int json_write_minified_get_object_size(const struct json_object_s *object, size_t *size) { struct json_object_element_s *element; *size += 2; /* '{' and '}'. */ *size += object->length; /* ':'s seperate each name/value pair. */ if (1 < object->length) { *size += object->length - 1; /* ','s seperate each element. */ } for (element = object->start; json_null != element; element = element->next) { if (json_write_get_string_size(element->name, size)) { /* string was malformed! */ return 1; } if (json_write_minified_get_value_size(element->value, size)) { /* value was malformed! */ return 1; } } return 0; } json_weak int json_write_minified_get_value_size(const struct json_value_s *value, size_t *size); int json_write_minified_get_value_size(const struct json_value_s *value, size_t *size) { switch (value->type) { default: /* unknown value type found! */ return 1; case json_type_number: return json_write_get_number_size((struct json_number_s *)value->payload, size); case json_type_string: return json_write_get_string_size((struct json_string_s *)value->payload, size); case json_type_array: return json_write_minified_get_array_size( (struct json_array_s *)value->payload, size); case json_type_object: return json_write_minified_get_object_size( (struct json_object_s *)value->payload, size); case json_type_true: *size += 4; /* the string "true". */ return 0; case json_type_false: *size += 5; /* the string "false". */ return 0; case json_type_null: *size += 4; /* the string "null". */ return 0; } } json_weak char *json_write_minified_value(const struct json_value_s *value, char *data); json_weak char *json_write_number(const struct json_number_s *number, char *data); char *json_write_number(const struct json_number_s *number, char *data) { json_uintmax_t parsed_number, backup; size_t i; if (number->number_size >= 2) { switch (number->number[1]) { default: break; case 'x': case 'X': /* The number is a json_parse_flags_allow_hexadecimal_numbers hexadecimal * so we have to do extra work to convert it to a non-hexadecimal for JSON * output. */ parsed_number = json_strtoumax(number->number, json_null, 0); /* We need a copy of parsed number twice, so take a backup of it. */ backup = parsed_number; i = 0; while (0 != parsed_number) { parsed_number /= 10; i++; } /* Restore parsed_number to its original value stored in the backup. */ parsed_number = backup; /* Now use backup to take a copy of i, or the length of the string. */ backup = i; do { *(data + i - 1) = '0' + (char)(parsed_number % 10); parsed_number /= 10; i--; } while (0 != parsed_number); data += backup; return data; } } /* check to see if the number has leading/trailing decimal point. */ i = 0; /* skip any leading '-'. */ if ((i < number->number_size) && (('+' == number->number[i]) || ('-' == number->number[i]))) { i++; } /* check if we have infinity. */ if ((i < number->number_size) && ('I' == number->number[i])) { const char *inf = "Infinity"; size_t k; for (k = i; k < number->number_size; k++) { const char c = *inf++; /* Check if we found the Infinity string! */ if ('\0' == c) { break; } else if (c != number->number[k]) { break; } } if ('\0' == *inf++) { const char *dbl_max; /* if we had a leading '-' we need to record it in the JSON output. */ if ('-' == number->number[0]) { *data++ = '-'; } /* Inf becomes 1.7976931348623158e308 because JSON can't support it. */ for (dbl_max = "1.7976931348623158e308"; '\0' != *dbl_max; dbl_max++) { *data++ = *dbl_max; } return data; } } /* check if we have nan. */ if ((i < number->number_size) && ('N' == number->number[i])) { const char *nan = "NaN"; size_t k; for (k = i; k < number->number_size; k++) { const char c = *nan++; /* Check if we found the NaN string! */ if ('\0' == c) { break; } else if (c != number->number[k]) { break; } } if ('\0' == *nan++) { /* NaN becomes 0 because JSON can't support it. */ *data++ = '0'; return data; } } /* if we had a leading decimal point. */ if ((i < number->number_size) && ('.' == number->number[i])) { i = 0; /* skip any leading '+'. */ if ('+' == number->number[i]) { i++; } /* output the leading '-' if we had one. */ if ('-' == number->number[i]) { *data++ = '-'; i++; } /* insert a '0' to fix the leading decimal point for JSON output. */ *data++ = '0'; /* and output the rest of the number as normal. */ for (; i < number->number_size; i++) { *data++ = number->number[i]; } return data; } for (; i < number->number_size; i++) { const char c = number->number[i]; if (!('0' <= c && c <= '9')) { break; } } /* if we had a trailing decimal point. */ if ((i + 1 == number->number_size) && ('.' == number->number[i])) { i = 0; /* skip any leading '+'. */ if ('+' == number->number[i]) { i++; } /* output the leading '-' if we had one. */ if ('-' == number->number[i]) { *data++ = '-'; i++; } /* and output the rest of the number as normal. */ for (; i < number->number_size; i++) { *data++ = number->number[i]; } /* insert a '0' to fix the trailing decimal point for JSON output. */ *data++ = '0'; return data; } i = 0; /* skip any leading '+'. */ if ('+' == number->number[i]) { i++; } for (; i < number->number_size; i++) { *data++ = number->number[i]; } return data; } json_weak char *json_write_string(const struct json_string_s *string, char *data); char *json_write_string(const struct json_string_s *string, char *data) { size_t i; *data++ = '"'; /* open the string. */ for (i = 0; i < string->string_size; i++) { switch (string->string[i]) { case '"': *data++ = '\\'; /* escape the control character. */ *data++ = '"'; break; case '\\': *data++ = '\\'; /* escape the control character. */ *data++ = '\\'; break; case '\b': *data++ = '\\'; /* escape the control character. */ *data++ = 'b'; break; case '\f': *data++ = '\\'; /* escape the control character. */ *data++ = 'f'; break; case '\n': *data++ = '\\'; /* escape the control character. */ *data++ = 'n'; break; case '\r': *data++ = '\\'; /* escape the control character. */ *data++ = 'r'; break; case '\t': *data++ = '\\'; /* escape the control character. */ *data++ = 't'; break; default: *data++ = string->string[i]; break; } } *data++ = '"'; /* close the string. */ return data; } json_weak char *json_write_minified_array(const struct json_array_s *array, char *data); char *json_write_minified_array(const struct json_array_s *array, char *data) { struct json_array_element_s *element = json_null; *data++ = '['; /* open the array. */ for (element = array->start; json_null != element; element = element->next) { if (element != array->start) { *data++ = ','; /* ','s seperate each element. */ } data = json_write_minified_value(element->value, data); if (json_null == data) { /* value was malformed! */ return json_null; } } *data++ = ']'; /* close the array. */ return data; } json_weak char *json_write_minified_object(const struct json_object_s *object, char *data); char *json_write_minified_object(const struct json_object_s *object, char *data) { struct json_object_element_s *element = json_null; *data++ = '{'; /* open the object. */ for (element = object->start; json_null != element; element = element->next) { if (element != object->start) { *data++ = ','; /* ','s seperate each element. */ } data = json_write_string(element->name, data); if (json_null == data) { /* string was malformed! */ return json_null; } *data++ = ':'; /* ':'s seperate each name/value pair. */ data = json_write_minified_value(element->value, data); if (json_null == data) { /* value was malformed! */ return json_null; } } *data++ = '}'; /* close the object. */ return data; } json_weak char *json_write_minified_value(const struct json_value_s *value, char *data); char *json_write_minified_value(const struct json_value_s *value, char *data) { switch (value->type) { default: /* unknown value type found! */ return json_null; case json_type_number: return json_write_number((struct json_number_s *)value->payload, data); case json_type_string: return json_write_string((struct json_string_s *)value->payload, data); case json_type_array: return json_write_minified_array((struct json_array_s *)value->payload, data); case json_type_object: return json_write_minified_object((struct json_object_s *)value->payload, data); case json_type_true: data[0] = 't'; data[1] = 'r'; data[2] = 'u'; data[3] = 'e'; return data + 4; case json_type_false: data[0] = 'f'; data[1] = 'a'; data[2] = 'l'; data[3] = 's'; data[4] = 'e'; return data + 5; case json_type_null: data[0] = 'n'; data[1] = 'u'; data[2] = 'l'; data[3] = 'l'; return data + 4; } } void *json_write_minified(const struct json_value_s *value, size_t *out_size) { size_t size = 0; char *data = json_null; char *data_end = json_null; if (json_null == value) { return json_null; } if (json_write_minified_get_value_size(value, &size)) { /* value was malformed! */ return json_null; } size += 1; /* for the '\0' null terminating character. */ data = (char *)malloc(size); if (json_null == data) { /* malloc failed! */ return json_null; } data_end = json_write_minified_value(value, data); if (json_null == data_end) { /* bad chi occurred! */ free(data); return json_null; } /* null terminated the string. */ *data_end = '\0'; if (json_null != out_size) { *out_size = size; } return data; } json_weak int json_write_pretty_get_value_size(const struct json_value_s *value, size_t depth, size_t indent_size, size_t newline_size, size_t *size); json_weak int json_write_pretty_get_array_size(const struct json_array_s *array, size_t depth, size_t indent_size, size_t newline_size, size_t *size); int json_write_pretty_get_array_size(const struct json_array_s *array, size_t depth, size_t indent_size, size_t newline_size, size_t *size) { struct json_array_element_s *element; *size += 1; /* '['. */ if (0 < array->length) { /* if we have any elements we need to add a newline after our '['. */ *size += newline_size; *size += array->length - 1; /* ','s seperate each element. */ for (element = array->start; json_null != element; element = element->next) { /* each element gets an indent. */ *size += (depth + 1) * indent_size; if (json_write_pretty_get_value_size(element->value, depth + 1, indent_size, newline_size, size)) { /* value was malformed! */ return 1; } /* each element gets a newline too. */ *size += newline_size; } /* since we wrote out some elements, need to add a newline and indentation. */ /* to the trailing ']'. */ *size += depth * indent_size; } *size += 1; /* ']'. */ return 0; } json_weak int json_write_pretty_get_object_size(const struct json_object_s *object, size_t depth, size_t indent_size, size_t newline_size, size_t *size); int json_write_pretty_get_object_size(const struct json_object_s *object, size_t depth, size_t indent_size, size_t newline_size, size_t *size) { struct json_object_element_s *element; *size += 1; /* '{'. */ if (0 < object->length) { *size += newline_size; /* need a newline next. */ *size += object->length - 1; /* ','s seperate each element. */ for (element = object->start; json_null != element; element = element->next) { /* each element gets an indent and newline. */ *size += (depth + 1) * indent_size; *size += newline_size; if (json_write_get_string_size(element->name, size)) { /* string was malformed! */ return 1; } *size += 3; /* seperate each name/value pair with " : ". */ if (json_write_pretty_get_value_size(element->value, depth + 1, indent_size, newline_size, size)) { /* value was malformed! */ return 1; } } *size += depth * indent_size; } *size += 1; /* '}'. */ return 0; } json_weak int json_write_pretty_get_value_size(const struct json_value_s *value, size_t depth, size_t indent_size, size_t newline_size, size_t *size); int json_write_pretty_get_value_size(const struct json_value_s *value, size_t depth, size_t indent_size, size_t newline_size, size_t *size) { switch (value->type) { default: /* unknown value type found! */ return 1; case json_type_number: return json_write_get_number_size((struct json_number_s *)value->payload, size); case json_type_string: return json_write_get_string_size((struct json_string_s *)value->payload, size); case json_type_array: return json_write_pretty_get_array_size( (struct json_array_s *)value->payload, depth, indent_size, newline_size, size); case json_type_object: return json_write_pretty_get_object_size( (struct json_object_s *)value->payload, depth, indent_size, newline_size, size); case json_type_true: *size += 4; /* the string "true". */ return 0; case json_type_false: *size += 5; /* the string "false". */ return 0; case json_type_null: *size += 4; /* the string "null". */ return 0; } } json_weak char *json_write_pretty_value(const struct json_value_s *value, size_t depth, const char *indent, const char *newline, char *data); json_weak char *json_write_pretty_array(const struct json_array_s *array, size_t depth, const char *indent, const char *newline, char *data); char *json_write_pretty_array(const struct json_array_s *array, size_t depth, const char *indent, const char *newline, char *data) { size_t k, m; struct json_array_element_s *element; *data++ = '['; /* open the array. */ if (0 < array->length) { for (k = 0; '\0' != newline[k]; k++) { *data++ = newline[k]; } for (element = array->start; json_null != element; element = element->next) { if (element != array->start) { *data++ = ','; /* ','s seperate each element. */ for (k = 0; '\0' != newline[k]; k++) { *data++ = newline[k]; } } for (k = 0; k < depth + 1; k++) { for (m = 0; '\0' != indent[m]; m++) { *data++ = indent[m]; } } data = json_write_pretty_value(element->value, depth + 1, indent, newline, data); if (json_null == data) { /* value was malformed! */ return json_null; } } for (k = 0; '\0' != newline[k]; k++) { *data++ = newline[k]; } for (k = 0; k < depth; k++) { for (m = 0; '\0' != indent[m]; m++) { *data++ = indent[m]; } } } *data++ = ']'; /* close the array. */ return data; } json_weak char *json_write_pretty_object(const struct json_object_s *object, size_t depth, const char *indent, const char *newline, char *data); char *json_write_pretty_object(const struct json_object_s *object, size_t depth, const char *indent, const char *newline, char *data) { size_t k, m; struct json_object_element_s *element; *data++ = '{'; /* open the object. */ if (0 < object->length) { for (k = 0; '\0' != newline[k]; k++) { *data++ = newline[k]; } for (element = object->start; json_null != element; element = element->next) { if (element != object->start) { *data++ = ','; /* ','s seperate each element. */ for (k = 0; '\0' != newline[k]; k++) { *data++ = newline[k]; } } for (k = 0; k < depth + 1; k++) { for (m = 0; '\0' != indent[m]; m++) { *data++ = indent[m]; } } data = json_write_string(element->name, data); if (json_null == data) { /* string was malformed! */ return json_null; } /* " : "s seperate each name/value pair. */ *data++ = ' '; *data++ = ':'; *data++ = ' '; data = json_write_pretty_value(element->value, depth + 1, indent, newline, data); if (json_null == data) { /* value was malformed! */ return json_null; } } for (k = 0; '\0' != newline[k]; k++) { *data++ = newline[k]; } for (k = 0; k < depth; k++) { for (m = 0; '\0' != indent[m]; m++) { *data++ = indent[m]; } } } *data++ = '}'; /* close the object. */ return data; } json_weak char *json_write_pretty_value(const struct json_value_s *value, size_t depth, const char *indent, const char *newline, char *data); char *json_write_pretty_value(const struct json_value_s *value, size_t depth, const char *indent, const char *newline, char *data) { switch (value->type) { default: /* unknown value type found! */ return json_null; case json_type_number: return json_write_number((struct json_number_s *)value->payload, data); case json_type_string: return json_write_string((struct json_string_s *)value->payload, data); case json_type_array: return json_write_pretty_array((struct json_array_s *)value->payload, depth, indent, newline, data); case json_type_object: return json_write_pretty_object((struct json_object_s *)value->payload, depth, indent, newline, data); case json_type_true: data[0] = 't'; data[1] = 'r'; data[2] = 'u'; data[3] = 'e'; return data + 4; case json_type_false: data[0] = 'f'; data[1] = 'a'; data[2] = 'l'; data[3] = 's'; data[4] = 'e'; return data + 5; case json_type_null: data[0] = 'n'; data[1] = 'u'; data[2] = 'l'; data[3] = 'l'; return data + 4; } } void *json_write_pretty(const struct json_value_s *value, const char *indent, const char *newline, size_t *out_size) { size_t size = 0; size_t indent_size = 0; size_t newline_size = 0; char *data = json_null; char *data_end = json_null; if (json_null == value) { return json_null; } if (json_null == indent) { indent = " "; /* default to two spaces. */ } if (json_null == newline) { newline = "\n"; /* default to linux newlines. */ } while ('\0' != indent[indent_size]) { ++indent_size; /* skip non-null terminating characters. */ } while ('\0' != newline[newline_size]) { ++newline_size; /* skip non-null terminating characters. */ } if (json_write_pretty_get_value_size(value, 0, indent_size, newline_size, &size)) { /* value was malformed! */ return json_null; } size += 1; /* for the '\0' null terminating character. */ data = (char *)malloc(size); if (json_null == data) { /* malloc failed! */ return json_null; } data_end = json_write_pretty_value(value, 0, indent, newline, data); if (json_null == data_end) { /* bad chi occurred! */ free(data); return json_null; } /* null terminated the string. */ *data_end = '\0'; if (json_null != out_size) { *out_size = size; } return data; } #if defined(__clang__) #pragma clang diagnostic pop #elif defined(_MSC_VER) #pragma warning(pop) #endif #endif /* SHEREDOM_JSON_H_INCLUDED. */ vst3sdk-3.7.10.14+~4.13.3/source/vst/moduleinfo/jsoncxx.h000066400000000000000000000324721461511344300225020ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // // Category : // Filename : public.sdk/source/vst/moduleinfo/jsoncxx.h // Created by : Steinberg, 12/2021 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "json.h" #include #include #include #include #include #include #if defined(_MSC_VER) || __has_include() #include #define SMTG_HAS_CHARCONV #endif //------------------------------------------------------------------------ namespace JSON { namespace Detail { //------------------------------------------------------------------------ template struct Base { explicit Base (JsonT* o) : object_ (o) {} explicit Base (const Base& o) : object_ (o.object_) {} Base& operator= (const Base& o) = default; operator JsonT* () const { return object_; } JsonT* jsonValue () const { return object_; } protected: Base () : object_ (nullptr) {} JsonT* object_; }; //------------------------------------------------------------------------ template struct Iterator { explicit Iterator (JsonElement el) : el (el) {} bool operator== (const Iterator& other) const { return other.el == el; } bool operator!= (const Iterator& other) const { return other.el != el; } const JsonElement& operator* () const { return el; } const JsonElement& operator-> () const { return el; } Iterator& operator++ () { if (el) el = el.next (); return *this; } Iterator operator++ (int) { auto it = Iterator (el); operator++ (); return it; } private: JsonElement el; }; //------------------------------------------------------------------------ } // Detail struct Object; struct Array; struct String; struct Number; struct Boolean; //------------------------------------------------------------------------ enum class Type { Object, Array, String, Number, True, False, Null, }; //------------------------------------------------------------------------ struct SourceLocation { size_t offset; size_t line; size_t row; }; //------------------------------------------------------------------------ struct Value : Detail::Base { using Detail::Base::Base; using VariantT = std::variant; std::optional asObject () const; std::optional asArray () const; std::optional asString () const; std::optional asNumber () const; std::optional asBoolean () const; std::optional asNull () const; VariantT asVariant () const; Type type () const; SourceLocation getSourceLocation () const; }; //------------------------------------------------------------------------ struct Boolean { Boolean (size_t type) : value (type == json_type_true) {} operator bool () const { return value; } private: bool value; }; //------------------------------------------------------------------------ struct String : Detail::Base { using Detail::Base::Base; std::string_view text () const { return {jsonValue ()->string, jsonValue ()->string_size}; } SourceLocation getSourceLocation () const; }; //------------------------------------------------------------------------ struct Number : Detail::Base { using Detail::Base::Base; std::string_view text () const { return {jsonValue ()->number, jsonValue ()->number_size}; } std::optional getInteger () const; std::optional getDouble () const; }; //------------------------------------------------------------------------ struct ObjectElement : Detail::Base { using Detail::Base::Base; String name () const { return String (jsonValue ()->name); } Value value () const { return Value (jsonValue ()->value); } ObjectElement next () const { return ObjectElement (jsonValue ()->next); } }; //------------------------------------------------------------------------ struct Object : Detail::Base { using Detail::Base::Base; using Iterator = Detail::Iterator; size_t size () const { return jsonValue ()->length; } Iterator begin () const { return Iterator (ObjectElement (jsonValue ()->start)); } Iterator end () const { return Iterator (ObjectElement (nullptr)); } }; //------------------------------------------------------------------------ struct ArrayElement : Detail::Base { using Detail::Base::Base; Value value () const { return Value (jsonValue ()->value); } ArrayElement next () const { return ArrayElement (jsonValue ()->next); } }; //------------------------------------------------------------------------ struct Array : Detail::Base { using Detail::Base::Base; using Iterator = Detail::Iterator; size_t size () const { return jsonValue ()->length; } Iterator begin () const { return Iterator (ArrayElement (jsonValue ()->start)); } Iterator end () const { return Iterator (ArrayElement (nullptr)); } }; //------------------------------------------------------------------------ struct Document : Value { static std::variant parse (std::string_view data) { auto allocate = [] (void*, size_t allocSize) { return std::malloc (allocSize); }; json_parse_result_s parse_result {}; auto value = json_parse_ex (data.data (), data.size (), json_parse_flags_allow_json5 | json_parse_flags_allow_location_information, allocate, nullptr, &parse_result); if (value) return Document (value); return parse_result; } ~Document () noexcept { if (object_) std::free (object_); } Document (Document&& doc) noexcept { *this = std::move (doc); } Document& operator= (Document&& doc) noexcept { std::swap (object_, doc.object_); return *this; } private: using Value::Value; }; //------------------------------------------------------------------------ inline std::optional Value::asObject () const { if (type () != Type::Object) return {}; return Object (json_value_as_object (jsonValue ())); } //------------------------------------------------------------------------ inline std::optional Value::asArray () const { if (type () != Type::Array) return {}; return Array (json_value_as_array (jsonValue ())); } //------------------------------------------------------------------------ inline std::optional Value::asString () const { if (type () != Type::String) return {}; return String (json_value_as_string (jsonValue ())); } //------------------------------------------------------------------------ inline std::optional Value::asNumber () const { if (type () != Type::Number) return {}; return Number (json_value_as_number (jsonValue ())); } //------------------------------------------------------------------------ inline std::optional Value::asBoolean () const { if (type () == Type::True || type () == Type::False) return Boolean (jsonValue ()->type); return {}; } //------------------------------------------------------------------------ inline std::optional Value::asNull () const { if (type () != Type::Null) return {}; return nullptr; } //------------------------------------------------------------------------ inline Type Value::type () const { switch (jsonValue ()->type) { case json_type_string: return Type::String; case json_type_number: return Type::Number; case json_type_object: return Type::Object; case json_type_array: return Type::Array; case json_type_true: return Type::True; case json_type_false: return Type::False; case json_type_null: return Type::Null; } assert (false); return Type::Null; } //------------------------------------------------------------------------ inline Value::VariantT Value::asVariant () const { switch (type ()) { case Type::String: return *asString (); case Type::Number: return *asNumber (); case Type::Object: return *asObject (); case Type::Array: return *asArray (); case Type::True: return *asBoolean (); case Type::False: return *asBoolean (); case Type::Null: return *asNull (); } assert (false); return nullptr; } //------------------------------------------------------------------------ inline SourceLocation Value::getSourceLocation () const { auto exValue = reinterpret_cast (jsonValue ()); return {exValue->offset, exValue->line_no, exValue->row_no}; } //------------------------------------------------------------------------ inline SourceLocation String::getSourceLocation () const { auto exValue = reinterpret_cast (jsonValue ()); return {exValue->offset, exValue->line_no, exValue->row_no}; } //------------------------------------------------------------------------ inline std::optional Number::getInteger () const { #if defined(SMTG_HAS_CHARCONV) int64_t result {0}; auto res = std::from_chars (jsonValue ()->number, jsonValue ()->number + jsonValue ()->number_size, result); if (res.ec == std::errc ()) return result; return {}; #else int64_t result {0}; std::string str (jsonValue ()->number, jsonValue ()->number + jsonValue ()->number_size); if (std::sscanf (str.data (), "%lld", &result) != 1) return {}; return result; #endif } //------------------------------------------------------------------------ inline std::optional Number::getDouble () const { #if 1 // clang still has no floting point from_chars version size_t ctrl {0}; auto result = std::stod (std::string (jsonValue ()->number, jsonValue ()->number_size), &ctrl); if (ctrl > 0) return result; #else double result {0.}; auto res = std::from_chars (jsonValue ()->number, jsonValue ()->number + jsonValue ()->number_size, result); if (res.ec == std::errc ()) return result; #endif return {}; } //------------------------------------------------------------------------ inline std::string_view errorToString (json_parse_error_e error) { switch (error) { case json_parse_error_e::json_parse_error_none: return {}; case json_parse_error_e::json_parse_error_expected_comma_or_closing_bracket: return "json_parse_error_expected_comma_or_closing_bracket"; case json_parse_error_e::json_parse_error_expected_colon: return "json_parse_error_expected_colon"; case json_parse_error_e::json_parse_error_expected_opening_quote: return "json_parse_error_expected_opening_quote"; case json_parse_error_e::json_parse_error_invalid_string_escape_sequence: return "json_parse_error_invalid_string_escape_sequence"; case json_parse_error_e::json_parse_error_invalid_number_format: return "json_parse_error_invalid_number_format"; case json_parse_error_e::json_parse_error_invalid_value: return "json_parse_error_invalid_value"; case json_parse_error_e::json_parse_error_premature_end_of_buffer: return "json_parse_error_premature_end_of_buffer"; case json_parse_error_e::json_parse_error_invalid_string: return "json_parse_error_invalid_string"; case json_parse_error_e::json_parse_error_allocator_failed: return "json_parse_error_allocator_failed"; case json_parse_error_e::json_parse_error_unexpected_trailing_characters: return "json_parse_error_unexpected_trailing_characters"; case json_parse_error_e::json_parse_error_unknown: return "json_parse_error_unknown"; } return {}; } //------------------------------------------------------------------------ } // JSON vst3sdk-3.7.10.14+~4.13.3/source/vst/moduleinfo/moduleinfo.h000066400000000000000000000070451461511344300231450ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // // Category : moduleinfo // Filename : public.sdk/source/vst/moduleinfo/moduleinfo.h // Created by : Steinberg, 12/2021 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include #include //------------------------------------------------------------------------ namespace Steinberg { //------------------------------------------------------------------------ struct ModuleInfo { //------------------------------------------------------------------------ struct FactoryInfo { std::string vendor; std::string url; std::string email; int32_t flags {0}; }; //------------------------------------------------------------------------ struct Snapshot { double scaleFactor {1.}; std::string path; }; using SnapshotList = std::vector; //------------------------------------------------------------------------ struct ClassInfo { std::string cid; std::string category; std::string name; std::string vendor; std::string version; std::string sdkVersion; std::vector subCategories; SnapshotList snapshots; int32_t cardinality {0x7FFFFFFF}; uint32_t flags {0}; }; //------------------------------------------------------------------------ struct Compatibility { std::string newCID; std::vector oldCID; }; using ClassList = std::vector; using CompatibilityList = std::vector; std::string name; std::string version; FactoryInfo factoryInfo; ClassList classes; CompatibilityList compatibility; }; //------------------------------------------------------------------------ } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/moduleinfo/moduleinfocreator.cpp000066400000000000000000000224121461511344300250530ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // // Category : moduleinfo // Filename : public.sdk/source/vst/moduleinfo/moduleinfocreator.cpp // Created by : Steinberg, 12/2021 // Description : utility functions to create moduleinfo json files // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "moduleinfocreator.h" #include "jsoncxx.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg::ModuleInfoLib { using namespace VST3; namespace { //------------------------------------------------------------------------ struct JSON5Writer { private: std::ostream& stream; bool beautify; bool lastIsComma {false}; int32_t intend {0}; void doBeautify () { if (beautify) { stream << '\n'; for (int i = 0; i < intend; ++i) stream << " "; } } void writeComma () { if (lastIsComma) return; stream << ","; lastIsComma = true; } void startObject () { stream << "{"; ++intend; lastIsComma = false; } void endObject () { --intend; doBeautify (); stream << "}"; lastIsComma = false; } void startArray () { stream << "["; ++intend; lastIsComma = false; } void endArray () { --intend; doBeautify (); stream << "]"; lastIsComma = false; } public: JSON5Writer (std::ostream& stream, bool beautify = true) : stream (stream), beautify (beautify) { } void string (std::string_view str) { stream << "\"" << str << "\""; lastIsComma = false; } void boolean (bool val) { stream << (val ? "true" : "false"); lastIsComma = false; } template void value (ValueT val) { stream << val; lastIsComma = false; } template void object (Proc proc) { startObject (); proc (); endObject (); } template void array (Iterator begin, Iterator end, Proc proc) { startArray (); while (begin != end) { doBeautify (); proc (begin); ++begin; writeComma (); } endArray (); } template void keyValue (std::string_view key, Proc proc) { doBeautify (); string (key); stream << ": "; proc (); writeComma (); } }; //------------------------------------------------------------------------ void writeSnapshots (const ModuleInfo::SnapshotList& snapshots, JSON5Writer& w) { w.keyValue ("Snapshots", [&] () { w.array (snapshots.begin (), snapshots.end (), [&] (const auto& el) { w.object ([&] () { w.keyValue ("Scale Factor", [&] () { w.value (el->scaleFactor); }); w.keyValue ("Path", [&] () { w.string (el->path); }); }); }); }); } //------------------------------------------------------------------------ void writeClassInfo (const ModuleInfo::ClassInfo& cls, JSON5Writer& w) { w.keyValue ("CID", [&] () { w.string (cls.cid); }); w.keyValue ("Category", [&] () { w.string (cls.category); }); w.keyValue ("Name", [&] () { w.string (cls.name); }); w.keyValue ("Vendor", [&] () { w.string (cls.vendor); }); w.keyValue ("Version", [&] () { w.string (cls.version); }); w.keyValue ("SDKVersion", [&] () { w.string (cls.sdkVersion); }); const auto& sc = cls.subCategories; if (!sc.empty ()) { w.keyValue ("Sub Categories", [&] () { w.array (sc.begin (), sc.end (), [&] (const auto& cat) { w.string (*cat); }); }); } w.keyValue ("Class Flags", [&] () { w.value (cls.flags); }); w.keyValue ("Cardinality", [&] () { w.value (cls.cardinality); }); writeSnapshots (cls.snapshots, w); } //------------------------------------------------------------------------ void writePluginCompatibility (const ModuleInfo::CompatibilityList& compat, JSON5Writer& w) { if (compat.empty ()) return; w.keyValue ("Compatibility", [&] () { w.array (compat.begin (), compat.end (), [&] (auto& el) { w.object ([&] () { w.keyValue ("New", [&] () { w.string (el->newCID); }); w.keyValue ("Old", [&] () { w.array (el->oldCID.begin (), el->oldCID.end (), [&] (auto& oldEl) { w.string (*oldEl); }); }); }); }); }); } //------------------------------------------------------------------------ void writeFactoryInfo (const ModuleInfo::FactoryInfo& fi, JSON5Writer& w) { w.keyValue ("Factory Info", [&] () { w.object ([&] () { w.keyValue ("Vendor", [&] () { w.string (fi.vendor); }); w.keyValue ("URL", [&] () { w.string (fi.url); }); w.keyValue ("E-Mail", [&] () { w.string (fi.email); }); w.keyValue ("Flags", [&] () { w.object ([&] () { w.keyValue ("Unicode", [&] () { w.boolean (fi.flags & PFactoryInfo::kUnicode); }); w.keyValue ("Classes Discardable", [&] () { w.boolean (fi.flags & PFactoryInfo::kClassesDiscardable); }); w.keyValue ("Component Non Discardable", [&] () { w.boolean (fi.flags & PFactoryInfo::kComponentNonDiscardable); }); }); }); }); }); } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ ModuleInfo createModuleInfo (const VST3::Hosting::Module& module, bool includeDiscardableClasses) { ModuleInfo info; const auto& factory = module.getFactory (); auto factoryInfo = factory.info (); info.name = module.getName (); auto pos = info.name.find_last_of ('.'); if (pos != std::string::npos) info.name.erase (pos); info.factoryInfo.vendor = factoryInfo.vendor (); info.factoryInfo.url = factoryInfo.url (); info.factoryInfo.email = factoryInfo.email (); info.factoryInfo.flags = factoryInfo.flags (); if (factoryInfo.classesDiscardable () == false || (factoryInfo.classesDiscardable () && includeDiscardableClasses)) { auto snapshots = VST3::Hosting::Module::getSnapshots (module.getPath ()); for (const auto& ci : factory.classInfos ()) { ModuleInfo::ClassInfo classInfo; classInfo.cid = ci.ID ().toString (); classInfo.category = ci.category (); classInfo.name = ci.name (); classInfo.vendor = ci.vendor (); classInfo.version = ci.version (); classInfo.sdkVersion = ci.sdkVersion (); classInfo.subCategories = ci.subCategories (); classInfo.cardinality = ci.cardinality (); classInfo.flags = ci.classFlags (); auto snapshotIt = std::find_if (snapshots.begin (), snapshots.end (), [&] (const auto& el) { return el.uid == ci.ID (); }); if (snapshotIt != snapshots.end ()) { for (auto& s : snapshotIt->images) { std::string_view path (s.path); if (path.find (module.getPath ()) == 0) path.remove_prefix (module.getPath ().size () + 1); classInfo.snapshots.emplace_back ( ModuleInfo::Snapshot {s.scaleFactor, {path.data (), path.size ()}}); } snapshots.erase (snapshotIt); } info.classes.emplace_back (std::move (classInfo)); } } return info; } //------------------------------------------------------------------------ void outputJson (const ModuleInfo& info, std::ostream& output) { JSON5Writer w (output); w.object ([&] () { w.keyValue ("Name", [&] () { w.string (info.name); }); w.keyValue ("Version", [&] () { w.string (info.version); }); writeFactoryInfo (info.factoryInfo, w); writePluginCompatibility (info.compatibility, w); w.keyValue ("Classes", [&] () { w.array (info.classes.begin (), info.classes.end (), [&] (const auto& cls) { w.object ([&] () { writeClassInfo (*cls, w); }); }); }); }); } //------------------------------------------------------------------------ } // Steinberg::ModuleInfoLib vst3sdk-3.7.10.14+~4.13.3/source/vst/moduleinfo/moduleinfocreator.h000066400000000000000000000063131461511344300245220ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // // Category : moduleinfo // Filename : public.sdk/source/vst/moduleinfo/moduleinfocreator.h // Created by : Steinberg, 12/2021 // Description : utility functions to create moduleinfo json files // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "moduleinfo.h" #include "public.sdk/source/vst/hosting/module.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg::ModuleInfoLib { //------------------------------------------------------------------------ /** create a ModuleInfo from a module * * @param module module to create the module info from * @param includeDiscardableClasses if true adds the current available classes to the module info * @return a ModuleInfo struct with the classes and factory info of the module */ ModuleInfo createModuleInfo (const VST3::Hosting::Module& module, bool includeDiscardableClasses); //------------------------------------------------------------------------ /** output the ModuleInfo as json to the stream * * @param info module info * @param output output stream */ void outputJson (const ModuleInfo& info, std::ostream& output); //------------------------------------------------------------------------ } // Steinberg::ModuelInfoLib vst3sdk-3.7.10.14+~4.13.3/source/vst/moduleinfo/moduleinfoparser.cpp000066400000000000000000000420711461511344300247130ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // // Category : moduleinfo // Filename : public.sdk/source/vst/moduleinfo/moduleinfoparser.cpp // Created by : Steinberg, 01/2022 // Description : utility functions to parse moduleinfo json files // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "moduleinfoparser.h" #include "jsoncxx.h" #include "pluginterfaces/base/ipluginbase.h" #include #include //------------------------------------------------------------------------ namespace Steinberg::ModuleInfoLib { namespace { //------------------------------------------------------------------------ void printJsonParseError (json_parse_result_s& parseResult, std::ostream& errorOut) { errorOut << "error : " << JSON::errorToString (static_cast (parseResult.error)) << '\n'; errorOut << "offset : " << parseResult.error_offset << '\n'; errorOut << "line no: " << parseResult.error_line_no << '\n'; errorOut << "row no : " << parseResult.error_row_no << '\n'; } //------------------------------------------------------------------------ struct parse_error : std::exception { parse_error (const std::string& str, const JSON::Value& value) : str (str), location (value.getSourceLocation ()) { addLocation (location); } parse_error (const std::string& str, const JSON::String& value) : str (str), location (value.getSourceLocation ()) { addLocation (location); } const char* what () const noexcept override { return str.data (); } private: void addLocation (const JSON::SourceLocation& loc) { str += '\n'; str += "offset:"; str += std::to_string (loc.offset); str += '\n'; str += "line:"; str += std::to_string (loc.line); str += '\n'; str += "row:"; str += std::to_string (loc.row); str += '\n'; } std::string str; JSON::SourceLocation location; }; //------------------------------------------------------------------------ struct ModuleInfoJsonParser { ModuleInfoJsonParser () = default; std::string_view getText (const JSON::Value& value) const { if (auto str = value.asString ()) return str->text (); throw parse_error ("Expect a String here", value); } template T getInteger (const JSON::Value& value) const { if (auto number = value.asNumber ()) { if (auto result = number->getInteger ()) { if (result > static_cast (std::numeric_limits::max ()) || result < static_cast (std::numeric_limits::min ())) throw parse_error ("Value is out of range here", value); return static_cast (*result); } throw parse_error ("Expect an Integer here", value); } throw parse_error ("Expect a Number here", value); } double getDouble (const JSON::Value& value) const { if (auto number = value.asNumber ()) { if (auto result = number->getDouble ()) return *result; throw parse_error ("Expect a Double here", value); } throw parse_error ("Expect a Number here", value); } void parseFactoryInfo (const JSON::Value& value) { enum ParsedBits { Vendor = 1 << 0, URL = 1 << 1, EMail = 1 << 2, Flags = 1 << 3, }; uint32_t parsed {0}; if (auto obj = value.asObject ()) { for (const auto& el : *obj) { auto elementName = el.name ().text (); if (elementName == "Vendor") { if (parsed & ParsedBits::Vendor) throw parse_error ("Only one 'Vendor' key allowed", el.name ()); parsed |= ParsedBits::Vendor; info.factoryInfo.vendor = getText (el.value ()); } else if (elementName == "URL") { if (parsed & ParsedBits::URL) throw parse_error ("Only one 'URL' key allowed", el.name ()); parsed |= ParsedBits::URL; info.factoryInfo.url = getText (el.value ()); } else if (elementName == "E-Mail") { if (parsed & ParsedBits::EMail) throw parse_error ("Only one 'E-Mail' key allowed", el.name ()); parsed |= ParsedBits::EMail; info.factoryInfo.email = getText (el.value ()); } else if (elementName == "Flags") { if (parsed & ParsedBits::Flags) throw parse_error ("Only one 'Flags' key allowed", el.name ()); auto flags = el.value ().asObject (); if (!flags) throw parse_error ("Expect 'Flags' to be a JSON Object", el.name ()); for (const auto& flag : *flags) { auto flagName = flag.name ().text (); auto flagValue = flag.value ().asBoolean (); if (!flagValue) throw parse_error ("Flag must be a boolean", flag.value ()); if (flagName == "Classes Discardable") { if (*flagValue) info.factoryInfo.flags |= PFactoryInfo::kClassesDiscardable; } else if (flagName == "Component Non Discardable") { if (*flagValue) info.factoryInfo.flags |= PFactoryInfo::kComponentNonDiscardable; } else if (flagName == "Unicode") { if (*flagValue) info.factoryInfo.flags |= PFactoryInfo::kUnicode; } else throw parse_error ("Unknown flag", flag.name ()); } parsed |= ParsedBits::Flags; } } } if (!(parsed & ParsedBits::Vendor)) throw std::logic_error ("Missing 'Vendor' in Factory Info"); if (!(parsed & ParsedBits::URL)) throw std::logic_error ("Missing 'URL' in Factory Info"); if (!(parsed & ParsedBits::EMail)) throw std::logic_error ("Missing 'EMail' in Factory Info"); if (!(parsed & ParsedBits::Flags)) throw std::logic_error ("Missing 'Flags' in Factory Info"); } void parseClasses (const JSON::Value& value) { enum ParsedBits { CID = 1 << 0, Category = 1 << 1, Name = 1 << 2, Vendor = 1 << 3, Version = 1 << 4, SDKVersion = 1 << 5, SubCategories = 1 << 6, ClassFlags = 1 << 7, Snapshots = 1 << 8, Cardinality = 1 << 9, }; auto array = value.asArray (); if (!array) throw parse_error ("Expect Classes Array", value); for (const auto& classInfoEl : *array) { auto classInfo = classInfoEl.value ().asObject (); if (!classInfo) throw parse_error ("Expect Class Object", classInfoEl.value ()); ModuleInfo::ClassInfo ci {}; uint32_t parsed {0}; for (const auto& el : *classInfo) { auto elementName = el.name ().text (); if (elementName == "CID") { if (parsed & ParsedBits::CID) throw parse_error ("Only one 'CID' key allowed", el.name ()); ci.cid = getText (el.value ()); parsed |= ParsedBits::CID; } else if (elementName == "Category") { if (parsed & ParsedBits::Category) throw parse_error ("Only one 'Category' key allowed", el.name ()); ci.category = getText (el.value ()); parsed |= ParsedBits::Category; } else if (elementName == "Name") { if (parsed & ParsedBits::Name) throw parse_error ("Only one 'Name' key allowed", el.name ()); ci.name = getText (el.value ()); parsed |= ParsedBits::Name; } else if (elementName == "Vendor") { if (parsed & ParsedBits::Vendor) throw parse_error ("Only one 'Vendor' key allowed", el.name ()); ci.vendor = getText (el.value ()); parsed |= ParsedBits::Vendor; } else if (elementName == "Version") { if (parsed & ParsedBits::Version) throw parse_error ("Only one 'Version' key allowed", el.name ()); ci.version = getText (el.value ()); parsed |= ParsedBits::Version; } else if (elementName == "SDKVersion") { if (parsed & ParsedBits::SDKVersion) throw parse_error ("Only one 'SDKVersion' key allowed", el.name ()); ci.sdkVersion = getText (el.value ()); parsed |= ParsedBits::SDKVersion; } else if (elementName == "Sub Categories") { if (parsed & ParsedBits::SubCategories) throw parse_error ("Only one 'Sub Categories' key allowed", el.name ()); auto subCatArr = el.value ().asArray (); if (!subCatArr) throw parse_error ("Expect Array here", el.value ()); for (const auto& catEl : *subCatArr) { auto cat = getText (catEl.value ()); ci.subCategories.emplace_back (cat); } parsed |= ParsedBits::SubCategories; } else if (elementName == "Class Flags") { if (parsed & ParsedBits::ClassFlags) throw parse_error ("Only one 'Class Flags' key allowed", el.name ()); ci.flags = getInteger (el.value ()); parsed |= ParsedBits::ClassFlags; } else if (elementName == "Cardinality") { if (parsed & ParsedBits::Cardinality) throw parse_error ("Only one 'Cardinality' key allowed", el.name ()); ci.cardinality = getInteger (el.value ()); parsed |= ParsedBits::Cardinality; } else if (elementName == "Snapshots") { if (parsed & ParsedBits::Snapshots) throw parse_error ("Only one 'Snapshots' key allowed", el.name ()); auto snapArr = el.value ().asArray (); if (!snapArr) throw parse_error ("Expect Array here", el.value ()); for (const auto& snapEl : *snapArr) { auto snap = snapEl.value ().asObject (); if (!snap) throw parse_error ("Expect Object here", snapEl.value ()); ModuleInfo::Snapshot snapshot; for (const auto& spEl : *snap) { auto spElName = spEl.name ().text (); if (spElName == "Path") snapshot.path = getText (spEl.value ()); else if (spElName == "Scale Factor") snapshot.scaleFactor = getDouble (spEl.value ()); else throw parse_error ("Unexpected key", spEl.name ()); } if (snapshot.scaleFactor == 0. || snapshot.path.empty ()) throw parse_error ("Missing Snapshot keys", snapEl.value ()); ci.snapshots.emplace_back (std::move (snapshot)); } parsed |= ParsedBits::Snapshots; } else throw parse_error ("Unexpected key", el.name ()); } if (!(parsed & ParsedBits::CID)) throw parse_error ("'CID' key missing", classInfoEl.value ()); if (!(parsed & ParsedBits::Category)) throw parse_error ("'Category' key missing", classInfoEl.value ()); if (!(parsed & ParsedBits::Name)) throw parse_error ("'Name' key missing", classInfoEl.value ()); if (!(parsed & ParsedBits::Vendor)) throw parse_error ("'Vendor' key missing", classInfoEl.value ()); if (!(parsed & ParsedBits::Version)) throw parse_error ("'Version' key missing", classInfoEl.value ()); if (!(parsed & ParsedBits::SDKVersion)) throw parse_error ("'SDK Version' key missing", classInfoEl.value ()); if (!(parsed & ParsedBits::ClassFlags)) throw parse_error ("'Class Flags' key missing", classInfoEl.value ()); if (!(parsed & ParsedBits::Cardinality)) throw parse_error ("'Cardinality' key missing", classInfoEl.value ()); info.classes.emplace_back (std::move (ci)); } } void parseCompatibility (const JSON::Value& value) { auto arr = value.asArray (); if (!arr) throw parse_error ("Expect Array here", value); for (const auto& el : *arr) { auto obj = el.value ().asObject (); if (!obj) throw parse_error ("Expect Object here", el.value ()); ModuleInfo::Compatibility compat; for (const auto& objEl : *obj) { auto elementName = objEl.name ().text (); if (elementName == "New") compat.newCID = getText (objEl.value ()); else if (elementName == "Old") { auto oldElArr = objEl.value ().asArray (); if (!oldElArr) throw parse_error ("Expect Array here", objEl.value ()); for (const auto& old : *oldElArr) { compat.oldCID.emplace_back (getText (old.value ())); } } } if (compat.newCID.empty ()) throw parse_error ("Expect New CID here", el.value ()); if (compat.oldCID.empty ()) throw parse_error ("Expect Old CID here", el.value ()); info.compatibility.emplace_back (std::move (compat)); } } void parse (const JSON::Document& doc) { auto docObj = doc.asObject (); if (!docObj) throw parse_error ("Unexpected", doc); enum ParsedBits { Name = 1 << 0, Version = 1 << 1, FactoryInfo = 1 << 2, Compatibility = 1 << 3, Classes = 1 << 4, }; uint32_t parsed {0}; for (const auto& el : *docObj) { auto elementName = el.name ().text (); if (elementName == "Name") { if (parsed & ParsedBits::Name) throw parse_error ("Only one 'Name' key allowed", el.name ()); parsed |= ParsedBits::Name; info.name = getText (el.value ()); } else if (elementName == "Version") { if (parsed & ParsedBits::Version) throw parse_error ("Only one 'Version' key allowed", el.name ()); parsed |= ParsedBits::Version; info.version = getText (el.value ()); } else if (elementName == "Factory Info") { if (parsed & ParsedBits::FactoryInfo) throw parse_error ("Only one 'Factory Info' key allowed", el.name ()); parseFactoryInfo (el.value ()); parsed |= ParsedBits::FactoryInfo; } else if (elementName == "Compatibility") { if (parsed & ParsedBits::Compatibility) throw parse_error ("Only one 'Compatibility' key allowed", el.name ()); parseCompatibility (el.value ()); parsed |= ParsedBits::Compatibility; } else if (elementName == "Classes") { if (parsed & ParsedBits::Classes) throw parse_error ("Only one 'Classes' key allowed", el.name ()); parseClasses (el.value ()); parsed |= ParsedBits::Classes; } else { throw parse_error ("Unexpected JSON Token", el.name ()); } } if (!(parsed & ParsedBits::Name)) throw std::logic_error ("'Name' key missing"); if (!(parsed & ParsedBits::Version)) throw std::logic_error ("'Version' key missing"); if (!(parsed & ParsedBits::FactoryInfo)) throw std::logic_error ("'Factory Info' key missing"); if (!(parsed & ParsedBits::Classes)) throw std::logic_error ("'Classes' key missing"); } ModuleInfo&& takeInfo () { return std::move (info); } private: ModuleInfo info; }; //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ std::optional parseJson (std::string_view jsonData, std::ostream* optErrorOutput) { auto docVar = JSON::Document::parse (jsonData); if (auto res = std::get_if (&docVar)) { if (optErrorOutput) printJsonParseError (*res, *optErrorOutput); return {}; } auto doc = std::get_if (&docVar); assert (doc); try { ModuleInfoJsonParser parser; parser.parse (*doc); return parser.takeInfo (); } catch (std::exception& error) { if (optErrorOutput) *optErrorOutput << error.what () << '\n'; return {}; } // unreachable } //------------------------------------------------------------------------ std::optional parseCompatibilityJson (std::string_view jsonData, std::ostream* optErrorOutput) { auto docVar = JSON::Document::parse (jsonData); if (auto res = std::get_if (&docVar)) { if (optErrorOutput) printJsonParseError (*res, *optErrorOutput); return {}; } auto doc = std::get_if (&docVar); assert (doc); try { ModuleInfoJsonParser parser; parser.parseCompatibility (*doc); return parser.takeInfo ().compatibility; } catch (std::exception& error) { if (optErrorOutput) *optErrorOutput << error.what () << '\n'; return {}; } // unreachable } //------------------------------------------------------------------------ } // Steinberg::ModuelInfoLib vst3sdk-3.7.10.14+~4.13.3/source/vst/moduleinfo/moduleinfoparser.h000066400000000000000000000066401461511344300243620ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // // Category : moduleinfo // Filename : public.sdk/source/vst/moduleinfo/moduleinfoparser.h // Created by : Steinberg, 01/2022 // Description : utility functions to parse moduleinfo json files // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "moduleinfo.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg::ModuleInfoLib { //------------------------------------------------------------------------ /** parse a json formatted string to a ModuleInfo struct * * @param jsonData a string view to a json formatted string * @param optErrorOutput optional error output stream where to print parse error * @return ModuleInfo if parsing succeeded */ std::optional parseJson (std::string_view jsonData, std::ostream* optErrorOutput); //------------------------------------------------------------------------ /** parse a json formatted string to a ModuleInfo::CompatibilityList * * @param jsonData a string view to a json formatted string * @param optErrorOutput optional error output stream where to print parse error * @return ModuleInfo::CompatibilityList if parsing succeeded */ std::optional parseCompatibilityJson (std::string_view jsonData, std::ostream* optErrorOutput); //------------------------------------------------------------------------ } // Steinberg::ModuelInfoLib vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/000077500000000000000000000000001461511344300205155ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/000077500000000000000000000000001461511344300213065ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/busactivation.cpp000066400000000000000000000111031461511344300246610ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/busactivation.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/bus/busactivation.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // BusActivationTest //------------------------------------------------------------------------ BusActivationTest::BusActivationTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API BusActivationTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); int32 numTotalBusses = 0; int32 numFailedActivations = 0; for (MediaType type = kAudio; type < kNumMediaTypes; type++) { int32 numInputs = vstPlug->getBusCount (type, kInput); int32 numOutputs = vstPlug->getBusCount (type, kOutput); numTotalBusses += (numInputs + numOutputs); for (int32 i = 0; i < numInputs + numOutputs; ++i) { BusDirection busDirection = i < numInputs ? kInput : kOutput; int32 busIndex = busDirection == kInput ? i : i - numInputs; BusInfo busInfo = {}; if (vstPlug->getBusInfo (type, busDirection, busIndex, busInfo) != kResultTrue) { addErrorMessage (testResult, STR ("IComponent::getBusInfo (..) failed.")); return false; } addMessage (testResult, printf (" Bus Activation: %s %s Bus (%d) (%s)", busDirection == kInput ? "Input" : "Output", type == kAudio ? "Audio" : "Event", busIndex, busInfo.busType == kMain ? "kMain" : "kAux")); if ((busInfo.flags & BusInfo::kDefaultActive) == false) { if (vstPlug->activateBus (type, busDirection, busIndex, true) != kResultOk) numFailedActivations++; if (vstPlug->activateBus (type, busDirection, busIndex, false) != kResultOk) numFailedActivations++; } else if ((busInfo.flags & BusInfo::kDefaultActive) == true) { if (vstPlug->activateBus (type, busDirection, busIndex, false) != kResultOk) numFailedActivations++; if (vstPlug->activateBus (type, busDirection, busIndex, true) != kResultOk) numFailedActivations++; } } } if (numFailedActivations > 0) addErrorMessage (testResult, STR ("Bus activation failed.")); return (numFailedActivations == 0); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/busactivation.h000066400000000000000000000054441461511344300243410ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/busactivation.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Bus Activation. \ingroup TestClass */ //------------------------------------------------------------------------ class BusActivationTest : public TestBase { public: BusActivationTest (ITestPlugProvider* plugProvider); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Bus Activation") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/busconsistency.cpp000066400000000000000000000106621461511344300250720ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/busconsistency.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/bus/busconsistency.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // BusConsistencyTest //------------------------------------------------------------------------ BusConsistencyTest::BusConsistencyTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API BusConsistencyTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); bool failed = false; int32 numFalseDescQueries = 0; for (MediaType mediaType = kAudio; mediaType < kNumMediaTypes; mediaType++) { for (BusDirection dir = kInput; dir <= kOutput; dir++) { int32 numBusses = vstPlug->getBusCount (mediaType, dir); if (numBusses > 0) { auto* busArray = new BusInfo[numBusses]; if (busArray) { // get all bus descriptions and save them in an array int32 busIndex; for (busIndex = 0; busIndex < numBusses; busIndex++) { memset (&busArray[busIndex], 0, sizeof (BusInfo)); vstPlug->getBusInfo (mediaType, dir, busIndex, busArray[busIndex]); } // test by getting descriptions randomly and comparing with saved ones int32 randIndex = 0; BusInfo info = {}; for (busIndex = 0; busIndex <= numBusses * TestDefaults::instance ().numIterations; busIndex++) { randIndex = rand () % (numBusses); memset (&info, 0, sizeof (BusInfo)); /*tresult result =*/vstPlug->getBusInfo (mediaType, dir, randIndex, info); if (memcmp ((void*)&busArray[randIndex], (void*)&info, sizeof (BusInfo)) != TestDefaults::instance ().buffersAreEqual) { failed |= true; numFalseDescQueries++; } } delete[] busArray; } } } } if (numFalseDescQueries > 0) { addErrorMessage ( testResult, printf ( "The component returned %i inconsistent buses! (getBusInfo () returns sometime different info for the same bus!", numFalseDescQueries)); } return failed == false; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/busconsistency.h000066400000000000000000000054511461511344300245370ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/busconsistency.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Bus Consistency. \ingroup TestClass */ //------------------------------------------------------------------------ class BusConsistencyTest : public TestBase { public: BusConsistencyTest (ITestPlugProvider* plugProvider); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Bus Consistency") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/businvalidindex.cpp000066400000000000000000000076561461511344300252200ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/businvalidindex.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/bus/businvalidindex.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // BusInvalidIndexTest //------------------------------------------------------------------------ BusInvalidIndexTest::BusInvalidIndexTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API BusInvalidIndexTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); bool failed = false; int32 numInvalidDesc = 0; for (MediaType mediaType = kAudio; mediaType < kNumMediaTypes; mediaType++) { int32 numBusses = vstPlug->getBusCount (mediaType, kInput) + vstPlug->getBusCount (mediaType, kOutput); for (BusDirection dir = kInput; dir <= kOutput; dir++) { BusInfo descBefore = {}; BusInfo descAfter = {}; int32 randIndex = 0; // todo: rand with negative numbers for (int32 i = 0; i <= numBusses * TestDefaults::instance ().numIterations; ++i) { randIndex = rand (); if (0 > randIndex || randIndex > numBusses) { /*tresult result =*/vstPlug->getBusInfo (mediaType, dir, randIndex, descAfter); if (memcmp ((void*)&descBefore, (void*)&descAfter, sizeof (BusInfo)) != 0) { failed |= true; numInvalidDesc++; } } } } } if (numInvalidDesc > 0) { addErrorMessage (testResult, printf ("The component returned %i buses queried with an invalid index!", numInvalidDesc)); } return failed == false; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/businvalidindex.h000066400000000000000000000054601461511344300246540ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/businvalidindex.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Bus Invalid Index. \ingroup TestClass */ //------------------------------------------------------------------------ class BusInvalidIndexTest : public TestBase { public: BusInvalidIndexTest (ITestPlugProvider* plugProvider); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Bus Invalid Index") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/checkaudiobusarrangement.cpp000066400000000000000000000103161461511344300270500ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/checkaudiobusarrangement.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/bus/checkaudiobusarrangement.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // CheckAudioBusArrangementTest //------------------------------------------------------------------------ CheckAudioBusArrangementTest::CheckAudioBusArrangementTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool CheckAudioBusArrangementTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); int32 numInputs = vstPlug->getBusCount (kAudio, kInput); int32 numOutputs = vstPlug->getBusCount (kAudio, kOutput); int32 arrangementMismatchs = 0; FUnknownPtr audioEffect (vstPlug); if (audioEffect) { for (int32 i = 0; i < numInputs + numOutputs; ++i) { BusDirection dir = i < numInputs ? kInput : kOutput; int32 busIndex = dir == kInput ? i : i - numInputs; addMessage (testResult, printf (" Check %s Audio Bus Arrangement (%d)", dir == kInput ? "Input" : "Output", busIndex)); BusInfo busInfo = {}; if (vstPlug->getBusInfo (kAudio, dir, busIndex, busInfo) == kResultTrue) { SpeakerArrangement arrangement; if (audioEffect->getBusArrangement (dir, busIndex, arrangement) == kResultTrue) { if (busInfo.channelCount != SpeakerArr::getChannelCount (arrangement)) { arrangementMismatchs++; addErrorMessage (testResult, STR ("channelCount is inconsistent!")); } } else { addErrorMessage (testResult, STR ("IAudioProcessor::getBusArrangement (..) failed!")); return false; } } else { addErrorMessage (testResult, STR ("IComponent::getBusInfo (..) failed!")); return false; } } } return (arrangementMismatchs == 0); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/checkaudiobusarrangement.h000066400000000000000000000055371461511344300265260ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/checkaudiobusarrangement.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Check Audio Bus Arrangement. \ingroup TestClass */ //------------------------------------------------------------------------ class CheckAudioBusArrangementTest : public TestBase { public: CheckAudioBusArrangementTest (ITestPlugProvider* plugProvider); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Check Audio Bus Arrangement") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/scanbusses.cpp000066400000000000000000000105461461511344300241710ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/scanbusses.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/bus/scanbusses.h" #include "public.sdk/source/vst/utility/stringconvert.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ScanBussesTest //------------------------------------------------------------------------ ScanBussesTest::ScanBussesTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API ScanBussesTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); int32 numBusses = 0; for (MediaType mediaType = kAudio; mediaType < kNumMediaTypes; mediaType++) { int32 numInputs = vstPlug->getBusCount (mediaType, kInput); int32 numOutputs = vstPlug->getBusCount (mediaType, kOutput); numBusses += (numInputs + numOutputs); if ((mediaType == (kNumMediaTypes - 1)) && (numBusses == 0)) { addErrorMessage (testResult, STR ("This component does not export any buses!!!")); return false; } addMessage (testResult, printf ("=> %s Buses: [%d In(s) => %d Out(s)]", mediaType == kAudio ? "Audio" : "Event", numInputs, numOutputs)); for (int32 i = 0; i < numInputs + numOutputs; ++i) { BusDirection busDirection = i < numInputs ? kInput : kOutput; int32 busIndex = busDirection == kInput ? i : i - numInputs; BusInfo busInfo = {}; if (vstPlug->getBusInfo (mediaType, busDirection, busIndex, busInfo) == kResultTrue) { auto busName = VST3::StringConvert::convert (busInfo.name); if (busName.empty ()) { addErrorMessage (testResult, printf ("Bus %d has no name!!!", busIndex)); return false; } addMessage ( testResult, printf (" %s[%d]: \"%s\" (%s-%s) ", busDirection == kInput ? "In " : "Out", busIndex, busName.data (), busInfo.busType == kMain ? "Main" : "Aux", busInfo.kDefaultActive ? "Default Active" : "Default Inactive")); } else return false; } } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/scanbusses.h000066400000000000000000000056521461511344300236400ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/scanbusses.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Scan Buses. \ingroup TestClass */ //------------------------------------------------------------------------ class ScanBussesTest : public TestBase { public: //------------------------------------------------------------------------ ScanBussesTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Scan Buses") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/sidechainarrangement.cpp000066400000000000000000000131441461511344300261700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/sidechainarrangement.cpp // Created by : Steinberg, 11/2019 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/bus/sidechainarrangement.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // SideChainArrangementTest //------------------------------------------------------------------------ SideChainArrangementTest::SideChainArrangementTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API SideChainArrangementTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); bool failed = false; FUnknownPtr audioEffect (vstPlug); if (!audioEffect) return failed; // get the side chain arrangements // set Main/first Input and output to Mono // get the current arrangement and compare // check if Audio sideChain is supported bool hasInputSideChain = false; int32 numInBusses = vstPlug->getBusCount (kAudio, kInput); if (numInBusses < 2) return true; for (int32 busIndex = 0; busIndex < numInBusses; busIndex++) { BusInfo info; if (vstPlug->getBusInfo (kAudio, kInput, busIndex, info) != kResultTrue) { addErrorMessage (testResult, STR ("IComponent::getBusInfo (..) failed.")); continue; } if (info.busType == kAux) hasInputSideChain = true; } if (!hasInputSideChain) return true; auto* inputArrArray = new SpeakerArrangement[numInBusses]; for (int32 busIndex = 0; busIndex < numInBusses; busIndex++) { if (audioEffect->getBusArrangement (kInput, busIndex, inputArrArray[busIndex]) != kResultTrue) { addErrorMessage (testResult, STR ("IComponent::getBusArrangement (..) failed.")); } } int32 numOutBusses = vstPlug->getBusCount (kAudio, kOutput); SpeakerArrangement* outputArrArray = nullptr; if (numOutBusses > 0) { outputArrArray = new SpeakerArrangement[numOutBusses]; for (int32 busIndex = 0; busIndex < numOutBusses; busIndex++) { if (audioEffect->getBusArrangement (kOutput, busIndex, outputArrArray[busIndex]) != kResultTrue) { addErrorMessage (testResult, STR ("IComponent::getBusArrangement (..) failed.")); } } outputArrArray[0] = kSpeakerM; } inputArrArray[0] = kSpeakerM; if (audioEffect->setBusArrangements (inputArrArray, numInBusses, outputArrArray, numOutBusses) == kResultTrue) { for (int32 busIndex = 0; busIndex < numInBusses; busIndex++) { SpeakerArrangement tmp; if (audioEffect->getBusArrangement (kInput, busIndex, tmp) == kResultTrue) { if (tmp != inputArrArray[busIndex]) { addErrorMessage ( testResult, printf ( "Input %d: setBusArrangements was returning kResultTrue but getBusArrangement returns different arrangement!", busIndex)); failed = true; } } } for (int32 busIndex = 0; busIndex < numOutBusses; busIndex++) { SpeakerArrangement tmp; if (audioEffect->getBusArrangement (kOutput, busIndex, tmp) != kResultTrue) { if (tmp != outputArrArray[busIndex]) { addErrorMessage ( testResult, printf ( "Output %d: setBusArrangements was returning kResultTrue but getBusArrangement returns different arrangement!", busIndex)); failed = true; } } } } return failed == false; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/bus/sidechainarrangement.h000066400000000000000000000055071461511344300256410ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/bus/sidechainarrangement.h // Created by : Steinberg, 11/2020 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test SideChain Arrangement. \ingroup TestClass */ //------------------------------------------------------------------------ class SideChainArrangementTest : public TestBase { public: SideChainArrangementTest (ITestPlugProvider* plugProvider); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("SideChain Arrangement") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/000077500000000000000000000000001461511344300221325ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/editorclasses.cpp000066400000000000000000000074101461511344300255040ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/editorclasses.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/general/editorclasses.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // EditorClassesTest //------------------------------------------------------------------------ EditorClassesTest::EditorClassesTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API EditorClassesTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); // no controller is allowed... if (FUnknownPtr (vstPlug).getInterface ()) { addMessage (testResult, STR ("Processor and edit controller united.")); return true; } TUID controllerClassTUID; if (vstPlug->getControllerClassId (controllerClassTUID) != kResultOk) { addMessage (testResult, STR ("This component does not export an edit controller class ID!!!")); return true; } FUID controllerClassUID; controllerClassUID = FUID::fromTUID (controllerClassTUID); if (controllerClassUID.isValid () == false) { addErrorMessage (testResult, STR ("The edit controller class has no valid UID!!!")); return false; } addMessage (testResult, STR ("This component has an edit controller class")); char8 cidString[50]; controllerClassUID.toRegistryString (cidString); addMessage (testResult, printf (" Controller CID: %s", cidString)); return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/editorclasses.h000066400000000000000000000057111461511344300251530ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/editorclasses.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Scan Editor Classes. \ingroup TestClass */ //------------------------------------------------------------------------ class EditorClassesTest : public TestBase { public: //------------------------------------------------------------------------ EditorClassesTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Scan Editor Classes") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/midilearn.cpp000066400000000000000000000071401461511344300246040ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/midilearn.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/general/midilearn.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/ivstmidilearn.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // MidiLearnTest //------------------------------------------------------------------------ MidiLearnTest::MidiLearnTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API MidiLearnTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); if (!controller) { addMessage (testResult, STR ("No Edit Controller supplied!")); return true; } FUnknownPtr midiLearn (controller); if (!midiLearn) { addMessage (testResult, STR ("No MIDI Learn interface supplied!")); return true; } if (midiLearn->onLiveMIDIControllerInput (0, 0, ControllerNumbers::kCtrlPan) != kResultTrue) addMessage (testResult, STR ("onLiveMIDIControllerInput do not return kResultTrue!")); if (midiLearn->onLiveMIDIControllerInput (0, 0, ControllerNumbers::kCtrlVibratoDelay) != kResultTrue) addMessage (testResult, STR ("onLiveMIDIControllerInput do not return kResultTrue!")); return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/midilearn.h000066400000000000000000000056531461511344300242600ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/midilearn.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test MIDI Learn. \ingroup TestClass */ //------------------------------------------------------------------------ class MidiLearnTest : public TestBase { public: //------------------------------------------------------------------------ MidiLearnTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("MIDI Learn") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/midimapping.cpp000066400000000000000000000124021461511344300251330ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/midimapping.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/general/midimapping.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // MidiMappingTest //------------------------------------------------------------------------ MidiMappingTest::MidiMappingTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API MidiMappingTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); if (!controller) { addMessage (testResult, STR ("No Edit Controller supplied!")); return true; } FUnknownPtr midiMapping (controller); if (!midiMapping) { addMessage (testResult, STR ("No MIDI Mapping interface supplied!")); return true; } int32 numParameters = controller->getParameterCount (); int32 eventBusCount = vstPlug->getBusCount (kEvent, kInput); bool interruptProcess = false; std::unordered_set parameterIds; for (int32 i = 0; i < numParameters; ++i) { ParameterInfo parameterInfo; if (controller->getParameterInfo (i, parameterInfo) == kResultTrue) parameterIds.insert (parameterInfo.id); } for (int32 bus = 0; bus < eventBusCount + 1; bus++) { if (interruptProcess) break; BusInfo info; if (vstPlug->getBusInfo (kEvent, kInput, bus, info) == kResultTrue) { if (bus >= eventBusCount) { addMessage (testResult, STR ("getBusInfo supplied for an unknown event bus")); break; } } else break; for (int16 channel = 0; channel < info.channelCount; channel++) { if (interruptProcess) break; int32 foundCount = 0; // test with the cc outside the valid range too (>=kCountCtrlNumber) for (CtrlNumber cc = 0; cc < kCountCtrlNumber + 1; cc++) { ParamID tag; if (midiMapping->getMidiControllerAssignment (bus, channel, cc, tag) == kResultTrue) { if (bus >= eventBusCount) { addMessage (testResult, STR ("MIDI Mapping supplied for an unknown event bus")); interruptProcess = true; break; } if (cc >= kCountCtrlNumber) { addMessage ( testResult, STR ( "MIDI Mapping supplied for a wrong ControllerNumbers value (bigger than the max)")); break; } if (parameterIds.find (tag) == parameterIds.end ()) { addErrorMessage ( testResult, printf ("Unknown ParamID [%d] returned for MIDI Mapping", tag)); return false; } foundCount++; } else { if (bus >= eventBusCount) interruptProcess = true; } } if (foundCount == 0 && (bus < eventBusCount)) { addMessage ( testResult, printf ( "MIDI Mapping getMidiControllerAssignment (%d, %d) : no assignment available!", bus, channel)); } } } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/midimapping.h000066400000000000000000000056651461511344300246150ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/midimapping.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test MIDI Mapping. \ingroup TestClass */ //------------------------------------------------------------------------ class MidiMappingTest : public TestBase { public: //------------------------------------------------------------------------ MidiMappingTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("MIDI Mapping") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/parameterfunctionname.cpp000066400000000000000000000131421461511344300272260ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/parameterfunctionname.cpp // Created by : Steinberg, 04/2020 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/general/parameterfunctionname.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/vst/ivstparameterfunctionname.h" #include "pluginterfaces/vst/ivstunits.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ParameterFunctionNameTest //------------------------------------------------------------------------ ParameterFunctionNameTest::ParameterFunctionNameTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API ParameterFunctionNameTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); if (!controller) { addMessage (testResult, STR ("No Edit Controller supplied!")); return true; } FUnknownPtr iParameterFunctionName (controller); if (!iParameterFunctionName) { addMessage (testResult, STR ("No IParameterFunctionName support.")); return true; } addMessage (testResult, STR ("IParameterFunctionName supported.")); int32 numParameters = controller->getParameterCount (); if (numParameters <= 0) { addMessage (testResult, STR ("This component does not export any parameters!")); return true; } // used for ID check std::unordered_map paramIds; for (int32 i = 0; i < numParameters; ++i) { ParameterInfo paramInfo = {}; tresult result = controller->getParameterInfo (i, paramInfo); if (result != kResultOk) { addErrorMessage (testResult, printf ("Parameter %03d: is missing!!!", i)); return false; } int32 paramId = paramInfo.id; if (paramId < 0) { addErrorMessage (testResult, printf ("Parameter %03d (id=%d): Invalid Id!!!", i, paramId)); return false; } auto search = paramIds.find (paramId); if (search != paramIds.end ()) { addErrorMessage (testResult, printf ("Parameter %03d (id=%d): ID already used by idx=%03d!!!", i, paramId, search->second)); return false; } else paramIds[paramId] = i; } // end for each parameter FUnknownPtr iUnitInfo2 (controller); const CString arrayFunctionName[] = {FunctionNameType::kCompGainReduction, FunctionNameType::kCompGainReductionMax, FunctionNameType::kCompGainReductionPeakHold, FunctionNameType::kCompResetGainReductionMax, FunctionNameType::kLowLatencyMode, FunctionNameType::kRandomize, FunctionNameType::kDryWetMix}; ParamID paramID; for (auto item : arrayFunctionName) { if (iParameterFunctionName->getParameterIDFromFunctionName (kRootUnitId, item, paramID) == kResultTrue) { addMessage (testResult, printf ("FunctionName %s supported => paramID %d", item, paramID)); auto search = paramIds.find (paramID); if (search == paramIds.end ()) { addErrorMessage ( testResult, printf ("Parameter (id=%d) for FunctionName %s: not Found!!!", paramID, item)); return false; } } } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/parameterfunctionname.h000066400000000000000000000057551461511344300267060ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/ParameterFunctionNameTest.h // Created by : Steinberg, 04/2020 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Parameter Function Name. \ingroup TestClass */ //------------------------------------------------------------------------ class ParameterFunctionNameTest : public TestBase { public: //------------------------------------------------------------------------ ParameterFunctionNameTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Parameter Function Name") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/plugcompat.cpp000066400000000000000000000104521461511344300250130ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/plugcompat.cpp // Created by : Steinberg, 03/2022 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/general/plugcompat.h" #include "public.sdk/source/vst/moduleinfo/moduleinfoparser.h" #include "pluginterfaces/base/funknownimpl.h" #include //------------------------------------------------------------------------ namespace Steinberg { //------------------------------------------------------------------------ namespace { //------------------------------------------------------------------------ struct StringStream : U::ImplementsNonDestroyable> { std::string str; tresult PLUGIN_API read (void*, int32, int32*) override { return kNotImplemented; } tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten) override { str.append (static_cast (buffer), numBytes); if (numBytesWritten) *numBytesWritten = numBytes; return kResultTrue; } tresult PLUGIN_API seek (int64, int32, int64*) override { return kNotImplemented; } tresult PLUGIN_API tell (int64* pos) override { return kNotImplemented; } }; //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ bool checkPluginCompatibility (VST3::Hosting::Module::Ptr& module, IPtr compat, std::ostream* errorStream) { bool failure = false; if (auto moduleInfoPath = VST3::Hosting::Module::getModuleInfoPath (module->getPath ())) { if (errorStream) { *errorStream << "Warning: The module contains a moduleinfo.json file and the module factory exports a IPluginCompatibility class. The moduleinfo.json one is preferred.\n"; } } StringStream strStream; if (compat->getCompatibilityJSON (&strStream) != kResultTrue) { if (errorStream) { *errorStream << "Error: Call to IPluginCompatiblity::getCompatibilityJSON (IBStream*) failed\n"; } failure = true; } else if (auto result = ModuleInfoLib::parseCompatibilityJson (strStream.str, errorStream)) { // TODO: Check that the "New" classes are part of the Module; } else { failure = true; } return !failure; } //------------------------------------------------------------------------ } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/plugcompat.h000066400000000000000000000052471461511344300244660ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/plugcompat.h // Created by : Steinberg, 03/2022 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/hosting/module.h" #include "pluginterfaces/base/iplugincompatibility.h" #include //------------------------------------------------------------------------ namespace Steinberg { //------------------------------------------------------------------------ bool checkPluginCompatibility (VST3::Hosting::Module::Ptr& module, IPtr compat, std::ostream* errorStream); //------------------------------------------------------------------------ } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/scanparameters.cpp000066400000000000000000000270221461511344300256510ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/scanparameters.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/general/scanparameters.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/vst/ivstunits.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ScanParametersTest //------------------------------------------------------------------------ ScanParametersTest::ScanParametersTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API ScanParametersTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); if (!controller) { addMessage (testResult, STR ("No Edit Controller supplied!")); return true; } int32 numParameters = controller->getParameterCount (); if (numParameters <= 0) { addMessage (testResult, STR ("This component does not export any parameters!")); return true; } addMessage (testResult, printf ("This component exports %d parameter(s)", numParameters)); FUnknownPtr iUnitInfo2 (controller); if (!iUnitInfo2 && numParameters > 20) { addMessage ( testResult, STR ("Note: it could be better to use UnitInfo in order to sort Parameters (>20).")); } struct SUnitCount { int32 idx {-1}; int32 numParams {0}; std::string name; }; std::unordered_map unitIds; // root unit unitIds[kRootUnitId].name = "Root"; if (iUnitInfo2) { for (int32 ui = 0, uc = iUnitInfo2->getUnitCount (); ui < uc; ++ui) { UnitInfo uinfo = {}; if (iUnitInfo2->getUnitInfo (ui, uinfo) == kResultTrue) { // check if ID is already used by another unit if (uinfo.id != kRootUnitId) { auto search = unitIds.find (uinfo.id); if (search != unitIds.end ()) { addErrorMessage ( testResult, printf ("=>Unit %03d (id=%d): ID already used by idx=%03d!!!", ui, uinfo.id, search->second.idx)); return false; } } std::string unitTitle; unitTitle = VST3::StringConvert::convert (uinfo.name); unitIds[uinfo.id] = {ui, 0, unitTitle}; // init counter } else { addErrorMessage (testResult, printf ("IUnitInfo::getUnitInfo (%d..) failed.", ui)); return false; } } } // used for ID check std::unordered_map paramIds; bool foundBypass = false; for (int32 i = 0; i < numParameters; ++i) { ParameterInfo paramInfo = {}; tresult result = controller->getParameterInfo (i, paramInfo); if (result != kResultOk) { addErrorMessage (testResult, printf ("=>Parameter %03d: is missing!!!", i)); return false; } int32 paramId = paramInfo.id; if (paramId < 0) { addErrorMessage (testResult, printf ("=>Parameter %03d (id=%d): Invalid Id!!!", i, paramId)); return false; } // check if ID is already used by another parameter auto search = paramIds.find (paramId); if (search != paramIds.end ()) { addErrorMessage (testResult, printf ("=>Parameter %03d (id=%d): ID already used by idx=%03d!!!", i, paramId, search->second)); return false; } paramIds[paramId] = i; const tchar* paramType = kEmptyString; if (paramInfo.stepCount < 0) { addErrorMessage ( testResult, printf ("=>Parameter %03d (id=%d): invalid stepcount (<0)!!!", i, paramId)); return false; } if (paramInfo.stepCount == 0) paramType = STR ("Float"); else if (paramInfo.stepCount == 1) paramType = STR ("Toggle"); else paramType = STR ("Discrete"); auto paramTitle = VST3::StringConvert::convert (paramInfo.title); auto paramUnits = VST3::StringConvert::convert (paramInfo.units); addMessage ( testResult, printf ( " Parameter %03d (id=%d): [title=\"%s\"] [unit=\"%s\"] [type = %s, default = %lf, unit = %d]", i, paramId, paramTitle.data (), paramUnits.data (), paramType, paramInfo.defaultNormalizedValue, paramInfo.unitId)); if (paramTitle.empty ()) { addErrorMessage (testResult, printf ("=>Parameter %03d (id=%d): has no title!!!", i, paramId)); return false; } if (paramInfo.defaultNormalizedValue != -1.f && (paramInfo.defaultNormalizedValue < 0. || paramInfo.defaultNormalizedValue > 1.)) { addErrorMessage ( testResult, printf ("=>Parameter %03d (id=%d): defaultValue is not normalized!!!", i, paramId)); return false; } int32 unitId = paramInfo.unitId; if (unitId < -1) { addErrorMessage ( testResult, printf ("=>Parameter %03d (id=%d): No appropriate unit ID!!!", i, paramId)); return false; } if (unitId >= -1) { FUnknownPtr iUnitInfo (controller); if (!iUnitInfo && unitId != kRootUnitId) { addErrorMessage ( testResult, printf ( "IUnitInfo interface is missing, but ParameterInfo::unitID is not %03d (kRootUnitId).", kRootUnitId)); return false; } auto search = unitIds.find (unitId); if (search != unitIds.end ()) { unitIds[unitId].numParams++; } else if (unitId != kRootUnitId) { addErrorMessage ( testResult, printf ( "=>Parameter %03d (id=%d) has a UnitID (%d), which isn't defined in IUnitInfo.", i, paramId, unitId)); return false; } else // if (unitId == kRootUnitId) unitIds[kRootUnitId].numParams++; } //---check for incompatible flags--------------------- // kCanAutomate and kIsReadOnly if (((paramInfo.flags & ParameterInfo::kCanAutomate) != 0) && ((paramInfo.flags & ParameterInfo::kIsReadOnly) != 0)) { addErrorMessage ( testResult, printf ( "=>Parameter %03d (id=%d) must not be kCanAutomate and kReadOnly at the same time.", i, paramId)); return false; } // kIsProgramChange and kIsReadOnly if (((paramInfo.flags & ParameterInfo::kIsProgramChange) != 0) && ((paramInfo.flags & ParameterInfo::kIsReadOnly) != 0)) { addErrorMessage ( testResult, printf ( "=>Parameter %03d (id=%d) must not be kIsProgramChange and kReadOnly at the same time.", i, paramId)); return false; } // kIsBypass only or kIsBypass and kCanAutomate only if (((paramInfo.flags & ParameterInfo::kIsBypass) != 0) && !((paramInfo.flags == ParameterInfo::kIsBypass) || ((paramInfo.flags & ParameterInfo::kCanAutomate) != 0))) { addErrorMessage ( testResult, printf ( "=>Parameter %03d (id=%d) is kIsBypass and could have only kCanAutomate as other flag at the same time.", i, paramId)); return false; } //---maybe wrong combination of flags------------------- // kIsBypass but not kCanAutomate if (paramInfo.flags == ParameterInfo::kIsBypass) { addMessage (testResult, printf ("=>Parameter %03d (id=%d) is kIsBypass, but not kCanAutomate!", i, paramId)); } // kIsHidden and (kCanAutomate or not kIsReadOnly) if (paramInfo.flags == ParameterInfo::kIsHidden) { if ((paramInfo.flags & ParameterInfo::kCanAutomate) != 0) { addMessage ( testResult, printf ("=>Parameter %03d (id=%d) is kIsHidden and kCanAutomate!", i, paramId)); } if ((paramInfo.flags & ParameterInfo::kIsReadOnly) == 0) { addMessage (testResult, printf ("=>Parameter %03d (id=%d) is kIsHidden and NOT kIsReadOnly!", i, paramId)); } } // kIsProgramChange and not kIsList if (((paramInfo.flags & ParameterInfo::kIsProgramChange) != 0) && ((paramInfo.flags & ParameterInfo::kIsList) == 0)) { addMessage (testResult, printf ("=>Parameter %03d (id=%d) is kIsProgramChange, but not a kIsList!", i, paramId)); } // kIsReadOnly and kIsWrapAround if (((paramInfo.flags & ParameterInfo::kIsReadOnly) != 0) && ((paramInfo.flags & ParameterInfo::kIsWrapAround) != 0)) { addMessage ( testResult, printf ("=>Parameter %03d (id=%d) is kIsReadOnly, no need to be kIsWrapAround too!", i, paramId)); } //---check bypass-------------------------------------- if ((paramInfo.flags & ParameterInfo::kIsBypass) != 0) { if (!foundBypass) foundBypass = true; else { addErrorMessage ( testResult, printf ("=>Parameter %03d (id=%d): There can only be one bypass (kIsBypass).", i, paramId)); return false; } } } // end for each parameter for (const auto& unit : unitIds) { if (unit.second.numParams > 128) // 128 due to MIDI CC mapped parameter { addMessage ( testResult, printf ( "Note: This Unit (idx=%d, id=%d, name=\"%s\") has %d parameters: it could be better to split it in sub-units!.", unit.second.idx, unit.first, unit.second.name.data (), unit.second.numParams)); } } if (foundBypass == false) { StringResult subCat; plugProvider->getSubCategories (subCat); if (subCat.get ().find ("Instrument") != std::string::npos) addMessage (testResult, STR ("No bypass parameter found. This is an instrument.")); else addMessage (testResult, STR ("Warning: No bypass parameter found. Is this intended ?")); } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/scanparameters.h000066400000000000000000000057041461511344300253210ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/scanparameters.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Scan Parameters. \ingroup TestClass */ //------------------------------------------------------------------------ class ScanParametersTest : public TestBase { public: //------------------------------------------------------------------------ ScanParametersTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Scan Parameters") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/suspendresume.cpp000066400000000000000000000072761461511344300255540ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/suspendresume.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/general/suspendresume.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // SuspendResumeTest //------------------------------------------------------------------------ SuspendResumeTest::SuspendResumeTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : TestEnh (plugProvider, sampl) { } //------------------------------------------------------------------------ bool PLUGIN_API SuspendResumeTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); for (int32 i = 0; i < 3; ++i) { if (audioEffect) { if (audioEffect->canProcessSampleSize (kSample32) == kResultOk) processSetup.symbolicSampleSize = kSample32; else if (audioEffect->canProcessSampleSize (kSample64) == kResultOk) processSetup.symbolicSampleSize = kSample64; else { addErrorMessage (testResult, STR ("No appropriate symbolic sample size supported!")); return false; } if (audioEffect->setupProcessing (processSetup) != kResultOk) { addErrorMessage (testResult, STR ("Process setup failed!")); return false; } } tresult result = vstPlug->setActive (true); if (result != kResultOk) return false; result = vstPlug->setActive (false); if (result != kResultOk) return false; } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/suspendresume.h000066400000000000000000000057271461511344300252200ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/suspendresume.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Suspend/Resume. \ingroup TestClass */ //------------------------------------------------------------------------ class SuspendResumeTest : public TestEnh { public: //------------------------------------------------------------------------ SuspendResumeTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); DECLARE_VSTTEST ("Suspend/Resume") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/terminit.cpp000066400000000000000000000066131461511344300244770ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/terminit.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/general/terminit.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // TerminateInitializeTest //------------------------------------------------------------------------ TerminateInitializeTest::TerminateInitializeTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool TerminateInitializeTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); FUnknownPtr plugBase (vstPlug); if (!plugBase) { addErrorMessage (testResult, STR ("No IPluginBase interface available.")); return false; } bool result = true; if (plugBase->terminate () != kResultTrue) { addErrorMessage (testResult, STR ("IPluginBase::terminate () failed.")); result = false; } if (plugBase->initialize (TestingPluginContext::get ()) != kResultTrue) { addErrorMessage (testResult, STR ("IPluginBase::initialize (..) failed.")); result = false; } return result; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/general/terminit.h000066400000000000000000000057221461511344300241440ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/general/terminit.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Terminate/Initialize. \ingroup TestClass */ //------------------------------------------------------------------------ class TerminateInitializeTest : public TestBase { public: //------------------------------------------------------------------------ TerminateInitializeTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Terminate/Initialize") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/noteexpression/000077500000000000000000000000001461511344300236025ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/noteexpression/keyswitch.cpp000066400000000000000000000100521461511344300263160ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/noteexpression/keyswitch.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/noteexpression/keyswitch.h" #include "pluginterfaces/vst/ivstnoteexpression.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // KeyswitchTest //------------------------------------------------------------------------ KeyswitchTest::KeyswitchTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API KeyswitchTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); if (!controller) { addMessage (testResult, STR ("No Edit Controller supplied!")); return true; } FUnknownPtr keyswitch (controller); if (!keyswitch) { addMessage (testResult, STR ("No Keyswitch interface supplied!")); return true; } int32 eventBusCount = vstPlug->getBusCount (kEvent, kInput); for (int32 bus = 0; bus < eventBusCount; bus++) { BusInfo busInfo; vstPlug->getBusInfo (kEvent, kInput, bus, busInfo); for (int16 channel = 0; channel < busInfo.channelCount; channel++) { int32 count = keyswitch->getKeyswitchCount (bus, channel); if (count > 0) { addMessage (testResult, printf ("Keyswitch support bus[%d], channel[%d]: %d", bus, channel, count)); } for (int32 i = 0; i < count; ++i) { KeyswitchInfo info; if (keyswitch->getKeyswitchInfo (bus, channel, i, info) == kResultTrue) { } else { addErrorMessage ( testResult, printf ("Keyswitch getKeyswitchInfo (%d, %d, %d) return kResultFalse!", bus, channel, i)); return false; } } } } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/noteexpression/keyswitch.h000066400000000000000000000056601461511344300257740ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/noteexpression/keyswitch.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Keyswitch. \ingroup TestClass */ //------------------------------------------------------------------------ class KeyswitchTest : public TestBase { public: //------------------------------------------------------------------------ KeyswitchTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Keyswitch") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/noteexpression/noteexpression.cpp000066400000000000000000000146411461511344300274010ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/noteexpression/noteexpression.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/noteexpression/noteexpression.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/vst/ivstnoteexpression.h" #include "pluginterfaces/vst/ivstphysicalui.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // NoteExpressionTest //------------------------------------------------------------------------ NoteExpressionTest::NoteExpressionTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool PLUGIN_API NoteExpressionTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); if (!controller) { addMessage (testResult, STR ("No Edit Controller supplied!")); return true; } FUnknownPtr noteExpression (controller); if (!noteExpression) { addMessage (testResult, STR ("No Note Expression interface supplied!")); return true; } FUnknownPtr noteExpressionPUIMapping (controller); if (!noteExpressionPUIMapping) { addMessage (testResult, STR ("No Note Expression PhysicalUIMapping interface supplied!")); } int32 eventBusCount = vstPlug->getBusCount (kEvent, kInput); const uint32 maxPUI = kPUITypeCount; PhysicalUIMap puiArray[maxPUI]; PhysicalUIMapList puiMap; puiMap.count = maxPUI; puiMap.map = puiArray; for (uint32 i = 0; i < maxPUI; i++) { puiMap.map[i].physicalUITypeID = static_cast (i); } for (int32 bus = 0; bus < eventBusCount; bus++) { BusInfo busInfo; vstPlug->getBusInfo (kEvent, kInput, bus, busInfo); for (int16 channel = 0; channel < busInfo.channelCount; channel++) { int32 count = noteExpression->getNoteExpressionCount (bus, channel); if (count > 0) { addMessage (testResult, printf ("Note Expression count bus[%d], channel[%d]: %d", bus, channel, count)); } for (int32 i = 0; i < count; ++i) { NoteExpressionTypeInfo info; if (noteExpression->getNoteExpressionInfo (bus, channel, i, info) == kResultTrue) { addMessage (testResult, printf ("Note Expression TypeID: %d [%s]", info.typeId, VST3::StringConvert::convert (info.title).data ())); NoteExpressionTypeID id = info.typeId; NoteExpressionValue valueNormalized = info.valueDesc.defaultValue; String128 string; if (noteExpression->getNoteExpressionStringByValue ( bus, channel, id, valueNormalized, string) != kResultTrue) { addMessage ( testResult, printf ( "Note Expression getNoteExpressionStringByValue (%d, %d, %d) return kResultFalse!", bus, channel, id)); } if (noteExpression->getNoteExpressionValueByString ( bus, channel, id, string, valueNormalized) != kResultTrue) { addMessage ( testResult, printf ( "Note Expression getNoteExpressionValueByString (%d, %d, %d) return kResultFalse!", bus, channel, id)); } } else { addErrorMessage ( testResult, printf ( "Note Expression getNoteExpressionInfo (%d, %d, %d) return kResultFalse!", bus, channel, i)); return false; } } if (noteExpressionPUIMapping) { for (uint32 i = 0; i < maxPUI; i++) { puiMap.map[i].noteExpressionTypeID = kInvalidTypeID; } if (noteExpressionPUIMapping->getPhysicalUIMapping (bus, channel, puiMap) == kResultFalse) { addMessage ( testResult, printf ( "Note Expression getPhysicalUIMapping (%d, %d, ...) return kResultFalse!", bus, channel)); } else { for (uint32 i = 0; i < maxPUI; i++) { addMessage (testResult, printf ("Note Expression PhysicalUIMapping: %d => %d", puiMap.map[i].noteExpressionTypeID, puiMap.map[i].physicalUITypeID)); } } } } } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/noteexpression/noteexpression.h000066400000000000000000000057131461511344300270460ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/noteexpression/noteexpression.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Note Expression. \ingroup TestClass */ //------------------------------------------------------------------------ class NoteExpressionTest : public TestBase { public: //------------------------------------------------------------------------ NoteExpressionTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Note Expression") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/000077500000000000000000000000001461511344300226715ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/automation.cpp000066400000000000000000000250551461511344300255640ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/automation.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/automation.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // AutomationTest //------------------------------------------------------------------------ //------------------------------------------------------------------------ AutomationTest::AutomationTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl, int32 everyNSamples, int32 numParams, bool sampleAccuracy) : ProcessTest (plugProvider, sampl) , bypassId (kNoParamId) , countParamChanges (0) , everyNSamples (everyNSamples) , numParams (numParams) , sampleAccuracy (sampleAccuracy) , onceExecuted (false) { } //------------------------------------------------------------------------ AutomationTest::~AutomationTest () { } //------------------------------------------------------------------------ tresult PLUGIN_API AutomationTest::queryInterface (const TUID _iid, void** obj) { QUERY_INTERFACE (_iid, obj, FUnknown::iid, IParameterChanges); QUERY_INTERFACE (_iid, obj, Vst::IParameterChanges::iid, IParameterChanges); return ProcessTest::queryInterface (_iid, obj); } //------------------------------------------------------------------------ const char* AutomationTest::getName () const { static std::string text; const char* accTxt = "Sample"; if (!sampleAccuracy) accTxt = "Block"; text = "Accuracy: "; text += accTxt; if (numParams < 1) text += ", All Parameters"; else { text += ", "; text += std::to_string (numParams); text += " Parameters"; } text += ", Change every"; text += std::to_string (everyNSamples); text += " Samples"; return text.data (); } //------------------------------------------------------------------------ bool AutomationTest::setup () { onceExecuted = false; if (!ProcessTest::setup ()) return false; if (!controller) return false; if ((numParams < 1) || (numParams > controller->getParameterCount ())) numParams = controller->getParameterCount (); if (audioEffect && (numParams > 0)) { ParameterInfo inf = {}; for (int32 i = 0; i < numParams; ++i) { paramChanges.push_back (owned (new ParamChanges)); tresult r = controller->getParameterInfo (i, inf); if (r != kResultTrue) return false; if ((inf.flags & inf.kCanAutomate) != 0) paramChanges[i]->init (inf.id, processSetup.maxSamplesPerBlock); } for (int32 i = 0; i < controller->getParameterCount (); ++i) { tresult r = controller->getParameterInfo (i, inf); if (r != kResultTrue) return false; if ((inf.flags & inf.kIsBypass) != 0) { bypassId = inf.id; break; } } return true; } return numParams == 0; } //------------------------------------------------------------------------ bool AutomationTest::run (ITestResult* testResult) { if (!testResult) return false; printTestHeader (testResult); if (numParams == 0) addMessage (testResult, STR ("No Parameters present.")); bool ret = ProcessTest::run (testResult); return ret; } //------------------------------------------------------------------------ bool AutomationTest::teardown () { paramChanges.clear (); return ProcessTest::teardown (); } //------------------------------------------------------------------------ bool AutomationTest::preProcess (ITestResult* testResult) { if (!testResult) return false; if (paramChanges.empty ()) return numParams == 0; bool check = true; for (int32 i = 0; i < numParams; ++i) { paramChanges[i]->resetPoints (); int32 point = 0; for (int32 pos = 0; pos < processData.numSamples; pos++) { bool add = (rand () % everyNSamples) == 0; if (!onceExecuted) { if (pos == 0) { add = true; if (!sampleAccuracy) onceExecuted = true; } else if ((pos == 1) && sampleAccuracy) { add = true; onceExecuted = true; } } if (add) check &= paramChanges[i]->setPoint (point++, pos, ((float)(rand () % 1000000000)) / 1000000000.0); } if (check) processData.inputParameterChanges = this; } return check; } //------------------------------------------------------------------------ bool AutomationTest::postProcess (ITestResult* testResult) { if (!testResult) return false; if (paramChanges.empty ()) return numParams == 0; for (int32 i = 0; i < numParams; ++i) { if ((paramChanges[i]->getPointCount () > 0) && !paramChanges[i]->havePointsBeenRead (!sampleAccuracy)) { if (sampleAccuracy) addMessage (testResult, STR (" Not all points have been read via IParameterChanges")); else addMessage (testResult, STR (" No point at all has been read via IParameterChanges")); return true; // should not be a problem } } return true; } //------------------------------------------------------------------------ int32 AutomationTest::getParameterCount () { if (paramChanges.empty ()) return numParams; return static_cast (paramChanges.size ()); } //------------------------------------------------------------------------ IParamValueQueue* AutomationTest::getParameterData (int32 index) { if ((index >= 0) && (index < getParameterCount ())) return paramChanges[index]; return nullptr; } //------------------------------------------------------------------------ IParamValueQueue* AutomationTest::addParameterData (const ParamID& /*id*/, int32& /*index*/) { return nullptr; } //------------------------------------------------------------------------ // FlushParamTest //------------------------------------------------------------------------ FlushParamTest::FlushParamTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : AutomationTest (plugProvider, sampl, 100, 1, false) { } //------------------------------------------------------------------------ void FlushParamTest::prepareProcessData () { processData.numSamples = 0; processData.numInputs = 0; processData.numOutputs = 0; processData.inputs = nullptr; processData.outputs = nullptr; } //------------------------------------------------------------------------ bool PLUGIN_API FlushParamTest::run (ITestResult* testResult) { if (!vstPlug || !testResult || !audioEffect) return false; if (!canProcessSampleSize (testResult)) return true; printTestHeader (testResult); unprepareProcessing (); prepareProcessData (); audioEffect->setProcessing (true); preProcess (testResult); tresult result = audioEffect->process (processData); if (result != kResultOk) { addErrorMessage (testResult, STR ("The component failed to process without audio buffers!")); audioEffect->setProcessing (false); return false; } postProcess (testResult); audioEffect->setProcessing (false); return true; } //------------------------------------------------------------------------ // FlushParamTest2 //------------------------------------------------------------------------ FlushParamTest2::FlushParamTest2 (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : FlushParamTest (plugProvider, sampl) { } //------------------------------------------------------------------------ void FlushParamTest2::prepareProcessData () { prepareProcessing (); processData.numSamples = 0; // remember original processData config std::swap (numInputs, processData.numInputs); std::swap (numOutputs, processData.numOutputs); if (processData.inputs) std::swap (numChannelsIn, processData.inputs[0].numChannels); if (processData.outputs) std::swap (numChannelsOut, processData.outputs[0].numChannels); } //------------------------------------------------------------------------ bool FlushParamTest2::teardown () { // restore original processData config for correct deallocation std::swap (numInputs, processData.numInputs); std::swap (numOutputs, processData.numOutputs); if (processData.inputs) std::swap (numChannelsIn, processData.inputs[0].numChannels); if (processData.outputs) std::swap (numChannelsOut, processData.outputs[0].numChannels); return FlushParamTest::teardown (); } //------------------------------------------------------------------------ // FlushParamTest3 //------------------------------------------------------------------------ FlushParamTest3::FlushParamTest3 (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : FlushParamTest (plugProvider, sampl) { paramChanges.clear (); } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/automation.h000066400000000000000000000127401461511344300252260ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/automation.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { class ParamChanges; //------------------------------------------------------------------------ /** Test Automation. \ingroup TestClass */ //------------------------------------------------------------------------ class AutomationTest : public ProcessTest, public IParameterChanges { public: //------------------------------------------------------------------------ AutomationTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl, int32 everyNSamples, int32 numParams, bool sampleAccuracy); ~AutomationTest () override; const char* getName () const SMTG_OVERRIDE; // ITest bool PLUGIN_API setup () SMTG_OVERRIDE; bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; bool PLUGIN_API teardown () SMTG_OVERRIDE; // IParameterChanges int32 PLUGIN_API getParameterCount () SMTG_OVERRIDE; IParamValueQueue* PLUGIN_API getParameterData (int32 index) SMTG_OVERRIDE; IParamValueQueue* PLUGIN_API addParameterData (const ParamID& id, int32& index) SMTG_OVERRIDE; // FUnknown DELEGATE_REFCOUNT (ProcessTest) tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) override; //------------------------------------------------------------------------ protected: bool preProcess (ITestResult* testResult) SMTG_OVERRIDE; bool postProcess (ITestResult* testResult) SMTG_OVERRIDE; ParamID bypassId; using ParamChangeVector = std::vector>; ParamChangeVector paramChanges; int32 countParamChanges; int32 everyNSamples; int32 numParams; bool sampleAccuracy; bool onceExecuted; }; //------------------------------------------------------------------------ /** Test Parameters Flush (no Buffer). \ingroup TestClass */ //------------------------------------------------------------------------ class FlushParamTest : public AutomationTest { public: FlushParamTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Parameters Flush (no Buffer)") protected: virtual void prepareProcessData (); }; //------------------------------------------------------------------------ /** Test Parameters Flush 2 (no Buffer). \ingroup TestClass */ //------------------------------------------------------------------------ class FlushParamTest2 : public FlushParamTest { public: FlushParamTest2 (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); bool PLUGIN_API teardown () SMTG_OVERRIDE; DECLARE_VSTTEST ("Parameters Flush 2 (only numChannel==0)") protected: void prepareProcessData () SMTG_OVERRIDE; int32 numInputs {0}; int32 numOutputs {0}; int32 numChannelsIn {0}; int32 numChannelsOut {0}; }; //------------------------------------------------------------------------ /** Test Parameters Flush 3 (no Buffer, no parameter change). \ingroup TestClass */ //------------------------------------------------------------------------ class FlushParamTest3 : public FlushParamTest { public: FlushParamTest3 (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); DECLARE_VSTTEST ("Parameters Flush 2 (no Buffer, no parameter change)") protected: }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/process.cpp000066400000000000000000000230071461511344300250550ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/process.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/process.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ProcessTest //------------------------------------------------------------------------ ProcessTest::ProcessTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : TestEnh (plugProvider, sampl) { processData.numSamples = TestDefaults::instance ().defaultBlockSize; processData.symbolicSampleSize = sampl; processSetup.processMode = kRealtime; processSetup.symbolicSampleSize = sampl; processSetup.maxSamplesPerBlock = TestDefaults::instance ().maxBlockSize; processSetup.sampleRate = TestDefaults::instance ().defaultSampleRate; } //------------------------------------------------------------------------ bool PLUGIN_API ProcessTest::setup () { if (!TestEnh::setup ()) return false; if (!vstPlug || !audioEffect) return false; if (processSetup.symbolicSampleSize != processData.symbolicSampleSize) return false; if (audioEffect->canProcessSampleSize (processSetup.symbolicSampleSize) != kResultOk) return true; // this fails in run (..) prepareProcessing (); if (vstPlug->setActive (true) != kResultTrue) return false; return true; } //------------------------------------------------------------------------ bool PLUGIN_API ProcessTest::run (ITestResult* testResult) { if (!testResult || !audioEffect) return false; if (processSetup.symbolicSampleSize != processData.symbolicSampleSize) return false; if (!canProcessSampleSize (testResult)) return true; audioEffect->setProcessing (true); for (int32 i = 0; i < TestDefaults::instance ().numAudioBlocksToProcess; ++i) { if (!preProcess (testResult)) return false; tresult result = audioEffect->process (processData); if (result != kResultOk) { if (processSetup.symbolicSampleSize == kSample32) addErrorMessage (testResult, STR ("IAudioProcessor::process (..with kSample32..) failed.")); else addErrorMessage (testResult, STR ("IAudioProcessor::process (..with kSample64..) failed.")); audioEffect->setProcessing (false); return false; } if (!postProcess (testResult)) { audioEffect->setProcessing (false); return false; } } audioEffect->setProcessing (false); return true; } //------------------------------------------------------------------------ bool ProcessTest::preProcess (ITestResult* /*testResult*/) { return true; } //------------------------------------------------------------------------ bool ProcessTest::postProcess (ITestResult* /*testResult*/) { return true; } //------------------------------------------------------------------------ bool ProcessTest::canProcessSampleSize (ITestResult* testResult) { if (!testResult || !audioEffect) return false; if (processSetup.symbolicSampleSize != processData.symbolicSampleSize) return false; if (audioEffect->canProcessSampleSize (processSetup.symbolicSampleSize) != kResultOk) { if (processSetup.symbolicSampleSize == kSample32) addMessage (testResult, STR ("32bit Audio Processing not supported.")); else addMessage (testResult, STR ("64bit Audio Processing not supported.")); return false; } return true; } //------------------------------------------------------------------------ bool PLUGIN_API ProcessTest::teardown () { unprepareProcessing (); if (!vstPlug || (vstPlug->setActive (false) != kResultOk)) return false; return TestEnh::teardown (); } //------------------------------------------------------------------------ bool ProcessTest::prepareProcessing () { if (!vstPlug || !audioEffect) return false; if (audioEffect->setupProcessing (processSetup) == kResultOk) { processData.prepare (*vstPlug, 0, processSetup.symbolicSampleSize); for (BusDirection dir = kInput; dir <= kOutput; dir++) { int32 numBusses = vstPlug->getBusCount (kAudio, dir); AudioBusBuffers* audioBuffers = dir == kInput ? processData.inputs : processData.outputs; // new AudioBusBuffers [numBusses]; if (!setupBuffers (numBusses, audioBuffers, dir)) return false; if (dir == kInput) { processData.numInputs = numBusses; processData.inputs = audioBuffers; } else { processData.numOutputs = numBusses; processData.outputs = audioBuffers; } } return true; } return false; } //------------------------------------------------------------------------ bool ProcessTest::setupBuffers (int32 numBusses, AudioBusBuffers* audioBuffers, BusDirection dir) { if (((numBusses > 0) && !audioBuffers) || !vstPlug) return false; for (int32 busIndex = 0; busIndex < numBusses; busIndex++) // buses { BusInfo busInfo; if (vstPlug->getBusInfo (kAudio, dir, busIndex, busInfo) == kResultTrue) { if (!setupBuffers (audioBuffers[busIndex])) return false; if ((busInfo.flags & BusInfo::kDefaultActive) != 0) { for (int32 chIdx = 0; chIdx < busInfo.channelCount; chIdx++) // channels per bus audioBuffers[busIndex].silenceFlags |= (TestDefaults::instance ().channelIsSilent << chIdx); } } else return false; } return true; } //------------------------------------------------------------------------ bool ProcessTest::setupBuffers (AudioBusBuffers& audioBuffers) { if (processSetup.symbolicSampleSize != processData.symbolicSampleSize) return false; audioBuffers.silenceFlags = 0; for (int32 chIdx = 0; chIdx < audioBuffers.numChannels; chIdx++) { if (processSetup.symbolicSampleSize == kSample32) { if (audioBuffers.channelBuffers32) { audioBuffers.channelBuffers32[chIdx] = new Sample32[processSetup.maxSamplesPerBlock]; if (audioBuffers.channelBuffers32[chIdx]) memset (audioBuffers.channelBuffers32[chIdx], 0, processSetup.maxSamplesPerBlock * sizeof (Sample32)); else return false; } else return false; } else if (processSetup.symbolicSampleSize == kSample64) { if (audioBuffers.channelBuffers64) { audioBuffers.channelBuffers64[chIdx] = new Sample64[processSetup.maxSamplesPerBlock]; if (audioBuffers.channelBuffers64[chIdx]) memset (audioBuffers.channelBuffers64[chIdx], 0, processSetup.maxSamplesPerBlock * sizeof (Sample64)); else return false; } else return false; } else return false; } return true; } //------------------------------------------------------------------------ bool ProcessTest::unprepareProcessing () { bool ret = true; ret &= freeBuffers (processData.numInputs, processData.inputs); ret &= freeBuffers (processData.numOutputs, processData.outputs); processData.unprepare (); return ret; } //------------------------------------------------------------------------ bool ProcessTest::freeBuffers (int32 numBuses, AudioBusBuffers* buses) { if (processSetup.symbolicSampleSize != processData.symbolicSampleSize) return false; for (int32 busIndex = 0; busIndex < numBuses; busIndex++) { for (int32 chIdx = 0; chIdx < buses[busIndex].numChannels; chIdx++) { if (processSetup.symbolicSampleSize == kSample32) delete[] buses[busIndex].channelBuffers32[chIdx]; else if (processSetup.symbolicSampleSize == kSample64) delete[] buses[busIndex].channelBuffers64[chIdx]; else return false; } } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/process.h000066400000000000000000000074071461511344300245300ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/process.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/hosting/processdata.h" #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Process Test. \ingroup TestClass */ //------------------------------------------------------------------------ class ProcessTest : public TestEnh { public: //------------------------------------------------------------------------ ProcessTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); DECLARE_VSTTEST ("Process Test") // ITest bool PLUGIN_API setup () SMTG_OVERRIDE; bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; bool PLUGIN_API teardown () SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: virtual bool prepareProcessing (); ///< setup ProcessData and allocate buffers virtual bool unprepareProcessing (); ///< free dynamic memory of ProcessData virtual bool preProcess (ITestResult* testResult); ///< is called just before the process call virtual bool postProcess (ITestResult* testResult); ///< is called right after the process call bool setupBuffers (int32 numBusses, AudioBusBuffers* audioBuffers, BusDirection dir); bool setupBuffers (AudioBusBuffers& audioBuffers); bool freeBuffers (int32 numBuses, AudioBusBuffers* buses); bool canProcessSampleSize (ITestResult* testResult); ///< audioEffect has to be available HostProcessData processData; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processcontextrequirements.cpp000066400000000000000000000152561461511344300311350ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processcontextrequirements.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/processcontextrequirements.h" #include "public.sdk/source/vst/hosting/module.h" #include "public.sdk/source/vst/utility/processcontextrequirements.h" #include "public.sdk/source/vst/utility/versionparser.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace { //------------------------------------------------------------------------ VST3::Optional getPluginSDKVersion (ITestPlugProvider* plugProvider, ITestResult* testResult) { FUnknownPtr pp2 (plugProvider); if (!pp2) { addErrorMessage (testResult, STR ("Internal test Error. Expected Interface not there!")); return {}; } VST3::Hosting::PluginFactory pluginFactory (pp2->getPluginFactory ()); if (!pluginFactory.get ()) { addErrorMessage (testResult, STR ("Internal test Error. Expected PluginFactory not there!")); return {}; } FUID fuid; if (pp2->getComponentUID (fuid) != kResultTrue) { addErrorMessage (testResult, STR ("Internal test Error. Could not query the UID of the plug-in!")); return {}; } auto plugClassID = VST3::UID::fromTUID (fuid.toTUID ()); auto classInfos = pluginFactory.classInfos (); auto it = std::find_if (classInfos.begin (), classInfos.end (), [&] (const auto& element) { return element.ID () == plugClassID; }); if (it == classInfos.end ()) { addErrorMessage ( testResult, STR ("Internal test Error. Could not find the class info of the plug-in!")); return {}; } return VST3::Version::parse (it->sdkVersion ()); } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ // ProcessContextRequirementsTest //------------------------------------------------------------------------ ProcessContextRequirementsTest::ProcessContextRequirementsTest (ITestPlugProvider* plugProvider) : TestEnh (plugProvider, kSample32) { } //------------------------------------------------------------------------ bool PLUGIN_API ProcessContextRequirementsTest::setup () { return TestEnh::setup (); } //------------------------------------------------------------------------ bool PLUGIN_API ProcessContextRequirementsTest::run (ITestResult* testResult) { if (!vstPlug || !testResult || !audioEffect) return false; printTestHeader (testResult); // check if plug-in is build with any earlier VST SDK which does not support this interface auto sdkVersion = getPluginSDKVersion (plugProvider, testResult); if (!sdkVersion) return false; if (sdkVersion->getMajor () < 3 || (sdkVersion->getMajor () == 3 && sdkVersion->getMinor () < 7)) { addMessage (testResult, STR ("No ProcessContextRequirements required. Plug-In built with older SDK.")); return true; } FUnknownPtr contextRequirements (audioEffect); if (contextRequirements) { ProcessContextRequirements req (contextRequirements->getProcessContextRequirements ()); addMessage (testResult, STR ("ProcessContextRequirements:")); if (req.wantsNone ()) addMessage (testResult, STR (" - None")); else { if (req.wantsSystemTime ()) addMessage (testResult, STR (" - SystemTime")); if (req.wantsContinousTimeSamples ()) addMessage (testResult, STR (" - ContinousTimeSamples")); if (req.wantsProjectTimeMusic ()) addMessage (testResult, STR (" - ProjectTimeMusic")); if (req.wantsBarPositionMusic ()) addMessage (testResult, STR (" - BarPosititionMusic")); if (req.wantsCycleMusic ()) addMessage (testResult, STR (" - CycleMusic")); if (req.wantsSamplesToNextClock ()) addMessage (testResult, STR (" - SamplesToNextClock")); if (req.wantsTempo ()) addMessage (testResult, STR (" - Tempo")); if (req.wantsTimeSignature ()) addMessage (testResult, STR (" - TimeSignature")); if (req.wantsChord ()) addMessage (testResult, STR (" - Chord")); if (req.wantsFrameRate ()) addMessage (testResult, STR (" - FrameRate")); if (req.wantsTransportState ()) addMessage (testResult, STR (" - TransportState")); } return true; } addMessage (testResult, STR ("Since VST SDK 3.7 you need to implement IProcessContextRequirements!")); addErrorMessage (testResult, STR ("Missing mandatory IProcessContextRequirements extension!")); return false; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processcontextrequirements.h000066400000000000000000000056061461511344300306000ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processcontextrequirements.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Silence Flags. \ingroup TestClass */ //------------------------------------------------------------------------ class ProcessContextRequirementsTest : public TestEnh { public: ProcessContextRequirementsTest (ITestPlugProvider* plugProvider); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; bool PLUGIN_API setup () SMTG_OVERRIDE; DECLARE_VSTTEST ("ProcessContext Requirements") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processformat.cpp000066400000000000000000000114551461511344300262720ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processformat.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/processformat.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ProcessFormatTest //------------------------------------------------------------------------ ProcessFormatTest::ProcessFormatTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : ProcessTest (plugProvider, sampl) { } //------------------------------------------------------------------------ bool PLUGIN_API ProcessFormatTest::run (ITestResult* testResult) { if (!vstPlug || !testResult || !audioEffect) return false; if (!canProcessSampleSize (testResult)) return true; printTestHeader (testResult); int32 numFails = 0; const int32 numRates = 12; SampleRate sampleRateFormats[numRates] = {22050., 32000., 44100., 48000., 88200., 96000., 192000., 384000., 1234.5678, 12345.678, 123456.78, 1234567.8}; tresult result = vstPlug->setActive (false); if (result != kResultOk) { addErrorMessage (testResult, STR ("IComponent::setActive (false) failed.")); return false; } addMessage (testResult, STR ("***Tested Sample Rates***")); for (int32 i = 0; i < numRates; ++i) { processSetup.sampleRate = sampleRateFormats[i]; result = audioEffect->setupProcessing (processSetup); if (result == kResultOk) { result = vstPlug->setActive (true); if (result != kResultOk) { addErrorMessage (testResult, STR ("IComponent::setActive (true) failed.")); return false; } audioEffect->setProcessing (true); result = audioEffect->process (processData); audioEffect->setProcessing (false); if (result == kResultOk) { addMessage (testResult, printf (" %10.10G Hz - processed successfully!", sampleRateFormats[i])); } else { numFails++; addErrorMessage (testResult, printf (" %10.10G Hz - failed to process!", sampleRateFormats[i])); } result = vstPlug->setActive (false); if (result != kResultOk) { addErrorMessage (testResult, STR ("IComponent::setActive (false) failed.")); return false; } } else if (sampleRateFormats[i] > 0.) { addErrorMessage ( testResult, printf ("IAudioProcessor::setupProcessing (..) failed for samplerate %.3f Hz! ", sampleRateFormats[i])); // return false; } } result = vstPlug->setActive (true); if (result != kResultOk) return false; return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processformat.h000066400000000000000000000055211461511344300257340ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processformat.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Process Format. \ingroup TestClass */ //------------------------------------------------------------------------ class ProcessFormatTest : public ProcessTest { public: ProcessFormatTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Process Format") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processinputoverwriting.cpp000066400000000000000000000144351461511344300304420ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processinputoverwriting.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/processinputoverwriting.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ProcessInputOverwritingTest //------------------------------------------------------------------------ ProcessInputOverwritingTest::ProcessInputOverwritingTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : ProcessTest (plugProvider, sampl) { } //------------------------------------------------------------------------ bool ProcessInputOverwritingTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); bool ret = ProcessTest::run (testResult); return ret; } //------------------------------------------------------------------------ bool ProcessInputOverwritingTest::preProcess (ITestResult* /*testResult*/) { int32 min = processData.numInputs < processData.numOutputs ? processData.numInputs : processData.numOutputs; noNeedtoProcess = true; for (int32 i = 0; i < min; i++) { if (!noNeedtoProcess) break; int32 minChannel = processData.inputs[i].numChannels < processData.outputs[i].numChannels ? processData.inputs[i].numChannels : processData.outputs[i].numChannels; auto ptrIn = processData.inputs[i].channelBuffers32; auto ptrOut = processData.outputs[i].channelBuffers32; for (int32 j = 0; j < minChannel; j++) { if (ptrIn[j] != ptrOut[j]) { noNeedtoProcess = false; break; } } } if (noNeedtoProcess) return true; for (int32 i = 0; i < processData.numInputs; i++) { if (processSetup.symbolicSampleSize == kSample32) { auto ptr = processData.inputs[i].channelBuffers32; if (ptr) { float inc = 1.0 / (processData.numSamples - 1); for (int32 c = 0; c < processData.inputs[i].numChannels; c++) { auto chaBuf = ptr[c]; for (int32 j = 0; j < processData.numSamples; j++) { *chaBuf = inc * j; chaBuf++; } } } } else if (processSetup.symbolicSampleSize == kSample64) { auto ptr = processData.inputs[i].channelBuffers64; if (ptr) { float inc = 1.0 / (processData.numSamples - 1); for (int32 c = 0; c < processData.inputs[i].numChannels; c++) { auto chaBuf = ptr[c]; for (int32 j = 0; j < processData.numSamples; j++) { *chaBuf = inc * j; chaBuf++; } } } } } return true; } //------------------------------------------------------------------------ bool ProcessInputOverwritingTest::postProcess (ITestResult* testResult) { if (noNeedtoProcess) return true; for (int32 i = 0; i < processData.numInputs; i++) { if (processSetup.symbolicSampleSize == kSample32) { auto ptr = processData.inputs[i].channelBuffers32; if (ptr) { float inc = 1.0 / (processData.numSamples - 1); for (int32 c = 0; c < processData.inputs[i].numChannels; c++) { auto chaBuf = ptr[c]; for (int32 j = 0; j < processData.numSamples; j++) { if (*chaBuf != inc * j) { addErrorMessage ( testResult, STR ( "IAudioProcessor::process overwrites input buffer (..with kSample32..)!")); return false; } chaBuf++; } } } } else if (processSetup.symbolicSampleSize == kSample64) { auto ptr = processData.inputs[i].channelBuffers64; if (ptr) { float inc = 1.0 / (processData.numSamples - 1); for (int32 c = 0; c < processData.inputs[i].numChannels; c++) { auto chaBuf = ptr[c]; for (int32 j = 0; j < processData.numSamples; j++) { if (*chaBuf != inc * j) { addErrorMessage ( testResult, STR ( "IAudioProcessor::process overwrites input buffer (..with kSample64..)!")); return false; } chaBuf++; } } } } } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processinputoverwriting.h000066400000000000000000000060321461511344300301010ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processinputoverwriting.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Input Overwriting \ingroup TestClass */ //------------------------------------------------------------------------ class ProcessInputOverwritingTest : public ProcessTest { public: ProcessInputOverwritingTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; bool preProcess (ITestResult* testResult) SMTG_OVERRIDE; bool postProcess (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Process Input Overwriting") private: bool noNeedtoProcess = false; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processtail.cpp000066400000000000000000000207211461511344300257270ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processtail.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/processtail.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ProcessTailTest //------------------------------------------------------------------------ ProcessTailTest::ProcessTailTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : ProcessTest (plugProvider, sampl) , mTailSamples (0) , mInTail (0) , dataPtrFloat (nullptr) , dataPtrDouble (nullptr) , mInSilenceInput (false) , mDontTest (false) {FUNKNOWN_CTOR} //------------------------------------------------------------------------ ProcessTailTest::~ProcessTailTest () { if (dataPtrFloat) { delete[] dataPtrFloat; dataPtrFloat = nullptr; } if (dataPtrDouble) { delete[] dataPtrDouble; dataPtrDouble = nullptr; } } //------------------------------------------------------------------------ bool PLUGIN_API ProcessTailTest::setup () { bool result = ProcessTest::setup (); if (result) { mTailSamples = audioEffect->getTailSamples (); StringResult subCat; plugProvider->getSubCategories (subCat); if (subCat.get ().find ("Generator") != std::string::npos || subCat.get ().find ("Instrument") != std::string::npos) { mDontTest = true; } } return result; } //------------------------------------------------------------------------ bool ProcessTailTest::preProcess (ITestResult* /*testResult*/) { if (!mInSilenceInput) { if (processSetup.symbolicSampleSize == kSample32) { if (!dataPtrFloat) dataPtrFloat = new float[processData.numSamples]; float* ptr = dataPtrFloat; for (int32 i = 0; i < processData.numSamples; ++i) ptr[i] = (float)(2 * rand () / 32767.0 - 1); } else { if (!dataPtrDouble) dataPtrDouble = new double[processData.numSamples]; double* ptr = (double*)dataPtrDouble; for (int32 i = 0; i < processData.numSamples; ++i) ptr[i] = (double)(2 * rand () / 32767.0 - 1); } for (int32 i = 0; i < processData.numOutputs; ++i) { for (int32 c = 0; c < processData.outputs->numChannels; ++c) { if (processSetup.symbolicSampleSize == kSample32) memset (processData.outputs->channelBuffers32[c], 0, processData.numSamples * sizeof (float)); else memset (processData.outputs->channelBuffers64[c], 0, processData.numSamples * sizeof (double)); } } for (int32 i = 0; i < processData.numInputs; ++i) { for (int32 c = 0; c < processData.inputs->numChannels; ++c) { if (processSetup.symbolicSampleSize == kSample32) memcpy (processData.inputs->channelBuffers32[c], dataPtrFloat, processData.numSamples * sizeof (float)); else memcpy (processData.inputs->channelBuffers64[c], dataPtrDouble, processData.numSamples * sizeof (double)); } } } else { // process with silent buffers for (int32 i = 0; i < processData.numOutputs; ++i) { for (int32 c = 0; c < processData.outputs->numChannels; ++c) { if (processSetup.symbolicSampleSize == kSample32) memset (processData.outputs->channelBuffers32[c], 0, processData.numSamples * sizeof (float)); else memset (processData.outputs->channelBuffers64[c], 0, processData.numSamples * sizeof (double)); } } for (int32 i = 0; i < processData.numInputs; ++i) { for (int32 c = 0; c < processData.inputs->numChannels; ++c) { if (processSetup.symbolicSampleSize == kSample32) memset (processData.inputs->channelBuffers32[c], 0, processData.numSamples * sizeof (float)); else memset (processData.inputs->channelBuffers64[c], 0, processData.numSamples * sizeof (double)); } } } return true; } //------------------------------------------------------------------------ bool ProcessTailTest::postProcess (ITestResult* testResult) { if (mInSilenceInput) { // should be silence if (mTailSamples < mInTail + processData.numSamples) { int32 start = mTailSamples > mInTail ? mTailSamples - mInTail : 0; int32 end = processData.numSamples; for (int32 i = 0; i < processData.numOutputs; ++i) { for (int32 c = 0; c < processData.outputs->numChannels; ++c) { if (processSetup.symbolicSampleSize == kSample32) { for (int32 s = start; s < end; ++s) { if (fabsf (processData.outputs->channelBuffers32[c][s]) >= 1e-7) { addErrorMessage ( testResult, printf ( "IAudioProcessor::process (..) generates non silent output for silent input for tail above %d samples.", mTailSamples)); return false; } } } else { for (int32 s = start; s < end; ++s) { if (fabs (processData.outputs->channelBuffers64[c][s]) >= 1e-7) { addErrorMessage ( testResult, printf ( "IAudioProcessor::process (..) generates non silent output for silent input for tail above %d samples.", mTailSamples)); return false; } } } } } } mInTail += processData.numSamples; } return true; } //------------------------------------------------------------------------ bool PLUGIN_API ProcessTailTest::run (ITestResult* testResult) { if (!testResult || !audioEffect) return false; if (processSetup.symbolicSampleSize != processData.symbolicSampleSize) return false; if (!canProcessSampleSize (testResult)) return true; if (mDontTest) return true; addMessage (testResult, printf ("===%s == Tail=%d ======================", getName (), mTailSamples)); audioEffect->setProcessing (true); // process with signal (noise) and silence for (int32 i = 0; i < 20 * TestDefaults::instance ().numAudioBlocksToProcess; ++i) { mInSilenceInput = i > 10; if (!preProcess (testResult)) return false; tresult result = audioEffect->process (processData); if (result != kResultOk) { addErrorMessage (testResult, STR ("IAudioProcessor::process (..) failed.")); audioEffect->setProcessing (false); return false; } if (!postProcess (testResult)) { audioEffect->setProcessing (false); return false; } } audioEffect->setProcessing (false); return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processtail.h000066400000000000000000000064771461511344300254100ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processtail.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test ProcesTail. \ingroup TestClass */ //------------------------------------------------------------------------ class ProcessTailTest : public ProcessTest { public: //------------------------------------------------------------------------ ProcessTailTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); ~ProcessTailTest () override; DECLARE_VSTTEST ("Check Tail processing") // ITest bool PLUGIN_API setup () SMTG_OVERRIDE; bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; bool preProcess (ITestResult* testResult) SMTG_OVERRIDE; bool postProcess (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: private: uint32 mTailSamples; uint32 mInTail; float* dataPtrFloat; double* dataPtrDouble; bool mInSilenceInput; bool mDontTest; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processthreaded.cpp000066400000000000000000000071261461511344300265620ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processthreaded.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/processthreaded.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ProcessTest //------------------------------------------------------------------------ ProcessThreadTest::ProcessThreadTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : ProcessTest (plugProvider, sampl) { } //------------------------------------------------------------------------ ProcessThreadTest::~ProcessThreadTest () { } //------------------------------------------------------------------------ bool ProcessThreadTest::run (ITestResult* testResult) { constexpr auto NUM_ITERATIONS = 9999; if (!vstPlug || !testResult || !audioEffect) return false; if (!canProcessSampleSize (testResult)) return true; printTestHeader (testResult); bool result = false; std::thread processThread ([&] () { result = true; audioEffect->setProcessing (true); for (auto i = 0; i < NUM_ITERATIONS; i++) { tresult tr = audioEffect->process (processData); if (tr != kResultTrue) { result = false; break; } } audioEffect->setProcessing (false); }); processThread.join (); if (!result) testResult->addErrorMessage (STR ("Processing failed.")); return result; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/processthreaded.h000066400000000000000000000056671461511344300262370ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/processthreaded.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ProcessTest //------------------------------------------------------------------------ class ProcessThreadTest : public ProcessTest { public: //------------------------------------------------------------------------ ProcessThreadTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); ~ProcessThreadTest () override; DECLARE_VSTTEST ("Process function running in another thread") bool PLUGIN_API run (ITestResult* testResult) override; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/silenceflags.cpp000066400000000000000000000100131461511344300260270ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/silenceflags.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/silenceflags.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // SilenceFlagsTest //------------------------------------------------------------------------ SilenceFlagsTest::SilenceFlagsTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : ProcessTest (plugProvider, sampl) { } //------------------------------------------------------------------------ bool PLUGIN_API SilenceFlagsTest::run (ITestResult* testResult) { if (!vstPlug || !testResult || !audioEffect) return false; if (!canProcessSampleSize (testResult)) return true; printTestHeader (testResult); if (processData.inputs != nullptr) { audioEffect->setProcessing (true); for (int32 inputsIndex = 0; inputsIndex < processData.numInputs; inputsIndex++) { int32 numSilenceFlagsCombinations = (1 << processData.inputs[inputsIndex].numChannels) - 1; for (int32 flagCombination = 0; flagCombination <= numSilenceFlagsCombinations; flagCombination++) { processData.inputs[inputsIndex].silenceFlags = flagCombination; tresult result = audioEffect->process (processData); if (result != kResultOk) { addErrorMessage ( testResult, printf ( "The component failed to process bus %i with silence flag combination %x!", inputsIndex, flagCombination)); audioEffect->setProcessing (false); return false; } } } } else if (processData.numInputs > 0) { addErrorMessage (testResult, STR ("ProcessData::inputs are 0 but ProcessData::numInputs are nonzero.")); return false; } audioEffect->setProcessing (false); return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/silenceflags.h000066400000000000000000000055141461511344300255060ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/silenceflags.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Silence Flags. \ingroup TestClass */ //------------------------------------------------------------------------ class SilenceFlagsTest : public ProcessTest { public: SilenceFlagsTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Silence Flags") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/silenceprocessing.cpp000066400000000000000000000153711461511344300271230ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/silenceprocessing.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/silenceprocessing.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // SilenceProcessingTest //------------------------------------------------------------------------ SilenceProcessingTest::SilenceProcessingTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : ProcessTest (plugProvider, sampl) { } //------------------------------------------------------------------------ bool SilenceProcessingTest::isBufferSilent (void* buffer, int32 numSamples, ProcessSampleSize sampl) { if (sampl == kSample32) { const float kSilenceThreshold = 0.000132184039f; float* floatBuffer = (float*)buffer; while (numSamples--) { if (fabsf (*floatBuffer) > kSilenceThreshold) return false; floatBuffer++; } } else if (sampl == kSample64) { const double kSilenceThreshold = 0.000132184039; double* floatBuffer = (double*)buffer; while (numSamples--) { if (fabs (*floatBuffer) > kSilenceThreshold) return false; floatBuffer++; } } return true; } //------------------------------------------------------------------------ bool PLUGIN_API SilenceProcessingTest::run (ITestResult* testResult) { if (!vstPlug || !testResult || !audioEffect) return false; if (!canProcessSampleSize (testResult)) return true; printTestHeader (testResult); if (processData.inputs != nullptr) { // process 20s before checking flags int32 numPasses = int32 (20 * processSetup.sampleRate / processData.numSamples + 0.5); audioEffect->setProcessing (true); for (int32 pass = 0; pass < numPasses; pass++) { for (int32 busIndex = 0; busIndex < processData.numInputs; busIndex++) { processData.inputs[busIndex].silenceFlags = 0; for (int32 channelIndex = 0; channelIndex < processData.inputs[busIndex].numChannels; channelIndex++) { processData.inputs[busIndex].silenceFlags |= (uint64)1 << (uint64)channelIndex; if (processData.symbolicSampleSize == kSample32) memset (processData.inputs[busIndex].channelBuffers32[channelIndex], 0, sizeof (float) * processData.numSamples); else if (processData.symbolicSampleSize == kSample64) memset (processData.inputs[busIndex].channelBuffers32[channelIndex], 0, sizeof (double) * processData.numSamples); } } for (int32 busIndex = 0; busIndex < processData.numOutputs; busIndex++) { if (processData.numInputs > busIndex) processData.outputs[busIndex].silenceFlags = processData.inputs[busIndex].silenceFlags; else { processData.outputs[busIndex].silenceFlags = 0; for (int32 channelIndex = 0; channelIndex < processData.outputs[busIndex].numChannels; channelIndex++) processData.outputs[busIndex].silenceFlags |= (uint64)1 << (uint64)channelIndex; } } tresult result = audioEffect->process (processData); if (result != kResultOk) { addErrorMessage (testResult, printf ("%s", "The component failed to process!")); audioEffect->setProcessing (false); return false; } } for (int32 busIndex = 0; busIndex < processData.numOutputs; busIndex++) { for (int32 channelIndex = 0; channelIndex < processData.outputs[busIndex].numChannels; channelIndex++) { bool channelShouldBeSilent = (processData.outputs[busIndex].silenceFlags & (uint64)1 << (uint64)channelIndex) != 0; bool channelIsSilent = isBufferSilent (processData.outputs[busIndex].channelBuffers32[channelIndex], processData.numSamples, processData.symbolicSampleSize); if (channelShouldBeSilent != channelIsSilent) { constexpr auto silentText = STR ( "The component reported a wrong silent flag for its output buffer! : output is silent but silenceFlags not set !"); constexpr auto nonSilentText = STR ( "The component reported a wrong silent flag for its output buffer! : silenceFlags is set to silence but output is not silent"); addMessage (testResult, channelIsSilent ? silentText : nonSilentText); break; } } } } else if (processData.numInputs > 0) { addErrorMessage (testResult, STR ("ProcessData::inputs are 0 but ProcessData::numInputs are nonzero.")); return false; } audioEffect->setProcessing (false); return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/silenceprocessing.h000066400000000000000000000057001461511344300265630ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/silenceprocessing.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Silence Processing. \ingroup TestClass */ //------------------------------------------------------------------------ class SilenceProcessingTest : public ProcessTest { public: SilenceProcessingTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Silence Processing") protected: bool isBufferSilent (void* buffer, int32 numSamples, ProcessSampleSize sampl); }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/speakerarrangement.cpp000066400000000000000000000225101461511344300272530ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/speakerarrangement.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/speakerarrangement.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // SpeakerArrangementTest //------------------------------------------------------------------------ SpeakerArrangementTest::SpeakerArrangementTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl, SpeakerArrangement inSpArr, SpeakerArrangement outSpArr) : ProcessTest (plugProvider, sampl), inSpArr (inSpArr), outSpArr (outSpArr) { } //------------------------------------------------------------------------ const char* SpeakerArrangementTest::getSpeakerArrangementName (SpeakerArrangement spArr) { const char* saName = nullptr; switch (spArr) { case SpeakerArr::kMono: saName = "Mono"; break; case SpeakerArr::kStereo: saName = "Stereo"; break; case SpeakerArr::kStereoSurround: saName = "StereoSurround"; break; case SpeakerArr::kStereoCenter: saName = "StereoCenter"; break; case SpeakerArr::kStereoSide: saName = "StereoSide"; break; case SpeakerArr::kStereoCLfe: saName = "StereoCLfe"; break; case SpeakerArr::k30Cine: saName = "30Cine"; break; case SpeakerArr::k30Music: saName = "30Music"; break; case SpeakerArr::k31Cine: saName = "31Cine"; break; case SpeakerArr::k31Music: saName = "31Music"; break; case SpeakerArr::k40Cine: saName = "40Cine"; break; case SpeakerArr::k40Music: saName = "40Music"; break; case SpeakerArr::k41Cine: saName = "41Cine"; break; case SpeakerArr::k41Music: saName = "41Music"; break; case SpeakerArr::k50: saName = "50"; break; case SpeakerArr::k51: saName = "51"; break; case SpeakerArr::k60Cine: saName = "60Cine"; break; case SpeakerArr::k60Music: saName = "60Music"; break; case SpeakerArr::k61Cine: saName = "61Cine"; break; case SpeakerArr::k61Music: saName = "61Music"; break; case SpeakerArr::k70Cine: saName = "70Cine"; break; case SpeakerArr::k70Music: saName = "70Music"; break; case SpeakerArr::k71Cine: saName = "71Cine"; break; case SpeakerArr::k71Music: saName = "71Music"; break; case SpeakerArr::k80Cine: saName = "80Cine"; break; case SpeakerArr::k80Music: saName = "80Music"; break; case SpeakerArr::k81Cine: saName = "81Cine"; break; case SpeakerArr::k81Music: saName = "81Music"; break; case SpeakerArr::k102: saName = "102"; break; case SpeakerArr::k122: saName = "122"; break; case SpeakerArr::k80Cube: saName = "80Cube"; break; case SpeakerArr::k90: saName = "9.0"; break; case SpeakerArr::k91: saName = "9.1"; break; case SpeakerArr::k100: saName = "10.0"; break; case SpeakerArr::k101: saName = "10.1"; break; case SpeakerArr::k110: saName = "11.0"; break; case SpeakerArr::k111: saName = "11.1"; break; case SpeakerArr::k130: saName = "13.0"; break; case SpeakerArr::k131: saName = "13.1"; break; case SpeakerArr::k222: saName = "22.2"; break; case SpeakerArr::kEmpty: saName = "Empty"; break; default: saName = "Unknown"; break; } return saName; } //------------------------------------------------------------------------ const char* SpeakerArrangementTest::getName () const { const auto inSaName = getSpeakerArrangementName (inSpArr); const auto outSaName = getSpeakerArrangementName (outSpArr); if (inSaName && outSaName) { static std::string str; str = "In: "; str += inSaName; str += ": "; str += std::to_string (SpeakerArr::getChannelCount (inSpArr)); str += " Channels, Out: "; str += outSaName; str += ": "; str += std::to_string (SpeakerArr::getChannelCount (outSpArr)); str += " Channels"; return str.data (); } return "error"; } //------------------------------------------------------------------------ bool SpeakerArrangementTest::prepareProcessing () { if (!vstPlug || !audioEffect) return false; bool ret = true; int32 is = vstPlug->getBusCount (kAudio, kInput); auto* inSpArrs = new SpeakerArrangement[is]; for (int32 i = 0; i < is; ++i) inSpArrs[i] = inSpArr; int32 os = vstPlug->getBusCount (kAudio, kOutput); auto* outSpArrs = new SpeakerArrangement[os]; for (int32 o = 0; o < os; o++) outSpArrs[o] = outSpArr; if (audioEffect->setBusArrangements (inSpArrs, is, outSpArrs, os) != kResultTrue) ret = false; // activate only the extra IO (index > 0), the main ones (index 0) were already activated in // TestBase::setup () for (int32 i = 1; i < is; i++) vstPlug->activateBus (kAudio, kInput, i, true); for (int32 i = 1; i < os; i++) vstPlug->activateBus (kAudio, kOutput, i, true); ret &= ProcessTest::prepareProcessing (); delete[] inSpArrs; delete[] outSpArrs; return ret; } //------------------------------------------------------------------------ bool SpeakerArrangementTest::run (ITestResult* testResult) { if (!testResult || !audioEffect || !vstPlug) return false; printTestHeader (testResult); SpeakerArrangement spArr = SpeakerArr::kEmpty; SpeakerArrangement compareSpArr = SpeakerArr::kEmpty; BusDirections bd = kInput; BusInfo busInfo = {}; int32 count = 0; do { count++; int32 numBusses = 0; if (bd == kInput) { numBusses = processData.numInputs; compareSpArr = inSpArr; } else { numBusses = processData.numOutputs; compareSpArr = outSpArr; } for (int32 i = 0; i < numBusses; ++i) { if (audioEffect->getBusArrangement (bd, i, spArr) != kResultTrue) { addErrorMessage (testResult, STR ("IAudioProcessor::getBusArrangement (..) failed.")); return false; } if (spArr != compareSpArr) { addMessage ( testResult, printf (" %s %sSpeakerArrangement is not supported. Plug-in suggests: %s.", getSpeakerArrangementName (compareSpArr), bd == kInput ? "Input-" : "Output-", getSpeakerArrangementName (spArr))); } if (vstPlug->getBusInfo (kAudio, bd, i, busInfo) != kResultTrue) { addErrorMessage (testResult, STR ("IComponent::getBusInfo (..) failed.")); return false; } if (spArr == compareSpArr && SpeakerArr::getChannelCount (spArr) != busInfo.channelCount) { addErrorMessage ( testResult, STR ("SpeakerArrangement mismatch (BusInfo::channelCount inconsistency).")); return false; } } bd = kOutput; } while (count < 2); bool ret = true; // not a Pb ret &= verifySA (processData.numInputs, processData.inputs, inSpArr, testResult); // not a Pb ret &= verifySA (processData.numOutputs, processData.outputs, outSpArr, testResult); ret &= ProcessTest::run (testResult); return ret; } //------------------------------------------------------------------------ bool SpeakerArrangementTest::verifySA (int32 numBusses, AudioBusBuffers* buses, SpeakerArrangement spArr, ITestResult* testResult) { if (!testResult || !buses) return false; for (int32 i = 0; i < numBusses; ++i) { if (buses[i].numChannels != SpeakerArr::getChannelCount (spArr)) { addErrorMessage (testResult, STR ("ChannelCount is not matching SpeakerArrangement.")); return false; } } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/speakerarrangement.h000066400000000000000000000066431461511344300267310ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/speakerarrangement.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Speaker Arrangement. \ingroup TestClass */ //------------------------------------------------------------------------ class SpeakerArrangementTest : public ProcessTest { public: //------------------------------------------------------------------------ SpeakerArrangementTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl, SpeakerArrangement inSpArr, SpeakerArrangement outSpArr); const char* getName () const SMTG_OVERRIDE; static const char* getSpeakerArrangementName (SpeakerArrangement spArr); // ITest bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: bool prepareProcessing () SMTG_OVERRIDE; bool verifySA (int32 numBusses, AudioBusBuffers* buses, SpeakerArrangement spArr, ITestResult* testResult); private: SpeakerArrangement inSpArr; SpeakerArrangement outSpArr; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/variableblocksize.cpp000066400000000000000000000075721461511344300271030ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/variableblocksize.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/processing/variableblocksize.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // VariableBlockSizeTest //------------------------------------------------------------------------ VariableBlockSizeTest::VariableBlockSizeTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : ProcessTest (plugProvider, sampl) { } //------------------------------------------------------------------------ bool PLUGIN_API VariableBlockSizeTest::run (ITestResult* testResult) { if (!vstPlug || !testResult || !audioEffect) return false; if (!canProcessSampleSize (testResult)) return true; printTestHeader (testResult); audioEffect->setProcessing (true); for (int32 i = 0; i <= TestDefaults::instance ().numIterations; ++i) { int32 sampleFrames = rand () % processSetup.maxSamplesPerBlock; processData.numSamples = sampleFrames; if (i == 0) processData.numSamples = 0; #if TOUGHTESTS else if (i == 1) processData.numSamples = -50000; else if (i == 2) processData.numSamples = processSetup.maxSamplesPerBlock * 2; #endif tresult result = audioEffect->process (processData); if ((result != kResultOk) #if TOUGHTESTS && (i > 1) #else && (i > 0) #endif ) { addErrorMessage ( testResult, printf ("The component failed to process an audioblock of size %i", sampleFrames)); audioEffect->setProcessing (false); return false; } } audioEffect->setProcessing (false); return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/processing/variableblocksize.h000066400000000000000000000055471461511344300265500ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/processing/variableblocksize.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Variable Block Size. \ingroup TestClass */ //------------------------------------------------------------------------ class VariableBlockSizeTest : public ProcessTest { public: VariableBlockSizeTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Variable Block Size") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/state/000077500000000000000000000000001461511344300216355ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/state/bypasspersistence.cpp000066400000000000000000000126321461511344300261130ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/state/bypassstate.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/state/bypasspersistence.h" #include "public.sdk/source/common/memorystream.h" #include "public.sdk/source/vst/vstpresetfile.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // VstBypassSaveParamTest //------------------------------------------------------------------------ BypassPersistenceTest::BypassPersistenceTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : AutomationTest (plugProvider, sampl, 100, 1, false) { } //------------------------------------------------------------------------ bool PLUGIN_API BypassPersistenceTest::run (ITestResult* testResult) { if (!vstPlug || !testResult || !audioEffect) return false; if (!canProcessSampleSize (testResult)) return true; printTestHeader (testResult); if (bypassId == kNoParamId) { testResult->addMessage (STR ("This plugin does not have a bypass parameter!!!")); return true; } unprepareProcessing (); processData.numSamples = 0; processData.numInputs = 0; processData.numOutputs = 0; processData.inputs = nullptr; processData.outputs = nullptr; audioEffect->setProcessing (true); preProcess (testResult); // set bypass on // if (paramChanges[0].getParameterId () == bypassId) { paramChanges[0]->init (bypassId, 1); paramChanges[0]->setPoint (0, 0, 1); controller->setParamNormalized (bypassId, 1); if (controller->getParamNormalized (bypassId) < 1) { testResult->addErrorMessage (STR ("The bypass parameter was not correctly set!")); } } // flush tresult result = audioEffect->process (processData); if (result != kResultOk) { testResult->addErrorMessage ( STR ("The component failed to process without audio buffers!")); audioEffect->setProcessing (false); return false; } postProcess (testResult); audioEffect->setProcessing (false); // save State FUID uid; plugProvider->getComponentUID (uid); MemoryStream stream; PresetFile::savePreset (&stream, uid, vstPlug, controller, nullptr, 0); audioEffect->setProcessing (true); preProcess (testResult); // set bypass off if (paramChanges[0]->getParameterId () == bypassId) { paramChanges[0]->init (bypassId, 1); paramChanges[0]->setPoint (0, 0, 0); controller->setParamNormalized (bypassId, 0); if (controller->getParamNormalized (bypassId) > 0) { testResult->addErrorMessage ( STR ("The bypass parameter was not correctly set in the controller!")); } } // flush result = audioEffect->process (processData); if (result != kResultOk) { testResult->addErrorMessage ( STR ("The component failed to process without audio buffers!")); audioEffect->setProcessing (false); return false; } postProcess (testResult); audioEffect->setProcessing (false); // load previous preset stream.seek (0, IBStream::kIBSeekSet, nullptr); PresetFile::loadPreset (&stream, uid, vstPlug, controller); if (controller->getParamNormalized (bypassId) < 1) { testResult->addErrorMessage ( STR ("The bypass parameter is not in sync in the controller!")); return false; } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/state/bypasspersistence.h000066400000000000000000000055571461511344300255700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/state/bypassstate.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/automation.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Parameter Bypass persistence. \ingroup TestClass */ //------------------------------------------------------------------------ class BypassPersistenceTest : public AutomationTest { public: BypassPersistenceTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); bool PLUGIN_API run (ITestResult* testResult) override; DECLARE_VSTTEST ("Parameter Bypass persistence") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/state/invalidstatetransition.cpp000066400000000000000000000100711461511344300271420ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/state/invalidstatetransition.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/state/invalidstatetransition.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // InvalidStateTransitionTest //------------------------------------------------------------------------ InvalidStateTransitionTest::InvalidStateTransitionTest (ITestPlugProvider* plugProvider) : TestEnh (plugProvider, kSample32) { } //------------------------------------------------------------------------ bool PLUGIN_API InvalidStateTransitionTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); FUnknownPtr plugBase (vstPlug); if (!plugBase) return false; // created tresult result = plugBase->initialize (TestingPluginContext::get ()); if (result == kResultFalse) return false; // setupProcessing is missing ! /*result = audioEffect->setupProcessing (processSetup); if (result != kResultTrue) return false;*/ // initialized result = vstPlug->setActive (false); if (result == kResultOk) return false; result = vstPlug->setActive (true); if (result == kResultFalse) return false; // allocated result = plugBase->initialize (TestingPluginContext::get ()); if (result == kResultOk) return false; result = vstPlug->setActive (false); if (result == kResultFalse) return false; // deallocated (initialized) result = plugBase->initialize (TestingPluginContext::get ()); if (result == kResultOk) return false; result = plugBase->terminate (); if (result == kResultFalse) return false; // terminated (created) result = vstPlug->setActive (false); if (result == kResultOk) return false; result = plugBase->terminate (); if (result == kResultOk) return false; return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/state/invalidstatetransition.h000066400000000000000000000055241461511344300266160ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/state/invalidstatetransition.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Invalid State Transition. \ingroup TestClass */ //------------------------------------------------------------------------ class InvalidStateTransitionTest : public TestEnh { public: InvalidStateTransitionTest (ITestPlugProvider* plugProvider); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Invalid State Transition") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/state/repeatidenticalstatetransition.cpp000066400000000000000000000075711461511344300306640ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/state/repeatidenticalstatetransition.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/state/repeatidenticalstatetransition.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // RepeatIdenticalStateTransitionTest //------------------------------------------------------------------------ RepeatIdenticalStateTransitionTest::RepeatIdenticalStateTransitionTest ( ITestPlugProvider* plugProvider) : TestEnh (plugProvider, kSample32) { } //------------------------------------------------------------------------ bool RepeatIdenticalStateTransitionTest::run (ITestResult* testResult) { if (!testResult || !vstPlug || !audioEffect) return false; printTestHeader (testResult); FUnknownPtr plugBase (vstPlug); if (!plugBase) return false; tresult result = plugBase->initialize (TestingPluginContext::get ()); if (result != kResultFalse) return false; result = audioEffect->setupProcessing (processSetup); if (result != kResultTrue) return false; result = vstPlug->setActive (true); if (result != kResultOk) return false; result = vstPlug->setActive (true); if (result != kResultFalse) return false; result = vstPlug->setActive (false); if (result != kResultOk) return false; result = vstPlug->setActive (false); if (result == kResultOk) return false; result = plugBase->terminate (); if (result != kResultOk) return false; result = plugBase->terminate (); if (result == kResultOk) return false; result = plugBase->initialize (TestingPluginContext::get ()); if (result != kResultOk) return false; return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/state/repeatidenticalstatetransition.h000066400000000000000000000055761461511344300303340ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/state/repeatidenticalstatetransition.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Repeat Identical State Transition. \ingroup TestClass */ //------------------------------------------------------------------------ class RepeatIdenticalStateTransitionTest : public TestEnh { public: RepeatIdenticalStateTransitionTest (ITestPlugProvider* plugProvider); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; DECLARE_VSTTEST ("Repeat Identical State Transition") }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/state/validstatetransition.cpp000066400000000000000000000076671461511344300266340ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/state/validstatetransition.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/state/validstatetransition.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ValidStateTransitionTest //------------------------------------------------------------------------ ValidStateTransitionTest::ValidStateTransitionTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampleSize) : ProcessTest (plugProvider, sampleSize) { if (sampleSize == kSample32) strcpy (name, "Valid State Transition 32bits"); else strcpy (name, "Valid State Transition 64bits"); } //------------------------------------------------------------------------ bool PLUGIN_API ValidStateTransitionTest::run (ITestResult* testResult) { if (!testResult || !vstPlug || !audioEffect) return false; printTestHeader (testResult); if (!canProcessSampleSize (testResult)) return true; // disable it, it was enabled in setup call tresult result = vstPlug->setActive (false); if (result != kResultTrue) return false; FUnknownPtr plugBase (vstPlug); if (!plugBase) return false; for (int32 i = 0; i < 3; ++i) { result = audioEffect->setupProcessing (processSetup); if (result != kResultTrue) return false; result = vstPlug->setActive (true); if (result != kResultTrue) return false; result = vstPlug->setActive (false); if (result != kResultTrue) return false; result = plugBase->terminate (); if (result != kResultTrue) return false; result = plugBase->initialize (TestingPluginContext::get ()); if (result != kResultTrue) return false; } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/state/validstatetransition.h000066400000000000000000000057321461511344300262700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/state/validstatetransition.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/processing/process.h" #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Valid State Transition. \ingroup TestClass */ //------------------------------------------------------------------------ class ValidStateTransitionTest : public ProcessTest { public: ValidStateTransitionTest (ITestPlugProvider* plugProvider, ProcessSampleSize sampleSize); bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; const char* getName () const SMTG_OVERRIDE { return name; } protected: char name[256]; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/testbase.cpp000066400000000000000000000226561461511344300230460ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/testbase.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/testbase.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // TestBase //------------------------------------------------------------------------ TestBase::TestBase (ITestPlugProvider* plugProvider) : plugProvider (plugProvider) , vstPlug (nullptr) , controller (nullptr) {FUNKNOWN_CTOR} //------------------------------------------------------------------------ TestBase::TestBase () : plugProvider (nullptr) , vstPlug (nullptr) , controller (nullptr) {FUNKNOWN_CTOR} //------------------------------------------------------------------------ TestBase::~TestBase () {FUNKNOWN_DTOR} //------------------------------------------------------------------------ IMPLEMENT_FUNKNOWN_METHODS (TestBase, ITest, ITest::iid); //------------------------------------------------------------------------ bool TestBase::setup () { if (plugProvider) { vstPlug = plugProvider->getComponent (); if (!vstPlug) return false; controller = plugProvider->getController (); return activateMainIOBusses (true); } return false; } //------------------------------------------------------------------------ bool TestBase::teardown () { if (vstPlug) { activateMainIOBusses (false); plugProvider->releasePlugIn (vstPlug, controller); } return true; } //------------------------------------------------------------------------ bool TestBase::activateMainIOBusses (bool val) { if (vstPlug) { if (auto countIn = vstPlug->getBusCount (kAudio, kInput) > 0) vstPlug->activateBus (kAudio, kInput, 0, val); if (auto countOut = vstPlug->getBusCount (kAudio, kOutput) > 0) vstPlug->activateBus (kAudio, kOutput, 0, val); return true; } return false; } //------------------------------------------------------------------------ void TestBase::printTestHeader (ITestResult* testResult) { using VST3::StringConvert::convert; std::string str = "==="; str += getName (); str += " ===================================="; addMessage (testResult, convert (str)); } //------------------------------------------------------------------------ // Component Initialize / Terminate //------------------------------------------------------------------------ //------------------------------------------------------------------------ // VstTestEnh //------------------------------------------------------------------------ TestEnh::TestEnh (ITestPlugProvider* plugProvider, ProcessSampleSize sampl) : TestBase (plugProvider), audioEffect (nullptr) { // process setup defaults memset (&processSetup, 0, sizeof (ProcessSetup)); processSetup.processMode = kRealtime; processSetup.symbolicSampleSize = sampl; processSetup.maxSamplesPerBlock = kMaxSamplesPerBlock; processSetup.sampleRate = kSampleRate; } //------------------------------------------------------------------------ TestEnh::~TestEnh () { } //------------------------------------------------------------------------ bool TestEnh::setup () { bool res = TestBase::setup (); if (vstPlug) { tresult check = vstPlug->queryInterface (IAudioProcessor::iid, (void**)&audioEffect); if (check != kResultTrue) return false; } return (res && audioEffect); } //------------------------------------------------------------------------ bool TestEnh::teardown () { if (audioEffect) audioEffect->release (); bool res = TestBase::teardown (); return res && audioEffect; } //------------------------------------------------------------------------ void addMessage (ITestResult* testResult, const std::u16string& str) { testResult->addMessage (reinterpret_cast (str.data ())); } //------------------------------------------------------------------------ void addMessage (ITestResult* testResult, const tchar* str) { testResult->addMessage (str); } //------------------------------------------------------------------------ void addErrorMessage (ITestResult* testResult, const tchar* str) { testResult->addErrorMessage (str); } //------------------------------------------------------------------------ void addErrorMessage (ITestResult* testResult, const std::u16string& str) { testResult->addErrorMessage (reinterpret_cast (str.data ())); } //------------------------------------------------------------------------ std::u16string printf (const char8* format, ...) { using VST3::StringConvert::convert; char8 string[1024 * 4]; va_list marker; va_start (marker, format); vsnprintf (string, kPrintfBufferSize, format, marker); return convert (string).data (); } IMPLEMENT_FUNKNOWN_METHODS (ParamChanges, IParamValueQueue, IParamValueQueue::iid) //------------------------------------------------------------------------ ParamChanges::ParamChanges () {FUNKNOWN_CTOR} //------------------------------------------------------------------------ ParamChanges::~ParamChanges () { if (points) delete[] points; FUNKNOWN_DTOR } //------------------------------------------------------------------------ void ParamChanges::init (ParamID _id, int32 _numPoints) { id = _id; numPoints = _numPoints; numUsedPoints = 0; if (points) delete[] points; points = new ParamPoint[numPoints]; processedFrames = 0; } //------------------------------------------------------------------------ bool ParamChanges::setPoint (int32 index, int32 offsetSamples, double value) { if (points && (index >= 0) && (index == numUsedPoints) && (index < numPoints)) { points[index].set (offsetSamples, value); numUsedPoints++; return true; } if (!points) return true; return false; } //------------------------------------------------------------------------ void ParamChanges::resetPoints () { numUsedPoints = 0; processedFrames = 0; } //------------------------------------------------------------------------ int32 ParamChanges::getProcessedFrames () const { return processedFrames; } //------------------------------------------------------------------------ void ParamChanges::setProcessedFrames (int32 amount) { processedFrames = amount; } //------------------------------------------------------------------------ bool ParamChanges::havePointsBeenRead (bool atAll) { for (int32 i = 0; i < getPointCount (); ++i) { if (points[i].wasRead ()) { if (atAll) return true; } else if (!atAll) return false; } return !atAll; } //------------------------------------------------------------------------ ParamID PLUGIN_API ParamChanges::getParameterId () { return id; } //------------------------------------------------------------------------ int32 PLUGIN_API ParamChanges::getPointCount () { return numUsedPoints; } //------------------------------------------------------------------------ tresult PLUGIN_API ParamChanges::getPoint (int32 index, int32& offsetSamples, double& value) { if (points && (index < numUsedPoints) && (index >= 0)) { points[index].get (offsetSamples, value); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API ParamChanges::addPoint (int32 /*offsetSamples*/, double /*value*/, int32& /*index*/) { return kResultFalse; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/testbase.h000066400000000000000000000177101461511344300225060ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/testbase.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/test/itest.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/ivsttestplugprovider.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ void addMessage (ITestResult* testResult, const std::u16string& str); void addMessage (ITestResult* testResult, const tchar* str); void addErrorMessage (ITestResult* testResult, const tchar* str); void addErrorMessage (ITestResult* testResult, const std::u16string& str); std::u16string printf (const char8* format, ...); //------------------------------------------------------------------------ #define DECLARE_VSTTEST(name) \ const char* getName () const SMTG_OVERRIDE { return name; } //------------------------------------------------------------------------ struct TestingPluginContext { static FUnknown* get () { return instance ().context; } static void set (FUnknown* context) { instance ().context = context; } private: static TestingPluginContext& instance () { static TestingPluginContext gInstance; return gInstance; } FUnknown* context {nullptr}; }; //------------------------------------------------------------------------ struct TestDefaults { int32 numIterations {20}; int32 defaultSampleRate {44100}; int32 defaultBlockSize {64}; int32 maxBlockSize {8192}; int32 buffersAreEqual {0}; int32 numAudioBlocksToProcess {3}; uint64 channelIsSilent {1}; static TestDefaults& instance () { static TestDefaults gInstance; return gInstance; } }; //------------------------------------------------------------------------ /** Test Helper. \ingroup TestClass */ //------------------------------------------------------------------------ class TestBase : public ITest { public: //------------------------------------------------------------------------ TestBase (ITestPlugProvider* plugProvider); virtual ~TestBase (); virtual const char* getName () const = 0; DECLARE_FUNKNOWN_METHODS bool PLUGIN_API setup () SMTG_OVERRIDE; bool PLUGIN_API run (ITestResult* /*testResult*/) SMTG_OVERRIDE = 0; bool PLUGIN_API teardown () SMTG_OVERRIDE; virtual bool activateMainIOBusses (bool val); virtual void printTestHeader (ITestResult* testResult); //------------------------------------------------------------------------ protected: ITestPlugProvider* plugProvider; IComponent* vstPlug; IEditController* controller; private: TestBase (); }; using ProcessSampleSize = int32; //------------------------------------------------------------------------ /** Test Helper. \ingroup TestClass */ //------------------------------------------------------------------------ class TestEnh : public TestBase { public: //------------------------------------------------------------------------ TestEnh (ITestPlugProvider* plugProvider, ProcessSampleSize sampl); ~TestEnh () override; enum AudioDefaults { kBlockSize = 64, kMaxSamplesPerBlock = 8192, kSampleRate = 44100, }; bool PLUGIN_API setup () SMTG_OVERRIDE; bool PLUGIN_API teardown () SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: // interfaces IAudioProcessor* audioEffect; ProcessSetup processSetup; }; //------------------------------------------------------------------------ /** AutomationTest helper classes. \ingroup TestClass */ class ParamPoint { public: ParamPoint () : offsetSamples (-1), value (0.), read (false) {} void set (int32 _offsetSamples, double _value) { offsetSamples = _offsetSamples; value = _value; } void get (int32& _offsetSamples, double& _value) { _offsetSamples = offsetSamples; _value = value; read = true; } bool wasRead () const { return read; } private: int32 offsetSamples; double value; bool read; }; //------------------------------------------------------------------------ /** AutomationTest helper classes: implementation of IParamValueQueue. \ingroup TestClass */ class ParamChanges : public IParamValueQueue { public: DECLARE_FUNKNOWN_METHODS ParamChanges (); virtual ~ParamChanges (); void init (ParamID _id, int32 _numPoints); bool setPoint (int32 index, int32 offsetSamples, double value); void resetPoints (); int32 getProcessedFrames () const; void setProcessedFrames (int32 amount); bool havePointsBeenRead (bool atAll); //---for IParamValueQueue------------------------- ParamID PLUGIN_API getParameterId () SMTG_OVERRIDE; int32 PLUGIN_API getPointCount () SMTG_OVERRIDE; tresult PLUGIN_API getPoint (int32 index, int32& offsetSamples, double& value) SMTG_OVERRIDE; tresult PLUGIN_API addPoint (int32 /*offsetSamples*/, double /*value*/, int32& /*index*/) SMTG_OVERRIDE; //--------------------------------------------------------- private: ParamID id = kNoParamId; int32 numPoints = 0; int32 numUsedPoints = 0; int32 processedFrames = 0; ParamPoint* points = nullptr; }; //------------------------------------------------------------------------ class StringResult final : public IStringResult { public: const std::string& get () const { return data; } void PLUGIN_API setText (const char8* text) override { data = text; } tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) override { QUERY_INTERFACE (_iid, obj, FUnknown::iid, IStringResult) QUERY_INTERFACE (_iid, obj, IStringResult::iid, IStringResult) *obj = nullptr; return kNoInterface; } uint32 PLUGIN_API addRef () override { return ++__refCount; } uint32 PLUGIN_API release () override { if (--__refCount == 0) { delete this; return 0; } return __refCount; } private: std::string data; std::atomic __refCount {0}; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/unit/000077500000000000000000000000001461511344300214745ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/unit/checkunitstructure.cpp000066400000000000000000000114561461511344300261450ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/unit/checkunitstructure.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/unit/checkunitstructure.h" #include "pluginterfaces/vst/ivstunits.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // UnitStructureTest //------------------------------------------------------------------------ UnitStructureTest::UnitStructureTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool UnitStructureTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); FUnknownPtr iUnitInfo (controller); if (iUnitInfo) { int32 unitCount = iUnitInfo->getUnitCount (); if (unitCount <= 0) { addMessage (testResult, STR ("No units found, while controller implements IUnitInfo !!!")); } UnitInfo unitInfo = {}; UnitInfo tmpInfo = {}; bool rootFound = false; for (int32 unitIndex = 0; unitIndex < unitCount; unitIndex++) { if (iUnitInfo->getUnitInfo (unitIndex, unitInfo) == kResultOk) { // check parent Id if (unitInfo.parentUnitId != kNoParentUnitId) //-1: connected to root { bool noParent = true; for (int32 i = 0; i < unitCount; ++i) { if (iUnitInfo->getUnitInfo (i, tmpInfo) == kResultOk) { if (unitInfo.parentUnitId == tmpInfo.id) { noParent = false; break; } } } if (noParent && unitInfo.parentUnitId != kRootUnitId) { addErrorMessage ( testResult, printf ("Unit %03d: Parent does not exist!!", unitInfo.id)); return false; } } else if (!rootFound) { // root Unit have always the rootID if (unitInfo.id != kRootUnitId) { // we should have a root unit id addErrorMessage ( testResult, printf ("Unit %03d: Should be the Root Unit => id should be %03d!!", unitInfo.id, kRootUnitId)); return false; } rootFound = true; } else { addErrorMessage ( testResult, printf ("Unit %03d: Has no parent, but there is a root already.", unitInfo.id)); return false; } } else { addErrorMessage (testResult, printf ("Unit %03d: No unit info.", unitInfo.id)); return false; } } addMessage (testResult, STR ("All units have valid parent IDs.")); } else { addMessage (testResult, STR ("This component does not support IUnitInfo!")); } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/unit/checkunitstructure.h000066400000000000000000000057151461511344300256130ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/unit/checkunitstructure.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Check Unit Structure. \ingroup TestClass */ //------------------------------------------------------------------------ class UnitStructureTest : public TestBase { public: //------------------------------------------------------------------------ UnitStructureTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Check Unit Structure") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/unit/scanprograms.cpp000066400000000000000000000177451461511344300247150ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/unit/scanprograms.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/unit/scanprograms.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/vst/ivstunits.h" #include "pluginterfaces/vst/vstpresetkeys.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ProgramInfoTest //------------------------------------------------------------------------ ProgramInfoTest::ProgramInfoTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool ProgramInfoTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); FUnknownPtr iUnitInfo (controller); if (iUnitInfo) { int32 programListCount = iUnitInfo->getProgramListCount (); if (programListCount == 0) { addMessage (testResult, STR ("This component does not export any programs.")); return true; } else if (programListCount < 0) { addErrorMessage (testResult, STR ("IUnitInfo::getProgramListCount () returned a negative number.")); return false; } // used to check double IDs auto programListIds = std::unique_ptr (new int32[programListCount]); for (int32 programListIndex = 0; programListIndex < programListCount; programListIndex++) { // get programm list info ProgramListInfo programListInfo; if (iUnitInfo->getProgramListInfo (programListIndex, programListInfo) == kResultOk) { int32 programListId = programListInfo.id; programListIds[programListIndex] = programListId; if (programListId < 0) { addErrorMessage (testResult, printf ("Programlist %03d: Invalid ID!!!", programListIndex)); return false; } // check if ID is already used by another parameter for (int32 idIndex = 0; idIndex < programListIndex; idIndex++) { if (programListIds[idIndex] == programListIds[programListIndex]) { addErrorMessage (testResult, printf ("Programlist %03d: ID already used!!!", programListIndex)); return false; } } auto programListName = VST3::StringConvert::convert (programListInfo.name); if (programListName.empty ()) { addErrorMessage (testResult, printf ("Programlist %03d (id=%d): No name!!!", programListIndex, programListId)); return false; } int32 programCount = programListInfo.programCount; if (programCount <= 0) { addMessage ( testResult, printf ( "Programlist %03d (id=%d): \"%s\" No programs!!! (programCount is null!)", programListIndex, programListId, VST3::StringConvert::convert (programListName).data ())); // return false; } addMessage (testResult, printf ("Programlist %03d (id=%d): \"%s\" (%d programs).", programListIndex, programListId, programListName.data (), programCount)); for (int32 programIndex = 0; programIndex < programCount; programIndex++) { TChar programName[256]; if (iUnitInfo->getProgramName (programListId, programIndex, programName) == kResultOk) { if (programName[0] == 0) { addErrorMessage ( testResult, printf ("Programlist %03d->Program %03d: has no name!!!", programListIndex, programIndex)); return false; } auto programNameUTF8 = VST3::StringConvert::convert (programName); auto msg = printf ("Programlist %03d->Program %03d: \"%s\"", programListIndex, programIndex, programNameUTF8.data ()); String128 programInfo {}; if (iUnitInfo->getProgramInfo (programListId, programIndex, PresetAttributes::kInstrument, programInfo) == kResultOk) { auto programInfoUTF8 = VST3::StringConvert::convert (programInfo); msg += VST3::StringConvert::convert (" (instrument = \""); msg += (const char16_t*)programInfo; msg += VST3::StringConvert::convert ("\")"); } addMessage (testResult, msg.data ()); if (iUnitInfo->hasProgramPitchNames (programListId, programIndex) == kResultOk) { addMessage (testResult, printf (" => \"%s\": supports PitchNames", programNameUTF8.data ())); String128 pitchName = {0}; for (int16 midiPitch = 0; midiPitch < 128; midiPitch++) { if (iUnitInfo->getProgramPitchName (programListId, programIndex, midiPitch, pitchName) == kResultOk) { msg = printf (" => MIDI Pitch %d => \"", midiPitch); msg += (const char16_t*)pitchName; msg += VST3::StringConvert::convert ("\""); addMessage (testResult, msg.data ()); } } } } } } } } else { addMessage (testResult, STR ("This component does not export any programs.")); // check if not more than 1 program change parameter is defined int32 numPrgChanges = 0; for (int32 i = 0; i < controller->getParameterCount (); ++i) { ParameterInfo paramInfo = {}; if (controller->getParameterInfo (i, paramInfo) != kResultOk) { if (paramInfo.flags & ParameterInfo::kIsProgramChange) numPrgChanges++; } } if (numPrgChanges > 1) { addErrorMessage ( testResult, printf ("More than 1 programChange Parameter (%d) without support of IUnitInfo!!!", numPrgChanges)); } } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/unit/scanprograms.h000066400000000000000000000056651461511344300243600ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/unit/scanprograms.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Scan Programs. \ingroup TestClass */ //------------------------------------------------------------------------ class ProgramInfoTest : public TestBase { public: //------------------------------------------------------------------------ ProgramInfoTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Scan Programs") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/unit/scanunits.cpp000066400000000000000000000132061461511344300242110ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/unit/scanunits.cpp // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/testsuite/unit/scanunits.h" #include "public.sdk/source/vst/utility/stringconvert.h" #include "pluginterfaces/vst/ivstunits.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // UnitInfoTest //------------------------------------------------------------------------ UnitInfoTest::UnitInfoTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider) { } //------------------------------------------------------------------------ bool UnitInfoTest::run (ITestResult* testResult) { if (!testResult || !vstPlug) return false; printTestHeader (testResult); FUnknownPtr iUnitInfo (controller); if (iUnitInfo) { int32 unitCount = iUnitInfo->getUnitCount (); if (unitCount <= 0) { addMessage (testResult, STR ("No units found, while controller implements IUnitInfo !!!")); } else { addMessage (testResult, printf ("This component has %d unit(s).", unitCount)); } auto unitIds = std::unique_ptr (new int32[unitCount]); for (int32 unitIndex = 0; unitIndex < unitCount; unitIndex++) { UnitInfo unitInfo = {}; if (iUnitInfo->getUnitInfo (unitIndex, unitInfo) == kResultOk) { int32 unitId = unitInfo.id; unitIds[unitIndex] = unitId; if (unitId < 0) { addErrorMessage (testResult, printf ("Unit %03d: Invalid ID!", unitIndex)); return false; } // check if ID is already used by another unit for (int32 idIndex = 0; idIndex < unitIndex; idIndex++) { if (unitIds[idIndex] == unitIds[unitIndex]) { addErrorMessage (testResult, printf ("Unit %03d: ID already used!!!", unitIndex)); return false; } } auto unitName = VST3::StringConvert::convert (unitInfo.name); if (unitName.empty ()) { addErrorMessage (testResult, printf ("Unit %03d: No name!", unitIndex)); return false; } int32 parentUnitId = unitInfo.parentUnitId; if (parentUnitId < -1) { addErrorMessage (testResult, printf ("Unit %03d: Invalid parent ID!", unitIndex)); return false; } else if (parentUnitId == unitId) { addErrorMessage ( testResult, printf ("Unit %03d: Parent ID is equal to Unit ID!", unitIndex)); return false; } int32 unitProgramListId = unitInfo.programListId; if (unitProgramListId < -1) { addErrorMessage (testResult, printf ("Unit %03d: Invalid programlist ID!", unitIndex)); return false; } addMessage ( testResult, printf (" Unit%03d (ID = %d): \"%s\" (parent ID = %d, programlist ID = %d)", unitIndex, unitId, unitName.data (), parentUnitId, unitProgramListId)); // test select Unit if (iUnitInfo->selectUnit (unitIndex) == kResultTrue) { UnitID newSelected = iUnitInfo->getSelectedUnit (); if (newSelected != unitIndex) { addMessage ( testResult, printf ( "The host has selected Unit ID = %d but getSelectedUnit returns ID = %d!!!", unitIndex, newSelected)); } } } else { addMessage (testResult, printf ("Unit%03d: No unit info!", unitIndex)); } } } else { addMessage (testResult, STR ("This component has no units.")); } return true; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/unit/scanunits.h000066400000000000000000000056461461511344300236670ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/unit/scanunits.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/testbase.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Test Scan Units. \ingroup TestClass */ //------------------------------------------------------------------------ class UnitInfoTest : public TestBase { public: //------------------------------------------------------------------------ UnitInfoTest (ITestPlugProvider* plugProvider); DECLARE_VSTTEST ("Scan Units") bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE; //------------------------------------------------------------------------ }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/vststructsizecheck.h000066400000000000000000000220061461511344300246400ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/vststructsizecheck.h // Created by : Steinberg, 09/2010 // Description : struct size test. Checks that struct sizes and alignments do not change after publicly released // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginterfaces/vst/ivstattributes.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstcomponent.h" #include "pluginterfaces/vst/ivstcontextmenu.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivsthostapplication.h" #include "pluginterfaces/vst/ivstmessage.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/ivstplugview.h" #include "pluginterfaces/vst/ivstprocesscontext.h" #include "pluginterfaces/vst/ivstrepresentation.h" #include "pluginterfaces/vst/ivstunits.h" #include "pluginterfaces/vst/vstpresetkeys.h" #include "pluginterfaces/vst/vsttypes.h" #include "pluginterfaces/base/typesizecheck.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { #define SMTG_VST_COMPILE_TIME_STRUCT_CHECK 1 #if SMTG_VST_COMPILE_TIME_STRUCT_CHECK // ipluginbase.h SMTG_TYPE_SIZE_CHECK (PFactoryInfo, 452, 452, 452, 452) SMTG_TYPE_SIZE_CHECK (PClassInfo, 116, 116, 116, 116) SMTG_TYPE_SIZE_CHECK (PClassInfo2, 440, 440, 440, 440) SMTG_TYPE_SIZE_CHECK (PClassInfoW, 696, 696, 696, 696) SMTG_TYPE_ALIGN_CHECK (PFactoryInfo, 4, 4, 4, 4) SMTG_TYPE_ALIGN_CHECK (PClassInfo, 4, 4, 4, 4) SMTG_TYPE_ALIGN_CHECK (PClassInfo2, 4, 4, 4, 4) SMTG_TYPE_ALIGN_CHECK (PClassInfoW, 4, 4, 4, 4) // ivstaudioprocessor.h SMTG_TYPE_SIZE_CHECK (ProcessSetup, 24, 20, 24, 24) SMTG_TYPE_SIZE_CHECK (AudioBusBuffers, 24, 16, 24, 24) SMTG_TYPE_SIZE_CHECK (ProcessData, 80, 48, 48, 48) SMTG_TYPE_ALIGN_CHECK (ProcessSetup, 8, 1, 8, 8) SMTG_TYPE_ALIGN_CHECK (AudioBusBuffers, 8, 1, 8, 8) SMTG_TYPE_ALIGN_CHECK (ProcessData, 8, 1, 4, 4) // ivstcomponent.h SMTG_TYPE_SIZE_CHECK (BusInfo, 276, 276, 276, 276) SMTG_TYPE_SIZE_CHECK (RoutingInfo, 12, 12, 12, 12) SMTG_TYPE_ALIGN_CHECK (BusInfo, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (RoutingInfo, 4, 1, 4, 4) // ivstcontextmenu.h SMTG_TYPE_SIZE_CHECK (IContextMenuItem, 264, 264, 264, 264) SMTG_TYPE_ALIGN_CHECK (IContextMenuItem, 4, 1, 4, 4) // ivsteditcontroller.h SMTG_TYPE_SIZE_CHECK (ParameterInfo, 792, 792, 792, 792) SMTG_TYPE_ALIGN_CHECK (ParameterInfo, 8, 1, 8, 8) // ivstevents.h SMTG_TYPE_SIZE_CHECK (NoteOnEvent, 20, 20, 20, 20) SMTG_TYPE_SIZE_CHECK (NoteOffEvent, 16, 16, 16, 16) SMTG_TYPE_SIZE_CHECK (DataEvent, 16, 12, 12, 12) SMTG_TYPE_SIZE_CHECK (PolyPressureEvent, 12, 12, 12, 12) SMTG_TYPE_SIZE_CHECK (ChordEvent, 16, 12, 12, 12) SMTG_TYPE_SIZE_CHECK (ScaleEvent, 16, 10, 12, 12) SMTG_TYPE_SIZE_CHECK (LegacyMIDICCOutEvent, 4, 4, 4, 4) SMTG_TYPE_SIZE_CHECK (Event, 48, 40, 40, 48) SMTG_TYPE_ALIGN_CHECK (NoteOnEvent, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (NoteOffEvent, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (DataEvent, 8, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (PolyPressureEvent, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (ChordEvent, 8, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (ScaleEvent, 8, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (LegacyMIDICCOutEvent, 1, 1, 1, 1) SMTG_TYPE_ALIGN_CHECK (Event, 8, 1, 8, 8) // ivstnoteexpression.h SMTG_TYPE_SIZE_CHECK (NoteExpressionValueDescription, 32, 28, 32, 32) SMTG_TYPE_SIZE_CHECK (NoteExpressionValueEvent, 16, 16, 16, 16) SMTG_TYPE_SIZE_CHECK (NoteExpressionTextEvent, 24, 16, 16, 16) SMTG_TYPE_SIZE_CHECK (NoteExpressionTypeInfo, 816, 812, 816, 816) SMTG_TYPE_SIZE_CHECK (KeyswitchInfo, 536, 536, 536, 536) SMTG_TYPE_ALIGN_CHECK (NoteExpressionValueDescription, 8, 1, 8, 8) SMTG_TYPE_ALIGN_CHECK (NoteExpressionValueEvent, 8, 1, 4, 8) SMTG_TYPE_ALIGN_CHECK (NoteExpressionTextEvent, 8, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (NoteExpressionTypeInfo, 8, 1, 8, 8) SMTG_TYPE_ALIGN_CHECK (KeyswitchInfo, 4, 1, 4, 4) // ivstprocesscontext.h SMTG_TYPE_SIZE_CHECK (FrameRate, 8, 8, 8, 8) SMTG_TYPE_SIZE_CHECK (Chord, 4, 4, 4, 4) SMTG_TYPE_SIZE_CHECK (ProcessContext, 112, 104, 112, 112) SMTG_TYPE_ALIGN_CHECK (FrameRate, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (Chord, 2, 1, 2, 2) SMTG_TYPE_ALIGN_CHECK (ProcessContext, 8, 1, 8, 8) // ivstrepresentation.h SMTG_TYPE_SIZE_CHECK (RepresentationInfo, 256, 256, 256, 256) SMTG_TYPE_ALIGN_CHECK (RepresentationInfo, 1, 1, 1, 1) // ivstunits.h SMTG_TYPE_SIZE_CHECK (UnitInfo, 268, 268, 268, 268) SMTG_TYPE_SIZE_CHECK (ProgramListInfo, 264, 264, 264, 264) SMTG_TYPE_ALIGN_CHECK (UnitInfo, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK (ProgramListInfo, 4, 1, 4, 4) #endif // SMTG_VST_COMPILE_TIME_STRUCT_CHECK //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ #define SMTG_PRINT_TYPE_SIZE_ALIGN(T) \ { \ auto len = strlen (#T); \ std::printf (#T); \ for (auto i = len; i < 35; ++i) \ std::printf (" "); \ std::printf ("size = %3zu | align = %2zu\n", sizeof (T), alignof (T)); \ } //------------------------------------------------------------------------ inline void printStructSizes () { // ipluginbase.h SMTG_PRINT_TYPE_SIZE_ALIGN (PFactoryInfo); SMTG_PRINT_TYPE_SIZE_ALIGN (PClassInfo); SMTG_PRINT_TYPE_SIZE_ALIGN (PClassInfo2); SMTG_PRINT_TYPE_SIZE_ALIGN (PClassInfoW); // ivstaudioprocessor.h SMTG_PRINT_TYPE_SIZE_ALIGN (ProcessSetup); SMTG_PRINT_TYPE_SIZE_ALIGN (AudioBusBuffers); SMTG_PRINT_TYPE_SIZE_ALIGN (ProcessData); // ivstcomponent.h SMTG_PRINT_TYPE_SIZE_ALIGN (BusInfo); SMTG_PRINT_TYPE_SIZE_ALIGN (RoutingInfo); // ivstcontextmenu.h SMTG_PRINT_TYPE_SIZE_ALIGN (IContextMenuItem); // ivsteditcontroller.h SMTG_PRINT_TYPE_SIZE_ALIGN (ParameterInfo); // ivstevents.h SMTG_PRINT_TYPE_SIZE_ALIGN (NoteOnEvent); SMTG_PRINT_TYPE_SIZE_ALIGN (NoteOffEvent); SMTG_PRINT_TYPE_SIZE_ALIGN (DataEvent); SMTG_PRINT_TYPE_SIZE_ALIGN (PolyPressureEvent); SMTG_PRINT_TYPE_SIZE_ALIGN (ChordEvent); SMTG_PRINT_TYPE_SIZE_ALIGN (ScaleEvent); SMTG_PRINT_TYPE_SIZE_ALIGN (LegacyMIDICCOutEvent); SMTG_PRINT_TYPE_SIZE_ALIGN (Event); // ivstnoteexpression.h SMTG_PRINT_TYPE_SIZE_ALIGN (NoteExpressionValueDescription); SMTG_PRINT_TYPE_SIZE_ALIGN (NoteExpressionValueEvent); SMTG_PRINT_TYPE_SIZE_ALIGN (NoteExpressionTextEvent); SMTG_PRINT_TYPE_SIZE_ALIGN (NoteExpressionTypeInfo); SMTG_PRINT_TYPE_SIZE_ALIGN (KeyswitchInfo); // ivstprocesscontext.h SMTG_PRINT_TYPE_SIZE_ALIGN (FrameRate); SMTG_PRINT_TYPE_SIZE_ALIGN (Chord); SMTG_PRINT_TYPE_SIZE_ALIGN (ProcessContext); // ivstrepresentation.h SMTG_PRINT_TYPE_SIZE_ALIGN (RepresentationInfo); // ivstunits.h SMTG_PRINT_TYPE_SIZE_ALIGN (UnitInfo); SMTG_PRINT_TYPE_SIZE_ALIGN (ProgramListInfo); } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/vsttestsuite.cpp000066400000000000000000000041141461511344300240070ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/vsttestsuite.cpp // Created by : Steinberg, 10/2005 // Description : VST Hosting Utilities // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- vst3sdk-3.7.10.14+~4.13.3/source/vst/testsuite/vsttestsuite.h000066400000000000000000000105221461511344300234540ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Validator // Filename : public.sdk/source/vst/testsuite/vsttestsuite.h // Created by : Steinberg, 04/2005 // Description : VST Test Suite // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/testsuite/bus/busactivation.h" #include "public.sdk/source/vst/testsuite/bus/busconsistency.h" #include "public.sdk/source/vst/testsuite/bus/businvalidindex.h" #include "public.sdk/source/vst/testsuite/bus/checkaudiobusarrangement.h" #include "public.sdk/source/vst/testsuite/bus/scanbusses.h" #include "public.sdk/source/vst/testsuite/bus/sidechainarrangement.h" #include "public.sdk/source/vst/testsuite/general/editorclasses.h" #include "public.sdk/source/vst/testsuite/general/midilearn.h" #include "public.sdk/source/vst/testsuite/general/midimapping.h" #include "public.sdk/source/vst/testsuite/general/parameterfunctionname.h" #include "public.sdk/source/vst/testsuite/general/scanparameters.h" #include "public.sdk/source/vst/testsuite/general/suspendresume.h" #include "public.sdk/source/vst/testsuite/general/terminit.h" #include "public.sdk/source/vst/testsuite/noteexpression/keyswitch.h" #include "public.sdk/source/vst/testsuite/noteexpression/noteexpression.h" #include "public.sdk/source/vst/testsuite/processing/automation.h" #include "public.sdk/source/vst/testsuite/processing/process.h" #include "public.sdk/source/vst/testsuite/processing/processcontextrequirements.h" #include "public.sdk/source/vst/testsuite/processing/processformat.h" #include "public.sdk/source/vst/testsuite/processing/processinputoverwriting.h" #include "public.sdk/source/vst/testsuite/processing/processtail.h" #include "public.sdk/source/vst/testsuite/processing/processthreaded.h" #include "public.sdk/source/vst/testsuite/processing/silenceflags.h" #include "public.sdk/source/vst/testsuite/processing/silenceprocessing.h" #include "public.sdk/source/vst/testsuite/processing/speakerarrangement.h" #include "public.sdk/source/vst/testsuite/processing/variableblocksize.h" #include "public.sdk/source/vst/testsuite/state/bypasspersistence.h" #include "public.sdk/source/vst/testsuite/state/invalidstatetransition.h" #include "public.sdk/source/vst/testsuite/state/repeatidenticalstatetransition.h" #include "public.sdk/source/vst/testsuite/state/validstatetransition.h" #include "public.sdk/source/vst/testsuite/unit/checkunitstructure.h" #include "public.sdk/source/vst/testsuite/unit/scanprograms.h" #include "public.sdk/source/vst/testsuite/unit/scanunits.h" vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/000077500000000000000000000000001461511344300201675ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/alignedalloc.h000066400000000000000000000070141461511344300227600ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/alignedalloc.h // Created by : Steinberg, 05/2023 // Description : aligned memory allocations // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include #ifdef _MSC_VER #include #endif //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** aligned allocation * * note that you need to use aligned_free to free the block of memory * * @param numBytes number of bytes to allocate * @param alignment alignment of memory base address. * must be a power of 2 and at least as large as sizeof (void*) or zero in which it uses malloc * for allocation * * @return allocated memory */ void* aligned_alloc (size_t numBytes, uint32_t alignment) { if (alignment == 0) return malloc (numBytes); void* data {nullptr}; #if SMTG_OS_MACOS && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_15 posix_memalign (&data, alignment, numBytes); #elif defined(_MSC_VER) data = _aligned_malloc (numBytes, alignment); #else data = std::aligned_alloc (alignment, numBytes); #endif return data; } //------------------------------------------------------------------------ void aligned_free (void* addr, uint32_t alignment) { if (alignment == 0) std::free (addr); else { #if defined(_MSC_VER) _aligned_free (addr); #else std::free (addr); #endif } } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/audiobuffers.h000066400000000000000000000062301461511344300230170ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/audiobuffers.h // Created by : Steinberg, 04/2021 // Description : Audio Buffer utilities // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstaudioprocessor.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** get channel buffers from audio bus buffers 32 bit variant */ template ::type* = nullptr> inline Sample32** getChannelBuffers (AudioBusBuffers& buffer) { return buffer.channelBuffers32; } //------------------------------------------------------------------------ /** get channel buffers from audio bus buffers 64 bit variant */ template ::type* = nullptr> inline Sample64** getChannelBuffers (AudioBusBuffers& buffer) { return buffer.channelBuffers64; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/dataexchange.cpp000066400000000000000000000350511461511344300233130ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Helpers // Filename : public.sdk/source/vst/utility/dataexchange.cpp // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Helper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "dataexchange.h" #include "public.sdk/source/vst/utility/alignedalloc.h" #include "public.sdk/source/vst/utility/ringbuffer.h" #include "base/source/timer.h" #include "pluginterfaces/base/funknownimpl.h" #include "pluginterfaces/vst/ivsthostapplication.h" #include #ifdef _MSC_VER #include #endif //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { static constexpr DataExchangeBlock InvalidDataExchangeBlock = {nullptr, 0, InvalidDataExchangeBlockID}; //------------------------------------------------------------------------ bool operator== (const DataExchangeHandler::Config& c1, const DataExchangeHandler::Config& c2) { return c1.userContextID == c2.userContextID && c1.alignment == c2.alignment && c1.numBlocks == c2.numBlocks && c1.blockSize == c2.blockSize; } static constexpr auto MessageIDDataExchange = "DataExchange"; static constexpr auto MessageIDQueueOpened = "DataExchangeQueueOpened"; static constexpr auto MessageIDQueueClosed = "DataExchangeQueueClosed"; static constexpr auto MessageKeyData = "Data"; static constexpr auto MessageKeyBlockSize = "BlockSize"; static constexpr auto MessageKeyUserContextID = "UserContextID"; //------------------------------------------------------------------------ struct MessageHandler : ITimerCallback { using RingBuffer = OneReaderOneWriter::RingBuffer; IPtr timer; IPtr hostApp; IConnectionPoint* connection {nullptr}; RingBuffer realtimeBuffer; RingBuffer messageBuffer; RingBuffer rtOnlyBuffer; void* lockedRealtimeBlock {nullptr}; DataExchangeHandler::Config config {}; MessageHandler (FUnknown* hostContext, IConnectionPoint* connection) : connection (connection) { hostApp = U::cast (hostContext); } ~MessageHandler () noexcept override { if (timer) timer->stop (); timer = nullptr; } bool openQueue (const DataExchangeHandler::Config& c) { if (!hostApp || !connection) return false; config = c; timer = Timer::create (this, 1); if (!timer) return false; realtimeBuffer.resize (config.numBlocks); messageBuffer.resize (config.numBlocks); rtOnlyBuffer.resize (config.numBlocks); for (auto i = 0u; i < config.numBlocks; ++i) { auto data = aligned_alloc (config.blockSize, config.alignment); realtimeBuffer.push (data); } if (auto msg = owned (allocateMessage (hostApp))) { msg->setMessageID (MessageIDQueueOpened); if (auto attr = msg->getAttributes ()) { attr->setInt (MessageKeyUserContextID, config.userContextID); attr->setInt (MessageKeyBlockSize, config.blockSize); } connection->notify (msg); } return true; } bool closeQueue () { if (timer) timer->stop (); timer = nullptr; void* data; while (realtimeBuffer.pop (data)) { aligned_free (data, config.alignment); } while (messageBuffer.pop (data)) { aligned_free (data, config.alignment); } while (rtOnlyBuffer.pop (data)) { aligned_free (data, config.alignment); } if (auto msg = owned (allocateMessage (hostApp))) { msg->setMessageID (MessageIDQueueClosed); if (auto attr = msg->getAttributes ()) { attr->setInt (MessageKeyUserContextID, config.userContextID); } connection->notify (msg); } return true; } void* lockBlock () { if (lockedRealtimeBlock != nullptr) return nullptr; void* data; if (rtOnlyBuffer.pop (data)) { lockedRealtimeBlock = data; return lockedRealtimeBlock; } if (realtimeBuffer.pop (data)) { lockedRealtimeBlock = data; return lockedRealtimeBlock; } return nullptr; } bool freeBlock (bool send) { if (send) { if (messageBuffer.push (lockedRealtimeBlock)) { lockedRealtimeBlock = nullptr; return true; } return false; } if (rtOnlyBuffer.push (lockedRealtimeBlock)) { lockedRealtimeBlock = nullptr; return true; } return false; } void onTimer (Timer* timer) override { void* data; while (messageBuffer.pop (data)) { if (auto msg = owned (allocateMessage (hostApp))) { msg->setMessageID (MessageIDDataExchange); if (auto attributes = msg->getAttributes ()) { attributes->setInt (MessageKeyUserContextID, config.userContextID); attributes->setBinary (MessageKeyData, data, config.blockSize); connection->notify (msg); } } realtimeBuffer.push (data); } } }; //------------------------------------------------------------------------ struct DataExchangeHandler::Impl { Config config {}; ConfigCallback configCallback; IDataExchangeHandler* exchangeHandler {nullptr}; IConnectionPoint* connectionPoint {nullptr}; FUnknown* hostContext {nullptr}; IAudioProcessor* processor {nullptr}; std::unique_ptr fallbackMessageHandler; DataExchangeQueueID queueID {InvalidDataExchangeQueueID}; DataExchangeBlock currentBlock {InvalidDataExchangeBlock}; bool enabled {true}; bool internalUseExchangeManager {true}; bool isOpen () const { return queueID != InvalidDataExchangeQueueID; } bool openQueue (bool forceUseMessageHandling) { if (exchangeHandler && !forceUseMessageHandling) { internalUseExchangeManager = true; return exchangeHandler->openQueue (processor, config.blockSize, config.numBlocks, config.alignment, config.userContextID, &queueID) == kResultTrue; } internalUseExchangeManager = false; fallbackMessageHandler = std::make_unique (hostContext, connectionPoint); if (fallbackMessageHandler->openQueue (config)) { queueID = 0; return true; } fallbackMessageHandler.reset (); return false; } void closeQueue () { if (queueID == InvalidDataExchangeQueueID) return; if (internalUseExchangeManager) exchangeHandler->closeQueue (queueID); else if (fallbackMessageHandler) { fallbackMessageHandler->closeQueue (); fallbackMessageHandler.reset (); } currentBlock = InvalidDataExchangeBlock; queueID = InvalidDataExchangeQueueID; } DataExchangeBlock lockBlock () { if (!isOpen ()) return InvalidDataExchangeBlock; else if (currentBlock.blockID != InvalidDataExchangeBlockID) return currentBlock; else if (internalUseExchangeManager) { auto res = exchangeHandler->lockBlock (queueID, ¤tBlock); if (res != kResultTrue) currentBlock = InvalidDataExchangeBlock; return currentBlock; } else if (fallbackMessageHandler) { if (auto data = fallbackMessageHandler->lockBlock ()) { currentBlock.data = data; currentBlock.size = config.blockSize; currentBlock.blockID = 0; return currentBlock; } } return InvalidDataExchangeBlock; } bool freeBlock (bool send) { if (!isOpen () || currentBlock.blockID == InvalidDataExchangeBlockID) return true; if (internalUseExchangeManager) { auto res = exchangeHandler->freeBlock (queueID, currentBlock.blockID, send); currentBlock = InvalidDataExchangeBlock; return res == kResultTrue; } else if (fallbackMessageHandler) { if (fallbackMessageHandler->freeBlock (send)) { currentBlock = InvalidDataExchangeBlock; return true; } } return false; } }; //------------------------------------------------------------------------ DataExchangeHandler::DataExchangeHandler (IAudioProcessor* processor) { impl = std::make_unique (); impl->processor = processor; } //------------------------------------------------------------------------ DataExchangeHandler::DataExchangeHandler (IAudioProcessor* processor, ConfigCallback&& callback) : DataExchangeHandler (processor) { impl->configCallback = std::move (callback); } //------------------------------------------------------------------------ DataExchangeHandler::DataExchangeHandler (IAudioProcessor* processor, const ConfigCallback& callback) : DataExchangeHandler (processor) { impl->configCallback = callback; } //------------------------------------------------------------------------ DataExchangeHandler::~DataExchangeHandler () noexcept { } //------------------------------------------------------------------------ void DataExchangeHandler::onConnect (IConnectionPoint* other, FUnknown* hostContext) { impl->connectionPoint = other; impl->hostContext = hostContext; impl->exchangeHandler = U::cast (hostContext); } //------------------------------------------------------------------------ void DataExchangeHandler::onDisconnect (IConnectionPoint* other) { impl->closeQueue (); impl->connectionPoint = nullptr; impl->hostContext = nullptr; impl->exchangeHandler = nullptr; } //------------------------------------------------------------------------ void DataExchangeHandler::onActivate (const Vst::ProcessSetup& setup, bool forceUseMessageHandling) { Config conf {}; if (impl->configCallback (conf, setup)) { if (impl->isOpen ()) { if (impl->config == conf) return; impl->closeQueue (); } impl->config = conf; impl->openQueue (forceUseMessageHandling); } } //------------------------------------------------------------------------ void DataExchangeHandler::onDeactivate () { if (impl->isOpen ()) impl->closeQueue (); } //------------------------------------------------------------------------ void DataExchangeHandler::enable (bool state) { impl->enabled = state; } //------------------------------------------------------------------------ bool DataExchangeHandler::isEnabled () const { return impl->enabled; } //------------------------------------------------------------------------ DataExchangeBlock DataExchangeHandler::getCurrentOrNewBlock () { if (!isEnabled ()) return InvalidDataExchangeBlock; return impl->lockBlock (); } //------------------------------------------------------------------------ bool DataExchangeHandler::sendCurrentBlock () { return impl->freeBlock (true); } //------------------------------------------------------------------------ bool DataExchangeHandler::discardCurrentBlock () { return impl->freeBlock (false); } //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ struct DataExchangeReceiverHandler::Impl { IDataExchangeReceiver* receiver {nullptr}; }; //------------------------------------------------------------------------ DataExchangeReceiverHandler::DataExchangeReceiverHandler (IDataExchangeReceiver* receiver) { impl = std::make_unique (); impl->receiver = receiver; } //------------------------------------------------------------------------ DataExchangeReceiverHandler::~DataExchangeReceiverHandler () noexcept = default; //------------------------------------------------------------------------ bool DataExchangeReceiverHandler::onMessage (IMessage* msg) { std::string_view msgID = msg->getMessageID (); if (msgID == MessageIDDataExchange) { if (auto attributes = msg->getAttributes ()) { const void* data; uint32 sizeInBytes; if (attributes->getBinary (MessageKeyData, data, sizeInBytes) != kResultTrue) return false; int64 userContext; if (attributes->getInt (MessageKeyUserContextID, userContext) != kResultTrue) return false; DataExchangeBlock block; block.size = sizeInBytes; block.data = const_cast (data); block.blockID = 0; impl->receiver->onDataExchangeBlocksReceived (static_cast (userContext), 1, &block, false); return true; } } else if (msgID == MessageIDQueueOpened) { if (auto attributes = msg->getAttributes ()) { int64 userContext; if (attributes->getInt (MessageKeyUserContextID, userContext) != kResultTrue) return false; int64 blockSize; if (attributes->getInt (MessageKeyBlockSize, blockSize) != kResultTrue) return false; TBool backgroundThread = false; impl->receiver->queueOpened (static_cast (userContext), static_cast (blockSize), backgroundThread); return true; } } else if (msgID == MessageIDQueueClosed) { if (auto attributes = msg->getAttributes ()) { int64 userContext; if (attributes->getInt (MessageKeyUserContextID, userContext) != kResultTrue) return false; impl->receiver->queueClosed (static_cast (userContext)); return true; } } return false; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/dataexchange.h000066400000000000000000000161271461511344300227630ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Helpers // Filename : public.sdk/source/vst/utility/dataexchange.h // Created by : Steinberg, 06/2023 // Description : VST Data Exchange API Helper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstaudioeffect.h" #include "pluginterfaces/vst/ivstdataexchange.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Helper class to provide a single API for plug-ins to transfer data from the realtime audio * process to the edit controller either via the backwards compatible message handling protocol * (see IMessage) or the new IDataExchangeHandler/IDataExchangeReceiver API. * * To use this, make an instance of DataExchangeHandler a member of your IAudioProcessor class and * call onConnect, onDisconnect, onActivate and onDeactivate when the processor is (dis-)connected * and (de)activated. In your IAudioProcessor::process method you call getCurrentOrNewBlock () to * get a block fill it with the data you want to send and then call sendCurrentBlock. * See DataExchangeReceiverHandler on how to receive that data. */ class DataExchangeHandler { public: struct Config { /** the size of one block in bytes */ uint32 blockSize; /** the number of blocks to request */ uint32 numBlocks; /** the alignment of the buffer */ uint32 alignment {32}; /** a user defined context ID */ DataExchangeUserContextID userContextID {0}; }; /** the callback will be called on setup processing to get the required configuration for the * data exchange */ using ConfigCallback = std::function; DataExchangeHandler (IAudioProcessor* processor, ConfigCallback&& callback); DataExchangeHandler (IAudioProcessor* processor, const ConfigCallback& callback); ~DataExchangeHandler () noexcept; /** call this in AudioEffect::connect * * provide the hostContext you get via AudioEffect::initiailze to this method */ void onConnect (IConnectionPoint* other, FUnknown* hostContext); /** call this in AudioEffect::disconnect */ void onDisconnect (IConnectionPoint* other); /** call this in AudioEffect::setActive(true) */ void onActivate (const Vst::ProcessSetup& setup, bool forceUseMessageHandling = false); /** call this in AudioEffect::setActive(false) */ void onDeactivate (); //--- --------------------------------------------------------------------- /** Get the current or a new block * * On the first call this will always return a new block, only after sendCurrentBlock or * discardCurrentBlock is called a new block will be acquired. * This may return an invalid DataExchangeBlock (check the blockID for * InvalidDataExchangeBlockID) when the queue is full. * * [call only in process call] */ DataExchangeBlock getCurrentOrNewBlock (); /** Send the current block to the receiver * * [call only in process call] */ bool sendCurrentBlock (); /** Discard the current block * * [call only in process call] */ bool discardCurrentBlock (); /** Enable or disable the acquiring of new blocks (per default it is enabled) * * If you disable this then the getCurrentOrNewBlock will always return an invalid block. * * [call only in process call] */ void enable (bool state); /** Ask if enabled * * [call only in process call] */ bool isEnabled () const; //------------------------------------------------------------------------ private: DataExchangeHandler (IAudioProcessor* processor); struct Impl; std::unique_ptr impl; }; //------------------------------------------------------------------------ /** Helper class to provide a single API for plug-ins to transfer data from the realtime audio * process to the edit controller either via the message handling protocol (see IMessage) or the * new IDataExchangeHandler/IDataExchangeReceiver API. * * This is the other side of the DataExchangeHandler on the edit controller side. Make this a * member of your edit controller and call onMessage for every IMessage you get via * IConnectionPoint::notify. Your edit controller must implement the IDataExchangeReceiver * interface. */ class DataExchangeReceiverHandler { public: DataExchangeReceiverHandler (IDataExchangeReceiver* receiver); ~DataExchangeReceiverHandler () noexcept; /** call this for every message you receive via IConnectionPoint::notify * * @return true if the message was handled */ bool onMessage (IMessage* msg); private: struct Impl; std::unique_ptr impl; }; //------------------------------------------------------------------------ inline bool operator!= (const DataExchangeBlock& lhs, const DataExchangeBlock& rhs) { return lhs.data != rhs.data || lhs.size != rhs.size || lhs.blockID != rhs.blockID; } //------------------------------------------------------------------------ inline bool operator== (const DataExchangeBlock& lhs, const DataExchangeBlock& rhs) { return lhs.data == rhs.data && lhs.size == rhs.size && lhs.blockID == rhs.blockID; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/memoryibstream.h000066400000000000000000000135171461511344300234060ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Helpers // Filename : public.sdk/source/vst/utility/memoryibstream.h // Created by : Steinberg, 12/2023 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/funknownimpl.h" #include "pluginterfaces/base/ibstream.h" #include //------------------------------------------------------------------------ namespace Steinberg { //------------------------------------------------------------------------ class ResizableMemoryIBStream : public U::Implements> { public: inline ResizableMemoryIBStream (size_t reserve = 0); inline tresult PLUGIN_API read (void* buffer, int32 numBytes, int32* numBytesRead) override; inline tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten) override; inline tresult PLUGIN_API seek (int64 pos, int32 mode, int64* result) override; inline tresult PLUGIN_API tell (int64* pos) override; inline size_t getCursor () const; inline const void* getData () const; inline void rewind (); private: std::vector data; size_t cursor {0}; }; //------------------------------------------------------------------------ inline ResizableMemoryIBStream::ResizableMemoryIBStream (size_t reserve) { if (reserve) data.reserve (reserve); } //------------------------------------------------------------------------ inline tresult PLUGIN_API ResizableMemoryIBStream::read (void* buffer, int32 numBytes, int32* numBytesRead) { if (numBytes < 0 || buffer == nullptr) return kInvalidArgument; auto byteCount = std::min (numBytes, data.size () - cursor); if (byteCount > 0) { memcpy (buffer, data.data () + cursor, byteCount); cursor += byteCount; } if (numBytesRead) *numBytesRead = static_cast (byteCount); return kResultTrue; } //------------------------------------------------------------------------ inline tresult PLUGIN_API ResizableMemoryIBStream::write (void* buffer, int32 numBytes, int32* numBytesWritten) { if (numBytes < 0 || buffer == nullptr) return kInvalidArgument; auto requiredSize = cursor + numBytes; if (requiredSize >= data.capacity ()) { auto mod = (requiredSize % 1024); if (mod) { auto reserve = requiredSize + (1024 - mod); data.reserve (reserve); } } data.resize (requiredSize); memcpy (data.data () + cursor, buffer, numBytes); cursor += numBytes; if (numBytesWritten) *numBytesWritten = numBytes; return kResultTrue; } //------------------------------------------------------------------------ inline tresult PLUGIN_API ResizableMemoryIBStream::seek (int64 pos, int32 mode, int64* result) { int64 newCursor = static_cast (cursor); switch (mode) { case kIBSeekSet: newCursor = pos; break; case kIBSeekCur: newCursor += pos; break; case kIBSeekEnd: newCursor = data.size () + pos; break; default: return kInvalidArgument; } if (newCursor < 0) return kInvalidArgument; if (newCursor >= data.size ()) return kInvalidArgument; if (result) *result = newCursor; cursor = static_cast (newCursor); return kResultTrue; } //------------------------------------------------------------------------ inline tresult PLUGIN_API ResizableMemoryIBStream::tell (int64* pos) { if (pos == nullptr) return kInvalidArgument; *pos = static_cast (cursor); return kResultTrue; } //------------------------------------------------------------------------ inline size_t ResizableMemoryIBStream::getCursor () const { return cursor; } //------------------------------------------------------------------------ inline const void* ResizableMemoryIBStream::getData () const { return data.data (); } //------------------------------------------------------------------------ inline void ResizableMemoryIBStream::rewind () { cursor = 0; } //------------------------------------------------------------------------ } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/mpeprocessor.cpp000066400000000000000000000304541461511344300234220ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/mpeprocessor.cpp // Created by : Steinberg, 07/2017 // Description : VST 3 MIDI-MPE decomposer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "mpeprocessor.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace MPE { //------------------------------------------------------------------------ struct Note { NoteID noteID; Pitch pitch; }; //------------------------------------------------------------------------ struct ChannelData { using NoteList = std::vector; NoteList notes; NormalizedValue pressure {0.}; NormalizedValue x {0.5}; NormalizedValue y {0.}; }; //------------------------------------------------------------------------ struct Processor::Impl { static constexpr auto NumMIDIChannels = 16u; using ChannelDataList = std::array; Handler* delegate {nullptr}; Setup setup; ChannelDataList channelData {}; size_t dataBufferUsed {0}; size_t maxNotesPerChannel {16}; bool inSysex {false}; Impl (Handler* delegate, size_t maxNotesPerChannel) : delegate (delegate), maxNotesPerChannel (maxNotesPerChannel) { for (auto& cd : channelData) cd.notes.reserve (maxNotesPerChannel); } bool inMPEZone (uint8_t channel) const { return channel >= setup.memberChannelBegin && channel <= setup.memberChannelEnd; } Controller getController (InputMIDIMessage input) const { if (setup.pressure == input) return Controller::Pressure; if (setup.x == input) return Controller::X; if (setup.y == input) return Controller::Y; return Controller::None; } NormalizedValue getControllerValue (Controller controller, const ChannelData& data) const { switch (controller) { case Controller::Pressure: return data.pressure; case Controller::X: return data.x; case Controller::Y: return data.y; case Controller::None: assert (false); break; } return 0.; } void setControllerValue (Controller controller, ChannelData& data, NormalizedValue value) { switch (controller) { case Controller::Pressure: data.pressure = value; break; case Controller::X: data.x = value; break; case Controller::Y: data.y = value; break; case Controller::None: assert (false); break; } } }; //------------------------------------------------------------------------ Processor::Processor (Handler* delegate, size_t maxNotesPerChannel) { impl = std::make_unique (delegate, maxNotesPerChannel); } //------------------------------------------------------------------------ Processor::~Processor () noexcept = default; //------------------------------------------------------------------------ const Setup& Processor::getSetup () const { return impl->setup; } //------------------------------------------------------------------------ void Processor::changeSetup (const Setup& setup) { impl->setup = setup; } //------------------------------------------------------------------------ void Processor::reset () { for (auto& cd : impl->channelData) { for (auto& note : cd.notes) { impl->delegate->onMPENoteOff (note.noteID, note.pitch, 0.f); impl->delegate->releaseNoteID (note.noteID); } cd.notes.clear (); } } //------------------------------------------------------------------------ int32_t Processor::onNoteOn (const uint8_t* data, size_t dataSize) { assert (dataSize >= 2); if (data[2] == 0) return onNoteOff (data, dataSize); auto channel = data[0] & 0x0F; if (impl->inMPEZone (channel)) { auto& channelData = impl->channelData[channel]; auto pitch = data[1]; if (channelData.notes.size () >= impl->maxNotesPerChannel) { // error note stack full impl->delegate->errorNoteDroppedBecauseNoteStackFull (channel, pitch); } else { Note note; if (impl->delegate->generateNewNoteID (note.noteID)) { note.pitch = pitch; channelData.notes.push_back (note); auto velocity = static_cast (data[2]) / 127.f; impl->delegate->onMPENoteOn (note.noteID, note.pitch, velocity); impl->delegate->onMPEControllerChange (note.noteID, Controller::Pressure, channelData.pressure); impl->delegate->onMPEControllerChange (note.noteID, Controller::X, channelData.x); impl->delegate->onMPEControllerChange (note.noteID, Controller::Y, channelData.y); } else { // error: note will be dropped impl->delegate->errorNoteDroppedBecauseNoNoteID (pitch); } } } else { impl->delegate->onOtherInput (data, 3); } return 3; } //------------------------------------------------------------------------ int32_t Processor::onNoteOff (const uint8_t* data, size_t dataSize) { assert (dataSize >= 2); auto channel = data[0] & 0x0F; if (impl->inMPEZone (channel)) { bool noteFound = false; auto& notes = impl->channelData[channel].notes; for (auto it = notes.begin (); it != notes.end (); ++it) { if (it->pitch == data[1]) { auto velocity = static_cast (data[2]) / 127.f; impl->delegate->onMPENoteOff (it->noteID, it->pitch, velocity); impl->delegate->releaseNoteID (it->noteID); notes.erase (it); noteFound = true; break; } } if (!noteFound) { // error: no note for note off found impl->delegate->errorNoteForNoteOffNotFound (channel, data[1]); } } else { impl->delegate->onOtherInput (data, 3); } return 3; } //------------------------------------------------------------------------ int32_t Processor::onAftertouch (const uint8_t* data, size_t dataSize) { assert (dataSize >= 2); auto controller = impl->getController (ChannelPressure); if (controller != Controller::None) { auto channel = data[0] & 0x0F; if (impl->inMPEZone (channel)) { auto& channelData = impl->channelData[channel]; auto value = static_cast (data[2]) / 127.; impl->setControllerValue (controller, channelData, value); for (auto& note : channelData.notes) { impl->delegate->onMPEControllerChange (note.noteID, controller, value); } return 3; } } impl->delegate->onOtherInput (data, 3); return 3; } //------------------------------------------------------------------------ int32_t Processor::onController (const uint8_t* data, size_t dataSize) { assert (dataSize >= 2); auto cc = data[1]; auto controller = impl->getController (static_cast (cc)); if (controller != Controller::None) { auto channel = data[0] & 0x0F; if (impl->inMPEZone (channel)) { auto& channelData = impl->channelData[channel]; auto value = static_cast (data[2]) / 127.; impl->setControllerValue (controller, channelData, value); for (auto& note : channelData.notes) { impl->delegate->onMPEControllerChange (note.noteID, controller, value); } return 3; } } impl->delegate->onOtherInput (data, 3); return 3; } //------------------------------------------------------------------------ int32_t Processor::onProgramChange (const uint8_t* data, size_t dataSize) { assert (dataSize >= 1); auto channel = data[0] & 0x0F; if (impl->inMPEZone (channel)) { // error: program change send in MPE zone impl->delegate->errorProgramChangeReceivedInMPEZone (); } else { impl->delegate->onOtherInput (data, 2); } return 2; } //------------------------------------------------------------------------ int32_t Processor::onChannelPressure (const uint8_t* data, size_t dataSize) { assert (dataSize >= 1); auto controller = impl->getController (ChannelPressure); if (controller != Controller::None) { auto channel = data[0] & 0x0F; if (impl->inMPEZone (channel)) { auto& channelData = impl->channelData[channel]; auto value = static_cast (data[1]) / 127.; impl->setControllerValue (controller, channelData, value); for (auto& note : channelData.notes) { impl->delegate->onMPEControllerChange (note.noteID, controller, value); } return 2; } } impl->delegate->onOtherInput (data, 2); return 2; } //------------------------------------------------------------------------ int32_t Processor::onPitchWheel (const uint8_t* data, size_t dataSize) { assert (dataSize >= 2); auto controller = impl->getController (PitchBend); if (controller != Controller::None) { auto channel = data[0] & 0x0F; if (impl->inMPEZone (channel)) { auto& channelData = impl->channelData[channel]; auto value = static_cast ((data[1] & 0x7F) + ((data[2] & 0x7F) << 7)) / 16383.; impl->setControllerValue (controller, channelData, value); for (auto& note : channelData.notes) { impl->delegate->onMPEControllerChange (note.noteID, controller, value); } return 3; } } impl->delegate->onOtherInput (data, 3); return 3; } //------------------------------------------------------------------------ void Processor::processMIDIInput (const uint8_t* data, size_t dataSize) { assert (dataSize > 0); if (impl->inSysex || data[0] == 0xf0) { for (size_t index = 0; index < dataSize; ++index) { if (data[index] == 0xf7) { ++index; impl->delegate->onSysexInput (data, index); impl->inSysex = false; auto dataLeft = dataSize - index; if (dataLeft != 0) { processMIDIInput (data + index, dataSize - index); } return; } } impl->inSysex = true; impl->delegate->onSysexInput (data, dataSize); return; } auto status = static_cast (data[0] & 0xF0); int32_t packetSize = 0; switch (status) { case 0x90: // Note On { packetSize = onNoteOn (data, dataSize); break; } case 0x80: // Note Off { packetSize = onNoteOff (data, dataSize); break; } case 0xa0: // Aftertouch { packetSize = onAftertouch (data, dataSize); break; } case 0xb0: // Controller { packetSize = onController (data, dataSize); break; } case 0xc0: // Program Change { packetSize = onProgramChange (data, dataSize); break; } case 0xd0: // Channel Pressure { packetSize = onChannelPressure (data, dataSize); break; } case 0xe0: // Pitch Wheel { packetSize = onPitchWheel (data, dataSize); break; } case 0xf0: // System Realtime Messages { impl->delegate->onOtherInput (data, 1); packetSize = 1; break; } default: { // Ehm... assert (false); return; } } if (dataSize > static_cast (packetSize)) processMIDIInput (data + packetSize, dataSize - packetSize); } //------------------------------------------------------------------------ } // MPE } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/mpeprocessor.h000066400000000000000000000161211461511344300230620ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/mpeprocessor.h // Created by : Steinberg, 07/2017 // Description : VST 3 MIDI-MPE decomposer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace MPE { using NoteID = int32_t; using Pitch = uint32_t; using Channel = uint32_t; using Velocity = float; using NormalizedValue = double; //------------------------------------------------------------------------ /** MPE per note controller enumeration */ enum class Controller : uint32_t { /** Pressure MPE controller */ Pressure, /** X / horizontal MPE controller */ X, /** Y / vertical MPE controller */ Y, /** no MPE controller */ None }; //------------------------------------------------------------------------ struct Handler { /** Generate a new noteID * * called by the processor for a new NoteID. The handler has to make sure that the noteID is * not used again until the releaseNoteID method is called. * * @param outNoteID on return contains the new noteID if this call succeed * @return true if outNoteID was filled with a new noteID */ virtual bool generateNewNoteID (NoteID& outNoteID) = 0; /** Release a noteID * * called by the processor when the NoteID is no longer used. * * @param noteID the noteID not longer in use */ virtual void releaseNoteID (NoteID noteID) = 0; /** A note on was transmitted * * @param noteID unique note identifier * @param pitch note pitch * @param velocity note on velocity */ virtual void onMPENoteOn (NoteID noteID, Pitch pitch, Velocity velocity) = 0; /** A note off was transmitted * * @param noteID unique note identifier * @param pitch note pitch * @param velocity note off velocity */ virtual void onMPENoteOff (NoteID noteID, Pitch pitch, Velocity velocity) = 0; /** A new per note controller change was transmitted * * @param noteID unique note identifier * @param cc the MIDI controller which changed * @param value the value of the change in the range [0..1] */ virtual void onMPEControllerChange (NoteID noteID, Controller cc, NormalizedValue value) = 0; /** Non MPE MIDI input data was transmitted * * @param data MIDI data buffer * @param dataSize size of the MIDI data buffer in bytes */ virtual void onOtherInput (const uint8_t* data, size_t dataSize) = 0; /** Sysex MIDI data was transmitted * * @param data Sysex data buffer * @param dataSize size of sysex data buffer in bytes */ virtual void onSysexInput (const uint8_t* data, size_t dataSize) = 0; // error handling /** called when the handler did not return a new note ID */ virtual void errorNoteDroppedBecauseNoNoteID (Pitch pitch) = 0; /** the internal note stack for this channel is full, happens on too many note ons per channel */ virtual void errorNoteDroppedBecauseNoteStackFull (Channel channel, Pitch pitch) = 0; /** called when the internal data has no reference to this note off */ virtual void errorNoteForNoteOffNotFound (Channel channel, Pitch pitch) = 0; /** called when a program change was received inside the MPE zone which is a protocol violation */ virtual void errorProgramChangeReceivedInMPEZone () = 0; }; //------------------------------------------------------------------------ /** Input MIDI Message enumeration */ enum InputMIDIMessage : uint32_t { MIDICC_0 = 0, MIDICC_127 = 127, ChannelPressure = 128, PitchBend = 129, Aftertouch = 130, }; //------------------------------------------------------------------------ /** MPE setup structure */ struct Setup { Channel masterChannel {0}; Channel memberChannelBegin {1}; Channel memberChannelEnd {14}; InputMIDIMessage pressure {ChannelPressure}; InputMIDIMessage x {PitchBend}; InputMIDIMessage y {static_cast (74)}; }; //------------------------------------------------------------------------ /** MPE Decompose Processor * * decomposes MPE MIDI messages * */ class Processor { public: Processor (Handler* delegate, size_t maxNotesPerChannel = 16); ~Processor () noexcept; const Setup& getSetup () const; /** change the MPE setup * * make sure that MIDI processing is stopped while this is called. * * @param setup new setup */ void changeSetup (const Setup& setup); /** reset all notes * * All playing notes will be stopped and note identifiers are released. * */ void reset (); /** feed new native MIDI data * * @param data MIDI data buffer * @param dataSize data buffer size in bytes */ void processMIDIInput (const uint8_t* data, size_t dataSize); private: int32_t onNoteOn (const uint8_t* data, size_t dataSize); int32_t onNoteOff (const uint8_t* data, size_t dataSize); int32_t onAftertouch (const uint8_t* data, size_t dataSize); int32_t onController (const uint8_t* data, size_t dataSize); int32_t onProgramChange (const uint8_t* data, size_t dataSize); int32_t onChannelPressure (const uint8_t* data, size_t dataSize); int32_t onPitchWheel (const uint8_t* data, size_t dataSize); struct Impl; std::unique_ptr impl; }; //------------------------------------------------------------------------ } // MPE } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/objcclassbuilder.h000066400000000000000000000210231461511344300236500ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/objcclassbuilder.h // Created by : Steinberg, 06/2022 // Description : Objective-C class builder utilities // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include #include #include #include #include #include //------------------------------------------------------------------------------------ namespace Steinberg { //------------------------------------------------------------------------------------ template struct ObjCVariable { ObjCVariable (__unsafe_unretained id obj, Ivar ivar) : obj (obj), ivar (ivar) {} ObjCVariable (ObjCVariable&& o) { *this = std::move (o); } ObjCVariable& operator= (ObjCVariable&& o) { obj = o.obj; ivar = o.ivar; o.obj = nullptr; o.ivar = nullptr; return *this; } T get () const { auto offset = ivar_getOffset (ivar); return *reinterpret_cast (((__bridge uintptr_t)obj) + offset); } void set (const T& value) { auto offset = ivar_getOffset (ivar); auto storage = reinterpret_cast (((__bridge uintptr_t)obj) + offset); *storage = value; } private: __unsafe_unretained id obj; Ivar ivar {nullptr}; }; //------------------------------------------------------------------------------------ struct ObjCInstance { ObjCInstance (__unsafe_unretained id obj, Class superClass = nullptr) : obj (obj) { os.super_class = superClass; } template std::optional> getVariable (const char* name) const { if (__strong auto ivar = class_getInstanceVariable (object_getClass (obj), name)) { return {ObjCVariable (obj, ivar)}; } return {}; } template void callSuper (SEL selector, T... args) const { void (*f) (__unsafe_unretained id, SEL, T...) = (void (*) (__unsafe_unretained id, SEL, T...))objc_msgSendSuper; f (getSuper (), selector, args...); } template R callSuper (SEL selector, T... args) const { R (*f) (__unsafe_unretained id, SEL, T...) = (R (*) (__unsafe_unretained id, SEL, T...))objc_msgSendSuper; return f (getSuper (), selector, args...); } private: id getSuper () const { if (os.receiver == nullptr) { os.receiver = obj; } if (os.super_class == nullptr) { os.super_class = class_getSuperclass (object_getClass (obj)); } return (__bridge id) (&os); } __unsafe_unretained id obj; mutable objc_super os {}; }; //------------------------------------------------------------------------------------ struct ObjCClassBuilder { ObjCClassBuilder& init (const char* name, Class baseClass); template ObjCClassBuilder& addMethod (SEL selector, Func imp); template ObjCClassBuilder& addIvar (const char* name); ObjCClassBuilder& addProtocol (const char* name); ObjCClassBuilder& addProtocol (Protocol* proto); Class finalize (); private: static Class generateUniqueClass (const std::string& inClassName, Class baseClass); template ObjCClassBuilder& addMethod (SEL selector, Func imp, const char* types); ObjCClassBuilder& addIvar (const char* name, size_t size, uint8_t alignment, const char* types); template static constexpr std::tuple functionArgs (R (*) (T...)) { return std::tuple (); } template static constexpr std::tuple functionArgs (void (*) (T...)) { return std::tuple (); } template static constexpr bool isVoidReturnType (R (*) (T...)) { return false; } template static constexpr bool isVoidReturnType (void (*) (T...)) { return true; } template static std::string encodeFunction (Proc proc) { std::string result; if (isVoidReturnType (proc)) result = "v"; std::apply ([&] (auto&&... args) { ((result += @encode (decltype (args))), ...); }, functionArgs (proc)); return result; } Class cl {nullptr}; Class baseClass {nullptr}; }; //------------------------------------------------------------------------ inline ObjCClassBuilder& ObjCClassBuilder::init (const char* name, Class bc) { baseClass = bc; cl = generateUniqueClass (name, baseClass); return *this; } //------------------------------------------------------------------------------------ inline Class ObjCClassBuilder::generateUniqueClass (const std::string& inClassName, Class baseClass) { std::string className (inClassName); int32_t iteration = 0; while (objc_lookUpClass (className.data ()) != nil) { iteration++; className = inClassName + "_" + std::to_string (iteration); } Class resClass = objc_allocateClassPair (baseClass, className.data (), 0); return resClass; } //----------------------------------------------------------------------------- inline Class ObjCClassBuilder::finalize () { objc_registerClassPair (cl); auto res = cl; baseClass = cl = nullptr; return res; } //----------------------------------------------------------------------------- template inline ObjCClassBuilder& ObjCClassBuilder::addMethod (SEL selector, Func imp, const char* types) { auto res = class_addMethod (cl, selector, IMP (imp), types); assert (res == true); (void)res; return *this; } //----------------------------------------------------------------------------- template ObjCClassBuilder& ObjCClassBuilder::addMethod (SEL selector, Func imp) { return addMethod (selector, imp, encodeFunction (imp).data ()); } //------------------------------------------------------------------------ template inline ObjCClassBuilder& ObjCClassBuilder::addIvar (const char* name) { return addIvar (name, sizeof (T), static_cast (std::log2 (sizeof (T))), @encode (T)); } //----------------------------------------------------------------------------- inline ObjCClassBuilder& ObjCClassBuilder::addIvar (const char* name, size_t size, uint8_t alignment, const char* types) { auto res = class_addIvar (cl, name, size, alignment, types); assert (res == true); (void)res; return *this; } //----------------------------------------------------------------------------- inline ObjCClassBuilder& ObjCClassBuilder::addProtocol (const char* name) { if (auto protocol = objc_getProtocol (name)) return addProtocol (protocol); return *this; } //----------------------------------------------------------------------------- inline ObjCClassBuilder& ObjCClassBuilder::addProtocol (Protocol* proto) { auto res = class_addProtocol (cl, proto); assert (res == true); (void)res; return *this; } //------------------------------------------------------------------------------------ } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/optional.h000066400000000000000000000074021461511344300221700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/optional.h // Created by : Steinberg, 08/2016 // Description : optional helper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include #include //------------------------------------------------------------------------ namespace VST3 { //------------------------------------------------------------------------ template struct Optional { Optional () noexcept : valid (false) {} explicit Optional (const T& v) noexcept : _value (v), valid (true) {} Optional (T&& v) noexcept : _value (std::move (v)), valid (true) {} Optional (Optional&& other) noexcept { *this = std::move (other); } Optional& operator= (Optional&& other) noexcept { valid = other.valid; _value = std::move (other._value); return *this; } explicit operator bool () const noexcept { setValidationChecked (); return valid; } const T& operator* () const noexcept { checkValid (); return _value; } const T* operator-> () const noexcept { checkValid (); return &_value; } T& operator* () noexcept { checkValid (); return _value; } T* operator-> () noexcept { checkValid (); return &_value; } T&& value () noexcept { checkValid (); return std::move (_value); } const T& value () const noexcept { checkValid (); return _value; } void swap (T& other) noexcept { checkValid (); auto tmp = std::move (other); other = std::move (_value); _value = std::move (tmp); } private: T _value {}; bool valid; #if !defined(NDEBUG) mutable bool validationChecked {false}; #endif void setValidationChecked () const { #if !defined(NDEBUG) validationChecked = true; #endif } void checkValid () const { #if !defined(NDEBUG) assert (validationChecked); #endif } }; //------------------------------------------------------------------------ } vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/processcontextrequirements.h000066400000000000000000000127031461511344300260720ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/processcontextrequirements.h // Created by : Steinberg, 12/2019 // Description : Helper class to work with IProcessContextRequirements // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstaudioprocessor.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ class ProcessContextRequirements { private: using Self = ProcessContextRequirements; public: ProcessContextRequirements (uint32 inFlags = 0) : flags (inFlags) {} bool wantsNone () const { return flags == 0; } bool wantsSystemTime () const { return (flags & IProcessContextRequirements::kNeedSystemTime) != 0; } bool wantsContinousTimeSamples () const { return (flags & IProcessContextRequirements::kNeedContinousTimeSamples) != 0; } bool wantsProjectTimeMusic () const { return (flags & IProcessContextRequirements::kNeedProjectTimeMusic) != 0; } bool wantsBarPositionMusic () const { return (flags & IProcessContextRequirements::kNeedBarPositionMusic) != 0; } bool wantsCycleMusic () const { return (flags & IProcessContextRequirements::kNeedCycleMusic) != 0; } bool wantsSamplesToNextClock () const { return (flags & IProcessContextRequirements::kNeedSamplesToNextClock) != 0; } bool wantsTempo () const { return (flags & IProcessContextRequirements::kNeedTempo) != 0; } bool wantsTimeSignature () const { return (flags & IProcessContextRequirements::kNeedTimeSignature) != 0; } bool wantsChord () const { return (flags & IProcessContextRequirements::kNeedChord) != 0; } bool wantsFrameRate () const { return (flags & IProcessContextRequirements::kNeedFrameRate) != 0; } bool wantsTransportState () const { return (flags & IProcessContextRequirements::kNeedTransportState) != 0; } /** set SystemTime as requested */ Self& needSystemTime () { flags |= IProcessContextRequirements::kNeedSystemTime; return *this; } /** set ContinousTimeSamples as requested */ Self& needContinousTimeSamples () { flags |= IProcessContextRequirements::kNeedContinousTimeSamples; return *this; } /** set ProjectTimeMusic as requested */ Self& needProjectTimeMusic () { flags |= IProcessContextRequirements::kNeedProjectTimeMusic; return *this; } /** set BarPositionMusic as needed */ Self& needBarPositionMusic () { flags |= IProcessContextRequirements::kNeedBarPositionMusic; return *this; } /** set CycleMusic as needed */ Self& needCycleMusic () { flags |= IProcessContextRequirements::kNeedCycleMusic; return *this; } /** set SamplesToNextClock as needed */ Self& needSamplesToNextClock () { flags |= IProcessContextRequirements::kNeedSamplesToNextClock; return *this; } /** set Tempo as needed */ Self& needTempo () { flags |= IProcessContextRequirements::kNeedTempo; return *this; } /** set TimeSignature as needed */ Self& needTimeSignature () { flags |= IProcessContextRequirements::kNeedTimeSignature; return *this; } /** set Chord as needed */ Self& needChord () { flags |= IProcessContextRequirements::kNeedChord; return *this; } /** set FrameRate as needed */ Self& needFrameRate () { flags |= IProcessContextRequirements::kNeedFrameRate; return *this; } /** set TransportState as needed */ Self& needTransportState () { flags |= IProcessContextRequirements::kNeedTransportState; return *this; } uint32 flags {0}; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/processdataslicer.h000066400000000000000000000117241461511344300240570ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/processdataslicer.h // Created by : Steinberg, 04/2021 // Description : Process the process data in slices // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstaudioprocessor.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Process Data Slicer * * Cuts the VST process data into slices to process * * Example: * \code{.cpp} * tresult PLUGIN_API Processor::process (ProcessData& data) * { * ProcessDataSlicer slicer (32); * slicer.process (data, [&] (ProcessData& data) { * doSlicedProcessing (data); // data.numSamples <= 32 * }); * } * \endcode */ class ProcessDataSlicer { public: /** Constructor * * @param inSliceSice slice size in samples */ ProcessDataSlicer (int32 inSliceSize = 8) : sliceSize (inSliceSize) {} //------------------------------------------------------------------------ /** Process the data * * @tparam SampleSize sample size 32 or 64 bit processing * @tparam DoProcessCallback the callback proc * @param data Process data * @param doProcessing process callback */ template void process (ProcessData& data, DoProcessCallback doProcessing) noexcept { stopIt = false; auto numSamples = data.numSamples; auto samplesLeft = data.numSamples; while (samplesLeft > 0 && !stopIt) { auto currentSliceSize = samplesLeft > sliceSize ? sliceSize : samplesLeft; data.numSamples = currentSliceSize; doProcessing (data); advanceBuffers (data.inputs, data.numInputs, currentSliceSize); advanceBuffers (data.outputs, data.numOutputs, currentSliceSize); samplesLeft -= currentSliceSize; } // revert buffer pointers (otherwise some hosts may use these wrong pointers) advanceBuffers (data.inputs, data.numInputs, -(numSamples - samplesLeft)); advanceBuffers (data.outputs, data.numOutputs, -(numSamples - samplesLeft)); data.numSamples = numSamples; } /** Stop the slice process * * If you want to break the slice processing early, you have to capture the slicer in the * DoProcessCallback and call the stop method. */ void stop () noexcept { stopIt = true; } private: template void advanceBuffers (AudioBusBuffers* buffers, int32 numBuffers, int32 numSamples) const noexcept { for (auto index = 0; index < numBuffers; ++index) { for (auto channelIndex = 0; channelIndex < buffers[index].numChannels; ++channelIndex) { if (SampleSize == SymbolicSampleSizes::kSample32) buffers[index].channelBuffers32[channelIndex] += numSamples; else buffers[index].channelBuffers64[channelIndex] += numSamples; } } } int32 sliceSize; bool stopIt {false}; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/ringbuffer.h000066400000000000000000000111661461511344300224760ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/ringbuffer.h // Created by : Steinberg, 01/2018 // Description : Simple RingBuffer with one reader and one writer thread // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ftypes.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace OneReaderOneWriter { //------------------------------------------------------------------------ /** Ringbuffer * * A ringbuffer supporting one reader and one writer thread */ template class RingBuffer { private: using AtomicUInt32 = std::atomic; using Index = uint32; using StorageT = std::vector; StorageT buffer; Index readPosition {0u}; Index writePosition {0u}; AtomicUInt32 elementCount {0u}; public: /** Default constructor * * @param initialNumberOfItems initial ring buffer size */ RingBuffer (size_t initialNumberOfItems = 0) noexcept { if (initialNumberOfItems) resize (initialNumberOfItems); } /** size * * @return number of elements the buffer can hold */ size_t size () const noexcept { return buffer.size (); } /** resize * * note that you have to make sure that no other thread is reading or writing while calling * this method * @param newNumberOfItems resize buffer */ void resize (size_t newNumberOfItems) noexcept { buffer.resize (newNumberOfItems); } /** push a new item into the ringbuffer * * @param item to push * @return true on success or false if buffer is full */ bool push (ItemT&& item) noexcept { if (elementCount.load () == buffer.size ()) return false; // full auto pos = writePosition; buffer[pos] = std::move (item); elementCount++; ++pos; if (pos >= buffer.size ()) pos = 0u; writePosition = pos; return true; } /** push a new item into the ringbuffer * * @param item to push * @return true on success or false if buffer is full */ bool push (const ItemT& item) noexcept { if (elementCount.load () == buffer.size ()) return false; // full auto pos = writePosition; buffer[pos] = item; elementCount++; ++pos; if (pos >= buffer.size ()) pos = 0u; writePosition = pos; return true; } /** pop an item out of the ringbuffer * * @param item * @return true on success or false if buffer is empty */ bool pop (ItemT& item) noexcept { if (elementCount.load () == 0) return false; // empty auto pos = readPosition; item = std::move (buffer[pos]); elementCount--; ++pos; if (pos >= buffer.size ()) pos = 0; readPosition = pos; return true; } }; //------------------------------------------------------------------------ } // OneReaderOneWriter } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/rttransfer.h000066400000000000000000000124301461511344300225320ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/rttransfer.h // Created by : Steinberg, 04/2021 // Description : Realtime Object Transfer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Transfer objects from a non realtime thread to a realtime one * * You have to use it from two threads, the realtime context thread where you are not allowed to * block and a non realtime thread from where the object is coming. * * It's guaranteed that the function you should only call in the realtime context is wait free and * does not do any allocations or deallocations * */ template > struct RTTransferT { using ObjectType = ObjectT; using ObjectTypePtr = std::unique_ptr; RTTransferT () { assert (storage[0].is_lock_free ()); } ~RTTransferT () noexcept { clear_ui (); } /** Access the transfer object. * * If there's a new object, the proc is called with the new object. The object is only valid * inside the proc. * * To be called from the realtime context. */ template void accessTransferObject_rt (Proc proc) noexcept { ObjectType* newObject {nullptr}; ObjectType* currentObject = storage[0].load (); if (currentObject && storage[0].compare_exchange_strong (currentObject, newObject)) { proc (*currentObject); ObjectType* transitObj = storage[1].load (); if (storage[1].compare_exchange_strong (transitObj, currentObject) == false) { assert (false); } ObjectType* oldObject = storage[2].load (); if (storage[2].compare_exchange_strong (oldObject, transitObj) == false) { assert (false); } } } /** Transfer an object to the realtime context. * * The ownership of newObject is transfered to this object and the Deleter is used to free * the memory of it afterwards. * * If there's already an object in transfer the previous object will be deallocated and * replaced with the new one without passing to the realtime context. * * To be called from the non realtime context. */ void transferObject_ui (ObjectTypePtr&& newObjectPtr) { ObjectType* newObject = newObjectPtr.release (); clear_ui (); while (true) { ObjectType* currentObject = storage[0].load (); if (storage[0].compare_exchange_strong (currentObject, newObject)) { deallocate (currentObject); break; } } } /** Clear the transfer. * * To be called from the non realtime context. */ void clear_ui () { clearStorage (storage[0]); clearStorage (storage[1]); clearStorage (storage[2]); } private: using AtomicObjectPtr = std::atomic; void clearStorage (AtomicObjectPtr& atomObj) { ObjectType* newObject = nullptr; while (ObjectType* current = atomObj.load ()) { if (atomObj.compare_exchange_strong (current, newObject)) { deallocate (current); break; } } } void deallocate (ObjectType* object) { if (object) { Deleter d; d (object); } } std::array storage {}; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/sampleaccurate.h000066400000000000000000000226241461511344300233370ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/sampleaccurate.h // Created by : Steinberg, 04/2021 // Description : // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstparameterchanges.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace SampleAccurate { //------------------------------------------------------------------------ /** Utility class to handle sample accurate parameter changes coming from IParamValueQueue * * The normal use case is to setup the Parameter class once for a specific ParamID and then only * use it in the realtime process method. * * If there's a change for the parameter in the inputParameterChanges of the ProcessData structure * the Parameters beginChange method should be called with the valueQueue of the parmID and then * while processing the current audio block the parameter should be advanced as many samples as you * would like to handle parameter changes. In the end the endChanges method must be called to * cleanup internal data structures. * For convenience the endChanges method can be called without a previous beginChanges call. */ struct Parameter { Parameter (ParamID pid = 0, ParamValue initValue = 0.) noexcept; /** Set the value of the parameter * * When this is called during the beginChanges() and endChanges() sequence, the changes in the * value queue are ignored * * @param v the new value of the parameter */ void setValue (ParamValue v) noexcept; /** Set the ID of the parameter * * @param pid the new ID of the parameter */ void setParamID (ParamID pid) noexcept; /** Get the ID of the parameter * * @return ID of the parameter */ ParamID getParamID () const noexcept; /** Get the current value of the parameter * * @return current value */ ParamValue getValue () const noexcept; /** Are there any pending changes * * @return true when there are changes */ bool hasChanges () const noexcept; /** Begin change sequence * * @param valueQueue the queue with the changes */ void beginChanges (IParamValueQueue* valueQueue) noexcept; /** Advance the changes in queue * * @param numSamples how many samples to advance in the queue * @return current value */ ParamValue advance (int32 numSamples) noexcept; /** Flush all changes in the queue * * @return value after flushing */ ParamValue flushChanges () noexcept; /** End change sequence * * @return value after flushing all possible pending changes */ ParamValue endChanges () noexcept; /** Templated variant of advance * * calls Proc p with the new value if the value changes */ template void advance (int32 numSamples, Proc p) noexcept; /** Templated variant of flushChanges * * calls Proc p with the new value if the value changes */ template void flushChanges (Proc p) noexcept; /** Templated variant of endChanges * * calls Proc p with the new value if the value changes */ template void endChanges (Proc p) noexcept; private: struct ValuePoint { ParamValue value {0.}; double rampPerSample {0.}; int32 sampleOffset {-1}; }; ValuePoint processNextValuePoint () noexcept; ParamID paramID; int32 pointCount {-1}; int32 pointIndex {0}; int32 sampleCounter {0}; ParamValue currentValue {0.}; ValuePoint valuePoint; IParamValueQueue* queue {nullptr}; }; //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE Parameter::Parameter (ParamID pid, ParamValue initValue) noexcept { setParamID (pid); setValue (initValue); } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE void Parameter::setValue (ParamValue v) noexcept { currentValue = v; pointCount = 0; valuePoint = {currentValue, 0., -1}; } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE void Parameter::setParamID (ParamID pid) noexcept { paramID = pid; } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE ParamID Parameter::getParamID () const noexcept { return paramID; } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE ParamValue Parameter::getValue () const noexcept { return currentValue; } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE bool Parameter::hasChanges () const noexcept { return pointCount >= 0; } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE void Parameter::beginChanges (IParamValueQueue* valueQueue) noexcept { assert (queue == nullptr); assert (valueQueue->getParameterId () == getParamID ()); queue = valueQueue; pointCount = queue->getPointCount (); pointIndex = 0; sampleCounter = 0; if (pointCount) valuePoint = processNextValuePoint (); } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE ParamValue Parameter::advance (int32 numSamples) noexcept { if (pointCount < 0) return currentValue; while (valuePoint.sampleOffset >= 0 && valuePoint.sampleOffset < numSamples) { sampleCounter += valuePoint.sampleOffset; numSamples -= valuePoint.sampleOffset; currentValue = valuePoint.value; valuePoint = processNextValuePoint (); } currentValue += (valuePoint.rampPerSample * numSamples); valuePoint.sampleOffset -= numSamples; sampleCounter += numSamples; return currentValue; } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE ParamValue Parameter::flushChanges () noexcept { while (pointCount >= 0) { currentValue = valuePoint.value; valuePoint = processNextValuePoint (); } currentValue = valuePoint.value; return currentValue; } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE ParamValue Parameter::endChanges () noexcept { flushChanges (); pointCount = -1; queue = nullptr; return currentValue; } //------------------------------------------------------------------------ template SMTG_ALWAYS_INLINE void Parameter::advance (int32 numSamples, Proc p) noexcept { auto originalValue = currentValue; if (advance (numSamples) != originalValue) { p (currentValue); } } //------------------------------------------------------------------------ template SMTG_ALWAYS_INLINE void Parameter::flushChanges (Proc p) noexcept { auto originalValue = currentValue; if (flushChanges () != originalValue) p (currentValue); } //------------------------------------------------------------------------ template SMTG_ALWAYS_INLINE void Parameter::endChanges (Proc p) noexcept { auto originalValue = currentValue; if (endChanges () != originalValue) p (currentValue); } //------------------------------------------------------------------------ SMTG_ALWAYS_INLINE auto Parameter::processNextValuePoint () noexcept -> ValuePoint { ValuePoint nv; if (pointCount == 0 || queue->getPoint (pointIndex, nv.sampleOffset, nv.value) != kResultTrue) { pointCount = -1; return {currentValue, 0., -1}; } nv.sampleOffset -= sampleCounter; ++pointIndex; --pointCount; if (nv.sampleOffset == 0) nv.rampPerSample = (nv.value - currentValue); else nv.rampPerSample = (nv.value - currentValue) / static_cast (nv.sampleOffset); return nv; } //------------------------------------------------------------------------ } // SampleAccurate } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/stringconvert.cpp000066400000000000000000000117241461511344300236070ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/stringconvert.cpp // Created by : Steinberg, 11/2014 // Description : c++11 unicode string convert functions // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "stringconvert.h" #include #include #include //------------------------------------------------------------------------ namespace VST3 { namespace StringConvert { //------------------------------------------------------------------------ namespace { #if defined(_MSC_VER) && _MSC_VER >= 1900 #define USE_WCHAR_AS_UTF16TYPE using UTF16Type = wchar_t; #else using UTF16Type = char16_t; #endif using Converter = std::wstring_convert, UTF16Type>; //------------------------------------------------------------------------ Converter& converter () { static Converter conv; return conv; } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ std::u16string convert (const std::string& utf8Str) { #if defined(USE_WCHAR_AS_UTF16TYPE) auto wstr = converter ().from_bytes (utf8Str); return {wstr.data (), wstr.data () + wstr.size ()}; #else return converter ().from_bytes (utf8Str); #endif } //------------------------------------------------------------------------ bool convert (const std::string& utf8Str, Steinberg::Vst::String128 str) { return convert (utf8Str, str, 128); } //------------------------------------------------------------------------ bool convert (const std::string& utf8Str, Steinberg::Vst::TChar* str, uint32_t maxCharacters) { auto ucs2 = convert (utf8Str); if (ucs2.length () < maxCharacters) { ucs2.copy (reinterpret_cast (str), ucs2.length ()); str[ucs2.length ()] = 0; return true; } return false; } //------------------------------------------------------------------------ std::string convert (const Steinberg::Vst::TChar* str) { return converter ().to_bytes (reinterpret_cast (str)); } //------------------------------------------------------------------------ std::string convert (const Steinberg::Vst::TChar* str, uint32_t max) { std::string result; if (str) { Steinberg::Vst::TChar tmp[2] {}; for (uint32_t i = 0; i < max; ++i, ++str) { tmp[0] = *str; if (tmp[0] == 0) break; result += convert (tmp); } } return result; } //------------------------------------------------------------------------ std::string convert (const std::u16string& str) { return converter ().to_bytes (reinterpret_cast (str.data ()), reinterpret_cast (str.data () + str.size ())); } //------------------------------------------------------------------------ std::string convert (const char* str, uint32_t max) { std::string result; if (str) { result.reserve (max); for (uint32_t i = 0; i < max; ++i, ++str) { if (*str == 0) break; result += *str; } } return result; } //------------------------------------------------------------------------ } // String } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/stringconvert.h000066400000000000000000000122121461511344300232450ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/stringconvert.h // Created by : Steinberg, 11/2014 // Description : c++11 unicode string convert functions // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/vsttypes.h" #include //------------------------------------------------------------------------ namespace VST3 { namespace StringConvert { //------------------------------------------------------------------------ /** * convert an UTF-8 string to an UTF-16 string * * @param utf8Str UTF-8 string * * @return UTF-16 string */ extern std::u16string convert (const std::string& utf8Str); //------------------------------------------------------------------------ /** * convert an UTF-8 string to an UTF-16 string buffer with max 127 characters * * @param utf8Str UTF-8 string * @param str UTF-16 string buffer * * @return true on success */ extern bool convert (const std::string& utf8Str, Steinberg::Vst::String128 str); //------------------------------------------------------------------------ /** * convert an UTF-8 string to an UTF-16 string buffer * * @param utf8Str UTF-8 string * @param str UTF-16 string buffer * @param maxCharacters max characters that fit into str * * @return true on success */ extern bool convert (const std::string& utf8Str, Steinberg::Vst::TChar* str, uint32_t maxCharacters); //------------------------------------------------------------------------ /** * convert an UTF-16 string buffer to an UTF-8 string * * @param str UTF-16 string buffer * * @return UTF-8 string */ extern std::string convert (const Steinberg::Vst::TChar* str); //------------------------------------------------------------------------ /** * convert an UTF-16 string buffer to an UTF-8 string * * @param str UTF-16 string buffer * @param max maximum characters in str * * @return UTF-8 string */ extern std::string convert (const Steinberg::Vst::TChar* str, uint32_t max); //------------------------------------------------------------------------ /** * convert an UTF-16 string to an UTF-8 string * * @param str UTF-16 string * * @return UTF-8 string */ extern std::string convert (const std::u16string& str); //------------------------------------------------------------------------ /** * convert a ASCII string buffer to an UTF-8 string * * @param str ASCII string buffer * @param max maximum characters in str * * @return UTF-8 string */ extern std::string convert (const char* str, uint32_t max); //------------------------------------------------------------------------ } // StringConvert //------------------------------------------------------------------------ inline const Steinberg::Vst::TChar* toTChar (const std::u16string& str) { return reinterpret_cast (str.data ()); } //------------------------------------------------------------------------ /** * convert a number to an UTF-16 string * * @param value number * * @return UTF-16 string */ template std::u16string toString (NumberT value) { auto u8str = std::to_string (value); return StringConvert::convert (u8str); } //------------------------------------------------------------------------ } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/systemtime.cpp000066400000000000000000000141121461511344300230750ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Helpers // Filename : public.sdk/source/vst/utility/systemtime.cpp // Created by : Steinberg, 06/2023 // Description : VST Component System Time API Helper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "systemtime.h" #include "pluginterfaces/base/funknownimpl.h" #include #if SMTG_OS_OSX #include //------------------------------------------------------------------------ static Steinberg::Vst::SystemTime::GetImplFunc makeNativeGetSystemTimeFunc () { return [] () { return static_cast ( AudioConvertHostTimeToNanos (AudioGetCurrentHostTime ())); }; } #elif SMTG_OS_IOS #include //------------------------------------------------------------------------ static Steinberg::Vst::SystemTime::GetImplFunc makeNativeGetSystemTimeFunc () { static struct mach_timebase_info timebaseInfo; mach_timebase_info (&timebaseInfo); return [&] () { double absTime = static_cast (mach_absolute_time ()); // nano seconds double d = (absTime / timebaseInfo.denom) * timebaseInfo.numer; return static_cast (d); }; } #elif SMTG_OS_WINDOWS #ifndef NOMINMAX #define NOMINMAX #endif #include //------------------------------------------------------------------------ struct WinmmDll { static WinmmDll& instance () { static WinmmDll gInstance; return gInstance; } bool valid () const { return func != nullptr; } DWORD timeGetTime () const { return func (); } private: using TimeGetTimeFunc = DWORD (WINAPI*) (); WinmmDll () { if (dll = LoadLibraryA ("winmm.dll")) { func = reinterpret_cast (GetProcAddress (dll, "timeGetTime")); } } TimeGetTimeFunc func {nullptr}; HMODULE dll; }; //------------------------------------------------------------------------ static Steinberg::Vst::SystemTime::GetImplFunc makeNativeGetSystemTimeFunc () { if (WinmmDll::instance ().valid ()) { return [dll = WinmmDll::instance ()] () { return static_cast (dll.timeGetTime ()) * 1000000; }; } return [] () { return std::numeric_limits::max (); }; } #elif SMTG_OS_LINUX //------------------------------------------------------------------------ #include static uint64_t getUptimeByClockGettime () { struct timespec time_spec; if (clock_gettime (CLOCK_BOOTTIME, &time_spec) != 0) return 0; const uint64_t uptime = time_spec.tv_sec * 1000 + time_spec.tv_nsec / 1000000; return uptime; } static Steinberg::Vst::SystemTime::GetImplFunc makeNativeGetSystemTimeFunc () { return [] () { return static_cast (getUptimeByClockGettime ()); }; } #else //------------------------------------------------------------------------ static Steinberg::Vst::SystemTime::GetImplFunc makeNativeGetSystemTimeFunc () { return [] () { return std::numeric_limits::max (); }; } #endif //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ SystemTime::SystemTime (IComponentHandler* componentHandler) { if (auto chst = U::cast (componentHandler)) { getImpl = [host = std::move (chst)] ()->int64 { int64 value = 0; if (host->getSystemTime (value) == kResultTrue) return value; return std::numeric_limits::max (); }; } else { getImpl = makeNativeGetSystemTimeFunc (); } } //------------------------------------------------------------------------ SystemTime::SystemTime (const SystemTime& st) { *this = st; } //------------------------------------------------------------------------ SystemTime::SystemTime (SystemTime&& st) noexcept { *this = std::move (st); } //------------------------------------------------------------------------ SystemTime& SystemTime::operator= (const SystemTime& st) { getImpl = st.getImpl; return *this; } //------------------------------------------------------------------------ SystemTime& SystemTime::operator= (SystemTime&& st) noexcept { std::swap (getImpl, st.getImpl); return *this; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/systemtime.h000066400000000000000000000073701461511344300225520ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // Flags : clang-format SMTGSequencer // Category : Helpers // Filename : public.sdk/source/vst/utility/systemtime.h // Created by : Steinberg, 06/2023 // Description : VST Component System Time API Helper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivsteditcontroller.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** SystemTime Helper class * * Get the system time on the vst controller side. * * If supported by the host this uses the same clock as used in the * realtime audio process block. Otherwise an approximation via platform APIs is used. * * This can be used to synchronize audio and visuals. As known, the audio process block is always * called ealier as the audio which was generated passes the audio monitors or headphones. * Depending on the audio graph this can be so long that your eyes will see the visualization (if * not synchronized) earlier then your ears will hear the sound. * To synchronize you need to queue your visualization data on the controller side timestamped with * the time from the process block and dequed when it's time for the data to be visualized. */ class SystemTime { public: SystemTime (IComponentHandler* componentHandler); SystemTime (const SystemTime& st); SystemTime (SystemTime&& st) noexcept; SystemTime& operator= (const SystemTime& st); SystemTime& operator= (SystemTime&& st) noexcept; /** get the current system time */ int64 get () const { return getImpl (); } //------------------------------------------------------------------------ using GetImplFunc = std::function; private: GetImplFunc getImpl; }; //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/test/000077500000000000000000000000001461511344300211465ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/test/ringbuffertest.cpp000066400000000000000000000074761461511344300247210ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/test/ringbuffertest.cpp // Created by : Steinberg, 03/2018 // Description : Test ringbuffer // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/utility/ringbuffer.h" #include "public.sdk/source/vst/utility/testing.h" #include "pluginterfaces/base/fstrdefs.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ static ModuleInitializer InitRingbufferTests ([] () { registerTest ("RingBuffer", STR ("push until full"), [] (ITestResult*) { OneReaderOneWriter::RingBuffer rb (4); if (!rb.push (0)) return false; if (!rb.push (1)) return false; if (!rb.push (2)) return false; if (!rb.push (3)) return false; if (!rb.push (4)) return true; return false; }); registerTest ("RingBuffer", STR ("pop until empty"), [] (ITestResult*) { OneReaderOneWriter::RingBuffer rb (4); if (!rb.push (0)) return false; if (!rb.push (1)) return false; if (!rb.push (2)) return false; if (!rb.push (3)) return false; uint32 value; if (!rb.pop (value) || value != 0) return false; if (!rb.pop (value) || value != 1) return false; if (!rb.pop (value) || value != 2) return false; if (!rb.pop (value) || value != 3) return false; if (!rb.pop (value)) return true; return false; }); registerTest ("RingBuffer", STR ("roundtrip"), [] (ITestResult*) { OneReaderOneWriter::RingBuffer rb (2); uint32 value; for (auto i = 0u; i < rb.size () * 2; ++i) { if (!rb.push (i)) return false; if (!rb.pop (value) || value != i) return false; } return true; }); }); //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/test/rttransfertest.cpp000066400000000000000000000135371461511344300247550ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/test/rtstatetransfertest.cpp // Created by : Steinberg, 04/2021 // Description : Realtime State Transfer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/utility/rttransfer.h" #include "public.sdk/source/vst/utility/testing.h" #include "pluginterfaces/vst/vsttypes.h" #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace { //------------------------------------------------------------------------ using ParameterVector = std::vector>; using RTTransfer = RTTransferT; //------------------------------------------------------------------------ struct RaceConditionTestObject { static std::atomic numDeletes; //------------------------------------------------------------------------ struct MyDeleter { void operator () (double* v) const noexcept { delete v; ++numDeletes; } }; RTTransferT transfer; std::thread thread; std::mutex m1; std::mutex m2; std::condition_variable c1; bool test (ITestResult* result) { numDeletes = 0; { auto obj1 = std::unique_ptr (new double (0.5)); auto obj2 = std::unique_ptr (new double (1.)); transfer.transferObject_ui (std::move (obj1)); m2.lock (); thread = std::thread ([&] () { transfer.accessTransferObject_rt ([&] (const double&) { c1.notify_all (); m2.lock (); m2.unlock (); }); transfer.accessTransferObject_rt ([&] (const double&) {}); }); std::unique_lock lm1 (m1); c1.wait (lm1); transfer.transferObject_ui (std::move (obj2)); m2.unlock (); thread.join (); transfer.clear_ui (); } return numDeletes == 2; } }; std::atomic RaceConditionTestObject::numDeletes {0}; //------------------------------------------------------------------------ static std::atomic CustomDeleterCallCount; struct CustomDeleter { template void operator () (T* v) const noexcept { delete v; ++CustomDeleterCallCount; } }; //------------------------------------------------------------------------ ModuleInitializer InitStateTransferTests ([] () { registerTest ("RTTransfer", STR ("Simple Transfer"), [] (ITestResult*) { RTTransfer helper; auto list = std::make_unique (); list->emplace_back (std::make_pair (0, 1.)); helper.transferObject_ui (std::move (list)); bool success = false; constexpr double one = 1.; helper.accessTransferObject_rt ([&success, one = one] (const auto& list) { if (list.size () == 1) { if (list[0].first == 0) { if (Test::equal (one, list[0].second)) { success = true; } } } }); list = std::make_unique (); list->emplace_back (std::make_pair (0, 1.)); helper.transferObject_ui (std::move (list)); helper.accessTransferObject_rt ([] (auto&) {}); list = std::make_unique (); list->emplace_back (std::make_pair (0, 1.)); helper.transferObject_ui (std::move (list)); helper.accessTransferObject_rt ([] (auto&) {}); return success; }); registerTest ("RTTransfer", STR ("CheckRaceCondition"), [] (ITestResult* r) { RaceConditionTestObject obj; return obj.test (r); }); registerTest ("RTTransfer", STR ("Custom Deleter"), [] (ITestResult* result) { CustomDeleterCallCount = 0; RTTransferT transfer; auto obj1 = std::unique_ptr (new double (1.)); transfer.transferObject_ui (std::move (obj1)); if (CustomDeleterCallCount != 0) { return false; } transfer.clear_ui (); return CustomDeleterCallCount == 1; }); }); //------------------------------------------------------------------------ } // Anonymous } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/test/sampleaccuratetest.cpp000066400000000000000000000145671461511344300255600ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/source/vst/utility/test/sampleaccuratetest.cpp // Created by : Steinberg, 04/2021 // Description : Tests for Sample Accurate Parameter Changes // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/hosting/parameterchanges.h" #include "public.sdk/source/vst/utility/sampleaccurate.h" #include "public.sdk/source/vst/utility/testing.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ static ModuleInitializer InitTests ([] () { registerTest ("SampleAccurate::Parameter", STR ("Single Change"), [] (ITestResult* result) { ParamID pid = 1; SampleAccurate::Parameter param (pid, 0.); ParameterValueQueue queue (pid); int32 index = 0; queue.addPoint (0, 0., index); queue.addPoint (100, 1., index); param.beginChanges (&queue); param.advance (50); if (Test::notEqual (param.getValue (), 0.5)) { result->addErrorMessage (STR ("Unexpected Value")); return false; } param.advance (50); if (Test::notEqual (param.getValue (), 1.)) { result->addErrorMessage (STR ("Unexpected Value")); return false; } param.endChanges (); return true; }); registerTest ("SampleAccurate::Parameter", STR ("Multi Change"), [] (ITestResult* result) { ParamID pid = 1; SampleAccurate::Parameter param (pid, 0.); ParameterValueQueue queue (pid); int32 index = 0; queue.addPoint (0, 0., index); queue.addPoint (100, 1., index); queue.addPoint (120, 0., index); param.beginChanges (&queue); param.advance (50); if (Test::notEqual (param.getValue (), 0.5)) { result->addErrorMessage (STR ("Unexpected Value")); return false; } param.advance (50); if (Test::notEqual (param.getValue (), 1.)) { result->addErrorMessage (STR ("Unexpected Value")); return false; } param.advance (20); if (Test::notEqual (param.getValue (), 0.)) { result->addErrorMessage (STR ("Unexpected Value")); return false; } param.endChanges (); return true; }); registerTest ("SampleAccurate::Parameter", STR ("Edge"), [] (ITestResult* result) { ParamID pid = 1; SampleAccurate::Parameter param (pid, 0.); ParameterValueQueue queue (pid); int32 index = 0; queue.addPoint (0, 0., index); queue.addPoint (1, 1., index); queue.addPoint (2, 0., index); param.beginChanges (&queue); param.advance (2); if (Test::notEqual (param.getValue (), 0.)) { result->addErrorMessage (STR ("Unexpected Value")); return false; } param.endChanges (); return true; }); registerTest ("SampleAccurate::Parameter", STR ("Flush"), [] (ITestResult* result) { ParamID pid = 1; SampleAccurate::Parameter param (pid, 0.); ParameterValueQueue queue (pid); int32 index = 0; queue.addPoint (0, 0., index); queue.addPoint (256, 1., index); queue.addPoint (258, 0.5, index); param.beginChanges (&queue); param.flushChanges (); if (Test::notEqual (param.getValue (), 0.5)) { result->addErrorMessage (STR ("Unexpected Value")); return false; } param.endChanges (); return true; }); registerTest ("SampleAccurate::Parameter", STR ("Callback"), [] (ITestResult* result) { ParamID pid = 1; SampleAccurate::Parameter param (pid, 0.); ParameterValueQueue queue (pid); int32 index = 0; queue.addPoint (0, 0., index); queue.addPoint (128, 0., index); queue.addPoint (256, 1., index); queue.addPoint (258, 0.5, index); param.beginChanges (&queue); bool failure = false; param.advance (128, [&result, &failure] (auto) { result->addErrorMessage (STR ("Unexpected Value")); failure = true; }); if (failure) return false; constexpr auto half = 0.5; param.advance (514, [&result, &failure, half = half] (auto value) { if (Test::notEqual (value, half)) { result->addErrorMessage (STR ("Unexpected Value")); failure = true; } else failure = false; }); if (failure) return false; param.endChanges (); return true; }); registerTest ("SampleAccurate::Parameter", STR ("NoChanges"), [] (ITestResult* result) { ParamID pid = 1; SampleAccurate::Parameter param (pid, 1.); param.endChanges (); if (Test::notEqual (param.getValue (), 1.)) { result->addErrorMessage (STR ("Unexpected Value")); return false; } return true; }); }); //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/test/versionparsertest.cpp000066400000000000000000000115601461511344300254570ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/test/versionparsertest.cpp // Created by : Steinberg, 12/2019 // Description : Test version parser // Flags : clang-format SMTGSequencer // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/utility/testing.h" #include "public.sdk/source/vst/utility/versionparser.h" #include "pluginterfaces/base/fstrdefs.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ static ModuleInitializer InitVersionParserTests ([] () { registerTest ("VersionParser", STR ("Parsing 'SDK 3.7'"), [] (ITestResult* testResult) { auto version = VST3::Version::parse ("SDK 3.7"); if (version.getMajor () != 3 || version.getMinor () != 7 || version.getSub () != 0 || version.getBuildnumber () != 0) { testResult->addErrorMessage (STR ("Parsing 'SDK 3.7' failed")); return false; } return true; }); registerTest ("VersionParser", STR ("Parsing 'SDK 3.7.1.38'"), [] (ITestResult* testResult) { auto version = VST3::Version::parse ("3.7.1.38"); if (version.getMajor () != 3 || version.getMinor () != 7 || version.getSub () != 1 || version.getBuildnumber () != 38) { testResult->addErrorMessage (STR ("Parsing '3.7.1.38' failed")); return false; } return true; }); registerTest ("VersionParser", STR ("Parsing 'SDK 3.7 Prerelease'"), [] (ITestResult* testResult) { auto version = VST3::Version::parse ("SDK 3.7 Prerelease"); if (version.getMajor () != 3 || version.getMinor () != 7 || version.getSub () != 0 || version.getBuildnumber () != 0) { testResult->addErrorMessage (STR ("Parsing 'SDK 3.7 Prerelease' failed")); return false; } return true; }); registerTest ("VersionParser", STR ("Parsing 'SDK 3.7-99'"), [] (ITestResult* testResult) { auto version = VST3::Version::parse ("SDK 3.7-99"); if (version.getMajor () != 3 || version.getMinor () != 7 || version.getSub () != 0 || version.getBuildnumber () != 0) { testResult->addErrorMessage (STR ("Parsing 'SDK 3.7-99' failed")); return false; } return true; }); registerTest ("VersionParser", STR ("Parsing 'No version at all'"), [] (ITestResult* testResult) { auto version = VST3::Version::parse ("No version at all"); if (version.getMajor () != 0 || version.getMinor () != 0 || version.getSub () != 0 || version.getBuildnumber () != 0) { testResult->addErrorMessage (STR ("Parsing 'No version at all' failed")); return false; } return true; }); }); //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/testing.cpp000066400000000000000000000174611461511344300223610ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/source/vst/utility/testing.cpp // Created by : Steinberg, 04/2021 // Description : Utility classes for custom testing in the vst validator // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/utility/testing.h" #include #include #include #include //------------------------------------------------------------------------ namespace Steinberg { DEF_CLASS_IID (ITest) DEF_CLASS_IID (ITestSuite) DEF_CLASS_IID (ITestFactory) //------------------------------------------------------------------------ namespace Vst { namespace { //------------------------------------------------------------------------ struct TestRegistry { struct TestWithContext { std::u16string desc; TestFuncWithContext func; }; using Tests = std::vector>>; using TestsWithContext = std::vector>; static TestRegistry& instance () { static TestRegistry gInstance; return gInstance; } Tests tests; TestsWithContext testsWithContext; }; //------------------------------------------------------------------------ struct TestBase : ITest { TestBase (const tchar* inDesc) { if (inDesc) desc = reinterpret_cast (inDesc); } TestBase (const std::u16string& inDesc) : desc (inDesc) {} virtual ~TestBase () = default; bool PLUGIN_API setup () override { return true; } bool PLUGIN_API teardown () override { return true; } const tchar* PLUGIN_API getDescription () override { return reinterpret_cast (desc.data ()); } tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) override { QUERY_INTERFACE (_iid, obj, FUnknown::iid, FUnknown) QUERY_INTERFACE (_iid, obj, ITest::iid, ITest) *obj = nullptr; return kNoInterface; } uint32 PLUGIN_API addRef () override { return ++refCount; } uint32 PLUGIN_API release () override { if (--refCount == 0) { delete this; return 0; } return refCount; } std::atomic refCount {1}; std::u16string desc; }; //------------------------------------------------------------------------ struct FuncTest : TestBase { FuncTest (const tchar* desc, const TestFunc& func) : TestBase (desc), func (func) {} FuncTest (const tchar* desc, TestFunc&& func) : TestBase (desc), func (std::move (func)) {} bool PLUGIN_API run (ITestResult* testResult) override { return func (testResult); } TestFunc func; }; //------------------------------------------------------------------------ struct FuncWithContextTest : TestBase { FuncWithContextTest (FUnknown* context, const std::u16string& desc, const TestFuncWithContext& func) : TestBase (desc), func (func), context (context) { } bool PLUGIN_API run (ITestResult* testResult) override { return func (context, testResult); } TestFuncWithContext func; FUnknown* context; }; //------------------------------------------------------------------------ struct TestFactoryImpl : ITestFactory { TestFactoryImpl () = default; virtual ~TestFactoryImpl () = default; tresult PLUGIN_API createTests (FUnknown* context, ITestSuite* parentSuite) override { for (auto& t : TestRegistry::instance ().tests) parentSuite->addTest (t.first.data (), t.second); for (auto& t : TestRegistry::instance ().testsWithContext) parentSuite->addTest (t.first.data (), new FuncWithContextTest (context, t.second.desc, t.second.func)); return kResultTrue; } tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) override { QUERY_INTERFACE (_iid, obj, FUnknown::iid, FUnknown) QUERY_INTERFACE (_iid, obj, ITestFactory::iid, ITestFactory) *obj = nullptr; return kNoInterface; } uint32 PLUGIN_API addRef () override { return ++refCount; } uint32 PLUGIN_API release () override { if (--refCount == 0) { delete this; return 0; } return refCount; } private: std::atomic refCount {1}; }; //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ void registerTest (FIDString name, const tchar* desc, const TestFunc& func) { registerTest (name, new FuncTest (desc, func)); } //------------------------------------------------------------------------ void registerTest (FIDString name, const tchar* desc, TestFunc&& func) { registerTest (name, new FuncTest (desc, std::move (func))); } //------------------------------------------------------------------------ void registerTest (FIDString name, ITest* test) { assert (name != nullptr); TestRegistry::instance ().tests.push_back (std::make_pair (name, owned (test))); } //------------------------------------------------------------------------ void registerTest (FIDString name, const tchar* desc, const TestFuncWithContext& func) { std::u16string descStr; if (desc) descStr = reinterpret_cast (desc); TestRegistry::instance ().testsWithContext.push_back ( std::make_pair (name, TestRegistry::TestWithContext {descStr, func})); } //------------------------------------------------------------------------ void registerTest (FIDString name, const tchar* desc, TestFuncWithContext&& func) { std::u16string descStr; if (desc) descStr = reinterpret_cast (desc); TestRegistry::instance ().testsWithContext.push_back ( std::make_pair (name, TestRegistry::TestWithContext {descStr, std::move (func)})); } //------------------------------------------------------------------------ FUnknown* createTestFactoryInstance (void*) { return new TestFactoryImpl; } //------------------------------------------------------------------------ const FUID& getTestFactoryUID () { static FUID uid = FUID::fromTUID (TestFactoryUID); return uid; } //------------------------------------------------------------------------ } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/testing.h000066400000000000000000000201311461511344300220120ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST SDK // // Category : Examples // Filename : public.sdk/source/vst/utility/testing.h // Created by : Steinberg, 04/2021 // Description : Utility classes for custom testing in the vst validator // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/test/itest.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** \page How to use the validator to run your own tests? It is possible to run your own tests when the validator checks your plug-in. First you have to register a test factory in your plugin factory: \code{.cpp} #include "public.sdk/source/vst/utility/testing.h" BEGIN_FACTORY_DEF(... DEF_CLASS2 (Your Plugin Processor) DEF_CLASS2 (Your Plugin Controller) DEF_CLASS2 (INLINE_UID_FROM_FUID (getTestFactoryUID ()), PClassInfo::kManyInstances, kTestClass, "Test Factory", 0, "", "", "", createTestFactoryInstance) END_FACTORY \endcode Second: write your tests: \code{.cpp} #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/utility/testing.h" static ModuleInitializer InitMyTests ([] () { registerTest ("MyTests", STR ("two plus two is four"), [] (ITestResult* testResult) { auto result = 2 + 2; if (result == 4) return true; testResult->addErrorMessage (STR ("Unexpected universe change where 2+2 != 4.")); return false; }); }); \endcode If you need access to your audio effect or edit controller you can write your tests as done in the adelay example: \code{.cpp} #include "public.sdk/source/main/moduleinit.h" #include "public.sdk/source/vst/testsuite/vsttestsuite.h" #include "public.sdk/source/vst/utility/testing.h" static ModuleInitializer InitMyTests ([] () { registerTest ("MyTests", STR ("check one two three"), [] (FUnknown* context, ITestResult* testResult) { FUnknownPtr plugProvider (context); if (plugProvider) { auto controller = plugProvider->getController (); FUnknownPtr testController (controller); if (!controller) { testResult->addErrorMessage (String ("Unknown IEditController")); return false; } bool result = testController->doTest (); plugProvider->releasePlugIn (nullptr, controller); return (result); } return false; }); }); \endcode After that recompile and if the validator does not run automatically after every build, start the validator manually and let it check your plug-in. */ //------------------------------------------------------------------------ /** create a Test Factory instance */ FUnknown* createTestFactoryInstance (void*); /** the test factory class ID */ static const DECLARE_UID (TestFactoryUID, 0x70AA33A3, 0x1AE74B24, 0xB726F784, 0xB706C080); /** get the test factory class ID */ const FUID& getTestFactoryUID (); /** simple test function */ using TestFunc = std::function; /** register a simple test function */ void registerTest (FIDString name, const tchar* desc, const TestFunc& func); /** register a simple test function */ void registerTest (FIDString name, const tchar* desc, TestFunc&& func); /** test function with context pointer */ using TestFuncWithContext = std::function; /** register a test function with context pointer */ void registerTest (FIDString name, const tchar* desc, const TestFuncWithContext& func); /** register a test function with context pointer */ void registerTest (FIDString name, const tchar* desc, TestFuncWithContext&& func); /** register a custom test, the test object will be owned by the implementation */ void registerTest (FIDString name, ITest* test); //------------------------------------------------------------------------ namespace Test { //------------------------------------------------------------------------ template ::value>::type* = nullptr> inline constexpr bool equal (const T& lhs, const T& rhs) noexcept { return std::abs (lhs - rhs) <= std::numeric_limits::epsilon (); } //------------------------------------------------------------------------ template ::value>::type* = nullptr> inline constexpr bool equal (const T& lhs, const T& rhs) noexcept { return lhs == rhs; } //------------------------------------------------------------------------ template inline constexpr bool notEqual (const T& lhs, const T& rhs) noexcept { return equal (lhs, rhs) == false; } //------------------------------------------------------------------------ template inline constexpr bool maxDiff (const T& lhs, const T& rhs, const T& maxDiff) noexcept { return std::abs (lhs - rhs) <= maxDiff; } #ifndef SMTG_DISABLE_VST_TEST_MACROS #ifndef SMTG_MAKE_STRING_PRIVATE_DONT_USE #define SMTG_MAKE_STRING_PRIVATE_DONT_USE(x) #x #define SMTG_MAKE_STRING(x) SMTG_MAKE_STRING_PRIVATE_DONT_USE (x) #endif // SMTG_MAKE_STRING_PRIVATE_DONT_USE #define EXPECT(condition) \ { \ if (!(condition)) \ { \ testResult->addErrorMessage (STR (__FILE__ ":" SMTG_MAKE_STRING ( \ __LINE__) ": error: " SMTG_MAKE_STRING (condition))); \ return false; \ } \ } #define EXPECT_TRUE(condition) EXPECT (condition) #define EXPECT_FALSE(condition) EXPECT (!condition) #define EXPECT_EQ(var1, var2) EXPECT ((var1 == var2)) #define EXPECT_NE(var1, var2) EXPECT ((var1 != var2)) #endif // SMTG_DISABLE_VST_TEST_MACROS //------------------------------------------------------------------------ } // Test } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/uid.h000066400000000000000000000221731461511344300211260ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/utility/uid.h // Created by : Steinberg, 08/2016 // Description : UID // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "optional.h" #include "pluginterfaces/base/funknown.h" #include //------------------------------------------------------------------------ namespace VST3 { //------------------------------------------------------------------------ struct UID { #if defined(SMTG_OS_WINDOWS) && SMTG_OS_WINDOWS == 1 static constexpr bool defaultComFormat = true; #else static constexpr bool defaultComFormat = false; #endif using TUID = Steinberg::TUID; constexpr UID () noexcept = default; UID (uint32_t l1, uint32_t l2, uint32_t l3, uint32_t l4, bool comFormat = defaultComFormat) noexcept; UID (const TUID& uid) noexcept; UID (const UID& uid) noexcept; UID& operator= (const UID& uid) noexcept; UID& operator= (const TUID& uid) noexcept; constexpr const TUID& data () const noexcept; constexpr size_t size () const noexcept; std::string toString (bool comFormat = defaultComFormat) const noexcept; template static Optional fromString (const StringT& str, bool comFormat = defaultComFormat) noexcept; static UID fromTUID (const TUID _uid) noexcept; //------------------------------------------------------------------------ private: Steinberg::TUID _data {}; struct GUID { uint32_t Data1; uint16_t Data2; uint16_t Data3; uint8_t Data4[8]; }; }; //------------------------------------------------------------------------ inline bool operator== (const UID& uid1, const UID& uid2) { const uint64_t* p1 = reinterpret_cast (uid1.data ()); const uint64_t* p2 = reinterpret_cast (uid2.data ()); return p1[0] == p2[0] && p1[1] == p2[1]; } //------------------------------------------------------------------------ inline bool operator!= (const UID& uid1, const UID& uid2) { return !(uid1 == uid2); } //------------------------------------------------------------------------ inline bool operator< (const UID& uid1, const UID& uid2) { const uint64_t* p1 = reinterpret_cast (uid1.data ()); const uint64_t* p2 = reinterpret_cast (uid2.data ()); return (p1[0] < p2[0]) && (p1[1] < p2[1]); } //------------------------------------------------------------------------ inline UID::UID (uint32_t l1, uint32_t l2, uint32_t l3, uint32_t l4, bool comFormat) noexcept { if (comFormat) { _data[0] = static_cast ((l1 & 0x000000FF)); _data[1] = static_cast ((l1 & 0x0000FF00) >> 8); _data[2] = static_cast ((l1 & 0x00FF0000) >> 16); _data[3] = static_cast ((l1 & 0xFF000000) >> 24); _data[4] = static_cast ((l2 & 0x00FF0000) >> 16); _data[5] = static_cast ((l2 & 0xFF000000) >> 24); _data[6] = static_cast ((l2 & 0x000000FF)); _data[7] = static_cast ((l2 & 0x0000FF00) >> 8); _data[8] = static_cast ((l3 & 0xFF000000) >> 24); _data[9] = static_cast ((l3 & 0x00FF0000) >> 16); _data[10] = static_cast ((l3 & 0x0000FF00) >> 8); _data[11] = static_cast ((l3 & 0x000000FF)); _data[12] = static_cast ((l4 & 0xFF000000) >> 24); _data[13] = static_cast ((l4 & 0x00FF0000) >> 16); _data[14] = static_cast ((l4 & 0x0000FF00) >> 8); _data[15] = static_cast ((l4 & 0x000000FF)); } else { _data[0] = static_cast ((l1 & 0xFF000000) >> 24); _data[1] = static_cast ((l1 & 0x00FF0000) >> 16); _data[2] = static_cast ((l1 & 0x0000FF00) >> 8); _data[3] = static_cast ((l1 & 0x000000FF)); _data[4] = static_cast ((l2 & 0xFF000000) >> 24); _data[5] = static_cast ((l2 & 0x00FF0000) >> 16); _data[6] = static_cast ((l2 & 0x0000FF00) >> 8); _data[7] = static_cast ((l2 & 0x000000FF)); _data[8] = static_cast ((l3 & 0xFF000000) >> 24); _data[9] = static_cast ((l3 & 0x00FF0000) >> 16); _data[10] = static_cast ((l3 & 0x0000FF00) >> 8); _data[11] = static_cast ((l3 & 0x000000FF)); _data[12] = static_cast ((l4 & 0xFF000000) >> 24); _data[13] = static_cast ((l4 & 0x00FF0000) >> 16); _data[14] = static_cast ((l4 & 0x0000FF00) >> 8); _data[15] = static_cast ((l4 & 0x000000FF)); } } //------------------------------------------------------------------------ inline UID::UID (const TUID& uid) noexcept { *this = uid; } //------------------------------------------------------------------------ inline UID::UID (const UID& uid) noexcept { *this = uid; } //------------------------------------------------------------------------ inline UID& UID::operator= (const UID& uid) noexcept { *this = uid.data (); return *this; } //------------------------------------------------------------------------ inline UID& UID::operator= (const TUID& uid) noexcept { memcpy (_data, reinterpret_cast(uid), 16); return *this; } //------------------------------------------------------------------------ inline constexpr auto UID::data () const noexcept -> const TUID& { return _data; } //------------------------------------------------------------------------ inline constexpr size_t UID::size () const noexcept { return sizeof (TUID); } //------------------------------------------------------------------------ inline std::string UID::toString (bool comFormat) const noexcept { std::string result; result.reserve (32); if (comFormat) { const auto& g = reinterpret_cast (_data); char tmp[21] {}; snprintf (tmp, 21, "%08X%04X%04X", g->Data1, g->Data2, g->Data3); result = tmp; for (uint32_t i = 0; i < 8; ++i) { char s[3] {}; snprintf (s, 3, "%02X", g->Data4[i]); result += s; } } else { for (uint32_t i = 0; i < 16; ++i) { char s[3] {}; snprintf (s, 3, "%02X", static_cast (_data[i])); result += s; } } return result; } //------------------------------------------------------------------------ template inline Optional UID::fromString (const StringT& str, bool comFormat) noexcept { if (str.length () != 32) return {}; // TODO: this is a copy from FUID. there are no input validation checks !!! if (comFormat) { TUID uid {}; GUID g; char s[33]; strcpy (s, str.data ()); s[8] = 0; sscanf (s, "%x", &g.Data1); strcpy (s, str.data () + 8); s[4] = 0; sscanf (s, "%hx", &g.Data2); strcpy (s, str.data () + 12); s[4] = 0; sscanf (s, "%hx", &g.Data3); memcpy (uid, &g, 8); for (uint32_t i = 8; i < 16; ++i) { char s2[3] {}; s2[0] = str[i * 2]; s2[1] = str[i * 2 + 1]; int32_t d = 0; sscanf (s2, "%2x", &d); uid[i] = static_cast (d); } return {uid}; } else { TUID uid {}; for (uint32_t i = 0; i < 16; ++i) { char s[3] {}; s[0] = str[i * 2]; s[1] = str[i * 2 + 1]; int32_t d = 0; sscanf (s, "%2x", &d); uid[i] = static_cast (d); } return {uid}; } } //------------------------------------------------------------------------ inline UID UID::fromTUID (const TUID _uid) noexcept { UID result; memcpy (result._data, reinterpret_cast(_uid), 16); return result; } //------------------------------------------------------------------------ } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/versionparser.h000066400000000000000000000125731461511344300232520ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST3 SDK // Filename : public.sdk/source/vst/utility/versionparser.h // Created by : Steinberg, 04/2018 // Description : version parser helper // //------------------------------------------------------------------------ // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/utility/optional.h" #include #include #include #if __cplusplus >= 201703L #include #define SMTG_VERSIONPARSER_USE_STRINGVIEW #else #include #endif //------------------------------------------------------------------------ namespace VST3 { //------------------------------------------------------------------------ struct Version { private: enum { Major, Minor, Sub, BuildNumber }; public: #ifdef SMTG_VERSIONPARSER_USE_STRINGVIEW using StringType = std::string_view; #else using StringType = std::string; #endif Version (uint32_t inMajor = 0, uint32_t inMinor = 0, uint32_t inSub = 0, uint32_t inBuildnumber = 0) { setMajor (inMajor); setMinor (inMinor); setSub (inSub); setBuildnumber (inBuildnumber); } void setMajor (uint32_t v) { storage[Major] = v; } void setMinor (uint32_t v) { storage[Minor] = v; } void setSub (uint32_t v) { storage[Sub] = v; } void setBuildnumber (uint32_t v) { storage[BuildNumber] = v; } uint32_t getMajor () const { return storage[Major]; } uint32_t getMinor () const { return storage[Minor]; } uint32_t getSub () const { return storage[Sub]; } uint32_t getBuildnumber () const { return storage[BuildNumber]; } bool operator> (const Version& v) const { if (getMajor () < v.getMajor ()) return false; if (getMajor () > v.getMajor ()) return true; if (getMinor () < v.getMinor ()) return false; if (getMinor () > v.getMinor ()) return true; if (getSub () < v.getSub ()) return false; if (getSub () > v.getSub ()) return true; if (getBuildnumber () < v.getBuildnumber ()) return false; return getBuildnumber () > v.getBuildnumber (); } static Version parse (StringType str) { // skip non digits in the front auto it = std::find_if (str.begin (), str.end (), [] (const auto& c) { return std::isdigit (c); }); if (it == str.end ()) return {}; #ifdef SMTG_VERSIONPARSER_USE_STRINGVIEW str = StringType (&(*it), std::distance (it, str.end ())); #else str = StringType (it, str.end ()); #endif Version version {}; auto part = static_cast (Major); StringType::size_type index; while (!str.empty ()) { index = str.find_first_of ('.'); if (index == StringType::npos) { // skip non digits in the back auto itBack = std::find_if (str.begin (), str.end (), [] (const auto& c) { return !std::isdigit (c); }); index = std::distance (str.begin (), itBack); if (index == 0) break; str = {str.data (), index}; index = str.size (); } StringType numberStr (str.data (), index); if (auto n = toNumber (numberStr)) version.storage[part] = *n; if (++part > BuildNumber) break; if (str.size () - index == 0) break; ++index; str = {str.data () + index, str.size () - index}; } return version; } private: std::array storage {}; static Optional toNumber (StringType str) { if (str.size () > 9) str = {str.data (), 9}; int32_t result = 0; for (const auto& c : str) { if (c < 48 || c > 57) return {}; result *= 10; result += c - 48; } return Optional {result}; } }; //------------------------------------------------------------------------ } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/vst2persistence.cpp000066400000000000000000000465421461511344300240510ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST3 SDK // Filename : public.sdk/source/vst/utility/vst2persistence.cpp // Created by : Steinberg, 12/2019 // Description : vst2 persistence helper // //------------------------------------------------------------------------ // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/utility/vst2persistence.h" #include "pluginterfaces/base/fplatform.h" #include //------------------------------------------------------------------------ namespace VST3 { namespace { namespace IO { //------------------------------------------------------------------------ enum class Error { NoError, Unknown, EndOfFile, BufferToBig, NotAllowed, InvalidArgument, }; //------------------------------------------------------------------------ enum class SeekMode { Set, End, Current }; //------------------------------------------------------------------------ struct Result { Error error {Error::Unknown}; uint64_t bytes {0u}; Result () noexcept = default; Result (Error error, uint64_t bytes = 0) noexcept : error (error), bytes (bytes) {} operator bool () const noexcept { return error == Error::NoError; } }; //------------------------------------------------------------------------ struct ReadBufferDesc { const uint64_t bytes; void* ptr; }; //------------------------------------------------------------------------ struct WriteBufferDesc { const uint64_t bytes; const void* ptr; }; //------------------------------------------------------------------------ template class ByteOrderStream { public: //------------------------------------------------------------------------ ByteOrderStream (Steinberg::IBStream& stream) noexcept : stream (stream) {} ByteOrderStream (ByteOrderStream&&) noexcept = delete; ByteOrderStream& operator= (ByteOrderStream&&) noexcept = delete; ByteOrderStream (const ByteOrderStream&) noexcept = delete; ByteOrderStream& operator= (const ByteOrderStream&) noexcept = delete; inline Result operator<< (const std::string& input) noexcept; inline Result operator>> (std::string& output) noexcept; template inline Result operator<< (const T& input) noexcept; template inline Result operator>> (T& output) const noexcept; inline Result read (const ReadBufferDesc& buffer) const noexcept; inline Result write (const WriteBufferDesc& buffer) noexcept; inline Result seek (SeekMode mode, int64_t bytes) const noexcept; inline Result tell () const noexcept; //------------------------------------------------------------------------ private: template inline Result swapAndWrite (const uint8_t* buffer) noexcept; inline void swap (uint8_t* buffer, uint64_t size) const noexcept; Steinberg::IBStream& stream; }; //------------------------------------------------------------------------ using LittleEndianStream = ByteOrderStream; using BigEndianStream = ByteOrderStream; using NativeEndianStream = ByteOrderStream; //------------------------------------------------------------------------ template inline Result ByteOrderStream::read (const ReadBufferDesc& buffer) const noexcept { if (buffer.bytes > static_cast (std::numeric_limits::max ())) return Result (Error::BufferToBig); Steinberg::int32 readBytes = 0; auto tres = stream.read (buffer.ptr, static_cast (buffer.bytes), &readBytes); if (tres != Steinberg::kResultTrue) return Result (Error::Unknown); assert (readBytes >= 0); return Result {Error::NoError, static_cast (readBytes)}; } //------------------------------------------------------------------------ template inline Result ByteOrderStream::write (const WriteBufferDesc& buffer) noexcept { if (buffer.bytes > static_cast (std::numeric_limits::max ())) return Result (Error::BufferToBig); Steinberg::int32 writtenBytes = 0; auto tres = stream.write (const_cast (buffer.ptr), static_cast (buffer.bytes), &writtenBytes); if (tres != Steinberg::kResultTrue) return Result (Error::Unknown); assert (writtenBytes >= 0); return Result {Error::NoError, static_cast (writtenBytes)}; } //------------------------------------------------------------------------ template inline Result ByteOrderStream::seek (SeekMode mode, int64_t bytes) const noexcept { Steinberg::int32 seekMode = 0; switch (mode) { case SeekMode::Set: seekMode = Steinberg::IBStream::kIBSeekSet; break; case SeekMode::Current: seekMode = Steinberg::IBStream::kIBSeekCur; break; case SeekMode::End: seekMode = Steinberg::IBStream::kIBSeekEnd; break; } Steinberg::int64 seekRes = 0; auto tres = stream.seek (static_cast (bytes), seekMode, &seekRes); if (tres != Steinberg::kResultTrue || seekRes < 0) return Result {Error::Unknown}; return Result (Error::NoError, static_cast (seekRes)); } //------------------------------------------------------------------------ template inline Result ByteOrderStream::tell () const noexcept { Steinberg::int64 tellRes = 0; auto tres = stream.tell (&tellRes); if (tres != Steinberg::kResultTrue || tellRes < 0) return Result {Error::Unknown}; return Result {Error::NoError, static_cast (tellRes)}; } //------------------------------------------------------------------------ template inline Result ByteOrderStream::operator<< (const std::string& input) noexcept { auto res = *this << static_cast (input.length ()); if (!res) return res; res = stream.write (const_cast (static_cast (input.data ())), static_cast (input.length ())); res.bytes += sizeof (uint64_t); return res; } //------------------------------------------------------------------------ template inline Result ByteOrderStream::operator>> (std::string& output) noexcept { uint64_t length; auto res = *this >> length; if (!res) return res; output.resize (length); if (length > 0) { res = stream.read (&output.front (), static_cast (length)); res.bytes += sizeof (uint64_t); } return res; } //------------------------------------------------------------------------ template template inline Result ByteOrderStream::operator<< (const T& input) noexcept { static_assert (std::is_standard_layout::value, "Only standard layout types allowed"); // with C++17: if constexpr (StreamByteOrder == BYTEORDER) if (constexpr bool tmp = (StreamByteOrder == BYTEORDER)) return write (WriteBufferDesc {sizeof (T), static_cast (&input)}); return swapAndWrite (reinterpret_cast (&input)); } //------------------------------------------------------------------------ template template inline Result ByteOrderStream::operator>> (T& output) const noexcept { static_assert (std::is_standard_layout::value, "Only standard layout types allowed"); auto res = read (ReadBufferDesc {sizeof (T), &output}); // with C++17: if constexpr (StreamByteOrder == BYTEORDER) if (constexpr bool tmp = (StreamByteOrder == BYTEORDER)) return res; swap (reinterpret_cast (&output), res.bytes); return res; } //------------------------------------------------------------------------ template template inline Result ByteOrderStream::swapAndWrite (const uint8_t* buffer) noexcept { // with C++17: if constexpr (_size > 1) if (constexpr bool tmp2 = (_size > 1)) { int8_t tmp[_size]; constexpr auto halfSize = _size / 2; auto size = _size; auto low = buffer; auto high = buffer + size - 1; while (size > halfSize) { tmp[size - 2] = buffer[(_size - size) + 1]; tmp[(_size - size) + 1] = buffer[size - 2]; tmp[_size - size] = *high; tmp[size - 1] = *low; low += 2; high -= 2; size -= 2; } return write (WriteBufferDesc {_size, tmp}); } return write (WriteBufferDesc {1, buffer}); } //------------------------------------------------------------------------ template inline void ByteOrderStream::swap (uint8_t* buffer, uint64_t size) const noexcept { if (size < 2) return; auto low = buffer; auto high = buffer + size - 1; while (size >= 2) { auto tmp = *low; *low = *high; *high = tmp; low += 2; high -= 2; size -= 2; } } //------------------------------------------------------------------------ } // IO //------------------------------------------------------------------------ constexpr int32_t cMagic = 'CcnK'; constexpr int32_t bankMagic = 'FxBk'; constexpr int32_t privateChunkID = 'VstW'; constexpr int32_t chunkBankMagic = 'FBCh'; constexpr int32_t programMagic = 'FxCk'; constexpr int32_t chunkProgramMagic = 'FPCh'; //------------------------------------------------------------------------ Optional loadProgram (const IO::BigEndianStream& state, const Optional& vst2xUniqueID) { Vst2xProgram program; int32_t id; if (!(state >> id)) return {}; if (id != cMagic) return {}; int32_t bankSize; if (!(state >> bankSize)) return {}; int32_t fxMagic; if (!(state >> fxMagic)) return {}; if (!(fxMagic == programMagic || fxMagic == chunkProgramMagic)) return {}; int32_t formatVersion; if (!(state >> formatVersion)) return {}; int32_t fxId; if (!(state >> fxId)) return {}; if (vst2xUniqueID && fxId != *vst2xUniqueID) return {}; int32_t fxVersion; if (!(state >> fxVersion)) return {}; int32_t numParams; if (!(state >> numParams)) return {}; if (numParams < 0) return {}; char name[29]; if (!state.read ({28, name})) return {}; name[28] = 0; program.name = name; program.fxUniqueID = fxId; program.fxVersion = fxVersion; if (fxMagic == chunkProgramMagic) { uint32_t chunkSize; if (!(state >> chunkSize)) return {}; program.chunk.resize (chunkSize); if (!state.read ({chunkSize, program.chunk.data ()})) return {}; } else { program.values.resize (numParams); float paramValue; for (int32_t i = 0; i < numParams; ++i) { if (!(state >> paramValue)) return {}; program.values[i] = paramValue; } } return {std::move (program)}; } //------------------------------------------------------------------------ bool loadPrograms (Steinberg::IBStream& stream, Vst2xState::Programs& programs, const Optional& vst2xUniqueID) { IO::BigEndianStream state (stream); for (auto& program : programs) { if (auto prg = loadProgram (state, vst2xUniqueID)) std::swap (program, *prg); else return false; } return true; } //------------------------------------------------------------------------ template IO::Error streamSizeWriter (StreamT& stream, Proc proc) { auto startPos = stream.tell (); if (startPos.error != IO::Error::NoError) return startPos.error; auto res = stream << static_cast (0); // placeholder if (!res) return res.error; auto procRes = proc (); if (procRes != IO::Error::NoError) return procRes; auto endPos = stream.tell (); if (endPos.error != IO::Error::NoError) return endPos.error; auto size = (endPos.bytes - startPos.bytes) - 4; auto typeSize = static_cast (size); if (size != static_cast (typeSize)) return IO::Error::Unknown; res = stream.seek (IO::SeekMode::Set, startPos.bytes); if (!res) return res.error; res = (stream << typeSize); if (!res) return res.error; res = stream.seek (IO::SeekMode::Set, endPos.bytes); return res.error; } //------------------------------------------------------------------------ template IO::Error writePrograms (StreamT& stream, const Vst2xState::Programs& programs) { for (const auto& program : programs) { auto res = stream << cMagic; if (!res) return res.error; res = streamSizeWriter (stream, [&] () { bool writeChunk = !program.chunk.empty (); if (!(res = stream << (writeChunk ? chunkProgramMagic : programMagic))) return res.error; int32_t version = 1; if (!(res = stream << version)) return res.error; if (!(res = stream << program.fxUniqueID)) return res.error; int32_t fxVersion = program.fxVersion; if (!(res = stream << fxVersion)) return res.error; uint32_t numParams = static_cast (program.values.size ()); if (!(res = stream << numParams)) return res.error; auto programName = program.name; programName.resize (28); for (auto c : programName) { if (!(res = stream << c)) return res.error; } if (writeChunk) { if (!(res = stream << static_cast (program.chunk.size ()))) return res.error; if (!(res = stream.write ({program.chunk.size (), program.chunk.data ()}))) return res.error; } else { for (auto value : program.values) { if (!(res = stream << value)) return res.error; } } return IO::Error::NoError; }); if (res.error != IO::Error::NoError) return res.error; } return IO::Error::NoError; } //------------------------------------------------------------------------ } // anonymous //------------------------------------------------------------------------ Optional tryVst2StateLoad (Steinberg::IBStream& stream, Optional vst2xUniqueID) noexcept { Vst2xState result; IO::BigEndianStream state (stream); int32_t version; int32_t size; int32_t id; if (!(state >> id)) return {}; if (id == privateChunkID) { if (!(state >> size)) return {}; if (!(state >> version)) return {}; int32_t bypass; if (!(state >> bypass)) return {}; result.isBypassed = bypass ? true : false; if (!(state >> id)) return {}; } if (id != cMagic) return {}; int32_t bankSize; if (!(state >> bankSize)) return {}; int32_t fxMagic; if (!(state >> fxMagic)) return {}; if (!(fxMagic == bankMagic || fxMagic == chunkBankMagic)) return {}; int32_t bankVersion; if (!(state >> bankVersion)) return {}; int32_t fxId; if (!(state >> fxId)) return {}; if (vst2xUniqueID && fxId != *vst2xUniqueID) return {}; result.fxUniqueID = fxId; int32_t fxVersion; if (!(state >> fxVersion)) return {}; result.fxVersion = fxVersion; int32_t numPrograms; if (!(state >> numPrograms)) return {}; if (numPrograms < 1) return {}; int32_t currentProgram = 0; if (bankVersion >= 1) { if (!(state >> currentProgram)) return {}; state.seek (IO::SeekMode::Current, 124); // future } result.currentProgram = currentProgram; if (fxMagic == bankMagic) { result.programs.resize (numPrograms); if (!loadPrograms (stream, result.programs, vst2xUniqueID)) return {}; assert (static_cast (result.programs.size ()) > currentProgram); } else { uint32_t chunkSize; if (!(state >> chunkSize)) return {}; if (chunkSize == 0) return {}; result.chunk.resize (chunkSize); if (!state.read ({chunkSize, result.chunk.data ()})) return {}; } return {std::move (result)}; } //------------------------------------------------------------------------ bool writeVst2State (const Vst2xState& state, Steinberg::IBStream& _stream, bool writeBypassState) noexcept { IO::BigEndianStream stream (_stream); if (writeBypassState) { if (!(stream << privateChunkID)) return false; if (streamSizeWriter (stream, [&] () { uint32_t version = 1; auto res = (stream << version); if (!res) return res.error; int32_t bypass = state.isBypassed ? 1 : 0; return (stream << bypass).error; }) != IO::Error::NoError) { return false; } } if (!(stream << cMagic)) { return false; } if (streamSizeWriter (stream, [&] () { bool writeChunk = !state.chunk.empty (); IO::Result res; if (!(res = (stream << (writeChunk ? chunkBankMagic : bankMagic)))) return res.error; int32_t bankVersion = 2; if (!(res = (stream << bankVersion))) return res.error; if (!(res = (stream << state.fxUniqueID))) return res.error; if (!(res = (stream << state.fxVersion))) return res.error; int32_t numPrograms = writeChunk ? 1 : static_cast (state.programs.size ()); if (!(res = (stream << numPrograms))) return res.error; if (bankVersion > 1) { if (!(res = (stream << state.currentProgram))) return res.error; // write 124 zero bytes uint8_t byte = 0; for (uint32_t i = 0; i < 124; ++i) if (!(res = (stream << byte))) return res.error; } if (writeChunk) { auto chunkSize = static_cast (state.chunk.size ()); if (!(res = (stream << chunkSize))) return res.error; stream.write ({state.chunk.size (), state.chunk.data ()}); } else { writePrograms (stream, state.programs); } return IO::Error::NoError; }) != IO::Error::NoError) { return false; } return true; } //------------------------------------------------------------------------ Optional tryVst2ProgramLoad (Steinberg::IBStream& stream, Optional vst2xUniqueID) noexcept { IO::BigEndianStream state (stream); return loadProgram (state, vst2xUniqueID); } //------------------------------------------------------------------------ } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/utility/vst2persistence.h000066400000000000000000000123021461511344300235010ustar00rootroot00000000000000//------------------------------------------------------------------------ // Flags : clang-format SMTGSequencer // Project : VST3 SDK // Filename : public.sdk/source/vst/utility/vst2persistence.h // Created by : Steinberg, 12/2019 // Description : vst2 persistence helper // //------------------------------------------------------------------------ // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/utility/optional.h" #include "pluginterfaces/base/ibstream.h" #include #include //------------------------------------------------------------------------ namespace VST3 { //------------------------------------------------------------------------ using Vst2xChunk = std::vector; //------------------------------------------------------------------------ /** structure holding the content of a vst2 fxp format stream * * either the values member is valid or the chunk member but not both */ struct Vst2xProgram { using ProgramValues = std::vector; ProgramValues values; Vst2xChunk chunk; int32_t fxUniqueID {0}; int32_t fxVersion {0}; std::string name; }; //------------------------------------------------------------------------ /** structure holding the content of a vst2 fxb format stream * * either the programs member is valid or the chunk member but not both */ struct Vst2xState { using Programs = std::vector; Programs programs; Vst2xChunk chunk; int32_t fxUniqueID {0}; int32_t fxVersion {0}; int32_t currentProgram {0}; bool isBypassed {false}; }; //------------------------------------------------------------------------ /** Try loading the state from an old vst2 fxb format stream * * If successfully loaded, the state has either a chunk or programs but not both * The Vst2xState::isBypassed boolean will be set if a Steinberg host has written the state into a * project and the plug-in was bypassed. * * @param stream the input stream * @param vst2xUniqueID vst2 unique id expected to be stored in the stream [optional]. If present * the fxb unique id header entry must be the same as this otherwise the * return value is empty. * @return on success the optional has a Vst2xState object with the data */ Optional tryVst2StateLoad (Steinberg::IBStream& stream, Optional vst2xUniqueID = {}) noexcept; //------------------------------------------------------------------------ /** Write a vst2 fxb stream * * Writes the state into stream as a vst2 fxb format * * @param state the state which should be written * @param stream the stream where the state should be written into * @param writeBypassState write extra chunk with bypass state * @return true on success */ bool writeVst2State (const Vst2xState& state, Steinberg::IBStream& stream, bool writeBypassState = true) noexcept; //------------------------------------------------------------------------ /** Try loading the state from on old vst2 fxp format stream * * If successfully loaded, the program has either a chunk or plain values but not both * * @param stream the input stream * @param vst2xUniqueID vst2 unique id expected to be stored in the stream * @return on success the optional has a Vst2xProgram object with the data */ Optional tryVst2ProgramLoad (Steinberg::IBStream& stream, Optional vst2xUniqueID) noexcept; //------------------------------------------------------------------------ } // VST3 vst3sdk-3.7.10.14+~4.13.3/source/vst/vst2wrapper/000077500000000000000000000000001461511344300207635ustar00rootroot00000000000000vst3sdk-3.7.10.14+~4.13.3/source/vst/vst2wrapper/docvst2.h000066400000000000000000000062331461511344300225240ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vst2wrapper/docvst2.h // Created by : Steinberg, 01/2009 // Description : VST 3 -> VST 2 Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /** ************************************** \page vst2xwrapper VST 3 - VST 2.x Wrapper ************************************** \tableofcontents \brief Helper Class wrapping a VST 3 plug-in to a VST 2.4 plug-in *************************** \section VST2Introduction Introduction *************************** The VST 3 SDK comes with a helper class which wraps one VST 3 Audio Processor and Edit Controller to a VST 2.x plug-in. \n\n *************************** \section VST2howdoesitwork How does it work? *************************** You just need to add public.sdk/source/vst/vst2wrapper/vst2wrapper.sdk.cpp to your project and add the following code somewhere in your sources: \code{.cpp} //------------------------------------------------------------------------ #include "public.sdk/source/vst/vst2wrapper/vst2wrapper.h" //------------------------------------------------------------------------ ::AudioEffect* createEffectInstance (audioMasterCallback audioMaster) { return Steinberg::Vst::Vst2Wrapper::create (GetPluginFactory (), kAudioProcessorCID, kVst2UniqueID, audioMaster); } \endcode */ vst3sdk-3.7.10.14+~4.13.3/source/vst/vst2wrapper/vst2wrapper.cpp000066400000000000000000001660521461511344300240000ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vst2wrapper/vst2wrapper.cpp // Created by : Steinberg, 01/2009 // Description : VST 3 -> VST 2 Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- /// \cond ignore #include "public.sdk/source/vst/vst2wrapper/vst2wrapper.h" #include "public.sdk/source/vst/hosting/hostclasses.h" #include "public.sdk/source/vst2.x/aeffeditor.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/keycodes.h" #include "pluginterfaces/gui/iplugview.h" #include "pluginterfaces/vst/ivstmessage.h" #include "pluginterfaces/vst/ivstmidicontrollers.h" #include "pluginterfaces/vst/vstpresetkeys.h" #include "base/source/fstreamer.h" #include #include #include // defined in basewrapper.cpp extern bool _InitModule (); extern bool _DeinitModule (); //------------------------------------------------------------------------ // some Defines //------------------------------------------------------------------------ // should be kVstMaxParamStrLen if we want to respect the VST 2 specification!!! #define kVstExtMaxParamStrLen 32 //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //! The parameter's name contains the unit path (e.g. "Modulators.LFO 1.frequency") bool vst2WrapperFullParameterPath = true; //------------------------------------------------------------------------ // Vst2EditorWrapper Declaration //------------------------------------------------------------------------ class Vst2EditorWrapper : public BaseEditorWrapper, public AEffEditor { public: //------------------------------------------------------------------------ Vst2EditorWrapper (AudioEffect* effect, IEditController* controller); //--- from BaseEditorWrapper --------------------- void _close () SMTG_OVERRIDE; //--- from AEffEditor------------------- bool getRect (ERect** rect) SMTG_OVERRIDE; bool open (void* ptr) SMTG_OVERRIDE; void close () SMTG_OVERRIDE { _close (); } bool setKnobMode (VstInt32 val) SMTG_OVERRIDE { return BaseEditorWrapper::_setKnobMode (static_cast (val)); } ///< Receives key down event. Return true only if key was really used! bool onKeyDown (VstKeyCode& keyCode) SMTG_OVERRIDE; ///< Receives key up event. Return true only if key was really used! bool onKeyUp (VstKeyCode& keyCode) SMTG_OVERRIDE; ///< Handles mouse wheel event, distance is positive or negative to indicate wheel direction. bool onWheel (float distance) SMTG_OVERRIDE; //--- IPlugFrame ---------------------------- tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* newSize) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: ERect mERect; }; //------------------------------------------------------------------------ bool areSizeEquals (const ViewRect &r1, const ViewRect& r2) { if (r1.getHeight() != r2.getHeight ()) return false; if (r1.getWidth() != r2.getWidth ()) return false; return true; } //------------------------------------------------------------------------ // Vst2EditorWrapper Implementation //------------------------------------------------------------------------ Vst2EditorWrapper::Vst2EditorWrapper (AudioEffect* effect, IEditController* controller) : BaseEditorWrapper (controller), AEffEditor (effect) { } //------------------------------------------------------------------------ tresult PLUGIN_API Vst2EditorWrapper::resizeView (IPlugView* view, ViewRect* newSize) { tresult result = kResultFalse; if (view && newSize && effect) { if (areSizeEquals (*newSize, mViewRect)) return kResultTrue; auto* effectx = dynamic_cast (effect); if (effectx && effectx->sizeWindow (newSize->getWidth (), newSize->getHeight ())) { result = view->onSize (newSize); } } return result; } //------------------------------------------------------------------------ bool Vst2EditorWrapper::getRect (ERect** rect) { ViewRect size; if (BaseEditorWrapper::getRect (size)) { mERect.left = (VstInt16)size.left; mERect.top = (VstInt16)size.top; mERect.right = (VstInt16)size.right; mERect.bottom = (VstInt16)size.bottom; *rect = &mERect; return true; } *rect = nullptr; return false; } //------------------------------------------------------------------------ bool Vst2EditorWrapper::open (void* ptr) { AEffEditor::open (ptr); return BaseEditorWrapper::_open (ptr); } //------------------------------------------------------------------------ void Vst2EditorWrapper::_close () { BaseEditorWrapper::_close (); AEffEditor::close (); } //------------------------------------------------------------------------ bool Vst2EditorWrapper::onKeyDown (VstKeyCode& keyCode) { if (!mView) return false; return mView->onKeyDown (VirtualKeyCodeToChar (keyCode.virt), keyCode.virt, keyCode.modifier) == kResultTrue; } //------------------------------------------------------------------------ bool Vst2EditorWrapper::onKeyUp (VstKeyCode& keyCode) { if (!mView) return false; return mView->onKeyUp (VirtualKeyCodeToChar (keyCode.virt), keyCode.virt, keyCode.modifier) == kResultTrue; } //------------------------------------------------------------------------ bool Vst2EditorWrapper::onWheel (float distance) { if (!mView) return false; return mView->onWheel (distance) == kResultTrue; } //------------------------------------------------------------------------ // Vst2MidiEventQueue Declaration //------------------------------------------------------------------------ class Vst2MidiEventQueue { public: //------------------------------------------------------------------------ Vst2MidiEventQueue (int32 maxEventCount); ~Vst2MidiEventQueue (); bool isEmpty () const { return eventList->numEvents == 0; } bool add (const VstMidiEvent& e); bool add (const VstMidiSysexEvent& e); void flush (); operator VstEvents* () { return eventList; } //------------------------------------------------------------------------ protected: VstEvents* eventList; int32 maxEventCount; }; //------------------------------------------------------------------------ // Vst2MidiEventQueue Implementation //------------------------------------------------------------------------ Vst2MidiEventQueue::Vst2MidiEventQueue (int32 _maxEventCount) : maxEventCount (_maxEventCount) { eventList = (VstEvents*)new char[sizeof (VstEvents) + (maxEventCount - 2) * sizeof (VstEvent*)]; eventList->numEvents = 0; eventList->reserved = 0; auto eventSize = sizeof (VstMidiSysexEvent) > sizeof (VstMidiEvent) ? sizeof (VstMidiSysexEvent) : sizeof (VstMidiEvent); for (int32 i = 0; i < maxEventCount; i++) { char* eventBuffer = new char[eventSize]; memset (eventBuffer, 0, eventSize); eventList->events[i] = (VstEvent*)eventBuffer; } } //------------------------------------------------------------------------ Vst2MidiEventQueue::~Vst2MidiEventQueue () { for (int32 i = 0; i < maxEventCount; i++) delete[] (char*) eventList->events[i]; delete[] (char*) eventList; } //------------------------------------------------------------------------ bool Vst2MidiEventQueue::add (const VstMidiEvent& e) { if (eventList->numEvents >= maxEventCount) return false; auto* dst = (VstMidiEvent*)eventList->events[eventList->numEvents++]; memcpy (dst, &e, sizeof (VstMidiEvent)); dst->type = kVstMidiType; dst->byteSize = sizeof (VstMidiEvent); return true; } //------------------------------------------------------------------------ bool Vst2MidiEventQueue::add (const VstMidiSysexEvent& e) { if (eventList->numEvents >= maxEventCount) return false; auto* dst = (VstMidiSysexEvent*)eventList->events[eventList->numEvents++]; memcpy (dst, &e, sizeof (VstMidiSysexEvent)); dst->type = kVstSysExType; dst->byteSize = sizeof (VstMidiSysexEvent); return true; } //------------------------------------------------------------------------ void Vst2MidiEventQueue::flush () { eventList->numEvents = 0; } //------------------------------------------------------------------------ // Vst2Wrapper //------------------------------------------------------------------------ Vst2Wrapper::Vst2Wrapper (BaseWrapper::SVST3Config& config, audioMasterCallback audioMaster, VstInt32 vst2ID) : BaseWrapper (config), AudioEffectX (audioMaster, 0, 0) { mUseExportedBypass = false; mUseIncIndex = true; setUniqueID (vst2ID); canProcessReplacing (true); // supports replacing output programsAreChunks (true); } //------------------------------------------------------------------------ Vst2Wrapper::~Vst2Wrapper () { //! editor needs to be destroyed BEFORE DeinitModule // instead of AudioEffect destructor if (mEditor) { setEditor (nullptr); mEditor = nullptr; } if (mVst2InputArrangement) free (mVst2InputArrangement); if (mVst2OutputArrangement) free (mVst2OutputArrangement); delete mVst2OutputEvents; mVst2OutputEvents = nullptr; BaseWrapper::term (); // termination of objects might still need data destroyed in _DeinitModule() _DeinitModule (); } //------------------------------------------------------------------------ bool Vst2Wrapper::init () { if (strstr (mSubCategories, "Instrument")) isSynth (true); bool res = BaseWrapper::init (); numPrograms = cEffect.numPrograms = mNumPrograms; if (mController) { if (BaseEditorWrapper::hasEditor (mController)) { auto* _editor = new Vst2EditorWrapper (this, mController); _setEditor (_editor); setEditor (_editor); } } return res; } //------------------------------------------------------------------------ void Vst2Wrapper::_canDoubleReplacing (bool val) { canDoubleReplacing (val); } //------------------------------------------------------------------------ void Vst2Wrapper::_setInitialDelay (uint32 delay) { setInitialDelay (static_cast (delay)); } //------------------------------------------------------------------------ void Vst2Wrapper::_noTail (bool val) { noTail (val); } //------------------------------------------------------------------------ void Vst2Wrapper::setupBuses () { BaseWrapper::setupBuses (); if (mHasEventOutputBuses) { if (mVst2OutputEvents == nullptr) mVst2OutputEvents = new Vst2MidiEventQueue (kMaxEvents); } else { if (mVst2OutputEvents) { delete mVst2OutputEvents; mVst2OutputEvents = nullptr; } } } //------------------------------------------------------------------------ void Vst2Wrapper::setupProcessTimeInfo () { VstTimeInfo* vst2timeInfo = AudioEffectX::getTimeInfo (0xffffffff); if (vst2timeInfo) { const uint32 portableFlags = ProcessContext::kPlaying | ProcessContext::kCycleActive | ProcessContext::kRecording | ProcessContext::kSystemTimeValid | ProcessContext::kProjectTimeMusicValid | ProcessContext::kBarPositionValid | ProcessContext::kCycleValid | ProcessContext::kTempoValid | ProcessContext::kTimeSigValid | ProcessContext::kSmpteValid | ProcessContext::kClockValid; mProcessContext.state = ((uint32)vst2timeInfo->flags) & portableFlags; mProcessContext.sampleRate = vst2timeInfo->sampleRate; mProcessContext.projectTimeSamples = (TSamples)vst2timeInfo->samplePos; if (mProcessContext.state & ProcessContext::kSystemTimeValid) mProcessContext.systemTime = (TSamples)vst2timeInfo->nanoSeconds; else mProcessContext.systemTime = 0; if (mProcessContext.state & ProcessContext::kProjectTimeMusicValid) mProcessContext.projectTimeMusic = vst2timeInfo->ppqPos; else mProcessContext.projectTimeMusic = 0; if (mProcessContext.state & ProcessContext::kBarPositionValid) mProcessContext.barPositionMusic = vst2timeInfo->barStartPos; else mProcessContext.barPositionMusic = 0; if (mProcessContext.state & ProcessContext::kCycleValid) { mProcessContext.cycleStartMusic = vst2timeInfo->cycleStartPos; mProcessContext.cycleEndMusic = vst2timeInfo->cycleEndPos; } else mProcessContext.cycleStartMusic = mProcessContext.cycleEndMusic = 0.0; if (mProcessContext.state & ProcessContext::kTempoValid) mProcessContext.tempo = vst2timeInfo->tempo; else mProcessContext.tempo = 120.0; if (mProcessContext.state & ProcessContext::kTimeSigValid) { mProcessContext.timeSigNumerator = vst2timeInfo->timeSigNumerator; mProcessContext.timeSigDenominator = vst2timeInfo->timeSigDenominator; } else mProcessContext.timeSigNumerator = mProcessContext.timeSigDenominator = 4; mProcessContext.frameRate.flags = 0; if (mProcessContext.state & ProcessContext::kSmpteValid) { mProcessContext.smpteOffsetSubframes = vst2timeInfo->smpteOffset; switch (vst2timeInfo->smpteFrameRate) { case kVstSmpte24fps: ///< 24 fps mProcessContext.frameRate.framesPerSecond = 24; break; case kVstSmpte25fps: ///< 25 fps mProcessContext.frameRate.framesPerSecond = 25; break; case kVstSmpte2997fps: ///< 29.97 fps mProcessContext.frameRate.framesPerSecond = 30; mProcessContext.frameRate.flags = FrameRate::kPullDownRate; break; case kVstSmpte30fps: ///< 30 fps mProcessContext.frameRate.framesPerSecond = 30; break; case kVstSmpte2997dfps: ///< 29.97 drop mProcessContext.frameRate.framesPerSecond = 30; mProcessContext.frameRate.flags = FrameRate::kPullDownRate | FrameRate::kDropRate; break; case kVstSmpte30dfps: ///< 30 drop mProcessContext.frameRate.framesPerSecond = 30; mProcessContext.frameRate.flags = FrameRate::kDropRate; break; case kVstSmpteFilm16mm: // not a smpte rate case kVstSmpteFilm35mm: mProcessContext.state &= ~ProcessContext::kSmpteValid; break; case kVstSmpte239fps: ///< 23.9 fps mProcessContext.frameRate.framesPerSecond = 24; mProcessContext.frameRate.flags = FrameRate::kPullDownRate; break; case kVstSmpte249fps: ///< 24.9 fps mProcessContext.frameRate.framesPerSecond = 25; mProcessContext.frameRate.flags = FrameRate::kPullDownRate; break; case kVstSmpte599fps: ///< 59.9 fps mProcessContext.frameRate.framesPerSecond = 60; mProcessContext.frameRate.flags = FrameRate::kPullDownRate; break; case kVstSmpte60fps: ///< 60 fps mProcessContext.frameRate.framesPerSecond = 60; break; default: mProcessContext.state &= ~ProcessContext::kSmpteValid; break; } } else { mProcessContext.smpteOffsetSubframes = 0; mProcessContext.frameRate.framesPerSecond = 0; } ///< MIDI Clock Resolution (24 Per Quarter Note), can be negative (nearest) if (mProcessContext.state & ProcessContext::kClockValid) mProcessContext.samplesToNextClock = vst2timeInfo->samplesToNextClock; else mProcessContext.samplesToNextClock = 0; mProcessData.processContext = &mProcessContext; } else mProcessData.processContext = nullptr; } //------------------------------------------------------------------------ void Vst2Wrapper::suspend () { BaseWrapper::_suspend (); } //------------------------------------------------------------------------ void Vst2Wrapper::resume () { AudioEffectX::resume (); BaseWrapper::_resume (); mChunk.setSize (0); } //------------------------------------------------------------------------ VstInt32 Vst2Wrapper::startProcess () { BaseWrapper::_startProcess (); return 0; } //------------------------------------------------------------------------ VstInt32 Vst2Wrapper::stopProcess () { BaseWrapper::_stopProcess (); return 0; } //------------------------------------------------------------------------ void Vst2Wrapper::setSampleRate (float newSamplerate) { BaseWrapper::_setSampleRate (newSamplerate); AudioEffectX::setSampleRate (mSampleRate); } //------------------------------------------------------------------------ void Vst2Wrapper::setBlockSize (VstInt32 newBlockSize) { if (BaseWrapper::_setBlockSize (newBlockSize)) AudioEffectX::setBlockSize (newBlockSize); } //------------------------------------------------------------------------ float Vst2Wrapper::getParameter (VstInt32 index) { return BaseWrapper::_getParameter (index); } //------------------------------------------------------------------------ void Vst2Wrapper::setParameter (VstInt32 index, float value) { if (!mController) return; if (index < (int32)mParameterMap.size ()) { ParamID id = mParameterMap.at (index).vst3ID; addParameterChange (id, (ParamValue)value, 0); } } //------------------------------------------------------------------------ void Vst2Wrapper::setProgram (VstInt32 program) { if (mProgramParameterID != kNoParamId && mController != nullptr && mProgramParameterIdx != -1) { AudioEffectX::setProgram (program); ParameterInfo paramInfo = {0}; if (mController->getParameterInfo (mProgramParameterIdx, paramInfo) == kResultTrue) { if (paramInfo.stepCount > 0 && program <= paramInfo.stepCount) { ParamValue normalized = (ParamValue)program / (ParamValue)paramInfo.stepCount; addParameterChange (mProgramParameterID, normalized, 0); } } } } //------------------------------------------------------------------------ void Vst2Wrapper::setProgramName (char* /*name*/) { // not supported in VST 3 } //------------------------------------------------------------------------ void Vst2Wrapper::getProgramName (char* name) { // name of the current program. Limited to #kVstMaxProgNameLen. *name = 0; if (mUnitInfo) { ProgramListInfo listInfo = {0}; if (mUnitInfo->getProgramListInfo (0, listInfo) == kResultTrue) { String128 tmp = {0}; if (mUnitInfo->getProgramName (listInfo.id, curProgram, tmp) == kResultTrue) { String str (tmp); str.copyTo8 (name, 0, kVstMaxProgNameLen); } } } } //------------------------------------------------------------------------ bool Vst2Wrapper::getProgramNameIndexed (VstInt32, VstInt32 index, char* name) { *name = 0; if (mUnitInfo) { ProgramListInfo listInfo = {0}; if (mUnitInfo->getProgramListInfo (0, listInfo) == kResultTrue) { String128 tmp = {0}; if (mUnitInfo->getProgramName (listInfo.id, index, tmp) == kResultTrue) { String str (tmp); str.copyTo8 (name, 0, kVstMaxProgNameLen); return true; } } } return false; } //------------------------------------------------------------------------ void Vst2Wrapper::getParameterLabel (VstInt32 index, char* label) { // units in which parameter \e index is displayed (i.e. "sec", "dB", "type", etc...). Limited to // #kVstMaxParamStrLen. *label = 0; if (mController) { int32 vst3Index = mParameterMap.at (index).vst3Index; ParameterInfo paramInfo = {0}; if (mController->getParameterInfo (vst3Index, paramInfo) == kResultTrue) { String str (paramInfo.units); str.copyTo8 (label, 0, kVstMaxParamStrLen); } } } //------------------------------------------------------------------------ void Vst2Wrapper::getParameterDisplay (VstInt32 index, char* text) { // string representation ("0.5", "-3", "PLATE", etc...) of the value of parameter \e index. // Limited to #kVstMaxParamStrLen. *text = 0; if (mController) { int32 vst3Index = mParameterMap.at (index).vst3Index; ParameterInfo paramInfo = {0}; if (mController->getParameterInfo (vst3Index, paramInfo) == kResultTrue) { String128 tmp = {0}; ParamValue value = 0; if (!getLastParamChange (paramInfo.id, value)) value = mController->getParamNormalized (paramInfo.id); if (mController->getParamStringByValue (paramInfo.id, value, tmp) == kResultTrue) { String str (tmp); str.copyTo8 (text, 0, kVstMaxParamStrLen); } } } } //------------------------------------------------------------------------ void Vst2Wrapper::getParameterName (VstInt32 index, char* text) { // name ("Time", "Gain", "RoomType", etc...) of parameter \e index. Limited to // #kVstExtMaxParamStrLen. *text = 0; if (mController && index < (int32)mParameterMap.size ()) { int32 vst3Index = mParameterMap.at (index).vst3Index; ParameterInfo paramInfo = {0}; if (mController->getParameterInfo (vst3Index, paramInfo) == kResultTrue) { String str; if (vst2WrapperFullParameterPath) { //! The parameter's name contains the unit path (e.g. "LFO 1.freq") as well if (mUnitInfo) { getUnitPath (paramInfo.unitId, str); } } str.append (paramInfo.title); if (str.length () > kVstExtMaxParamStrLen) { //! In case the string's length exceeds the limit, try parameter's title without // unit path. str = paramInfo.title; } if (str.length () > kVstExtMaxParamStrLen) { str = paramInfo.shortTitle; } str.copyTo8 (text, 0, kVstExtMaxParamStrLen); } } } //------------------------------------------------------------------------ bool Vst2Wrapper::canParameterBeAutomated (VstInt32 index) { if (mController && index < (int32)mParameterMap.size ()) { int32 vst3Index = mParameterMap.at (index).vst3Index; ParameterInfo paramInfo = {0}; if (mController->getParameterInfo (vst3Index, paramInfo) == kResultTrue) return (paramInfo.flags & ParameterInfo::kCanAutomate) != 0; } return false; } //------------------------------------------------------------------------ bool Vst2Wrapper::string2parameter (VstInt32 index, char* text) { if (mController && index < (int32)mParameterMap.size ()) { int32 vst3Index = mParameterMap.at (index).vst3Index; ParameterInfo paramInfo = {0}; if (mController->getParameterInfo (vst3Index, paramInfo) == kResultTrue) { TChar tString[1024] = {0}; String tmp (text); tmp.copyTo16 (tString, 0, 1023); ParamValue valueNormalized = 0.0; if (mController->getParamValueByString (paramInfo.id, tString, valueNormalized)) { setParameterAutomated (index, (float)valueNormalized); // TODO: check if setParameterAutomated is correct } } } return false; } //------------------------------------------------------------------------ bool Vst2Wrapper::getParameterProperties (VstInt32 index, VstParameterProperties* p) { if (mController && index < (int32)mParameterMap.size ()) { p->label[0] = 0; p->shortLabel[0] = 0; int32 vst3Index = mParameterMap.at (index).vst3Index; ParameterInfo paramInfo = {0}; if (mController->getParameterInfo (vst3Index, paramInfo) == kResultTrue) { String str (paramInfo.title); str.copyTo8 (p->label, 0, kVstMaxLabelLen); String str2 (paramInfo.shortTitle); str.copyTo8 (p->shortLabel, 0, kVstMaxShortLabelLen); if (paramInfo.stepCount == 0) // continuous { p->flags |= kVstParameterCanRamp; } else if (paramInfo.stepCount == 1) // on / off { p->flags |= kVstParameterIsSwitch; } else { p->minInteger = 0; p->maxInteger = paramInfo.stepCount; p->flags |= kVstParameterUsesIntegerMinMax; } return true; } } return false; } //------------------------------------------------------------------------ VstInt32 Vst2Wrapper::getChunk (void** data, bool isPreset) { return BaseWrapper::_getChunk (data, isPreset); } //------------------------------------------------------------------------ VstInt32 Vst2Wrapper::setChunk (void* data, VstInt32 byteSize, bool isPreset) { return BaseWrapper::_setChunk (data, byteSize, isPreset); } //------------------------------------------------------------------------ VstInt32 Vst2Wrapper::vst3ToVst2SpeakerArr (SpeakerArrangement vst3Arr) { switch (vst3Arr) { case SpeakerArr::kMono: return kSpeakerArrMono; case SpeakerArr::kStereo: return kSpeakerArrStereo; case SpeakerArr::kStereoSurround: return kSpeakerArrStereoSurround; case SpeakerArr::kStereoCenter: return kSpeakerArrStereoCenter; case SpeakerArr::kStereoSide: return kSpeakerArrStereoSide; case SpeakerArr::kStereoCLfe: return kSpeakerArrStereoCLfe; case SpeakerArr::k30Cine: return kSpeakerArr30Cine; case SpeakerArr::k30Music: return kSpeakerArr30Music; case SpeakerArr::k31Cine: return kSpeakerArr31Cine; case SpeakerArr::k31Music: return kSpeakerArr31Music; case SpeakerArr::k40Cine: return kSpeakerArr40Cine; case SpeakerArr::k40Music: return kSpeakerArr40Music; case SpeakerArr::k41Cine: return kSpeakerArr41Cine; case SpeakerArr::k41Music: return kSpeakerArr41Music; case SpeakerArr::k50: return kSpeakerArr50; case SpeakerArr::k51: return kSpeakerArr51; case SpeakerArr::k60Cine: return kSpeakerArr60Cine; case SpeakerArr::k60Music: return kSpeakerArr60Music; case SpeakerArr::k61Cine: return kSpeakerArr61Cine; case SpeakerArr::k61Music: return kSpeakerArr61Music; case SpeakerArr::k70Cine: return kSpeakerArr70Cine; case SpeakerArr::k70Music: return kSpeakerArr70Music; case SpeakerArr::k71Cine: return kSpeakerArr71Cine; case SpeakerArr::k71Music: return kSpeakerArr71Music; case SpeakerArr::k80Cine: return kSpeakerArr80Cine; case SpeakerArr::k80Music: return kSpeakerArr80Music; case SpeakerArr::k81Cine: return kSpeakerArr81Cine; case SpeakerArr::k81Music: return kSpeakerArr81Music; case SpeakerArr::k102: return kSpeakerArr102; } return kSpeakerArrUserDefined; } //------------------------------------------------------------------------ SpeakerArrangement Vst2Wrapper::vst2ToVst3SpeakerArr (VstInt32 vst2Arr) { switch (vst2Arr) { case kSpeakerArrMono: return SpeakerArr::kMono; case kSpeakerArrStereo: return SpeakerArr::kStereo; case kSpeakerArrStereoSurround: return SpeakerArr::kStereoSurround; case kSpeakerArrStereoCenter: return SpeakerArr::kStereoCenter; case kSpeakerArrStereoSide: return SpeakerArr::kStereoSide; case kSpeakerArrStereoCLfe: return SpeakerArr::kStereoCLfe; case kSpeakerArr30Cine: return SpeakerArr::k30Cine; case kSpeakerArr30Music: return SpeakerArr::k30Music; case kSpeakerArr31Cine: return SpeakerArr::k31Cine; case kSpeakerArr31Music: return SpeakerArr::k31Music; case kSpeakerArr40Cine: return SpeakerArr::k40Cine; case kSpeakerArr40Music: return SpeakerArr::k40Music; case kSpeakerArr41Cine: return SpeakerArr::k41Cine; case kSpeakerArr41Music: return SpeakerArr::k41Music; case kSpeakerArr50: return SpeakerArr::k50; case kSpeakerArr51: return SpeakerArr::k51; case kSpeakerArr60Cine: return SpeakerArr::k60Cine; case kSpeakerArr60Music: return SpeakerArr::k60Music; case kSpeakerArr61Cine: return SpeakerArr::k61Cine; case kSpeakerArr61Music: return SpeakerArr::k61Music; case kSpeakerArr70Cine: return SpeakerArr::k70Cine; case kSpeakerArr70Music: return SpeakerArr::k70Music; case kSpeakerArr71Cine: return SpeakerArr::k71Cine; case kSpeakerArr71Music: return SpeakerArr::k71Music; case kSpeakerArr80Cine: return SpeakerArr::k80Cine; case kSpeakerArr80Music: return SpeakerArr::k80Music; case kSpeakerArr81Cine: return SpeakerArr::k81Cine; case kSpeakerArr81Music: return SpeakerArr::k81Music; case kSpeakerArr102: return SpeakerArr::k102; } return 0; } //------------------------------------------------------------------------ VstInt32 Vst2Wrapper::vst3ToVst2Speaker (Vst::Speaker vst3Speaker) { switch (vst3Speaker) { case Vst::kSpeakerM: return ::kSpeakerM; case Vst::kSpeakerL: return ::kSpeakerL; case Vst::kSpeakerR: return ::kSpeakerR; case Vst::kSpeakerC: return ::kSpeakerC; case Vst::kSpeakerLfe: return ::kSpeakerLfe; case Vst::kSpeakerLs: return ::kSpeakerLs; case Vst::kSpeakerRs: return ::kSpeakerRs; case Vst::kSpeakerLc: return ::kSpeakerLc; case Vst::kSpeakerRc: return ::kSpeakerRc; case Vst::kSpeakerS: return ::kSpeakerS; case Vst::kSpeakerSl: return ::kSpeakerSl; case Vst::kSpeakerSr: return ::kSpeakerSr; case Vst::kSpeakerTc: return ::kSpeakerTm; case Vst::kSpeakerTfl: return ::kSpeakerTfl; case Vst::kSpeakerTfc: return ::kSpeakerTfc; case Vst::kSpeakerTfr: return ::kSpeakerTfr; case Vst::kSpeakerTrl: return ::kSpeakerTrl; case Vst::kSpeakerTrc: return ::kSpeakerTrc; case Vst::kSpeakerTrr: return ::kSpeakerTrr; case Vst::kSpeakerLfe2: return ::kSpeakerLfe2; } return ::kSpeakerUndefined; } //------------------------------------------------------------------------ static const char* gSpeakerNames[] = { "M", ///< Mono (M) "L", ///< Left (L) "R", ///< Right (R) "C", ///< Center (C) "Lfe", ///< Subbass (Lfe) "Ls", ///< Left Surround (Ls) "Rs", ///< Right Surround (Rs) "Lc", ///< Left of Center (Lc) "Rc", ///< Right of Center (Rc) "Cs", ///< Center of Surround (Cs) = Surround (S) "Sl", ///< Side Left (Sl) "Sr", ///< Side Right (Sr) "Tm", ///< Top Middle (Tm) "Tfl", ///< Top Front Left (Tfl) "Tfc", ///< Top Front Center (Tfc) "Tfr", ///< Top Front Right (Tfr) "Trl", ///< Top Rear Left (Trl) "Trc", ///< Top Rear Center (Trc) "Trr", ///< Top Rear Right (Trr) "Lfe2" ///< Subbass 2 (Lfe2) }; static const int32 kNumSpeakerNames = sizeof (gSpeakerNames) / sizeof (char*); //------------------------------------------------------------------------ bool Vst2Wrapper::pinIndexToBusChannel (BusDirection dir, VstInt32 pinIndex, int32& busIndex, int32& busChannel) { AudioBusBuffers* busBuffers = dir == kInput ? mProcessData.inputs : mProcessData.outputs; int32 busCount = dir == kInput ? mProcessData.numInputs : mProcessData.numOutputs; uint64 mainBusFlags = dir == kInput ? mMainAudioInputBuses : mMainAudioOutputBuses; int32 sourceIndex = 0; for (busIndex = 0; busIndex < busCount; busIndex++) { AudioBusBuffers& buffers = busBuffers[busIndex]; if (mainBusFlags & (uint64 (1) << busIndex)) { for (busChannel = 0; busChannel < buffers.numChannels; busChannel++) { if (pinIndex == sourceIndex) { return true; } sourceIndex++; } } } return false; } //------------------------------------------------------------------------ bool Vst2Wrapper::getPinProperties (BusDirection dir, VstInt32 pinIndex, VstPinProperties* properties) { int32 busIndex = -1; int32 busChannelIndex = -1; if (pinIndexToBusChannel (dir, pinIndex, busIndex, busChannelIndex)) { BusInfo busInfo = {0}; if (mComponent && mComponent->getBusInfo (kAudio, dir, busIndex, busInfo) == kResultTrue) { properties->flags = kVstPinIsActive; // ???? String name (busInfo.name); name.copyTo8 (properties->label, 0, kVstMaxLabelLen); if (busInfo.channelCount == 1) { properties->flags |= kVstPinUseSpeaker; properties->arrangementType = kSpeakerArrMono; } if (busInfo.channelCount == 2) { properties->flags |= kVstPinUseSpeaker; properties->flags |= kVstPinIsStereo; properties->arrangementType = kSpeakerArrStereo; } else if (busInfo.channelCount > 2) { Vst::SpeakerArrangement arr = 0; if (mProcessor && mProcessor->getBusArrangement (dir, busIndex, arr) == kResultTrue) { properties->flags |= kVstPinUseSpeaker; properties->arrangementType = vst3ToVst2SpeakerArr (arr); } else { return false; } } return true; } } return false; } //------------------------------------------------------------------------ bool Vst2Wrapper::getInputProperties (VstInt32 index, VstPinProperties* properties) { return getPinProperties (kInput, index, properties); } //------------------------------------------------------------------------ bool Vst2Wrapper::getOutputProperties (VstInt32 index, VstPinProperties* properties) { return getPinProperties (kOutput, index, properties); } //------------------------------------------------------------------------ bool Vst2Wrapper::setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput) { if (!mProcessor || !mComponent) return false; Vst::SpeakerArrangement newInputArr = 0; Vst::SpeakerArrangement newOutputArr = 0; Vst::SpeakerArrangement outputArr = 0; Vst::SpeakerArrangement inputArr = 0; int32 inputBusCount = mComponent->getBusCount (kAudio, kInput); int32 outputBusCount = mComponent->getBusCount (kAudio, kOutput); if (inputBusCount > 0) if (mProcessor->getBusArrangement (kInput, 0, inputArr) != kResultTrue) return false; if (outputBusCount > 0) if (mProcessor->getBusArrangement (kOutput, 0, outputArr) != kResultTrue) return false; if (pluginInput) { newInputArr = vst2ToVst3SpeakerArr (pluginInput->type); if (newInputArr == 0) return false; } if (pluginOutput) { newOutputArr = vst2ToVst3SpeakerArr (pluginOutput->type); if (newOutputArr == 0) return false; } if (newInputArr == 0) newInputArr = inputArr; if (newOutputArr == 0) newOutputArr = outputArr; if (newInputArr != inputArr || newOutputArr != outputArr) { if (mProcessor->setBusArrangements ( &newInputArr, (newInputArr > 0 && inputBusCount > 0) ? 1 : 0, &newOutputArr, (newOutputArr > 0 && outputBusCount > 0) ? 1 : 0) != kResultTrue) return false; restartComponent (kIoChanged); } return true; } //------------------------------------------------------------------------ void Vst2Wrapper::setupVst2Arrangement (VstSpeakerArrangement*& vst2arr, Vst::SpeakerArrangement vst3Arrangement) { int32 numChannels = Vst::SpeakerArr::getChannelCount (vst3Arrangement); if (vst2arr && (numChannels == 0 || (numChannels > vst2arr->numChannels && numChannels > 8))) { free (vst2arr); vst2arr = nullptr; if (numChannels == 0) return; } if (vst2arr == nullptr) { int32 channelOverhead = numChannels > 8 ? numChannels - 8 : 0; uint32 structSize = sizeof (VstSpeakerArrangement) + channelOverhead * sizeof (VstSpeakerProperties); vst2arr = (VstSpeakerArrangement*)malloc (structSize); memset (vst2arr, 0, structSize); } if (vst2arr) { vst2arr->type = vst3ToVst2SpeakerArr (vst3Arrangement); vst2arr->numChannels = numChannels; Speaker vst3TestSpeaker = 1; for (int32 i = 0; i < numChannels; i++) { VstSpeakerProperties& props = vst2arr->speakers[i]; // find nextSpeaker in vst3 arrangement Speaker vst3Speaker = 0; while (vst3Speaker == 0 && vst3TestSpeaker != 0) { if (vst3Arrangement & vst3TestSpeaker) vst3Speaker = vst3TestSpeaker; vst3TestSpeaker <<= 1; } if (vst3Speaker) { props.type = vst3ToVst2Speaker (vst3Speaker); if (props.type >= 0 && props.type < kNumSpeakerNames) strncpy (props.name, gSpeakerNames[props.type], kVstMaxNameLen); else sprintf (props.name, "%ld", i + 1); } } } } //------------------------------------------------------------------------ bool Vst2Wrapper::getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput) { if (!mProcessor) return false; Vst::SpeakerArrangement inputArr = 0; Vst::SpeakerArrangement outputArr = 0; if (mProcessor->getBusArrangement (kInput, 0, inputArr) != kResultTrue) inputArr = 0; if (mProcessor->getBusArrangement (kOutput, 0, outputArr) != kResultTrue) outputArr = 0; setupVst2Arrangement (mVst2InputArrangement, inputArr); setupVst2Arrangement (mVst2OutputArrangement, outputArr); *pluginInput = mVst2InputArrangement; *pluginOutput = mVst2OutputArrangement; return mVst2InputArrangement != nullptr && mVst2OutputArrangement != nullptr; } //------------------------------------------------------------------------ bool Vst2Wrapper::setBypass (bool onOff) { return BaseWrapper::_setBypass (onOff); } //----------------------------------------------------------------------------- bool Vst2Wrapper::setProcessPrecision (VstInt32 precision) { int32 newVst3SampleSize = -1; if (precision == kVstProcessPrecision32) newVst3SampleSize = kSample32; else if (precision == kVstProcessPrecision64) newVst3SampleSize = kSample64; if (newVst3SampleSize != mVst3SampleSize) { if (mProcessor && mProcessor->canProcessSampleSize (newVst3SampleSize) == kResultTrue) { mVst3SampleSize = newVst3SampleSize; setupProcessing (); setupBuses (); return true; } return false; } return true; } //----------------------------------------------------------------------------- VstInt32 Vst2Wrapper::getNumMidiInputChannels () { if (!mComponent) return 0; int32 busCount = mComponent->getBusCount (kEvent, kInput); if (busCount > 0) { BusInfo busInfo = {0}; if (mComponent->getBusInfo (kEvent, kInput, 0, busInfo) == kResultTrue) { return busInfo.channelCount; } } return 0; } //----------------------------------------------------------------------------- VstInt32 Vst2Wrapper::getNumMidiOutputChannels () { if (!mComponent) return 0; int32 busCount = mComponent->getBusCount (kEvent, kOutput); if (busCount > 0) { BusInfo busInfo = {0}; if (mComponent->getBusInfo (kEvent, kOutput, 0, busInfo) == kResultTrue) { return busInfo.channelCount; } } return 0; } //----------------------------------------------------------------------------- VstInt32 Vst2Wrapper::getGetTailSize () { if (mProcessor) return static_cast (mProcessor->getTailSamples ()); return 0; } //----------------------------------------------------------------------------- bool Vst2Wrapper::getEffectName (char* effectName) { if (mName[0]) { strncpy (effectName, mName, kVstMaxEffectNameLen); return true; } return false; } //----------------------------------------------------------------------------- bool Vst2Wrapper::getVendorString (char* text) { if (mVendor[0]) { strncpy (text, mVendor, kVstMaxVendorStrLen); return true; } return false; } //----------------------------------------------------------------------------- VstInt32 Vst2Wrapper::getVendorVersion () { return mVersion; } //----------------------------------------------------------------------------- VstIntPtr Vst2Wrapper::vendorSpecific (VstInt32 lArg, VstIntPtr lArg2, void* ptrArg, float floatArg) { switch (lArg) { case 'stCA': case 'stCa': switch (lArg2) { //--- ------- case 'FUID': if (ptrArg && mVst3EffectClassID.isValid ()) { memcpy ((char*)ptrArg, mVst3EffectClassID, 16); return 1; } break; //--- ------- case 'Whee': if (editor) editor->onWheel (floatArg); return 1; break; } } return AudioEffectX::vendorSpecific (lArg, lArg2, ptrArg, floatArg); } //----------------------------------------------------------------------------- VstPlugCategory Vst2Wrapper::getPlugCategory () { if (mSubCategories[0]) { if (strstr (mSubCategories, "Analyzer")) return kPlugCategAnalysis; else if (strstr (mSubCategories, "Delay") || strstr (mSubCategories, "Reverb")) return kPlugCategRoomFx; else if (strstr (mSubCategories, "Dynamics") || strstr (mSubCategories, "Mastering")) return kPlugCategMastering; else if (strstr (mSubCategories, "Restoration")) return kPlugCategRestoration; else if (strstr (mSubCategories, "Generator")) return kPlugCategGenerator; else if (strstr (mSubCategories, "Spatial")) return kPlugCategSpacializer; else if (strstr (mSubCategories, "Fx")) return kPlugCategEffect; else if (strstr (mSubCategories, "Instrument")) return kPlugCategSynth; } return kPlugCategUnknown; } //----------------------------------------------------------------------------- VstInt32 Vst2Wrapper::canDo (char* text) { if (stricmp (text, "sendVstEvents") == 0) { return -1; } else if (stricmp (text, "sendVstMidiEvent") == 0) { return mHasEventOutputBuses ? 1 : -1; } else if (stricmp (text, "receiveVstEvents") == 0) { return -1; } else if (stricmp (text, "receiveVstMidiEvent") == 0) { return mHasEventInputBuses ? 1 : -1; } else if (stricmp (text, "receiveVstTimeInfo") == 0) { return 1; } else if (stricmp (text, "offline") == 0) { if (mProcessing) return 0; if (mVst3processMode == kOffline) return 1; bool canOffline = setupProcessing (kOffline); setupProcessing (); return canOffline ? 1 : -1; } else if (stricmp (text, "midiProgramNames") == 0) { if (mUnitInfo) { UnitID unitId = -1; if (mUnitInfo->getUnitByBus (kEvent, kInput, 0, 0, unitId) == kResultTrue && unitId >= 0) return 1; } return -1; } else if (stricmp (text, "bypass") == 0) { return mBypassParameterID != kNoParamId ? 1 : -1; } return 0; // do not know } //----------------------------------------------------------------------------- VstInt32 Vst2Wrapper::getMidiProgramName (VstInt32 channel, MidiProgramName* midiProgramName) { UnitID unitId; ProgramListID programListId; if (mUnitInfo && getProgramListAndUnit (channel, unitId, programListId)) { if (midiProgramName) setupMidiProgram (channel, programListId, *midiProgramName); ProgramListInfo programListInfo; if (getProgramListInfoByProgramListID (programListId, programListInfo)) return programListInfo.programCount; } return 0; } //----------------------------------------------------------------------------- VstInt32 Vst2Wrapper::getCurrentMidiProgram (VstInt32 channel, MidiProgramName* currentProgram) { if (mUnitInfo && mController) { UnitID unitId; ProgramListID programListId; if (getProgramListAndUnit (channel, unitId, programListId)) { // find program selector parameter int32 parameterCount = mController->getParameterCount (); for (int32 i = 0; i < parameterCount; i++) { ParameterInfo parameterInfo = {0}; if (mController->getParameterInfo (i, parameterInfo) == kResultTrue) { if ((parameterInfo.flags & ParameterInfo::kIsProgramChange) != 0 && parameterInfo.unitId == unitId) { ParamValue normalized = mController->getParamNormalized (parameterInfo.id); int32 discreteValue = Min ((int32) (normalized * (parameterInfo.stepCount + 1)), parameterInfo.stepCount); if (currentProgram) { currentProgram->thisProgramIndex = discreteValue; setupMidiProgram (channel, programListId, *currentProgram); } return discreteValue; } } } } } return 0; } //----------------------------------------------------------------------------- bool Vst2Wrapper::setupMidiProgram (int32 midiChannel, ProgramListID programListId, MidiProgramName& midiProgramName) { if (mUnitInfo) { String128 string128 = {0}; if (mUnitInfo->getProgramName (programListId, midiProgramName.thisProgramIndex, string128) == kResultTrue) { String str (string128); str.copyTo8 (midiProgramName.name, 0, 64); midiProgramName.midiProgram = static_cast (midiProgramName.thisProgramIndex); midiProgramName.midiBankMsb = -1; midiProgramName.midiBankLsb = -1; midiProgramName.parentCategoryIndex = -1; midiProgramName.flags = 0; if (mUnitInfo->getProgramInfo (programListId, midiProgramName.thisProgramIndex, PresetAttributes::kInstrument, string128) == kResultTrue) { midiProgramName.parentCategoryIndex = lookupProgramCategory (midiChannel, string128); } return true; } } return false; } //----------------------------------------------------------------------------- int32 Vst2Wrapper::lookupProgramCategory (int32 midiChannel, String128 instrumentAttribute) { std::vector& channelCategories = mProgramCategories[midiChannel]; for (uint32 categoryIndex = 0; categoryIndex < channelCategories.size (); categoryIndex++) { ProgramCategory& cat = channelCategories[categoryIndex]; if (memcmp (instrumentAttribute, cat.vst3InstrumentAttribute, sizeof (String128)) == 0) return static_cast (categoryIndex); } return -1; } //----------------------------------------------------------------------------- uint32 Vst2Wrapper::makeCategoriesRecursive (std::vector& channelCategories, String128 vst3Category) { for (uint32 categoryIndex = 0; categoryIndex < channelCategories.size (); categoryIndex++) { ProgramCategory& cat = channelCategories[categoryIndex]; if (memcmp (vst3Category, cat.vst3InstrumentAttribute, sizeof (String128)) == 0) { return categoryIndex; } } int32 parentCategorIndex = -1; String128 str; String strAcc (str); strAcc.copyTo16 (vst3Category, 0, 127); int32 len = strAcc.length (); String singleName; char16 divider = '|'; for (int32 strIndex = len - 1; strIndex >= 0; strIndex--) { bool isDivider = str[strIndex] == divider; str[strIndex] = 0; // zero out rest if (isDivider) { singleName.assign (vst3Category + strIndex + 1); parentCategorIndex = static_cast (makeCategoriesRecursive (channelCategories, str)); break; } } // make new ProgramCategory cat = {}; memcpy (cat.vst3InstrumentAttribute, vst3Category, sizeof (String128)); singleName.copyTo8 (cat.vst2Category.name, 0, kVstMaxNameLen); cat.vst2Category.parentCategoryIndex = parentCategorIndex; cat.vst2Category.thisCategoryIndex = (int32)channelCategories.size (); channelCategories.push_back (cat); return cat.vst2Category.thisCategoryIndex; } //----------------------------------------------------------------------------- void Vst2Wrapper::setupProgramCategories () { mProgramCategories.clear (); if (mUnitInfo && mComponent) { if (mComponent->getBusCount (kEvent, kInput) > 0) { for (int32 channel = 0; channel < 16; channel++) // the 16 channels { // make vector for channel mProgramCategories.push_back (std::vector ()); std::vector& channelCategories = mProgramCategories[channel]; // scan program list of channel and find categories UnitID unitId; ProgramListID programListId; if (getProgramListAndUnit (channel, unitId, programListId)) { ProgramListInfo programListInfo; if (getProgramListInfoByProgramListID (programListId, programListInfo)) { for (int32 programIndex = 0; programIndex < programListInfo.programCount; programIndex++) { String128 string128 = {0}; if (mUnitInfo->getProgramInfo (programListId, programIndex, PresetAttributes::kInstrument, string128) == kResultTrue) { makeCategoriesRecursive (channelCategories, string128); } } } } } } } } //----------------------------------------------------------------------------- VstInt32 Vst2Wrapper::getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* category) { // try to rebuild it each time setupProgramCategories (); if (channel >= (VstInt32)mProgramCategories.size ()) return 0; std::vector& channelCategories = mProgramCategories[channel]; if (category && category->thisCategoryIndex < (VstInt32)channelCategories.size ()) { ProgramCategory& cat = channelCategories[category->thisCategoryIndex]; if (cat.vst2Category.thisCategoryIndex == category->thisCategoryIndex) memcpy (category, &cat.vst2Category, sizeof (MidiProgramCategory)); } return (VstInt32)channelCategories.size (); } //----------------------------------------------------------------------------- bool Vst2Wrapper::hasMidiProgramsChanged (VstInt32 /*channel*/) { // names of programs or program categories have changed return false; } //----------------------------------------------------------------------------- bool Vst2Wrapper::getMidiKeyName (VstInt32 channel, MidiKeyName* keyName) { UnitID unitId; ProgramListID programListId; if (mUnitInfo && getProgramListAndUnit (channel, unitId, programListId)) { String128 string128 = {0}; if (mUnitInfo->getProgramPitchName (programListId, keyName->thisProgramIndex, keyName->thisKeyNumber, string128)) { String str (string128); str.copyTo8 (keyName->keyName, 0, kVstMaxNameLen); return true; } } return false; } //----------------------------------------------------------------------------- void Vst2Wrapper::setupParameters () { BaseWrapper::setupParameters (); cEffect.numParams = mNumParams; } //----------------------------------------------------------------------------- VstInt32 Vst2Wrapper::processEvents (VstEvents* events) { if (mInputEvents == nullptr) return 0; mInputEvents->clear (); for (int32 i = 0; i < events->numEvents; i++) { VstEvent* e = events->events[i]; if (e->type == kVstMidiType) { auto* midiEvent = (VstMidiEvent*)e; Event toAdd = {0, midiEvent->deltaFrames, 0}; processMidiEvent (toAdd, &midiEvent->midiData[0], midiEvent->flags & kVstMidiEventIsRealtime, midiEvent->noteLength, midiEvent->noteOffVelocity * kMidiScaler, midiEvent->detune); } //--- ----------------------------- else if (e->type == kVstSysExType) { Event toAdd = {0, e->deltaFrames}; VstMidiSysexEvent& src = *(VstMidiSysexEvent*)e; toAdd.type = Event::kDataEvent; toAdd.data.type = DataEvent::kMidiSysEx; toAdd.data.size = src.dumpBytes; toAdd.data.bytes = (uint8*)src.sysexDump; mInputEvents->addEvent (toAdd); } } return 0; } //----------------------------------------------------------------------------- inline void Vst2Wrapper::processOutputEvents () { if (mVst2OutputEvents && mOutputEvents && mOutputEvents->getEventCount () > 0) { mVst2OutputEvents->flush (); Event e = {0}; for (int32 i = 0, total = mOutputEvents->getEventCount (); i < total; i++) { if (mOutputEvents->getEvent (i, e) != kResultOk) break; //---SysExclusif---------------- if (e.type == Event::kDataEvent && e.data.type == DataEvent::kMidiSysEx) { VstMidiSysexEvent sysexEvent = {0}; sysexEvent.deltaFrames = e.sampleOffset; sysexEvent.dumpBytes = e.data.size; sysexEvent.sysexDump = (char*)e.data.bytes; if (!mVst2OutputEvents->add (sysexEvent)) break; } else { VstMidiEvent midiEvent = {0}; midiEvent.deltaFrames = e.sampleOffset; if (e.flags & Event::kIsLive) midiEvent.flags = kVstMidiEventIsRealtime; char* midiData = midiEvent.midiData; switch (e.type) { //--- --------------------- case Event::kNoteOnEvent: midiData[0] = (char)(kNoteOn | (e.noteOn.channel & kChannelMask)); midiData[1] = (char)(e.noteOn.pitch & kDataMask); midiData[2] = (char)((int32) (e.noteOn.velocity * 127.f + 0.4999999f) & kDataMask); if (midiData[2] == 0) // zero velocity => note off midiData[0] = (char)(kNoteOff | (e.noteOn.channel & kChannelMask)); midiEvent.detune = (char)e.noteOn.tuning; midiEvent.noteLength = e.noteOn.length; break; //--- --------------------- case Event::kNoteOffEvent: midiData[0] = (char)(kNoteOff | (e.noteOff.channel & kChannelMask)); midiData[1] = (char)(e.noteOff.pitch & kDataMask); midiData[2] = midiEvent.noteOffVelocity = (char)((int32) (e.noteOff.velocity * 127.f + 0.4999999f) & kDataMask); break; break; } if (!mVst2OutputEvents->add (midiEvent)) break; } } mOutputEvents->clear (); sendVstEventsToHost (*mVst2OutputEvents); } } //----------------------------------------------------------------------------- void Vst2Wrapper::updateProcessLevel () { auto currentLevel = getCurrentProcessLevel (); if (mCurrentProcessLevel != currentLevel) { mCurrentProcessLevel = currentLevel; if (mCurrentProcessLevel == kVstProcessLevelOffline) mVst3processMode = kOffline; else mVst3processMode = kRealtime; bool callStartStop = mProcessing; if (callStartStop) stopProcess (); setupProcessing (); if (callStartStop) startProcess (); } } //----------------------------------------------------------------------------- void Vst2Wrapper::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) { updateProcessLevel (); _processReplacing (inputs, outputs, sampleFrames); } //----------------------------------------------------------------------------- void Vst2Wrapper::processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames) { updateProcessLevel (); _processDoubleReplacing (inputs, outputs, sampleFrames); } //----------------------------------------------------------------------------- // static //----------------------------------------------------------------------------- AudioEffect* Vst2Wrapper::create (IPluginFactory* factory, const TUID vst3ComponentID, VstInt32 vst2ID, audioMasterCallback audioMaster) { if (!factory) return nullptr; BaseWrapper::SVST3Config config; config.factory = factory; config.processor = nullptr; // init the module the first time if (_InitModule () == false) return nullptr; FReleaser factoryReleaser (factory); factory->createInstance (vst3ComponentID, IAudioProcessor::iid, (void**)&config.processor); if (!config.processor) { _DeinitModule (); return nullptr; } config.controller = nullptr; if (config.processor->queryInterface (IEditController::iid, (void**)&config.controller) != kResultTrue) { FUnknownPtr component (config.processor); if (component) { TUID editorCID; if (component->getControllerClassId (editorCID) == kResultTrue) { factory->createInstance (editorCID, IEditController::iid, (void**)&config.controller); } } } config.vst3ComponentID = FUID::fromTUID (vst3ComponentID); auto* wrapper = new Vst2Wrapper (config, audioMaster, vst2ID); FUnknownPtr factory2 (factory); if (factory2) { PFactoryInfo factoryInfo; if (factory2->getFactoryInfo (&factoryInfo) == kResultTrue) wrapper->setVendorName (factoryInfo.vendor); for (int32 i = 0; i < factory2->countClasses (); i++) { Steinberg::PClassInfo2 classInfo2; if (factory2->getClassInfo2 (i, &classInfo2) == Steinberg::kResultTrue) { if (memcmp (classInfo2.cid, vst3ComponentID, sizeof (TUID)) == 0) { wrapper->setSubCategories (classInfo2.subCategories); wrapper->setEffectName (classInfo2.name); wrapper->setEffectVersion (classInfo2.version); if (classInfo2.vendor[0] != 0) wrapper->setVendorName (classInfo2.vendor); break; } } } } if (wrapper->init () == false) { wrapper->release (); // includes _DeinitModule() return nullptr; } return wrapper; } //----------------------------------------------------------------------------- tresult PLUGIN_API Vst2Wrapper::getName (String128 name) { char8 productString[128]; if (getHostProductString (productString)) { String str (productString); str.copyTo16 (name, 0, 127); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- // IComponentHandler //----------------------------------------------------------------------------- tresult PLUGIN_API Vst2Wrapper::beginEdit (ParamID tag) { std::map::const_iterator iter = mParamIndexMap.find (tag); if (iter != mParamIndexMap.end ()) AudioEffectX::beginEdit ((*iter).second); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API Vst2Wrapper::performEdit (ParamID tag, ParamValue valueNormalized) { std::map::const_iterator iter = mParamIndexMap.find (tag); if (iter != mParamIndexMap.end () && audioMaster) audioMaster (&cEffect, audioMasterAutomate, (*iter).second, 0, nullptr, (float)valueNormalized); // value is in opt mInputTransfer.addChange (tag, valueNormalized, 0); return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API Vst2Wrapper::endEdit (ParamID tag) { std::map::const_iterator iter = mParamIndexMap.find (tag); if (iter != mParamIndexMap.end ()) AudioEffectX::endEdit ((*iter).second); return kResultTrue; } //----------------------------------------------------------------------------- void Vst2Wrapper::_ioChanged () { BaseWrapper::_ioChanged (); ioChanged (); } //----------------------------------------------------------------------------- void Vst2Wrapper::_updateDisplay () { BaseWrapper::_updateDisplay (); updateDisplay (); } //----------------------------------------------------------------------------- void Vst2Wrapper::_setNumInputs (uint32 inputs) { BaseWrapper::_setNumInputs (inputs); setNumInputs (static_cast (inputs)); } //----------------------------------------------------------------------------- void Vst2Wrapper::_setNumOutputs (uint32 outputs) { BaseWrapper::_setNumOutputs (outputs); setNumOutputs (static_cast (outputs)); } //----------------------------------------------------------------------------- bool Vst2Wrapper::_sizeWindow (int32 width, int32 height) { return sizeWindow (width, height); } //----------------------------------------------------------------------------- } // namespace Vst } // namespace Steinberg //----------------------------------------------------------------------------- extern "C" { //----------------------------------------------------------------------------- /** Prototype of the export function main */ //----------------------------------------------------------------------------- SMTG_EXPORT_SYMBOL AEffect* VSTPluginMain (audioMasterCallback audioMaster) { // Get VST Version of the host if (!audioMaster (nullptr, audioMasterVersion, 0, 0, nullptr, 0)) return nullptr; // old version // Create the AudioEffect AudioEffect* effect = createEffectInstance (audioMaster); if (!effect) return nullptr; // Return the VST AEffect structure return effect->getAeffect (); } //----------------------------------------------------------------------------- // support for old hosts not looking for VSTPluginMain #if (TARGET_API_MAC_CARBON && __ppc__) SMTG_EXPORT_SYMBOL AEffect* main_macho (audioMasterCallback audioMaster) { return VSTPluginMain (audioMaster); } #elif WIN32 SMTG_EXPORT_SYMBOL AEffect* MAIN (audioMasterCallback audioMaster) { return VSTPluginMain (audioMaster); } #elif BEOS SMTG_EXPORT_SYMBOL AEffect* main_plugin (audioMasterCallback audioMaster) { return VSTPluginMain (audioMaster); } #endif } // extern "C" //----------------------------------------------------------------------------- /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/vst2wrapper/vst2wrapper.h000066400000000000000000000222201461511344300234310ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vst2wrapper/vst2wrapper.h // Created by : Steinberg, 01/2009 // Description : VST 3 -> VST 2 Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "docvst2.h" /// \cond ignore #include "public.sdk/source/vst/basewrapper/basewrapper.h" #include "public.sdk/source/vst2.x/audioeffectx.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { class Vst2MidiEventQueue; //------------------------------------------------------------------------ class Vst2Wrapper : public BaseWrapper, public ::AudioEffectX, public IVst3ToVst2Wrapper { public: // will owned factory static AudioEffect* create (IPluginFactory* factory, const TUID vst3ComponentID, VstInt32 vst2ID, audioMasterCallback audioMaster); Vst2Wrapper (BaseWrapper::SVST3Config& config, audioMasterCallback audioMaster, VstInt32 vst2ID); virtual ~Vst2Wrapper (); //--- ------------------------------------------------------ //--- BaseWrapper ------------------------------------------ bool init () SMTG_OVERRIDE; void _canDoubleReplacing (bool val) SMTG_OVERRIDE; void _setInitialDelay (uint32 delay) SMTG_OVERRIDE; void _noTail (bool val) SMTG_OVERRIDE; void setupProcessTimeInfo () SMTG_OVERRIDE; void setupParameters () SMTG_OVERRIDE; void setupBuses () SMTG_OVERRIDE; void _ioChanged () SMTG_OVERRIDE; void _updateDisplay () SMTG_OVERRIDE; void _setNumInputs (uint32 inputs) SMTG_OVERRIDE; void _setNumOutputs (uint32 outputs) SMTG_OVERRIDE; bool _sizeWindow (int32 width, int32 height) SMTG_OVERRIDE; //--- --------------------------------------------------------------------- // VST 3 Interfaces ------------------------------------------------------ // IComponentHandler tresult PLUGIN_API beginEdit (ParamID tag) SMTG_OVERRIDE; tresult PLUGIN_API performEdit (ParamID tag, ParamValue valueNormalized) SMTG_OVERRIDE; tresult PLUGIN_API endEdit (ParamID tag) SMTG_OVERRIDE; // IHostApplication tresult PLUGIN_API getName (String128 name) SMTG_OVERRIDE; //--- --------------------------------------------------------------------- // VST 2 AudioEffectX overrides ----------------------------------------------- void suspend () SMTG_OVERRIDE; // Called when plug-in is switched to off void resume () SMTG_OVERRIDE; // Called when plug-in is switched to on VstInt32 startProcess () SMTG_OVERRIDE; VstInt32 stopProcess () SMTG_OVERRIDE; // Called when the sample rate changes (always in a suspend state) void setSampleRate (float newSamplerate) SMTG_OVERRIDE; // Called when the maximum block size changes // (always in a suspend state). Note that the // sampleFrames in Process Calls could be // smaller than this block size, but NOT bigger. void setBlockSize (VstInt32 newBlockSize) SMTG_OVERRIDE; float getParameter (VstInt32 index) SMTG_OVERRIDE; void setParameter (VstInt32 index, float value) SMTG_OVERRIDE; void setProgram (VstInt32 program) SMTG_OVERRIDE; void setProgramName (char* name) SMTG_OVERRIDE; void getProgramName (char* name) SMTG_OVERRIDE; bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text) SMTG_OVERRIDE; void getParameterLabel (VstInt32 index, char* label) SMTG_OVERRIDE; void getParameterDisplay (VstInt32 index, char* text) SMTG_OVERRIDE; void getParameterName (VstInt32 index, char* text) SMTG_OVERRIDE; bool canParameterBeAutomated (VstInt32 index) SMTG_OVERRIDE; bool string2parameter (VstInt32 index, char* text) SMTG_OVERRIDE; bool getParameterProperties (VstInt32 index, VstParameterProperties* p) SMTG_OVERRIDE; VstInt32 getChunk (void** data, bool isPreset = false) SMTG_OVERRIDE; VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset = false) SMTG_OVERRIDE; bool getInputProperties (VstInt32 index, VstPinProperties* properties) SMTG_OVERRIDE; bool getOutputProperties (VstInt32 index, VstPinProperties* properties) SMTG_OVERRIDE; bool setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput) SMTG_OVERRIDE; bool getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput) SMTG_OVERRIDE; bool setBypass (bool onOff) SMTG_OVERRIDE; bool setProcessPrecision (VstInt32 precision) SMTG_OVERRIDE; VstInt32 getNumMidiInputChannels () SMTG_OVERRIDE; VstInt32 getNumMidiOutputChannels () SMTG_OVERRIDE; VstInt32 getGetTailSize () SMTG_OVERRIDE; bool getEffectName (char* name) SMTG_OVERRIDE; bool getVendorString (char* text) SMTG_OVERRIDE; VstInt32 getVendorVersion () SMTG_OVERRIDE; VstIntPtr vendorSpecific (VstInt32 lArg, VstIntPtr lArg2, void* ptrArg, float floatArg) SMTG_OVERRIDE; VstPlugCategory getPlugCategory () SMTG_OVERRIDE; VstInt32 canDo (char* text) SMTG_OVERRIDE; VstInt32 getMidiProgramName (VstInt32 channel, MidiProgramName* midiProgramName) SMTG_OVERRIDE; VstInt32 getCurrentMidiProgram (VstInt32 channel, MidiProgramName* currentProgram) SMTG_OVERRIDE; VstInt32 getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* category) SMTG_OVERRIDE; bool hasMidiProgramsChanged (VstInt32 channel) SMTG_OVERRIDE; bool getMidiKeyName (VstInt32 channel, MidiKeyName* keyName) SMTG_OVERRIDE; // finally process... void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) SMTG_OVERRIDE; void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames) SMTG_OVERRIDE; VstInt32 processEvents (VstEvents* events) SMTG_OVERRIDE; bool getPinProperties (BusDirection dir, VstInt32 pinIndex, VstPinProperties* properties); bool pinIndexToBusChannel (BusDirection dir, VstInt32 pinIndex, int32& busIndex, int32& busChannel); //--- ------------------------------------------------------ DEFINE_INTERFACES DEF_INTERFACE (Vst::IVst3ToVst2Wrapper) END_DEFINE_INTERFACES (BaseWrapper) REFCOUNT_METHODS (BaseWrapper) static VstInt32 vst3ToVst2SpeakerArr (SpeakerArrangement vst3Arr); static SpeakerArrangement vst2ToVst3SpeakerArr (VstInt32 vst2Arr); static VstInt32 vst3ToVst2Speaker (Speaker vst3Speaker); static void setupVst2Arrangement (VstSpeakerArrangement*& vst2arr, Vst::SpeakerArrangement vst3Arrangement); //------------------------------------------------------------------------ protected: VstSpeakerArrangement* mVst2InputArrangement {nullptr}; VstSpeakerArrangement* mVst2OutputArrangement {nullptr}; Vst2MidiEventQueue* mVst2OutputEvents {nullptr}; VstInt32 mCurrentProcessLevel {kVstProcessLevelRealtime}; void updateProcessLevel (); bool setupMidiProgram (int32 midiChannel, ProgramListID programListId, MidiProgramName& midiProgramName); int32 lookupProgramCategory (int32 midiChannel, String128 instrumentAttribute); struct ProgramCategory { MidiProgramCategory vst2Category; String128 vst3InstrumentAttribute; }; std::vector> mProgramCategories; void setupProgramCategories (); static uint32 makeCategoriesRecursive (std::vector& channelCategories, String128 vst3Category); void processOutputEvents () SMTG_OVERRIDE; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg /** Must be implemented externally. */ extern ::AudioEffect* createEffectInstance (audioMasterCallback audioMaster); /// \endcond vst3sdk-3.7.10.14+~4.13.3/source/vst/vst2wrapper/vst2wrapper.sdk.cpp000066400000000000000000000044771461511344300245620ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vst2wrapper/vst2wrapper.sdk.cpp // Created by : Steinberg, 01/2009 // Description : VST 3 -> VST 2 Wrapper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/basewrapper/basewrapper.sdk.cpp" #include "public.sdk/source/vst/vst2wrapper/vst2wrapper.cpp" #include "public.sdk/source/vst2.x/audioeffect.cpp" #include "public.sdk/source/vst2.x/audioeffectx.cpp" vst3sdk-3.7.10.14+~4.13.3/source/vst/vstaudioeffect.cpp000066400000000000000000000174441461511344300222150ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstaudioeffect.cpp // Created by : Steinberg, 04/2005 // Description : Basic Audio Effect Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstaudioeffect.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // AudioEffect //------------------------------------------------------------------------ AudioEffect::AudioEffect () { processSetup.maxSamplesPerBlock = 1024; processSetup.processMode = Vst::kRealtime; processSetup.sampleRate = 44100.0; processSetup.symbolicSampleSize = Vst::kSample32; } //------------------------------------------------------------------------ AudioBus* AudioEffect::addAudioInput (const TChar* name, SpeakerArrangement arr, BusType busType, int32 flags) { auto* newBus = new AudioBus (name, busType, flags, arr); audioInputs.push_back (IPtr (newBus, false)); return newBus; } //------------------------------------------------------------------------ AudioBus* AudioEffect::addAudioOutput (const TChar* name, SpeakerArrangement arr, BusType busType, int32 flags) { auto* newBus = new AudioBus (name, busType, flags, arr); audioOutputs.push_back (IPtr (newBus, false)); return newBus; } //------------------------------------------------------------------------ AudioBus* AudioEffect::getAudioInput (int32 index) { AudioBus* bus = nullptr; if (index < static_cast (audioInputs.size ())) bus = FCast (audioInputs.at (index)); return bus; } //------------------------------------------------------------------------ AudioBus* AudioEffect::getAudioOutput (int32 index) { AudioBus* bus = nullptr; if (index < static_cast (audioOutputs.size ())) bus = FCast (audioOutputs.at (index)); return bus; } //------------------------------------------------------------------------ EventBus* AudioEffect::addEventInput (const TChar* name, int32 channels, BusType busType, int32 flags) { auto* newBus = new EventBus (name, busType, flags, channels); eventInputs.push_back (IPtr (newBus, false)); return newBus; } //------------------------------------------------------------------------ EventBus* AudioEffect::addEventOutput (const TChar* name, int32 channels, BusType busType, int32 flags) { auto* newBus = new EventBus (name, busType, flags, channels); eventOutputs.push_back (IPtr (newBus, false)); return newBus; } //------------------------------------------------------------------------ EventBus* AudioEffect::getEventInput (int32 index) { EventBus* bus = nullptr; if (index < static_cast (eventInputs.size ())) bus = FCast (eventInputs.at (index)); return bus; } //------------------------------------------------------------------------ EventBus* AudioEffect::getEventOutput (int32 index) { EventBus* bus = nullptr; if (index < static_cast (eventOutputs.size ())) bus = FCast (eventOutputs.at (index)); return bus; } //------------------------------------------------------------------------ tresult PLUGIN_API AudioEffect::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { if (numIns < 0 || numOuts < 0) return kInvalidArgument; if (numIns > static_cast (audioInputs.size ()) || numOuts > static_cast (audioOutputs.size ())) return kResultFalse; for (int32 index = 0; index < static_cast (audioInputs.size ()); ++index) { if (index >= numIns) break; FCast (audioInputs[index].get ())->setArrangement (inputs[index]); } for (int32 index = 0; index < static_cast (audioOutputs.size ()); ++index) { if (index >= numOuts) break; FCast (audioOutputs[index].get ())->setArrangement (outputs[index]); } return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API AudioEffect::getBusArrangement (BusDirection dir, int32 busIndex, SpeakerArrangement& arr) { BusList* busList = getBusList (kAudio, dir); if (!busList || busIndex < 0 || static_cast (busList->size ()) <= busIndex) return kInvalidArgument; if (auto* audioBus = FCast (busList->at (busIndex))) { arr = audioBus->getArrangement (); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API AudioEffect::setupProcessing (ProcessSetup& newSetup) { processSetup.maxSamplesPerBlock = newSetup.maxSamplesPerBlock; processSetup.processMode = newSetup.processMode; processSetup.sampleRate = newSetup.sampleRate; if (canProcessSampleSize (newSetup.symbolicSampleSize) != kResultTrue) return kResultFalse; processSetup.symbolicSampleSize = newSetup.symbolicSampleSize; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API AudioEffect::setProcessing (TBool /*state*/) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API AudioEffect::canProcessSampleSize (int32 symbolicSampleSize) { return symbolicSampleSize == kSample32 ? kResultTrue : kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API AudioEffect::process (ProcessData& /*data*/) { return kNotImplemented; } //------------------------------------------------------------------------ uint32 PLUGIN_API AudioEffect::getProcessContextRequirements () { return processContextRequirements.flags; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstaudioeffect.h000066400000000000000000000133251461511344300216540ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstaudioeffect.h // Created by : Steinberg, 04/2005 // Description : Basic Audio Effect Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstbus.h" #include "public.sdk/source/vst/vstcomponent.h" #include "public.sdk/source/vst/utility/processcontextrequirements.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Default implementation for a VST 3 audio effect. \ingroup vstClasses Can be used as base class for a VST 3 effect implementation. */ class AudioEffect : public Component, public IAudioProcessor, public IProcessContextRequirements { public: //------------------------------------------------------------------------ /** Constructor */ AudioEffect (); //---Internal Methods----------- /** Creates and adds a new Audio input bus with a given speaker arrangement, busType (kMain or * kAux). */ AudioBus* addAudioInput (const TChar* name, SpeakerArrangement arr, BusType busType = kMain, int32 flags = BusInfo::kDefaultActive); /** Creates and adds a new Audio output bus with a given speaker arrangement, busType (kMain or * kAux). */ AudioBus* addAudioOutput (const TChar* name, SpeakerArrangement arr, BusType busType = kMain, int32 flags = BusInfo::kDefaultActive); /** Retrieves an Audio Input Bus by index. */ AudioBus* getAudioInput (int32 index); /** Retrieves an Audio Output Bus by index. */ AudioBus* getAudioOutput (int32 index); /** Creates and adds a new Event input bus with a given speaker arrangement, busType (kMain or * kAux). */ EventBus* addEventInput (const TChar* name, int32 channels = 16, BusType busType = kMain, int32 flags = BusInfo::kDefaultActive); /** Creates and adds a new Event output bus with a given speaker arrangement, busType (kMain or * kAux). */ EventBus* addEventOutput (const TChar* name, int32 channels = 16, BusType busType = kMain, int32 flags = BusInfo::kDefaultActive); /** Retrieves an Event Input Bus by index. */ EventBus* getEventInput (int32 index); /** Retrieves an Event Output Bus by index. */ EventBus* getEventOutput (int32 index); //---from IAudioProcessor------- tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API getBusArrangement (BusDirection dir, int32 busIndex, SpeakerArrangement& arr) SMTG_OVERRIDE; tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; uint32 PLUGIN_API getLatencySamples () SMTG_OVERRIDE { return 0; } tresult PLUGIN_API setupProcessing (ProcessSetup& setup) SMTG_OVERRIDE; tresult PLUGIN_API setProcessing (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API process (ProcessData& data) SMTG_OVERRIDE; uint32 PLUGIN_API getTailSamples () SMTG_OVERRIDE { return kNoTail; } //---from IProcessContextRequirements------- uint32 PLUGIN_API getProcessContextRequirements () SMTG_OVERRIDE; //---Interface--------- OBJ_METHODS (AudioEffect, Component) DEFINE_INTERFACES DEF_INTERFACE (IAudioProcessor) DEF_INTERFACE (IProcessContextRequirements) END_DEFINE_INTERFACES (Component) REFCOUNT_METHODS (Component) //------------------------------------------------------------------------ protected: ProcessSetup processSetup; ProcessContextRequirements processContextRequirements; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstaudioprocessoralgo.h000066400000000000000000000305371461511344300233060ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstaudioprocessoralgo.h // Created by : Steinberg, 04/2015 // Description : Helper algo for AudioBusBuffers // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include #include namespace Steinberg { namespace Vst { //---helpers--------- /** Returns the current channelBuffers used (depending of symbolicSampleSize). */ inline void** getChannelBuffersPointer (const ProcessSetup& processSetup, const AudioBusBuffers& bufs) { if (processSetup.symbolicSampleSize == kSample32) return (void**)bufs.channelBuffers32; return (void**)bufs.channelBuffers64; } /** Returns the size in bytes of numSamples for one channel depending of symbolicSampleSize.*/ inline uint32 getSampleFramesSizeInBytes (const ProcessSetup& processSetup, int32 numSamples) { if (processSetup.symbolicSampleSize == kSample32) return numSamples * sizeof (Sample32); return numSamples * sizeof (Sample64); } /** return the bit-mask of channels for the given number of channel * for example: * numChannels = 1 => 0b0001 (binar) = 0x01 = 1 (decimal) * numChannels = 2 => 0b0011 (binar) = 0x03 = 3 (decimal) * numChannels = 6 => 0b0011 1111 (binar) = 0x3F = 63 (decimal) */ inline uint64 getChannelMask (int32 numChannels) { if (numChannels >= 64) return kMaxInt64u; return ((uint64)1 << numChannels) - 1; } namespace Algo { //------------------------------------------------------------------------ template inline void foreach (AudioBusBuffers* audioBusBuffers, int32 busCount, const T& func) { if (!audioBusBuffers) return; for (int32 busIndex = 0; busIndex < busCount; ++busIndex) { func (audioBusBuffers[busIndex]); } } //------------------------------------------------------------------------ template inline void foreach32 (AudioBusBuffers& audioBuffer, const T& func) { for (int32 channelIndex = 0; channelIndex < audioBuffer.numChannels; ++channelIndex) { if (!audioBuffer.channelBuffers32[channelIndex]) return; func (audioBuffer.channelBuffers32[channelIndex]); } } //------------------------------------------------------------------------ template inline void foreach64 (AudioBusBuffers& audioBuffer, const T& func) { for (int32 channelIndex = 0; channelIndex < audioBuffer.numChannels; ++channelIndex) { if (!audioBuffer.channelBuffers64[channelIndex]) return; func (audioBuffer.channelBuffers64[channelIndex]); } } //------------------------------------------------------------------------ template inline void foreach32 (AudioBusBuffers& buffer1, AudioBusBuffers& buffer2, const T& func) { int32 numChannels = std::min (buffer1.numChannels, buffer2.numChannels); for (int32 channelIndex = 0; channelIndex < numChannels; ++channelIndex) { func (buffer1.channelBuffers32[channelIndex], buffer2.channelBuffers32[channelIndex], channelIndex); } } //------------------------------------------------------------------------ template inline void foreach64 (AudioBusBuffers& buffer1, AudioBusBuffers& buffer2, const T& func) { int32 numChannels = std::min (buffer1.numChannels, buffer2.numChannels); for (int32 channelIndex = 0; channelIndex < numChannels; ++channelIndex) { func (buffer1.channelBuffers64[channelIndex], buffer2.channelBuffers64[channelIndex], channelIndex); } } //------------------------------------------------------------------------ inline void copy32 (AudioBusBuffers* src, AudioBusBuffers* dest, int32 sliceSize, int32 startIndex) { if (!src || !dest) return; int32 numChannels = std::min (src->numChannels, dest->numChannels); size_t numBytes = sliceSize * sizeof (Sample32); for (int32 chIdx = 0; chIdx < numChannels; ++chIdx) { memcpy (&dest->channelBuffers32[chIdx][startIndex], src->channelBuffers32[chIdx], numBytes); } } //------------------------------------------------------------------------ inline void copy64 (AudioBusBuffers* src, AudioBusBuffers* dest, int32 sliceSize, int32 startIndex) { if (!src || !dest) return; int32 numChannels = std::min (src->numChannels, dest->numChannels); size_t numBytes = sliceSize * sizeof (Sample64); for (int32 chIdx = 0; chIdx < numChannels; ++chIdx) { memcpy (&dest->channelBuffers64[chIdx][startIndex], src->channelBuffers64[chIdx], numBytes); } } //------------------------------------------------------------------------ inline void clear32 (AudioBusBuffers* audioBusBuffers, int32 sampleCount, int32 busCount = 1) { if (!audioBusBuffers) return; const int32 numBytes = sampleCount * sizeof (Sample32); foreach (audioBusBuffers, busCount, [&] (AudioBusBuffers& audioBuffer) { foreach32 (audioBuffer, [&] (Sample32* channelBuffer) { memset (channelBuffer, 0, numBytes); }); }); } //------------------------------------------------------------------------ inline void clear64 (AudioBusBuffers* audioBusBuffers, int32 sampleCount, int32 busCount = 1) { if (!audioBusBuffers) return; const int32 numBytes = sampleCount * sizeof (Sample64); foreach (audioBusBuffers, busCount, [&] (AudioBusBuffers& audioBuffer) { foreach64 (audioBuffer, [&] (Sample64* channelBuffer) { memset (channelBuffer, 0, numBytes); }); }); } //------------------------------------------------------------------------ inline void mix32 (AudioBusBuffers& src, AudioBusBuffers& dest, int32 sampleCount) { foreach32 (src, dest, [&] (Sample32* srcBuffer, Sample32* destBuffer, int32 /*channelIndex*/) { for (int32 sampleIndex = 0; sampleIndex < sampleCount; ++sampleIndex) destBuffer[sampleIndex] += srcBuffer[sampleIndex]; }); } //------------------------------------------------------------------------ inline void mix64 (AudioBusBuffers& src, AudioBusBuffers& dest, int32 sampleCount) { foreach64 (src, dest, [&] (Sample64* srcBuffer, Sample64* destBuffer, int32 /*channelIndex*/) { for (int32 sampleIndex = 0; sampleIndex < sampleCount; ++sampleIndex) destBuffer[sampleIndex] += srcBuffer[sampleIndex]; }); } //------------------------------------------------------------------------ /* Multiply buffer with a constant */ template inline void multiply(T* srcBuffer, T* destBuffer, int32 sampleCount, T factor) { for (int32 sampleIndex = 0; sampleIndex < sampleCount; ++sampleIndex) destBuffer[sampleIndex] = srcBuffer[sampleIndex] * factor; } //------------------------------------------------------------------------ /* Multiply all channels of AudioBusBuffer with a constant */ inline void multiply32 (AudioBusBuffers& src, AudioBusBuffers& dest, int32 sampleCount, float factor) { foreach32 (src, dest, [&](Sample32* srcBuffer, Sample32* destBuffer, int32 /*channelIndex*/) { multiply (srcBuffer, destBuffer, sampleCount, factor); }); } //------------------------------------------------------------------------ /* Multiply all channels of AudioBusBuffer with a constant */ inline void multiply64 (AudioBusBuffers& src, AudioBusBuffers& dest, int32 sampleCount, double factor) { foreach64 (src, dest, [&] (Sample64* srcBuffer, Sample64* destBuffer, int32 /*channelIndex*/) { multiply (srcBuffer, destBuffer, sampleCount, factor); }); } //------------------------------------------------------------------------ inline bool isSilent32 (AudioBusBuffers& audioBuffer, int32 sampleCount, int32 startIndex = 0) { const float epsilon = 1e-10f; // under -200dB... sampleCount += startIndex; for (int32 channelIndex = 0; channelIndex < audioBuffer.numChannels; ++channelIndex) { if (!audioBuffer.channelBuffers32[channelIndex]) return true; for (int32 sampleIndex = startIndex; sampleIndex < sampleCount; ++sampleIndex) { float val = audioBuffer.channelBuffers32[channelIndex][sampleIndex]; if (std::abs (val) > epsilon) return false; } } return true; } //------------------------------------------------------------------------ inline bool isSilent64 (AudioBusBuffers& audioBuffer, int32 sampleCount, int32 startIndex = 0) { const double epsilon = 1e-10f; // under -200dB... sampleCount += startIndex; for (int32 channelIndex = 0; channelIndex < audioBuffer.numChannels; ++channelIndex) { if (!audioBuffer.channelBuffers64[channelIndex]) return true; for (int32 sampleIndex = startIndex; sampleIndex < sampleCount; ++sampleIndex) { double val = audioBuffer.channelBuffers64[channelIndex][sampleIndex]; if (std::abs (val) > epsilon) return false; } } return true; } //------------------------------------------------------------------------ //------------------------------------------------------------------------ template inline void foreach (IEventList* eventList, const T& func) { if (!eventList) return; auto eventCount = eventList->getEventCount (); for (int32 eventIndex = 0; eventIndex < eventCount; ++eventIndex) { Vst::Event event = {}; if (eventList->getEvent (eventIndex, event) != kResultOk) continue; func (event); } } //------------------------------------------------------------------------ template inline void foreach (IParamValueQueue& paramQueue, const T& func) { auto paramId = paramQueue.getParameterId (); auto numPoints = paramQueue.getPointCount (); for (int32 pointIndex = 0; pointIndex < numPoints; ++pointIndex) { int32 sampleOffset = 0; ParamValue value = 0; if (paramQueue.getPoint (pointIndex, sampleOffset, value) != kResultOk) continue; func (paramId, sampleOffset, value); } } //------------------------------------------------------------------------ template inline void foreachLast (IParamValueQueue& paramQueue, const T& func) { auto paramId = paramQueue.getParameterId (); auto numPoints = paramQueue.getPointCount (); int32 sampleOffset = 0; ParamValue value = 0; if (paramQueue.getPoint (numPoints - 1, sampleOffset, value) == kResultOk) func (paramId, sampleOffset, value); } //------------------------------------------------------------------------ template inline void foreach (IParameterChanges* changes, const T& func) { if (!changes) return; auto paramCount = changes->getParameterCount (); for (int32 paramIndex = 0; paramIndex < paramCount; ++paramIndex) { auto paramValueQueue = changes->getParameterData (paramIndex); if (!paramValueQueue) continue; func (*paramValueQueue); } } //------------------------------------------------------------------------ } // namespace Algo } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstbus.cpp000066400000000000000000000101001461511344300205060ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstbus.cpp // Created by : Steinberg, 03/2008 // Description : VST Bus Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstbus.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Bus Implementation //------------------------------------------------------------------------ Bus::Bus (const TChar* _name, BusType _busType, int32 _flags) : name (_name), busType (_busType), flags (_flags), active (false) { } //------------------------------------------------------------------------ bool Bus::getInfo (BusInfo& info) { memset (info.name, 0, sizeof (String128)); name.copy (info.name, 128); info.busType = busType; info.flags = flags; return true; } //------------------------------------------------------------------------ // EventBus Implementation //------------------------------------------------------------------------ EventBus::EventBus (const TChar* name, BusType busType, int32 flags, int32 channelCount) : Bus (name, busType, flags), channelCount (channelCount) { } //------------------------------------------------------------------------ bool EventBus::getInfo (BusInfo& info) { info.channelCount = channelCount; return Bus::getInfo (info); } //------------------------------------------------------------------------ // AudioBus Implementation //------------------------------------------------------------------------ AudioBus::AudioBus (const TChar* name, BusType busType, int32 flags, SpeakerArrangement arr) : Bus (name, busType, flags), speakerArr (arr) { } //------------------------------------------------------------------------ bool AudioBus::getInfo (BusInfo& info) { info.channelCount = SpeakerArr::getChannelCount (speakerArr); return Bus::getInfo (info); } //------------------------------------------------------------------------ // BusList Implementation //------------------------------------------------------------------------ BusList::BusList (MediaType type, BusDirection dir) : type (type), direction (dir) { } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstbus.h000066400000000000000000000137671461511344300202010ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstbus.h // Created by : Steinberg, 03/2008 // Description : VST Bus Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "base/source/fobject.h" #include "pluginterfaces/vst/ivstcomponent.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include #if SMTG_CPP_17 #include #endif #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Basic Bus object. \ingroup vstClasses */ class Bus: public FObject { public: //------------------------------------------------------------------------ /** Constructor. */ Bus (const TChar* name, BusType busType, int32 flags); /** Returns true if the bus is active. */ TBool isActive () const { return active; } /** Activates the bus. */ void setActive (TBool state) { active = state; } #if SMTG_CPP_17 /** Sets a new name for this bus. */ void setName (std::u16string_view newName) { name = newName; } #else /** Sets a new name for this bus. */ void setName (const std::u16string& newName) { name = newName; } #endif /** Sets a new busType for this bus. */ void setBusType (BusType newBusType) { busType = newBusType; } /** Sets a new flags for this bus. */ void setFlags (uint32 newFlags) { flags = newFlags; } /** Gets the BusInfo of this bus. */ virtual bool getInfo (BusInfo&); OBJ_METHODS (Vst::Bus, FObject) //------------------------------------------------------------------------ protected: std::u16string name; ///< name BusType busType; ///< kMain or kAux, see \ref BusTypes int32 flags; ///< flags, see \ref BusInfo::BusFlags TBool active; ///< activation state }; //------------------------------------------------------------------------ /** Description of an Event Bus. \ingroup vstClasses */ class EventBus: public Bus { public: //------------------------------------------------------------------------ /** Constructor of an EventBus. */ EventBus (const TChar* name, BusType busType, int32 flags, int32 channelCount); //---from Bus------- /** Gets the BusInfo associated to this Event bus. */ bool getInfo (BusInfo& info) SMTG_OVERRIDE; OBJ_METHODS (Vst::EventBus, Vst::Bus); //------------------------------------------------------------------------ protected: int32 channelCount; }; //------------------------------------------------------------------------ /** Description of an Audio Bus. \ingroup vstClasses */ class AudioBus: public Bus { public: //------------------------------------------------------------------------ AudioBus (const TChar* name, BusType busType, int32 flags, SpeakerArrangement arr); /** Gets the speaker arrangement defining this Audio bus. */ SpeakerArrangement getArrangement () const { return speakerArr; } /** Sets the speaker arrangement defining this Audio bus. */ void setArrangement (const SpeakerArrangement& arr) { speakerArr = arr; } //---from Bus--------------------- /** Gets the BusInfo associated to this Audio bus. */ bool getInfo (BusInfo& info) SMTG_OVERRIDE; OBJ_METHODS (Vst::AudioBus, Vst::Bus) //------------------------------------------------------------------------ protected: SpeakerArrangement speakerArr; }; //------------------------------------------------------------------------ /** List of Busses. \ingroup vstClasses */ class BusList: public FObject, public std::vector > { public: //------------------------------------------------------------------------ /** Constructor. */ BusList (MediaType type, BusDirection dir); /** Returns the BusList Type. See \ref MediaType */ MediaType getType () const { return type; } /** Returns the BusList direction. See \ref BusDirection */ BusDirection getDirection () const { return direction; } OBJ_METHODS (Vst::BusList, FObject); //------------------------------------------------------------------------ protected: MediaType type; BusDirection direction; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstbypassprocessor.h000066400000000000000000000251471461511344300226440ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstbypassprocessor.h // Created by : Steinberg, 04/2015 // Description : Example of bypass support Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "vstspeakerarray.h" namespace Steinberg { namespace Vst { #define kMaxChannelsSupported 64 //------------------------------------------------------------------------ // AudioBuffer //------------------------------------------------------------------------ template class AudioBuffer { public: //------------------------------------------------------------------------ AudioBuffer () : mBuffer (nullptr), mMaxSamples (0) {} ~AudioBuffer () { resize (0); } //--- --------------------------------------------------------------------- void resize (int32 _maxSamples) { if (mMaxSamples != _maxSamples) { mMaxSamples = _maxSamples; if (mMaxSamples <= 0) { if (mBuffer) { free (mBuffer); mBuffer = nullptr; } } else { if (mBuffer) mBuffer = (T*)realloc (mBuffer, mMaxSamples * sizeof (T)); else mBuffer = (T*)malloc (mMaxSamples * sizeof (T)); } } } //--- --------------------------------------------------------------------- void clear (int32 numSamples) { if (mBuffer) { int32 count = numSamples < mMaxSamples ? numSamples : mMaxSamples; memset (mBuffer, 0, count * sizeof (T)); } } int32 getMaxSamples () const { return mMaxSamples; } void release () { resize (0); } void clearAll () { if (mMaxSamples > 0) clear (mMaxSamples); } operator T* () { return mBuffer; } //------------------------------------------------------------------------ protected: T* mBuffer; int32 mMaxSamples; }; //------------------------------------------------------------------------ template static bool delay (int32 sampleFrames, T* inStream, T* outStream, T* delayBuffer, int32 bufferSize, int32 bufferInPos, int32 bufferOutPos) { // delay inStream int32 remain, inFrames, outFrames; T* bufIn; T* bufOut; remain = sampleFrames; while (remain > 0) { bufIn = delayBuffer + bufferInPos; bufOut = delayBuffer + bufferOutPos; if (bufferInPos > bufferOutPos) inFrames = bufferSize - bufferInPos; else inFrames = bufferOutPos - bufferInPos; outFrames = bufferSize - bufferOutPos; if (inFrames > remain) inFrames = remain; if (outFrames > inFrames) outFrames = inFrames; // order important for in-place processing! memcpy (bufIn, inStream, inFrames * sizeof (T)); // copy to buffer memcpy (outStream, bufOut, outFrames * sizeof (T)); // copy from buffer inStream += inFrames; outStream += outFrames; bufferInPos += inFrames; if (bufferInPos >= bufferSize) bufferInPos -= bufferSize; bufferOutPos += outFrames; if (bufferOutPos >= bufferSize) bufferOutPos -= bufferSize; if (inFrames > outFrames) { // still some output to copy bufOut = delayBuffer + bufferOutPos; outFrames = inFrames - outFrames; memcpy (outStream, bufOut, outFrames * sizeof (T)); // copy from buffer outStream += outFrames; bufferOutPos += outFrames; if (bufferOutPos >= bufferSize) bufferOutPos -= bufferSize; } remain -= inFrames; } return true; } //------------------------------------------------------------------------ // BypassProcessor //------------------------------------------------------------------------ template class BypassProcessor { public: //------------------------------------------------------------------------ BypassProcessor () { for (int32 i = 0; i < kMaxChannelsSupported; i++) { mInputPinLookup[i] = -1; mDelays[i] = nullptr; } } ~BypassProcessor () { reset (); } void setup (IAudioProcessor& audioProcessor, ProcessSetup& processSetup, int32 delaySamples) { reset (); SpeakerArrangement inputArr = 0; bool hasInput = audioProcessor.getBusArrangement (kInput, 0, inputArr) == kResultOk; SpeakerArrangement outputArr = 0; bool hasOutput = audioProcessor.getBusArrangement (kOutput, 0, outputArr) == kResultOk; mMainIOBypass = hasInput && hasOutput; if (!mMainIOBypass) return; // create lookup table (in <- out) and delays... SpeakerArray inArray (inputArr); SpeakerArray outArray (outputArr); // security check (todo) if (outArray.total () >= kMaxChannelsSupported) return; for (int32 i = 0; i < outArray.total (); i++) { if (outArray.at (i) == Vst::kSpeakerL) { if (inArray.total () == 1 && inArray.at (0) == Vst::kSpeakerM) { mInputPinLookup[i] = 0; } else mInputPinLookup[i] = inArray.getSpeakerIndex (outArray.at (i)); } else mInputPinLookup[i] = inArray.getSpeakerIndex (outArray.at (i)); mDelays[i] = new Delay (processSetup.maxSamplesPerBlock, delaySamples); mDelays[i]->flush (); } } void reset () { mMainIOBypass = false; for (int32 i = 0; i < kMaxChannelsSupported; i++) { mInputPinLookup[i] = -1; if (mDelays[i]) { delete mDelays[i]; mDelays[i] = nullptr; } } } bool isActive () const { return mActive; } void setActive (bool state) { if (mActive == state) return; mActive = state; // flush delays when turning on if (state && mMainIOBypass) for (auto &delay : mDelays) { if (!delay) break; delay->flush (); } } void process (ProcessData& data) { // flush if (data.numInputs == 0 || data.numOutputs == 0) return; AudioBusBuffers& inBus = data.inputs[0]; AudioBusBuffers& outBus = data.outputs[0]; if (data.symbolicSampleSize == kSample32) { if (!outBus.channelBuffers32) return; } else if (!outBus.channelBuffers64) return; if (mMainIOBypass) { for (int32 channel = 0; channel < outBus.numChannels; channel++) { T* src = nullptr; bool silent = true; T* dst; if (data.symbolicSampleSize == kSample32) dst = (T*)outBus.channelBuffers32[channel]; else dst = (T*)outBus.channelBuffers64[channel]; if (!dst) continue; int inputChannel = mInputPinLookup[channel]; if (inputChannel != -1) { silent = (inBus.silenceFlags & (1ll << inputChannel)) != 0; if (data.symbolicSampleSize == kSample32) src = (T*)inBus.channelBuffers32[inputChannel]; else src = (T*)inBus.channelBuffers64[inputChannel]; } if (mDelays[channel]->process (src, dst, data.numSamples, silent)) { outBus.silenceFlags |= (1ll << channel); } else { outBus.silenceFlags = 0; } } } // clear all other outputs for (int32 outBusIndex = mMainIOBypass ? 1 : 0; outBusIndex < data.numOutputs; outBusIndex++) { outBus = data.outputs[outBusIndex]; for (int32 channel = 0; channel < outBus.numChannels; channel++) { T* dst; if (data.symbolicSampleSize == kSample32) dst = (T*)outBus.channelBuffers32[channel]; else dst = (T*)outBus.channelBuffers64[channel]; if (dst) { memset (dst, 0, data.numSamples * sizeof (T)); outBus.silenceFlags |= 1ll << channel; } } } } //------------------------------------------------------------------------ protected: int32 mInputPinLookup[kMaxChannelsSupported]; struct Delay { AudioBuffer mDelayBuffer; int32 mDelaySamples; int32 mInPos; int32 mOutPos; Delay (int32 maxSamplesPerBlock, int32 delaySamples) : mDelaySamples (delaySamples), mInPos (-1), mOutPos (-1) { if (mDelaySamples > 0) mDelayBuffer.resize (maxSamplesPerBlock + mDelaySamples); } bool hasDelay () const { return mDelaySamples > 0; } int32 getBufferSamples () const { return mDelayBuffer.getMaxSamples (); } bool process (T* src, T* dst, int32 numSamples, bool silentIn) { bool silentOut = false; if (hasDelay () && src) { int32 bufferSize = getBufferSamples (); delay (numSamples, src, dst, mDelayBuffer, bufferSize, mInPos, mOutPos); // update inPos, outPos mInPos += numSamples; if (mInPos >= bufferSize) mInPos -= bufferSize; mOutPos += numSamples; if (mOutPos >= bufferSize) mOutPos -= bufferSize; } else { if (src != dst) { if (src && !silentIn) { memcpy (dst, src, numSamples * sizeof (T)); } else { memset (dst, 0, numSamples * sizeof (T)); silentOut = true; } } else { silentOut = silentIn; } } return silentOut; } void flush () { mDelayBuffer.clearAll (); mInPos = mOutPos = 0; if (hasDelay ()) mOutPos = getBufferSamples () - mDelaySamples; // must be != inPos } }; Delay* mDelays[kMaxChannelsSupported]; bool mActive {false}; bool mMainIOBypass {false}; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstcomponent.cpp000066400000000000000000000161251461511344300217340ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstcomponent.cpp // Created by : Steinberg, 04/2005 // Description : Basic VST Plug-in Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstcomponent.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Component Implementation //------------------------------------------------------------------------ Component::Component () : audioInputs (kAudio, kInput) , audioOutputs (kAudio, kOutput) , eventInputs (kEvent, kInput) , eventOutputs (kEvent, kOutput) { } //------------------------------------------------------------------------ tresult PLUGIN_API Component::initialize (FUnknown* context) { return ComponentBase::initialize (context); } //------------------------------------------------------------------------ tresult PLUGIN_API Component::terminate () { // remove all busses removeAllBusses (); return ComponentBase::terminate (); } //------------------------------------------------------------------------ BusList* Component::getBusList (MediaType type, BusDirection dir) { if (type == kAudio) return dir == kInput ? &audioInputs : &audioOutputs; if (type == kEvent) return dir == kInput ? &eventInputs : &eventOutputs; return nullptr; } //------------------------------------------------------------------------ tresult Component::removeAudioBusses () { audioInputs.clear (); audioOutputs.clear (); return kResultOk; } //------------------------------------------------------------------------ tresult Component::removeEventBusses () { eventInputs.clear (); eventOutputs.clear (); return kResultOk; } //------------------------------------------------------------------------ tresult Component::removeAllBusses () { removeAudioBusses (); removeEventBusses (); return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Component::getControllerClassId (TUID classID) { if (controllerClass.isValid ()) { controllerClass.toTUID (classID); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API Component::setIoMode (IoMode /*mode*/) { return kNotImplemented; } //------------------------------------------------------------------------ int32 PLUGIN_API Component::getBusCount (MediaType type, BusDirection dir) { BusList* busList = getBusList (type, dir); return busList ? static_cast (busList->size ()) : 0; } //------------------------------------------------------------------------ tresult PLUGIN_API Component::getBusInfo (MediaType type, BusDirection dir, int32 index, BusInfo& info) { if (index < 0) return kInvalidArgument; BusList* busList = getBusList (type, dir); if (busList == nullptr) return kInvalidArgument; if (index >= static_cast (busList->size ())) return kInvalidArgument; Bus* bus = busList->at (index); info.mediaType = type; info.direction = dir; if (bus->getInfo (info)) return kResultTrue; return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API Component::getRoutingInfo (RoutingInfo& /*inInfo*/, RoutingInfo& /*outInfo*/) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API Component::activateBus (MediaType type, BusDirection dir, int32 index, TBool state) { if (index < 0) return kInvalidArgument; BusList* busList = getBusList (type, dir); if (busList == nullptr) return kInvalidArgument; if (index >= static_cast (busList->size ())) return kInvalidArgument; Bus* bus = busList->at (index); bus->setActive (state); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API Component::setActive (TBool /*state*/) { return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API Component::setState (IBStream* /*state*/) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API Component::getState (IBStream* /*state*/) { return kNotImplemented; } //------------------------------------------------------------------------ tresult Component::renameBus (MediaType type, BusDirection dir, int32 index, const String128 newName) { if (index < 0) return kInvalidArgument; BusList* busList = getBusList (type, dir); if (busList == nullptr) return kInvalidArgument; if (index >= static_cast (busList->size ())) return kInvalidArgument; Bus* bus = busList->at (index); bus->setName (newName); return kResultTrue; } //------------------------------------------------------------------------ // Helpers Implementation //------------------------------------------------------------------------ tresult getSpeakerChannelIndex (SpeakerArrangement arrangement, uint64 speaker, int32& channel) { channel = SpeakerArr::getSpeakerIndex (speaker, arrangement); return (channel < 0) == true ? kResultFalse : kResultTrue; } } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstcomponent.h000066400000000000000000000123231461511344300213750ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstcomponent.h // Created by : Steinberg, 04/2005 // Description : Basic VST Plug-in Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstcomponentbase.h" #include "public.sdk/source/vst/vstbus.h" #include "pluginterfaces/vst/ivstcomponent.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Default implementation for a VST 3 Component. \ingroup vstClasses Can be used as base class for a VST 3 component implementation. */ class Component : public ComponentBase, public IComponent { public: //------------------------------------------------------------------------ /** Constructor */ Component (); //---Internal Methods------- /** Sets the controller Class ID associated to its component. */ void setControllerClass (const FUID& cid) { controllerClass = cid; } void setControllerClass (const TUID& cid) { controllerClass = FUID::fromTUID (cid); } /** Removes all Audio Busses. */ tresult removeAudioBusses (); /** Removes all Event Busses. */ tresult removeEventBusses (); /** Renames a specific bus. Do not forget to inform the host about this (see \ref * IComponentHandler::restartComponent (kIoTitlesChanged)). */ tresult renameBus (MediaType type, BusDirection dir, int32 index, const String128 newName); //---from IComponent-------- tresult PLUGIN_API getControllerClassId (TUID classID) SMTG_OVERRIDE; tresult PLUGIN_API setIoMode (IoMode mode) SMTG_OVERRIDE; int32 PLUGIN_API getBusCount (MediaType type, BusDirection dir) SMTG_OVERRIDE; tresult PLUGIN_API getBusInfo (MediaType type, BusDirection dir, int32 index, BusInfo& info) SMTG_OVERRIDE; tresult PLUGIN_API getRoutingInfo (RoutingInfo& inInfo, RoutingInfo& outInfo) SMTG_OVERRIDE; tresult PLUGIN_API activateBus (MediaType type, BusDirection dir, int32 index, TBool state) SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; //---from ComponentBase------ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; //---Interface--------- OBJ_METHODS (Component, ComponentBase) DEFINE_INTERFACES DEF_INTERFACE (IComponent) END_DEFINE_INTERFACES (ComponentBase) REFCOUNT_METHODS (ComponentBase) //------------------------------------------------------------------------ protected: FUID controllerClass; BusList audioInputs; BusList audioOutputs; BusList eventInputs; BusList eventOutputs; BusList* getBusList (MediaType type, BusDirection dir); tresult removeAllBusses (); }; //------------------------------------------------------------------------ // some Helper functions.... //------------------------------------------------------------------------ /** Gets the channel index of a given speaker in a arrangement, returns kResultFalse if speaker not * part of the arrangement else returns kResultTrue. */ tresult getSpeakerChannelIndex (SpeakerArrangement arrangement, uint64 speaker, int32& channel); //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstcomponentbase.cpp000066400000000000000000000132171461511344300225660ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstcomponentbase.cpp // Created by : Steinberg, 05/2005 // Description : Base class for VST Component and Edit Controller // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstcomponentbase.h" #include "base/source/fstring.h" namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // ComponentBase Implementation //------------------------------------------------------------------------ ComponentBase::ComponentBase () { } //------------------------------------------------------------------------ ComponentBase::~ComponentBase () { } //------------------------------------------------------------------------ tresult PLUGIN_API ComponentBase::initialize (FUnknown* context) { // check if already initialized if (hostContext) return kResultFalse; hostContext = context; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API ComponentBase::terminate () { // release host interfaces hostContext = nullptr; // in case host did not disconnect us, // release peer now if (peerConnection) { peerConnection->disconnect (this); peerConnection = nullptr; } return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API ComponentBase::connect (IConnectionPoint* other) { if (!other) return kInvalidArgument; // check if already connected if (peerConnection) return kResultFalse; peerConnection = other; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API ComponentBase::disconnect (IConnectionPoint* other) { if (peerConnection && other == peerConnection) { peerConnection = nullptr; return kResultOk; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API ComponentBase::notify (IMessage* message) { if (!message) return kInvalidArgument; if (FIDStringsEqual (message->getMessageID (), "TextMessage")) { TChar string[256] = {0}; if (message->getAttributes ()->getString ("Text", string, sizeof (string)) == kResultOk) { String tmp (string); tmp.toMultiByte (kCP_Utf8); return receiveText (tmp.text8 ()); } } return kResultFalse; } //------------------------------------------------------------------------ IMessage* ComponentBase::allocateMessage () const { FUnknownPtr hostApp (hostContext); if (hostApp) return Vst::allocateMessage (hostApp); return nullptr; } //------------------------------------------------------------------------ tresult ComponentBase::sendMessage (IMessage* message) const { if (message != nullptr && getPeer () != nullptr) return getPeer ()->notify (message); return kResultFalse; } //------------------------------------------------------------------------ tresult ComponentBase::sendTextMessage (const char8* text) const { if (auto msg = owned (allocateMessage ())) { msg->setMessageID ("TextMessage"); String tmp (text, kCP_Utf8); if (tmp.length () >= 256) tmp.remove (255); msg->getAttributes ()->setString ("Text", tmp.text16 ()); return sendMessage (msg); } return kResultFalse; } //------------------------------------------------------------------------ tresult ComponentBase::sendMessageID (const char8* messageID) const { if (auto msg = owned (allocateMessage ())) { msg->setMessageID (messageID); return sendMessage (msg); } return kResultFalse; } //------------------------------------------------------------------------ tresult ComponentBase::receiveText (const char8* /*text*/) { return kResultOk; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstcomponentbase.h000066400000000000000000000112061461511344300222270ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstcomponentbase.h // Created by : Steinberg, 05/2005 // Description : Base class for Component and Edit Controller // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ipluginbase.h" #include "pluginterfaces/vst/ivstmessage.h" #include "pluginterfaces/vst/ivsthostapplication.h" #include "base/source/fobject.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Base class for VST 3 Component and Edit Controller. \ingroup vstClasses */ class ComponentBase: public FObject, public IPluginBase, public IConnectionPoint { public: //------------------------------------------------------------------------ ComponentBase (); ~ComponentBase () override; //--- Internal Methods------ /** Returns the hostContext (set by the host during initialize call). */ FUnknown* getHostContext () const { return hostContext; } /** Returns the peer for the messaging communication (you can only use IConnectionPoint::notify * for communicate between peers, do not try to cast peerConnection. */ IConnectionPoint* getPeer () const { return peerConnection; } /** Allocates a message instance (do not forget to release it). */ IMessage* allocateMessage () const; /** Sends the given message to the peer. */ tresult sendMessage (IMessage* message) const; /** Sends a simple text message to the peer (max 255 characters). Text is interpreted as UTF-8. */ tresult sendTextMessage (const char8* text) const; /** Sends a message with a given ID without any other payload. */ tresult sendMessageID (const char8* messageID) const; /** Receives a simple text message from the peer (max 255 characters). Text is UTF-8 encoded. */ virtual tresult receiveText (const char8* text); //---from IPluginBase------ tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; //---from IConnectionPoint----------- tresult PLUGIN_API connect (IConnectionPoint* other) SMTG_OVERRIDE; tresult PLUGIN_API disconnect (IConnectionPoint* other) SMTG_OVERRIDE; tresult PLUGIN_API notify (IMessage* message) SMTG_OVERRIDE; //---Interface------ OBJ_METHODS (ComponentBase, FObject) DEFINE_INTERFACES DEF_INTERFACE (IPluginBase) DEF_INTERFACE (IConnectionPoint) END_DEFINE_INTERFACES (FObject) REFCOUNT_METHODS (FObject) //------------------------------------------------------------------------ protected: IPtr hostContext; IPtr peerConnection; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vsteditcontroller.cpp000066400000000000000000000531161461511344300227640ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vsteditcontroller.cpp // Created by : Steinberg, 04/2005 // Description : VST Edit Controller Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/vsteditcontroller.h" #include "base/source/updatehandler.h" #include "pluginterfaces/base/ustring.h" #include namespace Steinberg { namespace Vst { KnobMode EditController::hostKnobMode = kCircularMode; //------------------------------------------------------------------------ // EditController Implementation //------------------------------------------------------------------------ EditController::EditController () { } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::initialize (FUnknown* context) { return ComponentBase::initialize (context); } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::terminate () { parameters.removeAll (); componentHandler.reset (); componentHandler2.reset (); return ComponentBase::terminate (); } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::setComponentState (IBStream* /*state*/) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::setState (IBStream* /*state*/) { return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::getState (IBStream* /*state*/) { return kNotImplemented; } //------------------------------------------------------------------------ int32 PLUGIN_API EditController::getParameterCount () { return parameters.getParameterCount (); } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::getParameterInfo (int32 paramIndex, ParameterInfo& info) { if (Parameter* parameter = parameters.getParameterByIndex (paramIndex)) { info = parameter->getInfo (); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) { if (Parameter* parameter = getParameterObject (tag)) { parameter->toString (valueNormalized, string); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) { if (Parameter* parameter = getParameterObject (tag)) { if (parameter->fromString (string, valueNormalized)) { return kResultTrue; } } return kResultFalse; } //------------------------------------------------------------------------ ParamValue PLUGIN_API EditController::normalizedParamToPlain (ParamID tag, ParamValue valueNormalized) { if (Parameter* parameter = getParameterObject (tag)) { return parameter->toPlain (valueNormalized); } return valueNormalized; } //------------------------------------------------------------------------ ParamValue PLUGIN_API EditController::plainParamToNormalized (ParamID tag, ParamValue plainValue) { if (Parameter* parameter = getParameterObject (tag)) { return parameter->toNormalized (plainValue); } return plainValue; } //------------------------------------------------------------------------ ParamValue PLUGIN_API EditController::getParamNormalized (ParamID tag) { if (Parameter* parameter = getParameterObject (tag)) { return parameter->getNormalized (); } return 0.; } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::setParamNormalized (ParamID tag, ParamValue value) { if (Parameter* parameter = getParameterObject (tag)) { parameter->setNormalized (value); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API EditController::setComponentHandler (IComponentHandler* newHandler) { if (componentHandler == newHandler) { return kResultTrue; } componentHandler = newHandler; componentHandler2.reset (); // try to get the extended version if (newHandler) { newHandler->queryInterface (IComponentHandler2::iid, (void**)&componentHandler2); } return kResultTrue; } //------------------------------------------------------------------------ tresult EditController::beginEdit (ParamID tag) { if (componentHandler) { return componentHandler->beginEdit (tag); } return kResultFalse; } //------------------------------------------------------------------------ tresult EditController::performEdit (ParamID tag, ParamValue valueNormalized) { if (componentHandler) { return componentHandler->performEdit (tag, valueNormalized); } return kResultFalse; } //------------------------------------------------------------------------ tresult EditController::endEdit (ParamID tag) { if (componentHandler) { return componentHandler->endEdit (tag); } return kResultFalse; } //------------------------------------------------------------------------ tresult EditController::startGroupEdit () { if (componentHandler2) { return componentHandler2->startGroupEdit (); } return kNotImplemented; } //------------------------------------------------------------------------ tresult EditController::finishGroupEdit () { if (componentHandler2) { return componentHandler2->finishGroupEdit (); } return kNotImplemented; } //------------------------------------------------------------------------ tresult EditController::getParameterInfoByTag (ParamID tag, ParameterInfo& info) { if (Parameter* parameter = getParameterObject (tag)) { info = parameter->getInfo (); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult EditController::setDirty (TBool state) { if (componentHandler2) { return componentHandler2->setDirty (state); } return kNotImplemented; } //------------------------------------------------------------------------ tresult EditController::requestOpenEditor (FIDString name) { if (componentHandler2) { return componentHandler2->requestOpenEditor (name); } return kNotImplemented; } #ifndef NO_PLUGUI //------------------------------------------------------------------------ // EditorView Implementation //------------------------------------------------------------------------ EditorView::EditorView (EditController* _controller, ViewRect* size) : CPluginView (size), controller (_controller) { } //------------------------------------------------------------------------ EditorView::~EditorView () { if (controller) { controller->editorDestroyed (this); controller = nullptr; } } //------------------------------------------------------------------------ void EditorView::attachedToParent () { if (controller) { controller->editorAttached (this); } } //------------------------------------------------------------------------ void EditorView::removedFromParent () { if (controller) { controller->editorRemoved (this); } } #endif // NO_PLUGUI //------------------------------------------------------------------------ // EditControllerEx1 implementation //------------------------------------------------------------------------ EditControllerEx1::EditControllerEx1 () { UpdateHandler::instance (); } //------------------------------------------------------------------------ EditControllerEx1::~EditControllerEx1 () { } //------------------------------------------------------------------------ tresult PLUGIN_API EditControllerEx1::terminate () { units.clear (); for (const auto& programList : programLists) { if (programList) programList->removeDependent (this); } programLists.clear (); programIndexMap.clear (); return EditController::terminate (); } //------------------------------------------------------------------------ bool EditControllerEx1::addUnit (Unit* unit) { units.emplace_back (unit, false); return true; } //------------------------------------------------------------------------ tresult PLUGIN_API EditControllerEx1::getUnitInfo (int32 unitIndex, UnitInfo& info /*out*/) { if (unitIndex < 0 || unitIndex >= static_cast (units.size ())) return kResultFalse; if (Unit* unit = units.at (unitIndex)) { info = unit->getInfo (); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult EditControllerEx1::notifyUnitSelection () { tresult result = kResultFalse; FUnknownPtr unitHandler (componentHandler); if (unitHandler) result = unitHandler->notifyUnitSelection (selectedUnit); return result; } //------------------------------------------------------------------------ bool EditControllerEx1::addProgramList (ProgramList* list) { programIndexMap[list->getID ()] = programLists.size (); programLists.emplace_back (list, false); list->addDependent (this); return true; } //------------------------------------------------------------------------ ProgramList* EditControllerEx1::getProgramList (ProgramListID listId) const { auto it = programIndexMap.find (listId); return it == programIndexMap.end () ? nullptr : programLists[it->second]; } //------------------------------------------------------------------------ tresult EditControllerEx1::notifyProgramListChange (ProgramListID listId, int32 programIndex) { tresult result = kResultFalse; FUnknownPtr unitHandler (componentHandler); if (unitHandler) result = unitHandler->notifyProgramListChange (listId, programIndex); return result; } //------------------------------------------------------------------------ int32 PLUGIN_API EditControllerEx1::getProgramListCount () { return static_cast (programLists.size ()); } //------------------------------------------------------------------------ tresult PLUGIN_API EditControllerEx1::getProgramListInfo (int32 listIndex, ProgramListInfo& info /*out*/) { if (listIndex < 0 || listIndex >= static_cast (programLists.size ())) return kResultFalse; info = programLists[listIndex]->getInfo (); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API EditControllerEx1::getProgramName (ProgramListID listId, int32 programIndex, String128 name /*out*/) { ProgramIndexMap::const_iterator it = programIndexMap.find (listId); if (it != programIndexMap.end ()) { return programLists[it->second]->getProgramName (programIndex, name); } return kResultFalse; } //------------------------------------------------------------------------ tresult EditControllerEx1::setProgramName (ProgramListID listId, int32 programIndex, const String128 name /*in*/) { ProgramIndexMap::const_iterator it = programIndexMap.find (listId); if (it != programIndexMap.end ()) { return programLists[it->second]->setProgramName (programIndex, name); } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API EditControllerEx1::getProgramInfo (ProgramListID listId, int32 programIndex, CString attributeId /*in*/, String128 attributeValue /*out*/) { ProgramIndexMap::const_iterator it = programIndexMap.find (listId); if (it != programIndexMap.end ()) { return programLists[it->second]->getProgramInfo (programIndex, attributeId, attributeValue); } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API EditControllerEx1::hasProgramPitchNames (ProgramListID listId, int32 programIndex) { ProgramIndexMap::const_iterator it = programIndexMap.find (listId); if (it != programIndexMap.end ()) { return programLists[it->second]->hasPitchNames (programIndex); } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API EditControllerEx1::getProgramPitchName (ProgramListID listId, int32 programIndex, int16 midiPitch, String128 name /*out*/) { ProgramIndexMap::const_iterator it = programIndexMap.find (listId); if (it != programIndexMap.end ()) { return programLists[it->second]->getPitchName (programIndex, midiPitch, name); } return kResultFalse; } //------------------------------------------------------------------------ void PLUGIN_API EditControllerEx1::update (FUnknown* changedUnknown, int32 /*message*/) { auto* programList = FCast (changedUnknown); if (programList) { FUnknownPtr unitHandler (componentHandler); if (unitHandler) unitHandler->notifyProgramListChange (programList->getID (), kAllProgramInvalid); } } //------------------------------------------------------------------------ // Unit implementation //------------------------------------------------------------------------ Unit::Unit () { memset (&info, 0, sizeof (UnitInfo)); } //------------------------------------------------------------------------ Unit::Unit (const String128 name, UnitID unitId, UnitID parentUnitId, ProgramListID programListId) { setName (name); info.id = unitId; info.parentUnitId = parentUnitId; info.programListId = programListId; } //------------------------------------------------------------------------ Unit::Unit (const UnitInfo& info) : info (info) { } //------------------------------------------------------------------------ void Unit::setName (const String128 newName) { UString128 (newName).copyTo (info.name, 128); } //------------------------------------------------------------------------ // ProgramList implementation //------------------------------------------------------------------------ ProgramList::ProgramList (const String128 name, ProgramListID listId, UnitID unitId) : unitId (unitId), parameter (nullptr) { UString128 (name).copyTo (info.name, 128); info.id = listId; info.programCount = 0; } //------------------------------------------------------------------------ ProgramList::ProgramList (const ProgramList& programList) : info (programList.info) , unitId (programList.unitId) , programNames (programList.programNames) , parameter (nullptr) { } //------------------------------------------------------------------------ int32 ProgramList::addProgram (const String128 name) { ++info.programCount; programNames.emplace_back (name); programInfos.emplace_back (); return static_cast (programNames.size ()) - 1; } //------------------------------------------------------------------------ bool ProgramList::setProgramInfo (int32 programIndex, CString attributeId, const String128 value) { if (programIndex >= 0 && programIndex < static_cast (programNames.size ())) { programInfos.at (programIndex).insert (std::make_pair (attributeId, value)); return true; } return false; } //------------------------------------------------------------------------ tresult ProgramList::getProgramInfo (int32 programIndex, CString attributeId, String128 value /*out*/) { if (programIndex >= 0 && programIndex < static_cast (programNames.size ())) { StringMap::const_iterator it = programInfos[programIndex].find (attributeId); if (it != programInfos[programIndex].end ()) { if (!it->second.empty ()) { memset (value, 0, sizeof (String128)); it->second.copy (value, 128); return kResultTrue; } } } return kResultFalse; } //------------------------------------------------------------------------ tresult ProgramList::getProgramName (int32 programIndex, String128 name /*out*/) { if (programIndex >= 0 && programIndex < static_cast (programNames.size ())) { memset (name, 0, sizeof (String128)); programNames.at (programIndex).copy (name, 128); return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ tresult ProgramList::setProgramName (int32 programIndex, const String128 name /*in*/) { if (programIndex >= 0 && programIndex < static_cast (programNames.size ())) { programNames.at (programIndex) = name; if (parameter) { static_cast (parameter)->replaceString (programIndex, name); } return kResultTrue; } return kResultFalse; } //------------------------------------------------------------------------ Parameter* ProgramList::getParameter () { if (parameter == nullptr) { auto* listParameter = new StringListParameter ( info.name, info.id, nullptr, ParameterInfo::kCanAutomate | ParameterInfo::kIsList | ParameterInfo::kIsProgramChange, unitId); for (const auto& programName : programNames) { listParameter->appendString (programName.data ()); } parameter = listParameter; } return parameter; } //------------------------------------------------------------------------ // ProgramListWithPitchNames implementation //----------------------------------------------------------------------------- ProgramListWithPitchNames::ProgramListWithPitchNames (const String128 name, ProgramListID listId, UnitID unitId) : ProgramList (name, listId, unitId) { } //----------------------------------------------------------------------------- int32 ProgramListWithPitchNames::addProgram (const String128 name) { int32 index = ProgramList::addProgram (name); if (index >= 0) pitchNames.emplace_back (); return index; } //----------------------------------------------------------------------------- bool ProgramListWithPitchNames::setPitchName (int32 programIndex, int16 pitch, const String128 pitchName) { if (programIndex < 0 || programIndex >= getCount ()) return false; bool nameChanged = true; std::pair res = pitchNames[programIndex].insert (std::make_pair (pitch, pitchName)); if (!res.second) { if (res.first->second == pitchName) nameChanged = false; else res.first->second = pitchName; } if (nameChanged) changed (); return true; } //----------------------------------------------------------------------------- bool ProgramListWithPitchNames::removePitchName (int32 programIndex, int16 pitch) { bool result = false; if (programIndex >= 0 && programIndex < getCount ()) { result = pitchNames.at (programIndex).erase (pitch) != 0; } if (result) changed (); return result; } //----------------------------------------------------------------------------- tresult ProgramListWithPitchNames::hasPitchNames (int32 programIndex) { if (programIndex >= 0 && programIndex < getCount ()) return (pitchNames.at (programIndex).empty () == true) ? kResultFalse : kResultTrue; return kResultFalse; } //----------------------------------------------------------------------------- tresult ProgramListWithPitchNames::getPitchName (int32 programIndex, int16 midiPitch, String128 name /*out*/) { if (programIndex >= 0 && programIndex < getCount ()) { PitchNameMap::const_iterator it = pitchNames[programIndex].find (midiPitch); if (it != pitchNames[programIndex].end ()) { memset (name, 0, sizeof (String128)); it->second.copy (name, 128); return kResultTrue; } } return kResultFalse; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vsteditcontroller.h000066400000000000000000000355071461511344300224350ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vsteditcontroller.h // Created by : Steinberg, 04/2005 // Description : VST Edit Controller Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "public.sdk/source/vst/vstcomponentbase.h" #include "public.sdk/source/vst/vstparameters.h" #include "public.sdk/source/common/pluginview.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstunits.h" #include #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { class EditorView; //------------------------------------------------------------------------ /** Default implementation for a VST 3 edit controller. \ingroup vstClasses Can be used as base class for a specific controller implementation */ class EditController : public ComponentBase, public IEditController, public IEditController2 { public: //------------------------------------------------------------------------ EditController (); //---from IEditController------- tresult PLUGIN_API setComponentState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE; tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE; int32 PLUGIN_API getParameterCount () SMTG_OVERRIDE; tresult PLUGIN_API getParameterInfo (int32 paramIndex, ParameterInfo& info) SMTG_OVERRIDE; tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE; tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized) SMTG_OVERRIDE; ParamValue PLUGIN_API normalizedParamToPlain (ParamID tag, ParamValue valueNormalized) SMTG_OVERRIDE; ParamValue PLUGIN_API plainParamToNormalized (ParamID tag, ParamValue plainValue) SMTG_OVERRIDE; ParamValue PLUGIN_API getParamNormalized (ParamID tag) SMTG_OVERRIDE; tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value) SMTG_OVERRIDE; tresult PLUGIN_API setComponentHandler (IComponentHandler* handler) SMTG_OVERRIDE; IPlugView* PLUGIN_API createView (FIDString /*name*/) SMTG_OVERRIDE {return nullptr;} //---from IEditController2------- tresult PLUGIN_API setKnobMode (KnobMode mode) SMTG_OVERRIDE { hostKnobMode = mode; return kResultTrue; } tresult PLUGIN_API openHelp (TBool /*onlyCheck*/) SMTG_OVERRIDE {return kResultFalse;} tresult PLUGIN_API openAboutBox (TBool /*onlyCheck*/) SMTG_OVERRIDE {return kResultFalse;} //---from ComponentBase--------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; //---Internal Methods------- virtual tresult beginEdit (ParamID tag); ///< to be called before a serie of performEdit virtual tresult performEdit (ParamID tag, ParamValue valueNormalized); ///< will inform the host about the value change virtual tresult endEdit (ParamID tag); ///< to be called after a serie of performEdit virtual tresult startGroupEdit (); ///< calls IComponentHandler2::startGroupEdit() if host supports it virtual tresult finishGroupEdit (); ///< calls IComponentHandler2::finishGroupEdit() if host supports it virtual void editorDestroyed (EditorView* /*editor*/) {} ///< called from EditorView if it was destroyed virtual void editorAttached (EditorView* /*editor*/) {} ///< called from EditorView if it was attached to a parent virtual void editorRemoved (EditorView* /*editor*/) {} ///< called from EditorView if it was removed from a parent static KnobMode getHostKnobMode () { return hostKnobMode; } ///< return host knob mode /** Gets for a given tag the parameter object. */ virtual Parameter* getParameterObject (ParamID tag) { return parameters.getParameter (tag); } /** Gets for a given tag the parameter information. */ virtual tresult getParameterInfoByTag (ParamID tag, ParameterInfo& info); /** Calls IComponentHandler2::setDirty (state) if host supports it. */ virtual tresult setDirty (TBool state); /** Calls IComponentHandler2::requestOpenEditor (name) if host supports it. */ virtual tresult requestOpenEditor (FIDString name = ViewType::kEditor); //---Accessor Methods------- IComponentHandler* getComponentHandler () const { return componentHandler; } //---Interface--------- OBJ_METHODS (EditController, ComponentBase) DEFINE_INTERFACES DEF_INTERFACE (IEditController) DEF_INTERFACE (IEditController2) END_DEFINE_INTERFACES (ComponentBase) REFCOUNT_METHODS (ComponentBase) //------------------------------------------------------------------------ protected: IPtr componentHandler; IPtr componentHandler2; ParameterContainer parameters; static KnobMode hostKnobMode; }; //------------------------------------------------------------------------ /** View related to an edit controller. \ingroup vstClasses */ class EditorView : public CPluginView { public: //------------------------------------------------------------------------ EditorView (EditController* controller, ViewRect* size = nullptr); ~EditorView () override; /** Gets its controller part. */ EditController* getController () const { return controller; } //---from CPluginView------------- void attachedToParent () SMTG_OVERRIDE; void removedFromParent () SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: IPtr controller; }; //------------------------------------------------------------------------ /** Unit element. \ingroup vstClasses */ class Unit : public FObject { public: //------------------------------------------------------------------------ Unit (const String128 name, UnitID unitId, UnitID parentUnitId = kRootUnitId, ProgramListID programListId = kNoProgramListId); Unit (const UnitInfo& unit); /** Returns its info. */ const UnitInfo& getInfo () const { return info; } /** Returns its Unit ID. */ UnitID getID () const { return info.id; } /** Sets a new Unit ID. */ void setID (UnitID newID) { info.id = newID; } /** Returns its Unit Name. */ const TChar* getName () const { return info.name; } /** Sets a new Unit Name. */ void setName (const String128 newName); /** Returns its ProgramList ID. */ ProgramListID getProgramListID () const { return info.programListId; } /** Sets a new ProgramList ID. */ void setProgramListID (ProgramListID newID) { info.programListId = newID; } OBJ_METHODS (Unit, FObject) //------------------------------------------------------------------------ protected: Unit (); UnitInfo info; }; //------------------------------------------------------------------------ /** ProgramList element. \ingroup vstClasses */ class ProgramList : public FObject { public: //------------------------------------------------------------------------ ProgramList (const String128 name, ProgramListID listId, UnitID unitId); ProgramList (const ProgramList& programList); const ProgramListInfo& getInfo () const { return info; } ProgramListID getID () const { return info.id; } const TChar* getName () const { return info.name; } int32 getCount () const { return info.programCount; } virtual tresult getProgramName (int32 programIndex, String128 name /*out*/); virtual tresult setProgramName (int32 programIndex, const String128 name /*in*/); virtual tresult getProgramInfo (int32 programIndex, CString attributeId, String128 value /*out*/); virtual tresult hasPitchNames (int32 programIndex) { (void)programIndex; return kResultFalse; } virtual tresult getPitchName (int32 programIndex, int16 midiPitch, String128 name /*out*/) { (void)programIndex; (void)midiPitch; (void)name; return kResultFalse; } /** Adds a program to the end of the list. returns the index of the program. */ virtual int32 addProgram (const String128 name); /** Sets a program attribute value. */ virtual bool setProgramInfo (int32 programIndex, CString attributeId, const String128 value); /** Creates and returns the program parameter. */ virtual Parameter* getParameter (); OBJ_METHODS (ProgramList, FObject) //------------------------------------------------------------------------ protected: using StringMap = std::map; using StringVector = std::vector; using ProgramInfoVector = std::vector; ProgramListInfo info; UnitID unitId; StringVector programNames; ProgramInfoVector programInfos; Parameter* parameter; }; //------------------------------------------------------------------------ /** ProgramListWithPitchNames element. \ingroup vstClasses */ class ProgramListWithPitchNames : public ProgramList { public: ProgramListWithPitchNames (const String128 name, ProgramListID listId, UnitID unitId); /** Sets a name for the given program index and a given pitch. */ bool setPitchName (int32 programIndex, int16 pitch, const String128 pitchName); /** Removes the PitchName entry for the given program index and a given pitch. Returns true if * it was found and removed. */ bool removePitchName (int32 programIndex, int16 pitch); //---from ProgramList--------- int32 addProgram (const String128 name) SMTG_OVERRIDE; tresult hasPitchNames (int32 programIndex) SMTG_OVERRIDE; tresult getPitchName (int32 programIndex, int16 midiPitch, String128 name /*out*/) SMTG_OVERRIDE; OBJ_METHODS (ProgramListWithPitchNames, ProgramList) protected: using PitchNameMap = std::map; using PitchNamesVector = std::vector; PitchNamesVector pitchNames; }; //------------------------------------------------------------------------ /** Advanced implementation (support IUnitInfo) for a VST 3 edit controller. \ingroup vstClasses - [extends EditController] */ class EditControllerEx1 : public EditController, public IUnitInfo { public: EditControllerEx1 (); ~EditControllerEx1 () override; //---from ComponentBase--------- tresult PLUGIN_API terminate () SMTG_OVERRIDE; /** Adds a given unit. */ bool addUnit (Unit* unit); /** Adds a given program list. */ bool addProgramList (ProgramList* list); /** Returns the ProgramList associated to a given listId. */ ProgramList* getProgramList (ProgramListID listId) const; /** Notifies the host about program list changes. */ tresult notifyProgramListChange (ProgramListID listId, int32 programIndex = kAllProgramInvalid); //---from IUnitInfo------------------ int32 PLUGIN_API getUnitCount () SMTG_OVERRIDE { return static_cast (units.size ()); } tresult PLUGIN_API getUnitInfo (int32 unitIndex, UnitInfo& info /*out*/) SMTG_OVERRIDE; int32 PLUGIN_API getProgramListCount () SMTG_OVERRIDE; tresult PLUGIN_API getProgramListInfo (int32 listIndex, ProgramListInfo& info /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getProgramName (ProgramListID listId, int32 programIndex, String128 name /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getProgramInfo (ProgramListID listId, int32 programIndex, CString attributeId /*in*/, String128 attributeValue /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API hasProgramPitchNames (ProgramListID listId, int32 programIndex) SMTG_OVERRIDE; tresult PLUGIN_API getProgramPitchName (ProgramListID listId, int32 programIndex, int16 midiPitch, String128 name /*out*/) SMTG_OVERRIDE; virtual tresult setProgramName (ProgramListID listId, int32 programIndex, const String128 name /*in*/); // units selection -------------------- UnitID PLUGIN_API getSelectedUnit () SMTG_OVERRIDE { return selectedUnit; } tresult PLUGIN_API selectUnit (UnitID unitId) SMTG_OVERRIDE { selectedUnit = unitId; return kResultTrue; } tresult PLUGIN_API getUnitByBus (MediaType /*type*/, BusDirection /*dir*/, int32 /*busIndex*/, int32 /*channel*/, UnitID& /*unitId*/ /*out*/) SMTG_OVERRIDE { return kResultFalse; } tresult PLUGIN_API setUnitProgramData (int32 /*listOrUnitId*/, int32 /*programIndex*/, IBStream* /*data*/) SMTG_OVERRIDE { return kResultFalse; } /** Notifies the host about the selected Unit. */ virtual tresult notifyUnitSelection (); //---from IDependent------------------ void PLUGIN_API update (FUnknown* changedUnknown, int32 message) SMTG_OVERRIDE; //---Interface--------- OBJ_METHODS (EditControllerEx1, EditController) DEFINE_INTERFACES DEF_INTERFACE (IUnitInfo) END_DEFINE_INTERFACES (EditController) REFCOUNT_METHODS (EditController) protected: using ProgramListVector = std::vector>; using ProgramIndexMap = std::map; using UnitVector = std::vector>; UnitVector units; ProgramListVector programLists; ProgramIndexMap programIndexMap; UnitID selectedUnit {kRootUnitId}; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vsteventshelper.h000066400000000000000000000121341461511344300220770ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vsteventshelper.h // Created by : Steinberg, 11/2018 // Description : common defines // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstevents.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace Helpers { //------------------------------------------------------------------------ /** bound a value between a min and max */ templateinline T boundTo (T minval, T maxval, T x) { if (x < minval) return minval; if (x > maxval) return maxval; return x; } //------------------------------------------------------------------------ /** Initialized a Event */ inline Event& init (Event& event, uint16 type, int32 busIndex = 0, int32 sampleOffset = 0, TQuarterNotes ppqPosition = 0, uint16 flags = 0) { event.busIndex = busIndex; event.sampleOffset = sampleOffset; event.ppqPosition = ppqPosition; event.flags = flags; event.type = type; return event; } //------------------------------------------------------------------------ /** Returns normalized value of a LegacyMIDICCOutEvent value [0, 127] */ inline ParamValue getMIDINormValue (uint8 value) { if (value >= 127) return 1.0; return (ParamValue)value / 127; } //------------------------------------------------------------------------ /** Returns LegacyMIDICCOut value [0, 127] from a normalized value [0., 1.] */ inline int8 getMIDICCOutValue (ParamValue value) { return boundTo (0, 127, (int8)(value * 127 + 0.5)); } //------------------------------------------------------------------------ /** Returns pitchbend value from a PitchBend LegacyMIDICCOut Event */ inline int16 getPitchBendValue (const LegacyMIDICCOutEvent& e) { return ((e.value & 0x7F)| ((e.value2 & 0x7F) << 7)); } //------------------------------------------------------------------------ /** set a normalized pitchbend value to a LegacyMIDICCOut Event */ inline void setPitchBendValue (LegacyMIDICCOutEvent& e, ParamValue value) { int16 tmp = static_cast (value * 0x3FFF); e.value = (tmp & 0x7F); e.value2 = ((tmp >> 7) & 0x7F); } //------------------------------------------------------------------------ /** Returns normalized pitchbend value from a PitchBend LegacyMIDICCOut Event */ inline float getNormPitchBendValue (const LegacyMIDICCOutEvent& e) { float val = (float)getPitchBendValue (e) / (float)0x3FFF; if (val < 0) val = 0; if (val > 1) val = 1; return val; } //------------------------------------------------------------------------ /** Initialized a LegacyMIDICCOutEvent */ inline LegacyMIDICCOutEvent& initLegacyMIDICCOutEvent (Event& event, uint8 controlNumber, uint8 channel = 0, int8 value = 0, int8 value2 = 0) { init (event, Event::kLegacyMIDICCOutEvent); event.midiCCOut.channel = channel; event.midiCCOut.controlNumber = controlNumber; event.midiCCOut.value = value; event.midiCCOut.value2 = value2; return event.midiCCOut; } /*@}*/ //------------------------------------------------------------------------ } // namespace Helpers } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstgui_win32_bundle_support.cpp000066400000000000000000000074031461511344300246640ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstgui_win32_bundle_support.cpp // Created by : Steinberg, 10/2018 // Description : VSTGUI Win32 Bundle Support // //----------------------------------------------------------------------------- // LICENSE // (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstgui_win32_bundle_support.h" #include "vstgui/lib/platform/platform_win32.h" #include "vstgui/lib/platform/win32/win32support.h" #if ((VSTGUI_VERSION_MAJOR == 4) && (VSTGUI_VERSION_MINOR >= 10)) || (VSTGUI_VERSION_MAJOR > 4) #include "vstgui/lib/platform/win32/win32factory.h" #endif #include "vstgui/lib/optional.h" #include //----------------------------------------------------------------------------- namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ static VSTGUI::Optional ascend (std::string& path, char delimiter = '\\') { auto index = path.find_last_of (delimiter); if (index == std::string::npos) return {}; path.erase (index); return VSTGUI::Optional (std::move (path)); } //----------------------------------------------------------------------------- void setupVSTGUIBundleSupport (void* hInstance) { using namespace VSTGUI; WCHAR path[MAX_PATH]; if (SUCCEEDED (GetModuleFileNameW (static_cast (hInstance), path, MAX_PATH))) { UTF8StringHelper helper (path); auto utf8Path = std::string (helper.getUTF8String ()); if (auto p = ascend (utf8Path)) { if (p = ascend (*p)) { *p += "\\Resources"; #if ((VSTGUI_VERSION_MAJOR == 4) && (VSTGUI_VERSION_MINOR >= 10)) || (VSTGUI_VERSION_MAJOR > 4) if (auto winFactory = VSTGUI::getPlatformFactory ().asWin32Factory ()) { winFactory->setResourceBasePath (VSTGUI::UTF8String (*p)); } #else IWin32PlatformFrame::setResourceBasePath (UTF8String (*p)); #endif } } } } //----------------------------------------------------------------------------- } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstgui_win32_bundle_support.h000066400000000000000000000047111461511344300243300ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstgui_win32_bundle_support.h // Created by : Steinberg, 10/2018 // Description : VSTGUI Win32 Bundle Support // //----------------------------------------------------------------------------- // LICENSE // (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once //----------------------------------------------------------------------------- namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- void setupVSTGUIBundleSupport (void* hInstance); //----------------------------------------------------------------------------- } // Vst } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstguieditor.cpp000066400000000000000000000272361461511344300217320ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstguieditor.cpp // Created by : Steinberg, 04/2005 // Description : VSTGUI Editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstguieditor.h" #include "public.sdk/source/main/moduleinit.h" #include "pluginterfaces/base/keycodes.h" #if SMTG_OS_WINDOWS && SMTG_MODULE_IS_BUNDLE #include "vstgui_win32_bundle_support.h" #endif #define VSTGUI_NEEDS_INIT_LIB ((VSTGUI_VERSION_MAJOR == 4 && VSTGUI_VERSION_MINOR > 9) || (VSTGUI_VERSION_MAJOR > 4)) #if VSTGUI_VERSION_MAJOR < 4 #include "vstgui/vstkeycode.h" #endif #if VSTGUI_NEWER_THAN_4_10 #include "vstgui/lib/events.h" #include "vstgui/lib/platform/iplatformframe.h" #endif #include "base/source/fstring.h" #if VSTGUI_NEEDS_INIT_LIB #include "vstgui/lib/vstguiinit.h" static Steinberg::ModuleInitializer InitVSTGUI ([] () { using namespace Steinberg; VSTGUI::init (getPlatformModuleHandle ()); #if SMTG_MODULE_IS_BUNDLE Vst::setupVSTGUIBundleSupport (getPlatformModuleHandle ()); #endif // SMTG_MODULE_IS_BUNDLE }); static Steinberg::ModuleTerminator TermVSTGUI ([] () { VSTGUI::exit (); }); #else #if SMTG_OS_MACOS namespace VSTGUI { void* gBundleRef = nullptr; } #elif SMTG_OS_WINDOWS void* hInstance = nullptr; // VSTGUI hInstance extern void* moduleHandle; #elif SMTG_OS_LINUX extern void* moduleHandle; namespace VSTGUI { void* soHandle = nullptr; } // VSTGUI #endif // SMTG_OS_MACOS //------------------------------------------------------------------------ static Steinberg::ModuleInitializer InitVSTGUIEditor ([] () { using namespace Steinberg; #if SMTG_OS_MACOS || SMTG_OS_IOS VSTGUI::gBundleRef = getPlatformModuleHandle (); #elif SMTG_OS_WINDOWS hInstance = getPlatformModuleHandle (); #if SMTG_MODULE_IS_BUNDLE Vst::setupVSTGUIBundleSupport (hInstance); #endif // SMTG_MODULE_IS_BUNDLE #elif SMTG_OS_LINUX VSTGUI::soHandle = getPlatformModuleHandle (); #endif }); #endif // VSTGUI_NEEDS_INIT_LIB using namespace VSTGUI; namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ VSTGUIEditor::VSTGUIEditor (void* controller, ViewRect* size) : EditorView (static_cast (controller), size) { // create a timer used for idle update: will call notify method timer = new CVSTGUITimer (dynamic_cast (this)); } //------------------------------------------------------------------------ VSTGUIEditor::~VSTGUIEditor () { if (timer) timer->forget (); } //------------------------------------------------------------------------ void VSTGUIEditor::setIdleRate (int32 millisec) { if (timer) timer->setFireTime (millisec); } //------------------------------------------------------------------------ tresult PLUGIN_API VSTGUIEditor::isPlatformTypeSupported (FIDString type) { #if SMTG_OS_WINDOWS if (strcmp (type, kPlatformTypeHWND) == 0) return kResultTrue; #elif SMTG_OS_MACOS #if TARGET_OS_IPHONE if (strcmp (type, kPlatformTypeUIView) == 0) return kResultTrue; #else #if MAC_CARBON if (strcmp (type, kPlatformTypeHIView) == 0) return kResultTrue; #endif #if MAC_COCOA if (strcmp (type, kPlatformTypeNSView) == 0) return kResultTrue; #endif #endif #elif SMTG_OS_LINUX if (strcmp (type, kPlatformTypeX11EmbedWindowID) == 0) return kResultTrue; #endif return kInvalidArgument; } //------------------------------------------------------------------------ tresult PLUGIN_API VSTGUIEditor::attached (void* parent, FIDString type) { #if SMTG_OS_MACOS if (isPlatformTypeSupported (type) != kResultTrue) return kResultFalse; #if MAC_COCOA && MAC_CARBON && !(VSTGUI_VERSION_MAJOR >= 4 && VSTGUI_VERSION_MINOR >= 1) CFrame::setCocoaMode (strcmp (type, kPlatformTypeNSView) == 0); #endif #endif #if VSTGUI_VERSION_MAJOR >= 4 && VSTGUI_VERSION_MINOR >= 1 PlatformType platformType = PlatformType::kDefaultNative; #if SMTG_OS_MACOS #if TARGET_OS_IPHONE if (strcmp (type, kPlatformTypeUIView) == 0) platformType = PlatformType::kUIView; #else #if MAC_CARBON if (strcmp (type, kPlatformTypeHIView) == 0) platformType = PlatformType::kWindowRef; #endif #if MAC_COCOA if (strcmp (type, kPlatformTypeNSView) == 0) platformType = PlatformType::kNSView; #endif #endif #endif // SMTG_OS_MACOS if (open (parent, platformType) == true) #else if (open (parent) == true) #endif { ViewRect vr (0, 0, (int32)frame->getWidth (), (int32)frame->getHeight ()); setRect (vr); if (plugFrame) plugFrame->resizeView (this, &vr); if (timer) timer->start (); } return EditorView::attached (parent, type); } //------------------------------------------------------------------------ tresult PLUGIN_API VSTGUIEditor::removed () { if (timer) timer->stop (); close (); return EditorView::removed (); } //------------------------------------------------------------------------ tresult PLUGIN_API VSTGUIEditor::onSize (ViewRect* newSize) { if (frame) frame->setSize (newSize->right - newSize->left, newSize->bottom - newSize->top); return EditorView::onSize (newSize); } //------------------------------------------------------------------------ void VSTGUIEditor::beginEdit (VSTGUI_INT32 index) { if (controller) controller->beginEdit (index); } //------------------------------------------------------------------------ void VSTGUIEditor::endEdit (VSTGUI_INT32 index) { if (controller) controller->endEdit (index); } //------------------------------------------------------------------------ VSTGUI_INT32 VSTGUIEditor::getKnobMode () const { switch (EditController::getHostKnobMode ()) { case kRelativCircularMode: return VSTGUI::kRelativCircularMode; case kLinearMode: return VSTGUI::kLinearMode; } return VSTGUI::kCircularMode; } //------------------------------------------------------------------------ CMessageResult VSTGUIEditor::notify (CBaseObject* /*sender*/, const char* message) { if (message == CVSTGUITimer::kMsgTimer) { if (frame) frame->idle (); return kMessageNotified; } return kMessageUnknown; } #if VSTGUI_NEWER_THAN_4_10 //------------------------------------------------------------------------ static KeyboardEvent translateKeyMessage (char16 key, int16 keyMsg, int16 modifiers) { KeyboardEvent event; event.virt = static_cast (keyMsg); if (key == 0) key = VirtualKeyCodeToChar ((uint8)keyMsg); if (key) event.character = key; if (modifiers) { if (modifiers & kShiftKey) event.modifiers.add (ModifierKey::Shift); if (modifiers & kAlternateKey) event.modifiers.add (ModifierKey::Alt); if (modifiers & kCommandKey) event.modifiers.add (ModifierKey::Control); if (modifiers & kControlKey) event.modifiers.add (ModifierKey::Super); } return event; } #else //------------------------------------------------------------------------ static bool translateKeyMessage (VstKeyCode& keyCode, char16 key, int16 keyMsg, int16 modifiers) { keyCode.character = 0; keyCode.virt = (unsigned char)keyMsg; keyCode.modifier = 0; if (key == 0) key = VirtualKeyCodeToChar ((uint8)keyMsg); if (key) { String keyStr (STR (" ")); keyStr.setChar16 (0, key); keyStr.toMultiByte (kCP_Utf8); if (keyStr.length () == 1) keyCode.character = keyStr.getChar8 (0); } if (modifiers) { if (modifiers & kShiftKey) keyCode.modifier |= MODIFIER_SHIFT; if (modifiers & kAlternateKey) keyCode.modifier |= MODIFIER_ALTERNATE; if (modifiers & kCommandKey) keyCode.modifier |= MODIFIER_CONTROL; if (modifiers & kControlKey) keyCode.modifier |= MODIFIER_COMMAND; } return true; } #endif //------------------------------------------------------------------------ tresult PLUGIN_API VSTGUIEditor::onKeyDown (char16 key, int16 keyMsg, int16 modifiers) { if (frame) { #if VSTGUI_NEWER_THAN_4_10 auto event = translateKeyMessage (key, keyMsg, modifiers); event.type = EventType::KeyDown; frame->dispatchEvent (event); if (event.consumed) return kResultTrue; #else VstKeyCode keyCode = {}; if (translateKeyMessage (keyCode, key, keyMsg, modifiers)) { VSTGUI_INT32 result = frame->onKeyDown (keyCode); if (result == 1) return kResultTrue; } #endif } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API VSTGUIEditor::onKeyUp (char16 key, int16 keyMsg, int16 modifiers) { if (frame) { #if VSTGUI_NEWER_THAN_4_10 auto event = translateKeyMessage (key, keyMsg, modifiers); event.type = EventType::KeyUp; frame->dispatchEvent (event); if (event.consumed) return kResultTrue; #else VstKeyCode keyCode = {}; if (translateKeyMessage (keyCode, key, keyMsg, modifiers)) { VSTGUI_INT32 result = frame->onKeyUp (keyCode); if (result == 1) return kResultTrue; } #endif } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API VSTGUIEditor::onWheel (float distance) { if (frame) { #if VSTGUI_NEWER_THAN_4_10 CPoint where; frame->getCurrentMouseLocation (where); MouseWheelEvent event; event.mousePosition = where; event.deltaY = distance; frame->getPlatformFrame ()->getCurrentModifiers (event.modifiers); frame->dispatchEvent (event); if (event.consumed) return kResultTrue; #else CPoint where; frame->getCurrentMouseLocation (where); if (frame->onWheel (where, kMouseWheelAxisY, distance, frame->getCurrentMouseButtons ())) return kResultTrue; #endif } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API VSTGUIEditor::setFrame (IPlugFrame* frame) { #if 0 if (frame) { FUnknownPtr frameIdle (frame); if (frameIdle) frameIdle->addIdleHandler (this); } else if (plugFrame) { FUnknownPtr frameIdle (plugFrame); if (frameIdle) frameIdle->removeIdleHandler (this); } #endif return EditorView::setFrame (frame); } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstguieditor.h000066400000000000000000000116011461511344300213640ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstguieditor.h // Created by : Steinberg, 04/2005 // Description : VSTGUI Editor // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "vsteditcontroller.h" #include "vstgui/vstgui.h" #if VSTGUI_VERSION_MAJOR < 4 #include "vstgui/cvstguitimer.h" #define VSTGUI_INT32 long #else #define VSTGUI_INT32 int32_t #endif namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Base class for an edit view using VSTGUI. \ingroup vstClasses */ class VSTGUIEditor : public EditorView, public VSTGUI::VSTGUIEditorInterface, public VSTGUI::CBaseObject { public: /** Constructor. */ VSTGUIEditor (void* controller, ViewRect* size = nullptr); /** Destructor. */ virtual ~VSTGUIEditor (); //---Internal function----- /** Called when the editor will be opened. */ #if VSTGUI_VERSION_MAJOR >= 4 && VSTGUI_VERSION_MINOR >= 1 virtual bool PLUGIN_API open (void* parent, const VSTGUI::PlatformType& platformType) = 0; #else virtual bool PLUGIN_API open (void* parent) = 0; #endif /** Called when the editor will be closed. */ virtual void PLUGIN_API close () = 0; /** Sets the idle rate controlling the parameter update rate. */ void setIdleRate (int32 millisec); //---from CBaseObject--------------- VSTGUI::CMessageResult notify (VSTGUI::CBaseObject* sender, const char* message) SMTG_OVERRIDE; void forget () SMTG_OVERRIDE { EditorView::release (); } void remember () SMTG_OVERRIDE { EditorView::addRef (); } VSTGUI_INT32 getNbReference () const SMTG_OVERRIDE { return refCount; } //---from IPlugView------- tresult PLUGIN_API isPlatformTypeSupported (FIDString type) SMTG_OVERRIDE; tresult PLUGIN_API onSize (ViewRect* newSize) SMTG_OVERRIDE; //---from VSTGUIEditorInterface------- /** Called from VSTGUI when a user begins editing. The default implementation calls performEdit of the EditController. */ void beginEdit (VSTGUI_INT32 index) SMTG_OVERRIDE; /** Called from VSTGUI when a user ends editing. The default implementation calls endEdit of the EditController. */ void endEdit (VSTGUI_INT32 index) SMTG_OVERRIDE; VSTGUI_INT32 getKnobMode () const SMTG_OVERRIDE; OBJ_METHODS (VSTGUIEditor, EditorView) DEFINE_INTERFACES END_DEFINE_INTERFACES (EditorView) REFCOUNT_METHODS (EditorView) #if TARGET_OS_IPHONE static void setBundleRef (/*CFBundleRef*/ void* bundle); #endif protected: //---from IPlugView------- tresult PLUGIN_API attached (void* parent, FIDString type) SMTG_OVERRIDE; tresult PLUGIN_API removed () SMTG_OVERRIDE; tresult PLUGIN_API onKeyDown (char16 key, int16 keyMsg, int16 modifiers) SMTG_OVERRIDE; tresult PLUGIN_API onKeyUp (char16 key, int16 keyMsg, int16 modifiers) SMTG_OVERRIDE; tresult PLUGIN_API onWheel (float distance) SMTG_OVERRIDE; tresult PLUGIN_API setFrame (IPlugFrame* frame) SMTG_OVERRIDE; private: VSTGUI::CVSTGUITimer* timer; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vsthelpers.h000066400000000000000000000073121461511344300210370ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vsthelpers.h // Created by : Steinberg, 11/2018 // Description : common defines // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/base/ibstream.h" #include "pluginterfaces/base/ustring.h" #include "pluginterfaces/vst/ivstattributes.h" #include "pluginterfaces/vst/vstpresetkeys.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { namespace Helpers { //------------------------------------------------------------------------ /** Helpers */ //------------------------------------------------------------------------ //------------------------------------------------------------------------ /** Retrieve from a IBStream the state type, here the StateType::kProject return kResultTrue if the state is coming from a project, return kResultFalse if the state is coming from a preset, return kNotImplemented if the host does not implement such feature */ inline tresult isProjectState (IBStream* state) { if (!state) return kInvalidArgument; FUnknownPtr stream (state); if (!stream) return kNotImplemented; if (IAttributeList* list = stream->getAttributes ()) { // get the current type (project/Default..) of this state String128 string = {0}; if (list->getString (PresetAttributes::kStateType, string, 128 * sizeof (TChar)) == kResultTrue) { UString128 tmp (string); char ascii[128]; tmp.toAscii (ascii, 128); if (strncmp (ascii, StateType::kProject, strlen (StateType::kProject)) == 0) { return kResultTrue; } return kResultFalse; } } return kNotImplemented; } /*@}*/ //------------------------------------------------------------------------ } // namespace Helpers } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstinitiids.cpp000066400000000000000000000137621461511344300215520ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstinitiids.cpp // Created by : Steinberg, 10/2009 // Description : Interface symbols file // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "pluginterfaces/base/funknown.h" #include "pluginterfaces/base/iplugincompatibility.h" #include "pluginterfaces/vst/ivstaudioprocessor.h" #include "pluginterfaces/vst/ivstautomationstate.h" #include "pluginterfaces/vst/ivstchannelcontextinfo.h" #include "pluginterfaces/vst/ivstcontextmenu.h" #include "pluginterfaces/vst/ivstdataexchange.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstevents.h" #include "pluginterfaces/vst/ivsthostapplication.h" #include "pluginterfaces/vst/ivstinterappaudio.h" #include "pluginterfaces/vst/ivstmessage.h" #include "pluginterfaces/vst/ivstmidilearn.h" #include "pluginterfaces/vst/ivstparameterchanges.h" #include "pluginterfaces/vst/ivstparameterfunctionname.h" #include "pluginterfaces/vst/ivstphysicalui.h" #include "pluginterfaces/vst/ivstpluginterfacesupport.h" #include "pluginterfaces/vst/ivstplugview.h" #include "pluginterfaces/vst/ivstprefetchablesupport.h" #include "pluginterfaces/vst/ivstrepresentation.h" #include "pluginterfaces/vst/ivsttestplugprovider.h" #include "pluginterfaces/vst/ivstunits.h" //------------------------------------------------------------------------ namespace Steinberg { //----VST 3.0-------------------------------- DEF_CLASS_IID (Vst::IComponent) DEF_CLASS_IID (Vst::IAudioProcessor) DEF_CLASS_IID (Vst::IUnitData) DEF_CLASS_IID (Vst::IProgramListData) DEF_CLASS_IID (Vst::IEditController) DEF_CLASS_IID (Vst::IUnitInfo) DEF_CLASS_IID (Vst::IConnectionPoint) DEF_CLASS_IID (Vst::IComponentHandler) DEF_CLASS_IID (Vst::IUnitHandler) DEF_CLASS_IID (Vst::IParamValueQueue) DEF_CLASS_IID (Vst::IParameterChanges) DEF_CLASS_IID (Vst::IEventList) DEF_CLASS_IID (Vst::IMessage) DEF_CLASS_IID (Vst::IHostApplication) DEF_CLASS_IID (Vst::IAttributeList) //----VST 3.0.1-------------------------------- DEF_CLASS_IID (Vst::IMidiMapping) //----VST 3.0.2-------------------------------- DEF_CLASS_IID (Vst::IParameterFinder) //----VST 3.1---------------------------------- DEF_CLASS_IID (Vst::IComponentHandler2) DEF_CLASS_IID (Vst::IEditController2) DEF_CLASS_IID (Vst::IAudioPresentationLatency) DEF_CLASS_IID (Vst::IVst3ToVst2Wrapper) DEF_CLASS_IID (Vst::IVst3ToAUWrapper) //----VST 3.5---------------------------------- DEF_CLASS_IID (Vst::INoteExpressionController) DEF_CLASS_IID (Vst::IKeyswitchController) DEF_CLASS_IID (Vst::IContextMenuTarget) DEF_CLASS_IID (Vst::IContextMenu) DEF_CLASS_IID (Vst::IComponentHandler3) DEF_CLASS_IID (Vst::IEditControllerHostEditing) DEF_CLASS_IID (Vst::IXmlRepresentationController) //----VST 3.6---------------------------------- DEF_CLASS_IID (Vst::IInterAppAudioHost) DEF_CLASS_IID (Vst::IInterAppAudioConnectionNotification) DEF_CLASS_IID (Vst::IInterAppAudioPresetManager) DEF_CLASS_IID (Vst::IStreamAttributes) //----VST 3.6.5-------------------------------- DEF_CLASS_IID (Vst::ChannelContext::IInfoListener) DEF_CLASS_IID (Vst::IPrefetchableSupport) DEF_CLASS_IID (Vst::IUnitHandler2) DEF_CLASS_IID (Vst::IAutomationState) //----VST 3.6.8-------------------------------- DEF_CLASS_IID (Vst::IComponentHandlerBusActivation) DEF_CLASS_IID (Vst::IVst3ToAAXWrapper) //----VST 3.6.11-------------------------------- DEF_CLASS_IID (Vst::INoteExpressionPhysicalUIMapping) //----VST 3.6.12-------------------------------- DEF_CLASS_IID (Vst::IMidiLearn) DEF_CLASS_IID (Vst::IPlugInterfaceSupport) DEF_CLASS_IID (Vst::IVst3WrapperMPESupport) //----VST 3.6.13-------------------------------- DEF_CLASS_IID (Vst::ITestPlugProvider) //----VST 3.7----------------------------------- DEF_CLASS_IID (Vst::IParameterFunctionName) DEF_CLASS_IID (Vst::IProcessContextRequirements) DEF_CLASS_IID (Vst::IProgress) DEF_CLASS_IID (Vst::ITestPlugProvider2) //----VST 3.7.5--------------------------------- DEF_CLASS_IID (IPluginCompatibility) //----VST 3.7.9--------------------------------- DEF_CLASS_IID (Vst::IComponentHandlerSystemTime) DEF_CLASS_IID (Vst::IDataExchangeHandler) DEF_CLASS_IID (Vst::IDataExchangeReceiver) } // Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstnoteexpressiontypes.cpp000066400000000000000000000305121461511344300241000ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstnoteexpressiontypes.cpp // Created by : Steinberg, 12/2010 // Description : VST Note Expression Type Info Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstnoteexpressiontypes.h" #include "vstparameters.h" #include "base/source/fstring.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ustring.h" #include namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- NoteExpressionType::NoteExpressionType () : precision (4) { memset (&info, 0, sizeof (info)); } //----------------------------------------------------------------------------- NoteExpressionType::NoteExpressionType (const NoteExpressionTypeInfo& _info) : precision (4) { memcpy (&info, &_info, sizeof (info)); } //----------------------------------------------------------------------------- NoteExpressionType::NoteExpressionType (NoteExpressionTypeID _typeId, const TChar* _title, const TChar* _shortTitle, const TChar* _units, int32 _unitId, NoteExpressionValue _defaultValue, NoteExpressionValue _minimum, NoteExpressionValue _maximum, int32 _stepCount, int32 _flags, int32 _precision) : precision (_precision) { memset (&info, 0, sizeof (info)); info.typeId = _typeId; if (_title) UString (info.title, str16BufferSize (String128)).assign (_title); if (_shortTitle) UString (info.shortTitle, str16BufferSize (String128)).assign (_shortTitle); if (_units) UString (info.shortTitle, str16BufferSize (String128)).assign (_units); info.unitId = _unitId; info.valueDesc.defaultValue = _defaultValue; info.valueDesc.minimum = _minimum; info.valueDesc.maximum = _maximum; info.valueDesc.stepCount = _stepCount; info.flags = _flags; } //----------------------------------------------------------------------------- NoteExpressionType::NoteExpressionType (NoteExpressionTypeID _typeId, const TChar* _title, const TChar* _shortTitle, const TChar* _units, int32 _unitId, Parameter* _associatedParameter, int32 _flags) : associatedParameter (_associatedParameter), precision (4) { memset (&info, 0, sizeof (info)); info.typeId = _typeId; if (_title) UString (info.title, str16BufferSize (String128)).assign (_title); if (_shortTitle) UString (info.shortTitle, str16BufferSize (String128)).assign (_shortTitle); if (_units) UString (info.shortTitle, str16BufferSize (String128)).assign (_units); info.unitId = _unitId; info.valueDesc.defaultValue = 0.5; info.valueDesc.minimum = 0.; info.valueDesc.maximum = 1.; info.flags = _flags; if (_associatedParameter) { info.valueDesc.stepCount = _associatedParameter->getInfo ().stepCount; info.valueDesc.defaultValue = _associatedParameter->getInfo ().defaultNormalizedValue; info.associatedParameterId = associatedParameter->getInfo ().id; info.flags |= NoteExpressionTypeInfo::kAssociatedParameterIDValid; } } //----------------------------------------------------------------------------- tresult NoteExpressionType::getStringByValue (NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) { if (associatedParameter) { associatedParameter->toString (valueNormalized, string); return kResultTrue; } UString128 wrapper; if (info.valueDesc.stepCount > 0) { int32 value = Min (info.valueDesc.stepCount, (int32) (valueNormalized * (info.valueDesc.stepCount + 1))); wrapper.printInt (value); } else { wrapper.printFloat (valueNormalized, precision); } wrapper.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult NoteExpressionType::getValueByString (const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) { if (associatedParameter) { return associatedParameter->fromString (string, valueNormalized) ? kResultTrue : kResultFalse; } String wrapper (string); if (info.valueDesc.stepCount > 0) { int32 value; if (wrapper.scanInt32 (value) && value <= info.valueDesc.stepCount) { valueNormalized = (NoteExpressionValue)value / (NoteExpressionValue)info.valueDesc.stepCount; return kResultTrue; } return kResultFalse; } double value; wrapper.scanFloat (value); if (value < info.valueDesc.minimum) return kResultFalse; if (value > info.valueDesc.maximum) return kResultFalse; valueNormalized = value; return kResultTrue; } //----------------------------------------------------------------------------- tresult NoteExpressionType::getPhysicalUIType (PhysicalUITypeID& _physicalUITypeID /*out*/) const { _physicalUITypeID = physicalUITypeID; return kResultTrue; } //----------------------------------------------------------------------------- tresult NoteExpressionType::setPhysicalUITypeID (PhysicalUITypeID _physicalUITypeID /*in*/) { physicalUITypeID = _physicalUITypeID; return kResultTrue; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- RangeNoteExpressionType::RangeNoteExpressionType ( NoteExpressionTypeID _typeId, const TChar* _title, const TChar* _shortTitle, const TChar* _units, int32 _unitId, NoteExpressionValue _defaultPlainValue, NoteExpressionValue _plainMin, NoteExpressionValue _plainMax, int32 _flags, int32 _precision) : NoteExpressionType (_typeId, _title, _shortTitle, _units, _unitId, 0, 0, 1, 0, _flags, _precision) , plainMin (_plainMin) , plainMax (_plainMax) { info.valueDesc.defaultValue = (_defaultPlainValue - getMin ()) / (getMax () - getMin ()); } //----------------------------------------------------------------------------- tresult RangeNoteExpressionType::getStringByValue (NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) { NoteExpressionValue plain = valueNormalized * (getMax () - getMin ()) + getMin (); UString128 wrapper; wrapper.printFloat (plain, precision); wrapper.copyTo (string, 128); return kResultTrue; } //----------------------------------------------------------------------------- tresult RangeNoteExpressionType::getValueByString (const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) { String wrapper (string); double value = 0.; if (wrapper.scanFloat (value)) { value = (value - getMin ()) / (getMax () - getMin ()); if (value >= 0. && value <= 1.) { valueNormalized = value; return kResultTrue; } } return kResultFalse; } //----------------------------------------------------------------------------- NoteExpressionTypeContainer::NoteExpressionTypeContainer () { } //----------------------------------------------------------------------------- NoteExpressionTypeContainer::NoteExprTypeVector::const_iterator NoteExpressionTypeContainer::find ( NoteExpressionTypeID typeId) const { for (auto it = noteExps.begin (), end = noteExps.end (); it != end; ++it) { if ((*it)->getInfo ().typeId == typeId) { return it; } } return noteExps.end (); } //----------------------------------------------------------------------------- bool NoteExpressionTypeContainer::addNoteExpressionType (NoteExpressionType* noteExpType) { noteExps.emplace_back (noteExpType, false); return true; } //----------------------------------------------------------------------------- bool NoteExpressionTypeContainer::removeNoteExpressionType (NoteExpressionTypeID typeId) { auto it = find (typeId); if (it != noteExps.end ()) { noteExps.erase (it); return true; } return false; } //----------------------------------------------------------------------------- void NoteExpressionTypeContainer::removeAll () { noteExps.clear (); } //----------------------------------------------------------------------------- NoteExpressionType* NoteExpressionTypeContainer::getNoteExpressionType (NoteExpressionTypeID typeId) { auto it = find (typeId); if (it != noteExps.end ()) return (*it); return nullptr; } //----------------------------------------------------------------------------- int32 NoteExpressionTypeContainer::getNoteExpressionCount () { return static_cast (noteExps.size ()); } //----------------------------------------------------------------------------- tresult NoteExpressionTypeContainer::getNoteExpressionInfo (int32 noteExpressionIndex, NoteExpressionTypeInfo& info /*out*/) { if (noteExpressionIndex < 0 || noteExpressionIndex >= static_cast (noteExps.size ())) return kInvalidArgument; std::memcpy (&info, ¬eExps[noteExpressionIndex]->getInfo (), sizeof (info)); return kResultTrue; } //----------------------------------------------------------------------------- tresult NoteExpressionTypeContainer::getNoteExpressionStringByValue ( NoteExpressionTypeID id, NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) { NoteExpressionType* noteExpType = getNoteExpressionType (id); if (noteExpType) { return noteExpType->getStringByValue (valueNormalized, string); } return kResultFalse; } //----------------------------------------------------------------------------- tresult NoteExpressionTypeContainer::getNoteExpressionValueByString ( NoteExpressionTypeID id, const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) { NoteExpressionType* noteExpType = getNoteExpressionType (id); if (noteExpType) { return noteExpType->getValueByString (string, valueNormalized); } return kResultFalse; } //----------------------------------------------------------------------------- tresult NoteExpressionTypeContainer::getMappedNoteExpression ( const PhysicalUITypeID physicalUITypeID, NoteExpressionTypeID& id /*out*/) { id = kInvalidTypeID; for (auto& item : noteExps) { PhysicalUITypeID tmp; if (item->getPhysicalUIType (tmp) == kResultTrue) { if (tmp == physicalUITypeID) { id = item->getInfo ().typeId; break; } } } return kResultTrue; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstnoteexpressiontypes.h000066400000000000000000000176511461511344300235560ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstnoteexpressiontypes.h // Created by : Steinberg, 12/2010 // Description : VST Note Expression Type Info Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "base/source/fobject.h" #include "pluginterfaces/vst/ivstnoteexpression.h" #include "pluginterfaces/vst/ivstphysicalui.h" #include #include namespace Steinberg { namespace Vst { class Parameter; //------------------------------------------------------------------------ /** Note expression type object. \ingroup vstClasses */ class NoteExpressionType : public FObject { public: NoteExpressionType (); NoteExpressionType (const NoteExpressionTypeInfo& info); NoteExpressionType (NoteExpressionTypeID typeId, const TChar* title, const TChar* shortTitle, const TChar* units, int32 unitId, NoteExpressionValue defaultValue, NoteExpressionValue minimum, NoteExpressionValue maximum, int32 stepCount, int32 flags = 0, int32 precision = 4); NoteExpressionType (NoteExpressionTypeID typeId, const TChar* title, const TChar* shortTitle, const TChar* units, int32 unitId, Parameter* associatedParameter, int32 flags = 0); /** get the underlying NoteExpressionTypeInfo struct */ NoteExpressionTypeInfo& getInfo () { return info; } /** convert a note expression value to a readable string */ virtual tresult getStringByValue (NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/); /** convert a readable string to a note expression value */ virtual tresult getValueByString (const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/); /** gets the current precision (used for string representation of float) */ int32 getPrecision () const { return precision; } /** Sets the precision for string representation of float value (for example 4.34 with 2 as * precision) */ void setPrecision (int32 val) { precision = val; } tresult getPhysicalUIType (PhysicalUITypeID& physicalUITypeID /*out*/) const; tresult setPhysicalUITypeID (PhysicalUITypeID physicalUITypeID /*in*/); //----------------------------------------------------------------------------- OBJ_METHODS (NoteExpressionType, FObject) protected: NoteExpressionTypeInfo info; IPtr associatedParameter; int32 precision; PhysicalUITypeID physicalUITypeID {static_cast (kInvalidPUITypeID)}; }; //------------------------------------------------------------------------ /** Note expression type object representing a custom range. \ingroup vstClasses */ class RangeNoteExpressionType : public NoteExpressionType { public: RangeNoteExpressionType (NoteExpressionTypeID typeId, const TChar* title, const TChar* shortTitle, const TChar* units, int32 unitId, NoteExpressionValue defaultPlainValue, NoteExpressionValue plainMin, NoteExpressionValue plainMax, int32 flags = 0, int32 precision = 4); /** Gets the minimum plain value */ virtual ParamValue getMin () const { return plainMin; } /** Sets the minimum plain value */ virtual void setMin (ParamValue value) { plainMin = value; } /** Gets the maximum plain value */ virtual ParamValue getMax () const { return plainMax; } /** Sets the maximum plain value */ virtual void setMax (ParamValue value) { plainMax = value; } tresult getStringByValue (NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/) SMTG_OVERRIDE; tresult getValueByString (const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/) SMTG_OVERRIDE; //----------------------------------------------------------------------------- OBJ_METHODS (RangeNoteExpressionType, NoteExpressionType) protected: NoteExpressionValue plainMin; NoteExpressionValue plainMax; }; //------------------------------------------------------------------------ /** Collection of note expression types. \ingroup vstClasses */ class NoteExpressionTypeContainer : public FObject { public: /** default constructor */ NoteExpressionTypeContainer (); /** add a note expression type. The container owns the type. No need to release it afterwards. */ bool addNoteExpressionType (NoteExpressionType* noteExpType); /** remove a note expression type */ bool removeNoteExpressionType (NoteExpressionTypeID typeId); /** remove all note expression types */ void removeAll (); /** get a note expression type object by ID */ NoteExpressionType* getNoteExpressionType (NoteExpressionTypeID typeId); /** get the number of note expression types */ int32 getNoteExpressionCount (); /** get note expression info */ tresult getNoteExpressionInfo (int32 noteExpressionIndex /*in*/, NoteExpressionTypeInfo& info /*out*/); /** convert a note expression value to a readable string */ tresult getNoteExpressionStringByValue (NoteExpressionTypeID id /*in*/, NoteExpressionValue valueNormalized /*in*/, String128 string /*out*/); /** convert a string to a note expression value */ tresult getNoteExpressionValueByString (NoteExpressionTypeID id /*in*/, const TChar* string /*in*/, NoteExpressionValue& valueNormalized /*out*/); /** get the Physical UI Type associated to a given Note Expression Id */ tresult getMappedNoteExpression (const PhysicalUITypeID physicalUITypeID, NoteExpressionTypeID& id); //----------------------------------------------------------------------------- OBJ_METHODS (NoteExpressionTypeContainer, FObject) protected: using NoteExprTypeVector = std::vector>; NoteExprTypeVector::const_iterator find (NoteExpressionTypeID typeId) const; NoteExprTypeVector noteExps; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstparameters.cpp000066400000000000000000000341341461511344300220750ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstparameters.cpp // Created by : Steinberg, 03/2008 // Description : VST Parameter Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstparameters.h" #include "pluginterfaces/base/futils.h" #include "pluginterfaces/base/ustring.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Parameter Implementation //------------------------------------------------------------------------ Parameter::Parameter () { } //------------------------------------------------------------------------ Parameter::Parameter (const ParameterInfo& info) : info (info), valueNormalized (info.defaultNormalizedValue) { } //------------------------------------------------------------------------ Parameter::Parameter (const TChar* title, ParamID tag, const TChar* units, ParamValue defaultValueNormalized, int32 stepCount, int32 flags, UnitID unitID, const TChar* shortTitle) { UString (info.title, str16BufferSize (String128)).assign (title); if (units) UString (info.units, str16BufferSize (String128)).assign (units); if (shortTitle) UString (info.shortTitle, str16BufferSize (String128)).assign (shortTitle); info.stepCount = stepCount; info.defaultNormalizedValue = valueNormalized = defaultValueNormalized; info.flags = flags; info.id = tag; info.unitId = unitID; } //------------------------------------------------------------------------ Parameter::~Parameter () { } //------------------------------------------------------------------------ bool Parameter::setNormalized (ParamValue normValue) { if (normValue > 1.0) { normValue = 1.0; } else if (normValue < 0.) { normValue = 0.; } if (normValue != valueNormalized) { valueNormalized = normValue; changed (); return true; } return false; } //------------------------------------------------------------------------ void Parameter::toString (ParamValue normValue, String128 string) const { UString wrapper (string, str16BufferSize (String128)); if (info.stepCount == 1) { if (normValue > 0.5) { wrapper.assign (STR16 ("On")); } else { wrapper.assign (STR16 ("Off")); } } else { if (!wrapper.printFloat (normValue, precision)) string[0] = 0; } } //------------------------------------------------------------------------ bool Parameter::fromString (const TChar* string, ParamValue& normValue) const { UString wrapper (const_cast (string), tstrlen (string)); return wrapper.scanFloat (normValue); } //------------------------------------------------------------------------ ParamValue Parameter::toPlain (ParamValue normValue) const { return normValue; } //------------------------------------------------------------------------ ParamValue Parameter::toNormalized (ParamValue plainValue) const { return plainValue; } //------------------------------------------------------------------------ // RangeParameter Implementation //------------------------------------------------------------------------ RangeParameter::RangeParameter () : minPlain (0), maxPlain (1) { } //------------------------------------------------------------------------ RangeParameter::RangeParameter (const ParameterInfo& paramInfo, ParamValue min, ParamValue max) : Parameter (paramInfo), minPlain (min), maxPlain (max) { } //------------------------------------------------------------------------ RangeParameter::RangeParameter (const TChar* title, ParamID tag, const TChar* units, ParamValue minPlain, ParamValue maxPlain, ParamValue defaultValuePlain, int32 stepCount, int32 flags, UnitID unitID, const TChar* shortTitle) : minPlain (minPlain), maxPlain (maxPlain) { UString (info.title, str16BufferSize (String128)).assign (title); if (units) UString (info.units, str16BufferSize (String128)).assign (units); if (shortTitle) UString (info.shortTitle, str16BufferSize (String128)).assign (shortTitle); info.stepCount = stepCount; info.defaultNormalizedValue = valueNormalized = toNormalized (defaultValuePlain); info.flags = flags; info.id = tag; info.unitId = unitID; } //------------------------------------------------------------------------ void RangeParameter::toString (ParamValue _valueNormalized, String128 string) const { if (info.stepCount > 1) { UString wrapper (string, str16BufferSize (String128)); int64 plain = static_cast (toPlain (_valueNormalized)); if (!wrapper.printInt (plain)) string[0] = 0; } else { Parameter::toString (toPlain (_valueNormalized), string); } } //------------------------------------------------------------------------ bool RangeParameter::fromString (const TChar* string, ParamValue& _valueNormalized) const { UString wrapper (const_cast (string), tstrlen (string)); if (info.stepCount > 1) { int64 plainValue; if (wrapper.scanInt (plainValue)) { _valueNormalized = toNormalized ((ParamValue)plainValue); return true; } return false; } if (wrapper.scanFloat (_valueNormalized)) { if (_valueNormalized < getMin ()) _valueNormalized = getMin (); else if (_valueNormalized > getMax ()) _valueNormalized = getMax (); _valueNormalized = toNormalized (_valueNormalized); return true; } return false; } //------------------------------------------------------------------------ ParamValue RangeParameter::toPlain (ParamValue _valueNormalized) const { if (info.stepCount > 1) return FromNormalized (_valueNormalized, info.stepCount) + getMin (); return _valueNormalized * (getMax () - getMin ()) + getMin (); } //------------------------------------------------------------------------ ParamValue RangeParameter::toNormalized (ParamValue plainValue) const { if (info.stepCount > 1) return ToNormalized (plainValue - getMin (), info.stepCount); SMTG_ASSERT (getMax () - getMin () != 0); return (plainValue - getMin ()) / (getMax () - getMin ()); } //------------------------------------------------------------------------ // StringListParameter Implementation //------------------------------------------------------------------------ StringListParameter::StringListParameter (const ParameterInfo& paramInfo) : Parameter (paramInfo) { } //------------------------------------------------------------------------ StringListParameter::StringListParameter (const TChar* title, ParamID tag, const TChar* units, int32 flags, UnitID unitID, const TChar* shortTitle) { UString (info.title, str16BufferSize (String128)).assign (title); if (units) UString (info.units, str16BufferSize (String128)).assign (units); if (shortTitle) UString (info.shortTitle, str16BufferSize (String128)).assign (shortTitle); info.stepCount = -1; info.defaultNormalizedValue = 0; info.flags = flags; info.id = tag; info.unitId = unitID; } //------------------------------------------------------------------------ StringListParameter::~StringListParameter () { for (auto& string : strings) std::free (string); } //------------------------------------------------------------------------ void StringListParameter::appendString (const String128 string) { int32 length = strlen16 (string); TChar* buffer = (TChar*)std::malloc ((length + 1) * sizeof (TChar)); if (!buffer) return; memcpy (buffer, string, length * sizeof (TChar)); buffer[length] = 0; strings.push_back (buffer); info.stepCount++; } //------------------------------------------------------------------------ bool StringListParameter::replaceString (int32 index, const String128 string) { TChar* str = strings.at (index); if (!str) return false; int32 length = strlen16 (string); TChar* buffer = (TChar*)malloc ((length + 1) * sizeof (TChar)); if (!buffer) return false; memcpy (buffer, string, length * sizeof (TChar)); buffer[length] = 0; strings[index] = buffer; std::free (str); return true; } //------------------------------------------------------------------------ void StringListParameter::toString (ParamValue _valueNormalized, String128 string) const { int32 index = static_cast (toPlain (_valueNormalized)); if (const TChar* valueString = strings.at (index)) { UString (string, str16BufferSize (String128)).assign (valueString); } else string[0] = 0; } //------------------------------------------------------------------------ bool StringListParameter::fromString (const TChar* string, ParamValue& _valueNormalized) const { int32 index = 0; for (auto it = strings.begin (), end = strings.end (); it != end; ++it, ++index) { if (strcmp16 (*it, string) == 0) { _valueNormalized = toNormalized ((ParamValue)index); return true; } } return false; } //------------------------------------------------------------------------ ParamValue StringListParameter::toPlain (ParamValue _valueNormalized) const { if (info.stepCount <= 0) return 0; return FromNormalized (_valueNormalized, info.stepCount); } //------------------------------------------------------------------------ ParamValue StringListParameter::toNormalized (ParamValue plainValue) const { if (info.stepCount <= 0) return 0; return ToNormalized (plainValue, info.stepCount); } //------------------------------------------------------------------------ // ParameterContainer Implementation //------------------------------------------------------------------------ ParameterContainer::ParameterContainer () { } //------------------------------------------------------------------------ ParameterContainer::~ParameterContainer () { if (params) delete params; } //------------------------------------------------------------------------ void ParameterContainer::init (int32 initialSize, int32 /*resizeDelta*/) { if (!params) { params = new ParameterPtrVector; if (initialSize > 0) params->reserve (initialSize); } } //------------------------------------------------------------------------ Parameter* ParameterContainer::addParameter (Parameter* p) { if (!params) init (); id2index[p->getInfo ().id] = params->size (); params->push_back (IPtr (p, false)); return p; } //------------------------------------------------------------------------ Parameter* ParameterContainer::addParameter (const ParameterInfo& info) { if (!params) init (); auto* p = new Parameter (info); if (addParameter (p)) return p; p->release (); return nullptr; } //------------------------------------------------------------------------ Parameter* ParameterContainer::getParameterByIndex (int32 index) const { if (!params || index < 0 || index >= static_cast (params->size ())) return nullptr; return params->at (index); } //------------------------------------------------------------------------ Parameter* ParameterContainer::getParameter (ParamID tag) const { if (params) { auto it = id2index.find (tag); if (it != id2index.end ()) return params->at (it->second); } return nullptr; } //------------------------------------------------------------------------ bool ParameterContainer::removeParameter (ParamID tag) { if (!params) return false; IndexMap::const_iterator it = id2index.find (tag); if (it != id2index.end ()) { params->erase (params->begin () + it->second); id2index.erase (it); } return false; } //------------------------------------------------------------------------ Parameter* ParameterContainer::addParameter (const TChar* title, const TChar* units, int32 stepCount, ParamValue defaultNormalizedValue, int32 flags, int32 tag, UnitID unitID, const TChar* shortTitle) { if (!title) { return nullptr; } ParameterInfo info = {}; UString (info.title, str16BufferSize (String128)).assign (title); if (units) UString (info.units, str16BufferSize (String128)).assign (units); if (shortTitle) UString (info.shortTitle, str16BufferSize (String128)).assign (shortTitle); info.stepCount = stepCount; info.defaultNormalizedValue = defaultNormalizedValue; info.flags = flags; info.id = (tag >= 0) ? tag : getParameterCount (); info.unitId = unitID; return addParameter (info); } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstparameters.h000066400000000000000000000235111461511344300215370ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstparameters.h // Created by : Steinberg, 03/2008 // Description : VST Parameter Implementation // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "base/source/fobject.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstunits.h" #include #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Description of a Parameter. \ingroup vstClasses */ class Parameter : public FObject { public: //------------------------------------------------------------------------ Parameter (); Parameter (const ParameterInfo&); Parameter (const TChar* title, ParamID tag, const TChar* units = nullptr, ParamValue defaultValueNormalized = 0., int32 stepCount = 0, int32 flags = ParameterInfo::kCanAutomate, UnitID unitID = kRootUnitId, const TChar* shortTitle = nullptr); ~Parameter () override; /** Returns its read only info. */ virtual const ParameterInfo& getInfo () const { return info; } /** Returns its writable info. */ virtual ParameterInfo& getInfo () { return info; } /** Sets its associated UnitId. */ virtual void setUnitID (UnitID id) { info.unitId = id; } /** Gets its associated UnitId. */ virtual UnitID getUnitID () { return info.unitId; } /** Gets its normalized value [0.0, 1.0]. */ ParamValue getNormalized () const { return valueNormalized; } /** Sets its normalized value [0.0, 1.0]. */ virtual bool setNormalized (ParamValue v); /** Converts a normalized value to a string. */ virtual void toString (ParamValue valueNormalized, String128 string) const; /** Converts a string to a normalized value. */ virtual bool fromString (const TChar* string, ParamValue& valueNormalized) const; /** Converts a normalized value to plain value (e.g. 0.5 to 10000.0Hz). */ virtual ParamValue toPlain (ParamValue valueNormalized) const; /** Converts a plain value to a normalized value (e.g. 10000 to 0.5). */ virtual ParamValue toNormalized (ParamValue plainValue) const; /** Gets the current precision (used for string representation of float). */ virtual int32 getPrecision () const { return precision; } /** Sets the precision for string representation of float value (for example 4.34 with 2 as * precision). */ virtual void setPrecision (int32 val) { precision = val; } OBJ_METHODS (Parameter, FObject) //------------------------------------------------------------------------ protected: ParameterInfo info {}; ParamValue valueNormalized {0.}; int32 precision {4}; }; //------------------------------------------------------------------------ /** Description of a RangeParameter. \ingroup vstClasses */ class RangeParameter : public Parameter { public: //------------------------------------------------------------------------ RangeParameter (const ParameterInfo& paramInfo, ParamValue min, ParamValue max); RangeParameter (const TChar* title, ParamID tag, const TChar* units = nullptr, ParamValue minPlain = 0., ParamValue maxPlain = 1., ParamValue defaultValuePlain = 0., int32 stepCount = 0, int32 flags = ParameterInfo::kCanAutomate, UnitID unitID = kRootUnitId, const TChar* shortTitle = nullptr); /** Gets the minimum plain value, same as toPlain (0). */ virtual ParamValue getMin () const { return minPlain; } /** Sets the minimum plain value. */ virtual void setMin (ParamValue value) { minPlain = value; } /** Gets the maximum plain value, same as toPlain (1). */ virtual ParamValue getMax () const { return maxPlain; } /** Sets the maximum plain value. */ virtual void setMax (ParamValue value) { maxPlain = value; } /** Converts a normalized value to a string. */ void toString (ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE; /** Converts a string to a normalized value. */ bool fromString (const TChar* string, ParamValue& _valueNormalized) const SMTG_OVERRIDE; /** Converts a normalized value to plain value (e.g. 0.5 to 10000.0Hz). */ ParamValue toPlain (ParamValue _valueNormalized) const SMTG_OVERRIDE; /** Converts a plain value to a normalized value (e.g. 10000 to 0.5). */ ParamValue toNormalized (ParamValue plainValue) const SMTG_OVERRIDE; OBJ_METHODS (RangeParameter, Parameter) //------------------------------------------------------------------------ protected: RangeParameter (); ParamValue minPlain; ParamValue maxPlain; }; //------------------------------------------------------------------------ /** Description of a StringListParameter. \ingroup vstClasses */ class StringListParameter : public Parameter { public: //------------------------------------------------------------------------ StringListParameter (const ParameterInfo& paramInfo); StringListParameter (const TChar* title, ParamID tag, const TChar* units = nullptr, int32 flags = ParameterInfo::kCanAutomate | ParameterInfo::kIsList, UnitID unitID = kRootUnitId, const TChar* shortTitle= nullptr); ~StringListParameter () override; /** Appends a string and increases the stepCount. */ virtual void appendString (const String128 string); /** Replaces the string at index. Index must be between 0 and stepCount+1 */ virtual bool replaceString (int32 index, const String128 string); /** Converts a normalized value to a string. */ void toString (ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE; /** Converts a string to a normalized value. */ bool fromString (const TChar* string, ParamValue& _valueNormalized) const SMTG_OVERRIDE; /** Converts a normalized value to plain value (e.g. 0.5 to 10000.0Hz). */ ParamValue toPlain (ParamValue _valueNormalized) const SMTG_OVERRIDE; /** Converts a plain value to a normalized value (e.g. 10000 to 0.5). */ ParamValue toNormalized (ParamValue plainValue) const SMTG_OVERRIDE; OBJ_METHODS (StringListParameter, Parameter) //------------------------------------------------------------------------ protected: using StringVector = std::vector; StringVector strings; }; //------------------------------------------------------------------------ /** Collection of parameters. \ingroup vstClasses */ class ParameterContainer { public: //------------------------------------------------------------------------ ParameterContainer (); ~ParameterContainer (); /** Init param array. */ void init (int32 initialSize = 10, int32 resizeDelta = 100); /** Creates and adds a new parameter from a ParameterInfo. */ Parameter* addParameter (const ParameterInfo& info); /** Creates and adds a new parameter with given properties. */ Parameter* addParameter (const TChar* title, const TChar* units = nullptr, int32 stepCount = 0, ParamValue defaultValueNormalized = 0., int32 flags = ParameterInfo::kCanAutomate, int32 tag = -1, UnitID unitID = kRootUnitId, const TChar* shortTitle = nullptr); /** Adds a given parameter. */ Parameter* addParameter (Parameter* p); /** Returns the count of parameters. */ int32 getParameterCount () const { return params ? static_cast (params->size ()) : 0; } /** Gets parameter by index. */ Parameter* getParameterByIndex (int32 index) const; /** Removes all parameters. */ void removeAll () { if (params) params->clear (); id2index.clear (); } /** Gets parameter by ID. */ Parameter* getParameter (ParamID tag) const; /** Remove a specific parameter by ID. */ bool removeParameter (ParamID tag); //------------------------------------------------------------------------ protected: using ParameterPtrVector = std::vector>; using IndexMap = std::map; ParameterPtrVector* params {nullptr}; IndexMap id2index; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstpresetfile.cpp000066400000000000000000000646031461511344300221000ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstpresetfile.cpp // Created by : Steinberg, 03/2006 // Description : VST 3 Preset File Format // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstpresetfile.h" #include namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // Preset Chunk IDs //------------------------------------------------------------------------ static const ChunkID commonChunks[kNumPresetChunks] = { {'V', 'S', 'T', '3'}, // kHeader {'C', 'o', 'm', 'p'}, // kComponentState {'C', 'o', 'n', 't'}, // kControllerState {'P', 'r', 'o', 'g'}, // kProgramData {'I', 'n', 'f', 'o'}, // kMetaInfo {'L', 'i', 's', 't'} // kChunkList }; //------------------------------------------------------------------------ // Preset Header: header id + version + class id + list offset static const int32 kFormatVersion = 1; static const int32 kClassIDSize = 32; // ASCII-encoded FUID static const int32 kHeaderSize = sizeof (ChunkID) + sizeof (int32) + kClassIDSize + sizeof (TSize); static const int32 kListOffsetPos = kHeaderSize - sizeof (TSize); //------------------------------------------------------------------------ const ChunkID& getChunkID (ChunkType type) { return commonChunks[type]; } #ifdef verify #undef verify #endif //------------------------------------------------------------------------ inline bool verify (tresult result) { return result == kResultOk || result == kNotImplemented; } //------------------------------------------------------------------------ bool copyStream (IBStream* inStream, IBStream* outStream) { if (!inStream || !outStream) return false; int8 buffer[8192]; int32 read = 0; int32 written = 0; while (inStream->read (buffer, 8192, &read) == kResultTrue && read > 0) { if (outStream->write (buffer, read, &written) != kResultTrue) { return false; } } return true; } //------------------------------------------------------------------------ // PresetFile //------------------------------------------------------------------------ bool PresetFile::savePreset (IBStream* stream, const FUID& classID, IComponent* component, IEditController* editController, const char* xmlBuffer, int32 xmlSize) { PresetFile pf (stream); pf.setClassID (classID); if (!pf.writeHeader ()) return false; if (!pf.storeComponentState (component)) return false; if (editController && !pf.storeControllerState (editController)) return false; if (xmlBuffer && !pf.writeMetaInfo (xmlBuffer, xmlSize)) return false; return pf.writeChunkList (); } //------------------------------------------------------------------------ bool PresetFile::savePreset (IBStream* stream, const FUID& classID, IBStream* componentStream, IBStream* editStream, const char* xmlBuffer, int32 xmlSize) { PresetFile pf (stream); pf.setClassID (classID); if (!pf.writeHeader ()) return false; if (!pf.storeComponentState (componentStream)) return false; if (editStream && !pf.storeControllerState (editStream)) return false; if (xmlBuffer && !pf.writeMetaInfo (xmlBuffer, xmlSize)) return false; return pf.writeChunkList (); } //------------------------------------------------------------------------ bool PresetFile::loadPreset (IBStream* stream, const FUID& classID, IComponent* component, IEditController* editController, std::vector* otherClassIDArray) { PresetFile pf (stream); if (!pf.readChunkList ()) return false; if (pf.getClassID () != classID) { if (otherClassIDArray) { // continue to load only if found in supported ID else abort load if (std::find (otherClassIDArray->begin (), otherClassIDArray->end (), pf.getClassID ()) == otherClassIDArray->end ()) return false; } else return false; } if (!pf.restoreComponentState (component)) return false; if (editController) { // assign component state to controller if (!pf.restoreComponentState (editController)) return false; // restore controller-only state (if present) if (pf.contains (kControllerState) && !pf.restoreControllerState (editController)) return false; } return true; } //------------------------------------------------------------------------ PresetFile::PresetFile (IBStream* stream) : stream (stream) { memset (entries, 0, sizeof (entries)); if (stream) stream->addRef (); } //------------------------------------------------------------------------ PresetFile::~PresetFile () { if (stream) stream->release (); } //------------------------------------------------------------------------ const PresetFile::Entry* PresetFile::getEntry (ChunkType which) const { const ChunkID& id = getChunkID (which); for (int32 i = 0; i < entryCount; i++) if (isEqualID (entries[i].id, id)) return &entries[i]; return nullptr; } //------------------------------------------------------------------------ const PresetFile::Entry* PresetFile::getLastEntry () const { return entryCount > 0 ? &entries[entryCount - 1] : nullptr; } //------------------------------------------------------------------------ bool PresetFile::readID (ChunkID id) { int32 numBytesRead = 0; stream->read (id, sizeof (ChunkID), &numBytesRead); return numBytesRead == sizeof (ChunkID); } //------------------------------------------------------------------------ bool PresetFile::writeID (const ChunkID id) { int32 numBytesWritten = 0; stream->write ((void*)id, sizeof (ChunkID), &numBytesWritten); return numBytesWritten == sizeof (ChunkID); } //------------------------------------------------------------------------ bool PresetFile::readEqualID (const ChunkID id) { ChunkID temp = {0}; return readID (temp) && isEqualID (temp, id); } //------------------------------------------------------------------------ bool PresetFile::readSize (TSize& size) { int32 numBytesRead = 0; stream->read (&size, sizeof (TSize), &numBytesRead); #if BYTEORDER == kBigEndian SWAP_64 (size) #endif return numBytesRead == sizeof (TSize); } //------------------------------------------------------------------------ bool PresetFile::writeSize (TSize size) { #if BYTEORDER == kBigEndian SWAP_64 (size) #endif int32 numBytesWritten = 0; stream->write (&size, sizeof (TSize), &numBytesWritten); return numBytesWritten == sizeof (TSize); } //------------------------------------------------------------------------ bool PresetFile::readInt32 (int32& value) { int32 numBytesRead = 0; stream->read (&value, sizeof (int32), &numBytesRead); #if BYTEORDER == kBigEndian SWAP_32 (value) #endif return numBytesRead == sizeof (int32); } //------------------------------------------------------------------------ bool PresetFile::writeInt32 (int32 value) { #if BYTEORDER == kBigEndian SWAP_32 (value) #endif int32 numBytesWritten = 0; stream->write (&value, sizeof (int32), &numBytesWritten); return numBytesWritten == sizeof (int32); } //------------------------------------------------------------------------ bool PresetFile::seekTo (TSize offset) { int64 result = -1; stream->seek (offset, IBStream::kIBSeekSet, &result); return result == offset; } //------------------------------------------------------------------------ bool PresetFile::readChunkList () { seekTo (0); entryCount = 0; char8 classString[kClassIDSize + 1] = {0}; // Read header int32 version = 0; TSize listOffset = 0; if (!(readEqualID (getChunkID (kHeader)) && readInt32 (version) && verify (stream->read (classString, kClassIDSize)) && readSize (listOffset) && listOffset > 0 && seekTo (listOffset))) return false; classID.fromString (classString); // Read list int32 count = 0; if (!readEqualID (getChunkID (kChunkList))) return false; if (!readInt32 (count)) return false; if (count > kMaxEntries) count = kMaxEntries; for (int32 i = 0; i < count; i++) { Entry& e = entries[i]; if (!(readID (e.id) && readSize (e.offset) && readSize (e.size))) break; entryCount++; } return entryCount > 0; } //------------------------------------------------------------------------ bool PresetFile::writeHeader () { // header id + version + class id + list offset (unknown yet) char8 classString[kClassIDSize + 1] = {0}; classID.toString (classString); return seekTo (0) && writeID (getChunkID (kHeader)) && writeInt32 (kFormatVersion) && verify (stream->write (classString, kClassIDSize)) && writeSize (0); } //------------------------------------------------------------------------ bool PresetFile::writeChunkList () { // Update list offset TSize pos = 0; stream->tell (&pos); if (!(seekTo (kListOffsetPos) && writeSize (pos) && seekTo (pos))) return false; // Write list if (!writeID (getChunkID (kChunkList))) return false; if (!writeInt32 (entryCount)) return false; for (int32 i = 0; i < entryCount; i++) { Entry& e = entries[i]; if (!(writeID (e.id) && writeSize (e.offset) && writeSize (e.size))) return false; } return true; } //------------------------------------------------------------------------ bool PresetFile::beginChunk (Entry& e, ChunkType which) { if (entryCount >= kMaxEntries) return false; const ChunkID& id = getChunkID (which); memcpy (e.id, &id, sizeof (ChunkID)); stream->tell (&e.offset); e.size = 0; return true; } //------------------------------------------------------------------------ bool PresetFile::endChunk (Entry& e) { if (entryCount >= kMaxEntries) return false; TSize pos = 0; stream->tell (&pos); e.size = pos - e.offset; entries[entryCount++] = e; return true; } //------------------------------------------------------------------------ bool PresetFile::readMetaInfo (char* xmlBuffer, int32& size) { bool result = false; const Entry* e = getEntry (kMetaInfo); if (e) { if (xmlBuffer) { result = seekTo (e->offset) && verify (stream->read (xmlBuffer, size, &size)); } else { size = (int32)e->size; result = size > 0; } } return result; } //------------------------------------------------------------------------ bool PresetFile::writeMetaInfo (const char* xmlBuffer, int32 size, bool forceWriting) { if (contains (kMetaInfo)) // already exists! { if (!forceWriting) return false; } if (!prepareMetaInfoUpdate ()) return false; if (size == -1) size = (int32)strlen (xmlBuffer); Entry e = {}; return beginChunk (e, kMetaInfo) && verify (stream->write ((void*)xmlBuffer, size)) && endChunk (e); } //------------------------------------------------------------------------ bool PresetFile::prepareMetaInfoUpdate () { TSize writePos = 0; const Entry* e = getEntry (kMetaInfo); if (e) { // meta info must be the last entry! if (e != getLastEntry ()) return false; writePos = e->offset; entryCount--; } else { // entries must be sorted ascending by offset! e = getLastEntry (); writePos = e ? e->offset + e->size : kHeaderSize; } return seekTo (writePos); } //------------------------------------------------------------------------ bool PresetFile::writeChunk (const void* data, int32 size, ChunkType which) { if (contains (which)) // already exists! return false; Entry e = {}; return beginChunk (e, which) && verify (stream->write ((void*)data, size)) && endChunk (e); } //------------------------------------------------------------------------ bool PresetFile::seekToComponentState () { const Entry* e = getEntry (kComponentState); return e && seekTo (e->offset); } //------------------------------------------------------------------------ bool PresetFile::storeComponentState (IComponent* component) { if (contains (kComponentState)) // already exists! return false; Entry e = {}; return beginChunk (e, kComponentState) && verify (component->getState (stream)) && endChunk (e); } //------------------------------------------------------------------------ bool PresetFile::storeComponentState (IBStream* componentStream) { if (contains (kComponentState)) // already exists! return false; Entry e = {}; return beginChunk (e, kComponentState) && copyStream (componentStream, stream) && endChunk (e); } //------------------------------------------------------------------------ bool PresetFile::restoreComponentState (IComponent* component) { const Entry* e = getEntry (kComponentState); if (!e) return false; auto readOnlyBStream = owned (new ReadOnlyBStream (stream, e->offset, e->size)); return verify (component->setState (readOnlyBStream)); } //------------------------------------------------------------------------ bool PresetFile::restoreComponentState (IEditController* editController) { const Entry* e = getEntry (kComponentState); if (e) { auto readOnlyBStream = owned (new ReadOnlyBStream (stream, e->offset, e->size)); return verify (editController->setComponentState (readOnlyBStream)); } return false; } //------------------------------------------------------------------------ bool PresetFile::seekToControllerState () { const Entry* e = getEntry (kControllerState); return e && seekTo (e->offset); } //------------------------------------------------------------------------ bool PresetFile::storeControllerState (IEditController* editController) { if (contains (kControllerState)) // already exists! return false; Entry e = {}; return beginChunk (e, kControllerState) && verify (editController->getState (stream)) && endChunk (e); } //------------------------------------------------------------------------ bool PresetFile::storeControllerState (IBStream* editStream) { if (contains (kControllerState)) // already exists! return false; Entry e = {}; return beginChunk (e, kControllerState) && copyStream (editStream, stream) && endChunk (e); } //------------------------------------------------------------------------ bool PresetFile::restoreControllerState (IEditController* editController) { const Entry* e = getEntry (kControllerState); if (e) { auto readOnlyBStream = owned (new ReadOnlyBStream (stream, e->offset, e->size)); return verify (editController->setState (readOnlyBStream)); } return false; } //------------------------------------------------------------------------ bool PresetFile::storeProgramData (IBStream* inStream, ProgramListID listID) { if (contains (kProgramData)) // already exists! return false; writeHeader (); Entry e = {}; if (beginChunk (e, kProgramData)) { if (writeInt32 (listID)) { if (!copyStream (inStream, stream)) return false; return endChunk (e); } } return false; } //------------------------------------------------------------------------ bool PresetFile::storeProgramData (IProgramListData* programListData, ProgramListID listID, int32 programIndex) { if (contains (kProgramData)) // already exists! return false; writeHeader (); Entry e = {}; return beginChunk (e, kProgramData) && writeInt32 (listID) && verify (programListData->getProgramData (listID, programIndex, stream)) && endChunk (e); } //------------------------------------------------------------------------ bool PresetFile::restoreProgramData (IProgramListData* programListData, ProgramListID* programListID, int32 programIndex) { const Entry* e = getEntry (kProgramData); ProgramListID savedProgramListID = -1; if (e && seekTo (e->offset)) { if (readInt32 (savedProgramListID)) { if (programListID && *programListID != savedProgramListID) return false; int32 alreadyRead = sizeof (int32); auto readOnlyBStream = owned ( new ReadOnlyBStream (stream, e->offset + alreadyRead, e->size - alreadyRead)); return programListData && verify (programListData->setProgramData ( savedProgramListID, programIndex, readOnlyBStream)); } } return false; } //------------------------------------------------------------------------ bool PresetFile::storeProgramData (IUnitData* unitData, UnitID unitID) { if (contains (kProgramData)) // already exists! return false; writeHeader (); Entry e = {}; return beginChunk (e, kProgramData) && writeInt32 (unitID) && verify (unitData->getUnitData (unitID, stream)) && endChunk (e); } //------------------------------------------------------------------------ bool PresetFile::restoreProgramData (IUnitData* unitData, UnitID* unitId) { const Entry* e = getEntry (kProgramData); UnitID savedUnitID = -1; if (e && seekTo (e->offset)) { if (readInt32 (savedUnitID)) { if (unitId && *unitId != savedUnitID) return false; int32 alreadyRead = sizeof (int32); auto readOnlyBStream = owned ( new ReadOnlyBStream (stream, e->offset + alreadyRead, e->size - alreadyRead)); return (unitData && verify (unitData->setUnitData (savedUnitID, readOnlyBStream))); } } return false; } //------------------------------------------------------------------------ bool PresetFile::restoreProgramData (IUnitInfo* unitInfo, int32 unitProgramListID, int32 programIndex) { const Entry* e = getEntry (kProgramData); int32 savedProgramListID = -1; if (e && seekTo (e->offset)) { if (readInt32 (savedProgramListID)) { if (unitProgramListID != savedProgramListID) return false; int32 alreadyRead = sizeof (int32); auto readOnlyBStream = owned ( new ReadOnlyBStream (stream, e->offset + alreadyRead, e->size - alreadyRead)); return (unitInfo && unitInfo->setUnitProgramData (unitProgramListID, programIndex, readOnlyBStream)); } } return false; } //------------------------------------------------------------------------ bool PresetFile::getUnitProgramListID (int32& unitProgramListID) { const Entry* e = getEntry (kProgramData); if (e && seekTo (e->offset)) { if (readInt32 (unitProgramListID)) { return true; } } return false; } //------------------------------------------------------------------------ // FileStream implementation //------------------------------------------------------------------------ IBStream* FileStream::open (const char* filename, const char* mode) { FILE* file = fopen (filename, mode); return file ? new FileStream (file) : nullptr; } //------------------------------------------------------------------------ FileStream::FileStream (FILE* file) : file (file) {FUNKNOWN_CTOR} //------------------------------------------------------------------------ FileStream::~FileStream () { fclose (file); FUNKNOWN_DTOR } //------------------------------------------------------------------------ IMPLEMENT_FUNKNOWN_METHODS (FileStream, IBStream, IBStream::iid) //------------------------------------------------------------------------ tresult PLUGIN_API FileStream::read (void* buffer, int32 numBytes, int32* numBytesRead) { size_t result = fread (buffer, 1, static_cast (numBytes), file); if (numBytesRead) *numBytesRead = (int32)result; return static_cast (result) == numBytes ? kResultOk : kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API FileStream::write (void* buffer, int32 numBytes, int32* numBytesWritten) { size_t result = fwrite (buffer, 1, static_cast (numBytes), file); if (numBytesWritten) *numBytesWritten = (int32)result; return static_cast (result) == numBytes ? kResultOk : kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API FileStream::seek (int64 pos, int32 mode, int64* result) { if (fseek (file, (int32)pos, mode) == 0) { if (result) *result = ftell (file); return kResultOk; } return kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API FileStream::tell (int64* pos) { if (pos) *pos = ftell (file); return kResultOk; } //------------------------------------------------------------------------ // ReadOnlyBStream implementation //------------------------------------------------------------------------ IMPLEMENT_REFCOUNT (ReadOnlyBStream) //------------------------------------------------------------------------ ReadOnlyBStream::ReadOnlyBStream (IBStream* sourceStream, TSize sourceOffset, TSize sectionSize) : sourceStream (sourceStream) , sourceOffset (sourceOffset) , sectionSize (sectionSize) , seekPosition (0) { FUNKNOWN_CTOR if (sourceStream) sourceStream->addRef (); } //------------------------------------------------------------------------ ReadOnlyBStream::~ReadOnlyBStream () { if (sourceStream) sourceStream->release (); FUNKNOWN_DTOR } //------------------------------------------------------------------------ tresult PLUGIN_API ReadOnlyBStream::queryInterface (const TUID _iid, void** obj) { return sourceStream ? sourceStream->queryInterface (_iid, obj) : kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API ReadOnlyBStream::read (void* buffer, int32 numBytes, int32* numBytesRead) { if (numBytesRead) *numBytesRead = 0; if (!sourceStream) return kNotInitialized; int32 maxBytesToRead = static_cast (sectionSize - seekPosition); if (numBytes > maxBytesToRead) numBytes = maxBytesToRead; if (numBytes <= 0) return kResultOk; tresult result = sourceStream->seek (sourceOffset + seekPosition, kIBSeekSet); if (result != kResultOk) return result; int32 numRead = 0; result = sourceStream->read (buffer, numBytes, &numRead); if (numRead > 0) seekPosition += numRead; if (numBytesRead) *numBytesRead = numRead; return result; } //------------------------------------------------------------------------ tresult PLUGIN_API ReadOnlyBStream::write (void* /*buffer*/, int32 /*numBytes*/, int32* numBytesWritten) { if (numBytesWritten) *numBytesWritten = 0; return kNotImplemented; } //------------------------------------------------------------------------ tresult PLUGIN_API ReadOnlyBStream::seek (int64 pos, int32 mode, int64* result) { switch (mode) { case kIBSeekSet: seekPosition = pos; break; case kIBSeekCur: seekPosition += pos; break; case kIBSeekEnd: seekPosition = sectionSize + pos; break; } if (seekPosition < 0) seekPosition = 0; if (seekPosition > sectionSize) seekPosition = sectionSize; if (result) *result = seekPosition; return kResultOk; } //------------------------------------------------------------------------ tresult PLUGIN_API ReadOnlyBStream::tell (int64* pos) { if (pos) *pos = seekPosition; return kResultOk; } //------------------------------------------------------------------------ // BufferStream implementation //------------------------------------------------------------------------ IMPLEMENT_FUNKNOWN_METHODS (BufferStream, IBStream, IBStream::iid) //------------------------------------------------------------------------ BufferStream::BufferStream () {FUNKNOWN_CTOR} //------------------------------------------------------------------------ BufferStream::~BufferStream () {FUNKNOWN_DTOR} //------------------------------------------------------------------------ tresult PLUGIN_API BufferStream::read (void* buffer, int32 numBytes, int32* numBytesRead) { uint32 size = mBuffer.get (buffer, static_cast (numBytes)); if (numBytesRead) *numBytesRead = static_cast (size); return kResultTrue; } //------------------------------------------------------------------------ tresult PLUGIN_API BufferStream::write (void* buffer, int32 numBytes, int32* numBytesWritten) { bool res = mBuffer.put (buffer, static_cast (numBytes)); if (numBytesWritten) *numBytesWritten = res ? numBytes : 0; return res ? kResultTrue : kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API BufferStream::seek (int64 pos, int32 mode, int64* result) { bool res = false; switch (mode) { //--- ----------------- case IBStream::kIBSeekSet: { int64 tmp = pos; if (tmp < 0) tmp = 0; res = mBuffer.setFillSize (static_cast (tmp)); } break; //--- ----------------- case IBStream::kIBSeekCur: { int64 tmp = mBuffer.getFillSize () + pos; if (tmp < 0) tmp = 0; res = mBuffer.setFillSize (static_cast (tmp)); } break; //--- ----------------- case IBStream::kIBSeekEnd: { int64 tmp = mBuffer.getSize () - pos; if (tmp < 0) tmp = 0; res = mBuffer.setFillSize (static_cast (tmp)); } break; } if (res && result) *result = mBuffer.getFillSize (); return res ? kResultTrue : kResultFalse; } //------------------------------------------------------------------------ tresult PLUGIN_API BufferStream::tell (int64* pos) { if (pos) *pos = mBuffer.getFillSize (); return pos ? kResultTrue : kResultFalse; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstpresetfile.h000066400000000000000000000325501461511344300215410ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstpresetfile.h // Created by : Steinberg, 03/2006 // Description : VST 3 Preset File Format // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstcomponent.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstunits.h" #include "pluginterfaces/base/ibstream.h" #include "base/source/fbuffer.h" #include #include //------------------------------------------------------------------------ /* VST 3 Preset File Format Definition =================================== 0 +---------------------------+ | HEADER | | header id ('VST3') | 4 Bytes | version | 4 Bytes (int32) | ASCII-encoded class id | 32 Bytes +--| offset to chunk list | 8 Bytes (int64) | +---------------------------+ | | DATA AREA |<-+ | | data of chunks 1..n | | | ... ... | | | | | +->+---------------------------+ | | CHUNK LIST | | | list id ('List') | | 4 Bytes | entry count | | 4 Bytes (int32) +---------------------------+ | | 1..n | | | +----------------------+ | | | | chunk id | | | 4 Bytes | | offset to chunk data |----+ 8 Bytes (int64) | | size of chunk data | | 8 Bytes (int64) | +----------------------+ | EOF +---------------------------+ */ //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ using ChunkID = char[4]; //------------------------------------------------------------------------ enum ChunkType { kHeader, kComponentState, kControllerState, kProgramData, kMetaInfo, kChunkList, kNumPresetChunks }; //------------------------------------------------------------------------ extern const ChunkID& getChunkID (ChunkType type); //------------------------------------------------------------------------ inline bool isEqualID (const ChunkID id1, const ChunkID id2) { return memcmp (id1, id2, sizeof (ChunkID)) == 0; } //------------------------------------------------------------------------ /** Handler for a VST 3 Preset File. \ingroup vstClasses \see \ref presetformat */ class PresetFile { public: //------------------------------------------------------------------------ PresetFile (IBStream* stream); ///< Constructor of Preset file based on a stream virtual ~PresetFile (); /** Internal structure used for chunk handling */ struct Entry { ChunkID id; TSize offset; TSize size; }; IBStream* getStream () const { return stream; } ///< Returns the associated stream. const FUID& getClassID () const { return classID; } ///< Returns the associated classID (component ID: Processor part (not the controller!)). void setClassID (const FUID& uid) { classID = uid; }///< Sets the associated classID (component ID: Processor part (not the controller!)). const Entry* getEntry (ChunkType which) const; ///< Returns an entry for a given chunk type. const Entry* getLastEntry () const; ///< Returns the last available entry. int32 getEntryCount () const { return entryCount; } ///< Returns the number of total entries in the current stream. const Entry& at (int32 index) const { return entries[index]; } ///< Returns the entry at a given position. bool contains (ChunkType which) const { return getEntry (which) != nullptr; } ///< Checks if a given chunk type exist in the stream. bool readChunkList (); ///< Reads and build the chunk list (including the header chunk). bool writeHeader (); ///< Writes into the stream the main header. bool writeChunkList (); ///< Writes into the stream the chunk list (should be at the end). /** Reads the meta XML info and its size, the size could be retrieved by passing zero as xmlBuffer. */ bool readMetaInfo (char* xmlBuffer, int32& size); /** Writes the meta XML info, -1 means null-terminated, forceWriting to true will force to rewrite the XML Info when the chunk already exists. */ bool writeMetaInfo (const char* xmlBuffer, int32 size = -1, bool forceWriting = false); bool prepareMetaInfoUpdate (); ///< checks if meta info chunk is the last one and jump to correct position. /** Writes a given data of a given size as "which" chunk type. */ bool writeChunk (const void* data, int32 size, ChunkType which = kComponentState); //------------------------------------------------------------- // for storing and restoring the whole plug-in state (component and controller states) bool seekToComponentState (); ///< Seeks to the begin of the Component State. bool storeComponentState (IComponent* component); ///< Stores the component state (only one time). bool storeComponentState (IBStream* componentStream); ///< Stores the component state from stream (only one time). bool restoreComponentState (IComponent* component); ///< Restores the component state. bool seekToControllerState (); ///< Seeks to the begin of the Controller State. bool storeControllerState (IEditController* editController);///< Stores the controller state (only one time). bool storeControllerState (IBStream* editStream); ///< Stores the controller state from stream (only one time). bool restoreControllerState (IEditController* editController);///< Restores the controller state. bool restoreComponentState (IEditController* editController);///< Restores the component state and apply it to the controller. //--- ---------------------------------------------------------- /** Store program data or unit data from stream (including the header chunk). \param inStream \param listID could be ProgramListID or UnitID. */ bool storeProgramData (IBStream* inStream, ProgramListID listID); //---when plug-in uses IProgramListData----------------------- /** Stores a IProgramListData with a given identifier and index (including the header chunk). */ bool storeProgramData (IProgramListData* programListData, ProgramListID programListID, int32 programIndex); /** Restores a IProgramListData with a given identifier and index. */ bool restoreProgramData (IProgramListData* programListData, ProgramListID* programListID = nullptr, int32 programIndex = 0); //---when plug-in uses IUnitData------------------------------ /** Stores a IUnitData with a given unitID (including the header chunk). */ bool storeProgramData (IUnitData* unitData, UnitID unitID); /** Restores a IUnitData with a given unitID (optional). */ bool restoreProgramData (IUnitData* unitData, UnitID* unitID = nullptr); //--- ---------------------------------------------------------- /** for keeping the controller part in sync concerning preset data stream, unitProgramListID * could be ProgramListID or UnitID. */ bool restoreProgramData (IUnitInfo* unitInfo, int32 unitProgramListID, int32 programIndex = -1); /** Gets the unitProgramListID saved in the kProgramData chunk (if available). */ bool getUnitProgramListID (int32& unitProgramListID); //--- --------------------------------------------------------------------- /** Shortcut helper to create preset from component/controller state. classID is the FUID of the * component (processor) part. */ static bool savePreset (IBStream* stream, const FUID& classID, IComponent* component, IEditController* editController = nullptr, const char* xmlBuffer = nullptr, int32 xmlSize = -1); static bool savePreset (IBStream* stream, const FUID& classID, IBStream* componentStream, IBStream* editStream = nullptr, const char* xmlBuffer = nullptr, int32 xmlSize = -1); /** Shortcut helper to load preset with component/controller state. classID is the FUID of the * component (processor) part. */ static bool loadPreset (IBStream* stream, const FUID& classID, IComponent* component, IEditController* editController = nullptr, std::vector* otherClassIDArray = nullptr); //------------------------------------------------------------------------ protected: bool readID (ChunkID id); bool writeID (const ChunkID id); bool readEqualID (const ChunkID id); bool readSize (TSize& size); bool writeSize (TSize size); bool readInt32 (int32& value); bool writeInt32 (int32 value); bool seekTo (TSize offset); bool beginChunk (Entry& e, ChunkType which); bool endChunk (Entry& e); IBStream* stream; FUID classID; ///< classID is the FUID of the component (processor) part enum { kMaxEntries = 128 }; Entry entries[kMaxEntries]; int32 entryCount {0}; }; //------------------------------------------------------------------------ /** Stream implementation for a file using stdio. */ class FileStream: public IBStream { public: //------------------------------------------------------------------------ static IBStream* open (const char* filename, const char* mode); ///< open a stream using stdio function //---from FUnknown------------------ DECLARE_FUNKNOWN_METHODS //---from IBStream------------------ tresult PLUGIN_API read (void* buffer, int32 numBytes, int32* numBytesRead = nullptr) SMTG_OVERRIDE; tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = nullptr) SMTG_OVERRIDE; tresult PLUGIN_API seek (int64 pos, int32 mode, int64* result = nullptr) SMTG_OVERRIDE; tresult PLUGIN_API tell (int64* pos) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: FileStream (FILE* file); virtual ~FileStream (); FILE* file; }; //------------------------------------------------------------------------ /** Stream representing a Read-Only subsection of its source stream. */ class ReadOnlyBStream: public IBStream { public: //------------------------------------------------------------------------ ReadOnlyBStream (IBStream* sourceStream, TSize sourceOffset, TSize sectionSize); virtual ~ReadOnlyBStream (); //---from FUnknown------------------ DECLARE_FUNKNOWN_METHODS //---from IBStream------------------ tresult PLUGIN_API read (void* buffer, int32 numBytes, int32* numBytesRead = nullptr) SMTG_OVERRIDE; tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = nullptr) SMTG_OVERRIDE; tresult PLUGIN_API seek (int64 pos, int32 mode, int64* result = nullptr) SMTG_OVERRIDE; tresult PLUGIN_API tell (int64* pos) SMTG_OVERRIDE; //------------------------------------------------------------------------ protected: IBStream* sourceStream; TSize sourceOffset; TSize sectionSize; TSize seekPosition; }; //------------------------------------------------------------------------ /** Stream implementation for a memory buffer. */ class BufferStream : public IBStream { public: BufferStream (); virtual ~BufferStream (); //---from FUnknown------------------ DECLARE_FUNKNOWN_METHODS //---from IBStream------------------ tresult PLUGIN_API read (void* buffer, int32 numBytes, int32* numBytesRead = nullptr) SMTG_OVERRIDE; tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = nullptr) SMTG_OVERRIDE; tresult PLUGIN_API seek (int64 pos, int32 mode, int64* result = nullptr) SMTG_OVERRIDE; tresult PLUGIN_API tell (int64* pos) SMTG_OVERRIDE; protected: Buffer mBuffer; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstrepresentation.cpp000066400000000000000000000315331461511344300227740ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstrepresentation.cpp // Created by : Steinberg, 08/2010 // Description : VST Representation Helper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstrepresentation.h" #include "base/source/fstring.h" #include "pluginterfaces/base/ibstream.h" namespace Steinberg { namespace Vst { #define START_TAG_STRING(string) "<" string ">" #define END_TAG_STRING(string) "" #define MEDIUM_TITLE_LIMIT 8 #define SHORT_TITLE_LIMIT 4 //------------------------------------------------------------------------ struct StringWriter { StringWriter (IBStream* stream) : stream (stream) {} void write (const ConstString& str) { stream->write (const_cast (str.text8 ()), str.length (), nullptr); } IBStream* stream; }; //------------------------------------------------------------------------ // XmlRepresentationHelper Implementation //------------------------------------------------------------------------ XmlRepresentationHelper::XmlRepresentationHelper (const Vst::RepresentationInfo& info, const FIDString companyName, const FIDString pluginName, const TUID& pluginUID, IBStream* stream) : stream (stream) { StringWriter writer (stream); String string; writer.write (R"()"); writer.write (ENDLINE_A); string.printf ( R"()", ROOTXML_TAG); writer.write (string.text8 ()); writer.write (ENDLINE_A); string.printf ("<%s %s=\"1.0\">", ROOTXML_TAG, ATTR_VERSION); writer.write (string.text8 ()); writer.write (ENDLINE_A); //---Plug-in Tag---------------- FUID uid (pluginUID); char uidText[33]; uid.toString (uidText); string.printf (R"(<%s %s="%s" %s="%s" %s="%s"/>)", PLUGIN_TAG, ATTR_CLASSID, uidText, ATTR_NAME, pluginName, ATTR_VENDOR, companyName); writer.write (string); writer.write (ENDLINE_A); //---Representation Tag---------------- string.printf ("\t<%s", REPRESENTATION_TAG); writer.write (string); string.printf (" %s=\"%s\"", ATTR_NAME, info.name); writer.write (string); string.printf (" %s=\"%s\"", ATTR_VENDOR, info.vendor); writer.write (string); string.printf (" %s=\"%s\"", ATTR_VERSION, info.version); writer.write (string); if (strcmp ((char*)info.host, "") != 0) { string.printf (" %s=\"%s\"", ATTR_HOST, info.host); writer.write (string); } writer.write (">"); writer.write (ENDLINE_A); state = kInRepresentation; } //------------------------------------------------------------------------ XmlRepresentationHelper::~XmlRepresentationHelper () { if (state == kInLayer) endLayer (); if (state == kInCell) endCell (); if (state == kInPage) endPage (); StringWriter writer (stream); String string; // end representation string.printf ("\t%s", END_TAG_STRING (REPRESENTATION_TAG)); writer.write (string); writer.write (ENDLINE_A); // end piper writer.write (END_TAG_STRING (ROOTXML_TAG)); writer.write (ENDLINE_A); } //------------------------------------------------------------------------ bool XmlRepresentationHelper::checkState (int32 newState) { if (newState - state == 1 || state - newState == 1) // we go down or up { state = newState; return true; } return false; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startPage (FIDString name, int32 unitID) { if (!checkState (kInPage)) return false; StringWriter writer (stream); String string; if (unitID != -1) string.printf (R"(<%s %s="%s" %s="%d">)", PAGE_TAG, ATTR_NAME, name, ATTR_UNITID, unitID); else string.printf ("<%s %s=\"%s\">", PAGE_TAG, ATTR_NAME, name); writer.write (string); writer.write (ENDLINE_A); return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::endPage () { if (!checkState (kInRepresentation)) return false; StringWriter writer (stream); String string; string.printf ("%s", END_TAG_STRING (PAGE_TAG)); writer.write (string); writer.write (ENDLINE_A); return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startCell () { if (!checkState (kInCell)) return false; StringWriter writer (stream); String string; string.printf ("%s", START_TAG_STRING (CELL_TAG)); writer.write (string); writer.write (ENDLINE_A); return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::endCell () { if (!checkState (kInPage)) return false; StringWriter writer (stream); String string; string.printf ("%s", END_TAG_STRING (CELL_TAG)); writer.write (string); writer.write (ENDLINE_A); return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startEndCell () { if (!checkState (kInCell)) return false; StringWriter writer (stream); String string; string.printf ("<%s/>", CELL_TAG); writer.write (string); writer.write (ENDLINE_A); if (!checkState (kInPage)) return false; return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startLayer (int32 type, int32 id, FIDString _function, FIDString style) { return startLayer (type, id, _function, style, false); } //------------------------------------------------------------------------ bool XmlRepresentationHelper::endLayer () { if (!checkState (kInCell)) return false; StringWriter writer (stream); String string; string.printf ("%s", END_TAG_STRING (LAYER_TAG)); writer.write (string); writer.write (ENDLINE_A); return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startEndLayer (int32 type, int32 id, FIDString _function, FIDString style) { return startLayer (type, id, _function, style, true); } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startLayer (int32 type, int32 id, FIDString _function, FIDString style, bool ended) { if (!checkState (kInLayer)) return false; StringWriter writer (stream); String string; string.printf (R"(<%s %s="%s" %s="%d")", LAYER_TAG, ATTR_TYPE, Vst::LayerType::layerTypeFIDString[type], ATTR_PARAMID, id); writer.write (string); if (_function) { string.printf (" %s=\"%s\"", Vst::Attributes::kFunction, _function); writer.write (string); } if (style) { string = Vst::LayerType::layerTypeFIDString[type]; if (type == Vst::LayerType::kSwitch) string.printf (" %s=\"%s\"", Vst::Attributes::kSwitchStyle, style); else if (type == Vst::LayerType::kLED) string.printf (" %s=\"%s\"", Vst::Attributes::kLEDStyle, style); else string.printf (" %s=\"%s\"", Vst::Attributes::kStyle, style); writer.write (string); } if (ended) { writer.write ("/>"); if (!checkState (kInCell)) return false; } else writer.write (">"); writer.write (ENDLINE_A); return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startEndCellOneLayer (int32 type, int32 id, FIDString _function, FIDString style) { if (!startCell ()) return false; startEndLayer (type, id, _function, style); endCell (); return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startLayer (Vst::ParameterInfo& info, FIDString _function) { return startLayer (info, _function, false); } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startLayer (Vst::ParameterInfo& info, FIDString _function, bool ended) { FIDString style = nullptr; int32 type = Vst::LayerType::kKnob; if (info.flags & Vst::ParameterInfo::kIsReadOnly) type = Vst::LayerType::kLED; else if (info.stepCount == 1) { type = Vst::LayerType::kSwitch; style = Vst::AttributesStyle::kSwitchPushIncLoopedStyle; } return startLayer (type, static_cast (info.id), _function, style, ended); } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startEndLayer (Vst::ParameterInfo& info, FIDString _function) { return startLayer (info, _function, true); } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startEndCellOneLayer (Vst::ParameterInfo& info, FIDString _function) { if (!startCell ()) return false; startEndLayer (info, _function); endCell (); return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startEndCellOneLayerWithParamName (Vst::ParameterInfo& info, FIDString _function /*= 0*/) { if (!startCell ()) return false; startLayer (info, _function, false); startEndTitleDisplay (info); endLayer (); endCell (); return true; } //------------------------------------------------------------------------ bool XmlRepresentationHelper::startEndTitleDisplay (Vst::ParameterInfo& info) { String nameString (info.title); if (nameString.isEmpty ()) return false; if (!checkState (kInTitleDisplay)) return false; StringWriter writer (stream); String string; string.printf ("<%s>", TITLEDISPLAY_TAG); writer.write (string); writer.write (ENDLINE_A); // start of name scope if (!checkState (kInName)) { string.printf ("%s", END_TAG_STRING (TITLEDISPLAY_TAG)); writer.write (string); writer.write (ENDLINE_A); return false; } string.printf ("<%s>%s", NAME_TAG, nameString.text8 (), NAME_TAG); writer.write (string); writer.write (ENDLINE_A); if (nameString.length () > MEDIUM_TITLE_LIMIT) { nameString.assign (info.shortTitle); if (!nameString.isEmpty ()) { nameString.removeChars (); // remove space if (nameString.length () > MEDIUM_TITLE_LIMIT) nameString.remove (MEDIUM_TITLE_LIMIT); // Trimming the rest to get a short string string.printf ("<%s>%s", NAME_TAG, nameString.text8 (), NAME_TAG); writer.write (string); writer.write (ENDLINE_A); } } if (nameString.length () > SHORT_TITLE_LIMIT) { nameString.remove (SHORT_TITLE_LIMIT); // Trimming the rest to get a short string string.printf ("<%s>%s", NAME_TAG, nameString.text8 (), NAME_TAG); writer.write (string); writer.write (ENDLINE_A); } if (!checkState (kInTitleDisplay)) return false; // end of name scope string.printf ("%s", END_TAG_STRING (TITLEDISPLAY_TAG)); writer.write (string); writer.write (ENDLINE_A); if (!checkState (kInLayer)) return false; return true; } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstrepresentation.h000066400000000000000000000156271461511344300224470ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstrepresentation.h // Created by : Steinberg, 08/2010 // Description : VST Representation Helper // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivsteditcontroller.h" #include "pluginterfaces/vst/ivstrepresentation.h" //------------------------------------------------------------------------ namespace Steinberg { class IBStreamer; namespace Vst { //------------------------------------------------------------------------ /** Helper for XML Representation creation. \ingroup vstClasses Here an example of how to use this helper: \n \code{.cpp} //------------------------------------------------------------------------ // here the parameter ids used by this example enum { kGain = 129, kSize, kCutoff, kResonance, kMaster, kEnable1, kEnable2, kFrequency1, kFrequency2, kGain1, kGain2, }; //------------------------------------------------------------------------ tresult PLUGIN_API MyPlugInController::getXmlRepresentationStream (Vst::RepresentationInfo& info, IBStream* stream) { String name (info.name); if (name == GENERIC_8_CELLS) { Vst::XmlRepresentationHelper helper (info, "My Company Name", "My Product Name", gPlugProcessorClassID, stream); helper.startPage ("Main Page"); helper.startEndCellOneLayer (Vst::LayerType::kKnob, kGain); helper.startEndCellOneLayer (Vst::LayerType::kKnob, kSize); helper.startEndCellOneLayer (Vst::LayerType::kKnob, kMaster); helper.startEndCell (); // empty cell helper.startEndCellOneLayer (Vst::LayerType::kKnob, kCutoff); helper.startEndCellOneLayer (Vst::LayerType::kKnob, kResonance); helper.startEndCell (); // empty cell helper.startEndCell (); // empty cell helper.endPage (); helper.startPage ("Page 2"); helper.startEndCellOneLayer (Vst::LayerType::kSwitch, kEnable1); helper.startEndCellOneLayer (Vst::LayerType::kKnob, kFrequency1); helper.startEndCellOneLayer (Vst::LayerType::kKnob, kGain1); helper.startEndCell (); // empty helper.startEndCellOneLayer (Vst::LayerType::kSwitch, kEnable2); helper.startEndCellOneLayer (Vst::LayerType::kKnob, kFrequency2); helper.startEndCellOneLayer (Vst::LayerType::kKnob, kGain2); helper.startEndCell (); // empty helper.endPage (); return kResultTrue; } return kResultFalse; } \endcode */ class XmlRepresentationHelper { public: XmlRepresentationHelper (const RepresentationInfo& info, const FIDString companyName, const FIDString pluginName, const TUID& pluginUID, IBStream* stream); virtual ~XmlRepresentationHelper (); bool startPage (FIDString name, int32 unitID = -1); ///< Starts a Page before adding a Cell. bool endPage (); ///< Ends a Page before opening a new one. bool startCell (); ///< Starts a Cell before adding a Layer. bool endCell (); ///< Ends a Cell when no more layer needed. bool startEndCell (); ///< Creates an empty cell (alignment for example). /** Starts a layer for a given type (Vst::LayerType), a parameter id, optionally a function (Vst::AttributesFunction) and a style (Vst::AttributesStyle). */ bool startLayer (int32 type, int32 id, FIDString _function = nullptr, FIDString style = nullptr); /** Ends a layer before adding new one */ bool endLayer (); /** Same than startLayer except that the layer will be ended automatically (no need to call * endLayer). */ bool startEndLayer (int32 type, int32 id, FIDString _function = nullptr, FIDString style = nullptr); /** Creates a Cell with 1 Layer and end it, could be only call after a call to startPage */ bool startEndCellOneLayer (int32 type, int32 id, FIDString _function = nullptr, FIDString style = nullptr); /** Starts a layer for a given parameter info and an optional function * (Vst::AttributesFunction). */ bool startLayer (Vst::ParameterInfo& info, FIDString _function = nullptr); /** Same than startLayer with end created automatically. */ bool startEndLayer (Vst::ParameterInfo& info, FIDString _function = nullptr); /** Creates a Cell with 1 Layer and end it, could be only call after a call to startPage. */ bool startEndCellOneLayer (Vst::ParameterInfo& info, FIDString _function = nullptr); /** Creates a Cell with 1 Layer (with name) and end it, could be only call after a call to * startPage. */ bool startEndCellOneLayerWithParamName (Vst::ParameterInfo& info, FIDString _function = nullptr); protected: enum { kInRepresentation = 0, kInPage, kInCell, kInLayer, kInTitleDisplay, kInName }; bool startLayer (int32 type, int32 id, FIDString _function, FIDString style, bool ended); bool startLayer (Vst::ParameterInfo& info, FIDString _function, bool ended); bool startEndTitleDisplay (Vst::ParameterInfo& info); bool checkState (int32 newState); IPtr stream; int32 state; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstsinglecomponenteffect.cpp000066400000000000000000000254731461511344300243210ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstsinglecomponenteffect.cpp // Created by : Steinberg, 03/2008 // Description : Basic Audio Effect Implementation in one component // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "vstsinglecomponenteffect.h" //----------------------------------------------------------------------------- namespace Steinberg { namespace Vst { //----------------------------------------------------------------------------- // SingleComponentEffect Implementation //----------------------------------------------------------------------------- SingleComponentEffect::SingleComponentEffect () : audioInputs (kAudio, kInput) , audioOutputs (kAudio, kOutput) , eventInputs (kEvent, kInput) , eventOutputs (kEvent, kOutput) { processSetup.maxSamplesPerBlock = 1024; processSetup.processMode = Vst::kRealtime; processSetup.sampleRate = 44100.0; processSetup.symbolicSampleSize = Vst::kSample32; } //----------------------------------------------------------------------------- SingleComponentEffect::~SingleComponentEffect () { } //----------------------------------------------------------------------------- tresult PLUGIN_API SingleComponentEffect::initialize (FUnknown* context) { return EditControllerEx1::initialize (context); } //----------------------------------------------------------------------------- tresult PLUGIN_API SingleComponentEffect::terminate () { parameters.removeAll (); removeAllBusses (); return EditControllerEx1::terminate (); } //----------------------------------------------------------------------------- int32 PLUGIN_API SingleComponentEffect::getBusCount (MediaType type, BusDirection dir) { BusList* busList = getBusList (type, dir); return busList ? static_cast (busList->size ()) : 0; } //----------------------------------------------------------------------------- tresult PLUGIN_API SingleComponentEffect::getBusInfo (MediaType type, BusDirection dir, int32 index, BusInfo& info) { BusList* busList = getBusList (type, dir); if (busList == nullptr || index >= static_cast (busList->size ())) return kInvalidArgument; Bus* bus = busList->at (index); info.mediaType = type; info.direction = dir; if (bus->getInfo (info)) return kResultTrue; return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API SingleComponentEffect::activateBus (MediaType type, BusDirection dir, int32 index, TBool state) { BusList* busList = getBusList (type, dir); if (busList == nullptr || index >= static_cast (busList->size ())) return kInvalidArgument; Bus* bus = busList->at (index); if (!bus) return kResultFalse; bus->setActive (state); return kResultTrue; } //----------------------------------------------------------------------------- AudioBus* SingleComponentEffect::addAudioInput (const TChar* name, SpeakerArrangement arr, BusType busType, int32 flags) { auto* newBus = new AudioBus (name, busType, flags, arr); audioInputs.push_back (IPtr (newBus, false)); return newBus; } //----------------------------------------------------------------------------- AudioBus* SingleComponentEffect::addAudioOutput (const TChar* name, SpeakerArrangement arr, BusType busType, int32 flags) { auto* newBus = new AudioBus (name, busType, flags, arr); audioOutputs.push_back (IPtr (newBus, false)); return newBus; } //----------------------------------------------------------------------------- EventBus* SingleComponentEffect::addEventInput (const TChar* name, int32 channels, BusType busType, int32 flags) { auto* newBus = new EventBus (name, busType, flags, channels); eventInputs.push_back (IPtr (newBus, false)); return newBus; } //----------------------------------------------------------------------------- EventBus* SingleComponentEffect::addEventOutput (const TChar* name, int32 channels, BusType busType, int32 flags) { auto* newBus = new EventBus (name, busType, flags, channels); eventOutputs.push_back (IPtr (newBus, false)); return newBus; } //----------------------------------------------------------------------------- tresult SingleComponentEffect::removeAudioBusses () { audioInputs.clear (); audioOutputs.clear (); return kResultOk; } //----------------------------------------------------------------------------- tresult SingleComponentEffect::removeEventBusses () { eventInputs.clear (); eventOutputs.clear (); return kResultOk; } //----------------------------------------------------------------------------- tresult SingleComponentEffect::removeAllBusses () { removeAudioBusses (); removeEventBusses (); return kResultOk; } //----------------------------------------------------------------------------- // IAudioProcessor //----------------------------------------------------------------------------- tresult PLUGIN_API SingleComponentEffect::setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) { if (numIns < 0 || numOuts < 0) return kInvalidArgument; if (numIns > static_cast (audioInputs.size ()) || numOuts > static_cast (audioOutputs.size ())) return kResultFalse; for (int32 index = 0; index < static_cast (audioInputs.size ()); ++index) { if (index >= numIns) break; FCast (audioInputs[index].get ())->setArrangement (inputs[index]); } for (int32 index = 0; index < static_cast (audioOutputs.size ()); ++index) { if (index >= numOuts) break; FCast (audioOutputs[index].get ())->setArrangement (outputs[index]); } return kResultTrue; } //----------------------------------------------------------------------------- tresult PLUGIN_API SingleComponentEffect::getBusArrangement (BusDirection dir, int32 busIndex, SpeakerArrangement& arr) { BusList* busList = getBusList (kAudio, dir); if (busList == nullptr || busIndex >= static_cast (busList->size ())) return kInvalidArgument; auto* audioBus = FCast (busList->at (busIndex)); if (audioBus) { arr = audioBus->getArrangement (); return kResultTrue; } return kResultFalse; } //----------------------------------------------------------------------------- tresult PLUGIN_API SingleComponentEffect::setupProcessing (ProcessSetup& newSetup) { if (canProcessSampleSize (newSetup.symbolicSampleSize) != kResultTrue) return kResultFalse; processSetup = newSetup; return kResultOk; } //----------------------------------------------------------------------------- tresult PLUGIN_API SingleComponentEffect::canProcessSampleSize (int32 symbolicSampleSize) { return symbolicSampleSize == kSample32 ? kResultTrue : kResultFalse; } //----------------------------------------------------------------------------- BusList* SingleComponentEffect::getBusList (MediaType type, BusDirection dir) { if (type == kAudio) return dir == kInput ? &audioInputs : &audioOutputs; else if (type == kEvent) return dir == kInput ? &eventInputs : &eventOutputs; return nullptr; } //----------------------------------------------------------------------------- tresult PLUGIN_API SingleComponentEffect::queryInterface (const TUID iid, void** obj) { if (memcmp (iid, IConnectionPoint::iid, sizeof (::Steinberg::TUID)) == 0) { // no need to expose IConnectionPoint to the host return kNoInterface; } DEF_INTERFACE (IComponent) DEF_INTERFACE (IAudioProcessor) DEF_INTERFACE (IProcessContextRequirements) return EditControllerEx1::queryInterface (iid, obj); } //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg // work around for the name clash of IComponent::setState and IEditController::setState #if PROJECT_INCLUDES_VSTEDITCONTROLLER // make sure that vsteditcontroller.cpp is included by your project //------------------------------------------------------------------------ Steinberg::tresult PLUGIN_API Steinberg::Vst::EditController::setEditorState (Steinberg::IBStream* /*state*/) { return Steinberg::kNotImplemented; } //------------------------------------------------------------------------ Steinberg::tresult PLUGIN_API Steinberg::Vst::EditController::getEditorState (Steinberg::IBStream* /*state*/) { return Steinberg::kNotImplemented; } #else // make sure that vsteditcontroller.cpp is otherwise excluded from your project #define setState setEditorState #define getState getEditorState #include "public.sdk/source/vst/vsteditcontroller.cpp" #undef setState #undef getState #endif vst3sdk-3.7.10.14+~4.13.3/source/vst/vstsinglecomponenteffect.h000066400000000000000000000164311461511344300237600ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : plublic.sdk/source/vst/vstsinglecomponenteffect.h // Created by : Steinberg, 03/2008 // Description : Recombination class of Audio Effect and Edit Controller // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/ivstaudioprocessor.h" // work around for the name clash of IComponent::setState and IEditController::setState #define setState setEditorState #define getState getEditorState #include "public.sdk/source/vst/vsteditcontroller.h" #include "pluginterfaces/vst/ivsteditcontroller.h" #undef setState #undef getState #include "public.sdk/source/vst/utility/processcontextrequirements.h" #include "public.sdk/source/vst/vstbus.h" #include "public.sdk/source/vst/vstparameters.h" //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ /** Default implementation for a non-distributable Plug-in that combines processor and edit controller in one component. \ingroup vstClasses - [released: 3.0.2] This can be used as base class for a VST 3 effect implementation in case that the standard way of defining two separate components would cause too many implementation difficulties: - Cubase 4.2 is the first host that supports combined VST 3 Plug-ins - Use this class only after giving the standard way of defining two components serious considerations! */ class SingleComponentEffect : public EditControllerEx1, public IComponent, public IAudioProcessor, public IProcessContextRequirements { public: //------------------------------------------------------------------------ SingleComponentEffect (); virtual ~SingleComponentEffect (); //---from IPluginBase--------- tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE; tresult PLUGIN_API terminate () SMTG_OVERRIDE; //---from IComponent----------------------- tresult PLUGIN_API getControllerClassId (TUID /*classId*/) SMTG_OVERRIDE { return kNotImplemented; } tresult PLUGIN_API setIoMode (IoMode /*mode*/) SMTG_OVERRIDE { return kNotImplemented; } int32 PLUGIN_API getBusCount (MediaType type, BusDirection dir) SMTG_OVERRIDE; tresult PLUGIN_API getBusInfo (MediaType type, BusDirection dir, int32 index, BusInfo& bus /*out*/) SMTG_OVERRIDE; tresult PLUGIN_API getRoutingInfo (RoutingInfo& /*inInfo*/, RoutingInfo& /*outInfo*/ /*out*/) SMTG_OVERRIDE { return kNotImplemented; } tresult PLUGIN_API activateBus (MediaType type, BusDirection dir, int32 index, TBool state) SMTG_OVERRIDE; tresult PLUGIN_API setActive (TBool /*state*/) SMTG_OVERRIDE { return kResultOk; } tresult PLUGIN_API setState (IBStream* /*state*/) SMTG_OVERRIDE { return kNotImplemented; } tresult PLUGIN_API getState (IBStream* /*state*/) SMTG_OVERRIDE { return kNotImplemented; } // bus setup methods AudioBus* addAudioInput (const TChar* name, SpeakerArrangement arr, BusType busType = kMain, int32 flags = BusInfo::kDefaultActive); AudioBus* addAudioOutput (const TChar* name, SpeakerArrangement arr, BusType busType = kMain, int32 flags = BusInfo::kDefaultActive); EventBus* addEventInput (const TChar* name, int32 channels = 16, BusType busType = kMain, int32 flags = BusInfo::kDefaultActive); EventBus* addEventOutput (const TChar* name, int32 channels = 16, BusType busType = kMain, int32 flags = BusInfo::kDefaultActive); tresult removeAudioBusses (); tresult removeEventBusses (); tresult removeAllBusses (); //---from IAudioProcessor ------------------- tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts) SMTG_OVERRIDE; tresult PLUGIN_API getBusArrangement (BusDirection dir, int32 index, SpeakerArrangement& arr) SMTG_OVERRIDE; tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) SMTG_OVERRIDE; uint32 PLUGIN_API getLatencySamples () SMTG_OVERRIDE { return 0; } tresult PLUGIN_API setupProcessing (ProcessSetup& setup) SMTG_OVERRIDE; tresult PLUGIN_API setProcessing (TBool /*state*/) SMTG_OVERRIDE { return kNotImplemented; } tresult PLUGIN_API process (ProcessData& /*data*/) SMTG_OVERRIDE { return kNotImplemented; } uint32 PLUGIN_API getTailSamples () SMTG_OVERRIDE { return kNoTail; } //---from IProcessContextRequirements ------------------- uint32 PLUGIN_API getProcessContextRequirements () SMTG_OVERRIDE { return processContextRequirements.flags; } //---Interface--------- OBJ_METHODS (SingleComponentEffect, EditControllerEx1) tresult PLUGIN_API queryInterface (const TUID iid, void** obj) SMTG_OVERRIDE; REFCOUNT_METHODS (EditControllerEx1) //------------------------------------------------------------------------ protected: BusList* getBusList (MediaType type, BusDirection dir); ProcessSetup processSetup; ProcessContextRequirements processContextRequirements; BusList audioInputs; BusList audioOutputs; BusList eventInputs; BusList eventOutputs; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst/vstspeakerarray.h000066400000000000000000000071341461511344300220700ustar00rootroot00000000000000//----------------------------------------------------------------------------- // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst/vstspeakerarray,.h // Created by : Steinberg, 04/2015 // Description : Helper class representing speaker arrangement as array of speaker types. // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #include "pluginterfaces/vst/vsttypes.h" #include //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ // SpeakerArray /** Helper class representing speaker arrangement as array of speaker types. */ class SpeakerArray { public: //------------------------------------------------------------------------ SpeakerArray (SpeakerArrangement arr = 0) { setArrangement (arr); } enum { kMaxSpeakers = 64 }; typedef uint64 SpeakerType; int32 total () const { return count; } SpeakerType at (int32 index) const { return speaker[index]; } void setArrangement (SpeakerArrangement arr) { count = 0; memset (speaker, 0, sizeof (speaker)); for (int32 i = 0; i < kMaxSpeakers; i++) { SpeakerType mask = 1ll << i; if (arr & mask) speaker[count++] = mask; } } SpeakerArrangement getArrangement () const { SpeakerArrangement arr = 0; for (int32 i = 0; i < count; i++) arr |= speaker[i]; return arr; } int32 getSpeakerIndex (SpeakerType which) const { for (int32 i = 0; i < count; i++) if (speaker[i] == which) return i; return -1; } //------------------------------------------------------------------------ protected: int32 count; SpeakerType speaker[kMaxSpeakers]; }; //------------------------------------------------------------------------ } // namespace Vst } // namespace Steinberg vst3sdk-3.7.10.14+~4.13.3/source/vst3stdsdk.cpp000066400000000000000000000045751461511344300205030ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : Helpers // Filename : public.sdk/source/vst3stdsdk.cpp // Created by : Steinberg, 09/2008 // Description : include basic helpers cpp files // //----------------------------------------------------------------------------- // LICENSE // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of the Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #include "public.sdk/source/vst/vstaudioeffect.cpp" #include "public.sdk/source/vst/vstcomponent.cpp" #include "public.sdk/source/vst/vstcomponentbase.cpp" #include "public.sdk/source/vst/vsteditcontroller.cpp" #include "public.sdk/source/vst/vstbus.cpp" #include "public.sdk/source/vst/vstparameters.cpp"

r/vf´R\eM(ˆa"C@q)WWU+wh]=&yO8R0Oj-űXU᜛ bW!I `3ȉ-9ĦAW F 'ƉY v SN9v ~p-j,[c;{fN>ovBzDY`gtr~x~PM3EMExށܽ ]j c̱9EvUcAir]rVC.a~=,a[љsOqv=~&@@i[ʼNHw?o/X{Y2ۧ*35]Z)39*$;Mk3a_&?bo=a% J&Z6&S+⽮BV̻ *)۠klz aκh|Œ=*{`*Ox&4K)a.hl?ЂM)L.ƕ8`ڈ)xy5z1ԯDgG`߿rY\ 3!nV+=q {}@{@o'k9sph3 wt{཯O;pʊ*"2LHDo~=VdB¬dž!")`7Ic~"'(@2E ^!{΍B<0fx5Qc`dQ1MVÔO< N<—ld>" FS ߇?GH=J+{s9SH$d ~m9*`C}BFcc`LyP?6TEKC%z/ AK¸Dߧ..!jxw^Jߥ V6T(L$L}0R6&DcS$]e!sc Ni$1E)tM=p.iRdLLsLH\ԀD0 =A~?.ŀŢ?X>S82?/U 1B>PnG/G1sJc ).ؤcS2^n# %ˎ0k݅bYC m1qLKC |/6 ~Ș 13~\P?f`rTD zJ{jO雟qÍVAG  12yor.qc#c|TNfi$v RJVhSR:Wb&,0}v e2d1+\4{TbX =d~ ҽd&Eدd;` ?f'=&ǶkFcCL(+djYR_F%x nsS-)%pCe<Izȗ "ڿр?"&W&ǩK9vV R}6ӛA26`IϪ.U *pNՀh5KUbc{*ǘ<̽P\:!D% AJg*f*@tL1U 9sM1AܚDmC4V 6*[*E+c l)4VܵZAR$YJ.{S3aB҈bIC&0KCaG':/ "&J9)3%yy\5304ت5Xc|;MDD5j' RooMRmkmcȅLēT#ы3pr\E PKJm'R83Y֚iM W6k%0CYD T@?!Me7M]9բF}!>7e0o@E #1kǂkh[ǢtǤoW0[͆b{1zÌ.W|B8=*% Z)H5 $Rl+/~Q [ŦZ=_=p.0(2^8>R\R5⇤oO+̟MUQ܆]w?% Nbxw?Xt +g_W:{f).<G@6EaJ *P*L/5ăPeOR̮St׈d4YS.: svlQ,I)"Rj}w |)q oڭ1PYt~WlśT`c*yF=O9$d -%zҜ(ky>>S<וRl6uMpup|8Pֽg 1f7֮otIiC*+'SL4TB Xl(oDCYcurCTc#ʦxٵ_+MM,Mk,z-˲-`bY|XZ cL T~,On5nG0!^0d>12/SER-Cʘbҧ>OSR_c 0lӠ^<s~'>I`y(%ۅL!g1| 4߾I [(ݨO~YE=#Pt6arʞ5xGsR[1QL< ?yWֿ:36ʳc7a˳xgy#2E{1{ߐ 2#S\ h>s3Ƭ(_d:ʦoS1{l2˓Ӏ7&W5AJ M@hʓhNnv oZkL&L&EIйI}B C`1B8ys@t('~zPb0wNBؠXsl.vU1ᙏ2]yӓlgb6:@kgԫ%М_pt:NvlO'MF"Z 1A[>@ MP?lzfVM'u}z9Ւ98!x;6͌7tx̑T7Z+ Ef5( !'TT+9B -N |f73/Y7B_kZ(HeLYY " FbF`+JUgـ9 9LN[]=/fz.j59ߡo4gߎcURCPPSxV 420d~VT1>zazEx}]j-c2 :9Ι>"(b[ @a ,ei*o.U>`:X̡vx~-ezT"psN^|S礲_0ۀAyq{{S+z{dX-Hƀ%x0Er` cߛߏ'[%3Nqou$(A7dvʐC$ Uo4P9cyc0H%{ĕ]qb!XX =_r?=oz"5}Tޅ]kH _sq7yկz >6*j,cn[-8цB w;H\s"1p ",ԄRLcͶƿ&S.l`\`QV51F0Y=hzO^g[Nͮe|~wA90Mw`)Kr2Tnt.7+B]ר q1lm ]30\l\!Kp.8sBx `,QRElB7m`+`Iz]u /peEƗPKLEq0xguQ3z6=|j4 6 c*瑋Bk 89s31rL1Q%L1|mbb% Ke`. DB>E~&O5XPD"4^%.E1(nflT>?lc}A4fDwol6IKBz)ɕ̿oxO4(OﵠϷ@',Kb+ U5 z>HWHCCr>;Z 273Gecҁ/J*][| <8 j@ŀ/W"( sm㛰wZ:]es.9z1:)HkV+TUúϮ*\oO3G[A%0`8cb[.k 딯FmOœ fuƲ}0M]!qn{)`:dW?U?nG40n RBa  4W5!V 3sv˟wI_'5q{~Dyr V0tEQ`6WY AeٖZ`T5~vY)}wIĻw h8m6mp 4_`ŒH:^d9Ҙ:u 5nZL7Y.(;}?a,o#]k P;O@~aʿݔ.+ip :.#e69"e@suUzYKW-6㖏lg"  ;v3Ŷ !3ubSk(Im"y@C5WHaqY!3ٿe*WT1;lkb>Z*@T|=>@7DJ_hR>c$mΠYÜmR[KvM2 V+UՆ 5^T+;sq52 07.1Pu3oH,ڔ1,)LxKnN:T סpBZp;n@b-k+cbqx~e+aG {Oz: @M_"`Z>{q즛lZ:UWヮ,Kk/̷/ri7 ܇şp߇`\P['ZX*g= So3D( of P8a1O-CWu1Ƕ^G1r(eTA_1|6ܪ˞zi2yH* . ݉4.Þj}.B _e.y@We*RªlU~/t ,3nuNJmb gX &bŒPp'݊ʼnc>{F ϓ=nUX@})LKO+6`c%2y #,l7ĂCfg uڪ> =~/,;`\݄[FS.ar0 NLq~o^:й~'MӬAW%j|i`f&Jo0 ~k KnJ4_͕Rh( ό7aq}#oJS fk³J&\8.{=fċ4O?fz汧wiRd}z7>N^ tlt  `o'U K!EVHk\*|ep]70% e %V醄3ʋ!m0ށWIA<Б8 ~.*]i?O~[x4`? !(wwv [zsvaj A'3Rv ˪0|yYi]TJ{_q ~ F d! F*1*L%-}rD~QެY8<2ιko&n,$H4hcHKSw=fƆZ8Ar@lXhow9kUfF2#2{+͎sjʊ/s٣Uӟ?ivW)[Ьcw6z"%g@xfxY L-g+_,} qpԁlt<i6Qۄ3& x nmQ/-2Y. =bggp4q!|psMr`ӪF-W.c~fLv[CH"P2*p3@iuwkܕEy$_ߦ ;~}A'OC/jZJ.=7MжR McɘH[!׸QGhmJ=,5$gI ,T / ߗsrds@ WSR-uyn GϫuEp0|Ϟelf'ӯN$.s2dønr0b={Yˮ,lr@ǟXsi[ƊZnZa(bqG-:[Cx|LeN @6@O%or\|j"z29|-!+J۳BojP)WHcS^G%l*b8얄ǹoSEQqhu?'ԹͮQ9dA=~}8Vƶ@2*@\Ti)K~# . `uVf)f|ɾny8nyFlG1li8C,ɦ[7+*?X1%g_"*-]۶˵ǝPD-6#]?KI.S)sq=- ~h yr!~B]84Kx TQbZwNdoi̇2T\;J5Tϼ" _^R"phG]F='C eot1o7-^1 Ճ#s]y,]3YEƩ2H9ϩGbh,wVD-O>t{ely{9wrV,z p"~Ŏr'JW,V_ ,e _Z6#0~XzrLjmA!WjkU6#Nߡ ؖgnmNN+y,k:ź&m4]uJвJ~;T4uZkpnV`o e*RpY'K/ W(Z >2$:+lMŹt<"aْҶxxHےeo:倿F`3;E|XC&Ba7NL %sA=߅dDI_ ϑ۱jO+^@Й)9ITQeb#։Kwl QKA{H+.Ͷ\~C Os+u%gҭHG7ZDdhLu%L1X}$6߇Ǐt4.*-W7]) gM˝Jľr4dZ, gs<oάd1c^N;U"zyB n]TJ1Z+_$MϷϵ<$Y-%}`=68'/7*H$9\*bκ!RG^*q /^@Cߠ,3Vbx[mPYVsL9ee"GbKLsɜfUdc0ȖR7 y̎-*K39RP1:\ѩ>J/u" Tr ( *_غ"afj4%^u33o-c="Qhgi8U$]*5'I(j7sm5=wnL>w,!Wv+1oɡer-劜4Vr\29}uT1Tgq W|I mvgj hnApb}ba}6iŸeĔr܃a3^ǥ,%3kDQR g(^=c/N btW2 -Zq"ӠF|sAWw͔=r)RE/(!6`a8x$tjͯĉPs?N#SI)XRrfA;kTz:|k q }Ʋ*fhLGP{!K$#vC wJJR@]4@&~v#s t]5ĹHY<&3Kbfq&ui&84]l@x ChPw7Ux mVvNϝUƶOojh+=z#׾B/PMD:=WvW܊;9o<\>&#"#qLF؏2tki$@AEHPFs;gj)DKSBvH-+7PQy^ |~Jn|.gĐaàPK~#) 26JoM. bŲr6/ST] f&s~ؤb9[OY6Y:&-ǸTV/\=8Mbet:f,etZ*F|5J_f7Q@8J|T}jؗ%9 D,~'gV+Lk szj*E.NMy|x)D|F#Bo*+3* qJeD[:5Č[>1U 8{sI{ɌgAQ_/#onVjq΅jj[^i%׬}k6X)F.3pstL71t\6b:Dr;:ntn<erRmD2\M[bMa&PtB}[ | J|!c1 ?1e3簠&&eǟqFD"2 "]*F`SL{rY&:V&Pm}ߵjXd e邊\ ] %I$ |uiMUW ])ew;KȬ69$ tRƯ\Jno5ˆ-( ]o{bE'wq,_/QO؎n0ER&%N>/DfB%?7μW)IDWd,/ "pL`2͇kQː-HR̒ʜK1~|0[Pm䖮~y)axmm|0r 3Z`8lK kF_\8X tQ?y#v-4:YE8ط)WPOzC@*8vɹpN{wn1%Qy1. #aeSbtZ:WVWFHN3r%Sԍ Qmfν#@9|)%=r.+@2HXPB0re2s@30;V$bn&xPe<vq`6*JpӁoԱ%&P`4F4Miρi@UbS϶u%F &Ў T+bMlƔS={ϲx>sص% ʭ:UD8۸FO[cQXq}عlc-2xG5cK5R/rPa5e/0RAWq-׀ރHtHaj:oE6`ݓx0+`nF*c4Lf&Cb{[Ŧ+9EFΎnr?blF&Ga"vJ7vR C 5> !u9lߑUlI3#N3{x92)I©Ǥ[[@ %$o8\ cuBRk>F[ej8i6\M2\Ms`.K$zrNRZ5 1#YTUU15x׸qlmcמ| av$.ߜJXÊ憧XC},+#=kPZ2'2sR(åA,AbZ3\Qт+bA \/DZ,묌 IDAT%̇@ @ZNέ?s??n`GĀQI?9r #dY^LMz޵X7u`s?/PYp9S6Tk{J4KTk!T`y*NN$Q"~R$/ G \aeOx|%x| <i"ǢK;Ww 15W2W-z@y%rh p' L8]1j~FQ%Mn0f 3V@Z"Xq )*vTx68.1m#"q+jn2#5sbJ!*L)N;y;Q.R $&G0cPϸq$a' ^s+ w@8:Rr!-ZRO;J`9&KKzɱ[,a5uXHwTmr>af#Nx$0u) xf|@=)=-sb|$WBae?fNM0L>IYcKp vhqOfzV5{'g@Ez(%VΌw\N0ʪ b̼ףڨCE AFċLZN20wփЎfOUx EpB_Υ"2]KNWOy*00NK/d~6.g:uD>ֲzϰf ˍб_џ9 ++rGpĦ͚ؖ|\?Pj,V|>l:36nV}0֙3}(9v Ocw1[cGqfTԡIo.0t匂\vd v&K Һ/WHT<ZP9 ^nT.@rŋgY= HXDWݒһA@xrߡyBf`#xȭY؜q_9pNYLPʂѕ \Lq`.z,2Z[ T%:%)|Tfu2esuYCjxiW^OHLWQTI^OM KKpxDLXD]˗x3Q/^ &AG.*U^V60drw(^%cH-'h8ɱژ oN N8mbiZjXճBwXWnCu5*8pSQsnIERvhTl?c bX6a,v 9 #HN$Xݧ?\0|@w!*WZXP.)3hv/"Y8٘zYZ}7 5&]`[:qNf1~.E|)͔XeHH *gY9+$/ΡTt͇3ϻsjUH|~f'?ⶳz;Kf[{\E+>תCM E&*,0ămل .2BJVb1t#N&n 0r+S},&Kf9 h8?Y_Ȓ"B8Zǀ+7b=op7ZZNi %* *QՓkڥn9%!q5rr'fhCoא\ W}{ڇ1,HU]U9ꑃma#^WL%HfZZBG avǴ.唠>ucKKz%Dx7ӰْZ$]b-.9=Ş_^ke ,ad س%h  zlMi9#"y$Mp +*WG\1[sl3#==Y}ƒS'wiir ܡ'ƣJ>uSY[`Jٸl®9~EŽR%=rLzCW(PNY)KW^*!F™|zN|_|d1[B^+Z]ATbƉ[*KMW.10F#"pI]#tsb} S | |tZPsR߄me/p[,Ι szAAo6"lVQ4fG$xNm`>bsq_Жp-VDF_"M4uG$-6|ᰊcG5cE@=`#2籹ZoR54p)D= A7B8ALZXAl8TÂ3w< ¿J*衛1ǟx9U'ەn{0|^j#,[QzRDao?Ry@Y0-@Qjy DT-^sxs\98ҝJIS7s9xH7̉'Me8 nX?knth/dIj&]LW<`bZXuJe?D"VhG2:fp-}' HTn-RpDFԍj7 C^:3b'd169N?d.-|y? PSy\^⻽eb#T,?`yV"r.hYp5[:K/.*I徯j|\J6rZ p% +xv8N(I/ؖ!Z=hI->OmRƂк1D9| =꣛ÄN3P˨47t5Ht9{~fKXRENsh텈.E|D /V+H)jh&ՊNrge7Q?ho, ܬ3s0zVJZ5o*!yEJ" mA5M0aȀg<l]xk0ִ1t/,$/\^w14@[)6Z1]ﮇ_p/ !a]1~O-1*w_*99OlhvQNNѲZyz֮PC<]JjCkV3C8vvEzade6mr)\N]J[k_p5iZVnN"N%(FP22 \w=99%0Q'UXFa6I7G@p}шA)dCNJ3Z_/C!tb:fJ- PF P[:XOs#fs7;J˦OMVO٣E *\e>!S(= RPEK{wjUJt3'1Ɂ)'BHRY vSV͌ Bn[j( e5|t)6~Bx  l1 gY3mRutLU[ .ҭCr׵LKܴ76oku:t]Y}6 ^HlUHW o:{4 KP.,ЁrYÏtNE\ 4mL;STHR/AY`T8bu{< PQu\\Ds_*v<|#ը[ d*1%Ekf 5-> t7~ -.ּL)ಓ\E rkTa"p6o"6l?{sPIHfKH'`POƈfyk$Z(|۳ψ58u:zgIG.8ѶnNު`Ҹ15~fƆ| j-3S{R[: T,mly-p)/.0讬E50ĉnvQϲlLjI&qbdz<)27A_!v0h(#KͪIgoǏ`L($x0ϑDzb9kp)sku:|)QTɔYNYorMXơe`ݔ ]Vԃa_ųnN%9:q ?$CM׏V8rEWH$i"A,+=0~Z,4x~х w7nytK3gq x߶-RT| IDAT :79FzT۶;05-<4RCHRJ(ryryʡC6Fwr#,Vޜ$swET0"Qb`;?redADFd-m$ۇb>/2Brsy&OE$Gǝ@cfv65r3o`wwo: wm\lLsT[ZW rS5͙Z/^v^I68QI X " _'cVApT-~=Ry@'8<7kn5-\ 0m ʚYEJ ]LLds;E!2KẈ̂X~_;]l0.Y$Eb湨`iokD' -viRM)T;L/f!#W?shn֧aC:Z\ M6ɞb>-k8EXcХ\JU2 :vn M2QkE[pEE )8/$ԏ-8:dyJWN?f%/DL'J`\I&Á]a}~j"\Is~nyqU?G*Jr2 `IwV-NuG}n=u.D{ZcQ[Y F>7q5S"dd;t!eHF(ؓ5'CMJpe *)T>.q+ioc8\ﱯ_gX^k c=RV0T]&g\L~92擺`Cd>ńMnKؕUIQuLLa'K딋rK$tr5cppe W7>U(:]vQ=[kFo#>$ɕߩ~<jy~S^J2!Ygsk/.xsyJEGʁ ~0tUSjR]k:UrEu784oFYx㦩kA U}+TE`#)9d} r8q/B-hHrDܶ=vfYraNme؜r^PQz<*Z90Ѱq@}՟0C+-0g<\D?оϐn u-v"A~)͘.").+W$ S wT4M{ ^ p8`^p9r#//Rv,*[V21Fh7'OU Z\;յkG\Kn)'+aZ'cbm ꊓkbRg~ r =95afI/(Dl0d"G}NJ,l1$JPj9KҲv\tH/bjry ,' /k傪5wt&vͅChiN]S :YJ=X6pX7;ai/I-Xw)E.SYENh0< ~'?Dm]\sbעtr=kmJ b8Ի2)>n/^A>%]g,jO,NODhvLʒ]QASra6/M`A|N%ȥ'qY)Хt3qbmJ8(酅zSIv;ud0/eFhn7r9ʅwzg*_#^d*v+.A{@xٿo[5X^"Zd#9m?"Y5#eO\Ix9pR9S`\Et$,{l-s]"I+7%T<Bp9О(-\ٿ/?ALj d +1Mpẍ́bu4!D+ybch+ٵ/0I`,I˩D@-S3H3BAhr\@GEfo!|)*MX:|Юh*˴bZuWD dJ" 9+Wc%R>/*S$Z"DiB _RyK@-Y 7)_Wā|7Nȕ\y D7|.~olTt>s8D@P?8+%|kBǒsa.znhq`bBV7N_[!p%R p37^=_WX6όg585B[tJr1\u 7{f7Dr >yʨRdL p3WFlAd2|-bKU;$2rf2] Kc:9.)AA=v_m> ॾEwdуg%v='ùTV1V' BM 氛`nCМЭ\*pG@1eN:x̗@؀sRdf"$>7X`m %yRhYs}s7ϸDe>S&0=/ŋWYNcpON> b@V;=%vJo.?vnM5+@%@e"s;mB" YfSK9Ęk0.C|#L¸Ӽ5'@Cƺ!A^\c/1ICL1EϷV 2xZVYa` +L 9\TLO5BbSIŒ`]ܠC9&Yh$'Ea"5p'Ez!^ʵ|lA8oNgY?Y1T';HJ"FƄ*rr iYB6>U9ץ62,g8NUOqW-%_\#,8W'txWiD]S6]W ޶Wz2a؈Ds,AH_*J,5Ъ\NJ .3 N$teF"NyA?)YT!`UJ;u?,mPz6C`1NX9 gHlx!j^IH6dk߶煊v['tOyH(wgߑ8 譈aAݾV H99Lqs@jcq2cE/i"mP$y2G >f$b|,FX}L^;1\X`܀A5v b0,Z „5ɁGXzE1(X) b?_fVՋEt3ƹ:R~j4|1nHw_zX,FČ-(^a,O7)'Ъ2.ͪ\ bR^|^b8c\juxLc"TE ]=X U BTϰv)7x9(¤%N)5/7TrpDZqg/?1ZHDw@}!\$0[׉LDj˖k@,R5Lx +7Q1Z-b5q8 t3,d7τ%\`y 4@iޜx`1aljmbȮg]c(ߣP-b~-Hݦ;ɔJQxEoѵ w)z7)kgŚ[OۡscrRà`9U8"yGzNLE}} ;PG7תXF {I/1t;Q]BtCz}<Zw,,Zܵh}gV[N.N/!sM0"(#n 8EoqEq{bј)Lt\I²HX[,(]b>Gb#'\s)`t)#M`,4>Q~Jg:.H[0!JD\$Q얈_[)!5µ]żĠ'ŠX*2 kHR(ON91T{ xZ)(XYX袟u}*OɆg+?K8h%,RH5D5XAq3X*&PoAB )c%Xǥ6DU'n%~\ZXUYL=$gx)SɟXze)X|l")uaդM(1#Tl`kff1v+NH-686"C- qaw\`DʾXP}JQGT|X̂N0Q5sN1.a).빸8wI}-ٵԸt=\R}o'YdkDvC70ohYۖح#KxAmb?\t z!>1K. e> 0BŐ vS5lR$U !rd\`W_\j|$E{ ˼1ҥ {a`PXFibJ(,Y9jTv®8]YJ2FJDVp!Rn15‚ŴBOID+[f.DLv!XHl",85:UP>X9vXVشd@VЧ-;ok"R1, a*qt[K.q]0J s+Ġb$v$|=Ɛ䆊ezwBmt= c09G$1k[ʟ%7ȺN+QE/"qx_o)+#< jG0󻋁9҈M0*Fu-SV|H_R祁(Qđpn} 㒱_Lx}9Hʉ*SG)Ou/%_c޴ݓxZY hP,h%ngZTT xlq@XZ=q+Ro颫+‚ Y%Kd*Fwaw% =Z$<0݌Vg!x~Cԁj9FKz`c,kJ0n:xG%' a޲>VwTP+7¸VWX["~aH?\@Gg "e-HkIwٸZגxtY8r9Rq3b6(j0.h+!0bX2-`N1%1vCvj S uEڍBz% H %@;NQ&ݤBo>T[G +pH )gF,ET-s?%}7Ma-EBʎ"$gbg'ɑTDŽ)0J+lO& |s H9R@;}S/JP .Q.:X*e3{p  (a\>6z9V 3S[Q  yp5GcjiaW>W>6ehIs6zx5CsZe]ןćpdIgwӛkUٰz9Em.#e;XYdn*N-Gx'\aN9ʍMYk̵Sq7d9`KBٟ{*f+X˩uβΉs 2~0#~Km"K>Usmn9hix\ 0|>cq\^C3YsR ׳fZq;\M>6Ft;s1ޣ91g;`<%L0Eg.O`+.u֔&)L%g\ǔk+t;1=i埇 bbY"s9/eе| jͭቘSc &B݌؝kVH؝.~%gjserS>=rذsLa)Dž{5 D~0amrNUs9@]%+sA{b C0>KpasjEbص8>E/hXfSԌ] ?$G ϚN-̩qꗜܘpNx/'T'4"r8gN\5A<6j( fO'X=͈R $T#oNokM' @>S'حi*,+e<+s/-$(t8ut2(R`iW\wT8;/@(o0'\oh߄%tU=\EYra&3n>n'=321Tܖ({8Adģ^cWڪ:ж_A_}"|{Cdx4! oE<"Іm8'Wx@Tc~Fνp"@xZVi.ϖdU\йBI7D*_kM\bJrny*?RQ<a}4zwNPqFMrA{לû^_0\Pk meS*:ExfX 9'̫>X\.zsD~}L/JM]3ԛ7@I( Ww|2fN-x+X!XiMʜsr%9䔅tV;~X޾|\}6oO^hV74G}<4@@-ȽG⯩(=3þ 4x D g?q IDAT 02y)Y(zzk~Õ_,ۓ(4wND`,c|}0ɹ T.m7?U-2tgͱ>sma=_{:-㨠3tjDu>ړwr.( .9 ^"&*N\1˿2!bw%qS)9_81|%2$ǔ˘#M(fZ.cT|_bso6{#II鿭 8f-O=/01=8?ǡ[cT¾ 7I&\JhS,eYnŤsbyoɹ {'b-I<=KUJN6UȀ-KK//!x1lCazӋ ?چ_l%"ΐlBp4C9M[UwWխ9'3"~?dF?##"TUsH={QKJ)(@Dvr ?1\w9+Hש/ xϕ_!]e0_[PqH( hpx,<$!AH +*߂.6כ J7䉌Xu?˗ RTU s'H.>WH6ziIco+'R Zh Jicn^ `9kpx9Xk{@ ' @RLm5[OwNw#f S)>9S=sA_(lEuz(P%fʲDY=-\,KYXs/S@>@BkHzvNNDל)I%@a)ԘՌ3D )r,g%4P>ȯ(]; v΢ޜa{\8"ln>w e$bn Bkr;1puCkNVKOo6O˸/ bh P<!!јIj~avs_)G1)504 ͝d,'-R[pҽW2)+v)P`Lwd<|Ƙ$Ū\Mv˙m51K8obŀ6W='fTͮ<{_b׈*Vl߇9Uҵw'y|Vsι.th`tMY:)KxWu9 rqfl陈%ۙDwBZ$~aK=T$ST,ӟz~\*W^rzC].yr>cXt[,]<caʅIw9lc1~if=u{DZH%\/g,7E rk!!FBGWk9]~~̊ۓۨEZi<<ؤ^H%R.~ ͐ȁ7zXN~J [?R۞|d!OE˜3gdI$;ӈdp =*iċV.ʿC=(X,WE-K,ySZ: \ \ N.cOf1Ot#eL2y4z.?Oo;3X_ƴNg9H?#0RŠGrD !=8g@)>r~R_3b{vNqeYwppгt!輕 YfB3cm (9@Ō T T.I\1^Q©?*9 њ'Z\'..)Muā7P6F\P{ ORhg>s*ſGc̠\˓k)9)x+wppY9B+cCˢc,c\b1 S`` Ö30N MvC93L5Yȹ!BM"7ۯe ) /#O2SM&=WObyx+e`c-ބ}lYŻ!e8bzE.%Z̜EX+q345pL_Ҳn3sFp 8U뺆1/^x]-7_78O _rl%n(H #gt: # &`zx~p_.D/;= ؓ['eoDpppj#R/že-x:ᒳzRnh,|ߡr!R'bQŜ"HtjʳG]7t1³޾{a/2FXqڅ,| u 8ux:<];\`:0Xp!B""cF|f Bw?!7 cOꥬ?iWBo AJpeU~ rR QtN|O-/=_h]|Yx;%8\rj#VGлt~Azu` 'jm >V;1m1J}pEW@.Q `}đi<z)m1\Ƴq";3OOuVerb8x)X~𾣵?RM( \lL|3.Rςyp󟵨֧MtүX.8<<qxxع2[na1Tq;@H84dH G EGAvCO`("4&gl %).ՏChc #>m ?/F\:Ԡ"2nl 9tSTÝеNZ:xNWUUu? c[kbR]{ 9Ei 1 2(kc8X!72D]<6fUˋC6:H{THt_AY13 ##D~'^l?DegogAH .tVNuҵ WWPx6i0g}@BøN~ej[ ,tCY$ECI/@x\xv88ua&vJTW\uvk1?gݦ5h*ay~ s/\{/t1lר|0p/cY(tGGG |t-ª1f=&uKWy@+)ozs뢝%Hc}ZRb p?c(lK*sݛdв/OHy6sXt̥'NmUTҦU˻@]'b9ii(: 8ne2 I4& ؕe"jnYx Aa]08gf QO5^X=bCKJr'~IXxf8Sc{r {}l]ʘnX`Z \|<'AWUJcmOm-DE`"w 58pw'`Úq; v'[rXIi#v, v*R8Iĸ Rڊ?v ξf%@DjX)q=}X;S4Ոޯ Z=ldG[SM\-fYO&8<q0Tب[X܄i`l8qĸ4S4MeY)Fj0f ,1pp1jN~ &U "`W0%eMWJ;>>g,d[R dX2pdy?2 5cALh'ҳ-dM9 NҧRdˣ0^*\˺ƣ.Zo$@RQѻe/ 0 xC ) BnߏyqFyd(4D%RƄx4@PL-)t8i X)]=ʃ.t;v@^1RCORps5)鲷̠R1٘NXf?}a~N?πF'>YF}zV/3zJs-CK}c--µ5.:A׈>D8-. ?mb:=AY 'x׉,:E Nɋi06"Ҹ m8ñ%Hopy?s͑ #2g+)߹40煲bQx/wL1saXKz%>1Ytman0=j!SҸwUX| O J` :?a0)YJ﬷'5(Nܷ|JOz}/~qr $'N߽/UO#$5GӋE*cAd0}EW-L]6́a#q3p`:Aw10d6IkOx WfPO|.8pn [Az!1;F$mƴ>QX\9HrFAH@-xj[<䵺pucx}p6jd- |LKy0^WV55XZmDF EJoeorayi^DbΊm&3DSpE߉ =R}d1ϹH=yr3r^½O㢄効j$6,B몎旯GDK̬h7:{z xkL >YH*\k|ecphA* XlmIӮV%Δ^Dw`1gERРt#i!!)<;p]CT;ݣ6NQC͍ x&&+Q?z:g^RB)lc gku! /λGJL scu a Ec,l->j)0 ``kޢ8!R(crIGp[laiFš@S寻zamH4u3Lm*,^Xw*Z\*?WԟmT6[[o`ώv|" (E]]]زuly1ܶi( r:WX2696`Z0{.ꔅn-²; Ejw"<*-j/bh#\K:Os=2I%;oĂ*3*.?LJuǢqKe09 ]u'DOre8/O׮HapFevx 9ĐH3L#{Ff`4ocUaFq^lR8&reU,@$_܆1tO C܄IK,4a7s"wtu]Y+GC\[b; 6y Azy {9ibYW̌ݕe<_/u+KX'@ˈ(LJNKPI7%rBKYZPz~U0?.wYp6b^]?[COɬ<.VB]x5Zޫ¥F)/[` V4&,E=EP +ؚV# FC\'xavRfiCXN~RAs4>X;5^ >9t=J܋kI"z`*,y7W" K.Y>D0λ>.qd40,hbtm!87lJ~)ibsi9%{pMΪPc- f@JMe6 m/ҏ!T+5WP[mNqmLcOMNWw1f-&VOv&ׇ&`3K4L*Ŕ\R'A!dSV< IDATLE\#ᒴx NaP%a2V䰎tzm7 TCf^wٲ7/)ܨ6m*2pq> Ad1UX?D@wC+R21fvϴ{w}SȀaK) TdP@)r3v JG3#2ÅUAL&FX@.߱sff=F+ˌa,評S ʶ%Mr A1~ cdzo_(pxJGXpcDp174]5_bVZceK*Oylܨq39!;9qH )|wǴZE {J!qyuLAa3 vL˂PKYc3'5RX@AQ_| Ƈ0kawJ7;olo< EӍˉ2B$=;e$->}z96hޗ9A;8v7[;b:fF̌sWĺ} x-&YZ %A$ \LѮzWiMSjRr7 6?UHzDqySfHEk#B搟"yyؽ.j4U`FDw@B XȂrnd~'-^ 3e,z;hGp5SEbG DW*@g`g0H2BHh a i( WHc73>l(`5UX&1zy 3_EMk7BLdx&9bIpJf\~SV|D .CSW#Gq9FA.p ׺C;/`vz^lȻ p&oƕ06b™8rolt Xxa=uDV.E31Qbe,o W #3Ǜ_'g2OIc0ES!9܂m9})6,Z~ 7&/AX&*'j0R %<87J+FREt@"V#2O(RW8 \[m΃$, 3ydJ0ucmL ͙2^F p,z Ilb;l7,e#,^hÖSu)]cbwd&OR'2PZ"|1Hu@؈5VB R8xSJLJ=qb(av0 Z!#P\QaWԠ&9&ǩȻqm}Eoj`s$r(6YGvcg;灃0pH*%$w Xb=,'GgN01h3BJϋrqȷW)Rbv DZM9'Yc?Ρ=HL1ckpбI/InᑱE \S>Mr,%`KPjHʊ/-o/*Yʩ}5SU )*6r &z~'&Z:'d {;҂=nZ@뎽wMY'4p.RXS}}@ TlP jMJ] S# 4!8c5ث5ۧYsC )%!T;"8Z0v?Rڳ#"׫Y]D1kE;޹?Lfw lw;`ʘF-&t-f4=V"fd7^SK,|~ژFi˗*X{3B!hl4m*nn=%v6u 'ɖ. xT!}54-PVV'X\呍y՞2p3u`ĈRLS9ǘNX? XgvXND]@1u1TN/Y^904jH5v'r[(ssčhO̳(~,St,.F4A"& ?&RZV/PB"0WiΘ}<2@YBKlƌ]"žcig)wF,^oo6 BA&%"6:F w9Lh'ki&#<cz\NY)u}SkbϸIp֠%d0Q$;A#'!/F*RdXkyrtF4ZOHXdbi2ĺ+U,Fq- / ? ? i@ '^3"Ԕ z&KA:;lQ8t$^wˌr欪}sf򈹓ԲW Ó8PCǐ/KEX&sbg$kKj{;?ڡUpΜId8c c)Ru1|E78 Z&2EFM>-@.BD%8E~8;K- &B.J\'i#WRĊ|N d^.\;6f;Ϻb0rzZ0cfP/qBGv9BBj[߅ްU1p/-z=/<(K&Qy%XhSYOP2sϚ bEXty?C\LaXeĦէ ) PTu )u̽[[0ppkF* XT[nT^3Rb߂[bP͞ƾ8i[/eMxIoEɢU@QB@蒪M|X,';Hs}5©6gr(f+ҳ-[.d8}k(%Y{vvV(1oMïqi^)uRvW%BJ\*ǖN%grYDz&RŮmDƮ+:^F>KćJp [G[sَtߔP"e p5'/3.Ca-7ƹ5Hms0]צ.)co|Gx9HL'hlF7L\׆tvy`)al C&lNis ve=vv hWPQBNdO,Fqe24v+%Vx 7a p!"υkv:9C+Cw3'^78˧~&|'gZ1u>#%+.fs5cVaזbB]@Ĉ;!aۺ"CkNfn3k^JPK2EfQ)k%Es?8H-'?@לAW؜-v8q b}1Y!{|Aߚw \mDO8?Fs; >I9!e IhTC)#Rۍۜإ ~3@!e)|;:01@p {nN_w[FX:PX=e!%|wWbr65]p8/8A~{)s5cWr)*)RNS#D Mp)sB ~p:k1˵ Ak [bI4Cyл=c1.MRse { m6w\WğI#9pNuy{.)-cH}nY1kNaLU-dAb(>r e^ gjs[-VԹAq? 'Oxr2o<ݝEOǶ1E׊$ x)b"rS%AӞ©a1ꔆDSTNcʎ@xta8FV&c0D_݆9.Fym,3E. 1 F'ӴW|7wkM*ߑ1&K:1NSS!vv\cFrp*-_8]}S\c|?<ρp/.S%![|/av7Y!0lk9֬31]4YP)3|CHˁSB3y&z"IxgR 40[DHW?JHԏg̸Vh4l': нS&NgF%,Rul3^`-:Zsi&5(_o?DRFMb^!EΕGŐ21?YP9mΎ> GiPbk Qu @Ì7PSmKk>A)=H!J'ZOu]k#H9c9OG$ebU]8s'| _#s Bcrx7ۅ%D ֊s|ם߀3T;Jn꨻)c)I6n9;hȼ3<B28A0]o!OSƃܒ*7Gs~=>Ɠxe}Y€$:cG.v ]pVV@U IXsuwwX @nҀ4 ~ֹ2C#(f}X1^XS 55vDeVxzϫJۀ񪫛 \̨Vņ]`-}ftEB>sHnƼ8cd &8Zn,&PM8g}g79PYLu_?FFl%0/|k:soc@4N:>§%@.>\$$]wo*8F7ٛ𵟻 2ƓJK9նN. ʩ*q ݷZ!3OB޲fY|nIƘH|LI j9{]tLOq (܍ac9^ku#-t^qKjz3ㇰx U8RYsF/ ݀a}*FSӾ5J^BMf6o *_9]FlF;haR ȸQ# ('KRTɚ%-/0mӄO8Y!'I3R]8zk4l>* _|KDx -\+)UƦz gu 62 \$ŋ  "lJUx mjoLIP7_kWoW#.zا̸JhycY4fXLRMkfo -rP$;3pO@@m6A {1cXŠ[O^lfNJ)݌v ԈkY=+J-f .BEϮ< RƄ5`}b)TI|NWXKԂ.lK6rz- ~5t,!xYw]ig[h--6o* AxQwu (!Oab` g&tBpٽޙő*+[󀨫 M/jwx - (ޏ=`[=5>7cKk|fV.hQ?ȩv3N0̭KYUln-\HoN)Ai( a"\^fXrgvOo!\E v^RTm^hbf<P㤻#yQ9ͦZ)夀g# E*g!q`Xz78Η+*5wN6²y"e-FX0GG9+/bCj:P,6ԉyqr:Bx/-;휊%LUc3)֋Y-j8ҝh7x˓E#}Q=/r'ᒊ͢(Gh78c6kv:Pa:O[0Dٶ>ZR 2e8}[ #X"u3`8KAGAHNXSM IDAT=DFE]f3NJR(f\"'TҦVOxcWQwq\:$vשb5~WJ.>0{kOQSrNvo kvҭ 6wڹU 6fa̷VoOHcb{>ٷ~&2`< Ty@|Ev^kH&+$A]CD+D{8ۯi(zFt)(*| ?_F}En0A%y:4mWl~081 pW5 EE#K3o x-~΂(""vs>;+G6i¥dn`qsW omRsr$2%k⺹aOn1C9ܦjAfHV3џ$r]vtiP2iZ,aՂ-s;C--TKf yFkm8l).Ə̍,l\]|ۂq p5c⏜`lG\LpS@=3 S[XX:#XH+ʭky>T-(^̏x1LjOyҒA+v)-xl[6uE\W04+Um 8'cE>V+v,^53[bW}؋ I2Al&cÌc6xj}[w{pX3 ^ZQЩBr~OVJqw-ׁyھjkH 1[D<̕S $2_ |ZhAx`&2\xιpMۀӻN]Cu JC-V)@=lZѪo#S̴]->4vWh8h,/(a‚%Tvi8f8EZ ;1mO )36h&2McmB"%9BYӂN?$ǧyad>O?A|Paǎ&|~#N- #,Oh ,:->䟧nɍwpA\xlF J4vӉis=~{Ѕ Pى&'Fz?` Y;Ȝf燃.Ӛ {mfFݿY*[HzM$}nƮKk1kl ɕFG2]r\CTAv b3͖Hj &dYnlTjq*L.mSs$m'nag.e!ϔ)2e,#5`RRk~i a]b\؄$.IXK&0zMJ4RTF}*8޷'$7e>|J*He@7@ټՂ. y \~0ulw QZ;YD+,OM\])YHJkrތzfʶ(ּ'u܇dn; 3'8gHvm.^؂K-­܊ם w\v+b<)!ns K f!/)&S .E`B-ї8mN7 DTbFAl 3>C_A͹ԩߒYئ΃\:aMD*]!}[<׊$k/)DZXnύr-q9Id0  [U=;sn\Rsٲ~fo{&-1&1fQZTVl3 +9+~d9F@0gf7ӗEVH 1W(I#.)eY4 !n!hf<;0"l[ޞq]uf PܘᘕݯuKv+sjd7br Ro3o&t)T.iFE?0Sݧ9Cʄ’!{rDO5;.(\I3U-9ucC 5Mr]%$eK4*jP>{>nw- QDg=Sp7})M6  !ƚܦVH2"rC)@gMT&ˏ0rrCp|.@Y8XGŁ4,(!s\ dcmBNН;->f™`WEsL+`PՄO W]ϡ߇%"XyN-t)U$ g\:׮^¹J !`xQ16.Ŕ)?fd=ܤ .=7Axy l灶 W 7.)Z U6xG <.) WBG~ ǼnF!}e۞QP-V n朸>oei/MDFJ0 &E:YNPz Їs-αhdzB3F'B@udE/K1I!Y, "5> \B?d\Na`n:;aSF hPA`Yе -\Bj9V=vp6+Aځ ZA~ H2wy. v)O# xHp41:"ЭTxu@֤4cBm+\oNP9'5_i3b~'X7Nҧ`[p==Jlbu.rl''1ggԁ.+kjG!/\+I=.lB:ѡ??1=ED5[䃞Og[n͒dyطvfVթsNfgg` "C)QC2"~0!KM;z,K!E##=(BEL$$D:`.}s?UC\kNOtTNSuu3ʧ L~|2Ya 2 HUPHd ~n|#pv{ѷGi{ Ouj?0} K#w']].Α 35-)!3L]qu>()"3H Ҡl RAt߅17K-tIJю @SK'e6=vTLpH!np d9pJ3Ԃn*c&q3ӧvL*w zyºp|VR6@J5AHj:f.":xg[`ظ5#IZPl/;Jr!.4t¥*Y]1_#vR-eLv@6.u[ӈ0նԚMQ3dm0f F=Q13 x=΁ Uy()}1ٲm'TJ<9 ]W&\؋?kJ jj])~2p͏`G M*!+-0\k S'| E#s=⛹?B3]F$w+ÒrKݠ Jlyw6xԀcg-PKu|Vv6-* W)} (a]CWG C .fO.Dhmj%K0˜J%܍G|v_JNMjTGicsː3xH>w~X &΄q,)sraʊ lʳiH_Q"BD暹^LJQADwm00]QC{h {5Wytw[*N0&mB}(|8وT5Y)ڑ8hDh tTJ>T=\!egHfSpH\jV&ƀ90 /eU@,skb}c1Lv+ͣ%n³LW엞y'PWu_o {D_w׫qeb;hD*rG軄avT/[|ԁ3)C` 5 <@˰*/ԧDe,~"cca sc!C〉aFZYnľ8lѹM6[5{̡1G(ɝXNHT(L@X%RDG]G8 녀I#րZ;y*XOQ>A_q`(>LzBU|01R06Cq?w1Ds-PbHIEbxf<nQ`)bzg2Ug}%epH.Gyal^D=r)*| #Qb18~,LNo|2|,Z mcl)o=9G%F(ߥ>>' T%)g!wsg^҈[c5{$ðA 0 8{) +_ "&fp>aŌDq_O5K'+1R &S^Lw$D{By]<{*bL̳r4LP@ي@{Gy|03r0[}BIUI?KҝE:>y2Kia##{<.C~^-TN9ܶh=T#j6{t&Oė#%U)\W=O}1h%}Y)>_,J:dMF(¼ /X0r6{H~ RtKS*M F&%P+pll/#|RF^1e&)/&;h8ˑ`6Ymq㰘7Ƌ+*W{Z]J_8&KPrY˗`GdacB@ 'bbSyfD3)g7S!*fGwϹ'bMS Ǥxlge_iw⍬srL17 *2rAcfOTa4s,:*R-V J0ͬT^xՕc" $e+F,v8nXY%̉jPNYiCym>k#OuX)U求L{nK@צ[n34cmmv0fv9'lZ!\@j$¼.3D0O 5kAdv}o`X].sgb)8}'BCp)P $mAm>9 @[WS IDATpQ{--{jlGA|{l`4j &KG,OVsk6n}!ȼͅ}sʥ+O +|d? s헾+&]Eqv,3ck gŸt⺭ c*Oi8VNC]NUy"4 `M#~E~3a 5HR|a-6{<>;Y9ZamZf~9`#Y 2p^0жV6;nqgCe^i\YWVl9yV28+o=G>Ϛ1sertEƓk)|0O(Zso 0iο=0&YMl9BvĚDS,;aӼp{$LЗ]Ղ -P"s2kVr|;(O 2|tP#P΢ KSJ _i)F04b<.\yaڴlVO?0Tra5,"avjY # C8?n>^"'WSd[%"ewxKTuʹL0QJf~WmL$\fʤNM EoLT'l2]B !L%y.ZHv~)0jѧ$s+,9O0bM?[cǽ-Sdv##aV b;ު$rK$6%rE9R99zBٖ;׿(n]FX't-/hE ޙ㷱z;p6 ~)hr?jms 80rLOkVa0$ jC F?>zm)@`cF9G @`L`Q&,(qS۟#8[l&=KF<`gB~ּ},6ּb͡p)@ ,˜oFt*auh=2U9*$+an HgK +OocF L[ͱccfy)2wXw,#Y0t`H?%dSކ e ;~{U.{!n/$c-) o{Ua*9Vr fX_ͱG?݊swҪ/ofcslͱ96cslͱ96cslͱ96cslͱ96cslͱ9м; <'幛cC~dql=x7Bxls >Řjlt'R\nBCR{{,LNesj@x3?vmrшoxH 2ƌHxL/k\96%#` YixG<7oYH|0t1#S Bfd @yNL`AD@#}1q"bU ȅ 5B_bB\Ua'sc~7 :!bng #h禈.9ST=@KL)@OVsB-C+Y Įo{xaicj>b&%EN4R|:¸j{\ȴT yL2 M^cf6&Wl'l.P}O>\߂4iss-)dQyرC6E >'t9kƉԈJSQ iX|JoyXy&<]9}{ >:&1%4%٥^NU5|5Vc"Pa1v,N`عiMFj,!bƍ=#9⌀?=I '}2_XoslX,;_y!S=w3g7|*`BrĤtE֗SV}{%dsD(KM4ǻ4 ;:tFZG DC^!d*b1_M ,l#>c ǑTL@z3u50g Wct将RGSp `ct*45%7{L7Lcϥ8ⓍwSH1MEGfQ uF.2b i%GPEDnE:K=Wqrmkp`yub*%20#&o /u|⻅ ()N9̕3&l| |:w2ε4cb .fJu<>&GOET@f/,971*L#+&PV>esڐR̚b0|ĺ\(f]1 I3D5cig!Ѝ)A!=F)RoLD-Y*lS/ѧL]}`s/ fl0&` MJ@I?M6LuF`hf "<>D4S1$BdL+}$NzOj& 0`=b2\2z)l~aGe5/]n^abX7,>DTt =".H R?C7٘)M]Tn X^-Pv c #|n):X}[d6.w.Χ>a.O/zY4k[# "&R5QvD7@ٛ >}otu򔍶`dǂcbN5R2ex4 ާOxPg2Jx|,^v͝DjR <5ADQ)nw+m>~o JP~B*HjǦ0ZNh<륈.cGxf(uJp`ZnCqkd `ޥx/7cɭPy1b:ʿR_&E4MR#dfVN1Vt0 TfϽr~}OgY1?W/O,]2g}˂>pn=PR Pv |͔'?fS0LuA[01C]['x-.ʢ`*gRʶe/\w"Wlyp=>ymPHid(S'\-gGLIY\/^(w,F>3B]td~ts/gWU%b].}Twa+&el`G)53>&صHdHb/S/gRB5~)0똕z>$Ѝf)H._.v~])|Tev!xO4RzŘn̬|aWHآ;\n_+d6&XEwǹ~W+sE1W):Wd]2J*|c3wΙ‚oR^1z ~NR gjIc uQnďo'< RVL3"zl&Pcy&74΂d20^ȧsF@5%RAhBR'^GDNR D/%~b2*Wh& R|?w"5;ЇG,d26N g[v.X/n\p~ZS),h2wE6#- %0ۅOc ^a((34*fm}xwN&Uɱ뱠:żxb%`<$dl  U̳t@+;n1e9 l^E#9 6ibcZ`pG!u@g bj2d_]`f`L^S]g# ܘV Fέ< oX2avg.5`Qܻ }|gr!Iβ]t.\HD.p|.t [J|u]w?G7tyqOtuZ&0XP_NVZ'Y > צ[O?Kt_hj]T{Qڻfd2mkk )!-&e|`йJN1 ˲@T}uqp%\^51:?5 lnX5Xh?MuR#eLp_*\[[[˹Lg?dM3fq0.0k3 nNeF nnP qH}wO YXV@%q~WJAh@f*QfeX\RP/мĔGKɗk@62_<ۺf "@taSWX (vZf3pi)ct|_FUU=g6 0cFƫ]᫻JĂ@!B {`܀lpcֆ >] dm5?:Xbo1$)%N\ьclt4=e;|cf4f[].L_2 >oa-*QC4=2R($R:{*UT>S+Oo]xo,O dX߁޻  EQt 皗O'fvq|f\4 #U%Dzϴ$,(9[u'^KlCh|5WPn>G*34=5Qz+bYJB챱C\J1+y:_tT>}uvT10gfl^byxzVte9iZs`wwЂsv!VU,QU%t]cje٥`j%%v"*,!{Y,>"gR8&` fQ6n)O@Ļcxߎ!]j6  2dY)O]_#[6 !޻ NLgO/:dZ˲rDY5>ڲ`nw0rKsou2gy(О*X/lLqU̮*rU8X㔴0ϧVI!%ٹKB3~ !M6vwwoWE"pW%Pxeji~sY]6Xe; "oT3E({.ZeM j/S9%‚ [Ƙ/>e5&]UXo odcuFw` !H֥FLÈֵ2ٹWQS MȀCe:t7N;5)BUU.+|`0јxҤ#}J?OhivI[}|ap ie))(΁a`@ adˉkl.Z?&d@Z/ +q@/\RvlGJ)ujr `"+(DU5/-xMKrV&+p}Q⋋ h.t _N2 G$iV}~ uy-Px 0^a97W==a糭z9 @ #  xc2Jx%d~ſ7<יFy|}p "A',Iłjj1"PxgG,R  8plp#0%q; }䰤#v,/eHa!#V ]~zPgoj^Af ;0k2N 4Ǫ\ͯʊ[]1sTS製&@Ϋ_T/;_n{{3+iiӾlʚrZWk@9> .cɌC6#}cצ~PBl:A1'a.(̙1jVOX *Ptf —0U㫦>qbYl_:Hf)_RlGw~Ռ&)%Hf) KZ܌*.B6 ~wGL 3L]>هY@"MtAq:!$ʲbk\5>ZKt/ z%50qMFI (uGD8~g<2WYY.S-2V|^ C=>; 7׌?n1JUpy:Mw~{[:!\J&O|/D,\L T3+O_:jq}p묂9L.Lg}:Y ϖ^?pޠWWک{sH7QI0ݲq3A4$"&!&1ނơ1PL#yqPP _ j WLSfOfyq c]5cz3tg^Jkk᳿e/|d32Y IDATKuhtoUP~Vg^쬘nAO+0u^&\1% hb!lcw~EH{NWS ~7[km`B+rTyسvU(cDdf߽ sΠW;\U%6)7&.>tq$3 c_!wB@eOM&-"s+TTЇl':+XN_nmm * ]]UXUsQFI`ۀRcPxcvl6B({N [0x5s"LM7&HehHx\A٫MfcaH*BKLFNE('^& }YK{0jҳ51y)lu6d UUe-kl0 p.Pp wנC ǘkL)tJĘrp A‘ (VMNf^"+p5Og/JFd7ndIi^noowyVLZ'%WLc~?kiܥo+ݶ02rD ;И2<)dn%@]q l%AS zMg tRfW^3%v-!9:;xe>%S @vs4w2)}pyJØ:s+ l³ʲĴ3._n E8PL5651a!1mOQ%P Km+~:p~Ŝ؅V,<")oGk`}^VsYRy2_*||:.w1*[|rL푹)ǥɭ_gGMC!U1W+06 / pc;8g(0M{x aK'ه}$4!Rքtﴕ^HveuDzVl.f昘]}5$NXi^LhۮEagA粝iGSma6y*8oש1Oj-*{@&`c͊lM ZoCWU],)I!/ON S"~65C-bfDWv~ׁRB }hl`%\WBrc/ir ~k{e̬ M}?1v';-Cw77\4߅2ԉ?E.; @+iub:OP0CY0 Xl_)_| Q [38I'Lw]]PRcjFP1㏠.㡠pl l*aL\UcC #h|>JGäq^e)Q׃^lr !x1)1"Æ^O1Sk ~^tmZQ,O,Dtr4+Q$;_j\ r/]9\um2] ϺT!(I EES|;QqJ27E/ \\e=s?']JkőG L6/eTqķK(GhLM2ftmM׊}tޝ,}:)Eˡu]KA Rnnj3>w|V,P3}~|_21 oF)-gٰYD [ -X"bCiaR0e'Md.Dq3 <3w:06= PjҬ?NNk5.ȼpp q/XC@K)XXL `# 7(j~UK 0wjĺU.Bnł)T˨^Fd2c㉪$,|]Gc0 \Y{>5Kd2/CVcON51o Ȍ #m$Mh-jbfDsPxYeѹ{tqs~z9byH|`v9xyJ7i RK[dg|sѤ,Ou72*.褙iM6͵ƕx ֚,? WSwwSj`\ za)'h"o=gc^k >ѐf<0>I\^%'Li8BӒ9߽,@_K{S4YNVY}ļg6poR* S/ X+LaD 6ÀGli5R|qIR+ OѤ;vKU5@|1an&ʶv~D #m139s܄ZEck|7 z0-'Hc&'+[ε?$Bi칩2s7;YaT޶#gySDl>R;t!3R>-ޘv8wO1!UΫv,3` Wfhbw b!J45/j ZE$|:v`c6^#dzB<@` A$f81`>STͨk|s̕RP#"ɗ BN >$Z}2T\|H}MֺI3p+2h`2CS3M9Qbsh&y /"Rbt; `|gA*ul܀KPbr@78U-Mxc.Q6y vmH|.EڧG1Es, HYj\gkDʼy\&P5\|2yuL\f$[l: <RZT]IV?{Rund].*s )03.jpv,ʏx'>Lb}.ݢ{q @׺ sh4]YI隕)1xtIx,7wp#a!.bϳ PxR_fxcoǪi4c a 0r9@[p7~7.R#-\$qHG; C# .[J6d** pgfp]q7в16P+_}N E `1Vy[9ӕmO\JoMt,ѕڞ} 8c )]0l5ɨzI@9Q& @.tĤ{ָqn̲P_Q>Q&QlT]jg+#tF %;0]eyLDi&>뤰 \y Tn'2c@yy%aprjT$ev i+:gųi$#,n!OonE[] fvq/$ԗ!PZ*qM95?d=*]9Z=:tK&لMbOau`&U&W׹#! 2nA7WDHS{:E#`ظ1eW9@.3-:_i y/vvtY۞qn+)n\(R Ԁ Cunq?0j16 e1]WQˎmaq'~ ذe +@l.Ĕx5[CžPySH D>CkR;`S% C>*OLwPfYFb&\WQ8H{ @[cW/ODDP/7e&A "-0DutV@P}/FkW*sSB`1 +Y>@͠9C07)qu[6$4yIhxlܠdcfuݮDO ~vFY)Pl5^Rch^JqEE4  T+rd5!s-dDf6N|J-RzX9x߆8oQ3]6!GDUBpviAۭ[~֙v[r[%LIUS9&gHSB: &'T4} 0JBYVf(.F@csx!MxY(𘝄 Ȏ106=KQl*9RLZyWSQ en1EA3 ^0xL SncQ/!s::ʙ܋DʂLc=0GzA*pV3-ZAUb|.J+df㍽PgL)/CFS<zD֎ U7j#/o<)=ǹ1`慩*ff~Yd_: RS^þ MЂOIbf`k|0K۷SYAʝT>1qO,8ItU6l<+pUDgAJ Kx녲{N`f@|m-@ʡ`eUB( <1?{\2 M2]{;EO푒Z=Zx SlAn9>ރ3֯gɩf&}|qC>%g⟚ĦrnQ ԍ^\Ɠl*m>@ hڭ?"-R FskY8{&1Dc%S|)gm|}3C3 (=xlx6Npy<|=7e<_#PlOL<~نhbe|.ӹub-0T!0*6xwl4 oqR3XY;+.A>%w,4^>̱d<:)p"KzYҘ. 5n7t9/!s=<-ZQxMqD}CѴ1O n36/M 3wQ[(#KoB~BMIQ;Ǒa2HÖ515GZGȠ$g4N[/c8ߡFCW4Xd'>ydb ;u ؜ú' 17"K]^6p3fv^;*0MXCZ@=6E bR>,aX~( :shX!ҩ?lR"ŸK~gY5[{Y) 6K 9sޕ[΂K_E\< h>bA >t55vGM]۹>*pxjj,?烅jޏN~ggK \ˡTXhuٌ(j2d6 s2K6aF@ b a[hWO`.7UpB(MŴbίPL3Tͫ{aN /#t^'x2A6eXr(`}nR™ѱu5ko4bc 񺱸)~n!V=Gͣb䓁DP} 0yy+>F9Qf}%I5?C njϕJ +\FbW.xT]JIW ޯfdK60+k mDbh&fI5υLY/rD,q].1U7'[MguY|&t =G(͏-XY3Sx!zW%@?z↩k/rq=^mf}lG 11-dm/4+<jV 'w! Y^?a&3P6j/w3T:[4Vvg snZHO);J= 󂁟ay)ڠm]bP22ҨX\5 4]!L{ʻ;Bz$ 1|=x) xBsoNrSd783_$a/Z}iCvn#]᧑ r8 Y'0۝̡M| /!o$OfP{=]{\W03K0WX!bwE0+}I#`kծj0A U K4S;O- T\?}eBn>{qn)9I wFCM'v I>&h2;OVU j`u`gr y(՚R=fp ㇭㫥SY'98h@%3M^wM: O*~(f]}lNZY@ٟ`= …`;(x$bLlyjM&՝CWڽBYdAHMY.< kPhY@Ci1#Ut >R=gƞ^B¤ <\~b*|Y/p~KO0,@]nM}Q 0-LLO/шbY$!`=>D }T%Lw;eU j-||b;PsY7/]E)Q)X(A;Ϩ ^ܡR>poէ&]$P6{{-LhZKH|.4-ht@euej~Y,gb%3?'rnUu[qkQ$E45mZ43m^`{y؀g{ Հ_ŰaðLk$#E5dwn9"N'9y:ȼFF/Mwz ӂ)*/U!/x&Cf\Q#ͩ`z2b$/6@[' )zv(%J@ת^aAۿ%sL1\ޜe{ŐKlv RBf賝jN.c1-5 gQ68:P5Yp:& :18TpdNbyRx 0]Ve<9u/b&jq!6 fYw:P2/{Ne*{UdsaR:dfJňpZefSh*`bBK&B NhQ"S 3M.@)M$K\C B ] y7:[]ksB O w#56l[ (¿#Uo)MoEN<zxv醮룹,y '~i܆B`T4U>CϙZ0l`zь-i3\(I/&m]X\`@^)̈pAa)BK;>1)f</cb Gb1{Jf|-p<.|q#Uj.X `EHJω*RX y >lwOȑ9Et =E +MOkk/XjDz*B mS.ZR|pNyWdC(uo @^1UHn_> W[E+Сlӄi21j`@֙'·+Z)V07dX%Nzm3WpcK_h7:cr=Wp R (lԐoB$-68`Ɓ҂ A)10* ;U@(gf !2a(Zlz˙=L X.;\.ၥNգf)\?u{ XlW9#gGG& szJ4WJgH@69m̷҄͂ ICz=M A0x.Ƴ o>$.4=f\/P_DOAEGn^b%JN׹\!q0cG`[LR `\BTar&+ e/;+@/3ӥ8 gOyMEXušT6h l͕x5, |)0ʒoFm/DiPk^W2m E+RE Y-]PDiRJum)ӿa5&Ok:R Ta-lZrO\ܰ9Ha=7\|dOoݢhƳ Fh<e@]]|Y˵֫v [ؾ_8'7qd-yG[*VLKrfBT">}C66 59DJ"%L~AXr#ހAӱ.k}>@"(T4й[9ҽ ‘n 6 |ݖ8lfRĪC &ilt[`k9hONE(D4ʦ__g`=OD"/ǜBha yPق2ZbIgTPQS6{&5ga{CkZ 7eג\ 8NG/뱾6~6z y6>BU6R.XxpR a\ٗ%ָ+VW-NxM9<" M4cǙ*CA ' |8vXYuElP) ;1xCB^>dVBŇA"&. 2K|%LP?XJXp[L/`WؖsOB cY ЕŸ[ :˅R&bt)BJp;%FbUc[HV\.J@Y 'P\!lM"^U-%L)x[-0޴.҄eA>=dn$tm G`N+DD0̸߫r8Y)jl\2B'Tw+FD|!Ϲ, {{lvԔf$%!Y-eB}=..kXE(t6H* \'R׶?\qafL $7B2KJi-LoebR-i/r&Z )y <ʃUY{$,5_GXdЮsOqaQQ6z ptV2Vb S-q sx?Ai-Fp3&hꮣǥ٤,fk*ygp"Bȿ1T&_Vk2y.res.q`9X'$oy!C"'X́X v1]wl=~Ħnd)JjZXsy*Jg!D)tsCYԓ}-֝{ ] `*m1?%AjHD@kCt ~A]]SX4׬7ml7UM[A >L@,d]3 UD?Una6=O sS3=K)<2uL!]F7O \ϗya -ڭ$dv[b\IHQ=e P4H3Tަ&Xfkq* OK7/`M8Уc+0iDu;q!BN\Y x,o'V & zXy`/h1^(/%^ѮTJ7膷aWa­D|Ar:evcȹ0GB\=5eA 4(H½~vW2B? <T0DdOO`mRuA.`jiHcn#Tڗ=& 62G9GT05j\-}B\s/c#T!Ӌ`pZTq.^Hp\rfH؆$|f5yj%@?fpbz' IDATI¤,ğBXiC)R qG>%C 435u keyRɐb+r (MJg T=svc@J4r&cʇK(NB n5?-<&q^csZPq&Ss4Ka:qX ATB&'", 5S:QlcpuUkce+$3:hD4l/ņ.v P@&(ۺN%HŶ|l< Zm"[l^َb]߳"`.ca|O}LN{STBE՜W8'8ў㛠RR՗*'j8WE'zvNh<':sˍ1a*E~!l=5:]zddlN^wX\03nT{"0"#Q Cp)2.M;i! F;6`v˗EMb~cDZ25qz|[~5; wl R?ck [sJ[d Ю[PQt /|BW~c3>hŚ zh%/$Q}*m8 2TS6R`9HfЛ`&s\Gm2͔-Y!v돛?*Vcϼ< ęC;'T0;vLyX2PL  Z6y#Rj0us&0?@n]f~`3 k@;x-[/ThOoum;yX&.}Lf\L)"T5Q=C~^lx%TI¶1EBtsOB16f6z_\Uvq{ R!ьF`̈́<)gAb @ExΌ%e+oҿ%`ۅJ~4\ )s7 ų@!:Ü2i!_twz'pwlȕ  ֔CmYh_ɶu5)JbΤn 3Fj LxH%@GZ2y=@秅E Hۀ"Ng)@ TM"_aBwv]Gx!${ohOj>].P7'o}?yHv{U!>b8cTCbi=5&,x&`/JSd59Nl>bL);EK%kh9>C tJD"Sä(}-Lj.Og}6! -/8a%-C{8F%07ey뺃ͅ'; 1-&Ԃeݎ[{ EL[|1p<ؐØ"> hR*⎋AĔ)`-9@pp a|C2;ED,Q7DJfw_ ? sDa].y" 2amd|/%ϵ F B 3XV_~z`. Y#vV(rHѩ􎗜m#{HHB*15准ƐkRpC~*H`&|vѰB|5V QE˥v[_E F=˝L,K{@vوXO{2=-ۅ@bЮs&E'ZOd?'$l`<֓S3uEB%SO}XL@xʝyDif P HhZ eVM 1JQ8rBh#'V^X|(άt .40,ze:O|t205eֿBAk>ʻu,{+^g"FX =ab'E|R? \І?"ZaY86*&˹VrGǓXy^%Λn ИBj=z'W 3O+{BaEwn6&PG#P@/P F!+ϼ4 CH.=ESQŪZ/: P2=L0/=<u|'hAslfB~$X4HP=)P/  q\kLP$Na9ˠ=K >W?d@4Y`w3ج.t>I)yj3|3Lu'bs·E, }]v9W<㑏Ntv'2@BdQhW,.U@ QwIy& O' [اvȿJ)C=XRd\\`g6I.|67 8[B;hɱTmYmy@! >\ҿqӉ D-GVē&e,$GHx #'ycVc=\2>L{[|aï(7TzŞ ?et왭* @ zpA(5Ą3<M.1WT Ɯt9Nąjްߩ.ЮFwfg.حDox !~y`!qweCeH<_ m)WhqYReKwjSh~,D-eyhnghuͱ\Fvsj?_t"C67p,y̮L|+ AyWi #v%>< JOɅX 9ʡ"Lpu[ d+ NXw'OC =f&l&j|S?k_B0Bn$f$ Sf˨c'ʸ3FjV/|P{`bQ>}Ѐ1{>kP,sgTcGX|]7~K(Cku%ce]NʟFZ6 GSyr,b7Z. Vͱb>l3(3=e{0E'hs3$ ´u穋#.hf,;*;ep >ӥ^~8?5vD&bGfN!W;2-E.C/qg=Yv(9N/G*:PYasجYclf8u<PkI#M)3bWOg=5o]'hQ܇xDf/a(J4;c(gN 5 3oOl{̴œx{&$ݺyIJ%,pG\\;dh)]5,3mh/%Na|]Suhl)'}ѽ./)fg8f<v\28t]c!ILrf8V=ɖla=P\wfŃ (*ehew_<|73/}9/̮Q a]SbE).F)х=3C{ȱ' Ḻ~7@\ 3)T-ceB dͲ* t <I Fu1|69&܎"p*› b46e2|;F vbЉ0az5!}}.j(2'L`y&@LHtLHz:[ ._i_n{gj|⾼`3KF ` c]$B/n?| .X9ºH9K^@%J nxɦI2 Br*3Հu?}cu`9nRʁXw"gK|C;g\SY!Snw7& Lcc|O1:Pf!a?F;g,LS/1WoY]+*xdv{?*.9w}&-hLvX,AMq8j!pQ I;SNFa e. }ގ!w{(%@59-Lpc ;}Px}1l.v`"F1x1J #!_ȪYń>8lwsm  7{o-e*5EafwzS@=et*Rivxg>tݶ&SUNIolg5AxT,u[70а!uw2%̵4 iu+n##oip sqOwx}LĮB B^iKKDD11M1%&|ٗ6lW gm+f Mp\]~(wu2RGˈ\hUOx"ys(?u؏8v-(_MR7S Оc|CKgIb>>aC(>]Hw1504R9])\pD7Åc=Q̳uc1GՏEohMJJ!+efQaY-|gxp ]&h>.U7/$hLTgjDI66$Eϋ (]A&Oў=n;Ĝ>A0B#MÐz]$S 8w9Ϣ 3f>=07ĕL$9'^ ˬkxϟ#R.c %P`Q,)@񜎰5 f /pHTU ^4/`. );ϠcK[|Yߟf@:b 0o=Lʔ j;L޾/Co}R`*@' LӮ }0d MORiE0[ŀeS2,[CYU3  ŀJK 9]hL·x]kҷm>+FiEUqG e x!1G 1 "Jg[s=bSsz>A8ѕBgGcczS߮]}Shldj[!(ۻqKl'ؔO).؂j}(DTQВ@GP-@W+e:Hr4fo|(_%%mEmb*15ӖB EB:j@%pOgssկ]>rlޛDXJ:P{ lk-U6 !_0&t)a&|.|@H`$sO$:4#U`1l0Ӌ:]ҟ5b+vyz&"R9RB?A2_0*bzv=" JAѝpSC mĐEȺ@?d'%_-gm9V`#"?u-, (}H }ek`^gk0n!vp]i]eF}LXd*KQ6Q W_PJXr~T[tq IɒR9 T' 5GlWre&n}}@wҠOYW:ELt]i>~m2=W|~y|Kq@ʔ= 3o2d"eATc7c7ٖEoַr'4d~ރx}>ӅҼRV鈟Ns&{]6NnWy\K0}J}'z,Hт H)rl)kp,oHh;ł6JNOE|^j'W>h_'RMR<7QW^R Jh>䟵6$`Ie(Ho :lUT" aKp>K)} Oc]bF!dڻ<]yhP그*?R.NMT'&0)Mk 5YAkatp`s[cLgcDbR*'=zzɛ`+~:X Z_C~!u ݍ燳s7W;B>\ws@6 VYZ/%c=piWL lm ǪX3.N"&̆Q۴$}>Y} /t>l6:veWO%80|ށ|H *5}*sz5F|`P웴 C<1m S]yGe/2cB8E~xEn>FQO'MKߏ"pH }? C$BUU zUʆsxh2'[)"fޓ3"l-LY8=Dy]I19l8b<@7W@tR`K8Cx)ʼ}I_fXoc-],3d? >TfA?xJ*Uxg r1-4/RVWc̏@l 2G~t ՝wuCoVҜL&-IN(J G!f`kPZ12kPlR`93 X(?K BL !O:ʌ*e?pvCPL% -R~^pC\3;xr>g*l`6;M&9sonUU(`+qU೅J+1@Zp @ο^C&"qa+Px4``` 0bT Av/϶НP>C'^ 4BԴkU|6HM. f^D_$@A0eF2xvl6l6kONk b;Еe(`'J hH Ç["mG/5f)# i<j_X0E fĖ?^eH-tj>EPW*l{ *AG;cCf ݭRYO}E=7v]U8sPtpΝ[ΙY,KySUد ^* >\,FP2;"j1?28/9XJPD4¤hbc P&߱bᨐ9q6}ٮ+$5/;&1&ͦ>l48I cTwMs>W,7 V~؊@QW>Wb}L ѳ~ \3`ƌ;`j" ZĶ5xQf_$^^G'+GPclOє)`O?>G}9˵R^/!p8t:[ ;s&[Uµ *mJbmp:ʙe01Yk'9gQ@i\/T ’-&N]gL`$e &rQ`FƌxMڒU+(1*NR&D@ 6_@߫_#AWu-ӛߧ 1餈t.LJiZEYQEO{AҤ#D-OSy@g P:a^'-lLH "9 { !FP`IzײU`UC1)cv'I" :." AF /)\0ܙHR8,t^W ە8I0L(fJĸpC4-؄,c ?+.A (,8N0Ԥ7j[3depU-RhKs054.POMu)`IӟT6!W|}̪|&8?~xNL&AsY)R@q]ॼK~B :o}41+1hv==O,5LLUZ.`;5V1;n?'r劢~eeU?F/v#:lqŝFY\:ҥ| C&8O p SfJذȍ E qAU-q&ZnM-Kzrp_['2[R3p bsHpLi@z{ 5f~-L>9=LT1& 62Q?'A\.a +. n;$@R^\nșT : u%QE^جތNPd`qa7זf$"1?5bck@ I#y@Cp4@6,NN܎MfC"}w"9=H % >ooKvvS*Doi%[TS@hT1yҧsIJ,ӽW2{FIHL2;dpok`6urd~&I0{*G^l@̘a_D^xz(aCڎ!:wM F9lQ_jWh"uh^Q_d:!bjl1 `0yufVD֢ZaNnbeKsAr<.&yY%%>WlTq; p,P㯸7acb,[ud QP7,x `GO8 | RKRL|3@{->ӿ=ߖʈ9SABιU@ V{k%L/?{m0f)yu>f6pUy *NLe8Տ/&[eF J_P1 %~2f` dȔo3>x Sa6ۦ4bgMAxޅiO'̔({FIZa06E*6B}੎x *IhRZOxo[(WvvsdNU[(pPeUg[*K7Ϗchʛlecf䎹|C`3HA^ߩl1QLA6!R k{/s;5? ̙1*%l3 6\֛\O-pXB mF9w>.w1(9."<ݷ16`6SpG\VIx-xCT*U>5x#&T(OꃦU^]#"gVNV[>gUZx(B^rD]+l 8DEodb< Pwxo3H559pTyReÛl)v8%37{ ,.y<ԕn*S_fVmYӺպwR* \6(*y0JtxQW0 n\cWv\.dXnor˶ p&\'3fjhOuqVF*{ژC':?wˌ.7/l / < 1SYSK4p%~m2Uef+=w/r٪xlj0'Uj#lѢdÉ?饏3avxxAuĶ%*`'uuόs ;UUSUx4\:ref'7+\[0X&RJ2e}B]fm//& *Fxzx6G (ږO$'sl,xS} yR#=:+^vD&_-BMqWP<ٜ|YṼj; )ܾ3o F%uZgem.6>t ]ƟRr_0& ӅO5>0iTlx@ |BX7CVThxp :Fƫ[[l7)|RΣ˲ըՙ0+ fm Tl7:ߢ>.<}l]`XO>qX.DcZ!lCQ ʢ8kH-G7 @g^ !vP'\Tp[-S!T觳0E]+V&bw=R꺹YBHq }XxU.בKj'J/gT27CJ \HWiw)NPϔx]Z3fBPg/:ULkb )Wz; 4wd۹W uK_~OeE}{$,"\lsoJ"s2 E+τgSC\EfYįu`H#J8>-𸃖a'+m5!f+Rsl*\.k if:ȡUUsŠmeF;dAa1pbv!NWW{h²=T(-]ָn)A{]CJϏV)6 CZlmJ@dlQjqU d#1?x5`A?Ϸ?݊s\@o÷Jӝt9汲%Û 2Vj\=,MgTtJkvQWx:@mʇu@xV G`_҃u&BV_RQ=26k&{5?ZM`̼[#b9̛y1F99mqs/[]]bŬ1A$H}y~C{08F&:E^e JGM&ۄy~H05WT ڿmU6B?RJv ,`Is`tCNnך5!a0b_p@vErHHbuT8 WQZ&cxiM(!<+6i# GZ)W&+#A H)\9zZX Z;ҟ&J,,du|tM!:ql]GJ`I%f|Ɛ2M)~[笊h c̈́/rlT!a)f='0貿2LԺ9ԌTo랩g)ʹ &Qr!9)kT5B%Dy)fzVi.pTw`xc?Rlx.1CoWFj o o <26an elttCa ڽ7}͈W:#D;@.p>cmRi58x &r 6%rv>|LkN>Kycqވ(Hw4p-~;5}+\aF n 518 HUfW]\w 9TʁIxD') F|=@)}<ĊnW@!jS @n=NTa)ȅm-0Í=W͉z&>a!NOAi(t x`coЪ:$0ބES`PFDSq1.9hr j~_mqujV3}4%"1=0.H1oR84YC,ʋpC$> ]?cg el%RB(t,HHg_b@BbRerW2ӏ# tcN|q DX7[[\(! IDATBYSE5FbѯLf$}Ѕ|I X: 𪢕I⛙2~[C5mCfs`7`K<˄C1FN0 fQpWn'2Kجjr+SK#Qb:U)d)ڻ1@8P8:Cuc/%px;LzA*ZѬ]Luocy* cAs_BKP`N:9"WfMUm \)#nZ%ut傆ޛ\]gb߹UL e[rplV2ذ0{; 4 PSDMQlQ")ɪRY9"{/NܸF̬ )~iʙ'Y2|(@ۄۍq 39TٝF~6hJiK^\ѳZ侶a-Ci}E3$ȼLm\*il{@n lLis{cf\#nN@B\ⷅ [Lbг-Fo;9Ǹ@F8vHD Q  #bcKk&5f? " ͂oAnj[Oab.jΈ" ^ q[o;TpS0Cv3B_MDv2XT|AND̽vX_NqO9Be~2(@|k_Lq`g1I"1d oXnR#L뭞<' 3ssZHЗ ~`kJ鿷oR_2~[B0 a J$cj)vIN"*4(zh{'Iq.X/]E45bf<>5vHU.< ATl3wͧA D'v6h_]ܙ3DbVA |@^ y`CRBn '}ƘhELˎmaqga`f18.P0tF, @a9.eK߳l]D ɳlhnSlq{L5v O'..m;r7<%#5W}n,R fXe"JPAWJo<6rkh 1N3f-y4|_12)zl^_ vKu?s$3d8UBT4:28VWʁXx!V!/aE_뫗~QYZlM)[fX\ dZ"gN}oCX|jIF$qã׏b}ٶf ;%~˛ot<|VE}WE=~NH3BS<>9N@C+%[ !>DUz_XEVljzg>ʂBYnx$&f&"50&?7-[(,[ &7(osW`L;vQ=V_\t˾/0;ma֚1 A>c*ZLn8樀]lUa*Z_EƅIɎT.6yxI͏ṭiϭYx|tn77}quO(Q&nϜ|ZNڊv{а DwUx~L61I)ba03c1j_[ ,2e'5v7G8@) EE8i$?/0 mĚE2w`Mh\gbX_&#V؎6ѽ)蔘_*{fM ?g JeBJ1=ypWI-3rDpp~~g(idp)U#XTG᫝_VW9@)P  SѤzYaXrtpиfm@b\G[nWbӃw6ePd&"f1'UCx[9 P Yn 'ㅐ^#AuSG: A΀A!KM%'$b)1r &i\3?qv(x 5 { TsMb9-KfMlBD{_P6 وҋLӅ;"^@8klֶ.oR[m1PV"m+f, Xd"<_qbm7&jF⎢lL7%sJPBYOaKLw`Uhx %RxTG_M]j 8R { Wfѝ%. ,bСz!knq ca3^Qu&qثcxSEQ$)&)vyFvypb u9BPs$ LV#sTJ1M|'FM3Pruԗ3*N`qשU6/L~FF06P6߇^E5q <$Ə\ O^716Kh`f2%GBmzQ .z6A2g<|?묫;T3]X1?/Fw>`BLY{ZĩE\-[ce `5O:21s4u_xܪ9[`\H3H9E В6b$v_Z8~#e:ܒʛZw'AOvf)36xNr`65Uf2)0F ' (fܠ%ޔf*򻙛032ڸf7"35Z5C,s̨M#6!(@EbyG8`~57﹄i< N4/c j&w;k 2 20,Jxw (w7VKAʬuWW)ì.|;V$2iX\f a8h56&HU' !('?{ſz(3,ͻ\Asp~ );E{ "i5)d(v&RϏISA^.bʘ)2yCb l[xke/+D[Mh`ulMۆ|[W ϿS*_lbLH#̆H`QfNhWƖNwlRdZwQe Gh3oqnU&<ɫST]d,ب;ݏҟ>1O[L7:QfxZ6&Z<N8aȑjA@Xe7ﰵzP:NXV[us!%Bd^No>gmw ^O ;u Tr,n'v %[oՄTdx %|\큋&#!d))c\YSػzp¬u`lUze"ʙq~:Y"$O밨iUAФ@$1_mj3EcLz7OB9E)Q۾ 6Q7Քf MuF!Y0}Tݠh\+!2d!$?d݆nr}k8ȀyTS.݁/L.5u\_d+S m5†Sj95w Q{*r{ߵ7}*Twi/Yұ2mӶN*X%Ш5f )N1?c .+<+| u/lK:?R r\qED[,۬\۶_Mnj06~Wkj4kMN%|P|9:H O D 6 agOՔKkSY^m u c =j :_[;)nMNǂ``؉, #'Ԕ"o*K R+XYdyC/ IX.Ck`\)Ϟ٨+< ]c,b]g(haEb߱uOL>MR3lB4qJu~BGhF^jnM=0^R$t1ЍMrCByp1CMu@!~6hܘV'̙}Jp)[=MK"/Q6ysLH>jS8J/ (n *ɷM?6K^2fo)fěJ0{YkP`GjFƀK`<ޡJ[\*I~lBq9*9}IT>DJ(,ͼ[rBtɭ fsH&m\DO0*"-f4/DiPo^1W*)\mL5 20# _D*e8$P(ښ*dlVs/cAxZ{r]Zib" *gdJ\QSŕ.HwVS`q28'Ast2z`{Ǟ^[SWg4;8Rkh~k6:*B{USUqYe S#RvϹBP-/>CmV/[&&"nLS4C䛫cGp¡Rs79Ov ^`~uAȧ *A1%=06b)48R>ET+v߀ 8"Ȓ{We3ȹF8M0d^l~D*M1u_{wHE5Ae < 3ܶ-RV 5$؁3YqD@Ǝj_ʟXNF~KR'8s4TԋycBW^|V&w 2) z&j<5r-N'͔C0UkSsB<{{̄i=%BH=YW5PYޅv(kk~[ .oBq3hv] mRzf"(T4Zй[9ҽ ‘Bm߲5N V9v鰁 6`F_KvH%9eaj! =xw{ >$/0lxr2!c}|TgwPּurjk&-6S`{E<,V P7qb2yYqONu_%[V)Vo[J{B1&Ś m{`sq uW}qJ (^,Ub7Y|W$XVƑJrڲ9*HJt0#)̀vI@f4 o1),KOvb4&e7<6nP|H@0q|`5c6p6,՜(xޘ|ak~¦?76^#MQd}"MM"ffK):#b?N- yŌ@-oI}`#Ww1՜yE%1_/<>&y7@؟ */He3"}J=߅Zx ޅq d XAp{H~G7zm7?)d77줼1;َ bPo^ߒ&\092@ߧi D`6gFLJnでuwL4)_~5RεY4({BV &[aB ?0ixm"fHWp ?AuŔ HQ6nj(3=}rFYqZ%fa%[ܕ`ܶo%mJոFղOK|vmV (5V)LV/Ifܴ_f'߫y?G̖SBrLs - "ڡkjuKlѤDϗc )35{X0c  fjSQfj3 ]bf򾋙k06̸Z5~Ū+i^]kMXZ"%8_U)\Y[{g{*ۍ!,FRqr\3q\*t)f[o0ڮo`]U8`懰*V'-3,tXkX2lu5crtBoqzz*{.͉6xIP :(׹Ez:'znc kϿ\.z%LWH\/|dWe9TUOfx}V5enCnuD86ڜ/ga۶KMf'/ߎF Yөt@h)@jo`/#B#[~\LU8s v+ͽ`oLJ-B r1u\ol)DMfʢQF}dݟwO5Ԫ3e\/0Լi jvVX-dzX/LwD)5t|ˑȌlglzbYN stM}|[$ ɜLN-S_bz1_.Brւ58LeplXo6l  jhٯc1Jv .\cV:?n Ʀ:p eL'ibott!^"K%XW1la4 }eL=+dM^/pT6QFj7*5Rfd,K&6<nS:~x4?N rU|)^}q)Z\:زYJ~-N7#' TXz_0+Oyft-)A^,m )rPe/~&,7{qs91' U}](A-6m8NyA?"Ĵi (./s-\VjJ?p߷ijɉOy*< 6Yx'}xd\l̪-5*H)|LfkT )_-y@0--ؾåҬ"@tBʺEUǵart +۵Ӈt#>%Rg,hh]pt! W<1lEҦwbZojv|I-|PyAt4lu>mWO|d~−Bn}= Pl-˱6vj1:+۩J]ݝޙX2^ց@x*%9l Y\\XbA?a)m9HTNX4|acb1ּ;ɣ4T~ټoC^P}QN.jj#<ʌcJ` [ TD5EBpDa]m> esbk 7`jهsvR+@]caͻ`A|"&T2^W [F 3Ȫ0ak Oă45iD$q);Nɔ#0Ai#>' ̦*Z^p:aF\AFՠw_ + a8wx.]`5']ʅw%nm@y`[0XX\O.LY@"榟<lՐft竴~ W )VX1)M)R+Ʉ6^ P13a eq K%LQ&g=C%j|r*pd屬יuV+ IA紞"ؔMANIeG'`{[l5ݍ!AdjkJ`5`Wm`&J,W y~ݙJtBTB-B=]Q^j 0E?xZ `[X-B唅JbY Pqj6nC3R'`{¦!!1-kLMKͤAAr5C&'Ѐd:9$RdS#wv.zM9.z0H )67'Pٝ 6U{OZи/N}˄_!\@NduVz͚nCe:e3sUӅ)qkm+0ݨ P2s V  ،XZ㩍2fX`st}RrqSdMPK> {XG%|L:FrP_^\M5Q٪1lwlwM0~c꒻,y7ܯadrtvhۄf/ <̍nmeMN h5_$3"H?6⸱ . zd)@i_sgjGAH 'B`o # i2q88IqXDdB0F)LlYc ކf#"(!<V .Z+ (9 3Ywm]Cq5噫zAkH ik2v!7t,88(7QM>Nbi`Bap^,Scvc@?# i|$O~`Q2SlBq<!S )L%ҿ_%Y#GW/S+viGx@b֋b&ls+sq˽ɋ1)Jpw1zjaHe͎#"E7ļ`)0-\_L;9F4'<Q^(av]pTȠ9,,l1}AKvܥw\R!ibpc:ε~23M Rߔ' x*ge*w2%NXeoz S sRbP)"0 cGt!F"_#[X@{l"MJI (u> C}O8 섺4K690R)9?GsJN`.|PLSeʻ0:y.ZG%ޛkbķ跳8z6WXgB|6Q.yS(F`xg'&675 Xf-NwW |>PPKtsZ'g>eX,sxKrw1(JAI&9?i_{{p&,Pdx 2&ˌqlp,qI T Vw>۬U6T5?f˫<.+"+i@?SGx IDAT|{=M]0rq+ ~΢?݈9@4َ*s}c[Xx,D0SevĖT/!n}qj5~9&XBX9@(" R0o&DzLc]9e_.bs.LbYfTbXho{ݷc h"ZJ$i1S $k^PL\ x/#dan$oyI-_T=<TP L,y@|΄cg>n^n_{/{.͈.SUh{=LSm!n🤉(C ,pS6b/+2dM{}tMQ LfVGZQ 4|_#S`NhEsj]$&MmX+/t \ ej3c9l&3L6c%eO9ro6Dc@aBdn=2 ':ɡ,cxS/m~om~om~om~omuۧv`Mn<PSisr?r MW#<nHBu I{2<4D2Z$P1  ߞ!{lG " cDd0Oc {=lg5}009ny=BD0e.>׎!~OdW>1$(°fLL /y1PhBC^3}IvQ0A85T#$GX#N~o30/O5RM%#xTc3g/RcemBb=K S@35w& r`ƲR|f)NcOq?K-zḐXԩT0>SY712dBN >g, `1 .ܘy?)f%'3uH#(S 4dr~ݘᛤ4BRs1Y j)Vn@pzO)J☙ݲ,*"15;db5$n$C!M맊(R6RR:c TD,LJ3KN#'})%B@n.)ab"JR MJcT>)xb7Jlc3f~!b^nHt 0_ XSQ b (' SXg2彧=NĘ1%UxF̹TmkxOS uݧ)@HO#>?:`ה)+2o""pLD=/JF`qO +LUFc߅M0{S "30Nx0"Ri0Oo/E#~xXbY,Fc=yMȿRLx&1ƴH7h3ʏܖ=KS :?X!؏>ixED wScBa,[}yc'KaYː1MEncGGp<X|B#` } K*(?yfIef,yYtUD PuurNRPx',e܍1v MR+K|_0lӚ*+ V_ZCD#OLn}Agfs~њ"#3K)əG3U{)jby!֤n(tuԯت۶|Vgaʢc*&S܎$RnC?&[]u,vo5ƒS?nkP ;:*}6<@J-.e{NeWl]6b/p1{܏SsȐ/Ho!!sEƒ;I@?1U213vt2wvl%U̾F)C^69ERχ/A0b@ĊD([RV{ ٜ Ő 6L{T/&ݧĕPaz58EW^*EV5;Vg^:|VSV<{U_>jEfkO)Pd km>要PY"uAP?S^XAn aToJ x/~ԡ!`UD>G=],~|v?/T/ՙbv?Ym;[w_^H ʊoeDћĶ_ CRS  7<,K}&Ur"!U8\< [ej'.}oں;39[=(oRۿ,˶`9LO *t|i"1)|_RcV~^%y_0V?&d1va1&.Iqp՗_#jŝ}vl"b$R|7s,.?|qG[> [9󊊃?ݜ.Ž٘yKHC!=`pO0v|b7g>~p{q8Euvvuz2&6Ͷ}?T1RIR!djㅘ=p1eX/ OcH5fK7oP· )hcq*W>?!Rϱ5YY<s~޹pD|I2"g9Pز˅0BOP n?4;#Rٿ~2T wBk-o,ܥ%-Uާ(?x6eoUVרV(o_]J '!m>o73/$|D!VUȐb${Tq3-[>]7LJ@b7&]y MVbᆬ?ej⧞?fS`Ι-L]<5p{߬tfd684-Ci_ZQ1&AO1cC 3?}LDP4;lZO7 1E N)'[!/6;U6qfk+w@:3/ fzBuvV3)9fŖ?'MK?9_)܂Ԋ.ֽ3l )Z)50%RJn};9bW^RDGFE5Ёo:(s7c _9>|c-+/[kXk;סϮTX@N9" /|07ړ7 3 AM?r lے XT`ئJ}>PÁ˱q  19cύ-CdMi}5!#^?l@J->'WKR| 4[kwÞ}T-%d[I!7+hJB1ca,Nx˘30$ni D[ՏNsCrh( XqNm7qJ nA|=v P4{dի d'ڬY+wӞ:h%֣v5<>(ZpLtq*?~_=ؙtڠs`Qp=93W.}NKc.UZ1 8oܢ\b"h+X,e[`D0vR=_e5;߬~F0ނ".>>R~HM|W#z)u~1_  fK7`N)l #b>K9җֽ 82iGy<sqP21ޅśFŗP]ӓj~7 @;/6!Vt|C^ʱU#Ame <=ru?/@EڈFWoܹRBsfܭc:*Xm_ >][`A݁ZDԱX\nޛl/pU(J^@A@MRP}`(&ކi>-NV[MӴ%4uV&1ѣRd,$TC t'A_'@1w[:^AXΉ'l'''8::үsj3+1 u]*%cK' d <F"ğ0cg_/HWMMa'xNNNprríyMr҇+K,gJ_* jY 3VHݙ |j\t7=@X `xa ^657TF ݦѦjc !&fˏoR5t`F}qP':t[1%u k|\|xE[̙68Z8|2|3Xk'9{ѐ5IU{8"6lq&Ş۪~,HQ?&8 BhlX J|Qg/x.=&>lꃎE@}v\]Ox1:'HI19Ůkeܯ*U5X|8 ŭ|!M:LؒQy@3)BԮt84XD K B9C2:|擂V?efd]H( sP5i2֯ri,{;{J`7{tR|t=҅ $ނ*غelj`/' #O3)]+DJs<&tf\GDc# AE(8s FMbf5T56`kn˔jÏr˳j3TE^VΏ^LAƠ^t9p MK ¦*C@[[%+kQ;x"gI Rep=mH)"-zW6ns"lq鏸^pd)} )ϔα3Eqw';|S3fh|t`<끉 `:[NpI!΁D|q]9hx\0Jfbܶwԯ5K`)fDP`8pSDXᐛROD\XeNq\`4mMĿfC{0+X\oY"4h" YE .ǁ"m0^P( P 7$;>;q\k/]\ 4M6i H-Ho@-7=MЋ muse9l6&oy.OYdVU8pq#|̾ϖ+THR<^o"L Ftdyr%לsp8#Y*Uۖ7-T. 75sy&zFqc"AC48PNZ%T'}_+ChW=~gŬjDl6hkZ|cv$ɹyfg)!<^OV_VFIh db zc(y#nB=7ɴZG|NܬeHI9&s%У^N s3Y r Wp_(Zߑoj4w| wxɌX i¦76-,<̼"N{nxL@Rsj].Ф*RC*tdĹ}LP;q瑪OM@w% h+{2]xv<=RBI SCB Cnp:~_@A Ch?fiɺ8)GK{8cl6-=jV*-o=+iZs<4hd9W3f 0np4t4aZ' > `rH&c*1p7a&ocɌPh@ҎBBoY>;ѳŁEwtG^x‹yRn([lRNZ?99]Ӊgwu EQhȵ^'㺺lZ|{A*XƏDx=~8Lcs,XR^heF+QW9TH\ҿur8kr1s7rjo IDAT͹I*H'sw"ZRDsdG=HuMD YGrѧZn]vh7#ݮs1&Tb=JnCzs<\׹şSvTMn9w.=wq/x< aRܢoPMmO˓sx"KK 󑺚 ۱agMl_Ý>yt ݂o;kwq So$J$U 3m뀂5{ [t-ߧ|f*Fcs4j' " AgS9=^8Y,|Ϻ9-CLA\ j)A Fl9:~󟠯(%d _oV]+12$&GcE\TݴʦEx^ ad߇9V5%䴸u 9gB;`un8 xj"z2xdΝg $n_!骣B`%F2 x,:M >Z)=5hWŔ]l ;N)7-Nbj%7q&e/e2]f$Vyξ- ]?Yg&R~7*4X,OI=9Rm%rHUC Jz@)c2 Yt3%k)[z9ZeʭQKÒ{81lm-33^怿.T'K%UxŴb f~'TT_ptӉj;UÆHY$mroҍ /.rLأ!x{|n >ZW"4 <0 mMV[)r$1+WK&XMWw{gxLzy\YnÞ+nu3՜krԛ:NS=µ%3lwf'֮MY--?״x>Ƚt%<,졕oudȎrYGC$vQ׀q[9ЈH`b8˓[g;ft4^r!?+-lk~?33㾴 5{ۮv)7.5;m[BPt1bJxg䱙 B6kޜfguW!{~Բae_u%KYDy֐V8ņlaf5C+9ya*d_6s'TuhWzݕ+Yxi;OC?w2a5:5 =\<5J1Q{m'1p;>x޲|I҈C^M9-99z|ARlOj}zbq?bmovu^C#:y %hi! >{wx~! W:NY\*fM"94:<3~ E-;]} 8|I-Og%nߥ )bX_a!Ncz X .I48QόD3>-t]&mg箖MĘzAt/-"\"R9x߾.x_9flv;e\ v-}nn1Z sp9#&WdJ,B gǡߤxiY !݌ :W˝ }o\ "50tl&0F7gv^юVT] uԉx)|8aJ֊-ŸWq93?sN7@3xrS3]0nKZ$}9DO"굒 p7Fm9!7Mf5e Pqt3 zv669ȺҺiQn,Yfxf g/n"w*\Klܟp1E8`qJ  !WFhLt+3*?r0J)r٤\9FZ %bG`\S_֮'eX;ǧB k:0p#?F'伻m]Jp1uQ<3B@?U:7ls,3nss tC/ir5Kf00IK9 tS(PZ ~0e\uˈsbꕰ~|fOKvJUq,tȺ^P5Vnv$+ED.o e34o71~wӈmr(V.7Y] "Y,a0󔫙:&PkY6mBM ʠPϋ lj4YmvahWC.*?bR xX Y1OHh79.,-ORr}zpSx7Nnaa9 daW r% L#5՜3a_~l v-x%X ]]O-AT+GfU|p灅!umtIA z~ ?Y2T7] ƹ1 #p£Dc4ƒg.pƚu S Ҕś -_)S^P,mfLق2,-L^טG3'Q_1X? /,ax85.f "r& g6"(ڶܨЁϲj{\B@ҀfY-0N5 ;rv2wڱųt1;…Tir3E2R)x`Y 3wsY,>,-`z:Jz}{Ya&ڰM-%8a6aUɀ۵vЦǖH+!sy[]άV]RDiQ7}3Lfr`]g6Х^W33EjBnB./4nL 3DZl3+( U}8oJH*Hw'4= z֭x}TحpRVܺ4) 3B.ߧV}< L9u'FHU7g[oj9INN"wyF ,y'4䔻<_2;t x0gl i)W%EBHnC/ЊYLjtXmu 3Hl<2r4H`!bx"R9RɜNSrp9^￲۟tJ040+'jZ&LNȰd<VRnL rh϶Faq sz͕ZU幬TϚl}<0* ?DR =]OyjrdQX}r[-gngMgL(]L9]mcrNH/s3@sXo/) g`Z§@7 [ ,'(i!d_ ௸:JM~xg0^govoZX)7U Iрlgth GTCsXgS:ef*rAp5eݙl=_?VO/:f[- kq O7鬕X5plo_`Uu-nq T$rkem c46bIV_fDWbo+djL#W⾠^4EBr( !494&) iHN Yn|3*'8{C?m`elfO]f"{%)0M$ӳ:*Vݺݪ DyvoZ1K!%@^ u?e.9NZD2p\(]̫ xG](zӑn3㼏$1Ͻ n 9BEtSicp*;#Fċ!P&YO ^hO6@Eٹ}t>+J=H 1.MI5N"{z$Z?pfnfSd}sI)9w];w` Ȯ&|OrRwA+4<fɕ\ n0O/ODZ:[f a҂+ri,hv1wL#ğ3w~FfI.{[0<}`A:c ^sn~=G#R;qa21;yw[ İUۙ #ʂƓΡOgx9oV6 ( "e_0<cFkwx `;ޞ }DIؓŌ'!;Q٘%YG6,{"sk$[« }ΙęojCQm\!FIT-'>62\5 a"ᙾ\y΢xn9cK ݿfg5^ } (T[:=m*ve=;]NMpי2dTNޫ:!?ũ&_j¥56wCܗ0qDE|kK:HY:ad*m83N2o%07x}Gx9VbB_9ufȯN$Ub<ȰO c k' lS2q~|Lvc@R p8Ke&3=Mօ29et0>ұ .F_psBˡFYЩvs=L#2V>8Cy#32  Yr3sZvocZUjtFJ`CZqqld/us N#Bl=0)e,0dqBIi~:Lo>>ۣ=4w ~°c3жl!"eKsLxӓW簆S=0.Ix @6SP,,yx>E(Fit>*fR?+&Cݢ߫e459dT։B ¤{=Ӎo7o/w(U}) -df7p'Q/Lݗ;;79u>}M85`*wp Pv U2<x3xiblB pR.f-`qh8LU Q3r3OhS)1>(7b"}K` ȁNZ}Юm< X̌{roEn!> Sn">kT`>-^Uib.f6pFIfY4"C8::P>5 +o|Λ˷8f8a\@q^>O+ k2.ǜ9eGs}z6i (A#3-_ 1F;?[ܥIM ح({=7Wms{B1xBJ1sn;<5|y*)2fY]0~m9ZLp8ym>תC͜O1($7β~2Mʰf˙,Kߡ_AMf6 5^AHu2\^˄cy Y^rwBj)N5KqD)9OVg1 2mKaqhgs8[c[-zYgON}?p ""t)9g(9엤o).Up j=v*c%-x74K_Rw% \Xg-vh-r  gȠ9X٣03D!s!]j,9Ϻx0IHDX@B=".(P9^Z9%37 zf@X,{`<*dn} M|~-pJ `5^[^g00+뗄EXo(yK,k33@jf2nנc3+tmhqiZ]v-h0ĉM_1^PD(f!in%xsLXp&'VOeH+EU:Ֆp`mnȮKIcp{Y-ClLX<<9KY:xgѲ1[E;;'ϓ+ 1-0hM-9Ѳ 9]_lsN=gkw rߥj7e(gWgucƯ,BflX;:A'nLMڒY,t5B%-z+w]\_МPu򴫖]w7m9bDtSTlOhL,_cd {h -ܸn*zPp控@ceP ijEIǿ+L,ߴ+<@м݃W#Ka"[ bgLLfo 4,'[C6kK႞bW'x nkO+Dץ/-v.Tg1+w; ch%Q)"ʈrn/>@z؆%/ϸgPv%ĉg}׮@tp]OZXv^skaj%s@q0 SR8xpttȕɩ^ ܮ$0u7Dx`"=NYRg1ç).+ݷE| ^Dջ&FCjڄjC(ʑ)YGXXWµt=r+7?2CWh42c,Mh,Dh+'C{8.kbdiP߅?b7S` ܔ KS69|&,>پʒ  @&#`NiB)ε5?kE/}Q:VMoXMmx&Q F+hBZzD<:"r4ZX/o"ђ#;x7"&p63T @#| |*| %E1$P;UoA ,Ը @7<^iRHd2a#2EvA+#_ Gx9ԒxB.g!@W 'mrlvڱ:Yo&3n.YQ$0A @xOEV@0͍bLp/]&-"mpg?kq2ȪQ,\LBo½ 1M)p=rMMȴZ_[d$R̦|A59Fh+bztu,۶3T\ p„[Tp曌GM fOSQV}xLskxߤADح[;Hx"CWf^"Rtcb#Go~ k 3Q"ky%X̶ƮVaENΊGPzYøIv7 G&U"+z-9 1USt>pw],@T|sDey[g\xkt;pLhL)Ayx%@x'A]i\+/FɌn0)8| .-T*J{]B󺜴v@BBs!VLkq\_#`+⽩ʹqG5$P^nf/Y/2\}Ppŵ[Ϡ m"s \ \BkZvw_UU(zP= !Kc7]=jLx !Z8p 6\z`3|ߣ NÒn)Eu ng/`VFY2Xl &%$#[%$̦%4<2M*;L[r:K,:lbIWջ̋pݵ[RQNO-J7وlX,ɬ @a? rJdog~D@íX/ ca+AN:&hY]dߖBw䖅xW'1#QQ>MQq=ruL}Y&5g{cFq#˲%\ 8KpKƿmvڵ#3%-v:ezW>WJd6TOa7 <7t !To]Bʤ|ͺFE7m+^Q%R[;#9aPWأEurX"ZWFu - a_iX8: -~Aq L WQTzի ӻ ĂA%s#_yN3Hx)LrU\ KP,tz.qpl:(w-_Bfs 4joZhfE`o oHIDsusd OIόv?DTF,u;ܮ_儥^\ +'K٢\7)C5&vde*g%3ޠ(䊅\(,^&)%1PFnfߤ1s;7 +sK]EUO|Oе ex MX3h亪|D5ؠz\ƘMƚ$nh5~-.ES(+%i2%UҬ~Ɣk%kwJ{oư#?v˚^Tm.Y.$ca E}9nVW`m3{ דani*27< !bg 0wy<=>'6.e~<^?j2.+e"-]tUorz%̦W-aJ A'P7)Ri: ](I%DiX5YB_RX-wz7%.Z̼N 4zL5Q|_g|;_"[WO+l7oCw{떛[#SRs,kAkܮ r^]y w!XL~FJܗj,^4)&Tv@ko)sþ-2?txp۬AeG-Tte&>ͩd78WKmx ZP40f$H Ff=nfhs_5=䀫|.Z9Z\RŲW]w!-YV++BFWiaOe}M)_XrN: w!܂X"+Ӄ="}u'k}W7OmPyr(.fqbxY(b4h&G#[0Dw (M7p 1bA;kVpɌ 倻`\0c:|!,wF($Y}EPkۈukRpY+\)ȿ qv ʍtրlŗ݊]-\`˹Q26-s|=noɍࣣ{BZx_L/KPS<ՌWgDx@4s @ÝL5>C p~n5(+= [4.]b}d+$Ue4{J*aN2|)BP'cEpC-W75 E&W P/{:ŒF1D}p$΅hy;X)Z[e:byž>VH{Ums&,YR!R^L"=+ᡬۇ <+VӲCze eQl@g+B rYx{E[XP@ *][O$R͝ 4ݛY&FIfNz}nPTe_w=O]켐bJNR`bS=Äi$)qh.@ͮbwܮ/ܒȹppP,:6[YkrRtrHDѬ5"yt(߼W3h{Lq= dAGY!(ic! =5! f  F@$`70͚}K'yRUu}MþgtS>,K--n'$@bU/U& ~0%Vp%⹍`;!3lGm>LaT@Hp^)"}08/!pŒ @EW.Wug[EXmʧ\}~1hs*kN'ӀHsp=5juB&eϣy&@&x # 岥h15\qDoq!Yʽp%Ɔ_]AEqh taMk`[ѶR߭-VGxau1. "NLIPVYk|茊jbq>_h9 IDAT#  Z>3~:I1t1k#6޺*Ro)Yύb95VbS 2R^ׄkbNwQVVإIY& ?_|]tw@nAT,P,N>-{k>c7Ё 77Uܼfk07}wb& VъJqJp$I1QaGxyVrwaNXuʲy\1S7q p meL pCh/ȕ]M`QH`E<9e5 z#B&1Z6@`0ذ\:0"z]":RLiMj6^&qtlɽǰ4Hգ+1ZtpO8!?xA PM5Dn;x`fo? GmئzXb.-mHZ!D֒;JU$uR >~.EXr58 X'8Ůl 攕 Q͙QZ 1T.^h!,Zouf-ZZ {`F72~)dMok> Bx3 <cs d Ǿ-7IZƂ0,%%[L})Sx|SP`aܣ_$=l;`\4h&B֨r9¦t X@⹍p!ccx_Zi{!gb` }>dr"Vr26P.ξwqӥFyS)\|)-/5$1Aŋ3H`#6+S1ja[A)GjDFb=L:g0zAH)~?pjY2ҚJ¦9RRXts+ po5E A' I7 fJv_2-Liz%ߎ˹or!K]H;SVleFsi 9kfe*Sb,Fp%hpF@/Ʒ.+ūXNoJ9hv)Okn .R2|n% A1 @&6 Iuzm.:KFyӢu#!_ _ BQGuCF$[FHn%\ԏdun!QV6" VA硵3yxclNB"ǶNg,u5C0Ҋe}`!Z.,6Wӹ$)X9 S`!L u޻qSۿv.ra'+cj,c-w  +ڈDZaWq1 eE$g:ckxR&|*tgʫ~S&-:r E 6n.cɠJՏI;HҺx$,^)\8sX(/ =K*Ce<߈2+ZZXTڗxXKs/-uJ1#ʆ[: :` #aduB#,`XaX@K|82}BYhe/[xaTd!ԑ9Ӱr_,HBI2]DTKb>ʯ6+?;',{RD$QRm?ZD`8v!,_-肞($s)^aE+ZLпFNDt]{"&ŦU]nu`AkE쬄ņъc}|-^., kY- =[˶1ΪQH,Vq KRx,8?"HnD5ZVrSvY&!n+%x}bb1N=ӲC%Ryrst1f+U@7l%2:b]fxJ=5S%PTFMvb*P.W`م> $EzH …'p1 fZĐ#+.F0c].N>t ;<)n^MF-1 ORX2W#\d;p)>G1+Qr ȸRDžx~%\"Sµ;qY>9Q׃; U\- Z.x+%ZO{u8#=K]Rx/eB: 0@!ɜ8*]s=d$.6jarRod+{rWb7Ir=\&~K%v‚cՌV2=̣;{[ :^&bk<׏*3i R_ʚ*Ib-f){lr ϰjAR =e@UY bx<ޜ%=͉Rр̹)$uLͱw!В @vW1`8?/4l1T\H{~KP!NhO JmVm,x=ǢaXRu) &Hu9sB%HR/T̂f s+\MY,2۲7Xǔl@EJj8iQ7sHX3H><ी2er0=>!\R` ЬsNH7X!=Lr:b"6kr:B@s7?q.Gs?!)ˬ9mHLS\a4ay4 J|3kGcxF|KJs]9`-TEs "ya"Ĉ ۾OX9@iSDؕgLV0#>㉍ ކgq94ѥܧ\~9) DzDvθΜ9`0s<Բ8*'b2e@ŔD0 &x19M,@Y.^9)&⩜֖99X͹Vvs:18}8J,`afȧti$W`Y)`"f"\"Nņ >KYCT*X*rut%Or%1AdL/S?$,X 3]9m, suiV@M1BO?5l)AmsFp#SqܔŌ#,TMGt8c4l>}C-e))cqz}(R|/l\ZXN")S[my&g5ϓ1h &-PK!~[Vʩۋ5m d\]0)+6erx0jBpsa (*fr~2q5Jzs w"Gafl7r+Kc Ls3sWvq~C\ %Ah!-+r?91erI >"/A"VY2\UfrQkI#BQ9WVιLY"9?tDK0âxx wB[A k f}p#SV+$ˌ1iH=aЦ) rIŜV̘(#w|I{ B7%þYw[%l6w6!)j, Ȁ# f0 ~1`<QQrp \v׻_UqY'##"nZn-YY9΢dy6zplf G"`1** 8e/P^| ?|`u)~LH 5CTL c_X~gR?hxZ%lv.,@Y5c]}Ț*L5eXUk,H (_fOmyz0XV`!SֆkbM-"tJZa꿖"1Q'H"U@Mfl{ D5_SZM9# boO@0D*!_ʾhE6S0MH{RbcXFYpT,lz>FYWW`tlF.D|[="C*?$*cf/Y/)WTN#ǬX pMNJXιDDess5_j+Z[Y`4c?'Q`$Iw(| YXG\i3]>;tv֐-ƹc7ߒ:)c{Dl/~Vr:׀-b =.#}`1HL*;le?Yb*ŸDl QRƺˣL B1r T$ o D QwyOgOMM:{rV.)`kw+afXkADv X7(}eYlJYP 0_U7K1H!1{nW(͋7_U\}ܮ/)&Hf]RwKֶ`ssDǔM?'zyxlldѻ$H10CEc-_ 9v]Hp"`B'*H-Wo,ߪǟ4^l(滉:j=2dY $60k-1$ƺPZe)ܖgXWb6vsm+A?' ދU Y@C*ҚYe5.d _"7u\yzt:Wpu+[|`.1k.!Ā_|@qgR>#GZ@+!Jq3gݭlRi1a["тR.dǮ8W`ի@Xh.Y!vt WwC.`ZZ”EaE6y?WYOX !Jގ〷mS <T,|dR^/: ˞ Y7I~87R^hA'VNei$.Ƙmu߷ P1鋬\L^Yjn[>9nl1GXI4Vbrw=T7 Sʃ;!vL$n\QU/sMZT<'K 8 q\4ƴSOU1߬1hVSs|Pq+C$XQlAZƷoWWyV2_6ƨjDytXzoݤcL&=b98^ |>"o;t ,DY?7:]֎E8CfHLC7y/v[Eڐ 7R 2G)bqLvD7|*k4CaUQ-%8df(Z@EDc9i|6n`IWt$Rlr_M/lՀ5 -!v4&!-}Gm6\Tm!;PT$ʊ@D7S<9D py܉Rt:t:Ϗdtl~~ctA}Q>ʧtgkWsvߜd)y!60~&-T#T|R[\T^`mkݘa=t+' ffy FN@`B\}ҵ#~`f>9@upyt-e gYǽu9_c[ a-3&`2.Z&YUNl3Dl&c2\ӡTPKtT^T4 IDAT'a| 0@|[c)TV6DXK)5̕-=0& kL^>x:Y:Zy޺Ţc& &Iϵu7 ga\6{1#~&A+-f:#3Xq0*"[$S"<P6l<aD1שVo_ujTS:*9jr} {& ބBNP{1\;;;.E2֢*hQUUpY58e-C9?7 jY8?kK&]|>L @WJ99]9[)oˬkhkisࣕG׵JM$n#@GnKS,~~C0CaudI N XG2xBT~ \͈WZxac\PJoN[X2oE^@7?t1zphXL s}(V[W!X]gŀo7ĐƲQ|ײ|*?f4.UuN="ER&psĉs-mUƺ§WW o&q夥0L(fS$Hi \{D}# p K0k#.hR˘(*+[7'pP#]F;wxZ(e0\Q 2ש|l8A[V6 ].QޫEr=%:/촀ssNtU ""$X xU $PsHOӑCe@TNkR)TN(׫SGHe8t2P{9j54` c)Ok931,밸 skZps`#Cbʌ p L (l,cOpRCȱCQiie y>i]ȧUكy~q$.|G\M`|P Y]".L.>3S 3LFyta1MP$Nk)Kg{c,5tUzYS -6c"s*q +lh|?SRl#|5~H{FyE=&/uJ؛* LxKnc1A.u?;!?Mwؖ#V0D MJy[&j*t:9i5󈕖y>Oft۝eTSuYL["KgSi3H5?o}2.QFCAôTP'\WMo t)a_!\!#Π(QhWL=16x0xuUe&< ~J㙵Ffu/YNo:4?Wap6H 1CBIgc*kX][p!Ϩ .zSd޹bV;.>Z2'КCYTt!!ܰƇ>Wք긗:Y?eYPYȴƧW)Ҿ(k~o5r[ [6뚂KK mR$볜 Mo9LvF(˿Ȧ Jw%1/ 4VHv]糝DgtbЫDmXK|eȦDUU.fipjz2Zײu3ɣқ秨[ jc,*lTT^-;m 0:c\ُl.{^z$ָ Ʀ)hs,8X!g$XC6b4$A4/wB)nr:7ћCT2,Vc*Ss,Cn¸ItDXMD'W J@A\"6k +p5Sp8REqLj\k _jL^SP10xDP"@ưX9u_,߇\ky *U^/^V\|x:rb!ҡ\ kb=XB(ʧ49w׈.zj :U[';ɋ\r5qYFdox9m ϶IT1$֏rHcBVtLl".17ef(S\{sE;͔꿣I>`b̦+lXxRp1=`I1 ""=8ⷙy*cI0SpraS>Lj1x(ZNVhE cC6 ʑ.߶ =&E iUqʈhC(.k a# XѮfMe@M&S6/X9bpLG#͔v{*ܥ`^SZkat H$5""{{ ơ)*tM6;,dx.w~5`1GJ̋1Kq2^ fL2c_~hU#פT=ly r^sln,Z(:+FrSq;|}~s<)6Сy=FJD>J1!1G01  ˧2I}|@r$~̛>f4_F$Z3cn`?^C'}C9NjC-e $)p^*,4;B%o3RJY{!l` |AFtх f∈(3|Fss23=|S:+C6YkA8/etVa[6: Ֆ7SWf1V`jXv8oc/_c\"ޝ/CE@Mb*3nqcU"1PV+.^ATtg9cW&/s ޱw<pߢKq>`&~̒1zߐX>$KvɄIDģW [= hru:zҐub{d,{{ٹ+9jկE܋9Wuqb[3t#n&2f3N`1ϐ`{-7 w3=!O#rJv<jZoU BuF0BE!v ̊}ON歶:>kp#3;$[dp*ng0 zn,L

5v1ty%N) )o~|PH0 têLK?1m;SI)u5|n,zWO d& Vjkw9Je0M,=CX iU_Jc߿U!5[r 0BKV]hn5 XaLfv}`Q$ q-Q ˬ7Iߪ2,oty'2Q=1_6 76f[9ہs2%!`R5p#Qia |JۖREF/2q.IL8$f IDATH,\cnsh1)[#$mqJ-Fn2MaA);Z*}C0kRUaA@vdؑVUp@z;nJ};L|VYkh۪A=Z>$Pf<7 l1[ /[0B260 I@W3\4ldGjG:MT|.D>z>Gn0/OO/ڈ]1Ay,P)-PKw:l&vu &ǓeE샆67Y 'cԕ ٓs>䞃+kjýQ{sעo.F6aNj']O d8&&}Z xVU S _JSu#8zI# ca$NaʘMsc-HR-p]\GW V:`$A"gX&U& `N'^8Ɣ(4dc!&)3Ib a4jM;6N2qԛ.JXЋMdrJvG@&V5 <1a]22)nWLh}pUʖ3tdK\vDh Jkl @F͵0V^djQ6(烿d6SuYd'!1< 1Llh >Fo5I>3V3k_d"9`hDRvב HNs}ɤL37]Hqg;ܺ^Oi~?WjėO$ eL:?` s#눁wDJ{G9AKv>mG.즥*(6,2U-S{yc8^vX5[ܧz{Ȧh[X?4 ml%Mworߜ>:Si77 1,Xbt1 ye@]"+pǬئ2͎"c|"3_HYʔd49Ԃ)bd/J?pWGScz1n94"񘍻VLv=l&viwHr#i﫾/'D)Ifap 2IVf9$ŭ1)Fdqd7>>4EU‘~ eCfsn=-FT?2$D Ӡ!Fy`1*e&gtTͥ>J">6?t7i1CI/VM,mPk'3$8g)qU1[kKOp҈ܞЬm߈Z`g ¤O&&> %%&DLǤ)RWad{([\~3},7==ZX8Bɶ@|9sw߹+,EރzRg]0ώ%7㉳CdC K};ǤAƋcwޜH)Qag: 9\Ucxd|x#$|#l-ϧ+71~;ޯ*݂#5OI"&WU/ R[1K;Բ[τ^v'-VI&+w)A4pZ!sH}ni&~:>-pΪ@;UF`!.N7Eo&o RAMɧH 3d0]|)6NV,24ٮl|=8&A1=J͚Iwٔ&FIWm;xv)J^ M۬vSVd;#ȗI 7PIV)F˭m;֕l:O637@5߉^Y|2k}bؓi:V{-kViT9ԎijDٓTwGC[HFgTi6iH矉!׻^jЮJ|M.1.^)cbV!b\k3̓[yS`y}s(3NbЛa8nL*j*:~C:]ОpYa6V3Mcn 3&[&{[.N lHSUsxiUH'̀=XpZ;AdrS3W*毑 g(`UKBP\Ji]},<Ӭ _+LdY0Lx{|zZ&H#"Y<1R|oѩ=?R$46%xAmJ<Fo|]JLE-T@oՎP$p n{ A4ȥUEp| "+aa:0DiQfzVS:7N^ Mn@vq &pzDd`T1%˹j!^ h̰{%{Jӏc<I*\JH [ +9g'K3%TuVw;פqsƕf4zodO!2R ̙f>{/&JyL!PݳG"f8a)ir6Rl(2fZZ&X |rnVtb$׆j̭gJҔTkiTSRz>ROi]MII ˍkY)FH[JՉ19Y*S^ ̓fѲ鵷F8 CVŹ=0}`eUI<XW !C8w 1Ӂa%>@ 镤ͪ[ dڗ_"J ΂ő79Odsv/bc==dL3p?I8i `$p-iD(ULh O/~g6!1 iɶêkDŽuQJMc:`հ-|>%NiEzdV<#*1zaBf9J 2k$TLq;4poR`pbRU@ (9=axRL-i[_@() ]`4 iHє[xvZ2CMia Ë1Gjs$%%`&Fx)Ed Mv i _o-jw,wu͙vN}We2^XuZ&q@>ga%ȖH YtUnR NaWjŗ0MvLsL=Ljn> br@b]!~>X81ָYmWI1T⯴jXkP]9u0)s FcK;S̕UML.RL#aql 0Ib4y-2M_{E84LJw/|ґC0dު 0\Wdzzm&}|X.@^5G|964F|W9>`C;4aՔ DŹeۡk[LCߟMo"AHMlVLi2w4p[LѓXJs;#F@\+T;FF4eRgx0N]:iAr8GxI&Jh, ? f'F%~qid4ʟR81#f@|Ԓn8H-ɶWu4?3O,JÔ#;,meo 5:4τϔ6s41 ?]CIٽĢRn0ީ+7 >.&nJR'IigR2i +QN$P<WͰTS3Hij: [#þͭ&k_)_l <1 #1VL%LSK׿:N#1Ys[ 8Z@)`؅.nN!jtb&Ѥ< S7!tzp?z z^O^7q#vjYO k94w*Ոq3Gd|:uUHJ$7. Hf dp+!kY)"cZzU|-&Ъa q)wH[F X)9KM&vR)7WFNVAd<Kogwh>=5T\Y5o~zL5A-kDZf8MS| n0w+D"n[5"1"vH2&MsM$yzklb-wW@_5OO09*ڕf>Ķ{Zd ^ZfNYD:v LB1ᬪKi:5• 0YMC9ҏom4voakh]dNV(E6@>sŁI@4Tn ?_!)ʖ9Mq49E tjA&+AM$۪nP$Zɳ1N`wAA@߈dkqy%G J3g`cC9q)LuqwaZ5>6j sk g(,vTÏg-N]0A Cp/N%=koVj+ EW;vq0T\W+=vMg>#3϶/Kin0(a%e]Ot0ek,$L]q2w~ EUh.U>v%VcD&jnkFf ;31"ۺ`]}rQ´ LjϭyesQP6a@")  "K|ڻ S]MpS%>/f>v]iFdlD4\OiLN3C$%rAuS6uZ,uJ3i-hUw^.%UFN=Lq[Iو}jɤKgHbT;%ek$!54J;M&x*M쩪8l^ ]Di{iqTۤ2w%xPnV1ZOxvZR^!ޢcr(C;az 0h%%bN!bQ=YȘk9dZcJR=:_fGt3[m11,C1*4HU>{^[[|Uq>K}TJ_c*oML'lF#FR!k=8J0_'(rTd8 9JVLKp8R,67hJx'vC ƈa>Yq^-kcmG~vU/O婜oR'PF,nZݒZY}in]"bwfsI%]9`<{jz]B %f{eޒM,堥s㬔#כOMR,U #9#7oOhlo7$}%la'>[%zOIt"Ř9`[}>¯_雕-v~^w$3,⇕J1@D dA:|>X/Lsi$7o \ј&ҒL*aZ٥꽕 ?E*=RI8.|U ׵g{o\+<@oʍ**t^cAf+L'ͪ Dg&p#U]#zJ"RyS~Jx ɹ4OzyT\_NC6X}oķLozpR-N_T)6c(lc}0u`crt0N{gJUEY|K>aJmVsd|&bRUnYkwYT5?FHFHFO`#NʧFH>ع>ުRua֎t}RcLG)x'QzwWrh4hfۇ-G:涽^|CGopOi$YZ'vd*g)}Js J 5DS1kNh@Qr88=`%S$gU{G  L`>YE SJO˜siZC !khV "!vJ1L4Zr`b=%G8F;=ȳszP)UY@ۧzH@# ଔRn+WyfkيNoD0:Z"dΘBeK~qWqg[ jGo;GQ"L$wtm]8h-t16Iɇ4MƘLf8O٦,Ȫb6lz=ԟ9t_{gn]/zOXrn+R"f%~- =oŋJvķ*?Y#sҔ:n?AJ-R[I>#TULU)%܆F&Cg>v(Bg+tWn h3)o\Lx}ȥC3d'X%- 8 JVZ{XKlzV"pJ9V){3w T{ HUi΀USqAzsĈHEGeI0V:Fꕾ0͞jd*m=fE&&+)J缭*U2|͊JU̝l4;<MN>k<-yS̄ A121[| GD1ƴ4ij;JlƔK)q7Ok(4`@ܐ<S*=ɈFh~F|C ZI EGTd=zYU:퀄KL ?-_>Ac؜w(gR{x9,D;`'2~87i>D IDATSZ > AJukĴaLob[er/O\S^nsEW$,-*vL F.q{ْ6 T5^lsd O`K]sLx{fI0g=lOP|F# [r@>0rsA}7Xc}0J-Rl\KJgUKx1ka4 ͭ̋vgs:JdlLP)@c"q23A.J-6=\e#-<چN KO3`]([G"_I#Z5ۜ fֈt0 IP?F ,C*:@int>L̡6S2!p``o~aݸ[8uhd2qi;GKoԽMuJk,mf(<5=)ֳ C('ܬiD2L)}XܹWYs泘9Ø߂&ޛ5¿鳢nB&D꭫ۙ g {1pč8by `/NJ/ #u2hqJ>|A,ϫv8lgEúJmVm2W-d@/0*ۿ 'e@"e׌/壽U&@KNl۳a5۪]xָC{ۇPN|;A)>٪KWڽbnG[[6;AB8zsF*9H@ \SJPT\J>HU!dUg5&mS:>It&5 Ow!R9!bޖl72QWiR׾x'2<}nGݡ_Wv` XIDg,H}dM_{]4 Oi?>кqKVsfgH4&0ڪ.-=gdR$Z9g.)dڥ4ܔƧTM'˧=^dg2J[>N<# :Vݞi9@LQ8јJmc&B xJ۾["N3@Xv&R [Ʀ^mzЉ ?sѸxs;Hs(f!%X|M+%[I˽C^@YTC4,8-4QUZ5T5FtxR"nVZi9+)0'p0" )PR9<' U$N9d +eDGiu8ܿ8a ALE9'&p|^/h'0Yt}zqyy3ms:ccO`SN|o[*^RRWf7$+~ń5wFVz4pixJ\cnLuIipn0#7dRjHM>L 71b:JׂɁ`}LU3'^K<>dwڳbk̳ ARfyb'v9CTma(9m]يX5bMN sl:&^X{|$8n=} `A᪢ޟ镄xtUt[Iҵ 3WwxzRU珌g&7 &ZY$p/Y!nMIkhJ4)'Pekik%JCWtR3TmR:x20&S<_i[U3xXKi2-Ô0Ei89Tjīp(}YZ~g++=̦hMliqjIL#)u2YȽ0Dr|l(rP68} e1A+%vJmf}§_i ahJZ@ez`J_31gU&)K39v>SnґANYW5z)3D4ni~S;Aƶ̄#=wU@nL*-&P"+Q 4nJL2YJi/^e1zߏ>A6rsjVjJ7@h |. BR<=S1<7>_p vo.44|֒_g'5jL)$@05 OsD'A2٣íYEi]t]@"χ4q'p _/%)y:>I) PW֎A_r ᬊÖ&o%Misݨ7fUJRTmt]'e>z;?}ޣ[ 8ٔgՅd(vtMJ )EJ)'=Cax/mp BՓR8ߦڵHd扥bV)':dz÷ .6=c4齰]0Yu+km83/h<g-uݽx-^Ugg $Rjhy.y_zVvb+YDu#mhU80i/nA&9Z^JbL4"F)q>E,@\8~WAi"p-@+Ÿ6Lg;x#"&wď@N?{~kSj wF6SBKsp[-sg;I?FsyV:a O٬7A-T,upk7j1$ lيYMPK6d#chMO˱4&Cy)s$hh/P*j~mR, Gz榗'-k!!HXbd9$V AN2 M#i!($+hSTmʔ|`YGJ?WrIYKIbk顷͏E䏴Pqh{.mcz jCKJ.q&F8wY?qsUw 5{NJbUk:~{]E%~jvUڕ~F)n8&8L 4X*:{{͘qH#:ngz?^` Su :8 1v(l-3LbKaJ=ә5I+i Y=GSW2vہ^/P /J)4@ӠLV͢wut7X* jq$U%h{ԘR_"uMS[)6 =xnmн|bR=b]E};lRz8+aT[ב8 7^1U{}x]NF8ÉH-tL`RSjC)4,=w)erSҋE9fz:=uMy6Judp|/gWh(|ЬvqޭwLWnU6OC6 % iM+xuQ¬QjX]C -{*qh)m>}D-Ouy ]0^$uҋQq*ns 6Llڡ PAVE(sGmcs>HԱaiZ,%Y[OQ;==<}4p]87&*­+MiX 'P# å4UEu#u{]dJAq4\S<׈ĢSoʀ5iXUU'c5~XIH#vߦ5}2TmÿӘr^4]@iCIk`7N.nCxlzb$-w2c~ qj&T-bĞH:&: v0q0N&ʹR]ī֕ Hwn+062C?)MSt [@ S871#q"׸⥁.@OY OV R#JkdRXڃhF7lDSbT@sn7_vq)>(|Gg2k&"aym$,C{ `K6ưJKPo, i-CB0&7I&#HY5,i"PiziC϶ԑ-Z?Ty =s < mtfe8(q.pUdZBK?'l]41 oEL>5օIpŔ쟵YQ ;3=հ*s-M3+)֢J'۶NpI9ٝ92ap`|ʘ@A4UdG1) `5%̄AU+}<)eyIyһY\)G?w0QH|4G 0Tmc.I6;d4Jh*^1@E]o+4Ew8Ҕ]^nJgg7Zc|4F)W$Sm6u`ogMS{ׄ)%g3JV! 8610J&nÔ1Ypn F2%moeZU$@XNDNVꏷ(ʽ >sb(J`TN@?_$kSvk[C@ P}gcyӗ&6 %(U[Kźz[i4Rbp cj[{4Z2b&}kl=#%[ VZ &NkmAwi 0kpFɮXi>J5D j9"oP2 4bn12ܩ(`fROEl(p0R$aE%V-S;TWsEL/Qpx@ V+CNun6%#-"v ЊLJ܊x< +uLT'"> "KlϔwU*O@թ4b7%hPjT.8úȔMO#v#i:Fli0R8rzC5^z':2{3i qm{uiŝz] fUl\Z]jb"Xll#=ۙ'οUV=X)d-ְ40#>OXKRn[jPg h @Y6=aYuU>LjJξ4aQ{--h|o(w.k|"P:w(%7T$! 8pb gɤ)JU c&hObsn7s+䳉 =R`YI9vIo8A6O,ne]94O$c>!p^-;%;l]!CPJ'/N]=0]4v=dZ^8~%gTWgalj",p$"҉H^'Ơs@J;dmU?`!r~cL,ph> &N;+!M\ mPޥYOɺ~7׀-9UiZ8^  lV| 84@x%;~"تiY9jyJ]R%?[bXK1`~;rLFdbKa+jLLsRvcD/?D-'D ̾ժZA-zowFc# jg>4lzi ⳇuLSj$NqHj-6!-i{%ҙN2$U+xoYWyn@ &Uyւ {i&2&,6"r>G=#k@EJhzO^ޜUOw 6`*R$w*du1i[A?8ԛ;BbD'yi/!F˭odRU2ߞݛ(%m8| j[:ݽЪ4aUynojw4K"A<7z\gwA^5AU0yљ֞=d5_j(O|dܪb-H<>R^ na|%ڥ40՘}UKJ 81@kl=V2 H>Ӈ ;}^zOiǥjlvcbV{H{5h2LhzK\!SEwCw0c+=U}HZӈ|Ej;Cg~'H׮^`SWnu_{dzuay( ptszsV0Jd"2 ߍ 16Dt|F71ZQvy) T ?>@ (NRzg M9кľ@)5+ʶ4V2 D IDATJC2u6.11٭\''3Q4IQ*6f|`e)AP5j#-`\|T'xQ}mi:|7Ͱ.Ĝ:y$t%i " dP]b-xi˨ΰ'ĺ֛.Íz@1ynƙ,қoOL>1cJ#{JkyRgbfVk|{l=T ~ܥ3OF>r$61܈mHRS'Wt&m>}!GR@dLVϜz+R\ 8mr+NIOR88-bjTگ˼JMy+qMl|7@LpM91xB1~f;ۢwc28h)h*+ڝUg+lKQ)6vpo2F?i7Rk3N5x=&R`&fJf%itՈElڥΆ#&4}fg^/Rl;DcmGaO%:C҉V"7F8FWD2t̙ry|gf=-x/f2MvhJ*9}N9~tR7C "9bҷ%dK3:i{|rtrAx!C7Pu[bDk"Jl5 &[[nYoQyk$RJ+&S S>FϏZ<'4,YJ]P1/r_5]"y'P]m{gBӓ.dP&"{Rx#kHGްTj{uỚi"{pK6 'QϟuY N #(5&&kN s [Qz0hnM)h7eX7.@)p@lׅJnJddZOZƈ.O-a]@YzIy+7+pig%U-2Ҭ7JK'L' P&?r;(eu Ùҩ~-4Z&iOs>*x)ŋ \gi0gµKf?%[HӵA[$Ԇ9g+MNFjmQFRN_LOLɧ6WꬱAu ǓHz̦C B(a4w0gʾ7ZOAWҭH9jF~غYZz#뚩al{d[aH#\vԫ*⋷0MkLD9&8YVYlDΪRetW*@FonJWCKuu-Iix@ՙ3nUK:>!}5gbNTMI' &( )XKMI U#%!*Mk8dovUu_MoV0#[ޠx-o'˜*M9SYH³ȜUM`R& I'unAHLH@)nFVp]kt5b(62LIϼ"1;ngezO$a&s<Gp7(,JZFi$gYǾ)RY;٘v/*eLVxx Yӕ2lyPw}j'Q 8g[wqrd  _Iא3*Јifʺ/>R}=T\P, 69#di16\(J5ea4;h,@8nJi?-m֦ϭO* + t| =xpn)fK_ H-ԻAUp;rNig@ٸҔk "Id2Mkc:Nv4O3FJ_Vt2o~qz;Z-vweBLT#cJ~tN,JdƀCm_~q28;NLJR$J48|- ZI&.JO;KS:ezRJ)MUX׷RuvkWw c;RLn4Ğ*M>sЛR̳^ U/51}^4q>0~[KJJJLlDUt% ֩]#UJC_-U1-֗L.x4Mdد"%ޯ Ƥ[& :-ϧx O8p/ @Slڝj>{vPIHuj;d]!,uiq2mh4497i]ϐ3e _ C!unk$^'HBǵ̩#tRfHqPOP*67nV<¦Tr_WkSiJ3ўq:ϐF#'_/JLz8-괭'>qn:y,uR>/ݗ8d{k'G*q%|*id9M#U!\FTuH'Dڔ(UTuR si|rǔ D`jzG՜NHL8}WKzU`?B~q6b5[?r@nD7mI?ɹ4/Fg NjRz',vÖ[mᬝ2^t05@aZ`|#k?OF 8du2&2)JM LԇIwװ2)Ёc`sj?b;18]|8eDчL쾕٧mwoz╚؇m/%lJn14Rnm֮68<^ҬhZ;PM';+HU|?ҞC,R&\ O@a(X c҃\ĀZ8<4|-'u4 qT1dMcPb Lՠ|Z`%0 %nJn=M%iU+IJ\'sg|o..%)7S!R-0;\|T#$}mCהRb&mUR#Ya8Hb+uGxB=ev<վf-u5*r_m$(k/'szN vxNHWH=:J#'Xz ?dZlLklj>9J~qRrv-1.bĔLQ;ru(쪣pJ *ir2@iln 7y!牗o9mL1uFx=σG3Fk-NB_ֺb"i SQz2 F 1;[4%k-zF$\gjSpnZ=Yd {z[,F|͓Vgcr{7|$n׈,jP ]y7b2|U~qZӝd ,e-L)柒,ql3۔ 1=[Ka$R=TFbYWX,lj&"%7T-̽_}62үl*"1 lc#~q27:Ƒ,B`f V2bYdK,cՔ=@glֺoiUɖFeJά: yi,v<՝US20"P# F/Nd^lۯɫ>S C|J]hrOȓGnX }qJPjnJVcHYYnu)sZ@nFDw!x5>΍T҇iyLIs(菉$ _d˭R69e@M ɿ$`"{m92MϨlJw RZK֊H׎ΦWB 3 ;RI4%疭,ڨ HJx^~|zL9='hϿH0QA"E-] W>R=2A[$@FL6r7~8[ymO{۔ggXwLPS7Vu'a`",-VŴN7a?N''%7kܔҎ8;~qJiJ+sTd*iaB6%+eHJ6Cd3f_}$L{j_٩̧u1P1P4E]#!rGJK71xZTa2Y]u% In<rW۲_S76 И-w+L΍#]ôSW)MYFxSv.a//vW=Mu. ZyG-2(L)gґH>A]-a3|7`r[ gWNah)u<X7;x9ΓuYTi*̪oL%.|cdFғ.'(br2ɀ>\'Y w0@#-f|Uj$x)/u SiQ~q0uۻ*cD 3 gk|%ˀ8 0J v9VZ@ЕV+,@l.rʘ YI,eDR5K4FͿ&YOJ9W+0~-̔2񔰏C'मRn6yZ9tyJV{`t7\mDrg)f"MSpJoCl:n;@IU#rdق-W ;{aAoF: ,'>]Faݬ0&K Cޕuc~7 bDĽb4@01LY]ٹ6H4L]{<&sz`߶8ȢcbcIFrV2!FH}g%x/y~qfK^i fW\羷ܫzv|cjoKxu@[]iS`&CS+oDx&J=2bfۊbK!JVx{*cS~le|^[ 94 i1tO=#{CȔ; U6_y>)m;`2Y{/w^1(fe v[#n'YaFr S+1< 8)33ݢ7#2qwVw>xHo׶4B)d/YIGC(_^2 0]-`fd%+1;_6rC:8e\1HF FFmJ5˧2iSv/$.07) :l@v9`- 8o6JOLO}Mmli#9+h~#j8 LI8w!"1.OKkmaZ"%=@[ c‰nKϘs$H)?kfU4]Gf`iM4b8 G /MdZÕ.ٟ [W(鯛F-J;<0%N&!O`"BF<ύMl]u0`]_9YtE%Ri1uͶ34Uwa(Es{U&fn<=lD6 ?o*޸ /NSJY+F92x=IDATb?=*ےV#idmI#r7&]L8;*e]| 24[1oy1rL31l\db a& 6Kj`#M]eXvCSjM @2@W>3oCܧ d t7G`uS٦,`[$32L/_6|]xdcv+ [2W=uv7I]Щ6&M7,͍14,ZC*S&i-6%~Vd_11y6[zjd@RH30aӛx]eX oinI ڵݸu]b0%,OvufS&%닑^֊D|J@xѮ44#0ؖF"ӴHПޞqhvfpȭLЅv`Va"߿8'0Vvi#?Ef,X3SfRJka%S63֭zz 0Y>dpkdF;iW`وh$͉ۘa7 @S9.nкfŮlg4dL 4غfu]iVZ42ƴ0v-_Uf>VZ7#+hhC#+ʶdWj )oR؂Ϥ gSfTj`m1Yt{=^l@/G =1Z]&֗3v3 +#0QE4s֪7/ /,n0:`&]@y f *ZIYZ_d རǙcbb06&Ōl=h1#]K]}7*]/Nr+d{ÑrLn )ڳ<[H?Jy$%Yn- Ym#Ҭ 0i3un2 h=r ldS *a d+2Xħ\4(o퓘Þ"V%h]{p#d"98 uo'a=;E7">7ۣ阹5.e@L*cFWms+c^A8l7xZc0t΁PmffL&fA겪u6c܆|%M2NIENDB`vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/groupframe.png000066400000000000000000000042111461511344300300030ustar00rootroot00000000000000PNG  IHDRnn[&iCCPICC ProfilexTkA6n"Zkx"IYhE6bk Ed3In6&*Ezd/JZE(ޫ(b-nL~7}ov r4 Ril|Bj A4%UN$As{z[V{wwҶ@G*q Y<ߡ)t9Nyx+=Y"|@5-MS%@H8qR>׋infObN~N>! ?F?aĆ=5`5_M'Tq. VJp8dasZHOLn}&wVQygE0  HPEaP@<14r?#{2u$jtbDA{6=Q<("qCA*Oy\V;噹sM^|vWGyz?W15s-_̗)UKuZ17ߟl;=..s7VgjHUO^gc)1&v!.K `m)m$``/]?[xF QT*d4o(/lșmSqens}nk~8X<R5 vz)Ӗ9R,bRPCRR%eKUbvؙn9BħJeRR~NցoEx pHYs  AIDATx횿K$gƝuw"V' & )#AL?`Bllv)ck+R4 Wɭ;3~7;ݬ!ewy{8?<'4,˱' paj4Zi&6/*9MQqZUO?ڳw4˾{o.//>;; ZjPz'0hr61rx/7OOONd})uXEeJ%^YYɖٹkw`<1hN֗G/B0 vWVM<l6_?oƈ0&.ʷ,Eﲢ㴷Yccݮ_jY=ܟIdgR{u_9_43f kKonS ʙ7U\?ҋb|=4%+'h`4ʙg~te/6Q9׽}s$ƞv\Z7vD $ISSSO,KpbGHU]s$g ?psss7VX=G=_yf}A[(q#I=`DZ`U4Bii#V G AZ8LH ,*p8"XhU0 "-pDЪaDZ`U4Bii#V G AZ8LH ,*p8"XhU0 "-pDЪaDZ`U4Bii#V G AZ8LH ,*p8"XhU0 "-pDЪaDZ`U4Bii#V G AZ8LH ,*p8"XhU0 "-pDЪaDZ`U4Bii#V G AZ8LH  (rK$x'J+\ZeOn8?MSɍ8;;[ǣ$gL& MOOWVWW_\]]6u]QT.>< #include "pluginterfaces/base/fplatform.h" #include "../source/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Version ///////////////////////////////////////////////////////////////////////////// VS_VERSION_INFO VERSIONINFO FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040004e4" BEGIN VALUE "FileVersion", FULL_VERSION_STR VALUE "ProductVersion", FULL_VERSION_STR VALUE "OriginalFilename", stringOriginalFilename VALUE "FileDescription", stringFileDescription VALUE "InternalName", stringFileDescription VALUE "ProductName", stringFileDescription VALUE "CompanyName", stringCompanyName VALUE "LegalCopyright", stringLegalCopyright VALUE "LegalTrademarks", stringLegalTrademarks //VALUE "PrivateBuild", " \0" //VALUE "SpecialBuild", " \0" //VALUE "Comments", " \0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x400, 1252 END END vst3sdk-3.7.10.14+~4.13.3/samples/vst/note_expression_synth/resource/knob big.png000066400000000000000000030376531461511344300273320ustar00rootroot00000000000000PNG  IHDRT@G iCCPICC ProfileX XgTM.9s9J$ 9(A QPDTAĀ"P@${ogyguiojƇ{ P0@Tp}[[+I=*?w0E"޾Q>`h@X\t8L"x7_G{CPh4Tj?$d/$u|f!2R+/LzkL*_\7FPT/o!1z)W/l 0ArE>`ԐE#spxBd@4>%?)>0)>9yd9w;ɿۂPE&y6Тxw< `1  zX}Pd@2 A%8 @#h@'=`̂y,uA"C; C@ƐdB^?@(**PtShz-A/L07,j>l ;?'Yp\-p?ógx P$ %RCPPTT.UAGMfQ_Ph,͇Fk>t*:]nDwwe.Hb40?&)4`1Cy:ebUfXWl6 ƶaOs5ǎiᨸh\6ׂ~Ix^gK^8~E'4IB=0O"2EDGb1XNL""~'H$u)N*']! ޑ6i(4444144ihidٍM. 7ߐ2КҦVvЎ~# K+N =^ސJJ_EM~AaC(C>C3E "B1R(u9F !z!y&,(9SSS+(23Yى96, EŜ%$5I_ܬ~9YY78r؞bc7ff/dd́ĩÙy%%eϕU5µm]}  OO O//#o o O|||!|||\f1GD d $ ,\J$R & \&|_xCDTYHȢ(h%Wbd1]ZgXq5`j1 XBY"@J$,"(Y-T #.&U+BFZ_:V;+LNoBnewBf)=  > U Ɋ&i]+JJ~J5JSʌǔwTTU"U., zQ}Ƥf6Q7POSqMMi`fE-Q-?z9mmyY>/s:TZzzz z A- " 6 5 S PFFFƕoLLM.,*&a, ^s7/[ZX ZX:XVZ걆-_ۄt{m+ja{kgkWe^>CúIǙbc89;59m899ϺȺp{GǃCz^x9{5{mSQkkg} }|>.i->Tth_ۿ)@74Ka`eJY٠}BCB^a<? Ј8iEyDuE3!D`$F,h̻Xت؟qNqG$rM/$|3ߥ觜ORSӲM3322q>ғŝ5wl4=>x|4G1"g77a\^ivO'O*=rTةB"Ģbܒ=O?(U*=[F,)-*8U]Pʠ י3վ5z5r;\๩;jEjKuu_Pѐװs1l}`jSS3WKKK--cF]/oci˻\t5kծ_!|L;c{nԑб9ۢ{G͋oUf}؛ջw'Z_xߗ~ρ.w Y 3w;÷h<~ʣʏGUF;>Syw\wh3g<:r)ߩ镗/f_a^徦]M[m*y~fgYKxo-,}:is/_&?z,,ϯDg~ҏ5۵7[?6nmka+n]#ӳkj/to/IP>tՋ]`?@%B`a[ZQ@0 s(?*:#VF"- Ah%#S^30{\cC{qqry? $. a#&M+#{]nKAS1J;Mu M -5m#]7XlRF/7,V\6m5 lwrvvqquuss;v˞jm'qן1-]Ȯt:DDB$5J?=[LlYxImSRUhu3(3vccǵrXrv:'ZOVS["yZTL\BRJJFYs/x4]Lln*ltݶ+__1!U­^;}NEfCU7HxhԓOUy&?g3^ yk0>n}\㇪S.$,.y}{^ZYU.C|cfɯ;.{{'A"h!Q0s™**}ÏFdpjb ɗƅ@BMÐGidc"Veŝ3G(&Ɗ5?!E/-&$.. ȣD )PGհzFfVvN=}UC#!czSٲŔU}ŶYvQT[GNlWnu:i%Ee~[wPul C! a.U)Kw"|c01b%'ۤp|JI;aiXQlcDžsxs(;'WNnJNV Tί.]zA܄}޾'V @0(!,d Bs6|EFEELG='yg4] tE'(:YްnS89MR9Z{xjB~~։S6EWJNٔ?4WmWpmo0_}w=`۝w6CW<i{:B{̏7nsyB'o\kʿ;v=BDR$_C2#" i솈7FВhwtP1嘧X{;,p'qSx!|~E#LՉHDRiƅ1ِ|VN^NS(LLL̺,1Lln0{ +'WE|2|'=DDrģ$$dTeT5 (d6=QT:}YgUO]?`H8dLӼbֺm;{_Ǘ]λ~:~cS+z{W/P!)BFUXȮhؗr I~hffd&8*]p[Mns ֊kOJ#˦*t*L>PTӀX|źu-*J;z~ǹh uA#Ouc&`JF"VXHiXh*ɼZ9[tVtoAB0V012ױ8XU99Ӹ̹Y]=0%A!4{DEŞ s7Re)rRȎ.VUʧ^1ŬӬoklD05yafa~j&U9h9w*pu];p#SkջWү_"!H$)T6;4b**4[6)>ZΔQqD 5[<(R)laU1OR\Y\B[DK͏sM~ .M험Z['ԯ\\1a-|KvھOw)?0cO't|`Ze:o ޾~'>unl^c%O~buu5?73~Q~"lElMolWl/y+ۺw)*1@ҏo+`poovoo 2w_oa,=gFC%ҿ],N۴, pHYs  iTXtXML:com.adobe.xmp 1 5 72 1 72 84 1 6720 2013-08-05T17:08:87 Pixelmator 2.2 4'@IDATxK.qYq즩&%3 ðH@Uk3ldfsㅼ< xFВB "l<&dS=]5dwι}u6I<Ȉ{Ӝo;v=p՗;wUU[F%?w5#I믿 XӐYQkuAI ]k|Ţm5ѮV|oo{W۱ ~ǟ'@ 0ַ[~ rtTΓӽI6QQ۾}O8]s~v "E(sR;zb|vn<(υ\9>d4퓶-S0[C\@uvl[he㈽ظ>hA*]& @69 IG'@ aHg[a%]r]u nht-kEC3=+Ve:\ y~|4m4`^W}{kV+܏g&&q5Mv5(M]i2Ь~`&!x @|A*zljyil}Q&l_+wnL&P8@qY˗"Z[Uswy BOUm.Dh#w4?i,0U>2xeDr׀5hz=y4m~{*'P? d:͞$erTYaXuG#tD0C:Lt @4~D1غfʧ4u@1P舡e߆l?KA͓b()$3 0chAC>j vv;7)?u$o:mSIA~Oge U@ǥ5Ld6gTIYԹtcWO:RYeU> *6Lv$v}N+ j?X \dwf<6Պ]{rvq !jF Yf?IЋЋ@฀rU FH:ygzEo>~` '/_꫆a$xRw@[5+C:1]P~GX[e@;WyźEƫk]5U@].r( /Pm7Zp}Pa=JhBaL=S_S%,|ao^V|$%q F3 ,sCj ՌUG-m_V0M.Vnã$*U\j{Ei\Pf BGaD}Haf Z~fYRautqǤ[a25F j" ylZKI~I2K/_>0׿w^ k3I)1Ux1OBEBG3xcC/&n.\֓iI^6Ra{]]Xv5eNE^aHXe!l3y5偽!S$^ "k$A|⸃V+Cq/UjrxjzK;W|kjo™&wvf gPIƮsF$,l YjU0ۇ˃ӓ^X/2ͩ48!DD=5JKMꙶcTt(^^y 'OTnEGhtz*l!8 HQ^ Jk_k'//FR dݳ>[=1TCϣUY&!QtBi,3x~;ŠG%5y0$_[uӦEYm5uNQF9!rz ?a10@R#ck5M}^QPWypTM2ěR>I9Xݮ//l HR]wzŷovX KzOB7x lР+7FT /,<3;y˲N<\|9}:σ!dA[A, jQˡC Zs!Xkrr 7u%u`lYx!}-d^hNl\,!a*mծh-wa$;-l!ᡟ{Zw&,&L0S4Ge-B=!LEZY'uʫ9kC`fŀ3Lgh `ihi/S芾uNmON%{0HA^`ہ}AAU4-h&(JP)%7~1=V x7=s :/`& @N2BT/X"XoG8'uS!f,~y"~zjw,-^|e } Tus iւu)F@!ŘbwwWNwӧ>rkV_.%JT=sh\H_@ ;h*BޡAPj8(&In LP1r6,8}qMexwRyJѹS:\|-MUmAKą{xvB) 0kJ 3?'IFzy>=kv3'I`g(.f1d bCzto޼.V%(y9&ÓCzFѠ/?ZC:hQ0/(/tiHD͂oUν{DFCG!ى.k 7ej @RRSa : cr] t7Ek4Ss()k.ii$ ;@},mzq9`a zDQg ֆ岀oҟgYS &=)^<(O`4n·|ָel~i[w,"e^y}\VݯbQ,Äe>&ngGkU&_m8Rg_wŵ ]am1 holߜq5ļOj fpZz#y, #TvWrZ-|p*llK4QtWv^>=M;(ǏXp lM9!;7[ifw0BQA{73l&{A%o`cd@C] d@ЌR*-jk vKGo;CA1-o É։,ldJASfWDXhohq0YMﺗWW`XuGr{.A!HssVޡR`44rrx=u+(CKj*e$~+f$M;vzؿ0+}/߽VMt8y0E)Vel"bxh9Kwy,<!A%hcPu/T!fǺrA )Ł{ʢqqвNI 26CRV{p`5 FZlDaD5&Phva2XuPxP==RϝMz~Q. "H7LQUh[d2 5`:}vb;qS&phIfy:W|"M\J:~vYWi߈25 B(SKgO O_vw ?o@$4A[YLɦYt6d8&'(QvnWSdg,VT4T/qeg@r.sM*܃`(=?G㪣-tmy+9oXгkZ8b(BPo|1+Nڹ@{ VmQ1׀͙qSN9 5Q,9`ųs4iVDtgF hX*\|NtJi$F 8UOՃ2Wf9` Z{s]eTXqy;- pj`>ZGòV7)$ŦHZ"KIS_83Nv,R+bp̎B*&VI}1]sȬx@}0ε5_ͶJg3 񢏤OxJ`zsy*ڔel*h2hwM9ch#:YUlͥ?|$huڎ K)q5ӄU"< JԖileW7!rŀ,0 `C3j; 0B@aGx&q(#EA7djKj ";XZkS'KkÌO7ң05GizsDuﶽt'.?if(i_iL?QήfA0vuD@Jۦ& arqQ ߫P Sc$KN_.נ(Y5uadu:C"|łY,*d~uXjbapVEIV 5 toʆbeޤ ! fʚ$d: 7uggEԿ0ML -d X` B"$2,5@e$"I&%1*[+T (v4I|9YDy/3?k:F6 1]_`N +u+z{[/Ukg ̡0(5K)TZmet]Fl9z/ o_Bz`bXc esOWm(ɝ0AR0 ?cvJM:д= ?YG>*Q:7dQH-NѴZAˮEI "DֻËȣɆvaU/pZ"rf!k M* *`N$ ` _ Ew* fBEH4$F-i֍>QS%G <ޮR:XemJƅI$J~eهT RT2%7yZ$=r>a5<(͐ >j lFsN)^e* ~V#B|1;2AD EISM9QpvibKP _%-D*т)wlWrHŢö *7xP:ꩯGӜ*HbD^%yW[l`}0J5WQ'Yhb{Ya \U`r0ts֭v~,'^fFEZTݟ0ww#MY1 HlfW T$wsp ӰU/ᐃ;1qp_LNB17s/dy]kѓa;@.z6I5u?ﹳsiB;ww c#721xٺ@ob+wwxtcܟ<8EDqMQ0%8fȤMY%Z!".0vB z0I͗ٳɂM^'1fE񰣡ϧs=_3F b qfV[1xf9g]sUG#iQzw }ۿ-tG~P0mxxl ]n͆x %. Mt >D(\3cVDR]t`mNLfG=L4"ּGܮWiQxdkkk-4UD #`ILM=ZI~׮=:gzOɿ˿^22 X 'a@1{$+[`5+pBn>`jcY(.M>P(,5 X4*20Nnyz >fdYQpB=ͶXRG~-$ % @ٗ4 a 0y++_cQ\-/@ f[1q4 t IWs!B2zYѬCm l^JCȈS]c^K@P eܑ0C;#<; z L>1n8 `&QV&sP=R23Ȑ,w:żw& P_z9PyfTMW6{ѡ]4MQZzX-8FM\fr>êX֭Um]!_ ub,Lä/DI(BԲè(ȩ*Cx1jIhy[|Q`U6a:XQ~Y71E-8ū>@0] +H @|$̷6 #8+X NdZ ΁+<=qEk*`)BL`0x+ J%F94ƒCЦv]fָ$ld;-;h) P$$P%LՄ%Sz_ +##C|6M$}$J__#ҝ F*~P?y/䃄UT6qMlV,Y*htb,2@d竔kJ \ OX>[3Tr1qVd^N42]x:1$y_ ;?P%,Sw~l]ގ-?s\FO1Ycpm}>hr~:$W,x\pZX2F[ !g:lXM@F4w2CdH,sT+Hhy'h c 3FSJ{xFcO<xE. DZ/_20( M@ lxլE5#fk [#_41T$ vh@4b20 dN|&[WNH|l@}a0B؍/myA=&[)[;õM ;"0 D3Jq2 '$ebkl q ת@XD)I,V%D[U1M΄;<" , a!uFƌlB<]'`D a$RTflKow|Ioc>+ L}#5ċa1Yiн4]X&6 : c 1PK7Ґ.q`һY`r&,@Bv"ٻ\ݽCsî޳R>$2|grf[W )){R32?)!Q 2dpT P{Ȉ*YD*ʍ!őF7n][%&32krθ&;ǁYjo{vl2aGX.qZ%g& c_{Gky?ȏJ+߭. >2?C̣"]{|͛W!\)""< VαCQpBA&E{9Qu?mWiw۰ӿ[7gHc/~\0QM{Eb- !2PsgcZjVyԠEiZftT~n)U'qфI>e VWN%X0}9Ń>Ih| 1> WӘtc\F>Ip{#b؞4&; !/hx>tewIg^WWM`wA䲬 nj! Ł!0]en uly X;H}o5=ӤYx^CLS5[xW;lNZ!%0V9i8uneEn`p% Zkس :K Jԗt)>]A%0X-٘A1c1C؁у{0syLZ(\j&fB%}c i<*ȵlRQi`KޙdGl{_tuHA41lȀaFlCKd `>B df[s2buZ{[ iWLҢ4}MmBy"H$&؝kwx$h1yg_9dتQ*Li17 : 3}` `l LGdW E O`a,bUc?xV'u^Ǖ/HL:}Zhm6SbMˢf36{Y%ú YHLf)=Z x]q4sA'ʁpd8V;Wn{Ĥ v^b[UVwW%r#xLGIh38ybgqd^eY=65U޺RI`=y<Þ2r>nrC^Dx'/b6o|\]$pAclQO/c`5]ϴ_Ͼe}:t@FTg85fW~_}1P P$>vL m0'b"3ye݄W OHNp 13/`N繯1ǹK:NWN a8!*O>Q1Jʩ4SN~HL;/FmNf(bm@XI9d/ ~А_ Q<ئ A}z,^3aw  tUtb:b6Na%N Bs?t g4?ΟVQ'@o] = 3/g75ޒ$ ,(i$5 ~ZbL>uzbWJ ՞/K&7#Tn0t 0 gWpSަ7Mh'0WdUl'X.B:ݼݯ]ě%f\, N(!Zb1'0Џl0mr '1UduSwpP2X`ICҭ<}qAYm^{I͡Au8x|R1.LJijtTf10u1"K0)0DKĦ|om"# @#F1a"1YPo~;F4.48+]6W9ooWIW0"Vg,p~fc'0Y=$]U+|A ARL: !b嬥Q^Ƥ"~bpʅ5v6Ǘ?P(X4kqL3ǁros6GF `9aK Gj+05-PL:<أdZ./o ^bVeU@֍ġg>Ҷð?PYі kgm&qq8Zl:\gS\IMbi{m!tۏ=_EyWg1.~14 mZB6yxL4eAwOZpR9@. GxՑp $CtejOz.`ɿK 1xP6\VFJXZ[?tk?_o`)'̒-~=4A~۸D+]!Xֳ8y"r{*\6QB1 *8AS~bm-B.evhk6Y]RrCEb5аfsۊ!yƤ;I8ff3qv2[!mUΆ%(5gA/En5Pi~u!}x޴&gꋏp^Tzvi@fZr ),W'PAvjf#o!%V2b*>v)tYZBF 6mf[څעNk ds#摢HqDQkxV4"-6.9\T_,_럞YWrL[wS:SiM[lL:xB7%Ej8_U7qhqs*@Hk31`jl-`o^g//,4Tcpv>"ՄZcembGM C [ub" =19@xQC0LmFCQ4\)P):?KΏCM CW@YMeY<1p }dNt_|8c 1ĹJP/GREL rԥzXᅼ*H{L:h ^FU^tIdh.$zOb]^ Z$ V@q0|(3PdɆҥ\8)lB` mgw&B8WN\9# 1B0lJg+ .A DV⩔U} 5~xkB0s|wĤd׉ Z೒ES䑞I1$3ܫ*}YmguPPPAhXQ#sh=،(w-Xc^jDJ{9pyx"@IDAT}3PFȑw9;KZ$W> tfUJ3U35G<3f>w<+$^Џ)&| Khx. Kʸ4ƊCrZ# 脏t'L>q) !>%lNOB|3p;ߊ GéɄZFa8(5 HOn0Czܘt@u75kF'Q4^,Se";ӉdMtkG4Gf|#PKcR A9* Ũ_~繮yVt*p枆%_1&aݽ{y* +GP,49 Ѯu[%/f^^A%8t@>LPL@R_xe:N]w1W$e2s`z^#q2NWʋ1|3+bұɲ6t?c# Z0MHa Åm,cS) EabC4 U FF)pN 4*vhvC(x uDУc$R,w{?( wXǤCˬ>= `9"Awx9B F d022 hGz/!2 'Ë L!];ГR#H2j!%QLS%+xȉ֠,x1`Srp ؽGׯ_=^lEM~Қ%ЋmgF 4^𳄑4x% C;A²ݴ.}#J7-تE>Eq" j4 rtHJ7lN[~m4'JwԘ?6> Myb1fô(%PEѮZqKm9tٙhQ bǢ`,bȍ7冯GƴNK&ޯo Kjo,.b)&#:WOCϤ1jkɃ?},}_3 JCGb-`?d`َ8Q$fE?!4$bf{B 1ba񬉋HEyR :c# vBȳ0GsOfIO&sdl["ID~M𼘬ej_)|%K@H]qG$H~!+..bmhNqIeijy GD>n_c҉:+񢸗/kt:K/`aźu灇5V޴MgiWǀBK K ~=4ͤ;Q4;̔u6v^-#P8Aչ$R:g9ApՎA,aĤeFBM<%ܦ1A  Yģ ? ID iSHv5/k}q}<y]C-/C-eBzϐs+:C46T&2*KF8b*ኝ)&]"_ S.y3'zӕwyoOW=2>ڤcMjx.!aFÇ(W҈V p2͌;,? ŶSd=M9ɶEքRLLŤfJB"0C'`bC$w ^N аGrgS7U>6:cmⱒUK}8A:b^V2qI퀝X7%XS +jbLDa̎는G^Ij&-"|t>w,<_m!:eb) }"đ5'UH_[K꥘t$-0pU@~JVr\ SnӉ S4tyk 0sz5;BnηHa\5%Z2CIƤI?D:_?Sbyδ#VFDx[|(0  PNx ϙ>`ps4wOg.' Y܆P]dXOL:PL:6mb w'ny_!lozxxfҥ-$/6~Qqš[<{f3K_X!wT1nZY ^hbZN0њ:6ldV]Q>!H8&g`bNc=Bwwv$YRZL"P𕔀 G4Q1&]ϡ(nۜF2bKP'4wGIGä4RbBX{_߉6w$+8jEw f@zEKTl%A)d{1Tx%M$YŔHK yj$b}_m>,qhɯ_|@; V`gݽ{b`;RuZ{ik !S y^]q #IgfT(i 8BM^̙ytS A-Ibbd]$fbtnadø_bib\(ȝ:RViO?C^ MP\՜ZiYرvSx]$\$ O/zxF#ynGCE:K&&\?fDP98:hgn7sN PZfou4E' Hݻw_O ?8GwnH*rHTh`*Лjc`BCdf;{L }b+"2leeH8|YM(Pm!ڸ 䴄}\b=g~1q\Β'`"AÔ}PQ _fE  a!pD7Z{+w-(K$6k+U/0 ES% 34sVIzB# !bL>t QW7ghQ3RdۄeopysW>K"跗/?o$,ȋ  mĶ+0qܟF-feiqȀE*TDV1x9<_J;KoH Ǘ^atk״ ⑀,(̯1銢^TKldG-3e#/M_::tH :9ui<`a [1wI 1"rv%NQt ?I7Ĥø0R|IgR k8 l&/V*~=II'Z, JN1&"";˂~Is>Ƥ\q@Ƥ{L: v4&L$Ƞ8putQWz)\3iwݗ4&ӘtCBƤ0{鵧1ViLۻ?4&ݻc~_1΃-c>Ƥ{xv!cƤ!iLǃ #Ƥ;<4&cǞƤ{Bl؟1]Xa~kxƤ{A7~޻ -|! )ޜrY-/i8]ćhbi"Vlͷ&- j[ q*ȟlQtұ FPy>w&VD PtT_˲m=9(gO(n/bSIV$sї^4La=T 6zDCz8&]d})$00ev2*8s2KjˣlyG,&;\)&ާ1`+g@FX9C0aQ]|zbOcҹa!('@cL&( - TʻPÖOb1!زы̆ %xvh zkv $6BsX?&YRZw]QOiW*42BXfR"a|蛎O4t*s\^Ȅ)jUak8mg뺚ǣ2S>҇X.&̤#JKN,F$l?{p{QbڮN%3K3 v#> #ެ*NG\bFA6›Ǥ+OmЕ(Vs%P*|4@67;&#^@R~B6! jb `4$~"E9Ĥ;]. TGG=5gw.?./S$X_RE I`4A tw5i";v`8N;6} |'s=x ec1\cYD&@[h`! 4R6a{֛q x I5(@Xylnf &|0 k::o{qr_b?R$UԲ/9%,9y=*]=e>)mswfdG̋5[RZ#3HN ]RC?҈?RռkC#i] wBISdrxi*M<ΝVzĤ j)3/(ERC808`j\,]<>@x8#FkzJ׷O=|I#~FUaSѮ0~+vJ9>^]eQ~uE$u!= <&f8'$$ p&1 }_nJC) sVᦐ̔r<­ j邽LQnUmP2XYzG@9aB# p*~S}`I4DV,U?M/M Pke0,lk0[#."? }zQ;D*x&^M`hܗ&L!A5xD/;w/PxoTɄrl]+w͆8P$[f8Lg-is~v rsMŢ/p(We۹ UUa7EֲMBÌãf"ذ2|2g$;&ݼ>n AS/:|zu^::ʧS<Oe3)TE-0[ctIG8 j:m`WZ gZ0@UHO;$. HIo8n"GN{<0_@] ^ѭi!" v,#@y?HD.Jc.^ \xTbQt$K͎=SpH&lS.<{\XGnr pѷCSV"qĂ 03Y5pY)ƘL 0'iW* 5δ(y'EJ'pͺ˽AV>tNT19CŰQ`hdN&0d]c(9 kXL: %bfQf|f"IϘ8=0mNPѬl[?i,`>xpɡoݼiHŦ|.&]OSxĴvxM-B _&xr+]*i|Lg`F&uy:cvGT:ʄ Hɼ ].92Y CD;;7<̝@]wPcMUt_|(_a]U3e`1$UZE /& t0RN>*dT(԰T ׹e pxF!3%P&kzK}UQ5Xyci.ȳ)ZK+)9nTAn9~'*:6)QĶtyOWI^u#[Deo@Ћa-›f$T»z"".^t %cL:)^φU:7DzHh O(lAR=WkUaGN!I\A%Q߽@^a9Kc/ZpkgE *hP>ɋMbT@PS@p:|<`Gyŷ D_ 6m>SH&dٙff>Eȑ5dI X@7t5JZ%7M`C^KiZjA4P, vYS1G"2̬Y?37s=s9,L:,wf Rp=G|A;Ok{=g2$C X\F4ƆR qqڂ̸¾2JtxtLjލ{y-.@.Qc9/Az¼1;jVOEuC!~kz|:q滻]K!fI'ג-)`ͅ c]|WHtcz@zR쌎1- 6Dꐆ[Vt-Zi tMҸz̹Me(RQEld~RtE!&eqo:Oq2{Mr ZL0x1[f:T y,34 ygbIɝJPs{곹Iףpqr[):k;,8L0T-`w T53ߺ3bzZ~bܕYP*6jt~:0'fG[..K$Nȓ,u00՘ZX ոHc6giA&Nʈ̎"A:J`ACA,`bZrG˾!5؈C~+C7~VƓ?:?SmDnWC),4v%FK=X_.y~SmDdq{drqzz﷐e;Wnt zcfm Xgcdkb kJ{y"pj됫墓P9`xc9&\|Qք*NR\Ṅ3=!kշϨ;|ib`a%']jjjaa֌I&8Ui]ْXӄ+]Siw;\@ņ0!{럝&@af3Ara_ty2,Qǧ;w?5҅^ ~mv@vKįւy \ݍ;j8l][UNfUESHh~<[XGpS4 ubp{Fzm׏~|~Z-<-IN2.'jx{O%,F0;ld_mk&r֭CYyLK_$ `1Ýy$D|ßRo":S. >v0"fUC{ZCʬKs6 ۛrf HVewUgj}lS~_t]>¤ز¤!\6O1]+~ֹל#(w;Dz(Z; dqo߸qR# lm`GEpu5>~Ҷo8Y?/w`ΒxfH}*L/<Rr?> `~) 'I8c*:AFȣ K?*AX.0<:rƷ< gI=oG׊Nz8V=9v_]v)XgY1sY)-]R+xSK 8zw?!? PBVCUH6`%Iaau֌ǪjY>hvC#*OKo|=[5svE3DJ&iE?b}_FC|t00 tZv6 ۈAG)wj GBhkarTWfۃw˽p%Sm %7KaR  H61 0@zf^Dq`:_iL;~V;w@wʕ/KvarXôeW"j/zr63g MeZOпlD9ՔӼ!]Vn#LN%%3:PiOq~4m am6. &]e`1 N>/I%Ȫc SYښL&`&1^YNƓeĠQ%;h,2nǸ`ǰ =;Z!\uN_.D_!ˬpfn\VEsk`&0z˔q#\TςIG?XLF6^zE/}IKD{ZLx@Zu <qX^v}ulNjiR]?] B+E})N5CHqL1@Ls2JRC̄p MZ3͌d^` 'mʹQ/ _(C/#E{{{hp۱|δm{oE6D2&8m@l+R]xU L,eoCD_HL&0T Z@jS)yANF߄IG ]7 olΘ67_YP}71 C{p#,n2ޑzo?4:#Grh}\(r蛃-?;t&i5X[1H-b`MGP^-&[BX bRYBauG1I hs\}H Yj3ubU*")b1bP¤Eа֘t:fP cҵo©?xtD#K@, y$[L56т$V7b~ܩa1zހ i,Ss7 9gjM!{ao~Nqdhsv?}tra Jx.EV h}q$DLt\Xt䎈lr 4+*IK}䉈= j$;~ir}8^; |8t}UJ2ڙ*S ]!u#1d «5[ F=kG0T!8{HwrWHb _0@{gߖ{23=1Բ&Ko*DY 1&A%Z3#- Gb ,9IY[p5=DΓ_ Z4"3C(pK4t}eĤk `uĈĤIیc$pVα%NKL-T)s$$g@AJ/,5Bt~yNd/tyʔ^8w\I=q Xַ> s q/_U`3Q8{aUF_ݑ#%&%&űA}d)|(5*Fu%iz~-љv#kYWau<+p@@cne8_.uR{Qs>SssOFϜC8nKL'kKL"۹l`oɻuk꫉wONa^MV;Zei&H1m3yphF韲b}Z⾗OY$]F`Zf/̷:o}mo6|Zsܹ<ƗOKĤ{K.1>J󳺪r8cef={eܰ(«|q"&'bޔSgl%Ï^` ެFZb׻dt,I(g&OyuدQ,n1B֬X=˿vQ:uz_z؞{GF+@mqz-2c/$5*J@w!,cjZ!IbKj FkAEr>%to}r\5I!N>?gmd(<@I acW{aeo1ZwJSھ.*ׄ{Ugw.1隮f{ƚ_bҙ㈤#IW|#(IQEq|fRDKnm= 0鴲uZrnCFeoI>G`<,[o? I9~8]{!>Y a .q@&8ONN?bZvU炗SVV!r6wqu<zĔp,B.._}^V &wR9 D:K lȴ B̢__Kb}7C@+LB Ȓi ΓE .z8.g-cP[j3K 1yN 7t !vi1g˺K:q0yGNjQeۧa!IQ&ZDdɢ=GN>atCXw)y˗iQ Tap0D#\ĻUvdkWƹMQ*. fEpϚQoۛ))}!aUi: ZN`YXj o:ӑB^ oz8Ӄ[~{y!?\w 74r@IDAT)8F`+Tg. +uC^kM1TUvBZzRĸ5zER.H1ɡIlm_$k!c +#x~ 8})Px#}/Bc0_$W9Bi9'8~Ҹ=$5Ptv*faiӢ8 R1nY([7r@/b 0(xGDT7_yGvpg)yxF<4DHbeO'?E}&d DX8Zb>bـ#Fc**ʀ|dcy>-:$¤ |v),5(S# $;#iP6I;@VTrVITqNTn:M:^'H$&klBЁw齈-1>Eėl  Ƹcҝfo';p17LY-i\!AOl8O܎7k^mX]_wUA7YLҌbԙ/fY2C ¨zѫQ_?sL:)tyyL {Yh__Kh\[՟#9>u֏WZߕXaΤ+J &|ׂLhbe5 E[,ӟ&fXr 7Ƿo$i1>N^e?:VzG}-. !U6 fhUsүn[}3)?if^PFiv$yAbw5L:"%nnji4L>EL:.T@ȝ}֑ ,Mfjk 7#=:gUS;=ƃC{x6tm nZG C& {= "yZJU 0BBdx+|Yttsf OfuUjsܠ*oSmN$JjV$'xߏ,-],vTy4MxǴݙ,H0\HAx0CUƤ]Q`Uݜ2\3~Եr]H$D=5|)'W&$' y"N3 Ȏ@4e?L,Ot6ޙ'tt /ݚq:K# sDWI,y(K#lt. 9RTa1X{Ѩ vU{zͣ{PBTd~t%eGNGMPզA=YFfDhN"@׬K.;{=8/cGf 雙pI$l yᑢ3 šYq飒3>L:E,`2KeH_(T.1#6:[j~@&Mhw'LFeRY>39)vQ/]EN[AJG20e)"@d2Vu>+KS WAjX!Y&0wJe3J|6)8T,6<"BRH̆$s 5+;Iv ":?V]b‹>I_X|j/|*#%"sR=ZTI/&앲cjTW8ntF7HiiK=g KXICaS}ekA:(#( nj *RI&P̧](oJH,{1H]F rbSi_I'BW@(*Ulē&]<Γ4Ttn[xJL:OtLUzz?1_ݓ/Hr/͗{ГZ8ƅN'IV%PF۷oîO{XKjW_mSF+`ٓ/U ReN6׎uq&F'3GX )W\ 0鮀IaSA ̻8>&@-K"/ {`4!'TZ"ȝVagJkDGrKvfFh.c^#6P6#`}nX;<)TWǥ6Uj[Y z"eU1FbBF'@# !.BqG}1EY9Sњe& 7S/ n2kةܯq9g8OqD1P@wW0л&ᆒƗ:Wg`][HĄqV Wշ:n,g(G`t?tvXRZ,8ERבma24:^|fL:~#dKnb! NwSOjB1%%jpGw:iƄ~&XXbk{ˤ{DL(Ps})b;/p k G7|Y,0Y!tF2B浪3T q&F Rz']L\܏2TFmה=E(0?x/.kwR #bBptO%̔PaHD<4W=r0)'HpP>:kTem@wFxvFȋk b%,wxiyA_(OF 22m*%bHD˃A>H]Єz݀waI~K_^Ѡif TL:HuoEIݦѸ:z&k.H{(>mPkB %5`re(>MPvS`DxI,"XɈ)A΁6MvBئY,1=Aʹ7YAGL:цï7^{};6ݙ⺒4tlx.hULh,H!Gqa^AjQR ^w5O fE=zm91UYDt< z}и.1Ds$w(mC% N"9N_P]I B:ӒtZ Qw}CPFiq*o9 5(p焢.z{J[*\ qF@}ӜqK9 CGAMrdb6zh_X<!Z78$ypf5TQRО+&]gN=)_Q@ RԼk0.,*/",7i) ܢFc!.Ś.º{t"ffR=:؝A=gFCºwwVW͊RɚUI,C+6$f@ワmqU, >W61E\EamCNdE. WK("L]ؼW6;?$a8E-Ԓ$**% t+ʤd,5'^fDaI/,vHK ]졨OIC3e.1.|B_Si>/m~&uؼQ tm?5;Wݙu:M*R7X& Be=1KA<l IN=OIz'E:#6WRL<* 0Z;[[`RnhiU>{-xND5rdݾX?U-6g8>^-v!E"D.Jvt#d甤Aڇ@V#>Ot1/gGe+Į{Y\K)A.4n5sL@kDR}uRs.ӱ>vs_V8Gn76d/ ¤wHX\aN)#/l2AUI9^_yfj7ٕ냒 *! Wo1\}/!(=]U`Z[@/}xvILJ  `ncsXUܣQ_wgh_NB1i| UƷi|/0I*(rtgv+L:Fi.`^ShA|Hvy2F{<>bE>`5)Z*? L:^ߚӸ{*[I'ONzl R靠xSFV/2-y`I9AȠbCU6Q 3,>, R ߘ=0Ҕ'L:8ӎRG 9 Hcas9QX#U@F#a`6`;NE:al^8Xch4>Dy> *D[&r4EHpm= 9YhIESj\9T=80Q}Eftnc^F, Õ|.R1*4;Q '`@H,eAc&b<@Oa5}VL꽮fGYZ "NٓSf3aҥ Wace3ٌ$WI,ώ ª0l k841v!+U'kWb@녘|b6ôUo⭁%HitWL:T|\An)(9HCR0Fn#-Cb Zt-#5/'3:@"<L:sCK27̶ g"A~0˒C%4nyB,(@;񝙰|&eD%ii&1 34NDDq ]Rj@|&Du76o"3 aR08T"a(fG6Vuփ5@Iy>\O]bկZ#=y2S\B_IRu\0Dw8>$p>(+t٬@/X3% 6H^@9qlN!j|bYuRFEֱH'J5*9GhGYS!%+:8\^#Aw/?E:X4 < A?9L:2$K|AE⛥r(D -2?+9tiESs0` בjྃ&-\ϵ,QD{ԩ0~fcɻLKom:_-IYǤQJ' Gzf4__x1N4<8jbb^;3<rf^3/#c4meFv)XsJiT `m~x8&"*Nnk_0H! |kyԍy髅hKI1CT.\Z;J/Nwƚ?,JޚFK|L!=\Kج. }-[3񟐯8a^cV5b^<7OƩ͡p ?'og"gXg6|t-[ C\CDq,Dmj@D-EILһ ݪY\L9mbD"l+&\"FO[( ]Ge.I'tE,,$$ w8y:Hn2-ȥGUlV+Id@4Dq:Qϛ8d^v' 3D9*Φ/^d=hԋj9'gr:/W3~iR_Utyb$3A YZ*0"IiǣyaA`0FKL:IJ靜#PlO@>ߦ>2_}VcYt2J)TrH+·BBرۧr]FZAn X&*ow $7D+'.`^{DߟCL:\*Etl&y"|hCB7|" "Lf'F&MmPϐj4D693Ȳer,,CE8$Fz&^@)A0f7:yL:w ~/3q+%ǯAh'¢ ?`P xM> `VlՎ2q,œ=J B ieOP;{r,O> bn@$] &]="">Em %xt!B OPCGeLk;>`jx%}&'":޵#xI3b ^h{o(7\tpĥB])Q0asӟ-&?bX&J>:݋b0'ϴ^JND/VU裚>\(L]c{f"xB QЬYUVoewŏeLTriS@zk.zRec$Ē$"&U"ue}EUKML`Ť`P.c<W>P {5Ɋq }"(XirfQ%0L0c̼kx̺ld*~Rn|z.1KD9̩¤0d"5OA]~&d]vK+ax@¶/!#KV䘈|ޝ;'鯔l]MT,G6ZiESS(>ݧ׏Dzc|H 0,*$:K|~dd$'@  ⍏|m¤K FzkiWݯQ6%#{ ű ~;ecUȗg>!.5֫~|MuXA)tTY3uT[{ڞǎM㾨% Y_>CL:L<Ƴi|d\Ml mxhp`O\l6TRhѫ,Z8 Q&]`҉{5LcnD>p6~e\ONSʵDƋ75Vr.50`1w>{ \kYXSj4 jO vq*tw}6LVAdN,X4Y c.z!DȫM[h)88YXU"PAQVӕDPMU;.{;v:xc]JC + drJň~j:E¹B&pɷ1H!I缈L)kJcmv~9kJȢdqSahü,>R.yVWK4(!̨5z{O!ܩ)Y@\hoIm0 O:lrB*ZxD3}(g0sd/K ӛt=tKJG;QavF.R"i=PӣZٴ}%}e@ ] Pgd\,ףyL9hN*+jY"h$ˏ[\ߍG۽Fz!3+%fٳ]5Ǥ;gS6%[qg0%-V yLP1fxO{G6m2J#7s`>hQުmgw ~EO-8`LIA^VK14M 3x;a?翽v;z,`Fx$h>҅o ,! g+H: =;a") +P {޸2Hٹ , R0=@ܿkpl: >dm9Crڧh=ͲXR2GcYIq/$¤gYZYZL9b]quwHk#Jt, :ɲ!QE*{_). q84TAvqE7'qD:Rh┎ɓ) .,t`ёA1c{.cR}/Aw{6yD={ 9'MqĜ]&1>=},«,{{y &ݻ?q\%b4j't?*Lc%>wIc S6l1:Fhw5ԨF*)KL nitHzM )+d&ώI/!htS>=?Z1JY9#!գOS/!D.C j)p)>H&>Q毘;4ڒEy{{aZ+I<` d#%$hlq̣PtwY^fh*S2Ȳk*s bB ';Jzp<_zhgfAXu/b;Ј)#wUfKX8`\Nq"jltv]!&i OoptUE<.ܛ.r 5zݦjSŲneDjDV>HL 3*级vނ֎k.oи1P,Y5fiȇ\j` /dIr;*Zh *;th04.}-W5m~[V1C,ޤmzUwKвW42pn0"WO`xPh } t::T icT9~S,` D>\YsOYid&@ *~睍_6qo+ɠ/n`܂xA*-z21CRXC0ñ"0d[! d}zBhϣϺD Q/ؒ+BW 2r4\c0"Sr7^a5:iDؘtwe,~p Dd r~6+,a` 1&|kZZM9W"#.h pjp0VZF A,\);̐Oi-hc@<Iy"- S* -`NozjU ocG2!Ѕ{#RM9-LjʀTGM DH^ͼЖ2"/4֘t,\2 *37ևf[aJcbҩHg5ט:8gB=iᩧhwe,[Zka;>{)*JuM';Gyi N^p:>>Rk, (bq .T273yOI햘GQLL`s$:Y(HK+_*{o2[+TS*ecʡ4=5$-҈{Wađov_}ru,BV,h238SCA dg͚RU0b)xL:jF+_hhgg& hVӳISjE3L>r%]xtP(7Hӭs29ɾ:!v|?h3c|4#byBpBRϪts8EظWñtpH\,Pa$,yzsK%3<zB6PUW:9+1ѭ:~c3%贀E/JΔ%C*9aߔ+Zꓯ7OPWkbe" ՝Nh[`C션t)nLp82qRr/a҉<Xe O"0B1Sb؜{(r n8663( v^89 n6?@bFPQ^ q+|pX̀T2M ;sdH y:jct2h< 1I'GbIgP%N BJ !VNA/U 4ُdJĩ"YAܖuc*ssDru $KjZfCLc!%6#b%`ҕ`MaNa/ m.t .aظt$s!(UopMb z84|4n1 -HE[I7Y%ù 兺cC\tv.øhK.=FDFUV7WX`9CrBɚk)ձ[I+T_ L:TI(M ./1K=aD@UX&`&&Z 0J߄#l8"I;:U86tAI7¤#P~,85&Ey&L:F;.j$=]ڄƣxN$+M ##(zAf|Ťge"`hKd}>L:p>!ܱtIN'q:#UrEZ\rWް`5 Ek LS9&lcd]bgֈon{a3}o;Ko{ ?'991eHR 2טtp?1 muMv* %}ʣdRSzvL02I^䃾ͿtK;jfwcikYX}wխIz$ 93pflx cD(^_ϺAQ/IGNsI,ǫ6f%rm~2,C_L:ES]ٕ4 AdJ ^5>+B2.1 .9,Y)7W$5g J኏.8޾;]@r{5:ǪM *0|ADr¤2r|E&'Zkx<ت @;@gS,\킃/ɒ+49 M,:L:zsFr|\0đdޠw@jg2 M_£9HT>W߾h@Nvyda.RvO/Fa ?J) @Q!C#+`(*@(Zn_WukPz{)<$## 5T)$L4WF!td3ez)XKD9舄k`}_<3NS8T$gthTH"Ik_<" d6 f\yT&D{P֪Gtr6z-:KPFk[TpT]eȐ:/^/J?dt$wO~20oT($Ϻ"x#.K84q=! V@t"&)tyxH޽Ó|"pCsl㒙\Y XNCvE6.v M|#zTdF$SRKD/w`,MDW ɰ7j8!GupeP.#7qJZ/V ~v?뭇 ojogMb$ILt1ͷX32"ꪬ̞94BY 0@eh^#O,anSn 9Ms95%rLM7S3~Usu7S5]DEKzt9j!KBMY*/ԕRN׃^k"$MAT*b9TvЁ[#J=b]X<*\0 *-:+V0鎏Av5@lُ pjJ/Ǡeȡ1G'"rA892&=e4Ks7qp©n-dHGLq1ݦ+EJz,՗VKC^O} uM?p,S|ի&,h5Zz epT0#A$1jf@R,:ȻYJ/,ʓrD}"ݚtl[uPvWo{ةhӰ_Z"B]" %M+nɋlBi.3 />Gi_$&^:ϴē8L̻~zI\\!˹E\B+8fɸ w&Ұڹ $*7f:z^C̯±ìjs~7k[[;,B3(_vL:2*'xA Ȅ%"A@3őg u_QL>o`gBq:߃ݚ*Z<,I`iuև Aҧ(L: =,U[!Hɝ p`< gRXSa6M"fV]}H}M51mxfyޫ&T"H"rSL +iHth2yL:8S$g8e(BnPn|DU\IBq)knHϥ2r?Lc-o5(L -2Ir-L:;`|R rX1b9,!bCr24dѱ>H`#Sl͝fݝoQwEKE[4Zd6zksxIG'C" Ç/.B*1&_&7 cHT%EFJ#*a,u;ra-pVJ+V(s`9djR,uZfE >#ۨHYιƹ 6_B}a&]t~0$>j#*d3ޝq:U['oi@U,cBGBx2p/L$d1Y@U!d qLjO^>=wS3?tXÊ\5H+}hzbUHOC!+nKTǕ\r(# >4{Yxk"*lzrͽ'S)  m_ ;fi * C\*5l c1͚kNHaĈ&J.&Dպ%e"PHؚ~ڒa(G>w/2Vѓ( rEH剭ՔtR<,bP iL2:¤3.|WDI-je1|ƕ5nocPɿU~2Q QXQ+%L%ʲi-xXM:,d91R09P0: 6|mMfl"{Է8 d5'StlvV."$' rANq*u\U*]ZhWf@X2}XVTRDԞ*&Defqjb^DРVrIGq%pD'f%F Xv|W@z\}zV +udKDy^8#4 ȁŚL(CmkVU4+sh @ǽDeEz3Ğ[DB#FYzBD0HqF䉼 s\|ڧ/h,62$"T&Y0;`'4/4:XM<nWuګ5T|1rItkRK-C"@H2%eB:) T"(iDv=O%yv 0w-XQ ƤZ%v&d7IۄFnJ~ XAfߒu`dJ6NR(äceƧ|c"kr=@3QS4yHo۽AL7 6I@8c皨V~K9D}Ħb."CA`xN$YqUXk#4-}N6zdc6T!cRA0=Bɬ P`b'$I MIG @8tr&~!\<*/N1j4V}Oc"qjвn*cauIJvB `5qhqãs~5v &HaE\X]MD+8ZLctp()IkNU3㜚Es8]]*hz?>*>,t49q.]+^g-VS1^+l-?^%~;M^%ˍ^d[2t\c҉Q5ULub>u"kLSZUܬo:RdyT[]y1jC Q[^kTI]./hP,$W5A1RA90huyhg?Yȳ̿F݆(K`Q˙DUVhĠ QPpLFŝ8SyջEP'AId"ꍐf~=L\D%F5kO 2d;e}2Tkplh⮫e>Ͱ^;13SU&h Pq@ZNvklì,VD KLJ(ImdEZFМp(+ku[ ᲱS4_ /0JM"kvh=uFn>/"O^{FHG;kʢlxDkw+ oekO)Ql:tEƭ$8>睿oH`ڵ+`d׿O߾|kj={zfڎeZ)~` ᥤ;("cD4=hN'c9R^||ٻ9@mِ[eWUFjJ)20rg#Xa"4xA2NuDJU":(Ҍ*qSK8Ox(C4\!ż|F[4m zP5з: `+i2iziҪu}!,⾺NU[k>SHR:CRײOn{q>L:=}84@]X`lcP'&ج@PŋIЃcȁGYiDMA QPBDe{3S_,JYBawq1K,bV$t}R MU;KےB.D^F?(a}8;:L7n|:coowC°;p?1s> )UkDVտ?a6J2C%ű S<@G5zՀQ2k̙@ ɕJ9.WZ?y=Gk31̉~bfoб'Ĥ;$ vjrt¤sJ4J%….|'o5KԺ|vuG]_hWǺLHn]|{{{G϶[$ c>d4 dz NzI&qO\qcSmXH&*|3e:=evb㏙) >S/~*peYෙaXHZo@L:+ F [/_NtP߲9E k^}+/ܢG> :F.&Dd,G3G^khHb2d܆yN=HDuHU}Wd V[ž'֊UZ\z@Iu*a%[>~ n+7[~ Vl5ؘtql4hthʵsT sfRDAtf1pUnLѵcf4 WmMTws|M3WDx}If)I7!pH:\萝>h >}dt ¥~EfDբ; kSNcqw+c$F*fTΫ:ֆ&5r;~KyDYHV[ `O '^D9\XF2Ɨ/m#;*rNsf1Gt;C:]0Y3N F¸cβ+oȌ.?eHQ*~yenF));BXL(*{KTv`^Ǜ0’V tXHdq`BL%kV Gu;wԵk=*gN(\:Wa5BB-Sl F->7L:5u`H8 @2Lm53)*{{IГ{ Da0J&t5ʈJG9>J!nio);J a(.Xe :G X W< ]y\sSW2A5!2e==F^b" ׾btQԿCYq}6{|2Plxwg?<(o^18VKLNQ5 c4_AGB*x11UR9tAv/iXqRyJA@ȮwT&l|AS/@&]3k{͘/FAgcR34zʁkw NM8L:feJy w89YSS"NozKZ`"$zbXtV@)JX7ͭe;L:"h4,IjU8j$zhma,m!ORa}rI7LlH7xDe ieU Zଦ!j/]U+-I/U)k;whw&6f! VŌ7BP%@I4H:40 J|8h+$;^2\gay2#D2a1 h즽|l̡4H|&ޟn_4g*pM ĭ&}0ha9,:QDpTXzk $*$ِ,焀Zg;sx`ɞOaߵ! N?C]aҡcZ1v DX_َj{tE݂{14 鱖:9xps9ͻ34VdI)hC3tŤCI!Ĥtv+\x$,^F ,-wGYft M,4X!4WKGtk[*zW{Lq5`yfO\1k|cJ NpVxI"u24NԨu&ݩ}: &ix_ꎟa= ^PFgtAǸEa4ϝ;_lqY|3a%-8!}z \kM-/~%#EỏuzPXC=ƑJn 4nE F_tiJTfU/SWxXU3LGݯNHD*29ݒ1K63\nYȇ_4:ʢ|HT. g ^ ZF?V/CMmzIU?*&]MGҴ=Xz@fz 8N <55&3r@)hMĭA&T30KLR1*ca^4p%>IiX޻_IP&ݤ~0ܦjGV5w&^xJ @1D~V{eq?)皊áAB56,5\&9u2 xk,) Ym;3RD̫ 7{Ih Oثl0*y(VL:LoQ*'-9k~S.ἆ58k<3Yyb{DǗ>t+r<~}nbuIM`=äSO6˹L"tPf1{??c*;"\OWjB _ B%癍bc8NUӫuX& Xk| N`'FK<:V\$yn3̲4Ϧyغ3rYkxl$Q.э 7Cnxn?:Za8 .Nvȴ*2vaiDy~lGrEGdB E̓ C.q!_)8)Ut[ !J9 Qe]#a 0Bwad#2N3'9L:@Po٣it33 DPzH'#erA-\0I!*d͡u=*UaҩDaIyL|e{zIWGbϲ-<ۄ&IU;rRUv^U7Xw#"E $JF+ZäaK]1bq֥iwy>AgOXK- djm{4܀<,%qfqk72k,6[>xOu W;b)&ĂO0b"7n\JEw|+V7}8RےĀ꣱ BW:]SbweשT`e^2;͚{1.1B#17n&?l^qߟ+aaP$g{zoG%]Q3I85JDiR1ׄd1Oq{#WA"(٘t3z-8r2x7ot\__uJ/ UץuX9rD "R` I7$Y_j{4I{y Xj#h s ԍ闠Μ b)vmsQQ7e>ᧂ L_w_Ľ%5٥ )y^+E[,TSzãC]ȍ, @A *N>ez"vD|nbsvbd 1ZzU\{,P l"о6QVuI XzdINܒyLJ_&!@nR`p@3i3 bcMRk^wwڹvg4 H7g]ޔN^dX2!π J!-%}?!DR1 2&HKtbP*ׁIбR鳺PhZ\TYpqcg*/{4iy@dRn/!&(jLZeٽL*>)]Flzqs{E[F!}uP)~^1C: HJ謿!t2i*C1x9 ZϚ0*+zUÉjsWcTQ88Qt(DX>"c Esb3Iǰ v ;u{r]t*dMJ8&89T7SS)Zg$^ʆ4 ,+a7Y_Hh)QYCG}`U%渖M> QəZy2LS%H߿|X \V~ wA3.w73+8OsTa AJ0n9V$9PCQ)aP%r=zsȨ9Q6SԹNVD!n2)BNVd>k.ZБ X}pTd}o} ZReGӌ]Ov'ERSDgХKomi.xrL5At>Q&j|ȣbZi(#rFGxv}c*yBm*>R.7ݒEVݠ> ZHl)D1BK#ix>Db]8nE{fj>Ͳl2ݺ}0߹3^T Q٢rt>tZs`=`#3W'__&8t4=/`EZAf'bE'#V _֋ЁSt1d$H5Ʊpy}Hg\ssbun5 ds`4L:&y+tyns38ve\.MP(uÀf$2w  3wtQ:]bBZ{C/tAc9 @|8F~tlt,`_&9CQ I^2F6%lv%&CŹ{9MWӥAOL) V\V:zE&h <ܐc^7G_V_~9 |eBu(KiKxl:NB10c<vᨋji5,fCbjR{tZY8mKbXZ50UY+⠫]eR, θ)vbnצ*B-Wy` ވ,,vI5S…D"SD27F3ՎO.?e/3HDC# أ̂ ,U9 M, Fk1Ic| o[AwW[NjUT S(6WrrT"~/D[4N]tQ/@LY#h_@8 RzKe:t#@le@23CDґ2GOTh25WC">)<)gah3b>IbJD+Oi`ҩ=ƜLX%5>B1V=·q!/:d&N)2΅3>0I 1v"O6MCFq@F\YMީ/.'HGC7>$"{WDOC$GĤ#Ȑt7##bkD{4ҩmV x&eu2RM 4' LCBap:j58(x˝s'm@% c U%+ѳT!VQ }(L$ AhP 6t9) C@IDATs&rP.ͯ+dRAXoGc3l"[S®q! +djiK׈'1B<=E }9q\|\Cpfqe_{Z7ɻ DkhI<Ɲ[LY}jNe/`PDŽt"-4!`))XSt\&6H86rFfdy@xsvc0O@`ȑ$%GlQL:;+ڸsXJ7"[Rhg^%S R1q"אu{^{w !>-x@}0du>Dz<9V1&4YN/xFmU60]_uW]o8 dNԃ6b`D}'IyEX t2DUz FE] ]Cl^4SrƓZ+"KVDDq_(pǼC@9\)`d'aP!f=Qgңp :b]b5ISz[vAqqk:]]t$Yb ٠R[ْzB52JHeonWƊ;jڙ0=:nDz;b}6'OB86AIyr{jqFA~|-_9tJq ~0`::L&޹F[[Q`۸Xph Fjv/wv܉F?*e2`_%%)*bGaҌQiH`%p>VlO|9’>1ca%R&C<AOY7F `@Dj%|r "ƭbKkCQ&MCōWwZV1`+H:Ite=ѫq_ΜILsJ#.]:]`hd~c>4&[jgtz?6yI}ߎ4lYL5T<u"({10a/,!uwWW_B,VorQ(.eј:AQ&_r܋;[Yxy2&^lPūc֕@7M.42CS$u:>hiexL:u)PLKKmeN6hV5qXw’ۺ!|X5v`dPP>jUEP`;НET݊C ;4_C!<Nr͛rTWK`: |Hʸ)щ_*?Uq(1z  ..ǻ{!!dT*At(KAUo VCLdp#@Cq@SEp 'T"uS4&^e2b[Ǣ3Qk 'oAEX֘bHOB(1+O-v nj99&uh871UjqjB1dM\ /g68XczZ]rEˌ|>~yAy_=F&F9ot]ȁ4M+wEkձ0OK$U6@YmͶnzZPyr Blź=I0bFE'ievuշeZ&+zgκ4цv^y}>!#٤ eCHM`s0P/Xb(ңwBŨ@zYˉ N6@(W1^͐P*vjPM903خAhEE*PeqaZ)jg|/U͍tW꺖E%}3Րq^VҒ'ʌTM*j IƟ 88bV,oyͿ ˗/w"B``hяp}Gf%\؄KkC3TVElx 6NK0h[S)2Ѱj(!*Mo9[NYa @C@&`҅kL:]DuB%OyPI1k:q(/_}_F7AW a)T㒨eֈ@[oqfFf۩GdlU b9=ڣ"㱸REvg_?SwhƝaQ>iITt֡7t4-½9<(`0K۸~z :&1 ӆuTp61דXPʈ&' J|VwdZԘtU}4Lp'5Ȣs꠪*ok4v6G ½LvQ#7Ӱ=0~Y[xK2yab]At{%C gQ LT%DPn{6cp 4  QZM+Xmk5Brvn/PK?uFڛdxdt q6 úpK|.w{]jP@L:P=JmY6rAOW^yEO?f"g2,okvD \n=_p1BiŝwY]/>P}B8lNow1ޢŠ$9EZ3.4;ICءl} 2NSr6"F/0ςwb ρ?L"4 YYZA&B (k֠n6I;OW{I@;Gnlo&u16Mv(A¥n悡f" 3R"D22O%[9(ёnoFr7ϟ?OQ=Ӂ̕k\+eS{ne?W |WPt}Y?Q4ߟrTFZA$V)G1i3Ϫ ?]d}si5o,.bdH[EuwMcR5ewʾ;]6$MK!84K'l#ÊCPd[@ONY*&[?}yIyq($ZG T[{.Nط'4n7^) x;+~P$b$*ݤ;yTTj*b!B={ W4>݆Ѩ7f?ݽcBIWK4oash۸OAGrY\ dw[z;i?Bgі>^ߟDaQI儨 (/JoGd v^Wu&{tM8n #&+hYI&50 +GVH$lOdg/$StJ')kL:{]_kyL!~;߹Szv'p1RrJn6l([ He1!~8J' #R^Sc]u8b*6aID Cv.b ZgbYgSHx$N8*v('`^#a_3)`¤[:¤c%L8CvA)j}:b3OUԏ8uۏl1<.ݔǔ8!1`)VՉAu':nBdcr+ec\0p(2[D.l&ݙނ.a IZjt\G ćnXitsQ̧mVX0.pg1ƌ.Ԑʏ$ubl:Q 4-݆ D ١9!fJХbo2VKÏ>mZIGcl@`512C5)0[¤gW9{ƤsIލIǘJˈm٦9IBiȄv] k:+|#MӖshf=*4=]CJ $UH(^\'aEitq?L:i6/c-N?_{eh3ِU/^Y1~@Vq8?(*XEDaճ1QK)H#ph'n'pwI;bfBSAX~A=C`-ܡØHFĠ'V(Ե Z\)0xo&)b8 f}Xgl.c6L︃BPK(!òićrMdèG>r&&Ct1S*A`L:FfFD+~020.؟>z+~M%jE\M`Ch+k.P? \D4kQ4äIG$H՘t^;;,bځ1a!RŠ8A"6<.W' X*Q> ZIk"G }IgFUb.s0tA2fD8UH#1開jγi L,h2t_XG69"7J_ŚL|Jb&] zZa-Zcu=LsLWc8&ͼY&]3cYt*6Y+%C#,Z. r0F6BvIgf=6 C ijE4I&:-5eۥCa(D۟¤cRlᇬs#]`"tQG}tNăt.L$δ^w |ġ8, Np e7!z[d&xF+/|9/TGX8{-7n({jZУ<h5f 4:1**d4%e41}?Fʱv,+QU,h PDq &i @)0G{{3ulODPBQF [FYۺ/]hAmdR9} b0B3'Sf@GnbY #[UjhYxu2酄sgeur?/?~Tp 3>f9"G//X.J8]2~fԂ bПh1XԻ%s%kG3,4zĤ` #`n\a)(25u &&^1ơX]sx]5gt ĕZ 6''k mw:]}ڞa=Ιr61?o+Q]|V1N1.GK Y<_^S_›q=äۤS8F03L@3xIwQTw I2}JWFBȩ~!o 78gtG^{Iw_<Sa=4tgt^1|I4|I9zK0@ԟgtOb b72Q/tOUk d_61&&xkj)Mnn_&4eUV=(|YbbL{6;>Ixm`1j΅7aP34tL_)Q2MY)SDŽ-3%#q#.ÆPc"qe덂0Zxn eJ,&o&*jJ}I"gwPiuPGgˌZcȤU{#lJN6JWK6UĩYIh)9xkCeƜx4E N .=Dd +Epd1L> X)8P;#&]"#XT&S sj \dNm@!rI nf-9! CZq/-W dj/aZU-_*%''3VӳmOJL E{A?]'epv0e8CLIqfU(*`^c 3ƥSd{ј^mA_RQn*Z{B(opL:)785 2,pf7"$k"$A49AI,a:fEçٴN Tx6VZっ8!,Ί,;$YgU e"um I74G@:B1 VD#~0ߤ}$D!T(y:CX̠zahNF71J?!D=l;|^tյkXOۄIG@C'.i|kDAQ%au \Ig ?BNlctHhSE'ڮ|[#xNAF߭$+ L~waRA2ס[LJf\,`"E푵X+ "̚+s}:Eix|%:d@"Fsdfj(8UIhGEsu3JFY^~<|E˲Iű%a[iitD'qQ,VmHj"~…nQR%h;WNh2fʚJ5V~J CG7O#b\qAJTt6# }-#NyF,Vgxf_0?eYGL&1+j)LFC ydA1Y_&ݜ8H,9*f^b0IDf9rE&PIji2susغcoÝԷ;AGC+ JpوQct6;LhcKz:vkkkU~A(?ŁB+5$wެ GG.)^5Wogq(a{Zh"jhU]k )1kOt4i͒"Ed%d#{}MT"SEw}~QE=m;uiϐIZbR!@PEÚhŕ'@xʴ HVFEAf"W\n\¨(g=b 0/CPd֔[;Iwӣ-F;|Π.V;3g(mgPTt]sNS:9W/\-mhR>+=$!^s7Y*JJlĐFur=5g(LxBLب1yäc S#c!pfh44 `ͅ<Ғ$xMZ- ,ɦ߃0|X׉=I~GEݎ4˫Ny|e/޺5?FC9zC"v+ -Q¤K[͐Tt;̥ xtL:u!kQZVI@J{)pU:`6yl-nu}ʌq 1OGBNOv.vsJ h>],ƙ*X_Z^G hRE%%IMK&O@n/>:2k\ LXe._&\ *$+jV>I.Ce 0Ϫ .Xu'M'[wt44)+YŸaQ[O u`2F YZ1_?xPd{E|Z(B0)@= M9=>z9j9ފ08`&ք).1Υz~K1 HAՋMmҜ:+QT.> Βt8aBq&tؼѹY /yВμ>{k[q|Y!^fjU6)2F[U [Ƥ]$m6HH=VՙXBo29vhg= lTB na %oW)J<;_fHubA+"X~kbMrԪ BK@`fWom(Ss ae'JKl 9d$BSu1:NNBi0` ýj £#>/ B>iZ5u+FbZO.!d vַ7_CME-lo 88[;w@ 0ݸp2u* Q^{PsDHX}H_kLW0JJt®pQsanku15Jxbni~6X ä}wh>X0z% qu,5+GX)b0eʚU_y6h)>L i|4uz$3Kf|베D̓PtE x4ޗ4whmTԧ٬m ꆞ7olF͖LW+^M"XOQ4E{@SOw#ҤHgi+c;kvUkE:,|VMXCZ15F8FқZVU zmAڄeF: _ JfEmOTꮘutUڞR>ŗ ^;)rDU * NtŃ`k dDpY\t*\%R ks5F@Q$pz9!~.|&80`=1M8*_ʢDr2@kh &/?H-5㹢xJr-$Mcz=o.^`^d~TSi!V3'\e wCO1@f(P=V7uI3۔6]xhiyiEkMsUccbp!ZĢC-Tt4u>)Ė&ĤaƤX%y:$}uJW\3" Qɚ@FfGs̘Ai`E2.d P TZEljAk|{ykST:6X"SH.)ҳlVʋ)8A|m&4_% L: ;{1ܹtbk4&W:(;_G.1PM"9"QaF G1< x0Ժz99Ǫ~b4z#ť}x. I ũ03X *L:fMmSln4xrfMPM3C3&]c[~|c\>KvȻ^E~0յ4:&Tm7UEf"?-И!E(luLQĥTW_IGnL{N%wsQ%oYԗPj ]AN-hMbDkmjSnsPa0hʌbK70̑z!%i/q)̙bC-b%ynqf0Mׯ{D7e@ַ"dV*2iVD(l:L΢*B&Ϥ ߹;+O5CL;äp?-:ǀN;>{ Jh4]c$5ޯ TO+D!_^`qxi.:+FIO+Xhb[ b>CLU>X! ژNgO>J$ ff1tY1xJ@"z].^̧E S2FMJ q`CHdۘ䁎A8^\_ﶍ2kr\W .!~WE5mKB'$R.Kz/o21]ڙM'yvg #3's˨l6Z\ ep2ΙZR𕵨1hv>j,~eoK:Τu) :Qwiq`\&<WWȇřu])1@Q`D>'J!A1D<5HQDSȭfnQCzM%GM0-% ½r_Lڠ;QU'O* #x } udz6ēLd. U3w8\?:~#:BF!I\"Xq#Ť0Mj/F=Q/]v3z7pfkww!!Pczʸ6QRAɶvK+2>H/T3_2"dkK(޶Z͈ALRC3+)SVYx 6;w2Stgq7a45JtfKƚFq)v{""0z>$4o-b1(zL:]Sn2:EDrotvcAo:"ٽ~OZw}kphw{{ ·_+= >e#pwbJ.uN8* 3'tVW ]}VU^ ~%ɈKA*]{!ht$->7_|wa҉CW&J0Ν;';<ԒFB1SX96a2XBUP BtM9pt#KaxȝtFKuL{!7YR Tҿ o*L:0xBBe }ǡo<2Befd˗oX6B8=޾-FC=)+v(L@%5,^FD/|H˚Fg`N]%UIJmS?`<5s /\{ݘtpz/G2|`@9\.p ɟd)%OaW۴\{k *[>uNG?C]|(J/2/es]S֚]6u(d!N%k\)@l0 %'eGx '¤Ckj""5ݩM& NG?{x -F ,0,9M Z!vnPf*-0©t$_TȰ;[5e=G=;IEd5Ӷ J:d|PZI/jp'ty:SIq41jqUu&؟7K0t1.'f8 =ssrXR/:{{ :Ùuph!y 0w/=CF֚xu{wqU2#sE݅v%ŕ̜GDB!DmT9I{SN:Cۀ2kH]t՛Yn {❛s&YƤ'dY[RZJ h0(< Eֲ/)M% #HM37ܩ(@)b)t /X7P| 0;iUFC#_-&(me;9hlVlV 뽟̓Կ/1 WY^^;&aB̴Ѧ Uxp$Dao%҉@,r\2bbVa~e$@'ĶaDX:~c򝑎Xӄ&A;^9sϽ@DxU0@]Lv?AL: 7f;TT/_QhHh06L:SfEr!VAEoUXБQ !UYѳ1oz5]u&yUAmYKP;2 +֊F@-Nd!֤ ôIZ2&;UO'&.P/za|+2&t|CTExyB7]^P&p v"ÀX3DBc+1b(n=K|,Za˜ n˜zP9gN{2l&pyzRcœ'Oj:.MRJC_^G2IX۲{]Mŏ73i? @qgAրԸGN?#*fI!`֩ҠM wDn z%1sVٛy/ZhJf砩6(4aC ,8h+DtfA|/^8xUt Xp>ŘtW ¬,MPˊØx_~W8b 刻6E̖V,P]dhG-&]Q83Q7LIҐOkG. >͘ttD$jhSL`$9dݽ4bu ~=I^bT< 5KNtC-Y݂I7C80ttPQLq"PA? dgDV}RoFMFC)=z+K[@⃫EL?D4Jgb~Z?~ .]Nf=ʰak]ZH烻:$a%R"E'K8} *ntfzYGIH p3gs0pWCv!Y@Ҕbϵ%^<!P-B X0]Y|+%&:p^!Fyᑝi?u%~oLΰ]d,AdI_rb]~L{ܒtIwIw8yStqSy^?Ǥ{2>sL~9Ǥ{"=Mr::>i:>SOS>eH!)lq跽nK'>0wrto!}?w S8s kZ{ȗmT&7$Lj;~@:֊dc d6dB5rܟa!dճ_d*l 5c=Ns'#!-賈ixd8Ńٯ~?6L/D5~SI'cg/{ˤeJU\t){3u")%%" \\.*"bl]~H?Fra G!.HϴŤCxFZ^- egP1~Ŷ>?ջ4zU +"'#~֞.L( ?( P\<{RaGP$ ar(!R㇛쿐a9oN>1j7}G 9¤L$`wH>IH_|k~ڳJtf{ۿM{z: ,9]S"!:S~FH$-m1Ȋ\}$(X#\;y_- cF:ɋY}u ! [xO (,EBJMgt\#&רh^čA%XxHR tΔD43GxmULХ)1QYh>~jjHPc<8pܠ3dY^Jr8_KaoLU(CRDXhs>9j(9E:nlV[_nQ.˔==:ˁVd~Jd]uݧa \T`wk Ar^!O{| gB=D#?6&])2f1D @3Ϋr>d@7FPea2eFTɌ먀NQF8+zSf[űzq\Ix)Bjn" &$V0F/T iZyA +x ¢R=kgX ;;.V 9E}PksLvy2;!nm-tae\fU..Cp9^0ٛxM{q t(I !aPbdw0 &\4+$pCH!Miͱ?p42vD1Im{~ܾ$k݌e\hxje5Uܔԁ$j=aM*,Q״ӯks-&&r؝ݚ^0CT$Ǘo.^R" % >edzOjw p}b8*&z^Lݗ ׺qI`Q(E; uQ&]ZZrO+TǤb(l(˘hHVYiS]ں_jE'C]֦Et*97åy,Vӧo2* Y>L:Wn<$WtpEpz{kȨ(=cT3{80!87~Ĵ$-@Hc=l[޷|'Ee ^ܽNVrv)YCBDžIgY,<ZB%˩Nog/>c'(y>Ak჉!T :0%2"jxݪTE*.xZU /!4'&sr͈h*S)ftT 4uUSS>ْl 11t`ˉTFֈ[L:MZ[GaPk"ɉt@ 2Zeecr38o( %O]5#Α3,`{cw-/Wh码$ecJ]bFܼDxDbEzcTF$UmP1L:"(4 O9>XM&/]#Mܹp8tcID=7r!]P\(n0.8]P-40 r"z{-RvV)-^&GXRUTY~2[i)ٔ~+y qY9-G(k%tSdVz&2ޭ[7v BGu.(Ҫˀ,8 o%2v*~'#;JFY6D9jBPOՅ  \`{:}*w^`ϒzֹy]E\ ڵeo{%9Tir{~G–EuJOe:E-V5rsAAvc?G tTۥI,#9Lc,`$_1ĶM]c8[:B[$+lc$E<äCQEL<"0Y_Ğu߶Ņ 8 iL:EivMƤCzޝ++o[>7 `<}3V*4f{Q)mIJUmǷ`:aIpuwr*{GfbTϽz%>*Ŗ0R`Su%[S =8ɭQq(פ~]~91 W4)[CՓ U$t9(8LX3 8QNbXQV-o]9Ovz\`idDLNh3B"uy5RITۭK# $@Ck1Ijt{/ͣVb9jKAEGɢXǿx? fŋE<HqO[@崲äk{[* oO&)jzIJOޭ Vvnqc>:to<uM&zoewj[\#k{@bMԇS;bC uOw?&+ۉ|j|JM!]D4*ɽ):_p'A=) &~v׊x-{ݩ/0a0a@⣁V\ssOk^>ww 7isБqEr/?&ͤgwBx7~* _җ^3 2Y377(FJ1FsiH:d_B\@NJ JD5(*Jf\)Neo^GڍH;p~,NRD&4lkMKo "zlL;p>偃"O=*T@_pFt4gfq_%2p ̨PA';DTq#2^ P}%AH34+*KERv+PpCC}B9>xk"  | N}啗F+ߘ9?lB82oSF66ŠnRIuB3 6lcR*eSt5./p`ǪL{mܶ놇 e"aVT Nr5Eyrc-`hE^ޝ, H}6&Ǥs||_C @LTT²q :+*[g{^6똴ivR Rh8| :E1ؠ՚1b eUE8s#+.=ThZz`ނ)оxDX6 V;&K>ןevtm2̸/Uo|Nz ~Y0<,!Kb⦁(]@>:5:W#ǒ-] 9,83Kw^i^Jt%ͻں3 ĵt Ka뭖x>k~""8c#+{ 3$ 1N4hhX׍[HtR@.MJy@VڀTQmdf(H. V8Vf"= (e- ´GX91 Ɠ޺?ô,Q+ 4Ҟ(J(x{dĖ3"kpyQhS [[.m+d֘:#2@З1a$LH7]k ng8dP*+*XNj:!ǞeoӺОH >^$\Œ6?`z@ C|2[e,[`k=5PSowe_T"JWsLA0IA$L04Euo%ȡ? A 6vP#sP.a=.ZHc341Qe{6Cܪ(6 j2OcE`ϔ\bNӕ>&Ԙimz{;>v=N]N-21n`|rLK}pz饗~Y _Wy>} Xկ~7,p(Y!wt3⋔zmd/qPl+YhE񠄣@w2Z j4JIuloLۼ\'Nq$\d%kWKh5c]Lz>U+|90yWɔn43 0toci7fq[?Pq䏫مRe O"M 2H^44? &N_}oCAFJ0y ¥ӀTt ^t!R?#<{?j~gհ. */R_D^0ƀ*R 12:F8h8 M+ uz;vf+J'GǺyɻuQM,`ϼX*쇇99(9GPjL:x2:ޙ./~1)/')߶muȆ;&$WM1!J%\KM &1H`CTHtX69!Mγ ADM#AC匴VΉ]]=TfuTvD;\#td*@_KP*?2CC=nK潨 |A.BԪ;ro_Z`~oxk|{눱Q^/F֔QJIm.PU߶:nA,le'edK)E bEVUcOޓ-Gx4gsa>O W>g½Qh9 EN2Etk?f/\*qXx'%d  +#@NI@ɿZGikwnw<.bā˔gf7X__`KK.^/^?4*ǃfF1 l\mA? L9l(B Q= 0}bz(̝%SdNٟh?|Q%߷573I^ <@Lbk/P >z@G>3I/Q>VL:cO׮]7)ErEj=̊d)H xrF_a5*9ΓhԲ#Ug&ԻH3yt2^/8 ߓɯ^|YCwQ=@*%q&@LOLAǤÖ4*(]T`ytG +\[ ;V%th윎Chq>b)l\YCj@Q93jR.Miԃ5R3+At |` Th1鼏#z4$Ăr"?bF)aE'nH'`#c]'3B#B']{#*G̾LZLjᮄ`cfҜ"R[*a) Co3!c~Z0p0¢ fEaoT1x2A*g\"cf"L&cL,}.EiV/1ID 'B x%`("4.낄K1t-'鹟rL:R3M1tYx]w!ӎ .MGp6Ba/\K8 bjTaB %aDn!ItK[L0PD) S̈́BeR m9sRv>P7Rh[qZh,fJ^ s-I2L5&ݲu9q+aM.po;&۳ǤI͟)o;&]K'@sLĤs9&]O5cҝ"ȇqn31> rsLiTg1鞊|O~3VirILƑ8sL'9&M6}o^~9n0`R/Uδ$D`ۛG8^Se,L"#n+yW]tݽMP|cA1Urq9&C8U1bs-2sƤ zIB69wAqfSPäS̥Rv[hX8* V+w'៮qNšd!9M6a3eq-W<`8w N%Usr(._׿O9#@7VYaUP\UmGt]v*ڒ/Y#AW&[t\Ap ˓q#pzQIm^(A/_'9K~.8P =WpxCFQT3IGZo}وRy h2ػ5utGv"Șj$[)"^ߗ[cWAm|>7GqC@xoXX8SKk,zg&<$ $:Ӣ*3 Vy1&|.oܸ)f^IkRPwxV`"{7)͊w%[,`= L=s<%7X~F1ԥ@Kd0d'x~|_'*83 H!|).GEF5*!1 !2"zH4X'Tdk pM)M=L:!=*!Z 4v %нK1C?MEE\CBqtR&o&H{Y^! ubG¤C*6<,Lӑ}7\=Û2e;cbPq`1 Fq^*-wo=&p څ yx B<6st8<E!1or5l%"8JwtI+]8gs; ɔF <\p6rIrw)JWO~ÏNz %2\,j fy#}*Pd! +]:f'9NJhw;!_fi0؃ԝ:h59g BژtW,vb9땳 "IW~:18Xg;*|Tf0Su!Ji Qą6}mC|CH/hwTrMbEiaҍ41PDD2gD8xNgy|O 0@Sza xX?L:NȨH?̳ *\z%tqC #ӆ  4W?FOcjtjllCrP^zb;<&qW(YZIEP"FT ӼT6i'I7Wi{$-G2 2;hLj~CҜŵ[_=qŶf羈t.4]x}rʴC%ANv;;C_r)a{գ$ybnվ&,/`~iBVn*5͂XKz""KAM*&g F~mzn@/t~'z'>u%kw`F zJ}4B)ict2iĻ, ?i9U,0rު(0'z4d݀n_1]G#g הl~zΘ(0H*"-eiqtFuӁ4v,|"kuO{5ϥ;KS|2I`!LWYBwXp(1>$Pqn m^;&@mGJ6'3U(c1QQ'9h n}+=Jurm˭m9N+RZ#%A/R8ѺpG5x۬{֭PE>vOI׮&@[g7}oa| AGxι=³L3w' $1ǜ%$@A }Կ^ԧ=PEi:VӃj>PpGd|zeI>7> .zuIw4ܯ'I'{F`9i+ȔDi1/Yw=tR$Pb'H%e"ng9z=AmЋ6xt 41 BJL'l,u(11nܼ~]n-uyhs J]e7lŤS:*o_;={<^/W DF>Pǂ=n+* 4#.r9LN;-o738 :d!3KSa={pRg8XdTvzd\L٪?'pi#ΔQDE-I?'A3%q|vN G,0VP_WF;my qVu/#6_ ޘhdcum۶hO4{]&l9KN5M+L:ot銕kխHh~^qvܱSY`b0:~j ݙڗl,5-,OZu-PppD5fF#pؼG*#;_-JΔnȦT!=HUk+˨ sP ƀ#i. L$) 5&LZ`Az< ]~ nv1-b[̀X,iLZNq"RtVR\%n6kMb/š:f%A$$4FSZ{ {lż />NJaq RHۚY1V{~VK{ZtV$۫Gi_]oE0\G:a)w4;V;o n|=epN cwJX}H$ ĿĻ}L%A^|2 u)Sp{r2p{󔖥N L:Tv[Y.y6>Ax͘!,^0d 4>cGQǵy,L:G tJQBPܥS@@#2,ai I=~^t'M@6+PSfN(L鳜7b9#+(J ,0SVuzf=!,AiɉDzjmG>"&KȊ1j^Nŋk_}%9ARhNc}K##q8A ,ī|ם}"Rŕ w{:YEe8֝+Aօ$\(ʢ$` `Hٲ?Ԃ5&.& I`,Rv4';o?7fTeT [ J=Sb8ؓsjQj8!s._&Lx ':dID@ lJ 3Ij)A56d!fv|ltą*mK8/e/'eOI桷0a6lϳx-c7I eVTAMtIGݩ졮ّ.ώ wƀƃ;Gdm^t2>&TFk Fɷ]ܮ>[x Қ Zyfux\TVSo?v;)13r()s_vb+mCwx&Z?6j{Dw@~s~ 7<8ي9Q3IXbԂ#)ߦĈyEA `DtB' Ă"62rm /eQ<&@Gn U["۲VS {"&=d|[J%ä[;<| 5eVPj&~'@ JggIf⻈y K6BQODS'qK`u%C":6$1B?`QHnk)I I[{1p\:!n,2;# rUd[pN=~0v)G2dNvRswvU*%84c"}nТcz2N&A!mKXum6JbҟulEx ΩwI[`dȇ$\S)Zt^XEy3Z\lFglV( +7x7k ߼븐ÀFLG:qRͳ`GKR_pCoi?(κ;Qss/V斀۲@tl aCШ( )<5:Jaҽճ>qOXaxcp|ߟkW_a q^ 'B:vx&AgETY#k !lIG܈ãQ"A1~h}P%t7\Mb3$cBS0͛$Ljfoo]qjPH=8WzH|-q_0ұ( Aä,nC(F]S*{4' b`{z(Y*B K]UPGQ߻Qaq6c@AhM4m!gǒ,WYW({n{9rP+6!zJkkj #]oH 0AKc ֱڤ|#-T-4e+f^"t-n9P߰ݺu2 ;;~_,\nDZH5: r_H`L@EJ&[P ^3,b( $"SstKFǥQu"*joR` ly q&_s;nxєԺJű|h(.?z0ةpďx^ (جfu)`/B|Ӳf3Ipɼ'0 *c,BaTZ ?ݿ55YQݒYL%, )F!)=NrfS-ϼ^ŵjȿ*ǘc_ X6cS<[Q^cvCiw*4 XXV8nA /0pgLiTAٻ8՜ 0ѢZ=q6Gܥ]ߋ"j"٥BΉ~?y[%{<% ya_\|ٵQDk+D]e "S\Fެ RIC\2lNaBc)*nZFEVV @l#g EAO5{IFE?wG "돈gF_W~HGef{ 4Kj4A` '0i8aҹ)ԸٮS޸q˽yuS/")A^MAHL$dԵ(}7b3Y2Y{o=Tl}uf)ga)ꞏDW^c}DzvAJ%@Dx}5jkvKŌHne7wU5;b:Q=0N/,#.<*&]#ܛe(y)l>qykbL\1[~U2&Uf\fmޜT 3Pg?L5}G5;_@IDATw8}'sg]Fu0$C h3=#}W!Ycz)9(!ez4QKAϼ r|=N6,3ҩtAx|6e"L+B6K7=Wq$X꺵NJjvln{^^_P+yAsErjf GR&sFuBe&|EEďUn۽d]KAo_~/`sφdX<h*B:x #\Uv;O+#"9&42ueog4TjQLҍv0w1L}x1d EL:А!(S?-T4ǏII'>r d%lDF;^qi?^D_&~4htXur4 '  :p0 f0NWGeh1FQ=x;3{ //0tpIU[%;/y]0p#?N0圅pJxsG$@bcCSĠV'1E|<`jZ fWE:=f4*:^S(+K/I"}CxH:L:[`H@1 'Lǐ%,; J_de;h1d'=D |e@Έh|\ C=W2pD.W<+$Qx¼5]`),ZNU{Z2^u{ ZUyڳ}3sb|% ,}Gԛ5gKoX&r&CE /UY!Xp` ~ϠDBnY$$L@QY(r`<_ QCp,0Ù R/\Os~<\~Esu9=J4sFDt{qL@տ]v"qʏ7;iRLFHVz,/4 ^dw r5| X #O]`X@>P|OJN9€* V  "Y!fE TZeFCyJ]'=j2XYPl(@QtIå0֬Ք9Dž+ ZԲaGP}/85 ^ft$ƯMCip'Wkuc0կ;D'+ kC*K$,|&pp, TIMo3t%VRx%IVX& %O`.d<-CחHޭK>CL0 ׫2pC.VA"[cs! igN bұfde\>Gl0Ðbš04V)vD 9X2zjs CO&!{tnݏFtEiKG> BQh(`)L:8$u h5.ph0C/W$ 8 4*yβJ*VJ_!3j I{XņEa:"wT7 R#UPK ^kJ qǼ)TiVvr7{SDcF(c%+|Әt<V[Dkz. DhR]];k?3J0I*FY"Bאm>bLnb&c;P!r\?43`}iWjȦMka1y  ?ifȸc؞ً&5Ѵpd% d:0wo)p7}¨;=1UF+t@NWX7(yQ?E\ IpsaI88(F|@K0L:qyw7Djq)L:)DIw^~D7fV]}O͡\dn^JwY^cRTKDzuǸ[ex=e۳@)5HFr@AsL?A9&9&]w l|}? *g?n^dW^dϒ2VD(] z9z __򗓽M |Xmok+ 7|w0g^x3󳟽E͗T˦ػEo}̈́ox>t.>j)c}?Sp9&1%'/;Ô2L#|ړm&$)HY,Xi3"E%gK.ի5E֮[D{>N)ZU:9&]K'GҵPpHeznt 4|,."Y=b\U1L4v. Uf0ӂab6B5JvP\5uwCLr-TUN X-;iC(8'_YX8GWv??Ƽ溏tR#I9Ǥ,ltM(sL3bibұ$$t t,|bӪh.?4äHNf˖[L:'QyQYj0gj)n7/3GuݓFDU#\(",k8s,3Ѣ+hIU8y'MRcB Nj~c0R DFW^V$8sѡ`u *?`z}p(( Pl:wʓ*~s08:V ݬ(M&ńևI2aMpfM|K np#OPINV+騉-x n bi"o /;a,.AAV[ݾ^|2bO&#+*ʀ>&yiˆL4 |PL @%PIlK[E bɓN555C`''EI>(4ᐣ>x]\܍#.~oi:%R? I+R*8?TUOD*`D1ؔ6mt:a6eޢH$Z }"t-t//1_عF [(cnh]t]F[Hemeiᗄv2ޝ@Lp*^3Gy@7Ce\5v ? pzq,SRnafy FKg2 LI(ۛ{)L:+|>I\e&9'2㒏0;%!O A5EbI*[}wCMD B/SI@n">Tuwx)L:n'KL Oq+>p*N=5۷oFW*?}LVv5KtSd!ǗӬ?&z6#kzfd.Xr %DMXvCbmmEZ^Sl_Mիqӏ1K7z5gȡAL ~PCLIq=fdE'q4]9̫;" n/> {g؀ Ps+sU.rAee|ǶFO@267)yJ\U-<>{ $ H'TbO VF R "21T"ᄠ2AN>:ΰo{Yf{tK4Q $FC 9 @9 w}S(˚ *)"tp]Gފ$,_#`p@npB#U@c~k3Ih{#~BwRY{!E;0߅r靣Yx8->hnaȽ_D03SlDR TW^uc]`"NE"n+s9\nwQfqMN9q<N". }Xk)r;Jb @ DW|+=5GŤCĈܘ;&iQ]d4C:?v^%BisJsp-" 4$k勒p(j%7A=XO:q3QABԍEgPzK2PFYYz(L&<(-`\dU6}¤#ͽPcb]K@*'Wpg jD 1^GwE4) lw ZN&觏8mr=uq4Q&8lS&{p]>N{Q".Yu0YFt/0`%XAH%EWJo(ݣ޻&uwtZI d3VJd] Aˆ W˔d.Yyu ³g'(j^™QnMdc2a{Rw[}vXL@&KT0WSM+K5<H#N85i\b=JeAY>#:WHIO~R*DS8 gy``"KX )6U KlHt82"x3qA[@o9Nӱ]ʝܭ?sxEO3胫4!i1=s<[tȸ!ݩW0ejE"JDNbH/C5&]$р#ƿg8S"|J@ TP/ 57>cb y cQ!#mNXGӺ|[C|B: I_.W_ B/wNA LR\6˺2yN7N> ݣe$| #3Y+;kZ!1mH#' - 3^OV;7V; Y׳Q%u\hkf*yڴ-nS>rw4]~B> v߻FD|%mԈ:>Xy2T2][RbMUJA@jk/Jg3l 錨ƭ"68QZ${ /'n'jTz .x5Dmq!iZH. +1A ┧)ߔ,j12_62p `p=Mn2'9 c;~ QcuqI*ذTtQ7$;m=<"rZ= (bA 4T|A` ݯ~CY g R F d="#m7ssbɌʥa{{9OS%8߲Iwvb(K@(^=QHC#u3M/i@+t@NB;ac}?|j:C1e8I' hfl!>IšiNCmÝ/\8ts[V%ٻm\lIjfwbr.fWuv( e=^Dd4wy[ۗ{Oʗvõv!kq!#4jg\- 8*ZKБ<]N#qeօ[$^35ȝ3yDcCMo.}ʈxf,p>,B0foNjϭX*!Qϭ8뙢>TFT~bĩU PL% ;'Yw$ݲMŔh'w?4Zk&q+뼃|=awcq>wϟ?:|v$}ZI*}v{oo&[+ߺUMyW00!@Gr\K{ˆ/"6HEevR 3WR!+WhKnɂh!s~;La̸LW]fH֐^Ӿ5j 2m*^8@xt`J_j0,"Ig 1>W2SK&V\%dI|? j6o:8,БqXW!8*z[[8'5et=)e7c8U1%e}I6_\is^·/-Y(ZC^ƙZL;q/wݘtI\nnn2m۩OeZ(ib3|G{Ν90bbJ-=)Xf^U$\)\!PܟNv"Џ&KT|czFR=bΐ i4YhQyU#7x%,;Wٹ, 3SWs֠yՀBQ ]U֪]|I|ww;Iuzseי7Z}̪A)H+17@MUhnӎ0r H?}Qhr衫O -36Em8nmwGsvesC{p&x @2#3*޿u1œ` 4׉gĽeJ0q&8Kˠ.1`'?-AalK{CuJd_*}^~&G/Pp|\ }LveCdŋ%gr<Pn#b12ҪjD NjZTF=bs\}%EC(H.h&bQN NnMz&7 KU"3Yc:c ߐ5$ L3% ނH_~xt"k^~;ai%s .m&BWqMvR_͗I/O hwQ|ict.=K؞{>r %K9a%J 1"-x7EV֎I'%^N,Z̜" S>d߿Eb'AHQM@m'1B0U0WŐlRr,VIp.׀IRCw9ݍЗk7AwNm&H5, )7$eć۷Ewmb'3"Σ[k 8h^l DL?]LG& (ǿ]hggY@(J>%*~sSULl8z#-U#5,,BjEh Z(i1}<_ˬzVį1N0>ʅu2usuv=4[F:`vNϟä{.{V=,&#E@qq<*{'7n룈D &N " QW;Y96Baҡbţ~'ǷlUqC}7t :7C.cQfi#>ކ|kɶhj0oO0Z Nҵs{q'tO0'<_ \O0rG3,LP1~R'tA;om`IO;nXJ+ XOzrQ౧K#4LGv6 'tD@n2?ApFRɈNƀu M H%E/$ ܬDtb`EiYZ,.-׽o濖V?dJvG-tyd*놃ӧY%YJ)[JԊiZii.b{ F8 Aw!}PξY&j[,32V{.a~5е`=BE] &1<d$yD3@ H,OC_rԏN'Y"xhHP.Gg,L.SNJ'w0"Vy9O_/WRk2 V"VUZ&Yb ,٨ʕ+ 5X=zuy?O08 &]CPQ'w`ґ d' ZT]mk?3#E65#hM'Yr< S&.JCL:c vݡ[):FcG =oƤ|]3"P.w5O43Sg+:_<i6%ʒ?A|%y)Q԰"6A:w8 I*XZ.Dcx$F iʣS az,+;a{׻ Yq O#_x~F:"!b**(¤ÈAJ83)dz(GpP dFGHa%ŨՖxC@27?s IDI!)ϊ|^/bbAX!Hu)8T6t@` GL:FOrZ) UɠF;iq^hy,m<(AZn=l񩮇;5& c"aa2k@T"Q$: nQ&b$bFkGvDų .ICԱ2og|u+I6/VTStti# 4wa6j? Lr [O&K4e9`vA cVC{" xNIä;IBJvD`H qG#؃G#FtB=7]U".u6t В.%t{/$AK4nFgo:;\ F2R`pBgPtXYI?:]Du ܣ+NW[gO{e:vc"=3__f]ӧIJ5/UaޠRJƆ9i|>Pl*RxDeo|#4w?&Vp.a8~TyU*F0@_sz8l\|ҘtHEL,ca b"'4$P*.k"ػKbeDlޯ14L:D;_%N`C'@IDATHd` @ d-bxe^')r˜tww޿r:OP! o&4>&Zs6We_9ߜvյE( /N$9VD:T2.'2聍a\[JNDrw6Q:eaV/;,4LP>1L:\`%ZƠ΅CUyV$ W嗡C2܆!U@ufu32fT L"<8bo1K+f#/kK1lãqG=dX\(frLz[b=ETMĤSR Jb,qmo7ݸuoS70 4^ %,Alk*ÝtNe$P ̒r:C~OVc*ܹg;hB:Nb{V'drWMNѫIok'R$&ẓa5~F=vX1 %q>"m\iM%~]͋nræľݚ_,S]&AZ3邯ĀE 4YBOh5˖JIc#;tr#i?L'C]eNs|a)7a[lV*IX$n>@{{l8$YHI8xhzqDog6L3EG /RF8X率=d&t)xj;:63;+sA̐^\9EIJ@ݲ`@ᅨ6t,^ĸK/n:$U4AzTU,1im2s{F?-ka#R5FV1CoܸѝN/1h+# Y43`/UGR:il:l9ReEqfҁ%/f`6\",Df` F6la4Gs`8ށ>({KTV=Y,R^nJrV* /XtdT2a?u)*tsK䣫5^}wY_z( f7$.PUDRDl,b4B{9]t{RJ)‰;豈>z?&U:瑧e$FDYǢ+z)h $j}|:?MąޠdPT!sd1(;|ZK9XCV@JW *m㱧"T X}v-`/'gw@t!4b0d$õ & zt1Nlb'5Z[S7@S쌦<ݬz;`m Haw[Իĝ@U}Pk0ŒK9]e^?&ʚ!#|p"Gο,+A#!Zjo8= .oΞ|!7 KTeTfd ;^!Ǻ% rEKі,G BVp\/jŅۿJWTZ(6~+_A+7O <2t뀂KmS(/PG32SòaY~(PMx}0WN_OVʨ1c{g֊2\oZnUZ (vWK1WCQYiaS041͑g$HIN2=T DLm28s8 ʬO`a0Os#nv  ;p'#QMOx^Uz*0lԅ 8)!~qo3 g^Am{3~%*~p/"EfJ0\+0 K񮁂v|wVfSJن^HFIwŗݫW>+NAɮ~y|ˌgQ&K.> 0pl:_wL9KC3E&]IQ(T@W' ;ء=@8*p&]džՕ+M1bljl 90m$I;#i WcbSqv4e޴E339.k#JjB%rWcJl:"*{f?" ' ]\q(h3ĩz0t!եKC"̆_3g7M67 Uc 5#$kE+{LFtS9-2EQ/Z;k34AY>R-ŞങFuw4${ fŒ Z,x,pd8e*pf)i/T)S(M$.Ub-v:>pĥ/wEDT5FIl>쑂 `Tek$NC^a u0r|g= |uLHhFK]ِ"ى-P X`0bza"dmol1.|<&rcI=໾LP gNF3n]94.oJ%nO,u/',`i> h6N0`$wGyq&ۨi$\F4! kgW;h>&Fh8*/^?G^ô^FV,Vd26c]%jHg8] eKaC6dh#8{~/Bd H}C,3I{ܙKWP n}'0锳WMv)vO$.l;ʡׯK,Ye>F I671hrډz># BD]is:TbDн 4Dl qz #8v|]cbXBKHFWgl!A2tVf8OǛNBּX%G_8(5/yD`?AQ5ZMrZ!by`IgR9.gZR0'9*9:VઆE.mQ>_X&ꏮozX Ivg, aܦdh2݃ӵ9:ʀ0">1f8 0dkY-EP /ܮC~k>R2D0ww8Ȉ#L.Ӧ3'nc)J!(~"> 2sS'.{dd/)+&ʆIAR0dէNi}9,~K@h™jVllhvܣ kp*C@w=cBW6'dk;r)!}.^╎s}|lǛ8GɩScä;uܜQ1VH19Dff3 0锝B>?EԃѰB%bHpAa ]~<)#d'iӏXf&ltgI'>|8k镂%Ő>DS#D@Q+j2T]eE&vFģlufKnJȡ+E»= PR1&a=NO$Dw:OG>h4*l^ʉE{8)I[Nu<\[1FcW~wmc`Fޔrqa6LVL̿{yqe5if v`S+E-4Gv{*hR/g$7C~t a@xނiE7{ ި?~i!x%!AÙiqjFjT`?@|,o̖bKP]~ʕ+8ZYݣaL‘qfEV=f\B( Qp*P|Uؠ!/ DKL`HmP4Eˠ64 0d[:'Q^ 22 c(PReLYuܘt N ~\Ij I(ѵ3h/ m6~<+"A;%igG,xCJvh6 wM"M7 ᣲIsuV;4 .K僜q7'>Dp+,O%0U"L:B(`{=)+ ŤCS 21frP\r K!O7VK6f+7~LX.*yH0Dh @ c;'t$" Npi Eɲ[IG)vM)^};N^RmXG9KW8URt9kÍIvm lۯ:拀IG 53/qA& #Ea)#tcdXEF2H0*E6K"iP 4kuAtZ $A 0CPh|;A?D׌Gp9uhZ^EĤKK"ET( nÄ-f1! $q^9PmyFbfy˲{ pXon¹(?-_A2oBd?\!?X"bϦhI^MT'ܺktn`H)AjD2̅*BT` #Cc-zp&ݛf5MäpWlFO%&CKlXM,VDAH[홇۠ mhLgUrI1DH?:%IVVH陬E0i8vv7~zQI$c߰v*˶4Et=p9ɞ7HFx ]-KkүG:Mo8XSD{xY]gV#/ДT,OK&~[mTJИtL50Zp!+-& VC#B;Eb^A\bl=]w'` J!m_~ELF:|J@Q;˗4VrI j'ءlHe=͸L 5j7'1L::[SGL2ˠdu"Q8idkfx޸ 鰳!XL:$<0j;X3<ɳdF..eŅq"_ZƄ$j=Z8 &Q|6j xIwQT &PE ;+,c:#<3Xa?73G#4L랿='iS~ v >'y'tL{_L{~AF>{(b?O0>7LK%9a֗`1n yeBfXP8Z#c0 fuWV?1Z׌J\H3Rä#6p,JL:l;0d՜1="Os˴L[*lEt˳$>886t5⳧7v_g%l&GU` } }x @ȟ%̙3 iHMh2[-ª.m=Þr+b J!Eь"[L^X'}vɗ !۳}<ij ,WH*OKфfSNո)R9L:skđS܄rsNӓB饋\V>qRr,ALk*/<\VrA(T/9vmkzE zcҭHz(l0+0eܧ|e%M. .&H94NX|+VPa0Z౞gB% ?Mc҅pugCBHI(Qq5I󢗤:y= ^46,_'eM".A\P%.ΰ*e91&~5mJ|P?gLф d^I#8FfW !}%$ 'M=*tR.C)[r~۴rS#.&Ģt2l,L:҈)~;[[;|C0Haj Nsa-* AtTH •MWQ"JGggq3g܌:Z%;8B1zJ!B%d) ޒhTˀ/jKEY̘9`ҩ>$}_=_L+' {"f$;pp'&P{!x!L kuzgۋ~7_,{oa740Sb)zcCpsŤv!ЃL:Q$XVMoRE]upMDoEޱc~SOšxPdǔqm')FD;8I(2(]d#>=L:7&SI y!t p޹LqV3 "7U}72:p{=N8Q?/o6 .?|$ճDD-F1Hָƴj0hA oG*q_:Xd a&]4^i7'4F0+UfG %1kB{!:awUmŧˤGh&)k; }!(I7'[Q~z*8zSmUu"&ƒje$xk{wk۳/mtTDPjA6 ڋJD7jV#M?u4b#*b?tF -P R8 bVDc2D6w+@v5&L:=`ҩ_tjEuutMX!#YɐpMEf.=u'61hćdnkMEP*ݮ>h;w>إt> O(Y *dIRGQSPMH1%KѳQVGvV8W"4`xSeC=˻ RkIu7dA4 $X >WBD-@" Mb  0Bt(@-Jl6.,S11r2&V@KTSv7*2.σ%|¥æyZ=Pn8p8/4+۽NG$# V5yA-d$@ (T D<ڑG=B݇rR#^wO[[܊o:t,ԦbZU׶6hM> |IG\j{0n\e31 %}Ѡ3Y;OأOj d"Τ7eVձ6&_Ѕhɚ(v`.&#. $ BQQ p y*4v"}IA!a[zIS9*T zڄ, S "@<ܩFEެ룂mcNAG{(-""Y6F~XXIZS"\gHcR?Ah~@8!+vwԫmzgcD)&W|T*%6Ye6"Jpn1:-0:x+%k<H[nEl蘼 X^~[o uKzMXm)tҊGldaojwtgcfH3IoaaV|m/T-"0^;Gd)̺FTa0Ƥ*OZ-MFbŔn )y@ia}=_06(g _L8>$/ ,&zpо1J#쵆 Wm5wSVXQ)IGa^˯=CZ~vhe g^L??\ )N9:8-!aNiD`#ʀZQPpt@L -q& *AB}b#_>*\O>"P5U 5zX9c3$BStuF66hqJq3 <(&O KGKׂbGPS Ԉ\QD쌕CeQ`'6Ց8hPg*>{ħwa_FOL7IyW ~?4TzY骽U)^'&H$T%m}Jt+l*Xbt]0F/Uro%/adaW3 a o4xC0UiMm]%̳VdK!1pXABU{eL$mGs`].]@u!'N %{:NPZG%AWېL9n$)bҡU#$y6Lhd!g}9`1U+piU:x;RNUZ? IM=؜r2)`5ɬ+1~ԗuŸa6 bo =^{sw=M/^x9:=͡Wuj#4`<ڸ:$=҄bS7dk`ҍ_\t?=ꅞm1}倄ԧ\F\Y_/wIG*ađ:u'gPQƒ.Ӹ4_t>E8$͆~풒tԥ偤X_&L|Qhbvr&Z? qe.C ־61m aiT$:ҳR<gLS_++J$9fKqeo.L?rYo>QSG'oԐ6))j<ĝkB;!Jf<)MENUV}.7Li?YgsH6jzo[V滎8Ε pe&]?<ê|HJ!OO^p2Z|_-JS  |8`+#R I avGtK@#H~a&Jb}}cdߺy ϋ]*r >kIr0pb[c{*,*;+ 7td.#s!X:@UyĘ,KmDM+O"vf Qcd~DGOvqr˥ՠ"QXF2uZh:fEWo|\ۙߤւrxYlnٽCWWU2Wg0pO@"a&EP*FCtx[t҃!r&W'vKEH͑ق啤[e3) 'x @XhP>ģ(dtRi/ [C"%X4T^͝vT;7T%:o"oD6K蘺LܨpJİᓏqP\NYC82E 0Ǧ{bҹYv^8#zF 0lϳYb[+zlg*Mgq ?Hibw1vqI'kFeTSڔ+aRfu3G1tٽ8SiWq+V{,, crg0[m8 !4j79B-=mwW1:+6+] v<8T W?M8'{Yð 鰞̂(Hbߒ/u+<Ǧx߭~Znl_Q-c'A2 Ps Q~$оCN]~ԝF9%9Vcj_E #8%#>b*^㍎᪂> >Z0pN㉿qJVԦW{[Ss|NE77 c Dп0 XпR=(tOo@uٺ q4\8ukgR7b<}}0L%TŬCGU8pjS \ۥnjI& aҁXU6g݂~4IWO֦PN&t|&%$٬Fv1tS¨ԣ z8HrZs&1=H"ldoqBP"8y K&0HFlݙ1Ki/@ᐮ=0zU :\p*G63oN*1@]I^{;߹t T5[Nk+:CGШ/@#鐬gѣ /%mGn,ox8^?s C@XCEۧ#MCpF1O|>tb:ݧW %ȜH*S* W3<>Ẩ%icϑn%:v4l!,FrQ\ s_.rׂH6%ݚ5)JoxoވMZI6 S.7ԌGW\[;;L=&]ͪF-v1*9d~qK pq`[a7a,b1TyA5,إ^gOix #7X`(F!`:SKgE%4L:qy"96Tb .")ޜޛqǀ5AĴRK2w롄@X1$ڽ-:x`^(k1+z"qfفH=C x!fV(!uoG[IGY_/|J<+{oClog#$_XsWUV># 9X;4 by0@+q?]EǰFΩFjп&HQ=l`LVؐԢВCt2avGf *ja?*I9 |JXu^̀J,#a\ lXt }A8P#cb>g-ݲ'*Q-ym<$دWEŤ_uQRW3& #XDPgT+n D8GRhpZB Gb5`Δ}aIϠ֥Q]׼݌<'ݳB~NthKI